Description: <short summary of the patch>
 TODO: Put a short summary on the line above and replace this paragraph
 with a longer explanation of this change. Complete the meta-information
 with other relevant fields (see below for details). To make it easier, the
 information below has been extracted from the changelog. Adjust it or drop
 it.
 .
 mono (4.6.2.7+dfsg-1) unstable; urgency=medium
 .
   * [4274265] Another DEB_HOST_ARCH_OS / DEB_BUILD_ARCH_OS
   * [b96315e] Handle 4->3 part version numbering difference in get-orig-source
   * [64c42ea] dfsg2 -> dfsg for orig tarball
   * [41bc4a8] Imported Upstream version 4.6.2.7+dfsg
Author: Jo Shields <joshield@microsoft.com>

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: <YYYY-MM-DD>

--- mono-4.6.2.7+dfsg.orig/Makefile.am
+++ mono-4.6.2.7+dfsg/Makefile.am
@@ -10,7 +10,7 @@ SUBDIRS = po $(libgc_dir) eglib mono $(i
 ## 'tools' is not normally built
 DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
 else
-SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) acceptance-tests
+SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc acceptance-tests
 # Keep in sync with SUBDIRS
 ## 'tools' is not normally built
 DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
--- mono-4.6.2.7+dfsg.orig/data/Browsers/Compat.browser
+++ mono-4.6.2.7+dfsg/data/Browsers/Compat.browser
@@ -1,5 +1,5 @@
-<!--
-    This file defines some of the browsers that Microsoft's implementation provides in
+<!--
+    This file defines some of the browsers that Microsoft's implementation provides in
     <windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers\*.browser
 	
 	It is not derived from any file distributed with Microsoft's implementation.  Since
@@ -7,36 +7,36 @@
 	browser capabilities.  Then, if and only if the application contains App_Browser/*.browser
 	files and we are using .NET 2.0 or higher, we supplement the capabilities with the 
 	information in those files and the files in this directory.  The primary goal of this file
-	is provide browser definitions that might be referenced in App_Browser/*.browser files.
--->
-<browsers>
-  <defaultBrowser id="Default">
+	is provide browser definitions that might be referenced in App_Browser/*.browser files.
+-->
+<browsers>
+  <defaultBrowser id="Default">
   </defaultBrowser>
   <browser id="Default">
     <identification>
     	<userAgent match="." />
-    </identification>
-  </browser>
+    </identification>
+  </browser>
   <browser id="IE6to9" parentID="Default">
     <identification>
       <capability name="majorver" match="^[6-9]" />
       <capability name="browser" match="^(IE|AOL)$" />
-    </identification>
-  </browser>
-  <browser id="Opera8to9" parentID="Default">
+    </identification>
+  </browser>
+  <browser id="Opera8to9" parentID="Default">
     <identification>
       <capability name="majorver" match="^[8-9]" />
       <capability name="browser" match="^Opera$" />
-    </identification>
-  </browser>
-  <browser id="Safari" parentID="Default">
+    </identification>
+  </browser>
+  <browser id="Safari" parentID="Default">
     <identification>
       <capability name="browser" match="^Safari$" />
-    </identification>
-  </browser>
-  <browser id="Mozilla" parentID="Default">
+    </identification>
+  </browser>
+  <browser id="Mozilla" parentID="Default">
     <identification>
       <capability name="browser" match="^Mozilla" />
-    </identification>
-  </browser>
+    </identification>
+  </browser>
 </browsers>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/data/mono-cairo.pc.in
+++ mono-4.6.2.7+dfsg/data/mono-cairo.pc.in
@@ -1,5 +1,5 @@
-prefix=${pcfiledir}/../..
-exec_prefix=${pcfiledir}/../..
+prefix=@prefix@
+exec_prefix=${prefix}
 libdir=${prefix}/@reloc_libdir@
 includedir=${prefix}/include
 
--- mono-4.6.2.7+dfsg.orig/data/mono.pc.in
+++ mono-4.6.2.7+dfsg/data/mono.pc.in
@@ -1,5 +1,5 @@
-prefix=${pcfiledir}/../..
-exec_prefix=${pcfiledir}/../..
+prefix=@prefix@
+exec_prefix=${prefix}
 libdir=${prefix}/@reloc_libdir@
 includedir=${prefix}/include/mono-@API_VER@
 sysconfdir=@sysconfdir@
--- mono-4.6.2.7+dfsg.orig/data/net_1_1/machine.config
+++ mono-4.6.2.7+dfsg/data/net_1_1/machine.config
@@ -75,7 +75,7 @@
 			<add prefix="file" type="System.Net.FileWebRequestCreator, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 		</webRequestModules>
 		<settings>
-			<ipv6 enabled="false"/>
+			<ipv6 enabled="true"/>
 		</settings>
 	</system.net>
 	<system.web>
--- mono-4.6.2.7+dfsg.orig/data/net_2_0/machine.config
+++ mono-4.6.2.7+dfsg/data/net_2_0/machine.config
@@ -119,7 +119,7 @@
 			<add prefix="ftp" type="System.Net.FtpRequestCreator, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 		</webRequestModules>
 		<settings>
-			<ipv6 enabled="false"/>
+			<ipv6 enabled="true"/>
 		</settings>
 	</system.net>
 	
--- mono-4.6.2.7+dfsg.orig/data/net_4_0/machine.config
+++ mono-4.6.2.7+dfsg/data/net_4_0/machine.config
@@ -136,7 +136,7 @@
 			<add prefix="ftp" type="System.Net.FtpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 		</webRequestModules>
 		<settings>
-			<ipv6 enabled="false"/>
+			<ipv6 enabled="true"/>
 		</settings>
 	</system.net>
 	
--- mono-4.6.2.7+dfsg.orig/data/net_4_5/machine.config
+++ mono-4.6.2.7+dfsg/data/net_4_5/machine.config
@@ -139,7 +139,7 @@
 			<add prefix="ftp" type="System.Net.FtpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 		</webRequestModules>
 		<settings>
-			<ipv6 enabled="false"/>
+			<ipv6 enabled="true"/>
 		</settings>
 	</system.net>
 	
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/EncodingFoundException.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/EncodingFoundException.cs
@@ -1,33 +1,33 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Text;
-
-namespace HtmlAgilityPack
-{
-    internal class EncodingFoundException : Exception
-    {
-        #region Fields
-
-        private Encoding _encoding;
-
-        #endregion
-
-        #region Constructors
-
-        internal EncodingFoundException(Encoding encoding)
-        {
-            _encoding = encoding;
-        }
-
-        #endregion
-
-        #region Properties
-
-        internal Encoding Encoding
-        {
-            get { return _encoding; }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Text;
+
+namespace HtmlAgilityPack
+{
+    internal class EncodingFoundException : Exception
+    {
+        #region Fields
+
+        private Encoding _encoding;
+
+        #endregion
+
+        #region Constructors
+
+        internal EncodingFoundException(Encoding encoding)
+        {
+            _encoding = encoding;
+        }
+
+        #endregion
+
+        #region Properties
+
+        internal Encoding Encoding
+        {
+            get { return _encoding; }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlAttribute.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlAttribute.cs
@@ -1,260 +1,260 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-
-#region
-
-using System;
-using System.Diagnostics;
-
-#endregion
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents an HTML attribute.
-    /// </summary>
-    [DebuggerDisplay("Name: {OriginalName}, Value: {Value}")]
-    public class HtmlAttribute : IComparable
-    {
-        #region Fields
-
-        private int _line;
-        internal int _lineposition;
-        internal string _name;
-        internal int _namelength;
-        internal int _namestartindex;
-        internal HtmlDocument _ownerdocument; // attribute can exists without a node
-        internal HtmlNode _ownernode;
-        private AttributeValueQuote _quoteType = AttributeValueQuote.DoubleQuote;
-        internal int _streamposition;
-        internal string _value;
-        internal int _valuelength;
-        internal int _valuestartindex;
-
-        #endregion
-
-        #region Constructors
-
-        internal HtmlAttribute(HtmlDocument ownerdocument)
-        {
-            _ownerdocument = ownerdocument;
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the line number of this attribute in the document.
-        /// </summary>
-        public int Line
-        {
-            get { return _line; }
-            internal set { _line = value; }
-        }
-
-        /// <summary>
-        /// Gets the column number of this attribute in the document.
-        /// </summary>
-        public int LinePosition
-        {
-            get { return _lineposition; }
-        }
-
-        /// <summary>
-        /// Gets the qualified name of the attribute.
-        /// </summary>
-        public string Name
-        {
-            get
-            {
-                if (_name == null)
-                {
-                    _name = _ownerdocument._text.Substring(_namestartindex, _namelength);
-                }
-                return _name.ToLower();
-            }
-            set
-            {
-                if (value == null)
-                {
-                    throw new ArgumentNullException("value");
-                }
-                _name = value;
-                if (_ownernode != null)
-                {
-                    _ownernode._innerchanged = true;
-                    _ownernode._outerchanged = true;
-                }
-            }
-        }
-
-        /// <summary>
-        /// Name of attribute with original case
-        /// </summary>
-        public string OriginalName
-        {
-            get { return _name; }
-        }
-
-        /// <summary>
-        /// Gets the HTML document to which this attribute belongs.
-        /// </summary>
-        public HtmlDocument OwnerDocument
-        {
-            get { return _ownerdocument; }
-        }
-
-        /// <summary>
-        /// Gets the HTML node to which this attribute belongs.
-        /// </summary>
-        public HtmlNode OwnerNode
-        {
-            get { return _ownernode; }
-        }
-
-        /// <summary>
-        /// Specifies what type of quote the data should be wrapped in
-        /// </summary>
-        public AttributeValueQuote QuoteType
-        {
-            get { return _quoteType; }
-            set { _quoteType = value; }
-        }
-
-        /// <summary>
-        /// Gets the stream position of this attribute in the document, relative to the start of the document.
-        /// </summary>
-        public int StreamPosition
-        {
-            get { return _streamposition; }
-        }
-
-        /// <summary>
-        /// Gets or sets the value of the attribute.
-        /// </summary>
-        public string Value
-        {
-            get
-            {
-                if (_value == null)
-                {
-                    _value = _ownerdocument._text.Substring(_valuestartindex, _valuelength);
-                }
-                return _value;
-            }
-            set
-            {
-                _value = value;
-                if (_ownernode != null)
-                {
-                    _ownernode._innerchanged = true;
-                    _ownernode._outerchanged = true;
-                }
-            }
-        }
-
-        internal string XmlName
-        {
-            get { return HtmlDocument.GetXmlName(Name); }
-        }
-
-        internal string XmlValue
-        {
-            get { return Value; }
-        }
-
-        /// <summary>
-        /// Gets a valid XPath string that points to this Attribute
-        /// </summary>
-        public string XPath
-        {
-            get
-            {
-                string basePath = (OwnerNode == null) ? "/" : OwnerNode.XPath + "/";
-                return basePath + GetRelativeXpath();
-            }
-        }
-
-        #endregion
-
-        #region IComparable Members
-
-        /// <summary>
-        /// Compares the current instance with another attribute. Comparison is based on attributes' name.
-        /// </summary>
-        /// <param name="obj">An attribute to compare with this instance.</param>
-        /// <returns>A 32-bit signed integer that indicates the relative order of the names comparison.</returns>
-        public int CompareTo(object obj)
-        {
-            HtmlAttribute att = obj as HtmlAttribute;
-            if (att == null)
-            {
-                throw new ArgumentException("obj");
-            }
-            return Name.CompareTo(att.Name);
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Creates a duplicate of this attribute.
-        /// </summary>
-        /// <returns>The cloned attribute.</returns>
-        public HtmlAttribute Clone()
-        {
-            HtmlAttribute att = new HtmlAttribute(_ownerdocument);
-            att.Name = Name;
-            att.Value = Value;
-            return att;
-        }
-
-        /// <summary>
-        /// Removes this attribute from it's parents collection
-        /// </summary>
-        public void Remove()
-        {
-            _ownernode.Attributes.Remove(this);
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private string GetRelativeXpath()
-        {
-            if (OwnerNode == null)
-                return Name;
-
-            int i = 1;
-            foreach (HtmlAttribute node in OwnerNode.Attributes)
-            {
-                if (node.Name != Name) continue;
-
-                if (node == this)
-                    break;
-
-                i++;
-            }
-            return "@" + Name + "[" + i + "]";
-        }
-
-        #endregion
-    }
-
-    /// <summary>
-    /// An Enum representing different types of Quotes used for surrounding attribute values
-    /// </summary>
-    public enum AttributeValueQuote
-    {
-        /// <summary>
-        /// A single quote mark '
-        /// </summary>
-        SingleQuote,
-        /// <summary>
-        /// A double quote mark "
-        /// </summary>
-        DoubleQuote
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+
+#region
+
+using System;
+using System.Diagnostics;
+
+#endregion
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents an HTML attribute.
+    /// </summary>
+    [DebuggerDisplay("Name: {OriginalName}, Value: {Value}")]
+    public class HtmlAttribute : IComparable
+    {
+        #region Fields
+
+        private int _line;
+        internal int _lineposition;
+        internal string _name;
+        internal int _namelength;
+        internal int _namestartindex;
+        internal HtmlDocument _ownerdocument; // attribute can exists without a node
+        internal HtmlNode _ownernode;
+        private AttributeValueQuote _quoteType = AttributeValueQuote.DoubleQuote;
+        internal int _streamposition;
+        internal string _value;
+        internal int _valuelength;
+        internal int _valuestartindex;
+
+        #endregion
+
+        #region Constructors
+
+        internal HtmlAttribute(HtmlDocument ownerdocument)
+        {
+            _ownerdocument = ownerdocument;
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the line number of this attribute in the document.
+        /// </summary>
+        public int Line
+        {
+            get { return _line; }
+            internal set { _line = value; }
+        }
+
+        /// <summary>
+        /// Gets the column number of this attribute in the document.
+        /// </summary>
+        public int LinePosition
+        {
+            get { return _lineposition; }
+        }
+
+        /// <summary>
+        /// Gets the qualified name of the attribute.
+        /// </summary>
+        public string Name
+        {
+            get
+            {
+                if (_name == null)
+                {
+                    _name = _ownerdocument._text.Substring(_namestartindex, _namelength);
+                }
+                return _name.ToLower();
+            }
+            set
+            {
+                if (value == null)
+                {
+                    throw new ArgumentNullException("value");
+                }
+                _name = value;
+                if (_ownernode != null)
+                {
+                    _ownernode._innerchanged = true;
+                    _ownernode._outerchanged = true;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Name of attribute with original case
+        /// </summary>
+        public string OriginalName
+        {
+            get { return _name; }
+        }
+
+        /// <summary>
+        /// Gets the HTML document to which this attribute belongs.
+        /// </summary>
+        public HtmlDocument OwnerDocument
+        {
+            get { return _ownerdocument; }
+        }
+
+        /// <summary>
+        /// Gets the HTML node to which this attribute belongs.
+        /// </summary>
+        public HtmlNode OwnerNode
+        {
+            get { return _ownernode; }
+        }
+
+        /// <summary>
+        /// Specifies what type of quote the data should be wrapped in
+        /// </summary>
+        public AttributeValueQuote QuoteType
+        {
+            get { return _quoteType; }
+            set { _quoteType = value; }
+        }
+
+        /// <summary>
+        /// Gets the stream position of this attribute in the document, relative to the start of the document.
+        /// </summary>
+        public int StreamPosition
+        {
+            get { return _streamposition; }
+        }
+
+        /// <summary>
+        /// Gets or sets the value of the attribute.
+        /// </summary>
+        public string Value
+        {
+            get
+            {
+                if (_value == null)
+                {
+                    _value = _ownerdocument._text.Substring(_valuestartindex, _valuelength);
+                }
+                return _value;
+            }
+            set
+            {
+                _value = value;
+                if (_ownernode != null)
+                {
+                    _ownernode._innerchanged = true;
+                    _ownernode._outerchanged = true;
+                }
+            }
+        }
+
+        internal string XmlName
+        {
+            get { return HtmlDocument.GetXmlName(Name); }
+        }
+
+        internal string XmlValue
+        {
+            get { return Value; }
+        }
+
+        /// <summary>
+        /// Gets a valid XPath string that points to this Attribute
+        /// </summary>
+        public string XPath
+        {
+            get
+            {
+                string basePath = (OwnerNode == null) ? "/" : OwnerNode.XPath + "/";
+                return basePath + GetRelativeXpath();
+            }
+        }
+
+        #endregion
+
+        #region IComparable Members
+
+        /// <summary>
+        /// Compares the current instance with another attribute. Comparison is based on attributes' name.
+        /// </summary>
+        /// <param name="obj">An attribute to compare with this instance.</param>
+        /// <returns>A 32-bit signed integer that indicates the relative order of the names comparison.</returns>
+        public int CompareTo(object obj)
+        {
+            HtmlAttribute att = obj as HtmlAttribute;
+            if (att == null)
+            {
+                throw new ArgumentException("obj");
+            }
+            return Name.CompareTo(att.Name);
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Creates a duplicate of this attribute.
+        /// </summary>
+        /// <returns>The cloned attribute.</returns>
+        public HtmlAttribute Clone()
+        {
+            HtmlAttribute att = new HtmlAttribute(_ownerdocument);
+            att.Name = Name;
+            att.Value = Value;
+            return att;
+        }
+
+        /// <summary>
+        /// Removes this attribute from it's parents collection
+        /// </summary>
+        public void Remove()
+        {
+            _ownernode.Attributes.Remove(this);
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private string GetRelativeXpath()
+        {
+            if (OwnerNode == null)
+                return Name;
+
+            int i = 1;
+            foreach (HtmlAttribute node in OwnerNode.Attributes)
+            {
+                if (node.Name != Name) continue;
+
+                if (node == this)
+                    break;
+
+                i++;
+            }
+            return "@" + Name + "[" + i + "]";
+        }
+
+        #endregion
+    }
+
+    /// <summary>
+    /// An Enum representing different types of Quotes used for surrounding attribute values
+    /// </summary>
+    public enum AttributeValueQuote
+    {
+        /// <summary>
+        /// A single quote mark '
+        /// </summary>
+        SingleQuote,
+        /// <summary>
+        /// A double quote mark "
+        /// </summary>
+        DoubleQuote
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlAttributeCollection.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlAttributeCollection.cs
@@ -1,394 +1,394 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a combined list and collection of HTML nodes.
-    /// </summary>
-    public class HtmlAttributeCollection : IList<HtmlAttribute>
-    {
-        #region Fields
-
-        internal Dictionary<string, HtmlAttribute> Hashitems = new Dictionary<string, HtmlAttribute>();
-        private HtmlNode _ownernode;
-        private List<HtmlAttribute> items = new List<HtmlAttribute>();
-
-        #endregion
-
-        #region Constructors
-
-        internal HtmlAttributeCollection(HtmlNode ownernode)
-        {
-            _ownernode = ownernode;
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets a given attribute from the list using its name.
-        /// </summary>
-        public HtmlAttribute this[string name]
-        {
-            get
-            {
-                if (name == null)
-                {
-                    throw new ArgumentNullException("name");
-                }
-                return Hashitems.ContainsKey(name.ToLower()) ? Hashitems[name.ToLower()] : null;
-            }
-            set { Append(value); }
-        }
-
-        #endregion
-
-        #region IList<HtmlAttribute> Members
-
-        /// <summary>
-        /// Gets the number of elements actually contained in the list.
-        /// </summary>
-        public int Count
-        {
-            get { return items.Count; }
-        }
-
-        /// <summary>
-        /// Gets readonly status of colelction
-        /// </summary>
-        public bool IsReadOnly
-        {
-            get { return false; }
-        }
-
-        /// <summary>
-        /// Gets the attribute at the specified index.
-        /// </summary>
-        public HtmlAttribute this[int index]
-        {
-            get { return items[index]; }
-            set { items[index] = value; }
-        }
-
-        /// <summary>
-        /// Adds supplied item to collection
-        /// </summary>
-        /// <param name="item"></param>
-        public void Add(HtmlAttribute item)
-        {
-            Append(item);
-        }
-
-        /// <summary>
-        /// Explicit clear
-        /// </summary>
-        void ICollection<HtmlAttribute>.Clear()
-        {
-            items.Clear();
-        }
-
-        /// <summary>
-        /// Retreives existence of supplied item
-        /// </summary>
-        /// <param name="item"></param>
-        /// <returns></returns>
-        public bool Contains(HtmlAttribute item)
-        {
-            return items.Contains(item);
-        }
-
-        /// <summary>
-        /// Copies collection to array
-        /// </summary>
-        /// <param name="array"></param>
-        /// <param name="arrayIndex"></param>
-        public void CopyTo(HtmlAttribute[] array, int arrayIndex)
-        {
-            items.CopyTo(array, arrayIndex);
-        }
-
-        /// <summary>
-        /// Get Explicit enumerator
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator<HtmlAttribute> IEnumerable<HtmlAttribute>.GetEnumerator()
-        {
-            return items.GetEnumerator();
-        }
-
-        /// <summary>
-        /// Explicit non-generic enumerator
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return items.GetEnumerator();
-        }
-
-        /// <summary>
-        /// Retrieves the index for the supplied item, -1 if not found
-        /// </summary>
-        /// <param name="item"></param>
-        /// <returns></returns>
-        public int IndexOf(HtmlAttribute item)
-        {
-            return items.IndexOf(item);
-        }
-
-        /// <summary>
-        /// Inserts given item into collection at supplied index
-        /// </summary>
-        /// <param name="index"></param>
-        /// <param name="item"></param>
-        public void Insert(int index, HtmlAttribute item)
-        {
-            if (item == null)
-            {
-                throw new ArgumentNullException("item");
-            }
-
-            Hashitems[item.Name] = item;
-            item._ownernode = _ownernode;
-            items.Insert(index, item);
-
-            _ownernode._innerchanged = true;
-            _ownernode._outerchanged = true;
-        }
-
-        /// <summary>
-        /// Explicit collection remove
-        /// </summary>
-        /// <param name="item"></param>
-        /// <returns></returns>
-        bool ICollection<HtmlAttribute>.Remove(HtmlAttribute item)
-        {
-            return items.Remove(item);
-        }
-
-        /// <summary>
-        /// Removes the attribute at the specified index.
-        /// </summary>
-        /// <param name="index">The index of the attribute to remove.</param>
-        public void RemoveAt(int index)
-        {
-            HtmlAttribute att = items[index];
-            Hashitems.Remove(att.Name);
-            items.RemoveAt(index);
-
-            _ownernode._innerchanged = true;
-            _ownernode._outerchanged = true;
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Adds a new attribute to the collection with the given values
-        /// </summary>
-        /// <param name="name"></param>
-        /// <param name="value"></param>
-        public void Add(string name, string value)
-        {
-            Append(name, value);
-        }
-
-        /// <summary>
-        /// Inserts the specified attribute as the last attribute in the collection.
-        /// </summary>
-        /// <param name="newAttribute">The attribute to insert. May not be null.</param>
-        /// <returns>The appended attribute.</returns>
-        public HtmlAttribute Append(HtmlAttribute newAttribute)
-        {
-            if (newAttribute == null)
-            {
-                throw new ArgumentNullException("newAttribute");
-            }
-
-            Hashitems[newAttribute.Name] = newAttribute;
-            newAttribute._ownernode = _ownernode;
-            items.Add(newAttribute);
-
-            _ownernode._innerchanged = true;
-            _ownernode._outerchanged = true;
-            return newAttribute;
-        }
-
-        /// <summary>
-        /// Creates and inserts a new attribute as the last attribute in the collection.
-        /// </summary>
-        /// <param name="name">The name of the attribute to insert.</param>
-        /// <returns>The appended attribute.</returns>
-        public HtmlAttribute Append(string name)
-        {
-            HtmlAttribute att = _ownernode._ownerdocument.CreateAttribute(name);
-            return Append(att);
-        }
-
-        /// <summary>
-        /// Creates and inserts a new attribute as the last attribute in the collection.
-        /// </summary>
-        /// <param name="name">The name of the attribute to insert.</param>
-        /// <param name="value">The value of the attribute to insert.</param>
-        /// <returns>The appended attribute.</returns>
-        public HtmlAttribute Append(string name, string value)
-        {
-            HtmlAttribute att = _ownernode._ownerdocument.CreateAttribute(name, value);
-            return Append(att);
-        }
-
-        /// <summary>
-        /// Checks for existance of attribute with given name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public bool Contains(string name)
-        {
-            for (int i = 0; i < items.Count; i++)
-            {
-                if (items[i].Name.Equals(name.ToLower()))
-                    return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Inserts the specified attribute as the first node in the collection.
-        /// </summary>
-        /// <param name="newAttribute">The attribute to insert. May not be null.</param>
-        /// <returns>The prepended attribute.</returns>
-        public HtmlAttribute Prepend(HtmlAttribute newAttribute)
-        {
-            Insert(0, newAttribute);
-            return newAttribute;
-        }
-
-        /// <summary>
-        /// Removes a given attribute from the list.
-        /// </summary>
-        /// <param name="attribute">The attribute to remove. May not be null.</param>
-        public void Remove(HtmlAttribute attribute)
-        {
-            if (attribute == null)
-            {
-                throw new ArgumentNullException("attribute");
-            }
-            int index = GetAttributeIndex(attribute);
-            if (index == -1)
-            {
-                throw new IndexOutOfRangeException();
-            }
-            RemoveAt(index);
-        }
-
-        /// <summary>
-        /// Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
-        /// </summary>
-        /// <param name="name">The attribute's name. May not be null.</param>
-        public void Remove(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            string lname = name.ToLower();
-            for (int i = 0; i < items.Count; i++)
-            {
-                HtmlAttribute att = items[i];
-                if (att.Name == lname)
-                {
-                    RemoveAt(i);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Remove all attributes in the list.
-        /// </summary>
-        public void RemoveAll()
-        {
-            Hashitems.Clear();
-            items.Clear();
-
-            _ownernode._innerchanged = true;
-            _ownernode._outerchanged = true;
-        }
-
-        #endregion
-
-        #region LINQ Methods
-
-        /// <summary>
-        /// Returns all attributes with specified name. Handles case insentivity
-        /// </summary>
-        /// <param name="attributeName">Name of the attribute</param>
-        /// <returns></returns>
-        public IEnumerable<HtmlAttribute> AttributesWithName(string attributeName)
-        {
-            attributeName = attributeName.ToLower();
-            for (int i = 0; i < items.Count; i++)
-            {
-                if (items[i].Name.Equals(attributeName))
-                    yield return items[i];
-            }
-        }
-
-        /// <summary>
-        /// Removes all attributes from the collection
-        /// </summary>
-        public void Remove()
-        {
-            foreach (HtmlAttribute item in items)
-                item.Remove();
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        /// <summary>
-        /// Clears the attribute collection
-        /// </summary>
-        internal void Clear()
-        {
-            Hashitems.Clear();
-            items.Clear();
-        }
-
-        internal int GetAttributeIndex(HtmlAttribute attribute)
-        {
-            if (attribute == null)
-            {
-                throw new ArgumentNullException("attribute");
-            }
-            for (int i = 0; i < items.Count; i++)
-            {
-                if ((items[i]) == attribute)
-                    return i;
-            }
-            return -1;
-        }
-
-        internal int GetAttributeIndex(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-            string lname = name.ToLower();
-            for (int i = 0; i < items.Count; i++)
-            {
-                if ((items[i]).Name == lname)
-                    return i;
-            }
-            return -1;
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a combined list and collection of HTML nodes.
+    /// </summary>
+    public class HtmlAttributeCollection : IList<HtmlAttribute>
+    {
+        #region Fields
+
+        internal Dictionary<string, HtmlAttribute> Hashitems = new Dictionary<string, HtmlAttribute>();
+        private HtmlNode _ownernode;
+        private List<HtmlAttribute> items = new List<HtmlAttribute>();
+
+        #endregion
+
+        #region Constructors
+
+        internal HtmlAttributeCollection(HtmlNode ownernode)
+        {
+            _ownernode = ownernode;
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets a given attribute from the list using its name.
+        /// </summary>
+        public HtmlAttribute this[string name]
+        {
+            get
+            {
+                if (name == null)
+                {
+                    throw new ArgumentNullException("name");
+                }
+                return Hashitems.ContainsKey(name.ToLower()) ? Hashitems[name.ToLower()] : null;
+            }
+            set { Append(value); }
+        }
+
+        #endregion
+
+        #region IList<HtmlAttribute> Members
+
+        /// <summary>
+        /// Gets the number of elements actually contained in the list.
+        /// </summary>
+        public int Count
+        {
+            get { return items.Count; }
+        }
+
+        /// <summary>
+        /// Gets readonly status of colelction
+        /// </summary>
+        public bool IsReadOnly
+        {
+            get { return false; }
+        }
+
+        /// <summary>
+        /// Gets the attribute at the specified index.
+        /// </summary>
+        public HtmlAttribute this[int index]
+        {
+            get { return items[index]; }
+            set { items[index] = value; }
+        }
+
+        /// <summary>
+        /// Adds supplied item to collection
+        /// </summary>
+        /// <param name="item"></param>
+        public void Add(HtmlAttribute item)
+        {
+            Append(item);
+        }
+
+        /// <summary>
+        /// Explicit clear
+        /// </summary>
+        void ICollection<HtmlAttribute>.Clear()
+        {
+            items.Clear();
+        }
+
+        /// <summary>
+        /// Retreives existence of supplied item
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        public bool Contains(HtmlAttribute item)
+        {
+            return items.Contains(item);
+        }
+
+        /// <summary>
+        /// Copies collection to array
+        /// </summary>
+        /// <param name="array"></param>
+        /// <param name="arrayIndex"></param>
+        public void CopyTo(HtmlAttribute[] array, int arrayIndex)
+        {
+            items.CopyTo(array, arrayIndex);
+        }
+
+        /// <summary>
+        /// Get Explicit enumerator
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator<HtmlAttribute> IEnumerable<HtmlAttribute>.GetEnumerator()
+        {
+            return items.GetEnumerator();
+        }
+
+        /// <summary>
+        /// Explicit non-generic enumerator
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return items.GetEnumerator();
+        }
+
+        /// <summary>
+        /// Retrieves the index for the supplied item, -1 if not found
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        public int IndexOf(HtmlAttribute item)
+        {
+            return items.IndexOf(item);
+        }
+
+        /// <summary>
+        /// Inserts given item into collection at supplied index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <param name="item"></param>
+        public void Insert(int index, HtmlAttribute item)
+        {
+            if (item == null)
+            {
+                throw new ArgumentNullException("item");
+            }
+
+            Hashitems[item.Name] = item;
+            item._ownernode = _ownernode;
+            items.Insert(index, item);
+
+            _ownernode._innerchanged = true;
+            _ownernode._outerchanged = true;
+        }
+
+        /// <summary>
+        /// Explicit collection remove
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        bool ICollection<HtmlAttribute>.Remove(HtmlAttribute item)
+        {
+            return items.Remove(item);
+        }
+
+        /// <summary>
+        /// Removes the attribute at the specified index.
+        /// </summary>
+        /// <param name="index">The index of the attribute to remove.</param>
+        public void RemoveAt(int index)
+        {
+            HtmlAttribute att = items[index];
+            Hashitems.Remove(att.Name);
+            items.RemoveAt(index);
+
+            _ownernode._innerchanged = true;
+            _ownernode._outerchanged = true;
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Adds a new attribute to the collection with the given values
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="value"></param>
+        public void Add(string name, string value)
+        {
+            Append(name, value);
+        }
+
+        /// <summary>
+        /// Inserts the specified attribute as the last attribute in the collection.
+        /// </summary>
+        /// <param name="newAttribute">The attribute to insert. May not be null.</param>
+        /// <returns>The appended attribute.</returns>
+        public HtmlAttribute Append(HtmlAttribute newAttribute)
+        {
+            if (newAttribute == null)
+            {
+                throw new ArgumentNullException("newAttribute");
+            }
+
+            Hashitems[newAttribute.Name] = newAttribute;
+            newAttribute._ownernode = _ownernode;
+            items.Add(newAttribute);
+
+            _ownernode._innerchanged = true;
+            _ownernode._outerchanged = true;
+            return newAttribute;
+        }
+
+        /// <summary>
+        /// Creates and inserts a new attribute as the last attribute in the collection.
+        /// </summary>
+        /// <param name="name">The name of the attribute to insert.</param>
+        /// <returns>The appended attribute.</returns>
+        public HtmlAttribute Append(string name)
+        {
+            HtmlAttribute att = _ownernode._ownerdocument.CreateAttribute(name);
+            return Append(att);
+        }
+
+        /// <summary>
+        /// Creates and inserts a new attribute as the last attribute in the collection.
+        /// </summary>
+        /// <param name="name">The name of the attribute to insert.</param>
+        /// <param name="value">The value of the attribute to insert.</param>
+        /// <returns>The appended attribute.</returns>
+        public HtmlAttribute Append(string name, string value)
+        {
+            HtmlAttribute att = _ownernode._ownerdocument.CreateAttribute(name, value);
+            return Append(att);
+        }
+
+        /// <summary>
+        /// Checks for existance of attribute with given name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public bool Contains(string name)
+        {
+            for (int i = 0; i < items.Count; i++)
+            {
+                if (items[i].Name.Equals(name.ToLower()))
+                    return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// Inserts the specified attribute as the first node in the collection.
+        /// </summary>
+        /// <param name="newAttribute">The attribute to insert. May not be null.</param>
+        /// <returns>The prepended attribute.</returns>
+        public HtmlAttribute Prepend(HtmlAttribute newAttribute)
+        {
+            Insert(0, newAttribute);
+            return newAttribute;
+        }
+
+        /// <summary>
+        /// Removes a given attribute from the list.
+        /// </summary>
+        /// <param name="attribute">The attribute to remove. May not be null.</param>
+        public void Remove(HtmlAttribute attribute)
+        {
+            if (attribute == null)
+            {
+                throw new ArgumentNullException("attribute");
+            }
+            int index = GetAttributeIndex(attribute);
+            if (index == -1)
+            {
+                throw new IndexOutOfRangeException();
+            }
+            RemoveAt(index);
+        }
+
+        /// <summary>
+        /// Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+        /// </summary>
+        /// <param name="name">The attribute's name. May not be null.</param>
+        public void Remove(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            string lname = name.ToLower();
+            for (int i = 0; i < items.Count; i++)
+            {
+                HtmlAttribute att = items[i];
+                if (att.Name == lname)
+                {
+                    RemoveAt(i);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Remove all attributes in the list.
+        /// </summary>
+        public void RemoveAll()
+        {
+            Hashitems.Clear();
+            items.Clear();
+
+            _ownernode._innerchanged = true;
+            _ownernode._outerchanged = true;
+        }
+
+        #endregion
+
+        #region LINQ Methods
+
+        /// <summary>
+        /// Returns all attributes with specified name. Handles case insentivity
+        /// </summary>
+        /// <param name="attributeName">Name of the attribute</param>
+        /// <returns></returns>
+        public IEnumerable<HtmlAttribute> AttributesWithName(string attributeName)
+        {
+            attributeName = attributeName.ToLower();
+            for (int i = 0; i < items.Count; i++)
+            {
+                if (items[i].Name.Equals(attributeName))
+                    yield return items[i];
+            }
+        }
+
+        /// <summary>
+        /// Removes all attributes from the collection
+        /// </summary>
+        public void Remove()
+        {
+            foreach (HtmlAttribute item in items)
+                item.Remove();
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        /// <summary>
+        /// Clears the attribute collection
+        /// </summary>
+        internal void Clear()
+        {
+            Hashitems.Clear();
+            items.Clear();
+        }
+
+        internal int GetAttributeIndex(HtmlAttribute attribute)
+        {
+            if (attribute == null)
+            {
+                throw new ArgumentNullException("attribute");
+            }
+            for (int i = 0; i < items.Count; i++)
+            {
+                if ((items[i]) == attribute)
+                    return i;
+            }
+            return -1;
+        }
+
+        internal int GetAttributeIndex(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+            string lname = name.ToLower();
+            for (int i = 0; i < items.Count; i++)
+            {
+                if ((items[i]).Name == lname)
+                    return i;
+            }
+            return -1;
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlCmdLine.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlCmdLine.cs
@@ -1,142 +1,142 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-
-namespace HtmlAgilityPack
-{
-    internal class HtmlCmdLine
-    {
-        #region Static Members
-
-        internal static bool Help;
-
-        #endregion
-
-        #region Constructors
-
-        static HtmlCmdLine()
-        {
-            Help = false;
-            ParseArgs();
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal static string GetOption(string name, string def)
-        {
-            string p = def;
-            string[] args = Environment.GetCommandLineArgs();
-            for (int i = 1; i < args.Length; i++)
-            {
-                GetStringArg(args[i], name, ref p);
-            }
-            return p;
-        }
-
-        internal static string GetOption(int index, string def)
-        {
-            string p = def;
-            string[] args = Environment.GetCommandLineArgs();
-            int j = 0;
-            for (int i = 1; i < args.Length; i++)
-            {
-                if (GetStringArg(args[i], ref p))
-                {
-                    if (index == j)
-                        return p;
-                    else
-                        p = def;
-                    j++;
-                }
-            }
-            return p;
-        }
-
-        internal static bool GetOption(string name, bool def)
-        {
-            bool p = def;
-            string[] args = Environment.GetCommandLineArgs();
-            for (int i = 1; i < args.Length; i++)
-            {
-                GetBoolArg(args[i], name, ref p);
-            }
-            return p;
-        }
-
-        internal static int GetOption(string name, int def)
-        {
-            int p = def;
-            string[] args = Environment.GetCommandLineArgs();
-            for (int i = 1; i < args.Length; i++)
-            {
-                GetIntArg(args[i], name, ref p);
-            }
-            return p;
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private static void GetBoolArg(string Arg, string Name, ref bool ArgValue)
-        {
-            if (Arg.Length < (Name.Length + 1)) // -name is 1 more than name
-                return;
-            if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
-                return;
-            if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
-                ArgValue = true;
-        }
-
-        private static void GetIntArg(string Arg, string Name, ref int ArgValue)
-        {
-            if (Arg.Length < (Name.Length + 3)) // -name:12 is 3 more than name
-                return;
-            if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
-                return;
-            if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
-            {
-                try
-                {
-                    ArgValue = Convert.ToInt32(Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2));
-                }
-                catch
-                {
-                }
-            }
-        }
-
-        private static bool GetStringArg(string Arg, ref string ArgValue)
-        {
-            if (('/' == Arg[0]) || ('-' == Arg[0]))
-                return false;
-            ArgValue = Arg;
-            return true;
-        }
-
-        private static void GetStringArg(string Arg, string Name, ref string ArgValue)
-        {
-            if (Arg.Length < (Name.Length + 3)) // -name:x is 3 more than name
-                return;
-            if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
-                return;
-            if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
-                ArgValue = Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2);
-        }
-
-        private static void ParseArgs()
-        {
-            string[] args = Environment.GetCommandLineArgs();
-            for (int i = 1; i < args.Length; i++)
-            {
-                // help
-                GetBoolArg(args[i], "?", ref Help);
-                GetBoolArg(args[i], "h", ref Help);
-                GetBoolArg(args[i], "help", ref Help);
-            }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+
+namespace HtmlAgilityPack
+{
+    internal class HtmlCmdLine
+    {
+        #region Static Members
+
+        internal static bool Help;
+
+        #endregion
+
+        #region Constructors
+
+        static HtmlCmdLine()
+        {
+            Help = false;
+            ParseArgs();
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal static string GetOption(string name, string def)
+        {
+            string p = def;
+            string[] args = Environment.GetCommandLineArgs();
+            for (int i = 1; i < args.Length; i++)
+            {
+                GetStringArg(args[i], name, ref p);
+            }
+            return p;
+        }
+
+        internal static string GetOption(int index, string def)
+        {
+            string p = def;
+            string[] args = Environment.GetCommandLineArgs();
+            int j = 0;
+            for (int i = 1; i < args.Length; i++)
+            {
+                if (GetStringArg(args[i], ref p))
+                {
+                    if (index == j)
+                        return p;
+                    else
+                        p = def;
+                    j++;
+                }
+            }
+            return p;
+        }
+
+        internal static bool GetOption(string name, bool def)
+        {
+            bool p = def;
+            string[] args = Environment.GetCommandLineArgs();
+            for (int i = 1; i < args.Length; i++)
+            {
+                GetBoolArg(args[i], name, ref p);
+            }
+            return p;
+        }
+
+        internal static int GetOption(string name, int def)
+        {
+            int p = def;
+            string[] args = Environment.GetCommandLineArgs();
+            for (int i = 1; i < args.Length; i++)
+            {
+                GetIntArg(args[i], name, ref p);
+            }
+            return p;
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private static void GetBoolArg(string Arg, string Name, ref bool ArgValue)
+        {
+            if (Arg.Length < (Name.Length + 1)) // -name is 1 more than name
+                return;
+            if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
+                return;
+            if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
+                ArgValue = true;
+        }
+
+        private static void GetIntArg(string Arg, string Name, ref int ArgValue)
+        {
+            if (Arg.Length < (Name.Length + 3)) // -name:12 is 3 more than name
+                return;
+            if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
+                return;
+            if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
+            {
+                try
+                {
+                    ArgValue = Convert.ToInt32(Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2));
+                }
+                catch
+                {
+                }
+            }
+        }
+
+        private static bool GetStringArg(string Arg, ref string ArgValue)
+        {
+            if (('/' == Arg[0]) || ('-' == Arg[0]))
+                return false;
+            ArgValue = Arg;
+            return true;
+        }
+
+        private static void GetStringArg(string Arg, string Name, ref string ArgValue)
+        {
+            if (Arg.Length < (Name.Length + 3)) // -name:x is 3 more than name
+                return;
+            if (('/' != Arg[0]) && ('-' != Arg[0])) // not a param
+                return;
+            if (Arg.Substring(1, Name.Length).ToLower() == Name.ToLower())
+                ArgValue = Arg.Substring(Name.Length + 2, Arg.Length - Name.Length - 2);
+        }
+
+        private static void ParseArgs()
+        {
+            string[] args = Environment.GetCommandLineArgs();
+            for (int i = 1; i < args.Length; i++)
+            {
+                // help
+                GetBoolArg(args[i], "?", ref Help);
+                GetBoolArg(args[i], "h", ref Help);
+                GetBoolArg(args[i], "help", ref Help);
+            }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlCommentNode.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlCommentNode.cs
@@ -1,76 +1,76 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents an HTML comment.
-    /// </summary>
-    public class HtmlCommentNode : HtmlNode
-    {
-        #region Fields
-
-        private string _comment;
-
-        #endregion
-
-        #region Constructors
-
-        internal HtmlCommentNode(HtmlDocument ownerdocument, int index)
-            :
-                base(HtmlNodeType.Comment, ownerdocument, index)
-        {
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets or Sets the comment text of the node.
-        /// </summary>
-        public string Comment
-        {
-            get
-            {
-                if (_comment == null)
-                {
-                    return base.InnerHtml;
-                }
-                return _comment;
-            }
-            set { _comment = value; }
-        }
-
-        /// <summary>
-        /// Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
-        /// </summary>
-        public override string InnerHtml
-        {
-            get
-            {
-                if (_comment == null)
-                {
-                    return base.InnerHtml;
-                }
-                return _comment;
-            }
-            set { _comment = value; }
-        }
-
-        /// <summary>
-        /// Gets or Sets the object and its content in HTML.
-        /// </summary>
-        public override string OuterHtml
-        {
-            get
-            {
-                if (_comment == null)
-                {
-                    return base.OuterHtml;
-                }
-                return "<!--" + _comment + "-->";
-            }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents an HTML comment.
+    /// </summary>
+    public class HtmlCommentNode : HtmlNode
+    {
+        #region Fields
+
+        private string _comment;
+
+        #endregion
+
+        #region Constructors
+
+        internal HtmlCommentNode(HtmlDocument ownerdocument, int index)
+            :
+                base(HtmlNodeType.Comment, ownerdocument, index)
+        {
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets or Sets the comment text of the node.
+        /// </summary>
+        public string Comment
+        {
+            get
+            {
+                if (_comment == null)
+                {
+                    return base.InnerHtml;
+                }
+                return _comment;
+            }
+            set { _comment = value; }
+        }
+
+        /// <summary>
+        /// Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+        /// </summary>
+        public override string InnerHtml
+        {
+            get
+            {
+                if (_comment == null)
+                {
+                    return base.InnerHtml;
+                }
+                return _comment;
+            }
+            set { _comment = value; }
+        }
+
+        /// <summary>
+        /// Gets or Sets the object and its content in HTML.
+        /// </summary>
+        public override string OuterHtml
+        {
+            get
+            {
+                if (_comment == null)
+                {
+                    return base.OuterHtml;
+                }
+                return "<!--" + _comment + "-->";
+            }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlConsoleListener.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlConsoleListener.cs
@@ -1,33 +1,33 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Diagnostics;
-
-namespace HtmlAgilityPack
-{
-    internal class HtmlConsoleListener : TraceListener
-    {
-        #region Public Methods
-
-        public override void Write(string Message)
-        {
-            Write(Message, "");
-        }
-
-        public override void Write(string Message, string Category)
-        {
-            Console.Write("T:" + Category + ": " + Message);
-        }
-
-        public override void WriteLine(string Message)
-        {
-            Write(Message + "\n");
-        }
-
-        public override void WriteLine(string Message, string Category)
-        {
-            Write(Message + "\n", Category);
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Diagnostics;
+
+namespace HtmlAgilityPack
+{
+    internal class HtmlConsoleListener : TraceListener
+    {
+        #region Public Methods
+
+        public override void Write(string Message)
+        {
+            Write(Message, "");
+        }
+
+        public override void Write(string Message, string Category)
+        {
+            Console.Write("T:" + Category + ": " + Message);
+        }
+
+        public override void WriteLine(string Message)
+        {
+            Write(Message + "\n");
+        }
+
+        public override void WriteLine(string Message, string Category)
+        {
+            Write(Message + "\n", Category);
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlDocument.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlDocument.cs
@@ -1,1962 +1,1962 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Xml;
-using System.Xml.XPath;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a complete HTML document.
-    /// </summary>
-    public class HtmlDocument : IXPathNavigable
-    {
-        #region Fields
-
-        private int _c;
-        private Crc32 _crc32;
-        private HtmlAttribute _currentattribute;
-        private HtmlNode _currentnode;
-        private Encoding _declaredencoding;
-        private HtmlNode _documentnode;
-        private bool _fullcomment;
-        private int _index;
-        internal Hashtable _lastnodes = new Hashtable();
-        private HtmlNode _lastparentnode;
-        private int _line;
-        private int _lineposition, _maxlineposition;
-        internal Hashtable _nodesid;
-        private ParseState _oldstate;
-        private bool _onlyDetectEncoding;
-        internal Hashtable _openednodes;
-        private List<HtmlParseError> _parseerrors = new List<HtmlParseError>();
-        private string _remainder;
-        private int _remainderOffset;
-        private ParseState _state;
-        private Encoding _streamencoding;
-        internal string _text;
-
-        // public props
-
-        /// <summary>
-        /// Adds Debugging attributes to node. Default is false.
-        /// </summary>
-        public bool OptionAddDebuggingAttributes;
-
-        /// <summary>
-        /// Defines if closing for non closed nodes must be done at the end or directly in the document.
-        /// Setting this to true can actually change how browsers render the page. Default is false.
-        /// </summary>
-        public bool OptionAutoCloseOnEnd; // close errors at the end
-
-        /// <summary>
-        /// Defines if non closed nodes will be checked at the end of parsing. Default is true.
-        /// </summary>
-        public bool OptionCheckSyntax = true;
-
-        /// <summary>
-        /// Defines if a checksum must be computed for the document while parsing. Default is false.
-        /// </summary>
-        public bool OptionComputeChecksum;
-
-        /// <summary>
-        /// Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
-        /// </summary>
-        public Encoding OptionDefaultStreamEncoding = Encoding.Default;
-
-        /// <summary>
-        /// Defines if source text must be extracted while parsing errors.
-        /// If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
-        /// Default is false.
-        /// </summary>
-        public bool OptionExtractErrorSourceText;
-
-        // turning this on can dramatically slow performance if a lot of errors are detected
-
-        /// <summary>
-        /// Defines the maximum length of source text or parse errors. Default is 100.
-        /// </summary>
-        public int OptionExtractErrorSourceTextMaxLength = 100;
-
-        /// <summary>
-        /// Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
-        /// </summary>
-        public bool OptionFixNestedTags; // fix li, tr, th, td tags
-
-        /// <summary>
-        /// Defines if output must conform to XML, instead of HTML.
-        /// </summary>
-        public bool OptionOutputAsXml;
-
-        /// <summary>
-        /// Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
-        /// </summary>
-        public bool OptionOutputOptimizeAttributeValues;
-
-        /// <summary>
-        /// Defines if name must be output with it's original case. Useful for asp.net tags and attributes
-        /// </summary>
-        public bool OptionOutputOriginalCase;
-
-        /// <summary>
-        /// Defines if name must be output in uppercase. Default is false.
-        /// </summary>
-        public bool OptionOutputUpperCase;
-
-        /// <summary>
-        /// Defines if declared encoding must be read from the document.
-        /// Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
-        /// Default is true.
-        /// </summary>
-        public bool OptionReadEncoding = true;
-
-        /// <summary>
-        /// Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
-        /// </summary>
-        public string OptionStopperNodeName;
-
-        /// <summary>
-        /// Defines if the 'id' attribute must be specifically used. Default is true.
-        /// </summary>
-        public bool OptionUseIdAttribute = true;
-
-        /// <summary>
-        /// Defines if empty nodes must be written as closed during output. Default is false.
-        /// </summary>
-        public bool OptionWriteEmptyNodes;
-
-        #endregion
-
-        #region Static Members
-
-        internal static readonly string HtmlExceptionRefNotChild = "Reference node must be a child of this node";
-
-        internal static readonly string HtmlExceptionUseIdAttributeFalse =
-            "You need to set UseIdAttribute property to true to enable this feature";
-
-        #endregion
-
-        #region Constructors
-
-        /// <summary>
-        /// Creates an instance of an HTML document.
-        /// </summary>
-        public HtmlDocument()
-        {
-            _documentnode = CreateNode(HtmlNodeType.Document, 0);
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
-        /// </summary>
-        public int CheckSum
-        {
-            get
-            {
-                if (_crc32 == null)
-                {
-                    return 0;
-                }
-                else
-                {
-                    return (int) _crc32.CheckSum;
-                }
-            }
-        }
-
-        /// <summary>
-        /// Gets the document's declared encoding.
-        /// Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
-        /// </summary>
-        public Encoding DeclaredEncoding
-        {
-            get { return _declaredencoding; }
-        }
-
-        /// <summary>
-        /// Gets the root node of the document.
-        /// </summary>
-        public HtmlNode DocumentNode
-        {
-            get { return _documentnode; }
-        }
-
-        /// <summary>
-        /// Gets the document's output encoding.
-        /// </summary>
-        public Encoding Encoding
-        {
-            get { return GetOutEncoding(); }
-        }
-
-        /// <summary>
-        /// Gets a list of parse errors found in the document.
-        /// </summary>
-        public IEnumerable<HtmlParseError> ParseErrors
-        {
-            get { return _parseerrors; }
-        }
-
-        /// <summary>
-        /// Gets the remaining text.
-        /// Will always be null if OptionStopperNodeName is null.
-        /// </summary>
-        public string Remainder
-        {
-            get { return _remainder; }
-        }
-
-        /// <summary>
-        /// Gets the offset of Remainder in the original Html text.
-        /// If OptionStopperNodeName is null, this will return the length of the original Html text.
-        /// </summary>
-        public int RemainderOffset
-        {
-            get { return _remainderOffset; }
-        }
-
-        /// <summary>
-        /// Gets the document's stream encoding.
-        /// </summary>
-        public Encoding StreamEncoding
-        {
-            get { return _streamencoding; }
-        }
-
-        #endregion
-
-        #region IXPathNavigable Members
-
-        /// <summary>
-        /// Creates a new XPathNavigator object for navigating this HTML document.
-        /// </summary>
-        /// <returns>An XPathNavigator object. The XPathNavigator is positioned on the root of the document.</returns>
-        public XPathNavigator CreateNavigator()
-        {
-            return new HtmlNodeNavigator(this, _documentnode);
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Gets a valid XML name.
-        /// </summary>
-        /// <param name="name">Any text.</param>
-        /// <returns>A string that is a valid XML name.</returns>
-        public static string GetXmlName(string name)
-        {
-            string xmlname = string.Empty;
-            bool nameisok = true;
-            for (int i = 0; i < name.Length; i++)
-            {
-                // names are lcase
-                // note: we are very limited here, too much?
-                if (((name[i] >= 'a') && (name[i] <= 'z')) ||
-                    ((name[i] >= '0') && (name[i] <= '9')) ||
-                    //					(name[i]==':') || (name[i]=='_') || (name[i]=='-') || (name[i]=='.')) // these are bads in fact
-                    (name[i] == '_') || (name[i] == '-') || (name[i] == '.'))
-                {
-                    xmlname += name[i];
-                }
-                else
-                {
-                    nameisok = false;
-                    byte[] bytes = Encoding.UTF8.GetBytes(new char[] {name[i]});
-                    for (int j = 0; j < bytes.Length; j++)
-                    {
-                        xmlname += bytes[j].ToString("x2");
-                    }
-                    xmlname += "_";
-                }
-            }
-            if (nameisok)
-            {
-                return xmlname;
-            }
-            return "_" + xmlname;
-        }
-
-        /// <summary>
-        /// Applies HTML encoding to a specified string.
-        /// </summary>
-        /// <param name="html">The input string to encode. May not be null.</param>
-        /// <returns>The encoded string.</returns>
-        public static string HtmlEncode(string html)
-        {
-            if (html == null)
-            {
-                throw new ArgumentNullException("html");
-            }
-            // replace & by &amp; but only once!
-            Regex rx = new Regex("&(?!(amp;)|(lt;)|(gt;)|(quot;))", RegexOptions.IgnoreCase);
-            return rx.Replace(html, "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\"", "&quot;");
-        }
-
-        /// <summary>
-        /// Determines if the specified character is considered as a whitespace character.
-        /// </summary>
-        /// <param name="c">The character to check.</param>
-        /// <returns>true if if the specified character is considered as a whitespace character.</returns>
-        public static bool IsWhiteSpace(int c)
-        {
-            if ((c == 10) || (c == 13) || (c == 32) || (c == 9))
-            {
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Creates an HTML attribute with the specified name.
-        /// </summary>
-        /// <param name="name">The name of the attribute. May not be null.</param>
-        /// <returns>The new HTML attribute.</returns>
-        public HtmlAttribute CreateAttribute(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-            HtmlAttribute att = CreateAttribute();
-            att.Name = name;
-            return att;
-        }
-
-        /// <summary>
-        /// Creates an HTML attribute with the specified name.
-        /// </summary>
-        /// <param name="name">The name of the attribute. May not be null.</param>
-        /// <param name="value">The value of the attribute.</param>
-        /// <returns>The new HTML attribute.</returns>
-        public HtmlAttribute CreateAttribute(string name, string value)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-            HtmlAttribute att = CreateAttribute(name);
-            att.Value = value;
-            return att;
-        }
-
-        /// <summary>
-        /// Creates an HTML comment node.
-        /// </summary>
-        /// <returns>The new HTML comment node.</returns>
-        public HtmlCommentNode CreateComment()
-        {
-            return (HtmlCommentNode) CreateNode(HtmlNodeType.Comment);
-        }
-
-        /// <summary>
-        /// Creates an HTML comment node with the specified comment text.
-        /// </summary>
-        /// <param name="comment">The comment text. May not be null.</param>
-        /// <returns>The new HTML comment node.</returns>
-        public HtmlCommentNode CreateComment(string comment)
-        {
-            if (comment == null)
-            {
-                throw new ArgumentNullException("comment");
-            }
-            HtmlCommentNode c = CreateComment();
-            c.Comment = comment;
-            return c;
-        }
-
-        /// <summary>
-        /// Creates an HTML element node with the specified name.
-        /// </summary>
-        /// <param name="name">The qualified name of the element. May not be null.</param>
-        /// <returns>The new HTML node.</returns>
-        public HtmlNode CreateElement(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-            HtmlNode node = CreateNode(HtmlNodeType.Element);
-            node.Name = name;
-            return node;
-        }
-
-        /// <summary>
-        /// Creates an HTML text node.
-        /// </summary>
-        /// <returns>The new HTML text node.</returns>
-        public HtmlTextNode CreateTextNode()
-        {
-            return (HtmlTextNode) CreateNode(HtmlNodeType.Text);
-        }
-
-        /// <summary>
-        /// Creates an HTML text node with the specified text.
-        /// </summary>
-        /// <param name="text">The text of the node. May not be null.</param>
-        /// <returns>The new HTML text node.</returns>
-        public HtmlTextNode CreateTextNode(string text)
-        {
-            if (text == null)
-            {
-                throw new ArgumentNullException("text");
-            }
-            HtmlTextNode t = CreateTextNode();
-            t.Text = text;
-            return t;
-        }
-
-        /// <summary>
-        /// Detects the encoding of an HTML stream.
-        /// </summary>
-        /// <param name="stream">The input stream. May not be null.</param>
-        /// <returns>The detected encoding.</returns>
-        public Encoding DetectEncoding(Stream stream)
-        {
-            if (stream == null)
-            {
-                throw new ArgumentNullException("stream");
-            }
-            return DetectEncoding(new StreamReader(stream));
-        }
-
-        /// <summary>
-        /// Detects the encoding of an HTML file.
-        /// </summary>
-        /// <param name="path">Path for the file containing the HTML document to detect. May not be null.</param>
-        /// <returns>The detected encoding.</returns>
-        public Encoding DetectEncoding(string path)
-        {
-            if (path == null)
-            {
-                throw new ArgumentNullException("path");
-            }
-            StreamReader sr = new StreamReader(path, OptionDefaultStreamEncoding);
-            Encoding encoding = DetectEncoding(sr);
-            sr.Close();
-            return encoding;
-        }
-
-        /// <summary>
-        /// Detects the encoding of an HTML text provided on a TextReader.
-        /// </summary>
-        /// <param name="reader">The TextReader used to feed the HTML. May not be null.</param>
-        /// <returns>The detected encoding.</returns>
-        public Encoding DetectEncoding(TextReader reader)
-        {
-            if (reader == null)
-            {
-                throw new ArgumentNullException("reader");
-            }
-            _onlyDetectEncoding = true;
-            if (OptionCheckSyntax)
-            {
-                _openednodes = new Hashtable();
-            }
-            else
-            {
-                _openednodes = null;
-            }
-
-            if (OptionUseIdAttribute)
-            {
-                _nodesid = new Hashtable();
-            }
-            else
-            {
-                _nodesid = null;
-            }
-
-            StreamReader sr = reader as StreamReader;
-            if (sr != null)
-            {
-                _streamencoding = sr.CurrentEncoding;
-            }
-            else
-            {
-                _streamencoding = null;
-            }
-            _declaredencoding = null;
-
-            _text = reader.ReadToEnd();
-            _documentnode = CreateNode(HtmlNodeType.Document, 0);
-
-            // this is almost a hack, but it allows us not to muck with the original parsing code
-            try
-            {
-                Parse();
-            }
-            catch (EncodingFoundException ex)
-            {
-                return ex.Encoding;
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Detects the encoding of an HTML document from a file first, and then loads the file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        public void DetectEncodingAndLoad(string path)
-        {
-            DetectEncodingAndLoad(path, true);
-        }
-
-        /// <summary>
-        /// Detects the encoding of an HTML document from a file first, and then loads the file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read. May not be null.</param>
-        /// <param name="detectEncoding">true to detect encoding, false otherwise.</param>
-        public void DetectEncodingAndLoad(string path, bool detectEncoding)
-        {
-            if (path == null)
-            {
-                throw new ArgumentNullException("path");
-            }
-            Encoding enc;
-            if (detectEncoding)
-            {
-                enc = DetectEncoding(path);
-            }
-            else
-            {
-                enc = null;
-            }
-
-            if (enc == null)
-            {
-                Load(path);
-            }
-            else
-            {
-                Load(path, enc);
-            }
-        }
-
-        /// <summary>
-        /// Detects the encoding of an HTML text.
-        /// </summary>
-        /// <param name="html">The input html text. May not be null.</param>
-        /// <returns>The detected encoding.</returns>
-        public Encoding DetectEncodingHtml(string html)
-        {
-            if (html == null)
-            {
-                throw new ArgumentNullException("html");
-            }
-            StringReader sr = new StringReader(html);
-            Encoding encoding = DetectEncoding(sr);
-            sr.Close();
-            return encoding;
-        }
-
-        /// <summary>
-        /// Gets the HTML node with the specified 'id' attribute value.
-        /// </summary>
-        /// <param name="id">The attribute id to match. May not be null.</param>
-        /// <returns>The HTML node with the matching id or null if not found.</returns>
-        public HtmlNode GetElementbyId(string id)
-        {
-            if (id == null)
-            {
-                throw new ArgumentNullException("id");
-            }
-            if (_nodesid == null)
-            {
-                throw new Exception(HtmlExceptionUseIdAttributeFalse);
-            }
-
-            return _nodesid[id.ToLower()] as HtmlNode;
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        public void Load(Stream stream)
-        {
-            Load(new StreamReader(stream, OptionDefaultStreamEncoding));
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
-        public void Load(Stream stream, bool detectEncodingFromByteOrderMarks)
-        {
-            Load(new StreamReader(stream, detectEncodingFromByteOrderMarks));
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        public void Load(Stream stream, Encoding encoding)
-        {
-            Load(new StreamReader(stream, encoding));
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
-        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks)
-        {
-            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks));
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
-        /// <param name="buffersize">The minimum buffer size.</param>
-        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
-        {
-            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks, buffersize));
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read. May not be null.</param>
-        public void Load(string path)
-        {
-            if (path == null)
-            {
-                throw new ArgumentNullException("path");
-            }
-            StreamReader sr = new StreamReader(path, OptionDefaultStreamEncoding);
-            Load(sr);
-            sr.Close();
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read. May not be null.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public void Load(string path, bool detectEncodingFromByteOrderMarks)
-        {
-            if (path == null)
-            {
-                throw new ArgumentNullException("path");
-            }
-            StreamReader sr = new StreamReader(path, detectEncodingFromByteOrderMarks);
-            Load(sr);
-            sr.Close();
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read. May not be null.</param>
-        /// <param name="encoding">The character encoding to use. May not be null.</param>
-        public void Load(string path, Encoding encoding)
-        {
-            if (path == null)
-            {
-                throw new ArgumentNullException("path");
-            }
-            if (encoding == null)
-            {
-                throw new ArgumentNullException("encoding");
-            }
-            StreamReader sr = new StreamReader(path, encoding);
-            Load(sr);
-            sr.Close();
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read. May not be null.</param>
-        /// <param name="encoding">The character encoding to use. May not be null.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks)
-        {
-            if (path == null)
-            {
-                throw new ArgumentNullException("path");
-            }
-            if (encoding == null)
-            {
-                throw new ArgumentNullException("encoding");
-            }
-            StreamReader sr = new StreamReader(path, encoding, detectEncodingFromByteOrderMarks);
-            Load(sr);
-            sr.Close();
-        }
-
-        /// <summary>
-        /// Loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read. May not be null.</param>
-        /// <param name="encoding">The character encoding to use. May not be null.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        /// <param name="buffersize">The minimum buffer size.</param>
-        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
-        {
-            if (path == null)
-            {
-                throw new ArgumentNullException("path");
-            }
-            if (encoding == null)
-            {
-                throw new ArgumentNullException("encoding");
-            }
-            StreamReader sr = new StreamReader(path, encoding, detectEncodingFromByteOrderMarks, buffersize);
-            Load(sr);
-            sr.Close();
-        }
-
-        /// <summary>
-        /// Loads the HTML document from the specified TextReader.
-        /// </summary>
-        /// <param name="reader">The TextReader used to feed the HTML data into the document. May not be null.</param>
-        public void Load(TextReader reader)
-        {
-            // all Load methods pass down to this one
-            if (reader == null)
-            {
-                throw new ArgumentNullException("reader");
-            }
-
-            _onlyDetectEncoding = false;
-
-            if (OptionCheckSyntax)
-            {
-                _openednodes = new Hashtable();
-            }
-            else
-            {
-                _openednodes = null;
-            }
-
-            if (OptionUseIdAttribute)
-            {
-                _nodesid = new Hashtable();
-            }
-            else
-            {
-                _nodesid = null;
-            }
-
-            StreamReader sr = reader as StreamReader;
-            if (sr != null)
-            {
-                try
-                {
-                    // trigger bom read if needed
-                    sr.Peek();
-                }
-                    // ReSharper disable EmptyGeneralCatchClause
-                catch (Exception)
-                    // ReSharper restore EmptyGeneralCatchClause
-                {
-                    // void on purpose
-                }
-                _streamencoding = sr.CurrentEncoding;
-            }
-            else
-            {
-                _streamencoding = null;
-            }
-            _declaredencoding = null;
-
-            _text = reader.ReadToEnd();
-            _documentnode = CreateNode(HtmlNodeType.Document, 0);
-            Parse();
-
-            if (OptionCheckSyntax)
-            {
-                foreach (HtmlNode node in _openednodes.Values)
-                {
-                    if (!node._starttag) // already reported
-                    {
-                        continue;
-                    }
-
-                    string html;
-                    if (OptionExtractErrorSourceText)
-                    {
-                        html = node.OuterHtml;
-                        if (html.Length > OptionExtractErrorSourceTextMaxLength)
-                        {
-                            html = html.Substring(0, OptionExtractErrorSourceTextMaxLength);
-                        }
-                    }
-                    else
-                    {
-                        html = string.Empty;
-                    }
-                    AddError(
-                        HtmlParseErrorCode.TagNotClosed,
-                        node._line, node._lineposition,
-                        node._streamposition, html,
-                        "End tag </" + node.Name + "> was not found");
-                }
-
-                // we don't need this anymore
-                _openednodes.Clear();
-            }
-        }
-
-        /// <summary>
-        /// Loads the HTML document from the specified string.
-        /// </summary>
-        /// <param name="html">String containing the HTML document to load. May not be null.</param>
-        public void LoadHtml(string html)
-        {
-            if (html == null)
-            {
-                throw new ArgumentNullException("html");
-            }
-            StringReader sr = new StringReader(html);
-            Load(sr);
-            sr.Close();
-        }
-
-        /// <summary>
-        /// Saves the HTML document to the specified stream.
-        /// </summary>
-        /// <param name="outStream">The stream to which you want to save.</param>
-        public void Save(Stream outStream)
-        {
-            StreamWriter sw = new StreamWriter(outStream, GetOutEncoding());
-            Save(sw);
-        }
-
-        /// <summary>
-        /// Saves the HTML document to the specified stream.
-        /// </summary>
-        /// <param name="outStream">The stream to which you want to save. May not be null.</param>
-        /// <param name="encoding">The character encoding to use. May not be null.</param>
-        public void Save(Stream outStream, Encoding encoding)
-        {
-            if (outStream == null)
-            {
-                throw new ArgumentNullException("outStream");
-            }
-            if (encoding == null)
-            {
-                throw new ArgumentNullException("encoding");
-            }
-            StreamWriter sw = new StreamWriter(outStream, encoding);
-            Save(sw);
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified file.
-        /// </summary>
-        /// <param name="filename">The location of the file where you want to save the document.</param>
-        public void Save(string filename)
-        {
-            StreamWriter sw = new StreamWriter(filename, false, GetOutEncoding());
-            Save(sw);
-            sw.Close();
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified file.
-        /// </summary>
-        /// <param name="filename">The location of the file where you want to save the document. May not be null.</param>
-        /// <param name="encoding">The character encoding to use. May not be null.</param>
-        public void Save(string filename, Encoding encoding)
-        {
-            if (filename == null)
-            {
-                throw new ArgumentNullException("filename");
-            }
-            if (encoding == null)
-            {
-                throw new ArgumentNullException("encoding");
-            }
-            StreamWriter sw = new StreamWriter(filename, false, encoding);
-            Save(sw);
-            sw.Close();
-        }
-
-        /// <summary>
-        /// Saves the HTML document to the specified StreamWriter.
-        /// </summary>
-        /// <param name="writer">The StreamWriter to which you want to save.</param>
-        public void Save(StreamWriter writer)
-        {
-            Save((TextWriter) writer);
-        }
-
-        /// <summary>
-        /// Saves the HTML document to the specified TextWriter.
-        /// </summary>
-        /// <param name="writer">The TextWriter to which you want to save. May not be null.</param>
-        public void Save(TextWriter writer)
-        {
-            if (writer == null)
-            {
-                throw new ArgumentNullException("writer");
-            }
-            DocumentNode.WriteTo(writer);
-        }
-
-        /// <summary>
-        /// Saves the HTML document to the specified XmlWriter.
-        /// </summary>
-        /// <param name="writer">The XmlWriter to which you want to save.</param>
-        public void Save(XmlWriter writer)
-        {
-            DocumentNode.WriteTo(writer);
-            writer.Flush();
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal HtmlAttribute CreateAttribute()
-        {
-            return new HtmlAttribute(this);
-        }
-
-        internal HtmlNode CreateNode(HtmlNodeType type)
-        {
-            return CreateNode(type, -1);
-        }
-
-        internal HtmlNode CreateNode(HtmlNodeType type, int index)
-        {
-            switch (type)
-            {
-                case HtmlNodeType.Comment:
-                    return new HtmlCommentNode(this, index);
-
-                case HtmlNodeType.Text:
-                    return new HtmlTextNode(this, index);
-
-                default:
-                    return new HtmlNode(type, this, index);
-            }
-        }
-
-        internal Encoding GetOutEncoding()
-        {
-            // when unspecified, use the stream encoding first
-            if (_declaredencoding != null)
-            {
-                return _declaredencoding;
-            }
-            else
-            {
-                if (_streamencoding != null)
-                {
-                    return _streamencoding;
-                }
-            }
-            return OptionDefaultStreamEncoding;
-        }
-
-        internal HtmlNode GetXmlDeclaration()
-        {
-            if (!_documentnode.HasChildNodes)
-            {
-                return null;
-            }
-
-            foreach (HtmlNode node in _documentnode._childnodes)
-            {
-                if (node.Name == "?xml") // it's ok, names are case sensitive
-                {
-                    return node;
-                }
-            }
-            return null;
-        }
-
-        internal void SetIdForNode(HtmlNode node, string id)
-        {
-            if (!OptionUseIdAttribute)
-            {
-                return;
-            }
-
-            if ((_nodesid == null) || (id == null))
-            {
-                return;
-            }
-
-            if (node == null)
-            {
-                _nodesid.Remove(id.ToLower());
-            }
-            else
-            {
-                _nodesid[id.ToLower()] = node;
-            }
-        }
-
-        internal void UpdateLastParentNode()
-        {
-            do
-            {
-                if (_lastparentnode.Closed)
-                {
-                    _lastparentnode = _lastparentnode.ParentNode;
-                }
-            } while ((_lastparentnode != null) && (_lastparentnode.Closed));
-            if (_lastparentnode == null)
-            {
-                _lastparentnode = _documentnode;
-            }
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private HtmlParseError AddError(
-            HtmlParseErrorCode code,
-            int line,
-            int linePosition,
-            int streamPosition,
-            string sourceText,
-            string reason)
-        {
-            HtmlParseError err = new HtmlParseError(code, line, linePosition, streamPosition, sourceText, reason);
-            _parseerrors.Add(err);
-            return err;
-        }
-
-        private void CloseCurrentNode()
-        {
-            if (_currentnode.Closed) // text or document are by def closed
-                return;
-
-            bool error = false;
-
-            // find last node of this kind
-            HtmlNode prev = (HtmlNode) _lastnodes[_currentnode.Name];
-            if (prev == null)
-            {
-                if (HtmlNode.IsClosedElement(_currentnode.Name))
-                {
-                    // </br> will be seen as <br>
-                    _currentnode.CloseNode(_currentnode);
-
-                    // add to parent node
-                    if (_lastparentnode != null)
-                    {
-                        HtmlNode foundNode = null;
-                        Stack futureChild = new Stack();
-                        for (HtmlNode node = _lastparentnode.LastChild; node != null; node = node.PreviousSibling)
-                        {
-                            if ((node.Name == _currentnode.Name) && (!node.HasChildNodes))
-                            {
-                                foundNode = node;
-                                break;
-                            }
-                            futureChild.Push(node);
-                        }
-                        if (foundNode != null)
-                        {
-                            HtmlNode node = null;
-                            while (futureChild.Count != 0)
-                            {
-                                node = (HtmlNode) futureChild.Pop();
-                                _lastparentnode.RemoveChild(node);
-                                foundNode.AppendChild(node);
-                            }
-                        }
-                        else
-                        {
-                            _lastparentnode.AppendChild(_currentnode);
-                        }
-                    }
-                }
-                else
-                {
-                    // node has no parent
-                    // node is not a closed node
-
-                    if (HtmlNode.CanOverlapElement(_currentnode.Name))
-                    {
-                        // this is a hack: add it as a text node
-                        HtmlNode closenode = CreateNode(HtmlNodeType.Text, _currentnode._outerstartindex);
-                        closenode._outerlength = _currentnode._outerlength;
-                        ((HtmlTextNode) closenode).Text = ((HtmlTextNode) closenode).Text.ToLower();
-                        if (_lastparentnode != null)
-                        {
-                            _lastparentnode.AppendChild(closenode);
-                        }
-                    }
-                    else
-                    {
-                        if (HtmlNode.IsEmptyElement(_currentnode.Name))
-                        {
-                            AddError(
-                                HtmlParseErrorCode.EndTagNotRequired,
-                                _currentnode._line, _currentnode._lineposition,
-                                _currentnode._streamposition, _currentnode.OuterHtml,
-                                "End tag </" + _currentnode.Name + "> is not required");
-                        }
-                        else
-                        {
-                            // node cannot overlap, node is not empty
-                            AddError(
-                                HtmlParseErrorCode.TagNotOpened,
-                                _currentnode._line, _currentnode._lineposition,
-                                _currentnode._streamposition, _currentnode.OuterHtml,
-                                "Start tag <" + _currentnode.Name + "> was not found");
-                            error = true;
-                        }
-                    }
-                }
-            }
-            else
-            {
-                if (OptionFixNestedTags)
-                {
-                    if (FindResetterNodes(prev, GetResetters(_currentnode.Name)))
-                    {
-                        AddError(
-                            HtmlParseErrorCode.EndTagInvalidHere,
-                            _currentnode._line, _currentnode._lineposition,
-                            _currentnode._streamposition, _currentnode.OuterHtml,
-                            "End tag </" + _currentnode.Name + "> invalid here");
-                        error = true;
-                    }
-                }
-
-                if (!error)
-                {
-                    _lastnodes[_currentnode.Name] = prev._prevwithsamename;
-                    prev.CloseNode(_currentnode);
-                }
-            }
-
-
-            // we close this node, get grandparent
-            if (!error)
-            {
-                if ((_lastparentnode != null) &&
-                    ((!HtmlNode.IsClosedElement(_currentnode.Name)) ||
-                     (_currentnode._starttag)))
-                {
-                    UpdateLastParentNode();
-                }
-            }
-        }
-
-        private string CurrentAttributeName()
-        {
-            return _text.Substring(_currentattribute._namestartindex, _currentattribute._namelength);
-        }
-
-        private string CurrentAttributeValue()
-        {
-            return _text.Substring(_currentattribute._valuestartindex, _currentattribute._valuelength);
-        }
-
-        private string CurrentNodeInner()
-        {
-            return _text.Substring(_currentnode._innerstartindex, _currentnode._innerlength);
-        }
-
-        private string CurrentNodeName()
-        {
-            return _text.Substring(_currentnode._namestartindex, _currentnode._namelength);
-        }
-
-        private string CurrentNodeOuter()
-        {
-            return _text.Substring(_currentnode._outerstartindex, _currentnode._outerlength);
-        }
-
-
-        private void DecrementPosition()
-        {
-            _index--;
-            if (_lineposition == 1)
-            {
-                _lineposition = _maxlineposition;
-                _line--;
-            }
-            else
-            {
-                _lineposition--;
-            }
-        }
-
-        private HtmlNode FindResetterNode(HtmlNode node, string name)
-        {
-            HtmlNode resetter = (HtmlNode) _lastnodes[name];
-            if (resetter == null)
-                return null;
-            if (resetter.Closed)
-            {
-                return null;
-            }
-            if (resetter._streamposition < node._streamposition)
-            {
-                return null;
-            }
-            return resetter;
-        }
-
-        private bool FindResetterNodes(HtmlNode node, string[] names)
-        {
-            if (names == null)
-            {
-                return false;
-            }
-            for (int i = 0; i < names.Length; i++)
-            {
-                if (FindResetterNode(node, names[i]) != null)
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        private void FixNestedTag(string name, string[] resetters)
-        {
-            if (resetters == null)
-                return;
-
-            HtmlNode prev;
-
-            // if we find a previous unclosed same name node, without a resetter node between, we must close it
-            prev = (HtmlNode) _lastnodes[name];
-            if ((prev != null) && (!prev.Closed))
-            {
-                // try to find a resetter node, if found, we do nothing
-                if (FindResetterNodes(prev, resetters))
-                {
-                    return;
-                }
-
-                // ok we need to close the prev now
-                // create a fake closer node
-                HtmlNode close = new HtmlNode(prev.NodeType, this, -1);
-                close._endnode = close;
-                prev.CloseNode(close);
-            }
-        }
-
-        private void FixNestedTags()
-        {
-            // we are only interested by start tags, not closing tags
-            if (!_currentnode._starttag)
-                return;
-
-            string name = CurrentNodeName();
-            FixNestedTag(name, GetResetters(name));
-        }
-
-        private string[] GetResetters(string name)
-        {
-            switch (name)
-            {
-                case "li":
-                    return new string[] {"ul"};
-
-                case "tr":
-                    return new string[] {"table"};
-
-                case "th":
-                case "td":
-                    return new string[] {"tr", "table"};
-
-                default:
-                    return null;
-            }
-        }
-
-        private void IncrementPosition()
-        {
-            if (_crc32 != null)
-            {
-                // REVIEW: should we add some checksum code in DecrementPosition too?
-                _crc32.AddToCRC32(_c);
-            }
-
-            _index++;
-            _maxlineposition = _lineposition;
-            if (_c == 10)
-            {
-                _lineposition = 1;
-                _line++;
-            }
-            else
-            {
-                _lineposition++;
-            }
-        }
-
-        private bool NewCheck()
-        {
-            if (_c != '<')
-            {
-                return false;
-            }
-            if (_index < _text.Length)
-            {
-                if (_text[_index] == '%')
-                {
-                    switch (_state)
-                    {
-                        case ParseState.AttributeAfterEquals:
-                            PushAttributeValueStart(_index - 1);
-                            break;
-
-                        case ParseState.BetweenAttributes:
-                            PushAttributeNameStart(_index - 1);
-                            break;
-
-                        case ParseState.WhichTag:
-                            PushNodeNameStart(true, _index - 1);
-                            _state = ParseState.Tag;
-                            break;
-                    }
-                    _oldstate = _state;
-                    _state = ParseState.ServerSideCode;
-                    return true;
-                }
-            }
-
-            if (!PushNodeEnd(_index - 1, true))
-            {
-                // stop parsing
-                _index = _text.Length;
-                return true;
-            }
-            _state = ParseState.WhichTag;
-            if ((_index - 1) <= (_text.Length - 2))
-            {
-                if (_text[_index] == '!')
-                {
-                    PushNodeStart(HtmlNodeType.Comment, _index - 1);
-                    PushNodeNameStart(true, _index);
-                    PushNodeNameEnd(_index + 1);
-                    _state = ParseState.Comment;
-                    if (_index < (_text.Length - 2))
-                    {
-                        if ((_text[_index + 1] == '-') &&
-                            (_text[_index + 2] == '-'))
-                        {
-                            _fullcomment = true;
-                        }
-                        else
-                        {
-                            _fullcomment = false;
-                        }
-                    }
-                    return true;
-                }
-            }
-            PushNodeStart(HtmlNodeType.Element, _index - 1);
-            return true;
-        }
-
-        private void Parse()
-        {
-            int lastquote = 0;
-            if (OptionComputeChecksum)
-            {
-                _crc32 = new Crc32();
-            }
-
-            _lastnodes = new Hashtable();
-            _c = 0;
-            _fullcomment = false;
-            _parseerrors = new List<HtmlParseError>();
-            _line = 1;
-            _lineposition = 1;
-            _maxlineposition = 1;
-
-            _state = ParseState.Text;
-            _oldstate = _state;
-            _documentnode._innerlength = _text.Length;
-            _documentnode._outerlength = _text.Length;
-            _remainderOffset = _text.Length;
-
-            _lastparentnode = _documentnode;
-            _currentnode = CreateNode(HtmlNodeType.Text, 0);
-            _currentattribute = null;
-
-            _index = 0;
-            PushNodeStart(HtmlNodeType.Text, 0);
-            while (_index < _text.Length)
-            {
-                _c = _text[_index];
-                IncrementPosition();
-
-                switch (_state)
-                {
-                    case ParseState.Text:
-                        if (NewCheck())
-                            continue;
-                        break;
-
-                    case ParseState.WhichTag:
-                        if (NewCheck())
-                            continue;
-                        if (_c == '/')
-                        {
-                            PushNodeNameStart(false, _index);
-                        }
-                        else
-                        {
-                            PushNodeNameStart(true, _index - 1);
-                            DecrementPosition();
-                        }
-                        _state = ParseState.Tag;
-                        break;
-
-                    case ParseState.Tag:
-                        if (NewCheck())
-                            continue;
-                        if (IsWhiteSpace(_c))
-                        {
-                            PushNodeNameEnd(_index - 1);
-                            if (_state != ParseState.Tag)
-                                continue;
-                            _state = ParseState.BetweenAttributes;
-                            continue;
-                        }
-                        if (_c == '/')
-                        {
-                            PushNodeNameEnd(_index - 1);
-                            if (_state != ParseState.Tag)
-                                continue;
-                            _state = ParseState.EmptyTag;
-                            continue;
-                        }
-                        if (_c == '>')
-                        {
-                            PushNodeNameEnd(_index - 1);
-                            if (_state != ParseState.Tag)
-                                continue;
-                            if (!PushNodeEnd(_index, false))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-                            if (_state != ParseState.Tag)
-                                continue;
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                        }
-                        break;
-
-                    case ParseState.BetweenAttributes:
-                        if (NewCheck())
-                            continue;
-
-                        if (IsWhiteSpace(_c))
-                            continue;
-
-                        if ((_c == '/') || (_c == '?'))
-                        {
-                            _state = ParseState.EmptyTag;
-                            continue;
-                        }
-
-                        if (_c == '>')
-                        {
-                            if (!PushNodeEnd(_index, false))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-
-                            if (_state != ParseState.BetweenAttributes)
-                                continue;
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                            continue;
-                        }
-
-                        PushAttributeNameStart(_index - 1);
-                        _state = ParseState.AttributeName;
-                        break;
-
-                    case ParseState.EmptyTag:
-                        if (NewCheck())
-                            continue;
-
-                        if (_c == '>')
-                        {
-                            if (!PushNodeEnd(_index, true))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-
-                            if (_state != ParseState.EmptyTag)
-                                continue;
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                            continue;
-                        }
-                        _state = ParseState.BetweenAttributes;
-                        break;
-
-                    case ParseState.AttributeName:
-                        if (NewCheck())
-                            continue;
-
-                        if (IsWhiteSpace(_c))
-                        {
-                            PushAttributeNameEnd(_index - 1);
-                            _state = ParseState.AttributeBeforeEquals;
-                            continue;
-                        }
-                        if (_c == '=')
-                        {
-                            PushAttributeNameEnd(_index - 1);
-                            _state = ParseState.AttributeAfterEquals;
-                            continue;
-                        }
-                        if (_c == '>')
-                        {
-                            PushAttributeNameEnd(_index - 1);
-                            if (!PushNodeEnd(_index, false))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-                            if (_state != ParseState.AttributeName)
-                                continue;
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                            continue;
-                        }
-                        break;
-
-                    case ParseState.AttributeBeforeEquals:
-                        if (NewCheck())
-                            continue;
-
-                        if (IsWhiteSpace(_c))
-                            continue;
-                        if (_c == '>')
-                        {
-                            if (!PushNodeEnd(_index, false))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-                            if (_state != ParseState.AttributeBeforeEquals)
-                                continue;
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                            continue;
-                        }
-                        if (_c == '=')
-                        {
-                            _state = ParseState.AttributeAfterEquals;
-                            continue;
-                        }
-                        // no equals, no whitespace, it's a new attrribute starting
-                        _state = ParseState.BetweenAttributes;
-                        DecrementPosition();
-                        break;
-
-                    case ParseState.AttributeAfterEquals:
-                        if (NewCheck())
-                            continue;
-
-                        if (IsWhiteSpace(_c))
-                            continue;
-
-                        if ((_c == '\'') || (_c == '"'))
-                        {
-                            _state = ParseState.QuotedAttributeValue;
-                            PushAttributeValueStart(_index, _c);
-                            lastquote = _c;
-                            continue;
-                        }
-                        if (_c == '>')
-                        {
-                            if (!PushNodeEnd(_index, false))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-                            if (_state != ParseState.AttributeAfterEquals)
-                                continue;
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                            continue;
-                        }
-                        PushAttributeValueStart(_index - 1);
-                        _state = ParseState.AttributeValue;
-                        break;
-
-                    case ParseState.AttributeValue:
-                        if (NewCheck())
-                            continue;
-
-                        if (IsWhiteSpace(_c))
-                        {
-                            PushAttributeValueEnd(_index - 1);
-                            _state = ParseState.BetweenAttributes;
-                            continue;
-                        }
-
-                        if (_c == '>')
-                        {
-                            PushAttributeValueEnd(_index - 1);
-                            if (!PushNodeEnd(_index, false))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-                            if (_state != ParseState.AttributeValue)
-                                continue;
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                            continue;
-                        }
-                        break;
-
-                    case ParseState.QuotedAttributeValue:
-                        if (_c == lastquote)
-                        {
-                            PushAttributeValueEnd(_index - 1);
-                            _state = ParseState.BetweenAttributes;
-                            continue;
-                        }
-                        if (_c == '<')
-                        {
-                            if (_index < _text.Length)
-                            {
-                                if (_text[_index] == '%')
-                                {
-                                    _oldstate = _state;
-                                    _state = ParseState.ServerSideCode;
-                                    continue;
-                                }
-                            }
-                        }
-                        break;
-
-                    case ParseState.Comment:
-                        if (_c == '>')
-                        {
-                            if (_fullcomment)
-                            {
-                                if ((_text[_index - 2] != '-') ||
-                                    (_text[_index - 3] != '-'))
-                                {
-                                    continue;
-                                }
-                            }
-                            if (!PushNodeEnd(_index, false))
-                            {
-                                // stop parsing
-                                _index = _text.Length;
-                                break;
-                            }
-                            _state = ParseState.Text;
-                            PushNodeStart(HtmlNodeType.Text, _index);
-                            continue;
-                        }
-                        break;
-
-                    case ParseState.ServerSideCode:
-                        if (_c == '%')
-                        {
-                            if (_index < _text.Length)
-                            {
-                                if (_text[_index] == '>')
-                                {
-                                    switch (_oldstate)
-                                    {
-                                        case ParseState.AttributeAfterEquals:
-                                            _state = ParseState.AttributeValue;
-                                            break;
-
-                                        case ParseState.BetweenAttributes:
-                                            PushAttributeNameEnd(_index + 1);
-                                            _state = ParseState.BetweenAttributes;
-                                            break;
-
-                                        default:
-                                            _state = _oldstate;
-                                            break;
-                                    }
-                                    IncrementPosition();
-                                }
-                            }
-                        }
-                        break;
-
-                    case ParseState.PcData:
-                        // look for </tag + 1 char
-
-                        // check buffer end
-                        if ((_currentnode._namelength + 3) <= (_text.Length - (_index - 1)))
-                        {
-                            if (string.Compare(_text.Substring(_index - 1, _currentnode._namelength + 2),
-                                               "</" + _currentnode.Name, true) == 0)
-                            {
-                                int c = _text[_index - 1 + 2 + _currentnode.Name.Length];
-                                if ((c == '>') || (IsWhiteSpace(c)))
-                                {
-                                    // add the script as a text node
-                                    HtmlNode script = CreateNode(HtmlNodeType.Text,
-                                                                 _currentnode._outerstartindex +
-                                                                 _currentnode._outerlength);
-                                    script._outerlength = _index - 1 - script._outerstartindex;
-                                    _currentnode.AppendChild(script);
-
-
-                                    PushNodeStart(HtmlNodeType.Element, _index - 1);
-                                    PushNodeNameStart(false, _index - 1 + 2);
-                                    _state = ParseState.Tag;
-                                    IncrementPosition();
-                                }
-                            }
-                        }
-                        break;
-                }
-            }
-
-            // finish the current work
-            if (_currentnode._namestartindex > 0)
-            {
-                PushNodeNameEnd(_index);
-            }
-            PushNodeEnd(_index, false);
-
-            // we don't need this anymore
-            _lastnodes.Clear();
-        }
-
-        private void PushAttributeNameEnd(int index)
-        {
-            _currentattribute._namelength = index - _currentattribute._namestartindex;
-            _currentnode.Attributes.Append(_currentattribute);
-        }
-
-        private void PushAttributeNameStart(int index)
-        {
-            _currentattribute = CreateAttribute();
-            _currentattribute._namestartindex = index;
-            _currentattribute.Line = _line;
-            _currentattribute._lineposition = _lineposition;
-            _currentattribute._streamposition = index;
-        }
-
-        private void PushAttributeValueEnd(int index)
-        {
-            _currentattribute._valuelength = index - _currentattribute._valuestartindex;
-        }
-
-        private void PushAttributeValueStart(int index)
-        {
-            PushAttributeValueStart(index, 0);
-        }
-
-        private void PushAttributeValueStart(int index, int quote)
-        {
-            _currentattribute._valuestartindex = index;
-            if (quote == '\'')
-                _currentattribute.QuoteType = AttributeValueQuote.SingleQuote;
-        }
-
-        private bool PushNodeEnd(int index, bool close)
-        {
-            _currentnode._outerlength = index - _currentnode._outerstartindex;
-
-            if ((_currentnode._nodetype == HtmlNodeType.Text) ||
-                (_currentnode._nodetype == HtmlNodeType.Comment))
-            {
-                // forget about void nodes
-                if (_currentnode._outerlength > 0)
-                {
-                    _currentnode._innerlength = _currentnode._outerlength;
-                    _currentnode._innerstartindex = _currentnode._outerstartindex;
-                    if (_lastparentnode != null)
-                    {
-                        _lastparentnode.AppendChild(_currentnode);
-                    }
-                }
-            }
-            else
-            {
-                if ((_currentnode._starttag) && (_lastparentnode != _currentnode))
-                {
-                    // add to parent node
-                    if (_lastparentnode != null)
-                    {
-                        _lastparentnode.AppendChild(_currentnode);
-                    }
-
-                    ReadDocumentEncoding(_currentnode);
-
-                    // remember last node of this kind
-                    HtmlNode prev = (HtmlNode) _lastnodes[_currentnode.Name];
-                    _currentnode._prevwithsamename = prev;
-                    _lastnodes[_currentnode.Name] = _currentnode;
-
-                    // change parent?
-                    if ((_currentnode.NodeType == HtmlNodeType.Document) ||
-                        (_currentnode.NodeType == HtmlNodeType.Element))
-                    {
-                        _lastparentnode = _currentnode;
-                    }
-
-                    if (HtmlNode.IsCDataElement(CurrentNodeName()))
-                    {
-                        _state = ParseState.PcData;
-                        return true;
-                    }
-
-                    if ((HtmlNode.IsClosedElement(_currentnode.Name)) ||
-                        (HtmlNode.IsEmptyElement(_currentnode.Name)))
-                    {
-                        close = true;
-                    }
-                }
-            }
-
-            if ((close) || (!_currentnode._starttag))
-            {
-                if ((OptionStopperNodeName != null) && (_remainder == null) &&
-                    (string.Compare(_currentnode.Name, OptionStopperNodeName, true) == 0))
-                {
-                    _remainderOffset = index;
-                    _remainder = _text.Substring(_remainderOffset);
-                    CloseCurrentNode();
-                    return false; // stop parsing
-                }
-                CloseCurrentNode();
-            }
-            return true;
-        }
-
-        private void PushNodeNameEnd(int index)
-        {
-            _currentnode._namelength = index - _currentnode._namestartindex;
-            if (OptionFixNestedTags)
-            {
-                FixNestedTags();
-            }
-        }
-
-        private void PushNodeNameStart(bool starttag, int index)
-        {
-            _currentnode._starttag = starttag;
-            _currentnode._namestartindex = index;
-        }
-
-        private void PushNodeStart(HtmlNodeType type, int index)
-        {
-            _currentnode = CreateNode(type, index);
-            _currentnode._line = _line;
-            _currentnode._lineposition = _lineposition;
-            if (type == HtmlNodeType.Element)
-            {
-                _currentnode._lineposition--;
-            }
-            _currentnode._streamposition = index;
-        }
-
-        private void ReadDocumentEncoding(HtmlNode node)
-        {
-            if (!OptionReadEncoding)
-                return;
-            // format is 
-            // <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
-
-            // when we append a child, we are in node end, so attributes are already populated
-            if (node._namelength == 4) // quick check, avoids string alloc
-            {
-                if (node.Name == "meta") // all nodes names are lowercase
-                {
-                    HtmlAttribute att = node.Attributes["http-equiv"];
-                    if (att != null)
-                    {
-                        if (string.Compare(att.Value, "content-type", true) == 0)
-                        {
-                            HtmlAttribute content = node.Attributes["content"];
-                            if (content != null)
-                            {
-                                string charset = NameValuePairList.GetNameValuePairsValue(content.Value, "charset");
-                                if (charset != null && (charset = charset.Trim()).Length > 0)
-                                {
-                                    _declaredencoding = Encoding.GetEncoding(charset.Trim());
-                                    if (_onlyDetectEncoding)
-                                    {
-                                        throw new EncodingFoundException(_declaredencoding);
-                                    }
-
-                                    if (_streamencoding != null)
-                                    {
-                                        if (_declaredencoding.WindowsCodePage != _streamencoding.WindowsCodePage)
-                                        {
-                                            AddError(
-                                                HtmlParseErrorCode.CharsetMismatch,
-                                                _line, _lineposition,
-                                                _index, node.OuterHtml,
-                                                "Encoding mismatch between StreamEncoding: " +
-                                                _streamencoding.WebName + " and DeclaredEncoding: " +
-                                                _declaredencoding.WebName);
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        #endregion
-
-        #region Nested type: ParseState
-
-        private enum ParseState
-        {
-            Text,
-            WhichTag,
-            Tag,
-            BetweenAttributes,
-            EmptyTag,
-            AttributeName,
-            AttributeBeforeEquals,
-            AttributeAfterEquals,
-            AttributeValue,
-            Comment,
-            QuotedAttributeValue,
-            ServerSideCode,
-            PcData
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Xml;
+using System.Xml.XPath;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a complete HTML document.
+    /// </summary>
+    public class HtmlDocument : IXPathNavigable
+    {
+        #region Fields
+
+        private int _c;
+        private Crc32 _crc32;
+        private HtmlAttribute _currentattribute;
+        private HtmlNode _currentnode;
+        private Encoding _declaredencoding;
+        private HtmlNode _documentnode;
+        private bool _fullcomment;
+        private int _index;
+        internal Hashtable _lastnodes = new Hashtable();
+        private HtmlNode _lastparentnode;
+        private int _line;
+        private int _lineposition, _maxlineposition;
+        internal Hashtable _nodesid;
+        private ParseState _oldstate;
+        private bool _onlyDetectEncoding;
+        internal Hashtable _openednodes;
+        private List<HtmlParseError> _parseerrors = new List<HtmlParseError>();
+        private string _remainder;
+        private int _remainderOffset;
+        private ParseState _state;
+        private Encoding _streamencoding;
+        internal string _text;
+
+        // public props
+
+        /// <summary>
+        /// Adds Debugging attributes to node. Default is false.
+        /// </summary>
+        public bool OptionAddDebuggingAttributes;
+
+        /// <summary>
+        /// Defines if closing for non closed nodes must be done at the end or directly in the document.
+        /// Setting this to true can actually change how browsers render the page. Default is false.
+        /// </summary>
+        public bool OptionAutoCloseOnEnd; // close errors at the end
+
+        /// <summary>
+        /// Defines if non closed nodes will be checked at the end of parsing. Default is true.
+        /// </summary>
+        public bool OptionCheckSyntax = true;
+
+        /// <summary>
+        /// Defines if a checksum must be computed for the document while parsing. Default is false.
+        /// </summary>
+        public bool OptionComputeChecksum;
+
+        /// <summary>
+        /// Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+        /// </summary>
+        public Encoding OptionDefaultStreamEncoding = Encoding.Default;
+
+        /// <summary>
+        /// Defines if source text must be extracted while parsing errors.
+        /// If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+        /// Default is false.
+        /// </summary>
+        public bool OptionExtractErrorSourceText;
+
+        // turning this on can dramatically slow performance if a lot of errors are detected
+
+        /// <summary>
+        /// Defines the maximum length of source text or parse errors. Default is 100.
+        /// </summary>
+        public int OptionExtractErrorSourceTextMaxLength = 100;
+
+        /// <summary>
+        /// Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+        /// </summary>
+        public bool OptionFixNestedTags; // fix li, tr, th, td tags
+
+        /// <summary>
+        /// Defines if output must conform to XML, instead of HTML.
+        /// </summary>
+        public bool OptionOutputAsXml;
+
+        /// <summary>
+        /// Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+        /// </summary>
+        public bool OptionOutputOptimizeAttributeValues;
+
+        /// <summary>
+        /// Defines if name must be output with it's original case. Useful for asp.net tags and attributes
+        /// </summary>
+        public bool OptionOutputOriginalCase;
+
+        /// <summary>
+        /// Defines if name must be output in uppercase. Default is false.
+        /// </summary>
+        public bool OptionOutputUpperCase;
+
+        /// <summary>
+        /// Defines if declared encoding must be read from the document.
+        /// Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+        /// Default is true.
+        /// </summary>
+        public bool OptionReadEncoding = true;
+
+        /// <summary>
+        /// Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+        /// </summary>
+        public string OptionStopperNodeName;
+
+        /// <summary>
+        /// Defines if the 'id' attribute must be specifically used. Default is true.
+        /// </summary>
+        public bool OptionUseIdAttribute = true;
+
+        /// <summary>
+        /// Defines if empty nodes must be written as closed during output. Default is false.
+        /// </summary>
+        public bool OptionWriteEmptyNodes;
+
+        #endregion
+
+        #region Static Members
+
+        internal static readonly string HtmlExceptionRefNotChild = "Reference node must be a child of this node";
+
+        internal static readonly string HtmlExceptionUseIdAttributeFalse =
+            "You need to set UseIdAttribute property to true to enable this feature";
+
+        #endregion
+
+        #region Constructors
+
+        /// <summary>
+        /// Creates an instance of an HTML document.
+        /// </summary>
+        public HtmlDocument()
+        {
+            _documentnode = CreateNode(HtmlNodeType.Document, 0);
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+        /// </summary>
+        public int CheckSum
+        {
+            get
+            {
+                if (_crc32 == null)
+                {
+                    return 0;
+                }
+                else
+                {
+                    return (int) _crc32.CheckSum;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets the document's declared encoding.
+        /// Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+        /// </summary>
+        public Encoding DeclaredEncoding
+        {
+            get { return _declaredencoding; }
+        }
+
+        /// <summary>
+        /// Gets the root node of the document.
+        /// </summary>
+        public HtmlNode DocumentNode
+        {
+            get { return _documentnode; }
+        }
+
+        /// <summary>
+        /// Gets the document's output encoding.
+        /// </summary>
+        public Encoding Encoding
+        {
+            get { return GetOutEncoding(); }
+        }
+
+        /// <summary>
+        /// Gets a list of parse errors found in the document.
+        /// </summary>
+        public IEnumerable<HtmlParseError> ParseErrors
+        {
+            get { return _parseerrors; }
+        }
+
+        /// <summary>
+        /// Gets the remaining text.
+        /// Will always be null if OptionStopperNodeName is null.
+        /// </summary>
+        public string Remainder
+        {
+            get { return _remainder; }
+        }
+
+        /// <summary>
+        /// Gets the offset of Remainder in the original Html text.
+        /// If OptionStopperNodeName is null, this will return the length of the original Html text.
+        /// </summary>
+        public int RemainderOffset
+        {
+            get { return _remainderOffset; }
+        }
+
+        /// <summary>
+        /// Gets the document's stream encoding.
+        /// </summary>
+        public Encoding StreamEncoding
+        {
+            get { return _streamencoding; }
+        }
+
+        #endregion
+
+        #region IXPathNavigable Members
+
+        /// <summary>
+        /// Creates a new XPathNavigator object for navigating this HTML document.
+        /// </summary>
+        /// <returns>An XPathNavigator object. The XPathNavigator is positioned on the root of the document.</returns>
+        public XPathNavigator CreateNavigator()
+        {
+            return new HtmlNodeNavigator(this, _documentnode);
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Gets a valid XML name.
+        /// </summary>
+        /// <param name="name">Any text.</param>
+        /// <returns>A string that is a valid XML name.</returns>
+        public static string GetXmlName(string name)
+        {
+            string xmlname = string.Empty;
+            bool nameisok = true;
+            for (int i = 0; i < name.Length; i++)
+            {
+                // names are lcase
+                // note: we are very limited here, too much?
+                if (((name[i] >= 'a') && (name[i] <= 'z')) ||
+                    ((name[i] >= '0') && (name[i] <= '9')) ||
+                    //					(name[i]==':') || (name[i]=='_') || (name[i]=='-') || (name[i]=='.')) // these are bads in fact
+                    (name[i] == '_') || (name[i] == '-') || (name[i] == '.'))
+                {
+                    xmlname += name[i];
+                }
+                else
+                {
+                    nameisok = false;
+                    byte[] bytes = Encoding.UTF8.GetBytes(new char[] {name[i]});
+                    for (int j = 0; j < bytes.Length; j++)
+                    {
+                        xmlname += bytes[j].ToString("x2");
+                    }
+                    xmlname += "_";
+                }
+            }
+            if (nameisok)
+            {
+                return xmlname;
+            }
+            return "_" + xmlname;
+        }
+
+        /// <summary>
+        /// Applies HTML encoding to a specified string.
+        /// </summary>
+        /// <param name="html">The input string to encode. May not be null.</param>
+        /// <returns>The encoded string.</returns>
+        public static string HtmlEncode(string html)
+        {
+            if (html == null)
+            {
+                throw new ArgumentNullException("html");
+            }
+            // replace & by &amp; but only once!
+            Regex rx = new Regex("&(?!(amp;)|(lt;)|(gt;)|(quot;))", RegexOptions.IgnoreCase);
+            return rx.Replace(html, "&amp;").Replace("<", "&lt;").Replace(">", "&gt;").Replace("\"", "&quot;");
+        }
+
+        /// <summary>
+        /// Determines if the specified character is considered as a whitespace character.
+        /// </summary>
+        /// <param name="c">The character to check.</param>
+        /// <returns>true if if the specified character is considered as a whitespace character.</returns>
+        public static bool IsWhiteSpace(int c)
+        {
+            if ((c == 10) || (c == 13) || (c == 32) || (c == 9))
+            {
+                return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// Creates an HTML attribute with the specified name.
+        /// </summary>
+        /// <param name="name">The name of the attribute. May not be null.</param>
+        /// <returns>The new HTML attribute.</returns>
+        public HtmlAttribute CreateAttribute(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+            HtmlAttribute att = CreateAttribute();
+            att.Name = name;
+            return att;
+        }
+
+        /// <summary>
+        /// Creates an HTML attribute with the specified name.
+        /// </summary>
+        /// <param name="name">The name of the attribute. May not be null.</param>
+        /// <param name="value">The value of the attribute.</param>
+        /// <returns>The new HTML attribute.</returns>
+        public HtmlAttribute CreateAttribute(string name, string value)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+            HtmlAttribute att = CreateAttribute(name);
+            att.Value = value;
+            return att;
+        }
+
+        /// <summary>
+        /// Creates an HTML comment node.
+        /// </summary>
+        /// <returns>The new HTML comment node.</returns>
+        public HtmlCommentNode CreateComment()
+        {
+            return (HtmlCommentNode) CreateNode(HtmlNodeType.Comment);
+        }
+
+        /// <summary>
+        /// Creates an HTML comment node with the specified comment text.
+        /// </summary>
+        /// <param name="comment">The comment text. May not be null.</param>
+        /// <returns>The new HTML comment node.</returns>
+        public HtmlCommentNode CreateComment(string comment)
+        {
+            if (comment == null)
+            {
+                throw new ArgumentNullException("comment");
+            }
+            HtmlCommentNode c = CreateComment();
+            c.Comment = comment;
+            return c;
+        }
+
+        /// <summary>
+        /// Creates an HTML element node with the specified name.
+        /// </summary>
+        /// <param name="name">The qualified name of the element. May not be null.</param>
+        /// <returns>The new HTML node.</returns>
+        public HtmlNode CreateElement(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+            HtmlNode node = CreateNode(HtmlNodeType.Element);
+            node.Name = name;
+            return node;
+        }
+
+        /// <summary>
+        /// Creates an HTML text node.
+        /// </summary>
+        /// <returns>The new HTML text node.</returns>
+        public HtmlTextNode CreateTextNode()
+        {
+            return (HtmlTextNode) CreateNode(HtmlNodeType.Text);
+        }
+
+        /// <summary>
+        /// Creates an HTML text node with the specified text.
+        /// </summary>
+        /// <param name="text">The text of the node. May not be null.</param>
+        /// <returns>The new HTML text node.</returns>
+        public HtmlTextNode CreateTextNode(string text)
+        {
+            if (text == null)
+            {
+                throw new ArgumentNullException("text");
+            }
+            HtmlTextNode t = CreateTextNode();
+            t.Text = text;
+            return t;
+        }
+
+        /// <summary>
+        /// Detects the encoding of an HTML stream.
+        /// </summary>
+        /// <param name="stream">The input stream. May not be null.</param>
+        /// <returns>The detected encoding.</returns>
+        public Encoding DetectEncoding(Stream stream)
+        {
+            if (stream == null)
+            {
+                throw new ArgumentNullException("stream");
+            }
+            return DetectEncoding(new StreamReader(stream));
+        }
+
+        /// <summary>
+        /// Detects the encoding of an HTML file.
+        /// </summary>
+        /// <param name="path">Path for the file containing the HTML document to detect. May not be null.</param>
+        /// <returns>The detected encoding.</returns>
+        public Encoding DetectEncoding(string path)
+        {
+            if (path == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+            StreamReader sr = new StreamReader(path, OptionDefaultStreamEncoding);
+            Encoding encoding = DetectEncoding(sr);
+            sr.Close();
+            return encoding;
+        }
+
+        /// <summary>
+        /// Detects the encoding of an HTML text provided on a TextReader.
+        /// </summary>
+        /// <param name="reader">The TextReader used to feed the HTML. May not be null.</param>
+        /// <returns>The detected encoding.</returns>
+        public Encoding DetectEncoding(TextReader reader)
+        {
+            if (reader == null)
+            {
+                throw new ArgumentNullException("reader");
+            }
+            _onlyDetectEncoding = true;
+            if (OptionCheckSyntax)
+            {
+                _openednodes = new Hashtable();
+            }
+            else
+            {
+                _openednodes = null;
+            }
+
+            if (OptionUseIdAttribute)
+            {
+                _nodesid = new Hashtable();
+            }
+            else
+            {
+                _nodesid = null;
+            }
+
+            StreamReader sr = reader as StreamReader;
+            if (sr != null)
+            {
+                _streamencoding = sr.CurrentEncoding;
+            }
+            else
+            {
+                _streamencoding = null;
+            }
+            _declaredencoding = null;
+
+            _text = reader.ReadToEnd();
+            _documentnode = CreateNode(HtmlNodeType.Document, 0);
+
+            // this is almost a hack, but it allows us not to muck with the original parsing code
+            try
+            {
+                Parse();
+            }
+            catch (EncodingFoundException ex)
+            {
+                return ex.Encoding;
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Detects the encoding of an HTML document from a file first, and then loads the file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        public void DetectEncodingAndLoad(string path)
+        {
+            DetectEncodingAndLoad(path, true);
+        }
+
+        /// <summary>
+        /// Detects the encoding of an HTML document from a file first, and then loads the file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read. May not be null.</param>
+        /// <param name="detectEncoding">true to detect encoding, false otherwise.</param>
+        public void DetectEncodingAndLoad(string path, bool detectEncoding)
+        {
+            if (path == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+            Encoding enc;
+            if (detectEncoding)
+            {
+                enc = DetectEncoding(path);
+            }
+            else
+            {
+                enc = null;
+            }
+
+            if (enc == null)
+            {
+                Load(path);
+            }
+            else
+            {
+                Load(path, enc);
+            }
+        }
+
+        /// <summary>
+        /// Detects the encoding of an HTML text.
+        /// </summary>
+        /// <param name="html">The input html text. May not be null.</param>
+        /// <returns>The detected encoding.</returns>
+        public Encoding DetectEncodingHtml(string html)
+        {
+            if (html == null)
+            {
+                throw new ArgumentNullException("html");
+            }
+            StringReader sr = new StringReader(html);
+            Encoding encoding = DetectEncoding(sr);
+            sr.Close();
+            return encoding;
+        }
+
+        /// <summary>
+        /// Gets the HTML node with the specified 'id' attribute value.
+        /// </summary>
+        /// <param name="id">The attribute id to match. May not be null.</param>
+        /// <returns>The HTML node with the matching id or null if not found.</returns>
+        public HtmlNode GetElementbyId(string id)
+        {
+            if (id == null)
+            {
+                throw new ArgumentNullException("id");
+            }
+            if (_nodesid == null)
+            {
+                throw new Exception(HtmlExceptionUseIdAttributeFalse);
+            }
+
+            return _nodesid[id.ToLower()] as HtmlNode;
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        public void Load(Stream stream)
+        {
+            Load(new StreamReader(stream, OptionDefaultStreamEncoding));
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
+        public void Load(Stream stream, bool detectEncodingFromByteOrderMarks)
+        {
+            Load(new StreamReader(stream, detectEncodingFromByteOrderMarks));
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        public void Load(Stream stream, Encoding encoding)
+        {
+            Load(new StreamReader(stream, encoding));
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
+        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks)
+        {
+            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks));
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
+        /// <param name="buffersize">The minimum buffer size.</param>
+        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
+        {
+            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks, buffersize));
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read. May not be null.</param>
+        public void Load(string path)
+        {
+            if (path == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+            StreamReader sr = new StreamReader(path, OptionDefaultStreamEncoding);
+            Load(sr);
+            sr.Close();
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read. May not be null.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public void Load(string path, bool detectEncodingFromByteOrderMarks)
+        {
+            if (path == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+            StreamReader sr = new StreamReader(path, detectEncodingFromByteOrderMarks);
+            Load(sr);
+            sr.Close();
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read. May not be null.</param>
+        /// <param name="encoding">The character encoding to use. May not be null.</param>
+        public void Load(string path, Encoding encoding)
+        {
+            if (path == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+            if (encoding == null)
+            {
+                throw new ArgumentNullException("encoding");
+            }
+            StreamReader sr = new StreamReader(path, encoding);
+            Load(sr);
+            sr.Close();
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read. May not be null.</param>
+        /// <param name="encoding">The character encoding to use. May not be null.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks)
+        {
+            if (path == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+            if (encoding == null)
+            {
+                throw new ArgumentNullException("encoding");
+            }
+            StreamReader sr = new StreamReader(path, encoding, detectEncodingFromByteOrderMarks);
+            Load(sr);
+            sr.Close();
+        }
+
+        /// <summary>
+        /// Loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read. May not be null.</param>
+        /// <param name="encoding">The character encoding to use. May not be null.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        /// <param name="buffersize">The minimum buffer size.</param>
+        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
+        {
+            if (path == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+            if (encoding == null)
+            {
+                throw new ArgumentNullException("encoding");
+            }
+            StreamReader sr = new StreamReader(path, encoding, detectEncodingFromByteOrderMarks, buffersize);
+            Load(sr);
+            sr.Close();
+        }
+
+        /// <summary>
+        /// Loads the HTML document from the specified TextReader.
+        /// </summary>
+        /// <param name="reader">The TextReader used to feed the HTML data into the document. May not be null.</param>
+        public void Load(TextReader reader)
+        {
+            // all Load methods pass down to this one
+            if (reader == null)
+            {
+                throw new ArgumentNullException("reader");
+            }
+
+            _onlyDetectEncoding = false;
+
+            if (OptionCheckSyntax)
+            {
+                _openednodes = new Hashtable();
+            }
+            else
+            {
+                _openednodes = null;
+            }
+
+            if (OptionUseIdAttribute)
+            {
+                _nodesid = new Hashtable();
+            }
+            else
+            {
+                _nodesid = null;
+            }
+
+            StreamReader sr = reader as StreamReader;
+            if (sr != null)
+            {
+                try
+                {
+                    // trigger bom read if needed
+                    sr.Peek();
+                }
+                    // ReSharper disable EmptyGeneralCatchClause
+                catch (Exception)
+                    // ReSharper restore EmptyGeneralCatchClause
+                {
+                    // void on purpose
+                }
+                _streamencoding = sr.CurrentEncoding;
+            }
+            else
+            {
+                _streamencoding = null;
+            }
+            _declaredencoding = null;
+
+            _text = reader.ReadToEnd();
+            _documentnode = CreateNode(HtmlNodeType.Document, 0);
+            Parse();
+
+            if (OptionCheckSyntax)
+            {
+                foreach (HtmlNode node in _openednodes.Values)
+                {
+                    if (!node._starttag) // already reported
+                    {
+                        continue;
+                    }
+
+                    string html;
+                    if (OptionExtractErrorSourceText)
+                    {
+                        html = node.OuterHtml;
+                        if (html.Length > OptionExtractErrorSourceTextMaxLength)
+                        {
+                            html = html.Substring(0, OptionExtractErrorSourceTextMaxLength);
+                        }
+                    }
+                    else
+                    {
+                        html = string.Empty;
+                    }
+                    AddError(
+                        HtmlParseErrorCode.TagNotClosed,
+                        node._line, node._lineposition,
+                        node._streamposition, html,
+                        "End tag </" + node.Name + "> was not found");
+                }
+
+                // we don't need this anymore
+                _openednodes.Clear();
+            }
+        }
+
+        /// <summary>
+        /// Loads the HTML document from the specified string.
+        /// </summary>
+        /// <param name="html">String containing the HTML document to load. May not be null.</param>
+        public void LoadHtml(string html)
+        {
+            if (html == null)
+            {
+                throw new ArgumentNullException("html");
+            }
+            StringReader sr = new StringReader(html);
+            Load(sr);
+            sr.Close();
+        }
+
+        /// <summary>
+        /// Saves the HTML document to the specified stream.
+        /// </summary>
+        /// <param name="outStream">The stream to which you want to save.</param>
+        public void Save(Stream outStream)
+        {
+            StreamWriter sw = new StreamWriter(outStream, GetOutEncoding());
+            Save(sw);
+        }
+
+        /// <summary>
+        /// Saves the HTML document to the specified stream.
+        /// </summary>
+        /// <param name="outStream">The stream to which you want to save. May not be null.</param>
+        /// <param name="encoding">The character encoding to use. May not be null.</param>
+        public void Save(Stream outStream, Encoding encoding)
+        {
+            if (outStream == null)
+            {
+                throw new ArgumentNullException("outStream");
+            }
+            if (encoding == null)
+            {
+                throw new ArgumentNullException("encoding");
+            }
+            StreamWriter sw = new StreamWriter(outStream, encoding);
+            Save(sw);
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified file.
+        /// </summary>
+        /// <param name="filename">The location of the file where you want to save the document.</param>
+        public void Save(string filename)
+        {
+            StreamWriter sw = new StreamWriter(filename, false, GetOutEncoding());
+            Save(sw);
+            sw.Close();
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified file.
+        /// </summary>
+        /// <param name="filename">The location of the file where you want to save the document. May not be null.</param>
+        /// <param name="encoding">The character encoding to use. May not be null.</param>
+        public void Save(string filename, Encoding encoding)
+        {
+            if (filename == null)
+            {
+                throw new ArgumentNullException("filename");
+            }
+            if (encoding == null)
+            {
+                throw new ArgumentNullException("encoding");
+            }
+            StreamWriter sw = new StreamWriter(filename, false, encoding);
+            Save(sw);
+            sw.Close();
+        }
+
+        /// <summary>
+        /// Saves the HTML document to the specified StreamWriter.
+        /// </summary>
+        /// <param name="writer">The StreamWriter to which you want to save.</param>
+        public void Save(StreamWriter writer)
+        {
+            Save((TextWriter) writer);
+        }
+
+        /// <summary>
+        /// Saves the HTML document to the specified TextWriter.
+        /// </summary>
+        /// <param name="writer">The TextWriter to which you want to save. May not be null.</param>
+        public void Save(TextWriter writer)
+        {
+            if (writer == null)
+            {
+                throw new ArgumentNullException("writer");
+            }
+            DocumentNode.WriteTo(writer);
+        }
+
+        /// <summary>
+        /// Saves the HTML document to the specified XmlWriter.
+        /// </summary>
+        /// <param name="writer">The XmlWriter to which you want to save.</param>
+        public void Save(XmlWriter writer)
+        {
+            DocumentNode.WriteTo(writer);
+            writer.Flush();
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal HtmlAttribute CreateAttribute()
+        {
+            return new HtmlAttribute(this);
+        }
+
+        internal HtmlNode CreateNode(HtmlNodeType type)
+        {
+            return CreateNode(type, -1);
+        }
+
+        internal HtmlNode CreateNode(HtmlNodeType type, int index)
+        {
+            switch (type)
+            {
+                case HtmlNodeType.Comment:
+                    return new HtmlCommentNode(this, index);
+
+                case HtmlNodeType.Text:
+                    return new HtmlTextNode(this, index);
+
+                default:
+                    return new HtmlNode(type, this, index);
+            }
+        }
+
+        internal Encoding GetOutEncoding()
+        {
+            // when unspecified, use the stream encoding first
+            if (_declaredencoding != null)
+            {
+                return _declaredencoding;
+            }
+            else
+            {
+                if (_streamencoding != null)
+                {
+                    return _streamencoding;
+                }
+            }
+            return OptionDefaultStreamEncoding;
+        }
+
+        internal HtmlNode GetXmlDeclaration()
+        {
+            if (!_documentnode.HasChildNodes)
+            {
+                return null;
+            }
+
+            foreach (HtmlNode node in _documentnode._childnodes)
+            {
+                if (node.Name == "?xml") // it's ok, names are case sensitive
+                {
+                    return node;
+                }
+            }
+            return null;
+        }
+
+        internal void SetIdForNode(HtmlNode node, string id)
+        {
+            if (!OptionUseIdAttribute)
+            {
+                return;
+            }
+
+            if ((_nodesid == null) || (id == null))
+            {
+                return;
+            }
+
+            if (node == null)
+            {
+                _nodesid.Remove(id.ToLower());
+            }
+            else
+            {
+                _nodesid[id.ToLower()] = node;
+            }
+        }
+
+        internal void UpdateLastParentNode()
+        {
+            do
+            {
+                if (_lastparentnode.Closed)
+                {
+                    _lastparentnode = _lastparentnode.ParentNode;
+                }
+            } while ((_lastparentnode != null) && (_lastparentnode.Closed));
+            if (_lastparentnode == null)
+            {
+                _lastparentnode = _documentnode;
+            }
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private HtmlParseError AddError(
+            HtmlParseErrorCode code,
+            int line,
+            int linePosition,
+            int streamPosition,
+            string sourceText,
+            string reason)
+        {
+            HtmlParseError err = new HtmlParseError(code, line, linePosition, streamPosition, sourceText, reason);
+            _parseerrors.Add(err);
+            return err;
+        }
+
+        private void CloseCurrentNode()
+        {
+            if (_currentnode.Closed) // text or document are by def closed
+                return;
+
+            bool error = false;
+
+            // find last node of this kind
+            HtmlNode prev = (HtmlNode) _lastnodes[_currentnode.Name];
+            if (prev == null)
+            {
+                if (HtmlNode.IsClosedElement(_currentnode.Name))
+                {
+                    // </br> will be seen as <br>
+                    _currentnode.CloseNode(_currentnode);
+
+                    // add to parent node
+                    if (_lastparentnode != null)
+                    {
+                        HtmlNode foundNode = null;
+                        Stack futureChild = new Stack();
+                        for (HtmlNode node = _lastparentnode.LastChild; node != null; node = node.PreviousSibling)
+                        {
+                            if ((node.Name == _currentnode.Name) && (!node.HasChildNodes))
+                            {
+                                foundNode = node;
+                                break;
+                            }
+                            futureChild.Push(node);
+                        }
+                        if (foundNode != null)
+                        {
+                            HtmlNode node = null;
+                            while (futureChild.Count != 0)
+                            {
+                                node = (HtmlNode) futureChild.Pop();
+                                _lastparentnode.RemoveChild(node);
+                                foundNode.AppendChild(node);
+                            }
+                        }
+                        else
+                        {
+                            _lastparentnode.AppendChild(_currentnode);
+                        }
+                    }
+                }
+                else
+                {
+                    // node has no parent
+                    // node is not a closed node
+
+                    if (HtmlNode.CanOverlapElement(_currentnode.Name))
+                    {
+                        // this is a hack: add it as a text node
+                        HtmlNode closenode = CreateNode(HtmlNodeType.Text, _currentnode._outerstartindex);
+                        closenode._outerlength = _currentnode._outerlength;
+                        ((HtmlTextNode) closenode).Text = ((HtmlTextNode) closenode).Text.ToLower();
+                        if (_lastparentnode != null)
+                        {
+                            _lastparentnode.AppendChild(closenode);
+                        }
+                    }
+                    else
+                    {
+                        if (HtmlNode.IsEmptyElement(_currentnode.Name))
+                        {
+                            AddError(
+                                HtmlParseErrorCode.EndTagNotRequired,
+                                _currentnode._line, _currentnode._lineposition,
+                                _currentnode._streamposition, _currentnode.OuterHtml,
+                                "End tag </" + _currentnode.Name + "> is not required");
+                        }
+                        else
+                        {
+                            // node cannot overlap, node is not empty
+                            AddError(
+                                HtmlParseErrorCode.TagNotOpened,
+                                _currentnode._line, _currentnode._lineposition,
+                                _currentnode._streamposition, _currentnode.OuterHtml,
+                                "Start tag <" + _currentnode.Name + "> was not found");
+                            error = true;
+                        }
+                    }
+                }
+            }
+            else
+            {
+                if (OptionFixNestedTags)
+                {
+                    if (FindResetterNodes(prev, GetResetters(_currentnode.Name)))
+                    {
+                        AddError(
+                            HtmlParseErrorCode.EndTagInvalidHere,
+                            _currentnode._line, _currentnode._lineposition,
+                            _currentnode._streamposition, _currentnode.OuterHtml,
+                            "End tag </" + _currentnode.Name + "> invalid here");
+                        error = true;
+                    }
+                }
+
+                if (!error)
+                {
+                    _lastnodes[_currentnode.Name] = prev._prevwithsamename;
+                    prev.CloseNode(_currentnode);
+                }
+            }
+
+
+            // we close this node, get grandparent
+            if (!error)
+            {
+                if ((_lastparentnode != null) &&
+                    ((!HtmlNode.IsClosedElement(_currentnode.Name)) ||
+                     (_currentnode._starttag)))
+                {
+                    UpdateLastParentNode();
+                }
+            }
+        }
+
+        private string CurrentAttributeName()
+        {
+            return _text.Substring(_currentattribute._namestartindex, _currentattribute._namelength);
+        }
+
+        private string CurrentAttributeValue()
+        {
+            return _text.Substring(_currentattribute._valuestartindex, _currentattribute._valuelength);
+        }
+
+        private string CurrentNodeInner()
+        {
+            return _text.Substring(_currentnode._innerstartindex, _currentnode._innerlength);
+        }
+
+        private string CurrentNodeName()
+        {
+            return _text.Substring(_currentnode._namestartindex, _currentnode._namelength);
+        }
+
+        private string CurrentNodeOuter()
+        {
+            return _text.Substring(_currentnode._outerstartindex, _currentnode._outerlength);
+        }
+
+
+        private void DecrementPosition()
+        {
+            _index--;
+            if (_lineposition == 1)
+            {
+                _lineposition = _maxlineposition;
+                _line--;
+            }
+            else
+            {
+                _lineposition--;
+            }
+        }
+
+        private HtmlNode FindResetterNode(HtmlNode node, string name)
+        {
+            HtmlNode resetter = (HtmlNode) _lastnodes[name];
+            if (resetter == null)
+                return null;
+            if (resetter.Closed)
+            {
+                return null;
+            }
+            if (resetter._streamposition < node._streamposition)
+            {
+                return null;
+            }
+            return resetter;
+        }
+
+        private bool FindResetterNodes(HtmlNode node, string[] names)
+        {
+            if (names == null)
+            {
+                return false;
+            }
+            for (int i = 0; i < names.Length; i++)
+            {
+                if (FindResetterNode(node, names[i]) != null)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        private void FixNestedTag(string name, string[] resetters)
+        {
+            if (resetters == null)
+                return;
+
+            HtmlNode prev;
+
+            // if we find a previous unclosed same name node, without a resetter node between, we must close it
+            prev = (HtmlNode) _lastnodes[name];
+            if ((prev != null) && (!prev.Closed))
+            {
+                // try to find a resetter node, if found, we do nothing
+                if (FindResetterNodes(prev, resetters))
+                {
+                    return;
+                }
+
+                // ok we need to close the prev now
+                // create a fake closer node
+                HtmlNode close = new HtmlNode(prev.NodeType, this, -1);
+                close._endnode = close;
+                prev.CloseNode(close);
+            }
+        }
+
+        private void FixNestedTags()
+        {
+            // we are only interested by start tags, not closing tags
+            if (!_currentnode._starttag)
+                return;
+
+            string name = CurrentNodeName();
+            FixNestedTag(name, GetResetters(name));
+        }
+
+        private string[] GetResetters(string name)
+        {
+            switch (name)
+            {
+                case "li":
+                    return new string[] {"ul"};
+
+                case "tr":
+                    return new string[] {"table"};
+
+                case "th":
+                case "td":
+                    return new string[] {"tr", "table"};
+
+                default:
+                    return null;
+            }
+        }
+
+        private void IncrementPosition()
+        {
+            if (_crc32 != null)
+            {
+                // REVIEW: should we add some checksum code in DecrementPosition too?
+                _crc32.AddToCRC32(_c);
+            }
+
+            _index++;
+            _maxlineposition = _lineposition;
+            if (_c == 10)
+            {
+                _lineposition = 1;
+                _line++;
+            }
+            else
+            {
+                _lineposition++;
+            }
+        }
+
+        private bool NewCheck()
+        {
+            if (_c != '<')
+            {
+                return false;
+            }
+            if (_index < _text.Length)
+            {
+                if (_text[_index] == '%')
+                {
+                    switch (_state)
+                    {
+                        case ParseState.AttributeAfterEquals:
+                            PushAttributeValueStart(_index - 1);
+                            break;
+
+                        case ParseState.BetweenAttributes:
+                            PushAttributeNameStart(_index - 1);
+                            break;
+
+                        case ParseState.WhichTag:
+                            PushNodeNameStart(true, _index - 1);
+                            _state = ParseState.Tag;
+                            break;
+                    }
+                    _oldstate = _state;
+                    _state = ParseState.ServerSideCode;
+                    return true;
+                }
+            }
+
+            if (!PushNodeEnd(_index - 1, true))
+            {
+                // stop parsing
+                _index = _text.Length;
+                return true;
+            }
+            _state = ParseState.WhichTag;
+            if ((_index - 1) <= (_text.Length - 2))
+            {
+                if (_text[_index] == '!')
+                {
+                    PushNodeStart(HtmlNodeType.Comment, _index - 1);
+                    PushNodeNameStart(true, _index);
+                    PushNodeNameEnd(_index + 1);
+                    _state = ParseState.Comment;
+                    if (_index < (_text.Length - 2))
+                    {
+                        if ((_text[_index + 1] == '-') &&
+                            (_text[_index + 2] == '-'))
+                        {
+                            _fullcomment = true;
+                        }
+                        else
+                        {
+                            _fullcomment = false;
+                        }
+                    }
+                    return true;
+                }
+            }
+            PushNodeStart(HtmlNodeType.Element, _index - 1);
+            return true;
+        }
+
+        private void Parse()
+        {
+            int lastquote = 0;
+            if (OptionComputeChecksum)
+            {
+                _crc32 = new Crc32();
+            }
+
+            _lastnodes = new Hashtable();
+            _c = 0;
+            _fullcomment = false;
+            _parseerrors = new List<HtmlParseError>();
+            _line = 1;
+            _lineposition = 1;
+            _maxlineposition = 1;
+
+            _state = ParseState.Text;
+            _oldstate = _state;
+            _documentnode._innerlength = _text.Length;
+            _documentnode._outerlength = _text.Length;
+            _remainderOffset = _text.Length;
+
+            _lastparentnode = _documentnode;
+            _currentnode = CreateNode(HtmlNodeType.Text, 0);
+            _currentattribute = null;
+
+            _index = 0;
+            PushNodeStart(HtmlNodeType.Text, 0);
+            while (_index < _text.Length)
+            {
+                _c = _text[_index];
+                IncrementPosition();
+
+                switch (_state)
+                {
+                    case ParseState.Text:
+                        if (NewCheck())
+                            continue;
+                        break;
+
+                    case ParseState.WhichTag:
+                        if (NewCheck())
+                            continue;
+                        if (_c == '/')
+                        {
+                            PushNodeNameStart(false, _index);
+                        }
+                        else
+                        {
+                            PushNodeNameStart(true, _index - 1);
+                            DecrementPosition();
+                        }
+                        _state = ParseState.Tag;
+                        break;
+
+                    case ParseState.Tag:
+                        if (NewCheck())
+                            continue;
+                        if (IsWhiteSpace(_c))
+                        {
+                            PushNodeNameEnd(_index - 1);
+                            if (_state != ParseState.Tag)
+                                continue;
+                            _state = ParseState.BetweenAttributes;
+                            continue;
+                        }
+                        if (_c == '/')
+                        {
+                            PushNodeNameEnd(_index - 1);
+                            if (_state != ParseState.Tag)
+                                continue;
+                            _state = ParseState.EmptyTag;
+                            continue;
+                        }
+                        if (_c == '>')
+                        {
+                            PushNodeNameEnd(_index - 1);
+                            if (_state != ParseState.Tag)
+                                continue;
+                            if (!PushNodeEnd(_index, false))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+                            if (_state != ParseState.Tag)
+                                continue;
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                        }
+                        break;
+
+                    case ParseState.BetweenAttributes:
+                        if (NewCheck())
+                            continue;
+
+                        if (IsWhiteSpace(_c))
+                            continue;
+
+                        if ((_c == '/') || (_c == '?'))
+                        {
+                            _state = ParseState.EmptyTag;
+                            continue;
+                        }
+
+                        if (_c == '>')
+                        {
+                            if (!PushNodeEnd(_index, false))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+
+                            if (_state != ParseState.BetweenAttributes)
+                                continue;
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                            continue;
+                        }
+
+                        PushAttributeNameStart(_index - 1);
+                        _state = ParseState.AttributeName;
+                        break;
+
+                    case ParseState.EmptyTag:
+                        if (NewCheck())
+                            continue;
+
+                        if (_c == '>')
+                        {
+                            if (!PushNodeEnd(_index, true))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+
+                            if (_state != ParseState.EmptyTag)
+                                continue;
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                            continue;
+                        }
+                        _state = ParseState.BetweenAttributes;
+                        break;
+
+                    case ParseState.AttributeName:
+                        if (NewCheck())
+                            continue;
+
+                        if (IsWhiteSpace(_c))
+                        {
+                            PushAttributeNameEnd(_index - 1);
+                            _state = ParseState.AttributeBeforeEquals;
+                            continue;
+                        }
+                        if (_c == '=')
+                        {
+                            PushAttributeNameEnd(_index - 1);
+                            _state = ParseState.AttributeAfterEquals;
+                            continue;
+                        }
+                        if (_c == '>')
+                        {
+                            PushAttributeNameEnd(_index - 1);
+                            if (!PushNodeEnd(_index, false))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+                            if (_state != ParseState.AttributeName)
+                                continue;
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                            continue;
+                        }
+                        break;
+
+                    case ParseState.AttributeBeforeEquals:
+                        if (NewCheck())
+                            continue;
+
+                        if (IsWhiteSpace(_c))
+                            continue;
+                        if (_c == '>')
+                        {
+                            if (!PushNodeEnd(_index, false))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+                            if (_state != ParseState.AttributeBeforeEquals)
+                                continue;
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                            continue;
+                        }
+                        if (_c == '=')
+                        {
+                            _state = ParseState.AttributeAfterEquals;
+                            continue;
+                        }
+                        // no equals, no whitespace, it's a new attrribute starting
+                        _state = ParseState.BetweenAttributes;
+                        DecrementPosition();
+                        break;
+
+                    case ParseState.AttributeAfterEquals:
+                        if (NewCheck())
+                            continue;
+
+                        if (IsWhiteSpace(_c))
+                            continue;
+
+                        if ((_c == '\'') || (_c == '"'))
+                        {
+                            _state = ParseState.QuotedAttributeValue;
+                            PushAttributeValueStart(_index, _c);
+                            lastquote = _c;
+                            continue;
+                        }
+                        if (_c == '>')
+                        {
+                            if (!PushNodeEnd(_index, false))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+                            if (_state != ParseState.AttributeAfterEquals)
+                                continue;
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                            continue;
+                        }
+                        PushAttributeValueStart(_index - 1);
+                        _state = ParseState.AttributeValue;
+                        break;
+
+                    case ParseState.AttributeValue:
+                        if (NewCheck())
+                            continue;
+
+                        if (IsWhiteSpace(_c))
+                        {
+                            PushAttributeValueEnd(_index - 1);
+                            _state = ParseState.BetweenAttributes;
+                            continue;
+                        }
+
+                        if (_c == '>')
+                        {
+                            PushAttributeValueEnd(_index - 1);
+                            if (!PushNodeEnd(_index, false))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+                            if (_state != ParseState.AttributeValue)
+                                continue;
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                            continue;
+                        }
+                        break;
+
+                    case ParseState.QuotedAttributeValue:
+                        if (_c == lastquote)
+                        {
+                            PushAttributeValueEnd(_index - 1);
+                            _state = ParseState.BetweenAttributes;
+                            continue;
+                        }
+                        if (_c == '<')
+                        {
+                            if (_index < _text.Length)
+                            {
+                                if (_text[_index] == '%')
+                                {
+                                    _oldstate = _state;
+                                    _state = ParseState.ServerSideCode;
+                                    continue;
+                                }
+                            }
+                        }
+                        break;
+
+                    case ParseState.Comment:
+                        if (_c == '>')
+                        {
+                            if (_fullcomment)
+                            {
+                                if ((_text[_index - 2] != '-') ||
+                                    (_text[_index - 3] != '-'))
+                                {
+                                    continue;
+                                }
+                            }
+                            if (!PushNodeEnd(_index, false))
+                            {
+                                // stop parsing
+                                _index = _text.Length;
+                                break;
+                            }
+                            _state = ParseState.Text;
+                            PushNodeStart(HtmlNodeType.Text, _index);
+                            continue;
+                        }
+                        break;
+
+                    case ParseState.ServerSideCode:
+                        if (_c == '%')
+                        {
+                            if (_index < _text.Length)
+                            {
+                                if (_text[_index] == '>')
+                                {
+                                    switch (_oldstate)
+                                    {
+                                        case ParseState.AttributeAfterEquals:
+                                            _state = ParseState.AttributeValue;
+                                            break;
+
+                                        case ParseState.BetweenAttributes:
+                                            PushAttributeNameEnd(_index + 1);
+                                            _state = ParseState.BetweenAttributes;
+                                            break;
+
+                                        default:
+                                            _state = _oldstate;
+                                            break;
+                                    }
+                                    IncrementPosition();
+                                }
+                            }
+                        }
+                        break;
+
+                    case ParseState.PcData:
+                        // look for </tag + 1 char
+
+                        // check buffer end
+                        if ((_currentnode._namelength + 3) <= (_text.Length - (_index - 1)))
+                        {
+                            if (string.Compare(_text.Substring(_index - 1, _currentnode._namelength + 2),
+                                               "</" + _currentnode.Name, true) == 0)
+                            {
+                                int c = _text[_index - 1 + 2 + _currentnode.Name.Length];
+                                if ((c == '>') || (IsWhiteSpace(c)))
+                                {
+                                    // add the script as a text node
+                                    HtmlNode script = CreateNode(HtmlNodeType.Text,
+                                                                 _currentnode._outerstartindex +
+                                                                 _currentnode._outerlength);
+                                    script._outerlength = _index - 1 - script._outerstartindex;
+                                    _currentnode.AppendChild(script);
+
+
+                                    PushNodeStart(HtmlNodeType.Element, _index - 1);
+                                    PushNodeNameStart(false, _index - 1 + 2);
+                                    _state = ParseState.Tag;
+                                    IncrementPosition();
+                                }
+                            }
+                        }
+                        break;
+                }
+            }
+
+            // finish the current work
+            if (_currentnode._namestartindex > 0)
+            {
+                PushNodeNameEnd(_index);
+            }
+            PushNodeEnd(_index, false);
+
+            // we don't need this anymore
+            _lastnodes.Clear();
+        }
+
+        private void PushAttributeNameEnd(int index)
+        {
+            _currentattribute._namelength = index - _currentattribute._namestartindex;
+            _currentnode.Attributes.Append(_currentattribute);
+        }
+
+        private void PushAttributeNameStart(int index)
+        {
+            _currentattribute = CreateAttribute();
+            _currentattribute._namestartindex = index;
+            _currentattribute.Line = _line;
+            _currentattribute._lineposition = _lineposition;
+            _currentattribute._streamposition = index;
+        }
+
+        private void PushAttributeValueEnd(int index)
+        {
+            _currentattribute._valuelength = index - _currentattribute._valuestartindex;
+        }
+
+        private void PushAttributeValueStart(int index)
+        {
+            PushAttributeValueStart(index, 0);
+        }
+
+        private void PushAttributeValueStart(int index, int quote)
+        {
+            _currentattribute._valuestartindex = index;
+            if (quote == '\'')
+                _currentattribute.QuoteType = AttributeValueQuote.SingleQuote;
+        }
+
+        private bool PushNodeEnd(int index, bool close)
+        {
+            _currentnode._outerlength = index - _currentnode._outerstartindex;
+
+            if ((_currentnode._nodetype == HtmlNodeType.Text) ||
+                (_currentnode._nodetype == HtmlNodeType.Comment))
+            {
+                // forget about void nodes
+                if (_currentnode._outerlength > 0)
+                {
+                    _currentnode._innerlength = _currentnode._outerlength;
+                    _currentnode._innerstartindex = _currentnode._outerstartindex;
+                    if (_lastparentnode != null)
+                    {
+                        _lastparentnode.AppendChild(_currentnode);
+                    }
+                }
+            }
+            else
+            {
+                if ((_currentnode._starttag) && (_lastparentnode != _currentnode))
+                {
+                    // add to parent node
+                    if (_lastparentnode != null)
+                    {
+                        _lastparentnode.AppendChild(_currentnode);
+                    }
+
+                    ReadDocumentEncoding(_currentnode);
+
+                    // remember last node of this kind
+                    HtmlNode prev = (HtmlNode) _lastnodes[_currentnode.Name];
+                    _currentnode._prevwithsamename = prev;
+                    _lastnodes[_currentnode.Name] = _currentnode;
+
+                    // change parent?
+                    if ((_currentnode.NodeType == HtmlNodeType.Document) ||
+                        (_currentnode.NodeType == HtmlNodeType.Element))
+                    {
+                        _lastparentnode = _currentnode;
+                    }
+
+                    if (HtmlNode.IsCDataElement(CurrentNodeName()))
+                    {
+                        _state = ParseState.PcData;
+                        return true;
+                    }
+
+                    if ((HtmlNode.IsClosedElement(_currentnode.Name)) ||
+                        (HtmlNode.IsEmptyElement(_currentnode.Name)))
+                    {
+                        close = true;
+                    }
+                }
+            }
+
+            if ((close) || (!_currentnode._starttag))
+            {
+                if ((OptionStopperNodeName != null) && (_remainder == null) &&
+                    (string.Compare(_currentnode.Name, OptionStopperNodeName, true) == 0))
+                {
+                    _remainderOffset = index;
+                    _remainder = _text.Substring(_remainderOffset);
+                    CloseCurrentNode();
+                    return false; // stop parsing
+                }
+                CloseCurrentNode();
+            }
+            return true;
+        }
+
+        private void PushNodeNameEnd(int index)
+        {
+            _currentnode._namelength = index - _currentnode._namestartindex;
+            if (OptionFixNestedTags)
+            {
+                FixNestedTags();
+            }
+        }
+
+        private void PushNodeNameStart(bool starttag, int index)
+        {
+            _currentnode._starttag = starttag;
+            _currentnode._namestartindex = index;
+        }
+
+        private void PushNodeStart(HtmlNodeType type, int index)
+        {
+            _currentnode = CreateNode(type, index);
+            _currentnode._line = _line;
+            _currentnode._lineposition = _lineposition;
+            if (type == HtmlNodeType.Element)
+            {
+                _currentnode._lineposition--;
+            }
+            _currentnode._streamposition = index;
+        }
+
+        private void ReadDocumentEncoding(HtmlNode node)
+        {
+            if (!OptionReadEncoding)
+                return;
+            // format is 
+            // <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
+
+            // when we append a child, we are in node end, so attributes are already populated
+            if (node._namelength == 4) // quick check, avoids string alloc
+            {
+                if (node.Name == "meta") // all nodes names are lowercase
+                {
+                    HtmlAttribute att = node.Attributes["http-equiv"];
+                    if (att != null)
+                    {
+                        if (string.Compare(att.Value, "content-type", true) == 0)
+                        {
+                            HtmlAttribute content = node.Attributes["content"];
+                            if (content != null)
+                            {
+                                string charset = NameValuePairList.GetNameValuePairsValue(content.Value, "charset");
+                                if (charset != null && (charset = charset.Trim()).Length > 0)
+                                {
+                                    _declaredencoding = Encoding.GetEncoding(charset.Trim());
+                                    if (_onlyDetectEncoding)
+                                    {
+                                        throw new EncodingFoundException(_declaredencoding);
+                                    }
+
+                                    if (_streamencoding != null)
+                                    {
+                                        if (_declaredencoding.WindowsCodePage != _streamencoding.WindowsCodePage)
+                                        {
+                                            AddError(
+                                                HtmlParseErrorCode.CharsetMismatch,
+                                                _line, _lineposition,
+                                                _index, node.OuterHtml,
+                                                "Encoding mismatch between StreamEncoding: " +
+                                                _streamencoding.WebName + " and DeclaredEncoding: " +
+                                                _declaredencoding.WebName);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        #endregion
+
+        #region Nested type: ParseState
+
+        private enum ParseState
+        {
+            Text,
+            WhichTag,
+            Tag,
+            BetweenAttributes,
+            EmptyTag,
+            AttributeName,
+            AttributeBeforeEquals,
+            AttributeAfterEquals,
+            AttributeValue,
+            Comment,
+            QuotedAttributeValue,
+            ServerSideCode,
+            PcData
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlElementFlag.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlElementFlag.cs
@@ -1,32 +1,32 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Flags that describe the behavior of an Element node.
-    /// </summary>
-    [Flags]
-    public enum HtmlElementFlag
-    {
-        /// <summary>
-        /// The node is a CDATA node.
-        /// </summary>
-        CData = 1,
-
-        /// <summary>
-        /// The node is empty. META or IMG are example of such nodes.
-        /// </summary>
-        Empty = 2,
-
-        /// <summary>
-        /// The node will automatically be closed during parsing.
-        /// </summary>
-        Closed = 4,
-
-        /// <summary>
-        /// The node can overlap.
-        /// </summary>
-        CanOverlap = 8
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Flags that describe the behavior of an Element node.
+    /// </summary>
+    [Flags]
+    public enum HtmlElementFlag
+    {
+        /// <summary>
+        /// The node is a CDATA node.
+        /// </summary>
+        CData = 1,
+
+        /// <summary>
+        /// The node is empty. META or IMG are example of such nodes.
+        /// </summary>
+        Empty = 2,
+
+        /// <summary>
+        /// The node will automatically be closed during parsing.
+        /// </summary>
+        Closed = 4,
+
+        /// <summary>
+        /// The node can overlap.
+        /// </summary>
+        CanOverlap = 8
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlEntity.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlEntity.cs
@@ -1,826 +1,826 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Collections;
-using System.Text;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// A utility class to replace special characters by entities and vice-versa.
-    /// Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
-    /// </summary>
-    public class HtmlEntity
-    {
-        #region Static Members
-
-        private static readonly int _maxEntitySize;
-        private static Hashtable _entityName;
-        private static Hashtable _entityValue;
-
-        /// <summary>
-        /// A collection of entities indexed by name.
-        /// </summary>
-        public static Hashtable EntityName
-        {
-            get { return _entityName; }
-        }
-
-        /// <summary>
-        /// A collection of entities indexed by value.
-        /// </summary>
-        public static Hashtable EntityValue
-        {
-            get { return _entityValue; }
-        }
-
-        #endregion
-
-        #region Constructors
-
-        static HtmlEntity()
-        {
-            _entityName = new Hashtable();
-            _entityValue = new Hashtable();
-
-            #region Entities Definition
-
-            _entityValue.Add("nbsp", 160); // no-break space = non-breaking space, U+00A0 ISOnum 
-            _entityName.Add(160, "nbsp");
-            _entityValue.Add("iexcl", 161); // inverted exclamation mark, U+00A1 ISOnum 
-            _entityName.Add(161, "iexcl");
-            _entityValue.Add("cent", 162); // cent sign, U+00A2 ISOnum 
-            _entityName.Add(162, "cent");
-            _entityValue.Add("pound", 163); // pound sign, U+00A3 ISOnum 
-            _entityName.Add(163, "pound");
-            _entityValue.Add("curren", 164); // currency sign, U+00A4 ISOnum 
-            _entityName.Add(164, "curren");
-            _entityValue.Add("yen", 165); // yen sign = yuan sign, U+00A5 ISOnum 
-            _entityName.Add(165, "yen");
-            _entityValue.Add("brvbar", 166); // broken bar = broken vertical bar, U+00A6 ISOnum 
-            _entityName.Add(166, "brvbar");
-            _entityValue.Add("sect", 167); // section sign, U+00A7 ISOnum 
-            _entityName.Add(167, "sect");
-            _entityValue.Add("uml", 168); // diaeresis = spacing diaeresis, U+00A8 ISOdia 
-            _entityName.Add(168, "uml");
-            _entityValue.Add("copy", 169); // copyright sign, U+00A9 ISOnum 
-            _entityName.Add(169, "copy");
-            _entityValue.Add("ordf", 170); // feminine ordinal indicator, U+00AA ISOnum 
-            _entityName.Add(170, "ordf");
-            _entityValue.Add("laquo", 171);
-                // left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum 
-            _entityName.Add(171, "laquo");
-            _entityValue.Add("not", 172); // not sign, U+00AC ISOnum 
-            _entityName.Add(172, "not");
-            _entityValue.Add("shy", 173); // soft hyphen = discretionary hyphen, U+00AD ISOnum 
-            _entityName.Add(173, "shy");
-            _entityValue.Add("reg", 174); // registered sign = registered trade mark sign, U+00AE ISOnum 
-            _entityName.Add(174, "reg");
-            _entityValue.Add("macr", 175); // macron = spacing macron = overline = APL overbar, U+00AF ISOdia 
-            _entityName.Add(175, "macr");
-            _entityValue.Add("deg", 176); // degree sign, U+00B0 ISOnum 
-            _entityName.Add(176, "deg");
-            _entityValue.Add("plusmn", 177); // plus-minus sign = plus-or-minus sign, U+00B1 ISOnum 
-            _entityName.Add(177, "plusmn");
-            _entityValue.Add("sup2", 178); // superscript two = superscript digit two = squared, U+00B2 ISOnum 
-            _entityName.Add(178, "sup2");
-            _entityValue.Add("sup3", 179); // superscript three = superscript digit three = cubed, U+00B3 ISOnum 
-            _entityName.Add(179, "sup3");
-            _entityValue.Add("acute", 180); // acute accent = spacing acute, U+00B4 ISOdia 
-            _entityName.Add(180, "acute");
-            _entityValue.Add("micro", 181); // micro sign, U+00B5 ISOnum 
-            _entityName.Add(181, "micro");
-            _entityValue.Add("para", 182); // pilcrow sign = paragraph sign, U+00B6 ISOnum 
-            _entityName.Add(182, "para");
-            _entityValue.Add("middot", 183); // middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum 
-            _entityName.Add(183, "middot");
-            _entityValue.Add("cedil", 184); // cedilla = spacing cedilla, U+00B8 ISOdia 
-            _entityName.Add(184, "cedil");
-            _entityValue.Add("sup1", 185); // superscript one = superscript digit one, U+00B9 ISOnum 
-            _entityName.Add(185, "sup1");
-            _entityValue.Add("ordm", 186); // masculine ordinal indicator, U+00BA ISOnum 
-            _entityName.Add(186, "ordm");
-            _entityValue.Add("raquo", 187);
-                // right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum 
-            _entityName.Add(187, "raquo");
-            _entityValue.Add("frac14", 188); // vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum 
-            _entityName.Add(188, "frac14");
-            _entityValue.Add("frac12", 189); // vulgar fraction one half = fraction one half, U+00BD ISOnum 
-            _entityName.Add(189, "frac12");
-            _entityValue.Add("frac34", 190); // vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum 
-            _entityName.Add(190, "frac34");
-            _entityValue.Add("iquest", 191); // inverted question mark = turned question mark, U+00BF ISOnum 
-            _entityName.Add(191, "iquest");
-            _entityValue.Add("Agrave", 192);
-                // latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1 
-            _entityName.Add(192, "Agrave");
-            _entityValue.Add("Aacute", 193); // latin capital letter A with acute, U+00C1 ISOlat1 
-            _entityName.Add(193, "Aacute");
-            _entityValue.Add("Acirc", 194); // latin capital letter A with circumflex, U+00C2 ISOlat1 
-            _entityName.Add(194, "Acirc");
-            _entityValue.Add("Atilde", 195); // latin capital letter A with tilde, U+00C3 ISOlat1 
-            _entityName.Add(195, "Atilde");
-            _entityValue.Add("Auml", 196); // latin capital letter A with diaeresis, U+00C4 ISOlat1 
-            _entityName.Add(196, "Auml");
-            _entityValue.Add("Aring", 197);
-                // latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1 
-            _entityName.Add(197, "Aring");
-            _entityValue.Add("AElig", 198); // latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1 
-            _entityName.Add(198, "AElig");
-            _entityValue.Add("Ccedil", 199); // latin capital letter C with cedilla, U+00C7 ISOlat1 
-            _entityName.Add(199, "Ccedil");
-            _entityValue.Add("Egrave", 200); // latin capital letter E with grave, U+00C8 ISOlat1 
-            _entityName.Add(200, "Egrave");
-            _entityValue.Add("Eacute", 201); // latin capital letter E with acute, U+00C9 ISOlat1 
-            _entityName.Add(201, "Eacute");
-            _entityValue.Add("Ecirc", 202); // latin capital letter E with circumflex, U+00CA ISOlat1 
-            _entityName.Add(202, "Ecirc");
-            _entityValue.Add("Euml", 203); // latin capital letter E with diaeresis, U+00CB ISOlat1 
-            _entityName.Add(203, "Euml");
-            _entityValue.Add("Igrave", 204); // latin capital letter I with grave, U+00CC ISOlat1 
-            _entityName.Add(204, "Igrave");
-            _entityValue.Add("Iacute", 205); // latin capital letter I with acute, U+00CD ISOlat1 
-            _entityName.Add(205, "Iacute");
-            _entityValue.Add("Icirc", 206); // latin capital letter I with circumflex, U+00CE ISOlat1 
-            _entityName.Add(206, "Icirc");
-            _entityValue.Add("Iuml", 207); // latin capital letter I with diaeresis, U+00CF ISOlat1 
-            _entityName.Add(207, "Iuml");
-            _entityValue.Add("ETH", 208); // latin capital letter ETH, U+00D0 ISOlat1 
-            _entityName.Add(208, "ETH");
-            _entityValue.Add("Ntilde", 209); // latin capital letter N with tilde, U+00D1 ISOlat1 
-            _entityName.Add(209, "Ntilde");
-            _entityValue.Add("Ograve", 210); // latin capital letter O with grave, U+00D2 ISOlat1 
-            _entityName.Add(210, "Ograve");
-            _entityValue.Add("Oacute", 211); // latin capital letter O with acute, U+00D3 ISOlat1 
-            _entityName.Add(211, "Oacute");
-            _entityValue.Add("Ocirc", 212); // latin capital letter O with circumflex, U+00D4 ISOlat1 
-            _entityName.Add(212, "Ocirc");
-            _entityValue.Add("Otilde", 213); // latin capital letter O with tilde, U+00D5 ISOlat1 
-            _entityName.Add(213, "Otilde");
-            _entityValue.Add("Ouml", 214); // latin capital letter O with diaeresis, U+00D6 ISOlat1 
-            _entityName.Add(214, "Ouml");
-            _entityValue.Add("times", 215); // multiplication sign, U+00D7 ISOnum 
-            _entityName.Add(215, "times");
-            _entityValue.Add("Oslash", 216);
-                // latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1 
-            _entityName.Add(216, "Oslash");
-            _entityValue.Add("Ugrave", 217); // latin capital letter U with grave, U+00D9 ISOlat1 
-            _entityName.Add(217, "Ugrave");
-            _entityValue.Add("Uacute", 218); // latin capital letter U with acute, U+00DA ISOlat1 
-            _entityName.Add(218, "Uacute");
-            _entityValue.Add("Ucirc", 219); // latin capital letter U with circumflex, U+00DB ISOlat1 
-            _entityName.Add(219, "Ucirc");
-            _entityValue.Add("Uuml", 220); // latin capital letter U with diaeresis, U+00DC ISOlat1 
-            _entityName.Add(220, "Uuml");
-            _entityValue.Add("Yacute", 221); // latin capital letter Y with acute, U+00DD ISOlat1 
-            _entityName.Add(221, "Yacute");
-            _entityValue.Add("THORN", 222); // latin capital letter THORN, U+00DE ISOlat1 
-            _entityName.Add(222, "THORN");
-            _entityValue.Add("szlig", 223); // latin small letter sharp s = ess-zed, U+00DF ISOlat1 
-            _entityName.Add(223, "szlig");
-            _entityValue.Add("agrave", 224);
-                // latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1 
-            _entityName.Add(224, "agrave");
-            _entityValue.Add("aacute", 225); // latin small letter a with acute, U+00E1 ISOlat1 
-            _entityName.Add(225, "aacute");
-            _entityValue.Add("acirc", 226); // latin small letter a with circumflex, U+00E2 ISOlat1 
-            _entityName.Add(226, "acirc");
-            _entityValue.Add("atilde", 227); // latin small letter a with tilde, U+00E3 ISOlat1 
-            _entityName.Add(227, "atilde");
-            _entityValue.Add("auml", 228); // latin small letter a with diaeresis, U+00E4 ISOlat1 
-            _entityName.Add(228, "auml");
-            _entityValue.Add("aring", 229);
-                // latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1 
-            _entityName.Add(229, "aring");
-            _entityValue.Add("aelig", 230); // latin small letter ae = latin small ligature ae, U+00E6 ISOlat1 
-            _entityName.Add(230, "aelig");
-            _entityValue.Add("ccedil", 231); // latin small letter c with cedilla, U+00E7 ISOlat1 
-            _entityName.Add(231, "ccedil");
-            _entityValue.Add("egrave", 232); // latin small letter e with grave, U+00E8 ISOlat1 
-            _entityName.Add(232, "egrave");
-            _entityValue.Add("eacute", 233); // latin small letter e with acute, U+00E9 ISOlat1 
-            _entityName.Add(233, "eacute");
-            _entityValue.Add("ecirc", 234); // latin small letter e with circumflex, U+00EA ISOlat1 
-            _entityName.Add(234, "ecirc");
-            _entityValue.Add("euml", 235); // latin small letter e with diaeresis, U+00EB ISOlat1 
-            _entityName.Add(235, "euml");
-            _entityValue.Add("igrave", 236); // latin small letter i with grave, U+00EC ISOlat1 
-            _entityName.Add(236, "igrave");
-            _entityValue.Add("iacute", 237); // latin small letter i with acute, U+00ED ISOlat1 
-            _entityName.Add(237, "iacute");
-            _entityValue.Add("icirc", 238); // latin small letter i with circumflex, U+00EE ISOlat1 
-            _entityName.Add(238, "icirc");
-            _entityValue.Add("iuml", 239); // latin small letter i with diaeresis, U+00EF ISOlat1 
-            _entityName.Add(239, "iuml");
-            _entityValue.Add("eth", 240); // latin small letter eth, U+00F0 ISOlat1 
-            _entityName.Add(240, "eth");
-            _entityValue.Add("ntilde", 241); // latin small letter n with tilde, U+00F1 ISOlat1 
-            _entityName.Add(241, "ntilde");
-            _entityValue.Add("ograve", 242); // latin small letter o with grave, U+00F2 ISOlat1 
-            _entityName.Add(242, "ograve");
-            _entityValue.Add("oacute", 243); // latin small letter o with acute, U+00F3 ISOlat1 
-            _entityName.Add(243, "oacute");
-            _entityValue.Add("ocirc", 244); // latin small letter o with circumflex, U+00F4 ISOlat1 
-            _entityName.Add(244, "ocirc");
-            _entityValue.Add("otilde", 245); // latin small letter o with tilde, U+00F5 ISOlat1 
-            _entityName.Add(245, "otilde");
-            _entityValue.Add("ouml", 246); // latin small letter o with diaeresis, U+00F6 ISOlat1 
-            _entityName.Add(246, "ouml");
-            _entityValue.Add("divide", 247); // division sign, U+00F7 ISOnum 
-            _entityName.Add(247, "divide");
-            _entityValue.Add("oslash", 248);
-                // latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1 
-            _entityName.Add(248, "oslash");
-            _entityValue.Add("ugrave", 249); // latin small letter u with grave, U+00F9 ISOlat1 
-            _entityName.Add(249, "ugrave");
-            _entityValue.Add("uacute", 250); // latin small letter u with acute, U+00FA ISOlat1 
-            _entityName.Add(250, "uacute");
-            _entityValue.Add("ucirc", 251); // latin small letter u with circumflex, U+00FB ISOlat1 
-            _entityName.Add(251, "ucirc");
-            _entityValue.Add("uuml", 252); // latin small letter u with diaeresis, U+00FC ISOlat1 
-            _entityName.Add(252, "uuml");
-            _entityValue.Add("yacute", 253); // latin small letter y with acute, U+00FD ISOlat1 
-            _entityName.Add(253, "yacute");
-            _entityValue.Add("thorn", 254); // latin small letter thorn, U+00FE ISOlat1 
-            _entityName.Add(254, "thorn");
-            _entityValue.Add("yuml", 255); // latin small letter y with diaeresis, U+00FF ISOlat1 
-            _entityName.Add(255, "yuml");
-            _entityValue.Add("fnof", 402); // latin small f with hook = function = florin, U+0192 ISOtech 
-            _entityName.Add(402, "fnof");
-            _entityValue.Add("Alpha", 913); // greek capital letter alpha, U+0391 
-            _entityName.Add(913, "Alpha");
-            _entityValue.Add("Beta", 914); // greek capital letter beta, U+0392 
-            _entityName.Add(914, "Beta");
-            _entityValue.Add("Gamma", 915); // greek capital letter gamma, U+0393 ISOgrk3 
-            _entityName.Add(915, "Gamma");
-            _entityValue.Add("Delta", 916); // greek capital letter delta, U+0394 ISOgrk3 
-            _entityName.Add(916, "Delta");
-            _entityValue.Add("Epsilon", 917); // greek capital letter epsilon, U+0395 
-            _entityName.Add(917, "Epsilon");
-            _entityValue.Add("Zeta", 918); // greek capital letter zeta, U+0396 
-            _entityName.Add(918, "Zeta");
-            _entityValue.Add("Eta", 919); // greek capital letter eta, U+0397 
-            _entityName.Add(919, "Eta");
-            _entityValue.Add("Theta", 920); // greek capital letter theta, U+0398 ISOgrk3 
-            _entityName.Add(920, "Theta");
-            _entityValue.Add("Iota", 921); // greek capital letter iota, U+0399 
-            _entityName.Add(921, "Iota");
-            _entityValue.Add("Kappa", 922); // greek capital letter kappa, U+039A 
-            _entityName.Add(922, "Kappa");
-            _entityValue.Add("Lambda", 923); // greek capital letter lambda, U+039B ISOgrk3 
-            _entityName.Add(923, "Lambda");
-            _entityValue.Add("Mu", 924); // greek capital letter mu, U+039C 
-            _entityName.Add(924, "Mu");
-            _entityValue.Add("Nu", 925); // greek capital letter nu, U+039D 
-            _entityName.Add(925, "Nu");
-            _entityValue.Add("Xi", 926); // greek capital letter xi, U+039E ISOgrk3 
-            _entityName.Add(926, "Xi");
-            _entityValue.Add("Omicron", 927); // greek capital letter omicron, U+039F 
-            _entityName.Add(927, "Omicron");
-            _entityValue.Add("Pi", 928); // greek capital letter pi, U+03A0 ISOgrk3 
-            _entityName.Add(928, "Pi");
-            _entityValue.Add("Rho", 929); // greek capital letter rho, U+03A1 
-            _entityName.Add(929, "Rho");
-            _entityValue.Add("Sigma", 931); // greek capital letter sigma, U+03A3 ISOgrk3 
-            _entityName.Add(931, "Sigma");
-            _entityValue.Add("Tau", 932); // greek capital letter tau, U+03A4 
-            _entityName.Add(932, "Tau");
-            _entityValue.Add("Upsilon", 933); // greek capital letter upsilon, U+03A5 ISOgrk3 
-            _entityName.Add(933, "Upsilon");
-            _entityValue.Add("Phi", 934); // greek capital letter phi, U+03A6 ISOgrk3 
-            _entityName.Add(934, "Phi");
-            _entityValue.Add("Chi", 935); // greek capital letter chi, U+03A7 
-            _entityName.Add(935, "Chi");
-            _entityValue.Add("Psi", 936); // greek capital letter psi, U+03A8 ISOgrk3 
-            _entityName.Add(936, "Psi");
-            _entityValue.Add("Omega", 937); // greek capital letter omega, U+03A9 ISOgrk3 
-            _entityName.Add(937, "Omega");
-            _entityValue.Add("alpha", 945); // greek small letter alpha, U+03B1 ISOgrk3 
-            _entityName.Add(945, "alpha");
-            _entityValue.Add("beta", 946); // greek small letter beta, U+03B2 ISOgrk3 
-            _entityName.Add(946, "beta");
-            _entityValue.Add("gamma", 947); // greek small letter gamma, U+03B3 ISOgrk3 
-            _entityName.Add(947, "gamma");
-            _entityValue.Add("delta", 948); // greek small letter delta, U+03B4 ISOgrk3 
-            _entityName.Add(948, "delta");
-            _entityValue.Add("epsilon", 949); // greek small letter epsilon, U+03B5 ISOgrk3 
-            _entityName.Add(949, "epsilon");
-            _entityValue.Add("zeta", 950); // greek small letter zeta, U+03B6 ISOgrk3 
-            _entityName.Add(950, "zeta");
-            _entityValue.Add("eta", 951); // greek small letter eta, U+03B7 ISOgrk3 
-            _entityName.Add(951, "eta");
-            _entityValue.Add("theta", 952); // greek small letter theta, U+03B8 ISOgrk3 
-            _entityName.Add(952, "theta");
-            _entityValue.Add("iota", 953); // greek small letter iota, U+03B9 ISOgrk3 
-            _entityName.Add(953, "iota");
-            _entityValue.Add("kappa", 954); // greek small letter kappa, U+03BA ISOgrk3 
-            _entityName.Add(954, "kappa");
-            _entityValue.Add("lambda", 955); // greek small letter lambda, U+03BB ISOgrk3 
-            _entityName.Add(955, "lambda");
-            _entityValue.Add("mu", 956); // greek small letter mu, U+03BC ISOgrk3 
-            _entityName.Add(956, "mu");
-            _entityValue.Add("nu", 957); // greek small letter nu, U+03BD ISOgrk3 
-            _entityName.Add(957, "nu");
-            _entityValue.Add("xi", 958); // greek small letter xi, U+03BE ISOgrk3 
-            _entityName.Add(958, "xi");
-            _entityValue.Add("omicron", 959); // greek small letter omicron, U+03BF NEW 
-            _entityName.Add(959, "omicron");
-            _entityValue.Add("pi", 960); // greek small letter pi, U+03C0 ISOgrk3 
-            _entityName.Add(960, "pi");
-            _entityValue.Add("rho", 961); // greek small letter rho, U+03C1 ISOgrk3 
-            _entityName.Add(961, "rho");
-            _entityValue.Add("sigmaf", 962); // greek small letter final sigma, U+03C2 ISOgrk3 
-            _entityName.Add(962, "sigmaf");
-            _entityValue.Add("sigma", 963); // greek small letter sigma, U+03C3 ISOgrk3 
-            _entityName.Add(963, "sigma");
-            _entityValue.Add("tau", 964); // greek small letter tau, U+03C4 ISOgrk3 
-            _entityName.Add(964, "tau");
-            _entityValue.Add("upsilon", 965); // greek small letter upsilon, U+03C5 ISOgrk3 
-            _entityName.Add(965, "upsilon");
-            _entityValue.Add("phi", 966); // greek small letter phi, U+03C6 ISOgrk3 
-            _entityName.Add(966, "phi");
-            _entityValue.Add("chi", 967); // greek small letter chi, U+03C7 ISOgrk3 
-            _entityName.Add(967, "chi");
-            _entityValue.Add("psi", 968); // greek small letter psi, U+03C8 ISOgrk3 
-            _entityName.Add(968, "psi");
-            _entityValue.Add("omega", 969); // greek small letter omega, U+03C9 ISOgrk3 
-            _entityName.Add(969, "omega");
-            _entityValue.Add("thetasym", 977); // greek small letter theta symbol, U+03D1 NEW 
-            _entityName.Add(977, "thetasym");
-            _entityValue.Add("upsih", 978); // greek upsilon with hook symbol, U+03D2 NEW 
-            _entityName.Add(978, "upsih");
-            _entityValue.Add("piv", 982); // greek pi symbol, U+03D6 ISOgrk3 
-            _entityName.Add(982, "piv");
-            _entityValue.Add("bull", 8226); // bullet = black small circle, U+2022 ISOpub 
-            _entityName.Add(8226, "bull");
-            _entityValue.Add("hellip", 8230); // horizontal ellipsis = three dot leader, U+2026 ISOpub 
-            _entityName.Add(8230, "hellip");
-            _entityValue.Add("prime", 8242); // prime = minutes = feet, U+2032 ISOtech 
-            _entityName.Add(8242, "prime");
-            _entityValue.Add("Prime", 8243); // double prime = seconds = inches, U+2033 ISOtech 
-            _entityName.Add(8243, "Prime");
-            _entityValue.Add("oline", 8254); // overline = spacing overscore, U+203E NEW 
-            _entityName.Add(8254, "oline");
-            _entityValue.Add("frasl", 8260); // fraction slash, U+2044 NEW 
-            _entityName.Add(8260, "frasl");
-            _entityValue.Add("weierp", 8472); // script capital P = power set = Weierstrass p, U+2118 ISOamso 
-            _entityName.Add(8472, "weierp");
-            _entityValue.Add("image", 8465); // blackletter capital I = imaginary part, U+2111 ISOamso 
-            _entityName.Add(8465, "image");
-            _entityValue.Add("real", 8476); // blackletter capital R = real part symbol, U+211C ISOamso 
-            _entityName.Add(8476, "real");
-            _entityValue.Add("trade", 8482); // trade mark sign, U+2122 ISOnum 
-            _entityName.Add(8482, "trade");
-            _entityValue.Add("alefsym", 8501); // alef symbol = first transfinite cardinal, U+2135 NEW 
-            _entityName.Add(8501, "alefsym");
-            _entityValue.Add("larr", 8592); // leftwards arrow, U+2190 ISOnum 
-            _entityName.Add(8592, "larr");
-            _entityValue.Add("uarr", 8593); // upwards arrow, U+2191 ISOnum
-            _entityName.Add(8593, "uarr");
-            _entityValue.Add("rarr", 8594); // rightwards arrow, U+2192 ISOnum 
-            _entityName.Add(8594, "rarr");
-            _entityValue.Add("darr", 8595); // downwards arrow, U+2193 ISOnum 
-            _entityName.Add(8595, "darr");
-            _entityValue.Add("harr", 8596); // left right arrow, U+2194 ISOamsa 
-            _entityName.Add(8596, "harr");
-            _entityValue.Add("crarr", 8629); // downwards arrow with corner leftwards = carriage return, U+21B5 NEW 
-            _entityName.Add(8629, "crarr");
-            _entityValue.Add("lArr", 8656); // leftwards double arrow, U+21D0 ISOtech 
-            _entityName.Add(8656, "lArr");
-            _entityValue.Add("uArr", 8657); // upwards double arrow, U+21D1 ISOamsa 
-            _entityName.Add(8657, "uArr");
-            _entityValue.Add("rArr", 8658); // rightwards double arrow, U+21D2 ISOtech 
-            _entityName.Add(8658, "rArr");
-            _entityValue.Add("dArr", 8659); // downwards double arrow, U+21D3 ISOamsa 
-            _entityName.Add(8659, "dArr");
-            _entityValue.Add("hArr", 8660); // left right double arrow, U+21D4 ISOamsa 
-            _entityName.Add(8660, "hArr");
-            _entityValue.Add("forall", 8704); // for all, U+2200 ISOtech 
-            _entityName.Add(8704, "forall");
-            _entityValue.Add("part", 8706); // partial differential, U+2202 ISOtech 
-            _entityName.Add(8706, "part");
-            _entityValue.Add("exist", 8707); // there exists, U+2203 ISOtech 
-            _entityName.Add(8707, "exist");
-            _entityValue.Add("empty", 8709); // empty set = null set = diameter, U+2205 ISOamso 
-            _entityName.Add(8709, "empty");
-            _entityValue.Add("nabla", 8711); // nabla = backward difference, U+2207 ISOtech 
-            _entityName.Add(8711, "nabla");
-            _entityValue.Add("isin", 8712); // element of, U+2208 ISOtech 
-            _entityName.Add(8712, "isin");
-            _entityValue.Add("notin", 8713); // not an element of, U+2209 ISOtech 
-            _entityName.Add(8713, "notin");
-            _entityValue.Add("ni", 8715); // contains as member, U+220B ISOtech 
-            _entityName.Add(8715, "ni");
-            _entityValue.Add("prod", 8719); // n-ary product = product sign, U+220F ISOamsb 
-            _entityName.Add(8719, "prod");
-            _entityValue.Add("sum", 8721); // n-ary sumation, U+2211 ISOamsb 
-            _entityName.Add(8721, "sum");
-            _entityValue.Add("minus", 8722); // minus sign, U+2212 ISOtech 
-            _entityName.Add(8722, "minus");
-            _entityValue.Add("lowast", 8727); // asterisk operator, U+2217 ISOtech 
-            _entityName.Add(8727, "lowast");
-            _entityValue.Add("radic", 8730); // square root = radical sign, U+221A ISOtech 
-            _entityName.Add(8730, "radic");
-            _entityValue.Add("prop", 8733); // proportional to, U+221D ISOtech 
-            _entityName.Add(8733, "prop");
-            _entityValue.Add("infin", 8734); // infinity, U+221E ISOtech 
-            _entityName.Add(8734, "infin");
-            _entityValue.Add("ang", 8736); // angle, U+2220 ISOamso 
-            _entityName.Add(8736, "ang");
-            _entityValue.Add("and", 8743); // logical and = wedge, U+2227 ISOtech 
-            _entityName.Add(8743, "and");
-            _entityValue.Add("or", 8744); // logical or = vee, U+2228 ISOtech 
-            _entityName.Add(8744, "or");
-            _entityValue.Add("cap", 8745); // intersection = cap, U+2229 ISOtech 
-            _entityName.Add(8745, "cap");
-            _entityValue.Add("cup", 8746); // union = cup, U+222A ISOtech 
-            _entityName.Add(8746, "cup");
-            _entityValue.Add("int", 8747); // integral, U+222B ISOtech 
-            _entityName.Add(8747, "int");
-            _entityValue.Add("there4", 8756); // therefore, U+2234 ISOtech 
-            _entityName.Add(8756, "there4");
-            _entityValue.Add("sim", 8764); // tilde operator = varies with = similar to, U+223C ISOtech 
-            _entityName.Add(8764, "sim");
-            _entityValue.Add("cong", 8773); // approximately equal to, U+2245 ISOtech 
-            _entityName.Add(8773, "cong");
-            _entityValue.Add("asymp", 8776); // almost equal to = asymptotic to, U+2248 ISOamsr 
-            _entityName.Add(8776, "asymp");
-            _entityValue.Add("ne", 8800); // not equal to, U+2260 ISOtech 
-            _entityName.Add(8800, "ne");
-            _entityValue.Add("equiv", 8801); // identical to, U+2261 ISOtech 
-            _entityName.Add(8801, "equiv");
-            _entityValue.Add("le", 8804); // less-than or equal to, U+2264 ISOtech 
-            _entityName.Add(8804, "le");
-            _entityValue.Add("ge", 8805); // greater-than or equal to, U+2265 ISOtech 
-            _entityName.Add(8805, "ge");
-            _entityValue.Add("sub", 8834); // subset of, U+2282 ISOtech 
-            _entityName.Add(8834, "sub");
-            _entityValue.Add("sup", 8835); // superset of, U+2283 ISOtech 
-            _entityName.Add(8835, "sup");
-            _entityValue.Add("nsub", 8836); // not a subset of, U+2284 ISOamsn 
-            _entityName.Add(8836, "nsub");
-            _entityValue.Add("sube", 8838); // subset of or equal to, U+2286 ISOtech 
-            _entityName.Add(8838, "sube");
-            _entityValue.Add("supe", 8839); // superset of or equal to, U+2287 ISOtech 
-            _entityName.Add(8839, "supe");
-            _entityValue.Add("oplus", 8853); // circled plus = direct sum, U+2295 ISOamsb 
-            _entityName.Add(8853, "oplus");
-            _entityValue.Add("otimes", 8855); // circled times = vector product, U+2297 ISOamsb 
-            _entityName.Add(8855, "otimes");
-            _entityValue.Add("perp", 8869); // up tack = orthogonal to = perpendicular, U+22A5 ISOtech 
-            _entityName.Add(8869, "perp");
-            _entityValue.Add("sdot", 8901); // dot operator, U+22C5 ISOamsb 
-            _entityName.Add(8901, "sdot");
-            _entityValue.Add("lceil", 8968); // left ceiling = apl upstile, U+2308 ISOamsc 
-            _entityName.Add(8968, "lceil");
-            _entityValue.Add("rceil", 8969); // right ceiling, U+2309 ISOamsc 
-            _entityName.Add(8969, "rceil");
-            _entityValue.Add("lfloor", 8970); // left floor = apl downstile, U+230A ISOamsc 
-            _entityName.Add(8970, "lfloor");
-            _entityValue.Add("rfloor", 8971); // right floor, U+230B ISOamsc 
-            _entityName.Add(8971, "rfloor");
-            _entityValue.Add("lang", 9001); // left-pointing angle bracket = bra, U+2329 ISOtech 
-            _entityName.Add(9001, "lang");
-            _entityValue.Add("rang", 9002); // right-pointing angle bracket = ket, U+232A ISOtech 
-            _entityName.Add(9002, "rang");
-            _entityValue.Add("loz", 9674); // lozenge, U+25CA ISOpub 
-            _entityName.Add(9674, "loz");
-            _entityValue.Add("spades", 9824); // black spade suit, U+2660 ISOpub 
-            _entityName.Add(9824, "spades");
-            _entityValue.Add("clubs", 9827); // black club suit = shamrock, U+2663 ISOpub 
-            _entityName.Add(9827, "clubs");
-            _entityValue.Add("hearts", 9829); // black heart suit = valentine, U+2665 ISOpub 
-            _entityName.Add(9829, "hearts");
-            _entityValue.Add("diams", 9830); // black diamond suit, U+2666 ISOpub 
-            _entityName.Add(9830, "diams");
-            _entityValue.Add("quot", 34); // quotation mark = APL quote, U+0022 ISOnum 
-            _entityName.Add(34, "quot");
-            _entityValue.Add("amp", 38); // ampersand, U+0026 ISOnum 
-            _entityName.Add(38, "amp");
-            _entityValue.Add("lt", 60); // less-than sign, U+003C ISOnum 
-            _entityName.Add(60, "lt");
-            _entityValue.Add("gt", 62); // greater-than sign, U+003E ISOnum 
-            _entityName.Add(62, "gt");
-            _entityValue.Add("OElig", 338); // latin capital ligature OE, U+0152 ISOlat2 
-            _entityName.Add(338, "OElig");
-            _entityValue.Add("oelig", 339); // latin small ligature oe, U+0153 ISOlat2 
-            _entityName.Add(339, "oelig");
-            _entityValue.Add("Scaron", 352); // latin capital letter S with caron, U+0160 ISOlat2 
-            _entityName.Add(352, "Scaron");
-            _entityValue.Add("scaron", 353); // latin small letter s with caron, U+0161 ISOlat2 
-            _entityName.Add(353, "scaron");
-            _entityValue.Add("Yuml", 376); // latin capital letter Y with diaeresis, U+0178 ISOlat2 
-            _entityName.Add(376, "Yuml");
-            _entityValue.Add("circ", 710); // modifier letter circumflex accent, U+02C6 ISOpub 
-            _entityName.Add(710, "circ");
-            _entityValue.Add("tilde", 732); // small tilde, U+02DC ISOdia 
-            _entityName.Add(732, "tilde");
-            _entityValue.Add("ensp", 8194); // en space, U+2002 ISOpub 
-            _entityName.Add(8194, "ensp");
-            _entityValue.Add("emsp", 8195); // em space, U+2003 ISOpub 
-            _entityName.Add(8195, "emsp");
-            _entityValue.Add("thinsp", 8201); // thin space, U+2009 ISOpub 
-            _entityName.Add(8201, "thinsp");
-            _entityValue.Add("zwnj", 8204); // zero width non-joiner, U+200C NEW RFC 2070 
-            _entityName.Add(8204, "zwnj");
-            _entityValue.Add("zwj", 8205); // zero width joiner, U+200D NEW RFC 2070 
-            _entityName.Add(8205, "zwj");
-            _entityValue.Add("lrm", 8206); // left-to-right mark, U+200E NEW RFC 2070 
-            _entityName.Add(8206, "lrm");
-            _entityValue.Add("rlm", 8207); // right-to-left mark, U+200F NEW RFC 2070 
-            _entityName.Add(8207, "rlm");
-            _entityValue.Add("ndash", 8211); // en dash, U+2013 ISOpub 
-            _entityName.Add(8211, "ndash");
-            _entityValue.Add("mdash", 8212); // em dash, U+2014 ISOpub 
-            _entityName.Add(8212, "mdash");
-            _entityValue.Add("lsquo", 8216); // left single quotation mark, U+2018 ISOnum 
-            _entityName.Add(8216, "lsquo");
-            _entityValue.Add("rsquo", 8217); // right single quotation mark, U+2019 ISOnum 
-            _entityName.Add(8217, "rsquo");
-            _entityValue.Add("sbquo", 8218); // single low-9 quotation mark, U+201A NEW 
-            _entityName.Add(8218, "sbquo");
-            _entityValue.Add("ldquo", 8220); // left double quotation mark, U+201C ISOnum 
-            _entityName.Add(8220, "ldquo");
-            _entityValue.Add("rdquo", 8221); // right double quotation mark, U+201D ISOnum 
-            _entityName.Add(8221, "rdquo");
-            _entityValue.Add("bdquo", 8222); // double low-9 quotation mark, U+201E NEW 
-            _entityName.Add(8222, "bdquo");
-            _entityValue.Add("dagger", 8224); // dagger, U+2020 ISOpub 
-            _entityName.Add(8224, "dagger");
-            _entityValue.Add("Dagger", 8225); // double dagger, U+2021 ISOpub 
-            _entityName.Add(8225, "Dagger");
-            _entityValue.Add("permil", 8240); // per mille sign, U+2030 ISOtech 
-            _entityName.Add(8240, "permil");
-            _entityValue.Add("lsaquo", 8249); // single left-pointing angle quotation mark, U+2039 ISO proposed 
-            _entityName.Add(8249, "lsaquo");
-            _entityValue.Add("rsaquo", 8250); // single right-pointing angle quotation mark, U+203A ISO proposed 
-            _entityName.Add(8250, "rsaquo");
-            _entityValue.Add("euro", 8364); // euro sign, U+20AC NEW 
-            _entityName.Add(8364, "euro");
-
-            _maxEntitySize = 8 + 1; // we add the # char
-
-            #endregion
-        }
-
-        private HtmlEntity()
-        {
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Replace known entities by characters.
-        /// </summary>
-        /// <param name="text">The source text.</param>
-        /// <returns>The result text.</returns>
-        public static string DeEntitize(string text)
-        {
-            if (text == null)
-                return null;
-
-            if (text.Length == 0)
-                return text;
-
-            StringBuilder sb = new StringBuilder(text.Length);
-            ParseState state = ParseState.Text;
-            StringBuilder entity = new StringBuilder(10);
-
-            for (int i = 0; i < text.Length; i++)
-            {
-                switch (state)
-                {
-                    case ParseState.Text:
-                        switch (text[i])
-                        {
-                            case '&':
-                                state = ParseState.EntityStart;
-                                break;
-
-                            default:
-                                sb.Append(text[i]);
-                                break;
-                        }
-                        break;
-
-                    case ParseState.EntityStart:
-                        switch (text[i])
-                        {
-                            case ';':
-                                if (entity.Length == 0)
-                                {
-                                    sb.Append("&;");
-                                }
-                                else
-                                {
-                                    if (entity[0] == '#')
-                                    {
-                                        string e = entity.ToString();
-                                        try
-                                        {
-                                            int code = Convert.ToInt32(e.Substring(1, e.Length - 1));
-                                            sb.Append(Convert.ToChar(code));
-                                        }
-                                        catch
-                                        {
-                                            sb.Append("&#" + e + ";");
-                                        }
-                                    }
-                                    else
-                                    {
-                                        // named entity?
-                                        int code;
-                                        object o = _entityValue[entity.ToString()];
-                                        if (o == null)
-                                        {
-                                            // nope
-                                            sb.Append("&" + entity + ";");
-                                        }
-                                        else
-                                        {
-                                            // we found one
-                                            code = (int) o;
-                                            sb.Append(Convert.ToChar(code));
-                                        }
-                                    }
-                                    entity.Remove(0, entity.Length);
-                                }
-                                state = ParseState.Text;
-                                break;
-
-                            case '&':
-                                // new entity start without end, it was not an entity...
-                                sb.Append("&" + entity);
-                                entity.Remove(0, entity.Length);
-                                break;
-
-                            default:
-                                entity.Append(text[i]);
-                                if (entity.Length > _maxEntitySize)
-                                {
-                                    // unknown stuff, just don't touch it
-                                    state = ParseState.Text;
-                                    sb.Append("&" + entity);
-                                    entity.Remove(0, entity.Length);
-                                }
-                                break;
-                        }
-                        break;
-                }
-            }
-
-            // finish the work
-            if (state == ParseState.EntityStart)
-            {
-                sb.Append("&" + entity);
-            }
-            return sb.ToString();
-        }
-
-        /// <summary>
-        /// Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
-        /// </summary>
-        /// <param name="node">The node to entitize.</param>
-        /// <returns>An entitized cloned node.</returns>
-        public static HtmlNode Entitize(HtmlNode node)
-        {
-            if (node == null)
-            {
-                throw new ArgumentNullException("node");
-            }
-            HtmlNode result = node.CloneNode(true);
-            if (result.HasAttributes)
-                Entitize(result.Attributes);
-
-            if (result.HasChildNodes)
-            {
-                Entitize(result.ChildNodes);
-            }
-            else
-            {
-                if (result.NodeType == HtmlNodeType.Text)
-                {
-                    ((HtmlTextNode) result).Text = Entitize(((HtmlTextNode) result).Text, true, true);
-                }
-            }
-            return result;
-        }
-
-
-        /// <summary>
-        /// Replace characters above 127 by entities.
-        /// </summary>
-        /// <param name="text">The source text.</param>
-        /// <returns>The result text.</returns>
-        public static string Entitize(string text)
-        {
-            return Entitize(text, true);
-        }
-
-        /// <summary>
-        /// Replace characters above 127 by entities.
-        /// </summary>
-        /// <param name="text">The source text.</param>
-        /// <param name="useNames">If set to false, the function will not use known entities name. Default is true.</param>
-        /// <returns>The result text.</returns>
-        public static string Entitize(string text, bool useNames)
-        {
-            return Entitize(text, useNames, false);
-        }
-
-        /// <summary>
-        /// Replace characters above 127 by entities.
-        /// </summary>
-        /// <param name="text">The source text.</param>
-        /// <param name="useNames">If set to false, the function will not use known entities name. Default is true.</param>
-        /// <param name="entitizeQuotAmpAndLtGt">If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.</param>
-        /// <returns>The result text</returns>
-        public static string Entitize(string text, bool useNames, bool entitizeQuotAmpAndLtGt)
-//		_entityValue.Add("quot", 34);	// quotation mark = APL quote, U+0022 ISOnum 
-//		_entityName.Add(34, "quot");
-//		_entityValue.Add("amp", 38);	// ampersand, U+0026 ISOnum 
-//		_entityName.Add(38, "amp");
-//		_entityValue.Add("lt", 60);	// less-than sign, U+003C ISOnum 
-//		_entityName.Add(60, "lt");
-//		_entityValue.Add("gt", 62);	// greater-than sign, U+003E ISOnum 
-//		_entityName.Add(62, "gt");
-        {
-            if (text == null)
-                return null;
-
-            if (text.Length == 0)
-                return text;
-
-            StringBuilder sb = new StringBuilder(text.Length);
-            for (int i = 0; i < text.Length; i++)
-            {
-                int code = text[i];
-                if ((code > 127) ||
-                    (entitizeQuotAmpAndLtGt && ((code == 34) || (code == 38) || (code == 60) || (code == 62))))
-                {
-                    string entity = _entityName[code] as string;
-                    if ((entity == null) || (!useNames))
-                    {
-                        sb.Append("&#" + code + ";");
-                    }
-                    else
-                    {
-                        sb.Append("&" + entity + ";");
-                    }
-                }
-                else
-                {
-                    sb.Append(text[i]);
-                }
-            }
-
-            return sb.ToString();
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private static void Entitize(HtmlAttributeCollection collection)
-        {
-            foreach (HtmlAttribute at in collection)
-            {
-                at.Value = Entitize(at.Value);
-            }
-        }
-
-        private static void Entitize(HtmlNodeCollection collection)
-        {
-            foreach (HtmlNode node in collection)
-            {
-                if (node.HasAttributes)
-                    Entitize(node.Attributes);
-
-                if (node.HasChildNodes)
-                {
-                    Entitize(node.ChildNodes);
-                }
-                else
-                {
-                    if (node.NodeType == HtmlNodeType.Text)
-                    {
-                        ((HtmlTextNode) node).Text = Entitize(((HtmlTextNode) node).Text, true, true);
-                    }
-                }
-            }
-        }
-
-        #endregion
-
-        #region Nested type: ParseState
-
-        private enum ParseState
-        {
-            Text,
-            EntityStart
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Collections;
+using System.Text;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// A utility class to replace special characters by entities and vice-versa.
+    /// Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+    /// </summary>
+    public class HtmlEntity
+    {
+        #region Static Members
+
+        private static readonly int _maxEntitySize;
+        private static Hashtable _entityName;
+        private static Hashtable _entityValue;
+
+        /// <summary>
+        /// A collection of entities indexed by name.
+        /// </summary>
+        public static Hashtable EntityName
+        {
+            get { return _entityName; }
+        }
+
+        /// <summary>
+        /// A collection of entities indexed by value.
+        /// </summary>
+        public static Hashtable EntityValue
+        {
+            get { return _entityValue; }
+        }
+
+        #endregion
+
+        #region Constructors
+
+        static HtmlEntity()
+        {
+            _entityName = new Hashtable();
+            _entityValue = new Hashtable();
+
+            #region Entities Definition
+
+            _entityValue.Add("nbsp", 160); // no-break space = non-breaking space, U+00A0 ISOnum 
+            _entityName.Add(160, "nbsp");
+            _entityValue.Add("iexcl", 161); // inverted exclamation mark, U+00A1 ISOnum 
+            _entityName.Add(161, "iexcl");
+            _entityValue.Add("cent", 162); // cent sign, U+00A2 ISOnum 
+            _entityName.Add(162, "cent");
+            _entityValue.Add("pound", 163); // pound sign, U+00A3 ISOnum 
+            _entityName.Add(163, "pound");
+            _entityValue.Add("curren", 164); // currency sign, U+00A4 ISOnum 
+            _entityName.Add(164, "curren");
+            _entityValue.Add("yen", 165); // yen sign = yuan sign, U+00A5 ISOnum 
+            _entityName.Add(165, "yen");
+            _entityValue.Add("brvbar", 166); // broken bar = broken vertical bar, U+00A6 ISOnum 
+            _entityName.Add(166, "brvbar");
+            _entityValue.Add("sect", 167); // section sign, U+00A7 ISOnum 
+            _entityName.Add(167, "sect");
+            _entityValue.Add("uml", 168); // diaeresis = spacing diaeresis, U+00A8 ISOdia 
+            _entityName.Add(168, "uml");
+            _entityValue.Add("copy", 169); // copyright sign, U+00A9 ISOnum 
+            _entityName.Add(169, "copy");
+            _entityValue.Add("ordf", 170); // feminine ordinal indicator, U+00AA ISOnum 
+            _entityName.Add(170, "ordf");
+            _entityValue.Add("laquo", 171);
+                // left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum 
+            _entityName.Add(171, "laquo");
+            _entityValue.Add("not", 172); // not sign, U+00AC ISOnum 
+            _entityName.Add(172, "not");
+            _entityValue.Add("shy", 173); // soft hyphen = discretionary hyphen, U+00AD ISOnum 
+            _entityName.Add(173, "shy");
+            _entityValue.Add("reg", 174); // registered sign = registered trade mark sign, U+00AE ISOnum 
+            _entityName.Add(174, "reg");
+            _entityValue.Add("macr", 175); // macron = spacing macron = overline = APL overbar, U+00AF ISOdia 
+            _entityName.Add(175, "macr");
+            _entityValue.Add("deg", 176); // degree sign, U+00B0 ISOnum 
+            _entityName.Add(176, "deg");
+            _entityValue.Add("plusmn", 177); // plus-minus sign = plus-or-minus sign, U+00B1 ISOnum 
+            _entityName.Add(177, "plusmn");
+            _entityValue.Add("sup2", 178); // superscript two = superscript digit two = squared, U+00B2 ISOnum 
+            _entityName.Add(178, "sup2");
+            _entityValue.Add("sup3", 179); // superscript three = superscript digit three = cubed, U+00B3 ISOnum 
+            _entityName.Add(179, "sup3");
+            _entityValue.Add("acute", 180); // acute accent = spacing acute, U+00B4 ISOdia 
+            _entityName.Add(180, "acute");
+            _entityValue.Add("micro", 181); // micro sign, U+00B5 ISOnum 
+            _entityName.Add(181, "micro");
+            _entityValue.Add("para", 182); // pilcrow sign = paragraph sign, U+00B6 ISOnum 
+            _entityName.Add(182, "para");
+            _entityValue.Add("middot", 183); // middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum 
+            _entityName.Add(183, "middot");
+            _entityValue.Add("cedil", 184); // cedilla = spacing cedilla, U+00B8 ISOdia 
+            _entityName.Add(184, "cedil");
+            _entityValue.Add("sup1", 185); // superscript one = superscript digit one, U+00B9 ISOnum 
+            _entityName.Add(185, "sup1");
+            _entityValue.Add("ordm", 186); // masculine ordinal indicator, U+00BA ISOnum 
+            _entityName.Add(186, "ordm");
+            _entityValue.Add("raquo", 187);
+                // right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum 
+            _entityName.Add(187, "raquo");
+            _entityValue.Add("frac14", 188); // vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum 
+            _entityName.Add(188, "frac14");
+            _entityValue.Add("frac12", 189); // vulgar fraction one half = fraction one half, U+00BD ISOnum 
+            _entityName.Add(189, "frac12");
+            _entityValue.Add("frac34", 190); // vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum 
+            _entityName.Add(190, "frac34");
+            _entityValue.Add("iquest", 191); // inverted question mark = turned question mark, U+00BF ISOnum 
+            _entityName.Add(191, "iquest");
+            _entityValue.Add("Agrave", 192);
+                // latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1 
+            _entityName.Add(192, "Agrave");
+            _entityValue.Add("Aacute", 193); // latin capital letter A with acute, U+00C1 ISOlat1 
+            _entityName.Add(193, "Aacute");
+            _entityValue.Add("Acirc", 194); // latin capital letter A with circumflex, U+00C2 ISOlat1 
+            _entityName.Add(194, "Acirc");
+            _entityValue.Add("Atilde", 195); // latin capital letter A with tilde, U+00C3 ISOlat1 
+            _entityName.Add(195, "Atilde");
+            _entityValue.Add("Auml", 196); // latin capital letter A with diaeresis, U+00C4 ISOlat1 
+            _entityName.Add(196, "Auml");
+            _entityValue.Add("Aring", 197);
+                // latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1 
+            _entityName.Add(197, "Aring");
+            _entityValue.Add("AElig", 198); // latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1 
+            _entityName.Add(198, "AElig");
+            _entityValue.Add("Ccedil", 199); // latin capital letter C with cedilla, U+00C7 ISOlat1 
+            _entityName.Add(199, "Ccedil");
+            _entityValue.Add("Egrave", 200); // latin capital letter E with grave, U+00C8 ISOlat1 
+            _entityName.Add(200, "Egrave");
+            _entityValue.Add("Eacute", 201); // latin capital letter E with acute, U+00C9 ISOlat1 
+            _entityName.Add(201, "Eacute");
+            _entityValue.Add("Ecirc", 202); // latin capital letter E with circumflex, U+00CA ISOlat1 
+            _entityName.Add(202, "Ecirc");
+            _entityValue.Add("Euml", 203); // latin capital letter E with diaeresis, U+00CB ISOlat1 
+            _entityName.Add(203, "Euml");
+            _entityValue.Add("Igrave", 204); // latin capital letter I with grave, U+00CC ISOlat1 
+            _entityName.Add(204, "Igrave");
+            _entityValue.Add("Iacute", 205); // latin capital letter I with acute, U+00CD ISOlat1 
+            _entityName.Add(205, "Iacute");
+            _entityValue.Add("Icirc", 206); // latin capital letter I with circumflex, U+00CE ISOlat1 
+            _entityName.Add(206, "Icirc");
+            _entityValue.Add("Iuml", 207); // latin capital letter I with diaeresis, U+00CF ISOlat1 
+            _entityName.Add(207, "Iuml");
+            _entityValue.Add("ETH", 208); // latin capital letter ETH, U+00D0 ISOlat1 
+            _entityName.Add(208, "ETH");
+            _entityValue.Add("Ntilde", 209); // latin capital letter N with tilde, U+00D1 ISOlat1 
+            _entityName.Add(209, "Ntilde");
+            _entityValue.Add("Ograve", 210); // latin capital letter O with grave, U+00D2 ISOlat1 
+            _entityName.Add(210, "Ograve");
+            _entityValue.Add("Oacute", 211); // latin capital letter O with acute, U+00D3 ISOlat1 
+            _entityName.Add(211, "Oacute");
+            _entityValue.Add("Ocirc", 212); // latin capital letter O with circumflex, U+00D4 ISOlat1 
+            _entityName.Add(212, "Ocirc");
+            _entityValue.Add("Otilde", 213); // latin capital letter O with tilde, U+00D5 ISOlat1 
+            _entityName.Add(213, "Otilde");
+            _entityValue.Add("Ouml", 214); // latin capital letter O with diaeresis, U+00D6 ISOlat1 
+            _entityName.Add(214, "Ouml");
+            _entityValue.Add("times", 215); // multiplication sign, U+00D7 ISOnum 
+            _entityName.Add(215, "times");
+            _entityValue.Add("Oslash", 216);
+                // latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1 
+            _entityName.Add(216, "Oslash");
+            _entityValue.Add("Ugrave", 217); // latin capital letter U with grave, U+00D9 ISOlat1 
+            _entityName.Add(217, "Ugrave");
+            _entityValue.Add("Uacute", 218); // latin capital letter U with acute, U+00DA ISOlat1 
+            _entityName.Add(218, "Uacute");
+            _entityValue.Add("Ucirc", 219); // latin capital letter U with circumflex, U+00DB ISOlat1 
+            _entityName.Add(219, "Ucirc");
+            _entityValue.Add("Uuml", 220); // latin capital letter U with diaeresis, U+00DC ISOlat1 
+            _entityName.Add(220, "Uuml");
+            _entityValue.Add("Yacute", 221); // latin capital letter Y with acute, U+00DD ISOlat1 
+            _entityName.Add(221, "Yacute");
+            _entityValue.Add("THORN", 222); // latin capital letter THORN, U+00DE ISOlat1 
+            _entityName.Add(222, "THORN");
+            _entityValue.Add("szlig", 223); // latin small letter sharp s = ess-zed, U+00DF ISOlat1 
+            _entityName.Add(223, "szlig");
+            _entityValue.Add("agrave", 224);
+                // latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1 
+            _entityName.Add(224, "agrave");
+            _entityValue.Add("aacute", 225); // latin small letter a with acute, U+00E1 ISOlat1 
+            _entityName.Add(225, "aacute");
+            _entityValue.Add("acirc", 226); // latin small letter a with circumflex, U+00E2 ISOlat1 
+            _entityName.Add(226, "acirc");
+            _entityValue.Add("atilde", 227); // latin small letter a with tilde, U+00E3 ISOlat1 
+            _entityName.Add(227, "atilde");
+            _entityValue.Add("auml", 228); // latin small letter a with diaeresis, U+00E4 ISOlat1 
+            _entityName.Add(228, "auml");
+            _entityValue.Add("aring", 229);
+                // latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1 
+            _entityName.Add(229, "aring");
+            _entityValue.Add("aelig", 230); // latin small letter ae = latin small ligature ae, U+00E6 ISOlat1 
+            _entityName.Add(230, "aelig");
+            _entityValue.Add("ccedil", 231); // latin small letter c with cedilla, U+00E7 ISOlat1 
+            _entityName.Add(231, "ccedil");
+            _entityValue.Add("egrave", 232); // latin small letter e with grave, U+00E8 ISOlat1 
+            _entityName.Add(232, "egrave");
+            _entityValue.Add("eacute", 233); // latin small letter e with acute, U+00E9 ISOlat1 
+            _entityName.Add(233, "eacute");
+            _entityValue.Add("ecirc", 234); // latin small letter e with circumflex, U+00EA ISOlat1 
+            _entityName.Add(234, "ecirc");
+            _entityValue.Add("euml", 235); // latin small letter e with diaeresis, U+00EB ISOlat1 
+            _entityName.Add(235, "euml");
+            _entityValue.Add("igrave", 236); // latin small letter i with grave, U+00EC ISOlat1 
+            _entityName.Add(236, "igrave");
+            _entityValue.Add("iacute", 237); // latin small letter i with acute, U+00ED ISOlat1 
+            _entityName.Add(237, "iacute");
+            _entityValue.Add("icirc", 238); // latin small letter i with circumflex, U+00EE ISOlat1 
+            _entityName.Add(238, "icirc");
+            _entityValue.Add("iuml", 239); // latin small letter i with diaeresis, U+00EF ISOlat1 
+            _entityName.Add(239, "iuml");
+            _entityValue.Add("eth", 240); // latin small letter eth, U+00F0 ISOlat1 
+            _entityName.Add(240, "eth");
+            _entityValue.Add("ntilde", 241); // latin small letter n with tilde, U+00F1 ISOlat1 
+            _entityName.Add(241, "ntilde");
+            _entityValue.Add("ograve", 242); // latin small letter o with grave, U+00F2 ISOlat1 
+            _entityName.Add(242, "ograve");
+            _entityValue.Add("oacute", 243); // latin small letter o with acute, U+00F3 ISOlat1 
+            _entityName.Add(243, "oacute");
+            _entityValue.Add("ocirc", 244); // latin small letter o with circumflex, U+00F4 ISOlat1 
+            _entityName.Add(244, "ocirc");
+            _entityValue.Add("otilde", 245); // latin small letter o with tilde, U+00F5 ISOlat1 
+            _entityName.Add(245, "otilde");
+            _entityValue.Add("ouml", 246); // latin small letter o with diaeresis, U+00F6 ISOlat1 
+            _entityName.Add(246, "ouml");
+            _entityValue.Add("divide", 247); // division sign, U+00F7 ISOnum 
+            _entityName.Add(247, "divide");
+            _entityValue.Add("oslash", 248);
+                // latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1 
+            _entityName.Add(248, "oslash");
+            _entityValue.Add("ugrave", 249); // latin small letter u with grave, U+00F9 ISOlat1 
+            _entityName.Add(249, "ugrave");
+            _entityValue.Add("uacute", 250); // latin small letter u with acute, U+00FA ISOlat1 
+            _entityName.Add(250, "uacute");
+            _entityValue.Add("ucirc", 251); // latin small letter u with circumflex, U+00FB ISOlat1 
+            _entityName.Add(251, "ucirc");
+            _entityValue.Add("uuml", 252); // latin small letter u with diaeresis, U+00FC ISOlat1 
+            _entityName.Add(252, "uuml");
+            _entityValue.Add("yacute", 253); // latin small letter y with acute, U+00FD ISOlat1 
+            _entityName.Add(253, "yacute");
+            _entityValue.Add("thorn", 254); // latin small letter thorn, U+00FE ISOlat1 
+            _entityName.Add(254, "thorn");
+            _entityValue.Add("yuml", 255); // latin small letter y with diaeresis, U+00FF ISOlat1 
+            _entityName.Add(255, "yuml");
+            _entityValue.Add("fnof", 402); // latin small f with hook = function = florin, U+0192 ISOtech 
+            _entityName.Add(402, "fnof");
+            _entityValue.Add("Alpha", 913); // greek capital letter alpha, U+0391 
+            _entityName.Add(913, "Alpha");
+            _entityValue.Add("Beta", 914); // greek capital letter beta, U+0392 
+            _entityName.Add(914, "Beta");
+            _entityValue.Add("Gamma", 915); // greek capital letter gamma, U+0393 ISOgrk3 
+            _entityName.Add(915, "Gamma");
+            _entityValue.Add("Delta", 916); // greek capital letter delta, U+0394 ISOgrk3 
+            _entityName.Add(916, "Delta");
+            _entityValue.Add("Epsilon", 917); // greek capital letter epsilon, U+0395 
+            _entityName.Add(917, "Epsilon");
+            _entityValue.Add("Zeta", 918); // greek capital letter zeta, U+0396 
+            _entityName.Add(918, "Zeta");
+            _entityValue.Add("Eta", 919); // greek capital letter eta, U+0397 
+            _entityName.Add(919, "Eta");
+            _entityValue.Add("Theta", 920); // greek capital letter theta, U+0398 ISOgrk3 
+            _entityName.Add(920, "Theta");
+            _entityValue.Add("Iota", 921); // greek capital letter iota, U+0399 
+            _entityName.Add(921, "Iota");
+            _entityValue.Add("Kappa", 922); // greek capital letter kappa, U+039A 
+            _entityName.Add(922, "Kappa");
+            _entityValue.Add("Lambda", 923); // greek capital letter lambda, U+039B ISOgrk3 
+            _entityName.Add(923, "Lambda");
+            _entityValue.Add("Mu", 924); // greek capital letter mu, U+039C 
+            _entityName.Add(924, "Mu");
+            _entityValue.Add("Nu", 925); // greek capital letter nu, U+039D 
+            _entityName.Add(925, "Nu");
+            _entityValue.Add("Xi", 926); // greek capital letter xi, U+039E ISOgrk3 
+            _entityName.Add(926, "Xi");
+            _entityValue.Add("Omicron", 927); // greek capital letter omicron, U+039F 
+            _entityName.Add(927, "Omicron");
+            _entityValue.Add("Pi", 928); // greek capital letter pi, U+03A0 ISOgrk3 
+            _entityName.Add(928, "Pi");
+            _entityValue.Add("Rho", 929); // greek capital letter rho, U+03A1 
+            _entityName.Add(929, "Rho");
+            _entityValue.Add("Sigma", 931); // greek capital letter sigma, U+03A3 ISOgrk3 
+            _entityName.Add(931, "Sigma");
+            _entityValue.Add("Tau", 932); // greek capital letter tau, U+03A4 
+            _entityName.Add(932, "Tau");
+            _entityValue.Add("Upsilon", 933); // greek capital letter upsilon, U+03A5 ISOgrk3 
+            _entityName.Add(933, "Upsilon");
+            _entityValue.Add("Phi", 934); // greek capital letter phi, U+03A6 ISOgrk3 
+            _entityName.Add(934, "Phi");
+            _entityValue.Add("Chi", 935); // greek capital letter chi, U+03A7 
+            _entityName.Add(935, "Chi");
+            _entityValue.Add("Psi", 936); // greek capital letter psi, U+03A8 ISOgrk3 
+            _entityName.Add(936, "Psi");
+            _entityValue.Add("Omega", 937); // greek capital letter omega, U+03A9 ISOgrk3 
+            _entityName.Add(937, "Omega");
+            _entityValue.Add("alpha", 945); // greek small letter alpha, U+03B1 ISOgrk3 
+            _entityName.Add(945, "alpha");
+            _entityValue.Add("beta", 946); // greek small letter beta, U+03B2 ISOgrk3 
+            _entityName.Add(946, "beta");
+            _entityValue.Add("gamma", 947); // greek small letter gamma, U+03B3 ISOgrk3 
+            _entityName.Add(947, "gamma");
+            _entityValue.Add("delta", 948); // greek small letter delta, U+03B4 ISOgrk3 
+            _entityName.Add(948, "delta");
+            _entityValue.Add("epsilon", 949); // greek small letter epsilon, U+03B5 ISOgrk3 
+            _entityName.Add(949, "epsilon");
+            _entityValue.Add("zeta", 950); // greek small letter zeta, U+03B6 ISOgrk3 
+            _entityName.Add(950, "zeta");
+            _entityValue.Add("eta", 951); // greek small letter eta, U+03B7 ISOgrk3 
+            _entityName.Add(951, "eta");
+            _entityValue.Add("theta", 952); // greek small letter theta, U+03B8 ISOgrk3 
+            _entityName.Add(952, "theta");
+            _entityValue.Add("iota", 953); // greek small letter iota, U+03B9 ISOgrk3 
+            _entityName.Add(953, "iota");
+            _entityValue.Add("kappa", 954); // greek small letter kappa, U+03BA ISOgrk3 
+            _entityName.Add(954, "kappa");
+            _entityValue.Add("lambda", 955); // greek small letter lambda, U+03BB ISOgrk3 
+            _entityName.Add(955, "lambda");
+            _entityValue.Add("mu", 956); // greek small letter mu, U+03BC ISOgrk3 
+            _entityName.Add(956, "mu");
+            _entityValue.Add("nu", 957); // greek small letter nu, U+03BD ISOgrk3 
+            _entityName.Add(957, "nu");
+            _entityValue.Add("xi", 958); // greek small letter xi, U+03BE ISOgrk3 
+            _entityName.Add(958, "xi");
+            _entityValue.Add("omicron", 959); // greek small letter omicron, U+03BF NEW 
+            _entityName.Add(959, "omicron");
+            _entityValue.Add("pi", 960); // greek small letter pi, U+03C0 ISOgrk3 
+            _entityName.Add(960, "pi");
+            _entityValue.Add("rho", 961); // greek small letter rho, U+03C1 ISOgrk3 
+            _entityName.Add(961, "rho");
+            _entityValue.Add("sigmaf", 962); // greek small letter final sigma, U+03C2 ISOgrk3 
+            _entityName.Add(962, "sigmaf");
+            _entityValue.Add("sigma", 963); // greek small letter sigma, U+03C3 ISOgrk3 
+            _entityName.Add(963, "sigma");
+            _entityValue.Add("tau", 964); // greek small letter tau, U+03C4 ISOgrk3 
+            _entityName.Add(964, "tau");
+            _entityValue.Add("upsilon", 965); // greek small letter upsilon, U+03C5 ISOgrk3 
+            _entityName.Add(965, "upsilon");
+            _entityValue.Add("phi", 966); // greek small letter phi, U+03C6 ISOgrk3 
+            _entityName.Add(966, "phi");
+            _entityValue.Add("chi", 967); // greek small letter chi, U+03C7 ISOgrk3 
+            _entityName.Add(967, "chi");
+            _entityValue.Add("psi", 968); // greek small letter psi, U+03C8 ISOgrk3 
+            _entityName.Add(968, "psi");
+            _entityValue.Add("omega", 969); // greek small letter omega, U+03C9 ISOgrk3 
+            _entityName.Add(969, "omega");
+            _entityValue.Add("thetasym", 977); // greek small letter theta symbol, U+03D1 NEW 
+            _entityName.Add(977, "thetasym");
+            _entityValue.Add("upsih", 978); // greek upsilon with hook symbol, U+03D2 NEW 
+            _entityName.Add(978, "upsih");
+            _entityValue.Add("piv", 982); // greek pi symbol, U+03D6 ISOgrk3 
+            _entityName.Add(982, "piv");
+            _entityValue.Add("bull", 8226); // bullet = black small circle, U+2022 ISOpub 
+            _entityName.Add(8226, "bull");
+            _entityValue.Add("hellip", 8230); // horizontal ellipsis = three dot leader, U+2026 ISOpub 
+            _entityName.Add(8230, "hellip");
+            _entityValue.Add("prime", 8242); // prime = minutes = feet, U+2032 ISOtech 
+            _entityName.Add(8242, "prime");
+            _entityValue.Add("Prime", 8243); // double prime = seconds = inches, U+2033 ISOtech 
+            _entityName.Add(8243, "Prime");
+            _entityValue.Add("oline", 8254); // overline = spacing overscore, U+203E NEW 
+            _entityName.Add(8254, "oline");
+            _entityValue.Add("frasl", 8260); // fraction slash, U+2044 NEW 
+            _entityName.Add(8260, "frasl");
+            _entityValue.Add("weierp", 8472); // script capital P = power set = Weierstrass p, U+2118 ISOamso 
+            _entityName.Add(8472, "weierp");
+            _entityValue.Add("image", 8465); // blackletter capital I = imaginary part, U+2111 ISOamso 
+            _entityName.Add(8465, "image");
+            _entityValue.Add("real", 8476); // blackletter capital R = real part symbol, U+211C ISOamso 
+            _entityName.Add(8476, "real");
+            _entityValue.Add("trade", 8482); // trade mark sign, U+2122 ISOnum 
+            _entityName.Add(8482, "trade");
+            _entityValue.Add("alefsym", 8501); // alef symbol = first transfinite cardinal, U+2135 NEW 
+            _entityName.Add(8501, "alefsym");
+            _entityValue.Add("larr", 8592); // leftwards arrow, U+2190 ISOnum 
+            _entityName.Add(8592, "larr");
+            _entityValue.Add("uarr", 8593); // upwards arrow, U+2191 ISOnum
+            _entityName.Add(8593, "uarr");
+            _entityValue.Add("rarr", 8594); // rightwards arrow, U+2192 ISOnum 
+            _entityName.Add(8594, "rarr");
+            _entityValue.Add("darr", 8595); // downwards arrow, U+2193 ISOnum 
+            _entityName.Add(8595, "darr");
+            _entityValue.Add("harr", 8596); // left right arrow, U+2194 ISOamsa 
+            _entityName.Add(8596, "harr");
+            _entityValue.Add("crarr", 8629); // downwards arrow with corner leftwards = carriage return, U+21B5 NEW 
+            _entityName.Add(8629, "crarr");
+            _entityValue.Add("lArr", 8656); // leftwards double arrow, U+21D0 ISOtech 
+            _entityName.Add(8656, "lArr");
+            _entityValue.Add("uArr", 8657); // upwards double arrow, U+21D1 ISOamsa 
+            _entityName.Add(8657, "uArr");
+            _entityValue.Add("rArr", 8658); // rightwards double arrow, U+21D2 ISOtech 
+            _entityName.Add(8658, "rArr");
+            _entityValue.Add("dArr", 8659); // downwards double arrow, U+21D3 ISOamsa 
+            _entityName.Add(8659, "dArr");
+            _entityValue.Add("hArr", 8660); // left right double arrow, U+21D4 ISOamsa 
+            _entityName.Add(8660, "hArr");
+            _entityValue.Add("forall", 8704); // for all, U+2200 ISOtech 
+            _entityName.Add(8704, "forall");
+            _entityValue.Add("part", 8706); // partial differential, U+2202 ISOtech 
+            _entityName.Add(8706, "part");
+            _entityValue.Add("exist", 8707); // there exists, U+2203 ISOtech 
+            _entityName.Add(8707, "exist");
+            _entityValue.Add("empty", 8709); // empty set = null set = diameter, U+2205 ISOamso 
+            _entityName.Add(8709, "empty");
+            _entityValue.Add("nabla", 8711); // nabla = backward difference, U+2207 ISOtech 
+            _entityName.Add(8711, "nabla");
+            _entityValue.Add("isin", 8712); // element of, U+2208 ISOtech 
+            _entityName.Add(8712, "isin");
+            _entityValue.Add("notin", 8713); // not an element of, U+2209 ISOtech 
+            _entityName.Add(8713, "notin");
+            _entityValue.Add("ni", 8715); // contains as member, U+220B ISOtech 
+            _entityName.Add(8715, "ni");
+            _entityValue.Add("prod", 8719); // n-ary product = product sign, U+220F ISOamsb 
+            _entityName.Add(8719, "prod");
+            _entityValue.Add("sum", 8721); // n-ary sumation, U+2211 ISOamsb 
+            _entityName.Add(8721, "sum");
+            _entityValue.Add("minus", 8722); // minus sign, U+2212 ISOtech 
+            _entityName.Add(8722, "minus");
+            _entityValue.Add("lowast", 8727); // asterisk operator, U+2217 ISOtech 
+            _entityName.Add(8727, "lowast");
+            _entityValue.Add("radic", 8730); // square root = radical sign, U+221A ISOtech 
+            _entityName.Add(8730, "radic");
+            _entityValue.Add("prop", 8733); // proportional to, U+221D ISOtech 
+            _entityName.Add(8733, "prop");
+            _entityValue.Add("infin", 8734); // infinity, U+221E ISOtech 
+            _entityName.Add(8734, "infin");
+            _entityValue.Add("ang", 8736); // angle, U+2220 ISOamso 
+            _entityName.Add(8736, "ang");
+            _entityValue.Add("and", 8743); // logical and = wedge, U+2227 ISOtech 
+            _entityName.Add(8743, "and");
+            _entityValue.Add("or", 8744); // logical or = vee, U+2228 ISOtech 
+            _entityName.Add(8744, "or");
+            _entityValue.Add("cap", 8745); // intersection = cap, U+2229 ISOtech 
+            _entityName.Add(8745, "cap");
+            _entityValue.Add("cup", 8746); // union = cup, U+222A ISOtech 
+            _entityName.Add(8746, "cup");
+            _entityValue.Add("int", 8747); // integral, U+222B ISOtech 
+            _entityName.Add(8747, "int");
+            _entityValue.Add("there4", 8756); // therefore, U+2234 ISOtech 
+            _entityName.Add(8756, "there4");
+            _entityValue.Add("sim", 8764); // tilde operator = varies with = similar to, U+223C ISOtech 
+            _entityName.Add(8764, "sim");
+            _entityValue.Add("cong", 8773); // approximately equal to, U+2245 ISOtech 
+            _entityName.Add(8773, "cong");
+            _entityValue.Add("asymp", 8776); // almost equal to = asymptotic to, U+2248 ISOamsr 
+            _entityName.Add(8776, "asymp");
+            _entityValue.Add("ne", 8800); // not equal to, U+2260 ISOtech 
+            _entityName.Add(8800, "ne");
+            _entityValue.Add("equiv", 8801); // identical to, U+2261 ISOtech 
+            _entityName.Add(8801, "equiv");
+            _entityValue.Add("le", 8804); // less-than or equal to, U+2264 ISOtech 
+            _entityName.Add(8804, "le");
+            _entityValue.Add("ge", 8805); // greater-than or equal to, U+2265 ISOtech 
+            _entityName.Add(8805, "ge");
+            _entityValue.Add("sub", 8834); // subset of, U+2282 ISOtech 
+            _entityName.Add(8834, "sub");
+            _entityValue.Add("sup", 8835); // superset of, U+2283 ISOtech 
+            _entityName.Add(8835, "sup");
+            _entityValue.Add("nsub", 8836); // not a subset of, U+2284 ISOamsn 
+            _entityName.Add(8836, "nsub");
+            _entityValue.Add("sube", 8838); // subset of or equal to, U+2286 ISOtech 
+            _entityName.Add(8838, "sube");
+            _entityValue.Add("supe", 8839); // superset of or equal to, U+2287 ISOtech 
+            _entityName.Add(8839, "supe");
+            _entityValue.Add("oplus", 8853); // circled plus = direct sum, U+2295 ISOamsb 
+            _entityName.Add(8853, "oplus");
+            _entityValue.Add("otimes", 8855); // circled times = vector product, U+2297 ISOamsb 
+            _entityName.Add(8855, "otimes");
+            _entityValue.Add("perp", 8869); // up tack = orthogonal to = perpendicular, U+22A5 ISOtech 
+            _entityName.Add(8869, "perp");
+            _entityValue.Add("sdot", 8901); // dot operator, U+22C5 ISOamsb 
+            _entityName.Add(8901, "sdot");
+            _entityValue.Add("lceil", 8968); // left ceiling = apl upstile, U+2308 ISOamsc 
+            _entityName.Add(8968, "lceil");
+            _entityValue.Add("rceil", 8969); // right ceiling, U+2309 ISOamsc 
+            _entityName.Add(8969, "rceil");
+            _entityValue.Add("lfloor", 8970); // left floor = apl downstile, U+230A ISOamsc 
+            _entityName.Add(8970, "lfloor");
+            _entityValue.Add("rfloor", 8971); // right floor, U+230B ISOamsc 
+            _entityName.Add(8971, "rfloor");
+            _entityValue.Add("lang", 9001); // left-pointing angle bracket = bra, U+2329 ISOtech 
+            _entityName.Add(9001, "lang");
+            _entityValue.Add("rang", 9002); // right-pointing angle bracket = ket, U+232A ISOtech 
+            _entityName.Add(9002, "rang");
+            _entityValue.Add("loz", 9674); // lozenge, U+25CA ISOpub 
+            _entityName.Add(9674, "loz");
+            _entityValue.Add("spades", 9824); // black spade suit, U+2660 ISOpub 
+            _entityName.Add(9824, "spades");
+            _entityValue.Add("clubs", 9827); // black club suit = shamrock, U+2663 ISOpub 
+            _entityName.Add(9827, "clubs");
+            _entityValue.Add("hearts", 9829); // black heart suit = valentine, U+2665 ISOpub 
+            _entityName.Add(9829, "hearts");
+            _entityValue.Add("diams", 9830); // black diamond suit, U+2666 ISOpub 
+            _entityName.Add(9830, "diams");
+            _entityValue.Add("quot", 34); // quotation mark = APL quote, U+0022 ISOnum 
+            _entityName.Add(34, "quot");
+            _entityValue.Add("amp", 38); // ampersand, U+0026 ISOnum 
+            _entityName.Add(38, "amp");
+            _entityValue.Add("lt", 60); // less-than sign, U+003C ISOnum 
+            _entityName.Add(60, "lt");
+            _entityValue.Add("gt", 62); // greater-than sign, U+003E ISOnum 
+            _entityName.Add(62, "gt");
+            _entityValue.Add("OElig", 338); // latin capital ligature OE, U+0152 ISOlat2 
+            _entityName.Add(338, "OElig");
+            _entityValue.Add("oelig", 339); // latin small ligature oe, U+0153 ISOlat2 
+            _entityName.Add(339, "oelig");
+            _entityValue.Add("Scaron", 352); // latin capital letter S with caron, U+0160 ISOlat2 
+            _entityName.Add(352, "Scaron");
+            _entityValue.Add("scaron", 353); // latin small letter s with caron, U+0161 ISOlat2 
+            _entityName.Add(353, "scaron");
+            _entityValue.Add("Yuml", 376); // latin capital letter Y with diaeresis, U+0178 ISOlat2 
+            _entityName.Add(376, "Yuml");
+            _entityValue.Add("circ", 710); // modifier letter circumflex accent, U+02C6 ISOpub 
+            _entityName.Add(710, "circ");
+            _entityValue.Add("tilde", 732); // small tilde, U+02DC ISOdia 
+            _entityName.Add(732, "tilde");
+            _entityValue.Add("ensp", 8194); // en space, U+2002 ISOpub 
+            _entityName.Add(8194, "ensp");
+            _entityValue.Add("emsp", 8195); // em space, U+2003 ISOpub 
+            _entityName.Add(8195, "emsp");
+            _entityValue.Add("thinsp", 8201); // thin space, U+2009 ISOpub 
+            _entityName.Add(8201, "thinsp");
+            _entityValue.Add("zwnj", 8204); // zero width non-joiner, U+200C NEW RFC 2070 
+            _entityName.Add(8204, "zwnj");
+            _entityValue.Add("zwj", 8205); // zero width joiner, U+200D NEW RFC 2070 
+            _entityName.Add(8205, "zwj");
+            _entityValue.Add("lrm", 8206); // left-to-right mark, U+200E NEW RFC 2070 
+            _entityName.Add(8206, "lrm");
+            _entityValue.Add("rlm", 8207); // right-to-left mark, U+200F NEW RFC 2070 
+            _entityName.Add(8207, "rlm");
+            _entityValue.Add("ndash", 8211); // en dash, U+2013 ISOpub 
+            _entityName.Add(8211, "ndash");
+            _entityValue.Add("mdash", 8212); // em dash, U+2014 ISOpub 
+            _entityName.Add(8212, "mdash");
+            _entityValue.Add("lsquo", 8216); // left single quotation mark, U+2018 ISOnum 
+            _entityName.Add(8216, "lsquo");
+            _entityValue.Add("rsquo", 8217); // right single quotation mark, U+2019 ISOnum 
+            _entityName.Add(8217, "rsquo");
+            _entityValue.Add("sbquo", 8218); // single low-9 quotation mark, U+201A NEW 
+            _entityName.Add(8218, "sbquo");
+            _entityValue.Add("ldquo", 8220); // left double quotation mark, U+201C ISOnum 
+            _entityName.Add(8220, "ldquo");
+            _entityValue.Add("rdquo", 8221); // right double quotation mark, U+201D ISOnum 
+            _entityName.Add(8221, "rdquo");
+            _entityValue.Add("bdquo", 8222); // double low-9 quotation mark, U+201E NEW 
+            _entityName.Add(8222, "bdquo");
+            _entityValue.Add("dagger", 8224); // dagger, U+2020 ISOpub 
+            _entityName.Add(8224, "dagger");
+            _entityValue.Add("Dagger", 8225); // double dagger, U+2021 ISOpub 
+            _entityName.Add(8225, "Dagger");
+            _entityValue.Add("permil", 8240); // per mille sign, U+2030 ISOtech 
+            _entityName.Add(8240, "permil");
+            _entityValue.Add("lsaquo", 8249); // single left-pointing angle quotation mark, U+2039 ISO proposed 
+            _entityName.Add(8249, "lsaquo");
+            _entityValue.Add("rsaquo", 8250); // single right-pointing angle quotation mark, U+203A ISO proposed 
+            _entityName.Add(8250, "rsaquo");
+            _entityValue.Add("euro", 8364); // euro sign, U+20AC NEW 
+            _entityName.Add(8364, "euro");
+
+            _maxEntitySize = 8 + 1; // we add the # char
+
+            #endregion
+        }
+
+        private HtmlEntity()
+        {
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Replace known entities by characters.
+        /// </summary>
+        /// <param name="text">The source text.</param>
+        /// <returns>The result text.</returns>
+        public static string DeEntitize(string text)
+        {
+            if (text == null)
+                return null;
+
+            if (text.Length == 0)
+                return text;
+
+            StringBuilder sb = new StringBuilder(text.Length);
+            ParseState state = ParseState.Text;
+            StringBuilder entity = new StringBuilder(10);
+
+            for (int i = 0; i < text.Length; i++)
+            {
+                switch (state)
+                {
+                    case ParseState.Text:
+                        switch (text[i])
+                        {
+                            case '&':
+                                state = ParseState.EntityStart;
+                                break;
+
+                            default:
+                                sb.Append(text[i]);
+                                break;
+                        }
+                        break;
+
+                    case ParseState.EntityStart:
+                        switch (text[i])
+                        {
+                            case ';':
+                                if (entity.Length == 0)
+                                {
+                                    sb.Append("&;");
+                                }
+                                else
+                                {
+                                    if (entity[0] == '#')
+                                    {
+                                        string e = entity.ToString();
+                                        try
+                                        {
+                                            int code = Convert.ToInt32(e.Substring(1, e.Length - 1));
+                                            sb.Append(Convert.ToChar(code));
+                                        }
+                                        catch
+                                        {
+                                            sb.Append("&#" + e + ";");
+                                        }
+                                    }
+                                    else
+                                    {
+                                        // named entity?
+                                        int code;
+                                        object o = _entityValue[entity.ToString()];
+                                        if (o == null)
+                                        {
+                                            // nope
+                                            sb.Append("&" + entity + ";");
+                                        }
+                                        else
+                                        {
+                                            // we found one
+                                            code = (int) o;
+                                            sb.Append(Convert.ToChar(code));
+                                        }
+                                    }
+                                    entity.Remove(0, entity.Length);
+                                }
+                                state = ParseState.Text;
+                                break;
+
+                            case '&':
+                                // new entity start without end, it was not an entity...
+                                sb.Append("&" + entity);
+                                entity.Remove(0, entity.Length);
+                                break;
+
+                            default:
+                                entity.Append(text[i]);
+                                if (entity.Length > _maxEntitySize)
+                                {
+                                    // unknown stuff, just don't touch it
+                                    state = ParseState.Text;
+                                    sb.Append("&" + entity);
+                                    entity.Remove(0, entity.Length);
+                                }
+                                break;
+                        }
+                        break;
+                }
+            }
+
+            // finish the work
+            if (state == ParseState.EntityStart)
+            {
+                sb.Append("&" + entity);
+            }
+            return sb.ToString();
+        }
+
+        /// <summary>
+        /// Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+        /// </summary>
+        /// <param name="node">The node to entitize.</param>
+        /// <returns>An entitized cloned node.</returns>
+        public static HtmlNode Entitize(HtmlNode node)
+        {
+            if (node == null)
+            {
+                throw new ArgumentNullException("node");
+            }
+            HtmlNode result = node.CloneNode(true);
+            if (result.HasAttributes)
+                Entitize(result.Attributes);
+
+            if (result.HasChildNodes)
+            {
+                Entitize(result.ChildNodes);
+            }
+            else
+            {
+                if (result.NodeType == HtmlNodeType.Text)
+                {
+                    ((HtmlTextNode) result).Text = Entitize(((HtmlTextNode) result).Text, true, true);
+                }
+            }
+            return result;
+        }
+
+
+        /// <summary>
+        /// Replace characters above 127 by entities.
+        /// </summary>
+        /// <param name="text">The source text.</param>
+        /// <returns>The result text.</returns>
+        public static string Entitize(string text)
+        {
+            return Entitize(text, true);
+        }
+
+        /// <summary>
+        /// Replace characters above 127 by entities.
+        /// </summary>
+        /// <param name="text">The source text.</param>
+        /// <param name="useNames">If set to false, the function will not use known entities name. Default is true.</param>
+        /// <returns>The result text.</returns>
+        public static string Entitize(string text, bool useNames)
+        {
+            return Entitize(text, useNames, false);
+        }
+
+        /// <summary>
+        /// Replace characters above 127 by entities.
+        /// </summary>
+        /// <param name="text">The source text.</param>
+        /// <param name="useNames">If set to false, the function will not use known entities name. Default is true.</param>
+        /// <param name="entitizeQuotAmpAndLtGt">If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.</param>
+        /// <returns>The result text</returns>
+        public static string Entitize(string text, bool useNames, bool entitizeQuotAmpAndLtGt)
+//		_entityValue.Add("quot", 34);	// quotation mark = APL quote, U+0022 ISOnum 
+//		_entityName.Add(34, "quot");
+//		_entityValue.Add("amp", 38);	// ampersand, U+0026 ISOnum 
+//		_entityName.Add(38, "amp");
+//		_entityValue.Add("lt", 60);	// less-than sign, U+003C ISOnum 
+//		_entityName.Add(60, "lt");
+//		_entityValue.Add("gt", 62);	// greater-than sign, U+003E ISOnum 
+//		_entityName.Add(62, "gt");
+        {
+            if (text == null)
+                return null;
+
+            if (text.Length == 0)
+                return text;
+
+            StringBuilder sb = new StringBuilder(text.Length);
+            for (int i = 0; i < text.Length; i++)
+            {
+                int code = text[i];
+                if ((code > 127) ||
+                    (entitizeQuotAmpAndLtGt && ((code == 34) || (code == 38) || (code == 60) || (code == 62))))
+                {
+                    string entity = _entityName[code] as string;
+                    if ((entity == null) || (!useNames))
+                    {
+                        sb.Append("&#" + code + ";");
+                    }
+                    else
+                    {
+                        sb.Append("&" + entity + ";");
+                    }
+                }
+                else
+                {
+                    sb.Append(text[i]);
+                }
+            }
+
+            return sb.ToString();
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private static void Entitize(HtmlAttributeCollection collection)
+        {
+            foreach (HtmlAttribute at in collection)
+            {
+                at.Value = Entitize(at.Value);
+            }
+        }
+
+        private static void Entitize(HtmlNodeCollection collection)
+        {
+            foreach (HtmlNode node in collection)
+            {
+                if (node.HasAttributes)
+                    Entitize(node.Attributes);
+
+                if (node.HasChildNodes)
+                {
+                    Entitize(node.ChildNodes);
+                }
+                else
+                {
+                    if (node.NodeType == HtmlNodeType.Text)
+                    {
+                        ((HtmlTextNode) node).Text = Entitize(((HtmlTextNode) node).Text, true, true);
+                    }
+                }
+            }
+        }
+
+        #endregion
+
+        #region Nested type: ParseState
+
+        private enum ParseState
+        {
+            Text,
+            EntityStart
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlNameTable.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlNameTable.cs
@@ -1,52 +1,52 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System.Xml;
-
-namespace HtmlAgilityPack
-{
-    internal class HtmlNameTable : XmlNameTable
-    {
-        #region Fields
-
-        private NameTable _nametable = new NameTable();
-
-        #endregion
-
-        #region Public Methods
-
-        public override string Add(string array)
-        {
-            return _nametable.Add(array);
-        }
-
-        public override string Add(char[] array, int offset, int length)
-        {
-            return _nametable.Add(array, offset, length);
-        }
-
-        public override string Get(string array)
-        {
-            return _nametable.Get(array);
-        }
-
-        public override string Get(char[] array, int offset, int length)
-        {
-            return _nametable.Get(array, offset, length);
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal string GetOrAdd(string array)
-        {
-            string s = Get(array);
-            if (s == null)
-            {
-                return Add(array);
-            }
-            return s;
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System.Xml;
+
+namespace HtmlAgilityPack
+{
+    internal class HtmlNameTable : XmlNameTable
+    {
+        #region Fields
+
+        private NameTable _nametable = new NameTable();
+
+        #endregion
+
+        #region Public Methods
+
+        public override string Add(string array)
+        {
+            return _nametable.Add(array);
+        }
+
+        public override string Add(char[] array, int offset, int length)
+        {
+            return _nametable.Add(array, offset, length);
+        }
+
+        public override string Get(string array)
+        {
+            return _nametable.Get(array);
+        }
+
+        public override string Get(char[] array, int offset, int length)
+        {
+            return _nametable.Get(array, offset, length);
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal string GetOrAdd(string array)
+        {
+            string s = Get(array);
+            if (s == null)
+            {
+                return Add(array);
+            }
+            return s;
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlNode.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlNode.cs
@@ -1,1996 +1,1996 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Xml;
-using System.Xml.XPath;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents an HTML node.
-    /// </summary>
-    [DebuggerDisplay("Name: {OriginalName}}")]
-    public class HtmlNode : IXPathNavigable
-    {
-        #region Fields
-
-        internal HtmlAttributeCollection _attributes;
-        internal HtmlNodeCollection _childnodes;
-        internal HtmlNode _endnode;
-
-        internal bool _innerchanged;
-        internal string _innerhtml;
-        internal int _innerlength;
-        internal int _innerstartindex;
-        internal int _line;
-        internal int _lineposition;
-        private string _name;
-        internal int _namelength;
-        internal int _namestartindex;
-        internal HtmlNode _nextnode;
-        internal HtmlNodeType _nodetype;
-        internal bool _outerchanged;
-        internal string _outerhtml;
-        internal int _outerlength;
-        internal int _outerstartindex;
-        internal HtmlDocument _ownerdocument;
-        internal HtmlNode _parentnode;
-        internal HtmlNode _prevnode;
-        internal HtmlNode _prevwithsamename;
-        internal bool _starttag;
-        internal int _streamposition;
-
-        #endregion
-
-        #region Static Members
-
-        /// <summary>
-        /// Gets the name of a comment node. It is actually defined as '#comment'.
-        /// </summary>
-        public static readonly string HtmlNodeTypeNameComment = "#comment";
-
-        /// <summary>
-        /// Gets the name of the document node. It is actually defined as '#document'.
-        /// </summary>
-        public static readonly string HtmlNodeTypeNameDocument = "#document";
-
-        /// <summary>
-        /// Gets the name of a text node. It is actually defined as '#text'.
-        /// </summary>
-        public static readonly string HtmlNodeTypeNameText = "#text";
-
-        /// <summary>
-        /// Gets a collection of flags that define specific behaviors for specific element nodes.
-        /// The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
-        /// </summary>
-        public static Hashtable ElementsFlags;
-
-        #endregion
-
-        #region Constructors
-
-        /// <summary>
-        /// Initialize HtmlNode. Builds a list of all tags that have special allowances
-        /// </summary>
-        static HtmlNode()
-        {
-            // tags whose content may be anything
-            ElementsFlags = new Hashtable();
-            ElementsFlags.Add("script", HtmlElementFlag.CData);
-            ElementsFlags.Add("style", HtmlElementFlag.CData);
-            ElementsFlags.Add("noxhtml", HtmlElementFlag.CData);
-
-            // tags that can not contain other tags
-            ElementsFlags.Add("base", HtmlElementFlag.Empty);
-            ElementsFlags.Add("link", HtmlElementFlag.Empty);
-            ElementsFlags.Add("meta", HtmlElementFlag.Empty);
-            ElementsFlags.Add("isindex", HtmlElementFlag.Empty);
-            ElementsFlags.Add("hr", HtmlElementFlag.Empty);
-            ElementsFlags.Add("col", HtmlElementFlag.Empty);
-            ElementsFlags.Add("img", HtmlElementFlag.Empty);
-            ElementsFlags.Add("param", HtmlElementFlag.Empty);
-            ElementsFlags.Add("embed", HtmlElementFlag.Empty);
-            ElementsFlags.Add("frame", HtmlElementFlag.Empty);
-            ElementsFlags.Add("wbr", HtmlElementFlag.Empty);
-            ElementsFlags.Add("bgsound", HtmlElementFlag.Empty);
-            ElementsFlags.Add("spacer", HtmlElementFlag.Empty);
-            ElementsFlags.Add("keygen", HtmlElementFlag.Empty);
-            ElementsFlags.Add("area", HtmlElementFlag.Empty);
-            ElementsFlags.Add("input", HtmlElementFlag.Empty);
-            ElementsFlags.Add("basefont", HtmlElementFlag.Empty);
-
-            ElementsFlags.Add("form", HtmlElementFlag.CanOverlap | HtmlElementFlag.Empty);
-
-            // they sometimes contain, and sometimes they don 't...
-            ElementsFlags.Add("option", HtmlElementFlag.Empty);
-
-            // tag whose closing tag is equivalent to open tag:
-            // <p>bla</p>bla will be transformed into <p>bla</p>bla
-            // <p>bla<p>bla will be transformed into <p>bla<p>bla and not <p>bla></p><p>bla</p> or <p>bla<p>bla</p></p>
-            //<br> see above
-            ElementsFlags.Add("br", HtmlElementFlag.Empty | HtmlElementFlag.Closed);
-            ElementsFlags.Add("p", HtmlElementFlag.Empty | HtmlElementFlag.Closed);
-        }
-
-        /// <summary>
-        /// Initializes HtmlNode, providing type, owner and where it exists in a collection
-        /// </summary>
-        /// <param name="type"></param>
-        /// <param name="ownerdocument"></param>
-        /// <param name="index"></param>
-        public HtmlNode(HtmlNodeType type, HtmlDocument ownerdocument, int index)
-        {
-            _nodetype = type;
-            _ownerdocument = ownerdocument;
-            _outerstartindex = index;
-
-            switch (type)
-            {
-                case HtmlNodeType.Comment:
-                    Name = HtmlNodeTypeNameComment;
-                    _endnode = this;
-                    break;
-
-                case HtmlNodeType.Document:
-                    Name = HtmlNodeTypeNameDocument;
-                    _endnode = this;
-                    break;
-
-                case HtmlNodeType.Text:
-                    Name = HtmlNodeTypeNameText;
-                    _endnode = this;
-                    break;
-            }
-
-            if (_ownerdocument._openednodes != null)
-            {
-                if (!Closed)
-                {
-                    // we use the index as the key
-
-                    // -1 means the node comes from public
-                    if (-1 != index)
-                    {
-                        _ownerdocument._openednodes.Add(index, this);
-                    }
-                }
-            }
-
-            if ((-1 != index) || (type == HtmlNodeType.Comment) || (type == HtmlNodeType.Text)) return;
-            // innerhtml and outerhtml must be calculated
-            _outerchanged = true;
-            _innerchanged = true;
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the collection of HTML attributes for this node. May not be null.
-        /// </summary>
-        public HtmlAttributeCollection Attributes
-        {
-            get
-            {
-                if (!HasAttributes)
-                {
-                    _attributes = new HtmlAttributeCollection(this);
-                }
-                return _attributes;
-            }
-            internal set { _attributes = value; }
-        }
-
-        /// <summary>
-        /// Gets all the children of the node.
-        /// </summary>
-        public HtmlNodeCollection ChildNodes
-        {
-            get
-            {
-                if (_childnodes == null)
-                {
-                    _childnodes = new HtmlNodeCollection(this);
-                }
-                return _childnodes;
-            }
-            internal set { _childnodes = value; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating if this node has been closed or not.
-        /// </summary>
-        public bool Closed
-        {
-            get { return (_endnode != null); }
-        }
-
-        /// <summary>
-        /// Gets the collection of HTML attributes for the closing tag. May not be null.
-        /// </summary>
-        public HtmlAttributeCollection ClosingAttributes
-        {
-            get
-            {
-                if (!HasClosingAttributes)
-                {
-                    return new HtmlAttributeCollection(this);
-                }
-                return _endnode.Attributes;
-            }
-        }
-
-        internal HtmlNode EndNode
-        {
-            get { return _endnode; }
-        }
-
-        /// <summary>
-        /// Gets the first child of the node.
-        /// </summary>
-        public HtmlNode FirstChild
-        {
-            get
-            {
-                if (!HasChildNodes)
-                {
-                    return null;
-                }
-                return _childnodes[0];
-            }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether the current node has any attributes.
-        /// </summary>
-        public bool HasAttributes
-        {
-            get
-            {
-                if (_attributes == null)
-                {
-                    return false;
-                }
-
-                if (_attributes.Count <= 0)
-                {
-                    return false;
-                }
-                return true;
-            }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether this node has any child nodes.
-        /// </summary>
-        public bool HasChildNodes
-        {
-            get
-            {
-                if (_childnodes == null)
-                {
-                    return false;
-                }
-
-                if (_childnodes.Count <= 0)
-                {
-                    return false;
-                }
-                return true;
-            }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether the current node has any attributes on the closing tag.
-        /// </summary>
-        public bool HasClosingAttributes
-        {
-            get
-            {
-                if ((_endnode == null) || (_endnode == this))
-                {
-                    return false;
-                }
-
-                if (_endnode._attributes == null)
-                {
-                    return false;
-                }
-
-                if (_endnode._attributes.Count <= 0)
-                {
-                    return false;
-                }
-                return true;
-            }
-        }
-
-        /// <summary>
-        /// Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
-        /// </summary>
-        public string Id
-        {
-            get
-            {
-                if (_ownerdocument._nodesid == null)
-                {
-                    throw new Exception(HtmlDocument.HtmlExceptionUseIdAttributeFalse);
-                }
-                return GetId();
-            }
-            set
-            {
-                if (_ownerdocument._nodesid == null)
-                {
-                    throw new Exception(HtmlDocument.HtmlExceptionUseIdAttributeFalse);
-                }
-
-                if (value == null)
-                {
-                    throw new ArgumentNullException("value");
-                }
-                SetId(value);
-            }
-        }
-
-        /// <summary>
-        /// Gets or Sets the HTML between the start and end tags of the object.
-        /// </summary>
-        public virtual string InnerHtml
-        {
-            get
-            {
-                if (_innerchanged)
-                {
-                    _innerhtml = WriteContentTo();
-                    _innerchanged = false;
-                    return _innerhtml;
-                }
-                if (_innerhtml != null)
-                {
-                    return _innerhtml;
-                }
-
-                if (_innerstartindex < 0)
-                {
-                    return string.Empty;
-                }
-
-                return _ownerdocument._text.Substring(_innerstartindex, _innerlength);
-            }
-            set
-            {
-                HtmlDocument doc = new HtmlDocument();
-                doc.LoadHtml(value);
-
-                RemoveAllChildren();
-                AppendChildren(doc.DocumentNode.ChildNodes);
-            }
-        }
-
-        /// <summary>
-        /// Gets or Sets the text between the start and end tags of the object.
-        /// </summary>
-        public virtual string InnerText
-        {
-            get
-            {
-                if (_nodetype == HtmlNodeType.Text)
-                {
-                    return ((HtmlTextNode) this).Text;
-                }
-
-                if (_nodetype == HtmlNodeType.Comment)
-                {
-                    return ((HtmlCommentNode) this).Comment;
-                }
-
-                // note: right now, this method is *slow*, because we recompute everything.
-                // it could be optimised like innerhtml
-                if (!HasChildNodes)
-                {
-                    return string.Empty;
-                }
-
-                string s = null;
-                foreach (HtmlNode node in ChildNodes)
-                {
-                    s += node.InnerText;
-                }
-                return s;
-            }
-        }
-
-        /// <summary>
-        /// Gets the last child of the node.
-        /// </summary>
-        public HtmlNode LastChild
-        {
-            get
-            {
-                return !HasChildNodes ? null : _childnodes[_childnodes.Count - 1];
-            }
-        }
-
-        /// <summary>
-        /// Gets the line number of this node in the document.
-        /// </summary>
-        public int Line
-        {
-            get { return _line; }
-            internal set { _line = value; }
-        }
-
-        /// <summary>
-        /// Gets the column number of this node in the document.
-        /// </summary>
-        public int LinePosition
-        {
-            get { return _lineposition; }
-            internal set { _lineposition = value; }
-        }
-
-        /// <summary>
-        /// Gets or sets this node's name.
-        /// </summary>
-        public string Name
-        {
-            get
-            {
-                if (_name == null)
-                {
-                    Name = _ownerdocument._text.Substring(_namestartindex, _namelength);
-                }
-                return _name != null ? _name.ToLower() : string.Empty;
-            }
-            set { _name = value; }
-        }
-
-        /// <summary>
-        /// Gets the HTML node immediately following this element.
-        /// </summary>
-        public HtmlNode NextSibling
-        {
-            get { return _nextnode; }
-            internal set { _nextnode = value; }
-        }
-
-        /// <summary>
-        /// Gets the type of this node.
-        /// </summary>
-        public HtmlNodeType NodeType
-        {
-            get { return _nodetype; }
-            internal set { _nodetype = value; }
-        }
-
-        /// <summary>
-        /// The original unaltered name of the tag
-        /// </summary>
-        public string OriginalName
-        {
-            get { return _name; }
-        }
-
-        /// <summary>
-        /// Gets or Sets the object and its content in HTML.
-        /// </summary>
-        public virtual string OuterHtml
-        {
-            get
-            {
-                if (_outerchanged)
-                {
-                    _outerhtml = WriteTo();
-                    _outerchanged = false;
-                    return _outerhtml;
-                }
-
-                if (_outerhtml != null)
-                {
-                    return _outerhtml;
-                }
-
-                if (_outerstartindex < 0)
-                {
-                    return string.Empty;
-                }
-
-                return _ownerdocument._text.Substring(_outerstartindex, _outerlength);
-            }
-        }
-
-        /// <summary>
-        /// Gets the <see cref="HtmlDocument"/> to which this node belongs.
-        /// </summary>
-        public HtmlDocument OwnerDocument
-        {
-            get { return _ownerdocument; }
-            internal set { _ownerdocument = value; }
-        }
-
-        /// <summary>
-        /// Gets the parent of this node (for nodes that can have parents).
-        /// </summary>
-        public HtmlNode ParentNode
-        {
-            get { return _parentnode; }
-            internal set { _parentnode = value; }
-        }
-
-        /// <summary>
-        /// Gets the node immediately preceding this node.
-        /// </summary>
-        public HtmlNode PreviousSibling
-        {
-            get { return _prevnode; }
-            internal set { _prevnode = value; }
-        }
-
-        /// <summary>
-        /// Gets the stream position of this node in the document, relative to the start of the document.
-        /// </summary>
-        public int StreamPosition
-        {
-            get { return _streamposition; }
-        }
-
-        /// <summary>
-        /// Gets a valid XPath string that points to this node
-        /// </summary>
-        public string XPath
-        {
-            get
-            {
-                string basePath = (ParentNode == null || ParentNode.NodeType == HtmlNodeType.Document)
-                                      ? "/"
-                                      : ParentNode.XPath + "/";
-                return basePath + GetRelativeXpath();
-            }
-        }
-
-        #endregion
-
-        #region IXPathNavigable Members
-
-        /// <summary>
-        /// Creates a new XPathNavigator object for navigating this HTML node.
-        /// </summary>
-        /// <returns>An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.</returns>
-        public XPathNavigator CreateNavigator()
-        {
-            return new HtmlNodeNavigator(_ownerdocument, this);
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Determines if an element node can be kept overlapped.
-        /// </summary>
-        /// <param name="name">The name of the element node to check. May not be <c>null</c>.</param>
-        /// <returns>true if the name is the name of an element node that can be kept overlapped, <c>false</c> otherwise.</returns>
-        public static bool CanOverlapElement(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            object flag = ElementsFlags[name.ToLower()];
-            if (flag == null)
-            {
-                return false;
-            }
-            return (((HtmlElementFlag) flag) & HtmlElementFlag.CanOverlap) != 0;
-        }
-
-        /// <summary>
-        /// Creates an HTML node from a string representing literal HTML.
-        /// </summary>
-        /// <param name="html">The HTML text.</param>
-        /// <returns>The newly created node instance.</returns>
-        public static HtmlNode CreateNode(string html)
-        {
-            // REVIEW: this is *not* optimum...
-            HtmlDocument doc = new HtmlDocument();
-            doc.LoadHtml(html);
-            return doc.DocumentNode.FirstChild;
-        }
-
-        /// <summary>
-        /// Determines if an element node is a CDATA element node.
-        /// </summary>
-        /// <param name="name">The name of the element node to check. May not be null.</param>
-        /// <returns>true if the name is the name of a CDATA element node, false otherwise.</returns>
-        public static bool IsCDataElement(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            object flag = ElementsFlags[name.ToLower()];
-            if (flag == null)
-            {
-                return false;
-            }
-            return (((HtmlElementFlag) flag) & HtmlElementFlag.CData) != 0;
-        }
-
-        /// <summary>
-        /// Determines if an element node is closed.
-        /// </summary>
-        /// <param name="name">The name of the element node to check. May not be null.</param>
-        /// <returns>true if the name is the name of a closed element node, false otherwise.</returns>
-        public static bool IsClosedElement(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            object flag = ElementsFlags[name.ToLower()];
-            if (flag == null)
-            {
-                return false;
-            }
-            return (((HtmlElementFlag) flag) & HtmlElementFlag.Closed) != 0;
-        }
-
-        /// <summary>
-        /// Determines if an element node is defined as empty.
-        /// </summary>
-        /// <param name="name">The name of the element node to check. May not be null.</param>
-        /// <returns>true if the name is the name of an empty element node, false otherwise.</returns>
-        public static bool IsEmptyElement(string name)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            if (name.Length == 0)
-            {
-                return true;
-            }
-
-            // <!DOCTYPE ...
-            if ('!' == name[0])
-            {
-                return true;
-            }
-
-            // <?xml ...
-            if ('?' == name[0])
-            {
-                return true;
-            }
-
-            object flag = ElementsFlags[name.ToLower()];
-            if (flag == null)
-            {
-                return false;
-            }
-            return (((HtmlElementFlag) flag) & HtmlElementFlag.Empty) != 0;
-        }
-
-        /// <summary>
-        /// Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
-        /// </summary>
-        /// <param name="text">The text to check. May not be null.</param>
-        /// <returns>true or false.</returns>
-        public static bool IsOverlappedClosingElement(string text)
-        {
-            if (text == null)
-            {
-                throw new ArgumentNullException("text");
-            }
-            // min is </x>: 4
-            if (text.Length <= 4)
-                return false;
-
-            if ((text[0] != '<') ||
-                (text[text.Length - 1] != '>') ||
-                (text[1] != '/'))
-                return false;
-
-            string name = text.Substring(2, text.Length - 3);
-            return CanOverlapElement(name);
-        }
-
-        /// <summary>
-        /// Returns a collection of all ancestor nodes of this element.
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Ancestors()
-        {
-            HtmlNode node = ParentNode;
-            while (node.ParentNode != null)
-            {
-                yield return node.ParentNode;
-                node = node.ParentNode;
-            }
-        }
-
-        /// <summary>
-        /// Get Ancestors with matching name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Ancestors(string name)
-        {
-            for (HtmlNode n = ParentNode; n != null; n = n.ParentNode)
-                if (n.Name == name)
-                    yield return n;
-        }
-
-        /// <summary>
-        /// Returns a collection of all ancestor nodes of this element.
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> AncestorsAndSelf()
-        {
-            for (HtmlNode n = this; n != null; n = n.ParentNode)
-                yield return n;
-        }
-
-        /// <summary>
-        /// Gets all anscestor nodes and the current node
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> AncestorsAndSelf(string name)
-        {
-            for (HtmlNode n = this; n != null; n = n.ParentNode)
-                if (n.Name == name)
-                    yield return n;
-        }
-
-        /// <summary>
-        /// Adds the specified node to the end of the list of children of this node.
-        /// </summary>
-        /// <param name="newChild">The node to add. May not be null.</param>
-        /// <returns>The node added.</returns>
-        public HtmlNode AppendChild(HtmlNode newChild)
-        {
-            if (newChild == null)
-            {
-                throw new ArgumentNullException("newChild");
-            }
-
-            ChildNodes.Append(newChild);
-            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
-            _outerchanged = true;
-            _innerchanged = true;
-            return newChild;
-        }
-
-        /// <summary>
-        /// Adds the specified node to the end of the list of children of this node.
-        /// </summary>
-        /// <param name="newChildren">The node list to add. May not be null.</param>
-        public void AppendChildren(HtmlNodeCollection newChildren)
-        {
-            if (newChildren == null)
-                throw new ArgumentNullException("newChildrend");
-
-            foreach (HtmlNode newChild in newChildren)
-            {
-                AppendChild(newChild);
-            }
-        }
-
-        /// <summary>
-        /// Gets all Attributes with name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public IEnumerable<HtmlAttribute> ChildAttributes(string name)
-        {
-            return Attributes.AttributesWithName(name);
-        }
-
-        /// <summary>
-        /// Creates a duplicate of the node
-        /// </summary>
-        /// <returns></returns>
-        public HtmlNode Clone()
-        {
-            return CloneNode(true);
-        }
-
-        /// <summary>
-        /// Creates a duplicate of the node and changes its name at the same time.
-        /// </summary>
-        /// <param name="newName">The new name of the cloned node. May not be <c>null</c>.</param>
-        /// <returns>The cloned node.</returns>
-        public HtmlNode CloneNode(string newName)
-        {
-            return CloneNode(newName, true);
-        }
-
-        /// <summary>
-        /// Creates a duplicate of the node and changes its name at the same time.
-        /// </summary>
-        /// <param name="newName">The new name of the cloned node. May not be null.</param>
-        /// <param name="deep">true to recursively clone the subtree under the specified node; false to clone only the node itself.</param>
-        /// <returns>The cloned node.</returns>
-        public HtmlNode CloneNode(string newName, bool deep)
-        {
-            if (newName == null)
-            {
-                throw new ArgumentNullException("newName");
-            }
-
-            HtmlNode node = CloneNode(deep);
-            node.Name = newName;
-            return node;
-        }
-
-        /// <summary>
-        /// Creates a duplicate of the node.
-        /// </summary>
-        /// <param name="deep">true to recursively clone the subtree under the specified node; false to clone only the node itself.</param>
-        /// <returns>The cloned node.</returns>
-        public HtmlNode CloneNode(bool deep)
-        {
-            HtmlNode node = _ownerdocument.CreateNode(_nodetype);
-            node.Name = Name;
-
-            switch (_nodetype)
-            {
-                case HtmlNodeType.Comment:
-                    ((HtmlCommentNode) node).Comment = ((HtmlCommentNode) this).Comment;
-                    return node;
-
-                case HtmlNodeType.Text:
-                    ((HtmlTextNode) node).Text = ((HtmlTextNode) this).Text;
-                    return node;
-            }
-
-            // attributes
-            if (HasAttributes)
-            {
-                foreach (HtmlAttribute att in _attributes)
-                {
-                    HtmlAttribute newatt = att.Clone();
-                    node.Attributes.Append(newatt);
-                }
-            }
-
-            // closing attributes
-            if (HasClosingAttributes)
-            {
-                node._endnode = _endnode.CloneNode(false);
-                foreach (HtmlAttribute att in _endnode._attributes)
-                {
-                    HtmlAttribute newatt = att.Clone();
-                    node._endnode._attributes.Append(newatt);
-                }
-            }
-            if (!deep)
-            {
-                return node;
-            }
-
-            if (!HasChildNodes)
-            {
-                return node;
-            }
-
-            // child nodes
-            foreach (HtmlNode child in _childnodes)
-            {
-                HtmlNode newchild = child.Clone();
-                node.AppendChild(newchild);
-            }
-            return node;
-        }
-
-        /// <summary>
-        /// Creates a duplicate of the node and the subtree under it.
-        /// </summary>
-        /// <param name="node">The node to duplicate. May not be <c>null</c>.</param>
-        public void CopyFrom(HtmlNode node)
-        {
-            CopyFrom(node, true);
-        }
-
-        /// <summary>
-        /// Creates a duplicate of the node.
-        /// </summary>
-        /// <param name="node">The node to duplicate. May not be <c>null</c>.</param>
-        /// <param name="deep">true to recursively clone the subtree under the specified node, false to clone only the node itself.</param>
-        public void CopyFrom(HtmlNode node, bool deep)
-        {
-            if (node == null)
-            {
-                throw new ArgumentNullException("node");
-            }
-
-            Attributes.RemoveAll();
-            if (node.HasAttributes)
-            {
-                foreach (HtmlAttribute att in node.Attributes)
-                {
-                    SetAttributeValue(att.Name, att.Value);
-                }
-            }
-
-            if (!deep)
-            {
-                RemoveAllChildren();
-                if (node.HasChildNodes)
-                {
-                    foreach (HtmlNode child in node.ChildNodes)
-                    {
-                        AppendChild(child.CloneNode(true));
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Creates an XPathNavigator using the root of this document.
-        /// </summary>
-        /// <returns></returns>
-        public XPathNavigator CreateRootNavigator()
-        {
-            return new HtmlNodeNavigator(_ownerdocument, _ownerdocument.DocumentNode);
-        }
-
-        /// <summary>
-        /// Gets all Descendant nodes for this node and each of child nodes
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> DescendantNodes()
-        {
-            foreach (HtmlNode node in ChildNodes)
-            {
-                yield return node;
-                foreach (HtmlNode descendant in node.DescendantNodes())
-                    yield return descendant;
-            }
-        }
-
-        /// <summary>
-        /// Returns a collection of all descendant nodes of this element, in document order
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> DescendantNodesAndSelf()
-        {
-            return DescendantsAndSelf();
-        }
-
-        /// <summary>
-        /// Gets all Descendant nodes in enumerated list
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Descendants()
-        {
-            foreach (HtmlNode node in DescendantNodes())
-            {
-                yield return node;
-            }
-        }
-
-        /// <summary>
-        /// Get all descendant nodes with matching name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Descendants(string name)
-        {
-            foreach (HtmlNode node in Descendants())
-                if (node.Name == name)
-                    yield return node;
-        }
-
-        /// <summary>
-        /// Returns a collection of all descendant nodes of this element, in document order
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> DescendantsAndSelf()
-        {
-            yield return this;
-            foreach (HtmlNode n in DescendantNodes())
-            {
-                HtmlNode el = n;
-                if (el != null)
-                    yield return el;
-            }
-        }
-
-        /// <summary>
-        /// Gets all descendant nodes including this node
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> DescendantsAndSelf(string name)
-        {
-            yield return this;
-            foreach (HtmlNode node in Descendants())
-                if (node.Name == name)
-                    yield return node;
-        }
-
-        /// <summary>
-        /// Gets first generation child node matching name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public HtmlNode Element(string name)
-        {
-            foreach (HtmlNode node in ChildNodes)
-                if (node.Name == name)
-                    return node;
-            return null;
-        }
-
-        /// <summary>
-        /// Gets matching first generation child nodes matching name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Elements(string name)
-        {
-            foreach (HtmlNode node in ChildNodes)
-                if (node.Name == name)
-                    yield return node;
-        }
-
-        /// <summary>
-        /// Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
-        /// </summary>
-        /// <param name="name">The name of the attribute to get. May not be <c>null</c>.</param>
-        /// <param name="def">The default value to return if not found.</param>
-        /// <returns>The value of the attribute if found, the default value if not found.</returns>
-        public string GetAttributeValue(string name, string def)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            if (!HasAttributes)
-            {
-                return def;
-            }
-            HtmlAttribute att = Attributes[name];
-            if (att == null)
-            {
-                return def;
-            }
-            return att.Value;
-        }
-
-        /// <summary>
-        /// Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
-        /// </summary>
-        /// <param name="name">The name of the attribute to get. May not be <c>null</c>.</param>
-        /// <param name="def">The default value to return if not found.</param>
-        /// <returns>The value of the attribute if found, the default value if not found.</returns>
-        public int GetAttributeValue(string name, int def)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            if (!HasAttributes)
-            {
-                return def;
-            }
-            HtmlAttribute att = Attributes[name];
-            if (att == null)
-            {
-                return def;
-            }
-            try
-            {
-                return Convert.ToInt32(att.Value);
-            }
-            catch
-            {
-                return def;
-            }
-        }
-
-        /// <summary>
-        /// Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
-        /// </summary>
-        /// <param name="name">The name of the attribute to get. May not be <c>null</c>.</param>
-        /// <param name="def">The default value to return if not found.</param>
-        /// <returns>The value of the attribute if found, the default value if not found.</returns>
-        public bool GetAttributeValue(string name, bool def)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-
-            if (!HasAttributes)
-            {
-                return def;
-            }
-            HtmlAttribute att = Attributes[name];
-            if (att == null)
-            {
-                return def;
-            }
-            try
-            {
-                return Convert.ToBoolean(att.Value);
-            }
-            catch
-            {
-                return def;
-            }
-        }
-
-        /// <summary>
-        /// Inserts the specified node immediately after the specified reference node.
-        /// </summary>
-        /// <param name="newChild">The node to insert. May not be <c>null</c>.</param>
-        /// <param name="refChild">The node that is the reference node. The newNode is placed after the refNode.</param>
-        /// <returns>The node being inserted.</returns>
-        public HtmlNode InsertAfter(HtmlNode newChild, HtmlNode refChild)
-        {
-            if (newChild == null)
-            {
-                throw new ArgumentNullException("newChild");
-            }
-
-            if (refChild == null)
-            {
-                return PrependChild(newChild);
-            }
-
-            if (newChild == refChild)
-            {
-                return newChild;
-            }
-
-            int index = -1;
-
-            if (_childnodes != null)
-            {
-                index = _childnodes[refChild];
-            }
-            if (index == -1)
-            {
-                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
-            }
-
-            if (_childnodes != null) _childnodes.Insert(index + 1, newChild);
-
-            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
-            _outerchanged = true;
-            _innerchanged = true;
-            return newChild;
-        }
-
-        /// <summary>
-        /// Inserts the specified node immediately before the specified reference node.
-        /// </summary>
-        /// <param name="newChild">The node to insert. May not be <c>null</c>.</param>
-        /// <param name="refChild">The node that is the reference node. The newChild is placed before this node.</param>
-        /// <returns>The node being inserted.</returns>
-        public HtmlNode InsertBefore(HtmlNode newChild, HtmlNode refChild)
-        {
-            if (newChild == null)
-            {
-                throw new ArgumentNullException("newChild");
-            }
-
-            if (refChild == null)
-            {
-                return AppendChild(newChild);
-            }
-
-            if (newChild == refChild)
-            {
-                return newChild;
-            }
-
-            int index = -1;
-
-            if (_childnodes != null)
-            {
-                index = _childnodes[refChild];
-            }
-
-            if (index == -1)
-            {
-                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
-            }
-
-            if (_childnodes != null) _childnodes.Insert(index, newChild);
-
-            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
-            _outerchanged = true;
-            _innerchanged = true;
-            return newChild;
-        }
-
-        /// <summary>
-        /// Adds the specified node to the beginning of the list of children of this node.
-        /// </summary>
-        /// <param name="newChild">The node to add. May not be <c>null</c>.</param>
-        /// <returns>The node added.</returns>
-        public HtmlNode PrependChild(HtmlNode newChild)
-        {
-            if (newChild == null)
-            {
-                throw new ArgumentNullException("newChild");
-            }
-            ChildNodes.Prepend(newChild);
-            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
-            _outerchanged = true;
-            _innerchanged = true;
-            return newChild;
-        }
-
-        /// <summary>
-        /// Adds the specified node list to the beginning of the list of children of this node.
-        /// </summary>
-        /// <param name="newChildren">The node list to add. May not be <c>null</c>.</param>
-        public void PrependChildren(HtmlNodeCollection newChildren)
-        {
-            if (newChildren == null)
-            {
-                throw new ArgumentNullException("newChildren");
-            }
-
-            foreach (HtmlNode newChild in newChildren)
-            {
-                PrependChild(newChild);
-            }
-        }
-
-        /// <summary>
-        /// Removes node from parent collection
-        /// </summary>
-        public void Remove()
-        {
-            if (ParentNode != null)
-                ParentNode.ChildNodes.Remove(this);
-        }
-
-        /// <summary>
-        /// Removes all the children and/or attributes of the current node.
-        /// </summary>
-        public void RemoveAll()
-        {
-            RemoveAllChildren();
-
-            if (HasAttributes)
-            {
-                _attributes.Clear();
-            }
-
-            if ((_endnode != null) && (_endnode != this))
-            {
-                if (_endnode._attributes != null)
-                {
-                    _endnode._attributes.Clear();
-                }
-            }
-            _outerchanged = true;
-            _innerchanged = true;
-        }
-
-        /// <summary>
-        /// Removes all the children of the current node.
-        /// </summary>
-        public void RemoveAllChildren()
-        {
-            if (!HasChildNodes)
-            {
-                return;
-            }
-
-            if (_ownerdocument.OptionUseIdAttribute)
-            {
-                // remove nodes from id list
-                foreach (HtmlNode node in _childnodes)
-                {
-                    _ownerdocument.SetIdForNode(null, node.GetId());
-                }
-            }
-            _childnodes.Clear();
-            _outerchanged = true;
-            _innerchanged = true;
-        }
-
-        /// <summary>
-        /// Removes the specified child node.
-        /// </summary>
-        /// <param name="oldChild">The node being removed. May not be <c>null</c>.</param>
-        /// <returns>The node removed.</returns>
-        public HtmlNode RemoveChild(HtmlNode oldChild)
-        {
-            if (oldChild == null)
-            {
-                throw new ArgumentNullException("oldChild");
-            }
-
-            int index = -1;
-
-            if (_childnodes != null)
-            {
-                index = _childnodes[oldChild];
-            }
-
-            if (index == -1)
-            {
-                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
-            }
-
-            if (_childnodes != null)
-                _childnodes.Remove(index);
-
-            _ownerdocument.SetIdForNode(null, oldChild.GetId());
-            _outerchanged = true;
-            _innerchanged = true;
-            return oldChild;
-        }
-
-        /// <summary>
-        /// Removes the specified child node.
-        /// </summary>
-        /// <param name="oldChild">The node being removed. May not be <c>null</c>.</param>
-        /// <param name="keepGrandChildren">true to keep grand children of the node, false otherwise.</param>
-        /// <returns>The node removed.</returns>
-        public HtmlNode RemoveChild(HtmlNode oldChild, bool keepGrandChildren)
-        {
-            if (oldChild == null)
-            {
-                throw new ArgumentNullException("oldChild");
-            }
-
-            if ((oldChild._childnodes != null) && keepGrandChildren)
-            {
-                // get prev sibling
-                HtmlNode prev = oldChild.PreviousSibling;
-
-                // reroute grand children to ourselves
-                foreach (HtmlNode grandchild in oldChild._childnodes)
-                {
-                    InsertAfter(grandchild, prev);
-                }
-            }
-            RemoveChild(oldChild);
-            _outerchanged = true;
-            _innerchanged = true;
-            return oldChild;
-        }
-
-        /// <summary>
-        /// Replaces the child node oldChild with newChild node.
-        /// </summary>
-        /// <param name="newChild">The new node to put in the child list.</param>
-        /// <param name="oldChild">The node being replaced in the list.</param>
-        /// <returns>The node replaced.</returns>
-        public HtmlNode ReplaceChild(HtmlNode newChild, HtmlNode oldChild)
-        {
-            if (newChild == null)
-            {
-                return RemoveChild(oldChild);
-            }
-
-            if (oldChild == null)
-            {
-                return AppendChild(newChild);
-            }
-
-            int index = -1;
-
-            if (_childnodes != null)
-            {
-                index = _childnodes[oldChild];
-            }
-
-            if (index == -1)
-            {
-                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
-            }
-
-            if (_childnodes != null) _childnodes.Replace(index, newChild);
-
-            _ownerdocument.SetIdForNode(null, oldChild.GetId());
-            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
-            _outerchanged = true;
-            _innerchanged = true;
-            return newChild;
-        }
-
-        /// <summary>
-        /// Selects a list of nodes matching the <see cref="XPath"/> expression.
-        /// </summary>
-        /// <param name="xpath">The XPath expression.</param>
-        /// <returns>An <see cref="HtmlNodeCollection"/> containing a collection of nodes matching the <see cref="XPath"/> query, or <c>null</c> if no node matched the XPath expression.</returns>
-        public HtmlNodeCollection SelectNodes(string xpath)
-        {
-            HtmlNodeCollection list = new HtmlNodeCollection(null);
-
-            HtmlNodeNavigator nav = new HtmlNodeNavigator(_ownerdocument, this);
-            XPathNodeIterator it = nav.Select(xpath);
-            while (it.MoveNext())
-            {
-                HtmlNodeNavigator n = (HtmlNodeNavigator) it.Current;
-                list.Add(n.CurrentNode);
-            }
-            if (list.Count == 0)
-            {
-                return null;
-            }
-            return list;
-        }
-
-        /// <summary>
-        /// Selects the first XmlNode that matches the XPath expression.
-        /// </summary>
-        /// <param name="xpath">The XPath expression. May not be null.</param>
-        /// <returns>The first <see cref="HtmlNode"/> that matches the XPath query or a null reference if no matching node was found.</returns>
-        public HtmlNode SelectSingleNode(string xpath)
-        {
-            if (xpath == null)
-            {
-                throw new ArgumentNullException("xpath");
-            }
-
-            HtmlNodeNavigator nav = new HtmlNodeNavigator(_ownerdocument, this);
-            XPathNodeIterator it = nav.Select(xpath);
-            if (!it.MoveNext())
-            {
-                return null;
-            }
-
-            HtmlNodeNavigator node = (HtmlNodeNavigator) it.Current;
-            return node.CurrentNode;
-        }
-
-        /// <summary>
-        /// Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
-        /// </summary>
-        /// <param name="name">The name of the attribute to set. May not be null.</param>
-        /// <param name="value">The value for the attribute.</param>
-        /// <returns>The corresponding attribute instance.</returns>
-        public HtmlAttribute SetAttributeValue(string name, string value)
-        {
-            if (name == null)
-            {
-                throw new ArgumentNullException("name");
-            }
-            HtmlAttribute att = Attributes[name];
-            if (att == null)
-            {
-                return Attributes.Append(_ownerdocument.CreateAttribute(name, value));
-            }
-            att.Value = value;
-            return att;
-        }
-
-        /// <summary>
-        /// Saves all the children of the node to the specified TextWriter.
-        /// </summary>
-        /// <param name="outText">The TextWriter to which you want to save.</param>
-        public void WriteContentTo(TextWriter outText)
-        {
-            if (_childnodes == null)
-            {
-                return;
-            }
-
-            foreach (HtmlNode node in _childnodes)
-            {
-                node.WriteTo(outText);
-            }
-        }
-
-        /// <summary>
-        /// Saves all the children of the node to a string.
-        /// </summary>
-        /// <returns>The saved string.</returns>
-        public string WriteContentTo()
-        {
-            StringWriter sw = new StringWriter();
-            WriteContentTo(sw);
-            sw.Flush();
-            return sw.ToString();
-        }
-
-        /// <summary>
-        /// Saves the current node to the specified TextWriter.
-        /// </summary>
-        /// <param name="outText">The TextWriter to which you want to save.</param>
-        public void WriteTo(TextWriter outText)
-        {
-            string html;
-            switch (_nodetype)
-            {
-                case HtmlNodeType.Comment:
-                    html = ((HtmlCommentNode) this).Comment;
-                    if (_ownerdocument.OptionOutputAsXml)
-                    {
-                        outText.Write("<!--" + GetXmlComment((HtmlCommentNode) this) + " -->");
-                    }
-                    else
-                    {
-                        outText.Write(html);
-                    }
-                    break;
-
-                case HtmlNodeType.Document:
-                    if (_ownerdocument.OptionOutputAsXml)
-                    {
-                        outText.Write("<?xml version=\"1.0\" encoding=\"" + _ownerdocument.GetOutEncoding().BodyName +
-                                      "\"?>");
-
-                        // check there is a root element
-                        if (_ownerdocument.DocumentNode.HasChildNodes)
-                        {
-                            int rootnodes = _ownerdocument.DocumentNode._childnodes.Count;
-                            if (rootnodes > 0)
-                            {
-                                HtmlNode xml = _ownerdocument.GetXmlDeclaration();
-                                if (xml != null)
-                                {
-                                    rootnodes --;
-                                }
-
-                                if (rootnodes > 1)
-                                {
-                                    if (_ownerdocument.OptionOutputUpperCase)
-                                    {
-                                        outText.Write("<SPAN>");
-                                        WriteContentTo(outText);
-                                        outText.Write("</SPAN>");
-                                    }
-                                    else
-                                    {
-                                        outText.Write("<span>");
-                                        WriteContentTo(outText);
-                                        outText.Write("</span>");
-                                    }
-                                    break;
-                                }
-                            }
-                        }
-                    }
-                    WriteContentTo(outText);
-                    break;
-
-                case HtmlNodeType.Text:
-                    html = ((HtmlTextNode) this).Text;
-                    if (_ownerdocument.OptionOutputAsXml)
-                    {
-                        outText.Write(HtmlDocument.HtmlEncode(html));
-                    }
-                    else
-                    {
-                        outText.Write(html);
-                    }
-                    break;
-
-                case HtmlNodeType.Element:
-                    string name;
-                    if (_ownerdocument.OptionOutputUpperCase)
-                    {
-                        name = Name.ToUpper();
-                    }
-                    else
-                    {
-                        name = Name;
-                    }
-
-                    if (_ownerdocument.OptionOutputOriginalCase)
-                        name = OriginalName;
-
-                    if (_ownerdocument.OptionOutputAsXml)
-                    {
-                        if (name.Length > 0)
-                        {
-                            if (name[0] == '?')
-                            {
-                                // forget this one, it's been done at the document level
-                                break;
-                            }
-
-                            if (name.Trim().Length == 0)
-                            {
-                                break;
-                            }
-                            name = HtmlDocument.GetXmlName(name);
-                        }
-                        else
-                        {
-                            break;
-                        }
-                    }
-
-                    outText.Write("<" + name);
-                    WriteAttributes(outText, false);
-
-                    if (!HasChildNodes)
-                    {
-                        if (IsEmptyElement(Name))
-                        {
-                            if ((_ownerdocument.OptionWriteEmptyNodes) || (_ownerdocument.OptionOutputAsXml))
-                            {
-                                outText.Write(" />");
-                            }
-                            else
-                            {
-                                if (Name.Length > 0)
-                                {
-                                    if (Name[0] == '?')
-                                    {
-                                        outText.Write("?");
-                                    }
-                                }
-
-                                outText.Write(">");
-                            }
-                        }
-                        else
-                        {
-                            outText.Write("></" + name + ">");
-                        }
-                    }
-                    else
-                    {
-                        outText.Write(">");
-                        bool cdata = false;
-                        if (_ownerdocument.OptionOutputAsXml)
-                        {
-                            if (IsCDataElement(Name))
-                            {
-                                // this code and the following tries to output things as nicely as possible for old browsers.
-                                cdata = true;
-                                outText.Write("\r\n//<![CDATA[\r\n");
-                            }
-                        }
-
-                        if (cdata)
-                        {
-                            if (HasChildNodes)
-                            {
-                                // child must be a text
-                                ChildNodes[0].WriteTo(outText);
-                            }
-                            outText.Write("\r\n//]]>//\r\n");
-                        }
-                        else
-                        {
-                            WriteContentTo(outText);
-                        }
-
-                        outText.Write("</" + name);
-                        if (!_ownerdocument.OptionOutputAsXml)
-                        {
-                            WriteAttributes(outText, true);
-                        }
-                        outText.Write(">");
-                    }
-                    break;
-            }
-        }
-
-        /// <summary>
-        /// Saves the current node to the specified XmlWriter.
-        /// </summary>
-        /// <param name="writer">The XmlWriter to which you want to save.</param>
-        public void WriteTo(XmlWriter writer)
-        {
-            switch (_nodetype)
-            {
-                case HtmlNodeType.Comment:
-                    writer.WriteComment(GetXmlComment((HtmlCommentNode) this));
-                    break;
-
-                case HtmlNodeType.Document:
-                    writer.WriteProcessingInstruction("xml",
-                                                      "version=\"1.0\" encoding=\"" +
-                                                      _ownerdocument.GetOutEncoding().BodyName + "\"");
-                    if (HasChildNodes)
-                    {
-                        foreach (HtmlNode subnode in ChildNodes)
-                        {
-                            subnode.WriteTo(writer);
-                        }
-                    }
-                    break;
-
-                case HtmlNodeType.Text:
-                    string html = ((HtmlTextNode) this).Text;
-                    writer.WriteString(html);
-                    break;
-
-                case HtmlNodeType.Element:
-                    string name = _ownerdocument.OptionOutputUpperCase ? Name.ToUpper() : Name;
-
-                    if (_ownerdocument.OptionOutputOriginalCase)
-                        name = OriginalName;
-
-                    writer.WriteStartElement(name);
-                    WriteAttributes(writer, this);
-
-                    if (HasChildNodes)
-                    {
-                        foreach (HtmlNode subnode in ChildNodes)
-                        {
-                            subnode.WriteTo(writer);
-                        }
-                    }
-                    writer.WriteEndElement();
-                    break;
-            }
-        }
-
-        /// <summary>
-        /// Saves the current node to a string.
-        /// </summary>
-        /// <returns>The saved string.</returns>
-        public string WriteTo()
-        {
-            using (StringWriter sw = new StringWriter())
-            {
-                WriteTo(sw);
-                sw.Flush();
-                return sw.ToString();
-            }
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal static string GetXmlComment(HtmlCommentNode comment)
-        {
-            string s = comment.Comment;
-            return s.Substring(4, s.Length - 7).Replace("--", " - -");
-        }
-
-        internal static void WriteAttributes(XmlWriter writer, HtmlNode node)
-        {
-            if (!node.HasAttributes)
-            {
-                return;
-            }
-            // we use Hashitems to make sure attributes are written only once
-            foreach (HtmlAttribute att in node.Attributes.Hashitems.Values)
-            {
-                writer.WriteAttributeString(att.XmlName, att.Value);
-            }
-        }
-
-        internal void CloseNode(HtmlNode endnode)
-        {
-            if (!_ownerdocument.OptionAutoCloseOnEnd)
-            {
-                // close all children
-                if (_childnodes != null)
-                {
-                    foreach (HtmlNode child in _childnodes)
-                    {
-                        if (child.Closed)
-                            continue;
-
-                        // create a fake closer node
-                        HtmlNode close = new HtmlNode(NodeType, _ownerdocument, -1);
-                        close._endnode = close;
-                        child.CloseNode(close);
-                    }
-                }
-            }
-
-            if (!Closed)
-            {
-                _endnode = endnode;
-
-                if (_ownerdocument._openednodes != null)
-                {
-                    _ownerdocument._openednodes.Remove(_outerstartindex);
-                }
-
-                HtmlNode self = _ownerdocument._lastnodes[Name] as HtmlNode;
-                if (self == this)
-                {
-                    _ownerdocument._lastnodes.Remove(Name);
-                    _ownerdocument.UpdateLastParentNode();
-                }
-
-                if (endnode == this)
-                    return;
-
-                // create an inner section
-                _innerstartindex = _outerstartindex + _outerlength;
-                _innerlength = endnode._outerstartindex - _innerstartindex;
-
-                // update full length
-                _outerlength = (endnode._outerstartindex + endnode._outerlength) - _outerstartindex;
-            }
-        }
-
-        internal string GetId()
-        {
-            HtmlAttribute att = Attributes["id"];
-            if (att == null)
-            {
-                return null;
-            }
-            return att.Value;
-        }
-
-        internal void SetId(string id)
-        {
-            HtmlAttribute att = Attributes["id"];
-            if (att == null)
-            {
-                att = _ownerdocument.CreateAttribute("id");
-            }
-            att.Value = id;
-            _ownerdocument.SetIdForNode(this, att.Value);
-            _outerchanged = true;
-        }
-
-        internal void WriteAttribute(TextWriter outText, HtmlAttribute att)
-        {
-            string name;
-            string quote = att.QuoteType == AttributeValueQuote.DoubleQuote ? "\"" : "'";
-            if (_ownerdocument.OptionOutputAsXml)
-            {
-                if (_ownerdocument.OptionOutputUpperCase)
-                {
-                    name = att.XmlName.ToUpper();
-                }
-                else
-                {
-                    name = att.XmlName;
-                }
-                if (_ownerdocument.OptionOutputOriginalCase)
-                    name = att.OriginalName;
-
-                outText.Write(" " + name + "=" + quote + HtmlDocument.HtmlEncode(att.XmlValue) + quote);
-            }
-            else
-            {
-                if (_ownerdocument.OptionOutputUpperCase)
-                {
-                    name = att.Name.ToUpper();
-                }
-                else
-                {
-                    name = att.Name;
-                }
-
-                if (att.Name.Length >= 4)
-                {
-                    if ((att.Name[0] == '<') && (att.Name[1] == '%') &&
-                        (att.Name[att.Name.Length - 1] == '>') && (att.Name[att.Name.Length - 2] == '%'))
-                    {
-                        outText.Write(" " + name);
-                        return;
-                    }
-                }
-                if (_ownerdocument.OptionOutputOptimizeAttributeValues)
-                {
-                    if (att.Value.IndexOfAny(new Char[] {(char) 10, (char) 13, (char) 9, ' '}) < 0)
-                    {
-                        outText.Write(" " + name + "=" + att.Value);
-                    }
-                    else
-                    {
-                        outText.Write(" " + name + "=" + quote + att.Value + quote);
-                    }
-                }
-                else
-                {
-                    outText.Write(" " + name + "=" + quote + att.Value + quote);
-                }
-            }
-        }
-
-        internal void WriteAttributes(TextWriter outText, bool closing)
-        {
-            if (_ownerdocument.OptionOutputAsXml)
-            {
-                if (_attributes == null)
-                {
-                    return;
-                }
-                // we use Hashitems to make sure attributes are written only once
-                foreach (HtmlAttribute att in _attributes.Hashitems.Values)
-                {
-                    WriteAttribute(outText, att);
-                }
-                return;
-            }
-
-            if (!closing)
-            {
-                if (_attributes != null)
-                {
-                    foreach (HtmlAttribute att in _attributes)
-                    {
-                        WriteAttribute(outText, att);
-                    }
-                }
-                if (_ownerdocument.OptionAddDebuggingAttributes)
-                {
-                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_closed", Closed.ToString()));
-                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_children", ChildNodes.Count.ToString()));
-
-                    int i = 0;
-                    foreach (HtmlNode n in ChildNodes)
-                    {
-                        WriteAttribute(outText, _ownerdocument.CreateAttribute("_child_" + i,
-                                                                               n.Name));
-                        i++;
-                    }
-                }
-            }
-            else
-            {
-                if (_endnode == null)
-                {
-                    return;
-                }
-
-                if (_endnode._attributes == null)
-                {
-                    return;
-                }
-
-                if (_endnode == this)
-                {
-                    return;
-                }
-
-                foreach (HtmlAttribute att in _endnode._attributes)
-                {
-                    WriteAttribute(outText, att);
-                }
-                if (_ownerdocument.OptionAddDebuggingAttributes)
-                {
-                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_closed", Closed.ToString()));
-                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_children", ChildNodes.Count.ToString()));
-                }
-            }
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private string GetRelativeXpath()
-        {
-            if (ParentNode == null)
-                return Name;
-            if (NodeType == HtmlNodeType.Document)
-                return string.Empty;
-
-            int i = 1;
-            foreach (HtmlNode node in ParentNode.ChildNodes)
-            {
-                if (node.Name != Name) continue;
-
-                if (node == this)
-                    break;
-
-                i++;
-            }
-            return Name + "[" + i + "]";
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Xml;
+using System.Xml.XPath;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents an HTML node.
+    /// </summary>
+    [DebuggerDisplay("Name: {OriginalName}}")]
+    public class HtmlNode : IXPathNavigable
+    {
+        #region Fields
+
+        internal HtmlAttributeCollection _attributes;
+        internal HtmlNodeCollection _childnodes;
+        internal HtmlNode _endnode;
+
+        internal bool _innerchanged;
+        internal string _innerhtml;
+        internal int _innerlength;
+        internal int _innerstartindex;
+        internal int _line;
+        internal int _lineposition;
+        private string _name;
+        internal int _namelength;
+        internal int _namestartindex;
+        internal HtmlNode _nextnode;
+        internal HtmlNodeType _nodetype;
+        internal bool _outerchanged;
+        internal string _outerhtml;
+        internal int _outerlength;
+        internal int _outerstartindex;
+        internal HtmlDocument _ownerdocument;
+        internal HtmlNode _parentnode;
+        internal HtmlNode _prevnode;
+        internal HtmlNode _prevwithsamename;
+        internal bool _starttag;
+        internal int _streamposition;
+
+        #endregion
+
+        #region Static Members
+
+        /// <summary>
+        /// Gets the name of a comment node. It is actually defined as '#comment'.
+        /// </summary>
+        public static readonly string HtmlNodeTypeNameComment = "#comment";
+
+        /// <summary>
+        /// Gets the name of the document node. It is actually defined as '#document'.
+        /// </summary>
+        public static readonly string HtmlNodeTypeNameDocument = "#document";
+
+        /// <summary>
+        /// Gets the name of a text node. It is actually defined as '#text'.
+        /// </summary>
+        public static readonly string HtmlNodeTypeNameText = "#text";
+
+        /// <summary>
+        /// Gets a collection of flags that define specific behaviors for specific element nodes.
+        /// The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+        /// </summary>
+        public static Hashtable ElementsFlags;
+
+        #endregion
+
+        #region Constructors
+
+        /// <summary>
+        /// Initialize HtmlNode. Builds a list of all tags that have special allowances
+        /// </summary>
+        static HtmlNode()
+        {
+            // tags whose content may be anything
+            ElementsFlags = new Hashtable();
+            ElementsFlags.Add("script", HtmlElementFlag.CData);
+            ElementsFlags.Add("style", HtmlElementFlag.CData);
+            ElementsFlags.Add("noxhtml", HtmlElementFlag.CData);
+
+            // tags that can not contain other tags
+            ElementsFlags.Add("base", HtmlElementFlag.Empty);
+            ElementsFlags.Add("link", HtmlElementFlag.Empty);
+            ElementsFlags.Add("meta", HtmlElementFlag.Empty);
+            ElementsFlags.Add("isindex", HtmlElementFlag.Empty);
+            ElementsFlags.Add("hr", HtmlElementFlag.Empty);
+            ElementsFlags.Add("col", HtmlElementFlag.Empty);
+            ElementsFlags.Add("img", HtmlElementFlag.Empty);
+            ElementsFlags.Add("param", HtmlElementFlag.Empty);
+            ElementsFlags.Add("embed", HtmlElementFlag.Empty);
+            ElementsFlags.Add("frame", HtmlElementFlag.Empty);
+            ElementsFlags.Add("wbr", HtmlElementFlag.Empty);
+            ElementsFlags.Add("bgsound", HtmlElementFlag.Empty);
+            ElementsFlags.Add("spacer", HtmlElementFlag.Empty);
+            ElementsFlags.Add("keygen", HtmlElementFlag.Empty);
+            ElementsFlags.Add("area", HtmlElementFlag.Empty);
+            ElementsFlags.Add("input", HtmlElementFlag.Empty);
+            ElementsFlags.Add("basefont", HtmlElementFlag.Empty);
+
+            ElementsFlags.Add("form", HtmlElementFlag.CanOverlap | HtmlElementFlag.Empty);
+
+            // they sometimes contain, and sometimes they don 't...
+            ElementsFlags.Add("option", HtmlElementFlag.Empty);
+
+            // tag whose closing tag is equivalent to open tag:
+            // <p>bla</p>bla will be transformed into <p>bla</p>bla
+            // <p>bla<p>bla will be transformed into <p>bla<p>bla and not <p>bla></p><p>bla</p> or <p>bla<p>bla</p></p>
+            //<br> see above
+            ElementsFlags.Add("br", HtmlElementFlag.Empty | HtmlElementFlag.Closed);
+            ElementsFlags.Add("p", HtmlElementFlag.Empty | HtmlElementFlag.Closed);
+        }
+
+        /// <summary>
+        /// Initializes HtmlNode, providing type, owner and where it exists in a collection
+        /// </summary>
+        /// <param name="type"></param>
+        /// <param name="ownerdocument"></param>
+        /// <param name="index"></param>
+        public HtmlNode(HtmlNodeType type, HtmlDocument ownerdocument, int index)
+        {
+            _nodetype = type;
+            _ownerdocument = ownerdocument;
+            _outerstartindex = index;
+
+            switch (type)
+            {
+                case HtmlNodeType.Comment:
+                    Name = HtmlNodeTypeNameComment;
+                    _endnode = this;
+                    break;
+
+                case HtmlNodeType.Document:
+                    Name = HtmlNodeTypeNameDocument;
+                    _endnode = this;
+                    break;
+
+                case HtmlNodeType.Text:
+                    Name = HtmlNodeTypeNameText;
+                    _endnode = this;
+                    break;
+            }
+
+            if (_ownerdocument._openednodes != null)
+            {
+                if (!Closed)
+                {
+                    // we use the index as the key
+
+                    // -1 means the node comes from public
+                    if (-1 != index)
+                    {
+                        _ownerdocument._openednodes.Add(index, this);
+                    }
+                }
+            }
+
+            if ((-1 != index) || (type == HtmlNodeType.Comment) || (type == HtmlNodeType.Text)) return;
+            // innerhtml and outerhtml must be calculated
+            _outerchanged = true;
+            _innerchanged = true;
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the collection of HTML attributes for this node. May not be null.
+        /// </summary>
+        public HtmlAttributeCollection Attributes
+        {
+            get
+            {
+                if (!HasAttributes)
+                {
+                    _attributes = new HtmlAttributeCollection(this);
+                }
+                return _attributes;
+            }
+            internal set { _attributes = value; }
+        }
+
+        /// <summary>
+        /// Gets all the children of the node.
+        /// </summary>
+        public HtmlNodeCollection ChildNodes
+        {
+            get
+            {
+                if (_childnodes == null)
+                {
+                    _childnodes = new HtmlNodeCollection(this);
+                }
+                return _childnodes;
+            }
+            internal set { _childnodes = value; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating if this node has been closed or not.
+        /// </summary>
+        public bool Closed
+        {
+            get { return (_endnode != null); }
+        }
+
+        /// <summary>
+        /// Gets the collection of HTML attributes for the closing tag. May not be null.
+        /// </summary>
+        public HtmlAttributeCollection ClosingAttributes
+        {
+            get
+            {
+                if (!HasClosingAttributes)
+                {
+                    return new HtmlAttributeCollection(this);
+                }
+                return _endnode.Attributes;
+            }
+        }
+
+        internal HtmlNode EndNode
+        {
+            get { return _endnode; }
+        }
+
+        /// <summary>
+        /// Gets the first child of the node.
+        /// </summary>
+        public HtmlNode FirstChild
+        {
+            get
+            {
+                if (!HasChildNodes)
+                {
+                    return null;
+                }
+                return _childnodes[0];
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether the current node has any attributes.
+        /// </summary>
+        public bool HasAttributes
+        {
+            get
+            {
+                if (_attributes == null)
+                {
+                    return false;
+                }
+
+                if (_attributes.Count <= 0)
+                {
+                    return false;
+                }
+                return true;
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this node has any child nodes.
+        /// </summary>
+        public bool HasChildNodes
+        {
+            get
+            {
+                if (_childnodes == null)
+                {
+                    return false;
+                }
+
+                if (_childnodes.Count <= 0)
+                {
+                    return false;
+                }
+                return true;
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether the current node has any attributes on the closing tag.
+        /// </summary>
+        public bool HasClosingAttributes
+        {
+            get
+            {
+                if ((_endnode == null) || (_endnode == this))
+                {
+                    return false;
+                }
+
+                if (_endnode._attributes == null)
+                {
+                    return false;
+                }
+
+                if (_endnode._attributes.Count <= 0)
+                {
+                    return false;
+                }
+                return true;
+            }
+        }
+
+        /// <summary>
+        /// Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+        /// </summary>
+        public string Id
+        {
+            get
+            {
+                if (_ownerdocument._nodesid == null)
+                {
+                    throw new Exception(HtmlDocument.HtmlExceptionUseIdAttributeFalse);
+                }
+                return GetId();
+            }
+            set
+            {
+                if (_ownerdocument._nodesid == null)
+                {
+                    throw new Exception(HtmlDocument.HtmlExceptionUseIdAttributeFalse);
+                }
+
+                if (value == null)
+                {
+                    throw new ArgumentNullException("value");
+                }
+                SetId(value);
+            }
+        }
+
+        /// <summary>
+        /// Gets or Sets the HTML between the start and end tags of the object.
+        /// </summary>
+        public virtual string InnerHtml
+        {
+            get
+            {
+                if (_innerchanged)
+                {
+                    _innerhtml = WriteContentTo();
+                    _innerchanged = false;
+                    return _innerhtml;
+                }
+                if (_innerhtml != null)
+                {
+                    return _innerhtml;
+                }
+
+                if (_innerstartindex < 0)
+                {
+                    return string.Empty;
+                }
+
+                return _ownerdocument._text.Substring(_innerstartindex, _innerlength);
+            }
+            set
+            {
+                HtmlDocument doc = new HtmlDocument();
+                doc.LoadHtml(value);
+
+                RemoveAllChildren();
+                AppendChildren(doc.DocumentNode.ChildNodes);
+            }
+        }
+
+        /// <summary>
+        /// Gets or Sets the text between the start and end tags of the object.
+        /// </summary>
+        public virtual string InnerText
+        {
+            get
+            {
+                if (_nodetype == HtmlNodeType.Text)
+                {
+                    return ((HtmlTextNode) this).Text;
+                }
+
+                if (_nodetype == HtmlNodeType.Comment)
+                {
+                    return ((HtmlCommentNode) this).Comment;
+                }
+
+                // note: right now, this method is *slow*, because we recompute everything.
+                // it could be optimised like innerhtml
+                if (!HasChildNodes)
+                {
+                    return string.Empty;
+                }
+
+                string s = null;
+                foreach (HtmlNode node in ChildNodes)
+                {
+                    s += node.InnerText;
+                }
+                return s;
+            }
+        }
+
+        /// <summary>
+        /// Gets the last child of the node.
+        /// </summary>
+        public HtmlNode LastChild
+        {
+            get
+            {
+                return !HasChildNodes ? null : _childnodes[_childnodes.Count - 1];
+            }
+        }
+
+        /// <summary>
+        /// Gets the line number of this node in the document.
+        /// </summary>
+        public int Line
+        {
+            get { return _line; }
+            internal set { _line = value; }
+        }
+
+        /// <summary>
+        /// Gets the column number of this node in the document.
+        /// </summary>
+        public int LinePosition
+        {
+            get { return _lineposition; }
+            internal set { _lineposition = value; }
+        }
+
+        /// <summary>
+        /// Gets or sets this node's name.
+        /// </summary>
+        public string Name
+        {
+            get
+            {
+                if (_name == null)
+                {
+                    Name = _ownerdocument._text.Substring(_namestartindex, _namelength);
+                }
+                return _name != null ? _name.ToLower() : string.Empty;
+            }
+            set { _name = value; }
+        }
+
+        /// <summary>
+        /// Gets the HTML node immediately following this element.
+        /// </summary>
+        public HtmlNode NextSibling
+        {
+            get { return _nextnode; }
+            internal set { _nextnode = value; }
+        }
+
+        /// <summary>
+        /// Gets the type of this node.
+        /// </summary>
+        public HtmlNodeType NodeType
+        {
+            get { return _nodetype; }
+            internal set { _nodetype = value; }
+        }
+
+        /// <summary>
+        /// The original unaltered name of the tag
+        /// </summary>
+        public string OriginalName
+        {
+            get { return _name; }
+        }
+
+        /// <summary>
+        /// Gets or Sets the object and its content in HTML.
+        /// </summary>
+        public virtual string OuterHtml
+        {
+            get
+            {
+                if (_outerchanged)
+                {
+                    _outerhtml = WriteTo();
+                    _outerchanged = false;
+                    return _outerhtml;
+                }
+
+                if (_outerhtml != null)
+                {
+                    return _outerhtml;
+                }
+
+                if (_outerstartindex < 0)
+                {
+                    return string.Empty;
+                }
+
+                return _ownerdocument._text.Substring(_outerstartindex, _outerlength);
+            }
+        }
+
+        /// <summary>
+        /// Gets the <see cref="HtmlDocument"/> to which this node belongs.
+        /// </summary>
+        public HtmlDocument OwnerDocument
+        {
+            get { return _ownerdocument; }
+            internal set { _ownerdocument = value; }
+        }
+
+        /// <summary>
+        /// Gets the parent of this node (for nodes that can have parents).
+        /// </summary>
+        public HtmlNode ParentNode
+        {
+            get { return _parentnode; }
+            internal set { _parentnode = value; }
+        }
+
+        /// <summary>
+        /// Gets the node immediately preceding this node.
+        /// </summary>
+        public HtmlNode PreviousSibling
+        {
+            get { return _prevnode; }
+            internal set { _prevnode = value; }
+        }
+
+        /// <summary>
+        /// Gets the stream position of this node in the document, relative to the start of the document.
+        /// </summary>
+        public int StreamPosition
+        {
+            get { return _streamposition; }
+        }
+
+        /// <summary>
+        /// Gets a valid XPath string that points to this node
+        /// </summary>
+        public string XPath
+        {
+            get
+            {
+                string basePath = (ParentNode == null || ParentNode.NodeType == HtmlNodeType.Document)
+                                      ? "/"
+                                      : ParentNode.XPath + "/";
+                return basePath + GetRelativeXpath();
+            }
+        }
+
+        #endregion
+
+        #region IXPathNavigable Members
+
+        /// <summary>
+        /// Creates a new XPathNavigator object for navigating this HTML node.
+        /// </summary>
+        /// <returns>An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.</returns>
+        public XPathNavigator CreateNavigator()
+        {
+            return new HtmlNodeNavigator(_ownerdocument, this);
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Determines if an element node can be kept overlapped.
+        /// </summary>
+        /// <param name="name">The name of the element node to check. May not be <c>null</c>.</param>
+        /// <returns>true if the name is the name of an element node that can be kept overlapped, <c>false</c> otherwise.</returns>
+        public static bool CanOverlapElement(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            object flag = ElementsFlags[name.ToLower()];
+            if (flag == null)
+            {
+                return false;
+            }
+            return (((HtmlElementFlag) flag) & HtmlElementFlag.CanOverlap) != 0;
+        }
+
+        /// <summary>
+        /// Creates an HTML node from a string representing literal HTML.
+        /// </summary>
+        /// <param name="html">The HTML text.</param>
+        /// <returns>The newly created node instance.</returns>
+        public static HtmlNode CreateNode(string html)
+        {
+            // REVIEW: this is *not* optimum...
+            HtmlDocument doc = new HtmlDocument();
+            doc.LoadHtml(html);
+            return doc.DocumentNode.FirstChild;
+        }
+
+        /// <summary>
+        /// Determines if an element node is a CDATA element node.
+        /// </summary>
+        /// <param name="name">The name of the element node to check. May not be null.</param>
+        /// <returns>true if the name is the name of a CDATA element node, false otherwise.</returns>
+        public static bool IsCDataElement(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            object flag = ElementsFlags[name.ToLower()];
+            if (flag == null)
+            {
+                return false;
+            }
+            return (((HtmlElementFlag) flag) & HtmlElementFlag.CData) != 0;
+        }
+
+        /// <summary>
+        /// Determines if an element node is closed.
+        /// </summary>
+        /// <param name="name">The name of the element node to check. May not be null.</param>
+        /// <returns>true if the name is the name of a closed element node, false otherwise.</returns>
+        public static bool IsClosedElement(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            object flag = ElementsFlags[name.ToLower()];
+            if (flag == null)
+            {
+                return false;
+            }
+            return (((HtmlElementFlag) flag) & HtmlElementFlag.Closed) != 0;
+        }
+
+        /// <summary>
+        /// Determines if an element node is defined as empty.
+        /// </summary>
+        /// <param name="name">The name of the element node to check. May not be null.</param>
+        /// <returns>true if the name is the name of an empty element node, false otherwise.</returns>
+        public static bool IsEmptyElement(string name)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            if (name.Length == 0)
+            {
+                return true;
+            }
+
+            // <!DOCTYPE ...
+            if ('!' == name[0])
+            {
+                return true;
+            }
+
+            // <?xml ...
+            if ('?' == name[0])
+            {
+                return true;
+            }
+
+            object flag = ElementsFlags[name.ToLower()];
+            if (flag == null)
+            {
+                return false;
+            }
+            return (((HtmlElementFlag) flag) & HtmlElementFlag.Empty) != 0;
+        }
+
+        /// <summary>
+        /// Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+        /// </summary>
+        /// <param name="text">The text to check. May not be null.</param>
+        /// <returns>true or false.</returns>
+        public static bool IsOverlappedClosingElement(string text)
+        {
+            if (text == null)
+            {
+                throw new ArgumentNullException("text");
+            }
+            // min is </x>: 4
+            if (text.Length <= 4)
+                return false;
+
+            if ((text[0] != '<') ||
+                (text[text.Length - 1] != '>') ||
+                (text[1] != '/'))
+                return false;
+
+            string name = text.Substring(2, text.Length - 3);
+            return CanOverlapElement(name);
+        }
+
+        /// <summary>
+        /// Returns a collection of all ancestor nodes of this element.
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Ancestors()
+        {
+            HtmlNode node = ParentNode;
+            while (node.ParentNode != null)
+            {
+                yield return node.ParentNode;
+                node = node.ParentNode;
+            }
+        }
+
+        /// <summary>
+        /// Get Ancestors with matching name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Ancestors(string name)
+        {
+            for (HtmlNode n = ParentNode; n != null; n = n.ParentNode)
+                if (n.Name == name)
+                    yield return n;
+        }
+
+        /// <summary>
+        /// Returns a collection of all ancestor nodes of this element.
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> AncestorsAndSelf()
+        {
+            for (HtmlNode n = this; n != null; n = n.ParentNode)
+                yield return n;
+        }
+
+        /// <summary>
+        /// Gets all anscestor nodes and the current node
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> AncestorsAndSelf(string name)
+        {
+            for (HtmlNode n = this; n != null; n = n.ParentNode)
+                if (n.Name == name)
+                    yield return n;
+        }
+
+        /// <summary>
+        /// Adds the specified node to the end of the list of children of this node.
+        /// </summary>
+        /// <param name="newChild">The node to add. May not be null.</param>
+        /// <returns>The node added.</returns>
+        public HtmlNode AppendChild(HtmlNode newChild)
+        {
+            if (newChild == null)
+            {
+                throw new ArgumentNullException("newChild");
+            }
+
+            ChildNodes.Append(newChild);
+            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
+            _outerchanged = true;
+            _innerchanged = true;
+            return newChild;
+        }
+
+        /// <summary>
+        /// Adds the specified node to the end of the list of children of this node.
+        /// </summary>
+        /// <param name="newChildren">The node list to add. May not be null.</param>
+        public void AppendChildren(HtmlNodeCollection newChildren)
+        {
+            if (newChildren == null)
+                throw new ArgumentNullException("newChildrend");
+
+            foreach (HtmlNode newChild in newChildren)
+            {
+                AppendChild(newChild);
+            }
+        }
+
+        /// <summary>
+        /// Gets all Attributes with name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public IEnumerable<HtmlAttribute> ChildAttributes(string name)
+        {
+            return Attributes.AttributesWithName(name);
+        }
+
+        /// <summary>
+        /// Creates a duplicate of the node
+        /// </summary>
+        /// <returns></returns>
+        public HtmlNode Clone()
+        {
+            return CloneNode(true);
+        }
+
+        /// <summary>
+        /// Creates a duplicate of the node and changes its name at the same time.
+        /// </summary>
+        /// <param name="newName">The new name of the cloned node. May not be <c>null</c>.</param>
+        /// <returns>The cloned node.</returns>
+        public HtmlNode CloneNode(string newName)
+        {
+            return CloneNode(newName, true);
+        }
+
+        /// <summary>
+        /// Creates a duplicate of the node and changes its name at the same time.
+        /// </summary>
+        /// <param name="newName">The new name of the cloned node. May not be null.</param>
+        /// <param name="deep">true to recursively clone the subtree under the specified node; false to clone only the node itself.</param>
+        /// <returns>The cloned node.</returns>
+        public HtmlNode CloneNode(string newName, bool deep)
+        {
+            if (newName == null)
+            {
+                throw new ArgumentNullException("newName");
+            }
+
+            HtmlNode node = CloneNode(deep);
+            node.Name = newName;
+            return node;
+        }
+
+        /// <summary>
+        /// Creates a duplicate of the node.
+        /// </summary>
+        /// <param name="deep">true to recursively clone the subtree under the specified node; false to clone only the node itself.</param>
+        /// <returns>The cloned node.</returns>
+        public HtmlNode CloneNode(bool deep)
+        {
+            HtmlNode node = _ownerdocument.CreateNode(_nodetype);
+            node.Name = Name;
+
+            switch (_nodetype)
+            {
+                case HtmlNodeType.Comment:
+                    ((HtmlCommentNode) node).Comment = ((HtmlCommentNode) this).Comment;
+                    return node;
+
+                case HtmlNodeType.Text:
+                    ((HtmlTextNode) node).Text = ((HtmlTextNode) this).Text;
+                    return node;
+            }
+
+            // attributes
+            if (HasAttributes)
+            {
+                foreach (HtmlAttribute att in _attributes)
+                {
+                    HtmlAttribute newatt = att.Clone();
+                    node.Attributes.Append(newatt);
+                }
+            }
+
+            // closing attributes
+            if (HasClosingAttributes)
+            {
+                node._endnode = _endnode.CloneNode(false);
+                foreach (HtmlAttribute att in _endnode._attributes)
+                {
+                    HtmlAttribute newatt = att.Clone();
+                    node._endnode._attributes.Append(newatt);
+                }
+            }
+            if (!deep)
+            {
+                return node;
+            }
+
+            if (!HasChildNodes)
+            {
+                return node;
+            }
+
+            // child nodes
+            foreach (HtmlNode child in _childnodes)
+            {
+                HtmlNode newchild = child.Clone();
+                node.AppendChild(newchild);
+            }
+            return node;
+        }
+
+        /// <summary>
+        /// Creates a duplicate of the node and the subtree under it.
+        /// </summary>
+        /// <param name="node">The node to duplicate. May not be <c>null</c>.</param>
+        public void CopyFrom(HtmlNode node)
+        {
+            CopyFrom(node, true);
+        }
+
+        /// <summary>
+        /// Creates a duplicate of the node.
+        /// </summary>
+        /// <param name="node">The node to duplicate. May not be <c>null</c>.</param>
+        /// <param name="deep">true to recursively clone the subtree under the specified node, false to clone only the node itself.</param>
+        public void CopyFrom(HtmlNode node, bool deep)
+        {
+            if (node == null)
+            {
+                throw new ArgumentNullException("node");
+            }
+
+            Attributes.RemoveAll();
+            if (node.HasAttributes)
+            {
+                foreach (HtmlAttribute att in node.Attributes)
+                {
+                    SetAttributeValue(att.Name, att.Value);
+                }
+            }
+
+            if (!deep)
+            {
+                RemoveAllChildren();
+                if (node.HasChildNodes)
+                {
+                    foreach (HtmlNode child in node.ChildNodes)
+                    {
+                        AppendChild(child.CloneNode(true));
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Creates an XPathNavigator using the root of this document.
+        /// </summary>
+        /// <returns></returns>
+        public XPathNavigator CreateRootNavigator()
+        {
+            return new HtmlNodeNavigator(_ownerdocument, _ownerdocument.DocumentNode);
+        }
+
+        /// <summary>
+        /// Gets all Descendant nodes for this node and each of child nodes
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> DescendantNodes()
+        {
+            foreach (HtmlNode node in ChildNodes)
+            {
+                yield return node;
+                foreach (HtmlNode descendant in node.DescendantNodes())
+                    yield return descendant;
+            }
+        }
+
+        /// <summary>
+        /// Returns a collection of all descendant nodes of this element, in document order
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> DescendantNodesAndSelf()
+        {
+            return DescendantsAndSelf();
+        }
+
+        /// <summary>
+        /// Gets all Descendant nodes in enumerated list
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Descendants()
+        {
+            foreach (HtmlNode node in DescendantNodes())
+            {
+                yield return node;
+            }
+        }
+
+        /// <summary>
+        /// Get all descendant nodes with matching name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Descendants(string name)
+        {
+            foreach (HtmlNode node in Descendants())
+                if (node.Name == name)
+                    yield return node;
+        }
+
+        /// <summary>
+        /// Returns a collection of all descendant nodes of this element, in document order
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> DescendantsAndSelf()
+        {
+            yield return this;
+            foreach (HtmlNode n in DescendantNodes())
+            {
+                HtmlNode el = n;
+                if (el != null)
+                    yield return el;
+            }
+        }
+
+        /// <summary>
+        /// Gets all descendant nodes including this node
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> DescendantsAndSelf(string name)
+        {
+            yield return this;
+            foreach (HtmlNode node in Descendants())
+                if (node.Name == name)
+                    yield return node;
+        }
+
+        /// <summary>
+        /// Gets first generation child node matching name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public HtmlNode Element(string name)
+        {
+            foreach (HtmlNode node in ChildNodes)
+                if (node.Name == name)
+                    return node;
+            return null;
+        }
+
+        /// <summary>
+        /// Gets matching first generation child nodes matching name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Elements(string name)
+        {
+            foreach (HtmlNode node in ChildNodes)
+                if (node.Name == name)
+                    yield return node;
+        }
+
+        /// <summary>
+        /// Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+        /// </summary>
+        /// <param name="name">The name of the attribute to get. May not be <c>null</c>.</param>
+        /// <param name="def">The default value to return if not found.</param>
+        /// <returns>The value of the attribute if found, the default value if not found.</returns>
+        public string GetAttributeValue(string name, string def)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            if (!HasAttributes)
+            {
+                return def;
+            }
+            HtmlAttribute att = Attributes[name];
+            if (att == null)
+            {
+                return def;
+            }
+            return att.Value;
+        }
+
+        /// <summary>
+        /// Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+        /// </summary>
+        /// <param name="name">The name of the attribute to get. May not be <c>null</c>.</param>
+        /// <param name="def">The default value to return if not found.</param>
+        /// <returns>The value of the attribute if found, the default value if not found.</returns>
+        public int GetAttributeValue(string name, int def)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            if (!HasAttributes)
+            {
+                return def;
+            }
+            HtmlAttribute att = Attributes[name];
+            if (att == null)
+            {
+                return def;
+            }
+            try
+            {
+                return Convert.ToInt32(att.Value);
+            }
+            catch
+            {
+                return def;
+            }
+        }
+
+        /// <summary>
+        /// Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+        /// </summary>
+        /// <param name="name">The name of the attribute to get. May not be <c>null</c>.</param>
+        /// <param name="def">The default value to return if not found.</param>
+        /// <returns>The value of the attribute if found, the default value if not found.</returns>
+        public bool GetAttributeValue(string name, bool def)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+
+            if (!HasAttributes)
+            {
+                return def;
+            }
+            HtmlAttribute att = Attributes[name];
+            if (att == null)
+            {
+                return def;
+            }
+            try
+            {
+                return Convert.ToBoolean(att.Value);
+            }
+            catch
+            {
+                return def;
+            }
+        }
+
+        /// <summary>
+        /// Inserts the specified node immediately after the specified reference node.
+        /// </summary>
+        /// <param name="newChild">The node to insert. May not be <c>null</c>.</param>
+        /// <param name="refChild">The node that is the reference node. The newNode is placed after the refNode.</param>
+        /// <returns>The node being inserted.</returns>
+        public HtmlNode InsertAfter(HtmlNode newChild, HtmlNode refChild)
+        {
+            if (newChild == null)
+            {
+                throw new ArgumentNullException("newChild");
+            }
+
+            if (refChild == null)
+            {
+                return PrependChild(newChild);
+            }
+
+            if (newChild == refChild)
+            {
+                return newChild;
+            }
+
+            int index = -1;
+
+            if (_childnodes != null)
+            {
+                index = _childnodes[refChild];
+            }
+            if (index == -1)
+            {
+                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
+            }
+
+            if (_childnodes != null) _childnodes.Insert(index + 1, newChild);
+
+            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
+            _outerchanged = true;
+            _innerchanged = true;
+            return newChild;
+        }
+
+        /// <summary>
+        /// Inserts the specified node immediately before the specified reference node.
+        /// </summary>
+        /// <param name="newChild">The node to insert. May not be <c>null</c>.</param>
+        /// <param name="refChild">The node that is the reference node. The newChild is placed before this node.</param>
+        /// <returns>The node being inserted.</returns>
+        public HtmlNode InsertBefore(HtmlNode newChild, HtmlNode refChild)
+        {
+            if (newChild == null)
+            {
+                throw new ArgumentNullException("newChild");
+            }
+
+            if (refChild == null)
+            {
+                return AppendChild(newChild);
+            }
+
+            if (newChild == refChild)
+            {
+                return newChild;
+            }
+
+            int index = -1;
+
+            if (_childnodes != null)
+            {
+                index = _childnodes[refChild];
+            }
+
+            if (index == -1)
+            {
+                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
+            }
+
+            if (_childnodes != null) _childnodes.Insert(index, newChild);
+
+            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
+            _outerchanged = true;
+            _innerchanged = true;
+            return newChild;
+        }
+
+        /// <summary>
+        /// Adds the specified node to the beginning of the list of children of this node.
+        /// </summary>
+        /// <param name="newChild">The node to add. May not be <c>null</c>.</param>
+        /// <returns>The node added.</returns>
+        public HtmlNode PrependChild(HtmlNode newChild)
+        {
+            if (newChild == null)
+            {
+                throw new ArgumentNullException("newChild");
+            }
+            ChildNodes.Prepend(newChild);
+            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
+            _outerchanged = true;
+            _innerchanged = true;
+            return newChild;
+        }
+
+        /// <summary>
+        /// Adds the specified node list to the beginning of the list of children of this node.
+        /// </summary>
+        /// <param name="newChildren">The node list to add. May not be <c>null</c>.</param>
+        public void PrependChildren(HtmlNodeCollection newChildren)
+        {
+            if (newChildren == null)
+            {
+                throw new ArgumentNullException("newChildren");
+            }
+
+            foreach (HtmlNode newChild in newChildren)
+            {
+                PrependChild(newChild);
+            }
+        }
+
+        /// <summary>
+        /// Removes node from parent collection
+        /// </summary>
+        public void Remove()
+        {
+            if (ParentNode != null)
+                ParentNode.ChildNodes.Remove(this);
+        }
+
+        /// <summary>
+        /// Removes all the children and/or attributes of the current node.
+        /// </summary>
+        public void RemoveAll()
+        {
+            RemoveAllChildren();
+
+            if (HasAttributes)
+            {
+                _attributes.Clear();
+            }
+
+            if ((_endnode != null) && (_endnode != this))
+            {
+                if (_endnode._attributes != null)
+                {
+                    _endnode._attributes.Clear();
+                }
+            }
+            _outerchanged = true;
+            _innerchanged = true;
+        }
+
+        /// <summary>
+        /// Removes all the children of the current node.
+        /// </summary>
+        public void RemoveAllChildren()
+        {
+            if (!HasChildNodes)
+            {
+                return;
+            }
+
+            if (_ownerdocument.OptionUseIdAttribute)
+            {
+                // remove nodes from id list
+                foreach (HtmlNode node in _childnodes)
+                {
+                    _ownerdocument.SetIdForNode(null, node.GetId());
+                }
+            }
+            _childnodes.Clear();
+            _outerchanged = true;
+            _innerchanged = true;
+        }
+
+        /// <summary>
+        /// Removes the specified child node.
+        /// </summary>
+        /// <param name="oldChild">The node being removed. May not be <c>null</c>.</param>
+        /// <returns>The node removed.</returns>
+        public HtmlNode RemoveChild(HtmlNode oldChild)
+        {
+            if (oldChild == null)
+            {
+                throw new ArgumentNullException("oldChild");
+            }
+
+            int index = -1;
+
+            if (_childnodes != null)
+            {
+                index = _childnodes[oldChild];
+            }
+
+            if (index == -1)
+            {
+                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
+            }
+
+            if (_childnodes != null)
+                _childnodes.Remove(index);
+
+            _ownerdocument.SetIdForNode(null, oldChild.GetId());
+            _outerchanged = true;
+            _innerchanged = true;
+            return oldChild;
+        }
+
+        /// <summary>
+        /// Removes the specified child node.
+        /// </summary>
+        /// <param name="oldChild">The node being removed. May not be <c>null</c>.</param>
+        /// <param name="keepGrandChildren">true to keep grand children of the node, false otherwise.</param>
+        /// <returns>The node removed.</returns>
+        public HtmlNode RemoveChild(HtmlNode oldChild, bool keepGrandChildren)
+        {
+            if (oldChild == null)
+            {
+                throw new ArgumentNullException("oldChild");
+            }
+
+            if ((oldChild._childnodes != null) && keepGrandChildren)
+            {
+                // get prev sibling
+                HtmlNode prev = oldChild.PreviousSibling;
+
+                // reroute grand children to ourselves
+                foreach (HtmlNode grandchild in oldChild._childnodes)
+                {
+                    InsertAfter(grandchild, prev);
+                }
+            }
+            RemoveChild(oldChild);
+            _outerchanged = true;
+            _innerchanged = true;
+            return oldChild;
+        }
+
+        /// <summary>
+        /// Replaces the child node oldChild with newChild node.
+        /// </summary>
+        /// <param name="newChild">The new node to put in the child list.</param>
+        /// <param name="oldChild">The node being replaced in the list.</param>
+        /// <returns>The node replaced.</returns>
+        public HtmlNode ReplaceChild(HtmlNode newChild, HtmlNode oldChild)
+        {
+            if (newChild == null)
+            {
+                return RemoveChild(oldChild);
+            }
+
+            if (oldChild == null)
+            {
+                return AppendChild(newChild);
+            }
+
+            int index = -1;
+
+            if (_childnodes != null)
+            {
+                index = _childnodes[oldChild];
+            }
+
+            if (index == -1)
+            {
+                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
+            }
+
+            if (_childnodes != null) _childnodes.Replace(index, newChild);
+
+            _ownerdocument.SetIdForNode(null, oldChild.GetId());
+            _ownerdocument.SetIdForNode(newChild, newChild.GetId());
+            _outerchanged = true;
+            _innerchanged = true;
+            return newChild;
+        }
+
+        /// <summary>
+        /// Selects a list of nodes matching the <see cref="XPath"/> expression.
+        /// </summary>
+        /// <param name="xpath">The XPath expression.</param>
+        /// <returns>An <see cref="HtmlNodeCollection"/> containing a collection of nodes matching the <see cref="XPath"/> query, or <c>null</c> if no node matched the XPath expression.</returns>
+        public HtmlNodeCollection SelectNodes(string xpath)
+        {
+            HtmlNodeCollection list = new HtmlNodeCollection(null);
+
+            HtmlNodeNavigator nav = new HtmlNodeNavigator(_ownerdocument, this);
+            XPathNodeIterator it = nav.Select(xpath);
+            while (it.MoveNext())
+            {
+                HtmlNodeNavigator n = (HtmlNodeNavigator) it.Current;
+                list.Add(n.CurrentNode);
+            }
+            if (list.Count == 0)
+            {
+                return null;
+            }
+            return list;
+        }
+
+        /// <summary>
+        /// Selects the first XmlNode that matches the XPath expression.
+        /// </summary>
+        /// <param name="xpath">The XPath expression. May not be null.</param>
+        /// <returns>The first <see cref="HtmlNode"/> that matches the XPath query or a null reference if no matching node was found.</returns>
+        public HtmlNode SelectSingleNode(string xpath)
+        {
+            if (xpath == null)
+            {
+                throw new ArgumentNullException("xpath");
+            }
+
+            HtmlNodeNavigator nav = new HtmlNodeNavigator(_ownerdocument, this);
+            XPathNodeIterator it = nav.Select(xpath);
+            if (!it.MoveNext())
+            {
+                return null;
+            }
+
+            HtmlNodeNavigator node = (HtmlNodeNavigator) it.Current;
+            return node.CurrentNode;
+        }
+
+        /// <summary>
+        /// Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+        /// </summary>
+        /// <param name="name">The name of the attribute to set. May not be null.</param>
+        /// <param name="value">The value for the attribute.</param>
+        /// <returns>The corresponding attribute instance.</returns>
+        public HtmlAttribute SetAttributeValue(string name, string value)
+        {
+            if (name == null)
+            {
+                throw new ArgumentNullException("name");
+            }
+            HtmlAttribute att = Attributes[name];
+            if (att == null)
+            {
+                return Attributes.Append(_ownerdocument.CreateAttribute(name, value));
+            }
+            att.Value = value;
+            return att;
+        }
+
+        /// <summary>
+        /// Saves all the children of the node to the specified TextWriter.
+        /// </summary>
+        /// <param name="outText">The TextWriter to which you want to save.</param>
+        public void WriteContentTo(TextWriter outText)
+        {
+            if (_childnodes == null)
+            {
+                return;
+            }
+
+            foreach (HtmlNode node in _childnodes)
+            {
+                node.WriteTo(outText);
+            }
+        }
+
+        /// <summary>
+        /// Saves all the children of the node to a string.
+        /// </summary>
+        /// <returns>The saved string.</returns>
+        public string WriteContentTo()
+        {
+            StringWriter sw = new StringWriter();
+            WriteContentTo(sw);
+            sw.Flush();
+            return sw.ToString();
+        }
+
+        /// <summary>
+        /// Saves the current node to the specified TextWriter.
+        /// </summary>
+        /// <param name="outText">The TextWriter to which you want to save.</param>
+        public void WriteTo(TextWriter outText)
+        {
+            string html;
+            switch (_nodetype)
+            {
+                case HtmlNodeType.Comment:
+                    html = ((HtmlCommentNode) this).Comment;
+                    if (_ownerdocument.OptionOutputAsXml)
+                    {
+                        outText.Write("<!--" + GetXmlComment((HtmlCommentNode) this) + " -->");
+                    }
+                    else
+                    {
+                        outText.Write(html);
+                    }
+                    break;
+
+                case HtmlNodeType.Document:
+                    if (_ownerdocument.OptionOutputAsXml)
+                    {
+                        outText.Write("<?xml version=\"1.0\" encoding=\"" + _ownerdocument.GetOutEncoding().BodyName +
+                                      "\"?>");
+
+                        // check there is a root element
+                        if (_ownerdocument.DocumentNode.HasChildNodes)
+                        {
+                            int rootnodes = _ownerdocument.DocumentNode._childnodes.Count;
+                            if (rootnodes > 0)
+                            {
+                                HtmlNode xml = _ownerdocument.GetXmlDeclaration();
+                                if (xml != null)
+                                {
+                                    rootnodes --;
+                                }
+
+                                if (rootnodes > 1)
+                                {
+                                    if (_ownerdocument.OptionOutputUpperCase)
+                                    {
+                                        outText.Write("<SPAN>");
+                                        WriteContentTo(outText);
+                                        outText.Write("</SPAN>");
+                                    }
+                                    else
+                                    {
+                                        outText.Write("<span>");
+                                        WriteContentTo(outText);
+                                        outText.Write("</span>");
+                                    }
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                    WriteContentTo(outText);
+                    break;
+
+                case HtmlNodeType.Text:
+                    html = ((HtmlTextNode) this).Text;
+                    if (_ownerdocument.OptionOutputAsXml)
+                    {
+                        outText.Write(HtmlDocument.HtmlEncode(html));
+                    }
+                    else
+                    {
+                        outText.Write(html);
+                    }
+                    break;
+
+                case HtmlNodeType.Element:
+                    string name;
+                    if (_ownerdocument.OptionOutputUpperCase)
+                    {
+                        name = Name.ToUpper();
+                    }
+                    else
+                    {
+                        name = Name;
+                    }
+
+                    if (_ownerdocument.OptionOutputOriginalCase)
+                        name = OriginalName;
+
+                    if (_ownerdocument.OptionOutputAsXml)
+                    {
+                        if (name.Length > 0)
+                        {
+                            if (name[0] == '?')
+                            {
+                                // forget this one, it's been done at the document level
+                                break;
+                            }
+
+                            if (name.Trim().Length == 0)
+                            {
+                                break;
+                            }
+                            name = HtmlDocument.GetXmlName(name);
+                        }
+                        else
+                        {
+                            break;
+                        }
+                    }
+
+                    outText.Write("<" + name);
+                    WriteAttributes(outText, false);
+
+                    if (!HasChildNodes)
+                    {
+                        if (IsEmptyElement(Name))
+                        {
+                            if ((_ownerdocument.OptionWriteEmptyNodes) || (_ownerdocument.OptionOutputAsXml))
+                            {
+                                outText.Write(" />");
+                            }
+                            else
+                            {
+                                if (Name.Length > 0)
+                                {
+                                    if (Name[0] == '?')
+                                    {
+                                        outText.Write("?");
+                                    }
+                                }
+
+                                outText.Write(">");
+                            }
+                        }
+                        else
+                        {
+                            outText.Write("></" + name + ">");
+                        }
+                    }
+                    else
+                    {
+                        outText.Write(">");
+                        bool cdata = false;
+                        if (_ownerdocument.OptionOutputAsXml)
+                        {
+                            if (IsCDataElement(Name))
+                            {
+                                // this code and the following tries to output things as nicely as possible for old browsers.
+                                cdata = true;
+                                outText.Write("\r\n//<![CDATA[\r\n");
+                            }
+                        }
+
+                        if (cdata)
+                        {
+                            if (HasChildNodes)
+                            {
+                                // child must be a text
+                                ChildNodes[0].WriteTo(outText);
+                            }
+                            outText.Write("\r\n//]]>//\r\n");
+                        }
+                        else
+                        {
+                            WriteContentTo(outText);
+                        }
+
+                        outText.Write("</" + name);
+                        if (!_ownerdocument.OptionOutputAsXml)
+                        {
+                            WriteAttributes(outText, true);
+                        }
+                        outText.Write(">");
+                    }
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// Saves the current node to the specified XmlWriter.
+        /// </summary>
+        /// <param name="writer">The XmlWriter to which you want to save.</param>
+        public void WriteTo(XmlWriter writer)
+        {
+            switch (_nodetype)
+            {
+                case HtmlNodeType.Comment:
+                    writer.WriteComment(GetXmlComment((HtmlCommentNode) this));
+                    break;
+
+                case HtmlNodeType.Document:
+                    writer.WriteProcessingInstruction("xml",
+                                                      "version=\"1.0\" encoding=\"" +
+                                                      _ownerdocument.GetOutEncoding().BodyName + "\"");
+                    if (HasChildNodes)
+                    {
+                        foreach (HtmlNode subnode in ChildNodes)
+                        {
+                            subnode.WriteTo(writer);
+                        }
+                    }
+                    break;
+
+                case HtmlNodeType.Text:
+                    string html = ((HtmlTextNode) this).Text;
+                    writer.WriteString(html);
+                    break;
+
+                case HtmlNodeType.Element:
+                    string name = _ownerdocument.OptionOutputUpperCase ? Name.ToUpper() : Name;
+
+                    if (_ownerdocument.OptionOutputOriginalCase)
+                        name = OriginalName;
+
+                    writer.WriteStartElement(name);
+                    WriteAttributes(writer, this);
+
+                    if (HasChildNodes)
+                    {
+                        foreach (HtmlNode subnode in ChildNodes)
+                        {
+                            subnode.WriteTo(writer);
+                        }
+                    }
+                    writer.WriteEndElement();
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// Saves the current node to a string.
+        /// </summary>
+        /// <returns>The saved string.</returns>
+        public string WriteTo()
+        {
+            using (StringWriter sw = new StringWriter())
+            {
+                WriteTo(sw);
+                sw.Flush();
+                return sw.ToString();
+            }
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal static string GetXmlComment(HtmlCommentNode comment)
+        {
+            string s = comment.Comment;
+            return s.Substring(4, s.Length - 7).Replace("--", " - -");
+        }
+
+        internal static void WriteAttributes(XmlWriter writer, HtmlNode node)
+        {
+            if (!node.HasAttributes)
+            {
+                return;
+            }
+            // we use Hashitems to make sure attributes are written only once
+            foreach (HtmlAttribute att in node.Attributes.Hashitems.Values)
+            {
+                writer.WriteAttributeString(att.XmlName, att.Value);
+            }
+        }
+
+        internal void CloseNode(HtmlNode endnode)
+        {
+            if (!_ownerdocument.OptionAutoCloseOnEnd)
+            {
+                // close all children
+                if (_childnodes != null)
+                {
+                    foreach (HtmlNode child in _childnodes)
+                    {
+                        if (child.Closed)
+                            continue;
+
+                        // create a fake closer node
+                        HtmlNode close = new HtmlNode(NodeType, _ownerdocument, -1);
+                        close._endnode = close;
+                        child.CloseNode(close);
+                    }
+                }
+            }
+
+            if (!Closed)
+            {
+                _endnode = endnode;
+
+                if (_ownerdocument._openednodes != null)
+                {
+                    _ownerdocument._openednodes.Remove(_outerstartindex);
+                }
+
+                HtmlNode self = _ownerdocument._lastnodes[Name] as HtmlNode;
+                if (self == this)
+                {
+                    _ownerdocument._lastnodes.Remove(Name);
+                    _ownerdocument.UpdateLastParentNode();
+                }
+
+                if (endnode == this)
+                    return;
+
+                // create an inner section
+                _innerstartindex = _outerstartindex + _outerlength;
+                _innerlength = endnode._outerstartindex - _innerstartindex;
+
+                // update full length
+                _outerlength = (endnode._outerstartindex + endnode._outerlength) - _outerstartindex;
+            }
+        }
+
+        internal string GetId()
+        {
+            HtmlAttribute att = Attributes["id"];
+            if (att == null)
+            {
+                return null;
+            }
+            return att.Value;
+        }
+
+        internal void SetId(string id)
+        {
+            HtmlAttribute att = Attributes["id"];
+            if (att == null)
+            {
+                att = _ownerdocument.CreateAttribute("id");
+            }
+            att.Value = id;
+            _ownerdocument.SetIdForNode(this, att.Value);
+            _outerchanged = true;
+        }
+
+        internal void WriteAttribute(TextWriter outText, HtmlAttribute att)
+        {
+            string name;
+            string quote = att.QuoteType == AttributeValueQuote.DoubleQuote ? "\"" : "'";
+            if (_ownerdocument.OptionOutputAsXml)
+            {
+                if (_ownerdocument.OptionOutputUpperCase)
+                {
+                    name = att.XmlName.ToUpper();
+                }
+                else
+                {
+                    name = att.XmlName;
+                }
+                if (_ownerdocument.OptionOutputOriginalCase)
+                    name = att.OriginalName;
+
+                outText.Write(" " + name + "=" + quote + HtmlDocument.HtmlEncode(att.XmlValue) + quote);
+            }
+            else
+            {
+                if (_ownerdocument.OptionOutputUpperCase)
+                {
+                    name = att.Name.ToUpper();
+                }
+                else
+                {
+                    name = att.Name;
+                }
+
+                if (att.Name.Length >= 4)
+                {
+                    if ((att.Name[0] == '<') && (att.Name[1] == '%') &&
+                        (att.Name[att.Name.Length - 1] == '>') && (att.Name[att.Name.Length - 2] == '%'))
+                    {
+                        outText.Write(" " + name);
+                        return;
+                    }
+                }
+                if (_ownerdocument.OptionOutputOptimizeAttributeValues)
+                {
+                    if (att.Value.IndexOfAny(new Char[] {(char) 10, (char) 13, (char) 9, ' '}) < 0)
+                    {
+                        outText.Write(" " + name + "=" + att.Value);
+                    }
+                    else
+                    {
+                        outText.Write(" " + name + "=" + quote + att.Value + quote);
+                    }
+                }
+                else
+                {
+                    outText.Write(" " + name + "=" + quote + att.Value + quote);
+                }
+            }
+        }
+
+        internal void WriteAttributes(TextWriter outText, bool closing)
+        {
+            if (_ownerdocument.OptionOutputAsXml)
+            {
+                if (_attributes == null)
+                {
+                    return;
+                }
+                // we use Hashitems to make sure attributes are written only once
+                foreach (HtmlAttribute att in _attributes.Hashitems.Values)
+                {
+                    WriteAttribute(outText, att);
+                }
+                return;
+            }
+
+            if (!closing)
+            {
+                if (_attributes != null)
+                {
+                    foreach (HtmlAttribute att in _attributes)
+                    {
+                        WriteAttribute(outText, att);
+                    }
+                }
+                if (_ownerdocument.OptionAddDebuggingAttributes)
+                {
+                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_closed", Closed.ToString()));
+                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_children", ChildNodes.Count.ToString()));
+
+                    int i = 0;
+                    foreach (HtmlNode n in ChildNodes)
+                    {
+                        WriteAttribute(outText, _ownerdocument.CreateAttribute("_child_" + i,
+                                                                               n.Name));
+                        i++;
+                    }
+                }
+            }
+            else
+            {
+                if (_endnode == null)
+                {
+                    return;
+                }
+
+                if (_endnode._attributes == null)
+                {
+                    return;
+                }
+
+                if (_endnode == this)
+                {
+                    return;
+                }
+
+                foreach (HtmlAttribute att in _endnode._attributes)
+                {
+                    WriteAttribute(outText, att);
+                }
+                if (_ownerdocument.OptionAddDebuggingAttributes)
+                {
+                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_closed", Closed.ToString()));
+                    WriteAttribute(outText, _ownerdocument.CreateAttribute("_children", ChildNodes.Count.ToString()));
+                }
+            }
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private string GetRelativeXpath()
+        {
+            if (ParentNode == null)
+                return Name;
+            if (NodeType == HtmlNodeType.Document)
+                return string.Empty;
+
+            int i = 1;
+            foreach (HtmlNode node in ParentNode.ChildNodes)
+            {
+                if (node.Name != Name) continue;
+
+                if (node == this)
+                    break;
+
+                i++;
+            }
+            return Name + "[" + i + "]";
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlNodeCollection.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlNodeCollection.cs
@@ -1,512 +1,512 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a combined list and collection of HTML nodes.
-    /// </summary>
-    public class HtmlNodeCollection : IList<HtmlNode>
-    {
-        #region Fields
-
-        private readonly HtmlNode _parentnode;
-        private readonly List<HtmlNode> _items = new List<HtmlNode>();
-
-        #endregion
-
-        #region Constructors
-
-        /// <summary>
-        /// Initialize the HtmlNodeCollection with the base parent node
-        /// </summary>
-        /// <param name="parentnode">The base node of the collection</param>
-        public HtmlNodeCollection(HtmlNode parentnode)
-        {
-            _parentnode = parentnode; // may be null
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets a given node from the list.
-        /// </summary>
-        public int this[HtmlNode node]
-        {
-            get
-            {
-                int index = GetNodeIndex(node);
-                if (index == -1)
-                {
-                    throw new ArgumentOutOfRangeException("node",
-                                                          "Node \"" + node.CloneNode(false).OuterHtml +
-                                                          "\" was not found in the collection");
-                }
-                return index;
-            }
-        }
-
-        /// <summary>
-        /// Get node with tag name
-        /// </summary>
-        /// <param name="nodeName"></param>
-        /// <returns></returns>
-        public HtmlNode this[string nodeName]
-        {
-            get
-            {
-                nodeName = nodeName.ToLower();
-                for (int i = 0; i < _items.Count; i++)
-                    if (_items[i].Equals(nodeName))
-                        return _items[i];
-
-                return null;
-            }
-        }
-
-        #endregion
-
-        #region IList<HtmlNode> Members
-
-        /// <summary>
-        /// Gets the number of elements actually contained in the list.
-        /// </summary>
-        public int Count
-        {
-            get { return _items.Count; }
-        }
-
-        /// <summary>
-        /// Is collection read only
-        /// </summary>
-        public bool IsReadOnly
-        {
-            get { return false; }
-        }
-
-        /// <summary>
-        /// Gets the node at the specified index.
-        /// </summary>
-        public HtmlNode this[int index]
-        {
-            get { return _items[index]; }
-            set { _items[index] = value; }
-        }
-
-        /// <summary>
-        /// Add node to the collection
-        /// </summary>
-        /// <param name="node"></param>
-        public void Add(HtmlNode node)
-        {
-            _items.Add(node);
-        }
-
-        /// <summary>
-        /// Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
-        /// </summary>
-        public void Clear()
-        {
-            foreach (HtmlNode node in _items)
-            {
-                node.ParentNode = null;
-                node.NextSibling = null;
-                node.PreviousSibling = null;
-            }
-            _items.Clear();
-        }
-
-        /// <summary>
-        /// Gets existence of node in collection
-        /// </summary>
-        /// <param name="item"></param>
-        /// <returns></returns>
-        public bool Contains(HtmlNode item)
-        {
-            return _items.Contains(item);
-        }
-
-        /// <summary>
-        /// Copy collection to array
-        /// </summary>
-        /// <param name="array"></param>
-        /// <param name="arrayIndex"></param>
-        public void CopyTo(HtmlNode[] array, int arrayIndex)
-        {
-            _items.CopyTo(array, arrayIndex);
-        }
-
-        /// <summary>
-        /// Get Enumerator
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator<HtmlNode> IEnumerable<HtmlNode>.GetEnumerator()
-        {
-            return _items.GetEnumerator();
-        }
-
-        /// <summary>
-        /// Get Explicit Enumerator
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return _items.GetEnumerator();
-        }
-
-        /// <summary>
-        /// Get index of node
-        /// </summary>
-        /// <param name="item"></param>
-        /// <returns></returns>
-        public int IndexOf(HtmlNode item)
-        {
-            return _items.IndexOf(item);
-        }
-
-        /// <summary>
-        /// Insert node at index
-        /// </summary>
-        /// <param name="index"></param>
-        /// <param name="node"></param>
-        public void Insert(int index, HtmlNode node)
-        {
-            HtmlNode next = null;
-            HtmlNode prev = null;
-
-            if (index > 0)
-            {
-                prev = _items[index - 1];
-            }
-
-            if (index < _items.Count)
-            {
-                next = _items[index];
-            }
-
-            _items.Insert(index, node);
-
-            if (prev != null)
-            {
-                if (node == prev)
-                {
-                    throw new InvalidProgramException("Unexpected error.");
-                }
-                prev._nextnode = node;
-            }
-
-            if (next != null)
-            {
-                next._prevnode = node;
-            }
-
-            node._prevnode = prev;
-            if (next == node)
-            {
-                throw new InvalidProgramException("Unexpected error.");
-            }
-            node._nextnode = next;
-            node._parentnode = _parentnode;
-        }
-
-        /// <summary>
-        /// Remove node
-        /// </summary>
-        /// <param name="item"></param>
-        /// <returns></returns>
-        public bool Remove(HtmlNode item)
-        {
-            int i = _items.IndexOf(item);
-            RemoveAt(i);
-            return true;
-        }
-
-        /// <summary>
-        /// Remove <see cref="HtmlNode"/> at index
-        /// </summary>
-        /// <param name="index"></param>
-        public void RemoveAt(int index)
-        {
-            HtmlNode next = null;
-            HtmlNode prev = null;
-            HtmlNode oldnode = _items[index];
-
-            if (index > 0)
-            {
-                prev = _items[index - 1];
-            }
-
-            if (index < (_items.Count - 1))
-            {
-                next = _items[index + 1];
-            }
-
-            _items.RemoveAt(index);
-
-            if (prev != null)
-            {
-                if (next == prev)
-                {
-                    throw new InvalidProgramException("Unexpected error.");
-                }
-                prev._nextnode = next;
-            }
-
-            if (next != null)
-            {
-                next._prevnode = prev;
-            }
-
-            oldnode._prevnode = null;
-            oldnode._nextnode = null;
-            oldnode._parentnode = null;
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Get first instance of node in supplied collection
-        /// </summary>
-        /// <param name="items"></param>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public static HtmlNode FindFirst(HtmlNodeCollection items, string name)
-        {
-            foreach (HtmlNode node in items)
-            {
-                if (node.Name.ToLower().Contains(name))
-                    return node;
-                if (node.HasChildNodes)
-                {
-                    HtmlNode returnNode = FindFirst(node.ChildNodes, name);
-                    if (returnNode != null)
-                        return returnNode;
-                }
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Add node to the end of the collection
-        /// </summary>
-        /// <param name="node"></param>
-        public void Append(HtmlNode node)
-        {
-            HtmlNode last = null;
-            if (_items.Count > 0)
-            {
-                last = _items[_items.Count - 1];
-            }
-
-            _items.Add(node);
-            node._prevnode = last;
-            node._nextnode = null;
-            node._parentnode = _parentnode;
-            if (last != null)
-            {
-                if (last == node)
-                {
-                    throw new InvalidProgramException("Unexpected error.");
-                }
-                last._nextnode = node;
-            }
-        }
-
-        /// <summary>
-        /// Get first instance of node with name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public HtmlNode FindFirst(string name)
-        {
-            return FindFirst(this, name);
-        }
-
-        /// <summary>
-        /// Get index of node
-        /// </summary>
-        /// <param name="node"></param>
-        /// <returns></returns>
-        public int GetNodeIndex(HtmlNode node)
-        {
-            // TODO: should we rewrite this? what would be the key of a node?
-            for (int i = 0; i < _items.Count; i++)
-            {
-                if (node == (_items[i]))
-                {
-                    return i;
-                }
-            }
-            return -1;
-        }
-
-        /// <summary>
-        /// Add node to the beginning of the collection
-        /// </summary>
-        /// <param name="node"></param>
-        public void Prepend(HtmlNode node)
-        {
-            HtmlNode first = null;
-            if (_items.Count > 0)
-            {
-                first = _items[0];
-            }
-
-            _items.Insert(0, node);
-
-            if (node == first)
-            {
-                throw new InvalidProgramException("Unexpected error.");
-            }
-            node._nextnode = first;
-            node._prevnode = null;
-            node._parentnode = _parentnode;
-            if (first != null)
-            {
-                first._prevnode = node;
-            }
-        }
-
-        /// <summary>
-        /// Remove node at index
-        /// </summary>
-        /// <param name="index"></param>
-        /// <returns></returns>
-        public bool Remove(int index)
-        {
-            RemoveAt(index);
-            return true;
-        }
-
-        /// <summary>
-        /// Replace node at index
-        /// </summary>
-        /// <param name="index"></param>
-        /// <param name="node"></param>
-        public void Replace(int index, HtmlNode node)
-        {
-            HtmlNode next = null;
-            HtmlNode prev = null;
-            HtmlNode oldnode = _items[index];
-
-            if (index > 0)
-            {
-                prev = _items[index - 1];
-            }
-
-            if (index < (_items.Count - 1))
-            {
-                next = _items[index + 1];
-            }
-
-            _items[index] = node;
-
-            if (prev != null)
-            {
-                if (node == prev)
-                {
-                    throw new InvalidProgramException("Unexpected error.");
-                }
-                prev._nextnode = node;
-            }
-
-            if (next != null)
-            {
-                next._prevnode = node;
-            }
-
-            node._prevnode = prev;
-
-            if (next == node)
-            {
-                throw new InvalidProgramException("Unexpected error.");
-            }
-
-            node._nextnode = next;
-            node._parentnode = _parentnode;
-
-            oldnode._prevnode = null;
-            oldnode._nextnode = null;
-            oldnode._parentnode = null;
-        }
-
-        #endregion
-
-        #region LINQ Methods
-
-        /// <summary>
-        /// Get all node descended from this collection
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> DescendantNodes()
-        {
-            foreach (HtmlNode item in _items)
-                foreach (HtmlNode n in item.DescendantNodes())
-                    yield return n;
-        }
-
-        /// <summary>
-        /// Get all node descended from this collection
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Descendants()
-        {
-            foreach (HtmlNode item in _items)
-                foreach (HtmlNode n in item.Descendants())
-                    yield return n;
-        }
-
-        /// <summary>
-        /// Get all node descended from this collection with matching name
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Descendants(string name)
-        {
-            foreach (HtmlNode item in _items)
-                foreach (HtmlNode n in item.Descendants(name))
-                    yield return n;
-        }
-
-        /// <summary>
-        /// Gets all first generation elements in collection
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Elements()
-        {
-            foreach (HtmlNode item in _items)
-                foreach (HtmlNode n in item.ChildNodes)
-                    yield return n;
-        }
-
-        /// <summary>
-        /// Gets all first generation elements matching name
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Elements(string name)
-        {
-            foreach (HtmlNode item in _items)
-                foreach (HtmlNode n in item.Elements(name))
-                    yield return n;
-        }
-
-        /// <summary>
-        /// All first generation nodes in collection
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<HtmlNode> Nodes()
-        {
-            foreach (HtmlNode item in _items)
-                foreach (HtmlNode n in item.ChildNodes)
-                    yield return n;
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a combined list and collection of HTML nodes.
+    /// </summary>
+    public class HtmlNodeCollection : IList<HtmlNode>
+    {
+        #region Fields
+
+        private readonly HtmlNode _parentnode;
+        private readonly List<HtmlNode> _items = new List<HtmlNode>();
+
+        #endregion
+
+        #region Constructors
+
+        /// <summary>
+        /// Initialize the HtmlNodeCollection with the base parent node
+        /// </summary>
+        /// <param name="parentnode">The base node of the collection</param>
+        public HtmlNodeCollection(HtmlNode parentnode)
+        {
+            _parentnode = parentnode; // may be null
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets a given node from the list.
+        /// </summary>
+        public int this[HtmlNode node]
+        {
+            get
+            {
+                int index = GetNodeIndex(node);
+                if (index == -1)
+                {
+                    throw new ArgumentOutOfRangeException("node",
+                                                          "Node \"" + node.CloneNode(false).OuterHtml +
+                                                          "\" was not found in the collection");
+                }
+                return index;
+            }
+        }
+
+        /// <summary>
+        /// Get node with tag name
+        /// </summary>
+        /// <param name="nodeName"></param>
+        /// <returns></returns>
+        public HtmlNode this[string nodeName]
+        {
+            get
+            {
+                nodeName = nodeName.ToLower();
+                for (int i = 0; i < _items.Count; i++)
+                    if (_items[i].Equals(nodeName))
+                        return _items[i];
+
+                return null;
+            }
+        }
+
+        #endregion
+
+        #region IList<HtmlNode> Members
+
+        /// <summary>
+        /// Gets the number of elements actually contained in the list.
+        /// </summary>
+        public int Count
+        {
+            get { return _items.Count; }
+        }
+
+        /// <summary>
+        /// Is collection read only
+        /// </summary>
+        public bool IsReadOnly
+        {
+            get { return false; }
+        }
+
+        /// <summary>
+        /// Gets the node at the specified index.
+        /// </summary>
+        public HtmlNode this[int index]
+        {
+            get { return _items[index]; }
+            set { _items[index] = value; }
+        }
+
+        /// <summary>
+        /// Add node to the collection
+        /// </summary>
+        /// <param name="node"></param>
+        public void Add(HtmlNode node)
+        {
+            _items.Add(node);
+        }
+
+        /// <summary>
+        /// Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+        /// </summary>
+        public void Clear()
+        {
+            foreach (HtmlNode node in _items)
+            {
+                node.ParentNode = null;
+                node.NextSibling = null;
+                node.PreviousSibling = null;
+            }
+            _items.Clear();
+        }
+
+        /// <summary>
+        /// Gets existence of node in collection
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        public bool Contains(HtmlNode item)
+        {
+            return _items.Contains(item);
+        }
+
+        /// <summary>
+        /// Copy collection to array
+        /// </summary>
+        /// <param name="array"></param>
+        /// <param name="arrayIndex"></param>
+        public void CopyTo(HtmlNode[] array, int arrayIndex)
+        {
+            _items.CopyTo(array, arrayIndex);
+        }
+
+        /// <summary>
+        /// Get Enumerator
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator<HtmlNode> IEnumerable<HtmlNode>.GetEnumerator()
+        {
+            return _items.GetEnumerator();
+        }
+
+        /// <summary>
+        /// Get Explicit Enumerator
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return _items.GetEnumerator();
+        }
+
+        /// <summary>
+        /// Get index of node
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        public int IndexOf(HtmlNode item)
+        {
+            return _items.IndexOf(item);
+        }
+
+        /// <summary>
+        /// Insert node at index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <param name="node"></param>
+        public void Insert(int index, HtmlNode node)
+        {
+            HtmlNode next = null;
+            HtmlNode prev = null;
+
+            if (index > 0)
+            {
+                prev = _items[index - 1];
+            }
+
+            if (index < _items.Count)
+            {
+                next = _items[index];
+            }
+
+            _items.Insert(index, node);
+
+            if (prev != null)
+            {
+                if (node == prev)
+                {
+                    throw new InvalidProgramException("Unexpected error.");
+                }
+                prev._nextnode = node;
+            }
+
+            if (next != null)
+            {
+                next._prevnode = node;
+            }
+
+            node._prevnode = prev;
+            if (next == node)
+            {
+                throw new InvalidProgramException("Unexpected error.");
+            }
+            node._nextnode = next;
+            node._parentnode = _parentnode;
+        }
+
+        /// <summary>
+        /// Remove node
+        /// </summary>
+        /// <param name="item"></param>
+        /// <returns></returns>
+        public bool Remove(HtmlNode item)
+        {
+            int i = _items.IndexOf(item);
+            RemoveAt(i);
+            return true;
+        }
+
+        /// <summary>
+        /// Remove <see cref="HtmlNode"/> at index
+        /// </summary>
+        /// <param name="index"></param>
+        public void RemoveAt(int index)
+        {
+            HtmlNode next = null;
+            HtmlNode prev = null;
+            HtmlNode oldnode = _items[index];
+
+            if (index > 0)
+            {
+                prev = _items[index - 1];
+            }
+
+            if (index < (_items.Count - 1))
+            {
+                next = _items[index + 1];
+            }
+
+            _items.RemoveAt(index);
+
+            if (prev != null)
+            {
+                if (next == prev)
+                {
+                    throw new InvalidProgramException("Unexpected error.");
+                }
+                prev._nextnode = next;
+            }
+
+            if (next != null)
+            {
+                next._prevnode = prev;
+            }
+
+            oldnode._prevnode = null;
+            oldnode._nextnode = null;
+            oldnode._parentnode = null;
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Get first instance of node in supplied collection
+        /// </summary>
+        /// <param name="items"></param>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static HtmlNode FindFirst(HtmlNodeCollection items, string name)
+        {
+            foreach (HtmlNode node in items)
+            {
+                if (node.Name.ToLower().Contains(name))
+                    return node;
+                if (node.HasChildNodes)
+                {
+                    HtmlNode returnNode = FindFirst(node.ChildNodes, name);
+                    if (returnNode != null)
+                        return returnNode;
+                }
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Add node to the end of the collection
+        /// </summary>
+        /// <param name="node"></param>
+        public void Append(HtmlNode node)
+        {
+            HtmlNode last = null;
+            if (_items.Count > 0)
+            {
+                last = _items[_items.Count - 1];
+            }
+
+            _items.Add(node);
+            node._prevnode = last;
+            node._nextnode = null;
+            node._parentnode = _parentnode;
+            if (last != null)
+            {
+                if (last == node)
+                {
+                    throw new InvalidProgramException("Unexpected error.");
+                }
+                last._nextnode = node;
+            }
+        }
+
+        /// <summary>
+        /// Get first instance of node with name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public HtmlNode FindFirst(string name)
+        {
+            return FindFirst(this, name);
+        }
+
+        /// <summary>
+        /// Get index of node
+        /// </summary>
+        /// <param name="node"></param>
+        /// <returns></returns>
+        public int GetNodeIndex(HtmlNode node)
+        {
+            // TODO: should we rewrite this? what would be the key of a node?
+            for (int i = 0; i < _items.Count; i++)
+            {
+                if (node == (_items[i]))
+                {
+                    return i;
+                }
+            }
+            return -1;
+        }
+
+        /// <summary>
+        /// Add node to the beginning of the collection
+        /// </summary>
+        /// <param name="node"></param>
+        public void Prepend(HtmlNode node)
+        {
+            HtmlNode first = null;
+            if (_items.Count > 0)
+            {
+                first = _items[0];
+            }
+
+            _items.Insert(0, node);
+
+            if (node == first)
+            {
+                throw new InvalidProgramException("Unexpected error.");
+            }
+            node._nextnode = first;
+            node._prevnode = null;
+            node._parentnode = _parentnode;
+            if (first != null)
+            {
+                first._prevnode = node;
+            }
+        }
+
+        /// <summary>
+        /// Remove node at index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        public bool Remove(int index)
+        {
+            RemoveAt(index);
+            return true;
+        }
+
+        /// <summary>
+        /// Replace node at index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <param name="node"></param>
+        public void Replace(int index, HtmlNode node)
+        {
+            HtmlNode next = null;
+            HtmlNode prev = null;
+            HtmlNode oldnode = _items[index];
+
+            if (index > 0)
+            {
+                prev = _items[index - 1];
+            }
+
+            if (index < (_items.Count - 1))
+            {
+                next = _items[index + 1];
+            }
+
+            _items[index] = node;
+
+            if (prev != null)
+            {
+                if (node == prev)
+                {
+                    throw new InvalidProgramException("Unexpected error.");
+                }
+                prev._nextnode = node;
+            }
+
+            if (next != null)
+            {
+                next._prevnode = node;
+            }
+
+            node._prevnode = prev;
+
+            if (next == node)
+            {
+                throw new InvalidProgramException("Unexpected error.");
+            }
+
+            node._nextnode = next;
+            node._parentnode = _parentnode;
+
+            oldnode._prevnode = null;
+            oldnode._nextnode = null;
+            oldnode._parentnode = null;
+        }
+
+        #endregion
+
+        #region LINQ Methods
+
+        /// <summary>
+        /// Get all node descended from this collection
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> DescendantNodes()
+        {
+            foreach (HtmlNode item in _items)
+                foreach (HtmlNode n in item.DescendantNodes())
+                    yield return n;
+        }
+
+        /// <summary>
+        /// Get all node descended from this collection
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Descendants()
+        {
+            foreach (HtmlNode item in _items)
+                foreach (HtmlNode n in item.Descendants())
+                    yield return n;
+        }
+
+        /// <summary>
+        /// Get all node descended from this collection with matching name
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Descendants(string name)
+        {
+            foreach (HtmlNode item in _items)
+                foreach (HtmlNode n in item.Descendants(name))
+                    yield return n;
+        }
+
+        /// <summary>
+        /// Gets all first generation elements in collection
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Elements()
+        {
+            foreach (HtmlNode item in _items)
+                foreach (HtmlNode n in item.ChildNodes)
+                    yield return n;
+        }
+
+        /// <summary>
+        /// Gets all first generation elements matching name
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Elements(string name)
+        {
+            foreach (HtmlNode item in _items)
+                foreach (HtmlNode n in item.Elements(name))
+                    yield return n;
+        }
+
+        /// <summary>
+        /// All first generation nodes in collection
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<HtmlNode> Nodes()
+        {
+            foreach (HtmlNode item in _items)
+                foreach (HtmlNode n in item.ChildNodes)
+                    yield return n;
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlNodeNavigator.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlNodeNavigator.cs
@@ -1,768 +1,768 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Xml.XPath;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents an HTML navigator on an HTML document seen as a data store.
-    /// </summary>
-    public class HtmlNodeNavigator : XPathNavigator
-    {
-        #region Fields
-
-        private int _attindex;
-        private HtmlNode _currentnode;
-        private HtmlDocument _doc = new HtmlDocument();
-        private HtmlNameTable _nametable = new HtmlNameTable();
-
-        internal bool Trace;
-
-        #endregion
-
-        #region Constructors
-
-        internal HtmlNodeNavigator()
-        {
-            Reset();
-        }
-
-        internal HtmlNodeNavigator(HtmlDocument doc, HtmlNode currentNode)
-        {
-            if (currentNode == null)
-            {
-                throw new ArgumentNullException("currentNode");
-            }
-            if (currentNode.OwnerDocument != doc)
-            {
-                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
-            }
-            InternalTrace(null);
-
-            _doc = doc;
-            Reset();
-            _currentnode = currentNode;
-        }
-
-        private HtmlNodeNavigator(HtmlNodeNavigator nav)
-        {
-            if (nav == null)
-            {
-                throw new ArgumentNullException("nav");
-            }
-            InternalTrace(null);
-
-            _doc = nav._doc;
-            _currentnode = nav._currentnode;
-            _attindex = nav._attindex;
-            _nametable = nav._nametable; // REVIEW: should we do this?
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        public HtmlNodeNavigator(Stream stream)
-        {
-            _doc.Load(stream);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
-        public HtmlNodeNavigator(Stream stream, bool detectEncodingFromByteOrderMarks)
-        {
-            _doc.Load(stream, detectEncodingFromByteOrderMarks);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        public HtmlNodeNavigator(Stream stream, Encoding encoding)
-        {
-            _doc.Load(stream, encoding);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
-        public HtmlNodeNavigator(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks)
-        {
-            _doc.Load(stream, encoding, detectEncodingFromByteOrderMarks);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
-        /// <param name="buffersize">The minimum buffer size.</param>
-        public HtmlNodeNavigator(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
-        {
-            _doc.Load(stream, encoding, detectEncodingFromByteOrderMarks, buffersize);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
-        /// </summary>
-        /// <param name="reader">The TextReader used to feed the HTML data into the document.</param>
-        public HtmlNodeNavigator(TextReader reader)
-        {
-            _doc.Load(reader);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        public HtmlNodeNavigator(string path)
-        {
-            _doc.Load(path);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public HtmlNodeNavigator(string path, bool detectEncodingFromByteOrderMarks)
-        {
-            _doc.Load(path, detectEncodingFromByteOrderMarks);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        public HtmlNodeNavigator(string path, Encoding encoding)
-        {
-            _doc.Load(path, encoding);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public HtmlNodeNavigator(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks)
-        {
-            _doc.Load(path, encoding, detectEncodingFromByteOrderMarks);
-            Reset();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        /// <param name="buffersize">The minimum buffer size.</param>
-        public HtmlNodeNavigator(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
-        {
-            _doc.Load(path, encoding, detectEncodingFromByteOrderMarks, buffersize);
-            Reset();
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the base URI for the current node.
-        /// Always returns string.Empty in the case of HtmlNavigator implementation.
-        /// </summary>
-        public override string BaseURI
-        {
-            get
-            {
-                InternalTrace(">");
-                return _nametable.GetOrAdd(string.Empty);
-            }
-        }
-
-        /// <summary>
-        /// Gets the current HTML document.
-        /// </summary>
-        public HtmlDocument CurrentDocument
-        {
-            get { return _doc; }
-        }
-
-        /// <summary>
-        /// Gets the current HTML node.
-        /// </summary>
-        public HtmlNode CurrentNode
-        {
-            get { return _currentnode; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether the current node has child nodes.
-        /// </summary>
-        public override bool HasAttributes
-        {
-            get
-            {
-                InternalTrace(">" + (_currentnode.Attributes.Count > 0));
-                return (_currentnode.Attributes.Count > 0);
-            }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether the current node has child nodes.
-        /// </summary>
-        public override bool HasChildren
-        {
-            get
-            {
-                InternalTrace(">" + (_currentnode.ChildNodes.Count > 0));
-                return (_currentnode.ChildNodes.Count > 0);
-            }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether the current node is an empty element.
-        /// </summary>
-        public override bool IsEmptyElement
-        {
-            get
-            {
-                InternalTrace(">" + !HasChildren);
-                // REVIEW: is this ok?
-                return !HasChildren;
-            }
-        }
-
-        /// <summary>
-        /// Gets the name of the current HTML node without the namespace prefix.
-        /// </summary>
-        public override string LocalName
-        {
-            get
-            {
-                if (_attindex != -1)
-                {
-                    InternalTrace("att>" + _currentnode.Attributes[_attindex].Name);
-                    return _nametable.GetOrAdd(_currentnode.Attributes[_attindex].Name);
-                }
-                InternalTrace("node>" + _currentnode.Name);
-                return _nametable.GetOrAdd(_currentnode.Name);
-            }
-        }
-
-        /// <summary>
-        /// Gets the qualified name of the current node.
-        /// </summary>
-        public override string Name
-        {
-            get
-            {
-                InternalTrace(">" + _currentnode.Name);
-                return _nametable.GetOrAdd(_currentnode.Name);
-            }
-        }
-
-        /// <summary>
-        /// Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
-        /// Always returns string.Empty in the case of HtmlNavigator implementation.
-        /// </summary>
-        public override string NamespaceURI
-        {
-            get
-            {
-                InternalTrace(">");
-                return _nametable.GetOrAdd(string.Empty);
-            }
-        }
-
-        /// <summary>
-        /// Gets the <see cref="XmlNameTable"/> associated with this implementation.
-        /// </summary>
-        public override XmlNameTable NameTable
-        {
-            get
-            {
-                InternalTrace(null);
-                return _nametable;
-            }
-        }
-
-        /// <summary>
-        /// Gets the type of the current node.
-        /// </summary>
-        public override XPathNodeType NodeType
-        {
-            get
-            {
-                switch (_currentnode.NodeType)
-                {
-                    case HtmlNodeType.Comment:
-                        InternalTrace(">" + XPathNodeType.Comment);
-                        return XPathNodeType.Comment;
-
-                    case HtmlNodeType.Document:
-                        InternalTrace(">" + XPathNodeType.Root);
-                        return XPathNodeType.Root;
-
-                    case HtmlNodeType.Text:
-                        InternalTrace(">" + XPathNodeType.Text);
-                        return XPathNodeType.Text;
-
-                    case HtmlNodeType.Element:
-                        {
-                            if (_attindex != -1)
-                            {
-                                InternalTrace(">" + XPathNodeType.Attribute);
-                                return XPathNodeType.Attribute;
-                            }
-                            InternalTrace(">" + XPathNodeType.Element);
-                            return XPathNodeType.Element;
-                        }
-
-                    default:
-                        throw new NotImplementedException("Internal error: Unhandled HtmlNodeType: " +
-                                                          _currentnode.NodeType);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Gets the prefix associated with the current node.
-        /// Always returns string.Empty in the case of HtmlNavigator implementation.
-        /// </summary>
-        public override string Prefix
-        {
-            get
-            {
-                InternalTrace(null);
-                return _nametable.GetOrAdd(string.Empty);
-            }
-        }
-
-        /// <summary>
-        /// Gets the text value of the current node.
-        /// </summary>
-        public override string Value
-        {
-            get
-            {
-                InternalTrace("nt=" + _currentnode.NodeType);
-                switch (_currentnode.NodeType)
-                {
-                    case HtmlNodeType.Comment:
-                        InternalTrace(">" + ((HtmlCommentNode) _currentnode).Comment);
-                        return ((HtmlCommentNode) _currentnode).Comment;
-
-                    case HtmlNodeType.Document:
-                        InternalTrace(">");
-                        return "";
-
-                    case HtmlNodeType.Text:
-                        InternalTrace(">" + ((HtmlTextNode) _currentnode).Text);
-                        return ((HtmlTextNode) _currentnode).Text;
-
-                    case HtmlNodeType.Element:
-                        {
-                            if (_attindex != -1)
-                            {
-                                InternalTrace(">" + _currentnode.Attributes[_attindex].Value);
-                                return _currentnode.Attributes[_attindex].Value;
-                            }
-                            return _currentnode.InnerText;
-                        }
-
-                    default:
-                        throw new NotImplementedException("Internal error: Unhandled HtmlNodeType: " +
-                                                          _currentnode.NodeType);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Gets the xml:lang scope for the current node.
-        /// Always returns string.Empty in the case of HtmlNavigator implementation.
-        /// </summary>
-        public override string XmlLang
-        {
-            get
-            {
-                InternalTrace(null);
-                return _nametable.GetOrAdd(string.Empty);
-            }
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
-        /// </summary>
-        /// <returns>A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.</returns>
-        public override XPathNavigator Clone()
-        {
-            InternalTrace(null);
-            return new HtmlNodeNavigator(this);
-        }
-
-        /// <summary>
-        /// Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
-        /// </summary>
-        /// <param name="localName">The local name of the HTML attribute.</param>
-        /// <param name="namespaceURI">The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.</param>
-        /// <returns>The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.</returns>
-        public override string GetAttribute(string localName, string namespaceURI)
-        {
-            InternalTrace("localName=" + localName + ", namespaceURI=" + namespaceURI);
-            HtmlAttribute att = _currentnode.Attributes[localName];
-            if (att == null)
-            {
-                InternalTrace(">null");
-                return null;
-            }
-            InternalTrace(">" + att.Value);
-            return att.Value;
-        }
-
-        /// <summary>
-        /// Returns the value of the namespace node corresponding to the specified local name.
-        /// Always returns string.Empty for the HtmlNavigator implementation.
-        /// </summary>
-        /// <param name="name">The local name of the namespace node.</param>
-        /// <returns>Always returns string.Empty for the HtmlNavigator implementation.</returns>
-        public override string GetNamespace(string name)
-        {
-            InternalTrace("name=" + name);
-            return string.Empty;
-        }
-
-        /// <summary>
-        /// Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
-        /// </summary>
-        /// <param name="other">The HtmlNavigator that you want to compare against.</param>
-        /// <returns>true if the two navigators have the same position, otherwise, false.</returns>
-        public override bool IsSamePosition(XPathNavigator other)
-        {
-            HtmlNodeNavigator nav = other as HtmlNodeNavigator;
-            if (nav == null)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            InternalTrace(">" + (nav._currentnode == _currentnode));
-            return (nav._currentnode == _currentnode);
-        }
-
-        /// <summary>
-        /// Moves to the same position as the specified HtmlNavigator.
-        /// </summary>
-        /// <param name="other">The HtmlNavigator positioned on the node that you want to move to.</param>
-        /// <returns>true if successful, otherwise false. If false, the position of the navigator is unchanged.</returns>
-        public override bool MoveTo(XPathNavigator other)
-        {
-            HtmlNodeNavigator nav = other as HtmlNodeNavigator;
-            if (nav == null)
-            {
-                InternalTrace(">false (nav is not an HtmlNodeNavigator)");
-                return false;
-            }
-            InternalTrace("moveto oid=" + nav.GetHashCode()
-                          + ", n:" + nav._currentnode.Name
-                          + ", a:" + nav._attindex);
-
-            if (nav._doc == _doc)
-            {
-                _currentnode = nav._currentnode;
-                _attindex = nav._attindex;
-                InternalTrace(">true");
-                return true;
-            }
-            // we don't know how to handle that
-            InternalTrace(">false (???)");
-            return false;
-        }
-
-        /// <summary>
-        /// Moves to the HTML attribute with matching LocalName and NamespaceURI.
-        /// </summary>
-        /// <param name="localName">The local name of the HTML attribute.</param>
-        /// <param name="namespaceURI">The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.</param>
-        /// <returns>true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.</returns>
-        public override bool MoveToAttribute(string localName, string namespaceURI)
-        {
-            InternalTrace("localName=" + localName + ", namespaceURI=" + namespaceURI);
-            int index = _currentnode.Attributes.GetAttributeIndex(localName);
-            if (index == -1)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _attindex = index;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves to the first sibling of the current node.
-        /// </summary>
-        /// <returns>true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.</returns>
-        public override bool MoveToFirst()
-        {
-            if (_currentnode.ParentNode == null)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            if (_currentnode.ParentNode.FirstChild == null)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _currentnode = _currentnode.ParentNode.FirstChild;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves to the first HTML attribute.
-        /// </summary>
-        /// <returns>true if the navigator is successful moving to the first HTML attribute, otherwise, false.</returns>
-        public override bool MoveToFirstAttribute()
-        {
-            if (!HasAttributes)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _attindex = 0;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves to the first child of the current node.
-        /// </summary>
-        /// <returns>true if there is a first child node, otherwise false.</returns>
-        public override bool MoveToFirstChild()
-        {
-            if (!_currentnode.HasChildNodes)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _currentnode = _currentnode.ChildNodes[0];
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves the XPathNavigator to the first namespace node of the current element.
-        /// Always returns false for the HtmlNavigator implementation.
-        /// </summary>
-        /// <param name="scope">An XPathNamespaceScope value describing the namespace scope.</param>
-        /// <returns>Always returns false for the HtmlNavigator implementation.</returns>
-        public override bool MoveToFirstNamespace(XPathNamespaceScope scope)
-        {
-            InternalTrace(null);
-            return false;
-        }
-
-        /// <summary>
-        /// Moves to the node that has an attribute of type ID whose value matches the specified string.
-        /// </summary>
-        /// <param name="id">A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.</param>
-        /// <returns>true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.</returns>
-        public override bool MoveToId(string id)
-        {
-            InternalTrace("id=" + id);
-            HtmlNode node = _doc.GetElementbyId(id);
-            if (node == null)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _currentnode = node;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves the XPathNavigator to the namespace node with the specified local name. 
-        /// Always returns false for the HtmlNavigator implementation.
-        /// </summary>
-        /// <param name="name">The local name of the namespace node.</param>
-        /// <returns>Always returns false for the HtmlNavigator implementation.</returns>
-        public override bool MoveToNamespace(string name)
-        {
-            InternalTrace("name=" + name);
-            return false;
-        }
-
-        /// <summary>
-        /// Moves to the next sibling of the current node.
-        /// </summary>
-        /// <returns>true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.</returns>
-        public override bool MoveToNext()
-        {
-            if (_currentnode.NextSibling == null)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            InternalTrace("_c=" + _currentnode.CloneNode(false).OuterHtml);
-            InternalTrace("_n=" + _currentnode.NextSibling.CloneNode(false).OuterHtml);
-            _currentnode = _currentnode.NextSibling;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves to the next HTML attribute.
-        /// </summary>
-        /// <returns></returns>
-        public override bool MoveToNextAttribute()
-        {
-            InternalTrace(null);
-            if (_attindex >= (_currentnode.Attributes.Count - 1))
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _attindex++;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves the XPathNavigator to the next namespace node.
-        /// Always returns falsefor the HtmlNavigator implementation.
-        /// </summary>
-        /// <param name="scope">An XPathNamespaceScope value describing the namespace scope.</param>
-        /// <returns>Always returns false for the HtmlNavigator implementation.</returns>
-        public override bool MoveToNextNamespace(XPathNamespaceScope scope)
-        {
-            InternalTrace(null);
-            return false;
-        }
-
-        /// <summary>
-        /// Moves to the parent of the current node.
-        /// </summary>
-        /// <returns>true if there is a parent node, otherwise false.</returns>
-        public override bool MoveToParent()
-        {
-            if (_currentnode.ParentNode == null)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _currentnode = _currentnode.ParentNode;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves to the previous sibling of the current node.
-        /// </summary>
-        /// <returns>true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.</returns>
-        public override bool MoveToPrevious()
-        {
-            if (_currentnode.PreviousSibling == null)
-            {
-                InternalTrace(">false");
-                return false;
-            }
-            _currentnode = _currentnode.PreviousSibling;
-            InternalTrace(">true");
-            return true;
-        }
-
-        /// <summary>
-        /// Moves to the root node to which the current node belongs.
-        /// </summary>
-        public override void MoveToRoot()
-        {
-            _currentnode = _doc.DocumentNode;
-            InternalTrace(null);
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        [Conditional("TRACE")]
-        internal void InternalTrace(object traceValue)
-        {
-            if (!Trace)
-            {
-                return;
-            }
-            StackFrame sf = new StackFrame(1, true);
-            string name = sf.GetMethod().Name;
-            string nodename = _currentnode == null ? "(null)" : _currentnode.Name;
-            string nodevalue;
-            if (_currentnode == null)
-            {
-                nodevalue = "(null)";
-            }
-            else
-            {
-                switch (_currentnode.NodeType)
-                {
-                    case HtmlNodeType.Comment:
-                        nodevalue = ((HtmlCommentNode) _currentnode).Comment;
-                        break;
-
-                    case HtmlNodeType.Document:
-                        nodevalue = "";
-                        break;
-
-                    case HtmlNodeType.Text:
-                        nodevalue = ((HtmlTextNode) _currentnode).Text;
-                        break;
-
-                    default:
-                        nodevalue = _currentnode.CloneNode(false).OuterHtml;
-                        break;
-                }
-            }
-            System.Diagnostics.Trace.WriteLine(string.Format("oid={0},n={1},a={2},v={3},{4}", GetHashCode(), nodename, _attindex, nodevalue, traceValue), "N!" + name);
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private void Reset()
-        {
-            InternalTrace(null);
-            _currentnode = _doc.DocumentNode;
-            _attindex = -1;
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents an HTML navigator on an HTML document seen as a data store.
+    /// </summary>
+    public class HtmlNodeNavigator : XPathNavigator
+    {
+        #region Fields
+
+        private int _attindex;
+        private HtmlNode _currentnode;
+        private HtmlDocument _doc = new HtmlDocument();
+        private HtmlNameTable _nametable = new HtmlNameTable();
+
+        internal bool Trace;
+
+        #endregion
+
+        #region Constructors
+
+        internal HtmlNodeNavigator()
+        {
+            Reset();
+        }
+
+        internal HtmlNodeNavigator(HtmlDocument doc, HtmlNode currentNode)
+        {
+            if (currentNode == null)
+            {
+                throw new ArgumentNullException("currentNode");
+            }
+            if (currentNode.OwnerDocument != doc)
+            {
+                throw new ArgumentException(HtmlDocument.HtmlExceptionRefNotChild);
+            }
+            InternalTrace(null);
+
+            _doc = doc;
+            Reset();
+            _currentnode = currentNode;
+        }
+
+        private HtmlNodeNavigator(HtmlNodeNavigator nav)
+        {
+            if (nav == null)
+            {
+                throw new ArgumentNullException("nav");
+            }
+            InternalTrace(null);
+
+            _doc = nav._doc;
+            _currentnode = nav._currentnode;
+            _attindex = nav._attindex;
+            _nametable = nav._nametable; // REVIEW: should we do this?
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        public HtmlNodeNavigator(Stream stream)
+        {
+            _doc.Load(stream);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
+        public HtmlNodeNavigator(Stream stream, bool detectEncodingFromByteOrderMarks)
+        {
+            _doc.Load(stream, detectEncodingFromByteOrderMarks);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        public HtmlNodeNavigator(Stream stream, Encoding encoding)
+        {
+            _doc.Load(stream, encoding);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
+        public HtmlNodeNavigator(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks)
+        {
+            _doc.Load(stream, encoding, detectEncodingFromByteOrderMarks);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the stream.</param>
+        /// <param name="buffersize">The minimum buffer size.</param>
+        public HtmlNodeNavigator(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
+        {
+            _doc.Load(stream, encoding, detectEncodingFromByteOrderMarks, buffersize);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+        /// </summary>
+        /// <param name="reader">The TextReader used to feed the HTML data into the document.</param>
+        public HtmlNodeNavigator(TextReader reader)
+        {
+            _doc.Load(reader);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        public HtmlNodeNavigator(string path)
+        {
+            _doc.Load(path);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public HtmlNodeNavigator(string path, bool detectEncodingFromByteOrderMarks)
+        {
+            _doc.Load(path, detectEncodingFromByteOrderMarks);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        public HtmlNodeNavigator(string path, Encoding encoding)
+        {
+            _doc.Load(path, encoding);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public HtmlNodeNavigator(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks)
+        {
+            _doc.Load(path, encoding, detectEncodingFromByteOrderMarks);
+            Reset();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        /// <param name="buffersize">The minimum buffer size.</param>
+        public HtmlNodeNavigator(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
+        {
+            _doc.Load(path, encoding, detectEncodingFromByteOrderMarks, buffersize);
+            Reset();
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the base URI for the current node.
+        /// Always returns string.Empty in the case of HtmlNavigator implementation.
+        /// </summary>
+        public override string BaseURI
+        {
+            get
+            {
+                InternalTrace(">");
+                return _nametable.GetOrAdd(string.Empty);
+            }
+        }
+
+        /// <summary>
+        /// Gets the current HTML document.
+        /// </summary>
+        public HtmlDocument CurrentDocument
+        {
+            get { return _doc; }
+        }
+
+        /// <summary>
+        /// Gets the current HTML node.
+        /// </summary>
+        public HtmlNode CurrentNode
+        {
+            get { return _currentnode; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether the current node has child nodes.
+        /// </summary>
+        public override bool HasAttributes
+        {
+            get
+            {
+                InternalTrace(">" + (_currentnode.Attributes.Count > 0));
+                return (_currentnode.Attributes.Count > 0);
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether the current node has child nodes.
+        /// </summary>
+        public override bool HasChildren
+        {
+            get
+            {
+                InternalTrace(">" + (_currentnode.ChildNodes.Count > 0));
+                return (_currentnode.ChildNodes.Count > 0);
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether the current node is an empty element.
+        /// </summary>
+        public override bool IsEmptyElement
+        {
+            get
+            {
+                InternalTrace(">" + !HasChildren);
+                // REVIEW: is this ok?
+                return !HasChildren;
+            }
+        }
+
+        /// <summary>
+        /// Gets the name of the current HTML node without the namespace prefix.
+        /// </summary>
+        public override string LocalName
+        {
+            get
+            {
+                if (_attindex != -1)
+                {
+                    InternalTrace("att>" + _currentnode.Attributes[_attindex].Name);
+                    return _nametable.GetOrAdd(_currentnode.Attributes[_attindex].Name);
+                }
+                InternalTrace("node>" + _currentnode.Name);
+                return _nametable.GetOrAdd(_currentnode.Name);
+            }
+        }
+
+        /// <summary>
+        /// Gets the qualified name of the current node.
+        /// </summary>
+        public override string Name
+        {
+            get
+            {
+                InternalTrace(">" + _currentnode.Name);
+                return _nametable.GetOrAdd(_currentnode.Name);
+            }
+        }
+
+        /// <summary>
+        /// Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+        /// Always returns string.Empty in the case of HtmlNavigator implementation.
+        /// </summary>
+        public override string NamespaceURI
+        {
+            get
+            {
+                InternalTrace(">");
+                return _nametable.GetOrAdd(string.Empty);
+            }
+        }
+
+        /// <summary>
+        /// Gets the <see cref="XmlNameTable"/> associated with this implementation.
+        /// </summary>
+        public override XmlNameTable NameTable
+        {
+            get
+            {
+                InternalTrace(null);
+                return _nametable;
+            }
+        }
+
+        /// <summary>
+        /// Gets the type of the current node.
+        /// </summary>
+        public override XPathNodeType NodeType
+        {
+            get
+            {
+                switch (_currentnode.NodeType)
+                {
+                    case HtmlNodeType.Comment:
+                        InternalTrace(">" + XPathNodeType.Comment);
+                        return XPathNodeType.Comment;
+
+                    case HtmlNodeType.Document:
+                        InternalTrace(">" + XPathNodeType.Root);
+                        return XPathNodeType.Root;
+
+                    case HtmlNodeType.Text:
+                        InternalTrace(">" + XPathNodeType.Text);
+                        return XPathNodeType.Text;
+
+                    case HtmlNodeType.Element:
+                        {
+                            if (_attindex != -1)
+                            {
+                                InternalTrace(">" + XPathNodeType.Attribute);
+                                return XPathNodeType.Attribute;
+                            }
+                            InternalTrace(">" + XPathNodeType.Element);
+                            return XPathNodeType.Element;
+                        }
+
+                    default:
+                        throw new NotImplementedException("Internal error: Unhandled HtmlNodeType: " +
+                                                          _currentnode.NodeType);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets the prefix associated with the current node.
+        /// Always returns string.Empty in the case of HtmlNavigator implementation.
+        /// </summary>
+        public override string Prefix
+        {
+            get
+            {
+                InternalTrace(null);
+                return _nametable.GetOrAdd(string.Empty);
+            }
+        }
+
+        /// <summary>
+        /// Gets the text value of the current node.
+        /// </summary>
+        public override string Value
+        {
+            get
+            {
+                InternalTrace("nt=" + _currentnode.NodeType);
+                switch (_currentnode.NodeType)
+                {
+                    case HtmlNodeType.Comment:
+                        InternalTrace(">" + ((HtmlCommentNode) _currentnode).Comment);
+                        return ((HtmlCommentNode) _currentnode).Comment;
+
+                    case HtmlNodeType.Document:
+                        InternalTrace(">");
+                        return "";
+
+                    case HtmlNodeType.Text:
+                        InternalTrace(">" + ((HtmlTextNode) _currentnode).Text);
+                        return ((HtmlTextNode) _currentnode).Text;
+
+                    case HtmlNodeType.Element:
+                        {
+                            if (_attindex != -1)
+                            {
+                                InternalTrace(">" + _currentnode.Attributes[_attindex].Value);
+                                return _currentnode.Attributes[_attindex].Value;
+                            }
+                            return _currentnode.InnerText;
+                        }
+
+                    default:
+                        throw new NotImplementedException("Internal error: Unhandled HtmlNodeType: " +
+                                                          _currentnode.NodeType);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets the xml:lang scope for the current node.
+        /// Always returns string.Empty in the case of HtmlNavigator implementation.
+        /// </summary>
+        public override string XmlLang
+        {
+            get
+            {
+                InternalTrace(null);
+                return _nametable.GetOrAdd(string.Empty);
+            }
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+        /// </summary>
+        /// <returns>A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.</returns>
+        public override XPathNavigator Clone()
+        {
+            InternalTrace(null);
+            return new HtmlNodeNavigator(this);
+        }
+
+        /// <summary>
+        /// Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+        /// </summary>
+        /// <param name="localName">The local name of the HTML attribute.</param>
+        /// <param name="namespaceURI">The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.</param>
+        /// <returns>The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.</returns>
+        public override string GetAttribute(string localName, string namespaceURI)
+        {
+            InternalTrace("localName=" + localName + ", namespaceURI=" + namespaceURI);
+            HtmlAttribute att = _currentnode.Attributes[localName];
+            if (att == null)
+            {
+                InternalTrace(">null");
+                return null;
+            }
+            InternalTrace(">" + att.Value);
+            return att.Value;
+        }
+
+        /// <summary>
+        /// Returns the value of the namespace node corresponding to the specified local name.
+        /// Always returns string.Empty for the HtmlNavigator implementation.
+        /// </summary>
+        /// <param name="name">The local name of the namespace node.</param>
+        /// <returns>Always returns string.Empty for the HtmlNavigator implementation.</returns>
+        public override string GetNamespace(string name)
+        {
+            InternalTrace("name=" + name);
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+        /// </summary>
+        /// <param name="other">The HtmlNavigator that you want to compare against.</param>
+        /// <returns>true if the two navigators have the same position, otherwise, false.</returns>
+        public override bool IsSamePosition(XPathNavigator other)
+        {
+            HtmlNodeNavigator nav = other as HtmlNodeNavigator;
+            if (nav == null)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            InternalTrace(">" + (nav._currentnode == _currentnode));
+            return (nav._currentnode == _currentnode);
+        }
+
+        /// <summary>
+        /// Moves to the same position as the specified HtmlNavigator.
+        /// </summary>
+        /// <param name="other">The HtmlNavigator positioned on the node that you want to move to.</param>
+        /// <returns>true if successful, otherwise false. If false, the position of the navigator is unchanged.</returns>
+        public override bool MoveTo(XPathNavigator other)
+        {
+            HtmlNodeNavigator nav = other as HtmlNodeNavigator;
+            if (nav == null)
+            {
+                InternalTrace(">false (nav is not an HtmlNodeNavigator)");
+                return false;
+            }
+            InternalTrace("moveto oid=" + nav.GetHashCode()
+                          + ", n:" + nav._currentnode.Name
+                          + ", a:" + nav._attindex);
+
+            if (nav._doc == _doc)
+            {
+                _currentnode = nav._currentnode;
+                _attindex = nav._attindex;
+                InternalTrace(">true");
+                return true;
+            }
+            // we don't know how to handle that
+            InternalTrace(">false (???)");
+            return false;
+        }
+
+        /// <summary>
+        /// Moves to the HTML attribute with matching LocalName and NamespaceURI.
+        /// </summary>
+        /// <param name="localName">The local name of the HTML attribute.</param>
+        /// <param name="namespaceURI">The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.</param>
+        /// <returns>true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.</returns>
+        public override bool MoveToAttribute(string localName, string namespaceURI)
+        {
+            InternalTrace("localName=" + localName + ", namespaceURI=" + namespaceURI);
+            int index = _currentnode.Attributes.GetAttributeIndex(localName);
+            if (index == -1)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _attindex = index;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves to the first sibling of the current node.
+        /// </summary>
+        /// <returns>true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.</returns>
+        public override bool MoveToFirst()
+        {
+            if (_currentnode.ParentNode == null)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            if (_currentnode.ParentNode.FirstChild == null)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _currentnode = _currentnode.ParentNode.FirstChild;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves to the first HTML attribute.
+        /// </summary>
+        /// <returns>true if the navigator is successful moving to the first HTML attribute, otherwise, false.</returns>
+        public override bool MoveToFirstAttribute()
+        {
+            if (!HasAttributes)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _attindex = 0;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves to the first child of the current node.
+        /// </summary>
+        /// <returns>true if there is a first child node, otherwise false.</returns>
+        public override bool MoveToFirstChild()
+        {
+            if (!_currentnode.HasChildNodes)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _currentnode = _currentnode.ChildNodes[0];
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves the XPathNavigator to the first namespace node of the current element.
+        /// Always returns false for the HtmlNavigator implementation.
+        /// </summary>
+        /// <param name="scope">An XPathNamespaceScope value describing the namespace scope.</param>
+        /// <returns>Always returns false for the HtmlNavigator implementation.</returns>
+        public override bool MoveToFirstNamespace(XPathNamespaceScope scope)
+        {
+            InternalTrace(null);
+            return false;
+        }
+
+        /// <summary>
+        /// Moves to the node that has an attribute of type ID whose value matches the specified string.
+        /// </summary>
+        /// <param name="id">A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.</param>
+        /// <returns>true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.</returns>
+        public override bool MoveToId(string id)
+        {
+            InternalTrace("id=" + id);
+            HtmlNode node = _doc.GetElementbyId(id);
+            if (node == null)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _currentnode = node;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves the XPathNavigator to the namespace node with the specified local name. 
+        /// Always returns false for the HtmlNavigator implementation.
+        /// </summary>
+        /// <param name="name">The local name of the namespace node.</param>
+        /// <returns>Always returns false for the HtmlNavigator implementation.</returns>
+        public override bool MoveToNamespace(string name)
+        {
+            InternalTrace("name=" + name);
+            return false;
+        }
+
+        /// <summary>
+        /// Moves to the next sibling of the current node.
+        /// </summary>
+        /// <returns>true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.</returns>
+        public override bool MoveToNext()
+        {
+            if (_currentnode.NextSibling == null)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            InternalTrace("_c=" + _currentnode.CloneNode(false).OuterHtml);
+            InternalTrace("_n=" + _currentnode.NextSibling.CloneNode(false).OuterHtml);
+            _currentnode = _currentnode.NextSibling;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves to the next HTML attribute.
+        /// </summary>
+        /// <returns></returns>
+        public override bool MoveToNextAttribute()
+        {
+            InternalTrace(null);
+            if (_attindex >= (_currentnode.Attributes.Count - 1))
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _attindex++;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves the XPathNavigator to the next namespace node.
+        /// Always returns falsefor the HtmlNavigator implementation.
+        /// </summary>
+        /// <param name="scope">An XPathNamespaceScope value describing the namespace scope.</param>
+        /// <returns>Always returns false for the HtmlNavigator implementation.</returns>
+        public override bool MoveToNextNamespace(XPathNamespaceScope scope)
+        {
+            InternalTrace(null);
+            return false;
+        }
+
+        /// <summary>
+        /// Moves to the parent of the current node.
+        /// </summary>
+        /// <returns>true if there is a parent node, otherwise false.</returns>
+        public override bool MoveToParent()
+        {
+            if (_currentnode.ParentNode == null)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _currentnode = _currentnode.ParentNode;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves to the previous sibling of the current node.
+        /// </summary>
+        /// <returns>true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.</returns>
+        public override bool MoveToPrevious()
+        {
+            if (_currentnode.PreviousSibling == null)
+            {
+                InternalTrace(">false");
+                return false;
+            }
+            _currentnode = _currentnode.PreviousSibling;
+            InternalTrace(">true");
+            return true;
+        }
+
+        /// <summary>
+        /// Moves to the root node to which the current node belongs.
+        /// </summary>
+        public override void MoveToRoot()
+        {
+            _currentnode = _doc.DocumentNode;
+            InternalTrace(null);
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        [Conditional("TRACE")]
+        internal void InternalTrace(object traceValue)
+        {
+            if (!Trace)
+            {
+                return;
+            }
+            StackFrame sf = new StackFrame(1, true);
+            string name = sf.GetMethod().Name;
+            string nodename = _currentnode == null ? "(null)" : _currentnode.Name;
+            string nodevalue;
+            if (_currentnode == null)
+            {
+                nodevalue = "(null)";
+            }
+            else
+            {
+                switch (_currentnode.NodeType)
+                {
+                    case HtmlNodeType.Comment:
+                        nodevalue = ((HtmlCommentNode) _currentnode).Comment;
+                        break;
+
+                    case HtmlNodeType.Document:
+                        nodevalue = "";
+                        break;
+
+                    case HtmlNodeType.Text:
+                        nodevalue = ((HtmlTextNode) _currentnode).Text;
+                        break;
+
+                    default:
+                        nodevalue = _currentnode.CloneNode(false).OuterHtml;
+                        break;
+                }
+            }
+            System.Diagnostics.Trace.WriteLine(string.Format("oid={0},n={1},a={2},v={3},{4}", GetHashCode(), nodename, _attindex, nodevalue, traceValue), "N!" + name);
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private void Reset()
+        {
+            InternalTrace(null);
+            _currentnode = _doc.DocumentNode;
+            _attindex = -1;
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlNodeType.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlNodeType.cs
@@ -1,29 +1,29 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents the type of a node.
-    /// </summary>
-    public enum HtmlNodeType
-    {
-        /// <summary>
-        /// The root of a document.
-        /// </summary>
-        Document,
-
-        /// <summary>
-        /// An HTML element.
-        /// </summary>
-        Element,
-
-        /// <summary>
-        /// An HTML comment.
-        /// </summary>
-        Comment,
-
-        /// <summary>
-        /// A text node is always the child of an element or a document node.
-        /// </summary>
-        Text,
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents the type of a node.
+    /// </summary>
+    public enum HtmlNodeType
+    {
+        /// <summary>
+        /// The root of a document.
+        /// </summary>
+        Document,
+
+        /// <summary>
+        /// An HTML element.
+        /// </summary>
+        Element,
+
+        /// <summary>
+        /// An HTML comment.
+        /// </summary>
+        Comment,
+
+        /// <summary>
+        /// A text node is always the child of an element or a document node.
+        /// </summary>
+        Text,
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlParseError.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlParseError.cs
@@ -1,92 +1,92 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a parsing error found during document parsing.
-    /// </summary>
-    public class HtmlParseError
-    {
-        #region Fields
-
-        private HtmlParseErrorCode _code;
-        private int _line;
-        private int _linePosition;
-        private string _reason;
-        private string _sourceText;
-        private int _streamPosition;
-
-        #endregion
-
-        #region Constructors
-
-        internal HtmlParseError(
-            HtmlParseErrorCode code,
-            int line,
-            int linePosition,
-            int streamPosition,
-            string sourceText,
-            string reason)
-        {
-            _code = code;
-            _line = line;
-            _linePosition = linePosition;
-            _streamPosition = streamPosition;
-            _sourceText = sourceText;
-            _reason = reason;
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the type of error.
-        /// </summary>
-        public HtmlParseErrorCode Code
-        {
-            get { return _code; }
-        }
-
-        /// <summary>
-        /// Gets the line number of this error in the document.
-        /// </summary>
-        public int Line
-        {
-            get { return _line; }
-        }
-
-        /// <summary>
-        /// Gets the column number of this error in the document.
-        /// </summary>
-        public int LinePosition
-        {
-            get { return _linePosition; }
-        }
-
-        /// <summary>
-        /// Gets a description for the error.
-        /// </summary>
-        public string Reason
-        {
-            get { return _reason; }
-        }
-
-        /// <summary>
-        /// Gets the the full text of the line containing the error.
-        /// </summary>
-        public string SourceText
-        {
-            get { return _sourceText; }
-        }
-
-        /// <summary>
-        /// Gets the absolute stream position of this error in the document, relative to the start of the document.
-        /// </summary>
-        public int StreamPosition
-        {
-            get { return _streamPosition; }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a parsing error found during document parsing.
+    /// </summary>
+    public class HtmlParseError
+    {
+        #region Fields
+
+        private HtmlParseErrorCode _code;
+        private int _line;
+        private int _linePosition;
+        private string _reason;
+        private string _sourceText;
+        private int _streamPosition;
+
+        #endregion
+
+        #region Constructors
+
+        internal HtmlParseError(
+            HtmlParseErrorCode code,
+            int line,
+            int linePosition,
+            int streamPosition,
+            string sourceText,
+            string reason)
+        {
+            _code = code;
+            _line = line;
+            _linePosition = linePosition;
+            _streamPosition = streamPosition;
+            _sourceText = sourceText;
+            _reason = reason;
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the type of error.
+        /// </summary>
+        public HtmlParseErrorCode Code
+        {
+            get { return _code; }
+        }
+
+        /// <summary>
+        /// Gets the line number of this error in the document.
+        /// </summary>
+        public int Line
+        {
+            get { return _line; }
+        }
+
+        /// <summary>
+        /// Gets the column number of this error in the document.
+        /// </summary>
+        public int LinePosition
+        {
+            get { return _linePosition; }
+        }
+
+        /// <summary>
+        /// Gets a description for the error.
+        /// </summary>
+        public string Reason
+        {
+            get { return _reason; }
+        }
+
+        /// <summary>
+        /// Gets the the full text of the line containing the error.
+        /// </summary>
+        public string SourceText
+        {
+            get { return _sourceText; }
+        }
+
+        /// <summary>
+        /// Gets the absolute stream position of this error in the document, relative to the start of the document.
+        /// </summary>
+        public int StreamPosition
+        {
+            get { return _streamPosition; }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlParseErrorCode.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlParseErrorCode.cs
@@ -1,34 +1,34 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents the type of parsing error.
-    /// </summary>
-    public enum HtmlParseErrorCode
-    {
-        /// <summary>
-        /// A tag was not closed.
-        /// </summary>
-        TagNotClosed,
-
-        /// <summary>
-        /// A tag was not opened.
-        /// </summary>
-        TagNotOpened,
-
-        /// <summary>
-        /// There is a charset mismatch between stream and declared (META) encoding.
-        /// </summary>
-        CharsetMismatch,
-
-        /// <summary>
-        /// An end tag was not required.
-        /// </summary>
-        EndTagNotRequired,
-
-        /// <summary>
-        /// An end tag is invalid at this position.
-        /// </summary>
-        EndTagInvalidHere
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents the type of parsing error.
+    /// </summary>
+    public enum HtmlParseErrorCode
+    {
+        /// <summary>
+        /// A tag was not closed.
+        /// </summary>
+        TagNotClosed,
+
+        /// <summary>
+        /// A tag was not opened.
+        /// </summary>
+        TagNotOpened,
+
+        /// <summary>
+        /// There is a charset mismatch between stream and declared (META) encoding.
+        /// </summary>
+        CharsetMismatch,
+
+        /// <summary>
+        /// An end tag was not required.
+        /// </summary>
+        EndTagNotRequired,
+
+        /// <summary>
+        /// An end tag is invalid at this position.
+        /// </summary>
+        EndTagInvalidHere
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlTextNode.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlTextNode.cs
@@ -1,69 +1,69 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents an HTML text node.
-    /// </summary>
-    public class HtmlTextNode : HtmlNode
-    {
-        #region Fields
-
-        private string _text;
-
-        #endregion
-
-        #region Constructors
-
-        internal HtmlTextNode(HtmlDocument ownerdocument, int index)
-            :
-                base(HtmlNodeType.Text, ownerdocument, index)
-        {
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
-        /// </summary>
-        public override string InnerHtml
-        {
-            get { return OuterHtml; }
-            set { _text = value; }
-        }
-
-        /// <summary>
-        /// Gets or Sets the object and its content in HTML.
-        /// </summary>
-        public override string OuterHtml
-        {
-            get
-            {
-                if (_text == null)
-                {
-                    return base.OuterHtml;
-                }
-                return _text;
-            }
-        }
-
-        /// <summary>
-        /// Gets or Sets the text of the node.
-        /// </summary>
-        public string Text
-        {
-            get
-            {
-                if (_text == null)
-                {
-                    return base.OuterHtml;
-                }
-                return _text;
-            }
-            set { _text = value; }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents an HTML text node.
+    /// </summary>
+    public class HtmlTextNode : HtmlNode
+    {
+        #region Fields
+
+        private string _text;
+
+        #endregion
+
+        #region Constructors
+
+        internal HtmlTextNode(HtmlDocument ownerdocument, int index)
+            :
+                base(HtmlNodeType.Text, ownerdocument, index)
+        {
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+        /// </summary>
+        public override string InnerHtml
+        {
+            get { return OuterHtml; }
+            set { _text = value; }
+        }
+
+        /// <summary>
+        /// Gets or Sets the object and its content in HTML.
+        /// </summary>
+        public override string OuterHtml
+        {
+            get
+            {
+                if (_text == null)
+                {
+                    return base.OuterHtml;
+                }
+                return _text;
+            }
+        }
+
+        /// <summary>
+        /// Gets or Sets the text of the node.
+        /// </summary>
+        public string Text
+        {
+            get
+            {
+                if (_text == null)
+                {
+                    return base.OuterHtml;
+                }
+                return _text;
+            }
+            set { _text = value; }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlWeb.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlWeb.cs
@@ -1,907 +1,907 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.IO;
-using System.Net;
-using System.Text;
-using System.Xml;
-using System.Xml.Serialization;
-using System.Xml.Xsl;
-using Microsoft.Win32;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// A utility class to get HTML document from HTTP.
-    /// </summary>
-    public class HtmlWeb
-    {
-        #region Delegates
-
-        /// <summary>
-        /// Represents the method that will handle the PostResponse event.
-        /// </summary>
-        public delegate void PostResponseHandler(HttpWebRequest request, HttpWebResponse response);
-
-        /// <summary>
-        /// Represents the method that will handle the PreHandleDocument event.
-        /// </summary>
-        public delegate void PreHandleDocumentHandler(HtmlDocument document);
-
-        /// <summary>
-        /// Represents the method that will handle the PreRequest event.
-        /// </summary>
-        public delegate bool PreRequestHandler(HttpWebRequest request);
-
-        #endregion
-
-        #region Fields
-
-        private bool _autoDetectEncoding = true;
-        private bool _cacheOnly;
-
-        private string _cachePath;
-        private bool _fromCache;
-        private int _requestDuration;
-        private Uri _responseUri;
-        private HttpStatusCode _statusCode = HttpStatusCode.OK;
-        private int _streamBufferSize = 1024;
-        private bool _useCookies;
-        private bool _usingCache;
-
-        /// <summary>
-        /// Occurs after an HTTP request has been executed.
-        /// </summary>
-        public PostResponseHandler PostResponse;
-
-        /// <summary>
-        /// Occurs before an HTML document is handled.
-        /// </summary>
-        public PreHandleDocumentHandler PreHandleDocument;
-
-        /// <summary>
-        /// Occurs before an HTTP request is executed.
-        /// </summary>
-        public PreRequestHandler PreRequest;
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets or Sets a value indicating if document encoding must be automatically detected.
-        /// </summary>
-        public bool AutoDetectEncoding
-        {
-            get { return _autoDetectEncoding; }
-            set { _autoDetectEncoding = value; }
-        }
-
-        /// <summary>
-        /// Gets or Sets a value indicating whether to get document only from the cache.
-        /// If this is set to true and document is not found in the cache, nothing will be loaded.
-        /// </summary>
-        public bool CacheOnly
-        {
-            get { return _cacheOnly; }
-            set
-            {
-                if ((value) && !UsingCache)
-                {
-                    throw new HtmlWebException("Cache is not enabled. Set UsingCache to true first.");
-                }
-                _cacheOnly = value;
-            }
-        }
-
-        /// <summary>
-        /// Gets or Sets the cache path. If null, no caching mechanism will be used.
-        /// </summary>
-        public string CachePath
-        {
-            get { return _cachePath; }
-            set { _cachePath = value; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating if the last document was retrieved from the cache.
-        /// </summary>
-        public bool FromCache
-        {
-            get { return _fromCache; }
-        }
-
-        /// <summary>
-        /// Gets the last request duration in milliseconds.
-        /// </summary>
-        public int RequestDuration
-        {
-            get { return _requestDuration; }
-        }
-
-        /// <summary>
-        /// Gets the URI of the Internet resource that actually responded to the request.
-        /// </summary>
-        public Uri ResponseUri
-        {
-            get { return _responseUri; }
-        }
-
-        /// <summary>
-        /// Gets the last request status.
-        /// </summary>
-        public HttpStatusCode StatusCode
-        {
-            get { return _statusCode; }
-        }
-
-        /// <summary>
-        /// Gets or Sets the size of the buffer used for memory operations.
-        /// </summary>
-        public int StreamBufferSize
-        {
-            get { return _streamBufferSize; }
-            set
-            {
-                if (_streamBufferSize <= 0)
-                {
-                    throw new ArgumentException("Size must be greater than zero.");
-                }
-                _streamBufferSize = value;
-            }
-        }
-
-        /// <summary>
-        /// Gets or Sets a value indicating if cookies will be stored.
-        /// </summary>
-        public bool UseCookies
-        {
-            get { return _useCookies; }
-            set { _useCookies = value; }
-        }
-
-        /// <summary>
-        /// Gets or Sets a value indicating whether the caching mechanisms should be used or not.
-        /// </summary>
-        public bool UsingCache
-        {
-            get
-            {
-                if (_cachePath == null)
-                {
-                    return false;
-                }
-                return _usingCache;
-            }
-            set
-            {
-                if ((value) && (_cachePath == null))
-                {
-                    throw new HtmlWebException("You need to define a CachePath first.");
-                }
-                _usingCache = value;
-            }
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Gets the MIME content type for a given path extension.
-        /// </summary>
-        /// <param name="extension">The input path extension.</param>
-        /// <param name="def">The default content type to return if any error occurs.</param>
-        /// <returns>The path extension's MIME content type.</returns>
-        public static string GetContentTypeForExtension(string extension, string def)
-        {
-            if (string.IsNullOrEmpty(extension))
-            {
-                return def;
-            }
-            string contentType = "";
-            try
-            {
-                RegistryKey reg = Registry.ClassesRoot;
-                reg = reg.OpenSubKey(extension, false);
-                if (reg != null) contentType = (string)reg.GetValue("", def);
-            }
-            catch (Exception)
-            {
-                contentType = def;
-            }
-            return contentType;
-        }
-
-        /// <summary>
-        /// Gets the path extension for a given MIME content type.
-        /// </summary>
-        /// <param name="contentType">The input MIME content type.</param>
-        /// <param name="def">The default path extension to return if any error occurs.</param>
-        /// <returns>The MIME content type's path extension.</returns>
-        public static string GetExtensionForContentType(string contentType, string def)
-        {
-            if (string.IsNullOrEmpty(contentType))
-            {
-                return def;
-            }
-            string ext = "";
-            try
-            {
-                RegistryKey reg = Registry.ClassesRoot;
-                reg = reg.OpenSubKey(@"MIME\Database\Content Type\" + contentType, false);
-                if (reg != null) ext = (string)reg.GetValue("Extension", def);
-            }
-            catch (Exception)
-            {
-                ext = def;
-            }
-            return ext;
-        }
-
-        /// <summary>
-        /// Creates an instance of the given type from the specified Internet resource.
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="type">The requested type.</param>
-        /// <returns>An newly created instance.</returns>
-        public object CreateInstance(string url, Type type)
-        {
-            return CreateInstance(url, null, null, type);
-        }
-
-        /// <summary>
-        /// Creates an instance of the given type from the specified Internet resource.
-        /// </summary>
-        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
-        /// <param name="xsltArgs">An <see cref="XsltArgumentList"/> containing the namespace-qualified arguments used as input to the transform.</param>
-        /// <param name="type">The requested type.</param>
-        /// <returns>An newly created instance.</returns>
-        public object CreateInstance(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, Type type)
-        {
-            return CreateInstance(htmlUrl, xsltUrl, xsltArgs, type, null);
-        }
-
-        /// <summary>
-        /// Creates an instance of the given type from the specified Internet resource.
-        /// </summary>
-        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
-        /// <param name="xsltArgs">An <see cref="XsltArgumentList"/> containing the namespace-qualified arguments used as input to the transform.</param>
-        /// <param name="type">The requested type.</param>
-        /// <param name="xmlPath">A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.</param>
-        /// <returns>An newly created instance.</returns>
-        public object CreateInstance(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, Type type,
-                                     string xmlPath)
-        {
-            StringWriter sw = new StringWriter();
-            XmlTextWriter writer = new XmlTextWriter(sw);
-            if (xsltUrl == null)
-            {
-                LoadHtmlAsXml(htmlUrl, writer);
-            }
-            else
-            {
-                if (xmlPath == null)
-                {
-                    LoadHtmlAsXml(htmlUrl, xsltUrl, xsltArgs, writer);
-                }
-                else
-                {
-                    LoadHtmlAsXml(htmlUrl, xsltUrl, xsltArgs, writer, xmlPath);
-                }
-            }
-            writer.Flush();
-            StringReader sr = new StringReader(sw.ToString());
-            XmlTextReader reader = new XmlTextReader(sr);
-            XmlSerializer serializer = new XmlSerializer(type);
-            object o;
-            try
-            {
-                o = serializer.Deserialize(reader);
-            }
-            catch (InvalidOperationException ex)
-            {
-                throw new Exception(ex + ", --- xml:" + sw);
-            }
-            return o;
-        }
-
-        /// <summary>
-        /// Gets an HTML document from an Internet resource and saves it to the specified file.
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="path">The location of the file where you want to save the document.</param>
-        public void Get(string url, string path)
-        {
-            Get(url, path, "GET");
-        }
-
-        /// <summary>
-        /// Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="path">The location of the file where you want to save the document.</param>
-        /// <param name="proxy"></param>
-        /// <param name="credentials"></param>
-        public void Get(string url, string path, WebProxy proxy, NetworkCredential credentials)
-        {
-            Get(url, path, proxy, credentials, "GET");
-        }
-
-        /// <summary>
-        /// Gets an HTML document from an Internet resource and saves it to the specified file.
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="path">The location of the file where you want to save the document.</param>
-        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
-        public void Get(string url, string path, string method)
-        {
-            Uri uri = new Uri(url);
-            if ((uri.Scheme == Uri.UriSchemeHttps) ||
-                (uri.Scheme == Uri.UriSchemeHttp))
-            {
-                Get(uri, method, path, null, null, null);
-            }
-            else
-            {
-                throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
-            }
-        }
-
-        /// <summary>
-        /// Gets an HTML document from an Internet resource and saves it to the specified file.  Understands Proxies
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="path">The location of the file where you want to save the document.</param>
-        /// <param name="credentials"></param>
-        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
-        /// <param name="proxy"></param>
-        public void Get(string url, string path, WebProxy proxy, NetworkCredential credentials, string method)
-        {
-            Uri uri = new Uri(url);
-            if ((uri.Scheme == Uri.UriSchemeHttps) ||
-                (uri.Scheme == Uri.UriSchemeHttp))
-            {
-                Get(uri, method, path, null, proxy, credentials);
-            }
-            else
-            {
-                throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
-            }
-        }
-
-        /// <summary>
-        /// Gets the cache file path for a specified url.
-        /// </summary>
-        /// <param name="uri">The url fo which to retrieve the cache path. May not be null.</param>
-        /// <returns>The cache file path.</returns>
-        public string GetCachePath(Uri uri)
-        {
-            if (uri == null)
-            {
-                throw new ArgumentNullException("uri");
-            }
-            if (!UsingCache)
-            {
-                throw new HtmlWebException("Cache is not enabled. Set UsingCache to true first.");
-            }
-            string cachePath;
-            if (uri.AbsolutePath == "/")
-            {
-                cachePath = Path.Combine(_cachePath, ".htm");
-            }
-            else
-            {
-                cachePath = Path.Combine(_cachePath, (uri.Host + uri.AbsolutePath).Replace('/', '\\'));
-            }
-            return cachePath;
-        }
-
-        /// <summary>
-        /// Gets an HTML document from an Internet resource.
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <returns>A new HTML document.</returns>
-        public HtmlDocument Load(string url)
-        {
-            return Load(url, "GET");
-        }
-
-        /// <summary>
-        /// Gets an HTML document from an Internet resource.
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="proxyHost">Host to use for Proxy</param>
-        /// <param name="proxyPort">Port the Proxy is on</param>
-        /// <param name="userId">User Id for Authentication</param>
-        /// <param name="password">Password for Authentication</param>
-        /// <returns>A new HTML document.</returns>
-        public HtmlDocument Load(string url, string proxyHost, int proxyPort, string userId, string password)
-        {
-            //Create my proxy
-            WebProxy myProxy = new WebProxy(proxyHost, proxyPort);
-            myProxy.BypassProxyOnLocal = true;
-
-            //Create my credentials
-            NetworkCredential myCreds = null;
-            if ((userId != null) && (password != null))
-            {
-                myCreds = new NetworkCredential(userId, password);
-                CredentialCache credCache = new CredentialCache();
-                //Add the creds
-                credCache.Add(myProxy.Address, "Basic", myCreds);
-                credCache.Add(myProxy.Address, "Digest", myCreds);
-            }
-
-            return Load(url, "GET", myProxy, myCreds);
-        }
-
-        /// <summary>
-        /// Loads an HTML document from an Internet resource.
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
-        /// <returns>A new HTML document.</returns>
-        public HtmlDocument Load(string url, string method)
-        {
-            Uri uri = new Uri(url);
-            HtmlDocument doc;
-            if ((uri.Scheme == Uri.UriSchemeHttps) ||
-                (uri.Scheme == Uri.UriSchemeHttp))
-            {
-                doc = LoadUrl(uri, method, null, null);
-            }
-            else
-            {
-                if (uri.Scheme == Uri.UriSchemeFile)
-                {
-                    doc = new HtmlDocument();
-                    doc.OptionAutoCloseOnEnd = false;
-                    doc.OptionAutoCloseOnEnd = true;
-                    doc.DetectEncodingAndLoad(url, _autoDetectEncoding);
-                }
-                else
-                {
-                    throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
-                }
-            }
-            if (PreHandleDocument != null)
-            {
-                PreHandleDocument(doc);
-            }
-            return doc;
-        }
-
-        /// <summary>
-        /// Loads an HTML document from an Internet resource.
-        /// </summary>
-        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
-        /// <param name="proxy">Proxy to use with this request</param>
-        /// <param name="credentials">Credentials to use when authenticating</param>
-        /// <returns>A new HTML document.</returns>
-        public HtmlDocument Load(string url, string method, WebProxy proxy, NetworkCredential credentials)
-        {
-            Uri uri = new Uri(url);
-            HtmlDocument doc;
-            if ((uri.Scheme == Uri.UriSchemeHttps) ||
-                (uri.Scheme == Uri.UriSchemeHttp))
-            {
-                doc = LoadUrl(uri, method, proxy, credentials);
-            }
-            else
-            {
-                if (uri.Scheme == Uri.UriSchemeFile)
-                {
-                    doc = new HtmlDocument();
-                    doc.OptionAutoCloseOnEnd = false;
-                    doc.OptionAutoCloseOnEnd = true;
-                    doc.DetectEncodingAndLoad(url, _autoDetectEncoding);
-                }
-                else
-                {
-                    throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
-                }
-            }
-            if (PreHandleDocument != null)
-            {
-                PreHandleDocument(doc);
-            }
-            return doc;
-        }
-
-        /// <summary>
-        /// Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
-        /// </summary>
-        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="writer">The XmlTextWriter to which you want to save.</param>
-        public void LoadHtmlAsXml(string htmlUrl, XmlTextWriter writer)
-        {
-            HtmlDocument doc = Load(htmlUrl);
-            doc.Save(writer);
-        }
-
-        /// <summary>
-        /// Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
-        /// </summary>
-        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
-        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
-        /// <param name="xsltArgs">An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.</param>
-        /// <param name="writer">The XmlTextWriter to which you want to save.</param>
-        public void LoadHtmlAsXml(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, XmlTextWriter writer)
-        {
-            LoadHtmlAsXml(htmlUrl, xsltUrl, xsltArgs, writer, null);
-        }
-
-        /// <summary>
-        /// Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
-        /// </summary>
-        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.</param>
-        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
-        /// <param name="xsltArgs">An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.</param>
-        /// <param name="writer">The XmlTextWriter to which you want to save.</param>
-        /// <param name="xmlPath">A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.</param>
-        public void LoadHtmlAsXml(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, XmlTextWriter writer,
-                                  string xmlPath)
-        {
-            if (htmlUrl == null)
-            {
-                throw new ArgumentNullException("htmlUrl");
-            }
-
-            HtmlDocument doc = Load(htmlUrl);
-
-            if (xmlPath != null)
-            {
-                XmlTextWriter w = new XmlTextWriter(xmlPath, doc.Encoding);
-                doc.Save(w);
-                w.Close();
-            }
-            if (xsltArgs == null)
-            {
-                xsltArgs = new XsltArgumentList();
-            }
-
-            // add some useful variables to the xslt doc
-            xsltArgs.AddParam("url", "", htmlUrl);
-            xsltArgs.AddParam("requestDuration", "", RequestDuration);
-            xsltArgs.AddParam("fromCache", "", FromCache);
-
-            XslCompiledTransform xslt = new XslCompiledTransform();
-            xslt.Load(xsltUrl);
-            xslt.Transform(doc, xsltArgs, writer);
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private static void FilePreparePath(string target)
-        {
-            if (File.Exists(target))
-            {
-                FileAttributes atts = File.GetAttributes(target);
-                File.SetAttributes(target, atts & ~FileAttributes.ReadOnly);
-            }
-            else
-            {
-                string dir = Path.GetDirectoryName(target);
-                if (!Directory.Exists(dir))
-                {
-                    Directory.CreateDirectory(dir);
-                }
-            }
-        }
-
-        private static DateTime RemoveMilliseconds(DateTime t)
-        {
-            return new DateTime(t.Year, t.Month, t.Day, t.Hour, t.Minute, t.Second, 0);
-        }
-
-        // ReSharper disable UnusedMethodReturnValue.Local
-        private static long SaveStream(Stream stream, string path, DateTime touchDate, int streamBufferSize)
-        // ReSharper restore UnusedMethodReturnValue.Local
-        {
-            FilePreparePath(path);
-            FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write);
-            BinaryReader br = null;
-            BinaryWriter bw = null;
-            long len = 0;
-            try
-            {
-                br = new BinaryReader(stream);
-                bw = new BinaryWriter(fs);
-
-                byte[] buffer;
-                do
-                {
-                    buffer = br.ReadBytes(streamBufferSize);
-                    len += buffer.Length;
-                    if (buffer.Length > 0)
-                    {
-                        bw.Write(buffer);
-                    }
-                } while (buffer.Length > 0);
-            }
-            finally
-            {
-                if (br != null)
-                {
-                    br.Close();
-                }
-                if (bw != null)
-                {
-                    bw.Flush();
-                    bw.Close();
-                }
-                if (fs != null)
-                {
-                    fs.Close();
-                }
-            }
-            File.SetLastWriteTime(path, touchDate);
-            return len;
-        }
-
-        private HttpStatusCode Get(Uri uri, string method, string path, HtmlDocument doc, IWebProxy proxy,
-                                   ICredentials creds)
-        {
-            string cachePath = null;
-            HttpWebRequest req;
-            bool oldFile = false;
-
-            req = WebRequest.Create(uri) as HttpWebRequest;
-            req.Method = method;
-
-            if (proxy != null)
-            {
-                if (creds != null)
-                {
-                    proxy.Credentials = creds;
-                    req.Credentials = creds;
-                }
-                else
-                {
-                    proxy.Credentials = CredentialCache.DefaultCredentials;
-                    req.Credentials = CredentialCache.DefaultCredentials;
-                }
-                req.Proxy = proxy;
-            }
-
-            _fromCache = false;
-            _requestDuration = 0;
-            int tc = Environment.TickCount;
-            if (UsingCache)
-            {
-                cachePath = GetCachePath(req.RequestUri);
-                if (File.Exists(cachePath))
-                {
-                    req.IfModifiedSince = File.GetLastAccessTime(cachePath);
-                    oldFile = true;
-                }
-            }
-
-            if (_cacheOnly)
-            {
-                if (!File.Exists(cachePath))
-                {
-                    throw new HtmlWebException("File was not found at cache path: '" + cachePath + "'");
-                }
-
-                if (path != null)
-                {
-                    IOLibrary.CopyAlways(cachePath, path);
-                    // touch the file
-                    File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
-                }
-                _fromCache = true;
-                return HttpStatusCode.NotModified;
-            }
-
-            if (_useCookies)
-            {
-                req.CookieContainer = new CookieContainer();
-            }
-
-            if (PreRequest != null)
-            {
-                // allow our user to change the request at will
-                if (!PreRequest(req))
-                {
-                    return HttpStatusCode.ResetContent;
-                }
-
-                // dump cookie
-                //				if (_useCookies)
-                //				{
-                //					foreach(Cookie cookie in req.CookieContainer.GetCookies(req.RequestUri))
-                //					{
-                //						HtmlLibrary.Trace("Cookie " + cookie.Name + "=" + cookie.Value + " path=" + cookie.Path + " domain=" + cookie.Domain);
-                //					}
-                //				}
-            }
-
-            HttpWebResponse resp;
-
-            try
-            {
-                resp = req.GetResponse() as HttpWebResponse;
-            }
-            catch (WebException we)
-            {
-                _requestDuration = Environment.TickCount - tc;
-                resp = (HttpWebResponse)we.Response;
-                if (resp == null)
-                {
-                    if (oldFile)
-                    {
-                        if (path != null)
-                        {
-                            IOLibrary.CopyAlways(cachePath, path);
-                            // touch the file
-                            File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
-                        }
-                        return HttpStatusCode.NotModified;
-                    }
-                    throw;
-                }
-            }
-            catch (Exception)
-            {
-                _requestDuration = Environment.TickCount - tc;
-                throw;
-            }
-
-            // allow our user to get some info from the response
-            if (PostResponse != null)
-            {
-                PostResponse(req, resp);
-            }
-
-            _requestDuration = Environment.TickCount - tc;
-            _responseUri = resp.ResponseUri;
-
-            bool html = IsHtmlContent(resp.ContentType);
-            Encoding respenc;
-
-            if ((resp.ContentEncoding != null) && (resp.ContentEncoding.Length > 0))
-            {
-                respenc = Encoding.GetEncoding(resp.ContentEncoding);
-            }
-            else
-            {
-                respenc = null;
-            }
-
-            if (resp.StatusCode == HttpStatusCode.NotModified)
-            {
-                if (UsingCache)
-                {
-                    _fromCache = true;
-                    if (path != null)
-                    {
-                        IOLibrary.CopyAlways(cachePath, path);
-                        // touch the file
-                        File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
-                    }
-                    return resp.StatusCode;
-                }
-                else
-                {
-                    // this should *never* happen...
-                    throw new HtmlWebException("Server has send a NotModifed code, without cache enabled.");
-                }
-            }
-            Stream s = resp.GetResponseStream();
-            if (s != null)
-            {
-                if (UsingCache)
-                {
-                    // NOTE: LastModified does not contain milliseconds, so we remove them to the file
-                    SaveStream(s, cachePath, RemoveMilliseconds(resp.LastModified), _streamBufferSize);
-
-                    // save headers
-                    SaveCacheHeaders(req.RequestUri, resp);
-
-                    if (path != null)
-                    {
-                        // copy and touch the file
-                        IOLibrary.CopyAlways(cachePath, path);
-                        File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
-                    }
-                }
-                else
-                {
-                    // try to work in-memory
-                    if ((doc != null) && (html))
-                    {
-                        if (respenc != null)
-                        {
-                            doc.Load(s, respenc);
-                        }
-                        else
-                        {
-                            doc.Load(s, true);
-                        }
-                    }
-                }
-                resp.Close();
-            }
-            return resp.StatusCode;
-        }
-
-        private string GetCacheHeader(Uri requestUri, string name, string def)
-        {
-            // note: some headers are collection (ex: www-authenticate)
-            // we don't handle that here
-            XmlDocument doc = new XmlDocument();
-            doc.Load(GetCacheHeadersPath(requestUri));
-            XmlNode node =
-                doc.SelectSingleNode("//h[translate(@n, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" +
-                                     name.ToUpper() + "']");
-            if (node == null)
-            {
-                return def;
-            }
-            // attribute should exist
-            return node.Attributes[name].Value;
-        }
-
-        private string GetCacheHeadersPath(Uri uri)
-        {
-            //return Path.Combine(GetCachePath(uri), ".h.xml");
-            return GetCachePath(uri) + ".h.xml";
-        }
-
-        private bool IsCacheHtmlContent(string path)
-        {
-            string ct = GetContentTypeForExtension(Path.GetExtension(path), null);
-            return IsHtmlContent(ct);
-        }
-
-        private bool IsHtmlContent(string contentType)
-        {
-            return contentType.ToLower().StartsWith("text/html");
-        }
-
-        private HtmlDocument LoadUrl(Uri uri, string method, WebProxy proxy, NetworkCredential creds)
-        {
-            HtmlDocument doc = new HtmlDocument();
-            doc.OptionAutoCloseOnEnd = false;
-            doc.OptionFixNestedTags = true;
-            _statusCode = Get(uri, method, null, doc, proxy, creds);
-            if (_statusCode == HttpStatusCode.NotModified)
-            {
-                // read cached encoding
-                doc.DetectEncodingAndLoad(GetCachePath(uri));
-            }
-            return doc;
-        }
-
-        private void SaveCacheHeaders(Uri requestUri, HttpWebResponse resp)
-        {
-            // we cache the original headers aside the cached document.
-            string file = GetCacheHeadersPath(requestUri);
-            XmlDocument doc = new XmlDocument();
-            doc.LoadXml("<c></c>");
-            XmlNode cache = doc.FirstChild;
-            foreach (string header in resp.Headers)
-            {
-                XmlNode entry = doc.CreateElement("h");
-                XmlAttribute att = doc.CreateAttribute("n");
-                att.Value = header;
-                entry.Attributes.Append(att);
-
-                att = doc.CreateAttribute("v");
-                att.Value = resp.Headers[header];
-                entry.Attributes.Append(att);
-
-                cache.AppendChild(entry);
-            }
-            doc.Save(file);
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+using System.Xml.Xsl;
+using Microsoft.Win32;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// A utility class to get HTML document from HTTP.
+    /// </summary>
+    public class HtmlWeb
+    {
+        #region Delegates
+
+        /// <summary>
+        /// Represents the method that will handle the PostResponse event.
+        /// </summary>
+        public delegate void PostResponseHandler(HttpWebRequest request, HttpWebResponse response);
+
+        /// <summary>
+        /// Represents the method that will handle the PreHandleDocument event.
+        /// </summary>
+        public delegate void PreHandleDocumentHandler(HtmlDocument document);
+
+        /// <summary>
+        /// Represents the method that will handle the PreRequest event.
+        /// </summary>
+        public delegate bool PreRequestHandler(HttpWebRequest request);
+
+        #endregion
+
+        #region Fields
+
+        private bool _autoDetectEncoding = true;
+        private bool _cacheOnly;
+
+        private string _cachePath;
+        private bool _fromCache;
+        private int _requestDuration;
+        private Uri _responseUri;
+        private HttpStatusCode _statusCode = HttpStatusCode.OK;
+        private int _streamBufferSize = 1024;
+        private bool _useCookies;
+        private bool _usingCache;
+
+        /// <summary>
+        /// Occurs after an HTTP request has been executed.
+        /// </summary>
+        public PostResponseHandler PostResponse;
+
+        /// <summary>
+        /// Occurs before an HTML document is handled.
+        /// </summary>
+        public PreHandleDocumentHandler PreHandleDocument;
+
+        /// <summary>
+        /// Occurs before an HTTP request is executed.
+        /// </summary>
+        public PreRequestHandler PreRequest;
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets or Sets a value indicating if document encoding must be automatically detected.
+        /// </summary>
+        public bool AutoDetectEncoding
+        {
+            get { return _autoDetectEncoding; }
+            set { _autoDetectEncoding = value; }
+        }
+
+        /// <summary>
+        /// Gets or Sets a value indicating whether to get document only from the cache.
+        /// If this is set to true and document is not found in the cache, nothing will be loaded.
+        /// </summary>
+        public bool CacheOnly
+        {
+            get { return _cacheOnly; }
+            set
+            {
+                if ((value) && !UsingCache)
+                {
+                    throw new HtmlWebException("Cache is not enabled. Set UsingCache to true first.");
+                }
+                _cacheOnly = value;
+            }
+        }
+
+        /// <summary>
+        /// Gets or Sets the cache path. If null, no caching mechanism will be used.
+        /// </summary>
+        public string CachePath
+        {
+            get { return _cachePath; }
+            set { _cachePath = value; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating if the last document was retrieved from the cache.
+        /// </summary>
+        public bool FromCache
+        {
+            get { return _fromCache; }
+        }
+
+        /// <summary>
+        /// Gets the last request duration in milliseconds.
+        /// </summary>
+        public int RequestDuration
+        {
+            get { return _requestDuration; }
+        }
+
+        /// <summary>
+        /// Gets the URI of the Internet resource that actually responded to the request.
+        /// </summary>
+        public Uri ResponseUri
+        {
+            get { return _responseUri; }
+        }
+
+        /// <summary>
+        /// Gets the last request status.
+        /// </summary>
+        public HttpStatusCode StatusCode
+        {
+            get { return _statusCode; }
+        }
+
+        /// <summary>
+        /// Gets or Sets the size of the buffer used for memory operations.
+        /// </summary>
+        public int StreamBufferSize
+        {
+            get { return _streamBufferSize; }
+            set
+            {
+                if (_streamBufferSize <= 0)
+                {
+                    throw new ArgumentException("Size must be greater than zero.");
+                }
+                _streamBufferSize = value;
+            }
+        }
+
+        /// <summary>
+        /// Gets or Sets a value indicating if cookies will be stored.
+        /// </summary>
+        public bool UseCookies
+        {
+            get { return _useCookies; }
+            set { _useCookies = value; }
+        }
+
+        /// <summary>
+        /// Gets or Sets a value indicating whether the caching mechanisms should be used or not.
+        /// </summary>
+        public bool UsingCache
+        {
+            get
+            {
+                if (_cachePath == null)
+                {
+                    return false;
+                }
+                return _usingCache;
+            }
+            set
+            {
+                if ((value) && (_cachePath == null))
+                {
+                    throw new HtmlWebException("You need to define a CachePath first.");
+                }
+                _usingCache = value;
+            }
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Gets the MIME content type for a given path extension.
+        /// </summary>
+        /// <param name="extension">The input path extension.</param>
+        /// <param name="def">The default content type to return if any error occurs.</param>
+        /// <returns>The path extension's MIME content type.</returns>
+        public static string GetContentTypeForExtension(string extension, string def)
+        {
+            if (string.IsNullOrEmpty(extension))
+            {
+                return def;
+            }
+            string contentType = "";
+            try
+            {
+                RegistryKey reg = Registry.ClassesRoot;
+                reg = reg.OpenSubKey(extension, false);
+                if (reg != null) contentType = (string)reg.GetValue("", def);
+            }
+            catch (Exception)
+            {
+                contentType = def;
+            }
+            return contentType;
+        }
+
+        /// <summary>
+        /// Gets the path extension for a given MIME content type.
+        /// </summary>
+        /// <param name="contentType">The input MIME content type.</param>
+        /// <param name="def">The default path extension to return if any error occurs.</param>
+        /// <returns>The MIME content type's path extension.</returns>
+        public static string GetExtensionForContentType(string contentType, string def)
+        {
+            if (string.IsNullOrEmpty(contentType))
+            {
+                return def;
+            }
+            string ext = "";
+            try
+            {
+                RegistryKey reg = Registry.ClassesRoot;
+                reg = reg.OpenSubKey(@"MIME\Database\Content Type\" + contentType, false);
+                if (reg != null) ext = (string)reg.GetValue("Extension", def);
+            }
+            catch (Exception)
+            {
+                ext = def;
+            }
+            return ext;
+        }
+
+        /// <summary>
+        /// Creates an instance of the given type from the specified Internet resource.
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="type">The requested type.</param>
+        /// <returns>An newly created instance.</returns>
+        public object CreateInstance(string url, Type type)
+        {
+            return CreateInstance(url, null, null, type);
+        }
+
+        /// <summary>
+        /// Creates an instance of the given type from the specified Internet resource.
+        /// </summary>
+        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
+        /// <param name="xsltArgs">An <see cref="XsltArgumentList"/> containing the namespace-qualified arguments used as input to the transform.</param>
+        /// <param name="type">The requested type.</param>
+        /// <returns>An newly created instance.</returns>
+        public object CreateInstance(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, Type type)
+        {
+            return CreateInstance(htmlUrl, xsltUrl, xsltArgs, type, null);
+        }
+
+        /// <summary>
+        /// Creates an instance of the given type from the specified Internet resource.
+        /// </summary>
+        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
+        /// <param name="xsltArgs">An <see cref="XsltArgumentList"/> containing the namespace-qualified arguments used as input to the transform.</param>
+        /// <param name="type">The requested type.</param>
+        /// <param name="xmlPath">A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.</param>
+        /// <returns>An newly created instance.</returns>
+        public object CreateInstance(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, Type type,
+                                     string xmlPath)
+        {
+            StringWriter sw = new StringWriter();
+            XmlTextWriter writer = new XmlTextWriter(sw);
+            if (xsltUrl == null)
+            {
+                LoadHtmlAsXml(htmlUrl, writer);
+            }
+            else
+            {
+                if (xmlPath == null)
+                {
+                    LoadHtmlAsXml(htmlUrl, xsltUrl, xsltArgs, writer);
+                }
+                else
+                {
+                    LoadHtmlAsXml(htmlUrl, xsltUrl, xsltArgs, writer, xmlPath);
+                }
+            }
+            writer.Flush();
+            StringReader sr = new StringReader(sw.ToString());
+            XmlTextReader reader = new XmlTextReader(sr);
+            XmlSerializer serializer = new XmlSerializer(type);
+            object o;
+            try
+            {
+                o = serializer.Deserialize(reader);
+            }
+            catch (InvalidOperationException ex)
+            {
+                throw new Exception(ex + ", --- xml:" + sw);
+            }
+            return o;
+        }
+
+        /// <summary>
+        /// Gets an HTML document from an Internet resource and saves it to the specified file.
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="path">The location of the file where you want to save the document.</param>
+        public void Get(string url, string path)
+        {
+            Get(url, path, "GET");
+        }
+
+        /// <summary>
+        /// Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="path">The location of the file where you want to save the document.</param>
+        /// <param name="proxy"></param>
+        /// <param name="credentials"></param>
+        public void Get(string url, string path, WebProxy proxy, NetworkCredential credentials)
+        {
+            Get(url, path, proxy, credentials, "GET");
+        }
+
+        /// <summary>
+        /// Gets an HTML document from an Internet resource and saves it to the specified file.
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="path">The location of the file where you want to save the document.</param>
+        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
+        public void Get(string url, string path, string method)
+        {
+            Uri uri = new Uri(url);
+            if ((uri.Scheme == Uri.UriSchemeHttps) ||
+                (uri.Scheme == Uri.UriSchemeHttp))
+            {
+                Get(uri, method, path, null, null, null);
+            }
+            else
+            {
+                throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
+            }
+        }
+
+        /// <summary>
+        /// Gets an HTML document from an Internet resource and saves it to the specified file.  Understands Proxies
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="path">The location of the file where you want to save the document.</param>
+        /// <param name="credentials"></param>
+        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
+        /// <param name="proxy"></param>
+        public void Get(string url, string path, WebProxy proxy, NetworkCredential credentials, string method)
+        {
+            Uri uri = new Uri(url);
+            if ((uri.Scheme == Uri.UriSchemeHttps) ||
+                (uri.Scheme == Uri.UriSchemeHttp))
+            {
+                Get(uri, method, path, null, proxy, credentials);
+            }
+            else
+            {
+                throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
+            }
+        }
+
+        /// <summary>
+        /// Gets the cache file path for a specified url.
+        /// </summary>
+        /// <param name="uri">The url fo which to retrieve the cache path. May not be null.</param>
+        /// <returns>The cache file path.</returns>
+        public string GetCachePath(Uri uri)
+        {
+            if (uri == null)
+            {
+                throw new ArgumentNullException("uri");
+            }
+            if (!UsingCache)
+            {
+                throw new HtmlWebException("Cache is not enabled. Set UsingCache to true first.");
+            }
+            string cachePath;
+            if (uri.AbsolutePath == "/")
+            {
+                cachePath = Path.Combine(_cachePath, ".htm");
+            }
+            else
+            {
+                cachePath = Path.Combine(_cachePath, (uri.Host + uri.AbsolutePath).Replace('/', '\\'));
+            }
+            return cachePath;
+        }
+
+        /// <summary>
+        /// Gets an HTML document from an Internet resource.
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <returns>A new HTML document.</returns>
+        public HtmlDocument Load(string url)
+        {
+            return Load(url, "GET");
+        }
+
+        /// <summary>
+        /// Gets an HTML document from an Internet resource.
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="proxyHost">Host to use for Proxy</param>
+        /// <param name="proxyPort">Port the Proxy is on</param>
+        /// <param name="userId">User Id for Authentication</param>
+        /// <param name="password">Password for Authentication</param>
+        /// <returns>A new HTML document.</returns>
+        public HtmlDocument Load(string url, string proxyHost, int proxyPort, string userId, string password)
+        {
+            //Create my proxy
+            WebProxy myProxy = new WebProxy(proxyHost, proxyPort);
+            myProxy.BypassProxyOnLocal = true;
+
+            //Create my credentials
+            NetworkCredential myCreds = null;
+            if ((userId != null) && (password != null))
+            {
+                myCreds = new NetworkCredential(userId, password);
+                CredentialCache credCache = new CredentialCache();
+                //Add the creds
+                credCache.Add(myProxy.Address, "Basic", myCreds);
+                credCache.Add(myProxy.Address, "Digest", myCreds);
+            }
+
+            return Load(url, "GET", myProxy, myCreds);
+        }
+
+        /// <summary>
+        /// Loads an HTML document from an Internet resource.
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
+        /// <returns>A new HTML document.</returns>
+        public HtmlDocument Load(string url, string method)
+        {
+            Uri uri = new Uri(url);
+            HtmlDocument doc;
+            if ((uri.Scheme == Uri.UriSchemeHttps) ||
+                (uri.Scheme == Uri.UriSchemeHttp))
+            {
+                doc = LoadUrl(uri, method, null, null);
+            }
+            else
+            {
+                if (uri.Scheme == Uri.UriSchemeFile)
+                {
+                    doc = new HtmlDocument();
+                    doc.OptionAutoCloseOnEnd = false;
+                    doc.OptionAutoCloseOnEnd = true;
+                    doc.DetectEncodingAndLoad(url, _autoDetectEncoding);
+                }
+                else
+                {
+                    throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
+                }
+            }
+            if (PreHandleDocument != null)
+            {
+                PreHandleDocument(doc);
+            }
+            return doc;
+        }
+
+        /// <summary>
+        /// Loads an HTML document from an Internet resource.
+        /// </summary>
+        /// <param name="url">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="method">The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.</param>
+        /// <param name="proxy">Proxy to use with this request</param>
+        /// <param name="credentials">Credentials to use when authenticating</param>
+        /// <returns>A new HTML document.</returns>
+        public HtmlDocument Load(string url, string method, WebProxy proxy, NetworkCredential credentials)
+        {
+            Uri uri = new Uri(url);
+            HtmlDocument doc;
+            if ((uri.Scheme == Uri.UriSchemeHttps) ||
+                (uri.Scheme == Uri.UriSchemeHttp))
+            {
+                doc = LoadUrl(uri, method, proxy, credentials);
+            }
+            else
+            {
+                if (uri.Scheme == Uri.UriSchemeFile)
+                {
+                    doc = new HtmlDocument();
+                    doc.OptionAutoCloseOnEnd = false;
+                    doc.OptionAutoCloseOnEnd = true;
+                    doc.DetectEncodingAndLoad(url, _autoDetectEncoding);
+                }
+                else
+                {
+                    throw new HtmlWebException("Unsupported uri scheme: '" + uri.Scheme + "'.");
+                }
+            }
+            if (PreHandleDocument != null)
+            {
+                PreHandleDocument(doc);
+            }
+            return doc;
+        }
+
+        /// <summary>
+        /// Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
+        /// </summary>
+        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="writer">The XmlTextWriter to which you want to save.</param>
+        public void LoadHtmlAsXml(string htmlUrl, XmlTextWriter writer)
+        {
+            HtmlDocument doc = Load(htmlUrl);
+            doc.Save(writer);
+        }
+
+        /// <summary>
+        /// Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+        /// </summary>
+        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp".</param>
+        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
+        /// <param name="xsltArgs">An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.</param>
+        /// <param name="writer">The XmlTextWriter to which you want to save.</param>
+        public void LoadHtmlAsXml(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, XmlTextWriter writer)
+        {
+            LoadHtmlAsXml(htmlUrl, xsltUrl, xsltArgs, writer, null);
+        }
+
+        /// <summary>
+        /// Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+        /// </summary>
+        /// <param name="htmlUrl">The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.</param>
+        /// <param name="xsltUrl">The URL that specifies the XSLT stylesheet to load.</param>
+        /// <param name="xsltArgs">An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.</param>
+        /// <param name="writer">The XmlTextWriter to which you want to save.</param>
+        /// <param name="xmlPath">A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.</param>
+        public void LoadHtmlAsXml(string htmlUrl, string xsltUrl, XsltArgumentList xsltArgs, XmlTextWriter writer,
+                                  string xmlPath)
+        {
+            if (htmlUrl == null)
+            {
+                throw new ArgumentNullException("htmlUrl");
+            }
+
+            HtmlDocument doc = Load(htmlUrl);
+
+            if (xmlPath != null)
+            {
+                XmlTextWriter w = new XmlTextWriter(xmlPath, doc.Encoding);
+                doc.Save(w);
+                w.Close();
+            }
+            if (xsltArgs == null)
+            {
+                xsltArgs = new XsltArgumentList();
+            }
+
+            // add some useful variables to the xslt doc
+            xsltArgs.AddParam("url", "", htmlUrl);
+            xsltArgs.AddParam("requestDuration", "", RequestDuration);
+            xsltArgs.AddParam("fromCache", "", FromCache);
+
+            XslCompiledTransform xslt = new XslCompiledTransform();
+            xslt.Load(xsltUrl);
+            xslt.Transform(doc, xsltArgs, writer);
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private static void FilePreparePath(string target)
+        {
+            if (File.Exists(target))
+            {
+                FileAttributes atts = File.GetAttributes(target);
+                File.SetAttributes(target, atts & ~FileAttributes.ReadOnly);
+            }
+            else
+            {
+                string dir = Path.GetDirectoryName(target);
+                if (!Directory.Exists(dir))
+                {
+                    Directory.CreateDirectory(dir);
+                }
+            }
+        }
+
+        private static DateTime RemoveMilliseconds(DateTime t)
+        {
+            return new DateTime(t.Year, t.Month, t.Day, t.Hour, t.Minute, t.Second, 0);
+        }
+
+        // ReSharper disable UnusedMethodReturnValue.Local
+        private static long SaveStream(Stream stream, string path, DateTime touchDate, int streamBufferSize)
+        // ReSharper restore UnusedMethodReturnValue.Local
+        {
+            FilePreparePath(path);
+            FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write);
+            BinaryReader br = null;
+            BinaryWriter bw = null;
+            long len = 0;
+            try
+            {
+                br = new BinaryReader(stream);
+                bw = new BinaryWriter(fs);
+
+                byte[] buffer;
+                do
+                {
+                    buffer = br.ReadBytes(streamBufferSize);
+                    len += buffer.Length;
+                    if (buffer.Length > 0)
+                    {
+                        bw.Write(buffer);
+                    }
+                } while (buffer.Length > 0);
+            }
+            finally
+            {
+                if (br != null)
+                {
+                    br.Close();
+                }
+                if (bw != null)
+                {
+                    bw.Flush();
+                    bw.Close();
+                }
+                if (fs != null)
+                {
+                    fs.Close();
+                }
+            }
+            File.SetLastWriteTime(path, touchDate);
+            return len;
+        }
+
+        private HttpStatusCode Get(Uri uri, string method, string path, HtmlDocument doc, IWebProxy proxy,
+                                   ICredentials creds)
+        {
+            string cachePath = null;
+            HttpWebRequest req;
+            bool oldFile = false;
+
+            req = WebRequest.Create(uri) as HttpWebRequest;
+            req.Method = method;
+
+            if (proxy != null)
+            {
+                if (creds != null)
+                {
+                    proxy.Credentials = creds;
+                    req.Credentials = creds;
+                }
+                else
+                {
+                    proxy.Credentials = CredentialCache.DefaultCredentials;
+                    req.Credentials = CredentialCache.DefaultCredentials;
+                }
+                req.Proxy = proxy;
+            }
+
+            _fromCache = false;
+            _requestDuration = 0;
+            int tc = Environment.TickCount;
+            if (UsingCache)
+            {
+                cachePath = GetCachePath(req.RequestUri);
+                if (File.Exists(cachePath))
+                {
+                    req.IfModifiedSince = File.GetLastAccessTime(cachePath);
+                    oldFile = true;
+                }
+            }
+
+            if (_cacheOnly)
+            {
+                if (!File.Exists(cachePath))
+                {
+                    throw new HtmlWebException("File was not found at cache path: '" + cachePath + "'");
+                }
+
+                if (path != null)
+                {
+                    IOLibrary.CopyAlways(cachePath, path);
+                    // touch the file
+                    File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
+                }
+                _fromCache = true;
+                return HttpStatusCode.NotModified;
+            }
+
+            if (_useCookies)
+            {
+                req.CookieContainer = new CookieContainer();
+            }
+
+            if (PreRequest != null)
+            {
+                // allow our user to change the request at will
+                if (!PreRequest(req))
+                {
+                    return HttpStatusCode.ResetContent;
+                }
+
+                // dump cookie
+                //				if (_useCookies)
+                //				{
+                //					foreach(Cookie cookie in req.CookieContainer.GetCookies(req.RequestUri))
+                //					{
+                //						HtmlLibrary.Trace("Cookie " + cookie.Name + "=" + cookie.Value + " path=" + cookie.Path + " domain=" + cookie.Domain);
+                //					}
+                //				}
+            }
+
+            HttpWebResponse resp;
+
+            try
+            {
+                resp = req.GetResponse() as HttpWebResponse;
+            }
+            catch (WebException we)
+            {
+                _requestDuration = Environment.TickCount - tc;
+                resp = (HttpWebResponse)we.Response;
+                if (resp == null)
+                {
+                    if (oldFile)
+                    {
+                        if (path != null)
+                        {
+                            IOLibrary.CopyAlways(cachePath, path);
+                            // touch the file
+                            File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
+                        }
+                        return HttpStatusCode.NotModified;
+                    }
+                    throw;
+                }
+            }
+            catch (Exception)
+            {
+                _requestDuration = Environment.TickCount - tc;
+                throw;
+            }
+
+            // allow our user to get some info from the response
+            if (PostResponse != null)
+            {
+                PostResponse(req, resp);
+            }
+
+            _requestDuration = Environment.TickCount - tc;
+            _responseUri = resp.ResponseUri;
+
+            bool html = IsHtmlContent(resp.ContentType);
+            Encoding respenc;
+
+            if ((resp.ContentEncoding != null) && (resp.ContentEncoding.Length > 0))
+            {
+                respenc = Encoding.GetEncoding(resp.ContentEncoding);
+            }
+            else
+            {
+                respenc = null;
+            }
+
+            if (resp.StatusCode == HttpStatusCode.NotModified)
+            {
+                if (UsingCache)
+                {
+                    _fromCache = true;
+                    if (path != null)
+                    {
+                        IOLibrary.CopyAlways(cachePath, path);
+                        // touch the file
+                        File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
+                    }
+                    return resp.StatusCode;
+                }
+                else
+                {
+                    // this should *never* happen...
+                    throw new HtmlWebException("Server has send a NotModifed code, without cache enabled.");
+                }
+            }
+            Stream s = resp.GetResponseStream();
+            if (s != null)
+            {
+                if (UsingCache)
+                {
+                    // NOTE: LastModified does not contain milliseconds, so we remove them to the file
+                    SaveStream(s, cachePath, RemoveMilliseconds(resp.LastModified), _streamBufferSize);
+
+                    // save headers
+                    SaveCacheHeaders(req.RequestUri, resp);
+
+                    if (path != null)
+                    {
+                        // copy and touch the file
+                        IOLibrary.CopyAlways(cachePath, path);
+                        File.SetLastWriteTime(path, File.GetLastWriteTime(cachePath));
+                    }
+                }
+                else
+                {
+                    // try to work in-memory
+                    if ((doc != null) && (html))
+                    {
+                        if (respenc != null)
+                        {
+                            doc.Load(s, respenc);
+                        }
+                        else
+                        {
+                            doc.Load(s, true);
+                        }
+                    }
+                }
+                resp.Close();
+            }
+            return resp.StatusCode;
+        }
+
+        private string GetCacheHeader(Uri requestUri, string name, string def)
+        {
+            // note: some headers are collection (ex: www-authenticate)
+            // we don't handle that here
+            XmlDocument doc = new XmlDocument();
+            doc.Load(GetCacheHeadersPath(requestUri));
+            XmlNode node =
+                doc.SelectSingleNode("//h[translate(@n, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" +
+                                     name.ToUpper() + "']");
+            if (node == null)
+            {
+                return def;
+            }
+            // attribute should exist
+            return node.Attributes[name].Value;
+        }
+
+        private string GetCacheHeadersPath(Uri uri)
+        {
+            //return Path.Combine(GetCachePath(uri), ".h.xml");
+            return GetCachePath(uri) + ".h.xml";
+        }
+
+        private bool IsCacheHtmlContent(string path)
+        {
+            string ct = GetContentTypeForExtension(Path.GetExtension(path), null);
+            return IsHtmlContent(ct);
+        }
+
+        private bool IsHtmlContent(string contentType)
+        {
+            return contentType.ToLower().StartsWith("text/html");
+        }
+
+        private HtmlDocument LoadUrl(Uri uri, string method, WebProxy proxy, NetworkCredential creds)
+        {
+            HtmlDocument doc = new HtmlDocument();
+            doc.OptionAutoCloseOnEnd = false;
+            doc.OptionFixNestedTags = true;
+            _statusCode = Get(uri, method, null, doc, proxy, creds);
+            if (_statusCode == HttpStatusCode.NotModified)
+            {
+                // read cached encoding
+                doc.DetectEncodingAndLoad(GetCachePath(uri));
+            }
+            return doc;
+        }
+
+        private void SaveCacheHeaders(Uri requestUri, HttpWebResponse resp)
+        {
+            // we cache the original headers aside the cached document.
+            string file = GetCacheHeadersPath(requestUri);
+            XmlDocument doc = new XmlDocument();
+            doc.LoadXml("<c></c>");
+            XmlNode cache = doc.FirstChild;
+            foreach (string header in resp.Headers)
+            {
+                XmlNode entry = doc.CreateElement("h");
+                XmlAttribute att = doc.CreateAttribute("n");
+                att.Value = header;
+                entry.Attributes.Append(att);
+
+                att = doc.CreateAttribute("v");
+                att.Value = resp.Headers[header];
+                entry.Attributes.Append(att);
+
+                cache.AppendChild(entry);
+            }
+            doc.Save(file);
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/HtmlWebException.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/HtmlWebException.cs
@@ -1,24 +1,24 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents an exception thrown by the HtmlWeb utility class.
-    /// </summary>
-    public class HtmlWebException : Exception
-    {
-        #region Constructors
-
-        /// <summary>
-        /// Creates an instance of the HtmlWebException.
-        /// </summary>
-        /// <param name="message">The exception's message.</param>
-        public HtmlWebException(string message)
-            : base(message)
-        {
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents an exception thrown by the HtmlWeb utility class.
+    /// </summary>
+    public class HtmlWebException : Exception
+    {
+        #region Constructors
+
+        /// <summary>
+        /// Creates an instance of the HtmlWebException.
+        /// </summary>
+        /// <param name="message">The exception's message.</param>
+        public HtmlWebException(string message)
+            : base(message)
+        {
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/IOLibrary.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/IOLibrary.cs
@@ -1,28 +1,28 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System.IO;
-
-namespace HtmlAgilityPack
-{
-    internal struct IOLibrary
-    {
-        #region Internal Methods
-
-        internal static void CopyAlways(string source, string target)
-        {
-            if (!File.Exists(source))
-                return;
-            Directory.CreateDirectory(Path.GetDirectoryName(target));
-            MakeWritable(target);
-            File.Copy(source, target, true);
-        }
-
-        internal static void MakeWritable(string path)
-        {
-            if (!File.Exists(path))
-                return;
-            File.SetAttributes(path, File.GetAttributes(path) & ~FileAttributes.ReadOnly);
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System.IO;
+
+namespace HtmlAgilityPack
+{
+    internal struct IOLibrary
+    {
+        #region Internal Methods
+
+        internal static void CopyAlways(string source, string target)
+        {
+            if (!File.Exists(source))
+                return;
+            Directory.CreateDirectory(Path.GetDirectoryName(target));
+            MakeWritable(target);
+            File.Copy(source, target, true);
+        }
+
+        internal static void MakeWritable(string path)
+        {
+            if (!File.Exists(path))
+                return;
+            File.SetAttributes(path, File.GetAttributes(path) & ~FileAttributes.ReadOnly);
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/LICENSE
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/LICENSE
@@ -1,27 +1,27 @@
-Microsoft Permissive License (Ms-PL)
- 
-	This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
- 
-1. Definitions
-
-	The terms reproduce, reproduction, derivative works, and distribution have the same meaning here as under U.S. copyright law.
-	A contribution is the original software, or any additions or changes to the software.
-	A contributor is any person that distributes its contribution under this license.
-	 Licensed patents are a contributors patent claims that read directly on its contribution.
- 
-2. Grant of Rights
-
-	(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
-	(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
- 
-3. Conditions and Limitations
-
-	(A) No Trademark License- This license does not grant you rights to use any contributors name, logo, or trademarks.
-	(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
-	(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
-	(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
-	(E) The software is licensed as-is. You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
-	(F) If you distribute the software or derivative works with programs you develop, you agree to indemnify, defend, and hold harmless all contributors from any claims, including attorneys fees, related to the distribution or use of your programs.  For clarity, you have no such obligations to a contributor for any claims based solely on the unmodified contributions of that contributor.
-	(G) If you make any additions or changes to the original software, you may only distribute them under a new namespace.  In addition, you will clearly identify your changes or additions as your own.
-
-
+Microsoft Permissive License (Ms-PL)
+ 
+	This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
+ 
+1. Definitions
+
+	The terms reproduce, reproduction, derivative works, and distribution have the same meaning here as under U.S. copyright law.
+	A contribution is the original software, or any additions or changes to the software.
+	A contributor is any person that distributes its contribution under this license.
+	 Licensed patents are a contributors patent claims that read directly on its contribution.
+ 
+2. Grant of Rights
+
+	(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
+	(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
+ 
+3. Conditions and Limitations
+
+	(A) No Trademark License- This license does not grant you rights to use any contributors name, logo, or trademarks.
+	(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
+	(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
+	(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
+	(E) The software is licensed as-is. You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
+	(F) If you distribute the software or derivative works with programs you develop, you agree to indemnify, defend, and hold harmless all contributors from any claims, including attorneys fees, related to the distribution or use of your programs.  For clarity, you have no such obligations to a contributor for any claims based solely on the unmodified contributions of that contributor.
+	(G) If you make any additions or changes to the original software, you may only distribute them under a new namespace.  In addition, you will clearly identify your changes or additions as your own.
+
+
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/MixedCodeDocument.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/MixedCodeDocument.cs
@@ -1,453 +1,453 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.IO;
-using System.Text;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
-    /// </summary>
-    public class MixedCodeDocument
-    {
-        #region Fields
-
-        private int _c;
-        internal MixedCodeDocumentFragmentList _codefragments;
-        private MixedCodeDocumentFragment _currentfragment;
-        internal MixedCodeDocumentFragmentList _fragments;
-        private int _index;
-        private int _line;
-        private int _lineposition;
-        private ParseState _state;
-        private Encoding _streamencoding;
-        internal string _text;
-        internal MixedCodeDocumentFragmentList _textfragments;
-
-        /// <summary>
-        /// Gets or sets the token representing code end.
-        /// </summary>
-        public string TokenCodeEnd = "%>";
-
-        /// <summary>
-        /// Gets or sets the token representing code start.
-        /// </summary>
-        public string TokenCodeStart = "<%";
-
-        /// <summary>
-        /// Gets or sets the token representing code directive.
-        /// </summary>
-        public string TokenDirective = "@";
-
-        /// <summary>
-        /// Gets or sets the token representing response write directive.
-        /// </summary>
-        public string TokenResponseWrite = "Response.Write ";
-
-
-        private string TokenTextBlock = "TextBlock({0})";
-
-        #endregion
-
-        #region Constructors
-
-        /// <summary>
-        /// Creates a mixed code document instance.
-        /// </summary>
-        public MixedCodeDocument()
-        {
-            _codefragments = new MixedCodeDocumentFragmentList(this);
-            _textfragments = new MixedCodeDocumentFragmentList(this);
-            _fragments = new MixedCodeDocumentFragmentList(this);
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the code represented by the mixed code document seen as a template.
-        /// </summary>
-        public string Code
-        {
-            get
-            {
-                string s = "";
-                int i = 0;
-                foreach (MixedCodeDocumentFragment frag in _fragments)
-                {
-                    switch (frag._type)
-                    {
-                        case MixedCodeDocumentFragmentType.Text:
-                            s += TokenResponseWrite + string.Format(TokenTextBlock, i) + "\n";
-                            i++;
-                            break;
-
-                        case MixedCodeDocumentFragmentType.Code:
-                            s += ((MixedCodeDocumentCodeFragment) frag).Code + "\n";
-                            break;
-                    }
-                }
-                return s;
-            }
-        }
-
-        /// <summary>
-        /// Gets the list of code fragments in the document.
-        /// </summary>
-        public MixedCodeDocumentFragmentList CodeFragments
-        {
-            get { return _codefragments; }
-        }
-
-        /// <summary>
-        /// Gets the list of all fragments in the document.
-        /// </summary>
-        public MixedCodeDocumentFragmentList Fragments
-        {
-            get { return _fragments; }
-        }
-
-        /// <summary>
-        /// Gets the encoding of the stream used to read the document.
-        /// </summary>
-        public Encoding StreamEncoding
-        {
-            get { return _streamencoding; }
-        }
-
-        /// <summary>
-        /// Gets the list of text fragments in the document.
-        /// </summary>
-        public MixedCodeDocumentFragmentList TextFragments
-        {
-            get { return _textfragments; }
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Create a code fragment instances.
-        /// </summary>
-        /// <returns>The newly created code fragment instance.</returns>
-        public MixedCodeDocumentCodeFragment CreateCodeFragment()
-        {
-            return (MixedCodeDocumentCodeFragment) CreateFragment(MixedCodeDocumentFragmentType.Code);
-        }
-
-        /// <summary>
-        /// Create a text fragment instances.
-        /// </summary>
-        /// <returns>The newly created text fragment instance.</returns>
-        public MixedCodeDocumentTextFragment CreateTextFragment()
-        {
-            return (MixedCodeDocumentTextFragment) CreateFragment(MixedCodeDocumentFragmentType.Text);
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        public void Load(Stream stream)
-        {
-            Load(new StreamReader(stream));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public void Load(Stream stream, bool detectEncodingFromByteOrderMarks)
-        {
-            Load(new StreamReader(stream, detectEncodingFromByteOrderMarks));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        public void Load(Stream stream, Encoding encoding)
-        {
-            Load(new StreamReader(stream, encoding));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks)
-        {
-            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a stream.
-        /// </summary>
-        /// <param name="stream">The input stream.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        /// <param name="buffersize">The minimum buffer size.</param>
-        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
-        {
-            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks, buffersize));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        public void Load(string path)
-        {
-            Load(new StreamReader(path));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public void Load(string path, bool detectEncodingFromByteOrderMarks)
-        {
-            Load(new StreamReader(path, detectEncodingFromByteOrderMarks));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        public void Load(string path, Encoding encoding)
-        {
-            Load(new StreamReader(path, encoding));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks)
-        {
-            Load(new StreamReader(path, encoding, detectEncodingFromByteOrderMarks));
-        }
-
-        /// <summary>
-        /// Loads a mixed code document from a file.
-        /// </summary>
-        /// <param name="path">The complete file path to be read.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
-        /// <param name="buffersize">The minimum buffer size.</param>
-        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
-        {
-            Load(new StreamReader(path, encoding, detectEncodingFromByteOrderMarks, buffersize));
-        }
-
-        /// <summary>
-        /// Loads the mixed code document from the specified TextReader.
-        /// </summary>
-        /// <param name="reader">The TextReader used to feed the HTML data into the document.</param>
-        public void Load(TextReader reader)
-        {
-            _codefragments.Clear();
-            _textfragments.Clear();
-
-            // all pseudo constructors get down to this one
-            StreamReader sr = reader as StreamReader;
-            if (sr != null)
-            {
-                _streamencoding = sr.CurrentEncoding;
-            }
-
-            _text = reader.ReadToEnd();
-            reader.Close();
-            Parse();
-        }
-
-        /// <summary>
-        /// Loads a mixed document from a text
-        /// </summary>
-        /// <param name="html">The text to load.</param>
-        public void LoadHtml(string html)
-        {
-            Load(new StringReader(html));
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified stream.
-        /// </summary>
-        /// <param name="outStream">The stream to which you want to save.</param>
-        public void Save(Stream outStream)
-        {
-            StreamWriter sw = new StreamWriter(outStream, GetOutEncoding());
-            Save(sw);
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified stream.
-        /// </summary>
-        /// <param name="outStream">The stream to which you want to save.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        public void Save(Stream outStream, Encoding encoding)
-        {
-            StreamWriter sw = new StreamWriter(outStream, encoding);
-            Save(sw);
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified file.
-        /// </summary>
-        /// <param name="filename">The location of the file where you want to save the document.</param>
-        public void Save(string filename)
-        {
-            StreamWriter sw = new StreamWriter(filename, false, GetOutEncoding());
-            Save(sw);
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified file.
-        /// </summary>
-        /// <param name="filename">The location of the file where you want to save the document.</param>
-        /// <param name="encoding">The character encoding to use.</param>
-        public void Save(string filename, Encoding encoding)
-        {
-            StreamWriter sw = new StreamWriter(filename, false, encoding);
-            Save(sw);
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified StreamWriter.
-        /// </summary>
-        /// <param name="writer">The StreamWriter to which you want to save.</param>
-        public void Save(StreamWriter writer)
-        {
-            Save((TextWriter) writer);
-        }
-
-        /// <summary>
-        /// Saves the mixed document to the specified TextWriter.
-        /// </summary>
-        /// <param name="writer">The TextWriter to which you want to save.</param>
-        public void Save(TextWriter writer)
-        {
-            writer.Flush();
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal MixedCodeDocumentFragment CreateFragment(MixedCodeDocumentFragmentType type)
-        {
-            switch (type)
-            {
-                case MixedCodeDocumentFragmentType.Text:
-                    return new MixedCodeDocumentTextFragment(this);
-
-                case MixedCodeDocumentFragmentType.Code:
-                    return new MixedCodeDocumentCodeFragment(this);
-
-                default:
-                    throw new NotSupportedException();
-            }
-        }
-
-        internal Encoding GetOutEncoding()
-        {
-            if (_streamencoding != null)
-                return _streamencoding;
-            return Encoding.Default;
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private void IncrementPosition()
-        {
-            _index++;
-            if (_c == 10)
-            {
-                _lineposition = 1;
-                _line++;
-            }
-            else
-                _lineposition++;
-        }
-
-        private void Parse()
-        {
-            _state = ParseState.Text;
-            _index = 0;
-            _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Text);
-
-            while (_index < _text.Length)
-            {
-                _c = _text[_index];
-                IncrementPosition();
-
-                switch (_state)
-                {
-                    case ParseState.Text:
-                        if (_index + TokenCodeStart.Length < _text.Length)
-                        {
-                            if (_text.Substring(_index - 1, TokenCodeStart.Length) == TokenCodeStart)
-                            {
-                                _state = ParseState.Code;
-                                _currentfragment.Length = _index - 1 - _currentfragment.Index;
-                                _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Code);
-                                SetPosition();
-                                continue;
-                            }
-                        }
-                        break;
-
-                    case ParseState.Code:
-                        if (_index + TokenCodeEnd.Length < _text.Length)
-                        {
-                            if (_text.Substring(_index - 1, TokenCodeEnd.Length) == TokenCodeEnd)
-                            {
-                                _state = ParseState.Text;
-                                _currentfragment.Length = _index + TokenCodeEnd.Length - _currentfragment.Index;
-                                _index += TokenCodeEnd.Length;
-                                _lineposition += TokenCodeEnd.Length;
-                                _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Text);
-                                SetPosition();
-                                continue;
-                            }
-                        }
-                        break;
-                }
-            }
-
-            _currentfragment.Length = _index - _currentfragment.Index;
-        }
-
-        private void SetPosition()
-        {
-            _currentfragment.Line = _line;
-            _currentfragment._lineposition = _lineposition;
-            _currentfragment.Index = _index - 1;
-            _currentfragment.Length = 0;
-        }
-
-        #endregion
-
-        #region Nested type: ParseState
-
-        private enum ParseState
-        {
-            Text,
-            Code
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.IO;
+using System.Text;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+    /// </summary>
+    public class MixedCodeDocument
+    {
+        #region Fields
+
+        private int _c;
+        internal MixedCodeDocumentFragmentList _codefragments;
+        private MixedCodeDocumentFragment _currentfragment;
+        internal MixedCodeDocumentFragmentList _fragments;
+        private int _index;
+        private int _line;
+        private int _lineposition;
+        private ParseState _state;
+        private Encoding _streamencoding;
+        internal string _text;
+        internal MixedCodeDocumentFragmentList _textfragments;
+
+        /// <summary>
+        /// Gets or sets the token representing code end.
+        /// </summary>
+        public string TokenCodeEnd = "%>";
+
+        /// <summary>
+        /// Gets or sets the token representing code start.
+        /// </summary>
+        public string TokenCodeStart = "<%";
+
+        /// <summary>
+        /// Gets or sets the token representing code directive.
+        /// </summary>
+        public string TokenDirective = "@";
+
+        /// <summary>
+        /// Gets or sets the token representing response write directive.
+        /// </summary>
+        public string TokenResponseWrite = "Response.Write ";
+
+
+        private string TokenTextBlock = "TextBlock({0})";
+
+        #endregion
+
+        #region Constructors
+
+        /// <summary>
+        /// Creates a mixed code document instance.
+        /// </summary>
+        public MixedCodeDocument()
+        {
+            _codefragments = new MixedCodeDocumentFragmentList(this);
+            _textfragments = new MixedCodeDocumentFragmentList(this);
+            _fragments = new MixedCodeDocumentFragmentList(this);
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the code represented by the mixed code document seen as a template.
+        /// </summary>
+        public string Code
+        {
+            get
+            {
+                string s = "";
+                int i = 0;
+                foreach (MixedCodeDocumentFragment frag in _fragments)
+                {
+                    switch (frag._type)
+                    {
+                        case MixedCodeDocumentFragmentType.Text:
+                            s += TokenResponseWrite + string.Format(TokenTextBlock, i) + "\n";
+                            i++;
+                            break;
+
+                        case MixedCodeDocumentFragmentType.Code:
+                            s += ((MixedCodeDocumentCodeFragment) frag).Code + "\n";
+                            break;
+                    }
+                }
+                return s;
+            }
+        }
+
+        /// <summary>
+        /// Gets the list of code fragments in the document.
+        /// </summary>
+        public MixedCodeDocumentFragmentList CodeFragments
+        {
+            get { return _codefragments; }
+        }
+
+        /// <summary>
+        /// Gets the list of all fragments in the document.
+        /// </summary>
+        public MixedCodeDocumentFragmentList Fragments
+        {
+            get { return _fragments; }
+        }
+
+        /// <summary>
+        /// Gets the encoding of the stream used to read the document.
+        /// </summary>
+        public Encoding StreamEncoding
+        {
+            get { return _streamencoding; }
+        }
+
+        /// <summary>
+        /// Gets the list of text fragments in the document.
+        /// </summary>
+        public MixedCodeDocumentFragmentList TextFragments
+        {
+            get { return _textfragments; }
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Create a code fragment instances.
+        /// </summary>
+        /// <returns>The newly created code fragment instance.</returns>
+        public MixedCodeDocumentCodeFragment CreateCodeFragment()
+        {
+            return (MixedCodeDocumentCodeFragment) CreateFragment(MixedCodeDocumentFragmentType.Code);
+        }
+
+        /// <summary>
+        /// Create a text fragment instances.
+        /// </summary>
+        /// <returns>The newly created text fragment instance.</returns>
+        public MixedCodeDocumentTextFragment CreateTextFragment()
+        {
+            return (MixedCodeDocumentTextFragment) CreateFragment(MixedCodeDocumentFragmentType.Text);
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        public void Load(Stream stream)
+        {
+            Load(new StreamReader(stream));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public void Load(Stream stream, bool detectEncodingFromByteOrderMarks)
+        {
+            Load(new StreamReader(stream, detectEncodingFromByteOrderMarks));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        public void Load(Stream stream, Encoding encoding)
+        {
+            Load(new StreamReader(stream, encoding));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks)
+        {
+            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a stream.
+        /// </summary>
+        /// <param name="stream">The input stream.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        /// <param name="buffersize">The minimum buffer size.</param>
+        public void Load(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
+        {
+            Load(new StreamReader(stream, encoding, detectEncodingFromByteOrderMarks, buffersize));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        public void Load(string path)
+        {
+            Load(new StreamReader(path));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public void Load(string path, bool detectEncodingFromByteOrderMarks)
+        {
+            Load(new StreamReader(path, detectEncodingFromByteOrderMarks));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        public void Load(string path, Encoding encoding)
+        {
+            Load(new StreamReader(path, encoding));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks)
+        {
+            Load(new StreamReader(path, encoding, detectEncodingFromByteOrderMarks));
+        }
+
+        /// <summary>
+        /// Loads a mixed code document from a file.
+        /// </summary>
+        /// <param name="path">The complete file path to be read.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        /// <param name="detectEncodingFromByteOrderMarks">Indicates whether to look for byte order marks at the beginning of the file.</param>
+        /// <param name="buffersize">The minimum buffer size.</param>
+        public void Load(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int buffersize)
+        {
+            Load(new StreamReader(path, encoding, detectEncodingFromByteOrderMarks, buffersize));
+        }
+
+        /// <summary>
+        /// Loads the mixed code document from the specified TextReader.
+        /// </summary>
+        /// <param name="reader">The TextReader used to feed the HTML data into the document.</param>
+        public void Load(TextReader reader)
+        {
+            _codefragments.Clear();
+            _textfragments.Clear();
+
+            // all pseudo constructors get down to this one
+            StreamReader sr = reader as StreamReader;
+            if (sr != null)
+            {
+                _streamencoding = sr.CurrentEncoding;
+            }
+
+            _text = reader.ReadToEnd();
+            reader.Close();
+            Parse();
+        }
+
+        /// <summary>
+        /// Loads a mixed document from a text
+        /// </summary>
+        /// <param name="html">The text to load.</param>
+        public void LoadHtml(string html)
+        {
+            Load(new StringReader(html));
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified stream.
+        /// </summary>
+        /// <param name="outStream">The stream to which you want to save.</param>
+        public void Save(Stream outStream)
+        {
+            StreamWriter sw = new StreamWriter(outStream, GetOutEncoding());
+            Save(sw);
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified stream.
+        /// </summary>
+        /// <param name="outStream">The stream to which you want to save.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        public void Save(Stream outStream, Encoding encoding)
+        {
+            StreamWriter sw = new StreamWriter(outStream, encoding);
+            Save(sw);
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified file.
+        /// </summary>
+        /// <param name="filename">The location of the file where you want to save the document.</param>
+        public void Save(string filename)
+        {
+            StreamWriter sw = new StreamWriter(filename, false, GetOutEncoding());
+            Save(sw);
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified file.
+        /// </summary>
+        /// <param name="filename">The location of the file where you want to save the document.</param>
+        /// <param name="encoding">The character encoding to use.</param>
+        public void Save(string filename, Encoding encoding)
+        {
+            StreamWriter sw = new StreamWriter(filename, false, encoding);
+            Save(sw);
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified StreamWriter.
+        /// </summary>
+        /// <param name="writer">The StreamWriter to which you want to save.</param>
+        public void Save(StreamWriter writer)
+        {
+            Save((TextWriter) writer);
+        }
+
+        /// <summary>
+        /// Saves the mixed document to the specified TextWriter.
+        /// </summary>
+        /// <param name="writer">The TextWriter to which you want to save.</param>
+        public void Save(TextWriter writer)
+        {
+            writer.Flush();
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal MixedCodeDocumentFragment CreateFragment(MixedCodeDocumentFragmentType type)
+        {
+            switch (type)
+            {
+                case MixedCodeDocumentFragmentType.Text:
+                    return new MixedCodeDocumentTextFragment(this);
+
+                case MixedCodeDocumentFragmentType.Code:
+                    return new MixedCodeDocumentCodeFragment(this);
+
+                default:
+                    throw new NotSupportedException();
+            }
+        }
+
+        internal Encoding GetOutEncoding()
+        {
+            if (_streamencoding != null)
+                return _streamencoding;
+            return Encoding.Default;
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private void IncrementPosition()
+        {
+            _index++;
+            if (_c == 10)
+            {
+                _lineposition = 1;
+                _line++;
+            }
+            else
+                _lineposition++;
+        }
+
+        private void Parse()
+        {
+            _state = ParseState.Text;
+            _index = 0;
+            _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Text);
+
+            while (_index < _text.Length)
+            {
+                _c = _text[_index];
+                IncrementPosition();
+
+                switch (_state)
+                {
+                    case ParseState.Text:
+                        if (_index + TokenCodeStart.Length < _text.Length)
+                        {
+                            if (_text.Substring(_index - 1, TokenCodeStart.Length) == TokenCodeStart)
+                            {
+                                _state = ParseState.Code;
+                                _currentfragment.Length = _index - 1 - _currentfragment.Index;
+                                _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Code);
+                                SetPosition();
+                                continue;
+                            }
+                        }
+                        break;
+
+                    case ParseState.Code:
+                        if (_index + TokenCodeEnd.Length < _text.Length)
+                        {
+                            if (_text.Substring(_index - 1, TokenCodeEnd.Length) == TokenCodeEnd)
+                            {
+                                _state = ParseState.Text;
+                                _currentfragment.Length = _index + TokenCodeEnd.Length - _currentfragment.Index;
+                                _index += TokenCodeEnd.Length;
+                                _lineposition += TokenCodeEnd.Length;
+                                _currentfragment = CreateFragment(MixedCodeDocumentFragmentType.Text);
+                                SetPosition();
+                                continue;
+                            }
+                        }
+                        break;
+                }
+            }
+
+            _currentfragment.Length = _index - _currentfragment.Index;
+        }
+
+        private void SetPosition()
+        {
+            _currentfragment.Line = _line;
+            _currentfragment._lineposition = _lineposition;
+            _currentfragment.Index = _index - 1;
+            _currentfragment.Length = 0;
+        }
+
+        #endregion
+
+        #region Nested type: ParseState
+
+        private enum ParseState
+        {
+            Text,
+            Code
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/MixedCodeDocumentCodeFragment.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/MixedCodeDocumentCodeFragment.cs
@@ -1,51 +1,51 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a fragment of code in a mixed code document.
-    /// </summary>
-    public class MixedCodeDocumentCodeFragment : MixedCodeDocumentFragment
-    {
-        #region Fields
-
-        private string _code;
-
-        #endregion
-
-        #region Constructors
-
-        internal MixedCodeDocumentCodeFragment(MixedCodeDocument doc)
-            :
-                base(doc, MixedCodeDocumentFragmentType.Code)
-        {
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the fragment code text.
-        /// </summary>
-        public string Code
-        {
-            get
-            {
-                if (_code == null)
-                {
-                    _code = FragmentText.Substring(Doc.TokenCodeStart.Length,
-                                                   FragmentText.Length - Doc.TokenCodeEnd.Length -
-                                                   Doc.TokenCodeStart.Length - 1).Trim();
-                    if (_code.StartsWith("="))
-                    {
-                        _code = Doc.TokenResponseWrite + _code.Substring(1, _code.Length - 1);
-                    }
-                }
-                return _code;
-            }
-            set { _code = value; }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a fragment of code in a mixed code document.
+    /// </summary>
+    public class MixedCodeDocumentCodeFragment : MixedCodeDocumentFragment
+    {
+        #region Fields
+
+        private string _code;
+
+        #endregion
+
+        #region Constructors
+
+        internal MixedCodeDocumentCodeFragment(MixedCodeDocument doc)
+            :
+                base(doc, MixedCodeDocumentFragmentType.Code)
+        {
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the fragment code text.
+        /// </summary>
+        public string Code
+        {
+            get
+            {
+                if (_code == null)
+                {
+                    _code = FragmentText.Substring(Doc.TokenCodeStart.Length,
+                                                   FragmentText.Length - Doc.TokenCodeEnd.Length -
+                                                   Doc.TokenCodeStart.Length - 1).Trim();
+                    if (_code.StartsWith("="))
+                    {
+                        _code = Doc.TokenResponseWrite + _code.Substring(1, _code.Length - 1);
+                    }
+                }
+                return _code;
+            }
+            set { _code = value; }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/MixedCodeDocumentFragment.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/MixedCodeDocumentFragment.cs
@@ -1,95 +1,95 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a base class for fragments in a mixed code document.
-    /// </summary>
-    public abstract class MixedCodeDocumentFragment
-    {
-        #region Fields
-
-        internal MixedCodeDocument Doc;
-        private string _fragmentText;
-        internal int Index;
-        internal int Length;
-        private int _line;
-        internal int _lineposition;
-        internal MixedCodeDocumentFragmentType _type;
-
-        #endregion
-
-        #region Constructors
-
-        internal MixedCodeDocumentFragment(MixedCodeDocument doc, MixedCodeDocumentFragmentType type)
-        {
-            Doc = doc;
-            _type = type;
-            switch (type)
-            {
-                case MixedCodeDocumentFragmentType.Text:
-                    Doc._textfragments.Append(this);
-                    break;
-
-                case MixedCodeDocumentFragmentType.Code:
-                    Doc._codefragments.Append(this);
-                    break;
-            }
-            Doc._fragments.Append(this);
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the fragement text.
-        /// </summary>
-        public string FragmentText
-        {
-            get
-            {
-                if (_fragmentText == null)
-                {
-                    _fragmentText = Doc._text.Substring(Index, Length);
-                }
-                return FragmentText;
-            }
-            internal set { _fragmentText = value; }
-        }
-
-        /// <summary>
-        /// Gets the type of fragment.
-        /// </summary>
-        public MixedCodeDocumentFragmentType FragmentType
-        {
-            get { return _type; }
-        }
-
-        /// <summary>
-        /// Gets the line number of the fragment.
-        /// </summary>
-        public int Line
-        {
-            get { return _line; }
-            internal set { _line = value; }
-        }
-
-        /// <summary>
-        /// Gets the line position (column) of the fragment.
-        /// </summary>
-        public int LinePosition
-        {
-            get { return _lineposition; }
-        }
-
-        /// <summary>
-        /// Gets the fragment position in the document's stream.
-        /// </summary>
-        public int StreamPosition
-        {
-            get { return Index; }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a base class for fragments in a mixed code document.
+    /// </summary>
+    public abstract class MixedCodeDocumentFragment
+    {
+        #region Fields
+
+        internal MixedCodeDocument Doc;
+        private string _fragmentText;
+        internal int Index;
+        internal int Length;
+        private int _line;
+        internal int _lineposition;
+        internal MixedCodeDocumentFragmentType _type;
+
+        #endregion
+
+        #region Constructors
+
+        internal MixedCodeDocumentFragment(MixedCodeDocument doc, MixedCodeDocumentFragmentType type)
+        {
+            Doc = doc;
+            _type = type;
+            switch (type)
+            {
+                case MixedCodeDocumentFragmentType.Text:
+                    Doc._textfragments.Append(this);
+                    break;
+
+                case MixedCodeDocumentFragmentType.Code:
+                    Doc._codefragments.Append(this);
+                    break;
+            }
+            Doc._fragments.Append(this);
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the fragement text.
+        /// </summary>
+        public string FragmentText
+        {
+            get
+            {
+                if (_fragmentText == null)
+                {
+                    _fragmentText = Doc._text.Substring(Index, Length);
+                }
+                return FragmentText;
+            }
+            internal set { _fragmentText = value; }
+        }
+
+        /// <summary>
+        /// Gets the type of fragment.
+        /// </summary>
+        public MixedCodeDocumentFragmentType FragmentType
+        {
+            get { return _type; }
+        }
+
+        /// <summary>
+        /// Gets the line number of the fragment.
+        /// </summary>
+        public int Line
+        {
+            get { return _line; }
+            internal set { _line = value; }
+        }
+
+        /// <summary>
+        /// Gets the line position (column) of the fragment.
+        /// </summary>
+        public int LinePosition
+        {
+            get { return _lineposition; }
+        }
+
+        /// <summary>
+        /// Gets the fragment position in the document's stream.
+        /// </summary>
+        public int StreamPosition
+        {
+            get { return Index; }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/MixedCodeDocumentFragmentList.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/MixedCodeDocumentFragmentList.cs
@@ -1,236 +1,236 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Collections;
-
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a list of mixed code fragments.
-    /// </summary>
-    public class MixedCodeDocumentFragmentList : IEnumerable
-    {
-        #region Fields
-
-        private MixedCodeDocument _doc;
-        private ArrayList _items = new ArrayList();
-
-        #endregion
-
-        #region Constructors
-
-        internal MixedCodeDocumentFragmentList(MixedCodeDocument doc)
-        {
-            _doc = doc;
-        }
-
-        #endregion
-
-        #region Properties
-
-        ///<summary>
-        /// Gets the Document
-        ///</summary>
-        public MixedCodeDocument Doc
-        {
-            get { return _doc; }
-        }
-
-        /// <summary>
-        /// Gets the number of fragments contained in the list.
-        /// </summary>
-        public int Count
-        {
-            get { return _items.Count; }
-        }
-
-        /// <summary>
-        /// Gets a fragment from the list using its index.
-        /// </summary>
-        public MixedCodeDocumentFragment this[int index]
-        {
-            get { return _items[index] as MixedCodeDocumentFragment; }
-        }
-
-        #endregion
-
-        #region IEnumerable Members
-
-        /// <summary>
-        /// Gets an enumerator that can iterate through the fragment list.
-        /// </summary>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return GetEnumerator();
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Appends a fragment to the list of fragments.
-        /// </summary>
-        /// <param name="newFragment">The fragment to append. May not be null.</param>
-        public void Append(MixedCodeDocumentFragment newFragment)
-        {
-            if (newFragment == null)
-            {
-                throw new ArgumentNullException("newFragment");
-            }
-            _items.Add(newFragment);
-        }
-
-        /// <summary>
-        /// Gets an enumerator that can iterate through the fragment list.
-        /// </summary>
-        public MixedCodeDocumentFragmentEnumerator GetEnumerator()
-        {
-            return new MixedCodeDocumentFragmentEnumerator(_items);
-        }
-
-        /// <summary>
-        /// Prepends a fragment to the list of fragments.
-        /// </summary>
-        /// <param name="newFragment">The fragment to append. May not be null.</param>
-        public void Prepend(MixedCodeDocumentFragment newFragment)
-        {
-            if (newFragment == null)
-            {
-                throw new ArgumentNullException("newFragment");
-            }
-            _items.Insert(0, newFragment);
-        }
-
-        /// <summary>
-        /// Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
-        /// </summary>
-        /// <param name="fragment">The fragment to remove. May not be null.</param>
-        public void Remove(MixedCodeDocumentFragment fragment)
-        {
-            if (fragment == null)
-            {
-                throw new ArgumentNullException("fragment");
-            }
-            int index = GetFragmentIndex(fragment);
-            if (index == -1)
-            {
-                throw new IndexOutOfRangeException();
-            }
-            RemoveAt(index);
-        }
-
-        /// <summary>
-        /// Remove all fragments from the list.
-        /// </summary>
-        public void RemoveAll()
-        {
-            _items.Clear();
-        }
-
-        /// <summary>
-        /// Remove a fragment from the list of fragments, using its index in the list.
-        /// </summary>
-        /// <param name="index">The index of the fragment to remove.</param>
-        public void RemoveAt(int index)
-        {
-            //MixedCodeDocumentFragment frag = (MixedCodeDocumentFragment) _items[index];
-            _items.RemoveAt(index);
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal void Clear()
-        {
-            _items.Clear();
-        }
-
-        internal int GetFragmentIndex(MixedCodeDocumentFragment fragment)
-        {
-            if (fragment == null)
-            {
-                throw new ArgumentNullException("fragment");
-            }
-            for (int i = 0; i < _items.Count; i++)
-            {
-                if ((_items[i]) == fragment)
-                {
-                    return i;
-                }
-            }
-            return -1;
-        }
-
-        #endregion
-
-        #region Nested type: MixedCodeDocumentFragmentEnumerator
-
-        /// <summary>
-        /// Represents a fragment enumerator.
-        /// </summary>
-        public class MixedCodeDocumentFragmentEnumerator : IEnumerator
-        {
-            #region Fields
-
-            private int _index;
-            private ArrayList _items;
-
-            #endregion
-
-            #region Constructors
-
-            internal MixedCodeDocumentFragmentEnumerator(ArrayList items)
-            {
-                _items = items;
-                _index = -1;
-            }
-
-            #endregion
-
-            #region Properties
-
-            /// <summary>
-            /// Gets the current element in the collection.
-            /// </summary>
-            public MixedCodeDocumentFragment Current
-            {
-                get { return (MixedCodeDocumentFragment) (_items[_index]); }
-            }
-
-            #endregion
-
-            #region IEnumerator Members
-
-            /// <summary>
-            /// Gets the current element in the collection.
-            /// </summary>
-            object IEnumerator.Current
-            {
-                get { return (Current); }
-            }
-
-            /// <summary>
-            /// Advances the enumerator to the next element of the collection.
-            /// </summary>
-            /// <returns>true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.</returns>
-            public bool MoveNext()
-            {
-                _index++;
-                return (_index < _items.Count);
-            }
-
-            /// <summary>
-            /// Sets the enumerator to its initial position, which is before the first element in the collection.
-            /// </summary>
-            public void Reset()
-            {
-                _index = -1;
-            }
-
-            #endregion
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Collections;
+
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a list of mixed code fragments.
+    /// </summary>
+    public class MixedCodeDocumentFragmentList : IEnumerable
+    {
+        #region Fields
+
+        private MixedCodeDocument _doc;
+        private ArrayList _items = new ArrayList();
+
+        #endregion
+
+        #region Constructors
+
+        internal MixedCodeDocumentFragmentList(MixedCodeDocument doc)
+        {
+            _doc = doc;
+        }
+
+        #endregion
+
+        #region Properties
+
+        ///<summary>
+        /// Gets the Document
+        ///</summary>
+        public MixedCodeDocument Doc
+        {
+            get { return _doc; }
+        }
+
+        /// <summary>
+        /// Gets the number of fragments contained in the list.
+        /// </summary>
+        public int Count
+        {
+            get { return _items.Count; }
+        }
+
+        /// <summary>
+        /// Gets a fragment from the list using its index.
+        /// </summary>
+        public MixedCodeDocumentFragment this[int index]
+        {
+            get { return _items[index] as MixedCodeDocumentFragment; }
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        /// <summary>
+        /// Gets an enumerator that can iterate through the fragment list.
+        /// </summary>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Appends a fragment to the list of fragments.
+        /// </summary>
+        /// <param name="newFragment">The fragment to append. May not be null.</param>
+        public void Append(MixedCodeDocumentFragment newFragment)
+        {
+            if (newFragment == null)
+            {
+                throw new ArgumentNullException("newFragment");
+            }
+            _items.Add(newFragment);
+        }
+
+        /// <summary>
+        /// Gets an enumerator that can iterate through the fragment list.
+        /// </summary>
+        public MixedCodeDocumentFragmentEnumerator GetEnumerator()
+        {
+            return new MixedCodeDocumentFragmentEnumerator(_items);
+        }
+
+        /// <summary>
+        /// Prepends a fragment to the list of fragments.
+        /// </summary>
+        /// <param name="newFragment">The fragment to append. May not be null.</param>
+        public void Prepend(MixedCodeDocumentFragment newFragment)
+        {
+            if (newFragment == null)
+            {
+                throw new ArgumentNullException("newFragment");
+            }
+            _items.Insert(0, newFragment);
+        }
+
+        /// <summary>
+        /// Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+        /// </summary>
+        /// <param name="fragment">The fragment to remove. May not be null.</param>
+        public void Remove(MixedCodeDocumentFragment fragment)
+        {
+            if (fragment == null)
+            {
+                throw new ArgumentNullException("fragment");
+            }
+            int index = GetFragmentIndex(fragment);
+            if (index == -1)
+            {
+                throw new IndexOutOfRangeException();
+            }
+            RemoveAt(index);
+        }
+
+        /// <summary>
+        /// Remove all fragments from the list.
+        /// </summary>
+        public void RemoveAll()
+        {
+            _items.Clear();
+        }
+
+        /// <summary>
+        /// Remove a fragment from the list of fragments, using its index in the list.
+        /// </summary>
+        /// <param name="index">The index of the fragment to remove.</param>
+        public void RemoveAt(int index)
+        {
+            //MixedCodeDocumentFragment frag = (MixedCodeDocumentFragment) _items[index];
+            _items.RemoveAt(index);
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal void Clear()
+        {
+            _items.Clear();
+        }
+
+        internal int GetFragmentIndex(MixedCodeDocumentFragment fragment)
+        {
+            if (fragment == null)
+            {
+                throw new ArgumentNullException("fragment");
+            }
+            for (int i = 0; i < _items.Count; i++)
+            {
+                if ((_items[i]) == fragment)
+                {
+                    return i;
+                }
+            }
+            return -1;
+        }
+
+        #endregion
+
+        #region Nested type: MixedCodeDocumentFragmentEnumerator
+
+        /// <summary>
+        /// Represents a fragment enumerator.
+        /// </summary>
+        public class MixedCodeDocumentFragmentEnumerator : IEnumerator
+        {
+            #region Fields
+
+            private int _index;
+            private ArrayList _items;
+
+            #endregion
+
+            #region Constructors
+
+            internal MixedCodeDocumentFragmentEnumerator(ArrayList items)
+            {
+                _items = items;
+                _index = -1;
+            }
+
+            #endregion
+
+            #region Properties
+
+            /// <summary>
+            /// Gets the current element in the collection.
+            /// </summary>
+            public MixedCodeDocumentFragment Current
+            {
+                get { return (MixedCodeDocumentFragment) (_items[_index]); }
+            }
+
+            #endregion
+
+            #region IEnumerator Members
+
+            /// <summary>
+            /// Gets the current element in the collection.
+            /// </summary>
+            object IEnumerator.Current
+            {
+                get { return (Current); }
+            }
+
+            /// <summary>
+            /// Advances the enumerator to the next element of the collection.
+            /// </summary>
+            /// <returns>true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.</returns>
+            public bool MoveNext()
+            {
+                _index++;
+                return (_index < _items.Count);
+            }
+
+            /// <summary>
+            /// Sets the enumerator to its initial position, which is before the first element in the collection.
+            /// </summary>
+            public void Reset()
+            {
+                _index = -1;
+            }
+
+            #endregion
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/MixedCodeDocumentFragmentType.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/MixedCodeDocumentFragmentType.cs
@@ -1,19 +1,19 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents the type of fragment in a mixed code document.
-    /// </summary>
-    public enum MixedCodeDocumentFragmentType
-    {
-        /// <summary>
-        /// The fragment contains code.
-        /// </summary>
-        Code,
-
-        /// <summary>
-        /// The fragment contains text.
-        /// </summary>
-        Text,
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents the type of fragment in a mixed code document.
+    /// </summary>
+    public enum MixedCodeDocumentFragmentType
+    {
+        /// <summary>
+        /// The fragment contains code.
+        /// </summary>
+        Code,
+
+        /// <summary>
+        /// The fragment contains text.
+        /// </summary>
+        Text,
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/MixedCodeDocumentTextFragment.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/MixedCodeDocumentTextFragment.cs
@@ -1,32 +1,32 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// Represents a fragment of text in a mixed code document.
-    /// </summary>
-    public class MixedCodeDocumentTextFragment : MixedCodeDocumentFragment
-    {
-        #region Constructors
-
-        internal MixedCodeDocumentTextFragment(MixedCodeDocument doc)
-            :
-                base(doc, MixedCodeDocumentFragmentType.Text)
-        {
-        }
-
-        #endregion
-
-        #region Properties
-
-        /// <summary>
-        /// Gets the fragment text.
-        /// </summary>
-        public string Text
-        {
-            get { return FragmentText; }
-            set { FragmentText = value; }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// Represents a fragment of text in a mixed code document.
+    /// </summary>
+    public class MixedCodeDocumentTextFragment : MixedCodeDocumentFragment
+    {
+        #region Constructors
+
+        internal MixedCodeDocumentTextFragment(MixedCodeDocument doc)
+            :
+                base(doc, MixedCodeDocumentFragmentType.Text)
+        {
+        }
+
+        #endregion
+
+        #region Properties
+
+        /// <summary>
+        /// Gets the fragment text.
+        /// </summary>
+        public string Text
+        {
+            get { return FragmentText; }
+            set { FragmentText = value; }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/NameValuePair.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/NameValuePair.cs
@@ -1,35 +1,35 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    internal class NameValuePair
-    {
-        #region Fields
-
-        internal readonly string Name;
-        internal string Value;
-
-        #endregion
-
-        #region Constructors
-
-        internal NameValuePair()
-        {
-        }
-
-        internal NameValuePair(string name)
-            :
-                this()
-        {
-            Name = name;
-        }
-
-        internal NameValuePair(string name, string value)
-            :
-                this(name)
-        {
-            Value = value;
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    internal class NameValuePair
+    {
+        #region Fields
+
+        internal readonly string Name;
+        internal string Value;
+
+        #endregion
+
+        #region Constructors
+
+        internal NameValuePair()
+        {
+        }
+
+        internal NameValuePair(string name)
+            :
+                this()
+        {
+            Name = name;
+        }
+
+        internal NameValuePair(string name, string value)
+            :
+                this(name)
+        {
+            Value = value;
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/NameValuePairList.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/NameValuePairList.cs
@@ -1,101 +1,101 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-using System;
-using System.Collections;
-
-namespace HtmlAgilityPack
-{
-    internal class NameValuePairList
-    {
-        #region Fields
-
-        internal readonly string Text;
-        private ArrayList _allPairs;
-        private Hashtable _pairsWithName;
-
-        #endregion
-
-        #region Constructors
-
-        internal NameValuePairList() :
-            this(null)
-        {
-        }
-
-        internal NameValuePairList(string text)
-        {
-            Text = text;
-            _allPairs = new ArrayList();
-            _pairsWithName = new Hashtable();
-
-            Parse(text);
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal static string GetNameValuePairsValue(string text, string name)
-        {
-            NameValuePairList l = new NameValuePairList(text);
-            return l.GetNameValuePairValue(name);
-        }
-
-        internal ArrayList GetNameValuePairs(string name)
-        {
-            if (name == null)
-                return _allPairs;
-            return _pairsWithName[name] as ArrayList;
-        }
-
-        internal string GetNameValuePairValue(string name)
-        {
-            if (name == null)
-                throw new ArgumentNullException();
-            ArrayList al = GetNameValuePairs(name);
-            if (al == null)
-                return null;
-
-            // return first item
-            NameValuePair nvp = al[0] as NameValuePair;
-            return nvp != null ? nvp.Value : string.Empty;
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private void Parse(string text)
-        {
-            _allPairs.Clear();
-            _pairsWithName.Clear();
-            if (text == null)
-                return;
-
-            string[] p = text.Split(';');
-            foreach (string pv in p)
-            {
-                if (pv.Length == 0)
-                    continue;
-                string[] onep = pv.Split(new char[] {'='}, 2);
-                if (onep.Length==0)
-                    continue;
-                NameValuePair nvp = new NameValuePair(onep[0].Trim().ToLower());
-
-                nvp.Value = onep.Length < 2 ? "" : onep[1];
-
-                _allPairs.Add(nvp);
-
-                // index by name
-                ArrayList al = _pairsWithName[nvp.Name] as ArrayList;
-                if (al == null)
-                {
-                    al = new ArrayList();
-                    _pairsWithName[nvp.Name] = al;
-                }
-                al.Add(nvp);
-            }
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+using System;
+using System.Collections;
+
+namespace HtmlAgilityPack
+{
+    internal class NameValuePairList
+    {
+        #region Fields
+
+        internal readonly string Text;
+        private ArrayList _allPairs;
+        private Hashtable _pairsWithName;
+
+        #endregion
+
+        #region Constructors
+
+        internal NameValuePairList() :
+            this(null)
+        {
+        }
+
+        internal NameValuePairList(string text)
+        {
+            Text = text;
+            _allPairs = new ArrayList();
+            _pairsWithName = new Hashtable();
+
+            Parse(text);
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal static string GetNameValuePairsValue(string text, string name)
+        {
+            NameValuePairList l = new NameValuePairList(text);
+            return l.GetNameValuePairValue(name);
+        }
+
+        internal ArrayList GetNameValuePairs(string name)
+        {
+            if (name == null)
+                return _allPairs;
+            return _pairsWithName[name] as ArrayList;
+        }
+
+        internal string GetNameValuePairValue(string name)
+        {
+            if (name == null)
+                throw new ArgumentNullException();
+            ArrayList al = GetNameValuePairs(name);
+            if (al == null)
+                return null;
+
+            // return first item
+            NameValuePair nvp = al[0] as NameValuePair;
+            return nvp != null ? nvp.Value : string.Empty;
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private void Parse(string text)
+        {
+            _allPairs.Clear();
+            _pairsWithName.Clear();
+            if (text == null)
+                return;
+
+            string[] p = text.Split(';');
+            foreach (string pv in p)
+            {
+                if (pv.Length == 0)
+                    continue;
+                string[] onep = pv.Split(new char[] {'='}, 2);
+                if (onep.Length==0)
+                    continue;
+                NameValuePair nvp = new NameValuePair(onep[0].Trim().ToLower());
+
+                nvp.Value = onep.Length < 2 ? "" : onep[1];
+
+                _allPairs.Add(nvp);
+
+                // index by name
+                ArrayList al = _pairsWithName[nvp.Name] as ArrayList;
+                if (al == null)
+                {
+                    al = new ArrayList();
+                    _pairsWithName[nvp.Name] = al;
+                }
+                al.Add(nvp);
+            }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/HtmlAgilityPack/crc32.cs
+++ mono-4.6.2.7+dfsg/docs/HtmlAgilityPack/crc32.cs
@@ -1,156 +1,156 @@
-// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
-namespace HtmlAgilityPack
-{
-    /// <summary>
-    /// A utility class to compute CRC32.
-    /// </summary>
-    public class Crc32
-    {
-        #region Fields
-
-        private uint _crc32;
-
-        #endregion
-
-        #region Static Members
-
-        private static uint[] crc_32_tab = // CRC polynomial 0xedb88320 
-            {
-                0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
-                0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
-                0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
-                0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-                0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
-                0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
-                0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
-                0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-                0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
-                0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-                0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
-                0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-                0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
-                0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
-                0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
-                0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-                0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
-                0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
-                0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
-                0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-                0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
-                0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
-                0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
-                0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-                0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
-                0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
-                0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
-                0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-                0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
-                0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-                0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
-                0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-                0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
-                0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
-                0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
-                0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-                0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
-                0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
-                0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
-                0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-                0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
-                0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
-                0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
-            };
-
-        #endregion
-
-        #region Properties
-
-        internal uint CheckSum
-        {
-            get { return _crc32; }
-            set { _crc32 = value; }
-        }
-
-        #endregion
-
-        #region Public Methods
-
-        /// <summary>
-        /// Compute a checksum for a given array of bytes.
-        /// </summary>
-        /// <param name="bytes">The array of bytes to compute the checksum for.</param>
-        /// <returns>The computed checksum.</returns>
-        public static uint CRC32Bytes(byte[] bytes)
-        {
-            uint oldcrc32;
-            oldcrc32 = 0xFFFFFFFF;
-            int len = bytes.Length;
-
-            for (int i = 0; len > 0; i++)
-            {
-                --len;
-                oldcrc32 = UPDC32(bytes[len], oldcrc32);
-            }
-            return ~oldcrc32;
-        }
-
-        /// <summary>
-        /// Compute a checksum for a given string.
-        /// </summary>
-        /// <param name="text">The string to compute the checksum for.</param>
-        /// <returns>The computed checksum.</returns>
-        public static uint CRC32String(string text)
-        {
-            uint oldcrc32;
-            oldcrc32 = 0xFFFFFFFF;
-            int len = text.Length;
-            ushort uCharVal;
-            byte lowByte, hiByte;
-
-            for (int i = 0; len > 0; i++)
-            {
-                --len;
-                uCharVal = text[len];
-                unchecked
-                {
-                    lowByte = (byte) (uCharVal & 0x00ff);
-                    hiByte = (byte) (uCharVal >> 8);
-                }
-                oldcrc32 = UPDC32(hiByte, oldcrc32);
-                oldcrc32 = UPDC32(lowByte, oldcrc32);
-            }
-
-            return ~oldcrc32;
-        }
-
-        #endregion
-
-        #region Internal Methods
-
-        internal uint AddToCRC32(int c)
-        {
-            return AddToCRC32((ushort) c);
-        }
-
-        internal uint AddToCRC32(ushort c)
-        {
-            byte lowByte, hiByte;
-            lowByte = (byte) (c & 0x00ff);
-            hiByte = (byte) (c >> 8);
-            _crc32 = UPDC32(hiByte, _crc32);
-            _crc32 = UPDC32(lowByte, _crc32);
-            return ~_crc32;
-        }
-
-        #endregion
-
-        #region Private Methods
-
-        private static uint UPDC32(byte octet, uint crc)
-        {
-            return (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8));
-        }
-
-        #endregion
-    }
+// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com>
+namespace HtmlAgilityPack
+{
+    /// <summary>
+    /// A utility class to compute CRC32.
+    /// </summary>
+    public class Crc32
+    {
+        #region Fields
+
+        private uint _crc32;
+
+        #endregion
+
+        #region Static Members
+
+        private static uint[] crc_32_tab = // CRC polynomial 0xedb88320 
+            {
+                0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
+                0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+                0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
+                0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+                0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+                0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+                0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
+                0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+                0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
+                0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+                0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
+                0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+                0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
+                0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+                0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+                0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+                0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
+                0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+                0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
+                0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+                0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
+                0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+                0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
+                0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+                0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+                0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+                0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
+                0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+                0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
+                0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+                0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
+                0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+                0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
+                0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+                0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+                0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+                0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
+                0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+                0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
+                0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+                0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
+                0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+                0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
+            };
+
+        #endregion
+
+        #region Properties
+
+        internal uint CheckSum
+        {
+            get { return _crc32; }
+            set { _crc32 = value; }
+        }
+
+        #endregion
+
+        #region Public Methods
+
+        /// <summary>
+        /// Compute a checksum for a given array of bytes.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to compute the checksum for.</param>
+        /// <returns>The computed checksum.</returns>
+        public static uint CRC32Bytes(byte[] bytes)
+        {
+            uint oldcrc32;
+            oldcrc32 = 0xFFFFFFFF;
+            int len = bytes.Length;
+
+            for (int i = 0; len > 0; i++)
+            {
+                --len;
+                oldcrc32 = UPDC32(bytes[len], oldcrc32);
+            }
+            return ~oldcrc32;
+        }
+
+        /// <summary>
+        /// Compute a checksum for a given string.
+        /// </summary>
+        /// <param name="text">The string to compute the checksum for.</param>
+        /// <returns>The computed checksum.</returns>
+        public static uint CRC32String(string text)
+        {
+            uint oldcrc32;
+            oldcrc32 = 0xFFFFFFFF;
+            int len = text.Length;
+            ushort uCharVal;
+            byte lowByte, hiByte;
+
+            for (int i = 0; len > 0; i++)
+            {
+                --len;
+                uCharVal = text[len];
+                unchecked
+                {
+                    lowByte = (byte) (uCharVal & 0x00ff);
+                    hiByte = (byte) (uCharVal >> 8);
+                }
+                oldcrc32 = UPDC32(hiByte, oldcrc32);
+                oldcrc32 = UPDC32(lowByte, oldcrc32);
+            }
+
+            return ~oldcrc32;
+        }
+
+        #endregion
+
+        #region Internal Methods
+
+        internal uint AddToCRC32(int c)
+        {
+            return AddToCRC32((ushort) c);
+        }
+
+        internal uint AddToCRC32(ushort c)
+        {
+            byte lowByte, hiByte;
+            lowByte = (byte) (c & 0x00ff);
+            hiByte = (byte) (c >> 8);
+            _crc32 = UPDC32(hiByte, _crc32);
+            _crc32 = UPDC32(lowByte, _crc32);
+            return ~_crc32;
+        }
+
+        #endregion
+
+        #region Private Methods
+
+        private static uint UPDC32(byte octet, uint crc)
+        {
+            return (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8));
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-assembly.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-assembly.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-assembly.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-class.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-class.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-class.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-counters.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-counters.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-counters.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-debug.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-debug.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-debug.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-domains.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-domains.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-domains.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-dynamic-codegen.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-dynamic-codegen.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-dynamic-codegen.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-embedding.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-embedding.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-embedding.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-exc.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-exc.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-exc.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-gc.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-gc.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-gc.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-gchandle.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-gchandle.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-gchandle.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-image.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-image.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-image.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-internal.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-internal.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-internal.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-jit.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-jit.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-jit.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-jitinternal.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-jitinternal.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-jitinternal.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-metadata.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-metadata.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-metadata.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-methods.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-methods.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-methods.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-object.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-object.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-object.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-profiler.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-profiler.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-profiler.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-reflection.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-reflection.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-reflection.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-security.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-security.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-security.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-string.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-string.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-string.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-threads.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-threads.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-threads.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-type.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-type.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-type.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-types.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-types.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-types.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-unsorted.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-unsorted.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-unsorted.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-utils.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-utils.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-utils.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-vm.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-vm.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-vm.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/docs/deploy/mono-api-wapi.html
+++ mono-4.6.2.7+dfsg/docs/deploy/mono-api-wapi.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>mono-api-wapi.html</title>
-    <style type="text/css">
+    <style type="text/css">
     .mapi-docs {
 	line-height: 1.5;
 	padding-left: 2em;
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Build/Newtonsoft.Json.nuspec
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Build/Newtonsoft.Json.nuspec
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
-  <metadata>
-    <id>Newtonsoft.Json</id>
-    <version>4.5.1</version>
-    <title>Json.NET</title>
-    <description>Json.NET is a popular high-performance JSON framework for .NET</description>
-    <authors>James Newton-King</authors>
-    <language>en-US</language>
-    <projectUrl>http://james.newtonking.com/projects/json-net.aspx</projectUrl>
-    <licenseUrl>http://json.codeplex.com/license</licenseUrl>
-    <tags>json</tags>
-  </metadata>
+<?xml version="1.0" encoding="utf-8"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
+  <metadata>
+    <id>Newtonsoft.Json</id>
+    <version>4.5.1</version>
+    <title>Json.NET</title>
+    <description>Json.NET is a popular high-performance JSON framework for .NET</description>
+    <authors>James Newton-King</authors>
+    <language>en-US</language>
+    <projectUrl>http://james.newtonking.com/projects/json-net.aspx</projectUrl>
+    <licenseUrl>http://json.codeplex.com/license</licenseUrl>
+    <tags>json</tags>
+  </metadata>
 </package>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Build/build.ps1
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Build/build.ps1
@@ -1,200 +1,200 @@
-﻿properties { 
-  $zipFileName = "Json45r1.zip"
-  $majorVersion = "4.5"
-  $majorWithReleaseVersion = "4.5.1"
-  $version = GetVersion $majorWithReleaseVersion
-  $signAssemblies = $false
-  $signKeyPath = "D:\Development\Releases\newtonsoft.snk"
-  $buildDocumentation = $false
-  $buildNuGet = $false
-  
-  $baseDir  = resolve-path ..
-  $buildDir = "$baseDir\Build"
-  $sourceDir = "$baseDir\Src"
-  $toolsDir = "$baseDir\Tools"
-  $docDir = "$baseDir\Doc"
-  $releaseDir = "$baseDir\Release"
-  $workingDir = "$baseDir\Working"
-  $builds = @(
-    @{Name = "Newtonsoft.Json"; TestsName = "Newtonsoft.Json.Tests"; Constants=""; FinalDir="Net40"; NuGetDir = "net40"; Framework="net-4.0"; Sign=$true},
-    @{Name = "Newtonsoft.Json.Metro"; TestsName = $null; Constants="NETFX_CORE"; FinalDir="Metro"; NuGetDir = "winrt45"; Framework="net-4.5"; Sign=$true},
-    
-    # unsigned SL/WP
-    @{Name = "Newtonsoft.Json.WindowsPhone"; TestsName = $null; Constants="SILVERLIGHT;WINDOWS_PHONE"; FinalDir="WindowsPhone"; NuGetDir = "sl3-wp,sl4-windowsphone71"; Framework="net-4.0"; Sign=$false},
-    @{Name = "Newtonsoft.Json.Silverlight"; TestsName = "Newtonsoft.Json.Tests.Silverlight"; Constants="SILVERLIGHT"; FinalDir="Silverlight"; NuGetDir = "sl4"; Framework="net-4.0"; Sign=$false},
-    # signed SL/WP
-    @{Name = "Newtonsoft.Json.WindowsPhone"; TestsName = $null; Constants="SILVERLIGHT;WINDOWS_PHONE"; FinalDir="WindowsPhone\Signed"; NuGetDir = $null; Framework="net-4.0"; Sign=$true},
-    @{Name = "Newtonsoft.Json.Silverlight"; TestsName = "Newtonsoft.Json.Tests.Silverlight"; Constants="SILVERLIGHT"; FinalDir="Silverlight\Signed"; NuGetDir = $null; Framework="net-4.0"; Sign=$true},
-    
-    @{Name = "Newtonsoft.Json.Net35"; TestsName = "Newtonsoft.Json.Tests.Net35"; Constants="NET35"; FinalDir="Net35"; NuGetDir = "net35"; Framework="net-2.0"; Sign=$true},
-    @{Name = "Newtonsoft.Json.Net20"; TestsName = "Newtonsoft.Json.Tests.Net20"; Constants="NET20"; FinalDir="Net20"; NuGetDir = "net20"; Framework="net-2.0"; Sign=$true}
-  )
-}
-
-$framework = '4.0x86'
-
-task default -depends Test
-
-# Ensure a clean working directory
-task Clean {
-  Set-Location $baseDir
-  
-  if (Test-Path -path $workingDir)
-  {
-    Write-Output "Deleting Working Directory"
-    
-    del $workingDir -Recurse -Force
-  }
-  
-  New-Item -Path $workingDir -ItemType Directory
-}
-
-# Build each solution, optionally signed
-task Build -depends Clean { 
-  Write-Host -ForegroundColor Green "Updating assembly version"
-  Write-Host
-  Update-AssemblyInfoFiles $sourceDir ($majorVersion + '.0.0') $version
-
-  foreach ($build in $builds)
-  {
-    $name = $build.Name
-    $finalDir = $build.FinalDir
-    $sign = ($build.Sign -and $signAssemblies)
-
-    Write-Host -ForegroundColor Green "Building " $name
-    Write-Host -ForegroundColor Green "Signed " $sign
-    Write-Host
-    exec { msbuild "/t:Clean;Rebuild" /p:Configuration=Release "/p:Platform=Any CPU" /p:OutputPath=bin\Release\$finalDir\ /p:AssemblyOriginatorKeyFile=$signKeyPath "/p:SignAssembly=$sign" (GetConstants $build.Constants $sign) ".\Src\$name.sln" } "Error building $name"
-  }
-}
-
-# Optional build documentation, add files to final zip
-task Package -depends Build {
-  foreach ($build in $builds)
-  {
-    $name = $build.TestsName
-    $finalDir = $build.FinalDir
-    
-    robocopy "$sourceDir\Newtonsoft.Json\bin\Release\$finalDir" $workingDir\Package\Bin\$finalDir /NP /XO /XF *.pri
-  }
-  
-  if ($buildNuGet)
-  {
-    New-Item -Path $workingDir\NuGet -ItemType Directory
-    Copy-Item -Path "$buildDir\Newtonsoft.Json.nuspec" -Destination $workingDir\NuGet\Newtonsoft.Json.nuspec -recurse
-    
-    foreach ($build in $builds)
-    {
-      if ($build.NuGetDir -ne $null)
-      {
-        $name = $build.TestsName
-        $finalDir = $build.FinalDir
-        $frameworkDirs = $build.NuGetDir.Split(",")
-        
-        foreach ($frameworkDir in $frameworkDirs)
-        {
-          robocopy "$sourceDir\Newtonsoft.Json\bin\Release\$finalDir" $workingDir\NuGet\lib\$frameworkDir /NP /XO /XF *.pri
-        }
-      }
-    }
-  
-    exec { .\Tools\NuGet\NuGet.exe pack $workingDir\NuGet\Newtonsoft.Json.nuspec }
-    move -Path .\*.nupkg -Destination $workingDir\NuGet
-  }
-  
-  if ($buildDocumentation)
-  {
-    $mainBuild = $builds | where { $_.Name -eq "Newtonsoft.Json" } | select -first 1
-    $mainBuildFinalDir = $mainBuild.FinalDir
-    $documentationSourcePath = "$workingDir\Package\Bin\$mainBuildFinalDir"
-    Write-Host -ForegroundColor Green "Building documentation from $documentationSourcePath"
-
-    # Sandcastle has issues when compiling with .NET 4 MSBuild - http://shfb.codeplex.com/Thread/View.aspx?ThreadId=50652
-    exec { msbuild "/t:Clean;Rebuild" /p:Configuration=Release "/p:DocumentationSourcePath=$documentationSourcePath" $docDir\doc.shfbproj } "Error building documentation. Check that you have Sandcastle, Sandcastle Help File Builder and HTML Help Workshop installed."
-    
-    move -Path $workingDir\Documentation\Documentation.chm -Destination $workingDir\Package\Documentation.chm
-    move -Path $workingDir\Documentation\LastBuild.log -Destination $workingDir\Documentation.log
-  }
-  
-  Copy-Item -Path $docDir\readme.txt -Destination $workingDir\Package\
-  Copy-Item -Path $docDir\versions.txt -Destination $workingDir\Package\Bin\
-
-  robocopy $sourceDir $workingDir\Package\Source\Src /MIR /NP /XD .svn bin obj TestResults AppPackages /XF *.suo *.user
-  robocopy $buildDir $workingDir\Package\Source\Build /MIR /NP /XD .svn
-  robocopy $docDir $workingDir\Package\Source\Doc /MIR /NP /XD .svn
-  robocopy $toolsDir $workingDir\Package\Source\Tools /MIR /NP /XD .svn
-  
-  exec { .\Tools\7-zip\7za.exe a -tzip $workingDir\$zipFileName $workingDir\Package\* } "Error zipping"
-}
-
-# Unzip package to a location
-task Deploy -depends Package {
-  exec { .\Tools\7-zip\7za.exe x -y "-o$workingDir\Deployed" $workingDir\$zipFileName } "Error unzipping"
-}
-
-# Run tests on deployed files
-task Test -depends Deploy {
-  foreach ($build in $builds)
-  {
-    $name = $build.TestsName
-    if ($name -ne $null)
-    {
-        $finalDir = $build.FinalDir
-        $framework = $build.Framework
-        
-        Write-Host -ForegroundColor Green "Copying test assembly $name to deployed directory"
-        Write-Host
-        robocopy ".\Src\Newtonsoft.Json.Tests\bin\Release\$finalDir" $workingDir\Deployed\Bin\$finalDir /NP /XO /XF LinqBridge.dll
-        
-        Copy-Item -Path ".\Src\Newtonsoft.Json.Tests\bin\Release\$finalDir\Newtonsoft.Json.Tests.dll" -Destination $workingDir\Deployed\Bin\$finalDir\
-
-        Write-Host -ForegroundColor Green "Running tests " $name
-        Write-Host
-        exec { .\Tools\NUnit\nunit-console.exe "$workingDir\Deployed\Bin\$finalDir\Newtonsoft.Json.Tests.dll" /framework=$framework /xml:$workingDir\$name.xml } "Error running $name tests"
-    }
-  }
-}
-
-function GetConstants($constants, $includeSigned)
-{
-  $signed = switch($includeSigned) { $true { ";SIGNED" } default { "" } }
-
-  return "/p:DefineConstants=`"TRACE;$constants$signed`""
-}
-
-function GetVersion($majorVersion)
-{
-    $now = [DateTime]::Now
-    
-    $year = $now.Year - 2000
-    $month = $now.Month
-    $totalMonthsSince2000 = ($year * 12) + $month
-    $day = $now.Day
-    $minor = "{0}{1:00}" -f $totalMonthsSince2000, $day
-    
-    $hour = $now.Hour
-    $minute = $now.Minute
-    $revision = "{0:00}{1:00}" -f $hour, $minute
-    
-    return $majorVersion + "." + $minor
-}
-
-function Update-AssemblyInfoFiles ([string] $sourceDir, [string] $assemblyVersionNumber, [string] $fileVersionNumber)
-{
-    $assemblyVersionPattern = 'AssemblyVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)'
-    $fileVersionPattern = 'AssemblyFileVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)'
-    $assemblyVersion = 'AssemblyVersion("' + $assemblyVersionNumber + '")';
-    $fileVersion = 'AssemblyFileVersion("' + $fileVersionNumber + '")';
-    
-    Get-ChildItem -Path $sourceDir -r -filter AssemblyInfo.cs | ForEach-Object {
-        
-        $filename = $_.Directory.ToString() + '\' + $_.Name
-        Write-Host $filename
-        $filename + ' -> ' + $version
-    
-        (Get-Content $filename) | ForEach-Object {
-            % {$_ -replace $assemblyVersionPattern, $assemblyVersion } |
-            % {$_ -replace $fileVersionPattern, $fileVersion }
-        } | Set-Content $filename
-    }
+﻿properties { 
+  $zipFileName = "Json45r1.zip"
+  $majorVersion = "4.5"
+  $majorWithReleaseVersion = "4.5.1"
+  $version = GetVersion $majorWithReleaseVersion
+  $signAssemblies = $false
+  $signKeyPath = "D:\Development\Releases\newtonsoft.snk"
+  $buildDocumentation = $false
+  $buildNuGet = $false
+  
+  $baseDir  = resolve-path ..
+  $buildDir = "$baseDir\Build"
+  $sourceDir = "$baseDir\Src"
+  $toolsDir = "$baseDir\Tools"
+  $docDir = "$baseDir\Doc"
+  $releaseDir = "$baseDir\Release"
+  $workingDir = "$baseDir\Working"
+  $builds = @(
+    @{Name = "Newtonsoft.Json"; TestsName = "Newtonsoft.Json.Tests"; Constants=""; FinalDir="Net40"; NuGetDir = "net40"; Framework="net-4.0"; Sign=$true},
+    @{Name = "Newtonsoft.Json.Metro"; TestsName = $null; Constants="NETFX_CORE"; FinalDir="Metro"; NuGetDir = "winrt45"; Framework="net-4.5"; Sign=$true},
+    
+    # unsigned SL/WP
+    @{Name = "Newtonsoft.Json.WindowsPhone"; TestsName = $null; Constants="SILVERLIGHT;WINDOWS_PHONE"; FinalDir="WindowsPhone"; NuGetDir = "sl3-wp,sl4-windowsphone71"; Framework="net-4.0"; Sign=$false},
+    @{Name = "Newtonsoft.Json.Silverlight"; TestsName = "Newtonsoft.Json.Tests.Silverlight"; Constants="SILVERLIGHT"; FinalDir="Silverlight"; NuGetDir = "sl4"; Framework="net-4.0"; Sign=$false},
+    # signed SL/WP
+    @{Name = "Newtonsoft.Json.WindowsPhone"; TestsName = $null; Constants="SILVERLIGHT;WINDOWS_PHONE"; FinalDir="WindowsPhone\Signed"; NuGetDir = $null; Framework="net-4.0"; Sign=$true},
+    @{Name = "Newtonsoft.Json.Silverlight"; TestsName = "Newtonsoft.Json.Tests.Silverlight"; Constants="SILVERLIGHT"; FinalDir="Silverlight\Signed"; NuGetDir = $null; Framework="net-4.0"; Sign=$true},
+    
+    @{Name = "Newtonsoft.Json.Net35"; TestsName = "Newtonsoft.Json.Tests.Net35"; Constants="NET35"; FinalDir="Net35"; NuGetDir = "net35"; Framework="net-2.0"; Sign=$true},
+    @{Name = "Newtonsoft.Json.Net20"; TestsName = "Newtonsoft.Json.Tests.Net20"; Constants="NET20"; FinalDir="Net20"; NuGetDir = "net20"; Framework="net-2.0"; Sign=$true}
+  )
+}
+
+$framework = '4.0x86'
+
+task default -depends Test
+
+# Ensure a clean working directory
+task Clean {
+  Set-Location $baseDir
+  
+  if (Test-Path -path $workingDir)
+  {
+    Write-Output "Deleting Working Directory"
+    
+    del $workingDir -Recurse -Force
+  }
+  
+  New-Item -Path $workingDir -ItemType Directory
+}
+
+# Build each solution, optionally signed
+task Build -depends Clean { 
+  Write-Host -ForegroundColor Green "Updating assembly version"
+  Write-Host
+  Update-AssemblyInfoFiles $sourceDir ($majorVersion + '.0.0') $version
+
+  foreach ($build in $builds)
+  {
+    $name = $build.Name
+    $finalDir = $build.FinalDir
+    $sign = ($build.Sign -and $signAssemblies)
+
+    Write-Host -ForegroundColor Green "Building " $name
+    Write-Host -ForegroundColor Green "Signed " $sign
+    Write-Host
+    exec { msbuild "/t:Clean;Rebuild" /p:Configuration=Release "/p:Platform=Any CPU" /p:OutputPath=bin\Release\$finalDir\ /p:AssemblyOriginatorKeyFile=$signKeyPath "/p:SignAssembly=$sign" (GetConstants $build.Constants $sign) ".\Src\$name.sln" } "Error building $name"
+  }
+}
+
+# Optional build documentation, add files to final zip
+task Package -depends Build {
+  foreach ($build in $builds)
+  {
+    $name = $build.TestsName
+    $finalDir = $build.FinalDir
+    
+    robocopy "$sourceDir\Newtonsoft.Json\bin\Release\$finalDir" $workingDir\Package\Bin\$finalDir /NP /XO /XF *.pri
+  }
+  
+  if ($buildNuGet)
+  {
+    New-Item -Path $workingDir\NuGet -ItemType Directory
+    Copy-Item -Path "$buildDir\Newtonsoft.Json.nuspec" -Destination $workingDir\NuGet\Newtonsoft.Json.nuspec -recurse
+    
+    foreach ($build in $builds)
+    {
+      if ($build.NuGetDir -ne $null)
+      {
+        $name = $build.TestsName
+        $finalDir = $build.FinalDir
+        $frameworkDirs = $build.NuGetDir.Split(",")
+        
+        foreach ($frameworkDir in $frameworkDirs)
+        {
+          robocopy "$sourceDir\Newtonsoft.Json\bin\Release\$finalDir" $workingDir\NuGet\lib\$frameworkDir /NP /XO /XF *.pri
+        }
+      }
+    }
+  
+    exec { .\Tools\NuGet\NuGet.exe pack $workingDir\NuGet\Newtonsoft.Json.nuspec }
+    move -Path .\*.nupkg -Destination $workingDir\NuGet
+  }
+  
+  if ($buildDocumentation)
+  {
+    $mainBuild = $builds | where { $_.Name -eq "Newtonsoft.Json" } | select -first 1
+    $mainBuildFinalDir = $mainBuild.FinalDir
+    $documentationSourcePath = "$workingDir\Package\Bin\$mainBuildFinalDir"
+    Write-Host -ForegroundColor Green "Building documentation from $documentationSourcePath"
+
+    # Sandcastle has issues when compiling with .NET 4 MSBuild - http://shfb.codeplex.com/Thread/View.aspx?ThreadId=50652
+    exec { msbuild "/t:Clean;Rebuild" /p:Configuration=Release "/p:DocumentationSourcePath=$documentationSourcePath" $docDir\doc.shfbproj } "Error building documentation. Check that you have Sandcastle, Sandcastle Help File Builder and HTML Help Workshop installed."
+    
+    move -Path $workingDir\Documentation\Documentation.chm -Destination $workingDir\Package\Documentation.chm
+    move -Path $workingDir\Documentation\LastBuild.log -Destination $workingDir\Documentation.log
+  }
+  
+  Copy-Item -Path $docDir\readme.txt -Destination $workingDir\Package\
+  Copy-Item -Path $docDir\versions.txt -Destination $workingDir\Package\Bin\
+
+  robocopy $sourceDir $workingDir\Package\Source\Src /MIR /NP /XD .svn bin obj TestResults AppPackages /XF *.suo *.user
+  robocopy $buildDir $workingDir\Package\Source\Build /MIR /NP /XD .svn
+  robocopy $docDir $workingDir\Package\Source\Doc /MIR /NP /XD .svn
+  robocopy $toolsDir $workingDir\Package\Source\Tools /MIR /NP /XD .svn
+  
+  exec { .\Tools\7-zip\7za.exe a -tzip $workingDir\$zipFileName $workingDir\Package\* } "Error zipping"
+}
+
+# Unzip package to a location
+task Deploy -depends Package {
+  exec { .\Tools\7-zip\7za.exe x -y "-o$workingDir\Deployed" $workingDir\$zipFileName } "Error unzipping"
+}
+
+# Run tests on deployed files
+task Test -depends Deploy {
+  foreach ($build in $builds)
+  {
+    $name = $build.TestsName
+    if ($name -ne $null)
+    {
+        $finalDir = $build.FinalDir
+        $framework = $build.Framework
+        
+        Write-Host -ForegroundColor Green "Copying test assembly $name to deployed directory"
+        Write-Host
+        robocopy ".\Src\Newtonsoft.Json.Tests\bin\Release\$finalDir" $workingDir\Deployed\Bin\$finalDir /NP /XO /XF LinqBridge.dll
+        
+        Copy-Item -Path ".\Src\Newtonsoft.Json.Tests\bin\Release\$finalDir\Newtonsoft.Json.Tests.dll" -Destination $workingDir\Deployed\Bin\$finalDir\
+
+        Write-Host -ForegroundColor Green "Running tests " $name
+        Write-Host
+        exec { .\Tools\NUnit\nunit-console.exe "$workingDir\Deployed\Bin\$finalDir\Newtonsoft.Json.Tests.dll" /framework=$framework /xml:$workingDir\$name.xml } "Error running $name tests"
+    }
+  }
+}
+
+function GetConstants($constants, $includeSigned)
+{
+  $signed = switch($includeSigned) { $true { ";SIGNED" } default { "" } }
+
+  return "/p:DefineConstants=`"TRACE;$constants$signed`""
+}
+
+function GetVersion($majorVersion)
+{
+    $now = [DateTime]::Now
+    
+    $year = $now.Year - 2000
+    $month = $now.Month
+    $totalMonthsSince2000 = ($year * 12) + $month
+    $day = $now.Day
+    $minor = "{0}{1:00}" -f $totalMonthsSince2000, $day
+    
+    $hour = $now.Hour
+    $minute = $now.Minute
+    $revision = "{0:00}{1:00}" -f $hour, $minute
+    
+    return $majorVersion + "." + $minor
+}
+
+function Update-AssemblyInfoFiles ([string] $sourceDir, [string] $assemblyVersionNumber, [string] $fileVersionNumber)
+{
+    $assemblyVersionPattern = 'AssemblyVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)'
+    $fileVersionPattern = 'AssemblyFileVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)'
+    $assemblyVersion = 'AssemblyVersion("' + $assemblyVersionNumber + '")';
+    $fileVersion = 'AssemblyFileVersion("' + $fileVersionNumber + '")';
+    
+    Get-ChildItem -Path $sourceDir -r -filter AssemblyInfo.cs | ForEach-Object {
+        
+        $filename = $_.Directory.ToString() + '\' + $_.Name
+        Write-Host $filename
+        $filename + ' -> ' + $version
+    
+        (Get-Content $filename) | ForEach-Object {
+            % {$_ -replace $assemblyVersionPattern, $assemblyVersion } |
+            % {$_ -replace $fileVersionPattern, $fileVersion }
+        } | Set-Content $filename
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Build/runbuild.cmd
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Build/runbuild.cmd
@@ -1,2 +1,2 @@
-powershell -Command "& {Import-Module ..\Tools\PSake\psake.psm1; Invoke-psake .\build.ps1 %*}"
+powershell -Command "& {Import-Module ..\Tools\PSake\psake.psm1; Invoke-psake .\build.ps1 %*}"
 pause
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Build/runbuild.ps1
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Build/runbuild.ps1
@@ -1,5 +1,5 @@
-﻿cls
-
-Import-Module '..\Tools\PSake\psake.psm1'
-Invoke-psake '.\build.ps1' Test -framework 3.5
+﻿cls
+
+Import-Module '..\Tools\PSake\psake.psm1'
+Invoke-psake '.\build.ps1' Test -framework 3.5
 Remove-Module psake
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/ContractResolver.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/ContractResolver.html
@@ -1,92 +1,92 @@
-<html>
-  
-  <head>
-    <title>Contract Resolver</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Contract Resolvers</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-
-	<p>The <a href="./html/T_Newtonsoft_Json_Serialization_IContractResolver.htm">IContractResolver</a> interface provides a way to customize how the JsonSerializer serializes and deserializes .NET objects to JSON.</p>
-	<p>Implementing the IContractResolver interface and then assigning an instance to a JsonSerializer lets you control 
-        whether the object is serialized as a JSON object or JSON array, what object members should be serialized, how they are serialized and what they are called.</p>
-	
-	<h4>DefaultContractResolver</h4>
-	<p>The <a href="./html/T_Newtonsoft_Json_Serialization_DefaultContractResolver.htm">DefaultContractResolver</a> is the default resolver used by the serializer. It provides many avenues of extensibility in the form of virtual methods that can be overriden.</p>
-	
-	<h4>CamelCasePropertyNamesContractResolver</h4>
-	<p><a href="./html/T_Newtonsoft_Json_Serialization_CamelCasePropertyNamesContractResolver.htm">CamelCasePropertyNamesContractResolver</a> inherits from DefaultContractResolver and simply overrides the JSON property name to be written in <a href="http://en.wikipedia.org/wiki/CamelCase" target="_blank">camelcase</a>.</p>
-
- <div class="overflowpanel">   <div class="code">     <div style="font-family: courier new; color: black; font-size: 10pt;">       <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Product</span> product = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Product</span></pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExpiryDate = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DateTime</span>(2010, 12, 20, 18, 1, 0, <span style="color: rgb(43, 145, 175);">DateTimeKind</span>.Utc),</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = <span style="color: rgb(163, 21, 21);">"Widget"</span>,</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Price = 9.99m,</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sizes = <span style="color: blue;">new</span>[] {<span style="color: rgb(163, 21, 21);">"Small"</span>, <span style="color: rgb(163, 21, 21);">"Medium"</span>, <span style="color: rgb(163, 21, 21);">"Large"</span>}</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</pre>
-
-      <pre style="margin: 0px;">&nbsp;</pre>
-
-      <pre style="margin: 0px;"><span style="color: blue;">string</span> json = </pre>
-
-      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; product,</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
-
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { ContractResolver = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">CamelCasePropertyNamesContractResolver</span>() }</pre>
-
-      <pre style="margin: 0px;">&nbsp; );</pre>
-
-      <pre style="margin: 0px;">&nbsp;</pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "name": "Widget",</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "expiryDate": "\/Date(1292868060000)\/",</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "price": 9.99,</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "sizes": [</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp;&nbsp; "Small",</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp;&nbsp; "Medium",</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp;&nbsp; "Large"</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; ]</span></pre>
-
-      <pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
-    </div>
-  </div>
-</div>
-
-
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Contract Resolver</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Contract Resolvers</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+
+	<p>The <a href="./html/T_Newtonsoft_Json_Serialization_IContractResolver.htm">IContractResolver</a> interface provides a way to customize how the JsonSerializer serializes and deserializes .NET objects to JSON.</p>
+	<p>Implementing the IContractResolver interface and then assigning an instance to a JsonSerializer lets you control 
+        whether the object is serialized as a JSON object or JSON array, what object members should be serialized, how they are serialized and what they are called.</p>
+	
+	<h4>DefaultContractResolver</h4>
+	<p>The <a href="./html/T_Newtonsoft_Json_Serialization_DefaultContractResolver.htm">DefaultContractResolver</a> is the default resolver used by the serializer. It provides many avenues of extensibility in the form of virtual methods that can be overriden.</p>
+	
+	<h4>CamelCasePropertyNamesContractResolver</h4>
+	<p><a href="./html/T_Newtonsoft_Json_Serialization_CamelCasePropertyNamesContractResolver.htm">CamelCasePropertyNamesContractResolver</a> inherits from DefaultContractResolver and simply overrides the JSON property name to be written in <a href="http://en.wikipedia.org/wiki/CamelCase" target="_blank">camelcase</a>.</p>
+
+ <div class="overflowpanel">   <div class="code">     <div style="font-family: courier new; color: black; font-size: 10pt;">       <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Product</span> product = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Product</span></pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExpiryDate = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DateTime</span>(2010, 12, 20, 18, 1, 0, <span style="color: rgb(43, 145, 175);">DateTimeKind</span>.Utc),</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = <span style="color: rgb(163, 21, 21);">"Widget"</span>,</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Price = 9.99m,</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sizes = <span style="color: blue;">new</span>[] {<span style="color: rgb(163, 21, 21);">"Small"</span>, <span style="color: rgb(163, 21, 21);">"Medium"</span>, <span style="color: rgb(163, 21, 21);">"Large"</span>}</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</pre>
+
+      <pre style="margin: 0px;">&nbsp;</pre>
+
+      <pre style="margin: 0px;"><span style="color: blue;">string</span> json = </pre>
+
+      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; product,</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
+
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { ContractResolver = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">CamelCasePropertyNamesContractResolver</span>() }</pre>
+
+      <pre style="margin: 0px;">&nbsp; );</pre>
+
+      <pre style="margin: 0px;">&nbsp;</pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "name": "Widget",</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "expiryDate": "\/Date(1292868060000)\/",</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "price": 9.99,</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; "sizes": [</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp;&nbsp; "Small",</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp;&nbsp; "Medium",</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp;&nbsp; "Large"</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp; ]</span></pre>
+
+      <pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
+    </div>
+  </div>
+</div>
+
+
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/ConvertingJSONandXML.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/ConvertingJSONandXML.html
@@ -1,146 +1,146 @@
-<html>
-  
-  <head>
-    <title>Converting between JSON and XML</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Converting between JSON and XML</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-        <p>Json.NET supports converting JSON to XML and vice versa using the 
-            <a href="./html/T_Newtonsoft_Json_Converters_XmlNodeConverter.htm">XmlNodeConverter</a>.</p>
-
-        <p>
-            Elements, attributes, text, comments, character data, processing instructions, 
-            namespaces and the XML declaration are all preserved when converting between the 
-            two. The only caveat is that it is possible to lose the order of differently 
-            named nodes at the same level when they are grouped together into an array.</p>
-        <h3>Conversion Rules</h3>
-        <ul>
-            <li>Elements remain unchanged. </li>
-            <li>Attributes are prefixed with an @ and should be at the start of the object. </li>
-            <li>Single child text nodes are a value directly against an element, otherwise they 
-                are accessed via #text. </li>
-            <li>The XML declaration and processing instructions are prefixed with ?. </li>
-            <li>Charater data, comments, whitespace and significate whitespace nodes are 
-                accessed via #cdata-section,&nbsp;#comment, #whitespace and #significate-whitespace 
-                respectively. </li>
-            <li>Multiple nodes with the same name at the same level are grouped together into an 
-                array. </li>
-            <li>Empty elements are null.</li>
-        </ul>
-
-<h3>SerializeXmlNode</h3>
-<p>The JsonConvert has two helper methods for converting between JSON and XML. The first is <a href="./html/M_Newtonsoft_Json_JsonConvert_SerializeXmlNode.htm">SerializeXmlNode</a>. This method takes an
-XmlNode and serializes it to JSON text.</p>
-<div class="overflowpanel">
-  <div class="code">
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">string</span> xml = <span style="color: #a31515;">@&quot;&lt;?xml version=&quot;&quot;1.0&quot;&quot; standalone=&quot;&quot;no&quot;&quot;?&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&lt;root&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;person id=&quot;&quot;1&quot;&quot;&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;name&gt;Alan&lt;/name&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;url&gt;http://www.google.com&lt;/url&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;/person&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;person id=&quot;&quot;2&quot;&quot;&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;name&gt;Louis&lt;/name&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;url&gt;http://www.yahoo.com&lt;/url&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;/person&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&lt;/root&gt;&quot;</span>;</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">XmlDocument</span> doc = <span style="color: blue;">new</span> <span style="color: #2b91af;">XmlDocument</span>();</pre>
-<pre style="margin: 0px;">doc.LoadXml(xml);</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">string</span> jsonText = <span style="color: #2b91af;">JsonConvert</span>.SerializeXmlNode(doc);</pre>
-<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &quot;?xml&quot;: {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &quot;@version&quot;: &quot;1.0&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &quot;@standalone&quot;: &quot;no&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &quot;root&quot;: {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &quot;person&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;@id&quot;: &quot;1&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;name&quot;: &quot;Alan&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;url&quot;: &quot;http://www.google.com&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;@id&quot;: &quot;2&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;name&quot;: &quot;Louis&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;url&quot;: &quot;http://www.yahoo.com&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
-</div>
-
-</div>
-  </div>
-
-<h3>DeserializeXmlNode</h3>
-
-<p>The second helper method on JsonConvert is <a href="./html/M_Newtonsoft_Json_JsonConvert_DeserializeXmlNode.htm">DeserializeXmlNode</a>. This method takes 
-    JSON text and deserializes it into a XmlNode.</p>
-        <p>Because valid XML must have one root element the JSON passed to 
-            DeserializeXmlNode should have one property in the root JSON object. If the root 
-            JSON object has multiple properties then the overload that also takes an element 
-            name should be used. A root element with that name will be inserted into the 
-            deserialized XmlNode.</p>
-
-<div class="overflowpanel">
-
-  <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@&quot;{</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;?xml&quot;&quot;: {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;@version&quot;&quot;: &quot;&quot;1.0&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;@standalone&quot;&quot;: &quot;&quot;no&quot;&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;root&quot;&quot;: {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;person&quot;&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;@id&quot;&quot;: &quot;&quot;1&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;name&quot;&quot;: &quot;&quot;Alan&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://www.google.com&quot;&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;@id&quot;&quot;: &quot;&quot;2&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;name&quot;&quot;: &quot;&quot;Louis&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://www.yahoo.com&quot;&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">}&quot;</span>;</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">XmlDocument</span> doc = (<span style="color: #2b91af;">XmlDocument</span>)<span style="color: #2b91af;">JsonConvert</span>.DeserializeXmlNode(json);</pre>
-<pre style="margin: 0px;"><span style="color: green;">// &lt;?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// &lt;root&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;person id=&quot;1&quot;&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;name&gt;Alan&lt;/name&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;url&gt;http://www.google.com&lt;/url&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;/person&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;person id=&quot;2&quot;&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;name&gt;Louis&lt;/name&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;url&gt;http://www.yahoo.com&lt;/url&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;/person&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// &lt;/root&gt;</span></pre>
-</div>
-
-
-  </div>
-</div>
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Converting between JSON and XML</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Converting between JSON and XML</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+        <p>Json.NET supports converting JSON to XML and vice versa using the 
+            <a href="./html/T_Newtonsoft_Json_Converters_XmlNodeConverter.htm">XmlNodeConverter</a>.</p>
+
+        <p>
+            Elements, attributes, text, comments, character data, processing instructions, 
+            namespaces and the XML declaration are all preserved when converting between the 
+            two. The only caveat is that it is possible to lose the order of differently 
+            named nodes at the same level when they are grouped together into an array.</p>
+        <h3>Conversion Rules</h3>
+        <ul>
+            <li>Elements remain unchanged. </li>
+            <li>Attributes are prefixed with an @ and should be at the start of the object. </li>
+            <li>Single child text nodes are a value directly against an element, otherwise they 
+                are accessed via #text. </li>
+            <li>The XML declaration and processing instructions are prefixed with ?. </li>
+            <li>Charater data, comments, whitespace and significate whitespace nodes are 
+                accessed via #cdata-section,&nbsp;#comment, #whitespace and #significate-whitespace 
+                respectively. </li>
+            <li>Multiple nodes with the same name at the same level are grouped together into an 
+                array. </li>
+            <li>Empty elements are null.</li>
+        </ul>
+
+<h3>SerializeXmlNode</h3>
+<p>The JsonConvert has two helper methods for converting between JSON and XML. The first is <a href="./html/M_Newtonsoft_Json_JsonConvert_SerializeXmlNode.htm">SerializeXmlNode</a>. This method takes an
+XmlNode and serializes it to JSON text.</p>
+<div class="overflowpanel">
+  <div class="code">
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">string</span> xml = <span style="color: #a31515;">@&quot;&lt;?xml version=&quot;&quot;1.0&quot;&quot; standalone=&quot;&quot;no&quot;&quot;?&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&lt;root&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;person id=&quot;&quot;1&quot;&quot;&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;name&gt;Alan&lt;/name&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;url&gt;http://www.google.com&lt;/url&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;/person&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;person id=&quot;&quot;2&quot;&quot;&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;name&gt;Louis&lt;/name&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;url&gt;http://www.yahoo.com&lt;/url&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &lt;/person&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&lt;/root&gt;&quot;</span>;</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">XmlDocument</span> doc = <span style="color: blue;">new</span> <span style="color: #2b91af;">XmlDocument</span>();</pre>
+<pre style="margin: 0px;">doc.LoadXml(xml);</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">string</span> jsonText = <span style="color: #2b91af;">JsonConvert</span>.SerializeXmlNode(doc);</pre>
+<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &quot;?xml&quot;: {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &quot;@version&quot;: &quot;1.0&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &quot;@standalone&quot;: &quot;no&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &quot;root&quot;: {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &quot;person&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;@id&quot;: &quot;1&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;name&quot;: &quot;Alan&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;url&quot;: &quot;http://www.google.com&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;@id&quot;: &quot;2&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;name&quot;: &quot;Louis&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &quot;url&quot;: &quot;http://www.yahoo.com&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
+</div>
+
+</div>
+  </div>
+
+<h3>DeserializeXmlNode</h3>
+
+<p>The second helper method on JsonConvert is <a href="./html/M_Newtonsoft_Json_JsonConvert_DeserializeXmlNode.htm">DeserializeXmlNode</a>. This method takes 
+    JSON text and deserializes it into a XmlNode.</p>
+        <p>Because valid XML must have one root element the JSON passed to 
+            DeserializeXmlNode should have one property in the root JSON object. If the root 
+            JSON object has multiple properties then the overload that also takes an element 
+            name should be used. A root element with that name will be inserted into the 
+            deserialized XmlNode.</p>
+
+<div class="overflowpanel">
+
+  <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@&quot;{</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;?xml&quot;&quot;: {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;@version&quot;&quot;: &quot;&quot;1.0&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;@standalone&quot;&quot;: &quot;&quot;no&quot;&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;root&quot;&quot;: {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;person&quot;&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;@id&quot;&quot;: &quot;&quot;1&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;name&quot;&quot;: &quot;&quot;Alan&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://www.google.com&quot;&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;@id&quot;&quot;: &quot;&quot;2&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;name&quot;&quot;: &quot;&quot;Louis&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://www.yahoo.com&quot;&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">}&quot;</span>;</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">XmlDocument</span> doc = (<span style="color: #2b91af;">XmlDocument</span>)<span style="color: #2b91af;">JsonConvert</span>.DeserializeXmlNode(json);</pre>
+<pre style="margin: 0px;"><span style="color: green;">// &lt;?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// &lt;root&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;person id=&quot;1&quot;&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;name&gt;Alan&lt;/name&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;url&gt;http://www.google.com&lt;/url&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;/person&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;person id=&quot;2&quot;&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;name&gt;Louis&lt;/name&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;url&gt;http://www.yahoo.com&lt;/url&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; &lt;/person&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// &lt;/root&gt;</span></pre>
+</div>
+
+
+  </div>
+</div>
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/CustomCreationConverter.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/CustomCreationConverter.html
@@ -1,27 +1,27 @@
-<html>
-  
-  <head>
-    <title>CustomCreationConverter</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">CustomCreationConverter</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>
-	The CustomCreationConverter is a JsonConverter that provides a way to customize how an object is created 
-        during JSON deserialization.
-	Once the object has been created it will then have values populated onto it by the serializer.
-	</p>
-
-<div class="overflowpanel"> <div class="code">
+<html>
+  
+  <head>
+    <title>CustomCreationConverter</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">CustomCreationConverter</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>
+	The CustomCreationConverter is a JsonConverter that provides a way to customize how an object is created 
+        during JSON deserialization.
+	Once the object has been created it will then have values populated onto it by the serializer.
+	</p>
+
+<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">interface</span> <span style="color: #2b91af;">IPerson</span></pre>
 <pre style="margin: 0px;">{</pre>
@@ -48,14 +48,14 @@
 <pre style="margin: 0px;">&nbsp; }</pre>
 <pre style="margin: 0px;">}</pre>
 </div>
-</div></div>
-
-<p>
-This is an extremely simple example. A more complicated scenario could involve an object factory or service locator 
-    which resolves the object at runtime.
-</p>
-
-<div class="overflowpanel"> <div class="code">
+</div></div>
+
+<p>
+This is an extremely simple example. A more complicated scenario could involve an object factory or service locator 
+    which resolves the object at runtime.
+</p>
+
+<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: green;">//[</span></pre>
 <pre style="margin: 0px;"><span style="color: green;">//&nbsp; {</span></pre>
@@ -89,11 +89,11 @@ This is an extremely simple example. A m
 <pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(employee.JobTitle);</pre>
 <pre style="margin: 0px;"><span style="color: green;">// Support</span></pre>
 </div>
-</div></div>
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+</div></div>
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/DatesInJSON.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/DatesInJSON.html
@@ -1,101 +1,101 @@
-<html>
-  
-  <head>
-    <title>Serializing Dates in JSON</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serializing Dates in JSON</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-        <p>DateTimes in JSON are hard.</p>
-        <p>
-            The problem comes from the <a href="http://www.ietf.org/rfc/rfc4627.txt" target="_blank">JSON spec</a> itself, there is no literal syntax for dates in JSON. The spec has objects, arrays, strings, integers and floats, but it defines no standard for what a date looks like.</p>
-<p>The default format used by <a href="http://james.newtonking.com/projects/json-net.aspx" target="_blank">Json.NET</a> 
-  is the ISO 8601 standard: 2012-03-19T07:22Z. You can read more about it <a href="http://en.wikipedia.org/wiki/ISO_8601" target="_blank">here</a>.</p>
-      <p>Prior to Json.NET 4.5 dates were written using the Microsoft format: 
-        &quot;\/Date(1198908717056)\/&quot;. If you want to use this format, or you want to 
-        maintain compatibility with Microsoft JSON serializers or older versions of 
-        Json.NET then change the DateFormatHandling setting to MicrosoftDateFormat.</p>
-
-<h3>DateTime JsonConverters</h3>
-<p>With no standard for dates in JSON, the number of possible different formats when interoping with other systems is endless. Fortunately Json.NET has a solution to deal with reading and writing custom dates: JsonConverters. A JsonConverter is used to override how a type is serialized.</p>
-
-<div class="overflowpanel">
-<div class="code">
-<div style="font-size: 10pt; color: black; font-family: courier new;">
-<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">LogEntry</span></pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Details { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> LogDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">}</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">[<span style="color: rgb(43, 145, 175);">Test</span>]</pre>
-
-<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">void</span> WriteJsonDates()</pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">LogEntry</span> entry = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">LogEntry</span></pre>
-<pre style="margin: 0px;">&nbsp; {</pre>
-
-<pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; LogDate = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DateTime</span>(2009, 2, 15, 0, 0, 0, <span style="color: rgb(43, 145, 175);">DateTimeKind</span>.Utc),</pre>
-<pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; Details = <span style="color: rgb(163, 21, 21);">"Application started."</span></pre>
-<pre style="margin: 0px;">&nbsp; };</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">string</span> defaultJson = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(entry);</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}</span></pre>
-<pre style="margin: 0px;"></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">string</span> javascriptJson = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(entry, <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JavaScriptDateTimeConverter</span>());</pre>
-
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Details":"Application started.","LogDate":new Date(1234656000000)}</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">string</span> isoJson = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(entry, <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">IsoDateTimeConverter</span>());</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}</span></pre>
-
-<pre style="margin: 0px;">}</pre>
-</div>
-</div>
-</div>
-<p>Simply pass the JsonConverter you wish to use to the Json.NET serializer.</p>
-<h4>JavaScriptDateTimeConverter</h4>
-<p>The JavaScriptDateTimeConverter class is one of the two DateTime JsonConverters that come with Json.NET. This converter serializes a DateTime as a <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date" target="_blank">JavaScript Date object</a>.</p>
-<div class="overflowpanel">
-<div class="code">
-<div style="font-size: 10pt; color: black; font-family: courier new;">
-<pre style="margin: 0px;">new Date(1234656000000)</pre>
-
-</div>
-</div>
-</div>
-<p>Technically this is invalid JSON according to the spec but all browsers, and some JSON frameworks including Json.NET, support it. </p>
-<h4>IsoDateTimeConverter</h4>
-<p>IsoDateTimeConverter seralizes a DateTime to an <a href="http://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a> formatted string. 
-  Note that since Json.NET 4.5 dates are written using the ISO 8601 format by 
-  default and using this converter is unnecessary.</p>
-<div class="overflowpanel">
-<div class="code">
-<div style="font-size: 10pt; color: black; font-family: courier new;">
-<pre style="margin: 0px;"><span style="color: rgb(163, 21, 21);">"2009-02-15T00:00:00Z"</span></pre>
-
-</div>
-</div>
-</div>
-<p>The IsoDateTimeConverter class has a property, DateTimeFormat, to further customize the formatted string.</p>
-<p>&nbsp;</p>
-<p>One final thing to note is all date values returned by Json.NET are in <a href="http://en.wikipedia.org/wiki/Utc" target="_blank">UTC time</a>.</p>
-
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Serializing Dates in JSON</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serializing Dates in JSON</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+        <p>DateTimes in JSON are hard.</p>
+        <p>
+            The problem comes from the <a href="http://www.ietf.org/rfc/rfc4627.txt" target="_blank">JSON spec</a> itself, there is no literal syntax for dates in JSON. The spec has objects, arrays, strings, integers and floats, but it defines no standard for what a date looks like.</p>
+<p>The default format used by <a href="http://james.newtonking.com/projects/json-net.aspx" target="_blank">Json.NET</a> 
+  is the ISO 8601 standard: 2012-03-19T07:22Z. You can read more about it <a href="http://en.wikipedia.org/wiki/ISO_8601" target="_blank">here</a>.</p>
+      <p>Prior to Json.NET 4.5 dates were written using the Microsoft format: 
+        &quot;\/Date(1198908717056)\/&quot;. If you want to use this format, or you want to 
+        maintain compatibility with Microsoft JSON serializers or older versions of 
+        Json.NET then change the DateFormatHandling setting to MicrosoftDateFormat.</p>
+
+<h3>DateTime JsonConverters</h3>
+<p>With no standard for dates in JSON, the number of possible different formats when interoping with other systems is endless. Fortunately Json.NET has a solution to deal with reading and writing custom dates: JsonConverters. A JsonConverter is used to override how a type is serialized.</p>
+
+<div class="overflowpanel">
+<div class="code">
+<div style="font-size: 10pt; color: black; font-family: courier new;">
+<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">LogEntry</span></pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Details { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> LogDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">}</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">[<span style="color: rgb(43, 145, 175);">Test</span>]</pre>
+
+<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">void</span> WriteJsonDates()</pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">LogEntry</span> entry = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">LogEntry</span></pre>
+<pre style="margin: 0px;">&nbsp; {</pre>
+
+<pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; LogDate = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DateTime</span>(2009, 2, 15, 0, 0, 0, <span style="color: rgb(43, 145, 175);">DateTimeKind</span>.Utc),</pre>
+<pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; Details = <span style="color: rgb(163, 21, 21);">"Application started."</span></pre>
+<pre style="margin: 0px;">&nbsp; };</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">string</span> defaultJson = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(entry);</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}</span></pre>
+<pre style="margin: 0px;"></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">string</span> javascriptJson = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(entry, <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JavaScriptDateTimeConverter</span>());</pre>
+
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Details":"Application started.","LogDate":new Date(1234656000000)}</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">string</span> isoJson = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(entry, <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">IsoDateTimeConverter</span>());</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}</span></pre>
+
+<pre style="margin: 0px;">}</pre>
+</div>
+</div>
+</div>
+<p>Simply pass the JsonConverter you wish to use to the Json.NET serializer.</p>
+<h4>JavaScriptDateTimeConverter</h4>
+<p>The JavaScriptDateTimeConverter class is one of the two DateTime JsonConverters that come with Json.NET. This converter serializes a DateTime as a <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date" target="_blank">JavaScript Date object</a>.</p>
+<div class="overflowpanel">
+<div class="code">
+<div style="font-size: 10pt; color: black; font-family: courier new;">
+<pre style="margin: 0px;">new Date(1234656000000)</pre>
+
+</div>
+</div>
+</div>
+<p>Technically this is invalid JSON according to the spec but all browsers, and some JSON frameworks including Json.NET, support it. </p>
+<h4>IsoDateTimeConverter</h4>
+<p>IsoDateTimeConverter seralizes a DateTime to an <a href="http://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a> formatted string. 
+  Note that since Json.NET 4.5 dates are written using the ISO 8601 format by 
+  default and using this converter is unnecessary.</p>
+<div class="overflowpanel">
+<div class="code">
+<div style="font-size: 10pt; color: black; font-family: courier new;">
+<pre style="margin: 0px;"><span style="color: rgb(163, 21, 21);">"2009-02-15T00:00:00Z"</span></pre>
+
+</div>
+</div>
+</div>
+<p>The IsoDateTimeConverter class has a property, DateTimeFormat, to further customize the formatted string.</p>
+<p>&nbsp;</p>
+<p>One final thing to note is all date values returned by Json.NET are in <a href="http://en.wikipedia.org/wiki/Utc" target="_blank">UTC time</a>.</p>
+
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/Introduction.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/Introduction.html
@@ -1,68 +1,68 @@
-<html>
-<head>
-    <title>Introduction</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-    <div id="control">
-        <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Introduction</span></div>
-    <div id="content">
-        <span style="color: DarkGray"></span>
-        <p>
-            Json.NET makes working with JSON formatted data in .NET
-            simple. Quickly read and write JSON using LINQ to JSON or serialize
-            your .NET objects with a single method call using the JsonSerializer.</p>
-        <h3>
-            Features</h3>
-        <ul>
-            <li>Flexible JSON serializer to convert .NET objects to JSON and back again</li>
-            <li>LINQ to JSON for reading and writing JSON</li>
-            <li>Writes indented, easy to read JSON</li>
-            <li>Convert JSON to and from XML</li>
-            <li>Supports Silverlight and the Compact Framework</li>
-        </ul>
-        <p>The JSON serializer is a good choice when the JSON you are reading or writing maps closely
-        to a .NET class. The serializer automatically reads and writes JSON for the class.</p>
-        <p class="MsoNormal">
-            For situations where you are only interested in getting values from JSON, don&#39;t 
-            have a class to serialize or deserialize to, or the JSON is radically different 
-            from your class and you need to manually read and write from your objects then 
-            LINQ to JSON is what you should use. LINQ to JSON allows you to easily read, 
-            create and modify JSON in .NET.</p>
-        <h3>
-            History</h3>
-        <p>
-            Json.NET grew out of projects I was working on in late 2005 involving JavaScript,
-            AJAX and .NET. At the time there were no libraries for working with JavaScript in
-            .NET so I began to grow my own.</p>
-        <p>
-            Starting out as a couple of static methods for escaping JavaScript strings, Json.NET
-            evolved as features were added. To add support for reading JSON a major refactor
-            was required and Json.NET will split into the three major classes it still uses
-            today, JsonReader, JsonWriter and JsonSerializer.
-        </p>
-        <p>
-            Json.NET was first released in June 2006. Since then Json.NET has been downloaded
-            thousands of times by developers and is used in a number of major projects open
-            source projects including <a href="http://www.castleproject.org/monorail/index.html" target="_blank">MonoRail</a>,
-            Castle Project's MVC web framework, and <a href="http://www.mono-project.com/" target="_blank">Mono</a>,
-            an open source implementation
-            of the .NET framework.</p>
-        <p>
-            <i>~ James Newton-King</i></p>
-        <h3>
-            Donate</h3>
-        <p>
-            Json.NET is a free open source project that I have developed in my personal time.</p>
-            <p>
-            I really appreciate your feedback and support for Json.NET and its future development.</p>
-        <p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=james%40newtonking%2ecom&item_name=Supporting%20Json%2eNET&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8" target="_blank">
-            <img src="donate.gif" alt="Donate" style="border-width:0;" />
-            </a></p>
-        <div id="footer">
-        </div>
-    </div>
-</body>
-</html>
+<html>
+<head>
+    <title>Introduction</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+    <div id="control">
+        <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Introduction</span></div>
+    <div id="content">
+        <span style="color: DarkGray"></span>
+        <p>
+            Json.NET makes working with JSON formatted data in .NET
+            simple. Quickly read and write JSON using LINQ to JSON or serialize
+            your .NET objects with a single method call using the JsonSerializer.</p>
+        <h3>
+            Features</h3>
+        <ul>
+            <li>Flexible JSON serializer to convert .NET objects to JSON and back again</li>
+            <li>LINQ to JSON for reading and writing JSON</li>
+            <li>Writes indented, easy to read JSON</li>
+            <li>Convert JSON to and from XML</li>
+            <li>Supports Silverlight and the Compact Framework</li>
+        </ul>
+        <p>The JSON serializer is a good choice when the JSON you are reading or writing maps closely
+        to a .NET class. The serializer automatically reads and writes JSON for the class.</p>
+        <p class="MsoNormal">
+            For situations where you are only interested in getting values from JSON, don&#39;t 
+            have a class to serialize or deserialize to, or the JSON is radically different 
+            from your class and you need to manually read and write from your objects then 
+            LINQ to JSON is what you should use. LINQ to JSON allows you to easily read, 
+            create and modify JSON in .NET.</p>
+        <h3>
+            History</h3>
+        <p>
+            Json.NET grew out of projects I was working on in late 2005 involving JavaScript,
+            AJAX and .NET. At the time there were no libraries for working with JavaScript in
+            .NET so I began to grow my own.</p>
+        <p>
+            Starting out as a couple of static methods for escaping JavaScript strings, Json.NET
+            evolved as features were added. To add support for reading JSON a major refactor
+            was required and Json.NET will split into the three major classes it still uses
+            today, JsonReader, JsonWriter and JsonSerializer.
+        </p>
+        <p>
+            Json.NET was first released in June 2006. Since then Json.NET has been downloaded
+            thousands of times by developers and is used in a number of major projects open
+            source projects including <a href="http://www.castleproject.org/monorail/index.html" target="_blank">MonoRail</a>,
+            Castle Project's MVC web framework, and <a href="http://www.mono-project.com/" target="_blank">Mono</a>,
+            an open source implementation
+            of the .NET framework.</p>
+        <p>
+            <i>~ James Newton-King</i></p>
+        <h3>
+            Donate</h3>
+        <p>
+            Json.NET is a free open source project that I have developed in my personal time.</p>
+            <p>
+            I really appreciate your feedback and support for Json.NET and its future development.</p>
+        <p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=james%40newtonking%2ecom&item_name=Supporting%20Json%2eNET&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8" target="_blank">
+            <img src="donate.gif" alt="Donate" style="border-width:0;" />
+            </a></p>
+        <div id="footer">
+        </div>
+    </div>
+</body>
+</html>
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/LINQtoJSON.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/LINQtoJSON.html
@@ -1,198 +1,198 @@
-<html>
-  
-  <head>
-    <title>LINQ to JSON</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">LINQ to JSON</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>LINQ to JSON is a programming API for working with JSON objects. The API has been designed with LINQ in mind to enable to quick querying and creation of JSON objects. LINQ to JSON sits under the <a href="./html/N_Newtonsoft_Json_Linq.htm">Newtonsoft.Json.Linq</a> namespace.</p>
-
-<h3>Creating JSON</h3>
-<p>There are a number of different options when it comes to creating JSON using LINQ to JSON. The first to create objects imperatively. You have total control but it is more verbose than other options.</p>
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">JArray</span> array = <span style="color: blue;">new</span> <span style="color: #2b91af;">JArray</span>();</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">JValue</span> text = <span style="color: blue;">new</span> <span style="color: #2b91af;">JValue</span>(<span style="color: #a31515;">"Manual text"</span>);</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">JValue</span> date = <span style="color: blue;">new</span> <span style="color: #2b91af;">JValue</span>(<span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2000, 5, 23));</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">array.Add(text);</pre>
-<pre style="margin: 0px;">array.Add(date);</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">string</span> json = array.ToString();</pre>
-<pre style="margin: 0px;"><span style="color: green;">// [</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "Manual text",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "\/Date(958996800000+1200)\/"</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// ]</span></pre>
-</div>
-
-</div></div>
-
-<p>Another option is to create JSON objects declaratively.</p>
-
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">List</span>&lt;<span style="color: #2b91af;">Post</span>&gt; posts = GetPosts();</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> rss =</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"channel"</span>,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"title"</span>, <span style="color: #a31515;">"James Newton-King"</span>),</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"link"</span>, <span style="color: #a31515;">"http://james.newtonking.com"</span>),</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"description"</span>, <span style="color: #a31515;">"James Newton-King's blog."</span>),</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"item"</span>,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JArray</span>(</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">from</span> p <span style="color: blue;">in</span> posts</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">orderby</span> p.Title</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"title"</span>, p.Title),</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"description"</span>, p.Description),</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"link"</span>, p.Link),</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"category"</span>,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JArray</span>(</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">from</span> c <span style="color: blue;">in</span> p.Categories</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">JValue</span>(c)))))))));</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(rss.ToString());</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "channel": {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "title": "James Newton-King",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "link": "http://james.newtonking.com",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "description": "James Newton-King's blog.",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "item": [</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "title": "Json.NET 1.3 + New license + Now on CodePlex",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "description": "Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "link": "http://james.newtonking.com/projects/json-net.aspx",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "category": [</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Json.NET",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "CodePlex"</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "title": "LINQ to JSON beta",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "description": "Annoucing LINQ to JSON",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "link": "http://james.newtonking.com/projects/json-net.aspx",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "category": [</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Json.NET",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "LINQ"</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
-</div>
-
-</div></div>
-
-<p>You can create a JSON object from a non-JSON type using the <a href="./html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm">FromObject</a> method.</p>
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: #2b91af;">JObject</span>.FromObject(<span style="color: blue;">new</span></pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; channel = <span style="color: blue;">new</span></pre>
-<pre style="margin: 0px;">&nbsp; {</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; title = <span style="color: #a31515;">"James Newton-King"</span>,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; link = <span style="color: #a31515;">"http://james.newtonking.com"</span>,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; description = <span style="color: #a31515;">"James Newton-King's blog."</span>,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; item =</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">from</span> p <span style="color: blue;">in</span> posts</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">orderby</span> p.Title</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span></pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; {</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title = p.Title,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = p.Description,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; link = p.Link,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; category = p.Categories</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; }</pre>
-<pre style="margin: 0px;">&nbsp; }</pre>
-<pre style="margin: 0px;">});</pre>
-</div>
-
-</div></div>
-
-<p>Finally JSON objects can be created from a string use the <a href="./html/M_Newtonsoft_Json_Linq_JObject_Parse.htm">Parse</a> method.</p>
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@"{</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; CPU: 'Intel',</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; Drives: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; 'DVD read/writer',</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; ""500 gigabyte hard drive""</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">}"</span>;</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: #2b91af;">JObject</span>.Parse(json);</pre>
-</div>
-
-</div></div>
-
-	<h3>Querying JSON</h3>
-
-
-	<p>The properties methods that are the most useful when querying JSON objects are 
-        the <a href="./html/Overload_Newtonsoft_Json_Linq_JToken_Children.htm">Children</a> 
-        method and the <a href="./html/P_Newtonsoft_Json_Linq_JToken_Item.htm">property index</a>.</p>
-	<p>Children returns all the children of that object. If it is a JObject it will 
-        return a collection of properties to work with and if it is a JArray you will 
-        get a collection of the array&#39;s values.</p>
-        <p>The property index is used to get a specific child, either by index position for JSON arrays or property name for JSON objects.</p>
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">var</span> postTitles =</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">from</span> p <span style="color: blue;">in</span> rss[<span style="color: #a31515;">"channel"</span>][<span style="color: #a31515;">"item"</span>].Children()</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">select</span> (<span style="color: blue;">string</span>)p[<span style="color: #a31515;">"title"</span>];</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> item <span style="color: blue;">in</span> postTitles)</pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: #2b91af;">Console</span>.WriteLine(item);</pre>
-<pre style="margin: 0px;">}</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">//LINQ to JSON beta</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//Json.NET 1.3 + New license + Now on CodePlex</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">var</span> categories =</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">from</span> c <span style="color: blue;">in</span> rss[<span style="color: #a31515;">"channel"</span>][<span style="color: #a31515;">"item"</span>].Children()[<span style="color: #a31515;">"category"</span>].Values&lt;<span style="color: blue;">string</span>&gt;()</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">group</span> c <span style="color: blue;">by</span> c <span style="color: blue;">into</span> g</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">orderby</span> g.Count() <span style="color: blue;">descending</span></pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span> { Category = g.Key, Count = g.Count() };</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> c <span style="color: blue;">in</span> categories)</pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: #2b91af;">Console</span>.WriteLine(c.Category + <span style="color: #a31515;">" - Count: "</span> + c.Count);</pre>
-<pre style="margin: 0px;">}</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">//Json.NET - Count: 2</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//LINQ - Count: 1</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//CodePlex - Count: 1</span></pre>
-</div>
-
-</div></div>
-
-<p>LINQ to JSON can also be used to manually convert from JSON to a .NET object.</p>
-
-<div class="overflowpanel"> <div class="code">
+<html>
+  
+  <head>
+    <title>LINQ to JSON</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">LINQ to JSON</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>LINQ to JSON is a programming API for working with JSON objects. The API has been designed with LINQ in mind to enable to quick querying and creation of JSON objects. LINQ to JSON sits under the <a href="./html/N_Newtonsoft_Json_Linq.htm">Newtonsoft.Json.Linq</a> namespace.</p>
+
+<h3>Creating JSON</h3>
+<p>There are a number of different options when it comes to creating JSON using LINQ to JSON. The first to create objects imperatively. You have total control but it is more verbose than other options.</p>
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">JArray</span> array = <span style="color: blue;">new</span> <span style="color: #2b91af;">JArray</span>();</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">JValue</span> text = <span style="color: blue;">new</span> <span style="color: #2b91af;">JValue</span>(<span style="color: #a31515;">"Manual text"</span>);</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">JValue</span> date = <span style="color: blue;">new</span> <span style="color: #2b91af;">JValue</span>(<span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2000, 5, 23));</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">array.Add(text);</pre>
+<pre style="margin: 0px;">array.Add(date);</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">string</span> json = array.ToString();</pre>
+<pre style="margin: 0px;"><span style="color: green;">// [</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "Manual text",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "\/Date(958996800000+1200)\/"</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// ]</span></pre>
+</div>
+
+</div></div>
+
+<p>Another option is to create JSON objects declaratively.</p>
+
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">List</span>&lt;<span style="color: #2b91af;">Post</span>&gt; posts = GetPosts();</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> rss =</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"channel"</span>,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"title"</span>, <span style="color: #a31515;">"James Newton-King"</span>),</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"link"</span>, <span style="color: #a31515;">"http://james.newtonking.com"</span>),</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"description"</span>, <span style="color: #a31515;">"James Newton-King's blog."</span>),</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"item"</span>,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JArray</span>(</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">from</span> p <span style="color: blue;">in</span> posts</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">orderby</span> p.Title</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"title"</span>, p.Title),</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"description"</span>, p.Description),</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"link"</span>, p.Link),</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"category"</span>,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JArray</span>(</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">from</span> c <span style="color: blue;">in</span> p.Categories</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">JValue</span>(c)))))))));</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(rss.ToString());</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "channel": {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "title": "James Newton-King",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "link": "http://james.newtonking.com",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "description": "James Newton-King's blog.",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "item": [</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "title": "Json.NET 1.3 + New license + Now on CodePlex",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "description": "Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "link": "http://james.newtonking.com/projects/json-net.aspx",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "category": [</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Json.NET",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "CodePlex"</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "title": "LINQ to JSON beta",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "description": "Annoucing LINQ to JSON",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "link": "http://james.newtonking.com/projects/json-net.aspx",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; "category": [</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Json.NET",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "LINQ"</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; &nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
+</div>
+
+</div></div>
+
+<p>You can create a JSON object from a non-JSON type using the <a href="./html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm">FromObject</a> method.</p>
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: #2b91af;">JObject</span>.FromObject(<span style="color: blue;">new</span></pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; channel = <span style="color: blue;">new</span></pre>
+<pre style="margin: 0px;">&nbsp; {</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; title = <span style="color: #a31515;">"James Newton-King"</span>,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; link = <span style="color: #a31515;">"http://james.newtonking.com"</span>,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; description = <span style="color: #a31515;">"James Newton-King's blog."</span>,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; item =</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">from</span> p <span style="color: blue;">in</span> posts</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">orderby</span> p.Title</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span></pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; {</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title = p.Title,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description = p.Description,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; link = p.Link,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; category = p.Categories</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; }</pre>
+<pre style="margin: 0px;">&nbsp; }</pre>
+<pre style="margin: 0px;">});</pre>
+</div>
+
+</div></div>
+
+<p>Finally JSON objects can be created from a string use the <a href="./html/M_Newtonsoft_Json_Linq_JObject_Parse.htm">Parse</a> method.</p>
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@"{</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; CPU: 'Intel',</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; Drives: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; 'DVD read/writer',</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; ""500 gigabyte hard drive""</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">}"</span>;</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: #2b91af;">JObject</span>.Parse(json);</pre>
+</div>
+
+</div></div>
+
+	<h3>Querying JSON</h3>
+
+
+	<p>The properties methods that are the most useful when querying JSON objects are 
+        the <a href="./html/Overload_Newtonsoft_Json_Linq_JToken_Children.htm">Children</a> 
+        method and the <a href="./html/P_Newtonsoft_Json_Linq_JToken_Item.htm">property index</a>.</p>
+	<p>Children returns all the children of that object. If it is a JObject it will 
+        return a collection of properties to work with and if it is a JArray you will 
+        get a collection of the array&#39;s values.</p>
+        <p>The property index is used to get a specific child, either by index position for JSON arrays or property name for JSON objects.</p>
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">var</span> postTitles =</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">from</span> p <span style="color: blue;">in</span> rss[<span style="color: #a31515;">"channel"</span>][<span style="color: #a31515;">"item"</span>].Children()</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">select</span> (<span style="color: blue;">string</span>)p[<span style="color: #a31515;">"title"</span>];</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> item <span style="color: blue;">in</span> postTitles)</pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: #2b91af;">Console</span>.WriteLine(item);</pre>
+<pre style="margin: 0px;">}</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">//LINQ to JSON beta</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//Json.NET 1.3 + New license + Now on CodePlex</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">var</span> categories =</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">from</span> c <span style="color: blue;">in</span> rss[<span style="color: #a31515;">"channel"</span>][<span style="color: #a31515;">"item"</span>].Children()[<span style="color: #a31515;">"category"</span>].Values&lt;<span style="color: blue;">string</span>&gt;()</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">group</span> c <span style="color: blue;">by</span> c <span style="color: blue;">into</span> g</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">orderby</span> g.Count() <span style="color: blue;">descending</span></pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">select</span> <span style="color: blue;">new</span> { Category = g.Key, Count = g.Count() };</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">foreach</span> (<span style="color: blue;">var</span> c <span style="color: blue;">in</span> categories)</pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: #2b91af;">Console</span>.WriteLine(c.Category + <span style="color: #a31515;">" - Count: "</span> + c.Count);</pre>
+<pre style="margin: 0px;">}</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">//Json.NET - Count: 2</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//LINQ - Count: 1</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//CodePlex - Count: 1</span></pre>
+</div>
+
+</div></div>
+
+<p>LINQ to JSON can also be used to manually convert from JSON to a .NET object.</p>
+
+<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Shortie</span></pre>
 <pre style="margin: 0px;">{</pre>
@@ -208,12 +208,12 @@
 <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> ErrorMessage { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
 <pre style="margin: 0px;">}</pre>
 </div>
-</div></div>
-
-<p>Manually serializing and deserializing between .NET objects is most useful when working with JSON that doesn't closely match your .NET objects.</p>
-
-<div class="overflowpanel"> <div class="code">
-
+</div></div>
+
+<p>Manually serializing and deserializing between .NET objects is most useful when working with JSON that doesn't closely match your .NET objects.</p>
+
+<div class="overflowpanel"> <div class="code">
+
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">string</span> jsonText = <span style="color: #a31515;">@"{</span></pre>
 <pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; ""short"":{</span></pre>
@@ -243,12 +243,12 @@
 <pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(shortie.Error.ErrorMessage);</pre>
 <pre style="margin: 0px;"><span style="color: green;">// No action taken</span></pre>
 </div>
-
-</div></div>
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+
+</div></div>
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/PreserveObjectReferences.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/PreserveObjectReferences.html
@@ -1,27 +1,27 @@
-<html>
-  
-  <head>
-    <title>Serialization and Preserving Object References</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serialization and Preserving Object References</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>By default Json.NET will serialize all objects it encounters by value. If a list 
-        contains two Person references, and both references point to the same object 
-        then the JsonSerializer will write out all the names and values for each 
-        reference.</p>
-
-<div class="overflowpanel"> <div class="code">
-
+<html>
+  
+  <head>
+    <title>Serialization and Preserving Object References</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serialization and Preserving Object References</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>By default Json.NET will serialize all objects it encounters by value. If a list 
+        contains two Person references, and both references point to the same object 
+        then the JsonSerializer will write out all the names and values for each 
+        reference.</p>
+
+<div class="overflowpanel"> <div class="code">
+
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: #2b91af;">Person</span> p = <span style="color: blue;">new</span> <span style="color: #2b91af;">Person</span></pre>
 <pre style="margin: 0px;">&nbsp; {</pre>
@@ -49,16 +49,16 @@
 <pre style="margin: 0px;"><span style="color: green;">//]</span></pre>
 </div>
 </div></div>
-<p>In most cases this is the desired result but in certain scenarios writing the second item in the list as a reference to the first is a better solution. 
-    If the above JSON was deserialized now then the returned list would contain two 
-    completely separate Person objects with the same values. Writing references by value will also cause problems on objects where a 
-    circular reference occurs.</p>
-    
-    <h3>PreserveReferencesHandling</h3>
-        <p>Settings PreserveReferencesHandling will track object references when serializing 
-            and deserializing JSON.</p>
-
-<div class="overflowpanel"> <div class="code">
+<p>In most cases this is the desired result but in certain scenarios writing the second item in the list as a reference to the first is a better solution. 
+    If the above JSON was deserialized now then the returned list would contain two 
+    completely separate Person objects with the same values. Writing references by value will also cause problems on objects where a 
+    circular reference occurs.</p>
+    
+    <h3>PreserveReferencesHandling</h3>
+        <p>Settings PreserveReferencesHandling will track object references when serializing 
+            and deserializing JSON.</p>
+
+<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #2b91af;">JsonConvert</span>.SerializeObject(people, <span style="color: #2b91af;">Formatting</span>.Indented,</pre>
 <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonSerializerSettings</span> { PreserveReferencesHandling = <span style="color: #2b91af;">PreserveReferencesHandling</span>.Objects });</pre>
@@ -92,27 +92,27 @@
 <pre style="margin: 0px;"><span style="color: green;">// true</span></pre>
 </div>
 </div></div>
-
-<p>The first Person in the list is serizlied with the addition of an object Id. The 
-    second Person in JSON is now only a reference to the first.</p>
-        <p>With PreserveReferencesHandling on now only one Person object is created on 
-            deserialization and the list contains two references to it, mirroring what we 
-            started with.</p>
-
-	<h3>IsReference on JsonObjectAttribute, JsonArrayAttribute and JsonPropertyAttribute</h3>
-
-
-	<p>The PreserveReferencesHandling setting on the JsonSerializer will change
-	how all objects are serialized and deserialized. For fine grain control over which 
-        objects and members should be serialized as a reference there is the IsReference property on 
-        the JsonObjectAttribute, JsonArrayAttribute and JsonPropertyAttribute.</p>
-        <p>Setting IsReference on JsonObjectAttribute or JsonArrayAttribute to true will 
-            mean the JsonSerializer will always serialize the type the attribute is against 
-            as a reference. Setting IsReference on the JsonPropertyAttribute to true will 
-            serialize only that property as a reference.</p>
-
-<div class="overflowpanel"> <div class="code">
-
+
+<p>The first Person in the list is serizlied with the addition of an object Id. The 
+    second Person in JSON is now only a reference to the first.</p>
+        <p>With PreserveReferencesHandling on now only one Person object is created on 
+            deserialization and the list contains two references to it, mirroring what we 
+            started with.</p>
+
+	<h3>IsReference on JsonObjectAttribute, JsonArrayAttribute and JsonPropertyAttribute</h3>
+
+
+	<p>The PreserveReferencesHandling setting on the JsonSerializer will change
+	how all objects are serialized and deserialized. For fine grain control over which 
+        objects and members should be serialized as a reference there is the IsReference property on 
+        the JsonObjectAttribute, JsonArrayAttribute and JsonPropertyAttribute.</p>
+        <p>Setting IsReference on JsonObjectAttribute or JsonArrayAttribute to true will 
+            mean the JsonSerializer will always serialize the type the attribute is against 
+            as a reference. Setting IsReference on the JsonPropertyAttribute to true will 
+            serialize only that property as a reference.</p>
+
+<div class="overflowpanel"> <div class="code">
+
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;">[<span style="color: #2b91af;">JsonObject</span>(IsReference = <span style="color: blue;">true</span>)]</pre>
 <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">EmployeeReference</span></pre>
@@ -121,18 +121,18 @@
 <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">EmployeeReference</span> Manager { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
 <pre style="margin: 0px;">}</pre>
 </div>
-
-</div></div>
-    <h3>IReferenceResolver</h3>
-        <p>To customize how references are generated and resolved the <a href="./html/T_Newtonsoft_Json_Serialization_IReferenceResolver.htm">IReferenceResolver</a> interface is available to inherit from and use with the JsonSerializer.</p>
-
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+
+</div></div>
+    <h3>IReferenceResolver</h3>
+        <p>To customize how references are generated and resolved the <a href="./html/T_Newtonsoft_Json_Serialization_IReferenceResolver.htm">IReferenceResolver</a> interface is available to inherit from and use with the JsonSerializer.</p>
+
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/ReadingWritingJSON.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/ReadingWritingJSON.html
@@ -1,87 +1,87 @@
-<html>
-  
-  <head>
-    <title>Reading and Writing JSON</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Reading and Writing JSON</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>To manually read and write JSON Json.NET provides the <a href="./html/T_Newtonsoft_Json_JsonReader.htm">JsonReader</a> and <a href="./html/T_Newtonsoft_Json_JsonWriter.htm">JsonWriter</a> classes.</p>
-
-<h3>JsonTextReader and JsonTextWriter</h3>
-<p><a href="./html/T_Newtonsoft_Json_JsonTextReader.htm">JsonTextReader</a> and <a href="./html/T_Newtonsoft_Json_JsonTextWriter.htm">JsonTextWriter</a> are used to read and write JSON text. The JsonTextWriter has a number of settings on it to control how JSON is formatted when it is written. These options include formatting, indention character, indent count and quote character.</p>
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">StringBuilder</span> sb = <span style="color: blue;">new</span> <span style="color: #2b91af;">StringBuilder</span>();</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">StringWriter</span> sw = <span style="color: blue;">new</span> <span style="color: #2b91af;">StringWriter</span>(sb);</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">using</span> (<span style="color: #2b91af;">JsonWriter</span> jsonWriter = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonTextWriter</span>(sw))</pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.Formatting = <span style="color: #2b91af;">Formatting</span>.Indented;</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteStartObject();</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WritePropertyName(<span style="color: #a31515;">"CPU"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"Intel"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WritePropertyName(<span style="color: #a31515;">"PSU"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"500W"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WritePropertyName(<span style="color: #a31515;">"Drives"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteStartArray();</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"DVD read/writer"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteComment(<span style="color: #a31515;">"(broken)"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"500 gigabyte hard drive"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"200 gigabype hard drive"</span>);</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteEnd();</pre>
-<pre style="margin: 0px;">&nbsp; jsonWriter.WriteEndObject();</pre>
-<pre style="margin: 0px;">}</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "CPU": "Intel",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "PSU": "500W",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "Drives": [</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  "DVD read/writer"</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  /*(broken)*/,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  "500 gigabyte hard drive",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  "200 gigabype hard drive"</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  ]</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
-</div>
-
-</div></div>
-
-<h3>JTokenReader and JTokenWriter</h3>
-<p><a href="./html/T_Newtonsoft_Json_Linq_JTokenReader.htm">JTokenReader</a> and <a href="./html/T_Newtonsoft_Json_Linq_JTokenWriter.htm">JTokenWriter</a> read and write LINQ to JSON objects. They are located in the <a href="./html/N_Newtonsoft_Json_Linq.htm">Newtonsoft.Json.Linq</a> namespace. These objects allow you to use LINQ to JSON objects with objects that read and write JSON such as the JsonSerializer. For example you can deserialize from a LINQ to JSON object into a regular .NET object and vice versa.</p>
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"Name"</span>, <span style="color: #a31515;">"John Smith"</span>),</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"BirthDate"</span>, <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(1983, 3, 20))</pre>
-<pre style="margin: 0px;">&nbsp; );</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">JsonSerializer</span> serializer = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonSerializer</span>();</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">Person</span> p = (<span style="color: #2b91af;">Person</span>)serializer.Deserialize(<span style="color: blue;">new</span> <span style="color: #2b91af;">JTokenReader</span>(o), <span style="color: blue;">typeof</span>(<span style="color: #2b91af;">Person</span>));</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(p.Name);</pre>
-<pre style="margin: 0px;"><span style="color: green;">// John Smith</span></pre>
-</div>
-
-</div></div>
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Reading and Writing JSON</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Reading and Writing JSON</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>To manually read and write JSON Json.NET provides the <a href="./html/T_Newtonsoft_Json_JsonReader.htm">JsonReader</a> and <a href="./html/T_Newtonsoft_Json_JsonWriter.htm">JsonWriter</a> classes.</p>
+
+<h3>JsonTextReader and JsonTextWriter</h3>
+<p><a href="./html/T_Newtonsoft_Json_JsonTextReader.htm">JsonTextReader</a> and <a href="./html/T_Newtonsoft_Json_JsonTextWriter.htm">JsonTextWriter</a> are used to read and write JSON text. The JsonTextWriter has a number of settings on it to control how JSON is formatted when it is written. These options include formatting, indention character, indent count and quote character.</p>
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">StringBuilder</span> sb = <span style="color: blue;">new</span> <span style="color: #2b91af;">StringBuilder</span>();</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">StringWriter</span> sw = <span style="color: blue;">new</span> <span style="color: #2b91af;">StringWriter</span>(sb);</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">using</span> (<span style="color: #2b91af;">JsonWriter</span> jsonWriter = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonTextWriter</span>(sw))</pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.Formatting = <span style="color: #2b91af;">Formatting</span>.Indented;</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteStartObject();</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WritePropertyName(<span style="color: #a31515;">"CPU"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"Intel"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WritePropertyName(<span style="color: #a31515;">"PSU"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"500W"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WritePropertyName(<span style="color: #a31515;">"Drives"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteStartArray();</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"DVD read/writer"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteComment(<span style="color: #a31515;">"(broken)"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"500 gigabyte hard drive"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteValue(<span style="color: #a31515;">"200 gigabype hard drive"</span>);</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteEnd();</pre>
+<pre style="margin: 0px;">&nbsp; jsonWriter.WriteEndObject();</pre>
+<pre style="margin: 0px;">}</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "CPU": "Intel",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "PSU": "500W",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  "Drives": [</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  "DVD read/writer"</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  /*(broken)*/,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  "500 gigabyte hard drive",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp;  "200 gigabype hard drive"</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp;  ]</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
+</div>
+
+</div></div>
+
+<h3>JTokenReader and JTokenWriter</h3>
+<p><a href="./html/T_Newtonsoft_Json_Linq_JTokenReader.htm">JTokenReader</a> and <a href="./html/T_Newtonsoft_Json_Linq_JTokenWriter.htm">JTokenWriter</a> read and write LINQ to JSON objects. They are located in the <a href="./html/N_Newtonsoft_Json_Linq.htm">Newtonsoft.Json.Linq</a> namespace. These objects allow you to use LINQ to JSON objects with objects that read and write JSON such as the JsonSerializer. For example you can deserialize from a LINQ to JSON object into a regular .NET object and vice versa.</p>
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: blue;">new</span> <span style="color: #2b91af;">JObject</span>(</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"Name"</span>, <span style="color: #a31515;">"John Smith"</span>),</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: #2b91af;">JProperty</span>(<span style="color: #a31515;">"BirthDate"</span>, <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(1983, 3, 20))</pre>
+<pre style="margin: 0px;">&nbsp; );</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">JsonSerializer</span> serializer = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonSerializer</span>();</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">Person</span> p = (<span style="color: #2b91af;">Person</span>)serializer.Deserialize(<span style="color: blue;">new</span> <span style="color: #2b91af;">JTokenReader</span>(o), <span style="color: blue;">typeof</span>(<span style="color: #2b91af;">Person</span>));</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(p.Name);</pre>
+<pre style="margin: 0px;"><span style="color: green;">// John Smith</span></pre>
+</div>
+
+</div></div>
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/ReducingSerializedJSONSize.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/ReducingSerializedJSONSize.html
@@ -1,280 +1,280 @@
-<html>
-  
-  <head>
-    <title>Reducing Serialized JSON Size</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Reducing Serialized JSON Size</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-        <p>One of the common problems encountered when serializing .NET objects to JSON is that the JSON ends up containing a lot of unwanted properties and values. This can be especially important when returning JSON to the client. More JSON means more bandwidth and a slower website.</p>
-
-<p>To solve the issue of unwanted JSON Json.NET has a range of built in options to fine tune what gets written from a serialized object.</p>
-
-<h3>JsonIgnoreAttribute and DataMemberAttribute </h3>
-<p>By default Json.NET will include all of a classes public properties and fields in 
-    the JSON it creates. Adding the <a href="./html/T_Newtonsoft_Json_JsonIgnoreAttribute.htm">JsonIgnoreAttribute</a> to a property tells the serializer 
-    to always skip writing it to the JSON result. </p>
-
-<div class="overflowpanel">
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Car</span></pre>
-      <pre style="margin: 0px;">{</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// included in JSON</span></pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Model { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> Year { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">List</span>&lt;<span style="color: blue;">string</span>&gt; Features { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// ignored</span></pre>
-      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">JsonIgnore</span>]</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> LastModified { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">}</pre>
-    </div>
-  </div>
-</div>
-
-<p>If a class has many properties and you only want to serialize a small subset of 
-    them then adding JsonIgnore to all the others will be tedious and error prone. 
-    The way to tackle this scenario is to add the
-    <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx" 
-        target="_blank">DataContractAttribute</a> to the class and 
-    DataMemberAttributes to the properties to serialize. This is opt-in 
-    serialization, only the properties you mark up with be serialized, compared to 
-    opt-out serialization using JsonIgnoreAttribute.</p>
-
-<div class="overflowpanel">
-
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;">[<span style="color: rgb(43, 145, 175);">DataContract</span>]</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Computer</span></pre>
-      <pre style="margin: 0px;">{</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// included in JSON</span></pre>
-      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DataMember</span>]</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DataMember</span>]</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> SalePrice { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// ignored</span></pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Manufacture { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">int</span> StockCount { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> WholeSalePrice { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> NextShipmentDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">}</pre>
-    </div>
-  </div>
-</div>
-
-<h3>Formatting </h3>
-
-<p>JSON written by the serializer with an option of <a href="./html/T_Newtonsoft_Json_Formatting.htm">Formatting.Indented</a> produces nicely formatted, easy to read JSON  great when you are developing. <a href="./html/T_Newtonsoft_Json_Formatting.htm">Formatting.None</a> on the other hand keeps the JSON result small, skipping all unnecessary spaces and line breaks to produce the most compact and efficient JSON possible. </p>
-
-<p><strong>NullValueHandling </strong></p>
-
-<p><a href="./html/T_Newtonsoft_Json_NullValueHandling.htm">NullValueHandling</a> is an option on the JsonSerializer and controls how the serializer handles properties with a null value. By setting a value of NullValueHandling.Ignore the JsonSerializer skips writing any properties that have a value of null.</p>
-
-<div class="overflowpanel">
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Movie</span></pre>
-      <pre style="margin: 0px;">{</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Description { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Classification { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Studio { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span>? ReleaseDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">List</span>&lt;<span style="color: blue;">string</span>&gt; ReleaseCountries { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">}</pre>
-    </div>
-  </div>
-</div>
-
-<div class="overflowpanel">
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Movie</span> movie = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Movie</span>();</pre>
-      <pre style="margin: 0px;">movie.Name = <span style="color: rgb(163, 21, 21);">"Bad Boys III"</span>;</pre>
-      <pre style="margin: 0px;">movie.Description = <span style="color: rgb(163, 21, 21);">"It's no Bad Boys"</span>;</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">string</span> included = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(movie,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { });</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Name": "Bad Boys III",</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Description": "It's no Bad Boys",</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Classification": null,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Studio": null,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "ReleaseDate": null,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "ReleaseCountries": null</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">string</span> ignored = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(movie,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { NullValueHandling = <span style="color: rgb(43, 145, 175);">NullValueHandling</span>.Ignore });</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Name": "Bad Boys III",</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Description": "It's no Bad Boys"</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
-    </div>
-  </div>
-</div>
-
-<p>NullValueHandling can also be customized on individual properties using the a <a href="./html/T_Newtonsoft_Json_JsonPropertyAttribute.htm">JsonPropertyAttribute</a>. The JsonPropertyAttribute value of NullValueHandling will override the setting on the JsonSerializer for that property. </p>
-
-<h3>DefaultValueHandling </h3>
-
-<p><a href="./html/T_Newtonsoft_Json_NullValueHandling.htm">DefaultValueHandling</a> is an option on the JsonSerializer and controls how the serializer handles properties with a default value. Setting a value of DefaultValueHandling.Ignore will make the JsonSerializer skip writing any properties that have a default value to the JSON result. For object references this will be null. For value types like int and DateTime the serializer will skip the default unitialized value for that value type. </p>
-
-<p>Json.NET also allows you to customize what the default value of an individual property is using the <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx" target="_blank">DefaultValueAttribute</a>. For example if a string property called Department always returns an empty string in its default state and you didn't want that empty string in your JSON then placing the DefaultValueAttribute on Department with that value will mean Department is no longer written to JSON unless it has a value. </p>
-
-<div class="overflowpanel">
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Invoice</span></pre>
-      <pre style="margin: 0px;">{</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Company { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> Amount { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// false is default value of bool</span></pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">bool</span> Paid { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// null is default value of nullable</span></pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span>? PaidDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// customize default values</span></pre>
-      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DefaultValue</span>(30)]</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">int</span> FollowUpDays { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DefaultValue</span>(<span style="color: rgb(163, 21, 21);">""</span>)]</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> FollowUpEmailAddress { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">}</pre>
-    </div>
-  </div>
-</div>
-
-<div class="overflowpanel">
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Invoice</span> invoice = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Invoice</span></pre>
-      <pre style="margin: 0px;">{</pre>
-      <pre style="margin: 0px;">&nbsp; Company = <span style="color: rgb(163, 21, 21);">"Acme Ltd."</span>,</pre>
-      <pre style="margin: 0px;">&nbsp; Amount = 50.0m,</pre>
-      <pre style="margin: 0px;">&nbsp; Paid = <span style="color: blue;">false</span>,</pre>
-      <pre style="margin: 0px;">&nbsp; FollowUpDays = 30,</pre>
-      <pre style="margin: 0px;">&nbsp; FollowUpEmailAddress = <span style="color: blue;">string</span>.Empty,</pre>
-      <pre style="margin: 0px;">&nbsp; PaidDate = <span style="color: blue;">null</span></pre>
-      <pre style="margin: 0px;">};</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">string</span> included = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(invoice,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { });</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Company": "Acme Ltd.",</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Amount": 50.0,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Paid": false,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "PaidDate": null,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "FollowUpDays": 30,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "FollowUpEmailAddress": ""</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">string</span> ignored = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(invoice,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { DefaultValueHandling = <span style="color: rgb(43, 145, 175);">DefaultValueHandling</span>.Ignore });</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Company": "Acme Ltd.",</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Amount": 50.0</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
-    </div>
-  </div>
-</div>
-
-<p>DefaultValueHandling can also be customized on individual properties using the a <a href="./html/T_Newtonsoft_Json_JsonPropertyAttribute.htm">JsonPropertyAttribute</a>. The JsonPropertyAttribute value of DefaultValueHandling will override the setting on the JsonSerializer for that property.</p>
-
-<h3>IContractResolver</h3>
-
-<p>For more flexibility the <a href="./html/T_Newtonsoft_Json_Serialization_IContractResolver.htm">IContractResolver</a> provides an interface to customize almost every aspect of how a .NET object gets serialized to JSON, including changing serialization behavior at runtime.</p>
-
-<div class="overflowpanel">
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">DynamicContractResolver</span> : <span style="color: rgb(43, 145, 175);">DefaultContractResolver</span></pre>
-      <pre style="margin: 0px;">{</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">private</span> <span style="color: blue;">readonly</span> <span style="color: blue;">char</span> _startingWithChar;</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> DynamicContractResolver(<span style="color: blue;">char</span> startingWithChar)</pre>
-      <pre style="margin: 0px;">&nbsp; {</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; _startingWithChar = startingWithChar;</pre>
-      <pre style="margin: 0px;">&nbsp; }</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">protected</span> <span style="color: blue;">override</span> <span style="color: rgb(43, 145, 175);">IList</span>&lt;<span style="color: rgb(43, 145, 175);">JsonProperty</span>&gt; CreateProperties(<span style="color: rgb(43, 145, 175);">JsonObjectContract</span> contract)</pre>
-      <pre style="margin: 0px;">&nbsp; {</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: rgb(43, 145, 175);">IList</span>&lt;<span style="color: rgb(43, 145, 175);">JsonProperty</span>&gt; properties = <span style="color: blue;">base</span>.CreateProperties(contract);</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: green;">// only serializer properties that start with the specified character</span></pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; properties = </pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.Where(p =&gt; p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList();</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">return</span> properties;</pre>
-      <pre style="margin: 0px;">&nbsp; }</pre>
-      <pre style="margin: 0px;">}</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Book</span></pre>
-      <pre style="margin: 0px;">{</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> BookName { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> BookPrice { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> AuthorName { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">int</span> AuthorAge { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> AuthorCountry { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-      <pre style="margin: 0px;">}</pre>
-    </div>
-  </div>
-</div>
-
-<div class="overflowpanel">
-  <div class="code">
-    <div style="font-family: courier new; color: black; font-size: 10pt;">
-      <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Book</span> book = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Book</span></pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BookName = <span style="color: rgb(163, 21, 21);">"The Gathering Storm"</span>,</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BookPrice = 16.19m,</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthorName = <span style="color: rgb(163, 21, 21);">"Brandon Sanderson"</span>,</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthorAge = 34,</pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthorCountry = <span style="color: rgb(163, 21, 21);">"United States of America"</span></pre>
-      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">string</span> startingWithA = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(book, <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { ContractResolver = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DynamicContractResolver</span>(<span style="color: rgb(163, 21, 21);">'A'</span>) });</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "AuthorName": "Brandon Sanderson",</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "AuthorAge": 34,</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "AuthorCountry": "United States of America"</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: blue;">string</span> startingWithB = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(book, <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
-      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { ContractResolver = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DynamicContractResolver</span>(<span style="color: rgb(163, 21, 21);">'B'</span>) });</pre>
-      <pre style="margin: 0px;">&nbsp;</pre>
-      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "BookName": "The Gathering Storm",</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "BookPrice": 16.19</span></pre>
-      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
-    </div>
-  </div>
-</div>
-
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Reducing Serialized JSON Size</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Reducing Serialized JSON Size</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+        <p>One of the common problems encountered when serializing .NET objects to JSON is that the JSON ends up containing a lot of unwanted properties and values. This can be especially important when returning JSON to the client. More JSON means more bandwidth and a slower website.</p>
+
+<p>To solve the issue of unwanted JSON Json.NET has a range of built in options to fine tune what gets written from a serialized object.</p>
+
+<h3>JsonIgnoreAttribute and DataMemberAttribute </h3>
+<p>By default Json.NET will include all of a classes public properties and fields in 
+    the JSON it creates. Adding the <a href="./html/T_Newtonsoft_Json_JsonIgnoreAttribute.htm">JsonIgnoreAttribute</a> to a property tells the serializer 
+    to always skip writing it to the JSON result. </p>
+
+<div class="overflowpanel">
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Car</span></pre>
+      <pre style="margin: 0px;">{</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// included in JSON</span></pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Model { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> Year { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">List</span>&lt;<span style="color: blue;">string</span>&gt; Features { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// ignored</span></pre>
+      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">JsonIgnore</span>]</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> LastModified { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">}</pre>
+    </div>
+  </div>
+</div>
+
+<p>If a class has many properties and you only want to serialize a small subset of 
+    them then adding JsonIgnore to all the others will be tedious and error prone. 
+    The way to tackle this scenario is to add the
+    <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx" 
+        target="_blank">DataContractAttribute</a> to the class and 
+    DataMemberAttributes to the properties to serialize. This is opt-in 
+    serialization, only the properties you mark up with be serialized, compared to 
+    opt-out serialization using JsonIgnoreAttribute.</p>
+
+<div class="overflowpanel">
+
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;">[<span style="color: rgb(43, 145, 175);">DataContract</span>]</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Computer</span></pre>
+      <pre style="margin: 0px;">{</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// included in JSON</span></pre>
+      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DataMember</span>]</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DataMember</span>]</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> SalePrice { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// ignored</span></pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Manufacture { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">int</span> StockCount { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> WholeSalePrice { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span> NextShipmentDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">}</pre>
+    </div>
+  </div>
+</div>
+
+<h3>Formatting </h3>
+
+<p>JSON written by the serializer with an option of <a href="./html/T_Newtonsoft_Json_Formatting.htm">Formatting.Indented</a> produces nicely formatted, easy to read JSON  great when you are developing. <a href="./html/T_Newtonsoft_Json_Formatting.htm">Formatting.None</a> on the other hand keeps the JSON result small, skipping all unnecessary spaces and line breaks to produce the most compact and efficient JSON possible. </p>
+
+<p><strong>NullValueHandling </strong></p>
+
+<p><a href="./html/T_Newtonsoft_Json_NullValueHandling.htm">NullValueHandling</a> is an option on the JsonSerializer and controls how the serializer handles properties with a null value. By setting a value of NullValueHandling.Ignore the JsonSerializer skips writing any properties that have a value of null.</p>
+
+<div class="overflowpanel">
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Movie</span></pre>
+      <pre style="margin: 0px;">{</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Description { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Classification { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Studio { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span>? ReleaseDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">List</span>&lt;<span style="color: blue;">string</span>&gt; ReleaseCountries { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">}</pre>
+    </div>
+  </div>
+</div>
+
+<div class="overflowpanel">
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Movie</span> movie = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Movie</span>();</pre>
+      <pre style="margin: 0px;">movie.Name = <span style="color: rgb(163, 21, 21);">"Bad Boys III"</span>;</pre>
+      <pre style="margin: 0px;">movie.Description = <span style="color: rgb(163, 21, 21);">"It's no Bad Boys"</span>;</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">string</span> included = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(movie,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { });</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Name": "Bad Boys III",</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Description": "It's no Bad Boys",</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Classification": null,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Studio": null,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "ReleaseDate": null,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "ReleaseCountries": null</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">string</span> ignored = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(movie,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { NullValueHandling = <span style="color: rgb(43, 145, 175);">NullValueHandling</span>.Ignore });</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Name": "Bad Boys III",</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Description": "It's no Bad Boys"</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
+    </div>
+  </div>
+</div>
+
+<p>NullValueHandling can also be customized on individual properties using the a <a href="./html/T_Newtonsoft_Json_JsonPropertyAttribute.htm">JsonPropertyAttribute</a>. The JsonPropertyAttribute value of NullValueHandling will override the setting on the JsonSerializer for that property. </p>
+
+<h3>DefaultValueHandling </h3>
+
+<p><a href="./html/T_Newtonsoft_Json_NullValueHandling.htm">DefaultValueHandling</a> is an option on the JsonSerializer and controls how the serializer handles properties with a default value. Setting a value of DefaultValueHandling.Ignore will make the JsonSerializer skip writing any properties that have a default value to the JSON result. For object references this will be null. For value types like int and DateTime the serializer will skip the default unitialized value for that value type. </p>
+
+<p>Json.NET also allows you to customize what the default value of an individual property is using the <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx" target="_blank">DefaultValueAttribute</a>. For example if a string property called Department always returns an empty string in its default state and you didn't want that empty string in your JSON then placing the DefaultValueAttribute on Department with that value will mean Department is no longer written to JSON unless it has a value. </p>
+
+<div class="overflowpanel">
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Invoice</span></pre>
+      <pre style="margin: 0px;">{</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Company { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> Amount { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// false is default value of bool</span></pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">bool</span> Paid { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// null is default value of nullable</span></pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: rgb(43, 145, 175);">DateTime</span>? PaidDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: green;">// customize default values</span></pre>
+      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DefaultValue</span>(30)]</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">int</span> FollowUpDays { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; [<span style="color: rgb(43, 145, 175);">DefaultValue</span>(<span style="color: rgb(163, 21, 21);">""</span>)]</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> FollowUpEmailAddress { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">}</pre>
+    </div>
+  </div>
+</div>
+
+<div class="overflowpanel">
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Invoice</span> invoice = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Invoice</span></pre>
+      <pre style="margin: 0px;">{</pre>
+      <pre style="margin: 0px;">&nbsp; Company = <span style="color: rgb(163, 21, 21);">"Acme Ltd."</span>,</pre>
+      <pre style="margin: 0px;">&nbsp; Amount = 50.0m,</pre>
+      <pre style="margin: 0px;">&nbsp; Paid = <span style="color: blue;">false</span>,</pre>
+      <pre style="margin: 0px;">&nbsp; FollowUpDays = 30,</pre>
+      <pre style="margin: 0px;">&nbsp; FollowUpEmailAddress = <span style="color: blue;">string</span>.Empty,</pre>
+      <pre style="margin: 0px;">&nbsp; PaidDate = <span style="color: blue;">null</span></pre>
+      <pre style="margin: 0px;">};</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">string</span> included = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(invoice,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { });</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Company": "Acme Ltd.",</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Amount": 50.0,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Paid": false,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "PaidDate": null,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "FollowUpDays": 30,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "FollowUpEmailAddress": ""</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">string</span> ignored = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(invoice,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { DefaultValueHandling = <span style="color: rgb(43, 145, 175);">DefaultValueHandling</span>.Ignore });</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Company": "Acme Ltd.",</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "Amount": 50.0</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
+    </div>
+  </div>
+</div>
+
+<p>DefaultValueHandling can also be customized on individual properties using the a <a href="./html/T_Newtonsoft_Json_JsonPropertyAttribute.htm">JsonPropertyAttribute</a>. The JsonPropertyAttribute value of DefaultValueHandling will override the setting on the JsonSerializer for that property.</p>
+
+<h3>IContractResolver</h3>
+
+<p>For more flexibility the <a href="./html/T_Newtonsoft_Json_Serialization_IContractResolver.htm">IContractResolver</a> provides an interface to customize almost every aspect of how a .NET object gets serialized to JSON, including changing serialization behavior at runtime.</p>
+
+<div class="overflowpanel">
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">DynamicContractResolver</span> : <span style="color: rgb(43, 145, 175);">DefaultContractResolver</span></pre>
+      <pre style="margin: 0px;">{</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">private</span> <span style="color: blue;">readonly</span> <span style="color: blue;">char</span> _startingWithChar;</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> DynamicContractResolver(<span style="color: blue;">char</span> startingWithChar)</pre>
+      <pre style="margin: 0px;">&nbsp; {</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; _startingWithChar = startingWithChar;</pre>
+      <pre style="margin: 0px;">&nbsp; }</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">protected</span> <span style="color: blue;">override</span> <span style="color: rgb(43, 145, 175);">IList</span>&lt;<span style="color: rgb(43, 145, 175);">JsonProperty</span>&gt; CreateProperties(<span style="color: rgb(43, 145, 175);">JsonObjectContract</span> contract)</pre>
+      <pre style="margin: 0px;">&nbsp; {</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: rgb(43, 145, 175);">IList</span>&lt;<span style="color: rgb(43, 145, 175);">JsonProperty</span>&gt; properties = <span style="color: blue;">base</span>.CreateProperties(contract);</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: green;">// only serializer properties that start with the specified character</span></pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; properties = </pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properties.Where(p =&gt; p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList();</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">return</span> properties;</pre>
+      <pre style="margin: 0px;">&nbsp; }</pre>
+      <pre style="margin: 0px;">}</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: rgb(43, 145, 175);">Book</span></pre>
+      <pre style="margin: 0px;">{</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> BookName { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">decimal</span> BookPrice { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> AuthorName { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">int</span> AuthorAge { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> AuthorCountry { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+      <pre style="margin: 0px;">}</pre>
+    </div>
+  </div>
+</div>
+
+<div class="overflowpanel">
+  <div class="code">
+    <div style="font-family: courier new; color: black; font-size: 10pt;">
+      <pre style="margin: 0px;"><span style="color: rgb(43, 145, 175);">Book</span> book = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Book</span></pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BookName = <span style="color: rgb(163, 21, 21);">"The Gathering Storm"</span>,</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BookPrice = 16.19m,</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthorName = <span style="color: rgb(163, 21, 21);">"Brandon Sanderson"</span>,</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthorAge = 34,</pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthorCountry = <span style="color: rgb(163, 21, 21);">"United States of America"</span></pre>
+      <pre style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">string</span> startingWithA = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(book, <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { ContractResolver = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DynamicContractResolver</span>(<span style="color: rgb(163, 21, 21);">'A'</span>) });</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "AuthorName": "Brandon Sanderson",</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "AuthorAge": 34,</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "AuthorCountry": "United States of America"</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: blue;">string</span> startingWithB = <span style="color: rgb(43, 145, 175);">JsonConvert</span>.SerializeObject(book, <span style="color: rgb(43, 145, 175);">Formatting</span>.Indented,</pre>
+      <pre style="margin: 0px;">&nbsp; <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">JsonSerializerSettings</span> { ContractResolver = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">DynamicContractResolver</span>(<span style="color: rgb(163, 21, 21);">'B'</span>) });</pre>
+      <pre style="margin: 0px;">&nbsp;</pre>
+      <pre style="margin: 0px;"><span style="color: green;">// {</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "BookName": "The Gathering Storm",</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">//&nbsp;&nbsp; "BookPrice": 16.19</span></pre>
+      <pre style="margin: 0px;"><span style="color: green;">// }</span></pre>
+    </div>
+  </div>
+</div>
+
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SelectToken.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SelectToken.html
@@ -1,116 +1,116 @@
-<html>
-  
-  <head>
-    <title>Querying LINQ to JSON with SelectToken</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Querying LINQ to JSON with SelectToken</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-        <p><a href="./html/M_Newtonsoft_Json_Linq_JToken_SelectToken.htm">SelectToken</a> provides a method to query LINQ to JSON using a single string path to a 
-            desired <a href="./html/T_Newtonsoft_Json_Linq_JToken.htm">JToken</a>. SelectToken makes dynamic queries 
-            easy because the entire 
-            query is defined in a string.</p>
-            
-<div class="overflowpanel">
-  <div class="code">
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">string</span> name = (<span style="color: blue;">string</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[0].Name&quot;</span>);</pre>
-
-</div>
-  </div>
-</div>
-
-<h3>SelectToken</h3>
-<p>SelectToken is a method on JToken and takes a string path to a child token. 
-    SelectToken returns the child token or a null reference if a token couldn&#39;t be 
-    found at the path&#39;s location.</p>
-        <p>The 
-    path is made up of property names and array indexes separated by periods. Array indexes 
-            can use either square or round brackets. Both 
-    of the following are valid paths and are equivalent to each other: <code>Manufacturers[0].Name</code> 
-    and <code>Manufacturers(0).Name</code>.</p>
-
-<div class="overflowpanel">
-  <div class="code">
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: #2b91af;">JObject</span>.Parse(<span style="color: #a31515;">@&quot;{</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;Stores&quot;&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;Lambton Quay&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;Willis Street&quot;&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; ],</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;Manufacturers&quot;&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Acme Co&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Products&quot;&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Anvil&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Price&quot;&quot;: 50</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Contoso&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Products&quot;&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Elbow Grease&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Price&quot;&quot;: 99.95</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Headlight Fluid&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Price&quot;&quot;: 4</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">}&quot;</span>);</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">string</span> name = (<span style="color: blue;">string</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[0].Name&quot;</span>);</pre>
-<pre style="margin: 0px;"><span style="color: green;">// Acme Co</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">decimal</span> productPrice = (<span style="color: blue;">decimal</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[0].Products[0].Price&quot;</span>);</pre>
-<pre style="margin: 0px;"><span style="color: green;">// 50</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">string</span> productName = (<span style="color: blue;">string</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[1].Products[0].Name&quot;</span>);</pre>
-<pre style="margin: 0px;"><span style="color: green;">// Elbow Grease</span></pre>
-</div>
-  </div>
-</div>
-
-<h3>SelectToken with LINQ</h3>
-
-<p>SelectToken can be used in combination with standard LINQ methods.</p>
-
-<div class="overflowpanel">
-
-  <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: blue;">string</span>&gt; storeNames = o.SelectToken(<span style="color: #a31515;">&quot;Stores&quot;</span>).Select(s =&gt; (<span style="color: blue;">string</span>)s).ToList();</pre>
-<pre style="margin: 0px;"><span style="color: green;">// Lambton Quay</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// Willis Street</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: blue;">string</span>&gt; firstProductNames = o[<span style="color: #a31515;">&quot;Manufacturers&quot;</span>].Select(m =&gt; (<span style="color: blue;">string</span>)m.SelectToken(<span style="color: #a31515;">&quot;Products[1].Name&quot;</span>)).ToList();</pre>
-<pre style="margin: 0px;"><span style="color: green;">// null</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// Headlight Fluid</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">decimal</span> totalPrice = o[<span style="color: #a31515;">&quot;Manufacturers&quot;</span>].Sum(m =&gt; (<span style="color: blue;">decimal</span>)m.SelectToken(<span style="color: #a31515;">&quot;Products[0].Price&quot;</span>));</pre>
-<pre style="margin: 0px;"><span style="color: green;">// 149.95</span></pre>
-</div>
-
-  </div>
-</div>
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Querying LINQ to JSON with SelectToken</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Querying LINQ to JSON with SelectToken</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+        <p><a href="./html/M_Newtonsoft_Json_Linq_JToken_SelectToken.htm">SelectToken</a> provides a method to query LINQ to JSON using a single string path to a 
+            desired <a href="./html/T_Newtonsoft_Json_Linq_JToken.htm">JToken</a>. SelectToken makes dynamic queries 
+            easy because the entire 
+            query is defined in a string.</p>
+            
+<div class="overflowpanel">
+  <div class="code">
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">string</span> name = (<span style="color: blue;">string</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[0].Name&quot;</span>);</pre>
+
+</div>
+  </div>
+</div>
+
+<h3>SelectToken</h3>
+<p>SelectToken is a method on JToken and takes a string path to a child token. 
+    SelectToken returns the child token or a null reference if a token couldn&#39;t be 
+    found at the path&#39;s location.</p>
+        <p>The 
+    path is made up of property names and array indexes separated by periods. Array indexes 
+            can use either square or round brackets. Both 
+    of the following are valid paths and are equivalent to each other: <code>Manufacturers[0].Name</code> 
+    and <code>Manufacturers(0).Name</code>.</p>
+
+<div class="overflowpanel">
+  <div class="code">
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> o = <span style="color: #2b91af;">JObject</span>.Parse(<span style="color: #a31515;">@&quot;{</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;Stores&quot;&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;Lambton Quay&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;Willis Street&quot;&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; ],</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;Manufacturers&quot;&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Acme Co&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Products&quot;&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Anvil&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Price&quot;&quot;: 50</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Contoso&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;Products&quot;&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Elbow Grease&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Price&quot;&quot;: 99.95</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Name&quot;&quot;: &quot;&quot;Headlight Fluid&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;Price&quot;&quot;: 4</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">}&quot;</span>);</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">string</span> name = (<span style="color: blue;">string</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[0].Name&quot;</span>);</pre>
+<pre style="margin: 0px;"><span style="color: green;">// Acme Co</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">decimal</span> productPrice = (<span style="color: blue;">decimal</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[0].Products[0].Price&quot;</span>);</pre>
+<pre style="margin: 0px;"><span style="color: green;">// 50</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">string</span> productName = (<span style="color: blue;">string</span>)o.SelectToken(<span style="color: #a31515;">&quot;Manufacturers[1].Products[0].Name&quot;</span>);</pre>
+<pre style="margin: 0px;"><span style="color: green;">// Elbow Grease</span></pre>
+</div>
+  </div>
+</div>
+
+<h3>SelectToken with LINQ</h3>
+
+<p>SelectToken can be used in combination with standard LINQ methods.</p>
+
+<div class="overflowpanel">
+
+  <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: blue;">string</span>&gt; storeNames = o.SelectToken(<span style="color: #a31515;">&quot;Stores&quot;</span>).Select(s =&gt; (<span style="color: blue;">string</span>)s).ToList();</pre>
+<pre style="margin: 0px;"><span style="color: green;">// Lambton Quay</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// Willis Street</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: blue;">string</span>&gt; firstProductNames = o[<span style="color: #a31515;">&quot;Manufacturers&quot;</span>].Select(m =&gt; (<span style="color: blue;">string</span>)m.SelectToken(<span style="color: #a31515;">&quot;Products[1].Name&quot;</span>)).ToList();</pre>
+<pre style="margin: 0px;"><span style="color: green;">// null</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// Headlight Fluid</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">decimal</span> totalPrice = o[<span style="color: #a31515;">&quot;Manufacturers&quot;</span>].Sum(m =&gt; (<span style="color: blue;">decimal</span>)m.SelectToken(<span style="color: #a31515;">&quot;Products[0].Price&quot;</span>));</pre>
+<pre style="margin: 0px;"><span style="color: green;">// 149.95</span></pre>
+</div>
+
+  </div>
+</div>
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializationAttributes.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializationAttributes.html
@@ -1,123 +1,123 @@
-<html>
-  
-  <head>
-    <title>Serialization Attributes</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serialization Attributes</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-          <p>Attributes can be used to control how Json.NET serializes and deserializes .NET objects.</p>
-          <ul>
-            <li><a href="./html/T_Newtonsoft_Json_JsonObjectAttribute.htm">JsonObjectAttribute</a> - Placed on classes to control how it should be serialized as a JSON object.</li>
-            <li><a href="./html/T_Newtonsoft_Json_JsonArrayAttribute.htm">JsonArrayAttribute</a> - Placed on collections to control how it should be serialized as a JSON array.</li>
-            <li><a href="./html/T_Newtonsoft_Json_JsonPropertyAttribute.htm">JsonPropertyAttribute</a> - Placed on fields and properties to control how it should be serialized as a property in a JSON object.</li>
-            <li><a href="./html/T_Newtonsoft_Json_JsonConverterAttribute.htm">JsonConverterAttribute</a> - Placed on either classes or fields and properties to specify which JsonConverter should be used during serialization.</li>
-          </ul>
-          <p>As well as using the built-in Json.NET attributes, Json.NET also looks for the 
-              <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx" target="_blank">DataContract</a> and 
-              <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx" target="_blank">DataMember</a> attributes when determining how JSON is to be serialized and deserialized. If both are present the Json.NET serialization attributes take precedence.</p>
-          
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;">[<span style="color: #2b91af;">JsonObject</span>(<span style="color: #2b91af;">MemberSerialization</span>.OptIn)]</pre>
-<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Person</span></pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// "John Smith"</span></pre>
-<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonProperty</span>]</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// "2000-12-15T22:11:03"</span></pre>
-<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonProperty</span>]</pre>
-<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonConverter</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">IsoDateTimeConverter</span>))]</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> BirthDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// new Date(976918263055)</span></pre>
-<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonProperty</span>]</pre>
-<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonConverter</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">JavaScriptDateTimeConverter</span>))]</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> LastModified { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// not serialized</span></pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Department { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">}</pre>
-</div>
-
-</div></div>
-
-    <h5>JsonObjectAttribute</h5>
-<p>The MemberSerialization flag on this attribute specifies whether member serialization is opt-in (a member must have the JsonProperty or DataMember attribute to be serialized) or opt-out (everything is serialized by default but can be ignored with the JsonIgnoreAttribute, 
-    Json.NET&#39;s default behavor).</p>
-<p>Json.NET serializes .NET classes that implement IEnumerable as an 
-    JSON array populated with the IEnumerable values. Placing the JsonPropertyAttribute overrides this 
-    behavor and forces the serializer to serialize the class's fields and properties.</p>
-    <h5>JsonPropertyAttribute</h5>
-<p>JsonPropertyAttribute has a number of uses:</p>
-<ul>
-    <li>By default the JSON property will have the same name as the .NET property. This attribute allows the name to be customized.</li>
-    <li>Indicates that a property should be serialized when member serialization is set to opt-in.</li>
-    <li>Includes non-public properties in serialization and deserialization.</li>
-</ul>
-    <h5>JsonIgnoreAttribute</h5>
-<p>Excludes a field or property from serialization.</p>
-    <h5>JsonConverterAttribute</h5>
-<p>The JsonConverterAttribute specifies which JsonSerializer is used to convert an object.</p>
-<p>The attribute can be placed on a class or a member. When placed on a class the JsonConverter 
-    specified by the attribute will be the default way of serializing that class. When the attribute is on a field
-or property then the specified JsonConverter will always be used to serialize that value.</p>
-<p>The priority of which JsonConverter is used is member attribute then class attribute and
-finally any converters passed to the JsonSerializer.</p>
-
-<div class="overflowpanel"> <div class="code">
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">MemberConverterClass</span></pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> DefaultConverter { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonConverter</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">IsoDateTimeConverter</span>))]</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> MemberConverter { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">}</pre>
-</div>
-</div></div>
-<p>This example shows the JsonConverterAttribute being applied to a property.</p>
-
-
-<div class="overflowpanel"> <div class="code">
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">DateTime</span> date = <span style="color: #2b91af;">Convert</span>.ToDateTime(<span style="color: #a31515;">"1970-01-01T00:00:00Z"</span>).ToUniversalTime();</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">MemberConverterClass</span> c = <span style="color: blue;">new</span> <span style="color: #2b91af;">MemberConverterClass</span></pre>
-<pre style="margin: 0px;">&nbsp; {</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; DefaultConverter = date,</pre>
-<pre style="margin: 0px;">&nbsp; &nbsp; MemberConverter = date</pre>
-<pre style="margin: 0px;">&nbsp; };</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #2b91af;">JsonConvert</span>.SerializeObject(c, <span style="color: #2b91af;">Formatting</span>.Indented);</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(json);</pre>
-<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "DefaultConverter": "\/Date(0)\/",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "MemberConverter": "1970-01-01T00:00:00Z"</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
-</div>
-
-</div></div>
-
-
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Serialization Attributes</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serialization Attributes</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+          <p>Attributes can be used to control how Json.NET serializes and deserializes .NET objects.</p>
+          <ul>
+            <li><a href="./html/T_Newtonsoft_Json_JsonObjectAttribute.htm">JsonObjectAttribute</a> - Placed on classes to control how it should be serialized as a JSON object.</li>
+            <li><a href="./html/T_Newtonsoft_Json_JsonArrayAttribute.htm">JsonArrayAttribute</a> - Placed on collections to control how it should be serialized as a JSON array.</li>
+            <li><a href="./html/T_Newtonsoft_Json_JsonPropertyAttribute.htm">JsonPropertyAttribute</a> - Placed on fields and properties to control how it should be serialized as a property in a JSON object.</li>
+            <li><a href="./html/T_Newtonsoft_Json_JsonConverterAttribute.htm">JsonConverterAttribute</a> - Placed on either classes or fields and properties to specify which JsonConverter should be used during serialization.</li>
+          </ul>
+          <p>As well as using the built-in Json.NET attributes, Json.NET also looks for the 
+              <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx" target="_blank">DataContract</a> and 
+              <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx" target="_blank">DataMember</a> attributes when determining how JSON is to be serialized and deserialized. If both are present the Json.NET serialization attributes take precedence.</p>
+          
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;">[<span style="color: #2b91af;">JsonObject</span>(<span style="color: #2b91af;">MemberSerialization</span>.OptIn)]</pre>
+<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Person</span></pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// "John Smith"</span></pre>
+<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonProperty</span>]</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Name { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// "2000-12-15T22:11:03"</span></pre>
+<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonProperty</span>]</pre>
+<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonConverter</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">IsoDateTimeConverter</span>))]</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> BirthDate { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// new Date(976918263055)</span></pre>
+<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonProperty</span>]</pre>
+<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonConverter</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">JavaScriptDateTimeConverter</span>))]</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> LastModified { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// not serialized</span></pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Department { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">}</pre>
+</div>
+
+</div></div>
+
+    <h5>JsonObjectAttribute</h5>
+<p>The MemberSerialization flag on this attribute specifies whether member serialization is opt-in (a member must have the JsonProperty or DataMember attribute to be serialized) or opt-out (everything is serialized by default but can be ignored with the JsonIgnoreAttribute, 
+    Json.NET&#39;s default behavor).</p>
+<p>Json.NET serializes .NET classes that implement IEnumerable as an 
+    JSON array populated with the IEnumerable values. Placing the JsonPropertyAttribute overrides this 
+    behavor and forces the serializer to serialize the class's fields and properties.</p>
+    <h5>JsonPropertyAttribute</h5>
+<p>JsonPropertyAttribute has a number of uses:</p>
+<ul>
+    <li>By default the JSON property will have the same name as the .NET property. This attribute allows the name to be customized.</li>
+    <li>Indicates that a property should be serialized when member serialization is set to opt-in.</li>
+    <li>Includes non-public properties in serialization and deserialization.</li>
+</ul>
+    <h5>JsonIgnoreAttribute</h5>
+<p>Excludes a field or property from serialization.</p>
+    <h5>JsonConverterAttribute</h5>
+<p>The JsonConverterAttribute specifies which JsonSerializer is used to convert an object.</p>
+<p>The attribute can be placed on a class or a member. When placed on a class the JsonConverter 
+    specified by the attribute will be the default way of serializing that class. When the attribute is on a field
+or property then the specified JsonConverter will always be used to serialize that value.</p>
+<p>The priority of which JsonConverter is used is member attribute then class attribute and
+finally any converters passed to the JsonSerializer.</p>
+
+<div class="overflowpanel"> <div class="code">
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">MemberConverterClass</span></pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> DefaultConverter { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">&nbsp; [<span style="color: #2b91af;">JsonConverter</span>(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">IsoDateTimeConverter</span>))]</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: #2b91af;">DateTime</span> MemberConverter { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">}</pre>
+</div>
+</div></div>
+<p>This example shows the JsonConverterAttribute being applied to a property.</p>
+
+
+<div class="overflowpanel"> <div class="code">
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">DateTime</span> date = <span style="color: #2b91af;">Convert</span>.ToDateTime(<span style="color: #a31515;">"1970-01-01T00:00:00Z"</span>).ToUniversalTime();</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">MemberConverterClass</span> c = <span style="color: blue;">new</span> <span style="color: #2b91af;">MemberConverterClass</span></pre>
+<pre style="margin: 0px;">&nbsp; {</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; DefaultConverter = date,</pre>
+<pre style="margin: 0px;">&nbsp; &nbsp; MemberConverter = date</pre>
+<pre style="margin: 0px;">&nbsp; };</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #2b91af;">JsonConvert</span>.SerializeObject(c, <span style="color: #2b91af;">Formatting</span>.Indented);</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(json);</pre>
+<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "DefaultConverter": "\/Date(0)\/",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "MemberConverter": "1970-01-01T00:00:00Z"</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
+</div>
+
+</div></div>
+
+
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializationCallbacks.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializationCallbacks.html
@@ -1,38 +1,38 @@
-<html>
-  
-  <head>
-    <title>Serialization Callbacks</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serialization Callbacks</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>Json.NET supports serialization callback methods. A callback can be used to 
-        manipulate an object before and after its serialization and deserialization by 
-        the JsonSerializer.</p>
-	<ul>
-	    <li><b>OnSerializing</b></li>
-	    <li><b>OnSerialized</b></li>
-	    <li><b>OnDeserializing</b></li>
-	    <li><b>OnDeserialized</b></li>
-	</ul>
-	<p>To tell the serializer which methods should be called during the object&#39;s serialization 
-        lifecycle, decorate a method with the appropraite attribute (<a 
-            href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.onserializingattribute.aspx" target="_blank">OnSerializingAttribute</a>, 
-        <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.onserializedattribute.aspx" target="_blank">OnSerializedAttribute</a>, 
-        <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializingattribute.aspx" target="_blank">OnDeserializingAttribute</a>, 
-        <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute.aspx" target="_blank">OnDeserializedAttribute</a>).</p>
-<p>Example object with serialization callback methods:</p>
-
-<div class="overflowpanel"> <div class="code">
+<html>
+  
+  <head>
+    <title>Serialization Callbacks</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serialization Callbacks</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>Json.NET supports serialization callback methods. A callback can be used to 
+        manipulate an object before and after its serialization and deserialization by 
+        the JsonSerializer.</p>
+	<ul>
+	    <li><b>OnSerializing</b></li>
+	    <li><b>OnSerialized</b></li>
+	    <li><b>OnDeserializing</b></li>
+	    <li><b>OnDeserialized</b></li>
+	</ul>
+	<p>To tell the serializer which methods should be called during the object&#39;s serialization 
+        lifecycle, decorate a method with the appropraite attribute (<a 
+            href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.onserializingattribute.aspx" target="_blank">OnSerializingAttribute</a>, 
+        <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.onserializedattribute.aspx" target="_blank">OnSerializedAttribute</a>, 
+        <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializingattribute.aspx" target="_blank">OnDeserializingAttribute</a>, 
+        <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializedattribute.aspx" target="_blank">OnDeserializedAttribute</a>).</p>
+<p>Example object with serialization callback methods:</p>
+
+<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">SerializationEventTestObject</span></pre>
 <pre style="margin: 0px;">{</pre>
@@ -84,11 +84,11 @@
 <pre style="margin: 0px;">&nbsp; }</pre>
 <pre style="margin: 0px;">}</pre>
 </div>
-</div></div>
-
-<p>The example object being serialized and deserialized by Json.NET:</p>
-
-<div class="overflowpanel"> <div class="code">
+</div></div>
+
+<p>The example object being serialized and deserialized by Json.NET:</p>
+
+<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: #2b91af;">SerializationEventTestObject</span> obj = <span style="color: blue;">new</span> <span style="color: #2b91af;">SerializationEventTestObject</span>();</pre>
 <pre style="margin: 0px;">&nbsp;</pre>
@@ -129,15 +129,15 @@
 <pre style="margin: 0px;"><span style="color: green;">// This value was set after deserialization.</span></pre>
 </div>
 </div></div>
-
-
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+
+
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializationErrorHandling.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializationErrorHandling.html
@@ -1,33 +1,33 @@
-<html>
-  
-  <head>
-    <title>Serialization Error Handling</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serialization Error Handling</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>Json.NET supports error handling during serialization and deserialization. Error handling lets
-	you catch an error and choose whether to handle it and continue with serialization or let the error
-	bubble up and be thrown in your application.</p>
-	<p>Error handling is defined through two methods:
-	    the Error event on JsonSerializer and the OnErrorAttribute.</p>
-	        <h3>Error Event</h3>
-
-	<p>
-	    The <a href="./html/E_Newtonsoft_Json_JsonSerializer_Error.htm">Error</a> event is an event handler found on <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializer</a>. The error event is raised whenever an
-	    exception is thrown while serializing or deserialing JSON. Like all settings found on JsonSerializer
-	    it can also be set on <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializerSettings</a> and passed to the serialization methods on JsonConvert.</p>
-	    
-	<div class="overflowpanel"> <div class="code">
+<html>
+  
+  <head>
+    <title>Serialization Error Handling</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serialization Error Handling</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>Json.NET supports error handling during serialization and deserialization. Error handling lets
+	you catch an error and choose whether to handle it and continue with serialization or let the error
+	bubble up and be thrown in your application.</p>
+	<p>Error handling is defined through two methods:
+	    the Error event on JsonSerializer and the OnErrorAttribute.</p>
+	        <h3>Error Event</h3>
+
+	<p>
+	    The <a href="./html/E_Newtonsoft_Json_JsonSerializer_Error.htm">Error</a> event is an event handler found on <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializer</a>. The error event is raised whenever an
+	    exception is thrown while serializing or deserialing JSON. Like all settings found on JsonSerializer
+	    it can also be set on <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializerSettings</a> and passed to the serialization methods on JsonConvert.</p>
+	    
+	<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: #2b91af;">List</span>&lt;<span style="color: blue;">string</span>&gt; errors = <span style="color: blue;">new</span> <span style="color: #2b91af;">List</span>&lt;<span style="color: blue;">string</span>&gt;();</pre>
 <pre style="margin: 0px;">&nbsp;</pre>
@@ -71,15 +71,15 @@
     for the null value since the list doesn't allow nullable DateTimes. The event handler has logged these messages
     and Json.NET has continued on deserializing the JSON because the errors were marked as handled.
 </p>
-<p>
-    One thing to note with error handling in Json.NET is that an unhandled error will bubble up and raise the event
-    on each of its parents, e.g. an unhandled error when serializing a collection of objects will be raised twice,
-    once against the object and then again on the collection. This will let you handle an error either where it
-    occurred or on one of its parents.
-</p>
-
-
-<div class="overflowpanel"> <div class="code">
+<p>
+    One thing to note with error handling in Json.NET is that an unhandled error will bubble up and raise the event
+    on each of its parents, e.g. an unhandled error when serializing a collection of objects will be raised twice,
+    once against the object and then again on the collection. This will let you handle an error either where it
+    occurred or on one of its parents.
+</p>
+
+
+<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: #2b91af;">JsonSerializer</span> serializer = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonSerializer</span>();</pre>
 <pre style="margin: 0px;">serializer.Error += <span style="color: blue;">delegate</span>(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">ErrorEventArgs</span> args)</pre>
@@ -89,21 +89,21 @@
 <pre style="margin: 0px;">&nbsp; &nbsp; &nbsp; errors.Add(args.ErrorContext.Error.Message);</pre>
 <pre style="margin: 0px;">&nbsp; };</pre>
 </div>
-</div></div>
-
-<p>If you aren't immediately handling an error and only want to perform an action against it once then
-you can check to see whether the <a href="./html/T_Newtonsoft_Json_Serialization_ErrorEventArgs.htm">ErrorEventArg</a>'s CurrentObject is equal to the OriginalObject.
-OriginalObject is the object that threw the error and CurrentObject is the object that the event is being raised
-against. They will only equal the first time the event is raised against the OriginalObject.</p>
-	    
-	        <h3>OnErrorAttribute</h3>
-
-	<p>
-	    The <a href="./html/T_Newtonsoft_Json_Serialization_OnErrorAttribute.htm">OnErrorAttribute</a> works much like the other <a href="SerializationCallbacks.html">.NET serialization attributes</a> that Json.NET supports.
-	    To use it you simply place the attribute on a method which takes the correct parameters: a StreamingContext and a ErrorContext.
-	    The name of the method doesn't matter. 	</p>
-	<div class="overflowpanel"> <div class="code">
-
+</div></div>
+
+<p>If you aren't immediately handling an error and only want to perform an action against it once then
+you can check to see whether the <a href="./html/T_Newtonsoft_Json_Serialization_ErrorEventArgs.htm">ErrorEventArg</a>'s CurrentObject is equal to the OriginalObject.
+OriginalObject is the object that threw the error and CurrentObject is the object that the event is being raised
+against. They will only equal the first time the event is raised against the OriginalObject.</p>
+	    
+	        <h3>OnErrorAttribute</h3>
+
+	<p>
+	    The <a href="./html/T_Newtonsoft_Json_Serialization_OnErrorAttribute.htm">OnErrorAttribute</a> works much like the other <a href="SerializationCallbacks.html">.NET serialization attributes</a> that Json.NET supports.
+	    To use it you simply place the attribute on a method which takes the correct parameters: a StreamingContext and a ErrorContext.
+	    The name of the method doesn't matter. 	</p>
+	<div class="overflowpanel"> <div class="code">
+
 	<div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">PersonError</span></pre>
 <pre style="margin: 0px;">{</pre>
@@ -131,14 +131,14 @@ against. They will only equal the first
 <pre style="margin: 0px;">&nbsp; }</pre>
 <pre style="margin: 0px;">}</pre>
 </div>
-</div></div>
-	<p>
-	In this example accessing the the Roles property will throw an exception when no roles have
-	been set. The HandleError method will set the error when serializing Roles as handled and allow Json.NET to continue
-	serializing the class.
-	</p>
-	
-	<div class="overflowpanel"> <div class="code">
+</div></div>
+	<p>
+	In this example accessing the the Roles property will throw an exception when no roles have
+	been set. The HandleError method will set the error when serializing Roles as handled and allow Json.NET to continue
+	serializing the class.
+	</p>
+	
+	<div class="overflowpanel"> <div class="code">
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: #2b91af;">PersonError</span> person = <span style="color: blue;">new</span> <span style="color: #2b91af;">PersonError</span></pre>
 <pre style="margin: 0px;">&nbsp; {</pre>
@@ -158,15 +158,15 @@ against. They will only equal the first
 <pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
 </div>
 </div></div>
-
-
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+
+
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializationGuide.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializationGuide.html
@@ -1,338 +1,338 @@
-<html>
-<head>
-  <title>Serialization Guide</title>
-  <link href="styles.css" rel="stylesheet" type="text/css" />
-  <link href="custom.css" rel="stylesheet" type="text/css" />
-  <style type="text/css">
-    .style1
-    {
-      width: 100%;
-    }
-  </style>
-</head>
-<body>
-  <div id="control">
-    <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-    <span class="topicTitle">Serialization Guide</span></div>
-  <div id="content">
-    <span style="color: DarkGray"></span>
-    <p>
-      The Json.NET serializer can serialize a wide variety of .NET objects. This guide
-      looks at how it works at a high level and in more detail.</p>
-    <h3>
-      Summary</h3>
-    <p>
-      At a high level, the Json.NET serializer will convert primitive .NET values into
-      primitive JSON values, .NET arrays and collections to JSON arrays and everything
-      else to JSON objects.</p>
-    <p>
-      Json.NET will throw an error if it encounters incorrect JSON when deserializing
-      a value. For example if the serializer encounters a JSON property with an array
-      of values and the type of matching .NET property is not a collection then an error
-      will be thrown, and vice-versa.
-    </p>
-    <h4>
-      <strong>Complex Types</strong></h4>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            .NET
-          </th>
-          <th class="descriptionColumn">
-            JSON
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>IList, IEnumerable, IList&lt;T&gt;, Array</b>
-          </td>
-          <td>
-            <div class="summary">
-              Array
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>IDictionary, IDictionary&lt;TKey, TValue&gt;</b>
-          </td>
-          <td>
-            <div class="summary">
-              Object
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Object (more detail below)</b>
-          </td>
-          <td>
-            <div class="summary">
-              Object
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-    <h4>
-      <strong>Primitive Types</strong></h4>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            .NET
-          </th>
-          <th class="descriptionColumn">
-            JSON
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>String</b>
-          </td>
-          <td>
-            <div class="summary">
-              String
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Byte<br />
-              SByte<br />
-              UInt16<br />
-              Int16<br />
-              UInt32<br />
-              Int32<br />
-              UInt64<br />
-              Int64<br />
-              <br />
-            </b>
-          </td>
-          <td>
-            <div class="summary">
-              Integer
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Float<br />
-              Double<br />
-              Decimal<br />
-              <br />
-            </b>
-          </td>
-          <td>
-            <div class="summary">
-              Float
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Enum</b>
-          </td>
-          <td>
-            <div class="summary">
-              Integer (can be string with <a href="html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm">
-                StringEnumConverter</a>)
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>DateTime</b>
-          </td>
-          <td>
-            <div class="summary">
-              String (<a href="DatesInJSON.html">Serializing Dates in JSON</a>)
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Byte[]</b>
-          </td>
-          <td>
-            <div class="summary">
-              String (base 64 encoded)
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Type</b>
-          </td>
-          <td>
-            <div class="summary">
-              String (type name)
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Guid</b>
-          </td>
-          <td>
-            <div class="summary">
-              String
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b><a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverter.aspx"
-              target="_blank">TypeConverter</a> (convertible to String)</b>
-          </td>
-          <td>
-            <div class="summary">
-              String
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-    <h3>
-      Breakdown of Type Serialization</h3>
-    <h4>
-      <strong>Objects</strong></h4>
-    <p>
-      .NET types that don't fall into any other category listed below (i.e. aren't lists,
-      dictionaries, dynamic, implement ISerializable, etc) are serialized as JSON objects.</p>
-    <p>
-      By default types are serialized in opt-out mode. What that means is all public fields
-      and properties with getters are automatically serialized to JSON and members that
-      shouldn't be serialized are opted-out using the JsonIgnoreAttribute. To serialize
-      private members the JsonPropertyAttribute can be placed on private fields and properties
-      or the DefaultMembersSearchFlags can be changed on DefaultContractResolver to change
-      how members are serialized on all types.</p>
-    <p>
-      Types can also be serialized using opt-in mode. Only fields that have a JsonPropertyAttribute
-      or DataMemberAttribute on them will be serialized. Opt-in mode for an object is
-      specified using the JsonObjectAttribute on the class.
-    </p>
-    <h4>
-      <strong>IEnumerable, Lists and Arrays</strong></h4>
-    <p>
-      .NET lists (types that inherit from IEnumerable) and .NET arrays are converted to
-      JSON arrays. Because JSON arrays only support a range of values and not properties,
-      any additional properties and fields declared on .NET collections are not serialized.
-      In situations where a JSON array is not wanted the JsonObjectAttribute can be placed
-      on a .NET type that implements IEnumerable to force the type to be serialized as
-      a JSON object instead.</p>
-    <p>
-      Note that if TypeNameHandling or PreserveReferencesHandling has been enabled for
-      JSON arrays on the serializer then JSON arrays are wrapped it a containing object.
-      The object will have the type name/reference properties and a $values property which
-      will have the collection data.</p>
-    <p>
-      When deserializing if a member is typed as the interface IList&lt;T&gt; then it
-      will be deserialized as a List&lt;T&gt;.</p>
-    <p>
-      Read more about serializing collections here: <a href="SerializingCollections.html">
-        Serializing Collections </a>
-    </p>
-    <h4>
-      <strong>Dictionarys and Hashtables</strong></h4>
-    <p>
-      .NET dictionaries (types that inherit from IDictionary) are converted to JSON objects.
-      Note that only the dictionary name/values will be written to the JSON object when
-      serializing and properties on the JSON object will be added to the dictionary's
-      name/values when deserializing. Additional members on the .NET dictionary are ignored
-      during serialization.</p>
-    <p>
-      When deserializing if a member is typed as the interface IDictionary&lt;TKey, TValue&gt;
-      then it will be deserialized as a Dictionary&lt;TKey, TValue&gt;.</p>
-    <p>
-      Read more about serializing collections here: <a href="SerializingCollections.html">
-        Serializing Collections</a></p>
-    <h4>
-      <strong>Untyped Objects</strong></h4>
-    <p>
-      .NET properties on a class that don't specify a type (i.e. they are just object)
-      are serialized as usual. When untyped properties are deserialized the serializer
-      has no way to know what type to create (unless type name handling is enabled and
-      the JSON contains the type names).</p>
-    <p>
-      For these untyped properties the Json.NET serializer will read the JSON into LINQ
-      to JSON objects and set them to the property. JObject will be created for JSON objects,
-      JArray will be created for JSON arrays and JValue for primitive JSON values.
-    </p>
-    <h4>
-      <strong>Dynamic</strong></h4>
-    <p>
-      There are two different usages of dynamic (introduced in .NET 4) in .NET. The first
-      are .NET properties with a type of dynamic. Dynamic proeprties behave like properties
-      declared as object, any value can be assigned to it, but the difference being that
-      properties and methods can be called on a dynamic property without casting. In Json.NET
-      dynamic properties are serialized and deserialized exactly the same as untyped objects:
-      because dynamic isn't an actual type Json.NET falls back to deserializing the JSON
-      as LINQ to JSON objects.
-    </p>
-    <p>
-      The second usage of dynamic in .NET are classes that implement <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.idynamicmetaobjectprovider.aspx"
-        target="_blank">IDynamicMetaObjectProvider</a>. This interface lets the implementor
-      create dynamic objects that intercept the property and method calls on an object
-      and use them. <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx"
-        target="_blank">ExpandoObject</a> is a good example of a dynamic object.
-    </p>
-    <p>
-      Dynamic objects are serialized as JSON objects. A property is written for every
-      member name returned by <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicmetaobject.getdynamicmembernames.aspx"
-        target="_blank">DynamicMetaObject.GetDynamicMemberNames</a>.</p>
-    <p>
-      When deserializing dynamic objects the serializer first attempts to set JSON property
-      values on a normal .NET member with the matching name. If no .NET member is found
-      with the property name then the serializer will call SetMember on the dynamic object.
-      Because there is no type information for dynamic members on a dynamic object the
-      values assigned to them will be LINQ to JSON objects</p>
-    <h4>
-      <strong>ISerializable</strong></h4>
-    <p>
-      Types that implement ISerializable are serialized as JSON objects. When serializing
-      only the values returned from ISerializable.GetObjectData are used; members on the
-      type are ignored. When deserializing the constructor with a SerializationInfo and
-      StreamingContext is called, passing the JSON object's values.</p>
-    <p>
-      In situations where this behavior is not wanted the JsonObjectAttribute can be placed
-      on a .NET type that implements ISerializable to force it to be serialized as a normal
-      JSON object.
-    </p>
-    <h4>
-      <strong>LINQ to JSON</strong></h4>
-    <p>
-      LINQ to JSON types (e.g. JObject, JArray) are automatically serialized and deserialized
-      to their equivalent JSON when encountered by the Json.NET serializer.
-    </p>
-    <h4>
-      <strong>JsonConverter</strong></h4>
-    <p>
-      Serialization of values that are convertible by a JsonConverter (i.e. CanConvert
-      returns true for its type) is completely overridden by the JsonConverter. The test
-      to see whether a value can be converted by a JsonSerializer takes precedence over
-      all other tests.</p>
-    <p>
-      JsonConverters can be defined and specified in a number of places: in an attribute
-      on a member, in an attribute on a class and added to the JsonSerializer's converters
-      collection. The priority of which JsonConverter is used is the JsonConverter defined
-      by attribute on a member then the JsonConverter defined by an attribute on a class
-      and finally any converters passed to the JsonSerializer.</p>
-    <div id="footer">
-    </div>
-  </div>
-</body>
-</html>
+<html>
+<head>
+  <title>Serialization Guide</title>
+  <link href="styles.css" rel="stylesheet" type="text/css" />
+  <link href="custom.css" rel="stylesheet" type="text/css" />
+  <style type="text/css">
+    .style1
+    {
+      width: 100%;
+    }
+  </style>
+</head>
+<body>
+  <div id="control">
+    <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+    <span class="topicTitle">Serialization Guide</span></div>
+  <div id="content">
+    <span style="color: DarkGray"></span>
+    <p>
+      The Json.NET serializer can serialize a wide variety of .NET objects. This guide
+      looks at how it works at a high level and in more detail.</p>
+    <h3>
+      Summary</h3>
+    <p>
+      At a high level, the Json.NET serializer will convert primitive .NET values into
+      primitive JSON values, .NET arrays and collections to JSON arrays and everything
+      else to JSON objects.</p>
+    <p>
+      Json.NET will throw an error if it encounters incorrect JSON when deserializing
+      a value. For example if the serializer encounters a JSON property with an array
+      of values and the type of matching .NET property is not a collection then an error
+      will be thrown, and vice-versa.
+    </p>
+    <h4>
+      <strong>Complex Types</strong></h4>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            .NET
+          </th>
+          <th class="descriptionColumn">
+            JSON
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>IList, IEnumerable, IList&lt;T&gt;, Array</b>
+          </td>
+          <td>
+            <div class="summary">
+              Array
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>IDictionary, IDictionary&lt;TKey, TValue&gt;</b>
+          </td>
+          <td>
+            <div class="summary">
+              Object
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Object (more detail below)</b>
+          </td>
+          <td>
+            <div class="summary">
+              Object
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <h4>
+      <strong>Primitive Types</strong></h4>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            .NET
+          </th>
+          <th class="descriptionColumn">
+            JSON
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>String</b>
+          </td>
+          <td>
+            <div class="summary">
+              String
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Byte<br />
+              SByte<br />
+              UInt16<br />
+              Int16<br />
+              UInt32<br />
+              Int32<br />
+              UInt64<br />
+              Int64<br />
+              <br />
+            </b>
+          </td>
+          <td>
+            <div class="summary">
+              Integer
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Float<br />
+              Double<br />
+              Decimal<br />
+              <br />
+            </b>
+          </td>
+          <td>
+            <div class="summary">
+              Float
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Enum</b>
+          </td>
+          <td>
+            <div class="summary">
+              Integer (can be string with <a href="html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm">
+                StringEnumConverter</a>)
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>DateTime</b>
+          </td>
+          <td>
+            <div class="summary">
+              String (<a href="DatesInJSON.html">Serializing Dates in JSON</a>)
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Byte[]</b>
+          </td>
+          <td>
+            <div class="summary">
+              String (base 64 encoded)
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Type</b>
+          </td>
+          <td>
+            <div class="summary">
+              String (type name)
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Guid</b>
+          </td>
+          <td>
+            <div class="summary">
+              String
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b><a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.typeconverter.aspx"
+              target="_blank">TypeConverter</a> (convertible to String)</b>
+          </td>
+          <td>
+            <div class="summary">
+              String
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <h3>
+      Breakdown of Type Serialization</h3>
+    <h4>
+      <strong>Objects</strong></h4>
+    <p>
+      .NET types that don't fall into any other category listed below (i.e. aren't lists,
+      dictionaries, dynamic, implement ISerializable, etc) are serialized as JSON objects.</p>
+    <p>
+      By default types are serialized in opt-out mode. What that means is all public fields
+      and properties with getters are automatically serialized to JSON and members that
+      shouldn't be serialized are opted-out using the JsonIgnoreAttribute. To serialize
+      private members the JsonPropertyAttribute can be placed on private fields and properties
+      or the DefaultMembersSearchFlags can be changed on DefaultContractResolver to change
+      how members are serialized on all types.</p>
+    <p>
+      Types can also be serialized using opt-in mode. Only fields that have a JsonPropertyAttribute
+      or DataMemberAttribute on them will be serialized. Opt-in mode for an object is
+      specified using the JsonObjectAttribute on the class.
+    </p>
+    <h4>
+      <strong>IEnumerable, Lists and Arrays</strong></h4>
+    <p>
+      .NET lists (types that inherit from IEnumerable) and .NET arrays are converted to
+      JSON arrays. Because JSON arrays only support a range of values and not properties,
+      any additional properties and fields declared on .NET collections are not serialized.
+      In situations where a JSON array is not wanted the JsonObjectAttribute can be placed
+      on a .NET type that implements IEnumerable to force the type to be serialized as
+      a JSON object instead.</p>
+    <p>
+      Note that if TypeNameHandling or PreserveReferencesHandling has been enabled for
+      JSON arrays on the serializer then JSON arrays are wrapped it a containing object.
+      The object will have the type name/reference properties and a $values property which
+      will have the collection data.</p>
+    <p>
+      When deserializing if a member is typed as the interface IList&lt;T&gt; then it
+      will be deserialized as a List&lt;T&gt;.</p>
+    <p>
+      Read more about serializing collections here: <a href="SerializingCollections.html">
+        Serializing Collections </a>
+    </p>
+    <h4>
+      <strong>Dictionarys and Hashtables</strong></h4>
+    <p>
+      .NET dictionaries (types that inherit from IDictionary) are converted to JSON objects.
+      Note that only the dictionary name/values will be written to the JSON object when
+      serializing and properties on the JSON object will be added to the dictionary's
+      name/values when deserializing. Additional members on the .NET dictionary are ignored
+      during serialization.</p>
+    <p>
+      When deserializing if a member is typed as the interface IDictionary&lt;TKey, TValue&gt;
+      then it will be deserialized as a Dictionary&lt;TKey, TValue&gt;.</p>
+    <p>
+      Read more about serializing collections here: <a href="SerializingCollections.html">
+        Serializing Collections</a></p>
+    <h4>
+      <strong>Untyped Objects</strong></h4>
+    <p>
+      .NET properties on a class that don't specify a type (i.e. they are just object)
+      are serialized as usual. When untyped properties are deserialized the serializer
+      has no way to know what type to create (unless type name handling is enabled and
+      the JSON contains the type names).</p>
+    <p>
+      For these untyped properties the Json.NET serializer will read the JSON into LINQ
+      to JSON objects and set them to the property. JObject will be created for JSON objects,
+      JArray will be created for JSON arrays and JValue for primitive JSON values.
+    </p>
+    <h4>
+      <strong>Dynamic</strong></h4>
+    <p>
+      There are two different usages of dynamic (introduced in .NET 4) in .NET. The first
+      are .NET properties with a type of dynamic. Dynamic proeprties behave like properties
+      declared as object, any value can be assigned to it, but the difference being that
+      properties and methods can be called on a dynamic property without casting. In Json.NET
+      dynamic properties are serialized and deserialized exactly the same as untyped objects:
+      because dynamic isn't an actual type Json.NET falls back to deserializing the JSON
+      as LINQ to JSON objects.
+    </p>
+    <p>
+      The second usage of dynamic in .NET are classes that implement <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.idynamicmetaobjectprovider.aspx"
+        target="_blank">IDynamicMetaObjectProvider</a>. This interface lets the implementor
+      create dynamic objects that intercept the property and method calls on an object
+      and use them. <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx"
+        target="_blank">ExpandoObject</a> is a good example of a dynamic object.
+    </p>
+    <p>
+      Dynamic objects are serialized as JSON objects. A property is written for every
+      member name returned by <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicmetaobject.getdynamicmembernames.aspx"
+        target="_blank">DynamicMetaObject.GetDynamicMemberNames</a>.</p>
+    <p>
+      When deserializing dynamic objects the serializer first attempts to set JSON property
+      values on a normal .NET member with the matching name. If no .NET member is found
+      with the property name then the serializer will call SetMember on the dynamic object.
+      Because there is no type information for dynamic members on a dynamic object the
+      values assigned to them will be LINQ to JSON objects</p>
+    <h4>
+      <strong>ISerializable</strong></h4>
+    <p>
+      Types that implement ISerializable are serialized as JSON objects. When serializing
+      only the values returned from ISerializable.GetObjectData are used; members on the
+      type are ignored. When deserializing the constructor with a SerializationInfo and
+      StreamingContext is called, passing the JSON object's values.</p>
+    <p>
+      In situations where this behavior is not wanted the JsonObjectAttribute can be placed
+      on a .NET type that implements ISerializable to force it to be serialized as a normal
+      JSON object.
+    </p>
+    <h4>
+      <strong>LINQ to JSON</strong></h4>
+    <p>
+      LINQ to JSON types (e.g. JObject, JArray) are automatically serialized and deserialized
+      to their equivalent JSON when encountered by the Json.NET serializer.
+    </p>
+    <h4>
+      <strong>JsonConverter</strong></h4>
+    <p>
+      Serialization of values that are convertible by a JsonConverter (i.e. CanConvert
+      returns true for its type) is completely overridden by the JsonConverter. The test
+      to see whether a value can be converted by a JsonSerializer takes precedence over
+      all other tests.</p>
+    <p>
+      JsonConverters can be defined and specified in a number of places: in an attribute
+      on a member, in an attribute on a class and added to the JsonSerializer's converters
+      collection. The priority of which JsonConverter is used is the JsonConverter defined
+      by attribute on a member then the JsonConverter defined by an attribute on a class
+      and finally any converters passed to the JsonSerializer.</p>
+    <div id="footer">
+    </div>
+  </div>
+</body>
+</html>
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializationSettings.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializationSettings.html
@@ -1,513 +1,513 @@
-<html>
-  
-  <head>
-    <title>Serialization Settings</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serialization Settings</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-          <p>JsonSerializer has a number of properties on it to customize how it serializes 
-              JSON. These can also be used with the methods on JsonConvert via the 
-              JsonSerializerSettings overloads.</p>
-
-    <h3>DateFormatHandling</h3>
-<p>DateFormatHandling controls how dates are serialized.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>IsoDateFormat</b>
-          </td>
-          <td>
-            <div class="summary">
-              By default Json.NET writes dates in the ISO 8601 format, e.g. "2012-03-21T05:40Z".
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>MicrosoftDateFormat</b>
-          </td>
-          <td>
-            <div class="summary">
-              Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/".
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-<h3>MissingMemberHandling</h3>
-<p>MissingMemberHandling controls how missing members, e.g. JSON contains a property 
-    that isn&#39;t a member on the object, are handled during deserialization.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>Ignore</b>
-          </td>
-          <td>
-            <div class="summary">
-              By default Json.NET ignores JSON if there is no field 
-                or property for its value to be set to during deserialization.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Error</b>
-          </td>
-          <td>
-            <div class="summary">
-              Json.NET errors when there is a missing member during 
-                deserialization.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-          <h3>ReferenceLoopHandling</h3>
-        <p>ReferenceLoopHandling controls how circular referencing objects, e.g. a Person 
-            object referencing itself via a Manager property, are serialized.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>Error</b>
-          </td>
-          <td>
-            <div class="summary">
-             By default Json.NET will error if a reference loop is 
-                encountered (otherwise the serializer will get into an infinite loop).
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Ignore</b>
-          </td>
-          <td>
-            <div class="summary">
-              Json.NET will ignore objects in reference loops and 
-                not serialize them. The first time an object is encountered it will be 
-                serialized as usual but if the object is encountered as a child object of itself 
-                the serializer will skip serializing it.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Serialize</b>
-          </td>
-          <td>
-            <div class="summary">
-              This option forces Json.NET to serialize objects in 
-                reference loops. This is useful if objects are nested but not indefinitely.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-        <p>ReferenceLoopHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
-    <h3>NullValueHandling</h3>
-<p>NullValueHandling controls how null values on .NET objects are handled during 
-    serialization and how null values in JSON are handled during deserialization.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>Include</b>
-          </td>
-          <td>
-            <div class="summary">
-             By default Json.NET writes null values to JSON when 
-                serializing and sets null values to fields/properties when deserializing.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Ignore</b>
-          </td>
-          <td>
-            <div class="summary">
-              Json.NET will skip writing JSON properties if the .NET 
-                value is null when serializing and will skip setting fields/properties if the 
-                JSON property is null when deserializing.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-        <p>NullValueHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
-        <h3>
-            DefaultValueHandling</h3>
-        <p>
-DefaultValueHandling controls how Json.NET uses default values set using the .NET 
-            DefaultValueAttribute when serializing and deserializing.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>Include</b>
-          </td>
-          <td>
-            <div class="summary">
-             By default Json.NET will write a field/property value 
-                to JSON when serializing if the value is the same as the field/property's 
-                default value. The Json.NET deserializer will continue setting a field/property 
-                if the JSON value is the same as the default value.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Ignore</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will skip writing a field/property value to 
-                JSON if the value is the same as the field/property's default value. The 
-                Json.NET deserializer will skip setting a .NET object's field/property if the 
-                JSON value is the same as the default value.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-        <p>DefaultValueHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
-<h3>ObjectCreationHandling</h3>
-        <p>ObjectCreationHandling controls how objects are created and deserialized to 
-            during deserialization.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>Auto</b>
-          </td>
-          <td>
-            <div class="summary">
-             By default Json.NET will attempt to set JSON values onto 
-                existing objects and add JSON values to existing collections during 
-                deserialization.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Reuse</b>
-          </td>
-          <td>
-            <div class="summary">
-             Same behaviour as auto.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Replace</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will always recreate objects and collections 
-                before setting values to them during deserialization.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-        <p>ObjectCreationHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
-<h3>TypeNameHandling</h3>
-        <p>TypeNameHandling controls whether Json.NET includes .NET type names during 
-            serialization with a $type property and reads .NET type names from that property 
-            to determine what type to create during deserialization.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>None</b>
-          </td>
-          <td>
-            <div class="summary">
-             By default Json.NET does not read or write type names 
-                during deserialization.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Objects</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will write and use type names for objects 
-                but not collections.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Arrays</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will write and use type names for collections 
-                but not objects.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Auto</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will check whether an object/collection matches 
-                its declared property and writes the type name if they do not match, e.g. a 
-                property with a type of Mammal has a derived instance of Dog assigned. Auto will 
-                ensure that type information isn't lost when serializing/deserializing 
-                automatically without having to write type names for every object.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>All</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will write and use type names for objects and 
-                collections.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-        <p>TypeNameHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
-        <h3>TypeNameAssemblyFormat</h3>
-        <p>TypeNameAssemblyFormat controls how type names are written during serialization.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>Simple</b>
-          </td>
-          <td>
-            <div class="summary">
-             By default Json.NET writes the partial assembly name 
-                with the type, e.g. System.Data.DataSet, System.Data. Note that Silverlight and 
-                Windows Phone are not able to use this format.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>Full</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will write the full assembly name, including 
-                version number, culture and public key token.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-        <p>Read more about the valid values at
-            <a href="http://msdn.microsoft.com/en-us/library/tt9xha1h" target="_blank">
-            FormatterAssemblyStyle</a>. </p>
-        <h3>Binder</h3>
-        <p>The serialization binder is used to resolve type names to a .NET type.</p>
-        <p>Read more about the serialization binder here:
-            <a href="http://msdn.microsoft.com/en-us/library/ffas09b2" target="_blank">SerializationBinder</a></p>
-        <h3>ConstructorHandling</h3>
-        <p>ConstructorHandling controls how constructors are used when initializing objects 
-            during deserialization.</p>
-    <table class="members">
-      <tbody>
-        <tr>
-          <th class="nameColumn">
-            Member
-          </th>
-          <th class="descriptionColumn">
-            Description
-          </th>
-        </tr>
-        <tr>
-          <td>
-            <b>Default</b>
-          </td>
-          <td>
-            <div class="summary">
-             By default Json.NET will first look for a constructor 
-                marked with the JsonConstructorAttribute, then look for a public default 
-                constructor (a constructor that doesn't take any arguments), then check if 
-                the class has a single public constructor with arguments and finally check
-                for a non-public default constructor. If the class has multiple public
-                constructors with arguments an error will be thrown. This can be fixed by
-                marking one of the constructors with the JsonConstructorAttribute.
-            </div>
-            <br>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <b>AllowNonPublicDefaultConstructor</b>
-          </td>
-          <td>
-            <div class="summary">
-             Json.NET will use a classes private default constructor before constructors
-             with arguments if available.
-            </div>
-            <br>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-        <h3>Converters</h3>
-        <p>This is the collection of JsonConverters that will be used during serialization 
-            and deserialization. </p>
-        <p>JsonConverters allows JSON to be manually written during serialization and read 
-            during deserialization. This is useful for particularly complex JSON structures 
-            or for when you want to change how a type is serialized.</p>
-        <p>When a JsonConverter has been added to a JsonSerializer it will be checked for 
-            every value that is being serialized/deserialized using its CanConvert to see if 
-            it should be used. If CanConvert returns true then the JsonConverter will be 
-            used to read or write the JSON for that value. Note that while a JsonConverter 
-            gives you complete control over that values JSON, many Json.NET serialization 
-            features are no longer available like type name and reference handling.</p>
-        <p>To create your own custom converter inherit from the JsonConverter class. Read 
-            more about the built-in JsonConverters below:</p>
-        <ul>
-            <li><a href="DatesInJSON.html">Serializing Dates in JSON</a></li>
-            <li><a href="ConvertingJSONandXML.html">Converting between JSON and XML</a></li>
-            <li><a href="CustomCreationConverter.html">CustomCreationConverter</a></li>
-            <li><a href="html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm">
-                StringEnumConverter</a></li>
-        </ul>
-        <h3>ContractResolver</h3>
-        <p>Internally for every .NET type the JsonSerializer will create a contract of how 
-            the type should be serialized and deserialized, based on type metadata and 
-            attributes applied to the class. Specifying a custom IContractResolver allows 
-            the creation of contracts to be customized.</p>
-        <p>Read more about Contract Resolvers here: <a href="ContractResolver.html">Contract 
-            Resolvers</a></p>
-        <h3>Error</h3>
-        <p>The Error event can catch errors during serialization and either handle the event 
-            and continue with serialization or let the error bubble up and be thrown to the 
-            application.</p>
-        <p>Read more about error handling here: <a href="SerializationErrorHandling.html">
-            Serialization Error Handling</a></p>
-
-
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Serialization Settings</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serialization Settings</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+          <p>JsonSerializer has a number of properties on it to customize how it serializes 
+              JSON. These can also be used with the methods on JsonConvert via the 
+              JsonSerializerSettings overloads.</p>
+
+    <h3>DateFormatHandling</h3>
+<p>DateFormatHandling controls how dates are serialized.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>IsoDateFormat</b>
+          </td>
+          <td>
+            <div class="summary">
+              By default Json.NET writes dates in the ISO 8601 format, e.g. "2012-03-21T05:40Z".
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>MicrosoftDateFormat</b>
+          </td>
+          <td>
+            <div class="summary">
+              Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/".
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+<h3>MissingMemberHandling</h3>
+<p>MissingMemberHandling controls how missing members, e.g. JSON contains a property 
+    that isn&#39;t a member on the object, are handled during deserialization.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>Ignore</b>
+          </td>
+          <td>
+            <div class="summary">
+              By default Json.NET ignores JSON if there is no field 
+                or property for its value to be set to during deserialization.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Error</b>
+          </td>
+          <td>
+            <div class="summary">
+              Json.NET errors when there is a missing member during 
+                deserialization.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+          <h3>ReferenceLoopHandling</h3>
+        <p>ReferenceLoopHandling controls how circular referencing objects, e.g. a Person 
+            object referencing itself via a Manager property, are serialized.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>Error</b>
+          </td>
+          <td>
+            <div class="summary">
+             By default Json.NET will error if a reference loop is 
+                encountered (otherwise the serializer will get into an infinite loop).
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Ignore</b>
+          </td>
+          <td>
+            <div class="summary">
+              Json.NET will ignore objects in reference loops and 
+                not serialize them. The first time an object is encountered it will be 
+                serialized as usual but if the object is encountered as a child object of itself 
+                the serializer will skip serializing it.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Serialize</b>
+          </td>
+          <td>
+            <div class="summary">
+              This option forces Json.NET to serialize objects in 
+                reference loops. This is useful if objects are nested but not indefinitely.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+        <p>ReferenceLoopHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
+    <h3>NullValueHandling</h3>
+<p>NullValueHandling controls how null values on .NET objects are handled during 
+    serialization and how null values in JSON are handled during deserialization.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>Include</b>
+          </td>
+          <td>
+            <div class="summary">
+             By default Json.NET writes null values to JSON when 
+                serializing and sets null values to fields/properties when deserializing.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Ignore</b>
+          </td>
+          <td>
+            <div class="summary">
+              Json.NET will skip writing JSON properties if the .NET 
+                value is null when serializing and will skip setting fields/properties if the 
+                JSON property is null when deserializing.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+        <p>NullValueHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
+        <h3>
+            DefaultValueHandling</h3>
+        <p>
+DefaultValueHandling controls how Json.NET uses default values set using the .NET 
+            DefaultValueAttribute when serializing and deserializing.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>Include</b>
+          </td>
+          <td>
+            <div class="summary">
+             By default Json.NET will write a field/property value 
+                to JSON when serializing if the value is the same as the field/property's 
+                default value. The Json.NET deserializer will continue setting a field/property 
+                if the JSON value is the same as the default value.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Ignore</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will skip writing a field/property value to 
+                JSON if the value is the same as the field/property's default value. The 
+                Json.NET deserializer will skip setting a .NET object's field/property if the 
+                JSON value is the same as the default value.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+        <p>DefaultValueHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
+<h3>ObjectCreationHandling</h3>
+        <p>ObjectCreationHandling controls how objects are created and deserialized to 
+            during deserialization.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>Auto</b>
+          </td>
+          <td>
+            <div class="summary">
+             By default Json.NET will attempt to set JSON values onto 
+                existing objects and add JSON values to existing collections during 
+                deserialization.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Reuse</b>
+          </td>
+          <td>
+            <div class="summary">
+             Same behaviour as auto.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Replace</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will always recreate objects and collections 
+                before setting values to them during deserialization.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+        <p>ObjectCreationHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
+<h3>TypeNameHandling</h3>
+        <p>TypeNameHandling controls whether Json.NET includes .NET type names during 
+            serialization with a $type property and reads .NET type names from that property 
+            to determine what type to create during deserialization.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>None</b>
+          </td>
+          <td>
+            <div class="summary">
+             By default Json.NET does not read or write type names 
+                during deserialization.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Objects</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will write and use type names for objects 
+                but not collections.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Arrays</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will write and use type names for collections 
+                but not objects.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Auto</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will check whether an object/collection matches 
+                its declared property and writes the type name if they do not match, e.g. a 
+                property with a type of Mammal has a derived instance of Dog assigned. Auto will 
+                ensure that type information isn't lost when serializing/deserializing 
+                automatically without having to write type names for every object.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>All</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will write and use type names for objects and 
+                collections.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+        <p>TypeNameHandling can also be customized on individual properties with JsonPropertyAttribute.</p>
+        <h3>TypeNameAssemblyFormat</h3>
+        <p>TypeNameAssemblyFormat controls how type names are written during serialization.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>Simple</b>
+          </td>
+          <td>
+            <div class="summary">
+             By default Json.NET writes the partial assembly name 
+                with the type, e.g. System.Data.DataSet, System.Data. Note that Silverlight and 
+                Windows Phone are not able to use this format.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>Full</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will write the full assembly name, including 
+                version number, culture and public key token.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+        <p>Read more about the valid values at
+            <a href="http://msdn.microsoft.com/en-us/library/tt9xha1h" target="_blank">
+            FormatterAssemblyStyle</a>. </p>
+        <h3>Binder</h3>
+        <p>The serialization binder is used to resolve type names to a .NET type.</p>
+        <p>Read more about the serialization binder here:
+            <a href="http://msdn.microsoft.com/en-us/library/ffas09b2" target="_blank">SerializationBinder</a></p>
+        <h3>ConstructorHandling</h3>
+        <p>ConstructorHandling controls how constructors are used when initializing objects 
+            during deserialization.</p>
+    <table class="members">
+      <tbody>
+        <tr>
+          <th class="nameColumn">
+            Member
+          </th>
+          <th class="descriptionColumn">
+            Description
+          </th>
+        </tr>
+        <tr>
+          <td>
+            <b>Default</b>
+          </td>
+          <td>
+            <div class="summary">
+             By default Json.NET will first look for a constructor 
+                marked with the JsonConstructorAttribute, then look for a public default 
+                constructor (a constructor that doesn't take any arguments), then check if 
+                the class has a single public constructor with arguments and finally check
+                for a non-public default constructor. If the class has multiple public
+                constructors with arguments an error will be thrown. This can be fixed by
+                marking one of the constructors with the JsonConstructorAttribute.
+            </div>
+            <br>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <b>AllowNonPublicDefaultConstructor</b>
+          </td>
+          <td>
+            <div class="summary">
+             Json.NET will use a classes private default constructor before constructors
+             with arguments if available.
+            </div>
+            <br>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+        <h3>Converters</h3>
+        <p>This is the collection of JsonConverters that will be used during serialization 
+            and deserialization. </p>
+        <p>JsonConverters allows JSON to be manually written during serialization and read 
+            during deserialization. This is useful for particularly complex JSON structures 
+            or for when you want to change how a type is serialized.</p>
+        <p>When a JsonConverter has been added to a JsonSerializer it will be checked for 
+            every value that is being serialized/deserialized using its CanConvert to see if 
+            it should be used. If CanConvert returns true then the JsonConverter will be 
+            used to read or write the JSON for that value. Note that while a JsonConverter 
+            gives you complete control over that values JSON, many Json.NET serialization 
+            features are no longer available like type name and reference handling.</p>
+        <p>To create your own custom converter inherit from the JsonConverter class. Read 
+            more about the built-in JsonConverters below:</p>
+        <ul>
+            <li><a href="DatesInJSON.html">Serializing Dates in JSON</a></li>
+            <li><a href="ConvertingJSONandXML.html">Converting between JSON and XML</a></li>
+            <li><a href="CustomCreationConverter.html">CustomCreationConverter</a></li>
+            <li><a href="html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm">
+                StringEnumConverter</a></li>
+        </ul>
+        <h3>ContractResolver</h3>
+        <p>Internally for every .NET type the JsonSerializer will create a contract of how 
+            the type should be serialized and deserialized, based on type metadata and 
+            attributes applied to the class. Specifying a custom IContractResolver allows 
+            the creation of contracts to be customized.</p>
+        <p>Read more about Contract Resolvers here: <a href="ContractResolver.html">Contract 
+            Resolvers</a></p>
+        <h3>Error</h3>
+        <p>The Error event can catch errors during serialization and either handle the event 
+            and continue with serialization or let the error bubble up and be thrown to the 
+            application.</p>
+        <p>Read more about error handling here: <a href="SerializationErrorHandling.html">
+            Serialization Error Handling</a></p>
+
+
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializingCollections.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializingCollections.html
@@ -1,30 +1,30 @@
-<html>
-  
-  <head>
-    <title>Serializing Collections</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serializing Collections</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>The <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializer</a> has 
-        great support for serializing and deserializing collections of objects.</p>
-
-    <h3>Serializing</h3>
-	<p>To serialize a collection - a generic list, array, dictionary, or your own custom collection - simply call the serializer with the object you want to get JSON for.
-	Json.NET will serialize the collection and all of the values it contains.</p>
-
-
-<div class="overflowpanel"> <div class="code">
-
+<html>
+  
+  <head>
+    <title>Serializing Collections</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serializing Collections</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>The <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializer</a> has 
+        great support for serializing and deserializing collections of objects.</p>
+
+    <h3>Serializing</h3>
+	<p>To serialize a collection - a generic list, array, dictionary, or your own custom collection - simply call the serializer with the object you want to get JSON for.
+	Json.NET will serialize the collection and all of the values it contains.</p>
+
+
+<div class="overflowpanel"> <div class="code">
+
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> p1 = <span style="color: blue;">new</span> <span style="color: #2b91af;">Product</span></pre>
 <pre style="margin: 0px;">&nbsp; {</pre>
@@ -59,14 +59,14 @@
 <pre style="margin: 0px;"><span style="color: green;">//&nbsp; }</span></pre>
 <pre style="margin: 0px;"><span style="color: green;">//]</span></pre>
 </div>
-
-</div></div>
-
-    <h3>Deserializing</h3>
-	<p>To deserialize JSON into a .NET collection just specify the collection type you want to deserialize to. Json.NET supports a wide range of collection types.</p>
-
-<div class="overflowpanel"> <div class="code">
-
+
+</div></div>
+
+    <h3>Deserializing</h3>
+	<p>To deserialize JSON into a .NET collection just specify the collection type you want to deserialize to. Json.NET supports a wide range of collection types.</p>
+
+<div class="overflowpanel"> <div class="code">
+
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@"[</span></pre>
 <pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; {</span></pre>
@@ -93,15 +93,15 @@
 <pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(p1.Name);</pre>
 <pre style="margin: 0px;"><span style="color: green;">// Product 1</span></pre>
 </div>
-
-</div></div>
-
-    <h3>Deserializing Dictionaries</h3>
-
-<p>Using Json.NET you can also deserialize a JSON object into a .NET generic dictionary. The JSON object's property names and values will be added to the dictionary.</p>
-
-<div class="overflowpanel"> <div class="code">
-
+
+</div></div>
+
+    <h3>Deserializing Dictionaries</h3>
+
+<p>Using Json.NET you can also deserialize a JSON object into a .NET generic dictionary. The JSON object's property names and values will be added to the dictionary.</p>
+
+<div class="overflowpanel"> <div class="code">
+
 <div style="font-family: Courier New; font-size: 10pt; color: black;">
 <pre style="margin: 0px;"><span style="color: blue;">string</span> json = <span style="color: #a31515;">@"{""key1"":""value1"",""key2"":""value2""}"</span>;</pre>
 <pre style="margin: 0px;">&nbsp;</pre>
@@ -113,16 +113,16 @@
 <pre style="margin: 0px;"><span style="color: #2b91af;">Console</span>.WriteLine(values[<span style="color: #a31515;">"key1"</span>]);</pre>
 <pre style="margin: 0px;"><span style="color: green;">// value1</span></pre>
 </div>
-
-</div></div>
-    
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+
+</div></div>
+    
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializingJSON.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializingJSON.html
@@ -1,103 +1,103 @@
-<html>
-  
-  <head>
-    <title>Serializing and Deserializing JSON</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serializing and Deserializing JSON</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-    
-	<p>The quickest method of converting between JSON text and a .NET object is using 
-        the <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializer</a>. The JsonSerializer converts .NET objects into their JSON 
-        equivalent and back again.</p>
-
-
-	<p>For simple scenarios where you want to convert to and from a JSON string the <a href="./html/Overload_Newtonsoft_Json_JsonConvert_SerializeObject.htm">SerializeObject</a> and <a href="./html/Overload_Newtonsoft_Json_JsonConvert_DeserializeObject.htm">DeserializeObject</a> methods on <a href="./html/T_Newtonsoft_Json_JsonConvert.htm">JsonConvert</a> provide an easy to use wrapper over 
-        JsonSerializer.</p>
-
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> product = <span style="color: blue;">new</span> <span style="color: #2b91af;">Product</span>();</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;">product.Name = <span style="color: #a31515;">"Apple"</span>;</pre>
-<pre style="margin: 0px;">product.Expiry = <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2008, 12, 28);</pre>
-<pre style="margin: 0px;">product.Price = 3.99M;</pre>
-<pre style="margin: 0px;">product.Sizes = <span style="color: blue;">new</span> <span style="color: blue;">string</span>[] { <span style="color: #a31515;">"Small"</span>, <span style="color: #a31515;">"Medium"</span>, <span style="color: #a31515;">"Large"</span> };</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">string</span> output = <span style="color: #2b91af;">JsonConvert</span>.SerializeObject(product);</pre>
-<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Name": "Apple",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Expiry": &quot;\/Date(1230375600000+1300)\/&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Price": 3.99,</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Sizes": [</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "Small",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "Medium",</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "Large"</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//&nbsp; ]</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> deserializedProduct = <span style="color: #2b91af;">JsonConvert</span>.DeserializeObject&lt;<span style="color: #2b91af;">Product</span>&gt;(output);</pre>
-</div>
-
-</div></div>
-
-<p>
-    SerializeObject and DeserializeObject both have overloads that take a 
-    <a href="html/T_Newtonsoft_Json_JsonSerializerSettings.htm">JsonSerializerSettings</a> object. JsonSerializerSettings lets you use many of the JsonSerializer settings listed below while still using the simple serialization methods.
-</p>
-
-	<h3>JsonSerializer</h3>
-
-
-	<p>For more control over how an object is serialized the JsonSerializer can be used 
-        directly. The JsonSerializer is able to read and write JSON text directly to 
-        a stream via <a href="./html/T_Newtonsoft_Json_JsonTextReader.htm">JsonTextReader</a> and <a href="./html/T_Newtonsoft_Json_JsonTextWriter.htm">JsonTextWriter</a>. Other kinds of JsonWriters can 
-        also be used such as <a href="./html/T_Newtonsoft_Json_Linq_JTokenReader.htm">JTokenReader</a>/<a href="./html/T_Newtonsoft_Json_Linq_JTokenWriter.htm">JTokenWriter</a> to 
-        convert your object to and 
-        from LINQ to JSON objects or <a href="./html/T_Newtonsoft_Json_Bson_BsonReader.htm">BsonReader</a>/<a href="./html/T_Newtonsoft_Json_Bson_BsonWriter.htm">BsonWriter</a> to convert to and from BSON.</p>
-
-<div class="overflowpanel"> <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> product = <span style="color: blue;">new</span> <span style="color: #2b91af;">Product</span>();</pre>
-<pre style="margin: 0px;">product.Expiry = <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2008, 12, 28);</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">JsonSerializer</span> serializer = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonSerializer</span>();</pre>
-<pre style="margin: 0px;">serializer.Converters.Add(<span style="color: blue;">new</span> <span style="color: #2b91af;">JavaScriptDateTimeConverter</span>());</pre>
-<pre style="margin: 0px;">serializer.NullValueHandling = <span style="color: #2b91af;">NullValueHandling</span>.Ignore;</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: blue;">using</span> (<span style="color: #2b91af;">StreamWriter</span> sw = <span style="color: blue;">new</span> <span style="color: #2b91af;">StreamWriter</span>(<span style="color: #a31515;">@"c:\json.txt"</span>))</pre>
-<pre style="margin: 0px;"><span style="color: blue;">using</span> (<span style="color: #2b91af;">JsonWriter</span> writer = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonTextWriter</span>(sw))</pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; serializer.Serialize(writer, product);</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Expiry":new Date(1230375600000),"Price":0}</span></pre>
-<pre style="margin: 0px;">}</pre>
-</div>
-
-</div></div>
-<p>JsonSerializer has a number of properties on it to customize how it serializes JSON. 
-    These can also be used with the methods on JsonConvert via the 
-    JsonSerializerSettings overloads.</p>
-        <p>Read more about the available JsonSerializer settings here:
-            <a href="SerializationSettings.html">Serialization Settings</a></p>
-    
-      <div id="footer">
-
-
-    
-        </div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Serializing and Deserializing JSON</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serializing and Deserializing JSON</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+    
+	<p>The quickest method of converting between JSON text and a .NET object is using 
+        the <a href="./html/T_Newtonsoft_Json_JsonSerializer.htm">JsonSerializer</a>. The JsonSerializer converts .NET objects into their JSON 
+        equivalent and back again.</p>
+
+
+	<p>For simple scenarios where you want to convert to and from a JSON string the <a href="./html/Overload_Newtonsoft_Json_JsonConvert_SerializeObject.htm">SerializeObject</a> and <a href="./html/Overload_Newtonsoft_Json_JsonConvert_DeserializeObject.htm">DeserializeObject</a> methods on <a href="./html/T_Newtonsoft_Json_JsonConvert.htm">JsonConvert</a> provide an easy to use wrapper over 
+        JsonSerializer.</p>
+
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> product = <span style="color: blue;">new</span> <span style="color: #2b91af;">Product</span>();</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;">product.Name = <span style="color: #a31515;">"Apple"</span>;</pre>
+<pre style="margin: 0px;">product.Expiry = <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2008, 12, 28);</pre>
+<pre style="margin: 0px;">product.Price = 3.99M;</pre>
+<pre style="margin: 0px;">product.Sizes = <span style="color: blue;">new</span> <span style="color: blue;">string</span>[] { <span style="color: #a31515;">"Small"</span>, <span style="color: #a31515;">"Medium"</span>, <span style="color: #a31515;">"Large"</span> };</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">string</span> output = <span style="color: #2b91af;">JsonConvert</span>.SerializeObject(product);</pre>
+<pre style="margin: 0px;"><span style="color: green;">//{</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Name": "Apple",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Expiry": &quot;\/Date(1230375600000+1300)\/&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Price": 3.99,</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; "Sizes": [</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "Small",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "Medium",</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; &nbsp; "Large"</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//&nbsp; ]</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">//}</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> deserializedProduct = <span style="color: #2b91af;">JsonConvert</span>.DeserializeObject&lt;<span style="color: #2b91af;">Product</span>&gt;(output);</pre>
+</div>
+
+</div></div>
+
+<p>
+    SerializeObject and DeserializeObject both have overloads that take a 
+    <a href="html/T_Newtonsoft_Json_JsonSerializerSettings.htm">JsonSerializerSettings</a> object. JsonSerializerSettings lets you use many of the JsonSerializer settings listed below while still using the simple serialization methods.
+</p>
+
+	<h3>JsonSerializer</h3>
+
+
+	<p>For more control over how an object is serialized the JsonSerializer can be used 
+        directly. The JsonSerializer is able to read and write JSON text directly to 
+        a stream via <a href="./html/T_Newtonsoft_Json_JsonTextReader.htm">JsonTextReader</a> and <a href="./html/T_Newtonsoft_Json_JsonTextWriter.htm">JsonTextWriter</a>. Other kinds of JsonWriters can 
+        also be used such as <a href="./html/T_Newtonsoft_Json_Linq_JTokenReader.htm">JTokenReader</a>/<a href="./html/T_Newtonsoft_Json_Linq_JTokenWriter.htm">JTokenWriter</a> to 
+        convert your object to and 
+        from LINQ to JSON objects or <a href="./html/T_Newtonsoft_Json_Bson_BsonReader.htm">BsonReader</a>/<a href="./html/T_Newtonsoft_Json_Bson_BsonWriter.htm">BsonWriter</a> to convert to and from BSON.</p>
+
+<div class="overflowpanel"> <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: #2b91af;">Product</span> product = <span style="color: blue;">new</span> <span style="color: #2b91af;">Product</span>();</pre>
+<pre style="margin: 0px;">product.Expiry = <span style="color: blue;">new</span> <span style="color: #2b91af;">DateTime</span>(2008, 12, 28);</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">JsonSerializer</span> serializer = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonSerializer</span>();</pre>
+<pre style="margin: 0px;">serializer.Converters.Add(<span style="color: blue;">new</span> <span style="color: #2b91af;">JavaScriptDateTimeConverter</span>());</pre>
+<pre style="margin: 0px;">serializer.NullValueHandling = <span style="color: #2b91af;">NullValueHandling</span>.Ignore;</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: blue;">using</span> (<span style="color: #2b91af;">StreamWriter</span> sw = <span style="color: blue;">new</span> <span style="color: #2b91af;">StreamWriter</span>(<span style="color: #a31515;">@"c:\json.txt"</span>))</pre>
+<pre style="margin: 0px;"><span style="color: blue;">using</span> (<span style="color: #2b91af;">JsonWriter</span> writer = <span style="color: blue;">new</span> <span style="color: #2b91af;">JsonTextWriter</span>(sw))</pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; serializer.Serialize(writer, product);</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: green;">// {"Expiry":new Date(1230375600000),"Price":0}</span></pre>
+<pre style="margin: 0px;">}</pre>
+</div>
+
+</div></div>
+<p>JsonSerializer has a number of properties on it to customize how it serializes JSON. 
+    These can also be used with the methods on JsonConvert via the 
+    JsonSerializerSettings overloads.</p>
+        <p>Read more about the available JsonSerializer settings here:
+            <a href="SerializationSettings.html">Serialization Settings</a></p>
+    
+      <div id="footer">
+
+
+    
+        </div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/SerializingJSONFragments.html
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/SerializingJSONFragments.html
@@ -1,125 +1,125 @@
-<html>
-  
-  <head>
-    <title>Serializing Partial JSON Fragments</title>
-    <link href="styles.css" rel="stylesheet" type="text/css" />
-    <link href="custom.css" rel="stylesheet" type="text/css" />
-  </head>
-  
-  <body>
-    
-    <div id="control">
-      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
-        <span class="topicTitle">Serializing Partial JSON Fragments</span></div>
-
-    <div id="content">
-      <span style="color: DarkGray"> </span>
-        <p>Often when working with large JSON documents you're only interested in a small fragment of information.
-            This scenario can be annoying when you want to serialize that Json.NET into .NET 
-            objects because you have to define .NET classes for the entire JSON result.</p>
-        <p>With Json.NET it is easy to get around this problem. Using LINQ to JSON you can 
-            extract the pieces of JSON you want to serialize before passing them to the Json.NET serializer.</p>
-
-<div class="overflowpanel">
-  <div class="code">
-
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">SearchResult</span></pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Title { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Content { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Url { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
-<pre style="margin: 0px;">}</pre>
-</div>
-
-  </div>
-</div>
-
-<div class="overflowpanel">
-  <div class="code">
-  
-<div style="font-family: Courier New; font-size: 10pt; color: black;">
-<pre style="margin: 0px;"><span style="color: blue;">string</span> googleSearchText = <span style="color: #a31515;">@&quot;{</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;responseData&quot;&quot;: {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;results&quot;&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;GsearchResultClass&quot;&quot;: &quot;&quot;GwebSearch&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;unescapedUrl&quot;&quot;: &quot;&quot;http://en.wikipedia.org/wiki/Paris_Hilton&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://en.wikipedia.org/wiki/Paris_Hilton&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;visibleUrl&quot;&quot;: &quot;&quot;en.wikipedia.org&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;cacheUrl&quot;&quot;: &quot;&quot;http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;title&quot;&quot;: &quot;&quot;&lt;b&gt;Paris Hilton&lt;/b&gt; - Wikipedia, the free encyclopedia&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;titleNoFormatting&quot;&quot;: &quot;&quot;Paris Hilton - Wikipedia, the free encyclopedia&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;content&quot;&quot;: &quot;&quot;[1] In 2006, she released her debut album...&quot;&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;GsearchResultClass&quot;&quot;: &quot;&quot;GwebSearch&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;unescapedUrl&quot;&quot;: &quot;&quot;http://www.imdb.com/name/nm0385296/&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://www.imdb.com/name/nm0385296/&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;visibleUrl&quot;&quot;: &quot;&quot;www.imdb.com&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;cacheUrl&quot;&quot;: &quot;&quot;http://www.google.com/search?q=cache:1i34KkqnsooJ:www.imdb.com&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;title&quot;&quot;: &quot;&quot;&lt;b&gt;Paris Hilton&lt;/b&gt;&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;titleNoFormatting&quot;&quot;: &quot;&quot;Paris Hilton&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;content&quot;&quot;: &quot;&quot;Self: Zoolander. Socialite &lt;b&gt;Paris Hilton&lt;/b&gt;...&quot;&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; ],</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;cursor&quot;&quot;: {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;pages&quot;&quot;: [</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;0&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 1</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;4&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 2</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;8&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 3</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;12&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 4</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; ],</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;estimatedResultCount&quot;&quot;: &quot;&quot;59600000&quot;&quot;,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;currentPageIndex&quot;&quot;: 0,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;moreResultsUrl&quot;&quot;: &quot;&quot;http://www.google.com/search?oe=utf8&amp;ie=utf8...&quot;&quot;</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; }</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; },</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;responseDetails&quot;&quot;: null,</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;responseStatus&quot;&quot;: 200</span></pre>
-<pre style="margin: 0px;"><span style="color: #a31515;">}&quot;</span>;</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> googleSearch = <span style="color: #2b91af;">JObject</span>.Parse(googleSearchText);</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">// get JSON result objects into a list</span></pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: #2b91af;">JToken</span>&gt; results = googleSearch[<span style="color: #a31515;">&quot;responseData&quot;</span>][<span style="color: #a31515;">&quot;results&quot;</span>].Children().ToList();</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">// serialize JSON results into .NET objects</span></pre>
-<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: #2b91af;">SearchResult</span>&gt; searchResults = <span style="color: blue;">new</span> <span style="color: #2b91af;">List</span>&lt;<span style="color: #2b91af;">SearchResult</span>&gt;();</pre>
-<pre style="margin: 0px;"><span style="color: blue;">foreach</span> (<span style="color: #2b91af;">JToken</span> result <span style="color: blue;">in</span> results)</pre>
-<pre style="margin: 0px;">{</pre>
-<pre style="margin: 0px;">&nbsp; <span style="color: #2b91af;">SearchResult</span> searchResult = <span style="color: #2b91af;">JsonConvert</span>.DeserializeObject&lt;<span style="color: #2b91af;">SearchResult</span>&gt;(result.ToString());</pre>
-<pre style="margin: 0px;">&nbsp; searchResults.Add(searchResult);</pre>
-<pre style="margin: 0px;">}</pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">// Title = &lt;b&gt;Paris Hilton&lt;/b&gt; - Wikipedia, the free encyclopedia</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// Content = [1] In 2006, she released her debut album...</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// Url = http://en.wikipedia.org/wiki/Paris_Hilton</span></pre>
-<pre style="margin: 0px;">&nbsp;</pre>
-<pre style="margin: 0px;"><span style="color: green;">// Title = &lt;b&gt;Paris Hilton&lt;/b&gt;</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// Content = Self: Zoolander. Socialite &lt;b&gt;Paris Hilton&lt;/b&gt;...</span></pre>
-<pre style="margin: 0px;"><span style="color: green;">// Url = http://www.imdb.com/name/nm0385296/</span></pre>
-</div>
-
-
-</div>
-  </div>
-
-      <div id="footer"></div>      
-    </div>
-
-  </body>
-
+<html>
+  
+  <head>
+    <title>Serializing Partial JSON Fragments</title>
+    <link href="styles.css" rel="stylesheet" type="text/css" />
+    <link href="custom.css" rel="stylesheet" type="text/css" />
+  </head>
+  
+  <body>
+    
+    <div id="control">
+      <span class="productTitle">Json.NET - Quick Starts & API Documentation</span><br />
+        <span class="topicTitle">Serializing Partial JSON Fragments</span></div>
+
+    <div id="content">
+      <span style="color: DarkGray"> </span>
+        <p>Often when working with large JSON documents you're only interested in a small fragment of information.
+            This scenario can be annoying when you want to serialize that Json.NET into .NET 
+            objects because you have to define .NET classes for the entire JSON result.</p>
+        <p>With Json.NET it is easy to get around this problem. Using LINQ to JSON you can 
+            extract the pieces of JSON you want to serialize before passing them to the Json.NET serializer.</p>
+
+<div class="overflowpanel">
+  <div class="code">
+
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">SearchResult</span></pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Title { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Content { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: blue;">public</span> <span style="color: blue;">string</span> Url { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</pre>
+<pre style="margin: 0px;">}</pre>
+</div>
+
+  </div>
+</div>
+
+<div class="overflowpanel">
+  <div class="code">
+  
+<div style="font-family: Courier New; font-size: 10pt; color: black;">
+<pre style="margin: 0px;"><span style="color: blue;">string</span> googleSearchText = <span style="color: #a31515;">@&quot;{</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;responseData&quot;&quot;: {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;results&quot;&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;GsearchResultClass&quot;&quot;: &quot;&quot;GwebSearch&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;unescapedUrl&quot;&quot;: &quot;&quot;http://en.wikipedia.org/wiki/Paris_Hilton&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://en.wikipedia.org/wiki/Paris_Hilton&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;visibleUrl&quot;&quot;: &quot;&quot;en.wikipedia.org&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;cacheUrl&quot;&quot;: &quot;&quot;http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;title&quot;&quot;: &quot;&quot;&lt;b&gt;Paris Hilton&lt;/b&gt; - Wikipedia, the free encyclopedia&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;titleNoFormatting&quot;&quot;: &quot;&quot;Paris Hilton - Wikipedia, the free encyclopedia&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;content&quot;&quot;: &quot;&quot;[1] In 2006, she released her debut album...&quot;&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;GsearchResultClass&quot;&quot;: &quot;&quot;GwebSearch&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;unescapedUrl&quot;&quot;: &quot;&quot;http://www.imdb.com/name/nm0385296/&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;url&quot;&quot;: &quot;&quot;http://www.imdb.com/name/nm0385296/&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;visibleUrl&quot;&quot;: &quot;&quot;www.imdb.com&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;cacheUrl&quot;&quot;: &quot;&quot;http://www.google.com/search?q=cache:1i34KkqnsooJ:www.imdb.com&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;title&quot;&quot;: &quot;&quot;&lt;b&gt;Paris Hilton&lt;/b&gt;&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;titleNoFormatting&quot;&quot;: &quot;&quot;Paris Hilton&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;content&quot;&quot;: &quot;&quot;Self: Zoolander. Socialite &lt;b&gt;Paris Hilton&lt;/b&gt;...&quot;&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; ],</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &quot;&quot;cursor&quot;&quot;: {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;pages&quot;&quot;: [</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;0&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 1</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;4&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 2</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;8&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 3</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; {</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;start&quot;&quot;: &quot;&quot;12&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;label&quot;&quot;: 4</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; ],</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;estimatedResultCount&quot;&quot;: &quot;&quot;59600000&quot;&quot;,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;currentPageIndex&quot;&quot;: 0,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; &nbsp; &quot;&quot;moreResultsUrl&quot;&quot;: &quot;&quot;http://www.google.com/search?oe=utf8&amp;ie=utf8...&quot;&quot;</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &nbsp; }</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; },</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;responseDetails&quot;&quot;: null,</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">&nbsp; &quot;&quot;responseStatus&quot;&quot;: 200</span></pre>
+<pre style="margin: 0px;"><span style="color: #a31515;">}&quot;</span>;</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">JObject</span> googleSearch = <span style="color: #2b91af;">JObject</span>.Parse(googleSearchText);</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">// get JSON result objects into a list</span></pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: #2b91af;">JToken</span>&gt; results = googleSearch[<span style="color: #a31515;">&quot;responseData&quot;</span>][<span style="color: #a31515;">&quot;results&quot;</span>].Children().ToList();</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">// serialize JSON results into .NET objects</span></pre>
+<pre style="margin: 0px;"><span style="color: #2b91af;">IList</span>&lt;<span style="color: #2b91af;">SearchResult</span>&gt; searchResults = <span style="color: blue;">new</span> <span style="color: #2b91af;">List</span>&lt;<span style="color: #2b91af;">SearchResult</span>&gt;();</pre>
+<pre style="margin: 0px;"><span style="color: blue;">foreach</span> (<span style="color: #2b91af;">JToken</span> result <span style="color: blue;">in</span> results)</pre>
+<pre style="margin: 0px;">{</pre>
+<pre style="margin: 0px;">&nbsp; <span style="color: #2b91af;">SearchResult</span> searchResult = <span style="color: #2b91af;">JsonConvert</span>.DeserializeObject&lt;<span style="color: #2b91af;">SearchResult</span>&gt;(result.ToString());</pre>
+<pre style="margin: 0px;">&nbsp; searchResults.Add(searchResult);</pre>
+<pre style="margin: 0px;">}</pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">// Title = &lt;b&gt;Paris Hilton&lt;/b&gt; - Wikipedia, the free encyclopedia</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// Content = [1] In 2006, she released her debut album...</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// Url = http://en.wikipedia.org/wiki/Paris_Hilton</span></pre>
+<pre style="margin: 0px;">&nbsp;</pre>
+<pre style="margin: 0px;"><span style="color: green;">// Title = &lt;b&gt;Paris Hilton&lt;/b&gt;</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// Content = Self: Zoolander. Socialite &lt;b&gt;Paris Hilton&lt;/b&gt;...</span></pre>
+<pre style="margin: 0px;"><span style="color: green;">// Url = http://www.imdb.com/name/nm0385296/</span></pre>
+</div>
+
+
+</div>
+  </div>
+
+      <div id="footer"></div>      
+    </div>
+
+  </body>
+
 </html>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/custom.css
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/custom.css
@@ -1,19 +1,19 @@
-div#content {
-	padding: 0 10px 10px 10px;
-}
-
-.overflowpanel
-{
-	width: 98%;
-	border: solid 1px #ccc;
-	overflow: auto;
-	overflow-y: hidden;
-	background-color: #fcfcfc;
-	margin-bottom: 1em;
-}
-
-.overflowpanel .code
-{
-	padding: 10px 4px 20px 10px;
-	display: block;
+div#content {
+	padding: 0 10px 10px 10px;
+}
+
+.overflowpanel
+{
+	width: 98%;
+	border: solid 1px #ccc;
+	overflow: auto;
+	overflow-y: hidden;
+	background-color: #fcfcfc;
+	margin-bottom: 1em;
+}
+
+.overflowpanel .code
+{
+	padding: 10px 4px 20px 10px;
+	display: block;
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/doc.shfbproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/doc.shfbproj
@@ -1,90 +1,90 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <!-- The configuration and platform will be used to determine which
-         assemblies to include from solution and project documentation
-         sources -->
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{fd19f68e-72c8-4576-9775-b4480b0db686}</ProjectGuid>
-    <SHFBSchemaVersion>1.9.3.0</SHFBSchemaVersion>
-    <!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual
-         Studio adds them anyway -->
-    <AssemblyName>Documentation</AssemblyName>
-    <RootNamespace>Documentation</RootNamespace>
-    <Name>Documentation</Name>
-    <!-- SHFB properties -->
-    <OutputPath>..\Working\Documentation\</OutputPath>
-    <HtmlHelpName>Documentation</HtmlHelpName>
-    <ProjectSummary>
-    </ProjectSummary>
-    <MissingTags>Summary, Parameter, Returns, AutoDocumentCtors, Namespace, TypeParameter</MissingTags>
-    <VisibleItems>InheritedMembers, InheritedFrameworkMembers, Protected, SealedProtected</VisibleItems>
-    <HtmlHelp1xCompilerPath>
-    </HtmlHelp1xCompilerPath>
-    <HtmlHelp2xCompilerPath>
-    </HtmlHelp2xCompilerPath>
-    <SandcastlePath>
-    </SandcastlePath>
-    <WorkingPath>
-    </WorkingPath>
-    <BuildLogFile>
-    </BuildLogFile>
-    <HelpFileFormat>HtmlHelp1, MSHelpViewer, Website</HelpFileFormat>
-    <FrameworkVersion>.NET 3.5</FrameworkVersion>
-    <HelpTitle>Json.NET - Quick Starts &amp;amp%3b API Documentation</HelpTitle>
-    <PresentationStyle>Prototype</PresentationStyle>
-    <NamingMethod>MemberName</NamingMethod>
-    <DocumentationSourcePath>..\Src\Newtonsoft.Json\bin\Release</DocumentationSourcePath>
-    <DocumentationSources>
-      <DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.dll" />
-      <DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.xml" />
-    </DocumentationSources>
-    <NamespaceSummaries>
-      <NamespaceSummaryItem name="(global)" isDocumented="False" />
-      <NamespaceSummaryItem name="Newtonsoft.Json" isDocumented="True">The &lt;b&gt;Newtonsoft.Json&lt;/b&gt; namespace provides classes that are used to implement the core services of the framework.</NamespaceSummaryItem>
-      <NamespaceSummaryItem name="Newtonsoft.Json.Converters" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Converters&lt;/b&gt; namespace provides classes that inherit from &lt;a href="T_Newtonsoft_Json_JsonConverter.htm"&gt;JsonConverter&lt;/a&gt;.</NamespaceSummaryItem>
-      <NamespaceSummaryItem name="Newtonsoft.Json.Linq" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq&lt;/b&gt; namespace provides classes that are used to implement LINQ to JSON.</NamespaceSummaryItem>
-      <NamespaceSummaryItem name="Newtonsoft.Json.Linq.ComponentModel" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq.ComponentModel&lt;/b&gt; namespace provides classes for LINQ to JSON databinding.</NamespaceSummaryItem>
-      <NamespaceSummaryItem name="Newtonsoft.Json.Schema" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Schema&lt;/b&gt; namespace provides classes that are used to implement JSON schema.</NamespaceSummaryItem>
-      <NamespaceSummaryItem name="Newtonsoft.Json.Serialization" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq&lt;/b&gt; namespace provides classes that are used when serializing and deserializing JSON.</NamespaceSummaryItem>
-      <NamespaceSummaryItem name="Newtonsoft.Json.Utilities" isDocumented="False" />
-      <NamespaceSummaryItem name="Newtonsoft.Json.Bson" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq&lt;/b&gt; namespace provides classes that are used to implement BSON.</NamespaceSummaryItem>
-    </NamespaceSummaries>
-  </PropertyGroup>
-  <!-- There are no properties for these two groups but they need to appear in
-       order for Visual Studio to perform the build. -->
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-  </PropertyGroup>
-  <ItemGroup>
-    <SiteMap Include="doc.sitemap" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="CustomCreationConverter.html" />
-    <Content Include="ContractResolver.html" />
-    <Content Include="custom.css" />
-    <Content Include="ConvertingJSONandXML.html" />
-    <Content Include="SerializationSettings.html" />
-    <Content Include="SerializationGuide.html" />
-    <Content Include="SerializingJSONFragments.html" />
-    <Content Include="SelectToken.html" />
-    <Content Include="ReducingSerializedJSONSize.html" />
-    <Content Include="donate.gif" />
-    <Content Include="styles.css" />
-    <Content Include="ReadingWritingJSON.html" />
-    <Content Include="LINQtoJSON.html" />
-    <Content Include="PreserveObjectReferences.html" />
-    <Content Include="SerializationErrorHandling.html" />
-    <Content Include="SerializationCallbacks.html" />
-    <Content Include="SerializingCollections.html" />
-    <Content Include="DatesInJSON.html" />
-    <Content Include="SerializationAttributes.html" />
-    <Content Include="SerializingJSON.html" />
-    <Content Include="Introduction.html" />
-  </ItemGroup>
-  <!-- Import the SHFB build targets -->
-  <Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <!-- The configuration and platform will be used to determine which
+         assemblies to include from solution and project documentation
+         sources -->
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{fd19f68e-72c8-4576-9775-b4480b0db686}</ProjectGuid>
+    <SHFBSchemaVersion>1.9.3.0</SHFBSchemaVersion>
+    <!-- AssemblyName, Name, and RootNamespace are not used by SHFB but Visual
+         Studio adds them anyway -->
+    <AssemblyName>Documentation</AssemblyName>
+    <RootNamespace>Documentation</RootNamespace>
+    <Name>Documentation</Name>
+    <!-- SHFB properties -->
+    <OutputPath>..\Working\Documentation\</OutputPath>
+    <HtmlHelpName>Documentation</HtmlHelpName>
+    <ProjectSummary>
+    </ProjectSummary>
+    <MissingTags>Summary, Parameter, Returns, AutoDocumentCtors, Namespace, TypeParameter</MissingTags>
+    <VisibleItems>InheritedMembers, InheritedFrameworkMembers, Protected, SealedProtected</VisibleItems>
+    <HtmlHelp1xCompilerPath>
+    </HtmlHelp1xCompilerPath>
+    <HtmlHelp2xCompilerPath>
+    </HtmlHelp2xCompilerPath>
+    <SandcastlePath>
+    </SandcastlePath>
+    <WorkingPath>
+    </WorkingPath>
+    <BuildLogFile>
+    </BuildLogFile>
+    <HelpFileFormat>HtmlHelp1, MSHelpViewer, Website</HelpFileFormat>
+    <FrameworkVersion>.NET 3.5</FrameworkVersion>
+    <HelpTitle>Json.NET - Quick Starts &amp;amp%3b API Documentation</HelpTitle>
+    <PresentationStyle>Prototype</PresentationStyle>
+    <NamingMethod>MemberName</NamingMethod>
+    <DocumentationSourcePath>..\Src\Newtonsoft.Json\bin\Release</DocumentationSourcePath>
+    <DocumentationSources>
+      <DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.dll" />
+      <DocumentationSource sourceFile="$(DocumentationSourcePath)\Newtonsoft.Json.xml" />
+    </DocumentationSources>
+    <NamespaceSummaries>
+      <NamespaceSummaryItem name="(global)" isDocumented="False" />
+      <NamespaceSummaryItem name="Newtonsoft.Json" isDocumented="True">The &lt;b&gt;Newtonsoft.Json&lt;/b&gt; namespace provides classes that are used to implement the core services of the framework.</NamespaceSummaryItem>
+      <NamespaceSummaryItem name="Newtonsoft.Json.Converters" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Converters&lt;/b&gt; namespace provides classes that inherit from &lt;a href="T_Newtonsoft_Json_JsonConverter.htm"&gt;JsonConverter&lt;/a&gt;.</NamespaceSummaryItem>
+      <NamespaceSummaryItem name="Newtonsoft.Json.Linq" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq&lt;/b&gt; namespace provides classes that are used to implement LINQ to JSON.</NamespaceSummaryItem>
+      <NamespaceSummaryItem name="Newtonsoft.Json.Linq.ComponentModel" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq.ComponentModel&lt;/b&gt; namespace provides classes for LINQ to JSON databinding.</NamespaceSummaryItem>
+      <NamespaceSummaryItem name="Newtonsoft.Json.Schema" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Schema&lt;/b&gt; namespace provides classes that are used to implement JSON schema.</NamespaceSummaryItem>
+      <NamespaceSummaryItem name="Newtonsoft.Json.Serialization" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq&lt;/b&gt; namespace provides classes that are used when serializing and deserializing JSON.</NamespaceSummaryItem>
+      <NamespaceSummaryItem name="Newtonsoft.Json.Utilities" isDocumented="False" />
+      <NamespaceSummaryItem name="Newtonsoft.Json.Bson" isDocumented="True">The &lt;b&gt;Newtonsoft.Json.Linq&lt;/b&gt; namespace provides classes that are used to implement BSON.</NamespaceSummaryItem>
+    </NamespaceSummaries>
+  </PropertyGroup>
+  <!-- There are no properties for these two groups but they need to appear in
+       order for Visual Studio to perform the build. -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <SiteMap Include="doc.sitemap" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="CustomCreationConverter.html" />
+    <Content Include="ContractResolver.html" />
+    <Content Include="custom.css" />
+    <Content Include="ConvertingJSONandXML.html" />
+    <Content Include="SerializationSettings.html" />
+    <Content Include="SerializationGuide.html" />
+    <Content Include="SerializingJSONFragments.html" />
+    <Content Include="SelectToken.html" />
+    <Content Include="ReducingSerializedJSONSize.html" />
+    <Content Include="donate.gif" />
+    <Content Include="styles.css" />
+    <Content Include="ReadingWritingJSON.html" />
+    <Content Include="LINQtoJSON.html" />
+    <Content Include="PreserveObjectReferences.html" />
+    <Content Include="SerializationErrorHandling.html" />
+    <Content Include="SerializationCallbacks.html" />
+    <Content Include="SerializingCollections.html" />
+    <Content Include="DatesInJSON.html" />
+    <Content Include="SerializationAttributes.html" />
+    <Content Include="SerializingJSON.html" />
+    <Content Include="Introduction.html" />
+  </ItemGroup>
+  <!-- Import the SHFB build targets -->
+  <Import Project="$(SHFBROOT)\SandcastleHelpFileBuilder.targets" />
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/doc.sitemap
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/doc.sitemap
@@ -1,23 +1,23 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
-  <siteMapNode title="Introduction" url="Introduction.html" isDefault="true" />
-  <siteMapNode title="Serializing and Deserializing JSON" url="SerializingJSON.html">
-    <siteMapNode title="Serialization Settings" url="SerializationSettings.html" />
-    <siteMapNode title="Serialization Guide" url="SerializationGuide.html" />
-    <siteMapNode title="Serialization Attributes" url="SerializationAttributes.html" />
-    <siteMapNode title="Serialization Callbacks" url="SerializationCallbacks.html" />
-    <siteMapNode title="Serialization Error Handling" url="SerializationErrorHandling.html" />
-    <siteMapNode title="Serialization and Preserving Object References" url="PreserveObjectReferences.html" />
-    <siteMapNode title="CustomCreationConverter" url="CustomCreationConverter.html" />
-    <siteMapNode title="Contract Resolvers" url="ContractResolver.html" />
-    <siteMapNode title="Serializing Collections" url="SerializingCollections.html" />
-    <siteMapNode title="Serializing Dates in JSON" url="DatesInJSON.html" />
-    <siteMapNode title="Reducing Serialized JSON Size" url="ReducingSerializedJSONSize.html" />
-    <siteMapNode title="Serializing Partial JSON Fragments" url="SerializingJSONFragments.html" />
-  </siteMapNode>
-  <siteMapNode title="LINQ to JSON" url="LINQtoJSON.html">
-    <siteMapNode title="Querying LINQ to JSON with SelectToken" url="SelectToken.html" />
-  </siteMapNode>
-  <siteMapNode title="Reading and writing JSON" url="ReadingWritingJSON.html" />
-  <siteMapNode title="Converting between JSON and XML" url="ConvertingJSONandXML.html" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
+  <siteMapNode title="Introduction" url="Introduction.html" isDefault="true" />
+  <siteMapNode title="Serializing and Deserializing JSON" url="SerializingJSON.html">
+    <siteMapNode title="Serialization Settings" url="SerializationSettings.html" />
+    <siteMapNode title="Serialization Guide" url="SerializationGuide.html" />
+    <siteMapNode title="Serialization Attributes" url="SerializationAttributes.html" />
+    <siteMapNode title="Serialization Callbacks" url="SerializationCallbacks.html" />
+    <siteMapNode title="Serialization Error Handling" url="SerializationErrorHandling.html" />
+    <siteMapNode title="Serialization and Preserving Object References" url="PreserveObjectReferences.html" />
+    <siteMapNode title="CustomCreationConverter" url="CustomCreationConverter.html" />
+    <siteMapNode title="Contract Resolvers" url="ContractResolver.html" />
+    <siteMapNode title="Serializing Collections" url="SerializingCollections.html" />
+    <siteMapNode title="Serializing Dates in JSON" url="DatesInJSON.html" />
+    <siteMapNode title="Reducing Serialized JSON Size" url="ReducingSerializedJSONSize.html" />
+    <siteMapNode title="Serializing Partial JSON Fragments" url="SerializingJSONFragments.html" />
+  </siteMapNode>
+  <siteMapNode title="LINQ to JSON" url="LINQtoJSON.html">
+    <siteMapNode title="Querying LINQ to JSON with SelectToken" url="SelectToken.html" />
+  </siteMapNode>
+  <siteMapNode title="Reading and writing JSON" url="ReadingWritingJSON.html" />
+  <siteMapNode title="Converting between JSON and XML" url="ConvertingJSONandXML.html" />
 </siteMap>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/readme.txt
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/readme.txt
@@ -1,59 +1,59 @@
-Json.NET
-
-http://james.newtonking.com/projects/json-net.aspx
-http://www.codeplex.com/json/
-
-
-Description:
-
-Json.NET makes working with JSON formatted data in .NET simple. Quickly read and write JSON using LINQ to JSON or serialize your .NET objects with a single method call using the JsonSerializer.
-
--Flexible JSON serializer to convert .NET objects to JSON and back again 
--LINQ to JSON for reading and writing JSON 
--Writes indented, easy to read JSON 
--Convert JSON to and from XML 
--Supports Silverlight and Windows Phone
-
-
-
-Versions:
-
-Json.NET comes in different versions for the various .NET frameworks.
-
--DotNet:
-  .NET latest (4.0)
-
--DotNet35:
-  .NET 3.5 SP1, Mono
-
--DotNet20:
-  .NET 2.0
-
--Silverlight:
-  Silverlight 4.0
-
--WindowsPhone:
-  Windows Phone 7
-
-Microsoft stopped support for the Compact Framework in Visual Studio 2010.
-For a Compact Framework 3.5 build download Json.NET 3.5.
-
-For a Silverlight 3.0 build down download Json.NET 3.5.
-
-
-Instructions:
-
- 1. Extract Newtonsoft.Json.dll and Newtonsoft.Json.xml from the archive's /bin directory into your own applications.
- 2. Add a reference to Newtonsoft.Json.dll within Visual Studio.NET to your project.
-
-
-
-License:
-
-Copyright (c) 2007 James Newton-King
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
+Json.NET
+
+http://james.newtonking.com/projects/json-net.aspx
+http://www.codeplex.com/json/
+
+
+Description:
+
+Json.NET makes working with JSON formatted data in .NET simple. Quickly read and write JSON using LINQ to JSON or serialize your .NET objects with a single method call using the JsonSerializer.
+
+-Flexible JSON serializer to convert .NET objects to JSON and back again 
+-LINQ to JSON for reading and writing JSON 
+-Writes indented, easy to read JSON 
+-Convert JSON to and from XML 
+-Supports Silverlight and Windows Phone
+
+
+
+Versions:
+
+Json.NET comes in different versions for the various .NET frameworks.
+
+-DotNet:
+  .NET latest (4.0)
+
+-DotNet35:
+  .NET 3.5 SP1, Mono
+
+-DotNet20:
+  .NET 2.0
+
+-Silverlight:
+  Silverlight 4.0
+
+-WindowsPhone:
+  Windows Phone 7
+
+Microsoft stopped support for the Compact Framework in Visual Studio 2010.
+For a Compact Framework 3.5 build download Json.NET 3.5.
+
+For a Silverlight 3.0 build down download Json.NET 3.5.
+
+
+Instructions:
+
+ 1. Extract Newtonsoft.Json.dll and Newtonsoft.Json.xml from the archive's /bin directory into your own applications.
+ 2. Add a reference to Newtonsoft.Json.dll within Visual Studio.NET to your project.
+
+
+
+License:
+
+Copyright (c) 2007 James Newton-King
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/styles.css
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/styles.css
@@ -1,439 +1,439 @@
-/* page style */
-
-body {
-	margin: 0;
-	background-color: #FFFFFF;
-	padding: 0;
-	font-size: 8.5pt;
-	font-family: verdana, arial, sans-serif;
-	color: #000000;
-}
-
-html>body {
-	margin: 0;
-	background-color: #FFFFFF;
-	padding: 0;
-	font-size: 8.5pt;
-	font-family: verdana, arial, sans-serif;
-	color: #000000;
-    	overflow: auto;
-}
-
-table {
-	/* this is a trick to force tables to inherit the body font size */
-	font-size: 100%;
-}
-
-/* non-scrolling (control) region style */
-
-div#control {
-	margin: 0;
-	background-color: #D4DFFF;
-	padding: 4px;
-	width: 100%;
-	border-bottom-color: #C8CDDE;
-	border-bottom-style: solid;
-	border-bottom-width: 1px;
-	z-index: 2;
-}
-
-span.productTitle {
-	font-size: 80%;
-}
-
-span.topicTitle {
-	font-size: 140%;
-	font-weight: bold;
-	color: #003399;
-}
-
-span#chickenFeet {
-	float: left;
-}
-
-span#languageFilter {
-	float: right;
-	height: 1px;
-	max-height: 1px;
-	vertical-align: bottom;
-	overflow: visible;
-}
-
-/* scrolling (content) region style */
-
-div#main
-{
-	clear: both;
-	margin: 0;
-	padding: 1em;
-	width: 100%;
-	z-index: 1;
-    overflow: auto;
-}
-
-/* sections */
-
-div#header {
-	font-size: 80%;
-	color: #666666;
-	margin-bottom: 0.5em;
-}
-
-div.summary {
-	margin-top: 0em;
-	margin-bottom: 1em;
-}
-
-div.section {
-	margin-bottom: 1em;
-}
-
-div.sectionTitle {
-	display: inline;
-	font-size: 120%;
-	font-weight: bold;
-	color: #003399;
-}
-
-div.sectionContent {
-	margin-top: 0.2em;
-}
-
-span.subsectionTitle {
-	font-weight: bold;
-}
-
-div#footer {
-	margin-top: 1em;
-	border-top: thin solid #003399;
-	padding-top: 0.5em;
-}
-
-div#footer p {
-	margin-top: 0.2em;
-	margin-bottom: 0.2em;
-}
-
-/* authored content (block) */
-
-p {
-	margin-top: 1em;
-	margin-bottom: 1em;
-}
-
-dl, ul, ol {
-	margin-top: 0.5em;
-	margin-bottom: 0.5em;
-}
-
-pre {
-	margin: 0;
-	padding: 0;
-	font-family: "Andale Mono", "Courier New", Courier, monospace;
-}
-
-table.authoredTable {
-	table-layout: fixed;
-	width: 100%;
-	margin-bottom: 1em;
-}
-
-table.authoredTable th {
-	border-bottom-color: #C8CDDE;
-	border-bottom-style: solid;
-	border-bottom-width: 1px;
-	background: #EFEFF7;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: bold;
-}
-
-table.authoredTable td {
-	border-bottom-style: solid;
-	border-bottom-color: #C8CDDE;
-	border-bottom-width: 1px;
-	background: #F7F7FF;
-	padding: 0.2em;
-	vertical-align: top;
-}
-
-div.alert {
-	border: 1px solid #C8CDDE;
-	background: #F7F7FF;
-}
-
-div.media {
-	text-align: center;
-	margin-bottom: 1em;
-}
-
-
-/* authored content (inline) */
-
-span.keyword {
-	font-weight: bold;
-}
-
-span.code {
-	font-family: "Andale Mono", "Courier New", Courier, monospace;
-	font-size: 110%;
-	color:	#000066;
-}
-
-/* auto-generated controls */
-
-div.langTabs {
-	/*width: 100%;*/
-}
-
-div.langTab {
-	float: left;
-	width: 15%;
-	border-top: 1px solid #C8CDDE;
-	border-left: 1px solid #C8CDDE;
-	border-right: 1px solid #C8CDDE;
-	background: #F7F7FF;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: normal;
-}
-
-div.activeLangTab {
-	float: left;
-	width: 15%;
-	border-top: 1px solid #C8CDDE;
-	border-left: 1px solid #C8CDDE;
-	border-right: 1px solid #C8CDDE;
-	background: #EFEFF7;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: bold;
-}
-
-table.members {
-	/* table-layout: fixed; */
-	width: 100%;
-}
-
-table.members th.iconColumn {
-	width: 60px;
-}
-
-table.members th.nameColumn {
-	width: 40%;
-}
-
-table.members th.descriptionColumn {
-	width: 60%;
-}
-
-table.members th {
-	border-bottom-color: #C8CDDE;
-	border-bottom-style: solid;
-	border-bottom-width: 1px;
-	background: #EFEFF7;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: bold;
-}
-
-table.members td {
-	border-bottom-style: solid;
-	border-bottom-color: #C8CDDE;
-	border-bottom-width: 1px;
-	background: #F7F7FF;
-	padding: 0.2em;
-	vertical-align: top;
-	overflow: hidden;
-}
-
-table.exceptions {
-	table-layout: fixed;
-	width: 100%;
-}
-
-
-table.exceptions th.exceptionNameColumn {
-	width: 40%;
-}
-
-table.exceptions th.exceptionConditionColumn {
-	width: 60%;
-}
-
-table.exceptions th {
-	border-bottom-color: #C8CDDE;
-	border-bottom-style: solid;
-	border-bottom-width: 1px;
-	background: #EFEFF7;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: bold;
-}
-
-table.exceptions td {
-	border-bottom-style: solid;
-	border-bottom-color: #C8CDDE;
-	border-bottom-width: 1px;
-	background: #F7F7FF;
-	padding: 0.2em;
-	vertical-align: top;
-}
-
-table.permissions {
-	table-layout: fixed;
-	width: 100%;
-}
-
-
-table.permissions th.permissionNameColumn {
-	width: 40%;
-}
-
-table.permissions th.permissionConditionColumn {
-	width: 60%;
-}
-
-table.permissions th {
-	border-bottom-color: #C8CDDE;
-	border-bottom-style: solid;
-	border-bottom-width: 1px;
-	background: #EFEFF7;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: bold;
-}
-
-table.permissions td {
-	border-bottom-style: solid;
-	border-bottom-color: #C8CDDE;
-	border-bottom-width: 1px;
-	background: #F7F7FF;
-	padding: 0.2em;
-	vertical-align: top;
-}
-
-span.obsolete {
-	color: red;
-}
-
-span.cs {
-	display: inline;
-}
-
-span.vb {
-	display: none;
-}
-
-span.cpp {
-	display: none;
-}
-
-span.nu
-{
-	display: none;
-}
-
-/* syntax styling */
-
-div.code span.identifier {
-	font-weight: bold;
-}
-
-div.code span.keyword {
-	color: green;
-}
-
-div.code span.parameter {
-	font-style: italic;
-	color: purple;
-}
-
-div.code span.literal {
-	color: purple;
-}
-
-div.code span.comment {
-	color: red;
-}
-
-span.foreignPhrase {
-	font-style: italic;
-}
-
-span.placeholder {
-	font-style: italic;
-}
-
-span.parameter
-{
-  font-style: italic;
-}
-
-span.typeparameter
-{
-  font-style: italic;
-}
-
-a {
-	color: blue;
-	text-decoration: none;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-MSHelp\:link {
-	color: blue;
-	hoverColor: #3366ff;
-}
-
-span.nolink {
-	font-weight: bold;
-}
-
-span.selflink {
-	font-weight: bold;
-}
-
-table.filter {
-	table-layout: fixed;
-}
-
-tr.tabs td.tab {
-	width: 10em;
-	background: #F7F7FF;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: normal;
-	overflow: hidden;
-	cursor: pointer;
-}
-
-tr.tabs td.activeTab {
-	width: 10em;
-	background: #EFEFF7;
-	padding: 0.2em;
-	text-align: left;
-	color: #000066;
-	font-weight: bold;
-	overflow: hidden;
-}
-
-td.line {
-	background: #EFEFF7;
-}
-
-dt {
-	font-weight: bold;
-    margin-top: 10px;
-    margin-left: 10px;
-}
+/* page style */
+
+body {
+	margin: 0;
+	background-color: #FFFFFF;
+	padding: 0;
+	font-size: 8.5pt;
+	font-family: verdana, arial, sans-serif;
+	color: #000000;
+}
+
+html>body {
+	margin: 0;
+	background-color: #FFFFFF;
+	padding: 0;
+	font-size: 8.5pt;
+	font-family: verdana, arial, sans-serif;
+	color: #000000;
+    	overflow: auto;
+}
+
+table {
+	/* this is a trick to force tables to inherit the body font size */
+	font-size: 100%;
+}
+
+/* non-scrolling (control) region style */
+
+div#control {
+	margin: 0;
+	background-color: #D4DFFF;
+	padding: 4px;
+	width: 100%;
+	border-bottom-color: #C8CDDE;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	z-index: 2;
+}
+
+span.productTitle {
+	font-size: 80%;
+}
+
+span.topicTitle {
+	font-size: 140%;
+	font-weight: bold;
+	color: #003399;
+}
+
+span#chickenFeet {
+	float: left;
+}
+
+span#languageFilter {
+	float: right;
+	height: 1px;
+	max-height: 1px;
+	vertical-align: bottom;
+	overflow: visible;
+}
+
+/* scrolling (content) region style */
+
+div#main
+{
+	clear: both;
+	margin: 0;
+	padding: 1em;
+	width: 100%;
+	z-index: 1;
+    overflow: auto;
+}
+
+/* sections */
+
+div#header {
+	font-size: 80%;
+	color: #666666;
+	margin-bottom: 0.5em;
+}
+
+div.summary {
+	margin-top: 0em;
+	margin-bottom: 1em;
+}
+
+div.section {
+	margin-bottom: 1em;
+}
+
+div.sectionTitle {
+	display: inline;
+	font-size: 120%;
+	font-weight: bold;
+	color: #003399;
+}
+
+div.sectionContent {
+	margin-top: 0.2em;
+}
+
+span.subsectionTitle {
+	font-weight: bold;
+}
+
+div#footer {
+	margin-top: 1em;
+	border-top: thin solid #003399;
+	padding-top: 0.5em;
+}
+
+div#footer p {
+	margin-top: 0.2em;
+	margin-bottom: 0.2em;
+}
+
+/* authored content (block) */
+
+p {
+	margin-top: 1em;
+	margin-bottom: 1em;
+}
+
+dl, ul, ol {
+	margin-top: 0.5em;
+	margin-bottom: 0.5em;
+}
+
+pre {
+	margin: 0;
+	padding: 0;
+	font-family: "Andale Mono", "Courier New", Courier, monospace;
+}
+
+table.authoredTable {
+	table-layout: fixed;
+	width: 100%;
+	margin-bottom: 1em;
+}
+
+table.authoredTable th {
+	border-bottom-color: #C8CDDE;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	background: #EFEFF7;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: bold;
+}
+
+table.authoredTable td {
+	border-bottom-style: solid;
+	border-bottom-color: #C8CDDE;
+	border-bottom-width: 1px;
+	background: #F7F7FF;
+	padding: 0.2em;
+	vertical-align: top;
+}
+
+div.alert {
+	border: 1px solid #C8CDDE;
+	background: #F7F7FF;
+}
+
+div.media {
+	text-align: center;
+	margin-bottom: 1em;
+}
+
+
+/* authored content (inline) */
+
+span.keyword {
+	font-weight: bold;
+}
+
+span.code {
+	font-family: "Andale Mono", "Courier New", Courier, monospace;
+	font-size: 110%;
+	color:	#000066;
+}
+
+/* auto-generated controls */
+
+div.langTabs {
+	/*width: 100%;*/
+}
+
+div.langTab {
+	float: left;
+	width: 15%;
+	border-top: 1px solid #C8CDDE;
+	border-left: 1px solid #C8CDDE;
+	border-right: 1px solid #C8CDDE;
+	background: #F7F7FF;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: normal;
+}
+
+div.activeLangTab {
+	float: left;
+	width: 15%;
+	border-top: 1px solid #C8CDDE;
+	border-left: 1px solid #C8CDDE;
+	border-right: 1px solid #C8CDDE;
+	background: #EFEFF7;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: bold;
+}
+
+table.members {
+	/* table-layout: fixed; */
+	width: 100%;
+}
+
+table.members th.iconColumn {
+	width: 60px;
+}
+
+table.members th.nameColumn {
+	width: 40%;
+}
+
+table.members th.descriptionColumn {
+	width: 60%;
+}
+
+table.members th {
+	border-bottom-color: #C8CDDE;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	background: #EFEFF7;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: bold;
+}
+
+table.members td {
+	border-bottom-style: solid;
+	border-bottom-color: #C8CDDE;
+	border-bottom-width: 1px;
+	background: #F7F7FF;
+	padding: 0.2em;
+	vertical-align: top;
+	overflow: hidden;
+}
+
+table.exceptions {
+	table-layout: fixed;
+	width: 100%;
+}
+
+
+table.exceptions th.exceptionNameColumn {
+	width: 40%;
+}
+
+table.exceptions th.exceptionConditionColumn {
+	width: 60%;
+}
+
+table.exceptions th {
+	border-bottom-color: #C8CDDE;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	background: #EFEFF7;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: bold;
+}
+
+table.exceptions td {
+	border-bottom-style: solid;
+	border-bottom-color: #C8CDDE;
+	border-bottom-width: 1px;
+	background: #F7F7FF;
+	padding: 0.2em;
+	vertical-align: top;
+}
+
+table.permissions {
+	table-layout: fixed;
+	width: 100%;
+}
+
+
+table.permissions th.permissionNameColumn {
+	width: 40%;
+}
+
+table.permissions th.permissionConditionColumn {
+	width: 60%;
+}
+
+table.permissions th {
+	border-bottom-color: #C8CDDE;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	background: #EFEFF7;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: bold;
+}
+
+table.permissions td {
+	border-bottom-style: solid;
+	border-bottom-color: #C8CDDE;
+	border-bottom-width: 1px;
+	background: #F7F7FF;
+	padding: 0.2em;
+	vertical-align: top;
+}
+
+span.obsolete {
+	color: red;
+}
+
+span.cs {
+	display: inline;
+}
+
+span.vb {
+	display: none;
+}
+
+span.cpp {
+	display: none;
+}
+
+span.nu
+{
+	display: none;
+}
+
+/* syntax styling */
+
+div.code span.identifier {
+	font-weight: bold;
+}
+
+div.code span.keyword {
+	color: green;
+}
+
+div.code span.parameter {
+	font-style: italic;
+	color: purple;
+}
+
+div.code span.literal {
+	color: purple;
+}
+
+div.code span.comment {
+	color: red;
+}
+
+span.foreignPhrase {
+	font-style: italic;
+}
+
+span.placeholder {
+	font-style: italic;
+}
+
+span.parameter
+{
+  font-style: italic;
+}
+
+span.typeparameter
+{
+  font-style: italic;
+}
+
+a {
+	color: blue;
+	text-decoration: none;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+MSHelp\:link {
+	color: blue;
+	hoverColor: #3366ff;
+}
+
+span.nolink {
+	font-weight: bold;
+}
+
+span.selflink {
+	font-weight: bold;
+}
+
+table.filter {
+	table-layout: fixed;
+}
+
+tr.tabs td.tab {
+	width: 10em;
+	background: #F7F7FF;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: normal;
+	overflow: hidden;
+	cursor: pointer;
+}
+
+tr.tabs td.activeTab {
+	width: 10em;
+	background: #EFEFF7;
+	padding: 0.2em;
+	text-align: left;
+	color: #000066;
+	font-weight: bold;
+	overflow: hidden;
+}
+
+td.line {
+	background: #EFEFF7;
+}
+
+dt {
+	font-weight: bold;
+    margin-top: 10px;
+    margin-left: 10px;
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Doc/versions.txt
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Doc/versions.txt
@@ -1,32 +1,32 @@
-Versions:
-
-Json.NET comes in different versions for the various .NET frameworks.
-
--Net40:
-  .NET latest (4.0 & 4.5)
-
--Net35:
-  .NET 3.5 SP1, Mono
-
--Net20:
-  .NET 2.0
-
--Silverlight:
-  Silverlight 4 & 5
-
--WindowsPhone:
-  Windows Phone 7 & 7.1
-
--Metro
-  Windows 8 Metro, WinRT 4.5
-
-
-Notes:
-
-The Silverlight and Windows Phone builds are not strong-named.
-Use the assemblies in the Signed sub-directories for the strong-named versions.
-
-Microsoft stopped support for the Compact Framework in Visual Studio 2010.
-For a Compact Framework 3.5 build download Json.NET 3.5.
-
+Versions:
+
+Json.NET comes in different versions for the various .NET frameworks.
+
+-Net40:
+  .NET latest (4.0 & 4.5)
+
+-Net35:
+  .NET 3.5 SP1, Mono
+
+-Net20:
+  .NET 2.0
+
+-Silverlight:
+  Silverlight 4 & 5
+
+-WindowsPhone:
+  Windows Phone 7 & 7.1
+
+-Metro
+  Windows 8 Metro, WinRT 4.5
+
+
+Notes:
+
+The Silverlight and Windows Phone builds are not strong-named.
+Use the assemblies in the Signed sub-directories for the strong-named versions.
+
+Microsoft stopped support for the Compact Framework in Visual Studio 2010.
+For a Compact Framework 3.5 build download Json.NET 3.5.
+
 For a Silverlight 3.0 build download Json.NET 3.5.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.xml
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Lib/NUnit/DotNet/nunit.framework.xml
@@ -1,5521 +1,5521 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>nunit.framework</name>
-    </assembly>
-    <members>
-        <member name="T:NUnit.Framework.Constraints.SubstringConstraint">
-            <summary>
-            SubstringConstraint can test whether a string contains
-            the expected substring.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.Constraint">
-            <summary>
-            The Constraint class is the base of all built-in or
-            user-defined constraints in NUnit. It provides the operator
-            overloads used to combine constraints.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.UNSET">
-            <summary>
-            Static UnsetObject used to detect derived constraints
-            failing to set the actual value.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.caseInsensitive">
-            <summary>
-            If true, all string comparisons will ignore case
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.compareAsCollection">
-            <summary>
-            If true, arrays will be treated as collections, allowing
-            those of different dimensions to be compared
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.tolerance">
-            <summary>
-            If non-zero, equality comparisons within the specified 
-            tolerance will succeed.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.compareWith">
-            <summary>
-            IComparer object used in comparisons for some constraints.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.actual">
-            <summary>
-            The actual value being tested against a constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.Within(System.Object)">
-            <summary>
-            Flag the constraint to use a tolerance when determining equality.
-            Currently only used for doubles and floats.
-            </summary>
-            <param name="tolerance">Tolerance to be used</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.Comparer(System.Collections.IComparer)">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.WriteMessageTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the failure message to the MessageWriter provided
-            as an argument. The default implementation simply passes
-            the constraint and the actual value to the writer, which
-            then displays the constraint description and the value.
-            
-            Constraints that need to provide additional details,
-            such as where the error occured can override this.
-            </summary>
-            <param name="writer">The MessageWriter on which to display the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseAnd(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            This operator creates a constraint that is satisfied only if both 
-            argument constraints are satisfied.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseOr(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            This operator creates a constraint that is satisfied if either 
-            of the argument constraints is satisfied.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.op_LogicalNot(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            This operator creates a constraint that is satisfied if the 
-            argument constraint is not satisfied.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Constraint.IgnoreCase">
-            <summary>
-            Flag the constraint to ignore case and return self.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Constraint.AsCollection">
-            <summary>
-            Flag the constraint to compare arrays as collections
-            and return self.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.Constraint.UnsetObject">
-            <summary>
-            Class used to detect any derived constraints
-            that fail to set the actual value in their
-            Matches override.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:SubstringConstraint"/> class.
-            </summary>
-            <param name="expected">The expected.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.StartsWithConstraint">
-            <summary>
-            StartsWithConstraint can test whether a string starts
-            with an expected substring.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:StartsWithConstraint"/> class.
-            </summary>
-            <param name="expected">The expected string</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is matched by the actual value.
-            This is a template method, which calls the IsMatch method
-            of the derived class.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EndsWithConstraint">
-            <summary>
-            EndsWithConstraint can test whether a string ends
-            with an expected substring.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:EndsWithConstraint"/> class.
-            </summary>
-            <param name="expected">The expected string</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is matched by the actual value.
-            This is a template method, which calls the IsMatch method
-            of the derived class.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.RegexConstraint">
-            <summary>
-            RegexConstraint can test whether a string matches
-            the pattern provided.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RegexConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:RegexConstraint"/> class.
-            </summary>
-            <param name="pattern">The pattern.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RegexConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RegexConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EmptyConstraint">
-            <summary>
-            EmptyConstraint tests a whether a string or collection is empty,
-            postponing the decision about which test is applied until the
-            type of the actual argument is known.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder">
-            <summary>
-            ConstraintBuilder is used to resolve the Not and All properties,
-            which serve as prefix operators for constraints. With the addition
-            of an operand stack, And and Or could be supported, but we have
-            left them out in favor of a simpler, more type-safe implementation.
-            Use the &amp; and | operator overloads to combine constraints.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.op_Implicit(NUnit.Framework.Constraints.ConstraintBuilder)~NUnit.Framework.Constraints.Constraint">
-            <summary>
-            Implicitly convert ConstraintBuilder to an actual Constraint
-            at the point where the syntax demands it.
-            </summary>
-            <param name="builder"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.EqualTo(System.Object)">
-            <summary>
-            Resolves the chain of constraints using an
-            EqualConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.SameAs(System.Object)">
-            <summary>
-            Resolves the chain of constraints using a
-            SameAsConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.LessThan(System.IComparable)">
-            <summary>
-            Resolves the chain of constraints using a
-            LessThanConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.GreaterThan(System.IComparable)">
-            <summary>
-            Resolves the chain of constraints using a
-            GreaterThanConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.LessThanOrEqualTo(System.IComparable)">
-            <summary>
-            Resolves the chain of constraints using a
-            LessThanOrEqualConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.AtMost(System.IComparable)">
-            <summary>
-            Resolves the chain of constraints using a
-            LessThanOrEqualConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.GreaterThanOrEqualTo(System.IComparable)">
-            <summary>
-            Resolves the chain of constraints using a
-            GreaterThanOrEqualConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.AtLeast(System.IComparable)">
-            <summary>
-            Resolves the chain of constraints using a
-            GreaterThanOrEqualConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.TypeOf(System.Type)">
-            <summary>
-            Resolves the chain of constraints using an
-            ExactTypeConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.InstanceOfType(System.Type)">
-            <summary>
-            Resolves the chain of constraints using an
-            InstanceOfTypeConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.AssignableFrom(System.Type)">
-            <summary>
-            Resolves the chain of constraints using an
-            AssignableFromConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Contains(System.Object)">
-            <summary>
-            Resolves the chain of constraints using a
-            ContainsConstraint as base. This constraint
-            will, in turn, make use of the appropriate
-            second-level constraint, depending on the
-            type of the actual argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Member(System.Object)">
-            <summary>
-            Resolves the chain of constraints using a 
-            CollectionContainsConstraint as base.
-            </summary>
-            <param name="expected">The expected object</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.StartsWith(System.String)">
-            <summary>
-            Resolves the chain of constraints using a
-            StartsWithConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.EndsWith(System.String)">
-            <summary>
-            Resolves the chain of constraints using a
-            StringEndingConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Matches(System.String)">
-            <summary>
-            Resolves the chain of constraints using a
-            StringMatchingConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.EquivalentTo(System.Collections.ICollection)">
-            <summary>
-            Resolves the chain of constraints using a
-            CollectionEquivalentConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.CollectionContaining(System.Object)">
-            <summary>
-            Resolves the chain of constraints using a
-            CollectionContainingConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.SubsetOf(System.Collections.ICollection)">
-            <summary>
-            Resolves the chain of constraints using a
-            CollectionSubsetConstraint as base.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Property(System.String,System.Object)">
-            <summary>
-            Resolves the chain of constraints using a 
-            PropertyConstraint as base
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Length(System.Int32)">
-            <summary>
-            Resolves the chain of constraints using a
-            PropertyCOnstraint on Length as base
-            </summary>
-            <param name="length"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Count(System.Int32)">
-            <summary>
-            Resolves the chain of constraints using a
-            PropertyCOnstraint on Length as base
-            </summary>
-            <param name="count"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Property(System.String)">
-            <summary>
-            Modifies the ConstraintBuilder by pushing a Prop operator on the
-            ops stack and the name of the property on the opnds stack.
-            </summary>
-            <param name="name"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Resolve(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Resolve a constraint that has been recognized by applying
-            any pending operators and returning the resulting Constraint.
-            </summary>
-            <returns>A constraint that incorporates all pending operators</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Null">
-            <summary>
-            Resolves the chain of constraints using
-            EqualConstraint(null) as base.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.True">
-            <summary>
-            Resolves the chain of constraints using
-            EqualConstraint(true) as base.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.False">
-            <summary>
-            Resolves the chain of constraints using
-            EqualConstraint(false) as base.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.NaN">
-            <summary>
-            Resolves the chain of constraints using
-            Is.NaN as base.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Empty">
-            <summary>
-            Resolves the chain of constraints using
-            Is.Empty as base.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Unique">
-            <summary>
-            Resolves the chain of constraints using
-            Is.Unique as base.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Not">
-            <summary>
-            Modifies the ConstraintBuilder by pushing a Not operator on the stack.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.No">
-            <summary>
-            Modifies the ConstraintBuilder by pushing a Not operator on the stack.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.All">
-            <summary>
-            Modifies the ConstraintBuilder by pushing an All operator on the stack.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Some">
-            <summary>
-            Modifies the ConstraintBuilder by pushing a Some operator on the stack.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.None">
-            <summary>
-            Modifies the constraint builder by pushing All and Not operators on the stack
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionConstraint">
-            <summary>
-            CollectionConstraint is the abstract base class for
-            constraints that operate on collections.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.doMatch(System.Collections.ICollection)">
-            <summary>
-            Protected method to be implemented by derived classes
-            </summary>
-            <param name="collecton"></param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally">
-            <summary>
-            CollectionTally counts (tallies) the number of
-            occurences of each object in one or more enuerations.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.#ctor(System.Collections.IEnumerable)">
-            <summary>
-            Construct a CollectionTally object from a collection
-            </summary>
-            <param name="collection"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.CanRemove(System.Collections.IEnumerable)">
-            <summary>
-            Remove the counts for a collection from the tally,
-            so long as their are sufficient items to remove.
-            The tallies are not permitted to become negative.
-            </summary>
-            <param name="c">The collection to remove</param>
-            <returns>True if there were enough items to remove, otherwise false</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.AllCountsEqualTo(System.Int32)">
-            <summary>
-            Test whether all the counts are equal to a given value
-            </summary>
-            <param name="count">The value to be looked for</param>
-            <returns>True if all counts are equal to the value, otherwise false</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.Item(System.Object)">
-            <summary>
-            Get the count of the number of times an object is present in the tally
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.UniqueItemsConstraint">
-            <summary>
-            UniqueItemsConstraint tests whether all the items in a 
-            collection are unique.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.doMatch(System.Collections.ICollection)">
-            <summary>
-            Apply the item constraint to each item in the collection,
-            failing if any item fails.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionContainsConstraint">
-            <summary>
-            CollectionContainsConstraint is used to test whether a collection
-            contains an expected object as a member.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.#ctor(System.Object)">
-            <summary>
-            Construct a CollectionContainsConstraint
-            </summary>
-            <param name="expected"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.doMatch(System.Collections.ICollection)">
-            <summary>
-            Test whether the expected item is contained in the collection
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a descripton of the constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionEquivalentConstraint">
-            <summary>
-            CollectionEquivalentCOnstraint is used to determine whether two
-            collections are equivalent.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.#ctor(System.Collections.IEnumerable)">
-            <summary>
-            Construct a CollectionEquivalentConstraint
-            </summary>
-            <param name="expected"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.doMatch(System.Collections.ICollection)">
-            <summary>
-            Test whether two collections are equivalent
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionSubsetConstraint">
-            <summary>
-            CollectionSubsetConstraint is used to determine whether
-            one collection is a subset of another
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.#ctor(System.Collections.IEnumerable)">
-            <summary>
-            Construct a CollectionSubsetConstraint
-            </summary>
-            <param name="expected">The collection that the actual value is expected to be a subset of</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.doMatch(System.Collections.ICollection)">
-            <summary>
-            Test whether the actual collection is a subset of 
-            the expected collection provided.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EqualConstraint">
-            <summary>
-            EqualConstraint is able to compare an actual value with the
-            expected value provided in its constructor.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:EqualConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteMessageTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a failure message. Overridden to provide custom 
-            failure messages for EqualConstraint.
-            </summary>
-            <param name="writer">The MessageWriter to write to</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write description of this constraint
-            </summary>
-            <param name="writer">The MessageWriter to write to</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.ArraysEqual(System.Array,System.Array)">
-            <summary>
-            Helper method to compare two arrays
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionDifferences(NUnit.Framework.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
-            <summary>
-            Display the failure information for two collections that did not match.
-            </summary>
-            <param name="writer">The MessageWriter on which to display</param>
-            <param name="expected">The expected collection.</param>
-            <param name="actual">The actual collection</param>
-            <param name="depth">The depth of this failure in a set of nested collections</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionTypesAndSizes(NUnit.Framework.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
-            <summary>
-            Displays a single line showing the types and sizes of the expected
-            and actual collections or arrays. If both are identical, the value is 
-            only shown once.
-            </summary>
-            <param name="writer">The MessageWriter on which to display</param>
-            <param name="expected">The expected collection or array</param>
-            <param name="actual">The actual collection or array</param>
-            <param name="indent">The indentation level for the message line</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayFailurePoint(NUnit.Framework.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32,System.Int32)">
-            <summary>
-            Displays a single line showing the point in the expected and actual
-            arrays at which the comparison failed. If the arrays have different
-            structures or dimensions, both values are shown.
-            </summary>
-            <param name="writer">The MessageWriter on which to display</param>
-            <param name="expected">The expected array</param>
-            <param name="actual">The actual array</param>
-            <param name="failurePoint">Index of the failure point in the underlying collections</param>
-            <param name="indent">The indentation level for the message line</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PrefixConstraint">
-            <summary>
-            Abstract base class used for prefixes
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.PrefixConstraint.baseConstraint">
-            <summary>
-            The base constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PrefixConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct given a base constraint
-            </summary>
-            <param name="baseConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PrefixConstraint.PassModifiersToBase">
-            <summary>
-            Set all modifiers applied to the prefix into
-            the base constraint before matching
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NotConstraint">
-            <summary>
-            NotConstraint negates the effect of some other constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Initializes a new instance of the <see cref="T:NotConstraint"/> class.
-            </summary>
-            <param name="baseConstraint">The base constraint to be negated.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for if the base constraint fails, false if it succeeds</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a MessageWriter.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AllItemsConstraint">
-            <summary>
-            AllItemsConstraint applies another constraint to each
-            item in a collection, succeeding if they all succeed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct an AllItemsConstraint on top of an existing constraint
-            </summary>
-            <param name="itemConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.Matches(System.Object)">
-            <summary>
-            Apply the item constraint to each item in the collection,
-            failing if any item fails.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SomeItemsConstraint">
-            <summary>
-            SomeItemsConstraint applies another constraint to each
-            item in a collection, succeeding if any of them succeeds.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct a SomeItemsConstraint on top of an existing constraint
-            </summary>
-            <param name="itemConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.Matches(System.Object)">
-            <summary>
-            Apply the item constraint to each item in the collection,
-            failing if any item fails.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NoItemConstraint">
-            <summary>
-            SomeItemsConstraint applies another constraint to each
-            item in a collection, succeeding if any of them succeeds.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct a SomeItemsConstraint on top of an existing constraint
-            </summary>
-            <param name="itemConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.Matches(System.Object)">
-            <summary>
-            Apply the item constraint to each item in the collection,
-            failing if any item fails.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SameAsConstraint">
-            <summary>
-            SameAsConstraint tests whether an object is identical to
-            the object passed to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:SameAsConstraint"/> class.
-            </summary>
-            <param name="expected">The expected object.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.TypeConstraint">
-            <summary>
-            TypeConstraint is the abstract base for constraints
-            that take a Type as their expected value.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.TypeConstraint.expectedType">
-            <summary>
-            The expected Type used by the constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.TypeConstraint.#ctor(System.Type)">
-            <summary>
-            Construct a TypeConstraint for a given Type
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.TypeConstraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. TypeCOnstraints override this method to write
-            the name of the type.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ExactTypeConstraint">
-            <summary>
-            ExactTypeConstraint is used to test that an object
-            is of the exact type provided in the constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.#ctor(System.Type)">
-            <summary>
-            Construct an ExactTypeConstraint for a given Type
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.Matches(System.Object)">
-            <summary>
-            Test that an object is of the exact type specified
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.InstanceOfTypeConstraint">
-            <summary>
-            InstanceOfTypeConstraint is used to test that an object
-            is of the same type provided or derived from it.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.#ctor(System.Type)">
-            <summary>
-            Construct an InstanceOfTypeConstraint for the type provided
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.Matches(System.Object)">
-            <summary>
-            Test whether an object is of the specified type or a derived type
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AssignableFromConstraint">
-            <summary>
-            AssignableFromConstraint is used to test that an object
-            can be assigned from a given Type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.#ctor(System.Type)">
-            <summary>
-            Construct an AssignableFromConstraint for the type provided
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.Matches(System.Object)">
-            <summary>
-            Test whether an object can be assigned from the specified type
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ComparisonConstraint">
-            <summary>
-            Abstract base class for constraints that compare values to
-            determine if one is greater than, equal to or less than
-            the other.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.expected">
-            <summary>
-            The value against which a comparison is to be made
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.ltOK">
-            <summary>
-            If true, less than returns success
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.eqOK">
-            <summary>
-            if true, equal returns success
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.gtOK">
-            <summary>
-            if true, greater than returns success
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.predicate">
-            <summary>
-            The predicate used as a part of the description
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.#ctor(System.IComparable,System.Boolean,System.Boolean,System.Boolean,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
-            </summary>
-            <param name="value">The value against which to make a comparison.</param>
-            <param name="ltOK">if set to <c>true</c> less succeeds.</param>
-            <param name="eqOK">if set to <c>true</c> equal succeeds.</param>
-            <param name="gtOK">if set to <c>true</c> greater succeeds.</param>
-            <param name="predicate">String used in describing the constraint.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.GreaterThanConstraint">
-            <summary>
-            Tests whether a value is greater than the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.GreaterThanConstraint.#ctor(System.IComparable)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GreaterThanConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint">
-            <summary>
-            Tests whether a value is greater than or equal to the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint.#ctor(System.IComparable)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GreaterThanOrEqualConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.LessThanConstraint">
-            <summary>
-            Tests whether a value is less than the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.LessThanConstraint.#ctor(System.IComparable)">
-            <summary>
-            Initializes a new instance of the <see cref="T:LessThanConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.LessThanOrEqualConstraint">
-            <summary>
-            Tests whether a value is less than or equal to the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.LessThanOrEqualConstraint.#ctor(System.IComparable)">
-            <summary>
-            Initializes a new instance of the <see cref="T:LessThanOrEqualConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ContainsConstraint">
-            <summary>
-            ContainsConstraint tests a whether a string contains a substring
-            or a collection contains an object. It postpones the decision of
-            which test to use until the type of the actual argument is known.
-            This allows testing whether a string is contained in a collection
-            or as a substring of another string using the same syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ContainsConstraint"/> class.
-            </summary>
-            <param name="expected">The expected.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PropertyConstraint">
-            <summary>
-            Summary description for PropertyConstraint.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.#ctor(System.String,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Initializes a new instance of the <see cref="T:PropertyConstraint"/> class.
-            </summary>
-            <param name="name">The name.</param>
-            <param name="baseConstraint">The constraint to apply to the property.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.BinaryOperation">
-            <summary>
-            BinaryOperation is the abstract base of all constraints
-            that combine two other constraints in some fashion.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.BinaryOperation.left">
-            <summary>
-            The first constraint being combined
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.BinaryOperation.right">
-            <summary>
-            The second constraint being combined
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinaryOperation.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct a BinaryOperation from two other constraints
-            </summary>
-            <param name="left">The first constraint</param>
-            <param name="right">The second constraint</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AndConstraint">
-            <summary>
-            AndConstraint succeeds only if both members succeed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Create an AndConstraint from two other constraints
-            </summary>
-            <param name="left">The first constraint</param>
-            <param name="right">The second constraint</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndConstraint.Matches(System.Object)">
-            <summary>
-            Apply both member constraints to an actual value, succeeding 
-            succeeding only if both of them succeed.
-            </summary>
-            <param name="actual">The actual value</param>
-            <returns>True if the constraints both succeeded</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description for this contraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to receive the description</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.OrConstraint">
-            <summary>
-            OrConstraint succeeds if either member succeeds
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Create an OrConstraint from two other constraints
-            </summary>
-            <param name="left">The first constraint</param>
-            <param name="right">The second constraint</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrConstraint.Matches(System.Object)">
-            <summary>
-            Apply the member constraints to an actual value, succeeding 
-            succeeding as soon as one of them succeeds.
-            </summary>
-            <param name="actual">The actual value</param>
-            <returns>True if either constraint succeeded</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
-            <summary>
-            Write a description for this contraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to receive the description</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.Numerics">
-            <summary>
-            The Numerics class contains common operations on numeric values.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.IsNumericType(System.Object)">
-            <summary>
-            Checks the type of the object, returning true if
-            the object is a numeric type.
-            </summary>
-            <param name="obj">The object to check</param>
-            <returns>true if the object is a numeric type</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.IsFloatingPointNumeric(System.Object)">
-            <summary>
-            Checks the type of the object, returning true if
-            the object is a floating point numeric type.
-            </summary>
-            <param name="obj">The object to check</param>
-            <returns>true if the object is a floating point numeric type</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.IsFixedPointNumeric(System.Object)">
-            <summary>
-            Checks the type of the object, returning true if
-            the object is a fixed point numeric type.
-            </summary>
-            <param name="obj">The object to check</param>
-            <returns>true if the object is a fixed point numeric type</returns>
-        </member>
-        <member name="T:NUnit.Framework.SyntaxHelpers.Is">
-            <summary>
-            The Is class is a helper class with properties and methods
-            that supply a number of constraints used in Asserts.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.SyntaxHelpers.Is.Null">
-            <summary>
-            Is.Null returns a static constraint that tests for null
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.SyntaxHelpers.Is.True">
-            <summary>
-            Is.True returns a static constraint that tests whether a value is true
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.SyntaxHelpers.Is.False">
-            <summary>
-            Is.False returns a static constraint that tests whether a value is false
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.SyntaxHelpers.Is.NaN">
-            <summary>
-            Is.NaN returns a static constraint that tests whether a value is an NaN
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.SyntaxHelpers.Is.Empty">
-            <summary>
-            Is.Empty returns a static constraint that tests whether a string or collection is empty
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.SyntaxHelpers.Is.Unique">
-            <summary>
-            Is.Unique returns a static constraint that tests whether a collection contains all unque items.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.EqualTo(System.Object)">
-            <summary>
-            Is.EqualTo returns a constraint that tests whether the
-            actual value equals the supplied argument
-            </summary>
-            <param name="expected"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.SameAs(System.Object)">
-            <summary>
-            Is.SameAs returns a constraint that tests whether the
-            actual value is the same object as the supplied argument.
-            </summary>
-            <param name="expected"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.GreaterThan(System.IComparable)">
-            <summary>
-            Is.GreaterThan returns a constraint that tests whether the
-            actual value is greater than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.GreaterThanOrEqualTo(System.IComparable)">
-            <summary>
-            Is.GreaterThanOrEqualTo returns a constraint that tests whether the
-            actual value is greater than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.AtLeast(System.IComparable)">
-            <summary>
-            Is.AtLeast is a synonym for Is.GreaterThanOrEqualTo
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.LessThan(System.IComparable)">
-            <summary>
-            Is.LessThan returns a constraint that tests whether the
-            actual value is less than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.LessThanOrEqualTo(System.IComparable)">
-            <summary>
-            Is.LessThanOrEqualTo returns a constraint that tests whether the
-            actual value is less than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.AtMost(System.IComparable)">
-            <summary>
-            Is.AtMost is a synonym for Is.LessThanOrEqualTo
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.TypeOf(System.Type)">
-            <summary>
-            Is.TypeOf returns a constraint that tests whether the actual
-            value is of the exact type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.InstanceOfType(System.Type)">
-            <summary>
-            Is.InstanceOfType returns a constraint that tests whether 
-            the actual value is of the type supplied as an argument
-            or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.AssignableFrom(System.Type)">
-            <summary>
-            Is.AssignableFrom returns a constraint that tests whether
-            the actual value is assignable from the type supplied as
-            an argument.
-            </summary>
-            <param name="expectedType"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.EquivalentTo(System.Collections.ICollection)">
-            <summary>
-            Is.EquivalentTo returns a constraint that tests whether
-            the actual value is a collection containing the same
-            elements as the collection supplied as an arument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Is.SubsetOf(System.Collections.ICollection)">
-            <summary>
-            Is.SubsetOf returns a constraint that tests whether
-            the actual value is a subset of the collection 
-            supplied as an arument
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.SyntaxHelpers.Is.Not">
-            <summary>
-            Is.Not returns a ConstraintBuilder that negates
-            the constraint that follows it.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.SyntaxHelpers.Is.All">
-            <summary>
-            Is.All returns a ConstraintBuilder, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed. This property is
-            a synonym for Has.AllItems.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SyntaxHelpers.Iz">
-            <summary>
-            The Iz class is a synonym for Is intended for use in VB,
-            which regards Is as a keyword.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SyntaxHelpers.Text">
-            <summary>
-            The Text class is a helper class with properties and methods
-            that supply a number of constraints used with strings.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.Contains(System.String)">
-            <summary>
-            Contains returns a constraint that succeeds if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotContain(System.String)">
-            <summary>
-            DoesNotContain returns a constraint that fails if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.StartsWith(System.String)">
-            <summary>
-            StartsWith returns a constraint that succeeds if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotStartWith(System.String)">
-            <summary>
-            DoesNotStartWith returns a constraint that fails if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.EndsWith(System.String)">
-            <summary>
-            EndsWith returns a constraint that succeeds if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotEndWith(System.String)">
-            <summary>
-            DoesNotEndWith returns a constraint that fails if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.Matches(System.String)">
-            <summary>
-            Matches returns a constraint that succeeds if the actual
-            value matches the pattern supplied as an argument.
-            </summary>
-            <param name="pattern"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotMatch(System.String)">
-            <summary>
-            DoesNotMatch returns a constraint that failss if the actual
-            value matches the pattern supplied as an argument.
-            </summary>
-            <param name="pattern"></param>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.SyntaxHelpers.Text.All">
-            <summary>
-            Text.All returns a ConstraintBuilder, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SyntaxHelpers.List">
-            <summary>
-            The List class is a helper class with properties and methods
-            that supply a number of constraints used with lists and collections.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.List.Map(System.Collections.ICollection)">
-            <summary>
-            List.Map returns a ListMapper, which can be used to map
-            the original collection to another collection.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.SyntaxHelpers.ListMapper">
-            <summary>
-            ListMapper is used to transform a collection used as an actual argument
-            producing another collection to be used in the assertion.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.ListMapper.#ctor(System.Collections.ICollection)">
-            <summary>
-            Construct a ListMapper based on a collection
-            </summary>
-            <param name="original">The collection to be transformed</param>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.ListMapper.Property(System.String)">
-            <summary>
-            Produces a collection containing all the values of a property
-            </summary>
-            <param name="name">The collection of property values</param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.SyntaxHelpers.Has">
-            <summary>
-            Summary description for HasNoPrefixB.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Property(System.String)">
-            <summary>
-            Returns a new ConstraintBuilder, which will apply the
-            following constraint to a named property of the object
-            being tested.
-            </summary>
-            <param name="name">The name of the property</param>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Property(System.String,System.Object)">
-            <summary>
-            Returns a new PropertyConstraint checking for the
-            existence of a particular property value.
-            </summary>
-            <param name="name">The name of the property to look for</param>
-            <param name="expected">The expected value of the property</param>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Length(System.Int32)">
-            <summary>
-            Returns a new PropertyConstraint for the Length property
-            </summary>
-            <param name="length"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Count(System.Int32)">
-            <summary>
-            Returns a new PropertyConstraint or the Count property
-            </summary>
-            <param name="count"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Member(System.Object)">
-            <summary>
-            Returns a new CollectionContainsConstraint checking for the
-            presence of a particular object in the collection.
-            </summary>
-            <param name="expected">The expected object</param>
-        </member>
-        <member name="P:NUnit.Framework.SyntaxHelpers.Has.No">
-            <summary>
-            Has.No returns a ConstraintBuilder that negates
-            the constraint that follows it.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.SyntaxHelpers.Has.All">
-            <summary>
-            Has.AllItems returns a ConstraintBuilder, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.SyntaxHelpers.Has.Some">
-            <summary>
-            Has.Some returns a ConstraintBuilder, which will apply
-            the following constraint to all members of a collection,
-            succeeding if any of them succeed. It is a synonym
-            for Has.Item.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.SyntaxHelpers.Has.None">
-            <summary>
-            Has.None returns a ConstraintBuilder, which will apply
-            the following constraint to all members of a collection,
-            succeeding only if none of them succeed.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SyntaxHelpers.Has.HasNoPrefixBuilder">
-            <summary>
-            Nested class that allows us to restrict the number
-            of key words that may appear after Has.No.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Has.HasNoPrefixBuilder.Property(System.String)">
-            <summary>
-            Return a ConstraintBuilder conditioned to apply
-            the following constraint to a property.
-            </summary>
-            <param name="name">The property name</param>
-            <returns>A ConstraintBuilder</returns>
-        </member>
-        <member name="M:NUnit.Framework.SyntaxHelpers.Has.HasNoPrefixBuilder.Member(System.Object)">
-            <summary>
-            Return a Constraint that succeeds if the expected object is
-            not contained in a collection.
-            </summary>
-            <param name="expected">The expected object</param>
-            <returns>A Constraint</returns>
-        </member>
-        <member name="T:NUnit.Framework.Assert">
-            <summary>
-            The Assert class contains a collection of static methods that
-            implement the most common assertions used in NUnit.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.#ctor">
-            <summary>
-            We don't actually want any instances of this object, but some people
-            like to inherit from it to add other static methods. Hence, the
-            protected constructor disallows any instances of this object. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is true</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is true</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean)">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to be displayed when the object is null</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String)">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to be displayed when the object is null</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object)">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to be displayed when the object is not null</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String)">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to be displayed when the object is not null</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNull(System.Object)">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not null <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the double is passed is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The value that is to be tested</param>
-            <param name="message">The message to be displayed when the object is not null</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String)">
-            <summary>
-            Verifies that the double is passed is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The object that is to be tested</param>
-            <param name="message">The message to be displayed when the object is not null</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double)">
-            <summary>
-            Verifies that the double is passed is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The object that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Assert that a string is empty - that is equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String)">
-            <summary>
-            Assert that a string is empty - that is equal to string.Emtpy
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String)">
-            <summary>
-            Assert that a string is empty - that is equal to string.Emtpy
-            </summary>
-            <param name="aString">The string to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection)">
-            <summary>
-            Assert that an array,list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Assert that a string is not empty - that is not equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String)">
-            <summary>
-            Assert that a string is empty - that is equal to string.Emtpy
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String)">
-            <summary>
-            Assert that a string is empty - that is equal to string.Emtpy
-            </summary>
-            <param name="aString">The string to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection)">
-            <summary>
-            Assert that an array,list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object)">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The messge to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object)">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The messge to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">A message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">A message to display in case of failure</param>
-            <param name="args">An array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">A message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">A message to display in case of failure</param>
-            <param name="args">An array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that two ints are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that two ints are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32)">
-            <summary>
-            Verifies that two ints are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that two longs are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that two longs are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64)">
-            <summary>
-            Verifies that two longs are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that two uints are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that two uints are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that two uints are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that two ulongs are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that two ulongs are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that two ulongs are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that two decimals are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that two decimal are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that two decimals are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double)">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Single,System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that two floats are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message displayed upon failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Single,System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that two floats are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message displayed upon failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Single,System.Single,System.Single)">
-            <summary>
-            Verifies that two floats are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that two objects are equal.  Two objects are considered
-            equal if both are null, or if both have the same value.  All
-            non-numeric types are compared by using the <c>Equals</c> method.
-            Arrays are compared by comparing each element using the same rules.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String)">
-            <summary>
-            Verifies that two objects are equal.  Two objects are considered
-            equal if both are null, or if both have the same value.  All
-            non-numeric types are compared by using the <c>Equals</c> method.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object)">
-            <summary>
-            Verifies that two objects are equal.  Two objects are considered
-            equal if both are null, or if both have the same value.  All
-            non-numeric types are compared by using the <c>Equals</c> method.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that two objects are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String)">
-            <summary>
-            Asserts that two objects are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object)">
-            <summary>
-            Asserts that two objects are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Asserts that two ints are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Asserts that two ints are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32)">
-            <summary>
-            Asserts that two ints are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Asserts that two longss are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Asserts that two longs are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64)">
-            <summary>
-            Asserts that two longs are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Asserts that two uints are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Asserts that two uints are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Asserts that two uints are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Asserts that two ulongs are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Asserts that two ulongs are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Asserts that two ulong are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Asserts that two decimals are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Asserts that two decimals are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Asserts that two decimals are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Asserts that two floats are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String)">
-            <summary>
-            Asserts that two floats are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single)">
-            <summary>
-            Asserts that two floats are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Asserts that two doubles are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String)">
-            <summary>
-            Asserts that two doubles are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double)">
-            <summary>
-            Asserts that two doubles are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that two objects refer to the same object. If they
-            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are not the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String)">
-            <summary>
-            Asserts that two objects refer to the same object. If they
-            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the object is null</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object)">
-            <summary>
-            Asserts that two objects refer to the same object. If they
-            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that two objects do not refer to the same object. If they
-            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the two objects are the same object.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String)">
-            <summary>
-            Asserts that two objects do not refer to the same object. If they
-            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to be displayed when the objects are the same</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object)">
-            <summary>
-            Asserts that two objects do not refer to the same object. If they
-            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is contained in a list.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The list to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that an object is contained in a list.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The list to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection)">
-            <summary>
-            Asserts that an object is contained in a list.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The list to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Fail(System.String,System.Object[])">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message and arguments 
-            that are passed in. This is used by the other Assert functions. 
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Fail(System.String)">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message that is 
-            passed in. This is used by the other Assert functions. 
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Fail">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.AssertionException"/>. 
-            This is used by the other Assert functions. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Ignore(System.String,System.Object[])">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message and arguments 
-            that are passed in.  This causes the test to be reported as ignored.
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Ignore(System.String)">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message that is 
-            passed in. This causes the test to be reported as ignored. 
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Ignore">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.IgnoreException"/>. 
-            This causes the test to be reported as ignored. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.DoAssert(NUnit.Framework.IAsserter)">
-            <summary>
-            NOTE: The use of asserters for extending NUnit has
-            now been replaced by the use of constraints. This
-            method is marked obsolete.
-            
-            Test the condition asserted by an asserter and throw
-            an assertion exception using provided message on failure.
-            </summary>
-            <param name="asserter">An object that implements IAsserter</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeedingt if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeedingt if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is greater or equal to than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is greater or equal to than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is greater or equal to than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is greater than or equal to the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="P:NUnit.Framework.Assert.Counter">
-            <summary>
-            Gets the number of assertions executed so far and 
-            resets the counter to zero.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.MessageMatch">
-            <summary>
-            Enumeration indicating how the expected message parameter is to be used
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.MessageMatch.Exact">
-            Expect an exact match
-        </member>
-        <member name="F:NUnit.Framework.MessageMatch.Contains">
-            Expect a message containing the parameter string
-        </member>
-        <member name="F:NUnit.Framework.MessageMatch.Regex">
-            Match the regular expression provided as a parameter
-        </member>
-        <member name="T:NUnit.Framework.ExpectedExceptionAttribute">
-            <summary>
-            ExpectedExceptionAttribute
-            </summary>
-            
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor">
-            <summary>
-            Constructor for a non-specific exception
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.Type)">
-            <summary>
-            Constructor for a given type of exception
-            </summary>
-            <param name="exceptionType">The type of the expected exception</param>
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.String)">
-            <summary>
-            Constructor for a given exception name
-            </summary>
-            <param name="exceptionName">The full name of the expected exception</param>
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.Type,System.String)">
-            <summary>
-            Constructor for a given type of exception and expected message text
-            </summary>
-            <param name="exceptionType">The type of the expected exception</param>
-            <param name="expectedMessage">The expected message text</param>
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.String,System.String)">
-            <summary>
-            Constructor for a given exception name and expected message text
-            </summary>
-            <param name="exceptionName">The full name of the expected exception</param>
-            <param name="expectedMessage">The expected messge text</param>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExceptionType">
-            <summary>
-            Gets or sets the expected exception type
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExceptionName">
-            <summary>
-            Gets or sets the full Type name of the expected exception
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedMessage">
-            <summary>
-            Gets or sets the expected message text
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.UserMessage">
-            <summary>
-            Gets or sets the user message displayed in case of failure
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.MatchType">
-            <summary>
-             Gets or sets the type of match to be performed on the expected message
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.Handler">
-            <summary>
-             Gets the name of a method to be used as an exception handler
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.CollectionAssert">
-            <summary>
-            A set of Assert methods operationg on one or more collections
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.ICollection,System.Type)">
-            <summary>
-            Asserts that all items contained in collection are of the type specified by expectedType.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.ICollection,System.Type,System.String)">
-            <summary>
-            Asserts that all items contained in collection are of the type specified by expectedType.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.ICollection,System.Type,System.String,System.Object[])">
-            <summary>
-            Asserts that all items contained in collection are of the type specified by expectedType.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.ICollection)">
-            <summary>
-            Asserts that all items contained in collection are not equal to null.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that all items contained in collection are not equal to null.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that all items contained in collection are not equal to null.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.ICollection)">
-            <summary>
-            Ensures that every object contained in collection exists within the collection
-            once and only once.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.ICollection,System.String)">
-            <summary>
-            Ensures that every object contained in collection exists within the collection
-            once and only once.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Ensures that every object contained in collection exists within the collection
-            once and only once.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.ICollection,System.Collections.ICollection)">
-            <summary>
-            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.ICollection,System.Collections.ICollection)">
-            <summary>
-            Asserts that expected and actual are not equivalent.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that expected and actual are not equivalent.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are not equivalent.
-            </summary>
-            <param name="expected">The first ICollection of objects to be considered</param>
-            <param name="actual">The second ICollection of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.ICollection,System.Object)">
-            <summary>
-            Asserts that collection contains actual as an item.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="actual">Object to be found within collection</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.ICollection,System.Object,System.String)">
-            <summary>
-            Asserts that collection contains actual as an item.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="actual">Object to be found within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.ICollection,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that collection contains actual as an item.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="actual">Object to be found within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.ICollection,System.Object)">
-            <summary>
-            Asserts that collection does not contain actual as an item.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="actual">Object that cannot exist within collection</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.ICollection,System.Object,System.String)">
-            <summary>
-            Asserts that collection does not contain actual as an item.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="actual">Object that cannot exist within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.ICollection,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that collection does not contain actual as an item.
-            </summary>
-            <param name="collection">ICollection of objects to be considered</param>
-            <param name="actual">Object that cannot exist within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.ICollection,System.Collections.ICollection)">
-            <summary>
-            Asserts that superset is not a subject of subset.
-            </summary>
-            <param name="subset">The ICollection superset to be considered</param>
-            <param name="superset">The ICollection subset to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that superset is not a subject of subset.
-            </summary>
-            <param name="subset">The ICollection superset to be considered</param>
-            <param name="superset">The ICollection subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that superset is not a subject of subset.
-            </summary>
-            <param name="subset">The ICollection superset to be considered</param>
-            <param name="superset">The ICollection subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.ICollection,System.Collections.ICollection)">
-            <summary>
-            Asserts that superset is a subset of subset.
-            </summary>
-            <param name="subset">The ICollection superset to be considered</param>
-            <param name="superset">The ICollection subset to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that superset is a subset of subset.
-            </summary>
-            <param name="subset">The ICollection superset to be considered</param>
-            <param name="superset">The ICollection subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that superset is a subset of subset.
-            </summary>
-            <param name="subset">The ICollection superset to be considered</param>
-            <param name="superset">The ICollection subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.ICollection,System.String)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.ICollection)">
-            <summary>
-            Assert that an array,list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.ICollection,System.String)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.ICollection)">
-            <summary>
-            Assert that an array,list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-        </member>
-        <member name="T:NUnit.Framework.AbstractAsserter">
-            <summary>
-            NOTE: The use of asserters for extending NUnit has
-            now been replaced by the use of constraints. This
-            class is marked obsolete.
-            
-            AbstractAsserter is the base class for all asserters.
-            Asserters encapsulate a condition test and generation 
-            of an AssertionException with a tailored message. They
-            are used by the Assert class as helper objects.
-            
-            User-defined asserters may be passed to the 
-            Assert.DoAssert method in order to implement 
-            extended asserts.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IAsserter">
-            <summary>
-            NOTE: The use of asserters for extending NUnit has
-            now been replaced by the use of constraints. This
-            interface is marked obsolete.
-            
-            The interface implemented by an asserter. Asserters
-            encapsulate a condition test and generation of an
-            AssertionException with a tailored message. They
-            are used by the Assert class as helper objects.
-            
-            User-defined asserters may be passed to the
-            Assert.DoAssert method in order to implement
-            extended asserts.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IAsserter.Test">
-            <summary>
-            Test the condition for the assertion.
-            </summary>
-            <returns>True if the test succeeds</returns>
-        </member>
-        <member name="P:NUnit.Framework.IAsserter.Message">
-            <summary>
-            Return the message giving the failure reason.
-            The return value is unspecified if no failure
-            has occured.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.AbstractAsserter.userMessage">
-            <summary>
-            The user-defined message for this asserter.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.AbstractAsserter.args">
-            <summary>
-            Arguments to use in formatting the user-defined message.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.AbstractAsserter.failureMessage">
-            <summary>
-            Our failure message object, initialized as needed
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.AbstractAsserter.#ctor(System.String,System.Object[])">
-            <summary>
-            Constructs an AbstractAsserter
-            </summary>
-            <param name="message">The message issued upon failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.AbstractAsserter.Test">
-            <summary>
-            Test method to be implemented by derived types.
-            Default always succeeds.
-            </summary>
-            <returns>True if the test succeeds</returns>
-        </member>
-        <member name="P:NUnit.Framework.AbstractAsserter.FailureMessage">
-            <summary>
-            AssertionFailureMessage object used internally
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.AbstractAsserter.Message">
-            <summary>
-            Message related to a failure. If no failure has
-            occured, the result is unspecified.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Assertion">
-            <summary>
-            The Assertion class is obsolete and has been
-            replaced by the Assert class.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.Assert(System.String,System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If it isn't it throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="message">The message to display is the condition
-            is false</param>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.Assert(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If it isn't it throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Double,System.Double,System.Double)">
-            <summary>
-            /// Asserts that two doubles are equal concerning a delta. If the
-            expected value is infinity then the delta value is ignored.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Single,System.Single,System.Single)">
-            <summary>
-            /// Asserts that two singles are equal concerning a delta. If the
-            expected value is infinity then the delta value is ignored.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Object,System.Object)">
-            <summary>Asserts that two objects are equal. If they are not
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Int32,System.Int32)">
-            <summary>Asserts that two ints are equal. If they are not
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Int32,System.Int32)">
-            <summary>Asserts that two ints are equal. If they are not
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Double,System.Double,System.Double)">
-            <summary>Asserts that two doubles are equal concerning a delta.
-            If the expected value is infinity then the delta value is ignored.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Single,System.Single,System.Single)">
-            <summary>Asserts that two floats are equal concerning a delta.
-            If the expected value is infinity then the delta value is ignored.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Object,System.Object)">
-            <summary>
-            Asserts that two objects are equal.  Two objects are considered
-            equal if both are null, or if both have the same value.  Numeric
-            types are compared via string comparision on their contents to
-            avoid problems comparing values between different types.  All
-            non-numeric types are compared by using the <c>Equals</c> method.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertNotNull(System.Object)">
-            <summary>Asserts that an object isn't null.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertNotNull(System.String,System.Object)">
-            <summary>Asserts that an object isn't null.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertNull(System.Object)">
-            <summary>Asserts that an object is null.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertNull(System.String,System.Object)">
-            <summary>Asserts that an object is null.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertSame(System.Object,System.Object)">
-            <summary>Asserts that two objects refer to the same object. If they
-            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.AssertSame(System.String,System.Object,System.Object)">
-            <summary>Asserts that two objects refer to the same object. 
-            If they are not an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.Fail">
-            <summary>Fails a test with no message.</summary>
-        </member>
-        <member name="M:NUnit.Framework.Assertion.Fail(System.String)">
-            <summary>Fails a test with the given message.</summary>
-        </member>
-        <member name="T:NUnit.Framework.AssertionException">
-            <summary>
-            Thrown when an assertion failed.
-            </summary>
-            
-        </member>
-        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String,System.Exception)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-            <param name="inner">The exception that caused the 
-            current exception</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Serialization Constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.AssertionFailureMessage">
-            <summary>
-            AssertionFailureMessage encapsulates a failure message
-            issued as a result of an Assert failure.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.AssertionFailureMessage.PreClipLength">
-            <summary>
-            Number of characters before a highlighted position before
-            clipping will occur.  Clipped text is replaced with an
-            elipsis "..."
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.AssertionFailureMessage.PostClipLength">
-            <summary>
-            Number of characters after a highlighted position before
-            clipping will occur.  Clipped text is replaced with an
-            elipsis "..."
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.AssertionFailureMessage.expectedPrefix">
-            <summary>
-            Prefix used to start an expected value line.
-            Must be same length as actualPrefix.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.AssertionFailureMessage.actualPrefix">
-            <summary>
-            Prefix used to start an actual value line.
-            Must be same length as expectedPrefix.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.#ctor(System.String,System.Object[])">
-            <summary>
-            Construct an AssertionFailureMessage with a message
-            and optional arguments.
-            </summary>
-            <param name="message"></param>
-            <param name="args"></param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.#ctor">
-            <summary>
-            Construct an empty AssertionFailureMessage
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.WriteExpectedLine(System.String)">
-            <summary>
-            Add an expected value line to the message containing
-            the text provided as an argument.
-            </summary>
-            <param name="text">Text describing what was expected.</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.WriteActualLine(System.String)">
-            <summary>
-            Add an actual value line to the message containing
-            the text provided as an argument.
-            </summary>
-            <param name="text">Text describing the actual value.</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedValue(System.Object)">
-            <summary>
-            Add an expected value line to the message containing
-            a string representation of the object provided.
-            </summary>
-            <param name="expected">An object representing the expected value</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedValue(System.Double,System.Double)">
-            <summary>
-            Add an expected value line to the message containing a double
-            and the tolerance used in making the comparison.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="tolerance">The tolerance specified in the Assert</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayActualValue(System.Object)">
-            <summary>
-            Add an actual value line to the message containing
-            a string representation of the object provided.
-            </summary>
-            <param name="actual">An object representing what was actually found</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedAndActual(System.Object,System.Object)">
-            <summary>
-            Display two lines that communicate the expected value, and the actual value
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value found</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedAndActual(System.Double,System.Double,System.Double)">
-            <summary>
-            Display two lines that communicate the expected value, the actual value and
-            the tolerance used in comparing two doubles.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value found</param>
-            <param name="tolerance">The tolerance specified in the Assert</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayPositionMarker(System.Int32)">
-            <summary>
-            Draws a marker under the expected/actual strings that highlights
-            where in the string a mismatch occurred.
-            </summary>
-            <param name="iPosition">The position of the mismatch</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.BuildStringLengthReport(System.String,System.String)">
-            <summary>
-            Reports whether the string lengths are the same or different, and
-            what the string lengths are.
-            </summary>
-            <param name="sExpected">The expected string</param>
-            <param name="sActual">The actual string value</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayDifferences(System.Object,System.Object,System.Boolean)">
-            <summary>
-            Called to create additional message lines when two objects have been 
-            found to be unequal.  If the inputs are strings, a special message is
-            rendered that can help track down where the strings are different,
-            based on differences in length, or differences in content.
-            
-            If the inputs are not strings, the ToString method of the objects
-            is used to show what is different about them.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayDifferencesWithTolerance(System.Double,System.Double,System.Double)">
-            <summary>
-            Called to create additional message lines when two doubles have been 
-            found to be unequal, within the specified tolerance.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayStringDifferences(System.String,System.String,System.Boolean)">
-            <summary>
-            Constructs a message that can be displayed when the content of two
-            strings are different, but the string lengths are the same.  The
-            message will clip the strings to a reasonable length, centered
-            around the first position where they are mismatched, and draw 
-            a line marking the position of the difference to make comparison
-            quicker.
-            </summary>
-            <param name="sExpected">The expected string value</param>
-            <param name="sActual">The actual string value</param>
-            <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayArrayDifferences(System.Array,System.Array,System.Int32)">
-            <summary>
-            Display a standard message showing the differences found between 
-            two arrays that were expected to be equal.
-            </summary>
-            <param name="expected">The expected array value</param>
-            <param name="actual">The actual array value</param>
-            <param name="index">The index at which a difference was found</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayCollectionDifferences(System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
-            <summary>
-            Display a standard message showing the differences found between 
-            two collections that were expected to be equal.
-            </summary>
-            <param name="expected">The expected collection value</param>
-            <param name="actual">The actual collection value</param>
-            <param name="index">The index at which a difference was found</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.GetArrayIndicesFromCollectionIndex(System.Collections.ICollection,System.Int32)">
-            <summary>
-            Get an array of indices representing the point in a collection or
-            array corresponding to a single int index into the collection.
-            </summary>
-            <param name="collection">The collection to which the indices apply</param>
-            <param name="index">Index in the collection</param>
-            <returns>Array of indices</returns>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayListElements(System.String,System.Collections.IList,System.Int32,System.Int32)">
-            <summary>
-            Displays elements from a list on a line
-            </summary>
-            <param name="label">Text to prefix the line with</param>
-            <param name="list">The list of items to display</param>
-            <param name="index">The index in the list of the first element to display</param>
-            <param name="max">The maximum number of elements to display</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.FormatObjectForDisplay(System.Object)">
-            <summary>
-            Formats an object for display in a message line
-            </summary>
-            <param name="obj">The object to be displayed</param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.InputsAreStrings(System.Object,System.Object)">
-            <summary>
-            Tests two objects to determine if they are strings.
-            </summary>
-            <param name="expected"></param>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.ClipAroundPosition(System.String,System.Int32)">
-            <summary>
-            Renders up to M characters before, and up to N characters after
-            the specified index position.  If leading or trailing text is
-            clipped, and elipses "..." is added where the missing text would
-            be.
-            
-            Clips strings to limit previous or post newline characters,
-            since these mess up the comparison
-            </summary>
-            <param name="sString"></param>
-            <param name="iPosition"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.FindMismatchPosition(System.String,System.String,System.Int32)">
-            <summary>
-            Shows the position two strings start to differ.  Comparison 
-            starts at the start index.
-            </summary>
-            <param name="sExpected"></param>
-            <param name="sActual"></param>
-            <param name="iStart"></param>
-            <returns>-1 if no mismatch found, or the index where mismatch found</returns>
-        </member>
-        <member name="M:NUnit.Framework.AssertionFailureMessage.ConvertWhitespace(System.String)">
-            <summary>
-            Turns CR, LF, or TAB into visual indicator to preserve visual marker 
-            position.   This is done by replacing the '\r' into '\\' and 'r' 
-            characters, and the '\n' into '\\' and 'n' characters, and '\t' into
-            '\\' and 't' characters.  
-            
-            Thus the single character becomes two characters for display.
-            </summary>
-            <param name="sInput"></param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.CategoryAttribute">
-            <summary>
-            Attribute used to apply a category to a test
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.CategoryAttribute.categoryName">
-            <summary>
-            The name of the category
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CategoryAttribute.#ctor(System.String)">
-            <summary>
-            Construct attribute for a given category
-            </summary>
-            <param name="name">The name of the category</param>
-        </member>
-        <member name="M:NUnit.Framework.CategoryAttribute.#ctor">
-            <summary>
-            Protected constructor uses the Type name as the name
-            of the category.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.CategoryAttribute.Name">
-            <summary>
-            The name of the category
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IncludeExcludeAttribute">
-            <summary>
-            Abstract base for Attributes that are used to include tests
-            in the test run based on environmental settings.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor">
-            <summary>
-            Constructor with no included items specified, for use
-            with named property syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor(System.String)">
-            <summary>
-            Constructor taking one or more included items
-            </summary>
-            <param name="include">Comma-delimited list of included items</param>
-        </member>
-        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Include">
-            <summary>
-            Name of the item that is needed in order for
-            a test to run. Multiple itemss may be given,
-            separated by a comma.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Exclude">
-            <summary>
-            Name of the item to be excluded. Multiple items
-            may be given, separated by a comma.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Reason">
-            <summary>
-            The reason for including or excluding the test
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.PlatformAttribute">
-            <summary>
-            PlatformAttribute is used to mark a test fixture or an
-            individual method as applying to a particular platform only.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PlatformAttribute.#ctor">
-            <summary>
-            Constructor with no platforms specified, for use
-            with named property syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PlatformAttribute.#ctor(System.String)">
-            <summary>
-            Constructor taking one or more platforms
-            </summary>
-            <param name="platforms">Comma-deliminted list of platforms</param>
-        </member>
-        <member name="T:NUnit.Framework.CultureAttribute">
-            <summary>
-            CultureAttribute is used to mark a test fixture or an
-            individual method as applying to a particular Culture only.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CultureAttribute.#ctor">
-            <summary>
-            Constructor with no cultures specified, for use
-            with named property syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CultureAttribute.#ctor(System.String)">
-            <summary>
-            Constructor taking one or more cultures
-            </summary>
-            <param name="cultures">Comma-deliminted list of cultures</param>
-        </member>
-        <member name="T:NUnit.Framework.MessageWriter">
-            <summary>
-            MessageWriter is the abstract base for classes that write
-            constraint descriptions and messages in some form. The
-            class has separate methods for writing various components
-            of a message, allowing implementations to tailor the
-            presentation as needed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.#ctor">
-            <summary>
-            Construct a MessageWriter given a culture
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteMessageLine(System.String,System.Object[])">
-            <summary>
-            Method to write single line  message with optional args, usually
-            written to precede the general failure message.
-            </summary>
-            <param name="message">The message to be written</param>
-            <param name="args">Any arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
-            <summary>
-            Method to write single line  message with optional args, usually
-            written to precede the general failure message, at a givel 
-            indentation level.
-            </summary>
-            <param name="level">The indentation level of the message</param>
-            <param name="message">The message to be written</param>
-            <param name="args">Any arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Display Expected and Actual lines for a constraint. This
-            is called by MessageWriter's default implementation of 
-            WriteMessageTo and provides the generic two-line display. 
-            </summary>
-            <param name="constraint">The constraint that failed</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.DisplayDifferences(System.Object,System.Object)">
-            <summary>
-            Display Expected and Actual lines for given values. This
-            method may be called by constraints that need more control over
-            the display of actual and expected values than is provided
-            by the default implementation.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.DisplayDifferences(System.Object,System.Object,System.Object)">
-            <summary>
-            Display Expected and Actual lines for given values, including
-            a tolerance value on the Expected line.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-            <param name="tolerance">The tolerance within which the test was made</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean)">
-            <summary>
-            Display the expected and actual string values on separate lines.
-            If the mismatch parameter is >=0, an additional line is displayed
-            line containing a caret that points to the mismatch point.
-            </summary>
-            <param name="expected">The expected string value</param>
-            <param name="actual">The actual string value</param>
-            <param name="mismatch">The point at which the strings don't match or -1</param>
-            <param name="ignoreCase">If true, case is ignored in locating the point where the strings differ</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteConnector(System.String)">
-            <summary>
-            Writes the text for a connector.
-            </summary>
-            <param name="connector">The connector.</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WritePredicate(System.String)">
-            <summary>
-            Writes the text for a predicate.
-            </summary>
-            <param name="predicate">The predicate.</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteExpectedValue(System.Object)">
-            <summary>
-            Writes the text for an expected value.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteModifier(System.String)">
-            <summary>
-            Writes the text for a modifier
-            </summary>
-            <param name="modifier">The modifier.</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteActualValue(System.Object)">
-            <summary>
-            Writes the text for an actual value.
-            </summary>
-            <param name="actual">The actual value.</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteValue(System.Object)">
-            <summary>
-            Writes the text for a generalized value.
-            </summary>
-            <param name="val">The value.</param>
-        </member>
-        <member name="M:NUnit.Framework.MessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
-            <summary>
-            Writes the text for a collection value,
-            starting at a particular point, to a max length
-            </summary>
-            <param name="collection">The collection containing elements to write.</param>
-            <param name="start">The starting point of the elements to write</param>
-            <param name="max">The maximum number of elements to write</param>
-        </member>
-        <member name="P:NUnit.Framework.MessageWriter.MaxLineLength">
-            <summary>
-            Abstract method to get the max line length
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SetCultureAttribute">
-            <summary>
-            Summary description for SetCultureAttribute.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.PropertyAttribute">
-            <summary>
-            PropertyAttribute is used to attach information to a test as a name/value pair..
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.PropertyAttribute.propertyName">
-            <summary>
-            The property name
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.PropertyAttribute.propertyValue">
-            <summary>
-            The property value
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.Object)">
-            <summary>
-            Construct a PropertyAttribute with a name and value
-            </summary>
-            <param name="propertyName">The name of the property</param>
-            <param name="propertyValue">The property value</param>
-        </member>
-        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.Object)">
-            <summary>
-            Constructor for use by inherited classes that use the
-            name of the type as the property name.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.PropertyAttribute.Name">
-            <summary>
-            Gets the property name
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.PropertyAttribute.Value">
-            <summary>
-            Gets the property value
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SetCultureAttribute.#ctor(System.String)">
-            <summary>
-            Construct given the name of a culture
-            </summary>
-            <param name="culture"></param>
-        </member>
-        <member name="T:NUnit.Framework.TextMessageWriter">
-            <summary>
-            TextMessageWriter writes constraint descriptions and messages
-            in displayable form as a text stream. It tailors the display
-            of individual message components to form the standard message
-            format of NUnit assertion failure messages.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Expected">
-            <summary>
-            Prefix used for the expected value line of a message
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Actual">
-            <summary>
-            Prefix used for the actual value line of a message
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TextMessageWriter.PrefixLength">
-            <summary>
-            Length of a message prefix
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.#ctor">
-            <summary>
-            Construct a TextMessageWriter
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.#ctor(System.String,System.Object[])">
-            <summary>
-            Construct a TextMessageWriter, specifying a user message
-            and optional formatting arguments.
-            </summary>
-            <param name="userMessage"></param>
-            <param name="args"></param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
-            <summary>
-            Method to write single line  message with optional args, usually
-            written to precede the general failure message, at a givel 
-            indentation level.
-            </summary>
-            <param name="level">The indentation level of the message</param>
-            <param name="message">The message to be written</param>
-            <param name="args">Any arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Display Expected and Actual lines for a constraint. This
-            is called by MessageWriter's default implementation of 
-            WriteMessageTo and provides the generic two-line display. 
-            </summary>
-            <param name="constraint">The constraint that failed</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object)">
-            <summary>
-            Display Expected and Actual lines for given values. This
-            method may be called by constraints that need more control over
-            the display of actual and expected values than is provided
-            by the default implementation.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object,System.Object)">
-            <summary>
-            Display Expected and Actual lines for given values, including
-            a tolerance value on the expected line.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-            <param name="tolerance">The tolerance within which the test was made</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean)">
-            <summary>
-            Display the expected and actual string values on separate lines.
-            If the mismatch parameter is >=0, an additional line is displayed
-            line containing a caret that points to the mismatch point.
-            </summary>
-            <param name="expected">The expected string value</param>
-            <param name="actual">The actual string value</param>
-            <param name="mismatch">The point at which the strings don't match or -1</param>
-            <param name="ignoreCase">If true, case is ignored in string comparisons</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteConnector(System.String)">
-            <summary>
-            Writes the text for a connector.
-            </summary>
-            <param name="connector">The connector.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WritePredicate(System.String)">
-            <summary>
-            Writes the text for a predicate.
-            </summary>
-            <param name="predicate">The predicate.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteModifier(System.String)">
-            <summary>
-            Write the text for a modifier.
-            </summary>
-            <param name="modifier">The modifier.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedValue(System.Object)">
-            <summary>
-            Writes the text for an expected value.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualValue(System.Object)">
-            <summary>
-            Writes the text for an actual value.
-            </summary>
-            <param name="actual">The actual value.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteValue(System.Object)">
-            <summary>
-            Writes the text for a generalized value.
-            </summary>
-            <param name="val">The value.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
-            <summary>
-            Writes the text for a collection value,
-            starting at a particular point, to a max length
-            </summary>
-            <param name="collection">The collection containing elements to write.</param>
-            <param name="start">The starting point of the elements to write</param>
-            <param name="max">The maximum number of elements to write</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Write the generic 'Expected' line for a constraint
-            </summary>
-            <param name="constraint">The constraint that failed</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object)">
-            <summary>
-            Write the generic 'Expected' line for a given value
-            </summary>
-            <param name="expected">The expected value</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object,System.Object)">
-            <summary>
-            Write the generic 'Expected' line for a given value
-            and tolerance.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="tolerance">The tolerance within which the test was made</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Write the generic 'Actual' line for a constraint
-            </summary>
-            <param name="constraint">The constraint for which the actual value is to be written</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(System.Object)">
-            <summary>
-            Write the generic 'Actual' line for a given value
-            </summary>
-            <param name="actual">The actual value causing a failure</param>
-        </member>
-        <member name="P:NUnit.Framework.TextMessageWriter.MaxLineLength">
-            <summary>
-            Gets the maximum line length for this writer
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.StringAssert">
-            <summary>
-            Basic Asserts on strings.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String)">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string starts with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string starts with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String)">
-            <summary>
-            Asserts that a string starts with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string ends with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string ends with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String)">
-            <summary>
-            Asserts that a string ends with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that two strings are equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String)">
-            <summary>
-            Asserts that two strings are equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String)">
-            <summary>
-            Asserts that two strings are equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string matches an expected regular expression pattern.
-            </summary>
-            <param name="expected">The expected expression</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string matches an expected regular expression pattern.
-            </summary>
-            <param name="expected">The expected expression</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String)">
-            <summary>
-            Asserts that a string matches an expected regular expression pattern.
-            </summary>
-            <param name="expected">The expected expression</param>
-            <param name="actual">The actual string</param>
-        </member>
-        <member name="T:NUnit.Framework.MsgUtils">
-            <summary>
-            Static methods used in creating messages
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.MsgUtils.GetTypeRepresentation(System.Object)">
-            <summary>
-            Returns the representation of a type as used in NUnitLite.
-            This is the same as Type.ToString() except for arrays,
-            which are displayed with their declared sizes.
-            </summary>
-            <param name="obj"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.MsgUtils.ConvertWhitespace(System.String)">
-            <summary>
-            Converts any control characters in a string 
-            to their escaped representation.
-            </summary>
-            <param name="s">The string to be converted</param>
-            <returns>The converted string</returns>
-        </member>
-        <member name="M:NUnit.Framework.MsgUtils.GetArrayIndicesAsString(System.Int32[])">
-            <summary>
-            Return the a string representation for a set of indices into an array
-            </summary>
-            <param name="indices">Array of indices for which a string is needed</param>
-        </member>
-        <member name="M:NUnit.Framework.MsgUtils.GetArrayIndicesFromCollectionIndex(System.Collections.ICollection,System.Int32)">
-            <summary>
-            Get an array of indices representing the point in a collection or
-            array corresponding to a single int index into the collection.
-            </summary>
-            <param name="collection">The collection to which the indices apply</param>
-            <param name="index">Index in the collection</param>
-            <returns>Array of indices</returns>
-        </member>
-        <member name="M:NUnit.Framework.MsgUtils.ClipString(System.String,System.Int32,System.Int32)">
-            <summary>
-            Clip a string around a particular point, returning the clipped
-            string with ellipses representing the removed parts
-            </summary>
-            <param name="s">The string to be clipped</param>
-            <param name="maxStringLength">The maximum permitted length of the result string</param>
-            <param name="mismatch">The point around which clipping is to occur</param>
-            <returns>The clipped string</returns>
-        </member>
-        <member name="M:NUnit.Framework.MsgUtils.FindMismatchPosition(System.String,System.String,System.Int32,System.Boolean)">
-            <summary>
-            Shows the position two strings start to differ.  Comparison 
-            starts at the start index.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="istart">The index in the strings at which comparison should start</param>
-            <param name="ignoreCase">Boolean indicating whether case should be ignored</param>
-            <returns>-1 if no mismatch found, or the index where mismatch found</returns>
-        </member>
-        <member name="T:NUnit.Framework.AssertionHelper">
-            <summary>
-            AssertionHelper is an optional base class for user tests,
-            allowing the use of shorter names for constraints and
-            asserts and avoiding conflict with the definition of 
-            <see cref="T:NUnit.Framework.SyntaxHelpers.Is"/>, from which it inherits much of its
-            behavior, in certain mock object frameworks.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure. Works
-            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint)"/>
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.Constraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure. Works
-            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String)"/>
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.Constraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure. Works
-            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String,System.Object[])"/>
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
-            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
-            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String)"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to <see cref="M:NUnit.Framework.Assert.That(System.Boolean)"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Map(System.Collections.ICollection)">
-            <summary>
-            Returns a ListMapper based on a collection.
-            </summary>
-            <param name="original">The original collection</param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.FileAssert">
-            <summary>
-            Summary description for FileAssert.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.#ctor">
-            <summary>
-            We don't actually want any instances of this object, but some people
-            like to inherit from it to add other static methods. Hence, the
-            protected constructor disallows any instances of this object. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
-            <summary>
-            Verifies that two Streams are equal.  Two Streams are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String)">
-            <summary>
-            Verifies that two Streams are equal.  Two Streams are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream)">
-            <summary>
-            Verifies that two Streams are equal.  Two Streams are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
-            <summary>
-            Asserts that two Streams are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to be displayed when the two Stream are the same.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String)">
-            <summary>
-            Asserts that two Streams are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to be displayed when the Streams are the same.</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream)">
-            <summary>
-            Asserts that two Streams are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-        </member>
-        <member name="T:NUnit.Framework.IgnoreException">
-            <summary>
-            Thrown when an assertion failed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String)">
-            <param name="message"></param>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String,System.Exception)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-            <param name="inner">The exception that caused the 
-            current exception</param>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Serialization Constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestCase">
-            <summary>
-            Obsolete class, formerly used to identify tests through
-            inheritance. Avoid using this class for new tests.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestCase.SetUp">
-            <summary>
-            Method called immediately before running the test.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestCase.TearDown">
-            <summary>
-            Method Called immediately after running the test. It is
-            guaranteed to be called, even if an exception is thrown. 
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SetUpAttribute">
-            <summary>
-            Attribute used to mark a class that contains one-time SetUp 
-            and/or TearDown methods that apply to all the tests in a
-            namespace or an assembly.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SetUpFixtureAttribute">
-            <summary>
-            SetUpFixtureAttribute is used to identify a SetUpFixture
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SuiteAttribute">
-            <summary>
-            Attribute used to mark a static (shared in VB) property
-            that returns a list of tests.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TearDownAttribute">
-            <summary>
-            Attribute used to identify a method that is called 
-            immediately after each test is run. The method is 
-            guaranteed to be called, even if an exception is thrown.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestAttribute">
-            <summary>
-            Adding this attribute to a method within a <seealso cref="T:NUnit.Framework.TestFixtureAttribute"/> 
-            class makes the method callable from the NUnit test runner. There is a property 
-            called Description which is optional which you can provide a more detailed test
-            description. This class cannot be inherited.
-            </summary>
-            
-            <example>
-            [TestFixture]
-            public class Fixture
-            {
-              [Test]
-              public void MethodToTest()
-              {}
-              
-              [Test(Description = "more detailed description")]
-              publc void TestDescriptionMethod()
-              {}
-            }
-            </example>
-            
-        </member>
-        <member name="P:NUnit.Framework.TestAttribute.Description">
-            <summary>
-            Descriptive text for this test
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestFixtureAttribute">
-            <example>
-            [TestFixture]
-            public class ExampleClass 
-            {}
-            </example>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.Description">
-            <summary>
-            Descriptive text for this fixture
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestFixtureSetUpAttribute">
-            <summary>
-            Attribute used to identify a method that is 
-            called before any tests in a fixture are run.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestFixtureTearDownAttribute">
-            <summary>
-            Attribute used to identify a method that is called after
-            all the tests in a fixture have run. The method is 
-            guaranteed to be called, even if an exception is thrown.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IgnoreAttribute">
-            <summary>
-            Attribute used to mark a test that is to be ignored.
-            Ignored tests result in a warning message when the
-            tests are run.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor">
-            <summary>
-            Constructs the attribute without giving a reason 
-            for ignoring the test.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor(System.String)">
-            <summary>
-            Constructs the attribute giving a reason for ignoring the test
-            </summary>
-            <param name="reason">The reason for ignoring the test</param>
-        </member>
-        <member name="P:NUnit.Framework.IgnoreAttribute.Reason">
-            <summary>
-            The reason for ignoring a test
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.ExplicitAttribute">
-            <summary>
-            ExplicitAttribute marks a test or test fixture so that it will
-            only be run if explicitly executed from the gui or command line
-            or if it is included by use of a filter. The test will not be
-            run simply because an enclosing suite is run.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor">
-            <summary>
-            Default constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor(System.String)">
-            <summary>
-            Constructor with a reason
-            </summary>
-            <param name="reason">The reason test is marked explicit</param>
-        </member>
-        <member name="P:NUnit.Framework.ExplicitAttribute.Reason">
-            <summary>
-            The reason test is marked explicit
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.DescriptionAttribute">
-            <summary>
-            Attribute used to provide descriptive text about a 
-            test case or fixture.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.DescriptionAttribute.#ctor(System.String)">
-            <summary>
-            Construct the attribute
-            </summary>
-            <param name="description">Text describing the test</param>
-        </member>
-        <member name="P:NUnit.Framework.DescriptionAttribute.Description">
-            <summary>
-            Gets the test description
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IExpectException">
-            <summary>
-            Interface implemented by a user fixture in order to
-            validate any expected exceptions. It is only called
-            for test methods marked with the ExpectedException
-            attribute.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IExpectException.HandleException(System.Exception)">
-            <summary>
-            Method to handle an expected exception
-            </summary>
-            <param name="ex">The exception to be handled</param>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>nunit.framework</name>
+    </assembly>
+    <members>
+        <member name="T:NUnit.Framework.Constraints.SubstringConstraint">
+            <summary>
+            SubstringConstraint can test whether a string contains
+            the expected substring.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.Constraint">
+            <summary>
+            The Constraint class is the base of all built-in or
+            user-defined constraints in NUnit. It provides the operator
+            overloads used to combine constraints.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.UNSET">
+            <summary>
+            Static UnsetObject used to detect derived constraints
+            failing to set the actual value.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.caseInsensitive">
+            <summary>
+            If true, all string comparisons will ignore case
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.compareAsCollection">
+            <summary>
+            If true, arrays will be treated as collections, allowing
+            those of different dimensions to be compared
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.tolerance">
+            <summary>
+            If non-zero, equality comparisons within the specified 
+            tolerance will succeed.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.compareWith">
+            <summary>
+            IComparer object used in comparisons for some constraints.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.actual">
+            <summary>
+            The actual value being tested against a constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.Within(System.Object)">
+            <summary>
+            Flag the constraint to use a tolerance when determining equality.
+            Currently only used for doubles and floats.
+            </summary>
+            <param name="tolerance">Tolerance to be used</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.Comparer(System.Collections.IComparer)">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.WriteMessageTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the failure message to the MessageWriter provided
+            as an argument. The default implementation simply passes
+            the constraint and the actual value to the writer, which
+            then displays the constraint description and the value.
+            
+            Constraints that need to provide additional details,
+            such as where the error occured can override this.
+            </summary>
+            <param name="writer">The MessageWriter on which to display the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseAnd(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            This operator creates a constraint that is satisfied only if both 
+            argument constraints are satisfied.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseOr(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            This operator creates a constraint that is satisfied if either 
+            of the argument constraints is satisfied.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.op_LogicalNot(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            This operator creates a constraint that is satisfied if the 
+            argument constraint is not satisfied.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Constraint.IgnoreCase">
+            <summary>
+            Flag the constraint to ignore case and return self.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Constraint.AsCollection">
+            <summary>
+            Flag the constraint to compare arrays as collections
+            and return self.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.Constraint.UnsetObject">
+            <summary>
+            Class used to detect any derived constraints
+            that fail to set the actual value in their
+            Matches override.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:SubstringConstraint"/> class.
+            </summary>
+            <param name="expected">The expected.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.StartsWithConstraint">
+            <summary>
+            StartsWithConstraint can test whether a string starts
+            with an expected substring.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:StartsWithConstraint"/> class.
+            </summary>
+            <param name="expected">The expected string</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is matched by the actual value.
+            This is a template method, which calls the IsMatch method
+            of the derived class.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EndsWithConstraint">
+            <summary>
+            EndsWithConstraint can test whether a string ends
+            with an expected substring.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:EndsWithConstraint"/> class.
+            </summary>
+            <param name="expected">The expected string</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is matched by the actual value.
+            This is a template method, which calls the IsMatch method
+            of the derived class.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.RegexConstraint">
+            <summary>
+            RegexConstraint can test whether a string matches
+            the pattern provided.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RegexConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:RegexConstraint"/> class.
+            </summary>
+            <param name="pattern">The pattern.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RegexConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RegexConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EmptyConstraint">
+            <summary>
+            EmptyConstraint tests a whether a string or collection is empty,
+            postponing the decision about which test is applied until the
+            type of the actual argument is known.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder">
+            <summary>
+            ConstraintBuilder is used to resolve the Not and All properties,
+            which serve as prefix operators for constraints. With the addition
+            of an operand stack, And and Or could be supported, but we have
+            left them out in favor of a simpler, more type-safe implementation.
+            Use the &amp; and | operator overloads to combine constraints.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.op_Implicit(NUnit.Framework.Constraints.ConstraintBuilder)~NUnit.Framework.Constraints.Constraint">
+            <summary>
+            Implicitly convert ConstraintBuilder to an actual Constraint
+            at the point where the syntax demands it.
+            </summary>
+            <param name="builder"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.EqualTo(System.Object)">
+            <summary>
+            Resolves the chain of constraints using an
+            EqualConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.SameAs(System.Object)">
+            <summary>
+            Resolves the chain of constraints using a
+            SameAsConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.LessThan(System.IComparable)">
+            <summary>
+            Resolves the chain of constraints using a
+            LessThanConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.GreaterThan(System.IComparable)">
+            <summary>
+            Resolves the chain of constraints using a
+            GreaterThanConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.LessThanOrEqualTo(System.IComparable)">
+            <summary>
+            Resolves the chain of constraints using a
+            LessThanOrEqualConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.AtMost(System.IComparable)">
+            <summary>
+            Resolves the chain of constraints using a
+            LessThanOrEqualConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.GreaterThanOrEqualTo(System.IComparable)">
+            <summary>
+            Resolves the chain of constraints using a
+            GreaterThanOrEqualConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.AtLeast(System.IComparable)">
+            <summary>
+            Resolves the chain of constraints using a
+            GreaterThanOrEqualConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.TypeOf(System.Type)">
+            <summary>
+            Resolves the chain of constraints using an
+            ExactTypeConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.InstanceOfType(System.Type)">
+            <summary>
+            Resolves the chain of constraints using an
+            InstanceOfTypeConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.AssignableFrom(System.Type)">
+            <summary>
+            Resolves the chain of constraints using an
+            AssignableFromConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Contains(System.Object)">
+            <summary>
+            Resolves the chain of constraints using a
+            ContainsConstraint as base. This constraint
+            will, in turn, make use of the appropriate
+            second-level constraint, depending on the
+            type of the actual argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Member(System.Object)">
+            <summary>
+            Resolves the chain of constraints using a 
+            CollectionContainsConstraint as base.
+            </summary>
+            <param name="expected">The expected object</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.StartsWith(System.String)">
+            <summary>
+            Resolves the chain of constraints using a
+            StartsWithConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.EndsWith(System.String)">
+            <summary>
+            Resolves the chain of constraints using a
+            StringEndingConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Matches(System.String)">
+            <summary>
+            Resolves the chain of constraints using a
+            StringMatchingConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.EquivalentTo(System.Collections.ICollection)">
+            <summary>
+            Resolves the chain of constraints using a
+            CollectionEquivalentConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.CollectionContaining(System.Object)">
+            <summary>
+            Resolves the chain of constraints using a
+            CollectionContainingConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.SubsetOf(System.Collections.ICollection)">
+            <summary>
+            Resolves the chain of constraints using a
+            CollectionSubsetConstraint as base.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Property(System.String,System.Object)">
+            <summary>
+            Resolves the chain of constraints using a 
+            PropertyConstraint as base
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Length(System.Int32)">
+            <summary>
+            Resolves the chain of constraints using a
+            PropertyCOnstraint on Length as base
+            </summary>
+            <param name="length"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Count(System.Int32)">
+            <summary>
+            Resolves the chain of constraints using a
+            PropertyCOnstraint on Length as base
+            </summary>
+            <param name="count"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Property(System.String)">
+            <summary>
+            Modifies the ConstraintBuilder by pushing a Prop operator on the
+            ops stack and the name of the property on the opnds stack.
+            </summary>
+            <param name="name"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Resolve(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Resolve a constraint that has been recognized by applying
+            any pending operators and returning the resulting Constraint.
+            </summary>
+            <returns>A constraint that incorporates all pending operators</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Null">
+            <summary>
+            Resolves the chain of constraints using
+            EqualConstraint(null) as base.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.True">
+            <summary>
+            Resolves the chain of constraints using
+            EqualConstraint(true) as base.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.False">
+            <summary>
+            Resolves the chain of constraints using
+            EqualConstraint(false) as base.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.NaN">
+            <summary>
+            Resolves the chain of constraints using
+            Is.NaN as base.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Empty">
+            <summary>
+            Resolves the chain of constraints using
+            Is.Empty as base.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Unique">
+            <summary>
+            Resolves the chain of constraints using
+            Is.Unique as base.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Not">
+            <summary>
+            Modifies the ConstraintBuilder by pushing a Not operator on the stack.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.No">
+            <summary>
+            Modifies the ConstraintBuilder by pushing a Not operator on the stack.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.All">
+            <summary>
+            Modifies the ConstraintBuilder by pushing an All operator on the stack.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.Some">
+            <summary>
+            Modifies the ConstraintBuilder by pushing a Some operator on the stack.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.None">
+            <summary>
+            Modifies the constraint builder by pushing All and Not operators on the stack
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionConstraint">
+            <summary>
+            CollectionConstraint is the abstract base class for
+            constraints that operate on collections.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.doMatch(System.Collections.ICollection)">
+            <summary>
+            Protected method to be implemented by derived classes
+            </summary>
+            <param name="collecton"></param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally">
+            <summary>
+            CollectionTally counts (tallies) the number of
+            occurences of each object in one or more enuerations.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.#ctor(System.Collections.IEnumerable)">
+            <summary>
+            Construct a CollectionTally object from a collection
+            </summary>
+            <param name="collection"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.CanRemove(System.Collections.IEnumerable)">
+            <summary>
+            Remove the counts for a collection from the tally,
+            so long as their are sufficient items to remove.
+            The tallies are not permitted to become negative.
+            </summary>
+            <param name="c">The collection to remove</param>
+            <returns>True if there were enough items to remove, otherwise false</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.AllCountsEqualTo(System.Int32)">
+            <summary>
+            Test whether all the counts are equal to a given value
+            </summary>
+            <param name="count">The value to be looked for</param>
+            <returns>True if all counts are equal to the value, otherwise false</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.CollectionConstraint.CollectionTally.Item(System.Object)">
+            <summary>
+            Get the count of the number of times an object is present in the tally
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.UniqueItemsConstraint">
+            <summary>
+            UniqueItemsConstraint tests whether all the items in a 
+            collection are unique.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.doMatch(System.Collections.ICollection)">
+            <summary>
+            Apply the item constraint to each item in the collection,
+            failing if any item fails.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionContainsConstraint">
+            <summary>
+            CollectionContainsConstraint is used to test whether a collection
+            contains an expected object as a member.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.#ctor(System.Object)">
+            <summary>
+            Construct a CollectionContainsConstraint
+            </summary>
+            <param name="expected"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.doMatch(System.Collections.ICollection)">
+            <summary>
+            Test whether the expected item is contained in the collection
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a descripton of the constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionEquivalentConstraint">
+            <summary>
+            CollectionEquivalentCOnstraint is used to determine whether two
+            collections are equivalent.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.#ctor(System.Collections.IEnumerable)">
+            <summary>
+            Construct a CollectionEquivalentConstraint
+            </summary>
+            <param name="expected"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.doMatch(System.Collections.ICollection)">
+            <summary>
+            Test whether two collections are equivalent
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionSubsetConstraint">
+            <summary>
+            CollectionSubsetConstraint is used to determine whether
+            one collection is a subset of another
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.#ctor(System.Collections.IEnumerable)">
+            <summary>
+            Construct a CollectionSubsetConstraint
+            </summary>
+            <param name="expected">The collection that the actual value is expected to be a subset of</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.doMatch(System.Collections.ICollection)">
+            <summary>
+            Test whether the actual collection is a subset of 
+            the expected collection provided.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EqualConstraint">
+            <summary>
+            EqualConstraint is able to compare an actual value with the
+            expected value provided in its constructor.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:EqualConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteMessageTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a failure message. Overridden to provide custom 
+            failure messages for EqualConstraint.
+            </summary>
+            <param name="writer">The MessageWriter to write to</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write description of this constraint
+            </summary>
+            <param name="writer">The MessageWriter to write to</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.ArraysEqual(System.Array,System.Array)">
+            <summary>
+            Helper method to compare two arrays
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionDifferences(NUnit.Framework.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
+            <summary>
+            Display the failure information for two collections that did not match.
+            </summary>
+            <param name="writer">The MessageWriter on which to display</param>
+            <param name="expected">The expected collection.</param>
+            <param name="actual">The actual collection</param>
+            <param name="depth">The depth of this failure in a set of nested collections</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionTypesAndSizes(NUnit.Framework.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
+            <summary>
+            Displays a single line showing the types and sizes of the expected
+            and actual collections or arrays. If both are identical, the value is 
+            only shown once.
+            </summary>
+            <param name="writer">The MessageWriter on which to display</param>
+            <param name="expected">The expected collection or array</param>
+            <param name="actual">The actual collection or array</param>
+            <param name="indent">The indentation level for the message line</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayFailurePoint(NUnit.Framework.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32,System.Int32)">
+            <summary>
+            Displays a single line showing the point in the expected and actual
+            arrays at which the comparison failed. If the arrays have different
+            structures or dimensions, both values are shown.
+            </summary>
+            <param name="writer">The MessageWriter on which to display</param>
+            <param name="expected">The expected array</param>
+            <param name="actual">The actual array</param>
+            <param name="failurePoint">Index of the failure point in the underlying collections</param>
+            <param name="indent">The indentation level for the message line</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PrefixConstraint">
+            <summary>
+            Abstract base class used for prefixes
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.PrefixConstraint.baseConstraint">
+            <summary>
+            The base constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PrefixConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct given a base constraint
+            </summary>
+            <param name="baseConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PrefixConstraint.PassModifiersToBase">
+            <summary>
+            Set all modifiers applied to the prefix into
+            the base constraint before matching
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NotConstraint">
+            <summary>
+            NotConstraint negates the effect of some other constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NotConstraint"/> class.
+            </summary>
+            <param name="baseConstraint">The base constraint to be negated.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for if the base constraint fails, false if it succeeds</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a MessageWriter.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AllItemsConstraint">
+            <summary>
+            AllItemsConstraint applies another constraint to each
+            item in a collection, succeeding if they all succeed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct an AllItemsConstraint on top of an existing constraint
+            </summary>
+            <param name="itemConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.Matches(System.Object)">
+            <summary>
+            Apply the item constraint to each item in the collection,
+            failing if any item fails.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SomeItemsConstraint">
+            <summary>
+            SomeItemsConstraint applies another constraint to each
+            item in a collection, succeeding if any of them succeeds.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct a SomeItemsConstraint on top of an existing constraint
+            </summary>
+            <param name="itemConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.Matches(System.Object)">
+            <summary>
+            Apply the item constraint to each item in the collection,
+            failing if any item fails.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NoItemConstraint">
+            <summary>
+            SomeItemsConstraint applies another constraint to each
+            item in a collection, succeeding if any of them succeeds.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct a SomeItemsConstraint on top of an existing constraint
+            </summary>
+            <param name="itemConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.Matches(System.Object)">
+            <summary>
+            Apply the item constraint to each item in the collection,
+            failing if any item fails.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SameAsConstraint">
+            <summary>
+            SameAsConstraint tests whether an object is identical to
+            the object passed to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:SameAsConstraint"/> class.
+            </summary>
+            <param name="expected">The expected object.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.TypeConstraint">
+            <summary>
+            TypeConstraint is the abstract base for constraints
+            that take a Type as their expected value.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.TypeConstraint.expectedType">
+            <summary>
+            The expected Type used by the constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.TypeConstraint.#ctor(System.Type)">
+            <summary>
+            Construct a TypeConstraint for a given Type
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.TypeConstraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. TypeCOnstraints override this method to write
+            the name of the type.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ExactTypeConstraint">
+            <summary>
+            ExactTypeConstraint is used to test that an object
+            is of the exact type provided in the constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.#ctor(System.Type)">
+            <summary>
+            Construct an ExactTypeConstraint for a given Type
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.Matches(System.Object)">
+            <summary>
+            Test that an object is of the exact type specified
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.InstanceOfTypeConstraint">
+            <summary>
+            InstanceOfTypeConstraint is used to test that an object
+            is of the same type provided or derived from it.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.#ctor(System.Type)">
+            <summary>
+            Construct an InstanceOfTypeConstraint for the type provided
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.Matches(System.Object)">
+            <summary>
+            Test whether an object is of the specified type or a derived type
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AssignableFromConstraint">
+            <summary>
+            AssignableFromConstraint is used to test that an object
+            can be assigned from a given Type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.#ctor(System.Type)">
+            <summary>
+            Construct an AssignableFromConstraint for the type provided
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.Matches(System.Object)">
+            <summary>
+            Test whether an object can be assigned from the specified type
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ComparisonConstraint">
+            <summary>
+            Abstract base class for constraints that compare values to
+            determine if one is greater than, equal to or less than
+            the other.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.expected">
+            <summary>
+            The value against which a comparison is to be made
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.ltOK">
+            <summary>
+            If true, less than returns success
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.eqOK">
+            <summary>
+            if true, equal returns success
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.gtOK">
+            <summary>
+            if true, greater than returns success
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.predicate">
+            <summary>
+            The predicate used as a part of the description
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.#ctor(System.IComparable,System.Boolean,System.Boolean,System.Boolean,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
+            </summary>
+            <param name="value">The value against which to make a comparison.</param>
+            <param name="ltOK">if set to <c>true</c> less succeeds.</param>
+            <param name="eqOK">if set to <c>true</c> equal succeeds.</param>
+            <param name="gtOK">if set to <c>true</c> greater succeeds.</param>
+            <param name="predicate">String used in describing the constraint.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.GreaterThanConstraint">
+            <summary>
+            Tests whether a value is greater than the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.GreaterThanConstraint.#ctor(System.IComparable)">
+            <summary>
+            Initializes a new instance of the <see cref="T:GreaterThanConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint">
+            <summary>
+            Tests whether a value is greater than or equal to the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint.#ctor(System.IComparable)">
+            <summary>
+            Initializes a new instance of the <see cref="T:GreaterThanOrEqualConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.LessThanConstraint">
+            <summary>
+            Tests whether a value is less than the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.LessThanConstraint.#ctor(System.IComparable)">
+            <summary>
+            Initializes a new instance of the <see cref="T:LessThanConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.LessThanOrEqualConstraint">
+            <summary>
+            Tests whether a value is less than or equal to the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.LessThanOrEqualConstraint.#ctor(System.IComparable)">
+            <summary>
+            Initializes a new instance of the <see cref="T:LessThanOrEqualConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ContainsConstraint">
+            <summary>
+            ContainsConstraint tests a whether a string contains a substring
+            or a collection contains an object. It postpones the decision of
+            which test to use until the type of the actual argument is known.
+            This allows testing whether a string is contained in a collection
+            or as a substring of another string using the same syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ContainsConstraint"/> class.
+            </summary>
+            <param name="expected">The expected.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PropertyConstraint">
+            <summary>
+            Summary description for PropertyConstraint.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.#ctor(System.String,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Initializes a new instance of the <see cref="T:PropertyConstraint"/> class.
+            </summary>
+            <param name="name">The name.</param>
+            <param name="baseConstraint">The constraint to apply to the property.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteActualValueTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.BinaryOperation">
+            <summary>
+            BinaryOperation is the abstract base of all constraints
+            that combine two other constraints in some fashion.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.BinaryOperation.left">
+            <summary>
+            The first constraint being combined
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.BinaryOperation.right">
+            <summary>
+            The second constraint being combined
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinaryOperation.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct a BinaryOperation from two other constraints
+            </summary>
+            <param name="left">The first constraint</param>
+            <param name="right">The second constraint</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AndConstraint">
+            <summary>
+            AndConstraint succeeds only if both members succeed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Create an AndConstraint from two other constraints
+            </summary>
+            <param name="left">The first constraint</param>
+            <param name="right">The second constraint</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndConstraint.Matches(System.Object)">
+            <summary>
+            Apply both member constraints to an actual value, succeeding 
+            succeeding only if both of them succeed.
+            </summary>
+            <param name="actual">The actual value</param>
+            <returns>True if the constraints both succeeded</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description for this contraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to receive the description</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.OrConstraint">
+            <summary>
+            OrConstraint succeeds if either member succeeds
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Create an OrConstraint from two other constraints
+            </summary>
+            <param name="left">The first constraint</param>
+            <param name="right">The second constraint</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrConstraint.Matches(System.Object)">
+            <summary>
+            Apply the member constraints to an actual value, succeeding 
+            succeeding as soon as one of them succeeds.
+            </summary>
+            <param name="actual">The actual value</param>
+            <returns>True if either constraint succeeded</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrConstraint.WriteDescriptionTo(NUnit.Framework.MessageWriter)">
+            <summary>
+            Write a description for this contraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to receive the description</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.Numerics">
+            <summary>
+            The Numerics class contains common operations on numeric values.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.IsNumericType(System.Object)">
+            <summary>
+            Checks the type of the object, returning true if
+            the object is a numeric type.
+            </summary>
+            <param name="obj">The object to check</param>
+            <returns>true if the object is a numeric type</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.IsFloatingPointNumeric(System.Object)">
+            <summary>
+            Checks the type of the object, returning true if
+            the object is a floating point numeric type.
+            </summary>
+            <param name="obj">The object to check</param>
+            <returns>true if the object is a floating point numeric type</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.IsFixedPointNumeric(System.Object)">
+            <summary>
+            Checks the type of the object, returning true if
+            the object is a fixed point numeric type.
+            </summary>
+            <param name="obj">The object to check</param>
+            <returns>true if the object is a fixed point numeric type</returns>
+        </member>
+        <member name="T:NUnit.Framework.SyntaxHelpers.Is">
+            <summary>
+            The Is class is a helper class with properties and methods
+            that supply a number of constraints used in Asserts.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.SyntaxHelpers.Is.Null">
+            <summary>
+            Is.Null returns a static constraint that tests for null
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.SyntaxHelpers.Is.True">
+            <summary>
+            Is.True returns a static constraint that tests whether a value is true
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.SyntaxHelpers.Is.False">
+            <summary>
+            Is.False returns a static constraint that tests whether a value is false
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.SyntaxHelpers.Is.NaN">
+            <summary>
+            Is.NaN returns a static constraint that tests whether a value is an NaN
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.SyntaxHelpers.Is.Empty">
+            <summary>
+            Is.Empty returns a static constraint that tests whether a string or collection is empty
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.SyntaxHelpers.Is.Unique">
+            <summary>
+            Is.Unique returns a static constraint that tests whether a collection contains all unque items.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.EqualTo(System.Object)">
+            <summary>
+            Is.EqualTo returns a constraint that tests whether the
+            actual value equals the supplied argument
+            </summary>
+            <param name="expected"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.SameAs(System.Object)">
+            <summary>
+            Is.SameAs returns a constraint that tests whether the
+            actual value is the same object as the supplied argument.
+            </summary>
+            <param name="expected"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.GreaterThan(System.IComparable)">
+            <summary>
+            Is.GreaterThan returns a constraint that tests whether the
+            actual value is greater than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.GreaterThanOrEqualTo(System.IComparable)">
+            <summary>
+            Is.GreaterThanOrEqualTo returns a constraint that tests whether the
+            actual value is greater than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.AtLeast(System.IComparable)">
+            <summary>
+            Is.AtLeast is a synonym for Is.GreaterThanOrEqualTo
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.LessThan(System.IComparable)">
+            <summary>
+            Is.LessThan returns a constraint that tests whether the
+            actual value is less than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.LessThanOrEqualTo(System.IComparable)">
+            <summary>
+            Is.LessThanOrEqualTo returns a constraint that tests whether the
+            actual value is less than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.AtMost(System.IComparable)">
+            <summary>
+            Is.AtMost is a synonym for Is.LessThanOrEqualTo
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.TypeOf(System.Type)">
+            <summary>
+            Is.TypeOf returns a constraint that tests whether the actual
+            value is of the exact type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.InstanceOfType(System.Type)">
+            <summary>
+            Is.InstanceOfType returns a constraint that tests whether 
+            the actual value is of the type supplied as an argument
+            or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.AssignableFrom(System.Type)">
+            <summary>
+            Is.AssignableFrom returns a constraint that tests whether
+            the actual value is assignable from the type supplied as
+            an argument.
+            </summary>
+            <param name="expectedType"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.EquivalentTo(System.Collections.ICollection)">
+            <summary>
+            Is.EquivalentTo returns a constraint that tests whether
+            the actual value is a collection containing the same
+            elements as the collection supplied as an arument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Is.SubsetOf(System.Collections.ICollection)">
+            <summary>
+            Is.SubsetOf returns a constraint that tests whether
+            the actual value is a subset of the collection 
+            supplied as an arument
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.SyntaxHelpers.Is.Not">
+            <summary>
+            Is.Not returns a ConstraintBuilder that negates
+            the constraint that follows it.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.SyntaxHelpers.Is.All">
+            <summary>
+            Is.All returns a ConstraintBuilder, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed. This property is
+            a synonym for Has.AllItems.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SyntaxHelpers.Iz">
+            <summary>
+            The Iz class is a synonym for Is intended for use in VB,
+            which regards Is as a keyword.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SyntaxHelpers.Text">
+            <summary>
+            The Text class is a helper class with properties and methods
+            that supply a number of constraints used with strings.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.Contains(System.String)">
+            <summary>
+            Contains returns a constraint that succeeds if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotContain(System.String)">
+            <summary>
+            DoesNotContain returns a constraint that fails if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.StartsWith(System.String)">
+            <summary>
+            StartsWith returns a constraint that succeeds if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotStartWith(System.String)">
+            <summary>
+            DoesNotStartWith returns a constraint that fails if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.EndsWith(System.String)">
+            <summary>
+            EndsWith returns a constraint that succeeds if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotEndWith(System.String)">
+            <summary>
+            DoesNotEndWith returns a constraint that fails if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.Matches(System.String)">
+            <summary>
+            Matches returns a constraint that succeeds if the actual
+            value matches the pattern supplied as an argument.
+            </summary>
+            <param name="pattern"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Text.DoesNotMatch(System.String)">
+            <summary>
+            DoesNotMatch returns a constraint that failss if the actual
+            value matches the pattern supplied as an argument.
+            </summary>
+            <param name="pattern"></param>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.SyntaxHelpers.Text.All">
+            <summary>
+            Text.All returns a ConstraintBuilder, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SyntaxHelpers.List">
+            <summary>
+            The List class is a helper class with properties and methods
+            that supply a number of constraints used with lists and collections.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.List.Map(System.Collections.ICollection)">
+            <summary>
+            List.Map returns a ListMapper, which can be used to map
+            the original collection to another collection.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.SyntaxHelpers.ListMapper">
+            <summary>
+            ListMapper is used to transform a collection used as an actual argument
+            producing another collection to be used in the assertion.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.ListMapper.#ctor(System.Collections.ICollection)">
+            <summary>
+            Construct a ListMapper based on a collection
+            </summary>
+            <param name="original">The collection to be transformed</param>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.ListMapper.Property(System.String)">
+            <summary>
+            Produces a collection containing all the values of a property
+            </summary>
+            <param name="name">The collection of property values</param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.SyntaxHelpers.Has">
+            <summary>
+            Summary description for HasNoPrefixB.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Property(System.String)">
+            <summary>
+            Returns a new ConstraintBuilder, which will apply the
+            following constraint to a named property of the object
+            being tested.
+            </summary>
+            <param name="name">The name of the property</param>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Property(System.String,System.Object)">
+            <summary>
+            Returns a new PropertyConstraint checking for the
+            existence of a particular property value.
+            </summary>
+            <param name="name">The name of the property to look for</param>
+            <param name="expected">The expected value of the property</param>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Length(System.Int32)">
+            <summary>
+            Returns a new PropertyConstraint for the Length property
+            </summary>
+            <param name="length"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Count(System.Int32)">
+            <summary>
+            Returns a new PropertyConstraint or the Count property
+            </summary>
+            <param name="count"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Has.Member(System.Object)">
+            <summary>
+            Returns a new CollectionContainsConstraint checking for the
+            presence of a particular object in the collection.
+            </summary>
+            <param name="expected">The expected object</param>
+        </member>
+        <member name="P:NUnit.Framework.SyntaxHelpers.Has.No">
+            <summary>
+            Has.No returns a ConstraintBuilder that negates
+            the constraint that follows it.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.SyntaxHelpers.Has.All">
+            <summary>
+            Has.AllItems returns a ConstraintBuilder, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.SyntaxHelpers.Has.Some">
+            <summary>
+            Has.Some returns a ConstraintBuilder, which will apply
+            the following constraint to all members of a collection,
+            succeeding if any of them succeed. It is a synonym
+            for Has.Item.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.SyntaxHelpers.Has.None">
+            <summary>
+            Has.None returns a ConstraintBuilder, which will apply
+            the following constraint to all members of a collection,
+            succeeding only if none of them succeed.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SyntaxHelpers.Has.HasNoPrefixBuilder">
+            <summary>
+            Nested class that allows us to restrict the number
+            of key words that may appear after Has.No.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Has.HasNoPrefixBuilder.Property(System.String)">
+            <summary>
+            Return a ConstraintBuilder conditioned to apply
+            the following constraint to a property.
+            </summary>
+            <param name="name">The property name</param>
+            <returns>A ConstraintBuilder</returns>
+        </member>
+        <member name="M:NUnit.Framework.SyntaxHelpers.Has.HasNoPrefixBuilder.Member(System.Object)">
+            <summary>
+            Return a Constraint that succeeds if the expected object is
+            not contained in a collection.
+            </summary>
+            <param name="expected">The expected object</param>
+            <returns>A Constraint</returns>
+        </member>
+        <member name="T:NUnit.Framework.Assert">
+            <summary>
+            The Assert class contains a collection of static methods that
+            implement the most common assertions used in NUnit.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.#ctor">
+            <summary>
+            We don't actually want any instances of this object, but some people
+            like to inherit from it to add other static methods. Hence, the
+            protected constructor disallows any instances of this object. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is true</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is true</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean)">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to be displayed when the object is null</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String)">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to be displayed when the object is null</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object)">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to be displayed when the object is not null</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String)">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to be displayed when the object is not null</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNull(System.Object)">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not null <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the double is passed is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The value that is to be tested</param>
+            <param name="message">The message to be displayed when the object is not null</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String)">
+            <summary>
+            Verifies that the double is passed is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The object that is to be tested</param>
+            <param name="message">The message to be displayed when the object is not null</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double)">
+            <summary>
+            Verifies that the double is passed is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The object that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Assert that a string is empty - that is equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String)">
+            <summary>
+            Assert that a string is empty - that is equal to string.Emtpy
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String)">
+            <summary>
+            Assert that a string is empty - that is equal to string.Emtpy
+            </summary>
+            <param name="aString">The string to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection)">
+            <summary>
+            Assert that an array,list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Assert that a string is not empty - that is not equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String)">
+            <summary>
+            Assert that a string is empty - that is equal to string.Emtpy
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String)">
+            <summary>
+            Assert that a string is empty - that is equal to string.Emtpy
+            </summary>
+            <param name="aString">The string to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection)">
+            <summary>
+            Assert that an array,list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object)">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The messge to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object)">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The messge to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">A message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">A message to display in case of failure</param>
+            <param name="args">An array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">A message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">A message to display in case of failure</param>
+            <param name="args">An array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that two ints are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that two ints are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32)">
+            <summary>
+            Verifies that two ints are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that two longs are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that two longs are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64)">
+            <summary>
+            Verifies that two longs are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that two uints are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that two uints are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that two uints are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that two ulongs are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that two ulongs are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that two ulongs are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that two decimals are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that two decimal are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that two decimals are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double)">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Single,System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that two floats are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message displayed upon failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Single,System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that two floats are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message displayed upon failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Single,System.Single,System.Single)">
+            <summary>
+            Verifies that two floats are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equals then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that two objects are equal.  Two objects are considered
+            equal if both are null, or if both have the same value.  All
+            non-numeric types are compared by using the <c>Equals</c> method.
+            Arrays are compared by comparing each element using the same rules.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String)">
+            <summary>
+            Verifies that two objects are equal.  Two objects are considered
+            equal if both are null, or if both have the same value.  All
+            non-numeric types are compared by using the <c>Equals</c> method.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object)">
+            <summary>
+            Verifies that two objects are equal.  Two objects are considered
+            equal if both are null, or if both have the same value.  All
+            non-numeric types are compared by using the <c>Equals</c> method.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that two objects are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String)">
+            <summary>
+            Asserts that two objects are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object)">
+            <summary>
+            Asserts that two objects are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Asserts that two ints are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Asserts that two ints are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32)">
+            <summary>
+            Asserts that two ints are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Asserts that two longss are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Asserts that two longs are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64)">
+            <summary>
+            Asserts that two longs are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Asserts that two uints are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Asserts that two uints are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Asserts that two uints are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Asserts that two ulongs are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Asserts that two ulongs are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Asserts that two ulong are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Asserts that two decimals are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Asserts that two decimals are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Asserts that two decimals are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Asserts that two floats are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String)">
+            <summary>
+            Asserts that two floats are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single)">
+            <summary>
+            Asserts that two floats are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Asserts that two doubles are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String)">
+            <summary>
+            Asserts that two doubles are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double)">
+            <summary>
+            Asserts that two doubles are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that two objects refer to the same object. If they
+            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are not the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String)">
+            <summary>
+            Asserts that two objects refer to the same object. If they
+            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the object is null</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object)">
+            <summary>
+            Asserts that two objects refer to the same object. If they
+            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that two objects do not refer to the same object. If they
+            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the two objects are the same object.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String)">
+            <summary>
+            Asserts that two objects do not refer to the same object. If they
+            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to be displayed when the objects are the same</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object)">
+            <summary>
+            Asserts that two objects do not refer to the same object. If they
+            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is contained in a list.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The list to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that an object is contained in a list.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The list to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection)">
+            <summary>
+            Asserts that an object is contained in a list.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The list to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Fail(System.String,System.Object[])">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message and arguments 
+            that are passed in. This is used by the other Assert functions. 
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Fail(System.String)">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message that is 
+            passed in. This is used by the other Assert functions. 
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Fail">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.AssertionException"/>. 
+            This is used by the other Assert functions. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Ignore(System.String,System.Object[])">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message and arguments 
+            that are passed in.  This causes the test to be reported as ignored.
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Ignore(System.String)">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message that is 
+            passed in. This causes the test to be reported as ignored. 
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Ignore">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.IgnoreException"/>. 
+            This causes the test to be reported as ignored. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.DoAssert(NUnit.Framework.IAsserter)">
+            <summary>
+            NOTE: The use of asserters for extending NUnit has
+            now been replaced by the use of constraints. This
+            method is marked obsolete.
+            
+            Test the condition asserted by an asserter and throw
+            an assertion exception using provided message on failure.
+            </summary>
+            <param name="asserter">An object that implements IAsserter</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeedingt if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeedingt if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is greater or equal to than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is greater or equal to than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is greater or equal to than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is greater than or equal to the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="P:NUnit.Framework.Assert.Counter">
+            <summary>
+            Gets the number of assertions executed so far and 
+            resets the counter to zero.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.MessageMatch">
+            <summary>
+            Enumeration indicating how the expected message parameter is to be used
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.MessageMatch.Exact">
+            Expect an exact match
+        </member>
+        <member name="F:NUnit.Framework.MessageMatch.Contains">
+            Expect a message containing the parameter string
+        </member>
+        <member name="F:NUnit.Framework.MessageMatch.Regex">
+            Match the regular expression provided as a parameter
+        </member>
+        <member name="T:NUnit.Framework.ExpectedExceptionAttribute">
+            <summary>
+            ExpectedExceptionAttribute
+            </summary>
+            
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor">
+            <summary>
+            Constructor for a non-specific exception
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.Type)">
+            <summary>
+            Constructor for a given type of exception
+            </summary>
+            <param name="exceptionType">The type of the expected exception</param>
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.String)">
+            <summary>
+            Constructor for a given exception name
+            </summary>
+            <param name="exceptionName">The full name of the expected exception</param>
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.Type,System.String)">
+            <summary>
+            Constructor for a given type of exception and expected message text
+            </summary>
+            <param name="exceptionType">The type of the expected exception</param>
+            <param name="expectedMessage">The expected message text</param>
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.String,System.String)">
+            <summary>
+            Constructor for a given exception name and expected message text
+            </summary>
+            <param name="exceptionName">The full name of the expected exception</param>
+            <param name="expectedMessage">The expected messge text</param>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExceptionType">
+            <summary>
+            Gets or sets the expected exception type
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExceptionName">
+            <summary>
+            Gets or sets the full Type name of the expected exception
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedMessage">
+            <summary>
+            Gets or sets the expected message text
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.UserMessage">
+            <summary>
+            Gets or sets the user message displayed in case of failure
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.MatchType">
+            <summary>
+             Gets or sets the type of match to be performed on the expected message
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.Handler">
+            <summary>
+             Gets the name of a method to be used as an exception handler
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.CollectionAssert">
+            <summary>
+            A set of Assert methods operationg on one or more collections
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.ICollection,System.Type)">
+            <summary>
+            Asserts that all items contained in collection are of the type specified by expectedType.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.ICollection,System.Type,System.String)">
+            <summary>
+            Asserts that all items contained in collection are of the type specified by expectedType.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.ICollection,System.Type,System.String,System.Object[])">
+            <summary>
+            Asserts that all items contained in collection are of the type specified by expectedType.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.ICollection)">
+            <summary>
+            Asserts that all items contained in collection are not equal to null.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that all items contained in collection are not equal to null.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that all items contained in collection are not equal to null.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.ICollection)">
+            <summary>
+            Ensures that every object contained in collection exists within the collection
+            once and only once.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.ICollection,System.String)">
+            <summary>
+            Ensures that every object contained in collection exists within the collection
+            once and only once.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Ensures that every object contained in collection exists within the collection
+            once and only once.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.ICollection,System.Collections.ICollection)">
+            <summary>
+            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.ICollection,System.Collections.ICollection,System.Collections.IComparer,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each ICollection</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.ICollection,System.Collections.ICollection)">
+            <summary>
+            Asserts that expected and actual are not equivalent.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that expected and actual are not equivalent.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are not equivalent.
+            </summary>
+            <param name="expected">The first ICollection of objects to be considered</param>
+            <param name="actual">The second ICollection of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.ICollection,System.Object)">
+            <summary>
+            Asserts that collection contains actual as an item.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="actual">Object to be found within collection</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.ICollection,System.Object,System.String)">
+            <summary>
+            Asserts that collection contains actual as an item.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="actual">Object to be found within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.ICollection,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that collection contains actual as an item.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="actual">Object to be found within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.ICollection,System.Object)">
+            <summary>
+            Asserts that collection does not contain actual as an item.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="actual">Object that cannot exist within collection</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.ICollection,System.Object,System.String)">
+            <summary>
+            Asserts that collection does not contain actual as an item.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="actual">Object that cannot exist within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.ICollection,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that collection does not contain actual as an item.
+            </summary>
+            <param name="collection">ICollection of objects to be considered</param>
+            <param name="actual">Object that cannot exist within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.ICollection,System.Collections.ICollection)">
+            <summary>
+            Asserts that superset is not a subject of subset.
+            </summary>
+            <param name="subset">The ICollection superset to be considered</param>
+            <param name="superset">The ICollection subset to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that superset is not a subject of subset.
+            </summary>
+            <param name="subset">The ICollection superset to be considered</param>
+            <param name="superset">The ICollection subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that superset is not a subject of subset.
+            </summary>
+            <param name="subset">The ICollection superset to be considered</param>
+            <param name="superset">The ICollection subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.ICollection,System.Collections.ICollection)">
+            <summary>
+            Asserts that superset is a subset of subset.
+            </summary>
+            <param name="subset">The ICollection superset to be considered</param>
+            <param name="superset">The ICollection subset to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that superset is a subset of subset.
+            </summary>
+            <param name="subset">The ICollection superset to be considered</param>
+            <param name="superset">The ICollection subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.ICollection,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that superset is a subset of subset.
+            </summary>
+            <param name="subset">The ICollection superset to be considered</param>
+            <param name="superset">The ICollection subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.ICollection,System.String)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.ICollection)">
+            <summary>
+            Assert that an array,list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.ICollection,System.String)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.ICollection)">
+            <summary>
+            Assert that an array,list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+        </member>
+        <member name="T:NUnit.Framework.AbstractAsserter">
+            <summary>
+            NOTE: The use of asserters for extending NUnit has
+            now been replaced by the use of constraints. This
+            class is marked obsolete.
+            
+            AbstractAsserter is the base class for all asserters.
+            Asserters encapsulate a condition test and generation 
+            of an AssertionException with a tailored message. They
+            are used by the Assert class as helper objects.
+            
+            User-defined asserters may be passed to the 
+            Assert.DoAssert method in order to implement 
+            extended asserts.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IAsserter">
+            <summary>
+            NOTE: The use of asserters for extending NUnit has
+            now been replaced by the use of constraints. This
+            interface is marked obsolete.
+            
+            The interface implemented by an asserter. Asserters
+            encapsulate a condition test and generation of an
+            AssertionException with a tailored message. They
+            are used by the Assert class as helper objects.
+            
+            User-defined asserters may be passed to the
+            Assert.DoAssert method in order to implement
+            extended asserts.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IAsserter.Test">
+            <summary>
+            Test the condition for the assertion.
+            </summary>
+            <returns>True if the test succeeds</returns>
+        </member>
+        <member name="P:NUnit.Framework.IAsserter.Message">
+            <summary>
+            Return the message giving the failure reason.
+            The return value is unspecified if no failure
+            has occured.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.AbstractAsserter.userMessage">
+            <summary>
+            The user-defined message for this asserter.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.AbstractAsserter.args">
+            <summary>
+            Arguments to use in formatting the user-defined message.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.AbstractAsserter.failureMessage">
+            <summary>
+            Our failure message object, initialized as needed
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.AbstractAsserter.#ctor(System.String,System.Object[])">
+            <summary>
+            Constructs an AbstractAsserter
+            </summary>
+            <param name="message">The message issued upon failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.AbstractAsserter.Test">
+            <summary>
+            Test method to be implemented by derived types.
+            Default always succeeds.
+            </summary>
+            <returns>True if the test succeeds</returns>
+        </member>
+        <member name="P:NUnit.Framework.AbstractAsserter.FailureMessage">
+            <summary>
+            AssertionFailureMessage object used internally
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.AbstractAsserter.Message">
+            <summary>
+            Message related to a failure. If no failure has
+            occured, the result is unspecified.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Assertion">
+            <summary>
+            The Assertion class is obsolete and has been
+            replaced by the Assert class.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.Assert(System.String,System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If it isn't it throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="message">The message to display is the condition
+            is false</param>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.Assert(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If it isn't it throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Double,System.Double,System.Double)">
+            <summary>
+            /// Asserts that two doubles are equal concerning a delta. If the
+            expected value is infinity then the delta value is ignored.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Single,System.Single,System.Single)">
+            <summary>
+            /// Asserts that two singles are equal concerning a delta. If the
+            expected value is infinity then the delta value is ignored.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Object,System.Object)">
+            <summary>Asserts that two objects are equal. If they are not
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.Int32,System.Int32)">
+            <summary>Asserts that two ints are equal. If they are not
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Int32,System.Int32)">
+            <summary>Asserts that two ints are equal. If they are not
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Double,System.Double,System.Double)">
+            <summary>Asserts that two doubles are equal concerning a delta.
+            If the expected value is infinity then the delta value is ignored.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Single,System.Single,System.Single)">
+            <summary>Asserts that two floats are equal concerning a delta.
+            If the expected value is infinity then the delta value is ignored.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertEquals(System.String,System.Object,System.Object)">
+            <summary>
+            Asserts that two objects are equal.  Two objects are considered
+            equal if both are null, or if both have the same value.  Numeric
+            types are compared via string comparision on their contents to
+            avoid problems comparing values between different types.  All
+            non-numeric types are compared by using the <c>Equals</c> method.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertNotNull(System.Object)">
+            <summary>Asserts that an object isn't null.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertNotNull(System.String,System.Object)">
+            <summary>Asserts that an object isn't null.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertNull(System.Object)">
+            <summary>Asserts that an object is null.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertNull(System.String,System.Object)">
+            <summary>Asserts that an object is null.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertSame(System.Object,System.Object)">
+            <summary>Asserts that two objects refer to the same object. If they
+            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.AssertSame(System.String,System.Object,System.Object)">
+            <summary>Asserts that two objects refer to the same object. 
+            If they are not an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.Fail">
+            <summary>Fails a test with no message.</summary>
+        </member>
+        <member name="M:NUnit.Framework.Assertion.Fail(System.String)">
+            <summary>Fails a test with the given message.</summary>
+        </member>
+        <member name="T:NUnit.Framework.AssertionException">
+            <summary>
+            Thrown when an assertion failed.
+            </summary>
+            
+        </member>
+        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String,System.Exception)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+            <param name="inner">The exception that caused the 
+            current exception</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Serialization Constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.AssertionFailureMessage">
+            <summary>
+            AssertionFailureMessage encapsulates a failure message
+            issued as a result of an Assert failure.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.AssertionFailureMessage.PreClipLength">
+            <summary>
+            Number of characters before a highlighted position before
+            clipping will occur.  Clipped text is replaced with an
+            elipsis "..."
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.AssertionFailureMessage.PostClipLength">
+            <summary>
+            Number of characters after a highlighted position before
+            clipping will occur.  Clipped text is replaced with an
+            elipsis "..."
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.AssertionFailureMessage.expectedPrefix">
+            <summary>
+            Prefix used to start an expected value line.
+            Must be same length as actualPrefix.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.AssertionFailureMessage.actualPrefix">
+            <summary>
+            Prefix used to start an actual value line.
+            Must be same length as expectedPrefix.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.#ctor(System.String,System.Object[])">
+            <summary>
+            Construct an AssertionFailureMessage with a message
+            and optional arguments.
+            </summary>
+            <param name="message"></param>
+            <param name="args"></param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.#ctor">
+            <summary>
+            Construct an empty AssertionFailureMessage
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.WriteExpectedLine(System.String)">
+            <summary>
+            Add an expected value line to the message containing
+            the text provided as an argument.
+            </summary>
+            <param name="text">Text describing what was expected.</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.WriteActualLine(System.String)">
+            <summary>
+            Add an actual value line to the message containing
+            the text provided as an argument.
+            </summary>
+            <param name="text">Text describing the actual value.</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedValue(System.Object)">
+            <summary>
+            Add an expected value line to the message containing
+            a string representation of the object provided.
+            </summary>
+            <param name="expected">An object representing the expected value</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedValue(System.Double,System.Double)">
+            <summary>
+            Add an expected value line to the message containing a double
+            and the tolerance used in making the comparison.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="tolerance">The tolerance specified in the Assert</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayActualValue(System.Object)">
+            <summary>
+            Add an actual value line to the message containing
+            a string representation of the object provided.
+            </summary>
+            <param name="actual">An object representing what was actually found</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedAndActual(System.Object,System.Object)">
+            <summary>
+            Display two lines that communicate the expected value, and the actual value
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value found</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayExpectedAndActual(System.Double,System.Double,System.Double)">
+            <summary>
+            Display two lines that communicate the expected value, the actual value and
+            the tolerance used in comparing two doubles.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value found</param>
+            <param name="tolerance">The tolerance specified in the Assert</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayPositionMarker(System.Int32)">
+            <summary>
+            Draws a marker under the expected/actual strings that highlights
+            where in the string a mismatch occurred.
+            </summary>
+            <param name="iPosition">The position of the mismatch</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.BuildStringLengthReport(System.String,System.String)">
+            <summary>
+            Reports whether the string lengths are the same or different, and
+            what the string lengths are.
+            </summary>
+            <param name="sExpected">The expected string</param>
+            <param name="sActual">The actual string value</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayDifferences(System.Object,System.Object,System.Boolean)">
+            <summary>
+            Called to create additional message lines when two objects have been 
+            found to be unequal.  If the inputs are strings, a special message is
+            rendered that can help track down where the strings are different,
+            based on differences in length, or differences in content.
+            
+            If the inputs are not strings, the ToString method of the objects
+            is used to show what is different about them.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayDifferencesWithTolerance(System.Double,System.Double,System.Double)">
+            <summary>
+            Called to create additional message lines when two doubles have been 
+            found to be unequal, within the specified tolerance.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayStringDifferences(System.String,System.String,System.Boolean)">
+            <summary>
+            Constructs a message that can be displayed when the content of two
+            strings are different, but the string lengths are the same.  The
+            message will clip the strings to a reasonable length, centered
+            around the first position where they are mismatched, and draw 
+            a line marking the position of the difference to make comparison
+            quicker.
+            </summary>
+            <param name="sExpected">The expected string value</param>
+            <param name="sActual">The actual string value</param>
+            <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayArrayDifferences(System.Array,System.Array,System.Int32)">
+            <summary>
+            Display a standard message showing the differences found between 
+            two arrays that were expected to be equal.
+            </summary>
+            <param name="expected">The expected array value</param>
+            <param name="actual">The actual array value</param>
+            <param name="index">The index at which a difference was found</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayCollectionDifferences(System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
+            <summary>
+            Display a standard message showing the differences found between 
+            two collections that were expected to be equal.
+            </summary>
+            <param name="expected">The expected collection value</param>
+            <param name="actual">The actual collection value</param>
+            <param name="index">The index at which a difference was found</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.GetArrayIndicesFromCollectionIndex(System.Collections.ICollection,System.Int32)">
+            <summary>
+            Get an array of indices representing the point in a collection or
+            array corresponding to a single int index into the collection.
+            </summary>
+            <param name="collection">The collection to which the indices apply</param>
+            <param name="index">Index in the collection</param>
+            <returns>Array of indices</returns>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.DisplayListElements(System.String,System.Collections.IList,System.Int32,System.Int32)">
+            <summary>
+            Displays elements from a list on a line
+            </summary>
+            <param name="label">Text to prefix the line with</param>
+            <param name="list">The list of items to display</param>
+            <param name="index">The index in the list of the first element to display</param>
+            <param name="max">The maximum number of elements to display</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.FormatObjectForDisplay(System.Object)">
+            <summary>
+            Formats an object for display in a message line
+            </summary>
+            <param name="obj">The object to be displayed</param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.InputsAreStrings(System.Object,System.Object)">
+            <summary>
+            Tests two objects to determine if they are strings.
+            </summary>
+            <param name="expected"></param>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.ClipAroundPosition(System.String,System.Int32)">
+            <summary>
+            Renders up to M characters before, and up to N characters after
+            the specified index position.  If leading or trailing text is
+            clipped, and elipses "..." is added where the missing text would
+            be.
+            
+            Clips strings to limit previous or post newline characters,
+            since these mess up the comparison
+            </summary>
+            <param name="sString"></param>
+            <param name="iPosition"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.FindMismatchPosition(System.String,System.String,System.Int32)">
+            <summary>
+            Shows the position two strings start to differ.  Comparison 
+            starts at the start index.
+            </summary>
+            <param name="sExpected"></param>
+            <param name="sActual"></param>
+            <param name="iStart"></param>
+            <returns>-1 if no mismatch found, or the index where mismatch found</returns>
+        </member>
+        <member name="M:NUnit.Framework.AssertionFailureMessage.ConvertWhitespace(System.String)">
+            <summary>
+            Turns CR, LF, or TAB into visual indicator to preserve visual marker 
+            position.   This is done by replacing the '\r' into '\\' and 'r' 
+            characters, and the '\n' into '\\' and 'n' characters, and '\t' into
+            '\\' and 't' characters.  
+            
+            Thus the single character becomes two characters for display.
+            </summary>
+            <param name="sInput"></param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.CategoryAttribute">
+            <summary>
+            Attribute used to apply a category to a test
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.CategoryAttribute.categoryName">
+            <summary>
+            The name of the category
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CategoryAttribute.#ctor(System.String)">
+            <summary>
+            Construct attribute for a given category
+            </summary>
+            <param name="name">The name of the category</param>
+        </member>
+        <member name="M:NUnit.Framework.CategoryAttribute.#ctor">
+            <summary>
+            Protected constructor uses the Type name as the name
+            of the category.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.CategoryAttribute.Name">
+            <summary>
+            The name of the category
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IncludeExcludeAttribute">
+            <summary>
+            Abstract base for Attributes that are used to include tests
+            in the test run based on environmental settings.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor">
+            <summary>
+            Constructor with no included items specified, for use
+            with named property syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor(System.String)">
+            <summary>
+            Constructor taking one or more included items
+            </summary>
+            <param name="include">Comma-delimited list of included items</param>
+        </member>
+        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Include">
+            <summary>
+            Name of the item that is needed in order for
+            a test to run. Multiple itemss may be given,
+            separated by a comma.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Exclude">
+            <summary>
+            Name of the item to be excluded. Multiple items
+            may be given, separated by a comma.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Reason">
+            <summary>
+            The reason for including or excluding the test
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.PlatformAttribute">
+            <summary>
+            PlatformAttribute is used to mark a test fixture or an
+            individual method as applying to a particular platform only.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PlatformAttribute.#ctor">
+            <summary>
+            Constructor with no platforms specified, for use
+            with named property syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PlatformAttribute.#ctor(System.String)">
+            <summary>
+            Constructor taking one or more platforms
+            </summary>
+            <param name="platforms">Comma-deliminted list of platforms</param>
+        </member>
+        <member name="T:NUnit.Framework.CultureAttribute">
+            <summary>
+            CultureAttribute is used to mark a test fixture or an
+            individual method as applying to a particular Culture only.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CultureAttribute.#ctor">
+            <summary>
+            Constructor with no cultures specified, for use
+            with named property syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CultureAttribute.#ctor(System.String)">
+            <summary>
+            Constructor taking one or more cultures
+            </summary>
+            <param name="cultures">Comma-deliminted list of cultures</param>
+        </member>
+        <member name="T:NUnit.Framework.MessageWriter">
+            <summary>
+            MessageWriter is the abstract base for classes that write
+            constraint descriptions and messages in some form. The
+            class has separate methods for writing various components
+            of a message, allowing implementations to tailor the
+            presentation as needed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.#ctor">
+            <summary>
+            Construct a MessageWriter given a culture
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteMessageLine(System.String,System.Object[])">
+            <summary>
+            Method to write single line  message with optional args, usually
+            written to precede the general failure message.
+            </summary>
+            <param name="message">The message to be written</param>
+            <param name="args">Any arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
+            <summary>
+            Method to write single line  message with optional args, usually
+            written to precede the general failure message, at a givel 
+            indentation level.
+            </summary>
+            <param name="level">The indentation level of the message</param>
+            <param name="message">The message to be written</param>
+            <param name="args">Any arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Display Expected and Actual lines for a constraint. This
+            is called by MessageWriter's default implementation of 
+            WriteMessageTo and provides the generic two-line display. 
+            </summary>
+            <param name="constraint">The constraint that failed</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.DisplayDifferences(System.Object,System.Object)">
+            <summary>
+            Display Expected and Actual lines for given values. This
+            method may be called by constraints that need more control over
+            the display of actual and expected values than is provided
+            by the default implementation.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.DisplayDifferences(System.Object,System.Object,System.Object)">
+            <summary>
+            Display Expected and Actual lines for given values, including
+            a tolerance value on the Expected line.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+            <param name="tolerance">The tolerance within which the test was made</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean)">
+            <summary>
+            Display the expected and actual string values on separate lines.
+            If the mismatch parameter is >=0, an additional line is displayed
+            line containing a caret that points to the mismatch point.
+            </summary>
+            <param name="expected">The expected string value</param>
+            <param name="actual">The actual string value</param>
+            <param name="mismatch">The point at which the strings don't match or -1</param>
+            <param name="ignoreCase">If true, case is ignored in locating the point where the strings differ</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteConnector(System.String)">
+            <summary>
+            Writes the text for a connector.
+            </summary>
+            <param name="connector">The connector.</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WritePredicate(System.String)">
+            <summary>
+            Writes the text for a predicate.
+            </summary>
+            <param name="predicate">The predicate.</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteExpectedValue(System.Object)">
+            <summary>
+            Writes the text for an expected value.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteModifier(System.String)">
+            <summary>
+            Writes the text for a modifier
+            </summary>
+            <param name="modifier">The modifier.</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteActualValue(System.Object)">
+            <summary>
+            Writes the text for an actual value.
+            </summary>
+            <param name="actual">The actual value.</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteValue(System.Object)">
+            <summary>
+            Writes the text for a generalized value.
+            </summary>
+            <param name="val">The value.</param>
+        </member>
+        <member name="M:NUnit.Framework.MessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
+            <summary>
+            Writes the text for a collection value,
+            starting at a particular point, to a max length
+            </summary>
+            <param name="collection">The collection containing elements to write.</param>
+            <param name="start">The starting point of the elements to write</param>
+            <param name="max">The maximum number of elements to write</param>
+        </member>
+        <member name="P:NUnit.Framework.MessageWriter.MaxLineLength">
+            <summary>
+            Abstract method to get the max line length
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SetCultureAttribute">
+            <summary>
+            Summary description for SetCultureAttribute.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.PropertyAttribute">
+            <summary>
+            PropertyAttribute is used to attach information to a test as a name/value pair..
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.PropertyAttribute.propertyName">
+            <summary>
+            The property name
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.PropertyAttribute.propertyValue">
+            <summary>
+            The property value
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.Object)">
+            <summary>
+            Construct a PropertyAttribute with a name and value
+            </summary>
+            <param name="propertyName">The name of the property</param>
+            <param name="propertyValue">The property value</param>
+        </member>
+        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.Object)">
+            <summary>
+            Constructor for use by inherited classes that use the
+            name of the type as the property name.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.PropertyAttribute.Name">
+            <summary>
+            Gets the property name
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.PropertyAttribute.Value">
+            <summary>
+            Gets the property value
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SetCultureAttribute.#ctor(System.String)">
+            <summary>
+            Construct given the name of a culture
+            </summary>
+            <param name="culture"></param>
+        </member>
+        <member name="T:NUnit.Framework.TextMessageWriter">
+            <summary>
+            TextMessageWriter writes constraint descriptions and messages
+            in displayable form as a text stream. It tailors the display
+            of individual message components to form the standard message
+            format of NUnit assertion failure messages.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Expected">
+            <summary>
+            Prefix used for the expected value line of a message
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Actual">
+            <summary>
+            Prefix used for the actual value line of a message
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TextMessageWriter.PrefixLength">
+            <summary>
+            Length of a message prefix
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.#ctor">
+            <summary>
+            Construct a TextMessageWriter
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.#ctor(System.String,System.Object[])">
+            <summary>
+            Construct a TextMessageWriter, specifying a user message
+            and optional formatting arguments.
+            </summary>
+            <param name="userMessage"></param>
+            <param name="args"></param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
+            <summary>
+            Method to write single line  message with optional args, usually
+            written to precede the general failure message, at a givel 
+            indentation level.
+            </summary>
+            <param name="level">The indentation level of the message</param>
+            <param name="message">The message to be written</param>
+            <param name="args">Any arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Display Expected and Actual lines for a constraint. This
+            is called by MessageWriter's default implementation of 
+            WriteMessageTo and provides the generic two-line display. 
+            </summary>
+            <param name="constraint">The constraint that failed</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object)">
+            <summary>
+            Display Expected and Actual lines for given values. This
+            method may be called by constraints that need more control over
+            the display of actual and expected values than is provided
+            by the default implementation.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object,System.Object)">
+            <summary>
+            Display Expected and Actual lines for given values, including
+            a tolerance value on the expected line.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+            <param name="tolerance">The tolerance within which the test was made</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean)">
+            <summary>
+            Display the expected and actual string values on separate lines.
+            If the mismatch parameter is >=0, an additional line is displayed
+            line containing a caret that points to the mismatch point.
+            </summary>
+            <param name="expected">The expected string value</param>
+            <param name="actual">The actual string value</param>
+            <param name="mismatch">The point at which the strings don't match or -1</param>
+            <param name="ignoreCase">If true, case is ignored in string comparisons</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteConnector(System.String)">
+            <summary>
+            Writes the text for a connector.
+            </summary>
+            <param name="connector">The connector.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WritePredicate(System.String)">
+            <summary>
+            Writes the text for a predicate.
+            </summary>
+            <param name="predicate">The predicate.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteModifier(System.String)">
+            <summary>
+            Write the text for a modifier.
+            </summary>
+            <param name="modifier">The modifier.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedValue(System.Object)">
+            <summary>
+            Writes the text for an expected value.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualValue(System.Object)">
+            <summary>
+            Writes the text for an actual value.
+            </summary>
+            <param name="actual">The actual value.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteValue(System.Object)">
+            <summary>
+            Writes the text for a generalized value.
+            </summary>
+            <param name="val">The value.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
+            <summary>
+            Writes the text for a collection value,
+            starting at a particular point, to a max length
+            </summary>
+            <param name="collection">The collection containing elements to write.</param>
+            <param name="start">The starting point of the elements to write</param>
+            <param name="max">The maximum number of elements to write</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Write the generic 'Expected' line for a constraint
+            </summary>
+            <param name="constraint">The constraint that failed</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object)">
+            <summary>
+            Write the generic 'Expected' line for a given value
+            </summary>
+            <param name="expected">The expected value</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object,System.Object)">
+            <summary>
+            Write the generic 'Expected' line for a given value
+            and tolerance.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="tolerance">The tolerance within which the test was made</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Write the generic 'Actual' line for a constraint
+            </summary>
+            <param name="constraint">The constraint for which the actual value is to be written</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(System.Object)">
+            <summary>
+            Write the generic 'Actual' line for a given value
+            </summary>
+            <param name="actual">The actual value causing a failure</param>
+        </member>
+        <member name="P:NUnit.Framework.TextMessageWriter.MaxLineLength">
+            <summary>
+            Gets the maximum line length for this writer
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.StringAssert">
+            <summary>
+            Basic Asserts on strings.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String)">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string starts with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string starts with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String)">
+            <summary>
+            Asserts that a string starts with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string ends with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string ends with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String)">
+            <summary>
+            Asserts that a string ends with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that two strings are equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String)">
+            <summary>
+            Asserts that two strings are equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String)">
+            <summary>
+            Asserts that two strings are equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string matches an expected regular expression pattern.
+            </summary>
+            <param name="expected">The expected expression</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string matches an expected regular expression pattern.
+            </summary>
+            <param name="expected">The expected expression</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String)">
+            <summary>
+            Asserts that a string matches an expected regular expression pattern.
+            </summary>
+            <param name="expected">The expected expression</param>
+            <param name="actual">The actual string</param>
+        </member>
+        <member name="T:NUnit.Framework.MsgUtils">
+            <summary>
+            Static methods used in creating messages
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.MsgUtils.GetTypeRepresentation(System.Object)">
+            <summary>
+            Returns the representation of a type as used in NUnitLite.
+            This is the same as Type.ToString() except for arrays,
+            which are displayed with their declared sizes.
+            </summary>
+            <param name="obj"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.MsgUtils.ConvertWhitespace(System.String)">
+            <summary>
+            Converts any control characters in a string 
+            to their escaped representation.
+            </summary>
+            <param name="s">The string to be converted</param>
+            <returns>The converted string</returns>
+        </member>
+        <member name="M:NUnit.Framework.MsgUtils.GetArrayIndicesAsString(System.Int32[])">
+            <summary>
+            Return the a string representation for a set of indices into an array
+            </summary>
+            <param name="indices">Array of indices for which a string is needed</param>
+        </member>
+        <member name="M:NUnit.Framework.MsgUtils.GetArrayIndicesFromCollectionIndex(System.Collections.ICollection,System.Int32)">
+            <summary>
+            Get an array of indices representing the point in a collection or
+            array corresponding to a single int index into the collection.
+            </summary>
+            <param name="collection">The collection to which the indices apply</param>
+            <param name="index">Index in the collection</param>
+            <returns>Array of indices</returns>
+        </member>
+        <member name="M:NUnit.Framework.MsgUtils.ClipString(System.String,System.Int32,System.Int32)">
+            <summary>
+            Clip a string around a particular point, returning the clipped
+            string with ellipses representing the removed parts
+            </summary>
+            <param name="s">The string to be clipped</param>
+            <param name="maxStringLength">The maximum permitted length of the result string</param>
+            <param name="mismatch">The point around which clipping is to occur</param>
+            <returns>The clipped string</returns>
+        </member>
+        <member name="M:NUnit.Framework.MsgUtils.FindMismatchPosition(System.String,System.String,System.Int32,System.Boolean)">
+            <summary>
+            Shows the position two strings start to differ.  Comparison 
+            starts at the start index.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="istart">The index in the strings at which comparison should start</param>
+            <param name="ignoreCase">Boolean indicating whether case should be ignored</param>
+            <returns>-1 if no mismatch found, or the index where mismatch found</returns>
+        </member>
+        <member name="T:NUnit.Framework.AssertionHelper">
+            <summary>
+            AssertionHelper is an optional base class for user tests,
+            allowing the use of shorter names for constraints and
+            asserts and avoiding conflict with the definition of 
+            <see cref="T:NUnit.Framework.SyntaxHelpers.Is"/>, from which it inherits much of its
+            behavior, in certain mock object frameworks.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure. Works
+            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint)"/>
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.Constraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure. Works
+            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String)"/>
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.Constraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure. Works
+            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.Constraint,System.String,System.Object[])"/>
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
+            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
+            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String)"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to <see cref="M:NUnit.Framework.Assert.That(System.Boolean)"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Map(System.Collections.ICollection)">
+            <summary>
+            Returns a ListMapper based on a collection.
+            </summary>
+            <param name="original">The original collection</param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.FileAssert">
+            <summary>
+            Summary description for FileAssert.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.#ctor">
+            <summary>
+            We don't actually want any instances of this object, but some people
+            like to inherit from it to add other static methods. Hence, the
+            protected constructor disallows any instances of this object. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
+            <summary>
+            Verifies that two Streams are equal.  Two Streams are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String)">
+            <summary>
+            Verifies that two Streams are equal.  Two Streams are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream)">
+            <summary>
+            Verifies that two Streams are equal.  Two Streams are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
+            <summary>
+            Asserts that two Streams are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to be displayed when the two Stream are the same.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String)">
+            <summary>
+            Asserts that two Streams are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to be displayed when the Streams are the same.</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream)">
+            <summary>
+            Asserts that two Streams are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+        </member>
+        <member name="T:NUnit.Framework.IgnoreException">
+            <summary>
+            Thrown when an assertion failed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String)">
+            <param name="message"></param>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String,System.Exception)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+            <param name="inner">The exception that caused the 
+            current exception</param>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Serialization Constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestCase">
+            <summary>
+            Obsolete class, formerly used to identify tests through
+            inheritance. Avoid using this class for new tests.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestCase.SetUp">
+            <summary>
+            Method called immediately before running the test.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestCase.TearDown">
+            <summary>
+            Method Called immediately after running the test. It is
+            guaranteed to be called, even if an exception is thrown. 
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SetUpAttribute">
+            <summary>
+            Attribute used to mark a class that contains one-time SetUp 
+            and/or TearDown methods that apply to all the tests in a
+            namespace or an assembly.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SetUpFixtureAttribute">
+            <summary>
+            SetUpFixtureAttribute is used to identify a SetUpFixture
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SuiteAttribute">
+            <summary>
+            Attribute used to mark a static (shared in VB) property
+            that returns a list of tests.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TearDownAttribute">
+            <summary>
+            Attribute used to identify a method that is called 
+            immediately after each test is run. The method is 
+            guaranteed to be called, even if an exception is thrown.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestAttribute">
+            <summary>
+            Adding this attribute to a method within a <seealso cref="T:NUnit.Framework.TestFixtureAttribute"/> 
+            class makes the method callable from the NUnit test runner. There is a property 
+            called Description which is optional which you can provide a more detailed test
+            description. This class cannot be inherited.
+            </summary>
+            
+            <example>
+            [TestFixture]
+            public class Fixture
+            {
+              [Test]
+              public void MethodToTest()
+              {}
+              
+              [Test(Description = "more detailed description")]
+              publc void TestDescriptionMethod()
+              {}
+            }
+            </example>
+            
+        </member>
+        <member name="P:NUnit.Framework.TestAttribute.Description">
+            <summary>
+            Descriptive text for this test
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestFixtureAttribute">
+            <example>
+            [TestFixture]
+            public class ExampleClass 
+            {}
+            </example>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.Description">
+            <summary>
+            Descriptive text for this fixture
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestFixtureSetUpAttribute">
+            <summary>
+            Attribute used to identify a method that is 
+            called before any tests in a fixture are run.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestFixtureTearDownAttribute">
+            <summary>
+            Attribute used to identify a method that is called after
+            all the tests in a fixture have run. The method is 
+            guaranteed to be called, even if an exception is thrown.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IgnoreAttribute">
+            <summary>
+            Attribute used to mark a test that is to be ignored.
+            Ignored tests result in a warning message when the
+            tests are run.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor">
+            <summary>
+            Constructs the attribute without giving a reason 
+            for ignoring the test.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor(System.String)">
+            <summary>
+            Constructs the attribute giving a reason for ignoring the test
+            </summary>
+            <param name="reason">The reason for ignoring the test</param>
+        </member>
+        <member name="P:NUnit.Framework.IgnoreAttribute.Reason">
+            <summary>
+            The reason for ignoring a test
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.ExplicitAttribute">
+            <summary>
+            ExplicitAttribute marks a test or test fixture so that it will
+            only be run if explicitly executed from the gui or command line
+            or if it is included by use of a filter. The test will not be
+            run simply because an enclosing suite is run.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor">
+            <summary>
+            Default constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor(System.String)">
+            <summary>
+            Constructor with a reason
+            </summary>
+            <param name="reason">The reason test is marked explicit</param>
+        </member>
+        <member name="P:NUnit.Framework.ExplicitAttribute.Reason">
+            <summary>
+            The reason test is marked explicit
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.DescriptionAttribute">
+            <summary>
+            Attribute used to provide descriptive text about a 
+            test case or fixture.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.DescriptionAttribute.#ctor(System.String)">
+            <summary>
+            Construct the attribute
+            </summary>
+            <param name="description">Text describing the test</param>
+        </member>
+        <member name="P:NUnit.Framework.DescriptionAttribute.Description">
+            <summary>
+            Gets the test description
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IExpectException">
+            <summary>
+            Interface implemented by a user fixture in order to
+            validate any expected exceptions. It is only called
+            for test methods marked with the ExpectedException
+            attribute.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IExpectException.HandleException(System.Exception)">
+            <summary>
+            Method to handle an expected exception
+            </summary>
+            <param name="ex">The exception to be handled</param>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Metro.sln
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Metro.sln
@@ -1,64 +1,64 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 11
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Metro", "Newtonsoft.Json\Newtonsoft.Json.Metro.csproj", "{263136A2-B89B-424E-A87A-F988CAA8D032}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Metro", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Metro.csproj", "{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|ARM = Debug|ARM
-		Debug|Any CPU = Debug|Any CPU
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		Release|ARM = Release|ARM
-		Release|Any CPU = Release|Any CPU
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|ARM.ActiveCfg = Debug|ARM
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|ARM.Build.0 = Debug|ARM
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x64.ActiveCfg = Debug|x64
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x64.Build.0 = Debug|x64
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x86.ActiveCfg = Debug|x86
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x86.Build.0 = Debug|x86
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|ARM.ActiveCfg = Release|ARM
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|ARM.Build.0 = Release|ARM
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|Any CPU.Build.0 = Release|Any CPU
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x64.ActiveCfg = Release|x64
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x64.Build.0 = Release|x64
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x86.ActiveCfg = Release|x86
-		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x86.Build.0 = Release|x86
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|ARM.ActiveCfg = Debug|ARM
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|ARM.Build.0 = Debug|ARM
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|ARM.Deploy.0 = Debug|ARM
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x64.ActiveCfg = Debug|x64
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x64.Build.0 = Debug|x64
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x64.Deploy.0 = Debug|x64
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x86.ActiveCfg = Debug|x86
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x86.Build.0 = Debug|x86
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x86.Deploy.0 = Debug|x86
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|ARM.ActiveCfg = Release|ARM
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|ARM.Build.0 = Release|ARM
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|ARM.Deploy.0 = Release|ARM
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|Any CPU.Deploy.0 = Release|Any CPU
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x64.ActiveCfg = Release|x64
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x64.Build.0 = Release|x64
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x64.Deploy.0 = Release|x64
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x86.ActiveCfg = Release|x86
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x86.Build.0 = Release|x86
-		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x86.Deploy.0 = Release|x86
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 11
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Metro", "Newtonsoft.Json\Newtonsoft.Json.Metro.csproj", "{263136A2-B89B-424E-A87A-F988CAA8D032}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Metro", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Metro.csproj", "{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|ARM = Debug|ARM
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|ARM = Release|ARM
+		Release|Any CPU = Release|Any CPU
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|ARM.ActiveCfg = Debug|ARM
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|ARM.Build.0 = Debug|ARM
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x64.ActiveCfg = Debug|x64
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x64.Build.0 = Debug|x64
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x86.ActiveCfg = Debug|x86
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Debug|x86.Build.0 = Debug|x86
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|ARM.ActiveCfg = Release|ARM
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|ARM.Build.0 = Release|ARM
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|Any CPU.Build.0 = Release|Any CPU
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x64.ActiveCfg = Release|x64
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x64.Build.0 = Release|x64
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x86.ActiveCfg = Release|x86
+		{263136A2-B89B-424E-A87A-F988CAA8D032}.Release|x86.Build.0 = Release|x86
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|ARM.ActiveCfg = Debug|ARM
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|ARM.Build.0 = Debug|ARM
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|ARM.Deploy.0 = Debug|ARM
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x64.ActiveCfg = Debug|x64
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x64.Build.0 = Debug|x64
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x64.Deploy.0 = Debug|x64
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x86.ActiveCfg = Debug|x86
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x86.Build.0 = Debug|x86
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Debug|x86.Deploy.0 = Debug|x86
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|ARM.ActiveCfg = Release|ARM
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|ARM.Build.0 = Release|ARM
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|ARM.Deploy.0 = Release|ARM
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|Any CPU.Deploy.0 = Release|Any CPU
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x64.ActiveCfg = Release|x64
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x64.Build.0 = Release|x64
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x64.Deploy.0 = Release|x64
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x86.ActiveCfg = Release|x86
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x86.Build.0 = Release|x86
+		{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}.Release|x86.Deploy.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Net20.sln
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Net20.sln
@@ -1,32 +1,32 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{620042D9-2753-48F5-BEDE-3905248781D2}"
-	ProjectSection(SolutionItems) = preProject
-		Lib\NUnit\DotNet\nunit.framework.dll = Lib\NUnit\DotNet\nunit.framework.dll
-		Lib\NUnit\DotNet\nunit.framework.xml = Lib\NUnit\DotNet\nunit.framework.xml
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Net20", "Newtonsoft.Json\Newtonsoft.Json.Net20.csproj", "{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Net20", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Net20.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{620042D9-2753-48F5-BEDE-3905248781D2}"
+	ProjectSection(SolutionItems) = preProject
+		Lib\NUnit\DotNet\nunit.framework.dll = Lib\NUnit\DotNet\nunit.framework.dll
+		Lib\NUnit\DotNet\nunit.framework.xml = Lib\NUnit\DotNet\nunit.framework.xml
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Net20", "Newtonsoft.Json\Newtonsoft.Json.Net20.csproj", "{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Net20", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Net20.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Net35.sln
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Net35.sln
@@ -1,26 +1,26 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Net35", "Newtonsoft.Json\Newtonsoft.Json.Net35.csproj", "{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Net35", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Net35.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Net35", "Newtonsoft.Json\Newtonsoft.Json.Net35.csproj", "{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Net35", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Net35.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Silverlight.sln
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Silverlight.sln
@@ -1,31 +1,31 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{F69285DD-24FB-4A60-AE8B-4C2744285D0F}"
-	ProjectSection(SolutionItems) = preProject
-		Lib\NUnit\Silverlight\nunit.framework.dll = Lib\NUnit\Silverlight\nunit.framework.dll
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Silverlight", "Newtonsoft.Json\Newtonsoft.Json.Silverlight.csproj", "{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Silverlight", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Silverlight.csproj", "{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{F69285DD-24FB-4A60-AE8B-4C2744285D0F}"
+	ProjectSection(SolutionItems) = preProject
+		Lib\NUnit\Silverlight\nunit.framework.dll = Lib\NUnit\Silverlight\nunit.framework.dll
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Silverlight", "Newtonsoft.Json\Newtonsoft.Json.Silverlight.csproj", "{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Silverlight", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Silverlight.csproj", "{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
@@ -1,1316 +1,1316 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Globalization;
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Bson;
-using System.IO;
-using Newtonsoft.Json.Tests.Serialization;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.Bson
-{
-  [TestFixture]
-  public class BsonReaderTests : TestFixtureBase
-  {
-    private const char Euro = '\u20ac';
-
-    [Test]
-    public void CloseInput()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(ms.CanRead);
-      reader.Close();
-      Assert.IsFalse(ms.CanRead);
-
-      ms = new MemoryStream();
-      reader = new BsonReader(ms) { CloseInput = false };
-
-      Assert.IsTrue(ms.CanRead);
-      reader.Close();
-      Assert.IsTrue(ms.CanRead);
-    }
-
-    [Test]
-    public void ReadSingleObject()
-    {
-      byte[] data = MiscellaneousUtils.HexToBytes("0F-00-00-00-10-42-6C-61-68-00-01-00-00-00-00");
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("Blah", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(1L, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void WriteValues()
-    {
-      byte[] data = MiscellaneousUtils.HexToBytes("8C-00-00-00-12-30-00-FF-FF-FF-FF-FF-FF-FF-7F-12-31-00-FF-FF-FF-FF-FF-FF-FF-7F-10-32-00-FF-FF-FF-7F-10-33-00-FF-FF-FF-7F-10-34-00-FF-00-00-00-10-35-00-7F-00-00-00-02-36-00-02-00-00-00-61-00-01-37-00-00-00-00-00-00-00-F0-45-01-38-00-FF-FF-FF-FF-FF-FF-EF-7F-01-39-00-00-00-00-E0-FF-FF-EF-47-08-31-30-00-01-05-31-31-00-05-00-00-00-02-00-01-02-03-04-09-31-32-00-40-C5-E2-BA-E3-00-00-00-09-31-33-00-40-C5-E2-BA-E3-00-00-00-00");
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-      reader.JsonNet35BinaryCompatibility = true;
-      reader.ReadRootValueAsArray = true;
-      reader.DateTimeKindHandling = DateTimeKind.Utc;
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(long.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(long.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual((long)int.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual((long)int.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual((long)byte.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual((long)sbyte.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("a", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual((double)decimal.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(double), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual((double)double.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(double), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual((double)float.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(double), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
-      Assert.AreEqual(true, reader.Value);
-      Assert.AreEqual(typeof(bool), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      CollectionAssert.AreEquivalent(new byte[] { 0, 1, 2, 3, 4 }, (byte[])reader.Value);
-      Assert.AreEqual(typeof(byte[]), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(new DateTime(2000, 12, 29, 12, 30, 0, DateTimeKind.Utc), reader.Value);
-      Assert.AreEqual(typeof(DateTime), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(new DateTime(2000, 12, 29, 12, 30, 0, DateTimeKind.Utc), reader.Value);
-      Assert.AreEqual(typeof(DateTime), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-
-    [Test]
-    public void ReadObjectBsonFromSite()
-    {
-      byte[] data = MiscellaneousUtils.HexToBytes("20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00");
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("0", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("a", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("1", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("b", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("2", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("c", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadArrayBsonFromSite()
-    {
-      byte[] data = MiscellaneousUtils.HexToBytes("20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00");
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.AreEqual(false, reader.ReadRootValueAsArray);
-      Assert.AreEqual(DateTimeKind.Local, reader.DateTimeKindHandling);
-
-      reader.ReadRootValueAsArray = true;
-      reader.DateTimeKindHandling = DateTimeKind.Utc;
-
-      Assert.AreEqual(true, reader.ReadRootValueAsArray);
-      Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("a", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("b", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("c", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsInt32BadString()
-    {
-      ExceptionAssert.Throws<JsonReaderException>("Could not convert string to integer: a.",
-      () =>
-      {
-        byte[] data = MiscellaneousUtils.HexToBytes("20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00");
-
-        MemoryStream ms = new MemoryStream(data);
-        BsonReader reader = new BsonReader(ms);
-
-        Assert.AreEqual(false, reader.ReadRootValueAsArray);
-        Assert.AreEqual(DateTimeKind.Local, reader.DateTimeKindHandling);
-
-        reader.ReadRootValueAsArray = true;
-        reader.DateTimeKindHandling = DateTimeKind.Utc;
-
-        Assert.AreEqual(true, reader.ReadRootValueAsArray);
-        Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling);
-
-        Assert.IsTrue(reader.Read());
-        Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-        reader.ReadAsInt32();
-      });
-    }
-
-    [Test]
-    public void ReadBytes()
-    {
-      byte[] data = MiscellaneousUtils.HexToBytes("2B-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-05-32-00-0C-00-00-00-02-48-65-6C-6C-6F-20-77-6F-72-6C-64-21-00");
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms, true, DateTimeKind.Utc);
-      reader.JsonNet35BinaryCompatibility = true;
-
-      Assert.AreEqual(true, reader.ReadRootValueAsArray);
-      Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("a", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("b", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      byte[] encodedStringData = reader.ReadAsBytes();
-      Assert.IsNotNull(encodedStringData);
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      Assert.AreEqual(encodedStringData, reader.Value);
-      Assert.AreEqual(typeof(byte[]), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-
-      string decodedString = Encoding.UTF8.GetString(encodedStringData, 0, encodedStringData.Length);
-      Assert.AreEqual("Hello world!", decodedString);
-    }
-
-    [Test]
-    public void ReadOid()
-    {
-      byte[] data = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("_id", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      CollectionAssert.AreEquivalent(MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001"), (byte[])reader.Value);
-      Assert.AreEqual(typeof(byte[]), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("test", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("1234£56", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadNestedArray()
-    {
-      string hexdoc = "82-00-00-00-07-5F-69-64-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("_id", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      CollectionAssert.AreEquivalent(MiscellaneousUtils.HexToBytes("4A-78-93-79-17-22-00-00-00-00-61-CF"), (byte[])reader.Value);
-      Assert.AreEqual(typeof(byte[]), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("a", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      for (int i = 1; i <= 8; i++)
-      {
-        Assert.IsTrue(reader.Read());
-        Assert.AreEqual(JsonToken.Float, reader.TokenType);
-
-        double value = (i != 5)
-                         ? Convert.ToDouble(i)
-                         : 5.78960446186581E+77d;
-
-        Assert.AreEqual(value, reader.Value);
-      }
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("b", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("test", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadNestedArrayIntoLinq()
-    {
-      string hexdoc = "87-00-00-00-05-5F-69-64-00-0C-00-00-00-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      BsonReader reader = new BsonReader(new MemoryStream(data));
-      reader.JsonNet35BinaryCompatibility = true;
-
-      JObject o = (JObject)JToken.ReadFrom(reader);
-      Assert.AreEqual(3, o.Count);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      o.WriteTo(writer);
-      writer.Flush();
-
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-      Assert.AreEqual(hexdoc, bson);
-    }
-
-    [Test]
-    public void OidAndBytesAreEqual()
-    {
-      byte[] data1 = MiscellaneousUtils.HexToBytes(
-        "82-00-00-00-07-5F-69-64-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00");
-
-      BsonReader reader1 = new BsonReader(new MemoryStream(data1));
-      reader1.JsonNet35BinaryCompatibility = true;
-
-      // oid
-      JObject o1 = (JObject)JToken.ReadFrom(reader1);
-
-      byte[] data2 = MiscellaneousUtils.HexToBytes(
-        "87-00-00-00-05-5F-69-64-00-0C-00-00-00-02-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00");
-
-      BsonReader reader2 = new BsonReader(new MemoryStream(data2));
-      reader2.JsonNet35BinaryCompatibility = true;
-
-      // bytes
-      JObject o2 = (JObject)JToken.ReadFrom(reader2);
-
-      Assert.IsTrue(o1.DeepEquals(o2));
-    }
-
-    [Test]
-    public void ReadRegex()
-    {
-      string hexdoc = "15-00-00-00-0B-72-65-67-65-78-00-74-65-73-74-00-67-69-6D-00-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("regex", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(@"/test/gim", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadCode()
-    {
-      string hexdoc = "1A-00-00-00-0D-63-6F-64-65-00-0B-00-00-00-49-20-61-6D-20-63-6F-64-65-21-00-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("code", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(@"I am code!", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadUndefined()
-    {
-      string hexdoc = "10-00-00-00-06-75-6E-64-65-66-69-6E-65-64-00-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("undefined", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
-      Assert.AreEqual(null, reader.Value);
-      Assert.AreEqual(null, reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadLong()
-    {
-      string hexdoc = "13-00-00-00-12-6C-6F-6E-67-00-FF-FF-FF-FF-FF-FF-FF-7F-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("long", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(long.MaxValue, reader.Value);
-      Assert.AreEqual(typeof(long), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadReference()
-    {
-      string hexdoc = "1E-00-00-00-0C-6F-69-64-00-04-00-00-00-6F-69-64-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("oid", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("$ref", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("oid", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("$id", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      CollectionAssert.AreEquivalent(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, (byte[])reader.Value);
-      Assert.AreEqual(typeof(byte[]), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadCodeWScope()
-    {
-      string hexdoc = "75-00-00-00-0F-63-6F-64-65-57-69-74-68-53-63-6F-70-65-00-61-00-00-00-35-00-00-00-66-6F-72-20-28-69-6E-74-20-69-20-3D-20-30-3B-20-69-20-3C-20-31-30-30-30-3B-20-69-2B-2B-29-0D-0A-7B-0D-0A-20-20-61-6C-65-72-74-28-61-72-67-31-29-3B-0D-0A-7D-00-24-00-00-00-02-61-72-67-31-00-15-00-00-00-4A-73-6F-6E-2E-4E-45-54-20-69-73-20-61-77-65-73-6F-6D-65-2E-00-00-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("codeWithScope", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("$code", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(@"for (int i = 0; i < 1000; i++)
-{
-  alert(arg1);
-}", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("$scope", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("arg1", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("Json.NET is awesome.", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadEndOfStream()
-    {
-      BsonReader reader = new BsonReader(new MemoryStream());
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ReadLargeStrings()
-    {
-      string bson =
-        "4E-02-00-00-02-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-22-01-00-00-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-00";
-
-      BsonReader reader = new BsonReader(new MemoryStream(MiscellaneousUtils.HexToBytes(bson)));
-
-      StringBuilder largeStringBuilder = new StringBuilder();
-      for (int i = 0; i < 100; i++)
-      {
-        if (i > 0)
-          largeStringBuilder.Append("-");
-
-        largeStringBuilder.Append(i.ToString(CultureInfo.InvariantCulture));
-      }
-      string largeString = largeStringBuilder.ToString();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual(largeString, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(largeString, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadEmptyStrings()
-    {
-      string bson = "0C-00-00-00-02-00-01-00-00-00-00-00";
-
-      BsonReader reader = new BsonReader(new MemoryStream(MiscellaneousUtils.HexToBytes(bson)));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void WriteAndReadEmptyListsAndDictionaries()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("Arguments");
-      writer.WriteStartObject();
-      writer.WriteEndObject();
-      writer.WritePropertyName("List");
-      writer.WriteStartArray();
-      writer.WriteEndArray();
-      writer.WriteEndObject();
-
-      string bson = BitConverter.ToString(ms.ToArray());
-
-      Assert.AreEqual("20-00-00-00-03-41-72-67-75-6D-65-6E-74-73-00-05-00-00-00-00-04-4C-69-73-74-00-05-00-00-00-00-00", bson);
-
-      BsonReader reader = new BsonReader(new MemoryStream(MiscellaneousUtils.HexToBytes(bson)));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("Arguments", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("List", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void DateTimeKindHandling()
-    {
-      DateTime value = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("DateTime");
-      writer.WriteValue(value);
-      writer.WriteEndObject();
-
-      byte[] bson = ms.ToArray();
-
-      JObject o;
-      BsonReader reader;
-      
-      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Utc);
-      o = (JObject)JToken.ReadFrom(reader);
-      Assert.AreEqual(value, (DateTime)o["DateTime"]);
-
-      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Local);
-      o = (JObject)JToken.ReadFrom(reader);
-      Assert.AreEqual(value.ToLocalTime(), (DateTime)o["DateTime"]);
-
-      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Unspecified);
-      o = (JObject)JToken.ReadFrom(reader);
-      Assert.AreEqual(DateTime.SpecifyKind(value, DateTimeKind.Unspecified), (DateTime)o["DateTime"]);
-    }
-
-    [Test]
-    public void UnspecifiedDateTimeKindHandling()
-    {
-      DateTime value = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Unspecified);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      writer.DateTimeKindHandling = DateTimeKind.Unspecified;
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("DateTime");
-      writer.WriteValue(value);
-      writer.WriteEndObject();
-
-      byte[] bson = ms.ToArray();
-
-      JObject o;
-      BsonReader reader;
-
-      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Unspecified);
-      o = (JObject)JToken.ReadFrom(reader);
-      Assert.AreEqual(value, (DateTime)o["DateTime"]);
-    }
-
-    [Test]
-    public void LocalDateTimeKindHandling()
-    {
-      DateTime value = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Local);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("DateTime");
-      writer.WriteValue(value);
-      writer.WriteEndObject();
-
-      byte[] bson = ms.ToArray();
-
-      JObject o;
-      BsonReader reader;
-
-      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Local);
-      o = (JObject)JToken.ReadFrom(reader);
-      Assert.AreEqual(value, (DateTime)o["DateTime"]);
-    }
-
-    private string WriteAndReadStringValue(string val)
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter bs = new BsonWriter(ms);
-      bs.WriteStartObject();
-      bs.WritePropertyName("StringValue");
-      bs.WriteValue(val);
-      bs.WriteEnd();
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      BsonReader reader = new BsonReader(ms);
-      // object
-      reader.Read();
-      // property name
-      reader.Read();
-      // string
-      reader.Read();
-      return (string)reader.Value;
-    }
-
-    private string WriteAndReadStringPropertyName(string val)
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter bs = new BsonWriter(ms);
-      bs.WriteStartObject();
-      bs.WritePropertyName(val);
-      bs.WriteValue("Dummy");
-      bs.WriteEnd();
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      BsonReader reader = new BsonReader(ms);
-      // object
-      reader.Read();
-      // property name
-      reader.Read();
-      return (string)reader.Value;
-    }
-
-    [Test]
-    public void TestReadLenStringValueShortTripleByte()
-    {
-      StringBuilder sb = new StringBuilder();
-      //sb.Append('1',127); //first char of euro at the end of the boundry.
-      //sb.Append(euro, 5);
-      //sb.Append('1',128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
-    }
-
-    [Test]
-    public void TestReadLenStringValueTripleByteCharBufferBoundry0()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('1', 127); //first char of euro at the end of the boundry.
-      sb.Append(Euro, 5);
-      sb.Append('1', 128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
-    }
-
-    [Test]
-    public void TestReadLenStringValueTripleByteCharBufferBoundry1()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('1', 126);
-      sb.Append(Euro, 5); //middle char of euro at the end of the boundry.
-      sb.Append('1', 128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      string result = WriteAndReadStringValue(expected);
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void TestReadLenStringValueTripleByteCharOne()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append(Euro, 1); //Just one triple byte char in the string.
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
-    }
-
-    [Test]
-    public void TestReadLenStringValueTripleByteCharBufferBoundry2()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('1', 125);
-      sb.Append(Euro, 5); //last char of the eruo at the end of the boundry.
-      sb.Append('1', 128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
-    }
-
-    [Test]
-    public void TestReadStringValue()
-    {
-      string expected = "test";
-      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
-    }
-
-    [Test]
-    public void TestReadStringValueLong()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('t', 150);
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
-    }
-
-    [Test]
-    public void TestReadStringPropertyNameShortTripleByte()
-    {
-      StringBuilder sb = new StringBuilder();
-      //sb.Append('1',127); //first char of euro at the end of the boundry.
-      //sb.Append(euro, 5);
-      //sb.Append('1',128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
-    }
-
-    [Test]
-    public void TestReadStringPropertyNameTripleByteCharBufferBoundry0()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('1', 127); //first char of euro at the end of the boundry.
-      sb.Append(Euro, 5);
-      sb.Append('1', 128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      string result = WriteAndReadStringPropertyName(expected);
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void TestReadStringPropertyNameTripleByteCharBufferBoundry1()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('1', 126);
-      sb.Append(Euro, 5); //middle char of euro at the end of the boundry.
-      sb.Append('1', 128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
-    }
-
-    [Test]
-    public void TestReadStringPropertyNameTripleByteCharOne()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append(Euro, 1); //Just one triple byte char in the string.
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
-    }
-
-    [Test]
-    public void TestReadStringPropertyNameTripleByteCharBufferBoundry2()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('1', 125);
-      sb.Append(Euro, 5); //last char of the eruo at the end of the boundry.
-      sb.Append('1', 128);
-      sb.Append(Euro);
-
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
-    }
-
-    [Test]
-    public void TestReadStringPropertyName()
-    {
-      string expected = "test";
-      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
-    }
-
-    [Test]
-    public void TestReadStringPropertyNameLong()
-    {
-      StringBuilder sb = new StringBuilder();
-      sb.Append('t', 150);
-      string expected = sb.ToString();
-      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
-    }
-
-    [Test]
-    public void ReadRegexWithOptions()
-    {
-      string hexdoc = "1A-00-00-00-0B-72-65-67-65-78-00-61-62-63-00-69-00-0B-74-65-73-74-00-00-00-00";
-
-      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
-
-      MemoryStream ms = new MemoryStream(data);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("/abc/i", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("//", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void CanRoundTripStackOverflowData()
-    {
-      var doc =
-          @"{
-""AboutMe"": ""<p>I'm the Director for Research and Development for <a href=\""http://www.prophoenix.com\"" rel=\""nofollow\"">ProPhoenix</a>, a public safety software company.  This position allows me to investigate new and existing technologies and incorporate them into our product line, with the end goal being to help public safety agencies to do their jobs more effeciently and safely.</p>\r\n\r\n<p>I'm an advocate for PowerShell, as I believe it encourages administrative best practices and allows developers to provide additional access to their applications, without needing to explicity write code for each administrative feature.  Part of my advocacy for PowerShell includes <a href=\""http://blog.usepowershell.com\"" rel=\""nofollow\"">my blog</a>, appearances on various podcasts, and acting as a Community Director for <a href=\""http://powershellcommunity.org\"" rel=\""nofollow\"">PowerShellCommunity.Org</a></p>\r\n\r\n<p>I’m also a co-host of Mind of Root (a weekly audio podcast about systems administration, tech news, and topics).</p>\r\n"",
-""WebsiteUrl"": ""http://blog.usepowershell.com""
-}";
-      JObject parsed = JObject.Parse(doc);
-      var memoryStream = new MemoryStream();
-      var bsonWriter = new BsonWriter(memoryStream);
-      parsed.WriteTo(bsonWriter);
-      bsonWriter.Flush();
-      memoryStream.Position = 0;
-
-      BsonReader reader = new BsonReader(memoryStream);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("AboutMe", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(@"<p>I'm the Director for Research and Development for <a href=""http://www.prophoenix.com"" rel=""nofollow"">ProPhoenix</a>, a public safety software company.  This position allows me to investigate new and existing technologies and incorporate them into our product line, with the end goal being to help public safety agencies to do their jobs more effeciently and safely.</p>
-
-<p>I'm an advocate for PowerShell, as I believe it encourages administrative best practices and allows developers to provide additional access to their applications, without needing to explicity write code for each administrative feature.  Part of my advocacy for PowerShell includes <a href=""http://blog.usepowershell.com"" rel=""nofollow"">my blog</a>, appearances on various podcasts, and acting as a Community Director for <a href=""http://powershellcommunity.org"" rel=""nofollow"">PowerShellCommunity.Org</a></p>
-
-<p>I’m also a co-host of Mind of Root (a weekly audio podcast about systems administration, tech news, and topics).</p>
-", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("WebsiteUrl", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("http://blog.usepowershell.com", reader.Value);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void MultibyteCharacterPropertyNamesAndStrings()
-    {
-      string json = @"{
-  ""ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ"": ""ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ""
-}";
-      JObject parsed = JObject.Parse(json);
-      var memoryStream = new MemoryStream();
-      var bsonWriter = new BsonWriter(memoryStream);
-      parsed.WriteTo(bsonWriter);
-      bsonWriter.Flush();
-      memoryStream.Position = 0;
-
-      BsonReader reader = new BsonReader(memoryStream);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    public void UriGuidTimeSpanTestClassEmptyTest()
-    {
-      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass();
-
-      var memoryStream = new MemoryStream();
-      var bsonWriter = new BsonWriter(memoryStream);
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Serialize(bsonWriter, c1);
-      bsonWriter.Flush();
-      memoryStream.Position = 0;
-
-      var bsonReader = new BsonReader(memoryStream);
-
-      UriGuidTimeSpanTestClass c2 = serializer.Deserialize<UriGuidTimeSpanTestClass>(bsonReader);
-      Assert.AreEqual(c1.Guid, c2.Guid);
-      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
-      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
-      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
-      Assert.AreEqual(c1.Uri, c2.Uri);
-    }
-
-    public void UriGuidTimeSpanTestClassValuesTest()
-    {
-      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass
-      {
-        Guid = new Guid("1924129C-F7E0-40F3-9607-9939C531395A"),
-        NullableGuid = new Guid("9E9F3ADF-E017-4F72-91E0-617EBE85967D"),
-        TimeSpan = TimeSpan.FromDays(1),
-        NullableTimeSpan = TimeSpan.FromHours(1),
-        Uri = new Uri("http://testuri.com")
-      };
-
-      var memoryStream = new MemoryStream();
-      var bsonWriter = new BsonWriter(memoryStream);
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Serialize(bsonWriter, c1);
-      bsonWriter.Flush();
-      memoryStream.Position = 0;
-
-      var bsonReader = new BsonReader(memoryStream);
-
-      UriGuidTimeSpanTestClass c2 = serializer.Deserialize<UriGuidTimeSpanTestClass>(bsonReader);
-      Assert.AreEqual(c1.Guid, c2.Guid);
-      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
-      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
-      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
-      Assert.AreEqual(c1.Uri, c2.Uri);
-    }
-
-    [Test]
-    public void DeserializeByteArrayWithTypeNameHandling()
-    {
-      TestObject test = new TestObject("Test", new byte[] { 72, 63, 62, 71, 92, 55 });
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.TypeNameHandling = TypeNameHandling.All;
-
-      byte[] objectBytes;
-      using (MemoryStream bsonStream = new MemoryStream())
-      using (JsonWriter bsonWriter = new BsonWriter(bsonStream))
-      {
-        serializer.Serialize(bsonWriter, test);
-        bsonWriter.Flush();
-
-        objectBytes = bsonStream.ToArray();
-      }
-
-      using (MemoryStream bsonStream = new MemoryStream(objectBytes))
-      using (JsonReader bsonReader = new BsonReader(bsonStream))
-      {
-        // Get exception here
-        TestObject newObject = (TestObject)serializer.Deserialize(bsonReader);
-
-        Assert.AreEqual("Test", newObject.Name);
-        CollectionAssert.AreEquivalent(new byte[] { 72, 63, 62, 71, 92, 55 }, newObject.Data);
-      }
-    }
-
-#if !(WINDOWS_PHONE || SILVERLIGHT || NET20 || NET35 || NETFX_CORE)
-    public void Utf8Text()
-    {
-      string badText =System.IO.File.ReadAllText(@"PoisonText.txt");
-      var j = new JObject();
-      j["test"] = badText;
-
-      var memoryStream = new MemoryStream();
-      var bsonWriter = new BsonWriter(memoryStream);
-      j.WriteTo(bsonWriter);
-      bsonWriter.Flush();
-
-      memoryStream.Position = 0;
-      JObject o = JObject.Load(new BsonReader(memoryStream));
-
-      Assert.AreEqual(badText, (string)o["test"]);
-    }
-#endif
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Globalization;
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Bson;
+using System.IO;
+using Newtonsoft.Json.Tests.Serialization;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.Bson
+{
+  [TestFixture]
+  public class BsonReaderTests : TestFixtureBase
+  {
+    private const char Euro = '\u20ac';
+
+    [Test]
+    public void CloseInput()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(ms.CanRead);
+      reader.Close();
+      Assert.IsFalse(ms.CanRead);
+
+      ms = new MemoryStream();
+      reader = new BsonReader(ms) { CloseInput = false };
+
+      Assert.IsTrue(ms.CanRead);
+      reader.Close();
+      Assert.IsTrue(ms.CanRead);
+    }
+
+    [Test]
+    public void ReadSingleObject()
+    {
+      byte[] data = MiscellaneousUtils.HexToBytes("0F-00-00-00-10-42-6C-61-68-00-01-00-00-00-00");
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("Blah", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(1L, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void WriteValues()
+    {
+      byte[] data = MiscellaneousUtils.HexToBytes("8C-00-00-00-12-30-00-FF-FF-FF-FF-FF-FF-FF-7F-12-31-00-FF-FF-FF-FF-FF-FF-FF-7F-10-32-00-FF-FF-FF-7F-10-33-00-FF-FF-FF-7F-10-34-00-FF-00-00-00-10-35-00-7F-00-00-00-02-36-00-02-00-00-00-61-00-01-37-00-00-00-00-00-00-00-F0-45-01-38-00-FF-FF-FF-FF-FF-FF-EF-7F-01-39-00-00-00-00-E0-FF-FF-EF-47-08-31-30-00-01-05-31-31-00-05-00-00-00-02-00-01-02-03-04-09-31-32-00-40-C5-E2-BA-E3-00-00-00-09-31-33-00-40-C5-E2-BA-E3-00-00-00-00");
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+      reader.JsonNet35BinaryCompatibility = true;
+      reader.ReadRootValueAsArray = true;
+      reader.DateTimeKindHandling = DateTimeKind.Utc;
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(long.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(long.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual((long)int.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual((long)int.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual((long)byte.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual((long)sbyte.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("a", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual((double)decimal.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(double), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual((double)double.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(double), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual((double)float.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(double), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
+      Assert.AreEqual(true, reader.Value);
+      Assert.AreEqual(typeof(bool), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      CollectionAssert.AreEquivalent(new byte[] { 0, 1, 2, 3, 4 }, (byte[])reader.Value);
+      Assert.AreEqual(typeof(byte[]), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(new DateTime(2000, 12, 29, 12, 30, 0, DateTimeKind.Utc), reader.Value);
+      Assert.AreEqual(typeof(DateTime), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(new DateTime(2000, 12, 29, 12, 30, 0, DateTimeKind.Utc), reader.Value);
+      Assert.AreEqual(typeof(DateTime), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+
+    [Test]
+    public void ReadObjectBsonFromSite()
+    {
+      byte[] data = MiscellaneousUtils.HexToBytes("20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00");
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("0", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("a", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("1", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("b", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("2", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("c", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadArrayBsonFromSite()
+    {
+      byte[] data = MiscellaneousUtils.HexToBytes("20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00");
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.AreEqual(false, reader.ReadRootValueAsArray);
+      Assert.AreEqual(DateTimeKind.Local, reader.DateTimeKindHandling);
+
+      reader.ReadRootValueAsArray = true;
+      reader.DateTimeKindHandling = DateTimeKind.Utc;
+
+      Assert.AreEqual(true, reader.ReadRootValueAsArray);
+      Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("a", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("b", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("c", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsInt32BadString()
+    {
+      ExceptionAssert.Throws<JsonReaderException>("Could not convert string to integer: a.",
+      () =>
+      {
+        byte[] data = MiscellaneousUtils.HexToBytes("20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00");
+
+        MemoryStream ms = new MemoryStream(data);
+        BsonReader reader = new BsonReader(ms);
+
+        Assert.AreEqual(false, reader.ReadRootValueAsArray);
+        Assert.AreEqual(DateTimeKind.Local, reader.DateTimeKindHandling);
+
+        reader.ReadRootValueAsArray = true;
+        reader.DateTimeKindHandling = DateTimeKind.Utc;
+
+        Assert.AreEqual(true, reader.ReadRootValueAsArray);
+        Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling);
+
+        Assert.IsTrue(reader.Read());
+        Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+        reader.ReadAsInt32();
+      });
+    }
+
+    [Test]
+    public void ReadBytes()
+    {
+      byte[] data = MiscellaneousUtils.HexToBytes("2B-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-05-32-00-0C-00-00-00-02-48-65-6C-6C-6F-20-77-6F-72-6C-64-21-00");
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms, true, DateTimeKind.Utc);
+      reader.JsonNet35BinaryCompatibility = true;
+
+      Assert.AreEqual(true, reader.ReadRootValueAsArray);
+      Assert.AreEqual(DateTimeKind.Utc, reader.DateTimeKindHandling);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("a", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("b", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      byte[] encodedStringData = reader.ReadAsBytes();
+      Assert.IsNotNull(encodedStringData);
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      Assert.AreEqual(encodedStringData, reader.Value);
+      Assert.AreEqual(typeof(byte[]), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+
+      string decodedString = Encoding.UTF8.GetString(encodedStringData, 0, encodedStringData.Length);
+      Assert.AreEqual("Hello world!", decodedString);
+    }
+
+    [Test]
+    public void ReadOid()
+    {
+      byte[] data = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("_id", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      CollectionAssert.AreEquivalent(MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001"), (byte[])reader.Value);
+      Assert.AreEqual(typeof(byte[]), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("test", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("1234£56", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadNestedArray()
+    {
+      string hexdoc = "82-00-00-00-07-5F-69-64-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("_id", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      CollectionAssert.AreEquivalent(MiscellaneousUtils.HexToBytes("4A-78-93-79-17-22-00-00-00-00-61-CF"), (byte[])reader.Value);
+      Assert.AreEqual(typeof(byte[]), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("a", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      for (int i = 1; i <= 8; i++)
+      {
+        Assert.IsTrue(reader.Read());
+        Assert.AreEqual(JsonToken.Float, reader.TokenType);
+
+        double value = (i != 5)
+                         ? Convert.ToDouble(i)
+                         : 5.78960446186581E+77d;
+
+        Assert.AreEqual(value, reader.Value);
+      }
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("b", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("test", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadNestedArrayIntoLinq()
+    {
+      string hexdoc = "87-00-00-00-05-5F-69-64-00-0C-00-00-00-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      BsonReader reader = new BsonReader(new MemoryStream(data));
+      reader.JsonNet35BinaryCompatibility = true;
+
+      JObject o = (JObject)JToken.ReadFrom(reader);
+      Assert.AreEqual(3, o.Count);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      o.WriteTo(writer);
+      writer.Flush();
+
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+      Assert.AreEqual(hexdoc, bson);
+    }
+
+    [Test]
+    public void OidAndBytesAreEqual()
+    {
+      byte[] data1 = MiscellaneousUtils.HexToBytes(
+        "82-00-00-00-07-5F-69-64-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00");
+
+      BsonReader reader1 = new BsonReader(new MemoryStream(data1));
+      reader1.JsonNet35BinaryCompatibility = true;
+
+      // oid
+      JObject o1 = (JObject)JToken.ReadFrom(reader1);
+
+      byte[] data2 = MiscellaneousUtils.HexToBytes(
+        "87-00-00-00-05-5F-69-64-00-0C-00-00-00-02-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00");
+
+      BsonReader reader2 = new BsonReader(new MemoryStream(data2));
+      reader2.JsonNet35BinaryCompatibility = true;
+
+      // bytes
+      JObject o2 = (JObject)JToken.ReadFrom(reader2);
+
+      Assert.IsTrue(o1.DeepEquals(o2));
+    }
+
+    [Test]
+    public void ReadRegex()
+    {
+      string hexdoc = "15-00-00-00-0B-72-65-67-65-78-00-74-65-73-74-00-67-69-6D-00-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("regex", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(@"/test/gim", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadCode()
+    {
+      string hexdoc = "1A-00-00-00-0D-63-6F-64-65-00-0B-00-00-00-49-20-61-6D-20-63-6F-64-65-21-00-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("code", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(@"I am code!", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadUndefined()
+    {
+      string hexdoc = "10-00-00-00-06-75-6E-64-65-66-69-6E-65-64-00-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("undefined", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
+      Assert.AreEqual(null, reader.Value);
+      Assert.AreEqual(null, reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadLong()
+    {
+      string hexdoc = "13-00-00-00-12-6C-6F-6E-67-00-FF-FF-FF-FF-FF-FF-FF-7F-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("long", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(long.MaxValue, reader.Value);
+      Assert.AreEqual(typeof(long), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadReference()
+    {
+      string hexdoc = "1E-00-00-00-0C-6F-69-64-00-04-00-00-00-6F-69-64-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("oid", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("$ref", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("oid", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("$id", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      CollectionAssert.AreEquivalent(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, (byte[])reader.Value);
+      Assert.AreEqual(typeof(byte[]), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadCodeWScope()
+    {
+      string hexdoc = "75-00-00-00-0F-63-6F-64-65-57-69-74-68-53-63-6F-70-65-00-61-00-00-00-35-00-00-00-66-6F-72-20-28-69-6E-74-20-69-20-3D-20-30-3B-20-69-20-3C-20-31-30-30-30-3B-20-69-2B-2B-29-0D-0A-7B-0D-0A-20-20-61-6C-65-72-74-28-61-72-67-31-29-3B-0D-0A-7D-00-24-00-00-00-02-61-72-67-31-00-15-00-00-00-4A-73-6F-6E-2E-4E-45-54-20-69-73-20-61-77-65-73-6F-6D-65-2E-00-00-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("codeWithScope", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("$code", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(@"for (int i = 0; i < 1000; i++)
+{
+  alert(arg1);
+}", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("$scope", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("arg1", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("Json.NET is awesome.", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadEndOfStream()
+    {
+      BsonReader reader = new BsonReader(new MemoryStream());
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ReadLargeStrings()
+    {
+      string bson =
+        "4E-02-00-00-02-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-22-01-00-00-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-00";
+
+      BsonReader reader = new BsonReader(new MemoryStream(MiscellaneousUtils.HexToBytes(bson)));
+
+      StringBuilder largeStringBuilder = new StringBuilder();
+      for (int i = 0; i < 100; i++)
+      {
+        if (i > 0)
+          largeStringBuilder.Append("-");
+
+        largeStringBuilder.Append(i.ToString(CultureInfo.InvariantCulture));
+      }
+      string largeString = largeStringBuilder.ToString();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual(largeString, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(largeString, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadEmptyStrings()
+    {
+      string bson = "0C-00-00-00-02-00-01-00-00-00-00-00";
+
+      BsonReader reader = new BsonReader(new MemoryStream(MiscellaneousUtils.HexToBytes(bson)));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void WriteAndReadEmptyListsAndDictionaries()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("Arguments");
+      writer.WriteStartObject();
+      writer.WriteEndObject();
+      writer.WritePropertyName("List");
+      writer.WriteStartArray();
+      writer.WriteEndArray();
+      writer.WriteEndObject();
+
+      string bson = BitConverter.ToString(ms.ToArray());
+
+      Assert.AreEqual("20-00-00-00-03-41-72-67-75-6D-65-6E-74-73-00-05-00-00-00-00-04-4C-69-73-74-00-05-00-00-00-00-00", bson);
+
+      BsonReader reader = new BsonReader(new MemoryStream(MiscellaneousUtils.HexToBytes(bson)));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("Arguments", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("List", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void DateTimeKindHandling()
+    {
+      DateTime value = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("DateTime");
+      writer.WriteValue(value);
+      writer.WriteEndObject();
+
+      byte[] bson = ms.ToArray();
+
+      JObject o;
+      BsonReader reader;
+      
+      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Utc);
+      o = (JObject)JToken.ReadFrom(reader);
+      Assert.AreEqual(value, (DateTime)o["DateTime"]);
+
+      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Local);
+      o = (JObject)JToken.ReadFrom(reader);
+      Assert.AreEqual(value.ToLocalTime(), (DateTime)o["DateTime"]);
+
+      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Unspecified);
+      o = (JObject)JToken.ReadFrom(reader);
+      Assert.AreEqual(DateTime.SpecifyKind(value, DateTimeKind.Unspecified), (DateTime)o["DateTime"]);
+    }
+
+    [Test]
+    public void UnspecifiedDateTimeKindHandling()
+    {
+      DateTime value = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Unspecified);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      writer.DateTimeKindHandling = DateTimeKind.Unspecified;
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("DateTime");
+      writer.WriteValue(value);
+      writer.WriteEndObject();
+
+      byte[] bson = ms.ToArray();
+
+      JObject o;
+      BsonReader reader;
+
+      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Unspecified);
+      o = (JObject)JToken.ReadFrom(reader);
+      Assert.AreEqual(value, (DateTime)o["DateTime"]);
+    }
+
+    [Test]
+    public void LocalDateTimeKindHandling()
+    {
+      DateTime value = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Local);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("DateTime");
+      writer.WriteValue(value);
+      writer.WriteEndObject();
+
+      byte[] bson = ms.ToArray();
+
+      JObject o;
+      BsonReader reader;
+
+      reader = new BsonReader(new MemoryStream(bson), false, DateTimeKind.Local);
+      o = (JObject)JToken.ReadFrom(reader);
+      Assert.AreEqual(value, (DateTime)o["DateTime"]);
+    }
+
+    private string WriteAndReadStringValue(string val)
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter bs = new BsonWriter(ms);
+      bs.WriteStartObject();
+      bs.WritePropertyName("StringValue");
+      bs.WriteValue(val);
+      bs.WriteEnd();
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      BsonReader reader = new BsonReader(ms);
+      // object
+      reader.Read();
+      // property name
+      reader.Read();
+      // string
+      reader.Read();
+      return (string)reader.Value;
+    }
+
+    private string WriteAndReadStringPropertyName(string val)
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter bs = new BsonWriter(ms);
+      bs.WriteStartObject();
+      bs.WritePropertyName(val);
+      bs.WriteValue("Dummy");
+      bs.WriteEnd();
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      BsonReader reader = new BsonReader(ms);
+      // object
+      reader.Read();
+      // property name
+      reader.Read();
+      return (string)reader.Value;
+    }
+
+    [Test]
+    public void TestReadLenStringValueShortTripleByte()
+    {
+      StringBuilder sb = new StringBuilder();
+      //sb.Append('1',127); //first char of euro at the end of the boundry.
+      //sb.Append(euro, 5);
+      //sb.Append('1',128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
+    }
+
+    [Test]
+    public void TestReadLenStringValueTripleByteCharBufferBoundry0()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('1', 127); //first char of euro at the end of the boundry.
+      sb.Append(Euro, 5);
+      sb.Append('1', 128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
+    }
+
+    [Test]
+    public void TestReadLenStringValueTripleByteCharBufferBoundry1()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('1', 126);
+      sb.Append(Euro, 5); //middle char of euro at the end of the boundry.
+      sb.Append('1', 128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      string result = WriteAndReadStringValue(expected);
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void TestReadLenStringValueTripleByteCharOne()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append(Euro, 1); //Just one triple byte char in the string.
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
+    }
+
+    [Test]
+    public void TestReadLenStringValueTripleByteCharBufferBoundry2()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('1', 125);
+      sb.Append(Euro, 5); //last char of the eruo at the end of the boundry.
+      sb.Append('1', 128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
+    }
+
+    [Test]
+    public void TestReadStringValue()
+    {
+      string expected = "test";
+      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
+    }
+
+    [Test]
+    public void TestReadStringValueLong()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('t', 150);
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringValue(expected));
+    }
+
+    [Test]
+    public void TestReadStringPropertyNameShortTripleByte()
+    {
+      StringBuilder sb = new StringBuilder();
+      //sb.Append('1',127); //first char of euro at the end of the boundry.
+      //sb.Append(euro, 5);
+      //sb.Append('1',128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
+    }
+
+    [Test]
+    public void TestReadStringPropertyNameTripleByteCharBufferBoundry0()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('1', 127); //first char of euro at the end of the boundry.
+      sb.Append(Euro, 5);
+      sb.Append('1', 128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      string result = WriteAndReadStringPropertyName(expected);
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void TestReadStringPropertyNameTripleByteCharBufferBoundry1()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('1', 126);
+      sb.Append(Euro, 5); //middle char of euro at the end of the boundry.
+      sb.Append('1', 128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
+    }
+
+    [Test]
+    public void TestReadStringPropertyNameTripleByteCharOne()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append(Euro, 1); //Just one triple byte char in the string.
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
+    }
+
+    [Test]
+    public void TestReadStringPropertyNameTripleByteCharBufferBoundry2()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('1', 125);
+      sb.Append(Euro, 5); //last char of the eruo at the end of the boundry.
+      sb.Append('1', 128);
+      sb.Append(Euro);
+
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
+    }
+
+    [Test]
+    public void TestReadStringPropertyName()
+    {
+      string expected = "test";
+      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
+    }
+
+    [Test]
+    public void TestReadStringPropertyNameLong()
+    {
+      StringBuilder sb = new StringBuilder();
+      sb.Append('t', 150);
+      string expected = sb.ToString();
+      Assert.AreEqual(expected, WriteAndReadStringPropertyName(expected));
+    }
+
+    [Test]
+    public void ReadRegexWithOptions()
+    {
+      string hexdoc = "1A-00-00-00-0B-72-65-67-65-78-00-61-62-63-00-69-00-0B-74-65-73-74-00-00-00-00";
+
+      byte[] data = MiscellaneousUtils.HexToBytes(hexdoc);
+
+      MemoryStream ms = new MemoryStream(data);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("/abc/i", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("//", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void CanRoundTripStackOverflowData()
+    {
+      var doc =
+          @"{
+""AboutMe"": ""<p>I'm the Director for Research and Development for <a href=\""http://www.prophoenix.com\"" rel=\""nofollow\"">ProPhoenix</a>, a public safety software company.  This position allows me to investigate new and existing technologies and incorporate them into our product line, with the end goal being to help public safety agencies to do their jobs more effeciently and safely.</p>\r\n\r\n<p>I'm an advocate for PowerShell, as I believe it encourages administrative best practices and allows developers to provide additional access to their applications, without needing to explicity write code for each administrative feature.  Part of my advocacy for PowerShell includes <a href=\""http://blog.usepowershell.com\"" rel=\""nofollow\"">my blog</a>, appearances on various podcasts, and acting as a Community Director for <a href=\""http://powershellcommunity.org\"" rel=\""nofollow\"">PowerShellCommunity.Org</a></p>\r\n\r\n<p>I’m also a co-host of Mind of Root (a weekly audio podcast about systems administration, tech news, and topics).</p>\r\n"",
+""WebsiteUrl"": ""http://blog.usepowershell.com""
+}";
+      JObject parsed = JObject.Parse(doc);
+      var memoryStream = new MemoryStream();
+      var bsonWriter = new BsonWriter(memoryStream);
+      parsed.WriteTo(bsonWriter);
+      bsonWriter.Flush();
+      memoryStream.Position = 0;
+
+      BsonReader reader = new BsonReader(memoryStream);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("AboutMe", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(@"<p>I'm the Director for Research and Development for <a href=""http://www.prophoenix.com"" rel=""nofollow"">ProPhoenix</a>, a public safety software company.  This position allows me to investigate new and existing technologies and incorporate them into our product line, with the end goal being to help public safety agencies to do their jobs more effeciently and safely.</p>
+
+<p>I'm an advocate for PowerShell, as I believe it encourages administrative best practices and allows developers to provide additional access to their applications, without needing to explicity write code for each administrative feature.  Part of my advocacy for PowerShell includes <a href=""http://blog.usepowershell.com"" rel=""nofollow"">my blog</a>, appearances on various podcasts, and acting as a Community Director for <a href=""http://powershellcommunity.org"" rel=""nofollow"">PowerShellCommunity.Org</a></p>
+
+<p>I’m also a co-host of Mind of Root (a weekly audio podcast about systems administration, tech news, and topics).</p>
+", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("WebsiteUrl", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("http://blog.usepowershell.com", reader.Value);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void MultibyteCharacterPropertyNamesAndStrings()
+    {
+      string json = @"{
+  ""ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ"": ""ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ""
+}";
+      JObject parsed = JObject.Parse(json);
+      var memoryStream = new MemoryStream();
+      var bsonWriter = new BsonWriter(memoryStream);
+      parsed.WriteTo(bsonWriter);
+      bsonWriter.Flush();
+      memoryStream.Position = 0;
+
+      BsonReader reader = new BsonReader(memoryStream);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    public void UriGuidTimeSpanTestClassEmptyTest()
+    {
+      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass();
+
+      var memoryStream = new MemoryStream();
+      var bsonWriter = new BsonWriter(memoryStream);
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Serialize(bsonWriter, c1);
+      bsonWriter.Flush();
+      memoryStream.Position = 0;
+
+      var bsonReader = new BsonReader(memoryStream);
+
+      UriGuidTimeSpanTestClass c2 = serializer.Deserialize<UriGuidTimeSpanTestClass>(bsonReader);
+      Assert.AreEqual(c1.Guid, c2.Guid);
+      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
+      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
+      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
+      Assert.AreEqual(c1.Uri, c2.Uri);
+    }
+
+    public void UriGuidTimeSpanTestClassValuesTest()
+    {
+      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass
+      {
+        Guid = new Guid("1924129C-F7E0-40F3-9607-9939C531395A"),
+        NullableGuid = new Guid("9E9F3ADF-E017-4F72-91E0-617EBE85967D"),
+        TimeSpan = TimeSpan.FromDays(1),
+        NullableTimeSpan = TimeSpan.FromHours(1),
+        Uri = new Uri("http://testuri.com")
+      };
+
+      var memoryStream = new MemoryStream();
+      var bsonWriter = new BsonWriter(memoryStream);
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Serialize(bsonWriter, c1);
+      bsonWriter.Flush();
+      memoryStream.Position = 0;
+
+      var bsonReader = new BsonReader(memoryStream);
+
+      UriGuidTimeSpanTestClass c2 = serializer.Deserialize<UriGuidTimeSpanTestClass>(bsonReader);
+      Assert.AreEqual(c1.Guid, c2.Guid);
+      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
+      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
+      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
+      Assert.AreEqual(c1.Uri, c2.Uri);
+    }
+
+    [Test]
+    public void DeserializeByteArrayWithTypeNameHandling()
+    {
+      TestObject test = new TestObject("Test", new byte[] { 72, 63, 62, 71, 92, 55 });
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.TypeNameHandling = TypeNameHandling.All;
+
+      byte[] objectBytes;
+      using (MemoryStream bsonStream = new MemoryStream())
+      using (JsonWriter bsonWriter = new BsonWriter(bsonStream))
+      {
+        serializer.Serialize(bsonWriter, test);
+        bsonWriter.Flush();
+
+        objectBytes = bsonStream.ToArray();
+      }
+
+      using (MemoryStream bsonStream = new MemoryStream(objectBytes))
+      using (JsonReader bsonReader = new BsonReader(bsonStream))
+      {
+        // Get exception here
+        TestObject newObject = (TestObject)serializer.Deserialize(bsonReader);
+
+        Assert.AreEqual("Test", newObject.Name);
+        CollectionAssert.AreEquivalent(new byte[] { 72, 63, 62, 71, 92, 55 }, newObject.Data);
+      }
+    }
+
+#if !(WINDOWS_PHONE || SILVERLIGHT || NET20 || NET35 || NETFX_CORE)
+    public void Utf8Text()
+    {
+      string badText =System.IO.File.ReadAllText(@"PoisonText.txt");
+      var j = new JObject();
+      j["test"] = badText;
+
+      var memoryStream = new MemoryStream();
+      var bsonWriter = new BsonWriter(memoryStream);
+      j.WriteTo(bsonWriter);
+      bsonWriter.Flush();
+
+      memoryStream.Position = 0;
+      JObject o = JObject.Load(new BsonReader(memoryStream));
+
+      Assert.AreEqual(badText, (string)o["test"]);
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
@@ -1,668 +1,668 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Bson;
-using System.IO;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Tests.TestObjects;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Bson
-{
-  [TestFixture]
-  public class BsonWriterTests : TestFixtureBase
-  {
-    [Test]
-    public void CloseOutput()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      Assert.IsTrue(ms.CanRead);
-      writer.Close();
-      Assert.IsFalse(ms.CanRead);
-
-      ms = new MemoryStream();
-      writer = new BsonWriter(ms) { CloseOutput = false };
-
-      Assert.IsTrue(ms.CanRead);
-      writer.Close();
-      Assert.IsTrue(ms.CanRead);
-    }
-
-    [Test]
-    public void WriteSingleObject()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("Blah");
-      writer.WriteValue(1);
-      writer.WriteEndObject();
-
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-      Assert.AreEqual("0F-00-00-00-10-42-6C-61-68-00-01-00-00-00-00", bson);
-    }
-
-#if !PocketPC && !NET20
-    [Test]
-    public void WriteValues()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartArray();
-      writer.WriteValue(long.MaxValue);
-      writer.WriteValue((ulong)long.MaxValue);
-      writer.WriteValue(int.MaxValue);
-      writer.WriteValue((uint)int.MaxValue);
-      writer.WriteValue(byte.MaxValue);
-      writer.WriteValue(sbyte.MaxValue);
-      writer.WriteValue('a');
-      writer.WriteValue(decimal.MaxValue);
-      writer.WriteValue(double.MaxValue);
-      writer.WriteValue(float.MaxValue);
-      writer.WriteValue(true);
-      writer.WriteValue(new byte[] { 0, 1, 2, 3, 4 });
-      writer.WriteValue(new DateTimeOffset(2000, 12, 29, 12, 30, 0, TimeSpan.Zero));
-      writer.WriteValue(new DateTime(2000, 12, 29, 12, 30, 0, DateTimeKind.Utc));
-      writer.WriteEnd();
-
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-      Assert.AreEqual("8C-00-00-00-12-30-00-FF-FF-FF-FF-FF-FF-FF-7F-12-31-00-FF-FF-FF-FF-FF-FF-FF-7F-10-32-00-FF-FF-FF-7F-10-33-00-FF-FF-FF-7F-10-34-00-FF-00-00-00-10-35-00-7F-00-00-00-02-36-00-02-00-00-00-61-00-01-37-00-00-00-00-00-00-00-F0-45-01-38-00-FF-FF-FF-FF-FF-FF-EF-7F-01-39-00-00-00-00-E0-FF-FF-EF-47-08-31-30-00-01-05-31-31-00-05-00-00-00-00-00-01-02-03-04-09-31-32-00-40-C5-E2-BA-E3-00-00-00-09-31-33-00-40-C5-E2-BA-E3-00-00-00-00", bson);
-    }
-#endif
-
-    [Test]
-    public void WriteArrayBsonFromSite()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      writer.WriteStartArray();
-      writer.WriteValue("a");
-      writer.WriteValue("b");
-      writer.WriteValue("c");
-      writer.WriteEndArray();
-      
-      writer.Flush();
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      string expected = "20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00";
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-
-      Assert.AreEqual(expected, bson);
-    }
-
-    [Test]
-    public void WriteBytes()
-    {
-      byte[] data = Encoding.UTF8.GetBytes("Hello world!");
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      writer.WriteStartArray();
-      writer.WriteValue("a");
-      writer.WriteValue("b");
-      writer.WriteValue(data);
-      writer.WriteEndArray();
-
-      writer.Flush();
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      string expected = "2B-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-05-32-00-0C-00-00-00-00-48-65-6C-6C-6F-20-77-6F-72-6C-64-21-00";
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-
-      Assert.AreEqual(expected, bson);
-
-      BsonReader reader = new BsonReader(new MemoryStream(ms.ToArray()));
-      reader.ReadRootValueAsArray = true;
-      reader.Read();
-      reader.Read();
-      reader.Read();
-      reader.Read();
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      CollectionAssert.AreEquivalent(data, (byte[])reader.Value);
-    }
-
-    [Test]
-    public void WriteNestedArray()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      writer.WriteStartObject();
-
-      writer.WritePropertyName("_id");
-      writer.WriteValue(MiscellaneousUtils.HexToBytes("4A-78-93-79-17-22-00-00-00-00-61-CF"));
-
-      writer.WritePropertyName("a");
-      writer.WriteStartArray();
-      for (int i = 1; i <= 8; i++)
-      {
-        double value = (i != 5)
-                         ? Convert.ToDouble(i)
-                         : 5.78960446186581E+77d;
-
-        writer.WriteValue(value);
-      }
-      writer.WriteEndArray();
-
-      writer.WritePropertyName("b");
-      writer.WriteValue("test");
-
-      writer.WriteEndObject();
-
-      writer.Flush();
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      string expected = "87-00-00-00-05-5F-69-64-00-0C-00-00-00-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00";
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-
-      Assert.AreEqual(expected, bson);
-    }
-
-    [Test]
-    public void WriteSerializedStore()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      Store s1 = new Store();
-      s1.Color = StoreColor.White;
-      s1.Cost = 999.59m;
-      s1.Employees = int.MaxValue - 1;
-      s1.Open = true;
-      s1.product.Add(new Product
-                       {
-                         ExpiryDate = new DateTime(2000, 9, 28, 3, 59, 58, DateTimeKind.Local),
-                         Name = "BSON!",
-                         Price = -0.1m,
-                         Sizes = new [] { "First", "Second" }
-                       });
-      s1.Establised = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Local);
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Serialize(writer, s1);
-
-      ms.Seek(0, SeekOrigin.Begin);
-      BsonReader reader = new BsonReader(ms);
-      Store s2 = (Store)serializer.Deserialize(reader, typeof (Store));
-
-      Assert.AreNotEqual(s1, s2);
-      Assert.AreEqual(s1.Color, s2.Color);
-      Assert.AreEqual(s1.Cost, s2.Cost);
-      Assert.AreEqual(s1.Employees, s2.Employees);
-      Assert.AreEqual(s1.Escape, s2.Escape);
-      Assert.AreEqual(s1.Establised, s2.Establised);
-      Assert.AreEqual(s1.Mottos.Count, s2.Mottos.Count);
-      Assert.AreEqual(s1.Mottos.First(), s2.Mottos.First());
-      Assert.AreEqual(s1.Mottos.Last(), s2.Mottos.Last());
-      Assert.AreEqual(s1.Open, s2.Open);
-      Assert.AreEqual(s1.product.Count, s2.product.Count);
-      Assert.AreEqual(s1.RoomsPerFloor.Length, s2.RoomsPerFloor.Length);
-      Assert.AreEqual(s1.Symbol, s2.Symbol);
-      Assert.AreEqual(s1.Width, s2.Width);
-
-      MemoryStream ms1 = new MemoryStream();
-      BsonWriter writer1 = new BsonWriter(ms1);
-
-      serializer.Serialize(writer1, s1);
-
-      CollectionAssert.AreEquivalent(ms.ToArray(), ms1.ToArray());
-
-      string s = JsonConvert.SerializeObject(s1);
-      byte[] textData = Encoding.UTF8.GetBytes(s);
-
-      int l1 = textData.Length;
-      int l2 = ms.ToArray().Length;
-
-      Console.WriteLine(l1);
-      Console.WriteLine(l2);
-    }
-
-    [Test]
-    public void WriteLargeStrings()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      StringBuilder largeStringBuilder = new StringBuilder();
-      for (int i = 0; i < 100; i++)
-      {
-        if (i > 0)
-          largeStringBuilder.Append("-");
-
-        largeStringBuilder.Append(i.ToString(CultureInfo.InvariantCulture));
-      }
-      string largeString = largeStringBuilder.ToString();
-
-      writer.WriteStartObject();
-      writer.WritePropertyName(largeString);
-      writer.WriteValue(largeString);
-      writer.WriteEndObject();
-
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-      Assert.AreEqual("4E-02-00-00-02-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-22-01-00-00-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-00", bson);
-    }
-
-    [Test]
-    public void SerializeGoogleGeoCode()
-    {
-      string json = @"{
-  ""name"": ""1600 Amphitheatre Parkway, Mountain View, CA, USA"",
-  ""Status"": {
-    ""code"": 200,
-    ""request"": ""geocode""
-  },
-  ""Placemark"": [
-    {
-      ""address"": ""1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA"",
-      ""AddressDetails"": {
-        ""Country"": {
-          ""CountryNameCode"": ""US"",
-          ""AdministrativeArea"": {
-            ""AdministrativeAreaName"": ""CA"",
-            ""SubAdministrativeArea"": {
-              ""SubAdministrativeAreaName"": ""Santa Clara"",
-              ""Locality"": {
-                ""LocalityName"": ""Mountain View"",
-                ""Thoroughfare"": {
-                  ""ThoroughfareName"": ""1600 Amphitheatre Pkwy""
-                },
-                ""PostalCode"": {
-                  ""PostalCodeNumber"": ""94043""
-                }
-              }
-            }
-          }
-        },
-        ""Accuracy"": 8
-      },
-      ""Point"": {
-        ""coordinates"": [-122.083739, 37.423021, 0]
-      }
-    }
-  ]
-}";
-
-      GoogleMapGeocoderStructure jsonGoogleMapGeocoder = JsonConvert.DeserializeObject<GoogleMapGeocoderStructure>(json);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Serialize(writer, jsonGoogleMapGeocoder);
-
-      ms.Seek(0, SeekOrigin.Begin);
-      BsonReader reader = new BsonReader(ms);
-      GoogleMapGeocoderStructure bsonGoogleMapGeocoder = (GoogleMapGeocoderStructure)serializer.Deserialize(reader, typeof (GoogleMapGeocoderStructure));
-
-      Assert.IsNotNull(bsonGoogleMapGeocoder);
-      Assert.AreEqual("1600 Amphitheatre Parkway, Mountain View, CA, USA", bsonGoogleMapGeocoder.Name);
-      Assert.AreEqual("200", bsonGoogleMapGeocoder.Status.Code);
-      Assert.AreEqual("geocode", bsonGoogleMapGeocoder.Status.Request);
-
-      IList<Placemark> placemarks = bsonGoogleMapGeocoder.Placemark;
-      Assert.IsNotNull(placemarks);
-      Assert.AreEqual(1, placemarks.Count);
-
-      Placemark placemark = placemarks[0];
-      Assert.AreEqual("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", placemark.Address);
-      Assert.AreEqual(8, placemark.AddressDetails.Accuracy);
-      Assert.AreEqual("US", placemark.AddressDetails.Country.CountryNameCode);
-      Assert.AreEqual("CA", placemark.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName);
-      Assert.AreEqual("Santa Clara", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName);
-      Assert.AreEqual("Mountain View", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName);
-      Assert.AreEqual("1600 Amphitheatre Pkwy", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName);
-      Assert.AreEqual("94043", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber);
-      Assert.AreEqual(-122.083739m, placemark.Point.Coordinates[0]);
-      Assert.AreEqual(37.423021m, placemark.Point.Coordinates[1]);
-      Assert.AreEqual(0m, placemark.Point.Coordinates[2]);
-    }
-
-    [Test]
-    public void WriteEmptyStrings()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("");
-      writer.WriteValue("");
-      writer.WriteEndObject();
-
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-      Assert.AreEqual("0C-00-00-00-02-00-01-00-00-00-00-00", bson);
-    }
-
-    [Test]
-    public void WriteComment()
-    {
-      ExceptionAssert.Throws<JsonWriterException>("Cannot write JSON comment as BSON.",
-      () =>
-      {
-        MemoryStream ms = new MemoryStream();
-        BsonWriter writer = new BsonWriter(ms);
-
-        writer.WriteStartArray();
-        writer.WriteComment("fail");
-      });
-    }
-
-    [Test]
-    public void WriteConstructor()
-    {
-      ExceptionAssert.Throws<JsonWriterException>("Cannot write JSON constructor as BSON.",
-      () =>
-      {
-        MemoryStream ms = new MemoryStream();
-        BsonWriter writer = new BsonWriter(ms);
-
-        writer.WriteStartArray();
-        writer.WriteStartConstructor("fail");
-      });
-    }
-
-    [Test]
-    public void WriteRaw()
-    {
-      ExceptionAssert.Throws<JsonWriterException>("Cannot write raw JSON as BSON.",
-      () =>
-      {
-        MemoryStream ms = new MemoryStream();
-        BsonWriter writer = new BsonWriter(ms);
-
-        writer.WriteStartArray();
-        writer.WriteRaw("fail");
-      });
-    }
-
-    [Test]
-    public void WriteRawValue()
-    {
-      ExceptionAssert.Throws<JsonWriterException>("Cannot write raw JSON as BSON.",
-      () =>
-      {
-        MemoryStream ms = new MemoryStream();
-        BsonWriter writer = new BsonWriter(ms);
-
-        writer.WriteStartArray();
-        writer.WriteRawValue("fail");
-      });
-    }
-
-    [Test]
-    public void Example()
-    {
-      Product p = new Product();
-      p.ExpiryDate = DateTime.Parse("2009-04-05T14:45:00Z");
-      p.Name = "Carlos' Spicy Wieners";
-      p.Price = 9.95m;
-      p.Sizes = new[] { "Small", "Medium", "Large" };
-
-      MemoryStream ms = new MemoryStream();
-      JsonSerializer serializer = new JsonSerializer();
-
-      // serialize product to BSON
-      BsonWriter writer = new BsonWriter(ms);
-      serializer.Serialize(writer, p);
-
-      Console.WriteLine(BitConverter.ToString(ms.ToArray()));
-      // 7C-00-00-00-02-4E-61-6D-65-00-16-00-00-00-43-61-72-6C-
-      // 6F-73-27-20-53-70-69-63-79-20-57-69-65-6E-65-72-73-00-
-      // 09-45-78-70-69-72-79-44-61-74-65-00-E0-51-BD-76-20-01-
-      // 00-00-01-50-72-69-63-65-00-66-66-66-66-66-E6-23-40-04-
-      // 53-69-7A-65-73-00-2D-00-00-00-02-30-00-06-00-00-00-53-
-      // 6D-61-6C-6C-00-02-31-00-07-00-00-00-4D-65-64-69-75-6D-
-      // 00-02-32-00-06-00-00-00-4C-61-72-67-65-00-00-00
-
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      // deserialize product from BSON
-      BsonReader reader = new BsonReader(ms);
-      Product deserializedProduct = serializer.Deserialize<Product>(reader);
-
-      Console.WriteLine(deserializedProduct.Name);
-      // Carlos' Spicy Wieners
-
-
-      Assert.AreEqual("Carlos' Spicy Wieners", deserializedProduct.Name);
-      Assert.AreEqual(9.95m, deserializedProduct.Price);
-      Assert.AreEqual(3, deserializedProduct.Sizes.Length);
-    }
-
-    [Test]
-    public void WriteOid()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      byte[] oid = new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("_oid");
-      writer.WriteObjectId(oid);
-      writer.WriteEndObject();
-
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-      Assert.AreEqual("17-00-00-00-07-5F-6F-69-64-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-00", bson);
-
-      ms.Seek(0, SeekOrigin.Begin);
-      BsonReader reader = new BsonReader(ms);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      CollectionAssert.AreEquivalent(oid, (byte[])reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void WriteOidPlusContent()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("_id");
-      writer.WriteObjectId(MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001"));
-      writer.WritePropertyName("test");
-      writer.WriteValue("1234£56");
-      writer.WriteEndObject();
-
-      byte[] expected = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
-
-      CollectionAssert.AreEquivalent(expected, ms.ToArray());
-    }
-
-    [Test]
-    public void WriteRegexPlusContent()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("regex");
-      writer.WriteRegex("abc", "i");
-      writer.WritePropertyName("test");
-      writer.WriteRegex(string.Empty, null);
-      writer.WriteEndObject();
-
-      byte[] expected = MiscellaneousUtils.HexToBytes("1A-00-00-00-0B-72-65-67-65-78-00-61-62-63-00-69-00-0B-74-65-73-74-00-00-00-00");
-
-      CollectionAssert.AreEquivalent(expected, ms.ToArray());
-    }
-
-    [Test]
-    public void SerializeEmptyAndNullStrings()
-    {
-      Product p = new Product();
-      p.ExpiryDate = DateTime.Parse("2009-04-05T14:45:00Z");
-      p.Name = null;
-      p.Price = 9.95m;
-      p.Sizes = new[] { "Small", "", null };
-
-      MemoryStream ms = new MemoryStream();
-      JsonSerializer serializer = new JsonSerializer();
-
-      BsonWriter writer = new BsonWriter(ms);
-      serializer.Serialize(writer, p);
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      BsonReader reader = new BsonReader(ms);
-      Product deserializedProduct = serializer.Deserialize<Product>(reader);
-
-      Console.WriteLine(deserializedProduct.Name);
-
-      Assert.AreEqual(null, deserializedProduct.Name);
-      Assert.AreEqual(9.95m, deserializedProduct.Price);
-      Assert.AreEqual(3, deserializedProduct.Sizes.Length);
-      Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
-      Assert.AreEqual("", deserializedProduct.Sizes[1]);
-      Assert.AreEqual(null, deserializedProduct.Sizes[2]);
-    }
-
-    [Test]
-    public void WriteReadEmptyAndNullStrings()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-
-      writer.WriteStartArray();
-      writer.WriteValue("Content!");
-      writer.WriteValue("");
-      writer.WriteValue((string)null);
-      writer.WriteEndArray();
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      BsonReader reader = new BsonReader(ms);
-      reader.ReadRootValueAsArray = true;
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("Content!", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.AreEqual(null, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void WriteDateTimes()
-    {
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      writer.DateTimeKindHandling = DateTimeKind.Unspecified;
-
-      writer.WriteStartArray();
-      writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc));
-      writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Local));
-      writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Unspecified));
-      writer.WriteEndArray();
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      BsonReader reader = new BsonReader(ms);
-      reader.ReadRootValueAsArray = true;
-      reader.DateTimeKindHandling = DateTimeKind.Utc;
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void WriteValueOutsideOfObjectOrArray()
-    {
-      ExceptionAssert.Throws<JsonWriterException>("Error writing String value. BSON must start with an Object or Array.",
-      () =>
-      {
-        MemoryStream stream = new MemoryStream();
-
-        using (BsonWriter writer = new BsonWriter(stream))
-        {
-          writer.WriteValue("test");
-          writer.Flush();
-        }
-      });
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Bson;
+using System.IO;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Tests.TestObjects;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Bson
+{
+  [TestFixture]
+  public class BsonWriterTests : TestFixtureBase
+  {
+    [Test]
+    public void CloseOutput()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      Assert.IsTrue(ms.CanRead);
+      writer.Close();
+      Assert.IsFalse(ms.CanRead);
+
+      ms = new MemoryStream();
+      writer = new BsonWriter(ms) { CloseOutput = false };
+
+      Assert.IsTrue(ms.CanRead);
+      writer.Close();
+      Assert.IsTrue(ms.CanRead);
+    }
+
+    [Test]
+    public void WriteSingleObject()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("Blah");
+      writer.WriteValue(1);
+      writer.WriteEndObject();
+
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+      Assert.AreEqual("0F-00-00-00-10-42-6C-61-68-00-01-00-00-00-00", bson);
+    }
+
+#if !PocketPC && !NET20
+    [Test]
+    public void WriteValues()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartArray();
+      writer.WriteValue(long.MaxValue);
+      writer.WriteValue((ulong)long.MaxValue);
+      writer.WriteValue(int.MaxValue);
+      writer.WriteValue((uint)int.MaxValue);
+      writer.WriteValue(byte.MaxValue);
+      writer.WriteValue(sbyte.MaxValue);
+      writer.WriteValue('a');
+      writer.WriteValue(decimal.MaxValue);
+      writer.WriteValue(double.MaxValue);
+      writer.WriteValue(float.MaxValue);
+      writer.WriteValue(true);
+      writer.WriteValue(new byte[] { 0, 1, 2, 3, 4 });
+      writer.WriteValue(new DateTimeOffset(2000, 12, 29, 12, 30, 0, TimeSpan.Zero));
+      writer.WriteValue(new DateTime(2000, 12, 29, 12, 30, 0, DateTimeKind.Utc));
+      writer.WriteEnd();
+
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+      Assert.AreEqual("8C-00-00-00-12-30-00-FF-FF-FF-FF-FF-FF-FF-7F-12-31-00-FF-FF-FF-FF-FF-FF-FF-7F-10-32-00-FF-FF-FF-7F-10-33-00-FF-FF-FF-7F-10-34-00-FF-00-00-00-10-35-00-7F-00-00-00-02-36-00-02-00-00-00-61-00-01-37-00-00-00-00-00-00-00-F0-45-01-38-00-FF-FF-FF-FF-FF-FF-EF-7F-01-39-00-00-00-00-E0-FF-FF-EF-47-08-31-30-00-01-05-31-31-00-05-00-00-00-00-00-01-02-03-04-09-31-32-00-40-C5-E2-BA-E3-00-00-00-09-31-33-00-40-C5-E2-BA-E3-00-00-00-00", bson);
+    }
+#endif
+
+    [Test]
+    public void WriteArrayBsonFromSite()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      writer.WriteStartArray();
+      writer.WriteValue("a");
+      writer.WriteValue("b");
+      writer.WriteValue("c");
+      writer.WriteEndArray();
+      
+      writer.Flush();
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      string expected = "20-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-02-32-00-02-00-00-00-63-00-00";
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+
+      Assert.AreEqual(expected, bson);
+    }
+
+    [Test]
+    public void WriteBytes()
+    {
+      byte[] data = Encoding.UTF8.GetBytes("Hello world!");
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      writer.WriteStartArray();
+      writer.WriteValue("a");
+      writer.WriteValue("b");
+      writer.WriteValue(data);
+      writer.WriteEndArray();
+
+      writer.Flush();
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      string expected = "2B-00-00-00-02-30-00-02-00-00-00-61-00-02-31-00-02-00-00-00-62-00-05-32-00-0C-00-00-00-00-48-65-6C-6C-6F-20-77-6F-72-6C-64-21-00";
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+
+      Assert.AreEqual(expected, bson);
+
+      BsonReader reader = new BsonReader(new MemoryStream(ms.ToArray()));
+      reader.ReadRootValueAsArray = true;
+      reader.Read();
+      reader.Read();
+      reader.Read();
+      reader.Read();
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      CollectionAssert.AreEquivalent(data, (byte[])reader.Value);
+    }
+
+    [Test]
+    public void WriteNestedArray()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      writer.WriteStartObject();
+
+      writer.WritePropertyName("_id");
+      writer.WriteValue(MiscellaneousUtils.HexToBytes("4A-78-93-79-17-22-00-00-00-00-61-CF"));
+
+      writer.WritePropertyName("a");
+      writer.WriteStartArray();
+      for (int i = 1; i <= 8; i++)
+      {
+        double value = (i != 5)
+                         ? Convert.ToDouble(i)
+                         : 5.78960446186581E+77d;
+
+        writer.WriteValue(value);
+      }
+      writer.WriteEndArray();
+
+      writer.WritePropertyName("b");
+      writer.WriteValue("test");
+
+      writer.WriteEndObject();
+
+      writer.Flush();
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      string expected = "87-00-00-00-05-5F-69-64-00-0C-00-00-00-00-4A-78-93-79-17-22-00-00-00-00-61-CF-04-61-00-5D-00-00-00-01-30-00-00-00-00-00-00-00-F0-3F-01-31-00-00-00-00-00-00-00-00-40-01-32-00-00-00-00-00-00-00-08-40-01-33-00-00-00-00-00-00-00-10-40-01-34-00-00-00-00-00-00-00-14-50-01-35-00-00-00-00-00-00-00-18-40-01-36-00-00-00-00-00-00-00-1C-40-01-37-00-00-00-00-00-00-00-20-40-00-02-62-00-05-00-00-00-74-65-73-74-00-00";
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+
+      Assert.AreEqual(expected, bson);
+    }
+
+    [Test]
+    public void WriteSerializedStore()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      Store s1 = new Store();
+      s1.Color = StoreColor.White;
+      s1.Cost = 999.59m;
+      s1.Employees = int.MaxValue - 1;
+      s1.Open = true;
+      s1.product.Add(new Product
+                       {
+                         ExpiryDate = new DateTime(2000, 9, 28, 3, 59, 58, DateTimeKind.Local),
+                         Name = "BSON!",
+                         Price = -0.1m,
+                         Sizes = new [] { "First", "Second" }
+                       });
+      s1.Establised = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Local);
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Serialize(writer, s1);
+
+      ms.Seek(0, SeekOrigin.Begin);
+      BsonReader reader = new BsonReader(ms);
+      Store s2 = (Store)serializer.Deserialize(reader, typeof (Store));
+
+      Assert.AreNotEqual(s1, s2);
+      Assert.AreEqual(s1.Color, s2.Color);
+      Assert.AreEqual(s1.Cost, s2.Cost);
+      Assert.AreEqual(s1.Employees, s2.Employees);
+      Assert.AreEqual(s1.Escape, s2.Escape);
+      Assert.AreEqual(s1.Establised, s2.Establised);
+      Assert.AreEqual(s1.Mottos.Count, s2.Mottos.Count);
+      Assert.AreEqual(s1.Mottos.First(), s2.Mottos.First());
+      Assert.AreEqual(s1.Mottos.Last(), s2.Mottos.Last());
+      Assert.AreEqual(s1.Open, s2.Open);
+      Assert.AreEqual(s1.product.Count, s2.product.Count);
+      Assert.AreEqual(s1.RoomsPerFloor.Length, s2.RoomsPerFloor.Length);
+      Assert.AreEqual(s1.Symbol, s2.Symbol);
+      Assert.AreEqual(s1.Width, s2.Width);
+
+      MemoryStream ms1 = new MemoryStream();
+      BsonWriter writer1 = new BsonWriter(ms1);
+
+      serializer.Serialize(writer1, s1);
+
+      CollectionAssert.AreEquivalent(ms.ToArray(), ms1.ToArray());
+
+      string s = JsonConvert.SerializeObject(s1);
+      byte[] textData = Encoding.UTF8.GetBytes(s);
+
+      int l1 = textData.Length;
+      int l2 = ms.ToArray().Length;
+
+      Console.WriteLine(l1);
+      Console.WriteLine(l2);
+    }
+
+    [Test]
+    public void WriteLargeStrings()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      StringBuilder largeStringBuilder = new StringBuilder();
+      for (int i = 0; i < 100; i++)
+      {
+        if (i > 0)
+          largeStringBuilder.Append("-");
+
+        largeStringBuilder.Append(i.ToString(CultureInfo.InvariantCulture));
+      }
+      string largeString = largeStringBuilder.ToString();
+
+      writer.WriteStartObject();
+      writer.WritePropertyName(largeString);
+      writer.WriteValue(largeString);
+      writer.WriteEndObject();
+
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+      Assert.AreEqual("4E-02-00-00-02-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-22-01-00-00-30-2D-31-2D-32-2D-33-2D-34-2D-35-2D-36-2D-37-2D-38-2D-39-2D-31-30-2D-31-31-2D-31-32-2D-31-33-2D-31-34-2D-31-35-2D-31-36-2D-31-37-2D-31-38-2D-31-39-2D-32-30-2D-32-31-2D-32-32-2D-32-33-2D-32-34-2D-32-35-2D-32-36-2D-32-37-2D-32-38-2D-32-39-2D-33-30-2D-33-31-2D-33-32-2D-33-33-2D-33-34-2D-33-35-2D-33-36-2D-33-37-2D-33-38-2D-33-39-2D-34-30-2D-34-31-2D-34-32-2D-34-33-2D-34-34-2D-34-35-2D-34-36-2D-34-37-2D-34-38-2D-34-39-2D-35-30-2D-35-31-2D-35-32-2D-35-33-2D-35-34-2D-35-35-2D-35-36-2D-35-37-2D-35-38-2D-35-39-2D-36-30-2D-36-31-2D-36-32-2D-36-33-2D-36-34-2D-36-35-2D-36-36-2D-36-37-2D-36-38-2D-36-39-2D-37-30-2D-37-31-2D-37-32-2D-37-33-2D-37-34-2D-37-35-2D-37-36-2D-37-37-2D-37-38-2D-37-39-2D-38-30-2D-38-31-2D-38-32-2D-38-33-2D-38-34-2D-38-35-2D-38-36-2D-38-37-2D-38-38-2D-38-39-2D-39-30-2D-39-31-2D-39-32-2D-39-33-2D-39-34-2D-39-35-2D-39-36-2D-39-37-2D-39-38-2D-39-39-00-00", bson);
+    }
+
+    [Test]
+    public void SerializeGoogleGeoCode()
+    {
+      string json = @"{
+  ""name"": ""1600 Amphitheatre Parkway, Mountain View, CA, USA"",
+  ""Status"": {
+    ""code"": 200,
+    ""request"": ""geocode""
+  },
+  ""Placemark"": [
+    {
+      ""address"": ""1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA"",
+      ""AddressDetails"": {
+        ""Country"": {
+          ""CountryNameCode"": ""US"",
+          ""AdministrativeArea"": {
+            ""AdministrativeAreaName"": ""CA"",
+            ""SubAdministrativeArea"": {
+              ""SubAdministrativeAreaName"": ""Santa Clara"",
+              ""Locality"": {
+                ""LocalityName"": ""Mountain View"",
+                ""Thoroughfare"": {
+                  ""ThoroughfareName"": ""1600 Amphitheatre Pkwy""
+                },
+                ""PostalCode"": {
+                  ""PostalCodeNumber"": ""94043""
+                }
+              }
+            }
+          }
+        },
+        ""Accuracy"": 8
+      },
+      ""Point"": {
+        ""coordinates"": [-122.083739, 37.423021, 0]
+      }
+    }
+  ]
+}";
+
+      GoogleMapGeocoderStructure jsonGoogleMapGeocoder = JsonConvert.DeserializeObject<GoogleMapGeocoderStructure>(json);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Serialize(writer, jsonGoogleMapGeocoder);
+
+      ms.Seek(0, SeekOrigin.Begin);
+      BsonReader reader = new BsonReader(ms);
+      GoogleMapGeocoderStructure bsonGoogleMapGeocoder = (GoogleMapGeocoderStructure)serializer.Deserialize(reader, typeof (GoogleMapGeocoderStructure));
+
+      Assert.IsNotNull(bsonGoogleMapGeocoder);
+      Assert.AreEqual("1600 Amphitheatre Parkway, Mountain View, CA, USA", bsonGoogleMapGeocoder.Name);
+      Assert.AreEqual("200", bsonGoogleMapGeocoder.Status.Code);
+      Assert.AreEqual("geocode", bsonGoogleMapGeocoder.Status.Request);
+
+      IList<Placemark> placemarks = bsonGoogleMapGeocoder.Placemark;
+      Assert.IsNotNull(placemarks);
+      Assert.AreEqual(1, placemarks.Count);
+
+      Placemark placemark = placemarks[0];
+      Assert.AreEqual("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", placemark.Address);
+      Assert.AreEqual(8, placemark.AddressDetails.Accuracy);
+      Assert.AreEqual("US", placemark.AddressDetails.Country.CountryNameCode);
+      Assert.AreEqual("CA", placemark.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName);
+      Assert.AreEqual("Santa Clara", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName);
+      Assert.AreEqual("Mountain View", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName);
+      Assert.AreEqual("1600 Amphitheatre Pkwy", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName);
+      Assert.AreEqual("94043", placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber);
+      Assert.AreEqual(-122.083739m, placemark.Point.Coordinates[0]);
+      Assert.AreEqual(37.423021m, placemark.Point.Coordinates[1]);
+      Assert.AreEqual(0m, placemark.Point.Coordinates[2]);
+    }
+
+    [Test]
+    public void WriteEmptyStrings()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("");
+      writer.WriteValue("");
+      writer.WriteEndObject();
+
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+      Assert.AreEqual("0C-00-00-00-02-00-01-00-00-00-00-00", bson);
+    }
+
+    [Test]
+    public void WriteComment()
+    {
+      ExceptionAssert.Throws<JsonWriterException>("Cannot write JSON comment as BSON.",
+      () =>
+      {
+        MemoryStream ms = new MemoryStream();
+        BsonWriter writer = new BsonWriter(ms);
+
+        writer.WriteStartArray();
+        writer.WriteComment("fail");
+      });
+    }
+
+    [Test]
+    public void WriteConstructor()
+    {
+      ExceptionAssert.Throws<JsonWriterException>("Cannot write JSON constructor as BSON.",
+      () =>
+      {
+        MemoryStream ms = new MemoryStream();
+        BsonWriter writer = new BsonWriter(ms);
+
+        writer.WriteStartArray();
+        writer.WriteStartConstructor("fail");
+      });
+    }
+
+    [Test]
+    public void WriteRaw()
+    {
+      ExceptionAssert.Throws<JsonWriterException>("Cannot write raw JSON as BSON.",
+      () =>
+      {
+        MemoryStream ms = new MemoryStream();
+        BsonWriter writer = new BsonWriter(ms);
+
+        writer.WriteStartArray();
+        writer.WriteRaw("fail");
+      });
+    }
+
+    [Test]
+    public void WriteRawValue()
+    {
+      ExceptionAssert.Throws<JsonWriterException>("Cannot write raw JSON as BSON.",
+      () =>
+      {
+        MemoryStream ms = new MemoryStream();
+        BsonWriter writer = new BsonWriter(ms);
+
+        writer.WriteStartArray();
+        writer.WriteRawValue("fail");
+      });
+    }
+
+    [Test]
+    public void Example()
+    {
+      Product p = new Product();
+      p.ExpiryDate = DateTime.Parse("2009-04-05T14:45:00Z");
+      p.Name = "Carlos' Spicy Wieners";
+      p.Price = 9.95m;
+      p.Sizes = new[] { "Small", "Medium", "Large" };
+
+      MemoryStream ms = new MemoryStream();
+      JsonSerializer serializer = new JsonSerializer();
+
+      // serialize product to BSON
+      BsonWriter writer = new BsonWriter(ms);
+      serializer.Serialize(writer, p);
+
+      Console.WriteLine(BitConverter.ToString(ms.ToArray()));
+      // 7C-00-00-00-02-4E-61-6D-65-00-16-00-00-00-43-61-72-6C-
+      // 6F-73-27-20-53-70-69-63-79-20-57-69-65-6E-65-72-73-00-
+      // 09-45-78-70-69-72-79-44-61-74-65-00-E0-51-BD-76-20-01-
+      // 00-00-01-50-72-69-63-65-00-66-66-66-66-66-E6-23-40-04-
+      // 53-69-7A-65-73-00-2D-00-00-00-02-30-00-06-00-00-00-53-
+      // 6D-61-6C-6C-00-02-31-00-07-00-00-00-4D-65-64-69-75-6D-
+      // 00-02-32-00-06-00-00-00-4C-61-72-67-65-00-00-00
+
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      // deserialize product from BSON
+      BsonReader reader = new BsonReader(ms);
+      Product deserializedProduct = serializer.Deserialize<Product>(reader);
+
+      Console.WriteLine(deserializedProduct.Name);
+      // Carlos' Spicy Wieners
+
+
+      Assert.AreEqual("Carlos' Spicy Wieners", deserializedProduct.Name);
+      Assert.AreEqual(9.95m, deserializedProduct.Price);
+      Assert.AreEqual(3, deserializedProduct.Sizes.Length);
+    }
+
+    [Test]
+    public void WriteOid()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      byte[] oid = new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("_oid");
+      writer.WriteObjectId(oid);
+      writer.WriteEndObject();
+
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+      Assert.AreEqual("17-00-00-00-07-5F-6F-69-64-00-01-02-03-04-05-06-07-08-09-0A-0B-0C-00", bson);
+
+      ms.Seek(0, SeekOrigin.Begin);
+      BsonReader reader = new BsonReader(ms);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      CollectionAssert.AreEquivalent(oid, (byte[])reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void WriteOidPlusContent()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("_id");
+      writer.WriteObjectId(MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001"));
+      writer.WritePropertyName("test");
+      writer.WriteValue("1234£56");
+      writer.WriteEndObject();
+
+      byte[] expected = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
+
+      CollectionAssert.AreEquivalent(expected, ms.ToArray());
+    }
+
+    [Test]
+    public void WriteRegexPlusContent()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("regex");
+      writer.WriteRegex("abc", "i");
+      writer.WritePropertyName("test");
+      writer.WriteRegex(string.Empty, null);
+      writer.WriteEndObject();
+
+      byte[] expected = MiscellaneousUtils.HexToBytes("1A-00-00-00-0B-72-65-67-65-78-00-61-62-63-00-69-00-0B-74-65-73-74-00-00-00-00");
+
+      CollectionAssert.AreEquivalent(expected, ms.ToArray());
+    }
+
+    [Test]
+    public void SerializeEmptyAndNullStrings()
+    {
+      Product p = new Product();
+      p.ExpiryDate = DateTime.Parse("2009-04-05T14:45:00Z");
+      p.Name = null;
+      p.Price = 9.95m;
+      p.Sizes = new[] { "Small", "", null };
+
+      MemoryStream ms = new MemoryStream();
+      JsonSerializer serializer = new JsonSerializer();
+
+      BsonWriter writer = new BsonWriter(ms);
+      serializer.Serialize(writer, p);
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      BsonReader reader = new BsonReader(ms);
+      Product deserializedProduct = serializer.Deserialize<Product>(reader);
+
+      Console.WriteLine(deserializedProduct.Name);
+
+      Assert.AreEqual(null, deserializedProduct.Name);
+      Assert.AreEqual(9.95m, deserializedProduct.Price);
+      Assert.AreEqual(3, deserializedProduct.Sizes.Length);
+      Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
+      Assert.AreEqual("", deserializedProduct.Sizes[1]);
+      Assert.AreEqual(null, deserializedProduct.Sizes[2]);
+    }
+
+    [Test]
+    public void WriteReadEmptyAndNullStrings()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+
+      writer.WriteStartArray();
+      writer.WriteValue("Content!");
+      writer.WriteValue("");
+      writer.WriteValue((string)null);
+      writer.WriteEndArray();
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      BsonReader reader = new BsonReader(ms);
+      reader.ReadRootValueAsArray = true;
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("Content!", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.AreEqual(null, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void WriteDateTimes()
+    {
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      writer.DateTimeKindHandling = DateTimeKind.Unspecified;
+
+      writer.WriteStartArray();
+      writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc));
+      writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Local));
+      writer.WriteValue(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Unspecified));
+      writer.WriteEndArray();
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      BsonReader reader = new BsonReader(ms);
+      reader.ReadRootValueAsArray = true;
+      reader.DateTimeKindHandling = DateTimeKind.Utc;
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(new DateTime(2000, 10, 12, 20, 55, 0, DateTimeKind.Utc), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void WriteValueOutsideOfObjectOrArray()
+    {
+      ExceptionAssert.Throws<JsonWriterException>("Error writing String value. BSON must start with an Object or Array.",
+      () =>
+      {
+        MemoryStream stream = new MemoryStream();
+
+        using (BsonWriter writer = new BsonWriter(stream))
+        {
+          writer.WriteValue("test");
+          writer.Flush();
+        }
+      });
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/BinaryConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/BinaryConverterTests.cs
@@ -1,168 +1,168 @@
-﻿using System;
-using System.Collections.Generic;
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-using System.Data.Linq;
-#endif
-#if !(SILVERLIGHT || NETFX_CORE)
-using System.Data.SqlTypes;
-#endif
-using System.Text;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class BinaryConverterTests : TestFixtureBase
-  {
-    private static readonly byte[] TestData = Encoding.UTF8.GetBytes("This is some test data!!!");
-
-    public class ByteArrayClass
-    {
-      public byte[] ByteArray { get; set; }
-      public byte[] NullByteArray { get; set; }
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-    [Test]
-    public void DeserializeBinaryClass()
-    {
-      string json = @"{
-  ""Binary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullBinary"": null
-}";
-
-      BinaryClass binaryClass = JsonConvert.DeserializeObject<BinaryClass>(json, new BinaryConverter());
-
-      Assert.AreEqual(new Binary(TestData), binaryClass.Binary);
-      Assert.AreEqual(null, binaryClass.NullBinary);
-    }
-
-    [Test]
-    public void DeserializeBinaryClassFromJsonArray()
-    {
-      string json = @"{
-  ""Binary"": [0, 1, 2, 3],
-  ""NullBinary"": null
-}";
-
-      BinaryClass binaryClass = JsonConvert.DeserializeObject<BinaryClass>(json, new BinaryConverter());
-
-      Assert.AreEqual(new byte[] { 0, 1, 2, 3 }, binaryClass.Binary.ToArray());
-      Assert.AreEqual(null, binaryClass.NullBinary);
-    }
-
-    public class BinaryClass
-    {
-      public Binary Binary { get; set; }
-      public Binary NullBinary { get; set; }
-    }
-
-    [Test]
-    public void SerializeBinaryClass()
-    {
-      BinaryClass binaryClass = new BinaryClass();
-      binaryClass.Binary = new Binary(TestData);
-      binaryClass.NullBinary = null;
-
-      string json = JsonConvert.SerializeObject(binaryClass, Formatting.Indented, new BinaryConverter());
-
-      Assert.AreEqual(@"{
-  ""Binary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullBinary"": null
-}", json);
-    }
-#endif
-
-    [Test]
-    public void SerializeByteArrayClass()
-    {
-      ByteArrayClass byteArrayClass = new ByteArrayClass();
-      byteArrayClass.ByteArray = TestData;
-      byteArrayClass.NullByteArray = null;
-
-      string json = JsonConvert.SerializeObject(byteArrayClass, Formatting.Indented, new BinaryConverter());
-
-      Assert.AreEqual(@"{
-  ""ByteArray"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullByteArray"": null
-}", json);
-    }
-
-#if !(SILVERLIGHT || NETFX_CORE)
-    public class SqlBinaryClass
-    {
-      public SqlBinary SqlBinary { get; set; }
-      public SqlBinary? NullableSqlBinary1 { get; set; }
-      public SqlBinary? NullableSqlBinary2 { get; set; }
-    }
-
-    [Test]
-    public void SerializeSqlBinaryClass()
-    {
-      SqlBinaryClass sqlBinaryClass = new SqlBinaryClass();
-      sqlBinaryClass.SqlBinary = new SqlBinary(TestData);
-      sqlBinaryClass.NullableSqlBinary1 = new SqlBinary(TestData);
-      sqlBinaryClass.NullableSqlBinary2 = null;
-
-      string json = JsonConvert.SerializeObject(sqlBinaryClass, Formatting.Indented, new BinaryConverter());
-
-      Assert.AreEqual(@"{
-  ""SqlBinary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullableSqlBinary1"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullableSqlBinary2"": null
-}", json);
-    }
-
-    [Test]
-    public void DeserializeSqlBinaryClass()
-    {
-      string json = @"{
-  ""SqlBinary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullableSqlBinary1"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullableSqlBinary2"": null
-}";
-
-      SqlBinaryClass sqlBinaryClass = JsonConvert.DeserializeObject<SqlBinaryClass>(json, new BinaryConverter());
-
-      Assert.AreEqual(new SqlBinary(TestData), sqlBinaryClass.SqlBinary);
-      Assert.AreEqual(new SqlBinary(TestData), sqlBinaryClass.NullableSqlBinary1);
-      Assert.AreEqual(null, sqlBinaryClass.NullableSqlBinary2);
-    }
-#endif
-
-    [Test]
-    public void DeserializeByteArrayClass()
-    {
-      string json = @"{
-  ""ByteArray"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
-  ""NullByteArray"": null
-}";
-
-      ByteArrayClass byteArrayClass = JsonConvert.DeserializeObject<ByteArrayClass>(json, new BinaryConverter());
-
-      CollectionAssert.AreEquivalent(TestData, byteArrayClass.ByteArray);
-      Assert.AreEqual(null, byteArrayClass.NullByteArray);
-    }
-
-    [Test]
-    public void DeserializeByteArrayFromJsonArray()
-    {
-      string json = @"{
-  ""ByteArray"": [0, 1, 2, 3],
-  ""NullByteArray"": null
-}";
-
-      ByteArrayClass c = JsonConvert.DeserializeObject<ByteArrayClass>(json);
-      Assert.IsNotNull(c.ByteArray);
-      Assert.AreEqual(4, c.ByteArray.Length);
-      CollectionAssert.AreEquivalent(new byte[] { 0, 1, 2, 3 }, c.ByteArray);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+using System.Data.Linq;
+#endif
+#if !(SILVERLIGHT || NETFX_CORE)
+using System.Data.SqlTypes;
+#endif
+using System.Text;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class BinaryConverterTests : TestFixtureBase
+  {
+    private static readonly byte[] TestData = Encoding.UTF8.GetBytes("This is some test data!!!");
+
+    public class ByteArrayClass
+    {
+      public byte[] ByteArray { get; set; }
+      public byte[] NullByteArray { get; set; }
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+    [Test]
+    public void DeserializeBinaryClass()
+    {
+      string json = @"{
+  ""Binary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullBinary"": null
+}";
+
+      BinaryClass binaryClass = JsonConvert.DeserializeObject<BinaryClass>(json, new BinaryConverter());
+
+      Assert.AreEqual(new Binary(TestData), binaryClass.Binary);
+      Assert.AreEqual(null, binaryClass.NullBinary);
+    }
+
+    [Test]
+    public void DeserializeBinaryClassFromJsonArray()
+    {
+      string json = @"{
+  ""Binary"": [0, 1, 2, 3],
+  ""NullBinary"": null
+}";
+
+      BinaryClass binaryClass = JsonConvert.DeserializeObject<BinaryClass>(json, new BinaryConverter());
+
+      Assert.AreEqual(new byte[] { 0, 1, 2, 3 }, binaryClass.Binary.ToArray());
+      Assert.AreEqual(null, binaryClass.NullBinary);
+    }
+
+    public class BinaryClass
+    {
+      public Binary Binary { get; set; }
+      public Binary NullBinary { get; set; }
+    }
+
+    [Test]
+    public void SerializeBinaryClass()
+    {
+      BinaryClass binaryClass = new BinaryClass();
+      binaryClass.Binary = new Binary(TestData);
+      binaryClass.NullBinary = null;
+
+      string json = JsonConvert.SerializeObject(binaryClass, Formatting.Indented, new BinaryConverter());
+
+      Assert.AreEqual(@"{
+  ""Binary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullBinary"": null
+}", json);
+    }
+#endif
+
+    [Test]
+    public void SerializeByteArrayClass()
+    {
+      ByteArrayClass byteArrayClass = new ByteArrayClass();
+      byteArrayClass.ByteArray = TestData;
+      byteArrayClass.NullByteArray = null;
+
+      string json = JsonConvert.SerializeObject(byteArrayClass, Formatting.Indented, new BinaryConverter());
+
+      Assert.AreEqual(@"{
+  ""ByteArray"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullByteArray"": null
+}", json);
+    }
+
+#if !(SILVERLIGHT || NETFX_CORE)
+    public class SqlBinaryClass
+    {
+      public SqlBinary SqlBinary { get; set; }
+      public SqlBinary? NullableSqlBinary1 { get; set; }
+      public SqlBinary? NullableSqlBinary2 { get; set; }
+    }
+
+    [Test]
+    public void SerializeSqlBinaryClass()
+    {
+      SqlBinaryClass sqlBinaryClass = new SqlBinaryClass();
+      sqlBinaryClass.SqlBinary = new SqlBinary(TestData);
+      sqlBinaryClass.NullableSqlBinary1 = new SqlBinary(TestData);
+      sqlBinaryClass.NullableSqlBinary2 = null;
+
+      string json = JsonConvert.SerializeObject(sqlBinaryClass, Formatting.Indented, new BinaryConverter());
+
+      Assert.AreEqual(@"{
+  ""SqlBinary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullableSqlBinary1"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullableSqlBinary2"": null
+}", json);
+    }
+
+    [Test]
+    public void DeserializeSqlBinaryClass()
+    {
+      string json = @"{
+  ""SqlBinary"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullableSqlBinary1"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullableSqlBinary2"": null
+}";
+
+      SqlBinaryClass sqlBinaryClass = JsonConvert.DeserializeObject<SqlBinaryClass>(json, new BinaryConverter());
+
+      Assert.AreEqual(new SqlBinary(TestData), sqlBinaryClass.SqlBinary);
+      Assert.AreEqual(new SqlBinary(TestData), sqlBinaryClass.NullableSqlBinary1);
+      Assert.AreEqual(null, sqlBinaryClass.NullableSqlBinary2);
+    }
+#endif
+
+    [Test]
+    public void DeserializeByteArrayClass()
+    {
+      string json = @"{
+  ""ByteArray"": ""VGhpcyBpcyBzb21lIHRlc3QgZGF0YSEhIQ=="",
+  ""NullByteArray"": null
+}";
+
+      ByteArrayClass byteArrayClass = JsonConvert.DeserializeObject<ByteArrayClass>(json, new BinaryConverter());
+
+      CollectionAssert.AreEquivalent(TestData, byteArrayClass.ByteArray);
+      Assert.AreEqual(null, byteArrayClass.NullByteArray);
+    }
+
+    [Test]
+    public void DeserializeByteArrayFromJsonArray()
+    {
+      string json = @"{
+  ""ByteArray"": [0, 1, 2, 3],
+  ""NullByteArray"": null
+}";
+
+      ByteArrayClass c = JsonConvert.DeserializeObject<ByteArrayClass>(json);
+      Assert.IsNotNull(c.ByteArray);
+      Assert.AreEqual(4, c.ByteArray.Length);
+      CollectionAssert.AreEquivalent(new byte[] { 0, 1, 2, 3 }, c.ByteArray);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/CustomCreationConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/CustomCreationConverterTests.cs
@@ -1,235 +1,235 @@
-﻿using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class CustomCreationConverterTests : TestFixtureBase
-  {
-    public interface IPerson
-    {
-      string FirstName { get; set; }
-      string LastName { get; set; }
-      DateTime BirthDate { get; set; }
-    }
-
-    public class Employee : IPerson
-    {
-      public string FirstName { get; set; }
-      public string LastName { get; set; }
-      public DateTime BirthDate { get; set; }
-
-      public string Department { get; set; }
-      public string JobTitle { get; set; }
-    }
-
-    public class PersonConverter : CustomCreationConverter<IPerson>
-    {
-      public override IPerson Create(Type objectType)
-      {
-        return new Employee();
-      }
-    }
-
-    public void DeserializeObject()
-    {
-      string json = JsonConvert.SerializeObject(new List<Employee>
-        {
-          new Employee
-            {
-              BirthDate = new DateTime(1977, 12, 30, 1, 1, 1, DateTimeKind.Utc),
-              FirstName = "Maurice",
-              LastName = "Moss",
-              Department = "IT",
-              JobTitle = "Support"
-            },
-          new Employee
-            {
-              BirthDate = new DateTime(1978, 3, 15, 1, 1, 1, DateTimeKind.Utc),
-              FirstName = "Jen",
-              LastName = "Barber",
-              Department = "IT",
-              JobTitle = "Manager"
-            }
-        }, Formatting.Indented);
-
-      //[
-      //  {
-      //    "FirstName": "Maurice",
-      //    "LastName": "Moss",
-      //    "BirthDate": "\/Date(252291661000)\/",
-      //    "Department": "IT",
-      //    "JobTitle": "Support"
-      //  },
-      //  {
-      //    "FirstName": "Jen",
-      //    "LastName": "Barber",
-      //    "BirthDate": "\/Date(258771661000)\/",
-      //    "Department": "IT",
-      //    "JobTitle": "Manager"
-      //  }
-      //]
-
-      List<IPerson> people = JsonConvert.DeserializeObject<List<IPerson>>(json, new PersonConverter());
-
-      IPerson person = people[0];
-
-      Console.WriteLine(person.GetType());
-      // Newtonsoft.Json.Tests.Employee
-
-      Console.WriteLine(person.FirstName);
-      // Maurice
-
-      Employee employee = (Employee)person;
-
-      Console.WriteLine(employee.JobTitle);
-      // Support
-    }
-
-    public class MyClass
-    {
-      public string Value { get; set; }
-
-      [JsonConverter(typeof(MyThingConverter))]
-      public IThing Thing { get; set; }
-    }
-
-    public interface IThing
-    {
-      int Number { get; }
-    }
-
-    public class MyThing : IThing
-    {
-      public int Number { get; set; }
-    }
-
-    public class MyThingConverter : CustomCreationConverter<IThing>
-    {
-      public override IThing Create(Type objectType)
-      {
-        return new MyThing();
-      }
-    }
-
-    [Test]
-    public void AssertDoesDeserialize()
-    {
-      const string json = @"{
-""Value"": ""A value"",
-""Thing"": {
-""Number"": 123
-}
-}
-";
-      MyClass myClass = JsonConvert.DeserializeObject<MyClass>(json);
-      Assert.IsNotNull(myClass);
-      Assert.AreEqual("A value", myClass.Value);
-      Assert.IsNotNull(myClass.Thing);
-      Assert.AreEqual(123, myClass.Thing.Number);
-    }
-
-    [Test]
-    public void AssertShouldSerializeTest()
-    {
-      MyClass myClass = new MyClass
-      {
-        Value = "Foo",
-        Thing = new MyThing { Number = 456, }
-      };
-      string json = JsonConvert.SerializeObject(myClass); // <-- Exception here
-
-      const string expected = @"{""Value"":""Foo"",""Thing"":{""Number"":456}}";
-      Assert.AreEqual(expected, json);
-    }
-
-    internal interface IRange<T>
-    {
-      T First { get; }
-      T Last { get; }
-    }
-
-    internal class Range<T> : IRange<T>
-    {
-      public T First { get; set; }
-      public T Last { get; set; }
-    }
-
-    internal class NullInterfaceTestClass
-    {
-      public virtual Guid Id { get; set; }
-      public virtual int? Year { get; set; }
-      public virtual string Company { get; set; }
-      public virtual IRange<decimal> DecimalRange { get; set; }
-      public virtual IRange<int> IntRange { get; set; }
-      public virtual IRange<decimal> NullDecimalRange { get; set; }
-    }
-
-    internal class DecimalRangeConverter : CustomCreationConverter<IRange<decimal>>
-    {
-      public override IRange<decimal> Create(Type objectType)
-      {
-        return new Range<decimal>();
-      }
-    }
-
-    internal class IntRangeConverter : CustomCreationConverter<IRange<int>>
-    {
-      public override IRange<int> Create(Type objectType)
-      {
-        return new Range<int>();
-      }
-    }
-
-    [Test]
-    public void DeserializeAndConvertNullValue()
-    {
-      NullInterfaceTestClass initial = new NullInterfaceTestClass
-      {
-        Company = "Company!",
-        DecimalRange = new Range<decimal> { First = 0, Last = 1 },
-        Id = new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
-        IntRange = new Range<int> { First = int.MinValue, Last = int.MaxValue },
-        Year = 2010,
-        NullDecimalRange = null
-      };
-
-      string json = JsonConvert.SerializeObject(initial, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Id"": ""00000001-0002-0003-0405-060708090a0b"",
-  ""Year"": 2010,
-  ""Company"": ""Company!"",
-  ""DecimalRange"": {
-    ""First"": 0.0,
-    ""Last"": 1.0
-  },
-  ""IntRange"": {
-    ""First"": -2147483648,
-    ""Last"": 2147483647
-  },
-  ""NullDecimalRange"": null
-}", json);
-
-      NullInterfaceTestClass deserialized = JsonConvert.DeserializeObject<NullInterfaceTestClass>(
-        json, new IntRangeConverter(), new DecimalRangeConverter());
-
-      Assert.AreEqual("Company!", deserialized.Company);
-      Assert.AreEqual(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), deserialized.Id);
-      Assert.AreEqual(0, deserialized.DecimalRange.First);
-      Assert.AreEqual(1, deserialized.DecimalRange.Last);
-      Assert.AreEqual(int.MinValue, deserialized.IntRange.First);
-      Assert.AreEqual(int.MaxValue, deserialized.IntRange.Last);
-      Assert.AreEqual(null, deserialized.NullDecimalRange);
-      Assert.AreEqual(2010, deserialized.Year);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class CustomCreationConverterTests : TestFixtureBase
+  {
+    public interface IPerson
+    {
+      string FirstName { get; set; }
+      string LastName { get; set; }
+      DateTime BirthDate { get; set; }
+    }
+
+    public class Employee : IPerson
+    {
+      public string FirstName { get; set; }
+      public string LastName { get; set; }
+      public DateTime BirthDate { get; set; }
+
+      public string Department { get; set; }
+      public string JobTitle { get; set; }
+    }
+
+    public class PersonConverter : CustomCreationConverter<IPerson>
+    {
+      public override IPerson Create(Type objectType)
+      {
+        return new Employee();
+      }
+    }
+
+    public void DeserializeObject()
+    {
+      string json = JsonConvert.SerializeObject(new List<Employee>
+        {
+          new Employee
+            {
+              BirthDate = new DateTime(1977, 12, 30, 1, 1, 1, DateTimeKind.Utc),
+              FirstName = "Maurice",
+              LastName = "Moss",
+              Department = "IT",
+              JobTitle = "Support"
+            },
+          new Employee
+            {
+              BirthDate = new DateTime(1978, 3, 15, 1, 1, 1, DateTimeKind.Utc),
+              FirstName = "Jen",
+              LastName = "Barber",
+              Department = "IT",
+              JobTitle = "Manager"
+            }
+        }, Formatting.Indented);
+
+      //[
+      //  {
+      //    "FirstName": "Maurice",
+      //    "LastName": "Moss",
+      //    "BirthDate": "\/Date(252291661000)\/",
+      //    "Department": "IT",
+      //    "JobTitle": "Support"
+      //  },
+      //  {
+      //    "FirstName": "Jen",
+      //    "LastName": "Barber",
+      //    "BirthDate": "\/Date(258771661000)\/",
+      //    "Department": "IT",
+      //    "JobTitle": "Manager"
+      //  }
+      //]
+
+      List<IPerson> people = JsonConvert.DeserializeObject<List<IPerson>>(json, new PersonConverter());
+
+      IPerson person = people[0];
+
+      Console.WriteLine(person.GetType());
+      // Newtonsoft.Json.Tests.Employee
+
+      Console.WriteLine(person.FirstName);
+      // Maurice
+
+      Employee employee = (Employee)person;
+
+      Console.WriteLine(employee.JobTitle);
+      // Support
+    }
+
+    public class MyClass
+    {
+      public string Value { get; set; }
+
+      [JsonConverter(typeof(MyThingConverter))]
+      public IThing Thing { get; set; }
+    }
+
+    public interface IThing
+    {
+      int Number { get; }
+    }
+
+    public class MyThing : IThing
+    {
+      public int Number { get; set; }
+    }
+
+    public class MyThingConverter : CustomCreationConverter<IThing>
+    {
+      public override IThing Create(Type objectType)
+      {
+        return new MyThing();
+      }
+    }
+
+    [Test]
+    public void AssertDoesDeserialize()
+    {
+      const string json = @"{
+""Value"": ""A value"",
+""Thing"": {
+""Number"": 123
+}
+}
+";
+      MyClass myClass = JsonConvert.DeserializeObject<MyClass>(json);
+      Assert.IsNotNull(myClass);
+      Assert.AreEqual("A value", myClass.Value);
+      Assert.IsNotNull(myClass.Thing);
+      Assert.AreEqual(123, myClass.Thing.Number);
+    }
+
+    [Test]
+    public void AssertShouldSerializeTest()
+    {
+      MyClass myClass = new MyClass
+      {
+        Value = "Foo",
+        Thing = new MyThing { Number = 456, }
+      };
+      string json = JsonConvert.SerializeObject(myClass); // <-- Exception here
+
+      const string expected = @"{""Value"":""Foo"",""Thing"":{""Number"":456}}";
+      Assert.AreEqual(expected, json);
+    }
+
+    internal interface IRange<T>
+    {
+      T First { get; }
+      T Last { get; }
+    }
+
+    internal class Range<T> : IRange<T>
+    {
+      public T First { get; set; }
+      public T Last { get; set; }
+    }
+
+    internal class NullInterfaceTestClass
+    {
+      public virtual Guid Id { get; set; }
+      public virtual int? Year { get; set; }
+      public virtual string Company { get; set; }
+      public virtual IRange<decimal> DecimalRange { get; set; }
+      public virtual IRange<int> IntRange { get; set; }
+      public virtual IRange<decimal> NullDecimalRange { get; set; }
+    }
+
+    internal class DecimalRangeConverter : CustomCreationConverter<IRange<decimal>>
+    {
+      public override IRange<decimal> Create(Type objectType)
+      {
+        return new Range<decimal>();
+      }
+    }
+
+    internal class IntRangeConverter : CustomCreationConverter<IRange<int>>
+    {
+      public override IRange<int> Create(Type objectType)
+      {
+        return new Range<int>();
+      }
+    }
+
+    [Test]
+    public void DeserializeAndConvertNullValue()
+    {
+      NullInterfaceTestClass initial = new NullInterfaceTestClass
+      {
+        Company = "Company!",
+        DecimalRange = new Range<decimal> { First = 0, Last = 1 },
+        Id = new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
+        IntRange = new Range<int> { First = int.MinValue, Last = int.MaxValue },
+        Year = 2010,
+        NullDecimalRange = null
+      };
+
+      string json = JsonConvert.SerializeObject(initial, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Id"": ""00000001-0002-0003-0405-060708090a0b"",
+  ""Year"": 2010,
+  ""Company"": ""Company!"",
+  ""DecimalRange"": {
+    ""First"": 0.0,
+    ""Last"": 1.0
+  },
+  ""IntRange"": {
+    ""First"": -2147483648,
+    ""Last"": 2147483647
+  },
+  ""NullDecimalRange"": null
+}", json);
+
+      NullInterfaceTestClass deserialized = JsonConvert.DeserializeObject<NullInterfaceTestClass>(
+        json, new IntRangeConverter(), new DecimalRangeConverter());
+
+      Assert.AreEqual("Company!", deserialized.Company);
+      Assert.AreEqual(new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), deserialized.Id);
+      Assert.AreEqual(0, deserialized.DecimalRange.First);
+      Assert.AreEqual(1, deserialized.DecimalRange.Last);
+      Assert.AreEqual(int.MinValue, deserialized.IntRange.First);
+      Assert.AreEqual(int.MaxValue, deserialized.IntRange.Last);
+      Assert.AreEqual(null, deserialized.NullDecimalRange);
+      Assert.AreEqual(2010, deserialized.Year);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/DataSetConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/DataSetConverterTests.cs
@@ -1,383 +1,383 @@
-﻿#if !(SILVERLIGHT || NETFX_CORE)
-using System;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-using System.Data;
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  public class DataSetConverterTests : TestFixtureBase
-  {
-    [Test]
-    public void SerializeAndDeserialize()
-    {
-      DataSet dataSet = new DataSet("dataSet");
-      dataSet.Namespace = "NetFrameWork";
-      DataTable table = new DataTable();
-      DataColumn idColumn = new DataColumn("id", typeof(int));
-      idColumn.AutoIncrement = true;
-
-      DataColumn itemColumn = new DataColumn("item");
-      table.Columns.Add(idColumn);
-      table.Columns.Add(itemColumn);
-      dataSet.Tables.Add(table);
-
-      for (int i = 0; i < 2; i++)
-      {
-        DataRow newRow = table.NewRow();
-        newRow["item"] = "item " + i;
-        table.Rows.Add(newRow);
-      }
-
-      dataSet.AcceptChanges();
-
-      string json = JsonConvert.SerializeObject(dataSet, Formatting.Indented);
-      
-      Assert.AreEqual(@"{
-  ""Table1"": [
-    {
-      ""id"": 0,
-      ""item"": ""item 0""
-    },
-    {
-      ""id"": 1,
-      ""item"": ""item 1""
-    }
-  ]
-}", json);
-
-      DataSet deserializedDataSet = JsonConvert.DeserializeObject<DataSet>(json);
-      Assert.IsNotNull(deserializedDataSet);
-
-      Assert.AreEqual(1, deserializedDataSet.Tables.Count);
-
-      DataTable dt = deserializedDataSet.Tables[0];
-
-      Assert.AreEqual("Table1", dt.TableName);
-      Assert.AreEqual(2, dt.Columns.Count);
-      Assert.AreEqual("id", dt.Columns[0].ColumnName);
-      Assert.AreEqual(typeof(long), dt.Columns[0].DataType);
-      Assert.AreEqual("item", dt.Columns[1].ColumnName);
-      Assert.AreEqual(typeof(string), dt.Columns[1].DataType);
-
-      Assert.AreEqual(2, dt.Rows.Count);
-    }
-
-    [Test]
-    public void SerializeMultiTableDataSet()
-    {
-      DataSet ds = new DataSet();
-      ds.Tables.Add(CreateDataTable("FirstTable", 2));
-      ds.Tables.Add(CreateDataTable("SecondTable", 1));
-
-      string json = JsonConvert.SerializeObject(ds, Formatting.Indented, new IsoDateTimeConverter());
-      // {
-      //   "FirstTable": [
-      //     {
-      //       "StringCol": "Item Name",
-      //       "Int32Col": 1,
-      //       "BooleanCol": true,
-      //       "TimeSpanCol": "10.22:10:15.1000000",
-      //       "DateTimeCol": "2000-12-29T00:00:00Z",
-      //       "DecimalCol": 64.0021
-      //     },
-      //     {
-      //       "StringCol": "Item Name",
-      //       "Int32Col": 2,
-      //       "BooleanCol": true,
-      //       "TimeSpanCol": "10.22:10:15.1000000",
-      //       "DateTimeCol": "2000-12-29T00:00:00Z",
-      //       "DecimalCol": 64.0021
-      //     }
-      //   ],
-      //   "SecondTable": [
-      //     {
-      //       "StringCol": "Item Name",
-      //       "Int32Col": 1,
-      //       "BooleanCol": true,
-      //       "TimeSpanCol": "10.22:10:15.1000000",
-      //       "DateTimeCol": "2000-12-29T00:00:00Z",
-      //       "DecimalCol": 64.0021
-      //     }
-      //   ]
-      // }
-
-      DataSet deserializedDs = JsonConvert.DeserializeObject<DataSet>(json, new IsoDateTimeConverter());
-
-      Assert.AreEqual(@"{
-  ""FirstTable"": [
-    {
-      ""StringCol"": ""Item Name"",
-      ""Int32Col"": 1,
-      ""BooleanCol"": true,
-      ""TimeSpanCol"": ""10.22:10:15.1000000"",
-      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""DecimalCol"": 64.0021
-    },
-    {
-      ""StringCol"": ""Item Name"",
-      ""Int32Col"": 2,
-      ""BooleanCol"": true,
-      ""TimeSpanCol"": ""10.22:10:15.1000000"",
-      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""DecimalCol"": 64.0021
-    }
-  ],
-  ""SecondTable"": [
-    {
-      ""StringCol"": ""Item Name"",
-      ""Int32Col"": 1,
-      ""BooleanCol"": true,
-      ""TimeSpanCol"": ""10.22:10:15.1000000"",
-      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""DecimalCol"": 64.0021
-    }
-  ]
-}", json);
-
-      Assert.IsNotNull(deserializedDs);
-
-    }
-
-    [Test]
-    public void DeserializeMultiTableDataSet()
-    {
-      string json = @"{
-  ""FirstTable"": [
-    {
-      ""StringCol"": ""Item Name"",
-      ""Int32Col"": 2147483647,
-      ""BooleanCol"": true,
-      ""TimeSpanCol"": ""10.22:10:15.1000000"",
-      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""DecimalCol"": 64.0021
-    }
-  ],
-  ""SecondTable"": [
-    {
-      ""StringCol"": ""Item Name"",
-      ""Int32Col"": 2147483647,
-      ""BooleanCol"": true,
-      ""TimeSpanCol"": ""10.22:10:15.1000000"",
-      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""DecimalCol"": 64.0021
-    }
-  ]
-}";
-
-      DataSet ds = JsonConvert.DeserializeObject<DataSet>(json);
-      Assert.IsNotNull(ds);
-
-      Assert.AreEqual(2, ds.Tables.Count);
-      Assert.AreEqual("FirstTable", ds.Tables[0].TableName);
-      Assert.AreEqual("SecondTable", ds.Tables[1].TableName);
-
-      DataTable dt = ds.Tables[0];
-      Assert.AreEqual("StringCol", dt.Columns[0].ColumnName);
-      Assert.AreEqual(typeof(string), dt.Columns[0].DataType);
-      Assert.AreEqual("Int32Col", dt.Columns[1].ColumnName);
-      Assert.AreEqual(typeof(long), dt.Columns[1].DataType);
-      Assert.AreEqual("BooleanCol", dt.Columns[2].ColumnName);
-      Assert.AreEqual(typeof(bool), dt.Columns[2].DataType);
-      Assert.AreEqual("TimeSpanCol", dt.Columns[3].ColumnName);
-      Assert.AreEqual(typeof(string), dt.Columns[3].DataType);
-      Assert.AreEqual("DateTimeCol", dt.Columns[4].ColumnName);
-      Assert.AreEqual(typeof(DateTime), dt.Columns[4].DataType);
-      Assert.AreEqual("DecimalCol", dt.Columns[5].ColumnName);
-      Assert.AreEqual(typeof(double), dt.Columns[5].DataType);
-
-      Assert.AreEqual(1, ds.Tables[0].Rows.Count);
-      Assert.AreEqual(1, ds.Tables[1].Rows.Count);
-    }
-
-    private DataTable CreateDataTable(string dataTableName, int rows)
-    {
-      // create a new DataTable.
-      DataTable myTable = new DataTable(dataTableName);
-
-      // create DataColumn objects of data types.
-      DataColumn colString = new DataColumn("StringCol");
-      colString.DataType = typeof(string);
-      myTable.Columns.Add(colString);
-
-      DataColumn colInt32 = new DataColumn("Int32Col");
-      colInt32.DataType = typeof(int);
-      myTable.Columns.Add(colInt32);
-
-      DataColumn colBoolean = new DataColumn("BooleanCol");
-      colBoolean.DataType = typeof(bool);
-      myTable.Columns.Add(colBoolean);
-
-      DataColumn colTimeSpan = new DataColumn("TimeSpanCol");
-      colTimeSpan.DataType = typeof(TimeSpan);
-      myTable.Columns.Add(colTimeSpan);
-
-      DataColumn colDateTime = new DataColumn("DateTimeCol");
-      colDateTime.DataType = typeof(DateTime);
-      colDateTime.DateTimeMode = DataSetDateTime.Utc;
-      myTable.Columns.Add(colDateTime);
-
-      DataColumn colDecimal = new DataColumn("DecimalCol");
-      colDecimal.DataType = typeof(decimal);
-      myTable.Columns.Add(colDecimal);
-
-      for (int i = 1; i <= rows; i++)
-      {
-        DataRow myNewRow = myTable.NewRow();
-
-        myNewRow["StringCol"] = "Item Name";
-        myNewRow["Int32Col"] = i;
-        myNewRow["BooleanCol"] = true;
-        myNewRow["TimeSpanCol"] = new TimeSpan(10, 22, 10, 15, 100);
-        myNewRow["DateTimeCol"] = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc);
-        myNewRow["DecimalCol"] = 64.0021;
-        myTable.Rows.Add(myNewRow);
-      }
-
-      return myTable;
-    }
-
-    public class DataSetAndTableTestClass
-    {
-      public string Before { get; set; }
-      public DataSet Set { get; set; }
-      public string Middle { get; set; }
-      public DataTable Table { get; set; }
-      public string After { get; set; }
-    }
-
-    [Test]
-    public void SerializeWithCamelCaseResolver()
-    {
-      DataSet ds = new DataSet();
-      ds.Tables.Add(CreateDataTable("FirstTable", 2));
-      ds.Tables.Add(CreateDataTable("SecondTable", 1));
-
-      string json = JsonConvert.SerializeObject(ds, Formatting.Indented, new JsonSerializerSettings
-        {
-          ContractResolver = new CamelCasePropertyNamesContractResolver()
-        });
-
-      Assert.AreEqual(@"{
-  ""firstTable"": [
-    {
-      ""stringCol"": ""Item Name"",
-      ""int32Col"": 1,
-      ""booleanCol"": true,
-      ""timeSpanCol"": ""10.22:10:15.1000000"",
-      ""dateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""decimalCol"": 64.0021
-    },
-    {
-      ""stringCol"": ""Item Name"",
-      ""int32Col"": 2,
-      ""booleanCol"": true,
-      ""timeSpanCol"": ""10.22:10:15.1000000"",
-      ""dateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""decimalCol"": 64.0021
-    }
-  ],
-  ""secondTable"": [
-    {
-      ""stringCol"": ""Item Name"",
-      ""int32Col"": 1,
-      ""booleanCol"": true,
-      ""timeSpanCol"": ""10.22:10:15.1000000"",
-      ""dateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""decimalCol"": 64.0021
-    }
-  ]
-}", json);
-    }
-
-    [Test]
-    public void SerializeDataSetProperty()
-    {
-      DataSet ds = new DataSet();
-      ds.Tables.Add(CreateDataTable("FirstTable", 2));
-      ds.Tables.Add(CreateDataTable("SecondTable", 1));
-
-      DataSetAndTableTestClass c = new DataSetAndTableTestClass
-        {
-          Before = "Before",
-          Set = ds,
-          Middle = "Middle",
-          Table = CreateDataTable("LoneTable", 2),
-          After = "After"
-        };
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented, new IsoDateTimeConverter());
-
-      Assert.AreEqual(@"{
-  ""Before"": ""Before"",
-  ""Set"": {
-    ""FirstTable"": [
-      {
-        ""StringCol"": ""Item Name"",
-        ""Int32Col"": 1,
-        ""BooleanCol"": true,
-        ""TimeSpanCol"": ""10.22:10:15.1000000"",
-        ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-        ""DecimalCol"": 64.0021
-      },
-      {
-        ""StringCol"": ""Item Name"",
-        ""Int32Col"": 2,
-        ""BooleanCol"": true,
-        ""TimeSpanCol"": ""10.22:10:15.1000000"",
-        ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-        ""DecimalCol"": 64.0021
-      }
-    ],
-    ""SecondTable"": [
-      {
-        ""StringCol"": ""Item Name"",
-        ""Int32Col"": 1,
-        ""BooleanCol"": true,
-        ""TimeSpanCol"": ""10.22:10:15.1000000"",
-        ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-        ""DecimalCol"": 64.0021
-      }
-    ]
-  },
-  ""Middle"": ""Middle"",
-  ""Table"": [
-    {
-      ""StringCol"": ""Item Name"",
-      ""Int32Col"": 1,
-      ""BooleanCol"": true,
-      ""TimeSpanCol"": ""10.22:10:15.1000000"",
-      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""DecimalCol"": 64.0021
-    },
-    {
-      ""StringCol"": ""Item Name"",
-      ""Int32Col"": 2,
-      ""BooleanCol"": true,
-      ""TimeSpanCol"": ""10.22:10:15.1000000"",
-      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-      ""DecimalCol"": 64.0021
-    }
-  ],
-  ""After"": ""After""
-}", json);
-
-      DataSetAndTableTestClass c2 = JsonConvert.DeserializeObject<DataSetAndTableTestClass>(json, new IsoDateTimeConverter());
-
-      Assert.AreEqual(c.Before, c2.Before);
-      Assert.AreEqual(c.Set.Tables.Count, c2.Set.Tables.Count);
-      Assert.AreEqual(c.Middle, c2.Middle);
-      Assert.AreEqual(c.Table.Rows.Count, c2.Table.Rows.Count);
-      Assert.AreEqual(c.After, c2.After);
-    }
-  }
-}
+﻿#if !(SILVERLIGHT || NETFX_CORE)
+using System;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+using System.Data;
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  public class DataSetConverterTests : TestFixtureBase
+  {
+    [Test]
+    public void SerializeAndDeserialize()
+    {
+      DataSet dataSet = new DataSet("dataSet");
+      dataSet.Namespace = "NetFrameWork";
+      DataTable table = new DataTable();
+      DataColumn idColumn = new DataColumn("id", typeof(int));
+      idColumn.AutoIncrement = true;
+
+      DataColumn itemColumn = new DataColumn("item");
+      table.Columns.Add(idColumn);
+      table.Columns.Add(itemColumn);
+      dataSet.Tables.Add(table);
+
+      for (int i = 0; i < 2; i++)
+      {
+        DataRow newRow = table.NewRow();
+        newRow["item"] = "item " + i;
+        table.Rows.Add(newRow);
+      }
+
+      dataSet.AcceptChanges();
+
+      string json = JsonConvert.SerializeObject(dataSet, Formatting.Indented);
+      
+      Assert.AreEqual(@"{
+  ""Table1"": [
+    {
+      ""id"": 0,
+      ""item"": ""item 0""
+    },
+    {
+      ""id"": 1,
+      ""item"": ""item 1""
+    }
+  ]
+}", json);
+
+      DataSet deserializedDataSet = JsonConvert.DeserializeObject<DataSet>(json);
+      Assert.IsNotNull(deserializedDataSet);
+
+      Assert.AreEqual(1, deserializedDataSet.Tables.Count);
+
+      DataTable dt = deserializedDataSet.Tables[0];
+
+      Assert.AreEqual("Table1", dt.TableName);
+      Assert.AreEqual(2, dt.Columns.Count);
+      Assert.AreEqual("id", dt.Columns[0].ColumnName);
+      Assert.AreEqual(typeof(long), dt.Columns[0].DataType);
+      Assert.AreEqual("item", dt.Columns[1].ColumnName);
+      Assert.AreEqual(typeof(string), dt.Columns[1].DataType);
+
+      Assert.AreEqual(2, dt.Rows.Count);
+    }
+
+    [Test]
+    public void SerializeMultiTableDataSet()
+    {
+      DataSet ds = new DataSet();
+      ds.Tables.Add(CreateDataTable("FirstTable", 2));
+      ds.Tables.Add(CreateDataTable("SecondTable", 1));
+
+      string json = JsonConvert.SerializeObject(ds, Formatting.Indented, new IsoDateTimeConverter());
+      // {
+      //   "FirstTable": [
+      //     {
+      //       "StringCol": "Item Name",
+      //       "Int32Col": 1,
+      //       "BooleanCol": true,
+      //       "TimeSpanCol": "10.22:10:15.1000000",
+      //       "DateTimeCol": "2000-12-29T00:00:00Z",
+      //       "DecimalCol": 64.0021
+      //     },
+      //     {
+      //       "StringCol": "Item Name",
+      //       "Int32Col": 2,
+      //       "BooleanCol": true,
+      //       "TimeSpanCol": "10.22:10:15.1000000",
+      //       "DateTimeCol": "2000-12-29T00:00:00Z",
+      //       "DecimalCol": 64.0021
+      //     }
+      //   ],
+      //   "SecondTable": [
+      //     {
+      //       "StringCol": "Item Name",
+      //       "Int32Col": 1,
+      //       "BooleanCol": true,
+      //       "TimeSpanCol": "10.22:10:15.1000000",
+      //       "DateTimeCol": "2000-12-29T00:00:00Z",
+      //       "DecimalCol": 64.0021
+      //     }
+      //   ]
+      // }
+
+      DataSet deserializedDs = JsonConvert.DeserializeObject<DataSet>(json, new IsoDateTimeConverter());
+
+      Assert.AreEqual(@"{
+  ""FirstTable"": [
+    {
+      ""StringCol"": ""Item Name"",
+      ""Int32Col"": 1,
+      ""BooleanCol"": true,
+      ""TimeSpanCol"": ""10.22:10:15.1000000"",
+      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""DecimalCol"": 64.0021
+    },
+    {
+      ""StringCol"": ""Item Name"",
+      ""Int32Col"": 2,
+      ""BooleanCol"": true,
+      ""TimeSpanCol"": ""10.22:10:15.1000000"",
+      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""DecimalCol"": 64.0021
+    }
+  ],
+  ""SecondTable"": [
+    {
+      ""StringCol"": ""Item Name"",
+      ""Int32Col"": 1,
+      ""BooleanCol"": true,
+      ""TimeSpanCol"": ""10.22:10:15.1000000"",
+      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""DecimalCol"": 64.0021
+    }
+  ]
+}", json);
+
+      Assert.IsNotNull(deserializedDs);
+
+    }
+
+    [Test]
+    public void DeserializeMultiTableDataSet()
+    {
+      string json = @"{
+  ""FirstTable"": [
+    {
+      ""StringCol"": ""Item Name"",
+      ""Int32Col"": 2147483647,
+      ""BooleanCol"": true,
+      ""TimeSpanCol"": ""10.22:10:15.1000000"",
+      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""DecimalCol"": 64.0021
+    }
+  ],
+  ""SecondTable"": [
+    {
+      ""StringCol"": ""Item Name"",
+      ""Int32Col"": 2147483647,
+      ""BooleanCol"": true,
+      ""TimeSpanCol"": ""10.22:10:15.1000000"",
+      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""DecimalCol"": 64.0021
+    }
+  ]
+}";
+
+      DataSet ds = JsonConvert.DeserializeObject<DataSet>(json);
+      Assert.IsNotNull(ds);
+
+      Assert.AreEqual(2, ds.Tables.Count);
+      Assert.AreEqual("FirstTable", ds.Tables[0].TableName);
+      Assert.AreEqual("SecondTable", ds.Tables[1].TableName);
+
+      DataTable dt = ds.Tables[0];
+      Assert.AreEqual("StringCol", dt.Columns[0].ColumnName);
+      Assert.AreEqual(typeof(string), dt.Columns[0].DataType);
+      Assert.AreEqual("Int32Col", dt.Columns[1].ColumnName);
+      Assert.AreEqual(typeof(long), dt.Columns[1].DataType);
+      Assert.AreEqual("BooleanCol", dt.Columns[2].ColumnName);
+      Assert.AreEqual(typeof(bool), dt.Columns[2].DataType);
+      Assert.AreEqual("TimeSpanCol", dt.Columns[3].ColumnName);
+      Assert.AreEqual(typeof(string), dt.Columns[3].DataType);
+      Assert.AreEqual("DateTimeCol", dt.Columns[4].ColumnName);
+      Assert.AreEqual(typeof(DateTime), dt.Columns[4].DataType);
+      Assert.AreEqual("DecimalCol", dt.Columns[5].ColumnName);
+      Assert.AreEqual(typeof(double), dt.Columns[5].DataType);
+
+      Assert.AreEqual(1, ds.Tables[0].Rows.Count);
+      Assert.AreEqual(1, ds.Tables[1].Rows.Count);
+    }
+
+    private DataTable CreateDataTable(string dataTableName, int rows)
+    {
+      // create a new DataTable.
+      DataTable myTable = new DataTable(dataTableName);
+
+      // create DataColumn objects of data types.
+      DataColumn colString = new DataColumn("StringCol");
+      colString.DataType = typeof(string);
+      myTable.Columns.Add(colString);
+
+      DataColumn colInt32 = new DataColumn("Int32Col");
+      colInt32.DataType = typeof(int);
+      myTable.Columns.Add(colInt32);
+
+      DataColumn colBoolean = new DataColumn("BooleanCol");
+      colBoolean.DataType = typeof(bool);
+      myTable.Columns.Add(colBoolean);
+
+      DataColumn colTimeSpan = new DataColumn("TimeSpanCol");
+      colTimeSpan.DataType = typeof(TimeSpan);
+      myTable.Columns.Add(colTimeSpan);
+
+      DataColumn colDateTime = new DataColumn("DateTimeCol");
+      colDateTime.DataType = typeof(DateTime);
+      colDateTime.DateTimeMode = DataSetDateTime.Utc;
+      myTable.Columns.Add(colDateTime);
+
+      DataColumn colDecimal = new DataColumn("DecimalCol");
+      colDecimal.DataType = typeof(decimal);
+      myTable.Columns.Add(colDecimal);
+
+      for (int i = 1; i <= rows; i++)
+      {
+        DataRow myNewRow = myTable.NewRow();
+
+        myNewRow["StringCol"] = "Item Name";
+        myNewRow["Int32Col"] = i;
+        myNewRow["BooleanCol"] = true;
+        myNewRow["TimeSpanCol"] = new TimeSpan(10, 22, 10, 15, 100);
+        myNewRow["DateTimeCol"] = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc);
+        myNewRow["DecimalCol"] = 64.0021;
+        myTable.Rows.Add(myNewRow);
+      }
+
+      return myTable;
+    }
+
+    public class DataSetAndTableTestClass
+    {
+      public string Before { get; set; }
+      public DataSet Set { get; set; }
+      public string Middle { get; set; }
+      public DataTable Table { get; set; }
+      public string After { get; set; }
+    }
+
+    [Test]
+    public void SerializeWithCamelCaseResolver()
+    {
+      DataSet ds = new DataSet();
+      ds.Tables.Add(CreateDataTable("FirstTable", 2));
+      ds.Tables.Add(CreateDataTable("SecondTable", 1));
+
+      string json = JsonConvert.SerializeObject(ds, Formatting.Indented, new JsonSerializerSettings
+        {
+          ContractResolver = new CamelCasePropertyNamesContractResolver()
+        });
+
+      Assert.AreEqual(@"{
+  ""firstTable"": [
+    {
+      ""stringCol"": ""Item Name"",
+      ""int32Col"": 1,
+      ""booleanCol"": true,
+      ""timeSpanCol"": ""10.22:10:15.1000000"",
+      ""dateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""decimalCol"": 64.0021
+    },
+    {
+      ""stringCol"": ""Item Name"",
+      ""int32Col"": 2,
+      ""booleanCol"": true,
+      ""timeSpanCol"": ""10.22:10:15.1000000"",
+      ""dateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""decimalCol"": 64.0021
+    }
+  ],
+  ""secondTable"": [
+    {
+      ""stringCol"": ""Item Name"",
+      ""int32Col"": 1,
+      ""booleanCol"": true,
+      ""timeSpanCol"": ""10.22:10:15.1000000"",
+      ""dateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""decimalCol"": 64.0021
+    }
+  ]
+}", json);
+    }
+
+    [Test]
+    public void SerializeDataSetProperty()
+    {
+      DataSet ds = new DataSet();
+      ds.Tables.Add(CreateDataTable("FirstTable", 2));
+      ds.Tables.Add(CreateDataTable("SecondTable", 1));
+
+      DataSetAndTableTestClass c = new DataSetAndTableTestClass
+        {
+          Before = "Before",
+          Set = ds,
+          Middle = "Middle",
+          Table = CreateDataTable("LoneTable", 2),
+          After = "After"
+        };
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented, new IsoDateTimeConverter());
+
+      Assert.AreEqual(@"{
+  ""Before"": ""Before"",
+  ""Set"": {
+    ""FirstTable"": [
+      {
+        ""StringCol"": ""Item Name"",
+        ""Int32Col"": 1,
+        ""BooleanCol"": true,
+        ""TimeSpanCol"": ""10.22:10:15.1000000"",
+        ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+        ""DecimalCol"": 64.0021
+      },
+      {
+        ""StringCol"": ""Item Name"",
+        ""Int32Col"": 2,
+        ""BooleanCol"": true,
+        ""TimeSpanCol"": ""10.22:10:15.1000000"",
+        ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+        ""DecimalCol"": 64.0021
+      }
+    ],
+    ""SecondTable"": [
+      {
+        ""StringCol"": ""Item Name"",
+        ""Int32Col"": 1,
+        ""BooleanCol"": true,
+        ""TimeSpanCol"": ""10.22:10:15.1000000"",
+        ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+        ""DecimalCol"": 64.0021
+      }
+    ]
+  },
+  ""Middle"": ""Middle"",
+  ""Table"": [
+    {
+      ""StringCol"": ""Item Name"",
+      ""Int32Col"": 1,
+      ""BooleanCol"": true,
+      ""TimeSpanCol"": ""10.22:10:15.1000000"",
+      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""DecimalCol"": 64.0021
+    },
+    {
+      ""StringCol"": ""Item Name"",
+      ""Int32Col"": 2,
+      ""BooleanCol"": true,
+      ""TimeSpanCol"": ""10.22:10:15.1000000"",
+      ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+      ""DecimalCol"": 64.0021
+    }
+  ],
+  ""After"": ""After""
+}", json);
+
+      DataSetAndTableTestClass c2 = JsonConvert.DeserializeObject<DataSetAndTableTestClass>(json, new IsoDateTimeConverter());
+
+      Assert.AreEqual(c.Before, c2.Before);
+      Assert.AreEqual(c.Set.Tables.Count, c2.Set.Tables.Count);
+      Assert.AreEqual(c.Middle, c2.Middle);
+      Assert.AreEqual(c.Table.Rows.Count, c2.Table.Rows.Count);
+      Assert.AreEqual(c.After, c2.After);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs
@@ -1,213 +1,213 @@
-﻿#if !(SILVERLIGHT || NETFX_CORE)
-using System;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-#if !NETFX_CORE
-using System.Data;
-#endif
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  public class DataTableConverterTests : TestFixtureBase
-  {
-    [Test]
-    public void Deserialize()
-    {
-      string json = @"[
-  {
-    ""id"": 0,
-    ""item"": ""item 0""
-  },
-  {
-    ""id"": 1,
-    ""item"": ""item 1""
-  }
-]";
-
-      DataTable deserializedDataTable = JsonConvert.DeserializeObject<DataTable>(json);
-      Assert.IsNotNull(deserializedDataTable);
-
-      Assert.AreEqual(string.Empty, deserializedDataTable.TableName);
-      Assert.AreEqual(2, deserializedDataTable.Columns.Count);
-      Assert.AreEqual("id", deserializedDataTable.Columns[0].ColumnName);
-      Assert.AreEqual(typeof(long), deserializedDataTable.Columns[0].DataType);
-      Assert.AreEqual("item", deserializedDataTable.Columns[1].ColumnName);
-      Assert.AreEqual(typeof(string), deserializedDataTable.Columns[1].DataType);
-
-      Assert.AreEqual(2, deserializedDataTable.Rows.Count);
-
-      DataRow dr1 = deserializedDataTable.Rows[0];
-      Assert.AreEqual(0, dr1["id"]);
-      Assert.AreEqual("item 0", dr1["item"]);
-
-      DataRow dr2 = deserializedDataTable.Rows[1];
-      Assert.AreEqual(1, dr2["id"]);
-      Assert.AreEqual("item 1", dr2["item"]);
-    }
-
-    [Test]
-    public void Serialize()
-    {
-      // create a new DataTable.
-      DataTable myTable = new DataTable("blah");
-
-      // create DataColumn objects of data types.
-      DataColumn colString = new DataColumn("StringCol");
-      colString.DataType = typeof(string);
-      myTable.Columns.Add(colString);
-
-      DataColumn colInt32 = new DataColumn("Int32Col");
-      colInt32.DataType = typeof(int);
-      myTable.Columns.Add(colInt32);
-
-      DataColumn colBoolean = new DataColumn("BooleanCol");
-      colBoolean.DataType = typeof(bool);
-      myTable.Columns.Add(colBoolean);
-
-      DataColumn colTimeSpan = new DataColumn("TimeSpanCol");
-      colTimeSpan.DataType = typeof(TimeSpan);
-      myTable.Columns.Add(colTimeSpan);
-
-      DataColumn colDateTime = new DataColumn("DateTimeCol");
-      colDateTime.DataType = typeof(DateTime);
-      colDateTime.DateTimeMode = DataSetDateTime.Utc;
-      myTable.Columns.Add(colDateTime);
-
-      DataColumn colDecimal = new DataColumn("DecimalCol");
-      colDecimal.DataType = typeof(decimal);
-      myTable.Columns.Add(colDecimal);
-
-      // populate one row with values.
-      DataRow myNewRow = myTable.NewRow();
-
-      myNewRow["StringCol"] = "Item Name";
-      myNewRow["Int32Col"] = 2147483647;
-      myNewRow["BooleanCol"] = true;
-      myNewRow["TimeSpanCol"] = new TimeSpan(10, 22, 10, 15, 100);
-      myNewRow["DateTimeCol"] = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc);
-      myNewRow["DecimalCol"] = 64.0021;
-      myTable.Rows.Add(myNewRow);
-
-      string json = JsonConvert.SerializeObject(myTable, Formatting.Indented);
-      Assert.AreEqual(@"[
-  {
-    ""StringCol"": ""Item Name"",
-    ""Int32Col"": 2147483647,
-    ""BooleanCol"": true,
-    ""TimeSpanCol"": ""10.22:10:15.1000000"",
-    ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
-    ""DecimalCol"": 64.0021
-  }
-]", json);
-    }
-
-    public class TestDataTableConverter : JsonConverter
-    {
-      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-      {
-        DataTable d = (DataTable)value;
-        writer.WriteValue(d.TableName);
-      }
-
-      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-      {
-        //reader.Read();
-        DataTable d = new DataTable((string)reader.Value);
-
-        return d;
-      }
-
-      public override bool CanConvert(Type objectType)
-      {
-        return (objectType == typeof(DataTable));
-      }
-    }
-
-    [Test]
-    public void PassedInJsonConverterOverridesInternalConverter()
-    {
-      DataTable t1 = new DataTable("Custom");
-
-      string json = JsonConvert.SerializeObject(t1, Formatting.Indented, new TestDataTableConverter());
-      Assert.AreEqual(@"""Custom""", json);
-
-      DataTable t2 = JsonConvert.DeserializeObject<DataTable>(json, new TestDataTableConverter());
-      Assert.AreEqual(t1.TableName, t2.TableName);
-    }
-
-    [Test]
-    public void SerializeDataTableWithNull()
-    {
-      var table = new DataTable();
-      table.Columns.Add("item");
-      table.Columns.Add("price", typeof(double));
-      table.Rows.Add("shirt", 49.99);
-      table.Rows.Add("pants", 54.99);
-      table.Rows.Add("shoes"); // no price
-
-      var json = JsonConvert.SerializeObject(table);
-      Assert.AreEqual(@"["
-      + @"{""item"":""shirt"",""price"":49.99},"
-      + @"{""item"":""pants"",""price"":54.99},"
-      + @"{""item"":""shoes"",""price"":null}]", json);
-    }
-
-    [Test]
-    public void SerializeDataTableWithNullAndIgnoreNullHandling()
-    {
-      var table = new DataTable();
-      table.Columns.Add("item");
-      table.Columns.Add("price", typeof(double));
-      table.Rows.Add("shirt", 49.99);
-      table.Rows.Add("pants", 54.99);
-      table.Rows.Add("shoes"); // no price
-
-      var json = JsonConvert.SerializeObject(table, Formatting.None, new JsonSerializerSettings
-        {
-          NullValueHandling = NullValueHandling.Ignore
-        });
-      Assert.AreEqual(@"["
-      + @"{""item"":""shirt"",""price"":49.99},"
-      + @"{""item"":""pants"",""price"":54.99},"
-      + @"{""item"":""shoes""}]", json);
-    }
-
-    [Test]
-    public void DerializeDataTableWithImplicitNull()
-    {
-      const string json = @"["
-      + @"{""item"":""shirt"",""price"":49.99},"
-      + @"{""item"":""pants"",""price"":54.99},"
-      + @"{""item"":""shoes""}]";
-      var table = JsonConvert.DeserializeObject<DataTable>(json);
-      Assert.AreEqual("shirt", table.Rows[0]["item"]);
-      Assert.AreEqual("pants", table.Rows[1]["item"]);
-      Assert.AreEqual("shoes", table.Rows[2]["item"]);
-      Assert.AreEqual(49.99, (double)table.Rows[0]["price"], 0.01);
-      Assert.AreEqual(54.99, (double)table.Rows[1]["price"], 0.01);
-      Assert.IsInstanceOfType(typeof(System.DBNull), table.Rows[2]["price"]);
-    }
-
-    [Test]
-    public void DerializeDataTableWithExplicitNull()
-    {
-      const string json = @"["
-      + @"{""item"":""shirt"",""price"":49.99},"
-      + @"{""item"":""pants"",""price"":54.99},"
-      + @"{""item"":""shoes"",""price"":null}]";
-      var table = JsonConvert.DeserializeObject<DataTable>(json);
-      Assert.AreEqual("shirt", table.Rows[0]["item"]);
-      Assert.AreEqual("pants", table.Rows[1]["item"]);
-      Assert.AreEqual("shoes", table.Rows[2]["item"]);
-      Assert.AreEqual(49.99, (double)table.Rows[0]["price"], 0.01);
-      Assert.AreEqual(54.99, (double)table.Rows[1]["price"], 0.01);
-      Assert.IsInstanceOfType(typeof(System.DBNull), table.Rows[2]["price"]);
-    }
-  }
-}
+﻿#if !(SILVERLIGHT || NETFX_CORE)
+using System;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+#if !NETFX_CORE
+using System.Data;
+#endif
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  public class DataTableConverterTests : TestFixtureBase
+  {
+    [Test]
+    public void Deserialize()
+    {
+      string json = @"[
+  {
+    ""id"": 0,
+    ""item"": ""item 0""
+  },
+  {
+    ""id"": 1,
+    ""item"": ""item 1""
+  }
+]";
+
+      DataTable deserializedDataTable = JsonConvert.DeserializeObject<DataTable>(json);
+      Assert.IsNotNull(deserializedDataTable);
+
+      Assert.AreEqual(string.Empty, deserializedDataTable.TableName);
+      Assert.AreEqual(2, deserializedDataTable.Columns.Count);
+      Assert.AreEqual("id", deserializedDataTable.Columns[0].ColumnName);
+      Assert.AreEqual(typeof(long), deserializedDataTable.Columns[0].DataType);
+      Assert.AreEqual("item", deserializedDataTable.Columns[1].ColumnName);
+      Assert.AreEqual(typeof(string), deserializedDataTable.Columns[1].DataType);
+
+      Assert.AreEqual(2, deserializedDataTable.Rows.Count);
+
+      DataRow dr1 = deserializedDataTable.Rows[0];
+      Assert.AreEqual(0, dr1["id"]);
+      Assert.AreEqual("item 0", dr1["item"]);
+
+      DataRow dr2 = deserializedDataTable.Rows[1];
+      Assert.AreEqual(1, dr2["id"]);
+      Assert.AreEqual("item 1", dr2["item"]);
+    }
+
+    [Test]
+    public void Serialize()
+    {
+      // create a new DataTable.
+      DataTable myTable = new DataTable("blah");
+
+      // create DataColumn objects of data types.
+      DataColumn colString = new DataColumn("StringCol");
+      colString.DataType = typeof(string);
+      myTable.Columns.Add(colString);
+
+      DataColumn colInt32 = new DataColumn("Int32Col");
+      colInt32.DataType = typeof(int);
+      myTable.Columns.Add(colInt32);
+
+      DataColumn colBoolean = new DataColumn("BooleanCol");
+      colBoolean.DataType = typeof(bool);
+      myTable.Columns.Add(colBoolean);
+
+      DataColumn colTimeSpan = new DataColumn("TimeSpanCol");
+      colTimeSpan.DataType = typeof(TimeSpan);
+      myTable.Columns.Add(colTimeSpan);
+
+      DataColumn colDateTime = new DataColumn("DateTimeCol");
+      colDateTime.DataType = typeof(DateTime);
+      colDateTime.DateTimeMode = DataSetDateTime.Utc;
+      myTable.Columns.Add(colDateTime);
+
+      DataColumn colDecimal = new DataColumn("DecimalCol");
+      colDecimal.DataType = typeof(decimal);
+      myTable.Columns.Add(colDecimal);
+
+      // populate one row with values.
+      DataRow myNewRow = myTable.NewRow();
+
+      myNewRow["StringCol"] = "Item Name";
+      myNewRow["Int32Col"] = 2147483647;
+      myNewRow["BooleanCol"] = true;
+      myNewRow["TimeSpanCol"] = new TimeSpan(10, 22, 10, 15, 100);
+      myNewRow["DateTimeCol"] = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc);
+      myNewRow["DecimalCol"] = 64.0021;
+      myTable.Rows.Add(myNewRow);
+
+      string json = JsonConvert.SerializeObject(myTable, Formatting.Indented);
+      Assert.AreEqual(@"[
+  {
+    ""StringCol"": ""Item Name"",
+    ""Int32Col"": 2147483647,
+    ""BooleanCol"": true,
+    ""TimeSpanCol"": ""10.22:10:15.1000000"",
+    ""DateTimeCol"": ""2000-12-29T00:00:00Z"",
+    ""DecimalCol"": 64.0021
+  }
+]", json);
+    }
+
+    public class TestDataTableConverter : JsonConverter
+    {
+      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+      {
+        DataTable d = (DataTable)value;
+        writer.WriteValue(d.TableName);
+      }
+
+      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+      {
+        //reader.Read();
+        DataTable d = new DataTable((string)reader.Value);
+
+        return d;
+      }
+
+      public override bool CanConvert(Type objectType)
+      {
+        return (objectType == typeof(DataTable));
+      }
+    }
+
+    [Test]
+    public void PassedInJsonConverterOverridesInternalConverter()
+    {
+      DataTable t1 = new DataTable("Custom");
+
+      string json = JsonConvert.SerializeObject(t1, Formatting.Indented, new TestDataTableConverter());
+      Assert.AreEqual(@"""Custom""", json);
+
+      DataTable t2 = JsonConvert.DeserializeObject<DataTable>(json, new TestDataTableConverter());
+      Assert.AreEqual(t1.TableName, t2.TableName);
+    }
+
+    [Test]
+    public void SerializeDataTableWithNull()
+    {
+      var table = new DataTable();
+      table.Columns.Add("item");
+      table.Columns.Add("price", typeof(double));
+      table.Rows.Add("shirt", 49.99);
+      table.Rows.Add("pants", 54.99);
+      table.Rows.Add("shoes"); // no price
+
+      var json = JsonConvert.SerializeObject(table);
+      Assert.AreEqual(@"["
+      + @"{""item"":""shirt"",""price"":49.99},"
+      + @"{""item"":""pants"",""price"":54.99},"
+      + @"{""item"":""shoes"",""price"":null}]", json);
+    }
+
+    [Test]
+    public void SerializeDataTableWithNullAndIgnoreNullHandling()
+    {
+      var table = new DataTable();
+      table.Columns.Add("item");
+      table.Columns.Add("price", typeof(double));
+      table.Rows.Add("shirt", 49.99);
+      table.Rows.Add("pants", 54.99);
+      table.Rows.Add("shoes"); // no price
+
+      var json = JsonConvert.SerializeObject(table, Formatting.None, new JsonSerializerSettings
+        {
+          NullValueHandling = NullValueHandling.Ignore
+        });
+      Assert.AreEqual(@"["
+      + @"{""item"":""shirt"",""price"":49.99},"
+      + @"{""item"":""pants"",""price"":54.99},"
+      + @"{""item"":""shoes""}]", json);
+    }
+
+    [Test]
+    public void DerializeDataTableWithImplicitNull()
+    {
+      const string json = @"["
+      + @"{""item"":""shirt"",""price"":49.99},"
+      + @"{""item"":""pants"",""price"":54.99},"
+      + @"{""item"":""shoes""}]";
+      var table = JsonConvert.DeserializeObject<DataTable>(json);
+      Assert.AreEqual("shirt", table.Rows[0]["item"]);
+      Assert.AreEqual("pants", table.Rows[1]["item"]);
+      Assert.AreEqual("shoes", table.Rows[2]["item"]);
+      Assert.AreEqual(49.99, (double)table.Rows[0]["price"], 0.01);
+      Assert.AreEqual(54.99, (double)table.Rows[1]["price"], 0.01);
+      Assert.IsInstanceOfType(typeof(System.DBNull), table.Rows[2]["price"]);
+    }
+
+    [Test]
+    public void DerializeDataTableWithExplicitNull()
+    {
+      const string json = @"["
+      + @"{""item"":""shirt"",""price"":49.99},"
+      + @"{""item"":""pants"",""price"":54.99},"
+      + @"{""item"":""shoes"",""price"":null}]";
+      var table = JsonConvert.DeserializeObject<DataTable>(json);
+      Assert.AreEqual("shirt", table.Rows[0]["item"]);
+      Assert.AreEqual("pants", table.Rows[1]["item"]);
+      Assert.AreEqual("shoes", table.Rows[2]["item"]);
+      Assert.AreEqual(49.99, (double)table.Rows[0]["price"], 0.01);
+      Assert.AreEqual(54.99, (double)table.Rows[1]["price"], 0.01);
+      Assert.IsInstanceOfType(typeof(System.DBNull), table.Rows[2]["price"]);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/ExpandoObjectConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/ExpandoObjectConverterTests.cs
@@ -1,165 +1,165 @@
-﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
-
-using System;
-using System.Collections.Generic;
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-using System.Data.Linq;
-#endif
-#if !SILVERLIGHT && !NETFX_CORE
-using System.Data.SqlTypes;
-#endif
-using System.Dynamic;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class ExpandoObjectConverterTests : TestFixtureBase
-  {
-    public class ExpandoContainer
-    {
-      public string Before { get; set; }
-      public ExpandoObject Expando { get; set; }
-      public string After { get; set; }
-    }
-
-    [Test]
-    public void SerializeExpandoObject()
-    {
-      ExpandoContainer d = new ExpandoContainer
-        {
-          Before = "Before!",
-          Expando = new ExpandoObject(),
-          After = "After!"
-        };
-
-      dynamic o = d.Expando;
-
-      o.String = "String!";
-      o.Integer = 234;
-      o.Float = 1.23d;
-      o.List = new List<string> {"First", "Second", "Third"};
-      o.Object = new Dictionary<string, object>
-        {
-          {"First", 1}
-        };
-
-      string json = JsonConvert.SerializeObject(d, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Before"": ""Before!"",
-  ""Expando"": {
-    ""String"": ""String!"",
-    ""Integer"": 234,
-    ""Float"": 1.23,
-    ""List"": [
-      ""First"",
-      ""Second"",
-      ""Third""
-    ],
-    ""Object"": {
-      ""First"": 1
-    }
-  },
-  ""After"": ""After!""
-}", json);
-    }
-
-    [Test]
-    public void SerializeNullExpandoObject()
-    {
-      ExpandoContainer d = new ExpandoContainer();
-
-      string json = JsonConvert.SerializeObject(d, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Before"": null,
-  ""Expando"": null,
-  ""After"": null
-}", json);
-    }
-
-    [Test]
-    public void DeserializeExpandoObject()
-    {
-      string json = @"{
-  ""Before"": ""Before!"",
-  ""Expando"": {
-    ""String"": ""String!"",
-    ""Integer"": 234,
-    ""Float"": 1.23,
-    ""List"": [
-      ""First"",
-      ""Second"",
-      ""Third""
-    ],
-    ""Object"": {
-      ""First"": 1
-    }
-  },
-  ""After"": ""After!""
-}";
-
-      ExpandoContainer o = JsonConvert.DeserializeObject<ExpandoContainer>(json);
-
-      Assert.AreEqual(o.Before, "Before!");
-      Assert.AreEqual(o.After, "After!");
-      Assert.IsNotNull(o.Expando);
-
-      dynamic d = o.Expando;
-      CustomAssert.IsInstanceOfType(typeof(ExpandoObject), d);
-
-      Assert.AreEqual("String!", d.String);
-      CustomAssert.IsInstanceOfType(typeof(string), d.String);
-
-      Assert.AreEqual(234, d.Integer);
-      CustomAssert.IsInstanceOfType(typeof(long), d.Integer);
-
-      Assert.AreEqual(1.23, d.Float);
-      CustomAssert.IsInstanceOfType(typeof(double), d.Float);
-
-      Assert.IsNotNull(d.List);
-      Assert.AreEqual(3, d.List.Count);
-      CustomAssert.IsInstanceOfType(typeof(List<object>), d.List);
-
-      Assert.AreEqual("First", d.List[0]);
-      CustomAssert.IsInstanceOfType(typeof(string), d.List[0]);
-
-      Assert.AreEqual("Second", d.List[1]);
-      Assert.AreEqual("Third", d.List[2]);
-
-      Assert.IsNotNull(d.Object);
-      CustomAssert.IsInstanceOfType(typeof(ExpandoObject), d.Object);
-
-      Assert.AreEqual(1, d.Object.First);
-      CustomAssert.IsInstanceOfType(typeof(long), d.Object.First);
-    }
-
-    [Test]
-    public void DeserializeNullExpandoObject()
-    {
-      string json = @"{
-  ""Before"": null,
-  ""Expando"": null,
-  ""After"": null
-}";
-
-      ExpandoContainer c = JsonConvert.DeserializeObject<ExpandoContainer>(json);
-
-      Assert.AreEqual(null, c.Expando);
-    }
-
-  }
-}
-
+﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
+
+using System;
+using System.Collections.Generic;
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+using System.Data.Linq;
+#endif
+#if !SILVERLIGHT && !NETFX_CORE
+using System.Data.SqlTypes;
+#endif
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class ExpandoObjectConverterTests : TestFixtureBase
+  {
+    public class ExpandoContainer
+    {
+      public string Before { get; set; }
+      public ExpandoObject Expando { get; set; }
+      public string After { get; set; }
+    }
+
+    [Test]
+    public void SerializeExpandoObject()
+    {
+      ExpandoContainer d = new ExpandoContainer
+        {
+          Before = "Before!",
+          Expando = new ExpandoObject(),
+          After = "After!"
+        };
+
+      dynamic o = d.Expando;
+
+      o.String = "String!";
+      o.Integer = 234;
+      o.Float = 1.23d;
+      o.List = new List<string> {"First", "Second", "Third"};
+      o.Object = new Dictionary<string, object>
+        {
+          {"First", 1}
+        };
+
+      string json = JsonConvert.SerializeObject(d, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Before"": ""Before!"",
+  ""Expando"": {
+    ""String"": ""String!"",
+    ""Integer"": 234,
+    ""Float"": 1.23,
+    ""List"": [
+      ""First"",
+      ""Second"",
+      ""Third""
+    ],
+    ""Object"": {
+      ""First"": 1
+    }
+  },
+  ""After"": ""After!""
+}", json);
+    }
+
+    [Test]
+    public void SerializeNullExpandoObject()
+    {
+      ExpandoContainer d = new ExpandoContainer();
+
+      string json = JsonConvert.SerializeObject(d, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Before"": null,
+  ""Expando"": null,
+  ""After"": null
+}", json);
+    }
+
+    [Test]
+    public void DeserializeExpandoObject()
+    {
+      string json = @"{
+  ""Before"": ""Before!"",
+  ""Expando"": {
+    ""String"": ""String!"",
+    ""Integer"": 234,
+    ""Float"": 1.23,
+    ""List"": [
+      ""First"",
+      ""Second"",
+      ""Third""
+    ],
+    ""Object"": {
+      ""First"": 1
+    }
+  },
+  ""After"": ""After!""
+}";
+
+      ExpandoContainer o = JsonConvert.DeserializeObject<ExpandoContainer>(json);
+
+      Assert.AreEqual(o.Before, "Before!");
+      Assert.AreEqual(o.After, "After!");
+      Assert.IsNotNull(o.Expando);
+
+      dynamic d = o.Expando;
+      CustomAssert.IsInstanceOfType(typeof(ExpandoObject), d);
+
+      Assert.AreEqual("String!", d.String);
+      CustomAssert.IsInstanceOfType(typeof(string), d.String);
+
+      Assert.AreEqual(234, d.Integer);
+      CustomAssert.IsInstanceOfType(typeof(long), d.Integer);
+
+      Assert.AreEqual(1.23, d.Float);
+      CustomAssert.IsInstanceOfType(typeof(double), d.Float);
+
+      Assert.IsNotNull(d.List);
+      Assert.AreEqual(3, d.List.Count);
+      CustomAssert.IsInstanceOfType(typeof(List<object>), d.List);
+
+      Assert.AreEqual("First", d.List[0]);
+      CustomAssert.IsInstanceOfType(typeof(string), d.List[0]);
+
+      Assert.AreEqual("Second", d.List[1]);
+      Assert.AreEqual("Third", d.List[2]);
+
+      Assert.IsNotNull(d.Object);
+      CustomAssert.IsInstanceOfType(typeof(ExpandoObject), d.Object);
+
+      Assert.AreEqual(1, d.Object.First);
+      CustomAssert.IsInstanceOfType(typeof(long), d.Object.First);
+    }
+
+    [Test]
+    public void DeserializeNullExpandoObject()
+    {
+      string json = @"{
+  ""Before"": null,
+  ""Expando"": null,
+  ""After"": null
+}";
+
+      ExpandoContainer c = JsonConvert.DeserializeObject<ExpandoContainer>(json);
+
+      Assert.AreEqual(null, c.Expando);
+    }
+
+  }
+}
+
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/IsoDateTimeConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/IsoDateTimeConverterTests.cs
@@ -1,272 +1,272 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class IsoDateTimeConverterTests : TestFixtureBase
-  {
-    [Test]
-    public void PropertiesShouldBeSet()
-    {
-      IsoDateTimeConverter converter = new IsoDateTimeConverter();
-      Assert.AreEqual(CultureInfo.CurrentCulture, converter.Culture);
-      Assert.AreEqual(string.Empty, converter.DateTimeFormat);
-      Assert.AreEqual(DateTimeStyles.RoundtripKind, converter.DateTimeStyles);
-
-      converter = new IsoDateTimeConverter()
-      {
-        DateTimeFormat = "F",
-        Culture = CultureInfo.InvariantCulture,
-        DateTimeStyles = DateTimeStyles.None
-      };
-
-      Assert.AreEqual(CultureInfo.InvariantCulture, converter.Culture);
-      Assert.AreEqual("F", converter.DateTimeFormat);
-      Assert.AreEqual(DateTimeStyles.None, converter.DateTimeStyles);
-    }
-
-    [Test]
-    public void SerializeDateTime()
-    {
-      IsoDateTimeConverter converter = new IsoDateTimeConverter();
-
-      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc);
-      string result;
-
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual(@"""2000-12-15T22:11:03.055Z""", result);
-
-      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTime>(result, converter));
-
-      d = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Local);
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual(@"""2000-12-15T22:11:03.055" + d.GetUtcOffsetText() + @"""", result);
-    }
-
-    [Test]
-    public void SerializeFormattedDateTimeInvariantCulture()
-    {
-      IsoDateTimeConverter converter = new IsoDateTimeConverter() { DateTimeFormat = "F", Culture = CultureInfo.InvariantCulture };
-
-      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Utc);
-      string result;
-
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual(@"""Friday, 15 December 2000 22:11:03""", result);
-
-      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTime>(result, converter));
-
-      d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Local);
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual(@"""Friday, 15 December 2000 22:11:03""", result);
-    }
-
-    [Test]
-    public void SerializeCustomFormattedDateTime()
-    {
-      IsoDateTimeConverter converter = new IsoDateTimeConverter
-                                         {
-                                           DateTimeFormat = "dd/MM/yyyy",
-                                           Culture = CultureInfo.InvariantCulture
-                                         };
-
-      string json = @"""09/12/2006""";
-
-      DateTime d = JsonConvert.DeserializeObject<DateTime>(json, converter);
-
-      Assert.AreEqual(9, d.Day);
-      Assert.AreEqual(12, d.Month);
-      Assert.AreEqual(2006, d.Year);
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void SerializeFormattedDateTimeNewZealandCulture()
-    {
-      IsoDateTimeConverter converter = new IsoDateTimeConverter() { DateTimeFormat = "F", Culture = CultureInfo.GetCultureInfo("en-NZ") };
-
-      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Utc);
-      string result;
-
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual(@"""Friday, 15 December 2000 10:11:03 p.m.""", result);
-
-      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTime>(result, converter));
-
-      d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Local);
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual(@"""Friday, 15 December 2000 10:11:03 p.m.""", result);
-    }
-
-    [Test]
-    public void SerializeDateTimeCulture()
-    {
-      IsoDateTimeConverter converter = new IsoDateTimeConverter() { Culture = CultureInfo.GetCultureInfo("en-NZ") };
-
-      string json = @"""09/12/2006""";
-
-      DateTime d = JsonConvert.DeserializeObject<DateTime>(json, converter);
-
-      Assert.AreEqual(9, d.Day);
-      Assert.AreEqual(12, d.Month);
-      Assert.AreEqual(2006, d.Year);
-    }
-#endif
-
-#if !PocketPC && !NET20
-    [Test]
-    public void SerializeDateTimeOffset()
-    {
-      IsoDateTimeConverter converter = new IsoDateTimeConverter();
-
-      DateTimeOffset d = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero);
-      string result;
-
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual(@"""2000-12-15T22:11:03.055+00:00""", result);
-
-      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTimeOffset>(result, converter));
-    }
-
-    [Test]
-    public void SerializeUTC()
-    {
-      DateTimeTestClass c = new DateTimeTestClass();
-      c.DateTimeField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
-      c.DateTimeOffsetField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
-      c.PreField = "Pre";
-      c.PostField = "Post";
-      string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
-      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12+00:00"",""PostField"":""Post""}", json);
-
-      //test the other edge case too
-      c.DateTimeField = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc).ToLocalTime();
-      c.DateTimeOffsetField = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc).ToLocalTime();
-      c.PreField = "Pre";
-      c.PostField = "Post";
-      json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
-      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-01-01T01:01:01Z"",""DateTimeOffsetField"":""2008-01-01T01:01:01+00:00"",""PostField"":""Post""}", json);
-    }
-
-    [Test]
-    public void NullableSerializeUTC()
-    {
-      NullableDateTimeTestClass c = new NullableDateTimeTestClass();
-      c.DateTimeField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
-      c.DateTimeOffsetField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
-      c.PreField = "Pre";
-      c.PostField = "Post";
-      string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
-      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12+00:00"",""PostField"":""Post""}", json);
-
-      //test the other edge case too
-      c.DateTimeField = null;
-      c.DateTimeOffsetField = null;
-      c.PreField = "Pre";
-      c.PostField = "Post";
-      json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
-      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}", json);
-    }
-
-    [Test]
-    public void NullableDeserializeEmptyString()
-    {
-      string json = @"{""DateTimeField"":""""}";
-
-      NullableDateTimeTestClass c = JsonConvert.DeserializeObject<NullableDateTimeTestClass>(json,
-        new JsonSerializerSettings { Converters = new [] {new IsoDateTimeConverter()}});
-      Assert.AreEqual(null, c.DateTimeField);
-    }
-
-    [Test]
-    public void DeserializeNullToNonNullable()
-    {
-      ExceptionAssert.Throws<Exception>("Cannot convert null value to System.DateTime.",
-      () =>
-      {
-        DateTimeTestClass c2 =
-         JsonConvert.DeserializeObject<DateTimeTestClass>(@"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}", new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
-      });
-    }
-
-    [Test]
-    public void SerializeShouldChangeNonUTCDates()
-    {
-      DateTime localDateTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Local);
-
-      DateTimeTestClass c = new DateTimeTestClass();
-      c.DateTimeField = localDateTime;
-      c.PreField = "Pre";
-      c.PostField = "Post";
-      string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal }); //note that this fails without the Utc converter...
-      c.DateTimeField = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc);
-      string json2 = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
-
-      TimeSpan offset = localDateTime.GetUtcOffset();
-
-      // if the current timezone is utc then local already equals utc
-      if (offset == TimeSpan.Zero)
-        Assert.AreEqual(json, json2);
-      else
-        Assert.AreNotEqual(json, json2);
-    }
-#endif
-
-    [Test]
-    public void BlogCodeSample()
-    {
-      Person p = new Person
-                   {
-                     Name = "Keith",
-                     BirthDate = new DateTime(1980, 3, 8),
-                     LastModified = new DateTime(2009, 4, 12, 20, 44, 55),
-                   };
-
-      string jsonText = JsonConvert.SerializeObject(p, new IsoDateTimeConverter());
-      // {
-      //   "Name": "Keith",
-      //   "BirthDate": "1980-03-08T00:00:00",
-      //   "LastModified": "2009-04-12T20:44:55"
-      // }
-
-      Console.WriteLine(jsonText);
-
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class IsoDateTimeConverterTests : TestFixtureBase
+  {
+    [Test]
+    public void PropertiesShouldBeSet()
+    {
+      IsoDateTimeConverter converter = new IsoDateTimeConverter();
+      Assert.AreEqual(CultureInfo.CurrentCulture, converter.Culture);
+      Assert.AreEqual(string.Empty, converter.DateTimeFormat);
+      Assert.AreEqual(DateTimeStyles.RoundtripKind, converter.DateTimeStyles);
+
+      converter = new IsoDateTimeConverter()
+      {
+        DateTimeFormat = "F",
+        Culture = CultureInfo.InvariantCulture,
+        DateTimeStyles = DateTimeStyles.None
+      };
+
+      Assert.AreEqual(CultureInfo.InvariantCulture, converter.Culture);
+      Assert.AreEqual("F", converter.DateTimeFormat);
+      Assert.AreEqual(DateTimeStyles.None, converter.DateTimeStyles);
+    }
+
+    [Test]
+    public void SerializeDateTime()
+    {
+      IsoDateTimeConverter converter = new IsoDateTimeConverter();
+
+      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc);
+      string result;
+
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual(@"""2000-12-15T22:11:03.055Z""", result);
+
+      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTime>(result, converter));
+
+      d = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Local);
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual(@"""2000-12-15T22:11:03.055" + d.GetUtcOffsetText() + @"""", result);
+    }
+
+    [Test]
+    public void SerializeFormattedDateTimeInvariantCulture()
+    {
+      IsoDateTimeConverter converter = new IsoDateTimeConverter() { DateTimeFormat = "F", Culture = CultureInfo.InvariantCulture };
+
+      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Utc);
+      string result;
+
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual(@"""Friday, 15 December 2000 22:11:03""", result);
+
+      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTime>(result, converter));
+
+      d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Local);
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual(@"""Friday, 15 December 2000 22:11:03""", result);
+    }
+
+    [Test]
+    public void SerializeCustomFormattedDateTime()
+    {
+      IsoDateTimeConverter converter = new IsoDateTimeConverter
+                                         {
+                                           DateTimeFormat = "dd/MM/yyyy",
+                                           Culture = CultureInfo.InvariantCulture
+                                         };
+
+      string json = @"""09/12/2006""";
+
+      DateTime d = JsonConvert.DeserializeObject<DateTime>(json, converter);
+
+      Assert.AreEqual(9, d.Day);
+      Assert.AreEqual(12, d.Month);
+      Assert.AreEqual(2006, d.Year);
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void SerializeFormattedDateTimeNewZealandCulture()
+    {
+      IsoDateTimeConverter converter = new IsoDateTimeConverter() { DateTimeFormat = "F", Culture = CultureInfo.GetCultureInfo("en-NZ") };
+
+      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Utc);
+      string result;
+
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual(@"""Friday, 15 December 2000 10:11:03 p.m.""", result);
+
+      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTime>(result, converter));
+
+      d = new DateTime(2000, 12, 15, 22, 11, 3, 0, DateTimeKind.Local);
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual(@"""Friday, 15 December 2000 10:11:03 p.m.""", result);
+    }
+
+    [Test]
+    public void SerializeDateTimeCulture()
+    {
+      IsoDateTimeConverter converter = new IsoDateTimeConverter() { Culture = CultureInfo.GetCultureInfo("en-NZ") };
+
+      string json = @"""09/12/2006""";
+
+      DateTime d = JsonConvert.DeserializeObject<DateTime>(json, converter);
+
+      Assert.AreEqual(9, d.Day);
+      Assert.AreEqual(12, d.Month);
+      Assert.AreEqual(2006, d.Year);
+    }
+#endif
+
+#if !PocketPC && !NET20
+    [Test]
+    public void SerializeDateTimeOffset()
+    {
+      IsoDateTimeConverter converter = new IsoDateTimeConverter();
+
+      DateTimeOffset d = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero);
+      string result;
+
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual(@"""2000-12-15T22:11:03.055+00:00""", result);
+
+      Assert.AreEqual(d, JsonConvert.DeserializeObject<DateTimeOffset>(result, converter));
+    }
+
+    [Test]
+    public void SerializeUTC()
+    {
+      DateTimeTestClass c = new DateTimeTestClass();
+      c.DateTimeField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
+      c.DateTimeOffsetField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
+      c.PreField = "Pre";
+      c.PostField = "Post";
+      string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
+      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12+00:00"",""PostField"":""Post""}", json);
+
+      //test the other edge case too
+      c.DateTimeField = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc).ToLocalTime();
+      c.DateTimeOffsetField = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc).ToLocalTime();
+      c.PreField = "Pre";
+      c.PostField = "Post";
+      json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
+      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-01-01T01:01:01Z"",""DateTimeOffsetField"":""2008-01-01T01:01:01+00:00"",""PostField"":""Post""}", json);
+    }
+
+    [Test]
+    public void NullableSerializeUTC()
+    {
+      NullableDateTimeTestClass c = new NullableDateTimeTestClass();
+      c.DateTimeField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
+      c.DateTimeOffsetField = new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime();
+      c.PreField = "Pre";
+      c.PostField = "Post";
+      string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
+      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12+00:00"",""PostField"":""Post""}", json);
+
+      //test the other edge case too
+      c.DateTimeField = null;
+      c.DateTimeOffsetField = null;
+      c.PreField = "Pre";
+      c.PostField = "Post";
+      json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
+      Assert.AreEqual(@"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}", json);
+    }
+
+    [Test]
+    public void NullableDeserializeEmptyString()
+    {
+      string json = @"{""DateTimeField"":""""}";
+
+      NullableDateTimeTestClass c = JsonConvert.DeserializeObject<NullableDateTimeTestClass>(json,
+        new JsonSerializerSettings { Converters = new [] {new IsoDateTimeConverter()}});
+      Assert.AreEqual(null, c.DateTimeField);
+    }
+
+    [Test]
+    public void DeserializeNullToNonNullable()
+    {
+      ExceptionAssert.Throws<Exception>("Cannot convert null value to System.DateTime.",
+      () =>
+      {
+        DateTimeTestClass c2 =
+         JsonConvert.DeserializeObject<DateTimeTestClass>(@"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}", new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
+      });
+    }
+
+    [Test]
+    public void SerializeShouldChangeNonUTCDates()
+    {
+      DateTime localDateTime = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Local);
+
+      DateTimeTestClass c = new DateTimeTestClass();
+      c.DateTimeField = localDateTime;
+      c.PreField = "Pre";
+      c.PostField = "Post";
+      string json = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal }); //note that this fails without the Utc converter...
+      c.DateTimeField = new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc);
+      string json2 = JsonConvert.SerializeObject(c, new IsoDateTimeConverter() { DateTimeStyles = DateTimeStyles.AssumeUniversal });
+
+      TimeSpan offset = localDateTime.GetUtcOffset();
+
+      // if the current timezone is utc then local already equals utc
+      if (offset == TimeSpan.Zero)
+        Assert.AreEqual(json, json2);
+      else
+        Assert.AreNotEqual(json, json2);
+    }
+#endif
+
+    [Test]
+    public void BlogCodeSample()
+    {
+      Person p = new Person
+                   {
+                     Name = "Keith",
+                     BirthDate = new DateTime(1980, 3, 8),
+                     LastModified = new DateTime(2009, 4, 12, 20, 44, 55),
+                   };
+
+      string jsonText = JsonConvert.SerializeObject(p, new IsoDateTimeConverter());
+      // {
+      //   "Name": "Keith",
+      //   "BirthDate": "1980-03-08T00:00:00",
+      //   "LastModified": "2009-04-12T20:44:55"
+      // }
+
+      Console.WriteLine(jsonText);
+
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/JavaScriptDateTimeConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/JavaScriptDateTimeConverterTests.cs
@@ -1,133 +1,133 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class JavaScriptDateTimeConverterTests : TestFixtureBase
-  {
-    [Test]
-    public void SerializeDateTime()
-    {
-      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
-
-      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc);
-      string result;
-
-      result = JsonConvert.SerializeObject(d, converter);
-      Assert.AreEqual("new Date(976918263055)", result);
-    }
-
-#if !PocketPC && !NET20
-    [Test]
-    public void SerializeDateTimeOffset()
-    {
-      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
-
-      DateTimeOffset now = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero);
-      string result;
-
-      result = JsonConvert.SerializeObject(now, converter);
-      Assert.AreEqual("new Date(976918263055)", result);
-    }
-
-    [Test]
-    public void sdfs()
-    {
-      int i = Convert.ToInt32("+1");
-      Console.WriteLine(i);
-    }
-
-    [Test]
-    public void SerializeNullableDateTimeClass()
-    {
-      NullableDateTimeTestClass t = new NullableDateTimeTestClass()
-      {
-        DateTimeField = null,
-        DateTimeOffsetField = null
-      };
-
-      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
-
-      string result;
-
-      result = JsonConvert.SerializeObject(t, converter);
-      Assert.AreEqual(@"{""PreField"":null,""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":null}", result);
-
-      t = new NullableDateTimeTestClass()
-      {
-        DateTimeField = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc),
-        DateTimeOffsetField = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero)
-      };
-
-      result = JsonConvert.SerializeObject(t, converter);
-      Assert.AreEqual(@"{""PreField"":null,""DateTimeField"":new Date(976918263055),""DateTimeOffsetField"":new Date(976918263055),""PostField"":null}", result);
-    }
-
-    [Test]
-    public void DeserializeNullToNonNullable()
-    {
-      ExceptionAssert.Throws<Exception>("Cannot convert null value to System.DateTime.",
-      () =>
-      {
-        DateTimeTestClass c2 =
-         JsonConvert.DeserializeObject<DateTimeTestClass>(@"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}", new JavaScriptDateTimeConverter());
-      });
-    }
-
-    [Test]
-    public void DeserializeDateTimeOffset()
-    {
-      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
-      DateTimeOffset start = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero);
-
-      string json = JsonConvert.SerializeObject(start, converter);
-
-      DateTimeOffset result = JsonConvert.DeserializeObject<DateTimeOffset>(json, converter);
-      Assert.AreEqual(new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero), result);
-    }
-#endif
-
-    [Test]
-    public void DeserializeDateTime()
-    {
-      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
-
-      DateTime result = JsonConvert.DeserializeObject<DateTime>("new Date(976918263055)", converter);
-      Assert.AreEqual(new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc), result);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class JavaScriptDateTimeConverterTests : TestFixtureBase
+  {
+    [Test]
+    public void SerializeDateTime()
+    {
+      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
+
+      DateTime d = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc);
+      string result;
+
+      result = JsonConvert.SerializeObject(d, converter);
+      Assert.AreEqual("new Date(976918263055)", result);
+    }
+
+#if !PocketPC && !NET20
+    [Test]
+    public void SerializeDateTimeOffset()
+    {
+      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
+
+      DateTimeOffset now = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero);
+      string result;
+
+      result = JsonConvert.SerializeObject(now, converter);
+      Assert.AreEqual("new Date(976918263055)", result);
+    }
+
+    [Test]
+    public void sdfs()
+    {
+      int i = Convert.ToInt32("+1");
+      Console.WriteLine(i);
+    }
+
+    [Test]
+    public void SerializeNullableDateTimeClass()
+    {
+      NullableDateTimeTestClass t = new NullableDateTimeTestClass()
+      {
+        DateTimeField = null,
+        DateTimeOffsetField = null
+      };
+
+      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
+
+      string result;
+
+      result = JsonConvert.SerializeObject(t, converter);
+      Assert.AreEqual(@"{""PreField"":null,""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":null}", result);
+
+      t = new NullableDateTimeTestClass()
+      {
+        DateTimeField = new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc),
+        DateTimeOffsetField = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero)
+      };
+
+      result = JsonConvert.SerializeObject(t, converter);
+      Assert.AreEqual(@"{""PreField"":null,""DateTimeField"":new Date(976918263055),""DateTimeOffsetField"":new Date(976918263055),""PostField"":null}", result);
+    }
+
+    [Test]
+    public void DeserializeNullToNonNullable()
+    {
+      ExceptionAssert.Throws<Exception>("Cannot convert null value to System.DateTime.",
+      () =>
+      {
+        DateTimeTestClass c2 =
+         JsonConvert.DeserializeObject<DateTimeTestClass>(@"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}", new JavaScriptDateTimeConverter());
+      });
+    }
+
+    [Test]
+    public void DeserializeDateTimeOffset()
+    {
+      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
+      DateTimeOffset start = new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero);
+
+      string json = JsonConvert.SerializeObject(start, converter);
+
+      DateTimeOffset result = JsonConvert.DeserializeObject<DateTimeOffset>(json, converter);
+      Assert.AreEqual(new DateTimeOffset(2000, 12, 15, 22, 11, 3, 55, TimeSpan.Zero), result);
+    }
+#endif
+
+    [Test]
+    public void DeserializeDateTime()
+    {
+      JavaScriptDateTimeConverter converter = new JavaScriptDateTimeConverter();
+
+      DateTime result = JsonConvert.DeserializeObject<DateTime>("new Date(976918263055)", converter);
+      Assert.AreEqual(new DateTime(2000, 12, 15, 22, 11, 3, 55, DateTimeKind.Utc), result);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/ObjectIdConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/ObjectIdConverterTests.cs
@@ -1,60 +1,60 @@
-﻿using System.IO;
-using Newtonsoft.Json.Bson;
-using Newtonsoft.Json.Utilities;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class ObjectIdConverterTests : TestFixtureBase
-  {
-    public class ObjectIdTestClass
-    {
-      [JsonProperty("_id")]
-      public BsonObjectId Id { get; set; }
-      [JsonProperty("test")]
-      public string Test { get; set; }
-    }
-
-    [Test]
-    public void Serialize()
-    {
-      ObjectIdTestClass c = new ObjectIdTestClass
-                              {
-                                Id = new BsonObjectId(MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001")),
-                                Test = "1234£56"
-                              };
-
-      MemoryStream ms = new MemoryStream();
-      JsonSerializer serializer = new JsonSerializer();
-
-      // serialize product to BSON
-      BsonWriter writer = new BsonWriter(ms);
-      serializer.Serialize(writer, c);
-
-      byte[] expected = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
-
-      CollectionAssert.AreEquivalent(expected, ms.ToArray());
-    }
-
-    [Test]
-    public void Deserialize()
-    {
-      byte[] bson = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
-
-      JsonSerializer serializer = new JsonSerializer();
-
-      BsonReader reader = new BsonReader(new MemoryStream(bson));
-      ObjectIdTestClass c = serializer.Deserialize<ObjectIdTestClass>(reader);
-
-      CollectionAssert.AreEquivalent(c.Id.Value, MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001"));
-      Assert.AreEqual(c.Test, "1234£56");
-    }
-  }
-}
+﻿using System.IO;
+using Newtonsoft.Json.Bson;
+using Newtonsoft.Json.Utilities;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class ObjectIdConverterTests : TestFixtureBase
+  {
+    public class ObjectIdTestClass
+    {
+      [JsonProperty("_id")]
+      public BsonObjectId Id { get; set; }
+      [JsonProperty("test")]
+      public string Test { get; set; }
+    }
+
+    [Test]
+    public void Serialize()
+    {
+      ObjectIdTestClass c = new ObjectIdTestClass
+                              {
+                                Id = new BsonObjectId(MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001")),
+                                Test = "1234£56"
+                              };
+
+      MemoryStream ms = new MemoryStream();
+      JsonSerializer serializer = new JsonSerializer();
+
+      // serialize product to BSON
+      BsonWriter writer = new BsonWriter(ms);
+      serializer.Serialize(writer, c);
+
+      byte[] expected = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
+
+      CollectionAssert.AreEquivalent(expected, ms.ToArray());
+    }
+
+    [Test]
+    public void Deserialize()
+    {
+      byte[] bson = MiscellaneousUtils.HexToBytes("29000000075F6964004ABBED9D1D8B0F02180000010274657374000900000031323334C2A335360000");
+
+      JsonSerializer serializer = new JsonSerializer();
+
+      BsonReader reader = new BsonReader(new MemoryStream(bson));
+      ObjectIdTestClass c = serializer.Deserialize<ObjectIdTestClass>(reader);
+
+      CollectionAssert.AreEquivalent(c.Id.Value, MiscellaneousUtils.HexToBytes("4ABBED9D1D8B0F0218000001"));
+      Assert.AreEqual(c.Test, "1234£56");
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/RegexConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/RegexConverterTests.cs
@@ -1,161 +1,161 @@
-﻿using System;
-using System.Collections.Generic;
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-using System.Data.Linq;
-#endif
-#if !SILVERLIGHT && !NETFX_CORE
-using System.Data.SqlTypes;
-#endif
-using System.IO;
-using System.Text.RegularExpressions;
-using Newtonsoft.Json.Bson;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Utilities;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class RegexConverterTests : TestFixtureBase
-  {
-    public class RegexTestClass
-    {
-      public Regex Regex { get; set; }
-    }
-
-    [Test]
-    public void SerializeToText()
-    {
-      Regex regex = new Regex("abc", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
-
-      string json = JsonConvert.SerializeObject(regex, Formatting.Indented, new RegexConverter());
-
-      Assert.AreEqual(@"{
-  ""Pattern"": ""abc"",
-  ""Options"": 513
-}", json);
-    }
-
-    [Test]
-    public void SerializeToBson()
-    {
-      Regex regex = new Regex("abc", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Converters.Add(new RegexConverter());
-
-      serializer.Serialize(writer, new RegexTestClass { Regex = regex });
-
-      string expected = "13-00-00-00-0B-52-65-67-65-78-00-61-62-63-00-69-75-00-00";
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-
-      Assert.AreEqual(expected, bson);
-    }
-
-    [Test]
-    public void DeserializeFromText()
-    {
-      string json = @"{
-  ""Pattern"": ""abc"",
-  ""Options"": 513
-}";
-
-      Regex newRegex = JsonConvert.DeserializeObject<Regex>(json, new RegexConverter());
-      Assert.AreEqual("abc", newRegex.ToString());
-      Assert.AreEqual(RegexOptions.IgnoreCase | RegexOptions.CultureInvariant, newRegex.Options);
-    }
-
-    [Test]
-    public void DeserializeFromBson()
-    {
-      MemoryStream ms = new MemoryStream(MiscellaneousUtils.HexToBytes("13-00-00-00-0B-52-65-67-65-78-00-61-62-63-00-69-75-00-00"));
-      BsonReader reader = new BsonReader(ms);
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Converters.Add(new RegexConverter());
-
-      RegexTestClass c = serializer.Deserialize<RegexTestClass>(reader);
-
-      Assert.AreEqual("abc", c.Regex.ToString());
-      Assert.AreEqual(RegexOptions.IgnoreCase, c.Regex.Options);
-    }
-
-    [Test]
-    public void ConvertEmptyRegexBson()
-    {
-      Regex regex = new Regex(string.Empty);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Converters.Add(new RegexConverter());
-
-      serializer.Serialize(writer, new RegexTestClass { Regex = regex });
-
-      ms.Seek(0, SeekOrigin.Begin);
-      BsonReader reader = new BsonReader(ms);
-      serializer.Converters.Add(new RegexConverter());
-
-      RegexTestClass c = serializer.Deserialize<RegexTestClass>(reader);
-
-      Assert.AreEqual("", c.Regex.ToString());
-      Assert.AreEqual(RegexOptions.None, c.Regex.Options);
-    }
-
-    [Test]
-    public void ConvertRegexWithAllOptionsBson()
-    {
-      Regex regex = new Regex(
-        "/",
-        RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.ExplicitCapture);
-
-      MemoryStream ms = new MemoryStream();
-      BsonWriter writer = new BsonWriter(ms);
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Converters.Add(new RegexConverter());
-
-      serializer.Serialize(writer, new RegexTestClass { Regex = regex });
-
-      string expected = "14-00-00-00-0B-52-65-67-65-78-00-2F-00-69-6D-73-75-78-00-00";
-      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
-
-      Assert.AreEqual(expected, bson);
-
-      ms.Seek(0, SeekOrigin.Begin);
-      BsonReader reader = new BsonReader(ms);
-      serializer.Converters.Add(new RegexConverter());
-
-      RegexTestClass c = serializer.Deserialize<RegexTestClass>(reader);
-
-      Assert.AreEqual("/", c.Regex.ToString());
-      Assert.AreEqual(RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.ExplicitCapture, c.Regex.Options);
-    }
-
-    [Test]
-    public void ConvertEmptyRegexJson()
-    {
-      Regex regex = new Regex("");
-
-      string json = JsonConvert.SerializeObject(new RegexTestClass { Regex = regex }, Formatting.Indented, new RegexConverter());
-
-      Assert.AreEqual(@"{
-  ""Regex"": {
-    ""Pattern"": """",
-    ""Options"": 0
-  }
-}", json);
-
-      RegexTestClass newRegex = JsonConvert.DeserializeObject<RegexTestClass>(json, new RegexConverter());
-      Assert.AreEqual("", newRegex.Regex.ToString());
-      Assert.AreEqual(RegexOptions.None, newRegex.Regex.Options);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+using System.Data.Linq;
+#endif
+#if !SILVERLIGHT && !NETFX_CORE
+using System.Data.SqlTypes;
+#endif
+using System.IO;
+using System.Text.RegularExpressions;
+using Newtonsoft.Json.Bson;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Utilities;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class RegexConverterTests : TestFixtureBase
+  {
+    public class RegexTestClass
+    {
+      public Regex Regex { get; set; }
+    }
+
+    [Test]
+    public void SerializeToText()
+    {
+      Regex regex = new Regex("abc", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
+
+      string json = JsonConvert.SerializeObject(regex, Formatting.Indented, new RegexConverter());
+
+      Assert.AreEqual(@"{
+  ""Pattern"": ""abc"",
+  ""Options"": 513
+}", json);
+    }
+
+    [Test]
+    public void SerializeToBson()
+    {
+      Regex regex = new Regex("abc", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Converters.Add(new RegexConverter());
+
+      serializer.Serialize(writer, new RegexTestClass { Regex = regex });
+
+      string expected = "13-00-00-00-0B-52-65-67-65-78-00-61-62-63-00-69-75-00-00";
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+
+      Assert.AreEqual(expected, bson);
+    }
+
+    [Test]
+    public void DeserializeFromText()
+    {
+      string json = @"{
+  ""Pattern"": ""abc"",
+  ""Options"": 513
+}";
+
+      Regex newRegex = JsonConvert.DeserializeObject<Regex>(json, new RegexConverter());
+      Assert.AreEqual("abc", newRegex.ToString());
+      Assert.AreEqual(RegexOptions.IgnoreCase | RegexOptions.CultureInvariant, newRegex.Options);
+    }
+
+    [Test]
+    public void DeserializeFromBson()
+    {
+      MemoryStream ms = new MemoryStream(MiscellaneousUtils.HexToBytes("13-00-00-00-0B-52-65-67-65-78-00-61-62-63-00-69-75-00-00"));
+      BsonReader reader = new BsonReader(ms);
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Converters.Add(new RegexConverter());
+
+      RegexTestClass c = serializer.Deserialize<RegexTestClass>(reader);
+
+      Assert.AreEqual("abc", c.Regex.ToString());
+      Assert.AreEqual(RegexOptions.IgnoreCase, c.Regex.Options);
+    }
+
+    [Test]
+    public void ConvertEmptyRegexBson()
+    {
+      Regex regex = new Regex(string.Empty);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Converters.Add(new RegexConverter());
+
+      serializer.Serialize(writer, new RegexTestClass { Regex = regex });
+
+      ms.Seek(0, SeekOrigin.Begin);
+      BsonReader reader = new BsonReader(ms);
+      serializer.Converters.Add(new RegexConverter());
+
+      RegexTestClass c = serializer.Deserialize<RegexTestClass>(reader);
+
+      Assert.AreEqual("", c.Regex.ToString());
+      Assert.AreEqual(RegexOptions.None, c.Regex.Options);
+    }
+
+    [Test]
+    public void ConvertRegexWithAllOptionsBson()
+    {
+      Regex regex = new Regex(
+        "/",
+        RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.ExplicitCapture);
+
+      MemoryStream ms = new MemoryStream();
+      BsonWriter writer = new BsonWriter(ms);
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Converters.Add(new RegexConverter());
+
+      serializer.Serialize(writer, new RegexTestClass { Regex = regex });
+
+      string expected = "14-00-00-00-0B-52-65-67-65-78-00-2F-00-69-6D-73-75-78-00-00";
+      string bson = MiscellaneousUtils.BytesToHex(ms.ToArray());
+
+      Assert.AreEqual(expected, bson);
+
+      ms.Seek(0, SeekOrigin.Begin);
+      BsonReader reader = new BsonReader(ms);
+      serializer.Converters.Add(new RegexConverter());
+
+      RegexTestClass c = serializer.Deserialize<RegexTestClass>(reader);
+
+      Assert.AreEqual("/", c.Regex.ToString());
+      Assert.AreEqual(RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.ExplicitCapture, c.Regex.Options);
+    }
+
+    [Test]
+    public void ConvertEmptyRegexJson()
+    {
+      Regex regex = new Regex("");
+
+      string json = JsonConvert.SerializeObject(new RegexTestClass { Regex = regex }, Formatting.Indented, new RegexConverter());
+
+      Assert.AreEqual(@"{
+  ""Regex"": {
+    ""Pattern"": """",
+    ""Options"": 0
+  }
+}", json);
+
+      RegexTestClass newRegex = JsonConvert.DeserializeObject<RegexTestClass>(json, new RegexConverter());
+      Assert.AreEqual("", newRegex.Regex.ToString());
+      Assert.AreEqual(RegexOptions.None, newRegex.Regex.Options);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs
@@ -1,300 +1,300 @@
-﻿using System;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class StringEnumConverterTests : TestFixtureBase
-  {
-    public class EnumClass
-    {
-      public StoreColor StoreColor { get; set; }
-      public StoreColor? NullableStoreColor1 { get; set; }
-      public StoreColor? NullableStoreColor2 { get; set; }
-    }
-
-    public class EnumContainer<T>
-    {
-      public T Enum { get; set; }
-    }
-
-    [Flags]
-    public enum FlagsTestEnum
-    {
-      Default = 0,
-      First = 1,
-      Second = 2
-    }
-
-    public enum NegativeEnum
-    {
-      Negative = -1,
-      Zero = 0,
-      Positive = 1
-    }
-
-#if !NET20
-    public enum NamedEnum
-    {
-      [EnumMember(Value = "@first")]
-      First,
-      [EnumMember(Value = "@second")]
-      Second,
-      Third
-    }
-
-    public enum NamedEnumDuplicate
-    {
-      [EnumMember(Value = "Third")]
-      First,
-      [EnumMember(Value = "@second")]
-      Second,
-      Third
-    }
-#endif
-
-    public class NegativeEnumClass
-    {
-      public NegativeEnum Value1 { get; set; }
-      public NegativeEnum Value2 { get; set; }
-    }
-
-#if !NET20
-    [Test]
-    public void NamedEnumDuplicateTest()
-    {
-      ExceptionAssert.Throws<Exception>("Enum name 'Third' already exists on enum 'NamedEnumDuplicate'.",
-      () =>
-      {
-        EnumContainer<NamedEnumDuplicate> c = new EnumContainer<NamedEnumDuplicate>
-        {
-          Enum = NamedEnumDuplicate.First
-        };
-
-        JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter());
-      });
-    }
-
-    [Test]
-    public void SerializeNameEnumTest()
-    {
-      EnumContainer<NamedEnum> c = new EnumContainer<NamedEnum>
-        {
-          Enum = NamedEnum.First
-        };
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter());
-      Assert.AreEqual(@"{
-  ""Enum"": ""@first""
-}", json);
-
-      c = new EnumContainer<NamedEnum>
-      {
-        Enum = NamedEnum.Third
-      };
-
-      json = JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter());
-      Assert.AreEqual(@"{
-  ""Enum"": ""Third""
-}", json);
-    }
-
-    [Test]
-    public void DeserializeNameEnumTest()
-    {
-      string json = @"{
-  ""Enum"": ""@first""
-}";
-
-      EnumContainer<NamedEnum> c = JsonConvert.DeserializeObject<EnumContainer<NamedEnum>>(json, new StringEnumConverter());
-      Assert.AreEqual(NamedEnum.First, c.Enum);
-
-      json = @"{
-  ""Enum"": ""Third""
-}";
-
-      c = JsonConvert.DeserializeObject<EnumContainer<NamedEnum>>(json, new StringEnumConverter());
-      Assert.AreEqual(NamedEnum.Third, c.Enum);
-    }
-#endif
-
-    [Test]
-    public void SerializeEnumClass()
-    {
-      EnumClass enumClass = new EnumClass();
-      enumClass.StoreColor = StoreColor.Red;
-      enumClass.NullableStoreColor1 = StoreColor.White;
-      enumClass.NullableStoreColor2 = null;
-
-      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter());
-
-      Assert.AreEqual(@"{
-  ""StoreColor"": ""Red"",
-  ""NullableStoreColor1"": ""White"",
-  ""NullableStoreColor2"": null
-}", json);
-    }
-
-    [Test]
-    public void SerializeEnumClassWithCamelCase()
-    {
-      EnumClass enumClass = new EnumClass();
-      enumClass.StoreColor = StoreColor.Red;
-      enumClass.NullableStoreColor1 = StoreColor.DarkGoldenrod;
-      enumClass.NullableStoreColor2 = null;
-
-      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter { CamelCaseText = true });
-
-      Assert.AreEqual(@"{
-  ""StoreColor"": ""red"",
-  ""NullableStoreColor1"": ""darkGoldenrod"",
-  ""NullableStoreColor2"": null
-}", json);
-    }
-
-    [Test]
-    public void SerializeEnumClassUndefined()
-    {
-      EnumClass enumClass = new EnumClass();
-      enumClass.StoreColor = (StoreColor)1000;
-      enumClass.NullableStoreColor1 = (StoreColor)1000;
-      enumClass.NullableStoreColor2 = null;
-
-      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter());
-
-      Assert.AreEqual(@"{
-  ""StoreColor"": 1000,
-  ""NullableStoreColor1"": 1000,
-  ""NullableStoreColor2"": null
-}", json);
-    }
-
-    [Test]
-    public void SerializeFlagEnum()
-    {
-      EnumClass enumClass = new EnumClass();
-      enumClass.StoreColor = StoreColor.Red | StoreColor.White;
-      enumClass.NullableStoreColor1 = StoreColor.White & StoreColor.Yellow;
-      enumClass.NullableStoreColor2 = StoreColor.Red | StoreColor.White | StoreColor.Black;
-
-      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter());
-
-      Assert.AreEqual(@"{
-  ""StoreColor"": ""Red, White"",
-  ""NullableStoreColor1"": 0,
-  ""NullableStoreColor2"": ""Black, Red, White""
-}", json);
-    }
-
-    [Test]
-    public void SerializeNegativeEnum()
-    {
-      NegativeEnumClass negativeEnumClass = new NegativeEnumClass();
-      negativeEnumClass.Value1 = NegativeEnum.Negative;
-      negativeEnumClass.Value2 = (NegativeEnum) int.MinValue;
-
-      string json = JsonConvert.SerializeObject(negativeEnumClass, Formatting.Indented, new StringEnumConverter());
-
-      Assert.AreEqual(@"{
-  ""Value1"": ""Negative"",
-  ""Value2"": -2147483648
-}", json);
-    }
-
-    [Test]
-    public void DeserializeNegativeEnum()
-    {
-      string json = @"{
-  ""Value1"": ""Negative"",
-  ""Value2"": -2147483648
-}";
-
-      NegativeEnumClass negativeEnumClass = JsonConvert.DeserializeObject<NegativeEnumClass>(json, new StringEnumConverter());
-
-      Assert.AreEqual(NegativeEnum.Negative, negativeEnumClass.Value1);
-      Assert.AreEqual((NegativeEnum)int.MinValue, negativeEnumClass.Value2);
-    }
-
-    [Test]
-    public void DeserializeFlagEnum()
-    {
-      string json = @"{
-  ""StoreColor"": ""Red, White"",
-  ""NullableStoreColor1"": 0,
-  ""NullableStoreColor2"": ""black, Red, White""
-}";
-
-      EnumClass enumClass = JsonConvert.DeserializeObject<EnumClass>(json, new StringEnumConverter());
-
-      Assert.AreEqual(StoreColor.Red | StoreColor.White, enumClass.StoreColor);
-      Assert.AreEqual((StoreColor)0, enumClass.NullableStoreColor1);
-      Assert.AreEqual(StoreColor.Red | StoreColor.White | StoreColor.Black, enumClass.NullableStoreColor2);
-    }
-
-    [Test]
-    public void DeserializeEnumClass()
-    {
-      string json = @"{
-  ""StoreColor"": ""Red"",
-  ""NullableStoreColor1"": ""White"",
-  ""NullableStoreColor2"": null
-}";
-
-      EnumClass enumClass = JsonConvert.DeserializeObject<EnumClass>(json, new StringEnumConverter());
-
-      Assert.AreEqual(StoreColor.Red, enumClass.StoreColor);
-      Assert.AreEqual(StoreColor.White, enumClass.NullableStoreColor1);
-      Assert.AreEqual(null, enumClass.NullableStoreColor2);
-    }
-
-    [Test]
-    public void DeserializeEnumClassUndefined()
-    {
-      string json = @"{
-  ""StoreColor"": 1000,
-  ""NullableStoreColor1"": 1000,
-  ""NullableStoreColor2"": null
-}";
-
-      EnumClass enumClass = JsonConvert.DeserializeObject<EnumClass>(json, new StringEnumConverter());
-
-      Assert.AreEqual((StoreColor)1000, enumClass.StoreColor);
-      Assert.AreEqual((StoreColor)1000, enumClass.NullableStoreColor1);
-      Assert.AreEqual(null, enumClass.NullableStoreColor2);
-    }
-
-    [Test]
-    public void CamelCaseTextFlagEnumSerialization()
-    {
-      EnumContainer<FlagsTestEnum> c = new EnumContainer<FlagsTestEnum>
-      {
-        Enum = FlagsTestEnum.First | FlagsTestEnum.Second
-      };
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter { CamelCaseText = true });
-      Assert.AreEqual(@"{
-  ""Enum"": ""first, second""
-}", json);
-    }
-
-    [Test]
-    public void CamelCaseTextFlagEnumDeserialization()
-    {
-      string json = @"{
-  ""Enum"": ""first, second""
-}";
-
-      EnumContainer<FlagsTestEnum> c = JsonConvert.DeserializeObject<EnumContainer<FlagsTestEnum>>(json, new StringEnumConverter { CamelCaseText = true });
-      Assert.AreEqual(FlagsTestEnum.First | FlagsTestEnum.Second, c.Enum);
-    }
-  }
+﻿using System;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class StringEnumConverterTests : TestFixtureBase
+  {
+    public class EnumClass
+    {
+      public StoreColor StoreColor { get; set; }
+      public StoreColor? NullableStoreColor1 { get; set; }
+      public StoreColor? NullableStoreColor2 { get; set; }
+    }
+
+    public class EnumContainer<T>
+    {
+      public T Enum { get; set; }
+    }
+
+    [Flags]
+    public enum FlagsTestEnum
+    {
+      Default = 0,
+      First = 1,
+      Second = 2
+    }
+
+    public enum NegativeEnum
+    {
+      Negative = -1,
+      Zero = 0,
+      Positive = 1
+    }
+
+#if !NET20
+    public enum NamedEnum
+    {
+      [EnumMember(Value = "@first")]
+      First,
+      [EnumMember(Value = "@second")]
+      Second,
+      Third
+    }
+
+    public enum NamedEnumDuplicate
+    {
+      [EnumMember(Value = "Third")]
+      First,
+      [EnumMember(Value = "@second")]
+      Second,
+      Third
+    }
+#endif
+
+    public class NegativeEnumClass
+    {
+      public NegativeEnum Value1 { get; set; }
+      public NegativeEnum Value2 { get; set; }
+    }
+
+#if !NET20
+    [Test]
+    public void NamedEnumDuplicateTest()
+    {
+      ExceptionAssert.Throws<Exception>("Enum name 'Third' already exists on enum 'NamedEnumDuplicate'.",
+      () =>
+      {
+        EnumContainer<NamedEnumDuplicate> c = new EnumContainer<NamedEnumDuplicate>
+        {
+          Enum = NamedEnumDuplicate.First
+        };
+
+        JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter());
+      });
+    }
+
+    [Test]
+    public void SerializeNameEnumTest()
+    {
+      EnumContainer<NamedEnum> c = new EnumContainer<NamedEnum>
+        {
+          Enum = NamedEnum.First
+        };
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter());
+      Assert.AreEqual(@"{
+  ""Enum"": ""@first""
+}", json);
+
+      c = new EnumContainer<NamedEnum>
+      {
+        Enum = NamedEnum.Third
+      };
+
+      json = JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter());
+      Assert.AreEqual(@"{
+  ""Enum"": ""Third""
+}", json);
+    }
+
+    [Test]
+    public void DeserializeNameEnumTest()
+    {
+      string json = @"{
+  ""Enum"": ""@first""
+}";
+
+      EnumContainer<NamedEnum> c = JsonConvert.DeserializeObject<EnumContainer<NamedEnum>>(json, new StringEnumConverter());
+      Assert.AreEqual(NamedEnum.First, c.Enum);
+
+      json = @"{
+  ""Enum"": ""Third""
+}";
+
+      c = JsonConvert.DeserializeObject<EnumContainer<NamedEnum>>(json, new StringEnumConverter());
+      Assert.AreEqual(NamedEnum.Third, c.Enum);
+    }
+#endif
+
+    [Test]
+    public void SerializeEnumClass()
+    {
+      EnumClass enumClass = new EnumClass();
+      enumClass.StoreColor = StoreColor.Red;
+      enumClass.NullableStoreColor1 = StoreColor.White;
+      enumClass.NullableStoreColor2 = null;
+
+      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter());
+
+      Assert.AreEqual(@"{
+  ""StoreColor"": ""Red"",
+  ""NullableStoreColor1"": ""White"",
+  ""NullableStoreColor2"": null
+}", json);
+    }
+
+    [Test]
+    public void SerializeEnumClassWithCamelCase()
+    {
+      EnumClass enumClass = new EnumClass();
+      enumClass.StoreColor = StoreColor.Red;
+      enumClass.NullableStoreColor1 = StoreColor.DarkGoldenrod;
+      enumClass.NullableStoreColor2 = null;
+
+      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter { CamelCaseText = true });
+
+      Assert.AreEqual(@"{
+  ""StoreColor"": ""red"",
+  ""NullableStoreColor1"": ""darkGoldenrod"",
+  ""NullableStoreColor2"": null
+}", json);
+    }
+
+    [Test]
+    public void SerializeEnumClassUndefined()
+    {
+      EnumClass enumClass = new EnumClass();
+      enumClass.StoreColor = (StoreColor)1000;
+      enumClass.NullableStoreColor1 = (StoreColor)1000;
+      enumClass.NullableStoreColor2 = null;
+
+      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter());
+
+      Assert.AreEqual(@"{
+  ""StoreColor"": 1000,
+  ""NullableStoreColor1"": 1000,
+  ""NullableStoreColor2"": null
+}", json);
+    }
+
+    [Test]
+    public void SerializeFlagEnum()
+    {
+      EnumClass enumClass = new EnumClass();
+      enumClass.StoreColor = StoreColor.Red | StoreColor.White;
+      enumClass.NullableStoreColor1 = StoreColor.White & StoreColor.Yellow;
+      enumClass.NullableStoreColor2 = StoreColor.Red | StoreColor.White | StoreColor.Black;
+
+      string json = JsonConvert.SerializeObject(enumClass, Formatting.Indented, new StringEnumConverter());
+
+      Assert.AreEqual(@"{
+  ""StoreColor"": ""Red, White"",
+  ""NullableStoreColor1"": 0,
+  ""NullableStoreColor2"": ""Black, Red, White""
+}", json);
+    }
+
+    [Test]
+    public void SerializeNegativeEnum()
+    {
+      NegativeEnumClass negativeEnumClass = new NegativeEnumClass();
+      negativeEnumClass.Value1 = NegativeEnum.Negative;
+      negativeEnumClass.Value2 = (NegativeEnum) int.MinValue;
+
+      string json = JsonConvert.SerializeObject(negativeEnumClass, Formatting.Indented, new StringEnumConverter());
+
+      Assert.AreEqual(@"{
+  ""Value1"": ""Negative"",
+  ""Value2"": -2147483648
+}", json);
+    }
+
+    [Test]
+    public void DeserializeNegativeEnum()
+    {
+      string json = @"{
+  ""Value1"": ""Negative"",
+  ""Value2"": -2147483648
+}";
+
+      NegativeEnumClass negativeEnumClass = JsonConvert.DeserializeObject<NegativeEnumClass>(json, new StringEnumConverter());
+
+      Assert.AreEqual(NegativeEnum.Negative, negativeEnumClass.Value1);
+      Assert.AreEqual((NegativeEnum)int.MinValue, negativeEnumClass.Value2);
+    }
+
+    [Test]
+    public void DeserializeFlagEnum()
+    {
+      string json = @"{
+  ""StoreColor"": ""Red, White"",
+  ""NullableStoreColor1"": 0,
+  ""NullableStoreColor2"": ""black, Red, White""
+}";
+
+      EnumClass enumClass = JsonConvert.DeserializeObject<EnumClass>(json, new StringEnumConverter());
+
+      Assert.AreEqual(StoreColor.Red | StoreColor.White, enumClass.StoreColor);
+      Assert.AreEqual((StoreColor)0, enumClass.NullableStoreColor1);
+      Assert.AreEqual(StoreColor.Red | StoreColor.White | StoreColor.Black, enumClass.NullableStoreColor2);
+    }
+
+    [Test]
+    public void DeserializeEnumClass()
+    {
+      string json = @"{
+  ""StoreColor"": ""Red"",
+  ""NullableStoreColor1"": ""White"",
+  ""NullableStoreColor2"": null
+}";
+
+      EnumClass enumClass = JsonConvert.DeserializeObject<EnumClass>(json, new StringEnumConverter());
+
+      Assert.AreEqual(StoreColor.Red, enumClass.StoreColor);
+      Assert.AreEqual(StoreColor.White, enumClass.NullableStoreColor1);
+      Assert.AreEqual(null, enumClass.NullableStoreColor2);
+    }
+
+    [Test]
+    public void DeserializeEnumClassUndefined()
+    {
+      string json = @"{
+  ""StoreColor"": 1000,
+  ""NullableStoreColor1"": 1000,
+  ""NullableStoreColor2"": null
+}";
+
+      EnumClass enumClass = JsonConvert.DeserializeObject<EnumClass>(json, new StringEnumConverter());
+
+      Assert.AreEqual((StoreColor)1000, enumClass.StoreColor);
+      Assert.AreEqual((StoreColor)1000, enumClass.NullableStoreColor1);
+      Assert.AreEqual(null, enumClass.NullableStoreColor2);
+    }
+
+    [Test]
+    public void CamelCaseTextFlagEnumSerialization()
+    {
+      EnumContainer<FlagsTestEnum> c = new EnumContainer<FlagsTestEnum>
+      {
+        Enum = FlagsTestEnum.First | FlagsTestEnum.Second
+      };
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented, new StringEnumConverter { CamelCaseText = true });
+      Assert.AreEqual(@"{
+  ""Enum"": ""first, second""
+}", json);
+    }
+
+    [Test]
+    public void CamelCaseTextFlagEnumDeserialization()
+    {
+      string json = @"{
+  ""Enum"": ""first, second""
+}";
+
+      EnumContainer<FlagsTestEnum> c = JsonConvert.DeserializeObject<EnumContainer<FlagsTestEnum>>(json, new StringEnumConverter { CamelCaseText = true });
+      Assert.AreEqual(FlagsTestEnum.First | FlagsTestEnum.Second, c.Enum);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/VersionConverterTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/VersionConverterTests.cs
@@ -1,117 +1,117 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  public class VersionClass
-  {
-    public VersionClass(string version1, string version2)
-    {
-      this.StringProperty1 = "StringProperty1";
-      this.Version1 = new Version(version1);
-      this.Version2 = new Version(version2);
-      this.StringProperty2 = "StringProperty2";
-    }
-
-    public VersionClass()
-    {
-    }
-
-    public string StringProperty1 { get; set; }
-    public Version Version1 { get; set; }
-    public Version Version2 { get; set; }
-    public string StringProperty2 { get; set; }
-  }
-
-  [TestFixture]
-  public class VersionConverterTests : TestFixtureBase
-  {
-    private void SerializeVersionClass(string version1, string version2)
-    {
-      VersionClass versionClass = new VersionClass(version1, version2);
-
-      string json = JsonConvert.SerializeObject(versionClass, Formatting.Indented, new VersionConverter());
-
-      string expectedJson = string.Format(@"{{
-  ""StringProperty1"": ""StringProperty1"",
-  ""Version1"": ""{0}"",
-  ""Version2"": ""{1}"",
-  ""StringProperty2"": ""StringProperty2""
-}}", version1, version2);
-
-      Assert.AreEqual(expectedJson, json);
-    }
-
-    [Test]
-    public void SerializeVersionClass()
-    {
-      SerializeVersionClass("1.0.0.0", "2.0.0.0");
-      SerializeVersionClass("1.2.0.0", "2.3.0.0");
-      SerializeVersionClass("1.2.3.0", "2.3.4.0");
-      SerializeVersionClass("1.2.3.4", "2.3.4.5");
-
-      SerializeVersionClass("1.2", "2.3");
-      SerializeVersionClass("1.2.3", "2.3.4");
-      SerializeVersionClass("1.2.3.4", "2.3.4.5");
-    }
-
-    private void DeserializeVersionClass(string version1, string version2)
-    {
-      string json = string.Format(@"{{""StringProperty1"": ""StringProperty1"", ""Version1"": ""{0}"", ""Version2"": ""{1}"", ""StringProperty2"": ""StringProperty2""}}", version1, version2);
-      Version expectedVersion1 = new Version(version1);
-      Version expectedVersion2 = new Version(version2);
-
-      VersionClass versionClass = JsonConvert.DeserializeObject<VersionClass>(json, new VersionConverter());
-
-      Assert.AreEqual("StringProperty1", versionClass.StringProperty1);
-      Assert.AreEqual(expectedVersion1, versionClass.Version1);
-      Assert.AreEqual(expectedVersion2, versionClass.Version2);
-      Assert.AreEqual("StringProperty2", versionClass.StringProperty2);
-    }
-
-    [Test]
-    public void DeserializeVersionClass()
-    {
-      DeserializeVersionClass("1.0.0.0", "2.0.0.0");
-      DeserializeVersionClass("1.2.0.0", "2.3.0.0");
-      DeserializeVersionClass("1.2.3.0", "2.3.4.0");
-      DeserializeVersionClass("1.2.3.4", "2.3.4.5");
-
-      DeserializeVersionClass("1.2", "2.3");
-      DeserializeVersionClass("1.2.3", "2.3.4");
-      DeserializeVersionClass("1.2.3.4", "2.3.4.5");
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  public class VersionClass
+  {
+    public VersionClass(string version1, string version2)
+    {
+      this.StringProperty1 = "StringProperty1";
+      this.Version1 = new Version(version1);
+      this.Version2 = new Version(version2);
+      this.StringProperty2 = "StringProperty2";
+    }
+
+    public VersionClass()
+    {
+    }
+
+    public string StringProperty1 { get; set; }
+    public Version Version1 { get; set; }
+    public Version Version2 { get; set; }
+    public string StringProperty2 { get; set; }
+  }
+
+  [TestFixture]
+  public class VersionConverterTests : TestFixtureBase
+  {
+    private void SerializeVersionClass(string version1, string version2)
+    {
+      VersionClass versionClass = new VersionClass(version1, version2);
+
+      string json = JsonConvert.SerializeObject(versionClass, Formatting.Indented, new VersionConverter());
+
+      string expectedJson = string.Format(@"{{
+  ""StringProperty1"": ""StringProperty1"",
+  ""Version1"": ""{0}"",
+  ""Version2"": ""{1}"",
+  ""StringProperty2"": ""StringProperty2""
+}}", version1, version2);
+
+      Assert.AreEqual(expectedJson, json);
+    }
+
+    [Test]
+    public void SerializeVersionClass()
+    {
+      SerializeVersionClass("1.0.0.0", "2.0.0.0");
+      SerializeVersionClass("1.2.0.0", "2.3.0.0");
+      SerializeVersionClass("1.2.3.0", "2.3.4.0");
+      SerializeVersionClass("1.2.3.4", "2.3.4.5");
+
+      SerializeVersionClass("1.2", "2.3");
+      SerializeVersionClass("1.2.3", "2.3.4");
+      SerializeVersionClass("1.2.3.4", "2.3.4.5");
+    }
+
+    private void DeserializeVersionClass(string version1, string version2)
+    {
+      string json = string.Format(@"{{""StringProperty1"": ""StringProperty1"", ""Version1"": ""{0}"", ""Version2"": ""{1}"", ""StringProperty2"": ""StringProperty2""}}", version1, version2);
+      Version expectedVersion1 = new Version(version1);
+      Version expectedVersion2 = new Version(version2);
+
+      VersionClass versionClass = JsonConvert.DeserializeObject<VersionClass>(json, new VersionConverter());
+
+      Assert.AreEqual("StringProperty1", versionClass.StringProperty1);
+      Assert.AreEqual(expectedVersion1, versionClass.Version1);
+      Assert.AreEqual(expectedVersion2, versionClass.Version2);
+      Assert.AreEqual("StringProperty2", versionClass.StringProperty2);
+    }
+
+    [Test]
+    public void DeserializeVersionClass()
+    {
+      DeserializeVersionClass("1.0.0.0", "2.0.0.0");
+      DeserializeVersionClass("1.2.0.0", "2.3.0.0");
+      DeserializeVersionClass("1.2.3.0", "2.3.4.0");
+      DeserializeVersionClass("1.2.3.4", "2.3.4.5");
+
+      DeserializeVersionClass("1.2", "2.3");
+      DeserializeVersionClass("1.2.3", "2.3.4");
+      DeserializeVersionClass("1.2.3.4", "2.3.4.5");
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
@@ -1,1801 +1,1801 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !SILVERLIGHT && !NETFX_CORE
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Tests.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json;
-using System.IO;
-using System.Xml;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Linq;
-#if !NET20
-using System.Xml.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Converters
-{
-  [TestFixture]
-  public class XmlNodeConverterTest : TestFixtureBase
-  {
-    private string SerializeXmlNode(XmlNode node)
-    {
-      string json = JsonConvert.SerializeXmlNode(node, Formatting.Indented);
-      XmlNodeReader reader = new XmlNodeReader(node);
-
-#if !NET20
-      XObject xNode;
-      if (node is XmlDocument)
-      {
-        xNode = XDocument.Load(reader);
-      }
-      else if (node is XmlAttribute)
-      {
-        XmlAttribute attribute = (XmlAttribute) node;
-        xNode = new XAttribute(XName.Get(attribute.LocalName, attribute.NamespaceURI), attribute.Value);
-      }
-      else
-      {
-        reader.MoveToContent();
-        xNode = XNode.ReadFrom(reader);
-      }
-
-      string linqJson = JsonConvert.SerializeXNode(xNode, Formatting.Indented);
-
-      Assert.AreEqual(json, linqJson);
-#endif
-
-      return json;
-    }
-
-    private XmlNode DeserializeXmlNode(string json)
-    {
-      return DeserializeXmlNode(json, null);
-    }
-
-    private XmlNode DeserializeXmlNode(string json, string deserializeRootElementName)
-    {
-      JsonTextReader reader;
-
-      reader = new JsonTextReader(new StringReader(json));
-      reader.Read();
-      XmlNodeConverter converter = new XmlNodeConverter();
-      if (deserializeRootElementName != null)
-        converter.DeserializeRootElementName = deserializeRootElementName;
-
-      XmlNode node = (XmlNode)converter.ReadJson(reader, typeof (XmlDocument), null, new JsonSerializer());
-
-#if !NET20
-     string xmlText = node.OuterXml;
-
-      reader = new JsonTextReader(new StringReader(json));
-      reader.Read();
-      XDocument d = (XDocument) converter.ReadJson(reader, typeof (XDocument), null, new JsonSerializer());
-
-      string linqXmlText = d.ToString(SaveOptions.DisableFormatting);
-      if (d.Declaration != null)
-        linqXmlText = d.Declaration + linqXmlText;
-
-      Assert.AreEqual(xmlText, linqXmlText);
-#endif
-
-      return node;
-    }
-
-    [Test]
-    public void DocumentSerializeIndented()
-    {
-      string xml = @"<?xml version=""1.0"" standalone=""no""?>
-<?xml-stylesheet href=""classic.xsl"" type=""text/xml""?>
-<span class=""vevent"">
-  <a class=""url"" href=""http://www.web2con.com/"">
-    <span class=""summary"">Web 2.0 Conference<![CDATA[my escaped text]]></span>
-    <abbr class=""dtstart"" title=""2005-10-05"">October 5</abbr>
-    <abbr class=""dtend"" title=""2005-10-08"">7</abbr>
-    <span class=""location"">Argent Hotel, San Francisco, CA</span>
-  </a>
-</span>";
-      XmlDocument doc = new XmlDocument();
-      doc.LoadXml(xml);
-
-      string jsonText = SerializeXmlNode(doc);
-      string expected = @"{
-  ""?xml"": {
-    ""@version"": ""1.0"",
-    ""@standalone"": ""no""
-  },
-  ""?xml-stylesheet"": ""href=\""classic.xsl\"" type=\""text/xml\"""",
-  ""span"": {
-    ""@class"": ""vevent"",
-    ""a"": {
-      ""@class"": ""url"",
-      ""@href"": ""http://www.web2con.com/"",
-      ""span"": [
-        {
-          ""@class"": ""summary"",
-          ""#text"": ""Web 2.0 Conference"",
-          ""#cdata-section"": ""my escaped text""
-        },
-        {
-          ""@class"": ""location"",
-          ""#text"": ""Argent Hotel, San Francisco, CA""
-        }
-      ],
-      ""abbr"": [
-        {
-          ""@class"": ""dtstart"",
-          ""@title"": ""2005-10-05"",
-          ""#text"": ""October 5""
-        },
-        {
-          ""@class"": ""dtend"",
-          ""@title"": ""2005-10-08"",
-          ""#text"": ""7""
-        }
-      ]
-    }
-  }
-}";
-
-      Assert.AreEqual(expected, jsonText);
-
-      Console.WriteLine("DocumentSerializeIndented");
-      Console.WriteLine(jsonText);
-      Console.WriteLine();
-    }
-
-    [Test]
-    public void SerializeNodeTypes()
-    {
-      XmlDocument doc = new XmlDocument();
-      string jsonText;
-
-      Console.WriteLine("SerializeNodeTypes");
-
-      string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
-<xs:schema xs:id=""SomeID"" 
-	xmlns="""" 
-	xmlns:xs=""http://www.w3.org/2001/XMLSchema"" 
-	xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
-	<xs:element name=""MyDataSet"" msdata:IsDataSet=""true"">
-	</xs:element>
-</xs:schema>";
-
-      XmlDocument document = new XmlDocument();
-      document.LoadXml(xml);
-
-      // XmlAttribute
-      XmlAttribute attribute = document.DocumentElement.ChildNodes[0].Attributes["IsDataSet", "urn:schemas-microsoft-com:xml-msdata"];
-      attribute.Value = "true";
-
-      jsonText = JsonConvert.SerializeXmlNode(attribute);
-
-      Console.WriteLine(jsonText);
-      Assert.AreEqual(@"{""@msdata:IsDataSet"":""true""}", jsonText);
-
-#if !NET20
-      XDocument d = XDocument.Parse(xml);
-      XAttribute a = d.Root.Element("{http://www.w3.org/2001/XMLSchema}element").Attribute("{urn:schemas-microsoft-com:xml-msdata}IsDataSet");
-
-      jsonText = JsonConvert.SerializeXNode(a);
-
-      Assert.AreEqual(@"{""@msdata:IsDataSet"":""true""}", jsonText);
-#endif
-
-      // XmlProcessingInstruction
-      XmlProcessingInstruction instruction = doc.CreateProcessingInstruction("xml-stylesheet", @"href=""classic.xsl"" type=""text/xml""");
-
-      jsonText = JsonConvert.SerializeXmlNode(instruction);
-
-      Console.WriteLine(jsonText);
-      Assert.AreEqual(@"{""?xml-stylesheet"":""href=\""classic.xsl\"" type=\""text/xml\""""}", jsonText);
-
-
-      // XmlProcessingInstruction
-      XmlCDataSection cDataSection = doc.CreateCDataSection("<Kiwi>true</Kiwi>");
-
-      jsonText = JsonConvert.SerializeXmlNode(cDataSection);
-
-      Console.WriteLine(jsonText);
-      Assert.AreEqual(@"{""#cdata-section"":""<Kiwi>true</Kiwi>""}", jsonText);
-
-
-      // XmlElement
-      XmlElement element = doc.CreateElement("xs", "Choice", "http://www.w3.org/2001/XMLSchema");
-      element.SetAttributeNode(doc.CreateAttribute("msdata", "IsDataSet", "urn:schemas-microsoft-com:xml-msdata"));
-
-      XmlAttribute aa = doc.CreateAttribute(@"xmlns", "xs", "http://www.w3.org/2000/xmlns/");
-      aa.Value = "http://www.w3.org/2001/XMLSchema";
-      element.SetAttributeNode(aa);
-
-      aa = doc.CreateAttribute(@"xmlns", "msdata", "http://www.w3.org/2000/xmlns/");
-      aa.Value = "urn:schemas-microsoft-com:xml-msdata";
-      element.SetAttributeNode(aa);
-
-      element.AppendChild(instruction);
-      element.AppendChild(cDataSection);
-
-      doc.AppendChild(element);
-
-      jsonText = JsonConvert.SerializeXmlNode(element, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""xs:Choice"": {
-    ""@msdata:IsDataSet"": """",
-    ""@xmlns:xs"": ""http://www.w3.org/2001/XMLSchema"",
-    ""@xmlns:msdata"": ""urn:schemas-microsoft-com:xml-msdata"",
-    ""?xml-stylesheet"": ""href=\""classic.xsl\"" type=\""text/xml\"""",
-    ""#cdata-section"": ""<Kiwi>true</Kiwi>""
-  }
-}", jsonText);
-    }
-
-    [Test]
-    public void DocumentFragmentSerialize()
-    {
-      XmlDocument doc = new XmlDocument();
-
-      XmlDocumentFragment fragement = doc.CreateDocumentFragment();
-
-      fragement.InnerXml = "<Item>widget</Item><Item>widget</Item>";
-
-      string jsonText = JsonConvert.SerializeXmlNode(fragement);
-
-      string expected = @"{""Item"":[""widget"",""widget""]}";
-
-      Assert.AreEqual(expected, jsonText);
-
-      Console.WriteLine("DocumentFragmentSerialize");
-      Console.WriteLine(jsonText);
-      Console.WriteLine();
-    }
-
-    [Test]
-    public void NamespaceSerializeDeserialize()
-    {
-      string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
-<xs:schema xs:id=""SomeID"" 
-	xmlns="""" 
-	xmlns:xs=""http://www.w3.org/2001/XMLSchema"" 
-	xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
-	<xs:element name=""MyDataSet"" msdata:IsDataSet=""true"">
-		<xs:complexType>
-			<xs:choice maxOccurs=""unbounded"">
-				<xs:element name=""customers"" >
-					<xs:complexType >
-						<xs:sequence>
-							<xs:element name=""CustomerID"" type=""xs:integer"" 
-										 minOccurs=""0"" />
-							<xs:element name=""CompanyName"" type=""xs:string"" 
-										 minOccurs=""0"" />
-							<xs:element name=""Phone"" type=""xs:string"" />
-						</xs:sequence>
-					</xs:complexType>
-				</xs:element>
-			</xs:choice>
-		</xs:complexType>
-	</xs:element>
-</xs:schema>";
-
-      XmlDocument doc = new XmlDocument();
-      doc.LoadXml(xml);
-
-      string jsonText = SerializeXmlNode(doc);
-
-      string expected = @"{
-  ""?xml"": {
-    ""@version"": ""1.0"",
-    ""@encoding"": ""utf-8""
-  },
-  ""xs:schema"": {
-    ""@xs:id"": ""SomeID"",
-    ""@xmlns"": """",
-    ""@xmlns:xs"": ""http://www.w3.org/2001/XMLSchema"",
-    ""@xmlns:msdata"": ""urn:schemas-microsoft-com:xml-msdata"",
-    ""xs:element"": {
-      ""@name"": ""MyDataSet"",
-      ""@msdata:IsDataSet"": ""true"",
-      ""xs:complexType"": {
-        ""xs:choice"": {
-          ""@maxOccurs"": ""unbounded"",
-          ""xs:element"": {
-            ""@name"": ""customers"",
-            ""xs:complexType"": {
-              ""xs:sequence"": {
-                ""xs:element"": [
-                  {
-                    ""@name"": ""CustomerID"",
-                    ""@type"": ""xs:integer"",
-                    ""@minOccurs"": ""0""
-                  },
-                  {
-                    ""@name"": ""CompanyName"",
-                    ""@type"": ""xs:string"",
-                    ""@minOccurs"": ""0""
-                  },
-                  {
-                    ""@name"": ""Phone"",
-                    ""@type"": ""xs:string""
-                  }
-                ]
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}";
-
-      Assert.AreEqual(expected, jsonText);
-
-      XmlDocument deserializedDoc = (XmlDocument)DeserializeXmlNode(jsonText);
-
-      Assert.AreEqual(doc.InnerXml, deserializedDoc.InnerXml);
-
-      Console.WriteLine("NamespaceSerializeDeserialize");
-      Console.WriteLine(jsonText);
-      Console.WriteLine(deserializedDoc.InnerXml);
-      Console.WriteLine();
-    }
-
-    [Test]
-    public void DocumentDeserialize()
-    {
-      string jsonText = @"{
-  ""?xml"": {
-    ""@version"": ""1.0"",
-    ""@standalone"": ""no""
-  },
-  ""span"": {
-    ""@class"": ""vevent"",
-    ""a"": {
-      ""@class"": ""url"",
-      ""@href"": ""http://www.web2con.com/"",
-      ""span"": {
-        ""@class"": ""summary"",
-        ""#text"": ""Web 2.0 Conference"",
-        ""#cdata-section"": ""my escaped text""
-      }
-    }
-  }
-}";
-
-      XmlDocument doc = (XmlDocument)DeserializeXmlNode(jsonText);
-
-      string expected = @"<?xml version=""1.0"" standalone=""no""?>
-<span class=""vevent"">
-  <a class=""url"" href=""http://www.web2con.com/"">
-    <span class=""summary"">Web 2.0 Conference<![CDATA[my escaped text]]></span>
-  </a>
-</span>";
-
-      string formattedXml = GetIndentedInnerXml(doc);
-
-      Console.WriteLine("DocumentDeserialize");
-      Console.WriteLine(formattedXml);
-      Console.WriteLine();
-
-      Assert.AreEqual(expected, formattedXml);
-    }
-
-    private string GetIndentedInnerXml(XmlNode node)
-    {
-      XmlWriterSettings settings = new XmlWriterSettings();
-      settings.Indent = true;
-
-      StringWriter sw = new StringWriter();
-
-      using (XmlWriter writer = XmlWriter.Create(sw, settings))
-      {
-        node.WriteTo(writer);
-      }
-
-      return sw.ToString();
-    }
-
-    [Test]
-    public void SingleTextNode()
-    {
-      string xml = @"<?xml version=""1.0"" standalone=""no""?>
-			<root>
-			  <person id=""1"">
-	  			<name>Alan</name>
-		  		<url>http://www.google.com</url>
-			  </person>
-			  <person id=""2"">
-			  	<name>Louis</name>
-				  <url>http://www.yahoo.com</url>
-			  </person>
-			</root>";
-
-      XmlDocument doc = new XmlDocument();
-      doc.LoadXml(xml);
-
-      string jsonText = SerializeXmlNode(doc);
-
-      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
-
-      Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);
-    }
-
-    [Test]
-    public void EmptyNode()
-    {
-      string xml = @"<?xml version=""1.0"" standalone=""no""?>
-			<root>
-			  <person id=""1"">
-				<name>Alan</name>
-				<url />
-			  </person>
-			  <person id=""2"">
-				<name>Louis</name>
-				<url>http://www.yahoo.com</url>
-			  </person>
-			</root>";
-
-      XmlDocument doc = new XmlDocument();
-      doc.LoadXml(xml);
-
-      string jsonText = SerializeXmlNode(doc);
-
-      Console.WriteLine(jsonText);
-
-      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
-
-      Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);
-    }
-
-    [Test]
-    public void OtherElementDataTypes()
-    {
-      string jsonText = @"{""?xml"":{""@version"":""1.0"",""@standalone"":""no""},""root"":{""person"":[{""@id"":""1"",""Float"":2.5,""Integer"":99},{""@id"":""2"",""Boolean"":true,""date"":""\/Date(954374400000)\/""}]}}";
-
-      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
-
-      string expected = @"<?xml version=""1.0"" standalone=""no""?><root><person id=""1""><Float>2.5</Float><Integer>99</Integer></person><person id=""2""><Boolean>true</Boolean><date>2000-03-30T00:00:00Z</date></person></root>";
-
-      Assert.AreEqual(expected, newDoc.InnerXml);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "XmlNodeConverter can only convert JSON that begins with an object.")]
-    public void NoRootObject()
-    {
-      XmlDocument newDoc = (XmlDocument)JsonConvert.DeserializeXmlNode(@"[1]");
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.")]
-    public void RootObjectMultipleProperties()
-    {
-      XmlDocument newDoc = (XmlDocument)JsonConvert.DeserializeXmlNode(@"{Prop1:1,Prop2:2}");
-    }
-
-    [Test]
-    public void JavaScriptConstructor()
-    {
-      string jsonText = @"{root:{r:new Date(34343, 55)}}";
-
-      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
-
-      string expected = @"<root><r><Date>34343</Date><Date>55</Date></r></root>";
-
-      Assert.AreEqual(expected, newDoc.InnerXml);
-
-      string json = SerializeXmlNode(newDoc);
-      expected = @"{
-  ""root"": {
-    ""r"": {
-      ""Date"": [
-        ""34343"",
-        ""55""
-      ]
-    }
-  }
-}";
-
-      Assert.AreEqual(expected, json);
-    }
-
-    [Test]
-    public void ForceJsonArray()
-    {
-      string arrayXml = @"<root xmlns:json=""http://james.newtonking.com/projects/json"">
-			  <person id=""1"">
-				  <name>Alan</name>
-				  <url>http://www.google.com</url>
-				  <role json:Array=""true"">Admin</role>
-			  </person>
-			</root>";
-
-      XmlDocument arrayDoc = new XmlDocument();
-      arrayDoc.LoadXml(arrayXml);
-
-      string arrayJsonText = SerializeXmlNode(arrayDoc);
-      string expected = @"{
-  ""root"": {
-    ""person"": {
-      ""@id"": ""1"",
-      ""name"": ""Alan"",
-      ""url"": ""http://www.google.com"",
-      ""role"": [
-        ""Admin""
-      ]
-    }
-  }
-}";
-      Assert.AreEqual(expected, arrayJsonText);
-
-      arrayXml = @"<root xmlns:json=""http://james.newtonking.com/projects/json"">
-			  <person id=""1"">
-				  <name>Alan</name>
-				  <url>http://www.google.com</url>
-				  <role json:Array=""true"">Admin1</role>
-				  <role json:Array=""true"">Admin2</role>
-			  </person>
-			</root>";
-
-      arrayDoc = new XmlDocument();
-      arrayDoc.LoadXml(arrayXml);
-
-      arrayJsonText = SerializeXmlNode(arrayDoc);
-      expected = @"{
-  ""root"": {
-    ""person"": {
-      ""@id"": ""1"",
-      ""name"": ""Alan"",
-      ""url"": ""http://www.google.com"",
-      ""role"": [
-        ""Admin1"",
-        ""Admin2""
-      ]
-    }
-  }
-}";
-      Assert.AreEqual(expected, arrayJsonText);
-
-      arrayXml = @"<root xmlns:json=""http://james.newtonking.com/projects/json"">
-			  <person id=""1"">
-				  <name>Alan</name>
-				  <url>http://www.google.com</url>
-				  <role json:Array=""false"">Admin1</role>
-			  </person>
-			</root>";
-
-      arrayDoc = new XmlDocument();
-      arrayDoc.LoadXml(arrayXml);
-
-      arrayJsonText = SerializeXmlNode(arrayDoc);
-      expected = @"{
-  ""root"": {
-    ""person"": {
-      ""@id"": ""1"",
-      ""name"": ""Alan"",
-      ""url"": ""http://www.google.com"",
-      ""role"": ""Admin1""
-    }
-  }
-}";
-      Assert.AreEqual(expected, arrayJsonText);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.")]
-    public void MultipleRootPropertiesXmlDocument()
-    {
-      string json = @"{""count"": 773840,""photos"": null}";
-
-      JsonConvert.DeserializeXmlNode(json);
-    }
-
-#if !NET20
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.")]
-    public void MultipleRootPropertiesXDocument()
-    {
-      string json = @"{""count"": 773840,""photos"": null}";
-
-      JsonConvert.DeserializeXNode(json);
-    }
-#endif
-
-    [Test]
-    public void MultipleRootPropertiesAddRootElement()
-    {
-      string json = @"{""count"": 773840,""photos"": 773840}";
-
-      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot");
-
-      Assert.AreEqual(@"<myRoot><count>773840</count><photos>773840</photos></myRoot>", newDoc.InnerXml);
-
-#if !NET20
-     XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot");
-
-      Assert.AreEqual(@"<myRoot><count>773840</count><photos>773840</photos></myRoot>", newXDoc.ToString(SaveOptions.DisableFormatting));
-#endif
-    }
-
-    [Test]
-    public void NestedArrays()
-    {
-      string json = @"{
-  ""available_sizes"": [
-    [
-      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg"",
-      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg""
-    ],
-    [
-      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg"",
-      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
-    ],
-    [
-      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
-    ]
-  ]
-}";
-
-      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot");
-
-      string xml = IndentXml(newDoc.InnerXml);
-
-      Assert.AreEqual(@"<myRoot>
-  <available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-</myRoot>", IndentXml(newDoc.InnerXml));
-
-#if !NET20
-      XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot");
-
-      Assert.AreEqual(@"<myRoot>
-  <available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-</myRoot>", IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting)));
-#endif
-
-      string newJson = JsonConvert.SerializeXmlNode(newDoc, Formatting.Indented);
-      Console.WriteLine(newJson);
-    }
-
-    [Test]
-    public void RoundTripNestedArrays()
-    {
-      string json = @"{
-  ""available_sizes"": [
-    [
-      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg"",
-      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg""
-    ],
-    [
-      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg"",
-      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
-    ],
-    [
-      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
-    ]
-  ]
-}";
-
-      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot", true);
-
-      Assert.AreEqual(@"<myRoot>
-  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <available_sizes json:Array=""true"">assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-</myRoot>", IndentXml(newDoc.InnerXml));
-
-#if !NET20
-      XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot", true);
-
-      Console.WriteLine(IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting)));
-
-      Assert.AreEqual(@"<myRoot>
-  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <available_sizes json:Array=""true"">assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
-  </available_sizes>
-</myRoot>", IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting)));
-#endif
-
-      string newJson = JsonConvert.SerializeXmlNode(newDoc, Formatting.Indented, true);
-      Assert.AreEqual(json, newJson);
-    }
-
-    [Test]
-    public void MultipleNestedArraysToXml()
-    {
-      string json = @"{
-  ""available_sizes"": [
-    [
-      [113, 150],
-      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg""
-    ],
-    [
-      [189, 250],
-      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
-    ],
-    [
-      [341, 450],
-      ""assets/images/resized/0001/1070/11070v1-max-450x450.jpg""
-    ]
-  ]
-}";
-
-      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot");
-
-      Assert.AreEqual(@"<myRoot><available_sizes><available_sizes><available_sizes>113</available_sizes><available_sizes>150</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>189</available_sizes><available_sizes>250</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>341</available_sizes><available_sizes>450</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-450x450.jpg</available_sizes></available_sizes></myRoot>", newDoc.InnerXml);
-
-#if !NET20
-      XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot");
-
-      Assert.AreEqual(@"<myRoot><available_sizes><available_sizes><available_sizes>113</available_sizes><available_sizes>150</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>189</available_sizes><available_sizes>250</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>341</available_sizes><available_sizes>450</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-450x450.jpg</available_sizes></available_sizes></myRoot>", newXDoc.ToString(SaveOptions.DisableFormatting));
-#endif
-    }
-
-    [Test]
-    public void Encoding()
-    {
-      XmlDocument doc = new XmlDocument();
-
-      doc.LoadXml(@"<name>O""Connor</name>"); // i use "" so it will be easier to see the  problem
-
-      string json = SerializeXmlNode(doc);
-      Assert.AreEqual(@"{
-  ""name"": ""O\""Connor""
-}", json);
-    }
-
-    [Test]
-    public void SerializeComment()
-    {
-      string xml = @"<span class=""vevent"">
-  <a class=""url"" href=""http://www.web2con.com/"">Text</a><!-- Hi! -->
-</span>";
-      XmlDocument doc = new XmlDocument();
-      doc.LoadXml(xml);
-
-      string jsonText = SerializeXmlNode(doc);
-
-      string expected = @"{
-  ""span"": {
-    ""@class"": ""vevent"",
-    ""a"": {
-      ""@class"": ""url"",
-      ""@href"": ""http://www.web2con.com/"",
-      ""#text"": ""Text""
-    }/* Hi! */
-  }
-}";
-
-      Assert.AreEqual(expected, jsonText);
-
-      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
-      Assert.AreEqual(@"<span class=""vevent""><a class=""url"" href=""http://www.web2con.com/"">Text</a><!-- Hi! --></span>", newDoc.InnerXml);
-    }
-
-    [Test]
-    public void SerializeExample()
-    {
-      string xml = @"<?xml version=""1.0"" standalone=""no""?>
-			<root>
-			  <person id=""1"">
-				<name>Alan</name>
-				<url>http://www.google.com</url>
-			  </person>
-			  <person id=""2"">
-				<name>Louis</name>
-				<url>http://www.yahoo.com</url>
-			  </person>
-			</root>";
-
-      XmlDocument doc = new XmlDocument();
-      doc.LoadXml(xml);
-
-      string jsonText = SerializeXmlNode(doc);
-      // {
-      //   "?xml": {
-      //     "@version": "1.0",
-      //     "@standalone": "no"
-      //   },
-      //   "root": {
-      //     "person": [
-      //       {
-      //         "@id": "1",
-      //         "name": "Alan",
-      //         "url": "http://www.google.com"
-      //       },
-      //       {
-      //         "@id": "2",
-      //         "name": "Louis",
-      //         "url": "http://www.yahoo.com"
-      //       }
-      //     ]
-      //   }
-      // }
-
-      // format
-      jsonText = JObject.Parse(jsonText).ToString();
-
-      Assert.AreEqual(@"{
-  ""?xml"": {
-    ""@version"": ""1.0"",
-    ""@standalone"": ""no""
-  },
-  ""root"": {
-    ""person"": [
-      {
-        ""@id"": ""1"",
-        ""name"": ""Alan"",
-        ""url"": ""http://www.google.com""
-      },
-      {
-        ""@id"": ""2"",
-        ""name"": ""Louis"",
-        ""url"": ""http://www.yahoo.com""
-      }
-    ]
-  }
-}", jsonText);
-
-      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
-
-      Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);
-    }
-
-    [Test]
-    public void DeserializeExample()
-    {
-      string json = @"{
-        ""?xml"": {
-          ""@version"": ""1.0"",
-          ""@standalone"": ""no""
-        },
-        ""root"": {
-          ""person"": [
-            {
-              ""@id"": ""1"",
-              ""name"": ""Alan"",
-              ""url"": ""http://www.google.com""
-            },
-            {
-              ""@id"": ""2"",
-              ""name"": ""Louis"",
-              ""url"": ""http://www.yahoo.com""
-            }
-          ]
-        }
-      }";
-
-      XmlDocument doc = (XmlDocument)DeserializeXmlNode(json);
-      // <?xml version="1.0" standalone="no"?>
-      // <root>
-      //   <person id="1">
-      //   <name>Alan</name>
-      //   <url>http://www.google.com</url>
-      //   </person>
-      //   <person id="2">
-      //   <name>Louis</name>
-      //   <url>http://www.yahoo.com</url>
-      //   </person>
-      // </root>
-
-      Assert.AreEqual(@"<?xml version=""1.0"" standalone=""no""?>
-<root>
-<person id=""1"">
-<name>Alan</name>
-<url>http://www.google.com</url>
-</person>
-<person id=""2"">
-<name>Louis</name>
-<url>http://www.yahoo.com</url>
-</person>
-</root>".Replace(Environment.NewLine, string.Empty), doc.InnerXml);
-    }
-
-    [Test]
-    public void SerializeDeserializeSpecialProperties()
-    {
-      PreserveReferencesHandlingTests.CircularDictionary circularDictionary = new PreserveReferencesHandlingTests.CircularDictionary();
-      circularDictionary.Add("other", new PreserveReferencesHandlingTests.CircularDictionary { { "blah", null } });
-      circularDictionary.Add("self", circularDictionary);
-
-      string json = JsonConvert.SerializeObject(circularDictionary, Formatting.Indented,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""other"": {
-    ""$id"": ""2"",
-    ""blah"": null
-  },
-  ""self"": {
-    ""$ref"": ""1""
-  }
-}", json);
-
-      XmlNode node = DeserializeXmlNode(json, "root");
-      string xml = GetIndentedInnerXml(node);
-      string expected = @"<?xml version=""1.0"" encoding=""utf-16""?>
-<root xmlns:json=""http://james.newtonking.com/projects/json"" json:id=""1"">
-  <other json:id=""2"">
-    <blah />
-  </other>
-  <self json:ref=""1"" />
-</root>";
-
-      Assert.AreEqual(expected, xml);
-
-      string xmlJson = SerializeXmlNode(node);
-      string expectedXmlJson = @"{
-  ""root"": {
-    ""$id"": ""1"",
-    ""other"": {
-      ""$id"": ""2"",
-      ""blah"": null
-    },
-    ""self"": {
-      ""$ref"": ""1""
-    }
-  }
-}";
-
-      Assert.AreEqual(expectedXmlJson, xmlJson);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "XmlNodeConverter cannot convert JSON with an empty property name to XML.")]
-    public void EmptyPropertyName()
-    {
-      string json = @"{
-  ""8452309520V2"": {
-    """": {
-      ""CLIENT"": {
-        ""ID_EXPIRATION_1"": {
-          ""VALUE"": ""12/12/2000"",
-          ""DATATYPE"": ""D"",
-          ""MSG"": ""Missing Identification Exp. Date 1""
-        },
-        ""ID_ISSUEDATE_1"": {
-          ""VALUE"": """",
-          ""DATATYPE"": ""D"",
-          ""MSG"": ""Missing Identification Issue Date 1""
-        }
-      }
-    },
-    ""457463534534"": {
-      ""ACCOUNT"": {
-        ""FUNDING_SOURCE"": {
-          ""VALUE"": ""FS0"",
-          ""DATATYPE"": ""L"",
-          ""MSG"": ""Missing Source of Funds""
-        }
-      }
-    }
-  }
-}{
-  ""34534634535345"": {
-    """": {
-      ""CLIENT"": {
-        ""ID_NUMBER_1"": {
-          ""VALUE"": """",
-          ""DATATYPE"": ""S"",
-          ""MSG"": ""Missing Picture ID""
-        },
-        ""ID_EXPIRATION_1"": {
-          ""VALUE"": ""12/12/2000"",
-          ""DATATYPE"": ""D"",
-          ""MSG"": ""Missing Picture ID""
-        },
-        ""WALK_IN"": {
-          ""VALUE"": """",
-          ""DATATYPE"": ""L"",
-          ""MSG"": ""Missing Walk in""
-        },
-        ""PERSONAL_MEETING"": {
-          ""VALUE"": ""PM1"",
-          ""DATATYPE"": ""L"",
-          ""MSG"": ""Missing Met Client in Person""
-        },
-        ""ID_ISSUEDATE_1"": {
-          ""VALUE"": """",
-          ""DATATYPE"": ""D"",
-          ""MSG"": ""Missing Picture ID""
-        },
-        ""PHOTO_ID"": {
-          ""VALUE"": """",
-          ""DATATYPE"": ""L"",
-          ""MSG"": ""Missing Picture ID""
-        },
-        ""ID_TYPE_1"": {
-          ""VALUE"": """",
-          ""DATATYPE"": ""L"",
-          ""MSG"": ""Missing Picture ID""
-        }
-      }
-    },
-    ""45635624523"": {
-      ""ACCOUNT"": {
-        ""FUNDING_SOURCE"": {
-          ""VALUE"": ""FS1"",
-          ""DATATYPE"": ""L"",
-          ""MSG"": ""Missing Source of Funds""
-        }
-      }
-    }
-  }
-}";
-
-      DeserializeXmlNode(json);
-    }
-
-    [Test]
-    public void SingleItemArrayPropertySerialization()
-    {
-      Product product = new Product();
-
-      product.Name = "Apple";
-      product.ExpiryDate = new DateTime(2008, 12, 28, 0, 0, 0, DateTimeKind.Utc);
-      product.Price = 3.99M;
-      product.Sizes = new string[] { "Small" };
-
-      string output = JsonConvert.SerializeObject(product, new IsoDateTimeConverter());
-
-      XmlDocument xmlProduct = JsonConvert.DeserializeXmlNode(output, "product", true);
-
-      Assert.AreEqual(@"<product>
-  <Name>Apple</Name>
-  <ExpiryDate>2008-12-28T00:00:00Z</ExpiryDate>
-  <Price>3.99</Price>
-  <Sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">Small</Sizes>
-</product>", IndentXml(xmlProduct.InnerXml));
-
-      string output2 = JsonConvert.SerializeXmlNode(xmlProduct.DocumentElement, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""product"": {
-    ""Name"": ""Apple"",
-    ""ExpiryDate"": ""2008-12-28T00:00:00Z"",
-    ""Price"": ""3.99"",
-    ""Sizes"": [
-      ""Small""
-    ]
-  }
-}", output2);
-    }
-
-    public class TestComplexArrayClass
-    {
-      public string Name { get; set; }
-      public IList<Product> Products { get; set; }
-    }
-
-    [Test]
-    public void ComplexSingleItemArrayPropertySerialization()
-    {
-      TestComplexArrayClass o = new TestComplexArrayClass
-        {
-          Name = "Hi",
-          Products = new List<Product>
-            {
-              new Product { Name = "First" }
-            }
-        };
-
-      string output = JsonConvert.SerializeObject(o, new IsoDateTimeConverter());
-
-      XmlDocument xmlProduct = JsonConvert.DeserializeXmlNode(output, "test", true);
-
-      Assert.AreEqual(@"<test>
-  <Name>Hi</Name>
-  <Products json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <Name>First</Name>
-    <ExpiryDate>2000-01-01T00:00:00Z</ExpiryDate>
-    <Price>0</Price>
-    <Sizes />
-  </Products>
-</test>", IndentXml(xmlProduct.InnerXml));
-
-      string output2 = JsonConvert.SerializeXmlNode(xmlProduct.DocumentElement, Formatting.Indented, true);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""Hi"",
-  ""Products"": [
-    {
-      ""Name"": ""First"",
-      ""ExpiryDate"": ""2000-01-01T00:00:00Z"",
-      ""Price"": ""0"",
-      ""Sizes"": null
-    }
-  ]
-}", output2);
-    }
-
-    private string IndentXml(string xml)
-    {
-      XmlReader reader = XmlReader.Create(new StringReader(xml));
-
-      StringWriter sw = new StringWriter();
-      XmlWriter writer = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true });
-
-      while (reader.Read())
-      {
-        writer.WriteNode(reader, false);
-      }
-
-      writer.Flush();
-
-      return sw.ToString();
-    }
-
-    [Test]
-    public void OmitRootObject()
-    {
-      string xml = @"<test>
-  <Name>Hi</Name>
-  <Name>Hi</Name>
-  <Products json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
-    <Name>First</Name>
-    <ExpiryDate>2000-01-01T00:00:00Z</ExpiryDate>
-    <Price>0</Price>
-    <Sizes />
-  </Products>
-</test>";
-
-      XmlDocument d = new XmlDocument();
-      d.LoadXml(xml);
-
-      string output = JsonConvert.SerializeXmlNode(d, Formatting.Indented, true);
-
-      Assert.AreEqual(@"{
-  ""Name"": [
-    ""Hi"",
-    ""Hi""
-  ],
-  ""Products"": [
-    {
-      ""Name"": ""First"",
-      ""ExpiryDate"": ""2000-01-01T00:00:00Z"",
-      ""Price"": ""0"",
-      ""Sizes"": null
-    }
-  ]
-}", output);
-    }
-
-    [Test]
-    public void EmtpyElementWithArrayAttributeShouldWriteAttributes()
-    {
-      string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
-<root xmlns:json=""http://james.newtonking.com/projects/json"">
-<A>
-<B name=""sample"" json:Array=""true""/>
-<C></C>
-<C></C>
-</A>
-</root>";
-
-      XmlDocument d = new XmlDocument();
-      d.LoadXml(xml);
-
-      string json = JsonConvert.SerializeXmlNode(d, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""?xml"": {
-    ""@version"": ""1.0"",
-    ""@encoding"": ""utf-8""
-  },
-  ""root"": {
-    ""A"": {
-      ""B"": [
-        {
-          ""@name"": ""sample""
-        }
-      ],
-      ""C"": [
-        null,
-        null
-      ]
-    }
-  }
-}", json);
-    }
-
-    [Test]
-    public void DeserializeNonInt64IntegerValues()
-    {
-      var dict = new Dictionary<string, object> { { "Int16", (short)1 }, { "Float", 2f }, { "Int32", 3 } };
-      var obj = JObject.FromObject(dict);
-      var serializer = JsonSerializer.Create(new JsonSerializerSettings { Converters = { new XmlNodeConverter() { DeserializeRootElementName = "root" } } });
-      using (var reader = obj.CreateReader())
-      {
-        var value = (XmlDocument)serializer.Deserialize(reader, typeof(XmlDocument));
-
-        Assert.AreEqual(@"<root><Int16>1</Int16><Float>2</Float><Int32>3</Int32></root>", value.InnerXml);
-      }
-    }
-
-    [Test]
-    public void DeserializingBooleanValues()
-    {
-      MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(@"{root:{""@booleanType"":true}}"));
-      MemoryStream xml = new MemoryStream();
-
-      JsonBodyToSoapXml(ms, xml);
-
-      string xmlString = System.Text.Encoding.UTF8.GetString(xml.ToArray());
-
-      Assert.AreEqual(@"﻿<?xml version=""1.0"" encoding=""utf-8""?><root booleanType=""true"" />", xmlString);
-    }
-
-    private static void JsonBodyToSoapXml(Stream json, Stream xml)
-    {
-      Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
-      settings.Converters.Add(new Newtonsoft.Json.Converters.XmlNodeConverter());
-      Newtonsoft.Json.JsonSerializer serializer = Newtonsoft.Json.JsonSerializer.Create(settings);
-      using (Newtonsoft.Json.JsonTextReader reader = new Newtonsoft.Json.JsonTextReader(new System.IO.StreamReader(json)))
-      {
-        XmlDocument doc = (XmlDocument)serializer.Deserialize(reader, typeof(XmlDocument));
-        if (reader.Read() && reader.TokenType != JsonToken.Comment)
-          throw new JsonSerializationException("Additional text found in JSON string after finishing deserializing object.");
-        using (XmlWriter writer = XmlWriter.Create(xml))
-        {
-          doc.Save(writer);
-        }
-      }
-    }
-
-#if !NET20
-    [Test]
-    public void DeserializeXNodeDefaultNamespace()
-    {
-      string xaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
-  <Grid.ColumnDefinitions>
-    <ColumnDefinition Width=""63*"" />
-    <ColumnDefinition Width=""320*"" />
-  </Grid.ColumnDefinitions>
-  <Grid.RowDefinitions xmlns="""">
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-  </Grid.RowDefinitions>
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
-</Grid>";
-
-      string json = JsonConvert.SerializeXNode(XDocument.Parse(xaml), Formatting.Indented);
-
-      string expectedJson = @"{
-  ""Grid"": {
-    ""@xmlns"": ""http://schemas.microsoft.com/winfx/2006/xaml/presentation"",
-    ""@xmlns:x"": ""http://schemas.microsoft.com/winfx/2006/xaml"",
-    ""@xmlns:toolkit"": ""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"",
-    ""@Style"": ""{StaticResource trimFormGrid}"",
-    ""@x:Name"": ""TrimObjectForm"",
-    ""Grid.ColumnDefinitions"": {
-      ""ColumnDefinition"": [
-        {
-          ""@Width"": ""63*""
-        },
-        {
-          ""@Width"": ""320*""
-        }
-      ]
-    },
-    ""Grid.RowDefinitions"": {
-      ""@xmlns"": """",
-      ""RowDefinition"": [
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null
-      ]
-    },
-    ""TextBox"": [
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordTypedTitle"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""0"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordExternalReference"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""1"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding Author, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordAuthor"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""4"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding Container, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordContainer"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""5"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordIsEnclosed"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""6"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordAssignee"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""7"",
-        ""@xmlns"": """"
-      }
-    ],
-    ""toolkit:DatePicker"": [
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
-        ""@Value"": ""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordDateCreated"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""2""
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
-        ""@Value"": ""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordDateDue"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""3""
-      }
-    ],
-    ""TextBlock"": [
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Title (Free Text Part)"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""0"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""External ID"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""1"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Date Created"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""2"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Date Due"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""3"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Author"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""4"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Container"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""5"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Enclosed?"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""6"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Assignee"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""7"",
-        ""@xmlns"": """"
-      }
-    ]
-  }
-}";
-
-      Assert.AreEqual(expectedJson, json);
-
-      XNode node = JsonConvert.DeserializeXNode(json);
-
-      string xaml2 = node.ToString();
-
-      string expectedXaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
-  <Grid.ColumnDefinitions>
-    <ColumnDefinition Width=""63*"" />
-    <ColumnDefinition Width=""320*"" />
-  </Grid.ColumnDefinitions>
-  <Grid.RowDefinitions xmlns="""">
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-  </Grid.RowDefinitions>
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
-  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
-</Grid>";
-
-      Assert.AreEqual(expectedXaml, xaml2);
-    }
-#endif
-
-    [Test]
-    public void DeserializeXmlNodeDefaultNamespace()
-    {
-      string xaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
-  <Grid.ColumnDefinitions>
-    <ColumnDefinition Width=""63*"" />
-    <ColumnDefinition Width=""320*"" />
-  </Grid.ColumnDefinitions>
-  <Grid.RowDefinitions xmlns="""">
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-  </Grid.RowDefinitions>
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
-</Grid>";
-
-      XmlDocument document = new XmlDocument();
-      document.LoadXml(xaml);
-
-      string json = JsonConvert.SerializeXmlNode(document, Formatting.Indented);
-
-      string expectedJson = @"{
-  ""Grid"": {
-    ""@xmlns"": ""http://schemas.microsoft.com/winfx/2006/xaml/presentation"",
-    ""@xmlns:x"": ""http://schemas.microsoft.com/winfx/2006/xaml"",
-    ""@xmlns:toolkit"": ""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"",
-    ""@Style"": ""{StaticResource trimFormGrid}"",
-    ""@x:Name"": ""TrimObjectForm"",
-    ""Grid.ColumnDefinitions"": {
-      ""ColumnDefinition"": [
-        {
-          ""@Width"": ""63*""
-        },
-        {
-          ""@Width"": ""320*""
-        }
-      ]
-    },
-    ""Grid.RowDefinitions"": {
-      ""@xmlns"": """",
-      ""RowDefinition"": [
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null,
-        null
-      ]
-    },
-    ""TextBox"": [
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordTypedTitle"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""0"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordExternalReference"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""1"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding Author, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordAuthor"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""4"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding Container, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordContainer"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""5"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordIsEnclosed"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""6"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
-        ""@Text"": ""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordAssignee"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""7"",
-        ""@xmlns"": """"
-      }
-    ],
-    ""toolkit:DatePicker"": [
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
-        ""@Value"": ""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordDateCreated"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""2""
-      },
-      {
-        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
-        ""@Value"": ""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"",
-        ""@Name"": ""RecordDateDue"",
-        ""@Grid.Column"": ""1"",
-        ""@Grid.Row"": ""3""
-      }
-    ],
-    ""TextBlock"": [
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Title (Free Text Part)"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""0"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""External ID"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""1"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Date Created"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""2"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Date Due"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""3"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Author"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""4"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Container"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""5"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Enclosed?"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""6"",
-        ""@xmlns"": """"
-      },
-      {
-        ""@Grid.Column"": ""0"",
-        ""@Text"": ""Assignee"",
-        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
-        ""@Grid.Row"": ""7"",
-        ""@xmlns"": """"
-      }
-    ]
-  }
-}";
-
-      Assert.AreEqual(expectedJson, json);
-
-      XmlNode node = JsonConvert.DeserializeXmlNode(json);
-
-      StringWriter sw = new StringWriter();
-      XmlWriter writer = XmlWriter.Create(sw, new XmlWriterSettings
-        {
-          Indent = true,
-          OmitXmlDeclaration = true
-        });
-      node.WriteTo(writer);
-      writer.Flush();
-
-      string xaml2 = sw.ToString();
-
-      string expectedXaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
-  <Grid.ColumnDefinitions>
-    <ColumnDefinition Width=""63*"" />
-    <ColumnDefinition Width=""320*"" />
-  </Grid.ColumnDefinitions>
-  <Grid.RowDefinitions xmlns="""">
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-    <RowDefinition />
-  </Grid.RowDefinitions>
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
-  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
-  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
-  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
-  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
-</Grid>";
-
-      Assert.AreEqual(expectedXaml, xaml2);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !SILVERLIGHT && !NETFX_CORE
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Tests.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json;
+using System.IO;
+using System.Xml;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Linq;
+#if !NET20
+using System.Xml.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Converters
+{
+  [TestFixture]
+  public class XmlNodeConverterTest : TestFixtureBase
+  {
+    private string SerializeXmlNode(XmlNode node)
+    {
+      string json = JsonConvert.SerializeXmlNode(node, Formatting.Indented);
+      XmlNodeReader reader = new XmlNodeReader(node);
+
+#if !NET20
+      XObject xNode;
+      if (node is XmlDocument)
+      {
+        xNode = XDocument.Load(reader);
+      }
+      else if (node is XmlAttribute)
+      {
+        XmlAttribute attribute = (XmlAttribute) node;
+        xNode = new XAttribute(XName.Get(attribute.LocalName, attribute.NamespaceURI), attribute.Value);
+      }
+      else
+      {
+        reader.MoveToContent();
+        xNode = XNode.ReadFrom(reader);
+      }
+
+      string linqJson = JsonConvert.SerializeXNode(xNode, Formatting.Indented);
+
+      Assert.AreEqual(json, linqJson);
+#endif
+
+      return json;
+    }
+
+    private XmlNode DeserializeXmlNode(string json)
+    {
+      return DeserializeXmlNode(json, null);
+    }
+
+    private XmlNode DeserializeXmlNode(string json, string deserializeRootElementName)
+    {
+      JsonTextReader reader;
+
+      reader = new JsonTextReader(new StringReader(json));
+      reader.Read();
+      XmlNodeConverter converter = new XmlNodeConverter();
+      if (deserializeRootElementName != null)
+        converter.DeserializeRootElementName = deserializeRootElementName;
+
+      XmlNode node = (XmlNode)converter.ReadJson(reader, typeof (XmlDocument), null, new JsonSerializer());
+
+#if !NET20
+     string xmlText = node.OuterXml;
+
+      reader = new JsonTextReader(new StringReader(json));
+      reader.Read();
+      XDocument d = (XDocument) converter.ReadJson(reader, typeof (XDocument), null, new JsonSerializer());
+
+      string linqXmlText = d.ToString(SaveOptions.DisableFormatting);
+      if (d.Declaration != null)
+        linqXmlText = d.Declaration + linqXmlText;
+
+      Assert.AreEqual(xmlText, linqXmlText);
+#endif
+
+      return node;
+    }
+
+    [Test]
+    public void DocumentSerializeIndented()
+    {
+      string xml = @"<?xml version=""1.0"" standalone=""no""?>
+<?xml-stylesheet href=""classic.xsl"" type=""text/xml""?>
+<span class=""vevent"">
+  <a class=""url"" href=""http://www.web2con.com/"">
+    <span class=""summary"">Web 2.0 Conference<![CDATA[my escaped text]]></span>
+    <abbr class=""dtstart"" title=""2005-10-05"">October 5</abbr>
+    <abbr class=""dtend"" title=""2005-10-08"">7</abbr>
+    <span class=""location"">Argent Hotel, San Francisco, CA</span>
+  </a>
+</span>";
+      XmlDocument doc = new XmlDocument();
+      doc.LoadXml(xml);
+
+      string jsonText = SerializeXmlNode(doc);
+      string expected = @"{
+  ""?xml"": {
+    ""@version"": ""1.0"",
+    ""@standalone"": ""no""
+  },
+  ""?xml-stylesheet"": ""href=\""classic.xsl\"" type=\""text/xml\"""",
+  ""span"": {
+    ""@class"": ""vevent"",
+    ""a"": {
+      ""@class"": ""url"",
+      ""@href"": ""http://www.web2con.com/"",
+      ""span"": [
+        {
+          ""@class"": ""summary"",
+          ""#text"": ""Web 2.0 Conference"",
+          ""#cdata-section"": ""my escaped text""
+        },
+        {
+          ""@class"": ""location"",
+          ""#text"": ""Argent Hotel, San Francisco, CA""
+        }
+      ],
+      ""abbr"": [
+        {
+          ""@class"": ""dtstart"",
+          ""@title"": ""2005-10-05"",
+          ""#text"": ""October 5""
+        },
+        {
+          ""@class"": ""dtend"",
+          ""@title"": ""2005-10-08"",
+          ""#text"": ""7""
+        }
+      ]
+    }
+  }
+}";
+
+      Assert.AreEqual(expected, jsonText);
+
+      Console.WriteLine("DocumentSerializeIndented");
+      Console.WriteLine(jsonText);
+      Console.WriteLine();
+    }
+
+    [Test]
+    public void SerializeNodeTypes()
+    {
+      XmlDocument doc = new XmlDocument();
+      string jsonText;
+
+      Console.WriteLine("SerializeNodeTypes");
+
+      string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
+<xs:schema xs:id=""SomeID"" 
+	xmlns="""" 
+	xmlns:xs=""http://www.w3.org/2001/XMLSchema"" 
+	xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
+	<xs:element name=""MyDataSet"" msdata:IsDataSet=""true"">
+	</xs:element>
+</xs:schema>";
+
+      XmlDocument document = new XmlDocument();
+      document.LoadXml(xml);
+
+      // XmlAttribute
+      XmlAttribute attribute = document.DocumentElement.ChildNodes[0].Attributes["IsDataSet", "urn:schemas-microsoft-com:xml-msdata"];
+      attribute.Value = "true";
+
+      jsonText = JsonConvert.SerializeXmlNode(attribute);
+
+      Console.WriteLine(jsonText);
+      Assert.AreEqual(@"{""@msdata:IsDataSet"":""true""}", jsonText);
+
+#if !NET20
+      XDocument d = XDocument.Parse(xml);
+      XAttribute a = d.Root.Element("{http://www.w3.org/2001/XMLSchema}element").Attribute("{urn:schemas-microsoft-com:xml-msdata}IsDataSet");
+
+      jsonText = JsonConvert.SerializeXNode(a);
+
+      Assert.AreEqual(@"{""@msdata:IsDataSet"":""true""}", jsonText);
+#endif
+
+      // XmlProcessingInstruction
+      XmlProcessingInstruction instruction = doc.CreateProcessingInstruction("xml-stylesheet", @"href=""classic.xsl"" type=""text/xml""");
+
+      jsonText = JsonConvert.SerializeXmlNode(instruction);
+
+      Console.WriteLine(jsonText);
+      Assert.AreEqual(@"{""?xml-stylesheet"":""href=\""classic.xsl\"" type=\""text/xml\""""}", jsonText);
+
+
+      // XmlProcessingInstruction
+      XmlCDataSection cDataSection = doc.CreateCDataSection("<Kiwi>true</Kiwi>");
+
+      jsonText = JsonConvert.SerializeXmlNode(cDataSection);
+
+      Console.WriteLine(jsonText);
+      Assert.AreEqual(@"{""#cdata-section"":""<Kiwi>true</Kiwi>""}", jsonText);
+
+
+      // XmlElement
+      XmlElement element = doc.CreateElement("xs", "Choice", "http://www.w3.org/2001/XMLSchema");
+      element.SetAttributeNode(doc.CreateAttribute("msdata", "IsDataSet", "urn:schemas-microsoft-com:xml-msdata"));
+
+      XmlAttribute aa = doc.CreateAttribute(@"xmlns", "xs", "http://www.w3.org/2000/xmlns/");
+      aa.Value = "http://www.w3.org/2001/XMLSchema";
+      element.SetAttributeNode(aa);
+
+      aa = doc.CreateAttribute(@"xmlns", "msdata", "http://www.w3.org/2000/xmlns/");
+      aa.Value = "urn:schemas-microsoft-com:xml-msdata";
+      element.SetAttributeNode(aa);
+
+      element.AppendChild(instruction);
+      element.AppendChild(cDataSection);
+
+      doc.AppendChild(element);
+
+      jsonText = JsonConvert.SerializeXmlNode(element, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""xs:Choice"": {
+    ""@msdata:IsDataSet"": """",
+    ""@xmlns:xs"": ""http://www.w3.org/2001/XMLSchema"",
+    ""@xmlns:msdata"": ""urn:schemas-microsoft-com:xml-msdata"",
+    ""?xml-stylesheet"": ""href=\""classic.xsl\"" type=\""text/xml\"""",
+    ""#cdata-section"": ""<Kiwi>true</Kiwi>""
+  }
+}", jsonText);
+    }
+
+    [Test]
+    public void DocumentFragmentSerialize()
+    {
+      XmlDocument doc = new XmlDocument();
+
+      XmlDocumentFragment fragement = doc.CreateDocumentFragment();
+
+      fragement.InnerXml = "<Item>widget</Item><Item>widget</Item>";
+
+      string jsonText = JsonConvert.SerializeXmlNode(fragement);
+
+      string expected = @"{""Item"":[""widget"",""widget""]}";
+
+      Assert.AreEqual(expected, jsonText);
+
+      Console.WriteLine("DocumentFragmentSerialize");
+      Console.WriteLine(jsonText);
+      Console.WriteLine();
+    }
+
+    [Test]
+    public void NamespaceSerializeDeserialize()
+    {
+      string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
+<xs:schema xs:id=""SomeID"" 
+	xmlns="""" 
+	xmlns:xs=""http://www.w3.org/2001/XMLSchema"" 
+	xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"">
+	<xs:element name=""MyDataSet"" msdata:IsDataSet=""true"">
+		<xs:complexType>
+			<xs:choice maxOccurs=""unbounded"">
+				<xs:element name=""customers"" >
+					<xs:complexType >
+						<xs:sequence>
+							<xs:element name=""CustomerID"" type=""xs:integer"" 
+										 minOccurs=""0"" />
+							<xs:element name=""CompanyName"" type=""xs:string"" 
+										 minOccurs=""0"" />
+							<xs:element name=""Phone"" type=""xs:string"" />
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>";
+
+      XmlDocument doc = new XmlDocument();
+      doc.LoadXml(xml);
+
+      string jsonText = SerializeXmlNode(doc);
+
+      string expected = @"{
+  ""?xml"": {
+    ""@version"": ""1.0"",
+    ""@encoding"": ""utf-8""
+  },
+  ""xs:schema"": {
+    ""@xs:id"": ""SomeID"",
+    ""@xmlns"": """",
+    ""@xmlns:xs"": ""http://www.w3.org/2001/XMLSchema"",
+    ""@xmlns:msdata"": ""urn:schemas-microsoft-com:xml-msdata"",
+    ""xs:element"": {
+      ""@name"": ""MyDataSet"",
+      ""@msdata:IsDataSet"": ""true"",
+      ""xs:complexType"": {
+        ""xs:choice"": {
+          ""@maxOccurs"": ""unbounded"",
+          ""xs:element"": {
+            ""@name"": ""customers"",
+            ""xs:complexType"": {
+              ""xs:sequence"": {
+                ""xs:element"": [
+                  {
+                    ""@name"": ""CustomerID"",
+                    ""@type"": ""xs:integer"",
+                    ""@minOccurs"": ""0""
+                  },
+                  {
+                    ""@name"": ""CompanyName"",
+                    ""@type"": ""xs:string"",
+                    ""@minOccurs"": ""0""
+                  },
+                  {
+                    ""@name"": ""Phone"",
+                    ""@type"": ""xs:string""
+                  }
+                ]
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}";
+
+      Assert.AreEqual(expected, jsonText);
+
+      XmlDocument deserializedDoc = (XmlDocument)DeserializeXmlNode(jsonText);
+
+      Assert.AreEqual(doc.InnerXml, deserializedDoc.InnerXml);
+
+      Console.WriteLine("NamespaceSerializeDeserialize");
+      Console.WriteLine(jsonText);
+      Console.WriteLine(deserializedDoc.InnerXml);
+      Console.WriteLine();
+    }
+
+    [Test]
+    public void DocumentDeserialize()
+    {
+      string jsonText = @"{
+  ""?xml"": {
+    ""@version"": ""1.0"",
+    ""@standalone"": ""no""
+  },
+  ""span"": {
+    ""@class"": ""vevent"",
+    ""a"": {
+      ""@class"": ""url"",
+      ""@href"": ""http://www.web2con.com/"",
+      ""span"": {
+        ""@class"": ""summary"",
+        ""#text"": ""Web 2.0 Conference"",
+        ""#cdata-section"": ""my escaped text""
+      }
+    }
+  }
+}";
+
+      XmlDocument doc = (XmlDocument)DeserializeXmlNode(jsonText);
+
+      string expected = @"<?xml version=""1.0"" standalone=""no""?>
+<span class=""vevent"">
+  <a class=""url"" href=""http://www.web2con.com/"">
+    <span class=""summary"">Web 2.0 Conference<![CDATA[my escaped text]]></span>
+  </a>
+</span>";
+
+      string formattedXml = GetIndentedInnerXml(doc);
+
+      Console.WriteLine("DocumentDeserialize");
+      Console.WriteLine(formattedXml);
+      Console.WriteLine();
+
+      Assert.AreEqual(expected, formattedXml);
+    }
+
+    private string GetIndentedInnerXml(XmlNode node)
+    {
+      XmlWriterSettings settings = new XmlWriterSettings();
+      settings.Indent = true;
+
+      StringWriter sw = new StringWriter();
+
+      using (XmlWriter writer = XmlWriter.Create(sw, settings))
+      {
+        node.WriteTo(writer);
+      }
+
+      return sw.ToString();
+    }
+
+    [Test]
+    public void SingleTextNode()
+    {
+      string xml = @"<?xml version=""1.0"" standalone=""no""?>
+			<root>
+			  <person id=""1"">
+	  			<name>Alan</name>
+		  		<url>http://www.google.com</url>
+			  </person>
+			  <person id=""2"">
+			  	<name>Louis</name>
+				  <url>http://www.yahoo.com</url>
+			  </person>
+			</root>";
+
+      XmlDocument doc = new XmlDocument();
+      doc.LoadXml(xml);
+
+      string jsonText = SerializeXmlNode(doc);
+
+      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
+
+      Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);
+    }
+
+    [Test]
+    public void EmptyNode()
+    {
+      string xml = @"<?xml version=""1.0"" standalone=""no""?>
+			<root>
+			  <person id=""1"">
+				<name>Alan</name>
+				<url />
+			  </person>
+			  <person id=""2"">
+				<name>Louis</name>
+				<url>http://www.yahoo.com</url>
+			  </person>
+			</root>";
+
+      XmlDocument doc = new XmlDocument();
+      doc.LoadXml(xml);
+
+      string jsonText = SerializeXmlNode(doc);
+
+      Console.WriteLine(jsonText);
+
+      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
+
+      Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);
+    }
+
+    [Test]
+    public void OtherElementDataTypes()
+    {
+      string jsonText = @"{""?xml"":{""@version"":""1.0"",""@standalone"":""no""},""root"":{""person"":[{""@id"":""1"",""Float"":2.5,""Integer"":99},{""@id"":""2"",""Boolean"":true,""date"":""\/Date(954374400000)\/""}]}}";
+
+      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
+
+      string expected = @"<?xml version=""1.0"" standalone=""no""?><root><person id=""1""><Float>2.5</Float><Integer>99</Integer></person><person id=""2""><Boolean>true</Boolean><date>2000-03-30T00:00:00Z</date></person></root>";
+
+      Assert.AreEqual(expected, newDoc.InnerXml);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "XmlNodeConverter can only convert JSON that begins with an object.")]
+    public void NoRootObject()
+    {
+      XmlDocument newDoc = (XmlDocument)JsonConvert.DeserializeXmlNode(@"[1]");
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.")]
+    public void RootObjectMultipleProperties()
+    {
+      XmlDocument newDoc = (XmlDocument)JsonConvert.DeserializeXmlNode(@"{Prop1:1,Prop2:2}");
+    }
+
+    [Test]
+    public void JavaScriptConstructor()
+    {
+      string jsonText = @"{root:{r:new Date(34343, 55)}}";
+
+      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
+
+      string expected = @"<root><r><Date>34343</Date><Date>55</Date></r></root>";
+
+      Assert.AreEqual(expected, newDoc.InnerXml);
+
+      string json = SerializeXmlNode(newDoc);
+      expected = @"{
+  ""root"": {
+    ""r"": {
+      ""Date"": [
+        ""34343"",
+        ""55""
+      ]
+    }
+  }
+}";
+
+      Assert.AreEqual(expected, json);
+    }
+
+    [Test]
+    public void ForceJsonArray()
+    {
+      string arrayXml = @"<root xmlns:json=""http://james.newtonking.com/projects/json"">
+			  <person id=""1"">
+				  <name>Alan</name>
+				  <url>http://www.google.com</url>
+				  <role json:Array=""true"">Admin</role>
+			  </person>
+			</root>";
+
+      XmlDocument arrayDoc = new XmlDocument();
+      arrayDoc.LoadXml(arrayXml);
+
+      string arrayJsonText = SerializeXmlNode(arrayDoc);
+      string expected = @"{
+  ""root"": {
+    ""person"": {
+      ""@id"": ""1"",
+      ""name"": ""Alan"",
+      ""url"": ""http://www.google.com"",
+      ""role"": [
+        ""Admin""
+      ]
+    }
+  }
+}";
+      Assert.AreEqual(expected, arrayJsonText);
+
+      arrayXml = @"<root xmlns:json=""http://james.newtonking.com/projects/json"">
+			  <person id=""1"">
+				  <name>Alan</name>
+				  <url>http://www.google.com</url>
+				  <role json:Array=""true"">Admin1</role>
+				  <role json:Array=""true"">Admin2</role>
+			  </person>
+			</root>";
+
+      arrayDoc = new XmlDocument();
+      arrayDoc.LoadXml(arrayXml);
+
+      arrayJsonText = SerializeXmlNode(arrayDoc);
+      expected = @"{
+  ""root"": {
+    ""person"": {
+      ""@id"": ""1"",
+      ""name"": ""Alan"",
+      ""url"": ""http://www.google.com"",
+      ""role"": [
+        ""Admin1"",
+        ""Admin2""
+      ]
+    }
+  }
+}";
+      Assert.AreEqual(expected, arrayJsonText);
+
+      arrayXml = @"<root xmlns:json=""http://james.newtonking.com/projects/json"">
+			  <person id=""1"">
+				  <name>Alan</name>
+				  <url>http://www.google.com</url>
+				  <role json:Array=""false"">Admin1</role>
+			  </person>
+			</root>";
+
+      arrayDoc = new XmlDocument();
+      arrayDoc.LoadXml(arrayXml);
+
+      arrayJsonText = SerializeXmlNode(arrayDoc);
+      expected = @"{
+  ""root"": {
+    ""person"": {
+      ""@id"": ""1"",
+      ""name"": ""Alan"",
+      ""url"": ""http://www.google.com"",
+      ""role"": ""Admin1""
+    }
+  }
+}";
+      Assert.AreEqual(expected, arrayJsonText);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.")]
+    public void MultipleRootPropertiesXmlDocument()
+    {
+      string json = @"{""count"": 773840,""photos"": null}";
+
+      JsonConvert.DeserializeXmlNode(json);
+    }
+
+#if !NET20
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.")]
+    public void MultipleRootPropertiesXDocument()
+    {
+      string json = @"{""count"": 773840,""photos"": null}";
+
+      JsonConvert.DeserializeXNode(json);
+    }
+#endif
+
+    [Test]
+    public void MultipleRootPropertiesAddRootElement()
+    {
+      string json = @"{""count"": 773840,""photos"": 773840}";
+
+      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot");
+
+      Assert.AreEqual(@"<myRoot><count>773840</count><photos>773840</photos></myRoot>", newDoc.InnerXml);
+
+#if !NET20
+     XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot");
+
+      Assert.AreEqual(@"<myRoot><count>773840</count><photos>773840</photos></myRoot>", newXDoc.ToString(SaveOptions.DisableFormatting));
+#endif
+    }
+
+    [Test]
+    public void NestedArrays()
+    {
+      string json = @"{
+  ""available_sizes"": [
+    [
+      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg"",
+      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg""
+    ],
+    [
+      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg"",
+      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
+    ],
+    [
+      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
+    ]
+  ]
+}";
+
+      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot");
+
+      string xml = IndentXml(newDoc.InnerXml);
+
+      Assert.AreEqual(@"<myRoot>
+  <available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+</myRoot>", IndentXml(newDoc.InnerXml));
+
+#if !NET20
+      XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot");
+
+      Assert.AreEqual(@"<myRoot>
+  <available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+</myRoot>", IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting)));
+#endif
+
+      string newJson = JsonConvert.SerializeXmlNode(newDoc, Formatting.Indented);
+      Console.WriteLine(newJson);
+    }
+
+    [Test]
+    public void RoundTripNestedArrays()
+    {
+      string json = @"{
+  ""available_sizes"": [
+    [
+      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg"",
+      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg""
+    ],
+    [
+      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg"",
+      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
+    ],
+    [
+      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
+    ]
+  ]
+}";
+
+      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot", true);
+
+      Assert.AreEqual(@"<myRoot>
+  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <available_sizes json:Array=""true"">assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+</myRoot>", IndentXml(newDoc.InnerXml));
+
+#if !NET20
+      XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot", true);
+
+      Console.WriteLine(IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting)));
+
+      Assert.AreEqual(@"<myRoot>
+  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+    <available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+  <available_sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <available_sizes json:Array=""true"">assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes>
+  </available_sizes>
+</myRoot>", IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting)));
+#endif
+
+      string newJson = JsonConvert.SerializeXmlNode(newDoc, Formatting.Indented, true);
+      Assert.AreEqual(json, newJson);
+    }
+
+    [Test]
+    public void MultipleNestedArraysToXml()
+    {
+      string json = @"{
+  ""available_sizes"": [
+    [
+      [113, 150],
+      ""assets/images/resized/0001/1070/11070v1-max-150x150.jpg""
+    ],
+    [
+      [189, 250],
+      ""assets/images/resized/0001/1070/11070v1-max-250x250.jpg""
+    ],
+    [
+      [341, 450],
+      ""assets/images/resized/0001/1070/11070v1-max-450x450.jpg""
+    ]
+  ]
+}";
+
+      XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot");
+
+      Assert.AreEqual(@"<myRoot><available_sizes><available_sizes><available_sizes>113</available_sizes><available_sizes>150</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>189</available_sizes><available_sizes>250</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>341</available_sizes><available_sizes>450</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-450x450.jpg</available_sizes></available_sizes></myRoot>", newDoc.InnerXml);
+
+#if !NET20
+      XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot");
+
+      Assert.AreEqual(@"<myRoot><available_sizes><available_sizes><available_sizes>113</available_sizes><available_sizes>150</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-150x150.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>189</available_sizes><available_sizes>250</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-250x250.jpg</available_sizes></available_sizes><available_sizes><available_sizes><available_sizes>341</available_sizes><available_sizes>450</available_sizes></available_sizes><available_sizes>assets/images/resized/0001/1070/11070v1-max-450x450.jpg</available_sizes></available_sizes></myRoot>", newXDoc.ToString(SaveOptions.DisableFormatting));
+#endif
+    }
+
+    [Test]
+    public void Encoding()
+    {
+      XmlDocument doc = new XmlDocument();
+
+      doc.LoadXml(@"<name>O""Connor</name>"); // i use "" so it will be easier to see the  problem
+
+      string json = SerializeXmlNode(doc);
+      Assert.AreEqual(@"{
+  ""name"": ""O\""Connor""
+}", json);
+    }
+
+    [Test]
+    public void SerializeComment()
+    {
+      string xml = @"<span class=""vevent"">
+  <a class=""url"" href=""http://www.web2con.com/"">Text</a><!-- Hi! -->
+</span>";
+      XmlDocument doc = new XmlDocument();
+      doc.LoadXml(xml);
+
+      string jsonText = SerializeXmlNode(doc);
+
+      string expected = @"{
+  ""span"": {
+    ""@class"": ""vevent"",
+    ""a"": {
+      ""@class"": ""url"",
+      ""@href"": ""http://www.web2con.com/"",
+      ""#text"": ""Text""
+    }/* Hi! */
+  }
+}";
+
+      Assert.AreEqual(expected, jsonText);
+
+      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
+      Assert.AreEqual(@"<span class=""vevent""><a class=""url"" href=""http://www.web2con.com/"">Text</a><!-- Hi! --></span>", newDoc.InnerXml);
+    }
+
+    [Test]
+    public void SerializeExample()
+    {
+      string xml = @"<?xml version=""1.0"" standalone=""no""?>
+			<root>
+			  <person id=""1"">
+				<name>Alan</name>
+				<url>http://www.google.com</url>
+			  </person>
+			  <person id=""2"">
+				<name>Louis</name>
+				<url>http://www.yahoo.com</url>
+			  </person>
+			</root>";
+
+      XmlDocument doc = new XmlDocument();
+      doc.LoadXml(xml);
+
+      string jsonText = SerializeXmlNode(doc);
+      // {
+      //   "?xml": {
+      //     "@version": "1.0",
+      //     "@standalone": "no"
+      //   },
+      //   "root": {
+      //     "person": [
+      //       {
+      //         "@id": "1",
+      //         "name": "Alan",
+      //         "url": "http://www.google.com"
+      //       },
+      //       {
+      //         "@id": "2",
+      //         "name": "Louis",
+      //         "url": "http://www.yahoo.com"
+      //       }
+      //     ]
+      //   }
+      // }
+
+      // format
+      jsonText = JObject.Parse(jsonText).ToString();
+
+      Assert.AreEqual(@"{
+  ""?xml"": {
+    ""@version"": ""1.0"",
+    ""@standalone"": ""no""
+  },
+  ""root"": {
+    ""person"": [
+      {
+        ""@id"": ""1"",
+        ""name"": ""Alan"",
+        ""url"": ""http://www.google.com""
+      },
+      {
+        ""@id"": ""2"",
+        ""name"": ""Louis"",
+        ""url"": ""http://www.yahoo.com""
+      }
+    ]
+  }
+}", jsonText);
+
+      XmlDocument newDoc = (XmlDocument)DeserializeXmlNode(jsonText);
+
+      Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);
+    }
+
+    [Test]
+    public void DeserializeExample()
+    {
+      string json = @"{
+        ""?xml"": {
+          ""@version"": ""1.0"",
+          ""@standalone"": ""no""
+        },
+        ""root"": {
+          ""person"": [
+            {
+              ""@id"": ""1"",
+              ""name"": ""Alan"",
+              ""url"": ""http://www.google.com""
+            },
+            {
+              ""@id"": ""2"",
+              ""name"": ""Louis"",
+              ""url"": ""http://www.yahoo.com""
+            }
+          ]
+        }
+      }";
+
+      XmlDocument doc = (XmlDocument)DeserializeXmlNode(json);
+      // <?xml version="1.0" standalone="no"?>
+      // <root>
+      //   <person id="1">
+      //   <name>Alan</name>
+      //   <url>http://www.google.com</url>
+      //   </person>
+      //   <person id="2">
+      //   <name>Louis</name>
+      //   <url>http://www.yahoo.com</url>
+      //   </person>
+      // </root>
+
+      Assert.AreEqual(@"<?xml version=""1.0"" standalone=""no""?>
+<root>
+<person id=""1"">
+<name>Alan</name>
+<url>http://www.google.com</url>
+</person>
+<person id=""2"">
+<name>Louis</name>
+<url>http://www.yahoo.com</url>
+</person>
+</root>".Replace(Environment.NewLine, string.Empty), doc.InnerXml);
+    }
+
+    [Test]
+    public void SerializeDeserializeSpecialProperties()
+    {
+      PreserveReferencesHandlingTests.CircularDictionary circularDictionary = new PreserveReferencesHandlingTests.CircularDictionary();
+      circularDictionary.Add("other", new PreserveReferencesHandlingTests.CircularDictionary { { "blah", null } });
+      circularDictionary.Add("self", circularDictionary);
+
+      string json = JsonConvert.SerializeObject(circularDictionary, Formatting.Indented,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""other"": {
+    ""$id"": ""2"",
+    ""blah"": null
+  },
+  ""self"": {
+    ""$ref"": ""1""
+  }
+}", json);
+
+      XmlNode node = DeserializeXmlNode(json, "root");
+      string xml = GetIndentedInnerXml(node);
+      string expected = @"<?xml version=""1.0"" encoding=""utf-16""?>
+<root xmlns:json=""http://james.newtonking.com/projects/json"" json:id=""1"">
+  <other json:id=""2"">
+    <blah />
+  </other>
+  <self json:ref=""1"" />
+</root>";
+
+      Assert.AreEqual(expected, xml);
+
+      string xmlJson = SerializeXmlNode(node);
+      string expectedXmlJson = @"{
+  ""root"": {
+    ""$id"": ""1"",
+    ""other"": {
+      ""$id"": ""2"",
+      ""blah"": null
+    },
+    ""self"": {
+      ""$ref"": ""1""
+    }
+  }
+}";
+
+      Assert.AreEqual(expectedXmlJson, xmlJson);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException), ExpectedMessage = "XmlNodeConverter cannot convert JSON with an empty property name to XML.")]
+    public void EmptyPropertyName()
+    {
+      string json = @"{
+  ""8452309520V2"": {
+    """": {
+      ""CLIENT"": {
+        ""ID_EXPIRATION_1"": {
+          ""VALUE"": ""12/12/2000"",
+          ""DATATYPE"": ""D"",
+          ""MSG"": ""Missing Identification Exp. Date 1""
+        },
+        ""ID_ISSUEDATE_1"": {
+          ""VALUE"": """",
+          ""DATATYPE"": ""D"",
+          ""MSG"": ""Missing Identification Issue Date 1""
+        }
+      }
+    },
+    ""457463534534"": {
+      ""ACCOUNT"": {
+        ""FUNDING_SOURCE"": {
+          ""VALUE"": ""FS0"",
+          ""DATATYPE"": ""L"",
+          ""MSG"": ""Missing Source of Funds""
+        }
+      }
+    }
+  }
+}{
+  ""34534634535345"": {
+    """": {
+      ""CLIENT"": {
+        ""ID_NUMBER_1"": {
+          ""VALUE"": """",
+          ""DATATYPE"": ""S"",
+          ""MSG"": ""Missing Picture ID""
+        },
+        ""ID_EXPIRATION_1"": {
+          ""VALUE"": ""12/12/2000"",
+          ""DATATYPE"": ""D"",
+          ""MSG"": ""Missing Picture ID""
+        },
+        ""WALK_IN"": {
+          ""VALUE"": """",
+          ""DATATYPE"": ""L"",
+          ""MSG"": ""Missing Walk in""
+        },
+        ""PERSONAL_MEETING"": {
+          ""VALUE"": ""PM1"",
+          ""DATATYPE"": ""L"",
+          ""MSG"": ""Missing Met Client in Person""
+        },
+        ""ID_ISSUEDATE_1"": {
+          ""VALUE"": """",
+          ""DATATYPE"": ""D"",
+          ""MSG"": ""Missing Picture ID""
+        },
+        ""PHOTO_ID"": {
+          ""VALUE"": """",
+          ""DATATYPE"": ""L"",
+          ""MSG"": ""Missing Picture ID""
+        },
+        ""ID_TYPE_1"": {
+          ""VALUE"": """",
+          ""DATATYPE"": ""L"",
+          ""MSG"": ""Missing Picture ID""
+        }
+      }
+    },
+    ""45635624523"": {
+      ""ACCOUNT"": {
+        ""FUNDING_SOURCE"": {
+          ""VALUE"": ""FS1"",
+          ""DATATYPE"": ""L"",
+          ""MSG"": ""Missing Source of Funds""
+        }
+      }
+    }
+  }
+}";
+
+      DeserializeXmlNode(json);
+    }
+
+    [Test]
+    public void SingleItemArrayPropertySerialization()
+    {
+      Product product = new Product();
+
+      product.Name = "Apple";
+      product.ExpiryDate = new DateTime(2008, 12, 28, 0, 0, 0, DateTimeKind.Utc);
+      product.Price = 3.99M;
+      product.Sizes = new string[] { "Small" };
+
+      string output = JsonConvert.SerializeObject(product, new IsoDateTimeConverter());
+
+      XmlDocument xmlProduct = JsonConvert.DeserializeXmlNode(output, "product", true);
+
+      Assert.AreEqual(@"<product>
+  <Name>Apple</Name>
+  <ExpiryDate>2008-12-28T00:00:00Z</ExpiryDate>
+  <Price>3.99</Price>
+  <Sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">Small</Sizes>
+</product>", IndentXml(xmlProduct.InnerXml));
+
+      string output2 = JsonConvert.SerializeXmlNode(xmlProduct.DocumentElement, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""product"": {
+    ""Name"": ""Apple"",
+    ""ExpiryDate"": ""2008-12-28T00:00:00Z"",
+    ""Price"": ""3.99"",
+    ""Sizes"": [
+      ""Small""
+    ]
+  }
+}", output2);
+    }
+
+    public class TestComplexArrayClass
+    {
+      public string Name { get; set; }
+      public IList<Product> Products { get; set; }
+    }
+
+    [Test]
+    public void ComplexSingleItemArrayPropertySerialization()
+    {
+      TestComplexArrayClass o = new TestComplexArrayClass
+        {
+          Name = "Hi",
+          Products = new List<Product>
+            {
+              new Product { Name = "First" }
+            }
+        };
+
+      string output = JsonConvert.SerializeObject(o, new IsoDateTimeConverter());
+
+      XmlDocument xmlProduct = JsonConvert.DeserializeXmlNode(output, "test", true);
+
+      Assert.AreEqual(@"<test>
+  <Name>Hi</Name>
+  <Products json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <Name>First</Name>
+    <ExpiryDate>2000-01-01T00:00:00Z</ExpiryDate>
+    <Price>0</Price>
+    <Sizes />
+  </Products>
+</test>", IndentXml(xmlProduct.InnerXml));
+
+      string output2 = JsonConvert.SerializeXmlNode(xmlProduct.DocumentElement, Formatting.Indented, true);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""Hi"",
+  ""Products"": [
+    {
+      ""Name"": ""First"",
+      ""ExpiryDate"": ""2000-01-01T00:00:00Z"",
+      ""Price"": ""0"",
+      ""Sizes"": null
+    }
+  ]
+}", output2);
+    }
+
+    private string IndentXml(string xml)
+    {
+      XmlReader reader = XmlReader.Create(new StringReader(xml));
+
+      StringWriter sw = new StringWriter();
+      XmlWriter writer = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true });
+
+      while (reader.Read())
+      {
+        writer.WriteNode(reader, false);
+      }
+
+      writer.Flush();
+
+      return sw.ToString();
+    }
+
+    [Test]
+    public void OmitRootObject()
+    {
+      string xml = @"<test>
+  <Name>Hi</Name>
+  <Name>Hi</Name>
+  <Products json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">
+    <Name>First</Name>
+    <ExpiryDate>2000-01-01T00:00:00Z</ExpiryDate>
+    <Price>0</Price>
+    <Sizes />
+  </Products>
+</test>";
+
+      XmlDocument d = new XmlDocument();
+      d.LoadXml(xml);
+
+      string output = JsonConvert.SerializeXmlNode(d, Formatting.Indented, true);
+
+      Assert.AreEqual(@"{
+  ""Name"": [
+    ""Hi"",
+    ""Hi""
+  ],
+  ""Products"": [
+    {
+      ""Name"": ""First"",
+      ""ExpiryDate"": ""2000-01-01T00:00:00Z"",
+      ""Price"": ""0"",
+      ""Sizes"": null
+    }
+  ]
+}", output);
+    }
+
+    [Test]
+    public void EmtpyElementWithArrayAttributeShouldWriteAttributes()
+    {
+      string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
+<root xmlns:json=""http://james.newtonking.com/projects/json"">
+<A>
+<B name=""sample"" json:Array=""true""/>
+<C></C>
+<C></C>
+</A>
+</root>";
+
+      XmlDocument d = new XmlDocument();
+      d.LoadXml(xml);
+
+      string json = JsonConvert.SerializeXmlNode(d, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""?xml"": {
+    ""@version"": ""1.0"",
+    ""@encoding"": ""utf-8""
+  },
+  ""root"": {
+    ""A"": {
+      ""B"": [
+        {
+          ""@name"": ""sample""
+        }
+      ],
+      ""C"": [
+        null,
+        null
+      ]
+    }
+  }
+}", json);
+    }
+
+    [Test]
+    public void DeserializeNonInt64IntegerValues()
+    {
+      var dict = new Dictionary<string, object> { { "Int16", (short)1 }, { "Float", 2f }, { "Int32", 3 } };
+      var obj = JObject.FromObject(dict);
+      var serializer = JsonSerializer.Create(new JsonSerializerSettings { Converters = { new XmlNodeConverter() { DeserializeRootElementName = "root" } } });
+      using (var reader = obj.CreateReader())
+      {
+        var value = (XmlDocument)serializer.Deserialize(reader, typeof(XmlDocument));
+
+        Assert.AreEqual(@"<root><Int16>1</Int16><Float>2</Float><Int32>3</Int32></root>", value.InnerXml);
+      }
+    }
+
+    [Test]
+    public void DeserializingBooleanValues()
+    {
+      MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(@"{root:{""@booleanType"":true}}"));
+      MemoryStream xml = new MemoryStream();
+
+      JsonBodyToSoapXml(ms, xml);
+
+      string xmlString = System.Text.Encoding.UTF8.GetString(xml.ToArray());
+
+      Assert.AreEqual(@"﻿<?xml version=""1.0"" encoding=""utf-8""?><root booleanType=""true"" />", xmlString);
+    }
+
+    private static void JsonBodyToSoapXml(Stream json, Stream xml)
+    {
+      Newtonsoft.Json.JsonSerializerSettings settings = new Newtonsoft.Json.JsonSerializerSettings();
+      settings.Converters.Add(new Newtonsoft.Json.Converters.XmlNodeConverter());
+      Newtonsoft.Json.JsonSerializer serializer = Newtonsoft.Json.JsonSerializer.Create(settings);
+      using (Newtonsoft.Json.JsonTextReader reader = new Newtonsoft.Json.JsonTextReader(new System.IO.StreamReader(json)))
+      {
+        XmlDocument doc = (XmlDocument)serializer.Deserialize(reader, typeof(XmlDocument));
+        if (reader.Read() && reader.TokenType != JsonToken.Comment)
+          throw new JsonSerializationException("Additional text found in JSON string after finishing deserializing object.");
+        using (XmlWriter writer = XmlWriter.Create(xml))
+        {
+          doc.Save(writer);
+        }
+      }
+    }
+
+#if !NET20
+    [Test]
+    public void DeserializeXNodeDefaultNamespace()
+    {
+      string xaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
+  <Grid.ColumnDefinitions>
+    <ColumnDefinition Width=""63*"" />
+    <ColumnDefinition Width=""320*"" />
+  </Grid.ColumnDefinitions>
+  <Grid.RowDefinitions xmlns="""">
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+  </Grid.RowDefinitions>
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
+</Grid>";
+
+      string json = JsonConvert.SerializeXNode(XDocument.Parse(xaml), Formatting.Indented);
+
+      string expectedJson = @"{
+  ""Grid"": {
+    ""@xmlns"": ""http://schemas.microsoft.com/winfx/2006/xaml/presentation"",
+    ""@xmlns:x"": ""http://schemas.microsoft.com/winfx/2006/xaml"",
+    ""@xmlns:toolkit"": ""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"",
+    ""@Style"": ""{StaticResource trimFormGrid}"",
+    ""@x:Name"": ""TrimObjectForm"",
+    ""Grid.ColumnDefinitions"": {
+      ""ColumnDefinition"": [
+        {
+          ""@Width"": ""63*""
+        },
+        {
+          ""@Width"": ""320*""
+        }
+      ]
+    },
+    ""Grid.RowDefinitions"": {
+      ""@xmlns"": """",
+      ""RowDefinition"": [
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null
+      ]
+    },
+    ""TextBox"": [
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordTypedTitle"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""0"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordExternalReference"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""1"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding Author, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordAuthor"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""4"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding Container, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordContainer"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""5"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordIsEnclosed"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""6"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordAssignee"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""7"",
+        ""@xmlns"": """"
+      }
+    ],
+    ""toolkit:DatePicker"": [
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
+        ""@Value"": ""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordDateCreated"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""2""
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
+        ""@Value"": ""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordDateDue"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""3""
+      }
+    ],
+    ""TextBlock"": [
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Title (Free Text Part)"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""0"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""External ID"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""1"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Date Created"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""2"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Date Due"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""3"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Author"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""4"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Container"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""5"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Enclosed?"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""6"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Assignee"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""7"",
+        ""@xmlns"": """"
+      }
+    ]
+  }
+}";
+
+      Assert.AreEqual(expectedJson, json);
+
+      XNode node = JsonConvert.DeserializeXNode(json);
+
+      string xaml2 = node.ToString();
+
+      string expectedXaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
+  <Grid.ColumnDefinitions>
+    <ColumnDefinition Width=""63*"" />
+    <ColumnDefinition Width=""320*"" />
+  </Grid.ColumnDefinitions>
+  <Grid.RowDefinitions xmlns="""">
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+  </Grid.RowDefinitions>
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
+  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
+</Grid>";
+
+      Assert.AreEqual(expectedXaml, xaml2);
+    }
+#endif
+
+    [Test]
+    public void DeserializeXmlNodeDefaultNamespace()
+    {
+      string xaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
+  <Grid.ColumnDefinitions>
+    <ColumnDefinition Width=""63*"" />
+    <ColumnDefinition Width=""320*"" />
+  </Grid.ColumnDefinitions>
+  <Grid.RowDefinitions xmlns="""">
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+  </Grid.RowDefinitions>
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
+</Grid>";
+
+      XmlDocument document = new XmlDocument();
+      document.LoadXml(xaml);
+
+      string json = JsonConvert.SerializeXmlNode(document, Formatting.Indented);
+
+      string expectedJson = @"{
+  ""Grid"": {
+    ""@xmlns"": ""http://schemas.microsoft.com/winfx/2006/xaml/presentation"",
+    ""@xmlns:x"": ""http://schemas.microsoft.com/winfx/2006/xaml"",
+    ""@xmlns:toolkit"": ""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"",
+    ""@Style"": ""{StaticResource trimFormGrid}"",
+    ""@x:Name"": ""TrimObjectForm"",
+    ""Grid.ColumnDefinitions"": {
+      ""ColumnDefinition"": [
+        {
+          ""@Width"": ""63*""
+        },
+        {
+          ""@Width"": ""320*""
+        }
+      ]
+    },
+    ""Grid.RowDefinitions"": {
+      ""@xmlns"": """",
+      ""RowDefinition"": [
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null,
+        null
+      ]
+    },
+    ""TextBox"": [
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordTypedTitle"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""0"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordExternalReference"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""1"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding Author, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordAuthor"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""4"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding Container, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordContainer"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""5"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordIsEnclosed"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""6"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_TB}"",
+        ""@Text"": ""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordAssignee"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""7"",
+        ""@xmlns"": """"
+      }
+    ],
+    ""toolkit:DatePicker"": [
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
+        ""@Value"": ""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordDateCreated"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""2""
+      },
+      {
+        ""@Style"": ""{StaticResource trimFormGrid_DP}"",
+        ""@Value"": ""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"",
+        ""@Name"": ""RecordDateDue"",
+        ""@Grid.Column"": ""1"",
+        ""@Grid.Row"": ""3""
+      }
+    ],
+    ""TextBlock"": [
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Title (Free Text Part)"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""0"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""External ID"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""1"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Date Created"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""2"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Date Due"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""3"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Author"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""4"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Container"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""5"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Enclosed?"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""6"",
+        ""@xmlns"": """"
+      },
+      {
+        ""@Grid.Column"": ""0"",
+        ""@Text"": ""Assignee"",
+        ""@Style"": ""{StaticResource trimFormGrid_LBL}"",
+        ""@Grid.Row"": ""7"",
+        ""@xmlns"": """"
+      }
+    ]
+  }
+}";
+
+      Assert.AreEqual(expectedJson, json);
+
+      XmlNode node = JsonConvert.DeserializeXmlNode(json);
+
+      StringWriter sw = new StringWriter();
+      XmlWriter writer = XmlWriter.Create(sw, new XmlWriterSettings
+        {
+          Indent = true,
+          OmitXmlDeclaration = true
+        });
+      node.WriteTo(writer);
+      writer.Flush();
+
+      string xaml2 = sw.ToString();
+
+      string expectedXaml = @"<Grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:toolkit=""clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"" Style=""{StaticResource trimFormGrid}"" x:Name=""TrimObjectForm"">
+  <Grid.ColumnDefinitions>
+    <ColumnDefinition Width=""63*"" />
+    <ColumnDefinition Width=""320*"" />
+  </Grid.ColumnDefinitions>
+  <Grid.RowDefinitions xmlns="""">
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+    <RowDefinition />
+  </Grid.RowDefinitions>
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding TypedTitle, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordTypedTitle"" Grid.Column=""1"" Grid.Row=""0"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding ExternalReference, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordExternalReference"" Grid.Column=""1"" Grid.Row=""1"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Author, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAuthor"" Grid.Column=""1"" Grid.Row=""4"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Container, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordContainer"" Grid.Column=""1"" Grid.Row=""5"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding IsEnclosed, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordIsEnclosed"" Grid.Column=""1"" Grid.Row=""6"" xmlns="""" />
+  <TextBox Style=""{StaticResource trimFormGrid_TB}"" Text=""{Binding Assignee, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordAssignee"" Grid.Column=""1"" Grid.Row=""7"" xmlns="""" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateCreated, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateCreated"" Grid.Column=""1"" Grid.Row=""2"" />
+  <toolkit:DatePicker Style=""{StaticResource trimFormGrid_DP}"" Value=""{Binding DateDue, Converter={StaticResource trimPropertyConverter}}"" Name=""RecordDateDue"" Grid.Column=""1"" Grid.Row=""3"" />
+  <TextBlock Grid.Column=""0"" Text=""Title (Free Text Part)"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""0"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""External ID"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""1"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Created"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""2"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Date Due"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""3"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Author"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""4"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Container"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""5"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Enclosed?"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""6"" xmlns="""" />
+  <TextBlock Grid.Column=""0"" Text=""Assignee"" Style=""{StaticResource trimFormGrid_LBL}"" Grid.Row=""7"" xmlns="""" />
+</Grid>";
+
+      Assert.AreEqual(expectedXaml, xaml2);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/ExceptionTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/ExceptionTests.cs
@@ -1,101 +1,101 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Schema;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests
-{
-  [TestFixture]
-  public class ExceptionTests : TestFixtureBase
-  {
-    [Test]
-    public void JsonSerializationException()
-    {
-      JsonSerializationException exception = new JsonSerializationException();
-      Assert.AreEqual("Exception of type 'Newtonsoft.Json.JsonSerializationException' was thrown.", exception.Message);
-
-      exception = new JsonSerializationException("Message!");
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual(null, exception.InnerException);
-
-      exception = new JsonSerializationException("Message!", new Exception("Inner!"));
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual("Inner!", exception.InnerException.Message);
-    }
-
-    [Test]
-    public void JsonWriterException()
-    {
-      JsonWriterException exception = new JsonWriterException();
-      Assert.AreEqual("Exception of type 'Newtonsoft.Json.JsonWriterException' was thrown.", exception.Message);
-
-      exception = new JsonWriterException("Message!");
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual(null, exception.InnerException);
-
-      exception = new JsonWriterException("Message!", new Exception("Inner!"));
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual("Inner!", exception.InnerException.Message);
-    }
-
-    [Test]
-    public void JsonReaderException()
-    {
-      JsonReaderException exception = new JsonReaderException();
-      Assert.AreEqual("Exception of type 'Newtonsoft.Json.JsonReaderException' was thrown.", exception.Message);
-
-      exception = new JsonReaderException("Message!");
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual(null, exception.InnerException);
-
-      exception = new JsonReaderException("Message!", new Exception("Inner!"));
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual("Inner!", exception.InnerException.Message);
-    }
-
-    [Test]
-    public void JsonSchemaException()
-    {
-      JsonSchemaException exception = new JsonSchemaException();
-      Assert.AreEqual("Exception of type 'Newtonsoft.Json.Schema.JsonSchemaException' was thrown.", exception.Message);
-
-      exception = new JsonSchemaException("Message!");
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual(null, exception.InnerException);
-
-      exception = new JsonSchemaException("Message!", new Exception("Inner!"));
-      Assert.AreEqual("Message!", exception.Message);
-      Assert.AreEqual("Inner!", exception.InnerException.Message);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Schema;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests
+{
+  [TestFixture]
+  public class ExceptionTests : TestFixtureBase
+  {
+    [Test]
+    public void JsonSerializationException()
+    {
+      JsonSerializationException exception = new JsonSerializationException();
+      Assert.AreEqual("Exception of type 'Newtonsoft.Json.JsonSerializationException' was thrown.", exception.Message);
+
+      exception = new JsonSerializationException("Message!");
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual(null, exception.InnerException);
+
+      exception = new JsonSerializationException("Message!", new Exception("Inner!"));
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual("Inner!", exception.InnerException.Message);
+    }
+
+    [Test]
+    public void JsonWriterException()
+    {
+      JsonWriterException exception = new JsonWriterException();
+      Assert.AreEqual("Exception of type 'Newtonsoft.Json.JsonWriterException' was thrown.", exception.Message);
+
+      exception = new JsonWriterException("Message!");
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual(null, exception.InnerException);
+
+      exception = new JsonWriterException("Message!", new Exception("Inner!"));
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual("Inner!", exception.InnerException.Message);
+    }
+
+    [Test]
+    public void JsonReaderException()
+    {
+      JsonReaderException exception = new JsonReaderException();
+      Assert.AreEqual("Exception of type 'Newtonsoft.Json.JsonReaderException' was thrown.", exception.Message);
+
+      exception = new JsonReaderException("Message!");
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual(null, exception.InnerException);
+
+      exception = new JsonReaderException("Message!", new Exception("Inner!"));
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual("Inner!", exception.InnerException.Message);
+    }
+
+    [Test]
+    public void JsonSchemaException()
+    {
+      JsonSchemaException exception = new JsonSchemaException();
+      Assert.AreEqual("Exception of type 'Newtonsoft.Json.Schema.JsonSchemaException' was thrown.", exception.Message);
+
+      exception = new JsonSchemaException("Message!");
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual(null, exception.InnerException);
+
+      exception = new JsonSchemaException("Message!", new Exception("Inner!"));
+      Assert.AreEqual("Message!", exception.Message);
+      Assert.AreEqual("Inner!", exception.InnerException.Message);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/FileSystemEntityModel.Designer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/FileSystemEntityModel.Designer.cs
@@ -1,524 +1,524 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//    This code was generated from a template.
-//
-//    Manual changes to this file may cause unexpected behavior in your application.
-//    Manual changes to this file will be overwritten if the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-using System;
-using System.Data.Objects;
-using System.Data.Objects.DataClasses;
-using System.Data.EntityClient;
-using System.ComponentModel;
-using System.Xml.Serialization;
-using System.Runtime.Serialization;
-
-[assembly: EdmSchemaAttribute()]
-#region EDM Relationship Metadata
-
-[assembly: EdmRelationshipAttribute("DataServicesTestDatabaseModel", "FK_File_Folder", "Folder", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(Newtonsoft.Json.Tests.Folder), "File", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Newtonsoft.Json.Tests.File))]
-[assembly: EdmRelationshipAttribute("DataServicesTestDatabaseModel", "FK_Folder_Folder", "Folder", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(Newtonsoft.Json.Tests.Folder), "Folder1", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Newtonsoft.Json.Tests.Folder))]
-
-#endregion
-
-namespace Newtonsoft.Json.Tests
-{
-    #region Contexts
-    
-    /// <summary>
-    /// No Metadata Documentation available.
-    /// </summary>
-    public partial class DataServicesTestDatabaseEntities : ObjectContext
-    {
-        #region Constructors
-    
-        /// <summary>
-        /// Initializes a new DataServicesTestDatabaseEntities object using the connection string found in the 'DataServicesTestDatabaseEntities' section of the application configuration file.
-        /// </summary>
-        public DataServicesTestDatabaseEntities() : base("name=DataServicesTestDatabaseEntities", "DataServicesTestDatabaseEntities")
-        {
-            OnContextCreated();
-        }
-    
-        /// <summary>
-        /// Initialize a new DataServicesTestDatabaseEntities object.
-        /// </summary>
-        public DataServicesTestDatabaseEntities(string connectionString) : base(connectionString, "DataServicesTestDatabaseEntities")
-        {
-            OnContextCreated();
-        }
-    
-        /// <summary>
-        /// Initialize a new DataServicesTestDatabaseEntities object.
-        /// </summary>
-        public DataServicesTestDatabaseEntities(EntityConnection connection) : base(connection, "DataServicesTestDatabaseEntities")
-        {
-            OnContextCreated();
-        }
-    
-        #endregion
-    
-        #region Partial Methods
-    
-        partial void OnContextCreated();
-    
-        #endregion
-    
-        #region ObjectSet Properties
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        public ObjectSet<File> File
-        {
-            get
-            {
-                if ((_File == null))
-                {
-                    _File = base.CreateObjectSet<File>("File");
-                }
-                return _File;
-            }
-        }
-        private ObjectSet<File> _File;
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        public ObjectSet<Folder> Folder
-        {
-            get
-            {
-                if ((_Folder == null))
-                {
-                    _Folder = base.CreateObjectSet<Folder>("Folder");
-                }
-                return _Folder;
-            }
-        }
-        private ObjectSet<Folder> _Folder;
-
-        #endregion
-        #region AddTo Methods
-    
-        /// <summary>
-        /// Deprecated Method for adding a new object to the File EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
-        /// </summary>
-        public void AddToFile(File file)
-        {
-            base.AddObject("File", file);
-        }
-    
-        /// <summary>
-        /// Deprecated Method for adding a new object to the Folder EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
-        /// </summary>
-        public void AddToFolder(Folder folder)
-        {
-            base.AddObject("Folder", folder);
-        }
-
-        #endregion
-    }
-    
-
-    #endregion
-    
-    #region Entities
-    
-    /// <summary>
-    /// No Metadata Documentation available.
-    /// </summary>
-    [EdmEntityTypeAttribute(NamespaceName="DataServicesTestDatabaseModel", Name="File")]
-    [Serializable()]
-    [DataContractAttribute(IsReference=true)]
-    public partial class File : EntityObject
-    {
-        #region Factory Method
-    
-        /// <summary>
-        /// Create a new File object.
-        /// </summary>
-        /// <param name="fileId">Initial value of the FileId property.</param>
-        /// <param name="name">Initial value of the Name property.</param>
-        /// <param name="description">Initial value of the Description property.</param>
-        /// <param name="createdDate">Initial value of the CreatedDate property.</param>
-        public static File CreateFile(global::System.Guid fileId, global::System.String name, global::System.String description, global::System.DateTime createdDate)
-        {
-            File file = new File();
-            file.FileId = fileId;
-            file.Name = name;
-            file.Description = description;
-            file.CreatedDate = createdDate;
-            return file;
-        }
-
-        #endregion
-        #region Primitive Properties
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.Guid FileId
-        {
-            get
-            {
-                return _FileId;
-            }
-            set
-            {
-                if (_FileId != value)
-                {
-                    OnFileIdChanging(value);
-                    ReportPropertyChanging("FileId");
-                    _FileId = StructuralObject.SetValidValue(value);
-                    ReportPropertyChanged("FileId");
-                    OnFileIdChanged();
-                }
-            }
-        }
-        private global::System.Guid _FileId;
-        partial void OnFileIdChanging(global::System.Guid value);
-        partial void OnFileIdChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String Name
-        {
-            get
-            {
-                return _Name;
-            }
-            set
-            {
-                OnNameChanging(value);
-                ReportPropertyChanging("Name");
-                _Name = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("Name");
-                OnNameChanged();
-            }
-        }
-        private global::System.String _Name;
-        partial void OnNameChanging(global::System.String value);
-        partial void OnNameChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String Description
-        {
-            get
-            {
-                return _Description;
-            }
-            set
-            {
-                OnDescriptionChanging(value);
-                ReportPropertyChanging("Description");
-                _Description = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("Description");
-                OnDescriptionChanged();
-            }
-        }
-        private global::System.String _Description;
-        partial void OnDescriptionChanging(global::System.String value);
-        partial void OnDescriptionChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.DateTime CreatedDate
-        {
-            get
-            {
-                return _CreatedDate;
-            }
-            set
-            {
-                OnCreatedDateChanging(value);
-                ReportPropertyChanging("CreatedDate");
-                _CreatedDate = StructuralObject.SetValidValue(value);
-                ReportPropertyChanged("CreatedDate");
-                OnCreatedDateChanged();
-            }
-        }
-        private global::System.DateTime _CreatedDate;
-        partial void OnCreatedDateChanging(global::System.DateTime value);
-        partial void OnCreatedDateChanged();
-
-        #endregion
-    
-        #region Navigation Properties
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [XmlIgnoreAttribute()]
-        [SoapIgnoreAttribute()]
-        [DataMemberAttribute()]
-        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_File_Folder", "Folder")]
-        public Folder Folder
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder").Value;
-            }
-            set
-            {
-                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder").Value = value;
-            }
-        }
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [BrowsableAttribute(false)]
-        [DataMemberAttribute()]
-        public EntityReference<Folder> FolderReference
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder");
-            }
-            set
-            {
-                if ((value != null))
-                {
-                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder", value);
-                }
-            }
-        }
-
-        #endregion
-    }
-    
-    /// <summary>
-    /// No Metadata Documentation available.
-    /// </summary>
-    [EdmEntityTypeAttribute(NamespaceName="DataServicesTestDatabaseModel", Name="Folder")]
-    [Serializable()]
-    [DataContractAttribute(IsReference=true)]
-    public partial class Folder : EntityObject
-    {
-        #region Factory Method
-    
-        /// <summary>
-        /// Create a new Folder object.
-        /// </summary>
-        /// <param name="folderId">Initial value of the FolderId property.</param>
-        /// <param name="name">Initial value of the Name property.</param>
-        /// <param name="description">Initial value of the Description property.</param>
-        /// <param name="createdDate">Initial value of the CreatedDate property.</param>
-        public static Folder CreateFolder(global::System.Guid folderId, global::System.String name, global::System.String description, global::System.DateTime createdDate)
-        {
-            Folder folder = new Folder();
-            folder.FolderId = folderId;
-            folder.Name = name;
-            folder.Description = description;
-            folder.CreatedDate = createdDate;
-            return folder;
-        }
-
-        #endregion
-        #region Primitive Properties
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.Guid FolderId
-        {
-            get
-            {
-                return _FolderId;
-            }
-            set
-            {
-                if (_FolderId != value)
-                {
-                    OnFolderIdChanging(value);
-                    ReportPropertyChanging("FolderId");
-                    _FolderId = StructuralObject.SetValidValue(value);
-                    ReportPropertyChanged("FolderId");
-                    OnFolderIdChanged();
-                }
-            }
-        }
-        private global::System.Guid _FolderId;
-        partial void OnFolderIdChanging(global::System.Guid value);
-        partial void OnFolderIdChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String Name
-        {
-            get
-            {
-                return _Name;
-            }
-            set
-            {
-                OnNameChanging(value);
-                ReportPropertyChanging("Name");
-                _Name = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("Name");
-                OnNameChanged();
-            }
-        }
-        private global::System.String _Name;
-        partial void OnNameChanging(global::System.String value);
-        partial void OnNameChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String Description
-        {
-            get
-            {
-                return _Description;
-            }
-            set
-            {
-                OnDescriptionChanging(value);
-                ReportPropertyChanging("Description");
-                _Description = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("Description");
-                OnDescriptionChanged();
-            }
-        }
-        private global::System.String _Description;
-        partial void OnDescriptionChanging(global::System.String value);
-        partial void OnDescriptionChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.DateTime CreatedDate
-        {
-            get
-            {
-                return _CreatedDate;
-            }
-            set
-            {
-                OnCreatedDateChanging(value);
-                ReportPropertyChanging("CreatedDate");
-                _CreatedDate = StructuralObject.SetValidValue(value);
-                ReportPropertyChanged("CreatedDate");
-                OnCreatedDateChanged();
-            }
-        }
-        private global::System.DateTime _CreatedDate;
-        partial void OnCreatedDateChanging(global::System.DateTime value);
-        partial void OnCreatedDateChanged();
-
-        #endregion
-    
-        #region Navigation Properties
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [XmlIgnoreAttribute()]
-        [SoapIgnoreAttribute()]
-        [DataMemberAttribute()]
-        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_File_Folder", "File")]
-        public EntityCollection<File> Files
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<File>("DataServicesTestDatabaseModel.FK_File_Folder", "File");
-            }
-            set
-            {
-                if ((value != null))
-                {
-                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<File>("DataServicesTestDatabaseModel.FK_File_Folder", "File", value);
-                }
-            }
-        }
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [XmlIgnoreAttribute()]
-        [SoapIgnoreAttribute()]
-        [DataMemberAttribute()]
-        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_Folder_Folder", "Folder1")]
-        public EntityCollection<Folder> ChildFolders
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder1");
-            }
-            set
-            {
-                if ((value != null))
-                {
-                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder1", value);
-                }
-            }
-        }
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [XmlIgnoreAttribute()]
-        [SoapIgnoreAttribute()]
-        [DataMemberAttribute()]
-        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_Folder_Folder", "Folder")]
-        public Folder ParentFolder
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder").Value;
-            }
-            set
-            {
-                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder").Value = value;
-            }
-        }
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [BrowsableAttribute(false)]
-        [DataMemberAttribute()]
-        public EntityReference<Folder> ParentFolderReference
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder");
-            }
-            set
-            {
-                if ((value != null))
-                {
-                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder", value);
-                }
-            }
-        }
-
-        #endregion
-    }
-
-    #endregion
-    
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//    This code was generated from a template.
+//
+//    Manual changes to this file may cause unexpected behavior in your application.
+//    Manual changes to this file will be overwritten if the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Data.Objects;
+using System.Data.Objects.DataClasses;
+using System.Data.EntityClient;
+using System.ComponentModel;
+using System.Xml.Serialization;
+using System.Runtime.Serialization;
+
+[assembly: EdmSchemaAttribute()]
+#region EDM Relationship Metadata
+
+[assembly: EdmRelationshipAttribute("DataServicesTestDatabaseModel", "FK_File_Folder", "Folder", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(Newtonsoft.Json.Tests.Folder), "File", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Newtonsoft.Json.Tests.File))]
+[assembly: EdmRelationshipAttribute("DataServicesTestDatabaseModel", "FK_Folder_Folder", "Folder", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(Newtonsoft.Json.Tests.Folder), "Folder1", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Newtonsoft.Json.Tests.Folder))]
+
+#endregion
+
+namespace Newtonsoft.Json.Tests
+{
+    #region Contexts
+    
+    /// <summary>
+    /// No Metadata Documentation available.
+    /// </summary>
+    public partial class DataServicesTestDatabaseEntities : ObjectContext
+    {
+        #region Constructors
+    
+        /// <summary>
+        /// Initializes a new DataServicesTestDatabaseEntities object using the connection string found in the 'DataServicesTestDatabaseEntities' section of the application configuration file.
+        /// </summary>
+        public DataServicesTestDatabaseEntities() : base("name=DataServicesTestDatabaseEntities", "DataServicesTestDatabaseEntities")
+        {
+            OnContextCreated();
+        }
+    
+        /// <summary>
+        /// Initialize a new DataServicesTestDatabaseEntities object.
+        /// </summary>
+        public DataServicesTestDatabaseEntities(string connectionString) : base(connectionString, "DataServicesTestDatabaseEntities")
+        {
+            OnContextCreated();
+        }
+    
+        /// <summary>
+        /// Initialize a new DataServicesTestDatabaseEntities object.
+        /// </summary>
+        public DataServicesTestDatabaseEntities(EntityConnection connection) : base(connection, "DataServicesTestDatabaseEntities")
+        {
+            OnContextCreated();
+        }
+    
+        #endregion
+    
+        #region Partial Methods
+    
+        partial void OnContextCreated();
+    
+        #endregion
+    
+        #region ObjectSet Properties
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        public ObjectSet<File> File
+        {
+            get
+            {
+                if ((_File == null))
+                {
+                    _File = base.CreateObjectSet<File>("File");
+                }
+                return _File;
+            }
+        }
+        private ObjectSet<File> _File;
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        public ObjectSet<Folder> Folder
+        {
+            get
+            {
+                if ((_Folder == null))
+                {
+                    _Folder = base.CreateObjectSet<Folder>("Folder");
+                }
+                return _Folder;
+            }
+        }
+        private ObjectSet<Folder> _Folder;
+
+        #endregion
+        #region AddTo Methods
+    
+        /// <summary>
+        /// Deprecated Method for adding a new object to the File EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
+        /// </summary>
+        public void AddToFile(File file)
+        {
+            base.AddObject("File", file);
+        }
+    
+        /// <summary>
+        /// Deprecated Method for adding a new object to the Folder EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
+        /// </summary>
+        public void AddToFolder(Folder folder)
+        {
+            base.AddObject("Folder", folder);
+        }
+
+        #endregion
+    }
+    
+
+    #endregion
+    
+    #region Entities
+    
+    /// <summary>
+    /// No Metadata Documentation available.
+    /// </summary>
+    [EdmEntityTypeAttribute(NamespaceName="DataServicesTestDatabaseModel", Name="File")]
+    [Serializable()]
+    [DataContractAttribute(IsReference=true)]
+    public partial class File : EntityObject
+    {
+        #region Factory Method
+    
+        /// <summary>
+        /// Create a new File object.
+        /// </summary>
+        /// <param name="fileId">Initial value of the FileId property.</param>
+        /// <param name="name">Initial value of the Name property.</param>
+        /// <param name="description">Initial value of the Description property.</param>
+        /// <param name="createdDate">Initial value of the CreatedDate property.</param>
+        public static File CreateFile(global::System.Guid fileId, global::System.String name, global::System.String description, global::System.DateTime createdDate)
+        {
+            File file = new File();
+            file.FileId = fileId;
+            file.Name = name;
+            file.Description = description;
+            file.CreatedDate = createdDate;
+            return file;
+        }
+
+        #endregion
+        #region Primitive Properties
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.Guid FileId
+        {
+            get
+            {
+                return _FileId;
+            }
+            set
+            {
+                if (_FileId != value)
+                {
+                    OnFileIdChanging(value);
+                    ReportPropertyChanging("FileId");
+                    _FileId = StructuralObject.SetValidValue(value);
+                    ReportPropertyChanged("FileId");
+                    OnFileIdChanged();
+                }
+            }
+        }
+        private global::System.Guid _FileId;
+        partial void OnFileIdChanging(global::System.Guid value);
+        partial void OnFileIdChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Name
+        {
+            get
+            {
+                return _Name;
+            }
+            set
+            {
+                OnNameChanging(value);
+                ReportPropertyChanging("Name");
+                _Name = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Name");
+                OnNameChanged();
+            }
+        }
+        private global::System.String _Name;
+        partial void OnNameChanging(global::System.String value);
+        partial void OnNameChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Description
+        {
+            get
+            {
+                return _Description;
+            }
+            set
+            {
+                OnDescriptionChanging(value);
+                ReportPropertyChanging("Description");
+                _Description = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Description");
+                OnDescriptionChanged();
+            }
+        }
+        private global::System.String _Description;
+        partial void OnDescriptionChanging(global::System.String value);
+        partial void OnDescriptionChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.DateTime CreatedDate
+        {
+            get
+            {
+                return _CreatedDate;
+            }
+            set
+            {
+                OnCreatedDateChanging(value);
+                ReportPropertyChanging("CreatedDate");
+                _CreatedDate = StructuralObject.SetValidValue(value);
+                ReportPropertyChanged("CreatedDate");
+                OnCreatedDateChanged();
+            }
+        }
+        private global::System.DateTime _CreatedDate;
+        partial void OnCreatedDateChanging(global::System.DateTime value);
+        partial void OnCreatedDateChanged();
+
+        #endregion
+    
+        #region Navigation Properties
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [XmlIgnoreAttribute()]
+        [SoapIgnoreAttribute()]
+        [DataMemberAttribute()]
+        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_File_Folder", "Folder")]
+        public Folder Folder
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder").Value;
+            }
+            set
+            {
+                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder").Value = value;
+            }
+        }
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [BrowsableAttribute(false)]
+        [DataMemberAttribute()]
+        public EntityReference<Folder> FolderReference
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder");
+            }
+            set
+            {
+                if ((value != null))
+                {
+                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_File_Folder", "Folder", value);
+                }
+            }
+        }
+
+        #endregion
+    }
+    
+    /// <summary>
+    /// No Metadata Documentation available.
+    /// </summary>
+    [EdmEntityTypeAttribute(NamespaceName="DataServicesTestDatabaseModel", Name="Folder")]
+    [Serializable()]
+    [DataContractAttribute(IsReference=true)]
+    public partial class Folder : EntityObject
+    {
+        #region Factory Method
+    
+        /// <summary>
+        /// Create a new Folder object.
+        /// </summary>
+        /// <param name="folderId">Initial value of the FolderId property.</param>
+        /// <param name="name">Initial value of the Name property.</param>
+        /// <param name="description">Initial value of the Description property.</param>
+        /// <param name="createdDate">Initial value of the CreatedDate property.</param>
+        public static Folder CreateFolder(global::System.Guid folderId, global::System.String name, global::System.String description, global::System.DateTime createdDate)
+        {
+            Folder folder = new Folder();
+            folder.FolderId = folderId;
+            folder.Name = name;
+            folder.Description = description;
+            folder.CreatedDate = createdDate;
+            return folder;
+        }
+
+        #endregion
+        #region Primitive Properties
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.Guid FolderId
+        {
+            get
+            {
+                return _FolderId;
+            }
+            set
+            {
+                if (_FolderId != value)
+                {
+                    OnFolderIdChanging(value);
+                    ReportPropertyChanging("FolderId");
+                    _FolderId = StructuralObject.SetValidValue(value);
+                    ReportPropertyChanged("FolderId");
+                    OnFolderIdChanged();
+                }
+            }
+        }
+        private global::System.Guid _FolderId;
+        partial void OnFolderIdChanging(global::System.Guid value);
+        partial void OnFolderIdChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Name
+        {
+            get
+            {
+                return _Name;
+            }
+            set
+            {
+                OnNameChanging(value);
+                ReportPropertyChanging("Name");
+                _Name = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Name");
+                OnNameChanged();
+            }
+        }
+        private global::System.String _Name;
+        partial void OnNameChanging(global::System.String value);
+        partial void OnNameChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Description
+        {
+            get
+            {
+                return _Description;
+            }
+            set
+            {
+                OnDescriptionChanging(value);
+                ReportPropertyChanging("Description");
+                _Description = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Description");
+                OnDescriptionChanged();
+            }
+        }
+        private global::System.String _Description;
+        partial void OnDescriptionChanging(global::System.String value);
+        partial void OnDescriptionChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.DateTime CreatedDate
+        {
+            get
+            {
+                return _CreatedDate;
+            }
+            set
+            {
+                OnCreatedDateChanging(value);
+                ReportPropertyChanging("CreatedDate");
+                _CreatedDate = StructuralObject.SetValidValue(value);
+                ReportPropertyChanged("CreatedDate");
+                OnCreatedDateChanged();
+            }
+        }
+        private global::System.DateTime _CreatedDate;
+        partial void OnCreatedDateChanging(global::System.DateTime value);
+        partial void OnCreatedDateChanged();
+
+        #endregion
+    
+        #region Navigation Properties
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [XmlIgnoreAttribute()]
+        [SoapIgnoreAttribute()]
+        [DataMemberAttribute()]
+        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_File_Folder", "File")]
+        public EntityCollection<File> Files
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<File>("DataServicesTestDatabaseModel.FK_File_Folder", "File");
+            }
+            set
+            {
+                if ((value != null))
+                {
+                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<File>("DataServicesTestDatabaseModel.FK_File_Folder", "File", value);
+                }
+            }
+        }
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [XmlIgnoreAttribute()]
+        [SoapIgnoreAttribute()]
+        [DataMemberAttribute()]
+        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_Folder_Folder", "Folder1")]
+        public EntityCollection<Folder> ChildFolders
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder1");
+            }
+            set
+            {
+                if ((value != null))
+                {
+                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder1", value);
+                }
+            }
+        }
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [XmlIgnoreAttribute()]
+        [SoapIgnoreAttribute()]
+        [DataMemberAttribute()]
+        [EdmRelationshipNavigationPropertyAttribute("DataServicesTestDatabaseModel", "FK_Folder_Folder", "Folder")]
+        public Folder ParentFolder
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder").Value;
+            }
+            set
+            {
+                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder").Value = value;
+            }
+        }
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [BrowsableAttribute(false)]
+        [DataMemberAttribute()]
+        public EntityReference<Folder> ParentFolderReference
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder");
+            }
+            set
+            {
+                if ((value != null))
+                {
+                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Folder>("DataServicesTestDatabaseModel.FK_Folder_Folder", "Folder", value);
+                }
+            }
+        }
+
+        #endregion
+    }
+
+    #endregion
+    
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/FileSystemEntityModel.edmx
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/FileSystemEntityModel.edmx
@@ -1,184 +1,184 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
-  <!-- EF Runtime content -->
-  <edmx:Runtime>
-    <!-- SSDL content -->
-    <edmx:StorageModels>
-      <Schema Namespace="DataServicesTestDatabaseModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
-        <EntityContainer Name="DataServicesTestDatabaseModelStoreContainer">
-          <EntitySet Name="File" EntityType="DataServicesTestDatabaseModel.Store.File" store:Type="Tables" Schema="dbo" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" />
-          <EntitySet Name="Folder" EntityType="DataServicesTestDatabaseModel.Store.Folder" store:Type="Tables" Schema="dbo" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" />
-          <AssociationSet Name="FK_File_Folder" Association="DataServicesTestDatabaseModel.Store.FK_File_Folder">
-            <End Role="Folder" EntitySet="Folder" />
-            <End Role="File" EntitySet="File" />
-          </AssociationSet>
-          <AssociationSet Name="FK_Folder_Folder" Association="DataServicesTestDatabaseModel.Store.FK_Folder_Folder">
-            <End Role="Folder" EntitySet="Folder" />
-            <End Role="Folder1" EntitySet="Folder" />
-          </AssociationSet>
-        </EntityContainer>
-        <EntityType Name="File">
-          <Key>
-            <PropertyRef Name="FileId" />
-          </Key>
-          <Property Name="FileId" Type="uniqueidentifier" Nullable="false" />
-          <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="200" />
-          <Property Name="Description" Type="nvarchar" Nullable="false" MaxLength="200" />
-          <Property Name="CreatedDate" Type="datetime" Nullable="false" />
-          <Property Name="FolderId" Type="uniqueidentifier" Nullable="false" />
-        </EntityType>
-        <EntityType Name="Folder">
-          <Key>
-            <PropertyRef Name="FolderId" />
-          </Key>
-          <Property Name="FolderId" Type="uniqueidentifier" Nullable="false" />
-          <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="200" />
-          <Property Name="Description" Type="nvarchar" Nullable="false" MaxLength="200" />
-          <Property Name="CreatedDate" Type="datetime" Nullable="false" />
-          <Property Name="ParentFolderId" Type="uniqueidentifier" />
-        </EntityType>
-        <Association Name="FK_File_Folder">
-          <End Role="Folder" Type="DataServicesTestDatabaseModel.Store.Folder" Multiplicity="1" />
-          <End Role="File" Type="DataServicesTestDatabaseModel.Store.File" Multiplicity="*" />
-          <ReferentialConstraint>
-            <Principal Role="Folder">
-              <PropertyRef Name="FolderId" />
-            </Principal>
-            <Dependent Role="File">
-              <PropertyRef Name="FolderId" />
-            </Dependent>
-          </ReferentialConstraint>
-        </Association>
-        <Association Name="FK_Folder_Folder">
-          <End Role="Folder" Type="DataServicesTestDatabaseModel.Store.Folder" Multiplicity="0..1" />
-          <End Role="Folder1" Type="DataServicesTestDatabaseModel.Store.Folder" Multiplicity="*" />
-          <ReferentialConstraint>
-            <Principal Role="Folder">
-              <PropertyRef Name="FolderId" />
-            </Principal>
-            <Dependent Role="Folder1">
-              <PropertyRef Name="ParentFolderId" />
-            </Dependent>
-          </ReferentialConstraint>
-        </Association>
-      </Schema>
-    </edmx:StorageModels>
-    <!-- CSDL content -->
-    <edmx:ConceptualModels>
-      <Schema Namespace="DataServicesTestDatabaseModel" Alias="Self" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
-        <EntityContainer Name="DataServicesTestDatabaseEntities">
-          <EntitySet Name="File" EntityType="DataServicesTestDatabaseModel.File" />
-          <EntitySet Name="Folder" EntityType="DataServicesTestDatabaseModel.Folder" />
-          <AssociationSet Name="FK_File_Folder" Association="DataServicesTestDatabaseModel.FK_File_Folder">
-            <End Role="Folder" EntitySet="Folder" />
-            <End Role="File" EntitySet="File" />
-          </AssociationSet>
-          <AssociationSet Name="FK_Folder_Folder" Association="DataServicesTestDatabaseModel.FK_Folder_Folder">
-            <End Role="Folder" EntitySet="Folder" />
-            <End Role="Folder1" EntitySet="Folder" />
-          </AssociationSet>
-        </EntityContainer>
-        <EntityType Name="File">
-          <Key>
-            <PropertyRef Name="FileId" />
-          </Key>
-          <Property Name="FileId" Type="Guid" Nullable="false" />
-          <Property Name="Name" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
-          <Property Name="Description" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
-          <Property Name="CreatedDate" Type="DateTime" Nullable="false" />
-          <NavigationProperty Name="Folder" Relationship="DataServicesTestDatabaseModel.FK_File_Folder" FromRole="File" ToRole="Folder" />
-        </EntityType>
-        <EntityType Name="Folder">
-          <Key>
-            <PropertyRef Name="FolderId" />
-          </Key>
-          <Property Name="FolderId" Type="Guid" Nullable="false" />
-          <Property Name="Name" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
-          <Property Name="Description" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
-          <Property Name="CreatedDate" Type="DateTime" Nullable="false" />
-          <NavigationProperty Name="Files" Relationship="DataServicesTestDatabaseModel.FK_File_Folder" FromRole="Folder" ToRole="File" />
-          <NavigationProperty Name="ChildFolders" Relationship="DataServicesTestDatabaseModel.FK_Folder_Folder" FromRole="Folder" ToRole="Folder1" />
-          <NavigationProperty Name="ParentFolder" Relationship="DataServicesTestDatabaseModel.FK_Folder_Folder" FromRole="Folder1" ToRole="Folder" />
-        </EntityType>
-        <Association Name="FK_File_Folder">
-          <End Role="Folder" Type="DataServicesTestDatabaseModel.Folder" Multiplicity="1" />
-          <End Role="File" Type="DataServicesTestDatabaseModel.File" Multiplicity="*" />
-        </Association>
-        <Association Name="FK_Folder_Folder">
-          <End Role="Folder" Type="DataServicesTestDatabaseModel.Folder" Multiplicity="0..1" />
-          <End Role="Folder1" Type="DataServicesTestDatabaseModel.Folder" Multiplicity="*" />
-        </Association>
-      </Schema>
-    </edmx:ConceptualModels>
-    <!-- C-S mapping content -->
-    <edmx:Mappings>
-      <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2008/09/mapping/cs">
-        <EntityContainerMapping StorageEntityContainer="DataServicesTestDatabaseModelStoreContainer" CdmEntityContainer="DataServicesTestDatabaseEntities">
-          <EntitySetMapping Name="File">
-            <EntityTypeMapping TypeName="IsTypeOf(DataServicesTestDatabaseModel.File)">
-              <MappingFragment StoreEntitySet="File">
-                <ScalarProperty Name="FileId" ColumnName="FileId" />
-                <ScalarProperty Name="Name" ColumnName="Name" />
-                <ScalarProperty Name="Description" ColumnName="Description" />
-                <ScalarProperty Name="CreatedDate" ColumnName="CreatedDate" />
-              </MappingFragment>
-            </EntityTypeMapping>
-          </EntitySetMapping>
-          <EntitySetMapping Name="Folder">
-            <EntityTypeMapping TypeName="IsTypeOf(DataServicesTestDatabaseModel.Folder)">
-              <MappingFragment StoreEntitySet="Folder">
-                <ScalarProperty Name="FolderId" ColumnName="FolderId" />
-                <ScalarProperty Name="Name" ColumnName="Name" />
-                <ScalarProperty Name="Description" ColumnName="Description" />
-                <ScalarProperty Name="CreatedDate" ColumnName="CreatedDate" />
-              </MappingFragment>
-            </EntityTypeMapping>
-          </EntitySetMapping>
-          <AssociationSetMapping Name="FK_File_Folder" TypeName="DataServicesTestDatabaseModel.FK_File_Folder" StoreEntitySet="File">
-            <EndProperty Name="Folder">
-              <ScalarProperty Name="FolderId" ColumnName="FolderId" />
-            </EndProperty>
-            <EndProperty Name="File">
-              <ScalarProperty Name="FileId" ColumnName="FileId" />
-            </EndProperty>
-          </AssociationSetMapping>
-          <AssociationSetMapping Name="FK_Folder_Folder" TypeName="DataServicesTestDatabaseModel.FK_Folder_Folder" StoreEntitySet="Folder">
-            <EndProperty Name="Folder">
-              <ScalarProperty Name="FolderId" ColumnName="ParentFolderId" />
-            </EndProperty>
-            <EndProperty Name="Folder1">
-              <ScalarProperty Name="FolderId" ColumnName="FolderId" />
-            </EndProperty>
-            <Condition ColumnName="ParentFolderId" IsNull="false" />
-          </AssociationSetMapping>
-        </EntityContainerMapping>
-      </Mapping>
-    </edmx:Mappings>
-  </edmx:Runtime>
-  <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
-  <edmx:Designer>
-    <edmx:Connection>
-      <DesignerInfoPropertySet xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
-        <DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
-      </DesignerInfoPropertySet>
-    </edmx:Connection>
-    <edmx:Options>
-      <DesignerInfoPropertySet xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
-        <DesignerProperty Name="ValidateOnBuild" Value="true" />
-      </DesignerInfoPropertySet>
-    </edmx:Options>
-    <!-- Diagram content (shape and connector positions) -->
-    <edmx:Diagrams>
-      <Diagram Name="FileSystemEntityModel" xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
-        <EntityTypeShape EntityType="DataServicesTestDatabaseModel.File" Width="1.5" PointX="3" PointY="1.125" Height="1.9802864583333335" IsExpanded="true" />
-        <EntityTypeShape EntityType="DataServicesTestDatabaseModel.Folder" Width="1.5" PointX="0.75" PointY="1" Height="2.3648893229166665" IsExpanded="true" />
-        <AssociationConnector Association="DataServicesTestDatabaseModel.FK_File_Folder" ManuallyRouted="false">
-          <ConnectorPoint PointX="2.25" PointY="2.1151432291666667" />
-          <ConnectorPoint PointX="3" PointY="2.1151432291666667" /></AssociationConnector>
-        <AssociationConnector Association="DataServicesTestDatabaseModel.FK_Folder_Folder" ManuallyRouted="false">
-          <ConnectorPoint PointX="1.2819230769230767" PointY="3.3648893229166665" />
-          <ConnectorPoint PointX="1.2819230769230767" PointY="3.6148893229166665" />
-          <ConnectorPoint PointX="1.7284615384615383" PointY="3.6148893229166665" />
-          <ConnectorPoint PointX="1.7284615384615383" PointY="3.3648893229166665" /></AssociationConnector></Diagram></edmx:Diagrams>
-  </edmx:Designer>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">
+  <!-- EF Runtime content -->
+  <edmx:Runtime>
+    <!-- SSDL content -->
+    <edmx:StorageModels>
+      <Schema Namespace="DataServicesTestDatabaseModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
+        <EntityContainer Name="DataServicesTestDatabaseModelStoreContainer">
+          <EntitySet Name="File" EntityType="DataServicesTestDatabaseModel.Store.File" store:Type="Tables" Schema="dbo" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" />
+          <EntitySet Name="Folder" EntityType="DataServicesTestDatabaseModel.Store.Folder" store:Type="Tables" Schema="dbo" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" />
+          <AssociationSet Name="FK_File_Folder" Association="DataServicesTestDatabaseModel.Store.FK_File_Folder">
+            <End Role="Folder" EntitySet="Folder" />
+            <End Role="File" EntitySet="File" />
+          </AssociationSet>
+          <AssociationSet Name="FK_Folder_Folder" Association="DataServicesTestDatabaseModel.Store.FK_Folder_Folder">
+            <End Role="Folder" EntitySet="Folder" />
+            <End Role="Folder1" EntitySet="Folder" />
+          </AssociationSet>
+        </EntityContainer>
+        <EntityType Name="File">
+          <Key>
+            <PropertyRef Name="FileId" />
+          </Key>
+          <Property Name="FileId" Type="uniqueidentifier" Nullable="false" />
+          <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="200" />
+          <Property Name="Description" Type="nvarchar" Nullable="false" MaxLength="200" />
+          <Property Name="CreatedDate" Type="datetime" Nullable="false" />
+          <Property Name="FolderId" Type="uniqueidentifier" Nullable="false" />
+        </EntityType>
+        <EntityType Name="Folder">
+          <Key>
+            <PropertyRef Name="FolderId" />
+          </Key>
+          <Property Name="FolderId" Type="uniqueidentifier" Nullable="false" />
+          <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="200" />
+          <Property Name="Description" Type="nvarchar" Nullable="false" MaxLength="200" />
+          <Property Name="CreatedDate" Type="datetime" Nullable="false" />
+          <Property Name="ParentFolderId" Type="uniqueidentifier" />
+        </EntityType>
+        <Association Name="FK_File_Folder">
+          <End Role="Folder" Type="DataServicesTestDatabaseModel.Store.Folder" Multiplicity="1" />
+          <End Role="File" Type="DataServicesTestDatabaseModel.Store.File" Multiplicity="*" />
+          <ReferentialConstraint>
+            <Principal Role="Folder">
+              <PropertyRef Name="FolderId" />
+            </Principal>
+            <Dependent Role="File">
+              <PropertyRef Name="FolderId" />
+            </Dependent>
+          </ReferentialConstraint>
+        </Association>
+        <Association Name="FK_Folder_Folder">
+          <End Role="Folder" Type="DataServicesTestDatabaseModel.Store.Folder" Multiplicity="0..1" />
+          <End Role="Folder1" Type="DataServicesTestDatabaseModel.Store.Folder" Multiplicity="*" />
+          <ReferentialConstraint>
+            <Principal Role="Folder">
+              <PropertyRef Name="FolderId" />
+            </Principal>
+            <Dependent Role="Folder1">
+              <PropertyRef Name="ParentFolderId" />
+            </Dependent>
+          </ReferentialConstraint>
+        </Association>
+      </Schema>
+    </edmx:StorageModels>
+    <!-- CSDL content -->
+    <edmx:ConceptualModels>
+      <Schema Namespace="DataServicesTestDatabaseModel" Alias="Self" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
+        <EntityContainer Name="DataServicesTestDatabaseEntities">
+          <EntitySet Name="File" EntityType="DataServicesTestDatabaseModel.File" />
+          <EntitySet Name="Folder" EntityType="DataServicesTestDatabaseModel.Folder" />
+          <AssociationSet Name="FK_File_Folder" Association="DataServicesTestDatabaseModel.FK_File_Folder">
+            <End Role="Folder" EntitySet="Folder" />
+            <End Role="File" EntitySet="File" />
+          </AssociationSet>
+          <AssociationSet Name="FK_Folder_Folder" Association="DataServicesTestDatabaseModel.FK_Folder_Folder">
+            <End Role="Folder" EntitySet="Folder" />
+            <End Role="Folder1" EntitySet="Folder" />
+          </AssociationSet>
+        </EntityContainer>
+        <EntityType Name="File">
+          <Key>
+            <PropertyRef Name="FileId" />
+          </Key>
+          <Property Name="FileId" Type="Guid" Nullable="false" />
+          <Property Name="Name" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
+          <Property Name="Description" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
+          <Property Name="CreatedDate" Type="DateTime" Nullable="false" />
+          <NavigationProperty Name="Folder" Relationship="DataServicesTestDatabaseModel.FK_File_Folder" FromRole="File" ToRole="Folder" />
+        </EntityType>
+        <EntityType Name="Folder">
+          <Key>
+            <PropertyRef Name="FolderId" />
+          </Key>
+          <Property Name="FolderId" Type="Guid" Nullable="false" />
+          <Property Name="Name" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
+          <Property Name="Description" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="false" />
+          <Property Name="CreatedDate" Type="DateTime" Nullable="false" />
+          <NavigationProperty Name="Files" Relationship="DataServicesTestDatabaseModel.FK_File_Folder" FromRole="Folder" ToRole="File" />
+          <NavigationProperty Name="ChildFolders" Relationship="DataServicesTestDatabaseModel.FK_Folder_Folder" FromRole="Folder" ToRole="Folder1" />
+          <NavigationProperty Name="ParentFolder" Relationship="DataServicesTestDatabaseModel.FK_Folder_Folder" FromRole="Folder1" ToRole="Folder" />
+        </EntityType>
+        <Association Name="FK_File_Folder">
+          <End Role="Folder" Type="DataServicesTestDatabaseModel.Folder" Multiplicity="1" />
+          <End Role="File" Type="DataServicesTestDatabaseModel.File" Multiplicity="*" />
+        </Association>
+        <Association Name="FK_Folder_Folder">
+          <End Role="Folder" Type="DataServicesTestDatabaseModel.Folder" Multiplicity="0..1" />
+          <End Role="Folder1" Type="DataServicesTestDatabaseModel.Folder" Multiplicity="*" />
+        </Association>
+      </Schema>
+    </edmx:ConceptualModels>
+    <!-- C-S mapping content -->
+    <edmx:Mappings>
+      <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2008/09/mapping/cs">
+        <EntityContainerMapping StorageEntityContainer="DataServicesTestDatabaseModelStoreContainer" CdmEntityContainer="DataServicesTestDatabaseEntities">
+          <EntitySetMapping Name="File">
+            <EntityTypeMapping TypeName="IsTypeOf(DataServicesTestDatabaseModel.File)">
+              <MappingFragment StoreEntitySet="File">
+                <ScalarProperty Name="FileId" ColumnName="FileId" />
+                <ScalarProperty Name="Name" ColumnName="Name" />
+                <ScalarProperty Name="Description" ColumnName="Description" />
+                <ScalarProperty Name="CreatedDate" ColumnName="CreatedDate" />
+              </MappingFragment>
+            </EntityTypeMapping>
+          </EntitySetMapping>
+          <EntitySetMapping Name="Folder">
+            <EntityTypeMapping TypeName="IsTypeOf(DataServicesTestDatabaseModel.Folder)">
+              <MappingFragment StoreEntitySet="Folder">
+                <ScalarProperty Name="FolderId" ColumnName="FolderId" />
+                <ScalarProperty Name="Name" ColumnName="Name" />
+                <ScalarProperty Name="Description" ColumnName="Description" />
+                <ScalarProperty Name="CreatedDate" ColumnName="CreatedDate" />
+              </MappingFragment>
+            </EntityTypeMapping>
+          </EntitySetMapping>
+          <AssociationSetMapping Name="FK_File_Folder" TypeName="DataServicesTestDatabaseModel.FK_File_Folder" StoreEntitySet="File">
+            <EndProperty Name="Folder">
+              <ScalarProperty Name="FolderId" ColumnName="FolderId" />
+            </EndProperty>
+            <EndProperty Name="File">
+              <ScalarProperty Name="FileId" ColumnName="FileId" />
+            </EndProperty>
+          </AssociationSetMapping>
+          <AssociationSetMapping Name="FK_Folder_Folder" TypeName="DataServicesTestDatabaseModel.FK_Folder_Folder" StoreEntitySet="Folder">
+            <EndProperty Name="Folder">
+              <ScalarProperty Name="FolderId" ColumnName="ParentFolderId" />
+            </EndProperty>
+            <EndProperty Name="Folder1">
+              <ScalarProperty Name="FolderId" ColumnName="FolderId" />
+            </EndProperty>
+            <Condition ColumnName="ParentFolderId" IsNull="false" />
+          </AssociationSetMapping>
+        </EntityContainerMapping>
+      </Mapping>
+    </edmx:Mappings>
+  </edmx:Runtime>
+  <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
+  <edmx:Designer>
+    <edmx:Connection>
+      <DesignerInfoPropertySet xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
+        <DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
+      </DesignerInfoPropertySet>
+    </edmx:Connection>
+    <edmx:Options>
+      <DesignerInfoPropertySet xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
+        <DesignerProperty Name="ValidateOnBuild" Value="true" />
+      </DesignerInfoPropertySet>
+    </edmx:Options>
+    <!-- Diagram content (shape and connector positions) -->
+    <edmx:Diagrams>
+      <Diagram Name="FileSystemEntityModel" xmlns="http://schemas.microsoft.com/ado/2008/10/edmx">
+        <EntityTypeShape EntityType="DataServicesTestDatabaseModel.File" Width="1.5" PointX="3" PointY="1.125" Height="1.9802864583333335" IsExpanded="true" />
+        <EntityTypeShape EntityType="DataServicesTestDatabaseModel.Folder" Width="1.5" PointX="0.75" PointY="1" Height="2.3648893229166665" IsExpanded="true" />
+        <AssociationConnector Association="DataServicesTestDatabaseModel.FK_File_Folder" ManuallyRouted="false">
+          <ConnectorPoint PointX="2.25" PointY="2.1151432291666667" />
+          <ConnectorPoint PointX="3" PointY="2.1151432291666667" /></AssociationConnector>
+        <AssociationConnector Association="DataServicesTestDatabaseModel.FK_Folder_Folder" ManuallyRouted="false">
+          <ConnectorPoint PointX="1.2819230769230767" PointY="3.3648893229166665" />
+          <ConnectorPoint PointX="1.2819230769230767" PointY="3.6148893229166665" />
+          <ConnectorPoint PointX="1.7284615384615383" PointY="3.6148893229166665" />
+          <ConnectorPoint PointX="1.7284615384615383" PointY="3.3648893229166665" /></AssociationConnector></Diagram></edmx:Diagrams>
+  </edmx:Designer>
 </edmx:Edmx>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonArrayAttributeTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonArrayAttributeTests.cs
@@ -1,91 +1,91 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests
-{
-  [TestFixture]
-  public class JsonArrayAttributeTests : TestFixtureBase
-  {
-    [Test]
-    public void IsReferenceTest()
-    {
-      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
-      Assert.AreEqual(null, attribute._isReference);
-      Assert.AreEqual(false, attribute.IsReference);
-
-      attribute.IsReference = false;
-      Assert.AreEqual(false, attribute._isReference);
-      Assert.AreEqual(false, attribute.IsReference);
-
-      attribute.IsReference = true;
-      Assert.AreEqual(true, attribute._isReference);
-      Assert.AreEqual(true, attribute.IsReference);
-    }
-
-    [Test]
-    public void NullValueHandlingTest()
-    {
-      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
-      Assert.AreEqual(null, attribute._nullValueHandling);
-      Assert.AreEqual(NullValueHandling.Include, attribute.NullValueHandling);
-
-      attribute.NullValueHandling = NullValueHandling.Ignore;
-      Assert.AreEqual(NullValueHandling.Ignore, attribute._nullValueHandling);
-      Assert.AreEqual(NullValueHandling.Ignore, attribute.NullValueHandling);
-    }
-
-    [Test]
-    public void DefaultValueHandlingTest()
-    {
-      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
-      Assert.AreEqual(null, attribute._defaultValueHandling);
-      Assert.AreEqual(DefaultValueHandling.Include, attribute.DefaultValueHandling);
-
-      attribute.DefaultValueHandling = DefaultValueHandling.Ignore;
-      Assert.AreEqual(DefaultValueHandling.Ignore, attribute._defaultValueHandling);
-      Assert.AreEqual(DefaultValueHandling.Ignore, attribute.DefaultValueHandling);
-    }
-
-    [Test]
-    public void ReferenceLoopHandlingTest()
-    {
-      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
-      Assert.AreEqual(null, attribute._defaultValueHandling);
-      Assert.AreEqual(ReferenceLoopHandling.Error, attribute.ReferenceLoopHandling);
-
-      attribute.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
-      Assert.AreEqual(ReferenceLoopHandling.Ignore, attribute._referenceLoopHandling);
-      Assert.AreEqual(ReferenceLoopHandling.Ignore, attribute.ReferenceLoopHandling);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests
+{
+  [TestFixture]
+  public class JsonArrayAttributeTests : TestFixtureBase
+  {
+    [Test]
+    public void IsReferenceTest()
+    {
+      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
+      Assert.AreEqual(null, attribute._isReference);
+      Assert.AreEqual(false, attribute.IsReference);
+
+      attribute.IsReference = false;
+      Assert.AreEqual(false, attribute._isReference);
+      Assert.AreEqual(false, attribute.IsReference);
+
+      attribute.IsReference = true;
+      Assert.AreEqual(true, attribute._isReference);
+      Assert.AreEqual(true, attribute.IsReference);
+    }
+
+    [Test]
+    public void NullValueHandlingTest()
+    {
+      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
+      Assert.AreEqual(null, attribute._nullValueHandling);
+      Assert.AreEqual(NullValueHandling.Include, attribute.NullValueHandling);
+
+      attribute.NullValueHandling = NullValueHandling.Ignore;
+      Assert.AreEqual(NullValueHandling.Ignore, attribute._nullValueHandling);
+      Assert.AreEqual(NullValueHandling.Ignore, attribute.NullValueHandling);
+    }
+
+    [Test]
+    public void DefaultValueHandlingTest()
+    {
+      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
+      Assert.AreEqual(null, attribute._defaultValueHandling);
+      Assert.AreEqual(DefaultValueHandling.Include, attribute.DefaultValueHandling);
+
+      attribute.DefaultValueHandling = DefaultValueHandling.Ignore;
+      Assert.AreEqual(DefaultValueHandling.Ignore, attribute._defaultValueHandling);
+      Assert.AreEqual(DefaultValueHandling.Ignore, attribute.DefaultValueHandling);
+    }
+
+    [Test]
+    public void ReferenceLoopHandlingTest()
+    {
+      JsonPropertyAttribute attribute = new JsonPropertyAttribute();
+      Assert.AreEqual(null, attribute._defaultValueHandling);
+      Assert.AreEqual(ReferenceLoopHandling.Error, attribute.ReferenceLoopHandling);
+
+      attribute.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+      Assert.AreEqual(ReferenceLoopHandling.Ignore, attribute._referenceLoopHandling);
+      Assert.AreEqual(ReferenceLoopHandling.Ignore, attribute.ReferenceLoopHandling);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonConvertTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonConvertTest.cs
@@ -1,741 +1,741 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Text;
-#if !(NET20 || NET35 || SILVERLIGHT)
-using System.Threading.Tasks;
-#endif
-using System.Xml;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Tests.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-using Newtonsoft.Json.Utilities;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests
-{
-  [TestFixture]
-  public class JsonConvertTest : TestFixtureBase
-  {
-#if Entities
-    [Test]
-    public void EntitiesTest()
-    {
-      Purchase purchase = new Purchase() { Id = 1 };
-      purchase.PurchaseLine.Add(new PurchaseLine() { Id = 1, Purchase = purchase });
-      purchase.PurchaseLine.Add(new PurchaseLine() { Id = 2, Purchase = purchase });
-
-      StringWriter sw = new StringWriter();
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
-
-      using (JsonWriter jw = new JsonTextWriter(sw))
-      {
-        jw.Formatting = Formatting.Indented;
-
-        serializer.Serialize(jw, purchase);
-      }
-
-      string json = sw.ToString();
-
-      Assert.AreEqual(@"{
-  ""Id"": 1,
-  ""PurchaseLine"": [
-    {
-      ""Id"": 1,
-      ""PurchaseReference"": {
-        ""EntityKey"": null,
-        ""RelationshipName"": ""EntityDataModel.PurchasePurchaseLine"",
-        ""SourceRoleName"": ""PurchaseLine"",
-        ""TargetRoleName"": ""Purchase"",
-        ""RelationshipSet"": null,
-        ""IsLoaded"": false
-      },
-      ""EntityState"": 1,
-      ""EntityKey"": null
-    },
-    {
-      ""Id"": 2,
-      ""PurchaseReference"": {
-        ""EntityKey"": null,
-        ""RelationshipName"": ""EntityDataModel.PurchasePurchaseLine"",
-        ""SourceRoleName"": ""PurchaseLine"",
-        ""TargetRoleName"": ""Purchase"",
-        ""RelationshipSet"": null,
-        ""IsLoaded"": false
-      },
-      ""EntityState"": 1,
-      ""EntityKey"": null
-    }
-  ],
-  ""EntityState"": 1,
-  ""EntityKey"": null
-}", json);
-
-      Purchase newPurchase = JsonConvert.DeserializeObject<Purchase>(json);
-      Assert.AreEqual(1, newPurchase.Id);
-
-      Assert.AreEqual(2, newPurchase.PurchaseLine.Count);
-      Assert.AreEqual(1, newPurchase.PurchaseLine.ElementAt(0).Id);
-      Assert.AreEqual(2, newPurchase.PurchaseLine.ElementAt(1).Id);
-    }
-#endif
-
-    [Test]
-    public void EscapeJavaScriptString()
-    {
-      string result;
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("How now brown cow?", '"', true);
-      Assert.AreEqual(@"""How now brown cow?""", result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("How now 'brown' cow?", '"', true);
-      Assert.AreEqual(@"""How now 'brown' cow?""", result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("How now <brown> cow?", '"', true);
-      Assert.AreEqual(@"""How now <brown> cow?""", result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString(@"How 
-now brown cow?", '"', true);
-      Assert.AreEqual(@"""How \r\nnow brown cow?""", result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007", '"', true);
-      Assert.AreEqual(@"""\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007""", result);
-
-      result =
-        JavaScriptUtils.ToEscapedJavaScriptString("\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013", '"', true);
-      Assert.AreEqual(@"""\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013""", result);
-
-      result =
-        JavaScriptUtils.ToEscapedJavaScriptString(
-          "\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f ", '"', true);
-      Assert.AreEqual(@"""\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f """, result);
-
-      result =
-        JavaScriptUtils.ToEscapedJavaScriptString(
-          "!\"#$%&\u0027()*+,-./0123456789:;\u003c=\u003e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]", '"', true);
-      Assert.AreEqual(@"""!\""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]""", result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("^_`abcdefghijklmnopqrstuvwxyz{|}~", '"', true);
-      Assert.AreEqual(@"""^_`abcdefghijklmnopqrstuvwxyz{|}~""", result);
-
-      string data =
-        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&\u0027()*+,-./0123456789:;\u003c=\u003e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
-      string expected =
-        @"""\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~""";
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString(data, '"', true);
-      Assert.AreEqual(expected, result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("Fred's cat.", '\'', true);
-      Assert.AreEqual(result, @"'Fred\'s cat.'");
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString(@"""How are you gentlemen?"" said Cats.", '"', true);
-      Assert.AreEqual(result, @"""\""How are you gentlemen?\"" said Cats.""");
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString(@"""How are' you gentlemen?"" said Cats.", '"', true);
-      Assert.AreEqual(result, @"""\""How are' you gentlemen?\"" said Cats.""");
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString(@"Fred's ""cat"".", '\'', true);
-      Assert.AreEqual(result, @"'Fred\'s ""cat"".'");
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("\u001farray\u003caddress");
-      Assert.AreEqual(result, @"""\u001farray<address""");
-    }
-
-    [Test]
-    public void EscapeJavaScriptString_UnicodeLinefeeds()
-    {
-      string result;
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u0085' + "after", '"', true);
-      Assert.AreEqual(@"""before\u0085after""", result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u2028' + "after", '"', true);
-      Assert.AreEqual(@"""before\u2028after""", result);
-
-      result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u2029' + "after", '"', true);
-      Assert.AreEqual(@"""before\u2029after""", result);
-    }
-
-    [Test]
-    public void ToStringInvalid()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Unsupported type: System.Version. Use the JsonSerializer class to get the object's JSON representation.",
-      () =>
-      {
-        JsonConvert.ToString(new Version(1, 0));
-      });
-    }
-
-    [Test]
-    public void GuidToString()
-    {
-      Guid guid = new Guid("BED7F4EA-1A96-11d2-8F08-00A0C9A6186D");
-      string json = JsonConvert.ToString(guid);
-      Assert.AreEqual(@"""bed7f4ea-1a96-11d2-8f08-00a0c9a6186d""", json);
-    }
-
-    [Test]
-    public void EnumToString()
-    {
-      string json = JsonConvert.ToString(StringComparison.CurrentCultureIgnoreCase);
-      Assert.AreEqual("1", json);
-    }
-
-    [Test]
-    public void ObjectToString()
-    {
-      object value;
-
-      value = 1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = 1.1;
-      Assert.AreEqual("1.1", JsonConvert.ToString(value));
-
-      value = 1.1m;
-      Assert.AreEqual("1.1", JsonConvert.ToString(value));
-
-      value = (float)1.1;
-      Assert.AreEqual("1.1", JsonConvert.ToString(value));
-
-      value = (short)1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = (long)1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = (byte)1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = (uint)1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = (ushort)1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = (sbyte)1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = (ulong)1;
-      Assert.AreEqual("1", JsonConvert.ToString(value));
-
-      value = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
-      Assert.AreEqual(@"""1970-01-01T00:00:00Z""", JsonConvert.ToString(value));
-
-      value = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
-      Assert.AreEqual(@"""\/Date(0)\/""", JsonConvert.ToString((DateTime)value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.RoundtripKind));
-
-#if !PocketPC && !NET20
-      value = new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero);
-      Assert.AreEqual(@"""1970-01-01T00:00:00+00:00""", JsonConvert.ToString(value));
-
-      value = new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero);
-      Assert.AreEqual(@"""\/Date(0+0000)\/""", JsonConvert.ToString((DateTimeOffset)value, DateFormatHandling.MicrosoftDateFormat));
-#endif
-
-      value = null;
-      Assert.AreEqual("null", JsonConvert.ToString(value));
-
-#if !NETFX_CORE
-      value = DBNull.Value;
-      Assert.AreEqual("null", JsonConvert.ToString(value));
-#endif
-
-      value = "I am a string";
-      Assert.AreEqual(@"""I am a string""", JsonConvert.ToString(value));
-
-      value = true;
-      Assert.AreEqual("true", JsonConvert.ToString(value));
-
-      value = 'c';
-      Assert.AreEqual(@"""c""", JsonConvert.ToString(value));
-    }
-
-    [Test]
-    public void TestInvalidStrings()
-    {
-      ExceptionAssert.Throws<JsonReaderException>("Additional text encountered after finished reading JSON content: t. Line 1, position 19.",
-      () =>
-      {
-        string orig = @"this is a string ""that has quotes"" ";
-
-        string serialized = JsonConvert.SerializeObject(orig);
-
-        // *** Make string invalid by stripping \" \"
-        serialized = serialized.Replace(@"\""", "\"");
-
-        JsonConvert.DeserializeObject<string>(serialized);
-      });
-    }
-
-    [Test]
-    public void DeserializeValueObjects()
-    {
-      int i = JsonConvert.DeserializeObject<int>("1");
-      Assert.AreEqual(1, i);
-
-#if !PocketPC && !NET20
-      DateTimeOffset d = JsonConvert.DeserializeObject<DateTimeOffset>(@"""\/Date(-59011455539000+0000)\/""");
-      Assert.AreEqual(new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)), d);
-#endif
-
-      bool b = JsonConvert.DeserializeObject<bool>("true");
-      Assert.AreEqual(true, b);
-
-      object n = JsonConvert.DeserializeObject<object>("null");
-      Assert.AreEqual(null, n);
-
-      object u = JsonConvert.DeserializeObject<object>("undefined");
-      Assert.AreEqual(null, u);
-    }
-
-    [Test]
-    public void FloatToString()
-    {
-      Assert.AreEqual("1.1", JsonConvert.ToString(1.1));
-      Assert.AreEqual("1.11", JsonConvert.ToString(1.11));
-      Assert.AreEqual("1.111", JsonConvert.ToString(1.111));
-      Assert.AreEqual("1.1111", JsonConvert.ToString(1.1111));
-      Assert.AreEqual("1.11111", JsonConvert.ToString(1.11111));
-      Assert.AreEqual("1.111111", JsonConvert.ToString(1.111111));
-      Assert.AreEqual("1.0", JsonConvert.ToString(1.0));
-      Assert.AreEqual("1.0", JsonConvert.ToString(1d));
-      Assert.AreEqual("-1.0", JsonConvert.ToString(-1d)); 
-      Assert.AreEqual("1.01", JsonConvert.ToString(1.01));
-      Assert.AreEqual("1.001", JsonConvert.ToString(1.001));
-      Assert.AreEqual(JsonConvert.PositiveInfinity, JsonConvert.ToString(Double.PositiveInfinity));
-      Assert.AreEqual(JsonConvert.NegativeInfinity, JsonConvert.ToString(Double.NegativeInfinity));
-      Assert.AreEqual(JsonConvert.NaN, JsonConvert.ToString(Double.NaN));
-    }
-
-    [Test]
-    public void DecimalToString()
-    {
-      Assert.AreEqual("1.1", JsonConvert.ToString(1.1m));
-      Assert.AreEqual("1.11", JsonConvert.ToString(1.11m));
-      Assert.AreEqual("1.111", JsonConvert.ToString(1.111m));
-      Assert.AreEqual("1.1111", JsonConvert.ToString(1.1111m));
-      Assert.AreEqual("1.11111", JsonConvert.ToString(1.11111m));
-      Assert.AreEqual("1.111111", JsonConvert.ToString(1.111111m));
-      Assert.AreEqual("1.0", JsonConvert.ToString(1.0m));
-      Assert.AreEqual("-1.0", JsonConvert.ToString(-1.0m));
-      Assert.AreEqual("-1.0", JsonConvert.ToString(-1m));
-      Assert.AreEqual("1.0", JsonConvert.ToString(1m));
-      Assert.AreEqual("1.01", JsonConvert.ToString(1.01m));
-      Assert.AreEqual("1.001", JsonConvert.ToString(1.001m));
-      Assert.AreEqual("79228162514264337593543950335.0", JsonConvert.ToString(Decimal.MaxValue));
-      Assert.AreEqual("-79228162514264337593543950335.0", JsonConvert.ToString(Decimal.MinValue));
-    }
-
-    [Test]
-    public void StringEscaping()
-    {
-      string v = @"It's a good day
-""sunshine""";
-
-      string json = JsonConvert.ToString(v);
-      Assert.AreEqual(@"""It's a good day\r\n\""sunshine\""""", json);
-    }
-
-    [Test]
-    public void WriteDateTime()
-    {
-      DateTimeResult result = null;
-
-      result = TestDateTime("DateTime Max", DateTime.MaxValue);
-      Assert.AreEqual("9999-12-31T23:59:59.9999999", result.IsoDateRoundtrip);
-      Assert.AreEqual("9999-12-31T23:59:59.9999999" + GetOffset(DateTime.MaxValue, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("9999-12-31T23:59:59.9999999", result.IsoDateUnspecified);
-      Assert.AreEqual("9999-12-31T23:59:59.9999999Z", result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(253402300799999)\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(253402300799999" + GetOffset(DateTime.MaxValue, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(253402300799999)\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(253402300799999)\/", result.MsDateUtc);
-
-      DateTime year2000local = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Local);
-      string localToUtcDate = year2000local.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.FFFFFFFK");
-
-      result = TestDateTime("DateTime Local", year2000local);
-      Assert.AreEqual("2000-01-01T01:01:01" + GetOffset(year2000local, DateFormatHandling.IsoDateFormat), result.IsoDateRoundtrip);
-      Assert.AreEqual("2000-01-01T01:01:01" + GetOffset(year2000local, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateUnspecified);
-      Assert.AreEqual(localToUtcDate, result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + GetOffset(year2000local, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + GetOffset(year2000local, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + GetOffset(year2000local, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + @")\/", result.MsDateUtc);
-
-      DateTime millisecondsLocal = new DateTime(2000, 1, 1, 1, 1, 1, 999, DateTimeKind.Local);
-      localToUtcDate = millisecondsLocal.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.FFFFFFFK");
-
-      result = TestDateTime("DateTime Local with milliseconds", millisecondsLocal);
-      Assert.AreEqual("2000-01-01T01:01:01.999" + GetOffset(millisecondsLocal, DateFormatHandling.IsoDateFormat), result.IsoDateRoundtrip);
-      Assert.AreEqual("2000-01-01T01:01:01.999" + GetOffset(millisecondsLocal, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("2000-01-01T01:01:01.999", result.IsoDateUnspecified);
-      Assert.AreEqual(localToUtcDate, result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + GetOffset(millisecondsLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + GetOffset(millisecondsLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + GetOffset(millisecondsLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + @")\/", result.MsDateUtc);
-
-      DateTime ticksLocal = new DateTime(634663873826822481, DateTimeKind.Local);
-      localToUtcDate = ticksLocal.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.FFFFFFFK");
-      
-      result = TestDateTime("DateTime Local with ticks", ticksLocal);
-      Assert.AreEqual("2012-03-03T16:03:02.6822481" + GetOffset(ticksLocal, DateFormatHandling.IsoDateFormat), result.IsoDateRoundtrip);
-      Assert.AreEqual("2012-03-03T16:03:02.6822481" + GetOffset(ticksLocal, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("2012-03-03T16:03:02.6822481", result.IsoDateUnspecified);
-      Assert.AreEqual(localToUtcDate, result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + GetOffset(ticksLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + GetOffset(ticksLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + GetOffset(ticksLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + @")\/", result.MsDateUtc);
-
-      DateTime year2000Unspecified = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Unspecified);
-
-      result = TestDateTime("DateTime Unspecified", year2000Unspecified);
-      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateRoundtrip);
-      Assert.AreEqual("2000-01-01T01:01:01" + GetOffset(year2000Unspecified, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateUnspecified);
-      Assert.AreEqual("2000-01-01T01:01:01Z", result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified) + GetOffset(year2000Unspecified, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified) + GetOffset(year2000Unspecified, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified) + GetOffset(year2000Unspecified, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified.ToLocalTime()) + @")\/", result.MsDateUtc);
-
-      DateTime year2000Utc = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc);
-      string utcTolocalDate = year2000Utc.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss");
-
-      result = TestDateTime("DateTime Utc", year2000Utc);
-      Assert.AreEqual("2000-01-01T01:01:01Z", result.IsoDateRoundtrip);
-      Assert.AreEqual(utcTolocalDate + GetOffset(year2000Utc, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateUnspecified);
-      Assert.AreEqual("2000-01-01T01:01:01Z", result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(946688461000)\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(946688461000" + GetOffset(year2000Utc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(DateTime.SpecifyKind(year2000Utc, DateTimeKind.Unspecified)) + GetOffset(year2000Utc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(946688461000)\/", result.MsDateUtc);
-
-      DateTime unixEpoc = new DateTime(621355968000000000, DateTimeKind.Utc);
-      utcTolocalDate = unixEpoc.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss");
-
-      result = TestDateTime("DateTime Unix Epoc", unixEpoc);
-      Assert.AreEqual("1970-01-01T00:00:00Z", result.IsoDateRoundtrip);
-      Assert.AreEqual(utcTolocalDate + GetOffset(unixEpoc, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("1970-01-01T00:00:00", result.IsoDateUnspecified);
-      Assert.AreEqual("1970-01-01T00:00:00Z", result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(0)\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(0" + GetOffset(unixEpoc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(DateTime.SpecifyKind(unixEpoc, DateTimeKind.Unspecified)) + GetOffset(unixEpoc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(0)\/", result.MsDateUtc);
-
-      result = TestDateTime("DateTime Min", DateTime.MinValue);
-      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateRoundtrip);
-      Assert.AreEqual("0001-01-01T00:00:00" + GetOffset(DateTime.MinValue, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateUnspecified);
-      Assert.AreEqual("0001-01-01T00:00:00Z", result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(-62135596800000" + GetOffset(DateTime.MinValue, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUtc);
-
-      result = TestDateTime("DateTime Default", default(DateTime));
-      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateRoundtrip);
-      Assert.AreEqual("0001-01-01T00:00:00" + GetOffset(default(DateTime), DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
-      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateUnspecified);
-      Assert.AreEqual("0001-01-01T00:00:00Z", result.IsoDateUtc);
-      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateRoundtrip);
-      Assert.AreEqual(@"\/Date(-62135596800000" + GetOffset(default(DateTime), DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
-      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUnspecified);
-      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUtc);
-
-#if !NET20
-      result = TestDateTime("DateTimeOffset TimeSpan Zero", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero));
-      Assert.AreEqual("2000-01-01T01:01:01+00:00", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(946688461000+0000)\/", result.MsDateRoundtrip);
-
-      result = TestDateTime("DateTimeOffset TimeSpan 1 hour", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(1)));
-      Assert.AreEqual("2000-01-01T01:01:01+01:00", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(946684861000+0100)\/", result.MsDateRoundtrip);
-
-      result = TestDateTime("DateTimeOffset TimeSpan 1.5 hour", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(1.5)));
-      Assert.AreEqual("2000-01-01T01:01:01+01:30", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(946683061000+0130)\/", result.MsDateRoundtrip);
-
-      result = TestDateTime("DateTimeOffset TimeSpan 13 hour", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)));
-      Assert.AreEqual("2000-01-01T01:01:01+13:00", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(946641661000+1300)\/", result.MsDateRoundtrip);
-
-      result = TestDateTime("DateTimeOffset TimeSpan with ticks", new DateTimeOffset(634663873826822481, TimeSpan.Zero));
-      Assert.AreEqual("2012-03-03T16:03:02.6822481+00:00", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(1330790582682+0000)\/", result.MsDateRoundtrip);
-
-      result = TestDateTime("DateTimeOffset Min", DateTimeOffset.MinValue);
-      Assert.AreEqual("0001-01-01T00:00:00+00:00", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(-62135596800000+0000)\/", result.MsDateRoundtrip);
-
-      result = TestDateTime("DateTimeOffset Max", DateTimeOffset.MaxValue);
-      Assert.AreEqual("9999-12-31T23:59:59.9999999+00:00", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(253402300799999+0000)\/", result.MsDateRoundtrip);
-
-      result = TestDateTime("DateTimeOffset Default", default(DateTimeOffset));
-      Assert.AreEqual("0001-01-01T00:00:00+00:00", result.IsoDateRoundtrip);
-      Assert.AreEqual(@"\/Date(-62135596800000+0000)\/", result.MsDateRoundtrip);
-#endif
-    }
-
-    public class DateTimeResult
-    {
-      public string IsoDateRoundtrip { get; set; }
-      public string IsoDateLocal { get; set; }
-      public string IsoDateUnspecified { get; set; }
-      public string IsoDateUtc { get; set; }
-
-      public string MsDateRoundtrip { get; set; }
-      public string MsDateLocal { get; set; }
-      public string MsDateUnspecified { get; set; }
-      public string MsDateUtc { get; set; }
-    }
-
-    private DateTimeResult TestDateTime<T>(string name, T value)
-    {
-      Console.WriteLine(name);
-
-      DateTimeResult result = new DateTimeResult();
-
-      result.IsoDateRoundtrip = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.RoundtripKind);
-      if (value is DateTime)
-      {
-        result.IsoDateLocal = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.Local);
-        result.IsoDateUnspecified = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.Unspecified);
-        result.IsoDateUtc = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.Utc);
-      }
-
-      result.MsDateRoundtrip = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.RoundtripKind);
-      if (value is DateTime)
-      {
-        result.MsDateLocal = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.Local);
-        result.MsDateUnspecified = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.Unspecified);
-        result.MsDateUtc = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.Utc);
-      }
-
-      TestDateTimeFormat(value, new IsoDateTimeConverter());
-
-#if !NETFX_CORE
-      if (value is DateTime)
-      {
-        Console.WriteLine(XmlConvert.ToString((DateTime)(object)value, XmlDateTimeSerializationMode.RoundtripKind));
-      }
-      else
-      {
-        Console.WriteLine(XmlConvert.ToString((DateTimeOffset)(object)value));
-      }
-#endif
-
-#if !NET20
-      MemoryStream ms = new MemoryStream();
-      DataContractSerializer s = new DataContractSerializer(typeof(T));
-      s.WriteObject(ms, value);
-      string json = Encoding.UTF8.GetString(ms.ToArray(), 0, Convert.ToInt32(ms.Length));
-      Console.WriteLine(json);
-#endif
-
-      Console.WriteLine();
-
-      return result;
-    }
-
-    private static string TestDateTimeFormat<T>(T value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling)
-    {
-      string date = null;
-
-      if (value is DateTime)
-      {
-        date = JsonConvert.ToString((DateTime)(object)value, format, timeZoneHandling);
-      }
-      else
-      {
-#if !NET20
-        date = JsonConvert.ToString((DateTimeOffset)(object)value, format);
-#endif
-      }
-
-      Console.WriteLine(format.ToString("g") + "-" + timeZoneHandling.ToString("g") + ": " + date);
-
-      if (timeZoneHandling == DateTimeZoneHandling.RoundtripKind)
-      {
-        T parsed = JsonConvert.DeserializeObject<T>(date);
-        try
-        {
-          Assert.AreEqual(value, parsed);
-        }
-        catch (Exception ex)
-        {
-          long valueTicks = GetTicks(value);
-          long parsedTicks = GetTicks(parsed);
-
-          valueTicks = (valueTicks/10000)*10000;
-
-          Assert.AreEqual(valueTicks, parsedTicks);
-        }
-      }
-
-      return date.Trim('"');
-    }
-
-    private static void TestDateTimeFormat<T>(T value, JsonConverter converter)
-    {
-      string date = Write(value, converter);
-
-      Console.WriteLine(converter.GetType().Name + ": " + date);
-
-      T parsed = Read<T>(date, converter);
-
-      try
-      {
-        Assert.AreEqual(value, parsed);
-      }
-      catch (Exception ex)
-      {
-        // JavaScript ticks aren't as precise, recheck after rounding
-        long valueTicks = GetTicks(value);
-        long parsedTicks = GetTicks(parsed);
-
-        valueTicks = (valueTicks / 10000) * 10000;
-
-        Assert.AreEqual(valueTicks, parsedTicks);
-      }
-    }
-
-    public static long GetTicks(object value)
-    {
-      return (value is DateTime) ? ((DateTime)value).Ticks : ((DateTimeOffset)value).Ticks;
-    }
-
-    public static string Write(object value, JsonConverter converter)
-    {
-      StringWriter sw = new StringWriter();
-      JsonTextWriter writer = new JsonTextWriter(sw);
-      converter.WriteJson(writer, value, null);
-
-      writer.Flush();
-      return sw.ToString();
-    }
-
-    public static T Read<T>(string text, JsonConverter converter)
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(text));
-      reader.ReadAsString();
-
-      return (T)converter.ReadJson(reader, typeof(T), null, null);
-    }
-
-#if !(NET20 || NET35 || SILVERLIGHT)
-    [Test]
-    public void Async()
-    {
-      Task<string> task = null;
-      
-      task = JsonConvert.SerializeObjectAsync(42);
-      task.Wait();
-
-      Assert.AreEqual("42", task.Result);
-
-      task = JsonConvert.SerializeObjectAsync(new[] {1, 2, 3, 4, 5}, Formatting.Indented);
-      task.Wait();
-
-      Assert.AreEqual(@"[
-  1,
-  2,
-  3,
-  4,
-  5
-]", task.Result);
-
-      task = JsonConvert.SerializeObjectAsync(DateTime.MaxValue, Formatting.None, new JsonSerializerSettings
-        {
-          DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
-        });
-      task.Wait();
-
-      Assert.AreEqual(@"""\/Date(253402300799999)\/""", task.Result);
-
-      var taskObject = JsonConvert.DeserializeObjectAsync("[]");
-      taskObject.Wait();
-
-      CollectionAssert.AreEquivalent(new JArray(), (JArray)taskObject.Result);
-
-      Task<object> taskVersionArray = JsonConvert.DeserializeObjectAsync("['2.0']", typeof(Version[]), new JsonSerializerSettings
-        {
-          Converters = {new VersionConverter()}
-        });
-      taskVersionArray.Wait();
-
-      Version[] versionArray = (Version[])taskVersionArray.Result;
-
-      Assert.AreEqual(1, versionArray.Length);
-      Assert.AreEqual(2, versionArray[0].Major);
-
-      Task<int> taskInt = JsonConvert.DeserializeObjectAsync<int>("5");
-      taskInt.Wait();
-
-      Assert.AreEqual(5, taskInt.Result);
-
-      var taskVersion = JsonConvert.DeserializeObjectAsync<Version>("'2.0'", new JsonSerializerSettings
-        {
-          Converters = {new VersionConverter()}
-        });
-      taskVersion.Wait();
-
-      Assert.AreEqual(2, taskVersion.Result.Major);
-
-      Movie p = new Movie();
-      p.Name = "Existing,";
-
-      Task taskVoid = JsonConvert.PopulateObjectAsync("{'Name':'Appended'}", p, new JsonSerializerSettings
-      {
-        Converters = new List<JsonConverter> { new JsonSerializerTest.StringAppenderConverter() }
-      });
-
-      taskVoid.Wait();
-
-      Assert.AreEqual("Existing,Appended", p.Name);
-    }
-#endif
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Text;
+#if !(NET20 || NET35 || SILVERLIGHT)
+using System.Threading.Tasks;
+#endif
+using System.Xml;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Tests.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+using Newtonsoft.Json.Utilities;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests
+{
+  [TestFixture]
+  public class JsonConvertTest : TestFixtureBase
+  {
+#if Entities
+    [Test]
+    public void EntitiesTest()
+    {
+      Purchase purchase = new Purchase() { Id = 1 };
+      purchase.PurchaseLine.Add(new PurchaseLine() { Id = 1, Purchase = purchase });
+      purchase.PurchaseLine.Add(new PurchaseLine() { Id = 2, Purchase = purchase });
+
+      StringWriter sw = new StringWriter();
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+
+      using (JsonWriter jw = new JsonTextWriter(sw))
+      {
+        jw.Formatting = Formatting.Indented;
+
+        serializer.Serialize(jw, purchase);
+      }
+
+      string json = sw.ToString();
+
+      Assert.AreEqual(@"{
+  ""Id"": 1,
+  ""PurchaseLine"": [
+    {
+      ""Id"": 1,
+      ""PurchaseReference"": {
+        ""EntityKey"": null,
+        ""RelationshipName"": ""EntityDataModel.PurchasePurchaseLine"",
+        ""SourceRoleName"": ""PurchaseLine"",
+        ""TargetRoleName"": ""Purchase"",
+        ""RelationshipSet"": null,
+        ""IsLoaded"": false
+      },
+      ""EntityState"": 1,
+      ""EntityKey"": null
+    },
+    {
+      ""Id"": 2,
+      ""PurchaseReference"": {
+        ""EntityKey"": null,
+        ""RelationshipName"": ""EntityDataModel.PurchasePurchaseLine"",
+        ""SourceRoleName"": ""PurchaseLine"",
+        ""TargetRoleName"": ""Purchase"",
+        ""RelationshipSet"": null,
+        ""IsLoaded"": false
+      },
+      ""EntityState"": 1,
+      ""EntityKey"": null
+    }
+  ],
+  ""EntityState"": 1,
+  ""EntityKey"": null
+}", json);
+
+      Purchase newPurchase = JsonConvert.DeserializeObject<Purchase>(json);
+      Assert.AreEqual(1, newPurchase.Id);
+
+      Assert.AreEqual(2, newPurchase.PurchaseLine.Count);
+      Assert.AreEqual(1, newPurchase.PurchaseLine.ElementAt(0).Id);
+      Assert.AreEqual(2, newPurchase.PurchaseLine.ElementAt(1).Id);
+    }
+#endif
+
+    [Test]
+    public void EscapeJavaScriptString()
+    {
+      string result;
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("How now brown cow?", '"', true);
+      Assert.AreEqual(@"""How now brown cow?""", result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("How now 'brown' cow?", '"', true);
+      Assert.AreEqual(@"""How now 'brown' cow?""", result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("How now <brown> cow?", '"', true);
+      Assert.AreEqual(@"""How now <brown> cow?""", result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString(@"How 
+now brown cow?", '"', true);
+      Assert.AreEqual(@"""How \r\nnow brown cow?""", result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007", '"', true);
+      Assert.AreEqual(@"""\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007""", result);
+
+      result =
+        JavaScriptUtils.ToEscapedJavaScriptString("\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013", '"', true);
+      Assert.AreEqual(@"""\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013""", result);
+
+      result =
+        JavaScriptUtils.ToEscapedJavaScriptString(
+          "\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f ", '"', true);
+      Assert.AreEqual(@"""\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f """, result);
+
+      result =
+        JavaScriptUtils.ToEscapedJavaScriptString(
+          "!\"#$%&\u0027()*+,-./0123456789:;\u003c=\u003e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]", '"', true);
+      Assert.AreEqual(@"""!\""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]""", result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("^_`abcdefghijklmnopqrstuvwxyz{|}~", '"', true);
+      Assert.AreEqual(@"""^_`abcdefghijklmnopqrstuvwxyz{|}~""", result);
+
+      string data =
+        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&\u0027()*+,-./0123456789:;\u003c=\u003e?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
+      string expected =
+        @"""\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~""";
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString(data, '"', true);
+      Assert.AreEqual(expected, result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("Fred's cat.", '\'', true);
+      Assert.AreEqual(result, @"'Fred\'s cat.'");
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString(@"""How are you gentlemen?"" said Cats.", '"', true);
+      Assert.AreEqual(result, @"""\""How are you gentlemen?\"" said Cats.""");
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString(@"""How are' you gentlemen?"" said Cats.", '"', true);
+      Assert.AreEqual(result, @"""\""How are' you gentlemen?\"" said Cats.""");
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString(@"Fred's ""cat"".", '\'', true);
+      Assert.AreEqual(result, @"'Fred\'s ""cat"".'");
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("\u001farray\u003caddress");
+      Assert.AreEqual(result, @"""\u001farray<address""");
+    }
+
+    [Test]
+    public void EscapeJavaScriptString_UnicodeLinefeeds()
+    {
+      string result;
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u0085' + "after", '"', true);
+      Assert.AreEqual(@"""before\u0085after""", result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u2028' + "after", '"', true);
+      Assert.AreEqual(@"""before\u2028after""", result);
+
+      result = JavaScriptUtils.ToEscapedJavaScriptString("before" + '\u2029' + "after", '"', true);
+      Assert.AreEqual(@"""before\u2029after""", result);
+    }
+
+    [Test]
+    public void ToStringInvalid()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Unsupported type: System.Version. Use the JsonSerializer class to get the object's JSON representation.",
+      () =>
+      {
+        JsonConvert.ToString(new Version(1, 0));
+      });
+    }
+
+    [Test]
+    public void GuidToString()
+    {
+      Guid guid = new Guid("BED7F4EA-1A96-11d2-8F08-00A0C9A6186D");
+      string json = JsonConvert.ToString(guid);
+      Assert.AreEqual(@"""bed7f4ea-1a96-11d2-8f08-00a0c9a6186d""", json);
+    }
+
+    [Test]
+    public void EnumToString()
+    {
+      string json = JsonConvert.ToString(StringComparison.CurrentCultureIgnoreCase);
+      Assert.AreEqual("1", json);
+    }
+
+    [Test]
+    public void ObjectToString()
+    {
+      object value;
+
+      value = 1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = 1.1;
+      Assert.AreEqual("1.1", JsonConvert.ToString(value));
+
+      value = 1.1m;
+      Assert.AreEqual("1.1", JsonConvert.ToString(value));
+
+      value = (float)1.1;
+      Assert.AreEqual("1.1", JsonConvert.ToString(value));
+
+      value = (short)1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = (long)1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = (byte)1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = (uint)1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = (ushort)1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = (sbyte)1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = (ulong)1;
+      Assert.AreEqual("1", JsonConvert.ToString(value));
+
+      value = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
+      Assert.AreEqual(@"""1970-01-01T00:00:00Z""", JsonConvert.ToString(value));
+
+      value = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
+      Assert.AreEqual(@"""\/Date(0)\/""", JsonConvert.ToString((DateTime)value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.RoundtripKind));
+
+#if !PocketPC && !NET20
+      value = new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero);
+      Assert.AreEqual(@"""1970-01-01T00:00:00+00:00""", JsonConvert.ToString(value));
+
+      value = new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero);
+      Assert.AreEqual(@"""\/Date(0+0000)\/""", JsonConvert.ToString((DateTimeOffset)value, DateFormatHandling.MicrosoftDateFormat));
+#endif
+
+      value = null;
+      Assert.AreEqual("null", JsonConvert.ToString(value));
+
+#if !NETFX_CORE
+      value = DBNull.Value;
+      Assert.AreEqual("null", JsonConvert.ToString(value));
+#endif
+
+      value = "I am a string";
+      Assert.AreEqual(@"""I am a string""", JsonConvert.ToString(value));
+
+      value = true;
+      Assert.AreEqual("true", JsonConvert.ToString(value));
+
+      value = 'c';
+      Assert.AreEqual(@"""c""", JsonConvert.ToString(value));
+    }
+
+    [Test]
+    public void TestInvalidStrings()
+    {
+      ExceptionAssert.Throws<JsonReaderException>("Additional text encountered after finished reading JSON content: t. Line 1, position 19.",
+      () =>
+      {
+        string orig = @"this is a string ""that has quotes"" ";
+
+        string serialized = JsonConvert.SerializeObject(orig);
+
+        // *** Make string invalid by stripping \" \"
+        serialized = serialized.Replace(@"\""", "\"");
+
+        JsonConvert.DeserializeObject<string>(serialized);
+      });
+    }
+
+    [Test]
+    public void DeserializeValueObjects()
+    {
+      int i = JsonConvert.DeserializeObject<int>("1");
+      Assert.AreEqual(1, i);
+
+#if !PocketPC && !NET20
+      DateTimeOffset d = JsonConvert.DeserializeObject<DateTimeOffset>(@"""\/Date(-59011455539000+0000)\/""");
+      Assert.AreEqual(new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)), d);
+#endif
+
+      bool b = JsonConvert.DeserializeObject<bool>("true");
+      Assert.AreEqual(true, b);
+
+      object n = JsonConvert.DeserializeObject<object>("null");
+      Assert.AreEqual(null, n);
+
+      object u = JsonConvert.DeserializeObject<object>("undefined");
+      Assert.AreEqual(null, u);
+    }
+
+    [Test]
+    public void FloatToString()
+    {
+      Assert.AreEqual("1.1", JsonConvert.ToString(1.1));
+      Assert.AreEqual("1.11", JsonConvert.ToString(1.11));
+      Assert.AreEqual("1.111", JsonConvert.ToString(1.111));
+      Assert.AreEqual("1.1111", JsonConvert.ToString(1.1111));
+      Assert.AreEqual("1.11111", JsonConvert.ToString(1.11111));
+      Assert.AreEqual("1.111111", JsonConvert.ToString(1.111111));
+      Assert.AreEqual("1.0", JsonConvert.ToString(1.0));
+      Assert.AreEqual("1.0", JsonConvert.ToString(1d));
+      Assert.AreEqual("-1.0", JsonConvert.ToString(-1d)); 
+      Assert.AreEqual("1.01", JsonConvert.ToString(1.01));
+      Assert.AreEqual("1.001", JsonConvert.ToString(1.001));
+      Assert.AreEqual(JsonConvert.PositiveInfinity, JsonConvert.ToString(Double.PositiveInfinity));
+      Assert.AreEqual(JsonConvert.NegativeInfinity, JsonConvert.ToString(Double.NegativeInfinity));
+      Assert.AreEqual(JsonConvert.NaN, JsonConvert.ToString(Double.NaN));
+    }
+
+    [Test]
+    public void DecimalToString()
+    {
+      Assert.AreEqual("1.1", JsonConvert.ToString(1.1m));
+      Assert.AreEqual("1.11", JsonConvert.ToString(1.11m));
+      Assert.AreEqual("1.111", JsonConvert.ToString(1.111m));
+      Assert.AreEqual("1.1111", JsonConvert.ToString(1.1111m));
+      Assert.AreEqual("1.11111", JsonConvert.ToString(1.11111m));
+      Assert.AreEqual("1.111111", JsonConvert.ToString(1.111111m));
+      Assert.AreEqual("1.0", JsonConvert.ToString(1.0m));
+      Assert.AreEqual("-1.0", JsonConvert.ToString(-1.0m));
+      Assert.AreEqual("-1.0", JsonConvert.ToString(-1m));
+      Assert.AreEqual("1.0", JsonConvert.ToString(1m));
+      Assert.AreEqual("1.01", JsonConvert.ToString(1.01m));
+      Assert.AreEqual("1.001", JsonConvert.ToString(1.001m));
+      Assert.AreEqual("79228162514264337593543950335.0", JsonConvert.ToString(Decimal.MaxValue));
+      Assert.AreEqual("-79228162514264337593543950335.0", JsonConvert.ToString(Decimal.MinValue));
+    }
+
+    [Test]
+    public void StringEscaping()
+    {
+      string v = @"It's a good day
+""sunshine""";
+
+      string json = JsonConvert.ToString(v);
+      Assert.AreEqual(@"""It's a good day\r\n\""sunshine\""""", json);
+    }
+
+    [Test]
+    public void WriteDateTime()
+    {
+      DateTimeResult result = null;
+
+      result = TestDateTime("DateTime Max", DateTime.MaxValue);
+      Assert.AreEqual("9999-12-31T23:59:59.9999999", result.IsoDateRoundtrip);
+      Assert.AreEqual("9999-12-31T23:59:59.9999999" + GetOffset(DateTime.MaxValue, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("9999-12-31T23:59:59.9999999", result.IsoDateUnspecified);
+      Assert.AreEqual("9999-12-31T23:59:59.9999999Z", result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(253402300799999)\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(253402300799999" + GetOffset(DateTime.MaxValue, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(253402300799999)\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(253402300799999)\/", result.MsDateUtc);
+
+      DateTime year2000local = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Local);
+      string localToUtcDate = year2000local.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.FFFFFFFK");
+
+      result = TestDateTime("DateTime Local", year2000local);
+      Assert.AreEqual("2000-01-01T01:01:01" + GetOffset(year2000local, DateFormatHandling.IsoDateFormat), result.IsoDateRoundtrip);
+      Assert.AreEqual("2000-01-01T01:01:01" + GetOffset(year2000local, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateUnspecified);
+      Assert.AreEqual(localToUtcDate, result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + GetOffset(year2000local, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + GetOffset(year2000local, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + GetOffset(year2000local, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000local) + @")\/", result.MsDateUtc);
+
+      DateTime millisecondsLocal = new DateTime(2000, 1, 1, 1, 1, 1, 999, DateTimeKind.Local);
+      localToUtcDate = millisecondsLocal.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.FFFFFFFK");
+
+      result = TestDateTime("DateTime Local with milliseconds", millisecondsLocal);
+      Assert.AreEqual("2000-01-01T01:01:01.999" + GetOffset(millisecondsLocal, DateFormatHandling.IsoDateFormat), result.IsoDateRoundtrip);
+      Assert.AreEqual("2000-01-01T01:01:01.999" + GetOffset(millisecondsLocal, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("2000-01-01T01:01:01.999", result.IsoDateUnspecified);
+      Assert.AreEqual(localToUtcDate, result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + GetOffset(millisecondsLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + GetOffset(millisecondsLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + GetOffset(millisecondsLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(millisecondsLocal) + @")\/", result.MsDateUtc);
+
+      DateTime ticksLocal = new DateTime(634663873826822481, DateTimeKind.Local);
+      localToUtcDate = ticksLocal.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.FFFFFFFK");
+      
+      result = TestDateTime("DateTime Local with ticks", ticksLocal);
+      Assert.AreEqual("2012-03-03T16:03:02.6822481" + GetOffset(ticksLocal, DateFormatHandling.IsoDateFormat), result.IsoDateRoundtrip);
+      Assert.AreEqual("2012-03-03T16:03:02.6822481" + GetOffset(ticksLocal, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("2012-03-03T16:03:02.6822481", result.IsoDateUnspecified);
+      Assert.AreEqual(localToUtcDate, result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + GetOffset(ticksLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + GetOffset(ticksLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + GetOffset(ticksLocal, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(ticksLocal) + @")\/", result.MsDateUtc);
+
+      DateTime year2000Unspecified = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Unspecified);
+
+      result = TestDateTime("DateTime Unspecified", year2000Unspecified);
+      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateRoundtrip);
+      Assert.AreEqual("2000-01-01T01:01:01" + GetOffset(year2000Unspecified, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateUnspecified);
+      Assert.AreEqual("2000-01-01T01:01:01Z", result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified) + GetOffset(year2000Unspecified, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified) + GetOffset(year2000Unspecified, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified) + GetOffset(year2000Unspecified, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(year2000Unspecified.ToLocalTime()) + @")\/", result.MsDateUtc);
+
+      DateTime year2000Utc = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc);
+      string utcTolocalDate = year2000Utc.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss");
+
+      result = TestDateTime("DateTime Utc", year2000Utc);
+      Assert.AreEqual("2000-01-01T01:01:01Z", result.IsoDateRoundtrip);
+      Assert.AreEqual(utcTolocalDate + GetOffset(year2000Utc, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("2000-01-01T01:01:01", result.IsoDateUnspecified);
+      Assert.AreEqual("2000-01-01T01:01:01Z", result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(946688461000)\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(946688461000" + GetOffset(year2000Utc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(DateTime.SpecifyKind(year2000Utc, DateTimeKind.Unspecified)) + GetOffset(year2000Utc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(946688461000)\/", result.MsDateUtc);
+
+      DateTime unixEpoc = new DateTime(621355968000000000, DateTimeKind.Utc);
+      utcTolocalDate = unixEpoc.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss");
+
+      result = TestDateTime("DateTime Unix Epoc", unixEpoc);
+      Assert.AreEqual("1970-01-01T00:00:00Z", result.IsoDateRoundtrip);
+      Assert.AreEqual(utcTolocalDate + GetOffset(unixEpoc, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("1970-01-01T00:00:00", result.IsoDateUnspecified);
+      Assert.AreEqual("1970-01-01T00:00:00Z", result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(0)\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(0" + GetOffset(unixEpoc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(" + JsonConvert.ConvertDateTimeToJavaScriptTicks(DateTime.SpecifyKind(unixEpoc, DateTimeKind.Unspecified)) + GetOffset(unixEpoc, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(0)\/", result.MsDateUtc);
+
+      result = TestDateTime("DateTime Min", DateTime.MinValue);
+      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateRoundtrip);
+      Assert.AreEqual("0001-01-01T00:00:00" + GetOffset(DateTime.MinValue, DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateUnspecified);
+      Assert.AreEqual("0001-01-01T00:00:00Z", result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(-62135596800000" + GetOffset(DateTime.MinValue, DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUtc);
+
+      result = TestDateTime("DateTime Default", default(DateTime));
+      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateRoundtrip);
+      Assert.AreEqual("0001-01-01T00:00:00" + GetOffset(default(DateTime), DateFormatHandling.IsoDateFormat), result.IsoDateLocal);
+      Assert.AreEqual("0001-01-01T00:00:00", result.IsoDateUnspecified);
+      Assert.AreEqual("0001-01-01T00:00:00Z", result.IsoDateUtc);
+      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateRoundtrip);
+      Assert.AreEqual(@"\/Date(-62135596800000" + GetOffset(default(DateTime), DateFormatHandling.MicrosoftDateFormat) + @")\/", result.MsDateLocal);
+      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUnspecified);
+      Assert.AreEqual(@"\/Date(-62135596800000)\/", result.MsDateUtc);
+
+#if !NET20
+      result = TestDateTime("DateTimeOffset TimeSpan Zero", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero));
+      Assert.AreEqual("2000-01-01T01:01:01+00:00", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(946688461000+0000)\/", result.MsDateRoundtrip);
+
+      result = TestDateTime("DateTimeOffset TimeSpan 1 hour", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(1)));
+      Assert.AreEqual("2000-01-01T01:01:01+01:00", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(946684861000+0100)\/", result.MsDateRoundtrip);
+
+      result = TestDateTime("DateTimeOffset TimeSpan 1.5 hour", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(1.5)));
+      Assert.AreEqual("2000-01-01T01:01:01+01:30", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(946683061000+0130)\/", result.MsDateRoundtrip);
+
+      result = TestDateTime("DateTimeOffset TimeSpan 13 hour", new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)));
+      Assert.AreEqual("2000-01-01T01:01:01+13:00", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(946641661000+1300)\/", result.MsDateRoundtrip);
+
+      result = TestDateTime("DateTimeOffset TimeSpan with ticks", new DateTimeOffset(634663873826822481, TimeSpan.Zero));
+      Assert.AreEqual("2012-03-03T16:03:02.6822481+00:00", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(1330790582682+0000)\/", result.MsDateRoundtrip);
+
+      result = TestDateTime("DateTimeOffset Min", DateTimeOffset.MinValue);
+      Assert.AreEqual("0001-01-01T00:00:00+00:00", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(-62135596800000+0000)\/", result.MsDateRoundtrip);
+
+      result = TestDateTime("DateTimeOffset Max", DateTimeOffset.MaxValue);
+      Assert.AreEqual("9999-12-31T23:59:59.9999999+00:00", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(253402300799999+0000)\/", result.MsDateRoundtrip);
+
+      result = TestDateTime("DateTimeOffset Default", default(DateTimeOffset));
+      Assert.AreEqual("0001-01-01T00:00:00+00:00", result.IsoDateRoundtrip);
+      Assert.AreEqual(@"\/Date(-62135596800000+0000)\/", result.MsDateRoundtrip);
+#endif
+    }
+
+    public class DateTimeResult
+    {
+      public string IsoDateRoundtrip { get; set; }
+      public string IsoDateLocal { get; set; }
+      public string IsoDateUnspecified { get; set; }
+      public string IsoDateUtc { get; set; }
+
+      public string MsDateRoundtrip { get; set; }
+      public string MsDateLocal { get; set; }
+      public string MsDateUnspecified { get; set; }
+      public string MsDateUtc { get; set; }
+    }
+
+    private DateTimeResult TestDateTime<T>(string name, T value)
+    {
+      Console.WriteLine(name);
+
+      DateTimeResult result = new DateTimeResult();
+
+      result.IsoDateRoundtrip = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.RoundtripKind);
+      if (value is DateTime)
+      {
+        result.IsoDateLocal = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.Local);
+        result.IsoDateUnspecified = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.Unspecified);
+        result.IsoDateUtc = TestDateTimeFormat(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.Utc);
+      }
+
+      result.MsDateRoundtrip = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.RoundtripKind);
+      if (value is DateTime)
+      {
+        result.MsDateLocal = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.Local);
+        result.MsDateUnspecified = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.Unspecified);
+        result.MsDateUtc = TestDateTimeFormat(value, DateFormatHandling.MicrosoftDateFormat, DateTimeZoneHandling.Utc);
+      }
+
+      TestDateTimeFormat(value, new IsoDateTimeConverter());
+
+#if !NETFX_CORE
+      if (value is DateTime)
+      {
+        Console.WriteLine(XmlConvert.ToString((DateTime)(object)value, XmlDateTimeSerializationMode.RoundtripKind));
+      }
+      else
+      {
+        Console.WriteLine(XmlConvert.ToString((DateTimeOffset)(object)value));
+      }
+#endif
+
+#if !NET20
+      MemoryStream ms = new MemoryStream();
+      DataContractSerializer s = new DataContractSerializer(typeof(T));
+      s.WriteObject(ms, value);
+      string json = Encoding.UTF8.GetString(ms.ToArray(), 0, Convert.ToInt32(ms.Length));
+      Console.WriteLine(json);
+#endif
+
+      Console.WriteLine();
+
+      return result;
+    }
+
+    private static string TestDateTimeFormat<T>(T value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling)
+    {
+      string date = null;
+
+      if (value is DateTime)
+      {
+        date = JsonConvert.ToString((DateTime)(object)value, format, timeZoneHandling);
+      }
+      else
+      {
+#if !NET20
+        date = JsonConvert.ToString((DateTimeOffset)(object)value, format);
+#endif
+      }
+
+      Console.WriteLine(format.ToString("g") + "-" + timeZoneHandling.ToString("g") + ": " + date);
+
+      if (timeZoneHandling == DateTimeZoneHandling.RoundtripKind)
+      {
+        T parsed = JsonConvert.DeserializeObject<T>(date);
+        try
+        {
+          Assert.AreEqual(value, parsed);
+        }
+        catch (Exception ex)
+        {
+          long valueTicks = GetTicks(value);
+          long parsedTicks = GetTicks(parsed);
+
+          valueTicks = (valueTicks/10000)*10000;
+
+          Assert.AreEqual(valueTicks, parsedTicks);
+        }
+      }
+
+      return date.Trim('"');
+    }
+
+    private static void TestDateTimeFormat<T>(T value, JsonConverter converter)
+    {
+      string date = Write(value, converter);
+
+      Console.WriteLine(converter.GetType().Name + ": " + date);
+
+      T parsed = Read<T>(date, converter);
+
+      try
+      {
+        Assert.AreEqual(value, parsed);
+      }
+      catch (Exception ex)
+      {
+        // JavaScript ticks aren't as precise, recheck after rounding
+        long valueTicks = GetTicks(value);
+        long parsedTicks = GetTicks(parsed);
+
+        valueTicks = (valueTicks / 10000) * 10000;
+
+        Assert.AreEqual(valueTicks, parsedTicks);
+      }
+    }
+
+    public static long GetTicks(object value)
+    {
+      return (value is DateTime) ? ((DateTime)value).Ticks : ((DateTimeOffset)value).Ticks;
+    }
+
+    public static string Write(object value, JsonConverter converter)
+    {
+      StringWriter sw = new StringWriter();
+      JsonTextWriter writer = new JsonTextWriter(sw);
+      converter.WriteJson(writer, value, null);
+
+      writer.Flush();
+      return sw.ToString();
+    }
+
+    public static T Read<T>(string text, JsonConverter converter)
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(text));
+      reader.ReadAsString();
+
+      return (T)converter.ReadJson(reader, typeof(T), null, null);
+    }
+
+#if !(NET20 || NET35 || SILVERLIGHT)
+    [Test]
+    public void Async()
+    {
+      Task<string> task = null;
+      
+      task = JsonConvert.SerializeObjectAsync(42);
+      task.Wait();
+
+      Assert.AreEqual("42", task.Result);
+
+      task = JsonConvert.SerializeObjectAsync(new[] {1, 2, 3, 4, 5}, Formatting.Indented);
+      task.Wait();
+
+      Assert.AreEqual(@"[
+  1,
+  2,
+  3,
+  4,
+  5
+]", task.Result);
+
+      task = JsonConvert.SerializeObjectAsync(DateTime.MaxValue, Formatting.None, new JsonSerializerSettings
+        {
+          DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
+        });
+      task.Wait();
+
+      Assert.AreEqual(@"""\/Date(253402300799999)\/""", task.Result);
+
+      var taskObject = JsonConvert.DeserializeObjectAsync("[]");
+      taskObject.Wait();
+
+      CollectionAssert.AreEquivalent(new JArray(), (JArray)taskObject.Result);
+
+      Task<object> taskVersionArray = JsonConvert.DeserializeObjectAsync("['2.0']", typeof(Version[]), new JsonSerializerSettings
+        {
+          Converters = {new VersionConverter()}
+        });
+      taskVersionArray.Wait();
+
+      Version[] versionArray = (Version[])taskVersionArray.Result;
+
+      Assert.AreEqual(1, versionArray.Length);
+      Assert.AreEqual(2, versionArray[0].Major);
+
+      Task<int> taskInt = JsonConvert.DeserializeObjectAsync<int>("5");
+      taskInt.Wait();
+
+      Assert.AreEqual(5, taskInt.Result);
+
+      var taskVersion = JsonConvert.DeserializeObjectAsync<Version>("'2.0'", new JsonSerializerSettings
+        {
+          Converters = {new VersionConverter()}
+        });
+      taskVersion.Wait();
+
+      Assert.AreEqual(2, taskVersion.Result.Major);
+
+      Movie p = new Movie();
+      p.Name = "Existing,";
+
+      Task taskVoid = JsonConvert.PopulateObjectAsync("{'Name':'Appended'}", p, new JsonSerializerSettings
+      {
+        Converters = new List<JsonConverter> { new JsonSerializerTest.StringAppenderConverter() }
+      });
+
+      taskVoid.Wait();
+
+      Assert.AreEqual("Existing,Appended", p.Name);
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs
@@ -1,2198 +1,2198 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json;
-using System.IO;
-using System.Xml;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Tests
-{
-  [TestFixture]
-  public class JsonTextReaderTest : TestFixtureBase
-  {
-    [Test]
-    public void CloseInput()
-    {
-      MemoryStream ms = new MemoryStream();
-      JsonTextReader reader = new JsonTextReader(new StreamReader(ms));
-
-      Assert.IsTrue(ms.CanRead);
-      reader.Close();
-      Assert.IsFalse(ms.CanRead);
-
-      ms = new MemoryStream();
-      reader = new JsonTextReader(new StreamReader(ms)) { CloseInput = false };
-
-      Assert.IsTrue(ms.CanRead);
-      reader.Close();
-      Assert.IsTrue(ms.CanRead);
-    }
-    
-    [Test]
-    public void YahooFinance()
-    {
-      string input = @"{
-""matches"" : [
-{""t"":""C"", ""n"":""Citigroup Inc."", ""e"":""NYSE"", ""id"":""662713""}
-,{""t"":""CHL"", ""n"":""China Mobile Ltd. (ADR)"", ""e"":""NYSE"", ""id"":""660998""}
-,{""t"":""PTR"", ""n"":""PetroChina Company Limited (ADR)"", ""e"":""NYSE"", ""id"":""664536""}
-,{""t"":""RIO"", ""n"":""Companhia Vale do Rio Doce (ADR)"", ""e"":""NYSE"", ""id"":""671472""}
-,{""t"":""RIOPR"", ""n"":""Companhia Vale do Rio Doce (ADR)"", ""e"":""NYSE"", ""id"":""3512643""}
-,{""t"":""CSCO"", ""n"":""Cisco Systems, Inc."", ""e"":""NASDAQ"", ""id"":""99624""}
-,{""t"":""CVX"", ""n"":""Chevron Corporation"", ""e"":""NYSE"", ""id"":""667226""}
-,{""t"":""TM"", ""n"":""Toyota Motor Corporation (ADR)"", ""e"":""NYSE"", ""id"":""655880""}
-,{""t"":""JPM"", ""n"":""JPMorgan Chase \\x26 Co."", ""e"":""NYSE"", ""id"":""665639""}
-,{""t"":""COP"", ""n"":""ConocoPhillips"", ""e"":""NYSE"", ""id"":""1691168""}
-,{""t"":""LFC"", ""n"":""China Life Insurance Company Ltd. (ADR)"", ""e"":""NYSE"", ""id"":""688679""}
-,{""t"":""NOK"", ""n"":""Nokia Corporation (ADR)"", ""e"":""NYSE"", ""id"":""657729""}
-,{""t"":""KO"", ""n"":""The Coca-Cola Company"", ""e"":""NYSE"", ""id"":""6550""}
-,{""t"":""VZ"", ""n"":""Verizon Communications Inc."", ""e"":""NYSE"", ""id"":""664887""}
-,{""t"":""AMX"", ""n"":""America Movil S.A.B de C.V. (ADR)"", ""e"":""NYSE"", ""id"":""665834""}],
-""all"" : false
-}
-";
-
-      using (JsonReader jsonReader = new JsonTextReader(new StringReader(input)))
-      {
-        while (jsonReader.Read())
-        {
-          Console.WriteLine(jsonReader.Value);
-        }
-      }
-    }
-
-    [Test]
-    public void ReadConstructor()
-    {
-      string json = @"{""DefaultConverter"":new Date(0, ""hi""),""MemberConverter"":""1970-01-01T00:00:00Z""}";
-
-      JsonReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.IsTrue(reader.Read());
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
-      Assert.AreEqual("Date", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(0L, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual("hi", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual("MemberConverter", reader.Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Additional text encountered after finished reading JSON content: ,. Line 5, position 2."
-#endif
-      )]
-    public void ParseAdditionalContent_Comma()
-    {
-      string json = @"[
-""Small"",
-""Medium"",
-""Large""
-],";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      while (reader.Read())
-      {
-      }
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Additional text encountered after finished reading JSON content: c. Line 5, position 2."
-#endif
-      )]
-    public void ParseAdditionalContent_Text()
-    {
-      string json = @"[
-""Small"",
-""Medium"",
-""Large""
-]content";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[2]);
-
-      reader.Read();
-      Assert.AreEqual(1, reader.LineNumber);
-
-      reader.Read();
-      Assert.AreEqual(2, reader.LineNumber);
-
-      reader.Read();
-      Assert.AreEqual(3, reader.LineNumber);
-
-      reader.Read();
-      Assert.AreEqual(4, reader.LineNumber);
-
-      reader.Read();
-      Assert.AreEqual(5, reader.LineNumber);
-
-      reader.Read();
-    }
-
-    [Test]
-    public void ParseAdditionalContent_Whitespace()
-    {
-      string json = @"[
-""Small"",
-""Medium"",
-""Large""
-]   
-
-";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      while (reader.Read())
-      {
-      }
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Additional text encountered after finished reading JSON content: a. Line 1, position 5."
-#endif
-      )]
-    public void ParseAdditionalContent_WhitespaceThenText()
-    {
-      string json = @"'hi' a";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      while (reader.Read())
-      {
-      }
-    }
-
-    [Test]
-    public void ReadingIndented()
-    {
-      string input = @"{
-  CPU: 'Intel',
-  Drives: [
-    'DVD read/writer',
-    ""500 gigabyte hard drive""
-  ]
-}";
-
-      StringReader sr = new StringReader(input);
-
-      using (JsonTextReader jsonReader = new JsonTextReader(sr))
-      {
-        jsonReader.SetCharBuffer(new char[5]);
-
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.None);
-        Assert.AreEqual(0, jsonReader.LineNumber);
-        Assert.AreEqual(0, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartObject);
-        Assert.AreEqual(1, jsonReader.LineNumber);
-        Assert.AreEqual(1, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(jsonReader.Value, "CPU");
-        Assert.AreEqual(2, jsonReader.LineNumber);
-        Assert.AreEqual(7, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.String, jsonReader.TokenType);
-        Assert.AreEqual("Intel", jsonReader.Value);
-        Assert.AreEqual(2, jsonReader.LineNumber);
-        Assert.AreEqual(15, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(jsonReader.Value, "Drives");
-        Assert.AreEqual(3, jsonReader.LineNumber);
-        Assert.AreEqual(10, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
-        Assert.AreEqual(3, jsonReader.LineNumber);
-        Assert.AreEqual(12, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
-        Assert.AreEqual(jsonReader.Value, "DVD read/writer");
-        Assert.AreEqual(jsonReader.QuoteChar, '\'');
-        Assert.AreEqual(4, jsonReader.LineNumber);
-        Assert.AreEqual(22, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
-        Assert.AreEqual(jsonReader.Value, "500 gigabyte hard drive");
-        Assert.AreEqual(jsonReader.QuoteChar, '"');
-        Assert.AreEqual(5, jsonReader.LineNumber);
-        Assert.AreEqual(30, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
-        Assert.AreEqual(6, jsonReader.LineNumber);
-        Assert.AreEqual(4, jsonReader.LinePosition);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndObject);
-        Assert.AreEqual(7, jsonReader.LineNumber);
-        Assert.AreEqual(2, jsonReader.LinePosition);
-
-        Assert.IsFalse(jsonReader.Read());
-      }
-    }
-
-    [Test]
-    public void Depth()
-    {
-      string input = @"{
-  value:'Purple',
-  array:[1,2,new Date(1)],
-  subobject:{prop:1,proparray:[1]}
-}";
-
-      StringReader sr = new StringReader(input);
-
-      using (JsonReader reader = new JsonTextReader(sr))
-      {
-        Assert.AreEqual(0, reader.Depth);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.StartObject);
-        Assert.AreEqual(0, reader.Depth);
-        Assert.AreEqual("", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("value", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.String);
-        Assert.AreEqual(reader.Value, @"Purple");
-        Assert.AreEqual(reader.QuoteChar, '\'');
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("value", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("array", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.StartArray);
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("array", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
-        Assert.AreEqual(1L, reader.Value);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("array[0]", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
-        Assert.AreEqual(2L, reader.Value);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("array[1]", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.StartConstructor);
-        Assert.AreEqual("Date", reader.Value);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("array[2]", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
-        Assert.AreEqual(1L, reader.Value);
-        Assert.AreEqual(3, reader.Depth);
-        Assert.AreEqual("array[2][0]", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.EndConstructor);
-        Assert.AreEqual(null, reader.Value);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("array[2]", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.EndArray);
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("array", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("subobject", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.StartObject);
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("subobject", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("subobject.prop", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("subobject.prop", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("subobject.proparray", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.StartArray);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("subobject.proparray", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
-        Assert.AreEqual(3, reader.Depth);
-        Assert.AreEqual("subobject.proparray[0]", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.EndArray);
-        Assert.AreEqual(2, reader.Depth);
-        Assert.AreEqual("subobject.proparray", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.EndObject);
-        Assert.AreEqual(1, reader.Depth);
-        Assert.AreEqual("subobject", reader.Path);
-
-        reader.Read();
-        Assert.AreEqual(reader.TokenType, JsonToken.EndObject);
-        Assert.AreEqual(0, reader.Depth);
-        Assert.AreEqual("", reader.Path);
-      }
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentNullException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Value cannot be null.
-Parameter name: reader"
-#endif
-      )]
-    public void NullTextReader()
-    {
-      new JsonTextReader(null);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 3."
-#endif
-      )]
-    public void UnexpectedEndOfString()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader("'hi"));
-      reader.Read();
-    }
-
-    [Test]
-    public void ReadLongString()
-    {
-      string s = new string('a', 10000);
-      JsonReader reader = new JsonTextReader(new StringReader("'" + s + "'"));
-      reader.Read();
-
-      Assert.AreEqual(s, reader.Value);
-    }
-
-    [Test]
-    public void ReadLongJsonArray()
-    {
-      int valueCount = 10000;
-      StringWriter sw = new StringWriter();
-      JsonTextWriter writer = new JsonTextWriter(sw);
-      writer.WriteStartArray();
-      for (int i = 0; i < valueCount; i++)
-      {
-        writer.WriteValue(i);
-      }
-      writer.WriteEndArray();
-
-      string json = sw.ToString();
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      Assert.IsTrue(reader.Read());
-      for (int i = 0; i < valueCount; i++)
-      {
-        Assert.IsTrue(reader.Read());
-        Assert.AreEqual((long)i, reader.Value);
-      }
-      Assert.IsTrue(reader.Read());
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void NullCharReading()
-    {
-      string json = "\0{\0'\0h\0i\0'\0:\0[\01\0,\0'\0'\0\0,\0null\0]\0,\0do\0:true\0}\0\0/*\0sd\0f\0*/\0/*\0sd\0f\0*/ \0";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-      Assert.AreEqual("\0sd\0f\0", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-      Assert.AreEqual("\0sd\0f\0", reader.Value);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void AppendCharsWhileReadingNull()
-    {
-      string json = @"[
-  {
-    ""$id"": ""1"",
-    ""Name"": ""e1"",
-    ""Manager"": null
-  },
-  {
-    ""$id"": ""2"",
-    ""Name"": ""e2"",
-    ""Manager"": null
-  },
-  {
-    ""$ref"": ""1""
-  },
-  {
-    ""$ref"": ""2""
-  }
-]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[129]);
-
-      for (int i = 0; i < 15; i++)
-      {
-        reader.Read();
-      }
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-    }
-
-    [Test]
-    public void AppendCharsWhileReadingNewLine()
-    {
-      string json = @"
-{
-  ""description"": ""A person"",
-  ""type"": ""object"",
-  ""properties"":
-  {
-    ""name"": {""type"":""string""},
-    ""hobbies"": {
-      ""type"": ""array"",
-      ""items"": {""type"":""string""}
-    }
-  }
-}
-";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[129]);
-
-      for (int i = 0; i < 14; i++)
-      {
-        Assert.IsTrue(reader.Read());
-      }
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("type", reader.Value);
-    }
-
-    [Test]
-    public void ReadNullTerminatorStrings()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader("'h\0i'"));
-      Assert.IsTrue(reader.Read());
-
-      Assert.AreEqual("h\0i", reader.Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected end while parsing unicode character. Line 1, position 4."
-#endif
-      )]
-    public void UnexpectedEndOfHex()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader(@"'h\u123"));
-      reader.Read();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 3."
-#endif
-      )]
-    public void UnexpectedEndOfControlCharacter()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader(@"'h\"));
-      reader.Read();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading bytes. Unexpected token: Boolean. Line 1, position 4."
-#endif
-      )]
-    public void ReadBytesWithBadCharacter()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader(@"true"));
-      reader.ReadAsBytes();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 17."
-#endif
-      )]
-    public void ReadBytesWithUnexpectedEnd()
-    {
-      string helloWorld = "Hello world!";
-      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
-
-      JsonReader reader = new JsonTextReader(new StringReader(@"'" + Convert.ToBase64String(helloWorldData)));
-      reader.ReadAsBytes();
-    }
-
-    [Test]
-    public void ReadBytesNoStartWithUnexpectedEnd()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader(@"[  "));
-      Assert.IsTrue(reader.Read());
-
-      Assert.IsNull(reader.ReadAsBytes());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected end while parsing unquoted property name. Line 1, position 4."
-#endif
-      )]
-    public void UnexpectedEndWhenParsingUnquotedProperty()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader(@"{aww"));
-      Assert.IsTrue(reader.Read());
-      reader.Read();
-    }
-
-    [Test]
-    public void ReadNewLines()
-    {
-      string newLinesText = StringUtils.CarriageReturn + StringUtils.CarriageReturnLineFeed + StringUtils.LineFeed + StringUtils.CarriageReturnLineFeed + " " + StringUtils.CarriageReturn + StringUtils.CarriageReturnLineFeed;
-
-      string json =
-        newLinesText
-        + "{" + newLinesText
-        + "'" + newLinesText
-        + "name1" + newLinesText
-        + "'" + newLinesText
-        + ":" + newLinesText
-        + "[" + newLinesText
-        + "new" + newLinesText
-        + "Date" + newLinesText
-        + "(" + newLinesText
-        + "1" + newLinesText
-        + "," + newLinesText
-        + "null" + newLinesText
-        + "/*" + newLinesText
-        + "blah comment" + newLinesText
-        + "*/" + newLinesText
-        + ")" + newLinesText
-        + "," + newLinesText
-        + "1.1111" + newLinesText
-        + "]" + newLinesText
-        + "," + newLinesText
-        + "name2" + newLinesText
-        + ":" + newLinesText
-        + "{" + newLinesText
-        + "}" + newLinesText
-        + "}" + newLinesText;
-
-      int count = 0;
-      StringReader sr = new StringReader(newLinesText);
-      while (sr.ReadLine() != null)
-      {
-        count++;
-      }
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(7, reader.LineNumber);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(31, reader.LineNumber);
-      Assert.AreEqual(newLinesText + "name1" + newLinesText, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(37, reader.LineNumber);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(55, reader.LineNumber);
-      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
-      Assert.AreEqual("Date", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(61, reader.LineNumber);
-      Assert.AreEqual(1L, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(73, reader.LineNumber);
-      Assert.AreEqual(null, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(91, reader.LineNumber);
-      Assert.AreEqual(newLinesText + "blah comment" + newLinesText, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(97, reader.LineNumber);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(109, reader.LineNumber);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(115, reader.LineNumber);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(133, reader.LineNumber);
-      Assert.AreEqual("name2", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(139, reader.LineNumber);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(145, reader.LineNumber);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(151, reader.LineNumber);
-    }
-
-    [Test]
-    public void ParsingQuotedPropertyWithControlCharacters()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader(@"{'hi\r\nbye':1}"));
-      Assert.IsTrue(reader.Read());
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual(@"hi
-bye", reader.Value);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(1L, reader.Value);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ReadBytesFollowingNumberInArray()
-    {
-      string helloWorld = "Hello world!";
-      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
-
-      JsonReader reader = new JsonTextReader(new StringReader(@"[1,'" + Convert.ToBase64String(helloWorldData) + @"']"));
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      byte[] data = reader.ReadAsBytes();
-      CollectionAssert.AreEquivalent(helloWorldData, data);
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ReadBytesFollowingNumberInObject()
-    {
-      string helloWorld = "Hello world!";
-      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
-
-      JsonReader reader = new JsonTextReader(new StringReader(@"{num:1,data:'" + Convert.ToBase64String(helloWorldData) + @"'}"));
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      byte[] data = reader.ReadAsBytes();
-      CollectionAssert.AreEquivalent(helloWorldData, data);
-      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ReadingEscapedStrings()
-    {
-      string input = "{value:'Purple\\r \\n monkey\\'s:\\tdishwasher'}";
-
-      StringReader sr = new StringReader(input);
-
-      using (JsonReader jsonReader = new JsonTextReader(sr))
-      {
-        Assert.AreEqual(0, jsonReader.Depth);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
-        Assert.AreEqual(0, jsonReader.Depth);
-        
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-        Assert.AreEqual(1, jsonReader.Depth);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
-        Assert.AreEqual("Purple\r \n monkey's:\tdishwasher", jsonReader.Value);
-        Assert.AreEqual('\'', jsonReader.QuoteChar);
-        Assert.AreEqual(1, jsonReader.Depth);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.EndObject, jsonReader.TokenType);
-        Assert.AreEqual(0, jsonReader.Depth);
-      }
-    }
-
-    [Test]
-    public void ReadNewlineLastCharacter()
-    {
-      string input = @"{
-  CPU: 'Intel',
-  Drives: [ /* Com*ment */
-    'DVD read/writer',
-    ""500 gigabyte hard drive""
-  ]
-}" + '\n';
-
-      object o = JsonConvert.DeserializeObject(input);
-    }
-
-    [Test]
-    public void ReadRandomJson()
-    {
-      string json = @"[
-  true,
-  {
-    ""integer"": 99,
-    ""string"": ""how now brown cow?"",
-    ""array"": [
-      0,
-      1,
-      2,
-      3,
-      4,
-      {
-        ""decimal"": 990.00990099
-      },
-      5
-    ]
-  },
-  ""This is a string."",
-  null,
-  null
-]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      while (reader.Read())
-      {
-        
-      }
-    }
-
-    [Test]
-    public void WriteReadWrite()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw)
-        {
-          Formatting = Formatting.Indented
-        })
-      {
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue(true);
-
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("integer");
-        jsonWriter.WriteValue(99);
-        jsonWriter.WritePropertyName("string");
-        jsonWriter.WriteValue("how now brown cow?");
-        jsonWriter.WritePropertyName("array");
-
-        jsonWriter.WriteStartArray();
-        for (int i = 0; i < 5; i++)
-        {
-          jsonWriter.WriteValue(i);
-        }
-
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("decimal");
-        jsonWriter.WriteValue(990.00990099m);
-        jsonWriter.WriteEndObject();
-
-        jsonWriter.WriteValue(5);
-        jsonWriter.WriteEndArray();
-
-        jsonWriter.WriteEndObject();
-
-        jsonWriter.WriteValue("This is a string.");
-        jsonWriter.WriteNull();
-        jsonWriter.WriteNull();
-        jsonWriter.WriteEndArray();
-      }
-
-      string json = sb.ToString();
-
-      JsonSerializer serializer = new JsonSerializer();
-
-      object jsonObject = serializer.Deserialize(new JsonTextReader(new StringReader(json)));
-
-      sb = new StringBuilder();
-      sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw)
-        {
-          Formatting = Formatting.Indented
-        })
-      {
-        serializer.Serialize(jsonWriter, jsonObject);
-      }
-
-      Assert.AreEqual(json, sb.ToString());
-    }
-
-    [Test]
-    public void FloatingPointNonFiniteNumbers()
-    {
-      string input = @"[
-  NaN,
-  Infinity,
-  -Infinity
-]";
-
-      StringReader sr = new StringReader(input);
-
-      using (JsonReader jsonReader = new JsonTextReader(sr))
-      {
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
-        Assert.AreEqual(jsonReader.Value, double.NaN);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
-        Assert.AreEqual(jsonReader.Value, double.PositiveInfinity);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
-        Assert.AreEqual(jsonReader.Value, double.NegativeInfinity);
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
-      }
-    }
-
-    [Test]
-    public void LongStringTest()
-    {
-      int length = 20000;
-      string json = @"[""" + new string(' ', length) + @"""]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(typeof(string), reader.ValueType);
-      Assert.AreEqual(20000, reader.Value.ToString().Length);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void EscapedUnicodeText()
-    {
-      string json = @"[""\u003c"",""\u5f20""]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[2]);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual("<", reader.Value);
-
-      reader.Read();
-      Assert.AreEqual(24352, Convert.ToInt32(Convert.ToChar((string)reader.Value)));
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadFloatingPointNumber()
-    {
-      string json =
-        @"[0.0,0.0,0.1,1.0,1.000001,1E-06,4.94065645841247E-324,Infinity,-Infinity,NaN,1.7976931348623157E+308,-1.7976931348623157E+308,Infinity,-Infinity,NaN,0e-10,0.25e-5,0.3e10]";
-
-      using (JsonReader jsonReader = new JsonTextReader(new StringReader(json)))
-      {
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(0.0, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(0.0, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(0.1, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(1.0, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(1.000001, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(1E-06, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(4.94065645841247E-324, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.PositiveInfinity, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.NegativeInfinity, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.NaN, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.MaxValue, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.MinValue, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.PositiveInfinity, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.NegativeInfinity, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(double.NaN, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(0d, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(0.0000025d, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
-        Assert.AreEqual(3000000000d, jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
-      }
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Invalid character after parsing property name. Expected ':' but got: "". Line 3, position 9."
-#endif
-      )]
-    public void MissingColon()
-    {
-      string json = @"{
-    ""A"" : true,
-    ""B"" """;
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
-
-      reader.Read();
-    }
-
-    [Test]
-    public void ReadSingleBytes()
-    {
-      StringReader s = new StringReader(@"""SGVsbG8gd29ybGQu""");
-      JsonTextReader reader = new JsonTextReader(s);
-
-      byte[] data = reader.ReadAsBytes();
-      Assert.IsNotNull(data);
-
-      string text = Encoding.UTF8.GetString(data, 0, data.Length);
-      Assert.AreEqual("Hello world.", text);
-    }
-
-    [Test]
-    public void ReadOctalNumber()
-    {
-      StringReader s = new StringReader(@"[0372, 0xFA, 0XFA]");
-      JsonTextReader jsonReader = new JsonTextReader(s);
-
-      Assert.IsTrue(jsonReader.Read());
-      Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
-
-      Assert.IsTrue(jsonReader.Read());
-      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
-      Assert.AreEqual(250L, jsonReader.Value);
-
-      Assert.IsTrue(jsonReader.Read());
-      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
-      Assert.AreEqual(250L, jsonReader.Value);
-
-      Assert.IsTrue(jsonReader.Read());
-      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
-      Assert.AreEqual(250L, jsonReader.Value);
-
-      Assert.IsTrue(jsonReader.Read());
-      Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
-
-      Assert.IsFalse(jsonReader.Read());
-    }
-
-    [Test]
-    public void ReadOctalNumberAsInt32()
-    {
-      StringReader s = new StringReader(@"[0372, 0xFA, 0XFA]");
-      JsonTextReader jsonReader = new JsonTextReader(s);
-
-      Assert.IsTrue(jsonReader.Read());
-      Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
-
-      jsonReader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
-      Assert.AreEqual(typeof(int), jsonReader.ValueType);
-      Assert.AreEqual(250, jsonReader.Value);
-
-      jsonReader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
-      Assert.AreEqual(typeof(int), jsonReader.ValueType);
-      Assert.AreEqual(250, jsonReader.Value);
-
-      jsonReader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
-      Assert.AreEqual(typeof(int), jsonReader.ValueType);
-      Assert.AreEqual(250, jsonReader.Value);
-
-      Assert.IsTrue(jsonReader.Read());
-      Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
-
-      Assert.IsFalse(jsonReader.Read());
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected character encountered while parsing value: }. Line 1, position 1."
-#endif
-      )]
-    public void ReadBadCharInArray()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"[}"));
-
-      reader.Read();
-      reader.Read();
-    }
-
-    [Test]
-    public void ReadAsDecimalNoContent()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@""));
-
-      Assert.IsNull(reader.ReadAsDecimal());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsBytesNoContent()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@""));
-
-      Assert.IsNull(reader.ReadAsBytes());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected end when reading bytes. Line 1, position 1."
-#endif
-      )]
-    public void ReadAsBytesNoContentWrappedObject()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"{"));
-
-      reader.ReadAsBytes();
-    }
-
-#if !NET20
-    [Test]
-    public void ReadAsDateTimeOffsetNoContent()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@""));
-
-      Assert.IsNull(reader.ReadAsDateTimeOffset());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-#endif
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading decimal. Unexpected token: StartConstructor. Line 1, position 9."
-#endif
-      )]
-    public void ReadAsDecimalBadContent()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"new Date()"));
-
-      Assert.IsNull(reader.ReadAsDecimal());
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading bytes. Unexpected token: StartConstructor. Line 1, position 9."
-#endif
-      )]
-    public void ReadAsBytesBadContent()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"new Date()"));
-
-      reader.ReadAsBytes();
-    }
-
-#if !NET20
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading date. Unexpected token: StartConstructor. Line 1, position 9."
-#endif
-      )]
-    public void ReadAsDateTimeOffsetBadContent()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"new Date()"));
-
-      reader.ReadAsDateTimeOffset();
-    }
-#endif
-
-    [Test]
-    public void ReadAsBytesIntegerArrayWithComments()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"[/*hi*/1/*hi*/,2/*hi*/]"));
-
-      byte[] data = reader.ReadAsBytes();
-      Assert.AreEqual(2, data.Length);
-      Assert.AreEqual(1, data[0]);
-      Assert.AreEqual(2, data[1]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected end when reading bytes. Line 1, position 2."
-#endif
-      )]
-    public void ReadAsBytesIntegerArrayWithNoEnd()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"[1"));
-
-      reader.ReadAsBytes();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected token when reading bytes: Float. Line 1, position 4."
-#endif
-      )]
-    public void ReadAsBytesArrayWithBadContent()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"[1.0]"));
-
-      reader.ReadAsBytes();
-    }
-
-    [Test]
-    public void ReadUnicode()
-    {
-      string json = @"{""Message"":""Hi,I\u0092ve send you smth""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[5]);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("Message", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(@"Hi,I" + '\u0092' + "ve send you smth", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ReadHexidecimalWithAllLetters()
-    {
-      string json = @"{""text"":0xabcdef12345}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(11806310474565, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-#if !NET20
-    [Test]
-    public void ReadAsDateTimeOffset()
-    {
-      string json = "{\"Offset\":\"\\/Date(946663200000+0600)\\/\"}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
-      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsDateTimeOffsetNegative()
-    {
-      string json = @"{""Offset"":""\/Date(946706400000-0600)\/""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
-      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(-6)), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Could not convert string to DateTimeOffset: blablahbla. Line 1, position 22."
-#endif
-      )]
-    public void ReadAsDateTimeOffsetBadString()
-    {
-      string json = @"{""Offset"":""blablahbla""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-    }
-
-    [Test]
-    public void ReadAsDateTimeOffsetHoursOnly()
-    {
-      string json = "{\"Offset\":\"\\/Date(946663200000+06)\\/\"}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
-      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsDateTimeOffsetWithMinutes()
-    {
-      string json = @"{""Offset"":""\/Date(946708260000-0631)\/""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
-      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(-6).Add(TimeSpan.FromMinutes(-31))), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsDateTimeOffsetIsoDate()
-    {
-      string json = @"{""Offset"":""2011-08-01T21:25Z""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
-      Assert.AreEqual(new DateTimeOffset(new DateTime(2011, 8, 1, 21, 25, 0, DateTimeKind.Utc), TimeSpan.Zero), reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsDateTimeOffsetUnitedStatesDate()
-    {
-      string json = @"{""Offset"":""1/30/2011""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.Culture = new CultureInfo("en-US");
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
-
-      DateTimeOffset dt = (DateTimeOffset)reader.Value;
-      Assert.AreEqual(new DateTime(2011, 1, 30, 0, 0, 0, DateTimeKind.Unspecified), dt.DateTime);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsDateTimeOffsetNewZealandDate()
-    {
-      string json = @"{""Offset"":""30/1/2011""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.Culture = new CultureInfo("en-NZ");
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
-
-      DateTimeOffset dt = (DateTimeOffset)reader.Value;
-      Assert.AreEqual(new DateTime(2011, 1, 30, 0, 0, 0, DateTimeKind.Unspecified), dt.DateTime);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-#endif
-
-    [Test]
-    public void ReadAsDecimalInt()
-    {
-      string json = @"{""Name"":1}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(typeof(decimal), reader.ValueType);
-      Assert.AreEqual(1m, reader.Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(FormatException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Input string was not in a correct format."
-#endif
-      )]
-    public void ReadAsIntDecimal()
-    {
-      string json = @"{""Name"": 1.1}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(typeof(int), reader.ValueType);
-      Assert.AreEqual(1, reader.Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error parsing null value. Line 0, position 0."
-#endif
-      )]
-    public void MatchWithInsufficentCharacters()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"nul"));
-      reader.Read();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error parsing null value. Line 0, position 0."
-#endif
-      )]
-    public void MatchWithWrongCharacters()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"nulz"));
-      reader.Read();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error parsing null value. Line 1, position 4."
-#endif
-      )]
-    public void MatchWithNoTrailingSeperator()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"nullz"));
-      reader.Read();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected end while parsing comment. Line 1, position 6."
-#endif
-      )]
-    public void UnclosedComment()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"/* sdf"));
-      reader.Read();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error parsing comment. Expected: *, got s. Line 1, position 1."
-#endif
-      )]
-    public void BadCommentStart()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader(@"/sdf"));
-      reader.Read();
-    }
-
-    [Test]
-    public void ReadAsDecimal()
-    {
-      string json = @"{""decimal"":-7.92281625142643E+28}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      decimal? d = reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(typeof(decimal), reader.ValueType);
-      Assert.AreEqual(-79228162514264300000000000000m, d);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadAsDecimalFrench()
-    {
-      string json = @"{""decimal"":""9,99""}";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.Culture = new CultureInfo("fr-FR");
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      decimal? d = reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(typeof(decimal), reader.ValueType);
-      Assert.AreEqual(9.99m, d);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void ReadBufferOnControlChar()
-    {
-      string json = @"[
-  {
-    ""Name"": ""Jim"",
-    ""BirthDate"": ""\/Date(978048000000)\/"",
-    ""LastModified"": ""\/Date(978048000000)\/""
-  },
-  {
-    ""Name"": ""Jim"",
-    ""BirthDate"": ""\/Date(978048000000)\/"",
-    ""LastModified"": ""\/Date(978048000000)\/""
-  }
-]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[5]);
-      for (int i = 0; i < 13; i++)
-      {
-        reader.Read();
-      }
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(new DateTime(631136448000000000), reader.Value);
-    }
-
-    [Test]
-    public void ReadBufferOnEndComment()
-    {
-      string json = @"/*comment*/ { /*comment*/
-        ""Name"": /*comment*/ ""Apple"" /*comment*/, /*comment*/
-        ""ExpiryDate"": ""\/Date(1230422400000)\/"",
-        ""Price"": 3.99,
-        ""Sizes"": /*comment*/ [ /*comment*/
-          ""Small"", /*comment*/
-          ""Medium"" /*comment*/,
-          /*comment*/ ""Large""
-        /*comment*/ ] /*comment*/
-      } /*comment*/";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[5]);
-
-      for (int i = 0; i < 26; i++)
-      {
-        Assert.IsTrue(reader.Read());
-      }
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ParseNullStringConstructor()
-    {
-      string json = "new Date\0()";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-      reader.SetCharBuffer(new char[7]);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual("Date", reader.Value);
-      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
-    }
-
-    [Test]
-    public void ParseLineFeedDelimitedConstructor()
-    {
-      string json = "new Date\n()";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual("Date", reader.Value);
-      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
-    }
-
-    [Test]
-    public void ParseArrayWithMissingValues()
-    {
-      string json = "[,,, \n\r\n \0   \r  , ,    ]";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-    }
-
-    [Test]
-    public void ParseBooleanWithNoExtraContent()
-    {
-      string json = "[true ";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.IsTrue(reader.Read());
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected end while parsing constructor. Line 1, position 7."
-#endif
-      )]
-    public void ParseConstructorWithUnexpectedEnd()
-    {
-      string json = "new Dat";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.Read();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected character while parsing constructor: !. Line 1, position 9."
-#endif
-      )]
-    public void ParseConstructorWithUnexpectedCharacter()
-    {
-      string json = "new Date !";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.Read();
-    }
-
-    [Test]
-    public void ParseObjectWithNoEnd()
-    {
-      string json = "{hi:1, ";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.IsTrue(reader.Read());
-      Assert.IsTrue(reader.Read());
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ParseEmptyArray()
-    {
-      string json = "[]";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-    }
-
-    [Test]
-    public void ParseEmptyObject()
-    {
-      string json = "{}";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error parsing boolean value. Line 1, position 4."
-#endif
-      )]
-    public void ParseIncompleteCommentSeperator()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader("true/"));
-
-      reader.Read();
-    }
-
-    [Test]
-    public void ParseEmptyConstructor()
-    {
-      string json = "new Date()";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected character while parsing constructor: ,. Line 1, position 8."
-#endif
-      )]
-    public void ParseConstructorWithBadCharacter()
-    {
-      string json = "new Date,()";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-    }
-
-    [Test]
-    public void ParseContentDelimitedByNonStandardWhitespace()
-    {
-      string json = "\x00a0{\x00a0'h\x00a0i\x00a0'\x00a0:\x00a0[\x00a0true\x00a0,\x00a0new\x00a0Date\x00a0(\x00a0)\x00a0]\x00a0/*\x00a0comment\x00a0*/\x00a0}\x00a0";
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-      
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
-      
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-    
-    [Test]
-    public void ReadContentDelimitedByComments()
-    {
-      string json = @"/*comment*/{/*comment*/Name:/*comment*/true/*comment*/,/*comment*/
-        ""ExpiryDate"":/*comment*/new
-" + StringUtils.LineFeed +
-@"Date
-(/*comment*/null/*comment*/),
-        ""Price"": 3.99,
-        ""Sizes"":/*comment*/[/*comment*/
-          ""Small""/*comment*/]/*comment*/}/*comment*/";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("Name", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
-      Assert.AreEqual(true, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("ExpiryDate", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
-      Assert.AreEqual(5, reader.LineNumber);
-      Assert.AreEqual("Date", reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
-    }
-
-    [Test]
-    public void ParseOctalNumber()
-    {
-      string json = @"010";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(8m, reader.Value);
-    }
-
-    [Test]
-    public void ParseHexNumber()
-    {
-      string json = @"0x20";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(32m, reader.Value);
-    }
-
-    [Test]
-    public void ParseNumbers()
-    {
-      string json = @"[0,1,2 , 3]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Additional text encountered after finished reading JSON content: }. Line 1, position 2."
-#endif
-      )]
-    public void UnexpectedEndTokenWhenParsingOddEndToken()
-    {
-        JsonReader reader = new JsonTextReader(new StringReader(@"{}}"));
-        Assert.IsTrue(reader.Read());
-        Assert.IsTrue(reader.Read());
-        reader.Read();
-    }
-
-    [Test]
-    public void ScientificNotation()
-    {
-      double d;
-
-      d = Convert.ToDouble("6.0221418e23");
-      Console.WriteLine(d.ToString(new CultureInfo("fr-FR")));
-      Console.WriteLine(d.ToString("0.#############################################################################"));
-
-      //CultureInfo info = CultureInfo.GetCultureInfo("fr-FR");
-      //Console.WriteLine(info.NumberFormat.NumberDecimalSeparator);
-
-      string json = @"[0e-10,0E-10,0.25e-5,0.3e10,6.0221418e23]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      reader.Read();
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(0d, reader.Value);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(0d, reader.Value);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(0.0000025d, reader.Value);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(3000000000d, reader.Value);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(602214180000000000000000d, reader.Value);
-
-      reader.Read();
-
-
-      reader = new JsonTextReader(new StringReader(json));
-
-      reader.Read();
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(0m, reader.Value);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(0m, reader.Value);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(0.0000025m, reader.Value);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(3000000000m, reader.Value);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(602214180000000000000000m, reader.Value);
-
-      reader.Read();
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json;
+using System.IO;
+using System.Xml;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Tests
+{
+  [TestFixture]
+  public class JsonTextReaderTest : TestFixtureBase
+  {
+    [Test]
+    public void CloseInput()
+    {
+      MemoryStream ms = new MemoryStream();
+      JsonTextReader reader = new JsonTextReader(new StreamReader(ms));
+
+      Assert.IsTrue(ms.CanRead);
+      reader.Close();
+      Assert.IsFalse(ms.CanRead);
+
+      ms = new MemoryStream();
+      reader = new JsonTextReader(new StreamReader(ms)) { CloseInput = false };
+
+      Assert.IsTrue(ms.CanRead);
+      reader.Close();
+      Assert.IsTrue(ms.CanRead);
+    }
+    
+    [Test]
+    public void YahooFinance()
+    {
+      string input = @"{
+""matches"" : [
+{""t"":""C"", ""n"":""Citigroup Inc."", ""e"":""NYSE"", ""id"":""662713""}
+,{""t"":""CHL"", ""n"":""China Mobile Ltd. (ADR)"", ""e"":""NYSE"", ""id"":""660998""}
+,{""t"":""PTR"", ""n"":""PetroChina Company Limited (ADR)"", ""e"":""NYSE"", ""id"":""664536""}
+,{""t"":""RIO"", ""n"":""Companhia Vale do Rio Doce (ADR)"", ""e"":""NYSE"", ""id"":""671472""}
+,{""t"":""RIOPR"", ""n"":""Companhia Vale do Rio Doce (ADR)"", ""e"":""NYSE"", ""id"":""3512643""}
+,{""t"":""CSCO"", ""n"":""Cisco Systems, Inc."", ""e"":""NASDAQ"", ""id"":""99624""}
+,{""t"":""CVX"", ""n"":""Chevron Corporation"", ""e"":""NYSE"", ""id"":""667226""}
+,{""t"":""TM"", ""n"":""Toyota Motor Corporation (ADR)"", ""e"":""NYSE"", ""id"":""655880""}
+,{""t"":""JPM"", ""n"":""JPMorgan Chase \\x26 Co."", ""e"":""NYSE"", ""id"":""665639""}
+,{""t"":""COP"", ""n"":""ConocoPhillips"", ""e"":""NYSE"", ""id"":""1691168""}
+,{""t"":""LFC"", ""n"":""China Life Insurance Company Ltd. (ADR)"", ""e"":""NYSE"", ""id"":""688679""}
+,{""t"":""NOK"", ""n"":""Nokia Corporation (ADR)"", ""e"":""NYSE"", ""id"":""657729""}
+,{""t"":""KO"", ""n"":""The Coca-Cola Company"", ""e"":""NYSE"", ""id"":""6550""}
+,{""t"":""VZ"", ""n"":""Verizon Communications Inc."", ""e"":""NYSE"", ""id"":""664887""}
+,{""t"":""AMX"", ""n"":""America Movil S.A.B de C.V. (ADR)"", ""e"":""NYSE"", ""id"":""665834""}],
+""all"" : false
+}
+";
+
+      using (JsonReader jsonReader = new JsonTextReader(new StringReader(input)))
+      {
+        while (jsonReader.Read())
+        {
+          Console.WriteLine(jsonReader.Value);
+        }
+      }
+    }
+
+    [Test]
+    public void ReadConstructor()
+    {
+      string json = @"{""DefaultConverter"":new Date(0, ""hi""),""MemberConverter"":""1970-01-01T00:00:00Z""}";
+
+      JsonReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.IsTrue(reader.Read());
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
+      Assert.AreEqual("Date", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(0L, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual("hi", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual("MemberConverter", reader.Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Additional text encountered after finished reading JSON content: ,. Line 5, position 2."
+#endif
+      )]
+    public void ParseAdditionalContent_Comma()
+    {
+      string json = @"[
+""Small"",
+""Medium"",
+""Large""
+],";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      while (reader.Read())
+      {
+      }
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Additional text encountered after finished reading JSON content: c. Line 5, position 2."
+#endif
+      )]
+    public void ParseAdditionalContent_Text()
+    {
+      string json = @"[
+""Small"",
+""Medium"",
+""Large""
+]content";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[2]);
+
+      reader.Read();
+      Assert.AreEqual(1, reader.LineNumber);
+
+      reader.Read();
+      Assert.AreEqual(2, reader.LineNumber);
+
+      reader.Read();
+      Assert.AreEqual(3, reader.LineNumber);
+
+      reader.Read();
+      Assert.AreEqual(4, reader.LineNumber);
+
+      reader.Read();
+      Assert.AreEqual(5, reader.LineNumber);
+
+      reader.Read();
+    }
+
+    [Test]
+    public void ParseAdditionalContent_Whitespace()
+    {
+      string json = @"[
+""Small"",
+""Medium"",
+""Large""
+]   
+
+";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      while (reader.Read())
+      {
+      }
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Additional text encountered after finished reading JSON content: a. Line 1, position 5."
+#endif
+      )]
+    public void ParseAdditionalContent_WhitespaceThenText()
+    {
+      string json = @"'hi' a";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      while (reader.Read())
+      {
+      }
+    }
+
+    [Test]
+    public void ReadingIndented()
+    {
+      string input = @"{
+  CPU: 'Intel',
+  Drives: [
+    'DVD read/writer',
+    ""500 gigabyte hard drive""
+  ]
+}";
+
+      StringReader sr = new StringReader(input);
+
+      using (JsonTextReader jsonReader = new JsonTextReader(sr))
+      {
+        jsonReader.SetCharBuffer(new char[5]);
+
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.None);
+        Assert.AreEqual(0, jsonReader.LineNumber);
+        Assert.AreEqual(0, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartObject);
+        Assert.AreEqual(1, jsonReader.LineNumber);
+        Assert.AreEqual(1, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(jsonReader.Value, "CPU");
+        Assert.AreEqual(2, jsonReader.LineNumber);
+        Assert.AreEqual(7, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.String, jsonReader.TokenType);
+        Assert.AreEqual("Intel", jsonReader.Value);
+        Assert.AreEqual(2, jsonReader.LineNumber);
+        Assert.AreEqual(15, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(jsonReader.Value, "Drives");
+        Assert.AreEqual(3, jsonReader.LineNumber);
+        Assert.AreEqual(10, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
+        Assert.AreEqual(3, jsonReader.LineNumber);
+        Assert.AreEqual(12, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
+        Assert.AreEqual(jsonReader.Value, "DVD read/writer");
+        Assert.AreEqual(jsonReader.QuoteChar, '\'');
+        Assert.AreEqual(4, jsonReader.LineNumber);
+        Assert.AreEqual(22, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
+        Assert.AreEqual(jsonReader.Value, "500 gigabyte hard drive");
+        Assert.AreEqual(jsonReader.QuoteChar, '"');
+        Assert.AreEqual(5, jsonReader.LineNumber);
+        Assert.AreEqual(30, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
+        Assert.AreEqual(6, jsonReader.LineNumber);
+        Assert.AreEqual(4, jsonReader.LinePosition);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndObject);
+        Assert.AreEqual(7, jsonReader.LineNumber);
+        Assert.AreEqual(2, jsonReader.LinePosition);
+
+        Assert.IsFalse(jsonReader.Read());
+      }
+    }
+
+    [Test]
+    public void Depth()
+    {
+      string input = @"{
+  value:'Purple',
+  array:[1,2,new Date(1)],
+  subobject:{prop:1,proparray:[1]}
+}";
+
+      StringReader sr = new StringReader(input);
+
+      using (JsonReader reader = new JsonTextReader(sr))
+      {
+        Assert.AreEqual(0, reader.Depth);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.StartObject);
+        Assert.AreEqual(0, reader.Depth);
+        Assert.AreEqual("", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("value", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.String);
+        Assert.AreEqual(reader.Value, @"Purple");
+        Assert.AreEqual(reader.QuoteChar, '\'');
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("value", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("array", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.StartArray);
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("array", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
+        Assert.AreEqual(1L, reader.Value);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("array[0]", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
+        Assert.AreEqual(2L, reader.Value);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("array[1]", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.StartConstructor);
+        Assert.AreEqual("Date", reader.Value);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("array[2]", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
+        Assert.AreEqual(1L, reader.Value);
+        Assert.AreEqual(3, reader.Depth);
+        Assert.AreEqual("array[2][0]", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.EndConstructor);
+        Assert.AreEqual(null, reader.Value);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("array[2]", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.EndArray);
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("array", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("subobject", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.StartObject);
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("subobject", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("subobject.prop", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("subobject.prop", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("subobject.proparray", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.StartArray);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("subobject.proparray", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.Integer);
+        Assert.AreEqual(3, reader.Depth);
+        Assert.AreEqual("subobject.proparray[0]", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.EndArray);
+        Assert.AreEqual(2, reader.Depth);
+        Assert.AreEqual("subobject.proparray", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.EndObject);
+        Assert.AreEqual(1, reader.Depth);
+        Assert.AreEqual("subobject", reader.Path);
+
+        reader.Read();
+        Assert.AreEqual(reader.TokenType, JsonToken.EndObject);
+        Assert.AreEqual(0, reader.Depth);
+        Assert.AreEqual("", reader.Path);
+      }
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentNullException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Value cannot be null.
+Parameter name: reader"
+#endif
+      )]
+    public void NullTextReader()
+    {
+      new JsonTextReader(null);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 3."
+#endif
+      )]
+    public void UnexpectedEndOfString()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader("'hi"));
+      reader.Read();
+    }
+
+    [Test]
+    public void ReadLongString()
+    {
+      string s = new string('a', 10000);
+      JsonReader reader = new JsonTextReader(new StringReader("'" + s + "'"));
+      reader.Read();
+
+      Assert.AreEqual(s, reader.Value);
+    }
+
+    [Test]
+    public void ReadLongJsonArray()
+    {
+      int valueCount = 10000;
+      StringWriter sw = new StringWriter();
+      JsonTextWriter writer = new JsonTextWriter(sw);
+      writer.WriteStartArray();
+      for (int i = 0; i < valueCount; i++)
+      {
+        writer.WriteValue(i);
+      }
+      writer.WriteEndArray();
+
+      string json = sw.ToString();
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      Assert.IsTrue(reader.Read());
+      for (int i = 0; i < valueCount; i++)
+      {
+        Assert.IsTrue(reader.Read());
+        Assert.AreEqual((long)i, reader.Value);
+      }
+      Assert.IsTrue(reader.Read());
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void NullCharReading()
+    {
+      string json = "\0{\0'\0h\0i\0'\0:\0[\01\0,\0'\0'\0\0,\0null\0]\0,\0do\0:true\0}\0\0/*\0sd\0f\0*/\0/*\0sd\0f\0*/ \0";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+      Assert.AreEqual("\0sd\0f\0", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+      Assert.AreEqual("\0sd\0f\0", reader.Value);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void AppendCharsWhileReadingNull()
+    {
+      string json = @"[
+  {
+    ""$id"": ""1"",
+    ""Name"": ""e1"",
+    ""Manager"": null
+  },
+  {
+    ""$id"": ""2"",
+    ""Name"": ""e2"",
+    ""Manager"": null
+  },
+  {
+    ""$ref"": ""1""
+  },
+  {
+    ""$ref"": ""2""
+  }
+]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[129]);
+
+      for (int i = 0; i < 15; i++)
+      {
+        reader.Read();
+      }
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+    }
+
+    [Test]
+    public void AppendCharsWhileReadingNewLine()
+    {
+      string json = @"
+{
+  ""description"": ""A person"",
+  ""type"": ""object"",
+  ""properties"":
+  {
+    ""name"": {""type"":""string""},
+    ""hobbies"": {
+      ""type"": ""array"",
+      ""items"": {""type"":""string""}
+    }
+  }
+}
+";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[129]);
+
+      for (int i = 0; i < 14; i++)
+      {
+        Assert.IsTrue(reader.Read());
+      }
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("type", reader.Value);
+    }
+
+    [Test]
+    public void ReadNullTerminatorStrings()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader("'h\0i'"));
+      Assert.IsTrue(reader.Read());
+
+      Assert.AreEqual("h\0i", reader.Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected end while parsing unicode character. Line 1, position 4."
+#endif
+      )]
+    public void UnexpectedEndOfHex()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader(@"'h\u123"));
+      reader.Read();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 3."
+#endif
+      )]
+    public void UnexpectedEndOfControlCharacter()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader(@"'h\"));
+      reader.Read();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading bytes. Unexpected token: Boolean. Line 1, position 4."
+#endif
+      )]
+    public void ReadBytesWithBadCharacter()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader(@"true"));
+      reader.ReadAsBytes();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unterminated string. Expected delimiter: '. Line 1, position 17."
+#endif
+      )]
+    public void ReadBytesWithUnexpectedEnd()
+    {
+      string helloWorld = "Hello world!";
+      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
+
+      JsonReader reader = new JsonTextReader(new StringReader(@"'" + Convert.ToBase64String(helloWorldData)));
+      reader.ReadAsBytes();
+    }
+
+    [Test]
+    public void ReadBytesNoStartWithUnexpectedEnd()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader(@"[  "));
+      Assert.IsTrue(reader.Read());
+
+      Assert.IsNull(reader.ReadAsBytes());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected end while parsing unquoted property name. Line 1, position 4."
+#endif
+      )]
+    public void UnexpectedEndWhenParsingUnquotedProperty()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader(@"{aww"));
+      Assert.IsTrue(reader.Read());
+      reader.Read();
+    }
+
+    [Test]
+    public void ReadNewLines()
+    {
+      string newLinesText = StringUtils.CarriageReturn + StringUtils.CarriageReturnLineFeed + StringUtils.LineFeed + StringUtils.CarriageReturnLineFeed + " " + StringUtils.CarriageReturn + StringUtils.CarriageReturnLineFeed;
+
+      string json =
+        newLinesText
+        + "{" + newLinesText
+        + "'" + newLinesText
+        + "name1" + newLinesText
+        + "'" + newLinesText
+        + ":" + newLinesText
+        + "[" + newLinesText
+        + "new" + newLinesText
+        + "Date" + newLinesText
+        + "(" + newLinesText
+        + "1" + newLinesText
+        + "," + newLinesText
+        + "null" + newLinesText
+        + "/*" + newLinesText
+        + "blah comment" + newLinesText
+        + "*/" + newLinesText
+        + ")" + newLinesText
+        + "," + newLinesText
+        + "1.1111" + newLinesText
+        + "]" + newLinesText
+        + "," + newLinesText
+        + "name2" + newLinesText
+        + ":" + newLinesText
+        + "{" + newLinesText
+        + "}" + newLinesText
+        + "}" + newLinesText;
+
+      int count = 0;
+      StringReader sr = new StringReader(newLinesText);
+      while (sr.ReadLine() != null)
+      {
+        count++;
+      }
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(7, reader.LineNumber);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(31, reader.LineNumber);
+      Assert.AreEqual(newLinesText + "name1" + newLinesText, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(37, reader.LineNumber);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(55, reader.LineNumber);
+      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
+      Assert.AreEqual("Date", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(61, reader.LineNumber);
+      Assert.AreEqual(1L, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(73, reader.LineNumber);
+      Assert.AreEqual(null, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(91, reader.LineNumber);
+      Assert.AreEqual(newLinesText + "blah comment" + newLinesText, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(97, reader.LineNumber);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(109, reader.LineNumber);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(115, reader.LineNumber);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(133, reader.LineNumber);
+      Assert.AreEqual("name2", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(139, reader.LineNumber);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(145, reader.LineNumber);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(151, reader.LineNumber);
+    }
+
+    [Test]
+    public void ParsingQuotedPropertyWithControlCharacters()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader(@"{'hi\r\nbye':1}"));
+      Assert.IsTrue(reader.Read());
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual(@"hi
+bye", reader.Value);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(1L, reader.Value);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ReadBytesFollowingNumberInArray()
+    {
+      string helloWorld = "Hello world!";
+      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
+
+      JsonReader reader = new JsonTextReader(new StringReader(@"[1,'" + Convert.ToBase64String(helloWorldData) + @"']"));
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      byte[] data = reader.ReadAsBytes();
+      CollectionAssert.AreEquivalent(helloWorldData, data);
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ReadBytesFollowingNumberInObject()
+    {
+      string helloWorld = "Hello world!";
+      byte[] helloWorldData = Encoding.UTF8.GetBytes(helloWorld);
+
+      JsonReader reader = new JsonTextReader(new StringReader(@"{num:1,data:'" + Convert.ToBase64String(helloWorldData) + @"'}"));
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      byte[] data = reader.ReadAsBytes();
+      CollectionAssert.AreEquivalent(helloWorldData, data);
+      Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ReadingEscapedStrings()
+    {
+      string input = "{value:'Purple\\r \\n monkey\\'s:\\tdishwasher'}";
+
+      StringReader sr = new StringReader(input);
+
+      using (JsonReader jsonReader = new JsonTextReader(sr))
+      {
+        Assert.AreEqual(0, jsonReader.Depth);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
+        Assert.AreEqual(0, jsonReader.Depth);
+        
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+        Assert.AreEqual(1, jsonReader.Depth);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
+        Assert.AreEqual("Purple\r \n monkey's:\tdishwasher", jsonReader.Value);
+        Assert.AreEqual('\'', jsonReader.QuoteChar);
+        Assert.AreEqual(1, jsonReader.Depth);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.EndObject, jsonReader.TokenType);
+        Assert.AreEqual(0, jsonReader.Depth);
+      }
+    }
+
+    [Test]
+    public void ReadNewlineLastCharacter()
+    {
+      string input = @"{
+  CPU: 'Intel',
+  Drives: [ /* Com*ment */
+    'DVD read/writer',
+    ""500 gigabyte hard drive""
+  ]
+}" + '\n';
+
+      object o = JsonConvert.DeserializeObject(input);
+    }
+
+    [Test]
+    public void ReadRandomJson()
+    {
+      string json = @"[
+  true,
+  {
+    ""integer"": 99,
+    ""string"": ""how now brown cow?"",
+    ""array"": [
+      0,
+      1,
+      2,
+      3,
+      4,
+      {
+        ""decimal"": 990.00990099
+      },
+      5
+    ]
+  },
+  ""This is a string."",
+  null,
+  null
+]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      while (reader.Read())
+      {
+        
+      }
+    }
+
+    [Test]
+    public void WriteReadWrite()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw)
+        {
+          Formatting = Formatting.Indented
+        })
+      {
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue(true);
+
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("integer");
+        jsonWriter.WriteValue(99);
+        jsonWriter.WritePropertyName("string");
+        jsonWriter.WriteValue("how now brown cow?");
+        jsonWriter.WritePropertyName("array");
+
+        jsonWriter.WriteStartArray();
+        for (int i = 0; i < 5; i++)
+        {
+          jsonWriter.WriteValue(i);
+        }
+
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("decimal");
+        jsonWriter.WriteValue(990.00990099m);
+        jsonWriter.WriteEndObject();
+
+        jsonWriter.WriteValue(5);
+        jsonWriter.WriteEndArray();
+
+        jsonWriter.WriteEndObject();
+
+        jsonWriter.WriteValue("This is a string.");
+        jsonWriter.WriteNull();
+        jsonWriter.WriteNull();
+        jsonWriter.WriteEndArray();
+      }
+
+      string json = sb.ToString();
+
+      JsonSerializer serializer = new JsonSerializer();
+
+      object jsonObject = serializer.Deserialize(new JsonTextReader(new StringReader(json)));
+
+      sb = new StringBuilder();
+      sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw)
+        {
+          Formatting = Formatting.Indented
+        })
+      {
+        serializer.Serialize(jsonWriter, jsonObject);
+      }
+
+      Assert.AreEqual(json, sb.ToString());
+    }
+
+    [Test]
+    public void FloatingPointNonFiniteNumbers()
+    {
+      string input = @"[
+  NaN,
+  Infinity,
+  -Infinity
+]";
+
+      StringReader sr = new StringReader(input);
+
+      using (JsonReader jsonReader = new JsonTextReader(sr))
+      {
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
+        Assert.AreEqual(jsonReader.Value, double.NaN);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
+        Assert.AreEqual(jsonReader.Value, double.PositiveInfinity);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.Float);
+        Assert.AreEqual(jsonReader.Value, double.NegativeInfinity);
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
+      }
+    }
+
+    [Test]
+    public void LongStringTest()
+    {
+      int length = 20000;
+      string json = @"[""" + new string(' ', length) + @"""]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(typeof(string), reader.ValueType);
+      Assert.AreEqual(20000, reader.Value.ToString().Length);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void EscapedUnicodeText()
+    {
+      string json = @"[""\u003c"",""\u5f20""]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[2]);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual("<", reader.Value);
+
+      reader.Read();
+      Assert.AreEqual(24352, Convert.ToInt32(Convert.ToChar((string)reader.Value)));
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadFloatingPointNumber()
+    {
+      string json =
+        @"[0.0,0.0,0.1,1.0,1.000001,1E-06,4.94065645841247E-324,Infinity,-Infinity,NaN,1.7976931348623157E+308,-1.7976931348623157E+308,Infinity,-Infinity,NaN,0e-10,0.25e-5,0.3e10]";
+
+      using (JsonReader jsonReader = new JsonTextReader(new StringReader(json)))
+      {
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(0.0, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(0.0, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(0.1, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(1.0, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(1.000001, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(1E-06, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(4.94065645841247E-324, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.PositiveInfinity, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.NegativeInfinity, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.NaN, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.MaxValue, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.MinValue, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.PositiveInfinity, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.NegativeInfinity, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(double.NaN, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(0d, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(0.0000025d, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Float, jsonReader.TokenType);
+        Assert.AreEqual(3000000000d, jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
+      }
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Invalid character after parsing property name. Expected ':' but got: "". Line 3, position 9."
+#endif
+      )]
+    public void MissingColon()
+    {
+      string json = @"{
+    ""A"" : true,
+    ""B"" """;
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
+
+      reader.Read();
+    }
+
+    [Test]
+    public void ReadSingleBytes()
+    {
+      StringReader s = new StringReader(@"""SGVsbG8gd29ybGQu""");
+      JsonTextReader reader = new JsonTextReader(s);
+
+      byte[] data = reader.ReadAsBytes();
+      Assert.IsNotNull(data);
+
+      string text = Encoding.UTF8.GetString(data, 0, data.Length);
+      Assert.AreEqual("Hello world.", text);
+    }
+
+    [Test]
+    public void ReadOctalNumber()
+    {
+      StringReader s = new StringReader(@"[0372, 0xFA, 0XFA]");
+      JsonTextReader jsonReader = new JsonTextReader(s);
+
+      Assert.IsTrue(jsonReader.Read());
+      Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
+
+      Assert.IsTrue(jsonReader.Read());
+      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
+      Assert.AreEqual(250L, jsonReader.Value);
+
+      Assert.IsTrue(jsonReader.Read());
+      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
+      Assert.AreEqual(250L, jsonReader.Value);
+
+      Assert.IsTrue(jsonReader.Read());
+      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
+      Assert.AreEqual(250L, jsonReader.Value);
+
+      Assert.IsTrue(jsonReader.Read());
+      Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
+
+      Assert.IsFalse(jsonReader.Read());
+    }
+
+    [Test]
+    public void ReadOctalNumberAsInt32()
+    {
+      StringReader s = new StringReader(@"[0372, 0xFA, 0XFA]");
+      JsonTextReader jsonReader = new JsonTextReader(s);
+
+      Assert.IsTrue(jsonReader.Read());
+      Assert.AreEqual(JsonToken.StartArray, jsonReader.TokenType);
+
+      jsonReader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
+      Assert.AreEqual(typeof(int), jsonReader.ValueType);
+      Assert.AreEqual(250, jsonReader.Value);
+
+      jsonReader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
+      Assert.AreEqual(typeof(int), jsonReader.ValueType);
+      Assert.AreEqual(250, jsonReader.Value);
+
+      jsonReader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, jsonReader.TokenType);
+      Assert.AreEqual(typeof(int), jsonReader.ValueType);
+      Assert.AreEqual(250, jsonReader.Value);
+
+      Assert.IsTrue(jsonReader.Read());
+      Assert.AreEqual(JsonToken.EndArray, jsonReader.TokenType);
+
+      Assert.IsFalse(jsonReader.Read());
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected character encountered while parsing value: }. Line 1, position 1."
+#endif
+      )]
+    public void ReadBadCharInArray()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"[}"));
+
+      reader.Read();
+      reader.Read();
+    }
+
+    [Test]
+    public void ReadAsDecimalNoContent()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@""));
+
+      Assert.IsNull(reader.ReadAsDecimal());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsBytesNoContent()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@""));
+
+      Assert.IsNull(reader.ReadAsBytes());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected end when reading bytes. Line 1, position 1."
+#endif
+      )]
+    public void ReadAsBytesNoContentWrappedObject()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"{"));
+
+      reader.ReadAsBytes();
+    }
+
+#if !NET20
+    [Test]
+    public void ReadAsDateTimeOffsetNoContent()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@""));
+
+      Assert.IsNull(reader.ReadAsDateTimeOffset());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+#endif
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading decimal. Unexpected token: StartConstructor. Line 1, position 9."
+#endif
+      )]
+    public void ReadAsDecimalBadContent()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"new Date()"));
+
+      Assert.IsNull(reader.ReadAsDecimal());
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading bytes. Unexpected token: StartConstructor. Line 1, position 9."
+#endif
+      )]
+    public void ReadAsBytesBadContent()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"new Date()"));
+
+      reader.ReadAsBytes();
+    }
+
+#if !NET20
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading date. Unexpected token: StartConstructor. Line 1, position 9."
+#endif
+      )]
+    public void ReadAsDateTimeOffsetBadContent()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"new Date()"));
+
+      reader.ReadAsDateTimeOffset();
+    }
+#endif
+
+    [Test]
+    public void ReadAsBytesIntegerArrayWithComments()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"[/*hi*/1/*hi*/,2/*hi*/]"));
+
+      byte[] data = reader.ReadAsBytes();
+      Assert.AreEqual(2, data.Length);
+      Assert.AreEqual(1, data[0]);
+      Assert.AreEqual(2, data[1]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected end when reading bytes. Line 1, position 2."
+#endif
+      )]
+    public void ReadAsBytesIntegerArrayWithNoEnd()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"[1"));
+
+      reader.ReadAsBytes();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected token when reading bytes: Float. Line 1, position 4."
+#endif
+      )]
+    public void ReadAsBytesArrayWithBadContent()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"[1.0]"));
+
+      reader.ReadAsBytes();
+    }
+
+    [Test]
+    public void ReadUnicode()
+    {
+      string json = @"{""Message"":""Hi,I\u0092ve send you smth""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[5]);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("Message", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(@"Hi,I" + '\u0092' + "ve send you smth", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ReadHexidecimalWithAllLetters()
+    {
+      string json = @"{""text"":0xabcdef12345}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(11806310474565, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+#if !NET20
+    [Test]
+    public void ReadAsDateTimeOffset()
+    {
+      string json = "{\"Offset\":\"\\/Date(946663200000+0600)\\/\"}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
+      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsDateTimeOffsetNegative()
+    {
+      string json = @"{""Offset"":""\/Date(946706400000-0600)\/""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
+      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(-6)), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Could not convert string to DateTimeOffset: blablahbla. Line 1, position 22."
+#endif
+      )]
+    public void ReadAsDateTimeOffsetBadString()
+    {
+      string json = @"{""Offset"":""blablahbla""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+    }
+
+    [Test]
+    public void ReadAsDateTimeOffsetHoursOnly()
+    {
+      string json = "{\"Offset\":\"\\/Date(946663200000+06)\\/\"}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
+      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsDateTimeOffsetWithMinutes()
+    {
+      string json = @"{""Offset"":""\/Date(946708260000-0631)\/""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
+      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(-6).Add(TimeSpan.FromMinutes(-31))), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsDateTimeOffsetIsoDate()
+    {
+      string json = @"{""Offset"":""2011-08-01T21:25Z""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
+      Assert.AreEqual(new DateTimeOffset(new DateTime(2011, 8, 1, 21, 25, 0, DateTimeKind.Utc), TimeSpan.Zero), reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsDateTimeOffsetUnitedStatesDate()
+    {
+      string json = @"{""Offset"":""1/30/2011""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.Culture = new CultureInfo("en-US");
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
+
+      DateTimeOffset dt = (DateTimeOffset)reader.Value;
+      Assert.AreEqual(new DateTime(2011, 1, 30, 0, 0, 0, DateTimeKind.Unspecified), dt.DateTime);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsDateTimeOffsetNewZealandDate()
+    {
+      string json = @"{""Offset"":""30/1/2011""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.Culture = new CultureInfo("en-NZ");
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof(DateTimeOffset), reader.ValueType);
+
+      DateTimeOffset dt = (DateTimeOffset)reader.Value;
+      Assert.AreEqual(new DateTime(2011, 1, 30, 0, 0, 0, DateTimeKind.Unspecified), dt.DateTime);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+#endif
+
+    [Test]
+    public void ReadAsDecimalInt()
+    {
+      string json = @"{""Name"":1}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(typeof(decimal), reader.ValueType);
+      Assert.AreEqual(1m, reader.Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(FormatException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Input string was not in a correct format."
+#endif
+      )]
+    public void ReadAsIntDecimal()
+    {
+      string json = @"{""Name"": 1.1}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(typeof(int), reader.ValueType);
+      Assert.AreEqual(1, reader.Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error parsing null value. Line 0, position 0."
+#endif
+      )]
+    public void MatchWithInsufficentCharacters()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"nul"));
+      reader.Read();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error parsing null value. Line 0, position 0."
+#endif
+      )]
+    public void MatchWithWrongCharacters()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"nulz"));
+      reader.Read();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error parsing null value. Line 1, position 4."
+#endif
+      )]
+    public void MatchWithNoTrailingSeperator()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"nullz"));
+      reader.Read();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected end while parsing comment. Line 1, position 6."
+#endif
+      )]
+    public void UnclosedComment()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"/* sdf"));
+      reader.Read();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error parsing comment. Expected: *, got s. Line 1, position 1."
+#endif
+      )]
+    public void BadCommentStart()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader(@"/sdf"));
+      reader.Read();
+    }
+
+    [Test]
+    public void ReadAsDecimal()
+    {
+      string json = @"{""decimal"":-7.92281625142643E+28}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      decimal? d = reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(typeof(decimal), reader.ValueType);
+      Assert.AreEqual(-79228162514264300000000000000m, d);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadAsDecimalFrench()
+    {
+      string json = @"{""decimal"":""9,99""}";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.Culture = new CultureInfo("fr-FR");
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      decimal? d = reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(typeof(decimal), reader.ValueType);
+      Assert.AreEqual(9.99m, d);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void ReadBufferOnControlChar()
+    {
+      string json = @"[
+  {
+    ""Name"": ""Jim"",
+    ""BirthDate"": ""\/Date(978048000000)\/"",
+    ""LastModified"": ""\/Date(978048000000)\/""
+  },
+  {
+    ""Name"": ""Jim"",
+    ""BirthDate"": ""\/Date(978048000000)\/"",
+    ""LastModified"": ""\/Date(978048000000)\/""
+  }
+]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[5]);
+      for (int i = 0; i < 13; i++)
+      {
+        reader.Read();
+      }
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(new DateTime(631136448000000000), reader.Value);
+    }
+
+    [Test]
+    public void ReadBufferOnEndComment()
+    {
+      string json = @"/*comment*/ { /*comment*/
+        ""Name"": /*comment*/ ""Apple"" /*comment*/, /*comment*/
+        ""ExpiryDate"": ""\/Date(1230422400000)\/"",
+        ""Price"": 3.99,
+        ""Sizes"": /*comment*/ [ /*comment*/
+          ""Small"", /*comment*/
+          ""Medium"" /*comment*/,
+          /*comment*/ ""Large""
+        /*comment*/ ] /*comment*/
+      } /*comment*/";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[5]);
+
+      for (int i = 0; i < 26; i++)
+      {
+        Assert.IsTrue(reader.Read());
+      }
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ParseNullStringConstructor()
+    {
+      string json = "new Date\0()";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+      reader.SetCharBuffer(new char[7]);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual("Date", reader.Value);
+      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
+    }
+
+    [Test]
+    public void ParseLineFeedDelimitedConstructor()
+    {
+      string json = "new Date\n()";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual("Date", reader.Value);
+      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
+    }
+
+    [Test]
+    public void ParseArrayWithMissingValues()
+    {
+      string json = "[,,, \n\r\n \0   \r  , ,    ]";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Undefined, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+    }
+
+    [Test]
+    public void ParseBooleanWithNoExtraContent()
+    {
+      string json = "[true ";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.IsTrue(reader.Read());
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected end while parsing constructor. Line 1, position 7."
+#endif
+      )]
+    public void ParseConstructorWithUnexpectedEnd()
+    {
+      string json = "new Dat";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.Read();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected character while parsing constructor: !. Line 1, position 9."
+#endif
+      )]
+    public void ParseConstructorWithUnexpectedCharacter()
+    {
+      string json = "new Date !";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.Read();
+    }
+
+    [Test]
+    public void ParseObjectWithNoEnd()
+    {
+      string json = "{hi:1, ";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.IsTrue(reader.Read());
+      Assert.IsTrue(reader.Read());
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ParseEmptyArray()
+    {
+      string json = "[]";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+    }
+
+    [Test]
+    public void ParseEmptyObject()
+    {
+      string json = "{}";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error parsing boolean value. Line 1, position 4."
+#endif
+      )]
+    public void ParseIncompleteCommentSeperator()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader("true/"));
+
+      reader.Read();
+    }
+
+    [Test]
+    public void ParseEmptyConstructor()
+    {
+      string json = "new Date()";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected character while parsing constructor: ,. Line 1, position 8."
+#endif
+      )]
+    public void ParseConstructorWithBadCharacter()
+    {
+      string json = "new Date,()";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+    }
+
+    [Test]
+    public void ParseContentDelimitedByNonStandardWhitespace()
+    {
+      string json = "\x00a0{\x00a0'h\x00a0i\x00a0'\x00a0:\x00a0[\x00a0true\x00a0,\x00a0new\x00a0Date\x00a0(\x00a0)\x00a0]\x00a0/*\x00a0comment\x00a0*/\x00a0}\x00a0";
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+      
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
+      
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+    
+    [Test]
+    public void ReadContentDelimitedByComments()
+    {
+      string json = @"/*comment*/{/*comment*/Name:/*comment*/true/*comment*/,/*comment*/
+        ""ExpiryDate"":/*comment*/new
+" + StringUtils.LineFeed +
+@"Date
+(/*comment*/null/*comment*/),
+        ""Price"": 3.99,
+        ""Sizes"":/*comment*/[/*comment*/
+          ""Small""/*comment*/]/*comment*/}/*comment*/";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("Name", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
+      Assert.AreEqual(true, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("ExpiryDate", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartConstructor, reader.TokenType);
+      Assert.AreEqual(5, reader.LineNumber);
+      Assert.AreEqual("Date", reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Comment, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndConstructor, reader.TokenType);
+    }
+
+    [Test]
+    public void ParseOctalNumber()
+    {
+      string json = @"010";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(8m, reader.Value);
+    }
+
+    [Test]
+    public void ParseHexNumber()
+    {
+      string json = @"0x20";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(32m, reader.Value);
+    }
+
+    [Test]
+    public void ParseNumbers()
+    {
+      string json = @"[0,1,2 , 3]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Additional text encountered after finished reading JSON content: }. Line 1, position 2."
+#endif
+      )]
+    public void UnexpectedEndTokenWhenParsingOddEndToken()
+    {
+        JsonReader reader = new JsonTextReader(new StringReader(@"{}}"));
+        Assert.IsTrue(reader.Read());
+        Assert.IsTrue(reader.Read());
+        reader.Read();
+    }
+
+    [Test]
+    public void ScientificNotation()
+    {
+      double d;
+
+      d = Convert.ToDouble("6.0221418e23");
+      Console.WriteLine(d.ToString(new CultureInfo("fr-FR")));
+      Console.WriteLine(d.ToString("0.#############################################################################"));
+
+      //CultureInfo info = CultureInfo.GetCultureInfo("fr-FR");
+      //Console.WriteLine(info.NumberFormat.NumberDecimalSeparator);
+
+      string json = @"[0e-10,0E-10,0.25e-5,0.3e10,6.0221418e23]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      reader.Read();
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(0d, reader.Value);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(0d, reader.Value);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(0.0000025d, reader.Value);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(3000000000d, reader.Value);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(602214180000000000000000d, reader.Value);
+
+      reader.Read();
+
+
+      reader = new JsonTextReader(new StringReader(json));
+
+      reader.Read();
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(0m, reader.Value);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(0m, reader.Value);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(0.0000025m, reader.Value);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(3000000000m, reader.Value);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(602214180000000000000000m, reader.Value);
+
+      reader.Read();
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs
@@ -1,828 +1,828 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Xml;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json;
-using System.IO;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Tests
-{
-  [TestFixture]
-  public class JsonTextWriterTest : TestFixtureBase
-  {
-    [Test]
-    public void CloseOutput()
-    {
-      MemoryStream ms = new MemoryStream();
-      JsonTextWriter writer = new JsonTextWriter(new StreamWriter(ms));
-
-      Assert.IsTrue(ms.CanRead);
-      writer.Close();
-      Assert.IsFalse(ms.CanRead);
-
-      ms = new MemoryStream();
-      writer = new JsonTextWriter(new StreamWriter(ms)) { CloseOutput = false };
-
-      Assert.IsTrue(ms.CanRead);
-      writer.Close();
-      Assert.IsTrue(ms.CanRead);
-    }
-    
-    [Test]
-    public void ValueFormatting()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue('@');
-        jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
-        jsonWriter.WriteValue(true);
-        jsonWriter.WriteValue(10);
-        jsonWriter.WriteValue(10.99);
-        jsonWriter.WriteValue(0.99);
-        jsonWriter.WriteValue(0.000000000000000001d);
-        jsonWriter.WriteValue(0.000000000000000001m);
-        jsonWriter.WriteValue((string)null);
-        jsonWriter.WriteValue((object)null);
-        jsonWriter.WriteValue("This is a string.");
-        jsonWriter.WriteNull();
-        jsonWriter.WriteUndefined();
-        jsonWriter.WriteEndArray();
-      }
-
-      string expected = @"[""@"",""\r\n\t\f\b?{\\r\\n\""'"",true,10,10.99,0.99,1E-18,0.000000000000000001,null,null,""This is a string."",null,undefined]";
-      string result = sb.ToString();
-
-      Console.WriteLine("ValueFormatting");
-      Console.WriteLine(result);
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void NullableValueFormatting()
-    {
-      StringWriter sw = new StringWriter();
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue((char?)null);
-        jsonWriter.WriteValue((char?)'c');
-        jsonWriter.WriteValue((bool?)null);
-        jsonWriter.WriteValue((bool?)true);
-        jsonWriter.WriteValue((byte?)null);
-        jsonWriter.WriteValue((byte?)1);
-        jsonWriter.WriteValue((sbyte?)null);
-        jsonWriter.WriteValue((sbyte?)1);
-        jsonWriter.WriteValue((short?)null);
-        jsonWriter.WriteValue((short?)1);
-        jsonWriter.WriteValue((ushort?)null);
-        jsonWriter.WriteValue((ushort?)1);
-        jsonWriter.WriteValue((int?)null);
-        jsonWriter.WriteValue((int?)1);
-        jsonWriter.WriteValue((uint?)null);
-        jsonWriter.WriteValue((uint?)1);
-        jsonWriter.WriteValue((long?)null);
-        jsonWriter.WriteValue((long?)1);
-        jsonWriter.WriteValue((ulong?)null);
-        jsonWriter.WriteValue((ulong?)1);
-        jsonWriter.WriteValue((double?)null);
-        jsonWriter.WriteValue((double?)1.1);
-        jsonWriter.WriteValue((float?)null);
-        jsonWriter.WriteValue((float?)1.1);
-        jsonWriter.WriteValue((decimal?)null);
-        jsonWriter.WriteValue((decimal?)1.1m);
-        jsonWriter.WriteValue((DateTime?)null);
-        jsonWriter.WriteValue((DateTime?)new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc));
-#if !PocketPC && !NET20
-        jsonWriter.WriteValue((DateTimeOffset?)null);
-        jsonWriter.WriteValue((DateTimeOffset?)new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero));
-#endif
-        jsonWriter.WriteEndArray();
-      }
-
-      string json = sw.ToString();
-      string expected;
-
-#if !PocketPC && !NET20
-      expected = @"[null,""c"",null,true,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1.1,null,1.1,null,1.1,null,""1970-01-01T00:00:00Z"",null,""1970-01-01T00:00:00+00:00""]";
-#else
-      expected = @"[null,""c"",null,true,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1.1,null,1.1,null,1.1,null,""1970-01-01T00:00:00Z""]";
-#endif
-
-      Assert.AreEqual(expected, json);
-    }
-
-    [Test]
-    public void WriteValueObjectWithNullable()
-    {
-      StringWriter sw = new StringWriter();
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        char? value = 'c';
-
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue((object)value);
-        jsonWriter.WriteEndArray();
-      }
-
-      string json = sw.ToString();
-      string expected = @"[""c""]";
-
-      Assert.AreEqual(expected, json);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Unsupported type: System.Version. Use the JsonSerializer class to get the object's JSON representation."
-#endif
-      )]
-    public void WriteValueObjectWithUnsupportedValue()
-    {
-      StringWriter sw = new StringWriter();
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue(new Version(1, 1, 1, 1));
-        jsonWriter.WriteEndArray();
-      }
-    }
-
-    [Test]
-    public void StringEscaping()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue(@"""These pretzels are making me thirsty!""");
-        jsonWriter.WriteValue("Jeff's house was burninated.");
-        jsonWriter.WriteValue(@"1. You don't talk about fight club.
-2. You don't talk about fight club.");
-        jsonWriter.WriteValue("35% of\t statistics\n are made\r up.");
-        jsonWriter.WriteEndArray();
-      }
-
-      string expected = @"[""\""These pretzels are making me thirsty!\"""",""Jeff's house was burninated."",""1. You don't talk about fight club.\r\n2. You don't talk about fight club."",""35% of\t statistics\n are made\r up.""]";
-      string result = sb.ToString();
-
-      Console.WriteLine("StringEscaping");
-      Console.WriteLine(result);
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void WriteEnd()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("CPU");
-        jsonWriter.WriteValue("Intel");
-        jsonWriter.WritePropertyName("PSU");
-        jsonWriter.WriteValue("500W");
-        jsonWriter.WritePropertyName("Drives");
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue("DVD read/writer");
-        jsonWriter.WriteComment("(broken)");
-        jsonWriter.WriteValue("500 gigabyte hard drive");
-        jsonWriter.WriteValue("200 gigabype hard drive");
-        jsonWriter.WriteEndObject();
-        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
-      }
-
-      string expected = @"{
-  ""CPU"": ""Intel"",
-  ""PSU"": ""500W"",
-  ""Drives"": [
-    ""DVD read/writer""
-    /*(broken)*/,
-    ""500 gigabyte hard drive"",
-    ""200 gigabype hard drive""
-  ]
-}";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void CloseWithRemainingContent()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("CPU");
-        jsonWriter.WriteValue("Intel");
-        jsonWriter.WritePropertyName("PSU");
-        jsonWriter.WriteValue("500W");
-        jsonWriter.WritePropertyName("Drives");
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue("DVD read/writer");
-        jsonWriter.WriteComment("(broken)");
-        jsonWriter.WriteValue("500 gigabyte hard drive");
-        jsonWriter.WriteValue("200 gigabype hard drive");
-        jsonWriter.Close();
-      }
-
-      string expected = @"{
-  ""CPU"": ""Intel"",
-  ""PSU"": ""500W"",
-  ""Drives"": [
-    ""DVD read/writer""
-    /*(broken)*/,
-    ""500 gigabyte hard drive"",
-    ""200 gigabype hard drive""
-  ]
-}";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void Indenting()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("CPU");
-        jsonWriter.WriteValue("Intel");
-        jsonWriter.WritePropertyName("PSU");
-        jsonWriter.WriteValue("500W");
-        jsonWriter.WritePropertyName("Drives");
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue("DVD read/writer");
-        jsonWriter.WriteComment("(broken)");
-        jsonWriter.WriteValue("500 gigabyte hard drive");
-        jsonWriter.WriteValue("200 gigabype hard drive");
-        jsonWriter.WriteEnd();
-        jsonWriter.WriteEndObject();
-        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
-      }
-
-      // {
-      //   "CPU": "Intel",
-      //   "PSU": "500W",
-      //   "Drives": [
-      //     "DVD read/writer"
-      //     /*(broken)*/,
-      //     "500 gigabyte hard drive",
-      //     "200 gigabype hard drive"
-      //   ]
-      // }
-
-      string expected = @"{
-  ""CPU"": ""Intel"",
-  ""PSU"": ""500W"",
-  ""Drives"": [
-    ""DVD read/writer""
-    /*(broken)*/,
-    ""500 gigabyte hard drive"",
-    ""200 gigabype hard drive""
-  ]
-}";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void State()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
-
-        jsonWriter.WriteStartObject();
-        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
-        Assert.AreEqual("", jsonWriter.Path);
-
-        jsonWriter.WritePropertyName("CPU");
-        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
-        Assert.AreEqual("CPU", jsonWriter.Path);
-
-        jsonWriter.WriteValue("Intel");
-        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
-        Assert.AreEqual("CPU", jsonWriter.Path);
-
-        jsonWriter.WritePropertyName("Drives");
-        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
-        Assert.AreEqual("Drives", jsonWriter.Path);
-
-        jsonWriter.WriteStartArray();
-        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
-
-        jsonWriter.WriteValue("DVD read/writer");
-        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
-        Assert.AreEqual("Drives[0]", jsonWriter.Path);
-
-        jsonWriter.WriteEnd();
-        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
-        Assert.AreEqual("Drives", jsonWriter.Path);
-
-        jsonWriter.WriteEndObject();
-        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
-        Assert.AreEqual("", jsonWriter.Path);
-      }
-    }
-
-    [Test]
-    public void FloatingPointNonFiniteNumbers()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue(double.NaN);
-        jsonWriter.WriteValue(double.PositiveInfinity);
-        jsonWriter.WriteValue(double.NegativeInfinity);
-        jsonWriter.WriteValue(float.NaN);
-        jsonWriter.WriteValue(float.PositiveInfinity);
-        jsonWriter.WriteValue(float.NegativeInfinity);
-        jsonWriter.WriteEndArray();
-
-        jsonWriter.Flush();
-      }
-
-      string expected = @"[
-  NaN,
-  Infinity,
-  -Infinity,
-  NaN,
-  Infinity,
-  -Infinity
-]";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void WriteRawInStart()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-
-        jsonWriter.WriteRaw("[1,2,3,4,5]");
-        jsonWriter.WriteWhitespace("  ");
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue(double.NaN);
-        jsonWriter.WriteEndArray();
-      }
-
-      string expected = @"[1,2,3,4,5]  [
-  NaN
-]";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void WriteRawInArray()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue(double.NaN);
-        jsonWriter.WriteRaw(",[1,2,3,4,5]");
-        jsonWriter.WriteRaw(",[1,2,3,4,5]");
-        jsonWriter.WriteValue(float.NaN);
-        jsonWriter.WriteEndArray();
-      }
-
-      string expected = @"[
-  NaN,[1,2,3,4,5],[1,2,3,4,5],
-  NaN
-]";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void WriteRawInObject()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-
-        jsonWriter.WriteStartObject();
-        jsonWriter.WriteRaw(@"""PropertyName"":[1,2,3,4,5]");
-        jsonWriter.WriteEnd();
-      }
-
-      string expected = @"{""PropertyName"":[1,2,3,4,5]}";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void WriteToken()
-    {
-      JsonTextReader reader = new JsonTextReader(new StringReader("[1,2,3,4,5]"));
-      reader.Read();
-      reader.Read();
-
-      StringWriter sw = new StringWriter();
-      JsonTextWriter writer = new JsonTextWriter(sw);
-      writer.WriteToken(reader);
-
-      Assert.AreEqual("1", sw.ToString());
-    }
-
-    [Test]
-    public void WriteRawValue()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        int i = 0;
-        string rawJson = "[1,2]";
-
-        jsonWriter.WriteStartObject();
-
-        while (i < 3)
-        {
-          jsonWriter.WritePropertyName("d" + i);
-          jsonWriter.WriteRawValue(rawJson);
-
-          i++;
-        }
-
-        jsonWriter.WriteEndObject();
-      }
-
-      Assert.AreEqual(@"{""d0"":[1,2],""d1"":[1,2],""d2"":[1,2]}", sb.ToString());
-    }
-
-    [Test]
-    public void WriteObjectNestedInConstructor()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("con");
-
-        jsonWriter.WriteStartConstructor("Ext.data.JsonStore");
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("aa");
-        jsonWriter.WriteValue("aa");
-        jsonWriter.WriteEndObject();
-        jsonWriter.WriteEndConstructor();
-
-        jsonWriter.WriteEndObject();
-      }
-
-      Assert.AreEqual(@"{""con"":new Ext.data.JsonStore({""aa"":""aa""})}", sb.ToString());
-    }
-
-    [Test]
-    public void WriteFloatingPointNumber()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteStartArray();
-
-        jsonWriter.WriteValue(0.0);
-        jsonWriter.WriteValue(0f);
-        jsonWriter.WriteValue(0.1);
-        jsonWriter.WriteValue(1.0);
-        jsonWriter.WriteValue(1.000001);
-        jsonWriter.WriteValue(0.000001);
-        jsonWriter.WriteValue(double.Epsilon);
-        jsonWriter.WriteValue(double.PositiveInfinity);
-        jsonWriter.WriteValue(double.NegativeInfinity);
-        jsonWriter.WriteValue(double.NaN);
-        jsonWriter.WriteValue(double.MaxValue);
-        jsonWriter.WriteValue(double.MinValue);
-        jsonWriter.WriteValue(float.PositiveInfinity);
-        jsonWriter.WriteValue(float.NegativeInfinity);
-        jsonWriter.WriteValue(float.NaN);
-
-        jsonWriter.WriteEndArray();
-      }
-
-      Assert.AreEqual(@"[0.0,0.0,0.1,1.0,1.000001,1E-06,4.94065645841247E-324,Infinity,-Infinity,NaN,1.7976931348623157E+308,-1.7976931348623157E+308,Infinity,-Infinity,NaN]", sb.ToString());
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonWriterException)
-#if !NETFX_CORE
-      , ExpectedMessage = "No token to close."
-#endif
-      )]
-    public void BadWriteEndArray()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteStartArray();
-
-        jsonWriter.WriteValue(0.0);
-
-        jsonWriter.WriteEndArray();
-        jsonWriter.WriteEndArray();
-      }
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Invalid JavaScript string quote character. Valid quote characters are ' and ""."
-#endif
-      )]
-    public void InvalidQuoteChar()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-        jsonWriter.QuoteChar = '*';
-      }
-    }
-
-    [Test]
-    public void Indentation()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
-
-        jsonWriter.Indentation = 5;
-        Assert.AreEqual(5, jsonWriter.Indentation);
-        jsonWriter.IndentChar = '_';
-        Assert.AreEqual('_', jsonWriter.IndentChar);
-        jsonWriter.QuoteName = true;
-        Assert.AreEqual(true, jsonWriter.QuoteName);
-        jsonWriter.QuoteChar = '\'';
-        Assert.AreEqual('\'', jsonWriter.QuoteChar);
-
-        jsonWriter.WriteStartObject();
-        jsonWriter.WritePropertyName("propertyName");
-        jsonWriter.WriteValue(double.NaN);
-        jsonWriter.WriteEndObject();
-      }
-
-      string expected = @"{
-_____'propertyName': NaN
-}";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void WriteSingleBytes()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      string text = "Hello world.";
-      byte[] data = Encoding.UTF8.GetBytes(text);
-
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
-
-        jsonWriter.WriteValue(data);
-      }
-
-      string expected = @"""SGVsbG8gd29ybGQu""";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-
-      byte[] d2 = Convert.FromBase64String(result.Trim('"'));
-
-      Assert.AreEqual(text, Encoding.UTF8.GetString(d2, 0, d2.Length));
-    }
-
-    [Test]
-    public void WriteBytesInArray()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      string text = "Hello world.";
-      byte[] data = Encoding.UTF8.GetBytes(text);
-
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
-
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue(data);
-        jsonWriter.WriteValue(data);
-        jsonWriter.WriteValue((object)data);
-        jsonWriter.WriteValue((byte[])null);
-        jsonWriter.WriteEndArray();
-      }
-
-      string expected = @"[
-  ""SGVsbG8gd29ybGQu"",
-  ""SGVsbG8gd29ybGQu"",
-  ""SGVsbG8gd29ybGQu"",
-  null
-]";
-      string result = sb.ToString();
-
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void Path()
-    {
-      StringBuilder sb = new StringBuilder();
-      StringWriter sw = new StringWriter(sb);
-
-      string text = "Hello world.";
-      byte[] data = Encoding.UTF8.GetBytes(text);
-
-      using (JsonTextWriter writer = new JsonTextWriter(sw))
-      {
-        writer.Formatting = Formatting.Indented;
-
-        writer.WriteStartArray();
-        Assert.AreEqual("", writer.Path);
-        writer.WriteStartObject();
-        Assert.AreEqual("[0]", writer.Path);
-        writer.WritePropertyName("Property1");
-        Assert.AreEqual("[0].Property1", writer.Path);
-        writer.WriteStartArray();
-        Assert.AreEqual("[0].Property1", writer.Path);
-        writer.WriteValue(1);
-        Assert.AreEqual("[0].Property1[0]", writer.Path);
-        writer.WriteStartArray();
-        Assert.AreEqual("[0].Property1[1]", writer.Path);
-        writer.WriteStartArray();
-        Assert.AreEqual("[0].Property1[1][0]", writer.Path);
-        writer.WriteStartArray();
-        Assert.AreEqual("[0].Property1[1][0][0]", writer.Path);
-        writer.WriteEndObject();
-        Assert.AreEqual("[0]", writer.Path);
-        writer.WriteStartObject();
-        Assert.AreEqual("[1]", writer.Path);
-        writer.WritePropertyName("Property2");
-        Assert.AreEqual("[1].Property2", writer.Path);
-        writer.WriteStartConstructor("Constructor1");
-        Assert.AreEqual("[1].Property2", writer.Path);
-        writer.WriteNull();
-        Assert.AreEqual("[1].Property2[0]", writer.Path);
-        writer.WriteStartArray();
-        Assert.AreEqual("[1].Property2[1]", writer.Path);
-        writer.WriteValue(1);
-        Assert.AreEqual("[1].Property2[1][0]", writer.Path);
-        writer.WriteEnd();
-        Assert.AreEqual("[1].Property2[1]", writer.Path);
-        writer.WriteEndObject();
-        Assert.AreEqual("[1]", writer.Path);
-        writer.WriteEndArray();
-        Assert.AreEqual("", writer.Path);
-      }
-
-      Assert.AreEqual(@"[
-  {
-    ""Property1"": [
-      1,
-      [
-        [
-          []
-        ]
-      ]
-    ]
-  },
-  {
-    ""Property2"": new Constructor1(
-      null,
-      [
-        1
-      ]
-    )
-  }
-]", sb.ToString());
-    }
-
-    [Test]
-    public void BuildStateArray()
-    {
-      JsonWriter.State[][] stateArray = JsonWriter.BuildStateArray();
-
-      var valueStates = JsonWriter.StateArrayTempate[7];
-
-      foreach (JsonToken valueToken in EnumUtils.GetValues(typeof(JsonToken)))
-      {
-        switch (valueToken)
-        {
-          case JsonToken.Integer:
-          case JsonToken.Float:
-          case JsonToken.String:
-          case JsonToken.Boolean:
-          case JsonToken.Null:
-          case JsonToken.Undefined:
-          case JsonToken.Date:
-          case JsonToken.Bytes:
-            Assert.AreEqual(valueStates, stateArray[(int)valueToken], "Error for " + valueToken + " states.");
-            break;
-        }
-      }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json;
+using System.IO;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Tests
+{
+  [TestFixture]
+  public class JsonTextWriterTest : TestFixtureBase
+  {
+    [Test]
+    public void CloseOutput()
+    {
+      MemoryStream ms = new MemoryStream();
+      JsonTextWriter writer = new JsonTextWriter(new StreamWriter(ms));
+
+      Assert.IsTrue(ms.CanRead);
+      writer.Close();
+      Assert.IsFalse(ms.CanRead);
+
+      ms = new MemoryStream();
+      writer = new JsonTextWriter(new StreamWriter(ms)) { CloseOutput = false };
+
+      Assert.IsTrue(ms.CanRead);
+      writer.Close();
+      Assert.IsTrue(ms.CanRead);
+    }
+    
+    [Test]
+    public void ValueFormatting()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue('@');
+        jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
+        jsonWriter.WriteValue(true);
+        jsonWriter.WriteValue(10);
+        jsonWriter.WriteValue(10.99);
+        jsonWriter.WriteValue(0.99);
+        jsonWriter.WriteValue(0.000000000000000001d);
+        jsonWriter.WriteValue(0.000000000000000001m);
+        jsonWriter.WriteValue((string)null);
+        jsonWriter.WriteValue((object)null);
+        jsonWriter.WriteValue("This is a string.");
+        jsonWriter.WriteNull();
+        jsonWriter.WriteUndefined();
+        jsonWriter.WriteEndArray();
+      }
+
+      string expected = @"[""@"",""\r\n\t\f\b?{\\r\\n\""'"",true,10,10.99,0.99,1E-18,0.000000000000000001,null,null,""This is a string."",null,undefined]";
+      string result = sb.ToString();
+
+      Console.WriteLine("ValueFormatting");
+      Console.WriteLine(result);
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void NullableValueFormatting()
+    {
+      StringWriter sw = new StringWriter();
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue((char?)null);
+        jsonWriter.WriteValue((char?)'c');
+        jsonWriter.WriteValue((bool?)null);
+        jsonWriter.WriteValue((bool?)true);
+        jsonWriter.WriteValue((byte?)null);
+        jsonWriter.WriteValue((byte?)1);
+        jsonWriter.WriteValue((sbyte?)null);
+        jsonWriter.WriteValue((sbyte?)1);
+        jsonWriter.WriteValue((short?)null);
+        jsonWriter.WriteValue((short?)1);
+        jsonWriter.WriteValue((ushort?)null);
+        jsonWriter.WriteValue((ushort?)1);
+        jsonWriter.WriteValue((int?)null);
+        jsonWriter.WriteValue((int?)1);
+        jsonWriter.WriteValue((uint?)null);
+        jsonWriter.WriteValue((uint?)1);
+        jsonWriter.WriteValue((long?)null);
+        jsonWriter.WriteValue((long?)1);
+        jsonWriter.WriteValue((ulong?)null);
+        jsonWriter.WriteValue((ulong?)1);
+        jsonWriter.WriteValue((double?)null);
+        jsonWriter.WriteValue((double?)1.1);
+        jsonWriter.WriteValue((float?)null);
+        jsonWriter.WriteValue((float?)1.1);
+        jsonWriter.WriteValue((decimal?)null);
+        jsonWriter.WriteValue((decimal?)1.1m);
+        jsonWriter.WriteValue((DateTime?)null);
+        jsonWriter.WriteValue((DateTime?)new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc));
+#if !PocketPC && !NET20
+        jsonWriter.WriteValue((DateTimeOffset?)null);
+        jsonWriter.WriteValue((DateTimeOffset?)new DateTimeOffset(JsonConvert.InitialJavaScriptDateTicks, TimeSpan.Zero));
+#endif
+        jsonWriter.WriteEndArray();
+      }
+
+      string json = sw.ToString();
+      string expected;
+
+#if !PocketPC && !NET20
+      expected = @"[null,""c"",null,true,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1.1,null,1.1,null,1.1,null,""1970-01-01T00:00:00Z"",null,""1970-01-01T00:00:00+00:00""]";
+#else
+      expected = @"[null,""c"",null,true,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1,null,1.1,null,1.1,null,1.1,null,""1970-01-01T00:00:00Z""]";
+#endif
+
+      Assert.AreEqual(expected, json);
+    }
+
+    [Test]
+    public void WriteValueObjectWithNullable()
+    {
+      StringWriter sw = new StringWriter();
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        char? value = 'c';
+
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue((object)value);
+        jsonWriter.WriteEndArray();
+      }
+
+      string json = sw.ToString();
+      string expected = @"[""c""]";
+
+      Assert.AreEqual(expected, json);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Unsupported type: System.Version. Use the JsonSerializer class to get the object's JSON representation."
+#endif
+      )]
+    public void WriteValueObjectWithUnsupportedValue()
+    {
+      StringWriter sw = new StringWriter();
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue(new Version(1, 1, 1, 1));
+        jsonWriter.WriteEndArray();
+      }
+    }
+
+    [Test]
+    public void StringEscaping()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue(@"""These pretzels are making me thirsty!""");
+        jsonWriter.WriteValue("Jeff's house was burninated.");
+        jsonWriter.WriteValue(@"1. You don't talk about fight club.
+2. You don't talk about fight club.");
+        jsonWriter.WriteValue("35% of\t statistics\n are made\r up.");
+        jsonWriter.WriteEndArray();
+      }
+
+      string expected = @"[""\""These pretzels are making me thirsty!\"""",""Jeff's house was burninated."",""1. You don't talk about fight club.\r\n2. You don't talk about fight club."",""35% of\t statistics\n are made\r up.""]";
+      string result = sb.ToString();
+
+      Console.WriteLine("StringEscaping");
+      Console.WriteLine(result);
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void WriteEnd()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("CPU");
+        jsonWriter.WriteValue("Intel");
+        jsonWriter.WritePropertyName("PSU");
+        jsonWriter.WriteValue("500W");
+        jsonWriter.WritePropertyName("Drives");
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue("DVD read/writer");
+        jsonWriter.WriteComment("(broken)");
+        jsonWriter.WriteValue("500 gigabyte hard drive");
+        jsonWriter.WriteValue("200 gigabype hard drive");
+        jsonWriter.WriteEndObject();
+        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
+      }
+
+      string expected = @"{
+  ""CPU"": ""Intel"",
+  ""PSU"": ""500W"",
+  ""Drives"": [
+    ""DVD read/writer""
+    /*(broken)*/,
+    ""500 gigabyte hard drive"",
+    ""200 gigabype hard drive""
+  ]
+}";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void CloseWithRemainingContent()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("CPU");
+        jsonWriter.WriteValue("Intel");
+        jsonWriter.WritePropertyName("PSU");
+        jsonWriter.WriteValue("500W");
+        jsonWriter.WritePropertyName("Drives");
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue("DVD read/writer");
+        jsonWriter.WriteComment("(broken)");
+        jsonWriter.WriteValue("500 gigabyte hard drive");
+        jsonWriter.WriteValue("200 gigabype hard drive");
+        jsonWriter.Close();
+      }
+
+      string expected = @"{
+  ""CPU"": ""Intel"",
+  ""PSU"": ""500W"",
+  ""Drives"": [
+    ""DVD read/writer""
+    /*(broken)*/,
+    ""500 gigabyte hard drive"",
+    ""200 gigabype hard drive""
+  ]
+}";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void Indenting()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("CPU");
+        jsonWriter.WriteValue("Intel");
+        jsonWriter.WritePropertyName("PSU");
+        jsonWriter.WriteValue("500W");
+        jsonWriter.WritePropertyName("Drives");
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue("DVD read/writer");
+        jsonWriter.WriteComment("(broken)");
+        jsonWriter.WriteValue("500 gigabyte hard drive");
+        jsonWriter.WriteValue("200 gigabype hard drive");
+        jsonWriter.WriteEnd();
+        jsonWriter.WriteEndObject();
+        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
+      }
+
+      // {
+      //   "CPU": "Intel",
+      //   "PSU": "500W",
+      //   "Drives": [
+      //     "DVD read/writer"
+      //     /*(broken)*/,
+      //     "500 gigabyte hard drive",
+      //     "200 gigabype hard drive"
+      //   ]
+      // }
+
+      string expected = @"{
+  ""CPU"": ""Intel"",
+  ""PSU"": ""500W"",
+  ""Drives"": [
+    ""DVD read/writer""
+    /*(broken)*/,
+    ""500 gigabyte hard drive"",
+    ""200 gigabype hard drive""
+  ]
+}";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void State()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
+
+        jsonWriter.WriteStartObject();
+        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
+        Assert.AreEqual("", jsonWriter.Path);
+
+        jsonWriter.WritePropertyName("CPU");
+        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
+        Assert.AreEqual("CPU", jsonWriter.Path);
+
+        jsonWriter.WriteValue("Intel");
+        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
+        Assert.AreEqual("CPU", jsonWriter.Path);
+
+        jsonWriter.WritePropertyName("Drives");
+        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
+        Assert.AreEqual("Drives", jsonWriter.Path);
+
+        jsonWriter.WriteStartArray();
+        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
+
+        jsonWriter.WriteValue("DVD read/writer");
+        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
+        Assert.AreEqual("Drives[0]", jsonWriter.Path);
+
+        jsonWriter.WriteEnd();
+        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
+        Assert.AreEqual("Drives", jsonWriter.Path);
+
+        jsonWriter.WriteEndObject();
+        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
+        Assert.AreEqual("", jsonWriter.Path);
+      }
+    }
+
+    [Test]
+    public void FloatingPointNonFiniteNumbers()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue(double.NaN);
+        jsonWriter.WriteValue(double.PositiveInfinity);
+        jsonWriter.WriteValue(double.NegativeInfinity);
+        jsonWriter.WriteValue(float.NaN);
+        jsonWriter.WriteValue(float.PositiveInfinity);
+        jsonWriter.WriteValue(float.NegativeInfinity);
+        jsonWriter.WriteEndArray();
+
+        jsonWriter.Flush();
+      }
+
+      string expected = @"[
+  NaN,
+  Infinity,
+  -Infinity,
+  NaN,
+  Infinity,
+  -Infinity
+]";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void WriteRawInStart()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+
+        jsonWriter.WriteRaw("[1,2,3,4,5]");
+        jsonWriter.WriteWhitespace("  ");
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue(double.NaN);
+        jsonWriter.WriteEndArray();
+      }
+
+      string expected = @"[1,2,3,4,5]  [
+  NaN
+]";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void WriteRawInArray()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue(double.NaN);
+        jsonWriter.WriteRaw(",[1,2,3,4,5]");
+        jsonWriter.WriteRaw(",[1,2,3,4,5]");
+        jsonWriter.WriteValue(float.NaN);
+        jsonWriter.WriteEndArray();
+      }
+
+      string expected = @"[
+  NaN,[1,2,3,4,5],[1,2,3,4,5],
+  NaN
+]";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void WriteRawInObject()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+
+        jsonWriter.WriteStartObject();
+        jsonWriter.WriteRaw(@"""PropertyName"":[1,2,3,4,5]");
+        jsonWriter.WriteEnd();
+      }
+
+      string expected = @"{""PropertyName"":[1,2,3,4,5]}";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void WriteToken()
+    {
+      JsonTextReader reader = new JsonTextReader(new StringReader("[1,2,3,4,5]"));
+      reader.Read();
+      reader.Read();
+
+      StringWriter sw = new StringWriter();
+      JsonTextWriter writer = new JsonTextWriter(sw);
+      writer.WriteToken(reader);
+
+      Assert.AreEqual("1", sw.ToString());
+    }
+
+    [Test]
+    public void WriteRawValue()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        int i = 0;
+        string rawJson = "[1,2]";
+
+        jsonWriter.WriteStartObject();
+
+        while (i < 3)
+        {
+          jsonWriter.WritePropertyName("d" + i);
+          jsonWriter.WriteRawValue(rawJson);
+
+          i++;
+        }
+
+        jsonWriter.WriteEndObject();
+      }
+
+      Assert.AreEqual(@"{""d0"":[1,2],""d1"":[1,2],""d2"":[1,2]}", sb.ToString());
+    }
+
+    [Test]
+    public void WriteObjectNestedInConstructor()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("con");
+
+        jsonWriter.WriteStartConstructor("Ext.data.JsonStore");
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("aa");
+        jsonWriter.WriteValue("aa");
+        jsonWriter.WriteEndObject();
+        jsonWriter.WriteEndConstructor();
+
+        jsonWriter.WriteEndObject();
+      }
+
+      Assert.AreEqual(@"{""con"":new Ext.data.JsonStore({""aa"":""aa""})}", sb.ToString());
+    }
+
+    [Test]
+    public void WriteFloatingPointNumber()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteStartArray();
+
+        jsonWriter.WriteValue(0.0);
+        jsonWriter.WriteValue(0f);
+        jsonWriter.WriteValue(0.1);
+        jsonWriter.WriteValue(1.0);
+        jsonWriter.WriteValue(1.000001);
+        jsonWriter.WriteValue(0.000001);
+        jsonWriter.WriteValue(double.Epsilon);
+        jsonWriter.WriteValue(double.PositiveInfinity);
+        jsonWriter.WriteValue(double.NegativeInfinity);
+        jsonWriter.WriteValue(double.NaN);
+        jsonWriter.WriteValue(double.MaxValue);
+        jsonWriter.WriteValue(double.MinValue);
+        jsonWriter.WriteValue(float.PositiveInfinity);
+        jsonWriter.WriteValue(float.NegativeInfinity);
+        jsonWriter.WriteValue(float.NaN);
+
+        jsonWriter.WriteEndArray();
+      }
+
+      Assert.AreEqual(@"[0.0,0.0,0.1,1.0,1.000001,1E-06,4.94065645841247E-324,Infinity,-Infinity,NaN,1.7976931348623157E+308,-1.7976931348623157E+308,Infinity,-Infinity,NaN]", sb.ToString());
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonWriterException)
+#if !NETFX_CORE
+      , ExpectedMessage = "No token to close."
+#endif
+      )]
+    public void BadWriteEndArray()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteStartArray();
+
+        jsonWriter.WriteValue(0.0);
+
+        jsonWriter.WriteEndArray();
+        jsonWriter.WriteEndArray();
+      }
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Invalid JavaScript string quote character. Valid quote characters are ' and ""."
+#endif
+      )]
+    public void InvalidQuoteChar()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+        jsonWriter.QuoteChar = '*';
+      }
+    }
+
+    [Test]
+    public void Indentation()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
+
+        jsonWriter.Indentation = 5;
+        Assert.AreEqual(5, jsonWriter.Indentation);
+        jsonWriter.IndentChar = '_';
+        Assert.AreEqual('_', jsonWriter.IndentChar);
+        jsonWriter.QuoteName = true;
+        Assert.AreEqual(true, jsonWriter.QuoteName);
+        jsonWriter.QuoteChar = '\'';
+        Assert.AreEqual('\'', jsonWriter.QuoteChar);
+
+        jsonWriter.WriteStartObject();
+        jsonWriter.WritePropertyName("propertyName");
+        jsonWriter.WriteValue(double.NaN);
+        jsonWriter.WriteEndObject();
+      }
+
+      string expected = @"{
+_____'propertyName': NaN
+}";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void WriteSingleBytes()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      string text = "Hello world.";
+      byte[] data = Encoding.UTF8.GetBytes(text);
+
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
+
+        jsonWriter.WriteValue(data);
+      }
+
+      string expected = @"""SGVsbG8gd29ybGQu""";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+
+      byte[] d2 = Convert.FromBase64String(result.Trim('"'));
+
+      Assert.AreEqual(text, Encoding.UTF8.GetString(d2, 0, d2.Length));
+    }
+
+    [Test]
+    public void WriteBytesInArray()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      string text = "Hello world.";
+      byte[] data = Encoding.UTF8.GetBytes(text);
+
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+        Assert.AreEqual(Formatting.Indented, jsonWriter.Formatting);
+
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue(data);
+        jsonWriter.WriteValue(data);
+        jsonWriter.WriteValue((object)data);
+        jsonWriter.WriteValue((byte[])null);
+        jsonWriter.WriteEndArray();
+      }
+
+      string expected = @"[
+  ""SGVsbG8gd29ybGQu"",
+  ""SGVsbG8gd29ybGQu"",
+  ""SGVsbG8gd29ybGQu"",
+  null
+]";
+      string result = sb.ToString();
+
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void Path()
+    {
+      StringBuilder sb = new StringBuilder();
+      StringWriter sw = new StringWriter(sb);
+
+      string text = "Hello world.";
+      byte[] data = Encoding.UTF8.GetBytes(text);
+
+      using (JsonTextWriter writer = new JsonTextWriter(sw))
+      {
+        writer.Formatting = Formatting.Indented;
+
+        writer.WriteStartArray();
+        Assert.AreEqual("", writer.Path);
+        writer.WriteStartObject();
+        Assert.AreEqual("[0]", writer.Path);
+        writer.WritePropertyName("Property1");
+        Assert.AreEqual("[0].Property1", writer.Path);
+        writer.WriteStartArray();
+        Assert.AreEqual("[0].Property1", writer.Path);
+        writer.WriteValue(1);
+        Assert.AreEqual("[0].Property1[0]", writer.Path);
+        writer.WriteStartArray();
+        Assert.AreEqual("[0].Property1[1]", writer.Path);
+        writer.WriteStartArray();
+        Assert.AreEqual("[0].Property1[1][0]", writer.Path);
+        writer.WriteStartArray();
+        Assert.AreEqual("[0].Property1[1][0][0]", writer.Path);
+        writer.WriteEndObject();
+        Assert.AreEqual("[0]", writer.Path);
+        writer.WriteStartObject();
+        Assert.AreEqual("[1]", writer.Path);
+        writer.WritePropertyName("Property2");
+        Assert.AreEqual("[1].Property2", writer.Path);
+        writer.WriteStartConstructor("Constructor1");
+        Assert.AreEqual("[1].Property2", writer.Path);
+        writer.WriteNull();
+        Assert.AreEqual("[1].Property2[0]", writer.Path);
+        writer.WriteStartArray();
+        Assert.AreEqual("[1].Property2[1]", writer.Path);
+        writer.WriteValue(1);
+        Assert.AreEqual("[1].Property2[1][0]", writer.Path);
+        writer.WriteEnd();
+        Assert.AreEqual("[1].Property2[1]", writer.Path);
+        writer.WriteEndObject();
+        Assert.AreEqual("[1]", writer.Path);
+        writer.WriteEndArray();
+        Assert.AreEqual("", writer.Path);
+      }
+
+      Assert.AreEqual(@"[
+  {
+    ""Property1"": [
+      1,
+      [
+        [
+          []
+        ]
+      ]
+    ]
+  },
+  {
+    ""Property2"": new Constructor1(
+      null,
+      [
+        1
+      ]
+    )
+  }
+]", sb.ToString());
+    }
+
+    [Test]
+    public void BuildStateArray()
+    {
+      JsonWriter.State[][] stateArray = JsonWriter.BuildStateArray();
+
+      var valueStates = JsonWriter.StateArrayTempate[7];
+
+      foreach (JsonToken valueToken in EnumUtils.GetValues(typeof(JsonToken)))
+      {
+        switch (valueToken)
+        {
+          case JsonToken.Integer:
+          case JsonToken.Float:
+          case JsonToken.String:
+          case JsonToken.Boolean:
+          case JsonToken.Null:
+          case JsonToken.Undefined:
+          case JsonToken.Date:
+          case JsonToken.Bytes:
+            Assert.AreEqual(valueStates, stateArray[(int)valueToken], "Error for " + valueToken + " states.");
+            break;
+        }
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonValidatingReaderTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/JsonValidatingReaderTests.cs
@@ -1,1565 +1,1565 @@
-﻿using System;
-using System.Collections.Generic;
-using System.IO;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using System.Xml;
-using System.Xml.Schema;
-using Newtonsoft.Json.Schema;
-using Newtonsoft.Json.Utilities;
-using ValidationEventArgs = Newtonsoft.Json.Schema.ValidationEventArgs;
-
-namespace Newtonsoft.Json.Tests
-{
-  [TestFixture]
-  public class JsonValidatingReaderTests : TestFixtureBase
-  {
-    [Test]
-    public void CheckInnerReader()
-    {
-      string json = "{'name':'James','hobbies':['pie','cake']}";
-      JsonReader reader = new JsonTextReader(new StringReader(json));
-
-      JsonValidatingReader validatingReader = new JsonValidatingReader(reader);
-      Assert.AreEqual(reader, validatingReader.Reader);
-    }
-
-    [Test]
-    public void ValidateTypes()
-    {
-      string schemaJson = @"{
-  ""description"":""A person"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""name"":{""type"":""string""},
-    ""hobbies"":
-    {
-      ""type"":""array"",
-      ""items"": {""type"":""string""}
-    }
-  }
-}";
-
-      string json = @"{'name':""James"",'hobbies':[""pie"",'cake']}";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      JsonSchema schema = JsonSchema.Parse(schemaJson);
-      reader.Schema = schema;
-      Assert.AreEqual(schema, reader.Schema);
-      Assert.AreEqual(0, reader.Depth);
-      Assert.AreEqual("", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-      Assert.AreEqual("", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("name", reader.Value.ToString());
-      Assert.AreEqual("name", reader.Path);
-      Assert.AreEqual(1, reader.Depth);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("James", reader.Value.ToString());
-      Assert.AreEqual(typeof (string), reader.ValueType);
-      Assert.AreEqual('"', reader.QuoteChar);
-      Assert.AreEqual("name", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("hobbies", reader.Value.ToString());
-      Assert.AreEqual('\'', reader.QuoteChar);
-      Assert.AreEqual("hobbies", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-      Assert.AreEqual("hobbies", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("pie", reader.Value.ToString());
-      Assert.AreEqual('"', reader.QuoteChar);
-      Assert.AreEqual("hobbies[0]", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("cake", reader.Value.ToString());
-      Assert.AreEqual("hobbies[1]", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-      Assert.AreEqual("hobbies", reader.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-      Assert.AreEqual("", reader.Path);
-
-      Assert.IsFalse(reader.Read());
-      
-      Assert.IsNull(validationEventArgs);
-    }
-
-    [Test]
-    public void ValidateUnrestrictedArray()
-    {
-      string schemaJson = @"{
-  ""type"":""array""
-}";
-
-      string json = "['pie','cake',['nested1','nested2'],{'nestedproperty1':1.1,'nestedproperty2':[null]}]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("pie", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("cake", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("nested1", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("nested2", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("nestedproperty1", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(1.1, reader.Value);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("nestedproperty2", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNull(validationEventArgs);
-    }
-
-    [Test]
-    public void StringLessThanMinimumLength()
-    {
-      string schemaJson = @"{
-  ""type"":""string"",
-  ""minLength"":5,
-  ""maxLength"":50,
-}";
-
-      string json = "'pie'";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("String 'pie' is less than minimum length of 5. Line 1, position 5.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void StringGreaterThanMaximumLength()
-    {
-      string schemaJson = @"{
-  ""type"":""string"",
-  ""minLength"":5,
-  ""maxLength"":10
-}";
-
-      string json = "'The quick brown fox jumps over the lazy dog.'";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("String 'The quick brown fox jumps over the lazy dog.' exceeds maximum length of 10. Line 1, position 46.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void StringIsNotInEnum()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""string"",
-    ""enum"":[""one"",""two""]
-  },
-  ""maxItems"":3
-}";
-
-      string json = "['one','two','THREE']";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(@"Value ""THREE"" is not defined in enum. Line 1, position 20.", validationEventArgs.Message);
-      Assert.AreEqual("[2]", validationEventArgs.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void StringDoesNotMatchPattern()
-    {
-      string schemaJson = @"{
-  ""type"":""string"",
-  ""pattern"":""foo""
-}";
-
-      string json = "'The quick brown fox jumps over the lazy dog.'";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("String 'The quick brown fox jumps over the lazy dog.' does not match regex pattern 'foo'. Line 1, position 46.", validationEventArgs.Message);
-      Assert.AreEqual("", validationEventArgs.Path);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void IntegerGreaterThanMaximumValue()
-    {
-      string schemaJson = @"{
-  ""type"":""integer"",
-  ""maximum"":5
-}";
-
-      string json = "10";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual("Integer 10 exceeds maximum value of 5. Line 1, position 2.", validationEventArgs.Message);
-      Assert.AreEqual("", validationEventArgs.Path);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void ThrowExceptionWhenNoValidationEventHandler()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 exceeds maximum value of 5. Line 1, position 2.",
-      () =>
-      {
-        string schemaJson = @"{
-  ""type"":""integer"",
-  ""maximum"":5
-}";
-
-        JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader("10")));
-        reader.Schema = JsonSchema.Parse(schemaJson);
-
-        Assert.IsTrue(reader.Read());
-      });
-    }
-
-    [Test]
-    public void IntegerLessThanMinimumValue()
-    {
-      string schemaJson = @"{
-  ""type"":""integer"",
-  ""minimum"":5
-}";
-
-      string json = "1";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual("Integer 1 is less than minimum value of 5. Line 1, position 1.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void IntegerIsNotInEnum()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""integer"",
-    ""enum"":[1,2]
-  },
-  ""maxItems"":3
-}";
-
-      string json = "[1,2,3]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(@"Value 3 is not defined in enum. Line 1, position 6.", validationEventArgs.Message);
-      Assert.AreEqual("[2]", validationEventArgs.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void FloatGreaterThanMaximumValue()
-    {
-      string schemaJson = @"{
-  ""type"":""number"",
-  ""maximum"":5
-}";
-
-      string json = "10.0";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual("Float 10.0 exceeds maximum value of 5. Line 1, position 4.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void FloatLessThanMinimumValue()
-    {
-      string schemaJson = @"{
-  ""type"":""number"",
-  ""minimum"":5
-}";
-
-      string json = "1.1";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual("Float 1.1 is less than minimum value of 5. Line 1, position 3.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void FloatIsNotInEnum()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""number"",
-    ""enum"":[1.1,2.2]
-  },
-  ""maxItems"":3
-}";
-
-      string json = "[1.1,2.2,3.0]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(@"Value 3.0 is not defined in enum. Line 1, position 12.", validationEventArgs.Message);
-      Assert.AreEqual("[2]", validationEventArgs.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void FloatExceedsMaxDecimalPlaces()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""number"",
-    ""divisibleBy"":0.1
-  }
-}";
-
-      string json = "[1.1,2.2,4.001]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(@"Float 4.001 is not evenly divisible by 0.1. Line 1, position 14.", validationEventArgs.Message);
-      Assert.AreEqual("[2]", validationEventArgs.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void IntValidForNumber()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""number""
-  }
-}";
-
-      string json = "[1]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNull(validationEventArgs);
-    }
-
-    [Test]
-    public void NullNotInEnum()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""null"",
-    ""enum"":[]
-  },
-  ""maxItems"":3
-}";
-
-      string json = "[null]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.AreEqual(@"Value null is not defined in enum. Line 1, position 5.", validationEventArgs.Message);
-      Assert.AreEqual("[0]", validationEventArgs.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void BooleanNotInEnum()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""boolean"",
-    ""enum"":[true]
-  },
-  ""maxItems"":3
-}";
-
-      string json = "[true,false]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
-      Assert.AreEqual(@"Value false is not defined in enum. Line 1, position 11.", validationEventArgs.Message);
-      Assert.AreEqual("[1]", validationEventArgs.Path);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void ArrayCountGreaterThanMaximumItems()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""minItems"":2,
-  ""maxItems"":3
-}";
-
-      string json = "[null,null,null,null]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-      Assert.AreEqual("Array item count 4 exceeds maximum count of 3. Line 1, position 21.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void ArrayCountLessThanMinimumItems()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""minItems"":2,
-  ""maxItems"":3
-}";
-
-      string json = "[null]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-      Assert.AreEqual("Array item count 1 is less than minimum count of 2. Line 1, position 6.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void InvalidDataType()
-    {
-      string schemaJson = @"{
-  ""type"":""string"",
-  ""minItems"":2,
-  ""maxItems"":3,
-  ""items"":{}
-}";
-
-      string json = "[null,null,null,null]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-      Assert.AreEqual(@"Invalid type. Expected String but got Array. Line 1, position 1.", validationEventArgs.Message);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void StringDisallowed()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""disallow"":[""number""]
-  },
-  ""maxItems"":3
-}";
-
-      string json = "['pie',1.1]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(@"Type Float is disallowed. Line 1, position 10.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void MissingRequiredProperties()
-    {
-      string schemaJson = @"{
-  ""description"":""A person"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""name"":{""type"":""string""},
-    ""hobbies"":{""type"":""string"",""required"":true},
-    ""age"":{""type"":""integer"",""required"":true}
-  }
-}";
-
-      string json = "{'name':'James'}";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("name", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("James", reader.Value.ToString());
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-      Assert.AreEqual("Required properties are missing from object: hobbies, age. Line 1, position 16.", validationEventArgs.Message);
-      Assert.AreEqual("", validationEventArgs.Path);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void MissingNonRequiredProperties()
-    {
-      string schemaJson = @"{
-  ""description"":""A person"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""name"":{""type"":""string"",""required"":true},
-    ""hobbies"":{""type"":""string"",""required"":false},
-    ""age"":{""type"":""integer""}
-  }
-}";
-
-      string json = "{'name':'James'}";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("name", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("James", reader.Value.ToString());
-      Assert.IsNull(validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsNull(validationEventArgs);
-    }
-
-    [Test]
-    public void DisableAdditionalProperties()
-    {
-      string schemaJson = @"{
-  ""description"":""A person"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""name"":{""type"":""string""}
-  },
-  ""additionalProperties"":false
-}";
-
-      string json = "{'name':'James','additionalProperty1':null,'additionalProperty2':null}";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("name", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("James", reader.Value.ToString());
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("additionalProperty1", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.AreEqual(null, reader.Value);
-      Assert.AreEqual("Property 'additionalProperty1' has not been defined and the schema does not allow additional properties. Line 1, position 38.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("additionalProperty2", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.AreEqual(null, reader.Value);
-      Assert.AreEqual("Property 'additionalProperty2' has not been defined and the schema does not allow additional properties. Line 1, position 65.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    [Test]
-    public void ExtendsStringGreaterThanMaximumLength()
-    {
-      string schemaJson = @"{
-  ""extends"":{
-    ""type"":""string"",
-    ""minLength"":5,
-    ""maxLength"":10
-  },
-  ""maxLength"":9
-}";
-
-      List<string> errors = new List<string>();
-      string json = "'The quick brown fox jumps over the lazy dog.'";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) =>
-        {
-          validationEventArgs = args;
-          errors.Add(validationEventArgs.Message);
-        };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual(1, errors.Count);
-      Assert.AreEqual("String 'The quick brown fox jumps over the lazy dog.' exceeds maximum length of 9. Line 1, position 46.", errors[0]);
-
-      Assert.IsNotNull(validationEventArgs);
-    }
-
-    private JsonSchema GetExtendedSchema()
-    {
-      string first = @"{
-  ""id"":""first"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""firstproperty"":{""type"":""string"",""required"":true}
-  },
-  ""additionalProperties"":{}
-}";
-
-      string second = @"{
-  ""id"":""second"",
-  ""type"":""object"",
-  ""extends"":{""$ref"":""first""},
-  ""properties"":
-  {
-    ""secondproperty"":{""type"":""string"",""required"":true}
-  },
-  ""additionalProperties"":false
-}";
-
-      JsonSchemaResolver resolver = new JsonSchemaResolver();
-      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
-      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
-
-      return secondSchema;
-    }
-
-    [Test]
-    public void ExtendsDisallowAdditionProperties()
-    {
-      string json = "{'firstproperty':'blah','secondproperty':'blah2','additional':'blah3','additional2':'blah4'}";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = GetExtendedSchema();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("firstproperty", reader.Value.ToString());
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("blah", reader.Value.ToString());
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("secondproperty", reader.Value.ToString());
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("blah2", reader.Value.ToString());
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("additional", reader.Value.ToString());
-      Assert.AreEqual("Property 'additional' has not been defined and the schema does not allow additional properties. Line 1, position 62.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("blah3", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("additional2", reader.Value.ToString());
-      Assert.AreEqual("Property 'additional2' has not been defined and the schema does not allow additional properties. Line 1, position 84.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("blah4", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ExtendsMissingRequiredProperties()
-    {
-      string json = "{}";
-
-      List<string> errors = new List<string>();
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { errors.Add(args.Message); };
-      reader.Schema = GetExtendedSchema();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.AreEqual(1, errors.Count);
-      Assert.AreEqual("Required properties are missing from object: secondproperty, firstproperty. Line 1, position 2.", errors[0]);
-    }
-
-    [Test]
-    public void NoAdditionalProperties()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"": [{""type"":""string""},{""type"":""integer""}],
-  ""additionalProperties"": false
-}";
-
-      string json = @"[1, 'a', null]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual("Invalid type. Expected String but got Integer. Line 1, position 2.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("Invalid type. Expected Integer but got String. Line 1, position 7.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.AreEqual("Index 3 has not been defined and the schema does not allow additional items. Line 1, position 13.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void PatternPropertiesNoAdditionalProperties()
-    {
-      string schemaJson = @"{
-  ""type"":""object"",
-  ""patternProperties"": {
-     ""hi"": {""type"":""string""},
-     ""ho"": {""type"":""string""}
-  },
-  ""additionalProperties"": false
-}";
-
-      string json = @"{
-  ""hi"": ""A string!"",
-  ""hide"": ""A string!"",
-  ""ho"": 1,
-  ""hey"": ""A string!""
-}";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual("Invalid type. Expected String but got Integer. Line 4, position 10.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("Property 'hey' has not been defined and the schema does not allow additional properties. Line 5, position 9.", validationEventArgs.Message);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void ExtendedComplex()
-    {
-      string first = @"{
-  ""id"":""first"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""firstproperty"":{""type"":""string""},
-    ""secondproperty"":{""type"":""string"",""maxLength"":10},
-    ""thirdproperty"":{
-      ""type"":""object"",
-      ""properties"":
-      {
-        ""thirdproperty_firstproperty"":{""type"":""string"",""maxLength"":10,""minLength"":7}
-      }
-    }
-  },
-  ""additionalProperties"":{}
-}";
-
-      string second = @"{
-  ""id"":""second"",
-  ""type"":""object"",
-  ""extends"":{""$ref"":""first""},
-  ""properties"":
-  {
-    ""secondproperty"":{""type"":""any""},
-    ""thirdproperty"":{
-      ""extends"":{
-        ""properties"":
-        {
-          ""thirdproperty_firstproperty"":{""maxLength"":9,""minLength"":6,""pattern"":""hi2u""}
-        },
-        ""additionalProperties"":{""maxLength"":9,""minLength"":6,""enum"":[""one"",""two""]}
-      },
-      ""type"":""object"",
-      ""properties"":
-      {
-        ""thirdproperty_firstproperty"":{""pattern"":""hi""}
-      },
-      ""additionalProperties"":{""type"":""string"",""enum"":[""two"",""three""]}
-    },
-    ""fourthproperty"":{""type"":""string""}
-  },
-  ""additionalProperties"":false
-}";
-
-      JsonSchemaResolver resolver = new JsonSchemaResolver();
-      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
-      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
-
-      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
-
-      string json = @"{
-  'firstproperty':'blahblahblahblahblahblah',
-  'secondproperty':'secasecasecasecaseca',
-  'thirdproperty':{
-    'thirdproperty_firstproperty':'aaa',
-    'additional':'three'
-  }
-}";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-      List<string> errors = new List<string>();
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) =>
-        {
-          validationEventArgs = args;
-          errors.Add(validationEventArgs.Path + " - " + validationEventArgs.Message);
-        };
-      reader.Schema = secondSchema;
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("firstproperty", reader.Value.ToString());
-      Assert.AreEqual(null, validationEventArgs);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("blahblahblahblahblahblah", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("secondproperty", reader.Value.ToString());
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("secasecasecasecaseca", reader.Value.ToString());
-      Assert.AreEqual(1, errors.Count);
-      Assert.AreEqual("secondproperty - String 'secasecasecasecaseca' exceeds maximum length of 10. Line 3, position 42.", errors[0]);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("thirdproperty", reader.Value.ToString());
-      Assert.AreEqual(1, errors.Count);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-      Assert.AreEqual(1, errors.Count);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("thirdproperty_firstproperty", reader.Value.ToString());
-      Assert.AreEqual(1, errors.Count);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("aaa", reader.Value.ToString());
-      Assert.AreEqual(4, errors.Count);
-      Assert.AreEqual("thirdproperty.thirdproperty_firstproperty - String 'aaa' is less than minimum length of 7. Line 5, position 40.", errors[1]);
-      Assert.AreEqual("thirdproperty.thirdproperty_firstproperty - String 'aaa' does not match regex pattern 'hi'. Line 5, position 40.", errors[2]);
-      Assert.AreEqual("thirdproperty.thirdproperty_firstproperty - String 'aaa' does not match regex pattern 'hi2u'. Line 5, position 40.", errors[3]);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-      Assert.AreEqual("additional", reader.Value.ToString());
-      Assert.AreEqual(4, errors.Count);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-      Assert.AreEqual("three", reader.Value.ToString());
-      Assert.AreEqual(5, errors.Count);
-      Assert.AreEqual("thirdproperty.additional - String 'three' is less than minimum length of 6. Line 6, position 25.", errors[4]);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void DuplicateErrorsTest()
-    {
-      string schema = @"{
-  ""id"":""ErrorDemo.Database"",
-  ""properties"":{
-    ""ErrorDemoDatabase"":{
-      ""type"":""object"",
-      ""required"":true,
-      ""properties"":{
-        ""URL"":{
-          ""type"":""string"",
-          ""required"":true
-        },
-        ""Version"":{
-          ""type"":""string"",
-          ""required"":true
-        },
-        ""Date"":{
-          ""type"":""string"",
-          ""format"":""date-time"",
-          ""required"":true
-        },
-        ""MACLevels"":{
-          ""type"":""object"",
-          ""required"":true,
-          ""properties"":{
-            ""MACLevel"":{
-              ""type"":""array"",
-              ""required"":true,
-              ""items"":[
-                {
-                  ""required"":true,
-                  ""properties"":{
-                    ""IDName"":{
-                      ""type"":""string"",
-                      ""required"":true
-                    },
-                    ""Order"":{
-                      ""type"":""string"",
-                      ""required"":true
-                    },
-                    ""IDDesc"":{
-                      ""type"":""string"",
-                      ""required"":true
-                    },
-                    ""IsActive"":{
-                      ""type"":""string"",
-                      ""required"":true
-                    }
-                  }
-                }
-              ]
-            }
-          }
-        }
-      }
-    }
-  }
-}";
-
-      string json = @"{
-  ""ErrorDemoDatabase"":{
-    ""URL"":""localhost:3164"",
-    ""Version"":""1.0"",
-    ""Date"":""6.23.2010, 9:35:18.121"",
-    ""MACLevels"":{
-      ""MACLevel"":[
-        {
-          ""@IDName"":""Developer"",
-          ""Order"":""0"",
-          ""IDDesc"":""DeveloperDesc"",
-          ""IsActive"":""True""
-        },
-        {
-          ""IDName"":""Technician"",
-          ""Order"":""1"",
-          ""IDDesc"":""TechnicianDesc"",
-          ""IsActive"":""True""
-        },
-        {
-          ""IDName"":""Administrator"",
-          ""Order"":""2"",
-          ""IDDesc"":""AdministratorDesc"",
-          ""IsActive"":""True""
-        },
-        {
-          ""IDName"":""PowerUser"",
-          ""Order"":""3"",
-          ""IDDesc"":""PowerUserDesc"",
-          ""IsActive"":""True""
-        },
-        {
-          ""IDName"":""Operator"",
-          ""Order"":""4"",
-          ""IDDesc"":""OperatorDesc"",
-          ""IsActive"":""True""
-        }
-      ]
-    }
-  }
-}";
-
-      IList<ValidationEventArgs> validationEventArgs = new List<ValidationEventArgs>();
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) =>
-        {
-          validationEventArgs.Add(args);
-        };
-      reader.Schema = JsonSchema.Parse(schema);
-
-      while (reader.Read())
-      {
-      }
-
-      Assert.AreEqual(1, validationEventArgs.Count);
-    }
-
-    [Test]
-    public void ReadAsBytes()
-    {
-      JsonSchema s = new JsonSchemaGenerator().Generate(typeof (byte[]));
-
-      byte[] data = Encoding.UTF8.GetBytes("Hello world");
-
-      JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"""" + Convert.ToBase64String(data) + @"""")))
-        {
-          Schema = s
-        };
-      byte[] bytes = reader.ReadAsBytes();
-
-      CollectionAssert.AreEquivalent(data, bytes);
-    }
-
-    [Test]
-    public void ReadAsInt32()
-    {
-      JsonSchema s = new JsonSchemaGenerator().Generate(typeof (int));
-
-      JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"1")))
-        {
-          Schema = s
-        };
-      int? i = reader.ReadAsInt32();
-
-      Assert.AreEqual(1, i);
-    }
-
-    [Test]
-    public void ReadAsInt32Failure()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Integer 5 exceeds maximum value of 2. Line 1, position 1.",
-      () =>
-      {
-        JsonSchema s = new JsonSchemaGenerator().Generate(typeof(int));
-        s.Maximum = 2;
-
-        JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"5")))
-        {
-          Schema = s
-        };
-        reader.ReadAsInt32();
-      });
-    }
-
-    [Test]
-    public void ReadAsDecimal()
-    {
-      JsonSchema s = new JsonSchemaGenerator().Generate(typeof (decimal));
-
-      JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"1.5")))
-        {
-          Schema = s
-        };
-      decimal? d = reader.ReadAsDecimal();
-
-      Assert.AreEqual(1.5m, d);
-    }
-
-    [Test]
-    public void ReadAsDecimalFailure()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Float 5.5 is not evenly divisible by 1. Line 1, position 3.",
-      () =>
-      {
-        JsonSchema s = new JsonSchemaGenerator().Generate(typeof(decimal));
-        s.DivisibleBy = 1;
-
-        JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"5.5")))
-        {
-          Schema = s
-        };
-        reader.ReadAsDecimal();
-      });
-    }
-
-    [Test]
-    public void ReadAsInt32FromSerializer()
-    {
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader("[1,2,3]")));
-      reader.Schema = new JsonSchemaGenerator().Generate(typeof(int[]));
-      int[] values = new JsonSerializer().Deserialize<int[]>(reader);
-
-      Assert.AreEqual(3, values.Length);
-      Assert.AreEqual(1, values[0]);
-      Assert.AreEqual(2, values[1]);
-      Assert.AreEqual(3, values[2]);
-    }
-
-    [Test]
-    public void ReadAsInt32InArray()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""integer""
-  },
-  ""maxItems"":1
-}";
-
-      string json = "[1,2]";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
-      Assert.AreEqual("Array item count 2 exceeds maximum count of 1. Line 1, position 5.", validationEventArgs.Message);
-      Assert.AreEqual("", validationEventArgs.Path);
-    }
-
-    [Test]
-    public void ReadAsInt32InArrayIncomplete()
-    {
-      string schemaJson = @"{
-  ""type"":""array"",
-  ""items"":{
-    ""type"":""integer""
-  },
-  ""maxItems"":1
-}";
-
-      string json = "[1,2";
-
-      Json.Schema.ValidationEventArgs validationEventArgs = null;
-
-      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
-      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
-      reader.Schema = JsonSchema.Parse(schemaJson);
-
-      reader.Read();
-      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.None, reader.TokenType);
-      Assert.AreEqual(null, validationEventArgs);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.IO;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using System.Xml;
+using System.Xml.Schema;
+using Newtonsoft.Json.Schema;
+using Newtonsoft.Json.Utilities;
+using ValidationEventArgs = Newtonsoft.Json.Schema.ValidationEventArgs;
+
+namespace Newtonsoft.Json.Tests
+{
+  [TestFixture]
+  public class JsonValidatingReaderTests : TestFixtureBase
+  {
+    [Test]
+    public void CheckInnerReader()
+    {
+      string json = "{'name':'James','hobbies':['pie','cake']}";
+      JsonReader reader = new JsonTextReader(new StringReader(json));
+
+      JsonValidatingReader validatingReader = new JsonValidatingReader(reader);
+      Assert.AreEqual(reader, validatingReader.Reader);
+    }
+
+    [Test]
+    public void ValidateTypes()
+    {
+      string schemaJson = @"{
+  ""description"":""A person"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""name"":{""type"":""string""},
+    ""hobbies"":
+    {
+      ""type"":""array"",
+      ""items"": {""type"":""string""}
+    }
+  }
+}";
+
+      string json = @"{'name':""James"",'hobbies':[""pie"",'cake']}";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      JsonSchema schema = JsonSchema.Parse(schemaJson);
+      reader.Schema = schema;
+      Assert.AreEqual(schema, reader.Schema);
+      Assert.AreEqual(0, reader.Depth);
+      Assert.AreEqual("", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+      Assert.AreEqual("", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("name", reader.Value.ToString());
+      Assert.AreEqual("name", reader.Path);
+      Assert.AreEqual(1, reader.Depth);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("James", reader.Value.ToString());
+      Assert.AreEqual(typeof (string), reader.ValueType);
+      Assert.AreEqual('"', reader.QuoteChar);
+      Assert.AreEqual("name", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("hobbies", reader.Value.ToString());
+      Assert.AreEqual('\'', reader.QuoteChar);
+      Assert.AreEqual("hobbies", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+      Assert.AreEqual("hobbies", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("pie", reader.Value.ToString());
+      Assert.AreEqual('"', reader.QuoteChar);
+      Assert.AreEqual("hobbies[0]", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("cake", reader.Value.ToString());
+      Assert.AreEqual("hobbies[1]", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+      Assert.AreEqual("hobbies", reader.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+      Assert.AreEqual("", reader.Path);
+
+      Assert.IsFalse(reader.Read());
+      
+      Assert.IsNull(validationEventArgs);
+    }
+
+    [Test]
+    public void ValidateUnrestrictedArray()
+    {
+      string schemaJson = @"{
+  ""type"":""array""
+}";
+
+      string json = "['pie','cake',['nested1','nested2'],{'nestedproperty1':1.1,'nestedproperty2':[null]}]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("pie", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("cake", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("nested1", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("nested2", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("nestedproperty1", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(1.1, reader.Value);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("nestedproperty2", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNull(validationEventArgs);
+    }
+
+    [Test]
+    public void StringLessThanMinimumLength()
+    {
+      string schemaJson = @"{
+  ""type"":""string"",
+  ""minLength"":5,
+  ""maxLength"":50,
+}";
+
+      string json = "'pie'";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("String 'pie' is less than minimum length of 5. Line 1, position 5.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void StringGreaterThanMaximumLength()
+    {
+      string schemaJson = @"{
+  ""type"":""string"",
+  ""minLength"":5,
+  ""maxLength"":10
+}";
+
+      string json = "'The quick brown fox jumps over the lazy dog.'";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("String 'The quick brown fox jumps over the lazy dog.' exceeds maximum length of 10. Line 1, position 46.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void StringIsNotInEnum()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""string"",
+    ""enum"":[""one"",""two""]
+  },
+  ""maxItems"":3
+}";
+
+      string json = "['one','two','THREE']";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(@"Value ""THREE"" is not defined in enum. Line 1, position 20.", validationEventArgs.Message);
+      Assert.AreEqual("[2]", validationEventArgs.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void StringDoesNotMatchPattern()
+    {
+      string schemaJson = @"{
+  ""type"":""string"",
+  ""pattern"":""foo""
+}";
+
+      string json = "'The quick brown fox jumps over the lazy dog.'";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("String 'The quick brown fox jumps over the lazy dog.' does not match regex pattern 'foo'. Line 1, position 46.", validationEventArgs.Message);
+      Assert.AreEqual("", validationEventArgs.Path);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void IntegerGreaterThanMaximumValue()
+    {
+      string schemaJson = @"{
+  ""type"":""integer"",
+  ""maximum"":5
+}";
+
+      string json = "10";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual("Integer 10 exceeds maximum value of 5. Line 1, position 2.", validationEventArgs.Message);
+      Assert.AreEqual("", validationEventArgs.Path);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void ThrowExceptionWhenNoValidationEventHandler()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 exceeds maximum value of 5. Line 1, position 2.",
+      () =>
+      {
+        string schemaJson = @"{
+  ""type"":""integer"",
+  ""maximum"":5
+}";
+
+        JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader("10")));
+        reader.Schema = JsonSchema.Parse(schemaJson);
+
+        Assert.IsTrue(reader.Read());
+      });
+    }
+
+    [Test]
+    public void IntegerLessThanMinimumValue()
+    {
+      string schemaJson = @"{
+  ""type"":""integer"",
+  ""minimum"":5
+}";
+
+      string json = "1";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual("Integer 1 is less than minimum value of 5. Line 1, position 1.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void IntegerIsNotInEnum()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""integer"",
+    ""enum"":[1,2]
+  },
+  ""maxItems"":3
+}";
+
+      string json = "[1,2,3]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(@"Value 3 is not defined in enum. Line 1, position 6.", validationEventArgs.Message);
+      Assert.AreEqual("[2]", validationEventArgs.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void FloatGreaterThanMaximumValue()
+    {
+      string schemaJson = @"{
+  ""type"":""number"",
+  ""maximum"":5
+}";
+
+      string json = "10.0";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual("Float 10.0 exceeds maximum value of 5. Line 1, position 4.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void FloatLessThanMinimumValue()
+    {
+      string schemaJson = @"{
+  ""type"":""number"",
+  ""minimum"":5
+}";
+
+      string json = "1.1";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual("Float 1.1 is less than minimum value of 5. Line 1, position 3.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void FloatIsNotInEnum()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""number"",
+    ""enum"":[1.1,2.2]
+  },
+  ""maxItems"":3
+}";
+
+      string json = "[1.1,2.2,3.0]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(@"Value 3.0 is not defined in enum. Line 1, position 12.", validationEventArgs.Message);
+      Assert.AreEqual("[2]", validationEventArgs.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void FloatExceedsMaxDecimalPlaces()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""number"",
+    ""divisibleBy"":0.1
+  }
+}";
+
+      string json = "[1.1,2.2,4.001]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(@"Float 4.001 is not evenly divisible by 0.1. Line 1, position 14.", validationEventArgs.Message);
+      Assert.AreEqual("[2]", validationEventArgs.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void IntValidForNumber()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""number""
+  }
+}";
+
+      string json = "[1]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNull(validationEventArgs);
+    }
+
+    [Test]
+    public void NullNotInEnum()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""null"",
+    ""enum"":[]
+  },
+  ""maxItems"":3
+}";
+
+      string json = "[null]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.AreEqual(@"Value null is not defined in enum. Line 1, position 5.", validationEventArgs.Message);
+      Assert.AreEqual("[0]", validationEventArgs.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void BooleanNotInEnum()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""boolean"",
+    ""enum"":[true]
+  },
+  ""maxItems"":3
+}";
+
+      string json = "[true,false]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Boolean, reader.TokenType);
+      Assert.AreEqual(@"Value false is not defined in enum. Line 1, position 11.", validationEventArgs.Message);
+      Assert.AreEqual("[1]", validationEventArgs.Path);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void ArrayCountGreaterThanMaximumItems()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""minItems"":2,
+  ""maxItems"":3
+}";
+
+      string json = "[null,null,null,null]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+      Assert.AreEqual("Array item count 4 exceeds maximum count of 3. Line 1, position 21.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void ArrayCountLessThanMinimumItems()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""minItems"":2,
+  ""maxItems"":3
+}";
+
+      string json = "[null]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+      Assert.AreEqual("Array item count 1 is less than minimum count of 2. Line 1, position 6.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void InvalidDataType()
+    {
+      string schemaJson = @"{
+  ""type"":""string"",
+  ""minItems"":2,
+  ""maxItems"":3,
+  ""items"":{}
+}";
+
+      string json = "[null,null,null,null]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+      Assert.AreEqual(@"Invalid type. Expected String but got Array. Line 1, position 1.", validationEventArgs.Message);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void StringDisallowed()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""disallow"":[""number""]
+  },
+  ""maxItems"":3
+}";
+
+      string json = "['pie',1.1]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(@"Type Float is disallowed. Line 1, position 10.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void MissingRequiredProperties()
+    {
+      string schemaJson = @"{
+  ""description"":""A person"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""name"":{""type"":""string""},
+    ""hobbies"":{""type"":""string"",""required"":true},
+    ""age"":{""type"":""integer"",""required"":true}
+  }
+}";
+
+      string json = "{'name':'James'}";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("name", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("James", reader.Value.ToString());
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+      Assert.AreEqual("Required properties are missing from object: hobbies, age. Line 1, position 16.", validationEventArgs.Message);
+      Assert.AreEqual("", validationEventArgs.Path);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void MissingNonRequiredProperties()
+    {
+      string schemaJson = @"{
+  ""description"":""A person"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""name"":{""type"":""string"",""required"":true},
+    ""hobbies"":{""type"":""string"",""required"":false},
+    ""age"":{""type"":""integer""}
+  }
+}";
+
+      string json = "{'name':'James'}";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("name", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("James", reader.Value.ToString());
+      Assert.IsNull(validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsNull(validationEventArgs);
+    }
+
+    [Test]
+    public void DisableAdditionalProperties()
+    {
+      string schemaJson = @"{
+  ""description"":""A person"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""name"":{""type"":""string""}
+  },
+  ""additionalProperties"":false
+}";
+
+      string json = "{'name':'James','additionalProperty1':null,'additionalProperty2':null}";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("name", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("James", reader.Value.ToString());
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("additionalProperty1", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.AreEqual(null, reader.Value);
+      Assert.AreEqual("Property 'additionalProperty1' has not been defined and the schema does not allow additional properties. Line 1, position 38.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("additionalProperty2", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.AreEqual(null, reader.Value);
+      Assert.AreEqual("Property 'additionalProperty2' has not been defined and the schema does not allow additional properties. Line 1, position 65.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    [Test]
+    public void ExtendsStringGreaterThanMaximumLength()
+    {
+      string schemaJson = @"{
+  ""extends"":{
+    ""type"":""string"",
+    ""minLength"":5,
+    ""maxLength"":10
+  },
+  ""maxLength"":9
+}";
+
+      List<string> errors = new List<string>();
+      string json = "'The quick brown fox jumps over the lazy dog.'";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) =>
+        {
+          validationEventArgs = args;
+          errors.Add(validationEventArgs.Message);
+        };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual(1, errors.Count);
+      Assert.AreEqual("String 'The quick brown fox jumps over the lazy dog.' exceeds maximum length of 9. Line 1, position 46.", errors[0]);
+
+      Assert.IsNotNull(validationEventArgs);
+    }
+
+    private JsonSchema GetExtendedSchema()
+    {
+      string first = @"{
+  ""id"":""first"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""firstproperty"":{""type"":""string"",""required"":true}
+  },
+  ""additionalProperties"":{}
+}";
+
+      string second = @"{
+  ""id"":""second"",
+  ""type"":""object"",
+  ""extends"":{""$ref"":""first""},
+  ""properties"":
+  {
+    ""secondproperty"":{""type"":""string"",""required"":true}
+  },
+  ""additionalProperties"":false
+}";
+
+      JsonSchemaResolver resolver = new JsonSchemaResolver();
+      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
+      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
+
+      return secondSchema;
+    }
+
+    [Test]
+    public void ExtendsDisallowAdditionProperties()
+    {
+      string json = "{'firstproperty':'blah','secondproperty':'blah2','additional':'blah3','additional2':'blah4'}";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = GetExtendedSchema();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("firstproperty", reader.Value.ToString());
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("blah", reader.Value.ToString());
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("secondproperty", reader.Value.ToString());
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("blah2", reader.Value.ToString());
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("additional", reader.Value.ToString());
+      Assert.AreEqual("Property 'additional' has not been defined and the schema does not allow additional properties. Line 1, position 62.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("blah3", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("additional2", reader.Value.ToString());
+      Assert.AreEqual("Property 'additional2' has not been defined and the schema does not allow additional properties. Line 1, position 84.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("blah4", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ExtendsMissingRequiredProperties()
+    {
+      string json = "{}";
+
+      List<string> errors = new List<string>();
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { errors.Add(args.Message); };
+      reader.Schema = GetExtendedSchema();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.AreEqual(1, errors.Count);
+      Assert.AreEqual("Required properties are missing from object: secondproperty, firstproperty. Line 1, position 2.", errors[0]);
+    }
+
+    [Test]
+    public void NoAdditionalProperties()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"": [{""type"":""string""},{""type"":""integer""}],
+  ""additionalProperties"": false
+}";
+
+      string json = @"[1, 'a', null]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual("Invalid type. Expected String but got Integer. Line 1, position 2.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("Invalid type. Expected Integer but got String. Line 1, position 7.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.AreEqual("Index 3 has not been defined and the schema does not allow additional items. Line 1, position 13.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void PatternPropertiesNoAdditionalProperties()
+    {
+      string schemaJson = @"{
+  ""type"":""object"",
+  ""patternProperties"": {
+     ""hi"": {""type"":""string""},
+     ""ho"": {""type"":""string""}
+  },
+  ""additionalProperties"": false
+}";
+
+      string json = @"{
+  ""hi"": ""A string!"",
+  ""hide"": ""A string!"",
+  ""ho"": 1,
+  ""hey"": ""A string!""
+}";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual("Invalid type. Expected String but got Integer. Line 4, position 10.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("Property 'hey' has not been defined and the schema does not allow additional properties. Line 5, position 9.", validationEventArgs.Message);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void ExtendedComplex()
+    {
+      string first = @"{
+  ""id"":""first"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""firstproperty"":{""type"":""string""},
+    ""secondproperty"":{""type"":""string"",""maxLength"":10},
+    ""thirdproperty"":{
+      ""type"":""object"",
+      ""properties"":
+      {
+        ""thirdproperty_firstproperty"":{""type"":""string"",""maxLength"":10,""minLength"":7}
+      }
+    }
+  },
+  ""additionalProperties"":{}
+}";
+
+      string second = @"{
+  ""id"":""second"",
+  ""type"":""object"",
+  ""extends"":{""$ref"":""first""},
+  ""properties"":
+  {
+    ""secondproperty"":{""type"":""any""},
+    ""thirdproperty"":{
+      ""extends"":{
+        ""properties"":
+        {
+          ""thirdproperty_firstproperty"":{""maxLength"":9,""minLength"":6,""pattern"":""hi2u""}
+        },
+        ""additionalProperties"":{""maxLength"":9,""minLength"":6,""enum"":[""one"",""two""]}
+      },
+      ""type"":""object"",
+      ""properties"":
+      {
+        ""thirdproperty_firstproperty"":{""pattern"":""hi""}
+      },
+      ""additionalProperties"":{""type"":""string"",""enum"":[""two"",""three""]}
+    },
+    ""fourthproperty"":{""type"":""string""}
+  },
+  ""additionalProperties"":false
+}";
+
+      JsonSchemaResolver resolver = new JsonSchemaResolver();
+      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
+      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
+
+      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
+
+      string json = @"{
+  'firstproperty':'blahblahblahblahblahblah',
+  'secondproperty':'secasecasecasecaseca',
+  'thirdproperty':{
+    'thirdproperty_firstproperty':'aaa',
+    'additional':'three'
+  }
+}";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+      List<string> errors = new List<string>();
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) =>
+        {
+          validationEventArgs = args;
+          errors.Add(validationEventArgs.Path + " - " + validationEventArgs.Message);
+        };
+      reader.Schema = secondSchema;
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("firstproperty", reader.Value.ToString());
+      Assert.AreEqual(null, validationEventArgs);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("blahblahblahblahblahblah", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("secondproperty", reader.Value.ToString());
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("secasecasecasecaseca", reader.Value.ToString());
+      Assert.AreEqual(1, errors.Count);
+      Assert.AreEqual("secondproperty - String 'secasecasecasecaseca' exceeds maximum length of 10. Line 3, position 42.", errors[0]);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("thirdproperty", reader.Value.ToString());
+      Assert.AreEqual(1, errors.Count);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+      Assert.AreEqual(1, errors.Count);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("thirdproperty_firstproperty", reader.Value.ToString());
+      Assert.AreEqual(1, errors.Count);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("aaa", reader.Value.ToString());
+      Assert.AreEqual(4, errors.Count);
+      Assert.AreEqual("thirdproperty.thirdproperty_firstproperty - String 'aaa' is less than minimum length of 7. Line 5, position 40.", errors[1]);
+      Assert.AreEqual("thirdproperty.thirdproperty_firstproperty - String 'aaa' does not match regex pattern 'hi'. Line 5, position 40.", errors[2]);
+      Assert.AreEqual("thirdproperty.thirdproperty_firstproperty - String 'aaa' does not match regex pattern 'hi2u'. Line 5, position 40.", errors[3]);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+      Assert.AreEqual("additional", reader.Value.ToString());
+      Assert.AreEqual(4, errors.Count);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+      Assert.AreEqual("three", reader.Value.ToString());
+      Assert.AreEqual(5, errors.Count);
+      Assert.AreEqual("thirdproperty.additional - String 'three' is less than minimum length of 6. Line 6, position 25.", errors[4]);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void DuplicateErrorsTest()
+    {
+      string schema = @"{
+  ""id"":""ErrorDemo.Database"",
+  ""properties"":{
+    ""ErrorDemoDatabase"":{
+      ""type"":""object"",
+      ""required"":true,
+      ""properties"":{
+        ""URL"":{
+          ""type"":""string"",
+          ""required"":true
+        },
+        ""Version"":{
+          ""type"":""string"",
+          ""required"":true
+        },
+        ""Date"":{
+          ""type"":""string"",
+          ""format"":""date-time"",
+          ""required"":true
+        },
+        ""MACLevels"":{
+          ""type"":""object"",
+          ""required"":true,
+          ""properties"":{
+            ""MACLevel"":{
+              ""type"":""array"",
+              ""required"":true,
+              ""items"":[
+                {
+                  ""required"":true,
+                  ""properties"":{
+                    ""IDName"":{
+                      ""type"":""string"",
+                      ""required"":true
+                    },
+                    ""Order"":{
+                      ""type"":""string"",
+                      ""required"":true
+                    },
+                    ""IDDesc"":{
+                      ""type"":""string"",
+                      ""required"":true
+                    },
+                    ""IsActive"":{
+                      ""type"":""string"",
+                      ""required"":true
+                    }
+                  }
+                }
+              ]
+            }
+          }
+        }
+      }
+    }
+  }
+}";
+
+      string json = @"{
+  ""ErrorDemoDatabase"":{
+    ""URL"":""localhost:3164"",
+    ""Version"":""1.0"",
+    ""Date"":""6.23.2010, 9:35:18.121"",
+    ""MACLevels"":{
+      ""MACLevel"":[
+        {
+          ""@IDName"":""Developer"",
+          ""Order"":""0"",
+          ""IDDesc"":""DeveloperDesc"",
+          ""IsActive"":""True""
+        },
+        {
+          ""IDName"":""Technician"",
+          ""Order"":""1"",
+          ""IDDesc"":""TechnicianDesc"",
+          ""IsActive"":""True""
+        },
+        {
+          ""IDName"":""Administrator"",
+          ""Order"":""2"",
+          ""IDDesc"":""AdministratorDesc"",
+          ""IsActive"":""True""
+        },
+        {
+          ""IDName"":""PowerUser"",
+          ""Order"":""3"",
+          ""IDDesc"":""PowerUserDesc"",
+          ""IsActive"":""True""
+        },
+        {
+          ""IDName"":""Operator"",
+          ""Order"":""4"",
+          ""IDDesc"":""OperatorDesc"",
+          ""IsActive"":""True""
+        }
+      ]
+    }
+  }
+}";
+
+      IList<ValidationEventArgs> validationEventArgs = new List<ValidationEventArgs>();
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) =>
+        {
+          validationEventArgs.Add(args);
+        };
+      reader.Schema = JsonSchema.Parse(schema);
+
+      while (reader.Read())
+      {
+      }
+
+      Assert.AreEqual(1, validationEventArgs.Count);
+    }
+
+    [Test]
+    public void ReadAsBytes()
+    {
+      JsonSchema s = new JsonSchemaGenerator().Generate(typeof (byte[]));
+
+      byte[] data = Encoding.UTF8.GetBytes("Hello world");
+
+      JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"""" + Convert.ToBase64String(data) + @"""")))
+        {
+          Schema = s
+        };
+      byte[] bytes = reader.ReadAsBytes();
+
+      CollectionAssert.AreEquivalent(data, bytes);
+    }
+
+    [Test]
+    public void ReadAsInt32()
+    {
+      JsonSchema s = new JsonSchemaGenerator().Generate(typeof (int));
+
+      JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"1")))
+        {
+          Schema = s
+        };
+      int? i = reader.ReadAsInt32();
+
+      Assert.AreEqual(1, i);
+    }
+
+    [Test]
+    public void ReadAsInt32Failure()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Integer 5 exceeds maximum value of 2. Line 1, position 1.",
+      () =>
+      {
+        JsonSchema s = new JsonSchemaGenerator().Generate(typeof(int));
+        s.Maximum = 2;
+
+        JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"5")))
+        {
+          Schema = s
+        };
+        reader.ReadAsInt32();
+      });
+    }
+
+    [Test]
+    public void ReadAsDecimal()
+    {
+      JsonSchema s = new JsonSchemaGenerator().Generate(typeof (decimal));
+
+      JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"1.5")))
+        {
+          Schema = s
+        };
+      decimal? d = reader.ReadAsDecimal();
+
+      Assert.AreEqual(1.5m, d);
+    }
+
+    [Test]
+    public void ReadAsDecimalFailure()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Float 5.5 is not evenly divisible by 1. Line 1, position 3.",
+      () =>
+      {
+        JsonSchema s = new JsonSchemaGenerator().Generate(typeof(decimal));
+        s.DivisibleBy = 1;
+
+        JsonReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(@"5.5")))
+        {
+          Schema = s
+        };
+        reader.ReadAsDecimal();
+      });
+    }
+
+    [Test]
+    public void ReadAsInt32FromSerializer()
+    {
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader("[1,2,3]")));
+      reader.Schema = new JsonSchemaGenerator().Generate(typeof(int[]));
+      int[] values = new JsonSerializer().Deserialize<int[]>(reader);
+
+      Assert.AreEqual(3, values.Length);
+      Assert.AreEqual(1, values[0]);
+      Assert.AreEqual(2, values[1]);
+      Assert.AreEqual(3, values[2]);
+    }
+
+    [Test]
+    public void ReadAsInt32InArray()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""integer""
+  },
+  ""maxItems"":1
+}";
+
+      string json = "[1,2]";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
+      Assert.AreEqual("Array item count 2 exceeds maximum count of 1. Line 1, position 5.", validationEventArgs.Message);
+      Assert.AreEqual("", validationEventArgs.Path);
+    }
+
+    [Test]
+    public void ReadAsInt32InArrayIncomplete()
+    {
+      string schemaJson = @"{
+  ""type"":""array"",
+  ""items"":{
+    ""type"":""integer""
+  },
+  ""maxItems"":1
+}";
+
+      string json = "[1,2";
+
+      Json.Schema.ValidationEventArgs validationEventArgs = null;
+
+      JsonValidatingReader reader = new JsonValidatingReader(new JsonTextReader(new StringReader(json)));
+      reader.ValidationEventHandler += (sender, args) => { validationEventArgs = args; };
+      reader.Schema = JsonSchema.Parse(schemaJson);
+
+      reader.Read();
+      Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.None, reader.TokenType);
+      Assert.AreEqual(null, validationEventArgs);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/BindingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/BindingTests.cs
@@ -1,75 +1,75 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
-using NUnit.Framework;
-using System.Web.UI;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.Linq.ComponentModel
-{
-  [TestFixture]
-  public class BindingTests : TestFixtureBase
-  {
-    [Test]
-    public void DataBinderEval()
-    {
-      JObject o = new JObject(
-        new JProperty("First", "String!"),
-        new JProperty("Second", 12345.6789m),
-        new JProperty("Third", new JArray(
-          1,
-          2, 
-          3,
-          4,
-          5,
-          new JObject(
-            new JProperty("Fourth", "String!"),
-            new JProperty("Fifth", new JObject(
-              new JProperty("Sixth", "String!")))))));
-
-      object value;
-
-      value = (string)DataBinder.Eval(o, "First.Value");
-      Assert.AreEqual(value, (string)o["First"]);
-
-      value = DataBinder.Eval(o, "Second.Value");
-      Assert.AreEqual(value, (decimal)o["Second"]);
-
-      value = DataBinder.Eval(o, "Third");
-      Assert.AreEqual(value, o["Third"]);
-
-      value = DataBinder.Eval(o, "Third[0].Value");
-      Assert.AreEqual((int)value, (int)o["Third"][0]);
-
-      value = DataBinder.Eval(o, "Third[5].Fourth.Value");
-      Assert.AreEqual(value, (string)o["Third"][5]["Fourth"]);
-
-      value = DataBinder.Eval(o, "Third[5].Fifth.Sixth.Value");
-      Assert.AreEqual(value, (string)o["Third"][5]["Fifth"]["Sixth"]);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
+using NUnit.Framework;
+using System.Web.UI;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.Linq.ComponentModel
+{
+  [TestFixture]
+  public class BindingTests : TestFixtureBase
+  {
+    [Test]
+    public void DataBinderEval()
+    {
+      JObject o = new JObject(
+        new JProperty("First", "String!"),
+        new JProperty("Second", 12345.6789m),
+        new JProperty("Third", new JArray(
+          1,
+          2, 
+          3,
+          4,
+          5,
+          new JObject(
+            new JProperty("Fourth", "String!"),
+            new JProperty("Fifth", new JObject(
+              new JProperty("Sixth", "String!")))))));
+
+      object value;
+
+      value = (string)DataBinder.Eval(o, "First.Value");
+      Assert.AreEqual(value, (string)o["First"]);
+
+      value = DataBinder.Eval(o, "Second.Value");
+      Assert.AreEqual(value, (decimal)o["Second"]);
+
+      value = DataBinder.Eval(o, "Third");
+      Assert.AreEqual(value, o["Third"]);
+
+      value = DataBinder.Eval(o, "Third[0].Value");
+      Assert.AreEqual((int)value, (int)o["Third"][0]);
+
+      value = DataBinder.Eval(o, "Third[5].Fourth.Value");
+      Assert.AreEqual(value, (string)o["Third"][5]["Fourth"]);
+
+      value = DataBinder.Eval(o, "Third[5].Fifth.Sixth.Value");
+      Assert.AreEqual(value, (string)o["Third"][5]["Fifth"]["Sixth"]);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/JPropertyDescriptorTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/JPropertyDescriptorTests.cs
@@ -1,87 +1,87 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !SILVERLIGHT && !NETFX_CORE
-using NUnit.Framework;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.Linq.ComponentModel
-{
-  [TestFixture]
-  public class JPropertyDescriptorTests : TestFixtureBase
-  {
-    [Test]
-    public void GetValue()
-    {
-      JObject o = JObject.Parse("{prop1:'12345!',prop2:[1,'two','III']}");
-
-      JPropertyDescriptor prop1 = new JPropertyDescriptor("prop1", typeof(string));
-      JPropertyDescriptor prop2 = new JPropertyDescriptor("prop2", typeof(JArray));
-
-      Assert.AreEqual("12345!", ((JValue) prop1.GetValue(o)).Value);
-      Assert.AreEqual(o["prop2"], prop2.GetValue(o));
-    }
-
-    [Test]
-    public void SetValue()
-    {
-      JObject o = JObject.Parse("{prop1:'12345!'}");
-
-      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
-
-      propertyDescriptor1.SetValue(o, "54321!");
-
-      Assert.AreEqual("54321!", (string)o["prop1"]);
-    }
-
-    [Test]
-    public void ResetValue()
-    {
-      JObject o = JObject.Parse("{prop1:'12345!'}");
-
-      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
-      propertyDescriptor1.ResetValue(o);
-
-      Assert.AreEqual("12345!", (string)o["prop1"]);
-    }
-
-    [Test]
-    public void IsReadOnly()
-    {
-      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
-
-      Assert.AreEqual(false, propertyDescriptor1.IsReadOnly);
-    }
-
-    [Test]
-    public void PropertyType()
-    {
-      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
-
-      Assert.AreEqual(typeof(string), propertyDescriptor1.PropertyType);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !SILVERLIGHT && !NETFX_CORE
+using NUnit.Framework;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.Linq.ComponentModel
+{
+  [TestFixture]
+  public class JPropertyDescriptorTests : TestFixtureBase
+  {
+    [Test]
+    public void GetValue()
+    {
+      JObject o = JObject.Parse("{prop1:'12345!',prop2:[1,'two','III']}");
+
+      JPropertyDescriptor prop1 = new JPropertyDescriptor("prop1", typeof(string));
+      JPropertyDescriptor prop2 = new JPropertyDescriptor("prop2", typeof(JArray));
+
+      Assert.AreEqual("12345!", ((JValue) prop1.GetValue(o)).Value);
+      Assert.AreEqual(o["prop2"], prop2.GetValue(o));
+    }
+
+    [Test]
+    public void SetValue()
+    {
+      JObject o = JObject.Parse("{prop1:'12345!'}");
+
+      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
+
+      propertyDescriptor1.SetValue(o, "54321!");
+
+      Assert.AreEqual("54321!", (string)o["prop1"]);
+    }
+
+    [Test]
+    public void ResetValue()
+    {
+      JObject o = JObject.Parse("{prop1:'12345!'}");
+
+      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
+      propertyDescriptor1.ResetValue(o);
+
+      Assert.AreEqual("12345!", (string)o["prop1"]);
+    }
+
+    [Test]
+    public void IsReadOnly()
+    {
+      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
+
+      Assert.AreEqual(false, propertyDescriptor1.IsReadOnly);
+    }
+
+    [Test]
+    public void PropertyType()
+    {
+      JPropertyDescriptor propertyDescriptor1 = new JPropertyDescriptor("prop1", typeof(string));
+
+      Assert.AreEqual(typeof(string), propertyDescriptor1.PropertyType);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/DynamicTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/DynamicTests.cs
@@ -1,714 +1,714 @@
-﻿#if !(NET35 || NET20)
-using System;
-using System.Collections.Generic;
-using System.Dynamic;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Linq;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class DynamicTests : TestFixtureBase
-  {
-    [Test]
-    public void JObjectPropertyNames()
-    {
-      JObject o = new JObject(
-        new JProperty("ChildValue", "blah blah"));
-
-      dynamic d = o;
-
-      d.First = "A value!";
-
-      Assert.AreEqual(new JValue("A value!"), d.First);
-      Assert.AreEqual("A value!", (string)d.First);
-
-      d.First = null;
-      Assert.AreEqual(JTokenType.Null, d.First.Type);
-
-      Assert.IsTrue(d.Remove("First"));
-      Assert.IsNull(d.First);
-
-      JValue v1 = d.ChildValue;
-      JValue v2 = d["ChildValue"];
-      Assert.AreEqual(v1, v2);
-
-      JValue newValue1 = new JValue("Blah blah");
-      d.NewValue = newValue1;
-      JValue newValue2 = d.NewValue;
-
-      Assert.IsTrue(ReferenceEquals(newValue1, newValue2));
-    }
-
-    [Test]
-    public void JObjectEnumerator()
-    {
-      JObject o = new JObject(
-        new JProperty("ChildValue", "blah blah"));
-
-      dynamic d = o;
-
-      foreach (JProperty value in d)
-      {
-        Assert.AreEqual("ChildValue", value.Name);
-        Assert.AreEqual("blah blah", (string)value.Value);
-      }
-
-      foreach (dynamic value in d)
-      {
-        Assert.AreEqual("ChildValue", value.Name);
-        Assert.AreEqual("blah blah", (string)value.Value);
-      }
-    }
-
-    [Test]
-    public void JObjectPropertyNameWithJArray()
-    {
-      JObject o = new JObject(
-        new JProperty("ChildValue", "blah blah"));
-
-      dynamic d = o;
-
-      d.First = new JArray();
-      d.First.Add("Hi");
-
-      Assert.AreEqual(1, d.First.Count);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Could not determine JSON object type for type System.String[]."
-#endif
-      )]
-    public void JObjectPropertyNameWithNonToken()
-    {
-      dynamic d = new JObject();
-
-      d.First = new [] {"One", "II", "3"};
-    }
-
-    [Test]
-    public void JObjectMethods()
-    {
-      JObject o = new JObject(
-        new JProperty("ChildValue", "blah blah"));
-
-      dynamic d = o;
-
-      d.Add("NewValue", 1);
-
-      object count = d.Count;
-
-      Assert.IsNull(count);
-      Assert.IsNull(d["Count"]);
-
-      JToken v;
-      Assert.IsTrue(d.TryGetValue("ChildValue", out v));
-      Assert.AreEqual("blah blah", (string)v);
-    }
-
-    [Test]
-    public void JValueEquals()
-    {
-      JObject o = new JObject(
-        new JProperty("Null", new JValue(null, JTokenType.Null)),
-        new JProperty("Integer", new JValue(1)),
-        new JProperty("Float", new JValue(1.1d)),
-        new JProperty("Decimal", new JValue(1.1m)),
-        new JProperty("DateTime", new JValue(new DateTime(2000, 12, 29, 23, 51, 10, DateTimeKind.Utc))),
-        new JProperty("Boolean", new JValue(true)),
-        new JProperty("String", new JValue("A string lol!")),
-        new JProperty("Bytes", new JValue(Encoding.UTF8.GetBytes("A string lol!"))),
-        new JProperty("Uri", new Uri("http://json.codeplex.com/")),
-        new JProperty("Guid", new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF")),
-        new JProperty("TimeSpan", TimeSpan.FromDays(1))
-        );
-
-      dynamic d = o;
-
-      Assert.IsTrue(d.Null == d.Null);
-      Assert.IsTrue(d.Null == null);
-      Assert.IsTrue(d.Null == new JValue(null, JTokenType.Null));
-      Assert.IsFalse(d.Null == 1);
-
-      Assert.IsTrue(d.Integer == d.Integer);
-      Assert.IsTrue(d.Integer > 0);
-      Assert.IsTrue(d.Integer > 0.0m);
-      Assert.IsTrue(d.Integer > 0.0f);
-      Assert.IsTrue(d.Integer > null);
-      Assert.IsTrue(d.Integer >= null);
-      Assert.IsTrue(d.Integer == 1);
-      Assert.IsTrue(d.Integer == 1m);
-      Assert.IsTrue(d.Integer != 1.1f);
-      Assert.IsTrue(d.Integer != 1.1d);
-
-      Assert.IsTrue(d.Decimal == d.Decimal);
-      Assert.IsTrue(d.Decimal > 0);
-      Assert.IsTrue(d.Decimal > 0.0m);
-      Assert.IsTrue(d.Decimal > 0.0f);
-      Assert.IsTrue(d.Decimal > null);
-      Assert.IsTrue(d.Decimal >= null);
-      Assert.IsTrue(d.Decimal == 1.1);
-      Assert.IsTrue(d.Decimal == 1.1m);
-      Assert.IsTrue(d.Decimal != 1.0f);
-      Assert.IsTrue(d.Decimal != 1.0d);
-
-      Assert.IsTrue(d.Float == d.Float);
-      Assert.IsTrue(d.Float > 0);
-      Assert.IsTrue(d.Float > 0.0m);
-      Assert.IsTrue(d.Float > 0.0f);
-      Assert.IsTrue(d.Float > null);
-      Assert.IsTrue(d.Float >= null);
-      Assert.IsTrue(d.Float < 2);
-      Assert.IsTrue(d.Float <= 1.1);
-      Assert.IsTrue(d.Float == 1.1);
-      Assert.IsTrue(d.Float == 1.1m);
-      Assert.IsTrue(d.Float != 1.0f);
-      Assert.IsTrue(d.Float != 1.0d);
-
-      Assert.IsTrue(d.Bytes == d.Bytes);
-      Assert.IsTrue(d.Bytes == Encoding.UTF8.GetBytes("A string lol!"));
-      Assert.IsTrue(d.Bytes == new JValue(Encoding.UTF8.GetBytes("A string lol!")));
-
-      Assert.IsTrue(d.Uri == d.Uri);
-      Assert.IsTrue(d.Uri == new Uri("http://json.codeplex.com/"));
-      Assert.IsTrue(d.Uri > new Uri("http://abc.org/"));
-      Assert.IsTrue(d.Uri >= new Uri("http://abc.com/"));
-      Assert.IsTrue(d.Uri > null);
-      Assert.IsTrue(d.Uri >= null);
-
-      Assert.IsTrue(d.Guid == d.Guid);
-      Assert.IsTrue(d.Guid == new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF"));
-      Assert.IsTrue(d.Guid > new Guid("AAAAAAAA-0D80-44F2-BF34-4654156FA7AF"));
-      Assert.IsTrue(d.Guid >= new Guid("AAAAAAAA-0D80-44F2-BF34-4654156FA7AF"));
-      Assert.IsTrue(d.Guid > null);
-      Assert.IsTrue(d.Guid >= null);
-
-      Assert.IsTrue(d.TimeSpan == d.TimeSpan);
-      Assert.IsTrue(d.TimeSpan == TimeSpan.FromDays(1));
-      Assert.IsTrue(d.TimeSpan > TimeSpan.FromHours(1));
-      Assert.IsTrue(d.TimeSpan >= TimeSpan.FromHours(1));
-      Assert.IsTrue(d.TimeSpan > null);
-      Assert.IsTrue(d.TimeSpan >= null);
-    }
-
-    [Test]
-    public void JValueAddition()
-    {
-      JObject o = new JObject(
-        new JProperty("Null", new JValue(null, JTokenType.Null)),
-        new JProperty("Integer", new JValue(1)),
-        new JProperty("Float", new JValue(1.1d)),
-        new JProperty("Decimal", new JValue(1.1m)),
-        new JProperty("DateTime", new JValue(new DateTime(2000, 12, 29, 23, 51, 10, DateTimeKind.Utc))),
-        new JProperty("Boolean", new JValue(true)),
-        new JProperty("String", new JValue("A string lol!")),
-        new JProperty("Bytes", new JValue(Encoding.UTF8.GetBytes("A string lol!"))),
-        new JProperty("Uri", new Uri("http://json.codeplex.com/")),
-        new JProperty("Guid", new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF")),
-        new JProperty("TimeSpan", TimeSpan.FromDays(1))
-        );
-
-      dynamic d = o;
-      dynamic r;
-
-      #region Add
-      r = d.String + " LAMO!";
-      Assert.AreEqual("A string lol! LAMO!", (string)r);
-      r += " gg";
-      Assert.AreEqual("A string lol! LAMO! gg", (string)r);
-
-      r = d.String + null;
-      Assert.AreEqual("A string lol!", (string)r);
-      r += null;
-      Assert.AreEqual("A string lol!", (string)r);
-
-      r = d.Integer + 1;
-      Assert.AreEqual(2, (int)r);
-      r += 2;
-      Assert.AreEqual(4, (int)r);
-
-      r = d.Integer + 1.1;
-      Assert.AreEqual(2.1, (double)r);
-      r += 2;
-      Assert.AreEqual(4.1, (double)r);
-
-      r = d.Integer + 1.1d;
-      Assert.AreEqual(2.1m, (decimal)r);
-      r += 2;
-      Assert.AreEqual(4.1m, (decimal)r);
-
-      r = d.Integer + null;
-      Assert.AreEqual(null, r.Value);
-      r += 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Float + 1;
-      Assert.AreEqual(2.1d, (double)r);
-      r += 2;
-      Assert.AreEqual(4.1d, (double)r);
-
-      r = d.Float + 1.1;
-      Assert.AreEqual(2.2d, (double)r);
-      r += 2;
-      Assert.AreEqual(4.2d, (double)r);
-
-      r = d.Float + 1.1d;
-      Assert.AreEqual(2.2m, (decimal)r);
-      r += 2;
-      Assert.AreEqual(4.2m, (decimal)r);
-
-      r = d.Float + null;
-      Assert.AreEqual(null, r.Value);
-      r += 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Decimal + 1;
-      Assert.AreEqual(2.1m, (decimal)r);
-      r += 2;
-      Assert.AreEqual(4.1m, (decimal)r);
-
-      r = d.Decimal + 1.1;
-      Assert.AreEqual(2.2m, (decimal)r);
-      r += 2;
-      Assert.AreEqual(4.2m, (decimal)r);
-
-      r = d.Decimal + 1.1d;
-      Assert.AreEqual(2.2m, (decimal)r);
-      r += 2;
-      Assert.AreEqual(4.2m, (decimal)r);
-
-      r = d.Decimal + null;
-      Assert.AreEqual(null, r.Value);
-      r += 2;
-      Assert.AreEqual(null, r.Value);
-      #endregion
-
-      #region Subtract
-      r = d.Integer - 1;
-      Assert.AreEqual(0, (int)r);
-      r -= 2;
-      Assert.AreEqual(-2, (int)r);
-
-      r = d.Integer - 1.1;
-      Assert.AreEqual(-0.1d, (double)r, 0.00001);
-      r -= 2;
-      Assert.AreEqual(-2.1d, (double)r);
-
-      r = d.Integer - 1.1d;
-      Assert.AreEqual(-0.1m, (decimal)r);
-      r -= 2;
-      Assert.AreEqual(-2.1m, (decimal)r);
-
-      r = d.Integer - null;
-      Assert.AreEqual(null, r.Value);
-      r -= 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Float - 1;
-      Assert.AreEqual(0.1d, (double)r, 0.00001);
-      r -= 2;
-      Assert.AreEqual(-1.9d, (double)r);
-
-      r = d.Float - 1.1;
-      Assert.AreEqual(0d, (double)r);
-      r -= 2;
-      Assert.AreEqual(-2d, (double)r);
-
-      r = d.Float - 1.1d;
-      Assert.AreEqual(0m, (decimal)r);
-      r -= 2;
-      Assert.AreEqual(-2m, (decimal)r);
-
-      r = d.Float - null;
-      Assert.AreEqual(null, r.Value);
-      r -= 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Decimal - 1;
-      Assert.AreEqual(0.1m, (decimal)r);
-      r -= 2;
-      Assert.AreEqual(-1.9m, (decimal)r);
-
-      r = d.Decimal - 1.1;
-      Assert.AreEqual(0m, (decimal)r);
-      r -= 2;
-      Assert.AreEqual(-2m, (decimal)r);
-
-      r = d.Decimal - 1.1d;
-      Assert.AreEqual(0m, (decimal)r);
-      r -= 2;
-      Assert.AreEqual(-2m, (decimal)r);
-
-      r = d.Decimal - null;
-      Assert.AreEqual(null, r.Value);
-      r -= 2;
-      Assert.AreEqual(null, r.Value);
-      #endregion
-
-      #region Multiply
-      r = d.Integer * 1;
-      Assert.AreEqual(1, (int)r);
-      r *= 2;
-      Assert.AreEqual(2, (int)r);
-
-      r = d.Integer * 1.1;
-      Assert.AreEqual(1.1d, (double)r);
-      r *= 2;
-      Assert.AreEqual(2.2d, (double)r);
-
-      r = d.Integer * 1.1d;
-      Assert.AreEqual(1.1m, (decimal)r);
-      r *= 2;
-      Assert.AreEqual(2.2m, (decimal)r);
-
-      r = d.Integer * null;
-      Assert.AreEqual(null, r.Value);
-      r *= 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Float * 1;
-      Assert.AreEqual(1.1d, (double)r);
-      r *= 2;
-      Assert.AreEqual(2.2d, (double)r);
-
-      r = d.Float * 1.1;
-      Assert.AreEqual(1.21d, (double)r, 0.00001);
-      r *= 2;
-      Assert.AreEqual(2.42d, (double)r, 0.00001);
-
-      r = d.Float * 1.1d;
-      Assert.AreEqual(1.21m, (decimal)r);
-      r *= 2;
-      Assert.AreEqual(2.42m, (decimal)r);
-
-      r = d.Float * null;
-      Assert.AreEqual(null, r.Value);
-      r *= 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Decimal * 1;
-      Assert.AreEqual(1.1m, (decimal)r);
-      r *= 2;
-      Assert.AreEqual(2.2m, (decimal)r);
-
-      r = d.Decimal * 1.1;
-      Assert.AreEqual(1.21m, (decimal)r);
-      r *= 2;
-      Assert.AreEqual(2.42m, (decimal)r);
-
-      r = d.Decimal * 1.1d;
-      Assert.AreEqual(1.21m, (decimal)r);
-      r *= 2;
-      Assert.AreEqual(2.42m, (decimal)r);
-
-      r = d.Decimal * null;
-      Assert.AreEqual(null, r.Value);
-      r *= 2;
-      Assert.AreEqual(null, r.Value);
-      #endregion
-
-      #region Divide
-      r = d.Integer / 1;
-      Assert.AreEqual(1, (int)r);
-      r /= 2;
-      Assert.AreEqual(0, (int)r);
-
-      r = d.Integer / 1.1;
-      Assert.AreEqual(0.9090909090909091d, (double)r);
-      r /= 2;
-      Assert.AreEqual(0.454545454545455d, (double)r, 0.00001);
-
-      r = d.Integer / 1.1d;
-      Assert.AreEqual(0.909090909090909m, (decimal)r);
-      r /= 2;
-      Assert.AreEqual(0.454545454545454m, (decimal)r);
-
-      r = d.Integer / null;
-      Assert.AreEqual(null, r.Value);
-      r /= 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Float / 1;
-      Assert.AreEqual(1.1d, (double)r);
-      r /= 2;
-      Assert.AreEqual(0.55d, (double)r);
-
-      r = d.Float / 1.1;
-      Assert.AreEqual(1d, (double)r, 0.00001);
-      r /= 2;
-      Assert.AreEqual(0.5d, (double)r, 0.00001);
-
-      r = d.Float / 1.1d;
-      Assert.AreEqual(1m, (decimal)r);
-      r /= 2;
-      Assert.AreEqual(0.5m, (decimal)r);
-
-      r = d.Float / null;
-      Assert.AreEqual(null, r.Value);
-      r /= 2;
-      Assert.AreEqual(null, r.Value);
-
-      r = d.Decimal / 1;
-      Assert.AreEqual(1.1m, (decimal)r);
-      r /= 2;
-      Assert.AreEqual(0.55m, (decimal)r);
-
-      r = d.Decimal / 1.1;
-      Assert.AreEqual(1m, (decimal)r);
-      r /= 2;
-      Assert.AreEqual(0.5m, (decimal)r);
-
-      r = d.Decimal / 1.1d;
-      Assert.AreEqual(1m, (decimal)r);
-      r /= 2;
-      Assert.AreEqual(0.5m, (decimal)r);
-
-      r = d.Decimal / null;
-      Assert.AreEqual(null, r.Value);
-      r /= 2;
-      Assert.AreEqual(null, r.Value);
-      #endregion
-    }
-
-    [Test]
-    public void JValueToString()
-    {
-      JObject o = new JObject(
-        new JProperty("Null", new JValue(null, JTokenType.Null)),
-        new JProperty("Integer", new JValue(1)),
-        new JProperty("Float", new JValue(1.1)),
-        new JProperty("DateTime", new JValue(new DateTime(2000, 12, 29, 23, 51, 10, DateTimeKind.Utc))),
-        new JProperty("Boolean", new JValue(true)),
-        new JProperty("String", new JValue("A string lol!")),
-        new JProperty("Bytes", new JValue(Encoding.UTF8.GetBytes("A string lol!"))),
-        new JProperty("Uri", new Uri("http://json.codeplex.com/")),
-        new JProperty("Guid", new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF")),
-        new JProperty("TimeSpan", TimeSpan.FromDays(1))
-        );
-
-      dynamic d = o;
-
-      Assert.AreEqual("", d.Null.ToString());
-      Assert.AreEqual("1", d.Integer.ToString());
-      Assert.AreEqual("1.1", d.Float.ToString(CultureInfo.InvariantCulture));
-      Assert.AreEqual("12/29/2000 23:51:10", d.DateTime.ToString(null, CultureInfo.InvariantCulture));
-      Assert.AreEqual("True", d.Boolean.ToString());
-      Assert.AreEqual("A string lol!", d.String.ToString());
-      Assert.AreEqual("System.Byte[]", d.Bytes.ToString());
-      Assert.AreEqual("http://json.codeplex.com/", d.Uri.ToString());
-      Assert.AreEqual("ea27fe1d-0d80-44f2-bf34-4654156fa7af", d.Guid.ToString());
-      Assert.AreEqual("1.00:00:00", d.TimeSpan.ToString());
-    }
-
-    [Test]
-    public void JObjectGetDynamicPropertyNames()
-    {
-      JObject o = new JObject(
-        new JProperty("ChildValue", "blah blah"),
-        new JProperty("Hello Joe", null));
-
-      dynamic d = o;
-
-      List<string> memberNames = o.GetDynamicMemberNames().ToList();
-
-      Assert.AreEqual(2, memberNames.Count);
-      Assert.AreEqual("ChildValue", memberNames[0]);
-      Assert.AreEqual("Hello Joe", memberNames[1]);
-
-      o = new JObject(
-        new JProperty("ChildValue1", "blah blah"),
-        new JProperty("Hello Joe1", null));
-
-      d = o;
-
-      memberNames = o.GetDynamicMemberNames().ToList();
-
-      Assert.AreEqual(2, memberNames.Count);
-      Assert.AreEqual("ChildValue1", memberNames[0]);
-      Assert.AreEqual("Hello Joe1", memberNames[1]);
-    }
-
-    [Test]
-    public void JValueConvert()
-    {
-      AssertValueConverted<bool>(true);
-      AssertValueConverted<bool?>(true);
-      AssertValueConverted<bool?>(false);
-      AssertValueConverted<bool?>(null);
-      AssertValueConverted<bool?>("true", true);
-      AssertValueConverted<byte[]>(null);
-      AssertValueConverted<byte[]>(Encoding.UTF8.GetBytes("blah"));
-      AssertValueConverted<DateTime>(new DateTime(2000, 12, 20, 23, 59, 2, DateTimeKind.Utc));
-      AssertValueConverted<DateTime?>(new DateTime(2000, 12, 20, 23, 59, 2, DateTimeKind.Utc));
-      AssertValueConverted<DateTime?>(null);
-      AssertValueConverted<DateTimeOffset>(new DateTimeOffset(2000, 12, 20, 23, 59, 2, TimeSpan.FromHours(1)));
-      AssertValueConverted<DateTimeOffset?>(new DateTimeOffset(2000, 12, 20, 23, 59, 2, TimeSpan.FromHours(1)));
-      AssertValueConverted<DateTimeOffset?>(null);
-      AssertValueConverted<decimal>(99.9m);
-      AssertValueConverted<decimal?>(99.9m);
-      AssertValueConverted<decimal>(1m);
-      AssertValueConverted<decimal>(1.1f, 1.1m);
-      AssertValueConverted<decimal>("1.1", 1.1m);
-      AssertValueConverted<double>(99.9);
-      AssertValueConverted<double>(99.9d);
-      AssertValueConverted<double?>(99.9d);
-      AssertValueConverted<float>(99.9f);
-      AssertValueConverted<float?>(99.9f);
-      AssertValueConverted<int>(int.MinValue);
-      AssertValueConverted<int?>(int.MinValue);
-      AssertValueConverted<long>(long.MaxValue);
-      AssertValueConverted<long?>(long.MaxValue);
-      AssertValueConverted<short>(short.MaxValue);
-      AssertValueConverted<short?>(short.MaxValue);
-      AssertValueConverted<string>("blah");
-      AssertValueConverted<string>(null);
-      AssertValueConverted<string>(1, "1");
-      AssertValueConverted<uint>(uint.MinValue);
-      AssertValueConverted<uint?>(uint.MinValue);
-      AssertValueConverted<uint?>("1", (uint)1);
-      AssertValueConverted<ulong>(ulong.MaxValue);
-      AssertValueConverted<ulong?>(ulong.MaxValue);
-      AssertValueConverted<ushort>(ushort.MinValue);
-      AssertValueConverted<ushort?>(ushort.MinValue);
-      AssertValueConverted<ushort?>(null);
-      AssertValueConverted<TimeSpan>(TimeSpan.FromDays(1));
-      AssertValueConverted<TimeSpan?>(TimeSpan.FromDays(1));
-      AssertValueConverted<TimeSpan?>(null);
-      AssertValueConverted<Guid>(new Guid("60304274-CD13-4060-B38C-057C8557AB54"));
-      AssertValueConverted<Guid?>(new Guid("60304274-CD13-4060-B38C-057C8557AB54"));
-      AssertValueConverted<Guid?>(null);
-      AssertValueConverted<Uri>(new Uri("http://json.codeplex.com/"));
-      AssertValueConverted<Uri>(null);
-    }
-
-    private static void AssertValueConverted<T>(object value)
-    {
-      AssertValueConverted<T>(value, value);
-    }
-
-    private static void AssertValueConverted<T>(object value, object expected)
-    {
-      JValue v = new JValue(value);
-      dynamic d = v;
-
-      T t = d;
-      Assert.AreEqual(expected, t);
-    }
-
-    [Test]
-    public void DynamicSerializerExample()
-    {
-      dynamic value = new DynamicDictionary();
-
-      value.Name = "Arine Admin";
-      value.Enabled = true;
-      value.Roles = new[] {"Admin", "User"};
-
-      string json = JsonConvert.SerializeObject(value, Formatting.Indented);
-      // {
-      //   "Name": "Arine Admin",
-      //   "Enabled": true,
-      //   "Roles": [
-      //     "Admin",
-      //     "User"
-      //   ]
-      // }
-
-      dynamic newValue = JsonConvert.DeserializeObject<DynamicDictionary>(json);
-
-      string role = newValue.Roles[0];
-      // Admin
-    }
-
-    [Test]
-    public void DynamicLinqExample()
-    {
-      JObject oldAndBusted = new JObject();
-      oldAndBusted["Name"] = "Arnie Admin";
-      oldAndBusted["Enabled"] = true;
-      oldAndBusted["Roles"] = new JArray(new[] { "Admin", "User" });
-
-      string oldRole = (string) oldAndBusted["Roles"][0];
-      // Admin
-
-
-      dynamic newHotness = new JObject();
-      newHotness.Name = "Arnie Admin";
-      newHotness.Enabled = true;
-      newHotness.Roles = new JArray(new[] { "Admin", "User" });
-
-      string newRole = newHotness.Roles[0];
-      // Admin
-    }
-
-    [Test]
-    public void ImprovedDynamicLinqExample()
-    {
-      dynamic product = new JObject();
-      product.ProductName = "Elbow Grease";
-      product.Enabled = true;
-      product.Price = 4.90m;
-      product.StockCount = 9000;
-      product.StockValue = 44100;
-
-      // All Elbow Grease must go sale!
-      // 50% off price
-
-      product.Price = product.Price / 2;
-      product.StockValue = product.StockCount * product.Price;
-      product.ProductName = product.ProductName + " (SALE)";
-
-      string json = product.ToString();
-      // {
-      //   "ProductName": "Elbow Grease (SALE)",
-      //   "Enabled": true,
-      //   "Price": 2.45,
-      //   "StockCount": 9000,
-      //   "StockValue": 22050.0
-      // }
-
-      Assert.AreEqual(@"{
-  ""ProductName"": ""Elbow Grease (SALE)"",
-  ""Enabled"": true,
-  ""Price"": 2.45,
-  ""StockCount"": 9000,
-  ""StockValue"": 22050.0
-}", json);
-    }
-
-    public class DynamicDictionary : DynamicObject
-    {
-      private readonly IDictionary<string, object> _values = new Dictionary<string, object>();
-
-      public override IEnumerable<string> GetDynamicMemberNames()
-      {
-        return _values.Keys;
-      }
-
-      public override bool TryGetMember(GetMemberBinder binder, out object result)
-      {
-        result = _values[binder.Name];
-        return true;
-      }
-
-      public override bool TrySetMember(SetMemberBinder binder, object value)
-      {
-        _values[binder.Name] = value;
-        return true;
-      }
-    }
-  }
-}
+﻿#if !(NET35 || NET20)
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Linq;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class DynamicTests : TestFixtureBase
+  {
+    [Test]
+    public void JObjectPropertyNames()
+    {
+      JObject o = new JObject(
+        new JProperty("ChildValue", "blah blah"));
+
+      dynamic d = o;
+
+      d.First = "A value!";
+
+      Assert.AreEqual(new JValue("A value!"), d.First);
+      Assert.AreEqual("A value!", (string)d.First);
+
+      d.First = null;
+      Assert.AreEqual(JTokenType.Null, d.First.Type);
+
+      Assert.IsTrue(d.Remove("First"));
+      Assert.IsNull(d.First);
+
+      JValue v1 = d.ChildValue;
+      JValue v2 = d["ChildValue"];
+      Assert.AreEqual(v1, v2);
+
+      JValue newValue1 = new JValue("Blah blah");
+      d.NewValue = newValue1;
+      JValue newValue2 = d.NewValue;
+
+      Assert.IsTrue(ReferenceEquals(newValue1, newValue2));
+    }
+
+    [Test]
+    public void JObjectEnumerator()
+    {
+      JObject o = new JObject(
+        new JProperty("ChildValue", "blah blah"));
+
+      dynamic d = o;
+
+      foreach (JProperty value in d)
+      {
+        Assert.AreEqual("ChildValue", value.Name);
+        Assert.AreEqual("blah blah", (string)value.Value);
+      }
+
+      foreach (dynamic value in d)
+      {
+        Assert.AreEqual("ChildValue", value.Name);
+        Assert.AreEqual("blah blah", (string)value.Value);
+      }
+    }
+
+    [Test]
+    public void JObjectPropertyNameWithJArray()
+    {
+      JObject o = new JObject(
+        new JProperty("ChildValue", "blah blah"));
+
+      dynamic d = o;
+
+      d.First = new JArray();
+      d.First.Add("Hi");
+
+      Assert.AreEqual(1, d.First.Count);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Could not determine JSON object type for type System.String[]."
+#endif
+      )]
+    public void JObjectPropertyNameWithNonToken()
+    {
+      dynamic d = new JObject();
+
+      d.First = new [] {"One", "II", "3"};
+    }
+
+    [Test]
+    public void JObjectMethods()
+    {
+      JObject o = new JObject(
+        new JProperty("ChildValue", "blah blah"));
+
+      dynamic d = o;
+
+      d.Add("NewValue", 1);
+
+      object count = d.Count;
+
+      Assert.IsNull(count);
+      Assert.IsNull(d["Count"]);
+
+      JToken v;
+      Assert.IsTrue(d.TryGetValue("ChildValue", out v));
+      Assert.AreEqual("blah blah", (string)v);
+    }
+
+    [Test]
+    public void JValueEquals()
+    {
+      JObject o = new JObject(
+        new JProperty("Null", new JValue(null, JTokenType.Null)),
+        new JProperty("Integer", new JValue(1)),
+        new JProperty("Float", new JValue(1.1d)),
+        new JProperty("Decimal", new JValue(1.1m)),
+        new JProperty("DateTime", new JValue(new DateTime(2000, 12, 29, 23, 51, 10, DateTimeKind.Utc))),
+        new JProperty("Boolean", new JValue(true)),
+        new JProperty("String", new JValue("A string lol!")),
+        new JProperty("Bytes", new JValue(Encoding.UTF8.GetBytes("A string lol!"))),
+        new JProperty("Uri", new Uri("http://json.codeplex.com/")),
+        new JProperty("Guid", new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF")),
+        new JProperty("TimeSpan", TimeSpan.FromDays(1))
+        );
+
+      dynamic d = o;
+
+      Assert.IsTrue(d.Null == d.Null);
+      Assert.IsTrue(d.Null == null);
+      Assert.IsTrue(d.Null == new JValue(null, JTokenType.Null));
+      Assert.IsFalse(d.Null == 1);
+
+      Assert.IsTrue(d.Integer == d.Integer);
+      Assert.IsTrue(d.Integer > 0);
+      Assert.IsTrue(d.Integer > 0.0m);
+      Assert.IsTrue(d.Integer > 0.0f);
+      Assert.IsTrue(d.Integer > null);
+      Assert.IsTrue(d.Integer >= null);
+      Assert.IsTrue(d.Integer == 1);
+      Assert.IsTrue(d.Integer == 1m);
+      Assert.IsTrue(d.Integer != 1.1f);
+      Assert.IsTrue(d.Integer != 1.1d);
+
+      Assert.IsTrue(d.Decimal == d.Decimal);
+      Assert.IsTrue(d.Decimal > 0);
+      Assert.IsTrue(d.Decimal > 0.0m);
+      Assert.IsTrue(d.Decimal > 0.0f);
+      Assert.IsTrue(d.Decimal > null);
+      Assert.IsTrue(d.Decimal >= null);
+      Assert.IsTrue(d.Decimal == 1.1);
+      Assert.IsTrue(d.Decimal == 1.1m);
+      Assert.IsTrue(d.Decimal != 1.0f);
+      Assert.IsTrue(d.Decimal != 1.0d);
+
+      Assert.IsTrue(d.Float == d.Float);
+      Assert.IsTrue(d.Float > 0);
+      Assert.IsTrue(d.Float > 0.0m);
+      Assert.IsTrue(d.Float > 0.0f);
+      Assert.IsTrue(d.Float > null);
+      Assert.IsTrue(d.Float >= null);
+      Assert.IsTrue(d.Float < 2);
+      Assert.IsTrue(d.Float <= 1.1);
+      Assert.IsTrue(d.Float == 1.1);
+      Assert.IsTrue(d.Float == 1.1m);
+      Assert.IsTrue(d.Float != 1.0f);
+      Assert.IsTrue(d.Float != 1.0d);
+
+      Assert.IsTrue(d.Bytes == d.Bytes);
+      Assert.IsTrue(d.Bytes == Encoding.UTF8.GetBytes("A string lol!"));
+      Assert.IsTrue(d.Bytes == new JValue(Encoding.UTF8.GetBytes("A string lol!")));
+
+      Assert.IsTrue(d.Uri == d.Uri);
+      Assert.IsTrue(d.Uri == new Uri("http://json.codeplex.com/"));
+      Assert.IsTrue(d.Uri > new Uri("http://abc.org/"));
+      Assert.IsTrue(d.Uri >= new Uri("http://abc.com/"));
+      Assert.IsTrue(d.Uri > null);
+      Assert.IsTrue(d.Uri >= null);
+
+      Assert.IsTrue(d.Guid == d.Guid);
+      Assert.IsTrue(d.Guid == new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF"));
+      Assert.IsTrue(d.Guid > new Guid("AAAAAAAA-0D80-44F2-BF34-4654156FA7AF"));
+      Assert.IsTrue(d.Guid >= new Guid("AAAAAAAA-0D80-44F2-BF34-4654156FA7AF"));
+      Assert.IsTrue(d.Guid > null);
+      Assert.IsTrue(d.Guid >= null);
+
+      Assert.IsTrue(d.TimeSpan == d.TimeSpan);
+      Assert.IsTrue(d.TimeSpan == TimeSpan.FromDays(1));
+      Assert.IsTrue(d.TimeSpan > TimeSpan.FromHours(1));
+      Assert.IsTrue(d.TimeSpan >= TimeSpan.FromHours(1));
+      Assert.IsTrue(d.TimeSpan > null);
+      Assert.IsTrue(d.TimeSpan >= null);
+    }
+
+    [Test]
+    public void JValueAddition()
+    {
+      JObject o = new JObject(
+        new JProperty("Null", new JValue(null, JTokenType.Null)),
+        new JProperty("Integer", new JValue(1)),
+        new JProperty("Float", new JValue(1.1d)),
+        new JProperty("Decimal", new JValue(1.1m)),
+        new JProperty("DateTime", new JValue(new DateTime(2000, 12, 29, 23, 51, 10, DateTimeKind.Utc))),
+        new JProperty("Boolean", new JValue(true)),
+        new JProperty("String", new JValue("A string lol!")),
+        new JProperty("Bytes", new JValue(Encoding.UTF8.GetBytes("A string lol!"))),
+        new JProperty("Uri", new Uri("http://json.codeplex.com/")),
+        new JProperty("Guid", new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF")),
+        new JProperty("TimeSpan", TimeSpan.FromDays(1))
+        );
+
+      dynamic d = o;
+      dynamic r;
+
+      #region Add
+      r = d.String + " LAMO!";
+      Assert.AreEqual("A string lol! LAMO!", (string)r);
+      r += " gg";
+      Assert.AreEqual("A string lol! LAMO! gg", (string)r);
+
+      r = d.String + null;
+      Assert.AreEqual("A string lol!", (string)r);
+      r += null;
+      Assert.AreEqual("A string lol!", (string)r);
+
+      r = d.Integer + 1;
+      Assert.AreEqual(2, (int)r);
+      r += 2;
+      Assert.AreEqual(4, (int)r);
+
+      r = d.Integer + 1.1;
+      Assert.AreEqual(2.1, (double)r);
+      r += 2;
+      Assert.AreEqual(4.1, (double)r);
+
+      r = d.Integer + 1.1d;
+      Assert.AreEqual(2.1m, (decimal)r);
+      r += 2;
+      Assert.AreEqual(4.1m, (decimal)r);
+
+      r = d.Integer + null;
+      Assert.AreEqual(null, r.Value);
+      r += 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Float + 1;
+      Assert.AreEqual(2.1d, (double)r);
+      r += 2;
+      Assert.AreEqual(4.1d, (double)r);
+
+      r = d.Float + 1.1;
+      Assert.AreEqual(2.2d, (double)r);
+      r += 2;
+      Assert.AreEqual(4.2d, (double)r);
+
+      r = d.Float + 1.1d;
+      Assert.AreEqual(2.2m, (decimal)r);
+      r += 2;
+      Assert.AreEqual(4.2m, (decimal)r);
+
+      r = d.Float + null;
+      Assert.AreEqual(null, r.Value);
+      r += 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Decimal + 1;
+      Assert.AreEqual(2.1m, (decimal)r);
+      r += 2;
+      Assert.AreEqual(4.1m, (decimal)r);
+
+      r = d.Decimal + 1.1;
+      Assert.AreEqual(2.2m, (decimal)r);
+      r += 2;
+      Assert.AreEqual(4.2m, (decimal)r);
+
+      r = d.Decimal + 1.1d;
+      Assert.AreEqual(2.2m, (decimal)r);
+      r += 2;
+      Assert.AreEqual(4.2m, (decimal)r);
+
+      r = d.Decimal + null;
+      Assert.AreEqual(null, r.Value);
+      r += 2;
+      Assert.AreEqual(null, r.Value);
+      #endregion
+
+      #region Subtract
+      r = d.Integer - 1;
+      Assert.AreEqual(0, (int)r);
+      r -= 2;
+      Assert.AreEqual(-2, (int)r);
+
+      r = d.Integer - 1.1;
+      Assert.AreEqual(-0.1d, (double)r, 0.00001);
+      r -= 2;
+      Assert.AreEqual(-2.1d, (double)r);
+
+      r = d.Integer - 1.1d;
+      Assert.AreEqual(-0.1m, (decimal)r);
+      r -= 2;
+      Assert.AreEqual(-2.1m, (decimal)r);
+
+      r = d.Integer - null;
+      Assert.AreEqual(null, r.Value);
+      r -= 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Float - 1;
+      Assert.AreEqual(0.1d, (double)r, 0.00001);
+      r -= 2;
+      Assert.AreEqual(-1.9d, (double)r);
+
+      r = d.Float - 1.1;
+      Assert.AreEqual(0d, (double)r);
+      r -= 2;
+      Assert.AreEqual(-2d, (double)r);
+
+      r = d.Float - 1.1d;
+      Assert.AreEqual(0m, (decimal)r);
+      r -= 2;
+      Assert.AreEqual(-2m, (decimal)r);
+
+      r = d.Float - null;
+      Assert.AreEqual(null, r.Value);
+      r -= 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Decimal - 1;
+      Assert.AreEqual(0.1m, (decimal)r);
+      r -= 2;
+      Assert.AreEqual(-1.9m, (decimal)r);
+
+      r = d.Decimal - 1.1;
+      Assert.AreEqual(0m, (decimal)r);
+      r -= 2;
+      Assert.AreEqual(-2m, (decimal)r);
+
+      r = d.Decimal - 1.1d;
+      Assert.AreEqual(0m, (decimal)r);
+      r -= 2;
+      Assert.AreEqual(-2m, (decimal)r);
+
+      r = d.Decimal - null;
+      Assert.AreEqual(null, r.Value);
+      r -= 2;
+      Assert.AreEqual(null, r.Value);
+      #endregion
+
+      #region Multiply
+      r = d.Integer * 1;
+      Assert.AreEqual(1, (int)r);
+      r *= 2;
+      Assert.AreEqual(2, (int)r);
+
+      r = d.Integer * 1.1;
+      Assert.AreEqual(1.1d, (double)r);
+      r *= 2;
+      Assert.AreEqual(2.2d, (double)r);
+
+      r = d.Integer * 1.1d;
+      Assert.AreEqual(1.1m, (decimal)r);
+      r *= 2;
+      Assert.AreEqual(2.2m, (decimal)r);
+
+      r = d.Integer * null;
+      Assert.AreEqual(null, r.Value);
+      r *= 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Float * 1;
+      Assert.AreEqual(1.1d, (double)r);
+      r *= 2;
+      Assert.AreEqual(2.2d, (double)r);
+
+      r = d.Float * 1.1;
+      Assert.AreEqual(1.21d, (double)r, 0.00001);
+      r *= 2;
+      Assert.AreEqual(2.42d, (double)r, 0.00001);
+
+      r = d.Float * 1.1d;
+      Assert.AreEqual(1.21m, (decimal)r);
+      r *= 2;
+      Assert.AreEqual(2.42m, (decimal)r);
+
+      r = d.Float * null;
+      Assert.AreEqual(null, r.Value);
+      r *= 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Decimal * 1;
+      Assert.AreEqual(1.1m, (decimal)r);
+      r *= 2;
+      Assert.AreEqual(2.2m, (decimal)r);
+
+      r = d.Decimal * 1.1;
+      Assert.AreEqual(1.21m, (decimal)r);
+      r *= 2;
+      Assert.AreEqual(2.42m, (decimal)r);
+
+      r = d.Decimal * 1.1d;
+      Assert.AreEqual(1.21m, (decimal)r);
+      r *= 2;
+      Assert.AreEqual(2.42m, (decimal)r);
+
+      r = d.Decimal * null;
+      Assert.AreEqual(null, r.Value);
+      r *= 2;
+      Assert.AreEqual(null, r.Value);
+      #endregion
+
+      #region Divide
+      r = d.Integer / 1;
+      Assert.AreEqual(1, (int)r);
+      r /= 2;
+      Assert.AreEqual(0, (int)r);
+
+      r = d.Integer / 1.1;
+      Assert.AreEqual(0.9090909090909091d, (double)r);
+      r /= 2;
+      Assert.AreEqual(0.454545454545455d, (double)r, 0.00001);
+
+      r = d.Integer / 1.1d;
+      Assert.AreEqual(0.909090909090909m, (decimal)r);
+      r /= 2;
+      Assert.AreEqual(0.454545454545454m, (decimal)r);
+
+      r = d.Integer / null;
+      Assert.AreEqual(null, r.Value);
+      r /= 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Float / 1;
+      Assert.AreEqual(1.1d, (double)r);
+      r /= 2;
+      Assert.AreEqual(0.55d, (double)r);
+
+      r = d.Float / 1.1;
+      Assert.AreEqual(1d, (double)r, 0.00001);
+      r /= 2;
+      Assert.AreEqual(0.5d, (double)r, 0.00001);
+
+      r = d.Float / 1.1d;
+      Assert.AreEqual(1m, (decimal)r);
+      r /= 2;
+      Assert.AreEqual(0.5m, (decimal)r);
+
+      r = d.Float / null;
+      Assert.AreEqual(null, r.Value);
+      r /= 2;
+      Assert.AreEqual(null, r.Value);
+
+      r = d.Decimal / 1;
+      Assert.AreEqual(1.1m, (decimal)r);
+      r /= 2;
+      Assert.AreEqual(0.55m, (decimal)r);
+
+      r = d.Decimal / 1.1;
+      Assert.AreEqual(1m, (decimal)r);
+      r /= 2;
+      Assert.AreEqual(0.5m, (decimal)r);
+
+      r = d.Decimal / 1.1d;
+      Assert.AreEqual(1m, (decimal)r);
+      r /= 2;
+      Assert.AreEqual(0.5m, (decimal)r);
+
+      r = d.Decimal / null;
+      Assert.AreEqual(null, r.Value);
+      r /= 2;
+      Assert.AreEqual(null, r.Value);
+      #endregion
+    }
+
+    [Test]
+    public void JValueToString()
+    {
+      JObject o = new JObject(
+        new JProperty("Null", new JValue(null, JTokenType.Null)),
+        new JProperty("Integer", new JValue(1)),
+        new JProperty("Float", new JValue(1.1)),
+        new JProperty("DateTime", new JValue(new DateTime(2000, 12, 29, 23, 51, 10, DateTimeKind.Utc))),
+        new JProperty("Boolean", new JValue(true)),
+        new JProperty("String", new JValue("A string lol!")),
+        new JProperty("Bytes", new JValue(Encoding.UTF8.GetBytes("A string lol!"))),
+        new JProperty("Uri", new Uri("http://json.codeplex.com/")),
+        new JProperty("Guid", new Guid("EA27FE1D-0D80-44F2-BF34-4654156FA7AF")),
+        new JProperty("TimeSpan", TimeSpan.FromDays(1))
+        );
+
+      dynamic d = o;
+
+      Assert.AreEqual("", d.Null.ToString());
+      Assert.AreEqual("1", d.Integer.ToString());
+      Assert.AreEqual("1.1", d.Float.ToString(CultureInfo.InvariantCulture));
+      Assert.AreEqual("12/29/2000 23:51:10", d.DateTime.ToString(null, CultureInfo.InvariantCulture));
+      Assert.AreEqual("True", d.Boolean.ToString());
+      Assert.AreEqual("A string lol!", d.String.ToString());
+      Assert.AreEqual("System.Byte[]", d.Bytes.ToString());
+      Assert.AreEqual("http://json.codeplex.com/", d.Uri.ToString());
+      Assert.AreEqual("ea27fe1d-0d80-44f2-bf34-4654156fa7af", d.Guid.ToString());
+      Assert.AreEqual("1.00:00:00", d.TimeSpan.ToString());
+    }
+
+    [Test]
+    public void JObjectGetDynamicPropertyNames()
+    {
+      JObject o = new JObject(
+        new JProperty("ChildValue", "blah blah"),
+        new JProperty("Hello Joe", null));
+
+      dynamic d = o;
+
+      List<string> memberNames = o.GetDynamicMemberNames().ToList();
+
+      Assert.AreEqual(2, memberNames.Count);
+      Assert.AreEqual("ChildValue", memberNames[0]);
+      Assert.AreEqual("Hello Joe", memberNames[1]);
+
+      o = new JObject(
+        new JProperty("ChildValue1", "blah blah"),
+        new JProperty("Hello Joe1", null));
+
+      d = o;
+
+      memberNames = o.GetDynamicMemberNames().ToList();
+
+      Assert.AreEqual(2, memberNames.Count);
+      Assert.AreEqual("ChildValue1", memberNames[0]);
+      Assert.AreEqual("Hello Joe1", memberNames[1]);
+    }
+
+    [Test]
+    public void JValueConvert()
+    {
+      AssertValueConverted<bool>(true);
+      AssertValueConverted<bool?>(true);
+      AssertValueConverted<bool?>(false);
+      AssertValueConverted<bool?>(null);
+      AssertValueConverted<bool?>("true", true);
+      AssertValueConverted<byte[]>(null);
+      AssertValueConverted<byte[]>(Encoding.UTF8.GetBytes("blah"));
+      AssertValueConverted<DateTime>(new DateTime(2000, 12, 20, 23, 59, 2, DateTimeKind.Utc));
+      AssertValueConverted<DateTime?>(new DateTime(2000, 12, 20, 23, 59, 2, DateTimeKind.Utc));
+      AssertValueConverted<DateTime?>(null);
+      AssertValueConverted<DateTimeOffset>(new DateTimeOffset(2000, 12, 20, 23, 59, 2, TimeSpan.FromHours(1)));
+      AssertValueConverted<DateTimeOffset?>(new DateTimeOffset(2000, 12, 20, 23, 59, 2, TimeSpan.FromHours(1)));
+      AssertValueConverted<DateTimeOffset?>(null);
+      AssertValueConverted<decimal>(99.9m);
+      AssertValueConverted<decimal?>(99.9m);
+      AssertValueConverted<decimal>(1m);
+      AssertValueConverted<decimal>(1.1f, 1.1m);
+      AssertValueConverted<decimal>("1.1", 1.1m);
+      AssertValueConverted<double>(99.9);
+      AssertValueConverted<double>(99.9d);
+      AssertValueConverted<double?>(99.9d);
+      AssertValueConverted<float>(99.9f);
+      AssertValueConverted<float?>(99.9f);
+      AssertValueConverted<int>(int.MinValue);
+      AssertValueConverted<int?>(int.MinValue);
+      AssertValueConverted<long>(long.MaxValue);
+      AssertValueConverted<long?>(long.MaxValue);
+      AssertValueConverted<short>(short.MaxValue);
+      AssertValueConverted<short?>(short.MaxValue);
+      AssertValueConverted<string>("blah");
+      AssertValueConverted<string>(null);
+      AssertValueConverted<string>(1, "1");
+      AssertValueConverted<uint>(uint.MinValue);
+      AssertValueConverted<uint?>(uint.MinValue);
+      AssertValueConverted<uint?>("1", (uint)1);
+      AssertValueConverted<ulong>(ulong.MaxValue);
+      AssertValueConverted<ulong?>(ulong.MaxValue);
+      AssertValueConverted<ushort>(ushort.MinValue);
+      AssertValueConverted<ushort?>(ushort.MinValue);
+      AssertValueConverted<ushort?>(null);
+      AssertValueConverted<TimeSpan>(TimeSpan.FromDays(1));
+      AssertValueConverted<TimeSpan?>(TimeSpan.FromDays(1));
+      AssertValueConverted<TimeSpan?>(null);
+      AssertValueConverted<Guid>(new Guid("60304274-CD13-4060-B38C-057C8557AB54"));
+      AssertValueConverted<Guid?>(new Guid("60304274-CD13-4060-B38C-057C8557AB54"));
+      AssertValueConverted<Guid?>(null);
+      AssertValueConverted<Uri>(new Uri("http://json.codeplex.com/"));
+      AssertValueConverted<Uri>(null);
+    }
+
+    private static void AssertValueConverted<T>(object value)
+    {
+      AssertValueConverted<T>(value, value);
+    }
+
+    private static void AssertValueConverted<T>(object value, object expected)
+    {
+      JValue v = new JValue(value);
+      dynamic d = v;
+
+      T t = d;
+      Assert.AreEqual(expected, t);
+    }
+
+    [Test]
+    public void DynamicSerializerExample()
+    {
+      dynamic value = new DynamicDictionary();
+
+      value.Name = "Arine Admin";
+      value.Enabled = true;
+      value.Roles = new[] {"Admin", "User"};
+
+      string json = JsonConvert.SerializeObject(value, Formatting.Indented);
+      // {
+      //   "Name": "Arine Admin",
+      //   "Enabled": true,
+      //   "Roles": [
+      //     "Admin",
+      //     "User"
+      //   ]
+      // }
+
+      dynamic newValue = JsonConvert.DeserializeObject<DynamicDictionary>(json);
+
+      string role = newValue.Roles[0];
+      // Admin
+    }
+
+    [Test]
+    public void DynamicLinqExample()
+    {
+      JObject oldAndBusted = new JObject();
+      oldAndBusted["Name"] = "Arnie Admin";
+      oldAndBusted["Enabled"] = true;
+      oldAndBusted["Roles"] = new JArray(new[] { "Admin", "User" });
+
+      string oldRole = (string) oldAndBusted["Roles"][0];
+      // Admin
+
+
+      dynamic newHotness = new JObject();
+      newHotness.Name = "Arnie Admin";
+      newHotness.Enabled = true;
+      newHotness.Roles = new JArray(new[] { "Admin", "User" });
+
+      string newRole = newHotness.Roles[0];
+      // Admin
+    }
+
+    [Test]
+    public void ImprovedDynamicLinqExample()
+    {
+      dynamic product = new JObject();
+      product.ProductName = "Elbow Grease";
+      product.Enabled = true;
+      product.Price = 4.90m;
+      product.StockCount = 9000;
+      product.StockValue = 44100;
+
+      // All Elbow Grease must go sale!
+      // 50% off price
+
+      product.Price = product.Price / 2;
+      product.StockValue = product.StockCount * product.Price;
+      product.ProductName = product.ProductName + " (SALE)";
+
+      string json = product.ToString();
+      // {
+      //   "ProductName": "Elbow Grease (SALE)",
+      //   "Enabled": true,
+      //   "Price": 2.45,
+      //   "StockCount": 9000,
+      //   "StockValue": 22050.0
+      // }
+
+      Assert.AreEqual(@"{
+  ""ProductName"": ""Elbow Grease (SALE)"",
+  ""Enabled"": true,
+  ""Price"": 2.45,
+  ""StockCount"": 9000,
+  ""StockValue"": 22050.0
+}", json);
+    }
+
+    public class DynamicDictionary : DynamicObject
+    {
+      private readonly IDictionary<string, object> _values = new Dictionary<string, object>();
+
+      public override IEnumerable<string> GetDynamicMemberNames()
+      {
+        return _values.Keys;
+      }
+
+      public override bool TryGetMember(GetMemberBinder binder, out object result)
+      {
+        result = _values[binder.Name];
+        return true;
+      }
+
+      public override bool TrySetMember(SetMemberBinder binder, object value)
+      {
+        _values[binder.Name] = value;
+        return true;
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JArrayTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JArrayTests.cs
@@ -1,532 +1,532 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JArrayTests : TestFixtureBase
-  {
-    [Test]
-    public void Clear()
-    {
-      JArray a = new JArray { 1 };
-      Assert.AreEqual(1, a.Count);
-
-      a.Clear();
-      Assert.AreEqual(0, a.Count);
-    }
-
-    [Test]
-    public void AddToSelf()
-    {
-      JArray a = new JArray();
-      a.Add(a);
-
-      Assert.IsFalse(ReferenceEquals(a[0], a));
-    }
-
-    [Test]
-    public void Contains()
-    {
-      JValue v = new JValue(1);
-
-      JArray a = new JArray { v };
-
-      Assert.AreEqual(false, a.Contains(new JValue(2)));
-      Assert.AreEqual(false, a.Contains(new JValue(1)));
-      Assert.AreEqual(false, a.Contains(null));
-      Assert.AreEqual(true, a.Contains(v));
-    }
-
-    [Test]
-    public void GenericCollectionCopyTo()
-    {
-      JArray j = new JArray();
-      j.Add(new JValue(1));
-      j.Add(new JValue(2));
-      j.Add(new JValue(3));
-      Assert.AreEqual(3, j.Count);
-
-      JToken[] a = new JToken[5];
-
-      ((ICollection<JToken>)j).CopyTo(a, 1);
-
-      Assert.AreEqual(null, a[0]);
-
-      Assert.AreEqual(1, (int)a[1]);
-
-      Assert.AreEqual(2, (int)a[2]);
-
-      Assert.AreEqual(3, (int)a[3]);
-
-      Assert.AreEqual(null, a[4]);
-
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentNullException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Value cannot be null.
-Parameter name: array"
-#endif
-      )]
-    public void GenericCollectionCopyToNullArrayShouldThrow()
-    {
-      JArray j = new JArray();
-      ((ICollection<JToken>)j).CopyTo(null, 0);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"arrayIndex is less than 0.
-Parameter name: arrayIndex"
-#endif
-      )]
-    public void GenericCollectionCopyToNegativeArrayIndexShouldThrow()
-    {
-      JArray j = new JArray();
-      ((ICollection<JToken>)j).CopyTo(new JToken[1], -1);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"arrayIndex is equal to or greater than the length of array."
-#endif
-      )]
-    public void GenericCollectionCopyToArrayIndexEqualGreaterToArrayLengthShouldThrow()
-    {
-      JArray j = new JArray();
-      ((ICollection<JToken>)j).CopyTo(new JToken[1], 1);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array."
-#endif
-      )]
-    public void GenericCollectionCopyToInsufficientArrayCapacity()
-    {
-      JArray j = new JArray();
-      j.Add(new JValue(1));
-      j.Add(new JValue(2));
-      j.Add(new JValue(3));
-
-      ((ICollection<JToken>)j).CopyTo(new JToken[3], 1);
-    }
-
-    [Test]
-    public void Remove()
-    {
-      JValue v = new JValue(1);
-      JArray j = new JArray();
-      j.Add(v);
-
-      Assert.AreEqual(1, j.Count);
-
-      Assert.AreEqual(false, j.Remove(new JValue(1)));
-      Assert.AreEqual(false, j.Remove(null));
-      Assert.AreEqual(true, j.Remove(v));
-      Assert.AreEqual(false, j.Remove(v));
-
-      Assert.AreEqual(0, j.Count);
-    }
-
-    [Test]
-    public void IndexOf()
-    {
-      JValue v1 = new JValue(1);
-      JValue v2 = new JValue(1);
-      JValue v3 = new JValue(1);
-
-      JArray j = new JArray();
-
-      j.Add(v1);
-      Assert.AreEqual(0, j.IndexOf(v1));
-
-      j.Add(v2);
-      Assert.AreEqual(0, j.IndexOf(v1));
-      Assert.AreEqual(1, j.IndexOf(v2));
-
-      j.AddFirst(v3);
-      Assert.AreEqual(1, j.IndexOf(v1));
-      Assert.AreEqual(2, j.IndexOf(v2));
-      Assert.AreEqual(0, j.IndexOf(v3));
-
-      v3.Remove();
-      Assert.AreEqual(0, j.IndexOf(v1));
-      Assert.AreEqual(1, j.IndexOf(v2));
-      Assert.AreEqual(-1, j.IndexOf(v3));
-    }
-
-    [Test]
-    public void RemoveAt()
-    {
-      JValue v1 = new JValue(1);
-      JValue v2 = new JValue(1);
-      JValue v3 = new JValue(1);
-
-      JArray j = new JArray();
-
-      j.Add(v1);
-      j.Add(v2);
-      j.Add(v3);
-
-      Assert.AreEqual(true, j.Contains(v1));
-      j.RemoveAt(0);
-      Assert.AreEqual(false, j.Contains(v1));
-
-      Assert.AreEqual(true, j.Contains(v3));
-      j.RemoveAt(1);
-      Assert.AreEqual(false, j.Contains(v3));
-
-      Assert.AreEqual(1, j.Count);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Index is equal to or greater than Count.
-Parameter name: index"
-#endif
-      )]
-    public void RemoveAtOutOfRangeIndexShouldError()
-    {
-      JArray j = new JArray();
-      j.RemoveAt(0);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Index is less than 0.
-Parameter name: index"
-#endif
-      )]
-    public void RemoveAtNegativeIndexShouldError()
-    {
-      JArray j = new JArray();
-      j.RemoveAt(-1);
-    }
-
-    [Test]
-    public void Insert()
-    {
-      JValue v1 = new JValue(1);
-      JValue v2 = new JValue(2);
-      JValue v3 = new JValue(3);
-      JValue v4 = new JValue(4);
-
-      JArray j = new JArray();
-
-      j.Add(v1);
-      j.Add(v2);
-      j.Add(v3);
-      j.Insert(1, v4);
-
-      Assert.AreEqual(0, j.IndexOf(v1));
-      Assert.AreEqual(1, j.IndexOf(v4));
-      Assert.AreEqual(2, j.IndexOf(v2));
-      Assert.AreEqual(3, j.IndexOf(v3));
-    }
-
-    [Test]
-    public void AddFirstAddedTokenShouldBeFirst()
-    {
-      JValue v1 = new JValue(1);
-      JValue v2 = new JValue(2);
-      JValue v3 = new JValue(3);
-
-      JArray j = new JArray();
-      Assert.AreEqual(null, j.First);
-      Assert.AreEqual(null, j.Last);
-
-      j.AddFirst(v1);
-      Assert.AreEqual(v1, j.First);
-      Assert.AreEqual(v1, j.Last);
-
-      j.AddFirst(v2);
-      Assert.AreEqual(v2, j.First);
-      Assert.AreEqual(v1, j.Last);
-
-      j.AddFirst(v3);
-      Assert.AreEqual(v3, j.First);
-      Assert.AreEqual(v1, j.Last);
-    }
-
-    [Test]
-    public void InsertShouldInsertAtZeroIndex()
-    {
-      JValue v1 = new JValue(1);
-      JValue v2 = new JValue(2);
-
-      JArray j = new JArray();
-
-      j.Insert(0, v1);
-      Assert.AreEqual(0, j.IndexOf(v1));
-
-      j.Insert(0, v2);
-      Assert.AreEqual(1, j.IndexOf(v1));
-      Assert.AreEqual(0, j.IndexOf(v2));
-    }
-
-    [Test]
-    public void InsertNull()
-    {
-      JArray j = new JArray();
-      j.Insert(0, null);
-
-      Assert.AreEqual(null, ((JValue)j[0]).Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Index was out of range. Must be non-negative and less than the size of the collection.
-Parameter name: index"
-#endif
-      )]
-    public void InsertNegativeIndexShouldThrow()
-    {
-      JArray j = new JArray();
-      j.Insert(-1, new JValue(1));
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Index must be within the bounds of the List.
-Parameter name: index"
-#endif
-      )]
-    public void InsertOutOfRangeIndexShouldThrow()
-    {
-      JArray j = new JArray();
-      j.Insert(2, new JValue(1));
-    }
-
-    [Test]
-    public void Item()
-    {
-      JValue v1 = new JValue(1);
-      JValue v2 = new JValue(2);
-      JValue v3 = new JValue(3);
-      JValue v4 = new JValue(4);
-
-      JArray j = new JArray();
-
-      j.Add(v1);
-      j.Add(v2);
-      j.Add(v3);
-
-      j[1] = v4;
-
-      Assert.AreEqual(null, v2.Parent);
-      Assert.AreEqual(-1, j.IndexOf(v2));
-      Assert.AreEqual(j, v4.Parent);
-      Assert.AreEqual(1, j.IndexOf(v4));
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading JArray from JsonReader. Current JsonReader item is not an array: StartObject"
-#endif
-      )]
-    public void Parse_ShouldThrowOnUnexpectedToken()
-    {
-      string json = @"{""prop"":""value""}";
-      JArray.Parse(json);
-    }
-
-    public class ListItemFields
-    {
-      public string ListItemText { get; set; }
-      public object ListItemValue { get; set; }
-    }
-
-    [Test]
-    public void ArrayOrder()
-    {
-      string itemZeroText = "Zero text";
-
-      IEnumerable<ListItemFields> t = new List<ListItemFields>
-      {
-        new ListItemFields { ListItemText = "First", ListItemValue = 1 },
-        new ListItemFields { ListItemText = "Second", ListItemValue = 2 },
-        new ListItemFields { ListItemText = "Third", ListItemValue = 3 }
-      };
-
-      JObject optionValues =
-          new JObject(
-              new JProperty("options",
-                  new JArray(
-                      new JObject(
-                          new JProperty("text", itemZeroText),
-                          new JProperty("value", "0")),
-                          from r in t
-                          orderby r.ListItemValue
-                          select new JObject(
-                              new JProperty("text", r.ListItemText),
-                              new JProperty("value", r.ListItemValue.ToString())))));
-
-      string result = "myOptions = " + optionValues.ToString();
-
-      Assert.AreEqual(@"myOptions = {
-  ""options"": [
-    {
-      ""text"": ""Zero text"",
-      ""value"": ""0""
-    },
-    {
-      ""text"": ""First"",
-      ""value"": ""1""
-    },
-    {
-      ""text"": ""Second"",
-      ""value"": ""2""
-    },
-    {
-      ""text"": ""Third"",
-      ""value"": ""3""
-    }
-  ]
-}", result);
-    }
-
-    [Test]
-    public void Iterate()
-    {
-      JArray a = new JArray(1, 2, 3, 4, 5);
-
-      int i = 1;
-      foreach (JToken token in a)
-      {
-        Assert.AreEqual(i, (int)token);
-        i++;
-      }
-    }
-
-    
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void ITypedListGetItemProperties()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      ITypedList a = new JArray(new JObject(p1, p2));
-
-      PropertyDescriptorCollection propertyDescriptors = a.GetItemProperties(null);
-      Assert.IsNotNull(propertyDescriptors);
-      Assert.AreEqual(2, propertyDescriptors.Count);
-      Assert.AreEqual("Test1", propertyDescriptors[0].Name);
-      Assert.AreEqual("Test2", propertyDescriptors[1].Name);
-    }
-#endif
-
-    [Test]
-    public void AddArrayToSelf()
-    {
-      JArray a = new JArray(1, 2);
-      a.Add(a);
-
-      Assert.AreEqual(3, a.Count);
-      Assert.AreEqual(1, (int)a[0]);
-      Assert.AreEqual(2, (int)a[1]);
-      Assert.AreNotSame(a, a[2]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Set JArray values with invalid key value: ""badvalue"". Array position index expected."
-#endif
-      )]
-    public void SetValueWithInvalidIndex()
-    {
-      JArray a = new JArray();
-      a["badvalue"] = new JValue(3);
-    }
-
-    [Test]
-    public void SetValue()
-    {
-      object key = 0;
-
-      JArray a = new JArray((object)null);
-      a[key] = new JValue(3);
-
-      Assert.AreEqual(3, (int)a[key]);
-    }
-
-    [Test]
-    public void ReplaceAll()
-    {
-      JArray a = new JArray(new [] { 1, 2, 3 });
-      Assert.AreEqual(3, a.Count);
-      Assert.AreEqual(1, (int)a[0]);
-      Assert.AreEqual(2, (int)a[1]);
-      Assert.AreEqual(3, (int)a[2]);
-
-      a.ReplaceAll(1);
-      Assert.AreEqual(1, a.Count);
-      Assert.AreEqual(1, (int)a[0]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected end of content while loading JArray."
-#endif
-      )]
-    public void ParseIncomplete()
-    {
-      JArray.Parse("[1");
-    }
-
-    [Test]
-    public void InsertAddEnd()
-    {
-      JArray array = new JArray();
-      array.Insert(0, 123);
-      array.Insert(1, 456);
-
-      Assert.AreEqual(2, array.Count);
-      Assert.AreEqual(123, (int)array[0]);
-      Assert.AreEqual(456, (int)array[1]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Additional text encountered after finished reading JSON content: ,. Line 5, position 2."
-#endif
-      )]
-    public void ParseAdditionalContent()
-    {
-      string json = @"[
-""Small"",
-""Medium"",
-""Large""
-], 987987";
-
-      JArray.Parse(json);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JArrayTests : TestFixtureBase
+  {
+    [Test]
+    public void Clear()
+    {
+      JArray a = new JArray { 1 };
+      Assert.AreEqual(1, a.Count);
+
+      a.Clear();
+      Assert.AreEqual(0, a.Count);
+    }
+
+    [Test]
+    public void AddToSelf()
+    {
+      JArray a = new JArray();
+      a.Add(a);
+
+      Assert.IsFalse(ReferenceEquals(a[0], a));
+    }
+
+    [Test]
+    public void Contains()
+    {
+      JValue v = new JValue(1);
+
+      JArray a = new JArray { v };
+
+      Assert.AreEqual(false, a.Contains(new JValue(2)));
+      Assert.AreEqual(false, a.Contains(new JValue(1)));
+      Assert.AreEqual(false, a.Contains(null));
+      Assert.AreEqual(true, a.Contains(v));
+    }
+
+    [Test]
+    public void GenericCollectionCopyTo()
+    {
+      JArray j = new JArray();
+      j.Add(new JValue(1));
+      j.Add(new JValue(2));
+      j.Add(new JValue(3));
+      Assert.AreEqual(3, j.Count);
+
+      JToken[] a = new JToken[5];
+
+      ((ICollection<JToken>)j).CopyTo(a, 1);
+
+      Assert.AreEqual(null, a[0]);
+
+      Assert.AreEqual(1, (int)a[1]);
+
+      Assert.AreEqual(2, (int)a[2]);
+
+      Assert.AreEqual(3, (int)a[3]);
+
+      Assert.AreEqual(null, a[4]);
+
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentNullException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Value cannot be null.
+Parameter name: array"
+#endif
+      )]
+    public void GenericCollectionCopyToNullArrayShouldThrow()
+    {
+      JArray j = new JArray();
+      ((ICollection<JToken>)j).CopyTo(null, 0);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"arrayIndex is less than 0.
+Parameter name: arrayIndex"
+#endif
+      )]
+    public void GenericCollectionCopyToNegativeArrayIndexShouldThrow()
+    {
+      JArray j = new JArray();
+      ((ICollection<JToken>)j).CopyTo(new JToken[1], -1);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"arrayIndex is equal to or greater than the length of array."
+#endif
+      )]
+    public void GenericCollectionCopyToArrayIndexEqualGreaterToArrayLengthShouldThrow()
+    {
+      JArray j = new JArray();
+      ((ICollection<JToken>)j).CopyTo(new JToken[1], 1);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array."
+#endif
+      )]
+    public void GenericCollectionCopyToInsufficientArrayCapacity()
+    {
+      JArray j = new JArray();
+      j.Add(new JValue(1));
+      j.Add(new JValue(2));
+      j.Add(new JValue(3));
+
+      ((ICollection<JToken>)j).CopyTo(new JToken[3], 1);
+    }
+
+    [Test]
+    public void Remove()
+    {
+      JValue v = new JValue(1);
+      JArray j = new JArray();
+      j.Add(v);
+
+      Assert.AreEqual(1, j.Count);
+
+      Assert.AreEqual(false, j.Remove(new JValue(1)));
+      Assert.AreEqual(false, j.Remove(null));
+      Assert.AreEqual(true, j.Remove(v));
+      Assert.AreEqual(false, j.Remove(v));
+
+      Assert.AreEqual(0, j.Count);
+    }
+
+    [Test]
+    public void IndexOf()
+    {
+      JValue v1 = new JValue(1);
+      JValue v2 = new JValue(1);
+      JValue v3 = new JValue(1);
+
+      JArray j = new JArray();
+
+      j.Add(v1);
+      Assert.AreEqual(0, j.IndexOf(v1));
+
+      j.Add(v2);
+      Assert.AreEqual(0, j.IndexOf(v1));
+      Assert.AreEqual(1, j.IndexOf(v2));
+
+      j.AddFirst(v3);
+      Assert.AreEqual(1, j.IndexOf(v1));
+      Assert.AreEqual(2, j.IndexOf(v2));
+      Assert.AreEqual(0, j.IndexOf(v3));
+
+      v3.Remove();
+      Assert.AreEqual(0, j.IndexOf(v1));
+      Assert.AreEqual(1, j.IndexOf(v2));
+      Assert.AreEqual(-1, j.IndexOf(v3));
+    }
+
+    [Test]
+    public void RemoveAt()
+    {
+      JValue v1 = new JValue(1);
+      JValue v2 = new JValue(1);
+      JValue v3 = new JValue(1);
+
+      JArray j = new JArray();
+
+      j.Add(v1);
+      j.Add(v2);
+      j.Add(v3);
+
+      Assert.AreEqual(true, j.Contains(v1));
+      j.RemoveAt(0);
+      Assert.AreEqual(false, j.Contains(v1));
+
+      Assert.AreEqual(true, j.Contains(v3));
+      j.RemoveAt(1);
+      Assert.AreEqual(false, j.Contains(v3));
+
+      Assert.AreEqual(1, j.Count);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Index is equal to or greater than Count.
+Parameter name: index"
+#endif
+      )]
+    public void RemoveAtOutOfRangeIndexShouldError()
+    {
+      JArray j = new JArray();
+      j.RemoveAt(0);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Index is less than 0.
+Parameter name: index"
+#endif
+      )]
+    public void RemoveAtNegativeIndexShouldError()
+    {
+      JArray j = new JArray();
+      j.RemoveAt(-1);
+    }
+
+    [Test]
+    public void Insert()
+    {
+      JValue v1 = new JValue(1);
+      JValue v2 = new JValue(2);
+      JValue v3 = new JValue(3);
+      JValue v4 = new JValue(4);
+
+      JArray j = new JArray();
+
+      j.Add(v1);
+      j.Add(v2);
+      j.Add(v3);
+      j.Insert(1, v4);
+
+      Assert.AreEqual(0, j.IndexOf(v1));
+      Assert.AreEqual(1, j.IndexOf(v4));
+      Assert.AreEqual(2, j.IndexOf(v2));
+      Assert.AreEqual(3, j.IndexOf(v3));
+    }
+
+    [Test]
+    public void AddFirstAddedTokenShouldBeFirst()
+    {
+      JValue v1 = new JValue(1);
+      JValue v2 = new JValue(2);
+      JValue v3 = new JValue(3);
+
+      JArray j = new JArray();
+      Assert.AreEqual(null, j.First);
+      Assert.AreEqual(null, j.Last);
+
+      j.AddFirst(v1);
+      Assert.AreEqual(v1, j.First);
+      Assert.AreEqual(v1, j.Last);
+
+      j.AddFirst(v2);
+      Assert.AreEqual(v2, j.First);
+      Assert.AreEqual(v1, j.Last);
+
+      j.AddFirst(v3);
+      Assert.AreEqual(v3, j.First);
+      Assert.AreEqual(v1, j.Last);
+    }
+
+    [Test]
+    public void InsertShouldInsertAtZeroIndex()
+    {
+      JValue v1 = new JValue(1);
+      JValue v2 = new JValue(2);
+
+      JArray j = new JArray();
+
+      j.Insert(0, v1);
+      Assert.AreEqual(0, j.IndexOf(v1));
+
+      j.Insert(0, v2);
+      Assert.AreEqual(1, j.IndexOf(v1));
+      Assert.AreEqual(0, j.IndexOf(v2));
+    }
+
+    [Test]
+    public void InsertNull()
+    {
+      JArray j = new JArray();
+      j.Insert(0, null);
+
+      Assert.AreEqual(null, ((JValue)j[0]).Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Index was out of range. Must be non-negative and less than the size of the collection.
+Parameter name: index"
+#endif
+      )]
+    public void InsertNegativeIndexShouldThrow()
+    {
+      JArray j = new JArray();
+      j.Insert(-1, new JValue(1));
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Index must be within the bounds of the List.
+Parameter name: index"
+#endif
+      )]
+    public void InsertOutOfRangeIndexShouldThrow()
+    {
+      JArray j = new JArray();
+      j.Insert(2, new JValue(1));
+    }
+
+    [Test]
+    public void Item()
+    {
+      JValue v1 = new JValue(1);
+      JValue v2 = new JValue(2);
+      JValue v3 = new JValue(3);
+      JValue v4 = new JValue(4);
+
+      JArray j = new JArray();
+
+      j.Add(v1);
+      j.Add(v2);
+      j.Add(v3);
+
+      j[1] = v4;
+
+      Assert.AreEqual(null, v2.Parent);
+      Assert.AreEqual(-1, j.IndexOf(v2));
+      Assert.AreEqual(j, v4.Parent);
+      Assert.AreEqual(1, j.IndexOf(v4));
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading JArray from JsonReader. Current JsonReader item is not an array: StartObject"
+#endif
+      )]
+    public void Parse_ShouldThrowOnUnexpectedToken()
+    {
+      string json = @"{""prop"":""value""}";
+      JArray.Parse(json);
+    }
+
+    public class ListItemFields
+    {
+      public string ListItemText { get; set; }
+      public object ListItemValue { get; set; }
+    }
+
+    [Test]
+    public void ArrayOrder()
+    {
+      string itemZeroText = "Zero text";
+
+      IEnumerable<ListItemFields> t = new List<ListItemFields>
+      {
+        new ListItemFields { ListItemText = "First", ListItemValue = 1 },
+        new ListItemFields { ListItemText = "Second", ListItemValue = 2 },
+        new ListItemFields { ListItemText = "Third", ListItemValue = 3 }
+      };
+
+      JObject optionValues =
+          new JObject(
+              new JProperty("options",
+                  new JArray(
+                      new JObject(
+                          new JProperty("text", itemZeroText),
+                          new JProperty("value", "0")),
+                          from r in t
+                          orderby r.ListItemValue
+                          select new JObject(
+                              new JProperty("text", r.ListItemText),
+                              new JProperty("value", r.ListItemValue.ToString())))));
+
+      string result = "myOptions = " + optionValues.ToString();
+
+      Assert.AreEqual(@"myOptions = {
+  ""options"": [
+    {
+      ""text"": ""Zero text"",
+      ""value"": ""0""
+    },
+    {
+      ""text"": ""First"",
+      ""value"": ""1""
+    },
+    {
+      ""text"": ""Second"",
+      ""value"": ""2""
+    },
+    {
+      ""text"": ""Third"",
+      ""value"": ""3""
+    }
+  ]
+}", result);
+    }
+
+    [Test]
+    public void Iterate()
+    {
+      JArray a = new JArray(1, 2, 3, 4, 5);
+
+      int i = 1;
+      foreach (JToken token in a)
+      {
+        Assert.AreEqual(i, (int)token);
+        i++;
+      }
+    }
+
+    
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void ITypedListGetItemProperties()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      ITypedList a = new JArray(new JObject(p1, p2));
+
+      PropertyDescriptorCollection propertyDescriptors = a.GetItemProperties(null);
+      Assert.IsNotNull(propertyDescriptors);
+      Assert.AreEqual(2, propertyDescriptors.Count);
+      Assert.AreEqual("Test1", propertyDescriptors[0].Name);
+      Assert.AreEqual("Test2", propertyDescriptors[1].Name);
+    }
+#endif
+
+    [Test]
+    public void AddArrayToSelf()
+    {
+      JArray a = new JArray(1, 2);
+      a.Add(a);
+
+      Assert.AreEqual(3, a.Count);
+      Assert.AreEqual(1, (int)a[0]);
+      Assert.AreEqual(2, (int)a[1]);
+      Assert.AreNotSame(a, a[2]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Set JArray values with invalid key value: ""badvalue"". Array position index expected."
+#endif
+      )]
+    public void SetValueWithInvalidIndex()
+    {
+      JArray a = new JArray();
+      a["badvalue"] = new JValue(3);
+    }
+
+    [Test]
+    public void SetValue()
+    {
+      object key = 0;
+
+      JArray a = new JArray((object)null);
+      a[key] = new JValue(3);
+
+      Assert.AreEqual(3, (int)a[key]);
+    }
+
+    [Test]
+    public void ReplaceAll()
+    {
+      JArray a = new JArray(new [] { 1, 2, 3 });
+      Assert.AreEqual(3, a.Count);
+      Assert.AreEqual(1, (int)a[0]);
+      Assert.AreEqual(2, (int)a[1]);
+      Assert.AreEqual(3, (int)a[2]);
+
+      a.ReplaceAll(1);
+      Assert.AreEqual(1, a.Count);
+      Assert.AreEqual(1, (int)a[0]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected end of content while loading JArray."
+#endif
+      )]
+    public void ParseIncomplete()
+    {
+      JArray.Parse("[1");
+    }
+
+    [Test]
+    public void InsertAddEnd()
+    {
+      JArray array = new JArray();
+      array.Insert(0, 123);
+      array.Insert(1, 456);
+
+      Assert.AreEqual(2, array.Count);
+      Assert.AreEqual(123, (int)array[0]);
+      Assert.AreEqual(456, (int)array[1]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Additional text encountered after finished reading JSON content: ,. Line 5, position 2."
+#endif
+      )]
+    public void ParseAdditionalContent()
+    {
+      string json = @"[
+""Small"",
+""Medium"",
+""Large""
+], 987987";
+
+      JArray.Parse(json);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JConstructorTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JConstructorTests.cs
@@ -1,82 +1,82 @@
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using System.IO;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JConstructorTests : TestFixtureBase
-  {
-    [Test]
-    public void Load()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader("new Date(123)"));
-      reader.Read();
-
-      JConstructor constructor = JConstructor.Load(reader);
-      Assert.AreEqual("Date", constructor.Name);
-      Assert.IsTrue(JToken.DeepEquals(new JValue(123), constructor.Values().ElementAt(0)));
-    }
-
-    [Test]
-    public void CreateWithMultiValue()
-    {
-      JConstructor constructor = new JConstructor("Test", new List<int> { 1, 2, 3 });
-      Assert.AreEqual("Test", constructor.Name);
-      Assert.AreEqual(3, constructor.Children().Count());
-      Assert.AreEqual(1, (int)constructor.Children().ElementAt(0));
-      Assert.AreEqual(2, (int)constructor.Children().ElementAt(1));
-      Assert.AreEqual(3, (int)constructor.Children().ElementAt(2));
-    }
-
-    [Test]
-    public void Iterate()
-    {
-      JConstructor c = new JConstructor("MrConstructor", 1, 2, 3, 4, 5);
-
-      int i = 1;
-      foreach (JToken token in c)
-      {
-        Assert.AreEqual(i, (int)token);
-        i++;
-      }
-    }
-
-    [Test]
-    public void SetValueWithInvalidIndex()
-    {
-      ExceptionAssert.Throws<ArgumentException>(@"Set JConstructor values with invalid key value: ""badvalue"". Argument position index expected.",
-      () =>
-      {
-        JConstructor c = new JConstructor();
-        c["badvalue"] = new JValue(3);
-      }); 
-    }
-
-    [Test]
-    public void SetValue()
-    {
-      object key = 0;
-
-      JConstructor c = new JConstructor();
-      c.Name = "con";
-      c.Add(null);
-      c[key] = new JValue(3);
-
-      Assert.AreEqual(3, (int)c[key]);
-    }
-  }
-}
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using System.IO;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JConstructorTests : TestFixtureBase
+  {
+    [Test]
+    public void Load()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader("new Date(123)"));
+      reader.Read();
+
+      JConstructor constructor = JConstructor.Load(reader);
+      Assert.AreEqual("Date", constructor.Name);
+      Assert.IsTrue(JToken.DeepEquals(new JValue(123), constructor.Values().ElementAt(0)));
+    }
+
+    [Test]
+    public void CreateWithMultiValue()
+    {
+      JConstructor constructor = new JConstructor("Test", new List<int> { 1, 2, 3 });
+      Assert.AreEqual("Test", constructor.Name);
+      Assert.AreEqual(3, constructor.Children().Count());
+      Assert.AreEqual(1, (int)constructor.Children().ElementAt(0));
+      Assert.AreEqual(2, (int)constructor.Children().ElementAt(1));
+      Assert.AreEqual(3, (int)constructor.Children().ElementAt(2));
+    }
+
+    [Test]
+    public void Iterate()
+    {
+      JConstructor c = new JConstructor("MrConstructor", 1, 2, 3, 4, 5);
+
+      int i = 1;
+      foreach (JToken token in c)
+      {
+        Assert.AreEqual(i, (int)token);
+        i++;
+      }
+    }
+
+    [Test]
+    public void SetValueWithInvalidIndex()
+    {
+      ExceptionAssert.Throws<ArgumentException>(@"Set JConstructor values with invalid key value: ""badvalue"". Argument position index expected.",
+      () =>
+      {
+        JConstructor c = new JConstructor();
+        c["badvalue"] = new JValue(3);
+      }); 
+    }
+
+    [Test]
+    public void SetValue()
+    {
+      object key = 0;
+
+      JConstructor c = new JConstructor();
+      c.Name = "con";
+      c.Add(null);
+      c[key] = new JValue(3);
+
+      Assert.AreEqual(3, (int)c[key]);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs
@@ -1,1750 +1,1750 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-using System.IO;
-using System.Collections;
-#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
-using System.Web.UI;
-#endif
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JObjectTests : TestFixtureBase
-  {
-    [Test]
-    public void Keys()
-    {
-      var o = new JObject();
-      var d = (IDictionary<string, JToken>) o;
-
-      Assert.AreEqual(0, d.Keys.Count);
-
-      o["value"] = true;
-
-      Assert.AreEqual(1, d.Keys.Count);
-    }
-
-    [Test]
-    public void TryGetValue()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", new JValue(1));
-      Assert.AreEqual(1, o.Children().Count());
-
-      JToken t;
-      Assert.AreEqual(false, o.TryGetValue("sdf", out t));
-      Assert.AreEqual(null, t);
-
-      Assert.AreEqual(false, o.TryGetValue(null, out t));
-      Assert.AreEqual(null, t);
-
-      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
-      Assert.AreEqual(true, JToken.DeepEquals(new JValue(1), t));
-    }
-
-    [Test]
-    public void DictionaryItemShouldSet()
-    {
-      JObject o = new JObject();
-      o["PropertyNameValue"] = new JValue(1);
-      Assert.AreEqual(1, o.Children().Count());
-
-      JToken t;
-      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
-      Assert.AreEqual(true, JToken.DeepEquals(new JValue(1), t));
-
-      o["PropertyNameValue"] = new JValue(2);
-      Assert.AreEqual(1, o.Children().Count());
-
-      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
-      Assert.AreEqual(true, JToken.DeepEquals(new JValue(2), t));
-
-      o["PropertyNameValue"] = null;
-      Assert.AreEqual(1, o.Children().Count());
-
-      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
-      Assert.AreEqual(true, JToken.DeepEquals(new JValue((object)null), t));
-    }
-
-    [Test]
-    public void Remove()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", new JValue(1));
-      Assert.AreEqual(1, o.Children().Count());
-
-      Assert.AreEqual(false, o.Remove("sdf"));
-      Assert.AreEqual(false, o.Remove(null));
-      Assert.AreEqual(true, o.Remove("PropertyNameValue"));
-
-      Assert.AreEqual(0, o.Children().Count());
-    }
-
-    [Test]
-    public void GenericCollectionRemove()
-    {
-      JValue v = new JValue(1);
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", v);
-      Assert.AreEqual(1, o.Children().Count());
-
-      Assert.AreEqual(false, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue1", new JValue(1))));
-      Assert.AreEqual(false, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(2))));
-      Assert.AreEqual(false, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(1))));
-      Assert.AreEqual(true, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue", v)));
-
-      Assert.AreEqual(0, o.Children().Count());
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Can not add property PropertyNameValue to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object."
-#endif
-      )]
-    public void DuplicatePropertyNameShouldThrow()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", null);
-      o.Add("PropertyNameValue", null);
-    }
-
-    [Test]
-    public void GenericDictionaryAdd()
-    {
-      JObject o = new JObject();
-
-      o.Add("PropertyNameValue", new JValue(1));
-      Assert.AreEqual(1, (int)o["PropertyNameValue"]);
-
-      o.Add("PropertyNameValue1", null);
-      Assert.AreEqual(null, ((JValue)o["PropertyNameValue1"]).Value);
-
-      Assert.AreEqual(2, o.Children().Count());
-    }
-
-    [Test]
-    public void GenericCollectionAdd()
-    {
-      JObject o = new JObject();
-      ((ICollection<KeyValuePair<string,JToken>>)o).Add(new KeyValuePair<string,JToken>("PropertyNameValue", new JValue(1)));
-
-      Assert.AreEqual(1, (int)o["PropertyNameValue"]);
-      Assert.AreEqual(1, o.Children().Count());
-    }
-
-    [Test]
-    public void GenericCollectionClear()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", new JValue(1));
-      Assert.AreEqual(1, o.Children().Count());
-
-      JProperty p = (JProperty)o.Children().ElementAt(0);
-
-      ((ICollection<KeyValuePair<string, JToken>>)o).Clear();
-      Assert.AreEqual(0, o.Children().Count());
-
-      Assert.AreEqual(null, p.Parent);
-    }
-
-    [Test]
-    public void GenericCollectionContains()
-    {
-      JValue v = new JValue(1);
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", v);
-      Assert.AreEqual(1, o.Children().Count());
-
-      bool contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(1)));
-      Assert.AreEqual(false, contains);
-
-      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue", v));
-      Assert.AreEqual(true, contains);
-
-      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(2)));
-      Assert.AreEqual(false, contains);
-
-      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue1", new JValue(1)));
-      Assert.AreEqual(false, contains);
-
-      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(default(KeyValuePair<string, JToken>));
-      Assert.AreEqual(false, contains);
-    }
-
-    [Test]
-    public void GenericDictionaryContains()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", new JValue(1));
-      Assert.AreEqual(1, o.Children().Count());
-
-      bool contains = ((IDictionary<string, JToken>)o).ContainsKey("PropertyNameValue");
-      Assert.AreEqual(true, contains);
-    }
-
-    [Test]
-    public void GenericCollectionCopyTo()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", new JValue(1));
-      o.Add("PropertyNameValue2", new JValue(2));
-      o.Add("PropertyNameValue3", new JValue(3));
-      Assert.AreEqual(3, o.Children().Count());
-
-      KeyValuePair<string, JToken>[] a = new KeyValuePair<string,JToken>[5];
-
-      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(a, 1);
-
-      Assert.AreEqual(default(KeyValuePair<string,JToken>), a[0]);
-      
-      Assert.AreEqual("PropertyNameValue", a[1].Key);
-      Assert.AreEqual(1, (int)a[1].Value);
-
-      Assert.AreEqual("PropertyNameValue2", a[2].Key);
-      Assert.AreEqual(2, (int)a[2].Value);
-
-      Assert.AreEqual("PropertyNameValue3", a[3].Key);
-      Assert.AreEqual(3, (int)a[3].Value);
-
-      Assert.AreEqual(default(KeyValuePair<string, JToken>), a[4]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentNullException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Value cannot be null.
-Parameter name: array"
-#endif
-      )]
-    public void GenericCollectionCopyToNullArrayShouldThrow()
-    {
-      JObject o = new JObject();
-      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(null, 0);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"arrayIndex is less than 0.
-Parameter name: arrayIndex"
-#endif
-      )]
-    public void GenericCollectionCopyToNegativeArrayIndexShouldThrow()
-    {
-      JObject o = new JObject();
-      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(new KeyValuePair<string, JToken>[1], -1);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"arrayIndex is equal to or greater than the length of array."
-#endif
-      )]
-    public void GenericCollectionCopyToArrayIndexEqualGreaterToArrayLengthShouldThrow()
-    {
-      JObject o = new JObject();
-      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(new KeyValuePair<string, JToken>[1], 1);
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array."
-#endif
-      )]
-    public void GenericCollectionCopyToInsufficientArrayCapacity()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue", new JValue(1));
-      o.Add("PropertyNameValue2", new JValue(2));
-      o.Add("PropertyNameValue3", new JValue(3));
-
-      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(new KeyValuePair<string, JToken>[3], 1);
-    }
-
-    [Test]
-    public void FromObjectRaw()
-    {
-      PersonRaw raw = new PersonRaw
-      {
-        FirstName = "FirstNameValue",
-        RawContent = new JRaw("[1,2,3,4,5]"),
-        LastName = "LastNameValue"
-      };
-
-      JObject o = JObject.FromObject(raw);
-
-      Assert.AreEqual("FirstNameValue", (string)o["first_name"]);
-      Assert.AreEqual(JTokenType.Raw, ((JValue)o["RawContent"]).Type);
-      Assert.AreEqual("[1,2,3,4,5]", (string)o["RawContent"]);
-      Assert.AreEqual("LastNameValue", (string)o["last_name"]);
-    }
-
-    [Test]
-    public void JTokenReader()
-    {
-      PersonRaw raw = new PersonRaw
-      {
-        FirstName = "FirstNameValue",
-        RawContent = new JRaw("[1,2,3,4,5]"),
-        LastName = "LastNameValue"
-      };
-
-      JObject o = JObject.FromObject(raw);
-
-      JsonReader reader = new JTokenReader(o);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.Raw, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.String, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      Assert.IsFalse(reader.Read());
-    }
-
-    [Test]
-    public void DeserializeFromRaw()
-    {
-      PersonRaw raw = new PersonRaw
-      {
-        FirstName = "FirstNameValue",
-        RawContent = new JRaw("[1,2,3,4,5]"),
-        LastName = "LastNameValue"
-      };
-
-      JObject o = JObject.FromObject(raw);
-
-      JsonReader reader = new JTokenReader(o);
-      JsonSerializer serializer = new JsonSerializer();
-      raw = (PersonRaw)serializer.Deserialize(reader, typeof(PersonRaw));
-
-      Assert.AreEqual("FirstNameValue", raw.FirstName);
-      Assert.AreEqual("LastNameValue", raw.LastName);
-      Assert.AreEqual("[1,2,3,4,5]", raw.RawContent.Value);
-    }
-
-    [Test]
-    public void Parse_ShouldThrowOnUnexpectedToken()
-    {
-      ExceptionAssert.Throws<Exception>("Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray",
-        () =>
-        {
-          string json = @"[""prop""]";
-          JObject.Parse(json);
-        });
-    }
-
-    [Test]
-    public void ParseJavaScriptDate()
-    {
-      string json = @"[new Date(1207285200000)]";
-
-      JArray a = (JArray)JsonConvert.DeserializeObject(json);
-      JValue v = (JValue)a[0];
-
-      Assert.AreEqual(JsonConvert.ConvertJavaScriptTicksToDateTime(1207285200000), (DateTime)v);
-    }
-
-    [Test]
-    public void GenericValueCast()
-    {
-      string json = @"{""foo"":true}";
-      JObject o = (JObject)JsonConvert.DeserializeObject(json);
-      bool? value = o.Value<bool?>("foo");
-      Assert.AreEqual(true, value);
-
-      json = @"{""foo"":null}"; 
-      o = (JObject)JsonConvert.DeserializeObject(json);
-      value = o.Value<bool?>("foo");
-      Assert.AreEqual(null, value);
-    }
-
-    [Test]
-    public void Blog()
-    {
-      ExceptionAssert.Throws<JsonReaderException>(
-        "Invalid property identifier character: ]. Line 3, position 5.",
-        () =>
-        {
-          JObject person = JObject.Parse(@"{
-    ""name"": ""James"",
-    ]!#$THIS IS: BAD JSON![{}}}}]
-  }");
-
-          // Invalid property identifier character: ]. Line 3, position 9.
-        });
-    }
-
-    [Test]
-    public void RawChildValues()
-    {
-      JObject o = new JObject();
-      o["val1"] = new JRaw("1");
-      o["val2"] = new JRaw("1");
-
-      string json = o.ToString();
-
-      Assert.AreEqual(@"{
-  ""val1"": 1,
-  ""val2"": 1
-}", json);
-    }
-
-    [Test]
-    public void Iterate()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue1", new JValue(1));
-      o.Add("PropertyNameValue2", new JValue(2));
-
-      JToken t = o;
-
-      int i = 1;
-      foreach (JProperty property in t)
-      {
-        Assert.AreEqual("PropertyNameValue" + i, property.Name);
-        Assert.AreEqual(i, (int)property.Value);
-
-        i++;
-      }
-    }
-
-    [Test]
-    public void KeyValuePairIterate()
-    {
-      JObject o = new JObject();
-      o.Add("PropertyNameValue1", new JValue(1));
-      o.Add("PropertyNameValue2", new JValue(2));
-
-      int i = 1;
-      foreach (KeyValuePair<string, JToken> pair in o)
-      {
-        Assert.AreEqual("PropertyNameValue" + i, pair.Key);
-        Assert.AreEqual(i, (int)pair.Value);
-
-        i++;
-      }
-    }
-
-    [Test]
-    public void WriteObjectNullStringValue()
-    {
-      string s = null;
-      JValue v = new JValue(s);
-      Assert.AreEqual(null, v.Value);
-      Assert.AreEqual(JTokenType.String, v.Type);
-
-      JObject o = new JObject();
-      o["title"] = v;
-
-      string output = o.ToString();
-      
-      Assert.AreEqual(@"{
-  ""title"": null
-}", output);
-    }
-
-    [Test]
-    public void Example()
-    {
-      string json = @"{
-        ""Name"": ""Apple"",
-        ""Expiry"": new Date(1230422400000),
-        ""Price"": 3.99,
-        ""Sizes"": [
-          ""Small"",
-          ""Medium"",
-          ""Large""
-        ]
-      }";
-
-      JObject o = JObject.Parse(json);
-
-      string name = (string)o["Name"];
-      // Apple
-
-      JArray sizes = (JArray)o["Sizes"];
-
-      string smallest = (string)sizes[0];
-      // Small
-
-      Console.WriteLine(name);
-      Console.WriteLine(smallest);
-    }
-
-    [Test]
-    public void DeserializeClassManually()
-    {
-      string jsonText = @"{
-  ""short"":
-  {
-    ""original"":""http://www.foo.com/"",
-    ""short"":""krehqk"",
-    ""error"":
-    {
-      ""code"":0,
-      ""msg"":""No action taken""
-    }
-  }
-}";
-
-      JObject json = JObject.Parse(jsonText);
-
-      Shortie shortie = new Shortie
-                        {
-                          Original = (string)json["short"]["original"],
-                          Short = (string)json["short"]["short"],
-                          Error = new ShortieException
-                                  {
-                                    Code = (int)json["short"]["error"]["code"],
-                                    ErrorMessage = (string)json["short"]["error"]["msg"]
-                                  }
-                        };
-
-      Console.WriteLine(shortie.Original);
-      // http://www.foo.com/
-
-      Console.WriteLine(shortie.Error.ErrorMessage);
-      // No action taken
-
-      Assert.AreEqual("http://www.foo.com/", shortie.Original);
-      Assert.AreEqual("krehqk", shortie.Short);
-      Assert.AreEqual(null, shortie.Shortened);
-      Assert.AreEqual(0, shortie.Error.Code);
-      Assert.AreEqual("No action taken", shortie.Error.ErrorMessage);
-    }
-
-    [Test]
-    public void JObjectContainingHtml()
-    {
-      JObject o = new JObject();
-      o["rc"] = new JValue(200);
-      o["m"] = new JValue("");
-      o["o"] = new JValue(@"<div class='s1'>
-    <div class='avatar'>                    
-        <a href='asdf'>asdf</a><br />
-        <strong>0</strong>
-    </div>
-    <div class='sl'>
-        <p>
-            444444444
-        </p>
-    </div>
-    <div class='clear'>
-    </div>                        
-</div>");
-
-      Assert.AreEqual(@"{
-  ""rc"": 200,
-  ""m"": """",
-  ""o"": ""<div class='s1'>\r\n    <div class='avatar'>                    \r\n        <a href='asdf'>asdf</a><br />\r\n        <strong>0</strong>\r\n    </div>\r\n    <div class='sl'>\r\n        <p>\r\n            444444444\r\n        </p>\r\n    </div>\r\n    <div class='clear'>\r\n    </div>                        \r\n</div>""
-}", o.ToString());
-    }
-
-    [Test]
-    public void ImplicitValueConversions()
-    {
-      JObject moss = new JObject();
-      moss["FirstName"] = new JValue("Maurice");
-      moss["LastName"] = new JValue("Moss");
-      moss["BirthDate"] = new JValue(new DateTime(1977, 12, 30));
-      moss["Department"] = new JValue("IT");
-      moss["JobTitle"] = new JValue("Support");
-
-      Console.WriteLine(moss.ToString());
-      //{
-      //  "FirstName": "Maurice",
-      //  "LastName": "Moss",
-      //  "BirthDate": "\/Date(252241200000+1300)\/",
-      //  "Department": "IT",
-      //  "JobTitle": "Support"
-      //}
-
-
-      JObject jen = new JObject();
-      jen["FirstName"] = "Jen";
-      jen["LastName"] = "Barber";
-      jen["BirthDate"] = new DateTime(1978, 3, 15);
-      jen["Department"] = "IT";
-      jen["JobTitle"] = "Manager";
-
-      Console.WriteLine(jen.ToString());
-      //{
-      //  "FirstName": "Jen",
-      //  "LastName": "Barber",
-      //  "BirthDate": "\/Date(258721200000+1300)\/",
-      //  "Department": "IT",
-      //  "JobTitle": "Manager"
-      //}
-    }
-
-    [Test]
-    public void ReplaceJPropertyWithJPropertyWithSameName()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-
-      JObject o = new JObject(p1, p2);
-      IList l = o;
-      Assert.AreEqual(p1, l[0]);
-      Assert.AreEqual(p2, l[1]);
-
-      JProperty p3 = new JProperty("Test1", "III");
-
-      p1.Replace(p3);
-      Assert.AreEqual(null, p1.Parent);
-      Assert.AreEqual(l, p3.Parent);
-
-      Assert.AreEqual(p3, l[0]);
-      Assert.AreEqual(p2, l[1]);
-
-      Assert.AreEqual(2, l.Count);
-      Assert.AreEqual(2, o.Properties().Count());
-
-      JProperty p4 = new JProperty("Test4", "IV");
-
-      p2.Replace(p4);
-      Assert.AreEqual(null, p2.Parent);
-      Assert.AreEqual(l, p4.Parent);
-
-      Assert.AreEqual(p3, l[0]);
-      Assert.AreEqual(p4, l[1]);
-    }
-
-#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
-    [Test]
-    public void PropertyChanging()
-    {
-      object changing = null;
-      object changed = null;
-      int changingCount = 0;
-      int changedCount = 0;
-
-      JObject o = new JObject();
-      o.PropertyChanging += (sender, args) =>
-        {
-          JObject s = (JObject) sender;
-          changing = (s[args.PropertyName] != null) ? ((JValue)s[args.PropertyName]).Value : null;
-          changingCount++;
-        };
-      o.PropertyChanged += (sender, args) =>
-      {
-        JObject s = (JObject)sender;
-        changed = (s[args.PropertyName] != null) ? ((JValue)s[args.PropertyName]).Value : null;
-        changedCount++;
-      };
-
-      o["StringValue"] = "value1";
-      Assert.AreEqual(null, changing);
-      Assert.AreEqual("value1", changed);
-      Assert.AreEqual("value1", (string)o["StringValue"]);
-      Assert.AreEqual(1, changingCount);
-      Assert.AreEqual(1, changedCount);
-
-      o["StringValue"] = "value1";
-      Assert.AreEqual(1, changingCount);
-      Assert.AreEqual(1, changedCount);
-
-      o["StringValue"] = "value2";
-      Assert.AreEqual("value1", changing);
-      Assert.AreEqual("value2", changed);
-      Assert.AreEqual("value2", (string)o["StringValue"]);
-      Assert.AreEqual(2, changingCount);
-      Assert.AreEqual(2, changedCount);
-
-      o["StringValue"] = null;
-      Assert.AreEqual("value2", changing);
-      Assert.AreEqual(null, changed);
-      Assert.AreEqual(null, (string)o["StringValue"]);
-      Assert.AreEqual(3, changingCount);
-      Assert.AreEqual(3, changedCount);
-
-      o["NullValue"] = null;
-      Assert.AreEqual(null, changing);
-      Assert.AreEqual(null, changed);
-      Assert.AreEqual(new JValue((object)null), o["NullValue"]);
-      Assert.AreEqual(4, changingCount);
-      Assert.AreEqual(4, changedCount);
-
-      o["NullValue"] = null;
-      Assert.AreEqual(4, changingCount);
-      Assert.AreEqual(4, changedCount);
-    }
-#endif
-
-    [Test]
-    public void PropertyChanged()
-    {
-      object changed = null;
-      int changedCount = 0;
-
-      JObject o = new JObject();
-      o.PropertyChanged += (sender, args) =>
-      {
-        JObject s = (JObject)sender;
-        changed = (s[args.PropertyName] != null) ? ((JValue)s[args.PropertyName]).Value : null;
-        changedCount++;
-      };
-
-      o["StringValue"] = "value1";
-      Assert.AreEqual("value1", changed);
-      Assert.AreEqual("value1", (string)o["StringValue"]);
-      Assert.AreEqual(1, changedCount);
-
-      o["StringValue"] = "value1";
-      Assert.AreEqual(1, changedCount);
-
-      o["StringValue"] = "value2";
-      Assert.AreEqual("value2", changed);
-      Assert.AreEqual("value2", (string)o["StringValue"]);
-      Assert.AreEqual(2, changedCount);
-
-      o["StringValue"] = null;
-      Assert.AreEqual(null, changed);
-      Assert.AreEqual(null, (string)o["StringValue"]);
-      Assert.AreEqual(3, changedCount);
-
-      o["NullValue"] = null;
-      Assert.AreEqual(null, changed);
-      Assert.AreEqual(new JValue((object)null), o["NullValue"]);
-      Assert.AreEqual(4, changedCount);
-
-      o["NullValue"] = null;
-      Assert.AreEqual(4, changedCount);
-    }
-
-    [Test]
-    public void IListContains()
-    {
-      JProperty p = new JProperty("Test", 1);
-      IList l = new JObject(p);
-
-      Assert.IsTrue(l.Contains(p));
-      Assert.IsFalse(l.Contains(new JProperty("Test", 1)));
-    }
-
-    [Test]
-    public void IListIndexOf()
-    {
-      JProperty p = new JProperty("Test", 1);
-      IList l = new JObject(p);
-
-      Assert.AreEqual(0, l.IndexOf(p));
-      Assert.AreEqual(-1, l.IndexOf(new JProperty("Test", 1)));
-    }
-
-    [Test]
-    public void IListClear()
-    {
-      JProperty p = new JProperty("Test", 1);
-      IList l = new JObject(p);
-
-      Assert.AreEqual(1, l.Count);
-
-      l.Clear();
-
-      Assert.AreEqual(0, l.Count);
-    }
-
-    [Test]
-    public void IListCopyTo()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      object[] a = new object[l.Count];
-
-      l.CopyTo(a, 0);
-
-      Assert.AreEqual(p1, a[0]);
-      Assert.AreEqual(p2, a[1]);
-    }
-
-    [Test]
-    public void IListAdd()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      l.Add(p3);
-
-      Assert.AreEqual(3, l.Count);
-      Assert.AreEqual(p3, l[2]);
-    }
-
-    [Test]
-    public void IListAddBadToken()
-    {
-      ExceptionAssert.Throws<ArgumentException>(
-      "Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
-      () =>
-      {
-        JProperty p1 = new JProperty("Test1", 1);
-        JProperty p2 = new JProperty("Test2", "Two");
-        IList l = new JObject(p1, p2);
-
-        l.Add(new JValue("Bad!"));
-      });
-    }
-
-    [Test]
-    public void IListAddBadValue()
-    {
-      ExceptionAssert.Throws<ArgumentException>(
-      "Argument is not a JToken.",
-      () =>
-      {
-        JProperty p1 = new JProperty("Test1", 1);
-        JProperty p2 = new JProperty("Test2", "Two");
-        IList l = new JObject(p1, p2);
-
-        l.Add("Bad!");
-      });
-    }
-
-    [Test]
-    public void IListAddPropertyWithExistingName()
-    {
-      ExceptionAssert.Throws<ArgumentException>(
-      "Can not add property Test2 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
-      () =>
-      {
-        JProperty p1 = new JProperty("Test1", 1);
-        JProperty p2 = new JProperty("Test2", "Two");
-        IList l = new JObject(p1, p2);
-
-        JProperty p3 = new JProperty("Test2", "II");
-
-        l.Add(p3);
-      });
-    }
-
-    [Test]
-    public void IListRemove()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      // won't do anything
-      l.Remove(p3);
-      Assert.AreEqual(2, l.Count);
-
-      l.Remove(p1);
-      Assert.AreEqual(1, l.Count);
-      Assert.IsFalse(l.Contains(p1));
-      Assert.IsTrue(l.Contains(p2));
-
-      l.Remove(p2);
-      Assert.AreEqual(0, l.Count);
-      Assert.IsFalse(l.Contains(p2));
-      Assert.AreEqual(null, p2.Parent);
-    }
-
-    [Test]
-    public void IListRemoveAt()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      // won't do anything
-      l.RemoveAt(0);
-
-      l.Remove(p1);
-      Assert.AreEqual(1, l.Count);
-
-      l.Remove(p2);
-      Assert.AreEqual(0, l.Count);
-    }
-
-    [Test]
-    public void IListInsert()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      l.Insert(1, p3);
-      Assert.AreEqual(l, p3.Parent);
-
-      Assert.AreEqual(p1, l[0]);
-      Assert.AreEqual(p3, l[1]);
-      Assert.AreEqual(p2, l[2]);
-    }
-
-    [Test]
-    public void IListIsReadOnly()
-    {
-      IList l = new JObject();
-      Assert.IsFalse(l.IsReadOnly);
-    }
-
-    [Test]
-    public void IListIsFixedSize()
-    {
-      IList l = new JObject();
-      Assert.IsFalse(l.IsFixedSize);
-    }
-
-    [Test]
-    public void IListSetItem()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      l[0] = p3;
-
-      Assert.AreEqual(p3, l[0]);
-      Assert.AreEqual(p2, l[1]);
-    }
-
-    [Test]
-    public void IListSetItemAlreadyExists()
-    {
-      ExceptionAssert.Throws<ArgumentException>(
-      "Can not add property Test3 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
-      () =>
-      {
-        JProperty p1 = new JProperty("Test1", 1);
-        JProperty p2 = new JProperty("Test2", "Two");
-        IList l = new JObject(p1, p2);
-
-        JProperty p3 = new JProperty("Test3", "III");
-
-        l[0] = p3;
-        l[1] = p3;
-      });
-    }
-
-    [Test]
-    public void IListSetItemInvalid()
-    {
-      ExceptionAssert.Throws<ArgumentException>(
-      @"Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
-      () =>
-      {
-        JProperty p1 = new JProperty("Test1", 1);
-        JProperty p2 = new JProperty("Test2", "Two");
-        IList l = new JObject(p1, p2);
-
-        l[0] = new JValue(true);
-      });
-    }
-
-    [Test]
-    public void IListSyncRoot()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      Assert.IsNotNull(l.SyncRoot);
-    }
-
-    [Test]
-    public void IListIsSynchronized()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList l = new JObject(p1, p2);
-
-      Assert.IsFalse(l.IsSynchronized);
-    }
-
-    [Test]
-    public void GenericListJTokenContains()
-    {
-      JProperty p = new JProperty("Test", 1);
-      IList<JToken> l = new JObject(p);
-
-      Assert.IsTrue(l.Contains(p));
-      Assert.IsFalse(l.Contains(new JProperty("Test", 1)));
-    }
-
-    [Test]
-    public void GenericListJTokenIndexOf()
-    {
-      JProperty p = new JProperty("Test", 1);
-      IList<JToken> l = new JObject(p);
-
-      Assert.AreEqual(0, l.IndexOf(p));
-      Assert.AreEqual(-1, l.IndexOf(new JProperty("Test", 1)));
-    }
-
-    [Test]
-    public void GenericListJTokenClear()
-    {
-      JProperty p = new JProperty("Test", 1);
-      IList<JToken> l = new JObject(p);
-
-      Assert.AreEqual(1, l.Count);
-
-      l.Clear();
-
-      Assert.AreEqual(0, l.Count);
-    }
-
-    [Test]
-    public void GenericListJTokenCopyTo()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList<JToken> l = new JObject(p1, p2);
-
-      JToken[] a = new JToken[l.Count];
-
-      l.CopyTo(a, 0);
-
-      Assert.AreEqual(p1, a[0]);
-      Assert.AreEqual(p2, a[1]);
-    }
-
-    [Test]
-    public void GenericListJTokenAdd()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList<JToken> l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      l.Add(p3);
-
-      Assert.AreEqual(3, l.Count);
-      Assert.AreEqual(p3, l[2]);
-    }
-
-    [Test]
-    public void GenericListJTokenAddBadToken()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
-      () =>
-      {
-        JProperty p1 = new JProperty("Test1", 1);
-        JProperty p2 = new JProperty("Test2", "Two");
-        IList<JToken> l = new JObject(p1, p2);
-
-        l.Add(new JValue("Bad!"));
-      });
-    }
-
-    [Test]
-    public void GenericListJTokenAddBadValue()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
-        () =>
-        {
-          JProperty p1 = new JProperty("Test1", 1);
-          JProperty p2 = new JProperty("Test2", "Two");
-          IList<JToken> l = new JObject(p1, p2);
-
-          // string is implicitly converted to JValue
-          l.Add("Bad!");
-        });
-    }
-
-    [Test]
-    public void GenericListJTokenAddPropertyWithExistingName()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not add property Test2 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
-        () =>
-        {
-          JProperty p1 = new JProperty("Test1", 1);
-          JProperty p2 = new JProperty("Test2", "Two");
-          IList<JToken> l = new JObject(p1, p2);
-
-          JProperty p3 = new JProperty("Test2", "II");
-
-          l.Add(p3);
-        });
-    }
-
-    [Test]
-    public void GenericListJTokenRemove()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList<JToken> l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      // won't do anything
-      Assert.IsFalse(l.Remove(p3));
-      Assert.AreEqual(2, l.Count);
-
-      Assert.IsTrue(l.Remove(p1));
-      Assert.AreEqual(1, l.Count);
-      Assert.IsFalse(l.Contains(p1));
-      Assert.IsTrue(l.Contains(p2));
-
-      Assert.IsTrue(l.Remove(p2));
-      Assert.AreEqual(0, l.Count);
-      Assert.IsFalse(l.Contains(p2));
-      Assert.AreEqual(null, p2.Parent);
-    }
-
-    [Test]
-    public void GenericListJTokenRemoveAt()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList<JToken> l = new JObject(p1, p2);
-
-      // won't do anything
-      l.RemoveAt(0);
-
-      l.Remove(p1);
-      Assert.AreEqual(1, l.Count);
-
-      l.Remove(p2);
-      Assert.AreEqual(0, l.Count);
-    }
-
-    [Test]
-    public void GenericListJTokenInsert()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList<JToken> l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      l.Insert(1, p3);
-      Assert.AreEqual(l, p3.Parent);
-
-      Assert.AreEqual(p1, l[0]);
-      Assert.AreEqual(p3, l[1]);
-      Assert.AreEqual(p2, l[2]);
-    }
-
-    [Test]
-    public void GenericListJTokenIsReadOnly()
-    {
-      IList<JToken> l = new JObject();
-      Assert.IsFalse(l.IsReadOnly);
-    }
-
-    [Test]
-    public void GenericListJTokenSetItem()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      IList<JToken> l = new JObject(p1, p2);
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      l[0] = p3;
-
-      Assert.AreEqual(p3, l[0]);
-      Assert.AreEqual(p2, l[1]);
-    }
-
-    [Test]
-    public void GenericListJTokenSetItemAlreadyExists()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not add property Test3 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
-      () =>
-      {
-        JProperty p1 = new JProperty("Test1", 1);
-        JProperty p2 = new JProperty("Test2", "Two");
-        IList<JToken> l = new JObject(p1, p2);
-
-        JProperty p3 = new JProperty("Test3", "III");
-
-        l[0] = p3;
-        l[1] = p3;
-      });
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void IBindingListSortDirection()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(ListSortDirection.Ascending, l.SortDirection);
-    }
-
-    [Test]
-    public void IBindingListSortProperty()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(null, l.SortProperty);
-    }
-
-    [Test]
-    public void IBindingListSupportsChangeNotification()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(true, l.SupportsChangeNotification);
-    }
-
-    [Test]
-    public void IBindingListSupportsSearching()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(false, l.SupportsSearching);
-    }
-
-    [Test]
-    public void IBindingListSupportsSorting()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(false, l.SupportsSorting);
-    }
-
-    [Test]
-    public void IBindingListAllowEdit()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(true, l.AllowEdit);
-    }
-
-    [Test]
-    public void IBindingListAllowNew()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(true, l.AllowNew);
-    }
-
-    [Test]
-    public void IBindingListAllowRemove()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(true, l.AllowRemove);
-    }
-
-    [Test]
-    public void IBindingListAddIndex()
-    {
-      IBindingList l = new JObject();
-      // do nothing
-      l.AddIndex(null);
-    }
-
-    [Test]
-    [ExpectedException(typeof(NotSupportedException))]
-    public void IBindingListApplySort()
-    {
-      IBindingList l = new JObject();
-      l.ApplySort(null, ListSortDirection.Ascending);
-    }
-
-    [Test]
-    [ExpectedException(typeof(NotSupportedException))]
-    public void IBindingListRemoveSort()
-    {
-      IBindingList l = new JObject();
-      l.RemoveSort();
-    }
-
-    [Test]
-    public void IBindingListRemoveIndex()
-    {
-      IBindingList l = new JObject();
-      // do nothing
-      l.RemoveIndex(null);
-    }
-
-    [Test]
-    [ExpectedException(typeof(NotSupportedException))]
-    public void IBindingListFind()
-    {
-      IBindingList l = new JObject();
-      l.Find(null, null);
-    }
-
-    [Test]
-    public void IBindingListIsSorted()
-    {
-      IBindingList l = new JObject();
-      Assert.AreEqual(false, l.IsSorted);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception), ExpectedMessage = "Could not determine new value to add to 'Newtonsoft.Json.Linq.JObject'.")]
-    public void IBindingListAddNew()
-    {
-      IBindingList l = new JObject();
-      l.AddNew();
-    }
-
-    [Test]
-    public void IBindingListAddNewWithEvent()
-    {
-      JObject o = new JObject();
-      o.AddingNew += (s, e) => e.NewObject = new JProperty("Property!");
-
-      IBindingList l = o;
-      object newObject = l.AddNew();
-      Assert.IsNotNull(newObject);
-
-      JProperty p = (JProperty) newObject;
-      Assert.AreEqual("Property!", p.Name);
-      Assert.AreEqual(o, p.Parent);
-    }
-
-    [Test]
-    public void ITypedListGetListName()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      ITypedList l = new JObject(p1, p2);
-
-      Assert.AreEqual(string.Empty, l.GetListName(null));
-    }
-
-    [Test]
-    public void ITypedListGetItemProperties()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      ITypedList l = new JObject(p1, p2);
-
-      PropertyDescriptorCollection propertyDescriptors = l.GetItemProperties(null);
-      Assert.IsNull(propertyDescriptors);
-    }
-
-    [Test]
-    public void ListChanged()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      JObject o = new JObject(p1, p2);
-
-      ListChangedType? changedType = null;
-      int? index = null;
-      
-      o.ListChanged += (s, a) =>
-        {
-          changedType = a.ListChangedType;
-          index = a.NewIndex;
-        };
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      o.Add(p3);
-      Assert.AreEqual(changedType, ListChangedType.ItemAdded);
-      Assert.AreEqual(index, 2);
-      Assert.AreEqual(p3, ((IList<JToken>)o)[index.Value]);
-
-      JProperty p4 = new JProperty("Test4", "IV");
-
-      ((IList<JToken>) o)[index.Value] = p4;
-      Assert.AreEqual(changedType, ListChangedType.ItemChanged);
-      Assert.AreEqual(index, 2);
-      Assert.AreEqual(p4, ((IList<JToken>)o)[index.Value]);
-      Assert.IsFalse(((IList<JToken>)o).Contains(p3));
-      Assert.IsTrue(((IList<JToken>)o).Contains(p4));
-
-      o["Test1"] = 2;
-      Assert.AreEqual(changedType, ListChangedType.ItemChanged);
-      Assert.AreEqual(index, 0);
-      Assert.AreEqual(2, (int)o["Test1"]);
-    }
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-    [Test]
-    public void CollectionChanged()
-    {
-      JProperty p1 = new JProperty("Test1", 1);
-      JProperty p2 = new JProperty("Test2", "Two");
-      JObject o = new JObject(p1, p2);
-
-      NotifyCollectionChangedAction? changedType = null;
-      int? index = null;
-
-      o.CollectionChanged += (s, a) =>
-      {
-        changedType = a.Action;
-        index = a.NewStartingIndex;
-      };
-
-      JProperty p3 = new JProperty("Test3", "III");
-
-      o.Add(p3);
-      Assert.AreEqual(changedType, NotifyCollectionChangedAction.Add);
-      Assert.AreEqual(index, 2);
-      Assert.AreEqual(p3, ((IList<JToken>)o)[index.Value]);
-
-      JProperty p4 = new JProperty("Test4", "IV");
-
-      ((IList<JToken>)o)[index.Value] = p4;
-      Assert.AreEqual(changedType, NotifyCollectionChangedAction.Replace);
-      Assert.AreEqual(index, 2);
-      Assert.AreEqual(p4, ((IList<JToken>)o)[index.Value]);
-      Assert.IsFalse(((IList<JToken>)o).Contains(p3));
-      Assert.IsTrue(((IList<JToken>)o).Contains(p4));
-
-      o["Test1"] = 2;
-      Assert.AreEqual(changedType, NotifyCollectionChangedAction.Replace);
-      Assert.AreEqual(index, 0);
-      Assert.AreEqual(2, (int)o["Test1"]);
-    }
-#endif
-
-    [Test]
-    public void GetGeocodeAddress()
-    {
-      string json = @"{
-  ""name"": ""Address: 435 North Mulford Road Rockford, IL 61107"",
-  ""Status"": {
-    ""code"": 200,
-    ""request"": ""geocode""
-  },
-  ""Placemark"": [ {
-    ""id"": ""p1"",
-    ""address"": ""435 N Mulford Rd, Rockford, IL 61107, USA"",
-    ""AddressDetails"": {
-   ""Accuracy"" : 8,
-   ""Country"" : {
-      ""AdministrativeArea"" : {
-         ""AdministrativeAreaName"" : ""IL"",
-         ""SubAdministrativeArea"" : {
-            ""Locality"" : {
-               ""LocalityName"" : ""Rockford"",
-               ""PostalCode"" : {
-                  ""PostalCodeNumber"" : ""61107""
-               },
-               ""Thoroughfare"" : {
-                  ""ThoroughfareName"" : ""435 N Mulford Rd""
-               }
-            },
-            ""SubAdministrativeAreaName"" : ""Winnebago""
-         }
-      },
-      ""CountryName"" : ""USA"",
-      ""CountryNameCode"" : ""US""
-   }
-},
-    ""ExtendedData"": {
-      ""LatLonBox"": {
-        ""north"": 42.2753076,
-        ""south"": 42.2690124,
-        ""east"": -88.9964645,
-        ""west"": -89.0027597
-      }
-    },
-    ""Point"": {
-      ""coordinates"": [ -88.9995886, 42.2721596, 0 ]
-    }
-  } ]
-}";
-
-      JObject o = JObject.Parse(json);
-
-      string searchAddress = (string)o["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["SubAdministrativeArea"]["Locality"]["Thoroughfare"]["ThoroughfareName"];
-      Assert.AreEqual("435 N Mulford Rd", searchAddress);
-    }
-
-    [Test]
-    public void SetValueWithInvalidPropertyName()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Set JObject values with invalid key value: 0. Object property name expected.",
-        () =>
-        {
-          JObject o = new JObject();
-          o[0] = new JValue(3);
-        });
-    }
-
-    [Test]
-    public void SetValue()
-    {
-      object key = "TestKey";
-
-      JObject o = new JObject();
-      o[key] = new JValue(3);
-
-      Assert.AreEqual(3, (int)o[key]);
-    }
-
-    [Test]
-    public void ParseMultipleProperties()
-    {
-      string json = @"{
-        ""Name"": ""Name1"",
-        ""Name"": ""Name2""
-      }";
-
-      JObject o = JObject.Parse(json);
-      string value = (string)o["Name"];
-
-      Assert.AreEqual("Name2", value);
-    }
-
-#if !NETFX_CORE
-    [Test]
-    public void WriteObjectNullDBNullValue()
-    {
-      DBNull dbNull = DBNull.Value;
-      JValue v = new JValue(dbNull);
-      Assert.AreEqual(DBNull.Value, v.Value);
-      Assert.AreEqual(JTokenType.Null, v.Type);
-
-      JObject o = new JObject();
-      o["title"] = v;
-
-      string output = o.ToString();
-      
-      Assert.AreEqual(@"{
-  ""title"": null
-}", output);
-    }
-#endif
-
-    [Test]
-    public void InvalidValueCastExceptionMessage()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not convert Object to String.",
-        () =>
-        {
-          string json = @"{
-  ""responseData"": {}, 
-  ""responseDetails"": null, 
-  ""responseStatus"": 200
-}";
-
-          JObject o = JObject.Parse(json);
-
-          string name = (string)o["responseData"];
-        });
-    }
-
-    [Test]
-    public void InvalidPropertyValueCastExceptionMessage()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not convert Object to String.",
-      () =>
-      {
-        string json = @"{
-  ""responseData"": {}, 
-  ""responseDetails"": null, 
-  ""responseStatus"": 200
-}";
-
-        JObject o = JObject.Parse(json);
-
-        string name = (string)o.Property("responseData");
-      });
-    }
-
-    [Test]
-    public void NumberTooBigForInt64()
-    {
-      ExceptionAssert.Throws<JsonReaderException>("JSON integer 307953220000517141511 is too large or small for an Int64.",
-        () =>
-        {
-          string json = @"{""code"": 307953220000517141511}";
-
-          JObject.Parse(json);
-        });
-    }
-
-    [Test]
-    public void ParseIncomplete()
-    {
-      ExceptionAssert.Throws<Exception>("Unexpected end of content while loading JObject.",
-        () =>
-        {
-          JObject.Parse("{ foo:");
-        });
-    }
-
-    [Test]
-    public void LoadFromNestedObject()
-    {
-      string jsonText = @"{
-  ""short"":
-  {
-    ""error"":
-    {
-      ""code"":0,
-      ""msg"":""No action taken""
-    }
-  }
-}";
-
-      JsonReader reader = new JsonTextReader(new StringReader(jsonText));
-      reader.Read();
-      reader.Read();
-      reader.Read();
-      reader.Read();
-      reader.Read();
-
-      JObject o = (JObject)JToken.ReadFrom(reader);
-      Assert.IsNotNull(o);
-      Assert.AreEqual(@"{
-  ""code"": 0,
-  ""msg"": ""No action taken""
-}", o.ToString(Formatting.Indented));
-    }
-
-    [Test]
-    public void LoadFromNestedObjectIncomplete()
-    {
-      ExceptionAssert.Throws<Exception>("Unexpected end of content while loading JObject.",
-      () =>
-      {
-        string jsonText = @"{
-  ""short"":
-  {
-    ""error"":
-    {
-      ""code"":0";
-
-        JsonReader reader = new JsonTextReader(new StringReader(jsonText));
-        reader.Read();
-        reader.Read();
-        reader.Read();
-        reader.Read();
-        reader.Read();
-
-        JToken.ReadFrom(reader);
-      });
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void GetProperties()
-    {
-      JObject o = JObject.Parse("{'prop1':12,'prop2':'hi!','prop3':null,'prop4':[1,2,3]}");
-
-      ICustomTypeDescriptor descriptor = o;
-
-      PropertyDescriptorCollection properties = descriptor.GetProperties();
-      Assert.AreEqual(4, properties.Count);
-
-      PropertyDescriptor prop1 = properties[0];
-      Assert.AreEqual("prop1", prop1.Name);
-      Assert.AreEqual(typeof(long), prop1.PropertyType);
-      Assert.AreEqual(typeof(JObject), prop1.ComponentType);
-      Assert.AreEqual(false, prop1.CanResetValue(o));
-      Assert.AreEqual(false, prop1.ShouldSerializeValue(o));
-
-      PropertyDescriptor prop2 = properties[1];
-      Assert.AreEqual("prop2", prop2.Name);
-      Assert.AreEqual(typeof(string), prop2.PropertyType);
-      Assert.AreEqual(typeof(JObject), prop2.ComponentType);
-      Assert.AreEqual(false, prop2.CanResetValue(o));
-      Assert.AreEqual(false, prop2.ShouldSerializeValue(o));
-
-      PropertyDescriptor prop3 = properties[2];
-      Assert.AreEqual("prop3", prop3.Name);
-      Assert.AreEqual(typeof(object), prop3.PropertyType);
-      Assert.AreEqual(typeof(JObject), prop3.ComponentType);
-      Assert.AreEqual(false, prop3.CanResetValue(o));
-      Assert.AreEqual(false, prop3.ShouldSerializeValue(o));
-
-      PropertyDescriptor prop4 = properties[3];
-      Assert.AreEqual("prop4", prop4.Name);
-      Assert.AreEqual(typeof(JArray), prop4.PropertyType);
-      Assert.AreEqual(typeof(JObject), prop4.ComponentType);
-      Assert.AreEqual(false, prop4.CanResetValue(o));
-      Assert.AreEqual(false, prop4.ShouldSerializeValue(o));
-    }
-#endif
-    [Test]
-    public void ParseEmptyObjectWithComment()
-    {
-      JObject o = JObject.Parse("{ /* A Comment */ }");
-      Assert.AreEqual(0, o.Count);
-    }
-
-    [Test]
-    public void FromObjectTimeSpan()
-    {
-      JValue v = (JValue)JToken.FromObject(TimeSpan.FromDays(1));
-      Assert.AreEqual(v.Value, TimeSpan.FromDays(1));
-
-      Assert.AreEqual("1.00:00:00", v.ToString());
-    }
-
-    [Test]
-    public void FromObjectUri()
-    {
-      JValue v = (JValue)JToken.FromObject(new Uri("http://www.stuff.co.nz"));
-      Assert.AreEqual(v.Value, new Uri("http://www.stuff.co.nz"));
-
-      Assert.AreEqual("http://www.stuff.co.nz/", v.ToString());
-    }
-
-    [Test]
-    public void FromObjectGuid()
-    {
-      JValue v = (JValue)JToken.FromObject(new Guid("9065ACF3-C820-467D-BE50-8D4664BEAF35"));
-      Assert.AreEqual(v.Value, new Guid("9065ACF3-C820-467D-BE50-8D4664BEAF35"));
-
-      Assert.AreEqual("9065acf3-c820-467d-be50-8d4664beaf35", v.ToString());
-    }
-
-    [Test]
-    public void ParseAdditionalContent()
-    {
-      ExceptionAssert.Throws<JsonReaderException>("Additional text encountered after finished reading JSON content: ,. Line 10, position 2.",
-      () =>
-      {
-        string json = @"{
-""Name"": ""Apple"",
-""Expiry"": new Date(1230422400000),
-""Price"": 3.99,
-""Sizes"": [
-""Small"",
-""Medium"",
-""Large""
-]
-}, 987987";
-
-        JObject o = JObject.Parse(json);
-      });
-    }
-  }
+using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.ComponentModel;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+using System.IO;
+using System.Collections;
+#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
+using System.Web.UI;
+#endif
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JObjectTests : TestFixtureBase
+  {
+    [Test]
+    public void Keys()
+    {
+      var o = new JObject();
+      var d = (IDictionary<string, JToken>) o;
+
+      Assert.AreEqual(0, d.Keys.Count);
+
+      o["value"] = true;
+
+      Assert.AreEqual(1, d.Keys.Count);
+    }
+
+    [Test]
+    public void TryGetValue()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", new JValue(1));
+      Assert.AreEqual(1, o.Children().Count());
+
+      JToken t;
+      Assert.AreEqual(false, o.TryGetValue("sdf", out t));
+      Assert.AreEqual(null, t);
+
+      Assert.AreEqual(false, o.TryGetValue(null, out t));
+      Assert.AreEqual(null, t);
+
+      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
+      Assert.AreEqual(true, JToken.DeepEquals(new JValue(1), t));
+    }
+
+    [Test]
+    public void DictionaryItemShouldSet()
+    {
+      JObject o = new JObject();
+      o["PropertyNameValue"] = new JValue(1);
+      Assert.AreEqual(1, o.Children().Count());
+
+      JToken t;
+      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
+      Assert.AreEqual(true, JToken.DeepEquals(new JValue(1), t));
+
+      o["PropertyNameValue"] = new JValue(2);
+      Assert.AreEqual(1, o.Children().Count());
+
+      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
+      Assert.AreEqual(true, JToken.DeepEquals(new JValue(2), t));
+
+      o["PropertyNameValue"] = null;
+      Assert.AreEqual(1, o.Children().Count());
+
+      Assert.AreEqual(true, o.TryGetValue("PropertyNameValue", out t));
+      Assert.AreEqual(true, JToken.DeepEquals(new JValue((object)null), t));
+    }
+
+    [Test]
+    public void Remove()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", new JValue(1));
+      Assert.AreEqual(1, o.Children().Count());
+
+      Assert.AreEqual(false, o.Remove("sdf"));
+      Assert.AreEqual(false, o.Remove(null));
+      Assert.AreEqual(true, o.Remove("PropertyNameValue"));
+
+      Assert.AreEqual(0, o.Children().Count());
+    }
+
+    [Test]
+    public void GenericCollectionRemove()
+    {
+      JValue v = new JValue(1);
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", v);
+      Assert.AreEqual(1, o.Children().Count());
+
+      Assert.AreEqual(false, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue1", new JValue(1))));
+      Assert.AreEqual(false, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(2))));
+      Assert.AreEqual(false, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(1))));
+      Assert.AreEqual(true, ((ICollection<KeyValuePair<string, JToken>>)o).Remove(new KeyValuePair<string, JToken>("PropertyNameValue", v)));
+
+      Assert.AreEqual(0, o.Children().Count());
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Can not add property PropertyNameValue to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object."
+#endif
+      )]
+    public void DuplicatePropertyNameShouldThrow()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", null);
+      o.Add("PropertyNameValue", null);
+    }
+
+    [Test]
+    public void GenericDictionaryAdd()
+    {
+      JObject o = new JObject();
+
+      o.Add("PropertyNameValue", new JValue(1));
+      Assert.AreEqual(1, (int)o["PropertyNameValue"]);
+
+      o.Add("PropertyNameValue1", null);
+      Assert.AreEqual(null, ((JValue)o["PropertyNameValue1"]).Value);
+
+      Assert.AreEqual(2, o.Children().Count());
+    }
+
+    [Test]
+    public void GenericCollectionAdd()
+    {
+      JObject o = new JObject();
+      ((ICollection<KeyValuePair<string,JToken>>)o).Add(new KeyValuePair<string,JToken>("PropertyNameValue", new JValue(1)));
+
+      Assert.AreEqual(1, (int)o["PropertyNameValue"]);
+      Assert.AreEqual(1, o.Children().Count());
+    }
+
+    [Test]
+    public void GenericCollectionClear()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", new JValue(1));
+      Assert.AreEqual(1, o.Children().Count());
+
+      JProperty p = (JProperty)o.Children().ElementAt(0);
+
+      ((ICollection<KeyValuePair<string, JToken>>)o).Clear();
+      Assert.AreEqual(0, o.Children().Count());
+
+      Assert.AreEqual(null, p.Parent);
+    }
+
+    [Test]
+    public void GenericCollectionContains()
+    {
+      JValue v = new JValue(1);
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", v);
+      Assert.AreEqual(1, o.Children().Count());
+
+      bool contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(1)));
+      Assert.AreEqual(false, contains);
+
+      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue", v));
+      Assert.AreEqual(true, contains);
+
+      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue", new JValue(2)));
+      Assert.AreEqual(false, contains);
+
+      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(new KeyValuePair<string, JToken>("PropertyNameValue1", new JValue(1)));
+      Assert.AreEqual(false, contains);
+
+      contains = ((ICollection<KeyValuePair<string, JToken>>)o).Contains(default(KeyValuePair<string, JToken>));
+      Assert.AreEqual(false, contains);
+    }
+
+    [Test]
+    public void GenericDictionaryContains()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", new JValue(1));
+      Assert.AreEqual(1, o.Children().Count());
+
+      bool contains = ((IDictionary<string, JToken>)o).ContainsKey("PropertyNameValue");
+      Assert.AreEqual(true, contains);
+    }
+
+    [Test]
+    public void GenericCollectionCopyTo()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", new JValue(1));
+      o.Add("PropertyNameValue2", new JValue(2));
+      o.Add("PropertyNameValue3", new JValue(3));
+      Assert.AreEqual(3, o.Children().Count());
+
+      KeyValuePair<string, JToken>[] a = new KeyValuePair<string,JToken>[5];
+
+      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(a, 1);
+
+      Assert.AreEqual(default(KeyValuePair<string,JToken>), a[0]);
+      
+      Assert.AreEqual("PropertyNameValue", a[1].Key);
+      Assert.AreEqual(1, (int)a[1].Value);
+
+      Assert.AreEqual("PropertyNameValue2", a[2].Key);
+      Assert.AreEqual(2, (int)a[2].Value);
+
+      Assert.AreEqual("PropertyNameValue3", a[3].Key);
+      Assert.AreEqual(3, (int)a[3].Value);
+
+      Assert.AreEqual(default(KeyValuePair<string, JToken>), a[4]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentNullException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Value cannot be null.
+Parameter name: array"
+#endif
+      )]
+    public void GenericCollectionCopyToNullArrayShouldThrow()
+    {
+      JObject o = new JObject();
+      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(null, 0);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"arrayIndex is less than 0.
+Parameter name: arrayIndex"
+#endif
+      )]
+    public void GenericCollectionCopyToNegativeArrayIndexShouldThrow()
+    {
+      JObject o = new JObject();
+      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(new KeyValuePair<string, JToken>[1], -1);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"arrayIndex is equal to or greater than the length of array."
+#endif
+      )]
+    public void GenericCollectionCopyToArrayIndexEqualGreaterToArrayLengthShouldThrow()
+    {
+      JObject o = new JObject();
+      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(new KeyValuePair<string, JToken>[1], 1);
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array."
+#endif
+      )]
+    public void GenericCollectionCopyToInsufficientArrayCapacity()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue", new JValue(1));
+      o.Add("PropertyNameValue2", new JValue(2));
+      o.Add("PropertyNameValue3", new JValue(3));
+
+      ((ICollection<KeyValuePair<string, JToken>>)o).CopyTo(new KeyValuePair<string, JToken>[3], 1);
+    }
+
+    [Test]
+    public void FromObjectRaw()
+    {
+      PersonRaw raw = new PersonRaw
+      {
+        FirstName = "FirstNameValue",
+        RawContent = new JRaw("[1,2,3,4,5]"),
+        LastName = "LastNameValue"
+      };
+
+      JObject o = JObject.FromObject(raw);
+
+      Assert.AreEqual("FirstNameValue", (string)o["first_name"]);
+      Assert.AreEqual(JTokenType.Raw, ((JValue)o["RawContent"]).Type);
+      Assert.AreEqual("[1,2,3,4,5]", (string)o["RawContent"]);
+      Assert.AreEqual("LastNameValue", (string)o["last_name"]);
+    }
+
+    [Test]
+    public void JTokenReader()
+    {
+      PersonRaw raw = new PersonRaw
+      {
+        FirstName = "FirstNameValue",
+        RawContent = new JRaw("[1,2,3,4,5]"),
+        LastName = "LastNameValue"
+      };
+
+      JObject o = JObject.FromObject(raw);
+
+      JsonReader reader = new JTokenReader(o);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.Raw, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.String, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      Assert.IsFalse(reader.Read());
+    }
+
+    [Test]
+    public void DeserializeFromRaw()
+    {
+      PersonRaw raw = new PersonRaw
+      {
+        FirstName = "FirstNameValue",
+        RawContent = new JRaw("[1,2,3,4,5]"),
+        LastName = "LastNameValue"
+      };
+
+      JObject o = JObject.FromObject(raw);
+
+      JsonReader reader = new JTokenReader(o);
+      JsonSerializer serializer = new JsonSerializer();
+      raw = (PersonRaw)serializer.Deserialize(reader, typeof(PersonRaw));
+
+      Assert.AreEqual("FirstNameValue", raw.FirstName);
+      Assert.AreEqual("LastNameValue", raw.LastName);
+      Assert.AreEqual("[1,2,3,4,5]", raw.RawContent.Value);
+    }
+
+    [Test]
+    public void Parse_ShouldThrowOnUnexpectedToken()
+    {
+      ExceptionAssert.Throws<Exception>("Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray",
+        () =>
+        {
+          string json = @"[""prop""]";
+          JObject.Parse(json);
+        });
+    }
+
+    [Test]
+    public void ParseJavaScriptDate()
+    {
+      string json = @"[new Date(1207285200000)]";
+
+      JArray a = (JArray)JsonConvert.DeserializeObject(json);
+      JValue v = (JValue)a[0];
+
+      Assert.AreEqual(JsonConvert.ConvertJavaScriptTicksToDateTime(1207285200000), (DateTime)v);
+    }
+
+    [Test]
+    public void GenericValueCast()
+    {
+      string json = @"{""foo"":true}";
+      JObject o = (JObject)JsonConvert.DeserializeObject(json);
+      bool? value = o.Value<bool?>("foo");
+      Assert.AreEqual(true, value);
+
+      json = @"{""foo"":null}"; 
+      o = (JObject)JsonConvert.DeserializeObject(json);
+      value = o.Value<bool?>("foo");
+      Assert.AreEqual(null, value);
+    }
+
+    [Test]
+    public void Blog()
+    {
+      ExceptionAssert.Throws<JsonReaderException>(
+        "Invalid property identifier character: ]. Line 3, position 5.",
+        () =>
+        {
+          JObject person = JObject.Parse(@"{
+    ""name"": ""James"",
+    ]!#$THIS IS: BAD JSON![{}}}}]
+  }");
+
+          // Invalid property identifier character: ]. Line 3, position 9.
+        });
+    }
+
+    [Test]
+    public void RawChildValues()
+    {
+      JObject o = new JObject();
+      o["val1"] = new JRaw("1");
+      o["val2"] = new JRaw("1");
+
+      string json = o.ToString();
+
+      Assert.AreEqual(@"{
+  ""val1"": 1,
+  ""val2"": 1
+}", json);
+    }
+
+    [Test]
+    public void Iterate()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue1", new JValue(1));
+      o.Add("PropertyNameValue2", new JValue(2));
+
+      JToken t = o;
+
+      int i = 1;
+      foreach (JProperty property in t)
+      {
+        Assert.AreEqual("PropertyNameValue" + i, property.Name);
+        Assert.AreEqual(i, (int)property.Value);
+
+        i++;
+      }
+    }
+
+    [Test]
+    public void KeyValuePairIterate()
+    {
+      JObject o = new JObject();
+      o.Add("PropertyNameValue1", new JValue(1));
+      o.Add("PropertyNameValue2", new JValue(2));
+
+      int i = 1;
+      foreach (KeyValuePair<string, JToken> pair in o)
+      {
+        Assert.AreEqual("PropertyNameValue" + i, pair.Key);
+        Assert.AreEqual(i, (int)pair.Value);
+
+        i++;
+      }
+    }
+
+    [Test]
+    public void WriteObjectNullStringValue()
+    {
+      string s = null;
+      JValue v = new JValue(s);
+      Assert.AreEqual(null, v.Value);
+      Assert.AreEqual(JTokenType.String, v.Type);
+
+      JObject o = new JObject();
+      o["title"] = v;
+
+      string output = o.ToString();
+      
+      Assert.AreEqual(@"{
+  ""title"": null
+}", output);
+    }
+
+    [Test]
+    public void Example()
+    {
+      string json = @"{
+        ""Name"": ""Apple"",
+        ""Expiry"": new Date(1230422400000),
+        ""Price"": 3.99,
+        ""Sizes"": [
+          ""Small"",
+          ""Medium"",
+          ""Large""
+        ]
+      }";
+
+      JObject o = JObject.Parse(json);
+
+      string name = (string)o["Name"];
+      // Apple
+
+      JArray sizes = (JArray)o["Sizes"];
+
+      string smallest = (string)sizes[0];
+      // Small
+
+      Console.WriteLine(name);
+      Console.WriteLine(smallest);
+    }
+
+    [Test]
+    public void DeserializeClassManually()
+    {
+      string jsonText = @"{
+  ""short"":
+  {
+    ""original"":""http://www.foo.com/"",
+    ""short"":""krehqk"",
+    ""error"":
+    {
+      ""code"":0,
+      ""msg"":""No action taken""
+    }
+  }
+}";
+
+      JObject json = JObject.Parse(jsonText);
+
+      Shortie shortie = new Shortie
+                        {
+                          Original = (string)json["short"]["original"],
+                          Short = (string)json["short"]["short"],
+                          Error = new ShortieException
+                                  {
+                                    Code = (int)json["short"]["error"]["code"],
+                                    ErrorMessage = (string)json["short"]["error"]["msg"]
+                                  }
+                        };
+
+      Console.WriteLine(shortie.Original);
+      // http://www.foo.com/
+
+      Console.WriteLine(shortie.Error.ErrorMessage);
+      // No action taken
+
+      Assert.AreEqual("http://www.foo.com/", shortie.Original);
+      Assert.AreEqual("krehqk", shortie.Short);
+      Assert.AreEqual(null, shortie.Shortened);
+      Assert.AreEqual(0, shortie.Error.Code);
+      Assert.AreEqual("No action taken", shortie.Error.ErrorMessage);
+    }
+
+    [Test]
+    public void JObjectContainingHtml()
+    {
+      JObject o = new JObject();
+      o["rc"] = new JValue(200);
+      o["m"] = new JValue("");
+      o["o"] = new JValue(@"<div class='s1'>
+    <div class='avatar'>                    
+        <a href='asdf'>asdf</a><br />
+        <strong>0</strong>
+    </div>
+    <div class='sl'>
+        <p>
+            444444444
+        </p>
+    </div>
+    <div class='clear'>
+    </div>                        
+</div>");
+
+      Assert.AreEqual(@"{
+  ""rc"": 200,
+  ""m"": """",
+  ""o"": ""<div class='s1'>\r\n    <div class='avatar'>                    \r\n        <a href='asdf'>asdf</a><br />\r\n        <strong>0</strong>\r\n    </div>\r\n    <div class='sl'>\r\n        <p>\r\n            444444444\r\n        </p>\r\n    </div>\r\n    <div class='clear'>\r\n    </div>                        \r\n</div>""
+}", o.ToString());
+    }
+
+    [Test]
+    public void ImplicitValueConversions()
+    {
+      JObject moss = new JObject();
+      moss["FirstName"] = new JValue("Maurice");
+      moss["LastName"] = new JValue("Moss");
+      moss["BirthDate"] = new JValue(new DateTime(1977, 12, 30));
+      moss["Department"] = new JValue("IT");
+      moss["JobTitle"] = new JValue("Support");
+
+      Console.WriteLine(moss.ToString());
+      //{
+      //  "FirstName": "Maurice",
+      //  "LastName": "Moss",
+      //  "BirthDate": "\/Date(252241200000+1300)\/",
+      //  "Department": "IT",
+      //  "JobTitle": "Support"
+      //}
+
+
+      JObject jen = new JObject();
+      jen["FirstName"] = "Jen";
+      jen["LastName"] = "Barber";
+      jen["BirthDate"] = new DateTime(1978, 3, 15);
+      jen["Department"] = "IT";
+      jen["JobTitle"] = "Manager";
+
+      Console.WriteLine(jen.ToString());
+      //{
+      //  "FirstName": "Jen",
+      //  "LastName": "Barber",
+      //  "BirthDate": "\/Date(258721200000+1300)\/",
+      //  "Department": "IT",
+      //  "JobTitle": "Manager"
+      //}
+    }
+
+    [Test]
+    public void ReplaceJPropertyWithJPropertyWithSameName()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+
+      JObject o = new JObject(p1, p2);
+      IList l = o;
+      Assert.AreEqual(p1, l[0]);
+      Assert.AreEqual(p2, l[1]);
+
+      JProperty p3 = new JProperty("Test1", "III");
+
+      p1.Replace(p3);
+      Assert.AreEqual(null, p1.Parent);
+      Assert.AreEqual(l, p3.Parent);
+
+      Assert.AreEqual(p3, l[0]);
+      Assert.AreEqual(p2, l[1]);
+
+      Assert.AreEqual(2, l.Count);
+      Assert.AreEqual(2, o.Properties().Count());
+
+      JProperty p4 = new JProperty("Test4", "IV");
+
+      p2.Replace(p4);
+      Assert.AreEqual(null, p2.Parent);
+      Assert.AreEqual(l, p4.Parent);
+
+      Assert.AreEqual(p3, l[0]);
+      Assert.AreEqual(p4, l[1]);
+    }
+
+#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
+    [Test]
+    public void PropertyChanging()
+    {
+      object changing = null;
+      object changed = null;
+      int changingCount = 0;
+      int changedCount = 0;
+
+      JObject o = new JObject();
+      o.PropertyChanging += (sender, args) =>
+        {
+          JObject s = (JObject) sender;
+          changing = (s[args.PropertyName] != null) ? ((JValue)s[args.PropertyName]).Value : null;
+          changingCount++;
+        };
+      o.PropertyChanged += (sender, args) =>
+      {
+        JObject s = (JObject)sender;
+        changed = (s[args.PropertyName] != null) ? ((JValue)s[args.PropertyName]).Value : null;
+        changedCount++;
+      };
+
+      o["StringValue"] = "value1";
+      Assert.AreEqual(null, changing);
+      Assert.AreEqual("value1", changed);
+      Assert.AreEqual("value1", (string)o["StringValue"]);
+      Assert.AreEqual(1, changingCount);
+      Assert.AreEqual(1, changedCount);
+
+      o["StringValue"] = "value1";
+      Assert.AreEqual(1, changingCount);
+      Assert.AreEqual(1, changedCount);
+
+      o["StringValue"] = "value2";
+      Assert.AreEqual("value1", changing);
+      Assert.AreEqual("value2", changed);
+      Assert.AreEqual("value2", (string)o["StringValue"]);
+      Assert.AreEqual(2, changingCount);
+      Assert.AreEqual(2, changedCount);
+
+      o["StringValue"] = null;
+      Assert.AreEqual("value2", changing);
+      Assert.AreEqual(null, changed);
+      Assert.AreEqual(null, (string)o["StringValue"]);
+      Assert.AreEqual(3, changingCount);
+      Assert.AreEqual(3, changedCount);
+
+      o["NullValue"] = null;
+      Assert.AreEqual(null, changing);
+      Assert.AreEqual(null, changed);
+      Assert.AreEqual(new JValue((object)null), o["NullValue"]);
+      Assert.AreEqual(4, changingCount);
+      Assert.AreEqual(4, changedCount);
+
+      o["NullValue"] = null;
+      Assert.AreEqual(4, changingCount);
+      Assert.AreEqual(4, changedCount);
+    }
+#endif
+
+    [Test]
+    public void PropertyChanged()
+    {
+      object changed = null;
+      int changedCount = 0;
+
+      JObject o = new JObject();
+      o.PropertyChanged += (sender, args) =>
+      {
+        JObject s = (JObject)sender;
+        changed = (s[args.PropertyName] != null) ? ((JValue)s[args.PropertyName]).Value : null;
+        changedCount++;
+      };
+
+      o["StringValue"] = "value1";
+      Assert.AreEqual("value1", changed);
+      Assert.AreEqual("value1", (string)o["StringValue"]);
+      Assert.AreEqual(1, changedCount);
+
+      o["StringValue"] = "value1";
+      Assert.AreEqual(1, changedCount);
+
+      o["StringValue"] = "value2";
+      Assert.AreEqual("value2", changed);
+      Assert.AreEqual("value2", (string)o["StringValue"]);
+      Assert.AreEqual(2, changedCount);
+
+      o["StringValue"] = null;
+      Assert.AreEqual(null, changed);
+      Assert.AreEqual(null, (string)o["StringValue"]);
+      Assert.AreEqual(3, changedCount);
+
+      o["NullValue"] = null;
+      Assert.AreEqual(null, changed);
+      Assert.AreEqual(new JValue((object)null), o["NullValue"]);
+      Assert.AreEqual(4, changedCount);
+
+      o["NullValue"] = null;
+      Assert.AreEqual(4, changedCount);
+    }
+
+    [Test]
+    public void IListContains()
+    {
+      JProperty p = new JProperty("Test", 1);
+      IList l = new JObject(p);
+
+      Assert.IsTrue(l.Contains(p));
+      Assert.IsFalse(l.Contains(new JProperty("Test", 1)));
+    }
+
+    [Test]
+    public void IListIndexOf()
+    {
+      JProperty p = new JProperty("Test", 1);
+      IList l = new JObject(p);
+
+      Assert.AreEqual(0, l.IndexOf(p));
+      Assert.AreEqual(-1, l.IndexOf(new JProperty("Test", 1)));
+    }
+
+    [Test]
+    public void IListClear()
+    {
+      JProperty p = new JProperty("Test", 1);
+      IList l = new JObject(p);
+
+      Assert.AreEqual(1, l.Count);
+
+      l.Clear();
+
+      Assert.AreEqual(0, l.Count);
+    }
+
+    [Test]
+    public void IListCopyTo()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      object[] a = new object[l.Count];
+
+      l.CopyTo(a, 0);
+
+      Assert.AreEqual(p1, a[0]);
+      Assert.AreEqual(p2, a[1]);
+    }
+
+    [Test]
+    public void IListAdd()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      l.Add(p3);
+
+      Assert.AreEqual(3, l.Count);
+      Assert.AreEqual(p3, l[2]);
+    }
+
+    [Test]
+    public void IListAddBadToken()
+    {
+      ExceptionAssert.Throws<ArgumentException>(
+      "Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
+      () =>
+      {
+        JProperty p1 = new JProperty("Test1", 1);
+        JProperty p2 = new JProperty("Test2", "Two");
+        IList l = new JObject(p1, p2);
+
+        l.Add(new JValue("Bad!"));
+      });
+    }
+
+    [Test]
+    public void IListAddBadValue()
+    {
+      ExceptionAssert.Throws<ArgumentException>(
+      "Argument is not a JToken.",
+      () =>
+      {
+        JProperty p1 = new JProperty("Test1", 1);
+        JProperty p2 = new JProperty("Test2", "Two");
+        IList l = new JObject(p1, p2);
+
+        l.Add("Bad!");
+      });
+    }
+
+    [Test]
+    public void IListAddPropertyWithExistingName()
+    {
+      ExceptionAssert.Throws<ArgumentException>(
+      "Can not add property Test2 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
+      () =>
+      {
+        JProperty p1 = new JProperty("Test1", 1);
+        JProperty p2 = new JProperty("Test2", "Two");
+        IList l = new JObject(p1, p2);
+
+        JProperty p3 = new JProperty("Test2", "II");
+
+        l.Add(p3);
+      });
+    }
+
+    [Test]
+    public void IListRemove()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      // won't do anything
+      l.Remove(p3);
+      Assert.AreEqual(2, l.Count);
+
+      l.Remove(p1);
+      Assert.AreEqual(1, l.Count);
+      Assert.IsFalse(l.Contains(p1));
+      Assert.IsTrue(l.Contains(p2));
+
+      l.Remove(p2);
+      Assert.AreEqual(0, l.Count);
+      Assert.IsFalse(l.Contains(p2));
+      Assert.AreEqual(null, p2.Parent);
+    }
+
+    [Test]
+    public void IListRemoveAt()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      // won't do anything
+      l.RemoveAt(0);
+
+      l.Remove(p1);
+      Assert.AreEqual(1, l.Count);
+
+      l.Remove(p2);
+      Assert.AreEqual(0, l.Count);
+    }
+
+    [Test]
+    public void IListInsert()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      l.Insert(1, p3);
+      Assert.AreEqual(l, p3.Parent);
+
+      Assert.AreEqual(p1, l[0]);
+      Assert.AreEqual(p3, l[1]);
+      Assert.AreEqual(p2, l[2]);
+    }
+
+    [Test]
+    public void IListIsReadOnly()
+    {
+      IList l = new JObject();
+      Assert.IsFalse(l.IsReadOnly);
+    }
+
+    [Test]
+    public void IListIsFixedSize()
+    {
+      IList l = new JObject();
+      Assert.IsFalse(l.IsFixedSize);
+    }
+
+    [Test]
+    public void IListSetItem()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      l[0] = p3;
+
+      Assert.AreEqual(p3, l[0]);
+      Assert.AreEqual(p2, l[1]);
+    }
+
+    [Test]
+    public void IListSetItemAlreadyExists()
+    {
+      ExceptionAssert.Throws<ArgumentException>(
+      "Can not add property Test3 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
+      () =>
+      {
+        JProperty p1 = new JProperty("Test1", 1);
+        JProperty p2 = new JProperty("Test2", "Two");
+        IList l = new JObject(p1, p2);
+
+        JProperty p3 = new JProperty("Test3", "III");
+
+        l[0] = p3;
+        l[1] = p3;
+      });
+    }
+
+    [Test]
+    public void IListSetItemInvalid()
+    {
+      ExceptionAssert.Throws<ArgumentException>(
+      @"Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
+      () =>
+      {
+        JProperty p1 = new JProperty("Test1", 1);
+        JProperty p2 = new JProperty("Test2", "Two");
+        IList l = new JObject(p1, p2);
+
+        l[0] = new JValue(true);
+      });
+    }
+
+    [Test]
+    public void IListSyncRoot()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      Assert.IsNotNull(l.SyncRoot);
+    }
+
+    [Test]
+    public void IListIsSynchronized()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList l = new JObject(p1, p2);
+
+      Assert.IsFalse(l.IsSynchronized);
+    }
+
+    [Test]
+    public void GenericListJTokenContains()
+    {
+      JProperty p = new JProperty("Test", 1);
+      IList<JToken> l = new JObject(p);
+
+      Assert.IsTrue(l.Contains(p));
+      Assert.IsFalse(l.Contains(new JProperty("Test", 1)));
+    }
+
+    [Test]
+    public void GenericListJTokenIndexOf()
+    {
+      JProperty p = new JProperty("Test", 1);
+      IList<JToken> l = new JObject(p);
+
+      Assert.AreEqual(0, l.IndexOf(p));
+      Assert.AreEqual(-1, l.IndexOf(new JProperty("Test", 1)));
+    }
+
+    [Test]
+    public void GenericListJTokenClear()
+    {
+      JProperty p = new JProperty("Test", 1);
+      IList<JToken> l = new JObject(p);
+
+      Assert.AreEqual(1, l.Count);
+
+      l.Clear();
+
+      Assert.AreEqual(0, l.Count);
+    }
+
+    [Test]
+    public void GenericListJTokenCopyTo()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList<JToken> l = new JObject(p1, p2);
+
+      JToken[] a = new JToken[l.Count];
+
+      l.CopyTo(a, 0);
+
+      Assert.AreEqual(p1, a[0]);
+      Assert.AreEqual(p2, a[1]);
+    }
+
+    [Test]
+    public void GenericListJTokenAdd()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList<JToken> l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      l.Add(p3);
+
+      Assert.AreEqual(3, l.Count);
+      Assert.AreEqual(p3, l[2]);
+    }
+
+    [Test]
+    public void GenericListJTokenAddBadToken()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
+      () =>
+      {
+        JProperty p1 = new JProperty("Test1", 1);
+        JProperty p2 = new JProperty("Test2", "Two");
+        IList<JToken> l = new JObject(p1, p2);
+
+        l.Add(new JValue("Bad!"));
+      });
+    }
+
+    [Test]
+    public void GenericListJTokenAddBadValue()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.",
+        () =>
+        {
+          JProperty p1 = new JProperty("Test1", 1);
+          JProperty p2 = new JProperty("Test2", "Two");
+          IList<JToken> l = new JObject(p1, p2);
+
+          // string is implicitly converted to JValue
+          l.Add("Bad!");
+        });
+    }
+
+    [Test]
+    public void GenericListJTokenAddPropertyWithExistingName()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not add property Test2 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
+        () =>
+        {
+          JProperty p1 = new JProperty("Test1", 1);
+          JProperty p2 = new JProperty("Test2", "Two");
+          IList<JToken> l = new JObject(p1, p2);
+
+          JProperty p3 = new JProperty("Test2", "II");
+
+          l.Add(p3);
+        });
+    }
+
+    [Test]
+    public void GenericListJTokenRemove()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList<JToken> l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      // won't do anything
+      Assert.IsFalse(l.Remove(p3));
+      Assert.AreEqual(2, l.Count);
+
+      Assert.IsTrue(l.Remove(p1));
+      Assert.AreEqual(1, l.Count);
+      Assert.IsFalse(l.Contains(p1));
+      Assert.IsTrue(l.Contains(p2));
+
+      Assert.IsTrue(l.Remove(p2));
+      Assert.AreEqual(0, l.Count);
+      Assert.IsFalse(l.Contains(p2));
+      Assert.AreEqual(null, p2.Parent);
+    }
+
+    [Test]
+    public void GenericListJTokenRemoveAt()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList<JToken> l = new JObject(p1, p2);
+
+      // won't do anything
+      l.RemoveAt(0);
+
+      l.Remove(p1);
+      Assert.AreEqual(1, l.Count);
+
+      l.Remove(p2);
+      Assert.AreEqual(0, l.Count);
+    }
+
+    [Test]
+    public void GenericListJTokenInsert()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList<JToken> l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      l.Insert(1, p3);
+      Assert.AreEqual(l, p3.Parent);
+
+      Assert.AreEqual(p1, l[0]);
+      Assert.AreEqual(p3, l[1]);
+      Assert.AreEqual(p2, l[2]);
+    }
+
+    [Test]
+    public void GenericListJTokenIsReadOnly()
+    {
+      IList<JToken> l = new JObject();
+      Assert.IsFalse(l.IsReadOnly);
+    }
+
+    [Test]
+    public void GenericListJTokenSetItem()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      IList<JToken> l = new JObject(p1, p2);
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      l[0] = p3;
+
+      Assert.AreEqual(p3, l[0]);
+      Assert.AreEqual(p2, l[1]);
+    }
+
+    [Test]
+    public void GenericListJTokenSetItemAlreadyExists()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not add property Test3 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.",
+      () =>
+      {
+        JProperty p1 = new JProperty("Test1", 1);
+        JProperty p2 = new JProperty("Test2", "Two");
+        IList<JToken> l = new JObject(p1, p2);
+
+        JProperty p3 = new JProperty("Test3", "III");
+
+        l[0] = p3;
+        l[1] = p3;
+      });
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void IBindingListSortDirection()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(ListSortDirection.Ascending, l.SortDirection);
+    }
+
+    [Test]
+    public void IBindingListSortProperty()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(null, l.SortProperty);
+    }
+
+    [Test]
+    public void IBindingListSupportsChangeNotification()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(true, l.SupportsChangeNotification);
+    }
+
+    [Test]
+    public void IBindingListSupportsSearching()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(false, l.SupportsSearching);
+    }
+
+    [Test]
+    public void IBindingListSupportsSorting()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(false, l.SupportsSorting);
+    }
+
+    [Test]
+    public void IBindingListAllowEdit()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(true, l.AllowEdit);
+    }
+
+    [Test]
+    public void IBindingListAllowNew()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(true, l.AllowNew);
+    }
+
+    [Test]
+    public void IBindingListAllowRemove()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(true, l.AllowRemove);
+    }
+
+    [Test]
+    public void IBindingListAddIndex()
+    {
+      IBindingList l = new JObject();
+      // do nothing
+      l.AddIndex(null);
+    }
+
+    [Test]
+    [ExpectedException(typeof(NotSupportedException))]
+    public void IBindingListApplySort()
+    {
+      IBindingList l = new JObject();
+      l.ApplySort(null, ListSortDirection.Ascending);
+    }
+
+    [Test]
+    [ExpectedException(typeof(NotSupportedException))]
+    public void IBindingListRemoveSort()
+    {
+      IBindingList l = new JObject();
+      l.RemoveSort();
+    }
+
+    [Test]
+    public void IBindingListRemoveIndex()
+    {
+      IBindingList l = new JObject();
+      // do nothing
+      l.RemoveIndex(null);
+    }
+
+    [Test]
+    [ExpectedException(typeof(NotSupportedException))]
+    public void IBindingListFind()
+    {
+      IBindingList l = new JObject();
+      l.Find(null, null);
+    }
+
+    [Test]
+    public void IBindingListIsSorted()
+    {
+      IBindingList l = new JObject();
+      Assert.AreEqual(false, l.IsSorted);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception), ExpectedMessage = "Could not determine new value to add to 'Newtonsoft.Json.Linq.JObject'.")]
+    public void IBindingListAddNew()
+    {
+      IBindingList l = new JObject();
+      l.AddNew();
+    }
+
+    [Test]
+    public void IBindingListAddNewWithEvent()
+    {
+      JObject o = new JObject();
+      o.AddingNew += (s, e) => e.NewObject = new JProperty("Property!");
+
+      IBindingList l = o;
+      object newObject = l.AddNew();
+      Assert.IsNotNull(newObject);
+
+      JProperty p = (JProperty) newObject;
+      Assert.AreEqual("Property!", p.Name);
+      Assert.AreEqual(o, p.Parent);
+    }
+
+    [Test]
+    public void ITypedListGetListName()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      ITypedList l = new JObject(p1, p2);
+
+      Assert.AreEqual(string.Empty, l.GetListName(null));
+    }
+
+    [Test]
+    public void ITypedListGetItemProperties()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      ITypedList l = new JObject(p1, p2);
+
+      PropertyDescriptorCollection propertyDescriptors = l.GetItemProperties(null);
+      Assert.IsNull(propertyDescriptors);
+    }
+
+    [Test]
+    public void ListChanged()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      JObject o = new JObject(p1, p2);
+
+      ListChangedType? changedType = null;
+      int? index = null;
+      
+      o.ListChanged += (s, a) =>
+        {
+          changedType = a.ListChangedType;
+          index = a.NewIndex;
+        };
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      o.Add(p3);
+      Assert.AreEqual(changedType, ListChangedType.ItemAdded);
+      Assert.AreEqual(index, 2);
+      Assert.AreEqual(p3, ((IList<JToken>)o)[index.Value]);
+
+      JProperty p4 = new JProperty("Test4", "IV");
+
+      ((IList<JToken>) o)[index.Value] = p4;
+      Assert.AreEqual(changedType, ListChangedType.ItemChanged);
+      Assert.AreEqual(index, 2);
+      Assert.AreEqual(p4, ((IList<JToken>)o)[index.Value]);
+      Assert.IsFalse(((IList<JToken>)o).Contains(p3));
+      Assert.IsTrue(((IList<JToken>)o).Contains(p4));
+
+      o["Test1"] = 2;
+      Assert.AreEqual(changedType, ListChangedType.ItemChanged);
+      Assert.AreEqual(index, 0);
+      Assert.AreEqual(2, (int)o["Test1"]);
+    }
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+    [Test]
+    public void CollectionChanged()
+    {
+      JProperty p1 = new JProperty("Test1", 1);
+      JProperty p2 = new JProperty("Test2", "Two");
+      JObject o = new JObject(p1, p2);
+
+      NotifyCollectionChangedAction? changedType = null;
+      int? index = null;
+
+      o.CollectionChanged += (s, a) =>
+      {
+        changedType = a.Action;
+        index = a.NewStartingIndex;
+      };
+
+      JProperty p3 = new JProperty("Test3", "III");
+
+      o.Add(p3);
+      Assert.AreEqual(changedType, NotifyCollectionChangedAction.Add);
+      Assert.AreEqual(index, 2);
+      Assert.AreEqual(p3, ((IList<JToken>)o)[index.Value]);
+
+      JProperty p4 = new JProperty("Test4", "IV");
+
+      ((IList<JToken>)o)[index.Value] = p4;
+      Assert.AreEqual(changedType, NotifyCollectionChangedAction.Replace);
+      Assert.AreEqual(index, 2);
+      Assert.AreEqual(p4, ((IList<JToken>)o)[index.Value]);
+      Assert.IsFalse(((IList<JToken>)o).Contains(p3));
+      Assert.IsTrue(((IList<JToken>)o).Contains(p4));
+
+      o["Test1"] = 2;
+      Assert.AreEqual(changedType, NotifyCollectionChangedAction.Replace);
+      Assert.AreEqual(index, 0);
+      Assert.AreEqual(2, (int)o["Test1"]);
+    }
+#endif
+
+    [Test]
+    public void GetGeocodeAddress()
+    {
+      string json = @"{
+  ""name"": ""Address: 435 North Mulford Road Rockford, IL 61107"",
+  ""Status"": {
+    ""code"": 200,
+    ""request"": ""geocode""
+  },
+  ""Placemark"": [ {
+    ""id"": ""p1"",
+    ""address"": ""435 N Mulford Rd, Rockford, IL 61107, USA"",
+    ""AddressDetails"": {
+   ""Accuracy"" : 8,
+   ""Country"" : {
+      ""AdministrativeArea"" : {
+         ""AdministrativeAreaName"" : ""IL"",
+         ""SubAdministrativeArea"" : {
+            ""Locality"" : {
+               ""LocalityName"" : ""Rockford"",
+               ""PostalCode"" : {
+                  ""PostalCodeNumber"" : ""61107""
+               },
+               ""Thoroughfare"" : {
+                  ""ThoroughfareName"" : ""435 N Mulford Rd""
+               }
+            },
+            ""SubAdministrativeAreaName"" : ""Winnebago""
+         }
+      },
+      ""CountryName"" : ""USA"",
+      ""CountryNameCode"" : ""US""
+   }
+},
+    ""ExtendedData"": {
+      ""LatLonBox"": {
+        ""north"": 42.2753076,
+        ""south"": 42.2690124,
+        ""east"": -88.9964645,
+        ""west"": -89.0027597
+      }
+    },
+    ""Point"": {
+      ""coordinates"": [ -88.9995886, 42.2721596, 0 ]
+    }
+  } ]
+}";
+
+      JObject o = JObject.Parse(json);
+
+      string searchAddress = (string)o["Placemark"][0]["AddressDetails"]["Country"]["AdministrativeArea"]["SubAdministrativeArea"]["Locality"]["Thoroughfare"]["ThoroughfareName"];
+      Assert.AreEqual("435 N Mulford Rd", searchAddress);
+    }
+
+    [Test]
+    public void SetValueWithInvalidPropertyName()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Set JObject values with invalid key value: 0. Object property name expected.",
+        () =>
+        {
+          JObject o = new JObject();
+          o[0] = new JValue(3);
+        });
+    }
+
+    [Test]
+    public void SetValue()
+    {
+      object key = "TestKey";
+
+      JObject o = new JObject();
+      o[key] = new JValue(3);
+
+      Assert.AreEqual(3, (int)o[key]);
+    }
+
+    [Test]
+    public void ParseMultipleProperties()
+    {
+      string json = @"{
+        ""Name"": ""Name1"",
+        ""Name"": ""Name2""
+      }";
+
+      JObject o = JObject.Parse(json);
+      string value = (string)o["Name"];
+
+      Assert.AreEqual("Name2", value);
+    }
+
+#if !NETFX_CORE
+    [Test]
+    public void WriteObjectNullDBNullValue()
+    {
+      DBNull dbNull = DBNull.Value;
+      JValue v = new JValue(dbNull);
+      Assert.AreEqual(DBNull.Value, v.Value);
+      Assert.AreEqual(JTokenType.Null, v.Type);
+
+      JObject o = new JObject();
+      o["title"] = v;
+
+      string output = o.ToString();
+      
+      Assert.AreEqual(@"{
+  ""title"": null
+}", output);
+    }
+#endif
+
+    [Test]
+    public void InvalidValueCastExceptionMessage()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not convert Object to String.",
+        () =>
+        {
+          string json = @"{
+  ""responseData"": {}, 
+  ""responseDetails"": null, 
+  ""responseStatus"": 200
+}";
+
+          JObject o = JObject.Parse(json);
+
+          string name = (string)o["responseData"];
+        });
+    }
+
+    [Test]
+    public void InvalidPropertyValueCastExceptionMessage()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not convert Object to String.",
+      () =>
+      {
+        string json = @"{
+  ""responseData"": {}, 
+  ""responseDetails"": null, 
+  ""responseStatus"": 200
+}";
+
+        JObject o = JObject.Parse(json);
+
+        string name = (string)o.Property("responseData");
+      });
+    }
+
+    [Test]
+    public void NumberTooBigForInt64()
+    {
+      ExceptionAssert.Throws<JsonReaderException>("JSON integer 307953220000517141511 is too large or small for an Int64.",
+        () =>
+        {
+          string json = @"{""code"": 307953220000517141511}";
+
+          JObject.Parse(json);
+        });
+    }
+
+    [Test]
+    public void ParseIncomplete()
+    {
+      ExceptionAssert.Throws<Exception>("Unexpected end of content while loading JObject.",
+        () =>
+        {
+          JObject.Parse("{ foo:");
+        });
+    }
+
+    [Test]
+    public void LoadFromNestedObject()
+    {
+      string jsonText = @"{
+  ""short"":
+  {
+    ""error"":
+    {
+      ""code"":0,
+      ""msg"":""No action taken""
+    }
+  }
+}";
+
+      JsonReader reader = new JsonTextReader(new StringReader(jsonText));
+      reader.Read();
+      reader.Read();
+      reader.Read();
+      reader.Read();
+      reader.Read();
+
+      JObject o = (JObject)JToken.ReadFrom(reader);
+      Assert.IsNotNull(o);
+      Assert.AreEqual(@"{
+  ""code"": 0,
+  ""msg"": ""No action taken""
+}", o.ToString(Formatting.Indented));
+    }
+
+    [Test]
+    public void LoadFromNestedObjectIncomplete()
+    {
+      ExceptionAssert.Throws<Exception>("Unexpected end of content while loading JObject.",
+      () =>
+      {
+        string jsonText = @"{
+  ""short"":
+  {
+    ""error"":
+    {
+      ""code"":0";
+
+        JsonReader reader = new JsonTextReader(new StringReader(jsonText));
+        reader.Read();
+        reader.Read();
+        reader.Read();
+        reader.Read();
+        reader.Read();
+
+        JToken.ReadFrom(reader);
+      });
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void GetProperties()
+    {
+      JObject o = JObject.Parse("{'prop1':12,'prop2':'hi!','prop3':null,'prop4':[1,2,3]}");
+
+      ICustomTypeDescriptor descriptor = o;
+
+      PropertyDescriptorCollection properties = descriptor.GetProperties();
+      Assert.AreEqual(4, properties.Count);
+
+      PropertyDescriptor prop1 = properties[0];
+      Assert.AreEqual("prop1", prop1.Name);
+      Assert.AreEqual(typeof(long), prop1.PropertyType);
+      Assert.AreEqual(typeof(JObject), prop1.ComponentType);
+      Assert.AreEqual(false, prop1.CanResetValue(o));
+      Assert.AreEqual(false, prop1.ShouldSerializeValue(o));
+
+      PropertyDescriptor prop2 = properties[1];
+      Assert.AreEqual("prop2", prop2.Name);
+      Assert.AreEqual(typeof(string), prop2.PropertyType);
+      Assert.AreEqual(typeof(JObject), prop2.ComponentType);
+      Assert.AreEqual(false, prop2.CanResetValue(o));
+      Assert.AreEqual(false, prop2.ShouldSerializeValue(o));
+
+      PropertyDescriptor prop3 = properties[2];
+      Assert.AreEqual("prop3", prop3.Name);
+      Assert.AreEqual(typeof(object), prop3.PropertyType);
+      Assert.AreEqual(typeof(JObject), prop3.ComponentType);
+      Assert.AreEqual(false, prop3.CanResetValue(o));
+      Assert.AreEqual(false, prop3.ShouldSerializeValue(o));
+
+      PropertyDescriptor prop4 = properties[3];
+      Assert.AreEqual("prop4", prop4.Name);
+      Assert.AreEqual(typeof(JArray), prop4.PropertyType);
+      Assert.AreEqual(typeof(JObject), prop4.ComponentType);
+      Assert.AreEqual(false, prop4.CanResetValue(o));
+      Assert.AreEqual(false, prop4.ShouldSerializeValue(o));
+    }
+#endif
+    [Test]
+    public void ParseEmptyObjectWithComment()
+    {
+      JObject o = JObject.Parse("{ /* A Comment */ }");
+      Assert.AreEqual(0, o.Count);
+    }
+
+    [Test]
+    public void FromObjectTimeSpan()
+    {
+      JValue v = (JValue)JToken.FromObject(TimeSpan.FromDays(1));
+      Assert.AreEqual(v.Value, TimeSpan.FromDays(1));
+
+      Assert.AreEqual("1.00:00:00", v.ToString());
+    }
+
+    [Test]
+    public void FromObjectUri()
+    {
+      JValue v = (JValue)JToken.FromObject(new Uri("http://www.stuff.co.nz"));
+      Assert.AreEqual(v.Value, new Uri("http://www.stuff.co.nz"));
+
+      Assert.AreEqual("http://www.stuff.co.nz/", v.ToString());
+    }
+
+    [Test]
+    public void FromObjectGuid()
+    {
+      JValue v = (JValue)JToken.FromObject(new Guid("9065ACF3-C820-467D-BE50-8D4664BEAF35"));
+      Assert.AreEqual(v.Value, new Guid("9065ACF3-C820-467D-BE50-8D4664BEAF35"));
+
+      Assert.AreEqual("9065acf3-c820-467d-be50-8d4664beaf35", v.ToString());
+    }
+
+    [Test]
+    public void ParseAdditionalContent()
+    {
+      ExceptionAssert.Throws<JsonReaderException>("Additional text encountered after finished reading JSON content: ,. Line 10, position 2.",
+      () =>
+      {
+        string json = @"{
+""Name"": ""Apple"",
+""Expiry"": new Date(1230422400000),
+""Price"": 3.99,
+""Sizes"": [
+""Small"",
+""Medium"",
+""Large""
+]
+}, 987987";
+
+        JObject o = JObject.Parse(json);
+      });
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JPathTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JPathTests.cs
@@ -1,396 +1,396 @@
-using System;
-using System.Collections.Generic;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JPathTests : TestFixtureBase
-  {
-    [Test]
-    public void SingleProperty()
-    {
-      JPath path = new JPath("Blah");
-      Assert.AreEqual(1, path.Parts.Count);
-      Assert.AreEqual("Blah", path.Parts[0]);
-    }
-
-    [Test]
-    public void TwoProperties()
-    {
-      JPath path = new JPath("Blah.Two");
-      Assert.AreEqual(2, path.Parts.Count);
-      Assert.AreEqual("Blah", path.Parts[0]);
-      Assert.AreEqual("Two", path.Parts[1]);
-    }
-
-    [Test]
-    public void SinglePropertyAndIndexer()
-    {
-      JPath path = new JPath("Blah[0]");
-      Assert.AreEqual(2, path.Parts.Count);
-      Assert.AreEqual("Blah", path.Parts[0]);
-      Assert.AreEqual(0, path.Parts[1]);
-    }
-
-    [Test]
-    public void MultiplePropertiesAndIndexers()
-    {
-      JPath path = new JPath("Blah[0].Two.Three[1].Four");
-      Assert.AreEqual(6, path.Parts.Count);
-      Assert.AreEqual("Blah", path.Parts[0]);
-      Assert.AreEqual(0, path.Parts[1]);
-      Assert.AreEqual("Two", path.Parts[2]);
-      Assert.AreEqual("Three", path.Parts[3]);
-      Assert.AreEqual(1, path.Parts[4]);
-      Assert.AreEqual("Four", path.Parts[5]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Unexpected character while parsing path indexer: ["
-#endif
-      )]
-    public void BadCharactersInIndexer()
-    {
-      new JPath("Blah[[0]].Two.Three[1].Four");
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Path ended with open indexer. Expected ]"
-#endif
-      )]
-    public void UnclosedIndexer()
-    {
-      new JPath("Blah[0");
-    }
-
-    [Test]
-    public void AdditionalDots()
-    {
-      JPath path = new JPath(".Blah..[0]..Two.Three....[1].Four.");
-      Assert.AreEqual(6, path.Parts.Count);
-      Assert.AreEqual("Blah", path.Parts[0]);
-      Assert.AreEqual(0, path.Parts[1]);
-      Assert.AreEqual("Two", path.Parts[2]);
-      Assert.AreEqual("Three", path.Parts[3]);
-      Assert.AreEqual(1, path.Parts[4]);
-      Assert.AreEqual("Four", path.Parts[5]);
-    }
-
-    [Test]
-    public void IndexerOnly()
-    {
-      JPath path = new JPath("[111119990]");
-      Assert.AreEqual(1, path.Parts.Count);
-      Assert.AreEqual(111119990, path.Parts[0]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Empty path indexer."
-#endif
-      )]
-    public void EmptyIndexer()
-    {
-      new JPath("[]");
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected character while parsing path: ]"
-#endif
-      )]
-    public void IndexerCloseInProperty()
-    {
-      new JPath("]");
-    }
-
-    [Test]
-    public void AdjacentIndexers()
-    {
-      JPath path = new JPath("[1][0][0][" + int.MaxValue + "]");
-      Assert.AreEqual(4, path.Parts.Count);
-      Assert.AreEqual(1, path.Parts[0]);
-      Assert.AreEqual(0, path.Parts[1]);
-      Assert.AreEqual(0, path.Parts[2]);
-      Assert.AreEqual(int.MaxValue, path.Parts[3]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unexpected character following indexer: B"
-#endif
-      )]
-    public void MissingDotAfterIndexer()
-    {
-      new JPath("[1]Blah");
-    }
-
-    [Test]
-    public void EvaluateSingleProperty()
-    {
-      JObject o = new JObject(
-        new JProperty("Blah", 1));
-
-      JToken t = o.SelectToken("Blah");
-      Assert.IsNotNull(t);
-      Assert.AreEqual(JTokenType.Integer, t.Type);
-      Assert.AreEqual(1, (int)t);
-    }
-
-    [Test]
-    public void EvaluateMissingProperty()
-    {
-      JObject o = new JObject(
-        new JProperty("Blah", 1));
-
-      JToken t = o.SelectToken("Missing[1]");
-      Assert.IsNull(t);
-    }
-
-    [Test]
-    public void EvaluateIndexerOnObject()
-    {
-      JObject o = new JObject(
-        new JProperty("Blah", 1));
-
-      JToken t = o.SelectToken("[1]");
-      Assert.IsNull(t);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Index 1 not valid on JObject."
-#endif
-      )]
-    public void EvaluateIndexerOnObjectWithError()
-    {
-      JObject o = new JObject(
-        new JProperty("Blah", 1));
-
-      o.SelectToken("[1]", true);
-    }
-
-    [Test]
-    public void EvaluatePropertyOnArray()
-    {
-      JArray a = new JArray(1, 2, 3, 4, 5);
-
-      JToken t = a.SelectToken("BlahBlah");
-      Assert.IsNull(t);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Property 'BlahBlah' not valid on JArray."
-#endif
-      )]
-    public void EvaluatePropertyOnArrayWithError()
-    {
-      JArray a = new JArray(1, 2, 3, 4, 5);
-
-      a.SelectToken("BlahBlah", true);
-    }
-
-    [Test]
-    [ExpectedException(typeof(IndexOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Index 1 outside the bounds of JConstructor."
-#endif
-      )]
-    public void EvaluateConstructorOutOfBoundsIndxerWithError()
-    {
-      JConstructor c = new JConstructor("Blah");
-
-      c.SelectToken("[1]", true);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Property 'Missing' does not exist on JObject."
-#endif
-      )]
-    public void EvaluateMissingPropertyWithError()
-    {
-      JObject o = new JObject(
-        new JProperty("Blah", 1));
-
-      o.SelectToken("Missing", true);
-    }
-
-    [Test]
-    public void EvaluateOutOfBoundsIndxer()
-    {
-      JArray a = new JArray(1, 2, 3, 4, 5);
-
-      JToken t = a.SelectToken("[1000].Ha");
-      Assert.IsNull(t);
-    }
-
-    [Test]
-    [ExpectedException(typeof(IndexOutOfRangeException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Index 1000 outside the bounds of JArray."
-#endif
-      )]
-    public void EvaluateArrayOutOfBoundsIndxerWithError()
-    {
-      JArray a = new JArray(1, 2, 3, 4, 5);
-
-      a.SelectToken("[1000].Ha", true);
-    }
-
-    [Test]
-    public void EvaluateArray()
-    {
-      JArray a = new JArray(1, 2, 3, 4);
-
-      JToken t = a.SelectToken("[1]");
-      Assert.IsNotNull(t);
-      Assert.AreEqual(JTokenType.Integer, t.Type);
-      Assert.AreEqual(2, (int)t);
-    }
-
-    [Test]
-    public void EvaluateSinglePropertyReturningArray()
-    {
-      JObject o = new JObject(
-        new JProperty("Blah", new [] { 1, 2, 3 }));
-
-      JToken t = o.SelectToken("Blah");
-      Assert.IsNotNull(t);
-      Assert.AreEqual(JTokenType.Array, t.Type);
-
-      t = o.SelectToken("Blah[2]");
-      Assert.AreEqual(JTokenType.Integer, t.Type);
-      Assert.AreEqual(3, (int)t);
-    }
-
-    [Test]
-    public void EvaluateLastSingleCharacterProperty()
-    {
-      JObject o2 = JObject.Parse("{'People':[{'N':'Jeff'}]}");
-      string a2 = (string)o2.SelectToken("People[0].N");
-
-      Assert.AreEqual("Jeff", a2);
-    }
-
-    [Test]
-    public void PathWithConstructor()
-    {
-      JArray a = JArray.Parse(@"[
-  {
-    ""Property1"": [
-      1,
-      [
-        [
-          []
-        ]
-      ]
-    ]
-  },
-  {
-    ""Property2"": new Constructor1(
-      null,
-      [
-        1
-      ]
-    )
-  }
-]");
-
-      JValue v = (JValue)a.SelectToken("[1].Property2[1][0]");
-      Assert.AreEqual(1L, v.Value);
-    }
-
-
-    [Test]
-    public void Example()
-    {
-      JObject o = JObject.Parse(@"{
-        ""Stores"": [
-          ""Lambton Quay"",
-          ""Willis Street""
-        ],
-        ""Manufacturers"": [
-          {
-            ""Name"": ""Acme Co"",
-            ""Products"": [
-              {
-                ""Name"": ""Anvil"",
-                ""Price"": 50
-              }
-            ]
-          },
-          {
-            ""Name"": ""Contoso"",
-            ""Products"": [
-              {
-                ""Name"": ""Elbow Grease"",
-                ""Price"": 99.95
-              },
-              {
-                ""Name"": ""Headlight Fluid"",
-                ""Price"": 4
-              }
-            ]
-          }
-        ]
-      }");
-
-      string name = (string)o.SelectToken("Manufacturers[0].Name");
-      // Acme Co
-
-      decimal productPrice = (decimal)o.SelectToken("Manufacturers[0].Products[0].Price");
-      // 50
-
-      string productName = (string)o.SelectToken("Manufacturers[1].Products[0].Name");
-      // Elbow Grease
-
-      Assert.AreEqual("Acme Co", name);
-      Assert.AreEqual(50m, productPrice);
-      Assert.AreEqual("Elbow Grease", productName);
-
-      IList<string> storeNames = o.SelectToken("Stores").Select(s => (string)s).ToList();
-      // Lambton Quay
-      // Willis Street
-
-      IList<string> firstProductNames = o["Manufacturers"].Select(m => (string)m.SelectToken("Products[1].Name")).ToList();
-      // null
-      // Headlight Fluid
-
-      decimal totalPrice = o["Manufacturers"].Sum(m => (decimal)m.SelectToken("Products[0].Price"));
-      // 149.95
-
-      Assert.AreEqual(2, storeNames.Count);
-      Assert.AreEqual("Lambton Quay", storeNames[0]);
-      Assert.AreEqual("Willis Street", storeNames[1]);
-      Assert.AreEqual(2, firstProductNames.Count);
-      Assert.AreEqual(null, firstProductNames[0]);
-      Assert.AreEqual("Headlight Fluid", firstProductNames[1]);
-      Assert.AreEqual(149.95m, totalPrice);
-    }
-  }
+using System;
+using System.Collections.Generic;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JPathTests : TestFixtureBase
+  {
+    [Test]
+    public void SingleProperty()
+    {
+      JPath path = new JPath("Blah");
+      Assert.AreEqual(1, path.Parts.Count);
+      Assert.AreEqual("Blah", path.Parts[0]);
+    }
+
+    [Test]
+    public void TwoProperties()
+    {
+      JPath path = new JPath("Blah.Two");
+      Assert.AreEqual(2, path.Parts.Count);
+      Assert.AreEqual("Blah", path.Parts[0]);
+      Assert.AreEqual("Two", path.Parts[1]);
+    }
+
+    [Test]
+    public void SinglePropertyAndIndexer()
+    {
+      JPath path = new JPath("Blah[0]");
+      Assert.AreEqual(2, path.Parts.Count);
+      Assert.AreEqual("Blah", path.Parts[0]);
+      Assert.AreEqual(0, path.Parts[1]);
+    }
+
+    [Test]
+    public void MultiplePropertiesAndIndexers()
+    {
+      JPath path = new JPath("Blah[0].Two.Three[1].Four");
+      Assert.AreEqual(6, path.Parts.Count);
+      Assert.AreEqual("Blah", path.Parts[0]);
+      Assert.AreEqual(0, path.Parts[1]);
+      Assert.AreEqual("Two", path.Parts[2]);
+      Assert.AreEqual("Three", path.Parts[3]);
+      Assert.AreEqual(1, path.Parts[4]);
+      Assert.AreEqual("Four", path.Parts[5]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Unexpected character while parsing path indexer: ["
+#endif
+      )]
+    public void BadCharactersInIndexer()
+    {
+      new JPath("Blah[[0]].Two.Three[1].Four");
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Path ended with open indexer. Expected ]"
+#endif
+      )]
+    public void UnclosedIndexer()
+    {
+      new JPath("Blah[0");
+    }
+
+    [Test]
+    public void AdditionalDots()
+    {
+      JPath path = new JPath(".Blah..[0]..Two.Three....[1].Four.");
+      Assert.AreEqual(6, path.Parts.Count);
+      Assert.AreEqual("Blah", path.Parts[0]);
+      Assert.AreEqual(0, path.Parts[1]);
+      Assert.AreEqual("Two", path.Parts[2]);
+      Assert.AreEqual("Three", path.Parts[3]);
+      Assert.AreEqual(1, path.Parts[4]);
+      Assert.AreEqual("Four", path.Parts[5]);
+    }
+
+    [Test]
+    public void IndexerOnly()
+    {
+      JPath path = new JPath("[111119990]");
+      Assert.AreEqual(1, path.Parts.Count);
+      Assert.AreEqual(111119990, path.Parts[0]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Empty path indexer."
+#endif
+      )]
+    public void EmptyIndexer()
+    {
+      new JPath("[]");
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected character while parsing path: ]"
+#endif
+      )]
+    public void IndexerCloseInProperty()
+    {
+      new JPath("]");
+    }
+
+    [Test]
+    public void AdjacentIndexers()
+    {
+      JPath path = new JPath("[1][0][0][" + int.MaxValue + "]");
+      Assert.AreEqual(4, path.Parts.Count);
+      Assert.AreEqual(1, path.Parts[0]);
+      Assert.AreEqual(0, path.Parts[1]);
+      Assert.AreEqual(0, path.Parts[2]);
+      Assert.AreEqual(int.MaxValue, path.Parts[3]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unexpected character following indexer: B"
+#endif
+      )]
+    public void MissingDotAfterIndexer()
+    {
+      new JPath("[1]Blah");
+    }
+
+    [Test]
+    public void EvaluateSingleProperty()
+    {
+      JObject o = new JObject(
+        new JProperty("Blah", 1));
+
+      JToken t = o.SelectToken("Blah");
+      Assert.IsNotNull(t);
+      Assert.AreEqual(JTokenType.Integer, t.Type);
+      Assert.AreEqual(1, (int)t);
+    }
+
+    [Test]
+    public void EvaluateMissingProperty()
+    {
+      JObject o = new JObject(
+        new JProperty("Blah", 1));
+
+      JToken t = o.SelectToken("Missing[1]");
+      Assert.IsNull(t);
+    }
+
+    [Test]
+    public void EvaluateIndexerOnObject()
+    {
+      JObject o = new JObject(
+        new JProperty("Blah", 1));
+
+      JToken t = o.SelectToken("[1]");
+      Assert.IsNull(t);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Index 1 not valid on JObject."
+#endif
+      )]
+    public void EvaluateIndexerOnObjectWithError()
+    {
+      JObject o = new JObject(
+        new JProperty("Blah", 1));
+
+      o.SelectToken("[1]", true);
+    }
+
+    [Test]
+    public void EvaluatePropertyOnArray()
+    {
+      JArray a = new JArray(1, 2, 3, 4, 5);
+
+      JToken t = a.SelectToken("BlahBlah");
+      Assert.IsNull(t);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Property 'BlahBlah' not valid on JArray."
+#endif
+      )]
+    public void EvaluatePropertyOnArrayWithError()
+    {
+      JArray a = new JArray(1, 2, 3, 4, 5);
+
+      a.SelectToken("BlahBlah", true);
+    }
+
+    [Test]
+    [ExpectedException(typeof(IndexOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Index 1 outside the bounds of JConstructor."
+#endif
+      )]
+    public void EvaluateConstructorOutOfBoundsIndxerWithError()
+    {
+      JConstructor c = new JConstructor("Blah");
+
+      c.SelectToken("[1]", true);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Property 'Missing' does not exist on JObject."
+#endif
+      )]
+    public void EvaluateMissingPropertyWithError()
+    {
+      JObject o = new JObject(
+        new JProperty("Blah", 1));
+
+      o.SelectToken("Missing", true);
+    }
+
+    [Test]
+    public void EvaluateOutOfBoundsIndxer()
+    {
+      JArray a = new JArray(1, 2, 3, 4, 5);
+
+      JToken t = a.SelectToken("[1000].Ha");
+      Assert.IsNull(t);
+    }
+
+    [Test]
+    [ExpectedException(typeof(IndexOutOfRangeException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Index 1000 outside the bounds of JArray."
+#endif
+      )]
+    public void EvaluateArrayOutOfBoundsIndxerWithError()
+    {
+      JArray a = new JArray(1, 2, 3, 4, 5);
+
+      a.SelectToken("[1000].Ha", true);
+    }
+
+    [Test]
+    public void EvaluateArray()
+    {
+      JArray a = new JArray(1, 2, 3, 4);
+
+      JToken t = a.SelectToken("[1]");
+      Assert.IsNotNull(t);
+      Assert.AreEqual(JTokenType.Integer, t.Type);
+      Assert.AreEqual(2, (int)t);
+    }
+
+    [Test]
+    public void EvaluateSinglePropertyReturningArray()
+    {
+      JObject o = new JObject(
+        new JProperty("Blah", new [] { 1, 2, 3 }));
+
+      JToken t = o.SelectToken("Blah");
+      Assert.IsNotNull(t);
+      Assert.AreEqual(JTokenType.Array, t.Type);
+
+      t = o.SelectToken("Blah[2]");
+      Assert.AreEqual(JTokenType.Integer, t.Type);
+      Assert.AreEqual(3, (int)t);
+    }
+
+    [Test]
+    public void EvaluateLastSingleCharacterProperty()
+    {
+      JObject o2 = JObject.Parse("{'People':[{'N':'Jeff'}]}");
+      string a2 = (string)o2.SelectToken("People[0].N");
+
+      Assert.AreEqual("Jeff", a2);
+    }
+
+    [Test]
+    public void PathWithConstructor()
+    {
+      JArray a = JArray.Parse(@"[
+  {
+    ""Property1"": [
+      1,
+      [
+        [
+          []
+        ]
+      ]
+    ]
+  },
+  {
+    ""Property2"": new Constructor1(
+      null,
+      [
+        1
+      ]
+    )
+  }
+]");
+
+      JValue v = (JValue)a.SelectToken("[1].Property2[1][0]");
+      Assert.AreEqual(1L, v.Value);
+    }
+
+
+    [Test]
+    public void Example()
+    {
+      JObject o = JObject.Parse(@"{
+        ""Stores"": [
+          ""Lambton Quay"",
+          ""Willis Street""
+        ],
+        ""Manufacturers"": [
+          {
+            ""Name"": ""Acme Co"",
+            ""Products"": [
+              {
+                ""Name"": ""Anvil"",
+                ""Price"": 50
+              }
+            ]
+          },
+          {
+            ""Name"": ""Contoso"",
+            ""Products"": [
+              {
+                ""Name"": ""Elbow Grease"",
+                ""Price"": 99.95
+              },
+              {
+                ""Name"": ""Headlight Fluid"",
+                ""Price"": 4
+              }
+            ]
+          }
+        ]
+      }");
+
+      string name = (string)o.SelectToken("Manufacturers[0].Name");
+      // Acme Co
+
+      decimal productPrice = (decimal)o.SelectToken("Manufacturers[0].Products[0].Price");
+      // 50
+
+      string productName = (string)o.SelectToken("Manufacturers[1].Products[0].Name");
+      // Elbow Grease
+
+      Assert.AreEqual("Acme Co", name);
+      Assert.AreEqual(50m, productPrice);
+      Assert.AreEqual("Elbow Grease", productName);
+
+      IList<string> storeNames = o.SelectToken("Stores").Select(s => (string)s).ToList();
+      // Lambton Quay
+      // Willis Street
+
+      IList<string> firstProductNames = o["Manufacturers"].Select(m => (string)m.SelectToken("Products[1].Name")).ToList();
+      // null
+      // Headlight Fluid
+
+      decimal totalPrice = o["Manufacturers"].Sum(m => (decimal)m.SelectToken("Products[0].Price"));
+      // 149.95
+
+      Assert.AreEqual(2, storeNames.Count);
+      Assert.AreEqual("Lambton Quay", storeNames[0]);
+      Assert.AreEqual("Willis Street", storeNames[1]);
+      Assert.AreEqual(2, firstProductNames.Count);
+      Assert.AreEqual(null, firstProductNames[0]);
+      Assert.AreEqual("Headlight Fluid", firstProductNames[1]);
+      Assert.AreEqual(149.95m, totalPrice);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JPropertyTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JPropertyTests.cs
@@ -1,160 +1,160 @@
-﻿using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using Newtonsoft.Json.Linq;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using System.IO;
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JPropertyTests : TestFixtureBase
-  {
-    [Test]
-    public void NullValue()
-    {
-      JProperty p = new JProperty("TestProperty", null);
-      Assert.IsNotNull(p.Value);
-      Assert.AreEqual(JTokenType.Null, p.Value.Type);
-      Assert.AreEqual(p, p.Value.Parent);
-
-      p.Value = null;
-      Assert.IsNotNull(p.Value);
-      Assert.AreEqual(JTokenType.Null, p.Value.Type);
-      Assert.AreEqual(p, p.Value.Parent);
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void ListChanged()
-    {
-      JProperty p = new JProperty("TestProperty", null);
-      IBindingList l = p;
-
-      ListChangedType? listChangedType = null;
-      int? index = null;
-
-      l.ListChanged += (sender, args) =>
-      {
-        listChangedType = args.ListChangedType;
-        index = args.NewIndex;
-      };
-
-      p.Value = 1;
-
-      Assert.AreEqual(ListChangedType.ItemChanged, listChangedType.Value);
-      Assert.AreEqual(0, index.Value); 
-    }
-#endif
-
-    [Test]
-    public void IListCount()
-    {
-      JProperty p = new JProperty("TestProperty", null);
-      IList l = p;
-
-      Assert.AreEqual(1, l.Count);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Cannot add or remove items from Newtonsoft.Json.Linq.JProperty."
-#endif
-      )]
-    public void IListClear()
-    {
-      JProperty p = new JProperty("TestProperty", null);
-      IList l = p;
-
-      l.Clear();
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Newtonsoft.Json.Linq.JProperty cannot have multiple values."
-#endif
-      )]
-    public void IListAdd()
-    {
-      JProperty p = new JProperty("TestProperty", null);
-      IList l = p;
-
-      l.Add(null);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Cannot add or remove items from Newtonsoft.Json.Linq.JProperty."
-#endif
-      )]
-    public void IListRemove()
-    {
-      JProperty p = new JProperty("TestProperty", null);
-      IList l = p;
-
-      l.Remove(p.Value);
-    }
-
-    [Test]
-    public void Load()
-    {
-      JsonReader reader = new JsonTextReader(new StringReader("{'propertyname':['value1']}"));
-      reader.Read();
-
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-      reader.Read();
-
-      JProperty property = JProperty.Load(reader);
-      Assert.AreEqual("propertyname", property.Name);
-      Assert.IsTrue(JToken.DeepEquals(JArray.Parse("['value1']"), property.Value));
-
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-
-      reader = new JsonTextReader(new StringReader("{'propertyname':null}"));
-      reader.Read();
-
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-      reader.Read();
-
-      property = JProperty.Load(reader);
-      Assert.AreEqual("propertyname", property.Name);
-      Assert.IsTrue(JToken.DeepEquals(new JValue(null, JTokenType.Null), property.Value));
-
-      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
-    }
-
-    [Test]
-    public void MultiContentConstructor()
-    {
-      JProperty p = new JProperty("error", new List<string> { "one", "two" });
-      JArray a = (JArray) p.Value;
-
-      Assert.AreEqual(a.Count, 2);
-      Assert.AreEqual("one", (string)a[0]);
-      Assert.AreEqual("two", (string)a[1]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Newtonsoft.Json.Linq.JProperty cannot have multiple values."
-#endif
-      )]
-    public void IListGenericAdd()
-    {
-      IList<JToken> t = new JProperty("error", new List<string> { "one", "two" });
-      t.Add(1);
-      t.Add(2);
-    }
-  }
-}
+﻿using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using Newtonsoft.Json.Linq;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using System.IO;
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JPropertyTests : TestFixtureBase
+  {
+    [Test]
+    public void NullValue()
+    {
+      JProperty p = new JProperty("TestProperty", null);
+      Assert.IsNotNull(p.Value);
+      Assert.AreEqual(JTokenType.Null, p.Value.Type);
+      Assert.AreEqual(p, p.Value.Parent);
+
+      p.Value = null;
+      Assert.IsNotNull(p.Value);
+      Assert.AreEqual(JTokenType.Null, p.Value.Type);
+      Assert.AreEqual(p, p.Value.Parent);
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void ListChanged()
+    {
+      JProperty p = new JProperty("TestProperty", null);
+      IBindingList l = p;
+
+      ListChangedType? listChangedType = null;
+      int? index = null;
+
+      l.ListChanged += (sender, args) =>
+      {
+        listChangedType = args.ListChangedType;
+        index = args.NewIndex;
+      };
+
+      p.Value = 1;
+
+      Assert.AreEqual(ListChangedType.ItemChanged, listChangedType.Value);
+      Assert.AreEqual(0, index.Value); 
+    }
+#endif
+
+    [Test]
+    public void IListCount()
+    {
+      JProperty p = new JProperty("TestProperty", null);
+      IList l = p;
+
+      Assert.AreEqual(1, l.Count);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Cannot add or remove items from Newtonsoft.Json.Linq.JProperty."
+#endif
+      )]
+    public void IListClear()
+    {
+      JProperty p = new JProperty("TestProperty", null);
+      IList l = p;
+
+      l.Clear();
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Newtonsoft.Json.Linq.JProperty cannot have multiple values."
+#endif
+      )]
+    public void IListAdd()
+    {
+      JProperty p = new JProperty("TestProperty", null);
+      IList l = p;
+
+      l.Add(null);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Cannot add or remove items from Newtonsoft.Json.Linq.JProperty."
+#endif
+      )]
+    public void IListRemove()
+    {
+      JProperty p = new JProperty("TestProperty", null);
+      IList l = p;
+
+      l.Remove(p.Value);
+    }
+
+    [Test]
+    public void Load()
+    {
+      JsonReader reader = new JsonTextReader(new StringReader("{'propertyname':['value1']}"));
+      reader.Read();
+
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+      reader.Read();
+
+      JProperty property = JProperty.Load(reader);
+      Assert.AreEqual("propertyname", property.Name);
+      Assert.IsTrue(JToken.DeepEquals(JArray.Parse("['value1']"), property.Value));
+
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+
+      reader = new JsonTextReader(new StringReader("{'propertyname':null}"));
+      reader.Read();
+
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+      reader.Read();
+
+      property = JProperty.Load(reader);
+      Assert.AreEqual("propertyname", property.Name);
+      Assert.IsTrue(JToken.DeepEquals(new JValue(null, JTokenType.Null), property.Value));
+
+      Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+    }
+
+    [Test]
+    public void MultiContentConstructor()
+    {
+      JProperty p = new JProperty("error", new List<string> { "one", "two" });
+      JArray a = (JArray) p.Value;
+
+      Assert.AreEqual(a.Count, 2);
+      Assert.AreEqual("one", (string)a[0]);
+      Assert.AreEqual("two", (string)a[1]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Newtonsoft.Json.Linq.JProperty cannot have multiple values."
+#endif
+      )]
+    public void IListGenericAdd()
+    {
+      IList<JToken> t = new JProperty("error", new List<string> { "one", "two" });
+      t.Add(1);
+      t.Add(2);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JRawTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JRawTests.cs
@@ -1,35 +1,35 @@
-﻿#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JRawTests : TestFixtureBase
-  {
-    [Test]
-    public void RawEquals()
-    {
-      JRaw r1 = new JRaw("raw1");
-      JRaw r2 = new JRaw("raw1");
-      JRaw r3 = new JRaw("raw2");
-
-      Assert.IsTrue(JToken.DeepEquals(r1, r2));
-      Assert.IsFalse(JToken.DeepEquals(r1, r3));
-    }
-
-    [Test]
-    public void RawClone()
-    {
-      JRaw r1 = new JRaw("raw1");
-      JToken r2 = r1.CloneToken();
-
-      CustomAssert.IsInstanceOfType(typeof(JRaw), r2);
-    }
-  }
+﻿#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JRawTests : TestFixtureBase
+  {
+    [Test]
+    public void RawEquals()
+    {
+      JRaw r1 = new JRaw("raw1");
+      JRaw r2 = new JRaw("raw1");
+      JRaw r3 = new JRaw("raw2");
+
+      Assert.IsTrue(JToken.DeepEquals(r1, r2));
+      Assert.IsFalse(JToken.DeepEquals(r1, r3));
+    }
+
+    [Test]
+    public void RawClone()
+    {
+      JRaw r1 = new JRaw("raw1");
+      JToken r2 = r1.CloneToken();
+
+      CustomAssert.IsInstanceOfType(typeof(JRaw), r2);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenEqualityComparerTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenEqualityComparerTests.cs
@@ -1,64 +1,64 @@
-using System.Collections.Generic;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JTokenEqualityComparerTests : TestFixtureBase
-  {
-    [Test]
-    public void JValueDictionary()
-    {
-      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
-      JValue v11 = new JValue(1);
-      JValue v12 = new JValue(1);
-
-      dic[v11] = 1;
-      dic[v12] += 1;
-      Assert.AreEqual(2, dic[v11]);
-    }
-
-    [Test]
-    public void JArrayDictionary()
-    {
-      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
-      JArray v11 = new JArray();
-      JArray v12 = new JArray();
-
-      dic[v11] = 1;
-      dic[v12] += 1;
-      Assert.AreEqual(2, dic[v11]);
-    }
-
-    [Test]
-    public void JObjectDictionary()
-    {
-      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
-      JObject v11 = new JObject() { { "Test", new JValue(1) }, { "Test1", new JValue(1) } };
-      JObject v12 = new JObject() { { "Test", new JValue(1) }, { "Test1", new JValue(1) } };
-
-      dic[v11] = 1;
-      dic[v12] += 1;
-      Assert.AreEqual(2, dic[v11]);
-    }
-
-    [Test]
-    public void JConstructorDictionary()
-    {
-      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
-      JConstructor v11 = new JConstructor("ConstructorValue");
-      JConstructor v12 = new JConstructor("ConstructorValue");
-
-      dic[v11] = 1;
-      dic[v12] += 1;
-      Assert.AreEqual(2, dic[v11]);
-    }
-  }
+using System.Collections.Generic;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JTokenEqualityComparerTests : TestFixtureBase
+  {
+    [Test]
+    public void JValueDictionary()
+    {
+      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
+      JValue v11 = new JValue(1);
+      JValue v12 = new JValue(1);
+
+      dic[v11] = 1;
+      dic[v12] += 1;
+      Assert.AreEqual(2, dic[v11]);
+    }
+
+    [Test]
+    public void JArrayDictionary()
+    {
+      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
+      JArray v11 = new JArray();
+      JArray v12 = new JArray();
+
+      dic[v11] = 1;
+      dic[v12] += 1;
+      Assert.AreEqual(2, dic[v11]);
+    }
+
+    [Test]
+    public void JObjectDictionary()
+    {
+      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
+      JObject v11 = new JObject() { { "Test", new JValue(1) }, { "Test1", new JValue(1) } };
+      JObject v12 = new JObject() { { "Test", new JValue(1) }, { "Test1", new JValue(1) } };
+
+      dic[v11] = 1;
+      dic[v12] += 1;
+      Assert.AreEqual(2, dic[v11]);
+    }
+
+    [Test]
+    public void JConstructorDictionary()
+    {
+      Dictionary<JToken, int> dic = new Dictionary<JToken, int>(JToken.EqualityComparer);
+      JConstructor v11 = new JConstructor("ConstructorValue");
+      JConstructor v12 = new JConstructor("ConstructorValue");
+
+      dic[v11] = 1;
+      dic[v12] += 1;
+      Assert.AreEqual(2, dic[v11]);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs
@@ -1,619 +1,619 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json;
-using System.IO;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Tests.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JTokenReaderTest : TestFixtureBase
-  {
-#if !PocketPC && !NET20
-    [Test]
-    public void YahooFinance()
-    {
-      JObject o =
-        new JObject(
-          new JProperty("Test1", new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc)),
-          new JProperty("Test2", new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0))),
-          new JProperty("Test3", "Test3Value"),
-          new JProperty("Test4", null)
-        );
-
-      using (JTokenReader jsonReader = new JTokenReader(o))
-      {
-        IJsonLineInfo lineInfo = jsonReader;
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
-        Assert.AreEqual(false, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-        Assert.AreEqual("Test1", jsonReader.Value);
-        Assert.AreEqual(false, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Date, jsonReader.TokenType);
-        Assert.AreEqual(new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc), jsonReader.Value);
-        Assert.AreEqual(false, lineInfo.HasLineInfo());
-        Assert.AreEqual(0, lineInfo.LinePosition);
-        Assert.AreEqual(0, lineInfo.LineNumber);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-        Assert.AreEqual("Test2", jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Date, jsonReader.TokenType);
-        Assert.AreEqual(new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0)), jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-        Assert.AreEqual("Test3", jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.String, jsonReader.TokenType);
-        Assert.AreEqual("Test3Value", jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-        Assert.AreEqual("Test4", jsonReader.Value);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.Null, jsonReader.TokenType);
-        Assert.AreEqual(null, jsonReader.Value);
-
-        Assert.IsTrue(jsonReader.Read());
-        Assert.AreEqual(JsonToken.EndObject, jsonReader.TokenType);
-
-        Assert.IsFalse(jsonReader.Read());
-        Assert.AreEqual(JsonToken.None, jsonReader.TokenType);
-      }
-
-      using (JsonReader jsonReader = new JTokenReader(o.Property("Test2")))
-      {
-        Assert.IsTrue(jsonReader.Read());
-        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-        Assert.AreEqual("Test2", jsonReader.Value);
-
-        Assert.IsTrue(jsonReader.Read());
-        Assert.AreEqual(JsonToken.Date, jsonReader.TokenType);
-        Assert.AreEqual(new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0)), jsonReader.Value);
-
-        Assert.IsFalse(jsonReader.Read());
-        Assert.AreEqual(JsonToken.None, jsonReader.TokenType);
-      }
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Could not convert string to DateTimeOffset: blablahbla. Line 1, position 22."
-#endif
-      )]
-    public void ReadAsDateTimeOffsetBadString()
-    {
-      string json = @"{""Offset"":""blablahbla""}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading date. Unexpected token: Boolean. Line 1, position 14."
-#endif
-      )]
-    public void ReadAsDateTimeOffsetBoolean()
-    {
-      string json = @"{""Offset"":true}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-    }
-
-    [Test]
-    public void ReadAsDateTimeOffsetString()
-    {
-      string json = @"{""Offset"":""2012-01-24T03:50Z""}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDateTimeOffset();
-      Assert.AreEqual(JsonToken.Date, reader.TokenType);
-      Assert.AreEqual(typeof (DateTimeOffset), reader.ValueType);
-      Assert.AreEqual(new DateTimeOffset(2012, 1, 24, 3, 50, 0, TimeSpan.Zero), reader.Value);
-    }
-#endif
-
-    [Test]
-    public void ReadLineInfo()
-    {
-      string input = @"{
-  CPU: 'Intel',
-  Drives: [
-    'DVD read/writer',
-    ""500 gigabyte hard drive""
-  ]
-}";
-
-      StringReader sr = new StringReader(input);
-
-      JObject o = JObject.Parse(input);
-
-      using (JTokenReader jsonReader = new JTokenReader(o))
-      {
-        IJsonLineInfo lineInfo = jsonReader;
-
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.None);
-        Assert.AreEqual(0, lineInfo.LineNumber);
-        Assert.AreEqual(0, lineInfo.LinePosition);
-        Assert.AreEqual(false, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartObject);
-        Assert.AreEqual(1, lineInfo.LineNumber);
-        Assert.AreEqual(1, lineInfo.LinePosition);
-        Assert.AreEqual(true, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(jsonReader.Value, "CPU");
-        Assert.AreEqual(2, lineInfo.LineNumber);
-        Assert.AreEqual(7, lineInfo.LinePosition);
-        Assert.AreEqual(true, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
-        Assert.AreEqual(jsonReader.Value, "Intel");
-        Assert.AreEqual(2, lineInfo.LineNumber);
-        Assert.AreEqual(15, lineInfo.LinePosition);
-        Assert.AreEqual(true, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
-        Assert.AreEqual(jsonReader.Value, "Drives");
-        Assert.AreEqual(3, lineInfo.LineNumber);
-        Assert.AreEqual(10, lineInfo.LinePosition);
-        Assert.AreEqual(true, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
-        Assert.AreEqual(3, lineInfo.LineNumber);
-        Assert.AreEqual(12, lineInfo.LinePosition);
-        Assert.AreEqual(true, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
-        Assert.AreEqual(jsonReader.Value, "DVD read/writer");
-        Assert.AreEqual(4, lineInfo.LineNumber);
-        Assert.AreEqual(22, lineInfo.LinePosition);
-        Assert.AreEqual(true, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
-        Assert.AreEqual(jsonReader.Value, "500 gigabyte hard drive");
-        Assert.AreEqual(5, lineInfo.LineNumber);
-        Assert.AreEqual(30, lineInfo.LinePosition);
-        Assert.AreEqual(true, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
-        Assert.AreEqual(0, lineInfo.LineNumber);
-        Assert.AreEqual(0, lineInfo.LinePosition);
-        Assert.AreEqual(false, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndObject);
-        Assert.AreEqual(0, lineInfo.LineNumber);
-        Assert.AreEqual(0, lineInfo.LinePosition);
-        Assert.AreEqual(false, lineInfo.HasLineInfo());
-
-        jsonReader.Read();
-        Assert.AreEqual(jsonReader.TokenType, JsonToken.None);
-      }
-    }
-
-    [Test]
-    public void ReadBytes()
-    {
-      byte[] data = Encoding.UTF8.GetBytes("Hello world!");
-
-      JObject o =
-        new JObject(
-          new JProperty("Test1", data)
-        );
-
-      using (JTokenReader jsonReader = new JTokenReader(o))
-      {
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
-
-        jsonReader.Read();
-        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-        Assert.AreEqual("Test1", jsonReader.Value);
-
-        byte[] readBytes = jsonReader.ReadAsBytes();
-        Assert.AreEqual(data, readBytes);
-
-        Assert.IsTrue(jsonReader.Read());
-        Assert.AreEqual(JsonToken.EndObject, jsonReader.TokenType);
-
-        Assert.IsFalse(jsonReader.Read());
-        Assert.AreEqual(JsonToken.None, jsonReader.TokenType);
-      }
-    }
-
-    [Test]
-    public void ReadBytesFailure()
-    {
-      ExceptionAssert.Throws<JsonReaderException>("Error reading bytes. Unexpected token: Integer.",
-      () =>
-      {
-        JObject o =
-          new JObject(
-            new JProperty("Test1", 1)
-          );
-
-        using (JTokenReader jsonReader = new JTokenReader(o))
-        {
-          jsonReader.Read();
-          Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
-
-          jsonReader.Read();
-          Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
-          Assert.AreEqual("Test1", jsonReader.Value);
-
-          jsonReader.ReadAsBytes();
-        }
-      });
-    }
-
-    public class HasBytes
-    {
-      public byte[] Bytes { get; set; }
-    }
-
-    [Test]
-    public void ReadBytesFromString()
-    {
-      var bytes = new HasBytes { Bytes = new byte[] { 1, 2, 3, 4 } };
-      var json = JsonConvert.SerializeObject(bytes);
-
-      TextReader textReader = new StringReader(json);
-      JsonReader jsonReader = new JsonTextReader(textReader);
-
-      var jToken = JToken.ReadFrom(jsonReader);
-
-      jsonReader = new JTokenReader(jToken);
-
-      var result2 = (HasBytes)JsonSerializer.Create(null)
-                 .Deserialize(jsonReader, typeof(HasBytes));
-
-      CollectionAssert.AreEqual(new byte[] { 1, 2, 3, 4 }, result2.Bytes);
-    }
-
-    [Test]
-    public void ReadBytesFromEmptyString()
-    {
-      var bytes = new HasBytes { Bytes = new byte[0] };
-      var json = JsonConvert.SerializeObject(bytes);
-
-      TextReader textReader = new StringReader(json);
-      JsonReader jsonReader = new JsonTextReader(textReader);
-
-      var jToken = JToken.ReadFrom(jsonReader);
-
-      jsonReader = new JTokenReader(jToken);
-
-      var result2 = (HasBytes)JsonSerializer.Create(null)
-                 .Deserialize(jsonReader, typeof(HasBytes));
-
-      CollectionAssert.AreEquivalent(new byte[0], result2.Bytes);
-    }
-
-    public class ReadAsBytesTestObject
-    {
-      public byte[] Data;
-    }
-
-    [Test]
-    public void ReadAsBytesNull()
-    {
-      JsonSerializer s = new JsonSerializer();
-
-      JToken nullToken = JToken.ReadFrom(new JsonTextReader(new StringReader("{ Data: null }")));
-      ReadAsBytesTestObject x = s.Deserialize<ReadAsBytesTestObject>(new JTokenReader(nullToken));
-      Assert.IsNull(x.Data);
-    }
-
-    [Test]
-    public void DeserializeByteArrayWithTypeNameHandling()
-    {
-      TestObject test = new TestObject("Test", new byte[] { 72, 63, 62, 71, 92, 55 });
-
-      string json = JsonConvert.SerializeObject(test, Formatting.Indented, new JsonSerializerSettings
-        {
-          TypeNameHandling = TypeNameHandling.All
-        });
-
-      JObject o = JObject.Parse(json);
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.TypeNameHandling = TypeNameHandling.All;
-
-      using (JsonReader nodeReader = o.CreateReader())
-      {
-        // Get exception here
-        TestObject newObject = (TestObject)serializer.Deserialize(nodeReader);
-
-        Assert.AreEqual("Test", newObject.Name);
-        CollectionAssert.AreEquivalent(new byte[] { 72, 63, 62, 71, 92, 55 }, newObject.Data);
-      }
-    }
-
-    [Test]
-    public void DeserializeStringInt()
-    {
-      string json = @"{
-  ""PreProperty"": ""99"",
-  ""PostProperty"": ""-1""
-}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonSerializer serializer = new JsonSerializer();
-
-      using (JsonReader nodeReader = o.CreateReader())
-      {
-        MyClass c = serializer.Deserialize<MyClass>(nodeReader);
-
-        Assert.AreEqual(99, c.PreProperty);
-        Assert.AreEqual(-1, c.PostProperty);
-      }
-    }
-
-    [Test]
-    public void ReadAsDecimalInt()
-    {
-      string json = @"{""Name"":1}";
-
-      JObject o = JObject.Parse(json);
-      
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(typeof(decimal), reader.ValueType);
-      Assert.AreEqual(1m, reader.Value);
-    }
-
-    [Test]
-    public void ReadAsInt32Int()
-    {
-      string json = @"{""Name"":1}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(typeof(int), reader.ValueType);
-      Assert.AreEqual(1, reader.Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Could not convert string to integer: hi. Line 1, position 12."
-#endif
-      )]
-    public void ReadAsInt32BadString()
-    {
-      string json = @"{""Name"":""hi""}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsInt32();
-      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
-      Assert.AreEqual(typeof(int), reader.ValueType);
-      Assert.AreEqual(1, reader.Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading integer. Unexpected token: Boolean. Line 1, position 12."
-#endif
-      )]
-    public void ReadAsInt32Boolean()
-    {
-      string json = @"{""Name"":true}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsInt32();
-    }
-
-    [Test]
-    public void ReadAsDecimalString()
-    {
-      string json = @"{""Name"":""1.1""}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Float, reader.TokenType);
-      Assert.AreEqual(typeof(decimal), reader.ValueType);
-      Assert.AreEqual(1.1m, reader.Value);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Could not convert string to decimal: blah. Line 1, position 14."
-#endif
-      )]
-    public void ReadAsDecimalBadString()
-    {
-      string json = @"{""Name"":""blah""}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDecimal();
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error reading decimal. Unexpected token: Boolean. Line 1, position 12."
-#endif
-      )]
-    public void ReadAsDecimalBoolean()
-    {
-      string json = @"{""Name"":true}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDecimal();
-    }
-
-    [Test]
-    public void ReadAsDecimalNull()
-    {
-      string json = @"{""Name"":null}";
-
-      JObject o = JObject.Parse(json);
-
-      JsonReader reader = o.CreateReader();
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
-
-      Assert.IsTrue(reader.Read());
-      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
-
-      reader.ReadAsDecimal();
-      Assert.AreEqual(JsonToken.Null, reader.TokenType);
-      Assert.AreEqual(null, reader.ValueType);
-      Assert.AreEqual(null, reader.Value);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json;
+using System.IO;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Tests.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JTokenReaderTest : TestFixtureBase
+  {
+#if !PocketPC && !NET20
+    [Test]
+    public void YahooFinance()
+    {
+      JObject o =
+        new JObject(
+          new JProperty("Test1", new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc)),
+          new JProperty("Test2", new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0))),
+          new JProperty("Test3", "Test3Value"),
+          new JProperty("Test4", null)
+        );
+
+      using (JTokenReader jsonReader = new JTokenReader(o))
+      {
+        IJsonLineInfo lineInfo = jsonReader;
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
+        Assert.AreEqual(false, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+        Assert.AreEqual("Test1", jsonReader.Value);
+        Assert.AreEqual(false, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Date, jsonReader.TokenType);
+        Assert.AreEqual(new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc), jsonReader.Value);
+        Assert.AreEqual(false, lineInfo.HasLineInfo());
+        Assert.AreEqual(0, lineInfo.LinePosition);
+        Assert.AreEqual(0, lineInfo.LineNumber);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+        Assert.AreEqual("Test2", jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Date, jsonReader.TokenType);
+        Assert.AreEqual(new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0)), jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+        Assert.AreEqual("Test3", jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.String, jsonReader.TokenType);
+        Assert.AreEqual("Test3Value", jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+        Assert.AreEqual("Test4", jsonReader.Value);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.Null, jsonReader.TokenType);
+        Assert.AreEqual(null, jsonReader.Value);
+
+        Assert.IsTrue(jsonReader.Read());
+        Assert.AreEqual(JsonToken.EndObject, jsonReader.TokenType);
+
+        Assert.IsFalse(jsonReader.Read());
+        Assert.AreEqual(JsonToken.None, jsonReader.TokenType);
+      }
+
+      using (JsonReader jsonReader = new JTokenReader(o.Property("Test2")))
+      {
+        Assert.IsTrue(jsonReader.Read());
+        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+        Assert.AreEqual("Test2", jsonReader.Value);
+
+        Assert.IsTrue(jsonReader.Read());
+        Assert.AreEqual(JsonToken.Date, jsonReader.TokenType);
+        Assert.AreEqual(new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0)), jsonReader.Value);
+
+        Assert.IsFalse(jsonReader.Read());
+        Assert.AreEqual(JsonToken.None, jsonReader.TokenType);
+      }
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Could not convert string to DateTimeOffset: blablahbla. Line 1, position 22."
+#endif
+      )]
+    public void ReadAsDateTimeOffsetBadString()
+    {
+      string json = @"{""Offset"":""blablahbla""}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading date. Unexpected token: Boolean. Line 1, position 14."
+#endif
+      )]
+    public void ReadAsDateTimeOffsetBoolean()
+    {
+      string json = @"{""Offset"":true}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+    }
+
+    [Test]
+    public void ReadAsDateTimeOffsetString()
+    {
+      string json = @"{""Offset"":""2012-01-24T03:50Z""}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDateTimeOffset();
+      Assert.AreEqual(JsonToken.Date, reader.TokenType);
+      Assert.AreEqual(typeof (DateTimeOffset), reader.ValueType);
+      Assert.AreEqual(new DateTimeOffset(2012, 1, 24, 3, 50, 0, TimeSpan.Zero), reader.Value);
+    }
+#endif
+
+    [Test]
+    public void ReadLineInfo()
+    {
+      string input = @"{
+  CPU: 'Intel',
+  Drives: [
+    'DVD read/writer',
+    ""500 gigabyte hard drive""
+  ]
+}";
+
+      StringReader sr = new StringReader(input);
+
+      JObject o = JObject.Parse(input);
+
+      using (JTokenReader jsonReader = new JTokenReader(o))
+      {
+        IJsonLineInfo lineInfo = jsonReader;
+
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.None);
+        Assert.AreEqual(0, lineInfo.LineNumber);
+        Assert.AreEqual(0, lineInfo.LinePosition);
+        Assert.AreEqual(false, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartObject);
+        Assert.AreEqual(1, lineInfo.LineNumber);
+        Assert.AreEqual(1, lineInfo.LinePosition);
+        Assert.AreEqual(true, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(jsonReader.Value, "CPU");
+        Assert.AreEqual(2, lineInfo.LineNumber);
+        Assert.AreEqual(7, lineInfo.LinePosition);
+        Assert.AreEqual(true, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
+        Assert.AreEqual(jsonReader.Value, "Intel");
+        Assert.AreEqual(2, lineInfo.LineNumber);
+        Assert.AreEqual(15, lineInfo.LinePosition);
+        Assert.AreEqual(true, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.PropertyName);
+        Assert.AreEqual(jsonReader.Value, "Drives");
+        Assert.AreEqual(3, lineInfo.LineNumber);
+        Assert.AreEqual(10, lineInfo.LinePosition);
+        Assert.AreEqual(true, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.StartArray);
+        Assert.AreEqual(3, lineInfo.LineNumber);
+        Assert.AreEqual(12, lineInfo.LinePosition);
+        Assert.AreEqual(true, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
+        Assert.AreEqual(jsonReader.Value, "DVD read/writer");
+        Assert.AreEqual(4, lineInfo.LineNumber);
+        Assert.AreEqual(22, lineInfo.LinePosition);
+        Assert.AreEqual(true, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.String);
+        Assert.AreEqual(jsonReader.Value, "500 gigabyte hard drive");
+        Assert.AreEqual(5, lineInfo.LineNumber);
+        Assert.AreEqual(30, lineInfo.LinePosition);
+        Assert.AreEqual(true, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndArray);
+        Assert.AreEqual(0, lineInfo.LineNumber);
+        Assert.AreEqual(0, lineInfo.LinePosition);
+        Assert.AreEqual(false, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.EndObject);
+        Assert.AreEqual(0, lineInfo.LineNumber);
+        Assert.AreEqual(0, lineInfo.LinePosition);
+        Assert.AreEqual(false, lineInfo.HasLineInfo());
+
+        jsonReader.Read();
+        Assert.AreEqual(jsonReader.TokenType, JsonToken.None);
+      }
+    }
+
+    [Test]
+    public void ReadBytes()
+    {
+      byte[] data = Encoding.UTF8.GetBytes("Hello world!");
+
+      JObject o =
+        new JObject(
+          new JProperty("Test1", data)
+        );
+
+      using (JTokenReader jsonReader = new JTokenReader(o))
+      {
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
+
+        jsonReader.Read();
+        Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+        Assert.AreEqual("Test1", jsonReader.Value);
+
+        byte[] readBytes = jsonReader.ReadAsBytes();
+        Assert.AreEqual(data, readBytes);
+
+        Assert.IsTrue(jsonReader.Read());
+        Assert.AreEqual(JsonToken.EndObject, jsonReader.TokenType);
+
+        Assert.IsFalse(jsonReader.Read());
+        Assert.AreEqual(JsonToken.None, jsonReader.TokenType);
+      }
+    }
+
+    [Test]
+    public void ReadBytesFailure()
+    {
+      ExceptionAssert.Throws<JsonReaderException>("Error reading bytes. Unexpected token: Integer.",
+      () =>
+      {
+        JObject o =
+          new JObject(
+            new JProperty("Test1", 1)
+          );
+
+        using (JTokenReader jsonReader = new JTokenReader(o))
+        {
+          jsonReader.Read();
+          Assert.AreEqual(JsonToken.StartObject, jsonReader.TokenType);
+
+          jsonReader.Read();
+          Assert.AreEqual(JsonToken.PropertyName, jsonReader.TokenType);
+          Assert.AreEqual("Test1", jsonReader.Value);
+
+          jsonReader.ReadAsBytes();
+        }
+      });
+    }
+
+    public class HasBytes
+    {
+      public byte[] Bytes { get; set; }
+    }
+
+    [Test]
+    public void ReadBytesFromString()
+    {
+      var bytes = new HasBytes { Bytes = new byte[] { 1, 2, 3, 4 } };
+      var json = JsonConvert.SerializeObject(bytes);
+
+      TextReader textReader = new StringReader(json);
+      JsonReader jsonReader = new JsonTextReader(textReader);
+
+      var jToken = JToken.ReadFrom(jsonReader);
+
+      jsonReader = new JTokenReader(jToken);
+
+      var result2 = (HasBytes)JsonSerializer.Create(null)
+                 .Deserialize(jsonReader, typeof(HasBytes));
+
+      CollectionAssert.AreEqual(new byte[] { 1, 2, 3, 4 }, result2.Bytes);
+    }
+
+    [Test]
+    public void ReadBytesFromEmptyString()
+    {
+      var bytes = new HasBytes { Bytes = new byte[0] };
+      var json = JsonConvert.SerializeObject(bytes);
+
+      TextReader textReader = new StringReader(json);
+      JsonReader jsonReader = new JsonTextReader(textReader);
+
+      var jToken = JToken.ReadFrom(jsonReader);
+
+      jsonReader = new JTokenReader(jToken);
+
+      var result2 = (HasBytes)JsonSerializer.Create(null)
+                 .Deserialize(jsonReader, typeof(HasBytes));
+
+      CollectionAssert.AreEquivalent(new byte[0], result2.Bytes);
+    }
+
+    public class ReadAsBytesTestObject
+    {
+      public byte[] Data;
+    }
+
+    [Test]
+    public void ReadAsBytesNull()
+    {
+      JsonSerializer s = new JsonSerializer();
+
+      JToken nullToken = JToken.ReadFrom(new JsonTextReader(new StringReader("{ Data: null }")));
+      ReadAsBytesTestObject x = s.Deserialize<ReadAsBytesTestObject>(new JTokenReader(nullToken));
+      Assert.IsNull(x.Data);
+    }
+
+    [Test]
+    public void DeserializeByteArrayWithTypeNameHandling()
+    {
+      TestObject test = new TestObject("Test", new byte[] { 72, 63, 62, 71, 92, 55 });
+
+      string json = JsonConvert.SerializeObject(test, Formatting.Indented, new JsonSerializerSettings
+        {
+          TypeNameHandling = TypeNameHandling.All
+        });
+
+      JObject o = JObject.Parse(json);
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.TypeNameHandling = TypeNameHandling.All;
+
+      using (JsonReader nodeReader = o.CreateReader())
+      {
+        // Get exception here
+        TestObject newObject = (TestObject)serializer.Deserialize(nodeReader);
+
+        Assert.AreEqual("Test", newObject.Name);
+        CollectionAssert.AreEquivalent(new byte[] { 72, 63, 62, 71, 92, 55 }, newObject.Data);
+      }
+    }
+
+    [Test]
+    public void DeserializeStringInt()
+    {
+      string json = @"{
+  ""PreProperty"": ""99"",
+  ""PostProperty"": ""-1""
+}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonSerializer serializer = new JsonSerializer();
+
+      using (JsonReader nodeReader = o.CreateReader())
+      {
+        MyClass c = serializer.Deserialize<MyClass>(nodeReader);
+
+        Assert.AreEqual(99, c.PreProperty);
+        Assert.AreEqual(-1, c.PostProperty);
+      }
+    }
+
+    [Test]
+    public void ReadAsDecimalInt()
+    {
+      string json = @"{""Name"":1}";
+
+      JObject o = JObject.Parse(json);
+      
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(typeof(decimal), reader.ValueType);
+      Assert.AreEqual(1m, reader.Value);
+    }
+
+    [Test]
+    public void ReadAsInt32Int()
+    {
+      string json = @"{""Name"":1}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(typeof(int), reader.ValueType);
+      Assert.AreEqual(1, reader.Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Could not convert string to integer: hi. Line 1, position 12."
+#endif
+      )]
+    public void ReadAsInt32BadString()
+    {
+      string json = @"{""Name"":""hi""}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsInt32();
+      Assert.AreEqual(JsonToken.Integer, reader.TokenType);
+      Assert.AreEqual(typeof(int), reader.ValueType);
+      Assert.AreEqual(1, reader.Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading integer. Unexpected token: Boolean. Line 1, position 12."
+#endif
+      )]
+    public void ReadAsInt32Boolean()
+    {
+      string json = @"{""Name"":true}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsInt32();
+    }
+
+    [Test]
+    public void ReadAsDecimalString()
+    {
+      string json = @"{""Name"":""1.1""}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Float, reader.TokenType);
+      Assert.AreEqual(typeof(decimal), reader.ValueType);
+      Assert.AreEqual(1.1m, reader.Value);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Could not convert string to decimal: blah. Line 1, position 14."
+#endif
+      )]
+    public void ReadAsDecimalBadString()
+    {
+      string json = @"{""Name"":""blah""}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDecimal();
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error reading decimal. Unexpected token: Boolean. Line 1, position 12."
+#endif
+      )]
+    public void ReadAsDecimalBoolean()
+    {
+      string json = @"{""Name"":true}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDecimal();
+    }
+
+    [Test]
+    public void ReadAsDecimalNull()
+    {
+      string json = @"{""Name"":null}";
+
+      JObject o = JObject.Parse(json);
+
+      JsonReader reader = o.CreateReader();
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+      Assert.IsTrue(reader.Read());
+      Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+
+      reader.ReadAsDecimal();
+      Assert.AreEqual(JsonToken.Null, reader.TokenType);
+      Assert.AreEqual(null, reader.ValueType);
+      Assert.AreEqual(null, reader.Value);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenTests.cs
@@ -1,777 +1,777 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-using System.IO;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JTokenTests : TestFixtureBase
-  {
-    [Test]
-    public void ReadFrom()
-    {
-      JObject o = (JObject)JToken.ReadFrom(new JsonTextReader(new StringReader("{'pie':true}")));
-      Assert.AreEqual(true, (bool)o["pie"]);
-
-      JArray a = (JArray)JToken.ReadFrom(new JsonTextReader(new StringReader("[1,2,3]")));
-      Assert.AreEqual(1, (int)a[0]);
-      Assert.AreEqual(2, (int)a[1]);
-      Assert.AreEqual(3, (int)a[2]);
-
-      JsonReader reader = new JsonTextReader(new StringReader("{'pie':true}"));
-      reader.Read();
-      reader.Read();
-
-      JProperty p = (JProperty)JToken.ReadFrom(reader);
-      Assert.AreEqual("pie", p.Name);
-      Assert.AreEqual(true, (bool)p.Value);
-
-      JConstructor c = (JConstructor)JToken.ReadFrom(new JsonTextReader(new StringReader("new Date(1)")));
-      Assert.AreEqual("Date", c.Name);
-      Assert.IsTrue(JToken.DeepEquals(new JValue(1), c.Values().ElementAt(0)));
-
-      JValue v;
-
-      v = (JValue)JToken.ReadFrom(new JsonTextReader(new StringReader(@"""stringvalue""")));
-      Assert.AreEqual("stringvalue", (string)v);
-
-      v = (JValue)JToken.ReadFrom(new JsonTextReader(new StringReader(@"1")));
-      Assert.AreEqual(1, (int)v);
-
-      v = (JValue)JToken.ReadFrom(new JsonTextReader(new StringReader(@"1.1")));
-      Assert.AreEqual(1.1, (double)v);
-    }
-
-    [Test]
-    public void Load()
-    {
-      JObject o = (JObject)JToken.Load(new JsonTextReader(new StringReader("{'pie':true}")));
-      Assert.AreEqual(true, (bool)o["pie"]);
-    }
-
-    [Test]
-    public void Parse()
-    {
-      JObject o = (JObject)JToken.Parse("{'pie':true}");
-      Assert.AreEqual(true, (bool)o["pie"]);
-    }
-
-    [Test]
-    public void Parent()
-    {
-      JArray v = new JArray(new JConstructor("TestConstructor"), new JValue(new DateTime(2000, 12, 20)));
-
-      Assert.AreEqual(null, v.Parent);
-
-      JObject o =
-        new JObject(
-          new JProperty("Test1", v),
-          new JProperty("Test2", "Test2Value"),
-          new JProperty("Test3", "Test3Value"),
-          new JProperty("Test4", null)
-        );
-
-      Assert.AreEqual(o.Property("Test1"), v.Parent);
-
-      JProperty p = new JProperty("NewProperty", v);
-
-      // existing value should still have same parent
-      Assert.AreEqual(o.Property("Test1"), v.Parent);
-
-      // new value should be cloned
-      Assert.AreNotSame(p.Value, v);
-
-      Assert.AreEqual((DateTime)((JValue)p.Value[1]).Value, (DateTime)((JValue)v[1]).Value);
-
-      Assert.AreEqual(v, o["Test1"]);
-
-      Assert.AreEqual(null, o.Parent);
-      JProperty o1 = new JProperty("O1", o);
-      Assert.AreEqual(o, o1.Value);
-
-      Assert.AreNotEqual(null, o.Parent);
-      JProperty o2 = new JProperty("O2", o);
-
-      Assert.AreNotSame(o1.Value, o2.Value);
-      Assert.AreEqual(o1.Value.Children().Count(), o2.Value.Children().Count());
-      Assert.AreEqual(false, JToken.DeepEquals(o1, o2));
-      Assert.AreEqual(true, JToken.DeepEquals(o1.Value, o2.Value));
-    }
-
-    [Test]
-    public void Next()
-    {
-      JArray a =
-        new JArray(
-          5,
-          6,
-          new JArray(7, 8),
-          new JArray(9, 10)
-        );
-
-      JToken next = a[0].Next;
-      Assert.AreEqual(6, (int)next);
-
-      next = next.Next;
-      Assert.IsTrue(JToken.DeepEquals(new JArray(7, 8), next));
- 
-      next = next.Next;
-      Assert.IsTrue(JToken.DeepEquals(new JArray(9, 10), next));
-
-      next = next.Next;
-      Assert.IsNull(next);
-    }
-
-    [Test]
-    public void Previous()
-    {
-      JArray a =
-        new JArray(
-          5,
-          6,
-          new JArray(7, 8),
-          new JArray(9, 10)
-        );
-
-      JToken previous = a[3].Previous;
-      Assert.IsTrue(JToken.DeepEquals(new JArray(7, 8), previous));
-
-      previous = previous.Previous;
-      Assert.AreEqual(6, (int)previous);
-
-      previous = previous.Previous;
-      Assert.AreEqual(5, (int)previous);
-
-      previous = previous.Previous;
-      Assert.IsNull(previous);
-    }
-
-    [Test]
-    public void Children()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      Assert.AreEqual(4, a.Count());
-      Assert.AreEqual(3, a.Children<JArray>().Count());
-    }
-
-    [Test]
-    public void BeforeAfter()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1, 2, 3),
-          new JArray(1, 2, 3),
-          new JArray(1, 2, 3)
-        );
-
-      Assert.AreEqual(5, (int)a[1].Previous);
-      Assert.AreEqual(2, a[2].BeforeSelf().Count());
-      //Assert.AreEqual(2, a[2].AfterSelf().Count());
-    }
-
-    [Test]
-    public void Casting()
-    {
-      Assert.AreEqual(1L, (long)(new JValue(1)));
-      Assert.AreEqual(2L, (long) new JArray(1, 2, 3)[1]);
-
-      Assert.AreEqual(new DateTime(2000, 12, 20), (DateTime)new JValue(new DateTime(2000, 12, 20)));
-#if !PocketPC && !NET20
-      Assert.AreEqual(new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero), (DateTimeOffset)new JValue(new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero)));
-      Assert.AreEqual(null, (DateTimeOffset?)new JValue((DateTimeOffset?)null));
-      Assert.AreEqual(null, (DateTimeOffset?)(JValue)null);
-#endif
-      Assert.AreEqual(true, (bool)new JValue(true));
-      Assert.AreEqual(true, (bool?)new JValue(true));
-      Assert.AreEqual(null, (bool?)((JValue)null));
-      Assert.AreEqual(null, (bool?)new JValue((object)null));
-      Assert.AreEqual(10, (long)new JValue(10));
-      Assert.AreEqual(null, (long?)new JValue((long?)null));
-      Assert.AreEqual(null, (long?)(JValue)null);
-      Assert.AreEqual(null, (int?)new JValue((int?)null));
-      Assert.AreEqual(null, (int?)(JValue)null);
-      Assert.AreEqual(null, (DateTime?)new JValue((DateTime?)null));
-      Assert.AreEqual(null, (DateTime?)(JValue)null);
-      Assert.AreEqual(null, (short?)new JValue((short?)null));
-      Assert.AreEqual(null, (short?)(JValue)null);
-      Assert.AreEqual(null, (float?)new JValue((float?)null));
-      Assert.AreEqual(null, (float?)(JValue)null);
-      Assert.AreEqual(null, (double?)new JValue((double?)null));
-      Assert.AreEqual(null, (double?)(JValue)null);
-      Assert.AreEqual(null, (decimal?)new JValue((decimal?)null));
-      Assert.AreEqual(null, (decimal?)(JValue)null);
-      Assert.AreEqual(null, (uint?)new JValue((uint?)null));
-      Assert.AreEqual(null, (uint?)(JValue)null);
-      Assert.AreEqual(null, (sbyte?)new JValue((sbyte?)null));
-      Assert.AreEqual(null, (sbyte?)(JValue)null);
-      Assert.AreEqual(null, (ulong?)new JValue((ulong?)null));
-      Assert.AreEqual(null, (ulong?)(JValue)null);
-      Assert.AreEqual(null, (uint?)new JValue((uint?)null));
-      Assert.AreEqual(null, (uint?)(JValue)null);
-      Assert.AreEqual(11.1f, (float)new JValue(11.1));
-      Assert.AreEqual(float.MinValue, (float)new JValue(float.MinValue));
-      Assert.AreEqual(1.1, (double)new JValue(1.1));
-      Assert.AreEqual(uint.MaxValue, (uint)new JValue(uint.MaxValue));
-      Assert.AreEqual(ulong.MaxValue, (ulong)new JValue(ulong.MaxValue));
-      Assert.AreEqual(ulong.MaxValue, (ulong)new JProperty("Test", new JValue(ulong.MaxValue)));
-      Assert.AreEqual(null, (string)new JValue((string)null));
-      Assert.AreEqual(5m, (decimal)(new JValue(5L)));
-      Assert.AreEqual(5m, (decimal?)(new JValue(5L)));
-      Assert.AreEqual(5f, (float)(new JValue(5L)));
-      Assert.AreEqual(5f, (float)(new JValue(5m)));
-      Assert.AreEqual(5f, (float?)(new JValue(5m)));
-
-      byte[] data = new byte[0];
-      Assert.AreEqual(data, (byte[])(new JValue(data)));
-
-      Assert.AreEqual(5, (int)(new JValue(StringComparison.OrdinalIgnoreCase)));
-    }
-
-    [Test]
-    public void ImplicitCastingTo()
-    {
-      Assert.IsTrue(JToken.DeepEquals(new JValue(new DateTime(2000, 12, 20)), (JValue)new DateTime(2000, 12, 20)));
-#if !PocketPC && !NET20
-      Assert.IsTrue(JToken.DeepEquals(new JValue(new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero)), (JValue)new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero)));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((DateTimeOffset?)null), (JValue)(DateTimeOffset?)null));
-#endif
-
-      Assert.IsTrue(JToken.DeepEquals(new JValue(true), (JValue)true));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(true), (JValue)(bool?)true));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((bool?)null), (JValue)(bool?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(10), (JValue)10));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((long?)null), (JValue)(long?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((DateTime?)null), (JValue)(DateTime?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(long.MaxValue), (JValue)long.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((int?)null), (JValue)(int?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((short?)null), (JValue)(short?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((double?)null), (JValue)(double?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((uint?)null), (JValue)(uint?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((decimal?)null), (JValue)(decimal?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((ulong?)null), (JValue)(ulong?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((sbyte?)null), (JValue)(sbyte?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((ushort?)null), (JValue)(ushort?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(ushort.MaxValue), (JValue)ushort.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(11.1f), (JValue)11.1f));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(float.MinValue), (JValue)float.MinValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(double.MinValue), (JValue)double.MinValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(uint.MaxValue), (JValue)uint.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(ulong.MaxValue), (JValue)ulong.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(ulong.MinValue), (JValue)ulong.MinValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((string)null), (JValue)(string)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((DateTime?)null), (JValue)(DateTime?)null));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(decimal.MaxValue), (JValue)decimal.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(decimal.MaxValue), (JValue)(decimal?)decimal.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(decimal.MinValue), (JValue)decimal.MinValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(float.MaxValue), (JValue)(float?)float.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(double.MaxValue), (JValue)(double?)double.MaxValue));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((object)null), (JValue)(double?)null));
-
-      Assert.IsFalse(JToken.DeepEquals(new JValue(true), (JValue)(bool?)null));
-      Assert.IsFalse(JToken.DeepEquals(new JValue((object)null), (JValue)(object)null));
-
-      byte[] emptyData = new byte[0];
-      Assert.IsTrue(JToken.DeepEquals(new JValue(emptyData), (JValue)emptyData));
-      Assert.IsFalse(JToken.DeepEquals(new JValue(emptyData), (JValue)new byte[1]));
-      Assert.IsTrue(JToken.DeepEquals(new JValue(Encoding.UTF8.GetBytes("Hi")), (JValue)Encoding.UTF8.GetBytes("Hi")));
-    }
-
-    [Test]
-    public void Root()
-    {
-      JArray a =
-        new JArray(
-          5,
-          6,
-          new JArray(7, 8),
-          new JArray(9, 10)
-        );
-
-      Assert.AreEqual(a, a.Root);
-      Assert.AreEqual(a, a[0].Root);
-      Assert.AreEqual(a, ((JArray)a[2])[0].Root);
-    }
-
-    [Test]
-    public void Remove()
-    {
-      JToken t;
-      JArray a =
-        new JArray(
-          5,
-          6,
-          new JArray(7, 8),
-          new JArray(9, 10)
-        );
-
-      a[0].Remove();
-
-      Assert.AreEqual(6, (int)a[0]);
-
-      a[1].Remove();
-
-      Assert.AreEqual(6, (int)a[0]);
-      Assert.IsTrue(JToken.DeepEquals(new JArray(9, 10), a[1]));
-      Assert.AreEqual(2, a.Count());
-
-      t = a[1];
-      t.Remove();
-      Assert.AreEqual(6, (int)a[0]);
-      Assert.IsNull(t.Next);
-      Assert.IsNull(t.Previous);
-      Assert.IsNull(t.Parent);
-
-      t = a[0];
-      t.Remove();
-      Assert.AreEqual(0, a.Count());
-
-      Assert.IsNull(t.Next);
-      Assert.IsNull(t.Previous);
-      Assert.IsNull(t.Parent);
-    }
-
-    [Test]
-    public void AfterSelf()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      JToken t = a[1];
-      List<JToken> afterTokens = t.AfterSelf().ToList();
-
-      Assert.AreEqual(2, afterTokens.Count);
-      Assert.IsTrue(JToken.DeepEquals(new JArray(1, 2), afterTokens[0]));
-      Assert.IsTrue(JToken.DeepEquals(new JArray(1, 2, 3), afterTokens[1]));
-    }
-
-    [Test]
-    public void BeforeSelf()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      JToken t = a[2];
-      List<JToken> beforeTokens = t.BeforeSelf().ToList();
-
-      Assert.AreEqual(2, beforeTokens.Count);
-      Assert.IsTrue(JToken.DeepEquals(new JValue(5), beforeTokens[0]));
-      Assert.IsTrue(JToken.DeepEquals(new JArray(1), beforeTokens[1]));
-    }
-
-    [Test]
-    public void HasValues()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      Assert.IsTrue(a.HasValues);
-    }
-
-    [Test]
-    public void Ancestors()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      JToken t = a[1][0];
-      List<JToken> ancestors = t.Ancestors().ToList();
-      Assert.AreEqual(2, ancestors.Count());
-      Assert.AreEqual(a[1], ancestors[0]);
-      Assert.AreEqual(a, ancestors[1]);
-    }
-
-    [Test]
-    public void Descendants()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      List<JToken> descendants = a.Descendants().ToList();
-      Assert.AreEqual(10, descendants.Count());
-      Assert.AreEqual(5, (int)descendants[0]);
-      Assert.IsTrue(JToken.DeepEquals(new JArray(1, 2, 3), descendants[descendants.Count - 4]));
-      Assert.AreEqual(1, (int)descendants[descendants.Count - 3]);
-      Assert.AreEqual(2, (int)descendants[descendants.Count - 2]);
-      Assert.AreEqual(3, (int)descendants[descendants.Count - 1]);
-    }
-
-    [Test]
-    public void CreateWriter()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      JsonWriter writer = a.CreateWriter();
-      Assert.IsNotNull(writer);
-      Assert.AreEqual(4, a.Count());
-
-      writer.WriteValue("String");
-      Assert.AreEqual(5, a.Count());
-      Assert.AreEqual("String", (string)a[4]);
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("Property");
-      writer.WriteValue("PropertyValue");
-      writer.WriteEnd();
-
-      Assert.AreEqual(6, a.Count());
-      Assert.IsTrue(JToken.DeepEquals(new JObject(new JProperty("Property", "PropertyValue")), a[5]));
-    }
-
-    [Test]
-    public void AddFirst()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      a.AddFirst("First");
-
-      Assert.AreEqual("First", (string)a[0]);
-      Assert.AreEqual(a, a[0].Parent);
-      Assert.AreEqual(a[1], a[0].Next);
-      Assert.AreEqual(5, a.Count());
-
-      a.AddFirst("NewFirst");
-      Assert.AreEqual("NewFirst", (string)a[0]);
-      Assert.AreEqual(a, a[0].Parent);
-      Assert.AreEqual(a[1], a[0].Next);
-      Assert.AreEqual(6, a.Count());
-
-      Assert.AreEqual(a[0], a[0].Next.Previous);
-    }
-
-    [Test]
-    public void RemoveAll()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      JToken first = a.First;
-      Assert.AreEqual(5, (int)first);
-
-      a.RemoveAll();
-      Assert.AreEqual(0, a.Count());
-
-      Assert.IsNull(first.Parent);
-      Assert.IsNull(first.Next);
-    }
-
-    [Test]
-    public void AddPropertyToArray()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not add Newtonsoft.Json.Linq.JProperty to Newtonsoft.Json.Linq.JArray.",
-      () =>
-      {
-        JArray a = new JArray();
-        a.Add(new JProperty("PropertyName"));
-      });
-    }
-
-    [Test]
-    [ExpectedException(typeof(ArgumentException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject."
-#endif
-      )]
-    public void AddValueToObject()
-    {
-      JObject o = new JObject();
-      o.Add(5);
-    }
-
-    [Test]
-    public void Replace()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      a[0].Replace(new JValue(int.MaxValue));
-      Assert.AreEqual(int.MaxValue, (int)a[0]);
-      Assert.AreEqual(4, a.Count());
-
-      a[1][0].Replace(new JValue("Test"));
-      Assert.AreEqual("Test", (string)a[1][0]);
-
-      a[2].Replace(new JValue(int.MaxValue));
-      Assert.AreEqual(int.MaxValue, (int)a[2]);
-      Assert.AreEqual(4, a.Count());
-
-      Assert.IsTrue(JToken.DeepEquals(new JArray(int.MaxValue, new JArray("Test"), int.MaxValue, new JArray(1, 2, 3)), a));
-    }
-
-    [Test]
-    public void ToStringWithConverters()
-    {
-      JArray a =
-        new JArray(
-          new JValue(new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc))
-        );
-
-      string json = a.ToString(Formatting.Indented, new IsoDateTimeConverter());
-
-      Assert.AreEqual(@"[
-  ""2009-02-15T00:00:00Z""
-]", json);
-
-      json = JsonConvert.SerializeObject(a, new IsoDateTimeConverter());
-
-      Assert.AreEqual(@"[""2009-02-15T00:00:00Z""]", json);
-    }
-
-    [Test]
-    public void ToStringWithNoIndenting()
-    {
-      JArray a =
-        new JArray(
-          new JValue(new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc))
-        );
-
-      string json = a.ToString(Formatting.None, new IsoDateTimeConverter());
-
-      Assert.AreEqual(@"[""2009-02-15T00:00:00Z""]", json);
-    }
-
-    [Test]
-    public void AddAfterSelf()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      a[1].AddAfterSelf("pie");
-
-      Assert.AreEqual(5, (int)a[0]);
-      Assert.AreEqual(1, a[1].Count());
-      Assert.AreEqual("pie", (string)a[2]);
-      Assert.AreEqual(5, a.Count());
-
-      a[4].AddAfterSelf("lastpie");
-
-      Assert.AreEqual("lastpie", (string)a[5]);
-      Assert.AreEqual("lastpie", (string)a.Last);
-    }
-
-    [Test]
-    public void AddBeforeSelf()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3)
-        );
-
-      a[1].AddBeforeSelf("pie");
-
-      Assert.AreEqual(5, (int)a[0]);
-      Assert.AreEqual("pie", (string)a[1]);
-      Assert.AreEqual(a, a[1].Parent);
-      Assert.AreEqual(a[2], a[1].Next);
-      Assert.AreEqual(5, a.Count());
-
-      a[0].AddBeforeSelf("firstpie");
-
-      Assert.AreEqual("firstpie", (string)a[0]);
-      Assert.AreEqual(5, (int)a[1]);
-      Assert.AreEqual("pie", (string)a[2]);
-      Assert.AreEqual(a, a[0].Parent);
-      Assert.AreEqual(a[1], a[0].Next);
-      Assert.AreEqual(6, a.Count());
-
-      a.Last.AddBeforeSelf("secondlastpie");
-
-      Assert.AreEqual("secondlastpie", (string)a[5]);
-      Assert.AreEqual(7, a.Count());
-    }
-
-    [Test]
-    public void DeepClone()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3),
-          new JObject(
-            new JProperty("First", new JValue(Encoding.UTF8.GetBytes("Hi"))),
-            new JProperty("Second", 1),
-            new JProperty("Third", null),
-            new JProperty("Fourth", new JConstructor("Date", 12345)),
-            new JProperty("Fifth", double.PositiveInfinity),
-            new JProperty("Sixth", double.NaN)
-            )
-        );
-
-      JArray a2 = (JArray)a.DeepClone();
-
-      Console.WriteLine(a2.ToString(Formatting.Indented));
-
-      Assert.IsTrue(a.DeepEquals(a2));
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void Clone()
-    {
-      JArray a =
-        new JArray(
-          5,
-          new JArray(1),
-          new JArray(1, 2),
-          new JArray(1, 2, 3),
-          new JObject(
-            new JProperty("First", new JValue(Encoding.UTF8.GetBytes("Hi"))),
-            new JProperty("Second", 1),
-            new JProperty("Third", null),
-            new JProperty("Fourth", new JConstructor("Date", 12345)),
-            new JProperty("Fifth", double.PositiveInfinity),
-            new JProperty("Sixth", double.NaN)
-            )
-        );
-
-      ICloneable c = a;
-
-      JArray a2 = (JArray) c.Clone();
-
-      Assert.IsTrue(a.DeepEquals(a2));
-    }
-#endif
-
-    [Test]
-    public void DoubleDeepEquals()
-    {
-      JArray a =
-        new JArray(
-          double.NaN,
-          double.PositiveInfinity,
-          double.NegativeInfinity
-        );
-
-      JArray a2 = (JArray)a.DeepClone();
-
-      Assert.IsTrue(a.DeepEquals(a2));
-
-      double d = 1 + 0.1 + 0.1 + 0.1;
-
-      JValue v1 = new JValue(d);
-      JValue v2 = new JValue(1.3);
-
-      Assert.IsTrue(v1.DeepEquals(v2));
-    }
-
-    [Test]
-    public void ParseAdditionalContent()
-    {
-      ExceptionAssert.Throws<JsonReaderException>("Additional text encountered after finished reading JSON content: ,. Line 5, position 2.",
-        () =>
-        {
-          string json = @"[
-""Small"",
-""Medium"",
-""Large""
-],";
-
-          JToken.Parse(json);
-        });
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+using System.IO;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JTokenTests : TestFixtureBase
+  {
+    [Test]
+    public void ReadFrom()
+    {
+      JObject o = (JObject)JToken.ReadFrom(new JsonTextReader(new StringReader("{'pie':true}")));
+      Assert.AreEqual(true, (bool)o["pie"]);
+
+      JArray a = (JArray)JToken.ReadFrom(new JsonTextReader(new StringReader("[1,2,3]")));
+      Assert.AreEqual(1, (int)a[0]);
+      Assert.AreEqual(2, (int)a[1]);
+      Assert.AreEqual(3, (int)a[2]);
+
+      JsonReader reader = new JsonTextReader(new StringReader("{'pie':true}"));
+      reader.Read();
+      reader.Read();
+
+      JProperty p = (JProperty)JToken.ReadFrom(reader);
+      Assert.AreEqual("pie", p.Name);
+      Assert.AreEqual(true, (bool)p.Value);
+
+      JConstructor c = (JConstructor)JToken.ReadFrom(new JsonTextReader(new StringReader("new Date(1)")));
+      Assert.AreEqual("Date", c.Name);
+      Assert.IsTrue(JToken.DeepEquals(new JValue(1), c.Values().ElementAt(0)));
+
+      JValue v;
+
+      v = (JValue)JToken.ReadFrom(new JsonTextReader(new StringReader(@"""stringvalue""")));
+      Assert.AreEqual("stringvalue", (string)v);
+
+      v = (JValue)JToken.ReadFrom(new JsonTextReader(new StringReader(@"1")));
+      Assert.AreEqual(1, (int)v);
+
+      v = (JValue)JToken.ReadFrom(new JsonTextReader(new StringReader(@"1.1")));
+      Assert.AreEqual(1.1, (double)v);
+    }
+
+    [Test]
+    public void Load()
+    {
+      JObject o = (JObject)JToken.Load(new JsonTextReader(new StringReader("{'pie':true}")));
+      Assert.AreEqual(true, (bool)o["pie"]);
+    }
+
+    [Test]
+    public void Parse()
+    {
+      JObject o = (JObject)JToken.Parse("{'pie':true}");
+      Assert.AreEqual(true, (bool)o["pie"]);
+    }
+
+    [Test]
+    public void Parent()
+    {
+      JArray v = new JArray(new JConstructor("TestConstructor"), new JValue(new DateTime(2000, 12, 20)));
+
+      Assert.AreEqual(null, v.Parent);
+
+      JObject o =
+        new JObject(
+          new JProperty("Test1", v),
+          new JProperty("Test2", "Test2Value"),
+          new JProperty("Test3", "Test3Value"),
+          new JProperty("Test4", null)
+        );
+
+      Assert.AreEqual(o.Property("Test1"), v.Parent);
+
+      JProperty p = new JProperty("NewProperty", v);
+
+      // existing value should still have same parent
+      Assert.AreEqual(o.Property("Test1"), v.Parent);
+
+      // new value should be cloned
+      Assert.AreNotSame(p.Value, v);
+
+      Assert.AreEqual((DateTime)((JValue)p.Value[1]).Value, (DateTime)((JValue)v[1]).Value);
+
+      Assert.AreEqual(v, o["Test1"]);
+
+      Assert.AreEqual(null, o.Parent);
+      JProperty o1 = new JProperty("O1", o);
+      Assert.AreEqual(o, o1.Value);
+
+      Assert.AreNotEqual(null, o.Parent);
+      JProperty o2 = new JProperty("O2", o);
+
+      Assert.AreNotSame(o1.Value, o2.Value);
+      Assert.AreEqual(o1.Value.Children().Count(), o2.Value.Children().Count());
+      Assert.AreEqual(false, JToken.DeepEquals(o1, o2));
+      Assert.AreEqual(true, JToken.DeepEquals(o1.Value, o2.Value));
+    }
+
+    [Test]
+    public void Next()
+    {
+      JArray a =
+        new JArray(
+          5,
+          6,
+          new JArray(7, 8),
+          new JArray(9, 10)
+        );
+
+      JToken next = a[0].Next;
+      Assert.AreEqual(6, (int)next);
+
+      next = next.Next;
+      Assert.IsTrue(JToken.DeepEquals(new JArray(7, 8), next));
+ 
+      next = next.Next;
+      Assert.IsTrue(JToken.DeepEquals(new JArray(9, 10), next));
+
+      next = next.Next;
+      Assert.IsNull(next);
+    }
+
+    [Test]
+    public void Previous()
+    {
+      JArray a =
+        new JArray(
+          5,
+          6,
+          new JArray(7, 8),
+          new JArray(9, 10)
+        );
+
+      JToken previous = a[3].Previous;
+      Assert.IsTrue(JToken.DeepEquals(new JArray(7, 8), previous));
+
+      previous = previous.Previous;
+      Assert.AreEqual(6, (int)previous);
+
+      previous = previous.Previous;
+      Assert.AreEqual(5, (int)previous);
+
+      previous = previous.Previous;
+      Assert.IsNull(previous);
+    }
+
+    [Test]
+    public void Children()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      Assert.AreEqual(4, a.Count());
+      Assert.AreEqual(3, a.Children<JArray>().Count());
+    }
+
+    [Test]
+    public void BeforeAfter()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1, 2, 3),
+          new JArray(1, 2, 3),
+          new JArray(1, 2, 3)
+        );
+
+      Assert.AreEqual(5, (int)a[1].Previous);
+      Assert.AreEqual(2, a[2].BeforeSelf().Count());
+      //Assert.AreEqual(2, a[2].AfterSelf().Count());
+    }
+
+    [Test]
+    public void Casting()
+    {
+      Assert.AreEqual(1L, (long)(new JValue(1)));
+      Assert.AreEqual(2L, (long) new JArray(1, 2, 3)[1]);
+
+      Assert.AreEqual(new DateTime(2000, 12, 20), (DateTime)new JValue(new DateTime(2000, 12, 20)));
+#if !PocketPC && !NET20
+      Assert.AreEqual(new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero), (DateTimeOffset)new JValue(new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero)));
+      Assert.AreEqual(null, (DateTimeOffset?)new JValue((DateTimeOffset?)null));
+      Assert.AreEqual(null, (DateTimeOffset?)(JValue)null);
+#endif
+      Assert.AreEqual(true, (bool)new JValue(true));
+      Assert.AreEqual(true, (bool?)new JValue(true));
+      Assert.AreEqual(null, (bool?)((JValue)null));
+      Assert.AreEqual(null, (bool?)new JValue((object)null));
+      Assert.AreEqual(10, (long)new JValue(10));
+      Assert.AreEqual(null, (long?)new JValue((long?)null));
+      Assert.AreEqual(null, (long?)(JValue)null);
+      Assert.AreEqual(null, (int?)new JValue((int?)null));
+      Assert.AreEqual(null, (int?)(JValue)null);
+      Assert.AreEqual(null, (DateTime?)new JValue((DateTime?)null));
+      Assert.AreEqual(null, (DateTime?)(JValue)null);
+      Assert.AreEqual(null, (short?)new JValue((short?)null));
+      Assert.AreEqual(null, (short?)(JValue)null);
+      Assert.AreEqual(null, (float?)new JValue((float?)null));
+      Assert.AreEqual(null, (float?)(JValue)null);
+      Assert.AreEqual(null, (double?)new JValue((double?)null));
+      Assert.AreEqual(null, (double?)(JValue)null);
+      Assert.AreEqual(null, (decimal?)new JValue((decimal?)null));
+      Assert.AreEqual(null, (decimal?)(JValue)null);
+      Assert.AreEqual(null, (uint?)new JValue((uint?)null));
+      Assert.AreEqual(null, (uint?)(JValue)null);
+      Assert.AreEqual(null, (sbyte?)new JValue((sbyte?)null));
+      Assert.AreEqual(null, (sbyte?)(JValue)null);
+      Assert.AreEqual(null, (ulong?)new JValue((ulong?)null));
+      Assert.AreEqual(null, (ulong?)(JValue)null);
+      Assert.AreEqual(null, (uint?)new JValue((uint?)null));
+      Assert.AreEqual(null, (uint?)(JValue)null);
+      Assert.AreEqual(11.1f, (float)new JValue(11.1));
+      Assert.AreEqual(float.MinValue, (float)new JValue(float.MinValue));
+      Assert.AreEqual(1.1, (double)new JValue(1.1));
+      Assert.AreEqual(uint.MaxValue, (uint)new JValue(uint.MaxValue));
+      Assert.AreEqual(ulong.MaxValue, (ulong)new JValue(ulong.MaxValue));
+      Assert.AreEqual(ulong.MaxValue, (ulong)new JProperty("Test", new JValue(ulong.MaxValue)));
+      Assert.AreEqual(null, (string)new JValue((string)null));
+      Assert.AreEqual(5m, (decimal)(new JValue(5L)));
+      Assert.AreEqual(5m, (decimal?)(new JValue(5L)));
+      Assert.AreEqual(5f, (float)(new JValue(5L)));
+      Assert.AreEqual(5f, (float)(new JValue(5m)));
+      Assert.AreEqual(5f, (float?)(new JValue(5m)));
+
+      byte[] data = new byte[0];
+      Assert.AreEqual(data, (byte[])(new JValue(data)));
+
+      Assert.AreEqual(5, (int)(new JValue(StringComparison.OrdinalIgnoreCase)));
+    }
+
+    [Test]
+    public void ImplicitCastingTo()
+    {
+      Assert.IsTrue(JToken.DeepEquals(new JValue(new DateTime(2000, 12, 20)), (JValue)new DateTime(2000, 12, 20)));
+#if !PocketPC && !NET20
+      Assert.IsTrue(JToken.DeepEquals(new JValue(new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero)), (JValue)new DateTimeOffset(2000, 12, 20, 23, 50, 10, TimeSpan.Zero)));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((DateTimeOffset?)null), (JValue)(DateTimeOffset?)null));
+#endif
+
+      Assert.IsTrue(JToken.DeepEquals(new JValue(true), (JValue)true));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(true), (JValue)(bool?)true));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((bool?)null), (JValue)(bool?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(10), (JValue)10));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((long?)null), (JValue)(long?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((DateTime?)null), (JValue)(DateTime?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(long.MaxValue), (JValue)long.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((int?)null), (JValue)(int?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((short?)null), (JValue)(short?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((double?)null), (JValue)(double?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((uint?)null), (JValue)(uint?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((decimal?)null), (JValue)(decimal?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((ulong?)null), (JValue)(ulong?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((sbyte?)null), (JValue)(sbyte?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((ushort?)null), (JValue)(ushort?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(ushort.MaxValue), (JValue)ushort.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(11.1f), (JValue)11.1f));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(float.MinValue), (JValue)float.MinValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(double.MinValue), (JValue)double.MinValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(uint.MaxValue), (JValue)uint.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(ulong.MaxValue), (JValue)ulong.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(ulong.MinValue), (JValue)ulong.MinValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((string)null), (JValue)(string)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((DateTime?)null), (JValue)(DateTime?)null));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(decimal.MaxValue), (JValue)decimal.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(decimal.MaxValue), (JValue)(decimal?)decimal.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(decimal.MinValue), (JValue)decimal.MinValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(float.MaxValue), (JValue)(float?)float.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(double.MaxValue), (JValue)(double?)double.MaxValue));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((object)null), (JValue)(double?)null));
+
+      Assert.IsFalse(JToken.DeepEquals(new JValue(true), (JValue)(bool?)null));
+      Assert.IsFalse(JToken.DeepEquals(new JValue((object)null), (JValue)(object)null));
+
+      byte[] emptyData = new byte[0];
+      Assert.IsTrue(JToken.DeepEquals(new JValue(emptyData), (JValue)emptyData));
+      Assert.IsFalse(JToken.DeepEquals(new JValue(emptyData), (JValue)new byte[1]));
+      Assert.IsTrue(JToken.DeepEquals(new JValue(Encoding.UTF8.GetBytes("Hi")), (JValue)Encoding.UTF8.GetBytes("Hi")));
+    }
+
+    [Test]
+    public void Root()
+    {
+      JArray a =
+        new JArray(
+          5,
+          6,
+          new JArray(7, 8),
+          new JArray(9, 10)
+        );
+
+      Assert.AreEqual(a, a.Root);
+      Assert.AreEqual(a, a[0].Root);
+      Assert.AreEqual(a, ((JArray)a[2])[0].Root);
+    }
+
+    [Test]
+    public void Remove()
+    {
+      JToken t;
+      JArray a =
+        new JArray(
+          5,
+          6,
+          new JArray(7, 8),
+          new JArray(9, 10)
+        );
+
+      a[0].Remove();
+
+      Assert.AreEqual(6, (int)a[0]);
+
+      a[1].Remove();
+
+      Assert.AreEqual(6, (int)a[0]);
+      Assert.IsTrue(JToken.DeepEquals(new JArray(9, 10), a[1]));
+      Assert.AreEqual(2, a.Count());
+
+      t = a[1];
+      t.Remove();
+      Assert.AreEqual(6, (int)a[0]);
+      Assert.IsNull(t.Next);
+      Assert.IsNull(t.Previous);
+      Assert.IsNull(t.Parent);
+
+      t = a[0];
+      t.Remove();
+      Assert.AreEqual(0, a.Count());
+
+      Assert.IsNull(t.Next);
+      Assert.IsNull(t.Previous);
+      Assert.IsNull(t.Parent);
+    }
+
+    [Test]
+    public void AfterSelf()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      JToken t = a[1];
+      List<JToken> afterTokens = t.AfterSelf().ToList();
+
+      Assert.AreEqual(2, afterTokens.Count);
+      Assert.IsTrue(JToken.DeepEquals(new JArray(1, 2), afterTokens[0]));
+      Assert.IsTrue(JToken.DeepEquals(new JArray(1, 2, 3), afterTokens[1]));
+    }
+
+    [Test]
+    public void BeforeSelf()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      JToken t = a[2];
+      List<JToken> beforeTokens = t.BeforeSelf().ToList();
+
+      Assert.AreEqual(2, beforeTokens.Count);
+      Assert.IsTrue(JToken.DeepEquals(new JValue(5), beforeTokens[0]));
+      Assert.IsTrue(JToken.DeepEquals(new JArray(1), beforeTokens[1]));
+    }
+
+    [Test]
+    public void HasValues()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      Assert.IsTrue(a.HasValues);
+    }
+
+    [Test]
+    public void Ancestors()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      JToken t = a[1][0];
+      List<JToken> ancestors = t.Ancestors().ToList();
+      Assert.AreEqual(2, ancestors.Count());
+      Assert.AreEqual(a[1], ancestors[0]);
+      Assert.AreEqual(a, ancestors[1]);
+    }
+
+    [Test]
+    public void Descendants()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      List<JToken> descendants = a.Descendants().ToList();
+      Assert.AreEqual(10, descendants.Count());
+      Assert.AreEqual(5, (int)descendants[0]);
+      Assert.IsTrue(JToken.DeepEquals(new JArray(1, 2, 3), descendants[descendants.Count - 4]));
+      Assert.AreEqual(1, (int)descendants[descendants.Count - 3]);
+      Assert.AreEqual(2, (int)descendants[descendants.Count - 2]);
+      Assert.AreEqual(3, (int)descendants[descendants.Count - 1]);
+    }
+
+    [Test]
+    public void CreateWriter()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      JsonWriter writer = a.CreateWriter();
+      Assert.IsNotNull(writer);
+      Assert.AreEqual(4, a.Count());
+
+      writer.WriteValue("String");
+      Assert.AreEqual(5, a.Count());
+      Assert.AreEqual("String", (string)a[4]);
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("Property");
+      writer.WriteValue("PropertyValue");
+      writer.WriteEnd();
+
+      Assert.AreEqual(6, a.Count());
+      Assert.IsTrue(JToken.DeepEquals(new JObject(new JProperty("Property", "PropertyValue")), a[5]));
+    }
+
+    [Test]
+    public void AddFirst()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      a.AddFirst("First");
+
+      Assert.AreEqual("First", (string)a[0]);
+      Assert.AreEqual(a, a[0].Parent);
+      Assert.AreEqual(a[1], a[0].Next);
+      Assert.AreEqual(5, a.Count());
+
+      a.AddFirst("NewFirst");
+      Assert.AreEqual("NewFirst", (string)a[0]);
+      Assert.AreEqual(a, a[0].Parent);
+      Assert.AreEqual(a[1], a[0].Next);
+      Assert.AreEqual(6, a.Count());
+
+      Assert.AreEqual(a[0], a[0].Next.Previous);
+    }
+
+    [Test]
+    public void RemoveAll()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      JToken first = a.First;
+      Assert.AreEqual(5, (int)first);
+
+      a.RemoveAll();
+      Assert.AreEqual(0, a.Count());
+
+      Assert.IsNull(first.Parent);
+      Assert.IsNull(first.Next);
+    }
+
+    [Test]
+    public void AddPropertyToArray()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not add Newtonsoft.Json.Linq.JProperty to Newtonsoft.Json.Linq.JArray.",
+      () =>
+      {
+        JArray a = new JArray();
+        a.Add(new JProperty("PropertyName"));
+      });
+    }
+
+    [Test]
+    [ExpectedException(typeof(ArgumentException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject."
+#endif
+      )]
+    public void AddValueToObject()
+    {
+      JObject o = new JObject();
+      o.Add(5);
+    }
+
+    [Test]
+    public void Replace()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      a[0].Replace(new JValue(int.MaxValue));
+      Assert.AreEqual(int.MaxValue, (int)a[0]);
+      Assert.AreEqual(4, a.Count());
+
+      a[1][0].Replace(new JValue("Test"));
+      Assert.AreEqual("Test", (string)a[1][0]);
+
+      a[2].Replace(new JValue(int.MaxValue));
+      Assert.AreEqual(int.MaxValue, (int)a[2]);
+      Assert.AreEqual(4, a.Count());
+
+      Assert.IsTrue(JToken.DeepEquals(new JArray(int.MaxValue, new JArray("Test"), int.MaxValue, new JArray(1, 2, 3)), a));
+    }
+
+    [Test]
+    public void ToStringWithConverters()
+    {
+      JArray a =
+        new JArray(
+          new JValue(new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc))
+        );
+
+      string json = a.ToString(Formatting.Indented, new IsoDateTimeConverter());
+
+      Assert.AreEqual(@"[
+  ""2009-02-15T00:00:00Z""
+]", json);
+
+      json = JsonConvert.SerializeObject(a, new IsoDateTimeConverter());
+
+      Assert.AreEqual(@"[""2009-02-15T00:00:00Z""]", json);
+    }
+
+    [Test]
+    public void ToStringWithNoIndenting()
+    {
+      JArray a =
+        new JArray(
+          new JValue(new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc))
+        );
+
+      string json = a.ToString(Formatting.None, new IsoDateTimeConverter());
+
+      Assert.AreEqual(@"[""2009-02-15T00:00:00Z""]", json);
+    }
+
+    [Test]
+    public void AddAfterSelf()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      a[1].AddAfterSelf("pie");
+
+      Assert.AreEqual(5, (int)a[0]);
+      Assert.AreEqual(1, a[1].Count());
+      Assert.AreEqual("pie", (string)a[2]);
+      Assert.AreEqual(5, a.Count());
+
+      a[4].AddAfterSelf("lastpie");
+
+      Assert.AreEqual("lastpie", (string)a[5]);
+      Assert.AreEqual("lastpie", (string)a.Last);
+    }
+
+    [Test]
+    public void AddBeforeSelf()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3)
+        );
+
+      a[1].AddBeforeSelf("pie");
+
+      Assert.AreEqual(5, (int)a[0]);
+      Assert.AreEqual("pie", (string)a[1]);
+      Assert.AreEqual(a, a[1].Parent);
+      Assert.AreEqual(a[2], a[1].Next);
+      Assert.AreEqual(5, a.Count());
+
+      a[0].AddBeforeSelf("firstpie");
+
+      Assert.AreEqual("firstpie", (string)a[0]);
+      Assert.AreEqual(5, (int)a[1]);
+      Assert.AreEqual("pie", (string)a[2]);
+      Assert.AreEqual(a, a[0].Parent);
+      Assert.AreEqual(a[1], a[0].Next);
+      Assert.AreEqual(6, a.Count());
+
+      a.Last.AddBeforeSelf("secondlastpie");
+
+      Assert.AreEqual("secondlastpie", (string)a[5]);
+      Assert.AreEqual(7, a.Count());
+    }
+
+    [Test]
+    public void DeepClone()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3),
+          new JObject(
+            new JProperty("First", new JValue(Encoding.UTF8.GetBytes("Hi"))),
+            new JProperty("Second", 1),
+            new JProperty("Third", null),
+            new JProperty("Fourth", new JConstructor("Date", 12345)),
+            new JProperty("Fifth", double.PositiveInfinity),
+            new JProperty("Sixth", double.NaN)
+            )
+        );
+
+      JArray a2 = (JArray)a.DeepClone();
+
+      Console.WriteLine(a2.ToString(Formatting.Indented));
+
+      Assert.IsTrue(a.DeepEquals(a2));
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void Clone()
+    {
+      JArray a =
+        new JArray(
+          5,
+          new JArray(1),
+          new JArray(1, 2),
+          new JArray(1, 2, 3),
+          new JObject(
+            new JProperty("First", new JValue(Encoding.UTF8.GetBytes("Hi"))),
+            new JProperty("Second", 1),
+            new JProperty("Third", null),
+            new JProperty("Fourth", new JConstructor("Date", 12345)),
+            new JProperty("Fifth", double.PositiveInfinity),
+            new JProperty("Sixth", double.NaN)
+            )
+        );
+
+      ICloneable c = a;
+
+      JArray a2 = (JArray) c.Clone();
+
+      Assert.IsTrue(a.DeepEquals(a2));
+    }
+#endif
+
+    [Test]
+    public void DoubleDeepEquals()
+    {
+      JArray a =
+        new JArray(
+          double.NaN,
+          double.PositiveInfinity,
+          double.NegativeInfinity
+        );
+
+      JArray a2 = (JArray)a.DeepClone();
+
+      Assert.IsTrue(a.DeepEquals(a2));
+
+      double d = 1 + 0.1 + 0.1 + 0.1;
+
+      JValue v1 = new JValue(d);
+      JValue v2 = new JValue(1.3);
+
+      Assert.IsTrue(v1.DeepEquals(v2));
+    }
+
+    [Test]
+    public void ParseAdditionalContent()
+    {
+      ExceptionAssert.Throws<JsonReaderException>("Additional text encountered after finished reading JSON content: ,. Line 5, position 2.",
+        () =>
+        {
+          string json = @"[
+""Small"",
+""Medium"",
+""Large""
+],";
+
+          JToken.Parse(json);
+        });
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterTest.cs
@@ -1,178 +1,178 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json;
-using System.IO;
-using Newtonsoft.Json.Linq;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JTokenWriterTest : TestFixtureBase
-  {
-    [Test]
-    public void ValueFormatting()
-    {
-      byte[] data = Encoding.UTF8.GetBytes("Hello world.");
-
-      JToken root;
-      using (JTokenWriter jsonWriter = new JTokenWriter())
-      {
-        jsonWriter.WriteStartArray();
-        jsonWriter.WriteValue('@');
-        jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
-        jsonWriter.WriteValue(true);
-        jsonWriter.WriteValue(10);
-        jsonWriter.WriteValue(10.99);
-        jsonWriter.WriteValue(0.99);
-        jsonWriter.WriteValue(0.000000000000000001d);
-        jsonWriter.WriteValue(0.000000000000000001m);
-        jsonWriter.WriteValue((string)null);
-        jsonWriter.WriteValue("This is a string.");
-        jsonWriter.WriteNull();
-        jsonWriter.WriteUndefined();
-        jsonWriter.WriteValue(data);
-        jsonWriter.WriteEndArray();
-
-        root = jsonWriter.Token;
-      }
-
-      CustomAssert.IsInstanceOfType(typeof(JArray), root);
-      Assert.AreEqual(13, root.Children().Count());
-      Assert.AreEqual("@", (string)root[0]);
-      Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", (string)root[1]);
-      Assert.AreEqual(true, (bool)root[2]);
-      Assert.AreEqual(10, (int)root[3]);
-      Assert.AreEqual(10.99, (double)root[4]);
-      Assert.AreEqual(0.99, (double)root[5]);
-      Assert.AreEqual(0.000000000000000001d, (double)root[6]);
-      Assert.AreEqual(0.000000000000000001m, (decimal)root[7]);
-      Assert.AreEqual(string.Empty, (string)root[8]);
-      Assert.AreEqual("This is a string.", (string)root[9]);
-      Assert.AreEqual(null, ((JValue)root[10]).Value);
-      Assert.AreEqual(null, ((JValue)root[11]).Value);
-      Assert.AreEqual(data, (byte[])root[12]);
-    }
-
-    [Test]
-    public void State()
-    {
-      using (JsonWriter jsonWriter = new JTokenWriter())
-      {
-        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
-
-        jsonWriter.WriteStartObject();
-        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
-
-        jsonWriter.WritePropertyName("CPU");
-        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
-
-        jsonWriter.WriteValue("Intel");
-        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
-
-        jsonWriter.WritePropertyName("Drives");
-        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
-
-        jsonWriter.WriteStartArray();
-        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
-
-        jsonWriter.WriteValue("DVD read/writer");
-        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
-
-        jsonWriter.WriteValue(new byte[0]);
-        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
-
-        jsonWriter.WriteEnd();
-        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
-
-        jsonWriter.WriteEndObject();
-        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
-      }
-    }
-
-    [Test]
-    public void WriteComment()
-    {
-      JTokenWriter writer = new JTokenWriter();
-
-      writer.WriteStartArray();
-      writer.WriteComment("fail");
-      writer.WriteEndArray();
-
-      Assert.AreEqual(@"[
-  /*fail*/]", writer.Token.ToString());
-    }
-
-    [Test]
-    public void WriteRaw()
-    {
-      JTokenWriter writer = new JTokenWriter();
-
-      writer.WriteStartArray();
-      writer.WriteRaw("fail");
-      writer.WriteRaw("fail");
-      writer.WriteEndArray();
-
-      // this is a bug. write raw shouldn't be autocompleting like this
-      // hard to fix without introducing Raw and RawValue token types
-      // meh
-      Assert.AreEqual(@"[
-  fail,
-  fail
-]", writer.Token.ToString());
-    }
-
-    [Test]
-    public void WriteRawValue()
-    {
-      JTokenWriter writer = new JTokenWriter();
-
-      writer.WriteStartArray();
-      writer.WriteRawValue("fail");
-      writer.WriteRawValue("fail");
-      writer.WriteEndArray();
-
-      Assert.AreEqual(@"[
-  fail,
-  fail
-]", writer.Token.ToString());
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json;
+using System.IO;
+using Newtonsoft.Json.Linq;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JTokenWriterTest : TestFixtureBase
+  {
+    [Test]
+    public void ValueFormatting()
+    {
+      byte[] data = Encoding.UTF8.GetBytes("Hello world.");
+
+      JToken root;
+      using (JTokenWriter jsonWriter = new JTokenWriter())
+      {
+        jsonWriter.WriteStartArray();
+        jsonWriter.WriteValue('@');
+        jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
+        jsonWriter.WriteValue(true);
+        jsonWriter.WriteValue(10);
+        jsonWriter.WriteValue(10.99);
+        jsonWriter.WriteValue(0.99);
+        jsonWriter.WriteValue(0.000000000000000001d);
+        jsonWriter.WriteValue(0.000000000000000001m);
+        jsonWriter.WriteValue((string)null);
+        jsonWriter.WriteValue("This is a string.");
+        jsonWriter.WriteNull();
+        jsonWriter.WriteUndefined();
+        jsonWriter.WriteValue(data);
+        jsonWriter.WriteEndArray();
+
+        root = jsonWriter.Token;
+      }
+
+      CustomAssert.IsInstanceOfType(typeof(JArray), root);
+      Assert.AreEqual(13, root.Children().Count());
+      Assert.AreEqual("@", (string)root[0]);
+      Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", (string)root[1]);
+      Assert.AreEqual(true, (bool)root[2]);
+      Assert.AreEqual(10, (int)root[3]);
+      Assert.AreEqual(10.99, (double)root[4]);
+      Assert.AreEqual(0.99, (double)root[5]);
+      Assert.AreEqual(0.000000000000000001d, (double)root[6]);
+      Assert.AreEqual(0.000000000000000001m, (decimal)root[7]);
+      Assert.AreEqual(string.Empty, (string)root[8]);
+      Assert.AreEqual("This is a string.", (string)root[9]);
+      Assert.AreEqual(null, ((JValue)root[10]).Value);
+      Assert.AreEqual(null, ((JValue)root[11]).Value);
+      Assert.AreEqual(data, (byte[])root[12]);
+    }
+
+    [Test]
+    public void State()
+    {
+      using (JsonWriter jsonWriter = new JTokenWriter())
+      {
+        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
+
+        jsonWriter.WriteStartObject();
+        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
+
+        jsonWriter.WritePropertyName("CPU");
+        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
+
+        jsonWriter.WriteValue("Intel");
+        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
+
+        jsonWriter.WritePropertyName("Drives");
+        Assert.AreEqual(WriteState.Property, jsonWriter.WriteState);
+
+        jsonWriter.WriteStartArray();
+        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
+
+        jsonWriter.WriteValue("DVD read/writer");
+        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
+
+        jsonWriter.WriteValue(new byte[0]);
+        Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
+
+        jsonWriter.WriteEnd();
+        Assert.AreEqual(WriteState.Object, jsonWriter.WriteState);
+
+        jsonWriter.WriteEndObject();
+        Assert.AreEqual(WriteState.Start, jsonWriter.WriteState);
+      }
+    }
+
+    [Test]
+    public void WriteComment()
+    {
+      JTokenWriter writer = new JTokenWriter();
+
+      writer.WriteStartArray();
+      writer.WriteComment("fail");
+      writer.WriteEndArray();
+
+      Assert.AreEqual(@"[
+  /*fail*/]", writer.Token.ToString());
+    }
+
+    [Test]
+    public void WriteRaw()
+    {
+      JTokenWriter writer = new JTokenWriter();
+
+      writer.WriteStartArray();
+      writer.WriteRaw("fail");
+      writer.WriteRaw("fail");
+      writer.WriteEndArray();
+
+      // this is a bug. write raw shouldn't be autocompleting like this
+      // hard to fix without introducing Raw and RawValue token types
+      // meh
+      Assert.AreEqual(@"[
+  fail,
+  fail
+]", writer.Token.ToString());
+    }
+
+    [Test]
+    public void WriteRawValue()
+    {
+      JTokenWriter writer = new JTokenWriter();
+
+      writer.WriteStartArray();
+      writer.WriteRawValue("fail");
+      writer.WriteRawValue("fail");
+      writer.WriteEndArray();
+
+      Assert.AreEqual(@"[
+  fail,
+  fail
+]", writer.Token.ToString());
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs
@@ -1,307 +1,307 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class JValueTests : TestFixtureBase
-  {
-    [Test]
-    public void ChangeValue()
-    {
-      JValue v = new JValue(true);
-      Assert.AreEqual(true, v.Value);
-      Assert.AreEqual(JTokenType.Boolean, v.Type);
-
-      v.Value = "Pie";
-      Assert.AreEqual("Pie", v.Value);
-      Assert.AreEqual(JTokenType.String, v.Type);
-
-      v.Value = null;
-      Assert.AreEqual(null, v.Value);
-      Assert.AreEqual(JTokenType.Null, v.Type);
-
-      v.Value = (int?)null;
-      Assert.AreEqual(null, v.Value);
-      Assert.AreEqual(JTokenType.Null, v.Type);
-
-      v.Value = "Pie";
-      Assert.AreEqual("Pie", v.Value);
-      Assert.AreEqual(JTokenType.String, v.Type);
-
-#if !NETFX_CORE
-      v.Value = DBNull.Value;
-      Assert.AreEqual(DBNull.Value, v.Value);
-      Assert.AreEqual(JTokenType.Null, v.Type);
-#endif
-
-      byte[] data = new byte[0];
-      v.Value = data;
-
-      Assert.AreEqual(data, v.Value);
-      Assert.AreEqual(JTokenType.Bytes, v.Type);
-
-      v.Value = StringComparison.OrdinalIgnoreCase;
-      Assert.AreEqual(StringComparison.OrdinalIgnoreCase, v.Value);
-      Assert.AreEqual(JTokenType.Integer, v.Type);
-
-      v.Value = new Uri("http://json.codeplex.com/");
-      Assert.AreEqual(new Uri("http://json.codeplex.com/"), v.Value);
-      Assert.AreEqual(JTokenType.Uri, v.Type);
-
-      v.Value = TimeSpan.FromDays(1);
-      Assert.AreEqual(TimeSpan.FromDays(1), v.Value);
-      Assert.AreEqual(JTokenType.TimeSpan, v.Type);
-
-      Guid g = Guid.NewGuid();
-      v.Value = g;
-      Assert.AreEqual(g, v.Value);
-      Assert.AreEqual(JTokenType.Guid, v.Type);
-    }
-
-    [Test]
-    public void CreateComment()
-    {
-      JValue commentValue = JValue.CreateComment(null);
-      Assert.AreEqual(null, commentValue.Value);
-      Assert.AreEqual(JTokenType.Comment, commentValue.Type);
-
-      commentValue.Value = "Comment";
-      Assert.AreEqual("Comment", commentValue.Value);
-      Assert.AreEqual(JTokenType.Comment, commentValue.Type);
-    }
-
-    [Test]
-    public void CreateString()
-    {
-      JValue stringValue = JValue.CreateString(null);
-      Assert.AreEqual(null, stringValue.Value);
-      Assert.AreEqual(JTokenType.String, stringValue.Type);
-    }
-
-    [Test]
-    public void ToString()
-    {
-      JValue v;
-
-      v = new JValue(true);
-      Assert.AreEqual("True", v.ToString());
-
-      v = new JValue(Encoding.UTF8.GetBytes("Blah"));
-      Assert.AreEqual("System.Byte[]", v.ToString(null, CultureInfo.InvariantCulture));
-
-      v = new JValue("I am a string!");
-      Assert.AreEqual("I am a string!", v.ToString());
-
-      v = new JValue(null, JTokenType.Null);
-      Assert.AreEqual("", v.ToString());
-
-      v = new JValue(null, JTokenType.Null);
-      Assert.AreEqual("", v.ToString(null, CultureInfo.InvariantCulture));
-
-      v = new JValue(new DateTime(2000, 12, 12, 20, 59, 59, DateTimeKind.Utc), JTokenType.Date);
-      Assert.AreEqual("12/12/2000 20:59:59", v.ToString(null, CultureInfo.InvariantCulture));
-
-      v = new JValue(new Uri("http://json.codeplex.com/"));
-      Assert.AreEqual("http://json.codeplex.com/", v.ToString(null, CultureInfo.InvariantCulture));
-
-      v = new JValue(TimeSpan.FromDays(1));
-      Assert.AreEqual("1.00:00:00", v.ToString(null, CultureInfo.InvariantCulture));
-
-      v = new JValue(new Guid("B282ADE7-C520-496C-A448-4084F6803DE5"));
-      Assert.AreEqual("b282ade7-c520-496c-a448-4084f6803de5", v.ToString(null, CultureInfo.InvariantCulture));
-    }
-
-    [Test]
-    public void Last()
-    {
-      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
-      () =>
-      {
-        JValue v = new JValue(true);
-        JToken last = v.Last;
-      });
-    }
-
-    [Test]
-    public void Children()
-    {
-      JValue v = new JValue(true);
-      var c = v.Children();
-      Assert.AreEqual(JEnumerable<JToken>.Empty, c);
-    }
-
-    [Test]
-    public void First()
-    {
-      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
-      () =>
-      {
-        JValue v = new JValue(true);
-        JToken first = v.First;
-      });
-    }
-
-    [Test]
-    public void Item()
-    {
-      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
-      () =>
-      {
-        JValue v = new JValue(true);
-        JToken first = v[0];
-      });
-    }
-
-    [Test]
-    public void Values()
-    {
-      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
-      () =>
-      {
-        JValue v = new JValue(true);
-        v.Values<int>();
-      });
-    }
-
-    [Test]
-    public void RemoveParentNull()
-    {
-      ExceptionAssert.Throws<InvalidOperationException>("The parent is missing.",
-      () =>
-      {
-        JValue v = new JValue(true);
-        v.Remove();
-      });
-    }
-
-    [Test]
-    public void Root()
-    {
-      JValue v = new JValue(true);
-      Assert.AreEqual(v, v.Root);
-    }
-
-    [Test]
-    public void Previous()
-    {
-      JValue v = new JValue(true);
-      Assert.IsNull(v.Previous);
-    }
-
-    [Test]
-    public void Next()
-    {
-      JValue v = new JValue(true);
-      Assert.IsNull(v.Next);
-    }
-
-    [Test]
-    public void DeepEquals()
-    {
-      Assert.IsTrue(JToken.DeepEquals(new JValue(5L), new JValue(5)));
-      Assert.IsFalse(JToken.DeepEquals(new JValue(5M), new JValue(5)));
-      Assert.IsTrue(JToken.DeepEquals(new JValue((ulong)long.MaxValue), new JValue(long.MaxValue)));
-    }
-
-    [Test]
-    public void HasValues()
-    {
-      Assert.IsFalse((new JValue(5L)).HasValues);
-    }
-
-    [Test]
-    public void SetValue()
-    {
-      ExceptionAssert.Throws<InvalidOperationException>("Cannot set child value on Newtonsoft.Json.Linq.JValue.",
-      () =>
-      {
-        JToken t = new JValue(5L);
-        t[0] = new JValue(3);
-      });
-    }
-
-    [Test]
-    public void CastNullValueToNonNullable()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Can not convert Null to Int32.",
-      () =>
-      {
-        JValue v = new JValue((object)null);
-        int i = (int)v;
-      });
-    }
-
-    [Test]
-    public void ConvertValueToCompatibleType()
-    {
-      IComparable c = (new JValue(1).Value<IComparable>());
-      Assert.AreEqual(1L, c);
-    }
-
-    [Test]
-    public void ConvertValueToFormattableType()
-    {
-      IFormattable f = (new JValue(1).Value<IFormattable>());
-      Assert.AreEqual(1L, f);
-
-      Assert.AreEqual("01", f.ToString("00", CultureInfo.InvariantCulture));
-    }
-
-    [Test]
-    public void Ordering()
-    {
-      JObject o = new JObject(
-        new JProperty("Integer", new JValue(1)),
-        new JProperty("Float", new JValue(1.2d)),
-        new JProperty("Decimal", new JValue(1.1m))
-        );
-
-      IList<object> orderedValues = o.Values().Cast<JValue>().OrderBy(v => v).Select(v => v.Value).ToList();
-
-      Assert.AreEqual(1L, orderedValues[0]);
-      Assert.AreEqual(1.1m, orderedValues[1]);
-      Assert.AreEqual(1.2d, orderedValues[2]);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class JValueTests : TestFixtureBase
+  {
+    [Test]
+    public void ChangeValue()
+    {
+      JValue v = new JValue(true);
+      Assert.AreEqual(true, v.Value);
+      Assert.AreEqual(JTokenType.Boolean, v.Type);
+
+      v.Value = "Pie";
+      Assert.AreEqual("Pie", v.Value);
+      Assert.AreEqual(JTokenType.String, v.Type);
+
+      v.Value = null;
+      Assert.AreEqual(null, v.Value);
+      Assert.AreEqual(JTokenType.Null, v.Type);
+
+      v.Value = (int?)null;
+      Assert.AreEqual(null, v.Value);
+      Assert.AreEqual(JTokenType.Null, v.Type);
+
+      v.Value = "Pie";
+      Assert.AreEqual("Pie", v.Value);
+      Assert.AreEqual(JTokenType.String, v.Type);
+
+#if !NETFX_CORE
+      v.Value = DBNull.Value;
+      Assert.AreEqual(DBNull.Value, v.Value);
+      Assert.AreEqual(JTokenType.Null, v.Type);
+#endif
+
+      byte[] data = new byte[0];
+      v.Value = data;
+
+      Assert.AreEqual(data, v.Value);
+      Assert.AreEqual(JTokenType.Bytes, v.Type);
+
+      v.Value = StringComparison.OrdinalIgnoreCase;
+      Assert.AreEqual(StringComparison.OrdinalIgnoreCase, v.Value);
+      Assert.AreEqual(JTokenType.Integer, v.Type);
+
+      v.Value = new Uri("http://json.codeplex.com/");
+      Assert.AreEqual(new Uri("http://json.codeplex.com/"), v.Value);
+      Assert.AreEqual(JTokenType.Uri, v.Type);
+
+      v.Value = TimeSpan.FromDays(1);
+      Assert.AreEqual(TimeSpan.FromDays(1), v.Value);
+      Assert.AreEqual(JTokenType.TimeSpan, v.Type);
+
+      Guid g = Guid.NewGuid();
+      v.Value = g;
+      Assert.AreEqual(g, v.Value);
+      Assert.AreEqual(JTokenType.Guid, v.Type);
+    }
+
+    [Test]
+    public void CreateComment()
+    {
+      JValue commentValue = JValue.CreateComment(null);
+      Assert.AreEqual(null, commentValue.Value);
+      Assert.AreEqual(JTokenType.Comment, commentValue.Type);
+
+      commentValue.Value = "Comment";
+      Assert.AreEqual("Comment", commentValue.Value);
+      Assert.AreEqual(JTokenType.Comment, commentValue.Type);
+    }
+
+    [Test]
+    public void CreateString()
+    {
+      JValue stringValue = JValue.CreateString(null);
+      Assert.AreEqual(null, stringValue.Value);
+      Assert.AreEqual(JTokenType.String, stringValue.Type);
+    }
+
+    [Test]
+    public void ToString()
+    {
+      JValue v;
+
+      v = new JValue(true);
+      Assert.AreEqual("True", v.ToString());
+
+      v = new JValue(Encoding.UTF8.GetBytes("Blah"));
+      Assert.AreEqual("System.Byte[]", v.ToString(null, CultureInfo.InvariantCulture));
+
+      v = new JValue("I am a string!");
+      Assert.AreEqual("I am a string!", v.ToString());
+
+      v = new JValue(null, JTokenType.Null);
+      Assert.AreEqual("", v.ToString());
+
+      v = new JValue(null, JTokenType.Null);
+      Assert.AreEqual("", v.ToString(null, CultureInfo.InvariantCulture));
+
+      v = new JValue(new DateTime(2000, 12, 12, 20, 59, 59, DateTimeKind.Utc), JTokenType.Date);
+      Assert.AreEqual("12/12/2000 20:59:59", v.ToString(null, CultureInfo.InvariantCulture));
+
+      v = new JValue(new Uri("http://json.codeplex.com/"));
+      Assert.AreEqual("http://json.codeplex.com/", v.ToString(null, CultureInfo.InvariantCulture));
+
+      v = new JValue(TimeSpan.FromDays(1));
+      Assert.AreEqual("1.00:00:00", v.ToString(null, CultureInfo.InvariantCulture));
+
+      v = new JValue(new Guid("B282ADE7-C520-496C-A448-4084F6803DE5"));
+      Assert.AreEqual("b282ade7-c520-496c-a448-4084f6803de5", v.ToString(null, CultureInfo.InvariantCulture));
+    }
+
+    [Test]
+    public void Last()
+    {
+      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
+      () =>
+      {
+        JValue v = new JValue(true);
+        JToken last = v.Last;
+      });
+    }
+
+    [Test]
+    public void Children()
+    {
+      JValue v = new JValue(true);
+      var c = v.Children();
+      Assert.AreEqual(JEnumerable<JToken>.Empty, c);
+    }
+
+    [Test]
+    public void First()
+    {
+      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
+      () =>
+      {
+        JValue v = new JValue(true);
+        JToken first = v.First;
+      });
+    }
+
+    [Test]
+    public void Item()
+    {
+      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
+      () =>
+      {
+        JValue v = new JValue(true);
+        JToken first = v[0];
+      });
+    }
+
+    [Test]
+    public void Values()
+    {
+      ExceptionAssert.Throws<InvalidOperationException>("Cannot access child value on Newtonsoft.Json.Linq.JValue.",
+      () =>
+      {
+        JValue v = new JValue(true);
+        v.Values<int>();
+      });
+    }
+
+    [Test]
+    public void RemoveParentNull()
+    {
+      ExceptionAssert.Throws<InvalidOperationException>("The parent is missing.",
+      () =>
+      {
+        JValue v = new JValue(true);
+        v.Remove();
+      });
+    }
+
+    [Test]
+    public void Root()
+    {
+      JValue v = new JValue(true);
+      Assert.AreEqual(v, v.Root);
+    }
+
+    [Test]
+    public void Previous()
+    {
+      JValue v = new JValue(true);
+      Assert.IsNull(v.Previous);
+    }
+
+    [Test]
+    public void Next()
+    {
+      JValue v = new JValue(true);
+      Assert.IsNull(v.Next);
+    }
+
+    [Test]
+    public void DeepEquals()
+    {
+      Assert.IsTrue(JToken.DeepEquals(new JValue(5L), new JValue(5)));
+      Assert.IsFalse(JToken.DeepEquals(new JValue(5M), new JValue(5)));
+      Assert.IsTrue(JToken.DeepEquals(new JValue((ulong)long.MaxValue), new JValue(long.MaxValue)));
+    }
+
+    [Test]
+    public void HasValues()
+    {
+      Assert.IsFalse((new JValue(5L)).HasValues);
+    }
+
+    [Test]
+    public void SetValue()
+    {
+      ExceptionAssert.Throws<InvalidOperationException>("Cannot set child value on Newtonsoft.Json.Linq.JValue.",
+      () =>
+      {
+        JToken t = new JValue(5L);
+        t[0] = new JValue(3);
+      });
+    }
+
+    [Test]
+    public void CastNullValueToNonNullable()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Can not convert Null to Int32.",
+      () =>
+      {
+        JValue v = new JValue((object)null);
+        int i = (int)v;
+      });
+    }
+
+    [Test]
+    public void ConvertValueToCompatibleType()
+    {
+      IComparable c = (new JValue(1).Value<IComparable>());
+      Assert.AreEqual(1L, c);
+    }
+
+    [Test]
+    public void ConvertValueToFormattableType()
+    {
+      IFormattable f = (new JValue(1).Value<IFormattable>());
+      Assert.AreEqual(1L, f);
+
+      Assert.AreEqual("01", f.ToString("00", CultureInfo.InvariantCulture));
+    }
+
+    [Test]
+    public void Ordering()
+    {
+      JObject o = new JObject(
+        new JProperty("Integer", new JValue(1)),
+        new JProperty("Float", new JValue(1.2d)),
+        new JProperty("Decimal", new JValue(1.1m))
+        );
+
+      IList<object> orderedValues = o.Values().Cast<JValue>().OrderBy(v => v).Select(v => v.Value).ToList();
+
+      Assert.AreEqual(1L, orderedValues[0]);
+      Assert.AreEqual(1.1m, orderedValues[1]);
+      Assert.AreEqual(1.2d, orderedValues[2]);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs
@@ -1,855 +1,855 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-#if !NETFX_CORE
-using System.IO;
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Tests.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using System.IO;
-
-namespace Newtonsoft.Json.Tests.Linq
-{
-  [TestFixture]
-  public class LinqToJsonTest : TestFixtureBase
-  {
-    [Test]
-    public void DoubleValue()
-    {
-      JArray j = JArray.Parse("[-1E+4,100.0e-2]");
-
-      double value = (double)j[0];
-      Assert.AreEqual(-10000d, value);
-
-      value = (double)j[1];
-      Assert.AreEqual(1d, value);
-    }
-
-    [Test]
-    public void Manual()
-    {
-      JArray array = new JArray();
-      JValue text = new JValue("Manual text");
-      JValue date = new JValue(new DateTime(2000, 5, 23));
-
-      array.Add(text);
-      array.Add(date);
-
-      string json = array.ToString();
-      // [
-      //   "Manual text",
-      //   "\/Date(958996800000+1200)\/"
-      // ]
-    }
-
-    [Test]
-    public void LinqToJsonDeserialize()
-    {
-      JObject o = new JObject(
-        new JProperty("Name", "John Smith"),
-        new JProperty("BirthDate", new DateTime(1983, 3, 20))
-        );
-
-      JsonSerializer serializer = new JsonSerializer();
-      Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person));
-
-      // John Smith
-      Console.WriteLine(p.Name);
-    }
-
-    [Test]
-    public void ObjectParse()
-    {
-      string json = @"{
-        CPU: 'Intel',
-        Drives: [
-          'DVD read/writer',
-          ""500 gigabyte hard drive""
-        ]
-      }";
-
-      JObject o = JObject.Parse(json);
-      IList<JProperty> properties = o.Properties().ToList();
-
-      Assert.AreEqual("CPU", properties[0].Name);
-      Assert.AreEqual("Intel", (string)properties[0].Value);
-      Assert.AreEqual("Drives", properties[1].Name);
-
-      JArray list = (JArray)properties[1].Value;
-      Assert.AreEqual(2, list.Children().Count());
-      Assert.AreEqual("DVD read/writer", (string)list.Children().ElementAt(0));
-      Assert.AreEqual("500 gigabyte hard drive", (string)list.Children().ElementAt(1));
-
-      List<object> parameterValues =
-        (from p in o.Properties()
-         where p.Value is JValue
-         select ((JValue)p.Value).Value).ToList();
-
-      Assert.AreEqual(1, parameterValues.Count);
-      Assert.AreEqual("Intel", parameterValues[0]);
-    }
-
-    [Test]
-    public void CreateLongArray()
-    {
-      string json = @"[0,1,2,3,4,5,6,7,8,9]";
-
-      JArray a = JArray.Parse(json);
-      List<int> list = a.Values<int>().ToList();
-
-      List<int> expected = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
-
-      CollectionAssert.AreEqual(expected, list);
-    }
-
-    [Test]
-    public void GoogleSearchAPI()
-    {
-      #region GoogleJson
-      string json = @"{
-    results:
-        [
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://www.google.com/"",
-                url : ""http://www.google.com/"",
-                visibleUrl : ""www.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:zhool8dxBV4J:www.google.com"",
-                title : ""Google"",
-                titleNoFormatting : ""Google"",
-                content : ""Enables users to search the Web, Usenet, and 
-images. Features include PageRank,   caching and translation of 
-results, and an option to find similar pages.""
-            },
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://news.google.com/"",
-                url : ""http://news.google.com/"",
-                visibleUrl : ""news.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:Va_XShOz_twJ:news.google.com"",
-                title : ""Google News"",
-                titleNoFormatting : ""Google News"",
-                content : ""Aggregated headlines and a search engine of many of the world's news sources.""
-            },
-            
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://groups.google.com/"",
-                url : ""http://groups.google.com/"",
-                visibleUrl : ""groups.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:x2uPD3hfkn0J:groups.google.com"",
-                title : ""Google Groups"",
-                titleNoFormatting : ""Google Groups"",
-                content : ""Enables users to search and browse the Usenet 
-archives which consist of over 700   million messages, and post new 
-comments.""
-            },
-            
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://maps.google.com/"",
-                url : ""http://maps.google.com/"",
-                visibleUrl : ""maps.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:dkf5u2twBXIJ:maps.google.com"",
-                title : ""Google Maps"",
-                titleNoFormatting : ""Google Maps"",
-                content : ""Provides directions, interactive maps, and 
-satellite/aerial imagery of the United   States. Can also search by 
-keyword such as type of business.""
-            }
-        ],
-        
-    adResults:
-        [
-            {
-                GsearchResultClass:""GwebSearch.ad"",
-                title : ""Gartner Symposium/ITxpo"",
-                content1 : ""Meet brilliant Gartner IT analysts"",
-                content2 : ""20-23 May 2007- Barcelona, Spain"",
-                url : 
-""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
-
-                impressionUrl : 
-""http://www.google.com/uds/css/ad-indicator-on.gif?ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB"", 
-
-                unescapedUrl : 
-""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
-
-                visibleUrl : ""www.gartner.com""
-            }
-        ]
-}
-";
-      #endregion
-
-      JObject o = JObject.Parse(json);
-
-      List<JObject> resultObjects = o["results"].Children<JObject>().ToList();
-
-      Assert.AreEqual(32, resultObjects.Properties().Count());
-
-      Assert.AreEqual(32, resultObjects.Cast<JToken>().Values().Count());
-
-      Assert.AreEqual(4, resultObjects.Cast<JToken>().Values("GsearchResultClass").Count());
-
-      Assert.AreEqual(5, o.PropertyValues().Cast<JArray>().Children().Count());
-
-      List<string> resultUrls = o["results"].Children().Values<string>("url").ToList();
-
-      List<string> expectedUrls = new List<string>() { "http://www.google.com/", "http://news.google.com/", "http://groups.google.com/", "http://maps.google.com/" };
-
-      CollectionAssert.AreEqual(expectedUrls, resultUrls);
-
-      List<JToken> descendants = o.Descendants().ToList();
-      Assert.AreEqual(89, descendants.Count);
-    }
-
-    [Test]
-    public void JTokenToString()
-    {
-      string json = @"{
-  CPU: 'Intel',
-  Drives: [
-    'DVD read/writer',
-    ""500 gigabyte hard drive""
-  ]
-}";
-
-      JObject o = JObject.Parse(json);
-
-      Assert.AreEqual(@"{
-  ""CPU"": ""Intel"",
-  ""Drives"": [
-    ""DVD read/writer"",
-    ""500 gigabyte hard drive""
-  ]
-}", o.ToString());
-
-      JArray list = o.Value<JArray>("Drives");
-
-      Assert.AreEqual(@"[
-  ""DVD read/writer"",
-  ""500 gigabyte hard drive""
-]", list.ToString());
-
-      JProperty cpuProperty = o.Property("CPU");
-      Assert.AreEqual(@"""CPU"": ""Intel""", cpuProperty.ToString());
-
-      JProperty drivesProperty = o.Property("Drives");
-      Assert.AreEqual(@"""Drives"": [
-  ""DVD read/writer"",
-  ""500 gigabyte hard drive""
-]", drivesProperty.ToString());
-    }
-
-    [Test]
-    public void JTokenToStringTypes()
-    {
-      string json = @"{""Color"":2,""Establised"":new Date(1264118400000),""Width"":1.1,""Employees"":999,""RoomsPerFloor"":[1,2,3,4,5,6,7,8,9],""Open"":false,""Symbol"":""@"",""Mottos"":[""Hello World"",""öäüÖÄÜ\\'{new Date(12345);}[222]_µ@²³~"",null,"" ""],""Cost"":100980.1,""Escape"":""\r\n\t\f\b?{\\r\\n\""'"",""product"":[{""Name"":""Rocket"",""ExpiryDate"":new Date(949532490000),""Price"":0},{""Name"":""Alien"",""ExpiryDate"":new Date(-62135596800000),""Price"":0}]}";
-
-      JObject o = JObject.Parse(json);
-
-      Assert.AreEqual(@"""Establised"": new Date(
-  1264118400000
-)", o.Property("Establised").ToString());
-      Assert.AreEqual(@"new Date(
-  1264118400000
-)", o.Property("Establised").Value.ToString());
-      Assert.AreEqual(@"""Width"": 1.1", o.Property("Width").ToString());
-      Assert.AreEqual(@"1.1", ((JValue)o.Property("Width").Value).ToString(CultureInfo.InvariantCulture));
-      Assert.AreEqual(@"""Open"": false", o.Property("Open").ToString());
-      Assert.AreEqual(@"False", o.Property("Open").Value.ToString());
-
-      json = @"[null,undefined]";
-
-      JArray a = JArray.Parse(json);
-      Assert.AreEqual(@"[
-  null,
-  undefined
-]", a.ToString());
-      Assert.AreEqual(@"", a.Children().ElementAt(0).ToString());
-      Assert.AreEqual(@"", a.Children().ElementAt(1).ToString());
-    }
-
-    [Test]
-    public void CreateJTokenTree()
-    {
-      JObject o =
-        new JObject(
-          new JProperty("Test1", "Test1Value"),
-          new JProperty("Test2", "Test2Value"),
-          new JProperty("Test3", "Test3Value"),
-          new JProperty("Test4", null)
-        );
-
-      Assert.AreEqual(4, o.Properties().Count());
-
-      Assert.AreEqual(@"{
-  ""Test1"": ""Test1Value"",
-  ""Test2"": ""Test2Value"",
-  ""Test3"": ""Test3Value"",
-  ""Test4"": null
-}", o.ToString());
-
-      JArray a =
-        new JArray(
-          o,
-          new DateTime(2000, 10, 10, 0, 0, 0, DateTimeKind.Utc),
-          55,
-          new JArray(
-            "1",
-            2,
-            3.0,
-            new DateTime(4, 5, 6, 7, 8, 9, DateTimeKind.Utc)
-          ),
-          new JConstructor(
-            "ConstructorName",
-            "param1",
-            2,
-            3.0
-          )
-        );
-
-      Assert.AreEqual(5, a.Count());
-      Assert.AreEqual(@"[
-  {
-    ""Test1"": ""Test1Value"",
-    ""Test2"": ""Test2Value"",
-    ""Test3"": ""Test3Value"",
-    ""Test4"": null
-  },
-  ""2000-10-10T00:00:00Z"",
-  55,
-  [
-    ""1"",
-    2,
-    3.0,
-    ""0004-05-06T07:08:09Z""
-  ],
-  new ConstructorName(
-    ""param1"",
-    2,
-    3.0
-  )
-]", a.ToString());
-    }
-
-    private class Post
-    {
-      public string Title { get; set; }
-      public string Description { get; set; }
-      public string Link { get; set; }
-      public IList<string> Categories { get; set; }
-    }
-
-    private List<Post> GetPosts()
-    {
-      return new List<Post>()
-      {
-        new Post()
-        {
-          Title = "LINQ to JSON beta",
-          Description = "Annoucing LINQ to JSON",
-          Link = "http://james.newtonking.com/projects/json-net.aspx",
-          Categories = new List<string>() { "Json.NET", "LINQ" }
-        },
-        new Post()
-        {
-          Title = "Json.NET 1.3 + New license + Now on CodePlex",
-          Description = "Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex",
-          Link = "http://james.newtonking.com/projects/json-net.aspx",
-          Categories = new List<string>() { "Json.NET", "CodePlex" }
-        }
-      };
-    }
-
-    [Test]
-    public void CreateJTokenTreeNested()
-    {
-      List<Post> posts = GetPosts();
-
-      JObject rss =
-        new JObject(
-          new JProperty("channel",
-            new JObject(
-              new JProperty("title", "James Newton-King"),
-              new JProperty("link", "http://james.newtonking.com"),
-              new JProperty("description", "James Newton-King's blog."),
-              new JProperty("item",
-                new JArray(
-                  from p in posts
-                  orderby p.Title
-                  select new JObject(
-                    new JProperty("title", p.Title),
-                    new JProperty("description", p.Description),
-                    new JProperty("link", p.Link),
-                    new JProperty("category",
-                      new JArray(
-                        from c in p.Categories
-                        select new JValue(c)))))))));
-
-      Console.WriteLine(rss.ToString());
-
-      //{
-      //  "channel": {
-      //    "title": "James Newton-King",
-      //    "link": "http://james.newtonking.com",
-      //    "description": "James Newton-King's blog.",
-      //    "item": [
-      //      {
-      //        "title": "Json.NET 1.3 + New license + Now on CodePlex",
-      //        "description": "Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex",
-      //        "link": "http://james.newtonking.com/projects/json-net.aspx",
-      //        "category": [
-      //          "Json.NET",
-      //          "CodePlex"
-      //        ]
-      //      },
-      //      {
-      //        "title": "LINQ to JSON beta",
-      //        "description": "Annoucing LINQ to JSON",
-      //        "link": "http://james.newtonking.com/projects/json-net.aspx",
-      //        "category": [
-      //          "Json.NET",
-      //          "LINQ"
-      //        ]
-      //      }
-      //    ]
-      //  }
-      //}
-
-      var postTitles =
-        from p in rss["channel"]["item"]
-        select p.Value<string>("title");
-
-      foreach (var item in postTitles)
-      {
-        Console.WriteLine(item);
-      }
-
-      //LINQ to JSON beta
-      //Json.NET 1.3 + New license + Now on CodePlex
-
-      var categories =
-        from c in rss["channel"]["item"].Children()["category"].Values<string>()
-        group c by c into g
-        orderby g.Count() descending
-        select new { Category = g.Key, Count = g.Count() };
-
-      foreach (var c in categories)
-      {
-        Console.WriteLine(c.Category + " - Count: " + c.Count);
-      }
-
-      //Json.NET - Count: 2
-      //LINQ - Count: 1
-      //CodePlex - Count: 1
-    }
-
-    [Test]
-    public void BasicQuerying()
-    {
-      string json = @"{
-                        ""channel"": {
-                          ""title"": ""James Newton-King"",
-                          ""link"": ""http://james.newtonking.com"",
-                          ""description"": ""James Newton-King's blog."",
-                          ""item"": [
-                            {
-                              ""title"": ""Json.NET 1.3 + New license + Now on CodePlex"",
-                              ""description"": ""Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex"",
-                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
-                              ""category"": [
-                                ""Json.NET"",
-                                ""CodePlex""
-                              ]
-                            },
-                            {
-                              ""title"": ""LINQ to JSON beta"",
-                              ""description"": ""Annoucing LINQ to JSON"",
-                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
-                              ""category"": [
-                                ""Json.NET"",
-                                ""LINQ""
-                              ]
-                            }
-                          ]
-                        }
-                      }";
-
-      JObject o = JObject.Parse(json);
-
-      Assert.AreEqual(null, o["purple"]);
-      Assert.AreEqual(null, o.Value<string>("purple"));
-
-      CustomAssert.IsInstanceOfType(typeof(JArray), o["channel"]["item"]);
-
-      Assert.AreEqual(2, o["channel"]["item"].Children()["title"].Count());
-      Assert.AreEqual(0, o["channel"]["item"].Children()["monkey"].Count());
-
-      Assert.AreEqual("Json.NET 1.3 + New license + Now on CodePlex", (string)o["channel"]["item"][0]["title"]);
-
-      CollectionAssert.AreEqual(new string[] { "Json.NET 1.3 + New license + Now on CodePlex", "LINQ to JSON beta" }, o["channel"]["item"].Children().Values<string>("title").ToArray());
-    }
-
-    [Test]
-    public void JObjectIntIndex()
-    {
-      ExceptionAssert.Throws<ArgumentException>("Accessed JObject values with invalid key value: 0. Object property name expected.",
-      () =>
-      {
-        JObject o = new JObject();
-        Assert.AreEqual(null, o[0]);
-      });
-    }
-
-    [Test]
-    public void JArrayStringIndex()
-    {
-      ExceptionAssert.Throws<ArgumentException>(@"Accessed JArray values with invalid key value: ""purple"". Array position index expected.",
-      () =>
-      {
-        JArray a = new JArray();
-        Assert.AreEqual(null, a["purple"]);
-      });
-    }
-
-    [Test]
-    public void JConstructorStringIndex()
-    {
-      ExceptionAssert.Throws<ArgumentException>(@"Accessed JConstructor values with invalid key value: ""purple"". Argument position index expected.",
-      () =>
-      {
-        JConstructor c = new JConstructor("ConstructorValue");
-        Assert.AreEqual(null, c["purple"]);
-      });
-    }
-
-#if !PocketPC && !NET20
-    [Test]
-    public void ToStringJsonConverter()
-    {
-      JObject o =
-        new JObject(
-          new JProperty("Test1", new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc)),
-          new JProperty("Test2", new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0))),
-          new JProperty("Test3", "Test3Value"),
-          new JProperty("Test4", null)
-        );
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Converters.Add(new JavaScriptDateTimeConverter());
-      StringWriter sw = new StringWriter();
-      JsonWriter writer = new JsonTextWriter(sw);
-      writer.Formatting = Formatting.Indented;
-      serializer.Serialize(writer, o);
-
-      string json = sw.ToString();
-
-      Assert.AreEqual(@"{
-  ""Test1"": new Date(
-    971586305000
-  ),
-  ""Test2"": new Date(
-    971546045000
-  ),
-  ""Test3"": ""Test3Value"",
-  ""Test4"": null
-}", json);
-    }
-
-    [Test]
-    public void DateTimeOffset()
-    {
-      List<DateTimeOffset> testDates = new List<DateTimeOffset> {
-        new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)),
-        new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero),
-        new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)),
-        new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(-3.5)),
-      };
-
-      JsonSerializer jsonSerializer = new JsonSerializer();
-
-      JTokenWriter jsonWriter;
-      using (jsonWriter = new JTokenWriter())
-      {
-        jsonSerializer.Serialize(jsonWriter, testDates);
-      }
-
-      Assert.AreEqual(4, jsonWriter.Token.Children().Count());
-    }
-#endif
-
-    [Test]
-    public void FromObject()
-    {
-      List<Post> posts = GetPosts();
-
-      JObject o = JObject.FromObject(new
-      {
-        channel = new
-        {
-          title = "James Newton-King",
-          link = "http://james.newtonking.com",
-          description = "James Newton-King's blog.",
-          item =
-              from p in posts
-              orderby p.Title
-              select new
-              {
-                title = p.Title,
-                description = p.Description,
-                link = p.Link,
-                category = p.Categories
-              }
-        }
-      });
-
-      Console.WriteLine(o.ToString());
-      CustomAssert.IsInstanceOfType(typeof(JObject), o);
-      CustomAssert.IsInstanceOfType(typeof(JObject), o["channel"]);
-      Assert.AreEqual("James Newton-King", (string)o["channel"]["title"]);
-      Assert.AreEqual(2, o["channel"]["item"].Children().Count());
-
-      JArray a = JArray.FromObject(new List<int>() { 0, 1, 2, 3, 4 });
-      CustomAssert.IsInstanceOfType(typeof(JArray), a);
-      Assert.AreEqual(5, a.Count());
-    }
-
-    [Test]
-    public void FromAnonDictionary()
-    {
-      List<Post> posts = GetPosts();
-
-      JObject o = JObject.FromObject(new
-      {
-        channel = new Dictionary<string, object>
-        {
-          { "title", "James Newton-King" },
-          { "link", "http://james.newtonking.com" },
-          { "description", "James Newton-King's blog." },
-          { "item", 
-                  (from p in posts
-                  orderby p.Title
-                  select new
-                  {
-                    title = p.Title,
-                    description = p.Description,
-                    link = p.Link,
-                    category = p.Categories
-                  })
-          }
-        }
-      });
-
-      Console.WriteLine(o.ToString());
-      CustomAssert.IsInstanceOfType(typeof(JObject), o);
-      CustomAssert.IsInstanceOfType(typeof(JObject), o["channel"]);
-      Assert.AreEqual("James Newton-King", (string)o["channel"]["title"]);
-      Assert.AreEqual(2, o["channel"]["item"].Children().Count());
-
-      JArray a = JArray.FromObject(new List<int>() { 0, 1, 2, 3, 4 });
-      CustomAssert.IsInstanceOfType(typeof(JArray), a);
-      Assert.AreEqual(5, a.Count());
-    }
-
-    [Test]
-    public void AsJEnumerable()
-    {
-      JObject o = null;
-      IJEnumerable<JToken> enumerable = null;
-
-      enumerable = o.AsJEnumerable();
-      Assert.IsNull(enumerable);
-    
-      o =
-        new JObject(
-          new JProperty("Test1", new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc)),
-          new JProperty("Test2", "Test2Value"),
-          new JProperty("Test3", null)
-        );
-
-      enumerable = o.AsJEnumerable();
-      Assert.IsNotNull(enumerable);
-      Assert.AreEqual(o, enumerable);
-
-      DateTime d = enumerable["Test1"].Value<DateTime>();
-
-      Assert.AreEqual(new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc), d);
-    }
-
-#if !(NET20 || NET35 || SILVERLIGHT)
-    [Test]
-    public void CovariantIJEnumerable()
-    {
-      IEnumerable<JObject> o = new[]
-        {
-          JObject.FromObject(new {First = 1, Second = 2}),
-          JObject.FromObject(new {First = 1, Second = 2})
-        };
-
-      IJEnumerable<JToken> values = o.Properties();
-      Assert.AreEqual(4, values.Count());
-    }
-#endif
-
-    [Test]
-    public void ChildrenExtension()
-    {
-      string json = @"[
-                        {
-                          ""title"": ""James Newton-King"",
-                          ""link"": ""http://james.newtonking.com"",
-                          ""description"": ""James Newton-King's blog."",
-                          ""item"": [
-                            {
-                              ""title"": ""Json.NET 1.3 + New license + Now on CodePlex"",
-                              ""description"": ""Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex"",
-                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
-                              ""category"": [
-                                ""Json.NET"",
-                                ""CodePlex""
-                              ]
-                            },
-                            {
-                              ""title"": ""LINQ to JSON beta"",
-                              ""description"": ""Annoucing LINQ to JSON"",
-                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
-                              ""category"": [
-                                ""Json.NET"",
-                                ""LINQ""
-                              ]
-                            }
-                          ]
-                        },
-                        {
-                          ""title"": ""James Newton-King"",
-                          ""link"": ""http://james.newtonking.com"",
-                          ""description"": ""James Newton-King's blog."",
-                          ""item"": [
-                            {
-                              ""title"": ""Json.NET 1.3 + New license + Now on CodePlex"",
-                              ""description"": ""Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex"",
-                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
-                              ""category"": [
-                                ""Json.NET"",
-                                ""CodePlex""
-                              ]
-                            },
-                            {
-                              ""title"": ""LINQ to JSON beta"",
-                              ""description"": ""Annoucing LINQ to JSON"",
-                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
-                              ""category"": [
-                                ""Json.NET"",
-                                ""LINQ""
-                              ]
-                            }
-                          ]
-                        }
-                      ]";
-
-      JArray o = JArray.Parse(json);
-
-      Assert.AreEqual(4, o.Children()["item"].Children()["title"].Count());
-      CollectionAssert.AreEqual(new string[]
-        {
-          "Json.NET 1.3 + New license + Now on CodePlex",
-          "LINQ to JSON beta",
-          "Json.NET 1.3 + New license + Now on CodePlex",
-          "LINQ to JSON beta"
-        },
-        o.Children()["item"].Children()["title"].Values<string>().ToArray());
-    }
-
-    public void UriGuidTimeSpanTestClassEmptyTest()
-    {
-      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass();
-      JObject o = JObject.FromObject(c1);
-
-      Assert.AreEqual(@"{
-  ""Guid"": ""00000000-0000-0000-0000-000000000000"",
-  ""NullableGuid"": null,
-  ""TimeSpan"": ""00:00:00"",
-  ""NullableTimeSpan"": null,
-  ""Uri"": null
-}", o.ToString());
-
-      UriGuidTimeSpanTestClass c2 = o.ToObject<UriGuidTimeSpanTestClass>();
-      Assert.AreEqual(c1.Guid, c2.Guid);
-      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
-      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
-      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
-      Assert.AreEqual(c1.Uri, c2.Uri);
-    }
-
-    public void UriGuidTimeSpanTestClassValuesTest()
-    {
-      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass
-      {
-        Guid = new Guid("1924129C-F7E0-40F3-9607-9939C531395A"),
-        NullableGuid = new Guid("9E9F3ADF-E017-4F72-91E0-617EBE85967D"),
-        TimeSpan = TimeSpan.FromDays(1),
-        NullableTimeSpan = TimeSpan.FromHours(1),
-        Uri = new Uri("http://testuri.com")
-      };
-      JObject o = JObject.FromObject(c1);
-
-      Assert.AreEqual(@"{
-  ""Guid"": ""1924129c-f7e0-40f3-9607-9939c531395a"",
-  ""NullableGuid"": ""9e9f3adf-e017-4f72-91e0-617ebe85967d"",
-  ""TimeSpan"": ""1.00:00:00"",
-  ""NullableTimeSpan"": ""01:00:00"",
-  ""Uri"": ""http://testuri.com/""
-}", o.ToString());
-
-      UriGuidTimeSpanTestClass c2 = o.ToObject<UriGuidTimeSpanTestClass>();
-      Assert.AreEqual(c1.Guid, c2.Guid);
-      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
-      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
-      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
-      Assert.AreEqual(c1.Uri, c2.Uri);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+#if !NETFX_CORE
+using System.IO;
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Tests.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using System.IO;
+
+namespace Newtonsoft.Json.Tests.Linq
+{
+  [TestFixture]
+  public class LinqToJsonTest : TestFixtureBase
+  {
+    [Test]
+    public void DoubleValue()
+    {
+      JArray j = JArray.Parse("[-1E+4,100.0e-2]");
+
+      double value = (double)j[0];
+      Assert.AreEqual(-10000d, value);
+
+      value = (double)j[1];
+      Assert.AreEqual(1d, value);
+    }
+
+    [Test]
+    public void Manual()
+    {
+      JArray array = new JArray();
+      JValue text = new JValue("Manual text");
+      JValue date = new JValue(new DateTime(2000, 5, 23));
+
+      array.Add(text);
+      array.Add(date);
+
+      string json = array.ToString();
+      // [
+      //   "Manual text",
+      //   "\/Date(958996800000+1200)\/"
+      // ]
+    }
+
+    [Test]
+    public void LinqToJsonDeserialize()
+    {
+      JObject o = new JObject(
+        new JProperty("Name", "John Smith"),
+        new JProperty("BirthDate", new DateTime(1983, 3, 20))
+        );
+
+      JsonSerializer serializer = new JsonSerializer();
+      Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person));
+
+      // John Smith
+      Console.WriteLine(p.Name);
+    }
+
+    [Test]
+    public void ObjectParse()
+    {
+      string json = @"{
+        CPU: 'Intel',
+        Drives: [
+          'DVD read/writer',
+          ""500 gigabyte hard drive""
+        ]
+      }";
+
+      JObject o = JObject.Parse(json);
+      IList<JProperty> properties = o.Properties().ToList();
+
+      Assert.AreEqual("CPU", properties[0].Name);
+      Assert.AreEqual("Intel", (string)properties[0].Value);
+      Assert.AreEqual("Drives", properties[1].Name);
+
+      JArray list = (JArray)properties[1].Value;
+      Assert.AreEqual(2, list.Children().Count());
+      Assert.AreEqual("DVD read/writer", (string)list.Children().ElementAt(0));
+      Assert.AreEqual("500 gigabyte hard drive", (string)list.Children().ElementAt(1));
+
+      List<object> parameterValues =
+        (from p in o.Properties()
+         where p.Value is JValue
+         select ((JValue)p.Value).Value).ToList();
+
+      Assert.AreEqual(1, parameterValues.Count);
+      Assert.AreEqual("Intel", parameterValues[0]);
+    }
+
+    [Test]
+    public void CreateLongArray()
+    {
+      string json = @"[0,1,2,3,4,5,6,7,8,9]";
+
+      JArray a = JArray.Parse(json);
+      List<int> list = a.Values<int>().ToList();
+
+      List<int> expected = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+
+      CollectionAssert.AreEqual(expected, list);
+    }
+
+    [Test]
+    public void GoogleSearchAPI()
+    {
+      #region GoogleJson
+      string json = @"{
+    results:
+        [
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://www.google.com/"",
+                url : ""http://www.google.com/"",
+                visibleUrl : ""www.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:zhool8dxBV4J:www.google.com"",
+                title : ""Google"",
+                titleNoFormatting : ""Google"",
+                content : ""Enables users to search the Web, Usenet, and 
+images. Features include PageRank,   caching and translation of 
+results, and an option to find similar pages.""
+            },
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://news.google.com/"",
+                url : ""http://news.google.com/"",
+                visibleUrl : ""news.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:Va_XShOz_twJ:news.google.com"",
+                title : ""Google News"",
+                titleNoFormatting : ""Google News"",
+                content : ""Aggregated headlines and a search engine of many of the world's news sources.""
+            },
+            
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://groups.google.com/"",
+                url : ""http://groups.google.com/"",
+                visibleUrl : ""groups.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:x2uPD3hfkn0J:groups.google.com"",
+                title : ""Google Groups"",
+                titleNoFormatting : ""Google Groups"",
+                content : ""Enables users to search and browse the Usenet 
+archives which consist of over 700   million messages, and post new 
+comments.""
+            },
+            
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://maps.google.com/"",
+                url : ""http://maps.google.com/"",
+                visibleUrl : ""maps.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:dkf5u2twBXIJ:maps.google.com"",
+                title : ""Google Maps"",
+                titleNoFormatting : ""Google Maps"",
+                content : ""Provides directions, interactive maps, and 
+satellite/aerial imagery of the United   States. Can also search by 
+keyword such as type of business.""
+            }
+        ],
+        
+    adResults:
+        [
+            {
+                GsearchResultClass:""GwebSearch.ad"",
+                title : ""Gartner Symposium/ITxpo"",
+                content1 : ""Meet brilliant Gartner IT analysts"",
+                content2 : ""20-23 May 2007- Barcelona, Spain"",
+                url : 
+""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
+
+                impressionUrl : 
+""http://www.google.com/uds/css/ad-indicator-on.gif?ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB"", 
+
+                unescapedUrl : 
+""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
+
+                visibleUrl : ""www.gartner.com""
+            }
+        ]
+}
+";
+      #endregion
+
+      JObject o = JObject.Parse(json);
+
+      List<JObject> resultObjects = o["results"].Children<JObject>().ToList();
+
+      Assert.AreEqual(32, resultObjects.Properties().Count());
+
+      Assert.AreEqual(32, resultObjects.Cast<JToken>().Values().Count());
+
+      Assert.AreEqual(4, resultObjects.Cast<JToken>().Values("GsearchResultClass").Count());
+
+      Assert.AreEqual(5, o.PropertyValues().Cast<JArray>().Children().Count());
+
+      List<string> resultUrls = o["results"].Children().Values<string>("url").ToList();
+
+      List<string> expectedUrls = new List<string>() { "http://www.google.com/", "http://news.google.com/", "http://groups.google.com/", "http://maps.google.com/" };
+
+      CollectionAssert.AreEqual(expectedUrls, resultUrls);
+
+      List<JToken> descendants = o.Descendants().ToList();
+      Assert.AreEqual(89, descendants.Count);
+    }
+
+    [Test]
+    public void JTokenToString()
+    {
+      string json = @"{
+  CPU: 'Intel',
+  Drives: [
+    'DVD read/writer',
+    ""500 gigabyte hard drive""
+  ]
+}";
+
+      JObject o = JObject.Parse(json);
+
+      Assert.AreEqual(@"{
+  ""CPU"": ""Intel"",
+  ""Drives"": [
+    ""DVD read/writer"",
+    ""500 gigabyte hard drive""
+  ]
+}", o.ToString());
+
+      JArray list = o.Value<JArray>("Drives");
+
+      Assert.AreEqual(@"[
+  ""DVD read/writer"",
+  ""500 gigabyte hard drive""
+]", list.ToString());
+
+      JProperty cpuProperty = o.Property("CPU");
+      Assert.AreEqual(@"""CPU"": ""Intel""", cpuProperty.ToString());
+
+      JProperty drivesProperty = o.Property("Drives");
+      Assert.AreEqual(@"""Drives"": [
+  ""DVD read/writer"",
+  ""500 gigabyte hard drive""
+]", drivesProperty.ToString());
+    }
+
+    [Test]
+    public void JTokenToStringTypes()
+    {
+      string json = @"{""Color"":2,""Establised"":new Date(1264118400000),""Width"":1.1,""Employees"":999,""RoomsPerFloor"":[1,2,3,4,5,6,7,8,9],""Open"":false,""Symbol"":""@"",""Mottos"":[""Hello World"",""öäüÖÄÜ\\'{new Date(12345);}[222]_µ@²³~"",null,"" ""],""Cost"":100980.1,""Escape"":""\r\n\t\f\b?{\\r\\n\""'"",""product"":[{""Name"":""Rocket"",""ExpiryDate"":new Date(949532490000),""Price"":0},{""Name"":""Alien"",""ExpiryDate"":new Date(-62135596800000),""Price"":0}]}";
+
+      JObject o = JObject.Parse(json);
+
+      Assert.AreEqual(@"""Establised"": new Date(
+  1264118400000
+)", o.Property("Establised").ToString());
+      Assert.AreEqual(@"new Date(
+  1264118400000
+)", o.Property("Establised").Value.ToString());
+      Assert.AreEqual(@"""Width"": 1.1", o.Property("Width").ToString());
+      Assert.AreEqual(@"1.1", ((JValue)o.Property("Width").Value).ToString(CultureInfo.InvariantCulture));
+      Assert.AreEqual(@"""Open"": false", o.Property("Open").ToString());
+      Assert.AreEqual(@"False", o.Property("Open").Value.ToString());
+
+      json = @"[null,undefined]";
+
+      JArray a = JArray.Parse(json);
+      Assert.AreEqual(@"[
+  null,
+  undefined
+]", a.ToString());
+      Assert.AreEqual(@"", a.Children().ElementAt(0).ToString());
+      Assert.AreEqual(@"", a.Children().ElementAt(1).ToString());
+    }
+
+    [Test]
+    public void CreateJTokenTree()
+    {
+      JObject o =
+        new JObject(
+          new JProperty("Test1", "Test1Value"),
+          new JProperty("Test2", "Test2Value"),
+          new JProperty("Test3", "Test3Value"),
+          new JProperty("Test4", null)
+        );
+
+      Assert.AreEqual(4, o.Properties().Count());
+
+      Assert.AreEqual(@"{
+  ""Test1"": ""Test1Value"",
+  ""Test2"": ""Test2Value"",
+  ""Test3"": ""Test3Value"",
+  ""Test4"": null
+}", o.ToString());
+
+      JArray a =
+        new JArray(
+          o,
+          new DateTime(2000, 10, 10, 0, 0, 0, DateTimeKind.Utc),
+          55,
+          new JArray(
+            "1",
+            2,
+            3.0,
+            new DateTime(4, 5, 6, 7, 8, 9, DateTimeKind.Utc)
+          ),
+          new JConstructor(
+            "ConstructorName",
+            "param1",
+            2,
+            3.0
+          )
+        );
+
+      Assert.AreEqual(5, a.Count());
+      Assert.AreEqual(@"[
+  {
+    ""Test1"": ""Test1Value"",
+    ""Test2"": ""Test2Value"",
+    ""Test3"": ""Test3Value"",
+    ""Test4"": null
+  },
+  ""2000-10-10T00:00:00Z"",
+  55,
+  [
+    ""1"",
+    2,
+    3.0,
+    ""0004-05-06T07:08:09Z""
+  ],
+  new ConstructorName(
+    ""param1"",
+    2,
+    3.0
+  )
+]", a.ToString());
+    }
+
+    private class Post
+    {
+      public string Title { get; set; }
+      public string Description { get; set; }
+      public string Link { get; set; }
+      public IList<string> Categories { get; set; }
+    }
+
+    private List<Post> GetPosts()
+    {
+      return new List<Post>()
+      {
+        new Post()
+        {
+          Title = "LINQ to JSON beta",
+          Description = "Annoucing LINQ to JSON",
+          Link = "http://james.newtonking.com/projects/json-net.aspx",
+          Categories = new List<string>() { "Json.NET", "LINQ" }
+        },
+        new Post()
+        {
+          Title = "Json.NET 1.3 + New license + Now on CodePlex",
+          Description = "Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex",
+          Link = "http://james.newtonking.com/projects/json-net.aspx",
+          Categories = new List<string>() { "Json.NET", "CodePlex" }
+        }
+      };
+    }
+
+    [Test]
+    public void CreateJTokenTreeNested()
+    {
+      List<Post> posts = GetPosts();
+
+      JObject rss =
+        new JObject(
+          new JProperty("channel",
+            new JObject(
+              new JProperty("title", "James Newton-King"),
+              new JProperty("link", "http://james.newtonking.com"),
+              new JProperty("description", "James Newton-King's blog."),
+              new JProperty("item",
+                new JArray(
+                  from p in posts
+                  orderby p.Title
+                  select new JObject(
+                    new JProperty("title", p.Title),
+                    new JProperty("description", p.Description),
+                    new JProperty("link", p.Link),
+                    new JProperty("category",
+                      new JArray(
+                        from c in p.Categories
+                        select new JValue(c)))))))));
+
+      Console.WriteLine(rss.ToString());
+
+      //{
+      //  "channel": {
+      //    "title": "James Newton-King",
+      //    "link": "http://james.newtonking.com",
+      //    "description": "James Newton-King's blog.",
+      //    "item": [
+      //      {
+      //        "title": "Json.NET 1.3 + New license + Now on CodePlex",
+      //        "description": "Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex",
+      //        "link": "http://james.newtonking.com/projects/json-net.aspx",
+      //        "category": [
+      //          "Json.NET",
+      //          "CodePlex"
+      //        ]
+      //      },
+      //      {
+      //        "title": "LINQ to JSON beta",
+      //        "description": "Annoucing LINQ to JSON",
+      //        "link": "http://james.newtonking.com/projects/json-net.aspx",
+      //        "category": [
+      //          "Json.NET",
+      //          "LINQ"
+      //        ]
+      //      }
+      //    ]
+      //  }
+      //}
+
+      var postTitles =
+        from p in rss["channel"]["item"]
+        select p.Value<string>("title");
+
+      foreach (var item in postTitles)
+      {
+        Console.WriteLine(item);
+      }
+
+      //LINQ to JSON beta
+      //Json.NET 1.3 + New license + Now on CodePlex
+
+      var categories =
+        from c in rss["channel"]["item"].Children()["category"].Values<string>()
+        group c by c into g
+        orderby g.Count() descending
+        select new { Category = g.Key, Count = g.Count() };
+
+      foreach (var c in categories)
+      {
+        Console.WriteLine(c.Category + " - Count: " + c.Count);
+      }
+
+      //Json.NET - Count: 2
+      //LINQ - Count: 1
+      //CodePlex - Count: 1
+    }
+
+    [Test]
+    public void BasicQuerying()
+    {
+      string json = @"{
+                        ""channel"": {
+                          ""title"": ""James Newton-King"",
+                          ""link"": ""http://james.newtonking.com"",
+                          ""description"": ""James Newton-King's blog."",
+                          ""item"": [
+                            {
+                              ""title"": ""Json.NET 1.3 + New license + Now on CodePlex"",
+                              ""description"": ""Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex"",
+                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
+                              ""category"": [
+                                ""Json.NET"",
+                                ""CodePlex""
+                              ]
+                            },
+                            {
+                              ""title"": ""LINQ to JSON beta"",
+                              ""description"": ""Annoucing LINQ to JSON"",
+                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
+                              ""category"": [
+                                ""Json.NET"",
+                                ""LINQ""
+                              ]
+                            }
+                          ]
+                        }
+                      }";
+
+      JObject o = JObject.Parse(json);
+
+      Assert.AreEqual(null, o["purple"]);
+      Assert.AreEqual(null, o.Value<string>("purple"));
+
+      CustomAssert.IsInstanceOfType(typeof(JArray), o["channel"]["item"]);
+
+      Assert.AreEqual(2, o["channel"]["item"].Children()["title"].Count());
+      Assert.AreEqual(0, o["channel"]["item"].Children()["monkey"].Count());
+
+      Assert.AreEqual("Json.NET 1.3 + New license + Now on CodePlex", (string)o["channel"]["item"][0]["title"]);
+
+      CollectionAssert.AreEqual(new string[] { "Json.NET 1.3 + New license + Now on CodePlex", "LINQ to JSON beta" }, o["channel"]["item"].Children().Values<string>("title").ToArray());
+    }
+
+    [Test]
+    public void JObjectIntIndex()
+    {
+      ExceptionAssert.Throws<ArgumentException>("Accessed JObject values with invalid key value: 0. Object property name expected.",
+      () =>
+      {
+        JObject o = new JObject();
+        Assert.AreEqual(null, o[0]);
+      });
+    }
+
+    [Test]
+    public void JArrayStringIndex()
+    {
+      ExceptionAssert.Throws<ArgumentException>(@"Accessed JArray values with invalid key value: ""purple"". Array position index expected.",
+      () =>
+      {
+        JArray a = new JArray();
+        Assert.AreEqual(null, a["purple"]);
+      });
+    }
+
+    [Test]
+    public void JConstructorStringIndex()
+    {
+      ExceptionAssert.Throws<ArgumentException>(@"Accessed JConstructor values with invalid key value: ""purple"". Argument position index expected.",
+      () =>
+      {
+        JConstructor c = new JConstructor("ConstructorValue");
+        Assert.AreEqual(null, c["purple"]);
+      });
+    }
+
+#if !PocketPC && !NET20
+    [Test]
+    public void ToStringJsonConverter()
+    {
+      JObject o =
+        new JObject(
+          new JProperty("Test1", new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc)),
+          new JProperty("Test2", new DateTimeOffset(2000, 10, 15, 5, 5, 5, new TimeSpan(11, 11, 0))),
+          new JProperty("Test3", "Test3Value"),
+          new JProperty("Test4", null)
+        );
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Converters.Add(new JavaScriptDateTimeConverter());
+      StringWriter sw = new StringWriter();
+      JsonWriter writer = new JsonTextWriter(sw);
+      writer.Formatting = Formatting.Indented;
+      serializer.Serialize(writer, o);
+
+      string json = sw.ToString();
+
+      Assert.AreEqual(@"{
+  ""Test1"": new Date(
+    971586305000
+  ),
+  ""Test2"": new Date(
+    971546045000
+  ),
+  ""Test3"": ""Test3Value"",
+  ""Test4"": null
+}", json);
+    }
+
+    [Test]
+    public void DateTimeOffset()
+    {
+      List<DateTimeOffset> testDates = new List<DateTimeOffset> {
+        new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)),
+        new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero),
+        new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)),
+        new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(-3.5)),
+      };
+
+      JsonSerializer jsonSerializer = new JsonSerializer();
+
+      JTokenWriter jsonWriter;
+      using (jsonWriter = new JTokenWriter())
+      {
+        jsonSerializer.Serialize(jsonWriter, testDates);
+      }
+
+      Assert.AreEqual(4, jsonWriter.Token.Children().Count());
+    }
+#endif
+
+    [Test]
+    public void FromObject()
+    {
+      List<Post> posts = GetPosts();
+
+      JObject o = JObject.FromObject(new
+      {
+        channel = new
+        {
+          title = "James Newton-King",
+          link = "http://james.newtonking.com",
+          description = "James Newton-King's blog.",
+          item =
+              from p in posts
+              orderby p.Title
+              select new
+              {
+                title = p.Title,
+                description = p.Description,
+                link = p.Link,
+                category = p.Categories
+              }
+        }
+      });
+
+      Console.WriteLine(o.ToString());
+      CustomAssert.IsInstanceOfType(typeof(JObject), o);
+      CustomAssert.IsInstanceOfType(typeof(JObject), o["channel"]);
+      Assert.AreEqual("James Newton-King", (string)o["channel"]["title"]);
+      Assert.AreEqual(2, o["channel"]["item"].Children().Count());
+
+      JArray a = JArray.FromObject(new List<int>() { 0, 1, 2, 3, 4 });
+      CustomAssert.IsInstanceOfType(typeof(JArray), a);
+      Assert.AreEqual(5, a.Count());
+    }
+
+    [Test]
+    public void FromAnonDictionary()
+    {
+      List<Post> posts = GetPosts();
+
+      JObject o = JObject.FromObject(new
+      {
+        channel = new Dictionary<string, object>
+        {
+          { "title", "James Newton-King" },
+          { "link", "http://james.newtonking.com" },
+          { "description", "James Newton-King's blog." },
+          { "item", 
+                  (from p in posts
+                  orderby p.Title
+                  select new
+                  {
+                    title = p.Title,
+                    description = p.Description,
+                    link = p.Link,
+                    category = p.Categories
+                  })
+          }
+        }
+      });
+
+      Console.WriteLine(o.ToString());
+      CustomAssert.IsInstanceOfType(typeof(JObject), o);
+      CustomAssert.IsInstanceOfType(typeof(JObject), o["channel"]);
+      Assert.AreEqual("James Newton-King", (string)o["channel"]["title"]);
+      Assert.AreEqual(2, o["channel"]["item"].Children().Count());
+
+      JArray a = JArray.FromObject(new List<int>() { 0, 1, 2, 3, 4 });
+      CustomAssert.IsInstanceOfType(typeof(JArray), a);
+      Assert.AreEqual(5, a.Count());
+    }
+
+    [Test]
+    public void AsJEnumerable()
+    {
+      JObject o = null;
+      IJEnumerable<JToken> enumerable = null;
+
+      enumerable = o.AsJEnumerable();
+      Assert.IsNull(enumerable);
+    
+      o =
+        new JObject(
+          new JProperty("Test1", new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc)),
+          new JProperty("Test2", "Test2Value"),
+          new JProperty("Test3", null)
+        );
+
+      enumerable = o.AsJEnumerable();
+      Assert.IsNotNull(enumerable);
+      Assert.AreEqual(o, enumerable);
+
+      DateTime d = enumerable["Test1"].Value<DateTime>();
+
+      Assert.AreEqual(new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc), d);
+    }
+
+#if !(NET20 || NET35 || SILVERLIGHT)
+    [Test]
+    public void CovariantIJEnumerable()
+    {
+      IEnumerable<JObject> o = new[]
+        {
+          JObject.FromObject(new {First = 1, Second = 2}),
+          JObject.FromObject(new {First = 1, Second = 2})
+        };
+
+      IJEnumerable<JToken> values = o.Properties();
+      Assert.AreEqual(4, values.Count());
+    }
+#endif
+
+    [Test]
+    public void ChildrenExtension()
+    {
+      string json = @"[
+                        {
+                          ""title"": ""James Newton-King"",
+                          ""link"": ""http://james.newtonking.com"",
+                          ""description"": ""James Newton-King's blog."",
+                          ""item"": [
+                            {
+                              ""title"": ""Json.NET 1.3 + New license + Now on CodePlex"",
+                              ""description"": ""Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex"",
+                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
+                              ""category"": [
+                                ""Json.NET"",
+                                ""CodePlex""
+                              ]
+                            },
+                            {
+                              ""title"": ""LINQ to JSON beta"",
+                              ""description"": ""Annoucing LINQ to JSON"",
+                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
+                              ""category"": [
+                                ""Json.NET"",
+                                ""LINQ""
+                              ]
+                            }
+                          ]
+                        },
+                        {
+                          ""title"": ""James Newton-King"",
+                          ""link"": ""http://james.newtonking.com"",
+                          ""description"": ""James Newton-King's blog."",
+                          ""item"": [
+                            {
+                              ""title"": ""Json.NET 1.3 + New license + Now on CodePlex"",
+                              ""description"": ""Annoucing the release of Json.NET 1.3, the MIT license and the source being available on CodePlex"",
+                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
+                              ""category"": [
+                                ""Json.NET"",
+                                ""CodePlex""
+                              ]
+                            },
+                            {
+                              ""title"": ""LINQ to JSON beta"",
+                              ""description"": ""Annoucing LINQ to JSON"",
+                              ""link"": ""http://james.newtonking.com/projects/json-net.aspx"",
+                              ""category"": [
+                                ""Json.NET"",
+                                ""LINQ""
+                              ]
+                            }
+                          ]
+                        }
+                      ]";
+
+      JArray o = JArray.Parse(json);
+
+      Assert.AreEqual(4, o.Children()["item"].Children()["title"].Count());
+      CollectionAssert.AreEqual(new string[]
+        {
+          "Json.NET 1.3 + New license + Now on CodePlex",
+          "LINQ to JSON beta",
+          "Json.NET 1.3 + New license + Now on CodePlex",
+          "LINQ to JSON beta"
+        },
+        o.Children()["item"].Children()["title"].Values<string>().ToArray());
+    }
+
+    public void UriGuidTimeSpanTestClassEmptyTest()
+    {
+      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass();
+      JObject o = JObject.FromObject(c1);
+
+      Assert.AreEqual(@"{
+  ""Guid"": ""00000000-0000-0000-0000-000000000000"",
+  ""NullableGuid"": null,
+  ""TimeSpan"": ""00:00:00"",
+  ""NullableTimeSpan"": null,
+  ""Uri"": null
+}", o.ToString());
+
+      UriGuidTimeSpanTestClass c2 = o.ToObject<UriGuidTimeSpanTestClass>();
+      Assert.AreEqual(c1.Guid, c2.Guid);
+      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
+      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
+      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
+      Assert.AreEqual(c1.Uri, c2.Uri);
+    }
+
+    public void UriGuidTimeSpanTestClassValuesTest()
+    {
+      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass
+      {
+        Guid = new Guid("1924129C-F7E0-40F3-9607-9939C531395A"),
+        NullableGuid = new Guid("9E9F3ADF-E017-4F72-91E0-617EBE85967D"),
+        TimeSpan = TimeSpan.FromDays(1),
+        NullableTimeSpan = TimeSpan.FromHours(1),
+        Uri = new Uri("http://testuri.com")
+      };
+      JObject o = JObject.FromObject(c1);
+
+      Assert.AreEqual(@"{
+  ""Guid"": ""1924129c-f7e0-40f3-9607-9939c531395a"",
+  ""NullableGuid"": ""9e9f3adf-e017-4f72-91e0-617ebe85967d"",
+  ""TimeSpan"": ""1.00:00:00"",
+  ""NullableTimeSpan"": ""01:00:00"",
+  ""Uri"": ""http://testuri.com/""
+}", o.ToString());
+
+      UriGuidTimeSpanTestClass c2 = o.ToObject<UriGuidTimeSpanTestClass>();
+      Assert.AreEqual(c1.Guid, c2.Guid);
+      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
+      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
+      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
+      Assert.AreEqual(c1.Uri, c2.Uri);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/Department.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/Department.cs
@@ -1,18 +1,18 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Data.Linq;
-using System.Linq;
-using System.Text;
-
-namespace Newtonsoft.Json.Tests.LinqToSql
-{
-  [MetadataType(typeof(DepartmentMetadata))]
-  public partial class Department
-  {
-    [JsonConverter(typeof(DepartmentConverter))]
-    public class DepartmentMetadata
-    {
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Data.Linq;
+using System.Linq;
+using System.Text;
+
+namespace Newtonsoft.Json.Tests.LinqToSql
+{
+  [MetadataType(typeof(DepartmentMetadata))]
+  public partial class Department
+  {
+    [JsonConverter(typeof(DepartmentConverter))]
+    public class DepartmentMetadata
+    {
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/DepartmentConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/DepartmentConverter.cs
@@ -1,38 +1,38 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.LinqToSql
-{
-  public class DepartmentConverter : JsonConverter
-  {
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      Department department = (Department)value;
-
-      JObject o = new JObject();
-      o["DepartmentId"] = new JValue(department.DepartmentId.ToString());
-      o["Name"] = new JValue(new string(department.Name.Reverse().ToArray()));
-
-      o.WriteTo(writer);
-    }
-
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      JObject o = JObject.Load(reader);
-
-      Department department = new Department();
-      department.DepartmentId = new Guid((string)o["DepartmentId"]);
-      department.Name = new string(((string) o["Name"]).Reverse().ToArray());
-
-      return department;
-    }
-
-    public override bool CanConvert(Type objectType)
-    {
-      return (objectType == typeof (Department));
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.LinqToSql
+{
+  public class DepartmentConverter : JsonConverter
+  {
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      Department department = (Department)value;
+
+      JObject o = new JObject();
+      o["DepartmentId"] = new JValue(department.DepartmentId.ToString());
+      o["Name"] = new JValue(new string(department.Name.Reverse().ToArray()));
+
+      o.WriteTo(writer);
+    }
+
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      JObject o = JObject.Load(reader);
+
+      Department department = new Department();
+      department.DepartmentId = new Guid((string)o["DepartmentId"]);
+      department.Name = new string(((string) o["Name"]).Reverse().ToArray());
+
+      return department;
+    }
+
+    public override bool CanConvert(Type objectType)
+    {
+      return (objectType == typeof (Department));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/GuidByteArrayConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/GuidByteArrayConverter.cs
@@ -1,28 +1,28 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Newtonsoft.Json.Tests.LinqToSql
-{
-  public class GuidByteArrayConverter : JsonConverter
-  {
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      Guid guid = (Guid) value;
-      writer.WriteValue(Convert.ToBase64String(guid.ToByteArray()));
-    }
-
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      string encodedData = (string) reader.Value;
-      byte[] data = Convert.FromBase64String(encodedData);
-      return new Guid(data);
-    }
-
-    public override bool CanConvert(Type objectType)
-    {
-      return (objectType == typeof (Guid));
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Newtonsoft.Json.Tests.LinqToSql
+{
+  public class GuidByteArrayConverter : JsonConverter
+  {
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      Guid guid = (Guid) value;
+      writer.WriteValue(Convert.ToBase64String(guid.ToByteArray()));
+    }
+
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      string encodedData = (string) reader.Value;
+      byte[] data = Convert.FromBase64String(encodedData);
+      return new Guid(data);
+    }
+
+    public override bool CanConvert(Type objectType)
+    {
+      return (objectType == typeof (Guid));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClasses.dbml
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClasses.dbml
@@ -1,35 +1,35 @@
-﻿<?xml version="1.0" encoding="utf-8"?><Database EntityNamespace="Newtonsoft.Json.Tests.LinqToSql" ContextNamespace="Newtonsoft.Json.Tests.LinqToSql" Class="LinqToSqlClassesDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
-  <Table Name="" Member="Persons">
-    <Type Name="Person">
-      <Column Name="FirstName" Type="System.String" CanBeNull="false" />
-      <Column Name="LastName" Type="System.String" CanBeNull="false" />
-      <Column Name="PersonId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
-      <Column Name="DepartmentId" Type="System.Guid" CanBeNull="false" />
-      <Association Name="Person_PersonRole" Member="PersonRoles" ThisKey="PersonId" OtherKey="PersonId" Type="PersonRole" />
-      <Association Name="Department_Person" Member="Department" ThisKey="DepartmentId" OtherKey="DepartmentId" Type="Department" IsForeignKey="true" />
-    </Type>
-  </Table>
-  <Table Name="" Member="Roles">
-    <Type Name="Role">
-      <Column Name="Name" Type="System.String" CanBeNull="false" />
-      <Column Name="RoleId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
-      <Association Name="Role_PersonRole" Member="PersonRoles" ThisKey="RoleId" OtherKey="RoleId" Type="PersonRole" />
-    </Type>
-  </Table>
-  <Table Name="" Member="PersonRoles">
-    <Type Name="PersonRole">
-      <Column Name="PersonId" Type="System.Guid" CanBeNull="false" />
-      <Column Name="RoleId" Type="System.Guid" CanBeNull="false" />
-      <Column Name="PersonRoleId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
-      <Association Name="Person_PersonRole" Member="Person" ThisKey="PersonId" OtherKey="PersonId" Type="Person" IsForeignKey="true" />
-      <Association Name="Role_PersonRole" Member="Role" ThisKey="RoleId" OtherKey="RoleId" Type="Role" IsForeignKey="true" />
-    </Type>
-  </Table>
-  <Table Name="" Member="Departments">
-    <Type Name="Department">
-      <Column Name="DepartmentId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
-      <Column Name="Name" Type="System.String" CanBeNull="false" />
-      <Association Name="Department_Person" Member="Persons" ThisKey="DepartmentId" OtherKey="DepartmentId" Type="Person" />
-    </Type>
-  </Table>
+﻿<?xml version="1.0" encoding="utf-8"?><Database EntityNamespace="Newtonsoft.Json.Tests.LinqToSql" ContextNamespace="Newtonsoft.Json.Tests.LinqToSql" Class="LinqToSqlClassesDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
+  <Table Name="" Member="Persons">
+    <Type Name="Person">
+      <Column Name="FirstName" Type="System.String" CanBeNull="false" />
+      <Column Name="LastName" Type="System.String" CanBeNull="false" />
+      <Column Name="PersonId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="DepartmentId" Type="System.Guid" CanBeNull="false" />
+      <Association Name="Person_PersonRole" Member="PersonRoles" ThisKey="PersonId" OtherKey="PersonId" Type="PersonRole" />
+      <Association Name="Department_Person" Member="Department" ThisKey="DepartmentId" OtherKey="DepartmentId" Type="Department" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="" Member="Roles">
+    <Type Name="Role">
+      <Column Name="Name" Type="System.String" CanBeNull="false" />
+      <Column Name="RoleId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="Role_PersonRole" Member="PersonRoles" ThisKey="RoleId" OtherKey="RoleId" Type="PersonRole" />
+    </Type>
+  </Table>
+  <Table Name="" Member="PersonRoles">
+    <Type Name="PersonRole">
+      <Column Name="PersonId" Type="System.Guid" CanBeNull="false" />
+      <Column Name="RoleId" Type="System.Guid" CanBeNull="false" />
+      <Column Name="PersonRoleId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
+      <Association Name="Person_PersonRole" Member="Person" ThisKey="PersonId" OtherKey="PersonId" Type="Person" IsForeignKey="true" />
+      <Association Name="Role_PersonRole" Member="Role" ThisKey="RoleId" OtherKey="RoleId" Type="Role" IsForeignKey="true" />
+    </Type>
+  </Table>
+  <Table Name="" Member="Departments">
+    <Type Name="Department">
+      <Column Name="DepartmentId" Type="System.Guid" IsPrimaryKey="true" CanBeNull="false" />
+      <Column Name="Name" Type="System.String" CanBeNull="false" />
+      <Association Name="Department_Person" Member="Persons" ThisKey="DepartmentId" OtherKey="DepartmentId" Type="Person" />
+    </Type>
+  </Table>
 </Database>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClasses.dbml.layout
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClasses.dbml.layout
@@ -1,51 +1,51 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 11, 8.5" name="LinqToSqlClasses">
-  <DataContextMoniker Name="/LinqToSqlClassesDataContext" />
-  <nestedChildShapes>
-    <classShape Id="be91ec15-4a64-4976-9358-2e01309ef584" absoluteBounds="0.875, 1.875, 2, 1.5785953776041666">
-      <DataClassMoniker Name="/LinqToSqlClassesDataContext/Person" />
-      <nestedChildShapes>
-        <elementListCompartment Id="e16e186c-b29e-45ca-a2ab-93cb3de05143" absoluteBounds="0.8899999999999999, 2.335, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="b1b861bb-382c-4c65-bdb1-7a3e2df873a2" absoluteBounds="3.625, 4.625, 2, 1.1939925130208333">
-      <DataClassMoniker Name="/LinqToSqlClassesDataContext/Role" />
-      <nestedChildShapes>
-        <elementListCompartment Id="11d870c0-0ec3-4fba-bb69-43a96fa05670" absoluteBounds="3.6399999999999997, 5.085, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <classShape Id="1eb138a4-9f12-4a20-b6b7-d1e23984b857" absoluteBounds="3.75, 2.25, 2, 1.3862939453125">
-      <DataClassMoniker Name="/LinqToSqlClassesDataContext/PersonRole" />
-      <nestedChildShapes>
-        <elementListCompartment Id="6865be45-c748-47ff-be37-534064fc2e80" absoluteBounds="3.7649999999999997, 2.71, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(2.875 : 2.85179768880208); (3.75 : 2.85179768880208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
-      <AssociationMoniker Name="/LinqToSqlClassesDataContext/Person/Person_PersonRole" />
-      <nodes>
-        <classShapeMoniker Id="be91ec15-4a64-4976-9358-2e01309ef584" />
-        <classShapeMoniker Id="1eb138a4-9f12-4a20-b6b7-d1e23984b857" />
-      </nodes>
-    </associationConnector>
-    <associationConnector edgePoints="[(4.6875 : 4.625); (4.6875 : 3.6362939453125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
-      <AssociationMoniker Name="/LinqToSqlClassesDataContext/Role/Role_PersonRole" />
-      <nodes>
-        <classShapeMoniker Id="b1b861bb-382c-4c65-bdb1-7a3e2df873a2" />
-        <classShapeMoniker Id="1eb138a4-9f12-4a20-b6b7-d1e23984b857" />
-      </nodes>
-    </associationConnector>
-    <classShape Id="b96fa86b-7f23-489f-8eb2-44ca2af1551b" absoluteBounds="0.875, 4.5, 2, 1.1939925130208327">
-      <DataClassMoniker Name="/LinqToSqlClassesDataContext/Department" />
-      <nestedChildShapes>
-        <elementListCompartment Id="46cdd558-04c5-4c77-82ce-fe92cda427fe" absoluteBounds="0.89, 4.96, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
-      </nestedChildShapes>
-    </classShape>
-    <associationConnector edgePoints="[(1.875 : 4.5); (1.875 : 3.45359537760417)]" fixedFrom="NotFixed" fixedTo="NotFixed">
-      <AssociationMoniker Name="/LinqToSqlClassesDataContext/Department/Department_Person" />
-      <nodes>
-        <classShapeMoniker Id="b96fa86b-7f23-489f-8eb2-44ca2af1551b" />
-        <classShapeMoniker Id="be91ec15-4a64-4976-9358-2e01309ef584" />
-      </nodes>
-    </associationConnector>
-  </nestedChildShapes>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 11, 8.5" name="LinqToSqlClasses">
+  <DataContextMoniker Name="/LinqToSqlClassesDataContext" />
+  <nestedChildShapes>
+    <classShape Id="be91ec15-4a64-4976-9358-2e01309ef584" absoluteBounds="0.875, 1.875, 2, 1.5785953776041666">
+      <DataClassMoniker Name="/LinqToSqlClassesDataContext/Person" />
+      <nestedChildShapes>
+        <elementListCompartment Id="e16e186c-b29e-45ca-a2ab-93cb3de05143" absoluteBounds="0.8899999999999999, 2.335, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="b1b861bb-382c-4c65-bdb1-7a3e2df873a2" absoluteBounds="3.625, 4.625, 2, 1.1939925130208333">
+      <DataClassMoniker Name="/LinqToSqlClassesDataContext/Role" />
+      <nestedChildShapes>
+        <elementListCompartment Id="11d870c0-0ec3-4fba-bb69-43a96fa05670" absoluteBounds="3.6399999999999997, 5.085, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <classShape Id="1eb138a4-9f12-4a20-b6b7-d1e23984b857" absoluteBounds="3.75, 2.25, 2, 1.3862939453125">
+      <DataClassMoniker Name="/LinqToSqlClassesDataContext/PersonRole" />
+      <nestedChildShapes>
+        <elementListCompartment Id="6865be45-c748-47ff-be37-534064fc2e80" absoluteBounds="3.7649999999999997, 2.71, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(2.875 : 2.85179768880208); (3.75 : 2.85179768880208)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/LinqToSqlClassesDataContext/Person/Person_PersonRole" />
+      <nodes>
+        <classShapeMoniker Id="be91ec15-4a64-4976-9358-2e01309ef584" />
+        <classShapeMoniker Id="1eb138a4-9f12-4a20-b6b7-d1e23984b857" />
+      </nodes>
+    </associationConnector>
+    <associationConnector edgePoints="[(4.6875 : 4.625); (4.6875 : 3.6362939453125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/LinqToSqlClassesDataContext/Role/Role_PersonRole" />
+      <nodes>
+        <classShapeMoniker Id="b1b861bb-382c-4c65-bdb1-7a3e2df873a2" />
+        <classShapeMoniker Id="1eb138a4-9f12-4a20-b6b7-d1e23984b857" />
+      </nodes>
+    </associationConnector>
+    <classShape Id="b96fa86b-7f23-489f-8eb2-44ca2af1551b" absoluteBounds="0.875, 4.5, 2, 1.1939925130208327">
+      <DataClassMoniker Name="/LinqToSqlClassesDataContext/Department" />
+      <nestedChildShapes>
+        <elementListCompartment Id="46cdd558-04c5-4c77-82ce-fe92cda427fe" absoluteBounds="0.89, 4.96, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+      </nestedChildShapes>
+    </classShape>
+    <associationConnector edgePoints="[(1.875 : 4.5); (1.875 : 3.45359537760417)]" fixedFrom="NotFixed" fixedTo="NotFixed">
+      <AssociationMoniker Name="/LinqToSqlClassesDataContext/Department/Department_Person" />
+      <nodes>
+        <classShapeMoniker Id="b96fa86b-7f23-489f-8eb2-44ca2af1551b" />
+        <classShapeMoniker Id="be91ec15-4a64-4976-9358-2e01309ef584" />
+      </nodes>
+    </associationConnector>
+  </nestedChildShapes>
 </ordesignerObjectsDiagram>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClasses.designer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClasses.designer.cs
@@ -1,726 +1,726 @@
-﻿#pragma warning disable 1591
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.237
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Newtonsoft.Json.Tests.LinqToSql
-{
-	using System.Data.Linq;
-	using System.Data.Linq.Mapping;
-	using System.Data;
-	using System.Collections.Generic;
-	using System.Reflection;
-	using System.Linq;
-	using System.Linq.Expressions;
-	using System.ComponentModel;
-	using System;
-	
-	
-	public partial class LinqToSqlClassesDataContext : System.Data.Linq.DataContext
-	{
-		
-		private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
-		
-    #region Extensibility Method Definitions
-    partial void OnCreated();
-    partial void InsertPerson(Person instance);
-    partial void UpdatePerson(Person instance);
-    partial void DeletePerson(Person instance);
-    partial void InsertRole(Role instance);
-    partial void UpdateRole(Role instance);
-    partial void DeleteRole(Role instance);
-    partial void InsertPersonRole(PersonRole instance);
-    partial void UpdatePersonRole(PersonRole instance);
-    partial void DeletePersonRole(PersonRole instance);
-    partial void InsertDepartment(Department instance);
-    partial void UpdateDepartment(Department instance);
-    partial void DeleteDepartment(Department instance);
-    #endregion
-		
-		public LinqToSqlClassesDataContext(string connection) : 
-				base(connection, mappingSource)
-		{
-			OnCreated();
-		}
-		
-		public LinqToSqlClassesDataContext(System.Data.IDbConnection connection) : 
-				base(connection, mappingSource)
-		{
-			OnCreated();
-		}
-		
-		public LinqToSqlClassesDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
-				base(connection, mappingSource)
-		{
-			OnCreated();
-		}
-		
-		public LinqToSqlClassesDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
-				base(connection, mappingSource)
-		{
-			OnCreated();
-		}
-		
-		public System.Data.Linq.Table<Person> Persons
-		{
-			get
-			{
-				return this.GetTable<Person>();
-			}
-		}
-		
-		public System.Data.Linq.Table<Role> Roles
-		{
-			get
-			{
-				return this.GetTable<Role>();
-			}
-		}
-		
-		public System.Data.Linq.Table<PersonRole> PersonRoles
-		{
-			get
-			{
-				return this.GetTable<PersonRole>();
-			}
-		}
-		
-		public System.Data.Linq.Table<Department> Departments
-		{
-			get
-			{
-				return this.GetTable<Department>();
-			}
-		}
-	}
-	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class Person : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private string _FirstName;
-		
-		private string _LastName;
-		
-		private System.Guid _PersonId;
-		
-		private System.Guid _DepartmentId;
-		
-		private EntitySet<PersonRole> _PersonRoles;
-		
-		private EntityRef<Department> _Department;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnFirstNameChanging(string value);
-    partial void OnFirstNameChanged();
-    partial void OnLastNameChanging(string value);
-    partial void OnLastNameChanged();
-    partial void OnPersonIdChanging(System.Guid value);
-    partial void OnPersonIdChanged();
-    partial void OnDepartmentIdChanging(System.Guid value);
-    partial void OnDepartmentIdChanged();
-    #endregion
-		
-		public Person()
-		{
-			this._PersonRoles = new EntitySet<PersonRole>(new Action<PersonRole>(this.attach_PersonRoles), new Action<PersonRole>(this.detach_PersonRoles));
-			this._Department = default(EntityRef<Department>);
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FirstName", CanBeNull=false)]
-		public string FirstName
-		{
-			get
-			{
-				return this._FirstName;
-			}
-			set
-			{
-				if ((this._FirstName != value))
-				{
-					this.OnFirstNameChanging(value);
-					this.SendPropertyChanging();
-					this._FirstName = value;
-					this.SendPropertyChanged("FirstName");
-					this.OnFirstNameChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastName", CanBeNull=false)]
-		public string LastName
-		{
-			get
-			{
-				return this._LastName;
-			}
-			set
-			{
-				if ((this._LastName != value))
-				{
-					this.OnLastNameChanging(value);
-					this.SendPropertyChanging();
-					this._LastName = value;
-					this.SendPropertyChanged("LastName");
-					this.OnLastNameChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PersonId", IsPrimaryKey=true)]
-		public System.Guid PersonId
-		{
-			get
-			{
-				return this._PersonId;
-			}
-			set
-			{
-				if ((this._PersonId != value))
-				{
-					this.OnPersonIdChanging(value);
-					this.SendPropertyChanging();
-					this._PersonId = value;
-					this.SendPropertyChanged("PersonId");
-					this.OnPersonIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartmentId")]
-		public System.Guid DepartmentId
-		{
-			get
-			{
-				return this._DepartmentId;
-			}
-			set
-			{
-				if ((this._DepartmentId != value))
-				{
-					if (this._Department.HasLoadedOrAssignedValue)
-					{
-						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-					}
-					this.OnDepartmentIdChanging(value);
-					this.SendPropertyChanging();
-					this._DepartmentId = value;
-					this.SendPropertyChanged("DepartmentId");
-					this.OnDepartmentIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Person_PersonRole", Storage="_PersonRoles", ThisKey="PersonId", OtherKey="PersonId")]
-		public EntitySet<PersonRole> PersonRoles
-		{
-			get
-			{
-				return this._PersonRoles;
-			}
-			set
-			{
-				this._PersonRoles.Assign(value);
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Department_Person", Storage="_Department", ThisKey="DepartmentId", OtherKey="DepartmentId", IsForeignKey=true)]
-		public Department Department
-		{
-			get
-			{
-				return this._Department.Entity;
-			}
-			set
-			{
-				Department previousValue = this._Department.Entity;
-				if (((previousValue != value) 
-							|| (this._Department.HasLoadedOrAssignedValue == false)))
-				{
-					this.SendPropertyChanging();
-					if ((previousValue != null))
-					{
-						this._Department.Entity = null;
-						previousValue.Persons.Remove(this);
-					}
-					this._Department.Entity = value;
-					if ((value != null))
-					{
-						value.Persons.Add(this);
-						this._DepartmentId = value.DepartmentId;
-					}
-					else
-					{
-						this._DepartmentId = default(System.Guid);
-					}
-					this.SendPropertyChanged("Department");
-				}
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-		
-		private void attach_PersonRoles(PersonRole entity)
-		{
-			this.SendPropertyChanging();
-			entity.Person = this;
-		}
-		
-		private void detach_PersonRoles(PersonRole entity)
-		{
-			this.SendPropertyChanging();
-			entity.Person = null;
-		}
-	}
-	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class Role : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private string _Name;
-		
-		private System.Guid _RoleId;
-		
-		private EntitySet<PersonRole> _PersonRoles;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnNameChanging(string value);
-    partial void OnNameChanged();
-    partial void OnRoleIdChanging(System.Guid value);
-    partial void OnRoleIdChanged();
-    #endregion
-		
-		public Role()
-		{
-			this._PersonRoles = new EntitySet<PersonRole>(new Action<PersonRole>(this.attach_PersonRoles), new Action<PersonRole>(this.detach_PersonRoles));
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", CanBeNull=false)]
-		public string Name
-		{
-			get
-			{
-				return this._Name;
-			}
-			set
-			{
-				if ((this._Name != value))
-				{
-					this.OnNameChanging(value);
-					this.SendPropertyChanging();
-					this._Name = value;
-					this.SendPropertyChanged("Name");
-					this.OnNameChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RoleId", IsPrimaryKey=true)]
-		public System.Guid RoleId
-		{
-			get
-			{
-				return this._RoleId;
-			}
-			set
-			{
-				if ((this._RoleId != value))
-				{
-					this.OnRoleIdChanging(value);
-					this.SendPropertyChanging();
-					this._RoleId = value;
-					this.SendPropertyChanged("RoleId");
-					this.OnRoleIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Role_PersonRole", Storage="_PersonRoles", ThisKey="RoleId", OtherKey="RoleId")]
-		public EntitySet<PersonRole> PersonRoles
-		{
-			get
-			{
-				return this._PersonRoles;
-			}
-			set
-			{
-				this._PersonRoles.Assign(value);
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-		
-		private void attach_PersonRoles(PersonRole entity)
-		{
-			this.SendPropertyChanging();
-			entity.Role = this;
-		}
-		
-		private void detach_PersonRoles(PersonRole entity)
-		{
-			this.SendPropertyChanging();
-			entity.Role = null;
-		}
-	}
-	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class PersonRole : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private System.Guid _PersonId;
-		
-		private System.Guid _RoleId;
-		
-		private System.Guid _PersonRoleId;
-		
-		private EntityRef<Person> _Person;
-		
-		private EntityRef<Role> _Role;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnPersonIdChanging(System.Guid value);
-    partial void OnPersonIdChanged();
-    partial void OnRoleIdChanging(System.Guid value);
-    partial void OnRoleIdChanged();
-    partial void OnPersonRoleIdChanging(System.Guid value);
-    partial void OnPersonRoleIdChanged();
-    #endregion
-		
-		public PersonRole()
-		{
-			this._Person = default(EntityRef<Person>);
-			this._Role = default(EntityRef<Role>);
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PersonId")]
-		public System.Guid PersonId
-		{
-			get
-			{
-				return this._PersonId;
-			}
-			set
-			{
-				if ((this._PersonId != value))
-				{
-					if (this._Person.HasLoadedOrAssignedValue)
-					{
-						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-					}
-					this.OnPersonIdChanging(value);
-					this.SendPropertyChanging();
-					this._PersonId = value;
-					this.SendPropertyChanged("PersonId");
-					this.OnPersonIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RoleId")]
-		public System.Guid RoleId
-		{
-			get
-			{
-				return this._RoleId;
-			}
-			set
-			{
-				if ((this._RoleId != value))
-				{
-					if (this._Role.HasLoadedOrAssignedValue)
-					{
-						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
-					}
-					this.OnRoleIdChanging(value);
-					this.SendPropertyChanging();
-					this._RoleId = value;
-					this.SendPropertyChanged("RoleId");
-					this.OnRoleIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PersonRoleId", IsPrimaryKey=true)]
-		public System.Guid PersonRoleId
-		{
-			get
-			{
-				return this._PersonRoleId;
-			}
-			set
-			{
-				if ((this._PersonRoleId != value))
-				{
-					this.OnPersonRoleIdChanging(value);
-					this.SendPropertyChanging();
-					this._PersonRoleId = value;
-					this.SendPropertyChanged("PersonRoleId");
-					this.OnPersonRoleIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Person_PersonRole", Storage="_Person", ThisKey="PersonId", OtherKey="PersonId", IsForeignKey=true)]
-		public Person Person
-		{
-			get
-			{
-				return this._Person.Entity;
-			}
-			set
-			{
-				Person previousValue = this._Person.Entity;
-				if (((previousValue != value) 
-							|| (this._Person.HasLoadedOrAssignedValue == false)))
-				{
-					this.SendPropertyChanging();
-					if ((previousValue != null))
-					{
-						this._Person.Entity = null;
-						previousValue.PersonRoles.Remove(this);
-					}
-					this._Person.Entity = value;
-					if ((value != null))
-					{
-						value.PersonRoles.Add(this);
-						this._PersonId = value.PersonId;
-					}
-					else
-					{
-						this._PersonId = default(System.Guid);
-					}
-					this.SendPropertyChanged("Person");
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Role_PersonRole", Storage="_Role", ThisKey="RoleId", OtherKey="RoleId", IsForeignKey=true)]
-		public Role Role
-		{
-			get
-			{
-				return this._Role.Entity;
-			}
-			set
-			{
-				Role previousValue = this._Role.Entity;
-				if (((previousValue != value) 
-							|| (this._Role.HasLoadedOrAssignedValue == false)))
-				{
-					this.SendPropertyChanging();
-					if ((previousValue != null))
-					{
-						this._Role.Entity = null;
-						previousValue.PersonRoles.Remove(this);
-					}
-					this._Role.Entity = value;
-					if ((value != null))
-					{
-						value.PersonRoles.Add(this);
-						this._RoleId = value.RoleId;
-					}
-					else
-					{
-						this._RoleId = default(System.Guid);
-					}
-					this.SendPropertyChanged("Role");
-				}
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-	}
-	
-	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
-	public partial class Department : INotifyPropertyChanging, INotifyPropertyChanged
-	{
-		
-		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
-		
-		private System.Guid _DepartmentId;
-		
-		private string _Name;
-		
-		private EntitySet<Person> _Persons;
-		
-    #region Extensibility Method Definitions
-    partial void OnLoaded();
-    partial void OnValidate(System.Data.Linq.ChangeAction action);
-    partial void OnCreated();
-    partial void OnDepartmentIdChanging(System.Guid value);
-    partial void OnDepartmentIdChanged();
-    partial void OnNameChanging(string value);
-    partial void OnNameChanged();
-    #endregion
-		
-		public Department()
-		{
-			this._Persons = new EntitySet<Person>(new Action<Person>(this.attach_Persons), new Action<Person>(this.detach_Persons));
-			OnCreated();
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartmentId", IsPrimaryKey=true)]
-		public System.Guid DepartmentId
-		{
-			get
-			{
-				return this._DepartmentId;
-			}
-			set
-			{
-				if ((this._DepartmentId != value))
-				{
-					this.OnDepartmentIdChanging(value);
-					this.SendPropertyChanging();
-					this._DepartmentId = value;
-					this.SendPropertyChanged("DepartmentId");
-					this.OnDepartmentIdChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", CanBeNull=false)]
-		public string Name
-		{
-			get
-			{
-				return this._Name;
-			}
-			set
-			{
-				if ((this._Name != value))
-				{
-					this.OnNameChanging(value);
-					this.SendPropertyChanging();
-					this._Name = value;
-					this.SendPropertyChanged("Name");
-					this.OnNameChanged();
-				}
-			}
-		}
-		
-		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Department_Person", Storage="_Persons", ThisKey="DepartmentId", OtherKey="DepartmentId")]
-		public EntitySet<Person> Persons
-		{
-			get
-			{
-				return this._Persons;
-			}
-			set
-			{
-				this._Persons.Assign(value);
-			}
-		}
-		
-		public event PropertyChangingEventHandler PropertyChanging;
-		
-		public event PropertyChangedEventHandler PropertyChanged;
-		
-		protected virtual void SendPropertyChanging()
-		{
-			if ((this.PropertyChanging != null))
-			{
-				this.PropertyChanging(this, emptyChangingEventArgs);
-			}
-		}
-		
-		protected virtual void SendPropertyChanged(String propertyName)
-		{
-			if ((this.PropertyChanged != null))
-			{
-				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-			}
-		}
-		
-		private void attach_Persons(Person entity)
-		{
-			this.SendPropertyChanging();
-			entity.Department = this;
-		}
-		
-		private void detach_Persons(Person entity)
-		{
-			this.SendPropertyChanging();
-			entity.Department = null;
-		}
-	}
-}
-#pragma warning restore 1591
+﻿#pragma warning disable 1591
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.237
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Newtonsoft.Json.Tests.LinqToSql
+{
+	using System.Data.Linq;
+	using System.Data.Linq.Mapping;
+	using System.Data;
+	using System.Collections.Generic;
+	using System.Reflection;
+	using System.Linq;
+	using System.Linq.Expressions;
+	using System.ComponentModel;
+	using System;
+	
+	
+	public partial class LinqToSqlClassesDataContext : System.Data.Linq.DataContext
+	{
+		
+		private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
+		
+    #region Extensibility Method Definitions
+    partial void OnCreated();
+    partial void InsertPerson(Person instance);
+    partial void UpdatePerson(Person instance);
+    partial void DeletePerson(Person instance);
+    partial void InsertRole(Role instance);
+    partial void UpdateRole(Role instance);
+    partial void DeleteRole(Role instance);
+    partial void InsertPersonRole(PersonRole instance);
+    partial void UpdatePersonRole(PersonRole instance);
+    partial void DeletePersonRole(PersonRole instance);
+    partial void InsertDepartment(Department instance);
+    partial void UpdateDepartment(Department instance);
+    partial void DeleteDepartment(Department instance);
+    #endregion
+		
+		public LinqToSqlClassesDataContext(string connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public LinqToSqlClassesDataContext(System.Data.IDbConnection connection) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public LinqToSqlClassesDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public LinqToSqlClassesDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
+				base(connection, mappingSource)
+		{
+			OnCreated();
+		}
+		
+		public System.Data.Linq.Table<Person> Persons
+		{
+			get
+			{
+				return this.GetTable<Person>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Role> Roles
+		{
+			get
+			{
+				return this.GetTable<Role>();
+			}
+		}
+		
+		public System.Data.Linq.Table<PersonRole> PersonRoles
+		{
+			get
+			{
+				return this.GetTable<PersonRole>();
+			}
+		}
+		
+		public System.Data.Linq.Table<Department> Departments
+		{
+			get
+			{
+				return this.GetTable<Department>();
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
+	public partial class Person : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private string _FirstName;
+		
+		private string _LastName;
+		
+		private System.Guid _PersonId;
+		
+		private System.Guid _DepartmentId;
+		
+		private EntitySet<PersonRole> _PersonRoles;
+		
+		private EntityRef<Department> _Department;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnFirstNameChanging(string value);
+    partial void OnFirstNameChanged();
+    partial void OnLastNameChanging(string value);
+    partial void OnLastNameChanged();
+    partial void OnPersonIdChanging(System.Guid value);
+    partial void OnPersonIdChanged();
+    partial void OnDepartmentIdChanging(System.Guid value);
+    partial void OnDepartmentIdChanged();
+    #endregion
+		
+		public Person()
+		{
+			this._PersonRoles = new EntitySet<PersonRole>(new Action<PersonRole>(this.attach_PersonRoles), new Action<PersonRole>(this.detach_PersonRoles));
+			this._Department = default(EntityRef<Department>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FirstName", CanBeNull=false)]
+		public string FirstName
+		{
+			get
+			{
+				return this._FirstName;
+			}
+			set
+			{
+				if ((this._FirstName != value))
+				{
+					this.OnFirstNameChanging(value);
+					this.SendPropertyChanging();
+					this._FirstName = value;
+					this.SendPropertyChanged("FirstName");
+					this.OnFirstNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastName", CanBeNull=false)]
+		public string LastName
+		{
+			get
+			{
+				return this._LastName;
+			}
+			set
+			{
+				if ((this._LastName != value))
+				{
+					this.OnLastNameChanging(value);
+					this.SendPropertyChanging();
+					this._LastName = value;
+					this.SendPropertyChanged("LastName");
+					this.OnLastNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PersonId", IsPrimaryKey=true)]
+		public System.Guid PersonId
+		{
+			get
+			{
+				return this._PersonId;
+			}
+			set
+			{
+				if ((this._PersonId != value))
+				{
+					this.OnPersonIdChanging(value);
+					this.SendPropertyChanging();
+					this._PersonId = value;
+					this.SendPropertyChanged("PersonId");
+					this.OnPersonIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartmentId")]
+		public System.Guid DepartmentId
+		{
+			get
+			{
+				return this._DepartmentId;
+			}
+			set
+			{
+				if ((this._DepartmentId != value))
+				{
+					if (this._Department.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnDepartmentIdChanging(value);
+					this.SendPropertyChanging();
+					this._DepartmentId = value;
+					this.SendPropertyChanged("DepartmentId");
+					this.OnDepartmentIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Person_PersonRole", Storage="_PersonRoles", ThisKey="PersonId", OtherKey="PersonId")]
+		public EntitySet<PersonRole> PersonRoles
+		{
+			get
+			{
+				return this._PersonRoles;
+			}
+			set
+			{
+				this._PersonRoles.Assign(value);
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Department_Person", Storage="_Department", ThisKey="DepartmentId", OtherKey="DepartmentId", IsForeignKey=true)]
+		public Department Department
+		{
+			get
+			{
+				return this._Department.Entity;
+			}
+			set
+			{
+				Department previousValue = this._Department.Entity;
+				if (((previousValue != value) 
+							|| (this._Department.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Department.Entity = null;
+						previousValue.Persons.Remove(this);
+					}
+					this._Department.Entity = value;
+					if ((value != null))
+					{
+						value.Persons.Add(this);
+						this._DepartmentId = value.DepartmentId;
+					}
+					else
+					{
+						this._DepartmentId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Department");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_PersonRoles(PersonRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.Person = this;
+		}
+		
+		private void detach_PersonRoles(PersonRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.Person = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
+	public partial class Role : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private string _Name;
+		
+		private System.Guid _RoleId;
+		
+		private EntitySet<PersonRole> _PersonRoles;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    partial void OnRoleIdChanging(System.Guid value);
+    partial void OnRoleIdChanged();
+    #endregion
+		
+		public Role()
+		{
+			this._PersonRoles = new EntitySet<PersonRole>(new Action<PersonRole>(this.attach_PersonRoles), new Action<PersonRole>(this.detach_PersonRoles));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", CanBeNull=false)]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RoleId", IsPrimaryKey=true)]
+		public System.Guid RoleId
+		{
+			get
+			{
+				return this._RoleId;
+			}
+			set
+			{
+				if ((this._RoleId != value))
+				{
+					this.OnRoleIdChanging(value);
+					this.SendPropertyChanging();
+					this._RoleId = value;
+					this.SendPropertyChanged("RoleId");
+					this.OnRoleIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Role_PersonRole", Storage="_PersonRoles", ThisKey="RoleId", OtherKey="RoleId")]
+		public EntitySet<PersonRole> PersonRoles
+		{
+			get
+			{
+				return this._PersonRoles;
+			}
+			set
+			{
+				this._PersonRoles.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_PersonRoles(PersonRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.Role = this;
+		}
+		
+		private void detach_PersonRoles(PersonRole entity)
+		{
+			this.SendPropertyChanging();
+			entity.Role = null;
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
+	public partial class PersonRole : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _PersonId;
+		
+		private System.Guid _RoleId;
+		
+		private System.Guid _PersonRoleId;
+		
+		private EntityRef<Person> _Person;
+		
+		private EntityRef<Role> _Role;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnPersonIdChanging(System.Guid value);
+    partial void OnPersonIdChanged();
+    partial void OnRoleIdChanging(System.Guid value);
+    partial void OnRoleIdChanged();
+    partial void OnPersonRoleIdChanging(System.Guid value);
+    partial void OnPersonRoleIdChanged();
+    #endregion
+		
+		public PersonRole()
+		{
+			this._Person = default(EntityRef<Person>);
+			this._Role = default(EntityRef<Role>);
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PersonId")]
+		public System.Guid PersonId
+		{
+			get
+			{
+				return this._PersonId;
+			}
+			set
+			{
+				if ((this._PersonId != value))
+				{
+					if (this._Person.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnPersonIdChanging(value);
+					this.SendPropertyChanging();
+					this._PersonId = value;
+					this.SendPropertyChanged("PersonId");
+					this.OnPersonIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RoleId")]
+		public System.Guid RoleId
+		{
+			get
+			{
+				return this._RoleId;
+			}
+			set
+			{
+				if ((this._RoleId != value))
+				{
+					if (this._Role.HasLoadedOrAssignedValue)
+					{
+						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
+					}
+					this.OnRoleIdChanging(value);
+					this.SendPropertyChanging();
+					this._RoleId = value;
+					this.SendPropertyChanged("RoleId");
+					this.OnRoleIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PersonRoleId", IsPrimaryKey=true)]
+		public System.Guid PersonRoleId
+		{
+			get
+			{
+				return this._PersonRoleId;
+			}
+			set
+			{
+				if ((this._PersonRoleId != value))
+				{
+					this.OnPersonRoleIdChanging(value);
+					this.SendPropertyChanging();
+					this._PersonRoleId = value;
+					this.SendPropertyChanged("PersonRoleId");
+					this.OnPersonRoleIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Person_PersonRole", Storage="_Person", ThisKey="PersonId", OtherKey="PersonId", IsForeignKey=true)]
+		public Person Person
+		{
+			get
+			{
+				return this._Person.Entity;
+			}
+			set
+			{
+				Person previousValue = this._Person.Entity;
+				if (((previousValue != value) 
+							|| (this._Person.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Person.Entity = null;
+						previousValue.PersonRoles.Remove(this);
+					}
+					this._Person.Entity = value;
+					if ((value != null))
+					{
+						value.PersonRoles.Add(this);
+						this._PersonId = value.PersonId;
+					}
+					else
+					{
+						this._PersonId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Person");
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Role_PersonRole", Storage="_Role", ThisKey="RoleId", OtherKey="RoleId", IsForeignKey=true)]
+		public Role Role
+		{
+			get
+			{
+				return this._Role.Entity;
+			}
+			set
+			{
+				Role previousValue = this._Role.Entity;
+				if (((previousValue != value) 
+							|| (this._Role.HasLoadedOrAssignedValue == false)))
+				{
+					this.SendPropertyChanging();
+					if ((previousValue != null))
+					{
+						this._Role.Entity = null;
+						previousValue.PersonRoles.Remove(this);
+					}
+					this._Role.Entity = value;
+					if ((value != null))
+					{
+						value.PersonRoles.Add(this);
+						this._RoleId = value.RoleId;
+					}
+					else
+					{
+						this._RoleId = default(System.Guid);
+					}
+					this.SendPropertyChanged("Role");
+				}
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+	}
+	
+	[global::System.Data.Linq.Mapping.TableAttribute(Name="")]
+	public partial class Department : INotifyPropertyChanging, INotifyPropertyChanged
+	{
+		
+		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
+		
+		private System.Guid _DepartmentId;
+		
+		private string _Name;
+		
+		private EntitySet<Person> _Persons;
+		
+    #region Extensibility Method Definitions
+    partial void OnLoaded();
+    partial void OnValidate(System.Data.Linq.ChangeAction action);
+    partial void OnCreated();
+    partial void OnDepartmentIdChanging(System.Guid value);
+    partial void OnDepartmentIdChanged();
+    partial void OnNameChanging(string value);
+    partial void OnNameChanged();
+    #endregion
+		
+		public Department()
+		{
+			this._Persons = new EntitySet<Person>(new Action<Person>(this.attach_Persons), new Action<Person>(this.detach_Persons));
+			OnCreated();
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DepartmentId", IsPrimaryKey=true)]
+		public System.Guid DepartmentId
+		{
+			get
+			{
+				return this._DepartmentId;
+			}
+			set
+			{
+				if ((this._DepartmentId != value))
+				{
+					this.OnDepartmentIdChanging(value);
+					this.SendPropertyChanging();
+					this._DepartmentId = value;
+					this.SendPropertyChanged("DepartmentId");
+					this.OnDepartmentIdChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", CanBeNull=false)]
+		public string Name
+		{
+			get
+			{
+				return this._Name;
+			}
+			set
+			{
+				if ((this._Name != value))
+				{
+					this.OnNameChanging(value);
+					this.SendPropertyChanging();
+					this._Name = value;
+					this.SendPropertyChanged("Name");
+					this.OnNameChanged();
+				}
+			}
+		}
+		
+		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Department_Person", Storage="_Persons", ThisKey="DepartmentId", OtherKey="DepartmentId")]
+		public EntitySet<Person> Persons
+		{
+			get
+			{
+				return this._Persons;
+			}
+			set
+			{
+				this._Persons.Assign(value);
+			}
+		}
+		
+		public event PropertyChangingEventHandler PropertyChanging;
+		
+		public event PropertyChangedEventHandler PropertyChanged;
+		
+		protected virtual void SendPropertyChanging()
+		{
+			if ((this.PropertyChanging != null))
+			{
+				this.PropertyChanging(this, emptyChangingEventArgs);
+			}
+		}
+		
+		protected virtual void SendPropertyChanged(String propertyName)
+		{
+			if ((this.PropertyChanged != null))
+			{
+				this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+			}
+		}
+		
+		private void attach_Persons(Person entity)
+		{
+			this.SendPropertyChanging();
+			entity.Department = this;
+		}
+		
+		private void detach_Persons(Person entity)
+		{
+			this.SendPropertyChanging();
+			entity.Department = null;
+		}
+	}
+}
+#pragma warning restore 1591
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClassesSerializationTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClassesSerializationTests.cs
@@ -1,110 +1,110 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Tests.LinqToSql;
-using NUnit.Framework;
-using System.Reflection;
-using System.ComponentModel;
-using Newtonsoft.Json.Serialization;
-using System.Data.Linq.Mapping;
-
-namespace Newtonsoft.Json.Tests.LinqToSql
-{
-  public class LinqToSqlClassesSerializationTests : TestFixtureBase
-  {
-    [Test]
-    public void Serialize()
-    {
-      Role role = new Role();
-      role.Name = "Role1";
-      role.RoleId = new Guid("67EA92B7-4BD3-4718-BD75-3C7EDF800B34");
-
-      Person person = new Person();
-      person.FirstName = "FirstName!";
-      person.LastName = "LastName!";
-      person.PersonId = new Guid("7AA027AA-C995-4986-908D-999D8063599F");
-      person.PersonRoles.Add(new PersonRole
-                               {
-                                 PersonRoleId = new Guid("B012DD41-71DF-4839-B8D5-D1333FB886BC"),
-                                 Role = role
-                               });
-
-      person.Department = new Department
-                               {
-                                 DepartmentId = new Guid("08F68BF9-929B-4434-BC47-C9489D22112B"),
-                                 Name = "Name!"
-                               };
-
-      string json = JsonConvert.SerializeObject(person, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
-
-      Assert.AreEqual(@"{
-  ""first_name"": ""FirstName!"",
-  ""LastName"": ""LastName!"",
-  ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
-  ""DepartmentId"": ""08f68bf9-929b-4434-bc47-c9489d22112b"",
-  ""PersonRoles"": [
-    {
-      ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
-      ""RoleId"": ""67ea92b7-4bd3-4718-bd75-3c7edf800b34"",
-      ""PersonRoleId"": ""b012dd41-71df-4839-b8d5-d1333fb886bc"",
-      ""Role"": {
-        ""Name"": ""Role1"",
-        ""RoleId"": ""t5LqZ9NLGEe9dTx+34ALNA==""
-      }
-    }
-  ],
-  ""Department"": {
-    ""DepartmentId"": ""08f68bf9-929b-4434-bc47-c9489d22112b"",
-    ""Name"": ""!emaN""
-  }
-}", json);
-    }
-
-    [Test]
-    public void Deserialize()
-    {
-      string json = @"{
-  ""first_name"": ""FirstName!"",
-  ""LastName"": ""LastName!"",
-  ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
-  ""PersonRoles"": [
-    {
-      ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
-      ""RoleId"": ""67ea92b7-4bd3-4718-bd75-3c7edf800b34"",
-      ""PersonRoleId"": ""b012dd41-71df-4839-b8d5-d1333fb886bc"",
-      ""Role"": {
-        ""Name"": ""Role1"",
-        ""RoleId"": ""t5LqZ9NLGEe9dTx+34ALNA==""
-      }
-    }
-  ],
-  ""Department"": {
-    ""DepartmentId"": ""08f68bf9-929b-4434-bc47-c9489d22112b"",
-    ""Name"": ""!emaN""
-  }
-}";
-
-      Person person = JsonConvert.DeserializeObject<Person>(json);
-      Assert.IsNotNull(person);
-
-      Assert.AreEqual(new Guid("7AA027AA-C995-4986-908D-999D8063599F"), person.PersonId);
-      Assert.AreEqual("FirstName!", person.FirstName);
-      Assert.AreEqual("LastName!", person.LastName);
-      Assert.AreEqual(1, person.PersonRoles.Count);
-      Assert.AreEqual(person.PersonId, person.PersonRoles[0].PersonId);
-      Assert.AreEqual(new Guid("67EA92B7-4BD3-4718-BD75-3C7EDF800B34"), person.PersonRoles[0].RoleId);
-      Assert.IsNotNull(person.PersonRoles[0].Role);
-      Assert.AreEqual(1, person.PersonRoles[0].Role.PersonRoles.Count);
-
-      Assert.AreEqual("Name!", person.Department.Name);
-
-      TableAttribute tableAttribute = JsonTypeReflector.GetAttribute<TableAttribute>(typeof(Person));
-      Assert.AreEqual("", tableAttribute.Name);
-
-      ColumnAttribute columnAttribute = JsonTypeReflector.GetAttribute<ColumnAttribute>(typeof(Person).GetProperty("FirstName"));
-      Assert.AreEqual("_FirstName", columnAttribute.Storage);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Tests.LinqToSql;
+using NUnit.Framework;
+using System.Reflection;
+using System.ComponentModel;
+using Newtonsoft.Json.Serialization;
+using System.Data.Linq.Mapping;
+
+namespace Newtonsoft.Json.Tests.LinqToSql
+{
+  public class LinqToSqlClassesSerializationTests : TestFixtureBase
+  {
+    [Test]
+    public void Serialize()
+    {
+      Role role = new Role();
+      role.Name = "Role1";
+      role.RoleId = new Guid("67EA92B7-4BD3-4718-BD75-3C7EDF800B34");
+
+      Person person = new Person();
+      person.FirstName = "FirstName!";
+      person.LastName = "LastName!";
+      person.PersonId = new Guid("7AA027AA-C995-4986-908D-999D8063599F");
+      person.PersonRoles.Add(new PersonRole
+                               {
+                                 PersonRoleId = new Guid("B012DD41-71DF-4839-B8D5-D1333FB886BC"),
+                                 Role = role
+                               });
+
+      person.Department = new Department
+                               {
+                                 DepartmentId = new Guid("08F68BF9-929B-4434-BC47-C9489D22112B"),
+                                 Name = "Name!"
+                               };
+
+      string json = JsonConvert.SerializeObject(person, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
+
+      Assert.AreEqual(@"{
+  ""first_name"": ""FirstName!"",
+  ""LastName"": ""LastName!"",
+  ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
+  ""DepartmentId"": ""08f68bf9-929b-4434-bc47-c9489d22112b"",
+  ""PersonRoles"": [
+    {
+      ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
+      ""RoleId"": ""67ea92b7-4bd3-4718-bd75-3c7edf800b34"",
+      ""PersonRoleId"": ""b012dd41-71df-4839-b8d5-d1333fb886bc"",
+      ""Role"": {
+        ""Name"": ""Role1"",
+        ""RoleId"": ""t5LqZ9NLGEe9dTx+34ALNA==""
+      }
+    }
+  ],
+  ""Department"": {
+    ""DepartmentId"": ""08f68bf9-929b-4434-bc47-c9489d22112b"",
+    ""Name"": ""!emaN""
+  }
+}", json);
+    }
+
+    [Test]
+    public void Deserialize()
+    {
+      string json = @"{
+  ""first_name"": ""FirstName!"",
+  ""LastName"": ""LastName!"",
+  ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
+  ""PersonRoles"": [
+    {
+      ""PersonId"": ""7aa027aa-c995-4986-908d-999d8063599f"",
+      ""RoleId"": ""67ea92b7-4bd3-4718-bd75-3c7edf800b34"",
+      ""PersonRoleId"": ""b012dd41-71df-4839-b8d5-d1333fb886bc"",
+      ""Role"": {
+        ""Name"": ""Role1"",
+        ""RoleId"": ""t5LqZ9NLGEe9dTx+34ALNA==""
+      }
+    }
+  ],
+  ""Department"": {
+    ""DepartmentId"": ""08f68bf9-929b-4434-bc47-c9489d22112b"",
+    ""Name"": ""!emaN""
+  }
+}";
+
+      Person person = JsonConvert.DeserializeObject<Person>(json);
+      Assert.IsNotNull(person);
+
+      Assert.AreEqual(new Guid("7AA027AA-C995-4986-908D-999D8063599F"), person.PersonId);
+      Assert.AreEqual("FirstName!", person.FirstName);
+      Assert.AreEqual("LastName!", person.LastName);
+      Assert.AreEqual(1, person.PersonRoles.Count);
+      Assert.AreEqual(person.PersonId, person.PersonRoles[0].PersonId);
+      Assert.AreEqual(new Guid("67EA92B7-4BD3-4718-BD75-3C7EDF800B34"), person.PersonRoles[0].RoleId);
+      Assert.IsNotNull(person.PersonRoles[0].Role);
+      Assert.AreEqual(1, person.PersonRoles[0].Role.PersonRoles.Count);
+
+      Assert.AreEqual("Name!", person.Department.Name);
+
+      TableAttribute tableAttribute = JsonTypeReflector.GetAttribute<TableAttribute>(typeof(Person));
+      Assert.AreEqual("", tableAttribute.Name);
+
+      ColumnAttribute columnAttribute = JsonTypeReflector.GetAttribute<ColumnAttribute>(typeof(Person).GetProperty("FirstName"));
+      Assert.AreEqual("_FirstName", columnAttribute.Storage);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/Person.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/Person.cs
@@ -1,18 +1,18 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-
-namespace Newtonsoft.Json.Tests.LinqToSql
-{
-  [MetadataType(typeof(PersonMetadata))]
-  public partial class Person
-  {
-    public class PersonMetadata
-    {
-      [JsonProperty("first_name")]
-      public string FirstName { get; set; }
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+
+namespace Newtonsoft.Json.Tests.LinqToSql
+{
+  [MetadataType(typeof(PersonMetadata))]
+  public partial class Person
+  {
+    public class PersonMetadata
+    {
+      [JsonProperty("first_name")]
+      public string FirstName { get; set; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/Role.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/LinqToSql/Role.cs
@@ -1,21 +1,21 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Data.Linq;
-using System.Linq;
-using System.Text;
-
-namespace Newtonsoft.Json.Tests.LinqToSql
-{
-  [MetadataType(typeof(RoleMetadata))]
-  public partial class Role
-  {
-    public class RoleMetadata
-    {
-      [JsonConverter(typeof(GuidByteArrayConverter))]
-      public Guid RoleId { get; set; }
-      [JsonIgnore]
-      public EntitySet<PersonRole> PersonRoles { get; set; }
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Data.Linq;
+using System.Linq;
+using System.Text;
+
+namespace Newtonsoft.Json.Tests.LinqToSql
+{
+  [MetadataType(typeof(RoleMetadata))]
+  public partial class Role
+  {
+    public class RoleMetadata
+    {
+      [JsonConverter(typeof(GuidByteArrayConverter))]
+      public Guid RoleId { get; set; }
+      [JsonIgnore]
+      public EntitySet<PersonRole> PersonRoles { get; set; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Metro.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Metro.csproj
@@ -1,320 +1,320 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
-    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
-    <DefaultLanguage>en-US</DefaultLanguage>
-    <FileAlignment>512</FileAlignment>
-    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <PackageCertificateKeyFile>Newtonsoft.Json.Tests.Metro_TemporaryKey.pfx</PackageCertificateKeyFile>
-    <PackageCertificateThumbprint>E58487D6BF8E40BC44C9BE962D19FB3EFBEB81BD</PackageCertificateThumbprint>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Metro\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Metro\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\ARM\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>full</DebugType>
-    <PlatformTarget>ARM</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
-    <OutputPath>bin\ARM\Release\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <Optimize>true</Optimize>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>ARM</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <Optimize>true</Optimize>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <Optimize>true</Optimize>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup>
-    <AppXPackage>True</AppXPackage>
-  </PropertyGroup>
-  <ItemGroup>
-    <!--A reference to the entire .Net Framework and Windows SDK are automatically included-->
-    <SDKReference Include="MSTestFramework, Version=11.0" />
-    <SDKReference Include="TestPlatform, Version=11.0" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonReaderTests.cs" />
-    <Compile Include="Bson\BsonWriterTests.cs" />
-    <Compile Include="Converters\BinaryConverterTests.cs" />
-    <Compile Include="Converters\CustomCreationConverterTests.cs" />
-    <Compile Include="Converters\DataSetConverterTests.cs" />
-    <Compile Include="Converters\DataTableConverterTests.cs" />
-    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
-    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
-    <Compile Include="Converters\ObjectIdConverterTests.cs" />
-    <Compile Include="Converters\RegexConverterTests.cs" />
-    <Compile Include="Converters\StringEnumConverterTests.cs" />
-    <Compile Include="Converters\VersionConverterTests.cs" />
-    <Compile Include="Converters\XmlNodeConverterTest.cs" />
-    <Compile Include="ExceptionTests.cs" />
-    <Compile Include="JsonArrayAttributeTests.cs" />
-    <Compile Include="JsonConvertTest.cs" />
-    <Compile Include="JsonTextReaderTest.cs" />
-    <Compile Include="JsonTextWriterTest.cs" />
-    <Compile Include="JsonValidatingReaderTests.cs" />
-    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
-    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
-    <Compile Include="Linq\DynamicTests.cs" />
-    <Compile Include="Linq\JArrayTests.cs" />
-    <Compile Include="Linq\JConstructorTests.cs" />
-    <Compile Include="Linq\JObjectTests.cs" />
-    <Compile Include="Linq\JPathTests.cs" />
-    <Compile Include="Linq\JPropertyTests.cs" />
-    <Compile Include="Linq\JRawTests.cs" />
-    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
-    <Compile Include="Linq\JTokenReaderTest.cs" />
-    <Compile Include="Linq\JTokenTests.cs" />
-    <Compile Include="Linq\JTokenWriterTest.cs" />
-    <Compile Include="Linq\JValueTests.cs" />
-    <Compile Include="Linq\LinqToJsonTest.cs" />
-    <Compile Include="PerformanceTests.cs" />
-    <Compile Include="Schema\ExtensionsTests.cs" />
-    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
-    <Compile Include="Schema\JsonSchemaTests.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
-    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
-    <Compile Include="Serialization\ContractResolverTests.cs" />
-    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
-    <Compile Include="Serialization\DynamicTests.cs" />
-    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
-    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
-    <Compile Include="Serialization\JsonSerializerTest.cs" />
-    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
-    <Compile Include="Serialization\NullValueHandlingTests.cs" />
-    <Compile Include="Serialization\PopulateTests.cs" />
-    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
-    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
-    <Compile Include="SilverlightTests.cs" />
-    <Compile Include="TestFixtureBase.cs" />
-    <Compile Include="TestObjects\AbstractGenericBase.cs" />
-    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\Article.cs" />
-    <Compile Include="TestObjects\ArticleCollection.cs" />
-    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
-    <Compile Include="TestObjects\Bar.cs" />
-    <Compile Include="TestObjects\Car.cs" />
-    <Compile Include="TestObjects\CircularReferenceClass.cs" />
-    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
-    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
-    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\ClassWithArray.cs" />
-    <Compile Include="TestObjects\ClassWithGuid.cs" />
-    <Compile Include="TestObjects\Computer.cs" />
-    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
-    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
-    <Compile Include="TestObjects\Container.cs" />
-    <Compile Include="TestObjects\Content.cs" />
-    <Compile Include="TestObjects\ContentBaseClass.cs" />
-    <Compile Include="TestObjects\ContentSubClass.cs" />
-    <Compile Include="TestObjects\ConverableMembers.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\DateTimeTestClass.cs" />
-    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
-    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
-    <Compile Include="TestObjects\DoubleClass.cs" />
-    <Compile Include="TestObjects\EmployeeReference.cs" />
-    <Compile Include="TestObjects\Event.cs" />
-    <Compile Include="TestObjects\Foo.cs" />
-    <Compile Include="TestObjects\GenericImpl.cs" />
-    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
-    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
-    <Compile Include="TestObjects\HolderClass.cs" />
-    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
-    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
-    <Compile Include="TestObjects\Invoice.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
-    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
-    <Compile Include="TestObjects\JaggedArray.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
-    <Compile Include="TestObjects\ListErrorObject.cs" />
-    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\ListOfIds.cs" />
-    <Compile Include="TestObjects\ListTestClass.cs" />
-    <Compile Include="TestObjects\LogEntry.cs" />
-    <Compile Include="TestObjects\MemberConverterClass.cs" />
-    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\MethodExecutorObject.cs" />
-    <Compile Include="TestObjects\Movie.cs" />
-    <Compile Include="TestObjects\MyClass.cs" />
-    <Compile Include="TestObjects\Name.cs" />
-    <Compile Include="TestObjects\NonRequest.cs" />
-    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
-    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
-    <Compile Include="TestObjects\Person.cs" />
-    <Compile Include="TestObjects\PersonError.cs" />
-    <Compile Include="TestObjects\PersonPropertyClass.cs" />
-    <Compile Include="TestObjects\PersonRaw.cs" />
-    <Compile Include="TestObjects\PhoneNumber.cs" />
-    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
-    <Compile Include="TestObjects\PrivateMembersClass.cs" />
-    <Compile Include="TestObjects\Product.cs" />
-    <Compile Include="TestObjects\ProductCollection.cs" />
-    <Compile Include="TestObjects\ProductShort.cs" />
-    <Compile Include="TestObjects\PropertyCase.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
-    <Compile Include="TestObjects\RequestOnly.cs" />
-    <Compile Include="TestObjects\RequiredMembersClass.cs" />
-    <Compile Include="TestObjects\RoleTransfer.cs" />
-    <Compile Include="TestObjects\SearchResult.cs" />
-    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
-    <Compile Include="TestObjects\SerializationEventTestList.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
-    <Compile Include="TestObjects\Shortie.cs" />
-    <Compile Include="TestObjects\Store.cs" />
-    <Compile Include="TestObjects\StoreColor.cs" />
-    <Compile Include="TestObjects\StructTest.cs" />
-    <Compile Include="TestObjects\SubKlass.cs" />
-    <Compile Include="TestObjects\SuperKlass.cs" />
-    <Compile Include="TestObjects\TypeClass.cs" />
-    <Compile Include="TestObjects\TypedSubHashtable.cs" />
-    <Compile Include="TestObjects\UserNullable.cs" />
-    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
-    <Compile Include="TestObjects\WagePerson.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
-    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <AppxManifest Include="Package.appxmanifest">
-      <SubType>Designer</SubType>
-    </AppxManifest>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Images\UnitTestLogo.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Images\UnitTestSmallLogo.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Images\UnitTestSplashScreen.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Images\UnitTestStoreLogo.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Metro.csproj">
-      <Project>{263136a2-b89b-424e-a87a-f988caa8d032}</Project>
-      <Name>Newtonsoft.Json.Metro</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Newtonsoft.Json.Tests.Metro_TemporaryKey.pfx" />
-  </ItemGroup>
-  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' ">
-    <VisualStudioVersion>11.0</VisualStudioVersion>
-  </PropertyGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{8D9C2E69-9FD7-4A7A-866C-739C9207CD0B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
+    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
+    <DefaultLanguage>en-US</DefaultLanguage>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <PackageCertificateKeyFile>Newtonsoft.Json.Tests.Metro_TemporaryKey.pfx</PackageCertificateKeyFile>
+    <PackageCertificateThumbprint>E58487D6BF8E40BC44C9BE962D19FB3EFBEB81BD</PackageCertificateThumbprint>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Metro\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Metro\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\ARM\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
+    <OutputPath>bin\ARM\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AppXPackage>True</AppXPackage>
+  </PropertyGroup>
+  <ItemGroup>
+    <!--A reference to the entire .Net Framework and Windows SDK are automatically included-->
+    <SDKReference Include="MSTestFramework, Version=11.0" />
+    <SDKReference Include="TestPlatform, Version=11.0" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonReaderTests.cs" />
+    <Compile Include="Bson\BsonWriterTests.cs" />
+    <Compile Include="Converters\BinaryConverterTests.cs" />
+    <Compile Include="Converters\CustomCreationConverterTests.cs" />
+    <Compile Include="Converters\DataSetConverterTests.cs" />
+    <Compile Include="Converters\DataTableConverterTests.cs" />
+    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
+    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
+    <Compile Include="Converters\ObjectIdConverterTests.cs" />
+    <Compile Include="Converters\RegexConverterTests.cs" />
+    <Compile Include="Converters\StringEnumConverterTests.cs" />
+    <Compile Include="Converters\VersionConverterTests.cs" />
+    <Compile Include="Converters\XmlNodeConverterTest.cs" />
+    <Compile Include="ExceptionTests.cs" />
+    <Compile Include="JsonArrayAttributeTests.cs" />
+    <Compile Include="JsonConvertTest.cs" />
+    <Compile Include="JsonTextReaderTest.cs" />
+    <Compile Include="JsonTextWriterTest.cs" />
+    <Compile Include="JsonValidatingReaderTests.cs" />
+    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
+    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
+    <Compile Include="Linq\DynamicTests.cs" />
+    <Compile Include="Linq\JArrayTests.cs" />
+    <Compile Include="Linq\JConstructorTests.cs" />
+    <Compile Include="Linq\JObjectTests.cs" />
+    <Compile Include="Linq\JPathTests.cs" />
+    <Compile Include="Linq\JPropertyTests.cs" />
+    <Compile Include="Linq\JRawTests.cs" />
+    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
+    <Compile Include="Linq\JTokenReaderTest.cs" />
+    <Compile Include="Linq\JTokenTests.cs" />
+    <Compile Include="Linq\JTokenWriterTest.cs" />
+    <Compile Include="Linq\JValueTests.cs" />
+    <Compile Include="Linq\LinqToJsonTest.cs" />
+    <Compile Include="PerformanceTests.cs" />
+    <Compile Include="Schema\ExtensionsTests.cs" />
+    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
+    <Compile Include="Schema\JsonSchemaTests.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
+    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
+    <Compile Include="Serialization\ContractResolverTests.cs" />
+    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
+    <Compile Include="Serialization\DynamicTests.cs" />
+    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
+    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
+    <Compile Include="Serialization\JsonSerializerTest.cs" />
+    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
+    <Compile Include="Serialization\NullValueHandlingTests.cs" />
+    <Compile Include="Serialization\PopulateTests.cs" />
+    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
+    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
+    <Compile Include="SilverlightTests.cs" />
+    <Compile Include="TestFixtureBase.cs" />
+    <Compile Include="TestObjects\AbstractGenericBase.cs" />
+    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\Article.cs" />
+    <Compile Include="TestObjects\ArticleCollection.cs" />
+    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
+    <Compile Include="TestObjects\Bar.cs" />
+    <Compile Include="TestObjects\Car.cs" />
+    <Compile Include="TestObjects\CircularReferenceClass.cs" />
+    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
+    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
+    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\ClassWithArray.cs" />
+    <Compile Include="TestObjects\ClassWithGuid.cs" />
+    <Compile Include="TestObjects\Computer.cs" />
+    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
+    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
+    <Compile Include="TestObjects\Container.cs" />
+    <Compile Include="TestObjects\Content.cs" />
+    <Compile Include="TestObjects\ContentBaseClass.cs" />
+    <Compile Include="TestObjects\ContentSubClass.cs" />
+    <Compile Include="TestObjects\ConverableMembers.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\DateTimeTestClass.cs" />
+    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
+    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
+    <Compile Include="TestObjects\DoubleClass.cs" />
+    <Compile Include="TestObjects\EmployeeReference.cs" />
+    <Compile Include="TestObjects\Event.cs" />
+    <Compile Include="TestObjects\Foo.cs" />
+    <Compile Include="TestObjects\GenericImpl.cs" />
+    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
+    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
+    <Compile Include="TestObjects\HolderClass.cs" />
+    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
+    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
+    <Compile Include="TestObjects\Invoice.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
+    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
+    <Compile Include="TestObjects\JaggedArray.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
+    <Compile Include="TestObjects\ListErrorObject.cs" />
+    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\ListOfIds.cs" />
+    <Compile Include="TestObjects\ListTestClass.cs" />
+    <Compile Include="TestObjects\LogEntry.cs" />
+    <Compile Include="TestObjects\MemberConverterClass.cs" />
+    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\MethodExecutorObject.cs" />
+    <Compile Include="TestObjects\Movie.cs" />
+    <Compile Include="TestObjects\MyClass.cs" />
+    <Compile Include="TestObjects\Name.cs" />
+    <Compile Include="TestObjects\NonRequest.cs" />
+    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
+    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
+    <Compile Include="TestObjects\Person.cs" />
+    <Compile Include="TestObjects\PersonError.cs" />
+    <Compile Include="TestObjects\PersonPropertyClass.cs" />
+    <Compile Include="TestObjects\PersonRaw.cs" />
+    <Compile Include="TestObjects\PhoneNumber.cs" />
+    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
+    <Compile Include="TestObjects\PrivateMembersClass.cs" />
+    <Compile Include="TestObjects\Product.cs" />
+    <Compile Include="TestObjects\ProductCollection.cs" />
+    <Compile Include="TestObjects\ProductShort.cs" />
+    <Compile Include="TestObjects\PropertyCase.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
+    <Compile Include="TestObjects\RequestOnly.cs" />
+    <Compile Include="TestObjects\RequiredMembersClass.cs" />
+    <Compile Include="TestObjects\RoleTransfer.cs" />
+    <Compile Include="TestObjects\SearchResult.cs" />
+    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
+    <Compile Include="TestObjects\SerializationEventTestList.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
+    <Compile Include="TestObjects\Shortie.cs" />
+    <Compile Include="TestObjects\Store.cs" />
+    <Compile Include="TestObjects\StoreColor.cs" />
+    <Compile Include="TestObjects\StructTest.cs" />
+    <Compile Include="TestObjects\SubKlass.cs" />
+    <Compile Include="TestObjects\SuperKlass.cs" />
+    <Compile Include="TestObjects\TypeClass.cs" />
+    <Compile Include="TestObjects\TypedSubHashtable.cs" />
+    <Compile Include="TestObjects\UserNullable.cs" />
+    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
+    <Compile Include="TestObjects\WagePerson.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
+    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <AppxManifest Include="Package.appxmanifest">
+      <SubType>Designer</SubType>
+    </AppxManifest>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Images\UnitTestLogo.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Images\UnitTestSmallLogo.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Images\UnitTestSplashScreen.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Images\UnitTestStoreLogo.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Metro.csproj">
+      <Project>{263136a2-b89b-424e-a87a-f988caa8d032}</Project>
+      <Name>Newtonsoft.Json.Metro</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Newtonsoft.Json.Tests.Metro_TemporaryKey.pfx" />
+  </ItemGroup>
+  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' ">
+    <VisualStudioVersion>11.0</VisualStudioVersion>
+  </PropertyGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
   </Target>  
   <Target Name="AfterBuild">
   </Target>
-  -->
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net20.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net20.csproj
@@ -1,269 +1,269 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{3E6E2335-B079-4B5B-A65A-9D586914BCBB}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
-    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
-    <SccProjectName>
-    </SccProjectName>
-    <SccLocalPath>
-    </SccLocalPath>
-    <SccAuxPath>
-    </SccAuxPath>
-    <SccProvider>
-    </SccProvider>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Net20\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;NET20</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Net20\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\Lib\NUnit\DotNet\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Security" />
-    <Reference Include="System.Web" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonReaderTests.cs" />
-    <Compile Include="Bson\BsonWriterTests.cs" />
-    <Compile Include="Converters\BinaryConverterTests.cs" />
-    <Compile Include="Converters\CustomCreationConverterTests.cs" />
-    <Compile Include="Converters\DataSetConverterTests.cs" />
-    <Compile Include="Converters\DataTableConverterTests.cs" />
-    <Compile Include="Converters\ObjectIdConverterTests.cs" />
-    <Compile Include="Converters\RegexConverterTests.cs" />
-    <Compile Include="Converters\StringEnumConverterTests.cs" />
-    <Compile Include="Converters\VersionConverterTests.cs" />
-    <Compile Include="JsonArrayAttributeTests.cs" />
-    <Compile Include="ExceptionTests.cs" />
-    <Compile Include="JsonValidatingReaderTests.cs" />
-    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
-    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
-    <Compile Include="Linq\JPathTests.cs" />
-    <Compile Include="Linq\JRawTests.cs" />
-    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
-    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
-    <Compile Include="TestObjects\Bar.cs" />
-    <Compile Include="TestObjects\Car.cs" />
-    <Compile Include="TestObjects\Computer.cs" />
-    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
-    <Compile Include="TestObjects\Container.cs" />
-    <Compile Include="TestObjects\Content.cs" />
-    <Compile Include="TestObjects\ContentBaseClass.cs" />
-    <Compile Include="TestObjects\ContentSubClass.cs" />
-    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
-    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
-    <Compile Include="TestObjects\Event.cs" />
-    <Compile Include="TestObjects\Foo.cs" />
-    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
-    <Compile Include="TestObjects\HolderClass.cs" />
-    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
-    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
-    <Compile Include="TestObjects\JsonPropertyClass.cs" />
-    <Compile Include="Serialization\JsonSerializerTest.cs" />
-    <Compile Include="TestObjects\ListOfIds.cs" />
-    <Compile Include="TestObjects\ListTestClass.cs" />
-    <Compile Include="TestObjects\LogEntry.cs" />
-    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
-    <Compile Include="TestObjects\Movie.cs" />
-    <Compile Include="TestObjects\NonRequest.cs" />
-    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
-    <Compile Include="Serialization\PopulateTests.cs" />
-    <Compile Include="TestObjects\PersonError.cs" />
-    <Compile Include="TestObjects\PersonPropertyClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
-    <Compile Include="TestObjects\PropertyCase.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
-    <Compile Include="TestObjects\RequestOnly.cs" />
-    <Compile Include="TestObjects\RoleTransfer.cs" />
-    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
-    <Compile Include="Schema\ExtensionsTests.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
-    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
-    <Compile Include="TestObjects\SearchResult.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
-    <Compile Include="TestObjects\StructTest.cs" />
-    <Compile Include="TestObjects\SubKlass.cs" />
-    <Compile Include="TestObjects\SuperKlass.cs" />
-    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
-    <Compile Include="TestObjects\AbstractGenericBase.cs" />
-    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
-    <Compile Include="TestObjects\CircularReferenceClass.cs" />
-    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
-    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
-    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\EmployeeReference.cs" />
-    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
-    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
-    <Compile Include="TestObjects\DoubleClass.cs" />
-    <Compile Include="TestObjects\GenericImpl.cs" />
-    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
-    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
-    <Compile Include="TestObjects\Invoice.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
-    <Compile Include="TestObjects\ListErrorObject.cs" />
-    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\MethodExecutorObject.cs" />
-    <Compile Include="TestObjects\JaggedArray.cs" />
-    <Compile Include="TestObjects\MyClass.cs" />
-    <Compile Include="TestObjects\Name.cs" />
-    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
-    <Compile Include="TestObjects\PersonRaw.cs" />
-    <Compile Include="TestObjects\PhoneNumber.cs" />
-    <Compile Include="TestObjects\PrivateMembersClass.cs" />
-    <Compile Include="TestObjects\RequiredMembersClass.cs" />
-    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
-    <Compile Include="TestObjects\SerializationEventTestList.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\Article.cs" />
-    <Compile Include="TestObjects\ArticleCollection.cs" />
-    <Compile Include="TestObjects\ClassWithArray.cs" />
-    <Compile Include="TestObjects\ClassWithGuid.cs" />
-    <Compile Include="TestObjects\ConverableMembers.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
-    <Compile Include="Linq\JConstructorTests.cs" />
-    <Compile Include="Linq\JPropertyTests.cs" />
-    <Compile Include="TestObjects\MemberConverterClass.cs" />
-    <Compile Include="TestObjects\Product.cs" />
-    <Compile Include="TestObjects\ProductCollection.cs" />
-    <Compile Include="TestObjects\ProductShort.cs" />
-    <Compile Include="TestObjects\Shortie.cs" />
-    <Compile Include="TestObjects\Store.cs" />
-    <Compile Include="TestObjects\StoreColor.cs" />
-    <Compile Include="TestObjects\Person.cs" />
-    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
-    <Compile Include="Schema\JsonSchemaTests.cs" />
-    <Compile Include="TestObjects\DateTimeTestClass.cs" />
-    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
-    <Compile Include="JsonConvertTest.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
-    <Compile Include="JsonTextReaderTest.cs" />
-    <Compile Include="JsonTextWriterTest.cs" />
-    <Compile Include="Linq\JTokenReaderTest.cs" />
-    <Compile Include="Linq\JTokenWriterTest.cs" />
-    <Compile Include="Linq\JArrayTests.cs" />
-    <Compile Include="Linq\JObjectTests.cs" />
-    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
-    <Compile Include="Linq\JTokenTests.cs" />
-    <Compile Include="Linq\JValueTests.cs" />
-    <Compile Include="Linq\LinqToJsonTest.cs" />
-    <Compile Include="PerformanceTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SilverlightTests.cs" />
-    <Compile Include="TestFixtureBase.cs" />
-    <Compile Include="Converters\XmlNodeConverterTest.cs" />
-    <Compile Include="TestObjects\TypeClass.cs" />
-    <Compile Include="TestObjects\TypedSubHashtable.cs" />
-    <Compile Include="TestObjects\UserNullable.cs" />
-    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
-    <Compile Include="TestObjects\WagePerson.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
-    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Net20.csproj">
-      <Project>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</Project>
-      <Name>Newtonsoft.Json.Net20</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3E6E2335-B079-4B5B-A65A-9D586914BCBB}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
+    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <SignAssembly>false</SignAssembly>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Net20\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;NET20</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Net20\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\NUnit\DotNet\nunit.framework.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Security" />
+    <Reference Include="System.Web" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonReaderTests.cs" />
+    <Compile Include="Bson\BsonWriterTests.cs" />
+    <Compile Include="Converters\BinaryConverterTests.cs" />
+    <Compile Include="Converters\CustomCreationConverterTests.cs" />
+    <Compile Include="Converters\DataSetConverterTests.cs" />
+    <Compile Include="Converters\DataTableConverterTests.cs" />
+    <Compile Include="Converters\ObjectIdConverterTests.cs" />
+    <Compile Include="Converters\RegexConverterTests.cs" />
+    <Compile Include="Converters\StringEnumConverterTests.cs" />
+    <Compile Include="Converters\VersionConverterTests.cs" />
+    <Compile Include="JsonArrayAttributeTests.cs" />
+    <Compile Include="ExceptionTests.cs" />
+    <Compile Include="JsonValidatingReaderTests.cs" />
+    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
+    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
+    <Compile Include="Linq\JPathTests.cs" />
+    <Compile Include="Linq\JRawTests.cs" />
+    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
+    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
+    <Compile Include="TestObjects\Bar.cs" />
+    <Compile Include="TestObjects\Car.cs" />
+    <Compile Include="TestObjects\Computer.cs" />
+    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
+    <Compile Include="TestObjects\Container.cs" />
+    <Compile Include="TestObjects\Content.cs" />
+    <Compile Include="TestObjects\ContentBaseClass.cs" />
+    <Compile Include="TestObjects\ContentSubClass.cs" />
+    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
+    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
+    <Compile Include="TestObjects\Event.cs" />
+    <Compile Include="TestObjects\Foo.cs" />
+    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
+    <Compile Include="TestObjects\HolderClass.cs" />
+    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
+    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
+    <Compile Include="TestObjects\JsonPropertyClass.cs" />
+    <Compile Include="Serialization\JsonSerializerTest.cs" />
+    <Compile Include="TestObjects\ListOfIds.cs" />
+    <Compile Include="TestObjects\ListTestClass.cs" />
+    <Compile Include="TestObjects\LogEntry.cs" />
+    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
+    <Compile Include="TestObjects\Movie.cs" />
+    <Compile Include="TestObjects\NonRequest.cs" />
+    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
+    <Compile Include="Serialization\PopulateTests.cs" />
+    <Compile Include="TestObjects\PersonError.cs" />
+    <Compile Include="TestObjects\PersonPropertyClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
+    <Compile Include="TestObjects\PropertyCase.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
+    <Compile Include="TestObjects\RequestOnly.cs" />
+    <Compile Include="TestObjects\RoleTransfer.cs" />
+    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
+    <Compile Include="Schema\ExtensionsTests.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
+    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
+    <Compile Include="TestObjects\SearchResult.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
+    <Compile Include="TestObjects\StructTest.cs" />
+    <Compile Include="TestObjects\SubKlass.cs" />
+    <Compile Include="TestObjects\SuperKlass.cs" />
+    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
+    <Compile Include="TestObjects\AbstractGenericBase.cs" />
+    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
+    <Compile Include="TestObjects\CircularReferenceClass.cs" />
+    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
+    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
+    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\EmployeeReference.cs" />
+    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
+    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
+    <Compile Include="TestObjects\DoubleClass.cs" />
+    <Compile Include="TestObjects\GenericImpl.cs" />
+    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
+    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
+    <Compile Include="TestObjects\Invoice.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
+    <Compile Include="TestObjects\ListErrorObject.cs" />
+    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\MethodExecutorObject.cs" />
+    <Compile Include="TestObjects\JaggedArray.cs" />
+    <Compile Include="TestObjects\MyClass.cs" />
+    <Compile Include="TestObjects\Name.cs" />
+    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
+    <Compile Include="TestObjects\PersonRaw.cs" />
+    <Compile Include="TestObjects\PhoneNumber.cs" />
+    <Compile Include="TestObjects\PrivateMembersClass.cs" />
+    <Compile Include="TestObjects\RequiredMembersClass.cs" />
+    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
+    <Compile Include="TestObjects\SerializationEventTestList.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\Article.cs" />
+    <Compile Include="TestObjects\ArticleCollection.cs" />
+    <Compile Include="TestObjects\ClassWithArray.cs" />
+    <Compile Include="TestObjects\ClassWithGuid.cs" />
+    <Compile Include="TestObjects\ConverableMembers.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
+    <Compile Include="Linq\JConstructorTests.cs" />
+    <Compile Include="Linq\JPropertyTests.cs" />
+    <Compile Include="TestObjects\MemberConverterClass.cs" />
+    <Compile Include="TestObjects\Product.cs" />
+    <Compile Include="TestObjects\ProductCollection.cs" />
+    <Compile Include="TestObjects\ProductShort.cs" />
+    <Compile Include="TestObjects\Shortie.cs" />
+    <Compile Include="TestObjects\Store.cs" />
+    <Compile Include="TestObjects\StoreColor.cs" />
+    <Compile Include="TestObjects\Person.cs" />
+    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
+    <Compile Include="Schema\JsonSchemaTests.cs" />
+    <Compile Include="TestObjects\DateTimeTestClass.cs" />
+    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
+    <Compile Include="JsonConvertTest.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
+    <Compile Include="JsonTextReaderTest.cs" />
+    <Compile Include="JsonTextWriterTest.cs" />
+    <Compile Include="Linq\JTokenReaderTest.cs" />
+    <Compile Include="Linq\JTokenWriterTest.cs" />
+    <Compile Include="Linq\JArrayTests.cs" />
+    <Compile Include="Linq\JObjectTests.cs" />
+    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
+    <Compile Include="Linq\JTokenTests.cs" />
+    <Compile Include="Linq\JValueTests.cs" />
+    <Compile Include="Linq\LinqToJsonTest.cs" />
+    <Compile Include="PerformanceTests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SilverlightTests.cs" />
+    <Compile Include="TestFixtureBase.cs" />
+    <Compile Include="Converters\XmlNodeConverterTest.cs" />
+    <Compile Include="TestObjects\TypeClass.cs" />
+    <Compile Include="TestObjects\TypedSubHashtable.cs" />
+    <Compile Include="TestObjects\UserNullable.cs" />
+    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
+    <Compile Include="TestObjects\WagePerson.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
+    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Net20.csproj">
+      <Project>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</Project>
+      <Name>Newtonsoft.Json.Net20</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net35.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Net35.csproj
@@ -1,326 +1,326 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{3E6E2335-B079-4B5B-A65A-9D586914BCBB}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
-    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
-    <SccProjectName>
-    </SccProjectName>
-    <SccLocalPath>
-    </SccLocalPath>
-    <SccAuxPath>
-    </SccAuxPath>
-    <SccProvider>
-    </SccProvider>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Net35\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;NET35</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Net35\</OutputPath>
-    <DefineConstants>TRACE;NET35</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\Lib\NUnit\DotNet\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.DataAnnotations">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Data.Entity">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Runtime.Serialization">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.ServiceModel">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.ServiceModel.Web">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Web.Extensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonWriterTests.cs" />
-    <Compile Include="Bson\BsonReaderTests.cs" />
-    <Compile Include="Converters\BinaryConverterTests.cs" />
-    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
-    <Compile Include="Converters\RegexConverterTests.cs" />
-    <Compile Include="Converters\DataTableConverterTests.cs" />
-    <Compile Include="Converters\DataSetConverterTests.cs" />
-    <Compile Include="Converters\CustomCreationConverterTests.cs" />
-    <Compile Include="Converters\ObjectIdConverterTests.cs" />
-    <Compile Include="Converters\StringEnumConverterTests.cs" />
-    <Compile Include="Converters\VersionConverterTests.cs" />
-    <Compile Include="JsonArrayAttributeTests.cs" />
-    <Compile Include="ExceptionTests.cs" />
-    <Compile Include="JsonValidatingReaderTests.cs" />
-    <Compile Include="LinqToSql\Department.cs" />
-    <Compile Include="LinqToSql\DepartmentConverter.cs" />
-    <Compile Include="LinqToSql\GuidByteArrayConverter.cs" />
-    <Compile Include="LinqToSql\Role.cs" />
-    <Compile Include="LinqToSql\LinqToSqlClasses.designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
-    </Compile>
-    <Compile Include="LinqToSql\LinqToSqlClassesSerializationTests.cs" />
-    <Compile Include="LinqToSql\Person.cs" />
-    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
-    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
-    <Compile Include="Linq\DynamicTests.cs" />
-    <Compile Include="Linq\JPathTests.cs" />
-    <Compile Include="Linq\JRawTests.cs" />
-    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
-    <Compile Include="Serialization\ContractResolverTests.cs" />
-    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
-    <Compile Include="Serialization\DynamicTests.cs" />
-    <Compile Include="Serialization\NullValueHandlingTests.cs" />
-    <Compile Include="TestObjects\Bar.cs" />
-    <Compile Include="TestObjects\Car.cs" />
-    <Compile Include="TestObjects\Computer.cs" />
-    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
-    <Compile Include="TestObjects\Container.cs" />
-    <Compile Include="TestObjects\ContentBaseClass.cs" />
-    <Compile Include="TestObjects\ContentSubClass.cs" />
-    <Compile Include="TestObjects\Foo.cs" />
-    <Compile Include="TestObjects\HolderClass.cs" />
-    <Compile Include="TestObjects\ListOfIds.cs" />
-    <Compile Include="TestObjects\Movie.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PersonError.cs" />
-    <Compile Include="TestObjects\PersonPropertyClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\Content.cs" />
-    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
-    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
-    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
-    <Compile Include="TestObjects\Event.cs" />
-    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
-    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyClass.cs" />
-    <Compile Include="TestObjects\ListErrorObject.cs" />
-    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
-    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
-    <Compile Include="Serialization\PopulateTests.cs" />
-    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
-    <Compile Include="Schema\ExtensionsTests.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
-    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
-    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
-    <Compile Include="TestObjects\ListTestClass.cs" />
-    <Compile Include="TestObjects\LogEntry.cs" />
-    <Compile Include="TestObjects\NonRequest.cs" />
-    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
-    <Compile Include="TestObjects\SearchResult.cs" />
-    <Compile Include="TestObjects\StructTest.cs" />
-    <Compile Include="TestObjects\WagePerson.cs" />
-    <Compile Include="TestObjects\PropertyCase.cs" />
-    <Compile Include="TestObjects\RequestOnly.cs" />
-    <Compile Include="TestObjects\RoleTransfer.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
-    <Compile Include="TestObjects\SubKlass.cs" />
-    <Compile Include="TestObjects\SuperKlass.cs" />
-    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
-    <Compile Include="TestObjects\AbstractGenericBase.cs" />
-    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
-    <Compile Include="TestObjects\CircularReferenceClass.cs" />
-    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
-    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
-    <Compile Include="TestObjects\EmployeeReference.cs" />
-    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
-    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
-    <Compile Include="TestObjects\DoubleClass.cs" />
-    <Compile Include="TestObjects\GenericImpl.cs" />
-    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
-    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
-    <Compile Include="TestObjects\Invoice.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
-    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\MethodExecutorObject.cs" />
-    <Compile Include="TestObjects\JaggedArray.cs" />
-    <Compile Include="TestObjects\MyClass.cs" />
-    <Compile Include="TestObjects\Name.cs" />
-    <Compile Include="TestObjects\PersonRaw.cs" />
-    <Compile Include="TestObjects\PhoneNumber.cs" />
-    <Compile Include="TestObjects\PrivateMembersClass.cs" />
-    <Compile Include="TestObjects\RequiredMembersClass.cs" />
-    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
-    <Compile Include="TestObjects\SerializationEventTestList.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\Article.cs" />
-    <Compile Include="TestObjects\ArticleCollection.cs" />
-    <Compile Include="TestObjects\ClassWithArray.cs" />
-    <Compile Include="TestObjects\ClassWithGuid.cs" />
-    <Compile Include="TestObjects\ConverableMembers.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
-    <Compile Include="Linq\JConstructorTests.cs" />
-    <Compile Include="Linq\JPropertyTests.cs" />
-    <Compile Include="TestObjects\MemberConverterClass.cs" />
-    <Compile Include="TestObjects\Product.cs" />
-    <Compile Include="TestObjects\ProductCollection.cs" />
-    <Compile Include="TestObjects\ProductShort.cs" />
-    <Compile Include="TestObjects\Shortie.cs" />
-    <Compile Include="TestObjects\Store.cs" />
-    <Compile Include="TestObjects\StoreColor.cs" />
-    <Compile Include="TestObjects\Person.cs" />
-    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
-    <Compile Include="Schema\JsonSchemaTests.cs" />
-    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
-    <Compile Include="TestObjects\DateTimeTestClass.cs" />
-    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
-    <Compile Include="JsonConvertTest.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
-    <Compile Include="Serialization\JsonSerializerTest.cs" />
-    <Compile Include="JsonTextReaderTest.cs" />
-    <Compile Include="JsonTextWriterTest.cs" />
-    <Compile Include="Linq\JTokenReaderTest.cs" />
-    <Compile Include="Linq\JTokenWriterTest.cs" />
-    <Compile Include="Linq\JArrayTests.cs" />
-    <Compile Include="Linq\JObjectTests.cs" />
-    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
-    <Compile Include="Linq\JTokenTests.cs" />
-    <Compile Include="Linq\JValueTests.cs" />
-    <Compile Include="Linq\LinqToJsonTest.cs" />
-    <Compile Include="PerformanceTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SilverlightTests.cs" />
-    <Compile Include="TestFixtureBase.cs" />
-    <Compile Include="Converters\XmlNodeConverterTest.cs" />
-    <Compile Include="TestObjects\TypeClass.cs" />
-    <Compile Include="TestObjects\TypedSubHashtable.cs" />
-    <Compile Include="TestObjects\UserNullable.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
-    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="LinqToSql\LinqToSqlClasses.dbml">
-      <Generator>MSLinqToSQLGenerator</Generator>
-      <LastGenOutput>LinqToSqlClasses.designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="LinqToSql\LinqToSqlClasses.dbml.layout">
-      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="bunny_pancake.jpg">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Net35.csproj">
-      <Project>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</Project>
-      <Name>Newtonsoft.Json.Net35</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3E6E2335-B079-4B5B-A65A-9D586914BCBB}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
+    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <SignAssembly>false</SignAssembly>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Net35\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;NET35</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Net35\</OutputPath>
+    <DefineConstants>TRACE;NET35</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\NUnit\DotNet\nunit.framework.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.ComponentModel.DataAnnotations">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Data.Entity">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Security" />
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel.Web">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Web" />
+    <Reference Include="System.Web.Extensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonWriterTests.cs" />
+    <Compile Include="Bson\BsonReaderTests.cs" />
+    <Compile Include="Converters\BinaryConverterTests.cs" />
+    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
+    <Compile Include="Converters\RegexConverterTests.cs" />
+    <Compile Include="Converters\DataTableConverterTests.cs" />
+    <Compile Include="Converters\DataSetConverterTests.cs" />
+    <Compile Include="Converters\CustomCreationConverterTests.cs" />
+    <Compile Include="Converters\ObjectIdConverterTests.cs" />
+    <Compile Include="Converters\StringEnumConverterTests.cs" />
+    <Compile Include="Converters\VersionConverterTests.cs" />
+    <Compile Include="JsonArrayAttributeTests.cs" />
+    <Compile Include="ExceptionTests.cs" />
+    <Compile Include="JsonValidatingReaderTests.cs" />
+    <Compile Include="LinqToSql\Department.cs" />
+    <Compile Include="LinqToSql\DepartmentConverter.cs" />
+    <Compile Include="LinqToSql\GuidByteArrayConverter.cs" />
+    <Compile Include="LinqToSql\Role.cs" />
+    <Compile Include="LinqToSql\LinqToSqlClasses.designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
+    </Compile>
+    <Compile Include="LinqToSql\LinqToSqlClassesSerializationTests.cs" />
+    <Compile Include="LinqToSql\Person.cs" />
+    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
+    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
+    <Compile Include="Linq\DynamicTests.cs" />
+    <Compile Include="Linq\JPathTests.cs" />
+    <Compile Include="Linq\JRawTests.cs" />
+    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
+    <Compile Include="Serialization\ContractResolverTests.cs" />
+    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
+    <Compile Include="Serialization\DynamicTests.cs" />
+    <Compile Include="Serialization\NullValueHandlingTests.cs" />
+    <Compile Include="TestObjects\Bar.cs" />
+    <Compile Include="TestObjects\Car.cs" />
+    <Compile Include="TestObjects\Computer.cs" />
+    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
+    <Compile Include="TestObjects\Container.cs" />
+    <Compile Include="TestObjects\ContentBaseClass.cs" />
+    <Compile Include="TestObjects\ContentSubClass.cs" />
+    <Compile Include="TestObjects\Foo.cs" />
+    <Compile Include="TestObjects\HolderClass.cs" />
+    <Compile Include="TestObjects\ListOfIds.cs" />
+    <Compile Include="TestObjects\Movie.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PersonError.cs" />
+    <Compile Include="TestObjects\PersonPropertyClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\Content.cs" />
+    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
+    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
+    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
+    <Compile Include="TestObjects\Event.cs" />
+    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
+    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyClass.cs" />
+    <Compile Include="TestObjects\ListErrorObject.cs" />
+    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
+    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
+    <Compile Include="Serialization\PopulateTests.cs" />
+    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
+    <Compile Include="Schema\ExtensionsTests.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
+    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
+    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
+    <Compile Include="TestObjects\ListTestClass.cs" />
+    <Compile Include="TestObjects\LogEntry.cs" />
+    <Compile Include="TestObjects\NonRequest.cs" />
+    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
+    <Compile Include="TestObjects\SearchResult.cs" />
+    <Compile Include="TestObjects\StructTest.cs" />
+    <Compile Include="TestObjects\WagePerson.cs" />
+    <Compile Include="TestObjects\PropertyCase.cs" />
+    <Compile Include="TestObjects\RequestOnly.cs" />
+    <Compile Include="TestObjects\RoleTransfer.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
+    <Compile Include="TestObjects\SubKlass.cs" />
+    <Compile Include="TestObjects\SuperKlass.cs" />
+    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
+    <Compile Include="TestObjects\AbstractGenericBase.cs" />
+    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
+    <Compile Include="TestObjects\CircularReferenceClass.cs" />
+    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
+    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
+    <Compile Include="TestObjects\EmployeeReference.cs" />
+    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
+    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
+    <Compile Include="TestObjects\DoubleClass.cs" />
+    <Compile Include="TestObjects\GenericImpl.cs" />
+    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
+    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
+    <Compile Include="TestObjects\Invoice.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
+    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\MethodExecutorObject.cs" />
+    <Compile Include="TestObjects\JaggedArray.cs" />
+    <Compile Include="TestObjects\MyClass.cs" />
+    <Compile Include="TestObjects\Name.cs" />
+    <Compile Include="TestObjects\PersonRaw.cs" />
+    <Compile Include="TestObjects\PhoneNumber.cs" />
+    <Compile Include="TestObjects\PrivateMembersClass.cs" />
+    <Compile Include="TestObjects\RequiredMembersClass.cs" />
+    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
+    <Compile Include="TestObjects\SerializationEventTestList.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\Article.cs" />
+    <Compile Include="TestObjects\ArticleCollection.cs" />
+    <Compile Include="TestObjects\ClassWithArray.cs" />
+    <Compile Include="TestObjects\ClassWithGuid.cs" />
+    <Compile Include="TestObjects\ConverableMembers.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
+    <Compile Include="Linq\JConstructorTests.cs" />
+    <Compile Include="Linq\JPropertyTests.cs" />
+    <Compile Include="TestObjects\MemberConverterClass.cs" />
+    <Compile Include="TestObjects\Product.cs" />
+    <Compile Include="TestObjects\ProductCollection.cs" />
+    <Compile Include="TestObjects\ProductShort.cs" />
+    <Compile Include="TestObjects\Shortie.cs" />
+    <Compile Include="TestObjects\Store.cs" />
+    <Compile Include="TestObjects\StoreColor.cs" />
+    <Compile Include="TestObjects\Person.cs" />
+    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
+    <Compile Include="Schema\JsonSchemaTests.cs" />
+    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
+    <Compile Include="TestObjects\DateTimeTestClass.cs" />
+    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
+    <Compile Include="JsonConvertTest.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
+    <Compile Include="Serialization\JsonSerializerTest.cs" />
+    <Compile Include="JsonTextReaderTest.cs" />
+    <Compile Include="JsonTextWriterTest.cs" />
+    <Compile Include="Linq\JTokenReaderTest.cs" />
+    <Compile Include="Linq\JTokenWriterTest.cs" />
+    <Compile Include="Linq\JArrayTests.cs" />
+    <Compile Include="Linq\JObjectTests.cs" />
+    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
+    <Compile Include="Linq\JTokenTests.cs" />
+    <Compile Include="Linq\JValueTests.cs" />
+    <Compile Include="Linq\LinqToJsonTest.cs" />
+    <Compile Include="PerformanceTests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SilverlightTests.cs" />
+    <Compile Include="TestFixtureBase.cs" />
+    <Compile Include="Converters\XmlNodeConverterTest.cs" />
+    <Compile Include="TestObjects\TypeClass.cs" />
+    <Compile Include="TestObjects\TypedSubHashtable.cs" />
+    <Compile Include="TestObjects\UserNullable.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
+    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="LinqToSql\LinqToSqlClasses.dbml">
+      <Generator>MSLinqToSQLGenerator</Generator>
+      <LastGenOutput>LinqToSqlClasses.designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="LinqToSql\LinqToSqlClasses.dbml.layout">
+      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="bunny_pancake.jpg">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Net35.csproj">
+      <Project>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</Project>
+      <Name>Newtonsoft.Json.Net35</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Silverlight.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Silverlight.csproj
@@ -1,305 +1,305 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-  </PropertyGroup>
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}</ProjectGuid>
-    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
-    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <SilverlightApplication>false</SilverlightApplication>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile />
-    <SignManifests>false</SignManifests>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug\Silverlight\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release\Silverlight\</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.CSharp, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="nunit.framework, Version=2.4.7.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\Lib\NUnit\Silverlight\nunit.framework.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Net">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Runtime.Serialization">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.ServiceModel.Web">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Windows">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="mscorlib" />
-    <Reference Include="system">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Core">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Windows.Browser">
-      <Private>True</Private>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonReaderTests.cs" />
-    <Compile Include="Bson\BsonWriterTests.cs" />
-    <Compile Include="Converters\BinaryConverterTests.cs" />
-    <Compile Include="Converters\CustomCreationConverterTests.cs" />
-    <Compile Include="Converters\DataSetConverterTests.cs" />
-    <Compile Include="Converters\DataTableConverterTests.cs" />
-    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
-    <Compile Include="Converters\ObjectIdConverterTests.cs" />
-    <Compile Include="Converters\RegexConverterTests.cs" />
-    <Compile Include="Converters\StringEnumConverterTests.cs" />
-    <Compile Include="Converters\VersionConverterTests.cs" />
-    <Compile Include="ExceptionTests.cs" />
-    <Compile Include="JsonArrayAttributeTests.cs" />
-    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
-    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
-    <Compile Include="Linq\DynamicTests.cs" />
-    <Compile Include="Linq\JPathTests.cs" />
-    <Compile Include="Linq\JRawTests.cs" />
-    <Compile Include="Linq\JTokenReaderTest.cs" />
-    <Compile Include="Linq\JTokenWriterTest.cs" />
-    <Compile Include="JsonValidatingReaderTests.cs" />
-    <Compile Include="Schema\ExtensionsTests.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
-    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
-    <Compile Include="Serialization\ContractResolverTests.cs" />
-    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
-    <Compile Include="Serialization\DynamicTests.cs" />
-    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
-    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
-    <Compile Include="Serialization\JsonSerializerTest.cs" />
-    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
-    <Compile Include="Serialization\NullValueHandlingTests.cs" />
-    <Compile Include="Serialization\PopulateTests.cs" />
-    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
-    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
-    <Compile Include="TestObjects\AbstractGenericBase.cs" />
-    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
-    <Compile Include="TestObjects\Bar.cs" />
-    <Compile Include="TestObjects\Car.cs" />
-    <Compile Include="TestObjects\CircularReferenceClass.cs" />
-    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
-    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\Computer.cs" />
-    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
-    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
-    <Compile Include="TestObjects\Container.cs" />
-    <Compile Include="TestObjects\Content.cs" />
-    <Compile Include="TestObjects\ContentBaseClass.cs" />
-    <Compile Include="TestObjects\ContentSubClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
-    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
-    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
-    <Compile Include="TestObjects\DoubleClass.cs" />
-    <Compile Include="TestObjects\EmployeeReference.cs" />
-    <Compile Include="TestObjects\Event.cs" />
-    <Compile Include="TestObjects\Foo.cs" />
-    <Compile Include="TestObjects\GenericImpl.cs" />
-    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
-    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
-    <Compile Include="TestObjects\HolderClass.cs" />
-    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
-    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
-    <Compile Include="TestObjects\Invoice.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
-    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
-    <Compile Include="TestObjects\JaggedArray.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
-    <Compile Include="TestObjects\ListErrorObject.cs" />
-    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\ListOfIds.cs" />
-    <Compile Include="TestObjects\ListTestClass.cs" />
-    <Compile Include="TestObjects\LogEntry.cs" />
-    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\MethodExecutorObject.cs" />
-    <Compile Include="TestObjects\Movie.cs" />
-    <Compile Include="TestObjects\MyClass.cs" />
-    <Compile Include="TestObjects\Name.cs" />
-    <Compile Include="TestObjects\NonRequest.cs" />
-    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
-    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
-    <Compile Include="TestObjects\PersonError.cs" />
-    <Compile Include="TestObjects\PersonPropertyClass.cs" />
-    <Compile Include="TestObjects\PersonRaw.cs" />
-    <Compile Include="TestObjects\PhoneNumber.cs" />
-    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
-    <Compile Include="TestObjects\PrivateMembersClass.cs" />
-    <Compile Include="TestObjects\PropertyCase.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
-    <Compile Include="TestObjects\RequestOnly.cs" />
-    <Compile Include="TestObjects\RequiredMembersClass.cs" />
-    <Compile Include="TestObjects\RoleTransfer.cs" />
-    <Compile Include="TestObjects\SearchResult.cs" />
-    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
-    <Compile Include="TestObjects\SerializationEventTestList.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\Article.cs" />
-    <Compile Include="TestObjects\ArticleCollection.cs" />
-    <Compile Include="TestObjects\ClassWithArray.cs" />
-    <Compile Include="TestObjects\ClassWithGuid.cs" />
-    <Compile Include="TestObjects\ConverableMembers.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
-    <Compile Include="Linq\JConstructorTests.cs" />
-    <Compile Include="Linq\JPropertyTests.cs" />
-    <Compile Include="TestObjects\MemberConverterClass.cs" />
-    <Compile Include="TestObjects\Product.cs" />
-    <Compile Include="TestObjects\ProductCollection.cs" />
-    <Compile Include="TestObjects\ProductShort.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
-    <Compile Include="TestObjects\Shortie.cs" />
-    <Compile Include="TestObjects\Store.cs" />
-    <Compile Include="TestObjects\StoreColor.cs" />
-    <Compile Include="TestObjects\Person.cs" />
-    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
-    <Compile Include="Schema\JsonSchemaTests.cs" />
-    <Compile Include="TestObjects\DateTimeTestClass.cs" />
-    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
-    <Compile Include="JsonConvertTest.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
-    <Compile Include="JsonTextReaderTest.cs" />
-    <Compile Include="JsonTextWriterTest.cs" />
-    <Compile Include="Linq\JArrayTests.cs" />
-    <Compile Include="Linq\JObjectTests.cs" />
-    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
-    <Compile Include="Linq\JTokenTests.cs" />
-    <Compile Include="Linq\JValueTests.cs" />
-    <Compile Include="Linq\LinqToJsonTest.cs" />
-    <Compile Include="PerformanceTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SilverlightTests.cs" />
-    <Compile Include="TestFixtureBase.cs" />
-    <Compile Include="Converters\XmlNodeConverterTest.cs" />
-    <Compile Include="TestObjects\StructTest.cs" />
-    <Compile Include="TestObjects\SubKlass.cs" />
-    <Compile Include="TestObjects\SuperKlass.cs" />
-    <Compile Include="TestObjects\TypeClass.cs" />
-    <Compile Include="TestObjects\TypedSubHashtable.cs" />
-    <Compile Include="TestObjects\UserNullable.cs" />
-    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
-    <Compile Include="TestObjects\WagePerson.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
-    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Silverlight.csproj">
-      <Project>{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}</Project>
-      <Name>Newtonsoft.Json.Silverlight</Name>
-      <Private>True</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ProjectExtensions>
-    <VisualStudio>
-      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
-        <SilverlightProjectProperties />
-      </FlavorProperties>
-    </VisualStudio>
-  </ProjectExtensions>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{0D8C3C2E-62C6-4C93-9377-6F74DD6BFD93}</ProjectGuid>
+    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
+    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <SilverlightApplication>false</SilverlightApplication>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+    <SignManifests>false</SignManifests>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug\Silverlight\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release\Silverlight\</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.CSharp, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="nunit.framework, Version=2.4.7.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\NUnit\Silverlight\nunit.framework.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Net">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.ServiceModel.Web">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Windows">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="mscorlib" />
+    <Reference Include="system">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Core">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Windows.Browser">
+      <Private>True</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonReaderTests.cs" />
+    <Compile Include="Bson\BsonWriterTests.cs" />
+    <Compile Include="Converters\BinaryConverterTests.cs" />
+    <Compile Include="Converters\CustomCreationConverterTests.cs" />
+    <Compile Include="Converters\DataSetConverterTests.cs" />
+    <Compile Include="Converters\DataTableConverterTests.cs" />
+    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
+    <Compile Include="Converters\ObjectIdConverterTests.cs" />
+    <Compile Include="Converters\RegexConverterTests.cs" />
+    <Compile Include="Converters\StringEnumConverterTests.cs" />
+    <Compile Include="Converters\VersionConverterTests.cs" />
+    <Compile Include="ExceptionTests.cs" />
+    <Compile Include="JsonArrayAttributeTests.cs" />
+    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
+    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
+    <Compile Include="Linq\DynamicTests.cs" />
+    <Compile Include="Linq\JPathTests.cs" />
+    <Compile Include="Linq\JRawTests.cs" />
+    <Compile Include="Linq\JTokenReaderTest.cs" />
+    <Compile Include="Linq\JTokenWriterTest.cs" />
+    <Compile Include="JsonValidatingReaderTests.cs" />
+    <Compile Include="Schema\ExtensionsTests.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
+    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
+    <Compile Include="Serialization\ContractResolverTests.cs" />
+    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
+    <Compile Include="Serialization\DynamicTests.cs" />
+    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
+    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
+    <Compile Include="Serialization\JsonSerializerTest.cs" />
+    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
+    <Compile Include="Serialization\NullValueHandlingTests.cs" />
+    <Compile Include="Serialization\PopulateTests.cs" />
+    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
+    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
+    <Compile Include="TestObjects\AbstractGenericBase.cs" />
+    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
+    <Compile Include="TestObjects\Bar.cs" />
+    <Compile Include="TestObjects\Car.cs" />
+    <Compile Include="TestObjects\CircularReferenceClass.cs" />
+    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
+    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\Computer.cs" />
+    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
+    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
+    <Compile Include="TestObjects\Container.cs" />
+    <Compile Include="TestObjects\Content.cs" />
+    <Compile Include="TestObjects\ContentBaseClass.cs" />
+    <Compile Include="TestObjects\ContentSubClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
+    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
+    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
+    <Compile Include="TestObjects\DoubleClass.cs" />
+    <Compile Include="TestObjects\EmployeeReference.cs" />
+    <Compile Include="TestObjects\Event.cs" />
+    <Compile Include="TestObjects\Foo.cs" />
+    <Compile Include="TestObjects\GenericImpl.cs" />
+    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
+    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
+    <Compile Include="TestObjects\HolderClass.cs" />
+    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
+    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
+    <Compile Include="TestObjects\Invoice.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
+    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
+    <Compile Include="TestObjects\JaggedArray.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
+    <Compile Include="TestObjects\ListErrorObject.cs" />
+    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\ListOfIds.cs" />
+    <Compile Include="TestObjects\ListTestClass.cs" />
+    <Compile Include="TestObjects\LogEntry.cs" />
+    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\MethodExecutorObject.cs" />
+    <Compile Include="TestObjects\Movie.cs" />
+    <Compile Include="TestObjects\MyClass.cs" />
+    <Compile Include="TestObjects\Name.cs" />
+    <Compile Include="TestObjects\NonRequest.cs" />
+    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
+    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
+    <Compile Include="TestObjects\PersonError.cs" />
+    <Compile Include="TestObjects\PersonPropertyClass.cs" />
+    <Compile Include="TestObjects\PersonRaw.cs" />
+    <Compile Include="TestObjects\PhoneNumber.cs" />
+    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
+    <Compile Include="TestObjects\PrivateMembersClass.cs" />
+    <Compile Include="TestObjects\PropertyCase.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
+    <Compile Include="TestObjects\RequestOnly.cs" />
+    <Compile Include="TestObjects\RequiredMembersClass.cs" />
+    <Compile Include="TestObjects\RoleTransfer.cs" />
+    <Compile Include="TestObjects\SearchResult.cs" />
+    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
+    <Compile Include="TestObjects\SerializationEventTestList.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\Article.cs" />
+    <Compile Include="TestObjects\ArticleCollection.cs" />
+    <Compile Include="TestObjects\ClassWithArray.cs" />
+    <Compile Include="TestObjects\ClassWithGuid.cs" />
+    <Compile Include="TestObjects\ConverableMembers.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
+    <Compile Include="Linq\JConstructorTests.cs" />
+    <Compile Include="Linq\JPropertyTests.cs" />
+    <Compile Include="TestObjects\MemberConverterClass.cs" />
+    <Compile Include="TestObjects\Product.cs" />
+    <Compile Include="TestObjects\ProductCollection.cs" />
+    <Compile Include="TestObjects\ProductShort.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
+    <Compile Include="TestObjects\Shortie.cs" />
+    <Compile Include="TestObjects\Store.cs" />
+    <Compile Include="TestObjects\StoreColor.cs" />
+    <Compile Include="TestObjects\Person.cs" />
+    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
+    <Compile Include="Schema\JsonSchemaTests.cs" />
+    <Compile Include="TestObjects\DateTimeTestClass.cs" />
+    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
+    <Compile Include="JsonConvertTest.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
+    <Compile Include="JsonTextReaderTest.cs" />
+    <Compile Include="JsonTextWriterTest.cs" />
+    <Compile Include="Linq\JArrayTests.cs" />
+    <Compile Include="Linq\JObjectTests.cs" />
+    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
+    <Compile Include="Linq\JTokenTests.cs" />
+    <Compile Include="Linq\JValueTests.cs" />
+    <Compile Include="Linq\LinqToJsonTest.cs" />
+    <Compile Include="PerformanceTests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SilverlightTests.cs" />
+    <Compile Include="TestFixtureBase.cs" />
+    <Compile Include="Converters\XmlNodeConverterTest.cs" />
+    <Compile Include="TestObjects\StructTest.cs" />
+    <Compile Include="TestObjects\SubKlass.cs" />
+    <Compile Include="TestObjects\SuperKlass.cs" />
+    <Compile Include="TestObjects\TypeClass.cs" />
+    <Compile Include="TestObjects\TypedSubHashtable.cs" />
+    <Compile Include="TestObjects\UserNullable.cs" />
+    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
+    <Compile Include="TestObjects\WagePerson.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
+    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.Silverlight.csproj">
+      <Project>{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}</Project>
+      <Name>Newtonsoft.Json.Silverlight</Name>
+      <Private>True</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+        <SilverlightProjectProperties />
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.WindowsPhone.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.WindowsPhone.csproj
@@ -1,245 +1,245 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}</ProjectGuid>
-    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
-    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <TargetFrameworkProfile>WindowsPhone</TargetFrameworkProfile>
-    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
-    <SilverlightApplication>false</SilverlightApplication>
-    <ValidateXaml>true</ValidateXaml>
-    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug\WindowsPhone\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release\WindowsPhone\</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="nunit.framework">
-      <HintPath>..\Lib\NUnit\Silverlight\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="System.Runtime.Serialization">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Windows">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="system">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Core">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Net">
-      <Private>True</Private>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonReaderTests.cs" />
-    <Compile Include="Bson\BsonWriterTests.cs" />
-    <Compile Include="Converters\BinaryConverterTests.cs" />
-    <Compile Include="Converters\CustomCreationConverterTests.cs" />
-    <Compile Include="Converters\DataSetConverterTests.cs" />
-    <Compile Include="Converters\DataTableConverterTests.cs" />
-    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
-    <Compile Include="Converters\ObjectIdConverterTests.cs" />
-    <Compile Include="Converters\RegexConverterTests.cs" />
-    <Compile Include="Converters\StringEnumConverterTests.cs" />
-    <Compile Include="Converters\VersionConverterTests.cs" />
-    <Compile Include="ExceptionTests.cs" />
-    <Compile Include="JsonArrayAttributeTests.cs" />
-    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
-    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
-    <Compile Include="Linq\JPathTests.cs" />
-    <Compile Include="Linq\JRawTests.cs" />
-    <Compile Include="Linq\JTokenReaderTest.cs" />
-    <Compile Include="Linq\JTokenWriterTest.cs" />
-    <Compile Include="JsonValidatingReaderTests.cs" />
-    <Compile Include="Schema\ExtensionsTests.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
-    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
-    <Compile Include="Serialization\ContractResolverTests.cs" />
-    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
-    <Compile Include="Serialization\DynamicTests.cs" />
-    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
-    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
-    <Compile Include="Serialization\JsonSerializerTest.cs" />
-    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
-    <Compile Include="Serialization\NullValueHandlingTests.cs" />
-    <Compile Include="Serialization\PopulateTests.cs" />
-    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
-    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
-    <Compile Include="TestObjects\AbstractGenericBase.cs" />
-    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
-    <Compile Include="TestObjects\Bar.cs" />
-    <Compile Include="TestObjects\Car.cs" />
-    <Compile Include="TestObjects\CircularReferenceClass.cs" />
-    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
-    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\Computer.cs" />
-    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
-    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
-    <Compile Include="TestObjects\Container.cs" />
-    <Compile Include="TestObjects\Content.cs" />
-    <Compile Include="TestObjects\ContentBaseClass.cs" />
-    <Compile Include="TestObjects\ContentSubClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
-    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
-    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
-    <Compile Include="TestObjects\DoubleClass.cs" />
-    <Compile Include="TestObjects\EmployeeReference.cs" />
-    <Compile Include="TestObjects\Event.cs" />
-    <Compile Include="TestObjects\Foo.cs" />
-    <Compile Include="TestObjects\GenericImpl.cs" />
-    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
-    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
-    <Compile Include="TestObjects\HolderClass.cs" />
-    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
-    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
-    <Compile Include="TestObjects\Invoice.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
-    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
-    <Compile Include="TestObjects\JaggedArray.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
-    <Compile Include="TestObjects\ListErrorObject.cs" />
-    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
-    <Compile Include="TestObjects\ListOfIds.cs" />
-    <Compile Include="TestObjects\ListTestClass.cs" />
-    <Compile Include="TestObjects\LogEntry.cs" />
-    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\MethodExecutorObject.cs" />
-    <Compile Include="TestObjects\Movie.cs" />
-    <Compile Include="TestObjects\MyClass.cs" />
-    <Compile Include="TestObjects\Name.cs" />
-    <Compile Include="TestObjects\NonRequest.cs" />
-    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
-    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
-    <Compile Include="TestObjects\PersonError.cs" />
-    <Compile Include="TestObjects\PersonPropertyClass.cs" />
-    <Compile Include="TestObjects\PersonRaw.cs" />
-    <Compile Include="TestObjects\PhoneNumber.cs" />
-    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
-    <Compile Include="TestObjects\PrivateMembersClass.cs" />
-    <Compile Include="TestObjects\PropertyCase.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
-    <Compile Include="TestObjects\RequestOnly.cs" />
-    <Compile Include="TestObjects\RequiredMembersClass.cs" />
-    <Compile Include="TestObjects\RoleTransfer.cs" />
-    <Compile Include="TestObjects\SearchResult.cs" />
-    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
-    <Compile Include="TestObjects\SerializationEventTestList.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\Article.cs" />
-    <Compile Include="TestObjects\ArticleCollection.cs" />
-    <Compile Include="TestObjects\ClassWithArray.cs" />
-    <Compile Include="TestObjects\ClassWithGuid.cs" />
-    <Compile Include="TestObjects\ConverableMembers.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
-    <Compile Include="Linq\JConstructorTests.cs" />
-    <Compile Include="Linq\JPropertyTests.cs" />
-    <Compile Include="TestObjects\MemberConverterClass.cs" />
-    <Compile Include="TestObjects\Product.cs" />
-    <Compile Include="TestObjects\ProductCollection.cs" />
-    <Compile Include="TestObjects\ProductShort.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
-    <Compile Include="TestObjects\Shortie.cs" />
-    <Compile Include="TestObjects\Store.cs" />
-    <Compile Include="TestObjects\StoreColor.cs" />
-    <Compile Include="TestObjects\Person.cs" />
-    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
-    <Compile Include="Schema\JsonSchemaTests.cs" />
-    <Compile Include="TestObjects\DateTimeTestClass.cs" />
-    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
-    <Compile Include="JsonConvertTest.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
-    <Compile Include="JsonTextReaderTest.cs" />
-    <Compile Include="JsonTextWriterTest.cs" />
-    <Compile Include="Linq\JArrayTests.cs" />
-    <Compile Include="Linq\JObjectTests.cs" />
-    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
-    <Compile Include="Linq\JTokenTests.cs" />
-    <Compile Include="Linq\JValueTests.cs" />
-    <Compile Include="Linq\LinqToJsonTest.cs" />
-    <Compile Include="PerformanceTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SilverlightTests.cs" />
-    <Compile Include="TestFixtureBase.cs" />
-    <Compile Include="Converters\XmlNodeConverterTest.cs" />
-    <Compile Include="TestObjects\StructTest.cs" />
-    <Compile Include="TestObjects\SubKlass.cs" />
-    <Compile Include="TestObjects\SuperKlass.cs" />
-    <Compile Include="TestObjects\TypeClass.cs" />
-    <Compile Include="TestObjects\TypedSubHashtable.cs" />
-    <Compile Include="TestObjects\UserNullable.cs" />
-    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
-    <Compile Include="TestObjects\WagePerson.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
-    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.WindowsPhone.csproj">
-      <Project>{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}</Project>
-      <Name>Newtonsoft.Json.WindowsPhone</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
-  <ProjectExtensions />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}</ProjectGuid>
+    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
+    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <TargetFrameworkProfile>WindowsPhone</TargetFrameworkProfile>
+    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+    <SilverlightApplication>false</SilverlightApplication>
+    <ValidateXaml>true</ValidateXaml>
+    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug\WindowsPhone\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release\WindowsPhone\</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit.framework">
+      <HintPath>..\Lib\NUnit\Silverlight\nunit.framework.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Windows">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="system">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Core">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Net">
+      <Private>True</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonReaderTests.cs" />
+    <Compile Include="Bson\BsonWriterTests.cs" />
+    <Compile Include="Converters\BinaryConverterTests.cs" />
+    <Compile Include="Converters\CustomCreationConverterTests.cs" />
+    <Compile Include="Converters\DataSetConverterTests.cs" />
+    <Compile Include="Converters\DataTableConverterTests.cs" />
+    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
+    <Compile Include="Converters\ObjectIdConverterTests.cs" />
+    <Compile Include="Converters\RegexConverterTests.cs" />
+    <Compile Include="Converters\StringEnumConverterTests.cs" />
+    <Compile Include="Converters\VersionConverterTests.cs" />
+    <Compile Include="ExceptionTests.cs" />
+    <Compile Include="JsonArrayAttributeTests.cs" />
+    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
+    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
+    <Compile Include="Linq\JPathTests.cs" />
+    <Compile Include="Linq\JRawTests.cs" />
+    <Compile Include="Linq\JTokenReaderTest.cs" />
+    <Compile Include="Linq\JTokenWriterTest.cs" />
+    <Compile Include="JsonValidatingReaderTests.cs" />
+    <Compile Include="Schema\ExtensionsTests.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
+    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
+    <Compile Include="Serialization\ContractResolverTests.cs" />
+    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
+    <Compile Include="Serialization\DynamicTests.cs" />
+    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
+    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
+    <Compile Include="Serialization\JsonSerializerTest.cs" />
+    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
+    <Compile Include="Serialization\NullValueHandlingTests.cs" />
+    <Compile Include="Serialization\PopulateTests.cs" />
+    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
+    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
+    <Compile Include="TestObjects\AbstractGenericBase.cs" />
+    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
+    <Compile Include="TestObjects\Bar.cs" />
+    <Compile Include="TestObjects\Car.cs" />
+    <Compile Include="TestObjects\CircularReferenceClass.cs" />
+    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
+    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\Computer.cs" />
+    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
+    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
+    <Compile Include="TestObjects\Container.cs" />
+    <Compile Include="TestObjects\Content.cs" />
+    <Compile Include="TestObjects\ContentBaseClass.cs" />
+    <Compile Include="TestObjects\ContentSubClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
+    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
+    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
+    <Compile Include="TestObjects\DoubleClass.cs" />
+    <Compile Include="TestObjects\EmployeeReference.cs" />
+    <Compile Include="TestObjects\Event.cs" />
+    <Compile Include="TestObjects\Foo.cs" />
+    <Compile Include="TestObjects\GenericImpl.cs" />
+    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
+    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
+    <Compile Include="TestObjects\HolderClass.cs" />
+    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
+    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
+    <Compile Include="TestObjects\Invoice.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
+    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
+    <Compile Include="TestObjects\JaggedArray.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
+    <Compile Include="TestObjects\ListErrorObject.cs" />
+    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
+    <Compile Include="TestObjects\ListOfIds.cs" />
+    <Compile Include="TestObjects\ListTestClass.cs" />
+    <Compile Include="TestObjects\LogEntry.cs" />
+    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\MethodExecutorObject.cs" />
+    <Compile Include="TestObjects\Movie.cs" />
+    <Compile Include="TestObjects\MyClass.cs" />
+    <Compile Include="TestObjects\Name.cs" />
+    <Compile Include="TestObjects\NonRequest.cs" />
+    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
+    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
+    <Compile Include="TestObjects\PersonError.cs" />
+    <Compile Include="TestObjects\PersonPropertyClass.cs" />
+    <Compile Include="TestObjects\PersonRaw.cs" />
+    <Compile Include="TestObjects\PhoneNumber.cs" />
+    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
+    <Compile Include="TestObjects\PrivateMembersClass.cs" />
+    <Compile Include="TestObjects\PropertyCase.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
+    <Compile Include="TestObjects\RequestOnly.cs" />
+    <Compile Include="TestObjects\RequiredMembersClass.cs" />
+    <Compile Include="TestObjects\RoleTransfer.cs" />
+    <Compile Include="TestObjects\SearchResult.cs" />
+    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
+    <Compile Include="TestObjects\SerializationEventTestList.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\Article.cs" />
+    <Compile Include="TestObjects\ArticleCollection.cs" />
+    <Compile Include="TestObjects\ClassWithArray.cs" />
+    <Compile Include="TestObjects\ClassWithGuid.cs" />
+    <Compile Include="TestObjects\ConverableMembers.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
+    <Compile Include="Linq\JConstructorTests.cs" />
+    <Compile Include="Linq\JPropertyTests.cs" />
+    <Compile Include="TestObjects\MemberConverterClass.cs" />
+    <Compile Include="TestObjects\Product.cs" />
+    <Compile Include="TestObjects\ProductCollection.cs" />
+    <Compile Include="TestObjects\ProductShort.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
+    <Compile Include="TestObjects\Shortie.cs" />
+    <Compile Include="TestObjects\Store.cs" />
+    <Compile Include="TestObjects\StoreColor.cs" />
+    <Compile Include="TestObjects\Person.cs" />
+    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
+    <Compile Include="Schema\JsonSchemaTests.cs" />
+    <Compile Include="TestObjects\DateTimeTestClass.cs" />
+    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
+    <Compile Include="JsonConvertTest.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
+    <Compile Include="JsonTextReaderTest.cs" />
+    <Compile Include="JsonTextWriterTest.cs" />
+    <Compile Include="Linq\JArrayTests.cs" />
+    <Compile Include="Linq\JObjectTests.cs" />
+    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
+    <Compile Include="Linq\JTokenTests.cs" />
+    <Compile Include="Linq\JValueTests.cs" />
+    <Compile Include="Linq\LinqToJsonTest.cs" />
+    <Compile Include="PerformanceTests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SilverlightTests.cs" />
+    <Compile Include="TestFixtureBase.cs" />
+    <Compile Include="Converters\XmlNodeConverterTest.cs" />
+    <Compile Include="TestObjects\StructTest.cs" />
+    <Compile Include="TestObjects\SubKlass.cs" />
+    <Compile Include="TestObjects\SuperKlass.cs" />
+    <Compile Include="TestObjects\TypeClass.cs" />
+    <Compile Include="TestObjects\TypedSubHashtable.cs" />
+    <Compile Include="TestObjects\UserNullable.cs" />
+    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
+    <Compile Include="TestObjects\WagePerson.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
+    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.WindowsPhone.csproj">
+      <Project>{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}</Project>
+      <Name>Newtonsoft.Json.WindowsPhone</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
+  <ProjectExtensions />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.csproj
@@ -1,345 +1,345 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{3E6E2335-B079-4B5B-A65A-9D586914BCBB}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
-    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
-    <SccProjectName>
-    </SccProjectName>
-    <SccLocalPath>
-    </SccLocalPath>
-    <SccAuxPath>
-    </SccAuxPath>
-    <SccProvider>
-    </SccProvider>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile>
-    </TargetFrameworkProfile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Net\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Net\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\Lib\NUnit\DotNet\nunit.framework.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.ComponentModel.DataAnnotations">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Data.Entity">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Runtime.Serialization">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Security" />
-    <Reference Include="System.ServiceModel">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.ServiceModel.Web">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Web.Extensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonWriterTests.cs" />
-    <Compile Include="Bson\BsonReaderTests.cs" />
-    <Compile Include="Converters\BinaryConverterTests.cs" />
-    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
-    <Compile Include="Converters\RegexConverterTests.cs" />
-    <Compile Include="Converters\DataTableConverterTests.cs" />
-    <Compile Include="Converters\DataSetConverterTests.cs" />
-    <Compile Include="Converters\CustomCreationConverterTests.cs" />
-    <Compile Include="Converters\ObjectIdConverterTests.cs" />
-    <Compile Include="Converters\StringEnumConverterTests.cs" />
-    <Compile Include="Converters\VersionConverterTests.cs" />
-    <Compile Include="FileSystemEntityModel.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>FileSystemEntityModel.edmx</DependentUpon>
-    </Compile>
-    <Compile Include="JsonArrayAttributeTests.cs" />
-    <Compile Include="ExceptionTests.cs" />
-    <Compile Include="JsonValidatingReaderTests.cs" />
-    <Compile Include="LinqToSql\Department.cs" />
-    <Compile Include="LinqToSql\DepartmentConverter.cs" />
-    <Compile Include="LinqToSql\GuidByteArrayConverter.cs" />
-    <Compile Include="LinqToSql\Role.cs" />
-    <Compile Include="LinqToSql\LinqToSqlClasses.designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
-    </Compile>
-    <Compile Include="LinqToSql\LinqToSqlClassesSerializationTests.cs" />
-    <Compile Include="LinqToSql\Person.cs" />
-    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
-    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
-    <Compile Include="Linq\DynamicTests.cs" />
-    <Compile Include="Linq\JPathTests.cs" />
-    <Compile Include="Linq\JRawTests.cs" />
-    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
-    <Compile Include="Serialization\ContractResolverTests.cs" />
-    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
-    <Compile Include="Serialization\DynamicTests.cs" />
-    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
-    <Compile Include="Serialization\NullValueHandlingTests.cs" />
-    <Compile Include="TestObjects\Bar.cs" />
-    <Compile Include="TestObjects\Car.cs" />
-    <Compile Include="TestObjects\Computer.cs" />
-    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
-    <Compile Include="TestObjects\Container.cs" />
-    <Compile Include="TestObjects\ContentBaseClass.cs" />
-    <Compile Include="TestObjects\ContentSubClass.cs" />
-    <Compile Include="TestObjects\Foo.cs" />
-    <Compile Include="TestObjects\HolderClass.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
-    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
-    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
-    <Compile Include="TestObjects\ListOfIds.cs" />
-    <Compile Include="TestObjects\Movie.cs" />
-    <Compile Include="TestObjects\PersonError.cs" />
-    <Compile Include="TestObjects\PersonPropertyClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\Content.cs" />
-    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
-    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
-    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
-    <Compile Include="TestObjects\Event.cs" />
-    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
-    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
-    <Compile Include="TestObjects\JsonPropertyClass.cs" />
-    <Compile Include="TestObjects\ListErrorObject.cs" />
-    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
-    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
-    <Compile Include="Serialization\PopulateTests.cs" />
-    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
-    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
-    <Compile Include="Schema\ExtensionsTests.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
-    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
-    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
-    <Compile Include="TestObjects\ListTestClass.cs" />
-    <Compile Include="TestObjects\LogEntry.cs" />
-    <Compile Include="TestObjects\NonRequest.cs" />
-    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
-    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
-    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
-    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
-    <Compile Include="TestObjects\SearchResult.cs" />
-    <Compile Include="TestObjects\StructTest.cs" />
-    <Compile Include="TestObjects\WagePerson.cs" />
-    <Compile Include="TestObjects\PropertyCase.cs" />
-    <Compile Include="TestObjects\RequestOnly.cs" />
-    <Compile Include="TestObjects\RoleTransfer.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
-    <Compile Include="TestObjects\SubKlass.cs" />
-    <Compile Include="TestObjects\SuperKlass.cs" />
-    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
-    <Compile Include="TestObjects\AbstractGenericBase.cs" />
-    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
-    <Compile Include="TestObjects\CircularReferenceClass.cs" />
-    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
-    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
-    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
-    <Compile Include="TestObjects\EmployeeReference.cs" />
-    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
-    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
-    <Compile Include="TestObjects\DoubleClass.cs" />
-    <Compile Include="TestObjects\GenericImpl.cs" />
-    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
-    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
-    <Compile Include="TestObjects\Invoice.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
-    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
-    <Compile Include="TestObjects\MethodExecutorObject.cs" />
-    <Compile Include="TestObjects\JaggedArray.cs" />
-    <Compile Include="TestObjects\MyClass.cs" />
-    <Compile Include="TestObjects\Name.cs" />
-    <Compile Include="TestObjects\PersonRaw.cs" />
-    <Compile Include="TestObjects\PhoneNumber.cs" />
-    <Compile Include="TestObjects\PrivateMembersClass.cs" />
-    <Compile Include="TestObjects\RequiredMembersClass.cs" />
-    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
-    <Compile Include="TestObjects\SerializationEventTestList.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
-    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
-    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
-    <Compile Include="TestObjects\Article.cs" />
-    <Compile Include="TestObjects\ArticleCollection.cs" />
-    <Compile Include="TestObjects\ClassWithArray.cs" />
-    <Compile Include="TestObjects\ClassWithGuid.cs" />
-    <Compile Include="TestObjects\ConverableMembers.cs" />
-    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
-    <Compile Include="Linq\JConstructorTests.cs" />
-    <Compile Include="Linq\JPropertyTests.cs" />
-    <Compile Include="TestObjects\MemberConverterClass.cs" />
-    <Compile Include="TestObjects\Product.cs" />
-    <Compile Include="TestObjects\ProductCollection.cs" />
-    <Compile Include="TestObjects\ProductShort.cs" />
-    <Compile Include="TestObjects\Shortie.cs" />
-    <Compile Include="TestObjects\Store.cs" />
-    <Compile Include="TestObjects\StoreColor.cs" />
-    <Compile Include="TestObjects\Person.cs" />
-    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
-    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
-    <Compile Include="Schema\JsonSchemaTests.cs" />
-    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
-    <Compile Include="TestObjects\DateTimeTestClass.cs" />
-    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
-    <Compile Include="JsonConvertTest.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
-    <Compile Include="Serialization\JsonSerializerTest.cs" />
-    <Compile Include="JsonTextReaderTest.cs" />
-    <Compile Include="JsonTextWriterTest.cs" />
-    <Compile Include="Linq\JTokenReaderTest.cs" />
-    <Compile Include="Linq\JTokenWriterTest.cs" />
-    <Compile Include="Linq\JArrayTests.cs" />
-    <Compile Include="Linq\JObjectTests.cs" />
-    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
-    <Compile Include="Linq\JTokenTests.cs" />
-    <Compile Include="Linq\JValueTests.cs" />
-    <Compile Include="Linq\LinqToJsonTest.cs" />
-    <Compile Include="PerformanceTests.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="SilverlightTests.cs" />
-    <Compile Include="TestFixtureBase.cs" />
-    <Compile Include="Converters\XmlNodeConverterTest.cs" />
-    <Compile Include="TestObjects\TypeClass.cs" />
-    <Compile Include="TestObjects\TypedSubHashtable.cs" />
-    <Compile Include="TestObjects\UserNullable.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
-    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.csproj">
-      <Project>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</Project>
-      <Name>Newtonsoft.Json</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="LinqToSql\LinqToSqlClasses.dbml">
-      <Generator>MSLinqToSQLGenerator</Generator>
-      <LastGenOutput>LinqToSqlClasses.designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
-  </ItemGroup>
-  <ItemGroup>
-    <EntityDeploy Include="FileSystemEntityModel.edmx">
-      <Generator>EntityModelCodeGenerator</Generator>
-      <LastGenOutput>FileSystemEntityModel.Designer.cs</LastGenOutput>
-    </EntityDeploy>
-    <None Include="LinqToSql\LinqToSqlClasses.dbml.layout">
-      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="bunny_pancake.jpg">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
-    <Content Include="PoisonText.txt">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3E6E2335-B079-4B5B-A65A-9D586914BCBB}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json.Tests</RootNamespace>
+    <AssemblyName>Newtonsoft.Json.Tests</AssemblyName>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <SignAssembly>false</SignAssembly>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Net\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Net\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="nunit.framework, Version=2.4.3.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\NUnit\DotNet\nunit.framework.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.ComponentModel.DataAnnotations">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Data.Entity">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Security" />
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel.Web">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Web" />
+    <Reference Include="System.Web.Extensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonWriterTests.cs" />
+    <Compile Include="Bson\BsonReaderTests.cs" />
+    <Compile Include="Converters\BinaryConverterTests.cs" />
+    <Compile Include="Converters\ExpandoObjectConverterTests.cs" />
+    <Compile Include="Converters\RegexConverterTests.cs" />
+    <Compile Include="Converters\DataTableConverterTests.cs" />
+    <Compile Include="Converters\DataSetConverterTests.cs" />
+    <Compile Include="Converters\CustomCreationConverterTests.cs" />
+    <Compile Include="Converters\ObjectIdConverterTests.cs" />
+    <Compile Include="Converters\StringEnumConverterTests.cs" />
+    <Compile Include="Converters\VersionConverterTests.cs" />
+    <Compile Include="FileSystemEntityModel.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>FileSystemEntityModel.edmx</DependentUpon>
+    </Compile>
+    <Compile Include="JsonArrayAttributeTests.cs" />
+    <Compile Include="ExceptionTests.cs" />
+    <Compile Include="JsonValidatingReaderTests.cs" />
+    <Compile Include="LinqToSql\Department.cs" />
+    <Compile Include="LinqToSql\DepartmentConverter.cs" />
+    <Compile Include="LinqToSql\GuidByteArrayConverter.cs" />
+    <Compile Include="LinqToSql\Role.cs" />
+    <Compile Include="LinqToSql\LinqToSqlClasses.designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
+    </Compile>
+    <Compile Include="LinqToSql\LinqToSqlClassesSerializationTests.cs" />
+    <Compile Include="LinqToSql\Person.cs" />
+    <Compile Include="Linq\ComponentModel\BindingTests.cs" />
+    <Compile Include="Linq\ComponentModel\JPropertyDescriptorTests.cs" />
+    <Compile Include="Linq\DynamicTests.cs" />
+    <Compile Include="Linq\JPathTests.cs" />
+    <Compile Include="Linq\JRawTests.cs" />
+    <Compile Include="Serialization\ConstructorHandlingTests.cs" />
+    <Compile Include="Serialization\ContractResolverTests.cs" />
+    <Compile Include="Serialization\DefaultValueHandlingTests.cs" />
+    <Compile Include="Serialization\DynamicTests.cs" />
+    <Compile Include="Serialization\JsonPropertyCollectionTests.cs" />
+    <Compile Include="Serialization\NullValueHandlingTests.cs" />
+    <Compile Include="TestObjects\Bar.cs" />
+    <Compile Include="TestObjects\Car.cs" />
+    <Compile Include="TestObjects\Computer.cs" />
+    <Compile Include="TestObjects\ConstructorReadonlyFields.cs" />
+    <Compile Include="TestObjects\Container.cs" />
+    <Compile Include="TestObjects\ContentBaseClass.cs" />
+    <Compile Include="TestObjects\ContentSubClass.cs" />
+    <Compile Include="TestObjects\Foo.cs" />
+    <Compile Include="TestObjects\HolderClass.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationA.cs" />
+    <Compile Include="TestObjects\IPrivateImplementationB.cs" />
+    <Compile Include="TestObjects\IPrivateOverriddenImplementation.cs" />
+    <Compile Include="TestObjects\ListOfIds.cs" />
+    <Compile Include="TestObjects\Movie.cs" />
+    <Compile Include="TestObjects\PersonError.cs" />
+    <Compile Include="TestObjects\PersonPropertyClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PrivateConstructorWithPublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\Content.cs" />
+    <Compile Include="TestObjects\DateTimeErrorObjectCollection.cs" />
+    <Compile Include="Serialization\EntitiesSerializationTests.cs" />
+    <Compile Include="TestObjects\DictionaryInterfaceClass.cs" />
+    <Compile Include="TestObjects\Event.cs" />
+    <Compile Include="TestObjects\GoogleMapGeocoderStructure.cs" />
+    <Compile Include="TestObjects\InterfacePropertyTestClass.cs" />
+    <Compile Include="TestObjects\JsonPropertyClass.cs" />
+    <Compile Include="TestObjects\ListErrorObject.cs" />
+    <Compile Include="TestObjects\ListErrorObjectCollection.cs" />
+    <Compile Include="Serialization\MissingMemberHandlingTests.cs" />
+    <Compile Include="Serialization\PopulateTests.cs" />
+    <Compile Include="Serialization\SerializationErrorHandlingTests.cs" />
+    <Compile Include="Serialization\SerializationEventAttributeTests.cs" />
+    <Compile Include="Schema\ExtensionsTests.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaNodeTests.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolverTests.cs" />
+    <Compile Include="Serialization\PreserveReferencesHandlingTests.cs" />
+    <Compile Include="Serialization\TypeNameHandlingTests.cs" />
+    <Compile Include="TestObjects\ListTestClass.cs" />
+    <Compile Include="TestObjects\LogEntry.cs" />
+    <Compile Include="TestObjects\NonRequest.cs" />
+    <Compile Include="TestObjects\ObjectArrayPropertyTest.cs" />
+    <Compile Include="TestObjects\PrivateImplementationAClass.cs" />
+    <Compile Include="TestObjects\PrivateImplementationBClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorRequiringConverterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithNonPropertyParameterTestClass.cs" />
+    <Compile Include="TestObjects\PublicParametizedConstructorWithPropertyNameConflict.cs" />
+    <Compile Include="TestObjects\SearchResult.cs" />
+    <Compile Include="TestObjects\StructTest.cs" />
+    <Compile Include="TestObjects\WagePerson.cs" />
+    <Compile Include="TestObjects\PropertyCase.cs" />
+    <Compile Include="TestObjects\RequestOnly.cs" />
+    <Compile Include="TestObjects\RoleTransfer.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass2.cs" />
+    <Compile Include="TestObjects\SubKlass.cs" />
+    <Compile Include="TestObjects\SuperKlass.cs" />
+    <Compile Include="TestObjects\VersionKeyedCollection.cs" />
+    <Compile Include="TestObjects\AbstractGenericBase.cs" />
+    <Compile Include="TestObjects\ArgumentConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\BadJsonPropertyClass.cs" />
+    <Compile Include="TestObjects\CircularReferenceClass.cs" />
+    <Compile Include="TestObjects\ClassAndMemberConverterClass.cs" />
+    <Compile Include="TestObjects\ClassConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\ConstructorCaseSensitivityClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClass.cs" />
+    <Compile Include="TestObjects\ConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\CircularReferenceWithIdClass.cs" />
+    <Compile Include="TestObjects\EmployeeReference.cs" />
+    <Compile Include="TestObjects\JsonPropertyWithHandlingValues.cs" />
+    <Compile Include="TestObjects\DefaultValueAttributeTestClass.cs" />
+    <Compile Include="TestObjects\DoubleClass.cs" />
+    <Compile Include="TestObjects\GenericImpl.cs" />
+    <Compile Include="TestObjects\GenericListAndDictionaryInterfaceProperties.cs" />
+    <Compile Include="TestObjects\GetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\IncompatibleJsonAttributeClass.cs" />
+    <Compile Include="TestObjects\Invoice.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeTestClass.cs" />
+    <Compile Include="TestObjects\MemberConverterPrecedenceClassConverter.cs" />
+    <Compile Include="TestObjects\MethodExecutorObject.cs" />
+    <Compile Include="TestObjects\JaggedArray.cs" />
+    <Compile Include="TestObjects\MyClass.cs" />
+    <Compile Include="TestObjects\Name.cs" />
+    <Compile Include="TestObjects\PersonRaw.cs" />
+    <Compile Include="TestObjects\PhoneNumber.cs" />
+    <Compile Include="TestObjects\PrivateMembersClass.cs" />
+    <Compile Include="TestObjects\RequiredMembersClass.cs" />
+    <Compile Include="TestObjects\SerializationEventTestDictionary.cs" />
+    <Compile Include="TestObjects\SerializationEventTestList.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObject.cs" />
+    <Compile Include="TestObjects\SerializationEventTestObjectWithConstructor.cs" />
+    <Compile Include="TestObjects\SetOnlyPropertyClass.cs" />
+    <Compile Include="TestObjects\Article.cs" />
+    <Compile Include="TestObjects\ArticleCollection.cs" />
+    <Compile Include="TestObjects\ClassWithArray.cs" />
+    <Compile Include="TestObjects\ClassWithGuid.cs" />
+    <Compile Include="TestObjects\ConverableMembers.cs" />
+    <Compile Include="TestObjects\JsonIgnoreAttributeOnClassTestClass.cs" />
+    <Compile Include="Linq\JConstructorTests.cs" />
+    <Compile Include="Linq\JPropertyTests.cs" />
+    <Compile Include="TestObjects\MemberConverterClass.cs" />
+    <Compile Include="TestObjects\Product.cs" />
+    <Compile Include="TestObjects\ProductCollection.cs" />
+    <Compile Include="TestObjects\ProductShort.cs" />
+    <Compile Include="TestObjects\Shortie.cs" />
+    <Compile Include="TestObjects\Store.cs" />
+    <Compile Include="TestObjects\StoreColor.cs" />
+    <Compile Include="TestObjects\Person.cs" />
+    <Compile Include="Schema\JsonSchemaBuilderTests.cs" />
+    <Compile Include="Schema\JsonSchemaGeneratorTests.cs" />
+    <Compile Include="Schema\JsonSchemaTests.cs" />
+    <Compile Include="TestObjects\NullableDateTimeTestClass.cs" />
+    <Compile Include="TestObjects\DateTimeTestClass.cs" />
+    <Compile Include="Converters\IsoDateTimeConverterTests.cs" />
+    <Compile Include="JsonConvertTest.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverterTests.cs" />
+    <Compile Include="Serialization\JsonSerializerTest.cs" />
+    <Compile Include="JsonTextReaderTest.cs" />
+    <Compile Include="JsonTextWriterTest.cs" />
+    <Compile Include="Linq\JTokenReaderTest.cs" />
+    <Compile Include="Linq\JTokenWriterTest.cs" />
+    <Compile Include="Linq\JArrayTests.cs" />
+    <Compile Include="Linq\JObjectTests.cs" />
+    <Compile Include="Linq\JTokenEqualityComparerTests.cs" />
+    <Compile Include="Linq\JTokenTests.cs" />
+    <Compile Include="Linq\JValueTests.cs" />
+    <Compile Include="Linq\LinqToJsonTest.cs" />
+    <Compile Include="PerformanceTests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SilverlightTests.cs" />
+    <Compile Include="TestFixtureBase.cs" />
+    <Compile Include="Converters\XmlNodeConverterTest.cs" />
+    <Compile Include="TestObjects\TypeClass.cs" />
+    <Compile Include="TestObjects\TypedSubHashtable.cs" />
+    <Compile Include="TestObjects\UserNullable.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactoryTests.cs" />
+    <Compile Include="Utilities\ReflectionUtilsTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Newtonsoft.Json\Newtonsoft.Json.csproj">
+      <Project>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</Project>
+      <Name>Newtonsoft.Json</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="LinqToSql\LinqToSqlClasses.dbml">
+      <Generator>MSLinqToSQLGenerator</Generator>
+      <LastGenOutput>LinqToSqlClasses.designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}" />
+  </ItemGroup>
+  <ItemGroup>
+    <EntityDeploy Include="FileSystemEntityModel.edmx">
+      <Generator>EntityModelCodeGenerator</Generator>
+      <LastGenOutput>FileSystemEntityModel.Designer.cs</LastGenOutput>
+    </EntityDeploy>
+    <None Include="LinqToSql\LinqToSqlClasses.dbml.layout">
+      <DependentUpon>LinqToSqlClasses.dbml</DependentUpon>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="bunny_pancake.jpg">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="PoisonText.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/PerformanceTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/PerformanceTests.cs
@@ -1,865 +1,865 @@
-﻿#if !SILVERLIGHT && !PocketPC && !NET20 && !NET35 && !NETFX_CORE
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Web.Script.Serialization;
-using System.Xml.Linq;
-using System.Xml.Serialization;
-using Newtonsoft.Json.Utilities;
-using NUnit.Framework;
-using System.Runtime.Serialization.Json;
-using System.Text;
-using Newtonsoft.Json.Bson;
-using System.Runtime.Serialization.Formatters.Binary;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Converters;
-
-namespace Newtonsoft.Json.Tests
-{
-  [Serializable]
-  [DataContract]
-  public class Image
-  {
-    [DataMember]
-    public string FileName { get; set; }
-
-    [DataMember]
-    public string Author { get; set; }
-
-    [DataMember]
-    public string Caption { get; set; }
-
-    [DataMember]
-    public byte[] Data { get; set; }
-  }
-
-  [TestFixture]
-  public class PerformanceTests : TestFixtureBase
-  {
-    //private const int Iterations = 100;
-    private const int Iterations = 5000;
-
-#region Data
-
-    private const string BsonHex =
-      @"A9-01-00-00-04-73-74-72-69-6E-67-73-00-2B-00-00-00-0A-30-00-02-31-00-19-00-00-00-4D-61-72-6B-75-73-20-65-67-67-65-72-20-5D-3E-3C-5B-2C-20-28-32-6E-64-29-00-0A-32-00-00-03-64-69-63-74-69-6F-6E-61-72-79-00-37-00-00-00-10-56-61-6C-20-26-20-61-73-64-31-00-01-00-00-00-10-56-61-6C-32-20-26-20-61-73-64-31-00-03-00-00-00-10-56-61-6C-33-20-26-20-61-73-64-31-00-04-00-00-00-00-02-4E-61-6D-65-00-05-00-00-00-52-69-63-6B-00-09-4E-6F-77-00-EF-BD-69-EC-25-01-00-00-01-42-69-67-4E-75-6D-62-65-72-00-E7-7B-CC-26-96-C7-1F-42-03-41-64-64-72-65-73-73-31-00-47-00-00-00-02-53-74-72-65-65-74-00-0B-00-00-00-66-66-66-20-53-74-72-65-65-74-00-02-50-68-6F-6E-65-00-0F-00-00-00-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-00-09-45-6E-74-65-72-65-64-00-6F-FF-31-53-26-01-00-00-00-04-41-64-64-72-65-73-73-65-73-00-A2-00-00-00-03-30-00-4B-00-00-00-02-53-74-72-65-65-74-00-0F-00-00-00-1F-61-72-72-61-79-3C-61-64-64-72-65-73-73-00-02-50-68-6F-6E-65-00-0F-00-00-00-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-00-09-45-6E-74-65-72-65-64-00-6F-73-0C-E7-25-01-00-00-00-03-31-00-4C-00-00-00-02-53-74-72-65-65-74-00-10-00-00-00-61-72-72-61-79-20-32-20-61-64-64-72-65-73-73-00-02-50-68-6F-6E-65-00-0F-00-00-00-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-00-09-45-6E-74-65-72-65-64-00-6F-17-E6-E1-25-01-00-00-00-00-00";
-
-    private const string BinaryFormatterHex =
-      @"00-01-00-00-00-FF-FF-FF-FF-01-00-00-00-00-00-00-00-0C-02-00-00-00-4C-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2C-20-56-65-72-73-69-6F-6E-3D-33-2E-35-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-6E-75-6C-6C-05-01-00-00-00-1F-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-54-65-73-74-43-6C-61-73-73-07-00-00-00-05-5F-4E-61-6D-65-04-5F-4E-6F-77-0A-5F-42-69-67-4E-75-6D-62-65-72-09-5F-41-64-64-72-65-73-73-31-0A-5F-41-64-64-72-65-73-73-65-73-07-73-74-72-69-6E-67-73-0A-64-69-63-74-69-6F-6E-61-72-79-01-00-00-04-03-03-03-0D-05-1D-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-02-00-00-00-90-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-2C-20-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2C-20-56-65-72-73-69-6F-6E-3D-33-2E-35-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-6E-75-6C-6C-5D-5D-7F-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-E1-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-44-69-63-74-69-6F-6E-61-72-79-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-02-00-00-00-06-03-00-00-00-04-52-69-63-6B-B6-25-3A-D1-C5-59-CC-88-0F-33-34-31-32-33-31-32-33-31-32-33-2E-31-32-31-09-04-00-00-00-09-05-00-00-00-09-06-00-00-00-09-07-00-00-00-05-04-00-00-00-1D-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-03-00-00-00-07-5F-73-74-72-65-65-74-06-5F-50-68-6F-6E-65-08-5F-45-6E-74-65-72-65-64-01-01-00-0D-02-00-00-00-06-08-00-00-00-0A-66-66-66-20-53-74-72-65-65-74-06-09-00-00-00-0E-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-B6-BD-B8-BF-74-69-CC-88-04-05-00-00-00-90-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-2C-20-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2C-20-56-65-72-73-69-6F-6E-3D-33-2E-35-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-6E-75-6C-6C-5D-5D-03-00-00-00-06-5F-69-74-65-6D-73-05-5F-73-69-7A-65-08-5F-76-65-72-73-69-6F-6E-04-00-00-1F-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-5B-5D-02-00-00-00-08-08-09-0A-00-00-00-02-00-00-00-02-00-00-00-04-06-00-00-00-7F-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-03-00-00-00-06-5F-69-74-65-6D-73-05-5F-73-69-7A-65-08-5F-76-65-72-73-69-6F-6E-06-00-00-08-08-09-0B-00-00-00-03-00-00-00-03-00-00-00-04-07-00-00-00-E1-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-44-69-63-74-69-6F-6E-61-72-79-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-04-00-00-00-07-56-65-72-73-69-6F-6E-08-43-6F-6D-70-61-72-65-72-08-48-61-73-68-53-69-7A-65-0D-4B-65-79-56-61-6C-75-65-50-61-69-72-73-00-03-00-03-08-92-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-47-65-6E-65-72-69-63-45-71-75-61-6C-69-74-79-43-6F-6D-70-61-72-65-72-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-08-E5-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4B-65-79-56-61-6C-75-65-50-61-69-72-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-5B-5D-03-00-00-00-09-0C-00-00-00-03-00-00-00-09-0D-00-00-00-07-0A-00-00-00-00-01-00-00-00-04-00-00-00-04-1D-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-02-00-00-00-09-0E-00-00-00-09-0F-00-00-00-0D-02-11-0B-00-00-00-04-00-00-00-0A-06-10-00-00-00-18-4D-61-72-6B-75-73-20-65-67-67-65-72-20-5D-3E-3C-5B-2C-20-28-32-6E-64-29-0D-02-04-0C-00-00-00-92-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-47-65-6E-65-72-69-63-45-71-75-61-6C-69-74-79-43-6F-6D-70-61-72-65-72-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-00-00-00-00-07-0D-00-00-00-00-01-00-00-00-03-00-00-00-03-E3-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4B-65-79-56-61-6C-75-65-50-61-69-72-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-04-EF-FF-FF-FF-E3-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4B-65-79-56-61-6C-75-65-50-61-69-72-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-02-00-00-00-03-6B-65-79-05-76-61-6C-75-65-01-00-08-06-12-00-00-00-0A-56-61-6C-20-26-20-61-73-64-31-01-00-00-00-01-ED-FF-FF-FF-EF-FF-FF-FF-06-14-00-00-00-0B-56-61-6C-32-20-26-20-61-73-64-31-03-00-00-00-01-EB-FF-FF-FF-EF-FF-FF-FF-06-16-00-00-00-0B-56-61-6C-33-20-26-20-61-73-64-31-04-00-00-00-01-0E-00-00-00-04-00-00-00-06-17-00-00-00-0E-1F-61-72-72-61-79-3C-61-64-64-72-65-73-73-09-09-00-00-00-B6-FD-0B-45-F4-58-CC-88-01-0F-00-00-00-04-00-00-00-06-19-00-00-00-0F-61-72-72-61-79-20-32-20-61-64-64-72-65-73-73-09-09-00-00-00-B6-3D-A2-1A-2B-58-CC-88-0B";
-
-    private const string XmlText =
-      @"<TestClass xmlns=""http://schemas.datacontract.org/2004/07/Newtonsoft.Json.Tests"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><Address1><Entered>2010-01-21T11:12:16.0809174+13:00</Entered><Phone>(503) 814-6335</Phone><Street>fff Street</Street></Address1><Addresses><Address><Entered>2009-12-31T11:12:16.0809174+13:00</Entered><Phone>(503) 814-6335</Phone><Street>&#x1F;array&lt;address</Street></Address><Address><Entered>2009-12-30T11:12:16.0809174+13:00</Entered><Phone>(503) 814-6335</Phone><Street>array 2 address</Street></Address></Addresses><BigNumber>34123123123.121</BigNumber><Name>Rick</Name><Now>2010-01-01T12:12:16.0809174+13:00</Now><dictionary xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><a:KeyValueOfstringint><a:Key>Val &amp; asd1</a:Key><a:Value>1</a:Value></a:KeyValueOfstringint><a:KeyValueOfstringint><a:Key>Val2 &amp; asd1</a:Key><a:Value>3</a:Value></a:KeyValueOfstringint><a:KeyValueOfstringint><a:Key>Val3 &amp; asd1</a:Key><a:Value>4</a:Value></a:KeyValueOfstringint></dictionary><strings xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><a:string i:nil=""true""/><a:string>Markus egger ]&gt;&lt;[, (2nd)</a:string><a:string i:nil=""true""/></strings></TestClass>";
-
-    private const string JsonText =
-      @"{""strings"":[null,""Markus egger ]><[, (2nd)"",null],""dictionary"":{""Val & asd1"":1,""Val2 & asd1"":3,""Val3 & asd1"":4},""Name"":""Rick"",""Now"":""\/Date(1262301136080+1300)\/"",""BigNumber"":34123123123.121,""Address1"":{""Street"":""fff Street"",""Phone"":""(503) 814-6335"",""Entered"":""\/Date(1264025536080+1300)\/""},""Addresses"":[{""Street"":""\u001farray<address"",""Phone"":""(503) 814-6335"",""Entered"":""\/Date(1262211136080+1300)\/""},{""Street"":""array 2 address"",""Phone"":""(503) 814-6335"",""Entered"":""\/Date(1262124736080+1300)\/""}]}";
-
-    private const string JsonIsoText =
-      @"{""strings"":[null,""Markus egger ]><[, (2nd)"",null],""dictionary"":{""Val & asd1"":1,""Val2 & asd1"":3,""Val3 & asd1"":4},""Name"":""Rick"",""Now"":""2012-02-25T19:55:50.6095676+13:00"",""BigNumber"":34123123123.121,""Address1"":{""Street"":""fff Street"",""Phone"":""(503) 814-6335"",""Entered"":""2012-02-24T18:55:50.6095676+13:00""},""Addresses"":[{""Street"":""\u001farray<address"",""Phone"":""(503) 814-6335"",""Entered"":""2012-02-24T18:55:50.6095676+13:00""},{""Street"":""array 2 address"",""Phone"":""(503) 814-6335"",""Entered"":""2012-02-24T18:55:50.6095676+13:00""}]}";
-
-    private const string SimpleJsonText =
-      @"{""Id"":2311,""Name"":""Simple-1"",""Address"":""Planet Earth"",""Scores"":[82,96,49,40,38,38,78,96,2,39]}";
-
-    public enum SerializeMethod
-    {
-      JsonNet,
-      JsonNetWithIsoConverter,
-      JsonNetBinary,
-      BinaryFormatter,
-      JavaScriptSerializer,
-      DataContractSerializer,
-      DataContractJsonSerializer
-    }
-
-    #endregion
-
-    [Test]
-    public void SerializeSimpleObject()
-    {
-      var value = CreateSimpleObject();
-
-      SerializeTests(value);
-    }
-
-    [Test]
-    public void DeserializeSimpleObject()
-    {
-      DeserializeTests<SimpleObject>(SimpleJsonText);
-    }
-
-    [Test]
-    public void Serialize()
-    {
-      TestClass test = CreateSerializationObject();
-
-      SerializeTests(test);
-    }
-
-    private void SerializeTests(object value)
-    {
-      BenchmarkSerializeMethod(SerializeMethod.DataContractSerializer, value);
-      BenchmarkSerializeMethod(SerializeMethod.BinaryFormatter, value);
-      BenchmarkSerializeMethod(SerializeMethod.JavaScriptSerializer, value);
-      BenchmarkSerializeMethod(SerializeMethod.DataContractJsonSerializer, value);
-      BenchmarkSerializeMethod(SerializeMethod.JsonNet, value);
-      BenchmarkSerializeMethod(SerializeMethod.JsonNetWithIsoConverter, value);
-      BenchmarkSerializeMethod(SerializeMethod.JsonNetBinary, value);
-    }
-
-    [Test]
-    public void Deserialize()
-    {
-      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.DataContractSerializer, XmlText);
-      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.BinaryFormatter, MiscellaneousUtils.HexToBytes(BinaryFormatterHex));
-      DeserializeTests<TestClass>(JsonText);
-      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.JsonNetWithIsoConverter, JsonIsoText);
-      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.JsonNetBinary, MiscellaneousUtils.HexToBytes(BsonHex));
-    }
-
-    public void DeserializeTests<T>(string json)
-    {
-      BenchmarkDeserializeMethod<T>(SerializeMethod.JavaScriptSerializer, json);
-      BenchmarkDeserializeMethod<T>(SerializeMethod.DataContractJsonSerializer, json);
-      BenchmarkDeserializeMethod<T>(SerializeMethod.JsonNet, json);
-    }
-
-    [Test]
-    public void SerializeSizeNormal()
-    {
-      SerializeSize(CreateSerializationObject());
-    }
-
-    [Test]
-    public void SerializeSizeData()
-    {
-      Image image = new Image();
-      image.Data = System.IO.File.ReadAllBytes(@"bunny_pancake.jpg");
-      image.FileName = "bunny_pancake.jpg";
-      image.Author = "Hironori Akutagawa";
-      image.Caption = "I have no idea what you are talking about so here's a bunny with a pancake on its head";
-
-      SerializeSize(image);
-    }
-
-    private T TimeOperation<T>(Func<T> operation, string name)
-    {
-      // warm up
-      operation();
-
-      Stopwatch timed = new Stopwatch();
-      timed.Start();
-
-      T result = operation();
-
-      Console.WriteLine(name);
-      Console.WriteLine("{0} ms", timed.ElapsedMilliseconds);
-
-      timed.Stop();
-
-      return result;
-    }
-
-    [Test]
-    public void BuildJObject()
-    {
-      JObject o = new JObject();
-      for (int i = 0; i < 50; i++)
-      {
-        o[i.ToString()] = i;
-      }
-      string jsonText = o.ToString();
-
-      // this is extremely slow with 5000 interations
-      int interations = 1000;
-
-      TimeOperation(() =>
-        {
-          JObject oo = null;
-          for (int i = 0; i < interations; i++)
-          {
-            oo = JObject.Parse(jsonText);
-          }
-
-          return oo;
-        }, "JObject");
-    }
-
-    [Test]
-    public void BuildJObjectComparedToXml()
-    {
-      const long totalIterations = 100000;
-
-      const String xml =
-        @"<?xml  version=""1.0"" encoding=""ISO-8859-1""?>
-                <root>
-                    <property name=""Property1"">1</property>
-                    <property name=""Property2"">2</property>
-                    <property name=""Property3"">3</property>
-                    <property name=""Property4"">4</property>
-                    <property name=""Property5"">5</property>
-                </root>";
-
-      const String json =
-        @"{
-                    ""Property1"":""1"",
-                    ""Property2"":""2"",
-                    ""Property3"":""3"",
-                    ""Property4"":""4"",
-                    ""Property5"":""5""
-                }";
-
-
-      var watch = new Stopwatch();
-      watch.Start();
-      for (long iteration = 0; iteration < totalIterations; ++iteration)
-      {
-        var obj = JObject.Parse(json);
-        obj["Property1"].Value<Int32>();
-        obj["Property2"].Value<Int32>();
-        obj["Property3"].Value<Int32>();
-        obj["Property4"].Value<Int32>();
-        obj["Property5"].Value<Int32>();
-      }
-      watch.Stop();
-      var performance1 = (totalIterations/watch.ElapsedMilliseconds)*1000;
-      Console.WriteLine("JSON: " + watch.Elapsed.TotalSeconds);
-
-      watch.Reset();
-      watch.Start();
-      for (long iteration = 0; iteration < totalIterations; ++iteration)
-      {
-        var doc = XDocument.Parse(xml);
-        var alarmProperties = doc.Descendants("property");
-        foreach (var property in alarmProperties)
-        {
-          var attr = property.Attribute("name");
-          var name = attr.Value;
-          switch (name)
-          {
-            case "Property1":
-              Int32.Parse(property.Value);
-              break;
-            case "Property2":
-              Int32.Parse(property.Value);
-              break;
-            case "Property3":
-              Int32.Parse(property.Value);
-              break;
-            case "Property4":
-              Int32.Parse(property.Value);
-              break;
-            case "Property5":
-              Int32.Parse(property.Value);
-              break;
-          }
-        }
-      }
-      watch.Stop();
-      var performance2 = (totalIterations/watch.ElapsedMilliseconds)*1000;
-      Console.WriteLine("XML: " + watch.Elapsed.TotalSeconds);
-    }
-
-    private void SerializeSize(object value)
-    {
-      // this is extremely slow with 5000 interations
-      int interations = 100;
-
-      byte[] jsonBytes = TimeOperation(() =>
-        {
-          string json = null;
-          for (int i = 0; i < interations; i++)
-          {
-            json = JsonConvert.SerializeObject(value, Formatting.None);
-          }
-
-          return Encoding.UTF8.GetBytes(json);
-        }, "Json.NET");
-
-      byte[] bsonBytes = TimeOperation(() =>
-        {
-          MemoryStream ms = null;
-          for (int i = 0; i < interations; i++)
-          {
-            ms = new MemoryStream();
-            JsonSerializer serializer = new JsonSerializer();
-            BsonWriter writer = new BsonWriter(ms);
-
-            serializer.Serialize(writer, value);
-            writer.Flush();
-          }
-
-          return ms.ToArray();
-        }, "Json.NET BSON");
-
-      byte[] xmlBytes = TimeOperation(() =>
-        {
-          MemoryStream ms = null;
-          for (int i = 0; i < interations; i++)
-          {
-            ms = new MemoryStream();
-            DataContractSerializer dataContractSerializer = new DataContractSerializer(value.GetType());
-            dataContractSerializer.WriteObject(ms, value);
-          }
-
-          return ms.ToArray();
-        }, "DataContractSerializer");
-
-      byte[] wcfJsonBytes = TimeOperation(() =>
-        {
-          MemoryStream ms = null;
-          for (int i = 0; i < interations; i++)
-          {
-            ms = new MemoryStream();
-            DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(value.GetType());
-            dataContractJsonSerializer.WriteObject(ms, value);
-          }
-
-          return ms.ToArray();
-        }, "DataContractJsonSerializer");
-
-      byte[] binaryFormatterBytes = TimeOperation(() =>
-        {
-          MemoryStream ms = null;
-          for (int i = 0; i < interations; i++)
-          {
-            ms = new MemoryStream();
-            BinaryFormatter formatter = new BinaryFormatter();
-            formatter.Serialize(ms, value);
-          }
-
-          return ms.ToArray();
-        }, "BinaryFormatter");
-
-      Console.WriteLine("Json.NET size: {0} bytes", jsonBytes.Length);
-      Console.WriteLine("BSON size: {0} bytes", bsonBytes.Length);
-      Console.WriteLine("WCF JSON size: {0} bytes", wcfJsonBytes.Length);
-      Console.WriteLine("WCF XML size: {0} bytes", xmlBytes.Length);
-      Console.WriteLine("BinaryFormatter size: {0} bytes", binaryFormatterBytes.Length);
-    }
-
-#region Serialize
-
-    private static readonly byte[] Buffer = new byte[4096];
-
-    public void BenchmarkSerializeMethod(SerializeMethod method, object value)
-    {
-      Serialize(method, value);
-
-      Stopwatch timed = new Stopwatch();
-      timed.Start();
-
-      string json = null;
-      for (int x = 0; x < Iterations; x++)
-      {
-        json = Serialize(method, value);
-      }
-
-      timed.Stop();
-
-      Console.WriteLine("Serialize method: {0}", method);
-      Console.WriteLine("{0} ms", timed.ElapsedMilliseconds);
-      Console.WriteLine(json);
-      Console.WriteLine();
-    }
-
-    private TestClass CreateSerializationObject()
-    {
-      TestClass test = new TestClass();
-
-      test.dictionary = new Dictionary<string, int> {{"Val & asd1", 1}, {"Val2 & asd1", 3}, {"Val3 & asd1", 4}};
-
-
-      test.Address1.Street = "fff Street";
-      test.Address1.Entered = DateTime.Now.AddDays(20);
-
-      test.BigNumber = 34123123123.121M;
-      test.Now = DateTime.Now.AddHours(1);
-      test.strings = new List<string>() {null, "Markus egger ]><[, (2nd)", null};
-
-      Address address = new Address();
-      address.Entered = DateTime.Now.AddDays(-1);
-      address.Street = "\u001farray\u003caddress";
-
-      test.Addresses.Add(address);
-
-      address = new Address();
-      address.Entered = DateTime.Now.AddDays(-2);
-      address.Street = "array 2 address";
-      test.Addresses.Add(address);
-      return test;
-    }
-
-    private static SimpleObject CreateSimpleObject()
-    {
-      return new SimpleObject
-      {
-        Name = "Simple-1",
-        Id = 2311,
-        Address = "Planet Earth",
-        Scores = new [] { 82, 96, 49, 40, 38, 38, 78, 96, 2, 39 }
-      };
-    }
-
-    public string SerializeJsonNet(object value)
-    {
-      Type type = value.GetType();
-
-      Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
-
-      json.NullValueHandling = NullValueHandling.Ignore;
-
-      json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
-      json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
-      json.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
-
-
-      StringWriter sw = new StringWriter();
-      Newtonsoft.Json.JsonTextWriter writer = new JsonTextWriter(sw);
-
-      writer.Formatting = Formatting.None;
-
-      writer.QuoteChar = '"';
-      json.Serialize(writer, value);
-
-      string output = sw.ToString();
-      writer.Close();
-
-      return output;
-    }
-
-    public string SerializeWebExtensions(object value)
-    {
-      JavaScriptSerializer ser = new JavaScriptSerializer();
-
-      return ser.Serialize(value);
-    }
-
-    public string SerializeDataContractJson(object value)
-    {
-      DataContractJsonSerializer dataContractSerializer
-        = new DataContractJsonSerializer(value.GetType());
-
-      MemoryStream ms = new MemoryStream();
-      dataContractSerializer.WriteObject(ms, value);
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      using (StreamReader sr = new StreamReader(ms))
-      {
-        return sr.ReadToEnd();
-      }
-    }
-
-    public string SerializeDataContract(object value)
-    {
-      DataContractSerializer dataContractSerializer
-        = new DataContractSerializer(value.GetType());
-
-      MemoryStream ms = new MemoryStream();
-      dataContractSerializer.WriteObject(ms, value);
-
-      ms.Seek(0, SeekOrigin.Begin);
-
-      using (StreamReader sr = new StreamReader(ms))
-      {
-        return sr.ReadToEnd();
-      }
-    }
-
-    private string Serialize(SerializeMethod method, object value)
-    {
-      string json;
-
-      switch (method)
-      {
-        case SerializeMethod.JsonNet:
-          json = JsonConvert.SerializeObject(value);
-          break;
-        case SerializeMethod.JsonNetWithIsoConverter:
-          json = JsonConvert.SerializeObject(value, new IsoDateTimeConverter());
-          break;
-        case SerializeMethod.JsonNetBinary:
-          {
-            MemoryStream ms = new MemoryStream(Buffer);
-            JsonSerializer serializer = new JsonSerializer();
-            BsonWriter writer = new BsonWriter(ms);
-            serializer.Serialize(writer, value);
-
-            //json = BitConverter.ToString(ms.ToArray(), 0, (int)ms.Position);
-            json = "Bytes = " + ms.Position;
-            break;
-          }
-        case SerializeMethod.JavaScriptSerializer:
-          json = SerializeWebExtensions(value);
-          break;
-        case SerializeMethod.DataContractJsonSerializer:
-          json = SerializeDataContractJson(value);
-          break;
-        case SerializeMethod.DataContractSerializer:
-          json = SerializeDataContract(value);
-          break;
-        case SerializeMethod.BinaryFormatter:
-          json = SerializeBinaryFormatter(value);
-          break;
-        default:
-          throw new ArgumentOutOfRangeException("method");
-      }
-
-      return json;
-    }
-
-    private string SerializeBinaryFormatter(object value)
-    {
-      string json;
-      MemoryStream ms = new MemoryStream(Buffer);
-      BinaryFormatter formatter = new BinaryFormatter();
-      formatter.Serialize(ms, value);
-
-      json = "Bytes = " + ms.Position;
-      //json = BitConverter.ToString(ms.ToArray(), 0, (int)ms.Position);
-      return json;
-    }
-
-    #endregion
-
-#region Deserialize
-
-    public void BenchmarkDeserializeMethod<T>(SerializeMethod method, object json)
-    {
-      Deserialize<T>(method, json);
-
-      Stopwatch timed = new Stopwatch();
-      timed.Start();
-
-      T value = default(T);
-      for (int x = 0; x < Iterations; x++)
-      {
-        value = Deserialize<T>(method, json);
-      }
-
-      timed.Stop();
-
-      Console.WriteLine("Deserialize method: {0}", method);
-      Console.WriteLine("{0} ms", timed.ElapsedMilliseconds);
-      Console.WriteLine(value);
-      Console.WriteLine();
-    }
-
-    public T DeserializeJsonNet<T>(string json, bool isoDateTimeConverter)
-    {
-      Type type = typeof (T);
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
-      serializer.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
-      serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
-      if (isoDateTimeConverter)
-        serializer.Converters.Add(new IsoDateTimeConverter());
-
-      var value = (T) serializer.Deserialize(new StringReader(json), type);
-      return value;
-      //JsonTextReader reader = new JsonTextReader(new StringReader(JsonText));
-      //while (reader.Read())
-      //{
-
-      //}
-      //return default(T);
-    }
-
-    public T DeserializeJsonNetBinary<T>(byte[] bson)
-    {
-      Type type = typeof (T);
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
-      serializer.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
-      serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
-
-      return (T) serializer.Deserialize(new BsonReader(new MemoryStream(bson)), type);
-    }
-
-    public T DeserializeWebExtensions<T>(string json)
-    {
-      JavaScriptSerializer ser = new JavaScriptSerializer();
-
-      return ser.Deserialize<T>(json);
-    }
-
-    public T DeserializeDataContractJson<T>(string json)
-    {
-      DataContractJsonSerializer dataContractSerializer
-        = new DataContractJsonSerializer(typeof (T));
-
-      MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
-
-      return (T) dataContractSerializer.ReadObject(ms);
-    }
-
-    private T Deserialize<T>(SerializeMethod method, object json)
-    {
-      switch (method)
-      {
-        case SerializeMethod.JsonNet:
-          return DeserializeJsonNet<T>((string)json, false);
-        case SerializeMethod.JsonNetWithIsoConverter:
-          return DeserializeJsonNet<T>((string)json, true);
-        case SerializeMethod.JsonNetBinary:
-          return DeserializeJsonNetBinary<T>((byte[]) json);
-        case SerializeMethod.BinaryFormatter:
-          return DeserializeBinaryFormatter<T>((byte[]) json);
-        case SerializeMethod.JavaScriptSerializer:
-          return DeserializeWebExtensions<T>((string) json);
-        case SerializeMethod.DataContractSerializer:
-          return DeserializeDataContract<T>((string) json);
-        case SerializeMethod.DataContractJsonSerializer:
-          return DeserializeDataContractJson<T>((string) json);
-        default:
-          throw new ArgumentOutOfRangeException("method");
-      }
-    }
-
-    private T DeserializeDataContract<T>(string xml)
-    {
-      MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml));
-
-      DataContractSerializer serializer = new DataContractSerializer(typeof (T));
-      return (T) serializer.ReadObject(ms);
-    }
-
-    private T DeserializeBinaryFormatter<T>(byte[] bytes)
-    {
-      BinaryFormatter formatter = new BinaryFormatter();
-      return (T) formatter.Deserialize(new MemoryStream(bytes));
-    }
-
-    #endregion
-
-
-
-    [Test]
-    public void SerializeLargeObject()
-    {
-      LargeRecursiveTestClass rootValue = null;
-      LargeRecursiveTestClass parentValue = null;
-      for (int i = 0; i < 20; i++)
-      {
-        LargeRecursiveTestClass currentValue = new LargeRecursiveTestClass()
-          {
-            Integer = int.MaxValue,
-            Text = "The quick red fox jumped over the lazy dog."
-          };
-
-        if (rootValue == null)
-          rootValue = currentValue;
-        if (parentValue != null)
-          parentValue.Child = currentValue;
-
-        parentValue = currentValue;
-      }
-
-      BenchmarkSerializeMethod(SerializeMethod.JsonNetBinary, rootValue);
-    }
-
-    [Test]
-    public void JObjectToString()
-    {
-      JObject test = JObject.Parse(JsonText);
-      IsoDateTimeConverter isoDateTimeConverter = null; // = new IsoDateTimeConverter();
-
-      TimeOperation<object>(() =>
-        {
-          for (int i = 0; i < Iterations; i++)
-          {
-            test["dummy"] = new JValue(i);
-            Encoding.UTF8.GetBytes(test.ToString(Formatting.None));
-          }
-          return null;
-        }, "JObject.ToString");
-    }
-
-    [Test]
-    public void JObjectToString2()
-    {
-      JObject test = JObject.Parse(JsonText);
-      IsoDateTimeConverter isoDateTimeConverter = null; // = new IsoDateTimeConverter();
-      MemoryStream ms = new MemoryStream();
-
-      TimeOperation<object>(() =>
-        {
-          for (int i = 0; i < Iterations; i++)
-          {
-            test["dummy"] = new JValue(i);
-            ms.Seek(0, SeekOrigin.Begin);
-            JsonTextWriter jsonTextWriter = new JsonTextWriter(new StreamWriter(ms));
-            test.WriteTo(jsonTextWriter);
-            jsonTextWriter.Flush();
-            ms.ToArray();
-
-            //Encoding.UTF8.GetBytes(test.ToString(Formatting.None));
-          }
-          return null;
-        }, "JObject.ToString");
-    }
-
-    [Test]
-    public void NestedJToken()
-    {
-      Stopwatch sw;
-      for (int i = 10000; i <= 100000; i += 10000)
-      {
-        sw = new Stopwatch();
-        sw.Start();
-        JArray ija = new JArray();
-        JToken ijt = ija;
-        for (int j = 0; j < i; j++)
-        {
-          JArray temp = new JArray();
-          ija.Add(temp);
-          ija = temp;
-        }
-        ija.Add(1);
-        sw.Stop();
-        Console.WriteLine("Created a JToken of depth {0} (using OM) in {1} millis", i, sw.ElapsedMilliseconds);
-      }
-    }
-
-    [Test]
-    public void DeserializeNestedJToken()
-    {
-      string json = (new string('[', 100000)) + "1" + ((new string(']', 100000)));
-
-      Stopwatch sw;
-      sw = new Stopwatch();
-      sw.Start();
-
-      var a = (JArray)JsonConvert.DeserializeObject(json);
-
-      sw.Stop();
-
-      Assert.AreEqual(1, a.Count);
-      
-      Console.WriteLine("Deserialize big ass nested array in {0} millis", sw.ElapsedMilliseconds);
-    }
-  }
-
-  public class LargeRecursiveTestClass
-  {
-    public LargeRecursiveTestClass Child { get; set; }
-    public string Text { get; set; }
-    public int Integer { get; set; }
-  }
-
-#region Classes
-
-  [Serializable]
-  [DataContract]
-  public class TestClass
-  {
-    [DataMember]
-    public string Name
-    {
-      get { return _Name; }
-      set { _Name = value; }
-    }
-
-    private string _Name = "Rick";
-
-    [DataMember]
-    public DateTime Now
-    {
-      get { return _Now; }
-      set { _Now = value; }
-    }
-
-    private DateTime _Now = DateTime.Now;
-
-    [DataMember]
-    public decimal BigNumber
-    {
-      get { return _BigNumber; }
-      set { _BigNumber = value; }
-    }
-
-    private decimal _BigNumber = 1212121.22M;
-
-    [DataMember]
-    public Address Address1
-    {
-      get { return _Address1; }
-      set { _Address1 = value; }
-    }
-
-    private Address _Address1 = new Address();
-
-
-
-    [DataMember]
-    public List<Address> Addresses
-    {
-      get { return _Addresses; }
-      set { _Addresses = value; }
-    }
-
-    private List<Address> _Addresses = new List<Address>();
-
-    [DataMember] public List<string> strings = new List<string>();
-
-    [DataMember] public Dictionary<string, int> dictionary = new Dictionary<string, int>();
-  }
-
-  [Serializable]
-  [DataContract]
-  public class Address
-  {
-    [DataMember]
-    public string Street
-    {
-      get { return _street; }
-      set { _street = value; }
-    }
-
-    private string _street = "32 Kaiea";
-
-    [DataMember]
-    public string Phone
-    {
-      get { return _Phone; }
-      set { _Phone = value; }
-    }
-
-    private string _Phone = "(503) 814-6335";
-
-    [DataMember]
-    public DateTime Entered
-    {
-      get { return _Entered; }
-      set { _Entered = value; }
-    }
-
-    private DateTime _Entered = DateTime.Parse("01/01/2007", CultureInfo.CurrentCulture.DateTimeFormat);
-  }
-
-  [DataContract]
-  [Serializable]
-  public class SimpleObject
-  {
-    [DataMember]
-    public int Id { get; set; }
-
-    [DataMember]
-    public string Name { get; set; }
-
-    [DataMember]
-    public string Address { get; set; }
-
-    [DataMember]
-    public int[] Scores { get; set; }
-  }
-
-  #endregion
-}
-
+﻿#if !SILVERLIGHT && !PocketPC && !NET20 && !NET35 && !NETFX_CORE
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Web.Script.Serialization;
+using System.Xml.Linq;
+using System.Xml.Serialization;
+using Newtonsoft.Json.Utilities;
+using NUnit.Framework;
+using System.Runtime.Serialization.Json;
+using System.Text;
+using Newtonsoft.Json.Bson;
+using System.Runtime.Serialization.Formatters.Binary;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Converters;
+
+namespace Newtonsoft.Json.Tests
+{
+  [Serializable]
+  [DataContract]
+  public class Image
+  {
+    [DataMember]
+    public string FileName { get; set; }
+
+    [DataMember]
+    public string Author { get; set; }
+
+    [DataMember]
+    public string Caption { get; set; }
+
+    [DataMember]
+    public byte[] Data { get; set; }
+  }
+
+  [TestFixture]
+  public class PerformanceTests : TestFixtureBase
+  {
+    //private const int Iterations = 100;
+    private const int Iterations = 5000;
+
+#region Data
+
+    private const string BsonHex =
+      @"A9-01-00-00-04-73-74-72-69-6E-67-73-00-2B-00-00-00-0A-30-00-02-31-00-19-00-00-00-4D-61-72-6B-75-73-20-65-67-67-65-72-20-5D-3E-3C-5B-2C-20-28-32-6E-64-29-00-0A-32-00-00-03-64-69-63-74-69-6F-6E-61-72-79-00-37-00-00-00-10-56-61-6C-20-26-20-61-73-64-31-00-01-00-00-00-10-56-61-6C-32-20-26-20-61-73-64-31-00-03-00-00-00-10-56-61-6C-33-20-26-20-61-73-64-31-00-04-00-00-00-00-02-4E-61-6D-65-00-05-00-00-00-52-69-63-6B-00-09-4E-6F-77-00-EF-BD-69-EC-25-01-00-00-01-42-69-67-4E-75-6D-62-65-72-00-E7-7B-CC-26-96-C7-1F-42-03-41-64-64-72-65-73-73-31-00-47-00-00-00-02-53-74-72-65-65-74-00-0B-00-00-00-66-66-66-20-53-74-72-65-65-74-00-02-50-68-6F-6E-65-00-0F-00-00-00-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-00-09-45-6E-74-65-72-65-64-00-6F-FF-31-53-26-01-00-00-00-04-41-64-64-72-65-73-73-65-73-00-A2-00-00-00-03-30-00-4B-00-00-00-02-53-74-72-65-65-74-00-0F-00-00-00-1F-61-72-72-61-79-3C-61-64-64-72-65-73-73-00-02-50-68-6F-6E-65-00-0F-00-00-00-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-00-09-45-6E-74-65-72-65-64-00-6F-73-0C-E7-25-01-00-00-00-03-31-00-4C-00-00-00-02-53-74-72-65-65-74-00-10-00-00-00-61-72-72-61-79-20-32-20-61-64-64-72-65-73-73-00-02-50-68-6F-6E-65-00-0F-00-00-00-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-00-09-45-6E-74-65-72-65-64-00-6F-17-E6-E1-25-01-00-00-00-00-00";
+
+    private const string BinaryFormatterHex =
+      @"00-01-00-00-00-FF-FF-FF-FF-01-00-00-00-00-00-00-00-0C-02-00-00-00-4C-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2C-20-56-65-72-73-69-6F-6E-3D-33-2E-35-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-6E-75-6C-6C-05-01-00-00-00-1F-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-54-65-73-74-43-6C-61-73-73-07-00-00-00-05-5F-4E-61-6D-65-04-5F-4E-6F-77-0A-5F-42-69-67-4E-75-6D-62-65-72-09-5F-41-64-64-72-65-73-73-31-0A-5F-41-64-64-72-65-73-73-65-73-07-73-74-72-69-6E-67-73-0A-64-69-63-74-69-6F-6E-61-72-79-01-00-00-04-03-03-03-0D-05-1D-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-02-00-00-00-90-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-2C-20-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2C-20-56-65-72-73-69-6F-6E-3D-33-2E-35-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-6E-75-6C-6C-5D-5D-7F-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-E1-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-44-69-63-74-69-6F-6E-61-72-79-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-02-00-00-00-06-03-00-00-00-04-52-69-63-6B-B6-25-3A-D1-C5-59-CC-88-0F-33-34-31-32-33-31-32-33-31-32-33-2E-31-32-31-09-04-00-00-00-09-05-00-00-00-09-06-00-00-00-09-07-00-00-00-05-04-00-00-00-1D-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-03-00-00-00-07-5F-73-74-72-65-65-74-06-5F-50-68-6F-6E-65-08-5F-45-6E-74-65-72-65-64-01-01-00-0D-02-00-00-00-06-08-00-00-00-0A-66-66-66-20-53-74-72-65-65-74-06-09-00-00-00-0E-28-35-30-33-29-20-38-31-34-2D-36-33-33-35-B6-BD-B8-BF-74-69-CC-88-04-05-00-00-00-90-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-2C-20-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2C-20-56-65-72-73-69-6F-6E-3D-33-2E-35-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-6E-75-6C-6C-5D-5D-03-00-00-00-06-5F-69-74-65-6D-73-05-5F-73-69-7A-65-08-5F-76-65-72-73-69-6F-6E-04-00-00-1F-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-5B-5D-02-00-00-00-08-08-09-0A-00-00-00-02-00-00-00-02-00-00-00-04-06-00-00-00-7F-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4C-69-73-74-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-03-00-00-00-06-5F-69-74-65-6D-73-05-5F-73-69-7A-65-08-5F-76-65-72-73-69-6F-6E-06-00-00-08-08-09-0B-00-00-00-03-00-00-00-03-00-00-00-04-07-00-00-00-E1-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-44-69-63-74-69-6F-6E-61-72-79-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-04-00-00-00-07-56-65-72-73-69-6F-6E-08-43-6F-6D-70-61-72-65-72-08-48-61-73-68-53-69-7A-65-0D-4B-65-79-56-61-6C-75-65-50-61-69-72-73-00-03-00-03-08-92-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-47-65-6E-65-72-69-63-45-71-75-61-6C-69-74-79-43-6F-6D-70-61-72-65-72-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-08-E5-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4B-65-79-56-61-6C-75-65-50-61-69-72-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-5B-5D-03-00-00-00-09-0C-00-00-00-03-00-00-00-09-0D-00-00-00-07-0A-00-00-00-00-01-00-00-00-04-00-00-00-04-1D-4E-65-77-74-6F-6E-73-6F-66-74-2E-4A-73-6F-6E-2E-54-65-73-74-73-2E-41-64-64-72-65-73-73-02-00-00-00-09-0E-00-00-00-09-0F-00-00-00-0D-02-11-0B-00-00-00-04-00-00-00-0A-06-10-00-00-00-18-4D-61-72-6B-75-73-20-65-67-67-65-72-20-5D-3E-3C-5B-2C-20-28-32-6E-64-29-0D-02-04-0C-00-00-00-92-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-47-65-6E-65-72-69-63-45-71-75-61-6C-69-74-79-43-6F-6D-70-61-72-65-72-60-31-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-00-00-00-00-07-0D-00-00-00-00-01-00-00-00-03-00-00-00-03-E3-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4B-65-79-56-61-6C-75-65-50-61-69-72-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-04-EF-FF-FF-FF-E3-01-53-79-73-74-65-6D-2E-43-6F-6C-6C-65-63-74-69-6F-6E-73-2E-47-65-6E-65-72-69-63-2E-4B-65-79-56-61-6C-75-65-50-61-69-72-60-32-5B-5B-53-79-73-74-65-6D-2E-53-74-72-69-6E-67-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-2C-5B-53-79-73-74-65-6D-2E-49-6E-74-33-32-2C-20-6D-73-63-6F-72-6C-69-62-2C-20-56-65-72-73-69-6F-6E-3D-32-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-72-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-62-37-37-61-35-63-35-36-31-39-33-34-65-30-38-39-5D-5D-02-00-00-00-03-6B-65-79-05-76-61-6C-75-65-01-00-08-06-12-00-00-00-0A-56-61-6C-20-26-20-61-73-64-31-01-00-00-00-01-ED-FF-FF-FF-EF-FF-FF-FF-06-14-00-00-00-0B-56-61-6C-32-20-26-20-61-73-64-31-03-00-00-00-01-EB-FF-FF-FF-EF-FF-FF-FF-06-16-00-00-00-0B-56-61-6C-33-20-26-20-61-73-64-31-04-00-00-00-01-0E-00-00-00-04-00-00-00-06-17-00-00-00-0E-1F-61-72-72-61-79-3C-61-64-64-72-65-73-73-09-09-00-00-00-B6-FD-0B-45-F4-58-CC-88-01-0F-00-00-00-04-00-00-00-06-19-00-00-00-0F-61-72-72-61-79-20-32-20-61-64-64-72-65-73-73-09-09-00-00-00-B6-3D-A2-1A-2B-58-CC-88-0B";
+
+    private const string XmlText =
+      @"<TestClass xmlns=""http://schemas.datacontract.org/2004/07/Newtonsoft.Json.Tests"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><Address1><Entered>2010-01-21T11:12:16.0809174+13:00</Entered><Phone>(503) 814-6335</Phone><Street>fff Street</Street></Address1><Addresses><Address><Entered>2009-12-31T11:12:16.0809174+13:00</Entered><Phone>(503) 814-6335</Phone><Street>&#x1F;array&lt;address</Street></Address><Address><Entered>2009-12-30T11:12:16.0809174+13:00</Entered><Phone>(503) 814-6335</Phone><Street>array 2 address</Street></Address></Addresses><BigNumber>34123123123.121</BigNumber><Name>Rick</Name><Now>2010-01-01T12:12:16.0809174+13:00</Now><dictionary xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><a:KeyValueOfstringint><a:Key>Val &amp; asd1</a:Key><a:Value>1</a:Value></a:KeyValueOfstringint><a:KeyValueOfstringint><a:Key>Val2 &amp; asd1</a:Key><a:Value>3</a:Value></a:KeyValueOfstringint><a:KeyValueOfstringint><a:Key>Val3 &amp; asd1</a:Key><a:Value>4</a:Value></a:KeyValueOfstringint></dictionary><strings xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><a:string i:nil=""true""/><a:string>Markus egger ]&gt;&lt;[, (2nd)</a:string><a:string i:nil=""true""/></strings></TestClass>";
+
+    private const string JsonText =
+      @"{""strings"":[null,""Markus egger ]><[, (2nd)"",null],""dictionary"":{""Val & asd1"":1,""Val2 & asd1"":3,""Val3 & asd1"":4},""Name"":""Rick"",""Now"":""\/Date(1262301136080+1300)\/"",""BigNumber"":34123123123.121,""Address1"":{""Street"":""fff Street"",""Phone"":""(503) 814-6335"",""Entered"":""\/Date(1264025536080+1300)\/""},""Addresses"":[{""Street"":""\u001farray<address"",""Phone"":""(503) 814-6335"",""Entered"":""\/Date(1262211136080+1300)\/""},{""Street"":""array 2 address"",""Phone"":""(503) 814-6335"",""Entered"":""\/Date(1262124736080+1300)\/""}]}";
+
+    private const string JsonIsoText =
+      @"{""strings"":[null,""Markus egger ]><[, (2nd)"",null],""dictionary"":{""Val & asd1"":1,""Val2 & asd1"":3,""Val3 & asd1"":4},""Name"":""Rick"",""Now"":""2012-02-25T19:55:50.6095676+13:00"",""BigNumber"":34123123123.121,""Address1"":{""Street"":""fff Street"",""Phone"":""(503) 814-6335"",""Entered"":""2012-02-24T18:55:50.6095676+13:00""},""Addresses"":[{""Street"":""\u001farray<address"",""Phone"":""(503) 814-6335"",""Entered"":""2012-02-24T18:55:50.6095676+13:00""},{""Street"":""array 2 address"",""Phone"":""(503) 814-6335"",""Entered"":""2012-02-24T18:55:50.6095676+13:00""}]}";
+
+    private const string SimpleJsonText =
+      @"{""Id"":2311,""Name"":""Simple-1"",""Address"":""Planet Earth"",""Scores"":[82,96,49,40,38,38,78,96,2,39]}";
+
+    public enum SerializeMethod
+    {
+      JsonNet,
+      JsonNetWithIsoConverter,
+      JsonNetBinary,
+      BinaryFormatter,
+      JavaScriptSerializer,
+      DataContractSerializer,
+      DataContractJsonSerializer
+    }
+
+    #endregion
+
+    [Test]
+    public void SerializeSimpleObject()
+    {
+      var value = CreateSimpleObject();
+
+      SerializeTests(value);
+    }
+
+    [Test]
+    public void DeserializeSimpleObject()
+    {
+      DeserializeTests<SimpleObject>(SimpleJsonText);
+    }
+
+    [Test]
+    public void Serialize()
+    {
+      TestClass test = CreateSerializationObject();
+
+      SerializeTests(test);
+    }
+
+    private void SerializeTests(object value)
+    {
+      BenchmarkSerializeMethod(SerializeMethod.DataContractSerializer, value);
+      BenchmarkSerializeMethod(SerializeMethod.BinaryFormatter, value);
+      BenchmarkSerializeMethod(SerializeMethod.JavaScriptSerializer, value);
+      BenchmarkSerializeMethod(SerializeMethod.DataContractJsonSerializer, value);
+      BenchmarkSerializeMethod(SerializeMethod.JsonNet, value);
+      BenchmarkSerializeMethod(SerializeMethod.JsonNetWithIsoConverter, value);
+      BenchmarkSerializeMethod(SerializeMethod.JsonNetBinary, value);
+    }
+
+    [Test]
+    public void Deserialize()
+    {
+      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.DataContractSerializer, XmlText);
+      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.BinaryFormatter, MiscellaneousUtils.HexToBytes(BinaryFormatterHex));
+      DeserializeTests<TestClass>(JsonText);
+      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.JsonNetWithIsoConverter, JsonIsoText);
+      BenchmarkDeserializeMethod<TestClass>(SerializeMethod.JsonNetBinary, MiscellaneousUtils.HexToBytes(BsonHex));
+    }
+
+    public void DeserializeTests<T>(string json)
+    {
+      BenchmarkDeserializeMethod<T>(SerializeMethod.JavaScriptSerializer, json);
+      BenchmarkDeserializeMethod<T>(SerializeMethod.DataContractJsonSerializer, json);
+      BenchmarkDeserializeMethod<T>(SerializeMethod.JsonNet, json);
+    }
+
+    [Test]
+    public void SerializeSizeNormal()
+    {
+      SerializeSize(CreateSerializationObject());
+    }
+
+    [Test]
+    public void SerializeSizeData()
+    {
+      Image image = new Image();
+      image.Data = System.IO.File.ReadAllBytes(@"bunny_pancake.jpg");
+      image.FileName = "bunny_pancake.jpg";
+      image.Author = "Hironori Akutagawa";
+      image.Caption = "I have no idea what you are talking about so here's a bunny with a pancake on its head";
+
+      SerializeSize(image);
+    }
+
+    private T TimeOperation<T>(Func<T> operation, string name)
+    {
+      // warm up
+      operation();
+
+      Stopwatch timed = new Stopwatch();
+      timed.Start();
+
+      T result = operation();
+
+      Console.WriteLine(name);
+      Console.WriteLine("{0} ms", timed.ElapsedMilliseconds);
+
+      timed.Stop();
+
+      return result;
+    }
+
+    [Test]
+    public void BuildJObject()
+    {
+      JObject o = new JObject();
+      for (int i = 0; i < 50; i++)
+      {
+        o[i.ToString()] = i;
+      }
+      string jsonText = o.ToString();
+
+      // this is extremely slow with 5000 interations
+      int interations = 1000;
+
+      TimeOperation(() =>
+        {
+          JObject oo = null;
+          for (int i = 0; i < interations; i++)
+          {
+            oo = JObject.Parse(jsonText);
+          }
+
+          return oo;
+        }, "JObject");
+    }
+
+    [Test]
+    public void BuildJObjectComparedToXml()
+    {
+      const long totalIterations = 100000;
+
+      const String xml =
+        @"<?xml  version=""1.0"" encoding=""ISO-8859-1""?>
+                <root>
+                    <property name=""Property1"">1</property>
+                    <property name=""Property2"">2</property>
+                    <property name=""Property3"">3</property>
+                    <property name=""Property4"">4</property>
+                    <property name=""Property5"">5</property>
+                </root>";
+
+      const String json =
+        @"{
+                    ""Property1"":""1"",
+                    ""Property2"":""2"",
+                    ""Property3"":""3"",
+                    ""Property4"":""4"",
+                    ""Property5"":""5""
+                }";
+
+
+      var watch = new Stopwatch();
+      watch.Start();
+      for (long iteration = 0; iteration < totalIterations; ++iteration)
+      {
+        var obj = JObject.Parse(json);
+        obj["Property1"].Value<Int32>();
+        obj["Property2"].Value<Int32>();
+        obj["Property3"].Value<Int32>();
+        obj["Property4"].Value<Int32>();
+        obj["Property5"].Value<Int32>();
+      }
+      watch.Stop();
+      var performance1 = (totalIterations/watch.ElapsedMilliseconds)*1000;
+      Console.WriteLine("JSON: " + watch.Elapsed.TotalSeconds);
+
+      watch.Reset();
+      watch.Start();
+      for (long iteration = 0; iteration < totalIterations; ++iteration)
+      {
+        var doc = XDocument.Parse(xml);
+        var alarmProperties = doc.Descendants("property");
+        foreach (var property in alarmProperties)
+        {
+          var attr = property.Attribute("name");
+          var name = attr.Value;
+          switch (name)
+          {
+            case "Property1":
+              Int32.Parse(property.Value);
+              break;
+            case "Property2":
+              Int32.Parse(property.Value);
+              break;
+            case "Property3":
+              Int32.Parse(property.Value);
+              break;
+            case "Property4":
+              Int32.Parse(property.Value);
+              break;
+            case "Property5":
+              Int32.Parse(property.Value);
+              break;
+          }
+        }
+      }
+      watch.Stop();
+      var performance2 = (totalIterations/watch.ElapsedMilliseconds)*1000;
+      Console.WriteLine("XML: " + watch.Elapsed.TotalSeconds);
+    }
+
+    private void SerializeSize(object value)
+    {
+      // this is extremely slow with 5000 interations
+      int interations = 100;
+
+      byte[] jsonBytes = TimeOperation(() =>
+        {
+          string json = null;
+          for (int i = 0; i < interations; i++)
+          {
+            json = JsonConvert.SerializeObject(value, Formatting.None);
+          }
+
+          return Encoding.UTF8.GetBytes(json);
+        }, "Json.NET");
+
+      byte[] bsonBytes = TimeOperation(() =>
+        {
+          MemoryStream ms = null;
+          for (int i = 0; i < interations; i++)
+          {
+            ms = new MemoryStream();
+            JsonSerializer serializer = new JsonSerializer();
+            BsonWriter writer = new BsonWriter(ms);
+
+            serializer.Serialize(writer, value);
+            writer.Flush();
+          }
+
+          return ms.ToArray();
+        }, "Json.NET BSON");
+
+      byte[] xmlBytes = TimeOperation(() =>
+        {
+          MemoryStream ms = null;
+          for (int i = 0; i < interations; i++)
+          {
+            ms = new MemoryStream();
+            DataContractSerializer dataContractSerializer = new DataContractSerializer(value.GetType());
+            dataContractSerializer.WriteObject(ms, value);
+          }
+
+          return ms.ToArray();
+        }, "DataContractSerializer");
+
+      byte[] wcfJsonBytes = TimeOperation(() =>
+        {
+          MemoryStream ms = null;
+          for (int i = 0; i < interations; i++)
+          {
+            ms = new MemoryStream();
+            DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(value.GetType());
+            dataContractJsonSerializer.WriteObject(ms, value);
+          }
+
+          return ms.ToArray();
+        }, "DataContractJsonSerializer");
+
+      byte[] binaryFormatterBytes = TimeOperation(() =>
+        {
+          MemoryStream ms = null;
+          for (int i = 0; i < interations; i++)
+          {
+            ms = new MemoryStream();
+            BinaryFormatter formatter = new BinaryFormatter();
+            formatter.Serialize(ms, value);
+          }
+
+          return ms.ToArray();
+        }, "BinaryFormatter");
+
+      Console.WriteLine("Json.NET size: {0} bytes", jsonBytes.Length);
+      Console.WriteLine("BSON size: {0} bytes", bsonBytes.Length);
+      Console.WriteLine("WCF JSON size: {0} bytes", wcfJsonBytes.Length);
+      Console.WriteLine("WCF XML size: {0} bytes", xmlBytes.Length);
+      Console.WriteLine("BinaryFormatter size: {0} bytes", binaryFormatterBytes.Length);
+    }
+
+#region Serialize
+
+    private static readonly byte[] Buffer = new byte[4096];
+
+    public void BenchmarkSerializeMethod(SerializeMethod method, object value)
+    {
+      Serialize(method, value);
+
+      Stopwatch timed = new Stopwatch();
+      timed.Start();
+
+      string json = null;
+      for (int x = 0; x < Iterations; x++)
+      {
+        json = Serialize(method, value);
+      }
+
+      timed.Stop();
+
+      Console.WriteLine("Serialize method: {0}", method);
+      Console.WriteLine("{0} ms", timed.ElapsedMilliseconds);
+      Console.WriteLine(json);
+      Console.WriteLine();
+    }
+
+    private TestClass CreateSerializationObject()
+    {
+      TestClass test = new TestClass();
+
+      test.dictionary = new Dictionary<string, int> {{"Val & asd1", 1}, {"Val2 & asd1", 3}, {"Val3 & asd1", 4}};
+
+
+      test.Address1.Street = "fff Street";
+      test.Address1.Entered = DateTime.Now.AddDays(20);
+
+      test.BigNumber = 34123123123.121M;
+      test.Now = DateTime.Now.AddHours(1);
+      test.strings = new List<string>() {null, "Markus egger ]><[, (2nd)", null};
+
+      Address address = new Address();
+      address.Entered = DateTime.Now.AddDays(-1);
+      address.Street = "\u001farray\u003caddress";
+
+      test.Addresses.Add(address);
+
+      address = new Address();
+      address.Entered = DateTime.Now.AddDays(-2);
+      address.Street = "array 2 address";
+      test.Addresses.Add(address);
+      return test;
+    }
+
+    private static SimpleObject CreateSimpleObject()
+    {
+      return new SimpleObject
+      {
+        Name = "Simple-1",
+        Id = 2311,
+        Address = "Planet Earth",
+        Scores = new [] { 82, 96, 49, 40, 38, 38, 78, 96, 2, 39 }
+      };
+    }
+
+    public string SerializeJsonNet(object value)
+    {
+      Type type = value.GetType();
+
+      Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
+
+      json.NullValueHandling = NullValueHandling.Ignore;
+
+      json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
+      json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
+      json.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+
+
+      StringWriter sw = new StringWriter();
+      Newtonsoft.Json.JsonTextWriter writer = new JsonTextWriter(sw);
+
+      writer.Formatting = Formatting.None;
+
+      writer.QuoteChar = '"';
+      json.Serialize(writer, value);
+
+      string output = sw.ToString();
+      writer.Close();
+
+      return output;
+    }
+
+    public string SerializeWebExtensions(object value)
+    {
+      JavaScriptSerializer ser = new JavaScriptSerializer();
+
+      return ser.Serialize(value);
+    }
+
+    public string SerializeDataContractJson(object value)
+    {
+      DataContractJsonSerializer dataContractSerializer
+        = new DataContractJsonSerializer(value.GetType());
+
+      MemoryStream ms = new MemoryStream();
+      dataContractSerializer.WriteObject(ms, value);
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      using (StreamReader sr = new StreamReader(ms))
+      {
+        return sr.ReadToEnd();
+      }
+    }
+
+    public string SerializeDataContract(object value)
+    {
+      DataContractSerializer dataContractSerializer
+        = new DataContractSerializer(value.GetType());
+
+      MemoryStream ms = new MemoryStream();
+      dataContractSerializer.WriteObject(ms, value);
+
+      ms.Seek(0, SeekOrigin.Begin);
+
+      using (StreamReader sr = new StreamReader(ms))
+      {
+        return sr.ReadToEnd();
+      }
+    }
+
+    private string Serialize(SerializeMethod method, object value)
+    {
+      string json;
+
+      switch (method)
+      {
+        case SerializeMethod.JsonNet:
+          json = JsonConvert.SerializeObject(value);
+          break;
+        case SerializeMethod.JsonNetWithIsoConverter:
+          json = JsonConvert.SerializeObject(value, new IsoDateTimeConverter());
+          break;
+        case SerializeMethod.JsonNetBinary:
+          {
+            MemoryStream ms = new MemoryStream(Buffer);
+            JsonSerializer serializer = new JsonSerializer();
+            BsonWriter writer = new BsonWriter(ms);
+            serializer.Serialize(writer, value);
+
+            //json = BitConverter.ToString(ms.ToArray(), 0, (int)ms.Position);
+            json = "Bytes = " + ms.Position;
+            break;
+          }
+        case SerializeMethod.JavaScriptSerializer:
+          json = SerializeWebExtensions(value);
+          break;
+        case SerializeMethod.DataContractJsonSerializer:
+          json = SerializeDataContractJson(value);
+          break;
+        case SerializeMethod.DataContractSerializer:
+          json = SerializeDataContract(value);
+          break;
+        case SerializeMethod.BinaryFormatter:
+          json = SerializeBinaryFormatter(value);
+          break;
+        default:
+          throw new ArgumentOutOfRangeException("method");
+      }
+
+      return json;
+    }
+
+    private string SerializeBinaryFormatter(object value)
+    {
+      string json;
+      MemoryStream ms = new MemoryStream(Buffer);
+      BinaryFormatter formatter = new BinaryFormatter();
+      formatter.Serialize(ms, value);
+
+      json = "Bytes = " + ms.Position;
+      //json = BitConverter.ToString(ms.ToArray(), 0, (int)ms.Position);
+      return json;
+    }
+
+    #endregion
+
+#region Deserialize
+
+    public void BenchmarkDeserializeMethod<T>(SerializeMethod method, object json)
+    {
+      Deserialize<T>(method, json);
+
+      Stopwatch timed = new Stopwatch();
+      timed.Start();
+
+      T value = default(T);
+      for (int x = 0; x < Iterations; x++)
+      {
+        value = Deserialize<T>(method, json);
+      }
+
+      timed.Stop();
+
+      Console.WriteLine("Deserialize method: {0}", method);
+      Console.WriteLine("{0} ms", timed.ElapsedMilliseconds);
+      Console.WriteLine(value);
+      Console.WriteLine();
+    }
+
+    public T DeserializeJsonNet<T>(string json, bool isoDateTimeConverter)
+    {
+      Type type = typeof (T);
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
+      serializer.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
+      serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+      if (isoDateTimeConverter)
+        serializer.Converters.Add(new IsoDateTimeConverter());
+
+      var value = (T) serializer.Deserialize(new StringReader(json), type);
+      return value;
+      //JsonTextReader reader = new JsonTextReader(new StringReader(JsonText));
+      //while (reader.Read())
+      //{
+
+      //}
+      //return default(T);
+    }
+
+    public T DeserializeJsonNetBinary<T>(byte[] bson)
+    {
+      Type type = typeof (T);
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
+      serializer.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
+      serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+
+      return (T) serializer.Deserialize(new BsonReader(new MemoryStream(bson)), type);
+    }
+
+    public T DeserializeWebExtensions<T>(string json)
+    {
+      JavaScriptSerializer ser = new JavaScriptSerializer();
+
+      return ser.Deserialize<T>(json);
+    }
+
+    public T DeserializeDataContractJson<T>(string json)
+    {
+      DataContractJsonSerializer dataContractSerializer
+        = new DataContractJsonSerializer(typeof (T));
+
+      MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
+
+      return (T) dataContractSerializer.ReadObject(ms);
+    }
+
+    private T Deserialize<T>(SerializeMethod method, object json)
+    {
+      switch (method)
+      {
+        case SerializeMethod.JsonNet:
+          return DeserializeJsonNet<T>((string)json, false);
+        case SerializeMethod.JsonNetWithIsoConverter:
+          return DeserializeJsonNet<T>((string)json, true);
+        case SerializeMethod.JsonNetBinary:
+          return DeserializeJsonNetBinary<T>((byte[]) json);
+        case SerializeMethod.BinaryFormatter:
+          return DeserializeBinaryFormatter<T>((byte[]) json);
+        case SerializeMethod.JavaScriptSerializer:
+          return DeserializeWebExtensions<T>((string) json);
+        case SerializeMethod.DataContractSerializer:
+          return DeserializeDataContract<T>((string) json);
+        case SerializeMethod.DataContractJsonSerializer:
+          return DeserializeDataContractJson<T>((string) json);
+        default:
+          throw new ArgumentOutOfRangeException("method");
+      }
+    }
+
+    private T DeserializeDataContract<T>(string xml)
+    {
+      MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml));
+
+      DataContractSerializer serializer = new DataContractSerializer(typeof (T));
+      return (T) serializer.ReadObject(ms);
+    }
+
+    private T DeserializeBinaryFormatter<T>(byte[] bytes)
+    {
+      BinaryFormatter formatter = new BinaryFormatter();
+      return (T) formatter.Deserialize(new MemoryStream(bytes));
+    }
+
+    #endregion
+
+
+
+    [Test]
+    public void SerializeLargeObject()
+    {
+      LargeRecursiveTestClass rootValue = null;
+      LargeRecursiveTestClass parentValue = null;
+      for (int i = 0; i < 20; i++)
+      {
+        LargeRecursiveTestClass currentValue = new LargeRecursiveTestClass()
+          {
+            Integer = int.MaxValue,
+            Text = "The quick red fox jumped over the lazy dog."
+          };
+
+        if (rootValue == null)
+          rootValue = currentValue;
+        if (parentValue != null)
+          parentValue.Child = currentValue;
+
+        parentValue = currentValue;
+      }
+
+      BenchmarkSerializeMethod(SerializeMethod.JsonNetBinary, rootValue);
+    }
+
+    [Test]
+    public void JObjectToString()
+    {
+      JObject test = JObject.Parse(JsonText);
+      IsoDateTimeConverter isoDateTimeConverter = null; // = new IsoDateTimeConverter();
+
+      TimeOperation<object>(() =>
+        {
+          for (int i = 0; i < Iterations; i++)
+          {
+            test["dummy"] = new JValue(i);
+            Encoding.UTF8.GetBytes(test.ToString(Formatting.None));
+          }
+          return null;
+        }, "JObject.ToString");
+    }
+
+    [Test]
+    public void JObjectToString2()
+    {
+      JObject test = JObject.Parse(JsonText);
+      IsoDateTimeConverter isoDateTimeConverter = null; // = new IsoDateTimeConverter();
+      MemoryStream ms = new MemoryStream();
+
+      TimeOperation<object>(() =>
+        {
+          for (int i = 0; i < Iterations; i++)
+          {
+            test["dummy"] = new JValue(i);
+            ms.Seek(0, SeekOrigin.Begin);
+            JsonTextWriter jsonTextWriter = new JsonTextWriter(new StreamWriter(ms));
+            test.WriteTo(jsonTextWriter);
+            jsonTextWriter.Flush();
+            ms.ToArray();
+
+            //Encoding.UTF8.GetBytes(test.ToString(Formatting.None));
+          }
+          return null;
+        }, "JObject.ToString");
+    }
+
+    [Test]
+    public void NestedJToken()
+    {
+      Stopwatch sw;
+      for (int i = 10000; i <= 100000; i += 10000)
+      {
+        sw = new Stopwatch();
+        sw.Start();
+        JArray ija = new JArray();
+        JToken ijt = ija;
+        for (int j = 0; j < i; j++)
+        {
+          JArray temp = new JArray();
+          ija.Add(temp);
+          ija = temp;
+        }
+        ija.Add(1);
+        sw.Stop();
+        Console.WriteLine("Created a JToken of depth {0} (using OM) in {1} millis", i, sw.ElapsedMilliseconds);
+      }
+    }
+
+    [Test]
+    public void DeserializeNestedJToken()
+    {
+      string json = (new string('[', 100000)) + "1" + ((new string(']', 100000)));
+
+      Stopwatch sw;
+      sw = new Stopwatch();
+      sw.Start();
+
+      var a = (JArray)JsonConvert.DeserializeObject(json);
+
+      sw.Stop();
+
+      Assert.AreEqual(1, a.Count);
+      
+      Console.WriteLine("Deserialize big ass nested array in {0} millis", sw.ElapsedMilliseconds);
+    }
+  }
+
+  public class LargeRecursiveTestClass
+  {
+    public LargeRecursiveTestClass Child { get; set; }
+    public string Text { get; set; }
+    public int Integer { get; set; }
+  }
+
+#region Classes
+
+  [Serializable]
+  [DataContract]
+  public class TestClass
+  {
+    [DataMember]
+    public string Name
+    {
+      get { return _Name; }
+      set { _Name = value; }
+    }
+
+    private string _Name = "Rick";
+
+    [DataMember]
+    public DateTime Now
+    {
+      get { return _Now; }
+      set { _Now = value; }
+    }
+
+    private DateTime _Now = DateTime.Now;
+
+    [DataMember]
+    public decimal BigNumber
+    {
+      get { return _BigNumber; }
+      set { _BigNumber = value; }
+    }
+
+    private decimal _BigNumber = 1212121.22M;
+
+    [DataMember]
+    public Address Address1
+    {
+      get { return _Address1; }
+      set { _Address1 = value; }
+    }
+
+    private Address _Address1 = new Address();
+
+
+
+    [DataMember]
+    public List<Address> Addresses
+    {
+      get { return _Addresses; }
+      set { _Addresses = value; }
+    }
+
+    private List<Address> _Addresses = new List<Address>();
+
+    [DataMember] public List<string> strings = new List<string>();
+
+    [DataMember] public Dictionary<string, int> dictionary = new Dictionary<string, int>();
+  }
+
+  [Serializable]
+  [DataContract]
+  public class Address
+  {
+    [DataMember]
+    public string Street
+    {
+      get { return _street; }
+      set { _street = value; }
+    }
+
+    private string _street = "32 Kaiea";
+
+    [DataMember]
+    public string Phone
+    {
+      get { return _Phone; }
+      set { _Phone = value; }
+    }
+
+    private string _Phone = "(503) 814-6335";
+
+    [DataMember]
+    public DateTime Entered
+    {
+      get { return _Entered; }
+      set { _Entered = value; }
+    }
+
+    private DateTime _Entered = DateTime.Parse("01/01/2007", CultureInfo.CurrentCulture.DateTimeFormat);
+  }
+
+  [DataContract]
+  [Serializable]
+  public class SimpleObject
+  {
+    [DataMember]
+    public int Id { get; set; }
+
+    [DataMember]
+    public string Name { get; set; }
+
+    [DataMember]
+    public string Address { get; set; }
+
+    [DataMember]
+    public int[] Scores { get; set; }
+  }
+
+  #endregion
+}
+
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
@@ -1,76 +1,76 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Security;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-
-#if WINDOWS_PHONE
-[assembly: AssemblyTitle("Json.NET Tests Windows Phone")]
-#elif SILVERLIGHT
-[assembly: AssemblyTitle("Json.NET Tests Silverlight")]
-#elif PocketPC
-[assembly: AssemblyTitle("Json.NET Tests Compact")]
-#elif NET20
-[assembly: AssemblyTitle("Json.NET Tests .NET 2.0")]
-#elif NET35
-[assembly: AssemblyTitle("Json.NET Tests .NET 3.5")]
-#else
-[assembly: AssemblyTitle("Json.NET")]
-#endif
-
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Newtonsoft")]
-[assembly: AssemblyProduct("Json.NET Tests")]
-[assembly: AssemblyCopyright("Copyright  James Newton-King 2008")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("0be3d72b-d2ef-409c-985c-d3ede89a25f1")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("4.5.0.0")]
-#if !PocketPC
-[assembly: AssemblyFileVersion("4.5.1.14719")]
-#endif
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Security;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+
+#if WINDOWS_PHONE
+[assembly: AssemblyTitle("Json.NET Tests Windows Phone")]
+#elif SILVERLIGHT
+[assembly: AssemblyTitle("Json.NET Tests Silverlight")]
+#elif PocketPC
+[assembly: AssemblyTitle("Json.NET Tests Compact")]
+#elif NET20
+[assembly: AssemblyTitle("Json.NET Tests .NET 2.0")]
+#elif NET35
+[assembly: AssemblyTitle("Json.NET Tests .NET 3.5")]
+#else
+[assembly: AssemblyTitle("Json.NET")]
+#endif
+
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Newtonsoft")]
+[assembly: AssemblyProduct("Json.NET Tests")]
+[assembly: AssemblyCopyright("Copyright  James Newton-King 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0be3d72b-d2ef-409c-985c-d3ede89a25f1")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("4.5.0.0")]
+#if !PocketPC
+[assembly: AssemblyFileVersion("4.5.1.14719")]
+#endif
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs
@@ -1,313 +1,313 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Schema;
-using Newtonsoft.Json.Linq;
-using System.IO;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !(SILVERLIGHT || NETFX_CORE)
-using System.Data;
-#endif
-
-namespace Newtonsoft.Json.Tests.Schema
-{
-  [TestFixture]
-  public class ExtensionsTests : TestFixtureBase
-  {
-    [Test]
-    public void IsValid()
-    {
-      JsonSchema schema = JsonSchema.Parse("{'type':'integer'}");
-      JToken stringToken = JToken.FromObject("pie");
-      JToken integerToken = JToken.FromObject(1);
-
-      IList<string> errorMessages;
-      Assert.AreEqual(true, integerToken.IsValid(schema));
-      Assert.AreEqual(true, integerToken.IsValid(schema, out errorMessages));
-      Assert.AreEqual(0, errorMessages.Count);
-
-      Assert.AreEqual(false, stringToken.IsValid(schema));
-      Assert.AreEqual(false, stringToken.IsValid(schema, out errorMessages));
-      Assert.AreEqual(1, errorMessages.Count);
-      Assert.AreEqual("Invalid type. Expected Integer but got String.", errorMessages[0]);
-    }
-
-    [Test]
-    public void ValidateWithEventHandler()
-    {
-      JsonSchema schema = JsonSchema.Parse("{'pattern':'lol'}");
-      JToken stringToken = JToken.FromObject("pie lol");
-
-      List<string> errors = new List<string>();
-      stringToken.Validate(schema, (sender, args) => errors.Add(args.Message));
-      Assert.AreEqual(0, errors.Count);
-
-      stringToken = JToken.FromObject("pie");
-
-      stringToken.Validate(schema, (sender, args) => errors.Add(args.Message));
-      Assert.AreEqual(1, errors.Count);
-
-      Assert.AreEqual("String 'pie' does not match regex pattern 'lol'.", errors[0]);
-    }
-
-    [Test]
-    public void ValidateWithOutEventHandlerFailure()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>(@"String 'pie' does not match regex pattern 'lol'.",
-      () =>
-      {
-        JsonSchema schema = JsonSchema.Parse("{'pattern':'lol'}");
-        JToken stringToken = JToken.FromObject("pie");
-        stringToken.Validate(schema);
-      });
-    }
-
-    [Test]
-    public void ValidateWithOutEventHandlerSuccess()
-    {
-      JsonSchema schema = JsonSchema.Parse("{'pattern':'lol'}");
-      JToken stringToken = JToken.FromObject("pie lol");
-      stringToken.Validate(schema);
-    }
-
-    [Test]
-    public void ValidateFailureWithOutLineInfoBecauseOfEndToken()
-    {
-      JsonSchema schema = JsonSchema.Parse("{'properties':{'lol':{'required':true}}}");
-      JObject o = JObject.Parse("{}");
-
-      List<string> errors = new List<string>();
-      o.Validate(schema, (sender, args) => errors.Add(args.Message));
-
-      Assert.AreEqual("Required properties are missing from object: lol.", errors[0]);
-      Assert.AreEqual(1, errors.Count);
-    }
-
-    [Test]
-    public void ValidateFailureWithLineInfo()
-    {
-      JsonSchema schema = JsonSchema.Parse("{'properties':{'lol':{'type':'string'}}}");
-      JObject o = JObject.Parse("{'lol':1}");
-
-      List<string> errors = new List<string>();
-      o.Validate(schema, (sender, args) => errors.Add(args.Path + " - " + args.Message));
-
-      Assert.AreEqual("lol - Invalid type. Expected String but got Integer. Line 1, position 8.", errors[0]);
-      Assert.AreEqual("1", o.SelectToken("lol").ToString());
-      Assert.AreEqual(1, errors.Count);
-    }
-
-    [Test]
-    public void Blog()
-    {
-      string schemaJson = @"
-{
-  ""description"": ""A person schema"",
-  ""type"": ""object"",
-  ""properties"":
-  {
-    ""name"": {""type"":""string""},
-    ""hobbies"": {
-      ""type"": ""array"",
-      ""items"": {""type"":""string""}
-    }
-  }
-}
-";
-
-      //JsonSchema schema;
-
-      //using (JsonTextReader reader = new JsonTextReader(new StringReader(schemaJson)))
-      //{
-      //  JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      //  schema = builder.Parse(reader);
-      //}
-
-      JsonSchema schema = JsonSchema.Parse(schemaJson);
-
-      JObject person = JObject.Parse(@"{
-        ""name"": ""James"",
-        ""hobbies"": ["".NET"", ""Blogging"", ""Reading"", ""Xbox"", ""LOLCATS""]
-      }");
-
-      bool valid = person.IsValid(schema);
-      // true
-    }
-
-    private void GenerateSchemaAndSerializeFromType<T>(T value)
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseAssemblyQualifiedName;
-      JsonSchema typeSchema = generator.Generate(typeof (T));
-      string schema = typeSchema.ToString();
-
-      string json = JsonConvert.SerializeObject(value, Formatting.Indented);
-      JToken token = JToken.ReadFrom(new JsonTextReader(new StringReader(json)));
-
-      List<string> errors = new List<string>();
-
-      token.Validate(typeSchema, (sender, args) =>
-                                   {
-                                     errors.Add(args.Message);
-                                   });
-
-      if (errors.Count > 0)
-        Assert.Fail("Schema generated for type '{0}' is not valid." + Environment.NewLine + string.Join(Environment.NewLine, errors.ToArray()), typeof(T));
-    }
-
-    [Test]
-    public void GenerateSchemaAndSerializeFromTypeTests()
-    {
-      GenerateSchemaAndSerializeFromType(new List<string> { "1", "Two", "III" });
-      GenerateSchemaAndSerializeFromType(new List<int> { 1 });
-      GenerateSchemaAndSerializeFromType(new Version("1.2.3.4"));
-      GenerateSchemaAndSerializeFromType(new Store());
-      GenerateSchemaAndSerializeFromType(new Person());
-      GenerateSchemaAndSerializeFromType(new PersonRaw());
-      GenerateSchemaAndSerializeFromType(new CircularReferenceClass() { Name = "I'm required" });
-      GenerateSchemaAndSerializeFromType(new CircularReferenceWithIdClass());
-      GenerateSchemaAndSerializeFromType(new ClassWithArray());
-      GenerateSchemaAndSerializeFromType(new ClassWithGuid());
-#if !NET20 && !PocketPC
-      GenerateSchemaAndSerializeFromType(new NullableDateTimeTestClass());
-#endif
-#if !(SILVERLIGHT || NETFX_CORE)
-      GenerateSchemaAndSerializeFromType(new DataSet());
-#endif
-      GenerateSchemaAndSerializeFromType(new object());
-      GenerateSchemaAndSerializeFromType(1);
-      GenerateSchemaAndSerializeFromType("Hi");
-      GenerateSchemaAndSerializeFromType(new DateTime(2000, 12, 29, 23, 59, 0, DateTimeKind.Utc));
-      GenerateSchemaAndSerializeFromType(TimeSpan.FromTicks(1000000));
-#if !NETFX_CORE
-      GenerateSchemaAndSerializeFromType(DBNull.Value);
-#endif
-      GenerateSchemaAndSerializeFromType(new JsonPropertyWithHandlingValues());
-    }
-
-    [Test]
-    public void UndefinedPropertyOnNoPropertySchema()
-    {
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""description"": ""test"",
-  ""type"": ""object"",
-  ""additionalProperties"": false,
-  ""properties"": {
-  }
-}");
-
-      JObject o = JObject.Parse("{'g':1}");
-
-      List<string> errors = new List<string>();
-      o.Validate(schema, (sender, args) => errors.Add(args.Message));
-
-      Assert.AreEqual(1, errors.Count);
-      Assert.AreEqual("Property 'g' has not been defined and the schema does not allow additional properties. Line 1, position 5.", errors[0]);
-    }
-
-    [Test]
-    public void ExclusiveMaximum_Int()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 equals maximum value of 10 and exclusive maximum is true.",
-      () =>
-      {
-        JsonSchema schema = new JsonSchema();
-        schema.Maximum = 10;
-        schema.ExclusiveMaximum = true;
-
-        JValue v = new JValue(10);
-        v.Validate(schema);
-      });
-    }
-
-    [Test]
-    public void ExclusiveMaximum_Float()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Float 10.1 equals maximum value of 10.1 and exclusive maximum is true.",
-      () =>
-      {
-        JsonSchema schema = new JsonSchema();
-        schema.Maximum = 10.1;
-        schema.ExclusiveMaximum = true;
-
-        JValue v = new JValue(10.1);
-        v.Validate(schema);
-      });
-    }
-
-    [Test]
-    public void ExclusiveMinimum_Int()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 equals minimum value of 10 and exclusive minimum is true.",
-      () =>
-      {
-        JsonSchema schema = new JsonSchema();
-        schema.Minimum = 10;
-        schema.ExclusiveMinimum = true;
-
-        JValue v = new JValue(10);
-        v.Validate(schema);
-      });
-    }
-
-    [Test]
-    public void ExclusiveMinimum_Float()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Float 10.1 equals minimum value of 10.1 and exclusive minimum is true.",
-      () =>
-      {
-        JsonSchema schema = new JsonSchema();
-        schema.Minimum = 10.1;
-        schema.ExclusiveMinimum = true;
-
-        JValue v = new JValue(10.1);
-        v.Validate(schema);
-      });
-    }
-
-    [Test]
-    public void DivisibleBy_Int()
-    {
-      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 is not evenly divisible by 3.",
-      () =>
-      {
-        JsonSchema schema = new JsonSchema();
-        schema.DivisibleBy = 3;
-
-        JValue v = new JValue(10);
-        v.Validate(schema);
-      });
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Schema;
+using Newtonsoft.Json.Linq;
+using System.IO;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !(SILVERLIGHT || NETFX_CORE)
+using System.Data;
+#endif
+
+namespace Newtonsoft.Json.Tests.Schema
+{
+  [TestFixture]
+  public class ExtensionsTests : TestFixtureBase
+  {
+    [Test]
+    public void IsValid()
+    {
+      JsonSchema schema = JsonSchema.Parse("{'type':'integer'}");
+      JToken stringToken = JToken.FromObject("pie");
+      JToken integerToken = JToken.FromObject(1);
+
+      IList<string> errorMessages;
+      Assert.AreEqual(true, integerToken.IsValid(schema));
+      Assert.AreEqual(true, integerToken.IsValid(schema, out errorMessages));
+      Assert.AreEqual(0, errorMessages.Count);
+
+      Assert.AreEqual(false, stringToken.IsValid(schema));
+      Assert.AreEqual(false, stringToken.IsValid(schema, out errorMessages));
+      Assert.AreEqual(1, errorMessages.Count);
+      Assert.AreEqual("Invalid type. Expected Integer but got String.", errorMessages[0]);
+    }
+
+    [Test]
+    public void ValidateWithEventHandler()
+    {
+      JsonSchema schema = JsonSchema.Parse("{'pattern':'lol'}");
+      JToken stringToken = JToken.FromObject("pie lol");
+
+      List<string> errors = new List<string>();
+      stringToken.Validate(schema, (sender, args) => errors.Add(args.Message));
+      Assert.AreEqual(0, errors.Count);
+
+      stringToken = JToken.FromObject("pie");
+
+      stringToken.Validate(schema, (sender, args) => errors.Add(args.Message));
+      Assert.AreEqual(1, errors.Count);
+
+      Assert.AreEqual("String 'pie' does not match regex pattern 'lol'.", errors[0]);
+    }
+
+    [Test]
+    public void ValidateWithOutEventHandlerFailure()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>(@"String 'pie' does not match regex pattern 'lol'.",
+      () =>
+      {
+        JsonSchema schema = JsonSchema.Parse("{'pattern':'lol'}");
+        JToken stringToken = JToken.FromObject("pie");
+        stringToken.Validate(schema);
+      });
+    }
+
+    [Test]
+    public void ValidateWithOutEventHandlerSuccess()
+    {
+      JsonSchema schema = JsonSchema.Parse("{'pattern':'lol'}");
+      JToken stringToken = JToken.FromObject("pie lol");
+      stringToken.Validate(schema);
+    }
+
+    [Test]
+    public void ValidateFailureWithOutLineInfoBecauseOfEndToken()
+    {
+      JsonSchema schema = JsonSchema.Parse("{'properties':{'lol':{'required':true}}}");
+      JObject o = JObject.Parse("{}");
+
+      List<string> errors = new List<string>();
+      o.Validate(schema, (sender, args) => errors.Add(args.Message));
+
+      Assert.AreEqual("Required properties are missing from object: lol.", errors[0]);
+      Assert.AreEqual(1, errors.Count);
+    }
+
+    [Test]
+    public void ValidateFailureWithLineInfo()
+    {
+      JsonSchema schema = JsonSchema.Parse("{'properties':{'lol':{'type':'string'}}}");
+      JObject o = JObject.Parse("{'lol':1}");
+
+      List<string> errors = new List<string>();
+      o.Validate(schema, (sender, args) => errors.Add(args.Path + " - " + args.Message));
+
+      Assert.AreEqual("lol - Invalid type. Expected String but got Integer. Line 1, position 8.", errors[0]);
+      Assert.AreEqual("1", o.SelectToken("lol").ToString());
+      Assert.AreEqual(1, errors.Count);
+    }
+
+    [Test]
+    public void Blog()
+    {
+      string schemaJson = @"
+{
+  ""description"": ""A person schema"",
+  ""type"": ""object"",
+  ""properties"":
+  {
+    ""name"": {""type"":""string""},
+    ""hobbies"": {
+      ""type"": ""array"",
+      ""items"": {""type"":""string""}
+    }
+  }
+}
+";
+
+      //JsonSchema schema;
+
+      //using (JsonTextReader reader = new JsonTextReader(new StringReader(schemaJson)))
+      //{
+      //  JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      //  schema = builder.Parse(reader);
+      //}
+
+      JsonSchema schema = JsonSchema.Parse(schemaJson);
+
+      JObject person = JObject.Parse(@"{
+        ""name"": ""James"",
+        ""hobbies"": ["".NET"", ""Blogging"", ""Reading"", ""Xbox"", ""LOLCATS""]
+      }");
+
+      bool valid = person.IsValid(schema);
+      // true
+    }
+
+    private void GenerateSchemaAndSerializeFromType<T>(T value)
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseAssemblyQualifiedName;
+      JsonSchema typeSchema = generator.Generate(typeof (T));
+      string schema = typeSchema.ToString();
+
+      string json = JsonConvert.SerializeObject(value, Formatting.Indented);
+      JToken token = JToken.ReadFrom(new JsonTextReader(new StringReader(json)));
+
+      List<string> errors = new List<string>();
+
+      token.Validate(typeSchema, (sender, args) =>
+                                   {
+                                     errors.Add(args.Message);
+                                   });
+
+      if (errors.Count > 0)
+        Assert.Fail("Schema generated for type '{0}' is not valid." + Environment.NewLine + string.Join(Environment.NewLine, errors.ToArray()), typeof(T));
+    }
+
+    [Test]
+    public void GenerateSchemaAndSerializeFromTypeTests()
+    {
+      GenerateSchemaAndSerializeFromType(new List<string> { "1", "Two", "III" });
+      GenerateSchemaAndSerializeFromType(new List<int> { 1 });
+      GenerateSchemaAndSerializeFromType(new Version("1.2.3.4"));
+      GenerateSchemaAndSerializeFromType(new Store());
+      GenerateSchemaAndSerializeFromType(new Person());
+      GenerateSchemaAndSerializeFromType(new PersonRaw());
+      GenerateSchemaAndSerializeFromType(new CircularReferenceClass() { Name = "I'm required" });
+      GenerateSchemaAndSerializeFromType(new CircularReferenceWithIdClass());
+      GenerateSchemaAndSerializeFromType(new ClassWithArray());
+      GenerateSchemaAndSerializeFromType(new ClassWithGuid());
+#if !NET20 && !PocketPC
+      GenerateSchemaAndSerializeFromType(new NullableDateTimeTestClass());
+#endif
+#if !(SILVERLIGHT || NETFX_CORE)
+      GenerateSchemaAndSerializeFromType(new DataSet());
+#endif
+      GenerateSchemaAndSerializeFromType(new object());
+      GenerateSchemaAndSerializeFromType(1);
+      GenerateSchemaAndSerializeFromType("Hi");
+      GenerateSchemaAndSerializeFromType(new DateTime(2000, 12, 29, 23, 59, 0, DateTimeKind.Utc));
+      GenerateSchemaAndSerializeFromType(TimeSpan.FromTicks(1000000));
+#if !NETFX_CORE
+      GenerateSchemaAndSerializeFromType(DBNull.Value);
+#endif
+      GenerateSchemaAndSerializeFromType(new JsonPropertyWithHandlingValues());
+    }
+
+    [Test]
+    public void UndefinedPropertyOnNoPropertySchema()
+    {
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""description"": ""test"",
+  ""type"": ""object"",
+  ""additionalProperties"": false,
+  ""properties"": {
+  }
+}");
+
+      JObject o = JObject.Parse("{'g':1}");
+
+      List<string> errors = new List<string>();
+      o.Validate(schema, (sender, args) => errors.Add(args.Message));
+
+      Assert.AreEqual(1, errors.Count);
+      Assert.AreEqual("Property 'g' has not been defined and the schema does not allow additional properties. Line 1, position 5.", errors[0]);
+    }
+
+    [Test]
+    public void ExclusiveMaximum_Int()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 equals maximum value of 10 and exclusive maximum is true.",
+      () =>
+      {
+        JsonSchema schema = new JsonSchema();
+        schema.Maximum = 10;
+        schema.ExclusiveMaximum = true;
+
+        JValue v = new JValue(10);
+        v.Validate(schema);
+      });
+    }
+
+    [Test]
+    public void ExclusiveMaximum_Float()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Float 10.1 equals maximum value of 10.1 and exclusive maximum is true.",
+      () =>
+      {
+        JsonSchema schema = new JsonSchema();
+        schema.Maximum = 10.1;
+        schema.ExclusiveMaximum = true;
+
+        JValue v = new JValue(10.1);
+        v.Validate(schema);
+      });
+    }
+
+    [Test]
+    public void ExclusiveMinimum_Int()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 equals minimum value of 10 and exclusive minimum is true.",
+      () =>
+      {
+        JsonSchema schema = new JsonSchema();
+        schema.Minimum = 10;
+        schema.ExclusiveMinimum = true;
+
+        JValue v = new JValue(10);
+        v.Validate(schema);
+      });
+    }
+
+    [Test]
+    public void ExclusiveMinimum_Float()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Float 10.1 equals minimum value of 10.1 and exclusive minimum is true.",
+      () =>
+      {
+        JsonSchema schema = new JsonSchema();
+        schema.Minimum = 10.1;
+        schema.ExclusiveMinimum = true;
+
+        JValue v = new JValue(10.1);
+        v.Validate(schema);
+      });
+    }
+
+    [Test]
+    public void DivisibleBy_Int()
+    {
+      ExceptionAssert.Throws<JsonSchemaException>("Integer 10 is not evenly divisible by 3.",
+      () =>
+      {
+        JsonSchema schema = new JsonSchema();
+        schema.DivisibleBy = 3;
+
+        JValue v = new JValue(10);
+        v.Validate(schema);
+      });
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaBuilderTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaBuilderTests.cs
@@ -1,476 +1,476 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Schema;
-using System.IO;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.Schema
-{
-  [TestFixture]
-  public class JsonSchemaBuilderTests : TestFixtureBase
-  {
-    [Test]
-    public void Simple()
-    {
-      string json = @"
-{
-  ""description"": ""A person"",
-  ""type"": ""object"",
-  ""properties"":
-  {
-    ""name"": {""type"":""string""},
-    ""hobbies"": {
-      ""type"": ""array"",
-      ""items"": {""type"":""string""}
-    }
-  }
-}
-";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("A person", schema.Description);
-      Assert.AreEqual(JsonSchemaType.Object, schema.Type);
-
-      Assert.AreEqual(2, schema.Properties.Count);
-
-      Assert.AreEqual(JsonSchemaType.String, schema.Properties["name"].Type);
-      Assert.AreEqual(JsonSchemaType.Array, schema.Properties["hobbies"].Type);
-      Assert.AreEqual(JsonSchemaType.String, schema.Properties["hobbies"].Items[0].Type);
-    }
-
-    [Test]
-    public void MultipleTypes()
-    {
-      string json = @"{
-  ""description"":""Age"",
-  ""type"":[""string"", ""integer""]
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Age", schema.Description);
-      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Integer, schema.Type);
-    }
-
-    [Test]
-    public void MultipleItems()
-    {
-      string json = @"{
-  ""description"":""MultipleItems"",
-  ""type"":""array"",
-  ""items"": [{""type"":""string""},{""type"":""array""}]
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("MultipleItems", schema.Description);
-      Assert.AreEqual(JsonSchemaType.String, schema.Items[0].Type);
-      Assert.AreEqual(JsonSchemaType.Array, schema.Items[1].Type);
-    }
-
-    [Test]
-    public void AdditionalProperties()
-    {
-      string json = @"{
-  ""description"":""AdditionalProperties"",
-  ""type"":[""string"", ""integer""],
-  ""additionalProperties"":{""type"":[""object"", ""boolean""]}
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("AdditionalProperties", schema.Description);
-      Assert.AreEqual(JsonSchemaType.Object | JsonSchemaType.Boolean, schema.AdditionalProperties.Type);
-    }
-
-    [Test]
-    public void Required()
-    {
-      string json = @"{
-  ""description"":""Required"",
-  ""required"":true
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Required", schema.Description);
-      Assert.AreEqual(true, schema.Required);
-    }
-
-    [Test]
-    public void ExclusiveMinimum_ExclusiveMaximum()
-    {
-      string json = @"{
-  ""exclusiveMinimum"":true,
-  ""exclusiveMaximum"":true
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual(true, schema.ExclusiveMinimum);
-      Assert.AreEqual(true, schema.ExclusiveMaximum);
-    }
-
-    [Test]
-    public void ReadOnly()
-    {
-      string json = @"{
-  ""description"":""ReadOnly"",
-  ""readonly"":true
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("ReadOnly", schema.Description);
-      Assert.AreEqual(true, schema.ReadOnly);
-    }
-
-    [Test]
-    public void Hidden()
-    {
-      string json = @"{
-  ""description"":""Hidden"",
-  ""hidden"":true
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Hidden", schema.Description);
-      Assert.AreEqual(true, schema.Hidden);
-    }
-
-    [Test]
-    public void Id()
-    {
-      string json = @"{
-  ""description"":""Id"",
-  ""id"":""testid""
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Id", schema.Description);
-      Assert.AreEqual("testid", schema.Id);
-    }
-
-    [Test]
-    public void Title()
-    {
-      string json = @"{
-  ""description"":""Title"",
-  ""title"":""testtitle""
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Title", schema.Description);
-      Assert.AreEqual("testtitle", schema.Title);
-    }
-
-    [Test]
-    public void Pattern()
-    {
-      string json = @"{
-  ""description"":""Pattern"",
-  ""pattern"":""testpattern""
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Pattern", schema.Description);
-      Assert.AreEqual("testpattern", schema.Pattern);
-    }
-
-    [Test]
-    public void Format()
-    {
-      string json = @"{
-  ""description"":""Format"",
-  ""format"":""testformat""
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Format", schema.Description);
-      Assert.AreEqual("testformat", schema.Format);
-    }
-
-    [Test]
-    public void Requires()
-    {
-      string json = @"{
-  ""description"":""Requires"",
-  ""requires"":""PurpleMonkeyDishwasher""
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Requires", schema.Description);
-      Assert.AreEqual("PurpleMonkeyDishwasher", schema.Requires);
-    }
-
-    [Test]
-    public void IdentitySingle()
-    {
-      string json = @"{
-  ""description"":""Identity"",
-  ""identity"":""PurpleMonkeyDishwasher""
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Identity", schema.Description);
-      Assert.AreEqual(1, schema.Identity.Count);
-      Assert.AreEqual("PurpleMonkeyDishwasher", schema.Identity[0]);
-    }
-
-    [Test]
-    public void IdentityMultiple()
-    {
-      string json = @"{
-  ""description"":""Identity"",
-  ""identity"":[""PurpleMonkeyDishwasher"",""Antelope""]
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Identity", schema.Description);
-      Assert.AreEqual(2, schema.Identity.Count);
-      Assert.AreEqual("PurpleMonkeyDishwasher", schema.Identity[0]);
-      Assert.AreEqual("Antelope", schema.Identity[1]);
-    }
-
-    [Test]
-    public void MinimumMaximum()
-    {
-      string json = @"{
-  ""description"":""MinimumMaximum"",
-  ""minimum"":1.1,
-  ""maximum"":1.2,
-  ""minItems"":1,
-  ""maxItems"":2,
-  ""minLength"":5,
-  ""maxLength"":50,
-  ""divisibleBy"":3,
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("MinimumMaximum", schema.Description);
-      Assert.AreEqual(1.1, schema.Minimum);
-      Assert.AreEqual(1.2, schema.Maximum);
-      Assert.AreEqual(1, schema.MinimumItems);
-      Assert.AreEqual(2, schema.MaximumItems);
-      Assert.AreEqual(5, schema.MinimumLength);
-      Assert.AreEqual(50, schema.MaximumLength);
-      Assert.AreEqual(3, schema.DivisibleBy);
-    }
-
-    [Test]
-    public void DisallowSingleType()
-    {
-      string json = @"{
-  ""description"":""DisallowSingleType"",
-  ""disallow"":""string""
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("DisallowSingleType", schema.Description);
-      Assert.AreEqual(JsonSchemaType.String, schema.Disallow);
-    }
-
-    [Test]
-    public void DisallowMultipleTypes()
-    {
-      string json = @"{
-  ""description"":""DisallowMultipleTypes"",
-  ""disallow"":[""string"",""number""]
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("DisallowMultipleTypes", schema.Description);
-      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Float, schema.Disallow);
-    }
-
-    [Test]
-    public void DefaultPrimitiveType()
-    {
-      string json = @"{
-  ""description"":""DefaultPrimitiveType"",
-  ""default"":1.1
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("DefaultPrimitiveType", schema.Description);
-      Assert.AreEqual(1.1, (double)schema.Default);
-    }
-
-    [Test]
-    public void DefaultComplexType()
-    {
-      string json = @"{
-  ""description"":""DefaultComplexType"",
-  ""default"":{""pie"":true}
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("DefaultComplexType", schema.Description);
-      Assert.IsTrue(JToken.DeepEquals(JObject.Parse(@"{""pie"":true}"), schema.Default));
-    }
-
-    [Test]
-    public void Options()
-    {
-      string json = @"{
-  ""description"":""NZ Island"",
-  ""type"":""string"",
-  ""options"":
-  [
-    {""value"":""NI"",""label"":""North Island""},
-    {""value"":""SI"",""label"":""South Island""}
-  ]
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("NZ Island", schema.Description);
-      Assert.AreEqual(JsonSchemaType.String, schema.Type);
-
-      Assert.AreEqual(2, schema.Options.Count);
-      Assert.AreEqual("North Island", schema.Options[new JValue("NI")]);
-      Assert.AreEqual("South Island", schema.Options[new JValue("SI")]);
-    }
-
-    [Test]
-    public void Enum()
-    {
-      string json = @"{
-  ""description"":""Type"",
-  ""type"":[""string"",""array""],
-  ""enum"":[""string"",""object"",""array"",""boolean"",""number"",""integer"",""null"",""any""]
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("Type", schema.Description);
-      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Array, schema.Type);
-
-      Assert.AreEqual(8, schema.Enum.Count);
-      Assert.AreEqual("string", (string)schema.Enum[0]);
-      Assert.AreEqual("any", (string)schema.Enum[schema.Enum.Count - 1]);
-    }
-
-    [Test]
-    public void CircularReference()
-    {
-      string json = @"{
-  ""id"":""CircularReferenceArray"",
-  ""description"":""CircularReference"",
-  ""type"":[""array""],
-  ""items"":{""$ref"":""CircularReferenceArray""}
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.AreEqual("CircularReference", schema.Description);
-      Assert.AreEqual("CircularReferenceArray", schema.Id);
-      Assert.AreEqual(JsonSchemaType.Array, schema.Type);
-
-      Assert.AreEqual(schema, schema.Items[0]);
-    }
-
-    [Test]
-    public void UnresolvedReference()
-    {
-      ExceptionAssert.Throws<Exception>(@"Could not resolve schema reference for Id 'MyUnresolvedReference'.",
-      () =>
-      {
-        string json = @"{
-  ""id"":""CircularReferenceArray"",
-  ""description"":""CircularReference"",
-  ""type"":[""array""],
-  ""items"":{""$ref"":""MyUnresolvedReference""}
-}";
-
-        JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-        JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-      });
-    }
-
-    [Test]
-    public void PatternProperties()
-    {
-      string json = @"{
-  ""patternProperties"": {
-    ""[abc]"": { ""id"":""Blah"" }
-  }
-}";
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
-      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
-
-      Assert.IsNotNull(schema.PatternProperties);
-      Assert.AreEqual(1, schema.PatternProperties.Count);
-      Assert.AreEqual("Blah", schema.PatternProperties["[abc]"].Id);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Schema;
+using System.IO;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.Schema
+{
+  [TestFixture]
+  public class JsonSchemaBuilderTests : TestFixtureBase
+  {
+    [Test]
+    public void Simple()
+    {
+      string json = @"
+{
+  ""description"": ""A person"",
+  ""type"": ""object"",
+  ""properties"":
+  {
+    ""name"": {""type"":""string""},
+    ""hobbies"": {
+      ""type"": ""array"",
+      ""items"": {""type"":""string""}
+    }
+  }
+}
+";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("A person", schema.Description);
+      Assert.AreEqual(JsonSchemaType.Object, schema.Type);
+
+      Assert.AreEqual(2, schema.Properties.Count);
+
+      Assert.AreEqual(JsonSchemaType.String, schema.Properties["name"].Type);
+      Assert.AreEqual(JsonSchemaType.Array, schema.Properties["hobbies"].Type);
+      Assert.AreEqual(JsonSchemaType.String, schema.Properties["hobbies"].Items[0].Type);
+    }
+
+    [Test]
+    public void MultipleTypes()
+    {
+      string json = @"{
+  ""description"":""Age"",
+  ""type"":[""string"", ""integer""]
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Age", schema.Description);
+      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Integer, schema.Type);
+    }
+
+    [Test]
+    public void MultipleItems()
+    {
+      string json = @"{
+  ""description"":""MultipleItems"",
+  ""type"":""array"",
+  ""items"": [{""type"":""string""},{""type"":""array""}]
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("MultipleItems", schema.Description);
+      Assert.AreEqual(JsonSchemaType.String, schema.Items[0].Type);
+      Assert.AreEqual(JsonSchemaType.Array, schema.Items[1].Type);
+    }
+
+    [Test]
+    public void AdditionalProperties()
+    {
+      string json = @"{
+  ""description"":""AdditionalProperties"",
+  ""type"":[""string"", ""integer""],
+  ""additionalProperties"":{""type"":[""object"", ""boolean""]}
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("AdditionalProperties", schema.Description);
+      Assert.AreEqual(JsonSchemaType.Object | JsonSchemaType.Boolean, schema.AdditionalProperties.Type);
+    }
+
+    [Test]
+    public void Required()
+    {
+      string json = @"{
+  ""description"":""Required"",
+  ""required"":true
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Required", schema.Description);
+      Assert.AreEqual(true, schema.Required);
+    }
+
+    [Test]
+    public void ExclusiveMinimum_ExclusiveMaximum()
+    {
+      string json = @"{
+  ""exclusiveMinimum"":true,
+  ""exclusiveMaximum"":true
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual(true, schema.ExclusiveMinimum);
+      Assert.AreEqual(true, schema.ExclusiveMaximum);
+    }
+
+    [Test]
+    public void ReadOnly()
+    {
+      string json = @"{
+  ""description"":""ReadOnly"",
+  ""readonly"":true
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("ReadOnly", schema.Description);
+      Assert.AreEqual(true, schema.ReadOnly);
+    }
+
+    [Test]
+    public void Hidden()
+    {
+      string json = @"{
+  ""description"":""Hidden"",
+  ""hidden"":true
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Hidden", schema.Description);
+      Assert.AreEqual(true, schema.Hidden);
+    }
+
+    [Test]
+    public void Id()
+    {
+      string json = @"{
+  ""description"":""Id"",
+  ""id"":""testid""
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Id", schema.Description);
+      Assert.AreEqual("testid", schema.Id);
+    }
+
+    [Test]
+    public void Title()
+    {
+      string json = @"{
+  ""description"":""Title"",
+  ""title"":""testtitle""
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Title", schema.Description);
+      Assert.AreEqual("testtitle", schema.Title);
+    }
+
+    [Test]
+    public void Pattern()
+    {
+      string json = @"{
+  ""description"":""Pattern"",
+  ""pattern"":""testpattern""
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Pattern", schema.Description);
+      Assert.AreEqual("testpattern", schema.Pattern);
+    }
+
+    [Test]
+    public void Format()
+    {
+      string json = @"{
+  ""description"":""Format"",
+  ""format"":""testformat""
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Format", schema.Description);
+      Assert.AreEqual("testformat", schema.Format);
+    }
+
+    [Test]
+    public void Requires()
+    {
+      string json = @"{
+  ""description"":""Requires"",
+  ""requires"":""PurpleMonkeyDishwasher""
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Requires", schema.Description);
+      Assert.AreEqual("PurpleMonkeyDishwasher", schema.Requires);
+    }
+
+    [Test]
+    public void IdentitySingle()
+    {
+      string json = @"{
+  ""description"":""Identity"",
+  ""identity"":""PurpleMonkeyDishwasher""
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Identity", schema.Description);
+      Assert.AreEqual(1, schema.Identity.Count);
+      Assert.AreEqual("PurpleMonkeyDishwasher", schema.Identity[0]);
+    }
+
+    [Test]
+    public void IdentityMultiple()
+    {
+      string json = @"{
+  ""description"":""Identity"",
+  ""identity"":[""PurpleMonkeyDishwasher"",""Antelope""]
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Identity", schema.Description);
+      Assert.AreEqual(2, schema.Identity.Count);
+      Assert.AreEqual("PurpleMonkeyDishwasher", schema.Identity[0]);
+      Assert.AreEqual("Antelope", schema.Identity[1]);
+    }
+
+    [Test]
+    public void MinimumMaximum()
+    {
+      string json = @"{
+  ""description"":""MinimumMaximum"",
+  ""minimum"":1.1,
+  ""maximum"":1.2,
+  ""minItems"":1,
+  ""maxItems"":2,
+  ""minLength"":5,
+  ""maxLength"":50,
+  ""divisibleBy"":3,
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("MinimumMaximum", schema.Description);
+      Assert.AreEqual(1.1, schema.Minimum);
+      Assert.AreEqual(1.2, schema.Maximum);
+      Assert.AreEqual(1, schema.MinimumItems);
+      Assert.AreEqual(2, schema.MaximumItems);
+      Assert.AreEqual(5, schema.MinimumLength);
+      Assert.AreEqual(50, schema.MaximumLength);
+      Assert.AreEqual(3, schema.DivisibleBy);
+    }
+
+    [Test]
+    public void DisallowSingleType()
+    {
+      string json = @"{
+  ""description"":""DisallowSingleType"",
+  ""disallow"":""string""
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("DisallowSingleType", schema.Description);
+      Assert.AreEqual(JsonSchemaType.String, schema.Disallow);
+    }
+
+    [Test]
+    public void DisallowMultipleTypes()
+    {
+      string json = @"{
+  ""description"":""DisallowMultipleTypes"",
+  ""disallow"":[""string"",""number""]
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("DisallowMultipleTypes", schema.Description);
+      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Float, schema.Disallow);
+    }
+
+    [Test]
+    public void DefaultPrimitiveType()
+    {
+      string json = @"{
+  ""description"":""DefaultPrimitiveType"",
+  ""default"":1.1
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("DefaultPrimitiveType", schema.Description);
+      Assert.AreEqual(1.1, (double)schema.Default);
+    }
+
+    [Test]
+    public void DefaultComplexType()
+    {
+      string json = @"{
+  ""description"":""DefaultComplexType"",
+  ""default"":{""pie"":true}
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("DefaultComplexType", schema.Description);
+      Assert.IsTrue(JToken.DeepEquals(JObject.Parse(@"{""pie"":true}"), schema.Default));
+    }
+
+    [Test]
+    public void Options()
+    {
+      string json = @"{
+  ""description"":""NZ Island"",
+  ""type"":""string"",
+  ""options"":
+  [
+    {""value"":""NI"",""label"":""North Island""},
+    {""value"":""SI"",""label"":""South Island""}
+  ]
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("NZ Island", schema.Description);
+      Assert.AreEqual(JsonSchemaType.String, schema.Type);
+
+      Assert.AreEqual(2, schema.Options.Count);
+      Assert.AreEqual("North Island", schema.Options[new JValue("NI")]);
+      Assert.AreEqual("South Island", schema.Options[new JValue("SI")]);
+    }
+
+    [Test]
+    public void Enum()
+    {
+      string json = @"{
+  ""description"":""Type"",
+  ""type"":[""string"",""array""],
+  ""enum"":[""string"",""object"",""array"",""boolean"",""number"",""integer"",""null"",""any""]
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("Type", schema.Description);
+      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Array, schema.Type);
+
+      Assert.AreEqual(8, schema.Enum.Count);
+      Assert.AreEqual("string", (string)schema.Enum[0]);
+      Assert.AreEqual("any", (string)schema.Enum[schema.Enum.Count - 1]);
+    }
+
+    [Test]
+    public void CircularReference()
+    {
+      string json = @"{
+  ""id"":""CircularReferenceArray"",
+  ""description"":""CircularReference"",
+  ""type"":[""array""],
+  ""items"":{""$ref"":""CircularReferenceArray""}
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.AreEqual("CircularReference", schema.Description);
+      Assert.AreEqual("CircularReferenceArray", schema.Id);
+      Assert.AreEqual(JsonSchemaType.Array, schema.Type);
+
+      Assert.AreEqual(schema, schema.Items[0]);
+    }
+
+    [Test]
+    public void UnresolvedReference()
+    {
+      ExceptionAssert.Throws<Exception>(@"Could not resolve schema reference for Id 'MyUnresolvedReference'.",
+      () =>
+      {
+        string json = @"{
+  ""id"":""CircularReferenceArray"",
+  ""description"":""CircularReference"",
+  ""type"":[""array""],
+  ""items"":{""$ref"":""MyUnresolvedReference""}
+}";
+
+        JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+        JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+      });
+    }
+
+    [Test]
+    public void PatternProperties()
+    {
+      string json = @"{
+  ""patternProperties"": {
+    ""[abc]"": { ""id"":""Blah"" }
+  }
+}";
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(new JsonSchemaResolver());
+      JsonSchema schema = builder.Parse(new JsonTextReader(new StringReader(json)));
+
+      Assert.IsNotNull(schema.PatternProperties);
+      Assert.AreEqual(1, schema.PatternProperties.Count);
+      Assert.AreEqual("Blah", schema.PatternProperties["[abc]"].Id);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs
@@ -1,755 +1,755 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Globalization;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-using Newtonsoft.Json.Utilities;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Schema;
-using System.IO;
-using Newtonsoft.Json.Linq;
-using System.Text;
-using Extensions=Newtonsoft.Json.Schema.Extensions;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Schema
-{
-  [TestFixture]
-  public class JsonSchemaGeneratorTests : TestFixtureBase
-  {
-    [Test]
-    public void Generate_GenericDictionary()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      JsonSchema schema = generator.Generate(typeof (Dictionary<string, List<string>>));
-
-      string json = schema.ToString();
-
-      Assert.AreEqual(@"{
-  ""type"": ""object"",
-  ""additionalProperties"": {
-    ""type"": [
-      ""array"",
-      ""null""
-    ],
-    ""items"": {
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    }
-  }
-}", json);
-
-      Dictionary<string, List<string>> value = new Dictionary<string, List<string>>
-                                                 {
-                                                   {"HasValue", new List<string>() { "first", "second", null }},
-                                                   {"NoValue", null}
-                                                 };
-
-      string valueJson = JsonConvert.SerializeObject(value, Formatting.Indented);
-      JObject o = JObject.Parse(valueJson);
-
-      Assert.IsTrue(o.IsValid(schema));
-    }
-
-#if !PocketPC && !NETFX_CORE
-    [Test]
-    public void Generate_DefaultValueAttributeTestClass()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      JsonSchema schema = generator.Generate(typeof(DefaultValueAttributeTestClass));
-
-      string json = schema.ToString();
-
-      Assert.AreEqual(@"{
-  ""description"": ""DefaultValueAttributeTestClass description!"",
-  ""type"": ""object"",
-  ""additionalProperties"": false,
-  ""properties"": {
-    ""TestField1"": {
-      ""required"": true,
-      ""type"": ""integer"",
-      ""default"": 21
-    },
-    ""TestProperty1"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ],
-      ""default"": ""TestProperty1Value""
-    }
-  }
-}", json);
-    }
-#endif
-
-    [Test]
-    public void Generate_Person()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      JsonSchema schema = generator.Generate(typeof(Person));
-
-      string json = schema.ToString();
-
-      Assert.AreEqual(@"{
-  ""id"": ""Person"",
-  ""title"": ""Title!"",
-  ""description"": ""JsonObjectAttribute description!"",
-  ""type"": ""object"",
-  ""properties"": {
-    ""Name"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""BirthDate"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""LastModified"": {
-      ""required"": true,
-      ""type"": ""string""
-    }
-  }
-}", json);
-    }
-
-    [Test]
-    public void Generate_UserNullable()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      JsonSchema schema = generator.Generate(typeof(UserNullable));
-
-      string json = schema.ToString();
-
-      Assert.AreEqual(@"{
-  ""type"": ""object"",
-  ""properties"": {
-    ""Id"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""FName"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""LName"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""RoleId"": {
-      ""required"": true,
-      ""type"": ""integer""
-    },
-    ""NullableRoleId"": {
-      ""required"": true,
-      ""type"": [
-        ""integer"",
-        ""null""
-      ]
-    },
-    ""NullRoleId"": {
-      ""required"": true,
-      ""type"": [
-        ""integer"",
-        ""null""
-      ]
-    },
-    ""Active"": {
-      ""required"": true,
-      ""type"": [
-        ""boolean"",
-        ""null""
-      ]
-    }
-  }
-}", json);
-    }
-
-    [Test]
-    public void Generate_RequiredMembersClass()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      JsonSchema schema = generator.Generate(typeof(RequiredMembersClass));
-
-      Assert.AreEqual(JsonSchemaType.String, schema.Properties["FirstName"].Type);
-      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Null, schema.Properties["MiddleName"].Type);
-      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Null, schema.Properties["LastName"].Type);
-      Assert.AreEqual(JsonSchemaType.String, schema.Properties["BirthDate"].Type);
-    }
-
-    [Test]
-    public void Generate_Store()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      JsonSchema schema = generator.Generate(typeof(Store));
-
-      Assert.AreEqual(11, schema.Properties.Count);
-
-      JsonSchema productArraySchema = schema.Properties["product"];
-      JsonSchema productSchema = productArraySchema.Items[0];
-
-      Assert.AreEqual(4, productSchema.Properties.Count);
-    }
-
-    [Test]
-    public void MissingSchemaIdHandlingTest()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-
-      JsonSchema schema = generator.Generate(typeof(Store));
-      Assert.AreEqual(null, schema.Id);
-
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-      schema = generator.Generate(typeof (Store));
-      Assert.AreEqual(typeof(Store).FullName, schema.Id);
-
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseAssemblyQualifiedName;
-      schema = generator.Generate(typeof(Store));
-      Assert.AreEqual(typeof(Store).AssemblyQualifiedName, schema.Id);
-    }
-
-    [Test]
-    public void Generate_NumberFormatInfo()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      JsonSchema schema = generator.Generate(typeof(NumberFormatInfo));
-
-      string json = schema.ToString();
-
-      Console.WriteLine(json);
-
-      //      Assert.AreEqual(@"{
-      //  ""type"": ""object"",
-      //  ""additionalProperties"": {
-      //    ""type"": ""array"",
-      //    ""items"": {
-      //      ""type"": ""string""
-      //    }
-      //  }
-      //}", json);
-    }
-
-    [Test]
-    public void CircularReferenceError()
-    {
-      ExceptionAssert.Throws<Exception>(@"Unresolved circular reference for type 'Newtonsoft.Json.Tests.TestObjects.CircularReferenceClass'. Explicitly define an Id for the type using a JsonObject/JsonArray attribute or automatically generate a type Id using the UndefinedSchemaIdHandling property.",
-      () =>
-      {
-        JsonSchemaGenerator generator = new JsonSchemaGenerator();
-        generator.Generate(typeof(CircularReferenceClass));
-      });
-    }
-
-    [Test]
-    public void CircularReferenceWithTypeNameId()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-
-      JsonSchema schema = generator.Generate(typeof(CircularReferenceClass), true);
-
-      Assert.AreEqual(JsonSchemaType.String, schema.Properties["Name"].Type);
-      Assert.AreEqual(typeof(CircularReferenceClass).FullName, schema.Id);
-      Assert.AreEqual(JsonSchemaType.Object | JsonSchemaType.Null, schema.Properties["Child"].Type);
-      Assert.AreEqual(schema, schema.Properties["Child"]);
-    }
-
-    [Test]
-    public void CircularReferenceWithExplicitId()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-
-      JsonSchema schema = generator.Generate(typeof(CircularReferenceWithIdClass));
-
-      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Null, schema.Properties["Name"].Type);
-      Assert.AreEqual("MyExplicitId", schema.Id);
-      Assert.AreEqual(JsonSchemaType.Object | JsonSchemaType.Null, schema.Properties["Child"].Type);
-      Assert.AreEqual(schema, schema.Properties["Child"]);
-    }
-
-    [Test]
-    public void GenerateSchemaForType()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-
-      JsonSchema schema = generator.Generate(typeof(Type));
-
-      Assert.AreEqual(JsonSchemaType.String, schema.Type);
-
-      string json = JsonConvert.SerializeObject(typeof(Version), Formatting.Indented);
-
-      JValue v = new JValue(json);
-      Assert.IsTrue(v.IsValid(schema));
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    [Test]
-    public void GenerateSchemaForISerializable()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-
-      JsonSchema schema = generator.Generate(typeof(Exception));
-
-      Assert.AreEqual(JsonSchemaType.Object, schema.Type);
-      Assert.AreEqual(true, schema.AllowAdditionalProperties);
-      Assert.AreEqual(null, schema.Properties);
-    }
-#endif
-
-#if !NETFX_CORE
-    [Test]
-    public void GenerateSchemaForDBNull()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-
-      JsonSchema schema = generator.Generate(typeof(DBNull));
-
-      Assert.AreEqual(JsonSchemaType.Null, schema.Type);
-    }
-
-    public class CustomDirectoryInfoMapper : DefaultContractResolver
-    {
-      public CustomDirectoryInfoMapper()
-        : base(true)
-      {
-      }
-
-      protected override JsonContract CreateContract(Type objectType)
-      {
-        if (objectType == typeof(DirectoryInfo))
-          return base.CreateObjectContract(objectType);
-
-        return base.CreateContract(objectType);
-      }
-
-      protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
-      {
-        IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
-
-        JsonPropertyCollection c = new JsonPropertyCollection(type);
-        CollectionUtils.AddRange(c, (IEnumerable)properties.Where(m => m.PropertyName != "Root"));
-
-        return c;
-      }
-    }
-
-    [Test]
-    public void GenerateSchemaForDirectoryInfo()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-      generator.ContractResolver = new CustomDirectoryInfoMapper();
-
-      JsonSchema schema = generator.Generate(typeof(DirectoryInfo), true);
-
-      string json = schema.ToString();
-      
-      Assert.AreEqual(@"{
-  ""id"": ""System.IO.DirectoryInfo"",
-  ""required"": true,
-  ""type"": [
-    ""object"",
-    ""null""
-  ],
-  ""additionalProperties"": false,
-  ""properties"": {
-    ""Name"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""Parent"": {
-      ""$ref"": ""System.IO.DirectoryInfo""
-    },
-    ""Exists"": {
-      ""required"": true,
-      ""type"": ""boolean""
-    },
-    ""FullName"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""Extension"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""CreationTime"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""CreationTimeUtc"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""LastAccessTime"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""LastAccessTimeUtc"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""LastWriteTime"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""LastWriteTimeUtc"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""Attributes"": {
-      ""required"": true,
-      ""type"": ""integer""
-    }
-  }
-}", json);
-
-      DirectoryInfo temp = new DirectoryInfo(@"c:\temp");
-
-      JTokenWriter jsonWriter = new JTokenWriter();
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Converters.Add(new IsoDateTimeConverter());
-      serializer.ContractResolver = new CustomDirectoryInfoMapper();
-      serializer.Serialize(jsonWriter, temp);
-
-      List<string> errors = new List<string>();
-      jsonWriter.Token.Validate(schema, (sender, args) => errors.Add(args.Message));
-
-      Assert.AreEqual(0, errors.Count);
-    }
-#endif
-
-    [Test]
-    public void GenerateSchemaCamelCase()
-    {
-      JsonSchemaGenerator generator = new JsonSchemaGenerator();
-      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-      generator.ContractResolver = new CamelCasePropertyNamesContractResolver();
-
-      JsonSchema schema = generator.Generate(typeof (Version), true);
-
-      string json = schema.ToString();
-
-      Assert.AreEqual(@"{
-  ""id"": ""System.Version"",
-  ""type"": [
-    ""object"",
-    ""null""
-  ],
-  ""additionalProperties"": false,
-  ""properties"": {
-    ""major"": {
-      ""required"": true,
-      ""type"": ""integer""
-    },
-    ""minor"": {
-      ""required"": true,
-      ""type"": ""integer""
-    },
-    ""build"": {
-      ""required"": true,
-      ""type"": ""integer""
-    },
-    ""revision"": {
-      ""required"": true,
-      ""type"": ""integer""
-    },
-    ""majorRevision"": {
-      ""required"": true,
-      ""type"": ""integer""
-    },
-    ""minorRevision"": {
-      ""required"": true,
-      ""type"": ""integer""
-    }
-  }
-}", json);
-    }
-
-    public enum SortTypeFlag
-    {
-      No = 0,
-      Asc = 1,
-      Desc = -1
-    }
-
-    public class X
-    {
-      public SortTypeFlag x;
-    }
-
-    [Test]
-    public void GenerateSchemaWithNegativeEnum()
-    {
-      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
-      JsonSchema schema = jsonSchemaGenerator.Generate(typeof(X));
-
-      string json = schema.ToString();
-
-      Assert.AreEqual(@"{
-  ""type"": ""object"",
-  ""properties"": {
-    ""x"": {
-      ""required"": true,
-      ""type"": ""integer"",
-      ""enum"": [
-        0,
-        1,
-        -1
-      ],
-      ""options"": [
-        {
-          ""value"": 0,
-          ""label"": ""No""
-        },
-        {
-          ""value"": 1,
-          ""label"": ""Asc""
-        },
-        {
-          ""value"": -1,
-          ""label"": ""Desc""
-        }
-      ]
-    }
-  }
-}", json);
-    }
-
-    [Test]
-    public void CircularCollectionReferences()
-    {
-      Type type = typeof (Workspace);
-      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
-
-      jsonSchemaGenerator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-      JsonSchema jsonSchema = jsonSchemaGenerator.Generate(type);
-
-      // should succeed
-      Assert.IsNotNull(jsonSchema);
-    }
-
-    [Test]
-    public void CircularReferenceWithMixedRequires()
-    {
-      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
-
-      jsonSchemaGenerator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-      JsonSchema jsonSchema = jsonSchemaGenerator.Generate(typeof(CircularReferenceClass));
-      string json = jsonSchema.ToString();
-
-      Assert.AreEqual(@"{
-  ""id"": ""Newtonsoft.Json.Tests.TestObjects.CircularReferenceClass"",
-  ""type"": [
-    ""object"",
-    ""null""
-  ],
-  ""properties"": {
-    ""Name"": {
-      ""required"": true,
-      ""type"": ""string""
-    },
-    ""Child"": {
-      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.CircularReferenceClass""
-    }
-  }
-}", json);
-    }
-
-    [Test]
-    public void JsonPropertyWithHandlingValues()
-    {
-      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
-
-      jsonSchemaGenerator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
-      JsonSchema jsonSchema = jsonSchemaGenerator.Generate(typeof(JsonPropertyWithHandlingValues));
-      string json = jsonSchema.ToString();
-
-      Assert.AreEqual(@"{
-  ""id"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues"",
-  ""required"": true,
-  ""type"": [
-    ""object"",
-    ""null""
-  ],
-  ""properties"": {
-    ""DefaultValueHandlingIgnoreProperty"": {
-      ""type"": [
-        ""string"",
-        ""null""
-      ],
-      ""default"": ""Default!""
-    },
-    ""DefaultValueHandlingIncludeProperty"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ],
-      ""default"": ""Default!""
-    },
-    ""DefaultValueHandlingPopulateProperty"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ],
-      ""default"": ""Default!""
-    },
-    ""DefaultValueHandlingIgnoreAndPopulateProperty"": {
-      ""type"": [
-        ""string"",
-        ""null""
-      ],
-      ""default"": ""Default!""
-    },
-    ""NullValueHandlingIgnoreProperty"": {
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""NullValueHandlingIncludeProperty"": {
-      ""required"": true,
-      ""type"": [
-        ""string"",
-        ""null""
-      ]
-    },
-    ""ReferenceLoopHandlingErrorProperty"": {
-      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues""
-    },
-    ""ReferenceLoopHandlingIgnoreProperty"": {
-      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues""
-    },
-    ""ReferenceLoopHandlingSerializeProperty"": {
-      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues""
-    }
-  }
-}", json);
-    }
-  }
-
-  public class DMDSLBase
-  {
-    public String Comment;
-  }
-
-  public class Workspace : DMDSLBase
-  {
-    public ControlFlowItemCollection Jobs = new ControlFlowItemCollection();
-  }
-
-  public class ControlFlowItemBase : DMDSLBase
-  {
-    public String Name;
-  }
-
-  public class ControlFlowItem : ControlFlowItemBase//A Job
-  {
-    public TaskCollection Tasks = new TaskCollection();
-    public ContainerCollection Containers = new ContainerCollection();
-  }
-
-  public class ControlFlowItemCollection : List<ControlFlowItem>
-  {
-  }
-
-  public class Task : ControlFlowItemBase
-  {
-    public DataFlowTaskCollection DataFlowTasks = new DataFlowTaskCollection();
-    public BulkInsertTaskCollection BulkInsertTask = new BulkInsertTaskCollection();
-  }
-
-  public class TaskCollection : List<Task>
-  {
-  }
-
-  public class Container : ControlFlowItemBase
-  {
-    public ControlFlowItemCollection ContainerJobs = new ControlFlowItemCollection();
-  }
-
-  public class ContainerCollection : List<Container>
-  {
-  }
-
-  public class DataFlowTask_DSL : ControlFlowItemBase
-  {
-  }
-
-  public class DataFlowTaskCollection : List<DataFlowTask_DSL>
-  {
-  }
-
-  public class SequenceContainer_DSL : Container
-  {
-  }
-
-  public class BulkInsertTaskCollection : List<BulkInsertTask_DSL>
-  {
-  }
-
-  public class BulkInsertTask_DSL
-  {
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Globalization;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+using Newtonsoft.Json.Utilities;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Schema;
+using System.IO;
+using Newtonsoft.Json.Linq;
+using System.Text;
+using Extensions=Newtonsoft.Json.Schema.Extensions;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Schema
+{
+  [TestFixture]
+  public class JsonSchemaGeneratorTests : TestFixtureBase
+  {
+    [Test]
+    public void Generate_GenericDictionary()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      JsonSchema schema = generator.Generate(typeof (Dictionary<string, List<string>>));
+
+      string json = schema.ToString();
+
+      Assert.AreEqual(@"{
+  ""type"": ""object"",
+  ""additionalProperties"": {
+    ""type"": [
+      ""array"",
+      ""null""
+    ],
+    ""items"": {
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    }
+  }
+}", json);
+
+      Dictionary<string, List<string>> value = new Dictionary<string, List<string>>
+                                                 {
+                                                   {"HasValue", new List<string>() { "first", "second", null }},
+                                                   {"NoValue", null}
+                                                 };
+
+      string valueJson = JsonConvert.SerializeObject(value, Formatting.Indented);
+      JObject o = JObject.Parse(valueJson);
+
+      Assert.IsTrue(o.IsValid(schema));
+    }
+
+#if !PocketPC && !NETFX_CORE
+    [Test]
+    public void Generate_DefaultValueAttributeTestClass()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      JsonSchema schema = generator.Generate(typeof(DefaultValueAttributeTestClass));
+
+      string json = schema.ToString();
+
+      Assert.AreEqual(@"{
+  ""description"": ""DefaultValueAttributeTestClass description!"",
+  ""type"": ""object"",
+  ""additionalProperties"": false,
+  ""properties"": {
+    ""TestField1"": {
+      ""required"": true,
+      ""type"": ""integer"",
+      ""default"": 21
+    },
+    ""TestProperty1"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ],
+      ""default"": ""TestProperty1Value""
+    }
+  }
+}", json);
+    }
+#endif
+
+    [Test]
+    public void Generate_Person()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      JsonSchema schema = generator.Generate(typeof(Person));
+
+      string json = schema.ToString();
+
+      Assert.AreEqual(@"{
+  ""id"": ""Person"",
+  ""title"": ""Title!"",
+  ""description"": ""JsonObjectAttribute description!"",
+  ""type"": ""object"",
+  ""properties"": {
+    ""Name"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""BirthDate"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""LastModified"": {
+      ""required"": true,
+      ""type"": ""string""
+    }
+  }
+}", json);
+    }
+
+    [Test]
+    public void Generate_UserNullable()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      JsonSchema schema = generator.Generate(typeof(UserNullable));
+
+      string json = schema.ToString();
+
+      Assert.AreEqual(@"{
+  ""type"": ""object"",
+  ""properties"": {
+    ""Id"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""FName"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""LName"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""RoleId"": {
+      ""required"": true,
+      ""type"": ""integer""
+    },
+    ""NullableRoleId"": {
+      ""required"": true,
+      ""type"": [
+        ""integer"",
+        ""null""
+      ]
+    },
+    ""NullRoleId"": {
+      ""required"": true,
+      ""type"": [
+        ""integer"",
+        ""null""
+      ]
+    },
+    ""Active"": {
+      ""required"": true,
+      ""type"": [
+        ""boolean"",
+        ""null""
+      ]
+    }
+  }
+}", json);
+    }
+
+    [Test]
+    public void Generate_RequiredMembersClass()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      JsonSchema schema = generator.Generate(typeof(RequiredMembersClass));
+
+      Assert.AreEqual(JsonSchemaType.String, schema.Properties["FirstName"].Type);
+      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Null, schema.Properties["MiddleName"].Type);
+      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Null, schema.Properties["LastName"].Type);
+      Assert.AreEqual(JsonSchemaType.String, schema.Properties["BirthDate"].Type);
+    }
+
+    [Test]
+    public void Generate_Store()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      JsonSchema schema = generator.Generate(typeof(Store));
+
+      Assert.AreEqual(11, schema.Properties.Count);
+
+      JsonSchema productArraySchema = schema.Properties["product"];
+      JsonSchema productSchema = productArraySchema.Items[0];
+
+      Assert.AreEqual(4, productSchema.Properties.Count);
+    }
+
+    [Test]
+    public void MissingSchemaIdHandlingTest()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+
+      JsonSchema schema = generator.Generate(typeof(Store));
+      Assert.AreEqual(null, schema.Id);
+
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+      schema = generator.Generate(typeof (Store));
+      Assert.AreEqual(typeof(Store).FullName, schema.Id);
+
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseAssemblyQualifiedName;
+      schema = generator.Generate(typeof(Store));
+      Assert.AreEqual(typeof(Store).AssemblyQualifiedName, schema.Id);
+    }
+
+    [Test]
+    public void Generate_NumberFormatInfo()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      JsonSchema schema = generator.Generate(typeof(NumberFormatInfo));
+
+      string json = schema.ToString();
+
+      Console.WriteLine(json);
+
+      //      Assert.AreEqual(@"{
+      //  ""type"": ""object"",
+      //  ""additionalProperties"": {
+      //    ""type"": ""array"",
+      //    ""items"": {
+      //      ""type"": ""string""
+      //    }
+      //  }
+      //}", json);
+    }
+
+    [Test]
+    public void CircularReferenceError()
+    {
+      ExceptionAssert.Throws<Exception>(@"Unresolved circular reference for type 'Newtonsoft.Json.Tests.TestObjects.CircularReferenceClass'. Explicitly define an Id for the type using a JsonObject/JsonArray attribute or automatically generate a type Id using the UndefinedSchemaIdHandling property.",
+      () =>
+      {
+        JsonSchemaGenerator generator = new JsonSchemaGenerator();
+        generator.Generate(typeof(CircularReferenceClass));
+      });
+    }
+
+    [Test]
+    public void CircularReferenceWithTypeNameId()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+
+      JsonSchema schema = generator.Generate(typeof(CircularReferenceClass), true);
+
+      Assert.AreEqual(JsonSchemaType.String, schema.Properties["Name"].Type);
+      Assert.AreEqual(typeof(CircularReferenceClass).FullName, schema.Id);
+      Assert.AreEqual(JsonSchemaType.Object | JsonSchemaType.Null, schema.Properties["Child"].Type);
+      Assert.AreEqual(schema, schema.Properties["Child"]);
+    }
+
+    [Test]
+    public void CircularReferenceWithExplicitId()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+
+      JsonSchema schema = generator.Generate(typeof(CircularReferenceWithIdClass));
+
+      Assert.AreEqual(JsonSchemaType.String | JsonSchemaType.Null, schema.Properties["Name"].Type);
+      Assert.AreEqual("MyExplicitId", schema.Id);
+      Assert.AreEqual(JsonSchemaType.Object | JsonSchemaType.Null, schema.Properties["Child"].Type);
+      Assert.AreEqual(schema, schema.Properties["Child"]);
+    }
+
+    [Test]
+    public void GenerateSchemaForType()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+
+      JsonSchema schema = generator.Generate(typeof(Type));
+
+      Assert.AreEqual(JsonSchemaType.String, schema.Type);
+
+      string json = JsonConvert.SerializeObject(typeof(Version), Formatting.Indented);
+
+      JValue v = new JValue(json);
+      Assert.IsTrue(v.IsValid(schema));
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    [Test]
+    public void GenerateSchemaForISerializable()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+
+      JsonSchema schema = generator.Generate(typeof(Exception));
+
+      Assert.AreEqual(JsonSchemaType.Object, schema.Type);
+      Assert.AreEqual(true, schema.AllowAdditionalProperties);
+      Assert.AreEqual(null, schema.Properties);
+    }
+#endif
+
+#if !NETFX_CORE
+    [Test]
+    public void GenerateSchemaForDBNull()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+
+      JsonSchema schema = generator.Generate(typeof(DBNull));
+
+      Assert.AreEqual(JsonSchemaType.Null, schema.Type);
+    }
+
+    public class CustomDirectoryInfoMapper : DefaultContractResolver
+    {
+      public CustomDirectoryInfoMapper()
+        : base(true)
+      {
+      }
+
+      protected override JsonContract CreateContract(Type objectType)
+      {
+        if (objectType == typeof(DirectoryInfo))
+          return base.CreateObjectContract(objectType);
+
+        return base.CreateContract(objectType);
+      }
+
+      protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
+      {
+        IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
+
+        JsonPropertyCollection c = new JsonPropertyCollection(type);
+        CollectionUtils.AddRange(c, (IEnumerable)properties.Where(m => m.PropertyName != "Root"));
+
+        return c;
+      }
+    }
+
+    [Test]
+    public void GenerateSchemaForDirectoryInfo()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+      generator.ContractResolver = new CustomDirectoryInfoMapper();
+
+      JsonSchema schema = generator.Generate(typeof(DirectoryInfo), true);
+
+      string json = schema.ToString();
+      
+      Assert.AreEqual(@"{
+  ""id"": ""System.IO.DirectoryInfo"",
+  ""required"": true,
+  ""type"": [
+    ""object"",
+    ""null""
+  ],
+  ""additionalProperties"": false,
+  ""properties"": {
+    ""Name"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""Parent"": {
+      ""$ref"": ""System.IO.DirectoryInfo""
+    },
+    ""Exists"": {
+      ""required"": true,
+      ""type"": ""boolean""
+    },
+    ""FullName"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""Extension"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""CreationTime"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""CreationTimeUtc"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""LastAccessTime"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""LastAccessTimeUtc"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""LastWriteTime"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""LastWriteTimeUtc"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""Attributes"": {
+      ""required"": true,
+      ""type"": ""integer""
+    }
+  }
+}", json);
+
+      DirectoryInfo temp = new DirectoryInfo(@"c:\temp");
+
+      JTokenWriter jsonWriter = new JTokenWriter();
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Converters.Add(new IsoDateTimeConverter());
+      serializer.ContractResolver = new CustomDirectoryInfoMapper();
+      serializer.Serialize(jsonWriter, temp);
+
+      List<string> errors = new List<string>();
+      jsonWriter.Token.Validate(schema, (sender, args) => errors.Add(args.Message));
+
+      Assert.AreEqual(0, errors.Count);
+    }
+#endif
+
+    [Test]
+    public void GenerateSchemaCamelCase()
+    {
+      JsonSchemaGenerator generator = new JsonSchemaGenerator();
+      generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+      generator.ContractResolver = new CamelCasePropertyNamesContractResolver();
+
+      JsonSchema schema = generator.Generate(typeof (Version), true);
+
+      string json = schema.ToString();
+
+      Assert.AreEqual(@"{
+  ""id"": ""System.Version"",
+  ""type"": [
+    ""object"",
+    ""null""
+  ],
+  ""additionalProperties"": false,
+  ""properties"": {
+    ""major"": {
+      ""required"": true,
+      ""type"": ""integer""
+    },
+    ""minor"": {
+      ""required"": true,
+      ""type"": ""integer""
+    },
+    ""build"": {
+      ""required"": true,
+      ""type"": ""integer""
+    },
+    ""revision"": {
+      ""required"": true,
+      ""type"": ""integer""
+    },
+    ""majorRevision"": {
+      ""required"": true,
+      ""type"": ""integer""
+    },
+    ""minorRevision"": {
+      ""required"": true,
+      ""type"": ""integer""
+    }
+  }
+}", json);
+    }
+
+    public enum SortTypeFlag
+    {
+      No = 0,
+      Asc = 1,
+      Desc = -1
+    }
+
+    public class X
+    {
+      public SortTypeFlag x;
+    }
+
+    [Test]
+    public void GenerateSchemaWithNegativeEnum()
+    {
+      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
+      JsonSchema schema = jsonSchemaGenerator.Generate(typeof(X));
+
+      string json = schema.ToString();
+
+      Assert.AreEqual(@"{
+  ""type"": ""object"",
+  ""properties"": {
+    ""x"": {
+      ""required"": true,
+      ""type"": ""integer"",
+      ""enum"": [
+        0,
+        1,
+        -1
+      ],
+      ""options"": [
+        {
+          ""value"": 0,
+          ""label"": ""No""
+        },
+        {
+          ""value"": 1,
+          ""label"": ""Asc""
+        },
+        {
+          ""value"": -1,
+          ""label"": ""Desc""
+        }
+      ]
+    }
+  }
+}", json);
+    }
+
+    [Test]
+    public void CircularCollectionReferences()
+    {
+      Type type = typeof (Workspace);
+      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
+
+      jsonSchemaGenerator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+      JsonSchema jsonSchema = jsonSchemaGenerator.Generate(type);
+
+      // should succeed
+      Assert.IsNotNull(jsonSchema);
+    }
+
+    [Test]
+    public void CircularReferenceWithMixedRequires()
+    {
+      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
+
+      jsonSchemaGenerator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+      JsonSchema jsonSchema = jsonSchemaGenerator.Generate(typeof(CircularReferenceClass));
+      string json = jsonSchema.ToString();
+
+      Assert.AreEqual(@"{
+  ""id"": ""Newtonsoft.Json.Tests.TestObjects.CircularReferenceClass"",
+  ""type"": [
+    ""object"",
+    ""null""
+  ],
+  ""properties"": {
+    ""Name"": {
+      ""required"": true,
+      ""type"": ""string""
+    },
+    ""Child"": {
+      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.CircularReferenceClass""
+    }
+  }
+}", json);
+    }
+
+    [Test]
+    public void JsonPropertyWithHandlingValues()
+    {
+      JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
+
+      jsonSchemaGenerator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
+      JsonSchema jsonSchema = jsonSchemaGenerator.Generate(typeof(JsonPropertyWithHandlingValues));
+      string json = jsonSchema.ToString();
+
+      Assert.AreEqual(@"{
+  ""id"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues"",
+  ""required"": true,
+  ""type"": [
+    ""object"",
+    ""null""
+  ],
+  ""properties"": {
+    ""DefaultValueHandlingIgnoreProperty"": {
+      ""type"": [
+        ""string"",
+        ""null""
+      ],
+      ""default"": ""Default!""
+    },
+    ""DefaultValueHandlingIncludeProperty"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ],
+      ""default"": ""Default!""
+    },
+    ""DefaultValueHandlingPopulateProperty"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ],
+      ""default"": ""Default!""
+    },
+    ""DefaultValueHandlingIgnoreAndPopulateProperty"": {
+      ""type"": [
+        ""string"",
+        ""null""
+      ],
+      ""default"": ""Default!""
+    },
+    ""NullValueHandlingIgnoreProperty"": {
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""NullValueHandlingIncludeProperty"": {
+      ""required"": true,
+      ""type"": [
+        ""string"",
+        ""null""
+      ]
+    },
+    ""ReferenceLoopHandlingErrorProperty"": {
+      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues""
+    },
+    ""ReferenceLoopHandlingIgnoreProperty"": {
+      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues""
+    },
+    ""ReferenceLoopHandlingSerializeProperty"": {
+      ""$ref"": ""Newtonsoft.Json.Tests.TestObjects.JsonPropertyWithHandlingValues""
+    }
+  }
+}", json);
+    }
+  }
+
+  public class DMDSLBase
+  {
+    public String Comment;
+  }
+
+  public class Workspace : DMDSLBase
+  {
+    public ControlFlowItemCollection Jobs = new ControlFlowItemCollection();
+  }
+
+  public class ControlFlowItemBase : DMDSLBase
+  {
+    public String Name;
+  }
+
+  public class ControlFlowItem : ControlFlowItemBase//A Job
+  {
+    public TaskCollection Tasks = new TaskCollection();
+    public ContainerCollection Containers = new ContainerCollection();
+  }
+
+  public class ControlFlowItemCollection : List<ControlFlowItem>
+  {
+  }
+
+  public class Task : ControlFlowItemBase
+  {
+    public DataFlowTaskCollection DataFlowTasks = new DataFlowTaskCollection();
+    public BulkInsertTaskCollection BulkInsertTask = new BulkInsertTaskCollection();
+  }
+
+  public class TaskCollection : List<Task>
+  {
+  }
+
+  public class Container : ControlFlowItemBase
+  {
+    public ControlFlowItemCollection ContainerJobs = new ControlFlowItemCollection();
+  }
+
+  public class ContainerCollection : List<Container>
+  {
+  }
+
+  public class DataFlowTask_DSL : ControlFlowItemBase
+  {
+  }
+
+  public class DataFlowTaskCollection : List<DataFlowTask_DSL>
+  {
+  }
+
+  public class SequenceContainer_DSL : Container
+  {
+  }
+
+  public class BulkInsertTaskCollection : List<BulkInsertTask_DSL>
+  {
+  }
+
+  public class BulkInsertTask_DSL
+  {
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaModelBuilderTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaModelBuilderTests.cs
@@ -1,168 +1,168 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using Newtonsoft.Json.Schema;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Schema
-{
-  [TestFixture]
-  public class JsonSchemaModelBuilderTests : TestFixtureBase
-  {
-    [Test]
-    public void ExtendedComplex()
-    {
-      string first = @"{
-  ""id"":""first"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""firstproperty"":{""type"":""string""},
-    ""secondproperty"":{""type"":""string"",""maxLength"":10},
-    ""thirdproperty"":{
-      ""type"":""object"",
-      ""properties"":
-      {
-        ""thirdproperty_firstproperty"":{""type"":""string"",""maxLength"":10,""minLength"":7}
-      }
-    }
-  },
-  ""additionalProperties"":{}
-}";
-
-      string second = @"{
-  ""id"":""second"",
-  ""type"":""object"",
-  ""extends"":{""$ref"":""first""},
-  ""properties"":
-  {
-    ""secondproperty"":{""type"":""any""},
-    ""thirdproperty"":{
-      ""extends"":{
-        ""properties"":
-        {
-          ""thirdproperty_firstproperty"":{""maxLength"":9,""minLength"":6,""pattern"":""hi2u""}
-        },
-        ""additionalProperties"":{""maxLength"":9,""minLength"":6,""enum"":[""one"",""two""]}
-      },
-      ""type"":""object"",
-      ""properties"":
-      {
-        ""thirdproperty_firstproperty"":{""pattern"":""hi""}
-      },
-      ""additionalProperties"":{""type"":""string"",""enum"":[""two"",""three""]}
-    },
-    ""fourthproperty"":{""type"":""string""}
-  },
-  ""additionalProperties"":false
-}";
-
-      JsonSchemaResolver resolver = new JsonSchemaResolver();
-      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
-      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
-
-      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
-
-      JsonSchemaModel model = modelBuilder.Build(secondSchema);
-
-      Assert.AreEqual(4, model.Properties.Count);
-
-      Assert.AreEqual(JsonSchemaType.String, model.Properties["firstproperty"].Type);
-
-      Assert.AreEqual(JsonSchemaType.String, model.Properties["secondproperty"].Type);
-      Assert.AreEqual(10, model.Properties["secondproperty"].MaximumLength);
-      Assert.AreEqual(null, model.Properties["secondproperty"].Enum);
-      Assert.AreEqual(null, model.Properties["secondproperty"].Patterns);
-
-      Assert.AreEqual(JsonSchemaType.Object, model.Properties["thirdproperty"].Type);
-      Assert.AreEqual(3, model.Properties["thirdproperty"].AdditionalProperties.Enum.Count);
-      Assert.AreEqual("two", (string)model.Properties["thirdproperty"].AdditionalProperties.Enum[0]);
-      Assert.AreEqual("three", (string)model.Properties["thirdproperty"].AdditionalProperties.Enum[1]);
-      Assert.AreEqual("one", (string)model.Properties["thirdproperty"].AdditionalProperties.Enum[2]);
-
-      Assert.AreEqual(JsonSchemaType.String, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Type);
-      Assert.AreEqual(9, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].MaximumLength);
-      Assert.AreEqual(7, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].MinimumLength);
-      Assert.AreEqual(2, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Patterns.Count);
-      Assert.AreEqual("hi", model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Patterns[0]);
-      Assert.AreEqual("hi2u", model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Patterns[1]);
-      Assert.AreEqual(null, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Properties);
-      Assert.AreEqual(null, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Items);
-      Assert.AreEqual(null, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].AdditionalProperties);
-    }
-
-    [Test]
-    public void CircularReference()
-    {
-      string json = @"{
-  ""id"":""CircularReferenceArray"",
-  ""description"":""CircularReference"",
-  ""type"":[""array""],
-  ""items"":{""$ref"":""CircularReferenceArray""}
-}";
-
-      JsonSchema schema = JsonSchema.Parse(json);
-
-      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
-
-      JsonSchemaModel model = modelBuilder.Build(schema);
-
-      Assert.AreEqual(JsonSchemaType.Array, model.Type);
-
-      Assert.AreEqual(model, model.Items[0]);
-    }
-
-    [Test]
-    public void Required()
-    {
-      string schemaJson = @"{
-  ""description"":""A person"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""name"":{""type"":""string""},
-    ""hobbies"":{""type"":""string"",required:true},
-    ""age"":{""type"":""integer"",required:true}
-  }
-}";
-
-      JsonSchema schema = JsonSchema.Parse(schemaJson);
-      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
-      JsonSchemaModel model = modelBuilder.Build(schema);
-
-      Assert.AreEqual(JsonSchemaType.Object, model.Type);
-      Assert.AreEqual(3, model.Properties.Count);
-      Assert.AreEqual(false, model.Properties["name"].Required);
-      Assert.AreEqual(true, model.Properties["hobbies"].Required);
-      Assert.AreEqual(true, model.Properties["age"].Required);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using Newtonsoft.Json.Schema;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Schema
+{
+  [TestFixture]
+  public class JsonSchemaModelBuilderTests : TestFixtureBase
+  {
+    [Test]
+    public void ExtendedComplex()
+    {
+      string first = @"{
+  ""id"":""first"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""firstproperty"":{""type"":""string""},
+    ""secondproperty"":{""type"":""string"",""maxLength"":10},
+    ""thirdproperty"":{
+      ""type"":""object"",
+      ""properties"":
+      {
+        ""thirdproperty_firstproperty"":{""type"":""string"",""maxLength"":10,""minLength"":7}
+      }
+    }
+  },
+  ""additionalProperties"":{}
+}";
+
+      string second = @"{
+  ""id"":""second"",
+  ""type"":""object"",
+  ""extends"":{""$ref"":""first""},
+  ""properties"":
+  {
+    ""secondproperty"":{""type"":""any""},
+    ""thirdproperty"":{
+      ""extends"":{
+        ""properties"":
+        {
+          ""thirdproperty_firstproperty"":{""maxLength"":9,""minLength"":6,""pattern"":""hi2u""}
+        },
+        ""additionalProperties"":{""maxLength"":9,""minLength"":6,""enum"":[""one"",""two""]}
+      },
+      ""type"":""object"",
+      ""properties"":
+      {
+        ""thirdproperty_firstproperty"":{""pattern"":""hi""}
+      },
+      ""additionalProperties"":{""type"":""string"",""enum"":[""two"",""three""]}
+    },
+    ""fourthproperty"":{""type"":""string""}
+  },
+  ""additionalProperties"":false
+}";
+
+      JsonSchemaResolver resolver = new JsonSchemaResolver();
+      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
+      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
+
+      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
+
+      JsonSchemaModel model = modelBuilder.Build(secondSchema);
+
+      Assert.AreEqual(4, model.Properties.Count);
+
+      Assert.AreEqual(JsonSchemaType.String, model.Properties["firstproperty"].Type);
+
+      Assert.AreEqual(JsonSchemaType.String, model.Properties["secondproperty"].Type);
+      Assert.AreEqual(10, model.Properties["secondproperty"].MaximumLength);
+      Assert.AreEqual(null, model.Properties["secondproperty"].Enum);
+      Assert.AreEqual(null, model.Properties["secondproperty"].Patterns);
+
+      Assert.AreEqual(JsonSchemaType.Object, model.Properties["thirdproperty"].Type);
+      Assert.AreEqual(3, model.Properties["thirdproperty"].AdditionalProperties.Enum.Count);
+      Assert.AreEqual("two", (string)model.Properties["thirdproperty"].AdditionalProperties.Enum[0]);
+      Assert.AreEqual("three", (string)model.Properties["thirdproperty"].AdditionalProperties.Enum[1]);
+      Assert.AreEqual("one", (string)model.Properties["thirdproperty"].AdditionalProperties.Enum[2]);
+
+      Assert.AreEqual(JsonSchemaType.String, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Type);
+      Assert.AreEqual(9, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].MaximumLength);
+      Assert.AreEqual(7, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].MinimumLength);
+      Assert.AreEqual(2, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Patterns.Count);
+      Assert.AreEqual("hi", model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Patterns[0]);
+      Assert.AreEqual("hi2u", model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Patterns[1]);
+      Assert.AreEqual(null, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Properties);
+      Assert.AreEqual(null, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].Items);
+      Assert.AreEqual(null, model.Properties["thirdproperty"].Properties["thirdproperty_firstproperty"].AdditionalProperties);
+    }
+
+    [Test]
+    public void CircularReference()
+    {
+      string json = @"{
+  ""id"":""CircularReferenceArray"",
+  ""description"":""CircularReference"",
+  ""type"":[""array""],
+  ""items"":{""$ref"":""CircularReferenceArray""}
+}";
+
+      JsonSchema schema = JsonSchema.Parse(json);
+
+      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
+
+      JsonSchemaModel model = modelBuilder.Build(schema);
+
+      Assert.AreEqual(JsonSchemaType.Array, model.Type);
+
+      Assert.AreEqual(model, model.Items[0]);
+    }
+
+    [Test]
+    public void Required()
+    {
+      string schemaJson = @"{
+  ""description"":""A person"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""name"":{""type"":""string""},
+    ""hobbies"":{""type"":""string"",required:true},
+    ""age"":{""type"":""integer"",required:true}
+  }
+}";
+
+      JsonSchema schema = JsonSchema.Parse(schemaJson);
+      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
+      JsonSchemaModel model = modelBuilder.Build(schema);
+
+      Assert.AreEqual(JsonSchemaType.Object, model.Type);
+      Assert.AreEqual(3, model.Properties.Count);
+      Assert.AreEqual(false, model.Properties["name"].Required);
+      Assert.AreEqual(true, model.Properties["hobbies"].Required);
+      Assert.AreEqual(true, model.Properties["age"].Required);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaNodeTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaNodeTests.cs
@@ -1,121 +1,121 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using Newtonsoft.Json.Schema;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Schema
-{
-  [TestFixture]
-  public class JsonSchemaNodeTests : TestFixtureBase
-  {
-    [Test]
-    public void AddSchema()
-    {
-      string first = @"{
-  ""id"":""first"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""firstproperty"":{""type"":""string"",""maxLength"":10},
-    ""secondproperty"":{
-      ""type"":""object"",
-      ""properties"":
-      {
-        ""secondproperty_firstproperty"":{""type"":""string"",""maxLength"":10,""minLength"":7}
-      }
-    }
-  },
-  ""additionalProperties"":{}
-}";
-
-      string second = @"{
-  ""id"":""second"",
-  ""type"":""object"",
-  ""extends"":{""$ref"":""first""},
-  ""properties"":
-  {
-    ""firstproperty"":{""type"":""string""},
-    ""secondproperty"":{
-      ""extends"":{
-        ""properties"":
-        {
-          ""secondproperty_firstproperty"":{""maxLength"":9,""minLength"":6}
-        }
-      },
-      ""type"":""object"",
-      ""properties"":
-      {
-        ""secondproperty_firstproperty"":{}
-      }
-    },
-    ""thirdproperty"":{""type"":""string""}
-  },
-  ""additionalProperties"":false
-}";
-
-      JsonSchemaResolver resolver = new JsonSchemaResolver();
-      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
-      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
-
-      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
-
-      JsonSchemaNode node = modelBuilder.AddSchema(null, secondSchema);
-
-      Assert.AreEqual(2, node.Schemas.Count);
-      Assert.AreEqual(2, node.Properties["firstproperty"].Schemas.Count);
-      Assert.AreEqual(3, node.Properties["secondproperty"].Schemas.Count);
-      Assert.AreEqual(3, node.Properties["secondproperty"].Properties["secondproperty_firstproperty"].Schemas.Count);
-    }
-
-    [Test]
-    public void CircularReference()
-    {
-      string json = @"{
-  ""id"":""CircularReferenceArray"",
-  ""description"":""CircularReference"",
-  ""type"":[""array""],
-  ""items"":{""$ref"":""CircularReferenceArray""}
-}";
-
-      JsonSchema schema = JsonSchema.Parse(json);
-
-      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
-
-      JsonSchemaNode node = modelBuilder.AddSchema(null, schema);
-
-      Assert.AreEqual(1, node.Schemas.Count);
-
-      Assert.AreEqual(node, node.Items[0]);
-    }
-
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using Newtonsoft.Json.Schema;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Schema
+{
+  [TestFixture]
+  public class JsonSchemaNodeTests : TestFixtureBase
+  {
+    [Test]
+    public void AddSchema()
+    {
+      string first = @"{
+  ""id"":""first"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""firstproperty"":{""type"":""string"",""maxLength"":10},
+    ""secondproperty"":{
+      ""type"":""object"",
+      ""properties"":
+      {
+        ""secondproperty_firstproperty"":{""type"":""string"",""maxLength"":10,""minLength"":7}
+      }
+    }
+  },
+  ""additionalProperties"":{}
+}";
+
+      string second = @"{
+  ""id"":""second"",
+  ""type"":""object"",
+  ""extends"":{""$ref"":""first""},
+  ""properties"":
+  {
+    ""firstproperty"":{""type"":""string""},
+    ""secondproperty"":{
+      ""extends"":{
+        ""properties"":
+        {
+          ""secondproperty_firstproperty"":{""maxLength"":9,""minLength"":6}
+        }
+      },
+      ""type"":""object"",
+      ""properties"":
+      {
+        ""secondproperty_firstproperty"":{}
+      }
+    },
+    ""thirdproperty"":{""type"":""string""}
+  },
+  ""additionalProperties"":false
+}";
+
+      JsonSchemaResolver resolver = new JsonSchemaResolver();
+      JsonSchema firstSchema = JsonSchema.Parse(first, resolver);
+      JsonSchema secondSchema = JsonSchema.Parse(second, resolver);
+
+      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
+
+      JsonSchemaNode node = modelBuilder.AddSchema(null, secondSchema);
+
+      Assert.AreEqual(2, node.Schemas.Count);
+      Assert.AreEqual(2, node.Properties["firstproperty"].Schemas.Count);
+      Assert.AreEqual(3, node.Properties["secondproperty"].Schemas.Count);
+      Assert.AreEqual(3, node.Properties["secondproperty"].Properties["secondproperty_firstproperty"].Schemas.Count);
+    }
+
+    [Test]
+    public void CircularReference()
+    {
+      string json = @"{
+  ""id"":""CircularReferenceArray"",
+  ""description"":""CircularReference"",
+  ""type"":[""array""],
+  ""items"":{""$ref"":""CircularReferenceArray""}
+}";
+
+      JsonSchema schema = JsonSchema.Parse(json);
+
+      JsonSchemaModelBuilder modelBuilder = new JsonSchemaModelBuilder();
+
+      JsonSchemaNode node = modelBuilder.AddSchema(null, schema);
+
+      Assert.AreEqual(1, node.Schemas.Count);
+
+      Assert.AreEqual(node, node.Items[0]);
+    }
+
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaTests.cs
@@ -1,431 +1,431 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-using System.IO;
-using Newtonsoft.Json.Schema;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Schema
-{
-  [TestFixture]
-  public class JsonSchemaTests : TestFixtureBase
-  {
-    [Test]
-    public void Extends()
-    {
-      string json;
-      JsonSchemaResolver resolver = new JsonSchemaResolver();
-
-      json = @"{
-  ""id"":""first"",
-  ""type"":""object"",
-  ""additionalProperties"":{}
-}";
-
-      JsonSchema first = JsonSchema.Parse(json, resolver);
-
-      json =
-        @"{
-  ""id"":""second"",
-  ""type"":""object"",
-  ""extends"":{""$ref"":""first""},
-  ""additionalProperties"":{""type"":""string""}
-}";
-
-      JsonSchema second = JsonSchema.Parse(json, resolver);
-      Assert.AreEqual(first, second.Extends);
-
-      json =
-        @"{
-  ""id"":""third"",
-  ""type"":""object"",
-  ""extends"":{""$ref"":""second""},
-  ""additionalProperties"":false
-}";
-
-      JsonSchema third = JsonSchema.Parse(json, resolver);
-      Assert.AreEqual(second, third.Extends);
-      Assert.AreEqual(first, third.Extends.Extends);
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      third.WriteTo(jsonWriter, resolver);
-
-      string writtenJson = writer.ToString();
-      Assert.AreEqual(@"{
-  ""id"": ""third"",
-  ""type"": ""object"",
-  ""additionalProperties"": false,
-  ""extends"": {
-    ""$ref"": ""second""
-  }
-}", writtenJson);
-
-      StringWriter writer1 = new StringWriter();
-      JsonTextWriter jsonWriter1 = new JsonTextWriter(writer1);
-      jsonWriter1.Formatting = Formatting.Indented;
-
-      third.WriteTo(jsonWriter1);
-
-      writtenJson = writer1.ToString();
-      Assert.AreEqual(@"{
-  ""id"": ""third"",
-  ""type"": ""object"",
-  ""additionalProperties"": false,
-  ""extends"": {
-    ""id"": ""second"",
-    ""type"": ""object"",
-    ""additionalProperties"": {
-      ""type"": ""string""
-    },
-    ""extends"": {
-      ""id"": ""first"",
-      ""type"": ""object"",
-      ""additionalProperties"": {}
-    }
-  }
-}", writtenJson);
-    }
-
-    [Test]
-    public void WriteTo_AdditionalProperties()
-    {
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""description"":""AdditionalProperties"",
-  ""type"":[""string"", ""integer""],
-  ""additionalProperties"":{""type"":[""object"", ""boolean""]}
-}");
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""description"": ""AdditionalProperties"",
-  ""type"": [
-    ""string"",
-    ""integer""
-  ],
-  ""additionalProperties"": {
-    ""type"": [
-      ""boolean"",
-      ""object""
-    ]
-  }
-}", json);
-    }
-
-    [Test]
-    public void WriteTo_Properties()
-    {
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""description"":""A person"",
-  ""type"":""object"",
-  ""properties"":
-  {
-    ""name"":{""type"":""string""},
-    ""hobbies"":
-    {
-      ""type"":""array"",
-      ""items"": {""type"":""string""}
-    }
-  }
-}");
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""description"": ""A person"",
-  ""type"": ""object"",
-  ""properties"": {
-    ""name"": {
-      ""type"": ""string""
-    },
-    ""hobbies"": {
-      ""type"": ""array"",
-      ""items"": {
-        ""type"": ""string""
-      }
-    }
-  }
-}", json);
-
-    }
-
-    [Test]
-    public void WriteTo_Enum()
-    {
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""description"":""Type"",
-  ""type"":[""string"",""array""],
-  ""items"":{},
-  ""enum"":[""string"",""object"",""array"",""boolean"",""number"",""integer"",""null"",""any""]
-}");
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""description"": ""Type"",
-  ""type"": [
-    ""string"",
-    ""array""
-  ],
-  ""items"": {},
-  ""enum"": [
-    ""string"",
-    ""object"",
-    ""array"",
-    ""boolean"",
-    ""number"",
-    ""integer"",
-    ""null"",
-    ""any""
-  ]
-}", json);
-    }
-
-    [Test]
-    public void WriteTo_CircularReference()
-    {
-      string json = @"{
-  ""id"":""CircularReferenceArray"",
-  ""description"":""CircularReference"",
-  ""type"":[""array""],
-  ""items"":{""$ref"":""CircularReferenceArray""}
-}";
-
-      JsonSchema schema = JsonSchema.Parse(json);
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string writtenJson = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""id"": ""CircularReferenceArray"",
-  ""description"": ""CircularReference"",
-  ""type"": ""array"",
-  ""items"": {
-    ""$ref"": ""CircularReferenceArray""
-  }
-}", writtenJson);
-    }
-
-    [Test]
-    public void WriteTo_DisallowMultiple()
-    {
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""description"":""Type"",
-  ""type"":[""string"",""array""],
-  ""items"":{},
-  ""disallow"":[""string"",""object"",""array""]
-}");
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""description"": ""Type"",
-  ""type"": [
-    ""string"",
-    ""array""
-  ],
-  ""items"": {},
-  ""disallow"": [
-    ""string"",
-    ""object"",
-    ""array""
-  ]
-}", json);
-    }
-
-    [Test]
-    public void WriteTo_DisallowSingle()
-    {
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""description"":""Type"",
-  ""type"":[""string"",""array""],
-  ""items"":{},
-  ""disallow"":""any""
-}");
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""description"": ""Type"",
-  ""type"": [
-    ""string"",
-    ""array""
-  ],
-  ""items"": {},
-  ""disallow"": ""any""
-}", json);
-    }
-
-    [Test]
-    public void WriteTo_MultipleItems()
-    {
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""items"":[{},{}]
-}");
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""items"": [
-    {},
-    {}
-  ]
-}", json);
-    }
-
-    [Test]
-    public void ReadOptions()
-    {
-      JsonSchema schema = JsonSchema.Parse(@"{
-  ""type"": ""object"",
-  ""properties"": {
-    ""x"": {
-      ""type"": ""integer"",
-      ""enum"": [
-        0,
-        1,
-        -1
-      ],
-      ""options"": [
-        {
-          ""value"": 0,
-          ""label"": ""No""
-        },
-        {
-          ""value"": 1,
-          ""label"": ""Asc""
-        },
-        {
-          ""value"": -1,
-          ""label"": ""Desc""
-        }
-      ]
-    }
-  }
-}");
-
-      Assert.AreEqual(schema.Properties["x"].Options.Count, 3);
-      Assert.AreEqual(schema.Properties["x"].Options[0], "No");
-      Assert.AreEqual(schema.Properties["x"].Options[1], "Asc");
-      Assert.AreEqual(schema.Properties["x"].Options[-1], "Desc");
-    }
-
-    [Test]
-    public void WriteTo_ExclusiveMinimum_ExclusiveMaximum()
-    {
-      JsonSchema schema = new JsonSchema();
-      schema.ExclusiveMinimum = true;
-      schema.ExclusiveMaximum = true;
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""exclusiveMinimum"": true,
-  ""exclusiveMaximum"": true
-}", json);
-    }
-
-    [Test]
-    public void WriteTo_PatternProperties()
-    {
-      JsonSchema schema = new JsonSchema();
-      schema.PatternProperties = new Dictionary<string, JsonSchema>
-        {
-          { "[abc]", new JsonSchema() }
-        };
-
-      StringWriter writer = new StringWriter();
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      schema.WriteTo(jsonWriter);
-
-      string json = writer.ToString();
-
-      Assert.AreEqual(@"{
-  ""patternProperties"": {
-    ""[abc]"": {}
-  }
-}", json);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+using System.IO;
+using Newtonsoft.Json.Schema;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Schema
+{
+  [TestFixture]
+  public class JsonSchemaTests : TestFixtureBase
+  {
+    [Test]
+    public void Extends()
+    {
+      string json;
+      JsonSchemaResolver resolver = new JsonSchemaResolver();
+
+      json = @"{
+  ""id"":""first"",
+  ""type"":""object"",
+  ""additionalProperties"":{}
+}";
+
+      JsonSchema first = JsonSchema.Parse(json, resolver);
+
+      json =
+        @"{
+  ""id"":""second"",
+  ""type"":""object"",
+  ""extends"":{""$ref"":""first""},
+  ""additionalProperties"":{""type"":""string""}
+}";
+
+      JsonSchema second = JsonSchema.Parse(json, resolver);
+      Assert.AreEqual(first, second.Extends);
+
+      json =
+        @"{
+  ""id"":""third"",
+  ""type"":""object"",
+  ""extends"":{""$ref"":""second""},
+  ""additionalProperties"":false
+}";
+
+      JsonSchema third = JsonSchema.Parse(json, resolver);
+      Assert.AreEqual(second, third.Extends);
+      Assert.AreEqual(first, third.Extends.Extends);
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      third.WriteTo(jsonWriter, resolver);
+
+      string writtenJson = writer.ToString();
+      Assert.AreEqual(@"{
+  ""id"": ""third"",
+  ""type"": ""object"",
+  ""additionalProperties"": false,
+  ""extends"": {
+    ""$ref"": ""second""
+  }
+}", writtenJson);
+
+      StringWriter writer1 = new StringWriter();
+      JsonTextWriter jsonWriter1 = new JsonTextWriter(writer1);
+      jsonWriter1.Formatting = Formatting.Indented;
+
+      third.WriteTo(jsonWriter1);
+
+      writtenJson = writer1.ToString();
+      Assert.AreEqual(@"{
+  ""id"": ""third"",
+  ""type"": ""object"",
+  ""additionalProperties"": false,
+  ""extends"": {
+    ""id"": ""second"",
+    ""type"": ""object"",
+    ""additionalProperties"": {
+      ""type"": ""string""
+    },
+    ""extends"": {
+      ""id"": ""first"",
+      ""type"": ""object"",
+      ""additionalProperties"": {}
+    }
+  }
+}", writtenJson);
+    }
+
+    [Test]
+    public void WriteTo_AdditionalProperties()
+    {
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""description"":""AdditionalProperties"",
+  ""type"":[""string"", ""integer""],
+  ""additionalProperties"":{""type"":[""object"", ""boolean""]}
+}");
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""description"": ""AdditionalProperties"",
+  ""type"": [
+    ""string"",
+    ""integer""
+  ],
+  ""additionalProperties"": {
+    ""type"": [
+      ""boolean"",
+      ""object""
+    ]
+  }
+}", json);
+    }
+
+    [Test]
+    public void WriteTo_Properties()
+    {
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""description"":""A person"",
+  ""type"":""object"",
+  ""properties"":
+  {
+    ""name"":{""type"":""string""},
+    ""hobbies"":
+    {
+      ""type"":""array"",
+      ""items"": {""type"":""string""}
+    }
+  }
+}");
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""description"": ""A person"",
+  ""type"": ""object"",
+  ""properties"": {
+    ""name"": {
+      ""type"": ""string""
+    },
+    ""hobbies"": {
+      ""type"": ""array"",
+      ""items"": {
+        ""type"": ""string""
+      }
+    }
+  }
+}", json);
+
+    }
+
+    [Test]
+    public void WriteTo_Enum()
+    {
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""description"":""Type"",
+  ""type"":[""string"",""array""],
+  ""items"":{},
+  ""enum"":[""string"",""object"",""array"",""boolean"",""number"",""integer"",""null"",""any""]
+}");
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""description"": ""Type"",
+  ""type"": [
+    ""string"",
+    ""array""
+  ],
+  ""items"": {},
+  ""enum"": [
+    ""string"",
+    ""object"",
+    ""array"",
+    ""boolean"",
+    ""number"",
+    ""integer"",
+    ""null"",
+    ""any""
+  ]
+}", json);
+    }
+
+    [Test]
+    public void WriteTo_CircularReference()
+    {
+      string json = @"{
+  ""id"":""CircularReferenceArray"",
+  ""description"":""CircularReference"",
+  ""type"":[""array""],
+  ""items"":{""$ref"":""CircularReferenceArray""}
+}";
+
+      JsonSchema schema = JsonSchema.Parse(json);
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string writtenJson = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""id"": ""CircularReferenceArray"",
+  ""description"": ""CircularReference"",
+  ""type"": ""array"",
+  ""items"": {
+    ""$ref"": ""CircularReferenceArray""
+  }
+}", writtenJson);
+    }
+
+    [Test]
+    public void WriteTo_DisallowMultiple()
+    {
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""description"":""Type"",
+  ""type"":[""string"",""array""],
+  ""items"":{},
+  ""disallow"":[""string"",""object"",""array""]
+}");
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""description"": ""Type"",
+  ""type"": [
+    ""string"",
+    ""array""
+  ],
+  ""items"": {},
+  ""disallow"": [
+    ""string"",
+    ""object"",
+    ""array""
+  ]
+}", json);
+    }
+
+    [Test]
+    public void WriteTo_DisallowSingle()
+    {
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""description"":""Type"",
+  ""type"":[""string"",""array""],
+  ""items"":{},
+  ""disallow"":""any""
+}");
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""description"": ""Type"",
+  ""type"": [
+    ""string"",
+    ""array""
+  ],
+  ""items"": {},
+  ""disallow"": ""any""
+}", json);
+    }
+
+    [Test]
+    public void WriteTo_MultipleItems()
+    {
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""items"":[{},{}]
+}");
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""items"": [
+    {},
+    {}
+  ]
+}", json);
+    }
+
+    [Test]
+    public void ReadOptions()
+    {
+      JsonSchema schema = JsonSchema.Parse(@"{
+  ""type"": ""object"",
+  ""properties"": {
+    ""x"": {
+      ""type"": ""integer"",
+      ""enum"": [
+        0,
+        1,
+        -1
+      ],
+      ""options"": [
+        {
+          ""value"": 0,
+          ""label"": ""No""
+        },
+        {
+          ""value"": 1,
+          ""label"": ""Asc""
+        },
+        {
+          ""value"": -1,
+          ""label"": ""Desc""
+        }
+      ]
+    }
+  }
+}");
+
+      Assert.AreEqual(schema.Properties["x"].Options.Count, 3);
+      Assert.AreEqual(schema.Properties["x"].Options[0], "No");
+      Assert.AreEqual(schema.Properties["x"].Options[1], "Asc");
+      Assert.AreEqual(schema.Properties["x"].Options[-1], "Desc");
+    }
+
+    [Test]
+    public void WriteTo_ExclusiveMinimum_ExclusiveMaximum()
+    {
+      JsonSchema schema = new JsonSchema();
+      schema.ExclusiveMinimum = true;
+      schema.ExclusiveMaximum = true;
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""exclusiveMinimum"": true,
+  ""exclusiveMaximum"": true
+}", json);
+    }
+
+    [Test]
+    public void WriteTo_PatternProperties()
+    {
+      JsonSchema schema = new JsonSchema();
+      schema.PatternProperties = new Dictionary<string, JsonSchema>
+        {
+          { "[abc]", new JsonSchema() }
+        };
+
+      StringWriter writer = new StringWriter();
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      schema.WriteTo(jsonWriter);
+
+      string json = writer.ToString();
+
+      Assert.AreEqual(@"{
+  ""patternProperties"": {
+    ""[abc]"": {}
+  }
+}", json);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/CamelCasePropertyNamesContractResolverTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/CamelCasePropertyNamesContractResolverTests.cs
@@ -1,224 +1,224 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Serialization;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Tests.TestObjects;
-using Newtonsoft.Json.Linq;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class CamelCasePropertyNamesContractResolverTests : TestFixtureBase
-  {
-    [Test]
-    public void JsonConvertSerializerSettings()
-    {
-      Person person = new Person();
-      person.BirthDate = new DateTime(2000, 11, 20, 23, 55, 44, DateTimeKind.Utc);
-      person.LastModified = new DateTime(2000, 11, 20, 23, 55, 44, DateTimeKind.Utc);
-      person.Name = "Name!";
-
-      string json = JsonConvert.SerializeObject(person, Formatting.Indented, new JsonSerializerSettings
-                                                               {
-                                                                 ContractResolver = new CamelCasePropertyNamesContractResolver()
-                                                               });
-
-      Assert.AreEqual(@"{
-  ""name"": ""Name!"",
-  ""birthDate"": ""2000-11-20T23:55:44Z"",
-  ""lastModified"": ""2000-11-20T23:55:44Z""
-}", json);
-
-      Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json, new JsonSerializerSettings
-                                                                        {
-                                                                          ContractResolver = new CamelCasePropertyNamesContractResolver()
-                                                                        });
-
-      Assert.AreEqual(person.BirthDate, deserializedPerson.BirthDate);
-      Assert.AreEqual(person.LastModified, deserializedPerson.LastModified);
-      Assert.AreEqual(person.Name, deserializedPerson.Name);
-
-      json = JsonConvert.SerializeObject(person, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Name"": ""Name!"",
-  ""BirthDate"": ""2000-11-20T23:55:44Z"",
-  ""LastModified"": ""2000-11-20T23:55:44Z""
-}", json);
-
-    }
-
-    [Test]
-    public void JTokenWriter()
-    {
-      JsonIgnoreAttributeOnClassTestClass ignoreAttributeOnClassTestClass = new JsonIgnoreAttributeOnClassTestClass();
-      ignoreAttributeOnClassTestClass.Field = int.MinValue;
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.ContractResolver = new CamelCasePropertyNamesContractResolver();
-
-      JTokenWriter writer = new JTokenWriter();
-
-      serializer.Serialize(writer, ignoreAttributeOnClassTestClass);
-
-      JObject o = (JObject) writer.Token;
-      JProperty p = o.Property("theField");
-
-      Assert.IsNotNull(p);
-      Assert.AreEqual(int.MinValue, (int)p.Value);
-
-      string json = o.ToString();
-    }
-
-#if !NETFX_CORE
-    [Test]
-    public void MemberSearchFlags()
-    {
-      PrivateMembersClass privateMembersClass = new PrivateMembersClass("PrivateString!", "InternalString!");
-
-      string json = JsonConvert.SerializeObject(privateMembersClass, Formatting.Indented, new JsonSerializerSettings
-      {
-        ContractResolver = new CamelCasePropertyNamesContractResolver { DefaultMembersSearchFlags = BindingFlags.NonPublic | BindingFlags.Instance }
-      });
-
-      Assert.AreEqual(@"{
-  ""_privateString"": ""PrivateString!"",
-  ""i"": 0,
-  ""_internalString"": ""InternalString!""
-}", json);
-
-      PrivateMembersClass deserializedPrivateMembersClass = JsonConvert.DeserializeObject<PrivateMembersClass>(@"{
-  ""_privateString"": ""Private!"",
-  ""i"": -2,
-  ""_internalString"": ""Internal!""
-}", new JsonSerializerSettings
-      {
-        ContractResolver = new CamelCasePropertyNamesContractResolver { DefaultMembersSearchFlags = BindingFlags.NonPublic | BindingFlags.Instance }
-      });
-
-      Assert.AreEqual("Private!", ReflectionUtils.GetMemberValue(typeof(PrivateMembersClass).GetField("_privateString", BindingFlags.Instance | BindingFlags.NonPublic), deserializedPrivateMembersClass));
-      Assert.AreEqual("Internal!", ReflectionUtils.GetMemberValue(typeof(PrivateMembersClass).GetField("_internalString", BindingFlags.Instance | BindingFlags.NonPublic), deserializedPrivateMembersClass));
-
-      // readonly
-      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof(PrivateMembersClass).GetField("i", BindingFlags.Instance | BindingFlags.NonPublic), deserializedPrivateMembersClass));
-    }
-#endif
-
-    [Test]
-    public void BlogPostExample()
-    {
-      Product product = new Product
-                          {
-                            ExpiryDate = new DateTime(2010, 12, 20, 18, 1, 0, DateTimeKind.Utc),
-                            Name = "Widget",
-                            Price = 9.99m,
-                            Sizes = new[] {"Small", "Medium", "Large"}
-                          };
-
-      string json = 
-        JsonConvert.SerializeObject(
-          product,
-          Formatting.Indented,
-          new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
-        );
-
-      //{
-      //  "name": "Widget",
-      //  "expiryDate": "\/Date(1292868060000)\/",
-      //  "price": 9.99,
-      //  "sizes": [
-      //    "Small",
-      //    "Medium",
-      //    "Large"
-      //  ]
-      //}
-
-      Assert.AreEqual(@"{
-  ""name"": ""Widget"",
-  ""expiryDate"": ""2010-12-20T18:01:00Z"",
-  ""price"": 9.99,
-  ""sizes"": [
-    ""Small"",
-    ""Medium"",
-    ""Large""
-  ]
-}", json);
-    }
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    [Test]
-    public void DynamicCamelCasePropertyNames()
-    {
-      dynamic o = new DynamicTests.TestDynamicObject();
-      o.Text = "Text!";
-      o.Integer = int.MaxValue;
-
-      string json = JsonConvert.SerializeObject(o, Formatting.Indented,
-        new JsonSerializerSettings
-        {
-          ContractResolver = new CamelCasePropertyNamesContractResolver()
-        });
-
-      Assert.AreEqual(@"{
-  ""text"": ""Text!"",
-  ""integer"": 2147483647,
-  ""int"": 0,
-  ""childObject"": null
-}", json);
-    }
-#endif
-
-    [Test]
-    public void DictionaryCamelCasePropertyNames()
-    {
-      Dictionary<string, string> values = new Dictionary<string, string>
-        {
-          {"First", "Value1!"},
-          {"Second", "Value2!"}
-        };
-
-      string json = JsonConvert.SerializeObject(values, Formatting.Indented,
-        new JsonSerializerSettings
-        {
-          ContractResolver = new CamelCasePropertyNamesContractResolver()
-        });
-
-      Assert.AreEqual(@"{
-  ""first"": ""Value1!"",
-  ""second"": ""Value2!""
-}", json);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Serialization;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Tests.TestObjects;
+using Newtonsoft.Json.Linq;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class CamelCasePropertyNamesContractResolverTests : TestFixtureBase
+  {
+    [Test]
+    public void JsonConvertSerializerSettings()
+    {
+      Person person = new Person();
+      person.BirthDate = new DateTime(2000, 11, 20, 23, 55, 44, DateTimeKind.Utc);
+      person.LastModified = new DateTime(2000, 11, 20, 23, 55, 44, DateTimeKind.Utc);
+      person.Name = "Name!";
+
+      string json = JsonConvert.SerializeObject(person, Formatting.Indented, new JsonSerializerSettings
+                                                               {
+                                                                 ContractResolver = new CamelCasePropertyNamesContractResolver()
+                                                               });
+
+      Assert.AreEqual(@"{
+  ""name"": ""Name!"",
+  ""birthDate"": ""2000-11-20T23:55:44Z"",
+  ""lastModified"": ""2000-11-20T23:55:44Z""
+}", json);
+
+      Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json, new JsonSerializerSettings
+                                                                        {
+                                                                          ContractResolver = new CamelCasePropertyNamesContractResolver()
+                                                                        });
+
+      Assert.AreEqual(person.BirthDate, deserializedPerson.BirthDate);
+      Assert.AreEqual(person.LastModified, deserializedPerson.LastModified);
+      Assert.AreEqual(person.Name, deserializedPerson.Name);
+
+      json = JsonConvert.SerializeObject(person, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Name"": ""Name!"",
+  ""BirthDate"": ""2000-11-20T23:55:44Z"",
+  ""LastModified"": ""2000-11-20T23:55:44Z""
+}", json);
+
+    }
+
+    [Test]
+    public void JTokenWriter()
+    {
+      JsonIgnoreAttributeOnClassTestClass ignoreAttributeOnClassTestClass = new JsonIgnoreAttributeOnClassTestClass();
+      ignoreAttributeOnClassTestClass.Field = int.MinValue;
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.ContractResolver = new CamelCasePropertyNamesContractResolver();
+
+      JTokenWriter writer = new JTokenWriter();
+
+      serializer.Serialize(writer, ignoreAttributeOnClassTestClass);
+
+      JObject o = (JObject) writer.Token;
+      JProperty p = o.Property("theField");
+
+      Assert.IsNotNull(p);
+      Assert.AreEqual(int.MinValue, (int)p.Value);
+
+      string json = o.ToString();
+    }
+
+#if !NETFX_CORE
+    [Test]
+    public void MemberSearchFlags()
+    {
+      PrivateMembersClass privateMembersClass = new PrivateMembersClass("PrivateString!", "InternalString!");
+
+      string json = JsonConvert.SerializeObject(privateMembersClass, Formatting.Indented, new JsonSerializerSettings
+      {
+        ContractResolver = new CamelCasePropertyNamesContractResolver { DefaultMembersSearchFlags = BindingFlags.NonPublic | BindingFlags.Instance }
+      });
+
+      Assert.AreEqual(@"{
+  ""_privateString"": ""PrivateString!"",
+  ""i"": 0,
+  ""_internalString"": ""InternalString!""
+}", json);
+
+      PrivateMembersClass deserializedPrivateMembersClass = JsonConvert.DeserializeObject<PrivateMembersClass>(@"{
+  ""_privateString"": ""Private!"",
+  ""i"": -2,
+  ""_internalString"": ""Internal!""
+}", new JsonSerializerSettings
+      {
+        ContractResolver = new CamelCasePropertyNamesContractResolver { DefaultMembersSearchFlags = BindingFlags.NonPublic | BindingFlags.Instance }
+      });
+
+      Assert.AreEqual("Private!", ReflectionUtils.GetMemberValue(typeof(PrivateMembersClass).GetField("_privateString", BindingFlags.Instance | BindingFlags.NonPublic), deserializedPrivateMembersClass));
+      Assert.AreEqual("Internal!", ReflectionUtils.GetMemberValue(typeof(PrivateMembersClass).GetField("_internalString", BindingFlags.Instance | BindingFlags.NonPublic), deserializedPrivateMembersClass));
+
+      // readonly
+      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof(PrivateMembersClass).GetField("i", BindingFlags.Instance | BindingFlags.NonPublic), deserializedPrivateMembersClass));
+    }
+#endif
+
+    [Test]
+    public void BlogPostExample()
+    {
+      Product product = new Product
+                          {
+                            ExpiryDate = new DateTime(2010, 12, 20, 18, 1, 0, DateTimeKind.Utc),
+                            Name = "Widget",
+                            Price = 9.99m,
+                            Sizes = new[] {"Small", "Medium", "Large"}
+                          };
+
+      string json = 
+        JsonConvert.SerializeObject(
+          product,
+          Formatting.Indented,
+          new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
+        );
+
+      //{
+      //  "name": "Widget",
+      //  "expiryDate": "\/Date(1292868060000)\/",
+      //  "price": 9.99,
+      //  "sizes": [
+      //    "Small",
+      //    "Medium",
+      //    "Large"
+      //  ]
+      //}
+
+      Assert.AreEqual(@"{
+  ""name"": ""Widget"",
+  ""expiryDate"": ""2010-12-20T18:01:00Z"",
+  ""price"": 9.99,
+  ""sizes"": [
+    ""Small"",
+    ""Medium"",
+    ""Large""
+  ]
+}", json);
+    }
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    [Test]
+    public void DynamicCamelCasePropertyNames()
+    {
+      dynamic o = new DynamicTests.TestDynamicObject();
+      o.Text = "Text!";
+      o.Integer = int.MaxValue;
+
+      string json = JsonConvert.SerializeObject(o, Formatting.Indented,
+        new JsonSerializerSettings
+        {
+          ContractResolver = new CamelCasePropertyNamesContractResolver()
+        });
+
+      Assert.AreEqual(@"{
+  ""text"": ""Text!"",
+  ""integer"": 2147483647,
+  ""int"": 0,
+  ""childObject"": null
+}", json);
+    }
+#endif
+
+    [Test]
+    public void DictionaryCamelCasePropertyNames()
+    {
+      Dictionary<string, string> values = new Dictionary<string, string>
+        {
+          {"First", "Value1!"},
+          {"Second", "Value2!"}
+        };
+
+      string json = JsonConvert.SerializeObject(values, Formatting.Indented,
+        new JsonSerializerSettings
+        {
+          ContractResolver = new CamelCasePropertyNamesContractResolver()
+        });
+
+      Assert.AreEqual(@"{
+  ""first"": ""Value1!"",
+  ""second"": ""Value2!""
+}", json);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/ConstructorHandlingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/ConstructorHandlingTests.cs
@@ -1,138 +1,138 @@
-﻿using System.Reflection;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class ConstructorHandlingTests : TestFixtureBase
-  {
-    [Test]
-    public void UsePrivateConstructorIfThereAreMultipleConstructorsWithParametersAndNothingToFallbackTo()
-    {
-      string json = @"{Name:""Name!""}";
-
-      var c = JsonConvert.DeserializeObject<PrivateConstructorTestClass>(json);
-
-      Assert.AreEqual("Name!", c.Name);
-    }
-
-    [Test]
-    public void SuccessWithPrivateConstructorAndAllowNonPublic()
-    {
-      string json = @"{Name:""Name!""}";
-
-      PrivateConstructorTestClass c = JsonConvert.DeserializeObject<PrivateConstructorTestClass>(json,
-        new JsonSerializerSettings
-          {
-            ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
-          });
-      Assert.IsNotNull(c);
-      Assert.AreEqual("Name!", c.Name);
-    }
-
-    [Test]
-    public void FailWithPrivateConstructorPlusParametizedAndDefault()
-    {
-      ExceptionAssert.Throws<TargetInvocationException>(
-        null,
-        () =>
-        {
-          string json = @"{Name:""Name!""}";
-
-          PrivateConstructorWithPublicParametizedConstructorTestClass c = JsonConvert.DeserializeObject<PrivateConstructorWithPublicParametizedConstructorTestClass>(json);
-        });
-    }
-
-    [Test]
-    public void SuccessWithPrivateConstructorPlusParametizedAndAllowNonPublic()
-    {
-      string json = @"{Name:""Name!""}";
-
-      PrivateConstructorWithPublicParametizedConstructorTestClass c = JsonConvert.DeserializeObject<PrivateConstructorWithPublicParametizedConstructorTestClass>(json,
-        new JsonSerializerSettings
-        {
-          ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
-        });
-      Assert.IsNotNull(c);
-      Assert.AreEqual("Name!", c.Name);
-      Assert.AreEqual(1, c.Age);
-    }
-
-    [Test]
-    public void SuccessWithPublicParametizedConstructor()
-    {
-      string json = @"{Name:""Name!""}";
-
-      var c = JsonConvert.DeserializeObject<PublicParametizedConstructorTestClass>(json);
-      Assert.IsNotNull(c);
-      Assert.AreEqual("Name!", c.Name);
-    }
-
-    [Test]
-    public void SuccessWithPublicParametizedConstructorWhenParamaterIsNotAProperty()
-    {
-      string json = @"{nameParameter:""Name!""}";
-
-      PublicParametizedConstructorWithNonPropertyParameterTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorWithNonPropertyParameterTestClass>(json);
-      Assert.IsNotNull(c);
-      Assert.AreEqual("Name!", c.Name);
-    }
-
-    [Test]
-    public void SuccessWithPublicParametizedConstructorWhenParamaterRequiresAConverter()
-    {
-      string json = @"{nameParameter:""Name!""}";
-
-      PublicParametizedConstructorRequiringConverterTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorRequiringConverterTestClass>(json, new NameContainerConverter());
-      Assert.IsNotNull(c);
-      Assert.AreEqual("Name!", c.Name.Value);
-    }
-
-    [Test]
-    public void SuccessWithPublicParametizedConstructorWhenParamaterRequiresAConverterWithParameterAttribute()
-    {
-      string json = @"{nameParameter:""Name!""}";
-
-      PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass>(json);
-      Assert.IsNotNull(c);
-      Assert.AreEqual("Name!", c.Name.Value);
-    }
-
-    [Test]
-    public void SuccessWithPublicParametizedConstructorWhenParamaterRequiresAConverterWithPropertyAttribute()
-    {
-      string json = @"{name:""Name!""}";
-
-      PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass>(json);
-      Assert.IsNotNull(c);
-      Assert.AreEqual("Name!", c.Name.Value);
-    }
-
-    [Test]
-    public void SuccessWithPublicParametizedConstructorWhenParamaterNameConflictsWithPropertyName()
-    {
-      string json = @"{name:""1""}";
-
-      PublicParametizedConstructorWithPropertyNameConflict c = JsonConvert.DeserializeObject<PublicParametizedConstructorWithPropertyNameConflict>(json);
-      Assert.IsNotNull(c);
-      Assert.AreEqual(1, c.Name);
-    }
-
-    [Test]
-    public void PublicParametizedConstructorWithPropertyNameConflictWithAttribute()
-    {
-      string json = @"{name:""1""}";
-
-      PublicParametizedConstructorWithPropertyNameConflictWithAttribute c = JsonConvert.DeserializeObject<PublicParametizedConstructorWithPropertyNameConflictWithAttribute>(json);
-      Assert.IsNotNull(c);
-      Assert.AreEqual(1, c.Name);
-    }
-  }
+﻿using System.Reflection;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class ConstructorHandlingTests : TestFixtureBase
+  {
+    [Test]
+    public void UsePrivateConstructorIfThereAreMultipleConstructorsWithParametersAndNothingToFallbackTo()
+    {
+      string json = @"{Name:""Name!""}";
+
+      var c = JsonConvert.DeserializeObject<PrivateConstructorTestClass>(json);
+
+      Assert.AreEqual("Name!", c.Name);
+    }
+
+    [Test]
+    public void SuccessWithPrivateConstructorAndAllowNonPublic()
+    {
+      string json = @"{Name:""Name!""}";
+
+      PrivateConstructorTestClass c = JsonConvert.DeserializeObject<PrivateConstructorTestClass>(json,
+        new JsonSerializerSettings
+          {
+            ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
+          });
+      Assert.IsNotNull(c);
+      Assert.AreEqual("Name!", c.Name);
+    }
+
+    [Test]
+    public void FailWithPrivateConstructorPlusParametizedAndDefault()
+    {
+      ExceptionAssert.Throws<TargetInvocationException>(
+        null,
+        () =>
+        {
+          string json = @"{Name:""Name!""}";
+
+          PrivateConstructorWithPublicParametizedConstructorTestClass c = JsonConvert.DeserializeObject<PrivateConstructorWithPublicParametizedConstructorTestClass>(json);
+        });
+    }
+
+    [Test]
+    public void SuccessWithPrivateConstructorPlusParametizedAndAllowNonPublic()
+    {
+      string json = @"{Name:""Name!""}";
+
+      PrivateConstructorWithPublicParametizedConstructorTestClass c = JsonConvert.DeserializeObject<PrivateConstructorWithPublicParametizedConstructorTestClass>(json,
+        new JsonSerializerSettings
+        {
+          ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
+        });
+      Assert.IsNotNull(c);
+      Assert.AreEqual("Name!", c.Name);
+      Assert.AreEqual(1, c.Age);
+    }
+
+    [Test]
+    public void SuccessWithPublicParametizedConstructor()
+    {
+      string json = @"{Name:""Name!""}";
+
+      var c = JsonConvert.DeserializeObject<PublicParametizedConstructorTestClass>(json);
+      Assert.IsNotNull(c);
+      Assert.AreEqual("Name!", c.Name);
+    }
+
+    [Test]
+    public void SuccessWithPublicParametizedConstructorWhenParamaterIsNotAProperty()
+    {
+      string json = @"{nameParameter:""Name!""}";
+
+      PublicParametizedConstructorWithNonPropertyParameterTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorWithNonPropertyParameterTestClass>(json);
+      Assert.IsNotNull(c);
+      Assert.AreEqual("Name!", c.Name);
+    }
+
+    [Test]
+    public void SuccessWithPublicParametizedConstructorWhenParamaterRequiresAConverter()
+    {
+      string json = @"{nameParameter:""Name!""}";
+
+      PublicParametizedConstructorRequiringConverterTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorRequiringConverterTestClass>(json, new NameContainerConverter());
+      Assert.IsNotNull(c);
+      Assert.AreEqual("Name!", c.Name.Value);
+    }
+
+    [Test]
+    public void SuccessWithPublicParametizedConstructorWhenParamaterRequiresAConverterWithParameterAttribute()
+    {
+      string json = @"{nameParameter:""Name!""}";
+
+      PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass>(json);
+      Assert.IsNotNull(c);
+      Assert.AreEqual("Name!", c.Name.Value);
+    }
+
+    [Test]
+    public void SuccessWithPublicParametizedConstructorWhenParamaterRequiresAConverterWithPropertyAttribute()
+    {
+      string json = @"{name:""Name!""}";
+
+      PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass c = JsonConvert.DeserializeObject<PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass>(json);
+      Assert.IsNotNull(c);
+      Assert.AreEqual("Name!", c.Name.Value);
+    }
+
+    [Test]
+    public void SuccessWithPublicParametizedConstructorWhenParamaterNameConflictsWithPropertyName()
+    {
+      string json = @"{name:""1""}";
+
+      PublicParametizedConstructorWithPropertyNameConflict c = JsonConvert.DeserializeObject<PublicParametizedConstructorWithPropertyNameConflict>(json);
+      Assert.IsNotNull(c);
+      Assert.AreEqual(1, c.Name);
+    }
+
+    [Test]
+    public void PublicParametizedConstructorWithPropertyNameConflictWithAttribute()
+    {
+      string json = @"{name:""1""}";
+
+      PublicParametizedConstructorWithPropertyNameConflictWithAttribute c = JsonConvert.DeserializeObject<PublicParametizedConstructorWithPropertyNameConflictWithAttribute>(json);
+      Assert.IsNotNull(c);
+      Assert.AreEqual(1, c.Name);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/ContractResolverTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/ContractResolverTests.cs
@@ -1,183 +1,183 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  public class DynamicContractResolver : DefaultContractResolver
-  {
-    private readonly char _startingWithChar;
-    public DynamicContractResolver(char startingWithChar)
-      : base(false)
-    {
-      _startingWithChar = startingWithChar;
-    }
-
-    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
-    {
-      IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
-
-      // only serializer properties that start with the specified character
-      properties =
-        properties.Where(p => p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList();
-
-      return properties;
-    }
-  }
-
-  public class Book
-  {
-    public string BookName { get; set; }
-    public decimal BookPrice { get; set; }
-    public string AuthorName { get; set; }
-    public int AuthorAge { get; set; }
-    public string AuthorCountry { get; set; }
-  }
-
-  public class IPersonContractResolver : DefaultContractResolver
-  {
-    protected override JsonContract CreateContract(Type objectType)
-    {
-      if (objectType == typeof(Employee))
-        objectType = typeof(IPerson);
-
-      return base.CreateContract(objectType);
-    }
-  }
-
-  [TestFixture]
-  public class ContractResolverTests : TestFixtureBase
-  {
-    [Test]
-    public void ResolveProperties_IgnoreStatic()
-    {
-      var resolver = new DefaultContractResolver();
-      var contract = (JsonObjectContract)resolver.ResolveContract(typeof(NumberFormatInfo));
-
-      Assert.IsFalse(contract.Properties.Any(c => c.PropertyName == "InvariantInfo"));
-    }
-
-    [Test]
-    public void SerializeInterface()
-    {
-      Employee employee = new Employee
-         {
-           BirthDate = new DateTime(1977, 12, 30, 1, 1, 1, DateTimeKind.Utc),
-           FirstName = "Maurice",
-           LastName = "Moss",
-           Department = "IT",
-           JobTitle = "Support"
-         };
-
-      string iPersonJson = JsonConvert.SerializeObject(employee, Formatting.Indented,
-        new JsonSerializerSettings { ContractResolver = new IPersonContractResolver() });
-
-      Assert.AreEqual(@"{
-  ""FirstName"": ""Maurice"",
-  ""LastName"": ""Moss"",
-  ""BirthDate"": ""1977-12-30T01:01:01Z""
-}", iPersonJson);
-    }
-
-    [Test]
-    public void SingleTypeWithMultipleContractResolvers()
-    {
-      Book book = new Book
-                    {
-                      BookName = "The Gathering Storm",
-                      BookPrice = 16.19m,
-                      AuthorName = "Brandon Sanderson",
-                      AuthorAge = 34,
-                      AuthorCountry = "United States of America"
-                    };
-
-      string startingWithA = JsonConvert.SerializeObject(book, Formatting.Indented,
-        new JsonSerializerSettings { ContractResolver = new DynamicContractResolver('A') });
-
-      // {
-      //   "AuthorName": "Brandon Sanderson",
-      //   "AuthorAge": 34,
-      //   "AuthorCountry": "United States of America"
-      // }
-
-      string startingWithB = JsonConvert.SerializeObject(book, Formatting.Indented,
-        new JsonSerializerSettings { ContractResolver = new DynamicContractResolver('B') });
-
-      // {
-      //   "BookName": "The Gathering Storm",
-      //   "BookPrice": 16.19
-      // }
-
-      Assert.AreEqual(@"{
-  ""AuthorName"": ""Brandon Sanderson"",
-  ""AuthorAge"": 34,
-  ""AuthorCountry"": ""United States of America""
-}", startingWithA);
-
-      Assert.AreEqual(@"{
-  ""BookName"": ""The Gathering Storm"",
-  ""BookPrice"": 16.19
-}", startingWithB);
-    }
-
-#if !NETFX_CORE
-    [Test]
-    public void SerializeCompilerGeneratedMembers()
-    {
-      StructTest structTest = new StructTest
-        {
-          IntField = 1,
-          IntProperty = 2,
-          StringField = "Field",
-          StringProperty = "Property"
-        };
-
-      DefaultContractResolver skipCompilerGeneratedResolver = new DefaultContractResolver
-      {
-        DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public
-      };
-
-      string skipCompilerGeneratedJson = JsonConvert.SerializeObject(structTest, Formatting.Indented,
-        new JsonSerializerSettings { ContractResolver = skipCompilerGeneratedResolver });
-
-      Assert.AreEqual(@"{
-  ""StringField"": ""Field"",
-  ""IntField"": 1,
-  ""StringProperty"": ""Property"",
-  ""IntProperty"": 2
-}", skipCompilerGeneratedJson);
-
-      DefaultContractResolver includeCompilerGeneratedResolver = new DefaultContractResolver
-      {
-        DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
-        SerializeCompilerGeneratedMembers = true
-      };
-
-      string includeCompilerGeneratedJson = JsonConvert.SerializeObject(structTest, Formatting.Indented,
-        new JsonSerializerSettings { ContractResolver = includeCompilerGeneratedResolver });
-
-      Assert.AreEqual(@"{
-  ""StringField"": ""Field"",
-  ""IntField"": 1,
-  ""<StringProperty>k__BackingField"": ""Property"",
-  ""<IntProperty>k__BackingField"": 2,
-  ""StringProperty"": ""Property"",
-  ""IntProperty"": 2
-}", includeCompilerGeneratedJson);
-    }
-#endif
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  public class DynamicContractResolver : DefaultContractResolver
+  {
+    private readonly char _startingWithChar;
+    public DynamicContractResolver(char startingWithChar)
+      : base(false)
+    {
+      _startingWithChar = startingWithChar;
+    }
+
+    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
+    {
+      IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
+
+      // only serializer properties that start with the specified character
+      properties =
+        properties.Where(p => p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList();
+
+      return properties;
+    }
+  }
+
+  public class Book
+  {
+    public string BookName { get; set; }
+    public decimal BookPrice { get; set; }
+    public string AuthorName { get; set; }
+    public int AuthorAge { get; set; }
+    public string AuthorCountry { get; set; }
+  }
+
+  public class IPersonContractResolver : DefaultContractResolver
+  {
+    protected override JsonContract CreateContract(Type objectType)
+    {
+      if (objectType == typeof(Employee))
+        objectType = typeof(IPerson);
+
+      return base.CreateContract(objectType);
+    }
+  }
+
+  [TestFixture]
+  public class ContractResolverTests : TestFixtureBase
+  {
+    [Test]
+    public void ResolveProperties_IgnoreStatic()
+    {
+      var resolver = new DefaultContractResolver();
+      var contract = (JsonObjectContract)resolver.ResolveContract(typeof(NumberFormatInfo));
+
+      Assert.IsFalse(contract.Properties.Any(c => c.PropertyName == "InvariantInfo"));
+    }
+
+    [Test]
+    public void SerializeInterface()
+    {
+      Employee employee = new Employee
+         {
+           BirthDate = new DateTime(1977, 12, 30, 1, 1, 1, DateTimeKind.Utc),
+           FirstName = "Maurice",
+           LastName = "Moss",
+           Department = "IT",
+           JobTitle = "Support"
+         };
+
+      string iPersonJson = JsonConvert.SerializeObject(employee, Formatting.Indented,
+        new JsonSerializerSettings { ContractResolver = new IPersonContractResolver() });
+
+      Assert.AreEqual(@"{
+  ""FirstName"": ""Maurice"",
+  ""LastName"": ""Moss"",
+  ""BirthDate"": ""1977-12-30T01:01:01Z""
+}", iPersonJson);
+    }
+
+    [Test]
+    public void SingleTypeWithMultipleContractResolvers()
+    {
+      Book book = new Book
+                    {
+                      BookName = "The Gathering Storm",
+                      BookPrice = 16.19m,
+                      AuthorName = "Brandon Sanderson",
+                      AuthorAge = 34,
+                      AuthorCountry = "United States of America"
+                    };
+
+      string startingWithA = JsonConvert.SerializeObject(book, Formatting.Indented,
+        new JsonSerializerSettings { ContractResolver = new DynamicContractResolver('A') });
+
+      // {
+      //   "AuthorName": "Brandon Sanderson",
+      //   "AuthorAge": 34,
+      //   "AuthorCountry": "United States of America"
+      // }
+
+      string startingWithB = JsonConvert.SerializeObject(book, Formatting.Indented,
+        new JsonSerializerSettings { ContractResolver = new DynamicContractResolver('B') });
+
+      // {
+      //   "BookName": "The Gathering Storm",
+      //   "BookPrice": 16.19
+      // }
+
+      Assert.AreEqual(@"{
+  ""AuthorName"": ""Brandon Sanderson"",
+  ""AuthorAge"": 34,
+  ""AuthorCountry"": ""United States of America""
+}", startingWithA);
+
+      Assert.AreEqual(@"{
+  ""BookName"": ""The Gathering Storm"",
+  ""BookPrice"": 16.19
+}", startingWithB);
+    }
+
+#if !NETFX_CORE
+    [Test]
+    public void SerializeCompilerGeneratedMembers()
+    {
+      StructTest structTest = new StructTest
+        {
+          IntField = 1,
+          IntProperty = 2,
+          StringField = "Field",
+          StringProperty = "Property"
+        };
+
+      DefaultContractResolver skipCompilerGeneratedResolver = new DefaultContractResolver
+      {
+        DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public
+      };
+
+      string skipCompilerGeneratedJson = JsonConvert.SerializeObject(structTest, Formatting.Indented,
+        new JsonSerializerSettings { ContractResolver = skipCompilerGeneratedResolver });
+
+      Assert.AreEqual(@"{
+  ""StringField"": ""Field"",
+  ""IntField"": 1,
+  ""StringProperty"": ""Property"",
+  ""IntProperty"": 2
+}", skipCompilerGeneratedJson);
+
+      DefaultContractResolver includeCompilerGeneratedResolver = new DefaultContractResolver
+      {
+        DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
+        SerializeCompilerGeneratedMembers = true
+      };
+
+      string includeCompilerGeneratedJson = JsonConvert.SerializeObject(structTest, Formatting.Indented,
+        new JsonSerializerSettings { ContractResolver = includeCompilerGeneratedResolver });
+
+      Assert.AreEqual(@"{
+  ""StringField"": ""Field"",
+  ""IntField"": 1,
+  ""<StringProperty>k__BackingField"": ""Property"",
+  ""<IntProperty>k__BackingField"": 2,
+  ""StringProperty"": ""Property"",
+  ""IntProperty"": 2
+}", includeCompilerGeneratedJson);
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/DefaultValueHandlingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/DefaultValueHandlingTests.cs
@@ -1,133 +1,133 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class DefaultValueHandlingTests : TestFixtureBase
-  {
-    [Test]
-    public void SerializeInvoice()
-    {
-      Invoice invoice = new Invoice
-      {
-        Company = "Acme Ltd.",
-        Amount = 50.0m,
-        Paid = false,
-        FollowUpDays = 30,
-        FollowUpEmailAddress = string.Empty,
-        PaidDate = null
-      };
-
-      string included = JsonConvert.SerializeObject(invoice,
-        Formatting.Indented,
-        new JsonSerializerSettings { });
-
-      // {
-      //   "Company": "Acme Ltd.",
-      //   "Amount": 50.0,
-      //   "Paid": false,
-      //   "PaidDate": null,
-      //   "FollowUpDays": 30,
-      //   "FollowUpEmailAddress": ""
-      // }
-
-      string ignored = JsonConvert.SerializeObject(invoice,
-        Formatting.Indented,
-        new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
-
-      // {
-      //   "Company": "Acme Ltd.",
-      //   "Amount": 50.0
-      // }
-
-      Console.WriteLine(included);
-      Console.WriteLine(ignored);
-    }
-
-    [Test]
-    public void SerializeDefaultValueAttributeTest()
-    {
-      string json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass(),
-        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
-      Assert.AreEqual(@"{""TestField1"":0,""TestProperty1"":null}", json);
-
-      json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = int.MinValue, TestProperty1 = "NotDefault" },
-        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
-      Assert.AreEqual(@"{""TestField1"":-2147483648,""TestProperty1"":""NotDefault""}", json);
-
-      json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = 21, TestProperty1 = "NotDefault" },
-        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
-      Assert.AreEqual(@"{""TestProperty1"":""NotDefault""}", json);
-
-      json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = 21, TestProperty1 = "TestProperty1Value" },
-        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
-      Assert.AreEqual(@"{}", json);
-    }
-
-    [Test]
-    public void DeserializeDefaultValueAttributeTest()
-    {
-      string json = "{}";
-
-      DefaultValueAttributeTestClass c = JsonConvert.DeserializeObject<DefaultValueAttributeTestClass>(json, new JsonSerializerSettings
-        {
-          DefaultValueHandling = DefaultValueHandling.Populate
-        });
-      Assert.AreEqual("TestProperty1Value", c.TestProperty1);
-
-      c = JsonConvert.DeserializeObject<DefaultValueAttributeTestClass>(json, new JsonSerializerSettings
-      {
-        DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate
-      });
-      Assert.AreEqual("TestProperty1Value", c.TestProperty1);
-    }
-
-    [JsonObject]
-    public class NetworkUser
-    {
-      [JsonProperty(PropertyName = "userId")]
-      [DefaultValue(-1)]
-      public long GlobalId { get; set; }
-
-      [JsonProperty(PropertyName = "floatUserId")]
-      [DefaultValue(-1.0d)]
-      public float FloatGlobalId { get; set; }
-
-      [JsonProperty(PropertyName = "firstName")]
-      public string Firstname { get; set; }
-      [JsonProperty(PropertyName = "lastName")]
-      public string Lastname { get; set; }
-
-      public NetworkUser()
-      {
-        GlobalId = -1;
-        FloatGlobalId = -1.0f;
-      }
-    }
-
-    [Test]
-    public void IgnoreNumberTypeDifferencesWithDefaultValue()
-    {
-      NetworkUser user = new NetworkUser
-      {
-        Firstname = "blub"
-      };
-
-      string json = JsonConvert.SerializeObject(user, Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore });
-
-      Assert.AreEqual(@"{""firstName"":""blub""}", json);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class DefaultValueHandlingTests : TestFixtureBase
+  {
+    [Test]
+    public void SerializeInvoice()
+    {
+      Invoice invoice = new Invoice
+      {
+        Company = "Acme Ltd.",
+        Amount = 50.0m,
+        Paid = false,
+        FollowUpDays = 30,
+        FollowUpEmailAddress = string.Empty,
+        PaidDate = null
+      };
+
+      string included = JsonConvert.SerializeObject(invoice,
+        Formatting.Indented,
+        new JsonSerializerSettings { });
+
+      // {
+      //   "Company": "Acme Ltd.",
+      //   "Amount": 50.0,
+      //   "Paid": false,
+      //   "PaidDate": null,
+      //   "FollowUpDays": 30,
+      //   "FollowUpEmailAddress": ""
+      // }
+
+      string ignored = JsonConvert.SerializeObject(invoice,
+        Formatting.Indented,
+        new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
+
+      // {
+      //   "Company": "Acme Ltd.",
+      //   "Amount": 50.0
+      // }
+
+      Console.WriteLine(included);
+      Console.WriteLine(ignored);
+    }
+
+    [Test]
+    public void SerializeDefaultValueAttributeTest()
+    {
+      string json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass(),
+        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
+      Assert.AreEqual(@"{""TestField1"":0,""TestProperty1"":null}", json);
+
+      json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = int.MinValue, TestProperty1 = "NotDefault" },
+        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
+      Assert.AreEqual(@"{""TestField1"":-2147483648,""TestProperty1"":""NotDefault""}", json);
+
+      json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = 21, TestProperty1 = "NotDefault" },
+        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
+      Assert.AreEqual(@"{""TestProperty1"":""NotDefault""}", json);
+
+      json = JsonConvert.SerializeObject(new DefaultValueAttributeTestClass { TestField1 = 21, TestProperty1 = "TestProperty1Value" },
+        Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore });
+      Assert.AreEqual(@"{}", json);
+    }
+
+    [Test]
+    public void DeserializeDefaultValueAttributeTest()
+    {
+      string json = "{}";
+
+      DefaultValueAttributeTestClass c = JsonConvert.DeserializeObject<DefaultValueAttributeTestClass>(json, new JsonSerializerSettings
+        {
+          DefaultValueHandling = DefaultValueHandling.Populate
+        });
+      Assert.AreEqual("TestProperty1Value", c.TestProperty1);
+
+      c = JsonConvert.DeserializeObject<DefaultValueAttributeTestClass>(json, new JsonSerializerSettings
+      {
+        DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate
+      });
+      Assert.AreEqual("TestProperty1Value", c.TestProperty1);
+    }
+
+    [JsonObject]
+    public class NetworkUser
+    {
+      [JsonProperty(PropertyName = "userId")]
+      [DefaultValue(-1)]
+      public long GlobalId { get; set; }
+
+      [JsonProperty(PropertyName = "floatUserId")]
+      [DefaultValue(-1.0d)]
+      public float FloatGlobalId { get; set; }
+
+      [JsonProperty(PropertyName = "firstName")]
+      public string Firstname { get; set; }
+      [JsonProperty(PropertyName = "lastName")]
+      public string Lastname { get; set; }
+
+      public NetworkUser()
+      {
+        GlobalId = -1;
+        FloatGlobalId = -1.0f;
+      }
+    }
+
+    [Test]
+    public void IgnoreNumberTypeDifferencesWithDefaultValue()
+    {
+      NetworkUser user = new NetworkUser
+      {
+        Firstname = "blub"
+      };
+
+      string json = JsonConvert.SerializeObject(user, Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore });
+
+      Assert.AreEqual(@"{""firstName"":""blub""}", json);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/DynamicTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/DynamicTests.cs
@@ -1,289 +1,289 @@
-﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Dynamic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization.Formatters;
-using System.Text;
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-using Newtonsoft.Json.Utilities;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class DynamicTests : TestFixtureBase
-  {
-    public class DynamicChildObject
-    {
-      public string Text { get; set; }
-      public int Integer { get; set; }
-    }
-
-    public class TestDynamicObject : DynamicObject
-    {
-      private readonly Dictionary<string, object> _members;
-
-      public int Int;
-      public DynamicChildObject ChildObject { get; set; }
-
-      internal Dictionary<string, object> Members
-      {
-        get { return _members; }
-      }
-
-      public TestDynamicObject()
-      {
-        _members = new Dictionary<string, object>();
-      }
-
-      public override IEnumerable<string> GetDynamicMemberNames()
-      {
-        return _members.Keys.Union(new[] { "Int", "ChildObject" });
-      }
-
-      public override bool TryConvert(ConvertBinder binder, out object result)
-      {
-        Type targetType = binder.Type;
-
-        if (targetType == typeof(IDictionary<string, object>) ||
-            targetType == typeof(IDictionary))
-        {
-          result = new Dictionary<string, object>(_members);
-          return true;
-        }
-        else
-        {
-          return base.TryConvert(binder, out result);
-        }
-      }
-
-      public override bool TryDeleteMember(DeleteMemberBinder binder)
-      {
-        return _members.Remove(binder.Name);
-      }
-
-      public override bool TryGetMember(GetMemberBinder binder, out object result)
-      {
-        return _members.TryGetValue(binder.Name, out result);
-      }
-
-      public override bool TrySetMember(SetMemberBinder binder, object value)
-      {
-        _members[binder.Name] = value;
-        return true;
-      }
-    }
-
-    public class ErrorSettingDynamicObject : DynamicObject
-    {
-      public override bool TrySetMember(SetMemberBinder binder, object value)
-      {
-        return false;
-      }
-    }
-
-    [Test]
-    public void SerializeDynamicObject()
-    {
-      TestDynamicObject dynamicObject = new TestDynamicObject();
-
-      dynamic d = dynamicObject;
-      d.Int = 1;
-      d.Decimal = 99.9d;
-      d.ChildObject = new DynamicChildObject();
-
-      Dictionary<string, object> values = new Dictionary<string, object>();
-
-      foreach (string memberName in dynamicObject.GetDynamicMemberNames())
-      {
-        object value;
-        dynamicObject.TryGetMember(memberName, out value);
-
-        values.Add(memberName, value);
-      }
-
-      Assert.AreEqual(d.Int, values["Int"]);
-      Assert.AreEqual(d.Decimal, values["Decimal"]);
-      Assert.AreEqual(d.ChildObject, values["ChildObject"]);
-
-      string json = JsonConvert.SerializeObject(dynamicObject, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Decimal"": 99.9,
-  ""Int"": 1,
-  ""ChildObject"": {
-    ""Text"": null,
-    ""Integer"": 0
-  }
-}", json);
-
-      TestDynamicObject newDynamicObject = JsonConvert.DeserializeObject<TestDynamicObject>(json);
-      d = newDynamicObject;
-
-      Assert.AreEqual(99.9, d.Decimal);
-      Assert.AreEqual(1, d.Int);
-      Assert.AreEqual(dynamicObject.ChildObject.Integer, d.ChildObject.Integer);
-      Assert.AreEqual(dynamicObject.ChildObject.Text, d.ChildObject.Text);
-    }
-
-    [Test]
-    public void SerializeDynamicObjectWithObjectTracking()
-    {
-      dynamic o = new ExpandoObject();
-      o.Text = "Text!";
-      o.Integer = int.MaxValue;
-      o.DynamicChildObject = new DynamicChildObject
-        {
-          Integer = int.MinValue,
-          Text = "Child text!"
-        };
-
-      string json = JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings
-        {
-          TypeNameHandling = TypeNameHandling.All,
-          TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
-        });
-
-      Console.WriteLine(json);
-
-      string dynamicChildObjectTypeName = ReflectionUtils.GetTypeName(typeof(DynamicChildObject), FormatterAssemblyStyle.Full);
-      string expandoObjectTypeName = ReflectionUtils.GetTypeName(typeof(ExpandoObject), FormatterAssemblyStyle.Full);
-
-      Assert.AreEqual(@"{
-  ""$type"": """ + expandoObjectTypeName + @""",
-  ""Text"": ""Text!"",
-  ""Integer"": 2147483647,
-  ""DynamicChildObject"": {
-    ""$type"": """ + dynamicChildObjectTypeName + @""",
-    ""Text"": ""Child text!"",
-    ""Integer"": -2147483648
-  }
-}", json);
-
-      dynamic n = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
-        {
-          TypeNameHandling = TypeNameHandling.All,
-          TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
-        });
-
-      CustomAssert.IsInstanceOfType(typeof(ExpandoObject), n);
-      Assert.AreEqual("Text!", n.Text);
-      Assert.AreEqual(int.MaxValue, n.Integer);
-
-      CustomAssert.IsInstanceOfType(typeof(DynamicChildObject), n.DynamicChildObject);
-      Assert.AreEqual("Child text!", n.DynamicChildObject.Text);
-      Assert.AreEqual(int.MinValue, n.DynamicChildObject.Integer);
-    }
-
-    [Test]
-    public void NoPublicDefaultConstructor()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("Unable to find a default constructor to use for type System.Dynamic.DynamicObject. Line 2, position 18.",
-      () =>
-      {
-        var settings = new JsonSerializerSettings();
-        settings.NullValueHandling = NullValueHandling.Ignore;
-        var json = @"{
-  ""contributors"": null
-}";
-
-        JsonConvert.DeserializeObject<DynamicObject>(json, settings);
-      });
-    }
-
-    public class DictionaryDynamicObject : DynamicObject
-    {
-      public IDictionary<string, object> Values { get; private set; }
-
-      protected DictionaryDynamicObject()
-      {
-        Values = new Dictionary<string, object>();
-      }
-
-      public override bool TrySetMember(SetMemberBinder binder, object value)
-      {
-        Values[binder.Name] = value;
-        return true;
-      }
-    }
-
-    [Test]
-    public void AllowNonPublicDefaultConstructor()
-    {
-      var settings = new JsonSerializerSettings();
-      settings.ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor;
-
-      var json = @"{
-  ""contributors"": null,
-  ""retweeted"": false,
-  ""text"": ""Guys SX4 diesel is launched.what are your plans?catch us at #facebook http://bit.ly/dV3H1a #auto #car #maruti #india #delhi"",
-  ""in_reply_to_user_id_str"": null,
-  ""retweet_count"": 0,
-  ""geo"": null,
-  ""id_str"": ""40678260320768000"",
-  ""in_reply_to_status_id"": null,
-  ""source"": ""<a href=\""http://www.tweetdeck.com\"" rel=\""nofollow\"">TweetDeck</a>"",
-  ""created_at"": ""Thu Feb 24 07:43:47 +0000 2011"",
-  ""place"": null,
-  ""coordinates"": null,
-  ""truncated"": false,
-  ""favorited"": false,
-  ""user"": {
-    ""profile_background_image_url"": ""http://a1.twimg.com/profile_background_images/206944715/twitter_bg.jpg"",
-    ""url"": ""http://bit.ly/dcFwWC"",
-    ""screen_name"": ""marutisuzukisx4"",
-    ""verified"": false,
-    ""friends_count"": 45,
-    ""description"": ""This is the Official Maruti Suzuki SX4 Twitter ID! Men are Back - mail us on social (at) sx4bymaruti (dot) com"",
-    ""follow_request_sent"": null,
-    ""time_zone"": ""Chennai"",
-    ""profile_text_color"": ""333333"",
-    ""location"": ""India"",
-    ""notifications"": null,
-    ""profile_sidebar_fill_color"": ""efefef"",
-    ""id_str"": ""196143889"",
-    ""contributors_enabled"": false,
-    ""lang"": ""en"",
-    ""profile_background_tile"": false,
-    ""created_at"": ""Tue Sep 28 12:55:15 +0000 2010"",
-    ""followers_count"": 117,
-    ""show_all_inline_media"": true,
-    ""listed_count"": 1,
-    ""geo_enabled"": true,
-    ""profile_link_color"": ""009999"",
-    ""profile_sidebar_border_color"": ""eeeeee"",
-    ""protected"": false,
-    ""name"": ""Maruti Suzuki SX4"",
-    ""statuses_count"": 637,
-    ""following"": null,
-    ""profile_use_background_image"": true,
-    ""profile_image_url"": ""http://a3.twimg.com/profile_images/1170694644/Slide1_normal.JPG"",
-    ""id"": 196143889,
-    ""is_translator"": false,
-    ""utc_offset"": 19800,
-    ""favourites_count"": 0,
-    ""profile_background_color"": ""131516""
-  },
-  ""in_reply_to_screen_name"": null,
-  ""id"": 40678260320768000,
-  ""in_reply_to_status_id_str"": null,
-  ""in_reply_to_user_id"": null
-}";
-
-      DictionaryDynamicObject foo = JsonConvert.DeserializeObject<DictionaryDynamicObject>(json, settings);
-
-      Assert.AreEqual(false, foo.Values["retweeted"]);
-    }
-  }
-}
+﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Runtime.CompilerServices;
+using System.Runtime.Serialization.Formatters;
+using System.Text;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+using Newtonsoft.Json.Utilities;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class DynamicTests : TestFixtureBase
+  {
+    public class DynamicChildObject
+    {
+      public string Text { get; set; }
+      public int Integer { get; set; }
+    }
+
+    public class TestDynamicObject : DynamicObject
+    {
+      private readonly Dictionary<string, object> _members;
+
+      public int Int;
+      public DynamicChildObject ChildObject { get; set; }
+
+      internal Dictionary<string, object> Members
+      {
+        get { return _members; }
+      }
+
+      public TestDynamicObject()
+      {
+        _members = new Dictionary<string, object>();
+      }
+
+      public override IEnumerable<string> GetDynamicMemberNames()
+      {
+        return _members.Keys.Union(new[] { "Int", "ChildObject" });
+      }
+
+      public override bool TryConvert(ConvertBinder binder, out object result)
+      {
+        Type targetType = binder.Type;
+
+        if (targetType == typeof(IDictionary<string, object>) ||
+            targetType == typeof(IDictionary))
+        {
+          result = new Dictionary<string, object>(_members);
+          return true;
+        }
+        else
+        {
+          return base.TryConvert(binder, out result);
+        }
+      }
+
+      public override bool TryDeleteMember(DeleteMemberBinder binder)
+      {
+        return _members.Remove(binder.Name);
+      }
+
+      public override bool TryGetMember(GetMemberBinder binder, out object result)
+      {
+        return _members.TryGetValue(binder.Name, out result);
+      }
+
+      public override bool TrySetMember(SetMemberBinder binder, object value)
+      {
+        _members[binder.Name] = value;
+        return true;
+      }
+    }
+
+    public class ErrorSettingDynamicObject : DynamicObject
+    {
+      public override bool TrySetMember(SetMemberBinder binder, object value)
+      {
+        return false;
+      }
+    }
+
+    [Test]
+    public void SerializeDynamicObject()
+    {
+      TestDynamicObject dynamicObject = new TestDynamicObject();
+
+      dynamic d = dynamicObject;
+      d.Int = 1;
+      d.Decimal = 99.9d;
+      d.ChildObject = new DynamicChildObject();
+
+      Dictionary<string, object> values = new Dictionary<string, object>();
+
+      foreach (string memberName in dynamicObject.GetDynamicMemberNames())
+      {
+        object value;
+        dynamicObject.TryGetMember(memberName, out value);
+
+        values.Add(memberName, value);
+      }
+
+      Assert.AreEqual(d.Int, values["Int"]);
+      Assert.AreEqual(d.Decimal, values["Decimal"]);
+      Assert.AreEqual(d.ChildObject, values["ChildObject"]);
+
+      string json = JsonConvert.SerializeObject(dynamicObject, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Decimal"": 99.9,
+  ""Int"": 1,
+  ""ChildObject"": {
+    ""Text"": null,
+    ""Integer"": 0
+  }
+}", json);
+
+      TestDynamicObject newDynamicObject = JsonConvert.DeserializeObject<TestDynamicObject>(json);
+      d = newDynamicObject;
+
+      Assert.AreEqual(99.9, d.Decimal);
+      Assert.AreEqual(1, d.Int);
+      Assert.AreEqual(dynamicObject.ChildObject.Integer, d.ChildObject.Integer);
+      Assert.AreEqual(dynamicObject.ChildObject.Text, d.ChildObject.Text);
+    }
+
+    [Test]
+    public void SerializeDynamicObjectWithObjectTracking()
+    {
+      dynamic o = new ExpandoObject();
+      o.Text = "Text!";
+      o.Integer = int.MaxValue;
+      o.DynamicChildObject = new DynamicChildObject
+        {
+          Integer = int.MinValue,
+          Text = "Child text!"
+        };
+
+      string json = JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings
+        {
+          TypeNameHandling = TypeNameHandling.All,
+          TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
+        });
+
+      Console.WriteLine(json);
+
+      string dynamicChildObjectTypeName = ReflectionUtils.GetTypeName(typeof(DynamicChildObject), FormatterAssemblyStyle.Full);
+      string expandoObjectTypeName = ReflectionUtils.GetTypeName(typeof(ExpandoObject), FormatterAssemblyStyle.Full);
+
+      Assert.AreEqual(@"{
+  ""$type"": """ + expandoObjectTypeName + @""",
+  ""Text"": ""Text!"",
+  ""Integer"": 2147483647,
+  ""DynamicChildObject"": {
+    ""$type"": """ + dynamicChildObjectTypeName + @""",
+    ""Text"": ""Child text!"",
+    ""Integer"": -2147483648
+  }
+}", json);
+
+      dynamic n = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
+        {
+          TypeNameHandling = TypeNameHandling.All,
+          TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
+        });
+
+      CustomAssert.IsInstanceOfType(typeof(ExpandoObject), n);
+      Assert.AreEqual("Text!", n.Text);
+      Assert.AreEqual(int.MaxValue, n.Integer);
+
+      CustomAssert.IsInstanceOfType(typeof(DynamicChildObject), n.DynamicChildObject);
+      Assert.AreEqual("Child text!", n.DynamicChildObject.Text);
+      Assert.AreEqual(int.MinValue, n.DynamicChildObject.Integer);
+    }
+
+    [Test]
+    public void NoPublicDefaultConstructor()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("Unable to find a default constructor to use for type System.Dynamic.DynamicObject. Line 2, position 18.",
+      () =>
+      {
+        var settings = new JsonSerializerSettings();
+        settings.NullValueHandling = NullValueHandling.Ignore;
+        var json = @"{
+  ""contributors"": null
+}";
+
+        JsonConvert.DeserializeObject<DynamicObject>(json, settings);
+      });
+    }
+
+    public class DictionaryDynamicObject : DynamicObject
+    {
+      public IDictionary<string, object> Values { get; private set; }
+
+      protected DictionaryDynamicObject()
+      {
+        Values = new Dictionary<string, object>();
+      }
+
+      public override bool TrySetMember(SetMemberBinder binder, object value)
+      {
+        Values[binder.Name] = value;
+        return true;
+      }
+    }
+
+    [Test]
+    public void AllowNonPublicDefaultConstructor()
+    {
+      var settings = new JsonSerializerSettings();
+      settings.ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor;
+
+      var json = @"{
+  ""contributors"": null,
+  ""retweeted"": false,
+  ""text"": ""Guys SX4 diesel is launched.what are your plans?catch us at #facebook http://bit.ly/dV3H1a #auto #car #maruti #india #delhi"",
+  ""in_reply_to_user_id_str"": null,
+  ""retweet_count"": 0,
+  ""geo"": null,
+  ""id_str"": ""40678260320768000"",
+  ""in_reply_to_status_id"": null,
+  ""source"": ""<a href=\""http://www.tweetdeck.com\"" rel=\""nofollow\"">TweetDeck</a>"",
+  ""created_at"": ""Thu Feb 24 07:43:47 +0000 2011"",
+  ""place"": null,
+  ""coordinates"": null,
+  ""truncated"": false,
+  ""favorited"": false,
+  ""user"": {
+    ""profile_background_image_url"": ""http://a1.twimg.com/profile_background_images/206944715/twitter_bg.jpg"",
+    ""url"": ""http://bit.ly/dcFwWC"",
+    ""screen_name"": ""marutisuzukisx4"",
+    ""verified"": false,
+    ""friends_count"": 45,
+    ""description"": ""This is the Official Maruti Suzuki SX4 Twitter ID! Men are Back - mail us on social (at) sx4bymaruti (dot) com"",
+    ""follow_request_sent"": null,
+    ""time_zone"": ""Chennai"",
+    ""profile_text_color"": ""333333"",
+    ""location"": ""India"",
+    ""notifications"": null,
+    ""profile_sidebar_fill_color"": ""efefef"",
+    ""id_str"": ""196143889"",
+    ""contributors_enabled"": false,
+    ""lang"": ""en"",
+    ""profile_background_tile"": false,
+    ""created_at"": ""Tue Sep 28 12:55:15 +0000 2010"",
+    ""followers_count"": 117,
+    ""show_all_inline_media"": true,
+    ""listed_count"": 1,
+    ""geo_enabled"": true,
+    ""profile_link_color"": ""009999"",
+    ""profile_sidebar_border_color"": ""eeeeee"",
+    ""protected"": false,
+    ""name"": ""Maruti Suzuki SX4"",
+    ""statuses_count"": 637,
+    ""following"": null,
+    ""profile_use_background_image"": true,
+    ""profile_image_url"": ""http://a3.twimg.com/profile_images/1170694644/Slide1_normal.JPG"",
+    ""id"": 196143889,
+    ""is_translator"": false,
+    ""utc_offset"": 19800,
+    ""favourites_count"": 0,
+    ""profile_background_color"": ""131516""
+  },
+  ""in_reply_to_screen_name"": null,
+  ""id"": 40678260320768000,
+  ""in_reply_to_status_id_str"": null,
+  ""in_reply_to_user_id"": null
+}";
+
+      DictionaryDynamicObject foo = JsonConvert.DeserializeObject<DictionaryDynamicObject>(json, settings);
+
+      Assert.AreEqual(false, foo.Values["retweeted"]);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/EntitiesSerializationTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/EntitiesSerializationTests.cs
@@ -1,321 +1,321 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !(NET35 || NET20 || SILVERLIGHT || NETFX_CORE)
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Converters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class EntitiesSerializationTests : TestFixtureBase
-  {
-    [Test]
-    public void SerializeEntity()
-    {
-      Folder rootFolder = CreateEntitiesTestData();
-
-      string json = JsonConvert.SerializeObject(rootFolder, Formatting.Indented, new IsoDateTimeConverter());
-
-      string expected = @"{
-  ""$id"": ""1"",
-  ""FolderId"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e"",
-  ""Name"": ""Root folder"",
-  ""Description"": ""Description!"",
-  ""CreatedDate"": ""2000-12-10T10:50:00Z"",
-  ""Files"": [],
-  ""ChildFolders"": [
-    {
-      ""$id"": ""2"",
-      ""FolderId"": ""484936e2-7cbb-4592-93ff-b2103e5705e4"",
-      ""Name"": ""Child folder"",
-      ""Description"": ""Description!"",
-      ""CreatedDate"": ""2001-11-20T10:50:00Z"",
-      ""Files"": [
-        {
-          ""$id"": ""3"",
-          ""FileId"": ""cc76d734-49f1-4616-bb38-41514228ac6c"",
-          ""Name"": ""File 1"",
-          ""Description"": ""Description!"",
-          ""CreatedDate"": ""2002-10-30T10:50:00Z"",
-          ""Folder"": {
-            ""$ref"": ""2""
-          },
-          ""EntityKey"": {
-            ""$id"": ""4"",
-            ""EntitySetName"": ""File"",
-            ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
-            ""EntityKeyValues"": [
-              {
-                ""Key"": ""FileId"",
-                ""Type"": ""System.Guid"",
-                ""Value"": ""cc76d734-49f1-4616-bb38-41514228ac6c""
-              }
-            ]
-          }
-        }
-      ],
-      ""ChildFolders"": [],
-      ""ParentFolder"": {
-        ""$ref"": ""1""
-      },
-      ""EntityKey"": {
-        ""$id"": ""5"",
-        ""EntitySetName"": ""Folder"",
-        ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
-        ""EntityKeyValues"": [
-          {
-            ""Key"": ""FolderId"",
-            ""Type"": ""System.Guid"",
-            ""Value"": ""484936e2-7cbb-4592-93ff-b2103e5705e4""
-          }
-        ]
-      }
-    }
-  ],
-  ""ParentFolder"": null,
-  ""EntityKey"": {
-    ""$id"": ""6"",
-    ""EntitySetName"": ""Folder"",
-    ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
-    ""EntityKeyValues"": [
-      {
-        ""Key"": ""FolderId"",
-        ""Type"": ""System.Guid"",
-        ""Value"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e""
-      }
-    ]
-  }
-}";
-
-      Assert.AreEqual(expected, json);
-    }
-
-    [Test]
-    public void DeserializeEntity()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""FolderId"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e"",
-  ""Name"": ""Root folder"",
-  ""Description"": ""Description!"",
-  ""CreatedDate"": ""2000-12-10T10:50:00Z"",
-  ""Files"": [],
-  ""ChildFolders"": [
-    {
-      ""$id"": ""2"",
-      ""FolderId"": ""484936e2-7cbb-4592-93ff-b2103e5705e4"",
-      ""Name"": ""Child folder"",
-      ""Description"": ""Description!"",
-      ""CreatedDate"": ""2001-11-20T10:50:00Z"",
-      ""Files"": [
-        {
-          ""$id"": ""3"",
-          ""FileId"": ""cc76d734-49f1-4616-bb38-41514228ac6c"",
-          ""Name"": ""File 1"",
-          ""Description"": ""Description!"",
-          ""CreatedDate"": ""2002-10-30T10:50:00Z"",
-          ""Folder"": {
-            ""$ref"": ""2""
-          },
-          ""EntityKey"": {
-            ""$id"": ""4"",
-            ""EntitySetName"": ""File"",
-            ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
-            ""EntityKeyValues"": [
-              {
-                ""Key"": ""FileId"",
-                ""Type"": ""System.Guid"",
-                ""Value"": ""cc76d734-49f1-4616-bb38-41514228ac6c""
-              }
-            ]
-          }
-        }
-      ],
-      ""ChildFolders"": [],
-      ""ParentFolder"": {
-        ""$ref"": ""1""
-      },
-      ""EntityKey"": {
-        ""$id"": ""5"",
-        ""EntitySetName"": ""Folder"",
-        ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
-        ""EntityKeyValues"": [
-          {
-            ""Key"": ""FolderId"",
-            ""Type"": ""System.Guid"",
-            ""Value"": ""484936e2-7cbb-4592-93ff-b2103e5705e4""
-          }
-        ]
-      }
-    }
-  ],
-  ""ParentFolder"": null,
-  ""EntityKey"": {
-    ""$id"": ""6"",
-    ""EntitySetName"": ""Folder"",
-    ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
-    ""EntityKeyValues"": [
-      {
-        ""Key"": ""FolderId"",
-        ""Type"": ""System.Guid"",
-        ""Value"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e""
-      }
-    ]
-  }
-}";
-
-      Folder f = JsonConvert.DeserializeObject<Folder>(json, new IsoDateTimeConverter());
-
-      Assert.IsNotNull(f);
-      Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), f.FolderId);
-      Assert.AreEqual("Folder", f.EntityKey.EntitySetName);
-      Assert.AreEqual("DataServicesTestDatabaseEntities", f.EntityKey.EntityContainerName);
-      Assert.AreEqual("Folder", f.EntityKey.EntitySetName);
-      Assert.AreEqual(false, f.EntityKey.IsTemporary);
-      Assert.AreEqual(1, f.EntityKey.EntityKeyValues.Length);
-      Assert.AreEqual("FolderId", f.EntityKey.EntityKeyValues[0].Key);
-      Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), f.EntityKey.EntityKeyValues[0].Value);
-      Assert.AreEqual("Root folder", f.Name);
-      Assert.AreEqual(new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc), f.CreatedDate);
-      Assert.AreEqual(null, f.ParentFolder);
-      Assert.AreEqual(1, f.ChildFolders.Count);
-
-      Folder childFolder = f.ChildFolders.ElementAt(0);
-
-      Assert.AreEqual("Child folder", childFolder.Name);
-      Assert.AreEqual("Description!", childFolder.Description);
-      Assert.AreEqual(f, childFolder.ParentFolder);
-      Assert.AreEqual(f, childFolder.ParentFolderReference.Value);
-      // is this a problem?
-      Assert.AreEqual(null, childFolder.ParentFolderReference.EntityKey);
-    }
-
-    [Test]
-    public void SerializeMultiValueEntityKey()
-    {
-      EntityKey e = new EntityKey("DataServicesTestDatabaseEntities.Folder",
-                                  new List<EntityKeyMember>
-                                    {
-                                      new EntityKeyMember("GuidId", new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E")),
-                                      new EntityKeyMember("IntId", int.MaxValue),
-                                      new EntityKeyMember("LongId", long.MaxValue),
-                                      new EntityKeyMember("StringId", "String!"),
-                                      new EntityKeyMember("DateTimeId", new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc))
-                                    });
-
-      string json = JsonConvert.SerializeObject(e, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""EntitySetName"": ""Folder"",
-  ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
-  ""EntityKeyValues"": [
-    {
-      ""Key"": ""GuidId"",
-      ""Type"": ""System.Guid"",
-      ""Value"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e""
-    },
-    {
-      ""Key"": ""IntId"",
-      ""Type"": ""System.Int32"",
-      ""Value"": ""2147483647""
-    },
-    {
-      ""Key"": ""LongId"",
-      ""Type"": ""System.Int64"",
-      ""Value"": ""9223372036854775807""
-    },
-    {
-      ""Key"": ""StringId"",
-      ""Type"": ""System.String"",
-      ""Value"": ""String!""
-    },
-    {
-      ""Key"": ""DateTimeId"",
-      ""Type"": ""System.DateTime"",
-      ""Value"": ""12/10/2000 10:50:00""
-    }
-  ]
-}", json);
-
-      EntityKey newKey = JsonConvert.DeserializeObject<EntityKey>(json);
-      Assert.IsFalse(ReferenceEquals(e, newKey));
-
-      Assert.AreEqual(5, newKey.EntityKeyValues.Length);
-      Assert.AreEqual("GuidId", newKey.EntityKeyValues[0].Key);
-      Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), newKey.EntityKeyValues[0].Value);
-      Assert.AreEqual("IntId", newKey.EntityKeyValues[1].Key);
-      Assert.AreEqual(int.MaxValue, newKey.EntityKeyValues[1].Value);
-      Assert.AreEqual("LongId", newKey.EntityKeyValues[2].Key);
-      Assert.AreEqual(long.MaxValue, newKey.EntityKeyValues[2].Value);
-      Assert.AreEqual("StringId", newKey.EntityKeyValues[3].Key);
-      Assert.AreEqual("String!", newKey.EntityKeyValues[3].Value);
-      Assert.AreEqual("DateTimeId", newKey.EntityKeyValues[4].Key);
-      Assert.AreEqual(new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc), newKey.EntityKeyValues[4].Value);
-    }
-
-    private Folder CreateEntitiesTestData()
-    {
-      Folder folder = new Folder();
-      folder.FolderId = new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E");
-      folder.EntityKey = new EntityKey("DataServicesTestDatabaseEntities.Folder", "FolderId", folder.FolderId);
-      folder.Name = "Root folder";
-      folder.Description = "Description!";
-      folder.CreatedDate = new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc);
-      
-      Folder childFolder = new Folder();
-      childFolder.FolderId = new Guid("484936E2-7CBB-4592-93FF-B2103E5705E4");
-      childFolder.EntityKey = new EntityKey("DataServicesTestDatabaseEntities.Folder", "FolderId", childFolder.FolderId);
-      childFolder.Name = "Child folder";
-      childFolder.Description = "Description!";
-      childFolder.CreatedDate = new DateTime(2001, 11, 20, 10, 50, 0, DateTimeKind.Utc);
-
-      folder.ChildFolders.Add(childFolder);
-
-      File file1 = new File();
-      file1.FileId = new Guid("CC76D734-49F1-4616-BB38-41514228AC6C");
-      file1.EntityKey = new EntityKey("DataServicesTestDatabaseEntities.File", "FileId", file1.FileId);
-      file1.Name = "File 1";
-      file1.Description = "Description!";
-      file1.CreatedDate = new DateTime(2002, 10, 30, 10, 50, 0, DateTimeKind.Utc);
-
-      childFolder.Files.Add(file1);
-      return folder;
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !(NET35 || NET20 || SILVERLIGHT || NETFX_CORE)
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Converters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class EntitiesSerializationTests : TestFixtureBase
+  {
+    [Test]
+    public void SerializeEntity()
+    {
+      Folder rootFolder = CreateEntitiesTestData();
+
+      string json = JsonConvert.SerializeObject(rootFolder, Formatting.Indented, new IsoDateTimeConverter());
+
+      string expected = @"{
+  ""$id"": ""1"",
+  ""FolderId"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e"",
+  ""Name"": ""Root folder"",
+  ""Description"": ""Description!"",
+  ""CreatedDate"": ""2000-12-10T10:50:00Z"",
+  ""Files"": [],
+  ""ChildFolders"": [
+    {
+      ""$id"": ""2"",
+      ""FolderId"": ""484936e2-7cbb-4592-93ff-b2103e5705e4"",
+      ""Name"": ""Child folder"",
+      ""Description"": ""Description!"",
+      ""CreatedDate"": ""2001-11-20T10:50:00Z"",
+      ""Files"": [
+        {
+          ""$id"": ""3"",
+          ""FileId"": ""cc76d734-49f1-4616-bb38-41514228ac6c"",
+          ""Name"": ""File 1"",
+          ""Description"": ""Description!"",
+          ""CreatedDate"": ""2002-10-30T10:50:00Z"",
+          ""Folder"": {
+            ""$ref"": ""2""
+          },
+          ""EntityKey"": {
+            ""$id"": ""4"",
+            ""EntitySetName"": ""File"",
+            ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
+            ""EntityKeyValues"": [
+              {
+                ""Key"": ""FileId"",
+                ""Type"": ""System.Guid"",
+                ""Value"": ""cc76d734-49f1-4616-bb38-41514228ac6c""
+              }
+            ]
+          }
+        }
+      ],
+      ""ChildFolders"": [],
+      ""ParentFolder"": {
+        ""$ref"": ""1""
+      },
+      ""EntityKey"": {
+        ""$id"": ""5"",
+        ""EntitySetName"": ""Folder"",
+        ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
+        ""EntityKeyValues"": [
+          {
+            ""Key"": ""FolderId"",
+            ""Type"": ""System.Guid"",
+            ""Value"": ""484936e2-7cbb-4592-93ff-b2103e5705e4""
+          }
+        ]
+      }
+    }
+  ],
+  ""ParentFolder"": null,
+  ""EntityKey"": {
+    ""$id"": ""6"",
+    ""EntitySetName"": ""Folder"",
+    ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
+    ""EntityKeyValues"": [
+      {
+        ""Key"": ""FolderId"",
+        ""Type"": ""System.Guid"",
+        ""Value"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e""
+      }
+    ]
+  }
+}";
+
+      Assert.AreEqual(expected, json);
+    }
+
+    [Test]
+    public void DeserializeEntity()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""FolderId"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e"",
+  ""Name"": ""Root folder"",
+  ""Description"": ""Description!"",
+  ""CreatedDate"": ""2000-12-10T10:50:00Z"",
+  ""Files"": [],
+  ""ChildFolders"": [
+    {
+      ""$id"": ""2"",
+      ""FolderId"": ""484936e2-7cbb-4592-93ff-b2103e5705e4"",
+      ""Name"": ""Child folder"",
+      ""Description"": ""Description!"",
+      ""CreatedDate"": ""2001-11-20T10:50:00Z"",
+      ""Files"": [
+        {
+          ""$id"": ""3"",
+          ""FileId"": ""cc76d734-49f1-4616-bb38-41514228ac6c"",
+          ""Name"": ""File 1"",
+          ""Description"": ""Description!"",
+          ""CreatedDate"": ""2002-10-30T10:50:00Z"",
+          ""Folder"": {
+            ""$ref"": ""2""
+          },
+          ""EntityKey"": {
+            ""$id"": ""4"",
+            ""EntitySetName"": ""File"",
+            ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
+            ""EntityKeyValues"": [
+              {
+                ""Key"": ""FileId"",
+                ""Type"": ""System.Guid"",
+                ""Value"": ""cc76d734-49f1-4616-bb38-41514228ac6c""
+              }
+            ]
+          }
+        }
+      ],
+      ""ChildFolders"": [],
+      ""ParentFolder"": {
+        ""$ref"": ""1""
+      },
+      ""EntityKey"": {
+        ""$id"": ""5"",
+        ""EntitySetName"": ""Folder"",
+        ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
+        ""EntityKeyValues"": [
+          {
+            ""Key"": ""FolderId"",
+            ""Type"": ""System.Guid"",
+            ""Value"": ""484936e2-7cbb-4592-93ff-b2103e5705e4""
+          }
+        ]
+      }
+    }
+  ],
+  ""ParentFolder"": null,
+  ""EntityKey"": {
+    ""$id"": ""6"",
+    ""EntitySetName"": ""Folder"",
+    ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
+    ""EntityKeyValues"": [
+      {
+        ""Key"": ""FolderId"",
+        ""Type"": ""System.Guid"",
+        ""Value"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e""
+      }
+    ]
+  }
+}";
+
+      Folder f = JsonConvert.DeserializeObject<Folder>(json, new IsoDateTimeConverter());
+
+      Assert.IsNotNull(f);
+      Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), f.FolderId);
+      Assert.AreEqual("Folder", f.EntityKey.EntitySetName);
+      Assert.AreEqual("DataServicesTestDatabaseEntities", f.EntityKey.EntityContainerName);
+      Assert.AreEqual("Folder", f.EntityKey.EntitySetName);
+      Assert.AreEqual(false, f.EntityKey.IsTemporary);
+      Assert.AreEqual(1, f.EntityKey.EntityKeyValues.Length);
+      Assert.AreEqual("FolderId", f.EntityKey.EntityKeyValues[0].Key);
+      Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), f.EntityKey.EntityKeyValues[0].Value);
+      Assert.AreEqual("Root folder", f.Name);
+      Assert.AreEqual(new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc), f.CreatedDate);
+      Assert.AreEqual(null, f.ParentFolder);
+      Assert.AreEqual(1, f.ChildFolders.Count);
+
+      Folder childFolder = f.ChildFolders.ElementAt(0);
+
+      Assert.AreEqual("Child folder", childFolder.Name);
+      Assert.AreEqual("Description!", childFolder.Description);
+      Assert.AreEqual(f, childFolder.ParentFolder);
+      Assert.AreEqual(f, childFolder.ParentFolderReference.Value);
+      // is this a problem?
+      Assert.AreEqual(null, childFolder.ParentFolderReference.EntityKey);
+    }
+
+    [Test]
+    public void SerializeMultiValueEntityKey()
+    {
+      EntityKey e = new EntityKey("DataServicesTestDatabaseEntities.Folder",
+                                  new List<EntityKeyMember>
+                                    {
+                                      new EntityKeyMember("GuidId", new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E")),
+                                      new EntityKeyMember("IntId", int.MaxValue),
+                                      new EntityKeyMember("LongId", long.MaxValue),
+                                      new EntityKeyMember("StringId", "String!"),
+                                      new EntityKeyMember("DateTimeId", new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc))
+                                    });
+
+      string json = JsonConvert.SerializeObject(e, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""EntitySetName"": ""Folder"",
+  ""EntityContainerName"": ""DataServicesTestDatabaseEntities"",
+  ""EntityKeyValues"": [
+    {
+      ""Key"": ""GuidId"",
+      ""Type"": ""System.Guid"",
+      ""Value"": ""a4e8ba80-eb24-4591-bb1c-62d3ad83701e""
+    },
+    {
+      ""Key"": ""IntId"",
+      ""Type"": ""System.Int32"",
+      ""Value"": ""2147483647""
+    },
+    {
+      ""Key"": ""LongId"",
+      ""Type"": ""System.Int64"",
+      ""Value"": ""9223372036854775807""
+    },
+    {
+      ""Key"": ""StringId"",
+      ""Type"": ""System.String"",
+      ""Value"": ""String!""
+    },
+    {
+      ""Key"": ""DateTimeId"",
+      ""Type"": ""System.DateTime"",
+      ""Value"": ""12/10/2000 10:50:00""
+    }
+  ]
+}", json);
+
+      EntityKey newKey = JsonConvert.DeserializeObject<EntityKey>(json);
+      Assert.IsFalse(ReferenceEquals(e, newKey));
+
+      Assert.AreEqual(5, newKey.EntityKeyValues.Length);
+      Assert.AreEqual("GuidId", newKey.EntityKeyValues[0].Key);
+      Assert.AreEqual(new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E"), newKey.EntityKeyValues[0].Value);
+      Assert.AreEqual("IntId", newKey.EntityKeyValues[1].Key);
+      Assert.AreEqual(int.MaxValue, newKey.EntityKeyValues[1].Value);
+      Assert.AreEqual("LongId", newKey.EntityKeyValues[2].Key);
+      Assert.AreEqual(long.MaxValue, newKey.EntityKeyValues[2].Value);
+      Assert.AreEqual("StringId", newKey.EntityKeyValues[3].Key);
+      Assert.AreEqual("String!", newKey.EntityKeyValues[3].Value);
+      Assert.AreEqual("DateTimeId", newKey.EntityKeyValues[4].Key);
+      Assert.AreEqual(new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc), newKey.EntityKeyValues[4].Value);
+    }
+
+    private Folder CreateEntitiesTestData()
+    {
+      Folder folder = new Folder();
+      folder.FolderId = new Guid("A4E8BA80-EB24-4591-BB1C-62D3AD83701E");
+      folder.EntityKey = new EntityKey("DataServicesTestDatabaseEntities.Folder", "FolderId", folder.FolderId);
+      folder.Name = "Root folder";
+      folder.Description = "Description!";
+      folder.CreatedDate = new DateTime(2000, 12, 10, 10, 50, 0, DateTimeKind.Utc);
+      
+      Folder childFolder = new Folder();
+      childFolder.FolderId = new Guid("484936E2-7CBB-4592-93FF-B2103E5705E4");
+      childFolder.EntityKey = new EntityKey("DataServicesTestDatabaseEntities.Folder", "FolderId", childFolder.FolderId);
+      childFolder.Name = "Child folder";
+      childFolder.Description = "Description!";
+      childFolder.CreatedDate = new DateTime(2001, 11, 20, 10, 50, 0, DateTimeKind.Utc);
+
+      folder.ChildFolders.Add(childFolder);
+
+      File file1 = new File();
+      file1.FileId = new Guid("CC76D734-49F1-4616-BB38-41514228AC6C");
+      file1.EntityKey = new EntityKey("DataServicesTestDatabaseEntities.File", "FileId", file1.FileId);
+      file1.Name = "File 1";
+      file1.Description = "Description!";
+      file1.CreatedDate = new DateTime(2002, 10, 30, 10, 50, 0, DateTimeKind.Utc);
+
+      childFolder.Files.Add(file1);
+      return folder;
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/JsonPropertyCollectionTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/JsonPropertyCollectionTests.cs
@@ -1,60 +1,60 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class JsonPropertyCollectionTests : TestFixtureBase
-  {
-    [Test]
-    public void AddPropertyIncludesPrivateImplementations()
-    {
-      var value = new PrivateImplementationBClass
-        {
-          OverriddenProperty = "OverriddenProperty",
-          PropertyA = "PropertyA",
-          PropertyB = "PropertyB"
-        };
-
-      var resolver = new DefaultContractResolver();
-      var contract = (JsonObjectContract) resolver.ResolveContract(value.GetType());
-
-      Assert.AreEqual(3, contract.Properties.Count);
-      Assert.IsTrue(contract.Properties.Contains("OverriddenProperty"), "Contract is missing property 'OverriddenProperty'");
-      Assert.IsTrue(contract.Properties.Contains("PropertyA"), "Contract is missing property 'PropertyA'");
-      Assert.IsTrue(contract.Properties.Contains("PropertyB"), "Contract is missing property 'PropertyB'");
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class JsonPropertyCollectionTests : TestFixtureBase
+  {
+    [Test]
+    public void AddPropertyIncludesPrivateImplementations()
+    {
+      var value = new PrivateImplementationBClass
+        {
+          OverriddenProperty = "OverriddenProperty",
+          PropertyA = "PropertyA",
+          PropertyB = "PropertyB"
+        };
+
+      var resolver = new DefaultContractResolver();
+      var contract = (JsonObjectContract) resolver.ResolveContract(value.GetType());
+
+      Assert.AreEqual(3, contract.Properties.Count);
+      Assert.IsTrue(contract.Properties.Contains("OverriddenProperty"), "Contract is missing property 'OverriddenProperty'");
+      Assert.IsTrue(contract.Properties.Contains("PropertyA"), "Contract is missing property 'PropertyA'");
+      Assert.IsTrue(contract.Properties.Contains("PropertyB"), "Contract is missing property 'PropertyB'");
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs
@@ -1,5965 +1,5965 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
-using System.Collections.Concurrent;
-#endif
-using System.Collections.Generic;
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-using System.ComponentModel.DataAnnotations;
-using System.Configuration;
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization.Formatters;
-using System.Threading;
-using System.Web.Script.Serialization;
-#endif
-using System.Text;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json;
-using System.IO;
-using System.Collections;
-using System.Xml;
-using System.Xml.Serialization;
-using System.Collections.ObjectModel;
-using Newtonsoft.Json.Bson;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Converters;
-#if !PocketPC && !NET20 && !WINDOWS_PHONE
-using System.Runtime.Serialization.Json;
-#endif
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-using System.Runtime.Serialization;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-using System.Reflection;
-#if !NET20 && !SILVERLIGHT
-using System.Xml.Linq;
-using System.Text.RegularExpressions;
-using System.Collections.Specialized;
-using System.Linq.Expressions;
-#endif
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System.Dynamic;
-using System.ComponentModel;
-#endif
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class JsonSerializerTest : TestFixtureBase
-  {
-    [Test]
-    public void PersonTypedObjectDeserialization()
-    {
-      Store store = new Store();
-
-      string jsonText = JsonConvert.SerializeObject(store);
-
-      Store deserializedStore = (Store) JsonConvert.DeserializeObject(jsonText, typeof (Store));
-
-      Assert.AreEqual(store.Establised, deserializedStore.Establised);
-      Assert.AreEqual(store.product.Count, deserializedStore.product.Count);
-
-      Console.WriteLine(jsonText);
-    }
-
-    [Test]
-    public void TypedObjectDeserialization()
-    {
-      Product product = new Product();
-
-      product.Name = "Apple";
-      product.ExpiryDate = new DateTime(2008, 12, 28);
-      product.Price = 3.99M;
-      product.Sizes = new string[] {"Small", "Medium", "Large"};
-
-      string output = JsonConvert.SerializeObject(product);
-      //{
-      //  "Name": "Apple",
-      //  "ExpiryDate": "\/Date(1230375600000+1300)\/",
-      //  "Price": 3.99,
-      //  "Sizes": [
-      //    "Small",
-      //    "Medium",
-      //    "Large"
-      //  ]
-      //}
-
-      Product deserializedProduct = (Product) JsonConvert.DeserializeObject(output, typeof (Product));
-
-      Assert.AreEqual("Apple", deserializedProduct.Name);
-      Assert.AreEqual(new DateTime(2008, 12, 28), deserializedProduct.ExpiryDate);
-      Assert.AreEqual(3.99m, deserializedProduct.Price);
-      Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
-      Assert.AreEqual("Medium", deserializedProduct.Sizes[1]);
-      Assert.AreEqual("Large", deserializedProduct.Sizes[2]);
-    }
-
-    //[Test]
-    //public void Advanced()
-    //{
-    //  Product product = new Product();
-    //  product.ExpiryDate = new DateTime(2008, 12, 28);
-
-    //  JsonSerializer serializer = new JsonSerializer();
-    //  serializer.Converters.Add(new JavaScriptDateTimeConverter());
-    //  serializer.NullValueHandling = NullValueHandling.Ignore;
-
-    //  using (StreamWriter sw = new StreamWriter(@"c:\json.txt"))
-    //  using (JsonWriter writer = new JsonTextWriter(sw))
-    //  {
-    //    serializer.Serialize(writer, product);
-    //    // {"ExpiryDate":new Date(1230375600000),"Price":0}
-    //  }
-    //}
-
-    [Test]
-    public void JsonConvertSerializer()
-    {
-      string value = @"{""Name"":""Orange"", ""Price"":3.99, ""ExpiryDate"":""01/24/2010 12:00:00""}";
-
-      Product p = JsonConvert.DeserializeObject(value, typeof (Product)) as Product;
-
-      Assert.AreEqual("Orange", p.Name);
-      Assert.AreEqual(new DateTime(2010, 1, 24, 12, 0, 0), p.ExpiryDate);
-      Assert.AreEqual(3.99m, p.Price);
-    }
-
-    [Test]
-    public void DeserializeJavaScriptDate()
-    {
-      DateTime dateValue = new DateTime(2010, 3, 30);
-      Dictionary<string, object> testDictionary = new Dictionary<string, object>();
-      testDictionary["date"] = dateValue;
-
-      string jsonText = JsonConvert.SerializeObject(testDictionary);
-
-#if !PocketPC && !NET20 && !WINDOWS_PHONE
-      MemoryStream ms = new MemoryStream();
-      DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof (Dictionary<string, object>));
-      serializer.WriteObject(ms, testDictionary);
-
-      byte[] data = ms.ToArray();
-      string output = Encoding.UTF8.GetString(data, 0, data.Length);
-#endif
-
-      Dictionary<string, object> deserializedDictionary = (Dictionary<string, object>) JsonConvert.DeserializeObject(jsonText, typeof (Dictionary<string, object>));
-      DateTime deserializedDate = (DateTime) deserializedDictionary["date"];
-
-      Assert.AreEqual(dateValue, deserializedDate);
-    }
-
-    [Test]
-    public void TestMethodExecutorObject()
-    {
-      MethodExecutorObject executorObject = new MethodExecutorObject();
-      executorObject.serverClassName = "BanSubs";
-      executorObject.serverMethodParams = new object[] {"21321546", "101", "1236", "D:\\1.txt"};
-      executorObject.clientGetResultFunction = "ClientBanSubsCB";
-
-      string output = JsonConvert.SerializeObject(executorObject);
-
-      MethodExecutorObject executorObject2 = JsonConvert.DeserializeObject(output, typeof (MethodExecutorObject)) as MethodExecutorObject;
-
-      Assert.AreNotSame(executorObject, executorObject2);
-      Assert.AreEqual(executorObject2.serverClassName, "BanSubs");
-      Assert.AreEqual(executorObject2.serverMethodParams.Length, 4);
-      CustomAssert.Contains(executorObject2.serverMethodParams, "101");
-      Assert.AreEqual(executorObject2.clientGetResultFunction, "ClientBanSubsCB");
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void HashtableDeserialization()
-    {
-      string value = @"{""Name"":""Orange"", ""Price"":3.99, ""ExpiryDate"":""01/24/2010 12:00:00""}";
-
-      Hashtable p = JsonConvert.DeserializeObject(value, typeof (Hashtable)) as Hashtable;
-
-      Assert.AreEqual("Orange", p["Name"].ToString());
-    }
-
-    [Test]
-    public void TypedHashtableDeserialization()
-    {
-      string value = @"{""Name"":""Orange"", ""Hash"":{""ExpiryDate"":""01/24/2010 12:00:00"",""UntypedArray"":[""01/24/2010 12:00:00""]}}";
-
-      TypedSubHashtable p = JsonConvert.DeserializeObject(value, typeof (TypedSubHashtable)) as TypedSubHashtable;
-
-      Assert.AreEqual("01/24/2010 12:00:00", p.Hash["ExpiryDate"].ToString());
-      Assert.AreEqual(@"[
-  ""01/24/2010 12:00:00""
-]", p.Hash["UntypedArray"].ToString());
-    }
-#endif
-
-    [Test]
-    public void SerializeDeserializeGetOnlyProperty()
-    {
-      string value = JsonConvert.SerializeObject(new GetOnlyPropertyClass());
-
-      GetOnlyPropertyClass c = JsonConvert.DeserializeObject<GetOnlyPropertyClass>(value);
-
-      Assert.AreEqual(c.Field, "Field");
-      Assert.AreEqual(c.GetOnlyProperty, "GetOnlyProperty");
-    }
-
-    [Test]
-    public void SerializeDeserializeSetOnlyProperty()
-    {
-      string value = JsonConvert.SerializeObject(new SetOnlyPropertyClass());
-
-      SetOnlyPropertyClass c = JsonConvert.DeserializeObject<SetOnlyPropertyClass>(value);
-
-      Assert.AreEqual(c.Field, "Field");
-    }
-
-    [Test]
-    public void JsonIgnoreAttributeTest()
-    {
-      string json = JsonConvert.SerializeObject(new JsonIgnoreAttributeTestClass());
-
-      Assert.AreEqual(@"{""Field"":0,""Property"":21}", json);
-
-      JsonIgnoreAttributeTestClass c = JsonConvert.DeserializeObject<JsonIgnoreAttributeTestClass>(@"{""Field"":99,""Property"":-1,""IgnoredField"":-1,""IgnoredObject"":[1,2,3,4,5]}");
-
-      Assert.AreEqual(0, c.IgnoredField);
-      Assert.AreEqual(99, c.Field);
-    }
-
-    [Test]
-    public void GoogleSearchAPI()
-    {
-      string json = @"{
-    results:
-        [
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://www.google.com/"",
-                url : ""http://www.google.com/"",
-                visibleUrl : ""www.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:zhool8dxBV4J:www.google.com"",
-                title : ""Google"",
-                titleNoFormatting : ""Google"",
-                content : ""Enables users to search the Web, Usenet, and 
-images. Features include PageRank,   caching and translation of 
-results, and an option to find similar pages.""
-            },
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://news.google.com/"",
-                url : ""http://news.google.com/"",
-                visibleUrl : ""news.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:Va_XShOz_twJ:news.google.com"",
-                title : ""Google News"",
-                titleNoFormatting : ""Google News"",
-                content : ""Aggregated headlines and a search engine of many of the world's news sources.""
-            },
-            
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://groups.google.com/"",
-                url : ""http://groups.google.com/"",
-                visibleUrl : ""groups.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:x2uPD3hfkn0J:groups.google.com"",
-                title : ""Google Groups"",
-                titleNoFormatting : ""Google Groups"",
-                content : ""Enables users to search and browse the Usenet 
-archives which consist of over 700   million messages, and post new 
-comments.""
-            },
-            
-            {
-                GsearchResultClass:""GwebSearch"",
-                unescapedUrl : ""http://maps.google.com/"",
-                url : ""http://maps.google.com/"",
-                visibleUrl : ""maps.google.com"",
-                cacheUrl : 
-""http://www.google.com/search?q=cache:dkf5u2twBXIJ:maps.google.com"",
-                title : ""Google Maps"",
-                titleNoFormatting : ""Google Maps"",
-                content : ""Provides directions, interactive maps, and 
-satellite/aerial imagery of the United   States. Can also search by 
-keyword such as type of business.""
-            }
-        ],
-        
-    adResults:
-        [
-            {
-                GsearchResultClass:""GwebSearch.ad"",
-                title : ""Gartner Symposium/ITxpo"",
-                content1 : ""Meet brilliant Gartner IT analysts"",
-                content2 : ""20-23 May 2007- Barcelona, Spain"",
-                url : 
-""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
-
-                impressionUrl : 
-""http://www.google.com/uds/css/ad-indicator-on.gif?ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB"", 
-
-                unescapedUrl : 
-""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
-
-                visibleUrl : ""www.gartner.com""
-            }
-        ]
-}
-";
-      object o = JsonConvert.DeserializeObject(json);
-      string s = string.Empty;
-      s += s;
-    }
-
-    [Test]
-    public void TorrentDeserializeTest()
-    {
-      string jsonText = @"{
-"""":"""",
-""label"": [
-       [""SomeName"",6]
-],
-""torrents"": [
-       [""192D99A5C943555CB7F00A852821CF6D6DB3008A"",201,""filename.avi"",178311826,1000,178311826,72815250,408,1603,7,121430,""NameOfLabelPrevioslyDefined"",3,6,0,8,128954,-1,0],
-],
-""torrentc"": ""1816000723""
-}";
-
-      JObject o = (JObject) JsonConvert.DeserializeObject(jsonText);
-      Assert.AreEqual(4, o.Children().Count());
-
-      JToken torrentsArray = (JToken) o["torrents"];
-      JToken nestedTorrentsArray = (JToken) torrentsArray[0];
-      Assert.AreEqual(nestedTorrentsArray.Children().Count(), 19);
-    }
-
-    [Test]
-    public void JsonPropertyClassSerialize()
-    {
-      JsonPropertyClass test = new JsonPropertyClass();
-      test.Pie = "Delicious";
-      test.SweetCakesCount = int.MaxValue;
-
-      string jsonText = JsonConvert.SerializeObject(test);
-
-      Assert.AreEqual(@"{""pie"":""Delicious"",""pie1"":""PieChart!"",""sweet_cakes_count"":2147483647}", jsonText);
-
-      JsonPropertyClass test2 = JsonConvert.DeserializeObject<JsonPropertyClass>(jsonText);
-
-      Assert.AreEqual(test.Pie, test2.Pie);
-      Assert.AreEqual(test.SweetCakesCount, test2.SweetCakesCount);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"A member with the name 'pie' already exists on 'Newtonsoft.Json.Tests.TestObjects.BadJsonPropertyClass'. Use the JsonPropertyAttribute to specify another name."
-#endif
-      )]
-    public void BadJsonPropertyClassSerialize()
-    {
-      JsonConvert.SerializeObject(new BadJsonPropertyClass());
-    }
-
-    [Test]
-    public void InheritedListSerialize()
-    {
-      Article a1 = new Article("a1");
-      Article a2 = new Article("a2");
-
-      ArticleCollection articles1 = new ArticleCollection();
-      articles1.Add(a1);
-      articles1.Add(a2);
-
-      string jsonText = JsonConvert.SerializeObject(articles1);
-
-      ArticleCollection articles2 = JsonConvert.DeserializeObject<ArticleCollection>(jsonText);
-
-      Assert.AreEqual(articles1.Count, articles2.Count);
-      Assert.AreEqual(articles1[0].Name, articles2[0].Name);
-    }
-
-    [Test]
-    public void ReadOnlyCollectionSerialize()
-    {
-      ReadOnlyCollection<int> r1 = new ReadOnlyCollection<int>(new int[] {0, 1, 2, 3, 4});
-
-      string jsonText = JsonConvert.SerializeObject(r1);
-
-      ReadOnlyCollection<int> r2 = JsonConvert.DeserializeObject<ReadOnlyCollection<int>>(jsonText);
-
-      CollectionAssert.AreEqual(r1, r2);
-    }
-
-#if !PocketPC && !NET20 && !WINDOWS_PHONE
-    [Test]
-    public void Unicode()
-    {
-      string json = @"[""PRE\u003cPOST""]";
-
-      DataContractJsonSerializer s = new DataContractJsonSerializer(typeof (List<string>));
-      List<string> dataContractResult = (List<string>) s.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json)));
-
-      List<string> jsonNetResult = JsonConvert.DeserializeObject<List<string>>(json);
-
-      Assert.AreEqual(1, jsonNetResult.Count);
-      Assert.AreEqual(dataContractResult[0], jsonNetResult[0]);
-    }
-
-    [Test]
-    public void BackslashEqivilence()
-    {
-      string json = @"[""vvv\/vvv\tvvv\""vvv\bvvv\nvvv\rvvv\\vvv\fvvv""]";
-
-#if !SILVERLIGHT && !NETFX_CORE
-      JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
-      List<string> javaScriptSerializerResult = javaScriptSerializer.Deserialize<List<string>>(json);
-#endif
-
-      DataContractJsonSerializer s = new DataContractJsonSerializer(typeof (List<string>));
-      List<string> dataContractResult = (List<string>) s.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json)));
-
-      List<string> jsonNetResult = JsonConvert.DeserializeObject<List<string>>(json);
-
-      Assert.AreEqual(1, jsonNetResult.Count);
-      Assert.AreEqual(dataContractResult[0], jsonNetResult[0]);
-#if !SILVERLIGHT && !NETFX_CORE
-      Assert.AreEqual(javaScriptSerializerResult[0], jsonNetResult[0]);
-#endif
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Bad JSON escape sequence: \j. Line 1, position 7."
-#endif
-      )]
-    public void InvalidBackslash()
-    {
-      string json = @"[""vvv\jvvv""]";
-
-      JsonConvert.DeserializeObject<List<string>>(json);
-    }
-
-    [Test]
-    public void DateTimeTest()
-    {
-      List<DateTime> testDates = new List<DateTime>
-        {
-          new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Local),
-          new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Unspecified),
-          new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc),
-          new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Local),
-          new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Unspecified),
-          new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc),
-        };
-      string result;
-
-
-      MemoryStream ms = new MemoryStream();
-      DataContractJsonSerializer s = new DataContractJsonSerializer(typeof (List<DateTime>));
-      s.WriteObject(ms, testDates);
-      ms.Seek(0, SeekOrigin.Begin);
-      StreamReader sr = new StreamReader(ms);
-
-      string expected = sr.ReadToEnd();
-
-      result = JsonConvert.SerializeObject(testDates, new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat });
-      Assert.AreEqual(expected, result);
-    }
-
-    [Test]
-    public void DateTimeOffsetIso()
-    {
-      List<DateTimeOffset> testDates = new List<DateTimeOffset>
-        {
-          new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)),
-          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero),
-          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)),
-          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(-3.5)),
-        };
-
-      string result = JsonConvert.SerializeObject(testDates);
-      Assert.AreEqual(@"[""0100-01-01T01:01:01+00:00"",""2000-01-01T01:01:01+00:00"",""2000-01-01T01:01:01+13:00"",""2000-01-01T01:01:01-03:30""]", result);
-    }
-
-    [Test]
-    public void DateTimeOffsetMsAjax()
-    {
-      List<DateTimeOffset> testDates = new List<DateTimeOffset>
-        {
-          new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)),
-          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero),
-          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)),
-          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(-3.5)),
-        };
-
-      string result = JsonConvert.SerializeObject(testDates, new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat });
-      Assert.AreEqual(@"[""\/Date(-59011455539000+0000)\/"",""\/Date(946688461000+0000)\/"",""\/Date(946641661000+1300)\/"",""\/Date(946701061000-0330)\/""]", result);
-    }
-#endif
-
-    [Test]
-    public void NonStringKeyDictionary()
-    {
-      Dictionary<int, int> values = new Dictionary<int, int>();
-      values.Add(-5, 6);
-      values.Add(int.MinValue, int.MaxValue);
-
-      string json = JsonConvert.SerializeObject(values);
-
-      Assert.AreEqual(@"{""-5"":6,""-2147483648"":2147483647}", json);
-
-      Dictionary<int, int> newValues = JsonConvert.DeserializeObject<Dictionary<int, int>>(json);
-
-      CollectionAssert.AreEqual(values, newValues);
-    }
-
-    [Test]
-    public void AnonymousObjectSerialization()
-    {
-      var anonymous =
-        new
-          {
-            StringValue = "I am a string",
-            IntValue = int.MaxValue,
-            NestedAnonymous = new {NestedValue = byte.MaxValue},
-            NestedArray = new[] {1, 2},
-            Product = new Product() {Name = "TestProduct"}
-          };
-
-      string json = JsonConvert.SerializeObject(anonymous);
-      Assert.AreEqual(@"{""StringValue"":""I am a string"",""IntValue"":2147483647,""NestedAnonymous"":{""NestedValue"":255},""NestedArray"":[1,2],""Product"":{""Name"":""TestProduct"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null}}", json);
-
-      anonymous = JsonConvert.DeserializeAnonymousType(json, anonymous);
-      Assert.AreEqual("I am a string", anonymous.StringValue);
-      Assert.AreEqual(int.MaxValue, anonymous.IntValue);
-      Assert.AreEqual(255, anonymous.NestedAnonymous.NestedValue);
-      Assert.AreEqual(2, anonymous.NestedArray.Length);
-      Assert.AreEqual(1, anonymous.NestedArray[0]);
-      Assert.AreEqual(2, anonymous.NestedArray[1]);
-      Assert.AreEqual("TestProduct", anonymous.Product.Name);
-    }
-
-    [Test]
-    public void CustomCollectionSerialization()
-    {
-      ProductCollection collection = new ProductCollection()
-        {
-          new Product() {Name = "Test1"},
-          new Product() {Name = "Test2"},
-          new Product() {Name = "Test3"}
-        };
-
-      JsonSerializer jsonSerializer = new JsonSerializer();
-      jsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
-
-      StringWriter sw = new StringWriter();
-
-      jsonSerializer.Serialize(sw, collection);
-
-      Assert.AreEqual(@"[{""Name"":""Test1"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null},{""Name"":""Test2"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null},{""Name"":""Test3"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null}]",
-                      sw.GetStringBuilder().ToString());
-
-      ProductCollection collectionNew = (ProductCollection) jsonSerializer.Deserialize(new JsonTextReader(new StringReader(sw.GetStringBuilder().ToString())), typeof (ProductCollection));
-
-      CollectionAssert.AreEqual(collection, collectionNew);
-    }
-
-    [Test]
-    public void SerializeObject()
-    {
-      string json = JsonConvert.SerializeObject(new object());
-      Assert.AreEqual("{}", json);
-    }
-
-    [Test]
-    public void SerializeNull()
-    {
-      string json = JsonConvert.SerializeObject(null);
-      Assert.AreEqual("null", json);
-    }
-
-    [Test]
-    public void CanDeserializeIntArrayWhenNotFirstPropertyInJson()
-    {
-      string json = "{foo:'hello',bar:[1,2,3]}";
-      ClassWithArray wibble = JsonConvert.DeserializeObject<ClassWithArray>(json);
-      Assert.AreEqual("hello", wibble.Foo);
-
-      Assert.AreEqual(4, wibble.Bar.Count);
-      Assert.AreEqual(int.MaxValue, wibble.Bar[0]);
-      Assert.AreEqual(1, wibble.Bar[1]);
-      Assert.AreEqual(2, wibble.Bar[2]);
-      Assert.AreEqual(3, wibble.Bar[3]);
-    }
-
-    [Test]
-    public void CanDeserializeIntArray_WhenArrayIsFirstPropertyInJson()
-    {
-      string json = "{bar:[1,2,3], foo:'hello'}";
-      ClassWithArray wibble = JsonConvert.DeserializeObject<ClassWithArray>(json);
-      Assert.AreEqual("hello", wibble.Foo);
-
-      Assert.AreEqual(4, wibble.Bar.Count);
-      Assert.AreEqual(int.MaxValue, wibble.Bar[0]);
-      Assert.AreEqual(1, wibble.Bar[1]);
-      Assert.AreEqual(2, wibble.Bar[2]);
-      Assert.AreEqual(3, wibble.Bar[3]);
-    }
-
-    [Test]
-    public void ObjectCreationHandlingReplace()
-    {
-      string json = "{bar:[1,2,3], foo:'hello'}";
-
-      JsonSerializer s = new JsonSerializer();
-      s.ObjectCreationHandling = ObjectCreationHandling.Replace;
-
-      ClassWithArray wibble = (ClassWithArray) s.Deserialize(new StringReader(json), typeof (ClassWithArray));
-
-      Assert.AreEqual("hello", wibble.Foo);
-
-      Assert.AreEqual(1, wibble.Bar.Count);
-    }
-
-    [Test]
-    public void CanDeserializeSerializedJson()
-    {
-      ClassWithArray wibble = new ClassWithArray();
-      wibble.Foo = "hello";
-      wibble.Bar.Add(1);
-      wibble.Bar.Add(2);
-      wibble.Bar.Add(3);
-      string json = JsonConvert.SerializeObject(wibble);
-
-      ClassWithArray wibbleOut = JsonConvert.DeserializeObject<ClassWithArray>(json);
-      Assert.AreEqual("hello", wibbleOut.Foo);
-
-      Assert.AreEqual(5, wibbleOut.Bar.Count);
-      Assert.AreEqual(int.MaxValue, wibbleOut.Bar[0]);
-      Assert.AreEqual(int.MaxValue, wibbleOut.Bar[1]);
-      Assert.AreEqual(1, wibbleOut.Bar[2]);
-      Assert.AreEqual(2, wibbleOut.Bar[3]);
-      Assert.AreEqual(3, wibbleOut.Bar[4]);
-    }
-
-    [Test]
-    public void SerializeConverableObjects()
-    {
-      string json = JsonConvert.SerializeObject(new ConverableMembers(), Formatting.Indented);
-
-      string expected = null;
-#if !NETFX_CORE
-      expected = @"{
-  ""String"": ""string"",
-  ""Int32"": 2147483647,
-  ""UInt32"": 4294967295,
-  ""Byte"": 255,
-  ""SByte"": 127,
-  ""Short"": 32767,
-  ""UShort"": 65535,
-  ""Long"": 9223372036854775807,
-  ""ULong"": 9223372036854775807,
-  ""Double"": 1.7976931348623157E+308,
-  ""Float"": 3.40282347E+38,
-  ""DBNull"": null,
-  ""Bool"": true,
-  ""Char"": ""\u0000""
-}";
-#else
-      expected = @"{
-  ""String"": ""string"",
-  ""Int32"": 2147483647,
-  ""UInt32"": 4294967295,
-  ""Byte"": 255,
-  ""SByte"": 127,
-  ""Short"": 32767,
-  ""UShort"": 65535,
-  ""Long"": 9223372036854775807,
-  ""ULong"": 9223372036854775807,
-  ""Double"": 1.7976931348623157E+308,
-  ""Float"": 3.40282347E+38,
-  ""Bool"": true,
-  ""Char"": ""\u0000""
-}";
-#endif
-
-      Assert.AreEqual(expected, json);
-
-      ConverableMembers c = JsonConvert.DeserializeObject<ConverableMembers>(json);
-      Assert.AreEqual("string", c.String);
-      Assert.AreEqual(double.MaxValue, c.Double);
-#if !NETFX_CORE
-      Assert.AreEqual(DBNull.Value, c.DBNull);
-#endif
-    }
-
-    [Test]
-    public void SerializeStack()
-    {
-      Stack<object> s = new Stack<object>();
-      s.Push(1);
-      s.Push(2);
-      s.Push(3);
-
-      string json = JsonConvert.SerializeObject(s);
-      Assert.AreEqual("[3,2,1]", json);
-    }
-
-    [Test]
-    public void GuidTest()
-    {
-      Guid guid = new Guid("BED7F4EA-1A96-11d2-8F08-00A0C9A6186D");
-
-      string json = JsonConvert.SerializeObject(new ClassWithGuid {GuidField = guid});
-      Assert.AreEqual(@"{""GuidField"":""bed7f4ea-1a96-11d2-8f08-00a0c9a6186d""}", json);
-
-      ClassWithGuid c = JsonConvert.DeserializeObject<ClassWithGuid>(json);
-      Assert.AreEqual(guid, c.GuidField);
-    }
-
-    [Test]
-    public void EnumTest()
-    {
-      string json = JsonConvert.SerializeObject(StringComparison.CurrentCultureIgnoreCase);
-      Assert.AreEqual(@"1", json);
-
-      StringComparison s = JsonConvert.DeserializeObject<StringComparison>(json);
-      Assert.AreEqual(StringComparison.CurrentCultureIgnoreCase, s);
-    }
-
-    public class ClassWithTimeSpan
-    {
-      public TimeSpan TimeSpanField;
-    }
-
-    [Test]
-    public void TimeSpanTest()
-    {
-      TimeSpan ts = new TimeSpan(00, 23, 59, 1);
-
-      string json = JsonConvert.SerializeObject(new ClassWithTimeSpan {TimeSpanField = ts}, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""TimeSpanField"": ""23:59:01""
-}", json);
-
-      ClassWithTimeSpan c = JsonConvert.DeserializeObject<ClassWithTimeSpan>(json);
-      Assert.AreEqual(ts, c.TimeSpanField);
-    }
-
-    [Test]
-    public void JsonIgnoreAttributeOnClassTest()
-    {
-      string json = JsonConvert.SerializeObject(new JsonIgnoreAttributeOnClassTestClass());
-
-      Assert.AreEqual(@"{""TheField"":0,""Property"":21}", json);
-
-      JsonIgnoreAttributeOnClassTestClass c = JsonConvert.DeserializeObject<JsonIgnoreAttributeOnClassTestClass>(@"{""TheField"":99,""Property"":-1,""IgnoredField"":-1}");
-
-      Assert.AreEqual(0, c.IgnoredField);
-      Assert.AreEqual(99, c.Field);
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void SerializeArrayAsArrayList()
-    {
-      string jsonText = @"[3, ""somestring"",[1,2,3],{}]";
-      ArrayList o = JsonConvert.DeserializeObject<ArrayList>(jsonText);
-
-      Assert.AreEqual(4, o.Count);
-      Assert.AreEqual(3, ((JArray) o[2]).Count);
-      Assert.AreEqual(0, ((JObject) o[3]).Count);
-    }
-#endif
-
-    [Test]
-    public void SerializeMemberGenericList()
-    {
-      Name name = new Name("The Idiot in Next To Me");
-
-      PhoneNumber p1 = new PhoneNumber("555-1212");
-      PhoneNumber p2 = new PhoneNumber("444-1212");
-
-      name.pNumbers.Add(p1);
-      name.pNumbers.Add(p2);
-
-      string json = JsonConvert.SerializeObject(name, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""personsName"": ""The Idiot in Next To Me"",
-  ""pNumbers"": [
-    {
-      ""phoneNumber"": ""555-1212""
-    },
-    {
-      ""phoneNumber"": ""444-1212""
-    }
-  ]
-}", json);
-
-      Name newName = JsonConvert.DeserializeObject<Name>(json);
-
-      Assert.AreEqual("The Idiot in Next To Me", newName.personsName);
-
-      // not passed in as part of the constructor but assigned to pNumbers property
-      Assert.AreEqual(2, newName.pNumbers.Count);
-      Assert.AreEqual("555-1212", newName.pNumbers[0].phoneNumber);
-      Assert.AreEqual("444-1212", newName.pNumbers[1].phoneNumber);
-    }
-
-    [Test]
-    public void ConstructorCaseSensitivity()
-    {
-      ConstructorCaseSensitivityClass c = new ConstructorCaseSensitivityClass("param1", "Param1", "Param2");
-
-      string json = JsonConvert.SerializeObject(c);
-
-      ConstructorCaseSensitivityClass deserialized = JsonConvert.DeserializeObject<ConstructorCaseSensitivityClass>(json);
-
-      Assert.AreEqual("param1", deserialized.param1);
-      Assert.AreEqual("Param1", deserialized.Param1);
-      Assert.AreEqual("Param2", deserialized.Param2);
-    }
-
-    [Test]
-    public void SerializerShouldUseClassConverter()
-    {
-      ConverterPrecedenceClass c1 = new ConverterPrecedenceClass("!Test!");
-
-      string json = JsonConvert.SerializeObject(c1);
-      Assert.AreEqual(@"[""Class"",""!Test!""]", json);
-
-      ConverterPrecedenceClass c2 = JsonConvert.DeserializeObject<ConverterPrecedenceClass>(json);
-
-      Assert.AreEqual("!Test!", c2.TestValue);
-    }
-
-    [Test]
-    public void SerializerShouldUseClassConverterOverArgumentConverter()
-    {
-      ConverterPrecedenceClass c1 = new ConverterPrecedenceClass("!Test!");
-
-      string json = JsonConvert.SerializeObject(c1, new ArgumentConverterPrecedenceClassConverter());
-      Assert.AreEqual(@"[""Class"",""!Test!""]", json);
-
-      ConverterPrecedenceClass c2 = JsonConvert.DeserializeObject<ConverterPrecedenceClass>(json, new ArgumentConverterPrecedenceClassConverter());
-
-      Assert.AreEqual("!Test!", c2.TestValue);
-    }
-
-    [Test]
-    public void SerializerShouldUseMemberConverter_IsoDate()
-    {
-      DateTime testDate = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
-      MemberConverterClass m1 = new MemberConverterClass {DefaultConverter = testDate, MemberConverter = testDate};
-
-      string json = JsonConvert.SerializeObject(m1);
-      Assert.AreEqual(@"{""DefaultConverter"":""1970-01-01T00:00:00Z"",""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
-
-      MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json);
-
-      Assert.AreEqual(testDate, m2.DefaultConverter);
-      Assert.AreEqual(testDate, m2.MemberConverter);
-    }
-
-    [Test]
-    public void SerializerShouldUseMemberConverter_MsDate()
-    {
-      DateTime testDate = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
-      MemberConverterClass m1 = new MemberConverterClass { DefaultConverter = testDate, MemberConverter = testDate };
-
-      string json = JsonConvert.SerializeObject(m1, new JsonSerializerSettings
-        {
-          DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
-        });
-      Assert.AreEqual(@"{""DefaultConverter"":""\/Date(0)\/"",""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
-
-      MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json);
-
-      Assert.AreEqual(testDate, m2.DefaultConverter);
-      Assert.AreEqual(testDate, m2.MemberConverter);
-    }
-
-    [Test]
-    public void SerializerShouldUseMemberConverterOverArgumentConverter()
-    {
-      DateTime testDate = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
-      MemberConverterClass m1 = new MemberConverterClass {DefaultConverter = testDate, MemberConverter = testDate};
-
-      string json = JsonConvert.SerializeObject(m1, new JavaScriptDateTimeConverter());
-      Assert.AreEqual(@"{""DefaultConverter"":new Date(0),""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
-
-      MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json, new JavaScriptDateTimeConverter());
-
-      Assert.AreEqual(testDate, m2.DefaultConverter);
-      Assert.AreEqual(testDate, m2.MemberConverter);
-    }
-
-    [Test]
-    public void ConverterAttributeExample()
-    {
-      DateTime date = Convert.ToDateTime("1970-01-01T00:00:00Z").ToUniversalTime();
-
-      MemberConverterClass c = new MemberConverterClass
-        {
-          DefaultConverter = date,
-          MemberConverter = date
-        };
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Console.WriteLine(json);
-      //{
-      //  "DefaultConverter": "\/Date(0)\/",
-      //  "MemberConverter": "1970-01-01T00:00:00Z"
-      //}
-    }
-
-    [Test]
-    public void SerializerShouldUseMemberConverterOverClassAndArgumentConverter()
-    {
-      ClassAndMemberConverterClass c1 = new ClassAndMemberConverterClass();
-      c1.DefaultConverter = new ConverterPrecedenceClass("DefaultConverterValue");
-      c1.MemberConverter = new ConverterPrecedenceClass("MemberConverterValue");
-
-      string json = JsonConvert.SerializeObject(c1, new ArgumentConverterPrecedenceClassConverter());
-      Assert.AreEqual(@"{""DefaultConverter"":[""Class"",""DefaultConverterValue""],""MemberConverter"":[""Member"",""MemberConverterValue""]}", json);
-
-      ClassAndMemberConverterClass c2 = JsonConvert.DeserializeObject<ClassAndMemberConverterClass>(json, new ArgumentConverterPrecedenceClassConverter());
-
-      Assert.AreEqual("DefaultConverterValue", c2.DefaultConverter.TestValue);
-      Assert.AreEqual("MemberConverterValue", c2.MemberConverter.TestValue);
-    }
-
-    [Test]
-    public void IncompatibleJsonAttributeShouldThrow()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>(
-        "JsonConverter IsoDateTimeConverter on Newtonsoft.Json.Tests.TestObjects.IncompatibleJsonAttributeClass is not compatible with member type IncompatibleJsonAttributeClass.",
-        () =>
-        {
-          IncompatibleJsonAttributeClass c = new IncompatibleJsonAttributeClass();
-          JsonConvert.SerializeObject(c);
-        });
-    }
-
-    [Test]
-    public void GenericAbstractProperty()
-    {
-      string json = JsonConvert.SerializeObject(new GenericImpl());
-      Assert.AreEqual(@"{""Id"":0}", json);
-    }
-
-    [Test]
-    public void DeserializeNullable()
-    {
-      string json;
-
-      json = JsonConvert.SerializeObject((int?) null);
-      Assert.AreEqual("null", json);
-
-      json = JsonConvert.SerializeObject((int?) 1);
-      Assert.AreEqual("1", json);
-    }
-
-    [Test]
-    public void SerializeJsonRaw()
-    {
-      PersonRaw personRaw = new PersonRaw
-        {
-          FirstName = "FirstNameValue",
-          RawContent = new JRaw("[1,2,3,4,5]"),
-          LastName = "LastNameValue"
-        };
-
-      string json;
-
-      json = JsonConvert.SerializeObject(personRaw);
-      Assert.AreEqual(@"{""first_name"":""FirstNameValue"",""RawContent"":[1,2,3,4,5],""last_name"":""LastNameValue""}", json);
-    }
-
-    [Test]
-    public void DeserializeJsonRaw()
-    {
-      string json = @"{""first_name"":""FirstNameValue"",""RawContent"":[1,2,3,4,5],""last_name"":""LastNameValue""}";
-
-      PersonRaw personRaw = JsonConvert.DeserializeObject<PersonRaw>(json);
-
-      Assert.AreEqual("FirstNameValue", personRaw.FirstName);
-      Assert.AreEqual("[1,2,3,4,5]", personRaw.RawContent.ToString());
-      Assert.AreEqual("LastNameValue", personRaw.LastName);
-    }
-
-
-    [Test]
-    public void DeserializeNullableMember()
-    {
-      UserNullable userNullablle = new UserNullable
-        {
-          Id = new Guid("AD6205E8-0DF4-465d-AEA6-8BA18E93A7E7"),
-          FName = "FirstValue",
-          LName = "LastValue",
-          RoleId = 5,
-          NullableRoleId = 6,
-          NullRoleId = null,
-          Active = true
-        };
-
-      string json = JsonConvert.SerializeObject(userNullablle);
-
-      Assert.AreEqual(@"{""Id"":""ad6205e8-0df4-465d-aea6-8ba18e93a7e7"",""FName"":""FirstValue"",""LName"":""LastValue"",""RoleId"":5,""NullableRoleId"":6,""NullRoleId"":null,""Active"":true}", json);
-
-      UserNullable userNullablleDeserialized = JsonConvert.DeserializeObject<UserNullable>(json);
-
-      Assert.AreEqual(new Guid("AD6205E8-0DF4-465d-AEA6-8BA18E93A7E7"), userNullablleDeserialized.Id);
-      Assert.AreEqual("FirstValue", userNullablleDeserialized.FName);
-      Assert.AreEqual("LastValue", userNullablleDeserialized.LName);
-      Assert.AreEqual(5, userNullablleDeserialized.RoleId);
-      Assert.AreEqual(6, userNullablleDeserialized.NullableRoleId);
-      Assert.AreEqual(null, userNullablleDeserialized.NullRoleId);
-      Assert.AreEqual(true, userNullablleDeserialized.Active);
-    }
-
-    [Test]
-    public void DeserializeInt64ToNullableDouble()
-    {
-      string json = @"{""Height"":1}";
-
-      DoubleClass c = JsonConvert.DeserializeObject<DoubleClass>(json);
-      Assert.AreEqual(1, c.Height);
-    }
-
-    [Test]
-    public void SerializeTypeProperty()
-    {
-      string boolRef = typeof (bool).AssemblyQualifiedName;
-      TypeClass typeClass = new TypeClass {TypeProperty = typeof (bool)};
-
-      string json = JsonConvert.SerializeObject(typeClass);
-      Assert.AreEqual(@"{""TypeProperty"":""" + boolRef + @"""}", json);
-
-      TypeClass typeClass2 = JsonConvert.DeserializeObject<TypeClass>(json);
-      Assert.AreEqual(typeof (bool), typeClass2.TypeProperty);
-
-      string jsonSerializerTestRef = typeof (JsonSerializerTest).AssemblyQualifiedName;
-      typeClass = new TypeClass {TypeProperty = typeof (JsonSerializerTest)};
-
-      json = JsonConvert.SerializeObject(typeClass);
-      Assert.AreEqual(@"{""TypeProperty"":""" + jsonSerializerTestRef + @"""}", json);
-
-      typeClass2 = JsonConvert.DeserializeObject<TypeClass>(json);
-      Assert.AreEqual(typeof (JsonSerializerTest), typeClass2.TypeProperty);
-    }
-
-    [Test]
-    public void RequiredMembersClass()
-    {
-      RequiredMembersClass c = new RequiredMembersClass()
-        {
-          BirthDate = new DateTime(2000, 12, 20, 10, 55, 55, DateTimeKind.Utc),
-          FirstName = "Bob",
-          LastName = "Smith",
-          MiddleName = "Cosmo"
-        };
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""FirstName"": ""Bob"",
-  ""MiddleName"": ""Cosmo"",
-  ""LastName"": ""Smith"",
-  ""BirthDate"": ""2000-12-20T10:55:55Z""
-}", json);
-
-      RequiredMembersClass c2 = JsonConvert.DeserializeObject<RequiredMembersClass>(json);
-
-      Assert.AreEqual("Bob", c2.FirstName);
-      Assert.AreEqual(new DateTime(2000, 12, 20, 10, 55, 55, DateTimeKind.Utc), c2.BirthDate);
-    }
-
-    [Test]
-    public void DeserializeRequiredMembersClassWithNullValues()
-    {
-      string json = @"{
-  ""FirstName"": ""I can't be null bro!"",
-  ""MiddleName"": null,
-  ""LastName"": null,
-  ""BirthDate"": ""\/Date(977309755000)\/""
-}";
-
-      RequiredMembersClass c = JsonConvert.DeserializeObject<RequiredMembersClass>(json);
-
-      Assert.AreEqual("I can't be null bro!", c.FirstName);
-      Assert.AreEqual(null, c.MiddleName);
-      Assert.AreEqual(null, c.LastName);
-    }
-
-    [Test]
-    public void DeserializeRequiredMembersClassNullRequiredValueProperty()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("Required property 'FirstName' expects a value but got null. Line 6, position 2.",
-        () =>
-        {
-          string json = @"{
-  ""FirstName"": null,
-  ""MiddleName"": null,
-  ""LastName"": null,
-  ""BirthDate"": ""\/Date(977309755000)\/""
-}";
-
-          JsonConvert.DeserializeObject<RequiredMembersClass>(json);
-        });
-    }
-
-    [Test]
-    public void SerializeRequiredMembersClassNullRequiredValueProperty()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("Cannot write a null value for property 'FirstName'. Property requires a value.",
-      () =>
-      {
-        RequiredMembersClass requiredMembersClass = new RequiredMembersClass
-        {
-          FirstName = null,
-          BirthDate = new DateTime(2000, 10, 10, 10, 10, 10, DateTimeKind.Utc),
-          LastName = null,
-          MiddleName = null
-        };
-
-        string json = JsonConvert.SerializeObject(requiredMembersClass);
-        Console.WriteLine(json);
-      });
-    }
-
-    [Test]
-    public void RequiredMembersClassMissingRequiredProperty()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("Required property 'LastName' not found in JSON. Line 3, position 2.",
-      () =>
-      {
-        string json = @"{
-  ""FirstName"": ""Bob""
-}";
-
-        JsonConvert.DeserializeObject<RequiredMembersClass>(json);
-      }); 
-    }
-
-    [Test]
-    public void SerializeJaggedArray()
-    {
-      JaggedArray aa = new JaggedArray();
-      aa.Before = "Before!";
-      aa.After = "After!";
-      aa.Coordinates = new[] {new[] {1, 1}, new[] {1, 2}, new[] {2, 1}, new[] {2, 2}};
-
-      string json = JsonConvert.SerializeObject(aa);
-
-      Assert.AreEqual(@"{""Before"":""Before!"",""Coordinates"":[[1,1],[1,2],[2,1],[2,2]],""After"":""After!""}", json);
-    }
-
-    [Test]
-    public void DeserializeJaggedArray()
-    {
-      string json = @"{""Before"":""Before!"",""Coordinates"":[[1,1],[1,2],[2,1],[2,2]],""After"":""After!""}";
-
-      JaggedArray aa = JsonConvert.DeserializeObject<JaggedArray>(json);
-
-      Assert.AreEqual("Before!", aa.Before);
-      Assert.AreEqual("After!", aa.After);
-      Assert.AreEqual(4, aa.Coordinates.Length);
-      Assert.AreEqual(2, aa.Coordinates[0].Length);
-      Assert.AreEqual(1, aa.Coordinates[0][0]);
-      Assert.AreEqual(2, aa.Coordinates[1][1]);
-
-      string after = JsonConvert.SerializeObject(aa);
-
-      Assert.AreEqual(json, after);
-    }
-
-    [Test]
-    public void DeserializeGoogleGeoCode()
-    {
-      string json = @"{
-  ""name"": ""1600 Amphitheatre Parkway, Mountain View, CA, USA"",
-  ""Status"": {
-    ""code"": 200,
-    ""request"": ""geocode""
-  },
-  ""Placemark"": [
-    {
-      ""address"": ""1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA"",
-      ""AddressDetails"": {
-        ""Country"": {
-          ""CountryNameCode"": ""US"",
-          ""AdministrativeArea"": {
-            ""AdministrativeAreaName"": ""CA"",
-            ""SubAdministrativeArea"": {
-              ""SubAdministrativeAreaName"": ""Santa Clara"",
-              ""Locality"": {
-                ""LocalityName"": ""Mountain View"",
-                ""Thoroughfare"": {
-                  ""ThoroughfareName"": ""1600 Amphitheatre Pkwy""
-                },
-                ""PostalCode"": {
-                  ""PostalCodeNumber"": ""94043""
-                }
-              }
-            }
-          }
-        },
-        ""Accuracy"": 8
-      },
-      ""Point"": {
-        ""coordinates"": [-122.083739, 37.423021, 0]
-      }
-    }
-  ]
-}";
-
-      GoogleMapGeocoderStructure jsonGoogleMapGeocoder = JsonConvert.DeserializeObject<GoogleMapGeocoderStructure>(json);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Could not create an instance of type Newtonsoft.Json.Tests.TestObjects.ICo. Type is an interface or abstract class and cannot be instantated. Line 1, position 14."
-#endif
-      )]
-    public void DeserializeInterfaceProperty()
-    {
-      InterfacePropertyTestClass testClass = new InterfacePropertyTestClass();
-      testClass.co = new Co();
-      String strFromTest = JsonConvert.SerializeObject(testClass);
-      InterfacePropertyTestClass testFromDe = (InterfacePropertyTestClass) JsonConvert.DeserializeObject(strFromTest, typeof (InterfacePropertyTestClass));
-    }
-
-    private Person GetPerson()
-    {
-      Person person = new Person
-        {
-          Name = "Mike Manager",
-          BirthDate = new DateTime(1983, 8, 3, 0, 0, 0, DateTimeKind.Utc),
-          Department = "IT",
-          LastModified = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc)
-        };
-      return person;
-    }
-
-    [Test]
-    public void WriteJsonDates()
-    {
-      LogEntry entry = new LogEntry
-        {
-          LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc),
-          Details = "Application started."
-        };
-
-      string defaultJson = JsonConvert.SerializeObject(entry);
-      // {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}
-
-      string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());
-      // {"Details":"Application started.","LogDate":"2009-02-15T00:00:00.0000000Z"}
-
-      string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter());
-      // {"Details":"Application started.","LogDate":new Date(1234656000000)}
-
-      Console.WriteLine(defaultJson);
-      Console.WriteLine(isoJson);
-      Console.WriteLine(javascriptJson);
-    }
-
-    public void GenericListAndDictionaryInterfaceProperties()
-    {
-      GenericListAndDictionaryInterfaceProperties o = new GenericListAndDictionaryInterfaceProperties();
-      o.IDictionaryProperty = new Dictionary<string, int>
-        {
-          {"one", 1},
-          {"two", 2},
-          {"three", 3}
-        };
-      o.IListProperty = new List<int>
-        {
-          1, 2, 3
-        };
-      o.IEnumerableProperty = new List<int>
-        {
-          4, 5, 6
-        };
-
-      string json = JsonConvert.SerializeObject(o, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""IEnumerableProperty"": [
-    4,
-    5,
-    6
-  ],
-  ""IListProperty"": [
-    1,
-    2,
-    3
-  ],
-  ""IDictionaryProperty"": {
-    ""one"": 1,
-    ""two"": 2,
-    ""three"": 3
-  }
-}", json);
-
-      GenericListAndDictionaryInterfaceProperties deserializedObject = JsonConvert.DeserializeObject<GenericListAndDictionaryInterfaceProperties>(json);
-      Assert.IsNotNull(deserializedObject);
-
-      CollectionAssert.AreEqual(o.IListProperty.ToArray(), deserializedObject.IListProperty.ToArray());
-      CollectionAssert.AreEqual(o.IEnumerableProperty.ToArray(), deserializedObject.IEnumerableProperty.ToArray());
-      CollectionAssert.AreEqual(o.IDictionaryProperty.ToArray(), deserializedObject.IDictionaryProperty.ToArray());
-    }
-
-    [Test]
-    public void DeserializeBestMatchPropertyCase()
-    {
-      string json = @"{
-  ""firstName"": ""firstName"",
-  ""FirstName"": ""FirstName"",
-  ""LastName"": ""LastName"",
-  ""lastName"": ""lastName"",
-}";
-
-      PropertyCase o = JsonConvert.DeserializeObject<PropertyCase>(json);
-      Assert.IsNotNull(o);
-
-      Assert.AreEqual("firstName", o.firstName);
-      Assert.AreEqual("FirstName", o.FirstName);
-      Assert.AreEqual("LastName", o.LastName);
-      Assert.AreEqual("lastName", o.lastName);
-    }
-
-    [Test]
-    public void DeserializePropertiesOnToNonDefaultConstructor()
-    {
-      SubKlass i = new SubKlass("my subprop");
-      i.SuperProp = "overrided superprop";
-
-      string json = JsonConvert.SerializeObject(i);
-      Assert.AreEqual(@"{""SubProp"":""my subprop"",""SuperProp"":""overrided superprop""}", json);
-
-      SubKlass ii = JsonConvert.DeserializeObject<SubKlass>(json);
-
-      string newJson = JsonConvert.SerializeObject(ii);
-      Assert.AreEqual(@"{""SubProp"":""my subprop"",""SuperProp"":""overrided superprop""}", newJson);
-    }
-
-    [Test]
-    public void SerializeJsonPropertyWithHandlingValues()
-    {
-      JsonPropertyWithHandlingValues o = new JsonPropertyWithHandlingValues();
-      o.DefaultValueHandlingIgnoreProperty = "Default!";
-      o.DefaultValueHandlingIncludeProperty = "Default!";
-      o.DefaultValueHandlingPopulateProperty = "Default!";
-      o.DefaultValueHandlingIgnoreAndPopulateProperty = "Default!";
-
-      string json = JsonConvert.SerializeObject(o, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""DefaultValueHandlingIncludeProperty"": ""Default!"",
-  ""DefaultValueHandlingPopulateProperty"": ""Default!"",
-  ""NullValueHandlingIncludeProperty"": null,
-  ""ReferenceLoopHandlingErrorProperty"": null,
-  ""ReferenceLoopHandlingIgnoreProperty"": null,
-  ""ReferenceLoopHandlingSerializeProperty"": null
-}", json);
-
-      json = JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore});
-
-      Assert.AreEqual(@"{
-  ""DefaultValueHandlingIncludeProperty"": ""Default!"",
-  ""DefaultValueHandlingPopulateProperty"": ""Default!"",
-  ""NullValueHandlingIncludeProperty"": null
-}", json);
-    }
-
-    [Test]
-    public void DeserializeJsonPropertyWithHandlingValues()
-    {
-      string json = "{}";
-
-      JsonPropertyWithHandlingValues o = JsonConvert.DeserializeObject<JsonPropertyWithHandlingValues>(json);
-      Assert.AreEqual("Default!", o.DefaultValueHandlingIgnoreAndPopulateProperty);
-      Assert.AreEqual("Default!", o.DefaultValueHandlingPopulateProperty);
-      Assert.AreEqual(null, o.DefaultValueHandlingIgnoreProperty);
-      Assert.AreEqual(null, o.DefaultValueHandlingIncludeProperty);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException))]
-    public void JsonPropertyWithHandlingValues_ReferenceLoopError()
-    {
-      JsonPropertyWithHandlingValues o = new JsonPropertyWithHandlingValues();
-      o.ReferenceLoopHandlingErrorProperty = o;
-
-      JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings {ReferenceLoopHandling = ReferenceLoopHandling.Ignore});
-    }
-
-    [Test]
-    public void PartialClassDeserialize()
-    {
-      string json = @"{
-    ""request"": ""ux.settings.update"",
-    ""sid"": ""14c561bd-32a8-457e-b4e5-4bba0832897f"",
-    ""uid"": ""30c39065-0f31-de11-9442-001e3786a8ec"",
-    ""fidOrder"": [
-        ""id"",
-        ""andytest_name"",
-        ""andytest_age"",
-        ""andytest_address"",
-        ""andytest_phone"",
-        ""date"",
-        ""title"",
-        ""titleId""
-    ],
-    ""entityName"": ""Andy Test"",
-    ""setting"": ""entity.field.order""
-}";
-
-      RequestOnly r = JsonConvert.DeserializeObject<RequestOnly>(json);
-      Assert.AreEqual("ux.settings.update", r.Request);
-
-      NonRequest n = JsonConvert.DeserializeObject<NonRequest>(json);
-      Assert.AreEqual(new Guid("14c561bd-32a8-457e-b4e5-4bba0832897f"), n.Sid);
-      Assert.AreEqual(new Guid("30c39065-0f31-de11-9442-001e3786a8ec"), n.Uid);
-      Assert.AreEqual(8, n.FidOrder.Count);
-      Assert.AreEqual("id", n.FidOrder[0]);
-      Assert.AreEqual("titleId", n.FidOrder[n.FidOrder.Count - 1]);
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-    [MetadataType(typeof (OptInClassMetadata))]
-    public class OptInClass
-    {
-      [DataContract]
-      public class OptInClassMetadata
-      {
-        [DataMember]
-        public string Name { get; set; }
-
-        [DataMember]
-        public int Age { get; set; }
-
-        public string NotIncluded { get; set; }
-      }
-
-      public string Name { get; set; }
-      public int Age { get; set; }
-      public string NotIncluded { get; set; }
-    }
-
-    [Test]
-    public void OptInClassMetadataSerialization()
-    {
-      OptInClass optInClass = new OptInClass();
-      optInClass.Age = 26;
-      optInClass.Name = "James NK";
-      optInClass.NotIncluded = "Poor me :(";
-
-      string json = JsonConvert.SerializeObject(optInClass, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""James NK"",
-  ""Age"": 26
-}", json);
-
-      OptInClass newOptInClass = JsonConvert.DeserializeObject<OptInClass>(@"{
-  ""Name"": ""James NK"",
-  ""NotIncluded"": ""Ignore me!"",
-  ""Age"": 26
-}");
-      Assert.AreEqual(26, newOptInClass.Age);
-      Assert.AreEqual("James NK", newOptInClass.Name);
-      Assert.AreEqual(null, newOptInClass.NotIncluded);
-    }
-#endif
-
-#if !PocketPC && !NET20
-    [DataContract]
-    public class DataContractPrivateMembers
-    {
-      public DataContractPrivateMembers()
-      {
-      }
-
-      public DataContractPrivateMembers(string name, int age, int rank, string title)
-      {
-        _name = name;
-        Age = age;
-        Rank = rank;
-        Title = title;
-      }
-
-      [DataMember] private string _name;
-
-      [DataMember(Name = "_age")]
-      private int Age { get; set; }
-
-      [JsonProperty]
-      private int Rank { get; set; }
-
-      [JsonProperty(PropertyName = "JsonTitle")]
-      [DataMember(Name = "DataTitle")]
-      private string Title { get; set; }
-
-      public string NotIncluded { get; set; }
-
-      public override string ToString()
-      {
-        return "_name: " + _name + ", _age: " + Age + ", Rank: " + Rank + ", JsonTitle: " + Title;
-      }
-    }
-
-    [Test]
-    public void SerializeDataContractPrivateMembers()
-    {
-      DataContractPrivateMembers c = new DataContractPrivateMembers("Jeff", 26, 10, "Dr");
-      c.NotIncluded = "Hi";
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""_name"": ""Jeff"",
-  ""_age"": 26,
-  ""Rank"": 10,
-  ""JsonTitle"": ""Dr""
-}", json);
-
-      DataContractPrivateMembers cc = JsonConvert.DeserializeObject<DataContractPrivateMembers>(json);
-      Assert.AreEqual("_name: Jeff, _age: 26, Rank: 10, JsonTitle: Dr", cc.ToString());
-    }
-#endif
-
-    [Test]
-    public void DeserializeDictionaryInterface()
-    {
-      string json = @"{
-  ""Name"": ""Name!"",
-  ""Dictionary"": {
-    ""Item"": 11
-  }
-}";
-
-      DictionaryInterfaceClass c = JsonConvert.DeserializeObject<DictionaryInterfaceClass>(json,
-                                                                                           new JsonSerializerSettings {ObjectCreationHandling = ObjectCreationHandling.Replace});
-      Assert.AreEqual("Name!", c.Name);
-      Assert.AreEqual(1, c.Dictionary.Count);
-      Assert.AreEqual(11, c.Dictionary["Item"]);
-    }
-
-    [Test]
-    public void DeserializeDictionaryInterfaceWithExistingValues()
-    {
-      string json = @"{
-  ""Random"": {
-    ""blah"": 1
-  },
-  ""Name"": ""Name!"",
-  ""Dictionary"": {
-    ""Item"": 11,
-    ""Item1"": 12
-  },
-  ""Collection"": [
-    999
-  ],
-  ""Employee"": {
-    ""Manager"": {
-      ""Name"": ""ManagerName!""
-    }
-  }
-}";
-
-      DictionaryInterfaceClass c = JsonConvert.DeserializeObject<DictionaryInterfaceClass>(json,
-                                                                                           new JsonSerializerSettings {ObjectCreationHandling = ObjectCreationHandling.Reuse});
-
-      Assert.AreEqual("Name!", c.Name);
-      Assert.AreEqual(3, c.Dictionary.Count);
-      Assert.AreEqual(11, c.Dictionary["Item"]);
-      Assert.AreEqual(1, c.Dictionary["existing"]);
-      Assert.AreEqual(4, c.Collection.Count);
-      Assert.AreEqual(1, c.Collection.ElementAt(0));
-      Assert.AreEqual(999, c.Collection.ElementAt(3));
-      Assert.AreEqual("EmployeeName!", c.Employee.Name);
-      Assert.AreEqual("ManagerName!", c.Employee.Manager.Name);
-      Assert.IsNotNull(c.Random);
-    }
-
-    [Test]
-    public void TypedObjectDeserializationWithComments()
-    {
-      string json = @"/*comment*/ { /*comment*/
-        ""Name"": /*comment*/ ""Apple"" /*comment*/, /*comment*/
-        ""ExpiryDate"": ""\/Date(1230422400000)\/"",
-        ""Price"": 3.99,
-        ""Sizes"": /*comment*/ [ /*comment*/
-          ""Small"", /*comment*/
-          ""Medium"" /*comment*/,
-          /*comment*/ ""Large""
-        /*comment*/ ] /*comment*/
-      } /*comment*/";
-
-      Product deserializedProduct = (Product) JsonConvert.DeserializeObject(json, typeof (Product));
-
-      Assert.AreEqual("Apple", deserializedProduct.Name);
-      Assert.AreEqual(new DateTime(2008, 12, 28, 0, 0, 0, DateTimeKind.Utc), deserializedProduct.ExpiryDate);
-      Assert.AreEqual(3.99m, deserializedProduct.Price);
-      Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
-      Assert.AreEqual("Medium", deserializedProduct.Sizes[1]);
-      Assert.AreEqual("Large", deserializedProduct.Sizes[2]);
-    }
-
-    [Test]
-    public void NestedInsideOuterObject()
-    {
-      string json = @"{
-  ""short"": {
-    ""original"": ""http://www.contrast.ie/blog/online&#45;marketing&#45;2009/"",
-    ""short"": ""m2sqc6"",
-    ""shortened"": ""http://short.ie/m2sqc6"",
-    ""error"": {
-      ""code"": 0,
-      ""msg"": ""No action taken""
-    }
-  }
-}";
-
-      JObject o = JObject.Parse(json);
-
-      Shortie s = JsonConvert.DeserializeObject<Shortie>(o["short"].ToString());
-      Assert.IsNotNull(s);
-
-      Assert.AreEqual(s.Original, "http://www.contrast.ie/blog/online&#45;marketing&#45;2009/");
-      Assert.AreEqual(s.Short, "m2sqc6");
-      Assert.AreEqual(s.Shortened, "http://short.ie/m2sqc6");
-    }
-
-    [Test]
-    public void UriSerialization()
-    {
-      Uri uri = new Uri("http://codeplex.com");
-      string json = JsonConvert.SerializeObject(uri);
-
-      Assert.AreEqual("http://codeplex.com/", uri.ToString());
-
-      Uri newUri = JsonConvert.DeserializeObject<Uri>(json);
-      Assert.AreEqual(uri, newUri);
-    }
-
-    [Test]
-    public void AnonymousPlusLinqToSql()
-    {
-      var value = new
-        {
-          bar = new JObject(new JProperty("baz", 13))
-        };
-
-      string json = JsonConvert.SerializeObject(value);
-
-      Assert.AreEqual(@"{""bar"":{""baz"":13}}", json);
-    }
-
-    [Test]
-    public void SerializeEnumerableAsObject()
-    {
-      Content content = new Content
-        {
-          Text = "Blah, blah, blah",
-          Children = new List<Content>
-            {
-              new Content {Text = "First"},
-              new Content {Text = "Second"}
-            }
-        };
-
-      string json = JsonConvert.SerializeObject(content, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Children"": [
-    {
-      ""Children"": null,
-      ""Text"": ""First""
-    },
-    {
-      ""Children"": null,
-      ""Text"": ""Second""
-    }
-  ],
-  ""Text"": ""Blah, blah, blah""
-}", json);
-    }
-
-    [Test]
-    public void DeserializeEnumerableAsObject()
-    {
-      string json = @"{
-  ""Children"": [
-    {
-      ""Children"": null,
-      ""Text"": ""First""
-    },
-    {
-      ""Children"": null,
-      ""Text"": ""Second""
-    }
-  ],
-  ""Text"": ""Blah, blah, blah""
-}";
-
-      Content content = JsonConvert.DeserializeObject<Content>(json);
-
-      Assert.AreEqual("Blah, blah, blah", content.Text);
-      Assert.AreEqual(2, content.Children.Count);
-      Assert.AreEqual("First", content.Children[0].Text);
-      Assert.AreEqual("Second", content.Children[1].Text);
-    }
-
-    [Test]
-    public void RoleTransferTest()
-    {
-      string json = @"{""Operation"":""1"",""RoleName"":""Admin"",""Direction"":""0""}";
-
-      RoleTransfer r = JsonConvert.DeserializeObject<RoleTransfer>(json);
-
-      Assert.AreEqual(RoleTransferOperation.Second, r.Operation);
-      Assert.AreEqual("Admin", r.RoleName);
-      Assert.AreEqual(RoleTransferDirection.First, r.Direction);
-    }
-
-    [Test]
-    public void PrimitiveValuesInObjectArray()
-    {
-      string json = @"{""action"":""Router"",""method"":""Navigate"",""data"":[""dashboard"",null],""type"":""rpc"",""tid"":2}";
-
-      ObjectArrayPropertyTest o = JsonConvert.DeserializeObject<ObjectArrayPropertyTest>(json);
-
-      Assert.AreEqual("Router", o.Action);
-      Assert.AreEqual("Navigate", o.Method);
-      Assert.AreEqual(2, o.Data.Length);
-      Assert.AreEqual("dashboard", o.Data[0]);
-      Assert.AreEqual(null, o.Data[1]);
-    }
-
-    [Test]
-    public void ComplexValuesInObjectArray()
-    {
-      string json = @"{""action"":""Router"",""method"":""Navigate"",""data"":[""dashboard"",[""id"", 1, ""teststring"", ""test""],{""one"":1}],""type"":""rpc"",""tid"":2}";
-
-      ObjectArrayPropertyTest o = JsonConvert.DeserializeObject<ObjectArrayPropertyTest>(json);
-
-      Assert.AreEqual("Router", o.Action);
-      Assert.AreEqual("Navigate", o.Method);
-      Assert.AreEqual(3, o.Data.Length);
-      Assert.AreEqual("dashboard", o.Data[0]);
-      CustomAssert.IsInstanceOfType(typeof (JArray), o.Data[1]);
-      Assert.AreEqual(4, ((JArray) o.Data[1]).Count);
-      CustomAssert.IsInstanceOfType(typeof (JObject), o.Data[2]);
-      Assert.AreEqual(1, ((JObject) o.Data[2]).Count);
-      Assert.AreEqual(1, (int) ((JObject) o.Data[2])["one"]);
-    }
-
-    [Test]
-    public void DeserializeGenericDictionary()
-    {
-      string json = @"{""key1"":""value1"",""key2"":""value2""}";
-
-      Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
-
-      Console.WriteLine(values.Count);
-      // 2
-
-      Console.WriteLine(values["key1"]);
-      // value1
-
-      Assert.AreEqual(2, values.Count);
-      Assert.AreEqual("value1", values["key1"]);
-      Assert.AreEqual("value2", values["key2"]);
-    }
-
-    [Test]
-    public void SerializeGenericList()
-    {
-      Product p1 = new Product
-        {
-          Name = "Product 1",
-          Price = 99.95m,
-          ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),
-        };
-      Product p2 = new Product
-        {
-          Name = "Product 2",
-          Price = 12.50m,
-          ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),
-        };
-
-      List<Product> products = new List<Product>();
-      products.Add(p1);
-      products.Add(p2);
-
-      string json = JsonConvert.SerializeObject(products, Formatting.Indented);
-      //[
-      //  {
-      //    "Name": "Product 1",
-      //    "ExpiryDate": "\/Date(978048000000)\/",
-      //    "Price": 99.95,
-      //    "Sizes": null
-      //  },
-      //  {
-      //    "Name": "Product 2",
-      //    "ExpiryDate": "\/Date(1248998400000)\/",
-      //    "Price": 12.50,
-      //    "Sizes": null
-      //  }
-      //]
-
-      Assert.AreEqual(@"[
-  {
-    ""Name"": ""Product 1"",
-    ""ExpiryDate"": ""2000-12-29T00:00:00Z"",
-    ""Price"": 99.95,
-    ""Sizes"": null
-  },
-  {
-    ""Name"": ""Product 2"",
-    ""ExpiryDate"": ""2009-07-31T00:00:00Z"",
-    ""Price"": 12.50,
-    ""Sizes"": null
-  }
-]", json);
-    }
-
-    [Test]
-    public void DeserializeGenericList()
-    {
-      string json = @"[
-        {
-          ""Name"": ""Product 1"",
-          ""ExpiryDate"": ""\/Date(978048000000)\/"",
-          ""Price"": 99.95,
-          ""Sizes"": null
-        },
-        {
-          ""Name"": ""Product 2"",
-          ""ExpiryDate"": ""\/Date(1248998400000)\/"",
-          ""Price"": 12.50,
-          ""Sizes"": null
-        }
-      ]";
-
-      List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);
-
-      Console.WriteLine(products.Count);
-      // 2
-
-      Product p1 = products[0];
-
-      Console.WriteLine(p1.Name);
-      // Product 1
-
-      Assert.AreEqual(2, products.Count);
-      Assert.AreEqual("Product 1", products[0].Name);
-    }
-
-#if !PocketPC && !NET20
-    [Test]
-    public void DeserializeEmptyStringToNullableDateTime()
-    {
-      string json = @"{""DateTimeField"":""""}";
-
-      NullableDateTimeTestClass c = JsonConvert.DeserializeObject<NullableDateTimeTestClass>(json);
-      Assert.AreEqual(null, c.DateTimeField);
-    }
-#endif
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Unable to find a constructor to use for type Newtonsoft.Json.Tests.TestObjects.Event. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Line 1, position 15."
-#endif
-      )]
-    public void FailWhenClassWithNoDefaultConstructorHasMultipleConstructorsWithArguments()
-    {
-      string json = @"{""sublocation"":""AlertEmailSender.Program.Main"",""userId"":0,""type"":0,""summary"":""Loading settings variables"",""details"":null,""stackTrace"":""   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)\r\n   at System.Environment.get_StackTrace()\r\n   at mr.Logging.Event..ctor(String summary) in C:\\Projects\\MRUtils\\Logging\\Event.vb:line 71\r\n   at AlertEmailSender.Program.Main(String[] args) in C:\\Projects\\AlertEmailSender\\AlertEmailSender\\Program.cs:line 25"",""tag"":null,""time"":""\/Date(1249591032026-0400)\/""}";
-
-      Event e = JsonConvert.DeserializeObject<Event>(json);
-    }
-
-    [Test]
-    public void DeserializeObjectSetOnlyProperty()
-    {
-      string json = @"{'SetOnlyProperty':[1,2,3,4,5]}";
-
-      SetOnlyPropertyClass2 setOnly = JsonConvert.DeserializeObject<SetOnlyPropertyClass2>(json);
-      JArray a = (JArray) setOnly.GetValue();
-      Assert.AreEqual(5, a.Count);
-      Assert.AreEqual(1, (int) a[0]);
-      Assert.AreEqual(5, (int) a[a.Count - 1]);
-    }
-
-    [Test]
-    public void DeserializeOptInClasses()
-    {
-      string json = @"{id: ""12"", name: ""test"", items: [{id: ""112"", name: ""testing""}]}";
-
-      ListTestClass l = JsonConvert.DeserializeObject<ListTestClass>(json);
-    }
-
-    [Test]
-    public void DeserializeNullableListWithNulls()
-    {
-      List<decimal?> l = JsonConvert.DeserializeObject<List<decimal?>>("[ 3.3, null, 1.1 ] ");
-      Assert.AreEqual(3, l.Count);
-
-      Assert.AreEqual(3.3m, l[0]);
-      Assert.AreEqual(null, l[1]);
-      Assert.AreEqual(1.1m, l[2]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Cannot deserialize JSON array (i.e. [1,2,3]) into type 'Newtonsoft.Json.Tests.TestObjects.Person'.
-The deserialized type must be an array or implement a collection interface like IEnumerable, ICollection or IList.
-To force JSON arrays to deserialize add the JsonArrayAttribute to the type. Line 1, position 1."
-#endif
-      )]
-    public void CannotDeserializeArrayIntoObject()
-    {
-      string json = @"[]";
-
-      JsonConvert.DeserializeObject<Person>(json);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Cannot deserialize JSON object (i.e. {""name"":""value""}) into type 'System.Collections.Generic.List`1[Newtonsoft.Json.Tests.TestObjects.Person]'.
-The deserialized type should be a normal .NET type (i.e. not a primitive type like integer, not a collection type like an array or List<T>) or a dictionary type (i.e. Dictionary<TKey, TValue>).
-To force JSON objects to deserialize add the JsonObjectAttribute to the type. Line 1, position 2."
-#endif
-      )]
-    public void CannotDeserializeObjectIntoArray()
-    {
-      string json = @"{}";
-
-      JsonConvert.DeserializeObject<List<Person>>(json);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Cannot populate JSON array onto type 'Newtonsoft.Json.Tests.TestObjects.Person'. Line 1, position 1."
-#endif
-      )]
-    public void CannotPopulateArrayIntoObject()
-    {
-      string json = @"[]";
-
-      JsonConvert.PopulateObject(json, new Person());
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Cannot populate JSON object onto type 'System.Collections.Generic.List`1[Newtonsoft.Json.Tests.TestObjects.Person]'. Line 1, position 2."
-#endif
-      )]
-    public void CannotPopulateObjectIntoArray()
-    {
-      string json = @"{}";
-
-      JsonConvert.PopulateObject(json, new List<Person>());
-    }
-
-    [Test]
-    public void DeserializeEmptyString()
-    {
-      string json = @"{""Name"":""""}";
-
-      Person p = JsonConvert.DeserializeObject<Person>(json);
-      Assert.AreEqual("", p.Name);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Error getting value from 'ReadTimeout' on 'System.IO.MemoryStream'."
-#endif
-      )]
-    public void SerializePropertyGetError()
-    {
-      JsonConvert.SerializeObject(new MemoryStream());
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Error setting value to 'ReadTimeout' on 'System.IO.MemoryStream'."
-#endif
-      )]
-    public void DeserializePropertySetError()
-    {
-      JsonConvert.DeserializeObject<MemoryStream>("{ReadTimeout:0}");
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonReaderException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Could not convert string to integer: . Line 1, position 15."
-#endif
-      )]
-    public void DeserializeEnsureTypeEmptyStringToIntError()
-    {
-      JsonConvert.DeserializeObject<MemoryStream>("{ReadTimeout:''}");
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Error converting value {null} to type 'System.Int32'. Line 1, position 17."
-#endif
-      )]
-    public void DeserializeEnsureTypeNullToIntError()
-    {
-      JsonConvert.DeserializeObject<MemoryStream>("{ReadTimeout:null}");
-    }
-
-    [Test]
-    public void SerializeGenericListOfStrings()
-    {
-      List<String> strings = new List<String>();
-
-      strings.Add("str_1");
-      strings.Add("str_2");
-      strings.Add("str_3");
-
-      string json = JsonConvert.SerializeObject(strings);
-      Assert.AreEqual(@"[""str_1"",""str_2"",""str_3""]", json);
-    }
-
-    [Test]
-    public void ConstructorReadonlyFieldsTest()
-    {
-      ConstructorReadonlyFields c1 = new ConstructorReadonlyFields("String!", int.MaxValue);
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""A"": ""String!"",
-  ""B"": 2147483647
-}", json);
-
-      ConstructorReadonlyFields c2 = JsonConvert.DeserializeObject<ConstructorReadonlyFields>(json);
-      Assert.AreEqual("String!", c2.A);
-      Assert.AreEqual(int.MaxValue, c2.B);
-    }
-
-    [Test]
-    public void SerializeStruct()
-    {
-      StructTest structTest = new StructTest
-        {
-          StringProperty = "StringProperty!",
-          StringField = "StringField",
-          IntProperty = 5,
-          IntField = 10
-        };
-
-      string json = JsonConvert.SerializeObject(structTest, Formatting.Indented);
-      Console.WriteLine(json);
-      Assert.AreEqual(@"{
-  ""StringField"": ""StringField"",
-  ""IntField"": 10,
-  ""StringProperty"": ""StringProperty!"",
-  ""IntProperty"": 5
-}", json);
-
-      StructTest deserialized = JsonConvert.DeserializeObject<StructTest>(json);
-      Assert.AreEqual(structTest.StringProperty, deserialized.StringProperty);
-      Assert.AreEqual(structTest.StringField, deserialized.StringField);
-      Assert.AreEqual(structTest.IntProperty, deserialized.IntProperty);
-      Assert.AreEqual(structTest.IntField, deserialized.IntField);
-    }
-
-    [Test]
-    public void SerializeListWithJsonConverter()
-    {
-      Foo f = new Foo();
-      f.Bars.Add(new Bar {Id = 0});
-      f.Bars.Add(new Bar {Id = 1});
-      f.Bars.Add(new Bar {Id = 2});
-
-      string json = JsonConvert.SerializeObject(f, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Bars"": [
-    0,
-    1,
-    2
-  ]
-}", json);
-
-      Foo newFoo = JsonConvert.DeserializeObject<Foo>(json);
-      Assert.AreEqual(3, newFoo.Bars.Count);
-      Assert.AreEqual(0, newFoo.Bars[0].Id);
-      Assert.AreEqual(1, newFoo.Bars[1].Id);
-      Assert.AreEqual(2, newFoo.Bars[2].Id);
-    }
-
-    [Test]
-    public void SerializeGuidKeyedDictionary()
-    {
-      Dictionary<Guid, int> dictionary = new Dictionary<Guid, int>();
-      dictionary.Add(new Guid("F60EAEE0-AE47-488E-B330-59527B742D77"), 1);
-      dictionary.Add(new Guid("C2594C02-EBA1-426A-AA87-8DD8871350B0"), 2);
-
-      string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""f60eaee0-ae47-488e-b330-59527b742d77"": 1,
-  ""c2594c02-eba1-426a-aa87-8dd8871350b0"": 2
-}", json);
-    }
-
-    [Test]
-    public void SerializePersonKeyedDictionary()
-    {
-      Dictionary<Person, int> dictionary = new Dictionary<Person, int>();
-      dictionary.Add(new Person {Name = "p1"}, 1);
-      dictionary.Add(new Person {Name = "p2"}, 2);
-
-      string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Newtonsoft.Json.Tests.TestObjects.Person"": 1,
-  ""Newtonsoft.Json.Tests.TestObjects.Person"": 2
-}", json);
-    }
-
-    [Test]
-    public void DeserializePersonKeyedDictionary()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("Could not convert string 'Newtonsoft.Json.Tests.TestObjects.Person' to dictionary key type 'Newtonsoft.Json.Tests.TestObjects.Person'. Create a TypeConverter to convert from the string to the key type object. Line 2, position 46.",
-      () =>
-      {
-        string json =
-          @"{
-  ""Newtonsoft.Json.Tests.TestObjects.Person"": 1,
-  ""Newtonsoft.Json.Tests.TestObjects.Person"": 2
-}";
-
-        JsonConvert.DeserializeObject<Dictionary<Person, int>>(json);
-      });
-    }
-
-    [Test]
-    public void SerializeFragment()
-    {
-      string googleSearchText = @"{
-        ""responseData"": {
-          ""results"": [
-            {
-              ""GsearchResultClass"": ""GwebSearch"",
-              ""unescapedUrl"": ""http://en.wikipedia.org/wiki/Paris_Hilton"",
-              ""url"": ""http://en.wikipedia.org/wiki/Paris_Hilton"",
-              ""visibleUrl"": ""en.wikipedia.org"",
-              ""cacheUrl"": ""http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org"",
-              ""title"": ""<b>Paris Hilton</b> - Wikipedia, the free encyclopedia"",
-              ""titleNoFormatting"": ""Paris Hilton - Wikipedia, the free encyclopedia"",
-              ""content"": ""[1] In 2006, she released her debut album...""
-            },
-            {
-              ""GsearchResultClass"": ""GwebSearch"",
-              ""unescapedUrl"": ""http://www.imdb.com/name/nm0385296/"",
-              ""url"": ""http://www.imdb.com/name/nm0385296/"",
-              ""visibleUrl"": ""www.imdb.com"",
-              ""cacheUrl"": ""http://www.google.com/search?q=cache:1i34KkqnsooJ:www.imdb.com"",
-              ""title"": ""<b>Paris Hilton</b>"",
-              ""titleNoFormatting"": ""Paris Hilton"",
-              ""content"": ""Self: Zoolander. Socialite <b>Paris Hilton</b>...""
-            }
-          ],
-          ""cursor"": {
-            ""pages"": [
-              {
-                ""start"": ""0"",
-                ""label"": 1
-              },
-              {
-                ""start"": ""4"",
-                ""label"": 2
-              },
-              {
-                ""start"": ""8"",
-                ""label"": 3
-              },
-              {
-                ""start"": ""12"",
-                ""label"": 4
-              }
-            ],
-            ""estimatedResultCount"": ""59600000"",
-            ""currentPageIndex"": 0,
-            ""moreResultsUrl"": ""http://www.google.com/search?oe=utf8&ie=utf8...""
-          }
-        },
-        ""responseDetails"": null,
-        ""responseStatus"": 200
-      }";
-
-      JObject googleSearch = JObject.Parse(googleSearchText);
-
-      // get JSON result objects into a list
-      IList<JToken> results = googleSearch["responseData"]["results"].Children().ToList();
-
-      // serialize JSON results into .NET objects
-      IList<SearchResult> searchResults = new List<SearchResult>();
-      foreach (JToken result in results)
-      {
-        SearchResult searchResult = JsonConvert.DeserializeObject<SearchResult>(result.ToString());
-        searchResults.Add(searchResult);
-      }
-
-      // Title = <b>Paris Hilton</b> - Wikipedia, the free encyclopedia
-      // Content = [1] In 2006, she released her debut album...
-      // Url = http://en.wikipedia.org/wiki/Paris_Hilton
-
-      // Title = <b>Paris Hilton</b>
-      // Content = Self: Zoolander. Socialite <b>Paris Hilton</b>...
-      // Url = http://www.imdb.com/name/nm0385296/
-
-      Assert.AreEqual(2, searchResults.Count);
-      Assert.AreEqual("<b>Paris Hilton</b> - Wikipedia, the free encyclopedia", searchResults[0].Title);
-      Assert.AreEqual("<b>Paris Hilton</b>", searchResults[1].Title);
-    }
-
-    [Test]
-    public void DeserializeBaseReferenceWithDerivedValue()
-    {
-      PersonPropertyClass personPropertyClass = new PersonPropertyClass();
-      WagePerson wagePerson = (WagePerson) personPropertyClass.Person;
-
-      wagePerson.BirthDate = new DateTime(2000, 11, 29, 23, 59, 59, DateTimeKind.Utc);
-      wagePerson.Department = "McDees";
-      wagePerson.HourlyWage = 12.50m;
-      wagePerson.LastModified = new DateTime(2000, 11, 29, 23, 59, 59, DateTimeKind.Utc);
-      wagePerson.Name = "Jim Bob";
-
-      string json = JsonConvert.SerializeObject(personPropertyClass, Formatting.Indented);
-      Assert.AreEqual(
-        @"{
-  ""Person"": {
-    ""HourlyWage"": 12.50,
-    ""Name"": ""Jim Bob"",
-    ""BirthDate"": ""2000-11-29T23:59:59Z"",
-    ""LastModified"": ""2000-11-29T23:59:59Z""
-  }
-}",
-        json);
-
-      PersonPropertyClass newPersonPropertyClass = JsonConvert.DeserializeObject<PersonPropertyClass>(json);
-      Assert.AreEqual(wagePerson.HourlyWage, ((WagePerson) newPersonPropertyClass.Person).HourlyWage);
-    }
-
-    public class ExistingValueClass
-    {
-      public Dictionary<string, string> Dictionary { get; set; }
-      public List<string> List { get; set; }
-
-      public ExistingValueClass()
-      {
-        Dictionary = new Dictionary<string, string>
-          {
-            {"existing", "yup"}
-          };
-        List = new List<string>
-          {
-            "existing"
-          };
-      }
-    }
-
-    [Test]
-    public void DeserializePopulateDictionaryAndList()
-    {
-      ExistingValueClass d = JsonConvert.DeserializeObject<ExistingValueClass>(@"{'Dictionary':{appended:'appended',existing:'new'}}");
-
-      Assert.IsNotNull(d);
-      Assert.IsNotNull(d.Dictionary);
-      Assert.AreEqual(typeof (Dictionary<string, string>), d.Dictionary.GetType());
-      Assert.AreEqual(typeof (List<string>), d.List.GetType());
-      Assert.AreEqual(2, d.Dictionary.Count);
-      Assert.AreEqual("new", d.Dictionary["existing"]);
-      Assert.AreEqual("appended", d.Dictionary["appended"]);
-      Assert.AreEqual(1, d.List.Count);
-      Assert.AreEqual("existing", d.List[0]);
-    }
-
-    public interface IKeyValueId
-    {
-      int Id { get; set; }
-      string Key { get; set; }
-      string Value { get; set; }
-    }
-
-
-    public class KeyValueId : IKeyValueId
-    {
-      public int Id { get; set; }
-      public string Key { get; set; }
-      public string Value { get; set; }
-    }
-
-    public class ThisGenericTest<T> where T : IKeyValueId
-    {
-      private Dictionary<string, T> _dict1 = new Dictionary<string, T>();
-
-      public string MyProperty { get; set; }
-
-      public void Add(T item)
-      {
-        this._dict1.Add(item.Key, item);
-      }
-
-      public T this[string key]
-      {
-        get { return this._dict1[key]; }
-        set { this._dict1[key] = value; }
-      }
-
-      public T this[int id]
-      {
-        get { return this._dict1.Values.FirstOrDefault(x => x.Id == id); }
-        set
-        {
-          var item = this[id];
-
-          if (item == null)
-            this.Add(value);
-          else
-            this._dict1[item.Key] = value;
-        }
-      }
-
-      public string ToJson()
-      {
-        return JsonConvert.SerializeObject(this, Formatting.Indented);
-      }
-
-      public T[] TheItems
-      {
-        get { return this._dict1.Values.ToArray<T>(); }
-        set
-        {
-          foreach (var item in value)
-            this.Add(item);
-        }
-      }
-    }
-
-    [Test]
-    public void IgnoreIndexedProperties()
-    {
-      ThisGenericTest<KeyValueId> g = new ThisGenericTest<KeyValueId>();
-
-      g.Add(new KeyValueId {Id = 1, Key = "key1", Value = "value1"});
-      g.Add(new KeyValueId {Id = 2, Key = "key2", Value = "value2"});
-
-      g.MyProperty = "some value";
-
-      string json = g.ToJson();
-
-      Assert.AreEqual(@"{
-  ""MyProperty"": ""some value"",
-  ""TheItems"": [
-    {
-      ""Id"": 1,
-      ""Key"": ""key1"",
-      ""Value"": ""value1""
-    },
-    {
-      ""Id"": 2,
-      ""Key"": ""key2"",
-      ""Value"": ""value2""
-    }
-  ]
-}", json);
-
-      ThisGenericTest<KeyValueId> gen = JsonConvert.DeserializeObject<ThisGenericTest<KeyValueId>>(json);
-      Assert.AreEqual("some value", gen.MyProperty);
-    }
-
-    public class JRawValueTestObject
-    {
-      public JRaw Value { get; set; }
-    }
-
-    [Test]
-    public void JRawValue()
-    {
-      JRawValueTestObject deserialized = JsonConvert.DeserializeObject<JRawValueTestObject>("{value:3}");
-      Assert.AreEqual("3", deserialized.Value.ToString());
-
-      deserialized = JsonConvert.DeserializeObject<JRawValueTestObject>("{value:'3'}");
-      Assert.AreEqual(@"""3""", deserialized.Value.ToString());
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Unable to find a default constructor to use for type Newtonsoft.Json.Tests.Serialization.JsonSerializerTest+DictionaryWithNoDefaultConstructor. Line 1, position 6."
-#endif
-      )]
-    public void DeserializeDictionaryWithNoDefaultConstructor()
-    {
-      string json = "{key1:'value',key2:'value',key3:'value'}";
-      JsonConvert.DeserializeObject<DictionaryWithNoDefaultConstructor>(json);
-    }
-
-    public class DictionaryWithNoDefaultConstructor : Dictionary<string, string>
-    {
-      public DictionaryWithNoDefaultConstructor(IEnumerable<KeyValuePair<string, string>> initial)
-      {
-        foreach (KeyValuePair<string, string> pair in initial)
-        {
-          Add(pair.Key, pair.Value);
-        }
-      }
-    }
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public class A
-    {
-      [JsonProperty("A1")] private string _A1;
-
-      public string A1
-      {
-        get { return _A1; }
-        set { _A1 = value; }
-      }
-
-      [JsonProperty("A2")]
-      private string A2 { get; set; }
-    }
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public class B : A
-    {
-      public string B1 { get; set; }
-
-      [JsonProperty("B2")] private string _B2;
-
-      public string B2
-      {
-        get { return _B2; }
-        set { _B2 = value; }
-      }
-
-      [JsonProperty("B3")]
-      private string B3 { get; set; }
-    }
-
-    [Test]
-    public void SerializeNonPublicBaseJsonProperties()
-    {
-      B value = new B();
-      string json = JsonConvert.SerializeObject(value, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""B2"": null,
-  ""A1"": null,
-  ""B3"": null,
-  ""A2"": null
-}", json);
-    }
-
-    public class TestClass
-    {
-      public string Key { get; set; }
-      public object Value { get; set; }
-    }
-
-    [Test]
-    public void DeserializeToObjectProperty()
-    {
-      var json = "{ Key: 'abc', Value: 123 }";
-      var item = JsonConvert.DeserializeObject<TestClass>(json);
-
-      Assert.AreEqual(123L, item.Value);
-    }
-
-    public abstract class Animal
-    {
-      public abstract string Name { get; }
-    }
-
-    public class Human : Animal
-    {
-      public override string Name
-      {
-        get { return typeof (Human).Name; }
-      }
-
-      public string Ethnicity { get; set; }
-    }
-
-#if !NET20 && !PocketPC && !WINDOWS_PHONE
-    public class DataContractJsonSerializerTestClass
-    {
-      public TimeSpan TimeSpanProperty { get; set; }
-      public Guid GuidProperty { get; set; }
-      public Animal AnimalProperty { get; set; }
-      public Exception ExceptionProperty { get; set; }
-    }
-
-    [Test]
-    public void DataContractJsonSerializerTest()
-    {
-      Exception ex = new Exception("Blah blah blah");
-
-      DataContractJsonSerializerTestClass c = new DataContractJsonSerializerTestClass();
-      c.TimeSpanProperty = new TimeSpan(200, 20, 59, 30, 900);
-      c.GuidProperty = new Guid("66143115-BE2A-4a59-AF0A-348E1EA15B1E");
-      c.AnimalProperty = new Human() {Ethnicity = "European"};
-      c.ExceptionProperty = ex;
-
-      MemoryStream ms = new MemoryStream();
-      DataContractJsonSerializer serializer = new DataContractJsonSerializer(
-        typeof (DataContractJsonSerializerTestClass),
-        new Type[] {typeof (Human)});
-      serializer.WriteObject(ms, c);
-
-      byte[] jsonBytes = ms.ToArray();
-      string json = Encoding.UTF8.GetString(jsonBytes, 0, jsonBytes.Length);
-
-      //Console.WriteLine(JObject.Parse(json).ToString());
-      //Console.WriteLine();
-
-      //Console.WriteLine(JsonConvert.SerializeObject(c, Formatting.Indented, new JsonSerializerSettings
-      //  {
-      //    //               TypeNameHandling = TypeNameHandling.Objects
-      //  }));
-    }
-#endif
-
-    public class ModelStateDictionary<T> : IDictionary<string, T>
-    {
-
-      private readonly Dictionary<string, T> _innerDictionary = new Dictionary<string, T>(StringComparer.OrdinalIgnoreCase);
-
-      public ModelStateDictionary()
-      {
-      }
-
-      public ModelStateDictionary(ModelStateDictionary<T> dictionary)
-      {
-        if (dictionary == null)
-        {
-          throw new ArgumentNullException("dictionary");
-        }
-
-        foreach (var entry in dictionary)
-        {
-          _innerDictionary.Add(entry.Key, entry.Value);
-        }
-      }
-
-      public int Count
-      {
-        get { return _innerDictionary.Count; }
-      }
-
-      public bool IsReadOnly
-      {
-        get { return ((IDictionary<string, T>) _innerDictionary).IsReadOnly; }
-      }
-
-      public ICollection<string> Keys
-      {
-        get { return _innerDictionary.Keys; }
-      }
-
-      public T this[string key]
-      {
-        get
-        {
-          T value;
-          _innerDictionary.TryGetValue(key, out value);
-          return value;
-        }
-        set { _innerDictionary[key] = value; }
-      }
-
-      public ICollection<T> Values
-      {
-        get { return _innerDictionary.Values; }
-      }
-
-      public void Add(KeyValuePair<string, T> item)
-      {
-        ((IDictionary<string, T>) _innerDictionary).Add(item);
-      }
-
-      public void Add(string key, T value)
-      {
-        _innerDictionary.Add(key, value);
-      }
-
-      public void Clear()
-      {
-        _innerDictionary.Clear();
-      }
-
-      public bool Contains(KeyValuePair<string, T> item)
-      {
-        return ((IDictionary<string, T>) _innerDictionary).Contains(item);
-      }
-
-      public bool ContainsKey(string key)
-      {
-        return _innerDictionary.ContainsKey(key);
-      }
-
-      public void CopyTo(KeyValuePair<string, T>[] array, int arrayIndex)
-      {
-        ((IDictionary<string, T>) _innerDictionary).CopyTo(array, arrayIndex);
-      }
-
-      public IEnumerator<KeyValuePair<string, T>> GetEnumerator()
-      {
-        return _innerDictionary.GetEnumerator();
-      }
-
-      public void Merge(ModelStateDictionary<T> dictionary)
-      {
-        if (dictionary == null)
-        {
-          return;
-        }
-
-        foreach (var entry in dictionary)
-        {
-          this[entry.Key] = entry.Value;
-        }
-      }
-
-      public bool Remove(KeyValuePair<string, T> item)
-      {
-        return ((IDictionary<string, T>) _innerDictionary).Remove(item);
-      }
-
-      public bool Remove(string key)
-      {
-        return _innerDictionary.Remove(key);
-      }
-
-      public bool TryGetValue(string key, out T value)
-      {
-        return _innerDictionary.TryGetValue(key, out value);
-      }
-
-      IEnumerator IEnumerable.GetEnumerator()
-      {
-        return ((IEnumerable) _innerDictionary).GetEnumerator();
-      }
-    }
-
-    [Test]
-    public void SerializeNonIDictionary()
-    {
-      ModelStateDictionary<string> modelStateDictionary = new ModelStateDictionary<string>();
-      modelStateDictionary.Add("key", "value");
-
-      string json = JsonConvert.SerializeObject(modelStateDictionary);
-
-      Assert.AreEqual(@"{""key"":""value""}", json);
-
-      ModelStateDictionary<string> newModelStateDictionary = JsonConvert.DeserializeObject<ModelStateDictionary<string>>(json);
-      Assert.AreEqual(1, newModelStateDictionary.Count);
-      Assert.AreEqual("value", newModelStateDictionary["key"]);
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    public class ISerializableTestObject : ISerializable
-    {
-      internal string _stringValue;
-      internal int _intValue;
-      internal DateTimeOffset _dateTimeOffsetValue;
-      internal Person _personValue;
-      internal Person _nullPersonValue;
-      internal int? _nullableInt;
-      internal bool _booleanValue;
-      internal byte _byteValue;
-      internal char _charValue;
-      internal DateTime _dateTimeValue;
-      internal decimal _decimalValue;
-      internal short _shortValue;
-      internal long _longValue;
-      internal sbyte _sbyteValue;
-      internal float _floatValue;
-      internal ushort _ushortValue;
-      internal uint _uintValue;
-      internal ulong _ulongValue;
-
-      public ISerializableTestObject(string stringValue, int intValue, DateTimeOffset dateTimeOffset, Person personValue)
-      {
-        _stringValue = stringValue;
-        _intValue = intValue;
-        _dateTimeOffsetValue = dateTimeOffset;
-        _personValue = personValue;
-        _dateTimeValue = new DateTime(0, DateTimeKind.Utc);
-      }
-
-      protected ISerializableTestObject(SerializationInfo info, StreamingContext context)
-      {
-        _stringValue = info.GetString("stringValue");
-        _intValue = info.GetInt32("intValue");
-        _dateTimeOffsetValue = (DateTimeOffset) info.GetValue("dateTimeOffsetValue", typeof (DateTimeOffset));
-        _personValue = (Person) info.GetValue("personValue", typeof (Person));
-        _nullPersonValue = (Person) info.GetValue("nullPersonValue", typeof (Person));
-        _nullableInt = (int?) info.GetValue("nullableInt", typeof (int?));
-
-        _booleanValue = info.GetBoolean("booleanValue");
-        _byteValue = info.GetByte("byteValue");
-        _charValue = info.GetChar("charValue");
-        _dateTimeValue = info.GetDateTime("dateTimeValue");
-        _decimalValue = info.GetDecimal("decimalValue");
-        _shortValue = info.GetInt16("shortValue");
-        _longValue = info.GetInt64("longValue");
-        _sbyteValue = info.GetSByte("sbyteValue");
-        _floatValue = info.GetSingle("floatValue");
-        _ushortValue = info.GetUInt16("ushortValue");
-        _uintValue = info.GetUInt32("uintValue");
-        _ulongValue = info.GetUInt64("ulongValue");
-      }
-
-      public void GetObjectData(SerializationInfo info, StreamingContext context)
-      {
-        info.AddValue("stringValue", _stringValue);
-        info.AddValue("intValue", _intValue);
-        info.AddValue("dateTimeOffsetValue", _dateTimeOffsetValue);
-        info.AddValue("personValue", _personValue);
-        info.AddValue("nullPersonValue", _nullPersonValue);
-        info.AddValue("nullableInt", null);
-
-        info.AddValue("booleanValue", _booleanValue);
-        info.AddValue("byteValue", _byteValue);
-        info.AddValue("charValue", _charValue);
-        info.AddValue("dateTimeValue", _dateTimeValue);
-        info.AddValue("decimalValue", _decimalValue);
-        info.AddValue("shortValue", _shortValue);
-        info.AddValue("longValue", _longValue);
-        info.AddValue("sbyteValue", _sbyteValue);
-        info.AddValue("floatValue", _floatValue);
-        info.AddValue("ushortValue", _ushortValue);
-        info.AddValue("uintValue", _uintValue);
-        info.AddValue("ulongValue", _ulongValue);
-      }
-    }
-
-#if DEBUG
-    [Test]
-    public void SerializeISerializableInPartialTrustWithIgnoreInterface()
-    {
-      try
-      {
-        JsonTypeReflector.SetFullyTrusted(false);
-        ISerializableTestObject value = new ISerializableTestObject("string!", 0, default(DateTimeOffset), null);
-
-        string json = JsonConvert.SerializeObject(value, new JsonSerializerSettings
-          {
-            ContractResolver = new DefaultContractResolver(false)
-              {
-                IgnoreSerializableInterface = true
-              }
-          });
-
-        Assert.AreEqual("{}", json);
-
-        value = JsonConvert.DeserializeObject<ISerializableTestObject>("{booleanValue:true}", new JsonSerializerSettings
-          {
-            ContractResolver = new DefaultContractResolver(false)
-              {
-                IgnoreSerializableInterface = true
-              }
-          });
-
-        Assert.IsNotNull(value);
-        Assert.AreEqual(false, value._booleanValue);
-      }
-      finally
-      {
-        JsonTypeReflector.SetFullyTrusted(true);
-      }
-    }
-
-    [Test]
-    public void SerializeISerializableInPartialTrust()
-    {
-      try
-      {
-        ExceptionAssert.Throws<JsonSerializationException>(
-          @"Type 'Newtonsoft.Json.Tests.Serialization.JsonSerializerTest+ISerializableTestObject' implements ISerializable but cannot be deserialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
-To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.",
-          () =>
-            {
-              JsonTypeReflector.SetFullyTrusted(false);
-
-              JsonConvert.DeserializeObject<ISerializableTestObject>("{booleanValue:true}");
-            });
-      }
-      finally
-      {
-        JsonTypeReflector.SetFullyTrusted(true);
-      }
-    }
-
-    [Test]
-    public void DeserializeISerializableInPartialTrust()
-    {
-      try
-      {
-        ExceptionAssert.Throws<JsonSerializationException>(
-          @"Type 'Newtonsoft.Json.Tests.Serialization.JsonSerializerTest+ISerializableTestObject' implements ISerializable but cannot be serialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
-To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.",
-          () =>
-          {
-            JsonTypeReflector.SetFullyTrusted(false);
-            ISerializableTestObject value = new ISerializableTestObject("string!", 0, default(DateTimeOffset), null);
-
-            JsonConvert.SerializeObject(value);
-          });
-      }
-      finally
-      {
-        JsonTypeReflector.SetFullyTrusted(true);
-      }
-    }
-#endif
-
-    [Test]
-    public void SerializeISerializableTestObject_IsoDate()
-    {
-      Person person = new Person();
-      person.BirthDate = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc);
-      person.LastModified = person.BirthDate;
-      person.Department = "Department!";
-      person.Name = "Name!";
-
-      DateTimeOffset dateTimeOffset = new DateTimeOffset(2000, 12, 20, 22, 59, 59, TimeSpan.FromHours(2));
-      string dateTimeOffsetText;
-#if !NET20
-      dateTimeOffsetText = @"2000-12-20T22:59:59+02:00";
-#else
-      dateTimeOffsetText = @"12/20/2000 22:59:59 +02:00";
-#endif
-
-      ISerializableTestObject o = new ISerializableTestObject("String!", int.MinValue, dateTimeOffset, person);
-
-      string json = JsonConvert.SerializeObject(o, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""stringValue"": ""String!"",
-  ""intValue"": -2147483648,
-  ""dateTimeOffsetValue"": """ + dateTimeOffsetText + @""",
-  ""personValue"": {
-    ""Name"": ""Name!"",
-    ""BirthDate"": ""2000-01-01T01:01:01Z"",
-    ""LastModified"": ""2000-01-01T01:01:01Z""
-  },
-  ""nullPersonValue"": null,
-  ""nullableInt"": null,
-  ""booleanValue"": false,
-  ""byteValue"": 0,
-  ""charValue"": ""\u0000"",
-  ""dateTimeValue"": ""0001-01-01T00:00:00Z"",
-  ""decimalValue"": 0.0,
-  ""shortValue"": 0,
-  ""longValue"": 0,
-  ""sbyteValue"": 0,
-  ""floatValue"": 0.0,
-  ""ushortValue"": 0,
-  ""uintValue"": 0,
-  ""ulongValue"": 0
-}", json);
-
-      ISerializableTestObject o2 = JsonConvert.DeserializeObject<ISerializableTestObject>(json);
-      Assert.AreEqual("String!", o2._stringValue);
-      Assert.AreEqual(int.MinValue, o2._intValue);
-      Assert.AreEqual(dateTimeOffset, o2._dateTimeOffsetValue);
-      Assert.AreEqual("Name!", o2._personValue.Name);
-      Assert.AreEqual(null, o2._nullPersonValue);
-      Assert.AreEqual(null, o2._nullableInt);
-    }
-
-    [Test]
-    public void SerializeISerializableTestObject_MsAjax()
-    {
-      Person person = new Person();
-      person.BirthDate = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc);
-      person.LastModified = person.BirthDate;
-      person.Department = "Department!";
-      person.Name = "Name!";
-
-      DateTimeOffset dateTimeOffset = new DateTimeOffset(2000, 12, 20, 22, 59, 59, TimeSpan.FromHours(2));
-      string dateTimeOffsetText;
-#if !NET20
-      dateTimeOffsetText = @"\/Date(977345999000+0200)\/";
-#else
-      dateTimeOffsetText = @"12/20/2000 22:59:59 +02:00";
-#endif
-
-      ISerializableTestObject o = new ISerializableTestObject("String!", int.MinValue, dateTimeOffset, person);
-
-      string json = JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings
-        {
-          DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
-        });
-      Assert.AreEqual(@"{
-  ""stringValue"": ""String!"",
-  ""intValue"": -2147483648,
-  ""dateTimeOffsetValue"": """ + dateTimeOffsetText + @""",
-  ""personValue"": {
-    ""Name"": ""Name!"",
-    ""BirthDate"": ""\/Date(946688461000)\/"",
-    ""LastModified"": ""\/Date(946688461000)\/""
-  },
-  ""nullPersonValue"": null,
-  ""nullableInt"": null,
-  ""booleanValue"": false,
-  ""byteValue"": 0,
-  ""charValue"": ""\u0000"",
-  ""dateTimeValue"": ""\/Date(-62135596800000)\/"",
-  ""decimalValue"": 0.0,
-  ""shortValue"": 0,
-  ""longValue"": 0,
-  ""sbyteValue"": 0,
-  ""floatValue"": 0.0,
-  ""ushortValue"": 0,
-  ""uintValue"": 0,
-  ""ulongValue"": 0
-}", json);
-
-      ISerializableTestObject o2 = JsonConvert.DeserializeObject<ISerializableTestObject>(json);
-      Assert.AreEqual("String!", o2._stringValue);
-      Assert.AreEqual(int.MinValue, o2._intValue);
-      Assert.AreEqual(dateTimeOffset, o2._dateTimeOffsetValue);
-      Assert.AreEqual("Name!", o2._personValue.Name);
-      Assert.AreEqual(null, o2._nullPersonValue);
-      Assert.AreEqual(null, o2._nullableInt);
-    }
-#endif
-
-    public class KVPair<TKey, TValue>
-    {
-      public TKey Key { get; set; }
-      public TValue Value { get; set; }
-
-      public KVPair(TKey k, TValue v)
-      {
-        Key = k;
-        Value = v;
-      }
-    }
-
-    [Test]
-    public void DeserializeUsingNonDefaultConstructorWithLeftOverValues()
-    {
-      List<KVPair<string, string>> kvPairs =
-        JsonConvert.DeserializeObject<List<KVPair<string, string>>>(
-          "[{\"Key\":\"Two\",\"Value\":\"2\"},{\"Key\":\"One\",\"Value\":\"1\"}]");
-
-      Assert.AreEqual(2, kvPairs.Count);
-      Assert.AreEqual("Two", kvPairs[0].Key);
-      Assert.AreEqual("2", kvPairs[0].Value);
-      Assert.AreEqual("One", kvPairs[1].Key);
-      Assert.AreEqual("1", kvPairs[1].Value);
-    }
-
-    [Test]
-    public void SerializeClassWithInheritedProtectedMember()
-    {
-      AA myA = new AA(2);
-      string json = JsonConvert.SerializeObject(myA, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""AA_field1"": 2,
-  ""AA_property1"": 2,
-  ""AA_property2"": 2,
-  ""AA_property3"": 2,
-  ""AA_property4"": 2
-}", json);
-
-      BB myB = new BB(3, 4);
-      json = JsonConvert.SerializeObject(myB, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""BB_field1"": 4,
-  ""BB_field2"": 4,
-  ""AA_field1"": 3,
-  ""BB_property1"": 4,
-  ""BB_property2"": 4,
-  ""BB_property3"": 4,
-  ""BB_property4"": 4,
-  ""BB_property5"": 4,
-  ""BB_property7"": 4,
-  ""AA_property1"": 3,
-  ""AA_property2"": 3,
-  ""AA_property3"": 3,
-  ""AA_property4"": 3
-}", json);
-    }
-
-    [Test]
-    public void DeserializeClassWithInheritedProtectedMember()
-    {
-      AA myA = JsonConvert.DeserializeObject<AA>(
-        @"{
-  ""AA_field1"": 2,
-  ""AA_field2"": 2,
-  ""AA_property1"": 2,
-  ""AA_property2"": 2,
-  ""AA_property3"": 2,
-  ""AA_property4"": 2,
-  ""AA_property5"": 2,
-  ""AA_property6"": 2
-}");
-
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field1", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field2", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property1", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property2", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property3", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property4", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property5", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property6", BindingFlags.Instance | BindingFlags.NonPublic), myA));
-
-      BB myB = JsonConvert.DeserializeObject<BB>(
-        @"{
-  ""BB_field1"": 4,
-  ""BB_field2"": 4,
-  ""AA_field1"": 3,
-  ""AA_field2"": 3,
-  ""AA_property1"": 2,
-  ""AA_property2"": 2,
-  ""AA_property3"": 2,
-  ""AA_property4"": 2,
-  ""AA_property5"": 2,
-  ""AA_property6"": 2,
-  ""BB_property1"": 3,
-  ""BB_property2"": 3,
-  ""BB_property3"": 3,
-  ""BB_property4"": 3,
-  ""BB_property5"": 3,
-  ""BB_property6"": 3,
-  ""BB_property7"": 3,
-  ""BB_property8"": 3
-}");
-
-      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field1", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field2", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property1", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property2", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property3", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property4", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property5", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property6", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-
-      Assert.AreEqual(4, myB.BB_field1);
-      Assert.AreEqual(4, myB.BB_field2);
-      Assert.AreEqual(3, myB.BB_property1);
-      Assert.AreEqual(3, myB.BB_property2);
-      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property3", BindingFlags.Instance | BindingFlags.Public), myB));
-      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property4", BindingFlags.Instance | BindingFlags.NonPublic), myB));
-      Assert.AreEqual(0, myB.BB_property5);
-      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property6", BindingFlags.Instance | BindingFlags.Public), myB));
-      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property7", BindingFlags.Instance | BindingFlags.Public), myB));
-      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property8", BindingFlags.Instance | BindingFlags.Public), myB));
-    }
-
-    public class AA
-    {
-      [JsonProperty] protected int AA_field1;
-      protected int AA_field2;
-
-      [JsonProperty]
-      protected int AA_property1 { get; set; }
-
-      [JsonProperty]
-      protected int AA_property2 { get; private set; }
-
-      [JsonProperty]
-      protected int AA_property3 { private get; set; }
-
-      [JsonProperty]
-      private int AA_property4 { get; set; }
-
-      protected int AA_property5 { get; private set; }
-      protected int AA_property6 { private get; set; }
-
-      public AA()
-      {
-      }
-
-      public AA(int f)
-      {
-        AA_field1 = f;
-        AA_field2 = f;
-        AA_property1 = f;
-        AA_property2 = f;
-        AA_property3 = f;
-        AA_property4 = f;
-        AA_property5 = f;
-        AA_property6 = f;
-      }
-    }
-
-    public class BB : AA
-    {
-      [JsonProperty] public int BB_field1;
-      public int BB_field2;
-
-      [JsonProperty]
-      public int BB_property1 { get; set; }
-
-      [JsonProperty]
-      public int BB_property2 { get; private set; }
-
-      [JsonProperty]
-      public int BB_property3 { private get; set; }
-
-      [JsonProperty]
-      private int BB_property4 { get; set; }
-
-      public int BB_property5 { get; private set; }
-      public int BB_property6 { private get; set; }
-
-      [JsonProperty]
-      public int BB_property7 { protected get; set; }
-
-      public int BB_property8 { protected get; set; }
-
-      public BB()
-      {
-      }
-
-      public BB(int f, int g)
-        : base(f)
-      {
-        BB_field1 = g;
-        BB_field2 = g;
-        BB_property1 = g;
-        BB_property2 = g;
-        BB_property3 = g;
-        BB_property4 = g;
-        BB_property5 = g;
-        BB_property6 = g;
-        BB_property7 = g;
-        BB_property8 = g;
-      }
-    }
-
-#if !NET20 && !SILVERLIGHT
-    public class XNodeTestObject
-    {
-      public XDocument Document { get; set; }
-      public XElement Element { get; set; }
-    }
-#endif
-
-#if !SILVERLIGHT && !NETFX_CORE
-    public class XmlNodeTestObject
-    {
-      public XmlDocument Document { get; set; }
-    }
-#endif
-
-#if !NET20 && !SILVERLIGHT
-    [Test]
-    public void SerializeDeserializeXNodeProperties()
-    {
-      XNodeTestObject testObject = new XNodeTestObject();
-      testObject.Document = XDocument.Parse("<root>hehe, root</root>");
-      testObject.Element = XElement.Parse(@"<fifth xmlns:json=""http://json.org"" json:Awesome=""true"">element</fifth>");
-
-      string json = JsonConvert.SerializeObject(testObject, Formatting.Indented);
-      string expected = @"{
-  ""Document"": {
-    ""root"": ""hehe, root""
-  },
-  ""Element"": {
-    ""fifth"": {
-      ""@xmlns:json"": ""http://json.org"",
-      ""@json:Awesome"": ""true"",
-      ""#text"": ""element""
-    }
-  }
-}";
-      Assert.AreEqual(expected, json);
-
-      XNodeTestObject newTestObject = JsonConvert.DeserializeObject<XNodeTestObject>(json);
-      Assert.AreEqual(testObject.Document.ToString(), newTestObject.Document.ToString());
-      Assert.AreEqual(testObject.Element.ToString(), newTestObject.Element.ToString());
-
-      Assert.IsNull(newTestObject.Element.Parent);
-    }
-#endif
-
-#if !SILVERLIGHT && !NETFX_CORE
-    [Test]
-    public void SerializeDeserializeXmlNodeProperties()
-    {
-      XmlNodeTestObject testObject = new XmlNodeTestObject();
-      XmlDocument document = new XmlDocument();
-      document.LoadXml("<root>hehe, root</root>");
-      testObject.Document = document;
-
-      string json = JsonConvert.SerializeObject(testObject, Formatting.Indented);
-      string expected = @"{
-  ""Document"": {
-    ""root"": ""hehe, root""
-  }
-}";
-      Assert.AreEqual(expected, json);
-
-      XmlNodeTestObject newTestObject = JsonConvert.DeserializeObject<XmlNodeTestObject>(json);
-      Assert.AreEqual(testObject.Document.InnerXml, newTestObject.Document.InnerXml);
-    }
-#endif
-
-    [Test]
-    public void FullClientMapSerialization()
-    {
-      ClientMap source = new ClientMap()
-        {
-          position = new Pos() {X = 100, Y = 200},
-          center = new PosDouble() {X = 251.6, Y = 361.3}
-        };
-
-      string json = JsonConvert.SerializeObject(source, new PosConverter(), new PosDoubleConverter());
-      Assert.AreEqual("{\"position\":new Pos(100,200),\"center\":new PosD(251.6,361.3)}", json);
-    }
-
-    public class ClientMap
-    {
-      public Pos position { get; set; }
-      public PosDouble center { get; set; }
-    }
-
-    public class Pos
-    {
-      public int X { get; set; }
-      public int Y { get; set; }
-    }
-
-    public class PosDouble
-    {
-      public double X { get; set; }
-      public double Y { get; set; }
-    }
-
-    public class PosConverter : JsonConverter
-    {
-      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-      {
-        Pos p = (Pos) value;
-
-        if (p != null)
-          writer.WriteRawValue(String.Format("new Pos({0},{1})", p.X, p.Y));
-        else
-          writer.WriteNull();
-      }
-
-      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-      {
-        throw new NotImplementedException();
-      }
-
-      public override bool CanConvert(Type objectType)
-      {
-        return objectType.IsAssignableFrom(typeof (Pos));
-      }
-    }
-
-    public class PosDoubleConverter : JsonConverter
-    {
-      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-      {
-        PosDouble p = (PosDouble) value;
-
-        if (p != null)
-          writer.WriteRawValue(String.Format(CultureInfo.InvariantCulture, "new PosD({0},{1})", p.X, p.Y));
-        else
-          writer.WriteNull();
-      }
-
-      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-      {
-        throw new NotImplementedException();
-      }
-
-      public override bool CanConvert(Type objectType)
-      {
-        return objectType.IsAssignableFrom(typeof (PosDouble));
-      }
-    }
-
-    [Test]
-    public void TestEscapeDictionaryStrings()
-    {
-      const string s = @"host\user";
-      string serialized = JsonConvert.SerializeObject(s);
-      Assert.AreEqual(@"""host\\user""", serialized);
-
-      Dictionary<int, object> d1 = new Dictionary<int, object>();
-      d1.Add(5, s);
-      Assert.AreEqual(@"{""5"":""host\\user""}", JsonConvert.SerializeObject(d1));
-
-      Dictionary<string, object> d2 = new Dictionary<string, object>();
-      d2.Add(s, 5);
-      Assert.AreEqual(@"{""host\\user"":5}", JsonConvert.SerializeObject(d2));
-    }
-
-    public class GenericListTestClass
-    {
-      public List<string> GenericList { get; set; }
-
-      public GenericListTestClass()
-      {
-        GenericList = new List<string>();
-      }
-    }
-
-    [Test]
-    public void DeserializeExistingGenericList()
-    {
-      GenericListTestClass c = new GenericListTestClass();
-      c.GenericList.Add("1");
-      c.GenericList.Add("2");
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      GenericListTestClass newValue = JsonConvert.DeserializeObject<GenericListTestClass>(json);
-      Assert.AreEqual(2, newValue.GenericList.Count);
-      Assert.AreEqual(typeof (List<string>), newValue.GenericList.GetType());
-    }
-
-    [Test]
-    public void DeserializeSimpleKeyValuePair()
-    {
-      List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>();
-      list.Add(new KeyValuePair<string, string>("key1", "value1"));
-      list.Add(new KeyValuePair<string, string>("key2", "value2"));
-
-      string json = JsonConvert.SerializeObject(list);
-
-      Assert.AreEqual(@"[{""Key"":""key1"",""Value"":""value1""},{""Key"":""key2"",""Value"":""value2""}]", json);
-
-      List<KeyValuePair<string, string>> result = JsonConvert.DeserializeObject<List<KeyValuePair<string, string>>>(json);
-      Assert.AreEqual(2, result.Count);
-      Assert.AreEqual("key1", result[0].Key);
-      Assert.AreEqual("value1", result[0].Value);
-      Assert.AreEqual("key2", result[1].Key);
-      Assert.AreEqual("value2", result[1].Value);
-    }
-
-    [Test]
-    public void DeserializeComplexKeyValuePair()
-    {
-      DateTime dateTime = new DateTime(2000, 12, 1, 23, 1, 1, DateTimeKind.Utc);
-
-      List<KeyValuePair<string, WagePerson>> list = new List<KeyValuePair<string, WagePerson>>();
-      list.Add(new KeyValuePair<string, WagePerson>("key1", new WagePerson
-        {
-          BirthDate = dateTime,
-          Department = "Department1",
-          LastModified = dateTime,
-          HourlyWage = 1
-        }));
-      list.Add(new KeyValuePair<string, WagePerson>("key2", new WagePerson
-        {
-          BirthDate = dateTime,
-          Department = "Department2",
-          LastModified = dateTime,
-          HourlyWage = 2
-        }));
-
-      string json = JsonConvert.SerializeObject(list, Formatting.Indented);
-
-      Assert.AreEqual(@"[
-  {
-    ""Key"": ""key1"",
-    ""Value"": {
-      ""HourlyWage"": 1.0,
-      ""Name"": null,
-      ""BirthDate"": ""2000-12-01T23:01:01Z"",
-      ""LastModified"": ""2000-12-01T23:01:01Z""
-    }
-  },
-  {
-    ""Key"": ""key2"",
-    ""Value"": {
-      ""HourlyWage"": 2.0,
-      ""Name"": null,
-      ""BirthDate"": ""2000-12-01T23:01:01Z"",
-      ""LastModified"": ""2000-12-01T23:01:01Z""
-    }
-  }
-]", json);
-
-      List<KeyValuePair<string, WagePerson>> result = JsonConvert.DeserializeObject<List<KeyValuePair<string, WagePerson>>>(json);
-      Assert.AreEqual(2, result.Count);
-      Assert.AreEqual("key1", result[0].Key);
-      Assert.AreEqual(1, result[0].Value.HourlyWage);
-      Assert.AreEqual("key2", result[1].Key);
-      Assert.AreEqual(2, result[1].Value.HourlyWage);
-    }
-
-    public class StringListAppenderConverter : JsonConverter
-    {
-      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-      {
-        writer.WriteValue(value);
-      }
-
-      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-      {
-        List<string> existingStrings = (List<string>) existingValue;
-        List<string> newStrings = new List<string>(existingStrings);
-
-        reader.Read();
-
-        while (reader.TokenType != JsonToken.EndArray)
-        {
-          string s = (string) reader.Value;
-          newStrings.Add(s);
-
-          reader.Read();
-        }
-
-        return newStrings;
-      }
-
-      public override bool CanConvert(Type objectType)
-      {
-        return (objectType == typeof (List<string>));
-      }
-    }
-
-    [Test]
-    public void StringListAppenderConverterTest()
-    {
-      Movie p = new Movie();
-      p.ReleaseCountries = new List<string> {"Existing"};
-
-      JsonConvert.PopulateObject("{'ReleaseCountries':['Appended']}", p, new JsonSerializerSettings
-        {
-          Converters = new List<JsonConverter> {new StringListAppenderConverter()}
-        });
-
-      Assert.AreEqual(2, p.ReleaseCountries.Count);
-      Assert.AreEqual("Existing", p.ReleaseCountries[0]);
-      Assert.AreEqual("Appended", p.ReleaseCountries[1]);
-    }
-
-    public class StringAppenderConverter : JsonConverter
-    {
-      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-      {
-        writer.WriteValue(value);
-      }
-
-      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-      {
-        string existingString = (string) existingValue;
-        string newString = existingString + (string) reader.Value;
-
-        return newString;
-      }
-
-      public override bool CanConvert(Type objectType)
-      {
-        return (objectType == typeof (string));
-      }
-    }
-
-    [Test]
-    public void StringAppenderConverterTest()
-    {
-      Movie p = new Movie();
-      p.Name = "Existing,";
-
-      JsonConvert.PopulateObject("{'Name':'Appended'}", p, new JsonSerializerSettings
-        {
-          Converters = new List<JsonConverter> {new StringAppenderConverter()}
-        });
-
-      Assert.AreEqual("Existing,Appended", p.Name);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Additional content found in JSON reference object. A JSON reference object should only have a $ref property. Line 6, position 11."
-#endif
-      )]
-    public void SerializeRefAdditionalContent()
-    {
-      //Additional text found in JSON string after finishing deserializing object.
-      //Test 1
-      var reference = new Dictionary<string, object>();
-      reference.Add("$ref", "Persons");
-      reference.Add("$id", 1);
-
-      var child = new Dictionary<string, object>();
-      child.Add("_id", 2);
-      child.Add("Name", "Isabell");
-      child.Add("Father", reference);
-
-      var json = JsonConvert.SerializeObject(child, Formatting.Indented);
-      JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
-    }
-
-    [Test]
-    public void SerializeRefBadType()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("JSON reference $ref property must have a string or null value. Line 5, position 14.",
-        () =>
-        {
-          //Additional text found in JSON string after finishing deserializing object.
-          //Test 1
-          var reference = new Dictionary<string, object>();
-          reference.Add("$ref", 1);
-          reference.Add("$id", 1);
-
-          var child = new Dictionary<string, object>();
-          child.Add("_id", 2);
-          child.Add("Name", "Isabell");
-          child.Add("Father", reference);
-
-          var json = JsonConvert.SerializeObject(child, Formatting.Indented);
-          JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
-        });
-    }
-
-    [Test]
-    public void SerializeRefNull()
-    {
-      var reference = new Dictionary<string, object>();
-      reference.Add("$ref", null);
-      reference.Add("$id", null);
-      reference.Add("blah", "blah!");
-
-      var child = new Dictionary<string, object>();
-      child.Add("_id", 2);
-      child.Add("Name", "Isabell");
-      child.Add("Father", reference);
-
-      var json = JsonConvert.SerializeObject(child);
-      Dictionary<string, object> result = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
-
-      Assert.AreEqual(3, result.Count);
-      Assert.AreEqual(1, ((JObject) result["Father"]).Count);
-      Assert.AreEqual("blah!", (string) ((JObject) result["Father"])["blah"]);
-    }
-
-    public class ConstructorCompexIgnoredProperty
-    {
-      [JsonIgnore]
-      public Product Ignored { get; set; }
-
-      public string First { get; set; }
-      public int Second { get; set; }
-
-      public ConstructorCompexIgnoredProperty(string first, int second)
-      {
-        First = first;
-        Second = second;
-      }
-    }
-
-    [Test]
-    public void DeserializeIgnoredPropertyInConstructor()
-    {
-      string json = @"{""First"":""First"",""Second"":2,""Ignored"":{""Name"":""James""},""AdditionalContent"":{""LOL"":true}}";
-
-      ConstructorCompexIgnoredProperty cc = JsonConvert.DeserializeObject<ConstructorCompexIgnoredProperty>(json);
-      Assert.AreEqual("First", cc.First);
-      Assert.AreEqual(2, cc.Second);
-      Assert.AreEqual(null, cc.Ignored);
-    }
-
-    public class ShouldSerializeTestClass
-    {
-      internal bool _shouldSerializeName;
-
-      public string Name { get; set; }
-      public int Age { get; set; }
-
-      public void ShouldSerializeAge()
-      {
-        // dummy. should never be used because it doesn't return bool
-      }
-
-      public bool ShouldSerializeName()
-      {
-        return _shouldSerializeName;
-      }
-    }
-
-    [Test]
-    public void ShouldSerializeTest()
-    {
-      ShouldSerializeTestClass c = new ShouldSerializeTestClass();
-      c.Name = "James";
-      c.Age = 27;
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Age"": 27
-}", json);
-
-      c._shouldSerializeName = true;
-      json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""James"",
-  ""Age"": 27
-}", json);
-
-      ShouldSerializeTestClass deserialized = JsonConvert.DeserializeObject<ShouldSerializeTestClass>(json);
-      Assert.AreEqual("James", deserialized.Name);
-      Assert.AreEqual(27, deserialized.Age);
-    }
-
-    public class Employee
-    {
-      public string Name { get; set; }
-      public Employee Manager { get; set; }
-
-      public bool ShouldSerializeManager()
-      {
-        return (Manager != this);
-      }
-    }
-
-    [Test]
-    public void ShouldSerializeExample()
-    {
-      Employee joe = new Employee();
-      joe.Name = "Joe Employee";
-      Employee mike = new Employee();
-      mike.Name = "Mike Manager";
-
-      joe.Manager = mike;
-      mike.Manager = mike;
-
-      string json = JsonConvert.SerializeObject(new[] {joe, mike}, Formatting.Indented);
-      // [
-      //   {
-      //     "Name": "Joe Employee",
-      //     "Manager": {
-      //       "Name": "Mike Manager"
-      //     }
-      //   },
-      //   {
-      //     "Name": "Mike Manager"
-      //   }
-      // ]
-
-      Console.WriteLine(json);
-    }
-
-    public class SpecifiedTestClass
-    {
-      private bool _nameSpecified;
-
-      public string Name { get; set; }
-      public int Age { get; set; }
-      public int Weight { get; set; }
-      public int Height { get; set; }
-      public int FavoriteNumber { get; set; }
-
-      // dummy. should never be used because it isn't of type bool
-      [JsonIgnore]
-      public long AgeSpecified { get; set; }
-
-      [JsonIgnore]
-      public bool NameSpecified
-      {
-        get { return _nameSpecified; }
-        set { _nameSpecified = value; }
-      }
-
-      [JsonIgnore] public bool WeightSpecified;
-
-      [JsonIgnore] [System.Xml.Serialization.XmlIgnoreAttribute] public bool HeightSpecified;
-
-      [JsonIgnore]
-
-      public bool FavoriteNumberSpecified
-      {
-        // get only example
-        get { return FavoriteNumber != 0; }
-      }
-    }
-
-    [Test]
-    public void SpecifiedTest()
-    {
-      SpecifiedTestClass c = new SpecifiedTestClass();
-      c.Name = "James";
-      c.Age = 27;
-      c.NameSpecified = false;
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Age"": 27
-}", json);
-
-      SpecifiedTestClass deserialized = JsonConvert.DeserializeObject<SpecifiedTestClass>(json);
-      Assert.IsNull(deserialized.Name);
-      Assert.IsFalse(deserialized.NameSpecified);
-      Assert.IsFalse(deserialized.WeightSpecified);
-      Assert.IsFalse(deserialized.HeightSpecified);
-      Assert.IsFalse(deserialized.FavoriteNumberSpecified);
-      Assert.AreEqual(27, deserialized.Age);
-
-      c.NameSpecified = true;
-      c.WeightSpecified = true;
-      c.HeightSpecified = true;
-      c.FavoriteNumber = 23;
-      json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""James"",
-  ""Age"": 27,
-  ""Weight"": 0,
-  ""Height"": 0,
-  ""FavoriteNumber"": 23
-}", json);
-
-      deserialized = JsonConvert.DeserializeObject<SpecifiedTestClass>(json);
-      Assert.AreEqual("James", deserialized.Name);
-      Assert.IsTrue(deserialized.NameSpecified);
-      Assert.IsTrue(deserialized.WeightSpecified);
-      Assert.IsTrue(deserialized.HeightSpecified);
-      Assert.IsTrue(deserialized.FavoriteNumberSpecified);
-      Assert.AreEqual(27, deserialized.Age);
-      Assert.AreEqual(23, deserialized.FavoriteNumber);
-    }
-
-    //    [Test]
-    //    public void XmlSerializerSpecifiedTrueTest()
-    //    {
-    //      XmlSerializer s = new XmlSerializer(typeof(OptionalOrder));
-
-    //      StringWriter sw = new StringWriter();
-    //      s.Serialize(sw, new OptionalOrder() { FirstOrder = "First", FirstOrderSpecified = true });
-
-    //      Console.WriteLine(sw.ToString());
-
-    //      string xml = @"<?xml version=""1.0"" encoding=""utf-16""?>
-    //<OptionalOrder xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
-    //  <FirstOrder>First</FirstOrder>
-    //</OptionalOrder>";
-
-    //      OptionalOrder o = (OptionalOrder)s.Deserialize(new StringReader(xml));
-    //      Console.WriteLine(o.FirstOrder);
-    //      Console.WriteLine(o.FirstOrderSpecified);
-    //    }
-
-    //    [Test]
-    //    public void XmlSerializerSpecifiedFalseTest()
-    //    {
-    //      XmlSerializer s = new XmlSerializer(typeof(OptionalOrder));
-
-    //      StringWriter sw = new StringWriter();
-    //      s.Serialize(sw, new OptionalOrder() { FirstOrder = "First", FirstOrderSpecified = false });
-
-    //      Console.WriteLine(sw.ToString());
-
-    //      //      string xml = @"<?xml version=""1.0"" encoding=""utf-16""?>
-    //      //<OptionalOrder xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
-    //      //  <FirstOrder>First</FirstOrder>
-    //      //</OptionalOrder>";
-
-    //      //      OptionalOrder o = (OptionalOrder)s.Deserialize(new StringReader(xml));
-    //      //      Console.WriteLine(o.FirstOrder);
-    //      //      Console.WriteLine(o.FirstOrderSpecified);
-    //    }
-
-    public class OptionalOrder
-    {
-      // This field shouldn't be serialized 
-      // if it is uninitialized.
-      public string FirstOrder;
-      // Use the XmlIgnoreAttribute to ignore the 
-      // special field named "FirstOrderSpecified".
-      [System.Xml.Serialization.XmlIgnoreAttribute] public bool FirstOrderSpecified;
-    }
-
-    public class FamilyDetails
-    {
-      public string Name { get; set; }
-      public int NumberOfChildren { get; set; }
-
-      [JsonIgnore]
-      public bool NumberOfChildrenSpecified { get; set; }
-    }
-
-    [Test]
-    public void SpecifiedExample()
-    {
-      FamilyDetails joe = new FamilyDetails();
-      joe.Name = "Joe Family Details";
-      joe.NumberOfChildren = 4;
-      joe.NumberOfChildrenSpecified = true;
-
-      FamilyDetails martha = new FamilyDetails();
-      martha.Name = "Martha Family Details";
-      martha.NumberOfChildren = 3;
-      martha.NumberOfChildrenSpecified = false;
-
-      string json = JsonConvert.SerializeObject(new[] {joe, martha}, Formatting.Indented);
-      //[
-      //  {
-      //    "Name": "Joe Family Details",
-      //    "NumberOfChildren": 4
-      //  },
-      //  {
-      //    "Name": "Martha Family Details"
-      //  }
-      //]
-      Console.WriteLine(json);
-
-      string mikeString = "{\"Name\": \"Mike Person\"}";
-      FamilyDetails mike = JsonConvert.DeserializeObject<FamilyDetails>(mikeString);
-
-      Console.WriteLine("mikeString specifies number of children: {0}", mike.NumberOfChildrenSpecified);
-
-      string mikeFullDisclosureString = "{\"Name\": \"Mike Person\", \"NumberOfChildren\": \"0\"}";
-      mike = JsonConvert.DeserializeObject<FamilyDetails>(mikeFullDisclosureString);
-
-      Console.WriteLine("mikeString specifies number of children: {0}", mike.NumberOfChildrenSpecified);
-    }
-
-    public class DictionaryKey
-    {
-      public string Value { get; set; }
-
-      public override string ToString()
-      {
-        return Value;
-      }
-
-      public static implicit operator DictionaryKey(string value)
-      {
-        return new DictionaryKey() {Value = value};
-      }
-    }
-
-    [Test]
-    public void SerializeDeserializeDictionaryKey()
-    {
-      Dictionary<DictionaryKey, string> dictionary = new Dictionary<DictionaryKey, string>();
-
-      dictionary.Add(new DictionaryKey() {Value = "First!"}, "First");
-      dictionary.Add(new DictionaryKey() {Value = "Second!"}, "Second");
-
-      string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""First!"": ""First"",
-  ""Second!"": ""Second""
-}", json);
-
-      Dictionary<DictionaryKey, string> newDictionary =
-        JsonConvert.DeserializeObject<Dictionary<DictionaryKey, string>>(json);
-
-      Assert.AreEqual(2, newDictionary.Count);
-    }
-
-    [Test]
-    public void SerializeNullableArray()
-    {
-      string jsonText = JsonConvert.SerializeObject(new double?[] {2.4, 4.3, null}, Formatting.Indented);
-
-      Assert.AreEqual(@"[
-  2.4,
-  4.3,
-  null
-]", jsonText);
-
-      double?[] d = (double?[]) JsonConvert.DeserializeObject(jsonText, typeof (double?[]));
-
-      Assert.AreEqual(3, d.Length);
-      Assert.AreEqual(2.4, d[0]);
-      Assert.AreEqual(4.3, d[1]);
-      Assert.AreEqual(null, d[2]);
-    }
-
-#if !SILVERLIGHT && !NET20 && !PocketPC
-    [Test]
-    public void SerializeHashSet()
-    {
-      string jsonText = JsonConvert.SerializeObject(new HashSet<string>()
-        {
-          "One",
-          "2",
-          "III"
-        }, Formatting.Indented);
-
-      Assert.AreEqual(@"[
-  ""One"",
-  ""2"",
-  ""III""
-]", jsonText);
-
-      HashSet<string> d = JsonConvert.DeserializeObject<HashSet<string>>(jsonText);
-
-      Assert.AreEqual(3, d.Count);
-      Assert.IsTrue(d.Contains("One"));
-      Assert.IsTrue(d.Contains("2"));
-      Assert.IsTrue(d.Contains("III"));
-    }
-#endif
-
-    private class MyClass
-    {
-      public byte[] Prop1 { get; set; }
-
-      public MyClass()
-      {
-        Prop1 = new byte[0];
-      }
-    }
-
-    [Test]
-    public void DeserializeByteArray()
-    {
-      JsonSerializer serializer1 = new JsonSerializer();
-      serializer1.Converters.Add(new IsoDateTimeConverter());
-      serializer1.NullValueHandling = NullValueHandling.Ignore;
-
-      string json = @"[{""Prop1"":""""},{""Prop1"":""""}]";
-
-      JsonTextReader reader = new JsonTextReader(new StringReader(json));
-
-      MyClass[] z = (MyClass[]) serializer1.Deserialize(reader, typeof (MyClass[]));
-      Assert.AreEqual(2, z.Length);
-      Assert.AreEqual(0, z[0].Prop1.Length);
-      Assert.AreEqual(0, z[1].Prop1.Length);
-    }
-
-#if !NET20 && !PocketPC && !SILVERLIGHT && !NETFX_CORE
-    public class StringDictionaryTestClass
-    {
-      public StringDictionary StringDictionaryProperty { get; set; }
-    }
-
-    [Test]
-    [ExpectedException(typeof (Exception), ExpectedMessage = "Cannot create and populate list type System.Collections.Specialized.StringDictionary.")]
-    public void StringDictionaryTest()
-    {
-      StringDictionaryTestClass s1 = new StringDictionaryTestClass()
-        {
-          StringDictionaryProperty = new StringDictionary()
-            {
-              {"1", "One"},
-              {"2", "II"},
-              {"3", "3"}
-            }
-        };
-
-      string json = JsonConvert.SerializeObject(s1, Formatting.Indented);
-
-      JsonConvert.DeserializeObject<StringDictionaryTestClass>(json);
-    }
-#endif
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public struct StructWithAttribute
-    {
-      public string MyString { get; set; }
-
-      [JsonProperty]
-      public int MyInt { get; set; }
-    }
-
-    [Test]
-    public void SerializeStructWithJsonObjectAttribute()
-    {
-      StructWithAttribute testStruct = new StructWithAttribute
-        {
-          MyInt = int.MaxValue
-        };
-
-      string json = JsonConvert.SerializeObject(testStruct, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""MyInt"": 2147483647
-}", json);
-
-      StructWithAttribute newStruct = JsonConvert.DeserializeObject<StructWithAttribute>(json);
-
-      Assert.AreEqual(int.MaxValue, newStruct.MyInt);
-    }
-
-    public class TimeZoneOffsetObject
-    {
-      public DateTimeOffset Offset { get; set; }
-    }
-
-#if !NET20
-    [Test]
-    public void ReadWriteTimeZoneOffsetIso()
-    {
-      var serializeObject = JsonConvert.SerializeObject(new TimeZoneOffsetObject
-        {
-          Offset = new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6))
-        });
-
-      Assert.AreEqual("{\"Offset\":\"2000-01-01T00:00:00+06:00\"}", serializeObject);
-      var deserializeObject = JsonConvert.DeserializeObject<TimeZoneOffsetObject>(serializeObject);
-      Assert.AreEqual(TimeSpan.FromHours(6), deserializeObject.Offset.Offset);
-      Assert.AreEqual(new DateTime(2000, 1, 1), deserializeObject.Offset.Date);
-    }
-
-    [Test]
-    public void DeserializePropertyNullableDateTimeOffsetExactIso()
-    {
-      NullableDateTimeTestClass d = JsonConvert.DeserializeObject<NullableDateTimeTestClass>("{\"DateTimeOffsetField\":\"2000-01-01T00:00:00+06:00\"}");
-      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), d.DateTimeOffsetField);
-    }
-
-    [Test]
-    public void ReadWriteTimeZoneOffsetMsAjax()
-    {
-      var serializeObject = JsonConvert.SerializeObject(new TimeZoneOffsetObject
-      {
-        Offset = new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6))
-      }, Formatting.None, new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat });
-
-      Assert.AreEqual("{\"Offset\":\"\\/Date(946663200000+0600)\\/\"}", serializeObject);
-      var deserializeObject = JsonConvert.DeserializeObject<TimeZoneOffsetObject>(serializeObject);
-      Assert.AreEqual(TimeSpan.FromHours(6), deserializeObject.Offset.Offset);
-      Assert.AreEqual(new DateTime(2000, 1, 1), deserializeObject.Offset.Date);
-    }
-
-    [Test]
-    public void DeserializePropertyNullableDateTimeOffsetExactMsAjax()
-    {
-      NullableDateTimeTestClass d = JsonConvert.DeserializeObject<NullableDateTimeTestClass>("{\"DateTimeOffsetField\":\"\\/Date(946663200000+0600)\\/\"}");
-      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), d.DateTimeOffsetField);
-    }
-#endif
-
-    public abstract class LogEvent
-    {
-      [JsonProperty("event")]
-      public abstract string EventName { get; }
-    }
-
-    public class DerivedEvent : LogEvent
-    {
-      public override string EventName
-      {
-        get { return "derived"; }
-      }
-    }
-
-    [Test]
-    public void OverridenPropertyMembers()
-    {
-      string json = JsonConvert.SerializeObject(new DerivedEvent(), Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""event"": ""derived""
-}", json);
-    }
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    [Test]
-    public void SerializeExpandoObject()
-    {
-      dynamic expando = new ExpandoObject();
-      expando.Int = 1;
-      expando.Decimal = 99.9d;
-      expando.Complex = new ExpandoObject();
-      expando.Complex.String = "I am a string";
-      expando.Complex.DateTime = new DateTime(2000, 12, 20, 18, 55, 0, DateTimeKind.Utc);
-
-      string json = JsonConvert.SerializeObject(expando, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Int"": 1,
-  ""Decimal"": 99.9,
-  ""Complex"": {
-    ""String"": ""I am a string"",
-    ""DateTime"": ""2000-12-20T18:55:00Z""
-  }
-}", json);
-
-      IDictionary<string, object> newExpando = JsonConvert.DeserializeObject<ExpandoObject>(json);
-
-      CustomAssert.IsInstanceOfType(typeof (long), newExpando["Int"]);
-      Assert.AreEqual((long)expando.Int, newExpando["Int"]);
-
-      CustomAssert.IsInstanceOfType(typeof (double), newExpando["Decimal"]);
-      Assert.AreEqual(expando.Decimal, newExpando["Decimal"]);
-
-      CustomAssert.IsInstanceOfType(typeof (ExpandoObject), newExpando["Complex"]);
-      IDictionary<string, object> o = (ExpandoObject) newExpando["Complex"];
-
-      CustomAssert.IsInstanceOfType(typeof (string), o["String"]);
-      Assert.AreEqual(expando.Complex.String, o["String"]);
-
-      CustomAssert.IsInstanceOfType(typeof (DateTime), o["DateTime"]);
-      Assert.AreEqual(expando.Complex.DateTime, o["DateTime"]);
-    }
-#endif
-
-    [Test]
-    public void DeserializeDecimalExact()
-    {
-      decimal d = JsonConvert.DeserializeObject<decimal>("123456789876543.21");
-      Assert.AreEqual(123456789876543.21m, d);
-    }
-
-    [Test]
-    public void DeserializeNullableDecimalExact()
-    {
-      decimal? d = JsonConvert.DeserializeObject<decimal?>("123456789876543.21");
-      Assert.AreEqual(123456789876543.21m, d);
-    }
-
-    [Test]
-    public void DeserializeDecimalPropertyExact()
-    {
-      string json = "{Amount:123456789876543.21}";
-      Invoice i = JsonConvert.DeserializeObject<Invoice>(json);
-      Assert.AreEqual(123456789876543.21m, i.Amount);
-    }
-
-    [Test]
-    public void DeserializeDecimalArrayExact()
-    {
-      string json = "[123456789876543.21]";
-      IList<decimal> a = JsonConvert.DeserializeObject<IList<decimal>>(json);
-      Assert.AreEqual(123456789876543.21m, a[0]);
-    }
-
-    [Test]
-    public void DeserializeDecimalDictionaryExact()
-    {
-      string json = "{'Value':123456789876543.21}";
-      IDictionary<string, decimal> d = JsonConvert.DeserializeObject<IDictionary<string, decimal>>(json);
-      Assert.AreEqual(123456789876543.21m, d["Value"]);
-    }
-
-    public struct Vector
-    {
-      public float X;
-      public float Y;
-      public float Z;
-
-      public override string ToString()
-      {
-        return string.Format("({0},{1},{2})", X, Y, Z);
-      }
-    }
-
-    public class VectorParent
-    {
-      public Vector Position;
-    }
-
-    [Test]
-    public void DeserializeStructProperty()
-    {
-      VectorParent obj = new VectorParent();
-      obj.Position = new Vector {X = 1, Y = 2, Z = 3};
-
-      string str = JsonConvert.SerializeObject(obj);
-
-      obj = JsonConvert.DeserializeObject<VectorParent>(str);
-
-      Assert.AreEqual(1, obj.Position.X);
-      Assert.AreEqual(2, obj.Position.Y);
-      Assert.AreEqual(3, obj.Position.Z);
-    }
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public class Derived : Base
-    {
-      [JsonProperty]
-      public string IDoWork { get; private set; }
-
-      private Derived()
-      {
-      }
-
-      internal Derived(string dontWork, string doWork)
-        : base(dontWork)
-      {
-        IDoWork = doWork;
-      }
-    }
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public class Base
-    {
-      [JsonProperty]
-      public string IDontWork { get; private set; }
-
-      protected Base()
-      {
-      }
-
-      internal Base(string dontWork)
-      {
-        IDontWork = dontWork;
-      }
-    }
-
-    [Test]
-    public void PrivateSetterOnBaseClassProperty()
-    {
-      var derived = new Derived("meh", "woo");
-
-      var settings = new JsonSerializerSettings
-        {
-          TypeNameHandling = TypeNameHandling.Objects,
-          ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
-        };
-
-      string json = JsonConvert.SerializeObject(derived, Formatting.Indented, settings);
-
-      var meh = JsonConvert.DeserializeObject<Base>(json, settings);
-
-      Assert.AreEqual(((Derived) meh).IDoWork, "woo");
-      Assert.AreEqual(meh.IDontWork, "meh");
-    }
-
-#if !(SILVERLIGHT || PocketPC || NET20 || NETFX_CORE)
-    [DataContract]
-    public struct StructISerializable : ISerializable
-    {
-      private string _name;
-
-      public StructISerializable(SerializationInfo info, StreamingContext context)
-      {
-        _name = info.GetString("Name");
-      }
-
-      [DataMember]
-      public string Name
-      {
-        get { return _name; }
-        set { _name = value; }
-      }
-
-      public void GetObjectData(SerializationInfo info, StreamingContext context)
-      {
-        info.AddValue("Name", _name);
-      }
-    }
-
-    [DataContract]
-    public class NullableStructPropertyClass
-    {
-      private StructISerializable _foo1;
-      private StructISerializable? _foo2;
-
-      [DataMember]
-      public StructISerializable Foo1
-      {
-        get { return _foo1; }
-        set { _foo1 = value; }
-      }
-
-      [DataMember]
-      public StructISerializable? Foo2
-      {
-        get { return _foo2; }
-        set { _foo2 = value; }
-      }
-    }
-
-    [Test]
-    public void DeserializeNullableStruct()
-    {
-      NullableStructPropertyClass nullableStructPropertyClass = new NullableStructPropertyClass();
-      nullableStructPropertyClass.Foo1 = new StructISerializable() {Name = "foo 1"};
-      nullableStructPropertyClass.Foo2 = new StructISerializable() {Name = "foo 2"};
-
-      NullableStructPropertyClass barWithNull = new NullableStructPropertyClass();
-      barWithNull.Foo1 = new StructISerializable() {Name = "foo 1"};
-      barWithNull.Foo2 = null;
-
-      //throws error on deserialization because bar1.Foo2 is of type Foo?
-      string s = JsonConvert.SerializeObject(nullableStructPropertyClass);
-      NullableStructPropertyClass deserialized = deserialize(s);
-      Assert.AreEqual(deserialized.Foo1.Name, "foo 1");
-      Assert.AreEqual(deserialized.Foo2.Value.Name, "foo 2");
-
-      //no error Foo2 is null
-      s = JsonConvert.SerializeObject(barWithNull);
-      deserialized = deserialize(s);
-      Assert.AreEqual(deserialized.Foo1.Name, "foo 1");
-      Assert.AreEqual(deserialized.Foo2, null);
-    }
-
-
-    private static NullableStructPropertyClass deserialize(string serStr)
-    {
-      return JsonConvert.DeserializeObject<NullableStructPropertyClass>(
-        serStr,
-        new JsonSerializerSettings
-          {
-            NullValueHandling = NullValueHandling.Ignore,
-            MissingMemberHandling = MissingMemberHandling.Ignore
-          });
-    }
-#endif
-
-    public class Response
-    {
-      public string Name { get; set; }
-      public JToken Data { get; set; }
-    }
-
-    [Test]
-    public void DeserializeJToken()
-    {
-      Response response = new Response
-        {
-          Name = "Success",
-          Data = new JObject(new JProperty("First", "Value1"), new JProperty("Second", "Value2"))
-        };
-
-      string json = JsonConvert.SerializeObject(response, Formatting.Indented);
-
-      Response deserializedResponse = JsonConvert.DeserializeObject<Response>(json);
-
-      Assert.AreEqual("Success", deserializedResponse.Name);
-      Assert.IsTrue(deserializedResponse.Data.DeepEquals(response.Data));
-    }
-
-    public abstract class Test<T>
-    {
-      public abstract T Value { get; set; }
-    }
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public class DecimalTest : Test<decimal>
-    {
-      protected DecimalTest()
-      {
-      }
-
-      public DecimalTest(decimal val)
-      {
-        Value = val;
-      }
-
-      [JsonProperty]
-      public override decimal Value { get; set; }
-    }
-
-    [Test]
-    public void OnError()
-    {
-      var data = new DecimalTest(decimal.MinValue);
-      var json = JsonConvert.SerializeObject(data);
-      var obj = JsonConvert.DeserializeObject<DecimalTest>(json);
-
-      Assert.AreEqual(decimal.MinValue, obj.Value);
-    }
-
-    public class NonPublicConstructorWithJsonConstructor
-    {
-      public string Value { get; private set; }
-      public string Constructor { get; private set; }
-
-      [JsonConstructor]
-      private NonPublicConstructorWithJsonConstructor()
-      {
-        Constructor = "NonPublic";
-      }
-
-      public NonPublicConstructorWithJsonConstructor(string value)
-      {
-        Value = value;
-        Constructor = "Public Paramatized";
-      }
-    }
-
-    [Test]
-    public void NonPublicConstructorWithJsonConstructorTest()
-    {
-      NonPublicConstructorWithJsonConstructor c = JsonConvert.DeserializeObject<NonPublicConstructorWithJsonConstructor>("{}");
-      Assert.AreEqual("NonPublic", c.Constructor);
-    }
-
-    public class PublicConstructorOverridenByJsonConstructor
-    {
-      public string Value { get; private set; }
-      public string Constructor { get; private set; }
-
-      public PublicConstructorOverridenByJsonConstructor()
-      {
-        Constructor = "NonPublic";
-      }
-
-      [JsonConstructor]
-      public PublicConstructorOverridenByJsonConstructor(string value)
-      {
-        Value = value;
-        Constructor = "Public Paramatized";
-      }
-    }
-
-    [Test]
-    public void PublicConstructorOverridenByJsonConstructorTest()
-    {
-      PublicConstructorOverridenByJsonConstructor c = JsonConvert.DeserializeObject<PublicConstructorOverridenByJsonConstructor>("{Value:'value!'}");
-      Assert.AreEqual("Public Paramatized", c.Constructor);
-      Assert.AreEqual("value!", c.Value);
-    }
-
-    public class MultipleParamatrizedConstructorsJsonConstructor
-    {
-      public string Value { get; private set; }
-      public int Age { get; private set; }
-      public string Constructor { get; private set; }
-
-      public MultipleParamatrizedConstructorsJsonConstructor(string value)
-      {
-        Value = value;
-        Constructor = "Public Paramatized 1";
-      }
-
-      [JsonConstructor]
-      public MultipleParamatrizedConstructorsJsonConstructor(string value, int age)
-      {
-        Value = value;
-        Age = age;
-        Constructor = "Public Paramatized 2";
-      }
-    }
-
-    [Test]
-    public void MultipleParamatrizedConstructorsJsonConstructorTest()
-    {
-      MultipleParamatrizedConstructorsJsonConstructor c = JsonConvert.DeserializeObject<MultipleParamatrizedConstructorsJsonConstructor>("{Value:'value!', Age:1}");
-      Assert.AreEqual("Public Paramatized 2", c.Constructor);
-      Assert.AreEqual("value!", c.Value);
-      Assert.AreEqual(1, c.Age);
-    }
-
-    public class EnumerableClass
-    {
-      public IEnumerable<string> Enumerable { get; set; }
-    }
-
-    [Test]
-    public void DeserializeEnumerable()
-    {
-      EnumerableClass c = new EnumerableClass
-        {
-          Enumerable = new List<string> {"One", "Two", "Three"}
-        };
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Enumerable"": [
-    ""One"",
-    ""Two"",
-    ""Three""
-  ]
-}", json);
-
-      EnumerableClass c2 = JsonConvert.DeserializeObject<EnumerableClass>(json);
-
-      Assert.AreEqual("One", c2.Enumerable.ElementAt(0));
-      Assert.AreEqual("Two", c2.Enumerable.ElementAt(1));
-      Assert.AreEqual("Three", c2.Enumerable.ElementAt(2));
-    }
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public class ItemBase
-    {
-      [JsonProperty]
-      public string Name { get; set; }
-    }
-
-    public class ComplexItem : ItemBase
-    {
-      public Stream Source { get; set; }
-    }
-
-    [Test]
-    public void SerializeAttributesOnBase()
-    {
-      ComplexItem i = new ComplexItem();
-
-      string json = JsonConvert.SerializeObject(i, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Name"": null
-}", json);
-    }
-
-    public class DeserializeStringConvert
-    {
-      public string Name { get; set; }
-      public int Age { get; set; }
-      public double Height { get; set; }
-      public decimal Price { get; set; }
-    }
-
-    [Test]
-    public void DeserializeStringEnglish()
-    {
-      string json = @"{
-  'Name': 'James Hughes',
-  'Age': '40',
-  'Height': '44.4',
-  'Price': '4'
-}";
-
-      DeserializeStringConvert p = JsonConvert.DeserializeObject<DeserializeStringConvert>(json);
-      Assert.AreEqual(40, p.Age);
-      Assert.AreEqual(44.4, p.Height);
-      Assert.AreEqual(4m, p.Price);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error converting value {null} to type 'System.DateTime'. Line 1, position 4."
-#endif
-      )]
-    public void DeserializeNullDateTimeValueTest()
-    {
-      JsonConvert.DeserializeObject("null", typeof (DateTime));
-    }
-
-    [Test]
-    public void DeserializeNullNullableDateTimeValueTest()
-    {
-      object dateTime = JsonConvert.DeserializeObject("null", typeof (DateTime?));
-
-      Assert.IsNull(dateTime);
-    }
-
-    [Test]
-    public void MultiIndexSuperTest()
-    {
-      MultiIndexSuper e = new MultiIndexSuper();
-
-      string json = JsonConvert.SerializeObject(e, Formatting.Indented);
-
-      Assert.AreEqual(@"{}", json);
-    }
-
-    public class MultiIndexSuper : MultiIndexBase
-    {
-
-    }
-
-    public abstract class MultiIndexBase
-    {
-      protected internal object this[string propertyName]
-      {
-        get { return null; }
-        set { }
-      }
-
-      protected internal object this[object property]
-      {
-        get { return null; }
-        set { }
-      }
-    }
-
-    public class CommentTestClass
-    {
-      public bool Indexed { get; set; }
-      public int StartYear { get; set; }
-      public IList<decimal> Values { get; set; }
-    }
-
-    [Test]
-    public void CommentTestClassTest()
-    {
-      string json = @"{""indexed"":true, ""startYear"":1939, ""values"":
-                            [  3000,  /* 1940-1949 */
-                               3000,   3600,   3600,   3600,   3600,   4200,   4200,   4200,   4200,   4800,  /* 1950-1959 */
-                               4800,   4800,   4800,   4800,   4800,   4800,   6600,   6600,   7800,   7800,  /* 1960-1969 */
-                               7800,   7800,   9000,  10800,  13200,  14100,  15300,  16500,  17700,  22900,  /* 1970-1979 */
-                              25900,  29700,  32400,  35700,  37800,  39600,  42000,  43800,  45000,  48000,  /* 1980-1989 */
-                              51300,  53400,  55500,  57600,  60600,  61200,  62700,  65400,  68400,  72600,  /* 1990-1999 */
-                              76200,  80400,  84900,  87000,  87900,  90000,  94200,  97500, 102000, 106800,  /* 2000-2009 */
-                             106800, 106800]  /* 2010-2011 */
-                                }";
-
-      CommentTestClass commentTestClass = JsonConvert.DeserializeObject<CommentTestClass>(json);
-
-      Assert.AreEqual(true, commentTestClass.Indexed);
-      Assert.AreEqual(1939, commentTestClass.StartYear);
-      Assert.AreEqual(63, commentTestClass.Values.Count);
-    }
-
-    private class DTOWithParameterisedConstructor
-    {
-      public DTOWithParameterisedConstructor(string A)
-      {
-        this.A = A;
-        B = 2;
-      }
-
-      public string A { get; set; }
-      public int? B { get; set; }
-    }
-
-    private class DTOWithoutParameterisedConstructor
-    {
-      public DTOWithoutParameterisedConstructor()
-      {
-        B = 2;
-      }
-
-      public string A { get; set; }
-      public int? B { get; set; }
-    }
-
-    [Test]
-    public void PopulationBehaviourForOmittedPropertiesIsTheSameForParameterisedConstructorAsForDefaultConstructor()
-    {
-      string json = @"{A:""Test""}";
-
-      var withoutParameterisedConstructor = JsonConvert.DeserializeObject<DTOWithoutParameterisedConstructor>(json);
-      var withParameterisedConstructor = JsonConvert.DeserializeObject<DTOWithParameterisedConstructor>(json);
-      Assert.AreEqual(withoutParameterisedConstructor.B, withParameterisedConstructor.B);
-    }
-
-    public class EnumerableArrayPropertyClass
-    {
-      public IEnumerable<int> Numbers
-      {
-        get
-        {
-          return new[] {1, 2, 3}; //fails
-          //return new List<int>(new[] { 1, 2, 3 }); //works
-        }
-      }
-    }
-
-    [Test]
-    public void SkipPopulatingArrayPropertyClass()
-    {
-      string json = JsonConvert.SerializeObject(new EnumerableArrayPropertyClass());
-      JsonConvert.DeserializeObject<EnumerableArrayPropertyClass>(json);
-    }
-
-#if !NET20
-    [DataContract]
-    public class BaseDataContract
-    {
-      [DataMember(Name = "virtualMember")]
-      public virtual string VirtualMember { get; set; }
-
-      [DataMember(Name = "nonVirtualMember")]
-      public string NonVirtualMember { get; set; }
-    }
-
-    public class ChildDataContract : BaseDataContract
-    {
-      public override string VirtualMember { get; set; }
-      public string NewMember { get; set; }
-    }
-
-    [Test]
-    public void ChildDataContractTest()
-    {
-      ChildDataContract cc = new ChildDataContract
-        {
-          VirtualMember = "VirtualMember!",
-          NonVirtualMember = "NonVirtualMember!"
-        };
-
-      string result = JsonConvert.SerializeObject(cc);
-      Assert.AreEqual(@"{""virtualMember"":""VirtualMember!"",""nonVirtualMember"":""NonVirtualMember!""}", result);
-    }
-#endif
-
-    [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
-    public class BaseObject
-    {
-      [JsonProperty(PropertyName = "virtualMember")]
-      public virtual string VirtualMember { get; set; }
-
-      [JsonProperty(PropertyName = "nonVirtualMember")]
-      public string NonVirtualMember { get; set; }
-    }
-
-    public class ChildObject : BaseObject
-    {
-      public override string VirtualMember { get; set; }
-      public string NewMember { get; set; }
-    }
-
-    public class ChildWithDifferentOverrideObject : BaseObject
-    {
-      [JsonProperty(PropertyName = "differentVirtualMember")]
-      public override string VirtualMember { get; set; }
-    }
-
-    [Test]
-    public void ChildObjectTest()
-    {
-      ChildObject cc = new ChildObject
-        {
-          VirtualMember = "VirtualMember!",
-          NonVirtualMember = "NonVirtualMember!"
-        };
-
-      string result = JsonConvert.SerializeObject(cc);
-      Assert.AreEqual(@"{""virtualMember"":""VirtualMember!"",""nonVirtualMember"":""NonVirtualMember!""}", result);
-    }
-
-    [Test]
-    public void ChildWithDifferentOverrideObjectTest()
-    {
-      ChildWithDifferentOverrideObject cc = new ChildWithDifferentOverrideObject
-        {
-          VirtualMember = "VirtualMember!",
-          NonVirtualMember = "NonVirtualMember!"
-        };
-
-      string result = JsonConvert.SerializeObject(cc);
-      Assert.AreEqual(@"{""differentVirtualMember"":""VirtualMember!"",""nonVirtualMember"":""NonVirtualMember!""}", result);
-    }
-
-    [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
-    public interface IInterfaceObject
-    {
-      [JsonProperty(PropertyName = "virtualMember")]
-      [JsonConverter(typeof (IsoDateTimeConverter))]
-      DateTime InterfaceMember { get; set; }
-    }
-
-    public class ImplementInterfaceObject : IInterfaceObject
-    {
-      public DateTime InterfaceMember { get; set; }
-      public string NewMember { get; set; }
-
-      [JsonProperty(PropertyName = "newMemberWithProperty")]
-      public string NewMemberWithProperty { get; set; }
-    }
-
-    [Test]
-    public void ImplementInterfaceObjectTest()
-    {
-      ImplementInterfaceObject cc = new ImplementInterfaceObject
-        {
-          InterfaceMember = new DateTime(2010, 12, 31, 0, 0, 0, DateTimeKind.Utc),
-          NewMember = "NewMember!"
-        };
-
-      string result = JsonConvert.SerializeObject(cc, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""virtualMember"": ""2010-12-31T00:00:00Z"",
-  ""newMemberWithProperty"": null
-}", result);
-    }
-
-    public class NonDefaultConstructorWithReadOnlyCollectionProperty
-    {
-      public string Title { get; set; }
-      public IList<string> Categories { get; private set; }
-
-      public NonDefaultConstructorWithReadOnlyCollectionProperty(string title)
-      {
-        Title = title;
-        Categories = new List<string>();
-      }
-    }
-
-    [Test]
-    public void NonDefaultConstructorWithReadOnlyCollectionPropertyTest()
-    {
-      NonDefaultConstructorWithReadOnlyCollectionProperty c1 = new NonDefaultConstructorWithReadOnlyCollectionProperty("blah");
-      c1.Categories.Add("one");
-      c1.Categories.Add("two");
-
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Title"": ""blah"",
-  ""Categories"": [
-    ""one"",
-    ""two""
-  ]
-}", json);
-
-      NonDefaultConstructorWithReadOnlyCollectionProperty c2 = JsonConvert.DeserializeObject<NonDefaultConstructorWithReadOnlyCollectionProperty>(json);
-      Assert.AreEqual(c1.Title, c2.Title);
-      Assert.AreEqual(c1.Categories.Count, c2.Categories.Count);
-      Assert.AreEqual("one", c2.Categories[0]);
-      Assert.AreEqual("two", c2.Categories[1]);
-    }
-
-    public class NonDefaultConstructorWithReadOnlyDictionaryProperty
-    {
-      public string Title { get; set; }
-      public IDictionary<string, int> Categories { get; private set; }
-
-      public NonDefaultConstructorWithReadOnlyDictionaryProperty(string title)
-      {
-        Title = title;
-        Categories = new Dictionary<string, int>();
-      }
-    }
-
-    [Test]
-    public void NonDefaultConstructorWithReadOnlyDictionaryPropertyTest()
-    {
-      NonDefaultConstructorWithReadOnlyDictionaryProperty c1 = new NonDefaultConstructorWithReadOnlyDictionaryProperty("blah");
-      c1.Categories.Add("one", 1);
-      c1.Categories.Add("two", 2);
-
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Title"": ""blah"",
-  ""Categories"": {
-    ""one"": 1,
-    ""two"": 2
-  }
-}", json);
-
-      NonDefaultConstructorWithReadOnlyDictionaryProperty c2 = JsonConvert.DeserializeObject<NonDefaultConstructorWithReadOnlyDictionaryProperty>(json);
-      Assert.AreEqual(c1.Title, c2.Title);
-      Assert.AreEqual(c1.Categories.Count, c2.Categories.Count);
-      Assert.AreEqual(1, c2.Categories["one"]);
-      Assert.AreEqual(2, c2.Categories["two"]);
-    }
-
-    [JsonObject(MemberSerialization.OptIn)]
-    public class ClassAttributeBase
-    {
-      [JsonProperty]
-      public string BaseClassValue { get; set; }
-    }
-
-    public class ClassAttributeDerived : ClassAttributeBase
-    {
-      [JsonProperty]
-      public string DerivedClassValue { get; set; }
-
-      public string NonSerialized { get; set; }
-    }
-
-    public class CollectionClassAttributeDerived : ClassAttributeBase, ICollection<object>
-    {
-      [JsonProperty]
-      public string CollectionDerivedClassValue { get; set; }
-
-      public void Add(object item)
-      {
-        throw new NotImplementedException();
-      }
-
-      public void Clear()
-      {
-        throw new NotImplementedException();
-      }
-
-      public bool Contains(object item)
-      {
-        throw new NotImplementedException();
-      }
-
-      public void CopyTo(object[] array, int arrayIndex)
-      {
-        throw new NotImplementedException();
-      }
-
-      public int Count
-      {
-        get { throw new NotImplementedException(); }
-      }
-
-      public bool IsReadOnly
-      {
-        get { throw new NotImplementedException(); }
-      }
-
-      public bool Remove(object item)
-      {
-        throw new NotImplementedException();
-      }
-
-      public IEnumerator<object> GetEnumerator()
-      {
-        throw new NotImplementedException();
-      }
-
-      IEnumerator IEnumerable.GetEnumerator()
-      {
-        throw new NotImplementedException();
-      }
-    }
-
-    [Test]
-    public void ClassAttributesInheritance()
-    {
-      string json = JsonConvert.SerializeObject(new ClassAttributeDerived
-        {
-          BaseClassValue = "BaseClassValue!",
-          DerivedClassValue = "DerivedClassValue!",
-          NonSerialized = "NonSerialized!"
-        }, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""DerivedClassValue"": ""DerivedClassValue!"",
-  ""BaseClassValue"": ""BaseClassValue!""
-}", json);
-
-      json = JsonConvert.SerializeObject(new CollectionClassAttributeDerived
-        {
-          BaseClassValue = "BaseClassValue!",
-          CollectionDerivedClassValue = "CollectionDerivedClassValue!"
-        }, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""CollectionDerivedClassValue"": ""CollectionDerivedClassValue!"",
-  ""BaseClassValue"": ""BaseClassValue!""
-}", json);
-    }
-
-    public class PrivateMembersClassWithAttributes
-    {
-      public PrivateMembersClassWithAttributes(string privateString, string internalString, string readonlyString)
-      {
-        _privateString = privateString;
-        _readonlyString = readonlyString;
-        _internalString = internalString;
-      }
-
-      public PrivateMembersClassWithAttributes()
-      {
-        _readonlyString = "default!";
-      }
-
-      [JsonProperty] private string _privateString;
-      [JsonProperty] private readonly string _readonlyString;
-      [JsonProperty] internal string _internalString;
-
-      public string UseValue()
-      {
-        return _readonlyString;
-      }
-    }
-
-    [Test]
-    public void PrivateMembersClassWithAttributesTest()
-    {
-      PrivateMembersClassWithAttributes c1 = new PrivateMembersClassWithAttributes("privateString!", "internalString!", "readonlyString!");
-
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""_privateString"": ""privateString!"",
-  ""_readonlyString"": ""readonlyString!"",
-  ""_internalString"": ""internalString!""
-}", json);
-
-      PrivateMembersClassWithAttributes c2 = JsonConvert.DeserializeObject<PrivateMembersClassWithAttributes>(json);
-      Assert.AreEqual("readonlyString!", c2.UseValue());
-    }
-
-    public partial class BusRun
-    {
-      public IEnumerable<Nullable<DateTime>> Departures { get; set; }
-      public Boolean WheelchairAccessible { get; set; }
-    }
-
-    [Test]
-    public void DeserializeGenericEnumerableProperty()
-    {
-      BusRun r = JsonConvert.DeserializeObject<BusRun>("{\"Departures\":[\"\\/Date(1309874148734-0400)\\/\",\"\\/Date(1309874148739-0400)\\/\",null],\"WheelchairAccessible\":true}");
-
-      Assert.AreEqual(3, r.Departures.Count());
-      Assert.IsNotNull(r.Departures.ElementAt(0));
-      Assert.IsNotNull(r.Departures.ElementAt(1));
-      Assert.IsNull(r.Departures.ElementAt(2));
-    }
-
-#if !(NET20)
-    [DataContract]
-    public class BaseType
-    {
-
-      [DataMember] public string zebra;
-    }
-
-    [DataContract]
-    public class DerivedType : BaseType
-    {
-      [DataMember(Order = 0)] public string bird;
-      [DataMember(Order = 1)] public string parrot;
-      [DataMember] public string dog;
-      [DataMember(Order = 3)] public string antelope;
-      [DataMember] public string cat;
-      [JsonProperty(Order = 1)] public string albatross;
-      [JsonProperty(Order = -2)] public string dinosaur;
-    }
-
-    [Test]
-    public void JsonPropertyDataMemberOrder()
-    {
-      DerivedType d = new DerivedType();
-      string json = JsonConvert.SerializeObject(d, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""dinosaur"": null,
-  ""dog"": null,
-  ""cat"": null,
-  ""zebra"": null,
-  ""bird"": null,
-  ""parrot"": null,
-  ""albatross"": null,
-  ""antelope"": null
-}", json);
-    }
-#endif
-
-    public class ClassWithException
-    {
-      public IList<Exception> Exceptions { get; set; }
-
-      public ClassWithException()
-      {
-        Exceptions = new List<Exception>();
-      }
-    }
-
-#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
-    [Test]
-    public void SerializeException1()
-    {
-      ClassWithException classWithException = new ClassWithException();
-      try
-      {
-        throw new Exception("Test Exception");
-      }
-      catch (Exception ex)
-      {
-        classWithException.Exceptions.Add(ex);
-      }
-      string sex = JsonConvert.SerializeObject(classWithException);
-      ClassWithException dex = JsonConvert.DeserializeObject<ClassWithException>(sex);
-      Assert.AreEqual(dex.Exceptions[0].ToString(), dex.Exceptions[0].ToString());
-
-      sex = JsonConvert.SerializeObject(classWithException, Formatting.Indented);
-
-      dex = JsonConvert.DeserializeObject<ClassWithException>(sex); // this fails!
-      Assert.AreEqual(dex.Exceptions[0].ToString(), dex.Exceptions[0].ToString());
-    }
-#endif
-
-    public void DeserializeIDictionary()
-    {
-      IDictionary dictionary = JsonConvert.DeserializeObject<IDictionary>("{'name':'value!'}");
-      Assert.AreEqual(1, dictionary.Count);
-      Assert.AreEqual("value!", dictionary["name"]);
-    }
-
-    public void DeserializeIList()
-    {
-      IList list = JsonConvert.DeserializeObject<IList>("['1', 'two', 'III']");
-      Assert.AreEqual(3, list.Count);
-    }
-
-    public void UriGuidTimeSpanTestClassEmptyTest()
-    {
-      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass();
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Guid"": ""00000000-0000-0000-0000-000000000000"",
-  ""NullableGuid"": null,
-  ""TimeSpan"": ""00:00:00"",
-  ""NullableTimeSpan"": null,
-  ""Uri"": null
-}", json);
-
-      UriGuidTimeSpanTestClass c2 = JsonConvert.DeserializeObject<UriGuidTimeSpanTestClass>(json);
-      Assert.AreEqual(c1.Guid, c2.Guid);
-      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
-      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
-      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
-      Assert.AreEqual(c1.Uri, c2.Uri);
-    }
-
-    public void UriGuidTimeSpanTestClassValuesTest()
-    {
-      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass
-        {
-          Guid = new Guid("1924129C-F7E0-40F3-9607-9939C531395A"),
-          NullableGuid = new Guid("9E9F3ADF-E017-4F72-91E0-617EBE85967D"),
-          TimeSpan = TimeSpan.FromDays(1),
-          NullableTimeSpan = TimeSpan.FromHours(1),
-          Uri = new Uri("http://testuri.com")
-        };
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Guid"": ""1924129c-f7e0-40f3-9607-9939c531395a"",
-  ""NullableGuid"": ""9e9f3adf-e017-4f72-91e0-617ebe85967d"",
-  ""TimeSpan"": ""1.00:00:00"",
-  ""NullableTimeSpan"": ""01:00:00"",
-  ""Uri"": ""http://testuri.com/""
-}", json);
-
-      UriGuidTimeSpanTestClass c2 = JsonConvert.DeserializeObject<UriGuidTimeSpanTestClass>(json);
-      Assert.AreEqual(c1.Guid, c2.Guid);
-      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
-      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
-      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
-      Assert.AreEqual(c1.Uri, c2.Uri);
-    }
-
-    [Test]
-    public void NullableValueGenericDictionary()
-    {
-      IDictionary<string, int?> v1 = new Dictionary<string, int?>
-        {
-          {"First", 1},
-          {"Second", null},
-          {"Third", 3}
-        };
-
-      string json = JsonConvert.SerializeObject(v1, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""First"": 1,
-  ""Second"": null,
-  ""Third"": 3
-}", json);
-
-      IDictionary<string, int?> v2 = JsonConvert.DeserializeObject<IDictionary<string, int?>>(json);
-      Assert.AreEqual(3, v2.Count);
-      Assert.AreEqual(1, v2["First"]);
-      Assert.AreEqual(null, v2["Second"]);
-      Assert.AreEqual(3, v2["Third"]);
-    }
-
-    [Test]
-    public void UsingJsonTextWriter()
-    {
-      // The property of the object has to be a number for the cast exception to occure
-      object o = new {p = 1};
-
-      var json = JObject.FromObject(o);
-
-      using (var sw = new StringWriter())
-      using (var jw = new JsonTextWriter(sw))
-      {
-        jw.WriteToken(json.CreateReader());
-        jw.Flush();
-
-        string result = sw.ToString();
-        Assert.AreEqual(@"{""p"":1}", result);
-      }
-    }
-
-#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
-    [Test]
-    public void DeserializeConcurrentDictionary()
-    {
-      IDictionary<string, Component> components = new Dictionary<string, Component>
-        {
-          {"Key!", new Component()}
-        };
-      GameObject go = new GameObject
-        {
-          Components = new ConcurrentDictionary<string, Component>(components),
-          Id = "Id!",
-          Name = "Name!"
-        };
-
-      string originalJson = JsonConvert.SerializeObject(go, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Components"": {
-    ""Key!"": {}
-  },
-  ""Id"": ""Id!"",
-  ""Name"": ""Name!""
-}", originalJson);
-
-      GameObject newObject = JsonConvert.DeserializeObject<GameObject>(originalJson);
-
-      Assert.AreEqual(1, newObject.Components.Count);
-      Assert.AreEqual("Id!", newObject.Id);
-      Assert.AreEqual("Name!", newObject.Name);
-    }
-#endif
-
-    [Test]
-    public void DeserializeKeyValuePairArray()
-    {
-      string json = @"[ { ""Value"": [ ""1"", ""2"" ], ""Key"": ""aaa"", ""BadContent"": [ 0 ] }, { ""Value"": [ ""3"", ""4"" ], ""Key"": ""bbb"" } ]";
-
-      IList<KeyValuePair<string, IList<string>>> values = JsonConvert.DeserializeObject<IList<KeyValuePair<string, IList<string>>>>(json);
-
-      Assert.AreEqual(2, values.Count);
-      Assert.AreEqual("aaa", values[0].Key);
-      Assert.AreEqual(2, values[0].Value.Count);
-      Assert.AreEqual("1", values[0].Value[0]);
-      Assert.AreEqual("2", values[0].Value[1]);
-      Assert.AreEqual("bbb", values[1].Key);
-      Assert.AreEqual(2, values[1].Value.Count);
-      Assert.AreEqual("3", values[1].Value[0]);
-      Assert.AreEqual("4", values[1].Value[1]);
-    }
-
-    [Test]
-    public void DeserializeNullableKeyValuePairArray()
-    {
-      string json = @"[ { ""Value"": [ ""1"", ""2"" ], ""Key"": ""aaa"", ""BadContent"": [ 0 ] }, null, { ""Value"": [ ""3"", ""4"" ], ""Key"": ""bbb"" } ]";
-
-      IList<KeyValuePair<string, IList<string>>?> values = JsonConvert.DeserializeObject<IList<KeyValuePair<string, IList<string>>?>>(json);
-
-      Assert.AreEqual(3, values.Count);
-      Assert.AreEqual("aaa", values[0].Value.Key);
-      Assert.AreEqual(2, values[0].Value.Value.Count);
-      Assert.AreEqual("1", values[0].Value.Value[0]);
-      Assert.AreEqual("2", values[0].Value.Value[1]);
-      Assert.AreEqual(null, values[1]);
-      Assert.AreEqual("bbb", values[2].Value.Key);
-      Assert.AreEqual(2, values[2].Value.Value.Count);
-      Assert.AreEqual("3", values[2].Value.Value[0]);
-      Assert.AreEqual("4", values[2].Value.Value[1]);
-    }
-
-    [Test]
-    [ExpectedException(typeof (Exception)
-#if !NETFX_CORE
-      , ExpectedMessage = "Could not deserialize Null to KeyValuePair."
-#endif
-      )]
-    public void DeserializeNullToNonNullableKeyValuePairArray()
-    {
-      string json = @"[ null ]";
-
-      JsonConvert.DeserializeObject<IList<KeyValuePair<string, IList<string>>>>(json);
-    }
-
-    [Test]
-    public void SerializeUriWithQuotes()
-    {
-      string input = "http://test.com/%22foo+bar%22";
-      Uri uri = new Uri(input);
-      string json = JsonConvert.SerializeObject(uri);
-      Uri output = JsonConvert.DeserializeObject<Uri>(json);
-
-      Assert.AreEqual(uri, output);
-    }
-
-    [Test]
-    public void SerializeUriWithSlashes()
-    {
-      string input = @"http://tes/?a=b\\c&d=e\";
-      Uri uri = new Uri(input);
-      string json = JsonConvert.SerializeObject(uri);
-      Uri output = JsonConvert.DeserializeObject<Uri>(json);
-
-      Assert.AreEqual(uri, output);
-    }
-
-    [Test]
-    public void DeserializeByteArrayWithTypeNameHandling()
-    {
-      TestObject test = new TestObject("Test", new byte[] {72, 63, 62, 71, 92, 55});
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.TypeNameHandling = TypeNameHandling.All;
-
-      byte[] objectBytes;
-      using (MemoryStream bsonStream = new MemoryStream())
-      using (JsonWriter bsonWriter = new JsonTextWriter(new StreamWriter(bsonStream)))
-      {
-        serializer.Serialize(bsonWriter, test);
-        bsonWriter.Flush();
-
-        objectBytes = bsonStream.ToArray();
-      }
-
-      using (MemoryStream bsonStream = new MemoryStream(objectBytes))
-      using (JsonReader bsonReader = new JsonTextReader(new StreamReader(bsonStream)))
-      {
-        // Get exception here
-        TestObject newObject = (TestObject) serializer.Deserialize(bsonReader);
-
-        Assert.AreEqual("Test", newObject.Name);
-        CollectionAssert.AreEquivalent(new byte[] {72, 63, 62, 71, 92, 55}, newObject.Data);
-      }
-    }
-
-#if !(SILVERLIGHT || WINDOWS_PHONE || NET20 || NETFX_CORE)
-    [Test]
-    public void DeserializeDecimalsWithCulture()
-    {
-      CultureInfo initialCulture = Thread.CurrentThread.CurrentCulture;
-
-      try
-      {
-        CultureInfo testCulture = CultureInfo.CreateSpecificCulture("nb-NO");
-
-        Thread.CurrentThread.CurrentCulture = testCulture;
-        Thread.CurrentThread.CurrentUICulture = testCulture;
-
-        string json = @"{ 'Quantity': '1.5', 'OptionalQuantity': '2.2' }";
-
-        DecimalTestClass c = JsonConvert.DeserializeObject<DecimalTestClass>(json);
-
-        Assert.AreEqual(1.5m, c.Quantity);
-        Assert.AreEqual(2.2d, c.OptionalQuantity);
-      }
-      finally
-      {
-        Thread.CurrentThread.CurrentCulture = initialCulture;
-        Thread.CurrentThread.CurrentUICulture = initialCulture;
-      }
-    }
-#endif
-
-    [Test]
-    public void ReadForTypeHackFixDecimal()
-    {
-      IList<decimal> d1 = new List<decimal> {1.1m};
-
-      string json = JsonConvert.SerializeObject(d1);
-
-      IList<decimal> d2 = JsonConvert.DeserializeObject<IList<decimal>>(json);
-
-      Assert.AreEqual(d1.Count, d2.Count);
-      Assert.AreEqual(d1[0], d2[0]);
-    }
-
-    [Test]
-    public void ReadForTypeHackFixDateTimeOffset()
-    {
-      IList<DateTimeOffset?> d1 = new List<DateTimeOffset?> {null};
-
-      string json = JsonConvert.SerializeObject(d1);
-
-      IList<DateTimeOffset?> d2 = JsonConvert.DeserializeObject<IList<DateTimeOffset?>>(json);
-
-      Assert.AreEqual(d1.Count, d2.Count);
-      Assert.AreEqual(d1[0], d2[0]);
-    }
-
-    [Test]
-    public void ReadForTypeHackFixByteArray()
-    {
-      IList<byte[]> d1 = new List<byte[]> {null};
-
-      string json = JsonConvert.SerializeObject(d1);
-
-      IList<byte[]> d2 = JsonConvert.DeserializeObject<IList<byte[]>>(json);
-
-      Assert.AreEqual(d1.Count, d2.Count);
-      Assert.AreEqual(d1[0], d2[0]);
-    }
-
-    [Test]
-    public void SerializeInheritanceHierarchyWithDuplicateProperty()
-    {
-      Bb b = new Bb();
-      b.no = true;
-      Aa a = b;
-      a.no = int.MaxValue;
-
-      string json = JsonConvert.SerializeObject(b);
-
-      Assert.AreEqual(@"{""no"":true}", json);
-
-      Bb b2 = JsonConvert.DeserializeObject<Bb>(json);
-
-      Assert.AreEqual(true, b2.no);
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Error converting value {null} to type 'System.Int32'. Line 5, position 7."
-#endif
-      )]
-    public void DeserializeNullInt()
-    {
-      string json = @"[
-  1,
-  2,
-  3,
-  null
-]";
-
-      List<int> numbers = JsonConvert.DeserializeObject<List<int>>(json);
-      // JsonSerializationException : Error converting value {null} to type 'System.Int32'. Line 5, position 7.
-    }
-
-    [Test]
-    public void SerializeNullableWidgetStruct()
-    {
-      Widget widget = new Widget {Id = new WidgetId {Value = "id"}};
-
-      string json = JsonConvert.SerializeObject(widget);
-
-      Assert.AreEqual(@"{""Id"":{""Value"":""id""}}", json);
-    }
-
-    [Test]
-    public void DeserializeNullableWidgetStruct()
-    {
-      string json = @"{""Id"":{""Value"":""id""}}";
-
-      Widget w = JsonConvert.DeserializeObject<Widget>(json);
-
-      Assert.AreEqual(new WidgetId {Value = "id"}, w.Id);
-      Assert.AreEqual(new WidgetId {Value = "id"}, w.Id.Value);
-      Assert.AreEqual("id", w.Id.Value.Value);
-    }
-
-    [Test]
-    public void DeserializeBoolInt()
-    {
-      ExceptionAssert.Throws<JsonReaderException>("Error reading integer. Unexpected token: Boolean. Line 2, position 22.",
-      () =>
-      {
-        string json = @"{
-  ""PreProperty"": true,
-  ""PostProperty"": ""-1""
-}";
-
-        JsonConvert.DeserializeObject<TestObjects.MyClass>(json);
-      });
-    }
-
-    [Test]
-    public void DeserializeUnexpectedEndInt()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("Unexpected end when setting PreProperty's value. Line 2, position 18.",
-      () =>
-      {
-        string json = @"{
-  ""PreProperty"": ";
-
-        JsonConvert.DeserializeObject<TestObjects.MyClass>(json);
-      });
-    }
-
-    [Test]
-    public void DeserializeNullableGuid()
-    {
-      string json = @"{""Id"":null}";
-      var c = JsonConvert.DeserializeObject<NullableGuid>(json);
-
-      Assert.AreEqual(null, c.Id);
-
-      json = @"{""Id"":""d8220a4b-75b1-4b7a-8112-b7bdae956a45""}";
-      c = JsonConvert.DeserializeObject<NullableGuid>(json);
-
-      Assert.AreEqual(new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), c.Id);
-    }
-
-    [Test]
-    public void DeserializeGuid()
-    {
-      Item expected = new Item()
-        {
-          SourceTypeID = new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"),
-          BrokerID = new Guid("951663c4-924e-4c86-a57a-7ed737501dbd"),
-          Latitude = 33.657145,
-          Longitude = -117.766684,
-          TimeStamp = new DateTime(2000, 3, 1, 23, 59, 59, DateTimeKind.Utc),
-          Payload = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
-        };
-
-      string jsonString = JsonConvert.SerializeObject(expected, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""SourceTypeID"": ""d8220a4b-75b1-4b7a-8112-b7bdae956a45"",
-  ""BrokerID"": ""951663c4-924e-4c86-a57a-7ed737501dbd"",
-  ""Latitude"": 33.657145,
-  ""Longitude"": -117.766684,
-  ""TimeStamp"": ""2000-03-01T23:59:59Z"",
-  ""Payload"": {
-    ""$type"": ""System.Byte[], mscorlib"",
-    ""$value"": ""AAECAwQFBgcICQ==""
-  }
-}", jsonString);
-
-      Item actual = JsonConvert.DeserializeObject<Item>(jsonString);
-
-      Assert.AreEqual(new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), actual.SourceTypeID);
-      Assert.AreEqual(new Guid("951663c4-924e-4c86-a57a-7ed737501dbd"), actual.BrokerID);
-      byte[] bytes = (byte[])actual.Payload;
-      CollectionAssert.AreEquivalent((new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }).ToList(), bytes.ToList());
-    }
-
-    [Test]
-    public void DeserializeObjectDictionary()
-    {
-      var serializer = JsonSerializer.Create(new JsonSerializerSettings());
-      var dict = serializer.Deserialize<Dictionary<string, string>>(new JsonTextReader(new StringReader("{'k1':'','k2':'v2'}")));
-
-      Assert.AreEqual("", dict["k1"]);
-      Assert.AreEqual("v2", dict["k2"]);
-    }
-
-    [Test]
-    public void DeserializeNullableEnum()
-    {
-      string json = JsonConvert.SerializeObject(new WithEnums
-        {
-          Id = 7,
-          NullableEnum = null
-        });
-
-      Assert.AreEqual(@"{""Id"":7,""NullableEnum"":null}", json);
-
-      WithEnums e = JsonConvert.DeserializeObject<WithEnums>(json);
-
-      Assert.AreEqual(null, e.NullableEnum);
-
-      json = JsonConvert.SerializeObject(new WithEnums
-        {
-          Id = 7,
-          NullableEnum = MyEnum.Value2
-        });
-
-      Assert.AreEqual(@"{""Id"":7,""NullableEnum"":1}", json);
-
-      e = JsonConvert.DeserializeObject<WithEnums>(json);
-
-      Assert.AreEqual(MyEnum.Value2, e.NullableEnum);
-    }
-
-    [Test]
-    public void NullableStructWithConverter()
-    {
-      string json = JsonConvert.SerializeObject(new Widget1 {Id = new WidgetId1 {Value = 1234}});
-
-      Assert.AreEqual(@"{""Id"":""1234""}", json);
-
-      Widget1 w = JsonConvert.DeserializeObject<Widget1>(@"{""Id"":""1234""}");
-
-      Assert.AreEqual(new WidgetId1 {Value = 1234}, w.Id);
-    }
-
-    [Test]
-    public void SerializeDictionaryStringStringAndStringObject()
-    {
-      var serializer = JsonSerializer.Create(new JsonSerializerSettings());
-      var dict = serializer.Deserialize<Dictionary<string, string>>(new JsonTextReader(new StringReader("{'k1':'','k2':'v2'}")));
-
-      var reader = new JsonTextReader(new StringReader("{'k1':'','k2':'v2'}"));
-      var dict2 = serializer.Deserialize<Dictionary<string, object>>(reader);
-
-      Assert.AreEqual(dict["k1"], dict2["k1"]);
-    }
-
-    [Test]
-    public void DeserializeEmptyStrings()
-    {
-      object v = JsonConvert.DeserializeObject<double?>("");
-      Assert.IsNull(v);
-
-      v = JsonConvert.DeserializeObject<char?>("");
-      Assert.IsNull(v);
-
-      v = JsonConvert.DeserializeObject<int?>("");
-      Assert.IsNull(v);
-
-      v = JsonConvert.DeserializeObject<decimal?>("");
-      Assert.IsNull(v);
-
-      v = JsonConvert.DeserializeObject<DateTime?>("");
-      Assert.IsNull(v);
-
-      v = JsonConvert.DeserializeObject<DateTimeOffset?>("");
-      Assert.IsNull(v);
-
-      v = JsonConvert.DeserializeObject<byte[]>("");
-      Assert.IsNull(v);
-    }
-
-    public class Sdfsdf
-    {
-      public double Id { get; set; }
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "No JSON content found and type 'System.Double' is not nullable."
-#endif
-      )]
-    public void DeserializeDoubleFromEmptyString()
-    {
-      JsonConvert.DeserializeObject<double>("");
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "No JSON content found and type 'System.StringComparison' is not nullable."
-#endif
-      )]
-    public void DeserializeEnumFromEmptyString()
-    {
-      JsonConvert.DeserializeObject<StringComparison>("");
-    }
-
-    [Test]
-    [ExpectedException(typeof (JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "No JSON content found and type 'System.Int32' is not nullable."
-#endif
-      )]
-    public void DeserializeInt32FromEmptyString()
-    {
-      JsonConvert.DeserializeObject<int>("");
-    }
-
-    [Test]
-    public void DeserializeByteArrayFromEmptyString()
-    {
-      byte[] b = JsonConvert.DeserializeObject<byte[]>("");
-      Assert.IsNull(b);
-    }
-
-    [Test]
-    [ExpectedException(typeof (ArgumentNullException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Value cannot be null.
-Parameter name: value"
-#endif
-      )]
-    public void DeserializeDoubleFromNullString()
-    {
-      JsonConvert.DeserializeObject<double>(null);
-    }
-
-    [Test]
-    [ExpectedException(typeof (ArgumentNullException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Value cannot be null.
-Parameter name: value"
-#endif
-      )]
-    public void DeserializeFromNullString()
-    {
-      JsonConvert.DeserializeObject(null);
-    }
-
-    [Test]
-    public void DeserializeIsoDatesWithIsoConverter()
-    {
-      string jsonIsoText =
-        @"{""Value"":""2012-02-25T19:55:50.6095676+13:00""}";
-
-      DateTimeWrapper c = JsonConvert.DeserializeObject<DateTimeWrapper>(jsonIsoText, new IsoDateTimeConverter());
-      Assert.AreEqual(DateTimeKind.Local, c.Value.Kind);
-    }
-
-#if !NET20
-    [Test]
-    public void DeserializeUTC()
-    {
-      DateTimeTestClass c =
-        JsonConvert.DeserializeObject<DateTimeTestClass>(
-          @"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12Z"",""PostField"":""Post""}",
-          new JsonSerializerSettings
-          {
-            DateTimeZoneHandling = DateTimeZoneHandling.Local
-          });
-
-      Assert.AreEqual(new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime(), c.DateTimeField);
-      Assert.AreEqual(new DateTimeOffset(2008, 12, 12, 12, 12, 12, 0, TimeSpan.Zero), c.DateTimeOffsetField);
-      Assert.AreEqual("Pre", c.PreField);
-      Assert.AreEqual("Post", c.PostField);
-
-      DateTimeTestClass c2 =
-        JsonConvert.DeserializeObject<DateTimeTestClass>(
-          @"{""PreField"":""Pre"",""DateTimeField"":""2008-01-01T01:01:01Z"",""DateTimeOffsetField"":""2008-01-01T01:01:01Z"",""PostField"":""Post""}",
-          new JsonSerializerSettings
-          {
-            DateTimeZoneHandling = DateTimeZoneHandling.Local
-          });
-
-      Assert.AreEqual(new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc).ToLocalTime(), c2.DateTimeField);
-      Assert.AreEqual(new DateTimeOffset(2008, 1, 1, 1, 1, 1, 0, TimeSpan.Zero), c2.DateTimeOffsetField);
-      Assert.AreEqual("Pre", c2.PreField);
-      Assert.AreEqual("Post", c2.PostField);
-    }
-
-    [Test]
-    public void NullableDeserializeUTC()
-    {
-      NullableDateTimeTestClass c =
-        JsonConvert.DeserializeObject<NullableDateTimeTestClass>(
-          @"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12Z"",""PostField"":""Post""}",
-          new JsonSerializerSettings
-          {
-            DateTimeZoneHandling = DateTimeZoneHandling.Local
-          });
-
-      Assert.AreEqual(new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime(), c.DateTimeField);
-      Assert.AreEqual(new DateTimeOffset(2008, 12, 12, 12, 12, 12, 0, TimeSpan.Zero), c.DateTimeOffsetField);
-      Assert.AreEqual("Pre", c.PreField);
-      Assert.AreEqual("Post", c.PostField);
-
-      NullableDateTimeTestClass c2 =
-        JsonConvert.DeserializeObject<NullableDateTimeTestClass>(
-          @"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}");
-
-      Assert.AreEqual(null, c2.DateTimeField);
-      Assert.AreEqual(null, c2.DateTimeOffsetField);
-      Assert.AreEqual("Pre", c2.PreField);
-      Assert.AreEqual("Post", c2.PostField);
-    }
-
-    [Test]
-    public void PrivateConstructor()
-    {
-      var person = PersonWithPrivateConstructor.CreatePerson();
-      person.Name = "John Doe";
-      person.Age = 25;
-
-      var serializedPerson = JsonConvert.SerializeObject(person);
-      var roundtrippedPerson = JsonConvert.DeserializeObject<PersonWithPrivateConstructor>(serializedPerson);
-
-      Assert.AreEqual(person.Name, roundtrippedPerson.Name);
-    }
-#endif
-  }
-
-  public class PersonWithPrivateConstructor
-  {
-    private PersonWithPrivateConstructor()
-    { }
-
-    public static PersonWithPrivateConstructor CreatePerson()
-    {
-      return new PersonWithPrivateConstructor();
-    }
-
-    public string Name { get; set; }
-
-    public int Age { get; set; }
-  }
-
-  public class DateTimeWrapper
-  {
-    public DateTime Value { get; set; }
-  }
-
-  public class Widget1
-  {
-    public WidgetId1? Id { get; set; }
-  }
-
-  [JsonConverter(typeof(WidgetIdJsonConverter))]
-  public struct WidgetId1
-  {
-    public long Value { get; set; }
-  }
-
-  public class WidgetIdJsonConverter : JsonConverter
-  {
-    public override bool CanConvert(Type objectType)
-    {
-      return objectType == typeof(WidgetId1) || objectType == typeof(WidgetId1?);
-    }
-
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      WidgetId1 id = (WidgetId1)value;
-      writer.WriteValue(id.Value.ToString());
-    }
-
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      if (reader.TokenType == JsonToken.Null)
-        return null;
-      return new WidgetId1 { Value = int.Parse(reader.Value.ToString()) };
-    }
-  }
-
-
-  public enum MyEnum
-  {
-    Value1,
-    Value2,
-    Value3
-  }
-
-  public class WithEnums
-  {
-    public int Id { get; set; }
-    public MyEnum? NullableEnum { get; set; }
-  }
-
-  public class Item
-  {
-    public Guid SourceTypeID { get; set; }
-    public Guid BrokerID { get; set; }
-    public double Latitude { get; set; }
-    public double Longitude { get; set; }
-    public DateTime TimeStamp { get; set; }
-    [JsonProperty(TypeNameHandling = TypeNameHandling.All)]
-    public object Payload { get; set; }
-  }
-
-  public class NullableGuid
-  {
-    public Guid? Id { get; set; }
-  }
-
-  public class Widget
-  {
-    public WidgetId? Id { get; set; }
-  }
-
-  public struct WidgetId
-  {
-    public string Value { get; set; }
-  }
-
-  public class DecimalTestClass
-  {
-    public decimal Quantity { get; set; }
-    public double OptionalQuantity { get; set; }
-  }
-
-  public class TestObject
-  {
-    public TestObject()
-    {
-
-    }
-
-    public TestObject(string name, byte[] data)
-    {
-      Name = name;
-      Data = data;
-    }
-
-    public string Name { get; set; }
-    public byte[] Data { get; set; }
-  }
-
-  public class UriGuidTimeSpanTestClass
-  {
-    public Guid Guid { get; set; }
-    public Guid? NullableGuid { get; set; }
-    public TimeSpan TimeSpan { get; set; }
-    public TimeSpan? NullableTimeSpan { get; set; }
-    public Uri Uri { get; set; }
-  }
-
-  internal class Aa
-  {
-    public int no;
-  }
-
-  internal class Bb : Aa
-  {
-    public bool no;
-  }
-
-#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
-  [JsonObject(MemberSerialization.OptIn)]
-  public class GameObject
-  {
-    [JsonProperty]
-    public string Id { get; set; }
-
-    [JsonProperty]
-    public string Name { get; set; }
-
-    [JsonProperty] public ConcurrentDictionary<string, Component> Components;
-
-    public GameObject()
-    {
-      Components = new ConcurrentDictionary<string, Component>();
-    }
-
-  }
-
-  [JsonObject(MemberSerialization.OptIn)]
-  public class Component
-  {
-    [JsonIgnore] // Ignore circular reference 
-      public GameObject GameObject { get; set; }
-
-    public Component()
-    {
-    }
-  }
-
-  [JsonObject(MemberSerialization.OptIn)]
-  public class TestComponent : Component
-  {
-    [JsonProperty]
-    public int MyProperty { get; set; }
-
-    public TestComponent()
-    {
-    }
-  }
-#endif
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
+using System.Collections.Concurrent;
+#endif
+using System.Collections.Generic;
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+using System.ComponentModel.DataAnnotations;
+using System.Configuration;
+using System.Runtime.CompilerServices;
+using System.Runtime.Serialization.Formatters;
+using System.Threading;
+using System.Web.Script.Serialization;
+#endif
+using System.Text;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json;
+using System.IO;
+using System.Collections;
+using System.Xml;
+using System.Xml.Serialization;
+using System.Collections.ObjectModel;
+using Newtonsoft.Json.Bson;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Converters;
+#if !PocketPC && !NET20 && !WINDOWS_PHONE
+using System.Runtime.Serialization.Json;
+#endif
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+using System.Runtime.Serialization;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+using System.Reflection;
+#if !NET20 && !SILVERLIGHT
+using System.Xml.Linq;
+using System.Text.RegularExpressions;
+using System.Collections.Specialized;
+using System.Linq.Expressions;
+#endif
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System.Dynamic;
+using System.ComponentModel;
+#endif
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class JsonSerializerTest : TestFixtureBase
+  {
+    [Test]
+    public void PersonTypedObjectDeserialization()
+    {
+      Store store = new Store();
+
+      string jsonText = JsonConvert.SerializeObject(store);
+
+      Store deserializedStore = (Store) JsonConvert.DeserializeObject(jsonText, typeof (Store));
+
+      Assert.AreEqual(store.Establised, deserializedStore.Establised);
+      Assert.AreEqual(store.product.Count, deserializedStore.product.Count);
+
+      Console.WriteLine(jsonText);
+    }
+
+    [Test]
+    public void TypedObjectDeserialization()
+    {
+      Product product = new Product();
+
+      product.Name = "Apple";
+      product.ExpiryDate = new DateTime(2008, 12, 28);
+      product.Price = 3.99M;
+      product.Sizes = new string[] {"Small", "Medium", "Large"};
+
+      string output = JsonConvert.SerializeObject(product);
+      //{
+      //  "Name": "Apple",
+      //  "ExpiryDate": "\/Date(1230375600000+1300)\/",
+      //  "Price": 3.99,
+      //  "Sizes": [
+      //    "Small",
+      //    "Medium",
+      //    "Large"
+      //  ]
+      //}
+
+      Product deserializedProduct = (Product) JsonConvert.DeserializeObject(output, typeof (Product));
+
+      Assert.AreEqual("Apple", deserializedProduct.Name);
+      Assert.AreEqual(new DateTime(2008, 12, 28), deserializedProduct.ExpiryDate);
+      Assert.AreEqual(3.99m, deserializedProduct.Price);
+      Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
+      Assert.AreEqual("Medium", deserializedProduct.Sizes[1]);
+      Assert.AreEqual("Large", deserializedProduct.Sizes[2]);
+    }
+
+    //[Test]
+    //public void Advanced()
+    //{
+    //  Product product = new Product();
+    //  product.ExpiryDate = new DateTime(2008, 12, 28);
+
+    //  JsonSerializer serializer = new JsonSerializer();
+    //  serializer.Converters.Add(new JavaScriptDateTimeConverter());
+    //  serializer.NullValueHandling = NullValueHandling.Ignore;
+
+    //  using (StreamWriter sw = new StreamWriter(@"c:\json.txt"))
+    //  using (JsonWriter writer = new JsonTextWriter(sw))
+    //  {
+    //    serializer.Serialize(writer, product);
+    //    // {"ExpiryDate":new Date(1230375600000),"Price":0}
+    //  }
+    //}
+
+    [Test]
+    public void JsonConvertSerializer()
+    {
+      string value = @"{""Name"":""Orange"", ""Price"":3.99, ""ExpiryDate"":""01/24/2010 12:00:00""}";
+
+      Product p = JsonConvert.DeserializeObject(value, typeof (Product)) as Product;
+
+      Assert.AreEqual("Orange", p.Name);
+      Assert.AreEqual(new DateTime(2010, 1, 24, 12, 0, 0), p.ExpiryDate);
+      Assert.AreEqual(3.99m, p.Price);
+    }
+
+    [Test]
+    public void DeserializeJavaScriptDate()
+    {
+      DateTime dateValue = new DateTime(2010, 3, 30);
+      Dictionary<string, object> testDictionary = new Dictionary<string, object>();
+      testDictionary["date"] = dateValue;
+
+      string jsonText = JsonConvert.SerializeObject(testDictionary);
+
+#if !PocketPC && !NET20 && !WINDOWS_PHONE
+      MemoryStream ms = new MemoryStream();
+      DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof (Dictionary<string, object>));
+      serializer.WriteObject(ms, testDictionary);
+
+      byte[] data = ms.ToArray();
+      string output = Encoding.UTF8.GetString(data, 0, data.Length);
+#endif
+
+      Dictionary<string, object> deserializedDictionary = (Dictionary<string, object>) JsonConvert.DeserializeObject(jsonText, typeof (Dictionary<string, object>));
+      DateTime deserializedDate = (DateTime) deserializedDictionary["date"];
+
+      Assert.AreEqual(dateValue, deserializedDate);
+    }
+
+    [Test]
+    public void TestMethodExecutorObject()
+    {
+      MethodExecutorObject executorObject = new MethodExecutorObject();
+      executorObject.serverClassName = "BanSubs";
+      executorObject.serverMethodParams = new object[] {"21321546", "101", "1236", "D:\\1.txt"};
+      executorObject.clientGetResultFunction = "ClientBanSubsCB";
+
+      string output = JsonConvert.SerializeObject(executorObject);
+
+      MethodExecutorObject executorObject2 = JsonConvert.DeserializeObject(output, typeof (MethodExecutorObject)) as MethodExecutorObject;
+
+      Assert.AreNotSame(executorObject, executorObject2);
+      Assert.AreEqual(executorObject2.serverClassName, "BanSubs");
+      Assert.AreEqual(executorObject2.serverMethodParams.Length, 4);
+      CustomAssert.Contains(executorObject2.serverMethodParams, "101");
+      Assert.AreEqual(executorObject2.clientGetResultFunction, "ClientBanSubsCB");
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void HashtableDeserialization()
+    {
+      string value = @"{""Name"":""Orange"", ""Price"":3.99, ""ExpiryDate"":""01/24/2010 12:00:00""}";
+
+      Hashtable p = JsonConvert.DeserializeObject(value, typeof (Hashtable)) as Hashtable;
+
+      Assert.AreEqual("Orange", p["Name"].ToString());
+    }
+
+    [Test]
+    public void TypedHashtableDeserialization()
+    {
+      string value = @"{""Name"":""Orange"", ""Hash"":{""ExpiryDate"":""01/24/2010 12:00:00"",""UntypedArray"":[""01/24/2010 12:00:00""]}}";
+
+      TypedSubHashtable p = JsonConvert.DeserializeObject(value, typeof (TypedSubHashtable)) as TypedSubHashtable;
+
+      Assert.AreEqual("01/24/2010 12:00:00", p.Hash["ExpiryDate"].ToString());
+      Assert.AreEqual(@"[
+  ""01/24/2010 12:00:00""
+]", p.Hash["UntypedArray"].ToString());
+    }
+#endif
+
+    [Test]
+    public void SerializeDeserializeGetOnlyProperty()
+    {
+      string value = JsonConvert.SerializeObject(new GetOnlyPropertyClass());
+
+      GetOnlyPropertyClass c = JsonConvert.DeserializeObject<GetOnlyPropertyClass>(value);
+
+      Assert.AreEqual(c.Field, "Field");
+      Assert.AreEqual(c.GetOnlyProperty, "GetOnlyProperty");
+    }
+
+    [Test]
+    public void SerializeDeserializeSetOnlyProperty()
+    {
+      string value = JsonConvert.SerializeObject(new SetOnlyPropertyClass());
+
+      SetOnlyPropertyClass c = JsonConvert.DeserializeObject<SetOnlyPropertyClass>(value);
+
+      Assert.AreEqual(c.Field, "Field");
+    }
+
+    [Test]
+    public void JsonIgnoreAttributeTest()
+    {
+      string json = JsonConvert.SerializeObject(new JsonIgnoreAttributeTestClass());
+
+      Assert.AreEqual(@"{""Field"":0,""Property"":21}", json);
+
+      JsonIgnoreAttributeTestClass c = JsonConvert.DeserializeObject<JsonIgnoreAttributeTestClass>(@"{""Field"":99,""Property"":-1,""IgnoredField"":-1,""IgnoredObject"":[1,2,3,4,5]}");
+
+      Assert.AreEqual(0, c.IgnoredField);
+      Assert.AreEqual(99, c.Field);
+    }
+
+    [Test]
+    public void GoogleSearchAPI()
+    {
+      string json = @"{
+    results:
+        [
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://www.google.com/"",
+                url : ""http://www.google.com/"",
+                visibleUrl : ""www.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:zhool8dxBV4J:www.google.com"",
+                title : ""Google"",
+                titleNoFormatting : ""Google"",
+                content : ""Enables users to search the Web, Usenet, and 
+images. Features include PageRank,   caching and translation of 
+results, and an option to find similar pages.""
+            },
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://news.google.com/"",
+                url : ""http://news.google.com/"",
+                visibleUrl : ""news.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:Va_XShOz_twJ:news.google.com"",
+                title : ""Google News"",
+                titleNoFormatting : ""Google News"",
+                content : ""Aggregated headlines and a search engine of many of the world's news sources.""
+            },
+            
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://groups.google.com/"",
+                url : ""http://groups.google.com/"",
+                visibleUrl : ""groups.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:x2uPD3hfkn0J:groups.google.com"",
+                title : ""Google Groups"",
+                titleNoFormatting : ""Google Groups"",
+                content : ""Enables users to search and browse the Usenet 
+archives which consist of over 700   million messages, and post new 
+comments.""
+            },
+            
+            {
+                GsearchResultClass:""GwebSearch"",
+                unescapedUrl : ""http://maps.google.com/"",
+                url : ""http://maps.google.com/"",
+                visibleUrl : ""maps.google.com"",
+                cacheUrl : 
+""http://www.google.com/search?q=cache:dkf5u2twBXIJ:maps.google.com"",
+                title : ""Google Maps"",
+                titleNoFormatting : ""Google Maps"",
+                content : ""Provides directions, interactive maps, and 
+satellite/aerial imagery of the United   States. Can also search by 
+keyword such as type of business.""
+            }
+        ],
+        
+    adResults:
+        [
+            {
+                GsearchResultClass:""GwebSearch.ad"",
+                title : ""Gartner Symposium/ITxpo"",
+                content1 : ""Meet brilliant Gartner IT analysts"",
+                content2 : ""20-23 May 2007- Barcelona, Spain"",
+                url : 
+""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
+
+                impressionUrl : 
+""http://www.google.com/uds/css/ad-indicator-on.gif?ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB"", 
+
+                unescapedUrl : 
+""http://www.google.com/url?sa=L&ai=BVualExYGRo3hD5ianAPJvejjD8-s6ye7kdTwArbI4gTAlrECEAEYASDXtMMFOAFQubWAjvr_____AWDXw_4EiAEBmAEAyAEBgAIB&num=1&q=http://www.gartner.com/it/sym/2007/spr8/spr8.jsp%3Fsrc%3D_spain_07_%26WT.srch%3D1&usg=__CxRH06E4Xvm9Muq13S4MgMtnziY="", 
+
+                visibleUrl : ""www.gartner.com""
+            }
+        ]
+}
+";
+      object o = JsonConvert.DeserializeObject(json);
+      string s = string.Empty;
+      s += s;
+    }
+
+    [Test]
+    public void TorrentDeserializeTest()
+    {
+      string jsonText = @"{
+"""":"""",
+""label"": [
+       [""SomeName"",6]
+],
+""torrents"": [
+       [""192D99A5C943555CB7F00A852821CF6D6DB3008A"",201,""filename.avi"",178311826,1000,178311826,72815250,408,1603,7,121430,""NameOfLabelPrevioslyDefined"",3,6,0,8,128954,-1,0],
+],
+""torrentc"": ""1816000723""
+}";
+
+      JObject o = (JObject) JsonConvert.DeserializeObject(jsonText);
+      Assert.AreEqual(4, o.Children().Count());
+
+      JToken torrentsArray = (JToken) o["torrents"];
+      JToken nestedTorrentsArray = (JToken) torrentsArray[0];
+      Assert.AreEqual(nestedTorrentsArray.Children().Count(), 19);
+    }
+
+    [Test]
+    public void JsonPropertyClassSerialize()
+    {
+      JsonPropertyClass test = new JsonPropertyClass();
+      test.Pie = "Delicious";
+      test.SweetCakesCount = int.MaxValue;
+
+      string jsonText = JsonConvert.SerializeObject(test);
+
+      Assert.AreEqual(@"{""pie"":""Delicious"",""pie1"":""PieChart!"",""sweet_cakes_count"":2147483647}", jsonText);
+
+      JsonPropertyClass test2 = JsonConvert.DeserializeObject<JsonPropertyClass>(jsonText);
+
+      Assert.AreEqual(test.Pie, test2.Pie);
+      Assert.AreEqual(test.SweetCakesCount, test2.SweetCakesCount);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"A member with the name 'pie' already exists on 'Newtonsoft.Json.Tests.TestObjects.BadJsonPropertyClass'. Use the JsonPropertyAttribute to specify another name."
+#endif
+      )]
+    public void BadJsonPropertyClassSerialize()
+    {
+      JsonConvert.SerializeObject(new BadJsonPropertyClass());
+    }
+
+    [Test]
+    public void InheritedListSerialize()
+    {
+      Article a1 = new Article("a1");
+      Article a2 = new Article("a2");
+
+      ArticleCollection articles1 = new ArticleCollection();
+      articles1.Add(a1);
+      articles1.Add(a2);
+
+      string jsonText = JsonConvert.SerializeObject(articles1);
+
+      ArticleCollection articles2 = JsonConvert.DeserializeObject<ArticleCollection>(jsonText);
+
+      Assert.AreEqual(articles1.Count, articles2.Count);
+      Assert.AreEqual(articles1[0].Name, articles2[0].Name);
+    }
+
+    [Test]
+    public void ReadOnlyCollectionSerialize()
+    {
+      ReadOnlyCollection<int> r1 = new ReadOnlyCollection<int>(new int[] {0, 1, 2, 3, 4});
+
+      string jsonText = JsonConvert.SerializeObject(r1);
+
+      ReadOnlyCollection<int> r2 = JsonConvert.DeserializeObject<ReadOnlyCollection<int>>(jsonText);
+
+      CollectionAssert.AreEqual(r1, r2);
+    }
+
+#if !PocketPC && !NET20 && !WINDOWS_PHONE
+    [Test]
+    public void Unicode()
+    {
+      string json = @"[""PRE\u003cPOST""]";
+
+      DataContractJsonSerializer s = new DataContractJsonSerializer(typeof (List<string>));
+      List<string> dataContractResult = (List<string>) s.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json)));
+
+      List<string> jsonNetResult = JsonConvert.DeserializeObject<List<string>>(json);
+
+      Assert.AreEqual(1, jsonNetResult.Count);
+      Assert.AreEqual(dataContractResult[0], jsonNetResult[0]);
+    }
+
+    [Test]
+    public void BackslashEqivilence()
+    {
+      string json = @"[""vvv\/vvv\tvvv\""vvv\bvvv\nvvv\rvvv\\vvv\fvvv""]";
+
+#if !SILVERLIGHT && !NETFX_CORE
+      JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
+      List<string> javaScriptSerializerResult = javaScriptSerializer.Deserialize<List<string>>(json);
+#endif
+
+      DataContractJsonSerializer s = new DataContractJsonSerializer(typeof (List<string>));
+      List<string> dataContractResult = (List<string>) s.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json)));
+
+      List<string> jsonNetResult = JsonConvert.DeserializeObject<List<string>>(json);
+
+      Assert.AreEqual(1, jsonNetResult.Count);
+      Assert.AreEqual(dataContractResult[0], jsonNetResult[0]);
+#if !SILVERLIGHT && !NETFX_CORE
+      Assert.AreEqual(javaScriptSerializerResult[0], jsonNetResult[0]);
+#endif
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Bad JSON escape sequence: \j. Line 1, position 7."
+#endif
+      )]
+    public void InvalidBackslash()
+    {
+      string json = @"[""vvv\jvvv""]";
+
+      JsonConvert.DeserializeObject<List<string>>(json);
+    }
+
+    [Test]
+    public void DateTimeTest()
+    {
+      List<DateTime> testDates = new List<DateTime>
+        {
+          new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Local),
+          new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Unspecified),
+          new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc),
+          new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Local),
+          new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Unspecified),
+          new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc),
+        };
+      string result;
+
+
+      MemoryStream ms = new MemoryStream();
+      DataContractJsonSerializer s = new DataContractJsonSerializer(typeof (List<DateTime>));
+      s.WriteObject(ms, testDates);
+      ms.Seek(0, SeekOrigin.Begin);
+      StreamReader sr = new StreamReader(ms);
+
+      string expected = sr.ReadToEnd();
+
+      result = JsonConvert.SerializeObject(testDates, new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat });
+      Assert.AreEqual(expected, result);
+    }
+
+    [Test]
+    public void DateTimeOffsetIso()
+    {
+      List<DateTimeOffset> testDates = new List<DateTimeOffset>
+        {
+          new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)),
+          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero),
+          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)),
+          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(-3.5)),
+        };
+
+      string result = JsonConvert.SerializeObject(testDates);
+      Assert.AreEqual(@"[""0100-01-01T01:01:01+00:00"",""2000-01-01T01:01:01+00:00"",""2000-01-01T01:01:01+13:00"",""2000-01-01T01:01:01-03:30""]", result);
+    }
+
+    [Test]
+    public void DateTimeOffsetMsAjax()
+    {
+      List<DateTimeOffset> testDates = new List<DateTimeOffset>
+        {
+          new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)),
+          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero),
+          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)),
+          new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(-3.5)),
+        };
+
+      string result = JsonConvert.SerializeObject(testDates, new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat });
+      Assert.AreEqual(@"[""\/Date(-59011455539000+0000)\/"",""\/Date(946688461000+0000)\/"",""\/Date(946641661000+1300)\/"",""\/Date(946701061000-0330)\/""]", result);
+    }
+#endif
+
+    [Test]
+    public void NonStringKeyDictionary()
+    {
+      Dictionary<int, int> values = new Dictionary<int, int>();
+      values.Add(-5, 6);
+      values.Add(int.MinValue, int.MaxValue);
+
+      string json = JsonConvert.SerializeObject(values);
+
+      Assert.AreEqual(@"{""-5"":6,""-2147483648"":2147483647}", json);
+
+      Dictionary<int, int> newValues = JsonConvert.DeserializeObject<Dictionary<int, int>>(json);
+
+      CollectionAssert.AreEqual(values, newValues);
+    }
+
+    [Test]
+    public void AnonymousObjectSerialization()
+    {
+      var anonymous =
+        new
+          {
+            StringValue = "I am a string",
+            IntValue = int.MaxValue,
+            NestedAnonymous = new {NestedValue = byte.MaxValue},
+            NestedArray = new[] {1, 2},
+            Product = new Product() {Name = "TestProduct"}
+          };
+
+      string json = JsonConvert.SerializeObject(anonymous);
+      Assert.AreEqual(@"{""StringValue"":""I am a string"",""IntValue"":2147483647,""NestedAnonymous"":{""NestedValue"":255},""NestedArray"":[1,2],""Product"":{""Name"":""TestProduct"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null}}", json);
+
+      anonymous = JsonConvert.DeserializeAnonymousType(json, anonymous);
+      Assert.AreEqual("I am a string", anonymous.StringValue);
+      Assert.AreEqual(int.MaxValue, anonymous.IntValue);
+      Assert.AreEqual(255, anonymous.NestedAnonymous.NestedValue);
+      Assert.AreEqual(2, anonymous.NestedArray.Length);
+      Assert.AreEqual(1, anonymous.NestedArray[0]);
+      Assert.AreEqual(2, anonymous.NestedArray[1]);
+      Assert.AreEqual("TestProduct", anonymous.Product.Name);
+    }
+
+    [Test]
+    public void CustomCollectionSerialization()
+    {
+      ProductCollection collection = new ProductCollection()
+        {
+          new Product() {Name = "Test1"},
+          new Product() {Name = "Test2"},
+          new Product() {Name = "Test3"}
+        };
+
+      JsonSerializer jsonSerializer = new JsonSerializer();
+      jsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+
+      StringWriter sw = new StringWriter();
+
+      jsonSerializer.Serialize(sw, collection);
+
+      Assert.AreEqual(@"[{""Name"":""Test1"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null},{""Name"":""Test2"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null},{""Name"":""Test3"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0,""Sizes"":null}]",
+                      sw.GetStringBuilder().ToString());
+
+      ProductCollection collectionNew = (ProductCollection) jsonSerializer.Deserialize(new JsonTextReader(new StringReader(sw.GetStringBuilder().ToString())), typeof (ProductCollection));
+
+      CollectionAssert.AreEqual(collection, collectionNew);
+    }
+
+    [Test]
+    public void SerializeObject()
+    {
+      string json = JsonConvert.SerializeObject(new object());
+      Assert.AreEqual("{}", json);
+    }
+
+    [Test]
+    public void SerializeNull()
+    {
+      string json = JsonConvert.SerializeObject(null);
+      Assert.AreEqual("null", json);
+    }
+
+    [Test]
+    public void CanDeserializeIntArrayWhenNotFirstPropertyInJson()
+    {
+      string json = "{foo:'hello',bar:[1,2,3]}";
+      ClassWithArray wibble = JsonConvert.DeserializeObject<ClassWithArray>(json);
+      Assert.AreEqual("hello", wibble.Foo);
+
+      Assert.AreEqual(4, wibble.Bar.Count);
+      Assert.AreEqual(int.MaxValue, wibble.Bar[0]);
+      Assert.AreEqual(1, wibble.Bar[1]);
+      Assert.AreEqual(2, wibble.Bar[2]);
+      Assert.AreEqual(3, wibble.Bar[3]);
+    }
+
+    [Test]
+    public void CanDeserializeIntArray_WhenArrayIsFirstPropertyInJson()
+    {
+      string json = "{bar:[1,2,3], foo:'hello'}";
+      ClassWithArray wibble = JsonConvert.DeserializeObject<ClassWithArray>(json);
+      Assert.AreEqual("hello", wibble.Foo);
+
+      Assert.AreEqual(4, wibble.Bar.Count);
+      Assert.AreEqual(int.MaxValue, wibble.Bar[0]);
+      Assert.AreEqual(1, wibble.Bar[1]);
+      Assert.AreEqual(2, wibble.Bar[2]);
+      Assert.AreEqual(3, wibble.Bar[3]);
+    }
+
+    [Test]
+    public void ObjectCreationHandlingReplace()
+    {
+      string json = "{bar:[1,2,3], foo:'hello'}";
+
+      JsonSerializer s = new JsonSerializer();
+      s.ObjectCreationHandling = ObjectCreationHandling.Replace;
+
+      ClassWithArray wibble = (ClassWithArray) s.Deserialize(new StringReader(json), typeof (ClassWithArray));
+
+      Assert.AreEqual("hello", wibble.Foo);
+
+      Assert.AreEqual(1, wibble.Bar.Count);
+    }
+
+    [Test]
+    public void CanDeserializeSerializedJson()
+    {
+      ClassWithArray wibble = new ClassWithArray();
+      wibble.Foo = "hello";
+      wibble.Bar.Add(1);
+      wibble.Bar.Add(2);
+      wibble.Bar.Add(3);
+      string json = JsonConvert.SerializeObject(wibble);
+
+      ClassWithArray wibbleOut = JsonConvert.DeserializeObject<ClassWithArray>(json);
+      Assert.AreEqual("hello", wibbleOut.Foo);
+
+      Assert.AreEqual(5, wibbleOut.Bar.Count);
+      Assert.AreEqual(int.MaxValue, wibbleOut.Bar[0]);
+      Assert.AreEqual(int.MaxValue, wibbleOut.Bar[1]);
+      Assert.AreEqual(1, wibbleOut.Bar[2]);
+      Assert.AreEqual(2, wibbleOut.Bar[3]);
+      Assert.AreEqual(3, wibbleOut.Bar[4]);
+    }
+
+    [Test]
+    public void SerializeConverableObjects()
+    {
+      string json = JsonConvert.SerializeObject(new ConverableMembers(), Formatting.Indented);
+
+      string expected = null;
+#if !NETFX_CORE
+      expected = @"{
+  ""String"": ""string"",
+  ""Int32"": 2147483647,
+  ""UInt32"": 4294967295,
+  ""Byte"": 255,
+  ""SByte"": 127,
+  ""Short"": 32767,
+  ""UShort"": 65535,
+  ""Long"": 9223372036854775807,
+  ""ULong"": 9223372036854775807,
+  ""Double"": 1.7976931348623157E+308,
+  ""Float"": 3.40282347E+38,
+  ""DBNull"": null,
+  ""Bool"": true,
+  ""Char"": ""\u0000""
+}";
+#else
+      expected = @"{
+  ""String"": ""string"",
+  ""Int32"": 2147483647,
+  ""UInt32"": 4294967295,
+  ""Byte"": 255,
+  ""SByte"": 127,
+  ""Short"": 32767,
+  ""UShort"": 65535,
+  ""Long"": 9223372036854775807,
+  ""ULong"": 9223372036854775807,
+  ""Double"": 1.7976931348623157E+308,
+  ""Float"": 3.40282347E+38,
+  ""Bool"": true,
+  ""Char"": ""\u0000""
+}";
+#endif
+
+      Assert.AreEqual(expected, json);
+
+      ConverableMembers c = JsonConvert.DeserializeObject<ConverableMembers>(json);
+      Assert.AreEqual("string", c.String);
+      Assert.AreEqual(double.MaxValue, c.Double);
+#if !NETFX_CORE
+      Assert.AreEqual(DBNull.Value, c.DBNull);
+#endif
+    }
+
+    [Test]
+    public void SerializeStack()
+    {
+      Stack<object> s = new Stack<object>();
+      s.Push(1);
+      s.Push(2);
+      s.Push(3);
+
+      string json = JsonConvert.SerializeObject(s);
+      Assert.AreEqual("[3,2,1]", json);
+    }
+
+    [Test]
+    public void GuidTest()
+    {
+      Guid guid = new Guid("BED7F4EA-1A96-11d2-8F08-00A0C9A6186D");
+
+      string json = JsonConvert.SerializeObject(new ClassWithGuid {GuidField = guid});
+      Assert.AreEqual(@"{""GuidField"":""bed7f4ea-1a96-11d2-8f08-00a0c9a6186d""}", json);
+
+      ClassWithGuid c = JsonConvert.DeserializeObject<ClassWithGuid>(json);
+      Assert.AreEqual(guid, c.GuidField);
+    }
+
+    [Test]
+    public void EnumTest()
+    {
+      string json = JsonConvert.SerializeObject(StringComparison.CurrentCultureIgnoreCase);
+      Assert.AreEqual(@"1", json);
+
+      StringComparison s = JsonConvert.DeserializeObject<StringComparison>(json);
+      Assert.AreEqual(StringComparison.CurrentCultureIgnoreCase, s);
+    }
+
+    public class ClassWithTimeSpan
+    {
+      public TimeSpan TimeSpanField;
+    }
+
+    [Test]
+    public void TimeSpanTest()
+    {
+      TimeSpan ts = new TimeSpan(00, 23, 59, 1);
+
+      string json = JsonConvert.SerializeObject(new ClassWithTimeSpan {TimeSpanField = ts}, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""TimeSpanField"": ""23:59:01""
+}", json);
+
+      ClassWithTimeSpan c = JsonConvert.DeserializeObject<ClassWithTimeSpan>(json);
+      Assert.AreEqual(ts, c.TimeSpanField);
+    }
+
+    [Test]
+    public void JsonIgnoreAttributeOnClassTest()
+    {
+      string json = JsonConvert.SerializeObject(new JsonIgnoreAttributeOnClassTestClass());
+
+      Assert.AreEqual(@"{""TheField"":0,""Property"":21}", json);
+
+      JsonIgnoreAttributeOnClassTestClass c = JsonConvert.DeserializeObject<JsonIgnoreAttributeOnClassTestClass>(@"{""TheField"":99,""Property"":-1,""IgnoredField"":-1}");
+
+      Assert.AreEqual(0, c.IgnoredField);
+      Assert.AreEqual(99, c.Field);
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void SerializeArrayAsArrayList()
+    {
+      string jsonText = @"[3, ""somestring"",[1,2,3],{}]";
+      ArrayList o = JsonConvert.DeserializeObject<ArrayList>(jsonText);
+
+      Assert.AreEqual(4, o.Count);
+      Assert.AreEqual(3, ((JArray) o[2]).Count);
+      Assert.AreEqual(0, ((JObject) o[3]).Count);
+    }
+#endif
+
+    [Test]
+    public void SerializeMemberGenericList()
+    {
+      Name name = new Name("The Idiot in Next To Me");
+
+      PhoneNumber p1 = new PhoneNumber("555-1212");
+      PhoneNumber p2 = new PhoneNumber("444-1212");
+
+      name.pNumbers.Add(p1);
+      name.pNumbers.Add(p2);
+
+      string json = JsonConvert.SerializeObject(name, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""personsName"": ""The Idiot in Next To Me"",
+  ""pNumbers"": [
+    {
+      ""phoneNumber"": ""555-1212""
+    },
+    {
+      ""phoneNumber"": ""444-1212""
+    }
+  ]
+}", json);
+
+      Name newName = JsonConvert.DeserializeObject<Name>(json);
+
+      Assert.AreEqual("The Idiot in Next To Me", newName.personsName);
+
+      // not passed in as part of the constructor but assigned to pNumbers property
+      Assert.AreEqual(2, newName.pNumbers.Count);
+      Assert.AreEqual("555-1212", newName.pNumbers[0].phoneNumber);
+      Assert.AreEqual("444-1212", newName.pNumbers[1].phoneNumber);
+    }
+
+    [Test]
+    public void ConstructorCaseSensitivity()
+    {
+      ConstructorCaseSensitivityClass c = new ConstructorCaseSensitivityClass("param1", "Param1", "Param2");
+
+      string json = JsonConvert.SerializeObject(c);
+
+      ConstructorCaseSensitivityClass deserialized = JsonConvert.DeserializeObject<ConstructorCaseSensitivityClass>(json);
+
+      Assert.AreEqual("param1", deserialized.param1);
+      Assert.AreEqual("Param1", deserialized.Param1);
+      Assert.AreEqual("Param2", deserialized.Param2);
+    }
+
+    [Test]
+    public void SerializerShouldUseClassConverter()
+    {
+      ConverterPrecedenceClass c1 = new ConverterPrecedenceClass("!Test!");
+
+      string json = JsonConvert.SerializeObject(c1);
+      Assert.AreEqual(@"[""Class"",""!Test!""]", json);
+
+      ConverterPrecedenceClass c2 = JsonConvert.DeserializeObject<ConverterPrecedenceClass>(json);
+
+      Assert.AreEqual("!Test!", c2.TestValue);
+    }
+
+    [Test]
+    public void SerializerShouldUseClassConverterOverArgumentConverter()
+    {
+      ConverterPrecedenceClass c1 = new ConverterPrecedenceClass("!Test!");
+
+      string json = JsonConvert.SerializeObject(c1, new ArgumentConverterPrecedenceClassConverter());
+      Assert.AreEqual(@"[""Class"",""!Test!""]", json);
+
+      ConverterPrecedenceClass c2 = JsonConvert.DeserializeObject<ConverterPrecedenceClass>(json, new ArgumentConverterPrecedenceClassConverter());
+
+      Assert.AreEqual("!Test!", c2.TestValue);
+    }
+
+    [Test]
+    public void SerializerShouldUseMemberConverter_IsoDate()
+    {
+      DateTime testDate = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
+      MemberConverterClass m1 = new MemberConverterClass {DefaultConverter = testDate, MemberConverter = testDate};
+
+      string json = JsonConvert.SerializeObject(m1);
+      Assert.AreEqual(@"{""DefaultConverter"":""1970-01-01T00:00:00Z"",""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
+
+      MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json);
+
+      Assert.AreEqual(testDate, m2.DefaultConverter);
+      Assert.AreEqual(testDate, m2.MemberConverter);
+    }
+
+    [Test]
+    public void SerializerShouldUseMemberConverter_MsDate()
+    {
+      DateTime testDate = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
+      MemberConverterClass m1 = new MemberConverterClass { DefaultConverter = testDate, MemberConverter = testDate };
+
+      string json = JsonConvert.SerializeObject(m1, new JsonSerializerSettings
+        {
+          DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
+        });
+      Assert.AreEqual(@"{""DefaultConverter"":""\/Date(0)\/"",""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
+
+      MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json);
+
+      Assert.AreEqual(testDate, m2.DefaultConverter);
+      Assert.AreEqual(testDate, m2.MemberConverter);
+    }
+
+    [Test]
+    public void SerializerShouldUseMemberConverterOverArgumentConverter()
+    {
+      DateTime testDate = new DateTime(JsonConvert.InitialJavaScriptDateTicks, DateTimeKind.Utc);
+      MemberConverterClass m1 = new MemberConverterClass {DefaultConverter = testDate, MemberConverter = testDate};
+
+      string json = JsonConvert.SerializeObject(m1, new JavaScriptDateTimeConverter());
+      Assert.AreEqual(@"{""DefaultConverter"":new Date(0),""MemberConverter"":""1970-01-01T00:00:00Z""}", json);
+
+      MemberConverterClass m2 = JsonConvert.DeserializeObject<MemberConverterClass>(json, new JavaScriptDateTimeConverter());
+
+      Assert.AreEqual(testDate, m2.DefaultConverter);
+      Assert.AreEqual(testDate, m2.MemberConverter);
+    }
+
+    [Test]
+    public void ConverterAttributeExample()
+    {
+      DateTime date = Convert.ToDateTime("1970-01-01T00:00:00Z").ToUniversalTime();
+
+      MemberConverterClass c = new MemberConverterClass
+        {
+          DefaultConverter = date,
+          MemberConverter = date
+        };
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Console.WriteLine(json);
+      //{
+      //  "DefaultConverter": "\/Date(0)\/",
+      //  "MemberConverter": "1970-01-01T00:00:00Z"
+      //}
+    }
+
+    [Test]
+    public void SerializerShouldUseMemberConverterOverClassAndArgumentConverter()
+    {
+      ClassAndMemberConverterClass c1 = new ClassAndMemberConverterClass();
+      c1.DefaultConverter = new ConverterPrecedenceClass("DefaultConverterValue");
+      c1.MemberConverter = new ConverterPrecedenceClass("MemberConverterValue");
+
+      string json = JsonConvert.SerializeObject(c1, new ArgumentConverterPrecedenceClassConverter());
+      Assert.AreEqual(@"{""DefaultConverter"":[""Class"",""DefaultConverterValue""],""MemberConverter"":[""Member"",""MemberConverterValue""]}", json);
+
+      ClassAndMemberConverterClass c2 = JsonConvert.DeserializeObject<ClassAndMemberConverterClass>(json, new ArgumentConverterPrecedenceClassConverter());
+
+      Assert.AreEqual("DefaultConverterValue", c2.DefaultConverter.TestValue);
+      Assert.AreEqual("MemberConverterValue", c2.MemberConverter.TestValue);
+    }
+
+    [Test]
+    public void IncompatibleJsonAttributeShouldThrow()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>(
+        "JsonConverter IsoDateTimeConverter on Newtonsoft.Json.Tests.TestObjects.IncompatibleJsonAttributeClass is not compatible with member type IncompatibleJsonAttributeClass.",
+        () =>
+        {
+          IncompatibleJsonAttributeClass c = new IncompatibleJsonAttributeClass();
+          JsonConvert.SerializeObject(c);
+        });
+    }
+
+    [Test]
+    public void GenericAbstractProperty()
+    {
+      string json = JsonConvert.SerializeObject(new GenericImpl());
+      Assert.AreEqual(@"{""Id"":0}", json);
+    }
+
+    [Test]
+    public void DeserializeNullable()
+    {
+      string json;
+
+      json = JsonConvert.SerializeObject((int?) null);
+      Assert.AreEqual("null", json);
+
+      json = JsonConvert.SerializeObject((int?) 1);
+      Assert.AreEqual("1", json);
+    }
+
+    [Test]
+    public void SerializeJsonRaw()
+    {
+      PersonRaw personRaw = new PersonRaw
+        {
+          FirstName = "FirstNameValue",
+          RawContent = new JRaw("[1,2,3,4,5]"),
+          LastName = "LastNameValue"
+        };
+
+      string json;
+
+      json = JsonConvert.SerializeObject(personRaw);
+      Assert.AreEqual(@"{""first_name"":""FirstNameValue"",""RawContent"":[1,2,3,4,5],""last_name"":""LastNameValue""}", json);
+    }
+
+    [Test]
+    public void DeserializeJsonRaw()
+    {
+      string json = @"{""first_name"":""FirstNameValue"",""RawContent"":[1,2,3,4,5],""last_name"":""LastNameValue""}";
+
+      PersonRaw personRaw = JsonConvert.DeserializeObject<PersonRaw>(json);
+
+      Assert.AreEqual("FirstNameValue", personRaw.FirstName);
+      Assert.AreEqual("[1,2,3,4,5]", personRaw.RawContent.ToString());
+      Assert.AreEqual("LastNameValue", personRaw.LastName);
+    }
+
+
+    [Test]
+    public void DeserializeNullableMember()
+    {
+      UserNullable userNullablle = new UserNullable
+        {
+          Id = new Guid("AD6205E8-0DF4-465d-AEA6-8BA18E93A7E7"),
+          FName = "FirstValue",
+          LName = "LastValue",
+          RoleId = 5,
+          NullableRoleId = 6,
+          NullRoleId = null,
+          Active = true
+        };
+
+      string json = JsonConvert.SerializeObject(userNullablle);
+
+      Assert.AreEqual(@"{""Id"":""ad6205e8-0df4-465d-aea6-8ba18e93a7e7"",""FName"":""FirstValue"",""LName"":""LastValue"",""RoleId"":5,""NullableRoleId"":6,""NullRoleId"":null,""Active"":true}", json);
+
+      UserNullable userNullablleDeserialized = JsonConvert.DeserializeObject<UserNullable>(json);
+
+      Assert.AreEqual(new Guid("AD6205E8-0DF4-465d-AEA6-8BA18E93A7E7"), userNullablleDeserialized.Id);
+      Assert.AreEqual("FirstValue", userNullablleDeserialized.FName);
+      Assert.AreEqual("LastValue", userNullablleDeserialized.LName);
+      Assert.AreEqual(5, userNullablleDeserialized.RoleId);
+      Assert.AreEqual(6, userNullablleDeserialized.NullableRoleId);
+      Assert.AreEqual(null, userNullablleDeserialized.NullRoleId);
+      Assert.AreEqual(true, userNullablleDeserialized.Active);
+    }
+
+    [Test]
+    public void DeserializeInt64ToNullableDouble()
+    {
+      string json = @"{""Height"":1}";
+
+      DoubleClass c = JsonConvert.DeserializeObject<DoubleClass>(json);
+      Assert.AreEqual(1, c.Height);
+    }
+
+    [Test]
+    public void SerializeTypeProperty()
+    {
+      string boolRef = typeof (bool).AssemblyQualifiedName;
+      TypeClass typeClass = new TypeClass {TypeProperty = typeof (bool)};
+
+      string json = JsonConvert.SerializeObject(typeClass);
+      Assert.AreEqual(@"{""TypeProperty"":""" + boolRef + @"""}", json);
+
+      TypeClass typeClass2 = JsonConvert.DeserializeObject<TypeClass>(json);
+      Assert.AreEqual(typeof (bool), typeClass2.TypeProperty);
+
+      string jsonSerializerTestRef = typeof (JsonSerializerTest).AssemblyQualifiedName;
+      typeClass = new TypeClass {TypeProperty = typeof (JsonSerializerTest)};
+
+      json = JsonConvert.SerializeObject(typeClass);
+      Assert.AreEqual(@"{""TypeProperty"":""" + jsonSerializerTestRef + @"""}", json);
+
+      typeClass2 = JsonConvert.DeserializeObject<TypeClass>(json);
+      Assert.AreEqual(typeof (JsonSerializerTest), typeClass2.TypeProperty);
+    }
+
+    [Test]
+    public void RequiredMembersClass()
+    {
+      RequiredMembersClass c = new RequiredMembersClass()
+        {
+          BirthDate = new DateTime(2000, 12, 20, 10, 55, 55, DateTimeKind.Utc),
+          FirstName = "Bob",
+          LastName = "Smith",
+          MiddleName = "Cosmo"
+        };
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""FirstName"": ""Bob"",
+  ""MiddleName"": ""Cosmo"",
+  ""LastName"": ""Smith"",
+  ""BirthDate"": ""2000-12-20T10:55:55Z""
+}", json);
+
+      RequiredMembersClass c2 = JsonConvert.DeserializeObject<RequiredMembersClass>(json);
+
+      Assert.AreEqual("Bob", c2.FirstName);
+      Assert.AreEqual(new DateTime(2000, 12, 20, 10, 55, 55, DateTimeKind.Utc), c2.BirthDate);
+    }
+
+    [Test]
+    public void DeserializeRequiredMembersClassWithNullValues()
+    {
+      string json = @"{
+  ""FirstName"": ""I can't be null bro!"",
+  ""MiddleName"": null,
+  ""LastName"": null,
+  ""BirthDate"": ""\/Date(977309755000)\/""
+}";
+
+      RequiredMembersClass c = JsonConvert.DeserializeObject<RequiredMembersClass>(json);
+
+      Assert.AreEqual("I can't be null bro!", c.FirstName);
+      Assert.AreEqual(null, c.MiddleName);
+      Assert.AreEqual(null, c.LastName);
+    }
+
+    [Test]
+    public void DeserializeRequiredMembersClassNullRequiredValueProperty()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("Required property 'FirstName' expects a value but got null. Line 6, position 2.",
+        () =>
+        {
+          string json = @"{
+  ""FirstName"": null,
+  ""MiddleName"": null,
+  ""LastName"": null,
+  ""BirthDate"": ""\/Date(977309755000)\/""
+}";
+
+          JsonConvert.DeserializeObject<RequiredMembersClass>(json);
+        });
+    }
+
+    [Test]
+    public void SerializeRequiredMembersClassNullRequiredValueProperty()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("Cannot write a null value for property 'FirstName'. Property requires a value.",
+      () =>
+      {
+        RequiredMembersClass requiredMembersClass = new RequiredMembersClass
+        {
+          FirstName = null,
+          BirthDate = new DateTime(2000, 10, 10, 10, 10, 10, DateTimeKind.Utc),
+          LastName = null,
+          MiddleName = null
+        };
+
+        string json = JsonConvert.SerializeObject(requiredMembersClass);
+        Console.WriteLine(json);
+      });
+    }
+
+    [Test]
+    public void RequiredMembersClassMissingRequiredProperty()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("Required property 'LastName' not found in JSON. Line 3, position 2.",
+      () =>
+      {
+        string json = @"{
+  ""FirstName"": ""Bob""
+}";
+
+        JsonConvert.DeserializeObject<RequiredMembersClass>(json);
+      }); 
+    }
+
+    [Test]
+    public void SerializeJaggedArray()
+    {
+      JaggedArray aa = new JaggedArray();
+      aa.Before = "Before!";
+      aa.After = "After!";
+      aa.Coordinates = new[] {new[] {1, 1}, new[] {1, 2}, new[] {2, 1}, new[] {2, 2}};
+
+      string json = JsonConvert.SerializeObject(aa);
+
+      Assert.AreEqual(@"{""Before"":""Before!"",""Coordinates"":[[1,1],[1,2],[2,1],[2,2]],""After"":""After!""}", json);
+    }
+
+    [Test]
+    public void DeserializeJaggedArray()
+    {
+      string json = @"{""Before"":""Before!"",""Coordinates"":[[1,1],[1,2],[2,1],[2,2]],""After"":""After!""}";
+
+      JaggedArray aa = JsonConvert.DeserializeObject<JaggedArray>(json);
+
+      Assert.AreEqual("Before!", aa.Before);
+      Assert.AreEqual("After!", aa.After);
+      Assert.AreEqual(4, aa.Coordinates.Length);
+      Assert.AreEqual(2, aa.Coordinates[0].Length);
+      Assert.AreEqual(1, aa.Coordinates[0][0]);
+      Assert.AreEqual(2, aa.Coordinates[1][1]);
+
+      string after = JsonConvert.SerializeObject(aa);
+
+      Assert.AreEqual(json, after);
+    }
+
+    [Test]
+    public void DeserializeGoogleGeoCode()
+    {
+      string json = @"{
+  ""name"": ""1600 Amphitheatre Parkway, Mountain View, CA, USA"",
+  ""Status"": {
+    ""code"": 200,
+    ""request"": ""geocode""
+  },
+  ""Placemark"": [
+    {
+      ""address"": ""1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA"",
+      ""AddressDetails"": {
+        ""Country"": {
+          ""CountryNameCode"": ""US"",
+          ""AdministrativeArea"": {
+            ""AdministrativeAreaName"": ""CA"",
+            ""SubAdministrativeArea"": {
+              ""SubAdministrativeAreaName"": ""Santa Clara"",
+              ""Locality"": {
+                ""LocalityName"": ""Mountain View"",
+                ""Thoroughfare"": {
+                  ""ThoroughfareName"": ""1600 Amphitheatre Pkwy""
+                },
+                ""PostalCode"": {
+                  ""PostalCodeNumber"": ""94043""
+                }
+              }
+            }
+          }
+        },
+        ""Accuracy"": 8
+      },
+      ""Point"": {
+        ""coordinates"": [-122.083739, 37.423021, 0]
+      }
+    }
+  ]
+}";
+
+      GoogleMapGeocoderStructure jsonGoogleMapGeocoder = JsonConvert.DeserializeObject<GoogleMapGeocoderStructure>(json);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Could not create an instance of type Newtonsoft.Json.Tests.TestObjects.ICo. Type is an interface or abstract class and cannot be instantated. Line 1, position 14."
+#endif
+      )]
+    public void DeserializeInterfaceProperty()
+    {
+      InterfacePropertyTestClass testClass = new InterfacePropertyTestClass();
+      testClass.co = new Co();
+      String strFromTest = JsonConvert.SerializeObject(testClass);
+      InterfacePropertyTestClass testFromDe = (InterfacePropertyTestClass) JsonConvert.DeserializeObject(strFromTest, typeof (InterfacePropertyTestClass));
+    }
+
+    private Person GetPerson()
+    {
+      Person person = new Person
+        {
+          Name = "Mike Manager",
+          BirthDate = new DateTime(1983, 8, 3, 0, 0, 0, DateTimeKind.Utc),
+          Department = "IT",
+          LastModified = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc)
+        };
+      return person;
+    }
+
+    [Test]
+    public void WriteJsonDates()
+    {
+      LogEntry entry = new LogEntry
+        {
+          LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc),
+          Details = "Application started."
+        };
+
+      string defaultJson = JsonConvert.SerializeObject(entry);
+      // {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}
+
+      string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());
+      // {"Details":"Application started.","LogDate":"2009-02-15T00:00:00.0000000Z"}
+
+      string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter());
+      // {"Details":"Application started.","LogDate":new Date(1234656000000)}
+
+      Console.WriteLine(defaultJson);
+      Console.WriteLine(isoJson);
+      Console.WriteLine(javascriptJson);
+    }
+
+    public void GenericListAndDictionaryInterfaceProperties()
+    {
+      GenericListAndDictionaryInterfaceProperties o = new GenericListAndDictionaryInterfaceProperties();
+      o.IDictionaryProperty = new Dictionary<string, int>
+        {
+          {"one", 1},
+          {"two", 2},
+          {"three", 3}
+        };
+      o.IListProperty = new List<int>
+        {
+          1, 2, 3
+        };
+      o.IEnumerableProperty = new List<int>
+        {
+          4, 5, 6
+        };
+
+      string json = JsonConvert.SerializeObject(o, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""IEnumerableProperty"": [
+    4,
+    5,
+    6
+  ],
+  ""IListProperty"": [
+    1,
+    2,
+    3
+  ],
+  ""IDictionaryProperty"": {
+    ""one"": 1,
+    ""two"": 2,
+    ""three"": 3
+  }
+}", json);
+
+      GenericListAndDictionaryInterfaceProperties deserializedObject = JsonConvert.DeserializeObject<GenericListAndDictionaryInterfaceProperties>(json);
+      Assert.IsNotNull(deserializedObject);
+
+      CollectionAssert.AreEqual(o.IListProperty.ToArray(), deserializedObject.IListProperty.ToArray());
+      CollectionAssert.AreEqual(o.IEnumerableProperty.ToArray(), deserializedObject.IEnumerableProperty.ToArray());
+      CollectionAssert.AreEqual(o.IDictionaryProperty.ToArray(), deserializedObject.IDictionaryProperty.ToArray());
+    }
+
+    [Test]
+    public void DeserializeBestMatchPropertyCase()
+    {
+      string json = @"{
+  ""firstName"": ""firstName"",
+  ""FirstName"": ""FirstName"",
+  ""LastName"": ""LastName"",
+  ""lastName"": ""lastName"",
+}";
+
+      PropertyCase o = JsonConvert.DeserializeObject<PropertyCase>(json);
+      Assert.IsNotNull(o);
+
+      Assert.AreEqual("firstName", o.firstName);
+      Assert.AreEqual("FirstName", o.FirstName);
+      Assert.AreEqual("LastName", o.LastName);
+      Assert.AreEqual("lastName", o.lastName);
+    }
+
+    [Test]
+    public void DeserializePropertiesOnToNonDefaultConstructor()
+    {
+      SubKlass i = new SubKlass("my subprop");
+      i.SuperProp = "overrided superprop";
+
+      string json = JsonConvert.SerializeObject(i);
+      Assert.AreEqual(@"{""SubProp"":""my subprop"",""SuperProp"":""overrided superprop""}", json);
+
+      SubKlass ii = JsonConvert.DeserializeObject<SubKlass>(json);
+
+      string newJson = JsonConvert.SerializeObject(ii);
+      Assert.AreEqual(@"{""SubProp"":""my subprop"",""SuperProp"":""overrided superprop""}", newJson);
+    }
+
+    [Test]
+    public void SerializeJsonPropertyWithHandlingValues()
+    {
+      JsonPropertyWithHandlingValues o = new JsonPropertyWithHandlingValues();
+      o.DefaultValueHandlingIgnoreProperty = "Default!";
+      o.DefaultValueHandlingIncludeProperty = "Default!";
+      o.DefaultValueHandlingPopulateProperty = "Default!";
+      o.DefaultValueHandlingIgnoreAndPopulateProperty = "Default!";
+
+      string json = JsonConvert.SerializeObject(o, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""DefaultValueHandlingIncludeProperty"": ""Default!"",
+  ""DefaultValueHandlingPopulateProperty"": ""Default!"",
+  ""NullValueHandlingIncludeProperty"": null,
+  ""ReferenceLoopHandlingErrorProperty"": null,
+  ""ReferenceLoopHandlingIgnoreProperty"": null,
+  ""ReferenceLoopHandlingSerializeProperty"": null
+}", json);
+
+      json = JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore});
+
+      Assert.AreEqual(@"{
+  ""DefaultValueHandlingIncludeProperty"": ""Default!"",
+  ""DefaultValueHandlingPopulateProperty"": ""Default!"",
+  ""NullValueHandlingIncludeProperty"": null
+}", json);
+    }
+
+    [Test]
+    public void DeserializeJsonPropertyWithHandlingValues()
+    {
+      string json = "{}";
+
+      JsonPropertyWithHandlingValues o = JsonConvert.DeserializeObject<JsonPropertyWithHandlingValues>(json);
+      Assert.AreEqual("Default!", o.DefaultValueHandlingIgnoreAndPopulateProperty);
+      Assert.AreEqual("Default!", o.DefaultValueHandlingPopulateProperty);
+      Assert.AreEqual(null, o.DefaultValueHandlingIgnoreProperty);
+      Assert.AreEqual(null, o.DefaultValueHandlingIncludeProperty);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException))]
+    public void JsonPropertyWithHandlingValues_ReferenceLoopError()
+    {
+      JsonPropertyWithHandlingValues o = new JsonPropertyWithHandlingValues();
+      o.ReferenceLoopHandlingErrorProperty = o;
+
+      JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings {ReferenceLoopHandling = ReferenceLoopHandling.Ignore});
+    }
+
+    [Test]
+    public void PartialClassDeserialize()
+    {
+      string json = @"{
+    ""request"": ""ux.settings.update"",
+    ""sid"": ""14c561bd-32a8-457e-b4e5-4bba0832897f"",
+    ""uid"": ""30c39065-0f31-de11-9442-001e3786a8ec"",
+    ""fidOrder"": [
+        ""id"",
+        ""andytest_name"",
+        ""andytest_age"",
+        ""andytest_address"",
+        ""andytest_phone"",
+        ""date"",
+        ""title"",
+        ""titleId""
+    ],
+    ""entityName"": ""Andy Test"",
+    ""setting"": ""entity.field.order""
+}";
+
+      RequestOnly r = JsonConvert.DeserializeObject<RequestOnly>(json);
+      Assert.AreEqual("ux.settings.update", r.Request);
+
+      NonRequest n = JsonConvert.DeserializeObject<NonRequest>(json);
+      Assert.AreEqual(new Guid("14c561bd-32a8-457e-b4e5-4bba0832897f"), n.Sid);
+      Assert.AreEqual(new Guid("30c39065-0f31-de11-9442-001e3786a8ec"), n.Uid);
+      Assert.AreEqual(8, n.FidOrder.Count);
+      Assert.AreEqual("id", n.FidOrder[0]);
+      Assert.AreEqual("titleId", n.FidOrder[n.FidOrder.Count - 1]);
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+    [MetadataType(typeof (OptInClassMetadata))]
+    public class OptInClass
+    {
+      [DataContract]
+      public class OptInClassMetadata
+      {
+        [DataMember]
+        public string Name { get; set; }
+
+        [DataMember]
+        public int Age { get; set; }
+
+        public string NotIncluded { get; set; }
+      }
+
+      public string Name { get; set; }
+      public int Age { get; set; }
+      public string NotIncluded { get; set; }
+    }
+
+    [Test]
+    public void OptInClassMetadataSerialization()
+    {
+      OptInClass optInClass = new OptInClass();
+      optInClass.Age = 26;
+      optInClass.Name = "James NK";
+      optInClass.NotIncluded = "Poor me :(";
+
+      string json = JsonConvert.SerializeObject(optInClass, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""James NK"",
+  ""Age"": 26
+}", json);
+
+      OptInClass newOptInClass = JsonConvert.DeserializeObject<OptInClass>(@"{
+  ""Name"": ""James NK"",
+  ""NotIncluded"": ""Ignore me!"",
+  ""Age"": 26
+}");
+      Assert.AreEqual(26, newOptInClass.Age);
+      Assert.AreEqual("James NK", newOptInClass.Name);
+      Assert.AreEqual(null, newOptInClass.NotIncluded);
+    }
+#endif
+
+#if !PocketPC && !NET20
+    [DataContract]
+    public class DataContractPrivateMembers
+    {
+      public DataContractPrivateMembers()
+      {
+      }
+
+      public DataContractPrivateMembers(string name, int age, int rank, string title)
+      {
+        _name = name;
+        Age = age;
+        Rank = rank;
+        Title = title;
+      }
+
+      [DataMember] private string _name;
+
+      [DataMember(Name = "_age")]
+      private int Age { get; set; }
+
+      [JsonProperty]
+      private int Rank { get; set; }
+
+      [JsonProperty(PropertyName = "JsonTitle")]
+      [DataMember(Name = "DataTitle")]
+      private string Title { get; set; }
+
+      public string NotIncluded { get; set; }
+
+      public override string ToString()
+      {
+        return "_name: " + _name + ", _age: " + Age + ", Rank: " + Rank + ", JsonTitle: " + Title;
+      }
+    }
+
+    [Test]
+    public void SerializeDataContractPrivateMembers()
+    {
+      DataContractPrivateMembers c = new DataContractPrivateMembers("Jeff", 26, 10, "Dr");
+      c.NotIncluded = "Hi";
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""_name"": ""Jeff"",
+  ""_age"": 26,
+  ""Rank"": 10,
+  ""JsonTitle"": ""Dr""
+}", json);
+
+      DataContractPrivateMembers cc = JsonConvert.DeserializeObject<DataContractPrivateMembers>(json);
+      Assert.AreEqual("_name: Jeff, _age: 26, Rank: 10, JsonTitle: Dr", cc.ToString());
+    }
+#endif
+
+    [Test]
+    public void DeserializeDictionaryInterface()
+    {
+      string json = @"{
+  ""Name"": ""Name!"",
+  ""Dictionary"": {
+    ""Item"": 11
+  }
+}";
+
+      DictionaryInterfaceClass c = JsonConvert.DeserializeObject<DictionaryInterfaceClass>(json,
+                                                                                           new JsonSerializerSettings {ObjectCreationHandling = ObjectCreationHandling.Replace});
+      Assert.AreEqual("Name!", c.Name);
+      Assert.AreEqual(1, c.Dictionary.Count);
+      Assert.AreEqual(11, c.Dictionary["Item"]);
+    }
+
+    [Test]
+    public void DeserializeDictionaryInterfaceWithExistingValues()
+    {
+      string json = @"{
+  ""Random"": {
+    ""blah"": 1
+  },
+  ""Name"": ""Name!"",
+  ""Dictionary"": {
+    ""Item"": 11,
+    ""Item1"": 12
+  },
+  ""Collection"": [
+    999
+  ],
+  ""Employee"": {
+    ""Manager"": {
+      ""Name"": ""ManagerName!""
+    }
+  }
+}";
+
+      DictionaryInterfaceClass c = JsonConvert.DeserializeObject<DictionaryInterfaceClass>(json,
+                                                                                           new JsonSerializerSettings {ObjectCreationHandling = ObjectCreationHandling.Reuse});
+
+      Assert.AreEqual("Name!", c.Name);
+      Assert.AreEqual(3, c.Dictionary.Count);
+      Assert.AreEqual(11, c.Dictionary["Item"]);
+      Assert.AreEqual(1, c.Dictionary["existing"]);
+      Assert.AreEqual(4, c.Collection.Count);
+      Assert.AreEqual(1, c.Collection.ElementAt(0));
+      Assert.AreEqual(999, c.Collection.ElementAt(3));
+      Assert.AreEqual("EmployeeName!", c.Employee.Name);
+      Assert.AreEqual("ManagerName!", c.Employee.Manager.Name);
+      Assert.IsNotNull(c.Random);
+    }
+
+    [Test]
+    public void TypedObjectDeserializationWithComments()
+    {
+      string json = @"/*comment*/ { /*comment*/
+        ""Name"": /*comment*/ ""Apple"" /*comment*/, /*comment*/
+        ""ExpiryDate"": ""\/Date(1230422400000)\/"",
+        ""Price"": 3.99,
+        ""Sizes"": /*comment*/ [ /*comment*/
+          ""Small"", /*comment*/
+          ""Medium"" /*comment*/,
+          /*comment*/ ""Large""
+        /*comment*/ ] /*comment*/
+      } /*comment*/";
+
+      Product deserializedProduct = (Product) JsonConvert.DeserializeObject(json, typeof (Product));
+
+      Assert.AreEqual("Apple", deserializedProduct.Name);
+      Assert.AreEqual(new DateTime(2008, 12, 28, 0, 0, 0, DateTimeKind.Utc), deserializedProduct.ExpiryDate);
+      Assert.AreEqual(3.99m, deserializedProduct.Price);
+      Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
+      Assert.AreEqual("Medium", deserializedProduct.Sizes[1]);
+      Assert.AreEqual("Large", deserializedProduct.Sizes[2]);
+    }
+
+    [Test]
+    public void NestedInsideOuterObject()
+    {
+      string json = @"{
+  ""short"": {
+    ""original"": ""http://www.contrast.ie/blog/online&#45;marketing&#45;2009/"",
+    ""short"": ""m2sqc6"",
+    ""shortened"": ""http://short.ie/m2sqc6"",
+    ""error"": {
+      ""code"": 0,
+      ""msg"": ""No action taken""
+    }
+  }
+}";
+
+      JObject o = JObject.Parse(json);
+
+      Shortie s = JsonConvert.DeserializeObject<Shortie>(o["short"].ToString());
+      Assert.IsNotNull(s);
+
+      Assert.AreEqual(s.Original, "http://www.contrast.ie/blog/online&#45;marketing&#45;2009/");
+      Assert.AreEqual(s.Short, "m2sqc6");
+      Assert.AreEqual(s.Shortened, "http://short.ie/m2sqc6");
+    }
+
+    [Test]
+    public void UriSerialization()
+    {
+      Uri uri = new Uri("http://codeplex.com");
+      string json = JsonConvert.SerializeObject(uri);
+
+      Assert.AreEqual("http://codeplex.com/", uri.ToString());
+
+      Uri newUri = JsonConvert.DeserializeObject<Uri>(json);
+      Assert.AreEqual(uri, newUri);
+    }
+
+    [Test]
+    public void AnonymousPlusLinqToSql()
+    {
+      var value = new
+        {
+          bar = new JObject(new JProperty("baz", 13))
+        };
+
+      string json = JsonConvert.SerializeObject(value);
+
+      Assert.AreEqual(@"{""bar"":{""baz"":13}}", json);
+    }
+
+    [Test]
+    public void SerializeEnumerableAsObject()
+    {
+      Content content = new Content
+        {
+          Text = "Blah, blah, blah",
+          Children = new List<Content>
+            {
+              new Content {Text = "First"},
+              new Content {Text = "Second"}
+            }
+        };
+
+      string json = JsonConvert.SerializeObject(content, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Children"": [
+    {
+      ""Children"": null,
+      ""Text"": ""First""
+    },
+    {
+      ""Children"": null,
+      ""Text"": ""Second""
+    }
+  ],
+  ""Text"": ""Blah, blah, blah""
+}", json);
+    }
+
+    [Test]
+    public void DeserializeEnumerableAsObject()
+    {
+      string json = @"{
+  ""Children"": [
+    {
+      ""Children"": null,
+      ""Text"": ""First""
+    },
+    {
+      ""Children"": null,
+      ""Text"": ""Second""
+    }
+  ],
+  ""Text"": ""Blah, blah, blah""
+}";
+
+      Content content = JsonConvert.DeserializeObject<Content>(json);
+
+      Assert.AreEqual("Blah, blah, blah", content.Text);
+      Assert.AreEqual(2, content.Children.Count);
+      Assert.AreEqual("First", content.Children[0].Text);
+      Assert.AreEqual("Second", content.Children[1].Text);
+    }
+
+    [Test]
+    public void RoleTransferTest()
+    {
+      string json = @"{""Operation"":""1"",""RoleName"":""Admin"",""Direction"":""0""}";
+
+      RoleTransfer r = JsonConvert.DeserializeObject<RoleTransfer>(json);
+
+      Assert.AreEqual(RoleTransferOperation.Second, r.Operation);
+      Assert.AreEqual("Admin", r.RoleName);
+      Assert.AreEqual(RoleTransferDirection.First, r.Direction);
+    }
+
+    [Test]
+    public void PrimitiveValuesInObjectArray()
+    {
+      string json = @"{""action"":""Router"",""method"":""Navigate"",""data"":[""dashboard"",null],""type"":""rpc"",""tid"":2}";
+
+      ObjectArrayPropertyTest o = JsonConvert.DeserializeObject<ObjectArrayPropertyTest>(json);
+
+      Assert.AreEqual("Router", o.Action);
+      Assert.AreEqual("Navigate", o.Method);
+      Assert.AreEqual(2, o.Data.Length);
+      Assert.AreEqual("dashboard", o.Data[0]);
+      Assert.AreEqual(null, o.Data[1]);
+    }
+
+    [Test]
+    public void ComplexValuesInObjectArray()
+    {
+      string json = @"{""action"":""Router"",""method"":""Navigate"",""data"":[""dashboard"",[""id"", 1, ""teststring"", ""test""],{""one"":1}],""type"":""rpc"",""tid"":2}";
+
+      ObjectArrayPropertyTest o = JsonConvert.DeserializeObject<ObjectArrayPropertyTest>(json);
+
+      Assert.AreEqual("Router", o.Action);
+      Assert.AreEqual("Navigate", o.Method);
+      Assert.AreEqual(3, o.Data.Length);
+      Assert.AreEqual("dashboard", o.Data[0]);
+      CustomAssert.IsInstanceOfType(typeof (JArray), o.Data[1]);
+      Assert.AreEqual(4, ((JArray) o.Data[1]).Count);
+      CustomAssert.IsInstanceOfType(typeof (JObject), o.Data[2]);
+      Assert.AreEqual(1, ((JObject) o.Data[2]).Count);
+      Assert.AreEqual(1, (int) ((JObject) o.Data[2])["one"]);
+    }
+
+    [Test]
+    public void DeserializeGenericDictionary()
+    {
+      string json = @"{""key1"":""value1"",""key2"":""value2""}";
+
+      Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
+
+      Console.WriteLine(values.Count);
+      // 2
+
+      Console.WriteLine(values["key1"]);
+      // value1
+
+      Assert.AreEqual(2, values.Count);
+      Assert.AreEqual("value1", values["key1"]);
+      Assert.AreEqual("value2", values["key2"]);
+    }
+
+    [Test]
+    public void SerializeGenericList()
+    {
+      Product p1 = new Product
+        {
+          Name = "Product 1",
+          Price = 99.95m,
+          ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),
+        };
+      Product p2 = new Product
+        {
+          Name = "Product 2",
+          Price = 12.50m,
+          ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),
+        };
+
+      List<Product> products = new List<Product>();
+      products.Add(p1);
+      products.Add(p2);
+
+      string json = JsonConvert.SerializeObject(products, Formatting.Indented);
+      //[
+      //  {
+      //    "Name": "Product 1",
+      //    "ExpiryDate": "\/Date(978048000000)\/",
+      //    "Price": 99.95,
+      //    "Sizes": null
+      //  },
+      //  {
+      //    "Name": "Product 2",
+      //    "ExpiryDate": "\/Date(1248998400000)\/",
+      //    "Price": 12.50,
+      //    "Sizes": null
+      //  }
+      //]
+
+      Assert.AreEqual(@"[
+  {
+    ""Name"": ""Product 1"",
+    ""ExpiryDate"": ""2000-12-29T00:00:00Z"",
+    ""Price"": 99.95,
+    ""Sizes"": null
+  },
+  {
+    ""Name"": ""Product 2"",
+    ""ExpiryDate"": ""2009-07-31T00:00:00Z"",
+    ""Price"": 12.50,
+    ""Sizes"": null
+  }
+]", json);
+    }
+
+    [Test]
+    public void DeserializeGenericList()
+    {
+      string json = @"[
+        {
+          ""Name"": ""Product 1"",
+          ""ExpiryDate"": ""\/Date(978048000000)\/"",
+          ""Price"": 99.95,
+          ""Sizes"": null
+        },
+        {
+          ""Name"": ""Product 2"",
+          ""ExpiryDate"": ""\/Date(1248998400000)\/"",
+          ""Price"": 12.50,
+          ""Sizes"": null
+        }
+      ]";
+
+      List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);
+
+      Console.WriteLine(products.Count);
+      // 2
+
+      Product p1 = products[0];
+
+      Console.WriteLine(p1.Name);
+      // Product 1
+
+      Assert.AreEqual(2, products.Count);
+      Assert.AreEqual("Product 1", products[0].Name);
+    }
+
+#if !PocketPC && !NET20
+    [Test]
+    public void DeserializeEmptyStringToNullableDateTime()
+    {
+      string json = @"{""DateTimeField"":""""}";
+
+      NullableDateTimeTestClass c = JsonConvert.DeserializeObject<NullableDateTimeTestClass>(json);
+      Assert.AreEqual(null, c.DateTimeField);
+    }
+#endif
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Unable to find a constructor to use for type Newtonsoft.Json.Tests.TestObjects.Event. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Line 1, position 15."
+#endif
+      )]
+    public void FailWhenClassWithNoDefaultConstructorHasMultipleConstructorsWithArguments()
+    {
+      string json = @"{""sublocation"":""AlertEmailSender.Program.Main"",""userId"":0,""type"":0,""summary"":""Loading settings variables"",""details"":null,""stackTrace"":""   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)\r\n   at System.Environment.get_StackTrace()\r\n   at mr.Logging.Event..ctor(String summary) in C:\\Projects\\MRUtils\\Logging\\Event.vb:line 71\r\n   at AlertEmailSender.Program.Main(String[] args) in C:\\Projects\\AlertEmailSender\\AlertEmailSender\\Program.cs:line 25"",""tag"":null,""time"":""\/Date(1249591032026-0400)\/""}";
+
+      Event e = JsonConvert.DeserializeObject<Event>(json);
+    }
+
+    [Test]
+    public void DeserializeObjectSetOnlyProperty()
+    {
+      string json = @"{'SetOnlyProperty':[1,2,3,4,5]}";
+
+      SetOnlyPropertyClass2 setOnly = JsonConvert.DeserializeObject<SetOnlyPropertyClass2>(json);
+      JArray a = (JArray) setOnly.GetValue();
+      Assert.AreEqual(5, a.Count);
+      Assert.AreEqual(1, (int) a[0]);
+      Assert.AreEqual(5, (int) a[a.Count - 1]);
+    }
+
+    [Test]
+    public void DeserializeOptInClasses()
+    {
+      string json = @"{id: ""12"", name: ""test"", items: [{id: ""112"", name: ""testing""}]}";
+
+      ListTestClass l = JsonConvert.DeserializeObject<ListTestClass>(json);
+    }
+
+    [Test]
+    public void DeserializeNullableListWithNulls()
+    {
+      List<decimal?> l = JsonConvert.DeserializeObject<List<decimal?>>("[ 3.3, null, 1.1 ] ");
+      Assert.AreEqual(3, l.Count);
+
+      Assert.AreEqual(3.3m, l[0]);
+      Assert.AreEqual(null, l[1]);
+      Assert.AreEqual(1.1m, l[2]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Cannot deserialize JSON array (i.e. [1,2,3]) into type 'Newtonsoft.Json.Tests.TestObjects.Person'.
+The deserialized type must be an array or implement a collection interface like IEnumerable, ICollection or IList.
+To force JSON arrays to deserialize add the JsonArrayAttribute to the type. Line 1, position 1."
+#endif
+      )]
+    public void CannotDeserializeArrayIntoObject()
+    {
+      string json = @"[]";
+
+      JsonConvert.DeserializeObject<Person>(json);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Cannot deserialize JSON object (i.e. {""name"":""value""}) into type 'System.Collections.Generic.List`1[Newtonsoft.Json.Tests.TestObjects.Person]'.
+The deserialized type should be a normal .NET type (i.e. not a primitive type like integer, not a collection type like an array or List<T>) or a dictionary type (i.e. Dictionary<TKey, TValue>).
+To force JSON objects to deserialize add the JsonObjectAttribute to the type. Line 1, position 2."
+#endif
+      )]
+    public void CannotDeserializeObjectIntoArray()
+    {
+      string json = @"{}";
+
+      JsonConvert.DeserializeObject<List<Person>>(json);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Cannot populate JSON array onto type 'Newtonsoft.Json.Tests.TestObjects.Person'. Line 1, position 1."
+#endif
+      )]
+    public void CannotPopulateArrayIntoObject()
+    {
+      string json = @"[]";
+
+      JsonConvert.PopulateObject(json, new Person());
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Cannot populate JSON object onto type 'System.Collections.Generic.List`1[Newtonsoft.Json.Tests.TestObjects.Person]'. Line 1, position 2."
+#endif
+      )]
+    public void CannotPopulateObjectIntoArray()
+    {
+      string json = @"{}";
+
+      JsonConvert.PopulateObject(json, new List<Person>());
+    }
+
+    [Test]
+    public void DeserializeEmptyString()
+    {
+      string json = @"{""Name"":""""}";
+
+      Person p = JsonConvert.DeserializeObject<Person>(json);
+      Assert.AreEqual("", p.Name);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Error getting value from 'ReadTimeout' on 'System.IO.MemoryStream'."
+#endif
+      )]
+    public void SerializePropertyGetError()
+    {
+      JsonConvert.SerializeObject(new MemoryStream());
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Error setting value to 'ReadTimeout' on 'System.IO.MemoryStream'."
+#endif
+      )]
+    public void DeserializePropertySetError()
+    {
+      JsonConvert.DeserializeObject<MemoryStream>("{ReadTimeout:0}");
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonReaderException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Could not convert string to integer: . Line 1, position 15."
+#endif
+      )]
+    public void DeserializeEnsureTypeEmptyStringToIntError()
+    {
+      JsonConvert.DeserializeObject<MemoryStream>("{ReadTimeout:''}");
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Error converting value {null} to type 'System.Int32'. Line 1, position 17."
+#endif
+      )]
+    public void DeserializeEnsureTypeNullToIntError()
+    {
+      JsonConvert.DeserializeObject<MemoryStream>("{ReadTimeout:null}");
+    }
+
+    [Test]
+    public void SerializeGenericListOfStrings()
+    {
+      List<String> strings = new List<String>();
+
+      strings.Add("str_1");
+      strings.Add("str_2");
+      strings.Add("str_3");
+
+      string json = JsonConvert.SerializeObject(strings);
+      Assert.AreEqual(@"[""str_1"",""str_2"",""str_3""]", json);
+    }
+
+    [Test]
+    public void ConstructorReadonlyFieldsTest()
+    {
+      ConstructorReadonlyFields c1 = new ConstructorReadonlyFields("String!", int.MaxValue);
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""A"": ""String!"",
+  ""B"": 2147483647
+}", json);
+
+      ConstructorReadonlyFields c2 = JsonConvert.DeserializeObject<ConstructorReadonlyFields>(json);
+      Assert.AreEqual("String!", c2.A);
+      Assert.AreEqual(int.MaxValue, c2.B);
+    }
+
+    [Test]
+    public void SerializeStruct()
+    {
+      StructTest structTest = new StructTest
+        {
+          StringProperty = "StringProperty!",
+          StringField = "StringField",
+          IntProperty = 5,
+          IntField = 10
+        };
+
+      string json = JsonConvert.SerializeObject(structTest, Formatting.Indented);
+      Console.WriteLine(json);
+      Assert.AreEqual(@"{
+  ""StringField"": ""StringField"",
+  ""IntField"": 10,
+  ""StringProperty"": ""StringProperty!"",
+  ""IntProperty"": 5
+}", json);
+
+      StructTest deserialized = JsonConvert.DeserializeObject<StructTest>(json);
+      Assert.AreEqual(structTest.StringProperty, deserialized.StringProperty);
+      Assert.AreEqual(structTest.StringField, deserialized.StringField);
+      Assert.AreEqual(structTest.IntProperty, deserialized.IntProperty);
+      Assert.AreEqual(structTest.IntField, deserialized.IntField);
+    }
+
+    [Test]
+    public void SerializeListWithJsonConverter()
+    {
+      Foo f = new Foo();
+      f.Bars.Add(new Bar {Id = 0});
+      f.Bars.Add(new Bar {Id = 1});
+      f.Bars.Add(new Bar {Id = 2});
+
+      string json = JsonConvert.SerializeObject(f, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Bars"": [
+    0,
+    1,
+    2
+  ]
+}", json);
+
+      Foo newFoo = JsonConvert.DeserializeObject<Foo>(json);
+      Assert.AreEqual(3, newFoo.Bars.Count);
+      Assert.AreEqual(0, newFoo.Bars[0].Id);
+      Assert.AreEqual(1, newFoo.Bars[1].Id);
+      Assert.AreEqual(2, newFoo.Bars[2].Id);
+    }
+
+    [Test]
+    public void SerializeGuidKeyedDictionary()
+    {
+      Dictionary<Guid, int> dictionary = new Dictionary<Guid, int>();
+      dictionary.Add(new Guid("F60EAEE0-AE47-488E-B330-59527B742D77"), 1);
+      dictionary.Add(new Guid("C2594C02-EBA1-426A-AA87-8DD8871350B0"), 2);
+
+      string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""f60eaee0-ae47-488e-b330-59527b742d77"": 1,
+  ""c2594c02-eba1-426a-aa87-8dd8871350b0"": 2
+}", json);
+    }
+
+    [Test]
+    public void SerializePersonKeyedDictionary()
+    {
+      Dictionary<Person, int> dictionary = new Dictionary<Person, int>();
+      dictionary.Add(new Person {Name = "p1"}, 1);
+      dictionary.Add(new Person {Name = "p2"}, 2);
+
+      string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Newtonsoft.Json.Tests.TestObjects.Person"": 1,
+  ""Newtonsoft.Json.Tests.TestObjects.Person"": 2
+}", json);
+    }
+
+    [Test]
+    public void DeserializePersonKeyedDictionary()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("Could not convert string 'Newtonsoft.Json.Tests.TestObjects.Person' to dictionary key type 'Newtonsoft.Json.Tests.TestObjects.Person'. Create a TypeConverter to convert from the string to the key type object. Line 2, position 46.",
+      () =>
+      {
+        string json =
+          @"{
+  ""Newtonsoft.Json.Tests.TestObjects.Person"": 1,
+  ""Newtonsoft.Json.Tests.TestObjects.Person"": 2
+}";
+
+        JsonConvert.DeserializeObject<Dictionary<Person, int>>(json);
+      });
+    }
+
+    [Test]
+    public void SerializeFragment()
+    {
+      string googleSearchText = @"{
+        ""responseData"": {
+          ""results"": [
+            {
+              ""GsearchResultClass"": ""GwebSearch"",
+              ""unescapedUrl"": ""http://en.wikipedia.org/wiki/Paris_Hilton"",
+              ""url"": ""http://en.wikipedia.org/wiki/Paris_Hilton"",
+              ""visibleUrl"": ""en.wikipedia.org"",
+              ""cacheUrl"": ""http://www.google.com/search?q=cache:TwrPfhd22hYJ:en.wikipedia.org"",
+              ""title"": ""<b>Paris Hilton</b> - Wikipedia, the free encyclopedia"",
+              ""titleNoFormatting"": ""Paris Hilton - Wikipedia, the free encyclopedia"",
+              ""content"": ""[1] In 2006, she released her debut album...""
+            },
+            {
+              ""GsearchResultClass"": ""GwebSearch"",
+              ""unescapedUrl"": ""http://www.imdb.com/name/nm0385296/"",
+              ""url"": ""http://www.imdb.com/name/nm0385296/"",
+              ""visibleUrl"": ""www.imdb.com"",
+              ""cacheUrl"": ""http://www.google.com/search?q=cache:1i34KkqnsooJ:www.imdb.com"",
+              ""title"": ""<b>Paris Hilton</b>"",
+              ""titleNoFormatting"": ""Paris Hilton"",
+              ""content"": ""Self: Zoolander. Socialite <b>Paris Hilton</b>...""
+            }
+          ],
+          ""cursor"": {
+            ""pages"": [
+              {
+                ""start"": ""0"",
+                ""label"": 1
+              },
+              {
+                ""start"": ""4"",
+                ""label"": 2
+              },
+              {
+                ""start"": ""8"",
+                ""label"": 3
+              },
+              {
+                ""start"": ""12"",
+                ""label"": 4
+              }
+            ],
+            ""estimatedResultCount"": ""59600000"",
+            ""currentPageIndex"": 0,
+            ""moreResultsUrl"": ""http://www.google.com/search?oe=utf8&ie=utf8...""
+          }
+        },
+        ""responseDetails"": null,
+        ""responseStatus"": 200
+      }";
+
+      JObject googleSearch = JObject.Parse(googleSearchText);
+
+      // get JSON result objects into a list
+      IList<JToken> results = googleSearch["responseData"]["results"].Children().ToList();
+
+      // serialize JSON results into .NET objects
+      IList<SearchResult> searchResults = new List<SearchResult>();
+      foreach (JToken result in results)
+      {
+        SearchResult searchResult = JsonConvert.DeserializeObject<SearchResult>(result.ToString());
+        searchResults.Add(searchResult);
+      }
+
+      // Title = <b>Paris Hilton</b> - Wikipedia, the free encyclopedia
+      // Content = [1] In 2006, she released her debut album...
+      // Url = http://en.wikipedia.org/wiki/Paris_Hilton
+
+      // Title = <b>Paris Hilton</b>
+      // Content = Self: Zoolander. Socialite <b>Paris Hilton</b>...
+      // Url = http://www.imdb.com/name/nm0385296/
+
+      Assert.AreEqual(2, searchResults.Count);
+      Assert.AreEqual("<b>Paris Hilton</b> - Wikipedia, the free encyclopedia", searchResults[0].Title);
+      Assert.AreEqual("<b>Paris Hilton</b>", searchResults[1].Title);
+    }
+
+    [Test]
+    public void DeserializeBaseReferenceWithDerivedValue()
+    {
+      PersonPropertyClass personPropertyClass = new PersonPropertyClass();
+      WagePerson wagePerson = (WagePerson) personPropertyClass.Person;
+
+      wagePerson.BirthDate = new DateTime(2000, 11, 29, 23, 59, 59, DateTimeKind.Utc);
+      wagePerson.Department = "McDees";
+      wagePerson.HourlyWage = 12.50m;
+      wagePerson.LastModified = new DateTime(2000, 11, 29, 23, 59, 59, DateTimeKind.Utc);
+      wagePerson.Name = "Jim Bob";
+
+      string json = JsonConvert.SerializeObject(personPropertyClass, Formatting.Indented);
+      Assert.AreEqual(
+        @"{
+  ""Person"": {
+    ""HourlyWage"": 12.50,
+    ""Name"": ""Jim Bob"",
+    ""BirthDate"": ""2000-11-29T23:59:59Z"",
+    ""LastModified"": ""2000-11-29T23:59:59Z""
+  }
+}",
+        json);
+
+      PersonPropertyClass newPersonPropertyClass = JsonConvert.DeserializeObject<PersonPropertyClass>(json);
+      Assert.AreEqual(wagePerson.HourlyWage, ((WagePerson) newPersonPropertyClass.Person).HourlyWage);
+    }
+
+    public class ExistingValueClass
+    {
+      public Dictionary<string, string> Dictionary { get; set; }
+      public List<string> List { get; set; }
+
+      public ExistingValueClass()
+      {
+        Dictionary = new Dictionary<string, string>
+          {
+            {"existing", "yup"}
+          };
+        List = new List<string>
+          {
+            "existing"
+          };
+      }
+    }
+
+    [Test]
+    public void DeserializePopulateDictionaryAndList()
+    {
+      ExistingValueClass d = JsonConvert.DeserializeObject<ExistingValueClass>(@"{'Dictionary':{appended:'appended',existing:'new'}}");
+
+      Assert.IsNotNull(d);
+      Assert.IsNotNull(d.Dictionary);
+      Assert.AreEqual(typeof (Dictionary<string, string>), d.Dictionary.GetType());
+      Assert.AreEqual(typeof (List<string>), d.List.GetType());
+      Assert.AreEqual(2, d.Dictionary.Count);
+      Assert.AreEqual("new", d.Dictionary["existing"]);
+      Assert.AreEqual("appended", d.Dictionary["appended"]);
+      Assert.AreEqual(1, d.List.Count);
+      Assert.AreEqual("existing", d.List[0]);
+    }
+
+    public interface IKeyValueId
+    {
+      int Id { get; set; }
+      string Key { get; set; }
+      string Value { get; set; }
+    }
+
+
+    public class KeyValueId : IKeyValueId
+    {
+      public int Id { get; set; }
+      public string Key { get; set; }
+      public string Value { get; set; }
+    }
+
+    public class ThisGenericTest<T> where T : IKeyValueId
+    {
+      private Dictionary<string, T> _dict1 = new Dictionary<string, T>();
+
+      public string MyProperty { get; set; }
+
+      public void Add(T item)
+      {
+        this._dict1.Add(item.Key, item);
+      }
+
+      public T this[string key]
+      {
+        get { return this._dict1[key]; }
+        set { this._dict1[key] = value; }
+      }
+
+      public T this[int id]
+      {
+        get { return this._dict1.Values.FirstOrDefault(x => x.Id == id); }
+        set
+        {
+          var item = this[id];
+
+          if (item == null)
+            this.Add(value);
+          else
+            this._dict1[item.Key] = value;
+        }
+      }
+
+      public string ToJson()
+      {
+        return JsonConvert.SerializeObject(this, Formatting.Indented);
+      }
+
+      public T[] TheItems
+      {
+        get { return this._dict1.Values.ToArray<T>(); }
+        set
+        {
+          foreach (var item in value)
+            this.Add(item);
+        }
+      }
+    }
+
+    [Test]
+    public void IgnoreIndexedProperties()
+    {
+      ThisGenericTest<KeyValueId> g = new ThisGenericTest<KeyValueId>();
+
+      g.Add(new KeyValueId {Id = 1, Key = "key1", Value = "value1"});
+      g.Add(new KeyValueId {Id = 2, Key = "key2", Value = "value2"});
+
+      g.MyProperty = "some value";
+
+      string json = g.ToJson();
+
+      Assert.AreEqual(@"{
+  ""MyProperty"": ""some value"",
+  ""TheItems"": [
+    {
+      ""Id"": 1,
+      ""Key"": ""key1"",
+      ""Value"": ""value1""
+    },
+    {
+      ""Id"": 2,
+      ""Key"": ""key2"",
+      ""Value"": ""value2""
+    }
+  ]
+}", json);
+
+      ThisGenericTest<KeyValueId> gen = JsonConvert.DeserializeObject<ThisGenericTest<KeyValueId>>(json);
+      Assert.AreEqual("some value", gen.MyProperty);
+    }
+
+    public class JRawValueTestObject
+    {
+      public JRaw Value { get; set; }
+    }
+
+    [Test]
+    public void JRawValue()
+    {
+      JRawValueTestObject deserialized = JsonConvert.DeserializeObject<JRawValueTestObject>("{value:3}");
+      Assert.AreEqual("3", deserialized.Value.ToString());
+
+      deserialized = JsonConvert.DeserializeObject<JRawValueTestObject>("{value:'3'}");
+      Assert.AreEqual(@"""3""", deserialized.Value.ToString());
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Unable to find a default constructor to use for type Newtonsoft.Json.Tests.Serialization.JsonSerializerTest+DictionaryWithNoDefaultConstructor. Line 1, position 6."
+#endif
+      )]
+    public void DeserializeDictionaryWithNoDefaultConstructor()
+    {
+      string json = "{key1:'value',key2:'value',key3:'value'}";
+      JsonConvert.DeserializeObject<DictionaryWithNoDefaultConstructor>(json);
+    }
+
+    public class DictionaryWithNoDefaultConstructor : Dictionary<string, string>
+    {
+      public DictionaryWithNoDefaultConstructor(IEnumerable<KeyValuePair<string, string>> initial)
+      {
+        foreach (KeyValuePair<string, string> pair in initial)
+        {
+          Add(pair.Key, pair.Value);
+        }
+      }
+    }
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public class A
+    {
+      [JsonProperty("A1")] private string _A1;
+
+      public string A1
+      {
+        get { return _A1; }
+        set { _A1 = value; }
+      }
+
+      [JsonProperty("A2")]
+      private string A2 { get; set; }
+    }
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public class B : A
+    {
+      public string B1 { get; set; }
+
+      [JsonProperty("B2")] private string _B2;
+
+      public string B2
+      {
+        get { return _B2; }
+        set { _B2 = value; }
+      }
+
+      [JsonProperty("B3")]
+      private string B3 { get; set; }
+    }
+
+    [Test]
+    public void SerializeNonPublicBaseJsonProperties()
+    {
+      B value = new B();
+      string json = JsonConvert.SerializeObject(value, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""B2"": null,
+  ""A1"": null,
+  ""B3"": null,
+  ""A2"": null
+}", json);
+    }
+
+    public class TestClass
+    {
+      public string Key { get; set; }
+      public object Value { get; set; }
+    }
+
+    [Test]
+    public void DeserializeToObjectProperty()
+    {
+      var json = "{ Key: 'abc', Value: 123 }";
+      var item = JsonConvert.DeserializeObject<TestClass>(json);
+
+      Assert.AreEqual(123L, item.Value);
+    }
+
+    public abstract class Animal
+    {
+      public abstract string Name { get; }
+    }
+
+    public class Human : Animal
+    {
+      public override string Name
+      {
+        get { return typeof (Human).Name; }
+      }
+
+      public string Ethnicity { get; set; }
+    }
+
+#if !NET20 && !PocketPC && !WINDOWS_PHONE
+    public class DataContractJsonSerializerTestClass
+    {
+      public TimeSpan TimeSpanProperty { get; set; }
+      public Guid GuidProperty { get; set; }
+      public Animal AnimalProperty { get; set; }
+      public Exception ExceptionProperty { get; set; }
+    }
+
+    [Test]
+    public void DataContractJsonSerializerTest()
+    {
+      Exception ex = new Exception("Blah blah blah");
+
+      DataContractJsonSerializerTestClass c = new DataContractJsonSerializerTestClass();
+      c.TimeSpanProperty = new TimeSpan(200, 20, 59, 30, 900);
+      c.GuidProperty = new Guid("66143115-BE2A-4a59-AF0A-348E1EA15B1E");
+      c.AnimalProperty = new Human() {Ethnicity = "European"};
+      c.ExceptionProperty = ex;
+
+      MemoryStream ms = new MemoryStream();
+      DataContractJsonSerializer serializer = new DataContractJsonSerializer(
+        typeof (DataContractJsonSerializerTestClass),
+        new Type[] {typeof (Human)});
+      serializer.WriteObject(ms, c);
+
+      byte[] jsonBytes = ms.ToArray();
+      string json = Encoding.UTF8.GetString(jsonBytes, 0, jsonBytes.Length);
+
+      //Console.WriteLine(JObject.Parse(json).ToString());
+      //Console.WriteLine();
+
+      //Console.WriteLine(JsonConvert.SerializeObject(c, Formatting.Indented, new JsonSerializerSettings
+      //  {
+      //    //               TypeNameHandling = TypeNameHandling.Objects
+      //  }));
+    }
+#endif
+
+    public class ModelStateDictionary<T> : IDictionary<string, T>
+    {
+
+      private readonly Dictionary<string, T> _innerDictionary = new Dictionary<string, T>(StringComparer.OrdinalIgnoreCase);
+
+      public ModelStateDictionary()
+      {
+      }
+
+      public ModelStateDictionary(ModelStateDictionary<T> dictionary)
+      {
+        if (dictionary == null)
+        {
+          throw new ArgumentNullException("dictionary");
+        }
+
+        foreach (var entry in dictionary)
+        {
+          _innerDictionary.Add(entry.Key, entry.Value);
+        }
+      }
+
+      public int Count
+      {
+        get { return _innerDictionary.Count; }
+      }
+
+      public bool IsReadOnly
+      {
+        get { return ((IDictionary<string, T>) _innerDictionary).IsReadOnly; }
+      }
+
+      public ICollection<string> Keys
+      {
+        get { return _innerDictionary.Keys; }
+      }
+
+      public T this[string key]
+      {
+        get
+        {
+          T value;
+          _innerDictionary.TryGetValue(key, out value);
+          return value;
+        }
+        set { _innerDictionary[key] = value; }
+      }
+
+      public ICollection<T> Values
+      {
+        get { return _innerDictionary.Values; }
+      }
+
+      public void Add(KeyValuePair<string, T> item)
+      {
+        ((IDictionary<string, T>) _innerDictionary).Add(item);
+      }
+
+      public void Add(string key, T value)
+      {
+        _innerDictionary.Add(key, value);
+      }
+
+      public void Clear()
+      {
+        _innerDictionary.Clear();
+      }
+
+      public bool Contains(KeyValuePair<string, T> item)
+      {
+        return ((IDictionary<string, T>) _innerDictionary).Contains(item);
+      }
+
+      public bool ContainsKey(string key)
+      {
+        return _innerDictionary.ContainsKey(key);
+      }
+
+      public void CopyTo(KeyValuePair<string, T>[] array, int arrayIndex)
+      {
+        ((IDictionary<string, T>) _innerDictionary).CopyTo(array, arrayIndex);
+      }
+
+      public IEnumerator<KeyValuePair<string, T>> GetEnumerator()
+      {
+        return _innerDictionary.GetEnumerator();
+      }
+
+      public void Merge(ModelStateDictionary<T> dictionary)
+      {
+        if (dictionary == null)
+        {
+          return;
+        }
+
+        foreach (var entry in dictionary)
+        {
+          this[entry.Key] = entry.Value;
+        }
+      }
+
+      public bool Remove(KeyValuePair<string, T> item)
+      {
+        return ((IDictionary<string, T>) _innerDictionary).Remove(item);
+      }
+
+      public bool Remove(string key)
+      {
+        return _innerDictionary.Remove(key);
+      }
+
+      public bool TryGetValue(string key, out T value)
+      {
+        return _innerDictionary.TryGetValue(key, out value);
+      }
+
+      IEnumerator IEnumerable.GetEnumerator()
+      {
+        return ((IEnumerable) _innerDictionary).GetEnumerator();
+      }
+    }
+
+    [Test]
+    public void SerializeNonIDictionary()
+    {
+      ModelStateDictionary<string> modelStateDictionary = new ModelStateDictionary<string>();
+      modelStateDictionary.Add("key", "value");
+
+      string json = JsonConvert.SerializeObject(modelStateDictionary);
+
+      Assert.AreEqual(@"{""key"":""value""}", json);
+
+      ModelStateDictionary<string> newModelStateDictionary = JsonConvert.DeserializeObject<ModelStateDictionary<string>>(json);
+      Assert.AreEqual(1, newModelStateDictionary.Count);
+      Assert.AreEqual("value", newModelStateDictionary["key"]);
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    public class ISerializableTestObject : ISerializable
+    {
+      internal string _stringValue;
+      internal int _intValue;
+      internal DateTimeOffset _dateTimeOffsetValue;
+      internal Person _personValue;
+      internal Person _nullPersonValue;
+      internal int? _nullableInt;
+      internal bool _booleanValue;
+      internal byte _byteValue;
+      internal char _charValue;
+      internal DateTime _dateTimeValue;
+      internal decimal _decimalValue;
+      internal short _shortValue;
+      internal long _longValue;
+      internal sbyte _sbyteValue;
+      internal float _floatValue;
+      internal ushort _ushortValue;
+      internal uint _uintValue;
+      internal ulong _ulongValue;
+
+      public ISerializableTestObject(string stringValue, int intValue, DateTimeOffset dateTimeOffset, Person personValue)
+      {
+        _stringValue = stringValue;
+        _intValue = intValue;
+        _dateTimeOffsetValue = dateTimeOffset;
+        _personValue = personValue;
+        _dateTimeValue = new DateTime(0, DateTimeKind.Utc);
+      }
+
+      protected ISerializableTestObject(SerializationInfo info, StreamingContext context)
+      {
+        _stringValue = info.GetString("stringValue");
+        _intValue = info.GetInt32("intValue");
+        _dateTimeOffsetValue = (DateTimeOffset) info.GetValue("dateTimeOffsetValue", typeof (DateTimeOffset));
+        _personValue = (Person) info.GetValue("personValue", typeof (Person));
+        _nullPersonValue = (Person) info.GetValue("nullPersonValue", typeof (Person));
+        _nullableInt = (int?) info.GetValue("nullableInt", typeof (int?));
+
+        _booleanValue = info.GetBoolean("booleanValue");
+        _byteValue = info.GetByte("byteValue");
+        _charValue = info.GetChar("charValue");
+        _dateTimeValue = info.GetDateTime("dateTimeValue");
+        _decimalValue = info.GetDecimal("decimalValue");
+        _shortValue = info.GetInt16("shortValue");
+        _longValue = info.GetInt64("longValue");
+        _sbyteValue = info.GetSByte("sbyteValue");
+        _floatValue = info.GetSingle("floatValue");
+        _ushortValue = info.GetUInt16("ushortValue");
+        _uintValue = info.GetUInt32("uintValue");
+        _ulongValue = info.GetUInt64("ulongValue");
+      }
+
+      public void GetObjectData(SerializationInfo info, StreamingContext context)
+      {
+        info.AddValue("stringValue", _stringValue);
+        info.AddValue("intValue", _intValue);
+        info.AddValue("dateTimeOffsetValue", _dateTimeOffsetValue);
+        info.AddValue("personValue", _personValue);
+        info.AddValue("nullPersonValue", _nullPersonValue);
+        info.AddValue("nullableInt", null);
+
+        info.AddValue("booleanValue", _booleanValue);
+        info.AddValue("byteValue", _byteValue);
+        info.AddValue("charValue", _charValue);
+        info.AddValue("dateTimeValue", _dateTimeValue);
+        info.AddValue("decimalValue", _decimalValue);
+        info.AddValue("shortValue", _shortValue);
+        info.AddValue("longValue", _longValue);
+        info.AddValue("sbyteValue", _sbyteValue);
+        info.AddValue("floatValue", _floatValue);
+        info.AddValue("ushortValue", _ushortValue);
+        info.AddValue("uintValue", _uintValue);
+        info.AddValue("ulongValue", _ulongValue);
+      }
+    }
+
+#if DEBUG
+    [Test]
+    public void SerializeISerializableInPartialTrustWithIgnoreInterface()
+    {
+      try
+      {
+        JsonTypeReflector.SetFullyTrusted(false);
+        ISerializableTestObject value = new ISerializableTestObject("string!", 0, default(DateTimeOffset), null);
+
+        string json = JsonConvert.SerializeObject(value, new JsonSerializerSettings
+          {
+            ContractResolver = new DefaultContractResolver(false)
+              {
+                IgnoreSerializableInterface = true
+              }
+          });
+
+        Assert.AreEqual("{}", json);
+
+        value = JsonConvert.DeserializeObject<ISerializableTestObject>("{booleanValue:true}", new JsonSerializerSettings
+          {
+            ContractResolver = new DefaultContractResolver(false)
+              {
+                IgnoreSerializableInterface = true
+              }
+          });
+
+        Assert.IsNotNull(value);
+        Assert.AreEqual(false, value._booleanValue);
+      }
+      finally
+      {
+        JsonTypeReflector.SetFullyTrusted(true);
+      }
+    }
+
+    [Test]
+    public void SerializeISerializableInPartialTrust()
+    {
+      try
+      {
+        ExceptionAssert.Throws<JsonSerializationException>(
+          @"Type 'Newtonsoft.Json.Tests.Serialization.JsonSerializerTest+ISerializableTestObject' implements ISerializable but cannot be deserialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
+To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.",
+          () =>
+            {
+              JsonTypeReflector.SetFullyTrusted(false);
+
+              JsonConvert.DeserializeObject<ISerializableTestObject>("{booleanValue:true}");
+            });
+      }
+      finally
+      {
+        JsonTypeReflector.SetFullyTrusted(true);
+      }
+    }
+
+    [Test]
+    public void DeserializeISerializableInPartialTrust()
+    {
+      try
+      {
+        ExceptionAssert.Throws<JsonSerializationException>(
+          @"Type 'Newtonsoft.Json.Tests.Serialization.JsonSerializerTest+ISerializableTestObject' implements ISerializable but cannot be serialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
+To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.",
+          () =>
+          {
+            JsonTypeReflector.SetFullyTrusted(false);
+            ISerializableTestObject value = new ISerializableTestObject("string!", 0, default(DateTimeOffset), null);
+
+            JsonConvert.SerializeObject(value);
+          });
+      }
+      finally
+      {
+        JsonTypeReflector.SetFullyTrusted(true);
+      }
+    }
+#endif
+
+    [Test]
+    public void SerializeISerializableTestObject_IsoDate()
+    {
+      Person person = new Person();
+      person.BirthDate = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc);
+      person.LastModified = person.BirthDate;
+      person.Department = "Department!";
+      person.Name = "Name!";
+
+      DateTimeOffset dateTimeOffset = new DateTimeOffset(2000, 12, 20, 22, 59, 59, TimeSpan.FromHours(2));
+      string dateTimeOffsetText;
+#if !NET20
+      dateTimeOffsetText = @"2000-12-20T22:59:59+02:00";
+#else
+      dateTimeOffsetText = @"12/20/2000 22:59:59 +02:00";
+#endif
+
+      ISerializableTestObject o = new ISerializableTestObject("String!", int.MinValue, dateTimeOffset, person);
+
+      string json = JsonConvert.SerializeObject(o, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""stringValue"": ""String!"",
+  ""intValue"": -2147483648,
+  ""dateTimeOffsetValue"": """ + dateTimeOffsetText + @""",
+  ""personValue"": {
+    ""Name"": ""Name!"",
+    ""BirthDate"": ""2000-01-01T01:01:01Z"",
+    ""LastModified"": ""2000-01-01T01:01:01Z""
+  },
+  ""nullPersonValue"": null,
+  ""nullableInt"": null,
+  ""booleanValue"": false,
+  ""byteValue"": 0,
+  ""charValue"": ""\u0000"",
+  ""dateTimeValue"": ""0001-01-01T00:00:00Z"",
+  ""decimalValue"": 0.0,
+  ""shortValue"": 0,
+  ""longValue"": 0,
+  ""sbyteValue"": 0,
+  ""floatValue"": 0.0,
+  ""ushortValue"": 0,
+  ""uintValue"": 0,
+  ""ulongValue"": 0
+}", json);
+
+      ISerializableTestObject o2 = JsonConvert.DeserializeObject<ISerializableTestObject>(json);
+      Assert.AreEqual("String!", o2._stringValue);
+      Assert.AreEqual(int.MinValue, o2._intValue);
+      Assert.AreEqual(dateTimeOffset, o2._dateTimeOffsetValue);
+      Assert.AreEqual("Name!", o2._personValue.Name);
+      Assert.AreEqual(null, o2._nullPersonValue);
+      Assert.AreEqual(null, o2._nullableInt);
+    }
+
+    [Test]
+    public void SerializeISerializableTestObject_MsAjax()
+    {
+      Person person = new Person();
+      person.BirthDate = new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc);
+      person.LastModified = person.BirthDate;
+      person.Department = "Department!";
+      person.Name = "Name!";
+
+      DateTimeOffset dateTimeOffset = new DateTimeOffset(2000, 12, 20, 22, 59, 59, TimeSpan.FromHours(2));
+      string dateTimeOffsetText;
+#if !NET20
+      dateTimeOffsetText = @"\/Date(977345999000+0200)\/";
+#else
+      dateTimeOffsetText = @"12/20/2000 22:59:59 +02:00";
+#endif
+
+      ISerializableTestObject o = new ISerializableTestObject("String!", int.MinValue, dateTimeOffset, person);
+
+      string json = JsonConvert.SerializeObject(o, Formatting.Indented, new JsonSerializerSettings
+        {
+          DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
+        });
+      Assert.AreEqual(@"{
+  ""stringValue"": ""String!"",
+  ""intValue"": -2147483648,
+  ""dateTimeOffsetValue"": """ + dateTimeOffsetText + @""",
+  ""personValue"": {
+    ""Name"": ""Name!"",
+    ""BirthDate"": ""\/Date(946688461000)\/"",
+    ""LastModified"": ""\/Date(946688461000)\/""
+  },
+  ""nullPersonValue"": null,
+  ""nullableInt"": null,
+  ""booleanValue"": false,
+  ""byteValue"": 0,
+  ""charValue"": ""\u0000"",
+  ""dateTimeValue"": ""\/Date(-62135596800000)\/"",
+  ""decimalValue"": 0.0,
+  ""shortValue"": 0,
+  ""longValue"": 0,
+  ""sbyteValue"": 0,
+  ""floatValue"": 0.0,
+  ""ushortValue"": 0,
+  ""uintValue"": 0,
+  ""ulongValue"": 0
+}", json);
+
+      ISerializableTestObject o2 = JsonConvert.DeserializeObject<ISerializableTestObject>(json);
+      Assert.AreEqual("String!", o2._stringValue);
+      Assert.AreEqual(int.MinValue, o2._intValue);
+      Assert.AreEqual(dateTimeOffset, o2._dateTimeOffsetValue);
+      Assert.AreEqual("Name!", o2._personValue.Name);
+      Assert.AreEqual(null, o2._nullPersonValue);
+      Assert.AreEqual(null, o2._nullableInt);
+    }
+#endif
+
+    public class KVPair<TKey, TValue>
+    {
+      public TKey Key { get; set; }
+      public TValue Value { get; set; }
+
+      public KVPair(TKey k, TValue v)
+      {
+        Key = k;
+        Value = v;
+      }
+    }
+
+    [Test]
+    public void DeserializeUsingNonDefaultConstructorWithLeftOverValues()
+    {
+      List<KVPair<string, string>> kvPairs =
+        JsonConvert.DeserializeObject<List<KVPair<string, string>>>(
+          "[{\"Key\":\"Two\",\"Value\":\"2\"},{\"Key\":\"One\",\"Value\":\"1\"}]");
+
+      Assert.AreEqual(2, kvPairs.Count);
+      Assert.AreEqual("Two", kvPairs[0].Key);
+      Assert.AreEqual("2", kvPairs[0].Value);
+      Assert.AreEqual("One", kvPairs[1].Key);
+      Assert.AreEqual("1", kvPairs[1].Value);
+    }
+
+    [Test]
+    public void SerializeClassWithInheritedProtectedMember()
+    {
+      AA myA = new AA(2);
+      string json = JsonConvert.SerializeObject(myA, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""AA_field1"": 2,
+  ""AA_property1"": 2,
+  ""AA_property2"": 2,
+  ""AA_property3"": 2,
+  ""AA_property4"": 2
+}", json);
+
+      BB myB = new BB(3, 4);
+      json = JsonConvert.SerializeObject(myB, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""BB_field1"": 4,
+  ""BB_field2"": 4,
+  ""AA_field1"": 3,
+  ""BB_property1"": 4,
+  ""BB_property2"": 4,
+  ""BB_property3"": 4,
+  ""BB_property4"": 4,
+  ""BB_property5"": 4,
+  ""BB_property7"": 4,
+  ""AA_property1"": 3,
+  ""AA_property2"": 3,
+  ""AA_property3"": 3,
+  ""AA_property4"": 3
+}", json);
+    }
+
+    [Test]
+    public void DeserializeClassWithInheritedProtectedMember()
+    {
+      AA myA = JsonConvert.DeserializeObject<AA>(
+        @"{
+  ""AA_field1"": 2,
+  ""AA_field2"": 2,
+  ""AA_property1"": 2,
+  ""AA_property2"": 2,
+  ""AA_property3"": 2,
+  ""AA_property4"": 2,
+  ""AA_property5"": 2,
+  ""AA_property6"": 2
+}");
+
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field1", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field2", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property1", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property2", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property3", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property4", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property5", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property6", BindingFlags.Instance | BindingFlags.NonPublic), myA));
+
+      BB myB = JsonConvert.DeserializeObject<BB>(
+        @"{
+  ""BB_field1"": 4,
+  ""BB_field2"": 4,
+  ""AA_field1"": 3,
+  ""AA_field2"": 3,
+  ""AA_property1"": 2,
+  ""AA_property2"": 2,
+  ""AA_property3"": 2,
+  ""AA_property4"": 2,
+  ""AA_property5"": 2,
+  ""AA_property6"": 2,
+  ""BB_property1"": 3,
+  ""BB_property2"": 3,
+  ""BB_property3"": 3,
+  ""BB_property4"": 3,
+  ""BB_property5"": 3,
+  ""BB_property6"": 3,
+  ""BB_property7"": 3,
+  ""BB_property8"": 3
+}");
+
+      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field1", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetField("AA_field2", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property1", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property2", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property3", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(2, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property4", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property5", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(0, ReflectionUtils.GetMemberValue(typeof (AA).GetProperty("AA_property6", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+
+      Assert.AreEqual(4, myB.BB_field1);
+      Assert.AreEqual(4, myB.BB_field2);
+      Assert.AreEqual(3, myB.BB_property1);
+      Assert.AreEqual(3, myB.BB_property2);
+      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property3", BindingFlags.Instance | BindingFlags.Public), myB));
+      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property4", BindingFlags.Instance | BindingFlags.NonPublic), myB));
+      Assert.AreEqual(0, myB.BB_property5);
+      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property6", BindingFlags.Instance | BindingFlags.Public), myB));
+      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property7", BindingFlags.Instance | BindingFlags.Public), myB));
+      Assert.AreEqual(3, ReflectionUtils.GetMemberValue(typeof (BB).GetProperty("BB_property8", BindingFlags.Instance | BindingFlags.Public), myB));
+    }
+
+    public class AA
+    {
+      [JsonProperty] protected int AA_field1;
+      protected int AA_field2;
+
+      [JsonProperty]
+      protected int AA_property1 { get; set; }
+
+      [JsonProperty]
+      protected int AA_property2 { get; private set; }
+
+      [JsonProperty]
+      protected int AA_property3 { private get; set; }
+
+      [JsonProperty]
+      private int AA_property4 { get; set; }
+
+      protected int AA_property5 { get; private set; }
+      protected int AA_property6 { private get; set; }
+
+      public AA()
+      {
+      }
+
+      public AA(int f)
+      {
+        AA_field1 = f;
+        AA_field2 = f;
+        AA_property1 = f;
+        AA_property2 = f;
+        AA_property3 = f;
+        AA_property4 = f;
+        AA_property5 = f;
+        AA_property6 = f;
+      }
+    }
+
+    public class BB : AA
+    {
+      [JsonProperty] public int BB_field1;
+      public int BB_field2;
+
+      [JsonProperty]
+      public int BB_property1 { get; set; }
+
+      [JsonProperty]
+      public int BB_property2 { get; private set; }
+
+      [JsonProperty]
+      public int BB_property3 { private get; set; }
+
+      [JsonProperty]
+      private int BB_property4 { get; set; }
+
+      public int BB_property5 { get; private set; }
+      public int BB_property6 { private get; set; }
+
+      [JsonProperty]
+      public int BB_property7 { protected get; set; }
+
+      public int BB_property8 { protected get; set; }
+
+      public BB()
+      {
+      }
+
+      public BB(int f, int g)
+        : base(f)
+      {
+        BB_field1 = g;
+        BB_field2 = g;
+        BB_property1 = g;
+        BB_property2 = g;
+        BB_property3 = g;
+        BB_property4 = g;
+        BB_property5 = g;
+        BB_property6 = g;
+        BB_property7 = g;
+        BB_property8 = g;
+      }
+    }
+
+#if !NET20 && !SILVERLIGHT
+    public class XNodeTestObject
+    {
+      public XDocument Document { get; set; }
+      public XElement Element { get; set; }
+    }
+#endif
+
+#if !SILVERLIGHT && !NETFX_CORE
+    public class XmlNodeTestObject
+    {
+      public XmlDocument Document { get; set; }
+    }
+#endif
+
+#if !NET20 && !SILVERLIGHT
+    [Test]
+    public void SerializeDeserializeXNodeProperties()
+    {
+      XNodeTestObject testObject = new XNodeTestObject();
+      testObject.Document = XDocument.Parse("<root>hehe, root</root>");
+      testObject.Element = XElement.Parse(@"<fifth xmlns:json=""http://json.org"" json:Awesome=""true"">element</fifth>");
+
+      string json = JsonConvert.SerializeObject(testObject, Formatting.Indented);
+      string expected = @"{
+  ""Document"": {
+    ""root"": ""hehe, root""
+  },
+  ""Element"": {
+    ""fifth"": {
+      ""@xmlns:json"": ""http://json.org"",
+      ""@json:Awesome"": ""true"",
+      ""#text"": ""element""
+    }
+  }
+}";
+      Assert.AreEqual(expected, json);
+
+      XNodeTestObject newTestObject = JsonConvert.DeserializeObject<XNodeTestObject>(json);
+      Assert.AreEqual(testObject.Document.ToString(), newTestObject.Document.ToString());
+      Assert.AreEqual(testObject.Element.ToString(), newTestObject.Element.ToString());
+
+      Assert.IsNull(newTestObject.Element.Parent);
+    }
+#endif
+
+#if !SILVERLIGHT && !NETFX_CORE
+    [Test]
+    public void SerializeDeserializeXmlNodeProperties()
+    {
+      XmlNodeTestObject testObject = new XmlNodeTestObject();
+      XmlDocument document = new XmlDocument();
+      document.LoadXml("<root>hehe, root</root>");
+      testObject.Document = document;
+
+      string json = JsonConvert.SerializeObject(testObject, Formatting.Indented);
+      string expected = @"{
+  ""Document"": {
+    ""root"": ""hehe, root""
+  }
+}";
+      Assert.AreEqual(expected, json);
+
+      XmlNodeTestObject newTestObject = JsonConvert.DeserializeObject<XmlNodeTestObject>(json);
+      Assert.AreEqual(testObject.Document.InnerXml, newTestObject.Document.InnerXml);
+    }
+#endif
+
+    [Test]
+    public void FullClientMapSerialization()
+    {
+      ClientMap source = new ClientMap()
+        {
+          position = new Pos() {X = 100, Y = 200},
+          center = new PosDouble() {X = 251.6, Y = 361.3}
+        };
+
+      string json = JsonConvert.SerializeObject(source, new PosConverter(), new PosDoubleConverter());
+      Assert.AreEqual("{\"position\":new Pos(100,200),\"center\":new PosD(251.6,361.3)}", json);
+    }
+
+    public class ClientMap
+    {
+      public Pos position { get; set; }
+      public PosDouble center { get; set; }
+    }
+
+    public class Pos
+    {
+      public int X { get; set; }
+      public int Y { get; set; }
+    }
+
+    public class PosDouble
+    {
+      public double X { get; set; }
+      public double Y { get; set; }
+    }
+
+    public class PosConverter : JsonConverter
+    {
+      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+      {
+        Pos p = (Pos) value;
+
+        if (p != null)
+          writer.WriteRawValue(String.Format("new Pos({0},{1})", p.X, p.Y));
+        else
+          writer.WriteNull();
+      }
+
+      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+      {
+        throw new NotImplementedException();
+      }
+
+      public override bool CanConvert(Type objectType)
+      {
+        return objectType.IsAssignableFrom(typeof (Pos));
+      }
+    }
+
+    public class PosDoubleConverter : JsonConverter
+    {
+      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+      {
+        PosDouble p = (PosDouble) value;
+
+        if (p != null)
+          writer.WriteRawValue(String.Format(CultureInfo.InvariantCulture, "new PosD({0},{1})", p.X, p.Y));
+        else
+          writer.WriteNull();
+      }
+
+      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+      {
+        throw new NotImplementedException();
+      }
+
+      public override bool CanConvert(Type objectType)
+      {
+        return objectType.IsAssignableFrom(typeof (PosDouble));
+      }
+    }
+
+    [Test]
+    public void TestEscapeDictionaryStrings()
+    {
+      const string s = @"host\user";
+      string serialized = JsonConvert.SerializeObject(s);
+      Assert.AreEqual(@"""host\\user""", serialized);
+
+      Dictionary<int, object> d1 = new Dictionary<int, object>();
+      d1.Add(5, s);
+      Assert.AreEqual(@"{""5"":""host\\user""}", JsonConvert.SerializeObject(d1));
+
+      Dictionary<string, object> d2 = new Dictionary<string, object>();
+      d2.Add(s, 5);
+      Assert.AreEqual(@"{""host\\user"":5}", JsonConvert.SerializeObject(d2));
+    }
+
+    public class GenericListTestClass
+    {
+      public List<string> GenericList { get; set; }
+
+      public GenericListTestClass()
+      {
+        GenericList = new List<string>();
+      }
+    }
+
+    [Test]
+    public void DeserializeExistingGenericList()
+    {
+      GenericListTestClass c = new GenericListTestClass();
+      c.GenericList.Add("1");
+      c.GenericList.Add("2");
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      GenericListTestClass newValue = JsonConvert.DeserializeObject<GenericListTestClass>(json);
+      Assert.AreEqual(2, newValue.GenericList.Count);
+      Assert.AreEqual(typeof (List<string>), newValue.GenericList.GetType());
+    }
+
+    [Test]
+    public void DeserializeSimpleKeyValuePair()
+    {
+      List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>();
+      list.Add(new KeyValuePair<string, string>("key1", "value1"));
+      list.Add(new KeyValuePair<string, string>("key2", "value2"));
+
+      string json = JsonConvert.SerializeObject(list);
+
+      Assert.AreEqual(@"[{""Key"":""key1"",""Value"":""value1""},{""Key"":""key2"",""Value"":""value2""}]", json);
+
+      List<KeyValuePair<string, string>> result = JsonConvert.DeserializeObject<List<KeyValuePair<string, string>>>(json);
+      Assert.AreEqual(2, result.Count);
+      Assert.AreEqual("key1", result[0].Key);
+      Assert.AreEqual("value1", result[0].Value);
+      Assert.AreEqual("key2", result[1].Key);
+      Assert.AreEqual("value2", result[1].Value);
+    }
+
+    [Test]
+    public void DeserializeComplexKeyValuePair()
+    {
+      DateTime dateTime = new DateTime(2000, 12, 1, 23, 1, 1, DateTimeKind.Utc);
+
+      List<KeyValuePair<string, WagePerson>> list = new List<KeyValuePair<string, WagePerson>>();
+      list.Add(new KeyValuePair<string, WagePerson>("key1", new WagePerson
+        {
+          BirthDate = dateTime,
+          Department = "Department1",
+          LastModified = dateTime,
+          HourlyWage = 1
+        }));
+      list.Add(new KeyValuePair<string, WagePerson>("key2", new WagePerson
+        {
+          BirthDate = dateTime,
+          Department = "Department2",
+          LastModified = dateTime,
+          HourlyWage = 2
+        }));
+
+      string json = JsonConvert.SerializeObject(list, Formatting.Indented);
+
+      Assert.AreEqual(@"[
+  {
+    ""Key"": ""key1"",
+    ""Value"": {
+      ""HourlyWage"": 1.0,
+      ""Name"": null,
+      ""BirthDate"": ""2000-12-01T23:01:01Z"",
+      ""LastModified"": ""2000-12-01T23:01:01Z""
+    }
+  },
+  {
+    ""Key"": ""key2"",
+    ""Value"": {
+      ""HourlyWage"": 2.0,
+      ""Name"": null,
+      ""BirthDate"": ""2000-12-01T23:01:01Z"",
+      ""LastModified"": ""2000-12-01T23:01:01Z""
+    }
+  }
+]", json);
+
+      List<KeyValuePair<string, WagePerson>> result = JsonConvert.DeserializeObject<List<KeyValuePair<string, WagePerson>>>(json);
+      Assert.AreEqual(2, result.Count);
+      Assert.AreEqual("key1", result[0].Key);
+      Assert.AreEqual(1, result[0].Value.HourlyWage);
+      Assert.AreEqual("key2", result[1].Key);
+      Assert.AreEqual(2, result[1].Value.HourlyWage);
+    }
+
+    public class StringListAppenderConverter : JsonConverter
+    {
+      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+      {
+        writer.WriteValue(value);
+      }
+
+      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+      {
+        List<string> existingStrings = (List<string>) existingValue;
+        List<string> newStrings = new List<string>(existingStrings);
+
+        reader.Read();
+
+        while (reader.TokenType != JsonToken.EndArray)
+        {
+          string s = (string) reader.Value;
+          newStrings.Add(s);
+
+          reader.Read();
+        }
+
+        return newStrings;
+      }
+
+      public override bool CanConvert(Type objectType)
+      {
+        return (objectType == typeof (List<string>));
+      }
+    }
+
+    [Test]
+    public void StringListAppenderConverterTest()
+    {
+      Movie p = new Movie();
+      p.ReleaseCountries = new List<string> {"Existing"};
+
+      JsonConvert.PopulateObject("{'ReleaseCountries':['Appended']}", p, new JsonSerializerSettings
+        {
+          Converters = new List<JsonConverter> {new StringListAppenderConverter()}
+        });
+
+      Assert.AreEqual(2, p.ReleaseCountries.Count);
+      Assert.AreEqual("Existing", p.ReleaseCountries[0]);
+      Assert.AreEqual("Appended", p.ReleaseCountries[1]);
+    }
+
+    public class StringAppenderConverter : JsonConverter
+    {
+      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+      {
+        writer.WriteValue(value);
+      }
+
+      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+      {
+        string existingString = (string) existingValue;
+        string newString = existingString + (string) reader.Value;
+
+        return newString;
+      }
+
+      public override bool CanConvert(Type objectType)
+      {
+        return (objectType == typeof (string));
+      }
+    }
+
+    [Test]
+    public void StringAppenderConverterTest()
+    {
+      Movie p = new Movie();
+      p.Name = "Existing,";
+
+      JsonConvert.PopulateObject("{'Name':'Appended'}", p, new JsonSerializerSettings
+        {
+          Converters = new List<JsonConverter> {new StringAppenderConverter()}
+        });
+
+      Assert.AreEqual("Existing,Appended", p.Name);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Additional content found in JSON reference object. A JSON reference object should only have a $ref property. Line 6, position 11."
+#endif
+      )]
+    public void SerializeRefAdditionalContent()
+    {
+      //Additional text found in JSON string after finishing deserializing object.
+      //Test 1
+      var reference = new Dictionary<string, object>();
+      reference.Add("$ref", "Persons");
+      reference.Add("$id", 1);
+
+      var child = new Dictionary<string, object>();
+      child.Add("_id", 2);
+      child.Add("Name", "Isabell");
+      child.Add("Father", reference);
+
+      var json = JsonConvert.SerializeObject(child, Formatting.Indented);
+      JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
+    }
+
+    [Test]
+    public void SerializeRefBadType()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("JSON reference $ref property must have a string or null value. Line 5, position 14.",
+        () =>
+        {
+          //Additional text found in JSON string after finishing deserializing object.
+          //Test 1
+          var reference = new Dictionary<string, object>();
+          reference.Add("$ref", 1);
+          reference.Add("$id", 1);
+
+          var child = new Dictionary<string, object>();
+          child.Add("_id", 2);
+          child.Add("Name", "Isabell");
+          child.Add("Father", reference);
+
+          var json = JsonConvert.SerializeObject(child, Formatting.Indented);
+          JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
+        });
+    }
+
+    [Test]
+    public void SerializeRefNull()
+    {
+      var reference = new Dictionary<string, object>();
+      reference.Add("$ref", null);
+      reference.Add("$id", null);
+      reference.Add("blah", "blah!");
+
+      var child = new Dictionary<string, object>();
+      child.Add("_id", 2);
+      child.Add("Name", "Isabell");
+      child.Add("Father", reference);
+
+      var json = JsonConvert.SerializeObject(child);
+      Dictionary<string, object> result = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
+
+      Assert.AreEqual(3, result.Count);
+      Assert.AreEqual(1, ((JObject) result["Father"]).Count);
+      Assert.AreEqual("blah!", (string) ((JObject) result["Father"])["blah"]);
+    }
+
+    public class ConstructorCompexIgnoredProperty
+    {
+      [JsonIgnore]
+      public Product Ignored { get; set; }
+
+      public string First { get; set; }
+      public int Second { get; set; }
+
+      public ConstructorCompexIgnoredProperty(string first, int second)
+      {
+        First = first;
+        Second = second;
+      }
+    }
+
+    [Test]
+    public void DeserializeIgnoredPropertyInConstructor()
+    {
+      string json = @"{""First"":""First"",""Second"":2,""Ignored"":{""Name"":""James""},""AdditionalContent"":{""LOL"":true}}";
+
+      ConstructorCompexIgnoredProperty cc = JsonConvert.DeserializeObject<ConstructorCompexIgnoredProperty>(json);
+      Assert.AreEqual("First", cc.First);
+      Assert.AreEqual(2, cc.Second);
+      Assert.AreEqual(null, cc.Ignored);
+    }
+
+    public class ShouldSerializeTestClass
+    {
+      internal bool _shouldSerializeName;
+
+      public string Name { get; set; }
+      public int Age { get; set; }
+
+      public void ShouldSerializeAge()
+      {
+        // dummy. should never be used because it doesn't return bool
+      }
+
+      public bool ShouldSerializeName()
+      {
+        return _shouldSerializeName;
+      }
+    }
+
+    [Test]
+    public void ShouldSerializeTest()
+    {
+      ShouldSerializeTestClass c = new ShouldSerializeTestClass();
+      c.Name = "James";
+      c.Age = 27;
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Age"": 27
+}", json);
+
+      c._shouldSerializeName = true;
+      json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""James"",
+  ""Age"": 27
+}", json);
+
+      ShouldSerializeTestClass deserialized = JsonConvert.DeserializeObject<ShouldSerializeTestClass>(json);
+      Assert.AreEqual("James", deserialized.Name);
+      Assert.AreEqual(27, deserialized.Age);
+    }
+
+    public class Employee
+    {
+      public string Name { get; set; }
+      public Employee Manager { get; set; }
+
+      public bool ShouldSerializeManager()
+      {
+        return (Manager != this);
+      }
+    }
+
+    [Test]
+    public void ShouldSerializeExample()
+    {
+      Employee joe = new Employee();
+      joe.Name = "Joe Employee";
+      Employee mike = new Employee();
+      mike.Name = "Mike Manager";
+
+      joe.Manager = mike;
+      mike.Manager = mike;
+
+      string json = JsonConvert.SerializeObject(new[] {joe, mike}, Formatting.Indented);
+      // [
+      //   {
+      //     "Name": "Joe Employee",
+      //     "Manager": {
+      //       "Name": "Mike Manager"
+      //     }
+      //   },
+      //   {
+      //     "Name": "Mike Manager"
+      //   }
+      // ]
+
+      Console.WriteLine(json);
+    }
+
+    public class SpecifiedTestClass
+    {
+      private bool _nameSpecified;
+
+      public string Name { get; set; }
+      public int Age { get; set; }
+      public int Weight { get; set; }
+      public int Height { get; set; }
+      public int FavoriteNumber { get; set; }
+
+      // dummy. should never be used because it isn't of type bool
+      [JsonIgnore]
+      public long AgeSpecified { get; set; }
+
+      [JsonIgnore]
+      public bool NameSpecified
+      {
+        get { return _nameSpecified; }
+        set { _nameSpecified = value; }
+      }
+
+      [JsonIgnore] public bool WeightSpecified;
+
+      [JsonIgnore] [System.Xml.Serialization.XmlIgnoreAttribute] public bool HeightSpecified;
+
+      [JsonIgnore]
+
+      public bool FavoriteNumberSpecified
+      {
+        // get only example
+        get { return FavoriteNumber != 0; }
+      }
+    }
+
+    [Test]
+    public void SpecifiedTest()
+    {
+      SpecifiedTestClass c = new SpecifiedTestClass();
+      c.Name = "James";
+      c.Age = 27;
+      c.NameSpecified = false;
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Age"": 27
+}", json);
+
+      SpecifiedTestClass deserialized = JsonConvert.DeserializeObject<SpecifiedTestClass>(json);
+      Assert.IsNull(deserialized.Name);
+      Assert.IsFalse(deserialized.NameSpecified);
+      Assert.IsFalse(deserialized.WeightSpecified);
+      Assert.IsFalse(deserialized.HeightSpecified);
+      Assert.IsFalse(deserialized.FavoriteNumberSpecified);
+      Assert.AreEqual(27, deserialized.Age);
+
+      c.NameSpecified = true;
+      c.WeightSpecified = true;
+      c.HeightSpecified = true;
+      c.FavoriteNumber = 23;
+      json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""James"",
+  ""Age"": 27,
+  ""Weight"": 0,
+  ""Height"": 0,
+  ""FavoriteNumber"": 23
+}", json);
+
+      deserialized = JsonConvert.DeserializeObject<SpecifiedTestClass>(json);
+      Assert.AreEqual("James", deserialized.Name);
+      Assert.IsTrue(deserialized.NameSpecified);
+      Assert.IsTrue(deserialized.WeightSpecified);
+      Assert.IsTrue(deserialized.HeightSpecified);
+      Assert.IsTrue(deserialized.FavoriteNumberSpecified);
+      Assert.AreEqual(27, deserialized.Age);
+      Assert.AreEqual(23, deserialized.FavoriteNumber);
+    }
+
+    //    [Test]
+    //    public void XmlSerializerSpecifiedTrueTest()
+    //    {
+    //      XmlSerializer s = new XmlSerializer(typeof(OptionalOrder));
+
+    //      StringWriter sw = new StringWriter();
+    //      s.Serialize(sw, new OptionalOrder() { FirstOrder = "First", FirstOrderSpecified = true });
+
+    //      Console.WriteLine(sw.ToString());
+
+    //      string xml = @"<?xml version=""1.0"" encoding=""utf-16""?>
+    //<OptionalOrder xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
+    //  <FirstOrder>First</FirstOrder>
+    //</OptionalOrder>";
+
+    //      OptionalOrder o = (OptionalOrder)s.Deserialize(new StringReader(xml));
+    //      Console.WriteLine(o.FirstOrder);
+    //      Console.WriteLine(o.FirstOrderSpecified);
+    //    }
+
+    //    [Test]
+    //    public void XmlSerializerSpecifiedFalseTest()
+    //    {
+    //      XmlSerializer s = new XmlSerializer(typeof(OptionalOrder));
+
+    //      StringWriter sw = new StringWriter();
+    //      s.Serialize(sw, new OptionalOrder() { FirstOrder = "First", FirstOrderSpecified = false });
+
+    //      Console.WriteLine(sw.ToString());
+
+    //      //      string xml = @"<?xml version=""1.0"" encoding=""utf-16""?>
+    //      //<OptionalOrder xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
+    //      //  <FirstOrder>First</FirstOrder>
+    //      //</OptionalOrder>";
+
+    //      //      OptionalOrder o = (OptionalOrder)s.Deserialize(new StringReader(xml));
+    //      //      Console.WriteLine(o.FirstOrder);
+    //      //      Console.WriteLine(o.FirstOrderSpecified);
+    //    }
+
+    public class OptionalOrder
+    {
+      // This field shouldn't be serialized 
+      // if it is uninitialized.
+      public string FirstOrder;
+      // Use the XmlIgnoreAttribute to ignore the 
+      // special field named "FirstOrderSpecified".
+      [System.Xml.Serialization.XmlIgnoreAttribute] public bool FirstOrderSpecified;
+    }
+
+    public class FamilyDetails
+    {
+      public string Name { get; set; }
+      public int NumberOfChildren { get; set; }
+
+      [JsonIgnore]
+      public bool NumberOfChildrenSpecified { get; set; }
+    }
+
+    [Test]
+    public void SpecifiedExample()
+    {
+      FamilyDetails joe = new FamilyDetails();
+      joe.Name = "Joe Family Details";
+      joe.NumberOfChildren = 4;
+      joe.NumberOfChildrenSpecified = true;
+
+      FamilyDetails martha = new FamilyDetails();
+      martha.Name = "Martha Family Details";
+      martha.NumberOfChildren = 3;
+      martha.NumberOfChildrenSpecified = false;
+
+      string json = JsonConvert.SerializeObject(new[] {joe, martha}, Formatting.Indented);
+      //[
+      //  {
+      //    "Name": "Joe Family Details",
+      //    "NumberOfChildren": 4
+      //  },
+      //  {
+      //    "Name": "Martha Family Details"
+      //  }
+      //]
+      Console.WriteLine(json);
+
+      string mikeString = "{\"Name\": \"Mike Person\"}";
+      FamilyDetails mike = JsonConvert.DeserializeObject<FamilyDetails>(mikeString);
+
+      Console.WriteLine("mikeString specifies number of children: {0}", mike.NumberOfChildrenSpecified);
+
+      string mikeFullDisclosureString = "{\"Name\": \"Mike Person\", \"NumberOfChildren\": \"0\"}";
+      mike = JsonConvert.DeserializeObject<FamilyDetails>(mikeFullDisclosureString);
+
+      Console.WriteLine("mikeString specifies number of children: {0}", mike.NumberOfChildrenSpecified);
+    }
+
+    public class DictionaryKey
+    {
+      public string Value { get; set; }
+
+      public override string ToString()
+      {
+        return Value;
+      }
+
+      public static implicit operator DictionaryKey(string value)
+      {
+        return new DictionaryKey() {Value = value};
+      }
+    }
+
+    [Test]
+    public void SerializeDeserializeDictionaryKey()
+    {
+      Dictionary<DictionaryKey, string> dictionary = new Dictionary<DictionaryKey, string>();
+
+      dictionary.Add(new DictionaryKey() {Value = "First!"}, "First");
+      dictionary.Add(new DictionaryKey() {Value = "Second!"}, "Second");
+
+      string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""First!"": ""First"",
+  ""Second!"": ""Second""
+}", json);
+
+      Dictionary<DictionaryKey, string> newDictionary =
+        JsonConvert.DeserializeObject<Dictionary<DictionaryKey, string>>(json);
+
+      Assert.AreEqual(2, newDictionary.Count);
+    }
+
+    [Test]
+    public void SerializeNullableArray()
+    {
+      string jsonText = JsonConvert.SerializeObject(new double?[] {2.4, 4.3, null}, Formatting.Indented);
+
+      Assert.AreEqual(@"[
+  2.4,
+  4.3,
+  null
+]", jsonText);
+
+      double?[] d = (double?[]) JsonConvert.DeserializeObject(jsonText, typeof (double?[]));
+
+      Assert.AreEqual(3, d.Length);
+      Assert.AreEqual(2.4, d[0]);
+      Assert.AreEqual(4.3, d[1]);
+      Assert.AreEqual(null, d[2]);
+    }
+
+#if !SILVERLIGHT && !NET20 && !PocketPC
+    [Test]
+    public void SerializeHashSet()
+    {
+      string jsonText = JsonConvert.SerializeObject(new HashSet<string>()
+        {
+          "One",
+          "2",
+          "III"
+        }, Formatting.Indented);
+
+      Assert.AreEqual(@"[
+  ""One"",
+  ""2"",
+  ""III""
+]", jsonText);
+
+      HashSet<string> d = JsonConvert.DeserializeObject<HashSet<string>>(jsonText);
+
+      Assert.AreEqual(3, d.Count);
+      Assert.IsTrue(d.Contains("One"));
+      Assert.IsTrue(d.Contains("2"));
+      Assert.IsTrue(d.Contains("III"));
+    }
+#endif
+
+    private class MyClass
+    {
+      public byte[] Prop1 { get; set; }
+
+      public MyClass()
+      {
+        Prop1 = new byte[0];
+      }
+    }
+
+    [Test]
+    public void DeserializeByteArray()
+    {
+      JsonSerializer serializer1 = new JsonSerializer();
+      serializer1.Converters.Add(new IsoDateTimeConverter());
+      serializer1.NullValueHandling = NullValueHandling.Ignore;
+
+      string json = @"[{""Prop1"":""""},{""Prop1"":""""}]";
+
+      JsonTextReader reader = new JsonTextReader(new StringReader(json));
+
+      MyClass[] z = (MyClass[]) serializer1.Deserialize(reader, typeof (MyClass[]));
+      Assert.AreEqual(2, z.Length);
+      Assert.AreEqual(0, z[0].Prop1.Length);
+      Assert.AreEqual(0, z[1].Prop1.Length);
+    }
+
+#if !NET20 && !PocketPC && !SILVERLIGHT && !NETFX_CORE
+    public class StringDictionaryTestClass
+    {
+      public StringDictionary StringDictionaryProperty { get; set; }
+    }
+
+    [Test]
+    [ExpectedException(typeof (Exception), ExpectedMessage = "Cannot create and populate list type System.Collections.Specialized.StringDictionary.")]
+    public void StringDictionaryTest()
+    {
+      StringDictionaryTestClass s1 = new StringDictionaryTestClass()
+        {
+          StringDictionaryProperty = new StringDictionary()
+            {
+              {"1", "One"},
+              {"2", "II"},
+              {"3", "3"}
+            }
+        };
+
+      string json = JsonConvert.SerializeObject(s1, Formatting.Indented);
+
+      JsonConvert.DeserializeObject<StringDictionaryTestClass>(json);
+    }
+#endif
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public struct StructWithAttribute
+    {
+      public string MyString { get; set; }
+
+      [JsonProperty]
+      public int MyInt { get; set; }
+    }
+
+    [Test]
+    public void SerializeStructWithJsonObjectAttribute()
+    {
+      StructWithAttribute testStruct = new StructWithAttribute
+        {
+          MyInt = int.MaxValue
+        };
+
+      string json = JsonConvert.SerializeObject(testStruct, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""MyInt"": 2147483647
+}", json);
+
+      StructWithAttribute newStruct = JsonConvert.DeserializeObject<StructWithAttribute>(json);
+
+      Assert.AreEqual(int.MaxValue, newStruct.MyInt);
+    }
+
+    public class TimeZoneOffsetObject
+    {
+      public DateTimeOffset Offset { get; set; }
+    }
+
+#if !NET20
+    [Test]
+    public void ReadWriteTimeZoneOffsetIso()
+    {
+      var serializeObject = JsonConvert.SerializeObject(new TimeZoneOffsetObject
+        {
+          Offset = new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6))
+        });
+
+      Assert.AreEqual("{\"Offset\":\"2000-01-01T00:00:00+06:00\"}", serializeObject);
+      var deserializeObject = JsonConvert.DeserializeObject<TimeZoneOffsetObject>(serializeObject);
+      Assert.AreEqual(TimeSpan.FromHours(6), deserializeObject.Offset.Offset);
+      Assert.AreEqual(new DateTime(2000, 1, 1), deserializeObject.Offset.Date);
+    }
+
+    [Test]
+    public void DeserializePropertyNullableDateTimeOffsetExactIso()
+    {
+      NullableDateTimeTestClass d = JsonConvert.DeserializeObject<NullableDateTimeTestClass>("{\"DateTimeOffsetField\":\"2000-01-01T00:00:00+06:00\"}");
+      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), d.DateTimeOffsetField);
+    }
+
+    [Test]
+    public void ReadWriteTimeZoneOffsetMsAjax()
+    {
+      var serializeObject = JsonConvert.SerializeObject(new TimeZoneOffsetObject
+      {
+        Offset = new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6))
+      }, Formatting.None, new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat });
+
+      Assert.AreEqual("{\"Offset\":\"\\/Date(946663200000+0600)\\/\"}", serializeObject);
+      var deserializeObject = JsonConvert.DeserializeObject<TimeZoneOffsetObject>(serializeObject);
+      Assert.AreEqual(TimeSpan.FromHours(6), deserializeObject.Offset.Offset);
+      Assert.AreEqual(new DateTime(2000, 1, 1), deserializeObject.Offset.Date);
+    }
+
+    [Test]
+    public void DeserializePropertyNullableDateTimeOffsetExactMsAjax()
+    {
+      NullableDateTimeTestClass d = JsonConvert.DeserializeObject<NullableDateTimeTestClass>("{\"DateTimeOffsetField\":\"\\/Date(946663200000+0600)\\/\"}");
+      Assert.AreEqual(new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6)), d.DateTimeOffsetField);
+    }
+#endif
+
+    public abstract class LogEvent
+    {
+      [JsonProperty("event")]
+      public abstract string EventName { get; }
+    }
+
+    public class DerivedEvent : LogEvent
+    {
+      public override string EventName
+      {
+        get { return "derived"; }
+      }
+    }
+
+    [Test]
+    public void OverridenPropertyMembers()
+    {
+      string json = JsonConvert.SerializeObject(new DerivedEvent(), Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""event"": ""derived""
+}", json);
+    }
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    [Test]
+    public void SerializeExpandoObject()
+    {
+      dynamic expando = new ExpandoObject();
+      expando.Int = 1;
+      expando.Decimal = 99.9d;
+      expando.Complex = new ExpandoObject();
+      expando.Complex.String = "I am a string";
+      expando.Complex.DateTime = new DateTime(2000, 12, 20, 18, 55, 0, DateTimeKind.Utc);
+
+      string json = JsonConvert.SerializeObject(expando, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Int"": 1,
+  ""Decimal"": 99.9,
+  ""Complex"": {
+    ""String"": ""I am a string"",
+    ""DateTime"": ""2000-12-20T18:55:00Z""
+  }
+}", json);
+
+      IDictionary<string, object> newExpando = JsonConvert.DeserializeObject<ExpandoObject>(json);
+
+      CustomAssert.IsInstanceOfType(typeof (long), newExpando["Int"]);
+      Assert.AreEqual((long)expando.Int, newExpando["Int"]);
+
+      CustomAssert.IsInstanceOfType(typeof (double), newExpando["Decimal"]);
+      Assert.AreEqual(expando.Decimal, newExpando["Decimal"]);
+
+      CustomAssert.IsInstanceOfType(typeof (ExpandoObject), newExpando["Complex"]);
+      IDictionary<string, object> o = (ExpandoObject) newExpando["Complex"];
+
+      CustomAssert.IsInstanceOfType(typeof (string), o["String"]);
+      Assert.AreEqual(expando.Complex.String, o["String"]);
+
+      CustomAssert.IsInstanceOfType(typeof (DateTime), o["DateTime"]);
+      Assert.AreEqual(expando.Complex.DateTime, o["DateTime"]);
+    }
+#endif
+
+    [Test]
+    public void DeserializeDecimalExact()
+    {
+      decimal d = JsonConvert.DeserializeObject<decimal>("123456789876543.21");
+      Assert.AreEqual(123456789876543.21m, d);
+    }
+
+    [Test]
+    public void DeserializeNullableDecimalExact()
+    {
+      decimal? d = JsonConvert.DeserializeObject<decimal?>("123456789876543.21");
+      Assert.AreEqual(123456789876543.21m, d);
+    }
+
+    [Test]
+    public void DeserializeDecimalPropertyExact()
+    {
+      string json = "{Amount:123456789876543.21}";
+      Invoice i = JsonConvert.DeserializeObject<Invoice>(json);
+      Assert.AreEqual(123456789876543.21m, i.Amount);
+    }
+
+    [Test]
+    public void DeserializeDecimalArrayExact()
+    {
+      string json = "[123456789876543.21]";
+      IList<decimal> a = JsonConvert.DeserializeObject<IList<decimal>>(json);
+      Assert.AreEqual(123456789876543.21m, a[0]);
+    }
+
+    [Test]
+    public void DeserializeDecimalDictionaryExact()
+    {
+      string json = "{'Value':123456789876543.21}";
+      IDictionary<string, decimal> d = JsonConvert.DeserializeObject<IDictionary<string, decimal>>(json);
+      Assert.AreEqual(123456789876543.21m, d["Value"]);
+    }
+
+    public struct Vector
+    {
+      public float X;
+      public float Y;
+      public float Z;
+
+      public override string ToString()
+      {
+        return string.Format("({0},{1},{2})", X, Y, Z);
+      }
+    }
+
+    public class VectorParent
+    {
+      public Vector Position;
+    }
+
+    [Test]
+    public void DeserializeStructProperty()
+    {
+      VectorParent obj = new VectorParent();
+      obj.Position = new Vector {X = 1, Y = 2, Z = 3};
+
+      string str = JsonConvert.SerializeObject(obj);
+
+      obj = JsonConvert.DeserializeObject<VectorParent>(str);
+
+      Assert.AreEqual(1, obj.Position.X);
+      Assert.AreEqual(2, obj.Position.Y);
+      Assert.AreEqual(3, obj.Position.Z);
+    }
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public class Derived : Base
+    {
+      [JsonProperty]
+      public string IDoWork { get; private set; }
+
+      private Derived()
+      {
+      }
+
+      internal Derived(string dontWork, string doWork)
+        : base(dontWork)
+      {
+        IDoWork = doWork;
+      }
+    }
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public class Base
+    {
+      [JsonProperty]
+      public string IDontWork { get; private set; }
+
+      protected Base()
+      {
+      }
+
+      internal Base(string dontWork)
+      {
+        IDontWork = dontWork;
+      }
+    }
+
+    [Test]
+    public void PrivateSetterOnBaseClassProperty()
+    {
+      var derived = new Derived("meh", "woo");
+
+      var settings = new JsonSerializerSettings
+        {
+          TypeNameHandling = TypeNameHandling.Objects,
+          ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
+        };
+
+      string json = JsonConvert.SerializeObject(derived, Formatting.Indented, settings);
+
+      var meh = JsonConvert.DeserializeObject<Base>(json, settings);
+
+      Assert.AreEqual(((Derived) meh).IDoWork, "woo");
+      Assert.AreEqual(meh.IDontWork, "meh");
+    }
+
+#if !(SILVERLIGHT || PocketPC || NET20 || NETFX_CORE)
+    [DataContract]
+    public struct StructISerializable : ISerializable
+    {
+      private string _name;
+
+      public StructISerializable(SerializationInfo info, StreamingContext context)
+      {
+        _name = info.GetString("Name");
+      }
+
+      [DataMember]
+      public string Name
+      {
+        get { return _name; }
+        set { _name = value; }
+      }
+
+      public void GetObjectData(SerializationInfo info, StreamingContext context)
+      {
+        info.AddValue("Name", _name);
+      }
+    }
+
+    [DataContract]
+    public class NullableStructPropertyClass
+    {
+      private StructISerializable _foo1;
+      private StructISerializable? _foo2;
+
+      [DataMember]
+      public StructISerializable Foo1
+      {
+        get { return _foo1; }
+        set { _foo1 = value; }
+      }
+
+      [DataMember]
+      public StructISerializable? Foo2
+      {
+        get { return _foo2; }
+        set { _foo2 = value; }
+      }
+    }
+
+    [Test]
+    public void DeserializeNullableStruct()
+    {
+      NullableStructPropertyClass nullableStructPropertyClass = new NullableStructPropertyClass();
+      nullableStructPropertyClass.Foo1 = new StructISerializable() {Name = "foo 1"};
+      nullableStructPropertyClass.Foo2 = new StructISerializable() {Name = "foo 2"};
+
+      NullableStructPropertyClass barWithNull = new NullableStructPropertyClass();
+      barWithNull.Foo1 = new StructISerializable() {Name = "foo 1"};
+      barWithNull.Foo2 = null;
+
+      //throws error on deserialization because bar1.Foo2 is of type Foo?
+      string s = JsonConvert.SerializeObject(nullableStructPropertyClass);
+      NullableStructPropertyClass deserialized = deserialize(s);
+      Assert.AreEqual(deserialized.Foo1.Name, "foo 1");
+      Assert.AreEqual(deserialized.Foo2.Value.Name, "foo 2");
+
+      //no error Foo2 is null
+      s = JsonConvert.SerializeObject(barWithNull);
+      deserialized = deserialize(s);
+      Assert.AreEqual(deserialized.Foo1.Name, "foo 1");
+      Assert.AreEqual(deserialized.Foo2, null);
+    }
+
+
+    private static NullableStructPropertyClass deserialize(string serStr)
+    {
+      return JsonConvert.DeserializeObject<NullableStructPropertyClass>(
+        serStr,
+        new JsonSerializerSettings
+          {
+            NullValueHandling = NullValueHandling.Ignore,
+            MissingMemberHandling = MissingMemberHandling.Ignore
+          });
+    }
+#endif
+
+    public class Response
+    {
+      public string Name { get; set; }
+      public JToken Data { get; set; }
+    }
+
+    [Test]
+    public void DeserializeJToken()
+    {
+      Response response = new Response
+        {
+          Name = "Success",
+          Data = new JObject(new JProperty("First", "Value1"), new JProperty("Second", "Value2"))
+        };
+
+      string json = JsonConvert.SerializeObject(response, Formatting.Indented);
+
+      Response deserializedResponse = JsonConvert.DeserializeObject<Response>(json);
+
+      Assert.AreEqual("Success", deserializedResponse.Name);
+      Assert.IsTrue(deserializedResponse.Data.DeepEquals(response.Data));
+    }
+
+    public abstract class Test<T>
+    {
+      public abstract T Value { get; set; }
+    }
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public class DecimalTest : Test<decimal>
+    {
+      protected DecimalTest()
+      {
+      }
+
+      public DecimalTest(decimal val)
+      {
+        Value = val;
+      }
+
+      [JsonProperty]
+      public override decimal Value { get; set; }
+    }
+
+    [Test]
+    public void OnError()
+    {
+      var data = new DecimalTest(decimal.MinValue);
+      var json = JsonConvert.SerializeObject(data);
+      var obj = JsonConvert.DeserializeObject<DecimalTest>(json);
+
+      Assert.AreEqual(decimal.MinValue, obj.Value);
+    }
+
+    public class NonPublicConstructorWithJsonConstructor
+    {
+      public string Value { get; private set; }
+      public string Constructor { get; private set; }
+
+      [JsonConstructor]
+      private NonPublicConstructorWithJsonConstructor()
+      {
+        Constructor = "NonPublic";
+      }
+
+      public NonPublicConstructorWithJsonConstructor(string value)
+      {
+        Value = value;
+        Constructor = "Public Paramatized";
+      }
+    }
+
+    [Test]
+    public void NonPublicConstructorWithJsonConstructorTest()
+    {
+      NonPublicConstructorWithJsonConstructor c = JsonConvert.DeserializeObject<NonPublicConstructorWithJsonConstructor>("{}");
+      Assert.AreEqual("NonPublic", c.Constructor);
+    }
+
+    public class PublicConstructorOverridenByJsonConstructor
+    {
+      public string Value { get; private set; }
+      public string Constructor { get; private set; }
+
+      public PublicConstructorOverridenByJsonConstructor()
+      {
+        Constructor = "NonPublic";
+      }
+
+      [JsonConstructor]
+      public PublicConstructorOverridenByJsonConstructor(string value)
+      {
+        Value = value;
+        Constructor = "Public Paramatized";
+      }
+    }
+
+    [Test]
+    public void PublicConstructorOverridenByJsonConstructorTest()
+    {
+      PublicConstructorOverridenByJsonConstructor c = JsonConvert.DeserializeObject<PublicConstructorOverridenByJsonConstructor>("{Value:'value!'}");
+      Assert.AreEqual("Public Paramatized", c.Constructor);
+      Assert.AreEqual("value!", c.Value);
+    }
+
+    public class MultipleParamatrizedConstructorsJsonConstructor
+    {
+      public string Value { get; private set; }
+      public int Age { get; private set; }
+      public string Constructor { get; private set; }
+
+      public MultipleParamatrizedConstructorsJsonConstructor(string value)
+      {
+        Value = value;
+        Constructor = "Public Paramatized 1";
+      }
+
+      [JsonConstructor]
+      public MultipleParamatrizedConstructorsJsonConstructor(string value, int age)
+      {
+        Value = value;
+        Age = age;
+        Constructor = "Public Paramatized 2";
+      }
+    }
+
+    [Test]
+    public void MultipleParamatrizedConstructorsJsonConstructorTest()
+    {
+      MultipleParamatrizedConstructorsJsonConstructor c = JsonConvert.DeserializeObject<MultipleParamatrizedConstructorsJsonConstructor>("{Value:'value!', Age:1}");
+      Assert.AreEqual("Public Paramatized 2", c.Constructor);
+      Assert.AreEqual("value!", c.Value);
+      Assert.AreEqual(1, c.Age);
+    }
+
+    public class EnumerableClass
+    {
+      public IEnumerable<string> Enumerable { get; set; }
+    }
+
+    [Test]
+    public void DeserializeEnumerable()
+    {
+      EnumerableClass c = new EnumerableClass
+        {
+          Enumerable = new List<string> {"One", "Two", "Three"}
+        };
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Enumerable"": [
+    ""One"",
+    ""Two"",
+    ""Three""
+  ]
+}", json);
+
+      EnumerableClass c2 = JsonConvert.DeserializeObject<EnumerableClass>(json);
+
+      Assert.AreEqual("One", c2.Enumerable.ElementAt(0));
+      Assert.AreEqual("Two", c2.Enumerable.ElementAt(1));
+      Assert.AreEqual("Three", c2.Enumerable.ElementAt(2));
+    }
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public class ItemBase
+    {
+      [JsonProperty]
+      public string Name { get; set; }
+    }
+
+    public class ComplexItem : ItemBase
+    {
+      public Stream Source { get; set; }
+    }
+
+    [Test]
+    public void SerializeAttributesOnBase()
+    {
+      ComplexItem i = new ComplexItem();
+
+      string json = JsonConvert.SerializeObject(i, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Name"": null
+}", json);
+    }
+
+    public class DeserializeStringConvert
+    {
+      public string Name { get; set; }
+      public int Age { get; set; }
+      public double Height { get; set; }
+      public decimal Price { get; set; }
+    }
+
+    [Test]
+    public void DeserializeStringEnglish()
+    {
+      string json = @"{
+  'Name': 'James Hughes',
+  'Age': '40',
+  'Height': '44.4',
+  'Price': '4'
+}";
+
+      DeserializeStringConvert p = JsonConvert.DeserializeObject<DeserializeStringConvert>(json);
+      Assert.AreEqual(40, p.Age);
+      Assert.AreEqual(44.4, p.Height);
+      Assert.AreEqual(4m, p.Price);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error converting value {null} to type 'System.DateTime'. Line 1, position 4."
+#endif
+      )]
+    public void DeserializeNullDateTimeValueTest()
+    {
+      JsonConvert.DeserializeObject("null", typeof (DateTime));
+    }
+
+    [Test]
+    public void DeserializeNullNullableDateTimeValueTest()
+    {
+      object dateTime = JsonConvert.DeserializeObject("null", typeof (DateTime?));
+
+      Assert.IsNull(dateTime);
+    }
+
+    [Test]
+    public void MultiIndexSuperTest()
+    {
+      MultiIndexSuper e = new MultiIndexSuper();
+
+      string json = JsonConvert.SerializeObject(e, Formatting.Indented);
+
+      Assert.AreEqual(@"{}", json);
+    }
+
+    public class MultiIndexSuper : MultiIndexBase
+    {
+
+    }
+
+    public abstract class MultiIndexBase
+    {
+      protected internal object this[string propertyName]
+      {
+        get { return null; }
+        set { }
+      }
+
+      protected internal object this[object property]
+      {
+        get { return null; }
+        set { }
+      }
+    }
+
+    public class CommentTestClass
+    {
+      public bool Indexed { get; set; }
+      public int StartYear { get; set; }
+      public IList<decimal> Values { get; set; }
+    }
+
+    [Test]
+    public void CommentTestClassTest()
+    {
+      string json = @"{""indexed"":true, ""startYear"":1939, ""values"":
+                            [  3000,  /* 1940-1949 */
+                               3000,   3600,   3600,   3600,   3600,   4200,   4200,   4200,   4200,   4800,  /* 1950-1959 */
+                               4800,   4800,   4800,   4800,   4800,   4800,   6600,   6600,   7800,   7800,  /* 1960-1969 */
+                               7800,   7800,   9000,  10800,  13200,  14100,  15300,  16500,  17700,  22900,  /* 1970-1979 */
+                              25900,  29700,  32400,  35700,  37800,  39600,  42000,  43800,  45000,  48000,  /* 1980-1989 */
+                              51300,  53400,  55500,  57600,  60600,  61200,  62700,  65400,  68400,  72600,  /* 1990-1999 */
+                              76200,  80400,  84900,  87000,  87900,  90000,  94200,  97500, 102000, 106800,  /* 2000-2009 */
+                             106800, 106800]  /* 2010-2011 */
+                                }";
+
+      CommentTestClass commentTestClass = JsonConvert.DeserializeObject<CommentTestClass>(json);
+
+      Assert.AreEqual(true, commentTestClass.Indexed);
+      Assert.AreEqual(1939, commentTestClass.StartYear);
+      Assert.AreEqual(63, commentTestClass.Values.Count);
+    }
+
+    private class DTOWithParameterisedConstructor
+    {
+      public DTOWithParameterisedConstructor(string A)
+      {
+        this.A = A;
+        B = 2;
+      }
+
+      public string A { get; set; }
+      public int? B { get; set; }
+    }
+
+    private class DTOWithoutParameterisedConstructor
+    {
+      public DTOWithoutParameterisedConstructor()
+      {
+        B = 2;
+      }
+
+      public string A { get; set; }
+      public int? B { get; set; }
+    }
+
+    [Test]
+    public void PopulationBehaviourForOmittedPropertiesIsTheSameForParameterisedConstructorAsForDefaultConstructor()
+    {
+      string json = @"{A:""Test""}";
+
+      var withoutParameterisedConstructor = JsonConvert.DeserializeObject<DTOWithoutParameterisedConstructor>(json);
+      var withParameterisedConstructor = JsonConvert.DeserializeObject<DTOWithParameterisedConstructor>(json);
+      Assert.AreEqual(withoutParameterisedConstructor.B, withParameterisedConstructor.B);
+    }
+
+    public class EnumerableArrayPropertyClass
+    {
+      public IEnumerable<int> Numbers
+      {
+        get
+        {
+          return new[] {1, 2, 3}; //fails
+          //return new List<int>(new[] { 1, 2, 3 }); //works
+        }
+      }
+    }
+
+    [Test]
+    public void SkipPopulatingArrayPropertyClass()
+    {
+      string json = JsonConvert.SerializeObject(new EnumerableArrayPropertyClass());
+      JsonConvert.DeserializeObject<EnumerableArrayPropertyClass>(json);
+    }
+
+#if !NET20
+    [DataContract]
+    public class BaseDataContract
+    {
+      [DataMember(Name = "virtualMember")]
+      public virtual string VirtualMember { get; set; }
+
+      [DataMember(Name = "nonVirtualMember")]
+      public string NonVirtualMember { get; set; }
+    }
+
+    public class ChildDataContract : BaseDataContract
+    {
+      public override string VirtualMember { get; set; }
+      public string NewMember { get; set; }
+    }
+
+    [Test]
+    public void ChildDataContractTest()
+    {
+      ChildDataContract cc = new ChildDataContract
+        {
+          VirtualMember = "VirtualMember!",
+          NonVirtualMember = "NonVirtualMember!"
+        };
+
+      string result = JsonConvert.SerializeObject(cc);
+      Assert.AreEqual(@"{""virtualMember"":""VirtualMember!"",""nonVirtualMember"":""NonVirtualMember!""}", result);
+    }
+#endif
+
+    [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
+    public class BaseObject
+    {
+      [JsonProperty(PropertyName = "virtualMember")]
+      public virtual string VirtualMember { get; set; }
+
+      [JsonProperty(PropertyName = "nonVirtualMember")]
+      public string NonVirtualMember { get; set; }
+    }
+
+    public class ChildObject : BaseObject
+    {
+      public override string VirtualMember { get; set; }
+      public string NewMember { get; set; }
+    }
+
+    public class ChildWithDifferentOverrideObject : BaseObject
+    {
+      [JsonProperty(PropertyName = "differentVirtualMember")]
+      public override string VirtualMember { get; set; }
+    }
+
+    [Test]
+    public void ChildObjectTest()
+    {
+      ChildObject cc = new ChildObject
+        {
+          VirtualMember = "VirtualMember!",
+          NonVirtualMember = "NonVirtualMember!"
+        };
+
+      string result = JsonConvert.SerializeObject(cc);
+      Assert.AreEqual(@"{""virtualMember"":""VirtualMember!"",""nonVirtualMember"":""NonVirtualMember!""}", result);
+    }
+
+    [Test]
+    public void ChildWithDifferentOverrideObjectTest()
+    {
+      ChildWithDifferentOverrideObject cc = new ChildWithDifferentOverrideObject
+        {
+          VirtualMember = "VirtualMember!",
+          NonVirtualMember = "NonVirtualMember!"
+        };
+
+      string result = JsonConvert.SerializeObject(cc);
+      Assert.AreEqual(@"{""differentVirtualMember"":""VirtualMember!"",""nonVirtualMember"":""NonVirtualMember!""}", result);
+    }
+
+    [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
+    public interface IInterfaceObject
+    {
+      [JsonProperty(PropertyName = "virtualMember")]
+      [JsonConverter(typeof (IsoDateTimeConverter))]
+      DateTime InterfaceMember { get; set; }
+    }
+
+    public class ImplementInterfaceObject : IInterfaceObject
+    {
+      public DateTime InterfaceMember { get; set; }
+      public string NewMember { get; set; }
+
+      [JsonProperty(PropertyName = "newMemberWithProperty")]
+      public string NewMemberWithProperty { get; set; }
+    }
+
+    [Test]
+    public void ImplementInterfaceObjectTest()
+    {
+      ImplementInterfaceObject cc = new ImplementInterfaceObject
+        {
+          InterfaceMember = new DateTime(2010, 12, 31, 0, 0, 0, DateTimeKind.Utc),
+          NewMember = "NewMember!"
+        };
+
+      string result = JsonConvert.SerializeObject(cc, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""virtualMember"": ""2010-12-31T00:00:00Z"",
+  ""newMemberWithProperty"": null
+}", result);
+    }
+
+    public class NonDefaultConstructorWithReadOnlyCollectionProperty
+    {
+      public string Title { get; set; }
+      public IList<string> Categories { get; private set; }
+
+      public NonDefaultConstructorWithReadOnlyCollectionProperty(string title)
+      {
+        Title = title;
+        Categories = new List<string>();
+      }
+    }
+
+    [Test]
+    public void NonDefaultConstructorWithReadOnlyCollectionPropertyTest()
+    {
+      NonDefaultConstructorWithReadOnlyCollectionProperty c1 = new NonDefaultConstructorWithReadOnlyCollectionProperty("blah");
+      c1.Categories.Add("one");
+      c1.Categories.Add("two");
+
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Title"": ""blah"",
+  ""Categories"": [
+    ""one"",
+    ""two""
+  ]
+}", json);
+
+      NonDefaultConstructorWithReadOnlyCollectionProperty c2 = JsonConvert.DeserializeObject<NonDefaultConstructorWithReadOnlyCollectionProperty>(json);
+      Assert.AreEqual(c1.Title, c2.Title);
+      Assert.AreEqual(c1.Categories.Count, c2.Categories.Count);
+      Assert.AreEqual("one", c2.Categories[0]);
+      Assert.AreEqual("two", c2.Categories[1]);
+    }
+
+    public class NonDefaultConstructorWithReadOnlyDictionaryProperty
+    {
+      public string Title { get; set; }
+      public IDictionary<string, int> Categories { get; private set; }
+
+      public NonDefaultConstructorWithReadOnlyDictionaryProperty(string title)
+      {
+        Title = title;
+        Categories = new Dictionary<string, int>();
+      }
+    }
+
+    [Test]
+    public void NonDefaultConstructorWithReadOnlyDictionaryPropertyTest()
+    {
+      NonDefaultConstructorWithReadOnlyDictionaryProperty c1 = new NonDefaultConstructorWithReadOnlyDictionaryProperty("blah");
+      c1.Categories.Add("one", 1);
+      c1.Categories.Add("two", 2);
+
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Title"": ""blah"",
+  ""Categories"": {
+    ""one"": 1,
+    ""two"": 2
+  }
+}", json);
+
+      NonDefaultConstructorWithReadOnlyDictionaryProperty c2 = JsonConvert.DeserializeObject<NonDefaultConstructorWithReadOnlyDictionaryProperty>(json);
+      Assert.AreEqual(c1.Title, c2.Title);
+      Assert.AreEqual(c1.Categories.Count, c2.Categories.Count);
+      Assert.AreEqual(1, c2.Categories["one"]);
+      Assert.AreEqual(2, c2.Categories["two"]);
+    }
+
+    [JsonObject(MemberSerialization.OptIn)]
+    public class ClassAttributeBase
+    {
+      [JsonProperty]
+      public string BaseClassValue { get; set; }
+    }
+
+    public class ClassAttributeDerived : ClassAttributeBase
+    {
+      [JsonProperty]
+      public string DerivedClassValue { get; set; }
+
+      public string NonSerialized { get; set; }
+    }
+
+    public class CollectionClassAttributeDerived : ClassAttributeBase, ICollection<object>
+    {
+      [JsonProperty]
+      public string CollectionDerivedClassValue { get; set; }
+
+      public void Add(object item)
+      {
+        throw new NotImplementedException();
+      }
+
+      public void Clear()
+      {
+        throw new NotImplementedException();
+      }
+
+      public bool Contains(object item)
+      {
+        throw new NotImplementedException();
+      }
+
+      public void CopyTo(object[] array, int arrayIndex)
+      {
+        throw new NotImplementedException();
+      }
+
+      public int Count
+      {
+        get { throw new NotImplementedException(); }
+      }
+
+      public bool IsReadOnly
+      {
+        get { throw new NotImplementedException(); }
+      }
+
+      public bool Remove(object item)
+      {
+        throw new NotImplementedException();
+      }
+
+      public IEnumerator<object> GetEnumerator()
+      {
+        throw new NotImplementedException();
+      }
+
+      IEnumerator IEnumerable.GetEnumerator()
+      {
+        throw new NotImplementedException();
+      }
+    }
+
+    [Test]
+    public void ClassAttributesInheritance()
+    {
+      string json = JsonConvert.SerializeObject(new ClassAttributeDerived
+        {
+          BaseClassValue = "BaseClassValue!",
+          DerivedClassValue = "DerivedClassValue!",
+          NonSerialized = "NonSerialized!"
+        }, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""DerivedClassValue"": ""DerivedClassValue!"",
+  ""BaseClassValue"": ""BaseClassValue!""
+}", json);
+
+      json = JsonConvert.SerializeObject(new CollectionClassAttributeDerived
+        {
+          BaseClassValue = "BaseClassValue!",
+          CollectionDerivedClassValue = "CollectionDerivedClassValue!"
+        }, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""CollectionDerivedClassValue"": ""CollectionDerivedClassValue!"",
+  ""BaseClassValue"": ""BaseClassValue!""
+}", json);
+    }
+
+    public class PrivateMembersClassWithAttributes
+    {
+      public PrivateMembersClassWithAttributes(string privateString, string internalString, string readonlyString)
+      {
+        _privateString = privateString;
+        _readonlyString = readonlyString;
+        _internalString = internalString;
+      }
+
+      public PrivateMembersClassWithAttributes()
+      {
+        _readonlyString = "default!";
+      }
+
+      [JsonProperty] private string _privateString;
+      [JsonProperty] private readonly string _readonlyString;
+      [JsonProperty] internal string _internalString;
+
+      public string UseValue()
+      {
+        return _readonlyString;
+      }
+    }
+
+    [Test]
+    public void PrivateMembersClassWithAttributesTest()
+    {
+      PrivateMembersClassWithAttributes c1 = new PrivateMembersClassWithAttributes("privateString!", "internalString!", "readonlyString!");
+
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""_privateString"": ""privateString!"",
+  ""_readonlyString"": ""readonlyString!"",
+  ""_internalString"": ""internalString!""
+}", json);
+
+      PrivateMembersClassWithAttributes c2 = JsonConvert.DeserializeObject<PrivateMembersClassWithAttributes>(json);
+      Assert.AreEqual("readonlyString!", c2.UseValue());
+    }
+
+    public partial class BusRun
+    {
+      public IEnumerable<Nullable<DateTime>> Departures { get; set; }
+      public Boolean WheelchairAccessible { get; set; }
+    }
+
+    [Test]
+    public void DeserializeGenericEnumerableProperty()
+    {
+      BusRun r = JsonConvert.DeserializeObject<BusRun>("{\"Departures\":[\"\\/Date(1309874148734-0400)\\/\",\"\\/Date(1309874148739-0400)\\/\",null],\"WheelchairAccessible\":true}");
+
+      Assert.AreEqual(3, r.Departures.Count());
+      Assert.IsNotNull(r.Departures.ElementAt(0));
+      Assert.IsNotNull(r.Departures.ElementAt(1));
+      Assert.IsNull(r.Departures.ElementAt(2));
+    }
+
+#if !(NET20)
+    [DataContract]
+    public class BaseType
+    {
+
+      [DataMember] public string zebra;
+    }
+
+    [DataContract]
+    public class DerivedType : BaseType
+    {
+      [DataMember(Order = 0)] public string bird;
+      [DataMember(Order = 1)] public string parrot;
+      [DataMember] public string dog;
+      [DataMember(Order = 3)] public string antelope;
+      [DataMember] public string cat;
+      [JsonProperty(Order = 1)] public string albatross;
+      [JsonProperty(Order = -2)] public string dinosaur;
+    }
+
+    [Test]
+    public void JsonPropertyDataMemberOrder()
+    {
+      DerivedType d = new DerivedType();
+      string json = JsonConvert.SerializeObject(d, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""dinosaur"": null,
+  ""dog"": null,
+  ""cat"": null,
+  ""zebra"": null,
+  ""bird"": null,
+  ""parrot"": null,
+  ""albatross"": null,
+  ""antelope"": null
+}", json);
+    }
+#endif
+
+    public class ClassWithException
+    {
+      public IList<Exception> Exceptions { get; set; }
+
+      public ClassWithException()
+      {
+        Exceptions = new List<Exception>();
+      }
+    }
+
+#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
+    [Test]
+    public void SerializeException1()
+    {
+      ClassWithException classWithException = new ClassWithException();
+      try
+      {
+        throw new Exception("Test Exception");
+      }
+      catch (Exception ex)
+      {
+        classWithException.Exceptions.Add(ex);
+      }
+      string sex = JsonConvert.SerializeObject(classWithException);
+      ClassWithException dex = JsonConvert.DeserializeObject<ClassWithException>(sex);
+      Assert.AreEqual(dex.Exceptions[0].ToString(), dex.Exceptions[0].ToString());
+
+      sex = JsonConvert.SerializeObject(classWithException, Formatting.Indented);
+
+      dex = JsonConvert.DeserializeObject<ClassWithException>(sex); // this fails!
+      Assert.AreEqual(dex.Exceptions[0].ToString(), dex.Exceptions[0].ToString());
+    }
+#endif
+
+    public void DeserializeIDictionary()
+    {
+      IDictionary dictionary = JsonConvert.DeserializeObject<IDictionary>("{'name':'value!'}");
+      Assert.AreEqual(1, dictionary.Count);
+      Assert.AreEqual("value!", dictionary["name"]);
+    }
+
+    public void DeserializeIList()
+    {
+      IList list = JsonConvert.DeserializeObject<IList>("['1', 'two', 'III']");
+      Assert.AreEqual(3, list.Count);
+    }
+
+    public void UriGuidTimeSpanTestClassEmptyTest()
+    {
+      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass();
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Guid"": ""00000000-0000-0000-0000-000000000000"",
+  ""NullableGuid"": null,
+  ""TimeSpan"": ""00:00:00"",
+  ""NullableTimeSpan"": null,
+  ""Uri"": null
+}", json);
+
+      UriGuidTimeSpanTestClass c2 = JsonConvert.DeserializeObject<UriGuidTimeSpanTestClass>(json);
+      Assert.AreEqual(c1.Guid, c2.Guid);
+      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
+      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
+      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
+      Assert.AreEqual(c1.Uri, c2.Uri);
+    }
+
+    public void UriGuidTimeSpanTestClassValuesTest()
+    {
+      UriGuidTimeSpanTestClass c1 = new UriGuidTimeSpanTestClass
+        {
+          Guid = new Guid("1924129C-F7E0-40F3-9607-9939C531395A"),
+          NullableGuid = new Guid("9E9F3ADF-E017-4F72-91E0-617EBE85967D"),
+          TimeSpan = TimeSpan.FromDays(1),
+          NullableTimeSpan = TimeSpan.FromHours(1),
+          Uri = new Uri("http://testuri.com")
+        };
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Guid"": ""1924129c-f7e0-40f3-9607-9939c531395a"",
+  ""NullableGuid"": ""9e9f3adf-e017-4f72-91e0-617ebe85967d"",
+  ""TimeSpan"": ""1.00:00:00"",
+  ""NullableTimeSpan"": ""01:00:00"",
+  ""Uri"": ""http://testuri.com/""
+}", json);
+
+      UriGuidTimeSpanTestClass c2 = JsonConvert.DeserializeObject<UriGuidTimeSpanTestClass>(json);
+      Assert.AreEqual(c1.Guid, c2.Guid);
+      Assert.AreEqual(c1.NullableGuid, c2.NullableGuid);
+      Assert.AreEqual(c1.TimeSpan, c2.TimeSpan);
+      Assert.AreEqual(c1.NullableTimeSpan, c2.NullableTimeSpan);
+      Assert.AreEqual(c1.Uri, c2.Uri);
+    }
+
+    [Test]
+    public void NullableValueGenericDictionary()
+    {
+      IDictionary<string, int?> v1 = new Dictionary<string, int?>
+        {
+          {"First", 1},
+          {"Second", null},
+          {"Third", 3}
+        };
+
+      string json = JsonConvert.SerializeObject(v1, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""First"": 1,
+  ""Second"": null,
+  ""Third"": 3
+}", json);
+
+      IDictionary<string, int?> v2 = JsonConvert.DeserializeObject<IDictionary<string, int?>>(json);
+      Assert.AreEqual(3, v2.Count);
+      Assert.AreEqual(1, v2["First"]);
+      Assert.AreEqual(null, v2["Second"]);
+      Assert.AreEqual(3, v2["Third"]);
+    }
+
+    [Test]
+    public void UsingJsonTextWriter()
+    {
+      // The property of the object has to be a number for the cast exception to occure
+      object o = new {p = 1};
+
+      var json = JObject.FromObject(o);
+
+      using (var sw = new StringWriter())
+      using (var jw = new JsonTextWriter(sw))
+      {
+        jw.WriteToken(json.CreateReader());
+        jw.Flush();
+
+        string result = sw.ToString();
+        Assert.AreEqual(@"{""p"":1}", result);
+      }
+    }
+
+#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
+    [Test]
+    public void DeserializeConcurrentDictionary()
+    {
+      IDictionary<string, Component> components = new Dictionary<string, Component>
+        {
+          {"Key!", new Component()}
+        };
+      GameObject go = new GameObject
+        {
+          Components = new ConcurrentDictionary<string, Component>(components),
+          Id = "Id!",
+          Name = "Name!"
+        };
+
+      string originalJson = JsonConvert.SerializeObject(go, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Components"": {
+    ""Key!"": {}
+  },
+  ""Id"": ""Id!"",
+  ""Name"": ""Name!""
+}", originalJson);
+
+      GameObject newObject = JsonConvert.DeserializeObject<GameObject>(originalJson);
+
+      Assert.AreEqual(1, newObject.Components.Count);
+      Assert.AreEqual("Id!", newObject.Id);
+      Assert.AreEqual("Name!", newObject.Name);
+    }
+#endif
+
+    [Test]
+    public void DeserializeKeyValuePairArray()
+    {
+      string json = @"[ { ""Value"": [ ""1"", ""2"" ], ""Key"": ""aaa"", ""BadContent"": [ 0 ] }, { ""Value"": [ ""3"", ""4"" ], ""Key"": ""bbb"" } ]";
+
+      IList<KeyValuePair<string, IList<string>>> values = JsonConvert.DeserializeObject<IList<KeyValuePair<string, IList<string>>>>(json);
+
+      Assert.AreEqual(2, values.Count);
+      Assert.AreEqual("aaa", values[0].Key);
+      Assert.AreEqual(2, values[0].Value.Count);
+      Assert.AreEqual("1", values[0].Value[0]);
+      Assert.AreEqual("2", values[0].Value[1]);
+      Assert.AreEqual("bbb", values[1].Key);
+      Assert.AreEqual(2, values[1].Value.Count);
+      Assert.AreEqual("3", values[1].Value[0]);
+      Assert.AreEqual("4", values[1].Value[1]);
+    }
+
+    [Test]
+    public void DeserializeNullableKeyValuePairArray()
+    {
+      string json = @"[ { ""Value"": [ ""1"", ""2"" ], ""Key"": ""aaa"", ""BadContent"": [ 0 ] }, null, { ""Value"": [ ""3"", ""4"" ], ""Key"": ""bbb"" } ]";
+
+      IList<KeyValuePair<string, IList<string>>?> values = JsonConvert.DeserializeObject<IList<KeyValuePair<string, IList<string>>?>>(json);
+
+      Assert.AreEqual(3, values.Count);
+      Assert.AreEqual("aaa", values[0].Value.Key);
+      Assert.AreEqual(2, values[0].Value.Value.Count);
+      Assert.AreEqual("1", values[0].Value.Value[0]);
+      Assert.AreEqual("2", values[0].Value.Value[1]);
+      Assert.AreEqual(null, values[1]);
+      Assert.AreEqual("bbb", values[2].Value.Key);
+      Assert.AreEqual(2, values[2].Value.Value.Count);
+      Assert.AreEqual("3", values[2].Value.Value[0]);
+      Assert.AreEqual("4", values[2].Value.Value[1]);
+    }
+
+    [Test]
+    [ExpectedException(typeof (Exception)
+#if !NETFX_CORE
+      , ExpectedMessage = "Could not deserialize Null to KeyValuePair."
+#endif
+      )]
+    public void DeserializeNullToNonNullableKeyValuePairArray()
+    {
+      string json = @"[ null ]";
+
+      JsonConvert.DeserializeObject<IList<KeyValuePair<string, IList<string>>>>(json);
+    }
+
+    [Test]
+    public void SerializeUriWithQuotes()
+    {
+      string input = "http://test.com/%22foo+bar%22";
+      Uri uri = new Uri(input);
+      string json = JsonConvert.SerializeObject(uri);
+      Uri output = JsonConvert.DeserializeObject<Uri>(json);
+
+      Assert.AreEqual(uri, output);
+    }
+
+    [Test]
+    public void SerializeUriWithSlashes()
+    {
+      string input = @"http://tes/?a=b\\c&d=e\";
+      Uri uri = new Uri(input);
+      string json = JsonConvert.SerializeObject(uri);
+      Uri output = JsonConvert.DeserializeObject<Uri>(json);
+
+      Assert.AreEqual(uri, output);
+    }
+
+    [Test]
+    public void DeserializeByteArrayWithTypeNameHandling()
+    {
+      TestObject test = new TestObject("Test", new byte[] {72, 63, 62, 71, 92, 55});
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.TypeNameHandling = TypeNameHandling.All;
+
+      byte[] objectBytes;
+      using (MemoryStream bsonStream = new MemoryStream())
+      using (JsonWriter bsonWriter = new JsonTextWriter(new StreamWriter(bsonStream)))
+      {
+        serializer.Serialize(bsonWriter, test);
+        bsonWriter.Flush();
+
+        objectBytes = bsonStream.ToArray();
+      }
+
+      using (MemoryStream bsonStream = new MemoryStream(objectBytes))
+      using (JsonReader bsonReader = new JsonTextReader(new StreamReader(bsonStream)))
+      {
+        // Get exception here
+        TestObject newObject = (TestObject) serializer.Deserialize(bsonReader);
+
+        Assert.AreEqual("Test", newObject.Name);
+        CollectionAssert.AreEquivalent(new byte[] {72, 63, 62, 71, 92, 55}, newObject.Data);
+      }
+    }
+
+#if !(SILVERLIGHT || WINDOWS_PHONE || NET20 || NETFX_CORE)
+    [Test]
+    public void DeserializeDecimalsWithCulture()
+    {
+      CultureInfo initialCulture = Thread.CurrentThread.CurrentCulture;
+
+      try
+      {
+        CultureInfo testCulture = CultureInfo.CreateSpecificCulture("nb-NO");
+
+        Thread.CurrentThread.CurrentCulture = testCulture;
+        Thread.CurrentThread.CurrentUICulture = testCulture;
+
+        string json = @"{ 'Quantity': '1.5', 'OptionalQuantity': '2.2' }";
+
+        DecimalTestClass c = JsonConvert.DeserializeObject<DecimalTestClass>(json);
+
+        Assert.AreEqual(1.5m, c.Quantity);
+        Assert.AreEqual(2.2d, c.OptionalQuantity);
+      }
+      finally
+      {
+        Thread.CurrentThread.CurrentCulture = initialCulture;
+        Thread.CurrentThread.CurrentUICulture = initialCulture;
+      }
+    }
+#endif
+
+    [Test]
+    public void ReadForTypeHackFixDecimal()
+    {
+      IList<decimal> d1 = new List<decimal> {1.1m};
+
+      string json = JsonConvert.SerializeObject(d1);
+
+      IList<decimal> d2 = JsonConvert.DeserializeObject<IList<decimal>>(json);
+
+      Assert.AreEqual(d1.Count, d2.Count);
+      Assert.AreEqual(d1[0], d2[0]);
+    }
+
+    [Test]
+    public void ReadForTypeHackFixDateTimeOffset()
+    {
+      IList<DateTimeOffset?> d1 = new List<DateTimeOffset?> {null};
+
+      string json = JsonConvert.SerializeObject(d1);
+
+      IList<DateTimeOffset?> d2 = JsonConvert.DeserializeObject<IList<DateTimeOffset?>>(json);
+
+      Assert.AreEqual(d1.Count, d2.Count);
+      Assert.AreEqual(d1[0], d2[0]);
+    }
+
+    [Test]
+    public void ReadForTypeHackFixByteArray()
+    {
+      IList<byte[]> d1 = new List<byte[]> {null};
+
+      string json = JsonConvert.SerializeObject(d1);
+
+      IList<byte[]> d2 = JsonConvert.DeserializeObject<IList<byte[]>>(json);
+
+      Assert.AreEqual(d1.Count, d2.Count);
+      Assert.AreEqual(d1[0], d2[0]);
+    }
+
+    [Test]
+    public void SerializeInheritanceHierarchyWithDuplicateProperty()
+    {
+      Bb b = new Bb();
+      b.no = true;
+      Aa a = b;
+      a.no = int.MaxValue;
+
+      string json = JsonConvert.SerializeObject(b);
+
+      Assert.AreEqual(@"{""no"":true}", json);
+
+      Bb b2 = JsonConvert.DeserializeObject<Bb>(json);
+
+      Assert.AreEqual(true, b2.no);
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Error converting value {null} to type 'System.Int32'. Line 5, position 7."
+#endif
+      )]
+    public void DeserializeNullInt()
+    {
+      string json = @"[
+  1,
+  2,
+  3,
+  null
+]";
+
+      List<int> numbers = JsonConvert.DeserializeObject<List<int>>(json);
+      // JsonSerializationException : Error converting value {null} to type 'System.Int32'. Line 5, position 7.
+    }
+
+    [Test]
+    public void SerializeNullableWidgetStruct()
+    {
+      Widget widget = new Widget {Id = new WidgetId {Value = "id"}};
+
+      string json = JsonConvert.SerializeObject(widget);
+
+      Assert.AreEqual(@"{""Id"":{""Value"":""id""}}", json);
+    }
+
+    [Test]
+    public void DeserializeNullableWidgetStruct()
+    {
+      string json = @"{""Id"":{""Value"":""id""}}";
+
+      Widget w = JsonConvert.DeserializeObject<Widget>(json);
+
+      Assert.AreEqual(new WidgetId {Value = "id"}, w.Id);
+      Assert.AreEqual(new WidgetId {Value = "id"}, w.Id.Value);
+      Assert.AreEqual("id", w.Id.Value.Value);
+    }
+
+    [Test]
+    public void DeserializeBoolInt()
+    {
+      ExceptionAssert.Throws<JsonReaderException>("Error reading integer. Unexpected token: Boolean. Line 2, position 22.",
+      () =>
+      {
+        string json = @"{
+  ""PreProperty"": true,
+  ""PostProperty"": ""-1""
+}";
+
+        JsonConvert.DeserializeObject<TestObjects.MyClass>(json);
+      });
+    }
+
+    [Test]
+    public void DeserializeUnexpectedEndInt()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("Unexpected end when setting PreProperty's value. Line 2, position 18.",
+      () =>
+      {
+        string json = @"{
+  ""PreProperty"": ";
+
+        JsonConvert.DeserializeObject<TestObjects.MyClass>(json);
+      });
+    }
+
+    [Test]
+    public void DeserializeNullableGuid()
+    {
+      string json = @"{""Id"":null}";
+      var c = JsonConvert.DeserializeObject<NullableGuid>(json);
+
+      Assert.AreEqual(null, c.Id);
+
+      json = @"{""Id"":""d8220a4b-75b1-4b7a-8112-b7bdae956a45""}";
+      c = JsonConvert.DeserializeObject<NullableGuid>(json);
+
+      Assert.AreEqual(new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), c.Id);
+    }
+
+    [Test]
+    public void DeserializeGuid()
+    {
+      Item expected = new Item()
+        {
+          SourceTypeID = new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"),
+          BrokerID = new Guid("951663c4-924e-4c86-a57a-7ed737501dbd"),
+          Latitude = 33.657145,
+          Longitude = -117.766684,
+          TimeStamp = new DateTime(2000, 3, 1, 23, 59, 59, DateTimeKind.Utc),
+          Payload = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
+        };
+
+      string jsonString = JsonConvert.SerializeObject(expected, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""SourceTypeID"": ""d8220a4b-75b1-4b7a-8112-b7bdae956a45"",
+  ""BrokerID"": ""951663c4-924e-4c86-a57a-7ed737501dbd"",
+  ""Latitude"": 33.657145,
+  ""Longitude"": -117.766684,
+  ""TimeStamp"": ""2000-03-01T23:59:59Z"",
+  ""Payload"": {
+    ""$type"": ""System.Byte[], mscorlib"",
+    ""$value"": ""AAECAwQFBgcICQ==""
+  }
+}", jsonString);
+
+      Item actual = JsonConvert.DeserializeObject<Item>(jsonString);
+
+      Assert.AreEqual(new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), actual.SourceTypeID);
+      Assert.AreEqual(new Guid("951663c4-924e-4c86-a57a-7ed737501dbd"), actual.BrokerID);
+      byte[] bytes = (byte[])actual.Payload;
+      CollectionAssert.AreEquivalent((new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }).ToList(), bytes.ToList());
+    }
+
+    [Test]
+    public void DeserializeObjectDictionary()
+    {
+      var serializer = JsonSerializer.Create(new JsonSerializerSettings());
+      var dict = serializer.Deserialize<Dictionary<string, string>>(new JsonTextReader(new StringReader("{'k1':'','k2':'v2'}")));
+
+      Assert.AreEqual("", dict["k1"]);
+      Assert.AreEqual("v2", dict["k2"]);
+    }
+
+    [Test]
+    public void DeserializeNullableEnum()
+    {
+      string json = JsonConvert.SerializeObject(new WithEnums
+        {
+          Id = 7,
+          NullableEnum = null
+        });
+
+      Assert.AreEqual(@"{""Id"":7,""NullableEnum"":null}", json);
+
+      WithEnums e = JsonConvert.DeserializeObject<WithEnums>(json);
+
+      Assert.AreEqual(null, e.NullableEnum);
+
+      json = JsonConvert.SerializeObject(new WithEnums
+        {
+          Id = 7,
+          NullableEnum = MyEnum.Value2
+        });
+
+      Assert.AreEqual(@"{""Id"":7,""NullableEnum"":1}", json);
+
+      e = JsonConvert.DeserializeObject<WithEnums>(json);
+
+      Assert.AreEqual(MyEnum.Value2, e.NullableEnum);
+    }
+
+    [Test]
+    public void NullableStructWithConverter()
+    {
+      string json = JsonConvert.SerializeObject(new Widget1 {Id = new WidgetId1 {Value = 1234}});
+
+      Assert.AreEqual(@"{""Id"":""1234""}", json);
+
+      Widget1 w = JsonConvert.DeserializeObject<Widget1>(@"{""Id"":""1234""}");
+
+      Assert.AreEqual(new WidgetId1 {Value = 1234}, w.Id);
+    }
+
+    [Test]
+    public void SerializeDictionaryStringStringAndStringObject()
+    {
+      var serializer = JsonSerializer.Create(new JsonSerializerSettings());
+      var dict = serializer.Deserialize<Dictionary<string, string>>(new JsonTextReader(new StringReader("{'k1':'','k2':'v2'}")));
+
+      var reader = new JsonTextReader(new StringReader("{'k1':'','k2':'v2'}"));
+      var dict2 = serializer.Deserialize<Dictionary<string, object>>(reader);
+
+      Assert.AreEqual(dict["k1"], dict2["k1"]);
+    }
+
+    [Test]
+    public void DeserializeEmptyStrings()
+    {
+      object v = JsonConvert.DeserializeObject<double?>("");
+      Assert.IsNull(v);
+
+      v = JsonConvert.DeserializeObject<char?>("");
+      Assert.IsNull(v);
+
+      v = JsonConvert.DeserializeObject<int?>("");
+      Assert.IsNull(v);
+
+      v = JsonConvert.DeserializeObject<decimal?>("");
+      Assert.IsNull(v);
+
+      v = JsonConvert.DeserializeObject<DateTime?>("");
+      Assert.IsNull(v);
+
+      v = JsonConvert.DeserializeObject<DateTimeOffset?>("");
+      Assert.IsNull(v);
+
+      v = JsonConvert.DeserializeObject<byte[]>("");
+      Assert.IsNull(v);
+    }
+
+    public class Sdfsdf
+    {
+      public double Id { get; set; }
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "No JSON content found and type 'System.Double' is not nullable."
+#endif
+      )]
+    public void DeserializeDoubleFromEmptyString()
+    {
+      JsonConvert.DeserializeObject<double>("");
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "No JSON content found and type 'System.StringComparison' is not nullable."
+#endif
+      )]
+    public void DeserializeEnumFromEmptyString()
+    {
+      JsonConvert.DeserializeObject<StringComparison>("");
+    }
+
+    [Test]
+    [ExpectedException(typeof (JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "No JSON content found and type 'System.Int32' is not nullable."
+#endif
+      )]
+    public void DeserializeInt32FromEmptyString()
+    {
+      JsonConvert.DeserializeObject<int>("");
+    }
+
+    [Test]
+    public void DeserializeByteArrayFromEmptyString()
+    {
+      byte[] b = JsonConvert.DeserializeObject<byte[]>("");
+      Assert.IsNull(b);
+    }
+
+    [Test]
+    [ExpectedException(typeof (ArgumentNullException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Value cannot be null.
+Parameter name: value"
+#endif
+      )]
+    public void DeserializeDoubleFromNullString()
+    {
+      JsonConvert.DeserializeObject<double>(null);
+    }
+
+    [Test]
+    [ExpectedException(typeof (ArgumentNullException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Value cannot be null.
+Parameter name: value"
+#endif
+      )]
+    public void DeserializeFromNullString()
+    {
+      JsonConvert.DeserializeObject(null);
+    }
+
+    [Test]
+    public void DeserializeIsoDatesWithIsoConverter()
+    {
+      string jsonIsoText =
+        @"{""Value"":""2012-02-25T19:55:50.6095676+13:00""}";
+
+      DateTimeWrapper c = JsonConvert.DeserializeObject<DateTimeWrapper>(jsonIsoText, new IsoDateTimeConverter());
+      Assert.AreEqual(DateTimeKind.Local, c.Value.Kind);
+    }
+
+#if !NET20
+    [Test]
+    public void DeserializeUTC()
+    {
+      DateTimeTestClass c =
+        JsonConvert.DeserializeObject<DateTimeTestClass>(
+          @"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12Z"",""PostField"":""Post""}",
+          new JsonSerializerSettings
+          {
+            DateTimeZoneHandling = DateTimeZoneHandling.Local
+          });
+
+      Assert.AreEqual(new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime(), c.DateTimeField);
+      Assert.AreEqual(new DateTimeOffset(2008, 12, 12, 12, 12, 12, 0, TimeSpan.Zero), c.DateTimeOffsetField);
+      Assert.AreEqual("Pre", c.PreField);
+      Assert.AreEqual("Post", c.PostField);
+
+      DateTimeTestClass c2 =
+        JsonConvert.DeserializeObject<DateTimeTestClass>(
+          @"{""PreField"":""Pre"",""DateTimeField"":""2008-01-01T01:01:01Z"",""DateTimeOffsetField"":""2008-01-01T01:01:01Z"",""PostField"":""Post""}",
+          new JsonSerializerSettings
+          {
+            DateTimeZoneHandling = DateTimeZoneHandling.Local
+          });
+
+      Assert.AreEqual(new DateTime(2008, 1, 1, 1, 1, 1, 0, DateTimeKind.Utc).ToLocalTime(), c2.DateTimeField);
+      Assert.AreEqual(new DateTimeOffset(2008, 1, 1, 1, 1, 1, 0, TimeSpan.Zero), c2.DateTimeOffsetField);
+      Assert.AreEqual("Pre", c2.PreField);
+      Assert.AreEqual("Post", c2.PostField);
+    }
+
+    [Test]
+    public void NullableDeserializeUTC()
+    {
+      NullableDateTimeTestClass c =
+        JsonConvert.DeserializeObject<NullableDateTimeTestClass>(
+          @"{""PreField"":""Pre"",""DateTimeField"":""2008-12-12T12:12:12Z"",""DateTimeOffsetField"":""2008-12-12T12:12:12Z"",""PostField"":""Post""}",
+          new JsonSerializerSettings
+          {
+            DateTimeZoneHandling = DateTimeZoneHandling.Local
+          });
+
+      Assert.AreEqual(new DateTime(2008, 12, 12, 12, 12, 12, 0, DateTimeKind.Utc).ToLocalTime(), c.DateTimeField);
+      Assert.AreEqual(new DateTimeOffset(2008, 12, 12, 12, 12, 12, 0, TimeSpan.Zero), c.DateTimeOffsetField);
+      Assert.AreEqual("Pre", c.PreField);
+      Assert.AreEqual("Post", c.PostField);
+
+      NullableDateTimeTestClass c2 =
+        JsonConvert.DeserializeObject<NullableDateTimeTestClass>(
+          @"{""PreField"":""Pre"",""DateTimeField"":null,""DateTimeOffsetField"":null,""PostField"":""Post""}");
+
+      Assert.AreEqual(null, c2.DateTimeField);
+      Assert.AreEqual(null, c2.DateTimeOffsetField);
+      Assert.AreEqual("Pre", c2.PreField);
+      Assert.AreEqual("Post", c2.PostField);
+    }
+
+    [Test]
+    public void PrivateConstructor()
+    {
+      var person = PersonWithPrivateConstructor.CreatePerson();
+      person.Name = "John Doe";
+      person.Age = 25;
+
+      var serializedPerson = JsonConvert.SerializeObject(person);
+      var roundtrippedPerson = JsonConvert.DeserializeObject<PersonWithPrivateConstructor>(serializedPerson);
+
+      Assert.AreEqual(person.Name, roundtrippedPerson.Name);
+    }
+#endif
+  }
+
+  public class PersonWithPrivateConstructor
+  {
+    private PersonWithPrivateConstructor()
+    { }
+
+    public static PersonWithPrivateConstructor CreatePerson()
+    {
+      return new PersonWithPrivateConstructor();
+    }
+
+    public string Name { get; set; }
+
+    public int Age { get; set; }
+  }
+
+  public class DateTimeWrapper
+  {
+    public DateTime Value { get; set; }
+  }
+
+  public class Widget1
+  {
+    public WidgetId1? Id { get; set; }
+  }
+
+  [JsonConverter(typeof(WidgetIdJsonConverter))]
+  public struct WidgetId1
+  {
+    public long Value { get; set; }
+  }
+
+  public class WidgetIdJsonConverter : JsonConverter
+  {
+    public override bool CanConvert(Type objectType)
+    {
+      return objectType == typeof(WidgetId1) || objectType == typeof(WidgetId1?);
+    }
+
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      WidgetId1 id = (WidgetId1)value;
+      writer.WriteValue(id.Value.ToString());
+    }
+
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      if (reader.TokenType == JsonToken.Null)
+        return null;
+      return new WidgetId1 { Value = int.Parse(reader.Value.ToString()) };
+    }
+  }
+
+
+  public enum MyEnum
+  {
+    Value1,
+    Value2,
+    Value3
+  }
+
+  public class WithEnums
+  {
+    public int Id { get; set; }
+    public MyEnum? NullableEnum { get; set; }
+  }
+
+  public class Item
+  {
+    public Guid SourceTypeID { get; set; }
+    public Guid BrokerID { get; set; }
+    public double Latitude { get; set; }
+    public double Longitude { get; set; }
+    public DateTime TimeStamp { get; set; }
+    [JsonProperty(TypeNameHandling = TypeNameHandling.All)]
+    public object Payload { get; set; }
+  }
+
+  public class NullableGuid
+  {
+    public Guid? Id { get; set; }
+  }
+
+  public class Widget
+  {
+    public WidgetId? Id { get; set; }
+  }
+
+  public struct WidgetId
+  {
+    public string Value { get; set; }
+  }
+
+  public class DecimalTestClass
+  {
+    public decimal Quantity { get; set; }
+    public double OptionalQuantity { get; set; }
+  }
+
+  public class TestObject
+  {
+    public TestObject()
+    {
+
+    }
+
+    public TestObject(string name, byte[] data)
+    {
+      Name = name;
+      Data = data;
+    }
+
+    public string Name { get; set; }
+    public byte[] Data { get; set; }
+  }
+
+  public class UriGuidTimeSpanTestClass
+  {
+    public Guid Guid { get; set; }
+    public Guid? NullableGuid { get; set; }
+    public TimeSpan TimeSpan { get; set; }
+    public TimeSpan? NullableTimeSpan { get; set; }
+    public Uri Uri { get; set; }
+  }
+
+  internal class Aa
+  {
+    public int no;
+  }
+
+  internal class Bb : Aa
+  {
+    public bool no;
+  }
+
+#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
+  [JsonObject(MemberSerialization.OptIn)]
+  public class GameObject
+  {
+    [JsonProperty]
+    public string Id { get; set; }
+
+    [JsonProperty]
+    public string Name { get; set; }
+
+    [JsonProperty] public ConcurrentDictionary<string, Component> Components;
+
+    public GameObject()
+    {
+      Components = new ConcurrentDictionary<string, Component>();
+    }
+
+  }
+
+  [JsonObject(MemberSerialization.OptIn)]
+  public class Component
+  {
+    [JsonIgnore] // Ignore circular reference 
+      public GameObject GameObject { get; set; }
+
+    public Component()
+    {
+    }
+  }
+
+  [JsonObject(MemberSerialization.OptIn)]
+  public class TestComponent : Component
+  {
+    [JsonProperty]
+    public int MyProperty { get; set; }
+
+    public TestComponent()
+    {
+    }
+  }
+#endif
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/MissingMemberHandlingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/MissingMemberHandlingTests.cs
@@ -1,152 +1,152 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.IO;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class MissingMemberHandlingTests : TestFixtureBase
-  {
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Could not find member 'Price' on object of type 'ProductShort'. Line 4, position 11."
-#endif
-      )]
-    public void MissingMemberDeserialize()
-    {
-      Product product = new Product();
-
-      product.Name = "Apple";
-      product.ExpiryDate = new DateTime(2008, 12, 28);
-      product.Price = 3.99M;
-      product.Sizes = new string[] { "Small", "Medium", "Large" };
-
-      string output = JsonConvert.SerializeObject(product, Formatting.Indented);
-      //{
-      //  "Name": "Apple",
-      //  "ExpiryDate": new Date(1230422400000),
-      //  "Price": 3.99,
-      //  "Sizes": [
-      //    "Small",
-      //    "Medium",
-      //    "Large"
-      //  ]
-      //}
-
-      ProductShort deserializedProductShort = (ProductShort)JsonConvert.DeserializeObject(output, typeof(ProductShort), new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error });
-    }
-
-    [Test]
-    public void MissingMemberDeserializeOkay()
-    {
-      Product product = new Product();
-
-      product.Name = "Apple";
-      product.ExpiryDate = new DateTime(2008, 12, 28);
-      product.Price = 3.99M;
-      product.Sizes = new string[] { "Small", "Medium", "Large" };
-
-      string output = JsonConvert.SerializeObject(product);
-      //{
-      //  "Name": "Apple",
-      //  "ExpiryDate": new Date(1230422400000),
-      //  "Price": 3.99,
-      //  "Sizes": [
-      //    "Small",
-      //    "Medium",
-      //    "Large"
-      //  ]
-      //}
-
-      JsonSerializer jsonSerializer = new JsonSerializer();
-      jsonSerializer.MissingMemberHandling = MissingMemberHandling.Ignore;
-
-      object deserializedValue;
-
-      using (JsonReader jsonReader = new JsonTextReader(new StringReader(output)))
-      {
-        deserializedValue = jsonSerializer.Deserialize(jsonReader, typeof(ProductShort));
-      }
-
-      ProductShort deserializedProductShort = (ProductShort)deserializedValue;
-
-      Assert.AreEqual("Apple", deserializedProductShort.Name);
-      Assert.AreEqual(new DateTime(2008, 12, 28), deserializedProductShort.ExpiryDate);
-      Assert.AreEqual("Small", deserializedProductShort.Sizes[0]);
-      Assert.AreEqual("Medium", deserializedProductShort.Sizes[1]);
-      Assert.AreEqual("Large", deserializedProductShort.Sizes[2]);
-    }
-
-    [Test]
-    public void MissingMemberIgnoreComplexValue()
-    {
-      JsonSerializer serializer = new JsonSerializer { MissingMemberHandling = MissingMemberHandling.Ignore };
-      serializer.Converters.Add(new JavaScriptDateTimeConverter());
-
-      string response = @"{""PreProperty"":1,""DateProperty"":new Date(1225962698973),""PostProperty"":2}";
-
-      MyClass myClass = (MyClass)serializer.Deserialize(new StringReader(response), typeof(MyClass));
-
-      Assert.AreEqual(1, myClass.PreProperty);
-      Assert.AreEqual(2, myClass.PostProperty);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Could not find member 'Missing' on object of type 'DoubleClass'. Line 1, position 11."
-#endif
-      )]
-    public void MissingMemeber()
-    {
-      string json = @"{""Missing"":1}";
-
-      JsonConvert.DeserializeObject<DoubleClass>(json, new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error });
-    }
-
-    [Test]
-    public void MissingJson()
-    {
-      string json = @"{}";
-
-      JsonConvert.DeserializeObject<DoubleClass>(json, new JsonSerializerSettings
-        {
-          MissingMemberHandling = MissingMemberHandling.Error
-        });
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.IO;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class MissingMemberHandlingTests : TestFixtureBase
+  {
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Could not find member 'Price' on object of type 'ProductShort'. Line 4, position 11."
+#endif
+      )]
+    public void MissingMemberDeserialize()
+    {
+      Product product = new Product();
+
+      product.Name = "Apple";
+      product.ExpiryDate = new DateTime(2008, 12, 28);
+      product.Price = 3.99M;
+      product.Sizes = new string[] { "Small", "Medium", "Large" };
+
+      string output = JsonConvert.SerializeObject(product, Formatting.Indented);
+      //{
+      //  "Name": "Apple",
+      //  "ExpiryDate": new Date(1230422400000),
+      //  "Price": 3.99,
+      //  "Sizes": [
+      //    "Small",
+      //    "Medium",
+      //    "Large"
+      //  ]
+      //}
+
+      ProductShort deserializedProductShort = (ProductShort)JsonConvert.DeserializeObject(output, typeof(ProductShort), new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error });
+    }
+
+    [Test]
+    public void MissingMemberDeserializeOkay()
+    {
+      Product product = new Product();
+
+      product.Name = "Apple";
+      product.ExpiryDate = new DateTime(2008, 12, 28);
+      product.Price = 3.99M;
+      product.Sizes = new string[] { "Small", "Medium", "Large" };
+
+      string output = JsonConvert.SerializeObject(product);
+      //{
+      //  "Name": "Apple",
+      //  "ExpiryDate": new Date(1230422400000),
+      //  "Price": 3.99,
+      //  "Sizes": [
+      //    "Small",
+      //    "Medium",
+      //    "Large"
+      //  ]
+      //}
+
+      JsonSerializer jsonSerializer = new JsonSerializer();
+      jsonSerializer.MissingMemberHandling = MissingMemberHandling.Ignore;
+
+      object deserializedValue;
+
+      using (JsonReader jsonReader = new JsonTextReader(new StringReader(output)))
+      {
+        deserializedValue = jsonSerializer.Deserialize(jsonReader, typeof(ProductShort));
+      }
+
+      ProductShort deserializedProductShort = (ProductShort)deserializedValue;
+
+      Assert.AreEqual("Apple", deserializedProductShort.Name);
+      Assert.AreEqual(new DateTime(2008, 12, 28), deserializedProductShort.ExpiryDate);
+      Assert.AreEqual("Small", deserializedProductShort.Sizes[0]);
+      Assert.AreEqual("Medium", deserializedProductShort.Sizes[1]);
+      Assert.AreEqual("Large", deserializedProductShort.Sizes[2]);
+    }
+
+    [Test]
+    public void MissingMemberIgnoreComplexValue()
+    {
+      JsonSerializer serializer = new JsonSerializer { MissingMemberHandling = MissingMemberHandling.Ignore };
+      serializer.Converters.Add(new JavaScriptDateTimeConverter());
+
+      string response = @"{""PreProperty"":1,""DateProperty"":new Date(1225962698973),""PostProperty"":2}";
+
+      MyClass myClass = (MyClass)serializer.Deserialize(new StringReader(response), typeof(MyClass));
+
+      Assert.AreEqual(1, myClass.PreProperty);
+      Assert.AreEqual(2, myClass.PostProperty);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Could not find member 'Missing' on object of type 'DoubleClass'. Line 1, position 11."
+#endif
+      )]
+    public void MissingMemeber()
+    {
+      string json = @"{""Missing"":1}";
+
+      JsonConvert.DeserializeObject<DoubleClass>(json, new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error });
+    }
+
+    [Test]
+    public void MissingJson()
+    {
+      string json = @"{}";
+
+      JsonConvert.DeserializeObject<DoubleClass>(json, new JsonSerializerSettings
+        {
+          MissingMemberHandling = MissingMemberHandling.Error
+        });
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/NullValueHandlingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/NullValueHandlingTests.cs
@@ -1,128 +1,128 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class NullValueHandlingTests : TestFixtureBase
-  {
-    [Test]
-    public void DeserializeNullIntoDateTime()
-    {
-      DateTimeTestClass c = JsonConvert.DeserializeObject<DateTimeTestClass>(@"{DateTimeField:null}", new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
-      Assert.AreEqual(c.DateTimeField, default(DateTime));
-    }
-
-    [Test]
-    public void DeserializeEmptyStringIntoDateTimeWithEmptyStringDefaultValue()
-    {
-      DateTimeTestClass c = JsonConvert.DeserializeObject<DateTimeTestClass>(@"{DateTimeField:""""}", new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
-      Assert.AreEqual(c.DateTimeField, default(DateTime));
-    }
-
-    [Test]
-    public void NullValueHandlingSerialization()
-    {
-      Store s1 = new Store();
-
-      JsonSerializer jsonSerializer = new JsonSerializer();
-      jsonSerializer.NullValueHandling = NullValueHandling.Ignore;
-
-      StringWriter sw = new StringWriter();
-      jsonSerializer.Serialize(sw, s1);
-
-      //JsonConvert.ConvertDateTimeToJavaScriptTicks(s1.Establised.DateTime)
-
-      Assert.AreEqual(@"{""Color"":4,""Establised"":""2010-01-22T01:01:01Z"",""Width"":1.1,""Employees"":999,""RoomsPerFloor"":[1,2,3,4,5,6,7,8,9],""Open"":false,""Symbol"":""@"",""Mottos"":[""Hello World"",""öäüÖÄÜ\\'{new Date(12345);}[222]_µ@²³~"",null,"" ""],""Cost"":100980.1,""Escape"":""\r\n\t\f\b?{\\r\\n\""'"",""product"":[{""Name"":""Rocket"",""ExpiryDate"":""2000-02-02T23:01:30Z"",""Price"":0.0},{""Name"":""Alien"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0}]}", sw.GetStringBuilder().ToString());
-
-      Store s2 = (Store)jsonSerializer.Deserialize(new JsonTextReader(new StringReader("{}")), typeof(Store));
-      Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", s2.Escape);
-
-      Store s3 = (Store)jsonSerializer.Deserialize(new JsonTextReader(new StringReader(@"{""Escape"":null}")), typeof(Store));
-      Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", s3.Escape);
-
-      Store s4 = (Store)jsonSerializer.Deserialize(new JsonTextReader(new StringReader(@"{""Color"":2,""Establised"":""\/Date(1264071600000+1300)\/"",""Width"":1.1,""Employees"":999,""RoomsPerFloor"":[1,2,3,4,5,6,7,8,9],""Open"":false,""Symbol"":""@"",""Mottos"":[""Hello World"",""öäüÖÄÜ\\'{new Date(12345);}[222]_µ@²³~"",null,"" ""],""Cost"":100980.1,""Escape"":""\r\n\t\f\b?{\\r\\n\""'"",""product"":[{""Name"":""Rocket"",""ExpiryDate"":""\/Date(949485690000+1300)\/"",""Price"":0},{""Name"":""Alien"",""ExpiryDate"":""\/Date(946638000000)\/"",""Price"":0.0}]}")), typeof(Store));
-      Assert.AreEqual(s1.Establised, s3.Establised);
-    }
-
-    [Test]
-    public void NullValueHandlingBlogPost()
-    {
-      Movie movie = new Movie();
-      movie.Name = "Bad Boys III";
-      movie.Description = "It's no Bad Boys";
-
-      string included = JsonConvert.SerializeObject(movie,
-        Formatting.Indented,
-        new JsonSerializerSettings { });
-
-      // {
-      //   "Name": "Bad Boys III",
-      //   "Description": "It's no Bad Boys",
-      //   "Classification": null,
-      //   "Studio": null,
-      //   "ReleaseDate": null,
-      //   "ReleaseCountries": null
-      // }
-
-      string ignored = JsonConvert.SerializeObject(movie,
-        Formatting.Indented,
-        new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
-
-      // {
-      //   "Name": "Bad Boys III",
-      //   "Description": "It's no Bad Boys"
-      // }
-
-      Assert.AreEqual(@"{
-  ""Name"": ""Bad Boys III"",
-  ""Description"": ""It's no Bad Boys"",
-  ""Classification"": null,
-  ""Studio"": null,
-  ""ReleaseDate"": null,
-  ""ReleaseCountries"": null
-}", included);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""Bad Boys III"",
-  ""Description"": ""It's no Bad Boys""
-}", ignored);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class NullValueHandlingTests : TestFixtureBase
+  {
+    [Test]
+    public void DeserializeNullIntoDateTime()
+    {
+      DateTimeTestClass c = JsonConvert.DeserializeObject<DateTimeTestClass>(@"{DateTimeField:null}", new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
+      Assert.AreEqual(c.DateTimeField, default(DateTime));
+    }
+
+    [Test]
+    public void DeserializeEmptyStringIntoDateTimeWithEmptyStringDefaultValue()
+    {
+      DateTimeTestClass c = JsonConvert.DeserializeObject<DateTimeTestClass>(@"{DateTimeField:""""}", new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
+      Assert.AreEqual(c.DateTimeField, default(DateTime));
+    }
+
+    [Test]
+    public void NullValueHandlingSerialization()
+    {
+      Store s1 = new Store();
+
+      JsonSerializer jsonSerializer = new JsonSerializer();
+      jsonSerializer.NullValueHandling = NullValueHandling.Ignore;
+
+      StringWriter sw = new StringWriter();
+      jsonSerializer.Serialize(sw, s1);
+
+      //JsonConvert.ConvertDateTimeToJavaScriptTicks(s1.Establised.DateTime)
+
+      Assert.AreEqual(@"{""Color"":4,""Establised"":""2010-01-22T01:01:01Z"",""Width"":1.1,""Employees"":999,""RoomsPerFloor"":[1,2,3,4,5,6,7,8,9],""Open"":false,""Symbol"":""@"",""Mottos"":[""Hello World"",""öäüÖÄÜ\\'{new Date(12345);}[222]_µ@²³~"",null,"" ""],""Cost"":100980.1,""Escape"":""\r\n\t\f\b?{\\r\\n\""'"",""product"":[{""Name"":""Rocket"",""ExpiryDate"":""2000-02-02T23:01:30Z"",""Price"":0.0},{""Name"":""Alien"",""ExpiryDate"":""2000-01-01T00:00:00Z"",""Price"":0.0}]}", sw.GetStringBuilder().ToString());
+
+      Store s2 = (Store)jsonSerializer.Deserialize(new JsonTextReader(new StringReader("{}")), typeof(Store));
+      Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", s2.Escape);
+
+      Store s3 = (Store)jsonSerializer.Deserialize(new JsonTextReader(new StringReader(@"{""Escape"":null}")), typeof(Store));
+      Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", s3.Escape);
+
+      Store s4 = (Store)jsonSerializer.Deserialize(new JsonTextReader(new StringReader(@"{""Color"":2,""Establised"":""\/Date(1264071600000+1300)\/"",""Width"":1.1,""Employees"":999,""RoomsPerFloor"":[1,2,3,4,5,6,7,8,9],""Open"":false,""Symbol"":""@"",""Mottos"":[""Hello World"",""öäüÖÄÜ\\'{new Date(12345);}[222]_µ@²³~"",null,"" ""],""Cost"":100980.1,""Escape"":""\r\n\t\f\b?{\\r\\n\""'"",""product"":[{""Name"":""Rocket"",""ExpiryDate"":""\/Date(949485690000+1300)\/"",""Price"":0},{""Name"":""Alien"",""ExpiryDate"":""\/Date(946638000000)\/"",""Price"":0.0}]}")), typeof(Store));
+      Assert.AreEqual(s1.Establised, s3.Establised);
+    }
+
+    [Test]
+    public void NullValueHandlingBlogPost()
+    {
+      Movie movie = new Movie();
+      movie.Name = "Bad Boys III";
+      movie.Description = "It's no Bad Boys";
+
+      string included = JsonConvert.SerializeObject(movie,
+        Formatting.Indented,
+        new JsonSerializerSettings { });
+
+      // {
+      //   "Name": "Bad Boys III",
+      //   "Description": "It's no Bad Boys",
+      //   "Classification": null,
+      //   "Studio": null,
+      //   "ReleaseDate": null,
+      //   "ReleaseCountries": null
+      // }
+
+      string ignored = JsonConvert.SerializeObject(movie,
+        Formatting.Indented,
+        new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
+
+      // {
+      //   "Name": "Bad Boys III",
+      //   "Description": "It's no Bad Boys"
+      // }
+
+      Assert.AreEqual(@"{
+  ""Name"": ""Bad Boys III"",
+  ""Description"": ""It's no Bad Boys"",
+  ""Classification"": null,
+  ""Studio"": null,
+  ""ReleaseDate"": null,
+  ""ReleaseCountries"": null
+}", included);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""Bad Boys III"",
+  ""Description"": ""It's no Bad Boys""
+}", ignored);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/PopulateTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/PopulateTests.cs
@@ -1,150 +1,150 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class PopulateTests : TestFixtureBase
-  {
-    [Test]
-    public void PopulatePerson()
-    {
-      Person p = new Person();
-
-      JsonConvert.PopulateObject(@"{""Name"":""James""}", p);
-
-      Assert.AreEqual("James", p.Name);
-    }
-
-    [Test]
-    public void PopulateStore()
-    {
-      Store s = new Store();
-      s.Color = StoreColor.Red;
-      s.product = new List<Product>
-        {
-          new Product
-            {
-              ExpiryDate = new DateTime(2000, 12, 3, 0, 0, 0, DateTimeKind.Utc),
-              Name = "ProductName!",
-              Price = 9.9m
-            }
-        };
-      s.Width = 99.99d;
-      s.Mottos = new List<string> { "Can do!", "We deliver!" };
-
-      string json = @"{
-  ""Color"": 2,
-  ""Establised"": ""\/Date(1264122061000+0000)\/"",
-  ""Width"": 99.99,
-  ""Employees"": 999,
-  ""RoomsPerFloor"": [
-    1,
-    2,
-    3,
-    4,
-    5,
-    6,
-    7,
-    8,
-    9
-  ],
-  ""Open"": false,
-  ""Symbol"": ""@"",
-  ""Mottos"": [
-    ""Fail whale""
-  ],
-  ""Cost"": 100980.1,
-  ""Escape"": ""\r\n\t\f\b?{\\r\\n\""'"",
-  ""product"": [
-    {
-      ""Name"": ""ProductName!"",
-      ""ExpiryDate"": ""\/Date(975801600000)\/"",
-      ""Price"": 9.9,
-      ""Sizes"": null
-    }
-  ]
-}";
-
-      JsonConvert.PopulateObject(json, s, new JsonSerializerSettings
-        {
-          ObjectCreationHandling = ObjectCreationHandling.Replace
-        });
-
-      Assert.AreEqual(1, s.Mottos.Count);
-      Assert.AreEqual("Fail whale", s.Mottos[0]);
-      Assert.AreEqual(1, s.product.Count);
-
-      //Assert.AreEqual("James", p.Name);
-    }
-
-    [Test]
-    public void PopulateListOfPeople()
-    {
-      List<Person> p = new List<Person>();
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Populate(new StringReader(@"[{""Name"":""James""},{""Name"":""Jim""}]"), p);
-
-      Assert.AreEqual(2, p.Count);
-      Assert.AreEqual("James", p[0].Name);
-      Assert.AreEqual("Jim", p[1].Name);
-    }
-
-    [Test]
-    public void PopulateDictionary()
-    {
-      Dictionary<string, string> p = new Dictionary<string, string>();
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Populate(new StringReader(@"{""Name"":""James""}"), p);
-
-      Assert.AreEqual(1, p.Count);
-      Assert.AreEqual("James", p["Name"]);
-    }
-
-    [Test]
-    public void PopulateWithBadJson()
-    {
-      ExceptionAssert.Throws<JsonSerializationException>("Unexpected initial token 'Integer' when populating object. Expected JSON object or array. Line 1, position 1.",
-        () =>
-        {
-          JsonConvert.PopulateObject("1", new Person());
-        });
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class PopulateTests : TestFixtureBase
+  {
+    [Test]
+    public void PopulatePerson()
+    {
+      Person p = new Person();
+
+      JsonConvert.PopulateObject(@"{""Name"":""James""}", p);
+
+      Assert.AreEqual("James", p.Name);
+    }
+
+    [Test]
+    public void PopulateStore()
+    {
+      Store s = new Store();
+      s.Color = StoreColor.Red;
+      s.product = new List<Product>
+        {
+          new Product
+            {
+              ExpiryDate = new DateTime(2000, 12, 3, 0, 0, 0, DateTimeKind.Utc),
+              Name = "ProductName!",
+              Price = 9.9m
+            }
+        };
+      s.Width = 99.99d;
+      s.Mottos = new List<string> { "Can do!", "We deliver!" };
+
+      string json = @"{
+  ""Color"": 2,
+  ""Establised"": ""\/Date(1264122061000+0000)\/"",
+  ""Width"": 99.99,
+  ""Employees"": 999,
+  ""RoomsPerFloor"": [
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    8,
+    9
+  ],
+  ""Open"": false,
+  ""Symbol"": ""@"",
+  ""Mottos"": [
+    ""Fail whale""
+  ],
+  ""Cost"": 100980.1,
+  ""Escape"": ""\r\n\t\f\b?{\\r\\n\""'"",
+  ""product"": [
+    {
+      ""Name"": ""ProductName!"",
+      ""ExpiryDate"": ""\/Date(975801600000)\/"",
+      ""Price"": 9.9,
+      ""Sizes"": null
+    }
+  ]
+}";
+
+      JsonConvert.PopulateObject(json, s, new JsonSerializerSettings
+        {
+          ObjectCreationHandling = ObjectCreationHandling.Replace
+        });
+
+      Assert.AreEqual(1, s.Mottos.Count);
+      Assert.AreEqual("Fail whale", s.Mottos[0]);
+      Assert.AreEqual(1, s.product.Count);
+
+      //Assert.AreEqual("James", p.Name);
+    }
+
+    [Test]
+    public void PopulateListOfPeople()
+    {
+      List<Person> p = new List<Person>();
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Populate(new StringReader(@"[{""Name"":""James""},{""Name"":""Jim""}]"), p);
+
+      Assert.AreEqual(2, p.Count);
+      Assert.AreEqual("James", p[0].Name);
+      Assert.AreEqual("Jim", p[1].Name);
+    }
+
+    [Test]
+    public void PopulateDictionary()
+    {
+      Dictionary<string, string> p = new Dictionary<string, string>();
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Populate(new StringReader(@"{""Name"":""James""}"), p);
+
+      Assert.AreEqual(1, p.Count);
+      Assert.AreEqual("James", p["Name"]);
+    }
+
+    [Test]
+    public void PopulateWithBadJson()
+    {
+      ExceptionAssert.Throws<JsonSerializationException>("Unexpected initial token 'Integer' when populating object. Expected JSON object or array. Line 1, position 1.",
+        () =>
+        {
+          JsonConvert.PopulateObject("1", new Person());
+        });
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/PreserveReferencesHandlingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/PreserveReferencesHandlingTests.cs
@@ -1,876 +1,876 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class PreserveReferencesHandlingTests : TestFixtureBase
-  {
-    [Test]
-    public void SerializeDictionarysWithPreserveObjectReferences()
-    {
-      CircularDictionary circularDictionary = new CircularDictionary();
-      circularDictionary.Add("other", new CircularDictionary { { "blah", null } });
-      circularDictionary.Add("self", circularDictionary);
-
-      string json = JsonConvert.SerializeObject(circularDictionary, Formatting.Indented,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""other"": {
-    ""$id"": ""2"",
-    ""blah"": null
-  },
-  ""self"": {
-    ""$ref"": ""1""
-  }
-}", json);
-    }
-
-    [Test]
-    public void DeserializeDictionarysWithPreserveObjectReferences()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""other"": {
-    ""$id"": ""2"",
-    ""blah"": null
-  },
-  ""self"": {
-    ""$ref"": ""1""
-  }
-}";
-
-      CircularDictionary circularDictionary = JsonConvert.DeserializeObject<CircularDictionary>(json,
-        new JsonSerializerSettings
-        {
-          PreserveReferencesHandling = PreserveReferencesHandling.All
-        });
-
-      Assert.AreEqual(2, circularDictionary.Count);
-      Assert.AreEqual(1, circularDictionary["other"].Count);
-      Assert.AreEqual(circularDictionary, circularDictionary["self"]);
-    }
-
-    public class CircularList : List<CircularList>
-    {
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException))]
-    public void SerializeCircularListsError()
-    {
-      CircularList circularList = new CircularList();
-      circularList.Add(null);
-      circularList.Add(new CircularList { null });
-      circularList.Add(new CircularList { new CircularList { circularList } });
-
-      JsonConvert.SerializeObject(circularList, Formatting.Indented);
-    }
-
-    [Test]
-    public void SerializeCircularListsIgnore()
-    {
-      CircularList circularList = new CircularList();
-      circularList.Add(null);
-      circularList.Add(new CircularList { null });
-      circularList.Add(new CircularList { new CircularList { circularList } });
-
-      string json = JsonConvert.SerializeObject(circularList,
-                                                Formatting.Indented,
-                                                new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
-
-      Assert.AreEqual(@"[
-  null,
-  [
-    null
-  ],
-  [
-    []
-  ]
-]", json);
-    }
-
-    [Test]
-    public void SerializeListsWithPreserveObjectReferences()
-    {
-      CircularList circularList = new CircularList();
-      circularList.Add(null);
-      circularList.Add(new CircularList { null });
-      circularList.Add(new CircularList { new CircularList { circularList } });
-
-      string json = JsonConvert.SerializeObject(circularList, Formatting.Indented,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""$values"": [
-    null,
-    {
-      ""$id"": ""2"",
-      ""$values"": [
-        null
-      ]
-    },
-    {
-      ""$id"": ""3"",
-      ""$values"": [
-        {
-          ""$id"": ""4"",
-          ""$values"": [
-            {
-              ""$ref"": ""1""
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}", json);
-    }
-
-    [Test]
-    public void DeserializeListsWithPreserveObjectReferences()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""$values"": [
-    null,
-    {
-      ""$id"": ""2"",
-      ""$values"": [
-        null
-      ]
-    },
-    {
-      ""$id"": ""3"",
-      ""$values"": [
-        {
-          ""$id"": ""4"",
-          ""$values"": [
-            {
-              ""$ref"": ""1""
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}";
-
-      CircularList circularList = JsonConvert.DeserializeObject<CircularList>(json,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
-
-      Assert.AreEqual(3, circularList.Count);
-      Assert.AreEqual(null, circularList[0]);
-      Assert.AreEqual(1, circularList[1].Count);
-      Assert.AreEqual(1, circularList[2].Count);
-      Assert.AreEqual(1, circularList[2][0].Count);
-      Assert.IsTrue(ReferenceEquals(circularList, circularList[2][0][0]));
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Cannot preserve reference to array or readonly list: System.String[][]. Line 3, position 15."
-#endif
-      )]
-    public void DeserializeArraysWithPreserveObjectReferences()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""$values"": [
-    null,
-    {
-      ""$id"": ""2"",
-      ""$values"": [
-        null
-      ]
-    },
-    {
-      ""$id"": ""3"",
-      ""$values"": [
-        {
-          ""$id"": ""4"",
-          ""$values"": [
-            {
-              ""$ref"": ""1""
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}";
-
-      JsonConvert.DeserializeObject<string[][]>(json,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
-    }
-
-    public class CircularDictionary : Dictionary<string, CircularDictionary>
-    {
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException))]
-    public void SerializeCircularDictionarysError()
-    {
-      CircularDictionary circularDictionary = new CircularDictionary();
-      circularDictionary.Add("other", new CircularDictionary { { "blah", null } });
-      circularDictionary.Add("self", circularDictionary);
-
-      JsonConvert.SerializeObject(circularDictionary, Formatting.Indented);
-    }
-
-    [Test]
-    public void SerializeCircularDictionarysIgnore()
-    {
-      CircularDictionary circularDictionary = new CircularDictionary();
-      circularDictionary.Add("other", new CircularDictionary { { "blah", null } });
-      circularDictionary.Add("self", circularDictionary);
-
-      string json = JsonConvert.SerializeObject(circularDictionary, Formatting.Indented,
-        new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
-
-      Assert.AreEqual(@"{
-  ""other"": {
-    ""blah"": null
-  }
-}", json);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = @"Unexpected end when deserializing object. Line 2, position 9."
-#endif
-      )]
-    public void UnexpectedEnd()
-    {
-      string json = @"{
-  ""$id"":";
-
-      JsonConvert.DeserializeObject<string[][]>(json,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
-    }
-
-    public class CircularReferenceClassConverter : JsonConverter
-    {
-      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-      {
-        CircularReferenceClass circularReferenceClass = (CircularReferenceClass)value;
-
-        string reference = serializer.ReferenceResolver.GetReference(serializer, circularReferenceClass);
-
-        JObject me = new JObject();
-        me["$id"] = new JValue(reference);
-        me["$type"] = new JValue(value.GetType().Name);
-        me["Name"] = new JValue(circularReferenceClass.Name);
-
-        JObject o = JObject.FromObject(circularReferenceClass.Child, serializer);
-        me["Child"] = o;
-
-        me.WriteTo(writer);
-      }
-
-      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-      {
-        JObject o = JObject.Load(reader);
-        string id = (string)o["$id"];
-        if (id != null)
-        {
-          CircularReferenceClass circularReferenceClass = new CircularReferenceClass();
-          serializer.Populate(o.CreateReader(), circularReferenceClass);
-          return circularReferenceClass;
-        }
-        else
-        {
-          string reference = (string)o["$ref"];
-          return serializer.ReferenceResolver.ResolveReference(serializer, reference);
-        }
-      }
-
-      public override bool CanConvert(Type objectType)
-      {
-        return (objectType == typeof(CircularReferenceClass));
-      }
-    }
-
-    [Test]
-    public void SerializeCircularReferencesWithConverter()
-    {
-      CircularReferenceClass c1 = new CircularReferenceClass { Name = "c1" };
-      CircularReferenceClass c2 = new CircularReferenceClass { Name = "c2" };
-      CircularReferenceClass c3 = new CircularReferenceClass { Name = "c3" };
-
-      c1.Child = c2;
-      c2.Child = c3;
-      c3.Child = c1;
-
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented, new JsonSerializerSettings
-      {
-        PreserveReferencesHandling = PreserveReferencesHandling.Objects,
-        Converters = new List<JsonConverter> { new CircularReferenceClassConverter() }
-      });
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""$type"": ""CircularReferenceClass"",
-  ""Name"": ""c1"",
-  ""Child"": {
-    ""$id"": ""2"",
-    ""$type"": ""CircularReferenceClass"",
-    ""Name"": ""c2"",
-    ""Child"": {
-      ""$id"": ""3"",
-      ""$type"": ""CircularReferenceClass"",
-      ""Name"": ""c3"",
-      ""Child"": {
-        ""$ref"": ""1""
-      }
-    }
-  }
-}", json);
-    }
-
-    [Test]
-    public void DeserializeCircularReferencesWithConverter()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""$type"": ""CircularReferenceClass"",
-  ""Name"": ""c1"",
-  ""Child"": {
-    ""$id"": ""2"",
-    ""$type"": ""CircularReferenceClass"",
-    ""Name"": ""c2"",
-    ""Child"": {
-      ""$id"": ""3"",
-      ""$type"": ""CircularReferenceClass"",
-      ""Name"": ""c3"",
-      ""Child"": {
-        ""$ref"": ""1""
-      }
-    }
-  }
-}";
-
-      CircularReferenceClass c1 = JsonConvert.DeserializeObject<CircularReferenceClass>(json, new JsonSerializerSettings
-      {
-        PreserveReferencesHandling = PreserveReferencesHandling.Objects,
-        Converters = new List<JsonConverter> { new CircularReferenceClassConverter() }
-      });
-
-      Assert.AreEqual("c1", c1.Name);
-      Assert.AreEqual("c2", c1.Child.Name);
-      Assert.AreEqual("c3", c1.Child.Child.Name);
-      Assert.AreEqual("c1", c1.Child.Child.Child.Name);
-    }
-
-    [Test]
-    public void SerializeEmployeeReference()
-    {
-      EmployeeReference mikeManager = new EmployeeReference
-      {
-        Name = "Mike Manager"
-      };
-      EmployeeReference joeUser = new EmployeeReference
-      {
-        Name = "Joe User",
-        Manager = mikeManager
-      };
-
-      List<EmployeeReference> employees = new List<EmployeeReference>
-        {
-          mikeManager,
-          joeUser
-        };
-
-      string json = JsonConvert.SerializeObject(employees, Formatting.Indented);
-      Assert.AreEqual(@"[
-  {
-    ""$id"": ""1"",
-    ""Name"": ""Mike Manager"",
-    ""Manager"": null
-  },
-  {
-    ""$id"": ""2"",
-    ""Name"": ""Joe User"",
-    ""Manager"": {
-      ""$ref"": ""1""
-    }
-  }
-]", json);
-    }
-
-    [Test]
-    public void DeserializeEmployeeReference()
-    {
-      string json = @"[
-  {
-    ""$id"": ""1"",
-    ""Name"": ""Mike Manager"",
-    ""Manager"": null
-  },
-  {
-    ""$id"": ""2"",
-    ""Name"": ""Joe User"",
-    ""Manager"": {
-      ""$ref"": ""1""
-    }
-  }
-]";
-
-      List<EmployeeReference> employees = JsonConvert.DeserializeObject<List<EmployeeReference>>(json);
-
-      Assert.AreEqual(2, employees.Count);
-      Assert.AreEqual("Mike Manager", employees[0].Name);
-      Assert.AreEqual("Joe User", employees[1].Name);
-      Assert.AreEqual(employees[0], employees[1].Manager);
-    }
-
-    [Test]
-    public void SerializeCircularReference()
-    {
-      CircularReferenceClass c1 = new CircularReferenceClass { Name = "c1" };
-      CircularReferenceClass c2 = new CircularReferenceClass { Name = "c2" };
-      CircularReferenceClass c3 = new CircularReferenceClass { Name = "c3" };
-
-      c1.Child = c2;
-      c2.Child = c3;
-      c3.Child = c1;
-
-      string json = JsonConvert.SerializeObject(c1, Formatting.Indented, new JsonSerializerSettings
-      {
-        PreserveReferencesHandling = PreserveReferencesHandling.Objects
-      });
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""Name"": ""c1"",
-  ""Child"": {
-    ""$id"": ""2"",
-    ""Name"": ""c2"",
-    ""Child"": {
-      ""$id"": ""3"",
-      ""Name"": ""c3"",
-      ""Child"": {
-        ""$ref"": ""1""
-      }
-    }
-  }
-}", json);
-    }
-
-    [Test]
-    public void DeserializeCircularReference()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""Name"": ""c1"",
-  ""Child"": {
-    ""$id"": ""2"",
-    ""Name"": ""c2"",
-    ""Child"": {
-      ""$id"": ""3"",
-      ""Name"": ""c3"",
-      ""Child"": {
-        ""$ref"": ""1""
-      }
-    }
-  }
-}";
-
-      CircularReferenceClass c1 =
-        JsonConvert.DeserializeObject<CircularReferenceClass>(json, new JsonSerializerSettings
-        {
-          PreserveReferencesHandling = PreserveReferencesHandling.Objects
-        });
-
-      Assert.AreEqual("c1", c1.Name);
-      Assert.AreEqual("c2", c1.Child.Name);
-      Assert.AreEqual("c3", c1.Child.Child.Name);
-      Assert.AreEqual("c1", c1.Child.Child.Child.Name);
-    }
-
-    [Test]
-    public void SerializeReferenceInList()
-    {
-      EmployeeReference e1 = new EmployeeReference { Name = "e1" };
-      EmployeeReference e2 = new EmployeeReference { Name = "e2" };
-
-      List<EmployeeReference> employees = new List<EmployeeReference> { e1, e2, e1, e2 };
-
-      string json = JsonConvert.SerializeObject(employees, Formatting.Indented);
-
-      Assert.AreEqual(@"[
-  {
-    ""$id"": ""1"",
-    ""Name"": ""e1"",
-    ""Manager"": null
-  },
-  {
-    ""$id"": ""2"",
-    ""Name"": ""e2"",
-    ""Manager"": null
-  },
-  {
-    ""$ref"": ""1""
-  },
-  {
-    ""$ref"": ""2""
-  }
-]", json);
-    }
-
-    [Test]
-    public void DeserializeReferenceInList()
-    {
-      string json = @"[
-  {
-    ""$id"": ""1"",
-    ""Name"": ""e1"",
-    ""Manager"": null
-  },
-  {
-    ""$id"": ""2"",
-    ""Name"": ""e2"",
-    ""Manager"": null
-  },
-  {
-    ""$ref"": ""1""
-  },
-  {
-    ""$ref"": ""2""
-  }
-]";
-
-      List<EmployeeReference> employees = JsonConvert.DeserializeObject<List<EmployeeReference>>(json);
-      Assert.AreEqual(4, employees.Count);
-
-      Assert.AreEqual("e1", employees[0].Name);
-      Assert.AreEqual("e2", employees[1].Name);
-      Assert.AreEqual("e1", employees[2].Name);
-      Assert.AreEqual("e2", employees[3].Name);
-
-      Assert.AreEqual(employees[0], employees[2]);
-      Assert.AreEqual(employees[1], employees[3]);
-    }
-
-    [Test]
-    public void SerializeReferenceInDictionary()
-    {
-      EmployeeReference e1 = new EmployeeReference { Name = "e1" };
-      EmployeeReference e2 = new EmployeeReference { Name = "e2" };
-
-      Dictionary<string, EmployeeReference> employees = new Dictionary<string, EmployeeReference>
-        {
-          {"One", e1},
-          {"Two", e2},
-          {"Three", e1},
-          {"Four", e2}
-        };
-
-      string json = JsonConvert.SerializeObject(employees, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""One"": {
-    ""$id"": ""1"",
-    ""Name"": ""e1"",
-    ""Manager"": null
-  },
-  ""Two"": {
-    ""$id"": ""2"",
-    ""Name"": ""e2"",
-    ""Manager"": null
-  },
-  ""Three"": {
-    ""$ref"": ""1""
-  },
-  ""Four"": {
-    ""$ref"": ""2""
-  }
-}", json);
-    }
-
-    [Test]
-    public void DeserializeReferenceInDictionary()
-    {
-      string json = @"{
-  ""One"": {
-    ""$id"": ""1"",
-    ""Name"": ""e1"",
-    ""Manager"": null
-  },
-  ""Two"": {
-    ""$id"": ""2"",
-    ""Name"": ""e2"",
-    ""Manager"": null
-  },
-  ""Three"": {
-    ""$ref"": ""1""
-  },
-  ""Four"": {
-    ""$ref"": ""2""
-  }
-}";
-
-      Dictionary<string, EmployeeReference> employees = JsonConvert.DeserializeObject<Dictionary<string, EmployeeReference>>(json);
-      Assert.AreEqual(4, employees.Count);
-
-      EmployeeReference e1 = employees["One"];
-      EmployeeReference e2 = employees["Two"];
-
-      Assert.AreEqual("e1", e1.Name);
-      Assert.AreEqual("e2", e2.Name);
-
-      Assert.AreEqual(e1, employees["Three"]);
-      Assert.AreEqual(e2, employees["Four"]);
-    }
-
-    [Test]
-    public void ExampleWithout()
-    {
-      Person p = new Person
-        {
-          BirthDate = new DateTime(1980, 12, 23, 0, 0, 0, DateTimeKind.Utc),
-          LastModified = new DateTime(2009, 2, 20, 12, 59, 21, DateTimeKind.Utc),
-          Department = "IT",
-          Name = "James"
-        };
-
-      List<Person> people = new List<Person>();
-      people.Add(p);
-      people.Add(p);
-
-      string json = JsonConvert.SerializeObject(people, Formatting.Indented);
-      //[
-      //  {
-      //    "Name": "James",
-      //    "BirthDate": "\/Date(346377600000)\/",
-      //    "LastModified": "\/Date(1235134761000)\/"
-      //  },
-      //  {
-      //    "Name": "James",
-      //    "BirthDate": "\/Date(346377600000)\/",
-      //    "LastModified": "\/Date(1235134761000)\/"
-      //  }
-      //]
-    }
-
-    [Test]
-    public void ExampleWith()
-    {
-      Person p = new Person
-      {
-        BirthDate = new DateTime(1980, 12, 23, 0, 0, 0, DateTimeKind.Utc),
-        LastModified = new DateTime(2009, 2, 20, 12, 59, 21, DateTimeKind.Utc),
-        Department = "IT",
-        Name = "James"
-      };
-
-      List<Person> people = new List<Person>();
-      people.Add(p);
-      people.Add(p);
-
-      string json = JsonConvert.SerializeObject(people, Formatting.Indented,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });
-      //[
-      //  {
-      //    "$id": "1",
-      //    "Name": "James",
-      //    "BirthDate": "\/Date(346377600000)\/",
-      //    "LastModified": "\/Date(1235134761000)\/"
-      //  },
-      //  {
-      //    "$ref": "1"
-      //  }
-      //]
-
-      List<Person> deserializedPeople = JsonConvert.DeserializeObject<List<Person>>(json,
-        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });
-
-      Console.WriteLine(deserializedPeople.Count);
-      // 2
-
-      Person p1 = deserializedPeople[0];
-      Person p2 = deserializedPeople[1];
-
-      Console.WriteLine(p1.Name);
-      // James
-      Console.WriteLine(p2.Name);
-      // James
-
-      bool equal = Object.ReferenceEquals(p1, p2);
-      // true
-    }
-
-    [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
-    public class User
-    {
-      #region properties
-
-      [JsonProperty(Required = Required.Always, PropertyName = "SecretType")]
-      private string secretType;
-
-      [JsonProperty(Required = Required.Always)]
-      public string Login { get; set; }
-
-      public Type SecretType
-      {
-        get { return Type.GetType(secretType); }
-        set { secretType = value.AssemblyQualifiedName; }
-      }
-
-      [JsonProperty]
-      public User Friend { get; set; }
-
-      #endregion
-
-      #region constructors
-
-      public User()
-      {
-
-      }
-
-      public User(string login, Type secretType)
-        : this()
-      {
-        this.Login = login;
-        this.SecretType = secretType;
-      }
-
-      #endregion
-
-      #region methods
-
-      public override int GetHashCode()
-      {
-        return SecretType.GetHashCode();
-      }
-
-      public override string ToString()
-      {
-        return string.Format("SecretType: {0}, Login: {1}", secretType, Login);
-      }
-
-      #endregion
-    }
-
-    [Test]
-    public void DeserializeTypeWithDubiousGetHashcode()
-    {
-      User user1 = new User("Peter", typeof(Version));
-      User user2 = new User("Michael", typeof(Version));
-
-      user1.Friend = user2;
-
-      JsonSerializerSettings serializerSettings = new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.All,
-        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
-        ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
-        PreserveReferencesHandling = PreserveReferencesHandling.Objects
-      };
-
-      string json = JsonConvert.SerializeObject(user1, Formatting.Indented, serializerSettings);
-
-      User deserializedUser = JsonConvert.DeserializeObject<User>(json, serializerSettings);
-      Assert.IsNotNull(deserializedUser);
-    }
-
-    [Test]
-    public void PreserveReferencesHandlingWithReusedJsonSerializer()
-    {
-      MyClass c = new MyClass();
-
-      IList<MyClass> myClasses1 = new List<MyClass>
-        {
-          c,
-          c
-        };
-
-      var ser = new JsonSerializer()
-      {
-        PreserveReferencesHandling = PreserveReferencesHandling.All
-      };
-
-      MemoryStream ms = new MemoryStream();
-
-      using (var sw = new StreamWriter(ms))
-      using (var writer = new JsonTextWriter(sw) { Formatting = Formatting.Indented })
-      {
-        ser.Serialize(writer, myClasses1);
-      }
-
-      byte[] data = ms.ToArray();
-      string json = Encoding.UTF8.GetString(data, 0, data.Length);
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""$values"": [
-    {
-      ""$id"": ""2"",
-      ""PreProperty"": 0,
-      ""PostProperty"": 0
-    },
-    {
-      ""$ref"": ""2""
-    }
-  ]
-}", json);
-
-      ms = new MemoryStream(data);
-      IList<MyClass> myClasses2;
-
-      using (var sr = new StreamReader(ms))
-      using (var reader = new JsonTextReader(sr))
-      {
-        myClasses2 = ser.Deserialize<IList<MyClass>>(reader);
-      }
-
-      Assert.AreEqual(2, myClasses2.Count);
-      Assert.AreEqual(myClasses2[0], myClasses2[1]);
-
-      Assert.AreNotEqual(myClasses1[0], myClasses2[0]);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class PreserveReferencesHandlingTests : TestFixtureBase
+  {
+    [Test]
+    public void SerializeDictionarysWithPreserveObjectReferences()
+    {
+      CircularDictionary circularDictionary = new CircularDictionary();
+      circularDictionary.Add("other", new CircularDictionary { { "blah", null } });
+      circularDictionary.Add("self", circularDictionary);
+
+      string json = JsonConvert.SerializeObject(circularDictionary, Formatting.Indented,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""other"": {
+    ""$id"": ""2"",
+    ""blah"": null
+  },
+  ""self"": {
+    ""$ref"": ""1""
+  }
+}", json);
+    }
+
+    [Test]
+    public void DeserializeDictionarysWithPreserveObjectReferences()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""other"": {
+    ""$id"": ""2"",
+    ""blah"": null
+  },
+  ""self"": {
+    ""$ref"": ""1""
+  }
+}";
+
+      CircularDictionary circularDictionary = JsonConvert.DeserializeObject<CircularDictionary>(json,
+        new JsonSerializerSettings
+        {
+          PreserveReferencesHandling = PreserveReferencesHandling.All
+        });
+
+      Assert.AreEqual(2, circularDictionary.Count);
+      Assert.AreEqual(1, circularDictionary["other"].Count);
+      Assert.AreEqual(circularDictionary, circularDictionary["self"]);
+    }
+
+    public class CircularList : List<CircularList>
+    {
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException))]
+    public void SerializeCircularListsError()
+    {
+      CircularList circularList = new CircularList();
+      circularList.Add(null);
+      circularList.Add(new CircularList { null });
+      circularList.Add(new CircularList { new CircularList { circularList } });
+
+      JsonConvert.SerializeObject(circularList, Formatting.Indented);
+    }
+
+    [Test]
+    public void SerializeCircularListsIgnore()
+    {
+      CircularList circularList = new CircularList();
+      circularList.Add(null);
+      circularList.Add(new CircularList { null });
+      circularList.Add(new CircularList { new CircularList { circularList } });
+
+      string json = JsonConvert.SerializeObject(circularList,
+                                                Formatting.Indented,
+                                                new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
+
+      Assert.AreEqual(@"[
+  null,
+  [
+    null
+  ],
+  [
+    []
+  ]
+]", json);
+    }
+
+    [Test]
+    public void SerializeListsWithPreserveObjectReferences()
+    {
+      CircularList circularList = new CircularList();
+      circularList.Add(null);
+      circularList.Add(new CircularList { null });
+      circularList.Add(new CircularList { new CircularList { circularList } });
+
+      string json = JsonConvert.SerializeObject(circularList, Formatting.Indented,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""$values"": [
+    null,
+    {
+      ""$id"": ""2"",
+      ""$values"": [
+        null
+      ]
+    },
+    {
+      ""$id"": ""3"",
+      ""$values"": [
+        {
+          ""$id"": ""4"",
+          ""$values"": [
+            {
+              ""$ref"": ""1""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}", json);
+    }
+
+    [Test]
+    public void DeserializeListsWithPreserveObjectReferences()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""$values"": [
+    null,
+    {
+      ""$id"": ""2"",
+      ""$values"": [
+        null
+      ]
+    },
+    {
+      ""$id"": ""3"",
+      ""$values"": [
+        {
+          ""$id"": ""4"",
+          ""$values"": [
+            {
+              ""$ref"": ""1""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}";
+
+      CircularList circularList = JsonConvert.DeserializeObject<CircularList>(json,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
+
+      Assert.AreEqual(3, circularList.Count);
+      Assert.AreEqual(null, circularList[0]);
+      Assert.AreEqual(1, circularList[1].Count);
+      Assert.AreEqual(1, circularList[2].Count);
+      Assert.AreEqual(1, circularList[2][0].Count);
+      Assert.IsTrue(ReferenceEquals(circularList, circularList[2][0][0]));
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Cannot preserve reference to array or readonly list: System.String[][]. Line 3, position 15."
+#endif
+      )]
+    public void DeserializeArraysWithPreserveObjectReferences()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""$values"": [
+    null,
+    {
+      ""$id"": ""2"",
+      ""$values"": [
+        null
+      ]
+    },
+    {
+      ""$id"": ""3"",
+      ""$values"": [
+        {
+          ""$id"": ""4"",
+          ""$values"": [
+            {
+              ""$ref"": ""1""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}";
+
+      JsonConvert.DeserializeObject<string[][]>(json,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
+    }
+
+    public class CircularDictionary : Dictionary<string, CircularDictionary>
+    {
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException))]
+    public void SerializeCircularDictionarysError()
+    {
+      CircularDictionary circularDictionary = new CircularDictionary();
+      circularDictionary.Add("other", new CircularDictionary { { "blah", null } });
+      circularDictionary.Add("self", circularDictionary);
+
+      JsonConvert.SerializeObject(circularDictionary, Formatting.Indented);
+    }
+
+    [Test]
+    public void SerializeCircularDictionarysIgnore()
+    {
+      CircularDictionary circularDictionary = new CircularDictionary();
+      circularDictionary.Add("other", new CircularDictionary { { "blah", null } });
+      circularDictionary.Add("self", circularDictionary);
+
+      string json = JsonConvert.SerializeObject(circularDictionary, Formatting.Indented,
+        new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
+
+      Assert.AreEqual(@"{
+  ""other"": {
+    ""blah"": null
+  }
+}", json);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = @"Unexpected end when deserializing object. Line 2, position 9."
+#endif
+      )]
+    public void UnexpectedEnd()
+    {
+      string json = @"{
+  ""$id"":";
+
+      JsonConvert.DeserializeObject<string[][]>(json,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.All });
+    }
+
+    public class CircularReferenceClassConverter : JsonConverter
+    {
+      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+      {
+        CircularReferenceClass circularReferenceClass = (CircularReferenceClass)value;
+
+        string reference = serializer.ReferenceResolver.GetReference(serializer, circularReferenceClass);
+
+        JObject me = new JObject();
+        me["$id"] = new JValue(reference);
+        me["$type"] = new JValue(value.GetType().Name);
+        me["Name"] = new JValue(circularReferenceClass.Name);
+
+        JObject o = JObject.FromObject(circularReferenceClass.Child, serializer);
+        me["Child"] = o;
+
+        me.WriteTo(writer);
+      }
+
+      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+      {
+        JObject o = JObject.Load(reader);
+        string id = (string)o["$id"];
+        if (id != null)
+        {
+          CircularReferenceClass circularReferenceClass = new CircularReferenceClass();
+          serializer.Populate(o.CreateReader(), circularReferenceClass);
+          return circularReferenceClass;
+        }
+        else
+        {
+          string reference = (string)o["$ref"];
+          return serializer.ReferenceResolver.ResolveReference(serializer, reference);
+        }
+      }
+
+      public override bool CanConvert(Type objectType)
+      {
+        return (objectType == typeof(CircularReferenceClass));
+      }
+    }
+
+    [Test]
+    public void SerializeCircularReferencesWithConverter()
+    {
+      CircularReferenceClass c1 = new CircularReferenceClass { Name = "c1" };
+      CircularReferenceClass c2 = new CircularReferenceClass { Name = "c2" };
+      CircularReferenceClass c3 = new CircularReferenceClass { Name = "c3" };
+
+      c1.Child = c2;
+      c2.Child = c3;
+      c3.Child = c1;
+
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented, new JsonSerializerSettings
+      {
+        PreserveReferencesHandling = PreserveReferencesHandling.Objects,
+        Converters = new List<JsonConverter> { new CircularReferenceClassConverter() }
+      });
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""$type"": ""CircularReferenceClass"",
+  ""Name"": ""c1"",
+  ""Child"": {
+    ""$id"": ""2"",
+    ""$type"": ""CircularReferenceClass"",
+    ""Name"": ""c2"",
+    ""Child"": {
+      ""$id"": ""3"",
+      ""$type"": ""CircularReferenceClass"",
+      ""Name"": ""c3"",
+      ""Child"": {
+        ""$ref"": ""1""
+      }
+    }
+  }
+}", json);
+    }
+
+    [Test]
+    public void DeserializeCircularReferencesWithConverter()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""$type"": ""CircularReferenceClass"",
+  ""Name"": ""c1"",
+  ""Child"": {
+    ""$id"": ""2"",
+    ""$type"": ""CircularReferenceClass"",
+    ""Name"": ""c2"",
+    ""Child"": {
+      ""$id"": ""3"",
+      ""$type"": ""CircularReferenceClass"",
+      ""Name"": ""c3"",
+      ""Child"": {
+        ""$ref"": ""1""
+      }
+    }
+  }
+}";
+
+      CircularReferenceClass c1 = JsonConvert.DeserializeObject<CircularReferenceClass>(json, new JsonSerializerSettings
+      {
+        PreserveReferencesHandling = PreserveReferencesHandling.Objects,
+        Converters = new List<JsonConverter> { new CircularReferenceClassConverter() }
+      });
+
+      Assert.AreEqual("c1", c1.Name);
+      Assert.AreEqual("c2", c1.Child.Name);
+      Assert.AreEqual("c3", c1.Child.Child.Name);
+      Assert.AreEqual("c1", c1.Child.Child.Child.Name);
+    }
+
+    [Test]
+    public void SerializeEmployeeReference()
+    {
+      EmployeeReference mikeManager = new EmployeeReference
+      {
+        Name = "Mike Manager"
+      };
+      EmployeeReference joeUser = new EmployeeReference
+      {
+        Name = "Joe User",
+        Manager = mikeManager
+      };
+
+      List<EmployeeReference> employees = new List<EmployeeReference>
+        {
+          mikeManager,
+          joeUser
+        };
+
+      string json = JsonConvert.SerializeObject(employees, Formatting.Indented);
+      Assert.AreEqual(@"[
+  {
+    ""$id"": ""1"",
+    ""Name"": ""Mike Manager"",
+    ""Manager"": null
+  },
+  {
+    ""$id"": ""2"",
+    ""Name"": ""Joe User"",
+    ""Manager"": {
+      ""$ref"": ""1""
+    }
+  }
+]", json);
+    }
+
+    [Test]
+    public void DeserializeEmployeeReference()
+    {
+      string json = @"[
+  {
+    ""$id"": ""1"",
+    ""Name"": ""Mike Manager"",
+    ""Manager"": null
+  },
+  {
+    ""$id"": ""2"",
+    ""Name"": ""Joe User"",
+    ""Manager"": {
+      ""$ref"": ""1""
+    }
+  }
+]";
+
+      List<EmployeeReference> employees = JsonConvert.DeserializeObject<List<EmployeeReference>>(json);
+
+      Assert.AreEqual(2, employees.Count);
+      Assert.AreEqual("Mike Manager", employees[0].Name);
+      Assert.AreEqual("Joe User", employees[1].Name);
+      Assert.AreEqual(employees[0], employees[1].Manager);
+    }
+
+    [Test]
+    public void SerializeCircularReference()
+    {
+      CircularReferenceClass c1 = new CircularReferenceClass { Name = "c1" };
+      CircularReferenceClass c2 = new CircularReferenceClass { Name = "c2" };
+      CircularReferenceClass c3 = new CircularReferenceClass { Name = "c3" };
+
+      c1.Child = c2;
+      c2.Child = c3;
+      c3.Child = c1;
+
+      string json = JsonConvert.SerializeObject(c1, Formatting.Indented, new JsonSerializerSettings
+      {
+        PreserveReferencesHandling = PreserveReferencesHandling.Objects
+      });
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""Name"": ""c1"",
+  ""Child"": {
+    ""$id"": ""2"",
+    ""Name"": ""c2"",
+    ""Child"": {
+      ""$id"": ""3"",
+      ""Name"": ""c3"",
+      ""Child"": {
+        ""$ref"": ""1""
+      }
+    }
+  }
+}", json);
+    }
+
+    [Test]
+    public void DeserializeCircularReference()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""Name"": ""c1"",
+  ""Child"": {
+    ""$id"": ""2"",
+    ""Name"": ""c2"",
+    ""Child"": {
+      ""$id"": ""3"",
+      ""Name"": ""c3"",
+      ""Child"": {
+        ""$ref"": ""1""
+      }
+    }
+  }
+}";
+
+      CircularReferenceClass c1 =
+        JsonConvert.DeserializeObject<CircularReferenceClass>(json, new JsonSerializerSettings
+        {
+          PreserveReferencesHandling = PreserveReferencesHandling.Objects
+        });
+
+      Assert.AreEqual("c1", c1.Name);
+      Assert.AreEqual("c2", c1.Child.Name);
+      Assert.AreEqual("c3", c1.Child.Child.Name);
+      Assert.AreEqual("c1", c1.Child.Child.Child.Name);
+    }
+
+    [Test]
+    public void SerializeReferenceInList()
+    {
+      EmployeeReference e1 = new EmployeeReference { Name = "e1" };
+      EmployeeReference e2 = new EmployeeReference { Name = "e2" };
+
+      List<EmployeeReference> employees = new List<EmployeeReference> { e1, e2, e1, e2 };
+
+      string json = JsonConvert.SerializeObject(employees, Formatting.Indented);
+
+      Assert.AreEqual(@"[
+  {
+    ""$id"": ""1"",
+    ""Name"": ""e1"",
+    ""Manager"": null
+  },
+  {
+    ""$id"": ""2"",
+    ""Name"": ""e2"",
+    ""Manager"": null
+  },
+  {
+    ""$ref"": ""1""
+  },
+  {
+    ""$ref"": ""2""
+  }
+]", json);
+    }
+
+    [Test]
+    public void DeserializeReferenceInList()
+    {
+      string json = @"[
+  {
+    ""$id"": ""1"",
+    ""Name"": ""e1"",
+    ""Manager"": null
+  },
+  {
+    ""$id"": ""2"",
+    ""Name"": ""e2"",
+    ""Manager"": null
+  },
+  {
+    ""$ref"": ""1""
+  },
+  {
+    ""$ref"": ""2""
+  }
+]";
+
+      List<EmployeeReference> employees = JsonConvert.DeserializeObject<List<EmployeeReference>>(json);
+      Assert.AreEqual(4, employees.Count);
+
+      Assert.AreEqual("e1", employees[0].Name);
+      Assert.AreEqual("e2", employees[1].Name);
+      Assert.AreEqual("e1", employees[2].Name);
+      Assert.AreEqual("e2", employees[3].Name);
+
+      Assert.AreEqual(employees[0], employees[2]);
+      Assert.AreEqual(employees[1], employees[3]);
+    }
+
+    [Test]
+    public void SerializeReferenceInDictionary()
+    {
+      EmployeeReference e1 = new EmployeeReference { Name = "e1" };
+      EmployeeReference e2 = new EmployeeReference { Name = "e2" };
+
+      Dictionary<string, EmployeeReference> employees = new Dictionary<string, EmployeeReference>
+        {
+          {"One", e1},
+          {"Two", e2},
+          {"Three", e1},
+          {"Four", e2}
+        };
+
+      string json = JsonConvert.SerializeObject(employees, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""One"": {
+    ""$id"": ""1"",
+    ""Name"": ""e1"",
+    ""Manager"": null
+  },
+  ""Two"": {
+    ""$id"": ""2"",
+    ""Name"": ""e2"",
+    ""Manager"": null
+  },
+  ""Three"": {
+    ""$ref"": ""1""
+  },
+  ""Four"": {
+    ""$ref"": ""2""
+  }
+}", json);
+    }
+
+    [Test]
+    public void DeserializeReferenceInDictionary()
+    {
+      string json = @"{
+  ""One"": {
+    ""$id"": ""1"",
+    ""Name"": ""e1"",
+    ""Manager"": null
+  },
+  ""Two"": {
+    ""$id"": ""2"",
+    ""Name"": ""e2"",
+    ""Manager"": null
+  },
+  ""Three"": {
+    ""$ref"": ""1""
+  },
+  ""Four"": {
+    ""$ref"": ""2""
+  }
+}";
+
+      Dictionary<string, EmployeeReference> employees = JsonConvert.DeserializeObject<Dictionary<string, EmployeeReference>>(json);
+      Assert.AreEqual(4, employees.Count);
+
+      EmployeeReference e1 = employees["One"];
+      EmployeeReference e2 = employees["Two"];
+
+      Assert.AreEqual("e1", e1.Name);
+      Assert.AreEqual("e2", e2.Name);
+
+      Assert.AreEqual(e1, employees["Three"]);
+      Assert.AreEqual(e2, employees["Four"]);
+    }
+
+    [Test]
+    public void ExampleWithout()
+    {
+      Person p = new Person
+        {
+          BirthDate = new DateTime(1980, 12, 23, 0, 0, 0, DateTimeKind.Utc),
+          LastModified = new DateTime(2009, 2, 20, 12, 59, 21, DateTimeKind.Utc),
+          Department = "IT",
+          Name = "James"
+        };
+
+      List<Person> people = new List<Person>();
+      people.Add(p);
+      people.Add(p);
+
+      string json = JsonConvert.SerializeObject(people, Formatting.Indented);
+      //[
+      //  {
+      //    "Name": "James",
+      //    "BirthDate": "\/Date(346377600000)\/",
+      //    "LastModified": "\/Date(1235134761000)\/"
+      //  },
+      //  {
+      //    "Name": "James",
+      //    "BirthDate": "\/Date(346377600000)\/",
+      //    "LastModified": "\/Date(1235134761000)\/"
+      //  }
+      //]
+    }
+
+    [Test]
+    public void ExampleWith()
+    {
+      Person p = new Person
+      {
+        BirthDate = new DateTime(1980, 12, 23, 0, 0, 0, DateTimeKind.Utc),
+        LastModified = new DateTime(2009, 2, 20, 12, 59, 21, DateTimeKind.Utc),
+        Department = "IT",
+        Name = "James"
+      };
+
+      List<Person> people = new List<Person>();
+      people.Add(p);
+      people.Add(p);
+
+      string json = JsonConvert.SerializeObject(people, Formatting.Indented,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });
+      //[
+      //  {
+      //    "$id": "1",
+      //    "Name": "James",
+      //    "BirthDate": "\/Date(346377600000)\/",
+      //    "LastModified": "\/Date(1235134761000)\/"
+      //  },
+      //  {
+      //    "$ref": "1"
+      //  }
+      //]
+
+      List<Person> deserializedPeople = JsonConvert.DeserializeObject<List<Person>>(json,
+        new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });
+
+      Console.WriteLine(deserializedPeople.Count);
+      // 2
+
+      Person p1 = deserializedPeople[0];
+      Person p2 = deserializedPeople[1];
+
+      Console.WriteLine(p1.Name);
+      // James
+      Console.WriteLine(p2.Name);
+      // James
+
+      bool equal = Object.ReferenceEquals(p1, p2);
+      // true
+    }
+
+    [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
+    public class User
+    {
+      #region properties
+
+      [JsonProperty(Required = Required.Always, PropertyName = "SecretType")]
+      private string secretType;
+
+      [JsonProperty(Required = Required.Always)]
+      public string Login { get; set; }
+
+      public Type SecretType
+      {
+        get { return Type.GetType(secretType); }
+        set { secretType = value.AssemblyQualifiedName; }
+      }
+
+      [JsonProperty]
+      public User Friend { get; set; }
+
+      #endregion
+
+      #region constructors
+
+      public User()
+      {
+
+      }
+
+      public User(string login, Type secretType)
+        : this()
+      {
+        this.Login = login;
+        this.SecretType = secretType;
+      }
+
+      #endregion
+
+      #region methods
+
+      public override int GetHashCode()
+      {
+        return SecretType.GetHashCode();
+      }
+
+      public override string ToString()
+      {
+        return string.Format("SecretType: {0}, Login: {1}", secretType, Login);
+      }
+
+      #endregion
+    }
+
+    [Test]
+    public void DeserializeTypeWithDubiousGetHashcode()
+    {
+      User user1 = new User("Peter", typeof(Version));
+      User user2 = new User("Michael", typeof(Version));
+
+      user1.Friend = user2;
+
+      JsonSerializerSettings serializerSettings = new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.All,
+        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
+        ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
+        PreserveReferencesHandling = PreserveReferencesHandling.Objects
+      };
+
+      string json = JsonConvert.SerializeObject(user1, Formatting.Indented, serializerSettings);
+
+      User deserializedUser = JsonConvert.DeserializeObject<User>(json, serializerSettings);
+      Assert.IsNotNull(deserializedUser);
+    }
+
+    [Test]
+    public void PreserveReferencesHandlingWithReusedJsonSerializer()
+    {
+      MyClass c = new MyClass();
+
+      IList<MyClass> myClasses1 = new List<MyClass>
+        {
+          c,
+          c
+        };
+
+      var ser = new JsonSerializer()
+      {
+        PreserveReferencesHandling = PreserveReferencesHandling.All
+      };
+
+      MemoryStream ms = new MemoryStream();
+
+      using (var sw = new StreamWriter(ms))
+      using (var writer = new JsonTextWriter(sw) { Formatting = Formatting.Indented })
+      {
+        ser.Serialize(writer, myClasses1);
+      }
+
+      byte[] data = ms.ToArray();
+      string json = Encoding.UTF8.GetString(data, 0, data.Length);
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""$values"": [
+    {
+      ""$id"": ""2"",
+      ""PreProperty"": 0,
+      ""PostProperty"": 0
+    },
+    {
+      ""$ref"": ""2""
+    }
+  ]
+}", json);
+
+      ms = new MemoryStream(data);
+      IList<MyClass> myClasses2;
+
+      using (var sr = new StreamReader(ms))
+      using (var reader = new JsonTextReader(sr))
+      {
+        myClasses2 = ser.Deserialize<IList<MyClass>>(reader);
+      }
+
+      Assert.AreEqual(2, myClasses2.Count);
+      Assert.AreEqual(myClasses2[0], myClasses2[1]);
+
+      Assert.AreNotEqual(myClasses1[0], myClasses2[0]);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs
@@ -1,351 +1,351 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using System.IO;
-using ErrorEventArgs=Newtonsoft.Json.Serialization.ErrorEventArgs;
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class SerializationErrorHandlingTests : TestFixtureBase
-  {
-    [Test]
-    public void ErrorDeserializingListHandled()
-    {
-      string json = @"[
-  {
-    ""Name"": ""Jim"",
-    ""BirthDate"": ""\/Date(978048000000)\/"",
-    ""LastModified"": ""\/Date(978048000000)\/""
-  },
-  {
-    ""Name"": ""Jim"",
-    ""BirthDate"": ""\/Date(978048000000)\/"",
-    ""LastModified"": ""\/Date(978048000000)\/""
-  }
-]";
-
-      VersionKeyedCollection c = JsonConvert.DeserializeObject<VersionKeyedCollection>(json);
-      Assert.AreEqual(1, c.Count);
-      Assert.AreEqual(1, c.Messages.Count);
-      Assert.AreEqual("[1] - Error message for member 1 = An item with the same key has already been added.", c.Messages[0]);
-    }
-
-    [Test]
-    public void DeserializingErrorInChildObject()
-    {
-      ListErrorObjectCollection c = JsonConvert.DeserializeObject<ListErrorObjectCollection>(@"[
-  {
-    ""Member"": ""Value1"",
-    ""Member2"": null
-  },
-  {
-    ""Member"": ""Value2""
-  },
-  {
-    ""ThrowError"": ""Value"",
-    ""Object"": {
-      ""Array"": [
-        1,
-        2
-      ]
-    }
-  },
-  {
-    ""ThrowError"": ""Handle this!"",
-    ""Member"": ""Value3""
-  }
-]");
-
-      Assert.AreEqual(3, c.Count);
-      Assert.AreEqual("Value1", c[0].Member);
-      Assert.AreEqual("Value2", c[1].Member);
-      Assert.AreEqual("Value3", c[2].Member);
-      Assert.AreEqual("Handle this!", c[2].ThrowError);
-    }
-
-    [Test]
-    public void SerializingErrorInChildObject()
-    {
-      ListErrorObjectCollection c = new ListErrorObjectCollection
-        {
-          new ListErrorObject
-            {
-              Member = "Value1",
-              ThrowError = "Handle this!",
-              Member2 = "Member1"
-            },
-          new ListErrorObject
-            {
-              Member = "Value2",
-              Member2 = "Member2"
-            },
-          new ListErrorObject
-            {
-              Member = "Value3",
-              ThrowError = "Handle that!",
-              Member2 = "Member3"
-            }
-        };
-
-      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
-
-      Assert.AreEqual(@"[
-  {
-    ""Member"": ""Value1"",
-    ""ThrowError"": ""Handle this!"",
-    ""Member2"": ""Member1""
-  },
-  {
-    ""Member"": ""Value2""
-  },
-  {
-    ""Member"": ""Value3"",
-    ""ThrowError"": ""Handle that!"",
-    ""Member2"": ""Member3""
-  }
-]", json);
-    }
-
-    [Test]
-    public void DeserializingErrorInDateTimeCollection()
-    {
-      DateTimeErrorObjectCollection c = JsonConvert.DeserializeObject<DateTimeErrorObjectCollection>(@"[
-  ""2009-09-09T00:00:00Z"",
-  ""kjhkjhkjhkjh"",
-  [
-    1
-  ],
-  ""1977-02-20T00:00:00Z"",
-  null,
-  ""2000-12-01T00:00:00Z""
-]", new IsoDateTimeConverter());
-
-      Assert.AreEqual(3, c.Count);
-      Assert.AreEqual(new DateTime(2009, 9, 9, 0, 0, 0, DateTimeKind.Utc), c[0]);
-      Assert.AreEqual(new DateTime(1977, 2, 20, 0, 0, 0, DateTimeKind.Utc), c[1]);
-      Assert.AreEqual(new DateTime(2000, 12, 1, 0, 0, 0, DateTimeKind.Utc), c[2]);
-    }
-
-    [Test]
-    public void DeserializingErrorHandlingUsingEvent()
-    {
-      List<string> errors = new List<string>();
-
-      List<DateTime> c = JsonConvert.DeserializeObject<List<DateTime>>(
-        @"[
-        ""2009-09-09T00:00:00Z"",
-        ""I am not a date and will error!"",
-        [
-          1
-        ],
-        ""1977-02-20T00:00:00Z"",
-        null,
-        ""2000-12-01T00:00:00Z""
-      ]",
-        new JsonSerializerSettings
-          {
-            Error = delegate(object sender, ErrorEventArgs args)
-              {
-                errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
-                args.ErrorContext.Handled = true;
-              },
-            Converters = {new IsoDateTimeConverter()}
-          });
-
-      // 2009-09-09T00:00:00Z
-      // 1977-02-20T00:00:00Z
-      // 2000-12-01T00:00:00Z
-
-      // The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.
-      // Unexpected token parsing date. Expected String, got StartArray.
-      // Cannot convert null value to System.DateTime.
-
-      Assert.AreEqual(3, c.Count);
-      Assert.AreEqual(new DateTime(2009, 9, 9, 0, 0, 0, DateTimeKind.Utc), c[0]);
-      Assert.AreEqual(new DateTime(1977, 2, 20, 0, 0, 0, DateTimeKind.Utc), c[1]);
-      Assert.AreEqual(new DateTime(2000, 12, 1, 0, 0, 0, DateTimeKind.Utc), c[2]);
-
-      Assert.AreEqual(3, errors.Count);
-#if !(NET20 || NET35 || WINDOWS_PHONE)
-      Assert.AreEqual("[1] - 1 - The string was not recognized as a valid DateTime. There is an unknown word starting at index 0.", errors[0]);
-#else
-      Assert.AreEqual("[1] - 1 - The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.", errors[0]);
-#endif
-      Assert.AreEqual("[2] - 2 - Unexpected token parsing date. Expected String, got StartArray.", errors[1]);
-      Assert.AreEqual("[4] - 4 - Cannot convert null value to System.DateTime.", errors[2]);
-    }
-
-    [Test]
-    public void DeserializingErrorInDateTimeCollectionWithAttributeWithEventNotCalled()
-    {
-      bool eventErrorHandlerCalled = false;
-
-      DateTimeErrorObjectCollection c = JsonConvert.DeserializeObject<DateTimeErrorObjectCollection>(
-        @"[
-  ""2009-09-09T00:00:00Z"",
-  ""kjhkjhkjhkjh"",
-  [
-    1
-  ],
-  ""1977-02-20T00:00:00Z"",
-  null,
-  ""2000-12-01T00:00:00Z""
-]",
-        new JsonSerializerSettings
-          {
-            Error = (s, a) => eventErrorHandlerCalled = true,
-            Converters =
-              {
-                new IsoDateTimeConverter()
-              }
-          });
-
-      Assert.AreEqual(3, c.Count);
-      Assert.AreEqual(new DateTime(2009, 9, 9, 0, 0, 0, DateTimeKind.Utc), c[0]);
-      Assert.AreEqual(new DateTime(1977, 2, 20, 0, 0, 0, DateTimeKind.Utc), c[1]);
-      Assert.AreEqual(new DateTime(2000, 12, 1, 0, 0, 0, DateTimeKind.Utc), c[2]);
-
-      Assert.AreEqual(false, eventErrorHandlerCalled);
-    }
-
-    [Test]
-    public void SerializePerson()
-    {
-      PersonError person = new PersonError
-        {
-          Name = "George Michael Bluth",
-          Age = 16,
-          Roles = null,
-          Title = "Mister Manager"
-        };
-
-      string json = JsonConvert.SerializeObject(person, Formatting.Indented);
-
-      Console.WriteLine(json);
-      //{
-      //  "Name": "George Michael Bluth",
-      //  "Age": 16,
-      //  "Title": "Mister Manager"
-      //}
-
-      Assert.AreEqual(@"{
-  ""Name"": ""George Michael Bluth"",
-  ""Age"": 16,
-  ""Title"": ""Mister Manager""
-}", json);
-    }
-
-    [Test]
-    public void DeserializeNestedUnhandled()
-    {
-      List<string> errors = new List<string>();
-
-      string json = @"[[""kjhkjhkjhkjh""]]";
-
-      Exception e = null;
-      try
-      {
-        JsonSerializer serializer = new JsonSerializer();
-        serializer.Error += delegate(object sender, ErrorEventArgs args)
-        {
-          // only log an error once
-          if (args.CurrentObject == args.ErrorContext.OriginalObject)
-            errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
-        };
-
-        serializer.Deserialize(new StringReader(json), typeof(List<List<DateTime>>));
-      }
-      catch (Exception ex)
-      {
-        e = ex;
-      }
-
-      Assert.AreEqual(@"Could not convert string to DateTime: kjhkjhkjhkjh. Line 1, position 16.", e.Message);
-
-      Assert.AreEqual(1, errors.Count);
-      Assert.AreEqual(@"[0][0] - 0 - Could not convert string to DateTime: kjhkjhkjhkjh. Line 1, position 16.", errors[0]);
-    }
-
-    [Test]
-    public void MultipleRequiredPropertyErrors()
-    {
-      string json = "{}";
-      List<string> errors = new List<string>();
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Error += delegate(object sender, ErrorEventArgs args)
-        {
-          errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
-          args.ErrorContext.Handled = true;
-        };
-      serializer.Deserialize(new JsonTextReader(new StringReader(json)), typeof (MyTypeWithRequiredMembers));
-      
-      Assert.AreEqual(2, errors.Count);
-      Assert.AreEqual(" - Required1 - Required property 'Required1' not found in JSON. Line 1, position 2.", errors[0]);
-      Assert.AreEqual(" - Required2 - Required property 'Required2' not found in JSON. Line 1, position 2.", errors[1]);
-    }
-
-    [Test]
-    public void HandlingArrayErrors()
-    {
-      string json = "[\"a\",\"b\",\"45\",34]";
-
-      List<string> errors = new List<string>();
-
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.Error += delegate(object sender, ErrorEventArgs args)
-      {
-        errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
-        args.ErrorContext.Handled = true;
-      };
-
-      serializer.Deserialize(new JsonTextReader(new StringReader(json)), typeof(int[]));
-
-      Assert.AreEqual(2, errors.Count);
-      Assert.AreEqual("[0] - 0 - Could not convert string to integer: a. Line 1, position 4.", errors[0]);
-      Assert.AreEqual("[1] - 1 - Could not convert string to integer: b. Line 1, position 8.", errors[1]);
-    }
-  }
-
-  [JsonObject]
-  public class MyTypeWithRequiredMembers
-  {
-    [JsonProperty(Required = Required.AllowNull)]
-    public string Required1;
-    [JsonProperty(Required = Required.AllowNull)]
-    public string Required2;
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using System.IO;
+using ErrorEventArgs=Newtonsoft.Json.Serialization.ErrorEventArgs;
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class SerializationErrorHandlingTests : TestFixtureBase
+  {
+    [Test]
+    public void ErrorDeserializingListHandled()
+    {
+      string json = @"[
+  {
+    ""Name"": ""Jim"",
+    ""BirthDate"": ""\/Date(978048000000)\/"",
+    ""LastModified"": ""\/Date(978048000000)\/""
+  },
+  {
+    ""Name"": ""Jim"",
+    ""BirthDate"": ""\/Date(978048000000)\/"",
+    ""LastModified"": ""\/Date(978048000000)\/""
+  }
+]";
+
+      VersionKeyedCollection c = JsonConvert.DeserializeObject<VersionKeyedCollection>(json);
+      Assert.AreEqual(1, c.Count);
+      Assert.AreEqual(1, c.Messages.Count);
+      Assert.AreEqual("[1] - Error message for member 1 = An item with the same key has already been added.", c.Messages[0]);
+    }
+
+    [Test]
+    public void DeserializingErrorInChildObject()
+    {
+      ListErrorObjectCollection c = JsonConvert.DeserializeObject<ListErrorObjectCollection>(@"[
+  {
+    ""Member"": ""Value1"",
+    ""Member2"": null
+  },
+  {
+    ""Member"": ""Value2""
+  },
+  {
+    ""ThrowError"": ""Value"",
+    ""Object"": {
+      ""Array"": [
+        1,
+        2
+      ]
+    }
+  },
+  {
+    ""ThrowError"": ""Handle this!"",
+    ""Member"": ""Value3""
+  }
+]");
+
+      Assert.AreEqual(3, c.Count);
+      Assert.AreEqual("Value1", c[0].Member);
+      Assert.AreEqual("Value2", c[1].Member);
+      Assert.AreEqual("Value3", c[2].Member);
+      Assert.AreEqual("Handle this!", c[2].ThrowError);
+    }
+
+    [Test]
+    public void SerializingErrorInChildObject()
+    {
+      ListErrorObjectCollection c = new ListErrorObjectCollection
+        {
+          new ListErrorObject
+            {
+              Member = "Value1",
+              ThrowError = "Handle this!",
+              Member2 = "Member1"
+            },
+          new ListErrorObject
+            {
+              Member = "Value2",
+              Member2 = "Member2"
+            },
+          new ListErrorObject
+            {
+              Member = "Value3",
+              ThrowError = "Handle that!",
+              Member2 = "Member3"
+            }
+        };
+
+      string json = JsonConvert.SerializeObject(c, Formatting.Indented);
+
+      Assert.AreEqual(@"[
+  {
+    ""Member"": ""Value1"",
+    ""ThrowError"": ""Handle this!"",
+    ""Member2"": ""Member1""
+  },
+  {
+    ""Member"": ""Value2""
+  },
+  {
+    ""Member"": ""Value3"",
+    ""ThrowError"": ""Handle that!"",
+    ""Member2"": ""Member3""
+  }
+]", json);
+    }
+
+    [Test]
+    public void DeserializingErrorInDateTimeCollection()
+    {
+      DateTimeErrorObjectCollection c = JsonConvert.DeserializeObject<DateTimeErrorObjectCollection>(@"[
+  ""2009-09-09T00:00:00Z"",
+  ""kjhkjhkjhkjh"",
+  [
+    1
+  ],
+  ""1977-02-20T00:00:00Z"",
+  null,
+  ""2000-12-01T00:00:00Z""
+]", new IsoDateTimeConverter());
+
+      Assert.AreEqual(3, c.Count);
+      Assert.AreEqual(new DateTime(2009, 9, 9, 0, 0, 0, DateTimeKind.Utc), c[0]);
+      Assert.AreEqual(new DateTime(1977, 2, 20, 0, 0, 0, DateTimeKind.Utc), c[1]);
+      Assert.AreEqual(new DateTime(2000, 12, 1, 0, 0, 0, DateTimeKind.Utc), c[2]);
+    }
+
+    [Test]
+    public void DeserializingErrorHandlingUsingEvent()
+    {
+      List<string> errors = new List<string>();
+
+      List<DateTime> c = JsonConvert.DeserializeObject<List<DateTime>>(
+        @"[
+        ""2009-09-09T00:00:00Z"",
+        ""I am not a date and will error!"",
+        [
+          1
+        ],
+        ""1977-02-20T00:00:00Z"",
+        null,
+        ""2000-12-01T00:00:00Z""
+      ]",
+        new JsonSerializerSettings
+          {
+            Error = delegate(object sender, ErrorEventArgs args)
+              {
+                errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
+                args.ErrorContext.Handled = true;
+              },
+            Converters = {new IsoDateTimeConverter()}
+          });
+
+      // 2009-09-09T00:00:00Z
+      // 1977-02-20T00:00:00Z
+      // 2000-12-01T00:00:00Z
+
+      // The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.
+      // Unexpected token parsing date. Expected String, got StartArray.
+      // Cannot convert null value to System.DateTime.
+
+      Assert.AreEqual(3, c.Count);
+      Assert.AreEqual(new DateTime(2009, 9, 9, 0, 0, 0, DateTimeKind.Utc), c[0]);
+      Assert.AreEqual(new DateTime(1977, 2, 20, 0, 0, 0, DateTimeKind.Utc), c[1]);
+      Assert.AreEqual(new DateTime(2000, 12, 1, 0, 0, 0, DateTimeKind.Utc), c[2]);
+
+      Assert.AreEqual(3, errors.Count);
+#if !(NET20 || NET35 || WINDOWS_PHONE)
+      Assert.AreEqual("[1] - 1 - The string was not recognized as a valid DateTime. There is an unknown word starting at index 0.", errors[0]);
+#else
+      Assert.AreEqual("[1] - 1 - The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.", errors[0]);
+#endif
+      Assert.AreEqual("[2] - 2 - Unexpected token parsing date. Expected String, got StartArray.", errors[1]);
+      Assert.AreEqual("[4] - 4 - Cannot convert null value to System.DateTime.", errors[2]);
+    }
+
+    [Test]
+    public void DeserializingErrorInDateTimeCollectionWithAttributeWithEventNotCalled()
+    {
+      bool eventErrorHandlerCalled = false;
+
+      DateTimeErrorObjectCollection c = JsonConvert.DeserializeObject<DateTimeErrorObjectCollection>(
+        @"[
+  ""2009-09-09T00:00:00Z"",
+  ""kjhkjhkjhkjh"",
+  [
+    1
+  ],
+  ""1977-02-20T00:00:00Z"",
+  null,
+  ""2000-12-01T00:00:00Z""
+]",
+        new JsonSerializerSettings
+          {
+            Error = (s, a) => eventErrorHandlerCalled = true,
+            Converters =
+              {
+                new IsoDateTimeConverter()
+              }
+          });
+
+      Assert.AreEqual(3, c.Count);
+      Assert.AreEqual(new DateTime(2009, 9, 9, 0, 0, 0, DateTimeKind.Utc), c[0]);
+      Assert.AreEqual(new DateTime(1977, 2, 20, 0, 0, 0, DateTimeKind.Utc), c[1]);
+      Assert.AreEqual(new DateTime(2000, 12, 1, 0, 0, 0, DateTimeKind.Utc), c[2]);
+
+      Assert.AreEqual(false, eventErrorHandlerCalled);
+    }
+
+    [Test]
+    public void SerializePerson()
+    {
+      PersonError person = new PersonError
+        {
+          Name = "George Michael Bluth",
+          Age = 16,
+          Roles = null,
+          Title = "Mister Manager"
+        };
+
+      string json = JsonConvert.SerializeObject(person, Formatting.Indented);
+
+      Console.WriteLine(json);
+      //{
+      //  "Name": "George Michael Bluth",
+      //  "Age": 16,
+      //  "Title": "Mister Manager"
+      //}
+
+      Assert.AreEqual(@"{
+  ""Name"": ""George Michael Bluth"",
+  ""Age"": 16,
+  ""Title"": ""Mister Manager""
+}", json);
+    }
+
+    [Test]
+    public void DeserializeNestedUnhandled()
+    {
+      List<string> errors = new List<string>();
+
+      string json = @"[[""kjhkjhkjhkjh""]]";
+
+      Exception e = null;
+      try
+      {
+        JsonSerializer serializer = new JsonSerializer();
+        serializer.Error += delegate(object sender, ErrorEventArgs args)
+        {
+          // only log an error once
+          if (args.CurrentObject == args.ErrorContext.OriginalObject)
+            errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
+        };
+
+        serializer.Deserialize(new StringReader(json), typeof(List<List<DateTime>>));
+      }
+      catch (Exception ex)
+      {
+        e = ex;
+      }
+
+      Assert.AreEqual(@"Could not convert string to DateTime: kjhkjhkjhkjh. Line 1, position 16.", e.Message);
+
+      Assert.AreEqual(1, errors.Count);
+      Assert.AreEqual(@"[0][0] - 0 - Could not convert string to DateTime: kjhkjhkjhkjh. Line 1, position 16.", errors[0]);
+    }
+
+    [Test]
+    public void MultipleRequiredPropertyErrors()
+    {
+      string json = "{}";
+      List<string> errors = new List<string>();
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Error += delegate(object sender, ErrorEventArgs args)
+        {
+          errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
+          args.ErrorContext.Handled = true;
+        };
+      serializer.Deserialize(new JsonTextReader(new StringReader(json)), typeof (MyTypeWithRequiredMembers));
+      
+      Assert.AreEqual(2, errors.Count);
+      Assert.AreEqual(" - Required1 - Required property 'Required1' not found in JSON. Line 1, position 2.", errors[0]);
+      Assert.AreEqual(" - Required2 - Required property 'Required2' not found in JSON. Line 1, position 2.", errors[1]);
+    }
+
+    [Test]
+    public void HandlingArrayErrors()
+    {
+      string json = "[\"a\",\"b\",\"45\",34]";
+
+      List<string> errors = new List<string>();
+
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.Error += delegate(object sender, ErrorEventArgs args)
+      {
+        errors.Add(args.ErrorContext.Path + " - " + args.ErrorContext.Member + " - " + args.ErrorContext.Error.Message);
+        args.ErrorContext.Handled = true;
+      };
+
+      serializer.Deserialize(new JsonTextReader(new StringReader(json)), typeof(int[]));
+
+      Assert.AreEqual(2, errors.Count);
+      Assert.AreEqual("[0] - 0 - Could not convert string to integer: a. Line 1, position 4.", errors[0]);
+      Assert.AreEqual("[1] - 1 - Could not convert string to integer: b. Line 1, position 8.", errors[1]);
+    }
+  }
+
+  [JsonObject]
+  public class MyTypeWithRequiredMembers
+  {
+    [JsonProperty(Required = Required.AllowNull)]
+    public string Required1;
+    [JsonProperty(Required = Required.AllowNull)]
+    public string Required2;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/SerializationEventAttributeTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/SerializationEventAttributeTests.cs
@@ -1,340 +1,340 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Reflection;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class SerializationEventAttributeTests : TestFixtureBase
-  {
-    [Test]
-    public void ObjectEvents()
-    {
-      SerializationEventTestObject obj = new SerializationEventTestObject();
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("Hello World!", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-      Assert.AreEqual(null, obj.Member5);
-
-      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Member1"": 11,
-  ""Member2"": ""This value went into the data file during serialization."",
-  ""Member4"": null
-}", json);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-      Assert.AreEqual("Error message for member Member6 = Error getting value from 'Member6' on 'Newtonsoft.Json.Tests.TestObjects.SerializationEventTestObject'.", obj.Member5);
-
-      JObject o = JObject.Parse(@"{
-  ""Member1"": 11,
-  ""Member2"": ""This value went into the data file during serialization."",
-  ""Member4"": null
-}");
-      o["Member6"] = "Dummy text for error";
-
-      obj = JsonConvert.DeserializeObject<SerializationEventTestObject>(o.ToString());
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("This value went into the data file during serialization.", obj.Member2);
-      Assert.AreEqual("This value was set during deserialization", obj.Member3);
-      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
-      Assert.AreEqual("Error message for member Member6 = Error setting value to 'Member6' on 'Newtonsoft.Json.Tests.TestObjects.SerializationEventTestObject'.", obj.Member5);
-    }
-
-    [Test]
-    public void ObjectWithConstructorEvents()
-    {
-      SerializationEventTestObjectWithConstructor obj = new SerializationEventTestObjectWithConstructor(11, "Hello World!", null);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("Hello World!", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-
-      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""Member1"": 11,
-  ""Member2"": ""This value went into the data file during serialization."",
-  ""Member4"": null
-}", json);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-
-      obj = JsonConvert.DeserializeObject<SerializationEventTestObjectWithConstructor>(json);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("This value went into the data file during serialization.", obj.Member2);
-      Assert.AreEqual("This value was set during deserialization", obj.Member3);
-      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
-    }
-
-    [Test]
-    public void ListEvents()
-    {
-      SerializationEventTestList obj = new SerializationEventTestList
-        {
-          1.1m,
-          2.222222222m,
-          int.MaxValue,
-          Convert.ToDecimal(Math.PI)
-        };
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("Hello World!", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-
-      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
-      Assert.AreEqual(@"[
-  -1.0,
-  1.1,
-  2.222222222,
-  2147483647.0,
-  3.14159265358979
-]", json);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-
-      obj = JsonConvert.DeserializeObject<SerializationEventTestList>(json);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("Hello World!", obj.Member2);
-      Assert.AreEqual("This value was set during deserialization", obj.Member3);
-      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
-    }
-
-    [Test]
-    public void DictionaryEvents()
-    {
-      SerializationEventTestDictionary obj = new SerializationEventTestDictionary
-        {
-          { 1.1m, "first" },
-          { 2.222222222m, "second" },
-          { int.MaxValue, "third" },
-          { Convert.ToDecimal(Math.PI), "fourth" }
-        };
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("Hello World!", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-
-      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""1.1"": ""first"",
-  ""2.222222222"": ""second"",
-  ""2147483647"": ""third"",
-  ""3.14159265358979"": ""fourth"",
-  ""79228162514264337593543950335"": ""Inserted on serializing""
-}", json);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
-      Assert.AreEqual("This is a nonserialized value", obj.Member3);
-      Assert.AreEqual(null, obj.Member4);
-
-      obj = JsonConvert.DeserializeObject<SerializationEventTestDictionary>(json);
-
-      Assert.AreEqual(11, obj.Member1);
-      Assert.AreEqual("Hello World!", obj.Member2);
-      Assert.AreEqual("This value was set during deserialization", obj.Member3);
-      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
-    }
-
-    [Test]
-    public void ObjectEventsDocumentationExample()
-    {
-      SerializationEventTestObject obj = new SerializationEventTestObject();
-
-      Console.WriteLine(obj.Member1);
-      // 11
-      Console.WriteLine(obj.Member2);
-      // Hello World!
-      Console.WriteLine(obj.Member3);
-      // This is a nonserialized value
-      Console.WriteLine(obj.Member4);
-      // null
-      Console.WriteLine(obj.Member5);
-      // null
-
-      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
-      // {
-      //   "Member1": 11,
-      //   "Member2": "This value went into the data file during serialization.",
-      //   "Member4": null
-      // }
-
-      Console.WriteLine(obj.Member1);
-      // 11
-      Console.WriteLine(obj.Member2);
-      // This value was reset after serialization.
-      Console.WriteLine(obj.Member3);
-      // This is a nonserialized value
-      Console.WriteLine(obj.Member4);
-      // null
-      Console.WriteLine(obj.Member5);
-      // Error message for member Member6 = Exception has been thrown by the target of an invocation.
-
-      obj = JsonConvert.DeserializeObject<SerializationEventTestObject>(json);
-
-      Console.WriteLine(obj.Member1);
-      // 11
-      Console.WriteLine(obj.Member2);
-      // This value went into the data file during serialization.
-      Console.WriteLine(obj.Member3);
-      // This value was set during deserialization
-      Console.WriteLine(obj.Member4);
-      // This value was set after deserialization.
-    }
-
-    public class SerializationEventBaseTestObject
-    {
-      public string TestMember { get; set; }
-
-      [OnSerializing]
-      internal void OnSerializingMethod(StreamingContext context)
-      {
-        TestMember = "Set!";
-      }
-    }
-
-    public class SerializationEventContextSubClassTestObject : SerializationEventBaseTestObject
-    {
-    }
-
-    [Test]
-    public void SerializationEventContextTestObjectSubClassTest()
-    {
-      SerializationEventContextSubClassTestObject obj = new SerializationEventContextSubClassTestObject();
-
-      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
-      Assert.AreEqual(@"{
-  ""TestMember"": ""Set!""
-}", json);
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    public class SerializationEventContextTestObject
-    {
-      public string TestMember { get; set; }
-
-      [OnSerializing]
-      internal void OnSerializingMethod(StreamingContext context)
-      {
-        TestMember = context.State + " " + context.Context;
-      }
-    }
-
-    [Test]
-    public void SerializationEventContextTest()
-    {
-      SerializationEventContextTestObject value = new SerializationEventContextTestObject();
-
-      string json = JsonConvert.SerializeObject(value, Formatting.Indented, new JsonSerializerSettings
-                                                                              {
-                                                                                Context =
-                                                                                  new StreamingContext(
-                                                                                  StreamingContextStates.Remoting,
-                                                                                  "ContextValue")
-                                                                              });
-
-      Assert.AreEqual(@"{
-  ""TestMember"": ""Remoting ContextValue""
-}", json);
-    }
-#endif
-
-    public void WhenSerializationErrorDetectedBySerializer_ThenCallbackIsCalled()
-    {
-      // Verify contract is properly finding our callback
-      var resolver = new DefaultContractResolver().ResolveContract(typeof(FooEvent));
-
-      Debug.Assert(resolver.OnError != null);
-      Debug.Assert(resolver.OnError == typeof(FooEvent).GetMethod("OnError", BindingFlags.Instance | BindingFlags.NonPublic));
-
-      var serializer = JsonSerializer.Create(new JsonSerializerSettings
-      {
-        // If I don't specify Error here, the callback isn't called
-        // either, but no exception is thrown.
-        MissingMemberHandling = MissingMemberHandling.Error,
-      });
-
-      // This throws with missing member exception, rather than calling my callback.
-      var foo = serializer.Deserialize<FooEvent>(new JsonTextReader(new StringReader("{ Id: 25 }")));
-
-      // When fixed, this would pass.
-      Debug.Assert(foo.Identifier == 25);
-    }
-
-    public class FooEvent
-    {
-      public int Identifier { get; set; }
-
-      [OnError]
-      private void OnError(StreamingContext context, ErrorContext error)
-      {
-        this.Identifier = 25;
-
-        // Here we could for example manually copy the
-        // persisted "Id" value into the renamed "Identifier"
-        // property, etc.
-        error.Handled = true;
-
-        // We never get here :(
-        Console.WriteLine("Error has been fixed");
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Reflection;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class SerializationEventAttributeTests : TestFixtureBase
+  {
+    [Test]
+    public void ObjectEvents()
+    {
+      SerializationEventTestObject obj = new SerializationEventTestObject();
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("Hello World!", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+      Assert.AreEqual(null, obj.Member5);
+
+      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Member1"": 11,
+  ""Member2"": ""This value went into the data file during serialization."",
+  ""Member4"": null
+}", json);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+      Assert.AreEqual("Error message for member Member6 = Error getting value from 'Member6' on 'Newtonsoft.Json.Tests.TestObjects.SerializationEventTestObject'.", obj.Member5);
+
+      JObject o = JObject.Parse(@"{
+  ""Member1"": 11,
+  ""Member2"": ""This value went into the data file during serialization."",
+  ""Member4"": null
+}");
+      o["Member6"] = "Dummy text for error";
+
+      obj = JsonConvert.DeserializeObject<SerializationEventTestObject>(o.ToString());
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("This value went into the data file during serialization.", obj.Member2);
+      Assert.AreEqual("This value was set during deserialization", obj.Member3);
+      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
+      Assert.AreEqual("Error message for member Member6 = Error setting value to 'Member6' on 'Newtonsoft.Json.Tests.TestObjects.SerializationEventTestObject'.", obj.Member5);
+    }
+
+    [Test]
+    public void ObjectWithConstructorEvents()
+    {
+      SerializationEventTestObjectWithConstructor obj = new SerializationEventTestObjectWithConstructor(11, "Hello World!", null);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("Hello World!", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+
+      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""Member1"": 11,
+  ""Member2"": ""This value went into the data file during serialization."",
+  ""Member4"": null
+}", json);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+
+      obj = JsonConvert.DeserializeObject<SerializationEventTestObjectWithConstructor>(json);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("This value went into the data file during serialization.", obj.Member2);
+      Assert.AreEqual("This value was set during deserialization", obj.Member3);
+      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
+    }
+
+    [Test]
+    public void ListEvents()
+    {
+      SerializationEventTestList obj = new SerializationEventTestList
+        {
+          1.1m,
+          2.222222222m,
+          int.MaxValue,
+          Convert.ToDecimal(Math.PI)
+        };
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("Hello World!", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+
+      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
+      Assert.AreEqual(@"[
+  -1.0,
+  1.1,
+  2.222222222,
+  2147483647.0,
+  3.14159265358979
+]", json);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+
+      obj = JsonConvert.DeserializeObject<SerializationEventTestList>(json);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("Hello World!", obj.Member2);
+      Assert.AreEqual("This value was set during deserialization", obj.Member3);
+      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
+    }
+
+    [Test]
+    public void DictionaryEvents()
+    {
+      SerializationEventTestDictionary obj = new SerializationEventTestDictionary
+        {
+          { 1.1m, "first" },
+          { 2.222222222m, "second" },
+          { int.MaxValue, "third" },
+          { Convert.ToDecimal(Math.PI), "fourth" }
+        };
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("Hello World!", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+
+      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""1.1"": ""first"",
+  ""2.222222222"": ""second"",
+  ""2147483647"": ""third"",
+  ""3.14159265358979"": ""fourth"",
+  ""79228162514264337593543950335"": ""Inserted on serializing""
+}", json);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("This value was reset after serialization.", obj.Member2);
+      Assert.AreEqual("This is a nonserialized value", obj.Member3);
+      Assert.AreEqual(null, obj.Member4);
+
+      obj = JsonConvert.DeserializeObject<SerializationEventTestDictionary>(json);
+
+      Assert.AreEqual(11, obj.Member1);
+      Assert.AreEqual("Hello World!", obj.Member2);
+      Assert.AreEqual("This value was set during deserialization", obj.Member3);
+      Assert.AreEqual("This value was set after deserialization.", obj.Member4);
+    }
+
+    [Test]
+    public void ObjectEventsDocumentationExample()
+    {
+      SerializationEventTestObject obj = new SerializationEventTestObject();
+
+      Console.WriteLine(obj.Member1);
+      // 11
+      Console.WriteLine(obj.Member2);
+      // Hello World!
+      Console.WriteLine(obj.Member3);
+      // This is a nonserialized value
+      Console.WriteLine(obj.Member4);
+      // null
+      Console.WriteLine(obj.Member5);
+      // null
+
+      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
+      // {
+      //   "Member1": 11,
+      //   "Member2": "This value went into the data file during serialization.",
+      //   "Member4": null
+      // }
+
+      Console.WriteLine(obj.Member1);
+      // 11
+      Console.WriteLine(obj.Member2);
+      // This value was reset after serialization.
+      Console.WriteLine(obj.Member3);
+      // This is a nonserialized value
+      Console.WriteLine(obj.Member4);
+      // null
+      Console.WriteLine(obj.Member5);
+      // Error message for member Member6 = Exception has been thrown by the target of an invocation.
+
+      obj = JsonConvert.DeserializeObject<SerializationEventTestObject>(json);
+
+      Console.WriteLine(obj.Member1);
+      // 11
+      Console.WriteLine(obj.Member2);
+      // This value went into the data file during serialization.
+      Console.WriteLine(obj.Member3);
+      // This value was set during deserialization
+      Console.WriteLine(obj.Member4);
+      // This value was set after deserialization.
+    }
+
+    public class SerializationEventBaseTestObject
+    {
+      public string TestMember { get; set; }
+
+      [OnSerializing]
+      internal void OnSerializingMethod(StreamingContext context)
+      {
+        TestMember = "Set!";
+      }
+    }
+
+    public class SerializationEventContextSubClassTestObject : SerializationEventBaseTestObject
+    {
+    }
+
+    [Test]
+    public void SerializationEventContextTestObjectSubClassTest()
+    {
+      SerializationEventContextSubClassTestObject obj = new SerializationEventContextSubClassTestObject();
+
+      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
+      Assert.AreEqual(@"{
+  ""TestMember"": ""Set!""
+}", json);
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    public class SerializationEventContextTestObject
+    {
+      public string TestMember { get; set; }
+
+      [OnSerializing]
+      internal void OnSerializingMethod(StreamingContext context)
+      {
+        TestMember = context.State + " " + context.Context;
+      }
+    }
+
+    [Test]
+    public void SerializationEventContextTest()
+    {
+      SerializationEventContextTestObject value = new SerializationEventContextTestObject();
+
+      string json = JsonConvert.SerializeObject(value, Formatting.Indented, new JsonSerializerSettings
+                                                                              {
+                                                                                Context =
+                                                                                  new StreamingContext(
+                                                                                  StreamingContextStates.Remoting,
+                                                                                  "ContextValue")
+                                                                              });
+
+      Assert.AreEqual(@"{
+  ""TestMember"": ""Remoting ContextValue""
+}", json);
+    }
+#endif
+
+    public void WhenSerializationErrorDetectedBySerializer_ThenCallbackIsCalled()
+    {
+      // Verify contract is properly finding our callback
+      var resolver = new DefaultContractResolver().ResolveContract(typeof(FooEvent));
+
+      Debug.Assert(resolver.OnError != null);
+      Debug.Assert(resolver.OnError == typeof(FooEvent).GetMethod("OnError", BindingFlags.Instance | BindingFlags.NonPublic));
+
+      var serializer = JsonSerializer.Create(new JsonSerializerSettings
+      {
+        // If I don't specify Error here, the callback isn't called
+        // either, but no exception is thrown.
+        MissingMemberHandling = MissingMemberHandling.Error,
+      });
+
+      // This throws with missing member exception, rather than calling my callback.
+      var foo = serializer.Deserialize<FooEvent>(new JsonTextReader(new StringReader("{ Id: 25 }")));
+
+      // When fixed, this would pass.
+      Debug.Assert(foo.Identifier == 25);
+    }
+
+    public class FooEvent
+    {
+      public int Identifier { get; set; }
+
+      [OnError]
+      private void OnError(StreamingContext context, ErrorContext error)
+      {
+        this.Identifier = 25;
+
+        // Here we could for example manually copy the
+        // persisted "Id" value into the renamed "Identifier"
+        // property, etc.
+        error.Handled = true;
+
+        // We never get here :(
+        Console.WriteLine("Error has been fixed");
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs
@@ -1,1041 +1,1041 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Runtime.Serialization.Formatters;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Tests.TestObjects;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Utilities;
-using System.Net;
-using System.Runtime.Serialization;
-using System.IO;
-
-namespace Newtonsoft.Json.Tests.Serialization
-{
-  [TestFixture]
-  public class TypeNameHandlingTests : TestFixtureBase
-  {
-    public class Wrapper
-    {
-      public IList<EmployeeReference> Array { get; set; }
-      public IDictionary<string, EmployeeReference> Dictionary { get; set; }
-    }
-
-    [Test]
-    public void SerializeWrapper()
-    {
-      Wrapper wrapper = new Wrapper();
-      wrapper.Array = new List<EmployeeReference>
-        {
-          new EmployeeReference()
-        };
-      wrapper.Dictionary = new Dictionary<string, EmployeeReference>
-        {
-          { "First", new EmployeeReference() }
-        };
-
-      string json = JsonConvert.SerializeObject(wrapper, Formatting.Indented, new JsonSerializerSettings
-        {
-          TypeNameHandling = TypeNameHandling.Auto
-        });
-
-      Assert.AreEqual(@"{
-  ""Array"": [
-    {
-      ""$id"": ""1"",
-      ""Name"": null,
-      ""Manager"": null
-    }
-  ],
-  ""Dictionary"": {
-    ""First"": {
-      ""$id"": ""2"",
-      ""Name"": null,
-      ""Manager"": null
-    }
-  }
-}", json);
-
-      Wrapper w2 = JsonConvert.DeserializeObject<Wrapper>(json);
-      CustomAssert.IsInstanceOfType(typeof(List<EmployeeReference>), w2.Array);
-      CustomAssert.IsInstanceOfType(typeof(Dictionary<string, EmployeeReference>), w2.Dictionary);
-    }
-
-    [Test]
-    public void WriteTypeNameForObjects()
-    {
-      string employeeRef = ReflectionUtils.GetTypeName(typeof(EmployeeReference), FormatterAssemblyStyle.Simple);
-
-      EmployeeReference employee = new EmployeeReference();
-
-      string json = JsonConvert.SerializeObject(employee, Formatting.Indented, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects
-      });
-
-      Assert.AreEqual(@"{
-  ""$id"": ""1"",
-  ""$type"": """ + employeeRef + @""",
-  ""Name"": null,
-  ""Manager"": null
-}", json);
-    }
-
-    [Test]
-    public void DeserializeTypeName()
-    {
-      string employeeRef = ReflectionUtils.GetTypeName(typeof(EmployeeReference), FormatterAssemblyStyle.Simple);
-
-      string json = @"{
-  ""$id"": ""1"",
-  ""$type"": """ + employeeRef + @""",
-  ""Name"": ""Name!"",
-  ""Manager"": null
-}";
-
-      object employee = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects
-      });
-
-      CustomAssert.IsInstanceOfType(typeof(EmployeeReference), employee);
-      Assert.AreEqual("Name!", ((EmployeeReference)employee).Name);
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    [Test]
-    public void DeserializeTypeNameFromGacAssembly()
-    {
-      string cookieRef = ReflectionUtils.GetTypeName(typeof(Cookie), FormatterAssemblyStyle.Simple);
-
-      string json = @"{
-  ""$id"": ""1"",
-  ""$type"": """ + cookieRef + @"""
-}";
-
-      object cookie = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects
-      });
-
-      CustomAssert.IsInstanceOfType(typeof(Cookie), cookie);
-    }
-#endif
-
-    [Test]
-    public void SerializeGenericObjectListWithTypeName()
-    {
-      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
-      string personRef = typeof(Person).AssemblyQualifiedName;
-
-      List<object> values = new List<object>
-        {
-          new EmployeeReference
-            {
-              Name = "Bob",
-              Manager = new EmployeeReference {Name = "Frank"}
-            },
-          new Person
-            {
-              Department = "Department",
-              BirthDate = new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc),
-              LastModified = new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc)
-            },
-          "String!",
-          int.MinValue
-        };
-
-      string json = JsonConvert.SerializeObject(values, Formatting.Indented, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects,
-        TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
-      });
-
-      Assert.AreEqual(@"[
-  {
-    ""$id"": ""1"",
-    ""$type"": """ + employeeRef + @""",
-    ""Name"": ""Bob"",
-    ""Manager"": {
-      ""$id"": ""2"",
-      ""$type"": """ + employeeRef + @""",
-      ""Name"": ""Frank"",
-      ""Manager"": null
-    }
-  },
-  {
-    ""$type"": """ + personRef + @""",
-    ""Name"": null,
-    ""BirthDate"": ""2000-12-30T00:00:00Z"",
-    ""LastModified"": ""2000-12-30T00:00:00Z""
-  },
-  ""String!"",
-  -2147483648
-]", json);
-    }
-
-    [Test]
-    public void DeserializeGenericObjectListWithTypeName()
-    {
-      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
-      string personRef = typeof(Person).AssemblyQualifiedName;
-
-      string json = @"[
-  {
-    ""$id"": ""1"",
-    ""$type"": """ + employeeRef + @""",
-    ""Name"": ""Bob"",
-    ""Manager"": {
-      ""$id"": ""2"",
-      ""$type"": """ + employeeRef + @""",
-      ""Name"": ""Frank"",
-      ""Manager"": null
-    }
-  },
-  {
-    ""$type"": """ + personRef + @""",
-    ""Name"": null,
-    ""BirthDate"": ""\/Date(978134400000)\/"",
-    ""LastModified"": ""\/Date(978134400000)\/""
-  },
-  ""String!"",
-  -2147483648
-]";
-
-      List<object> values = (List<object>)JsonConvert.DeserializeObject(json, typeof(List<object>), new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects,
-        TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
-      });
-
-      Assert.AreEqual(4, values.Count);
-
-      EmployeeReference e = (EmployeeReference)values[0];
-      Person p = (Person)values[1];
-
-      Assert.AreEqual("Bob", e.Name);
-      Assert.AreEqual("Frank", e.Manager.Name);
-
-      Assert.AreEqual(null, p.Name);
-      Assert.AreEqual(new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc), p.BirthDate);
-      Assert.AreEqual(new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc), p.LastModified);
-
-      Assert.AreEqual("String!", values[2]);
-      Assert.AreEqual((long)int.MinValue, values[3]);
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException))]
-    public void DeserializeWithBadTypeName()
-    {
-      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
-
-      string json = @"{
-  ""$id"": ""1"",
-  ""$type"": """ + employeeRef + @""",
-  ""Name"": ""Name!"",
-  ""Manager"": null
-}";
-
-      JsonConvert.DeserializeObject(json, typeof(Person), new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects,
-        TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
-      });
-    }
-
-    [Test]
-    public void DeserializeTypeNameWithNoTypeNameHandling()
-    {
-      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
-
-      string json = @"{
-  ""$id"": ""1"",
-  ""$type"": """ + employeeRef + @""",
-  ""Name"": ""Name!"",
-  ""Manager"": null
-}";
-
-      JObject o = (JObject)JsonConvert.DeserializeObject(json);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""Name!"",
-  ""Manager"": null
-}", o.ToString());
-    }
-
-    [Test]
-    [ExpectedException(typeof(JsonSerializationException)
-#if !NETFX_CORE
-      , ExpectedMessage = "Type specified in JSON 'Newtonsoft.Json.Tests.TestObjects.Employee' was not resolved. Line 3, position 56."
-#endif
-      )]
-    public void DeserializeTypeNameOnly()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""$type"": ""Newtonsoft.Json.Tests.TestObjects.Employee"",
-  ""Name"": ""Name!"",
-  ""Manager"": null
-}";
-
-      JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects
-      });
-    }
-
-    public interface ICorrelatedMessage
-    {
-      string CorrelationId { get; set; }
-    }
-
-    public class SendHttpRequest : ICorrelatedMessage
-    {
-      public SendHttpRequest()
-      {
-        RequestEncoding = "UTF-8";
-        Method = "GET";
-      }
-      public string Method { get; set; }
-      public Dictionary<string, string> Headers { get; set; }
-      public string Url { get; set; }
-      public Dictionary<string, string> RequestData;
-      public string RequestBodyText { get; set; }
-      public string User { get; set; }
-      public string Passwd { get; set; }
-      public string RequestEncoding { get; set; }
-      public string CorrelationId { get; set; }
-    }
-
-    [Test]
-    public void DeserializeGenericTypeName()
-    {
-      string typeName = typeof(SendHttpRequest).AssemblyQualifiedName;
-
-      string json = @"{
-""$type"": """ + typeName + @""",
-""RequestData"": {
-""$type"": ""System.Collections.Generic.Dictionary`2[[System.String, mscorlib,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"",
-""Id"": ""siedemnaście"",
-""X"": ""323""
-},
-""Method"": ""GET"",
-""Url"": ""http://www.onet.pl"",
-""RequestEncoding"": ""UTF-8"",
-""CorrelationId"": ""xyz""
-}";
-
-      ICorrelatedMessage message = JsonConvert.DeserializeObject<ICorrelatedMessage>(json, new JsonSerializerSettings
-        {
-          TypeNameHandling = TypeNameHandling.Objects,
-          TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
-        });
-
-      CustomAssert.IsInstanceOfType(typeof(SendHttpRequest), message);
-
-      SendHttpRequest request = (SendHttpRequest)message;
-      Assert.AreEqual("xyz", request.CorrelationId);
-      Assert.AreEqual(2, request.RequestData.Count);
-      Assert.AreEqual("siedemnaście", request.RequestData["Id"]);
-    }
-
-    [Test]
-    public void SerializeObjectWithMultipleGenericLists()
-    {
-      string containerTypeName = typeof(Container).AssemblyQualifiedName;
-      string productListTypeName = typeof(List<Product>).AssemblyQualifiedName;
-
-      Container container = new Container
-                          {
-                            In = new List<Product>(),
-                            Out = new List<Product>()
-                          };
-
-      string json = JsonConvert.SerializeObject(container, Formatting.Indented,
-          new JsonSerializerSettings
-              {
-                NullValueHandling = NullValueHandling.Ignore,
-                TypeNameHandling = TypeNameHandling.All,
-                TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
-              });
-
-      Assert.AreEqual(@"{
-  ""$type"": """ + containerTypeName + @""",
-  ""In"": {
-    ""$type"": """ + productListTypeName + @""",
-    ""$values"": []
-  },
-  ""Out"": {
-    ""$type"": """ + productListTypeName + @""",
-    ""$values"": []
-  }
-}", json);
-    }
-
-    public class TypeNameProperty
-    {
-      public string Name { get; set; }
-      [JsonProperty(TypeNameHandling = TypeNameHandling.All)]
-      public object Value { get; set; }
-    }
-
-    [Test]
-    public void WriteObjectTypeNameForProperty()
-    {
-      string typeNamePropertyRef = ReflectionUtils.GetTypeName(typeof(TypeNameProperty), FormatterAssemblyStyle.Simple);
-
-      TypeNameProperty typeNameProperty = new TypeNameProperty
-                                            {
-                                              Name = "Name!",
-                                              Value = new TypeNameProperty
-                                                        {
-                                                          Name = "Nested!"
-                                                        }
-                                            };
-
-      string json = JsonConvert.SerializeObject(typeNameProperty, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""Name!"",
-  ""Value"": {
-    ""$type"": """ + typeNamePropertyRef + @""",
-    ""Name"": ""Nested!"",
-    ""Value"": null
-  }
-}", json);
-
-      TypeNameProperty deserialized = JsonConvert.DeserializeObject<TypeNameProperty>(json);
-      Assert.AreEqual("Name!", deserialized.Name);
-      CustomAssert.IsInstanceOfType(typeof(TypeNameProperty), deserialized.Value);
-
-      TypeNameProperty nested = (TypeNameProperty)deserialized.Value;
-      Assert.AreEqual("Nested!", nested.Name);
-      Assert.AreEqual(null, nested.Value);
-    }
-
-    [Test]
-    public void WriteListTypeNameForProperty()
-    {
-      string listRef = ReflectionUtils.GetTypeName(typeof(List<int>), FormatterAssemblyStyle.Simple);
-
-      TypeNameProperty typeNameProperty = new TypeNameProperty
-      {
-        Name = "Name!",
-        Value = new List<int> { 1, 2, 3, 4, 5 }
-      };
-
-      string json = JsonConvert.SerializeObject(typeNameProperty, Formatting.Indented);
-
-      Assert.AreEqual(@"{
-  ""Name"": ""Name!"",
-  ""Value"": {
-    ""$type"": """ + listRef + @""",
-    ""$values"": [
-      1,
-      2,
-      3,
-      4,
-      5
-    ]
-  }
-}", json);
-
-      TypeNameProperty deserialized = JsonConvert.DeserializeObject<TypeNameProperty>(json);
-      Assert.AreEqual("Name!", deserialized.Name);
-      CustomAssert.IsInstanceOfType(typeof(List<int>), deserialized.Value);
-
-      List<int> nested = (List<int>)deserialized.Value;
-      Assert.AreEqual(5, nested.Count);
-      Assert.AreEqual(1, nested[0]);
-      Assert.AreEqual(2, nested[1]);
-      Assert.AreEqual(3, nested[2]);
-      Assert.AreEqual(4, nested[3]);
-      Assert.AreEqual(5, nested[4]);
-    }
-
-    [Test]
-    public void DeserializeUsingCustomBinder()
-    {
-      string json = @"{
-  ""$id"": ""1"",
-  ""$type"": ""Newtonsoft.Json.Tests.TestObjects.Employee"",
-  ""Name"": ""Name!""
-}";
-
-      object p = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Objects,
-        Binder = new CustomSerializationBinder()
-      });
-
-      CustomAssert.IsInstanceOfType(typeof(Person), p);
-
-      Person person = (Person)p;
-
-      Assert.AreEqual("Name!", person.Name);
-    }
-
-    public class CustomSerializationBinder : SerializationBinder
-    {
-      public override Type BindToType(string assemblyName, string typeName)
-      {
-        return typeof (Person);
-      }
-    }
-
-#if !(NET20 || NET35)
-    [Test]
-    public void SerializeUsingCustomBinder()
-    {
-      TypeNameSerializationBinder binder = new TypeNameSerializationBinder("Newtonsoft.Json.Tests.Serialization.{0}, Newtonsoft.Json.Tests");
-
-      IList<object> values = new List<object>
-        {
-          new Customer
-            {
-              Name = "Caroline Customer"
-            },
-          new Purchase
-            {
-              ProductName = "Elbow Grease",
-              Price = 5.99m,
-              Quantity = 1
-            }
-        };
-
-      string json = JsonConvert.SerializeObject(values, Formatting.Indented, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.Auto,
-        Binder = binder
-      });
-      
-      //[
-      //  {
-      //    "$type": "Customer",
-      //    "Name": "Caroline Customer"
-      //  },
-      //  {
-      //    "$type": "Purchase",
-      //    "ProductName": "Elbow Grease",
-      //    "Price": 5.99,
-      //    "Quantity": 1
-      //  }
-      //]
-
-
-      Assert.AreEqual(@"[
-  {
-    ""$type"": ""Customer"",
-    ""Name"": ""Caroline Customer""
-  },
-  {
-    ""$type"": ""Purchase"",
-    ""ProductName"": ""Elbow Grease"",
-    ""Price"": 5.99,
-    ""Quantity"": 1
-  }
-]", json);
-
-      IList<object> newValues = JsonConvert.DeserializeObject<IList<object>>(json, new JsonSerializerSettings
-        {
-          TypeNameHandling = TypeNameHandling.Auto,
-          Binder = new TypeNameSerializationBinder("Newtonsoft.Json.Tests.Serialization.{0}, Newtonsoft.Json.Tests")
-        });
-
-      CustomAssert.IsInstanceOfType(typeof(Customer), newValues[0]);
-      Customer customer = (Customer)newValues[0];
-      Assert.AreEqual("Caroline Customer", customer.Name);
-
-      CustomAssert.IsInstanceOfType(typeof(Purchase), newValues[1]);
-      Purchase purchase = (Purchase)newValues[1];
-      Assert.AreEqual("Elbow Grease", purchase.ProductName);
-    }
-
-    public class TypeNameSerializationBinder : SerializationBinder
-    {
-      public string TypeFormat { get; private set; }
-
-      public TypeNameSerializationBinder(string typeFormat)
-      {
-        TypeFormat = typeFormat;
-      }
-
-      public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
-      {
-        assemblyName = null;
-        typeName = serializedType.Name;
-      }
-
-      public override Type BindToType(string assemblyName, string typeName)
-      {
-        string resolvedTypeName = string.Format(TypeFormat, typeName);
-
-        return Type.GetType(resolvedTypeName, true);
-      }
-    }
-#endif
-
-    [Test]
-    public void CollectionWithAbstractItems()
-    {
-      HolderClass testObject = new HolderClass();
-      testObject.TestMember = new ContentSubClass("First One");
-      testObject.AnotherTestMember = new Dictionary<int, IList<ContentBaseClass>>();
-      testObject.AnotherTestMember.Add(1, new List<ContentBaseClass>());
-      testObject.AnotherTestMember[1].Add(new ContentSubClass("Second One"));
-      testObject.AThirdTestMember = new ContentSubClass("Third One");
-
-
-      JsonSerializer serializingTester = new JsonSerializer();
-      serializingTester.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
-
-      StringWriter sw = new StringWriter();
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = Formatting.Indented;
-        serializingTester.TypeNameHandling = TypeNameHandling.Auto;
-        serializingTester.Serialize(jsonWriter, testObject);
-      }
-
-      string json = sw.ToString();
-
-      string contentSubClassRef = ReflectionUtils.GetTypeName(typeof(ContentSubClass), FormatterAssemblyStyle.Simple);
-      string dictionaryRef = ReflectionUtils.GetTypeName(typeof(Dictionary<int, IList<ContentBaseClass>>), FormatterAssemblyStyle.Simple);
-      string listRef = ReflectionUtils.GetTypeName(typeof(List<ContentBaseClass>), FormatterAssemblyStyle.Simple);
-
-
-      Assert.AreEqual(@"{
-  ""TestMember"": {
-    ""$type"": """ + contentSubClassRef + @""",
-    ""SomeString"": ""First One""
-  },
-  ""AnotherTestMember"": {
-    ""$type"": """ + dictionaryRef + @""",
-    ""1"": {
-      ""$type"": """ + listRef + @""",
-      ""$values"": [
-        {
-          ""$type"": """ + contentSubClassRef + @""",
-          ""SomeString"": ""Second One""
-        }
-      ]
-    }
-  },
-  ""AThirdTestMember"": {
-    ""$type"": """ + contentSubClassRef + @""",
-    ""SomeString"": ""Third One""
-  }
-}", json);
-      Console.WriteLine(json);
-
-      StringReader sr = new StringReader(json);
-
-      JsonSerializer deserializingTester = new JsonSerializer();
-
-      HolderClass anotherTestObject;
-
-      using (JsonTextReader jsonReader = new JsonTextReader(sr))
-      {
-        deserializingTester.TypeNameHandling = TypeNameHandling.Auto;
-
-        anotherTestObject = deserializingTester.Deserialize<HolderClass>(jsonReader);
-      }
-
-      Assert.IsNotNull(anotherTestObject);
-      CustomAssert.IsInstanceOfType(typeof(ContentSubClass), anotherTestObject.TestMember);
-      CustomAssert.IsInstanceOfType(typeof(Dictionary<int, IList<ContentBaseClass>>), anotherTestObject.AnotherTestMember);
-      Assert.AreEqual(1, anotherTestObject.AnotherTestMember.Count);
-
-      IList<ContentBaseClass> list = anotherTestObject.AnotherTestMember[1];
-
-      CustomAssert.IsInstanceOfType(typeof(List<ContentBaseClass>), list);
-      Assert.AreEqual(1, list.Count);
-      CustomAssert.IsInstanceOfType(typeof(ContentSubClass), list[0]);
-    }
-
-    [Test]
-    public void WriteObjectTypeNameForPropertyDemo()
-    {
-      Message message = new Message();
-      message.Address = "http://www.google.com";
-      message.Body = new SearchDetails
-        {
-          Query = "Json.NET",
-          Language = "en-us"
-        };
-
-      string json = JsonConvert.SerializeObject(message, Formatting.Indented);
-      // {
-      //   "Address": "http://www.google.com",
-      //   "Body": {
-      //     "$type": "Newtonsoft.Json.Tests.Serialization.SearchDetails, Newtonsoft.Json.Tests",
-      //     "Query": "Json.NET",
-      //     "Language": "en-us"
-      //   }
-      // }
-
-      Message deserialized = JsonConvert.DeserializeObject<Message>(json);
-
-      SearchDetails searchDetails = (SearchDetails) deserialized.Body;
-      // Json.NET
-    }
-
-    public class UrlStatus
-    {
-      public int Status { get; set; }
-      public string Url { get; set; }
-    }
-
-
-    [Test]
-    public void GenericDictionaryObject()
-    {
-      Dictionary<string, object> collection = new Dictionary<string, object>()
-        {
-          {"First", new UrlStatus{ Status = 404, Url = @"http://www.bing.com"}},
-          {"Second", new UrlStatus{Status = 400, Url = @"http://www.google.com"}},
-          {"List", new List<UrlStatus>
-            {
-              new UrlStatus {Status = 300, Url = @"http://www.yahoo.com"},
-              new UrlStatus {Status = 200, Url = @"http://www.askjeeves.com"}
-            }
-          }
-        };
-
-      string json = JsonConvert.SerializeObject(collection, Formatting.Indented, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.All,
-        TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
-      });
-
-      string urlStatusTypeName = ReflectionUtils.GetTypeName(typeof (UrlStatus), FormatterAssemblyStyle.Simple);
-
-      Assert.AreEqual(@"{
-  ""$type"": ""System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Object, mscorlib]], mscorlib"",
-  ""First"": {
-    ""$type"": """ + urlStatusTypeName + @""",
-    ""Status"": 404,
-    ""Url"": ""http://www.bing.com""
-  },
-  ""Second"": {
-    ""$type"": """ + urlStatusTypeName + @""",
-    ""Status"": 400,
-    ""Url"": ""http://www.google.com""
-  },
-  ""List"": {
-    ""$type"": ""System.Collections.Generic.List`1[[" + urlStatusTypeName + @"]], mscorlib"",
-    ""$values"": [
-      {
-        ""$type"": """ + urlStatusTypeName + @""",
-        ""Status"": 300,
-        ""Url"": ""http://www.yahoo.com""
-      },
-      {
-        ""$type"": """ + urlStatusTypeName + @""",
-        ""Status"": 200,
-        ""Url"": ""http://www.askjeeves.com""
-      }
-    ]
-  }
-}", json);
-
-      object c = JsonConvert.DeserializeObject(json, new JsonSerializerSettings
-      {
-        TypeNameHandling = TypeNameHandling.All,
-        TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
-      });
-
-      CustomAssert.IsInstanceOfType(typeof(Dictionary<string, object>), c);
-
-      Dictionary<string, object> newCollection = (Dictionary<string, object>)c;
-      Assert.AreEqual(3, newCollection.Count);
-      Assert.AreEqual(@"http://www.bing.com", ((UrlStatus)newCollection["First"]).Url);
-
-      List<UrlStatus> statues = (List<UrlStatus>) newCollection["List"];
-      Assert.AreEqual(2, statues.Count);
-    }
-
-
-    [Test]
-    public void SerializingIEnumerableOfTShouldRetainGenericTypeInfo()
-    {
-      string productClassRef = ReflectionUtils.GetTypeName(typeof(Product[]), FormatterAssemblyStyle.Simple);
-
-      CustomEnumerable<Product> products = new CustomEnumerable<Product>();
-
-      string json = JsonConvert.SerializeObject(products, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All });
-
-      Assert.AreEqual(@"{
-  ""$type"": """ + productClassRef + @""",
-  ""$values"": []
-}", json);
-    }
-
-    public class CustomEnumerable<T> : IEnumerable<T>
-    {
-      //NOTE: a simple linked list
-      private readonly T value;
-      private readonly CustomEnumerable<T> next;
-      private readonly int count;
-
-      private CustomEnumerable(T value, CustomEnumerable<T> next)
-      {
-        this.value = value;
-        this.next = next;
-        count = this.next.count + 1;
-      }
-
-      public CustomEnumerable()
-      {
-        count = 0;
-      }
-
-      public CustomEnumerable<T> AddFirst(T newVal)
-      {
-        return new CustomEnumerable<T>(newVal, this);
-      }
-
-      public IEnumerator<T> GetEnumerator()
-      {
-        if (count == 0) // last node
-          yield break;
-        yield return value;
-
-        var nextInLine = next;
-        while (nextInLine != null)
-        {
-          if (nextInLine.count != 0)
-            yield return nextInLine.value;
-          nextInLine = nextInLine.next;
-        }
-      }
-
-      IEnumerator IEnumerable.GetEnumerator()
-      {
-        return GetEnumerator();
-      }
-    }
-
-    public class Car
-    {
-      // included in JSON
-      public string Model { get; set; }
-      public DateTime Year { get; set; }
-      public List<string> Features { get; set; }
-      public object[] Objects { get; set; }
-
-      // ignored
-      [JsonIgnore]
-      public DateTime LastModified { get; set; }
-    }
-
-    [Test]
-    public void ByteArrays()
-    {
-      Car testerObject = new Car();
-      testerObject.Year = new DateTime(2000, 10, 5, 1, 1, 1, DateTimeKind.Utc);
-      byte[] data = new byte[] {75, 65, 82, 73, 82, 65};
-      testerObject.Objects = new object[] { data, "prueba" };
-
-      JsonSerializerSettings jsonSettings = new JsonSerializerSettings();
-      jsonSettings.NullValueHandling = NullValueHandling.Ignore;
-      jsonSettings.TypeNameHandling = TypeNameHandling.All;
-
-      string output = JsonConvert.SerializeObject(testerObject, Formatting.Indented, jsonSettings);
-
-      string carClassRef = ReflectionUtils.GetTypeName(typeof(Car), FormatterAssemblyStyle.Simple);
-
-      Assert.AreEqual(output, @"{
-  ""$type"": """ + carClassRef + @""",
-  ""Year"": ""2000-10-05T01:01:01Z"",
-  ""Objects"": {
-    ""$type"": ""System.Object[], mscorlib"",
-    ""$values"": [
-      {
-        ""$type"": ""System.Byte[], mscorlib"",
-        ""$value"": ""S0FSSVJB""
-      },
-      ""prueba""
-    ]
-  }
-}");
-      Car obj = JsonConvert.DeserializeObject<Car>(output, jsonSettings);
-
-      Assert.IsNotNull(obj);
-
-      Assert.IsTrue(obj.Objects[0] is byte[]);
-
-      byte[] d = (byte[])obj.Objects[0];
-      CollectionAssert.AreEquivalent(data, d);
-    }
-
-#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
-    [Test]
-    public void ISerializableTypeNameHandlingTest()
-    {
-      //Create an instance of our example type
-      IExample e = new Example("Rob");
-
-      SerializableWrapper w = new SerializableWrapper
-        {
-          Content = e
-        };
-
-      //Test Binary Serialization Round Trip
-      //This will work find because the Binary Formatter serializes type names
-      //this.TestBinarySerializationRoundTrip(e);
-
-      //Test Json Serialization
-      //This fails because the JsonSerializer doesn't serialize type names correctly for ISerializable objects
-      //Type Names should be serialized for All, Auto and Object modes
-      this.TestJsonSerializationRoundTrip(w, TypeNameHandling.All);
-      this.TestJsonSerializationRoundTrip(w, TypeNameHandling.Auto);
-      this.TestJsonSerializationRoundTrip(w, TypeNameHandling.Objects);
-    }
-
-    private void TestJsonSerializationRoundTrip(SerializableWrapper e, TypeNameHandling flag)
-    {
-      Console.WriteLine("Type Name Handling: " + flag.ToString());
-      StringWriter writer = new StringWriter();
-
-      //Create our serializer and set Type Name Handling appropriately
-      JsonSerializer serializer = new JsonSerializer();
-      serializer.TypeNameHandling = flag;
-
-      //Do the actual serialization and dump to Console for inspection
-      serializer.Serialize(new JsonTextWriter(writer), e);
-      Console.WriteLine(writer.ToString());
-      Console.WriteLine();
-
-      //Now try to deserialize
-      //Json.Net will cause an error here as it will try and instantiate
-      //the interface directly because it failed to respect the
-      //TypeNameHandling property on serialization
-      SerializableWrapper f = serializer.Deserialize<SerializableWrapper>(new JsonTextReader(new StringReader(writer.ToString())));
-
-      //Check Round Trip
-      Assert.AreEqual(e, f, "Objects should be equal after round trip json serialization");
-    }
-#endif
-  }
-
-  public class Message
-  {
-    public string Address { get; set; }
-
-    [JsonProperty(TypeNameHandling = TypeNameHandling.All)]
-    public object Body { get; set; }
-  }
-
-  public class SearchDetails
-  {
-    public string Query { get; set; }
-    public string Language { get; set; }
-  }
-
-  public class Customer
-  {
-    public string Name { get; set; }
-  }
-
-  public class Purchase
-  {
-    public string ProductName { get; set; }
-    public decimal Price { get; set; }
-    public int Quantity { get; set; }
-  }
-
-#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
-  public class SerializableWrapper
-  {
-    public object Content { get; set; }
-
-    public override bool Equals(object obj)
-    {
-      SerializableWrapper w = obj as SerializableWrapper;
-
-      if (w == null)
-        return false;
-
-      return Equals(w.Content, Content);
-    }
-  }
-
-  public interface IExample
-    : ISerializable
-  {
-    String Name
-    {
-      get;
-    }
-  }
-
-  [Serializable]
-  public class Example
-      : IExample
-  {
-    public Example(String name)
-    {
-      this.Name = name;
-    }
-
-    protected Example(SerializationInfo info, StreamingContext context)
-    {
-      this.Name = info.GetString("name");
-    }
-
-    public void GetObjectData(SerializationInfo info, StreamingContext context)
-    {
-      info.AddValue("name", this.Name);
-    }
-
-    public String Name { get; set; }
-
-    public override bool Equals(object obj)
-    {
-      if (obj == null) return false;
-      if (ReferenceEquals(this, obj)) return true;
-      if (obj is IExample)
-      {
-        return this.Name.Equals(((IExample)obj).Name);
-      }
-      else
-      {
-        return false;
-      }
-    }
-  }
-#endif
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.Serialization.Formatters;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Tests.TestObjects;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Utilities;
+using System.Net;
+using System.Runtime.Serialization;
+using System.IO;
+
+namespace Newtonsoft.Json.Tests.Serialization
+{
+  [TestFixture]
+  public class TypeNameHandlingTests : TestFixtureBase
+  {
+    public class Wrapper
+    {
+      public IList<EmployeeReference> Array { get; set; }
+      public IDictionary<string, EmployeeReference> Dictionary { get; set; }
+    }
+
+    [Test]
+    public void SerializeWrapper()
+    {
+      Wrapper wrapper = new Wrapper();
+      wrapper.Array = new List<EmployeeReference>
+        {
+          new EmployeeReference()
+        };
+      wrapper.Dictionary = new Dictionary<string, EmployeeReference>
+        {
+          { "First", new EmployeeReference() }
+        };
+
+      string json = JsonConvert.SerializeObject(wrapper, Formatting.Indented, new JsonSerializerSettings
+        {
+          TypeNameHandling = TypeNameHandling.Auto
+        });
+
+      Assert.AreEqual(@"{
+  ""Array"": [
+    {
+      ""$id"": ""1"",
+      ""Name"": null,
+      ""Manager"": null
+    }
+  ],
+  ""Dictionary"": {
+    ""First"": {
+      ""$id"": ""2"",
+      ""Name"": null,
+      ""Manager"": null
+    }
+  }
+}", json);
+
+      Wrapper w2 = JsonConvert.DeserializeObject<Wrapper>(json);
+      CustomAssert.IsInstanceOfType(typeof(List<EmployeeReference>), w2.Array);
+      CustomAssert.IsInstanceOfType(typeof(Dictionary<string, EmployeeReference>), w2.Dictionary);
+    }
+
+    [Test]
+    public void WriteTypeNameForObjects()
+    {
+      string employeeRef = ReflectionUtils.GetTypeName(typeof(EmployeeReference), FormatterAssemblyStyle.Simple);
+
+      EmployeeReference employee = new EmployeeReference();
+
+      string json = JsonConvert.SerializeObject(employee, Formatting.Indented, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects
+      });
+
+      Assert.AreEqual(@"{
+  ""$id"": ""1"",
+  ""$type"": """ + employeeRef + @""",
+  ""Name"": null,
+  ""Manager"": null
+}", json);
+    }
+
+    [Test]
+    public void DeserializeTypeName()
+    {
+      string employeeRef = ReflectionUtils.GetTypeName(typeof(EmployeeReference), FormatterAssemblyStyle.Simple);
+
+      string json = @"{
+  ""$id"": ""1"",
+  ""$type"": """ + employeeRef + @""",
+  ""Name"": ""Name!"",
+  ""Manager"": null
+}";
+
+      object employee = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects
+      });
+
+      CustomAssert.IsInstanceOfType(typeof(EmployeeReference), employee);
+      Assert.AreEqual("Name!", ((EmployeeReference)employee).Name);
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    [Test]
+    public void DeserializeTypeNameFromGacAssembly()
+    {
+      string cookieRef = ReflectionUtils.GetTypeName(typeof(Cookie), FormatterAssemblyStyle.Simple);
+
+      string json = @"{
+  ""$id"": ""1"",
+  ""$type"": """ + cookieRef + @"""
+}";
+
+      object cookie = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects
+      });
+
+      CustomAssert.IsInstanceOfType(typeof(Cookie), cookie);
+    }
+#endif
+
+    [Test]
+    public void SerializeGenericObjectListWithTypeName()
+    {
+      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
+      string personRef = typeof(Person).AssemblyQualifiedName;
+
+      List<object> values = new List<object>
+        {
+          new EmployeeReference
+            {
+              Name = "Bob",
+              Manager = new EmployeeReference {Name = "Frank"}
+            },
+          new Person
+            {
+              Department = "Department",
+              BirthDate = new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc),
+              LastModified = new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc)
+            },
+          "String!",
+          int.MinValue
+        };
+
+      string json = JsonConvert.SerializeObject(values, Formatting.Indented, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects,
+        TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
+      });
+
+      Assert.AreEqual(@"[
+  {
+    ""$id"": ""1"",
+    ""$type"": """ + employeeRef + @""",
+    ""Name"": ""Bob"",
+    ""Manager"": {
+      ""$id"": ""2"",
+      ""$type"": """ + employeeRef + @""",
+      ""Name"": ""Frank"",
+      ""Manager"": null
+    }
+  },
+  {
+    ""$type"": """ + personRef + @""",
+    ""Name"": null,
+    ""BirthDate"": ""2000-12-30T00:00:00Z"",
+    ""LastModified"": ""2000-12-30T00:00:00Z""
+  },
+  ""String!"",
+  -2147483648
+]", json);
+    }
+
+    [Test]
+    public void DeserializeGenericObjectListWithTypeName()
+    {
+      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
+      string personRef = typeof(Person).AssemblyQualifiedName;
+
+      string json = @"[
+  {
+    ""$id"": ""1"",
+    ""$type"": """ + employeeRef + @""",
+    ""Name"": ""Bob"",
+    ""Manager"": {
+      ""$id"": ""2"",
+      ""$type"": """ + employeeRef + @""",
+      ""Name"": ""Frank"",
+      ""Manager"": null
+    }
+  },
+  {
+    ""$type"": """ + personRef + @""",
+    ""Name"": null,
+    ""BirthDate"": ""\/Date(978134400000)\/"",
+    ""LastModified"": ""\/Date(978134400000)\/""
+  },
+  ""String!"",
+  -2147483648
+]";
+
+      List<object> values = (List<object>)JsonConvert.DeserializeObject(json, typeof(List<object>), new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects,
+        TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
+      });
+
+      Assert.AreEqual(4, values.Count);
+
+      EmployeeReference e = (EmployeeReference)values[0];
+      Person p = (Person)values[1];
+
+      Assert.AreEqual("Bob", e.Name);
+      Assert.AreEqual("Frank", e.Manager.Name);
+
+      Assert.AreEqual(null, p.Name);
+      Assert.AreEqual(new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc), p.BirthDate);
+      Assert.AreEqual(new DateTime(2000, 12, 30, 0, 0, 0, DateTimeKind.Utc), p.LastModified);
+
+      Assert.AreEqual("String!", values[2]);
+      Assert.AreEqual((long)int.MinValue, values[3]);
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException))]
+    public void DeserializeWithBadTypeName()
+    {
+      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
+
+      string json = @"{
+  ""$id"": ""1"",
+  ""$type"": """ + employeeRef + @""",
+  ""Name"": ""Name!"",
+  ""Manager"": null
+}";
+
+      JsonConvert.DeserializeObject(json, typeof(Person), new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects,
+        TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
+      });
+    }
+
+    [Test]
+    public void DeserializeTypeNameWithNoTypeNameHandling()
+    {
+      string employeeRef = typeof(EmployeeReference).AssemblyQualifiedName;
+
+      string json = @"{
+  ""$id"": ""1"",
+  ""$type"": """ + employeeRef + @""",
+  ""Name"": ""Name!"",
+  ""Manager"": null
+}";
+
+      JObject o = (JObject)JsonConvert.DeserializeObject(json);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""Name!"",
+  ""Manager"": null
+}", o.ToString());
+    }
+
+    [Test]
+    [ExpectedException(typeof(JsonSerializationException)
+#if !NETFX_CORE
+      , ExpectedMessage = "Type specified in JSON 'Newtonsoft.Json.Tests.TestObjects.Employee' was not resolved. Line 3, position 56."
+#endif
+      )]
+    public void DeserializeTypeNameOnly()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""$type"": ""Newtonsoft.Json.Tests.TestObjects.Employee"",
+  ""Name"": ""Name!"",
+  ""Manager"": null
+}";
+
+      JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects
+      });
+    }
+
+    public interface ICorrelatedMessage
+    {
+      string CorrelationId { get; set; }
+    }
+
+    public class SendHttpRequest : ICorrelatedMessage
+    {
+      public SendHttpRequest()
+      {
+        RequestEncoding = "UTF-8";
+        Method = "GET";
+      }
+      public string Method { get; set; }
+      public Dictionary<string, string> Headers { get; set; }
+      public string Url { get; set; }
+      public Dictionary<string, string> RequestData;
+      public string RequestBodyText { get; set; }
+      public string User { get; set; }
+      public string Passwd { get; set; }
+      public string RequestEncoding { get; set; }
+      public string CorrelationId { get; set; }
+    }
+
+    [Test]
+    public void DeserializeGenericTypeName()
+    {
+      string typeName = typeof(SendHttpRequest).AssemblyQualifiedName;
+
+      string json = @"{
+""$type"": """ + typeName + @""",
+""RequestData"": {
+""$type"": ""System.Collections.Generic.Dictionary`2[[System.String, mscorlib,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"",
+""Id"": ""siedemnaście"",
+""X"": ""323""
+},
+""Method"": ""GET"",
+""Url"": ""http://www.onet.pl"",
+""RequestEncoding"": ""UTF-8"",
+""CorrelationId"": ""xyz""
+}";
+
+      ICorrelatedMessage message = JsonConvert.DeserializeObject<ICorrelatedMessage>(json, new JsonSerializerSettings
+        {
+          TypeNameHandling = TypeNameHandling.Objects,
+          TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
+        });
+
+      CustomAssert.IsInstanceOfType(typeof(SendHttpRequest), message);
+
+      SendHttpRequest request = (SendHttpRequest)message;
+      Assert.AreEqual("xyz", request.CorrelationId);
+      Assert.AreEqual(2, request.RequestData.Count);
+      Assert.AreEqual("siedemnaście", request.RequestData["Id"]);
+    }
+
+    [Test]
+    public void SerializeObjectWithMultipleGenericLists()
+    {
+      string containerTypeName = typeof(Container).AssemblyQualifiedName;
+      string productListTypeName = typeof(List<Product>).AssemblyQualifiedName;
+
+      Container container = new Container
+                          {
+                            In = new List<Product>(),
+                            Out = new List<Product>()
+                          };
+
+      string json = JsonConvert.SerializeObject(container, Formatting.Indented,
+          new JsonSerializerSettings
+              {
+                NullValueHandling = NullValueHandling.Ignore,
+                TypeNameHandling = TypeNameHandling.All,
+                TypeNameAssemblyFormat = FormatterAssemblyStyle.Full
+              });
+
+      Assert.AreEqual(@"{
+  ""$type"": """ + containerTypeName + @""",
+  ""In"": {
+    ""$type"": """ + productListTypeName + @""",
+    ""$values"": []
+  },
+  ""Out"": {
+    ""$type"": """ + productListTypeName + @""",
+    ""$values"": []
+  }
+}", json);
+    }
+
+    public class TypeNameProperty
+    {
+      public string Name { get; set; }
+      [JsonProperty(TypeNameHandling = TypeNameHandling.All)]
+      public object Value { get; set; }
+    }
+
+    [Test]
+    public void WriteObjectTypeNameForProperty()
+    {
+      string typeNamePropertyRef = ReflectionUtils.GetTypeName(typeof(TypeNameProperty), FormatterAssemblyStyle.Simple);
+
+      TypeNameProperty typeNameProperty = new TypeNameProperty
+                                            {
+                                              Name = "Name!",
+                                              Value = new TypeNameProperty
+                                                        {
+                                                          Name = "Nested!"
+                                                        }
+                                            };
+
+      string json = JsonConvert.SerializeObject(typeNameProperty, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""Name!"",
+  ""Value"": {
+    ""$type"": """ + typeNamePropertyRef + @""",
+    ""Name"": ""Nested!"",
+    ""Value"": null
+  }
+}", json);
+
+      TypeNameProperty deserialized = JsonConvert.DeserializeObject<TypeNameProperty>(json);
+      Assert.AreEqual("Name!", deserialized.Name);
+      CustomAssert.IsInstanceOfType(typeof(TypeNameProperty), deserialized.Value);
+
+      TypeNameProperty nested = (TypeNameProperty)deserialized.Value;
+      Assert.AreEqual("Nested!", nested.Name);
+      Assert.AreEqual(null, nested.Value);
+    }
+
+    [Test]
+    public void WriteListTypeNameForProperty()
+    {
+      string listRef = ReflectionUtils.GetTypeName(typeof(List<int>), FormatterAssemblyStyle.Simple);
+
+      TypeNameProperty typeNameProperty = new TypeNameProperty
+      {
+        Name = "Name!",
+        Value = new List<int> { 1, 2, 3, 4, 5 }
+      };
+
+      string json = JsonConvert.SerializeObject(typeNameProperty, Formatting.Indented);
+
+      Assert.AreEqual(@"{
+  ""Name"": ""Name!"",
+  ""Value"": {
+    ""$type"": """ + listRef + @""",
+    ""$values"": [
+      1,
+      2,
+      3,
+      4,
+      5
+    ]
+  }
+}", json);
+
+      TypeNameProperty deserialized = JsonConvert.DeserializeObject<TypeNameProperty>(json);
+      Assert.AreEqual("Name!", deserialized.Name);
+      CustomAssert.IsInstanceOfType(typeof(List<int>), deserialized.Value);
+
+      List<int> nested = (List<int>)deserialized.Value;
+      Assert.AreEqual(5, nested.Count);
+      Assert.AreEqual(1, nested[0]);
+      Assert.AreEqual(2, nested[1]);
+      Assert.AreEqual(3, nested[2]);
+      Assert.AreEqual(4, nested[3]);
+      Assert.AreEqual(5, nested[4]);
+    }
+
+    [Test]
+    public void DeserializeUsingCustomBinder()
+    {
+      string json = @"{
+  ""$id"": ""1"",
+  ""$type"": ""Newtonsoft.Json.Tests.TestObjects.Employee"",
+  ""Name"": ""Name!""
+}";
+
+      object p = JsonConvert.DeserializeObject(json, null, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Objects,
+        Binder = new CustomSerializationBinder()
+      });
+
+      CustomAssert.IsInstanceOfType(typeof(Person), p);
+
+      Person person = (Person)p;
+
+      Assert.AreEqual("Name!", person.Name);
+    }
+
+    public class CustomSerializationBinder : SerializationBinder
+    {
+      public override Type BindToType(string assemblyName, string typeName)
+      {
+        return typeof (Person);
+      }
+    }
+
+#if !(NET20 || NET35)
+    [Test]
+    public void SerializeUsingCustomBinder()
+    {
+      TypeNameSerializationBinder binder = new TypeNameSerializationBinder("Newtonsoft.Json.Tests.Serialization.{0}, Newtonsoft.Json.Tests");
+
+      IList<object> values = new List<object>
+        {
+          new Customer
+            {
+              Name = "Caroline Customer"
+            },
+          new Purchase
+            {
+              ProductName = "Elbow Grease",
+              Price = 5.99m,
+              Quantity = 1
+            }
+        };
+
+      string json = JsonConvert.SerializeObject(values, Formatting.Indented, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.Auto,
+        Binder = binder
+      });
+      
+      //[
+      //  {
+      //    "$type": "Customer",
+      //    "Name": "Caroline Customer"
+      //  },
+      //  {
+      //    "$type": "Purchase",
+      //    "ProductName": "Elbow Grease",
+      //    "Price": 5.99,
+      //    "Quantity": 1
+      //  }
+      //]
+
+
+      Assert.AreEqual(@"[
+  {
+    ""$type"": ""Customer"",
+    ""Name"": ""Caroline Customer""
+  },
+  {
+    ""$type"": ""Purchase"",
+    ""ProductName"": ""Elbow Grease"",
+    ""Price"": 5.99,
+    ""Quantity"": 1
+  }
+]", json);
+
+      IList<object> newValues = JsonConvert.DeserializeObject<IList<object>>(json, new JsonSerializerSettings
+        {
+          TypeNameHandling = TypeNameHandling.Auto,
+          Binder = new TypeNameSerializationBinder("Newtonsoft.Json.Tests.Serialization.{0}, Newtonsoft.Json.Tests")
+        });
+
+      CustomAssert.IsInstanceOfType(typeof(Customer), newValues[0]);
+      Customer customer = (Customer)newValues[0];
+      Assert.AreEqual("Caroline Customer", customer.Name);
+
+      CustomAssert.IsInstanceOfType(typeof(Purchase), newValues[1]);
+      Purchase purchase = (Purchase)newValues[1];
+      Assert.AreEqual("Elbow Grease", purchase.ProductName);
+    }
+
+    public class TypeNameSerializationBinder : SerializationBinder
+    {
+      public string TypeFormat { get; private set; }
+
+      public TypeNameSerializationBinder(string typeFormat)
+      {
+        TypeFormat = typeFormat;
+      }
+
+      public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
+      {
+        assemblyName = null;
+        typeName = serializedType.Name;
+      }
+
+      public override Type BindToType(string assemblyName, string typeName)
+      {
+        string resolvedTypeName = string.Format(TypeFormat, typeName);
+
+        return Type.GetType(resolvedTypeName, true);
+      }
+    }
+#endif
+
+    [Test]
+    public void CollectionWithAbstractItems()
+    {
+      HolderClass testObject = new HolderClass();
+      testObject.TestMember = new ContentSubClass("First One");
+      testObject.AnotherTestMember = new Dictionary<int, IList<ContentBaseClass>>();
+      testObject.AnotherTestMember.Add(1, new List<ContentBaseClass>());
+      testObject.AnotherTestMember[1].Add(new ContentSubClass("Second One"));
+      testObject.AThirdTestMember = new ContentSubClass("Third One");
+
+
+      JsonSerializer serializingTester = new JsonSerializer();
+      serializingTester.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+
+      StringWriter sw = new StringWriter();
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = Formatting.Indented;
+        serializingTester.TypeNameHandling = TypeNameHandling.Auto;
+        serializingTester.Serialize(jsonWriter, testObject);
+      }
+
+      string json = sw.ToString();
+
+      string contentSubClassRef = ReflectionUtils.GetTypeName(typeof(ContentSubClass), FormatterAssemblyStyle.Simple);
+      string dictionaryRef = ReflectionUtils.GetTypeName(typeof(Dictionary<int, IList<ContentBaseClass>>), FormatterAssemblyStyle.Simple);
+      string listRef = ReflectionUtils.GetTypeName(typeof(List<ContentBaseClass>), FormatterAssemblyStyle.Simple);
+
+
+      Assert.AreEqual(@"{
+  ""TestMember"": {
+    ""$type"": """ + contentSubClassRef + @""",
+    ""SomeString"": ""First One""
+  },
+  ""AnotherTestMember"": {
+    ""$type"": """ + dictionaryRef + @""",
+    ""1"": {
+      ""$type"": """ + listRef + @""",
+      ""$values"": [
+        {
+          ""$type"": """ + contentSubClassRef + @""",
+          ""SomeString"": ""Second One""
+        }
+      ]
+    }
+  },
+  ""AThirdTestMember"": {
+    ""$type"": """ + contentSubClassRef + @""",
+    ""SomeString"": ""Third One""
+  }
+}", json);
+      Console.WriteLine(json);
+
+      StringReader sr = new StringReader(json);
+
+      JsonSerializer deserializingTester = new JsonSerializer();
+
+      HolderClass anotherTestObject;
+
+      using (JsonTextReader jsonReader = new JsonTextReader(sr))
+      {
+        deserializingTester.TypeNameHandling = TypeNameHandling.Auto;
+
+        anotherTestObject = deserializingTester.Deserialize<HolderClass>(jsonReader);
+      }
+
+      Assert.IsNotNull(anotherTestObject);
+      CustomAssert.IsInstanceOfType(typeof(ContentSubClass), anotherTestObject.TestMember);
+      CustomAssert.IsInstanceOfType(typeof(Dictionary<int, IList<ContentBaseClass>>), anotherTestObject.AnotherTestMember);
+      Assert.AreEqual(1, anotherTestObject.AnotherTestMember.Count);
+
+      IList<ContentBaseClass> list = anotherTestObject.AnotherTestMember[1];
+
+      CustomAssert.IsInstanceOfType(typeof(List<ContentBaseClass>), list);
+      Assert.AreEqual(1, list.Count);
+      CustomAssert.IsInstanceOfType(typeof(ContentSubClass), list[0]);
+    }
+
+    [Test]
+    public void WriteObjectTypeNameForPropertyDemo()
+    {
+      Message message = new Message();
+      message.Address = "http://www.google.com";
+      message.Body = new SearchDetails
+        {
+          Query = "Json.NET",
+          Language = "en-us"
+        };
+
+      string json = JsonConvert.SerializeObject(message, Formatting.Indented);
+      // {
+      //   "Address": "http://www.google.com",
+      //   "Body": {
+      //     "$type": "Newtonsoft.Json.Tests.Serialization.SearchDetails, Newtonsoft.Json.Tests",
+      //     "Query": "Json.NET",
+      //     "Language": "en-us"
+      //   }
+      // }
+
+      Message deserialized = JsonConvert.DeserializeObject<Message>(json);
+
+      SearchDetails searchDetails = (SearchDetails) deserialized.Body;
+      // Json.NET
+    }
+
+    public class UrlStatus
+    {
+      public int Status { get; set; }
+      public string Url { get; set; }
+    }
+
+
+    [Test]
+    public void GenericDictionaryObject()
+    {
+      Dictionary<string, object> collection = new Dictionary<string, object>()
+        {
+          {"First", new UrlStatus{ Status = 404, Url = @"http://www.bing.com"}},
+          {"Second", new UrlStatus{Status = 400, Url = @"http://www.google.com"}},
+          {"List", new List<UrlStatus>
+            {
+              new UrlStatus {Status = 300, Url = @"http://www.yahoo.com"},
+              new UrlStatus {Status = 200, Url = @"http://www.askjeeves.com"}
+            }
+          }
+        };
+
+      string json = JsonConvert.SerializeObject(collection, Formatting.Indented, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.All,
+        TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
+      });
+
+      string urlStatusTypeName = ReflectionUtils.GetTypeName(typeof (UrlStatus), FormatterAssemblyStyle.Simple);
+
+      Assert.AreEqual(@"{
+  ""$type"": ""System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Object, mscorlib]], mscorlib"",
+  ""First"": {
+    ""$type"": """ + urlStatusTypeName + @""",
+    ""Status"": 404,
+    ""Url"": ""http://www.bing.com""
+  },
+  ""Second"": {
+    ""$type"": """ + urlStatusTypeName + @""",
+    ""Status"": 400,
+    ""Url"": ""http://www.google.com""
+  },
+  ""List"": {
+    ""$type"": ""System.Collections.Generic.List`1[[" + urlStatusTypeName + @"]], mscorlib"",
+    ""$values"": [
+      {
+        ""$type"": """ + urlStatusTypeName + @""",
+        ""Status"": 300,
+        ""Url"": ""http://www.yahoo.com""
+      },
+      {
+        ""$type"": """ + urlStatusTypeName + @""",
+        ""Status"": 200,
+        ""Url"": ""http://www.askjeeves.com""
+      }
+    ]
+  }
+}", json);
+
+      object c = JsonConvert.DeserializeObject(json, new JsonSerializerSettings
+      {
+        TypeNameHandling = TypeNameHandling.All,
+        TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
+      });
+
+      CustomAssert.IsInstanceOfType(typeof(Dictionary<string, object>), c);
+
+      Dictionary<string, object> newCollection = (Dictionary<string, object>)c;
+      Assert.AreEqual(3, newCollection.Count);
+      Assert.AreEqual(@"http://www.bing.com", ((UrlStatus)newCollection["First"]).Url);
+
+      List<UrlStatus> statues = (List<UrlStatus>) newCollection["List"];
+      Assert.AreEqual(2, statues.Count);
+    }
+
+
+    [Test]
+    public void SerializingIEnumerableOfTShouldRetainGenericTypeInfo()
+    {
+      string productClassRef = ReflectionUtils.GetTypeName(typeof(Product[]), FormatterAssemblyStyle.Simple);
+
+      CustomEnumerable<Product> products = new CustomEnumerable<Product>();
+
+      string json = JsonConvert.SerializeObject(products, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All });
+
+      Assert.AreEqual(@"{
+  ""$type"": """ + productClassRef + @""",
+  ""$values"": []
+}", json);
+    }
+
+    public class CustomEnumerable<T> : IEnumerable<T>
+    {
+      //NOTE: a simple linked list
+      private readonly T value;
+      private readonly CustomEnumerable<T> next;
+      private readonly int count;
+
+      private CustomEnumerable(T value, CustomEnumerable<T> next)
+      {
+        this.value = value;
+        this.next = next;
+        count = this.next.count + 1;
+      }
+
+      public CustomEnumerable()
+      {
+        count = 0;
+      }
+
+      public CustomEnumerable<T> AddFirst(T newVal)
+      {
+        return new CustomEnumerable<T>(newVal, this);
+      }
+
+      public IEnumerator<T> GetEnumerator()
+      {
+        if (count == 0) // last node
+          yield break;
+        yield return value;
+
+        var nextInLine = next;
+        while (nextInLine != null)
+        {
+          if (nextInLine.count != 0)
+            yield return nextInLine.value;
+          nextInLine = nextInLine.next;
+        }
+      }
+
+      IEnumerator IEnumerable.GetEnumerator()
+      {
+        return GetEnumerator();
+      }
+    }
+
+    public class Car
+    {
+      // included in JSON
+      public string Model { get; set; }
+      public DateTime Year { get; set; }
+      public List<string> Features { get; set; }
+      public object[] Objects { get; set; }
+
+      // ignored
+      [JsonIgnore]
+      public DateTime LastModified { get; set; }
+    }
+
+    [Test]
+    public void ByteArrays()
+    {
+      Car testerObject = new Car();
+      testerObject.Year = new DateTime(2000, 10, 5, 1, 1, 1, DateTimeKind.Utc);
+      byte[] data = new byte[] {75, 65, 82, 73, 82, 65};
+      testerObject.Objects = new object[] { data, "prueba" };
+
+      JsonSerializerSettings jsonSettings = new JsonSerializerSettings();
+      jsonSettings.NullValueHandling = NullValueHandling.Ignore;
+      jsonSettings.TypeNameHandling = TypeNameHandling.All;
+
+      string output = JsonConvert.SerializeObject(testerObject, Formatting.Indented, jsonSettings);
+
+      string carClassRef = ReflectionUtils.GetTypeName(typeof(Car), FormatterAssemblyStyle.Simple);
+
+      Assert.AreEqual(output, @"{
+  ""$type"": """ + carClassRef + @""",
+  ""Year"": ""2000-10-05T01:01:01Z"",
+  ""Objects"": {
+    ""$type"": ""System.Object[], mscorlib"",
+    ""$values"": [
+      {
+        ""$type"": ""System.Byte[], mscorlib"",
+        ""$value"": ""S0FSSVJB""
+      },
+      ""prueba""
+    ]
+  }
+}");
+      Car obj = JsonConvert.DeserializeObject<Car>(output, jsonSettings);
+
+      Assert.IsNotNull(obj);
+
+      Assert.IsTrue(obj.Objects[0] is byte[]);
+
+      byte[] d = (byte[])obj.Objects[0];
+      CollectionAssert.AreEquivalent(data, d);
+    }
+
+#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
+    [Test]
+    public void ISerializableTypeNameHandlingTest()
+    {
+      //Create an instance of our example type
+      IExample e = new Example("Rob");
+
+      SerializableWrapper w = new SerializableWrapper
+        {
+          Content = e
+        };
+
+      //Test Binary Serialization Round Trip
+      //This will work find because the Binary Formatter serializes type names
+      //this.TestBinarySerializationRoundTrip(e);
+
+      //Test Json Serialization
+      //This fails because the JsonSerializer doesn't serialize type names correctly for ISerializable objects
+      //Type Names should be serialized for All, Auto and Object modes
+      this.TestJsonSerializationRoundTrip(w, TypeNameHandling.All);
+      this.TestJsonSerializationRoundTrip(w, TypeNameHandling.Auto);
+      this.TestJsonSerializationRoundTrip(w, TypeNameHandling.Objects);
+    }
+
+    private void TestJsonSerializationRoundTrip(SerializableWrapper e, TypeNameHandling flag)
+    {
+      Console.WriteLine("Type Name Handling: " + flag.ToString());
+      StringWriter writer = new StringWriter();
+
+      //Create our serializer and set Type Name Handling appropriately
+      JsonSerializer serializer = new JsonSerializer();
+      serializer.TypeNameHandling = flag;
+
+      //Do the actual serialization and dump to Console for inspection
+      serializer.Serialize(new JsonTextWriter(writer), e);
+      Console.WriteLine(writer.ToString());
+      Console.WriteLine();
+
+      //Now try to deserialize
+      //Json.Net will cause an error here as it will try and instantiate
+      //the interface directly because it failed to respect the
+      //TypeNameHandling property on serialization
+      SerializableWrapper f = serializer.Deserialize<SerializableWrapper>(new JsonTextReader(new StringReader(writer.ToString())));
+
+      //Check Round Trip
+      Assert.AreEqual(e, f, "Objects should be equal after round trip json serialization");
+    }
+#endif
+  }
+
+  public class Message
+  {
+    public string Address { get; set; }
+
+    [JsonProperty(TypeNameHandling = TypeNameHandling.All)]
+    public object Body { get; set; }
+  }
+
+  public class SearchDetails
+  {
+    public string Query { get; set; }
+    public string Language { get; set; }
+  }
+
+  public class Customer
+  {
+    public string Name { get; set; }
+  }
+
+  public class Purchase
+  {
+    public string ProductName { get; set; }
+    public decimal Price { get; set; }
+    public int Quantity { get; set; }
+  }
+
+#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
+  public class SerializableWrapper
+  {
+    public object Content { get; set; }
+
+    public override bool Equals(object obj)
+    {
+      SerializableWrapper w = obj as SerializableWrapper;
+
+      if (w == null)
+        return false;
+
+      return Equals(w.Content, Content);
+    }
+  }
+
+  public interface IExample
+    : ISerializable
+  {
+    String Name
+    {
+      get;
+    }
+  }
+
+  [Serializable]
+  public class Example
+      : IExample
+  {
+    public Example(String name)
+    {
+      this.Name = name;
+    }
+
+    protected Example(SerializationInfo info, StreamingContext context)
+    {
+      this.Name = info.GetString("name");
+    }
+
+    public void GetObjectData(SerializationInfo info, StreamingContext context)
+    {
+      info.AddValue("name", this.Name);
+    }
+
+    public String Name { get; set; }
+
+    public override bool Equals(object obj)
+    {
+      if (obj == null) return false;
+      if (ReferenceEquals(this, obj)) return true;
+      if (obj is IExample)
+      {
+        return this.Name.Equals(((IExample)obj).Name);
+      }
+      else
+      {
+        return false;
+      }
+    }
+  }
+#endif
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/SilverlightTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/SilverlightTests.cs
@@ -1,27 +1,27 @@
-﻿using System;
-using System.Reflection;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-
-namespace Newtonsoft.Json.Tests
-{
-  // todo: need to fix this to get WP unit tests running off right dlls
-#if SILVERLIGHT
-  [TestFixture]
-  public class SilverlightTests
-  {
-    [Test]
-    public void SystemVersion()
-    {
-      Assembly systemAssembly = typeof(Uri).Assembly;
-      StringAssert.Contains("=4.0.0.0,", systemAssembly.FullName,
-          "Check we're testing a Silverlight 4.0 assembly");
-    }
-  }
-#endif
+﻿using System;
+using System.Reflection;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+
+namespace Newtonsoft.Json.Tests
+{
+  // todo: need to fix this to get WP unit tests running off right dlls
+#if SILVERLIGHT
+  [TestFixture]
+  public class SilverlightTests
+  {
+    [Test]
+    public void SystemVersion()
+    {
+      Assembly systemAssembly = typeof(Uri).Assembly;
+      StringAssert.Contains("=4.0.0.0,", systemAssembly.FullName,
+          "Check we're testing a Silverlight 4.0 assembly");
+    }
+  }
+#endif
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestFixtureBase.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestFixtureBase.cs
@@ -1,140 +1,140 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-#if NET20
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-using System.Text;
-using System.Threading;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using TestMethod = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Utilities;
-using System.Collections;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Tests
-{
-  [TestFixture]
-  public abstract class TestFixtureBase
-  {
-    protected string GetOffset(DateTime d, DateFormatHandling dateFormatHandling)
-    {
-      StringWriter sw = new StringWriter();
-      JsonConvert.WriteDateTimeOffset(sw, DateTime.SpecifyKind(d, DateTimeKind.Local).GetUtcOffset(), dateFormatHandling);
-      sw.Flush();
-
-      return sw.ToString();
-    }
-
-#if !NETFX_CORE
-    [SetUp]
-    protected void TestSetup()
-    {
-      //CultureInfo turkey = CultureInfo.CreateSpecificCulture("tr");
-      //Thread.CurrentThread.CurrentCulture = turkey;
-      //Thread.CurrentThread.CurrentUICulture = turkey;
-    }
-
-    protected void WriteEscapedJson(string json)
-    {
-      Console.WriteLine(EscapeJson(json));
-    }
-
-    protected string EscapeJson(string json)
-    {
-      return @"@""" + json.Replace(@"""", @"""""") + @"""";
-    }
-#endif
-  }
-
-#if NETFX_CORE
-  public static class Console
-  {
-    public static void WriteLine(params object[] args)
-    {
-    }
-  }
-#endif
-
-  public static class CustomAssert
-  {
-    public static void IsInstanceOfType(Type t, object instance)
-    {
-#if !NETFX_CORE
-      Assert.IsInstanceOfType(t, instance);
-#else
-      if (!instance.GetType().IsAssignableFrom(t))
-        throw new Exception("Blah");
-#endif
-    }
-
-    public static void Contains(IList collection, object value)
-    {
-#if !NETFX_CORE
-      Assert.Contains(value, collection);
-#else
-      if (!collection.Cast<object>().Any(i => i.Equals(value)))
-        throw new Exception("Value not found in collection.");
-#endif
-    }
-  }
-
-  public static class ExceptionAssert
-  {
-    public static void Throws<TException>(string message, Action action)
-        where TException : Exception
-    {
-      try
-      {
-        action();
-
-        Assert.Fail("Exception of type {0} expected; got none exception", typeof(TException).Name);
-      }
-      catch (TException ex)
-      {
-        if (message != null)
-          Assert.AreEqual(message, ex.Message);
-      }
-      catch (Exception ex)
-      {
-        throw new Exception(string.Format("Exception of type {0} expected; got exception of type {1}.", typeof(TException).Name, ex.GetType().Name), ex);
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+#if NET20
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+using System.Text;
+using System.Threading;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using TestMethod = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Utilities;
+using System.Collections;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Tests
+{
+  [TestFixture]
+  public abstract class TestFixtureBase
+  {
+    protected string GetOffset(DateTime d, DateFormatHandling dateFormatHandling)
+    {
+      StringWriter sw = new StringWriter();
+      JsonConvert.WriteDateTimeOffset(sw, DateTime.SpecifyKind(d, DateTimeKind.Local).GetUtcOffset(), dateFormatHandling);
+      sw.Flush();
+
+      return sw.ToString();
+    }
+
+#if !NETFX_CORE
+    [SetUp]
+    protected void TestSetup()
+    {
+      //CultureInfo turkey = CultureInfo.CreateSpecificCulture("tr");
+      //Thread.CurrentThread.CurrentCulture = turkey;
+      //Thread.CurrentThread.CurrentUICulture = turkey;
+    }
+
+    protected void WriteEscapedJson(string json)
+    {
+      Console.WriteLine(EscapeJson(json));
+    }
+
+    protected string EscapeJson(string json)
+    {
+      return @"@""" + json.Replace(@"""", @"""""") + @"""";
+    }
+#endif
+  }
+
+#if NETFX_CORE
+  public static class Console
+  {
+    public static void WriteLine(params object[] args)
+    {
+    }
+  }
+#endif
+
+  public static class CustomAssert
+  {
+    public static void IsInstanceOfType(Type t, object instance)
+    {
+#if !NETFX_CORE
+      Assert.IsInstanceOfType(t, instance);
+#else
+      if (!instance.GetType().IsAssignableFrom(t))
+        throw new Exception("Blah");
+#endif
+    }
+
+    public static void Contains(IList collection, object value)
+    {
+#if !NETFX_CORE
+      Assert.Contains(value, collection);
+#else
+      if (!collection.Cast<object>().Any(i => i.Equals(value)))
+        throw new Exception("Value not found in collection.");
+#endif
+    }
+  }
+
+  public static class ExceptionAssert
+  {
+    public static void Throws<TException>(string message, Action action)
+        where TException : Exception
+    {
+      try
+      {
+        action();
+
+        Assert.Fail("Exception of type {0} expected; got none exception", typeof(TException).Name);
+      }
+      catch (TException ex)
+      {
+        if (message != null)
+          Assert.AreEqual(message, ex.Message);
+      }
+      catch (Exception ex)
+      {
+        throw new Exception(string.Format("Exception of type {0} expected; got exception of type {1}.", typeof(TException).Name, ex.GetType().Name), ex);
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/AbstractGenericBase.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/AbstractGenericBase.cs
@@ -1,32 +1,32 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public abstract class AbstractGenericBase<TKey>
-  {
-    public abstract TKey Id { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public abstract class AbstractGenericBase<TKey>
+  {
+    public abstract TKey Id { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ArgumentConverterPrecedenceClassConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ArgumentConverterPrecedenceClassConverter.cs
@@ -1,35 +1,35 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ArgumentConverterPrecedenceClassConverter : ConverterPrecedenceClassConverter
-  {
-    public override string ConverterType
-    {
-      get { return "Argument"; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ArgumentConverterPrecedenceClassConverter : ConverterPrecedenceClassConverter
+  {
+    public override string ConverterType
+    {
+      get { return "Argument"; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Article.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Article.cs
@@ -1,41 +1,41 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Article
-  {
-    public string Name;
-
-    public Article()
-    {
-    }
-
-    public Article(string name)
-    {
-      Name = name;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Article
+  {
+    public string Name;
+
+    public Article()
+    {
+    }
+
+    public Article(string name)
+    {
+      Name = name;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ArticleCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ArticleCollection.cs
@@ -1,33 +1,33 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ArticleCollection : List<Article>
-  {
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ArticleCollection : List<Article>
+  {
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/BadJsonPropertyClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/BadJsonPropertyClass.cs
@@ -1,35 +1,35 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class BadJsonPropertyClass
-  {
-    [JsonProperty("pie")]
-    public string Pie = "Yum";
-
-    public string pie = "PieChart!";
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class BadJsonPropertyClass
+  {
+    [JsonProperty("pie")]
+    public string Pie = "Yum";
+
+    public string pie = "PieChart!";
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Bar.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Bar.cs
@@ -1,32 +1,32 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Bar
-  {
-    public int Id { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Bar
+  {
+    public int Id { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Car.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Car.cs
@@ -1,17 +1,17 @@
-﻿using System;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Car
-  {
-    // included in JSON
-    public string Model { get; set; }
-    public DateTime Year { get; set; }
-    public List<string> Features { get; set; }
-
-    // ignored
-    [JsonIgnore]
-    public DateTime LastModified { get; set; }
-  }
-}
+﻿using System;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Car
+  {
+    // included in JSON
+    public string Model { get; set; }
+    public DateTime Year { get; set; }
+    public List<string> Features { get; set; }
+
+    // ignored
+    [JsonIgnore]
+    public DateTime LastModified { get; set; }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/CircularReferenceClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/CircularReferenceClass.cs
@@ -1,35 +1,35 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class CircularReferenceClass
-  {
-    [JsonProperty(Required = Required.Always)]
-    public string Name { get; set; }
-    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-    public CircularReferenceClass Child { get; set; }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class CircularReferenceClass
+  {
+    [JsonProperty(Required = Required.Always)]
+    public string Name { get; set; }
+    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+    public CircularReferenceClass Child { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/CircularReferenceWithIdClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/CircularReferenceWithIdClass.cs
@@ -1,35 +1,35 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonObject(Id = "MyExplicitId")]
-  public class CircularReferenceWithIdClass
-  {
-    [JsonProperty(Required = Required.AllowNull)]
-    public string Name { get; set; }
-    public CircularReferenceWithIdClass Child { get; set; }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonObject(Id = "MyExplicitId")]
+  public class CircularReferenceWithIdClass
+  {
+    [JsonProperty(Required = Required.AllowNull)]
+    public string Name { get; set; }
+    public CircularReferenceWithIdClass Child { get; set; }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassAndMemberConverterClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassAndMemberConverterClass.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ClassAndMemberConverterClass
-  {
-    public ConverterPrecedenceClass DefaultConverter { get; set; }
-    [JsonConverter(typeof(MemberConverterPrecedenceClassConverter))]
-    public ConverterPrecedenceClass MemberConverter { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ClassAndMemberConverterClass
+  {
+    public ConverterPrecedenceClass DefaultConverter { get; set; }
+    [JsonConverter(typeof(MemberConverterPrecedenceClassConverter))]
+    public ConverterPrecedenceClass MemberConverter { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassConverterPrecedenceClassConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassConverterPrecedenceClassConverter.cs
@@ -1,35 +1,35 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ClassConverterPrecedenceClassConverter : ConverterPrecedenceClassConverter
-  {
-    public override string ConverterType
-    {
-      get { return "Class"; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ClassConverterPrecedenceClassConverter : ConverterPrecedenceClassConverter
+  {
+    public override string ConverterType
+    {
+      get { return "Class"; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassWithArray.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassWithArray.cs
@@ -1,54 +1,54 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ClassWithArray
-  {
-    private readonly IList<long> bar;
-    private string foo;
-
-    public ClassWithArray()
-    {
-      bar = new List<Int64>() { int.MaxValue };
-    }
-
-    [JsonProperty("foo")]
-    public string Foo
-    {
-      get { return foo; }
-      set { foo = value; }
-    }
-
-    [JsonProperty(PropertyName = "bar")]
-    public IList<long> Bar
-    {
-      get { return bar; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ClassWithArray
+  {
+    private readonly IList<long> bar;
+    private string foo;
+
+    public ClassWithArray()
+    {
+      bar = new List<Int64>() { int.MaxValue };
+    }
+
+    [JsonProperty("foo")]
+    public string Foo
+    {
+      get { return foo; }
+      set { foo = value; }
+    }
+
+    [JsonProperty(PropertyName = "bar")]
+    public IList<long> Bar
+    {
+      get { return bar; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassWithGuid.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ClassWithGuid.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ClassWithGuid
-  {
-    public Guid GuidField;
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ClassWithGuid
+  {
+    public Guid GuidField;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Computer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Computer.cs
@@ -1,48 +1,48 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Runtime.Serialization;
-
-#if !PocketPC && !NET20
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [DataContract]
-  public class Computer
-  {
-    // included in JSON
-    [DataMember]
-    public string Name { get; set; }
-    [DataMember]
-    public decimal SalePrice { get; set; }
-
-    // ignored
-    public string Manufacture { get; set; }
-    public int StockCount { get; set; }
-    public decimal WholeSalePrice { get; set; }
-    public DateTime NextShipmentDate { get; set; }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Runtime.Serialization;
+
+#if !PocketPC && !NET20
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [DataContract]
+  public class Computer
+  {
+    // included in JSON
+    [DataMember]
+    public string Name { get; set; }
+    [DataMember]
+    public decimal SalePrice { get; set; }
+
+    // ignored
+    public string Manufacture { get; set; }
+    public int StockCount { get; set; }
+    public decimal WholeSalePrice { get; set; }
+    public DateTime NextShipmentDate { get; set; }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConstructorCaseSensitivityClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConstructorCaseSensitivityClass.cs
@@ -1,41 +1,41 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ConstructorCaseSensitivityClass
-  {
-    public string param1 { get; set; }
-    public string Param1 { get; set; }
-    public string Param2 { get; set; }
-
-    public ConstructorCaseSensitivityClass(string param1, string Param1, string param2)
-    {
-      this.param1 = param1;
-      this.Param1 = Param1;
-      this.Param2 = param2;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ConstructorCaseSensitivityClass
+  {
+    public string param1 { get; set; }
+    public string Param1 { get; set; }
+    public string Param2 { get; set; }
+
+    public ConstructorCaseSensitivityClass(string param1, string Param1, string param2)
+    {
+      this.param1 = param1;
+      this.Param1 = Param1;
+      this.Param2 = param2;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConstructorReadonlyFields.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConstructorReadonlyFields.cs
@@ -1,39 +1,39 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ConstructorReadonlyFields
-  {
-    public readonly string A;
-    public readonly int B;
-
-    public ConstructorReadonlyFields(string a, int b)
-    {
-      A = a;
-      B = b;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ConstructorReadonlyFields
+  {
+    public readonly string A;
+    public readonly int B;
+
+    public ConstructorReadonlyFields(string a, int b)
+    {
+      A = a;
+      B = b;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Container.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Container.cs
@@ -1,10 +1,10 @@
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Container
-  {
-    public IList<Product> In { get; set; }
-    public IList<Product> Out { get; set; }
-  }
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Container
+  {
+    public IList<Product> In { get; set; }
+    public IList<Product> Out { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Content.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Content.cs
@@ -1,49 +1,49 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
-  public class Content : IEnumerable<Content>
-  {
-    [JsonProperty]
-    public List<Content> Children;
-    [JsonProperty]
-    public string Text;
-
-    public IEnumerator GetEnumerator()
-    {
-      return Children.GetEnumerator();
-    }
-
-    IEnumerator<Content> IEnumerable<Content>.GetEnumerator()
-    {
-      return Children.GetEnumerator();
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonObject(MemberSerialization = MemberSerialization.OptIn)]
+  public class Content : IEnumerable<Content>
+  {
+    [JsonProperty]
+    public List<Content> Children;
+    [JsonProperty]
+    public string Text;
+
+    public IEnumerator GetEnumerator()
+    {
+      return Children.GetEnumerator();
+    }
+
+    IEnumerator<Content> IEnumerable<Content>.GetEnumerator()
+    {
+      return Children.GetEnumerator();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ContentBaseClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ContentBaseClass.cs
@@ -1,6 +1,6 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public abstract class ContentBaseClass
-  {
-  }
-}
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public abstract class ContentBaseClass
+  {
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ContentSubClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ContentSubClass.cs
@@ -1,13 +1,13 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ContentSubClass : ContentBaseClass
-  {
-    public ContentSubClass() { }
-    public ContentSubClass(string EasyIn)
-    {
-      SomeString = EasyIn;
-    }
-
-    public string SomeString { get; set; }
-  }
-}
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ContentSubClass : ContentBaseClass
+  {
+    public ContentSubClass() { }
+    public ContentSubClass(string EasyIn)
+    {
+      SomeString = EasyIn;
+    }
+
+    public string SomeString { get; set; }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConverableMembers.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConverableMembers.cs
@@ -1,50 +1,50 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonObject]
-  public class ConverableMembers
-  {
-    public string String = "string";
-    public int Int32 = int.MaxValue;
-    public uint UInt32 = uint.MaxValue;
-    public byte Byte = byte.MaxValue;
-    public sbyte SByte = sbyte.MaxValue;
-    public short Short = short.MaxValue;
-    public ushort UShort = ushort.MaxValue;
-    public long Long = long.MaxValue;
-    public ulong ULong = long.MaxValue;
-    public double Double = double.MaxValue;
-    public float Float = float.MaxValue;
-#if !NETFX_CORE
-    public DBNull DBNull = DBNull.Value;
-#endif
-    public bool Bool = true;
-    public char Char = '\0';
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonObject]
+  public class ConverableMembers
+  {
+    public string String = "string";
+    public int Int32 = int.MaxValue;
+    public uint UInt32 = uint.MaxValue;
+    public byte Byte = byte.MaxValue;
+    public sbyte SByte = sbyte.MaxValue;
+    public short Short = short.MaxValue;
+    public ushort UShort = ushort.MaxValue;
+    public long Long = long.MaxValue;
+    public ulong ULong = long.MaxValue;
+    public double Double = double.MaxValue;
+    public float Float = float.MaxValue;
+#if !NETFX_CORE
+    public DBNull DBNull = DBNull.Value;
+#endif
+    public bool Bool = true;
+    public char Char = '\0';
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConverterPrecedenceClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConverterPrecedenceClass.cs
@@ -1,38 +1,38 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonConverter(typeof(ClassConverterPrecedenceClassConverter))]
-  public class ConverterPrecedenceClass
-  {
-    public string TestValue { get; set; }
-
-    public ConverterPrecedenceClass(string testValue)
-    {
-      TestValue = testValue;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonConverter(typeof(ClassConverterPrecedenceClassConverter))]
+  public class ConverterPrecedenceClass
+  {
+    public string TestValue { get; set; }
+
+    public ConverterPrecedenceClass(string testValue)
+    {
+      TestValue = testValue;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConverterPrecedenceClassConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ConverterPrecedenceClassConverter.cs
@@ -1,63 +1,63 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Globalization;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public abstract class ConverterPrecedenceClassConverter : JsonConverter
-  {
-    public abstract string ConverterType { get; }
-
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      ConverterPrecedenceClass c = (ConverterPrecedenceClass)value;
-
-      JToken j = new JArray(ConverterType, c.TestValue);
-
-      j.WriteTo(writer);
-    }
-
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      JToken j = JArray.Load(reader);
-
-      string converter = (string)j[0];
-      if (converter != ConverterType)
-        throw new Exception(StringUtils.FormatWith("Serialize converter {0} and deserialize converter {1} do not match.", CultureInfo.InvariantCulture, converter, ConverterType));
-
-      string testValue = (string)j[1];
-      return new ConverterPrecedenceClass(testValue);
-    }
-
-    public override bool CanConvert(Type objectType)
-    {
-      return (objectType == typeof(ConverterPrecedenceClass));
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Globalization;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public abstract class ConverterPrecedenceClassConverter : JsonConverter
+  {
+    public abstract string ConverterType { get; }
+
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      ConverterPrecedenceClass c = (ConverterPrecedenceClass)value;
+
+      JToken j = new JArray(ConverterType, c.TestValue);
+
+      j.WriteTo(writer);
+    }
+
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      JToken j = JArray.Load(reader);
+
+      string converter = (string)j[0];
+      if (converter != ConverterType)
+        throw new Exception(StringUtils.FormatWith("Serialize converter {0} and deserialize converter {1} do not match.", CultureInfo.InvariantCulture, converter, ConverterType));
+
+      string testValue = (string)j[1];
+      return new ConverterPrecedenceClass(testValue);
+    }
+
+    public override bool CanConvert(Type objectType)
+    {
+      return (objectType == typeof(ConverterPrecedenceClass));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DateTimeErrorObjectCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DateTimeErrorObjectCollection.cs
@@ -1,41 +1,41 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.ObjectModel;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class DateTimeErrorObjectCollection : Collection<DateTime>
-  {
-    [OnError]
-    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
-    {
-      errorContext.Handled = true;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class DateTimeErrorObjectCollection : Collection<DateTime>
+  {
+    [OnError]
+    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
+    {
+      errorContext.Handled = true;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DateTimeTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DateTimeTestClass.cs
@@ -1,45 +1,45 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !NET20
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class DateTimeTestClass
-  {
-    public string PreField { get; set; }
-    [DefaultValue("")]
-    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
-    public DateTime DateTimeField { get; set; }
-    public DateTimeOffset DateTimeOffsetField { get; set; }
-    public string PostField { get; set; }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !NET20
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class DateTimeTestClass
+  {
+    public string PreField { get; set; }
+    [DefaultValue("")]
+    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
+    public DateTime DateTimeField { get; set; }
+    public DateTimeOffset DateTimeOffsetField { get; set; }
+    public string PostField { get; set; }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DefaultValueAttributeTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DefaultValueAttributeTestClass.cs
@@ -1,41 +1,41 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.ComponentModel;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-#if !PocketPC && !NETFX_CORE
-  [Description("DefaultValueAttributeTestClass description!")]
-#endif
-  public sealed class DefaultValueAttributeTestClass
-  {
-    [DefaultValue("TestProperty1Value")]
-    public string TestProperty1 { get; set; }
-
-    [DefaultValue(21)]
-    public int TestField1;
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.ComponentModel;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+#if !PocketPC && !NETFX_CORE
+  [Description("DefaultValueAttributeTestClass description!")]
+#endif
+  public sealed class DefaultValueAttributeTestClass
+  {
+    [DefaultValue("TestProperty1Value")]
+    public string TestProperty1 { get; set; }
+
+    [DefaultValue(21)]
+    public int TestField1;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DictionaryInterfaceClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DictionaryInterfaceClass.cs
@@ -1,57 +1,57 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class DictionaryInterfaceClass
-  {
-    public string Name { get; set; }
-    public IDictionary<string, int> Dictionary { get; set; }
-    public ICollection<int> Collection { get; set; }
-    public EmployeeReference Employee { get; set; }
-    public object Random { get; set; }
-
-    public DictionaryInterfaceClass()
-    {
-      Dictionary = new Dictionary<string, int>
-        {
-          { "existing", 1 }
-        };
-      Collection = new List<int>
-        {
-          1,
-          2,
-          3
-        };
-      Employee = new EmployeeReference
-        {
-          Name = "EmployeeName!"
-        };
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class DictionaryInterfaceClass
+  {
+    public string Name { get; set; }
+    public IDictionary<string, int> Dictionary { get; set; }
+    public ICollection<int> Collection { get; set; }
+    public EmployeeReference Employee { get; set; }
+    public object Random { get; set; }
+
+    public DictionaryInterfaceClass()
+    {
+      Dictionary = new Dictionary<string, int>
+        {
+          { "existing", 1 }
+        };
+      Collection = new List<int>
+        {
+          1,
+          2,
+          3
+        };
+      Employee = new EmployeeReference
+        {
+          Name = "EmployeeName!"
+        };
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DoubleClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/DoubleClass.cs
@@ -1,32 +1,32 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class DoubleClass
-  {
-    public double? Height { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class DoubleClass
+  {
+    public double? Height { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/EmployeeReference.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/EmployeeReference.cs
@@ -1,34 +1,34 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonObject(IsReference = true)]
-  public class EmployeeReference
-  {
-    public string Name { get; set; }
-    public EmployeeReference Manager { get; set; }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonObject(IsReference = true)]
+  public class EmployeeReference
+  {
+    public string Name { get; set; }
+    public EmployeeReference Manager { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Event.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Event.cs
@@ -1,148 +1,148 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  /// <summary>
-  /// What types of events are there? Just sticking to a basic set of four for now.
-  /// </summary>
-  /// <remarks></remarks>
-  public enum EventType
-  {
-    Debug = 0,
-    Info = 1,
-    Warning = 2,
-    Error = 3
-  }
-
-  public sealed class Event
-  {
-
-    /// <summary>
-    /// If no current user is specified, returns Nothing (0 from VB)
-    /// </summary>
-    /// <returns></returns>
-    /// <remarks></remarks>
-    private static int GetCurrentUserId()
-    {
-      return 0;
-    }
-
-    /// <summary>
-    /// Gets either the application path or the current stack trace.
-    /// NOTE: You MUST call this from the top level entry point. Otherwise,
-    /// the stack trace will be buried in Logger itself.
-    /// </summary>
-    /// <returns></returns>
-    /// <remarks></remarks>
-    private static string GetCurrentSubLocation()
-    {
-      return "";
-    }
-
-    private string _sublocation;
-    private int _userId;
-    private EventType _type;
-    private string _summary;
-    private string _details;
-    private string _stackTrace;
-    private string _tag;
-    private DateTime _time;
-
-    public Event(string summary)
-    {
-      _summary = summary;
-      _time = DateTime.Now;
-
-      if (_userId == 0) _userId = GetCurrentUserId();
-      //This call only works at top level for now.
-      //If _stackTrace = Nothing Then _stackTrace = Environment.StackTrace
-      if (_sublocation == null) _sublocation = GetCurrentSubLocation();
-    }
-
-    public Event(string sublocation, int userId, EventType type, string summary, string details, string stackTrace, string tag)
-    {
-      _sublocation = sublocation;
-      _userId = userId;
-      _type = type;
-      _summary = summary;
-      _details = details;
-      _stackTrace = stackTrace;
-      _tag = tag;
-      _time = DateTime.Now;
-
-      if (_userId == 0) _userId = GetCurrentUserId();
-      //If _stackTrace = Nothing Then _stackTrace = Environment.StackTrace
-      if (_sublocation == null) _sublocation = GetCurrentSubLocation();
-    }
-
-    public override string ToString()
-    {
-      return string.Format("{{ sublocation = {0}, userId = {1}, type = {2}, summary = {3}, details = {4}, stackTrace = {5}, tag = {6} }}", _sublocation, _userId, _type, _summary, _details, _stackTrace, _tag);
-    }
-
-    public string sublocation
-    {
-      get { return _sublocation; }
-      set { _sublocation = value; }
-    }
-    public int userId
-    {
-      get { return _userId; }
-      set { _userId = value; }
-    }
-    public EventType type
-    {
-      get { return _type; }
-      set { _type = value; }
-    }
-    public string summary
-    {
-      get { return _summary; }
-      set { _summary = value; }
-    }
-    public string details
-    {
-      get { return _details; }
-      set { _details = value; }
-    }
-    public string stackTrace
-    {
-      get { return _stackTrace; }
-      set { _stackTrace = value; }
-    }
-    public string tag
-    {
-      get { return _tag; }
-      set { _tag = value; }
-    }
-    public DateTime time
-    {
-      get { return _time; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  /// <summary>
+  /// What types of events are there? Just sticking to a basic set of four for now.
+  /// </summary>
+  /// <remarks></remarks>
+  public enum EventType
+  {
+    Debug = 0,
+    Info = 1,
+    Warning = 2,
+    Error = 3
+  }
+
+  public sealed class Event
+  {
+
+    /// <summary>
+    /// If no current user is specified, returns Nothing (0 from VB)
+    /// </summary>
+    /// <returns></returns>
+    /// <remarks></remarks>
+    private static int GetCurrentUserId()
+    {
+      return 0;
+    }
+
+    /// <summary>
+    /// Gets either the application path or the current stack trace.
+    /// NOTE: You MUST call this from the top level entry point. Otherwise,
+    /// the stack trace will be buried in Logger itself.
+    /// </summary>
+    /// <returns></returns>
+    /// <remarks></remarks>
+    private static string GetCurrentSubLocation()
+    {
+      return "";
+    }
+
+    private string _sublocation;
+    private int _userId;
+    private EventType _type;
+    private string _summary;
+    private string _details;
+    private string _stackTrace;
+    private string _tag;
+    private DateTime _time;
+
+    public Event(string summary)
+    {
+      _summary = summary;
+      _time = DateTime.Now;
+
+      if (_userId == 0) _userId = GetCurrentUserId();
+      //This call only works at top level for now.
+      //If _stackTrace = Nothing Then _stackTrace = Environment.StackTrace
+      if (_sublocation == null) _sublocation = GetCurrentSubLocation();
+    }
+
+    public Event(string sublocation, int userId, EventType type, string summary, string details, string stackTrace, string tag)
+    {
+      _sublocation = sublocation;
+      _userId = userId;
+      _type = type;
+      _summary = summary;
+      _details = details;
+      _stackTrace = stackTrace;
+      _tag = tag;
+      _time = DateTime.Now;
+
+      if (_userId == 0) _userId = GetCurrentUserId();
+      //If _stackTrace = Nothing Then _stackTrace = Environment.StackTrace
+      if (_sublocation == null) _sublocation = GetCurrentSubLocation();
+    }
+
+    public override string ToString()
+    {
+      return string.Format("{{ sublocation = {0}, userId = {1}, type = {2}, summary = {3}, details = {4}, stackTrace = {5}, tag = {6} }}", _sublocation, _userId, _type, _summary, _details, _stackTrace, _tag);
+    }
+
+    public string sublocation
+    {
+      get { return _sublocation; }
+      set { _sublocation = value; }
+    }
+    public int userId
+    {
+      get { return _userId; }
+      set { _userId = value; }
+    }
+    public EventType type
+    {
+      get { return _type; }
+      set { _type = value; }
+    }
+    public string summary
+    {
+      get { return _summary; }
+      set { _summary = value; }
+    }
+    public string details
+    {
+      get { return _details; }
+      set { _details = value; }
+    }
+    public string stackTrace
+    {
+      get { return _stackTrace; }
+      set { _stackTrace = value; }
+    }
+    public string tag
+    {
+      get { return _tag; }
+      set { _tag = value; }
+    }
+    public DateTime time
+    {
+      get { return _time; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Foo.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Foo.cs
@@ -1,40 +1,40 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Foo
-  {
-    public Foo()
-    {
-      Bars = new List<Bar>();
-    }
-
-    [JsonConverter(typeof(ListOfIds<Bar>))]
-    public List<Bar> Bars { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Foo
+  {
+    public Foo()
+    {
+      Bars = new List<Bar>();
+    }
+
+    [JsonConverter(typeof(ListOfIds<Bar>))]
+    public List<Bar> Bars { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GenericImpl.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GenericImpl.cs
@@ -1,32 +1,32 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class GenericImpl : AbstractGenericBase<int>
-  {
-    public override int Id { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class GenericImpl : AbstractGenericBase<int>
+  {
+    public override int Id { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GenericListAndDictionaryInterfaceProperties.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GenericListAndDictionaryInterfaceProperties.cs
@@ -1,11 +1,11 @@
-﻿using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class GenericListAndDictionaryInterfaceProperties
-  {
-    public IEnumerable<int> IEnumerableProperty { get; set; }
-    public IList<int> IListProperty { get; set; }
-    public IDictionary<string, int> IDictionaryProperty { get; set; }
-  }
+﻿using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class GenericListAndDictionaryInterfaceProperties
+  {
+    public IEnumerable<int> IEnumerableProperty { get; set; }
+    public IList<int> IListProperty { get; set; }
+    public IDictionary<string, int> IDictionaryProperty { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GetOnlyPropertyClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GetOnlyPropertyClass.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class GetOnlyPropertyClass
-  {
-    public string Field = "Field";
-
-    public string GetOnlyProperty
-    {
-      get { return "GetOnlyProperty"; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class GetOnlyPropertyClass
+  {
+    public string Field = "Field";
+
+    public string GetOnlyProperty
+    {
+      get { return "GetOnlyProperty"; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GoogleMapGeocoderStructure.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/GoogleMapGeocoderStructure.cs
@@ -1,95 +1,95 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class GoogleMapGeocoderStructure
-  {
-    public string Name;
-    public Status Status;
-    public List<Placemark> Placemark;
-  }
-
-  public class Status
-  {
-    public string Request;
-    public string Code;
-  }
-
-  public class Placemark
-  {
-    public string Address;
-    public AddressDetails AddressDetails;
-    public Point Point;
-  }
-
-  public class AddressDetails
-  {
-    public int Accuracy;
-    public Country Country;
-  }
-
-  public class Country
-  {
-    public string CountryNameCode;
-    public AdministrativeArea AdministrativeArea;
-  }
-
-  public class AdministrativeArea
-  {
-    public string AdministrativeAreaName;
-    public SubAdministrativeArea SubAdministrativeArea;
-  }
-
-  public class SubAdministrativeArea
-  {
-    public string SubAdministrativeAreaName;
-    public Locality Locality;
-  }
-
-  public class Locality
-  {
-    public string LocalityName;
-    public Thoroughfare Thoroughfare;
-    public PostalCode PostalCode;
-  }
-
-  public class Thoroughfare
-  {
-    public string ThoroughfareName;
-  }
-
-  public class PostalCode
-  {
-    public string PostalCodeNumber;
-  }
-
-  public class Point
-  {
-    public List<decimal> Coordinates;
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class GoogleMapGeocoderStructure
+  {
+    public string Name;
+    public Status Status;
+    public List<Placemark> Placemark;
+  }
+
+  public class Status
+  {
+    public string Request;
+    public string Code;
+  }
+
+  public class Placemark
+  {
+    public string Address;
+    public AddressDetails AddressDetails;
+    public Point Point;
+  }
+
+  public class AddressDetails
+  {
+    public int Accuracy;
+    public Country Country;
+  }
+
+  public class Country
+  {
+    public string CountryNameCode;
+    public AdministrativeArea AdministrativeArea;
+  }
+
+  public class AdministrativeArea
+  {
+    public string AdministrativeAreaName;
+    public SubAdministrativeArea SubAdministrativeArea;
+  }
+
+  public class SubAdministrativeArea
+  {
+    public string SubAdministrativeAreaName;
+    public Locality Locality;
+  }
+
+  public class Locality
+  {
+    public string LocalityName;
+    public Thoroughfare Thoroughfare;
+    public PostalCode PostalCode;
+  }
+
+  public class Thoroughfare
+  {
+    public string ThoroughfareName;
+  }
+
+  public class PostalCode
+  {
+    public string PostalCodeNumber;
+  }
+
+  public class Point
+  {
+    public List<decimal> Coordinates;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/HolderClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/HolderClass.cs
@@ -1,18 +1,18 @@
-﻿using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class HolderClass
-  {
-    public HolderClass() { }
-
-    [Newtonsoft.Json.JsonProperty(TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All)]
-    public ContentBaseClass TestMember { get; set; }
-
-    [Newtonsoft.Json.JsonProperty(TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All)]
-    public Dictionary<int, IList<ContentBaseClass>> AnotherTestMember { get; set; }
-
-    public ContentBaseClass AThirdTestMember { get; set; }
-
-  }
-}
+﻿using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class HolderClass
+  {
+    public HolderClass() { }
+
+    [Newtonsoft.Json.JsonProperty(TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All)]
+    public ContentBaseClass TestMember { get; set; }
+
+    [Newtonsoft.Json.JsonProperty(TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All)]
+    public Dictionary<int, IList<ContentBaseClass>> AnotherTestMember { get; set; }
+
+    public ContentBaseClass AThirdTestMember { get; set; }
+
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IPrivateImplementationA.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IPrivateImplementationA.cs
@@ -1,32 +1,32 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public interface IPrivateImplementationA
-  {
-    string PropertyA { get; set; }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public interface IPrivateImplementationA
+  {
+    string PropertyA { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IPrivateImplementationB.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IPrivateImplementationB.cs
@@ -1,32 +1,32 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public interface IPrivateImplementationB
-  {
-    string PropertyB { get; set; }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public interface IPrivateImplementationB
+  {
+    string PropertyB { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IPrivateOverriddenImplementation.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IPrivateOverriddenImplementation.cs
@@ -1,32 +1,32 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public interface IPrivateOverriddenImplementation
-  {
-    object OverriddenProperty { get; set; }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public interface IPrivateOverriddenImplementation
+  {
+    object OverriddenProperty { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IncompatibleJsonAttributeClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/IncompatibleJsonAttributeClass.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using Newtonsoft.Json.Converters;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonConverter(typeof(IsoDateTimeConverter))]
-  public class IncompatibleJsonAttributeClass
-  {
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using Newtonsoft.Json.Converters;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonConverter(typeof(IsoDateTimeConverter))]
+  public class IncompatibleJsonAttributeClass
+  {
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/InterfacePropertyTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/InterfacePropertyTestClass.cs
@@ -1,51 +1,51 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Co : ICo
-  {
-    public string Name { get; set; }
-  }
-
-  public interface ICo
-  {
-    string Name { get; set; }
-  }
-
-  public interface IInterfacePropertyTestClass
-  {
-    ICo co { get; set; }
-  }
-
-  public class InterfacePropertyTestClass : IInterfacePropertyTestClass
-  {
-    public ICo co { get; set; }
-
-    public InterfacePropertyTestClass()
-    {
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Co : ICo
+  {
+    public string Name { get; set; }
+  }
+
+  public interface ICo
+  {
+    string Name { get; set; }
+  }
+
+  public interface IInterfacePropertyTestClass
+  {
+    ICo co { get; set; }
+  }
+
+  public class InterfacePropertyTestClass : IInterfacePropertyTestClass
+  {
+    public ICo co { get; set; }
+
+    public InterfacePropertyTestClass()
+    {
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Invoice.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Invoice.cs
@@ -1,47 +1,47 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.ComponentModel;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Invoice
-  {
-    public string Company { get; set; }
-    public decimal Amount { get; set; }
-
-    // false is default value of bool
-    public bool Paid { get; set; }
-    // null is default value of nullable
-    public DateTime? PaidDate { get; set; }
-
-    // customize default values
-    [DefaultValue(30)]
-    public int FollowUpDays { get; set; }
-    [DefaultValue("")]
-    public string FollowUpEmailAddress { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.ComponentModel;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Invoice
+  {
+    public string Company { get; set; }
+    public decimal Amount { get; set; }
+
+    // false is default value of bool
+    public bool Paid { get; set; }
+    // null is default value of nullable
+    public DateTime? PaidDate { get; set; }
+
+    // customize default values
+    [DefaultValue(30)]
+    public int FollowUpDays { get; set; }
+    [DefaultValue("")]
+    public string FollowUpEmailAddress { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JaggedArray.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JaggedArray.cs
@@ -1,9 +1,9 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class JaggedArray
-  {
-    public string Before { get; set; }
-    public int[][] Coordinates { get; set; }
-    public string After { get; set; }
-  }
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class JaggedArray
+  {
+    public string Before { get; set; }
+    public int[][] Coordinates { get; set; }
+    public string After { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonIgnoreAttributeOnClassTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonIgnoreAttributeOnClassTestClass.cs
@@ -1,52 +1,52 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonObject(MemberSerialization.OptIn)]
-  public class JsonIgnoreAttributeOnClassTestClass
-  {
-    private int _property = 21;
-    private int _ignoredProperty = 12;
-
-    [JsonProperty("TheField")]
-    public int Field;
-
-    [JsonProperty]
-    public int Property
-    {
-      get { return _property; }
-    }
-
-    public int IgnoredField;
-
-    [JsonProperty]
-    [JsonIgnore] // JsonIgnore should take priority
-      public int IgnoredProperty
-    {
-      get { return _ignoredProperty; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonObject(MemberSerialization.OptIn)]
+  public class JsonIgnoreAttributeOnClassTestClass
+  {
+    private int _property = 21;
+    private int _ignoredProperty = 12;
+
+    [JsonProperty("TheField")]
+    public int Field;
+
+    [JsonProperty]
+    public int Property
+    {
+      get { return _property; }
+    }
+
+    public int IgnoredField;
+
+    [JsonProperty]
+    [JsonIgnore] // JsonIgnore should take priority
+      public int IgnoredProperty
+    {
+      get { return _ignoredProperty; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonIgnoreAttributeTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonIgnoreAttributeTestClass.cs
@@ -1,51 +1,51 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class JsonIgnoreAttributeTestClass
-  {
-    private int _property = 21;
-    private int _ignoredProperty = 12;
-
-    public int Field;
-    public int Property
-    {
-      get { return _property; }
-    }
-
-    [JsonIgnore]
-    public int IgnoredField;
-
-    [JsonIgnore]
-    public int IgnoredProperty
-    {
-      get { return _ignoredProperty; }
-    }
-
-    [JsonIgnore]
-    public Product IgnoredObject = new Product();
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class JsonIgnoreAttributeTestClass
+  {
+    private int _property = 21;
+    private int _ignoredProperty = 12;
+
+    public int Field;
+    public int Property
+    {
+      get { return _property; }
+    }
+
+    [JsonIgnore]
+    public int IgnoredField;
+
+    [JsonIgnore]
+    public int IgnoredProperty
+    {
+      get { return _ignoredProperty; }
+    }
+
+    [JsonIgnore]
+    public Product IgnoredObject = new Product();
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonPropertyClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonPropertyClass.cs
@@ -1,47 +1,47 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class JsonPropertyClass
-  {
-    [JsonProperty("pie")]
-    public string Pie = "Yum";
-
-    [JsonIgnore]
-    public string pie = "No pie for you!";
-
-    public string pie1 = "PieChart!";
-
-    private int _sweetCakesCount;
-
-    [JsonProperty("sweet_cakes_count")]
-    public int SweetCakesCount
-    {
-      get { return _sweetCakesCount; }
-      set { _sweetCakesCount = value; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class JsonPropertyClass
+  {
+    [JsonProperty("pie")]
+    public string Pie = "Yum";
+
+    [JsonIgnore]
+    public string pie = "No pie for you!";
+
+    public string pie1 = "PieChart!";
+
+    private int _sweetCakesCount;
+
+    [JsonProperty("sweet_cakes_count")]
+    public int SweetCakesCount
+    {
+      get { return _sweetCakesCount; }
+      set { _sweetCakesCount = value; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonPropertyWithHandlingValues.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/JsonPropertyWithHandlingValues.cs
@@ -1,63 +1,63 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.ComponentModel;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class JsonPropertyWithHandlingValues
-  {
-    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
-    [DefaultValue("Default!")]
-    public string DefaultValueHandlingIgnoreProperty { get; set; }
-
-    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Include)]
-    [DefaultValue("Default!")]
-    public string DefaultValueHandlingIncludeProperty { get; set; }
-
-    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
-    [DefaultValue("Default!")]
-    public string DefaultValueHandlingPopulateProperty { get; set; }
-
-    [JsonProperty(DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
-    [DefaultValue("Default!")]
-    public string DefaultValueHandlingIgnoreAndPopulateProperty { get; set; }
-
-    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-    public string NullValueHandlingIgnoreProperty { get; set; }
-
-    [JsonProperty(NullValueHandling = NullValueHandling.Include)]
-    public string NullValueHandlingIncludeProperty { get; set; }
-
-    [JsonProperty(ReferenceLoopHandling = ReferenceLoopHandling.Error)]
-    public JsonPropertyWithHandlingValues ReferenceLoopHandlingErrorProperty { get; set; }
-
-    [JsonProperty(ReferenceLoopHandling = ReferenceLoopHandling.Ignore)]
-    public JsonPropertyWithHandlingValues ReferenceLoopHandlingIgnoreProperty { get; set; }
-
-    [JsonProperty(ReferenceLoopHandling = ReferenceLoopHandling.Serialize)]
-    public JsonPropertyWithHandlingValues ReferenceLoopHandlingSerializeProperty { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.ComponentModel;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class JsonPropertyWithHandlingValues
+  {
+    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
+    [DefaultValue("Default!")]
+    public string DefaultValueHandlingIgnoreProperty { get; set; }
+
+    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Include)]
+    [DefaultValue("Default!")]
+    public string DefaultValueHandlingIncludeProperty { get; set; }
+
+    [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
+    [DefaultValue("Default!")]
+    public string DefaultValueHandlingPopulateProperty { get; set; }
+
+    [JsonProperty(DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
+    [DefaultValue("Default!")]
+    public string DefaultValueHandlingIgnoreAndPopulateProperty { get; set; }
+
+    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+    public string NullValueHandlingIgnoreProperty { get; set; }
+
+    [JsonProperty(NullValueHandling = NullValueHandling.Include)]
+    public string NullValueHandlingIncludeProperty { get; set; }
+
+    [JsonProperty(ReferenceLoopHandling = ReferenceLoopHandling.Error)]
+    public JsonPropertyWithHandlingValues ReferenceLoopHandlingErrorProperty { get; set; }
+
+    [JsonProperty(ReferenceLoopHandling = ReferenceLoopHandling.Ignore)]
+    public JsonPropertyWithHandlingValues ReferenceLoopHandlingIgnoreProperty { get; set; }
+
+    [JsonProperty(ReferenceLoopHandling = ReferenceLoopHandling.Serialize)]
+    public JsonPropertyWithHandlingValues ReferenceLoopHandlingSerializeProperty { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListErrorObject.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListErrorObject.cs
@@ -1,58 +1,58 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ListErrorObject
-  {
-    public string Member { get; set; }
-
-    private string _throwError;
-    public string ThrowError
-    {
-      get
-      {
-        if (_throwError != null)
-          return _throwError;
-
-        throw new Exception("ListErrorObject.ThrowError get error!");
-      }
-      set
-      {
-        if (value != null && value.StartsWith("Handle"))
-        {
-          _throwError = value;
-          return;
-        }
-
-        throw new Exception("ListErrorObject.ThrowError set error!");
-      }
-    }
-
-    public string Member2 { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ListErrorObject
+  {
+    public string Member { get; set; }
+
+    private string _throwError;
+    public string ThrowError
+    {
+      get
+      {
+        if (_throwError != null)
+          return _throwError;
+
+        throw new Exception("ListErrorObject.ThrowError get error!");
+      }
+      set
+      {
+        if (value != null && value.StartsWith("Handle"))
+        {
+          _throwError = value;
+          return;
+        }
+
+        throw new Exception("ListErrorObject.ThrowError set error!");
+      }
+    }
+
+    public string Member2 { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListErrorObjectCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListErrorObjectCollection.cs
@@ -1,40 +1,40 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.ObjectModel;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ListErrorObjectCollection : Collection<ListErrorObject>
-  {
-    [OnError]
-    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
-    {
-      errorContext.Handled = true;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ListErrorObjectCollection : Collection<ListErrorObject>
+  {
+    [OnError]
+    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
+    {
+      errorContext.Handled = true;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListOfIds.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListOfIds.cs
@@ -1,71 +1,71 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ListOfIds<T> : JsonConverter where T : Bar, new()
-  {
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      IList<T> list = (IList<T>)value;
-
-      writer.WriteStartArray();
-      foreach (T item in list)
-      {
-        writer.WriteValue(item.Id);
-      }
-      writer.WriteEndArray();
-    }
-
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      IList<T> list = new List<T>();
-
-      reader.Read();
-      while (reader.TokenType != JsonToken.EndArray)
-      {
-        long id = (long)reader.Value;
-
-        list.Add(new T
-                   {
-                     Id = Convert.ToInt32(id)
-                   });
-
-        reader.Read();
-      }
-
-      return list;
-    }
-
-    public override bool CanConvert(Type objectType)
-    {
-      return typeof(IList<T>).IsAssignableFrom(objectType);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ListOfIds<T> : JsonConverter where T : Bar, new()
+  {
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      IList<T> list = (IList<T>)value;
+
+      writer.WriteStartArray();
+      foreach (T item in list)
+      {
+        writer.WriteValue(item.Id);
+      }
+      writer.WriteEndArray();
+    }
+
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      IList<T> list = new List<T>();
+
+      reader.Read();
+      while (reader.TokenType != JsonToken.EndArray)
+      {
+        long id = (long)reader.Value;
+
+        list.Add(new T
+                   {
+                     Id = Convert.ToInt32(id)
+                   });
+
+        reader.Read();
+      }
+
+      return list;
+    }
+
+    public override bool CanConvert(Type objectType)
+    {
+      return typeof(IList<T>).IsAssignableFrom(objectType);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ListTestClass.cs
@@ -1,45 +1,45 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonObject(MemberSerialization.OptIn)]
-  public class ListTestClass
-  {
-    [JsonProperty]
-    public string id { get; set; }
-    [JsonProperty]
-    public List<ListItem> items { get; set; }
-  }
-
-  [JsonObject(MemberSerialization.OptIn)]
-  public class ListItem
-  {
-    [JsonProperty]
-    public string id { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonObject(MemberSerialization.OptIn)]
+  public class ListTestClass
+  {
+    [JsonProperty]
+    public string id { get; set; }
+    [JsonProperty]
+    public List<ListItem> items { get; set; }
+  }
+
+  [JsonObject(MemberSerialization.OptIn)]
+  public class ListItem
+  {
+    [JsonProperty]
+    public string id { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/LogEntry.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/LogEntry.cs
@@ -1,35 +1,35 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class LogEntry
-  {
-    public string Details { get; set; }
-    public DateTime LogDate { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class LogEntry
+  {
+    public string Details { get; set; }
+    public DateTime LogDate { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MemberConverterClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MemberConverterClass.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Converters;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class MemberConverterClass
-  {
-    public DateTime DefaultConverter { get; set; }
-    [JsonConverter(typeof(IsoDateTimeConverter))]
-    public DateTime MemberConverter { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Converters;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class MemberConverterClass
+  {
+    public DateTime DefaultConverter { get; set; }
+    [JsonConverter(typeof(IsoDateTimeConverter))]
+    public DateTime MemberConverter { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MemberConverterPrecedenceClassConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MemberConverterPrecedenceClassConverter.cs
@@ -1,35 +1,35 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class MemberConverterPrecedenceClassConverter : ConverterPrecedenceClassConverter
-  {
-    public override string ConverterType
-    {
-      get { return "Member"; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class MemberConverterPrecedenceClassConverter : ConverterPrecedenceClassConverter
+  {
+    public override string ConverterType
+    {
+      get { return "Member"; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MethodExecutorObject.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MethodExecutorObject.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class MethodExecutorObject
-  {
-    public string serverClassName;
-    public object[] serverMethodParams;
-    public string clientGetResultFunction;
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class MethodExecutorObject
+  {
+    public string serverClassName;
+    public object[] serverMethodParams;
+    public string clientGetResultFunction;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Movie.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Movie.cs
@@ -1,15 +1,15 @@
-﻿using System;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Movie
-  {
-    public string Name { get; set; }
-    public string Description { get; set; }
-    public string Classification { get; set; }
-    public string Studio { get; set; }
-    public DateTime? ReleaseDate { get; set; }
-    public List<string> ReleaseCountries { get; set; }
-  }
-}
+﻿using System;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Movie
+  {
+    public string Name { get; set; }
+    public string Description { get; set; }
+    public string Classification { get; set; }
+    public string Studio { get; set; }
+    public DateTime? ReleaseDate { get; set; }
+    public List<string> ReleaseCountries { get; set; }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MyClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/MyClass.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class MyClass
-  {
-    public int PreProperty { get; set; }
-    //public DateTime DateProperty { get; set; }
-    public int PostProperty { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class MyClass
+  {
+    public int PreProperty { get; set; }
+    //public DateTime DateProperty { get; set; }
+    public int PostProperty { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Name.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Name.cs
@@ -1,41 +1,41 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Name
-  {
-    public string personsName;
-
-    public List<PhoneNumber> pNumbers = new List<PhoneNumber>();
-
-    public Name(string personsName)
-    {
-      this.personsName = personsName;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Name
+  {
+    public string personsName;
+
+    public List<PhoneNumber> pNumbers = new List<PhoneNumber>();
+
+    public Name(string personsName)
+    {
+      this.personsName = personsName;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/NonRequest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/NonRequest.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class NonRequest
-  {
-    public Guid Sid { get; set; }
-    public Guid Uid { get; set; }
-    public IList<string> FidOrder { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class NonRequest
+  {
+    public Guid Sid { get; set; }
+    public Guid Uid { get; set; }
+    public IList<string> FidOrder { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/NullableDateTimeTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/NullableDateTimeTestClass.cs
@@ -1,42 +1,42 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !NET20
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class NullableDateTimeTestClass
-  {
-    public string PreField { get; set; }
-    public DateTime? DateTimeField { get; set; }
-    public DateTimeOffset? DateTimeOffsetField { get; set; }
-    public string PostField { get; set; }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !NET20
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class NullableDateTimeTestClass
+  {
+    public string PreField { get; set; }
+    public DateTime? DateTimeField { get; set; }
+    public DateTimeOffset? DateTimeOffsetField { get; set; }
+    public string PostField { get; set; }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ObjectArrayPropertyTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ObjectArrayPropertyTest.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ObjectArrayPropertyTest
-  {
-    public string Action { get; set; }
-    public string Method { get; set; }
-    public object[] Data { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ObjectArrayPropertyTest
+  {
+    public string Action { get; set; }
+    public string Method { get; set; }
+    public object[] Data { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Person.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Person.cs
@@ -1,71 +1,71 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.ComponentModel;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [JsonObject(Id = "Person", Title = "Title!", Description = "JsonObjectAttribute description!", MemberSerialization = MemberSerialization.OptIn)]
-#if !PocketPC && !NETFX_CORE
-  [Description("DescriptionAttribute description!")]
-#endif
-  public class Person
-  {
-    // "John Smith"
-    [JsonProperty]
-    public string Name { get; set; }
-
-    // "2000-12-15T22:11:03"
-    [JsonProperty]
-    //[JsonConverter(typeof(IsoDateTimeConverter))]
-    public DateTime BirthDate { get; set; }
-
-    // new Date(976918263055)
-    [JsonProperty]
-    //[JsonConverter(typeof(JavaScriptDateTimeConverter))]
-    public DateTime LastModified { get; set; }
-
-    // not serialized
-    public string Department { get; set; }
-  }
-
-  public interface IPerson
-  {
-    string FirstName { get; set; }
-    string LastName { get; set; }
-    DateTime BirthDate { get; set; }
-  }
-
-  public class Employee : IPerson
-  {
-    public string FirstName { get; set; }
-    public string LastName { get; set; }
-    public DateTime BirthDate { get; set; }
-
-    public string Department { get; set; }
-    public string JobTitle { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.ComponentModel;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [JsonObject(Id = "Person", Title = "Title!", Description = "JsonObjectAttribute description!", MemberSerialization = MemberSerialization.OptIn)]
+#if !PocketPC && !NETFX_CORE
+  [Description("DescriptionAttribute description!")]
+#endif
+  public class Person
+  {
+    // "John Smith"
+    [JsonProperty]
+    public string Name { get; set; }
+
+    // "2000-12-15T22:11:03"
+    [JsonProperty]
+    //[JsonConverter(typeof(IsoDateTimeConverter))]
+    public DateTime BirthDate { get; set; }
+
+    // new Date(976918263055)
+    [JsonProperty]
+    //[JsonConverter(typeof(JavaScriptDateTimeConverter))]
+    public DateTime LastModified { get; set; }
+
+    // not serialized
+    public string Department { get; set; }
+  }
+
+  public interface IPerson
+  {
+    string FirstName { get; set; }
+    string LastName { get; set; }
+    DateTime BirthDate { get; set; }
+  }
+
+  public class Employee : IPerson
+  {
+    public string FirstName { get; set; }
+    public string LastName { get; set; }
+    public DateTime BirthDate { get; set; }
+
+    public string Department { get; set; }
+    public string JobTitle { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PersonError.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PersonError.cs
@@ -1,33 +1,33 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PersonError
-  {
-    private List<string> _roles;
-
-    public string Name { get; set; }
-    public int Age { get; set; }
-    public List<string> Roles
-    {
-      get
-      {
-        if (_roles == null)
-          throw new Exception("Roles not loaded!");
-
-        return _roles;
-      }
-      set { _roles = value; }
-    }
-    public string Title { get; set; }
-
-    [OnError]
-    internal void HandleError(StreamingContext context, ErrorContext errorContext)
-    {
-      errorContext.Handled = true;
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PersonError
+  {
+    private List<string> _roles;
+
+    public string Name { get; set; }
+    public int Age { get; set; }
+    public List<string> Roles
+    {
+      get
+      {
+        if (_roles == null)
+          throw new Exception("Roles not loaded!");
+
+        return _roles;
+      }
+      set { _roles = value; }
+    }
+    public string Title { get; set; }
+
+    [OnError]
+    internal void HandleError(StreamingContext context, ErrorContext errorContext)
+    {
+      errorContext.Handled = true;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PersonPropertyClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PersonPropertyClass.cs
@@ -1,12 +1,12 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PersonPropertyClass
-  {
-    public Person Person { get; set; }
-
-    public PersonPropertyClass()
-    {
-      Person = new WagePerson();
-    }
-  }
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PersonPropertyClass
+  {
+    public Person Person { get; set; }
+
+    public PersonPropertyClass()
+    {
+      Person = new WagePerson();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PersonRaw.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PersonRaw.cs
@@ -1,65 +1,65 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PersonRaw
-  {
-    private Guid _internalId;
-    private string _firstName;
-    private string _lastName;
-    private JRaw _rawContent;
-
-    [JsonIgnore]
-    public Guid InternalId
-    {
-      get { return _internalId; }
-      set { _internalId = value; }
-    }
-
-    [JsonProperty("first_name")]
-    public string FirstName
-    {
-      get { return _firstName; }
-      set { _firstName = value; }
-    }
-
-    public JRaw RawContent
-    {
-      get { return _rawContent; }
-      set { _rawContent = value; }
-    }
-
-    [JsonProperty("last_name")]
-    public string LastName
-    {
-      get { return _lastName; }
-      set { _lastName = value; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PersonRaw
+  {
+    private Guid _internalId;
+    private string _firstName;
+    private string _lastName;
+    private JRaw _rawContent;
+
+    [JsonIgnore]
+    public Guid InternalId
+    {
+      get { return _internalId; }
+      set { _internalId = value; }
+    }
+
+    [JsonProperty("first_name")]
+    public string FirstName
+    {
+      get { return _firstName; }
+      set { _firstName = value; }
+    }
+
+    public JRaw RawContent
+    {
+      get { return _rawContent; }
+      set { _rawContent = value; }
+    }
+
+    [JsonProperty("last_name")]
+    public string LastName
+    {
+      get { return _lastName; }
+      set { _lastName = value; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PhoneNumber.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PhoneNumber.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PhoneNumber
-  {
-    public string phoneNumber;
-
-    public PhoneNumber(string phoneNumber)
-    {
-      this.phoneNumber = phoneNumber;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PhoneNumber
+  {
+    public string phoneNumber;
+
+    public PhoneNumber(string phoneNumber)
+    {
+      this.phoneNumber = phoneNumber;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateConstructorTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateConstructorTestClass.cs
@@ -1,47 +1,47 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PrivateConstructorTestClass
-  {
-    public string Name { get; set; }
-    public int Age { get; set; }
-
-    private PrivateConstructorTestClass()
-    {
-    }
-
-    // multiple constructors with arguments so the serializer doesn't know what to fall back to
-    private PrivateConstructorTestClass(object a)
-    {
-    }
-
-    // multiple constructors with arguments so the serializer doesn't know what to fall back to
-    private PrivateConstructorTestClass(object a, object b)
-    {
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PrivateConstructorTestClass
+  {
+    public string Name { get; set; }
+    public int Age { get; set; }
+
+    private PrivateConstructorTestClass()
+    {
+    }
+
+    // multiple constructors with arguments so the serializer doesn't know what to fall back to
+    private PrivateConstructorTestClass(object a)
+    {
+    }
+
+    // multiple constructors with arguments so the serializer doesn't know what to fall back to
+    private PrivateConstructorTestClass(object a, object b)
+    {
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateConstructorWithPublicParametizedConstructorTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateConstructorWithPublicParametizedConstructorTestClass.cs
@@ -1,45 +1,45 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PrivateConstructorWithPublicParametizedConstructorTestClass
-  {
-    public string Name { get; set; }
-    public int Age { get; set; }
-
-    private PrivateConstructorWithPublicParametizedConstructorTestClass()
-    {
-      Age = 1;
-    }
-
-    public PrivateConstructorWithPublicParametizedConstructorTestClass(string dummy)
-    {
-      throw new Exception("Should never get here.");
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PrivateConstructorWithPublicParametizedConstructorTestClass
+  {
+    public string Name { get; set; }
+    public int Age { get; set; }
+
+    private PrivateConstructorWithPublicParametizedConstructorTestClass()
+    {
+      Age = 1;
+    }
+
+    public PrivateConstructorWithPublicParametizedConstructorTestClass(string dummy)
+    {
+      throw new Exception("Should never get here.");
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateImplementationAClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateImplementationAClass.cs
@@ -1,40 +1,40 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-    public class PrivateImplementationAClass : IPrivateImplementationA
-    {
-        [JsonIgnore]
-        public string PropertyA { get; set; }
-
-        [JsonProperty("PropertyA")]
-        string IPrivateImplementationA.PropertyA
-        {
-            get { return this.PropertyA; }
-            set { this.PropertyA = value; }
-        }
-    }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+    public class PrivateImplementationAClass : IPrivateImplementationA
+    {
+        [JsonIgnore]
+        public string PropertyA { get; set; }
+
+        [JsonProperty("PropertyA")]
+        string IPrivateImplementationA.PropertyA
+        {
+            get { return this.PropertyA; }
+            set { this.PropertyA = value; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateImplementationBClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateImplementationBClass.cs
@@ -1,57 +1,57 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PrivateImplementationBClass : PrivateImplementationAClass, IPrivateImplementationB, IPrivateOverriddenImplementation
-  {
-    [JsonIgnore]
-    public string PropertyB { get; set; }
-
-    [JsonProperty("PropertyB")]
-    string IPrivateImplementationB.PropertyB
-    {
-      get { return this.PropertyB; }
-      set { this.PropertyB = value; }
-    }
-
-    [JsonProperty("OverriddenProperty")]
-    private string OverriddenPropertyString
-    {
-      get { return this.OverriddenProperty.ToString(); }
-      set { this.OverriddenProperty = value; }
-    }
-
-    [JsonIgnore]
-    public object OverriddenProperty { get; set; }
-
-    [JsonIgnore]
-    object IPrivateOverriddenImplementation.OverriddenProperty
-    {
-      get { return this.OverriddenProperty; }
-      set { this.OverriddenProperty = value; }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PrivateImplementationBClass : PrivateImplementationAClass, IPrivateImplementationB, IPrivateOverriddenImplementation
+  {
+    [JsonIgnore]
+    public string PropertyB { get; set; }
+
+    [JsonProperty("PropertyB")]
+    string IPrivateImplementationB.PropertyB
+    {
+      get { return this.PropertyB; }
+      set { this.PropertyB = value; }
+    }
+
+    [JsonProperty("OverriddenProperty")]
+    private string OverriddenPropertyString
+    {
+      get { return this.OverriddenProperty.ToString(); }
+      set { this.OverriddenProperty = value; }
+    }
+
+    [JsonIgnore]
+    public object OverriddenProperty { get; set; }
+
+    [JsonIgnore]
+    object IPrivateOverriddenImplementation.OverriddenProperty
+    {
+      get { return this.OverriddenProperty; }
+      set { this.OverriddenProperty = value; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateMembersClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PrivateMembersClass.cs
@@ -1,50 +1,50 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PrivateMembersClass
-  {
-    public PrivateMembersClass(string privateString, string internalString)
-    {
-      _privateString = privateString;
-      _internalString = internalString;
-    }
-
-    public PrivateMembersClass()
-    {
-      i = default(int);
-    }
-
-    private string _privateString;
-    private readonly int i;
-    internal string _internalString;
-
-    public int UseValue()
-    {
-      return i;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PrivateMembersClass
+  {
+    public PrivateMembersClass(string privateString, string internalString)
+    {
+      _privateString = privateString;
+      _internalString = internalString;
+    }
+
+    public PrivateMembersClass()
+    {
+      i = default(int);
+    }
+
+    private string _privateString;
+    private readonly int i;
+    internal string _internalString;
+
+    public int UseValue()
+    {
+      return i;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Product.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Product.cs
@@ -1,54 +1,54 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Product
-  {
-    public string Name;
-    public DateTime ExpiryDate = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-    public decimal Price;
-    public string[] Sizes;
-
-    public override bool Equals(object obj)
-    {
-      if (obj is Product)
-      {
-        Product p = (Product)obj;
-
-        return (p.Name == Name && p.ExpiryDate == ExpiryDate && p.Price == Price);
-      }
-
-      return base.Equals(obj);
-    }
-
-    public override int GetHashCode()
-    {
-      return (Name ?? string.Empty).GetHashCode();
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Product
+  {
+    public string Name;
+    public DateTime ExpiryDate = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+    public decimal Price;
+    public string[] Sizes;
+
+    public override bool Equals(object obj)
+    {
+      if (obj is Product)
+      {
+        Product p = (Product)obj;
+
+        return (p.Name == Name && p.ExpiryDate == ExpiryDate && p.Price == Price);
+      }
+
+      return base.Equals(obj);
+    }
+
+    public override int GetHashCode()
+    {
+      return (Name ?? string.Empty).GetHashCode();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ProductCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ProductCollection.cs
@@ -1,33 +1,33 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ProductCollection : List<Product>
-  {
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ProductCollection : List<Product>
+  {
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ProductShort.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/ProductShort.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class ProductShort
-  {
-    public string Name;
-    public DateTime ExpiryDate;
-    //public decimal Price;
-    public string[] Sizes;
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class ProductShort
+  {
+    public string Name;
+    public DateTime ExpiryDate;
+    //public decimal Price;
+    public string[] Sizes;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PropertyCase.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PropertyCase.cs
@@ -1,35 +1,35 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PropertyCase
-  {
-    public string firstName { get; set; }
-    public string FirstName { get; set; }
-    public string LastName { get; set; }
-    public string lastName { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PropertyCase
+  {
+    public string firstName { get; set; }
+    public string FirstName { get; set; }
+    public string LastName { get; set; }
+    public string lastName { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorRequiringConverterTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorRequiringConverterTestClass.cs
@@ -1,81 +1,81 @@
-﻿using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class NameContainer
-  {
-    public string Value { get; set; }
-  }
-
-  public class NameContainerConverter : JsonConverter
-  {
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      NameContainer nameContainer = value as NameContainer;
-
-      if (nameContainer != null)
-        writer.WriteValue(nameContainer.Value);
-      else
-        writer.WriteNull();
-    }
-
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      NameContainer nameContainer = new NameContainer();
-      nameContainer.Value = (string)reader.Value;
-
-      return nameContainer;
-    }
-
-    public override bool CanConvert(Type objectType)
-    {
-      return objectType == typeof(NameContainer);
-    }
-  }
-
-  public class PublicParametizedConstructorRequiringConverterTestClass
-  {
-    private readonly NameContainer _nameContainer;
-
-    public PublicParametizedConstructorRequiringConverterTestClass(NameContainer nameParameter)
-    {
-      _nameContainer = nameParameter;
-    }
-
-    public NameContainer Name
-    {
-      get { return _nameContainer; }
-    }
-  }
-
-  public class PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass
-  {
-    private readonly NameContainer _nameContainer;
-
-    public PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass([JsonConverter(typeof(NameContainerConverter))] NameContainer nameParameter)
-    {
-      _nameContainer = nameParameter;
-    }
-
-    public NameContainer Name
-    {
-      get { return _nameContainer; }
-    }
-  }
-
-  public class PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass
-  {
-    private readonly NameContainer _nameContainer;
-
-    public PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass(NameContainer name)
-    {
-      _nameContainer = name;
-    }
-
-    [JsonConverter(typeof(NameContainerConverter))]
-    public NameContainer Name
-    {
-      get { return _nameContainer; }
-    }
-  }
-}
+﻿using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class NameContainer
+  {
+    public string Value { get; set; }
+  }
+
+  public class NameContainerConverter : JsonConverter
+  {
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      NameContainer nameContainer = value as NameContainer;
+
+      if (nameContainer != null)
+        writer.WriteValue(nameContainer.Value);
+      else
+        writer.WriteNull();
+    }
+
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      NameContainer nameContainer = new NameContainer();
+      nameContainer.Value = (string)reader.Value;
+
+      return nameContainer;
+    }
+
+    public override bool CanConvert(Type objectType)
+    {
+      return objectType == typeof(NameContainer);
+    }
+  }
+
+  public class PublicParametizedConstructorRequiringConverterTestClass
+  {
+    private readonly NameContainer _nameContainer;
+
+    public PublicParametizedConstructorRequiringConverterTestClass(NameContainer nameParameter)
+    {
+      _nameContainer = nameParameter;
+    }
+
+    public NameContainer Name
+    {
+      get { return _nameContainer; }
+    }
+  }
+
+  public class PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass
+  {
+    private readonly NameContainer _nameContainer;
+
+    public PublicParametizedConstructorRequiringConverterWithParameterAttributeTestClass([JsonConverter(typeof(NameContainerConverter))] NameContainer nameParameter)
+    {
+      _nameContainer = nameParameter;
+    }
+
+    public NameContainer Name
+    {
+      get { return _nameContainer; }
+    }
+  }
+
+  public class PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass
+  {
+    private readonly NameContainer _nameContainer;
+
+    public PublicParametizedConstructorRequiringConverterWithPropertyAttributeTestClass(NameContainer name)
+    {
+      _nameContainer = name;
+    }
+
+    [JsonConverter(typeof(NameContainerConverter))]
+    public NameContainer Name
+    {
+      get { return _nameContainer; }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorTestClass.cs
@@ -1,17 +1,17 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PublicParametizedConstructorTestClass
-  {
-    private readonly string _name;
-
-    public PublicParametizedConstructorTestClass(string name)
-    {
-      _name = name;
-    }
-
-    public string Name
-    {
-      get { return _name; }
-    }
-  }
-}
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PublicParametizedConstructorTestClass
+  {
+    private readonly string _name;
+
+    public PublicParametizedConstructorTestClass(string name)
+    {
+      _name = name;
+    }
+
+    public string Name
+    {
+      get { return _name; }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorWithNonPropertyParameterTestClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorWithNonPropertyParameterTestClass.cs
@@ -1,17 +1,17 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PublicParametizedConstructorWithNonPropertyParameterTestClass
-  {
-    private readonly string _name;
-
-    public PublicParametizedConstructorWithNonPropertyParameterTestClass(string nameParameter)
-    {
-      _name = nameParameter;
-    }
-
-    public string Name
-    {
-      get { return _name; }
-    }
-  }
-}
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PublicParametizedConstructorWithNonPropertyParameterTestClass
+  {
+    private readonly string _name;
+
+    public PublicParametizedConstructorWithNonPropertyParameterTestClass(string nameParameter)
+    {
+      _name = nameParameter;
+    }
+
+    public string Name
+    {
+      get { return _name; }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorWithPropertyNameConflict.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/PublicParametizedConstructorWithPropertyNameConflict.cs
@@ -1,34 +1,34 @@
-﻿using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class PublicParametizedConstructorWithPropertyNameConflict
-  {
-    private readonly int _value;
-
-    public PublicParametizedConstructorWithPropertyNameConflict(string name)
-    {
-      _value = Convert.ToInt32(name);
-    }
-
-    public int Name
-    {
-      get { return _value; }
-    }
-  }
-
-  public class PublicParametizedConstructorWithPropertyNameConflictWithAttribute
-  {
-    private readonly int _value;
-
-    public PublicParametizedConstructorWithPropertyNameConflictWithAttribute([JsonProperty("name")]string nameParameter)
-    {
-      _value = Convert.ToInt32(nameParameter);
-    }
-
-    public int Name
-    {
-      get { return _value; }
-    }
-  }
-}
+﻿using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class PublicParametizedConstructorWithPropertyNameConflict
+  {
+    private readonly int _value;
+
+    public PublicParametizedConstructorWithPropertyNameConflict(string name)
+    {
+      _value = Convert.ToInt32(name);
+    }
+
+    public int Name
+    {
+      get { return _value; }
+    }
+  }
+
+  public class PublicParametizedConstructorWithPropertyNameConflictWithAttribute
+  {
+    private readonly int _value;
+
+    public PublicParametizedConstructorWithPropertyNameConflictWithAttribute([JsonProperty("name")]string nameParameter)
+    {
+      _value = Convert.ToInt32(nameParameter);
+    }
+
+    public int Name
+    {
+      get { return _value; }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/RequestOnly.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/RequestOnly.cs
@@ -1,32 +1,32 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class RequestOnly
-  {
-    public string Request { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class RequestOnly
+  {
+    public string Request { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/RequiredMembersClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/RequiredMembersClass.cs
@@ -1,44 +1,44 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class RequiredMembersClass
-  {
-    [JsonProperty(Required = Required.Always)]
-    public string FirstName { get; set; }
-
-    [JsonProperty]
-    public string MiddleName { get; set; }
-
-    [JsonProperty(Required = Required.AllowNull)]
-    public string LastName { get; set; }
-
-    [JsonProperty(Required = Required.Default)]
-    public DateTime BirthDate { get; set; }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class RequiredMembersClass
+  {
+    [JsonProperty(Required = Required.Always)]
+    public string FirstName { get; set; }
+
+    [JsonProperty]
+    public string MiddleName { get; set; }
+
+    [JsonProperty(Required = Required.AllowNull)]
+    public string LastName { get; set; }
+
+    [JsonProperty(Required = Required.Default)]
+    public DateTime BirthDate { get; set; }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/RoleTransfer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/RoleTransfer.cs
@@ -1,46 +1,46 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public enum RoleTransferOperation
-  {
-    First,
-    Second
-  }
-
-  public enum RoleTransferDirection
-  {
-    First,
-    Second
-  }
-
-  public class RoleTransfer
-  {
-    public RoleTransferOperation Operation { get; set; }   //This is enum type
-    public string RoleName { get; set; }
-    public RoleTransferDirection Direction { get; set; }   //This is enum type
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public enum RoleTransferOperation
+  {
+    First,
+    Second
+  }
+
+  public enum RoleTransferDirection
+  {
+    First,
+    Second
+  }
+
+  public class RoleTransfer
+  {
+    public RoleTransferOperation Operation { get; set; }   //This is enum type
+    public string RoleName { get; set; }
+    public RoleTransferDirection Direction { get; set; }   //This is enum type
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SearchResult.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SearchResult.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SearchResult
-  {
-    public string Title { get; set; }
-    public string Content { get; set; }
-    public string Url { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SearchResult
+  {
+    public string Title { get; set; }
+    public string Content { get; set; }
+    public string Url { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestDictionary.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestDictionary.cs
@@ -1,82 +1,82 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SerializationEventTestDictionary : Dictionary<decimal, string>
-  {
-    // This member is serialized and deserialized with no change.
-    public int Member1 { get; private set; }
-
-    // The value of this field is set and reset during and 
-    // after serialization.
-    public string Member2 { get; private set; }
-
-    // This field is not serialized. The OnDeserializedAttribute 
-    // is used to set the member value after serialization.
-    public string Member3 { get; private set; }
-
-    // This field is set to null, but populated after deserialization.
-    public string Member4 { get; private set; }
-
-    public SerializationEventTestDictionary()
-    {
-      Member1 = 11;
-      Member2 = "Hello World!";
-      Member3 = "This is a nonserialized value";
-      Member4 = null;
-    }
-
-    [OnSerializing]
-    internal void OnSerializingMethod(StreamingContext context)
-    {
-      Member2 = "This value went into the data file during serialization.";
-      Add(decimal.MaxValue, "Inserted on serializing");
-    }
-
-    [OnSerialized]
-    internal void OnSerializedMethod(StreamingContext context)
-    {
-      Member2 = "This value was reset after serialization.";
-    }
-
-    [OnDeserializing]
-    internal void OnDeserializingMethod(StreamingContext context)
-    {
-      Member3 = "This value was set during deserialization";
-    }
-
-    [OnDeserialized]
-    internal void OnDeserializedMethod(StreamingContext context)
-    {
-      Member4 = "This value was set after deserialization.";
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SerializationEventTestDictionary : Dictionary<decimal, string>
+  {
+    // This member is serialized and deserialized with no change.
+    public int Member1 { get; private set; }
+
+    // The value of this field is set and reset during and 
+    // after serialization.
+    public string Member2 { get; private set; }
+
+    // This field is not serialized. The OnDeserializedAttribute 
+    // is used to set the member value after serialization.
+    public string Member3 { get; private set; }
+
+    // This field is set to null, but populated after deserialization.
+    public string Member4 { get; private set; }
+
+    public SerializationEventTestDictionary()
+    {
+      Member1 = 11;
+      Member2 = "Hello World!";
+      Member3 = "This is a nonserialized value";
+      Member4 = null;
+    }
+
+    [OnSerializing]
+    internal void OnSerializingMethod(StreamingContext context)
+    {
+      Member2 = "This value went into the data file during serialization.";
+      Add(decimal.MaxValue, "Inserted on serializing");
+    }
+
+    [OnSerialized]
+    internal void OnSerializedMethod(StreamingContext context)
+    {
+      Member2 = "This value was reset after serialization.";
+    }
+
+    [OnDeserializing]
+    internal void OnDeserializingMethod(StreamingContext context)
+    {
+      Member3 = "This value was set during deserialization";
+    }
+
+    [OnDeserialized]
+    internal void OnDeserializedMethod(StreamingContext context)
+    {
+      Member4 = "This value was set after deserialization.";
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestList.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestList.cs
@@ -1,82 +1,82 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC
-using System.Collections.ObjectModel;
-using System.Runtime.Serialization;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SerializationEventTestList : Collection<decimal>
-  {
-    // This member is serialized and deserialized with no change.
-    public int Member1 { get; private set; }
-
-    // The value of this field is set and reset during and 
-    // after serialization.
-    public string Member2 { get; private set; }
-
-    // This field is not serialized. The OnDeserializedAttribute 
-    // is used to set the member value after serialization.
-    public string Member3 { get; private set; }
-
-    // This field is set to null, but populated after deserialization.
-    public string Member4 { get; private set; }
-
-    public SerializationEventTestList()
-    {
-      Member1 = 11;
-      Member2 = "Hello World!";
-      Member3 = "This is a nonserialized value";
-      Member4 = null;
-    }
-
-    [OnSerializing]
-    internal void OnSerializingMethod(StreamingContext context)
-    {
-      Member2 = "This value went into the data file during serialization.";
-      Insert(0, -1);
-    }
-
-    [OnSerialized]
-    internal void OnSerializedMethod(StreamingContext context)
-    {
-      Member2 = "This value was reset after serialization.";
-    }
-
-    [OnDeserializing]
-    internal void OnDeserializingMethod(StreamingContext context)
-    {
-      Member3 = "This value was set during deserialization";
-    }
-
-    [OnDeserialized]
-    internal void OnDeserializedMethod(StreamingContext context)
-    {
-      Member4 = "This value was set after deserialization.";
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SerializationEventTestList : Collection<decimal>
+  {
+    // This member is serialized and deserialized with no change.
+    public int Member1 { get; private set; }
+
+    // The value of this field is set and reset during and 
+    // after serialization.
+    public string Member2 { get; private set; }
+
+    // This field is not serialized. The OnDeserializedAttribute 
+    // is used to set the member value after serialization.
+    public string Member3 { get; private set; }
+
+    // This field is set to null, but populated after deserialization.
+    public string Member4 { get; private set; }
+
+    public SerializationEventTestList()
+    {
+      Member1 = 11;
+      Member2 = "Hello World!";
+      Member3 = "This is a nonserialized value";
+      Member4 = null;
+    }
+
+    [OnSerializing]
+    internal void OnSerializingMethod(StreamingContext context)
+    {
+      Member2 = "This value went into the data file during serialization.";
+      Insert(0, -1);
+    }
+
+    [OnSerialized]
+    internal void OnSerializedMethod(StreamingContext context)
+    {
+      Member2 = "This value was reset after serialization.";
+    }
+
+    [OnDeserializing]
+    internal void OnDeserializingMethod(StreamingContext context)
+    {
+      Member3 = "This value was set during deserialization";
+    }
+
+    [OnDeserialized]
+    internal void OnDeserializedMethod(StreamingContext context)
+    {
+      Member4 = "This value was set after deserialization.";
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestObject.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestObject.cs
@@ -1,101 +1,101 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC
-using System;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SerializationEventTestObject
-  {
-    // This member is serialized and deserialized with no change.
-    public int Member1 { get; set; }
-
-    // The value of this field is set and reset during and 
-    // after serialization.
-    public string Member2 { get; set; }
-
-    // This field is not serialized. The OnDeserializedAttribute 
-    // is used to set the member value after serialization.
-    [JsonIgnore]
-    public string Member3 { get; set; }
-
-    // This field is set to null, but populated after deserialization.
-    public string Member4 { get; set; }
-
-    // This field is set to null, but populated after error.
-    [JsonIgnore]
-    public string Member5 { get; set; }
-
-    // Getting or setting this field will throw an error.
-    public string Member6
-    {
-      get { throw new Exception("Member5 get error!"); }
-      set { throw new Exception("Member5 set error!"); }
-    }
-
-    public SerializationEventTestObject()
-    {
-      Member1 = 11;
-      Member2 = "Hello World!";
-      Member3 = "This is a nonserialized value";
-      Member4 = null;
-    }
-
-    [OnSerializing]
-    internal void OnSerializingMethod(StreamingContext context)
-    {
-      Member2 = "This value went into the data file during serialization.";
-    }
-
-    [OnSerialized]
-    internal void OnSerializedMethod(StreamingContext context)
-    {
-      Member2 = "This value was reset after serialization.";
-    }
-
-    [OnDeserializing]
-    internal void OnDeserializingMethod(StreamingContext context)
-    {
-      Member3 = "This value was set during deserialization";
-    }
-
-    [OnDeserialized]
-    internal void OnDeserializedMethod(StreamingContext context)
-    {
-      Member4 = "This value was set after deserialization.";
-    }
-
-    [OnError]
-    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
-    {
-      Member5 = "Error message for member " + errorContext.Member + " = " + errorContext.Error.Message;
-      errorContext.Handled = true;
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC
+using System;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SerializationEventTestObject
+  {
+    // This member is serialized and deserialized with no change.
+    public int Member1 { get; set; }
+
+    // The value of this field is set and reset during and 
+    // after serialization.
+    public string Member2 { get; set; }
+
+    // This field is not serialized. The OnDeserializedAttribute 
+    // is used to set the member value after serialization.
+    [JsonIgnore]
+    public string Member3 { get; set; }
+
+    // This field is set to null, but populated after deserialization.
+    public string Member4 { get; set; }
+
+    // This field is set to null, but populated after error.
+    [JsonIgnore]
+    public string Member5 { get; set; }
+
+    // Getting or setting this field will throw an error.
+    public string Member6
+    {
+      get { throw new Exception("Member5 get error!"); }
+      set { throw new Exception("Member5 set error!"); }
+    }
+
+    public SerializationEventTestObject()
+    {
+      Member1 = 11;
+      Member2 = "Hello World!";
+      Member3 = "This is a nonserialized value";
+      Member4 = null;
+    }
+
+    [OnSerializing]
+    internal void OnSerializingMethod(StreamingContext context)
+    {
+      Member2 = "This value went into the data file during serialization.";
+    }
+
+    [OnSerialized]
+    internal void OnSerializedMethod(StreamingContext context)
+    {
+      Member2 = "This value was reset after serialization.";
+    }
+
+    [OnDeserializing]
+    internal void OnDeserializingMethod(StreamingContext context)
+    {
+      Member3 = "This value was set during deserialization";
+    }
+
+    [OnDeserialized]
+    internal void OnDeserializedMethod(StreamingContext context)
+    {
+      Member4 = "This value was set after deserialization.";
+    }
+
+    [OnError]
+    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
+    {
+      Member5 = "Error message for member " + errorContext.Member + " = " + errorContext.Error.Message;
+      errorContext.Handled = true;
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestObjectWithConstructor.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SerializationEventTestObjectWithConstructor.cs
@@ -1,85 +1,85 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC
-using System;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SerializationEventTestObjectWithConstructor
-  {
-    // This member is serialized and deserialized with no change.
-    public int Member1 { get; private set; }
-
-    // The value of this field is set and reset during and 
-    // after serialization.
-    public string Member2 { get; private set; }
-
-    // This field is not serialized. The OnDeserializedAttribute 
-    // is used to set the member value after serialization.
-    [JsonIgnore]
-    public string Member3 { get; private set; }
-
-    // This field is set to null, but populated after deserialization.
-    public string Member4 { get; private set; }
-
-    public SerializationEventTestObjectWithConstructor(int member1,
-                                                       string member2,
-                                                       string member4)
-    {
-      Member1 = member1;
-      Member2 = member2;
-      Member3 = "This is a nonserialized value";
-      Member4 = member4;
-    }
-
-    [OnSerializing]
-    internal void OnSerializingMethod(StreamingContext context)
-    {
-      Member2 = "This value went into the data file during serialization.";
-    }
-
-    [OnSerialized]
-    internal void OnSerializedMethod(StreamingContext context)
-    {
-      Member2 = "This value was reset after serialization.";
-    }
-
-    [OnDeserializing]
-    internal void OnDeserializingMethod(StreamingContext context)
-    {
-      Member3 = "This value was set during deserialization";
-    }
-
-    [OnDeserialized]
-    internal void OnDeserializedMethod(StreamingContext context)
-    {
-      Member4 = "This value was set after deserialization.";
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC
+using System;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SerializationEventTestObjectWithConstructor
+  {
+    // This member is serialized and deserialized with no change.
+    public int Member1 { get; private set; }
+
+    // The value of this field is set and reset during and 
+    // after serialization.
+    public string Member2 { get; private set; }
+
+    // This field is not serialized. The OnDeserializedAttribute 
+    // is used to set the member value after serialization.
+    [JsonIgnore]
+    public string Member3 { get; private set; }
+
+    // This field is set to null, but populated after deserialization.
+    public string Member4 { get; private set; }
+
+    public SerializationEventTestObjectWithConstructor(int member1,
+                                                       string member2,
+                                                       string member4)
+    {
+      Member1 = member1;
+      Member2 = member2;
+      Member3 = "This is a nonserialized value";
+      Member4 = member4;
+    }
+
+    [OnSerializing]
+    internal void OnSerializingMethod(StreamingContext context)
+    {
+      Member2 = "This value went into the data file during serialization.";
+    }
+
+    [OnSerialized]
+    internal void OnSerializedMethod(StreamingContext context)
+    {
+      Member2 = "This value was reset after serialization.";
+    }
+
+    [OnDeserializing]
+    internal void OnDeserializingMethod(StreamingContext context)
+    {
+      Member3 = "This value was set during deserialization";
+    }
+
+    [OnDeserialized]
+    internal void OnDeserializedMethod(StreamingContext context)
+    {
+      Member4 = "This value was set after deserialization.";
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SetOnlyPropertyClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SetOnlyPropertyClass.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SetOnlyPropertyClass
-  {
-    public string Field = "Field";
-
-    public string SetOnlyProperty
-    {
-      set { }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SetOnlyPropertyClass
+  {
+    public string Field = "Field";
+
+    public string SetOnlyProperty
+    {
+      set { }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SetOnlyPropertyClass2.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SetOnlyPropertyClass2.cs
@@ -1,40 +1,40 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SetOnlyPropertyClass2
-  {
-    private object _value;
-    public object SetOnlyProperty
-    {
-      set { _value = value; }
-    }
-    public object GetValue()
-    {
-      return _value;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SetOnlyPropertyClass2
+  {
+    private object _value;
+    public object SetOnlyProperty
+    {
+      set { _value = value; }
+    }
+    public object GetValue()
+    {
+      return _value;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Shortie.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Shortie.cs
@@ -1,16 +1,16 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Shortie
-  {
-    public string Original { get; set; }
-    public string Shortened { get; set; }
-    public string Short { get; set; }
-    public ShortieException Error { get; set; }
-  }
-
-  public class ShortieException
-  {
-    public int Code { get; set; }
-    public string ErrorMessage { get; set; }
-  }
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Shortie
+  {
+    public string Original { get; set; }
+    public string Shortened { get; set; }
+    public string Short { get; set; }
+    public ShortieException Error { get; set; }
+  }
+
+  public class ShortieException
+  {
+    public int Code { get; set; }
+    public string ErrorMessage { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Store.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/Store.cs
@@ -1,64 +1,64 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class Store
-  {
-    public StoreColor Color = StoreColor.Yellow;
-    public DateTime Establised = new DateTime(2010, 1, 22, 1, 1, 1, DateTimeKind.Utc);
-    public double Width = 1.1;
-    public int Employees = 999;
-    public int[] RoomsPerFloor = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
-    public bool Open = false;
-    public char Symbol = '@';
-    [JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace)]
-    public List<string> Mottos = new List<string>();
-    public decimal Cost = 100980.1M;
-    public string Escape = "\r\n\t\f\b?{\\r\\n\"\'";
-    [JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace)]
-    public List<Product> product = new List<Product>();
-
-    public Store()
-    {
-      Mottos.Add("Hello World");
-      Mottos.Add("\\'{new Date(12345);}[222]_@~");
-      Mottos.Add(null);
-      Mottos.Add(" ");
-
-      Product rocket = new Product();
-      rocket.Name = "Rocket";
-      rocket.ExpiryDate = new DateTime(2000, 2, 2, 23, 1, 30, DateTimeKind.Utc);
-      Product alien = new Product();
-      alien.Name = "Alien";
-
-      product.Add(rocket);
-      product.Add(alien);
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class Store
+  {
+    public StoreColor Color = StoreColor.Yellow;
+    public DateTime Establised = new DateTime(2010, 1, 22, 1, 1, 1, DateTimeKind.Utc);
+    public double Width = 1.1;
+    public int Employees = 999;
+    public int[] RoomsPerFloor = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+    public bool Open = false;
+    public char Symbol = '@';
+    [JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace)]
+    public List<string> Mottos = new List<string>();
+    public decimal Cost = 100980.1M;
+    public string Escape = "\r\n\t\f\b?{\\r\\n\"\'";
+    [JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace)]
+    public List<Product> product = new List<Product>();
+
+    public Store()
+    {
+      Mottos.Add("Hello World");
+      Mottos.Add("\\'{new Date(12345);}[222]_@~");
+      Mottos.Add(null);
+      Mottos.Add(" ");
+
+      Product rocket = new Product();
+      rocket.Name = "Rocket";
+      rocket.ExpiryDate = new DateTime(2000, 2, 2, 23, 1, 30, DateTimeKind.Utc);
+      Product alien = new Product();
+      alien.Name = "Alien";
+
+      product.Add(rocket);
+      product.Add(alien);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/StoreColor.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/StoreColor.cs
@@ -1,39 +1,39 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  [Flags]
-  public enum StoreColor
-  {
-    Black = 1,
-    Red = 2,
-    Yellow = 4,
-    White = 8,
-    DarkGoldenrod = 16
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  [Flags]
+  public enum StoreColor
+  {
+    Black = 1,
+    Red = 2,
+    Yellow = 4,
+    White = 8,
+    DarkGoldenrod = 16
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/StructTest.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/StructTest.cs
@@ -1,35 +1,35 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public struct StructTest
-  {
-    public string StringProperty { get; set; }
-    public string StringField;
-    public int IntProperty { get; set; }
-    public int IntField;
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public struct StructTest
+  {
+    public string StringProperty { get; set; }
+    public string StringField;
+    public int IntProperty { get; set; }
+    public int IntField;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SubKlass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SubKlass.cs
@@ -1,33 +1,33 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SubKlass : SuperKlass
-  {
-    public string SubProp { get; set; }
-    public SubKlass(string subprop) { SubProp = subprop; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SubKlass : SuperKlass
+  {
+    public string SubProp { get; set; }
+    public SubKlass(string subprop) { SubProp = subprop; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SuperKlass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/SuperKlass.cs
@@ -1,33 +1,33 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class SuperKlass
-  {
-    public string SuperProp { get; set; }
-    public SuperKlass() { SuperProp = "default superprop"; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class SuperKlass
+  {
+    public string SuperProp { get; set; }
+    public SuperKlass() { SuperProp = "default superprop"; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/TypeClass.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/TypeClass.cs
@@ -1,34 +1,34 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class TypeClass
-  {
-    public Type TypeProperty { get; set; }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class TypeClass
+  {
+    public Type TypeProperty { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/TypedSubHashtable.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/TypedSubHashtable.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-#if !SILVERLIGHT && !NETFX_CORE
-  public class TypedSubHashtable
-  {
-    public string Name;
-    public Hashtable Hash;
-  }
-#endif
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+#if !SILVERLIGHT && !NETFX_CORE
+  public class TypedSubHashtable
+  {
+    public string Name;
+    public Hashtable Hash;
+  }
+#endif
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/UserNullable.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/UserNullable.cs
@@ -1,40 +1,40 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class UserNullable
-  {
-    public Guid Id;
-    public string FName;
-    public string LName;
-    public int RoleId;
-    public int? NullableRoleId;
-    public int? NullRoleId;
-    public bool? Active;
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class UserNullable
+  {
+    public Guid Id;
+    public string FName;
+    public string LName;
+    public int RoleId;
+    public int? NullableRoleId;
+    public int? NullRoleId;
+    public bool? Active;
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/VersionKeyedCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/VersionKeyedCollection.cs
@@ -1,73 +1,73 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Tests.TestObjects;
-
-namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class VersionKeyedCollection : KeyedCollection<string, Person>, IEnumerable<Person>
-  {
-    public List<string> Messages { get; set; }
-
-    public VersionKeyedCollection()
-    {
-      Messages = new List<string>();
-    }
-
-    protected override string GetKeyForItem(Person item)
-    {
-      return item.Name;
-    }
-
-    [OnError]
-    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
-    {
-      Messages.Add(errorContext.Path + " - Error message for member " + errorContext.Member + " = " + errorContext.Error.Message);
-      errorContext.Handled = true;
-    }
-
-    IEnumerator<Person> IEnumerable<Person>.GetEnumerator()
-    {
-      for (int i = 0; i < Count; i++)
-      {
-        if (i % 2 == 0)
-          throw new Exception("Index even: " + i);
-
-        yield return this[i];
-      }
-    }
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return ((IEnumerable<Person>) this).GetEnumerator();
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Tests.TestObjects;
+
+namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class VersionKeyedCollection : KeyedCollection<string, Person>, IEnumerable<Person>
+  {
+    public List<string> Messages { get; set; }
+
+    public VersionKeyedCollection()
+    {
+      Messages = new List<string>();
+    }
+
+    protected override string GetKeyForItem(Person item)
+    {
+      return item.Name;
+    }
+
+    [OnError]
+    internal void OnErrorMethod(StreamingContext context, ErrorContext errorContext)
+    {
+      Messages.Add(errorContext.Path + " - Error message for member " + errorContext.Member + " = " + errorContext.Error.Message);
+      errorContext.Handled = true;
+    }
+
+    IEnumerator<Person> IEnumerable<Person>.GetEnumerator()
+    {
+      for (int i = 0; i < Count; i++)
+      {
+        if (i % 2 == 0)
+          throw new Exception("Index even: " + i);
+
+        yield return this[i];
+      }
+    }
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return ((IEnumerable<Person>) this).GetEnumerator();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/WagePerson.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/TestObjects/WagePerson.cs
@@ -1,8 +1,8 @@
-﻿namespace Newtonsoft.Json.Tests.TestObjects
-{
-  public class WagePerson : Person
-  {
-    [JsonProperty]
-    public decimal HourlyWage { get; set; }
-  }
+﻿namespace Newtonsoft.Json.Tests.TestObjects
+{
+  public class WagePerson : Person
+  {
+    [JsonProperty]
+    public decimal HourlyWage { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Utilities/DynamicReflectionDelegateFactoryTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Utilities/DynamicReflectionDelegateFactoryTests.cs
@@ -1,165 +1,165 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !SILVERLIGHT
-using System;
-using System.Reflection;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Tests.TestObjects;
-using Newtonsoft.Json.Tests.Serialization;
-
-namespace Newtonsoft.Json.Tests.Utilities
-{
-  [TestFixture]
-  public class DynamicReflectionDelegateFactoryTests : TestFixtureBase
-  {
-    [Test]
-    public void CreateGetWithBadObjectTarget()
-    {
-      ExceptionAssert.Throws<InvalidCastException>("Unable to cast object of type 'Newtonsoft.Json.Tests.TestObjects.Person' to type 'Newtonsoft.Json.Tests.TestObjects.Movie'.",
-      () =>
-      {
-        Person p = new Person();
-        p.Name = "Hi";
-
-        Func<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateGet<object>(typeof(Movie).GetProperty("Name"));
-
-        setter(p);
-      });
-    }
-
-    [Test]
-    public void CreateSetWithBadObjectTarget()
-    {
-      ExceptionAssert.Throws<InvalidCastException>("Unable to cast object of type 'Newtonsoft.Json.Tests.TestObjects.Person' to type 'Newtonsoft.Json.Tests.TestObjects.Movie'.",
-      () =>
-      {
-        Person p = new Person();
-        Movie m = new Movie();
-
-        Action<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(typeof(Movie).GetProperty("Name"));
-
-        setter(m, "Hi");
-
-        Assert.AreEqual(m.Name, "Hi");
-
-        setter(p, "Hi");
-      });
-    }
-
-    [Test]
-    public void CreateSetWithBadTarget()
-    {
-      ExceptionAssert.Throws<InvalidCastException>("Specified cast is not valid.",
-      () =>
-      {
-        object structTest = new StructTest();
-
-        Action<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(typeof(StructTest).GetProperty("StringProperty"));
-
-        setter(structTest, "Hi");
-
-        Assert.AreEqual("Hi", ((StructTest)structTest).StringProperty);
-
-        setter(new TimeSpan(), "Hi");
-      });
-    }
-
-    [Test]
-    public void CreateSetWithBadObjectValue()
-    {
-      ExceptionAssert.Throws<InvalidCastException>("Unable to cast object of type 'System.Version' to type 'System.String'.",
-      () =>
-      {
-        Movie m = new Movie();
-
-        Action<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(typeof(Movie).GetProperty("Name"));
-
-        setter(m, new Version("1.1.1.1"));
-      });
-    }
-
-    [Test]
-    public void CreateStaticMethodCall()
-    {
-      MethodInfo castMethodInfo = typeof(JsonSerializerTest.DictionaryKey).GetMethod("op_Implicit", new[] { typeof(string) });
-
-      Assert.IsNotNull(castMethodInfo);
-
-      MethodCall<object, object> call = DynamicReflectionDelegateFactory.Instance.CreateMethodCall<object>(castMethodInfo);
-
-      object result = call(null, "First!");
-      Assert.IsNotNull(result);
-
-      JsonSerializerTest.DictionaryKey key = (JsonSerializerTest.DictionaryKey) result;
-      Assert.AreEqual("First!", key.Value);
-    }
-
-    //[Test]
-    //public void sdfsdf()
-    //{
-    //  string name = "MyAssembly";
-    //  string filename = name + ".dll";
-
-    //  AssemblyName s = new AssemblyName(name);
-
-    //  AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(s, AssemblyBuilderAccess.RunAndSave);
-    //  ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(filename, filename);
-    //  TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Class, typeof(object));
-    //  MethodBuilder methodBuilder = typeBuilder.DefineMethod("TestSet", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new[] { typeof(object), typeof(object) });
-
-    //  DynamicReflectionDelegateFactory.GenerateCreateSetFieldIL(typeof(ClassWithGuid).GetField("GuidField"), methodBuilder.GetILGenerator());
-    //  typeBuilder.CreateType();
-    //  assemblyBuilder.Save(filename);
-    //}
-
-    //[Test]
-    //public void sdfsdf1()
-    //{
-    //  string name = "MyAssembly1";
-    //  string filename = name + ".dll";
-
-    //  AssemblyName s = new AssemblyName(name);
-
-    //  AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(s, AssemblyBuilderAccess.RunAndSave);
-    //  ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(filename, filename);
-    //  TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Class, typeof(object));
-    //  MethodBuilder methodBuilder = typeBuilder.DefineMethod("TestSet", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new[] { typeof(object), typeof(object) });
-
-    //  DynamicReflectionDelegateFactory.GenerateCreateSetPropertyIL(typeof(Car).GetProperty("Model"), methodBuilder.GetILGenerator());
-    //  typeBuilder.CreateType();
-    //  assemblyBuilder.Save(filename);
-    //}
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !SILVERLIGHT
+using System;
+using System.Reflection;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Tests.TestObjects;
+using Newtonsoft.Json.Tests.Serialization;
+
+namespace Newtonsoft.Json.Tests.Utilities
+{
+  [TestFixture]
+  public class DynamicReflectionDelegateFactoryTests : TestFixtureBase
+  {
+    [Test]
+    public void CreateGetWithBadObjectTarget()
+    {
+      ExceptionAssert.Throws<InvalidCastException>("Unable to cast object of type 'Newtonsoft.Json.Tests.TestObjects.Person' to type 'Newtonsoft.Json.Tests.TestObjects.Movie'.",
+      () =>
+      {
+        Person p = new Person();
+        p.Name = "Hi";
+
+        Func<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateGet<object>(typeof(Movie).GetProperty("Name"));
+
+        setter(p);
+      });
+    }
+
+    [Test]
+    public void CreateSetWithBadObjectTarget()
+    {
+      ExceptionAssert.Throws<InvalidCastException>("Unable to cast object of type 'Newtonsoft.Json.Tests.TestObjects.Person' to type 'Newtonsoft.Json.Tests.TestObjects.Movie'.",
+      () =>
+      {
+        Person p = new Person();
+        Movie m = new Movie();
+
+        Action<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(typeof(Movie).GetProperty("Name"));
+
+        setter(m, "Hi");
+
+        Assert.AreEqual(m.Name, "Hi");
+
+        setter(p, "Hi");
+      });
+    }
+
+    [Test]
+    public void CreateSetWithBadTarget()
+    {
+      ExceptionAssert.Throws<InvalidCastException>("Specified cast is not valid.",
+      () =>
+      {
+        object structTest = new StructTest();
+
+        Action<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(typeof(StructTest).GetProperty("StringProperty"));
+
+        setter(structTest, "Hi");
+
+        Assert.AreEqual("Hi", ((StructTest)structTest).StringProperty);
+
+        setter(new TimeSpan(), "Hi");
+      });
+    }
+
+    [Test]
+    public void CreateSetWithBadObjectValue()
+    {
+      ExceptionAssert.Throws<InvalidCastException>("Unable to cast object of type 'System.Version' to type 'System.String'.",
+      () =>
+      {
+        Movie m = new Movie();
+
+        Action<object, object> setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(typeof(Movie).GetProperty("Name"));
+
+        setter(m, new Version("1.1.1.1"));
+      });
+    }
+
+    [Test]
+    public void CreateStaticMethodCall()
+    {
+      MethodInfo castMethodInfo = typeof(JsonSerializerTest.DictionaryKey).GetMethod("op_Implicit", new[] { typeof(string) });
+
+      Assert.IsNotNull(castMethodInfo);
+
+      MethodCall<object, object> call = DynamicReflectionDelegateFactory.Instance.CreateMethodCall<object>(castMethodInfo);
+
+      object result = call(null, "First!");
+      Assert.IsNotNull(result);
+
+      JsonSerializerTest.DictionaryKey key = (JsonSerializerTest.DictionaryKey) result;
+      Assert.AreEqual("First!", key.Value);
+    }
+
+    //[Test]
+    //public void sdfsdf()
+    //{
+    //  string name = "MyAssembly";
+    //  string filename = name + ".dll";
+
+    //  AssemblyName s = new AssemblyName(name);
+
+    //  AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(s, AssemblyBuilderAccess.RunAndSave);
+    //  ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(filename, filename);
+    //  TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Class, typeof(object));
+    //  MethodBuilder methodBuilder = typeBuilder.DefineMethod("TestSet", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new[] { typeof(object), typeof(object) });
+
+    //  DynamicReflectionDelegateFactory.GenerateCreateSetFieldIL(typeof(ClassWithGuid).GetField("GuidField"), methodBuilder.GetILGenerator());
+    //  typeBuilder.CreateType();
+    //  assemblyBuilder.Save(filename);
+    //}
+
+    //[Test]
+    //public void sdfsdf1()
+    //{
+    //  string name = "MyAssembly1";
+    //  string filename = name + ".dll";
+
+    //  AssemblyName s = new AssemblyName(name);
+
+    //  AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(s, AssemblyBuilderAccess.RunAndSave);
+    //  ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(filename, filename);
+    //  TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Class, typeof(object));
+    //  MethodBuilder methodBuilder = typeBuilder.DefineMethod("TestSet", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new[] { typeof(object), typeof(object) });
+
+    //  DynamicReflectionDelegateFactory.GenerateCreateSetPropertyIL(typeof(Car).GetProperty("Model"), methodBuilder.GetILGenerator());
+    //  typeBuilder.CreateType();
+    //  assemblyBuilder.Save(filename);
+    //}
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Utilities/ReflectionUtilsTests.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.Tests/Utilities/ReflectionUtilsTests.cs
@@ -1,36 +1,36 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Runtime.Serialization.Formatters;
-#if !NETFX_CORE
-using NUnit.Framework;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
-using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
-#endif
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Tests.Utilities
-{
-  [TestFixture]
-  public class ReflectionUtilsTests : TestFixtureBase
-  {
-    [Test]
-    public void GetTypeNameSimpleForGenericTypes()
-    {
-      string typeName;
-
-      typeName = ReflectionUtils.GetTypeName(typeof(IList<Type>), FormatterAssemblyStyle.Simple);
-      Assert.AreEqual("System.Collections.Generic.IList`1[[System.Type, mscorlib]], mscorlib", typeName);
-
-      typeName = ReflectionUtils.GetTypeName(typeof(IDictionary<IList<Type>, IList<Type>>), FormatterAssemblyStyle.Simple);
-      Assert.AreEqual("System.Collections.Generic.IDictionary`2[[System.Collections.Generic.IList`1[[System.Type, mscorlib]], mscorlib],[System.Collections.Generic.IList`1[[System.Type, mscorlib]], mscorlib]], mscorlib", typeName);
-
-      typeName = ReflectionUtils.GetTypeName(typeof(IList<>), FormatterAssemblyStyle.Simple);
-      Assert.AreEqual("System.Collections.Generic.IList`1, mscorlib", typeName);
-
-      typeName = ReflectionUtils.GetTypeName(typeof(IDictionary<,>), FormatterAssemblyStyle.Simple);
-      Assert.AreEqual("System.Collections.Generic.IDictionary`2, mscorlib", typeName);
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization.Formatters;
+#if !NETFX_CORE
+using NUnit.Framework;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
+using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
+#endif
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Tests.Utilities
+{
+  [TestFixture]
+  public class ReflectionUtilsTests : TestFixtureBase
+  {
+    [Test]
+    public void GetTypeNameSimpleForGenericTypes()
+    {
+      string typeName;
+
+      typeName = ReflectionUtils.GetTypeName(typeof(IList<Type>), FormatterAssemblyStyle.Simple);
+      Assert.AreEqual("System.Collections.Generic.IList`1[[System.Type, mscorlib]], mscorlib", typeName);
+
+      typeName = ReflectionUtils.GetTypeName(typeof(IDictionary<IList<Type>, IList<Type>>), FormatterAssemblyStyle.Simple);
+      Assert.AreEqual("System.Collections.Generic.IDictionary`2[[System.Collections.Generic.IList`1[[System.Type, mscorlib]], mscorlib],[System.Collections.Generic.IList`1[[System.Type, mscorlib]], mscorlib]], mscorlib", typeName);
+
+      typeName = ReflectionUtils.GetTypeName(typeof(IList<>), FormatterAssemblyStyle.Simple);
+      Assert.AreEqual("System.Collections.Generic.IList`1, mscorlib", typeName);
+
+      typeName = ReflectionUtils.GetTypeName(typeof(IDictionary<,>), FormatterAssemblyStyle.Simple);
+      Assert.AreEqual("System.Collections.Generic.IDictionary`2, mscorlib", typeName);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.WindowsPhone.sln
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.WindowsPhone.sln
@@ -1,31 +1,31 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{F69285DD-24FB-4A60-AE8B-4C2744285D0F}"
-	ProjectSection(SolutionItems) = preProject
-		Lib\NUnit\Silverlight\nunit.framework.dll = Lib\NUnit\Silverlight\nunit.framework.dll
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.WindowsPhone", "Newtonsoft.Json\Newtonsoft.Json.WindowsPhone.csproj", "{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.WindowsPhone", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.WindowsPhone.csproj", "{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{F69285DD-24FB-4A60-AE8B-4C2744285D0F}"
+	ProjectSection(SolutionItems) = preProject
+		Lib\NUnit\Silverlight\nunit.framework.dll = Lib\NUnit\Silverlight\nunit.framework.dll
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.WindowsPhone", "Newtonsoft.Json\Newtonsoft.Json.WindowsPhone.csproj", "{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.WindowsPhone", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.WindowsPhone.csproj", "{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5ED71C8C-D0A6-487C-9A8C-BB855ECEAF75}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json.sln
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json.sln
@@ -1,32 +1,32 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{620042D9-2753-48F5-BEDE-3905248781D2}"
-	ProjectSection(SolutionItems) = preProject
-		Lib\NUnit\DotNet\nunit.framework.dll = Lib\NUnit\DotNet\nunit.framework.dll
-		Lib\NUnit\DotNet\nunit.framework.xml = Lib\NUnit\DotNet\nunit.framework.xml
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json", "Newtonsoft.Json\Newtonsoft.Json.csproj", "{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{620042D9-2753-48F5-BEDE-3905248781D2}"
+	ProjectSection(SolutionItems) = preProject
+		Lib\NUnit\DotNet\nunit.framework.dll = Lib\NUnit\DotNet\nunit.framework.dll
+		Lib\NUnit\DotNet\nunit.framework.xml = Lib\NUnit\DotNet\nunit.framework.xml
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json", "Newtonsoft.Json\Newtonsoft.Json.csproj", "{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonBinaryType.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonBinaryType.cs
@@ -1,40 +1,40 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Bson
-{
-  internal enum BsonBinaryType : byte
-  {
-    Binary = 0x00,
-    Function = 0x01,
-    [Obsolete("This type has been deprecated in the BSON specification. Use Binary instead.")]
-    Data = 0x02,
-    Uuid = 0x03,
-    Md5 = 0x05,
-    UserDefined = 0x80
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Bson
+{
+  internal enum BsonBinaryType : byte
+  {
+    Binary = 0x00,
+    Function = 0x01,
+    [Obsolete("This type has been deprecated in the BSON specification. Use Binary instead.")]
+    Data = 0x02,
+    Uuid = 0x03,
+    Md5 = 0x05,
+    UserDefined = 0x80
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonBinaryWriter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonBinaryWriter.cs
@@ -1,300 +1,300 @@
-﻿using System;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Bson
-{
-  internal class BsonBinaryWriter
-  {
-    private static readonly Encoding Encoding = new UTF8Encoding(false);
-
-    private readonly BinaryWriter _writer;
-
-    private byte[] _largeByteBuffer;
-
-    public DateTimeKind DateTimeKindHandling { get; set; }
-
-    public BsonBinaryWriter(BinaryWriter writer)
-    {
-      DateTimeKindHandling = DateTimeKind.Utc;
-      _writer = writer;
-    }
-
-    public void Flush()
-    {
-      _writer.Flush();
-    }
-
-    public void Close()
-    {
-#if !NETFX_CORE
-      _writer.Close();
-#else
-      _writer.Dispose();
-#endif
-    }
-
-    public void WriteToken(BsonToken t)
-    {
-      CalculateSize(t);
-      WriteTokenInternal(t);
-    }
-
-    private void WriteTokenInternal(BsonToken t)
-    {
-      switch (t.Type)
-      {
-        case BsonType.Object:
-          {
-            BsonObject value = (BsonObject)t;
-            _writer.Write(value.CalculatedSize);
-            foreach (BsonProperty property in value)
-            {
-              _writer.Write((sbyte)property.Value.Type);
-              WriteString((string)property.Name.Value, property.Name.ByteCount, null);
-              WriteTokenInternal(property.Value);
-            }
-            _writer.Write((byte)0);
-          }
-          break;
-        case BsonType.Array:
-          {
-            BsonArray value = (BsonArray)t;
-            _writer.Write(value.CalculatedSize);
-            int index = 0;
-            foreach (BsonToken c in value)
-            {
-              _writer.Write((sbyte)c.Type);
-              WriteString(index.ToString(CultureInfo.InvariantCulture), MathUtils.IntLength(index), null);
-              WriteTokenInternal(c);
-              index++;
-            }
-            _writer.Write((byte)0);
-          }
-          break;
-        case BsonType.Integer:
-          {
-            BsonValue value = (BsonValue)t;
-            _writer.Write(Convert.ToInt32(value.Value, CultureInfo.InvariantCulture));
-          }
-          break;
-        case BsonType.Long:
-          {
-            BsonValue value = (BsonValue)t;
-            _writer.Write(Convert.ToInt64(value.Value, CultureInfo.InvariantCulture));
-          }
-          break;
-        case BsonType.Number:
-          {
-            BsonValue value = (BsonValue)t;
-            _writer.Write(Convert.ToDouble(value.Value, CultureInfo.InvariantCulture));
-          }
-          break;
-        case BsonType.String:
-          {
-            BsonString value = (BsonString)t;
-            WriteString((string)value.Value, value.ByteCount, value.CalculatedSize - 4);
-          }
-          break;
-        case BsonType.Boolean:
-          {
-            BsonValue value = (BsonValue)t;
-            _writer.Write((bool)value.Value);
-          }
-          break;
-        case BsonType.Null:
-        case BsonType.Undefined:
-          break;
-        case BsonType.Date:
-          {
-            BsonValue value = (BsonValue)t;
-
-            long ticks = 0;
-
-            if (value.Value is DateTime)
-            {
-              DateTime dateTime = (DateTime)value.Value;
-              if (DateTimeKindHandling == DateTimeKind.Utc)
-                dateTime = dateTime.ToUniversalTime();
-              else if (DateTimeKindHandling == DateTimeKind.Local)
-                dateTime = dateTime.ToLocalTime();
-
-              ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(dateTime, false);
-            }
-#if !PocketPC && !NET20
-            else
-            {
-              DateTimeOffset dateTimeOffset = (DateTimeOffset)value.Value;
-              ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(dateTimeOffset.UtcDateTime, dateTimeOffset.Offset);
-            }
-#endif
-
-            _writer.Write(ticks);
-          }
-          break;
-        case BsonType.Binary:
-          {
-            BsonValue value = (BsonValue)t;
-
-            byte[] data = (byte[])value.Value;
-            _writer.Write(data.Length);
-            _writer.Write((byte)BsonBinaryType.Binary);
-            _writer.Write(data);
-          }
-          break;
-        case BsonType.Oid:
-          {
-            BsonValue value = (BsonValue)t;
-
-            byte[] data = (byte[])value.Value;
-            _writer.Write(data);
-          }
-          break;
-        case BsonType.Regex:
-          {
-            BsonRegex value = (BsonRegex)t;
-
-            WriteString((string)value.Pattern.Value, value.Pattern.ByteCount, null);
-            WriteString((string)value.Options.Value, value.Options.ByteCount, null);
-          }
-          break;
-        default:
-          throw new ArgumentOutOfRangeException("t", "Unexpected token when writing BSON: {0}".FormatWith(CultureInfo.InvariantCulture, t.Type));
-      }
-    }
-
-    private void WriteString(string s, int byteCount, int? calculatedlengthPrefix)
-    {
-      if (calculatedlengthPrefix != null)
-        _writer.Write(calculatedlengthPrefix.Value);
-
-      WriteUtf8Bytes(s, byteCount);
-
-      _writer.Write((byte)0);
-    }
-
-    public void WriteUtf8Bytes(string s, int byteCount)
-    {
-      if (s != null)
-      {
-        if (_largeByteBuffer == null)
-        {
-          _largeByteBuffer = new byte[256];
-        }
-        if (byteCount <= 256)
-        {
-          Encoding.GetBytes(s, 0, s.Length, _largeByteBuffer, 0);
-          _writer.Write(_largeByteBuffer, 0, byteCount);
-        }
-        else
-        {
-          byte[] bytes = Encoding.GetBytes(s);
-          _writer.Write(bytes);
-        }
-      }
-    }
-
-    private int CalculateSize(int stringByteCount)
-    {
-      return stringByteCount + 1;
-    }
-
-    private int CalculateSizeWithLength(int stringByteCount, bool includeSize)
-    {
-      int baseSize = (includeSize)
-        ? 5 // size bytes + terminator
-        : 1; // terminator
-
-      return baseSize + stringByteCount;
-    }
-
-    private int CalculateSize(BsonToken t)
-    {
-      switch (t.Type)
-      {
-        case BsonType.Object:
-          {
-            BsonObject value = (BsonObject)t;
-
-            int bases = 4;
-            foreach (BsonProperty p in value)
-            {
-              int size = 1;
-              size += CalculateSize(p.Name);
-              size += CalculateSize(p.Value);
-
-              bases += size;
-            }
-            bases += 1;
-            value.CalculatedSize = bases;
-            return bases;
-          }
-        case BsonType.Array:
-          {
-            BsonArray value = (BsonArray)t;
-
-            int size = 4;
-            int index = 0;
-            foreach (BsonToken c in value)
-            {
-              size += 1;
-              size += CalculateSize(MathUtils.IntLength(index));
-              size += CalculateSize(c);
-              index++;
-            }
-            size += 1;
-            value.CalculatedSize = size;
-
-            return value.CalculatedSize;
-          }
-        case BsonType.Integer:
-          return 4;
-        case BsonType.Long:
-          return 8;
-        case BsonType.Number:
-          return 8;
-        case BsonType.String:
-          {
-            BsonString value = (BsonString)t;
-            string s = (string)value.Value;
-            value.ByteCount = (s != null) ? Encoding.GetByteCount(s) : 0;
-            value.CalculatedSize = CalculateSizeWithLength(value.ByteCount, value.IncludeLength);
-
-            return value.CalculatedSize;
-          }
-        case BsonType.Boolean:
-          return 1;
-        case BsonType.Null:
-        case BsonType.Undefined:
-          return 0;
-        case BsonType.Date:
-          return 8;
-        case BsonType.Binary:
-          {
-            BsonValue value = (BsonValue)t;
-
-            byte[] data = (byte[])value.Value;
-            value.CalculatedSize = 4 + 1 + data.Length;
-
-            return value.CalculatedSize;
-          }
-        case BsonType.Oid:
-          return 12;
-        case BsonType.Regex:
-          {
-            BsonRegex value = (BsonRegex)t;
-            int size = 0;
-            size += CalculateSize(value.Pattern);
-            size += CalculateSize(value.Options);
-            value.CalculatedSize = size;
-
-            return value.CalculatedSize;
-          }
-        default:
-          throw new ArgumentOutOfRangeException("t", "Unexpected token when writing BSON: {0}".FormatWith(CultureInfo.InvariantCulture, t.Type));
-      }
-    }
-  }
+﻿using System;
+using System.Globalization;
+using System.IO;
+using System.Text;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Bson
+{
+  internal class BsonBinaryWriter
+  {
+    private static readonly Encoding Encoding = new UTF8Encoding(false);
+
+    private readonly BinaryWriter _writer;
+
+    private byte[] _largeByteBuffer;
+
+    public DateTimeKind DateTimeKindHandling { get; set; }
+
+    public BsonBinaryWriter(BinaryWriter writer)
+    {
+      DateTimeKindHandling = DateTimeKind.Utc;
+      _writer = writer;
+    }
+
+    public void Flush()
+    {
+      _writer.Flush();
+    }
+
+    public void Close()
+    {
+#if !NETFX_CORE
+      _writer.Close();
+#else
+      _writer.Dispose();
+#endif
+    }
+
+    public void WriteToken(BsonToken t)
+    {
+      CalculateSize(t);
+      WriteTokenInternal(t);
+    }
+
+    private void WriteTokenInternal(BsonToken t)
+    {
+      switch (t.Type)
+      {
+        case BsonType.Object:
+          {
+            BsonObject value = (BsonObject)t;
+            _writer.Write(value.CalculatedSize);
+            foreach (BsonProperty property in value)
+            {
+              _writer.Write((sbyte)property.Value.Type);
+              WriteString((string)property.Name.Value, property.Name.ByteCount, null);
+              WriteTokenInternal(property.Value);
+            }
+            _writer.Write((byte)0);
+          }
+          break;
+        case BsonType.Array:
+          {
+            BsonArray value = (BsonArray)t;
+            _writer.Write(value.CalculatedSize);
+            int index = 0;
+            foreach (BsonToken c in value)
+            {
+              _writer.Write((sbyte)c.Type);
+              WriteString(index.ToString(CultureInfo.InvariantCulture), MathUtils.IntLength(index), null);
+              WriteTokenInternal(c);
+              index++;
+            }
+            _writer.Write((byte)0);
+          }
+          break;
+        case BsonType.Integer:
+          {
+            BsonValue value = (BsonValue)t;
+            _writer.Write(Convert.ToInt32(value.Value, CultureInfo.InvariantCulture));
+          }
+          break;
+        case BsonType.Long:
+          {
+            BsonValue value = (BsonValue)t;
+            _writer.Write(Convert.ToInt64(value.Value, CultureInfo.InvariantCulture));
+          }
+          break;
+        case BsonType.Number:
+          {
+            BsonValue value = (BsonValue)t;
+            _writer.Write(Convert.ToDouble(value.Value, CultureInfo.InvariantCulture));
+          }
+          break;
+        case BsonType.String:
+          {
+            BsonString value = (BsonString)t;
+            WriteString((string)value.Value, value.ByteCount, value.CalculatedSize - 4);
+          }
+          break;
+        case BsonType.Boolean:
+          {
+            BsonValue value = (BsonValue)t;
+            _writer.Write((bool)value.Value);
+          }
+          break;
+        case BsonType.Null:
+        case BsonType.Undefined:
+          break;
+        case BsonType.Date:
+          {
+            BsonValue value = (BsonValue)t;
+
+            long ticks = 0;
+
+            if (value.Value is DateTime)
+            {
+              DateTime dateTime = (DateTime)value.Value;
+              if (DateTimeKindHandling == DateTimeKind.Utc)
+                dateTime = dateTime.ToUniversalTime();
+              else if (DateTimeKindHandling == DateTimeKind.Local)
+                dateTime = dateTime.ToLocalTime();
+
+              ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(dateTime, false);
+            }
+#if !PocketPC && !NET20
+            else
+            {
+              DateTimeOffset dateTimeOffset = (DateTimeOffset)value.Value;
+              ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(dateTimeOffset.UtcDateTime, dateTimeOffset.Offset);
+            }
+#endif
+
+            _writer.Write(ticks);
+          }
+          break;
+        case BsonType.Binary:
+          {
+            BsonValue value = (BsonValue)t;
+
+            byte[] data = (byte[])value.Value;
+            _writer.Write(data.Length);
+            _writer.Write((byte)BsonBinaryType.Binary);
+            _writer.Write(data);
+          }
+          break;
+        case BsonType.Oid:
+          {
+            BsonValue value = (BsonValue)t;
+
+            byte[] data = (byte[])value.Value;
+            _writer.Write(data);
+          }
+          break;
+        case BsonType.Regex:
+          {
+            BsonRegex value = (BsonRegex)t;
+
+            WriteString((string)value.Pattern.Value, value.Pattern.ByteCount, null);
+            WriteString((string)value.Options.Value, value.Options.ByteCount, null);
+          }
+          break;
+        default:
+          throw new ArgumentOutOfRangeException("t", "Unexpected token when writing BSON: {0}".FormatWith(CultureInfo.InvariantCulture, t.Type));
+      }
+    }
+
+    private void WriteString(string s, int byteCount, int? calculatedlengthPrefix)
+    {
+      if (calculatedlengthPrefix != null)
+        _writer.Write(calculatedlengthPrefix.Value);
+
+      WriteUtf8Bytes(s, byteCount);
+
+      _writer.Write((byte)0);
+    }
+
+    public void WriteUtf8Bytes(string s, int byteCount)
+    {
+      if (s != null)
+      {
+        if (_largeByteBuffer == null)
+        {
+          _largeByteBuffer = new byte[256];
+        }
+        if (byteCount <= 256)
+        {
+          Encoding.GetBytes(s, 0, s.Length, _largeByteBuffer, 0);
+          _writer.Write(_largeByteBuffer, 0, byteCount);
+        }
+        else
+        {
+          byte[] bytes = Encoding.GetBytes(s);
+          _writer.Write(bytes);
+        }
+      }
+    }
+
+    private int CalculateSize(int stringByteCount)
+    {
+      return stringByteCount + 1;
+    }
+
+    private int CalculateSizeWithLength(int stringByteCount, bool includeSize)
+    {
+      int baseSize = (includeSize)
+        ? 5 // size bytes + terminator
+        : 1; // terminator
+
+      return baseSize + stringByteCount;
+    }
+
+    private int CalculateSize(BsonToken t)
+    {
+      switch (t.Type)
+      {
+        case BsonType.Object:
+          {
+            BsonObject value = (BsonObject)t;
+
+            int bases = 4;
+            foreach (BsonProperty p in value)
+            {
+              int size = 1;
+              size += CalculateSize(p.Name);
+              size += CalculateSize(p.Value);
+
+              bases += size;
+            }
+            bases += 1;
+            value.CalculatedSize = bases;
+            return bases;
+          }
+        case BsonType.Array:
+          {
+            BsonArray value = (BsonArray)t;
+
+            int size = 4;
+            int index = 0;
+            foreach (BsonToken c in value)
+            {
+              size += 1;
+              size += CalculateSize(MathUtils.IntLength(index));
+              size += CalculateSize(c);
+              index++;
+            }
+            size += 1;
+            value.CalculatedSize = size;
+
+            return value.CalculatedSize;
+          }
+        case BsonType.Integer:
+          return 4;
+        case BsonType.Long:
+          return 8;
+        case BsonType.Number:
+          return 8;
+        case BsonType.String:
+          {
+            BsonString value = (BsonString)t;
+            string s = (string)value.Value;
+            value.ByteCount = (s != null) ? Encoding.GetByteCount(s) : 0;
+            value.CalculatedSize = CalculateSizeWithLength(value.ByteCount, value.IncludeLength);
+
+            return value.CalculatedSize;
+          }
+        case BsonType.Boolean:
+          return 1;
+        case BsonType.Null:
+        case BsonType.Undefined:
+          return 0;
+        case BsonType.Date:
+          return 8;
+        case BsonType.Binary:
+          {
+            BsonValue value = (BsonValue)t;
+
+            byte[] data = (byte[])value.Value;
+            value.CalculatedSize = 4 + 1 + data.Length;
+
+            return value.CalculatedSize;
+          }
+        case BsonType.Oid:
+          return 12;
+        case BsonType.Regex:
+          {
+            BsonRegex value = (BsonRegex)t;
+            int size = 0;
+            size += CalculateSize(value.Pattern);
+            size += CalculateSize(value.Options);
+            value.CalculatedSize = size;
+
+            return value.CalculatedSize;
+          }
+        default:
+          throw new ArgumentOutOfRangeException("t", "Unexpected token when writing BSON: {0}".FormatWith(CultureInfo.InvariantCulture, t.Type));
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonObjectId.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonObjectId.cs
@@ -1,55 +1,55 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Bson
-{
-  /// <summary>
-  /// Represents a BSON Oid (object id).
-  /// </summary>
-  public class BsonObjectId
-  {
-    /// <summary>
-    /// Gets or sets the value of the Oid.
-    /// </summary>
-    /// <value>The value of the Oid.</value>
-    public byte[] Value { get; private set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="BsonObjectId"/> class.
-    /// </summary>
-    /// <param name="value">The Oid value.</param>
-    public BsonObjectId(byte[] value)
-    {
-      ValidationUtils.ArgumentNotNull(value, "value");
-      if (value.Length != 12)
-        throw new Exception("An ObjectId must be 12 bytes");
-
-      Value = value;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Bson
+{
+  /// <summary>
+  /// Represents a BSON Oid (object id).
+  /// </summary>
+  public class BsonObjectId
+  {
+    /// <summary>
+    /// Gets or sets the value of the Oid.
+    /// </summary>
+    /// <value>The value of the Oid.</value>
+    public byte[] Value { get; private set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="BsonObjectId"/> class.
+    /// </summary>
+    /// <param name="value">The Oid value.</param>
+    public BsonObjectId(byte[] value)
+    {
+      ValidationUtils.ArgumentNotNull(value, "value");
+      if (value.Length != 12)
+        throw new Exception("An ObjectId must be 12 bytes");
+
+      Value = value;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonReader.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonReader.cs
@@ -1,842 +1,842 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-using System.IO;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Bson
-{
-  /// <summary>
-  /// Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
-  /// </summary>
-  public class BsonReader : JsonReader
-  {
-    private const int MaxCharBytesSize = 128;
-    private static readonly byte[] SeqRange1 = new byte[] {0, 127}; // range of 1-byte sequence
-    private static readonly byte[] SeqRange2 = new byte[] {194, 223}; // range of 2-byte sequence
-    private static readonly byte[] SeqRange3 = new byte[] {224, 239}; // range of 3-byte sequence
-    private static readonly byte[] SeqRange4 = new byte[] {240, 244}; // range of 4-byte sequence
-
-    private readonly BinaryReader _reader;
-    private readonly List<ContainerContext> _stack;
-
-    private byte[] _byteBuffer;
-    private char[] _charBuffer;
-
-    private BsonType _currentElementType;
-    private BsonReaderState _bsonReaderState;
-    private ContainerContext _currentContext;
-
-    private bool _readRootValueAsArray;
-    private bool _jsonNet35BinaryCompatibility;
-    private DateTimeKind _dateTimeKindHandling;
-
-    private enum BsonReaderState
-    {
-      Normal,
-      ReferenceStart,
-      ReferenceRef,
-      ReferenceId,
-      CodeWScopeStart,
-      CodeWScopeCode,
-      CodeWScopeScope,
-      CodeWScopeScopeObject,
-      CodeWScopeScopeEnd
-    }
-
-    private class ContainerContext
-    {
-      public readonly BsonType Type;
-      public int Length;
-      public int Position;
-
-      public ContainerContext(BsonType type)
-      {
-        Type = type;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, <c>false</c>.
-    /// </value>
-    public bool JsonNet35BinaryCompatibility
-    {
-      get { return _jsonNet35BinaryCompatibility; }
-      set { _jsonNet35BinaryCompatibility = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets a value indicating whether the root object will be read as a JSON array.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if the root object will be read as a JSON array; otherwise, <c>false</c>.
-    /// </value>
-    public bool ReadRootValueAsArray
-    {
-      get { return _readRootValueAsArray; }
-      set { _readRootValueAsArray = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.
-    /// </summary>
-    /// <value>The <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.</value>
-    public DateTimeKind DateTimeKindHandling
-    {
-      get { return _dateTimeKindHandling; }
-      set { _dateTimeKindHandling = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="BsonReader"/> class.
-    /// </summary>
-    /// <param name="stream">The stream.</param>
-    public BsonReader(Stream stream)
-      : this(stream, false, DateTimeKind.Local)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="BsonReader"/> class.
-    /// </summary>
-    /// <param name="reader">The reader.</param>
-    public BsonReader(BinaryReader reader)
-      : this(reader, false, DateTimeKind.Local)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="BsonReader"/> class.
-    /// </summary>
-    /// <param name="stream">The stream.</param>
-    /// <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param>
-    /// <param name="dateTimeKindHandling">The <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.</param>
-    public BsonReader(Stream stream, bool readRootValueAsArray, DateTimeKind dateTimeKindHandling)
-    {
-      ValidationUtils.ArgumentNotNull(stream, "stream");
-      _reader = new BinaryReader(stream);
-      _stack = new List<ContainerContext>();
-      _readRootValueAsArray = readRootValueAsArray;
-      _dateTimeKindHandling = dateTimeKindHandling;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="BsonReader"/> class.
-    /// </summary>
-    /// <param name="reader">The reader.</param>
-    /// <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param>
-    /// <param name="dateTimeKindHandling">The <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.</param>
-    public BsonReader(BinaryReader reader, bool readRootValueAsArray, DateTimeKind dateTimeKindHandling)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-      _reader = reader;
-      _stack = new List<ContainerContext>();
-      _readRootValueAsArray = readRootValueAsArray;
-      _dateTimeKindHandling = dateTimeKindHandling;
-    }
-
-    private string ReadElement()
-    {
-      _currentElementType = ReadType();
-      string elementName = ReadString();
-      return elementName;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.
-    /// </returns>
-    public override byte[] ReadAsBytes()
-    {
-      return ReadAsBytesInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override decimal? ReadAsDecimal()
-    {
-      return ReadAsDecimalInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override int? ReadAsInt32()
-    {
-      return ReadAsInt32Internal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="String"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override string ReadAsString()
-    {
-      return ReadAsStringInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override DateTime? ReadAsDateTime()
-    {
-      return ReadAsDateTimeInternal();
-    }
-
-#if !NET20
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="Nullable{DateTimeOffset}"/>. This method will return <c>null</c> at the end of an array.
-    /// </returns>
-    public override DateTimeOffset? ReadAsDateTimeOffset()
-    {
-      return ReadAsDateTimeOffsetInternal();
-    }
-#endif
-
-    /// <summary>
-    /// Reads the next JSON token from the stream.
-    /// </summary>
-    /// <returns>
-    /// true if the next token was read successfully; false if there are no more tokens to read.
-    /// </returns>
-    public override bool Read()
-    {
-      _readType = Json.ReadType.Read;
-
-      return ReadInternal();
-    }
-
-    internal override bool ReadInternal()
-    {
-      try
-      {
-        bool success;
-
-        switch (_bsonReaderState)
-        {
-          case BsonReaderState.Normal:
-            success = ReadNormal();
-            break;
-          case BsonReaderState.ReferenceStart:
-          case BsonReaderState.ReferenceRef:
-          case BsonReaderState.ReferenceId:
-            success = ReadReference();
-            break;
-          case BsonReaderState.CodeWScopeStart:
-          case BsonReaderState.CodeWScopeCode:
-          case BsonReaderState.CodeWScopeScope:
-          case BsonReaderState.CodeWScopeScopeObject:
-          case BsonReaderState.CodeWScopeScopeEnd:
-            success = ReadCodeWScope();
-            break;
-          default:
-            throw CreateReaderException(this, "Unexpected state: {0}".FormatWith(CultureInfo.InvariantCulture, _bsonReaderState));
-        }
-
-        if (!success)
-        {
-          SetToken(JsonToken.None);
-          return false;
-        }
-
-        return true;
-      }
-      catch (EndOfStreamException)
-      {
-        SetToken(JsonToken.None);
-        return false;
-      }
-    }
-
-    /// <summary>
-    /// Changes the <see cref="JsonReader.State"/> to Closed.
-    /// </summary>
-    public override void Close()
-    {
-      base.Close();
-
-      if (CloseInput && _reader != null)
-#if !NETFX_CORE
-        _reader.Close();
-#else
-        _reader.Dispose();
-#endif
-    }
-
-    private bool ReadCodeWScope()
-    {
-      switch (_bsonReaderState)
-      {
-        case BsonReaderState.CodeWScopeStart:
-          SetToken(JsonToken.PropertyName, "$code");
-          _bsonReaderState = BsonReaderState.CodeWScopeCode;
-          return true;
-        case BsonReaderState.CodeWScopeCode:
-          // total CodeWScope size - not used
-          ReadInt32();
-
-          SetToken(JsonToken.String, ReadLengthString());
-          _bsonReaderState = BsonReaderState.CodeWScopeScope;
-          return true;
-        case BsonReaderState.CodeWScopeScope:
-          if (CurrentState == State.PostValue)
-          {
-            SetToken(JsonToken.PropertyName, "$scope");
-            return true;
-          }
-          else
-          {
-            SetToken(JsonToken.StartObject);
-            _bsonReaderState = BsonReaderState.CodeWScopeScopeObject;
-
-            ContainerContext newContext = new ContainerContext(BsonType.Object);
-            PushContext(newContext);
-            newContext.Length = ReadInt32();
-
-            return true;
-          }
-        case BsonReaderState.CodeWScopeScopeObject:
-          bool result = ReadNormal();
-          if (result && TokenType == JsonToken.EndObject)
-            _bsonReaderState = BsonReaderState.CodeWScopeScopeEnd;
-
-          return result;
-        case BsonReaderState.CodeWScopeScopeEnd:
-          SetToken(JsonToken.EndObject);
-          _bsonReaderState = BsonReaderState.Normal;
-          return true;
-        default:
-          throw new ArgumentOutOfRangeException();
-      }
-    }
-
-    private bool ReadReference()
-    {
-      switch (CurrentState)
-      {
-        case State.ObjectStart:
-          {
-            SetToken(JsonToken.PropertyName, "$ref");
-            _bsonReaderState = BsonReaderState.ReferenceRef;
-            return true;
-          }
-        case State.Property:
-          {
-            if (_bsonReaderState == BsonReaderState.ReferenceRef)
-            {
-              SetToken(JsonToken.String, ReadLengthString());
-              return true;
-            }
-            else if (_bsonReaderState == BsonReaderState.ReferenceId)
-            {
-              SetToken(JsonToken.Bytes, ReadBytes(12));
-              return true;
-            }
-            else
-            {
-              throw CreateReaderException(this, "Unexpected state when reading BSON reference: " + _bsonReaderState);
-            }
-          }
-        case State.PostValue:
-          {
-            if (_bsonReaderState == BsonReaderState.ReferenceRef)
-            {
-              SetToken(JsonToken.PropertyName, "$id");
-              _bsonReaderState = BsonReaderState.ReferenceId;
-              return true;
-            }
-            else if (_bsonReaderState == BsonReaderState.ReferenceId)
-            {
-              SetToken(JsonToken.EndObject);
-              _bsonReaderState = BsonReaderState.Normal;
-              return true;
-            }
-            else
-            {
-              throw CreateReaderException(this, "Unexpected state when reading BSON reference: " + _bsonReaderState);
-            }
-          }
-        default:
-          throw CreateReaderException(this, "Unexpected state when reading BSON reference: " + CurrentState);
-      }
-    }
-
-    private bool ReadNormal()
-    {
-      switch (CurrentState)
-      {
-        case State.Start:
-          {
-            JsonToken token = (!_readRootValueAsArray) ? JsonToken.StartObject : JsonToken.StartArray;
-            BsonType type = (!_readRootValueAsArray) ? BsonType.Object : BsonType.Array;
-
-            SetToken(token);
-            ContainerContext newContext = new ContainerContext(type);
-            PushContext(newContext);
-            newContext.Length = ReadInt32();
-            return true;
-          }
-        case State.Complete:
-        case State.Closed:
-          return false;
-        case State.Property:
-          {
-            ReadType(_currentElementType);
-            return true;
-          }
-        case State.ObjectStart:
-        case State.ArrayStart:
-        case State.PostValue:
-          ContainerContext context = _currentContext;
-          if (context == null)
-            return false;
-
-          int lengthMinusEnd = context.Length - 1;
-
-          if (context.Position < lengthMinusEnd)
-          {
-            if (context.Type == BsonType.Array)
-            {
-              ReadElement();
-              ReadType(_currentElementType);
-              return true;
-            }
-            else
-            {
-              SetToken(JsonToken.PropertyName, ReadElement());
-              return true;
-            }
-          }
-          else if (context.Position == lengthMinusEnd)
-          {
-            if (ReadByte() != 0)
-              throw CreateReaderException(this, "Unexpected end of object byte value.");
-
-            PopContext();
-            if (_currentContext != null)
-              MovePosition(context.Length);
-
-            JsonToken endToken = (context.Type == BsonType.Object) ? JsonToken.EndObject : JsonToken.EndArray;
-            SetToken(endToken);
-            return true;
-          }
-          else
-          {
-            throw CreateReaderException(this, "Read past end of current container context.");
-          }
-        case State.ConstructorStart:
-          break;
-        case State.Constructor:
-          break;
-        case State.Error:
-          break;
-        case State.Finished:
-          break;
-        default:
-          throw new ArgumentOutOfRangeException();
-      }
-
-      return false;
-    }
-
-    private void PopContext()
-    {
-      _stack.RemoveAt(_stack.Count - 1);
-      if (_stack.Count == 0)
-        _currentContext = null;
-      else
-        _currentContext = _stack[_stack.Count - 1];
-    }
-
-    private void PushContext(ContainerContext newContext)
-    {
-      _stack.Add(newContext);
-      _currentContext = newContext;
-    }
-
-    private byte ReadByte()
-    {
-      MovePosition(1);
-      return _reader.ReadByte();
-    }
-
-    private void ReadType(BsonType type)
-    {
-      switch (type)
-      {
-        case BsonType.Number:
-          SetToken(JsonToken.Float, ReadDouble());
-          break;
-        case BsonType.String:
-        case BsonType.Symbol:
-          SetToken(JsonToken.String, ReadLengthString());
-          break;
-        case BsonType.Object:
-          {
-            SetToken(JsonToken.StartObject);
-
-            ContainerContext newContext = new ContainerContext(BsonType.Object);
-            PushContext(newContext);
-            newContext.Length = ReadInt32();
-            break;
-          }
-        case BsonType.Array:
-          {
-            SetToken(JsonToken.StartArray);
-
-            ContainerContext newContext = new ContainerContext(BsonType.Array);
-            PushContext(newContext);
-            newContext.Length = ReadInt32();
-            break;
-          }
-        case BsonType.Binary:
-          SetToken(JsonToken.Bytes, ReadBinary());
-          break;
-        case BsonType.Undefined:
-          SetToken(JsonToken.Undefined);
-          break;
-        case BsonType.Oid:
-          byte[] oid = ReadBytes(12);
-          SetToken(JsonToken.Bytes, oid);
-          break;
-        case BsonType.Boolean:
-          bool b = Convert.ToBoolean(ReadByte());
-          SetToken(JsonToken.Boolean, b);
-          break;
-        case BsonType.Date:
-          long ticks = ReadInt64();
-          DateTime utcDateTime = JsonConvert.ConvertJavaScriptTicksToDateTime(ticks);
-
-          DateTime dateTime;
-          switch (DateTimeKindHandling)
-          {
-            case DateTimeKind.Unspecified:
-              dateTime = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Unspecified);
-              break;
-            case DateTimeKind.Local:
-              dateTime = utcDateTime.ToLocalTime();
-              break;
-            default:
-              dateTime = utcDateTime;
-              break;
-          }
-
-          SetToken(JsonToken.Date, dateTime);
-          break;
-        case BsonType.Null:
-          SetToken(JsonToken.Null);
-          break;
-        case BsonType.Regex:
-          string expression = ReadString();
-          string modifiers = ReadString();
-
-          string regex = @"/" + expression + @"/" + modifiers;
-          SetToken(JsonToken.String, regex);
-          break;
-        case BsonType.Reference:
-          SetToken(JsonToken.StartObject);
-          _bsonReaderState = BsonReaderState.ReferenceStart;
-          break;
-        case BsonType.Code:
-          SetToken(JsonToken.String, ReadLengthString());
-          break;
-        case BsonType.CodeWScope:
-          SetToken(JsonToken.StartObject);
-          _bsonReaderState = BsonReaderState.CodeWScopeStart;
-          break;
-        case BsonType.Integer:
-          SetToken(JsonToken.Integer, (long) ReadInt32());
-          break;
-        case BsonType.TimeStamp:
-        case BsonType.Long:
-          SetToken(JsonToken.Integer, ReadInt64());
-          break;
-        default:
-          throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + type);
-      }
-    }
-
-    private byte[] ReadBinary()
-    {
-      int dataLength = ReadInt32();
-
-      BsonBinaryType binaryType = (BsonBinaryType) ReadByte();
-
-#pragma warning disable 612,618
-      // the old binary type has the data length repeated in the data for some reason
-      if (binaryType == BsonBinaryType.Data && !_jsonNet35BinaryCompatibility)
-      {
-        dataLength = ReadInt32();
-      }
-#pragma warning restore 612,618
-
-      return ReadBytes(dataLength);
-    }
-
-    private string ReadString()
-    {
-      EnsureBuffers();
-
-      StringBuilder builder = null;
-
-      int totalBytesRead = 0;
-      // used in case of left over multibyte characters in the buffer
-      int offset = 0;
-      do
-      {
-        int count = offset;
-        byte b;
-        while (count < MaxCharBytesSize && (b = _reader.ReadByte()) > 0)
-        {
-          _byteBuffer[count++] = b;
-        }
-        int byteCount = count - offset;
-        totalBytesRead += byteCount;
-
-        if (count < MaxCharBytesSize && builder == null)
-        {
-          // pref optimization to avoid reading into a string builder
-          // if string is smaller than the buffer then return it directly
-          int length = Encoding.UTF8.GetChars(_byteBuffer, 0, byteCount, _charBuffer, 0);
-
-          MovePosition(totalBytesRead + 1);
-          return new string(_charBuffer, 0, length);
-        }
-        else
-        {
-          // calculate the index of the end of the last full character in the buffer
-          int lastFullCharStop = GetLastFullCharStop(count - 1);
-
-          int charCount = Encoding.UTF8.GetChars(_byteBuffer, 0, lastFullCharStop + 1, _charBuffer, 0);
-
-          if (builder == null)
-            builder = new StringBuilder(MaxCharBytesSize*2);
-
-          builder.Append(_charBuffer, 0, charCount);
-
-          if (lastFullCharStop < byteCount - 1)
-          {
-            offset = byteCount - lastFullCharStop - 1;
-            // copy left over multi byte characters to beginning of buffer for next iteration
-            Array.Copy(_byteBuffer, lastFullCharStop + 1, _byteBuffer, 0, offset);
-          }
-          else
-          {
-            // reached end of string
-            if (count < MaxCharBytesSize)
-            {
-              MovePosition(totalBytesRead + 1);
-              return builder.ToString();
-            }
-
-            offset = 0;
-          }
-        }
-      } while (true);
-    }
-
-    private string ReadLengthString()
-    {
-      int length = ReadInt32();
-
-      MovePosition(length);
-
-      string s = GetString(length - 1);
-      _reader.ReadByte();
-
-      return s;
-    }
-
-    private string GetString(int length)
-    {
-      if (length == 0)
-        return string.Empty;
-
-      EnsureBuffers();
-
-      StringBuilder builder = null;
-
-      int totalBytesRead = 0;
-
-      // used in case of left over multibyte characters in the buffer
-      int offset = 0;
-      do
-      {
-        int count = ((length - totalBytesRead) > MaxCharBytesSize - offset)
-                      ? MaxCharBytesSize - offset
-                      : length - totalBytesRead;
-
-        int byteCount = _reader.Read(_byteBuffer, offset, count);
-
-        if (byteCount == 0)
-          throw new EndOfStreamException("Unable to read beyond the end of the stream.");
-
-        totalBytesRead += byteCount;
-
-        // Above, byteCount is how many bytes we read this time.
-        // Below, byteCount is how many bytes are in the _byteBuffer.
-        byteCount += offset;
-
-        if (byteCount == length)
-        {
-          // pref optimization to avoid reading into a string builder
-          // first iteration and all bytes read then return string directly
-          int charCount = Encoding.UTF8.GetChars(_byteBuffer, 0, byteCount, _charBuffer, 0);
-          return new string(_charBuffer, 0, charCount);
-        }
-        else
-        {
-          int lastFullCharStop = GetLastFullCharStop(byteCount - 1);
-
-          if (builder == null)
-            builder = new StringBuilder(length);
-
-          int charCount = Encoding.UTF8.GetChars(_byteBuffer, 0, lastFullCharStop + 1, _charBuffer, 0);
-          builder.Append(_charBuffer, 0, charCount);
-
-          if (lastFullCharStop < byteCount - 1)
-          {
-            offset = byteCount - lastFullCharStop - 1;
-            // copy left over multi byte characters to beginning of buffer for next iteration
-            Array.Copy(_byteBuffer, lastFullCharStop + 1, _byteBuffer, 0, offset);
-          }
-          else
-          {
-            offset = 0;
-          }
-        }
-      } while (totalBytesRead < length);
-
-      return builder.ToString();
-    }
-
-    private int GetLastFullCharStop(int start)
-    {
-      int lookbackPos = start;
-      int bis = 0;
-      while (lookbackPos >= 0)
-      {
-        bis = BytesInSequence(_byteBuffer[lookbackPos]);
-        if (bis == 0)
-        {
-          lookbackPos--;
-          continue;
-        }
-        else if (bis == 1)
-        {
-          break;
-        }
-        else
-        {
-          lookbackPos--;
-          break;
-        }
-      }
-      if (bis == start - lookbackPos)
-      {
-        //Full character.
-        return start;
-      }
-      else
-      {
-        return lookbackPos;
-      }
-    }
-
-    private int BytesInSequence(byte b)
-    {
-      if (b <= SeqRange1[1]) return 1;
-      if (b >= SeqRange2[0] && b <= SeqRange2[1]) return 2;
-      if (b >= SeqRange3[0] && b <= SeqRange3[1]) return 3;
-      if (b >= SeqRange4[0] && b <= SeqRange4[1]) return 4;
-      return 0;
-    }
-
-    private void EnsureBuffers()
-    {
-      if (_byteBuffer == null)
-      {
-        _byteBuffer = new byte[MaxCharBytesSize];
-      }
-      if (_charBuffer == null)
-      {
-        int charBufferSize = Encoding.UTF8.GetMaxCharCount(MaxCharBytesSize);
-        _charBuffer = new char[charBufferSize];
-      }
-    }
-
-    private double ReadDouble()
-    {
-      MovePosition(8);
-      return _reader.ReadDouble();
-    }
-
-    private int ReadInt32()
-    {
-      MovePosition(4);
-      return _reader.ReadInt32();
-    }
-
-    private long ReadInt64()
-    {
-      MovePosition(8);
-      return _reader.ReadInt64();
-    }
-
-    private BsonType ReadType()
-    {
-      MovePosition(1);
-      return (BsonType) _reader.ReadSByte();
-    }
-
-    private void MovePosition(int count)
-    {
-      _currentContext.Position += count;
-    }
-
-    private byte[] ReadBytes(int count)
-    {
-      MovePosition(count);
-      return _reader.ReadBytes(count);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Text;
+using System.IO;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Bson
+{
+  /// <summary>
+  /// Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
+  /// </summary>
+  public class BsonReader : JsonReader
+  {
+    private const int MaxCharBytesSize = 128;
+    private static readonly byte[] SeqRange1 = new byte[] {0, 127}; // range of 1-byte sequence
+    private static readonly byte[] SeqRange2 = new byte[] {194, 223}; // range of 2-byte sequence
+    private static readonly byte[] SeqRange3 = new byte[] {224, 239}; // range of 3-byte sequence
+    private static readonly byte[] SeqRange4 = new byte[] {240, 244}; // range of 4-byte sequence
+
+    private readonly BinaryReader _reader;
+    private readonly List<ContainerContext> _stack;
+
+    private byte[] _byteBuffer;
+    private char[] _charBuffer;
+
+    private BsonType _currentElementType;
+    private BsonReaderState _bsonReaderState;
+    private ContainerContext _currentContext;
+
+    private bool _readRootValueAsArray;
+    private bool _jsonNet35BinaryCompatibility;
+    private DateTimeKind _dateTimeKindHandling;
+
+    private enum BsonReaderState
+    {
+      Normal,
+      ReferenceStart,
+      ReferenceRef,
+      ReferenceId,
+      CodeWScopeStart,
+      CodeWScopeCode,
+      CodeWScopeScope,
+      CodeWScopeScopeObject,
+      CodeWScopeScopeEnd
+    }
+
+    private class ContainerContext
+    {
+      public readonly BsonType Type;
+      public int Length;
+      public int Position;
+
+      public ContainerContext(BsonType type)
+      {
+        Type = type;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, <c>false</c>.
+    /// </value>
+    public bool JsonNet35BinaryCompatibility
+    {
+      get { return _jsonNet35BinaryCompatibility; }
+      set { _jsonNet35BinaryCompatibility = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets a value indicating whether the root object will be read as a JSON array.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if the root object will be read as a JSON array; otherwise, <c>false</c>.
+    /// </value>
+    public bool ReadRootValueAsArray
+    {
+      get { return _readRootValueAsArray; }
+      set { _readRootValueAsArray = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.
+    /// </summary>
+    /// <value>The <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.</value>
+    public DateTimeKind DateTimeKindHandling
+    {
+      get { return _dateTimeKindHandling; }
+      set { _dateTimeKindHandling = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="BsonReader"/> class.
+    /// </summary>
+    /// <param name="stream">The stream.</param>
+    public BsonReader(Stream stream)
+      : this(stream, false, DateTimeKind.Local)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="BsonReader"/> class.
+    /// </summary>
+    /// <param name="reader">The reader.</param>
+    public BsonReader(BinaryReader reader)
+      : this(reader, false, DateTimeKind.Local)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="BsonReader"/> class.
+    /// </summary>
+    /// <param name="stream">The stream.</param>
+    /// <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param>
+    /// <param name="dateTimeKindHandling">The <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.</param>
+    public BsonReader(Stream stream, bool readRootValueAsArray, DateTimeKind dateTimeKindHandling)
+    {
+      ValidationUtils.ArgumentNotNull(stream, "stream");
+      _reader = new BinaryReader(stream);
+      _stack = new List<ContainerContext>();
+      _readRootValueAsArray = readRootValueAsArray;
+      _dateTimeKindHandling = dateTimeKindHandling;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="BsonReader"/> class.
+    /// </summary>
+    /// <param name="reader">The reader.</param>
+    /// <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param>
+    /// <param name="dateTimeKindHandling">The <see cref="DateTimeKind" /> used when reading <see cref="DateTime"/> values from BSON.</param>
+    public BsonReader(BinaryReader reader, bool readRootValueAsArray, DateTimeKind dateTimeKindHandling)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+      _reader = reader;
+      _stack = new List<ContainerContext>();
+      _readRootValueAsArray = readRootValueAsArray;
+      _dateTimeKindHandling = dateTimeKindHandling;
+    }
+
+    private string ReadElement()
+    {
+      _currentElementType = ReadType();
+      string elementName = ReadString();
+      return elementName;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.
+    /// </returns>
+    public override byte[] ReadAsBytes()
+    {
+      return ReadAsBytesInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override decimal? ReadAsDecimal()
+    {
+      return ReadAsDecimalInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override int? ReadAsInt32()
+    {
+      return ReadAsInt32Internal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="String"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override string ReadAsString()
+    {
+      return ReadAsStringInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override DateTime? ReadAsDateTime()
+    {
+      return ReadAsDateTimeInternal();
+    }
+
+#if !NET20
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="Nullable{DateTimeOffset}"/>. This method will return <c>null</c> at the end of an array.
+    /// </returns>
+    public override DateTimeOffset? ReadAsDateTimeOffset()
+    {
+      return ReadAsDateTimeOffsetInternal();
+    }
+#endif
+
+    /// <summary>
+    /// Reads the next JSON token from the stream.
+    /// </summary>
+    /// <returns>
+    /// true if the next token was read successfully; false if there are no more tokens to read.
+    /// </returns>
+    public override bool Read()
+    {
+      _readType = Json.ReadType.Read;
+
+      return ReadInternal();
+    }
+
+    internal override bool ReadInternal()
+    {
+      try
+      {
+        bool success;
+
+        switch (_bsonReaderState)
+        {
+          case BsonReaderState.Normal:
+            success = ReadNormal();
+            break;
+          case BsonReaderState.ReferenceStart:
+          case BsonReaderState.ReferenceRef:
+          case BsonReaderState.ReferenceId:
+            success = ReadReference();
+            break;
+          case BsonReaderState.CodeWScopeStart:
+          case BsonReaderState.CodeWScopeCode:
+          case BsonReaderState.CodeWScopeScope:
+          case BsonReaderState.CodeWScopeScopeObject:
+          case BsonReaderState.CodeWScopeScopeEnd:
+            success = ReadCodeWScope();
+            break;
+          default:
+            throw CreateReaderException(this, "Unexpected state: {0}".FormatWith(CultureInfo.InvariantCulture, _bsonReaderState));
+        }
+
+        if (!success)
+        {
+          SetToken(JsonToken.None);
+          return false;
+        }
+
+        return true;
+      }
+      catch (EndOfStreamException)
+      {
+        SetToken(JsonToken.None);
+        return false;
+      }
+    }
+
+    /// <summary>
+    /// Changes the <see cref="JsonReader.State"/> to Closed.
+    /// </summary>
+    public override void Close()
+    {
+      base.Close();
+
+      if (CloseInput && _reader != null)
+#if !NETFX_CORE
+        _reader.Close();
+#else
+        _reader.Dispose();
+#endif
+    }
+
+    private bool ReadCodeWScope()
+    {
+      switch (_bsonReaderState)
+      {
+        case BsonReaderState.CodeWScopeStart:
+          SetToken(JsonToken.PropertyName, "$code");
+          _bsonReaderState = BsonReaderState.CodeWScopeCode;
+          return true;
+        case BsonReaderState.CodeWScopeCode:
+          // total CodeWScope size - not used
+          ReadInt32();
+
+          SetToken(JsonToken.String, ReadLengthString());
+          _bsonReaderState = BsonReaderState.CodeWScopeScope;
+          return true;
+        case BsonReaderState.CodeWScopeScope:
+          if (CurrentState == State.PostValue)
+          {
+            SetToken(JsonToken.PropertyName, "$scope");
+            return true;
+          }
+          else
+          {
+            SetToken(JsonToken.StartObject);
+            _bsonReaderState = BsonReaderState.CodeWScopeScopeObject;
+
+            ContainerContext newContext = new ContainerContext(BsonType.Object);
+            PushContext(newContext);
+            newContext.Length = ReadInt32();
+
+            return true;
+          }
+        case BsonReaderState.CodeWScopeScopeObject:
+          bool result = ReadNormal();
+          if (result && TokenType == JsonToken.EndObject)
+            _bsonReaderState = BsonReaderState.CodeWScopeScopeEnd;
+
+          return result;
+        case BsonReaderState.CodeWScopeScopeEnd:
+          SetToken(JsonToken.EndObject);
+          _bsonReaderState = BsonReaderState.Normal;
+          return true;
+        default:
+          throw new ArgumentOutOfRangeException();
+      }
+    }
+
+    private bool ReadReference()
+    {
+      switch (CurrentState)
+      {
+        case State.ObjectStart:
+          {
+            SetToken(JsonToken.PropertyName, "$ref");
+            _bsonReaderState = BsonReaderState.ReferenceRef;
+            return true;
+          }
+        case State.Property:
+          {
+            if (_bsonReaderState == BsonReaderState.ReferenceRef)
+            {
+              SetToken(JsonToken.String, ReadLengthString());
+              return true;
+            }
+            else if (_bsonReaderState == BsonReaderState.ReferenceId)
+            {
+              SetToken(JsonToken.Bytes, ReadBytes(12));
+              return true;
+            }
+            else
+            {
+              throw CreateReaderException(this, "Unexpected state when reading BSON reference: " + _bsonReaderState);
+            }
+          }
+        case State.PostValue:
+          {
+            if (_bsonReaderState == BsonReaderState.ReferenceRef)
+            {
+              SetToken(JsonToken.PropertyName, "$id");
+              _bsonReaderState = BsonReaderState.ReferenceId;
+              return true;
+            }
+            else if (_bsonReaderState == BsonReaderState.ReferenceId)
+            {
+              SetToken(JsonToken.EndObject);
+              _bsonReaderState = BsonReaderState.Normal;
+              return true;
+            }
+            else
+            {
+              throw CreateReaderException(this, "Unexpected state when reading BSON reference: " + _bsonReaderState);
+            }
+          }
+        default:
+          throw CreateReaderException(this, "Unexpected state when reading BSON reference: " + CurrentState);
+      }
+    }
+
+    private bool ReadNormal()
+    {
+      switch (CurrentState)
+      {
+        case State.Start:
+          {
+            JsonToken token = (!_readRootValueAsArray) ? JsonToken.StartObject : JsonToken.StartArray;
+            BsonType type = (!_readRootValueAsArray) ? BsonType.Object : BsonType.Array;
+
+            SetToken(token);
+            ContainerContext newContext = new ContainerContext(type);
+            PushContext(newContext);
+            newContext.Length = ReadInt32();
+            return true;
+          }
+        case State.Complete:
+        case State.Closed:
+          return false;
+        case State.Property:
+          {
+            ReadType(_currentElementType);
+            return true;
+          }
+        case State.ObjectStart:
+        case State.ArrayStart:
+        case State.PostValue:
+          ContainerContext context = _currentContext;
+          if (context == null)
+            return false;
+
+          int lengthMinusEnd = context.Length - 1;
+
+          if (context.Position < lengthMinusEnd)
+          {
+            if (context.Type == BsonType.Array)
+            {
+              ReadElement();
+              ReadType(_currentElementType);
+              return true;
+            }
+            else
+            {
+              SetToken(JsonToken.PropertyName, ReadElement());
+              return true;
+            }
+          }
+          else if (context.Position == lengthMinusEnd)
+          {
+            if (ReadByte() != 0)
+              throw CreateReaderException(this, "Unexpected end of object byte value.");
+
+            PopContext();
+            if (_currentContext != null)
+              MovePosition(context.Length);
+
+            JsonToken endToken = (context.Type == BsonType.Object) ? JsonToken.EndObject : JsonToken.EndArray;
+            SetToken(endToken);
+            return true;
+          }
+          else
+          {
+            throw CreateReaderException(this, "Read past end of current container context.");
+          }
+        case State.ConstructorStart:
+          break;
+        case State.Constructor:
+          break;
+        case State.Error:
+          break;
+        case State.Finished:
+          break;
+        default:
+          throw new ArgumentOutOfRangeException();
+      }
+
+      return false;
+    }
+
+    private void PopContext()
+    {
+      _stack.RemoveAt(_stack.Count - 1);
+      if (_stack.Count == 0)
+        _currentContext = null;
+      else
+        _currentContext = _stack[_stack.Count - 1];
+    }
+
+    private void PushContext(ContainerContext newContext)
+    {
+      _stack.Add(newContext);
+      _currentContext = newContext;
+    }
+
+    private byte ReadByte()
+    {
+      MovePosition(1);
+      return _reader.ReadByte();
+    }
+
+    private void ReadType(BsonType type)
+    {
+      switch (type)
+      {
+        case BsonType.Number:
+          SetToken(JsonToken.Float, ReadDouble());
+          break;
+        case BsonType.String:
+        case BsonType.Symbol:
+          SetToken(JsonToken.String, ReadLengthString());
+          break;
+        case BsonType.Object:
+          {
+            SetToken(JsonToken.StartObject);
+
+            ContainerContext newContext = new ContainerContext(BsonType.Object);
+            PushContext(newContext);
+            newContext.Length = ReadInt32();
+            break;
+          }
+        case BsonType.Array:
+          {
+            SetToken(JsonToken.StartArray);
+
+            ContainerContext newContext = new ContainerContext(BsonType.Array);
+            PushContext(newContext);
+            newContext.Length = ReadInt32();
+            break;
+          }
+        case BsonType.Binary:
+          SetToken(JsonToken.Bytes, ReadBinary());
+          break;
+        case BsonType.Undefined:
+          SetToken(JsonToken.Undefined);
+          break;
+        case BsonType.Oid:
+          byte[] oid = ReadBytes(12);
+          SetToken(JsonToken.Bytes, oid);
+          break;
+        case BsonType.Boolean:
+          bool b = Convert.ToBoolean(ReadByte());
+          SetToken(JsonToken.Boolean, b);
+          break;
+        case BsonType.Date:
+          long ticks = ReadInt64();
+          DateTime utcDateTime = JsonConvert.ConvertJavaScriptTicksToDateTime(ticks);
+
+          DateTime dateTime;
+          switch (DateTimeKindHandling)
+          {
+            case DateTimeKind.Unspecified:
+              dateTime = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Unspecified);
+              break;
+            case DateTimeKind.Local:
+              dateTime = utcDateTime.ToLocalTime();
+              break;
+            default:
+              dateTime = utcDateTime;
+              break;
+          }
+
+          SetToken(JsonToken.Date, dateTime);
+          break;
+        case BsonType.Null:
+          SetToken(JsonToken.Null);
+          break;
+        case BsonType.Regex:
+          string expression = ReadString();
+          string modifiers = ReadString();
+
+          string regex = @"/" + expression + @"/" + modifiers;
+          SetToken(JsonToken.String, regex);
+          break;
+        case BsonType.Reference:
+          SetToken(JsonToken.StartObject);
+          _bsonReaderState = BsonReaderState.ReferenceStart;
+          break;
+        case BsonType.Code:
+          SetToken(JsonToken.String, ReadLengthString());
+          break;
+        case BsonType.CodeWScope:
+          SetToken(JsonToken.StartObject);
+          _bsonReaderState = BsonReaderState.CodeWScopeStart;
+          break;
+        case BsonType.Integer:
+          SetToken(JsonToken.Integer, (long) ReadInt32());
+          break;
+        case BsonType.TimeStamp:
+        case BsonType.Long:
+          SetToken(JsonToken.Integer, ReadInt64());
+          break;
+        default:
+          throw new ArgumentOutOfRangeException("type", "Unexpected BsonType value: " + type);
+      }
+    }
+
+    private byte[] ReadBinary()
+    {
+      int dataLength = ReadInt32();
+
+      BsonBinaryType binaryType = (BsonBinaryType) ReadByte();
+
+#pragma warning disable 612,618
+      // the old binary type has the data length repeated in the data for some reason
+      if (binaryType == BsonBinaryType.Data && !_jsonNet35BinaryCompatibility)
+      {
+        dataLength = ReadInt32();
+      }
+#pragma warning restore 612,618
+
+      return ReadBytes(dataLength);
+    }
+
+    private string ReadString()
+    {
+      EnsureBuffers();
+
+      StringBuilder builder = null;
+
+      int totalBytesRead = 0;
+      // used in case of left over multibyte characters in the buffer
+      int offset = 0;
+      do
+      {
+        int count = offset;
+        byte b;
+        while (count < MaxCharBytesSize && (b = _reader.ReadByte()) > 0)
+        {
+          _byteBuffer[count++] = b;
+        }
+        int byteCount = count - offset;
+        totalBytesRead += byteCount;
+
+        if (count < MaxCharBytesSize && builder == null)
+        {
+          // pref optimization to avoid reading into a string builder
+          // if string is smaller than the buffer then return it directly
+          int length = Encoding.UTF8.GetChars(_byteBuffer, 0, byteCount, _charBuffer, 0);
+
+          MovePosition(totalBytesRead + 1);
+          return new string(_charBuffer, 0, length);
+        }
+        else
+        {
+          // calculate the index of the end of the last full character in the buffer
+          int lastFullCharStop = GetLastFullCharStop(count - 1);
+
+          int charCount = Encoding.UTF8.GetChars(_byteBuffer, 0, lastFullCharStop + 1, _charBuffer, 0);
+
+          if (builder == null)
+            builder = new StringBuilder(MaxCharBytesSize*2);
+
+          builder.Append(_charBuffer, 0, charCount);
+
+          if (lastFullCharStop < byteCount - 1)
+          {
+            offset = byteCount - lastFullCharStop - 1;
+            // copy left over multi byte characters to beginning of buffer for next iteration
+            Array.Copy(_byteBuffer, lastFullCharStop + 1, _byteBuffer, 0, offset);
+          }
+          else
+          {
+            // reached end of string
+            if (count < MaxCharBytesSize)
+            {
+              MovePosition(totalBytesRead + 1);
+              return builder.ToString();
+            }
+
+            offset = 0;
+          }
+        }
+      } while (true);
+    }
+
+    private string ReadLengthString()
+    {
+      int length = ReadInt32();
+
+      MovePosition(length);
+
+      string s = GetString(length - 1);
+      _reader.ReadByte();
+
+      return s;
+    }
+
+    private string GetString(int length)
+    {
+      if (length == 0)
+        return string.Empty;
+
+      EnsureBuffers();
+
+      StringBuilder builder = null;
+
+      int totalBytesRead = 0;
+
+      // used in case of left over multibyte characters in the buffer
+      int offset = 0;
+      do
+      {
+        int count = ((length - totalBytesRead) > MaxCharBytesSize - offset)
+                      ? MaxCharBytesSize - offset
+                      : length - totalBytesRead;
+
+        int byteCount = _reader.Read(_byteBuffer, offset, count);
+
+        if (byteCount == 0)
+          throw new EndOfStreamException("Unable to read beyond the end of the stream.");
+
+        totalBytesRead += byteCount;
+
+        // Above, byteCount is how many bytes we read this time.
+        // Below, byteCount is how many bytes are in the _byteBuffer.
+        byteCount += offset;
+
+        if (byteCount == length)
+        {
+          // pref optimization to avoid reading into a string builder
+          // first iteration and all bytes read then return string directly
+          int charCount = Encoding.UTF8.GetChars(_byteBuffer, 0, byteCount, _charBuffer, 0);
+          return new string(_charBuffer, 0, charCount);
+        }
+        else
+        {
+          int lastFullCharStop = GetLastFullCharStop(byteCount - 1);
+
+          if (builder == null)
+            builder = new StringBuilder(length);
+
+          int charCount = Encoding.UTF8.GetChars(_byteBuffer, 0, lastFullCharStop + 1, _charBuffer, 0);
+          builder.Append(_charBuffer, 0, charCount);
+
+          if (lastFullCharStop < byteCount - 1)
+          {
+            offset = byteCount - lastFullCharStop - 1;
+            // copy left over multi byte characters to beginning of buffer for next iteration
+            Array.Copy(_byteBuffer, lastFullCharStop + 1, _byteBuffer, 0, offset);
+          }
+          else
+          {
+            offset = 0;
+          }
+        }
+      } while (totalBytesRead < length);
+
+      return builder.ToString();
+    }
+
+    private int GetLastFullCharStop(int start)
+    {
+      int lookbackPos = start;
+      int bis = 0;
+      while (lookbackPos >= 0)
+      {
+        bis = BytesInSequence(_byteBuffer[lookbackPos]);
+        if (bis == 0)
+        {
+          lookbackPos--;
+          continue;
+        }
+        else if (bis == 1)
+        {
+          break;
+        }
+        else
+        {
+          lookbackPos--;
+          break;
+        }
+      }
+      if (bis == start - lookbackPos)
+      {
+        //Full character.
+        return start;
+      }
+      else
+      {
+        return lookbackPos;
+      }
+    }
+
+    private int BytesInSequence(byte b)
+    {
+      if (b <= SeqRange1[1]) return 1;
+      if (b >= SeqRange2[0] && b <= SeqRange2[1]) return 2;
+      if (b >= SeqRange3[0] && b <= SeqRange3[1]) return 3;
+      if (b >= SeqRange4[0] && b <= SeqRange4[1]) return 4;
+      return 0;
+    }
+
+    private void EnsureBuffers()
+    {
+      if (_byteBuffer == null)
+      {
+        _byteBuffer = new byte[MaxCharBytesSize];
+      }
+      if (_charBuffer == null)
+      {
+        int charBufferSize = Encoding.UTF8.GetMaxCharCount(MaxCharBytesSize);
+        _charBuffer = new char[charBufferSize];
+      }
+    }
+
+    private double ReadDouble()
+    {
+      MovePosition(8);
+      return _reader.ReadDouble();
+    }
+
+    private int ReadInt32()
+    {
+      MovePosition(4);
+      return _reader.ReadInt32();
+    }
+
+    private long ReadInt64()
+    {
+      MovePosition(8);
+      return _reader.ReadInt64();
+    }
+
+    private BsonType ReadType()
+    {
+      MovePosition(1);
+      return (BsonType) _reader.ReadSByte();
+    }
+
+    private void MovePosition(int count)
+    {
+      _currentContext.Position += count;
+    }
+
+    private byte[] ReadBytes(int count)
+    {
+      MovePosition(count);
+      return _reader.ReadBytes(count);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonToken.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonToken.cs
@@ -1,121 +1,121 @@
-using System.Collections;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Bson
-{
-  internal abstract class BsonToken
-  {
-    public abstract BsonType Type { get; }
-    public BsonToken Parent { get; set; }
-    public int CalculatedSize { get; set; }
-  }
-
-  internal class BsonObject : BsonToken, IEnumerable<BsonProperty>
-  {
-    private readonly List<BsonProperty> _children = new List<BsonProperty>();
-
-    public void Add(string name, BsonToken token)
-    {
-      _children.Add(new BsonProperty { Name = new BsonString(name, false), Value = token });
-      token.Parent = this;
-    }
-
-    public override BsonType Type
-    {
-      get { return BsonType.Object; }
-    }
-
-    public IEnumerator<BsonProperty> GetEnumerator()
-    {
-      return _children.GetEnumerator();
-    }
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return GetEnumerator();
-    }
-  }
-
-  internal class BsonArray : BsonToken, IEnumerable<BsonToken>
-  {
-    private readonly List<BsonToken> _children = new List<BsonToken>();
-
-    public void Add(BsonToken token)
-    {
-      _children.Add(token);
-      token.Parent = this;
-    }
-
-    public override BsonType Type
-    {
-      get { return BsonType.Array; }
-    }
-
-    public IEnumerator<BsonToken> GetEnumerator()
-    {
-      return _children.GetEnumerator();
-    }
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return GetEnumerator();
-    }
-  }
-
-  internal class BsonValue : BsonToken
-  {
-    private readonly object _value;
-    private readonly BsonType _type;
-
-    public BsonValue(object value, BsonType type)
-    {
-      _value = value;
-      _type = type;
-    }
-
-    public object Value
-    {
-      get { return _value; }
-    }
-
-    public override BsonType Type
-    {
-      get { return _type; }
-    }
-  }
-
-  internal class BsonString : BsonValue
-  {
-    public int ByteCount { get; set; }
-    public bool IncludeLength { get; set; }
-
-    public BsonString(object value, bool includeLength)
-      : base(value, BsonType.String)
-    {
-      IncludeLength = includeLength;
-    }
-  }
-
-  internal class BsonRegex : BsonToken
-  {
-    public BsonString Pattern { get; set; }
-    public BsonString Options { get; set; }
-
-    public BsonRegex(string pattern, string options)
-    {
-      Pattern = new BsonString(pattern, false);
-      Options = new BsonString(options, false);
-    }
-
-    public override BsonType Type
-    {
-      get { return BsonType.Regex; }
-    }
-  }
-
-  internal class BsonProperty
-  {
-    public BsonString Name { get; set; }
-    public BsonToken Value { get; set; }
-  }
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Bson
+{
+  internal abstract class BsonToken
+  {
+    public abstract BsonType Type { get; }
+    public BsonToken Parent { get; set; }
+    public int CalculatedSize { get; set; }
+  }
+
+  internal class BsonObject : BsonToken, IEnumerable<BsonProperty>
+  {
+    private readonly List<BsonProperty> _children = new List<BsonProperty>();
+
+    public void Add(string name, BsonToken token)
+    {
+      _children.Add(new BsonProperty { Name = new BsonString(name, false), Value = token });
+      token.Parent = this;
+    }
+
+    public override BsonType Type
+    {
+      get { return BsonType.Object; }
+    }
+
+    public IEnumerator<BsonProperty> GetEnumerator()
+    {
+      return _children.GetEnumerator();
+    }
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return GetEnumerator();
+    }
+  }
+
+  internal class BsonArray : BsonToken, IEnumerable<BsonToken>
+  {
+    private readonly List<BsonToken> _children = new List<BsonToken>();
+
+    public void Add(BsonToken token)
+    {
+      _children.Add(token);
+      token.Parent = this;
+    }
+
+    public override BsonType Type
+    {
+      get { return BsonType.Array; }
+    }
+
+    public IEnumerator<BsonToken> GetEnumerator()
+    {
+      return _children.GetEnumerator();
+    }
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return GetEnumerator();
+    }
+  }
+
+  internal class BsonValue : BsonToken
+  {
+    private readonly object _value;
+    private readonly BsonType _type;
+
+    public BsonValue(object value, BsonType type)
+    {
+      _value = value;
+      _type = type;
+    }
+
+    public object Value
+    {
+      get { return _value; }
+    }
+
+    public override BsonType Type
+    {
+      get { return _type; }
+    }
+  }
+
+  internal class BsonString : BsonValue
+  {
+    public int ByteCount { get; set; }
+    public bool IncludeLength { get; set; }
+
+    public BsonString(object value, bool includeLength)
+      : base(value, BsonType.String)
+    {
+      IncludeLength = includeLength;
+    }
+  }
+
+  internal class BsonRegex : BsonToken
+  {
+    public BsonString Pattern { get; set; }
+    public BsonString Options { get; set; }
+
+    public BsonRegex(string pattern, string options)
+    {
+      Pattern = new BsonString(pattern, false);
+      Options = new BsonString(options, false);
+    }
+
+    public override BsonType Type
+    {
+      get { return BsonType.Regex; }
+    }
+  }
+
+  internal class BsonProperty
+  {
+    public BsonString Name { get; set; }
+    public BsonToken Value { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonType.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonType.cs
@@ -1,51 +1,51 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Bson
-{
-  internal enum BsonType : sbyte 
-  {
-    Number = 1,
-    String = 2,
-    Object = 3,
-    Array = 4,
-    Binary = 5,
-    Undefined = 6,
-    Oid = 7,
-    Boolean = 8,
-    Date = 9,
-    Null = 10,
-    Regex = 11,
-    Reference = 12,
-    Code = 13,
-    Symbol = 14,
-    CodeWScope = 15,
-    Integer = 16,
-    TimeStamp = 17,
-    Long = 18,
-    MinKey = -1,
-    MaxKey = 127
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Bson
+{
+  internal enum BsonType : sbyte 
+  {
+    Number = 1,
+    String = 2,
+    Object = 3,
+    Array = 4,
+    Binary = 5,
+    Undefined = 6,
+    Oid = 7,
+    Boolean = 8,
+    Date = 9,
+    Null = 10,
+    Regex = 11,
+    Reference = 12,
+    Code = 13,
+    Symbol = 14,
+    CodeWScope = 15,
+    Integer = 16,
+    TimeStamp = 17,
+    Long = 18,
+    MinKey = -1,
+    MaxKey = 127
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonWriter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Bson/BsonWriter.cs
@@ -1,493 +1,493 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Linq;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Bson
-{
-  /// <summary>
-  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
-  /// </summary>
-  public class BsonWriter : JsonWriter
-  {
-    private readonly BsonBinaryWriter _writer;
-
-    private BsonToken _root;
-    private BsonToken _parent;
-    private string _propertyName;
-
-    /// <summary>
-    /// Gets or sets the <see cref="DateTimeKind" /> used when writing <see cref="DateTime"/> values to BSON.
-    /// When set to <see cref="DateTimeKind.Unspecified" /> no conversion will occur.
-    /// </summary>
-    /// <value>The <see cref="DateTimeKind" /> used when writing <see cref="DateTime"/> values to BSON.</value>
-    public DateTimeKind DateTimeKindHandling
-    {
-      get { return _writer.DateTimeKindHandling; }
-      set { _writer.DateTimeKindHandling = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="BsonWriter"/> class.
-    /// </summary>
-    /// <param name="stream">The stream.</param>
-    public BsonWriter(Stream stream)
-    {
-      ValidationUtils.ArgumentNotNull(stream, "stream");
-      _writer = new BsonBinaryWriter(new BinaryWriter(stream));
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="BsonWriter"/> class.
-    /// </summary>
-    /// <param name="writer">The writer.</param>
-    public BsonWriter(BinaryWriter writer)
-    {
-      ValidationUtils.ArgumentNotNull(writer, "writer");
-      _writer = new BsonBinaryWriter(writer);
-    }
-
-    /// <summary>
-    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
-    /// </summary>
-    public override void Flush()
-    {
-      _writer.Flush();
-    }
-
-    /// <summary>
-    /// Writes the end.
-    /// </summary>
-    /// <param name="token">The token.</param>
-    protected override void WriteEnd(JsonToken token)
-    {
-      base.WriteEnd(token);
-      RemoveParent();
-
-      if (Top == 0)
-      {
-        _writer.WriteToken(_root);
-      }
-    }
-
-    /// <summary>
-    /// Writes out a comment <code>/*...*/</code> containing the specified text.
-    /// </summary>
-    /// <param name="text">Text to place inside the comment.</param>
-    public override void WriteComment(string text)
-    {
-      throw new JsonWriterException("Cannot write JSON comment as BSON.");
-    }
-
-    /// <summary>
-    /// Writes the start of a constructor with the given name.
-    /// </summary>
-    /// <param name="name">The name of the constructor.</param>
-    public override void WriteStartConstructor(string name)
-    {
-      throw new JsonWriterException("Cannot write JSON constructor as BSON.");
-    }
-
-    /// <summary>
-    /// Writes raw JSON.
-    /// </summary>
-    /// <param name="json">The raw JSON to write.</param>
-    public override void WriteRaw(string json)
-    {
-      throw new JsonWriterException("Cannot write raw JSON as BSON.");
-    }
-
-    /// <summary>
-    /// Writes raw JSON where a value is expected and updates the writer's state.
-    /// </summary>
-    /// <param name="json">The raw JSON to write.</param>
-    public override void WriteRawValue(string json)
-    {
-      throw new JsonWriterException("Cannot write raw JSON as BSON.");
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json array.
-    /// </summary>
-    public override void WriteStartArray()
-    {
-      base.WriteStartArray();
-
-      AddParent(new BsonArray());
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json object.
-    /// </summary>
-    public override void WriteStartObject()
-    {
-      base.WriteStartObject();
-
-      AddParent(new BsonObject());
-    }
-
-    /// <summary>
-    /// Writes the property name of a name/value pair on a Json object.
-    /// </summary>
-    /// <param name="name">The name of the property.</param>
-    public override void WritePropertyName(string name)
-    {
-      base.WritePropertyName(name);
-
-      _propertyName = name;
-    }
-
-    /// <summary>
-    /// Closes this stream and the underlying stream.
-    /// </summary>
-    public override void Close()
-    {
-      base.Close();
-
-      if (CloseOutput && _writer != null)
-        _writer.Close();
-    }
-
-    private void AddParent(BsonToken container)
-    {
-      AddToken(container);
-      _parent = container;
-    }
-
-    private void RemoveParent()
-    {
-      _parent = _parent.Parent;
-    }
-
-    private void AddValue(object value, BsonType type)
-    {
-      AddToken(new BsonValue(value, type));
-    }
-
-    internal void AddToken(BsonToken token)
-    {
-      if (_parent != null)
-      {
-        if (_parent is BsonObject)
-        {
-          ((BsonObject) _parent).Add(_propertyName, token);
-          _propertyName = null;
-        }
-        else
-        {
-          ((BsonArray) _parent).Add(token);
-        }
-      }
-      else
-      {
-        if (token.Type != BsonType.Object && token.Type != BsonType.Array)
-          throw new JsonWriterException("Error writing {0} value. BSON must start with an Object or Array.".FormatWith(CultureInfo.InvariantCulture, token.Type));
-
-        _parent = token;
-        _root = token;
-      }
-    }
-
-    #region WriteValue methods
-
-    /// <summary>
-    /// Writes a null value.
-    /// </summary>
-    public override void WriteNull()
-    {
-      base.WriteNull();
-      AddValue(null, BsonType.Null);
-    }
-
-    /// <summary>
-    /// Writes an undefined value.
-    /// </summary>
-    public override void WriteUndefined()
-    {
-      base.WriteUndefined();
-      AddValue(null, BsonType.Undefined);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="String"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="String"/> value to write.</param>
-    public override void WriteValue(string value)
-    {
-      base.WriteValue(value);
-      if (value == null)
-        AddValue(null, BsonType.Null);
-      else
-        AddToken(new BsonString(value, true));
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int32"/> value to write.</param>
-    public override void WriteValue(int value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(uint value)
-    {
-      if (value > int.MaxValue)
-        throw new JsonWriterException("Value is too large to fit in a signed 32 bit integer. BSON does not support unsigned values.");
-
-      base.WriteValue(value);
-      AddValue(value, BsonType.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int64"/> value to write.</param>
-    public override void WriteValue(long value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Long);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(ulong value)
-    {
-      if (value > long.MaxValue)
-        throw new JsonWriterException("Value is too large to fit in a signed 64 bit integer. BSON does not support unsigned values.");
-
-      base.WriteValue(value);
-      AddValue(value, BsonType.Long);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Single"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Single"/> value to write.</param>
-    public override void WriteValue(float value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Number);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Double"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Double"/> value to write.</param>
-    public override void WriteValue(double value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Number);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Boolean"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
-    public override void WriteValue(bool value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Boolean);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int16"/> value to write.</param>
-    public override void WriteValue(short value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(ushort value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Char"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Char"/> value to write.</param>
-    public override void WriteValue(char value)
-    {
-      base.WriteValue(value);
-      string s = null;
-#if !NETFX_CORE
-      s = value.ToString(CultureInfo.InvariantCulture);
-#else
-      s = value.ToString();
-#endif
-      AddToken(new BsonString(s, true));
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Byte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Byte"/> value to write.</param>
-    public override void WriteValue(byte value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="SByte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="SByte"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(sbyte value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Decimal"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
-    public override void WriteValue(decimal value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Number);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="DateTime"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
-    public override void WriteValue(DateTime value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Date);
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Writes a <see cref="DateTimeOffset"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
-    public override void WriteValue(DateTimeOffset value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Date);
-    }
-#endif
-
-    /// <summary>
-    /// Writes a <see cref="T:Byte[]"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
-    public override void WriteValue(byte[] value)
-    {
-      base.WriteValue(value);
-      AddValue(value, BsonType.Binary);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Guid"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Guid"/> value to write.</param>
-    public override void WriteValue(Guid value)
-    {
-      base.WriteValue(value);
-      AddToken(new BsonString(value.ToString(), true));
-    }
-
-    /// <summary>
-    /// Writes a <see cref="TimeSpan"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
-    public override void WriteValue(TimeSpan value)
-    {
-      base.WriteValue(value);
-      AddToken(new BsonString(value.ToString(), true));
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Uri"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Uri"/> value to write.</param>
-    public override void WriteValue(Uri value)
-    {
-      base.WriteValue(value);
-      AddToken(new BsonString(value.ToString(), true));
-    }
-
-    #endregion
-
-    /// <summary>
-    /// Writes a <see cref="T:Byte[]"/> value that represents a BSON object id.
-    /// </summary>
-    /// <param name="value"></param>
-    public void WriteObjectId(byte[] value)
-    {
-      ValidationUtils.ArgumentNotNull(value, "value");
-
-      if (value.Length != 12)
-        throw new Exception("An object id must be 12 bytes");
-
-      // hack to update the writer state
-      AutoComplete(JsonToken.Undefined);
-      AddValue(value, BsonType.Oid);
-    }
-
-    /// <summary>
-    /// Writes a BSON regex.
-    /// </summary>
-    /// <param name="pattern">The regex pattern.</param>
-    /// <param name="options">The regex options.</param>
-    public void WriteRegex(string pattern, string options)
-    {
-      ValidationUtils.ArgumentNotNull(pattern, "pattern");
-
-      // hack to update the writer state
-      AutoComplete(JsonToken.Undefined);
-      AddToken(new BsonRegex(pattern, options));
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Linq;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Bson
+{
+  /// <summary>
+  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
+  /// </summary>
+  public class BsonWriter : JsonWriter
+  {
+    private readonly BsonBinaryWriter _writer;
+
+    private BsonToken _root;
+    private BsonToken _parent;
+    private string _propertyName;
+
+    /// <summary>
+    /// Gets or sets the <see cref="DateTimeKind" /> used when writing <see cref="DateTime"/> values to BSON.
+    /// When set to <see cref="DateTimeKind.Unspecified" /> no conversion will occur.
+    /// </summary>
+    /// <value>The <see cref="DateTimeKind" /> used when writing <see cref="DateTime"/> values to BSON.</value>
+    public DateTimeKind DateTimeKindHandling
+    {
+      get { return _writer.DateTimeKindHandling; }
+      set { _writer.DateTimeKindHandling = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="BsonWriter"/> class.
+    /// </summary>
+    /// <param name="stream">The stream.</param>
+    public BsonWriter(Stream stream)
+    {
+      ValidationUtils.ArgumentNotNull(stream, "stream");
+      _writer = new BsonBinaryWriter(new BinaryWriter(stream));
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="BsonWriter"/> class.
+    /// </summary>
+    /// <param name="writer">The writer.</param>
+    public BsonWriter(BinaryWriter writer)
+    {
+      ValidationUtils.ArgumentNotNull(writer, "writer");
+      _writer = new BsonBinaryWriter(writer);
+    }
+
+    /// <summary>
+    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+    /// </summary>
+    public override void Flush()
+    {
+      _writer.Flush();
+    }
+
+    /// <summary>
+    /// Writes the end.
+    /// </summary>
+    /// <param name="token">The token.</param>
+    protected override void WriteEnd(JsonToken token)
+    {
+      base.WriteEnd(token);
+      RemoveParent();
+
+      if (Top == 0)
+      {
+        _writer.WriteToken(_root);
+      }
+    }
+
+    /// <summary>
+    /// Writes out a comment <code>/*...*/</code> containing the specified text.
+    /// </summary>
+    /// <param name="text">Text to place inside the comment.</param>
+    public override void WriteComment(string text)
+    {
+      throw new JsonWriterException("Cannot write JSON comment as BSON.");
+    }
+
+    /// <summary>
+    /// Writes the start of a constructor with the given name.
+    /// </summary>
+    /// <param name="name">The name of the constructor.</param>
+    public override void WriteStartConstructor(string name)
+    {
+      throw new JsonWriterException("Cannot write JSON constructor as BSON.");
+    }
+
+    /// <summary>
+    /// Writes raw JSON.
+    /// </summary>
+    /// <param name="json">The raw JSON to write.</param>
+    public override void WriteRaw(string json)
+    {
+      throw new JsonWriterException("Cannot write raw JSON as BSON.");
+    }
+
+    /// <summary>
+    /// Writes raw JSON where a value is expected and updates the writer's state.
+    /// </summary>
+    /// <param name="json">The raw JSON to write.</param>
+    public override void WriteRawValue(string json)
+    {
+      throw new JsonWriterException("Cannot write raw JSON as BSON.");
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json array.
+    /// </summary>
+    public override void WriteStartArray()
+    {
+      base.WriteStartArray();
+
+      AddParent(new BsonArray());
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json object.
+    /// </summary>
+    public override void WriteStartObject()
+    {
+      base.WriteStartObject();
+
+      AddParent(new BsonObject());
+    }
+
+    /// <summary>
+    /// Writes the property name of a name/value pair on a Json object.
+    /// </summary>
+    /// <param name="name">The name of the property.</param>
+    public override void WritePropertyName(string name)
+    {
+      base.WritePropertyName(name);
+
+      _propertyName = name;
+    }
+
+    /// <summary>
+    /// Closes this stream and the underlying stream.
+    /// </summary>
+    public override void Close()
+    {
+      base.Close();
+
+      if (CloseOutput && _writer != null)
+        _writer.Close();
+    }
+
+    private void AddParent(BsonToken container)
+    {
+      AddToken(container);
+      _parent = container;
+    }
+
+    private void RemoveParent()
+    {
+      _parent = _parent.Parent;
+    }
+
+    private void AddValue(object value, BsonType type)
+    {
+      AddToken(new BsonValue(value, type));
+    }
+
+    internal void AddToken(BsonToken token)
+    {
+      if (_parent != null)
+      {
+        if (_parent is BsonObject)
+        {
+          ((BsonObject) _parent).Add(_propertyName, token);
+          _propertyName = null;
+        }
+        else
+        {
+          ((BsonArray) _parent).Add(token);
+        }
+      }
+      else
+      {
+        if (token.Type != BsonType.Object && token.Type != BsonType.Array)
+          throw new JsonWriterException("Error writing {0} value. BSON must start with an Object or Array.".FormatWith(CultureInfo.InvariantCulture, token.Type));
+
+        _parent = token;
+        _root = token;
+      }
+    }
+
+    #region WriteValue methods
+
+    /// <summary>
+    /// Writes a null value.
+    /// </summary>
+    public override void WriteNull()
+    {
+      base.WriteNull();
+      AddValue(null, BsonType.Null);
+    }
+
+    /// <summary>
+    /// Writes an undefined value.
+    /// </summary>
+    public override void WriteUndefined()
+    {
+      base.WriteUndefined();
+      AddValue(null, BsonType.Undefined);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="String"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="String"/> value to write.</param>
+    public override void WriteValue(string value)
+    {
+      base.WriteValue(value);
+      if (value == null)
+        AddValue(null, BsonType.Null);
+      else
+        AddToken(new BsonString(value, true));
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int32"/> value to write.</param>
+    public override void WriteValue(int value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(uint value)
+    {
+      if (value > int.MaxValue)
+        throw new JsonWriterException("Value is too large to fit in a signed 32 bit integer. BSON does not support unsigned values.");
+
+      base.WriteValue(value);
+      AddValue(value, BsonType.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int64"/> value to write.</param>
+    public override void WriteValue(long value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Long);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(ulong value)
+    {
+      if (value > long.MaxValue)
+        throw new JsonWriterException("Value is too large to fit in a signed 64 bit integer. BSON does not support unsigned values.");
+
+      base.WriteValue(value);
+      AddValue(value, BsonType.Long);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Single"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Single"/> value to write.</param>
+    public override void WriteValue(float value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Number);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Double"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Double"/> value to write.</param>
+    public override void WriteValue(double value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Number);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Boolean"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
+    public override void WriteValue(bool value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Boolean);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int16"/> value to write.</param>
+    public override void WriteValue(short value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(ushort value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Char"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Char"/> value to write.</param>
+    public override void WriteValue(char value)
+    {
+      base.WriteValue(value);
+      string s = null;
+#if !NETFX_CORE
+      s = value.ToString(CultureInfo.InvariantCulture);
+#else
+      s = value.ToString();
+#endif
+      AddToken(new BsonString(s, true));
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Byte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Byte"/> value to write.</param>
+    public override void WriteValue(byte value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="SByte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="SByte"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(sbyte value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Decimal"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
+    public override void WriteValue(decimal value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Number);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="DateTime"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
+    public override void WriteValue(DateTime value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Date);
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Writes a <see cref="DateTimeOffset"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
+    public override void WriteValue(DateTimeOffset value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Date);
+    }
+#endif
+
+    /// <summary>
+    /// Writes a <see cref="T:Byte[]"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
+    public override void WriteValue(byte[] value)
+    {
+      base.WriteValue(value);
+      AddValue(value, BsonType.Binary);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Guid"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Guid"/> value to write.</param>
+    public override void WriteValue(Guid value)
+    {
+      base.WriteValue(value);
+      AddToken(new BsonString(value.ToString(), true));
+    }
+
+    /// <summary>
+    /// Writes a <see cref="TimeSpan"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
+    public override void WriteValue(TimeSpan value)
+    {
+      base.WriteValue(value);
+      AddToken(new BsonString(value.ToString(), true));
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Uri"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Uri"/> value to write.</param>
+    public override void WriteValue(Uri value)
+    {
+      base.WriteValue(value);
+      AddToken(new BsonString(value.ToString(), true));
+    }
+
+    #endregion
+
+    /// <summary>
+    /// Writes a <see cref="T:Byte[]"/> value that represents a BSON object id.
+    /// </summary>
+    /// <param name="value"></param>
+    public void WriteObjectId(byte[] value)
+    {
+      ValidationUtils.ArgumentNotNull(value, "value");
+
+      if (value.Length != 12)
+        throw new Exception("An object id must be 12 bytes");
+
+      // hack to update the writer state
+      AutoComplete(JsonToken.Undefined);
+      AddValue(value, BsonType.Oid);
+    }
+
+    /// <summary>
+    /// Writes a BSON regex.
+    /// </summary>
+    /// <param name="pattern">The regex pattern.</param>
+    /// <param name="options">The regex options.</param>
+    public void WriteRegex(string pattern, string options)
+    {
+      ValidationUtils.ArgumentNotNull(pattern, "pattern");
+
+      // hack to update the writer state
+      AutoComplete(JsonToken.Undefined);
+      AddToken(new BsonRegex(pattern, options));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/ConstructorHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/ConstructorHandling.cs
@@ -1,42 +1,42 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies how constructors are used when initializing objects during deserialization by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public enum ConstructorHandling
-  {
-    /// <summary>
-    /// First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor.
-    /// </summary>
-    Default = 0,
-    /// <summary>
-    /// Json.NET will use a non-public default constructor before falling back to a paramatized constructor.
-    /// </summary>
-    AllowNonPublicDefaultConstructor = 1
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies how constructors are used when initializing objects during deserialization by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public enum ConstructorHandling
+  {
+    /// <summary>
+    /// First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor.
+    /// </summary>
+    Default = 0,
+    /// <summary>
+    /// Json.NET will use a non-public default constructor before falling back to a paramatized constructor.
+    /// </summary>
+    AllowNonPublicDefaultConstructor = 1
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/BinaryConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/BinaryConverter.cs
@@ -1,183 +1,183 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-#if !SILVERLIGHT && !NETFX_CORE
-using System.Data.SqlTypes;
-#endif
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Converters
-{
-#if !SILVERLIGHT && !PocketPC && !NET20
-  internal interface IBinary
-  {
-    byte[] ToArray();
-  }
-#endif
-
-  /// <summary>
-  /// Converts a binary value to and from a base 64 string value.
-  /// </summary>
-  public class BinaryConverter : JsonConverter
-  {
-#if !SILVERLIGHT && !PocketPC && !NET20
-    private const string BinaryTypeName = "System.Data.Linq.Binary";
-#endif
-
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      if (value == null)
-      {
-        writer.WriteNull();
-        return;
-      }
-
-      byte[] data = GetByteArray(value);
-
-      writer.WriteValue(data);
-    }
-
-    private byte[] GetByteArray(object value)
-    {
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-      if (value.GetType().AssignableToTypeName(BinaryTypeName))
-      {
-        IBinary binary = DynamicWrapper.CreateWrapper<IBinary>(value);
-        return binary.ToArray();
-      }
-#endif
-#if !SILVERLIGHT && !NETFX_CORE
-      if (value is SqlBinary)
-        return ((SqlBinary) value).Value;
-#endif
-      throw new Exception("Unexpected value type when writing binary: {0}".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      Type t = (ReflectionUtils.IsNullableType(objectType))
-        ? Nullable.GetUnderlyingType(objectType)
-        : objectType;
-
-      if (reader.TokenType == JsonToken.Null)
-      {
-        if (!ReflectionUtils.IsNullable(objectType))
-          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
-
-        return null;
-      }
-
-      byte[] data;
-
-      if (reader.TokenType == JsonToken.StartArray)
-      {
-        data = ReadByteArray(reader);
-      }
-      else if (reader.TokenType == JsonToken.String)
-      {
-        // current token is already at base64 string
-        // unable to call ReadAsBytes so do it the old fashion way
-        string encodedData = reader.Value.ToString();
-        data = Convert.FromBase64String(encodedData);
-      }
-      else
-      {
-        throw new Exception("Unexpected token parsing binary. Expected String or StartArray, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-      }
-
-      
-#if !SILVERLIGHT && !PocketPC && !NET20
-      if (t.AssignableToTypeName(BinaryTypeName))
-        return Activator.CreateInstance(t, data);
-#endif
-#if !SILVERLIGHT && !NETFX_CORE
-      if (t == typeof(SqlBinary))
-        return new SqlBinary(data);
-#endif
-      throw new Exception("Unexpected object type when writing binary: {0}".FormatWith(CultureInfo.InvariantCulture, objectType));
-    }
-
-    private byte[] ReadByteArray(JsonReader reader)
-    {
-      List<byte> byteList = new List<byte>();
-
-      while (reader.Read())
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.Integer:
-            byteList.Add(Convert.ToByte(reader.Value, CultureInfo.InvariantCulture));
-            break;
-          case JsonToken.EndArray:
-            return byteList.ToArray();
-          case JsonToken.Comment:
-            // skip
-            break;
-          default:
-            throw new Exception("Unexpected token when reading bytes: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-        }
-      }
-
-      throw new Exception("Unexpected end when reading bytes.");
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-#if !SILVERLIGHT && !PocketPC && !NET20
-      if (objectType.AssignableToTypeName(BinaryTypeName))
-        return true;
-#endif
-#if !SILVERLIGHT && !NETFX_CORE
-      if (objectType == typeof(SqlBinary) || objectType == typeof(SqlBinary?))
-        return true;
-#endif
-      return false;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+#if !SILVERLIGHT && !NETFX_CORE
+using System.Data.SqlTypes;
+#endif
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Converters
+{
+#if !SILVERLIGHT && !PocketPC && !NET20
+  internal interface IBinary
+  {
+    byte[] ToArray();
+  }
+#endif
+
+  /// <summary>
+  /// Converts a binary value to and from a base 64 string value.
+  /// </summary>
+  public class BinaryConverter : JsonConverter
+  {
+#if !SILVERLIGHT && !PocketPC && !NET20
+    private const string BinaryTypeName = "System.Data.Linq.Binary";
+#endif
+
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      if (value == null)
+      {
+        writer.WriteNull();
+        return;
+      }
+
+      byte[] data = GetByteArray(value);
+
+      writer.WriteValue(data);
+    }
+
+    private byte[] GetByteArray(object value)
+    {
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+      if (value.GetType().AssignableToTypeName(BinaryTypeName))
+      {
+        IBinary binary = DynamicWrapper.CreateWrapper<IBinary>(value);
+        return binary.ToArray();
+      }
+#endif
+#if !SILVERLIGHT && !NETFX_CORE
+      if (value is SqlBinary)
+        return ((SqlBinary) value).Value;
+#endif
+      throw new Exception("Unexpected value type when writing binary: {0}".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      Type t = (ReflectionUtils.IsNullableType(objectType))
+        ? Nullable.GetUnderlyingType(objectType)
+        : objectType;
+
+      if (reader.TokenType == JsonToken.Null)
+      {
+        if (!ReflectionUtils.IsNullable(objectType))
+          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
+
+        return null;
+      }
+
+      byte[] data;
+
+      if (reader.TokenType == JsonToken.StartArray)
+      {
+        data = ReadByteArray(reader);
+      }
+      else if (reader.TokenType == JsonToken.String)
+      {
+        // current token is already at base64 string
+        // unable to call ReadAsBytes so do it the old fashion way
+        string encodedData = reader.Value.ToString();
+        data = Convert.FromBase64String(encodedData);
+      }
+      else
+      {
+        throw new Exception("Unexpected token parsing binary. Expected String or StartArray, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+      }
+
+      
+#if !SILVERLIGHT && !PocketPC && !NET20
+      if (t.AssignableToTypeName(BinaryTypeName))
+        return Activator.CreateInstance(t, data);
+#endif
+#if !SILVERLIGHT && !NETFX_CORE
+      if (t == typeof(SqlBinary))
+        return new SqlBinary(data);
+#endif
+      throw new Exception("Unexpected object type when writing binary: {0}".FormatWith(CultureInfo.InvariantCulture, objectType));
+    }
+
+    private byte[] ReadByteArray(JsonReader reader)
+    {
+      List<byte> byteList = new List<byte>();
+
+      while (reader.Read())
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.Integer:
+            byteList.Add(Convert.ToByte(reader.Value, CultureInfo.InvariantCulture));
+            break;
+          case JsonToken.EndArray:
+            return byteList.ToArray();
+          case JsonToken.Comment:
+            // skip
+            break;
+          default:
+            throw new Exception("Unexpected token when reading bytes: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+        }
+      }
+
+      throw new Exception("Unexpected end when reading bytes.");
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+#if !SILVERLIGHT && !PocketPC && !NET20
+      if (objectType.AssignableToTypeName(BinaryTypeName))
+        return true;
+#endif
+#if !SILVERLIGHT && !NETFX_CORE
+      if (objectType == typeof(SqlBinary) || objectType == typeof(SqlBinary?))
+        return true;
+#endif
+      return false;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/BsonObjectIdConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/BsonObjectIdConverter.cs
@@ -1,64 +1,64 @@
-﻿using System;
-using Newtonsoft.Json.Bson;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="BsonObjectId"/> to and from JSON and BSON.
-  /// </summary>
-  public class BsonObjectIdConverter : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      BsonObjectId objectId = (BsonObjectId) value;
-
-      BsonWriter bsonWriter = writer as BsonWriter;
-      if (bsonWriter != null)
-      {
-        bsonWriter.WriteObjectId(objectId.Value);
-      }
-      else
-      {
-        writer.WriteValue(objectId.Value);
-      }
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      if (reader.TokenType != JsonToken.Bytes)
-        throw new JsonSerializationException("Expected Bytes but got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-
-      byte[] value = (byte[])reader.Value;
-
-      return new BsonObjectId(value);
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      return (objectType == typeof (BsonObjectId));
-    }
-  }
+﻿using System;
+using Newtonsoft.Json.Bson;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="BsonObjectId"/> to and from JSON and BSON.
+  /// </summary>
+  public class BsonObjectIdConverter : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      BsonObjectId objectId = (BsonObjectId) value;
+
+      BsonWriter bsonWriter = writer as BsonWriter;
+      if (bsonWriter != null)
+      {
+        bsonWriter.WriteObjectId(objectId.Value);
+      }
+      else
+      {
+        writer.WriteValue(objectId.Value);
+      }
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      if (reader.TokenType != JsonToken.Bytes)
+        throw new JsonSerializationException("Expected Bytes but got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+
+      byte[] value = (byte[])reader.Value;
+
+      return new BsonObjectId(value);
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      return (objectType == typeof (BsonObjectId));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/CustomCreationConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/CustomCreationConverter.cs
@@ -1,99 +1,99 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Create a custom object
-  /// </summary>
-  /// <typeparam name="T"></typeparam>
-  public abstract class CustomCreationConverter<T> : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      throw new NotSupportedException("CustomCreationConverter should only be used while deserializing.");
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      if (reader.TokenType == JsonToken.Null)
-        return null;
-
-      T value = Create(objectType);
-      if (value == null)
-        throw new JsonSerializationException("No object created.");
-
-      serializer.Populate(reader, value);
-      return value;
-    }
-
-    /// <summary>
-    /// Creates an object which will then be populated by the serializer.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns></returns>
-    public abstract T Create(Type objectType);
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      return typeof (T).IsAssignableFrom(objectType);
-    }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonConverter"/> can write JSON.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if this <see cref="JsonConverter"/> can write JSON; otherwise, <c>false</c>.
-    /// </value>
-    public override bool CanWrite
-    {
-      get { return false; }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Create a custom object
+  /// </summary>
+  /// <typeparam name="T"></typeparam>
+  public abstract class CustomCreationConverter<T> : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      throw new NotSupportedException("CustomCreationConverter should only be used while deserializing.");
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      if (reader.TokenType == JsonToken.Null)
+        return null;
+
+      T value = Create(objectType);
+      if (value == null)
+        throw new JsonSerializationException("No object created.");
+
+      serializer.Populate(reader, value);
+      return value;
+    }
+
+    /// <summary>
+    /// Creates an object which will then be populated by the serializer.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns></returns>
+    public abstract T Create(Type objectType);
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      return typeof (T).IsAssignableFrom(objectType);
+    }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonConverter"/> can write JSON.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if this <see cref="JsonConverter"/> can write JSON; otherwise, <c>false</c>.
+    /// </value>
+    public override bool CanWrite
+    {
+      get { return false; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DataSetConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DataSetConverter.cs
@@ -1,103 +1,103 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !(SILVERLIGHT || NETFX_CORE)
-using System;
-using System.Data;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="DataSet"/> to and from JSON.
-  /// </summary>
-  public class DataSetConverter : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      DataSet dataSet = (DataSet)value;
-      DefaultContractResolver resolver = serializer.ContractResolver as DefaultContractResolver;
-
-      DataTableConverter converter = new DataTableConverter();
-
-      writer.WriteStartObject();
-
-      foreach (DataTable table in dataSet.Tables)
-      {
-        writer.WritePropertyName((resolver != null) ? resolver.ResolvePropertyName(table.TableName) : table.TableName);
-        
-        converter.WriteJson(writer, table, serializer);
-      }
-
-      writer.WriteEndObject();
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      DataSet ds = new DataSet();
-
-      DataTableConverter converter = new DataTableConverter();
-
-      reader.Read();
-
-      while (reader.TokenType == JsonToken.PropertyName)
-      {
-        DataTable dt = (DataTable)converter.ReadJson(reader, typeof (DataTable), null, serializer);
-        ds.Tables.Add(dt);
-
-        reader.Read();
-      }
-
-      return ds;
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified value type.
-    /// </summary>
-    /// <param name="valueType">Type of the value.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type valueType)
-    {
-      return (valueType == typeof(DataSet));
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !(SILVERLIGHT || NETFX_CORE)
+using System;
+using System.Data;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="DataSet"/> to and from JSON.
+  /// </summary>
+  public class DataSetConverter : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      DataSet dataSet = (DataSet)value;
+      DefaultContractResolver resolver = serializer.ContractResolver as DefaultContractResolver;
+
+      DataTableConverter converter = new DataTableConverter();
+
+      writer.WriteStartObject();
+
+      foreach (DataTable table in dataSet.Tables)
+      {
+        writer.WritePropertyName((resolver != null) ? resolver.ResolvePropertyName(table.TableName) : table.TableName);
+        
+        converter.WriteJson(writer, table, serializer);
+      }
+
+      writer.WriteEndObject();
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      DataSet ds = new DataSet();
+
+      DataTableConverter converter = new DataTableConverter();
+
+      reader.Read();
+
+      while (reader.TokenType == JsonToken.PropertyName)
+      {
+        DataTable dt = (DataTable)converter.ReadJson(reader, typeof (DataTable), null, serializer);
+        ds.Tables.Add(dt);
+
+        reader.Read();
+      }
+
+      return ds;
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified value type.
+    /// </summary>
+    /// <param name="valueType">Type of the value.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type valueType)
+    {
+      return (valueType == typeof(DataSet));
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DataTableConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DataTableConverter.cs
@@ -1,156 +1,156 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !SILVERLIGHT && !NETFX_CORE
-using System;
-using System.Data;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="DataTable"/> to and from JSON.
-  /// </summary>
-  public class DataTableConverter : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      DataTable table = (DataTable)value;
-      DefaultContractResolver resolver = serializer.ContractResolver as DefaultContractResolver;
-
-      writer.WriteStartArray();
-
-      foreach (DataRow row in table.Rows)
-      {
-        writer.WriteStartObject();
-        foreach (DataColumn column in row.Table.Columns)
-        {
-          if (serializer.NullValueHandling == NullValueHandling.Ignore && (row[column] == null || row[column] == DBNull.Value))
-            continue;
-
-          writer.WritePropertyName((resolver != null) ? resolver.ResolvePropertyName(column.ColumnName) : column.ColumnName);
-          serializer.Serialize(writer, row[column]);
-        }
-        writer.WriteEndObject();
-      }
-
-      writer.WriteEndArray();
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      DataTable dt;
-
-      if (reader.TokenType == JsonToken.PropertyName)
-      {
-        dt = new DataTable((string)reader.Value);
-        reader.Read();
-      }
-      else
-      {
-        dt = new DataTable();
-      }
-
-      reader.Read();
-
-      while (reader.TokenType == JsonToken.StartObject)
-      {
-        DataRow dr = dt.NewRow();
-        reader.Read();
-
-        while (reader.TokenType == JsonToken.PropertyName)
-        {
-          string columnName = (string)reader.Value;
-
-          reader.Read();
-
-          if (!dt.Columns.Contains(columnName))
-          {
-            Type columnType = GetColumnDataType(reader.TokenType);
-            dt.Columns.Add(new DataColumn(columnName, columnType));
-          }
-
-          dr[columnName] = reader.Value ?? DBNull.Value;
-          reader.Read();
-        }
-
-        dr.EndEdit();
-        dt.Rows.Add(dr);
-
-        reader.Read();
-      }
-
-      return dt;
-    }
-
-    private static Type GetColumnDataType(JsonToken tokenType)
-    {
-      switch (tokenType)
-      {
-        case JsonToken.Integer:
-          return typeof (long);
-        case JsonToken.Float:
-          return typeof (double);
-        case JsonToken.String:
-        case JsonToken.Null:
-        case JsonToken.Undefined:
-          return typeof (string);
-        case JsonToken.Boolean:
-          return typeof (bool);
-        case JsonToken.Date:
-          return typeof (DateTime);
-        default:
-          throw new ArgumentOutOfRangeException();
-      }
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified value type.
-    /// </summary>
-    /// <param name="valueType">Type of the value.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type valueType)
-    {
-      return (valueType == typeof(DataTable));
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !SILVERLIGHT && !NETFX_CORE
+using System;
+using System.Data;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="DataTable"/> to and from JSON.
+  /// </summary>
+  public class DataTableConverter : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      DataTable table = (DataTable)value;
+      DefaultContractResolver resolver = serializer.ContractResolver as DefaultContractResolver;
+
+      writer.WriteStartArray();
+
+      foreach (DataRow row in table.Rows)
+      {
+        writer.WriteStartObject();
+        foreach (DataColumn column in row.Table.Columns)
+        {
+          if (serializer.NullValueHandling == NullValueHandling.Ignore && (row[column] == null || row[column] == DBNull.Value))
+            continue;
+
+          writer.WritePropertyName((resolver != null) ? resolver.ResolvePropertyName(column.ColumnName) : column.ColumnName);
+          serializer.Serialize(writer, row[column]);
+        }
+        writer.WriteEndObject();
+      }
+
+      writer.WriteEndArray();
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      DataTable dt;
+
+      if (reader.TokenType == JsonToken.PropertyName)
+      {
+        dt = new DataTable((string)reader.Value);
+        reader.Read();
+      }
+      else
+      {
+        dt = new DataTable();
+      }
+
+      reader.Read();
+
+      while (reader.TokenType == JsonToken.StartObject)
+      {
+        DataRow dr = dt.NewRow();
+        reader.Read();
+
+        while (reader.TokenType == JsonToken.PropertyName)
+        {
+          string columnName = (string)reader.Value;
+
+          reader.Read();
+
+          if (!dt.Columns.Contains(columnName))
+          {
+            Type columnType = GetColumnDataType(reader.TokenType);
+            dt.Columns.Add(new DataColumn(columnName, columnType));
+          }
+
+          dr[columnName] = reader.Value ?? DBNull.Value;
+          reader.Read();
+        }
+
+        dr.EndEdit();
+        dt.Rows.Add(dr);
+
+        reader.Read();
+      }
+
+      return dt;
+    }
+
+    private static Type GetColumnDataType(JsonToken tokenType)
+    {
+      switch (tokenType)
+      {
+        case JsonToken.Integer:
+          return typeof (long);
+        case JsonToken.Float:
+          return typeof (double);
+        case JsonToken.String:
+        case JsonToken.Null:
+        case JsonToken.Undefined:
+          return typeof (string);
+        case JsonToken.Boolean:
+          return typeof (bool);
+        case JsonToken.Date:
+          return typeof (DateTime);
+        default:
+          throw new ArgumentOutOfRangeException();
+      }
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified value type.
+    /// </summary>
+    /// <param name="valueType">Type of the value.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type valueType)
+    {
+      return (valueType == typeof(DataTable));
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DateTimeConverterBase.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/DateTimeConverterBase.cs
@@ -1,29 +1,29 @@
-﻿using System;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Provides a base class for converting a <see cref="DateTime"/> to and from JSON.
-  /// </summary>
-  public abstract class DateTimeConverterBase : JsonConverter
-  {
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      if (objectType == typeof(DateTime) || objectType == typeof(DateTime?))
-        return true;
-#if !PocketPC && !NET20
-      if (objectType == typeof(DateTimeOffset) || objectType == typeof(DateTimeOffset?))
-        return true;
-#endif
-
-      return false;
-    }
-  }
+﻿using System;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Provides a base class for converting a <see cref="DateTime"/> to and from JSON.
+  /// </summary>
+  public abstract class DateTimeConverterBase : JsonConverter
+  {
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      if (objectType == typeof(DateTime) || objectType == typeof(DateTime?))
+        return true;
+#if !PocketPC && !NET20
+      if (objectType == typeof(DateTimeOffset) || objectType == typeof(DateTimeOffset?))
+        return true;
+#endif
+
+      return false;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/EntityKeyMemberConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/EntityKeyMemberConverter.cs
@@ -1,140 +1,140 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
-using System;
-using Newtonsoft.Json.Serialization;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Converters
-{
-  internal interface IEntityKeyMember
-  {
-    string Key { get; set; }
-    object Value { get; set; }
-  }
-
-  /// <summary>
-  /// Converts an Entity Framework EntityKey to and from JSON.
-  /// </summary>
-  public class EntityKeyMemberConverter : JsonConverter
-  {
-    private const string EntityKeyMemberFullTypeName = "System.Data.EntityKeyMember";
-
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      IEntityKeyMember entityKeyMember = DynamicWrapper.CreateWrapper<IEntityKeyMember>(value);
-      Type keyType = (entityKeyMember.Value != null) ? entityKeyMember.Value.GetType() : null;
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("Key");
-      writer.WriteValue(entityKeyMember.Key);
-      writer.WritePropertyName("Type");
-      writer.WriteValue((keyType != null) ? keyType.FullName : null);
-
-      writer.WritePropertyName("Value");
-
-      if (keyType != null)
-      {
-        string valueJson;
-        if (JsonSerializerInternalWriter.TryConvertToString(entityKeyMember.Value, keyType, out valueJson))
-          writer.WriteValue(valueJson);
-        else
-          writer.WriteValue(entityKeyMember.Value);
-      }
-      else
-      {
-        writer.WriteNull();
-      }
-
-      writer.WriteEndObject();
-    }
-
-    private static void ReadAndAssertProperty(JsonReader reader, string propertyName)
-    {
-      ReadAndAssert(reader);
-
-      if (reader.TokenType != JsonToken.PropertyName || reader.Value.ToString() != propertyName)
-        throw new JsonSerializationException("Expected JSON property '{0}'.".FormatWith(CultureInfo.InvariantCulture, propertyName));
-    }
-
-    private static void ReadAndAssert(JsonReader reader)
-    {
-      if (!reader.Read())
-        throw new JsonSerializationException("Unexpected end.");
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      IEntityKeyMember entityKeyMember = DynamicWrapper.CreateWrapper<IEntityKeyMember>(Activator.CreateInstance(objectType));
-
-      ReadAndAssertProperty(reader, "Key");
-      ReadAndAssert(reader);
-      entityKeyMember.Key = reader.Value.ToString();
-
-      ReadAndAssertProperty(reader, "Type");
-      ReadAndAssert(reader);
-      string type = reader.Value.ToString();
-
-      Type t = Type.GetType(type);
-
-      ReadAndAssertProperty(reader, "Value");
-      ReadAndAssert(reader);
-      entityKeyMember.Value = serializer.Deserialize(reader, t);
-
-      ReadAndAssert(reader);
-
-      return DynamicWrapper.GetUnderlyingObject(entityKeyMember);
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      return (objectType.AssignableToTypeName(EntityKeyMemberFullTypeName));
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
+using System;
+using Newtonsoft.Json.Serialization;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Converters
+{
+  internal interface IEntityKeyMember
+  {
+    string Key { get; set; }
+    object Value { get; set; }
+  }
+
+  /// <summary>
+  /// Converts an Entity Framework EntityKey to and from JSON.
+  /// </summary>
+  public class EntityKeyMemberConverter : JsonConverter
+  {
+    private const string EntityKeyMemberFullTypeName = "System.Data.EntityKeyMember";
+
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      IEntityKeyMember entityKeyMember = DynamicWrapper.CreateWrapper<IEntityKeyMember>(value);
+      Type keyType = (entityKeyMember.Value != null) ? entityKeyMember.Value.GetType() : null;
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("Key");
+      writer.WriteValue(entityKeyMember.Key);
+      writer.WritePropertyName("Type");
+      writer.WriteValue((keyType != null) ? keyType.FullName : null);
+
+      writer.WritePropertyName("Value");
+
+      if (keyType != null)
+      {
+        string valueJson;
+        if (JsonSerializerInternalWriter.TryConvertToString(entityKeyMember.Value, keyType, out valueJson))
+          writer.WriteValue(valueJson);
+        else
+          writer.WriteValue(entityKeyMember.Value);
+      }
+      else
+      {
+        writer.WriteNull();
+      }
+
+      writer.WriteEndObject();
+    }
+
+    private static void ReadAndAssertProperty(JsonReader reader, string propertyName)
+    {
+      ReadAndAssert(reader);
+
+      if (reader.TokenType != JsonToken.PropertyName || reader.Value.ToString() != propertyName)
+        throw new JsonSerializationException("Expected JSON property '{0}'.".FormatWith(CultureInfo.InvariantCulture, propertyName));
+    }
+
+    private static void ReadAndAssert(JsonReader reader)
+    {
+      if (!reader.Read())
+        throw new JsonSerializationException("Unexpected end.");
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      IEntityKeyMember entityKeyMember = DynamicWrapper.CreateWrapper<IEntityKeyMember>(Activator.CreateInstance(objectType));
+
+      ReadAndAssertProperty(reader, "Key");
+      ReadAndAssert(reader);
+      entityKeyMember.Key = reader.Value.ToString();
+
+      ReadAndAssertProperty(reader, "Type");
+      ReadAndAssert(reader);
+      string type = reader.Value.ToString();
+
+      Type t = Type.GetType(type);
+
+      ReadAndAssertProperty(reader, "Value");
+      ReadAndAssert(reader);
+      entityKeyMember.Value = serializer.Deserialize(reader, t);
+
+      ReadAndAssert(reader);
+
+      return DynamicWrapper.GetUnderlyingObject(entityKeyMember);
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      return (objectType.AssignableToTypeName(EntityKeyMemberFullTypeName));
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/ExpandoObjectConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/ExpandoObjectConverter.cs
@@ -1,140 +1,140 @@
-﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
-
-using System;
-using System.Collections.Generic;
-using System.Dynamic;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts an ExpandoObject to and from JSON.
-  /// </summary>
-  public class ExpandoObjectConverter : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      // can write is set to false
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      return ReadValue(reader);
-    }
-
-    private object ReadValue(JsonReader reader)
-    {
-      while (reader.TokenType == JsonToken.Comment)
-      {
-        if (!reader.Read())
-          throw new Exception("Unexpected end.");
-      }
-
-      switch (reader.TokenType)
-      {
-        case JsonToken.StartObject:
-          return ReadObject(reader);
-        case JsonToken.StartArray:
-          return ReadList(reader);
-        default:
-          if (JsonReader.IsPrimitiveToken(reader.TokenType))
-            return reader.Value;
-
-          throw new Exception("Unexpected token when converting ExpandoObject: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-      }
-    }
-
-    private object ReadList(JsonReader reader)
-    {
-      IList<object> list = new List<object>();
-
-      while (reader.Read())
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.Comment:
-            break;
-          default:
-            object v = ReadValue(reader);
-
-            list.Add(v);
-            break;
-          case JsonToken.EndArray:
-            return list;
-        }
-      }
-
-      throw new Exception("Unexpected end.");
-    }
-
-    private object ReadObject(JsonReader reader)
-    {
-      IDictionary<string, object> expandoObject = new ExpandoObject();
-
-      while (reader.Read())
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.PropertyName:
-            string propertyName = reader.Value.ToString();
-
-            if (!reader.Read())
-              throw new Exception("Unexpected end.");
-
-            object v = ReadValue(reader);
-
-            expandoObject[propertyName] = v;
-            break;
-          case JsonToken.Comment:
-            break;
-          case JsonToken.EndObject:
-            return expandoObject;
-        }
-      }
-
-      throw new Exception("Unexpected end.");
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      return (objectType == typeof (ExpandoObject));
-    }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonConverter"/> can write JSON.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if this <see cref="JsonConverter"/> can write JSON; otherwise, <c>false</c>.
-    /// </value>
-    public override bool CanWrite
-    {
-      get { return false; }
-    }
-  }
-}
-
+﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
+
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts an ExpandoObject to and from JSON.
+  /// </summary>
+  public class ExpandoObjectConverter : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      // can write is set to false
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      return ReadValue(reader);
+    }
+
+    private object ReadValue(JsonReader reader)
+    {
+      while (reader.TokenType == JsonToken.Comment)
+      {
+        if (!reader.Read())
+          throw new Exception("Unexpected end.");
+      }
+
+      switch (reader.TokenType)
+      {
+        case JsonToken.StartObject:
+          return ReadObject(reader);
+        case JsonToken.StartArray:
+          return ReadList(reader);
+        default:
+          if (JsonReader.IsPrimitiveToken(reader.TokenType))
+            return reader.Value;
+
+          throw new Exception("Unexpected token when converting ExpandoObject: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+      }
+    }
+
+    private object ReadList(JsonReader reader)
+    {
+      IList<object> list = new List<object>();
+
+      while (reader.Read())
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.Comment:
+            break;
+          default:
+            object v = ReadValue(reader);
+
+            list.Add(v);
+            break;
+          case JsonToken.EndArray:
+            return list;
+        }
+      }
+
+      throw new Exception("Unexpected end.");
+    }
+
+    private object ReadObject(JsonReader reader)
+    {
+      IDictionary<string, object> expandoObject = new ExpandoObject();
+
+      while (reader.Read())
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.PropertyName:
+            string propertyName = reader.Value.ToString();
+
+            if (!reader.Read())
+              throw new Exception("Unexpected end.");
+
+            object v = ReadValue(reader);
+
+            expandoObject[propertyName] = v;
+            break;
+          case JsonToken.Comment:
+            break;
+          case JsonToken.EndObject:
+            return expandoObject;
+        }
+      }
+
+      throw new Exception("Unexpected end.");
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      return (objectType == typeof (ExpandoObject));
+    }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonConverter"/> can write JSON.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if this <see cref="JsonConverter"/> can write JSON; otherwise, <c>false</c>.
+    /// </value>
+    public override bool CanWrite
+    {
+      get { return false; }
+    }
+  }
+}
+
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/IsoDateTimeConverter.cs
@@ -1,144 +1,144 @@
-﻿using System;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="DateTime"/> to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z).
-  /// </summary>
-  public class IsoDateTimeConverter : DateTimeConverterBase
-  {
-    private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";
-
-    private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
-    private string _dateTimeFormat;
-    private CultureInfo _culture;
-
-    /// <summary>
-    /// Gets or sets the date time styles used when converting a date to and from JSON.
-    /// </summary>
-    /// <value>The date time styles used when converting a date to and from JSON.</value>
-    public DateTimeStyles DateTimeStyles
-    {
-      get { return _dateTimeStyles; }
-      set { _dateTimeStyles = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the date time format used when converting a date to and from JSON.
-    /// </summary>
-    /// <value>The date time format used when converting a date to and from JSON.</value>
-    public string DateTimeFormat
-    {
-      get { return _dateTimeFormat ?? string.Empty; }
-      set { _dateTimeFormat = StringUtils.NullEmptyString(value); }
-    }
-
-    /// <summary>
-    /// Gets or sets the culture used when converting a date to and from JSON.
-    /// </summary>
-    /// <value>The culture used when converting a date to and from JSON.</value>
-    public CultureInfo Culture
-    {
-      get { return _culture ?? CultureInfo.CurrentCulture; }
-      set { _culture = value; }
-    }
-
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      string text;
-
-      if (value is DateTime)
-      {
-        DateTime dateTime = (DateTime)value;
-
-        if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
-          || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
-          dateTime = dateTime.ToUniversalTime();
-
-        text = dateTime.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
-      }
-#if !PocketPC && !NET20
-      else if (value is DateTimeOffset)
-      {
-        DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
-        if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
-          || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
-          dateTimeOffset = dateTimeOffset.ToUniversalTime();
-
-        text = dateTimeOffset.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
-      }
-#endif
-      else
-      {
-        throw new Exception("Unexpected value when converting date. Expected DateTime or DateTimeOffset, got {0}.".FormatWith(CultureInfo.InvariantCulture, ReflectionUtils.GetObjectType(value)));
-      }
-
-      writer.WriteValue(text);
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      bool nullable = ReflectionUtils.IsNullableType(objectType);
-      Type t = (nullable)
-        ? Nullable.GetUnderlyingType(objectType)
-        : objectType;
-
-      if (reader.TokenType == JsonToken.Null)
-      {
-        if (!ReflectionUtils.IsNullableType(objectType))
-          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
- 
-        return null;
-      }
-
-      if (reader.TokenType == JsonToken.Date)
-      {
-#if !PocketPC && !NET20
-        if (t == typeof(DateTimeOffset))
-          return new DateTimeOffset((DateTime)reader.Value);
-#endif
-
-        return reader.Value;
-      }
-
-      if (reader.TokenType != JsonToken.String)
-        throw new Exception("Unexpected token parsing date. Expected String, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-
-      string dateText = reader.Value.ToString();
-
-      if (string.IsNullOrEmpty(dateText) && nullable)
-        return null;
-
-#if !PocketPC && !NET20
-      if (t == typeof(DateTimeOffset))
-      {
-        if (!string.IsNullOrEmpty(_dateTimeFormat))
-          return DateTimeOffset.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
-        else
-          return DateTimeOffset.Parse(dateText, Culture, _dateTimeStyles);
-      }
-#endif
-
-      if (!string.IsNullOrEmpty(_dateTimeFormat))
-        return DateTime.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
-      else
-        return DateTime.Parse(dateText, Culture, _dateTimeStyles);
-    }
-  }
+﻿using System;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="DateTime"/> to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z).
+  /// </summary>
+  public class IsoDateTimeConverter : DateTimeConverterBase
+  {
+    private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";
+
+    private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
+    private string _dateTimeFormat;
+    private CultureInfo _culture;
+
+    /// <summary>
+    /// Gets or sets the date time styles used when converting a date to and from JSON.
+    /// </summary>
+    /// <value>The date time styles used when converting a date to and from JSON.</value>
+    public DateTimeStyles DateTimeStyles
+    {
+      get { return _dateTimeStyles; }
+      set { _dateTimeStyles = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the date time format used when converting a date to and from JSON.
+    /// </summary>
+    /// <value>The date time format used when converting a date to and from JSON.</value>
+    public string DateTimeFormat
+    {
+      get { return _dateTimeFormat ?? string.Empty; }
+      set { _dateTimeFormat = StringUtils.NullEmptyString(value); }
+    }
+
+    /// <summary>
+    /// Gets or sets the culture used when converting a date to and from JSON.
+    /// </summary>
+    /// <value>The culture used when converting a date to and from JSON.</value>
+    public CultureInfo Culture
+    {
+      get { return _culture ?? CultureInfo.CurrentCulture; }
+      set { _culture = value; }
+    }
+
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      string text;
+
+      if (value is DateTime)
+      {
+        DateTime dateTime = (DateTime)value;
+
+        if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
+          || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
+          dateTime = dateTime.ToUniversalTime();
+
+        text = dateTime.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
+      }
+#if !PocketPC && !NET20
+      else if (value is DateTimeOffset)
+      {
+        DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
+        if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
+          || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
+          dateTimeOffset = dateTimeOffset.ToUniversalTime();
+
+        text = dateTimeOffset.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
+      }
+#endif
+      else
+      {
+        throw new Exception("Unexpected value when converting date. Expected DateTime or DateTimeOffset, got {0}.".FormatWith(CultureInfo.InvariantCulture, ReflectionUtils.GetObjectType(value)));
+      }
+
+      writer.WriteValue(text);
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      bool nullable = ReflectionUtils.IsNullableType(objectType);
+      Type t = (nullable)
+        ? Nullable.GetUnderlyingType(objectType)
+        : objectType;
+
+      if (reader.TokenType == JsonToken.Null)
+      {
+        if (!ReflectionUtils.IsNullableType(objectType))
+          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
+ 
+        return null;
+      }
+
+      if (reader.TokenType == JsonToken.Date)
+      {
+#if !PocketPC && !NET20
+        if (t == typeof(DateTimeOffset))
+          return new DateTimeOffset((DateTime)reader.Value);
+#endif
+
+        return reader.Value;
+      }
+
+      if (reader.TokenType != JsonToken.String)
+        throw new Exception("Unexpected token parsing date. Expected String, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+
+      string dateText = reader.Value.ToString();
+
+      if (string.IsNullOrEmpty(dateText) && nullable)
+        return null;
+
+#if !PocketPC && !NET20
+      if (t == typeof(DateTimeOffset))
+      {
+        if (!string.IsNullOrEmpty(_dateTimeFormat))
+          return DateTimeOffset.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
+        else
+          return DateTimeOffset.Parse(dateText, Culture, _dateTimeStyles);
+      }
+#endif
+
+      if (!string.IsNullOrEmpty(_dateTimeFormat))
+        return DateTime.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
+      else
+        return DateTime.Parse(dateText, Culture, _dateTimeStyles);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/JavaScriptDateTimeConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/JavaScriptDateTimeConverter.cs
@@ -1,93 +1,93 @@
-﻿using System;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="DateTime"/> to and from a JavaScript date constructor (e.g. new Date(52231943)).
-  /// </summary>
-  public class JavaScriptDateTimeConverter : DateTimeConverterBase
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      long ticks;
-
-      if (value is DateTime)
-      {
-        DateTime dateTime = (DateTime)value;
-        DateTime utcDateTime = dateTime.ToUniversalTime();
-        ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(utcDateTime);
-      }
-#if !PocketPC && !NET20
-      else if (value is DateTimeOffset)
-      {
-        DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
-        DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime();
-        ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(utcDateTimeOffset.UtcDateTime);
-      }
-#endif
-      else
-      {
-        throw new Exception("Expected date object value.");
-      }
-
-      writer.WriteStartConstructor("Date");
-      writer.WriteValue(ticks);
-      writer.WriteEndConstructor();
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing property value of the JSON that is being converted.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      Type t = (ReflectionUtils.IsNullableType(objectType))
-        ? Nullable.GetUnderlyingType(objectType)
-        : objectType;
-
-      if (reader.TokenType == JsonToken.Null)
-      {
-        if (!ReflectionUtils.IsNullableType(objectType))
-          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
-
-        return null;
-      }
-
-      if (reader.TokenType != JsonToken.StartConstructor || !string.Equals(reader.Value.ToString(), "Date", StringComparison.Ordinal))
-        throw new Exception("Unexpected token or value when parsing date. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType, reader.Value));
-
-      reader.Read();
-
-      if (reader.TokenType != JsonToken.Integer)
-        throw new Exception("Unexpected token parsing date. Expected Integer, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-
-      long ticks = (long)reader.Value;
-
-      DateTime d = JsonConvert.ConvertJavaScriptTicksToDateTime(ticks);
-
-      reader.Read();
-
-      if (reader.TokenType != JsonToken.EndConstructor)
-        throw new Exception("Unexpected token parsing date. Expected EndConstructor, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-
-#if !PocketPC && !NET20
-      if (t == typeof(DateTimeOffset))
-        return new DateTimeOffset(d);
-#endif
-
-      return d;
-    }
-  }
+﻿using System;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="DateTime"/> to and from a JavaScript date constructor (e.g. new Date(52231943)).
+  /// </summary>
+  public class JavaScriptDateTimeConverter : DateTimeConverterBase
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      long ticks;
+
+      if (value is DateTime)
+      {
+        DateTime dateTime = (DateTime)value;
+        DateTime utcDateTime = dateTime.ToUniversalTime();
+        ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(utcDateTime);
+      }
+#if !PocketPC && !NET20
+      else if (value is DateTimeOffset)
+      {
+        DateTimeOffset dateTimeOffset = (DateTimeOffset)value;
+        DateTimeOffset utcDateTimeOffset = dateTimeOffset.ToUniversalTime();
+        ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(utcDateTimeOffset.UtcDateTime);
+      }
+#endif
+      else
+      {
+        throw new Exception("Expected date object value.");
+      }
+
+      writer.WriteStartConstructor("Date");
+      writer.WriteValue(ticks);
+      writer.WriteEndConstructor();
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing property value of the JSON that is being converted.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      Type t = (ReflectionUtils.IsNullableType(objectType))
+        ? Nullable.GetUnderlyingType(objectType)
+        : objectType;
+
+      if (reader.TokenType == JsonToken.Null)
+      {
+        if (!ReflectionUtils.IsNullableType(objectType))
+          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
+
+        return null;
+      }
+
+      if (reader.TokenType != JsonToken.StartConstructor || !string.Equals(reader.Value.ToString(), "Date", StringComparison.Ordinal))
+        throw new Exception("Unexpected token or value when parsing date. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType, reader.Value));
+
+      reader.Read();
+
+      if (reader.TokenType != JsonToken.Integer)
+        throw new Exception("Unexpected token parsing date. Expected Integer, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+
+      long ticks = (long)reader.Value;
+
+      DateTime d = JsonConvert.ConvertJavaScriptTicksToDateTime(ticks);
+
+      reader.Read();
+
+      if (reader.TokenType != JsonToken.EndConstructor)
+        throw new Exception("Unexpected token parsing date. Expected EndConstructor, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+
+#if !PocketPC && !NET20
+      if (t == typeof(DateTimeOffset))
+        return new DateTimeOffset(d);
+#endif
+
+      return d;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/KeyValuePairConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/KeyValuePairConverter.cs
@@ -1,108 +1,108 @@
-﻿using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Utilities;
-using System.Reflection;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="KeyValuePair{TKey,TValue}"/> to and from JSON.
-  /// </summary>
-  public class KeyValuePairConverter : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      Type t = value.GetType();
-      PropertyInfo keyProperty = t.GetProperty("Key");
-      PropertyInfo valueProperty = t.GetProperty("Value");
-
-      writer.WriteStartObject();
-      writer.WritePropertyName("Key");
-      serializer.Serialize(writer, ReflectionUtils.GetMemberValue(keyProperty, value));
-      writer.WritePropertyName("Value");
-      serializer.Serialize(writer, ReflectionUtils.GetMemberValue(valueProperty, value));
-      writer.WriteEndObject();
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      bool isNullable = ReflectionUtils.IsNullableType(objectType);
-
-      if (reader.TokenType == JsonToken.Null)
-      {
-        if (!isNullable)
-          throw new Exception("Could not deserialize Null to KeyValuePair.");
-
-        return null;
-      }
-
-      Type t = (isNullable)
-       ? Nullable.GetUnderlyingType(objectType)
-       : objectType;
-
-      IList<Type> genericArguments = t.GetGenericArguments();
-      Type keyType = genericArguments[0];
-      Type valueType = genericArguments[1];
-
-      object key = null;
-      object value = null;
-
-      reader.Read();
-
-      while (reader.TokenType == JsonToken.PropertyName)
-      {
-        switch (reader.Value.ToString())
-        {
-          case "Key":
-            reader.Read();
-            key = serializer.Deserialize(reader, keyType);
-            break;
-          case "Value":
-            reader.Read();
-            value = serializer.Deserialize(reader, valueType);
-            break;
-          default:
-            reader.Skip();
-            break;
-        }
-
-        reader.Read();
-      }
-
-      return ReflectionUtils.CreateInstance(t, key, value);
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      Type t = (ReflectionUtils.IsNullableType(objectType))
-        ? Nullable.GetUnderlyingType(objectType)
-        : objectType;
-
-      if (t.IsValueType() && t.IsGenericType())
-        return (t.GetGenericTypeDefinition() == typeof(KeyValuePair<,>));
-
-      return false;
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Utilities;
+using System.Reflection;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="KeyValuePair{TKey,TValue}"/> to and from JSON.
+  /// </summary>
+  public class KeyValuePairConverter : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      Type t = value.GetType();
+      PropertyInfo keyProperty = t.GetProperty("Key");
+      PropertyInfo valueProperty = t.GetProperty("Value");
+
+      writer.WriteStartObject();
+      writer.WritePropertyName("Key");
+      serializer.Serialize(writer, ReflectionUtils.GetMemberValue(keyProperty, value));
+      writer.WritePropertyName("Value");
+      serializer.Serialize(writer, ReflectionUtils.GetMemberValue(valueProperty, value));
+      writer.WriteEndObject();
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      bool isNullable = ReflectionUtils.IsNullableType(objectType);
+
+      if (reader.TokenType == JsonToken.Null)
+      {
+        if (!isNullable)
+          throw new Exception("Could not deserialize Null to KeyValuePair.");
+
+        return null;
+      }
+
+      Type t = (isNullable)
+       ? Nullable.GetUnderlyingType(objectType)
+       : objectType;
+
+      IList<Type> genericArguments = t.GetGenericArguments();
+      Type keyType = genericArguments[0];
+      Type valueType = genericArguments[1];
+
+      object key = null;
+      object value = null;
+
+      reader.Read();
+
+      while (reader.TokenType == JsonToken.PropertyName)
+      {
+        switch (reader.Value.ToString())
+        {
+          case "Key":
+            reader.Read();
+            key = serializer.Deserialize(reader, keyType);
+            break;
+          case "Value":
+            reader.Read();
+            value = serializer.Deserialize(reader, valueType);
+            break;
+          default:
+            reader.Skip();
+            break;
+        }
+
+        reader.Read();
+      }
+
+      return ReflectionUtils.CreateInstance(t, key, value);
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      Type t = (ReflectionUtils.IsNullableType(objectType))
+        ? Nullable.GetUnderlyingType(objectType)
+        : objectType;
+
+      if (t.IsValueType() && t.IsGenericType())
+        return (t.GetGenericTypeDefinition() == typeof(KeyValuePair<,>));
+
+      return false;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/RegexConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/RegexConverter.cs
@@ -1,149 +1,149 @@
-﻿using System;
-using System.Text.RegularExpressions;
-using Newtonsoft.Json.Bson;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="Regex"/> to and from JSON and BSON.
-  /// </summary>
-  public class RegexConverter : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      Regex regex = (Regex) value;
-
-      BsonWriter bsonWriter = writer as BsonWriter;
-      if (bsonWriter != null)
-        WriteBson(bsonWriter, regex);
-      else
-        WriteJson(writer, regex);
-    }
-
-    private bool HasFlag(RegexOptions options, RegexOptions flag)
-    {
-      return ((options & flag) == flag);
-    }
-
-    private void WriteBson(BsonWriter writer, Regex regex)
-    {
-      // Regular expression - The first cstring is the regex pattern, the second
-      // is the regex options string. Options are identified by characters, which 
-      // must be stored in alphabetical order. Valid options are 'i' for case 
-      // insensitive matching, 'm' for multiline matching, 'x' for verbose mode, 
-      // 'l' to make \w, \W, etc. locale dependent, 's' for dotall mode 
-      // ('.' matches everything), and 'u' to make \w, \W, etc. match unicode.
-
-      string options = null;
-
-      if (HasFlag(regex.Options, RegexOptions.IgnoreCase))
-        options += "i";
-
-      if (HasFlag(regex.Options, RegexOptions.Multiline))
-        options += "m";
-
-      if (HasFlag(regex.Options, RegexOptions.Singleline))
-        options += "s";
-
-      options += "u";
-
-      if (HasFlag(regex.Options, RegexOptions.ExplicitCapture))
-        options += "x";
-
-      writer.WriteRegex(regex.ToString(), options);
-    }
-
-    private void WriteJson(JsonWriter writer, Regex regex)
-    {
-      writer.WriteStartObject();
-      writer.WritePropertyName("Pattern");
-      writer.WriteValue(regex.ToString());
-      writer.WritePropertyName("Options");
-      writer.WriteValue(regex.Options);
-      writer.WriteEndObject();
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      BsonReader bsonReader = reader as BsonReader;
-
-      if (bsonReader != null)
-        return ReadBson(bsonReader);
-      else
-        return ReadJson(reader);
-    }
-
-    private object ReadBson(BsonReader reader)
-    {
-      string regexText = (string)reader.Value;
-      int patternOptionDelimiterIndex = regexText.LastIndexOf('/');
-
-      string patternText = regexText.Substring(1, patternOptionDelimiterIndex - 1);
-      string optionsText = regexText.Substring(patternOptionDelimiterIndex + 1);
-
-      RegexOptions options = RegexOptions.None;
-      foreach (char c in optionsText)
-      {
-        switch (c)
-        {
-          case 'i':
-            options |= RegexOptions.IgnoreCase;
-            break;
-          case 'm':
-            options |= RegexOptions.Multiline;
-            break;
-          case 's':
-            options |= RegexOptions.Singleline;
-            break;
-          case 'x':
-            options |= RegexOptions.ExplicitCapture;
-            break;
-        }
-      }
-
-      return new Regex(patternText, options);
-    }
-
-    private Regex ReadJson(JsonReader reader)
-    {
-      reader.Read();
-      reader.Read();
-      string pattern = (string)reader.Value;
-
-      reader.Read();
-      reader.Read();
-      int options = Convert.ToInt32(reader.Value, CultureInfo.InvariantCulture);
-
-      reader.Read();
-
-      return new Regex(pattern, (RegexOptions) options);
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      return (objectType == typeof (Regex));
-    }
-  }
+﻿using System;
+using System.Text.RegularExpressions;
+using Newtonsoft.Json.Bson;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="Regex"/> to and from JSON and BSON.
+  /// </summary>
+  public class RegexConverter : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      Regex regex = (Regex) value;
+
+      BsonWriter bsonWriter = writer as BsonWriter;
+      if (bsonWriter != null)
+        WriteBson(bsonWriter, regex);
+      else
+        WriteJson(writer, regex);
+    }
+
+    private bool HasFlag(RegexOptions options, RegexOptions flag)
+    {
+      return ((options & flag) == flag);
+    }
+
+    private void WriteBson(BsonWriter writer, Regex regex)
+    {
+      // Regular expression - The first cstring is the regex pattern, the second
+      // is the regex options string. Options are identified by characters, which 
+      // must be stored in alphabetical order. Valid options are 'i' for case 
+      // insensitive matching, 'm' for multiline matching, 'x' for verbose mode, 
+      // 'l' to make \w, \W, etc. locale dependent, 's' for dotall mode 
+      // ('.' matches everything), and 'u' to make \w, \W, etc. match unicode.
+
+      string options = null;
+
+      if (HasFlag(regex.Options, RegexOptions.IgnoreCase))
+        options += "i";
+
+      if (HasFlag(regex.Options, RegexOptions.Multiline))
+        options += "m";
+
+      if (HasFlag(regex.Options, RegexOptions.Singleline))
+        options += "s";
+
+      options += "u";
+
+      if (HasFlag(regex.Options, RegexOptions.ExplicitCapture))
+        options += "x";
+
+      writer.WriteRegex(regex.ToString(), options);
+    }
+
+    private void WriteJson(JsonWriter writer, Regex regex)
+    {
+      writer.WriteStartObject();
+      writer.WritePropertyName("Pattern");
+      writer.WriteValue(regex.ToString());
+      writer.WritePropertyName("Options");
+      writer.WriteValue(regex.Options);
+      writer.WriteEndObject();
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      BsonReader bsonReader = reader as BsonReader;
+
+      if (bsonReader != null)
+        return ReadBson(bsonReader);
+      else
+        return ReadJson(reader);
+    }
+
+    private object ReadBson(BsonReader reader)
+    {
+      string regexText = (string)reader.Value;
+      int patternOptionDelimiterIndex = regexText.LastIndexOf('/');
+
+      string patternText = regexText.Substring(1, patternOptionDelimiterIndex - 1);
+      string optionsText = regexText.Substring(patternOptionDelimiterIndex + 1);
+
+      RegexOptions options = RegexOptions.None;
+      foreach (char c in optionsText)
+      {
+        switch (c)
+        {
+          case 'i':
+            options |= RegexOptions.IgnoreCase;
+            break;
+          case 'm':
+            options |= RegexOptions.Multiline;
+            break;
+          case 's':
+            options |= RegexOptions.Singleline;
+            break;
+          case 'x':
+            options |= RegexOptions.ExplicitCapture;
+            break;
+        }
+      }
+
+      return new Regex(patternText, options);
+    }
+
+    private Regex ReadJson(JsonReader reader)
+    {
+      reader.Read();
+      reader.Read();
+      string pattern = (string)reader.Value;
+
+      reader.Read();
+      reader.Read();
+      int options = Convert.ToInt32(reader.Value, CultureInfo.InvariantCulture);
+
+      reader.Read();
+
+      return new Regex(pattern, (RegexOptions) options);
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      return (objectType == typeof (Regex));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs
@@ -1,201 +1,201 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Utilities;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts an <see cref="Enum"/> to and from its name string value.
-  /// </summary>
-  /// <summary>
-  /// Converts an <see cref="Enum"/> to and from its name string value.
-  /// </summary>
-  public class StringEnumConverter : JsonConverter
-  {
-    private readonly Dictionary<Type, BidirectionalDictionary<string, string>> _enumMemberNamesPerType = new Dictionary<Type, BidirectionalDictionary<string, string>>();
-
-    /// <summary>
-    /// Gets or sets a value indicating whether the written enum text should be camel case.
-    /// </summary>
-    /// <value><c>true</c> if the written enum text will be camel case; otherwise, <c>false</c>.</value>
-    public bool CamelCaseText { get; set; }
-    
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      if (value == null)
-      {
-        writer.WriteNull();
-        return;
-      }
-
-      Enum e = (Enum)value;
-
-      string enumName = e.ToString("G");
-
-      if (char.IsNumber(enumName[0]) || enumName[0] == '-')
-      {
-        writer.WriteValue(value);
-      }
-      else
-      {
-        BidirectionalDictionary<string, string> map = GetEnumNameMap(e.GetType());
-
-        string resolvedEnumName;
-        map.TryGetByFirst(enumName, out resolvedEnumName);
-        resolvedEnumName = resolvedEnumName ?? enumName;
-
-        if (CamelCaseText)
-        {
-          string[] names = resolvedEnumName.Split(',').Select(item => StringUtils.ToCamelCase(item.Trim())).ToArray();
-          resolvedEnumName = string.Join(", ", names);
-        }
-
-        writer.WriteValue(resolvedEnumName);
-      }
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      Type t = (ReflectionUtils.IsNullableType(objectType))
-      ? Nullable.GetUnderlyingType(objectType)
-      : objectType;
-
-      if (reader.TokenType == JsonToken.Null)
-      {
-        if (!ReflectionUtils.IsNullableType(objectType))
-          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
-
-        return null;
-      }
-
-      if (reader.TokenType == JsonToken.String)
-      {
-        var map = GetEnumNameMap(t);
-        string resolvedEnumName;
-        map.TryGetBySecond(reader.Value.ToString(), out resolvedEnumName);
-        resolvedEnumName = resolvedEnumName ?? reader.Value.ToString();
-
-        return Enum.Parse(t, resolvedEnumName, true);
-      }
-
-      if (reader.TokenType == JsonToken.Integer)
-        return ConvertUtils.ConvertOrCast(reader.Value, CultureInfo.InvariantCulture, t);
-
-      throw new Exception("Unexpected token when parsing enum. Expected String or Integer, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-    }
-
-    /// <summary>
-    /// A cached representation of the Enum string representation to respect per Enum field name.
-    /// </summary>
-    /// <param name="t">The type of the Enum.</param>
-    /// <returns>A map of enum field name to either the field name, or the configured enum member name (<see cref="EnumMemberAttribute"/>).</returns>
-    private BidirectionalDictionary<string, string> GetEnumNameMap(Type t)
-    {
-      BidirectionalDictionary<string, string> map;
-
-      if (!_enumMemberNamesPerType.TryGetValue(t, out map))
-      {
-        lock (_enumMemberNamesPerType)
-        {
-          if (_enumMemberNamesPerType.TryGetValue(t, out map))
-            return map;
-
-          map = new BidirectionalDictionary<string, string>(
-            StringComparer.OrdinalIgnoreCase,
-            StringComparer.OrdinalIgnoreCase);
-
-          foreach (FieldInfo f in t.GetFields())
-          {
-            string n1 = f.Name;
-            string n2;
-            
-#if !NET20
-            n2 = f.GetCustomAttributes(typeof (EnumMemberAttribute), true)
-                          .Cast<EnumMemberAttribute>()
-                          .Select(a => a.Value)
-                          .SingleOrDefault() ?? f.Name;
-#else
-            n2 = f.Name;
-#endif
-
-            string s;
-            if (map.TryGetBySecond(n2, out s))
-            {
-              throw new Exception("Enum name '{0}' already exists on enum '{1}'."
-                .FormatWith(CultureInfo.InvariantCulture, n2, t.Name));
-            }
-
-            map.Add(n1, n2);
-          }
-
-          _enumMemberNamesPerType[t] = map;
-        }
-      }
-
-      return map;
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      Type t = (ReflectionUtils.IsNullableType(objectType))
-      ? Nullable.GetUnderlyingType(objectType)
-      : objectType;
-
-      return t.IsEnum();
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Reflection;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Utilities;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts an <see cref="Enum"/> to and from its name string value.
+  /// </summary>
+  /// <summary>
+  /// Converts an <see cref="Enum"/> to and from its name string value.
+  /// </summary>
+  public class StringEnumConverter : JsonConverter
+  {
+    private readonly Dictionary<Type, BidirectionalDictionary<string, string>> _enumMemberNamesPerType = new Dictionary<Type, BidirectionalDictionary<string, string>>();
+
+    /// <summary>
+    /// Gets or sets a value indicating whether the written enum text should be camel case.
+    /// </summary>
+    /// <value><c>true</c> if the written enum text will be camel case; otherwise, <c>false</c>.</value>
+    public bool CamelCaseText { get; set; }
+    
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      if (value == null)
+      {
+        writer.WriteNull();
+        return;
+      }
+
+      Enum e = (Enum)value;
+
+      string enumName = e.ToString("G");
+
+      if (char.IsNumber(enumName[0]) || enumName[0] == '-')
+      {
+        writer.WriteValue(value);
+      }
+      else
+      {
+        BidirectionalDictionary<string, string> map = GetEnumNameMap(e.GetType());
+
+        string resolvedEnumName;
+        map.TryGetByFirst(enumName, out resolvedEnumName);
+        resolvedEnumName = resolvedEnumName ?? enumName;
+
+        if (CamelCaseText)
+        {
+          string[] names = resolvedEnumName.Split(',').Select(item => StringUtils.ToCamelCase(item.Trim())).ToArray();
+          resolvedEnumName = string.Join(", ", names);
+        }
+
+        writer.WriteValue(resolvedEnumName);
+      }
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      Type t = (ReflectionUtils.IsNullableType(objectType))
+      ? Nullable.GetUnderlyingType(objectType)
+      : objectType;
+
+      if (reader.TokenType == JsonToken.Null)
+      {
+        if (!ReflectionUtils.IsNullableType(objectType))
+          throw new Exception("Cannot convert null value to {0}.".FormatWith(CultureInfo.InvariantCulture, objectType));
+
+        return null;
+      }
+
+      if (reader.TokenType == JsonToken.String)
+      {
+        var map = GetEnumNameMap(t);
+        string resolvedEnumName;
+        map.TryGetBySecond(reader.Value.ToString(), out resolvedEnumName);
+        resolvedEnumName = resolvedEnumName ?? reader.Value.ToString();
+
+        return Enum.Parse(t, resolvedEnumName, true);
+      }
+
+      if (reader.TokenType == JsonToken.Integer)
+        return ConvertUtils.ConvertOrCast(reader.Value, CultureInfo.InvariantCulture, t);
+
+      throw new Exception("Unexpected token when parsing enum. Expected String or Integer, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+    }
+
+    /// <summary>
+    /// A cached representation of the Enum string representation to respect per Enum field name.
+    /// </summary>
+    /// <param name="t">The type of the Enum.</param>
+    /// <returns>A map of enum field name to either the field name, or the configured enum member name (<see cref="EnumMemberAttribute"/>).</returns>
+    private BidirectionalDictionary<string, string> GetEnumNameMap(Type t)
+    {
+      BidirectionalDictionary<string, string> map;
+
+      if (!_enumMemberNamesPerType.TryGetValue(t, out map))
+      {
+        lock (_enumMemberNamesPerType)
+        {
+          if (_enumMemberNamesPerType.TryGetValue(t, out map))
+            return map;
+
+          map = new BidirectionalDictionary<string, string>(
+            StringComparer.OrdinalIgnoreCase,
+            StringComparer.OrdinalIgnoreCase);
+
+          foreach (FieldInfo f in t.GetFields())
+          {
+            string n1 = f.Name;
+            string n2;
+            
+#if !NET20
+            n2 = f.GetCustomAttributes(typeof (EnumMemberAttribute), true)
+                          .Cast<EnumMemberAttribute>()
+                          .Select(a => a.Value)
+                          .SingleOrDefault() ?? f.Name;
+#else
+            n2 = f.Name;
+#endif
+
+            string s;
+            if (map.TryGetBySecond(n2, out s))
+            {
+              throw new Exception("Enum name '{0}' already exists on enum '{1}'."
+                .FormatWith(CultureInfo.InvariantCulture, n2, t.Name));
+            }
+
+            map.Add(n1, n2);
+          }
+
+          _enumMemberNamesPerType[t] = map;
+        }
+      }
+
+      return map;
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      Type t = (ReflectionUtils.IsNullableType(objectType))
+      ? Nullable.GetUnderlyingType(objectType)
+      : objectType;
+
+      return t.IsEnum();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/VersionConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/VersionConverter.cs
@@ -1,106 +1,106 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Converters
-{
-  /// <summary>
-  /// Converts a <see cref="Version"/> to and from a string (e.g. "1.2.3.4").
-  /// </summary>
-  public class VersionConverter : JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      if (value == null)
-      {
-        writer.WriteNull();
-      }
-      else if (value is Version)
-      {
-        writer.WriteValue(value.ToString());
-      }
-      else
-      {
-        throw new Exception("Expected Version object value");
-      }
-    }
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing property value of the JSON that is being converted.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      if (reader.TokenType == JsonToken.Null)
-      {
-        return null;
-      }
-      else
-      {
-        if (reader.TokenType == JsonToken.String)
-        {
-          try
-          {
-            Version v = new Version((string) reader.Value);
-            return v;
-          }
-          catch (Exception ex)
-          {
-            throw new Exception("Error parsing version string: {0}".FormatWith(CultureInfo.InvariantCulture, reader.Value), ex);
-          }
-        }
-        else
-        {
-          throw new Exception("Unexpected token or value when parsing version. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType, reader.Value));
-        }
-      }
-    }
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type objectType)
-    {
-      return objectType == typeof (Version);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Converters
+{
+  /// <summary>
+  /// Converts a <see cref="Version"/> to and from a string (e.g. "1.2.3.4").
+  /// </summary>
+  public class VersionConverter : JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      if (value == null)
+      {
+        writer.WriteNull();
+      }
+      else if (value is Version)
+      {
+        writer.WriteValue(value.ToString());
+      }
+      else
+      {
+        throw new Exception("Expected Version object value");
+      }
+    }
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing property value of the JSON that is being converted.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      if (reader.TokenType == JsonToken.Null)
+      {
+        return null;
+      }
+      else
+      {
+        if (reader.TokenType == JsonToken.String)
+        {
+          try
+          {
+            Version v = new Version((string) reader.Value);
+            return v;
+          }
+          catch (Exception ex)
+          {
+            throw new Exception("Error parsing version string: {0}".FormatWith(CultureInfo.InvariantCulture, reader.Value), ex);
+          }
+        }
+        else
+        {
+          throw new Exception("Unexpected token or value when parsing version. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType, reader.Value));
+        }
+      }
+    }
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type objectType)
+    {
+      return objectType == typeof (Version);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
@@ -1,1551 +1,1551 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if (!SILVERLIGHT || WINDOWS_PHONE)
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Xml;
-#if !NET20
-using System.Xml.Linq;
-#endif
-using Newtonsoft.Json.Utilities;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Converters
-{
-  #region XmlNodeWrappers
-#if !SILVERLIGHT && !NETFX_CORE
-  internal class XmlDocumentWrapper : XmlNodeWrapper, IXmlDocument
-  {
-    private readonly XmlDocument _document;
-
-    public XmlDocumentWrapper(XmlDocument document)
-      : base(document)
-    {
-      _document = document;
-    }
-
-    public IXmlNode CreateComment(string data)
-    {
-      return new XmlNodeWrapper(_document.CreateComment(data));
-    }
-
-    public IXmlNode CreateTextNode(string text)
-    {
-      return new XmlNodeWrapper(_document.CreateTextNode(text));
-    }
-
-    public IXmlNode CreateCDataSection(string data)
-    {
-      return new XmlNodeWrapper(_document.CreateCDataSection(data));
-    }
-
-    public IXmlNode CreateWhitespace(string text)
-    {
-      return new XmlNodeWrapper(_document.CreateWhitespace(text));
-    }
-
-    public IXmlNode CreateSignificantWhitespace(string text)
-    {
-      return new XmlNodeWrapper(_document.CreateSignificantWhitespace(text));
-    }
-
-    public IXmlNode CreateXmlDeclaration(string version, string encoding, string standalone)
-    {
-      return new XmlNodeWrapper(_document.CreateXmlDeclaration(version, encoding, standalone));
-    }
-
-    public IXmlNode CreateProcessingInstruction(string target, string data)
-    {
-      return new XmlNodeWrapper(_document.CreateProcessingInstruction(target, data));
-    }
-
-    public IXmlElement CreateElement(string elementName)
-    {
-      return new XmlElementWrapper(_document.CreateElement(elementName));
-    }
-
-    public IXmlElement CreateElement(string qualifiedName, string namespaceUri)
-    {
-      return new XmlElementWrapper(_document.CreateElement(qualifiedName, namespaceUri));
-    }
-
-    public IXmlNode CreateAttribute(string name, string value)
-    {
-      XmlNodeWrapper attribute = new XmlNodeWrapper(_document.CreateAttribute(name));
-      attribute.Value = value;
-
-      return attribute;
-    }
-
-    public IXmlNode CreateAttribute(string qualifiedName, string namespaceUri, string value)
-    {
-      XmlNodeWrapper attribute = new XmlNodeWrapper(_document.CreateAttribute(qualifiedName, namespaceUri));
-      attribute.Value = value;
-
-      return attribute;
-    }
-
-    public IXmlElement DocumentElement
-    {
-      get
-      {
-        if (_document.DocumentElement == null)
-          return null;
-
-        return new XmlElementWrapper(_document.DocumentElement);
-      }
-    }
-  }
-
-  internal class XmlElementWrapper : XmlNodeWrapper, IXmlElement
-  {
-    private readonly XmlElement _element;
-
-    public XmlElementWrapper(XmlElement element)
-      : base(element)
-    {
-      _element = element;
-    }
-
-    public void SetAttributeNode(IXmlNode attribute)
-    {
-      XmlNodeWrapper xmlAttributeWrapper = (XmlNodeWrapper)attribute;
-
-      _element.SetAttributeNode((XmlAttribute) xmlAttributeWrapper.WrappedNode);
-    }
-
-    public string GetPrefixOfNamespace(string namespaceUri)
-    {
-      return _element.GetPrefixOfNamespace(namespaceUri);
-    }
-  }
-
-  internal class XmlDeclarationWrapper : XmlNodeWrapper, IXmlDeclaration
-  {
-    private readonly XmlDeclaration _declaration;
-
-    public XmlDeclarationWrapper(XmlDeclaration declaration)
-      : base(declaration)
-    {
-      _declaration = declaration;
-    }
-
-    public string Version
-    {
-      get { return _declaration.Version; }
-    }
-
-    public string Encoding
-    {
-      get { return _declaration.Encoding; }
-      set { _declaration.Encoding = value; }
-    }
-
-    public string Standalone
-    {
-      get { return _declaration.Standalone; }
-      set { _declaration.Standalone = value; }
-    }
-  }
-
-  internal class XmlNodeWrapper : IXmlNode
-  {
-    private readonly XmlNode _node;
-
-    public XmlNodeWrapper(XmlNode node)
-    {
-      _node = node;
-    }
-
-    public object WrappedNode
-    {
-      get { return _node; }
-    }
-
-    public XmlNodeType NodeType
-    {
-      get { return _node.NodeType; }
-    }
-
-    public string Name
-    {
-      get { return _node.Name; }
-    }
-
-    public string LocalName
-    {
-      get { return _node.LocalName; }
-    }
-
-    public IList<IXmlNode> ChildNodes
-    {
-      get { return _node.ChildNodes.Cast<XmlNode>().Select(n => WrapNode(n)).ToList(); }
-    }
-
-    private IXmlNode WrapNode(XmlNode node)
-    {
-      switch (node.NodeType)
-      {
-        case XmlNodeType.Element:
-          return new XmlElementWrapper((XmlElement) node);
-        case XmlNodeType.XmlDeclaration:
-          return new XmlDeclarationWrapper((XmlDeclaration) node);
-        default:
-          return new XmlNodeWrapper(node);
-      }
-    }
-
-    public IList<IXmlNode> Attributes
-    {
-      get
-      {
-        if (_node.Attributes == null)
-          return null;
-
-        return _node.Attributes.Cast<XmlAttribute>().Select(a => WrapNode(a)).ToList();
-      }
-    }
-
-    public IXmlNode ParentNode
-    {
-      get
-      {
-        XmlNode node = (_node is XmlAttribute)
-                         ? ((XmlAttribute) _node).OwnerElement
-                         : _node.ParentNode;
-        
-        if (node == null)
-          return null;
-
-        return WrapNode(node);
-      }
-    }
-
-    public string Value
-    {
-      get { return _node.Value; }
-      set { _node.Value = value; }
-    }
-
-    public IXmlNode AppendChild(IXmlNode newChild)
-    {
-      XmlNodeWrapper xmlNodeWrapper = (XmlNodeWrapper) newChild;
-      _node.AppendChild(xmlNodeWrapper._node);
-
-      return newChild;
-    }
-
-    public string Prefix
-    {
-      get { return _node.Prefix; }
-    }
-
-    public string NamespaceUri
-    {
-      get { return _node.NamespaceURI; }
-    }
-  }
-#endif
-  #endregion
-
-  #region Interfaces
-  internal interface IXmlDocument : IXmlNode
-  {
-    IXmlNode CreateComment(string text);
-    IXmlNode CreateTextNode(string text);
-    IXmlNode CreateCDataSection(string data);
-    IXmlNode CreateWhitespace(string text);
-    IXmlNode CreateSignificantWhitespace(string text);
-    IXmlNode CreateXmlDeclaration(string version, string encoding, string standalone);
-    IXmlNode CreateProcessingInstruction(string target, string data);
-    IXmlElement CreateElement(string elementName);
-    IXmlElement CreateElement(string qualifiedName, string namespaceUri);
-    IXmlNode CreateAttribute(string name, string value);
-    IXmlNode CreateAttribute(string qualifiedName, string namespaceUri, string value);
-
-    IXmlElement DocumentElement { get; }
-  }
-
-  internal interface IXmlDeclaration : IXmlNode
-  {
-    string Version { get; }
-    string Encoding { get; set; }
-    string Standalone { get; set; }
-  }
-
-  internal interface IXmlElement : IXmlNode
-  {
-    void SetAttributeNode(IXmlNode attribute);
-    string GetPrefixOfNamespace(string namespaceUri);
-  }
-
-  internal interface IXmlNode
-  {
-    XmlNodeType NodeType { get; }
-    string LocalName { get; }
-    IList<IXmlNode> ChildNodes { get; }
-    IList<IXmlNode> Attributes { get; }
-    IXmlNode ParentNode { get; }
-    string Value { get; set; }
-    IXmlNode AppendChild(IXmlNode newChild);
-    string NamespaceUri { get; }
-    object WrappedNode { get; }
-  }
-  #endregion
-
-  #region XNodeWrappers
-#if !NET20
-  internal class XDeclarationWrapper : XObjectWrapper, IXmlDeclaration
-  {
-    internal XDeclaration Declaration { get; private set; }
-
-    public XDeclarationWrapper(XDeclaration declaration)
-      : base(null)
-    {
-      Declaration = declaration;
-    }
-
-    public override XmlNodeType NodeType
-    {
-      get { return XmlNodeType.XmlDeclaration; }
-    }
-
-    public string Version
-    {
-      get { return Declaration.Version; }
-    }
-
-    public string Encoding
-    {
-      get { return Declaration.Encoding; }
-      set { Declaration.Encoding = value; }
-    }
-
-    public string Standalone
-    {
-      get { return Declaration.Standalone; }
-      set { Declaration.Standalone = value; }
-    }
-  }
-
-  internal class XDocumentWrapper : XContainerWrapper, IXmlDocument
-  {
-    private XDocument Document
-    {
-      get { return (XDocument)WrappedNode; }
-    }
-
-    public XDocumentWrapper(XDocument document)
-      : base(document)
-    {
-    }
-
-    public override IList<IXmlNode> ChildNodes
-    {
-      get
-      {
-        IList<IXmlNode> childNodes = base.ChildNodes;
-
-        if (Document.Declaration != null)
-          childNodes.Insert(0, new XDeclarationWrapper(Document.Declaration));
-
-        return childNodes;
-      }
-    }
-
-    public IXmlNode CreateComment(string text)
-    {
-      return new XObjectWrapper(new XComment(text));
-    }
-
-    public IXmlNode CreateTextNode(string text)
-    {
-      return new XObjectWrapper(new XText(text));
-    }
-
-    public IXmlNode CreateCDataSection(string data)
-    {
-      return new XObjectWrapper(new XCData(data));
-    }
-
-    public IXmlNode CreateWhitespace(string text)
-    {
-      return new XObjectWrapper(new XText(text));
-    }
-
-    public IXmlNode CreateSignificantWhitespace(string text)
-    {
-      return new XObjectWrapper(new XText(text));
-    }
-
-    public IXmlNode CreateXmlDeclaration(string version, string encoding, string standalone)
-    {
-      return new XDeclarationWrapper(new XDeclaration(version, encoding, standalone));
-    }
-
-    public IXmlNode CreateProcessingInstruction(string target, string data)
-    {
-      return new XProcessingInstructionWrapper(new XProcessingInstruction(target, data));
-    }
-
-    public IXmlElement CreateElement(string elementName)
-    {
-      return new XElementWrapper(new XElement(elementName));
-    }
-
-    public IXmlElement CreateElement(string qualifiedName, string namespaceUri)
-    {
-      string localName = MiscellaneousUtils.GetLocalName(qualifiedName);
-      return new XElementWrapper(new XElement(XName.Get(localName, namespaceUri)));
-    }
-
-    public IXmlNode CreateAttribute(string name, string value)
-    {
-      return new XAttributeWrapper(new XAttribute(name, value));
-    }
-
-    public IXmlNode CreateAttribute(string qualifiedName, string namespaceUri, string value)
-    {
-      string localName = MiscellaneousUtils.GetLocalName(qualifiedName);
-      return new XAttributeWrapper(new XAttribute(XName.Get(localName, namespaceUri), value));
-    }
-
-    public IXmlElement DocumentElement
-    {
-      get
-      {
-        if (Document.Root == null)
-          return null;
-
-        return new XElementWrapper(Document.Root);
-      }
-    }
-
-    public override IXmlNode AppendChild(IXmlNode newChild)
-    {
-      XDeclarationWrapper declarationWrapper = newChild as XDeclarationWrapper;
-      if (declarationWrapper != null)
-      {
-        Document.Declaration = declarationWrapper.Declaration;
-        return declarationWrapper;
-      }
-      else
-      {
-        return base.AppendChild(newChild);
-      }
-    }
-  }
-
-  internal class XTextWrapper : XObjectWrapper
-  {
-    private XText Text
-    {
-      get { return (XText)WrappedNode; }
-    }
-
-    public XTextWrapper(XText text)
-      : base(text)
-    {
-    }
-
-    public override string Value
-    {
-      get { return Text.Value; }
-      set { Text.Value = value; }
-    }
-
-    public override IXmlNode ParentNode
-    {
-      get
-      {
-        if (Text.Parent == null)
-          return null;
-        
-        return XContainerWrapper.WrapNode(Text.Parent);
-      }
-    }
-  }
-
-  internal class XCommentWrapper : XObjectWrapper
-  {
-    private XComment Text
-    {
-      get { return (XComment)WrappedNode; }
-    }
-
-    public XCommentWrapper(XComment text)
-      : base(text)
-    {
-    }
-
-    public override string Value
-    {
-      get { return Text.Value; }
-      set { Text.Value = value; }
-    }
-
-    public override IXmlNode ParentNode
-    {
-      get
-      {
-        if (Text.Parent == null)
-          return null;
-
-        return XContainerWrapper.WrapNode(Text.Parent);
-      }
-    }
-  }
-
-  internal class XProcessingInstructionWrapper : XObjectWrapper
-  {
-    private XProcessingInstruction ProcessingInstruction
-    {
-      get { return (XProcessingInstruction)WrappedNode; }
-    }
-
-    public XProcessingInstructionWrapper(XProcessingInstruction processingInstruction)
-      : base(processingInstruction)
-    {
-    }
-
-    public override string LocalName
-    {
-      get { return ProcessingInstruction.Target; }
-    }
-
-    public override string Value
-    {
-      get { return ProcessingInstruction.Data; }
-      set { ProcessingInstruction.Data = value; }
-    }
-  }
-
-  internal class XContainerWrapper : XObjectWrapper
-  {
-    private XContainer Container
-    {
-      get { return (XContainer)WrappedNode; }
-    }
-
-    public XContainerWrapper(XContainer container)
-      : base(container)
-    {
-    }
-
-    public override IList<IXmlNode> ChildNodes
-    {
-      get { return Container.Nodes().Select(n => WrapNode(n)).ToList(); }
-    }
-
-    public override IXmlNode ParentNode
-    {
-      get
-      {
-        if (Container.Parent == null)
-          return null;
-        
-        return WrapNode(Container.Parent);
-      }
-    }
-
-    internal static IXmlNode WrapNode(XObject node)
-    {
-      if (node is XDocument)
-        return new XDocumentWrapper((XDocument)node);
-      else if (node is XElement)
-        return new XElementWrapper((XElement)node);
-      else if (node is XContainer)
-        return new XContainerWrapper((XContainer)node);
-      else if (node is XProcessingInstruction)
-        return new XProcessingInstructionWrapper((XProcessingInstruction)node);
-      else if (node is XText)
-        return new XTextWrapper((XText)node);
-      else if (node is XComment)
-        return new XCommentWrapper((XComment)node);
-      else if (node is XAttribute)
-        return new XAttributeWrapper((XAttribute) node);
-      else
-        return new XObjectWrapper(node);
-    }
-
-    public override IXmlNode AppendChild(IXmlNode newChild)
-    {
-      Container.Add(newChild.WrappedNode);
-      return newChild;
-    }
-  }
-
-  internal class XObjectWrapper : IXmlNode
-  {
-    private readonly XObject _xmlObject;
-
-    public XObjectWrapper(XObject xmlObject)
-    {
-      _xmlObject = xmlObject;
-    }
-
-    public object WrappedNode
-    {
-      get { return _xmlObject; }
-    }
-
-    public virtual XmlNodeType NodeType
-    {
-      get { return _xmlObject.NodeType; }
-    }
-
-    public virtual string LocalName
-    {
-      get { return null; }
-    }
-
-    public virtual IList<IXmlNode> ChildNodes
-    {
-      get { return new List<IXmlNode>(); }
-    }
-
-    public virtual IList<IXmlNode> Attributes
-    {
-      get { return null; }
-    }
-
-    public virtual IXmlNode ParentNode
-    {
-      get { return null; }
-    }
-
-    public virtual string Value
-    {
-      get { return null; }
-      set { throw new InvalidOperationException(); }
-    }
-
-    public virtual IXmlNode AppendChild(IXmlNode newChild)
-    {
-      throw new InvalidOperationException();
-    }
-
-    public virtual string NamespaceUri
-    {
-      get { return null; }
-    }
-  }
-
-  internal class XAttributeWrapper : XObjectWrapper
-  {
-    private XAttribute Attribute
-    {
-      get { return (XAttribute)WrappedNode; }
-    }
-
-    public XAttributeWrapper(XAttribute attribute)
-      : base(attribute)
-    {
-    }
-
-    public override string Value
-    {
-      get { return Attribute.Value; }
-      set { Attribute.Value = value; }
-    }
-
-    public override string LocalName
-    {
-      get { return Attribute.Name.LocalName; }
-    }
-
-    public override string NamespaceUri
-    {
-      get { return Attribute.Name.NamespaceName; }
-    }
-
-    public override IXmlNode ParentNode
-    {
-      get
-      {
-        if (Attribute.Parent == null)
-          return null;
-
-        return XContainerWrapper.WrapNode(Attribute.Parent);
-      }
-    }
-  }
-
-  internal class XElementWrapper : XContainerWrapper, IXmlElement
-  {
-    private XElement Element
-    {
-      get { return (XElement) WrappedNode; }
-    }
-
-    public XElementWrapper(XElement element)
-      : base(element)
-    {
-    }
-
-    public void SetAttributeNode(IXmlNode attribute)
-    {
-      XObjectWrapper wrapper = (XObjectWrapper)attribute;
-      Element.Add(wrapper.WrappedNode);
-    }
-
-    public override IList<IXmlNode> Attributes
-    {
-      get { return Element.Attributes().Select(a => new XAttributeWrapper(a)).Cast<IXmlNode>().ToList(); }
-    }
-
-    public override string Value
-    {
-      get { return Element.Value; }
-      set { Element.Value = value; }
-    }
-
-    public override string LocalName
-    {
-      get { return Element.Name.LocalName; }
-    }
-
-    public override string NamespaceUri
-    {
-      get { return Element.Name.NamespaceName; }
-    }
-
-    public string GetPrefixOfNamespace(string namespaceUri)
-    {
-      return Element.GetPrefixOfNamespace(namespaceUri);
-    }
-  }
-#endif
-  #endregion
-
-  /// <summary>
-  /// Converts XML to and from JSON.
-  /// </summary>
-  public class XmlNodeConverter : JsonConverter
-  {
-    private const string TextName = "#text";
-    private const string CommentName = "#comment";
-    private const string CDataName = "#cdata-section";
-    private const string WhitespaceName = "#whitespace";
-    private const string SignificantWhitespaceName = "#significant-whitespace";
-    private const string DeclarationName = "?xml";
-    private const string JsonNamespaceUri = "http://james.newtonking.com/projects/json";
-
-    /// <summary>
-    /// Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements.
-    /// </summary>
-    /// <value>The name of the deserialize root element.</value>
-    public string DeserializeRootElementName { get; set; }
-
-    /// <summary>
-    /// Gets or sets a flag to indicate whether to write the Json.NET array attribute.
-    /// This attribute helps preserve arrays when converting the written XML back to JSON.
-    /// </summary>
-    /// <value><c>true</c> if the array attibute is written to the XML; otherwise, <c>false</c>.</value>
-    public bool WriteArrayAttribute { get; set; }
-
-    /// <summary>
-    /// Gets or sets a value indicating whether to write the root JSON object.
-    /// </summary>
-    /// <value><c>true</c> if the JSON root object is omitted; otherwise, <c>false</c>.</value>
-    public bool OmitRootObject { get; set; }
-
-    #region Writing
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <param name="value">The value.</param>
-    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
-    {
-      IXmlNode node = WrapXml(value);
-
-      XmlNamespaceManager manager = new XmlNamespaceManager(new NameTable());
-      PushParentNamespaces(node, manager);
-
-      if (!OmitRootObject)
-        writer.WriteStartObject();
-
-      SerializeNode(writer, node, manager, !OmitRootObject);
-      
-      if (!OmitRootObject)
-        writer.WriteEndObject();
-    }
-
-    private IXmlNode WrapXml(object value)
-    {
-#if !NET20
-      if (value is XObject)
-        return XContainerWrapper.WrapNode((XObject)value);
-#endif
-#if !(SILVERLIGHT || NETFX_CORE)
-      if (value is XmlNode)
-        return new XmlNodeWrapper((XmlNode)value);
-#endif
-      
-      throw new ArgumentException("Value must be an XML object.", "value");
-    }
-
-    private void PushParentNamespaces(IXmlNode node, XmlNamespaceManager manager)
-    {
-      List<IXmlNode> parentElements = null;
-
-      IXmlNode parent = node;
-      while ((parent = parent.ParentNode) != null)
-      {
-        if (parent.NodeType == XmlNodeType.Element)
-        {
-          if (parentElements == null)
-            parentElements = new List<IXmlNode>();
-
-          parentElements.Add(parent);
-        }
-      }
-
-      if (parentElements != null)
-      {
-        parentElements.Reverse();
-
-        foreach (IXmlNode parentElement in parentElements)
-        {
-          manager.PushScope();
-          foreach (IXmlNode attribute in parentElement.Attributes)
-          {
-            if (attribute.NamespaceUri == "http://www.w3.org/2000/xmlns/" && attribute.LocalName != "xmlns")
-              manager.AddNamespace(attribute.LocalName, attribute.Value);
-          }
-        }
-      }
-    }
-
-    private string ResolveFullName(IXmlNode node, XmlNamespaceManager manager)
-    {
-      string prefix = (node.NamespaceUri == null || (node.LocalName == "xmlns" && node.NamespaceUri == "http://www.w3.org/2000/xmlns/"))
-                        ? null
-                        : manager.LookupPrefix(node.NamespaceUri);
-
-      if (!string.IsNullOrEmpty(prefix))
-        return prefix + ":" + node.LocalName;
-      else
-        return node.LocalName;
-    }
-
-    private string GetPropertyName(IXmlNode node, XmlNamespaceManager manager)
-    {
-      switch (node.NodeType)
-      {
-        case XmlNodeType.Attribute:
-          if (node.NamespaceUri == JsonNamespaceUri)
-            return "$" + node.LocalName;
-          else
-            return "@" + ResolveFullName(node, manager);
-        case XmlNodeType.CDATA:
-          return CDataName;
-        case XmlNodeType.Comment:
-          return CommentName;
-        case XmlNodeType.Element:
-          return ResolveFullName(node, manager);
-        case XmlNodeType.ProcessingInstruction:
-          return "?" + ResolveFullName(node, manager);
-        case XmlNodeType.XmlDeclaration:
-          return DeclarationName;
-        case XmlNodeType.SignificantWhitespace:
-          return SignificantWhitespaceName;
-        case XmlNodeType.Text:
-          return TextName;
-        case XmlNodeType.Whitespace:
-          return WhitespaceName;
-        default:
-          throw new JsonSerializationException("Unexpected XmlNodeType when getting node name: " + node.NodeType);
-      }
-    }
-
-    private bool IsArray(IXmlNode node)
-    {
-      IXmlNode jsonArrayAttribute = (node.Attributes != null)
-                                      ? node.Attributes.SingleOrDefault(a => a.LocalName == "Array" && a.NamespaceUri == JsonNamespaceUri)
-                                      : null;
-      
-      return (jsonArrayAttribute != null && XmlConvert.ToBoolean(jsonArrayAttribute.Value));
-    }
-
-    private void SerializeGroupedNodes(JsonWriter writer, IXmlNode node, XmlNamespaceManager manager, bool writePropertyName)
-    {
-      // group nodes together by name
-      Dictionary<string, List<IXmlNode>> nodesGroupedByName = new Dictionary<string, List<IXmlNode>>();
-
-      for (int i = 0; i < node.ChildNodes.Count; i++)
-      {
-        IXmlNode childNode = node.ChildNodes[i];
-        string nodeName = GetPropertyName(childNode, manager);
-
-        List<IXmlNode> nodes;
-        if (!nodesGroupedByName.TryGetValue(nodeName, out nodes))
-        {
-          nodes = new List<IXmlNode>();
-          nodesGroupedByName.Add(nodeName, nodes);
-        }
-
-        nodes.Add(childNode);
-      }
-
-      // loop through grouped nodes. write single name instances as normal,
-      // write multiple names together in an array
-      foreach (KeyValuePair<string, List<IXmlNode>> nodeNameGroup in nodesGroupedByName)
-      {
-        List<IXmlNode> groupedNodes = nodeNameGroup.Value;
-        bool writeArray;
-
-        if (groupedNodes.Count == 1)
-        {
-          writeArray = IsArray(groupedNodes[0]);
-        }
-        else
-        {
-          writeArray = true;
-        }
-
-        if (!writeArray)
-        {
-          SerializeNode(writer, groupedNodes[0], manager, writePropertyName);
-        }
-        else
-        {
-          string elementNames = nodeNameGroup.Key;
-
-          if (writePropertyName)
-            writer.WritePropertyName(elementNames);
-
-          writer.WriteStartArray();
-
-          for (int i = 0; i < groupedNodes.Count; i++)
-          {
-            SerializeNode(writer, groupedNodes[i], manager, false);
-          }
-
-          writer.WriteEndArray();
-        }
-      }
-    }
-
-    private void SerializeNode(JsonWriter writer, IXmlNode node, XmlNamespaceManager manager, bool writePropertyName)
-    {
-      switch (node.NodeType)
-      {
-        case XmlNodeType.Document:
-        case XmlNodeType.DocumentFragment:
-          SerializeGroupedNodes(writer, node, manager, writePropertyName);
-          break;
-        case XmlNodeType.Element:
-          if (IsArray(node) && node.ChildNodes.All(n => n.LocalName == node.LocalName) && node.ChildNodes.Count > 0)
-          {
-            SerializeGroupedNodes(writer, node, manager, false);
-          }
-          else
-          {
-            foreach (IXmlNode attribute in node.Attributes)
-            {
-              if (attribute.NamespaceUri == "http://www.w3.org/2000/xmlns/")
-              {
-                string prefix = (attribute.LocalName != "xmlns")
-                                  ? attribute.LocalName
-                                  : string.Empty;
-
-                manager.AddNamespace(prefix, attribute.Value);
-              }
-            }
-
-            if (writePropertyName)
-              writer.WritePropertyName(GetPropertyName(node, manager));
-
-            if (!ValueAttributes(node.Attributes).Any() && node.ChildNodes.Count == 1
-                && node.ChildNodes[0].NodeType == XmlNodeType.Text)
-            {
-              // write elements with a single text child as a name value pair
-              writer.WriteValue(node.ChildNodes[0].Value);
-            }
-            else if (node.ChildNodes.Count == 0 && CollectionUtils.IsNullOrEmpty(node.Attributes))
-            {
-              // empty element
-              writer.WriteNull();
-            }
-            else
-            {
-              writer.WriteStartObject();
-
-              for (int i = 0; i < node.Attributes.Count; i++)
-              {
-                SerializeNode(writer, node.Attributes[i], manager, true);
-              }
-
-              SerializeGroupedNodes(writer, node, manager, true);
-
-              writer.WriteEndObject();
-            }
-          }
-
-          break;
-        case XmlNodeType.Comment:
-          if (writePropertyName)
-            writer.WriteComment(node.Value);
-          break;
-        case XmlNodeType.Attribute:
-        case XmlNodeType.Text:
-        case XmlNodeType.CDATA:
-        case XmlNodeType.ProcessingInstruction:
-        case XmlNodeType.Whitespace:
-        case XmlNodeType.SignificantWhitespace:
-          if (node.NamespaceUri == "http://www.w3.org/2000/xmlns/" && node.Value == JsonNamespaceUri)
-            return;
-
-          if (node.NamespaceUri == JsonNamespaceUri)
-          {
-            if (node.LocalName == "Array")
-              return;
-          }
-
-          if (writePropertyName)
-            writer.WritePropertyName(GetPropertyName(node, manager));
-          writer.WriteValue(node.Value);
-          break;
-        case XmlNodeType.XmlDeclaration:
-          IXmlDeclaration declaration = (IXmlDeclaration)node;
-          writer.WritePropertyName(GetPropertyName(node, manager));
-          writer.WriteStartObject();
-
-          if (!string.IsNullOrEmpty(declaration.Version))
-          {
-            writer.WritePropertyName("@version");
-            writer.WriteValue(declaration.Version);
-          }
-          if (!string.IsNullOrEmpty(declaration.Encoding))
-          {
-            writer.WritePropertyName("@encoding");
-            writer.WriteValue(declaration.Encoding);
-          }
-          if (!string.IsNullOrEmpty(declaration.Standalone))
-          {
-            writer.WritePropertyName("@standalone");
-            writer.WriteValue(declaration.Standalone);
-          }
-
-          writer.WriteEndObject();
-          break;
-        default:
-          throw new JsonSerializationException("Unexpected XmlNodeType when serializing nodes: " + node.NodeType);
-      }
-    }
-    #endregion
-
-    #region Reading
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
-    {
-      XmlNamespaceManager manager = new XmlNamespaceManager(new NameTable());
-      IXmlDocument document = null;
-      IXmlNode rootNode = null;
-
-#if !NET20
-      if (typeof(XObject).IsAssignableFrom(objectType))
-      {
-        if (objectType != typeof (XDocument) && objectType != typeof (XElement))
-          throw new JsonSerializationException("XmlNodeConverter only supports deserializing XDocument or XElement.");
-
-        XDocument d = new XDocument();
-        document = new XDocumentWrapper(d);
-        rootNode = document;
-      }
-#endif
-#if !(SILVERLIGHT || NETFX_CORE)
-      if (typeof(XmlNode).IsAssignableFrom(objectType))
-      {
-        if (objectType != typeof (XmlDocument))
-          throw new JsonSerializationException("XmlNodeConverter only supports deserializing XmlDocuments");
-
-        XmlDocument d = new XmlDocument();
-        document = new XmlDocumentWrapper(d);
-        rootNode = document;
-      }
-#endif
-      
-      if (document == null || rootNode == null)
-        throw new JsonSerializationException("Unexpected type when converting XML: " + objectType);
-
-      if (reader.TokenType != JsonToken.StartObject)
-        throw new JsonSerializationException("XmlNodeConverter can only convert JSON that begins with an object.");
-
-      if (!string.IsNullOrEmpty(DeserializeRootElementName))
-      {
-        //rootNode = document.CreateElement(DeserializeRootElementName);
-        //document.AppendChild(rootNode);
-        ReadElement(reader, document, rootNode, DeserializeRootElementName, manager);
-      }
-      else
-      {
-        reader.Read();
-        DeserializeNode(reader, document, manager, rootNode);
-      }
-
-#if !NET20
-      if (objectType == typeof(XElement))
-      {
-        XElement element = (XElement)document.DocumentElement.WrappedNode;
-        element.Remove();
-
-        return element;
-      }
-#endif
-
-      return document.WrappedNode;
-    }
-
-    private void DeserializeValue(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, string propertyName, IXmlNode currentNode)
-    {
-      switch (propertyName)
-      {
-        case TextName:
-          currentNode.AppendChild(document.CreateTextNode(reader.Value.ToString()));
-          break;
-        case CDataName:
-          currentNode.AppendChild(document.CreateCDataSection(reader.Value.ToString()));
-          break;
-        case WhitespaceName:
-          currentNode.AppendChild(document.CreateWhitespace(reader.Value.ToString()));
-          break;
-        case SignificantWhitespaceName:
-          currentNode.AppendChild(document.CreateSignificantWhitespace(reader.Value.ToString()));
-          break;
-        default:
-          // processing instructions and the xml declaration start with ?
-          if (!string.IsNullOrEmpty(propertyName) && propertyName[0] == '?')
-          {
-            CreateInstruction(reader, document, currentNode, propertyName);
-          }
-          else
-          {
-            if (reader.TokenType == JsonToken.StartArray)
-            {
-              // handle nested arrays
-              ReadArrayElements(reader, document, propertyName, currentNode, manager);
-              return;
-            }
-
-            // have to wait until attributes have been parsed before creating element
-            // attributes may contain namespace info used by the element
-            ReadElement(reader, document, currentNode, propertyName, manager);
-          }
-          break;
-      }
-    }
-
-    private void ReadElement(JsonReader reader, IXmlDocument document, IXmlNode currentNode, string propertyName, XmlNamespaceManager manager)
-    {
-      if (string.IsNullOrEmpty(propertyName))
-        throw new JsonSerializationException("XmlNodeConverter cannot convert JSON with an empty property name to XML.");
-
-      Dictionary<string, string> attributeNameValues = ReadAttributeElements(reader, manager);
-
-      string elementPrefix = MiscellaneousUtils.GetPrefix(propertyName);
-
-      IXmlElement element = CreateElement(propertyName, document, elementPrefix, manager);
-
-      currentNode.AppendChild(element);
-
-      // add attributes to newly created element
-      foreach (KeyValuePair<string, string> nameValue in attributeNameValues)
-      {
-        string attributePrefix = MiscellaneousUtils.GetPrefix(nameValue.Key);
-
-        IXmlNode attribute = (!string.IsNullOrEmpty(attributePrefix))
-                               ? document.CreateAttribute(nameValue.Key, manager.LookupNamespace(attributePrefix), nameValue.Value)
-                               : document.CreateAttribute(nameValue.Key, nameValue.Value);
-
-        element.SetAttributeNode(attribute);
-      }
-
-      if (reader.TokenType == JsonToken.String
-        || reader.TokenType == JsonToken.Integer
-        || reader.TokenType == JsonToken.Float
-        || reader.TokenType == JsonToken.Boolean
-        || reader.TokenType == JsonToken.Date)
-      {
-        element.AppendChild(document.CreateTextNode(ConvertTokenToXmlValue(reader)));
-      }
-      else if (reader.TokenType == JsonToken.Null)
-      {
-        // empty element. do nothing
-      }
-      else
-      {
-        // finished element will have no children to deserialize
-        if (reader.TokenType != JsonToken.EndObject)
-        {
-          manager.PushScope();
-
-          DeserializeNode(reader, document, manager, element);
-
-          manager.PopScope();
-        }
-      }
-    }
-
-    private string ConvertTokenToXmlValue(JsonReader reader)
-    {
-      if (reader.TokenType == JsonToken.String)
-      {
-        return reader.Value.ToString();
-      }
-      else if (reader.TokenType == JsonToken.Integer)
-      {
-        return XmlConvert.ToString(Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture));
-      }
-      else if (reader.TokenType == JsonToken.Float)
-      {
-        return XmlConvert.ToString(Convert.ToDouble(reader.Value, CultureInfo.InvariantCulture));
-      }
-      else if (reader.TokenType == JsonToken.Boolean)
-      {
-        return XmlConvert.ToString(Convert.ToBoolean(reader.Value, CultureInfo.InvariantCulture));
-      }
-      else if (reader.TokenType == JsonToken.Date)
-      {
-        DateTime d = Convert.ToDateTime(reader.Value, CultureInfo.InvariantCulture);
-#if !NETFX_CORE
-        return XmlConvert.ToString(d, DateTimeUtils.ToSerializationMode(d.Kind));
-#else
-        return XmlConvert.ToString(d);
-#endif   
-      }
-      else if (reader.TokenType == JsonToken.Null)
-      {
-        return null;
-      }
-      else
-      {
-        throw new Exception("Cannot get an XML string value from token type '{0}'.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-      }
-    }
-
-    private void ReadArrayElements(JsonReader reader, IXmlDocument document, string propertyName, IXmlNode currentNode, XmlNamespaceManager manager)
-    {
-      string elementPrefix = MiscellaneousUtils.GetPrefix(propertyName);
-
-      IXmlElement nestedArrayElement = CreateElement(propertyName, document, elementPrefix, manager);
-
-      currentNode.AppendChild(nestedArrayElement);
-
-      int count = 0;
-      while (reader.Read() && reader.TokenType != JsonToken.EndArray)
-      {
-        DeserializeValue(reader, document, manager, propertyName, nestedArrayElement);
-        count++;
-      }
-
-      if (WriteArrayAttribute)
-      {
-        AddJsonArrayAttribute(nestedArrayElement, document);
-      }
-
-      if (count == 1 && WriteArrayAttribute)
-      {
-        IXmlElement arrayElement = nestedArrayElement.ChildNodes.CastValid<IXmlElement>().Single(n => n.LocalName == propertyName);
-        AddJsonArrayAttribute(arrayElement, document);
-      }
-    }
-
-    private void AddJsonArrayAttribute(IXmlElement element, IXmlDocument document)
-    {
-      element.SetAttributeNode(document.CreateAttribute("json:Array", JsonNamespaceUri, "true"));
-
-#if !NET20
-      // linq to xml doesn't automatically include prefixes via the namespace manager
-      if (element is XElementWrapper)
-      {
-        if (element.GetPrefixOfNamespace(JsonNamespaceUri) == null)
-        {
-          element.SetAttributeNode(document.CreateAttribute("xmlns:json", "http://www.w3.org/2000/xmlns/", JsonNamespaceUri));
-        }
-      }
-#endif
-    }
-
-    private Dictionary<string, string> ReadAttributeElements(JsonReader reader, XmlNamespaceManager manager)
-    {
-      Dictionary<string, string> attributeNameValues = new Dictionary<string, string>();
-      bool finishedAttributes = false;
-      bool finishedElement = false;
-
-      // a string token means the element only has a single text child
-      if (reader.TokenType != JsonToken.String
-          && reader.TokenType != JsonToken.Null
-          && reader.TokenType != JsonToken.Boolean
-          && reader.TokenType != JsonToken.Integer
-          && reader.TokenType != JsonToken.Float
-          && reader.TokenType != JsonToken.Date
-          && reader.TokenType != JsonToken.StartConstructor)
-      {
-        // read properties until first non-attribute is encountered
-        while (!finishedAttributes && !finishedElement && reader.Read())
-        {
-          switch (reader.TokenType)
-          {
-            case JsonToken.PropertyName:
-              string attributeName = reader.Value.ToString();
-
-              if (!string.IsNullOrEmpty(attributeName))
-              {
-                char firstChar = attributeName[0];
-                string attributeValue;
-
-                switch (firstChar)
-                {
-                  case '@':
-                    attributeName = attributeName.Substring(1);
-                    reader.Read();
-                    attributeValue = ConvertTokenToXmlValue(reader);
-                    attributeNameValues.Add(attributeName, attributeValue);
-
-                    string namespacePrefix;
-                    if (IsNamespaceAttribute(attributeName, out namespacePrefix))
-                    {
-                      manager.AddNamespace(namespacePrefix, attributeValue);
-                    }
-                    break;
-                  case '$':
-                    attributeName = attributeName.Substring(1);
-                    reader.Read();
-                    attributeValue = reader.Value.ToString();
-
-                    // check that JsonNamespaceUri is in scope
-                    // if it isn't then add it to document and namespace manager
-                    string jsonPrefix = manager.LookupPrefix(JsonNamespaceUri);
-                    if (jsonPrefix == null)
-                    {
-                      // ensure that the prefix used is free
-                      int? i = null;
-                      while (manager.LookupNamespace("json" + i) != null)
-                      {
-                        i = i.GetValueOrDefault() + 1;
-                      }
-                      jsonPrefix = "json" + i;
-
-                      attributeNameValues.Add("xmlns:" + jsonPrefix, JsonNamespaceUri);
-                      manager.AddNamespace(jsonPrefix, JsonNamespaceUri);
-                    }
-
-                    attributeNameValues.Add(jsonPrefix + ":" + attributeName, attributeValue);
-                    break;
-                  default:
-                    finishedAttributes = true;
-                    break;
-                }
-              }
-              else
-              {
-                finishedAttributes = true;
-              }
-
-              break;
-            case JsonToken.EndObject:
-              finishedElement = true;
-              break;
-            default:
-              throw new JsonSerializationException("Unexpected JsonToken: " + reader.TokenType);
-          }
-        }
-      }
-
-      return attributeNameValues;
-    }
-
-    private void CreateInstruction(JsonReader reader, IXmlDocument document, IXmlNode currentNode, string propertyName)
-    {
-      if (propertyName == DeclarationName)
-      {
-        string version = null;
-        string encoding = null;
-        string standalone = null;
-        while (reader.Read() && reader.TokenType != JsonToken.EndObject)
-        {
-          switch (reader.Value.ToString())
-          {
-            case "@version":
-              reader.Read();
-              version = reader.Value.ToString();
-              break;
-            case "@encoding":
-              reader.Read();
-              encoding = reader.Value.ToString();
-              break;
-            case "@standalone":
-              reader.Read();
-              standalone = reader.Value.ToString();
-              break;
-            default:
-              throw new JsonSerializationException("Unexpected property name encountered while deserializing XmlDeclaration: " + reader.Value);
-          }
-        }
-
-        IXmlNode declaration = document.CreateXmlDeclaration(version, encoding, standalone);
-        currentNode.AppendChild(declaration);
-      }
-      else
-      {
-        IXmlNode instruction = document.CreateProcessingInstruction(propertyName.Substring(1), reader.Value.ToString());
-        currentNode.AppendChild(instruction);
-      }
-    }
-
-    private IXmlElement CreateElement(string elementName, IXmlDocument document, string elementPrefix, XmlNamespaceManager manager)
-    {
-      string ns = string.IsNullOrEmpty(elementPrefix) ? manager.DefaultNamespace : manager.LookupNamespace(elementPrefix);
-
-      IXmlElement element = (!string.IsNullOrEmpty(ns)) ? document.CreateElement(elementName, ns) : document.CreateElement(elementName);
-
-      return element;
-    }
-
-    private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
-    {
-      do
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.PropertyName:
-            if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
-              throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
-
-            string propertyName = reader.Value.ToString();
-            reader.Read();
-
-            if (reader.TokenType == JsonToken.StartArray)
-            {
-              int count = 0;
-              while (reader.Read() && reader.TokenType != JsonToken.EndArray)
-              {
-                DeserializeValue(reader, document, manager, propertyName, currentNode);
-                count++;
-              }
-
-              if (count == 1 && WriteArrayAttribute)
-              {
-                IXmlElement arrayElement = currentNode.ChildNodes.CastValid<IXmlElement>().Single(n => n.LocalName == propertyName);
-                AddJsonArrayAttribute(arrayElement, document);
-              }
-            }
-            else
-            {
-              DeserializeValue(reader, document, manager, propertyName, currentNode);
-            }
-            break;
-          case JsonToken.StartConstructor:
-            string constructorName = reader.Value.ToString();
-
-            while (reader.Read() && reader.TokenType != JsonToken.EndConstructor)
-            {
-              DeserializeValue(reader, document, manager, constructorName, currentNode);
-            }
-            break;
-          case JsonToken.Comment:
-            currentNode.AppendChild(document.CreateComment((string)reader.Value));
-            break;
-          case JsonToken.EndObject:
-          case JsonToken.EndArray:
-            return;
-          default:
-            throw new JsonSerializationException("Unexpected JsonToken when deserializing node: " + reader.TokenType);
-        }
-      } while (reader.TokenType == JsonToken.PropertyName || reader.Read());
-      // don't read if current token is a property. token was already read when parsing element attributes
-    }
-
-    /// <summary>
-    /// Checks if the attributeName is a namespace attribute.
-    /// </summary>
-    /// <param name="attributeName">Attribute name to test.</param>
-    /// <param name="prefix">The attribute name prefix if it has one, otherwise an empty string.</param>
-    /// <returns>True if attribute name is for a namespace attribute, otherwise false.</returns>
-    private bool IsNamespaceAttribute(string attributeName, out string prefix)
-    {
-      if (attributeName.StartsWith("xmlns", StringComparison.Ordinal))
-      {
-        if (attributeName.Length == 5)
-        {
-          prefix = string.Empty;
-          return true;
-        }
-        else if (attributeName[5] == ':')
-        {
-          prefix = attributeName.Substring(6, attributeName.Length - 6);
-          return true;
-        }
-      }
-      prefix = null;
-      return false;
-    }
-
-    private IEnumerable<IXmlNode> ValueAttributes(IEnumerable<IXmlNode> c)
-    {
-      return c.Where(a => a.NamespaceUri != JsonNamespaceUri);
-    }
-    #endregion
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified value type.
-    /// </summary>
-    /// <param name="valueType">Type of the value.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool CanConvert(Type valueType)
-    {
-#if !NET20
-      if (typeof(XObject).IsAssignableFrom(valueType))
-        return true;
-#endif
-#if !(SILVERLIGHT || NETFX_CORE)
-      if (typeof(XmlNode).IsAssignableFrom(valueType))
-        return true;
-#endif
-
-      return false;
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if (!SILVERLIGHT || WINDOWS_PHONE)
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Xml;
+#if !NET20
+using System.Xml.Linq;
+#endif
+using Newtonsoft.Json.Utilities;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Converters
+{
+  #region XmlNodeWrappers
+#if !SILVERLIGHT && !NETFX_CORE
+  internal class XmlDocumentWrapper : XmlNodeWrapper, IXmlDocument
+  {
+    private readonly XmlDocument _document;
+
+    public XmlDocumentWrapper(XmlDocument document)
+      : base(document)
+    {
+      _document = document;
+    }
+
+    public IXmlNode CreateComment(string data)
+    {
+      return new XmlNodeWrapper(_document.CreateComment(data));
+    }
+
+    public IXmlNode CreateTextNode(string text)
+    {
+      return new XmlNodeWrapper(_document.CreateTextNode(text));
+    }
+
+    public IXmlNode CreateCDataSection(string data)
+    {
+      return new XmlNodeWrapper(_document.CreateCDataSection(data));
+    }
+
+    public IXmlNode CreateWhitespace(string text)
+    {
+      return new XmlNodeWrapper(_document.CreateWhitespace(text));
+    }
+
+    public IXmlNode CreateSignificantWhitespace(string text)
+    {
+      return new XmlNodeWrapper(_document.CreateSignificantWhitespace(text));
+    }
+
+    public IXmlNode CreateXmlDeclaration(string version, string encoding, string standalone)
+    {
+      return new XmlNodeWrapper(_document.CreateXmlDeclaration(version, encoding, standalone));
+    }
+
+    public IXmlNode CreateProcessingInstruction(string target, string data)
+    {
+      return new XmlNodeWrapper(_document.CreateProcessingInstruction(target, data));
+    }
+
+    public IXmlElement CreateElement(string elementName)
+    {
+      return new XmlElementWrapper(_document.CreateElement(elementName));
+    }
+
+    public IXmlElement CreateElement(string qualifiedName, string namespaceUri)
+    {
+      return new XmlElementWrapper(_document.CreateElement(qualifiedName, namespaceUri));
+    }
+
+    public IXmlNode CreateAttribute(string name, string value)
+    {
+      XmlNodeWrapper attribute = new XmlNodeWrapper(_document.CreateAttribute(name));
+      attribute.Value = value;
+
+      return attribute;
+    }
+
+    public IXmlNode CreateAttribute(string qualifiedName, string namespaceUri, string value)
+    {
+      XmlNodeWrapper attribute = new XmlNodeWrapper(_document.CreateAttribute(qualifiedName, namespaceUri));
+      attribute.Value = value;
+
+      return attribute;
+    }
+
+    public IXmlElement DocumentElement
+    {
+      get
+      {
+        if (_document.DocumentElement == null)
+          return null;
+
+        return new XmlElementWrapper(_document.DocumentElement);
+      }
+    }
+  }
+
+  internal class XmlElementWrapper : XmlNodeWrapper, IXmlElement
+  {
+    private readonly XmlElement _element;
+
+    public XmlElementWrapper(XmlElement element)
+      : base(element)
+    {
+      _element = element;
+    }
+
+    public void SetAttributeNode(IXmlNode attribute)
+    {
+      XmlNodeWrapper xmlAttributeWrapper = (XmlNodeWrapper)attribute;
+
+      _element.SetAttributeNode((XmlAttribute) xmlAttributeWrapper.WrappedNode);
+    }
+
+    public string GetPrefixOfNamespace(string namespaceUri)
+    {
+      return _element.GetPrefixOfNamespace(namespaceUri);
+    }
+  }
+
+  internal class XmlDeclarationWrapper : XmlNodeWrapper, IXmlDeclaration
+  {
+    private readonly XmlDeclaration _declaration;
+
+    public XmlDeclarationWrapper(XmlDeclaration declaration)
+      : base(declaration)
+    {
+      _declaration = declaration;
+    }
+
+    public string Version
+    {
+      get { return _declaration.Version; }
+    }
+
+    public string Encoding
+    {
+      get { return _declaration.Encoding; }
+      set { _declaration.Encoding = value; }
+    }
+
+    public string Standalone
+    {
+      get { return _declaration.Standalone; }
+      set { _declaration.Standalone = value; }
+    }
+  }
+
+  internal class XmlNodeWrapper : IXmlNode
+  {
+    private readonly XmlNode _node;
+
+    public XmlNodeWrapper(XmlNode node)
+    {
+      _node = node;
+    }
+
+    public object WrappedNode
+    {
+      get { return _node; }
+    }
+
+    public XmlNodeType NodeType
+    {
+      get { return _node.NodeType; }
+    }
+
+    public string Name
+    {
+      get { return _node.Name; }
+    }
+
+    public string LocalName
+    {
+      get { return _node.LocalName; }
+    }
+
+    public IList<IXmlNode> ChildNodes
+    {
+      get { return _node.ChildNodes.Cast<XmlNode>().Select(n => WrapNode(n)).ToList(); }
+    }
+
+    private IXmlNode WrapNode(XmlNode node)
+    {
+      switch (node.NodeType)
+      {
+        case XmlNodeType.Element:
+          return new XmlElementWrapper((XmlElement) node);
+        case XmlNodeType.XmlDeclaration:
+          return new XmlDeclarationWrapper((XmlDeclaration) node);
+        default:
+          return new XmlNodeWrapper(node);
+      }
+    }
+
+    public IList<IXmlNode> Attributes
+    {
+      get
+      {
+        if (_node.Attributes == null)
+          return null;
+
+        return _node.Attributes.Cast<XmlAttribute>().Select(a => WrapNode(a)).ToList();
+      }
+    }
+
+    public IXmlNode ParentNode
+    {
+      get
+      {
+        XmlNode node = (_node is XmlAttribute)
+                         ? ((XmlAttribute) _node).OwnerElement
+                         : _node.ParentNode;
+        
+        if (node == null)
+          return null;
+
+        return WrapNode(node);
+      }
+    }
+
+    public string Value
+    {
+      get { return _node.Value; }
+      set { _node.Value = value; }
+    }
+
+    public IXmlNode AppendChild(IXmlNode newChild)
+    {
+      XmlNodeWrapper xmlNodeWrapper = (XmlNodeWrapper) newChild;
+      _node.AppendChild(xmlNodeWrapper._node);
+
+      return newChild;
+    }
+
+    public string Prefix
+    {
+      get { return _node.Prefix; }
+    }
+
+    public string NamespaceUri
+    {
+      get { return _node.NamespaceURI; }
+    }
+  }
+#endif
+  #endregion
+
+  #region Interfaces
+  internal interface IXmlDocument : IXmlNode
+  {
+    IXmlNode CreateComment(string text);
+    IXmlNode CreateTextNode(string text);
+    IXmlNode CreateCDataSection(string data);
+    IXmlNode CreateWhitespace(string text);
+    IXmlNode CreateSignificantWhitespace(string text);
+    IXmlNode CreateXmlDeclaration(string version, string encoding, string standalone);
+    IXmlNode CreateProcessingInstruction(string target, string data);
+    IXmlElement CreateElement(string elementName);
+    IXmlElement CreateElement(string qualifiedName, string namespaceUri);
+    IXmlNode CreateAttribute(string name, string value);
+    IXmlNode CreateAttribute(string qualifiedName, string namespaceUri, string value);
+
+    IXmlElement DocumentElement { get; }
+  }
+
+  internal interface IXmlDeclaration : IXmlNode
+  {
+    string Version { get; }
+    string Encoding { get; set; }
+    string Standalone { get; set; }
+  }
+
+  internal interface IXmlElement : IXmlNode
+  {
+    void SetAttributeNode(IXmlNode attribute);
+    string GetPrefixOfNamespace(string namespaceUri);
+  }
+
+  internal interface IXmlNode
+  {
+    XmlNodeType NodeType { get; }
+    string LocalName { get; }
+    IList<IXmlNode> ChildNodes { get; }
+    IList<IXmlNode> Attributes { get; }
+    IXmlNode ParentNode { get; }
+    string Value { get; set; }
+    IXmlNode AppendChild(IXmlNode newChild);
+    string NamespaceUri { get; }
+    object WrappedNode { get; }
+  }
+  #endregion
+
+  #region XNodeWrappers
+#if !NET20
+  internal class XDeclarationWrapper : XObjectWrapper, IXmlDeclaration
+  {
+    internal XDeclaration Declaration { get; private set; }
+
+    public XDeclarationWrapper(XDeclaration declaration)
+      : base(null)
+    {
+      Declaration = declaration;
+    }
+
+    public override XmlNodeType NodeType
+    {
+      get { return XmlNodeType.XmlDeclaration; }
+    }
+
+    public string Version
+    {
+      get { return Declaration.Version; }
+    }
+
+    public string Encoding
+    {
+      get { return Declaration.Encoding; }
+      set { Declaration.Encoding = value; }
+    }
+
+    public string Standalone
+    {
+      get { return Declaration.Standalone; }
+      set { Declaration.Standalone = value; }
+    }
+  }
+
+  internal class XDocumentWrapper : XContainerWrapper, IXmlDocument
+  {
+    private XDocument Document
+    {
+      get { return (XDocument)WrappedNode; }
+    }
+
+    public XDocumentWrapper(XDocument document)
+      : base(document)
+    {
+    }
+
+    public override IList<IXmlNode> ChildNodes
+    {
+      get
+      {
+        IList<IXmlNode> childNodes = base.ChildNodes;
+
+        if (Document.Declaration != null)
+          childNodes.Insert(0, new XDeclarationWrapper(Document.Declaration));
+
+        return childNodes;
+      }
+    }
+
+    public IXmlNode CreateComment(string text)
+    {
+      return new XObjectWrapper(new XComment(text));
+    }
+
+    public IXmlNode CreateTextNode(string text)
+    {
+      return new XObjectWrapper(new XText(text));
+    }
+
+    public IXmlNode CreateCDataSection(string data)
+    {
+      return new XObjectWrapper(new XCData(data));
+    }
+
+    public IXmlNode CreateWhitespace(string text)
+    {
+      return new XObjectWrapper(new XText(text));
+    }
+
+    public IXmlNode CreateSignificantWhitespace(string text)
+    {
+      return new XObjectWrapper(new XText(text));
+    }
+
+    public IXmlNode CreateXmlDeclaration(string version, string encoding, string standalone)
+    {
+      return new XDeclarationWrapper(new XDeclaration(version, encoding, standalone));
+    }
+
+    public IXmlNode CreateProcessingInstruction(string target, string data)
+    {
+      return new XProcessingInstructionWrapper(new XProcessingInstruction(target, data));
+    }
+
+    public IXmlElement CreateElement(string elementName)
+    {
+      return new XElementWrapper(new XElement(elementName));
+    }
+
+    public IXmlElement CreateElement(string qualifiedName, string namespaceUri)
+    {
+      string localName = MiscellaneousUtils.GetLocalName(qualifiedName);
+      return new XElementWrapper(new XElement(XName.Get(localName, namespaceUri)));
+    }
+
+    public IXmlNode CreateAttribute(string name, string value)
+    {
+      return new XAttributeWrapper(new XAttribute(name, value));
+    }
+
+    public IXmlNode CreateAttribute(string qualifiedName, string namespaceUri, string value)
+    {
+      string localName = MiscellaneousUtils.GetLocalName(qualifiedName);
+      return new XAttributeWrapper(new XAttribute(XName.Get(localName, namespaceUri), value));
+    }
+
+    public IXmlElement DocumentElement
+    {
+      get
+      {
+        if (Document.Root == null)
+          return null;
+
+        return new XElementWrapper(Document.Root);
+      }
+    }
+
+    public override IXmlNode AppendChild(IXmlNode newChild)
+    {
+      XDeclarationWrapper declarationWrapper = newChild as XDeclarationWrapper;
+      if (declarationWrapper != null)
+      {
+        Document.Declaration = declarationWrapper.Declaration;
+        return declarationWrapper;
+      }
+      else
+      {
+        return base.AppendChild(newChild);
+      }
+    }
+  }
+
+  internal class XTextWrapper : XObjectWrapper
+  {
+    private XText Text
+    {
+      get { return (XText)WrappedNode; }
+    }
+
+    public XTextWrapper(XText text)
+      : base(text)
+    {
+    }
+
+    public override string Value
+    {
+      get { return Text.Value; }
+      set { Text.Value = value; }
+    }
+
+    public override IXmlNode ParentNode
+    {
+      get
+      {
+        if (Text.Parent == null)
+          return null;
+        
+        return XContainerWrapper.WrapNode(Text.Parent);
+      }
+    }
+  }
+
+  internal class XCommentWrapper : XObjectWrapper
+  {
+    private XComment Text
+    {
+      get { return (XComment)WrappedNode; }
+    }
+
+    public XCommentWrapper(XComment text)
+      : base(text)
+    {
+    }
+
+    public override string Value
+    {
+      get { return Text.Value; }
+      set { Text.Value = value; }
+    }
+
+    public override IXmlNode ParentNode
+    {
+      get
+      {
+        if (Text.Parent == null)
+          return null;
+
+        return XContainerWrapper.WrapNode(Text.Parent);
+      }
+    }
+  }
+
+  internal class XProcessingInstructionWrapper : XObjectWrapper
+  {
+    private XProcessingInstruction ProcessingInstruction
+    {
+      get { return (XProcessingInstruction)WrappedNode; }
+    }
+
+    public XProcessingInstructionWrapper(XProcessingInstruction processingInstruction)
+      : base(processingInstruction)
+    {
+    }
+
+    public override string LocalName
+    {
+      get { return ProcessingInstruction.Target; }
+    }
+
+    public override string Value
+    {
+      get { return ProcessingInstruction.Data; }
+      set { ProcessingInstruction.Data = value; }
+    }
+  }
+
+  internal class XContainerWrapper : XObjectWrapper
+  {
+    private XContainer Container
+    {
+      get { return (XContainer)WrappedNode; }
+    }
+
+    public XContainerWrapper(XContainer container)
+      : base(container)
+    {
+    }
+
+    public override IList<IXmlNode> ChildNodes
+    {
+      get { return Container.Nodes().Select(n => WrapNode(n)).ToList(); }
+    }
+
+    public override IXmlNode ParentNode
+    {
+      get
+      {
+        if (Container.Parent == null)
+          return null;
+        
+        return WrapNode(Container.Parent);
+      }
+    }
+
+    internal static IXmlNode WrapNode(XObject node)
+    {
+      if (node is XDocument)
+        return new XDocumentWrapper((XDocument)node);
+      else if (node is XElement)
+        return new XElementWrapper((XElement)node);
+      else if (node is XContainer)
+        return new XContainerWrapper((XContainer)node);
+      else if (node is XProcessingInstruction)
+        return new XProcessingInstructionWrapper((XProcessingInstruction)node);
+      else if (node is XText)
+        return new XTextWrapper((XText)node);
+      else if (node is XComment)
+        return new XCommentWrapper((XComment)node);
+      else if (node is XAttribute)
+        return new XAttributeWrapper((XAttribute) node);
+      else
+        return new XObjectWrapper(node);
+    }
+
+    public override IXmlNode AppendChild(IXmlNode newChild)
+    {
+      Container.Add(newChild.WrappedNode);
+      return newChild;
+    }
+  }
+
+  internal class XObjectWrapper : IXmlNode
+  {
+    private readonly XObject _xmlObject;
+
+    public XObjectWrapper(XObject xmlObject)
+    {
+      _xmlObject = xmlObject;
+    }
+
+    public object WrappedNode
+    {
+      get { return _xmlObject; }
+    }
+
+    public virtual XmlNodeType NodeType
+    {
+      get { return _xmlObject.NodeType; }
+    }
+
+    public virtual string LocalName
+    {
+      get { return null; }
+    }
+
+    public virtual IList<IXmlNode> ChildNodes
+    {
+      get { return new List<IXmlNode>(); }
+    }
+
+    public virtual IList<IXmlNode> Attributes
+    {
+      get { return null; }
+    }
+
+    public virtual IXmlNode ParentNode
+    {
+      get { return null; }
+    }
+
+    public virtual string Value
+    {
+      get { return null; }
+      set { throw new InvalidOperationException(); }
+    }
+
+    public virtual IXmlNode AppendChild(IXmlNode newChild)
+    {
+      throw new InvalidOperationException();
+    }
+
+    public virtual string NamespaceUri
+    {
+      get { return null; }
+    }
+  }
+
+  internal class XAttributeWrapper : XObjectWrapper
+  {
+    private XAttribute Attribute
+    {
+      get { return (XAttribute)WrappedNode; }
+    }
+
+    public XAttributeWrapper(XAttribute attribute)
+      : base(attribute)
+    {
+    }
+
+    public override string Value
+    {
+      get { return Attribute.Value; }
+      set { Attribute.Value = value; }
+    }
+
+    public override string LocalName
+    {
+      get { return Attribute.Name.LocalName; }
+    }
+
+    public override string NamespaceUri
+    {
+      get { return Attribute.Name.NamespaceName; }
+    }
+
+    public override IXmlNode ParentNode
+    {
+      get
+      {
+        if (Attribute.Parent == null)
+          return null;
+
+        return XContainerWrapper.WrapNode(Attribute.Parent);
+      }
+    }
+  }
+
+  internal class XElementWrapper : XContainerWrapper, IXmlElement
+  {
+    private XElement Element
+    {
+      get { return (XElement) WrappedNode; }
+    }
+
+    public XElementWrapper(XElement element)
+      : base(element)
+    {
+    }
+
+    public void SetAttributeNode(IXmlNode attribute)
+    {
+      XObjectWrapper wrapper = (XObjectWrapper)attribute;
+      Element.Add(wrapper.WrappedNode);
+    }
+
+    public override IList<IXmlNode> Attributes
+    {
+      get { return Element.Attributes().Select(a => new XAttributeWrapper(a)).Cast<IXmlNode>().ToList(); }
+    }
+
+    public override string Value
+    {
+      get { return Element.Value; }
+      set { Element.Value = value; }
+    }
+
+    public override string LocalName
+    {
+      get { return Element.Name.LocalName; }
+    }
+
+    public override string NamespaceUri
+    {
+      get { return Element.Name.NamespaceName; }
+    }
+
+    public string GetPrefixOfNamespace(string namespaceUri)
+    {
+      return Element.GetPrefixOfNamespace(namespaceUri);
+    }
+  }
+#endif
+  #endregion
+
+  /// <summary>
+  /// Converts XML to and from JSON.
+  /// </summary>
+  public class XmlNodeConverter : JsonConverter
+  {
+    private const string TextName = "#text";
+    private const string CommentName = "#comment";
+    private const string CDataName = "#cdata-section";
+    private const string WhitespaceName = "#whitespace";
+    private const string SignificantWhitespaceName = "#significant-whitespace";
+    private const string DeclarationName = "?xml";
+    private const string JsonNamespaceUri = "http://james.newtonking.com/projects/json";
+
+    /// <summary>
+    /// Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements.
+    /// </summary>
+    /// <value>The name of the deserialize root element.</value>
+    public string DeserializeRootElementName { get; set; }
+
+    /// <summary>
+    /// Gets or sets a flag to indicate whether to write the Json.NET array attribute.
+    /// This attribute helps preserve arrays when converting the written XML back to JSON.
+    /// </summary>
+    /// <value><c>true</c> if the array attibute is written to the XML; otherwise, <c>false</c>.</value>
+    public bool WriteArrayAttribute { get; set; }
+
+    /// <summary>
+    /// Gets or sets a value indicating whether to write the root JSON object.
+    /// </summary>
+    /// <value><c>true</c> if the JSON root object is omitted; otherwise, <c>false</c>.</value>
+    public bool OmitRootObject { get; set; }
+
+    #region Writing
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <param name="value">The value.</param>
+    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+    {
+      IXmlNode node = WrapXml(value);
+
+      XmlNamespaceManager manager = new XmlNamespaceManager(new NameTable());
+      PushParentNamespaces(node, manager);
+
+      if (!OmitRootObject)
+        writer.WriteStartObject();
+
+      SerializeNode(writer, node, manager, !OmitRootObject);
+      
+      if (!OmitRootObject)
+        writer.WriteEndObject();
+    }
+
+    private IXmlNode WrapXml(object value)
+    {
+#if !NET20
+      if (value is XObject)
+        return XContainerWrapper.WrapNode((XObject)value);
+#endif
+#if !(SILVERLIGHT || NETFX_CORE)
+      if (value is XmlNode)
+        return new XmlNodeWrapper((XmlNode)value);
+#endif
+      
+      throw new ArgumentException("Value must be an XML object.", "value");
+    }
+
+    private void PushParentNamespaces(IXmlNode node, XmlNamespaceManager manager)
+    {
+      List<IXmlNode> parentElements = null;
+
+      IXmlNode parent = node;
+      while ((parent = parent.ParentNode) != null)
+      {
+        if (parent.NodeType == XmlNodeType.Element)
+        {
+          if (parentElements == null)
+            parentElements = new List<IXmlNode>();
+
+          parentElements.Add(parent);
+        }
+      }
+
+      if (parentElements != null)
+      {
+        parentElements.Reverse();
+
+        foreach (IXmlNode parentElement in parentElements)
+        {
+          manager.PushScope();
+          foreach (IXmlNode attribute in parentElement.Attributes)
+          {
+            if (attribute.NamespaceUri == "http://www.w3.org/2000/xmlns/" && attribute.LocalName != "xmlns")
+              manager.AddNamespace(attribute.LocalName, attribute.Value);
+          }
+        }
+      }
+    }
+
+    private string ResolveFullName(IXmlNode node, XmlNamespaceManager manager)
+    {
+      string prefix = (node.NamespaceUri == null || (node.LocalName == "xmlns" && node.NamespaceUri == "http://www.w3.org/2000/xmlns/"))
+                        ? null
+                        : manager.LookupPrefix(node.NamespaceUri);
+
+      if (!string.IsNullOrEmpty(prefix))
+        return prefix + ":" + node.LocalName;
+      else
+        return node.LocalName;
+    }
+
+    private string GetPropertyName(IXmlNode node, XmlNamespaceManager manager)
+    {
+      switch (node.NodeType)
+      {
+        case XmlNodeType.Attribute:
+          if (node.NamespaceUri == JsonNamespaceUri)
+            return "$" + node.LocalName;
+          else
+            return "@" + ResolveFullName(node, manager);
+        case XmlNodeType.CDATA:
+          return CDataName;
+        case XmlNodeType.Comment:
+          return CommentName;
+        case XmlNodeType.Element:
+          return ResolveFullName(node, manager);
+        case XmlNodeType.ProcessingInstruction:
+          return "?" + ResolveFullName(node, manager);
+        case XmlNodeType.XmlDeclaration:
+          return DeclarationName;
+        case XmlNodeType.SignificantWhitespace:
+          return SignificantWhitespaceName;
+        case XmlNodeType.Text:
+          return TextName;
+        case XmlNodeType.Whitespace:
+          return WhitespaceName;
+        default:
+          throw new JsonSerializationException("Unexpected XmlNodeType when getting node name: " + node.NodeType);
+      }
+    }
+
+    private bool IsArray(IXmlNode node)
+    {
+      IXmlNode jsonArrayAttribute = (node.Attributes != null)
+                                      ? node.Attributes.SingleOrDefault(a => a.LocalName == "Array" && a.NamespaceUri == JsonNamespaceUri)
+                                      : null;
+      
+      return (jsonArrayAttribute != null && XmlConvert.ToBoolean(jsonArrayAttribute.Value));
+    }
+
+    private void SerializeGroupedNodes(JsonWriter writer, IXmlNode node, XmlNamespaceManager manager, bool writePropertyName)
+    {
+      // group nodes together by name
+      Dictionary<string, List<IXmlNode>> nodesGroupedByName = new Dictionary<string, List<IXmlNode>>();
+
+      for (int i = 0; i < node.ChildNodes.Count; i++)
+      {
+        IXmlNode childNode = node.ChildNodes[i];
+        string nodeName = GetPropertyName(childNode, manager);
+
+        List<IXmlNode> nodes;
+        if (!nodesGroupedByName.TryGetValue(nodeName, out nodes))
+        {
+          nodes = new List<IXmlNode>();
+          nodesGroupedByName.Add(nodeName, nodes);
+        }
+
+        nodes.Add(childNode);
+      }
+
+      // loop through grouped nodes. write single name instances as normal,
+      // write multiple names together in an array
+      foreach (KeyValuePair<string, List<IXmlNode>> nodeNameGroup in nodesGroupedByName)
+      {
+        List<IXmlNode> groupedNodes = nodeNameGroup.Value;
+        bool writeArray;
+
+        if (groupedNodes.Count == 1)
+        {
+          writeArray = IsArray(groupedNodes[0]);
+        }
+        else
+        {
+          writeArray = true;
+        }
+
+        if (!writeArray)
+        {
+          SerializeNode(writer, groupedNodes[0], manager, writePropertyName);
+        }
+        else
+        {
+          string elementNames = nodeNameGroup.Key;
+
+          if (writePropertyName)
+            writer.WritePropertyName(elementNames);
+
+          writer.WriteStartArray();
+
+          for (int i = 0; i < groupedNodes.Count; i++)
+          {
+            SerializeNode(writer, groupedNodes[i], manager, false);
+          }
+
+          writer.WriteEndArray();
+        }
+      }
+    }
+
+    private void SerializeNode(JsonWriter writer, IXmlNode node, XmlNamespaceManager manager, bool writePropertyName)
+    {
+      switch (node.NodeType)
+      {
+        case XmlNodeType.Document:
+        case XmlNodeType.DocumentFragment:
+          SerializeGroupedNodes(writer, node, manager, writePropertyName);
+          break;
+        case XmlNodeType.Element:
+          if (IsArray(node) && node.ChildNodes.All(n => n.LocalName == node.LocalName) && node.ChildNodes.Count > 0)
+          {
+            SerializeGroupedNodes(writer, node, manager, false);
+          }
+          else
+          {
+            foreach (IXmlNode attribute in node.Attributes)
+            {
+              if (attribute.NamespaceUri == "http://www.w3.org/2000/xmlns/")
+              {
+                string prefix = (attribute.LocalName != "xmlns")
+                                  ? attribute.LocalName
+                                  : string.Empty;
+
+                manager.AddNamespace(prefix, attribute.Value);
+              }
+            }
+
+            if (writePropertyName)
+              writer.WritePropertyName(GetPropertyName(node, manager));
+
+            if (!ValueAttributes(node.Attributes).Any() && node.ChildNodes.Count == 1
+                && node.ChildNodes[0].NodeType == XmlNodeType.Text)
+            {
+              // write elements with a single text child as a name value pair
+              writer.WriteValue(node.ChildNodes[0].Value);
+            }
+            else if (node.ChildNodes.Count == 0 && CollectionUtils.IsNullOrEmpty(node.Attributes))
+            {
+              // empty element
+              writer.WriteNull();
+            }
+            else
+            {
+              writer.WriteStartObject();
+
+              for (int i = 0; i < node.Attributes.Count; i++)
+              {
+                SerializeNode(writer, node.Attributes[i], manager, true);
+              }
+
+              SerializeGroupedNodes(writer, node, manager, true);
+
+              writer.WriteEndObject();
+            }
+          }
+
+          break;
+        case XmlNodeType.Comment:
+          if (writePropertyName)
+            writer.WriteComment(node.Value);
+          break;
+        case XmlNodeType.Attribute:
+        case XmlNodeType.Text:
+        case XmlNodeType.CDATA:
+        case XmlNodeType.ProcessingInstruction:
+        case XmlNodeType.Whitespace:
+        case XmlNodeType.SignificantWhitespace:
+          if (node.NamespaceUri == "http://www.w3.org/2000/xmlns/" && node.Value == JsonNamespaceUri)
+            return;
+
+          if (node.NamespaceUri == JsonNamespaceUri)
+          {
+            if (node.LocalName == "Array")
+              return;
+          }
+
+          if (writePropertyName)
+            writer.WritePropertyName(GetPropertyName(node, manager));
+          writer.WriteValue(node.Value);
+          break;
+        case XmlNodeType.XmlDeclaration:
+          IXmlDeclaration declaration = (IXmlDeclaration)node;
+          writer.WritePropertyName(GetPropertyName(node, manager));
+          writer.WriteStartObject();
+
+          if (!string.IsNullOrEmpty(declaration.Version))
+          {
+            writer.WritePropertyName("@version");
+            writer.WriteValue(declaration.Version);
+          }
+          if (!string.IsNullOrEmpty(declaration.Encoding))
+          {
+            writer.WritePropertyName("@encoding");
+            writer.WriteValue(declaration.Encoding);
+          }
+          if (!string.IsNullOrEmpty(declaration.Standalone))
+          {
+            writer.WritePropertyName("@standalone");
+            writer.WriteValue(declaration.Standalone);
+          }
+
+          writer.WriteEndObject();
+          break;
+        default:
+          throw new JsonSerializationException("Unexpected XmlNodeType when serializing nodes: " + node.NodeType);
+      }
+    }
+    #endregion
+
+    #region Reading
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+    {
+      XmlNamespaceManager manager = new XmlNamespaceManager(new NameTable());
+      IXmlDocument document = null;
+      IXmlNode rootNode = null;
+
+#if !NET20
+      if (typeof(XObject).IsAssignableFrom(objectType))
+      {
+        if (objectType != typeof (XDocument) && objectType != typeof (XElement))
+          throw new JsonSerializationException("XmlNodeConverter only supports deserializing XDocument or XElement.");
+
+        XDocument d = new XDocument();
+        document = new XDocumentWrapper(d);
+        rootNode = document;
+      }
+#endif
+#if !(SILVERLIGHT || NETFX_CORE)
+      if (typeof(XmlNode).IsAssignableFrom(objectType))
+      {
+        if (objectType != typeof (XmlDocument))
+          throw new JsonSerializationException("XmlNodeConverter only supports deserializing XmlDocuments");
+
+        XmlDocument d = new XmlDocument();
+        document = new XmlDocumentWrapper(d);
+        rootNode = document;
+      }
+#endif
+      
+      if (document == null || rootNode == null)
+        throw new JsonSerializationException("Unexpected type when converting XML: " + objectType);
+
+      if (reader.TokenType != JsonToken.StartObject)
+        throw new JsonSerializationException("XmlNodeConverter can only convert JSON that begins with an object.");
+
+      if (!string.IsNullOrEmpty(DeserializeRootElementName))
+      {
+        //rootNode = document.CreateElement(DeserializeRootElementName);
+        //document.AppendChild(rootNode);
+        ReadElement(reader, document, rootNode, DeserializeRootElementName, manager);
+      }
+      else
+      {
+        reader.Read();
+        DeserializeNode(reader, document, manager, rootNode);
+      }
+
+#if !NET20
+      if (objectType == typeof(XElement))
+      {
+        XElement element = (XElement)document.DocumentElement.WrappedNode;
+        element.Remove();
+
+        return element;
+      }
+#endif
+
+      return document.WrappedNode;
+    }
+
+    private void DeserializeValue(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, string propertyName, IXmlNode currentNode)
+    {
+      switch (propertyName)
+      {
+        case TextName:
+          currentNode.AppendChild(document.CreateTextNode(reader.Value.ToString()));
+          break;
+        case CDataName:
+          currentNode.AppendChild(document.CreateCDataSection(reader.Value.ToString()));
+          break;
+        case WhitespaceName:
+          currentNode.AppendChild(document.CreateWhitespace(reader.Value.ToString()));
+          break;
+        case SignificantWhitespaceName:
+          currentNode.AppendChild(document.CreateSignificantWhitespace(reader.Value.ToString()));
+          break;
+        default:
+          // processing instructions and the xml declaration start with ?
+          if (!string.IsNullOrEmpty(propertyName) && propertyName[0] == '?')
+          {
+            CreateInstruction(reader, document, currentNode, propertyName);
+          }
+          else
+          {
+            if (reader.TokenType == JsonToken.StartArray)
+            {
+              // handle nested arrays
+              ReadArrayElements(reader, document, propertyName, currentNode, manager);
+              return;
+            }
+
+            // have to wait until attributes have been parsed before creating element
+            // attributes may contain namespace info used by the element
+            ReadElement(reader, document, currentNode, propertyName, manager);
+          }
+          break;
+      }
+    }
+
+    private void ReadElement(JsonReader reader, IXmlDocument document, IXmlNode currentNode, string propertyName, XmlNamespaceManager manager)
+    {
+      if (string.IsNullOrEmpty(propertyName))
+        throw new JsonSerializationException("XmlNodeConverter cannot convert JSON with an empty property name to XML.");
+
+      Dictionary<string, string> attributeNameValues = ReadAttributeElements(reader, manager);
+
+      string elementPrefix = MiscellaneousUtils.GetPrefix(propertyName);
+
+      IXmlElement element = CreateElement(propertyName, document, elementPrefix, manager);
+
+      currentNode.AppendChild(element);
+
+      // add attributes to newly created element
+      foreach (KeyValuePair<string, string> nameValue in attributeNameValues)
+      {
+        string attributePrefix = MiscellaneousUtils.GetPrefix(nameValue.Key);
+
+        IXmlNode attribute = (!string.IsNullOrEmpty(attributePrefix))
+                               ? document.CreateAttribute(nameValue.Key, manager.LookupNamespace(attributePrefix), nameValue.Value)
+                               : document.CreateAttribute(nameValue.Key, nameValue.Value);
+
+        element.SetAttributeNode(attribute);
+      }
+
+      if (reader.TokenType == JsonToken.String
+        || reader.TokenType == JsonToken.Integer
+        || reader.TokenType == JsonToken.Float
+        || reader.TokenType == JsonToken.Boolean
+        || reader.TokenType == JsonToken.Date)
+      {
+        element.AppendChild(document.CreateTextNode(ConvertTokenToXmlValue(reader)));
+      }
+      else if (reader.TokenType == JsonToken.Null)
+      {
+        // empty element. do nothing
+      }
+      else
+      {
+        // finished element will have no children to deserialize
+        if (reader.TokenType != JsonToken.EndObject)
+        {
+          manager.PushScope();
+
+          DeserializeNode(reader, document, manager, element);
+
+          manager.PopScope();
+        }
+      }
+    }
+
+    private string ConvertTokenToXmlValue(JsonReader reader)
+    {
+      if (reader.TokenType == JsonToken.String)
+      {
+        return reader.Value.ToString();
+      }
+      else if (reader.TokenType == JsonToken.Integer)
+      {
+        return XmlConvert.ToString(Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture));
+      }
+      else if (reader.TokenType == JsonToken.Float)
+      {
+        return XmlConvert.ToString(Convert.ToDouble(reader.Value, CultureInfo.InvariantCulture));
+      }
+      else if (reader.TokenType == JsonToken.Boolean)
+      {
+        return XmlConvert.ToString(Convert.ToBoolean(reader.Value, CultureInfo.InvariantCulture));
+      }
+      else if (reader.TokenType == JsonToken.Date)
+      {
+        DateTime d = Convert.ToDateTime(reader.Value, CultureInfo.InvariantCulture);
+#if !NETFX_CORE
+        return XmlConvert.ToString(d, DateTimeUtils.ToSerializationMode(d.Kind));
+#else
+        return XmlConvert.ToString(d);
+#endif   
+      }
+      else if (reader.TokenType == JsonToken.Null)
+      {
+        return null;
+      }
+      else
+      {
+        throw new Exception("Cannot get an XML string value from token type '{0}'.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+      }
+    }
+
+    private void ReadArrayElements(JsonReader reader, IXmlDocument document, string propertyName, IXmlNode currentNode, XmlNamespaceManager manager)
+    {
+      string elementPrefix = MiscellaneousUtils.GetPrefix(propertyName);
+
+      IXmlElement nestedArrayElement = CreateElement(propertyName, document, elementPrefix, manager);
+
+      currentNode.AppendChild(nestedArrayElement);
+
+      int count = 0;
+      while (reader.Read() && reader.TokenType != JsonToken.EndArray)
+      {
+        DeserializeValue(reader, document, manager, propertyName, nestedArrayElement);
+        count++;
+      }
+
+      if (WriteArrayAttribute)
+      {
+        AddJsonArrayAttribute(nestedArrayElement, document);
+      }
+
+      if (count == 1 && WriteArrayAttribute)
+      {
+        IXmlElement arrayElement = nestedArrayElement.ChildNodes.CastValid<IXmlElement>().Single(n => n.LocalName == propertyName);
+        AddJsonArrayAttribute(arrayElement, document);
+      }
+    }
+
+    private void AddJsonArrayAttribute(IXmlElement element, IXmlDocument document)
+    {
+      element.SetAttributeNode(document.CreateAttribute("json:Array", JsonNamespaceUri, "true"));
+
+#if !NET20
+      // linq to xml doesn't automatically include prefixes via the namespace manager
+      if (element is XElementWrapper)
+      {
+        if (element.GetPrefixOfNamespace(JsonNamespaceUri) == null)
+        {
+          element.SetAttributeNode(document.CreateAttribute("xmlns:json", "http://www.w3.org/2000/xmlns/", JsonNamespaceUri));
+        }
+      }
+#endif
+    }
+
+    private Dictionary<string, string> ReadAttributeElements(JsonReader reader, XmlNamespaceManager manager)
+    {
+      Dictionary<string, string> attributeNameValues = new Dictionary<string, string>();
+      bool finishedAttributes = false;
+      bool finishedElement = false;
+
+      // a string token means the element only has a single text child
+      if (reader.TokenType != JsonToken.String
+          && reader.TokenType != JsonToken.Null
+          && reader.TokenType != JsonToken.Boolean
+          && reader.TokenType != JsonToken.Integer
+          && reader.TokenType != JsonToken.Float
+          && reader.TokenType != JsonToken.Date
+          && reader.TokenType != JsonToken.StartConstructor)
+      {
+        // read properties until first non-attribute is encountered
+        while (!finishedAttributes && !finishedElement && reader.Read())
+        {
+          switch (reader.TokenType)
+          {
+            case JsonToken.PropertyName:
+              string attributeName = reader.Value.ToString();
+
+              if (!string.IsNullOrEmpty(attributeName))
+              {
+                char firstChar = attributeName[0];
+                string attributeValue;
+
+                switch (firstChar)
+                {
+                  case '@':
+                    attributeName = attributeName.Substring(1);
+                    reader.Read();
+                    attributeValue = ConvertTokenToXmlValue(reader);
+                    attributeNameValues.Add(attributeName, attributeValue);
+
+                    string namespacePrefix;
+                    if (IsNamespaceAttribute(attributeName, out namespacePrefix))
+                    {
+                      manager.AddNamespace(namespacePrefix, attributeValue);
+                    }
+                    break;
+                  case '$':
+                    attributeName = attributeName.Substring(1);
+                    reader.Read();
+                    attributeValue = reader.Value.ToString();
+
+                    // check that JsonNamespaceUri is in scope
+                    // if it isn't then add it to document and namespace manager
+                    string jsonPrefix = manager.LookupPrefix(JsonNamespaceUri);
+                    if (jsonPrefix == null)
+                    {
+                      // ensure that the prefix used is free
+                      int? i = null;
+                      while (manager.LookupNamespace("json" + i) != null)
+                      {
+                        i = i.GetValueOrDefault() + 1;
+                      }
+                      jsonPrefix = "json" + i;
+
+                      attributeNameValues.Add("xmlns:" + jsonPrefix, JsonNamespaceUri);
+                      manager.AddNamespace(jsonPrefix, JsonNamespaceUri);
+                    }
+
+                    attributeNameValues.Add(jsonPrefix + ":" + attributeName, attributeValue);
+                    break;
+                  default:
+                    finishedAttributes = true;
+                    break;
+                }
+              }
+              else
+              {
+                finishedAttributes = true;
+              }
+
+              break;
+            case JsonToken.EndObject:
+              finishedElement = true;
+              break;
+            default:
+              throw new JsonSerializationException("Unexpected JsonToken: " + reader.TokenType);
+          }
+        }
+      }
+
+      return attributeNameValues;
+    }
+
+    private void CreateInstruction(JsonReader reader, IXmlDocument document, IXmlNode currentNode, string propertyName)
+    {
+      if (propertyName == DeclarationName)
+      {
+        string version = null;
+        string encoding = null;
+        string standalone = null;
+        while (reader.Read() && reader.TokenType != JsonToken.EndObject)
+        {
+          switch (reader.Value.ToString())
+          {
+            case "@version":
+              reader.Read();
+              version = reader.Value.ToString();
+              break;
+            case "@encoding":
+              reader.Read();
+              encoding = reader.Value.ToString();
+              break;
+            case "@standalone":
+              reader.Read();
+              standalone = reader.Value.ToString();
+              break;
+            default:
+              throw new JsonSerializationException("Unexpected property name encountered while deserializing XmlDeclaration: " + reader.Value);
+          }
+        }
+
+        IXmlNode declaration = document.CreateXmlDeclaration(version, encoding, standalone);
+        currentNode.AppendChild(declaration);
+      }
+      else
+      {
+        IXmlNode instruction = document.CreateProcessingInstruction(propertyName.Substring(1), reader.Value.ToString());
+        currentNode.AppendChild(instruction);
+      }
+    }
+
+    private IXmlElement CreateElement(string elementName, IXmlDocument document, string elementPrefix, XmlNamespaceManager manager)
+    {
+      string ns = string.IsNullOrEmpty(elementPrefix) ? manager.DefaultNamespace : manager.LookupNamespace(elementPrefix);
+
+      IXmlElement element = (!string.IsNullOrEmpty(ns)) ? document.CreateElement(elementName, ns) : document.CreateElement(elementName);
+
+      return element;
+    }
+
+    private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
+    {
+      do
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.PropertyName:
+            if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
+              throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
+
+            string propertyName = reader.Value.ToString();
+            reader.Read();
+
+            if (reader.TokenType == JsonToken.StartArray)
+            {
+              int count = 0;
+              while (reader.Read() && reader.TokenType != JsonToken.EndArray)
+              {
+                DeserializeValue(reader, document, manager, propertyName, currentNode);
+                count++;
+              }
+
+              if (count == 1 && WriteArrayAttribute)
+              {
+                IXmlElement arrayElement = currentNode.ChildNodes.CastValid<IXmlElement>().Single(n => n.LocalName == propertyName);
+                AddJsonArrayAttribute(arrayElement, document);
+              }
+            }
+            else
+            {
+              DeserializeValue(reader, document, manager, propertyName, currentNode);
+            }
+            break;
+          case JsonToken.StartConstructor:
+            string constructorName = reader.Value.ToString();
+
+            while (reader.Read() && reader.TokenType != JsonToken.EndConstructor)
+            {
+              DeserializeValue(reader, document, manager, constructorName, currentNode);
+            }
+            break;
+          case JsonToken.Comment:
+            currentNode.AppendChild(document.CreateComment((string)reader.Value));
+            break;
+          case JsonToken.EndObject:
+          case JsonToken.EndArray:
+            return;
+          default:
+            throw new JsonSerializationException("Unexpected JsonToken when deserializing node: " + reader.TokenType);
+        }
+      } while (reader.TokenType == JsonToken.PropertyName || reader.Read());
+      // don't read if current token is a property. token was already read when parsing element attributes
+    }
+
+    /// <summary>
+    /// Checks if the attributeName is a namespace attribute.
+    /// </summary>
+    /// <param name="attributeName">Attribute name to test.</param>
+    /// <param name="prefix">The attribute name prefix if it has one, otherwise an empty string.</param>
+    /// <returns>True if attribute name is for a namespace attribute, otherwise false.</returns>
+    private bool IsNamespaceAttribute(string attributeName, out string prefix)
+    {
+      if (attributeName.StartsWith("xmlns", StringComparison.Ordinal))
+      {
+        if (attributeName.Length == 5)
+        {
+          prefix = string.Empty;
+          return true;
+        }
+        else if (attributeName[5] == ':')
+        {
+          prefix = attributeName.Substring(6, attributeName.Length - 6);
+          return true;
+        }
+      }
+      prefix = null;
+      return false;
+    }
+
+    private IEnumerable<IXmlNode> ValueAttributes(IEnumerable<IXmlNode> c)
+    {
+      return c.Where(a => a.NamespaceUri != JsonNamespaceUri);
+    }
+    #endregion
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified value type.
+    /// </summary>
+    /// <param name="valueType">Type of the value.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool CanConvert(Type valueType)
+    {
+#if !NET20
+      if (typeof(XObject).IsAssignableFrom(valueType))
+        return true;
+#endif
+#if !(SILVERLIGHT || NETFX_CORE)
+      if (typeof(XmlNode).IsAssignableFrom(valueType))
+        return true;
+#endif
+
+      return false;
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/DefaultValueHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/DefaultValueHandling.cs
@@ -1,56 +1,56 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies default value handling options for the <see cref="JsonSerializer"/>.
-  /// </summary>
-  [Flags]
-  public enum DefaultValueHandling
-  {
-    /// <summary>
-    /// Include members where the member value is the same as the member's default value when serializing objects.
-    /// Included members are written to JSON. Has no effect when deserializing.
-    /// </summary>
-    Include = 0,
-    /// <summary>
-    /// Ignore members where the member value is the same as the member's default value when serializing objects
-    /// so that is is not written to JSON, and ignores setting members when the JSON value equals the member's default value.
-    /// </summary>
-    Ignore = 1,
-    /// <summary>
-    /// Members with a default value but no JSON will be set to their default value when deserializing.
-    /// </summary>
-    Populate = 2,
-    /// <summary>
-    /// Ignore members where the member value is the same as the member's default value when serializing objects
-    /// and sets members to their default value when deserializing.
-    /// </summary>
-    IgnoreAndPopulate = Ignore | Populate
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies default value handling options for the <see cref="JsonSerializer"/>.
+  /// </summary>
+  [Flags]
+  public enum DefaultValueHandling
+  {
+    /// <summary>
+    /// Include members where the member value is the same as the member's default value when serializing objects.
+    /// Included members are written to JSON. Has no effect when deserializing.
+    /// </summary>
+    Include = 0,
+    /// <summary>
+    /// Ignore members where the member value is the same as the member's default value when serializing objects
+    /// so that is is not written to JSON, and ignores setting members when the JSON value equals the member's default value.
+    /// </summary>
+    Ignore = 1,
+    /// <summary>
+    /// Members with a default value but no JSON will be set to their default value when deserializing.
+    /// </summary>
+    Populate = 2,
+    /// <summary>
+    /// Ignore members where the member value is the same as the member's default value when serializing objects
+    /// and sets members to their default value when deserializing.
+    /// </summary>
+    IgnoreAndPopulate = Ignore | Populate
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/FormatterAssemblyStyle.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/FormatterAssemblyStyle.cs
@@ -1,19 +1,19 @@
-﻿#if SILVERLIGHT || PocketPC || NETFX_CORE
-namespace System.Runtime.Serialization.Formatters
-{
-  /// <summary>
-  /// Indicates the method that will be used during deserialization for locating and loading assemblies.
-  /// </summary>
-  public enum FormatterAssemblyStyle
-  {
-    /// <summary>
-    /// In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly.
-    /// </summary>
-    Simple,
-    /// <summary>
-    /// In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly.
-    /// </summary>
-    Full
-  }
-}
+﻿#if SILVERLIGHT || PocketPC || NETFX_CORE
+namespace System.Runtime.Serialization.Formatters
+{
+  /// <summary>
+  /// Indicates the method that will be used during deserialization for locating and loading assemblies.
+  /// </summary>
+  public enum FormatterAssemblyStyle
+  {
+    /// <summary>
+    /// In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method is used to load the assembly.
+    /// </summary>
+    Simple,
+    /// <summary>
+    /// In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the Assembly class is used to load the assembly.
+    /// </summary>
+    Full
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/IJsonLineInfo.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/IJsonLineInfo.cs
@@ -1,27 +1,27 @@
-﻿namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Provides an interface to enable a class to return line and position information.
-  /// </summary>
-  public interface IJsonLineInfo
-  {
-    /// <summary>
-    /// Gets a value indicating whether the class can return line information.
-    /// </summary>
-    /// <returns>
-    /// 	<c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>.
-    /// </returns>
-    bool HasLineInfo();
-
-    /// <summary>
-    /// Gets the current line number.
-    /// </summary>
-    /// <value>The current line number or 0 if no line information is available (for example, HasLineInfo returns false).</value>
-    int LineNumber { get; }
-    /// <summary>
-    /// Gets the current line position.
-    /// </summary>
-    /// <value>The current line position or 0 if no line information is available (for example, HasLineInfo returns false).</value>
-    int LinePosition { get; }
-  }
+﻿namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Provides an interface to enable a class to return line and position information.
+  /// </summary>
+  public interface IJsonLineInfo
+  {
+    /// <summary>
+    /// Gets a value indicating whether the class can return line information.
+    /// </summary>
+    /// <returns>
+    /// 	<c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>.
+    /// </returns>
+    bool HasLineInfo();
+
+    /// <summary>
+    /// Gets the current line number.
+    /// </summary>
+    /// <value>The current line number or 0 if no line information is available (for example, HasLineInfo returns false).</value>
+    int LineNumber { get; }
+    /// <summary>
+    /// Gets the current line position.
+    /// </summary>
+    /// <value>The current line position or 0 if no line information is available (for example, HasLineInfo returns false).</value>
+    int LinePosition { get; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonArrayAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonArrayAttribute.cs
@@ -1,73 +1,73 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Instructs the <see cref="JsonSerializer"/> how to serialize the collection.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)]
-  public sealed class JsonArrayAttribute : JsonContainerAttribute
-  {
-    private bool _allowNullItems;
-
-    /// <summary>
-    /// Gets or sets a value indicating whether null items are allowed in the collection.
-    /// </summary>
-    /// <value><c>true</c> if null items are allowed in the collection; otherwise, <c>false</c>.</value>
-    public bool AllowNullItems
-    {
-      get { return _allowNullItems; }
-      set { _allowNullItems = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonArrayAttribute"/> class.
-    /// </summary>
-    public JsonArrayAttribute()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class with a flag indicating whether the array can contain null items
-    /// </summary>
-    /// <param name="allowNullItems">A flag indicating whether the array can contain null items.</param>
-    public JsonArrayAttribute(bool allowNullItems)
-    {
-      _allowNullItems = allowNullItems;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonArrayAttribute"/> class with the specified container Id.
-    /// </summary>
-    /// <param name="id">The container Id.</param>
-    public JsonArrayAttribute(string id)
-      : base(id)
-    {
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Instructs the <see cref="JsonSerializer"/> how to serialize the collection.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)]
+  public sealed class JsonArrayAttribute : JsonContainerAttribute
+  {
+    private bool _allowNullItems;
+
+    /// <summary>
+    /// Gets or sets a value indicating whether null items are allowed in the collection.
+    /// </summary>
+    /// <value><c>true</c> if null items are allowed in the collection; otherwise, <c>false</c>.</value>
+    public bool AllowNullItems
+    {
+      get { return _allowNullItems; }
+      set { _allowNullItems = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonArrayAttribute"/> class.
+    /// </summary>
+    public JsonArrayAttribute()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class with a flag indicating whether the array can contain null items
+    /// </summary>
+    /// <param name="allowNullItems">A flag indicating whether the array can contain null items.</param>
+    public JsonArrayAttribute(bool allowNullItems)
+    {
+      _allowNullItems = allowNullItems;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonArrayAttribute"/> class with the specified container Id.
+    /// </summary>
+    /// <param name="id">The container Id.</param>
+    public JsonArrayAttribute(string id)
+      : base(id)
+    {
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConstructorAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConstructorAttribute.cs
@@ -1,12 +1,12 @@
-﻿using System;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Instructs the <see cref="JsonSerializer"/> to use the specified constructor when deserializing that object.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false)]
-  public sealed class JsonConstructorAttribute : Attribute
-  {
-  }
+﻿using System;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Instructs the <see cref="JsonSerializer"/> to use the specified constructor when deserializing that object.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false)]
+  public sealed class JsonConstructorAttribute : Attribute
+  {
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonContainerAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonContainerAttribute.cs
@@ -1,84 +1,84 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Instructs the <see cref="JsonSerializer"/> how to serialize the object.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)]
-  public abstract class JsonContainerAttribute : Attribute
-  {
-    /// <summary>
-    /// Gets or sets the id.
-    /// </summary>
-    /// <value>The id.</value>
-    public string Id { get; set; }
-    /// <summary>
-    /// Gets or sets the title.
-    /// </summary>
-    /// <value>The title.</value>
-    public string Title { get; set; }
-    /// <summary>
-    /// Gets or sets the description.
-    /// </summary>
-    /// <value>The description.</value>
-    public string Description { get; set; }
-
-    // yuck. can't set nullable properties on an attribute in C#
-    // have to use this approach to get an unset default state
-    internal bool? _isReference;
-
-    /// <summary>
-    /// Gets or sets a value that indicates whether to preserve object reference data.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> to keep object reference; otherwise, <c>false</c>. The default is <c>false</c>.
-    /// </value>
-    public bool IsReference
-    {
-      get { return _isReference ?? default(bool); }
-      set { _isReference = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonContainerAttribute"/> class.
-    /// </summary>
-    protected JsonContainerAttribute()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonContainerAttribute"/> class with the specified container Id.
-    /// </summary>
-    /// <param name="id">The container Id.</param>
-    protected JsonContainerAttribute(string id)
-    {
-      Id = id;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Instructs the <see cref="JsonSerializer"/> how to serialize the object.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)]
+  public abstract class JsonContainerAttribute : Attribute
+  {
+    /// <summary>
+    /// Gets or sets the id.
+    /// </summary>
+    /// <value>The id.</value>
+    public string Id { get; set; }
+    /// <summary>
+    /// Gets or sets the title.
+    /// </summary>
+    /// <value>The title.</value>
+    public string Title { get; set; }
+    /// <summary>
+    /// Gets or sets the description.
+    /// </summary>
+    /// <value>The description.</value>
+    public string Description { get; set; }
+
+    // yuck. can't set nullable properties on an attribute in C#
+    // have to use this approach to get an unset default state
+    internal bool? _isReference;
+
+    /// <summary>
+    /// Gets or sets a value that indicates whether to preserve object reference data.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> to keep object reference; otherwise, <c>false</c>. The default is <c>false</c>.
+    /// </value>
+    public bool IsReference
+    {
+      get { return _isReference ?? default(bool); }
+      set { _isReference = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonContainerAttribute"/> class.
+    /// </summary>
+    protected JsonContainerAttribute()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonContainerAttribute"/> class with the specified container Id.
+    /// </summary>
+    /// <param name="id">The container Id.</param>
+    protected JsonContainerAttribute(string id)
+    {
+      Id = id;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConvert.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConvert.cs
@@ -1,1204 +1,1204 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.IO;
-using System.Globalization;
-#if !(NET20 || NET35 || SILVERLIGHT)
-using System.Threading.Tasks;
-#endif
-using Newtonsoft.Json.Utilities;
-using System.Xml;
-using Newtonsoft.Json.Converters;
-using System.Text;
-#if !NET20 && (!SILVERLIGHT || WINDOWS_PHONE)
-using System.Xml.Linq;
-#endif
-#if NETFX_CORE
-using IConvertible = Newtonsoft.Json.Utilities.Convertible;
-#endif
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Provides methods for converting between common language runtime types and JSON types.
-  /// </summary>
-  public static class JsonConvert
-  {
-    /// <summary>
-    /// Represents JavaScript's boolean value true as a string. This field is read-only.
-    /// </summary>
-    public static readonly string True = "true";
-
-    /// <summary>
-    /// Represents JavaScript's boolean value false as a string. This field is read-only.
-    /// </summary>
-    public static readonly string False = "false";
-
-    /// <summary>
-    /// Represents JavaScript's null as a string. This field is read-only.
-    /// </summary>
-    public static readonly string Null = "null";
-
-    /// <summary>
-    /// Represents JavaScript's undefined as a string. This field is read-only.
-    /// </summary>
-    public static readonly string Undefined = "undefined";
-
-    /// <summary>
-    /// Represents JavaScript's positive infinity as a string. This field is read-only.
-    /// </summary>
-    public static readonly string PositiveInfinity = "Infinity";
-
-    /// <summary>
-    /// Represents JavaScript's negative infinity as a string. This field is read-only.
-    /// </summary>
-    public static readonly string NegativeInfinity = "-Infinity";
-
-    /// <summary>
-    /// Represents JavaScript's NaN as a string. This field is read-only.
-    /// </summary>
-    public static readonly string NaN = "NaN";
-
-    internal static readonly long InitialJavaScriptDateTicks = 621355968000000000;
-
-    /// <summary>
-    /// Converts the <see cref="DateTime"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="DateTime"/>.</returns>
-    public static string ToString(DateTime value)
-    {
-      return ToString(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.RoundtripKind);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="DateTime"/> to its JSON string representation using the <see cref="DateFormatHandling"/> specified.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <param name="format">The format the date will be converted to.</param>
-    /// <param name="timeZoneHandling">The time zone handling when the date is converted to a string.</param>
-    /// <returns>A JSON string representation of the <see cref="DateTime"/>.</returns>
-    public static string ToString(DateTime value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling)
-    {
-      DateTime updatedDateTime = EnsureDateTime(value, timeZoneHandling);
-
-      using (StringWriter writer = StringUtils.CreateStringWriter(64))
-      {
-        WriteDateTimeString(writer, updatedDateTime, updatedDateTime.GetUtcOffset(), updatedDateTime.Kind, format);
-        return writer.ToString();
-      }
-    }
-
-    internal static DateTime EnsureDateTime(DateTime value, DateTimeZoneHandling timeZone)
-    {
-      switch (timeZone)
-      {
-        case DateTimeZoneHandling.Local:
-          value = SwitchToLocalTime(value);
-          break;
-        case DateTimeZoneHandling.Utc:
-          value = SwitchToUtcTime(value);
-          break;
-        case DateTimeZoneHandling.Unspecified:
-          value = new DateTime(value.Ticks, DateTimeKind.Unspecified);
-          break;
-        case DateTimeZoneHandling.RoundtripKind:
-          break;
-        default:
-          throw new ArgumentException("Invalid date time handling value.");
-      }
-
-      return value;
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Converts the <see cref="DateTimeOffset"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="DateTimeOffset"/>.</returns>
-    public static string ToString(DateTimeOffset value)
-    {
-      return ToString(value, DateFormatHandling.IsoDateFormat);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="DateTimeOffset"/> to its JSON string representation using the <see cref="DateFormatHandling"/> specified.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <param name="format">The format the date will be converted to.</param>
-    /// <returns>A JSON string representation of the <see cref="DateTimeOffset"/>.</returns>
-    public static string ToString(DateTimeOffset value, DateFormatHandling format)
-    {
-      using (StringWriter writer = StringUtils.CreateStringWriter(64))
-      {
-        WriteDateTimeString(writer, (format == DateFormatHandling.IsoDateFormat) ? value.DateTime : value.UtcDateTime, value.Offset, DateTimeKind.Local, format);
-        return writer.ToString();
-      }
-    }
-#endif
-
-    internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format)
-    {
-      WriteDateTimeString(writer, value, value.GetUtcOffset(), value.Kind, format);
-    }
-
-    internal static void WriteDateTimeString(TextWriter writer, DateTime value, TimeSpan offset, DateTimeKind kind, DateFormatHandling format)
-    {
-      if (format == DateFormatHandling.MicrosoftDateFormat)
-      {
-        long javaScriptTicks = ConvertDateTimeToJavaScriptTicks(value, offset);
-
-        writer.Write(@"""\/Date(");
-        writer.Write(javaScriptTicks);
-
-        switch (kind)
-        {
-          case DateTimeKind.Unspecified:
-            if (value != DateTime.MaxValue && value != DateTime.MinValue)
-              WriteDateTimeOffset(writer, offset, format);
-            break;
-          case DateTimeKind.Local:
-            WriteDateTimeOffset(writer, offset, format);
-            break;
-        }
-
-        writer.Write(@")\/""");
-      }
-      else
-      {
-        writer.Write(@"""");
-        writer.Write(value.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFF", CultureInfo.InvariantCulture));
-
-        switch (kind)
-        {
-          case DateTimeKind.Local:
-            WriteDateTimeOffset(writer, offset, format);
-            break;
-          case DateTimeKind.Utc:
-            writer.Write("Z");
-            break;
-        }
-
-
-        writer.Write(@"""");
-      }
-    }
-
-    internal static void WriteDateTimeOffset(TextWriter writer, TimeSpan offset, DateFormatHandling format)
-    {
-      writer.Write((offset.Ticks >= 0L) ? "+" : "-");
-
-      int absHours = Math.Abs(offset.Hours);
-      if (absHours < 10)
-        writer.Write(0);
-      writer.Write(absHours);
-
-      if (format == DateFormatHandling.IsoDateFormat)
-        writer.Write(':');
-
-      int absMinutes = Math.Abs(offset.Minutes);
-      if (absMinutes < 10)
-        writer.Write(0);
-      writer.Write(absMinutes);
-    }
-
-    private static long ToUniversalTicks(DateTime dateTime)
-    {
-      if (dateTime.Kind == DateTimeKind.Utc)
-        return dateTime.Ticks;
-
-      return ToUniversalTicks(dateTime, dateTime.GetUtcOffset());
-    }
-
-    private static long ToUniversalTicks(DateTime dateTime, TimeSpan offset)
-    {
-      // special case min and max value
-      // they never have a timezone appended to avoid issues
-      if (dateTime.Kind == DateTimeKind.Utc || dateTime == DateTime.MaxValue || dateTime == DateTime.MinValue)
-        return dateTime.Ticks;
-
-      long ticks = dateTime.Ticks - offset.Ticks;
-      if (ticks > 3155378975999999999L)
-        return 3155378975999999999L;
-
-      if (ticks < 0L)
-        return 0L;
-
-      return ticks;
-    }
-
-    internal static long ConvertDateTimeToJavaScriptTicks(DateTime dateTime, TimeSpan offset)
-    {
-      long universialTicks = ToUniversalTicks(dateTime, offset);
-
-      return UniversialTicksToJavaScriptTicks(universialTicks);
-    }
-
-    internal static long ConvertDateTimeToJavaScriptTicks(DateTime dateTime)
-    {
-      return ConvertDateTimeToJavaScriptTicks(dateTime, true);
-    }
-
-    internal static long ConvertDateTimeToJavaScriptTicks(DateTime dateTime, bool convertToUtc)
-    {
-      long ticks = (convertToUtc) ? ToUniversalTicks(dateTime) : dateTime.Ticks;
-
-      return UniversialTicksToJavaScriptTicks(ticks);
-    }
-
-    private static long UniversialTicksToJavaScriptTicks(long universialTicks)
-    {
-      long javaScriptTicks = (universialTicks - InitialJavaScriptDateTicks)/10000;
-
-      return javaScriptTicks;
-    }
-
-    internal static DateTime ConvertJavaScriptTicksToDateTime(long javaScriptTicks)
-    {
-      DateTime dateTime = new DateTime((javaScriptTicks*10000) + InitialJavaScriptDateTicks, DateTimeKind.Utc);
-
-      return dateTime;
-    }
-
-    private static DateTime SwitchToLocalTime(DateTime value)
-    {
-      switch (value.Kind)
-      {
-        case DateTimeKind.Unspecified:
-          return new DateTime(value.Ticks, DateTimeKind.Local);
-
-        case DateTimeKind.Utc:
-          return value.ToLocalTime();
-
-        case DateTimeKind.Local:
-          return value;
-      }
-      return value;
-    }
-
-    private static DateTime SwitchToUtcTime(DateTime value)
-    {
-      switch (value.Kind)
-      {
-        case DateTimeKind.Unspecified:
-          return new DateTime(value.Ticks, DateTimeKind.Utc);
-
-        case DateTimeKind.Utc:
-          return value;
-
-        case DateTimeKind.Local:
-          return value.ToUniversalTime();
-      }
-      return value;
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Boolean"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Boolean"/>.</returns>
-    public static string ToString(bool value)
-    {
-      return (value) ? True : False;
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Char"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Char"/>.</returns>
-    public static string ToString(char value)
-    {
-      return ToString(char.ToString(value));
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Enum"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Enum"/>.</returns>
-    public static string ToString(Enum value)
-    {
-      return value.ToString("D");
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Int32"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Int32"/>.</returns>
-    public static string ToString(int value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Int16"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Int16"/>.</returns>
-    public static string ToString(short value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="UInt16"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="UInt16"/>.</returns>
-    [CLSCompliant(false)]
-    public static string ToString(ushort value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="UInt32"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="UInt32"/>.</returns>
-    [CLSCompliant(false)]
-    public static string ToString(uint value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Int64"/>  to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Int64"/>.</returns>
-    public static string ToString(long value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="UInt64"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="UInt64"/>.</returns>
-    [CLSCompliant(false)]
-    public static string ToString(ulong value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Single"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Single"/>.</returns>
-    public static string ToString(float value)
-    {
-      return EnsureDecimalPlace(value, value.ToString("R", CultureInfo.InvariantCulture));
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Double"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Double"/>.</returns>
-    public static string ToString(double value)
-    {
-      return EnsureDecimalPlace(value, value.ToString("R", CultureInfo.InvariantCulture));
-    }
-
-    private static string EnsureDecimalPlace(double value, string text)
-    {
-      if (double.IsNaN(value) || double.IsInfinity(value) || text.IndexOf('.') != -1 || text.IndexOf('E') != -1 || text.IndexOf('e') != -1)
-        return text;
-
-      return text + ".0";
-    }
-
-    private static string EnsureDecimalPlace(string text)
-    {
-      if (text.IndexOf('.') != -1)
-        return text;
-
-      return text + ".0";
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Byte"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Byte"/>.</returns>
-    public static string ToString(byte value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="SByte"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="SByte"/>.</returns>
-    [CLSCompliant(false)]
-    public static string ToString(sbyte value)
-    {
-      return value.ToString(null, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Decimal"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="SByte"/>.</returns>
-    public static string ToString(decimal value)
-    {
-      return EnsureDecimalPlace(value.ToString(null, CultureInfo.InvariantCulture));
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Guid"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Guid"/>.</returns>
-    public static string ToString(Guid value)
-    {
-      string text = null;
-
-#if !NETFX_CORE
-      text = value.ToString("D", CultureInfo.InvariantCulture);
-#else
-      text = value.ToString("D");
-#endif
-
-      return '"' + text + '"';
-    }
-
-    /// <summary>
-    /// Converts the <see cref="TimeSpan"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="TimeSpan"/>.</returns>
-    public static string ToString(TimeSpan value)
-    {
-      return '"' + value.ToString() + '"';
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Uri"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Uri"/>.</returns>
-    public static string ToString(Uri value)
-    {
-      if (value == null)
-        return Null;
-
-      return ToString(value.ToString());
-    }
-
-    /// <summary>
-    /// Converts the <see cref="String"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="String"/>.</returns>
-    public static string ToString(string value)
-    {
-      return ToString(value, '"');
-    }
-
-    /// <summary>
-    /// Converts the <see cref="String"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <param name="delimter">The string delimiter character.</param>
-    /// <returns>A JSON string representation of the <see cref="String"/>.</returns>
-    public static string ToString(string value, char delimter)
-    {
-      return JavaScriptUtils.ToEscapedJavaScriptString(value, delimter, true);
-    }
-
-    /// <summary>
-    /// Converts the <see cref="Object"/> to its JSON string representation.
-    /// </summary>
-    /// <param name="value">The value to convert.</param>
-    /// <returns>A JSON string representation of the <see cref="Object"/>.</returns>
-    public static string ToString(object value)
-    {
-      if (value == null)
-        return Null;
-
-      IConvertible convertible = ConvertUtils.ToConvertible(value);
-
-      if (convertible != null)
-      {
-        switch (convertible.GetTypeCode())
-        {
-          case TypeCode.String:
-            return ToString(convertible.ToString(CultureInfo.InvariantCulture));
-          case TypeCode.Char:
-            return ToString(convertible.ToChar(CultureInfo.InvariantCulture));
-          case TypeCode.Boolean:
-            return ToString(convertible.ToBoolean(CultureInfo.InvariantCulture));
-          case TypeCode.SByte:
-            return ToString(convertible.ToSByte(CultureInfo.InvariantCulture));
-          case TypeCode.Int16:
-            return ToString(convertible.ToInt16(CultureInfo.InvariantCulture));
-          case TypeCode.UInt16:
-            return ToString(convertible.ToUInt16(CultureInfo.InvariantCulture));
-          case TypeCode.Int32:
-            return ToString(convertible.ToInt32(CultureInfo.InvariantCulture));
-          case TypeCode.Byte:
-            return ToString(convertible.ToByte(CultureInfo.InvariantCulture));
-          case TypeCode.UInt32:
-            return ToString(convertible.ToUInt32(CultureInfo.InvariantCulture));
-          case TypeCode.Int64:
-            return ToString(convertible.ToInt64(CultureInfo.InvariantCulture));
-          case TypeCode.UInt64:
-            return ToString(convertible.ToUInt64(CultureInfo.InvariantCulture));
-          case TypeCode.Single:
-            return ToString(convertible.ToSingle(CultureInfo.InvariantCulture));
-          case TypeCode.Double:
-            return ToString(convertible.ToDouble(CultureInfo.InvariantCulture));
-          case TypeCode.DateTime:
-            return ToString(convertible.ToDateTime(CultureInfo.InvariantCulture));
-          case TypeCode.Decimal:
-            return ToString(convertible.ToDecimal(CultureInfo.InvariantCulture));
-#if !NETFX_CORE
-          case TypeCode.DBNull:
-            return Null;
-#endif
-        }
-      }
-#if !PocketPC && !NET20
-      else if (value is DateTimeOffset)
-      {
-        return ToString((DateTimeOffset) value);
-      }
-#endif
-      else if (value is Guid)
-      {
-        return ToString((Guid) value);
-      }
-      else if (value is Uri)
-      {
-        return ToString((Uri) value);
-      }
-      else if (value is TimeSpan)
-      {
-        return ToString((TimeSpan) value);
-      }
-
-      throw new ArgumentException("Unsupported type: {0}. Use the JsonSerializer class to get the object's JSON representation.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
-    }
-
-    private static bool IsJsonPrimitiveTypeCode(TypeCode typeCode)
-    {
-      switch (typeCode)
-      {
-        case TypeCode.String:
-        case TypeCode.Char:
-        case TypeCode.Boolean:
-        case TypeCode.SByte:
-        case TypeCode.Int16:
-        case TypeCode.UInt16:
-        case TypeCode.Int32:
-        case TypeCode.Byte:
-        case TypeCode.UInt32:
-        case TypeCode.Int64:
-        case TypeCode.UInt64:
-        case TypeCode.Single:
-        case TypeCode.Double:
-        case TypeCode.DateTime:
-        case TypeCode.Decimal:
-#if !NETFX_CORE
-        case TypeCode.DBNull:
-#endif
-          return true;
-        default:
-          return false;
-      }
-    }
-
-    internal static bool IsJsonPrimitiveType(Type type)
-    {
-      if (ReflectionUtils.IsNullableType(type))
-        type = Nullable.GetUnderlyingType(type);
-
-#if !PocketPC && !NET20
-      if (type == typeof (DateTimeOffset))
-        return true;
-#endif
-      if (type == typeof (byte[]))
-        return true;
-      if (type == typeof (Uri))
-        return true;
-      if (type == typeof (TimeSpan))
-        return true;
-      if (type == typeof (Guid))
-        return true;
-
-      return IsJsonPrimitiveTypeCode(ConvertUtils.GetTypeCode(type));
-    }
-
-    #region Serialize
-    /// <summary>
-    /// Serializes the specified object to a JSON string.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <returns>A JSON string representation of the object.</returns>
-    public static string SerializeObject(object value)
-    {
-      return SerializeObject(value, Formatting.None, (JsonSerializerSettings) null);
-    }
-
-    /// <summary>
-    /// Serializes the specified object to a JSON string.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <returns>
-    /// A JSON string representation of the object.
-    /// </returns>
-    public static string SerializeObject(object value, Formatting formatting)
-    {
-      return SerializeObject(value, formatting, (JsonSerializerSettings) null);
-    }
-
-    /// <summary>
-    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <param name="converters">A collection converters used while serializing.</param>
-    /// <returns>A JSON string representation of the object.</returns>
-    public static string SerializeObject(object value, params JsonConverter[] converters)
-    {
-      return SerializeObject(value, Formatting.None, converters);
-    }
-
-    /// <summary>
-    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <param name="converters">A collection converters used while serializing.</param>
-    /// <returns>A JSON string representation of the object.</returns>
-    public static string SerializeObject(object value, Formatting formatting, params JsonConverter[] converters)
-    {
-      JsonSerializerSettings settings = (converters != null && converters.Length > 0)
-                                          ? new JsonSerializerSettings {Converters = converters}
-                                          : null;
-
-      return SerializeObject(value, formatting, settings);
-    }
-
-    /// <summary>
-    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <param name="settings">The <see cref="JsonSerializerSettings"/> used to serialize the object.
-    /// If this is null, default serialization settings will be is used.</param>
-    /// <returns>
-    /// A JSON string representation of the object.
-    /// </returns>
-    public static string SerializeObject(object value, JsonSerializerSettings settings)
-    {
-      return SerializeObject(value, Formatting.None, settings);
-    }
-
-    /// <summary>
-    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <param name="settings">The <see cref="JsonSerializerSettings"/> used to serialize the object.
-    /// If this is null, default serialization settings will be is used.</param>
-    /// <returns>
-    /// A JSON string representation of the object.
-    /// </returns>
-    public static string SerializeObject(object value, Formatting formatting, JsonSerializerSettings settings)
-    {
-      JsonSerializer jsonSerializer = JsonSerializer.Create(settings);
-
-      StringBuilder sb = new StringBuilder(256);
-      StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.Formatting = formatting;
-
-        jsonSerializer.Serialize(jsonWriter, value);
-      }
-
-      return sw.ToString();
-    }
-
-#if !(NET20 || NET35 || SILVERLIGHT)
-    /// <summary>
-    /// Asynchronously serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <returns>
-    /// A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object.
-    /// </returns>
-    public static Task<string> SerializeObjectAsync(object value)
-    {
-      return SerializeObjectAsync(value, Formatting.None, null);
-    }
-
-    /// <summary>
-    /// Asynchronously serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <returns>
-    /// A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object.
-    /// </returns>
-    public static Task<string> SerializeObjectAsync(object value, Formatting formatting)
-    {
-      return SerializeObjectAsync(value, formatting, null);
-    }
-
-    /// <summary>
-    /// Asynchronously serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
-    /// </summary>
-    /// <param name="value">The object to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <param name="settings">The <see cref="JsonSerializerSettings"/> used to serialize the object.
-    /// If this is null, default serialization settings will be is used.</param>
-    /// <returns>
-    /// A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object.
-    /// </returns>
-    public static Task<string> SerializeObjectAsync(object value, Formatting formatting, JsonSerializerSettings settings)
-    {
-      return Task.Factory.StartNew(() => SerializeObject(value, formatting, settings));
-    }
-#endif
-    #endregion
-
-    #region Deserialize
-    /// <summary>
-    /// Deserializes the JSON to a .NET object.
-    /// </summary>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <returns>The deserialized object from the Json string.</returns>
-    public static object DeserializeObject(string value)
-    {
-      return DeserializeObject(value, null, (JsonSerializerSettings) null);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to a .NET object.
-    /// </summary>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="settings">
-    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
-    /// If this is null, default serialization settings will be is used.
-    /// </param>
-    /// <returns>The deserialized object from the JSON string.</returns>
-    public static object DeserializeObject(string value, JsonSerializerSettings settings)
-    {
-      return DeserializeObject(value, null, settings);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="type">The <see cref="Type"/> of object being deserialized.</param>
-    /// <returns>The deserialized object from the Json string.</returns>
-    public static object DeserializeObject(string value, Type type)
-    {
-      return DeserializeObject(value, type, (JsonSerializerSettings) null);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <returns>The deserialized object from the Json string.</returns>
-    public static T DeserializeObject<T>(string value)
-    {
-      return DeserializeObject<T>(value, (JsonSerializerSettings) null);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to the given anonymous type.
-    /// </summary>
-    /// <typeparam name="T">
-    /// The anonymous type to deserialize to. This can't be specified
-    /// traditionally and must be infered from the anonymous type passed
-    /// as a parameter.
-    /// </typeparam>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="anonymousTypeObject">The anonymous type object.</param>
-    /// <returns>The deserialized anonymous type from the JSON string.</returns>
-    public static T DeserializeAnonymousType<T>(string value, T anonymousTypeObject)
-    {
-      return DeserializeObject<T>(value);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="converters">Converters to use while deserializing.</param>
-    /// <returns>The deserialized object from the JSON string.</returns>
-    public static T DeserializeObject<T>(string value, params JsonConverter[] converters)
-    {
-      return (T) DeserializeObject(value, typeof (T), converters);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
-    /// <param name="value">The object to deserialize.</param>
-    /// <param name="settings">
-    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
-    /// If this is null, default serialization settings will be is used.
-    /// </param>
-    /// <returns>The deserialized object from the JSON string.</returns>
-    public static T DeserializeObject<T>(string value, JsonSerializerSettings settings)
-    {
-      return (T) DeserializeObject(value, typeof (T), settings);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="type">The type of the object to deserialize.</param>
-    /// <param name="converters">Converters to use while deserializing.</param>
-    /// <returns>The deserialized object from the JSON string.</returns>
-    public static object DeserializeObject(string value, Type type, params JsonConverter[] converters)
-    {
-      JsonSerializerSettings settings = (converters != null && converters.Length > 0)
-                                          ? new JsonSerializerSettings {Converters = converters}
-                                          : null;
-
-      return DeserializeObject(value, type, settings);
-    }
-
-    /// <summary>
-    /// Deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="type">The type of the object to deserialize to.</param>
-    /// <param name="settings">
-    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
-    /// If this is null, default serialization settings will be is used.
-    /// </param>
-    /// <returns>The deserialized object from the JSON string.</returns>
-    public static object DeserializeObject(string value, Type type, JsonSerializerSettings settings)
-    {
-      ValidationUtils.ArgumentNotNull(value, "value");
-
-      StringReader sr = new StringReader(value);
-      JsonSerializer jsonSerializer = JsonSerializer.Create(settings);
-
-      object deserializedValue;
-
-      using (JsonReader jsonReader = new JsonTextReader(sr))
-      {
-        deserializedValue = jsonSerializer.Deserialize(jsonReader, type);
-
-        if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
-          throw new JsonSerializationException("Additional text found in JSON string after finishing deserializing object.");
-      }
-
-      return deserializedValue;
-    }
-
-#if !(NET20 || NET35 || SILVERLIGHT)
-    /// <summary>
-    /// Asynchronously deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <returns>
-    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
-    /// </returns>
-    public static Task<T> DeserializeObjectAsync<T>(string value)
-    {
-      return DeserializeObjectAsync<T>(value, null);
-    }
-
-    /// <summary>
-    /// Asynchronously deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="settings">
-    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
-    /// If this is null, default serialization settings will be is used.
-    /// </param>
-    /// <returns>
-    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
-    /// </returns>
-    public static Task<T> DeserializeObjectAsync<T>(string value, JsonSerializerSettings settings)
-    {
-      return Task.Factory.StartNew(() => DeserializeObject<T>(value, settings));
-    }
-
-    /// <summary>
-    /// Asynchronously deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <returns>
-    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
-    /// </returns>
-    public static Task<object> DeserializeObjectAsync(string value)
-    {
-      return DeserializeObjectAsync(value, null, null);
-    }
-
-    /// <summary>
-    /// Asynchronously deserializes the JSON to the specified .NET type.
-    /// </summary>
-    /// <param name="value">The JSON to deserialize.</param>
-    /// <param name="type">The type of the object to deserialize to.</param>
-    /// <param name="settings">
-    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
-    /// If this is null, default serialization settings will be is used.
-    /// </param>
-    /// <returns>
-    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
-    /// </returns>
-    public static Task<object> DeserializeObjectAsync(string value, Type type, JsonSerializerSettings settings)
-    {
-      return Task.Factory.StartNew(() => DeserializeObject(value, type, settings));
-    }
-#endif
-    #endregion
-
-    /// <summary>
-    /// Populates the object with values from the JSON string.
-    /// </summary>
-    /// <param name="value">The JSON to populate values from.</param>
-    /// <param name="target">The target object to populate values onto.</param>
-    public static void PopulateObject(string value, object target)
-    {
-      PopulateObject(value, target, null);
-    }
-
-    /// <summary>
-    /// Populates the object with values from the JSON string.
-    /// </summary>
-    /// <param name="value">The JSON to populate values from.</param>
-    /// <param name="target">The target object to populate values onto.</param>
-    /// <param name="settings">
-    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
-    /// If this is null, default serialization settings will be is used.
-    /// </param>
-    public static void PopulateObject(string value, object target, JsonSerializerSettings settings)
-    {
-      StringReader sr = new StringReader(value);
-      JsonSerializer jsonSerializer = JsonSerializer.Create(settings);
-
-      using (JsonReader jsonReader = new JsonTextReader(sr))
-      {
-        jsonSerializer.Populate(jsonReader, target);
-
-        if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
-          throw new JsonSerializationException("Additional text found in JSON string after finishing deserializing object.");
-      }
-    }
-
-#if !(NET20 || NET35 || SILVERLIGHT)
-    /// <summary>
-    /// Asynchronously populates the object with values from the JSON string.
-    /// </summary>
-    /// <param name="value">The JSON to populate values from.</param>
-    /// <param name="target">The target object to populate values onto.</param>
-    /// <param name="settings">
-    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
-    /// If this is null, default serialization settings will be is used.
-    /// </param>
-    /// <returns>
-    /// A task that represents the asynchronous populate operation.
-    /// </returns>
-    public static Task PopulateObjectAsync(string value, object target, JsonSerializerSettings settings)
-    {
-      return Task.Factory.StartNew(() => PopulateObject(value, target, settings));
-    }
-#endif
-
-#if !(SILVERLIGHT || NETFX_CORE)
-    /// <summary>
-    /// Serializes the XML node to a JSON string.
-    /// </summary>
-    /// <param name="node">The node to serialize.</param>
-    /// <returns>A JSON string of the XmlNode.</returns>
-    public static string SerializeXmlNode(XmlNode node)
-    {
-      return SerializeXmlNode(node, Formatting.None);
-    }
-
-    /// <summary>
-    /// Serializes the XML node to a JSON string.
-    /// </summary>
-    /// <param name="node">The node to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <returns>A JSON string of the XmlNode.</returns>
-    public static string SerializeXmlNode(XmlNode node, Formatting formatting)
-    {
-      XmlNodeConverter converter = new XmlNodeConverter();
-
-      return SerializeObject(node, formatting, converter);
-    }
-
-    /// <summary>
-    /// Serializes the XML node to a JSON string.
-    /// </summary>
-    /// <param name="node">The node to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <param name="omitRootObject">Omits writing the root object.</param>
-    /// <returns>A JSON string of the XmlNode.</returns>
-    public static string SerializeXmlNode(XmlNode node, Formatting formatting, bool omitRootObject)
-    {
-      XmlNodeConverter converter = new XmlNodeConverter {OmitRootObject = omitRootObject};
-
-      return SerializeObject(node, formatting, converter);
-    }
-
-    /// <summary>
-    /// Deserializes the XmlNode from a JSON string.
-    /// </summary>
-    /// <param name="value">The JSON string.</param>
-    /// <returns>The deserialized XmlNode</returns>
-    public static XmlDocument DeserializeXmlNode(string value)
-    {
-      return DeserializeXmlNode(value, null);
-    }
-
-    /// <summary>
-    /// Deserializes the XmlNode from a JSON string nested in a root elment.
-    /// </summary>
-    /// <param name="value">The JSON string.</param>
-    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
-    /// <returns>The deserialized XmlNode</returns>
-    public static XmlDocument DeserializeXmlNode(string value, string deserializeRootElementName)
-    {
-      return DeserializeXmlNode(value, deserializeRootElementName, false);
-    }
-
-    /// <summary>
-    /// Deserializes the XmlNode from a JSON string nested in a root elment.
-    /// </summary>
-    /// <param name="value">The JSON string.</param>
-    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
-    /// <param name="writeArrayAttribute">
-    /// A flag to indicate whether to write the Json.NET array attribute.
-    /// This attribute helps preserve arrays when converting the written XML back to JSON.
-    /// </param>
-    /// <returns>The deserialized XmlNode</returns>
-    public static XmlDocument DeserializeXmlNode(string value, string deserializeRootElementName, bool writeArrayAttribute)
-    {
-      XmlNodeConverter converter = new XmlNodeConverter();
-      converter.DeserializeRootElementName = deserializeRootElementName;
-      converter.WriteArrayAttribute = writeArrayAttribute;
-
-      return (XmlDocument) DeserializeObject(value, typeof (XmlDocument), converter);
-    }
-#endif
-
-#if !NET20 && (!SILVERLIGHT || WINDOWS_PHONE)
-    /// <summary>
-    /// Serializes the <see cref="XNode"/> to a JSON string.
-    /// </summary>
-    /// <param name="node">The node to convert to JSON.</param>
-    /// <returns>A JSON string of the XNode.</returns>
-    public static string SerializeXNode(XObject node)
-    {
-      return SerializeXNode(node, Formatting.None);
-    }
-
-    /// <summary>
-    /// Serializes the <see cref="XNode"/> to a JSON string.
-    /// </summary>
-    /// <param name="node">The node to convert to JSON.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <returns>A JSON string of the XNode.</returns>
-    public static string SerializeXNode(XObject node, Formatting formatting)
-    {
-      return SerializeXNode(node, formatting, false);
-    }
-
-    /// <summary>
-    /// Serializes the <see cref="XNode"/> to a JSON string.
-    /// </summary>
-    /// <param name="node">The node to serialize.</param>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <param name="omitRootObject">Omits writing the root object.</param>
-    /// <returns>A JSON string of the XNode.</returns>
-    public static string SerializeXNode(XObject node, Formatting formatting, bool omitRootObject)
-    {
-      XmlNodeConverter converter = new XmlNodeConverter {OmitRootObject = omitRootObject};
-
-      return SerializeObject(node, formatting, converter);
-    }
-
-    /// <summary>
-    /// Deserializes the <see cref="XNode"/> from a JSON string.
-    /// </summary>
-    /// <param name="value">The JSON string.</param>
-    /// <returns>The deserialized XNode</returns>
-    public static XDocument DeserializeXNode(string value)
-    {
-      return DeserializeXNode(value, null);
-    }
-
-    /// <summary>
-    /// Deserializes the <see cref="XNode"/> from a JSON string nested in a root elment.
-    /// </summary>
-    /// <param name="value">The JSON string.</param>
-    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
-    /// <returns>The deserialized XNode</returns>
-    public static XDocument DeserializeXNode(string value, string deserializeRootElementName)
-    {
-      return DeserializeXNode(value, deserializeRootElementName, false);
-    }
-
-    /// <summary>
-    /// Deserializes the <see cref="XNode"/> from a JSON string nested in a root elment.
-    /// </summary>
-    /// <param name="value">The JSON string.</param>
-    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
-    /// <param name="writeArrayAttribute">
-    /// A flag to indicate whether to write the Json.NET array attribute.
-    /// This attribute helps preserve arrays when converting the written XML back to JSON.
-    /// </param>
-    /// <returns>The deserialized XNode</returns>
-    public static XDocument DeserializeXNode(string value, string deserializeRootElementName, bool writeArrayAttribute)
-    {
-      XmlNodeConverter converter = new XmlNodeConverter();
-      converter.DeserializeRootElementName = deserializeRootElementName;
-      converter.WriteArrayAttribute = writeArrayAttribute;
-
-      return (XDocument) DeserializeObject(value, typeof (XDocument), converter);
-    }
-#endif
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.IO;
+using System.Globalization;
+#if !(NET20 || NET35 || SILVERLIGHT)
+using System.Threading.Tasks;
+#endif
+using Newtonsoft.Json.Utilities;
+using System.Xml;
+using Newtonsoft.Json.Converters;
+using System.Text;
+#if !NET20 && (!SILVERLIGHT || WINDOWS_PHONE)
+using System.Xml.Linq;
+#endif
+#if NETFX_CORE
+using IConvertible = Newtonsoft.Json.Utilities.Convertible;
+#endif
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Provides methods for converting between common language runtime types and JSON types.
+  /// </summary>
+  public static class JsonConvert
+  {
+    /// <summary>
+    /// Represents JavaScript's boolean value true as a string. This field is read-only.
+    /// </summary>
+    public static readonly string True = "true";
+
+    /// <summary>
+    /// Represents JavaScript's boolean value false as a string. This field is read-only.
+    /// </summary>
+    public static readonly string False = "false";
+
+    /// <summary>
+    /// Represents JavaScript's null as a string. This field is read-only.
+    /// </summary>
+    public static readonly string Null = "null";
+
+    /// <summary>
+    /// Represents JavaScript's undefined as a string. This field is read-only.
+    /// </summary>
+    public static readonly string Undefined = "undefined";
+
+    /// <summary>
+    /// Represents JavaScript's positive infinity as a string. This field is read-only.
+    /// </summary>
+    public static readonly string PositiveInfinity = "Infinity";
+
+    /// <summary>
+    /// Represents JavaScript's negative infinity as a string. This field is read-only.
+    /// </summary>
+    public static readonly string NegativeInfinity = "-Infinity";
+
+    /// <summary>
+    /// Represents JavaScript's NaN as a string. This field is read-only.
+    /// </summary>
+    public static readonly string NaN = "NaN";
+
+    internal static readonly long InitialJavaScriptDateTicks = 621355968000000000;
+
+    /// <summary>
+    /// Converts the <see cref="DateTime"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="DateTime"/>.</returns>
+    public static string ToString(DateTime value)
+    {
+      return ToString(value, DateFormatHandling.IsoDateFormat, DateTimeZoneHandling.RoundtripKind);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="DateTime"/> to its JSON string representation using the <see cref="DateFormatHandling"/> specified.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <param name="format">The format the date will be converted to.</param>
+    /// <param name="timeZoneHandling">The time zone handling when the date is converted to a string.</param>
+    /// <returns>A JSON string representation of the <see cref="DateTime"/>.</returns>
+    public static string ToString(DateTime value, DateFormatHandling format, DateTimeZoneHandling timeZoneHandling)
+    {
+      DateTime updatedDateTime = EnsureDateTime(value, timeZoneHandling);
+
+      using (StringWriter writer = StringUtils.CreateStringWriter(64))
+      {
+        WriteDateTimeString(writer, updatedDateTime, updatedDateTime.GetUtcOffset(), updatedDateTime.Kind, format);
+        return writer.ToString();
+      }
+    }
+
+    internal static DateTime EnsureDateTime(DateTime value, DateTimeZoneHandling timeZone)
+    {
+      switch (timeZone)
+      {
+        case DateTimeZoneHandling.Local:
+          value = SwitchToLocalTime(value);
+          break;
+        case DateTimeZoneHandling.Utc:
+          value = SwitchToUtcTime(value);
+          break;
+        case DateTimeZoneHandling.Unspecified:
+          value = new DateTime(value.Ticks, DateTimeKind.Unspecified);
+          break;
+        case DateTimeZoneHandling.RoundtripKind:
+          break;
+        default:
+          throw new ArgumentException("Invalid date time handling value.");
+      }
+
+      return value;
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Converts the <see cref="DateTimeOffset"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="DateTimeOffset"/>.</returns>
+    public static string ToString(DateTimeOffset value)
+    {
+      return ToString(value, DateFormatHandling.IsoDateFormat);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="DateTimeOffset"/> to its JSON string representation using the <see cref="DateFormatHandling"/> specified.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <param name="format">The format the date will be converted to.</param>
+    /// <returns>A JSON string representation of the <see cref="DateTimeOffset"/>.</returns>
+    public static string ToString(DateTimeOffset value, DateFormatHandling format)
+    {
+      using (StringWriter writer = StringUtils.CreateStringWriter(64))
+      {
+        WriteDateTimeString(writer, (format == DateFormatHandling.IsoDateFormat) ? value.DateTime : value.UtcDateTime, value.Offset, DateTimeKind.Local, format);
+        return writer.ToString();
+      }
+    }
+#endif
+
+    internal static void WriteDateTimeString(TextWriter writer, DateTime value, DateFormatHandling format)
+    {
+      WriteDateTimeString(writer, value, value.GetUtcOffset(), value.Kind, format);
+    }
+
+    internal static void WriteDateTimeString(TextWriter writer, DateTime value, TimeSpan offset, DateTimeKind kind, DateFormatHandling format)
+    {
+      if (format == DateFormatHandling.MicrosoftDateFormat)
+      {
+        long javaScriptTicks = ConvertDateTimeToJavaScriptTicks(value, offset);
+
+        writer.Write(@"""\/Date(");
+        writer.Write(javaScriptTicks);
+
+        switch (kind)
+        {
+          case DateTimeKind.Unspecified:
+            if (value != DateTime.MaxValue && value != DateTime.MinValue)
+              WriteDateTimeOffset(writer, offset, format);
+            break;
+          case DateTimeKind.Local:
+            WriteDateTimeOffset(writer, offset, format);
+            break;
+        }
+
+        writer.Write(@")\/""");
+      }
+      else
+      {
+        writer.Write(@"""");
+        writer.Write(value.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFF", CultureInfo.InvariantCulture));
+
+        switch (kind)
+        {
+          case DateTimeKind.Local:
+            WriteDateTimeOffset(writer, offset, format);
+            break;
+          case DateTimeKind.Utc:
+            writer.Write("Z");
+            break;
+        }
+
+
+        writer.Write(@"""");
+      }
+    }
+
+    internal static void WriteDateTimeOffset(TextWriter writer, TimeSpan offset, DateFormatHandling format)
+    {
+      writer.Write((offset.Ticks >= 0L) ? "+" : "-");
+
+      int absHours = Math.Abs(offset.Hours);
+      if (absHours < 10)
+        writer.Write(0);
+      writer.Write(absHours);
+
+      if (format == DateFormatHandling.IsoDateFormat)
+        writer.Write(':');
+
+      int absMinutes = Math.Abs(offset.Minutes);
+      if (absMinutes < 10)
+        writer.Write(0);
+      writer.Write(absMinutes);
+    }
+
+    private static long ToUniversalTicks(DateTime dateTime)
+    {
+      if (dateTime.Kind == DateTimeKind.Utc)
+        return dateTime.Ticks;
+
+      return ToUniversalTicks(dateTime, dateTime.GetUtcOffset());
+    }
+
+    private static long ToUniversalTicks(DateTime dateTime, TimeSpan offset)
+    {
+      // special case min and max value
+      // they never have a timezone appended to avoid issues
+      if (dateTime.Kind == DateTimeKind.Utc || dateTime == DateTime.MaxValue || dateTime == DateTime.MinValue)
+        return dateTime.Ticks;
+
+      long ticks = dateTime.Ticks - offset.Ticks;
+      if (ticks > 3155378975999999999L)
+        return 3155378975999999999L;
+
+      if (ticks < 0L)
+        return 0L;
+
+      return ticks;
+    }
+
+    internal static long ConvertDateTimeToJavaScriptTicks(DateTime dateTime, TimeSpan offset)
+    {
+      long universialTicks = ToUniversalTicks(dateTime, offset);
+
+      return UniversialTicksToJavaScriptTicks(universialTicks);
+    }
+
+    internal static long ConvertDateTimeToJavaScriptTicks(DateTime dateTime)
+    {
+      return ConvertDateTimeToJavaScriptTicks(dateTime, true);
+    }
+
+    internal static long ConvertDateTimeToJavaScriptTicks(DateTime dateTime, bool convertToUtc)
+    {
+      long ticks = (convertToUtc) ? ToUniversalTicks(dateTime) : dateTime.Ticks;
+
+      return UniversialTicksToJavaScriptTicks(ticks);
+    }
+
+    private static long UniversialTicksToJavaScriptTicks(long universialTicks)
+    {
+      long javaScriptTicks = (universialTicks - InitialJavaScriptDateTicks)/10000;
+
+      return javaScriptTicks;
+    }
+
+    internal static DateTime ConvertJavaScriptTicksToDateTime(long javaScriptTicks)
+    {
+      DateTime dateTime = new DateTime((javaScriptTicks*10000) + InitialJavaScriptDateTicks, DateTimeKind.Utc);
+
+      return dateTime;
+    }
+
+    private static DateTime SwitchToLocalTime(DateTime value)
+    {
+      switch (value.Kind)
+      {
+        case DateTimeKind.Unspecified:
+          return new DateTime(value.Ticks, DateTimeKind.Local);
+
+        case DateTimeKind.Utc:
+          return value.ToLocalTime();
+
+        case DateTimeKind.Local:
+          return value;
+      }
+      return value;
+    }
+
+    private static DateTime SwitchToUtcTime(DateTime value)
+    {
+      switch (value.Kind)
+      {
+        case DateTimeKind.Unspecified:
+          return new DateTime(value.Ticks, DateTimeKind.Utc);
+
+        case DateTimeKind.Utc:
+          return value;
+
+        case DateTimeKind.Local:
+          return value.ToUniversalTime();
+      }
+      return value;
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Boolean"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Boolean"/>.</returns>
+    public static string ToString(bool value)
+    {
+      return (value) ? True : False;
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Char"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Char"/>.</returns>
+    public static string ToString(char value)
+    {
+      return ToString(char.ToString(value));
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Enum"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Enum"/>.</returns>
+    public static string ToString(Enum value)
+    {
+      return value.ToString("D");
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Int32"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Int32"/>.</returns>
+    public static string ToString(int value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Int16"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Int16"/>.</returns>
+    public static string ToString(short value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="UInt16"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="UInt16"/>.</returns>
+    [CLSCompliant(false)]
+    public static string ToString(ushort value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="UInt32"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="UInt32"/>.</returns>
+    [CLSCompliant(false)]
+    public static string ToString(uint value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Int64"/>  to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Int64"/>.</returns>
+    public static string ToString(long value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="UInt64"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="UInt64"/>.</returns>
+    [CLSCompliant(false)]
+    public static string ToString(ulong value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Single"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Single"/>.</returns>
+    public static string ToString(float value)
+    {
+      return EnsureDecimalPlace(value, value.ToString("R", CultureInfo.InvariantCulture));
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Double"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Double"/>.</returns>
+    public static string ToString(double value)
+    {
+      return EnsureDecimalPlace(value, value.ToString("R", CultureInfo.InvariantCulture));
+    }
+
+    private static string EnsureDecimalPlace(double value, string text)
+    {
+      if (double.IsNaN(value) || double.IsInfinity(value) || text.IndexOf('.') != -1 || text.IndexOf('E') != -1 || text.IndexOf('e') != -1)
+        return text;
+
+      return text + ".0";
+    }
+
+    private static string EnsureDecimalPlace(string text)
+    {
+      if (text.IndexOf('.') != -1)
+        return text;
+
+      return text + ".0";
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Byte"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Byte"/>.</returns>
+    public static string ToString(byte value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="SByte"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="SByte"/>.</returns>
+    [CLSCompliant(false)]
+    public static string ToString(sbyte value)
+    {
+      return value.ToString(null, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Decimal"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="SByte"/>.</returns>
+    public static string ToString(decimal value)
+    {
+      return EnsureDecimalPlace(value.ToString(null, CultureInfo.InvariantCulture));
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Guid"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Guid"/>.</returns>
+    public static string ToString(Guid value)
+    {
+      string text = null;
+
+#if !NETFX_CORE
+      text = value.ToString("D", CultureInfo.InvariantCulture);
+#else
+      text = value.ToString("D");
+#endif
+
+      return '"' + text + '"';
+    }
+
+    /// <summary>
+    /// Converts the <see cref="TimeSpan"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="TimeSpan"/>.</returns>
+    public static string ToString(TimeSpan value)
+    {
+      return '"' + value.ToString() + '"';
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Uri"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Uri"/>.</returns>
+    public static string ToString(Uri value)
+    {
+      if (value == null)
+        return Null;
+
+      return ToString(value.ToString());
+    }
+
+    /// <summary>
+    /// Converts the <see cref="String"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="String"/>.</returns>
+    public static string ToString(string value)
+    {
+      return ToString(value, '"');
+    }
+
+    /// <summary>
+    /// Converts the <see cref="String"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <param name="delimter">The string delimiter character.</param>
+    /// <returns>A JSON string representation of the <see cref="String"/>.</returns>
+    public static string ToString(string value, char delimter)
+    {
+      return JavaScriptUtils.ToEscapedJavaScriptString(value, delimter, true);
+    }
+
+    /// <summary>
+    /// Converts the <see cref="Object"/> to its JSON string representation.
+    /// </summary>
+    /// <param name="value">The value to convert.</param>
+    /// <returns>A JSON string representation of the <see cref="Object"/>.</returns>
+    public static string ToString(object value)
+    {
+      if (value == null)
+        return Null;
+
+      IConvertible convertible = ConvertUtils.ToConvertible(value);
+
+      if (convertible != null)
+      {
+        switch (convertible.GetTypeCode())
+        {
+          case TypeCode.String:
+            return ToString(convertible.ToString(CultureInfo.InvariantCulture));
+          case TypeCode.Char:
+            return ToString(convertible.ToChar(CultureInfo.InvariantCulture));
+          case TypeCode.Boolean:
+            return ToString(convertible.ToBoolean(CultureInfo.InvariantCulture));
+          case TypeCode.SByte:
+            return ToString(convertible.ToSByte(CultureInfo.InvariantCulture));
+          case TypeCode.Int16:
+            return ToString(convertible.ToInt16(CultureInfo.InvariantCulture));
+          case TypeCode.UInt16:
+            return ToString(convertible.ToUInt16(CultureInfo.InvariantCulture));
+          case TypeCode.Int32:
+            return ToString(convertible.ToInt32(CultureInfo.InvariantCulture));
+          case TypeCode.Byte:
+            return ToString(convertible.ToByte(CultureInfo.InvariantCulture));
+          case TypeCode.UInt32:
+            return ToString(convertible.ToUInt32(CultureInfo.InvariantCulture));
+          case TypeCode.Int64:
+            return ToString(convertible.ToInt64(CultureInfo.InvariantCulture));
+          case TypeCode.UInt64:
+            return ToString(convertible.ToUInt64(CultureInfo.InvariantCulture));
+          case TypeCode.Single:
+            return ToString(convertible.ToSingle(CultureInfo.InvariantCulture));
+          case TypeCode.Double:
+            return ToString(convertible.ToDouble(CultureInfo.InvariantCulture));
+          case TypeCode.DateTime:
+            return ToString(convertible.ToDateTime(CultureInfo.InvariantCulture));
+          case TypeCode.Decimal:
+            return ToString(convertible.ToDecimal(CultureInfo.InvariantCulture));
+#if !NETFX_CORE
+          case TypeCode.DBNull:
+            return Null;
+#endif
+        }
+      }
+#if !PocketPC && !NET20
+      else if (value is DateTimeOffset)
+      {
+        return ToString((DateTimeOffset) value);
+      }
+#endif
+      else if (value is Guid)
+      {
+        return ToString((Guid) value);
+      }
+      else if (value is Uri)
+      {
+        return ToString((Uri) value);
+      }
+      else if (value is TimeSpan)
+      {
+        return ToString((TimeSpan) value);
+      }
+
+      throw new ArgumentException("Unsupported type: {0}. Use the JsonSerializer class to get the object's JSON representation.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
+    }
+
+    private static bool IsJsonPrimitiveTypeCode(TypeCode typeCode)
+    {
+      switch (typeCode)
+      {
+        case TypeCode.String:
+        case TypeCode.Char:
+        case TypeCode.Boolean:
+        case TypeCode.SByte:
+        case TypeCode.Int16:
+        case TypeCode.UInt16:
+        case TypeCode.Int32:
+        case TypeCode.Byte:
+        case TypeCode.UInt32:
+        case TypeCode.Int64:
+        case TypeCode.UInt64:
+        case TypeCode.Single:
+        case TypeCode.Double:
+        case TypeCode.DateTime:
+        case TypeCode.Decimal:
+#if !NETFX_CORE
+        case TypeCode.DBNull:
+#endif
+          return true;
+        default:
+          return false;
+      }
+    }
+
+    internal static bool IsJsonPrimitiveType(Type type)
+    {
+      if (ReflectionUtils.IsNullableType(type))
+        type = Nullable.GetUnderlyingType(type);
+
+#if !PocketPC && !NET20
+      if (type == typeof (DateTimeOffset))
+        return true;
+#endif
+      if (type == typeof (byte[]))
+        return true;
+      if (type == typeof (Uri))
+        return true;
+      if (type == typeof (TimeSpan))
+        return true;
+      if (type == typeof (Guid))
+        return true;
+
+      return IsJsonPrimitiveTypeCode(ConvertUtils.GetTypeCode(type));
+    }
+
+    #region Serialize
+    /// <summary>
+    /// Serializes the specified object to a JSON string.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <returns>A JSON string representation of the object.</returns>
+    public static string SerializeObject(object value)
+    {
+      return SerializeObject(value, Formatting.None, (JsonSerializerSettings) null);
+    }
+
+    /// <summary>
+    /// Serializes the specified object to a JSON string.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <returns>
+    /// A JSON string representation of the object.
+    /// </returns>
+    public static string SerializeObject(object value, Formatting formatting)
+    {
+      return SerializeObject(value, formatting, (JsonSerializerSettings) null);
+    }
+
+    /// <summary>
+    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <param name="converters">A collection converters used while serializing.</param>
+    /// <returns>A JSON string representation of the object.</returns>
+    public static string SerializeObject(object value, params JsonConverter[] converters)
+    {
+      return SerializeObject(value, Formatting.None, converters);
+    }
+
+    /// <summary>
+    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <param name="converters">A collection converters used while serializing.</param>
+    /// <returns>A JSON string representation of the object.</returns>
+    public static string SerializeObject(object value, Formatting formatting, params JsonConverter[] converters)
+    {
+      JsonSerializerSettings settings = (converters != null && converters.Length > 0)
+                                          ? new JsonSerializerSettings {Converters = converters}
+                                          : null;
+
+      return SerializeObject(value, formatting, settings);
+    }
+
+    /// <summary>
+    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <param name="settings">The <see cref="JsonSerializerSettings"/> used to serialize the object.
+    /// If this is null, default serialization settings will be is used.</param>
+    /// <returns>
+    /// A JSON string representation of the object.
+    /// </returns>
+    public static string SerializeObject(object value, JsonSerializerSettings settings)
+    {
+      return SerializeObject(value, Formatting.None, settings);
+    }
+
+    /// <summary>
+    /// Serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <param name="settings">The <see cref="JsonSerializerSettings"/> used to serialize the object.
+    /// If this is null, default serialization settings will be is used.</param>
+    /// <returns>
+    /// A JSON string representation of the object.
+    /// </returns>
+    public static string SerializeObject(object value, Formatting formatting, JsonSerializerSettings settings)
+    {
+      JsonSerializer jsonSerializer = JsonSerializer.Create(settings);
+
+      StringBuilder sb = new StringBuilder(256);
+      StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.Formatting = formatting;
+
+        jsonSerializer.Serialize(jsonWriter, value);
+      }
+
+      return sw.ToString();
+    }
+
+#if !(NET20 || NET35 || SILVERLIGHT)
+    /// <summary>
+    /// Asynchronously serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <returns>
+    /// A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object.
+    /// </returns>
+    public static Task<string> SerializeObjectAsync(object value)
+    {
+      return SerializeObjectAsync(value, Formatting.None, null);
+    }
+
+    /// <summary>
+    /// Asynchronously serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <returns>
+    /// A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object.
+    /// </returns>
+    public static Task<string> SerializeObjectAsync(object value, Formatting formatting)
+    {
+      return SerializeObjectAsync(value, formatting, null);
+    }
+
+    /// <summary>
+    /// Asynchronously serializes the specified object to a JSON string using a collection of <see cref="JsonConverter"/>.
+    /// </summary>
+    /// <param name="value">The object to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <param name="settings">The <see cref="JsonSerializerSettings"/> used to serialize the object.
+    /// If this is null, default serialization settings will be is used.</param>
+    /// <returns>
+    /// A task that represents the asynchronous serialize operation. The value of the <c>TResult</c> parameter contains a JSON string representation of the object.
+    /// </returns>
+    public static Task<string> SerializeObjectAsync(object value, Formatting formatting, JsonSerializerSettings settings)
+    {
+      return Task.Factory.StartNew(() => SerializeObject(value, formatting, settings));
+    }
+#endif
+    #endregion
+
+    #region Deserialize
+    /// <summary>
+    /// Deserializes the JSON to a .NET object.
+    /// </summary>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <returns>The deserialized object from the Json string.</returns>
+    public static object DeserializeObject(string value)
+    {
+      return DeserializeObject(value, null, (JsonSerializerSettings) null);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to a .NET object.
+    /// </summary>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="settings">
+    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
+    /// If this is null, default serialization settings will be is used.
+    /// </param>
+    /// <returns>The deserialized object from the JSON string.</returns>
+    public static object DeserializeObject(string value, JsonSerializerSettings settings)
+    {
+      return DeserializeObject(value, null, settings);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="type">The <see cref="Type"/> of object being deserialized.</param>
+    /// <returns>The deserialized object from the Json string.</returns>
+    public static object DeserializeObject(string value, Type type)
+    {
+      return DeserializeObject(value, type, (JsonSerializerSettings) null);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <returns>The deserialized object from the Json string.</returns>
+    public static T DeserializeObject<T>(string value)
+    {
+      return DeserializeObject<T>(value, (JsonSerializerSettings) null);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to the given anonymous type.
+    /// </summary>
+    /// <typeparam name="T">
+    /// The anonymous type to deserialize to. This can't be specified
+    /// traditionally and must be infered from the anonymous type passed
+    /// as a parameter.
+    /// </typeparam>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="anonymousTypeObject">The anonymous type object.</param>
+    /// <returns>The deserialized anonymous type from the JSON string.</returns>
+    public static T DeserializeAnonymousType<T>(string value, T anonymousTypeObject)
+    {
+      return DeserializeObject<T>(value);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="converters">Converters to use while deserializing.</param>
+    /// <returns>The deserialized object from the JSON string.</returns>
+    public static T DeserializeObject<T>(string value, params JsonConverter[] converters)
+    {
+      return (T) DeserializeObject(value, typeof (T), converters);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
+    /// <param name="value">The object to deserialize.</param>
+    /// <param name="settings">
+    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
+    /// If this is null, default serialization settings will be is used.
+    /// </param>
+    /// <returns>The deserialized object from the JSON string.</returns>
+    public static T DeserializeObject<T>(string value, JsonSerializerSettings settings)
+    {
+      return (T) DeserializeObject(value, typeof (T), settings);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="type">The type of the object to deserialize.</param>
+    /// <param name="converters">Converters to use while deserializing.</param>
+    /// <returns>The deserialized object from the JSON string.</returns>
+    public static object DeserializeObject(string value, Type type, params JsonConverter[] converters)
+    {
+      JsonSerializerSettings settings = (converters != null && converters.Length > 0)
+                                          ? new JsonSerializerSettings {Converters = converters}
+                                          : null;
+
+      return DeserializeObject(value, type, settings);
+    }
+
+    /// <summary>
+    /// Deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="type">The type of the object to deserialize to.</param>
+    /// <param name="settings">
+    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
+    /// If this is null, default serialization settings will be is used.
+    /// </param>
+    /// <returns>The deserialized object from the JSON string.</returns>
+    public static object DeserializeObject(string value, Type type, JsonSerializerSettings settings)
+    {
+      ValidationUtils.ArgumentNotNull(value, "value");
+
+      StringReader sr = new StringReader(value);
+      JsonSerializer jsonSerializer = JsonSerializer.Create(settings);
+
+      object deserializedValue;
+
+      using (JsonReader jsonReader = new JsonTextReader(sr))
+      {
+        deserializedValue = jsonSerializer.Deserialize(jsonReader, type);
+
+        if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
+          throw new JsonSerializationException("Additional text found in JSON string after finishing deserializing object.");
+      }
+
+      return deserializedValue;
+    }
+
+#if !(NET20 || NET35 || SILVERLIGHT)
+    /// <summary>
+    /// Asynchronously deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <returns>
+    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
+    /// </returns>
+    public static Task<T> DeserializeObjectAsync<T>(string value)
+    {
+      return DeserializeObjectAsync<T>(value, null);
+    }
+
+    /// <summary>
+    /// Asynchronously deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <typeparam name="T">The type of the object to deserialize to.</typeparam>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="settings">
+    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
+    /// If this is null, default serialization settings will be is used.
+    /// </param>
+    /// <returns>
+    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
+    /// </returns>
+    public static Task<T> DeserializeObjectAsync<T>(string value, JsonSerializerSettings settings)
+    {
+      return Task.Factory.StartNew(() => DeserializeObject<T>(value, settings));
+    }
+
+    /// <summary>
+    /// Asynchronously deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <returns>
+    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
+    /// </returns>
+    public static Task<object> DeserializeObjectAsync(string value)
+    {
+      return DeserializeObjectAsync(value, null, null);
+    }
+
+    /// <summary>
+    /// Asynchronously deserializes the JSON to the specified .NET type.
+    /// </summary>
+    /// <param name="value">The JSON to deserialize.</param>
+    /// <param name="type">The type of the object to deserialize to.</param>
+    /// <param name="settings">
+    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
+    /// If this is null, default serialization settings will be is used.
+    /// </param>
+    /// <returns>
+    /// A task that represents the asynchronous deserialize operation. The value of the <c>TResult</c> parameter contains the deserialized object from the JSON string.
+    /// </returns>
+    public static Task<object> DeserializeObjectAsync(string value, Type type, JsonSerializerSettings settings)
+    {
+      return Task.Factory.StartNew(() => DeserializeObject(value, type, settings));
+    }
+#endif
+    #endregion
+
+    /// <summary>
+    /// Populates the object with values from the JSON string.
+    /// </summary>
+    /// <param name="value">The JSON to populate values from.</param>
+    /// <param name="target">The target object to populate values onto.</param>
+    public static void PopulateObject(string value, object target)
+    {
+      PopulateObject(value, target, null);
+    }
+
+    /// <summary>
+    /// Populates the object with values from the JSON string.
+    /// </summary>
+    /// <param name="value">The JSON to populate values from.</param>
+    /// <param name="target">The target object to populate values onto.</param>
+    /// <param name="settings">
+    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
+    /// If this is null, default serialization settings will be is used.
+    /// </param>
+    public static void PopulateObject(string value, object target, JsonSerializerSettings settings)
+    {
+      StringReader sr = new StringReader(value);
+      JsonSerializer jsonSerializer = JsonSerializer.Create(settings);
+
+      using (JsonReader jsonReader = new JsonTextReader(sr))
+      {
+        jsonSerializer.Populate(jsonReader, target);
+
+        if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
+          throw new JsonSerializationException("Additional text found in JSON string after finishing deserializing object.");
+      }
+    }
+
+#if !(NET20 || NET35 || SILVERLIGHT)
+    /// <summary>
+    /// Asynchronously populates the object with values from the JSON string.
+    /// </summary>
+    /// <param name="value">The JSON to populate values from.</param>
+    /// <param name="target">The target object to populate values onto.</param>
+    /// <param name="settings">
+    /// The <see cref="JsonSerializerSettings"/> used to deserialize the object.
+    /// If this is null, default serialization settings will be is used.
+    /// </param>
+    /// <returns>
+    /// A task that represents the asynchronous populate operation.
+    /// </returns>
+    public static Task PopulateObjectAsync(string value, object target, JsonSerializerSettings settings)
+    {
+      return Task.Factory.StartNew(() => PopulateObject(value, target, settings));
+    }
+#endif
+
+#if !(SILVERLIGHT || NETFX_CORE)
+    /// <summary>
+    /// Serializes the XML node to a JSON string.
+    /// </summary>
+    /// <param name="node">The node to serialize.</param>
+    /// <returns>A JSON string of the XmlNode.</returns>
+    public static string SerializeXmlNode(XmlNode node)
+    {
+      return SerializeXmlNode(node, Formatting.None);
+    }
+
+    /// <summary>
+    /// Serializes the XML node to a JSON string.
+    /// </summary>
+    /// <param name="node">The node to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <returns>A JSON string of the XmlNode.</returns>
+    public static string SerializeXmlNode(XmlNode node, Formatting formatting)
+    {
+      XmlNodeConverter converter = new XmlNodeConverter();
+
+      return SerializeObject(node, formatting, converter);
+    }
+
+    /// <summary>
+    /// Serializes the XML node to a JSON string.
+    /// </summary>
+    /// <param name="node">The node to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <param name="omitRootObject">Omits writing the root object.</param>
+    /// <returns>A JSON string of the XmlNode.</returns>
+    public static string SerializeXmlNode(XmlNode node, Formatting formatting, bool omitRootObject)
+    {
+      XmlNodeConverter converter = new XmlNodeConverter {OmitRootObject = omitRootObject};
+
+      return SerializeObject(node, formatting, converter);
+    }
+
+    /// <summary>
+    /// Deserializes the XmlNode from a JSON string.
+    /// </summary>
+    /// <param name="value">The JSON string.</param>
+    /// <returns>The deserialized XmlNode</returns>
+    public static XmlDocument DeserializeXmlNode(string value)
+    {
+      return DeserializeXmlNode(value, null);
+    }
+
+    /// <summary>
+    /// Deserializes the XmlNode from a JSON string nested in a root elment.
+    /// </summary>
+    /// <param name="value">The JSON string.</param>
+    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+    /// <returns>The deserialized XmlNode</returns>
+    public static XmlDocument DeserializeXmlNode(string value, string deserializeRootElementName)
+    {
+      return DeserializeXmlNode(value, deserializeRootElementName, false);
+    }
+
+    /// <summary>
+    /// Deserializes the XmlNode from a JSON string nested in a root elment.
+    /// </summary>
+    /// <param name="value">The JSON string.</param>
+    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+    /// <param name="writeArrayAttribute">
+    /// A flag to indicate whether to write the Json.NET array attribute.
+    /// This attribute helps preserve arrays when converting the written XML back to JSON.
+    /// </param>
+    /// <returns>The deserialized XmlNode</returns>
+    public static XmlDocument DeserializeXmlNode(string value, string deserializeRootElementName, bool writeArrayAttribute)
+    {
+      XmlNodeConverter converter = new XmlNodeConverter();
+      converter.DeserializeRootElementName = deserializeRootElementName;
+      converter.WriteArrayAttribute = writeArrayAttribute;
+
+      return (XmlDocument) DeserializeObject(value, typeof (XmlDocument), converter);
+    }
+#endif
+
+#if !NET20 && (!SILVERLIGHT || WINDOWS_PHONE)
+    /// <summary>
+    /// Serializes the <see cref="XNode"/> to a JSON string.
+    /// </summary>
+    /// <param name="node">The node to convert to JSON.</param>
+    /// <returns>A JSON string of the XNode.</returns>
+    public static string SerializeXNode(XObject node)
+    {
+      return SerializeXNode(node, Formatting.None);
+    }
+
+    /// <summary>
+    /// Serializes the <see cref="XNode"/> to a JSON string.
+    /// </summary>
+    /// <param name="node">The node to convert to JSON.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <returns>A JSON string of the XNode.</returns>
+    public static string SerializeXNode(XObject node, Formatting formatting)
+    {
+      return SerializeXNode(node, formatting, false);
+    }
+
+    /// <summary>
+    /// Serializes the <see cref="XNode"/> to a JSON string.
+    /// </summary>
+    /// <param name="node">The node to serialize.</param>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <param name="omitRootObject">Omits writing the root object.</param>
+    /// <returns>A JSON string of the XNode.</returns>
+    public static string SerializeXNode(XObject node, Formatting formatting, bool omitRootObject)
+    {
+      XmlNodeConverter converter = new XmlNodeConverter {OmitRootObject = omitRootObject};
+
+      return SerializeObject(node, formatting, converter);
+    }
+
+    /// <summary>
+    /// Deserializes the <see cref="XNode"/> from a JSON string.
+    /// </summary>
+    /// <param name="value">The JSON string.</param>
+    /// <returns>The deserialized XNode</returns>
+    public static XDocument DeserializeXNode(string value)
+    {
+      return DeserializeXNode(value, null);
+    }
+
+    /// <summary>
+    /// Deserializes the <see cref="XNode"/> from a JSON string nested in a root elment.
+    /// </summary>
+    /// <param name="value">The JSON string.</param>
+    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+    /// <returns>The deserialized XNode</returns>
+    public static XDocument DeserializeXNode(string value, string deserializeRootElementName)
+    {
+      return DeserializeXNode(value, deserializeRootElementName, false);
+    }
+
+    /// <summary>
+    /// Deserializes the <see cref="XNode"/> from a JSON string nested in a root elment.
+    /// </summary>
+    /// <param name="value">The JSON string.</param>
+    /// <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
+    /// <param name="writeArrayAttribute">
+    /// A flag to indicate whether to write the Json.NET array attribute.
+    /// This attribute helps preserve arrays when converting the written XML back to JSON.
+    /// </param>
+    /// <returns>The deserialized XNode</returns>
+    public static XDocument DeserializeXNode(string value, string deserializeRootElementName, bool writeArrayAttribute)
+    {
+      XmlNodeConverter converter = new XmlNodeConverter();
+      converter.DeserializeRootElementName = deserializeRootElementName;
+      converter.WriteArrayAttribute = writeArrayAttribute;
+
+      return (XDocument) DeserializeObject(value, typeof (XDocument), converter);
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverter.cs
@@ -1,93 +1,93 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Schema;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Converts an object to and from JSON.
-  /// </summary>
-  public abstract class JsonConverter
-  {
-    /// <summary>
-    /// Writes the JSON representation of the object.
-    /// </summary>
-    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    public abstract void WriteJson(JsonWriter writer, object value, JsonSerializer serializer);
-
-    /// <summary>
-    /// Reads the JSON representation of the object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
-    /// <param name="objectType">Type of the object.</param>
-    /// <param name="existingValue">The existing value of object being read.</param>
-    /// <param name="serializer">The calling serializer.</param>
-    /// <returns>The object value.</returns>
-    public abstract object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer);
-
-    /// <summary>
-    /// Determines whether this instance can convert the specified object type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>
-    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
-    /// </returns>
-    public abstract bool CanConvert(Type objectType);
-
-    /// <summary>
-    /// Gets the <see cref="JsonSchema"/> of the JSON produced by the JsonConverter.
-    /// </summary>
-    /// <returns>The <see cref="JsonSchema"/> of the JSON produced by the JsonConverter.</returns>
-    public virtual JsonSchema GetSchema()
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonConverter"/> can read JSON.
-    /// </summary>
-    /// <value><c>true</c> if this <see cref="JsonConverter"/> can read JSON; otherwise, <c>false</c>.</value>
-    public virtual bool CanRead
-    {
-       get { return true; }
-    }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonConverter"/> can write JSON.
-    /// </summary>
-    /// <value><c>true</c> if this <see cref="JsonConverter"/> can write JSON; otherwise, <c>false</c>.</value>
-    public virtual bool CanWrite
-    {
-      get { return true; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Schema;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Converts an object to and from JSON.
+  /// </summary>
+  public abstract class JsonConverter
+  {
+    /// <summary>
+    /// Writes the JSON representation of the object.
+    /// </summary>
+    /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    public abstract void WriteJson(JsonWriter writer, object value, JsonSerializer serializer);
+
+    /// <summary>
+    /// Reads the JSON representation of the object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from.</param>
+    /// <param name="objectType">Type of the object.</param>
+    /// <param name="existingValue">The existing value of object being read.</param>
+    /// <param name="serializer">The calling serializer.</param>
+    /// <returns>The object value.</returns>
+    public abstract object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer);
+
+    /// <summary>
+    /// Determines whether this instance can convert the specified object type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>
+    /// 	<c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
+    /// </returns>
+    public abstract bool CanConvert(Type objectType);
+
+    /// <summary>
+    /// Gets the <see cref="JsonSchema"/> of the JSON produced by the JsonConverter.
+    /// </summary>
+    /// <returns>The <see cref="JsonSchema"/> of the JSON produced by the JsonConverter.</returns>
+    public virtual JsonSchema GetSchema()
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonConverter"/> can read JSON.
+    /// </summary>
+    /// <value><c>true</c> if this <see cref="JsonConverter"/> can read JSON; otherwise, <c>false</c>.</value>
+    public virtual bool CanRead
+    {
+       get { return true; }
+    }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonConverter"/> can write JSON.
+    /// </summary>
+    /// <value><c>true</c> if this <see cref="JsonConverter"/> can write JSON; otherwise, <c>false</c>.</value>
+    public virtual bool CanWrite
+    {
+      get { return true; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverterAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverterAttribute.cs
@@ -1,48 +1,48 @@
-﻿using System;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Instructs the <see cref="JsonSerializer"/> to use the specified <see cref="JsonConverter"/> when serializing the member or class.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface | AttributeTargets.Enum | AttributeTargets.Parameter, AllowMultiple = false)]
-  public sealed class JsonConverterAttribute : Attribute
-  {
-    private readonly Type _converterType;
-
-    /// <summary>
-    /// Gets the type of the converter.
-    /// </summary>
-    /// <value>The type of the converter.</value>
-    public Type ConverterType
-    {
-      get { return _converterType; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonConverterAttribute"/> class.
-    /// </summary>
-    /// <param name="converterType">Type of the converter.</param>
-    public JsonConverterAttribute(Type converterType)
-    {
-      if (converterType == null)
-        throw new ArgumentNullException("converterType");
-
-      _converterType = converterType;
-    }
-
-    internal static JsonConverter CreateJsonConverterInstance(Type converterType)
-    {
-      try
-      {
-        return (JsonConverter)Activator.CreateInstance(converterType);
-      }
-      catch (Exception ex)
-      {
-        throw new Exception("Error creating {0}".FormatWith(CultureInfo.InvariantCulture, converterType), ex);
-      }
-    }
-  }
+﻿using System;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Instructs the <see cref="JsonSerializer"/> to use the specified <see cref="JsonConverter"/> when serializing the member or class.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface | AttributeTargets.Enum | AttributeTargets.Parameter, AllowMultiple = false)]
+  public sealed class JsonConverterAttribute : Attribute
+  {
+    private readonly Type _converterType;
+
+    /// <summary>
+    /// Gets the type of the converter.
+    /// </summary>
+    /// <value>The type of the converter.</value>
+    public Type ConverterType
+    {
+      get { return _converterType; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonConverterAttribute"/> class.
+    /// </summary>
+    /// <param name="converterType">Type of the converter.</param>
+    public JsonConverterAttribute(Type converterType)
+    {
+      if (converterType == null)
+        throw new ArgumentNullException("converterType");
+
+      _converterType = converterType;
+    }
+
+    internal static JsonConverter CreateJsonConverterInstance(Type converterType)
+    {
+      try
+      {
+        return (JsonConverter)Activator.CreateInstance(converterType);
+      }
+      catch (Exception ex)
+      {
+        throw new Exception("Error creating {0}".FormatWith(CultureInfo.InvariantCulture, converterType), ex);
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverterCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonConverterCollection.cs
@@ -1,39 +1,39 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Collections.ObjectModel;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Represents a collection of <see cref="JsonConverter"/>.
-  /// </summary>
-  public class JsonConverterCollection : Collection<JsonConverter>
-  {
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Collections.ObjectModel;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Represents a collection of <see cref="JsonConverter"/>.
+  /// </summary>
+  public class JsonConverterCollection : Collection<JsonConverter>
+  {
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonIgnoreAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonIgnoreAttribute.cs
@@ -1,39 +1,39 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Instructs the <see cref="JsonSerializer"/> not to serialize the public field or public read/write property value.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
-  public sealed class JsonIgnoreAttribute : Attribute
-  {
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Instructs the <see cref="JsonSerializer"/> not to serialize the public field or public read/write property value.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
+  public sealed class JsonIgnoreAttribute : Attribute
+  {
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonObjectAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonObjectAttribute.cs
@@ -1,73 +1,73 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Instructs the <see cref="JsonSerializer"/> how to serialize the object.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, AllowMultiple = false)]
-  public sealed class JsonObjectAttribute : JsonContainerAttribute
-  {
-    private MemberSerialization _memberSerialization = MemberSerialization.OptOut;
-
-    /// <summary>
-    /// Gets or sets the member serialization.
-    /// </summary>
-    /// <value>The member serialization.</value>
-    public MemberSerialization MemberSerialization
-    {
-      get { return _memberSerialization; }
-      set { _memberSerialization = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class.
-    /// </summary>
-    public JsonObjectAttribute()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class with the specified member serialization.
-    /// </summary>
-    /// <param name="memberSerialization">The member serialization.</param>
-    public JsonObjectAttribute(MemberSerialization memberSerialization)
-    {
-      MemberSerialization = memberSerialization;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class with the specified container Id.
-    /// </summary>
-    /// <param name="id">The container Id.</param>
-    public JsonObjectAttribute(string id)
-      : base(id)
-    {
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Instructs the <see cref="JsonSerializer"/> how to serialize the object.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, AllowMultiple = false)]
+  public sealed class JsonObjectAttribute : JsonContainerAttribute
+  {
+    private MemberSerialization _memberSerialization = MemberSerialization.OptOut;
+
+    /// <summary>
+    /// Gets or sets the member serialization.
+    /// </summary>
+    /// <value>The member serialization.</value>
+    public MemberSerialization MemberSerialization
+    {
+      get { return _memberSerialization; }
+      set { _memberSerialization = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class.
+    /// </summary>
+    public JsonObjectAttribute()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class with the specified member serialization.
+    /// </summary>
+    /// <param name="memberSerialization">The member serialization.</param>
+    public JsonObjectAttribute(MemberSerialization memberSerialization)
+    {
+      MemberSerialization = memberSerialization;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonObjectAttribute"/> class with the specified container Id.
+    /// </summary>
+    /// <param name="id">The container Id.</param>
+    public JsonObjectAttribute(string id)
+      : base(id)
+    {
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonPropertyAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonPropertyAttribute.cs
@@ -1,121 +1,121 @@
-using System;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Instructs the <see cref="JsonSerializer"/> to always serialize the member with the specified name.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false)]
-  public sealed class JsonPropertyAttribute : Attribute
-  {
-    // yuck. can't set nullable properties on an attribute in C#
-    // have to use this approach to get an unset default state
-    internal NullValueHandling? _nullValueHandling;
-    internal DefaultValueHandling? _defaultValueHandling;
-    internal ReferenceLoopHandling? _referenceLoopHandling;
-    internal ObjectCreationHandling? _objectCreationHandling;
-    internal TypeNameHandling? _typeNameHandling;
-    internal bool? _isReference;
-    internal int? _order;
-
-    /// <summary>
-    /// Gets or sets the null value handling used when serializing this property.
-    /// </summary>
-    /// <value>The null value handling.</value>
-    public NullValueHandling NullValueHandling
-    {
-      get { return _nullValueHandling ?? default(NullValueHandling); }
-      set { _nullValueHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the default value handling used when serializing this property.
-    /// </summary>
-    /// <value>The default value handling.</value>
-    public DefaultValueHandling DefaultValueHandling
-    {
-      get { return _defaultValueHandling ?? default(DefaultValueHandling); }
-      set { _defaultValueHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the reference loop handling used when serializing this property.
-    /// </summary>
-    /// <value>The reference loop handling.</value>
-    public ReferenceLoopHandling ReferenceLoopHandling
-    {
-      get { return _referenceLoopHandling ?? default(ReferenceLoopHandling); }
-      set { _referenceLoopHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the object creation handling used when deserializing this property.
-    /// </summary>
-    /// <value>The object creation handling.</value>
-    public ObjectCreationHandling ObjectCreationHandling
-    {
-      get { return _objectCreationHandling ?? default(ObjectCreationHandling); }
-      set { _objectCreationHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the type name handling used when serializing this property.
-    /// </summary>
-    /// <value>The type name handling.</value>
-    public TypeNameHandling TypeNameHandling
-    {
-      get { return _typeNameHandling ?? default(TypeNameHandling); }
-      set { _typeNameHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets whether this property's value is serialized as a reference.
-    /// </summary>
-    /// <value>Whether this property's value is serialized as a reference.</value>
-    public bool IsReference
-    {
-      get { return _isReference ?? default(bool); }
-      set { _isReference = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the order of serialization and deserialization of a member.
-    /// </summary>
-    /// <value>The numeric order of serialization or deserialization.</value>
-    public int Order
-    {
-      get { return _order ?? default(int); }
-      set { _order = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the name of the property.
-    /// </summary>
-    /// <value>The name of the property.</value>
-    public string PropertyName { get; set; }
-
-    /// <summary>
-    /// Gets or sets a value indicating whether this property is required.
-    /// </summary>
-    /// <value>
-    /// 	A value indicating whether this property is required.
-    /// </value>
-    public Required Required { get; set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class.
-    /// </summary>
-    public JsonPropertyAttribute()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class with the specified name.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    public JsonPropertyAttribute(string propertyName)
-    {
-      PropertyName = propertyName;
-    }
-  }
+using System;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Instructs the <see cref="JsonSerializer"/> to always serialize the member with the specified name.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false)]
+  public sealed class JsonPropertyAttribute : Attribute
+  {
+    // yuck. can't set nullable properties on an attribute in C#
+    // have to use this approach to get an unset default state
+    internal NullValueHandling? _nullValueHandling;
+    internal DefaultValueHandling? _defaultValueHandling;
+    internal ReferenceLoopHandling? _referenceLoopHandling;
+    internal ObjectCreationHandling? _objectCreationHandling;
+    internal TypeNameHandling? _typeNameHandling;
+    internal bool? _isReference;
+    internal int? _order;
+
+    /// <summary>
+    /// Gets or sets the null value handling used when serializing this property.
+    /// </summary>
+    /// <value>The null value handling.</value>
+    public NullValueHandling NullValueHandling
+    {
+      get { return _nullValueHandling ?? default(NullValueHandling); }
+      set { _nullValueHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the default value handling used when serializing this property.
+    /// </summary>
+    /// <value>The default value handling.</value>
+    public DefaultValueHandling DefaultValueHandling
+    {
+      get { return _defaultValueHandling ?? default(DefaultValueHandling); }
+      set { _defaultValueHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the reference loop handling used when serializing this property.
+    /// </summary>
+    /// <value>The reference loop handling.</value>
+    public ReferenceLoopHandling ReferenceLoopHandling
+    {
+      get { return _referenceLoopHandling ?? default(ReferenceLoopHandling); }
+      set { _referenceLoopHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the object creation handling used when deserializing this property.
+    /// </summary>
+    /// <value>The object creation handling.</value>
+    public ObjectCreationHandling ObjectCreationHandling
+    {
+      get { return _objectCreationHandling ?? default(ObjectCreationHandling); }
+      set { _objectCreationHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the type name handling used when serializing this property.
+    /// </summary>
+    /// <value>The type name handling.</value>
+    public TypeNameHandling TypeNameHandling
+    {
+      get { return _typeNameHandling ?? default(TypeNameHandling); }
+      set { _typeNameHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets whether this property's value is serialized as a reference.
+    /// </summary>
+    /// <value>Whether this property's value is serialized as a reference.</value>
+    public bool IsReference
+    {
+      get { return _isReference ?? default(bool); }
+      set { _isReference = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the order of serialization and deserialization of a member.
+    /// </summary>
+    /// <value>The numeric order of serialization or deserialization.</value>
+    public int Order
+    {
+      get { return _order ?? default(int); }
+      set { _order = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the name of the property.
+    /// </summary>
+    /// <value>The name of the property.</value>
+    public string PropertyName { get; set; }
+
+    /// <summary>
+    /// Gets or sets a value indicating whether this property is required.
+    /// </summary>
+    /// <value>
+    /// 	A value indicating whether this property is required.
+    /// </value>
+    public Required Required { get; set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class.
+    /// </summary>
+    public JsonPropertyAttribute()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class with the specified name.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    public JsonPropertyAttribute(string propertyName)
+    {
+      PropertyName = propertyName;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonReader.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonReader.cs
@@ -1,897 +1,897 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
-  /// </summary>
-  public abstract class JsonReader : IDisposable
-  {
-    /// <summary>
-    /// Specifies the state of the reader.
-    /// </summary>
-    protected internal enum State
-    {
-      /// <summary>
-      /// The Read method has not been called.
-      /// </summary>
-      Start,
-      /// <summary>
-      /// The end of the file has been reached successfully.
-      /// </summary>
-      Complete,
-      /// <summary>
-      /// Reader is at a property.
-      /// </summary>
-      Property,
-      /// <summary>
-      /// Reader is at the start of an object.
-      /// </summary>
-      ObjectStart,
-      /// <summary>
-      /// Reader is in an object.
-      /// </summary>
-      Object,
-      /// <summary>
-      /// Reader is at the start of an array.
-      /// </summary>
-      ArrayStart,
-      /// <summary>
-      /// Reader is in an array.
-      /// </summary>
-      Array,
-      /// <summary>
-      /// The Close method has been called.
-      /// </summary>
-      Closed,
-      /// <summary>
-      /// Reader has just read a value.
-      /// </summary>
-      PostValue,
-      /// <summary>
-      /// Reader is at the start of a constructor.
-      /// </summary>
-      ConstructorStart,
-      /// <summary>
-      /// Reader in a constructor.
-      /// </summary>
-      Constructor,
-      /// <summary>
-      /// An error occurred that prevents the read operation from continuing.
-      /// </summary>
-      Error,
-      /// <summary>
-      /// The end of the file has been reached successfully.
-      /// </summary>
-      Finished
-    }
-
-    // current Token data
-    private JsonToken _tokenType;
-    private object _value;
-    private char _quoteChar;
-    internal State _currentState;
-    internal ReadType _readType;
-    private JsonPosition _currentPosition;
-    private CultureInfo _culture;
-    private DateTimeZoneHandling _dateTimeZoneHandling;
-
-    /// <summary>
-    /// Gets the current reader state.
-    /// </summary>
-    /// <value>The current reader state.</value>
-    protected State CurrentState
-    {
-      get { return _currentState; }
-    }
-
-    private readonly List<JsonPosition> _stack;
-
-    /// <summary>
-    /// Gets or sets a value indicating whether the underlying stream or
-    /// <see cref="TextReader"/> should be closed when the reader is closed.
-    /// </summary>
-    /// <value>
-    /// true to close the underlying stream or <see cref="TextReader"/> when
-    /// the reader is closed; otherwise false. The default is true.
-    /// </value>
-    public bool CloseInput { get; set; }
-
-    /// <summary>
-    /// Gets the quotation mark character used to enclose the value of a string.
-    /// </summary>
-    public virtual char QuoteChar
-    {
-      get { return _quoteChar; }
-      protected internal set { _quoteChar = value; }
-    }
-
-    /// <summary>
-    /// Get or set how <see cref="DateTime"/> time zones are handling when reading JSON.
-    /// </summary>
-    public DateTimeZoneHandling DateTimeZoneHandling
-    {
-      get { return _dateTimeZoneHandling; }
-      set { _dateTimeZoneHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets the type of the current JSON token. 
-    /// </summary>
-    public virtual JsonToken TokenType
-    {
-      get { return _tokenType; }
-    }
-
-    /// <summary>
-    /// Gets the text value of the current JSON token.
-    /// </summary>
-    public virtual object Value
-    {
-      get { return _value; }
-    }
-
-    /// <summary>
-    /// Gets The Common Language Runtime (CLR) type for the current JSON token.
-    /// </summary>
-    public virtual Type ValueType
-    {
-      get { return (_value != null) ? _value.GetType() : null; }
-    }
-
-    /// <summary>
-    /// Gets the depth of the current token in the JSON document.
-    /// </summary>
-    /// <value>The depth of the current token in the JSON document.</value>
-    public virtual int Depth
-    {
-      get
-      {
-        int depth = _stack.Count;
-        if (IsStartToken(TokenType) || _currentPosition.Type == JsonContainerType.None)
-          return depth;
-        else
-          return depth + 1;
-      }
-    }
-
-    /// <summary>
-    /// Gets the path of the current JSON token. 
-    /// </summary>
-    public virtual string Path
-    {
-      get
-      {
-        if (_currentPosition.Type == JsonContainerType.None)
-          return string.Empty;
-
-        return JsonPosition.BuildPath(_stack.Concat(new[] { _currentPosition }));
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the culture used when reading JSON. Defaults to <see cref="CultureInfo.InvariantCulture"/>.
-    /// </summary>
-    public CultureInfo Culture
-    {
-      get { return _culture ?? CultureInfo.InvariantCulture; }
-      set { _culture = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonReader"/> class with the specified <see cref="TextReader"/>.
-    /// </summary>
-    protected JsonReader()
-    {
-      _currentState = State.Start;
-      _stack = new List<JsonPosition>(4);
-      _dateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
-
-      CloseInput = true;
-    }
-
-    private void Push(JsonContainerType value)
-    {
-      UpdateScopeWithFinishedValue();
-
-      if (_currentPosition.Type == JsonContainerType.None)
-      {
-        _currentPosition.Type = value;
-      }
-      else
-      {
-        _stack.Add(_currentPosition);
-        var state = new JsonPosition
-        {
-          Type = value
-        };
-        _currentPosition = state;
-      }
-    }
-
-    private JsonContainerType Pop()
-    {
-      JsonPosition oldPosition;
-      if (_stack.Count > 0)
-      {
-        oldPosition = _currentPosition;
-        _currentPosition = _stack[_stack.Count - 1];
-        _stack.RemoveAt(_stack.Count - 1);
-      }
-      else
-      {
-        oldPosition = _currentPosition;
-        _currentPosition = new JsonPosition();
-      }
-
-      return oldPosition.Type;
-    }
-
-    private JsonContainerType Peek()
-    {
-      return _currentPosition.Type;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream.
-    /// </summary>
-    /// <returns>true if the next token was read successfully; false if there are no more tokens to read.</returns>
-    public abstract bool Read();
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public abstract int? ReadAsInt32();
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="String"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public abstract string ReadAsString();
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
-    /// </summary>
-    /// <returns>A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.</returns>
-    public abstract byte[] ReadAsBytes();
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public abstract decimal? ReadAsDecimal();
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public abstract DateTime? ReadAsDateTime();
-
-#if !NET20
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{DateTimeOffset}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public abstract DateTimeOffset? ReadAsDateTimeOffset();
-#endif
-
-    internal virtual bool ReadInternal()
-    {
-      throw new NotImplementedException();
-    }
-
-#if !NET20
-    internal DateTimeOffset? ReadAsDateTimeOffsetInternal()
-    {
-      _readType = ReadType.ReadAsDateTimeOffset;
-
-      do
-      {
-        if (!ReadInternal())
-        {
-          SetToken(JsonToken.None);
-          return null;
-        }
-      } while (TokenType == JsonToken.Comment);
-
-      if (TokenType == JsonToken.Date)
-      {
-        if (Value is DateTime)
-          SetToken(JsonToken.Date, new DateTimeOffset((DateTime)Value));
-
-        return (DateTimeOffset)Value;
-      }
-
-      if (TokenType == JsonToken.Null)
-        return null;
-
-      DateTimeOffset dt;
-      if (TokenType == JsonToken.String)
-      {
-        if (DateTimeOffset.TryParse((string)Value, Culture, DateTimeStyles.RoundtripKind, out dt))
-        {
-          SetToken(JsonToken.Date, dt);
-          return dt;
-        }
-        else
-        {
-          throw CreateReaderException(this, "Could not convert string to DateTimeOffset: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
-        }
-      }
-
-      if (TokenType == JsonToken.EndArray)
-        return null;
-
-      throw CreateReaderException(this, "Error reading date. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
-    }
-#endif
-
-    internal byte[] ReadAsBytesInternal()
-    {
-      _readType = ReadType.ReadAsBytes;
-
-      do
-      {
-        if (!ReadInternal())
-        {
-          SetToken(JsonToken.None);
-          return null;
-        }
-      } while (TokenType == JsonToken.Comment);
-
-      if (IsWrappedInTypeObject())
-      {
-        byte[] data = ReadAsBytes();
-        ReadInternal();
-        SetToken(JsonToken.Bytes, data);
-        return data;
-      }
-
-      // attempt to convert possible base 64 string to bytes
-      if (TokenType == JsonToken.String)
-      {
-        string s = (string)Value;
-        byte[] data = (s.Length == 0) ? new byte[0] : Convert.FromBase64String(s);
-        SetToken(JsonToken.Bytes, data);
-      }
-
-      if (TokenType == JsonToken.Null)
-        return null;
-
-      if (TokenType == JsonToken.Bytes)
-        return (byte[])Value;
-
-      if (TokenType == JsonToken.StartArray)
-      {
-        List<byte> data = new List<byte>();
-
-        while (ReadInternal())
-        {
-          switch (TokenType)
-          {
-            case JsonToken.Integer:
-              data.Add(Convert.ToByte(Value, CultureInfo.InvariantCulture));
-              break;
-            case JsonToken.EndArray:
-              byte[] d = data.ToArray();
-              SetToken(JsonToken.Bytes, d);
-              return d;
-            case JsonToken.Comment:
-              // skip
-              break;
-            default:
-              throw CreateReaderException(this, "Unexpected token when reading bytes: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
-          }
-        }
-
-        throw CreateReaderException(this, "Unexpected end when reading bytes.");
-      }
-
-      if (TokenType == JsonToken.EndArray)
-        return null;
-
-      throw CreateReaderException(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
-    }
-
-    internal decimal? ReadAsDecimalInternal()
-    {
-      _readType = ReadType.ReadAsDecimal;
-
-      do
-      {
-        if (!ReadInternal())
-        {
-          SetToken(JsonToken.None);
-          return null;
-        }
-      } while (TokenType == JsonToken.Comment);
-
-      if (TokenType == JsonToken.Integer || TokenType == JsonToken.Float)
-      {
-        if (!(Value is decimal))
-          SetToken(JsonToken.Float, Convert.ToDecimal(Value, CultureInfo.InvariantCulture));
-
-        return (decimal)Value;
-      }
-
-      if (TokenType == JsonToken.Null)
-        return null;
-
-      decimal d;
-      if (TokenType == JsonToken.String)
-      {
-        if (decimal.TryParse((string)Value, NumberStyles.Number, Culture, out d))
-        {
-          SetToken(JsonToken.Float, d);
-          return d;
-        }
-        else
-        {
-          throw CreateReaderException(this, "Could not convert string to decimal: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
-        }
-      }
-
-      if (TokenType == JsonToken.EndArray)
-        return null;
-
-      throw CreateReaderException(this, "Error reading decimal. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
-    }
-
-    internal int? ReadAsInt32Internal()
-    {
-      _readType = ReadType.ReadAsInt32;
-
-      do
-      {
-        if (!ReadInternal())
-        {
-          SetToken(JsonToken.None);
-          return null;
-        }
-      } while (TokenType == JsonToken.Comment);
-
-      if (TokenType == JsonToken.Integer || TokenType == JsonToken.Float)
-      {
-        if (!(Value is int))
-          SetToken(JsonToken.Integer, Convert.ToInt32(Value, CultureInfo.InvariantCulture));
-
-        return (int)Value;
-      }
-
-      if (TokenType == JsonToken.Null)
-        return null;
-
-      int i;
-      if (TokenType == JsonToken.String)
-      {
-        if (int.TryParse((string)Value, NumberStyles.Integer, Culture, out i))
-        {
-          SetToken(JsonToken.Integer, i);
-          return i;
-        }
-        else
-        {
-          throw CreateReaderException(this, "Could not convert string to integer: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
-        }
-      }
-
-      if (TokenType == JsonToken.EndArray)
-        return null;
-
-      throw CreateReaderException(this, "Error reading integer. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
-    }
-
-    internal string ReadAsStringInternal()
-    {
-      _readType = ReadType.ReadAsString;
-
-      do
-      {
-        if (!ReadInternal())
-        {
-          SetToken(JsonToken.None);
-          return null;
-        }
-      } while (TokenType == JsonToken.Comment);
-
-      if (TokenType == JsonToken.String)
-        return (string)Value;
-
-      if (TokenType == JsonToken.Null)
-        return null;
-
-      if (IsPrimitiveToken(TokenType))
-      {
-        if (Value != null)
-        {
-          string s;
-          if (ConvertUtils.IsConvertible(Value))
-            s = ConvertUtils.ToConvertible(Value).ToString(Culture);
-          else if (Value is IFormattable)
-            s = ((IFormattable)Value).ToString(null, Culture);
-          else
-            s = Value.ToString();
-
-          SetToken(JsonToken.String, s);
-          return s;
-        }
-      }
-
-      if (TokenType == JsonToken.EndArray)
-        return null;
-
-      throw CreateReaderException(this, "Error reading string. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
-    }
-
-    internal DateTime? ReadAsDateTimeInternal()
-    {
-      _readType = ReadType.ReadAsDateTime;
-
-      do
-      {
-        if (!ReadInternal())
-        {
-          SetToken(JsonToken.None);
-          return null;
-        }
-      } while (TokenType == JsonToken.Comment);
-
-      if (TokenType == JsonToken.Date)
-        return (DateTime)Value;
-
-      if (TokenType == JsonToken.Null)
-        return null;
-
-      DateTime dt;
-      if (TokenType == JsonToken.String)
-      {
-        string s = (string)Value;
-        if (string.IsNullOrEmpty(s))
-        {
-          SetToken(JsonToken.Null);
-          return null;
-        }
-
-        if (DateTime.TryParse(s, Culture, DateTimeStyles.RoundtripKind, out dt))
-        {
-          dt = JsonConvert.EnsureDateTime(dt, DateTimeZoneHandling);
-          SetToken(JsonToken.Date, dt);
-          return dt;
-        }
-        else
-        {
-          throw CreateReaderException(this, "Could not convert string to DateTime: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
-        }
-      }
-
-      if (TokenType == JsonToken.EndArray)
-        return null;
-
-      throw CreateReaderException(this, "Error reading date. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
-    }
-
-    private bool IsWrappedInTypeObject()
-    {
-      _readType = ReadType.Read;
-
-      if (TokenType == JsonToken.StartObject)
-      {
-        if (!ReadInternal())
-          throw CreateReaderException(this, "Unexpected end when reading bytes.");
-
-        if (Value.ToString() == "$type")
-        {
-          ReadInternal();
-          if (Value != null && Value.ToString().StartsWith("System.Byte[]"))
-          {
-            ReadInternal();
-            if (Value.ToString() == "$value")
-            {
-              return true;
-            }
-          }
-        }
-
-        throw CreateReaderException(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, JsonToken.StartObject));
-      }
-
-      return false;
-    }
-
-    /// <summary>
-    /// Skips the children of the current token.
-    /// </summary>
-    public void Skip()
-    {
-      if (TokenType == JsonToken.PropertyName)
-        Read();
-
-      if (IsStartToken(TokenType))
-      {
-        int depth = Depth;
-
-        while (Read() && (depth < Depth))
-        {
-        }
-      }
-    }
-
-    /// <summary>
-    /// Sets the current token.
-    /// </summary>
-    /// <param name="newToken">The new token.</param>
-    protected void SetToken(JsonToken newToken)
-    {
-      SetToken(newToken, null);
-    }
-
-    /// <summary>
-    /// Sets the current token and value.
-    /// </summary>
-    /// <param name="newToken">The new token.</param>
-    /// <param name="value">The value.</param>
-    protected void SetToken(JsonToken newToken, object value)
-    {
-      _tokenType = newToken;
-
-      switch (newToken)
-      {
-        case JsonToken.StartObject:
-          _currentState = State.ObjectStart;
-          Push(JsonContainerType.Object);
-          break;
-        case JsonToken.StartArray:
-          _currentState = State.ArrayStart;
-          Push(JsonContainerType.Array);
-          break;
-        case JsonToken.StartConstructor:
-          _currentState = State.ConstructorStart;
-          Push(JsonContainerType.Constructor);
-          break;
-        case JsonToken.EndObject:
-          ValidateEnd(JsonToken.EndObject);
-          break;
-        case JsonToken.EndArray:
-          ValidateEnd(JsonToken.EndArray);
-          break;
-        case JsonToken.EndConstructor:
-          ValidateEnd(JsonToken.EndConstructor);
-          break;
-        case JsonToken.PropertyName:
-          _currentState = State.Property;
-
-          _currentPosition.PropertyName = (string) value;
-          break;
-        case JsonToken.Undefined:
-        case JsonToken.Integer:
-        case JsonToken.Float:
-        case JsonToken.Boolean:
-        case JsonToken.Null:
-        case JsonToken.Date:
-        case JsonToken.String:
-        case JsonToken.Raw:
-        case JsonToken.Bytes:
-          _currentState = (Peek() != JsonContainerType.None) ? State.PostValue : State.Finished;
-
-          UpdateScopeWithFinishedValue();
-          break;
-      }
-
-      _value = value;
-    }
-
-    private void UpdateScopeWithFinishedValue()
-    {
-      if (_currentPosition.Type == JsonContainerType.Array
-        || _currentPosition.Type == JsonContainerType.Constructor)
-      {
-        if (_currentPosition.Position == null)
-          _currentPosition.Position = 0;
-        else
-          _currentPosition.Position++;
-      }
-    }
-
-    private void ValidateEnd(JsonToken endToken)
-    {
-      JsonContainerType currentObject = Pop();
-
-      if (GetTypeForCloseToken(endToken) != currentObject)
-        throw new JsonReaderException("JsonToken {0} is not valid for closing JsonType {1}.".FormatWith(CultureInfo.InvariantCulture, endToken, currentObject));
-
-      _currentState = (Peek() != JsonContainerType.None) ? State.PostValue : State.Finished;
-    }
-
-    /// <summary>
-    /// Sets the state based on current token type.
-    /// </summary>
-    protected void SetStateBasedOnCurrent()
-    {
-      JsonContainerType currentObject = Peek();
-
-      switch (currentObject)
-      {
-        case JsonContainerType.Object:
-          _currentState = State.Object;
-          break;
-        case JsonContainerType.Array:
-          _currentState = State.Array;
-          break;
-        case JsonContainerType.Constructor:
-          _currentState = State.Constructor;
-          break;
-        case JsonContainerType.None:
-          _currentState = State.Finished;
-          break;
-        default:
-          throw new JsonReaderException("While setting the reader state back to current object an unexpected JsonType was encountered: {0}".FormatWith(CultureInfo.InvariantCulture, currentObject));
-      }
-    }
-
-    internal static bool IsPrimitiveToken(JsonToken token)
-    {
-      switch (token)
-      {
-        case JsonToken.Integer:
-        case JsonToken.Float:
-        case JsonToken.String:
-        case JsonToken.Boolean:
-        case JsonToken.Undefined:
-        case JsonToken.Null:
-        case JsonToken.Date:
-        case JsonToken.Bytes:
-          return true;
-        default:
-          return false;
-      }
-    }
-
-    internal static bool IsStartToken(JsonToken token)
-    {
-      switch (token)
-      {
-        case JsonToken.StartObject:
-        case JsonToken.StartArray:
-        case JsonToken.StartConstructor:
-          return true;
-        case JsonToken.PropertyName:
-        case JsonToken.None:
-        case JsonToken.Comment:
-        case JsonToken.Integer:
-        case JsonToken.Float:
-        case JsonToken.String:
-        case JsonToken.Boolean:
-        case JsonToken.Null:
-        case JsonToken.Undefined:
-        case JsonToken.EndObject:
-        case JsonToken.EndArray:
-        case JsonToken.EndConstructor:
-        case JsonToken.Date:
-        case JsonToken.Raw:
-        case JsonToken.Bytes:
-          return false;
-        default:
-          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("token", token, "Unexpected JsonToken value.");
-      }
-    }
-
-    private JsonContainerType GetTypeForCloseToken(JsonToken token)
-    {
-      switch (token)
-      {
-        case JsonToken.EndObject:
-          return JsonContainerType.Object;
-        case JsonToken.EndArray:
-          return JsonContainerType.Array;
-        case JsonToken.EndConstructor:
-          return JsonContainerType.Constructor;
-        default:
-          throw new JsonReaderException("Not a valid close JsonToken: {0}".FormatWith(CultureInfo.InvariantCulture, token));
-      }
-    }
-
-    /// <summary>
-    /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
-    /// </summary>
-    void IDisposable.Dispose()
-    {
-      Dispose(true);
-    }
-
-    /// <summary>
-    /// Releases unmanaged and - optionally - managed resources
-    /// </summary>
-    /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
-    protected virtual void Dispose(bool disposing)
-    {
-      if (_currentState != State.Closed && disposing)
-        Close();
-    }
-
-    /// <summary>
-    /// Changes the <see cref="State"/> to Closed. 
-    /// </summary>
-    public virtual void Close()
-    {
-      _currentState = State.Closed;
-      _tokenType = JsonToken.None;
-      _value = null;
-    }
-
-    internal JsonReaderException CreateReaderException(JsonReader reader, string message)
-    {
-      return CreateReaderException(reader, message, null);
-    }
-
-    internal JsonReaderException CreateReaderException(JsonReader reader, string message, Exception ex)
-    {
-      return CreateReaderException(reader as IJsonLineInfo, message, ex);
-    }
-
-    internal JsonReaderException CreateReaderException(IJsonLineInfo lineInfo, string message, Exception ex)
-    {
-      message = FormatExceptionMessage(lineInfo, message);
-
-      int lineNumber;
-      int linePosition;
-      if (lineInfo != null && lineInfo.HasLineInfo())
-      {
-        lineNumber = lineInfo.LineNumber;
-        linePosition = lineInfo.LinePosition;
-      }
-      else
-      {
-        lineNumber = 0;
-        linePosition = 0;
-      }
-
-      return new JsonReaderException(message, ex, Path, lineNumber, linePosition);
-    }
-
-    internal static string FormatExceptionMessage(IJsonLineInfo lineInfo, string message)
-    {
-      if (!message.EndsWith("."))
-        message += ".";
-
-      if (lineInfo != null && lineInfo.HasLineInfo())
-        message += " Line {0}, position {1}.".FormatWith(CultureInfo.InvariantCulture, lineInfo.LineNumber, lineInfo.LinePosition);
-
-      return message;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
+  /// </summary>
+  public abstract class JsonReader : IDisposable
+  {
+    /// <summary>
+    /// Specifies the state of the reader.
+    /// </summary>
+    protected internal enum State
+    {
+      /// <summary>
+      /// The Read method has not been called.
+      /// </summary>
+      Start,
+      /// <summary>
+      /// The end of the file has been reached successfully.
+      /// </summary>
+      Complete,
+      /// <summary>
+      /// Reader is at a property.
+      /// </summary>
+      Property,
+      /// <summary>
+      /// Reader is at the start of an object.
+      /// </summary>
+      ObjectStart,
+      /// <summary>
+      /// Reader is in an object.
+      /// </summary>
+      Object,
+      /// <summary>
+      /// Reader is at the start of an array.
+      /// </summary>
+      ArrayStart,
+      /// <summary>
+      /// Reader is in an array.
+      /// </summary>
+      Array,
+      /// <summary>
+      /// The Close method has been called.
+      /// </summary>
+      Closed,
+      /// <summary>
+      /// Reader has just read a value.
+      /// </summary>
+      PostValue,
+      /// <summary>
+      /// Reader is at the start of a constructor.
+      /// </summary>
+      ConstructorStart,
+      /// <summary>
+      /// Reader in a constructor.
+      /// </summary>
+      Constructor,
+      /// <summary>
+      /// An error occurred that prevents the read operation from continuing.
+      /// </summary>
+      Error,
+      /// <summary>
+      /// The end of the file has been reached successfully.
+      /// </summary>
+      Finished
+    }
+
+    // current Token data
+    private JsonToken _tokenType;
+    private object _value;
+    private char _quoteChar;
+    internal State _currentState;
+    internal ReadType _readType;
+    private JsonPosition _currentPosition;
+    private CultureInfo _culture;
+    private DateTimeZoneHandling _dateTimeZoneHandling;
+
+    /// <summary>
+    /// Gets the current reader state.
+    /// </summary>
+    /// <value>The current reader state.</value>
+    protected State CurrentState
+    {
+      get { return _currentState; }
+    }
+
+    private readonly List<JsonPosition> _stack;
+
+    /// <summary>
+    /// Gets or sets a value indicating whether the underlying stream or
+    /// <see cref="TextReader"/> should be closed when the reader is closed.
+    /// </summary>
+    /// <value>
+    /// true to close the underlying stream or <see cref="TextReader"/> when
+    /// the reader is closed; otherwise false. The default is true.
+    /// </value>
+    public bool CloseInput { get; set; }
+
+    /// <summary>
+    /// Gets the quotation mark character used to enclose the value of a string.
+    /// </summary>
+    public virtual char QuoteChar
+    {
+      get { return _quoteChar; }
+      protected internal set { _quoteChar = value; }
+    }
+
+    /// <summary>
+    /// Get or set how <see cref="DateTime"/> time zones are handling when reading JSON.
+    /// </summary>
+    public DateTimeZoneHandling DateTimeZoneHandling
+    {
+      get { return _dateTimeZoneHandling; }
+      set { _dateTimeZoneHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets the type of the current JSON token. 
+    /// </summary>
+    public virtual JsonToken TokenType
+    {
+      get { return _tokenType; }
+    }
+
+    /// <summary>
+    /// Gets the text value of the current JSON token.
+    /// </summary>
+    public virtual object Value
+    {
+      get { return _value; }
+    }
+
+    /// <summary>
+    /// Gets The Common Language Runtime (CLR) type for the current JSON token.
+    /// </summary>
+    public virtual Type ValueType
+    {
+      get { return (_value != null) ? _value.GetType() : null; }
+    }
+
+    /// <summary>
+    /// Gets the depth of the current token in the JSON document.
+    /// </summary>
+    /// <value>The depth of the current token in the JSON document.</value>
+    public virtual int Depth
+    {
+      get
+      {
+        int depth = _stack.Count;
+        if (IsStartToken(TokenType) || _currentPosition.Type == JsonContainerType.None)
+          return depth;
+        else
+          return depth + 1;
+      }
+    }
+
+    /// <summary>
+    /// Gets the path of the current JSON token. 
+    /// </summary>
+    public virtual string Path
+    {
+      get
+      {
+        if (_currentPosition.Type == JsonContainerType.None)
+          return string.Empty;
+
+        return JsonPosition.BuildPath(_stack.Concat(new[] { _currentPosition }));
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets the culture used when reading JSON. Defaults to <see cref="CultureInfo.InvariantCulture"/>.
+    /// </summary>
+    public CultureInfo Culture
+    {
+      get { return _culture ?? CultureInfo.InvariantCulture; }
+      set { _culture = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonReader"/> class with the specified <see cref="TextReader"/>.
+    /// </summary>
+    protected JsonReader()
+    {
+      _currentState = State.Start;
+      _stack = new List<JsonPosition>(4);
+      _dateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
+
+      CloseInput = true;
+    }
+
+    private void Push(JsonContainerType value)
+    {
+      UpdateScopeWithFinishedValue();
+
+      if (_currentPosition.Type == JsonContainerType.None)
+      {
+        _currentPosition.Type = value;
+      }
+      else
+      {
+        _stack.Add(_currentPosition);
+        var state = new JsonPosition
+        {
+          Type = value
+        };
+        _currentPosition = state;
+      }
+    }
+
+    private JsonContainerType Pop()
+    {
+      JsonPosition oldPosition;
+      if (_stack.Count > 0)
+      {
+        oldPosition = _currentPosition;
+        _currentPosition = _stack[_stack.Count - 1];
+        _stack.RemoveAt(_stack.Count - 1);
+      }
+      else
+      {
+        oldPosition = _currentPosition;
+        _currentPosition = new JsonPosition();
+      }
+
+      return oldPosition.Type;
+    }
+
+    private JsonContainerType Peek()
+    {
+      return _currentPosition.Type;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream.
+    /// </summary>
+    /// <returns>true if the next token was read successfully; false if there are no more tokens to read.</returns>
+    public abstract bool Read();
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public abstract int? ReadAsInt32();
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="String"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public abstract string ReadAsString();
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
+    /// </summary>
+    /// <returns>A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.</returns>
+    public abstract byte[] ReadAsBytes();
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public abstract decimal? ReadAsDecimal();
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public abstract DateTime? ReadAsDateTime();
+
+#if !NET20
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{DateTimeOffset}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public abstract DateTimeOffset? ReadAsDateTimeOffset();
+#endif
+
+    internal virtual bool ReadInternal()
+    {
+      throw new NotImplementedException();
+    }
+
+#if !NET20
+    internal DateTimeOffset? ReadAsDateTimeOffsetInternal()
+    {
+      _readType = ReadType.ReadAsDateTimeOffset;
+
+      do
+      {
+        if (!ReadInternal())
+        {
+          SetToken(JsonToken.None);
+          return null;
+        }
+      } while (TokenType == JsonToken.Comment);
+
+      if (TokenType == JsonToken.Date)
+      {
+        if (Value is DateTime)
+          SetToken(JsonToken.Date, new DateTimeOffset((DateTime)Value));
+
+        return (DateTimeOffset)Value;
+      }
+
+      if (TokenType == JsonToken.Null)
+        return null;
+
+      DateTimeOffset dt;
+      if (TokenType == JsonToken.String)
+      {
+        if (DateTimeOffset.TryParse((string)Value, Culture, DateTimeStyles.RoundtripKind, out dt))
+        {
+          SetToken(JsonToken.Date, dt);
+          return dt;
+        }
+        else
+        {
+          throw CreateReaderException(this, "Could not convert string to DateTimeOffset: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
+        }
+      }
+
+      if (TokenType == JsonToken.EndArray)
+        return null;
+
+      throw CreateReaderException(this, "Error reading date. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
+    }
+#endif
+
+    internal byte[] ReadAsBytesInternal()
+    {
+      _readType = ReadType.ReadAsBytes;
+
+      do
+      {
+        if (!ReadInternal())
+        {
+          SetToken(JsonToken.None);
+          return null;
+        }
+      } while (TokenType == JsonToken.Comment);
+
+      if (IsWrappedInTypeObject())
+      {
+        byte[] data = ReadAsBytes();
+        ReadInternal();
+        SetToken(JsonToken.Bytes, data);
+        return data;
+      }
+
+      // attempt to convert possible base 64 string to bytes
+      if (TokenType == JsonToken.String)
+      {
+        string s = (string)Value;
+        byte[] data = (s.Length == 0) ? new byte[0] : Convert.FromBase64String(s);
+        SetToken(JsonToken.Bytes, data);
+      }
+
+      if (TokenType == JsonToken.Null)
+        return null;
+
+      if (TokenType == JsonToken.Bytes)
+        return (byte[])Value;
+
+      if (TokenType == JsonToken.StartArray)
+      {
+        List<byte> data = new List<byte>();
+
+        while (ReadInternal())
+        {
+          switch (TokenType)
+          {
+            case JsonToken.Integer:
+              data.Add(Convert.ToByte(Value, CultureInfo.InvariantCulture));
+              break;
+            case JsonToken.EndArray:
+              byte[] d = data.ToArray();
+              SetToken(JsonToken.Bytes, d);
+              return d;
+            case JsonToken.Comment:
+              // skip
+              break;
+            default:
+              throw CreateReaderException(this, "Unexpected token when reading bytes: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
+          }
+        }
+
+        throw CreateReaderException(this, "Unexpected end when reading bytes.");
+      }
+
+      if (TokenType == JsonToken.EndArray)
+        return null;
+
+      throw CreateReaderException(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
+    }
+
+    internal decimal? ReadAsDecimalInternal()
+    {
+      _readType = ReadType.ReadAsDecimal;
+
+      do
+      {
+        if (!ReadInternal())
+        {
+          SetToken(JsonToken.None);
+          return null;
+        }
+      } while (TokenType == JsonToken.Comment);
+
+      if (TokenType == JsonToken.Integer || TokenType == JsonToken.Float)
+      {
+        if (!(Value is decimal))
+          SetToken(JsonToken.Float, Convert.ToDecimal(Value, CultureInfo.InvariantCulture));
+
+        return (decimal)Value;
+      }
+
+      if (TokenType == JsonToken.Null)
+        return null;
+
+      decimal d;
+      if (TokenType == JsonToken.String)
+      {
+        if (decimal.TryParse((string)Value, NumberStyles.Number, Culture, out d))
+        {
+          SetToken(JsonToken.Float, d);
+          return d;
+        }
+        else
+        {
+          throw CreateReaderException(this, "Could not convert string to decimal: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
+        }
+      }
+
+      if (TokenType == JsonToken.EndArray)
+        return null;
+
+      throw CreateReaderException(this, "Error reading decimal. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
+    }
+
+    internal int? ReadAsInt32Internal()
+    {
+      _readType = ReadType.ReadAsInt32;
+
+      do
+      {
+        if (!ReadInternal())
+        {
+          SetToken(JsonToken.None);
+          return null;
+        }
+      } while (TokenType == JsonToken.Comment);
+
+      if (TokenType == JsonToken.Integer || TokenType == JsonToken.Float)
+      {
+        if (!(Value is int))
+          SetToken(JsonToken.Integer, Convert.ToInt32(Value, CultureInfo.InvariantCulture));
+
+        return (int)Value;
+      }
+
+      if (TokenType == JsonToken.Null)
+        return null;
+
+      int i;
+      if (TokenType == JsonToken.String)
+      {
+        if (int.TryParse((string)Value, NumberStyles.Integer, Culture, out i))
+        {
+          SetToken(JsonToken.Integer, i);
+          return i;
+        }
+        else
+        {
+          throw CreateReaderException(this, "Could not convert string to integer: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
+        }
+      }
+
+      if (TokenType == JsonToken.EndArray)
+        return null;
+
+      throw CreateReaderException(this, "Error reading integer. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
+    }
+
+    internal string ReadAsStringInternal()
+    {
+      _readType = ReadType.ReadAsString;
+
+      do
+      {
+        if (!ReadInternal())
+        {
+          SetToken(JsonToken.None);
+          return null;
+        }
+      } while (TokenType == JsonToken.Comment);
+
+      if (TokenType == JsonToken.String)
+        return (string)Value;
+
+      if (TokenType == JsonToken.Null)
+        return null;
+
+      if (IsPrimitiveToken(TokenType))
+      {
+        if (Value != null)
+        {
+          string s;
+          if (ConvertUtils.IsConvertible(Value))
+            s = ConvertUtils.ToConvertible(Value).ToString(Culture);
+          else if (Value is IFormattable)
+            s = ((IFormattable)Value).ToString(null, Culture);
+          else
+            s = Value.ToString();
+
+          SetToken(JsonToken.String, s);
+          return s;
+        }
+      }
+
+      if (TokenType == JsonToken.EndArray)
+        return null;
+
+      throw CreateReaderException(this, "Error reading string. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
+    }
+
+    internal DateTime? ReadAsDateTimeInternal()
+    {
+      _readType = ReadType.ReadAsDateTime;
+
+      do
+      {
+        if (!ReadInternal())
+        {
+          SetToken(JsonToken.None);
+          return null;
+        }
+      } while (TokenType == JsonToken.Comment);
+
+      if (TokenType == JsonToken.Date)
+        return (DateTime)Value;
+
+      if (TokenType == JsonToken.Null)
+        return null;
+
+      DateTime dt;
+      if (TokenType == JsonToken.String)
+      {
+        string s = (string)Value;
+        if (string.IsNullOrEmpty(s))
+        {
+          SetToken(JsonToken.Null);
+          return null;
+        }
+
+        if (DateTime.TryParse(s, Culture, DateTimeStyles.RoundtripKind, out dt))
+        {
+          dt = JsonConvert.EnsureDateTime(dt, DateTimeZoneHandling);
+          SetToken(JsonToken.Date, dt);
+          return dt;
+        }
+        else
+        {
+          throw CreateReaderException(this, "Could not convert string to DateTime: {0}.".FormatWith(CultureInfo.InvariantCulture, Value));
+        }
+      }
+
+      if (TokenType == JsonToken.EndArray)
+        return null;
+
+      throw CreateReaderException(this, "Error reading date. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType));
+    }
+
+    private bool IsWrappedInTypeObject()
+    {
+      _readType = ReadType.Read;
+
+      if (TokenType == JsonToken.StartObject)
+      {
+        if (!ReadInternal())
+          throw CreateReaderException(this, "Unexpected end when reading bytes.");
+
+        if (Value.ToString() == "$type")
+        {
+          ReadInternal();
+          if (Value != null && Value.ToString().StartsWith("System.Byte[]"))
+          {
+            ReadInternal();
+            if (Value.ToString() == "$value")
+            {
+              return true;
+            }
+          }
+        }
+
+        throw CreateReaderException(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, JsonToken.StartObject));
+      }
+
+      return false;
+    }
+
+    /// <summary>
+    /// Skips the children of the current token.
+    /// </summary>
+    public void Skip()
+    {
+      if (TokenType == JsonToken.PropertyName)
+        Read();
+
+      if (IsStartToken(TokenType))
+      {
+        int depth = Depth;
+
+        while (Read() && (depth < Depth))
+        {
+        }
+      }
+    }
+
+    /// <summary>
+    /// Sets the current token.
+    /// </summary>
+    /// <param name="newToken">The new token.</param>
+    protected void SetToken(JsonToken newToken)
+    {
+      SetToken(newToken, null);
+    }
+
+    /// <summary>
+    /// Sets the current token and value.
+    /// </summary>
+    /// <param name="newToken">The new token.</param>
+    /// <param name="value">The value.</param>
+    protected void SetToken(JsonToken newToken, object value)
+    {
+      _tokenType = newToken;
+
+      switch (newToken)
+      {
+        case JsonToken.StartObject:
+          _currentState = State.ObjectStart;
+          Push(JsonContainerType.Object);
+          break;
+        case JsonToken.StartArray:
+          _currentState = State.ArrayStart;
+          Push(JsonContainerType.Array);
+          break;
+        case JsonToken.StartConstructor:
+          _currentState = State.ConstructorStart;
+          Push(JsonContainerType.Constructor);
+          break;
+        case JsonToken.EndObject:
+          ValidateEnd(JsonToken.EndObject);
+          break;
+        case JsonToken.EndArray:
+          ValidateEnd(JsonToken.EndArray);
+          break;
+        case JsonToken.EndConstructor:
+          ValidateEnd(JsonToken.EndConstructor);
+          break;
+        case JsonToken.PropertyName:
+          _currentState = State.Property;
+
+          _currentPosition.PropertyName = (string) value;
+          break;
+        case JsonToken.Undefined:
+        case JsonToken.Integer:
+        case JsonToken.Float:
+        case JsonToken.Boolean:
+        case JsonToken.Null:
+        case JsonToken.Date:
+        case JsonToken.String:
+        case JsonToken.Raw:
+        case JsonToken.Bytes:
+          _currentState = (Peek() != JsonContainerType.None) ? State.PostValue : State.Finished;
+
+          UpdateScopeWithFinishedValue();
+          break;
+      }
+
+      _value = value;
+    }
+
+    private void UpdateScopeWithFinishedValue()
+    {
+      if (_currentPosition.Type == JsonContainerType.Array
+        || _currentPosition.Type == JsonContainerType.Constructor)
+      {
+        if (_currentPosition.Position == null)
+          _currentPosition.Position = 0;
+        else
+          _currentPosition.Position++;
+      }
+    }
+
+    private void ValidateEnd(JsonToken endToken)
+    {
+      JsonContainerType currentObject = Pop();
+
+      if (GetTypeForCloseToken(endToken) != currentObject)
+        throw new JsonReaderException("JsonToken {0} is not valid for closing JsonType {1}.".FormatWith(CultureInfo.InvariantCulture, endToken, currentObject));
+
+      _currentState = (Peek() != JsonContainerType.None) ? State.PostValue : State.Finished;
+    }
+
+    /// <summary>
+    /// Sets the state based on current token type.
+    /// </summary>
+    protected void SetStateBasedOnCurrent()
+    {
+      JsonContainerType currentObject = Peek();
+
+      switch (currentObject)
+      {
+        case JsonContainerType.Object:
+          _currentState = State.Object;
+          break;
+        case JsonContainerType.Array:
+          _currentState = State.Array;
+          break;
+        case JsonContainerType.Constructor:
+          _currentState = State.Constructor;
+          break;
+        case JsonContainerType.None:
+          _currentState = State.Finished;
+          break;
+        default:
+          throw new JsonReaderException("While setting the reader state back to current object an unexpected JsonType was encountered: {0}".FormatWith(CultureInfo.InvariantCulture, currentObject));
+      }
+    }
+
+    internal static bool IsPrimitiveToken(JsonToken token)
+    {
+      switch (token)
+      {
+        case JsonToken.Integer:
+        case JsonToken.Float:
+        case JsonToken.String:
+        case JsonToken.Boolean:
+        case JsonToken.Undefined:
+        case JsonToken.Null:
+        case JsonToken.Date:
+        case JsonToken.Bytes:
+          return true;
+        default:
+          return false;
+      }
+    }
+
+    internal static bool IsStartToken(JsonToken token)
+    {
+      switch (token)
+      {
+        case JsonToken.StartObject:
+        case JsonToken.StartArray:
+        case JsonToken.StartConstructor:
+          return true;
+        case JsonToken.PropertyName:
+        case JsonToken.None:
+        case JsonToken.Comment:
+        case JsonToken.Integer:
+        case JsonToken.Float:
+        case JsonToken.String:
+        case JsonToken.Boolean:
+        case JsonToken.Null:
+        case JsonToken.Undefined:
+        case JsonToken.EndObject:
+        case JsonToken.EndArray:
+        case JsonToken.EndConstructor:
+        case JsonToken.Date:
+        case JsonToken.Raw:
+        case JsonToken.Bytes:
+          return false;
+        default:
+          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("token", token, "Unexpected JsonToken value.");
+      }
+    }
+
+    private JsonContainerType GetTypeForCloseToken(JsonToken token)
+    {
+      switch (token)
+      {
+        case JsonToken.EndObject:
+          return JsonContainerType.Object;
+        case JsonToken.EndArray:
+          return JsonContainerType.Array;
+        case JsonToken.EndConstructor:
+          return JsonContainerType.Constructor;
+        default:
+          throw new JsonReaderException("Not a valid close JsonToken: {0}".FormatWith(CultureInfo.InvariantCulture, token));
+      }
+    }
+
+    /// <summary>
+    /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+    /// </summary>
+    void IDisposable.Dispose()
+    {
+      Dispose(true);
+    }
+
+    /// <summary>
+    /// Releases unmanaged and - optionally - managed resources
+    /// </summary>
+    /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
+    protected virtual void Dispose(bool disposing)
+    {
+      if (_currentState != State.Closed && disposing)
+        Close();
+    }
+
+    /// <summary>
+    /// Changes the <see cref="State"/> to Closed. 
+    /// </summary>
+    public virtual void Close()
+    {
+      _currentState = State.Closed;
+      _tokenType = JsonToken.None;
+      _value = null;
+    }
+
+    internal JsonReaderException CreateReaderException(JsonReader reader, string message)
+    {
+      return CreateReaderException(reader, message, null);
+    }
+
+    internal JsonReaderException CreateReaderException(JsonReader reader, string message, Exception ex)
+    {
+      return CreateReaderException(reader as IJsonLineInfo, message, ex);
+    }
+
+    internal JsonReaderException CreateReaderException(IJsonLineInfo lineInfo, string message, Exception ex)
+    {
+      message = FormatExceptionMessage(lineInfo, message);
+
+      int lineNumber;
+      int linePosition;
+      if (lineInfo != null && lineInfo.HasLineInfo())
+      {
+        lineNumber = lineInfo.LineNumber;
+        linePosition = lineInfo.LinePosition;
+      }
+      else
+      {
+        lineNumber = 0;
+        linePosition = 0;
+      }
+
+      return new JsonReaderException(message, ex, Path, lineNumber, linePosition);
+    }
+
+    internal static string FormatExceptionMessage(IJsonLineInfo lineInfo, string message)
+    {
+      if (!message.EndsWith("."))
+        message += ".";
+
+      if (lineInfo != null && lineInfo.HasLineInfo())
+        message += " Line {0}, position {1}.".FormatWith(CultureInfo.InvariantCulture, lineInfo.LineNumber, lineInfo.LinePosition);
+
+      return message;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonReaderException.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonReaderException.cs
@@ -1,108 +1,108 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Runtime.Serialization;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// The exception thrown when an error occurs while reading Json text.
-  /// </summary>
-#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
-  [Serializable]
-#endif
-  public class JsonReaderException : Exception
-  {
-    /// <summary>
-    /// Gets the line number indicating where the error occurred.
-    /// </summary>
-    /// <value>The line number indicating where the error occurred.</value>
-    public int LineNumber { get; private set; }
-
-
-    /// <summary>
-    /// Gets the line position indicating where the error occurred.
-    /// </summary>
-    /// <value>The line position indicating where the error occurred.</value>
-    public int LinePosition { get; private set; }
-
-    /// <summary>
-    /// Gets the path to the JSON where the error occurred.
-    /// </summary>
-    /// <value>The path to the JSON where the error occurred.</value>
-    public string Path { get; private set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonReaderException"/> class.
-    /// </summary>
-    public JsonReaderException()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonReaderException"/> class
-    /// with a specified error message.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    public JsonReaderException(string message)
-      : base(message)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonReaderException"/> class
-    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
-    public JsonReaderException(string message, Exception innerException)
-      : base(message, innerException)
-    {
-    }
-
-#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonReaderException"/> class.
-    /// </summary>
-    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
-    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
-    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
-    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
-    public JsonReaderException(SerializationInfo info, StreamingContext context)
-      : base(info, context)
-    {
-    }
-#endif
-
-    internal JsonReaderException(string message, Exception innerException, string path, int lineNumber, int linePosition)
-      : base(message, innerException)
-    {
-      Path = path;
-      LineNumber = lineNumber;
-      LinePosition = linePosition;
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Runtime.Serialization;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// The exception thrown when an error occurs while reading Json text.
+  /// </summary>
+#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
+  [Serializable]
+#endif
+  public class JsonReaderException : Exception
+  {
+    /// <summary>
+    /// Gets the line number indicating where the error occurred.
+    /// </summary>
+    /// <value>The line number indicating where the error occurred.</value>
+    public int LineNumber { get; private set; }
+
+
+    /// <summary>
+    /// Gets the line position indicating where the error occurred.
+    /// </summary>
+    /// <value>The line position indicating where the error occurred.</value>
+    public int LinePosition { get; private set; }
+
+    /// <summary>
+    /// Gets the path to the JSON where the error occurred.
+    /// </summary>
+    /// <value>The path to the JSON where the error occurred.</value>
+    public string Path { get; private set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonReaderException"/> class.
+    /// </summary>
+    public JsonReaderException()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonReaderException"/> class
+    /// with a specified error message.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    public JsonReaderException(string message)
+      : base(message)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonReaderException"/> class
+    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
+    public JsonReaderException(string message, Exception innerException)
+      : base(message, innerException)
+    {
+    }
+
+#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonReaderException"/> class.
+    /// </summary>
+    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
+    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
+    public JsonReaderException(SerializationInfo info, StreamingContext context)
+      : base(info, context)
+    {
+    }
+#endif
+
+    internal JsonReaderException(string message, Exception innerException, string path, int lineNumber, int linePosition)
+      : base(message, innerException)
+    {
+      Path = path;
+      LineNumber = lineNumber;
+      LinePosition = linePosition;
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializationException.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializationException.cs
@@ -1,83 +1,83 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-using System.Text;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// The exception thrown when an error occurs during Json serialization or deserialization.
-  /// </summary>
-#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
-  [Serializable]
-#endif
-  public class JsonSerializationException : Exception
-  {
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class.
-    /// </summary>
-    public JsonSerializationException()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class
-    /// with a specified error message.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    public JsonSerializationException(string message)
-      : base(message)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class
-    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
-    public JsonSerializationException(string message, Exception innerException)
-      : base(message, innerException)
-    {
-    }
-
-#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class.
-    /// </summary>
-    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
-    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
-    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
-    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
-    public JsonSerializationException(SerializationInfo info, StreamingContext context)
-      : base(info, context)
-    {
-    }
-#endif
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// The exception thrown when an error occurs during Json serialization or deserialization.
+  /// </summary>
+#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
+  [Serializable]
+#endif
+  public class JsonSerializationException : Exception
+  {
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class.
+    /// </summary>
+    public JsonSerializationException()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class
+    /// with a specified error message.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    public JsonSerializationException(string message)
+      : base(message)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class
+    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
+    public JsonSerializationException(string message, Exception innerException)
+      : base(message, innerException)
+    {
+    }
+
+#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSerializationException"/> class.
+    /// </summary>
+    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
+    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
+    public JsonSerializationException(SerializationInfo info, StreamingContext context)
+      : base(info, context)
+    {
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializer.cs
@@ -1,584 +1,584 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Runtime.Serialization.Formatters;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Serialization;
-using Newtonsoft.Json.Utilities;
-using System.Runtime.Serialization;
-using ErrorEventArgs=Newtonsoft.Json.Serialization.ErrorEventArgs;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Serializes and deserializes objects into and from the JSON format.
-  /// The <see cref="JsonSerializer"/> enables you to control how objects are encoded into JSON.
-  /// </summary>
-  public class JsonSerializer
-  {
-    #region Properties
-    private TypeNameHandling _typeNameHandling;
-    private FormatterAssemblyStyle _typeNameAssemblyFormat;
-    private PreserveReferencesHandling _preserveReferencesHandling;
-    private ReferenceLoopHandling _referenceLoopHandling;
-    private MissingMemberHandling _missingMemberHandling;
-    private ObjectCreationHandling _objectCreationHandling;
-    private NullValueHandling _nullValueHandling;
-    private DefaultValueHandling _defaultValueHandling;
-    private ConstructorHandling _constructorHandling;
-    private JsonConverterCollection _converters;
-    private IContractResolver _contractResolver;
-    private IReferenceResolver _referenceResolver;
-    private SerializationBinder _binder;
-    private StreamingContext _context;
-    private Formatting? _formatting;
-    private DateFormatHandling? _dateFormatHandling;
-    private DateTimeZoneHandling? _dateTimeZoneHandling;
-    private CultureInfo _culture;
-
-    /// <summary>
-    /// Occurs when the <see cref="JsonSerializer"/> errors during serialization and deserialization.
-    /// </summary>
-    public virtual event EventHandler<ErrorEventArgs> Error;
-
-    /// <summary>
-    /// Gets or sets the <see cref="IReferenceResolver"/> used by the serializer when resolving references.
-    /// </summary>
-    public virtual IReferenceResolver ReferenceResolver
-    {
-      get
-      {
-        if (_referenceResolver == null)
-          _referenceResolver = new DefaultReferenceResolver();
-
-        return _referenceResolver;
-      }
-      set
-      {
-        if (value == null)
-          throw new ArgumentNullException("value", "Reference resolver cannot be null.");
-
-        _referenceResolver = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the <see cref="SerializationBinder"/> used by the serializer when resolving type names.
-    /// </summary>
-    public virtual SerializationBinder Binder
-    {
-      get
-      {
-        return _binder;
-      }
-      set
-      {
-        if (value == null)
-          throw new ArgumentNullException("value", "Serialization binder cannot be null.");
-
-        _binder = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets how type name writing and reading is handled by the serializer.
-    /// </summary>
-    public virtual TypeNameHandling TypeNameHandling
-    {
-      get { return _typeNameHandling; }
-      set
-      {
-        if (value < TypeNameHandling.None || value > TypeNameHandling.Auto)
-          throw new ArgumentOutOfRangeException("value");
-
-        _typeNameHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets how a type name assembly is written and resolved by the serializer.
-    /// </summary>
-    /// <value>The type name assembly format.</value>
-    public virtual FormatterAssemblyStyle TypeNameAssemblyFormat
-    {
-      get { return _typeNameAssemblyFormat; }
-      set
-      {
-        if (value < FormatterAssemblyStyle.Simple || value > FormatterAssemblyStyle.Full)
-          throw new ArgumentOutOfRangeException("value");
-
-        _typeNameAssemblyFormat = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets how object references are preserved by the serializer.
-    /// </summary>
-    public virtual PreserveReferencesHandling PreserveReferencesHandling
-    {
-      get { return _preserveReferencesHandling; }
-      set
-      {
-        if (value < PreserveReferencesHandling.None || value > PreserveReferencesHandling.All)
-          throw new ArgumentOutOfRangeException("value");
-
-        _preserveReferencesHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Get or set how reference loops (e.g. a class referencing itself) is handled.
-    /// </summary>
-    public virtual ReferenceLoopHandling ReferenceLoopHandling
-    {
-      get { return _referenceLoopHandling; }
-      set
-      {
-        if (value < ReferenceLoopHandling.Error || value > ReferenceLoopHandling.Serialize)
-          throw new ArgumentOutOfRangeException("value");
-
-        _referenceLoopHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
-    /// </summary>
-    public virtual MissingMemberHandling MissingMemberHandling
-    {
-      get { return _missingMemberHandling; }
-      set
-      {
-        if (value < MissingMemberHandling.Ignore || value > MissingMemberHandling.Error)
-          throw new ArgumentOutOfRangeException("value");
-
-        _missingMemberHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Get or set how null values are handled during serialization and deserialization.
-    /// </summary>
-    public virtual NullValueHandling NullValueHandling
-    {
-      get { return _nullValueHandling; }
-      set
-      {
-        if (value < NullValueHandling.Include || value > NullValueHandling.Ignore)
-          throw new ArgumentOutOfRangeException("value");
-
-        _nullValueHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Get or set how null default are handled during serialization and deserialization.
-    /// </summary>
-    public virtual DefaultValueHandling DefaultValueHandling
-    {
-      get { return _defaultValueHandling; }
-      set
-      {
-        if (value < DefaultValueHandling.Include || value > DefaultValueHandling.IgnoreAndPopulate)
-          throw new ArgumentOutOfRangeException("value");
-
-        _defaultValueHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets how objects are created during deserialization.
-    /// </summary>
-    /// <value>The object creation handling.</value>
-    public virtual ObjectCreationHandling ObjectCreationHandling
-    {
-      get { return _objectCreationHandling; }
-      set
-      {
-        if (value < ObjectCreationHandling.Auto || value > ObjectCreationHandling.Replace)
-          throw new ArgumentOutOfRangeException("value");
-
-        _objectCreationHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets how constructors are used during deserialization.
-    /// </summary>
-    /// <value>The constructor handling.</value>
-    public virtual ConstructorHandling ConstructorHandling
-    {
-      get { return _constructorHandling; }
-      set
-      {
-        if (value < ConstructorHandling.Default || value > ConstructorHandling.AllowNonPublicDefaultConstructor)
-          throw new ArgumentOutOfRangeException("value");
-
-        _constructorHandling = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets a collection <see cref="JsonConverter"/> that will be used during serialization.
-    /// </summary>
-    /// <value>Collection <see cref="JsonConverter"/> that will be used during serialization.</value>
-    public virtual JsonConverterCollection Converters
-    {
-      get
-      {
-        if (_converters == null)
-          _converters = new JsonConverterCollection();
-
-        return _converters;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the contract resolver used by the serializer when
-    /// serializing .NET objects to JSON and vice versa.
-    /// </summary>
-    public virtual IContractResolver ContractResolver
-    {
-      get
-      {
-        if (_contractResolver == null)
-          _contractResolver = DefaultContractResolver.Instance;
-
-        return _contractResolver;
-      }
-      set { _contractResolver = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the <see cref="StreamingContext"/> used by the serializer when invoking serialization callback methods.
-    /// </summary>
-    /// <value>The context.</value>
-    public virtual StreamingContext Context
-    {
-      get { return _context; }
-      set { _context = value; }
-    }
-
-    /// <summary>
-    /// Indicates how JSON text output is formatted.
-    /// </summary>
-    public virtual Formatting Formatting
-    {
-      get { return _formatting ?? JsonSerializerSettings.DefaultFormatting; }
-      set { _formatting = value; }
-    }
-
-    /// <summary>
-    /// Get or set how dates are written to JSON text.
-    /// </summary>
-    public virtual DateFormatHandling DateFormatHandling
-    {
-      get { return _dateFormatHandling ?? JsonSerializerSettings.DefaultDateFormatHandling; }
-      set { _dateFormatHandling = value; }
-    }
-
-    /// <summary>
-    /// Get or set how <see cref="DateTime"/> time zones are handling during serialization and deserialization.
-    /// </summary>
-    public virtual DateTimeZoneHandling DateTimeZoneHandling
-    {
-      get { return _dateTimeZoneHandling ?? JsonSerializerSettings.DefaultDateTimeZoneHandling; }
-      set { _dateTimeZoneHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the culture used when reading JSON. Defaults to <see cref="CultureInfo.InvariantCulture"/>.
-    /// </summary>
-    public virtual CultureInfo Culture
-    {
-      get { return _culture ?? JsonSerializerSettings.DefaultCulture; }
-      set { _culture = value; }
-    }
-    #endregion
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSerializer"/> class.
-    /// </summary>
-    public JsonSerializer()
-    {
-      _referenceLoopHandling = JsonSerializerSettings.DefaultReferenceLoopHandling;
-      _missingMemberHandling = JsonSerializerSettings.DefaultMissingMemberHandling;
-      _nullValueHandling = JsonSerializerSettings.DefaultNullValueHandling;
-      _defaultValueHandling = JsonSerializerSettings.DefaultDefaultValueHandling;
-      _objectCreationHandling = JsonSerializerSettings.DefaultObjectCreationHandling;
-      _preserveReferencesHandling = JsonSerializerSettings.DefaultPreserveReferencesHandling;
-      _constructorHandling = JsonSerializerSettings.DefaultConstructorHandling;
-      _typeNameHandling = JsonSerializerSettings.DefaultTypeNameHandling;
-      _context = JsonSerializerSettings.DefaultContext;
-      _binder = DefaultSerializationBinder.Instance;
-    }
-
-    /// <summary>
-    /// Creates a new <see cref="JsonSerializer"/> instance using the specified <see cref="JsonSerializerSettings"/>.
-    /// </summary>
-    /// <param name="settings">The settings to be applied to the <see cref="JsonSerializer"/>.</param>
-    /// <returns>A new <see cref="JsonSerializer"/> instance using the specified <see cref="JsonSerializerSettings"/>.</returns>
-    public static JsonSerializer Create(JsonSerializerSettings settings)
-    {
-      JsonSerializer jsonSerializer = new JsonSerializer();
-
-      if (settings != null)
-      {
-        if (!CollectionUtils.IsNullOrEmpty(settings.Converters))
-          jsonSerializer.Converters.AddRange(settings.Converters);
-
-        // serializer specific
-        jsonSerializer.TypeNameHandling = settings.TypeNameHandling;
-        jsonSerializer.TypeNameAssemblyFormat = settings.TypeNameAssemblyFormat;
-        jsonSerializer.PreserveReferencesHandling = settings.PreserveReferencesHandling;
-        jsonSerializer.ReferenceLoopHandling = settings.ReferenceLoopHandling;
-        jsonSerializer.MissingMemberHandling = settings.MissingMemberHandling;
-        jsonSerializer.ObjectCreationHandling = settings.ObjectCreationHandling;
-        jsonSerializer.NullValueHandling = settings.NullValueHandling;
-        jsonSerializer.DefaultValueHandling = settings.DefaultValueHandling;
-        jsonSerializer.ConstructorHandling = settings.ConstructorHandling;
-        jsonSerializer.Context = settings.Context;
-
-        // reader specific
-        // unset values won't override reader set values
-        jsonSerializer._formatting = settings._formatting;
-        jsonSerializer._dateFormatHandling = settings._dateFormatHandling;
-        jsonSerializer._dateTimeZoneHandling = settings._dateTimeZoneHandling;
-        jsonSerializer._culture = settings._culture;
-
-        if (settings.Error != null)
-          jsonSerializer.Error += settings.Error;
-
-        if (settings.ContractResolver != null)
-          jsonSerializer.ContractResolver = settings.ContractResolver;
-        if (settings.ReferenceResolver != null)
-          jsonSerializer.ReferenceResolver = settings.ReferenceResolver;
-        if (settings.Binder != null)
-          jsonSerializer.Binder = settings.Binder;
-      }
-
-      return jsonSerializer;
-    }
-
-    /// <summary>
-    /// Populates the JSON values onto the target object.
-    /// </summary>
-    /// <param name="reader">The <see cref="TextReader"/> that contains the JSON structure to reader values from.</param>
-    /// <param name="target">The target object to populate values onto.</param>
-    public void Populate(TextReader reader, object target)
-    {
-      Populate(new JsonTextReader(reader), target);
-    }
-
-    /// <summary>
-    /// Populates the JSON values onto the target object.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> that contains the JSON structure to reader values from.</param>
-    /// <param name="target">The target object to populate values onto.</param>
-    public void Populate(JsonReader reader, object target)
-    {
-      PopulateInternal(reader, target);
-    }
-
-    internal virtual void PopulateInternal(JsonReader reader, object target)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-      ValidationUtils.ArgumentNotNull(target, "target");
-
-      JsonSerializerInternalReader serializerReader = new JsonSerializerInternalReader(this);
-      serializerReader.Populate(reader, target);
-    }
-
-    /// <summary>
-    /// Deserializes the Json structure contained by the specified <see cref="JsonReader"/>.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> that contains the JSON structure to deserialize.</param>
-    /// <returns>The <see cref="Object"/> being deserialized.</returns>
-    public object Deserialize(JsonReader reader)
-    {
-      return Deserialize(reader, null);
-    }
-
-    /// <summary>
-    /// Deserializes the Json structure contained by the specified <see cref="StringReader"/>
-    /// into an instance of the specified type.
-    /// </summary>
-    /// <param name="reader">The <see cref="TextReader"/> containing the object.</param>
-    /// <param name="objectType">The <see cref="Type"/> of object being deserialized.</param>
-    /// <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
-    public object Deserialize(TextReader reader, Type objectType)
-    {
-      return Deserialize(new JsonTextReader(reader), objectType);
-    }
-
-    /// <summary>
-    /// Deserializes the Json structure contained by the specified <see cref="JsonReader"/>
-    /// into an instance of the specified type.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> containing the object.</param>
-    /// <typeparam name="T">The type of the object to deserialize.</typeparam>
-    /// <returns>The instance of <typeparamref name="T"/> being deserialized.</returns>
-    public T Deserialize<T>(JsonReader reader)
-    {
-      return (T)Deserialize(reader, typeof(T));
-    }
-
-    /// <summary>
-    /// Deserializes the Json structure contained by the specified <see cref="JsonReader"/>
-    /// into an instance of the specified type.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> containing the object.</param>
-    /// <param name="objectType">The <see cref="Type"/> of object being deserialized.</param>
-    /// <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
-    public object Deserialize(JsonReader reader, Type objectType)
-    {
-      return DeserializeInternal(reader, objectType);
-    }
-
-    internal virtual object DeserializeInternal(JsonReader reader, Type objectType)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-
-      // set serialization options onto reader
-      CultureInfo previousCulture = null;
-      if (_culture != null && reader.Culture != _culture)
-      {
-        previousCulture = reader.Culture;
-        reader.Culture = _culture;
-      }
-      DateTimeZoneHandling? previousDateTimeZoneHandling = null;
-      if (_dateTimeZoneHandling != null && reader.DateTimeZoneHandling != _dateTimeZoneHandling)
-      {
-        previousDateTimeZoneHandling = reader.DateTimeZoneHandling;
-        reader.DateTimeZoneHandling = _dateTimeZoneHandling.Value;
-      }
-
-      JsonSerializerInternalReader serializerReader = new JsonSerializerInternalReader(this);
-      object value = serializerReader.Deserialize(reader, objectType);
-
-      // reset reader back to previous options
-      if (previousCulture != null)
-        reader.Culture = previousCulture;
-      if (previousDateTimeZoneHandling != null)
-        reader.DateTimeZoneHandling = previousDateTimeZoneHandling.Value;
-
-      return value;
-    }
-
-    /// <summary>
-    /// Serializes the specified <see cref="Object"/> and writes the Json structure
-    /// to a <c>Stream</c> using the specified <see cref="TextWriter"/>. 
-    /// </summary>
-    /// <param name="textWriter">The <see cref="TextWriter"/> used to write the Json structure.</param>
-    /// <param name="value">The <see cref="Object"/> to serialize.</param>
-    public void Serialize(TextWriter textWriter, object value)
-    {
-      Serialize(new JsonTextWriter(textWriter), value);
-    }
-
-    /// <summary>
-    /// Serializes the specified <see cref="Object"/> and writes the Json structure
-    /// to a <c>Stream</c> using the specified <see cref="JsonWriter"/>. 
-    /// </summary>
-    /// <param name="jsonWriter">The <see cref="JsonWriter"/> used to write the Json structure.</param>
-    /// <param name="value">The <see cref="Object"/> to serialize.</param>
-    public void Serialize(JsonWriter jsonWriter, object value)
-    {
-      SerializeInternal(jsonWriter, value);
-    }
-
-    internal virtual void SerializeInternal(JsonWriter jsonWriter, object value)
-    {
-      ValidationUtils.ArgumentNotNull(jsonWriter, "jsonWriter");
-
-      // set serialization options onto writer
-      Formatting? previousFormatting = null;
-      if (_formatting != null && jsonWriter.Formatting != _formatting)
-      {
-        previousFormatting = jsonWriter.Formatting;
-        jsonWriter.Formatting = _formatting.Value;
-      }
-      DateFormatHandling? previousDateFormatHandling = null;
-      if (_dateFormatHandling != null && jsonWriter.DateFormatHandling != _dateFormatHandling)
-      {
-        previousDateFormatHandling = jsonWriter.DateFormatHandling;
-        jsonWriter.DateFormatHandling = _dateFormatHandling.Value;
-      }
-      DateTimeZoneHandling? previousDateTimeZoneHandling = null;
-      if (_dateTimeZoneHandling != null && jsonWriter.DateTimeZoneHandling != _dateTimeZoneHandling)
-      {
-        previousDateTimeZoneHandling = jsonWriter.DateTimeZoneHandling;
-        jsonWriter.DateTimeZoneHandling = _dateTimeZoneHandling.Value;
-      }
-      
-      JsonSerializerInternalWriter serializerWriter = new JsonSerializerInternalWriter(this);
-      serializerWriter.Serialize(jsonWriter, value);
-
-      // reset writer back to previous options
-      if (previousFormatting != null)
-        jsonWriter.Formatting = previousFormatting.Value;
-      if (previousDateFormatHandling != null)
-        jsonWriter.DateFormatHandling = previousDateFormatHandling.Value;
-      if (previousDateTimeZoneHandling != null)
-        jsonWriter.DateTimeZoneHandling = previousDateTimeZoneHandling.Value;
-    }
-
-    internal JsonConverter GetMatchingConverter(Type type)
-    {
-      return GetMatchingConverter(_converters, type);
-    }
-
-    internal static JsonConverter GetMatchingConverter(IList<JsonConverter> converters, Type objectType)
-    {
-#if DEBUG
-      ValidationUtils.ArgumentNotNull(objectType, "objectType");
-#endif
-
-      if (converters != null)
-      {
-        for (int i = 0; i < converters.Count; i++)
-        {
-          JsonConverter converter = converters[i];
-
-          if (converter.CanConvert(objectType))
-            return converter;
-        }
-      }
-
-      return null;
-    }
-
-    internal void OnError(ErrorEventArgs e)
-    {
-      EventHandler<ErrorEventArgs> error = Error;
-      if (error != null)
-        error(this, e);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Runtime.Serialization.Formatters;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json.Utilities;
+using System.Runtime.Serialization;
+using ErrorEventArgs=Newtonsoft.Json.Serialization.ErrorEventArgs;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Serializes and deserializes objects into and from the JSON format.
+  /// The <see cref="JsonSerializer"/> enables you to control how objects are encoded into JSON.
+  /// </summary>
+  public class JsonSerializer
+  {
+    #region Properties
+    private TypeNameHandling _typeNameHandling;
+    private FormatterAssemblyStyle _typeNameAssemblyFormat;
+    private PreserveReferencesHandling _preserveReferencesHandling;
+    private ReferenceLoopHandling _referenceLoopHandling;
+    private MissingMemberHandling _missingMemberHandling;
+    private ObjectCreationHandling _objectCreationHandling;
+    private NullValueHandling _nullValueHandling;
+    private DefaultValueHandling _defaultValueHandling;
+    private ConstructorHandling _constructorHandling;
+    private JsonConverterCollection _converters;
+    private IContractResolver _contractResolver;
+    private IReferenceResolver _referenceResolver;
+    private SerializationBinder _binder;
+    private StreamingContext _context;
+    private Formatting? _formatting;
+    private DateFormatHandling? _dateFormatHandling;
+    private DateTimeZoneHandling? _dateTimeZoneHandling;
+    private CultureInfo _culture;
+
+    /// <summary>
+    /// Occurs when the <see cref="JsonSerializer"/> errors during serialization and deserialization.
+    /// </summary>
+    public virtual event EventHandler<ErrorEventArgs> Error;
+
+    /// <summary>
+    /// Gets or sets the <see cref="IReferenceResolver"/> used by the serializer when resolving references.
+    /// </summary>
+    public virtual IReferenceResolver ReferenceResolver
+    {
+      get
+      {
+        if (_referenceResolver == null)
+          _referenceResolver = new DefaultReferenceResolver();
+
+        return _referenceResolver;
+      }
+      set
+      {
+        if (value == null)
+          throw new ArgumentNullException("value", "Reference resolver cannot be null.");
+
+        _referenceResolver = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets the <see cref="SerializationBinder"/> used by the serializer when resolving type names.
+    /// </summary>
+    public virtual SerializationBinder Binder
+    {
+      get
+      {
+        return _binder;
+      }
+      set
+      {
+        if (value == null)
+          throw new ArgumentNullException("value", "Serialization binder cannot be null.");
+
+        _binder = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets how type name writing and reading is handled by the serializer.
+    /// </summary>
+    public virtual TypeNameHandling TypeNameHandling
+    {
+      get { return _typeNameHandling; }
+      set
+      {
+        if (value < TypeNameHandling.None || value > TypeNameHandling.Auto)
+          throw new ArgumentOutOfRangeException("value");
+
+        _typeNameHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets how a type name assembly is written and resolved by the serializer.
+    /// </summary>
+    /// <value>The type name assembly format.</value>
+    public virtual FormatterAssemblyStyle TypeNameAssemblyFormat
+    {
+      get { return _typeNameAssemblyFormat; }
+      set
+      {
+        if (value < FormatterAssemblyStyle.Simple || value > FormatterAssemblyStyle.Full)
+          throw new ArgumentOutOfRangeException("value");
+
+        _typeNameAssemblyFormat = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets how object references are preserved by the serializer.
+    /// </summary>
+    public virtual PreserveReferencesHandling PreserveReferencesHandling
+    {
+      get { return _preserveReferencesHandling; }
+      set
+      {
+        if (value < PreserveReferencesHandling.None || value > PreserveReferencesHandling.All)
+          throw new ArgumentOutOfRangeException("value");
+
+        _preserveReferencesHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Get or set how reference loops (e.g. a class referencing itself) is handled.
+    /// </summary>
+    public virtual ReferenceLoopHandling ReferenceLoopHandling
+    {
+      get { return _referenceLoopHandling; }
+      set
+      {
+        if (value < ReferenceLoopHandling.Error || value > ReferenceLoopHandling.Serialize)
+          throw new ArgumentOutOfRangeException("value");
+
+        _referenceLoopHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+    /// </summary>
+    public virtual MissingMemberHandling MissingMemberHandling
+    {
+      get { return _missingMemberHandling; }
+      set
+      {
+        if (value < MissingMemberHandling.Ignore || value > MissingMemberHandling.Error)
+          throw new ArgumentOutOfRangeException("value");
+
+        _missingMemberHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Get or set how null values are handled during serialization and deserialization.
+    /// </summary>
+    public virtual NullValueHandling NullValueHandling
+    {
+      get { return _nullValueHandling; }
+      set
+      {
+        if (value < NullValueHandling.Include || value > NullValueHandling.Ignore)
+          throw new ArgumentOutOfRangeException("value");
+
+        _nullValueHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Get or set how null default are handled during serialization and deserialization.
+    /// </summary>
+    public virtual DefaultValueHandling DefaultValueHandling
+    {
+      get { return _defaultValueHandling; }
+      set
+      {
+        if (value < DefaultValueHandling.Include || value > DefaultValueHandling.IgnoreAndPopulate)
+          throw new ArgumentOutOfRangeException("value");
+
+        _defaultValueHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets how objects are created during deserialization.
+    /// </summary>
+    /// <value>The object creation handling.</value>
+    public virtual ObjectCreationHandling ObjectCreationHandling
+    {
+      get { return _objectCreationHandling; }
+      set
+      {
+        if (value < ObjectCreationHandling.Auto || value > ObjectCreationHandling.Replace)
+          throw new ArgumentOutOfRangeException("value");
+
+        _objectCreationHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets how constructors are used during deserialization.
+    /// </summary>
+    /// <value>The constructor handling.</value>
+    public virtual ConstructorHandling ConstructorHandling
+    {
+      get { return _constructorHandling; }
+      set
+      {
+        if (value < ConstructorHandling.Default || value > ConstructorHandling.AllowNonPublicDefaultConstructor)
+          throw new ArgumentOutOfRangeException("value");
+
+        _constructorHandling = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets a collection <see cref="JsonConverter"/> that will be used during serialization.
+    /// </summary>
+    /// <value>Collection <see cref="JsonConverter"/> that will be used during serialization.</value>
+    public virtual JsonConverterCollection Converters
+    {
+      get
+      {
+        if (_converters == null)
+          _converters = new JsonConverterCollection();
+
+        return _converters;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets the contract resolver used by the serializer when
+    /// serializing .NET objects to JSON and vice versa.
+    /// </summary>
+    public virtual IContractResolver ContractResolver
+    {
+      get
+      {
+        if (_contractResolver == null)
+          _contractResolver = DefaultContractResolver.Instance;
+
+        return _contractResolver;
+      }
+      set { _contractResolver = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the <see cref="StreamingContext"/> used by the serializer when invoking serialization callback methods.
+    /// </summary>
+    /// <value>The context.</value>
+    public virtual StreamingContext Context
+    {
+      get { return _context; }
+      set { _context = value; }
+    }
+
+    /// <summary>
+    /// Indicates how JSON text output is formatted.
+    /// </summary>
+    public virtual Formatting Formatting
+    {
+      get { return _formatting ?? JsonSerializerSettings.DefaultFormatting; }
+      set { _formatting = value; }
+    }
+
+    /// <summary>
+    /// Get or set how dates are written to JSON text.
+    /// </summary>
+    public virtual DateFormatHandling DateFormatHandling
+    {
+      get { return _dateFormatHandling ?? JsonSerializerSettings.DefaultDateFormatHandling; }
+      set { _dateFormatHandling = value; }
+    }
+
+    /// <summary>
+    /// Get or set how <see cref="DateTime"/> time zones are handling during serialization and deserialization.
+    /// </summary>
+    public virtual DateTimeZoneHandling DateTimeZoneHandling
+    {
+      get { return _dateTimeZoneHandling ?? JsonSerializerSettings.DefaultDateTimeZoneHandling; }
+      set { _dateTimeZoneHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the culture used when reading JSON. Defaults to <see cref="CultureInfo.InvariantCulture"/>.
+    /// </summary>
+    public virtual CultureInfo Culture
+    {
+      get { return _culture ?? JsonSerializerSettings.DefaultCulture; }
+      set { _culture = value; }
+    }
+    #endregion
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSerializer"/> class.
+    /// </summary>
+    public JsonSerializer()
+    {
+      _referenceLoopHandling = JsonSerializerSettings.DefaultReferenceLoopHandling;
+      _missingMemberHandling = JsonSerializerSettings.DefaultMissingMemberHandling;
+      _nullValueHandling = JsonSerializerSettings.DefaultNullValueHandling;
+      _defaultValueHandling = JsonSerializerSettings.DefaultDefaultValueHandling;
+      _objectCreationHandling = JsonSerializerSettings.DefaultObjectCreationHandling;
+      _preserveReferencesHandling = JsonSerializerSettings.DefaultPreserveReferencesHandling;
+      _constructorHandling = JsonSerializerSettings.DefaultConstructorHandling;
+      _typeNameHandling = JsonSerializerSettings.DefaultTypeNameHandling;
+      _context = JsonSerializerSettings.DefaultContext;
+      _binder = DefaultSerializationBinder.Instance;
+    }
+
+    /// <summary>
+    /// Creates a new <see cref="JsonSerializer"/> instance using the specified <see cref="JsonSerializerSettings"/>.
+    /// </summary>
+    /// <param name="settings">The settings to be applied to the <see cref="JsonSerializer"/>.</param>
+    /// <returns>A new <see cref="JsonSerializer"/> instance using the specified <see cref="JsonSerializerSettings"/>.</returns>
+    public static JsonSerializer Create(JsonSerializerSettings settings)
+    {
+      JsonSerializer jsonSerializer = new JsonSerializer();
+
+      if (settings != null)
+      {
+        if (!CollectionUtils.IsNullOrEmpty(settings.Converters))
+          jsonSerializer.Converters.AddRange(settings.Converters);
+
+        // serializer specific
+        jsonSerializer.TypeNameHandling = settings.TypeNameHandling;
+        jsonSerializer.TypeNameAssemblyFormat = settings.TypeNameAssemblyFormat;
+        jsonSerializer.PreserveReferencesHandling = settings.PreserveReferencesHandling;
+        jsonSerializer.ReferenceLoopHandling = settings.ReferenceLoopHandling;
+        jsonSerializer.MissingMemberHandling = settings.MissingMemberHandling;
+        jsonSerializer.ObjectCreationHandling = settings.ObjectCreationHandling;
+        jsonSerializer.NullValueHandling = settings.NullValueHandling;
+        jsonSerializer.DefaultValueHandling = settings.DefaultValueHandling;
+        jsonSerializer.ConstructorHandling = settings.ConstructorHandling;
+        jsonSerializer.Context = settings.Context;
+
+        // reader specific
+        // unset values won't override reader set values
+        jsonSerializer._formatting = settings._formatting;
+        jsonSerializer._dateFormatHandling = settings._dateFormatHandling;
+        jsonSerializer._dateTimeZoneHandling = settings._dateTimeZoneHandling;
+        jsonSerializer._culture = settings._culture;
+
+        if (settings.Error != null)
+          jsonSerializer.Error += settings.Error;
+
+        if (settings.ContractResolver != null)
+          jsonSerializer.ContractResolver = settings.ContractResolver;
+        if (settings.ReferenceResolver != null)
+          jsonSerializer.ReferenceResolver = settings.ReferenceResolver;
+        if (settings.Binder != null)
+          jsonSerializer.Binder = settings.Binder;
+      }
+
+      return jsonSerializer;
+    }
+
+    /// <summary>
+    /// Populates the JSON values onto the target object.
+    /// </summary>
+    /// <param name="reader">The <see cref="TextReader"/> that contains the JSON structure to reader values from.</param>
+    /// <param name="target">The target object to populate values onto.</param>
+    public void Populate(TextReader reader, object target)
+    {
+      Populate(new JsonTextReader(reader), target);
+    }
+
+    /// <summary>
+    /// Populates the JSON values onto the target object.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> that contains the JSON structure to reader values from.</param>
+    /// <param name="target">The target object to populate values onto.</param>
+    public void Populate(JsonReader reader, object target)
+    {
+      PopulateInternal(reader, target);
+    }
+
+    internal virtual void PopulateInternal(JsonReader reader, object target)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+      ValidationUtils.ArgumentNotNull(target, "target");
+
+      JsonSerializerInternalReader serializerReader = new JsonSerializerInternalReader(this);
+      serializerReader.Populate(reader, target);
+    }
+
+    /// <summary>
+    /// Deserializes the Json structure contained by the specified <see cref="JsonReader"/>.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> that contains the JSON structure to deserialize.</param>
+    /// <returns>The <see cref="Object"/> being deserialized.</returns>
+    public object Deserialize(JsonReader reader)
+    {
+      return Deserialize(reader, null);
+    }
+
+    /// <summary>
+    /// Deserializes the Json structure contained by the specified <see cref="StringReader"/>
+    /// into an instance of the specified type.
+    /// </summary>
+    /// <param name="reader">The <see cref="TextReader"/> containing the object.</param>
+    /// <param name="objectType">The <see cref="Type"/> of object being deserialized.</param>
+    /// <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
+    public object Deserialize(TextReader reader, Type objectType)
+    {
+      return Deserialize(new JsonTextReader(reader), objectType);
+    }
+
+    /// <summary>
+    /// Deserializes the Json structure contained by the specified <see cref="JsonReader"/>
+    /// into an instance of the specified type.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> containing the object.</param>
+    /// <typeparam name="T">The type of the object to deserialize.</typeparam>
+    /// <returns>The instance of <typeparamref name="T"/> being deserialized.</returns>
+    public T Deserialize<T>(JsonReader reader)
+    {
+      return (T)Deserialize(reader, typeof(T));
+    }
+
+    /// <summary>
+    /// Deserializes the Json structure contained by the specified <see cref="JsonReader"/>
+    /// into an instance of the specified type.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> containing the object.</param>
+    /// <param name="objectType">The <see cref="Type"/> of object being deserialized.</param>
+    /// <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
+    public object Deserialize(JsonReader reader, Type objectType)
+    {
+      return DeserializeInternal(reader, objectType);
+    }
+
+    internal virtual object DeserializeInternal(JsonReader reader, Type objectType)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+
+      // set serialization options onto reader
+      CultureInfo previousCulture = null;
+      if (_culture != null && reader.Culture != _culture)
+      {
+        previousCulture = reader.Culture;
+        reader.Culture = _culture;
+      }
+      DateTimeZoneHandling? previousDateTimeZoneHandling = null;
+      if (_dateTimeZoneHandling != null && reader.DateTimeZoneHandling != _dateTimeZoneHandling)
+      {
+        previousDateTimeZoneHandling = reader.DateTimeZoneHandling;
+        reader.DateTimeZoneHandling = _dateTimeZoneHandling.Value;
+      }
+
+      JsonSerializerInternalReader serializerReader = new JsonSerializerInternalReader(this);
+      object value = serializerReader.Deserialize(reader, objectType);
+
+      // reset reader back to previous options
+      if (previousCulture != null)
+        reader.Culture = previousCulture;
+      if (previousDateTimeZoneHandling != null)
+        reader.DateTimeZoneHandling = previousDateTimeZoneHandling.Value;
+
+      return value;
+    }
+
+    /// <summary>
+    /// Serializes the specified <see cref="Object"/> and writes the Json structure
+    /// to a <c>Stream</c> using the specified <see cref="TextWriter"/>. 
+    /// </summary>
+    /// <param name="textWriter">The <see cref="TextWriter"/> used to write the Json structure.</param>
+    /// <param name="value">The <see cref="Object"/> to serialize.</param>
+    public void Serialize(TextWriter textWriter, object value)
+    {
+      Serialize(new JsonTextWriter(textWriter), value);
+    }
+
+    /// <summary>
+    /// Serializes the specified <see cref="Object"/> and writes the Json structure
+    /// to a <c>Stream</c> using the specified <see cref="JsonWriter"/>. 
+    /// </summary>
+    /// <param name="jsonWriter">The <see cref="JsonWriter"/> used to write the Json structure.</param>
+    /// <param name="value">The <see cref="Object"/> to serialize.</param>
+    public void Serialize(JsonWriter jsonWriter, object value)
+    {
+      SerializeInternal(jsonWriter, value);
+    }
+
+    internal virtual void SerializeInternal(JsonWriter jsonWriter, object value)
+    {
+      ValidationUtils.ArgumentNotNull(jsonWriter, "jsonWriter");
+
+      // set serialization options onto writer
+      Formatting? previousFormatting = null;
+      if (_formatting != null && jsonWriter.Formatting != _formatting)
+      {
+        previousFormatting = jsonWriter.Formatting;
+        jsonWriter.Formatting = _formatting.Value;
+      }
+      DateFormatHandling? previousDateFormatHandling = null;
+      if (_dateFormatHandling != null && jsonWriter.DateFormatHandling != _dateFormatHandling)
+      {
+        previousDateFormatHandling = jsonWriter.DateFormatHandling;
+        jsonWriter.DateFormatHandling = _dateFormatHandling.Value;
+      }
+      DateTimeZoneHandling? previousDateTimeZoneHandling = null;
+      if (_dateTimeZoneHandling != null && jsonWriter.DateTimeZoneHandling != _dateTimeZoneHandling)
+      {
+        previousDateTimeZoneHandling = jsonWriter.DateTimeZoneHandling;
+        jsonWriter.DateTimeZoneHandling = _dateTimeZoneHandling.Value;
+      }
+      
+      JsonSerializerInternalWriter serializerWriter = new JsonSerializerInternalWriter(this);
+      serializerWriter.Serialize(jsonWriter, value);
+
+      // reset writer back to previous options
+      if (previousFormatting != null)
+        jsonWriter.Formatting = previousFormatting.Value;
+      if (previousDateFormatHandling != null)
+        jsonWriter.DateFormatHandling = previousDateFormatHandling.Value;
+      if (previousDateTimeZoneHandling != null)
+        jsonWriter.DateTimeZoneHandling = previousDateTimeZoneHandling.Value;
+    }
+
+    internal JsonConverter GetMatchingConverter(Type type)
+    {
+      return GetMatchingConverter(_converters, type);
+    }
+
+    internal static JsonConverter GetMatchingConverter(IList<JsonConverter> converters, Type objectType)
+    {
+#if DEBUG
+      ValidationUtils.ArgumentNotNull(objectType, "objectType");
+#endif
+
+      if (converters != null)
+      {
+        for (int i = 0; i < converters.Count; i++)
+        {
+          JsonConverter converter = converters[i];
+
+          if (converter.CanConvert(objectType))
+            return converter;
+        }
+      }
+
+      return null;
+    }
+
+    internal void OnError(ErrorEventArgs e)
+    {
+      EventHandler<ErrorEventArgs> error = Error;
+      if (error != null)
+        error(this, e);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializerSettings.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonSerializerSettings.cs
@@ -1,187 +1,187 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Runtime.Serialization.Formatters;
-using Newtonsoft.Json.Serialization;
-using System.Runtime.Serialization;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies the settings on a <see cref="JsonSerializer"/> object.
-  /// </summary>
-  public class JsonSerializerSettings
-  {
-    internal const ReferenceLoopHandling DefaultReferenceLoopHandling = ReferenceLoopHandling.Error;
-    internal const MissingMemberHandling DefaultMissingMemberHandling = MissingMemberHandling.Ignore;
-    internal const NullValueHandling DefaultNullValueHandling = NullValueHandling.Include;
-    internal const DefaultValueHandling DefaultDefaultValueHandling = DefaultValueHandling.Include;
-    internal const ObjectCreationHandling DefaultObjectCreationHandling = ObjectCreationHandling.Auto;
-    internal const PreserveReferencesHandling DefaultPreserveReferencesHandling = PreserveReferencesHandling.None;
-    internal const ConstructorHandling DefaultConstructorHandling = ConstructorHandling.Default;
-    internal const TypeNameHandling DefaultTypeNameHandling = TypeNameHandling.None;
-    internal const FormatterAssemblyStyle DefaultTypeNameAssemblyFormat = FormatterAssemblyStyle.Simple;
-    internal static readonly StreamingContext DefaultContext;
-
-    internal const Formatting DefaultFormatting = Formatting.None;
-    internal const DateFormatHandling DefaultDateFormatHandling = DateFormatHandling.IsoDateFormat;
-    internal const DateTimeZoneHandling DefaultDateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
-    internal static readonly CultureInfo DefaultCulture;
-
-    internal Formatting? _formatting;
-    internal DateFormatHandling? _dateFormatHandling;
-    internal DateTimeZoneHandling? _dateTimeZoneHandling;
-    internal CultureInfo _culture;
-
-    /// <summary>
-    /// Gets or sets how reference loops (e.g. a class referencing itself) is handled.
-    /// </summary>
-    /// <value>Reference loop handling.</value>
-    public ReferenceLoopHandling ReferenceLoopHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
-    /// </summary>
-    /// <value>Missing member handling.</value>
-    public MissingMemberHandling MissingMemberHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets how objects are created during deserialization.
-    /// </summary>
-    /// <value>The object creation handling.</value>
-    public ObjectCreationHandling ObjectCreationHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets how null values are handled during serialization and deserialization.
-    /// </summary>
-    /// <value>Null value handling.</value>
-    public NullValueHandling NullValueHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets how null default are handled during serialization and deserialization.
-    /// </summary>
-    /// <value>The default value handling.</value>
-    public DefaultValueHandling DefaultValueHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets a collection <see cref="JsonConverter"/> that will be used during serialization.
-    /// </summary>
-    /// <value>The converters.</value>
-    public IList<JsonConverter> Converters { get; set; }
-
-    /// <summary>
-    /// Gets or sets how object references are preserved by the serializer.
-    /// </summary>
-    /// <value>The preserve references handling.</value>
-    public PreserveReferencesHandling PreserveReferencesHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets how type name writing and reading is handled by the serializer.
-    /// </summary>
-    /// <value>The type name handling.</value>
-    public TypeNameHandling TypeNameHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets how a type name assembly is written and resolved by the serializer.
-    /// </summary>
-    /// <value>The type name assembly format.</value>
-    public FormatterAssemblyStyle TypeNameAssemblyFormat { get; set; }
-
-    /// <summary>
-    /// Gets or sets how constructors are used during deserialization.
-    /// </summary>
-    /// <value>The constructor handling.</value>
-    public ConstructorHandling ConstructorHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets the contract resolver used by the serializer when
-    /// serializing .NET objects to JSON and vice versa.
-    /// </summary>
-    /// <value>The contract resolver.</value>
-    public IContractResolver ContractResolver { get; set; }
-
-    /// <summary>
-    /// Gets or sets the <see cref="IReferenceResolver"/> used by the serializer when resolving references.
-    /// </summary>
-    /// <value>The reference resolver.</value>
-    public IReferenceResolver ReferenceResolver { get; set; }
-
-    /// <summary>
-    /// Gets or sets the <see cref="SerializationBinder"/> used by the serializer when resolving type names.
-    /// </summary>
-    /// <value>The binder.</value>
-    public SerializationBinder Binder { get; set; }
-
-    /// <summary>
-    /// Gets or sets the error handler called during serialization and deserialization.
-    /// </summary>
-    /// <value>The error handler called during serialization and deserialization.</value>
-    public EventHandler<ErrorEventArgs> Error { get; set; }
-
-    /// <summary>
-    /// Gets or sets the <see cref="StreamingContext"/> used by the serializer when invoking serialization callback methods.
-    /// </summary>
-    /// <value>The context.</value>
-    public StreamingContext Context { get; set; }
-
-    /// <summary>
-    /// Indicates how JSON text output is formatted.
-    /// </summary>
-    public Formatting Formatting
-    {
-      get { return _formatting ?? DefaultFormatting; }
-      set { _formatting = value; }
-    }
-
-    /// <summary>
-    /// Get or set how dates are written to JSON text.
-    /// </summary>
-    public DateFormatHandling DateFormatHandling
-    {
-      get { return _dateFormatHandling ?? DefaultDateFormatHandling; }
-      set { _dateFormatHandling = value; }
-    }
-
-    /// <summary>
-    /// Get or set how <see cref="DateTime"/> time zones are handling during serialization and deserialization.
-    /// </summary>
-    public DateTimeZoneHandling DateTimeZoneHandling
-    {
-      get { return _dateTimeZoneHandling ?? DefaultDateTimeZoneHandling; }
-      set { _dateTimeZoneHandling = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets the culture used when reading JSON. Defaults to <see cref="CultureInfo.InvariantCulture"/>.
-    /// </summary>
-    public CultureInfo Culture
-    {
-      get { return _culture ?? DefaultCulture; }
-      set { _culture = value; }
-    }
-
-    static JsonSerializerSettings()
-    {
-      DefaultContext = new StreamingContext();
-      DefaultCulture = CultureInfo.InvariantCulture;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSerializerSettings"/> class.
-    /// </summary>
-    public JsonSerializerSettings()
-    {
-      ReferenceLoopHandling = DefaultReferenceLoopHandling;
-      MissingMemberHandling = DefaultMissingMemberHandling;
-      ObjectCreationHandling = DefaultObjectCreationHandling;
-      NullValueHandling = DefaultNullValueHandling;
-      DefaultValueHandling = DefaultDefaultValueHandling;
-      PreserveReferencesHandling = DefaultPreserveReferencesHandling;
-      TypeNameHandling = DefaultTypeNameHandling;
-      TypeNameAssemblyFormat = DefaultTypeNameAssemblyFormat;
-      Context = DefaultContext;
-
-      Converters = new List<JsonConverter>();
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Runtime.Serialization.Formatters;
+using Newtonsoft.Json.Serialization;
+using System.Runtime.Serialization;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies the settings on a <see cref="JsonSerializer"/> object.
+  /// </summary>
+  public class JsonSerializerSettings
+  {
+    internal const ReferenceLoopHandling DefaultReferenceLoopHandling = ReferenceLoopHandling.Error;
+    internal const MissingMemberHandling DefaultMissingMemberHandling = MissingMemberHandling.Ignore;
+    internal const NullValueHandling DefaultNullValueHandling = NullValueHandling.Include;
+    internal const DefaultValueHandling DefaultDefaultValueHandling = DefaultValueHandling.Include;
+    internal const ObjectCreationHandling DefaultObjectCreationHandling = ObjectCreationHandling.Auto;
+    internal const PreserveReferencesHandling DefaultPreserveReferencesHandling = PreserveReferencesHandling.None;
+    internal const ConstructorHandling DefaultConstructorHandling = ConstructorHandling.Default;
+    internal const TypeNameHandling DefaultTypeNameHandling = TypeNameHandling.None;
+    internal const FormatterAssemblyStyle DefaultTypeNameAssemblyFormat = FormatterAssemblyStyle.Simple;
+    internal static readonly StreamingContext DefaultContext;
+
+    internal const Formatting DefaultFormatting = Formatting.None;
+    internal const DateFormatHandling DefaultDateFormatHandling = DateFormatHandling.IsoDateFormat;
+    internal const DateTimeZoneHandling DefaultDateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
+    internal static readonly CultureInfo DefaultCulture;
+
+    internal Formatting? _formatting;
+    internal DateFormatHandling? _dateFormatHandling;
+    internal DateTimeZoneHandling? _dateTimeZoneHandling;
+    internal CultureInfo _culture;
+
+    /// <summary>
+    /// Gets or sets how reference loops (e.g. a class referencing itself) is handled.
+    /// </summary>
+    /// <value>Reference loop handling.</value>
+    public ReferenceLoopHandling ReferenceLoopHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+    /// </summary>
+    /// <value>Missing member handling.</value>
+    public MissingMemberHandling MissingMemberHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets how objects are created during deserialization.
+    /// </summary>
+    /// <value>The object creation handling.</value>
+    public ObjectCreationHandling ObjectCreationHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets how null values are handled during serialization and deserialization.
+    /// </summary>
+    /// <value>Null value handling.</value>
+    public NullValueHandling NullValueHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets how null default are handled during serialization and deserialization.
+    /// </summary>
+    /// <value>The default value handling.</value>
+    public DefaultValueHandling DefaultValueHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets a collection <see cref="JsonConverter"/> that will be used during serialization.
+    /// </summary>
+    /// <value>The converters.</value>
+    public IList<JsonConverter> Converters { get; set; }
+
+    /// <summary>
+    /// Gets or sets how object references are preserved by the serializer.
+    /// </summary>
+    /// <value>The preserve references handling.</value>
+    public PreserveReferencesHandling PreserveReferencesHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets how type name writing and reading is handled by the serializer.
+    /// </summary>
+    /// <value>The type name handling.</value>
+    public TypeNameHandling TypeNameHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets how a type name assembly is written and resolved by the serializer.
+    /// </summary>
+    /// <value>The type name assembly format.</value>
+    public FormatterAssemblyStyle TypeNameAssemblyFormat { get; set; }
+
+    /// <summary>
+    /// Gets or sets how constructors are used during deserialization.
+    /// </summary>
+    /// <value>The constructor handling.</value>
+    public ConstructorHandling ConstructorHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets the contract resolver used by the serializer when
+    /// serializing .NET objects to JSON and vice versa.
+    /// </summary>
+    /// <value>The contract resolver.</value>
+    public IContractResolver ContractResolver { get; set; }
+
+    /// <summary>
+    /// Gets or sets the <see cref="IReferenceResolver"/> used by the serializer when resolving references.
+    /// </summary>
+    /// <value>The reference resolver.</value>
+    public IReferenceResolver ReferenceResolver { get; set; }
+
+    /// <summary>
+    /// Gets or sets the <see cref="SerializationBinder"/> used by the serializer when resolving type names.
+    /// </summary>
+    /// <value>The binder.</value>
+    public SerializationBinder Binder { get; set; }
+
+    /// <summary>
+    /// Gets or sets the error handler called during serialization and deserialization.
+    /// </summary>
+    /// <value>The error handler called during serialization and deserialization.</value>
+    public EventHandler<ErrorEventArgs> Error { get; set; }
+
+    /// <summary>
+    /// Gets or sets the <see cref="StreamingContext"/> used by the serializer when invoking serialization callback methods.
+    /// </summary>
+    /// <value>The context.</value>
+    public StreamingContext Context { get; set; }
+
+    /// <summary>
+    /// Indicates how JSON text output is formatted.
+    /// </summary>
+    public Formatting Formatting
+    {
+      get { return _formatting ?? DefaultFormatting; }
+      set { _formatting = value; }
+    }
+
+    /// <summary>
+    /// Get or set how dates are written to JSON text.
+    /// </summary>
+    public DateFormatHandling DateFormatHandling
+    {
+      get { return _dateFormatHandling ?? DefaultDateFormatHandling; }
+      set { _dateFormatHandling = value; }
+    }
+
+    /// <summary>
+    /// Get or set how <see cref="DateTime"/> time zones are handling during serialization and deserialization.
+    /// </summary>
+    public DateTimeZoneHandling DateTimeZoneHandling
+    {
+      get { return _dateTimeZoneHandling ?? DefaultDateTimeZoneHandling; }
+      set { _dateTimeZoneHandling = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets the culture used when reading JSON. Defaults to <see cref="CultureInfo.InvariantCulture"/>.
+    /// </summary>
+    public CultureInfo Culture
+    {
+      get { return _culture ?? DefaultCulture; }
+      set { _culture = value; }
+    }
+
+    static JsonSerializerSettings()
+    {
+      DefaultContext = new StreamingContext();
+      DefaultCulture = CultureInfo.InvariantCulture;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSerializerSettings"/> class.
+    /// </summary>
+    public JsonSerializerSettings()
+    {
+      ReferenceLoopHandling = DefaultReferenceLoopHandling;
+      MissingMemberHandling = DefaultMissingMemberHandling;
+      ObjectCreationHandling = DefaultObjectCreationHandling;
+      NullValueHandling = DefaultNullValueHandling;
+      DefaultValueHandling = DefaultDefaultValueHandling;
+      PreserveReferencesHandling = DefaultPreserveReferencesHandling;
+      TypeNameHandling = DefaultTypeNameHandling;
+      TypeNameAssemblyFormat = DefaultTypeNameAssemblyFormat;
+      Context = DefaultContext;
+
+      Converters = new List<JsonConverter>();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonTextReader.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonTextReader.cs
@@ -1,1549 +1,1549 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Text;
-using System.IO;
-using System.Xml;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json
-{
-  internal enum ReadType
-  {
-    Read,
-    ReadAsInt32,
-    ReadAsBytes,
-    ReadAsString,
-    ReadAsDecimal,
-    ReadAsDateTime,
-#if !NET20
-    ReadAsDateTimeOffset
-#endif
-  }
-
-  /// <summary>
-  /// Represents a reader that provides fast, non-cached, forward-only access to JSON text data.
-  /// </summary>
-  public class JsonTextReader : JsonReader, IJsonLineInfo
-  {
-    private readonly TextReader _reader;
-
-    private char[] _chars;
-    private int _charsUsed;
-    private int _charPos;
-    private int _lineStartPos;
-    private int _lineNumber;
-    private bool _isEndOfFile;
-    private StringBuffer _buffer;
-    private StringReference _stringReference;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonReader"/> class with the specified <see cref="TextReader"/>.
-    /// </summary>
-    /// <param name="reader">The <c>TextReader</c> containing the XML data to read.</param>
-    public JsonTextReader(TextReader reader)
-    {
-      if (reader == null)
-        throw new ArgumentNullException("reader");
-
-      _reader = reader;
-      _lineNumber = 1;
-
-      _chars = new char[4097];
-    }
-
-    internal void SetCharBuffer(char[] chars)
-    {
-      _chars = chars;
-    }
-
-    private StringBuffer GetBuffer()
-    {
-      if (_buffer == null)
-      {
-        _buffer = new StringBuffer(4096);
-      }
-      else
-      {
-        _buffer.Position = 0;
-      }
-
-      return _buffer;
-    }
-
-    private void OnNewLine(int pos)
-    {
-      _lineNumber++;
-      _lineStartPos = pos - 1;
-    }
-
-    private void ParseString(char quote)
-    {
-      _charPos++;
-
-      ShiftBufferIfNeeded();
-      ReadStringIntoBuffer(quote);
-
-      if (_readType == ReadType.ReadAsBytes)
-      {
-        byte[] data;
-        if (_stringReference.Length == 0)
-        {
-          data = new byte[0];
-        }
-        else
-        {
-          data = Convert.FromBase64CharArray(_stringReference.Chars, _stringReference.StartIndex, _stringReference.Length);
-        }
-
-        SetToken(JsonToken.Bytes, data);
-      }
-      else if (_readType == ReadType.ReadAsString)
-      {
-        string text = _stringReference.ToString();
-
-        SetToken(JsonToken.String, text);
-        QuoteChar = quote;
-      }
-      else
-      {
-        string text = _stringReference.ToString();
-
-        if (text.Length > 0)
-        {
-          if (text[0] == '/')
-          {
-            if (text.StartsWith("/Date(", StringComparison.Ordinal) && text.EndsWith(")/", StringComparison.Ordinal))
-            {
-              ParseDateMicrosoft(text);
-              return;
-            }
-          }
-          else if (char.IsDigit(text[0]) && text.Length >= 19 && text.Length <= 40)
-          {
-            if (ParseDateIso(text))
-              return;
-          }
-        }
-
-        SetToken(JsonToken.String, text);
-        QuoteChar = quote;
-      }
-    }
-
-    private bool ParseDateIso(string text)
-    {
-      const string isoDateFormat = "yyyy-MM-ddTHH:mm:ss.FFFFFFFK";
-
-#if !NET20
-      if (_readType == ReadType.ReadAsDateTimeOffset)
-      {
-        DateTimeOffset dateTimeOffset;
-        if (DateTimeOffset.TryParseExact(text, isoDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateTimeOffset))
-        {
-          SetToken(JsonToken.Date, dateTimeOffset);
-          return true;
-        }
-      }
-      else
-#endif
-      {
-        DateTime dateTime;
-        if (DateTime.TryParseExact(text, isoDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateTime))
-        {
-          dateTime = JsonConvert.EnsureDateTime(dateTime, DateTimeZoneHandling);
-
-          SetToken(JsonToken.Date, dateTime);
-          return true;
-        }
-      }
-
-      return false;
-    }
-
-    private void ParseDateMicrosoft(string text)
-    {
-      string value = text.Substring(6, text.Length - 8);
-      DateTimeKind kind = DateTimeKind.Utc;
-
-      int index = value.IndexOf('+', 1);
-
-      if (index == -1)
-        index = value.IndexOf('-', 1);
-
-      TimeSpan offset = TimeSpan.Zero;
-
-      if (index != -1)
-      {
-        kind = DateTimeKind.Local;
-        offset = ReadOffset(value.Substring(index));
-        value = value.Substring(0, index);
-      }
-
-      long javaScriptTicks = long.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture);
-
-      DateTime utcDateTime = JsonConvert.ConvertJavaScriptTicksToDateTime(javaScriptTicks);
-
-#if !NET20
-      if (_readType == ReadType.ReadAsDateTimeOffset)
-      {
-        SetToken(JsonToken.Date, new DateTimeOffset(utcDateTime.Add(offset).Ticks, offset));
-      }
-      else
-#endif
-      {
-        DateTime dateTime;
-
-        switch (kind)
-        {
-          case DateTimeKind.Unspecified:
-            dateTime = DateTime.SpecifyKind(utcDateTime.ToLocalTime(), DateTimeKind.Unspecified);
-            break;
-          case DateTimeKind.Local:
-            dateTime = utcDateTime.ToLocalTime();
-            break;
-          default:
-            dateTime = utcDateTime;
-            break;
-        }
-
-        dateTime = JsonConvert.EnsureDateTime(dateTime, DateTimeZoneHandling);
-
-        SetToken(JsonToken.Date, dateTime);
-      }
-    }
-
-    private static void BlockCopyChars(char[] src, int srcOffset, char[] dst, int dstOffset, int count)
-    {
-      const int charByteCount = 2;
-
-      Buffer.BlockCopy(src, srcOffset * charByteCount, dst, dstOffset * charByteCount, count * charByteCount);
-    }
-
-    private void ShiftBufferIfNeeded()
-    {
-      // once in the last 10% of the buffer shift the remainling content to the start to avoid
-      // unnessesarly increasing the buffer size when reading numbers/strings
-      int length = _chars.Length;
-      if (length - _charPos <= length * 0.1)
-      {
-        int count = _charsUsed - _charPos;
-        if (count > 0)
-          BlockCopyChars(_chars, _charPos, _chars, 0, count);
-
-        _lineStartPos -= _charPos;
-        _charPos = 0;
-        _charsUsed = count;
-        _chars[_charsUsed] = '\0';
-      }
-    }
-
-    private int ReadData(bool append)
-    {
-      return ReadData(append, 0);
-    }
-
-    private int ReadData(bool append, int charsRequired)
-    {
-      if (_isEndOfFile)
-        return 0;
-
-      // char buffer is full
-      if (_charsUsed + charsRequired >= _chars.Length - 1)
-      {
-        if (append)
-        {
-          // copy to new array either double the size of the current or big enough to fit required content
-          int newArrayLength = Math.Max(_chars.Length * 2, _charsUsed + charsRequired + 1);
-
-          // increase the size of the buffer
-          char[] dst = new char[newArrayLength];
-
-          BlockCopyChars(_chars, 0, dst, 0, _chars.Length);
-
-          _chars = dst;
-        }
-        else
-        {
-          int remainingCharCount = _charsUsed - _charPos;
-
-          if (remainingCharCount + charsRequired + 1 >= _chars.Length)
-          {
-            // the remaining count plus the required is bigger than the current buffer size
-            char[] dst = new char[remainingCharCount + charsRequired + 1];
-
-            if (remainingCharCount > 0)
-              BlockCopyChars(_chars, _charPos, dst, 0, remainingCharCount);
-
-            _chars = dst;
-          }
-          else
-          {
-            // copy any remaining data to the beginning of the buffer if needed and reset positions
-            if (remainingCharCount > 0)
-              BlockCopyChars(_chars, _charPos, _chars, 0, remainingCharCount);
-          }
-
-          _lineStartPos -= _charPos;
-          _charPos = 0;
-          _charsUsed = remainingCharCount;
-        }
-      }
-
-      int attemptCharReadCount = _chars.Length - _charsUsed - 1;
-
-      int charsRead = _reader.Read(_chars, _charsUsed, attemptCharReadCount);
-      _charsUsed += charsRead;
-
-      if (charsRead == 0)
-        _isEndOfFile = true;
-
-      _chars[_charsUsed] = '\0';
-      return charsRead;
-    }
-
-    private bool EnsureChars(int relativePosition, bool append)
-    {
-      if (_charPos + relativePosition >= _charsUsed)
-        return ReadChars(relativePosition, append);
-
-      return true;
-    }
-
-    private bool ReadChars(int relativePosition, bool append)
-    {
-      if (_isEndOfFile)
-        return false;
-
-      int charsRequired = _charPos + relativePosition - _charsUsed + 1;
-
-      int charsRead = ReadData(append, charsRequired);
-
-      if (charsRead < charsRequired)
-        return false;
-      return true;
-    }
-
-    private static TimeSpan ReadOffset(string offsetText)
-    {
-      bool negative = (offsetText[0] == '-');
-
-      int hours = int.Parse(offsetText.Substring(1, 2), NumberStyles.Integer, CultureInfo.InvariantCulture);
-      int minutes = 0;
-      if (offsetText.Length >= 5)
-        minutes = int.Parse(offsetText.Substring(3, 2), NumberStyles.Integer, CultureInfo.InvariantCulture);
-
-      TimeSpan offset = TimeSpan.FromHours(hours) + TimeSpan.FromMinutes(minutes);
-      if (negative)
-        offset = offset.Negate();
-
-      return offset;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream.
-    /// </summary>
-    /// <returns>
-    /// true if the next token was read successfully; false if there are no more tokens to read.
-    /// </returns>
-    [DebuggerStepThrough]
-    public override bool Read()
-    {
-      _readType = ReadType.Read;
-      if (!ReadInternal())
-      {
-        SetToken(JsonToken.None);
-        return false;
-      }
-
-      return true;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.
-    /// </returns>
-    public override byte[] ReadAsBytes()
-    {
-      return ReadAsBytesInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override decimal? ReadAsDecimal()
-    {
-      return ReadAsDecimalInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override int? ReadAsInt32()
-    {
-      return ReadAsInt32Internal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="String"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override string ReadAsString()
-    {
-      return ReadAsStringInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override DateTime? ReadAsDateTime()
-    {
-      return ReadAsDateTimeInternal();
-    }
-
-#if !NET20
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
-    /// </summary>
-    /// <returns>A <see cref="DateTimeOffset"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override DateTimeOffset? ReadAsDateTimeOffset()
-    {
-      return ReadAsDateTimeOffsetInternal();
-    }
-#endif
-
-    internal override bool ReadInternal()
-    {
-      while (true)
-      {
-        switch (_currentState)
-        {
-          case State.Start:
-          case State.Property:
-          case State.Array:
-          case State.ArrayStart:
-          case State.Constructor:
-          case State.ConstructorStart:
-            return ParseValue();
-          case State.Complete:
-            break;
-          case State.Object:
-          case State.ObjectStart:
-            return ParseObject();
-          case State.PostValue:
-            // returns true if it hits
-            // end of object or array
-            if (ParsePostValue())
-              return true;
-            break;
-          case State.Finished:
-            if (EnsureChars(0, false))
-            {
-              EatWhitespace(false);
-              if (_isEndOfFile)
-              {
-                return false;
-              }
-              if (_chars[_charPos] == '/')
-              {
-                ParseComment();
-                return true;
-              }
-              else
-              {
-                throw CreateReaderException(this, "Additional text encountered after finished reading JSON content: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
-              }
-            }
-            return false;
-          case State.Closed:
-            break;
-          case State.Error:
-            break;
-          default:
-            throw CreateReaderException(this, "Unexpected state: {0}.".FormatWith(CultureInfo.InvariantCulture, CurrentState));
-        }
-      }
-    }
-
-    private void ReadStringIntoBuffer(char quote)
-    {
-      int charPos = _charPos;
-      int initialPosition = _charPos;
-      int lastWritePosition = _charPos;
-      StringBuffer buffer = null;
-
-      while (true)
-      {
-        switch (_chars[charPos++])
-        {
-          case '\0':
-            if (_charsUsed == charPos - 1)
-            {
-              charPos--;
-
-              if (ReadData(true) == 0)
-              {
-                _charPos = charPos;
-                throw CreateReaderException(this, "Unterminated string. Expected delimiter: {0}.".FormatWith(CultureInfo.InvariantCulture, quote));
-              }
-            }
-            break;
-          case '\\':
-            _charPos = charPos;
-            if (!EnsureChars(0, true))
-            {
-              _charPos = charPos;
-              throw CreateReaderException(this, "Unterminated string. Expected delimiter: {0}.".FormatWith(CultureInfo.InvariantCulture, quote));
-            }
-
-            // start of escape sequence
-            int escapeStartPos = charPos - 1;
-
-            char currentChar = _chars[charPos];
-
-            char writeChar;
-
-            switch (currentChar)
-            {
-              case 'b':
-                charPos++;
-                writeChar = '\b';
-                break;
-              case 't':
-                charPos++;
-                writeChar = '\t';
-                break;
-              case 'n':
-                charPos++;
-                writeChar = '\n';
-                break;
-              case 'f':
-                charPos++;
-                writeChar = '\f';
-                break;
-              case 'r':
-                charPos++;
-                writeChar = '\r';
-                break;
-              case '\\':
-                charPos++;
-                writeChar = '\\';
-                break;
-              case '"':
-              case '\'':
-              case '/':
-                writeChar = currentChar;
-                charPos++;
-                break;
-              case 'u':
-                charPos++;
-                _charPos = charPos;
-                if (EnsureChars(4, true))
-                {
-                  string hexValues = new string(_chars, charPos, 4);
-                  char hexChar = Convert.ToChar(int.Parse(hexValues, NumberStyles.HexNumber, NumberFormatInfo.InvariantInfo));
-                  writeChar = hexChar;
-
-                  charPos += 4;
-                }
-                else
-                {
-                  _charPos = charPos;
-                  throw CreateReaderException(this, "Unexpected end while parsing unicode character.");
-                }
-                break;
-              default:
-                charPos++;
-                _charPos = charPos;
-                throw CreateReaderException(this, "Bad JSON escape sequence: {0}.".FormatWith(CultureInfo.InvariantCulture, @"\" + currentChar));
-            }
-
-            if (buffer == null)
-              buffer = GetBuffer();
-
-            if (escapeStartPos > lastWritePosition)
-            {
-              buffer.Append(_chars, lastWritePosition, escapeStartPos - lastWritePosition);
-            }
-
-            buffer.Append(writeChar);
-
-            lastWritePosition = charPos;
-            break;
-          case StringUtils.CarriageReturn:
-            _charPos = charPos - 1;
-            ProcessCarriageReturn(true);
-            charPos = _charPos;
-            break;
-          case StringUtils.LineFeed:
-            _charPos = charPos - 1;
-            ProcessLineFeed();
-            charPos = _charPos;
-            break;
-          case '"':
-          case '\'':
-            if (_chars[charPos - 1] == quote)
-            {
-              charPos--;
-
-              if (initialPosition == lastWritePosition)
-              {
-                _stringReference = new StringReference(_chars, initialPosition, charPos - initialPosition);
-              }
-              else
-              {
-                if (buffer == null)
-                  buffer = GetBuffer();
-
-                if (charPos > lastWritePosition)
-                  buffer.Append(_chars, lastWritePosition, charPos - lastWritePosition);
-
-                _stringReference = new StringReference(buffer.GetInternalBuffer(), 0, buffer.Position);
-              }
-
-              charPos++;
-              _charPos = charPos;
-              return;
-            }
-            break;
-        }
-      }
-    }
-
-    private void ReadNumberIntoBuffer()
-    {
-      int charPos = _charPos;
-
-      while (true)
-      {
-        switch (_chars[charPos++])
-        {
-          case '\0':
-            if (_charsUsed == charPos - 1)
-            {
-              charPos--;
-              _charPos = charPos;
-              if (ReadData(true) == 0)
-                return;
-            }
-            break;
-          case '-':
-          case '+':
-          case 'a':
-          case 'A':
-          case 'b':
-          case 'B':
-          case 'c':
-          case 'C':
-          case 'd':
-          case 'D':
-          case 'e':
-          case 'E':
-          case 'f':
-          case 'F':
-          case 'x':
-          case 'X':
-          case '.':
-          case '0':
-          case '1':
-          case '2':
-          case '3':
-          case '4':
-          case '5':
-          case '6':
-          case '7':
-          case '8':
-          case '9':
-            break;
-          default:
-            _charPos = charPos - 1;
-            return;
-        }
-      }
-    }
-
-    private void ClearRecentString()
-    {
-      if (_buffer != null)
-        _buffer.Position = 0;
-
-      _stringReference = new StringReference();
-    }
-
-    private bool ParsePostValue()
-    {
-      while (true)
-      {
-        char currentChar = _chars[_charPos];
-
-        switch (currentChar)
-        {
-          case '\0':
-            if (_charsUsed == _charPos)
-            {
-              if (ReadData(false) == 0)
-              {
-                _currentState = State.Finished;
-                return false;
-              }
-            }
-            else
-            {
-              _charPos++;
-            }
-            break;
-          case '}':
-            _charPos++;
-            SetToken(JsonToken.EndObject);
-            return true;
-          case ']':
-            _charPos++;
-            SetToken(JsonToken.EndArray);
-            return true;
-          case ')':
-            _charPos++;
-            SetToken(JsonToken.EndConstructor);
-            return true;
-          case '/':
-            ParseComment();
-            return true;
-          case ',':
-            _charPos++;
-
-            // finished parsing
-            SetStateBasedOnCurrent();
-            return false;
-          case ' ':
-          case StringUtils.Tab:
-            // eat
-            _charPos++;
-            break;
-          case StringUtils.CarriageReturn:
-            ProcessCarriageReturn(false);
-            break;
-          case StringUtils.LineFeed:
-            ProcessLineFeed();
-            break;
-          default:
-            if (char.IsWhiteSpace(currentChar))
-            {
-              // eat
-              _charPos++;
-            }
-            else
-            {
-              throw CreateReaderException(this, "After parsing a value an unexpected character was encountered: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
-            }
-            break;
-        }
-      }
-    }
-
-    private bool ParseObject()
-    {
-      while (true)
-      {
-        char currentChar = _chars[_charPos];
-
-        switch (currentChar)
-        {
-          case '\0':
-            if (_charsUsed == _charPos)
-            {
-              if (ReadData(false) == 0)
-                return false;
-            }
-            else
-            {
-              _charPos++;
-            }
-            break;
-          case '}':
-            SetToken(JsonToken.EndObject);
-            _charPos++;
-            return true;
-          case '/':
-            ParseComment();
-            return true;
-          case StringUtils.CarriageReturn:
-            ProcessCarriageReturn(false);
-            break;
-          case StringUtils.LineFeed:
-            ProcessLineFeed();
-            break;
-          case ' ':
-          case StringUtils.Tab:
-            // eat
-            _charPos++;
-            break;
-          default:
-            if (char.IsWhiteSpace(currentChar))
-            {
-              // eat
-              _charPos++;
-            }
-            else
-            {
-              return ParseProperty();
-            }
-            break;
-        }
-      }
-    }
-
-    private bool ParseProperty()
-    {
-      char firstChar = _chars[_charPos];
-      char quoteChar;
-
-      if (firstChar == '"' || firstChar == '\'')
-      {
-        _charPos++;
-        quoteChar = firstChar;
-        ShiftBufferIfNeeded();
-        ReadStringIntoBuffer(quoteChar);
-      }
-      else if (ValidIdentifierChar(firstChar))
-      {
-        quoteChar = '\0';
-        ShiftBufferIfNeeded();
-        ParseUnquotedProperty();
-      }
-      else
-      {
-        throw CreateReaderException(this, "Invalid property identifier character: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
-      }
-
-      string propertyName = _stringReference.ToString();
-
-      EatWhitespace(false);
-
-      if (_chars[_charPos] != ':')
-        throw CreateReaderException(this, "Invalid character after parsing property name. Expected ':' but got: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
-
-      _charPos++;
-
-      SetToken(JsonToken.PropertyName, propertyName);
-      QuoteChar = quoteChar;
-      ClearRecentString();
-
-      return true;
-    }
-
-    private bool ValidIdentifierChar(char value)
-    {
-      return (char.IsLetterOrDigit(value) || value == '_' || value == '$');
-    }
-
-    private void ParseUnquotedProperty()
-    {
-      int initialPosition = _charPos;
-
-      // parse unquoted property name until whitespace or colon
-      while (true)
-      {
-        switch (_chars[_charPos])
-        {
-          case '\0':
-            if (_charsUsed == _charPos)
-            {
-              if (ReadData(true) == 0)
-                throw CreateReaderException(this, "Unexpected end while parsing unquoted property name.");
-
-              break;
-            }
-
-            _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition);
-            return;
-          default:
-            char currentChar = _chars[_charPos];
-
-            if (ValidIdentifierChar(currentChar))
-            {
-              _charPos++;
-              break;
-            }
-            else if (char.IsWhiteSpace(currentChar) || currentChar == ':')
-            {
-              _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition);
-              return;
-            }
-
-            throw CreateReaderException(this, "Invalid JavaScript property identifier character: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
-        }
-      }
-    }
-
-    private bool ParseValue()
-    {
-      while (true)
-      {
-        char currentChar = _chars[_charPos];
-
-        switch (currentChar)
-        {
-          case '\0':
-            if (_charsUsed == _charPos)
-            {
-              if (ReadData(false) == 0)
-                return false;
-            }
-            else
-            {
-              _charPos++;
-            }
-            break;
-          case '"':
-          case '\'':
-            ParseString(currentChar);
-            return true;
-          case 't':
-            ParseTrue();
-            return true;
-          case 'f':
-            ParseFalse();
-            return true;
-          case 'n':
-            if (EnsureChars(1, true))
-            {
-              char next = _chars[_charPos + 1];
-
-              if (next == 'u')
-                ParseNull();
-              else if (next == 'e')
-                ParseConstructor();
-              else
-                throw CreateReaderException(this, "Unexpected character encountered while parsing value: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
-            }
-            else
-            {
-              throw CreateReaderException(this, "Unexpected end.");
-            }
-            return true;
-          case 'N':
-            ParseNumberNaN();
-            return true;
-          case 'I':
-            ParseNumberPositiveInfinity();
-            return true;
-          case '-':
-            if (EnsureChars(1, true) && _chars[_charPos + 1] == 'I')
-              ParseNumberNegativeInfinity();
-            else
-              ParseNumber();
-            return true;
-          case '/':
-            ParseComment();
-            return true;
-          case 'u':
-            ParseUndefined();
-            return true;
-          case '{':
-            _charPos++;
-            SetToken(JsonToken.StartObject);
-            return true;
-          case '[':
-            _charPos++;
-            SetToken(JsonToken.StartArray);
-            return true;
-          case ']':
-            _charPos++;
-            SetToken(JsonToken.EndArray);
-            return true;
-          case ',':
-            // don't increment position, the next call to read will handle comma
-            // this is done to handle multiple empty comma values
-            SetToken(JsonToken.Undefined);
-            return true;
-          case ')':
-            _charPos++;
-            SetToken(JsonToken.EndConstructor);
-            return true;
-          case StringUtils.CarriageReturn:
-            ProcessCarriageReturn(false);
-            break;
-          case StringUtils.LineFeed:
-            ProcessLineFeed();
-            break;
-          case ' ':
-          case StringUtils.Tab:
-            // eat
-            _charPos++;
-            break;
-          default:
-            if (char.IsWhiteSpace(currentChar))
-            {
-              // eat
-              _charPos++;
-              break;
-            }
-            else if (char.IsNumber(currentChar) || currentChar == '-' || currentChar == '.')
-            {
-              ParseNumber();
-              return true;
-            }
-            else
-            {
-              throw CreateReaderException(this, "Unexpected character encountered while parsing value: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
-            }
-        }
-      }
-    }
-
-    private void ProcessLineFeed()
-    {
-      _charPos++;
-      OnNewLine(_charPos);
-    }
-
-    private void ProcessCarriageReturn(bool append)
-    {
-      _charPos++;
-
-      if (EnsureChars(1, append) && _chars[_charPos] == StringUtils.LineFeed)
-        _charPos++;
-
-      OnNewLine(_charPos);
-    }
-
-    private bool EatWhitespace(bool oneOrMore)
-    {
-      bool finished = false;
-      bool ateWhitespace = false;
-      while (!finished)
-      {
-        char currentChar = _chars[_charPos];
-
-        switch (currentChar)
-        {
-          case '\0':
-            if (_charsUsed == _charPos)
-            {
-              if (ReadData(false) == 0)
-                finished = true;
-            }
-            else
-            {
-              _charPos++;
-            }
-            break;
-          case StringUtils.CarriageReturn:
-            ProcessCarriageReturn(false);
-            break;
-          case StringUtils.LineFeed:
-            ProcessLineFeed();
-            break;
-          default:
-            if (currentChar == ' ' || char.IsWhiteSpace(currentChar))
-            {
-              ateWhitespace = true;
-              _charPos++;
-            }
-            else
-            {
-              finished = true;
-            }
-            break;
-        }
-      }
-
-      return (!oneOrMore || ateWhitespace);
-    }
-
-    private void ParseConstructor()
-    {
-      if (MatchValueWithTrailingSeperator("new"))
-      {
-        EatWhitespace(false);
-
-        int initialPosition = _charPos;
-        int endPosition;
-
-        while (true)
-        {
-          char currentChar = _chars[_charPos];
-          if (currentChar == '\0')
-          {
-            if (_charsUsed == _charPos)
-            {
-              if (ReadData(true) == 0)
-                throw CreateReaderException(this, "Unexpected end while parsing constructor.");
-            }
-            else
-            {
-              endPosition = _charPos;
-              _charPos++;
-              break;
-            }
-          }
-          else if (char.IsLetterOrDigit(currentChar))
-          {
-            _charPos++;
-          }
-          else if (currentChar == StringUtils.CarriageReturn)
-          {
-            endPosition = _charPos;
-            ProcessCarriageReturn(true);
-            break;
-          }
-          else if (currentChar == StringUtils.LineFeed)
-          {
-            endPosition = _charPos;
-            ProcessLineFeed();
-            break;
-          }
-          else if (char.IsWhiteSpace(currentChar))
-          {
-            endPosition = _charPos;
-            _charPos++;
-            break;
-          }
-          else if (currentChar == '(')
-          {
-            endPosition = _charPos;
-            break;
-          }
-          else
-          {
-            throw CreateReaderException(this, "Unexpected character while parsing constructor: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
-          }
-        }
-
-        _stringReference = new StringReference(_chars, initialPosition, endPosition - initialPosition);
-        string constructorName = _stringReference.ToString();
-
-        EatWhitespace(false);
-
-        if (_chars[_charPos] != '(')
-          throw CreateReaderException(this, "Unexpected character while parsing constructor: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
-
-        _charPos++;
-
-        ClearRecentString();
-
-        SetToken(JsonToken.StartConstructor, constructorName);
-      }
-    }
-
-    private void ParseNumber()
-    {
-      ShiftBufferIfNeeded();
-
-      char firstChar = _chars[_charPos];
-      int initialPosition = _charPos;
-
-      ReadNumberIntoBuffer();
-
-      _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition);
-
-      object numberValue;
-      JsonToken numberType;
-
-      bool singleDigit = (char.IsDigit(firstChar) && _stringReference.Length == 1);
-      bool nonBase10 = (firstChar == '0' && _stringReference.Length > 1
-        && _stringReference.Chars[_stringReference.StartIndex + 1] != '.'
-        && _stringReference.Chars[_stringReference.StartIndex + 1] != 'e'
-        && _stringReference.Chars[_stringReference.StartIndex + 1] != 'E');
-
-      if (_readType == ReadType.ReadAsInt32)
-      {
-        if (singleDigit)
-        {
-          // digit char values start at 48
-          numberValue = firstChar - 48;
-        }
-        else if (nonBase10)
-        {
-          string number = _stringReference.ToString();
-
-          // decimal.Parse doesn't support parsing hexadecimal values
-          int integer = number.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
-                           ? Convert.ToInt32(number, 16)
-                           : Convert.ToInt32(number, 8);
-
-          numberValue = integer;
-        }
-        else
-        {
-          string number = _stringReference.ToString();
-
-          numberValue = Convert.ToInt32(number, CultureInfo.InvariantCulture);
-        }
-
-        numberType = JsonToken.Integer;
-      }
-      else if (_readType == ReadType.ReadAsDecimal)
-      {
-        if (singleDigit)
-        {
-          // digit char values start at 48
-          numberValue = (decimal)firstChar - 48;
-        }
-        else if (nonBase10)
-        {
-          string number = _stringReference.ToString();
-
-          // decimal.Parse doesn't support parsing hexadecimal values
-          long integer = number.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
-                           ? Convert.ToInt64(number, 16)
-                           : Convert.ToInt64(number, 8);
-
-          numberValue = Convert.ToDecimal(integer);
-        }
-        else
-        {
-          string number = _stringReference.ToString();
-
-          numberValue = decimal.Parse(number, NumberStyles.Number | NumberStyles.AllowExponent, CultureInfo.InvariantCulture);
-        }
-
-        numberType = JsonToken.Float;
-      }
-      else
-      {
-        if (singleDigit)
-        {
-          // digit char values start at 48
-          numberValue = (long)firstChar - 48;
-          numberType = JsonToken.Integer;
-        }
-        else if (nonBase10)
-        {
-          string number = _stringReference.ToString();
-
-          numberValue = number.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
-                          ? Convert.ToInt64(number, 16)
-                          : Convert.ToInt64(number, 8);
-          numberType = JsonToken.Integer;
-        }
-        else
-        {
-          string number = _stringReference.ToString();
-
-          // it's faster to do 3 indexof with single characters than an indexofany
-          if (number.IndexOf('.') != -1 || number.IndexOf('E') != -1 || number.IndexOf('e') != -1)
-          {
-            numberValue = Convert.ToDouble(number, CultureInfo.InvariantCulture);
-            numberType = JsonToken.Float;
-          }
-          else
-          {
-            try
-            {
-              numberValue = Convert.ToInt64(number, CultureInfo.InvariantCulture);
-            }
-            catch (OverflowException ex)
-            {
-              throw new JsonReaderException("JSON integer {0} is too large or small for an Int64.".FormatWith(CultureInfo.InvariantCulture, number), ex);
-            }
-
-            numberType = JsonToken.Integer;
-          }
-        }
-      }
-
-      ClearRecentString();
-
-      SetToken(numberType, numberValue);
-    }
-
-    private void ParseComment()
-    {
-      // should have already parsed / character before reaching this method
-      _charPos++;
-
-      if (!EnsureChars(1, false) || _chars[_charPos] != '*')
-        throw CreateReaderException(this, "Error parsing comment. Expected: *, got {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
-      else
-        _charPos++;
-
-      int initialPosition = _charPos;
-
-      bool commentFinished = false;
-
-      while (!commentFinished)
-      {
-        switch (_chars[_charPos])
-        {
-          case '\0':
-            if (_charsUsed == _charPos)
-            {
-              if (ReadData(true) == 0)
-                throw CreateReaderException(this, "Unexpected end while parsing comment.");
-            }
-            else
-            {
-              _charPos++;
-            }
-            break;
-          case '*':
-            _charPos++;
-
-            if (EnsureChars(0, true))
-            {
-              if (_chars[_charPos] == '/')
-              {
-                _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition - 1);
-
-                _charPos++;
-                commentFinished = true;
-              }
-            }
-            break;
-          case StringUtils.CarriageReturn:
-            ProcessCarriageReturn(true);
-            break;
-          case StringUtils.LineFeed:
-            ProcessLineFeed();
-            break;
-          default:
-            _charPos++;
-            break;
-        }
-      }
-
-      SetToken(JsonToken.Comment, _stringReference.ToString());
-
-      ClearRecentString();
-    }
-
-    private bool MatchValue(string value)
-    {
-      if (!EnsureChars(value.Length - 1, true))
-        return false;
-
-      for (int i = 0; i < value.Length; i++)
-      {
-        if (_chars[_charPos + i] != value[i])
-        {
-          return false;
-        }
-      }
-
-      _charPos += value.Length;
-
-      return true;
-    }
-
-    private bool MatchValueWithTrailingSeperator(string value)
-    {
-      // will match value and then move to the next character, checking that it is a seperator character
-      bool match = MatchValue(value);
-
-      if (!match)
-        return false;
-
-      if (!EnsureChars(0, false))
-        return true;
-
-      return IsSeperator(_chars[_charPos]) || _chars[_charPos] == '\0';
-    }
-
-    private bool IsSeperator(char c)
-    {
-      switch (c)
-      {
-        case '}':
-        case ']':
-        case ',':
-          return true;
-        case '/':
-          // check next character to see if start of a comment
-          if (!EnsureChars(1, false))
-            return false;
-
-          return (_chars[_charPos + 1] == '*');
-        case ')':
-          if (CurrentState == State.Constructor || CurrentState == State.ConstructorStart)
-            return true;
-          break;
-        case ' ':
-        case StringUtils.Tab:
-        case StringUtils.LineFeed:
-        case StringUtils.CarriageReturn:
-          return true;
-        default:
-          if (char.IsWhiteSpace(c))
-            return true;
-          break;
-      }
-
-      return false;
-    }
-
-    private void ParseTrue()
-    {
-      // check characters equal 'true'
-      // and that it is followed by either a seperator character
-      // or the text ends
-      if (MatchValueWithTrailingSeperator(JsonConvert.True))
-      {
-        SetToken(JsonToken.Boolean, true);
-      }
-      else
-      {
-        throw CreateReaderException(this, "Error parsing boolean value.");
-      }
-    }
-
-    private void ParseNull()
-    {
-      if (MatchValueWithTrailingSeperator(JsonConvert.Null))
-      {
-        SetToken(JsonToken.Null);
-      }
-      else
-      {
-        throw CreateReaderException(this, "Error parsing null value.");
-      }
-    }
-
-    private void ParseUndefined()
-    {
-      if (MatchValueWithTrailingSeperator(JsonConvert.Undefined))
-      {
-        SetToken(JsonToken.Undefined);
-      }
-      else
-      {
-        throw CreateReaderException(this, "Error parsing undefined value.");
-      }
-    }
-
-    private void ParseFalse()
-    {
-      if (MatchValueWithTrailingSeperator(JsonConvert.False))
-      {
-        SetToken(JsonToken.Boolean, false);
-      }
-      else
-      {
-        throw CreateReaderException(this, "Error parsing boolean value.");
-      }
-    }
-
-    private void ParseNumberNegativeInfinity()
-    {
-      if (MatchValueWithTrailingSeperator(JsonConvert.NegativeInfinity))
-      {
-        SetToken(JsonToken.Float, double.NegativeInfinity);
-      }
-      else
-      {
-        throw CreateReaderException(this, "Error parsing negative infinity value.");
-      }
-    }
-
-    private void ParseNumberPositiveInfinity()
-    {
-      if (MatchValueWithTrailingSeperator(JsonConvert.PositiveInfinity))
-      {
-        SetToken(JsonToken.Float, double.PositiveInfinity);
-      }
-      else
-      {
-        throw CreateReaderException(this, "Error parsing positive infinity value.");
-      }
-    }
-
-    private void ParseNumberNaN()
-    {
-      if (MatchValueWithTrailingSeperator(JsonConvert.NaN))
-      {
-        SetToken(JsonToken.Float, double.NaN);
-      }
-      else
-      {
-        throw CreateReaderException(this, "Error parsing NaN value.");
-      }
-    }
-
-    /// <summary>
-    /// Changes the state to closed. 
-    /// </summary>
-    public override void Close()
-    {
-      base.Close();
-
-      if (CloseInput && _reader != null)
-#if !NETFX_CORE
-        _reader.Close();
-#else
-        _reader.Dispose();
-#endif
-
-      if (_buffer != null)
-        _buffer.Clear();
-    }
-
-    /// <summary>
-    /// Gets a value indicating whether the class can return line information.
-    /// </summary>
-    /// <returns>
-    /// 	<c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>.
-    /// </returns>
-    public bool HasLineInfo()
-    {
-      return true;
-    }
-
-    /// <summary>
-    /// Gets the current line number.
-    /// </summary>
-    /// <value>
-    /// The current line number or 0 if no line information is available (for example, HasLineInfo returns false).
-    /// </value>
-    public int LineNumber
-    {
-      get
-      {
-        if (CurrentState == State.Start && LinePosition == 0)
-          return 0;
-
-        return _lineNumber;
-      }
-    }
-
-    /// <summary>
-    /// Gets the current line position.
-    /// </summary>
-    /// <value>
-    /// The current line position or 0 if no line information is available (for example, HasLineInfo returns false).
-    /// </value>
-    public int LinePosition
-    {
-      get { return _charPos - _lineStartPos; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.IO;
+using System.Xml;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json
+{
+  internal enum ReadType
+  {
+    Read,
+    ReadAsInt32,
+    ReadAsBytes,
+    ReadAsString,
+    ReadAsDecimal,
+    ReadAsDateTime,
+#if !NET20
+    ReadAsDateTimeOffset
+#endif
+  }
+
+  /// <summary>
+  /// Represents a reader that provides fast, non-cached, forward-only access to JSON text data.
+  /// </summary>
+  public class JsonTextReader : JsonReader, IJsonLineInfo
+  {
+    private readonly TextReader _reader;
+
+    private char[] _chars;
+    private int _charsUsed;
+    private int _charPos;
+    private int _lineStartPos;
+    private int _lineNumber;
+    private bool _isEndOfFile;
+    private StringBuffer _buffer;
+    private StringReference _stringReference;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonReader"/> class with the specified <see cref="TextReader"/>.
+    /// </summary>
+    /// <param name="reader">The <c>TextReader</c> containing the XML data to read.</param>
+    public JsonTextReader(TextReader reader)
+    {
+      if (reader == null)
+        throw new ArgumentNullException("reader");
+
+      _reader = reader;
+      _lineNumber = 1;
+
+      _chars = new char[4097];
+    }
+
+    internal void SetCharBuffer(char[] chars)
+    {
+      _chars = chars;
+    }
+
+    private StringBuffer GetBuffer()
+    {
+      if (_buffer == null)
+      {
+        _buffer = new StringBuffer(4096);
+      }
+      else
+      {
+        _buffer.Position = 0;
+      }
+
+      return _buffer;
+    }
+
+    private void OnNewLine(int pos)
+    {
+      _lineNumber++;
+      _lineStartPos = pos - 1;
+    }
+
+    private void ParseString(char quote)
+    {
+      _charPos++;
+
+      ShiftBufferIfNeeded();
+      ReadStringIntoBuffer(quote);
+
+      if (_readType == ReadType.ReadAsBytes)
+      {
+        byte[] data;
+        if (_stringReference.Length == 0)
+        {
+          data = new byte[0];
+        }
+        else
+        {
+          data = Convert.FromBase64CharArray(_stringReference.Chars, _stringReference.StartIndex, _stringReference.Length);
+        }
+
+        SetToken(JsonToken.Bytes, data);
+      }
+      else if (_readType == ReadType.ReadAsString)
+      {
+        string text = _stringReference.ToString();
+
+        SetToken(JsonToken.String, text);
+        QuoteChar = quote;
+      }
+      else
+      {
+        string text = _stringReference.ToString();
+
+        if (text.Length > 0)
+        {
+          if (text[0] == '/')
+          {
+            if (text.StartsWith("/Date(", StringComparison.Ordinal) && text.EndsWith(")/", StringComparison.Ordinal))
+            {
+              ParseDateMicrosoft(text);
+              return;
+            }
+          }
+          else if (char.IsDigit(text[0]) && text.Length >= 19 && text.Length <= 40)
+          {
+            if (ParseDateIso(text))
+              return;
+          }
+        }
+
+        SetToken(JsonToken.String, text);
+        QuoteChar = quote;
+      }
+    }
+
+    private bool ParseDateIso(string text)
+    {
+      const string isoDateFormat = "yyyy-MM-ddTHH:mm:ss.FFFFFFFK";
+
+#if !NET20
+      if (_readType == ReadType.ReadAsDateTimeOffset)
+      {
+        DateTimeOffset dateTimeOffset;
+        if (DateTimeOffset.TryParseExact(text, isoDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateTimeOffset))
+        {
+          SetToken(JsonToken.Date, dateTimeOffset);
+          return true;
+        }
+      }
+      else
+#endif
+      {
+        DateTime dateTime;
+        if (DateTime.TryParseExact(text, isoDateFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateTime))
+        {
+          dateTime = JsonConvert.EnsureDateTime(dateTime, DateTimeZoneHandling);
+
+          SetToken(JsonToken.Date, dateTime);
+          return true;
+        }
+      }
+
+      return false;
+    }
+
+    private void ParseDateMicrosoft(string text)
+    {
+      string value = text.Substring(6, text.Length - 8);
+      DateTimeKind kind = DateTimeKind.Utc;
+
+      int index = value.IndexOf('+', 1);
+
+      if (index == -1)
+        index = value.IndexOf('-', 1);
+
+      TimeSpan offset = TimeSpan.Zero;
+
+      if (index != -1)
+      {
+        kind = DateTimeKind.Local;
+        offset = ReadOffset(value.Substring(index));
+        value = value.Substring(0, index);
+      }
+
+      long javaScriptTicks = long.Parse(value, NumberStyles.Integer, CultureInfo.InvariantCulture);
+
+      DateTime utcDateTime = JsonConvert.ConvertJavaScriptTicksToDateTime(javaScriptTicks);
+
+#if !NET20
+      if (_readType == ReadType.ReadAsDateTimeOffset)
+      {
+        SetToken(JsonToken.Date, new DateTimeOffset(utcDateTime.Add(offset).Ticks, offset));
+      }
+      else
+#endif
+      {
+        DateTime dateTime;
+
+        switch (kind)
+        {
+          case DateTimeKind.Unspecified:
+            dateTime = DateTime.SpecifyKind(utcDateTime.ToLocalTime(), DateTimeKind.Unspecified);
+            break;
+          case DateTimeKind.Local:
+            dateTime = utcDateTime.ToLocalTime();
+            break;
+          default:
+            dateTime = utcDateTime;
+            break;
+        }
+
+        dateTime = JsonConvert.EnsureDateTime(dateTime, DateTimeZoneHandling);
+
+        SetToken(JsonToken.Date, dateTime);
+      }
+    }
+
+    private static void BlockCopyChars(char[] src, int srcOffset, char[] dst, int dstOffset, int count)
+    {
+      const int charByteCount = 2;
+
+      Buffer.BlockCopy(src, srcOffset * charByteCount, dst, dstOffset * charByteCount, count * charByteCount);
+    }
+
+    private void ShiftBufferIfNeeded()
+    {
+      // once in the last 10% of the buffer shift the remainling content to the start to avoid
+      // unnessesarly increasing the buffer size when reading numbers/strings
+      int length = _chars.Length;
+      if (length - _charPos <= length * 0.1)
+      {
+        int count = _charsUsed - _charPos;
+        if (count > 0)
+          BlockCopyChars(_chars, _charPos, _chars, 0, count);
+
+        _lineStartPos -= _charPos;
+        _charPos = 0;
+        _charsUsed = count;
+        _chars[_charsUsed] = '\0';
+      }
+    }
+
+    private int ReadData(bool append)
+    {
+      return ReadData(append, 0);
+    }
+
+    private int ReadData(bool append, int charsRequired)
+    {
+      if (_isEndOfFile)
+        return 0;
+
+      // char buffer is full
+      if (_charsUsed + charsRequired >= _chars.Length - 1)
+      {
+        if (append)
+        {
+          // copy to new array either double the size of the current or big enough to fit required content
+          int newArrayLength = Math.Max(_chars.Length * 2, _charsUsed + charsRequired + 1);
+
+          // increase the size of the buffer
+          char[] dst = new char[newArrayLength];
+
+          BlockCopyChars(_chars, 0, dst, 0, _chars.Length);
+
+          _chars = dst;
+        }
+        else
+        {
+          int remainingCharCount = _charsUsed - _charPos;
+
+          if (remainingCharCount + charsRequired + 1 >= _chars.Length)
+          {
+            // the remaining count plus the required is bigger than the current buffer size
+            char[] dst = new char[remainingCharCount + charsRequired + 1];
+
+            if (remainingCharCount > 0)
+              BlockCopyChars(_chars, _charPos, dst, 0, remainingCharCount);
+
+            _chars = dst;
+          }
+          else
+          {
+            // copy any remaining data to the beginning of the buffer if needed and reset positions
+            if (remainingCharCount > 0)
+              BlockCopyChars(_chars, _charPos, _chars, 0, remainingCharCount);
+          }
+
+          _lineStartPos -= _charPos;
+          _charPos = 0;
+          _charsUsed = remainingCharCount;
+        }
+      }
+
+      int attemptCharReadCount = _chars.Length - _charsUsed - 1;
+
+      int charsRead = _reader.Read(_chars, _charsUsed, attemptCharReadCount);
+      _charsUsed += charsRead;
+
+      if (charsRead == 0)
+        _isEndOfFile = true;
+
+      _chars[_charsUsed] = '\0';
+      return charsRead;
+    }
+
+    private bool EnsureChars(int relativePosition, bool append)
+    {
+      if (_charPos + relativePosition >= _charsUsed)
+        return ReadChars(relativePosition, append);
+
+      return true;
+    }
+
+    private bool ReadChars(int relativePosition, bool append)
+    {
+      if (_isEndOfFile)
+        return false;
+
+      int charsRequired = _charPos + relativePosition - _charsUsed + 1;
+
+      int charsRead = ReadData(append, charsRequired);
+
+      if (charsRead < charsRequired)
+        return false;
+      return true;
+    }
+
+    private static TimeSpan ReadOffset(string offsetText)
+    {
+      bool negative = (offsetText[0] == '-');
+
+      int hours = int.Parse(offsetText.Substring(1, 2), NumberStyles.Integer, CultureInfo.InvariantCulture);
+      int minutes = 0;
+      if (offsetText.Length >= 5)
+        minutes = int.Parse(offsetText.Substring(3, 2), NumberStyles.Integer, CultureInfo.InvariantCulture);
+
+      TimeSpan offset = TimeSpan.FromHours(hours) + TimeSpan.FromMinutes(minutes);
+      if (negative)
+        offset = offset.Negate();
+
+      return offset;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream.
+    /// </summary>
+    /// <returns>
+    /// true if the next token was read successfully; false if there are no more tokens to read.
+    /// </returns>
+    [DebuggerStepThrough]
+    public override bool Read()
+    {
+      _readType = ReadType.Read;
+      if (!ReadInternal())
+      {
+        SetToken(JsonToken.None);
+        return false;
+      }
+
+      return true;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.
+    /// </returns>
+    public override byte[] ReadAsBytes()
+    {
+      return ReadAsBytesInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override decimal? ReadAsDecimal()
+    {
+      return ReadAsDecimalInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override int? ReadAsInt32()
+    {
+      return ReadAsInt32Internal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="String"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override string ReadAsString()
+    {
+      return ReadAsStringInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override DateTime? ReadAsDateTime()
+    {
+      return ReadAsDateTimeInternal();
+    }
+
+#if !NET20
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
+    /// </summary>
+    /// <returns>A <see cref="DateTimeOffset"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override DateTimeOffset? ReadAsDateTimeOffset()
+    {
+      return ReadAsDateTimeOffsetInternal();
+    }
+#endif
+
+    internal override bool ReadInternal()
+    {
+      while (true)
+      {
+        switch (_currentState)
+        {
+          case State.Start:
+          case State.Property:
+          case State.Array:
+          case State.ArrayStart:
+          case State.Constructor:
+          case State.ConstructorStart:
+            return ParseValue();
+          case State.Complete:
+            break;
+          case State.Object:
+          case State.ObjectStart:
+            return ParseObject();
+          case State.PostValue:
+            // returns true if it hits
+            // end of object or array
+            if (ParsePostValue())
+              return true;
+            break;
+          case State.Finished:
+            if (EnsureChars(0, false))
+            {
+              EatWhitespace(false);
+              if (_isEndOfFile)
+              {
+                return false;
+              }
+              if (_chars[_charPos] == '/')
+              {
+                ParseComment();
+                return true;
+              }
+              else
+              {
+                throw CreateReaderException(this, "Additional text encountered after finished reading JSON content: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
+              }
+            }
+            return false;
+          case State.Closed:
+            break;
+          case State.Error:
+            break;
+          default:
+            throw CreateReaderException(this, "Unexpected state: {0}.".FormatWith(CultureInfo.InvariantCulture, CurrentState));
+        }
+      }
+    }
+
+    private void ReadStringIntoBuffer(char quote)
+    {
+      int charPos = _charPos;
+      int initialPosition = _charPos;
+      int lastWritePosition = _charPos;
+      StringBuffer buffer = null;
+
+      while (true)
+      {
+        switch (_chars[charPos++])
+        {
+          case '\0':
+            if (_charsUsed == charPos - 1)
+            {
+              charPos--;
+
+              if (ReadData(true) == 0)
+              {
+                _charPos = charPos;
+                throw CreateReaderException(this, "Unterminated string. Expected delimiter: {0}.".FormatWith(CultureInfo.InvariantCulture, quote));
+              }
+            }
+            break;
+          case '\\':
+            _charPos = charPos;
+            if (!EnsureChars(0, true))
+            {
+              _charPos = charPos;
+              throw CreateReaderException(this, "Unterminated string. Expected delimiter: {0}.".FormatWith(CultureInfo.InvariantCulture, quote));
+            }
+
+            // start of escape sequence
+            int escapeStartPos = charPos - 1;
+
+            char currentChar = _chars[charPos];
+
+            char writeChar;
+
+            switch (currentChar)
+            {
+              case 'b':
+                charPos++;
+                writeChar = '\b';
+                break;
+              case 't':
+                charPos++;
+                writeChar = '\t';
+                break;
+              case 'n':
+                charPos++;
+                writeChar = '\n';
+                break;
+              case 'f':
+                charPos++;
+                writeChar = '\f';
+                break;
+              case 'r':
+                charPos++;
+                writeChar = '\r';
+                break;
+              case '\\':
+                charPos++;
+                writeChar = '\\';
+                break;
+              case '"':
+              case '\'':
+              case '/':
+                writeChar = currentChar;
+                charPos++;
+                break;
+              case 'u':
+                charPos++;
+                _charPos = charPos;
+                if (EnsureChars(4, true))
+                {
+                  string hexValues = new string(_chars, charPos, 4);
+                  char hexChar = Convert.ToChar(int.Parse(hexValues, NumberStyles.HexNumber, NumberFormatInfo.InvariantInfo));
+                  writeChar = hexChar;
+
+                  charPos += 4;
+                }
+                else
+                {
+                  _charPos = charPos;
+                  throw CreateReaderException(this, "Unexpected end while parsing unicode character.");
+                }
+                break;
+              default:
+                charPos++;
+                _charPos = charPos;
+                throw CreateReaderException(this, "Bad JSON escape sequence: {0}.".FormatWith(CultureInfo.InvariantCulture, @"\" + currentChar));
+            }
+
+            if (buffer == null)
+              buffer = GetBuffer();
+
+            if (escapeStartPos > lastWritePosition)
+            {
+              buffer.Append(_chars, lastWritePosition, escapeStartPos - lastWritePosition);
+            }
+
+            buffer.Append(writeChar);
+
+            lastWritePosition = charPos;
+            break;
+          case StringUtils.CarriageReturn:
+            _charPos = charPos - 1;
+            ProcessCarriageReturn(true);
+            charPos = _charPos;
+            break;
+          case StringUtils.LineFeed:
+            _charPos = charPos - 1;
+            ProcessLineFeed();
+            charPos = _charPos;
+            break;
+          case '"':
+          case '\'':
+            if (_chars[charPos - 1] == quote)
+            {
+              charPos--;
+
+              if (initialPosition == lastWritePosition)
+              {
+                _stringReference = new StringReference(_chars, initialPosition, charPos - initialPosition);
+              }
+              else
+              {
+                if (buffer == null)
+                  buffer = GetBuffer();
+
+                if (charPos > lastWritePosition)
+                  buffer.Append(_chars, lastWritePosition, charPos - lastWritePosition);
+
+                _stringReference = new StringReference(buffer.GetInternalBuffer(), 0, buffer.Position);
+              }
+
+              charPos++;
+              _charPos = charPos;
+              return;
+            }
+            break;
+        }
+      }
+    }
+
+    private void ReadNumberIntoBuffer()
+    {
+      int charPos = _charPos;
+
+      while (true)
+      {
+        switch (_chars[charPos++])
+        {
+          case '\0':
+            if (_charsUsed == charPos - 1)
+            {
+              charPos--;
+              _charPos = charPos;
+              if (ReadData(true) == 0)
+                return;
+            }
+            break;
+          case '-':
+          case '+':
+          case 'a':
+          case 'A':
+          case 'b':
+          case 'B':
+          case 'c':
+          case 'C':
+          case 'd':
+          case 'D':
+          case 'e':
+          case 'E':
+          case 'f':
+          case 'F':
+          case 'x':
+          case 'X':
+          case '.':
+          case '0':
+          case '1':
+          case '2':
+          case '3':
+          case '4':
+          case '5':
+          case '6':
+          case '7':
+          case '8':
+          case '9':
+            break;
+          default:
+            _charPos = charPos - 1;
+            return;
+        }
+      }
+    }
+
+    private void ClearRecentString()
+    {
+      if (_buffer != null)
+        _buffer.Position = 0;
+
+      _stringReference = new StringReference();
+    }
+
+    private bool ParsePostValue()
+    {
+      while (true)
+      {
+        char currentChar = _chars[_charPos];
+
+        switch (currentChar)
+        {
+          case '\0':
+            if (_charsUsed == _charPos)
+            {
+              if (ReadData(false) == 0)
+              {
+                _currentState = State.Finished;
+                return false;
+              }
+            }
+            else
+            {
+              _charPos++;
+            }
+            break;
+          case '}':
+            _charPos++;
+            SetToken(JsonToken.EndObject);
+            return true;
+          case ']':
+            _charPos++;
+            SetToken(JsonToken.EndArray);
+            return true;
+          case ')':
+            _charPos++;
+            SetToken(JsonToken.EndConstructor);
+            return true;
+          case '/':
+            ParseComment();
+            return true;
+          case ',':
+            _charPos++;
+
+            // finished parsing
+            SetStateBasedOnCurrent();
+            return false;
+          case ' ':
+          case StringUtils.Tab:
+            // eat
+            _charPos++;
+            break;
+          case StringUtils.CarriageReturn:
+            ProcessCarriageReturn(false);
+            break;
+          case StringUtils.LineFeed:
+            ProcessLineFeed();
+            break;
+          default:
+            if (char.IsWhiteSpace(currentChar))
+            {
+              // eat
+              _charPos++;
+            }
+            else
+            {
+              throw CreateReaderException(this, "After parsing a value an unexpected character was encountered: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
+            }
+            break;
+        }
+      }
+    }
+
+    private bool ParseObject()
+    {
+      while (true)
+      {
+        char currentChar = _chars[_charPos];
+
+        switch (currentChar)
+        {
+          case '\0':
+            if (_charsUsed == _charPos)
+            {
+              if (ReadData(false) == 0)
+                return false;
+            }
+            else
+            {
+              _charPos++;
+            }
+            break;
+          case '}':
+            SetToken(JsonToken.EndObject);
+            _charPos++;
+            return true;
+          case '/':
+            ParseComment();
+            return true;
+          case StringUtils.CarriageReturn:
+            ProcessCarriageReturn(false);
+            break;
+          case StringUtils.LineFeed:
+            ProcessLineFeed();
+            break;
+          case ' ':
+          case StringUtils.Tab:
+            // eat
+            _charPos++;
+            break;
+          default:
+            if (char.IsWhiteSpace(currentChar))
+            {
+              // eat
+              _charPos++;
+            }
+            else
+            {
+              return ParseProperty();
+            }
+            break;
+        }
+      }
+    }
+
+    private bool ParseProperty()
+    {
+      char firstChar = _chars[_charPos];
+      char quoteChar;
+
+      if (firstChar == '"' || firstChar == '\'')
+      {
+        _charPos++;
+        quoteChar = firstChar;
+        ShiftBufferIfNeeded();
+        ReadStringIntoBuffer(quoteChar);
+      }
+      else if (ValidIdentifierChar(firstChar))
+      {
+        quoteChar = '\0';
+        ShiftBufferIfNeeded();
+        ParseUnquotedProperty();
+      }
+      else
+      {
+        throw CreateReaderException(this, "Invalid property identifier character: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
+      }
+
+      string propertyName = _stringReference.ToString();
+
+      EatWhitespace(false);
+
+      if (_chars[_charPos] != ':')
+        throw CreateReaderException(this, "Invalid character after parsing property name. Expected ':' but got: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
+
+      _charPos++;
+
+      SetToken(JsonToken.PropertyName, propertyName);
+      QuoteChar = quoteChar;
+      ClearRecentString();
+
+      return true;
+    }
+
+    private bool ValidIdentifierChar(char value)
+    {
+      return (char.IsLetterOrDigit(value) || value == '_' || value == '$');
+    }
+
+    private void ParseUnquotedProperty()
+    {
+      int initialPosition = _charPos;
+
+      // parse unquoted property name until whitespace or colon
+      while (true)
+      {
+        switch (_chars[_charPos])
+        {
+          case '\0':
+            if (_charsUsed == _charPos)
+            {
+              if (ReadData(true) == 0)
+                throw CreateReaderException(this, "Unexpected end while parsing unquoted property name.");
+
+              break;
+            }
+
+            _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition);
+            return;
+          default:
+            char currentChar = _chars[_charPos];
+
+            if (ValidIdentifierChar(currentChar))
+            {
+              _charPos++;
+              break;
+            }
+            else if (char.IsWhiteSpace(currentChar) || currentChar == ':')
+            {
+              _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition);
+              return;
+            }
+
+            throw CreateReaderException(this, "Invalid JavaScript property identifier character: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
+        }
+      }
+    }
+
+    private bool ParseValue()
+    {
+      while (true)
+      {
+        char currentChar = _chars[_charPos];
+
+        switch (currentChar)
+        {
+          case '\0':
+            if (_charsUsed == _charPos)
+            {
+              if (ReadData(false) == 0)
+                return false;
+            }
+            else
+            {
+              _charPos++;
+            }
+            break;
+          case '"':
+          case '\'':
+            ParseString(currentChar);
+            return true;
+          case 't':
+            ParseTrue();
+            return true;
+          case 'f':
+            ParseFalse();
+            return true;
+          case 'n':
+            if (EnsureChars(1, true))
+            {
+              char next = _chars[_charPos + 1];
+
+              if (next == 'u')
+                ParseNull();
+              else if (next == 'e')
+                ParseConstructor();
+              else
+                throw CreateReaderException(this, "Unexpected character encountered while parsing value: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
+            }
+            else
+            {
+              throw CreateReaderException(this, "Unexpected end.");
+            }
+            return true;
+          case 'N':
+            ParseNumberNaN();
+            return true;
+          case 'I':
+            ParseNumberPositiveInfinity();
+            return true;
+          case '-':
+            if (EnsureChars(1, true) && _chars[_charPos + 1] == 'I')
+              ParseNumberNegativeInfinity();
+            else
+              ParseNumber();
+            return true;
+          case '/':
+            ParseComment();
+            return true;
+          case 'u':
+            ParseUndefined();
+            return true;
+          case '{':
+            _charPos++;
+            SetToken(JsonToken.StartObject);
+            return true;
+          case '[':
+            _charPos++;
+            SetToken(JsonToken.StartArray);
+            return true;
+          case ']':
+            _charPos++;
+            SetToken(JsonToken.EndArray);
+            return true;
+          case ',':
+            // don't increment position, the next call to read will handle comma
+            // this is done to handle multiple empty comma values
+            SetToken(JsonToken.Undefined);
+            return true;
+          case ')':
+            _charPos++;
+            SetToken(JsonToken.EndConstructor);
+            return true;
+          case StringUtils.CarriageReturn:
+            ProcessCarriageReturn(false);
+            break;
+          case StringUtils.LineFeed:
+            ProcessLineFeed();
+            break;
+          case ' ':
+          case StringUtils.Tab:
+            // eat
+            _charPos++;
+            break;
+          default:
+            if (char.IsWhiteSpace(currentChar))
+            {
+              // eat
+              _charPos++;
+              break;
+            }
+            else if (char.IsNumber(currentChar) || currentChar == '-' || currentChar == '.')
+            {
+              ParseNumber();
+              return true;
+            }
+            else
+            {
+              throw CreateReaderException(this, "Unexpected character encountered while parsing value: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
+            }
+        }
+      }
+    }
+
+    private void ProcessLineFeed()
+    {
+      _charPos++;
+      OnNewLine(_charPos);
+    }
+
+    private void ProcessCarriageReturn(bool append)
+    {
+      _charPos++;
+
+      if (EnsureChars(1, append) && _chars[_charPos] == StringUtils.LineFeed)
+        _charPos++;
+
+      OnNewLine(_charPos);
+    }
+
+    private bool EatWhitespace(bool oneOrMore)
+    {
+      bool finished = false;
+      bool ateWhitespace = false;
+      while (!finished)
+      {
+        char currentChar = _chars[_charPos];
+
+        switch (currentChar)
+        {
+          case '\0':
+            if (_charsUsed == _charPos)
+            {
+              if (ReadData(false) == 0)
+                finished = true;
+            }
+            else
+            {
+              _charPos++;
+            }
+            break;
+          case StringUtils.CarriageReturn:
+            ProcessCarriageReturn(false);
+            break;
+          case StringUtils.LineFeed:
+            ProcessLineFeed();
+            break;
+          default:
+            if (currentChar == ' ' || char.IsWhiteSpace(currentChar))
+            {
+              ateWhitespace = true;
+              _charPos++;
+            }
+            else
+            {
+              finished = true;
+            }
+            break;
+        }
+      }
+
+      return (!oneOrMore || ateWhitespace);
+    }
+
+    private void ParseConstructor()
+    {
+      if (MatchValueWithTrailingSeperator("new"))
+      {
+        EatWhitespace(false);
+
+        int initialPosition = _charPos;
+        int endPosition;
+
+        while (true)
+        {
+          char currentChar = _chars[_charPos];
+          if (currentChar == '\0')
+          {
+            if (_charsUsed == _charPos)
+            {
+              if (ReadData(true) == 0)
+                throw CreateReaderException(this, "Unexpected end while parsing constructor.");
+            }
+            else
+            {
+              endPosition = _charPos;
+              _charPos++;
+              break;
+            }
+          }
+          else if (char.IsLetterOrDigit(currentChar))
+          {
+            _charPos++;
+          }
+          else if (currentChar == StringUtils.CarriageReturn)
+          {
+            endPosition = _charPos;
+            ProcessCarriageReturn(true);
+            break;
+          }
+          else if (currentChar == StringUtils.LineFeed)
+          {
+            endPosition = _charPos;
+            ProcessLineFeed();
+            break;
+          }
+          else if (char.IsWhiteSpace(currentChar))
+          {
+            endPosition = _charPos;
+            _charPos++;
+            break;
+          }
+          else if (currentChar == '(')
+          {
+            endPosition = _charPos;
+            break;
+          }
+          else
+          {
+            throw CreateReaderException(this, "Unexpected character while parsing constructor: {0}.".FormatWith(CultureInfo.InvariantCulture, currentChar));
+          }
+        }
+
+        _stringReference = new StringReference(_chars, initialPosition, endPosition - initialPosition);
+        string constructorName = _stringReference.ToString();
+
+        EatWhitespace(false);
+
+        if (_chars[_charPos] != '(')
+          throw CreateReaderException(this, "Unexpected character while parsing constructor: {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
+
+        _charPos++;
+
+        ClearRecentString();
+
+        SetToken(JsonToken.StartConstructor, constructorName);
+      }
+    }
+
+    private void ParseNumber()
+    {
+      ShiftBufferIfNeeded();
+
+      char firstChar = _chars[_charPos];
+      int initialPosition = _charPos;
+
+      ReadNumberIntoBuffer();
+
+      _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition);
+
+      object numberValue;
+      JsonToken numberType;
+
+      bool singleDigit = (char.IsDigit(firstChar) && _stringReference.Length == 1);
+      bool nonBase10 = (firstChar == '0' && _stringReference.Length > 1
+        && _stringReference.Chars[_stringReference.StartIndex + 1] != '.'
+        && _stringReference.Chars[_stringReference.StartIndex + 1] != 'e'
+        && _stringReference.Chars[_stringReference.StartIndex + 1] != 'E');
+
+      if (_readType == ReadType.ReadAsInt32)
+      {
+        if (singleDigit)
+        {
+          // digit char values start at 48
+          numberValue = firstChar - 48;
+        }
+        else if (nonBase10)
+        {
+          string number = _stringReference.ToString();
+
+          // decimal.Parse doesn't support parsing hexadecimal values
+          int integer = number.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
+                           ? Convert.ToInt32(number, 16)
+                           : Convert.ToInt32(number, 8);
+
+          numberValue = integer;
+        }
+        else
+        {
+          string number = _stringReference.ToString();
+
+          numberValue = Convert.ToInt32(number, CultureInfo.InvariantCulture);
+        }
+
+        numberType = JsonToken.Integer;
+      }
+      else if (_readType == ReadType.ReadAsDecimal)
+      {
+        if (singleDigit)
+        {
+          // digit char values start at 48
+          numberValue = (decimal)firstChar - 48;
+        }
+        else if (nonBase10)
+        {
+          string number = _stringReference.ToString();
+
+          // decimal.Parse doesn't support parsing hexadecimal values
+          long integer = number.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
+                           ? Convert.ToInt64(number, 16)
+                           : Convert.ToInt64(number, 8);
+
+          numberValue = Convert.ToDecimal(integer);
+        }
+        else
+        {
+          string number = _stringReference.ToString();
+
+          numberValue = decimal.Parse(number, NumberStyles.Number | NumberStyles.AllowExponent, CultureInfo.InvariantCulture);
+        }
+
+        numberType = JsonToken.Float;
+      }
+      else
+      {
+        if (singleDigit)
+        {
+          // digit char values start at 48
+          numberValue = (long)firstChar - 48;
+          numberType = JsonToken.Integer;
+        }
+        else if (nonBase10)
+        {
+          string number = _stringReference.ToString();
+
+          numberValue = number.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
+                          ? Convert.ToInt64(number, 16)
+                          : Convert.ToInt64(number, 8);
+          numberType = JsonToken.Integer;
+        }
+        else
+        {
+          string number = _stringReference.ToString();
+
+          // it's faster to do 3 indexof with single characters than an indexofany
+          if (number.IndexOf('.') != -1 || number.IndexOf('E') != -1 || number.IndexOf('e') != -1)
+          {
+            numberValue = Convert.ToDouble(number, CultureInfo.InvariantCulture);
+            numberType = JsonToken.Float;
+          }
+          else
+          {
+            try
+            {
+              numberValue = Convert.ToInt64(number, CultureInfo.InvariantCulture);
+            }
+            catch (OverflowException ex)
+            {
+              throw new JsonReaderException("JSON integer {0} is too large or small for an Int64.".FormatWith(CultureInfo.InvariantCulture, number), ex);
+            }
+
+            numberType = JsonToken.Integer;
+          }
+        }
+      }
+
+      ClearRecentString();
+
+      SetToken(numberType, numberValue);
+    }
+
+    private void ParseComment()
+    {
+      // should have already parsed / character before reaching this method
+      _charPos++;
+
+      if (!EnsureChars(1, false) || _chars[_charPos] != '*')
+        throw CreateReaderException(this, "Error parsing comment. Expected: *, got {0}.".FormatWith(CultureInfo.InvariantCulture, _chars[_charPos]));
+      else
+        _charPos++;
+
+      int initialPosition = _charPos;
+
+      bool commentFinished = false;
+
+      while (!commentFinished)
+      {
+        switch (_chars[_charPos])
+        {
+          case '\0':
+            if (_charsUsed == _charPos)
+            {
+              if (ReadData(true) == 0)
+                throw CreateReaderException(this, "Unexpected end while parsing comment.");
+            }
+            else
+            {
+              _charPos++;
+            }
+            break;
+          case '*':
+            _charPos++;
+
+            if (EnsureChars(0, true))
+            {
+              if (_chars[_charPos] == '/')
+              {
+                _stringReference = new StringReference(_chars, initialPosition, _charPos - initialPosition - 1);
+
+                _charPos++;
+                commentFinished = true;
+              }
+            }
+            break;
+          case StringUtils.CarriageReturn:
+            ProcessCarriageReturn(true);
+            break;
+          case StringUtils.LineFeed:
+            ProcessLineFeed();
+            break;
+          default:
+            _charPos++;
+            break;
+        }
+      }
+
+      SetToken(JsonToken.Comment, _stringReference.ToString());
+
+      ClearRecentString();
+    }
+
+    private bool MatchValue(string value)
+    {
+      if (!EnsureChars(value.Length - 1, true))
+        return false;
+
+      for (int i = 0; i < value.Length; i++)
+      {
+        if (_chars[_charPos + i] != value[i])
+        {
+          return false;
+        }
+      }
+
+      _charPos += value.Length;
+
+      return true;
+    }
+
+    private bool MatchValueWithTrailingSeperator(string value)
+    {
+      // will match value and then move to the next character, checking that it is a seperator character
+      bool match = MatchValue(value);
+
+      if (!match)
+        return false;
+
+      if (!EnsureChars(0, false))
+        return true;
+
+      return IsSeperator(_chars[_charPos]) || _chars[_charPos] == '\0';
+    }
+
+    private bool IsSeperator(char c)
+    {
+      switch (c)
+      {
+        case '}':
+        case ']':
+        case ',':
+          return true;
+        case '/':
+          // check next character to see if start of a comment
+          if (!EnsureChars(1, false))
+            return false;
+
+          return (_chars[_charPos + 1] == '*');
+        case ')':
+          if (CurrentState == State.Constructor || CurrentState == State.ConstructorStart)
+            return true;
+          break;
+        case ' ':
+        case StringUtils.Tab:
+        case StringUtils.LineFeed:
+        case StringUtils.CarriageReturn:
+          return true;
+        default:
+          if (char.IsWhiteSpace(c))
+            return true;
+          break;
+      }
+
+      return false;
+    }
+
+    private void ParseTrue()
+    {
+      // check characters equal 'true'
+      // and that it is followed by either a seperator character
+      // or the text ends
+      if (MatchValueWithTrailingSeperator(JsonConvert.True))
+      {
+        SetToken(JsonToken.Boolean, true);
+      }
+      else
+      {
+        throw CreateReaderException(this, "Error parsing boolean value.");
+      }
+    }
+
+    private void ParseNull()
+    {
+      if (MatchValueWithTrailingSeperator(JsonConvert.Null))
+      {
+        SetToken(JsonToken.Null);
+      }
+      else
+      {
+        throw CreateReaderException(this, "Error parsing null value.");
+      }
+    }
+
+    private void ParseUndefined()
+    {
+      if (MatchValueWithTrailingSeperator(JsonConvert.Undefined))
+      {
+        SetToken(JsonToken.Undefined);
+      }
+      else
+      {
+        throw CreateReaderException(this, "Error parsing undefined value.");
+      }
+    }
+
+    private void ParseFalse()
+    {
+      if (MatchValueWithTrailingSeperator(JsonConvert.False))
+      {
+        SetToken(JsonToken.Boolean, false);
+      }
+      else
+      {
+        throw CreateReaderException(this, "Error parsing boolean value.");
+      }
+    }
+
+    private void ParseNumberNegativeInfinity()
+    {
+      if (MatchValueWithTrailingSeperator(JsonConvert.NegativeInfinity))
+      {
+        SetToken(JsonToken.Float, double.NegativeInfinity);
+      }
+      else
+      {
+        throw CreateReaderException(this, "Error parsing negative infinity value.");
+      }
+    }
+
+    private void ParseNumberPositiveInfinity()
+    {
+      if (MatchValueWithTrailingSeperator(JsonConvert.PositiveInfinity))
+      {
+        SetToken(JsonToken.Float, double.PositiveInfinity);
+      }
+      else
+      {
+        throw CreateReaderException(this, "Error parsing positive infinity value.");
+      }
+    }
+
+    private void ParseNumberNaN()
+    {
+      if (MatchValueWithTrailingSeperator(JsonConvert.NaN))
+      {
+        SetToken(JsonToken.Float, double.NaN);
+      }
+      else
+      {
+        throw CreateReaderException(this, "Error parsing NaN value.");
+      }
+    }
+
+    /// <summary>
+    /// Changes the state to closed. 
+    /// </summary>
+    public override void Close()
+    {
+      base.Close();
+
+      if (CloseInput && _reader != null)
+#if !NETFX_CORE
+        _reader.Close();
+#else
+        _reader.Dispose();
+#endif
+
+      if (_buffer != null)
+        _buffer.Clear();
+    }
+
+    /// <summary>
+    /// Gets a value indicating whether the class can return line information.
+    /// </summary>
+    /// <returns>
+    /// 	<c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>.
+    /// </returns>
+    public bool HasLineInfo()
+    {
+      return true;
+    }
+
+    /// <summary>
+    /// Gets the current line number.
+    /// </summary>
+    /// <value>
+    /// The current line number or 0 if no line information is available (for example, HasLineInfo returns false).
+    /// </value>
+    public int LineNumber
+    {
+      get
+      {
+        if (CurrentState == State.Start && LinePosition == 0)
+          return 0;
+
+        return _lineNumber;
+      }
+    }
+
+    /// <summary>
+    /// Gets the current line position.
+    /// </summary>
+    /// <value>
+    /// The current line position or 0 if no line information is available (for example, HasLineInfo returns false).
+    /// </value>
+    public int LinePosition
+    {
+      get { return _charPos - _lineStartPos; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonTextWriter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonTextWriter.cs
@@ -1,524 +1,524 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-using System.IO;
-using System.Xml;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
-  /// </summary>
-  public class JsonTextWriter : JsonWriter
-  {
-    private readonly TextWriter _writer;
-    private Base64Encoder _base64Encoder;
-    private char _indentChar;
-    private int _indentation;
-    private char _quoteChar;
-    private bool _quoteName;
-
-    private Base64Encoder Base64Encoder
-    {
-      get
-      {
-        if (_base64Encoder == null)
-          _base64Encoder = new Base64Encoder(_writer);
-
-        return _base64Encoder;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets how many IndentChars to write for each level in the hierarchy when <see cref="Formatting"/> is set to <c>Formatting.Indented</c>.
-    /// </summary>
-    public int Indentation
-    {
-      get { return _indentation; }
-      set
-      {
-        if (value < 0)
-          throw new ArgumentException("Indentation value must be greater than 0.");
-
-        _indentation = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets which character to use to quote attribute values.
-    /// </summary>
-    public char QuoteChar
-    {
-      get { return _quoteChar; }
-      set
-      {
-        if (value != '"' && value != '\'')
-          throw new ArgumentException(@"Invalid JavaScript string quote character. Valid quote characters are ' and "".");
-
-        _quoteChar = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets which character to use for indenting when <see cref="Formatting"/> is set to <c>Formatting.Indented</c>.
-    /// </summary>
-    public char IndentChar
-    {
-      get { return _indentChar; }
-      set { _indentChar = value; }
-    }
-
-    /// <summary>
-    /// Gets or sets a value indicating whether object names will be surrounded with quotes.
-    /// </summary>
-    public bool QuoteName
-    {
-      get { return _quoteName; }
-      set { _quoteName = value; }
-    }
-
-    /// <summary>
-    /// Creates an instance of the <c>JsonWriter</c> class using the specified <see cref="TextWriter"/>. 
-    /// </summary>
-    /// <param name="textWriter">The <c>TextWriter</c> to write to.</param>
-    public JsonTextWriter(TextWriter textWriter)
-    {
-      if (textWriter == null)
-        throw new ArgumentNullException("textWriter");
-
-      _writer = textWriter;
-      _quoteChar = '"';
-      _quoteName = true;
-      _indentChar = ' ';
-      _indentation = 2;
-    }
-
-    /// <summary>
-    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
-    /// </summary>
-    public override void Flush()
-    {
-      _writer.Flush();
-    }
-
-    /// <summary>
-    /// Closes this stream and the underlying stream.
-    /// </summary>
-    public override void Close()
-    {
-      base.Close();
-
-      if (CloseOutput && _writer != null)
-#if !NETFX_CORE
-        _writer.Close();
-#else
-        _writer.Dispose();
-#endif
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json object.
-    /// </summary>
-    public override void WriteStartObject()
-    {
-      base.WriteStartObject();
-
-      _writer.Write("{");
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json array.
-    /// </summary>
-    public override void WriteStartArray()
-    {
-      base.WriteStartArray();
-
-      _writer.Write("[");
-    }
-
-    /// <summary>
-    /// Writes the start of a constructor with the given name.
-    /// </summary>
-    /// <param name="name">The name of the constructor.</param>
-    public override void WriteStartConstructor(string name)
-    {
-      base.WriteStartConstructor(name);
-
-      _writer.Write("new ");
-      _writer.Write(name);
-      _writer.Write("(");
-    }
-
-    /// <summary>
-    /// Writes the specified end token.
-    /// </summary>
-    /// <param name="token">The end token to write.</param>
-    protected override void WriteEnd(JsonToken token)
-    {
-      switch (token)
-      {
-        case JsonToken.EndObject:
-          _writer.Write("}");
-          break;
-        case JsonToken.EndArray:
-          _writer.Write("]");
-          break;
-        case JsonToken.EndConstructor:
-          _writer.Write(")");
-          break;
-        default:
-          throw new JsonWriterException("Invalid JsonToken: " + token);
-      }
-    }
-
-    /// <summary>
-    /// Writes the property name of a name/value pair on a Json object.
-    /// </summary>
-    /// <param name="name">The name of the property.</param>
-    public override void WritePropertyName(string name)
-    {
-      base.WritePropertyName(name);
-
-      JavaScriptUtils.WriteEscapedJavaScriptString(_writer, name, _quoteChar, _quoteName);
-
-      _writer.Write(':');
-    }
-
-    /// <summary>
-    /// Writes indent characters.
-    /// </summary>
-    protected override void WriteIndent()
-    {
-      _writer.Write(Environment.NewLine);
-
-      // levels of indentation multiplied by the indent count
-      int currentIndentCount = Top*_indentation;
-
-      for (int i = 0; i < currentIndentCount; i++)
-      {
-        _writer.Write(_indentChar);
-      }
-    }
-
-    /// <summary>
-    /// Writes the JSON value delimiter.
-    /// </summary>
-    protected override void WriteValueDelimiter()
-    {
-      _writer.Write(',');
-    }
-
-    /// <summary>
-    /// Writes an indent space.
-    /// </summary>
-    protected override void WriteIndentSpace()
-    {
-      _writer.Write(' ');
-    }
-
-    private void WriteValueInternal(string value, JsonToken token)
-    {
-      _writer.Write(value);
-    }
-
-    #region WriteValue methods
-    /// <summary>
-    /// Writes a null value.
-    /// </summary>
-    public override void WriteNull()
-    {
-      base.WriteNull();
-      WriteValueInternal(JsonConvert.Null, JsonToken.Null);
-    }
-
-    /// <summary>
-    /// Writes an undefined value.
-    /// </summary>
-    public override void WriteUndefined()
-    {
-      base.WriteUndefined();
-      WriteValueInternal(JsonConvert.Undefined, JsonToken.Undefined);
-    }
-
-    /// <summary>
-    /// Writes raw JSON.
-    /// </summary>
-    /// <param name="json">The raw JSON to write.</param>
-    public override void WriteRaw(string json)
-    {
-      base.WriteRaw(json);
-
-      _writer.Write(json);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="String"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="String"/> value to write.</param>
-    public override void WriteValue(string value)
-    {
-      base.WriteValue(value);
-      if (value == null)
-        WriteValueInternal(JsonConvert.Null, JsonToken.Null);
-      else
-        JavaScriptUtils.WriteEscapedJavaScriptString(_writer, value, _quoteChar, true);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int32"/> value to write.</param>
-    public override void WriteValue(int value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(uint value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int64"/> value to write.</param>
-    public override void WriteValue(long value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(ulong value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Single"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Single"/> value to write.</param>
-    public override void WriteValue(float value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Double"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Double"/> value to write.</param>
-    public override void WriteValue(double value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Boolean"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
-    public override void WriteValue(bool value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Boolean);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int16"/> value to write.</param>
-    public override void WriteValue(short value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(ushort value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Char"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Char"/> value to write.</param>
-    public override void WriteValue(char value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Byte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Byte"/> value to write.</param>
-    public override void WriteValue(byte value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="SByte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="SByte"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(sbyte value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Decimal"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
-    public override void WriteValue(decimal value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="DateTime"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
-    public override void WriteValue(DateTime value)
-    {
-      
-
-      base.WriteValue(value);
-      JsonConvert.WriteDateTimeString(_writer, value, DateFormatHandling);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="T:Byte[]"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
-    public override void WriteValue(byte[] value)
-    {
-      base.WriteValue(value);
-
-      if (value != null)
-      {
-        _writer.Write(_quoteChar);
-        Base64Encoder.Encode(value, 0, value.Length);
-        Base64Encoder.Flush();
-        _writer.Write(_quoteChar);
-      }
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Writes a <see cref="DateTimeOffset"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
-    public override void WriteValue(DateTimeOffset value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value, DateFormatHandling), JsonToken.Date);
-    }
-#endif
-
-    /// <summary>
-    /// Writes a <see cref="Guid"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Guid"/> value to write.</param>
-    public override void WriteValue(Guid value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="TimeSpan"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
-    public override void WriteValue(TimeSpan value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Uri"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Uri"/> value to write.</param>
-    public override void WriteValue(Uri value)
-    {
-      base.WriteValue(value);
-      WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
-    }
-    #endregion
-
-    /// <summary>
-    /// Writes out a comment <code>/*...*/</code> containing the specified text. 
-    /// </summary>
-    /// <param name="text">Text to place inside the comment.</param>
-    public override void WriteComment(string text)
-    {
-      base.WriteComment(text);
-
-      _writer.Write("/*");
-      _writer.Write(text);
-      _writer.Write("*/");
-    }
-
-    /// <summary>
-    /// Writes out the given white space.
-    /// </summary>
-    /// <param name="ws">The string of white space characters.</param>
-    public override void WriteWhitespace(string ws)
-    {
-      base.WriteWhitespace(ws);
-
-      _writer.Write(ws);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Text;
+using System.IO;
+using System.Xml;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
+  /// </summary>
+  public class JsonTextWriter : JsonWriter
+  {
+    private readonly TextWriter _writer;
+    private Base64Encoder _base64Encoder;
+    private char _indentChar;
+    private int _indentation;
+    private char _quoteChar;
+    private bool _quoteName;
+
+    private Base64Encoder Base64Encoder
+    {
+      get
+      {
+        if (_base64Encoder == null)
+          _base64Encoder = new Base64Encoder(_writer);
+
+        return _base64Encoder;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets how many IndentChars to write for each level in the hierarchy when <see cref="Formatting"/> is set to <c>Formatting.Indented</c>.
+    /// </summary>
+    public int Indentation
+    {
+      get { return _indentation; }
+      set
+      {
+        if (value < 0)
+          throw new ArgumentException("Indentation value must be greater than 0.");
+
+        _indentation = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets which character to use to quote attribute values.
+    /// </summary>
+    public char QuoteChar
+    {
+      get { return _quoteChar; }
+      set
+      {
+        if (value != '"' && value != '\'')
+          throw new ArgumentException(@"Invalid JavaScript string quote character. Valid quote characters are ' and "".");
+
+        _quoteChar = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets which character to use for indenting when <see cref="Formatting"/> is set to <c>Formatting.Indented</c>.
+    /// </summary>
+    public char IndentChar
+    {
+      get { return _indentChar; }
+      set { _indentChar = value; }
+    }
+
+    /// <summary>
+    /// Gets or sets a value indicating whether object names will be surrounded with quotes.
+    /// </summary>
+    public bool QuoteName
+    {
+      get { return _quoteName; }
+      set { _quoteName = value; }
+    }
+
+    /// <summary>
+    /// Creates an instance of the <c>JsonWriter</c> class using the specified <see cref="TextWriter"/>. 
+    /// </summary>
+    /// <param name="textWriter">The <c>TextWriter</c> to write to.</param>
+    public JsonTextWriter(TextWriter textWriter)
+    {
+      if (textWriter == null)
+        throw new ArgumentNullException("textWriter");
+
+      _writer = textWriter;
+      _quoteChar = '"';
+      _quoteName = true;
+      _indentChar = ' ';
+      _indentation = 2;
+    }
+
+    /// <summary>
+    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+    /// </summary>
+    public override void Flush()
+    {
+      _writer.Flush();
+    }
+
+    /// <summary>
+    /// Closes this stream and the underlying stream.
+    /// </summary>
+    public override void Close()
+    {
+      base.Close();
+
+      if (CloseOutput && _writer != null)
+#if !NETFX_CORE
+        _writer.Close();
+#else
+        _writer.Dispose();
+#endif
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json object.
+    /// </summary>
+    public override void WriteStartObject()
+    {
+      base.WriteStartObject();
+
+      _writer.Write("{");
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json array.
+    /// </summary>
+    public override void WriteStartArray()
+    {
+      base.WriteStartArray();
+
+      _writer.Write("[");
+    }
+
+    /// <summary>
+    /// Writes the start of a constructor with the given name.
+    /// </summary>
+    /// <param name="name">The name of the constructor.</param>
+    public override void WriteStartConstructor(string name)
+    {
+      base.WriteStartConstructor(name);
+
+      _writer.Write("new ");
+      _writer.Write(name);
+      _writer.Write("(");
+    }
+
+    /// <summary>
+    /// Writes the specified end token.
+    /// </summary>
+    /// <param name="token">The end token to write.</param>
+    protected override void WriteEnd(JsonToken token)
+    {
+      switch (token)
+      {
+        case JsonToken.EndObject:
+          _writer.Write("}");
+          break;
+        case JsonToken.EndArray:
+          _writer.Write("]");
+          break;
+        case JsonToken.EndConstructor:
+          _writer.Write(")");
+          break;
+        default:
+          throw new JsonWriterException("Invalid JsonToken: " + token);
+      }
+    }
+
+    /// <summary>
+    /// Writes the property name of a name/value pair on a Json object.
+    /// </summary>
+    /// <param name="name">The name of the property.</param>
+    public override void WritePropertyName(string name)
+    {
+      base.WritePropertyName(name);
+
+      JavaScriptUtils.WriteEscapedJavaScriptString(_writer, name, _quoteChar, _quoteName);
+
+      _writer.Write(':');
+    }
+
+    /// <summary>
+    /// Writes indent characters.
+    /// </summary>
+    protected override void WriteIndent()
+    {
+      _writer.Write(Environment.NewLine);
+
+      // levels of indentation multiplied by the indent count
+      int currentIndentCount = Top*_indentation;
+
+      for (int i = 0; i < currentIndentCount; i++)
+      {
+        _writer.Write(_indentChar);
+      }
+    }
+
+    /// <summary>
+    /// Writes the JSON value delimiter.
+    /// </summary>
+    protected override void WriteValueDelimiter()
+    {
+      _writer.Write(',');
+    }
+
+    /// <summary>
+    /// Writes an indent space.
+    /// </summary>
+    protected override void WriteIndentSpace()
+    {
+      _writer.Write(' ');
+    }
+
+    private void WriteValueInternal(string value, JsonToken token)
+    {
+      _writer.Write(value);
+    }
+
+    #region WriteValue methods
+    /// <summary>
+    /// Writes a null value.
+    /// </summary>
+    public override void WriteNull()
+    {
+      base.WriteNull();
+      WriteValueInternal(JsonConvert.Null, JsonToken.Null);
+    }
+
+    /// <summary>
+    /// Writes an undefined value.
+    /// </summary>
+    public override void WriteUndefined()
+    {
+      base.WriteUndefined();
+      WriteValueInternal(JsonConvert.Undefined, JsonToken.Undefined);
+    }
+
+    /// <summary>
+    /// Writes raw JSON.
+    /// </summary>
+    /// <param name="json">The raw JSON to write.</param>
+    public override void WriteRaw(string json)
+    {
+      base.WriteRaw(json);
+
+      _writer.Write(json);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="String"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="String"/> value to write.</param>
+    public override void WriteValue(string value)
+    {
+      base.WriteValue(value);
+      if (value == null)
+        WriteValueInternal(JsonConvert.Null, JsonToken.Null);
+      else
+        JavaScriptUtils.WriteEscapedJavaScriptString(_writer, value, _quoteChar, true);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int32"/> value to write.</param>
+    public override void WriteValue(int value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(uint value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int64"/> value to write.</param>
+    public override void WriteValue(long value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(ulong value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Single"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Single"/> value to write.</param>
+    public override void WriteValue(float value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Double"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Double"/> value to write.</param>
+    public override void WriteValue(double value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Boolean"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
+    public override void WriteValue(bool value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Boolean);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int16"/> value to write.</param>
+    public override void WriteValue(short value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(ushort value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Char"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Char"/> value to write.</param>
+    public override void WriteValue(char value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Byte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Byte"/> value to write.</param>
+    public override void WriteValue(byte value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="SByte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="SByte"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(sbyte value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Decimal"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
+    public override void WriteValue(decimal value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="DateTime"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
+    public override void WriteValue(DateTime value)
+    {
+      
+
+      base.WriteValue(value);
+      JsonConvert.WriteDateTimeString(_writer, value, DateFormatHandling);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="T:Byte[]"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
+    public override void WriteValue(byte[] value)
+    {
+      base.WriteValue(value);
+
+      if (value != null)
+      {
+        _writer.Write(_quoteChar);
+        Base64Encoder.Encode(value, 0, value.Length);
+        Base64Encoder.Flush();
+        _writer.Write(_quoteChar);
+      }
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Writes a <see cref="DateTimeOffset"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
+    public override void WriteValue(DateTimeOffset value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value, DateFormatHandling), JsonToken.Date);
+    }
+#endif
+
+    /// <summary>
+    /// Writes a <see cref="Guid"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Guid"/> value to write.</param>
+    public override void WriteValue(Guid value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="TimeSpan"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
+    public override void WriteValue(TimeSpan value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Uri"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Uri"/> value to write.</param>
+    public override void WriteValue(Uri value)
+    {
+      base.WriteValue(value);
+      WriteValueInternal(JsonConvert.ToString(value), JsonToken.String);
+    }
+    #endregion
+
+    /// <summary>
+    /// Writes out a comment <code>/*...*/</code> containing the specified text. 
+    /// </summary>
+    /// <param name="text">Text to place inside the comment.</param>
+    public override void WriteComment(string text)
+    {
+      base.WriteComment(text);
+
+      _writer.Write("/*");
+      _writer.Write(text);
+      _writer.Write("*/");
+    }
+
+    /// <summary>
+    /// Writes out the given white space.
+    /// </summary>
+    /// <param name="ws">The string of white space characters.</param>
+    public override void WriteWhitespace(string ws)
+    {
+      base.WriteWhitespace(ws);
+
+      _writer.Write(ws);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonToken.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonToken.cs
@@ -1,110 +1,110 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies the type of Json token.
-  /// </summary>
-  public enum JsonToken
-  {
-    /// <summary>
-    /// This is returned by the <see cref="JsonReader"/> if a <see cref="JsonReader.Read"/> method has not been called. 
-    /// </summary>
-    None,
-    /// <summary>
-    /// An object start token.
-    /// </summary>
-    StartObject,
-    /// <summary>
-    /// An array start token.
-    /// </summary>
-    StartArray,
-    /// <summary>
-    /// A constructor start token.
-    /// </summary>
-    StartConstructor,
-    /// <summary>
-    /// An object property name.
-    /// </summary>
-    PropertyName,
-    /// <summary>
-    /// A comment.
-    /// </summary>
-    Comment,
-    /// <summary>
-    /// Raw JSON.
-    /// </summary>
-    Raw,
-    /// <summary>
-    /// An integer.
-    /// </summary>
-    Integer,
-    /// <summary>
-    /// A float.
-    /// </summary>
-    Float,
-    /// <summary>
-    /// A string.
-    /// </summary>
-    String,
-    /// <summary>
-    /// A boolean.
-    /// </summary>
-    Boolean,
-    /// <summary>
-    /// A null token.
-    /// </summary>
-    Null,
-    /// <summary>
-    /// An undefined token.
-    /// </summary>
-    Undefined,
-    /// <summary>
-    /// An object end token.
-    /// </summary>
-    EndObject,
-    /// <summary>
-    /// An array end token.
-    /// </summary>
-    EndArray,
-    /// <summary>
-    /// A constructor end token.
-    /// </summary>
-    EndConstructor,
-    /// <summary>
-    /// A Date.
-    /// </summary>
-    Date,
-    /// <summary>
-    /// Byte data.
-    /// </summary>
-    Bytes
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies the type of Json token.
+  /// </summary>
+  public enum JsonToken
+  {
+    /// <summary>
+    /// This is returned by the <see cref="JsonReader"/> if a <see cref="JsonReader.Read"/> method has not been called. 
+    /// </summary>
+    None,
+    /// <summary>
+    /// An object start token.
+    /// </summary>
+    StartObject,
+    /// <summary>
+    /// An array start token.
+    /// </summary>
+    StartArray,
+    /// <summary>
+    /// A constructor start token.
+    /// </summary>
+    StartConstructor,
+    /// <summary>
+    /// An object property name.
+    /// </summary>
+    PropertyName,
+    /// <summary>
+    /// A comment.
+    /// </summary>
+    Comment,
+    /// <summary>
+    /// Raw JSON.
+    /// </summary>
+    Raw,
+    /// <summary>
+    /// An integer.
+    /// </summary>
+    Integer,
+    /// <summary>
+    /// A float.
+    /// </summary>
+    Float,
+    /// <summary>
+    /// A string.
+    /// </summary>
+    String,
+    /// <summary>
+    /// A boolean.
+    /// </summary>
+    Boolean,
+    /// <summary>
+    /// A null token.
+    /// </summary>
+    Null,
+    /// <summary>
+    /// An undefined token.
+    /// </summary>
+    Undefined,
+    /// <summary>
+    /// An object end token.
+    /// </summary>
+    EndObject,
+    /// <summary>
+    /// An array end token.
+    /// </summary>
+    EndArray,
+    /// <summary>
+    /// A constructor end token.
+    /// </summary>
+    EndConstructor,
+    /// <summary>
+    /// A Date.
+    /// </summary>
+    Date,
+    /// <summary>
+    /// Byte data.
+    /// </summary>
+    Bytes
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonValidatingReader.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonValidatingReader.cs
@@ -1,805 +1,805 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Schema;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-using System.Text.RegularExpressions;
-using System.IO;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Represents a reader that provides <see cref="JsonSchema"/> validation.
-  /// </summary>
-  public class JsonValidatingReader : JsonReader, IJsonLineInfo
-  {
-    private class SchemaScope
-    {
-      private readonly JTokenType _tokenType;
-      private readonly IList<JsonSchemaModel> _schemas;
-      private readonly Dictionary<string, bool> _requiredProperties;
-
-      public string CurrentPropertyName { get; set; }
-      public int ArrayItemCount { get; set; }
-
-      public IList<JsonSchemaModel> Schemas
-      {
-        get { return _schemas; }
-      }
-
-      public Dictionary<string, bool> RequiredProperties
-      {
-        get { return _requiredProperties; }
-      }
-
-      public JTokenType TokenType
-      {
-        get { return _tokenType; }
-      }
-
-      public SchemaScope(JTokenType tokenType, IList<JsonSchemaModel> schemas)
-      {
-        _tokenType = tokenType;
-        _schemas = schemas;
-
-        _requiredProperties = schemas.SelectMany<JsonSchemaModel, string>(GetRequiredProperties).Distinct().ToDictionary(p => p, p => false);
-      }
-
-      private IEnumerable<string> GetRequiredProperties(JsonSchemaModel schema)
-      {
-        if (schema == null || schema.Properties == null)
-          return Enumerable.Empty<string>();
-
-        return schema.Properties.Where(p => p.Value.Required).Select(p => p.Key);
-      }
-    }
-
-    private readonly JsonReader _reader;
-    private readonly Stack<SchemaScope> _stack;
-    private JsonSchema _schema;
-    private JsonSchemaModel _model;
-    private SchemaScope _currentScope;
-
-    /// <summary>
-    /// Sets an event handler for receiving schema validation errors.
-    /// </summary>
-    public event ValidationEventHandler ValidationEventHandler;
-
-    /// <summary>
-    /// Gets the text value of the current Json token.
-    /// </summary>
-    /// <value></value>
-    public override object Value
-    {
-      get { return _reader.Value; }
-    }
-
-    /// <summary>
-    /// Gets the depth of the current token in the JSON document.
-    /// </summary>
-    /// <value>The depth of the current token in the JSON document.</value>
-    public override int Depth
-    {
-      get { return _reader.Depth; }
-    }
-
-    /// <summary>
-    /// Gets the path of the current JSON token. 
-    /// </summary>
-    public override string Path
-    {
-      get { return _reader.Path; }
-    }
-
-    /// <summary>
-    /// Gets the quotation mark character used to enclose the value of a string.
-    /// </summary>
-    /// <value></value>
-    public override char QuoteChar
-    {
-      get { return _reader.QuoteChar; }
-      protected internal set { }
-    }
-
-    /// <summary>
-    /// Gets the type of the current Json token.
-    /// </summary>
-    /// <value></value>
-    public override JsonToken TokenType
-    {
-      get { return _reader.TokenType; }
-    }
-
-    /// <summary>
-    /// Gets the Common Language Runtime (CLR) type for the current Json token.
-    /// </summary>
-    /// <value></value>
-    public override Type ValueType
-    {
-      get { return _reader.ValueType; }
-    }
-
-    private void Push(SchemaScope scope)
-    {
-      _stack.Push(scope);
-      _currentScope = scope;
-    }
-
-    private SchemaScope Pop()
-    {
-      SchemaScope poppedScope = _stack.Pop();
-      _currentScope = (_stack.Count != 0)
-        ? _stack.Peek()
-        : null;
-
-      return poppedScope;
-    }
-
-    private IEnumerable<JsonSchemaModel> CurrentSchemas
-    {
-      get { return _currentScope.Schemas; }
-    }
-
-    private IEnumerable<JsonSchemaModel> CurrentMemberSchemas
-    {
-      get
-      {
-        if (_currentScope == null)
-          return new List<JsonSchemaModel>(new [] { _model });
-
-        if (_currentScope.Schemas == null || _currentScope.Schemas.Count == 0)
-          return Enumerable.Empty<JsonSchemaModel>();
-
-        switch (_currentScope.TokenType)
-        {
-          case JTokenType.None:
-            return _currentScope.Schemas;
-          case JTokenType.Object:
-            {
-              if (_currentScope.CurrentPropertyName == null)
-                throw new Exception("CurrentPropertyName has not been set on scope.");
-
-              IList<JsonSchemaModel> schemas = new List<JsonSchemaModel>();
-
-              foreach (JsonSchemaModel schema in CurrentSchemas)
-              {
-                JsonSchemaModel propertySchema;
-                if (schema.Properties != null && schema.Properties.TryGetValue(_currentScope.CurrentPropertyName, out propertySchema))
-                {
-                  schemas.Add(propertySchema);
-                }
-                if (schema.PatternProperties != null)
-                {
-                  foreach (KeyValuePair<string, JsonSchemaModel> patternProperty in schema.PatternProperties)
-                  {
-                    if (Regex.IsMatch(_currentScope.CurrentPropertyName, patternProperty.Key))
-                    {
-                      schemas.Add(patternProperty.Value);
-                    }
-                  }
-                }
-
-                if (schemas.Count == 0 && schema.AllowAdditionalProperties && schema.AdditionalProperties != null)
-                  schemas.Add(schema.AdditionalProperties);
-              }
-
-              return schemas;
-            }
-          case JTokenType.Array:
-            {
-              IList<JsonSchemaModel> schemas = new List<JsonSchemaModel>();
-              
-              foreach (JsonSchemaModel schema in CurrentSchemas)
-              {
-                if (!CollectionUtils.IsNullOrEmpty(schema.Items))
-                {
-                  if (schema.Items.Count == 1)
-                  {
-                    schemas.Add(schema.Items[0]);
-                  }
-                  else
-                  {
-                    if (schema.Items.Count > (_currentScope.ArrayItemCount - 1))
-                      schemas.Add(schema.Items[_currentScope.ArrayItemCount - 1]);
-                  }
-                }
-
-                if (schema.AllowAdditionalProperties && schema.AdditionalProperties != null)
-                  schemas.Add(schema.AdditionalProperties);
-              }
-
-              return schemas;
-            }
-          case JTokenType.Constructor:
-            return Enumerable.Empty<JsonSchemaModel>();
-          default:
-            throw new ArgumentOutOfRangeException("TokenType", "Unexpected token type: {0}".FormatWith(CultureInfo.InvariantCulture, _currentScope.TokenType));
-        }
-      }
-    }
-
-    private void RaiseError(string message, JsonSchemaModel schema)
-    {
-      IJsonLineInfo lineInfo = this;
-
-      string exceptionMessage = (lineInfo.HasLineInfo())
-                                  ? message + " Line {0}, position {1}.".FormatWith(CultureInfo.InvariantCulture, lineInfo.LineNumber, lineInfo.LinePosition)
-                                  : message;
-
-      OnValidationEvent(new JsonSchemaException(exceptionMessage, null, Path, lineInfo.LineNumber, lineInfo.LinePosition));
-    }
-
-    private void OnValidationEvent(JsonSchemaException exception)
-    {
-      ValidationEventHandler handler = ValidationEventHandler;
-      if (handler != null)
-        handler(this, new ValidationEventArgs(exception));
-      else
-        throw exception;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonValidatingReader"/> class that
-    /// validates the content returned from the given <see cref="JsonReader"/>.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read from while validating.</param>
-    public JsonValidatingReader(JsonReader reader)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-      _reader = reader;
-      _stack = new Stack<SchemaScope>();
-    }
-
-    /// <summary>
-    /// Gets or sets the schema.
-    /// </summary>
-    /// <value>The schema.</value>
-    public JsonSchema Schema
-    {
-      get { return _schema; }
-      set
-      {
-        if (TokenType != JsonToken.None)
-          throw new Exception("Cannot change schema while validating JSON.");
-
-        _schema = value;
-        _model = null;
-      }
-    }
-
-    /// <summary>
-    /// Gets the <see cref="JsonReader"/> used to construct this <see cref="JsonValidatingReader"/>.
-    /// </summary>
-    /// <value>The <see cref="JsonReader"/> specified in the constructor.</value>
-    public JsonReader Reader
-    {
-      get { return _reader; }
-    }
-
-    private void ValidateInEnumAndNotDisallowed(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      JToken value = new JValue(_reader.Value);
-
-      if (schema.Enum != null)
-      {
-        StringWriter sw = new StringWriter(CultureInfo.InvariantCulture);
-        value.WriteTo(new JsonTextWriter(sw));
- 
-        if (!schema.Enum.ContainsValue(value, new JTokenEqualityComparer()))
-          RaiseError("Value {0} is not defined in enum.".FormatWith(CultureInfo.InvariantCulture, sw.ToString()),
-                     schema);
-      }
-
-      JsonSchemaType? currentNodeType = GetCurrentNodeSchemaType();
-      if (currentNodeType != null)
-      {
-        if (JsonSchemaGenerator.HasFlag(schema.Disallow, currentNodeType.Value))
-          RaiseError("Type {0} is disallowed.".FormatWith(CultureInfo.InvariantCulture, currentNodeType), schema);
-      }
-    }
-
-    private JsonSchemaType? GetCurrentNodeSchemaType()
-    {
-      switch (_reader.TokenType)
-      {
-        case JsonToken.StartObject:
-          return JsonSchemaType.Object;
-        case JsonToken.StartArray:
-          return JsonSchemaType.Array;
-        case JsonToken.Integer:
-          return JsonSchemaType.Integer;
-        case JsonToken.Float:
-          return JsonSchemaType.Float;
-        case JsonToken.String:
-          return JsonSchemaType.String;
-        case JsonToken.Boolean:
-          return JsonSchemaType.Boolean;
-        case JsonToken.Null:
-          return JsonSchemaType.Null;
-        default:
-          return null;
-      }
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Int32}"/>.</returns>
-    public override int? ReadAsInt32()
-    {
-      int? i = _reader.ReadAsInt32();
-
-      ValidateCurrentToken();
-      return i;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null.
-    /// </returns>
-    public override byte[] ReadAsBytes()
-    {
-      byte[] data = _reader.ReadAsBytes();
-
-      ValidateCurrentToken();
-      return data;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Decimal}"/>.</returns>
-    public override decimal? ReadAsDecimal()
-    {
-      decimal? d = _reader.ReadAsDecimal();
-
-      ValidateCurrentToken();
-      return d;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="String"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override string ReadAsString()
-    {
-      string s = _reader.ReadAsString();
-
-      ValidateCurrentToken();
-      return s;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override DateTime? ReadAsDateTime()
-    {
-      DateTime? dateTime = _reader.ReadAsDateTime();
-
-      ValidateCurrentToken();
-      return dateTime;
-    }
-
-#if !NET20
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{DateTimeOffset}"/>.</returns>
-    public override DateTimeOffset? ReadAsDateTimeOffset()
-    {
-      DateTimeOffset? dateTimeOffset = _reader.ReadAsDateTimeOffset();
-
-      ValidateCurrentToken();
-      return dateTimeOffset;
-    }
-#endif
-
-    /// <summary>
-    /// Reads the next JSON token from the stream.
-    /// </summary>
-    /// <returns>
-    /// true if the next token was read successfully; false if there are no more tokens to read.
-    /// </returns>
-    public override bool Read()
-    {
-      if (!_reader.Read())
-        return false;
-
-      if (_reader.TokenType == JsonToken.Comment)
-        return true;
-
-      ValidateCurrentToken();
-      return true;
-    }
-
-    private void ValidateCurrentToken()
-    {
-      // first time validate has been called. build model
-      if (_model == null)
-      {
-        JsonSchemaModelBuilder builder = new JsonSchemaModelBuilder();
-        _model = builder.Build(_schema);
-      }
-
-      switch (_reader.TokenType)
-      {
-        case JsonToken.StartObject:
-          ProcessValue();
-          IList<JsonSchemaModel> objectSchemas = CurrentMemberSchemas.Where(ValidateObject).ToList();
-          Push(new SchemaScope(JTokenType.Object, objectSchemas));
-          break;
-        case JsonToken.StartArray:
-          ProcessValue();
-          IList<JsonSchemaModel> arraySchemas = CurrentMemberSchemas.Where(ValidateArray).ToList();
-          Push(new SchemaScope(JTokenType.Array, arraySchemas));
-          break;
-        case JsonToken.StartConstructor:
-          Push(new SchemaScope(JTokenType.Constructor, null));
-          break;
-        case JsonToken.PropertyName:
-          foreach (JsonSchemaModel schema in CurrentSchemas)
-          {
-            ValidatePropertyName(schema);
-          }
-          break;
-        case JsonToken.Raw:
-          break;
-        case JsonToken.Integer:
-          ProcessValue();
-          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
-          {
-            ValidateInteger(schema);
-          }
-          break;
-        case JsonToken.Float:
-          ProcessValue();
-          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
-          {
-            ValidateFloat(schema);
-          }
-          break;
-        case JsonToken.String:
-          ProcessValue();
-          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
-          {
-            ValidateString(schema);
-          }
-          break;
-        case JsonToken.Boolean:
-          ProcessValue();
-          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
-          {
-            ValidateBoolean(schema);
-          }
-          break;
-        case JsonToken.Null:
-          ProcessValue();
-          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
-          {
-            ValidateNull(schema);
-          }
-          break;
-        case JsonToken.Undefined:
-          break;
-        case JsonToken.EndObject:
-          foreach (JsonSchemaModel schema in CurrentSchemas)
-          {
-            ValidateEndObject(schema);
-          }
-          Pop();
-          break;
-        case JsonToken.EndArray:
-          foreach (JsonSchemaModel schema in CurrentSchemas)
-          {
-            ValidateEndArray(schema);
-          }
-          Pop();
-          break;
-        case JsonToken.EndConstructor:
-          Pop();
-          break;
-        case JsonToken.Date:
-        case JsonToken.Bytes:
-          // these have no equivalent in JSON schema
-          break;
-        case JsonToken.None:
-          // no content, do nothing
-          break;
-        default:
-          throw new ArgumentOutOfRangeException();
-      }
-    }
-
-    private void ValidateEndObject(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      Dictionary<string, bool> requiredProperties = _currentScope.RequiredProperties;
-
-      if (requiredProperties != null)
-      {
-        List<string> unmatchedRequiredProperties =
-          requiredProperties.Where(kv => !kv.Value).Select(kv => kv.Key).ToList();
-
-        if (unmatchedRequiredProperties.Count > 0)
-          RaiseError("Required properties are missing from object: {0}.".FormatWith(CultureInfo.InvariantCulture, string.Join(", ", unmatchedRequiredProperties.ToArray())), schema);
-      }
-    }
-
-    private void ValidateEndArray(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      int arrayItemCount = _currentScope.ArrayItemCount;
-
-      if (schema.MaximumItems != null && arrayItemCount > schema.MaximumItems)
-        RaiseError("Array item count {0} exceeds maximum count of {1}.".FormatWith(CultureInfo.InvariantCulture, arrayItemCount, schema.MaximumItems), schema);
-
-      if (schema.MinimumItems != null && arrayItemCount < schema.MinimumItems)
-        RaiseError("Array item count {0} is less than minimum count of {1}.".FormatWith(CultureInfo.InvariantCulture, arrayItemCount, schema.MinimumItems), schema);
-    }
-
-    private void ValidateNull(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      if (!TestType(schema, JsonSchemaType.Null))
-        return;
-
-      ValidateInEnumAndNotDisallowed(schema);
-    }
-
-    private void ValidateBoolean(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      if (!TestType(schema, JsonSchemaType.Boolean))
-        return;
-
-      ValidateInEnumAndNotDisallowed(schema);
-    }
-
-    private void ValidateString(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      if (!TestType(schema, JsonSchemaType.String))
-        return;
-
-      ValidateInEnumAndNotDisallowed(schema);
-
-      string value = _reader.Value.ToString();
-
-      if (schema.MaximumLength != null && value.Length > schema.MaximumLength)
-        RaiseError("String '{0}' exceeds maximum length of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.MaximumLength), schema);
-
-      if (schema.MinimumLength != null && value.Length < schema.MinimumLength)
-        RaiseError("String '{0}' is less than minimum length of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.MinimumLength), schema);
-
-      if (schema.Patterns != null)
-      {
-        foreach (string pattern in schema.Patterns)
-        {
-          if (!Regex.IsMatch(value, pattern))
-            RaiseError("String '{0}' does not match regex pattern '{1}'.".FormatWith(CultureInfo.InvariantCulture, value, pattern), schema);
-        }
-      }
-    }
-
-    private void ValidateInteger(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      if (!TestType(schema, JsonSchemaType.Integer))
-        return;
-
-      ValidateInEnumAndNotDisallowed(schema);
-      
-      long value = Convert.ToInt64(_reader.Value, CultureInfo.InvariantCulture);
-
-      if (schema.Maximum != null)
-      {
-        if (value > schema.Maximum)
-          RaiseError("Integer {0} exceeds maximum value of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.Maximum), schema);
-        if (schema.ExclusiveMaximum && value == schema.Maximum)
-          RaiseError("Integer {0} equals maximum value of {1} and exclusive maximum is true.".FormatWith(CultureInfo.InvariantCulture, value, schema.Maximum), schema);
-      }
-
-      if (schema.Minimum != null)
-      {
-        if (value < schema.Minimum)
-          RaiseError("Integer {0} is less than minimum value of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.Minimum), schema);
-        if (schema.ExclusiveMinimum && value == schema.Minimum)
-          RaiseError("Integer {0} equals minimum value of {1} and exclusive minimum is true.".FormatWith(CultureInfo.InvariantCulture, value, schema.Minimum), schema);
-      }
-
-      if (schema.DivisibleBy != null && !IsZero(value % schema.DivisibleBy.Value))
-        RaiseError("Integer {0} is not evenly divisible by {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.DivisibleBy), schema);
-    }
-
-    private void ProcessValue()
-    {
-      if (_currentScope != null && _currentScope.TokenType == JTokenType.Array)
-      {
-        _currentScope.ArrayItemCount++;
-
-        foreach (JsonSchemaModel currentSchema in CurrentSchemas)
-        {
-          if (currentSchema != null && currentSchema.Items != null && currentSchema.Items.Count > 1 && _currentScope.ArrayItemCount >= currentSchema.Items.Count)
-            RaiseError("Index {0} has not been defined and the schema does not allow additional items.".FormatWith(CultureInfo.InvariantCulture, _currentScope.ArrayItemCount), currentSchema);
-        }
-      }
-    }
-
-    private void ValidateFloat(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      if (!TestType(schema, JsonSchemaType.Float))
-        return;
-
-      ValidateInEnumAndNotDisallowed(schema);
-      
-      double value = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
-
-      if (schema.Maximum != null)
-      {
-        if (value > schema.Maximum)
-          RaiseError("Float {0} exceeds maximum value of {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Maximum), schema);
-        if (schema.ExclusiveMaximum && value == schema.Maximum)
-          RaiseError("Float {0} equals maximum value of {1} and exclusive maximum is true.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Maximum), schema);
-      }
-
-      if (schema.Minimum != null)
-      {
-        if (value < schema.Minimum)
-          RaiseError("Float {0} is less than minimum value of {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Minimum), schema);
-        if (schema.ExclusiveMinimum && value == schema.Minimum)
-          RaiseError("Float {0} equals minimum value of {1} and exclusive minimum is true.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Minimum), schema);
-      }
-
-      if (schema.DivisibleBy != null && !IsZero(value % schema.DivisibleBy.Value))
-        RaiseError("Float {0} is not evenly divisible by {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.DivisibleBy), schema);
-    }
-
-    private static bool IsZero(double value)
-    {
-      const double epsilon = 2.2204460492503131e-016;
-
-      return Math.Abs(value) < 10.0 * epsilon;
-    }
-
-    private void ValidatePropertyName(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return;
-
-      string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
-
-      if (_currentScope.RequiredProperties.ContainsKey(propertyName))
-        _currentScope.RequiredProperties[propertyName] = true;
-
-      if (!schema.AllowAdditionalProperties)
-      {
-        bool propertyDefinied = IsPropertyDefinied(schema, propertyName);
-
-        if (!propertyDefinied)
-          RaiseError("Property '{0}' has not been defined and the schema does not allow additional properties.".FormatWith(CultureInfo.InvariantCulture, propertyName), schema);
-      }
-
-      _currentScope.CurrentPropertyName = propertyName;
-    }
-
-    private bool IsPropertyDefinied(JsonSchemaModel schema, string propertyName)
-    {
-      if (schema.Properties != null && schema.Properties.ContainsKey(propertyName))
-        return true;
-
-      if (schema.PatternProperties != null)
-      {
-        foreach (string pattern in schema.PatternProperties.Keys)
-        {
-          if (Regex.IsMatch(propertyName, pattern))
-            return true;
-        }
-      }
-
-      return false;
-    }
-
-    private bool ValidateArray(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return true;
-
-      return (TestType(schema, JsonSchemaType.Array));
-    }
-
-    private bool ValidateObject(JsonSchemaModel schema)
-    {
-      if (schema == null)
-        return true;
-
-      return (TestType(schema, JsonSchemaType.Object));
-    }
-
-    private bool TestType(JsonSchemaModel currentSchema, JsonSchemaType currentType)
-    {
-      if (!JsonSchemaGenerator.HasFlag(currentSchema.Type, currentType))
-      {
-        RaiseError("Invalid type. Expected {0} but got {1}.".FormatWith(CultureInfo.InvariantCulture, currentSchema.Type, currentType), currentSchema);
-        return false;
-      }
-
-      return true;
-    }
-
-    bool IJsonLineInfo.HasLineInfo()
-    {
-      IJsonLineInfo lineInfo = _reader as IJsonLineInfo;
-      return lineInfo != null && lineInfo.HasLineInfo();
-    }
-
-    int IJsonLineInfo.LineNumber
-    {
-      get
-      {
-        IJsonLineInfo lineInfo = _reader as IJsonLineInfo;
-        return (lineInfo != null) ? lineInfo.LineNumber : 0;
-      }
-    }
-
-    int IJsonLineInfo.LinePosition
-    {
-      get
-      {
-        IJsonLineInfo lineInfo = _reader as IJsonLineInfo;
-        return (lineInfo != null) ? lineInfo.LinePosition : 0;
-      }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Schema;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+using System.Text.RegularExpressions;
+using System.IO;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Represents a reader that provides <see cref="JsonSchema"/> validation.
+  /// </summary>
+  public class JsonValidatingReader : JsonReader, IJsonLineInfo
+  {
+    private class SchemaScope
+    {
+      private readonly JTokenType _tokenType;
+      private readonly IList<JsonSchemaModel> _schemas;
+      private readonly Dictionary<string, bool> _requiredProperties;
+
+      public string CurrentPropertyName { get; set; }
+      public int ArrayItemCount { get; set; }
+
+      public IList<JsonSchemaModel> Schemas
+      {
+        get { return _schemas; }
+      }
+
+      public Dictionary<string, bool> RequiredProperties
+      {
+        get { return _requiredProperties; }
+      }
+
+      public JTokenType TokenType
+      {
+        get { return _tokenType; }
+      }
+
+      public SchemaScope(JTokenType tokenType, IList<JsonSchemaModel> schemas)
+      {
+        _tokenType = tokenType;
+        _schemas = schemas;
+
+        _requiredProperties = schemas.SelectMany<JsonSchemaModel, string>(GetRequiredProperties).Distinct().ToDictionary(p => p, p => false);
+      }
+
+      private IEnumerable<string> GetRequiredProperties(JsonSchemaModel schema)
+      {
+        if (schema == null || schema.Properties == null)
+          return Enumerable.Empty<string>();
+
+        return schema.Properties.Where(p => p.Value.Required).Select(p => p.Key);
+      }
+    }
+
+    private readonly JsonReader _reader;
+    private readonly Stack<SchemaScope> _stack;
+    private JsonSchema _schema;
+    private JsonSchemaModel _model;
+    private SchemaScope _currentScope;
+
+    /// <summary>
+    /// Sets an event handler for receiving schema validation errors.
+    /// </summary>
+    public event ValidationEventHandler ValidationEventHandler;
+
+    /// <summary>
+    /// Gets the text value of the current Json token.
+    /// </summary>
+    /// <value></value>
+    public override object Value
+    {
+      get { return _reader.Value; }
+    }
+
+    /// <summary>
+    /// Gets the depth of the current token in the JSON document.
+    /// </summary>
+    /// <value>The depth of the current token in the JSON document.</value>
+    public override int Depth
+    {
+      get { return _reader.Depth; }
+    }
+
+    /// <summary>
+    /// Gets the path of the current JSON token. 
+    /// </summary>
+    public override string Path
+    {
+      get { return _reader.Path; }
+    }
+
+    /// <summary>
+    /// Gets the quotation mark character used to enclose the value of a string.
+    /// </summary>
+    /// <value></value>
+    public override char QuoteChar
+    {
+      get { return _reader.QuoteChar; }
+      protected internal set { }
+    }
+
+    /// <summary>
+    /// Gets the type of the current Json token.
+    /// </summary>
+    /// <value></value>
+    public override JsonToken TokenType
+    {
+      get { return _reader.TokenType; }
+    }
+
+    /// <summary>
+    /// Gets the Common Language Runtime (CLR) type for the current Json token.
+    /// </summary>
+    /// <value></value>
+    public override Type ValueType
+    {
+      get { return _reader.ValueType; }
+    }
+
+    private void Push(SchemaScope scope)
+    {
+      _stack.Push(scope);
+      _currentScope = scope;
+    }
+
+    private SchemaScope Pop()
+    {
+      SchemaScope poppedScope = _stack.Pop();
+      _currentScope = (_stack.Count != 0)
+        ? _stack.Peek()
+        : null;
+
+      return poppedScope;
+    }
+
+    private IEnumerable<JsonSchemaModel> CurrentSchemas
+    {
+      get { return _currentScope.Schemas; }
+    }
+
+    private IEnumerable<JsonSchemaModel> CurrentMemberSchemas
+    {
+      get
+      {
+        if (_currentScope == null)
+          return new List<JsonSchemaModel>(new [] { _model });
+
+        if (_currentScope.Schemas == null || _currentScope.Schemas.Count == 0)
+          return Enumerable.Empty<JsonSchemaModel>();
+
+        switch (_currentScope.TokenType)
+        {
+          case JTokenType.None:
+            return _currentScope.Schemas;
+          case JTokenType.Object:
+            {
+              if (_currentScope.CurrentPropertyName == null)
+                throw new Exception("CurrentPropertyName has not been set on scope.");
+
+              IList<JsonSchemaModel> schemas = new List<JsonSchemaModel>();
+
+              foreach (JsonSchemaModel schema in CurrentSchemas)
+              {
+                JsonSchemaModel propertySchema;
+                if (schema.Properties != null && schema.Properties.TryGetValue(_currentScope.CurrentPropertyName, out propertySchema))
+                {
+                  schemas.Add(propertySchema);
+                }
+                if (schema.PatternProperties != null)
+                {
+                  foreach (KeyValuePair<string, JsonSchemaModel> patternProperty in schema.PatternProperties)
+                  {
+                    if (Regex.IsMatch(_currentScope.CurrentPropertyName, patternProperty.Key))
+                    {
+                      schemas.Add(patternProperty.Value);
+                    }
+                  }
+                }
+
+                if (schemas.Count == 0 && schema.AllowAdditionalProperties && schema.AdditionalProperties != null)
+                  schemas.Add(schema.AdditionalProperties);
+              }
+
+              return schemas;
+            }
+          case JTokenType.Array:
+            {
+              IList<JsonSchemaModel> schemas = new List<JsonSchemaModel>();
+              
+              foreach (JsonSchemaModel schema in CurrentSchemas)
+              {
+                if (!CollectionUtils.IsNullOrEmpty(schema.Items))
+                {
+                  if (schema.Items.Count == 1)
+                  {
+                    schemas.Add(schema.Items[0]);
+                  }
+                  else
+                  {
+                    if (schema.Items.Count > (_currentScope.ArrayItemCount - 1))
+                      schemas.Add(schema.Items[_currentScope.ArrayItemCount - 1]);
+                  }
+                }
+
+                if (schema.AllowAdditionalProperties && schema.AdditionalProperties != null)
+                  schemas.Add(schema.AdditionalProperties);
+              }
+
+              return schemas;
+            }
+          case JTokenType.Constructor:
+            return Enumerable.Empty<JsonSchemaModel>();
+          default:
+            throw new ArgumentOutOfRangeException("TokenType", "Unexpected token type: {0}".FormatWith(CultureInfo.InvariantCulture, _currentScope.TokenType));
+        }
+      }
+    }
+
+    private void RaiseError(string message, JsonSchemaModel schema)
+    {
+      IJsonLineInfo lineInfo = this;
+
+      string exceptionMessage = (lineInfo.HasLineInfo())
+                                  ? message + " Line {0}, position {1}.".FormatWith(CultureInfo.InvariantCulture, lineInfo.LineNumber, lineInfo.LinePosition)
+                                  : message;
+
+      OnValidationEvent(new JsonSchemaException(exceptionMessage, null, Path, lineInfo.LineNumber, lineInfo.LinePosition));
+    }
+
+    private void OnValidationEvent(JsonSchemaException exception)
+    {
+      ValidationEventHandler handler = ValidationEventHandler;
+      if (handler != null)
+        handler(this, new ValidationEventArgs(exception));
+      else
+        throw exception;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonValidatingReader"/> class that
+    /// validates the content returned from the given <see cref="JsonReader"/>.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read from while validating.</param>
+    public JsonValidatingReader(JsonReader reader)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+      _reader = reader;
+      _stack = new Stack<SchemaScope>();
+    }
+
+    /// <summary>
+    /// Gets or sets the schema.
+    /// </summary>
+    /// <value>The schema.</value>
+    public JsonSchema Schema
+    {
+      get { return _schema; }
+      set
+      {
+        if (TokenType != JsonToken.None)
+          throw new Exception("Cannot change schema while validating JSON.");
+
+        _schema = value;
+        _model = null;
+      }
+    }
+
+    /// <summary>
+    /// Gets the <see cref="JsonReader"/> used to construct this <see cref="JsonValidatingReader"/>.
+    /// </summary>
+    /// <value>The <see cref="JsonReader"/> specified in the constructor.</value>
+    public JsonReader Reader
+    {
+      get { return _reader; }
+    }
+
+    private void ValidateInEnumAndNotDisallowed(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      JToken value = new JValue(_reader.Value);
+
+      if (schema.Enum != null)
+      {
+        StringWriter sw = new StringWriter(CultureInfo.InvariantCulture);
+        value.WriteTo(new JsonTextWriter(sw));
+ 
+        if (!schema.Enum.ContainsValue(value, new JTokenEqualityComparer()))
+          RaiseError("Value {0} is not defined in enum.".FormatWith(CultureInfo.InvariantCulture, sw.ToString()),
+                     schema);
+      }
+
+      JsonSchemaType? currentNodeType = GetCurrentNodeSchemaType();
+      if (currentNodeType != null)
+      {
+        if (JsonSchemaGenerator.HasFlag(schema.Disallow, currentNodeType.Value))
+          RaiseError("Type {0} is disallowed.".FormatWith(CultureInfo.InvariantCulture, currentNodeType), schema);
+      }
+    }
+
+    private JsonSchemaType? GetCurrentNodeSchemaType()
+    {
+      switch (_reader.TokenType)
+      {
+        case JsonToken.StartObject:
+          return JsonSchemaType.Object;
+        case JsonToken.StartArray:
+          return JsonSchemaType.Array;
+        case JsonToken.Integer:
+          return JsonSchemaType.Integer;
+        case JsonToken.Float:
+          return JsonSchemaType.Float;
+        case JsonToken.String:
+          return JsonSchemaType.String;
+        case JsonToken.Boolean:
+          return JsonSchemaType.Boolean;
+        case JsonToken.Null:
+          return JsonSchemaType.Null;
+        default:
+          return null;
+      }
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Int32}"/>.</returns>
+    public override int? ReadAsInt32()
+    {
+      int? i = _reader.ReadAsInt32();
+
+      ValidateCurrentToken();
+      return i;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null.
+    /// </returns>
+    public override byte[] ReadAsBytes()
+    {
+      byte[] data = _reader.ReadAsBytes();
+
+      ValidateCurrentToken();
+      return data;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Decimal}"/>.</returns>
+    public override decimal? ReadAsDecimal()
+    {
+      decimal? d = _reader.ReadAsDecimal();
+
+      ValidateCurrentToken();
+      return d;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="String"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override string ReadAsString()
+    {
+      string s = _reader.ReadAsString();
+
+      ValidateCurrentToken();
+      return s;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override DateTime? ReadAsDateTime()
+    {
+      DateTime? dateTime = _reader.ReadAsDateTime();
+
+      ValidateCurrentToken();
+      return dateTime;
+    }
+
+#if !NET20
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{DateTimeOffset}"/>.</returns>
+    public override DateTimeOffset? ReadAsDateTimeOffset()
+    {
+      DateTimeOffset? dateTimeOffset = _reader.ReadAsDateTimeOffset();
+
+      ValidateCurrentToken();
+      return dateTimeOffset;
+    }
+#endif
+
+    /// <summary>
+    /// Reads the next JSON token from the stream.
+    /// </summary>
+    /// <returns>
+    /// true if the next token was read successfully; false if there are no more tokens to read.
+    /// </returns>
+    public override bool Read()
+    {
+      if (!_reader.Read())
+        return false;
+
+      if (_reader.TokenType == JsonToken.Comment)
+        return true;
+
+      ValidateCurrentToken();
+      return true;
+    }
+
+    private void ValidateCurrentToken()
+    {
+      // first time validate has been called. build model
+      if (_model == null)
+      {
+        JsonSchemaModelBuilder builder = new JsonSchemaModelBuilder();
+        _model = builder.Build(_schema);
+      }
+
+      switch (_reader.TokenType)
+      {
+        case JsonToken.StartObject:
+          ProcessValue();
+          IList<JsonSchemaModel> objectSchemas = CurrentMemberSchemas.Where(ValidateObject).ToList();
+          Push(new SchemaScope(JTokenType.Object, objectSchemas));
+          break;
+        case JsonToken.StartArray:
+          ProcessValue();
+          IList<JsonSchemaModel> arraySchemas = CurrentMemberSchemas.Where(ValidateArray).ToList();
+          Push(new SchemaScope(JTokenType.Array, arraySchemas));
+          break;
+        case JsonToken.StartConstructor:
+          Push(new SchemaScope(JTokenType.Constructor, null));
+          break;
+        case JsonToken.PropertyName:
+          foreach (JsonSchemaModel schema in CurrentSchemas)
+          {
+            ValidatePropertyName(schema);
+          }
+          break;
+        case JsonToken.Raw:
+          break;
+        case JsonToken.Integer:
+          ProcessValue();
+          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
+          {
+            ValidateInteger(schema);
+          }
+          break;
+        case JsonToken.Float:
+          ProcessValue();
+          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
+          {
+            ValidateFloat(schema);
+          }
+          break;
+        case JsonToken.String:
+          ProcessValue();
+          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
+          {
+            ValidateString(schema);
+          }
+          break;
+        case JsonToken.Boolean:
+          ProcessValue();
+          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
+          {
+            ValidateBoolean(schema);
+          }
+          break;
+        case JsonToken.Null:
+          ProcessValue();
+          foreach (JsonSchemaModel schema in CurrentMemberSchemas)
+          {
+            ValidateNull(schema);
+          }
+          break;
+        case JsonToken.Undefined:
+          break;
+        case JsonToken.EndObject:
+          foreach (JsonSchemaModel schema in CurrentSchemas)
+          {
+            ValidateEndObject(schema);
+          }
+          Pop();
+          break;
+        case JsonToken.EndArray:
+          foreach (JsonSchemaModel schema in CurrentSchemas)
+          {
+            ValidateEndArray(schema);
+          }
+          Pop();
+          break;
+        case JsonToken.EndConstructor:
+          Pop();
+          break;
+        case JsonToken.Date:
+        case JsonToken.Bytes:
+          // these have no equivalent in JSON schema
+          break;
+        case JsonToken.None:
+          // no content, do nothing
+          break;
+        default:
+          throw new ArgumentOutOfRangeException();
+      }
+    }
+
+    private void ValidateEndObject(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      Dictionary<string, bool> requiredProperties = _currentScope.RequiredProperties;
+
+      if (requiredProperties != null)
+      {
+        List<string> unmatchedRequiredProperties =
+          requiredProperties.Where(kv => !kv.Value).Select(kv => kv.Key).ToList();
+
+        if (unmatchedRequiredProperties.Count > 0)
+          RaiseError("Required properties are missing from object: {0}.".FormatWith(CultureInfo.InvariantCulture, string.Join(", ", unmatchedRequiredProperties.ToArray())), schema);
+      }
+    }
+
+    private void ValidateEndArray(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      int arrayItemCount = _currentScope.ArrayItemCount;
+
+      if (schema.MaximumItems != null && arrayItemCount > schema.MaximumItems)
+        RaiseError("Array item count {0} exceeds maximum count of {1}.".FormatWith(CultureInfo.InvariantCulture, arrayItemCount, schema.MaximumItems), schema);
+
+      if (schema.MinimumItems != null && arrayItemCount < schema.MinimumItems)
+        RaiseError("Array item count {0} is less than minimum count of {1}.".FormatWith(CultureInfo.InvariantCulture, arrayItemCount, schema.MinimumItems), schema);
+    }
+
+    private void ValidateNull(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      if (!TestType(schema, JsonSchemaType.Null))
+        return;
+
+      ValidateInEnumAndNotDisallowed(schema);
+    }
+
+    private void ValidateBoolean(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      if (!TestType(schema, JsonSchemaType.Boolean))
+        return;
+
+      ValidateInEnumAndNotDisallowed(schema);
+    }
+
+    private void ValidateString(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      if (!TestType(schema, JsonSchemaType.String))
+        return;
+
+      ValidateInEnumAndNotDisallowed(schema);
+
+      string value = _reader.Value.ToString();
+
+      if (schema.MaximumLength != null && value.Length > schema.MaximumLength)
+        RaiseError("String '{0}' exceeds maximum length of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.MaximumLength), schema);
+
+      if (schema.MinimumLength != null && value.Length < schema.MinimumLength)
+        RaiseError("String '{0}' is less than minimum length of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.MinimumLength), schema);
+
+      if (schema.Patterns != null)
+      {
+        foreach (string pattern in schema.Patterns)
+        {
+          if (!Regex.IsMatch(value, pattern))
+            RaiseError("String '{0}' does not match regex pattern '{1}'.".FormatWith(CultureInfo.InvariantCulture, value, pattern), schema);
+        }
+      }
+    }
+
+    private void ValidateInteger(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      if (!TestType(schema, JsonSchemaType.Integer))
+        return;
+
+      ValidateInEnumAndNotDisallowed(schema);
+      
+      long value = Convert.ToInt64(_reader.Value, CultureInfo.InvariantCulture);
+
+      if (schema.Maximum != null)
+      {
+        if (value > schema.Maximum)
+          RaiseError("Integer {0} exceeds maximum value of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.Maximum), schema);
+        if (schema.ExclusiveMaximum && value == schema.Maximum)
+          RaiseError("Integer {0} equals maximum value of {1} and exclusive maximum is true.".FormatWith(CultureInfo.InvariantCulture, value, schema.Maximum), schema);
+      }
+
+      if (schema.Minimum != null)
+      {
+        if (value < schema.Minimum)
+          RaiseError("Integer {0} is less than minimum value of {1}.".FormatWith(CultureInfo.InvariantCulture, value, schema.Minimum), schema);
+        if (schema.ExclusiveMinimum && value == schema.Minimum)
+          RaiseError("Integer {0} equals minimum value of {1} and exclusive minimum is true.".FormatWith(CultureInfo.InvariantCulture, value, schema.Minimum), schema);
+      }
+
+      if (schema.DivisibleBy != null && !IsZero(value % schema.DivisibleBy.Value))
+        RaiseError("Integer {0} is not evenly divisible by {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.DivisibleBy), schema);
+    }
+
+    private void ProcessValue()
+    {
+      if (_currentScope != null && _currentScope.TokenType == JTokenType.Array)
+      {
+        _currentScope.ArrayItemCount++;
+
+        foreach (JsonSchemaModel currentSchema in CurrentSchemas)
+        {
+          if (currentSchema != null && currentSchema.Items != null && currentSchema.Items.Count > 1 && _currentScope.ArrayItemCount >= currentSchema.Items.Count)
+            RaiseError("Index {0} has not been defined and the schema does not allow additional items.".FormatWith(CultureInfo.InvariantCulture, _currentScope.ArrayItemCount), currentSchema);
+        }
+      }
+    }
+
+    private void ValidateFloat(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      if (!TestType(schema, JsonSchemaType.Float))
+        return;
+
+      ValidateInEnumAndNotDisallowed(schema);
+      
+      double value = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
+
+      if (schema.Maximum != null)
+      {
+        if (value > schema.Maximum)
+          RaiseError("Float {0} exceeds maximum value of {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Maximum), schema);
+        if (schema.ExclusiveMaximum && value == schema.Maximum)
+          RaiseError("Float {0} equals maximum value of {1} and exclusive maximum is true.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Maximum), schema);
+      }
+
+      if (schema.Minimum != null)
+      {
+        if (value < schema.Minimum)
+          RaiseError("Float {0} is less than minimum value of {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Minimum), schema);
+        if (schema.ExclusiveMinimum && value == schema.Minimum)
+          RaiseError("Float {0} equals minimum value of {1} and exclusive minimum is true.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.Minimum), schema);
+      }
+
+      if (schema.DivisibleBy != null && !IsZero(value % schema.DivisibleBy.Value))
+        RaiseError("Float {0} is not evenly divisible by {1}.".FormatWith(CultureInfo.InvariantCulture, JsonConvert.ToString(value), schema.DivisibleBy), schema);
+    }
+
+    private static bool IsZero(double value)
+    {
+      const double epsilon = 2.2204460492503131e-016;
+
+      return Math.Abs(value) < 10.0 * epsilon;
+    }
+
+    private void ValidatePropertyName(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return;
+
+      string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
+
+      if (_currentScope.RequiredProperties.ContainsKey(propertyName))
+        _currentScope.RequiredProperties[propertyName] = true;
+
+      if (!schema.AllowAdditionalProperties)
+      {
+        bool propertyDefinied = IsPropertyDefinied(schema, propertyName);
+
+        if (!propertyDefinied)
+          RaiseError("Property '{0}' has not been defined and the schema does not allow additional properties.".FormatWith(CultureInfo.InvariantCulture, propertyName), schema);
+      }
+
+      _currentScope.CurrentPropertyName = propertyName;
+    }
+
+    private bool IsPropertyDefinied(JsonSchemaModel schema, string propertyName)
+    {
+      if (schema.Properties != null && schema.Properties.ContainsKey(propertyName))
+        return true;
+
+      if (schema.PatternProperties != null)
+      {
+        foreach (string pattern in schema.PatternProperties.Keys)
+        {
+          if (Regex.IsMatch(propertyName, pattern))
+            return true;
+        }
+      }
+
+      return false;
+    }
+
+    private bool ValidateArray(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return true;
+
+      return (TestType(schema, JsonSchemaType.Array));
+    }
+
+    private bool ValidateObject(JsonSchemaModel schema)
+    {
+      if (schema == null)
+        return true;
+
+      return (TestType(schema, JsonSchemaType.Object));
+    }
+
+    private bool TestType(JsonSchemaModel currentSchema, JsonSchemaType currentType)
+    {
+      if (!JsonSchemaGenerator.HasFlag(currentSchema.Type, currentType))
+      {
+        RaiseError("Invalid type. Expected {0} but got {1}.".FormatWith(CultureInfo.InvariantCulture, currentSchema.Type, currentType), currentSchema);
+        return false;
+      }
+
+      return true;
+    }
+
+    bool IJsonLineInfo.HasLineInfo()
+    {
+      IJsonLineInfo lineInfo = _reader as IJsonLineInfo;
+      return lineInfo != null && lineInfo.HasLineInfo();
+    }
+
+    int IJsonLineInfo.LineNumber
+    {
+      get
+      {
+        IJsonLineInfo lineInfo = _reader as IJsonLineInfo;
+        return (lineInfo != null) ? lineInfo.LineNumber : 0;
+      }
+    }
+
+    int IJsonLineInfo.LinePosition
+    {
+      get
+      {
+        IJsonLineInfo lineInfo = _reader as IJsonLineInfo;
+        return (lineInfo != null) ? lineInfo.LinePosition : 0;
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonWriter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonWriter.cs
@@ -1,1288 +1,1288 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-#if NETFX_CORE
-using IConvertible = Newtonsoft.Json.Utilities.Convertible;
-#endif
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
-  /// </summary>
-  public abstract class JsonWriter : IDisposable
-  {
-    internal enum State
-    {
-      Start,
-      Property,
-      ObjectStart,
-      Object,
-      ArrayStart,
-      Array,
-      ConstructorStart,
-      Constructor,
-      Bytes,
-      Closed,
-      Error
-    }
-
-    // array that gives a new state based on the current state an the token being written
-    private static readonly State[][] StateArray;
-
-    internal static readonly State[][] StateArrayTempate = new[] {
-//                                      Start                   PropertyName            ObjectStart         Object            ArrayStart              Array                   ConstructorStart        Constructor             Closed          Error
-//                        
-/* None                        */new[]{ State.Error,            State.Error,            State.Error,        State.Error,      State.Error,            State.Error,            State.Error,            State.Error,            State.Error,    State.Error },
-/* StartObject                 */new[]{ State.ObjectStart,      State.ObjectStart,      State.Error,        State.Error,      State.ObjectStart,      State.ObjectStart,      State.ObjectStart,      State.ObjectStart,      State.Error,    State.Error },
-/* StartArray                  */new[]{ State.ArrayStart,       State.ArrayStart,       State.Error,        State.Error,      State.ArrayStart,       State.ArrayStart,       State.ArrayStart,       State.ArrayStart,       State.Error,    State.Error },
-/* StartConstructor            */new[]{ State.ConstructorStart, State.ConstructorStart, State.Error,        State.Error,      State.ConstructorStart, State.ConstructorStart, State.ConstructorStart, State.ConstructorStart, State.Error,    State.Error },
-/* StartProperty               */new[]{ State.Property,         State.Error,            State.Property,     State.Property,   State.Error,            State.Error,            State.Error,            State.Error,            State.Error,    State.Error },
-/* Comment                     */new[]{ State.Start,            State.Property,         State.ObjectStart,  State.Object,     State.ArrayStart,       State.Array,            State.Constructor,      State.Constructor,      State.Error,    State.Error },
-/* Raw                         */new[]{ State.Start,            State.Property,         State.ObjectStart,  State.Object,     State.ArrayStart,       State.Array,            State.Constructor,      State.Constructor,      State.Error,    State.Error },
-/* Value (this will be copied) */new[]{ State.Start,            State.Object,           State.Error,        State.Error,      State.Array,            State.Array,            State.Constructor,      State.Constructor,      State.Error,    State.Error }
-		};
-
-    internal static State[][] BuildStateArray()
-    {
-      var allStates = StateArrayTempate.ToList();
-      var errorStates = StateArrayTempate[0];
-      var valueStates = StateArrayTempate[7];
-
-      foreach (JsonToken valueToken in EnumUtils.GetValues(typeof(JsonToken)))
-      {
-        if (allStates.Count <= (int)valueToken)
-        {
-          switch (valueToken)
-          {
-            case JsonToken.Integer:
-            case JsonToken.Float:
-            case JsonToken.String:
-            case JsonToken.Boolean:
-            case JsonToken.Null:
-            case JsonToken.Undefined:
-            case JsonToken.Date:
-            case JsonToken.Bytes:
-              allStates.Add(valueStates);
-              break;
-            default:
-              allStates.Add(errorStates);
-              break;
-          }
-        }
-      }
-
-      return allStates.ToArray();
-    }
-
-    static JsonWriter()
-    {
-      StateArray = BuildStateArray();
-    }
-
-    private readonly List<JsonPosition> _stack;
-    private JsonPosition _currentPosition;
-    private State _currentState;
-    private Formatting _formatting;
-
-    /// <summary>
-    /// Gets or sets a value indicating whether the underlying stream or
-    /// <see cref="TextReader"/> should be closed when the writer is closed.
-    /// </summary>
-    /// <value>
-    /// true to close the underlying stream or <see cref="TextReader"/> when
-    /// the writer is closed; otherwise false. The default is true.
-    /// </value>
-    public bool CloseOutput { get; set; }
-
-    /// <summary>
-    /// Gets the top.
-    /// </summary>
-    /// <value>The top.</value>
-    protected internal int Top
-    {
-      get
-      {
-        int depth = _stack.Count;
-        if (Peek() != JsonContainerType.None)
-          depth++;
-
-        return depth;
-      }
-    }
-
-    internal string ContainerPath
-    {
-      get
-      {
-        if (_currentPosition.Type == JsonContainerType.None)
-          return string.Empty;
-
-        IEnumerable<JsonPosition> positions = (_currentPosition.InsideContainer())
-          ? _stack
-          : _stack.Concat(new[] { _currentPosition });
-
-        return JsonPosition.BuildPath(positions);
-      }
-    }
-    
-    /// <summary>
-    /// Gets the state of the writer.
-    /// </summary>
-    public WriteState WriteState
-    {
-      get
-      {
-        switch (_currentState)
-        {
-          case State.Error:
-            return WriteState.Error;
-          case State.Closed:
-            return WriteState.Closed;
-          case State.Object:
-          case State.ObjectStart:
-            return WriteState.Object;
-          case State.Array:
-          case State.ArrayStart:
-            return WriteState.Array;
-          case State.Constructor:
-          case State.ConstructorStart:
-            return WriteState.Constructor;
-          case State.Property:
-            return WriteState.Property;
-          case State.Start:
-            return WriteState.Start;
-          default:
-            throw new JsonWriterException("Invalid state: " + _currentState);
-        }
-      }
-    }
-
-    /// <summary>
-    /// Gets the path of the writer. 
-    /// </summary>
-    public string Path
-    {
-      get
-      {
-        if (_currentPosition.Type == JsonContainerType.None)
-          return string.Empty;
-
-        return JsonPosition.BuildPath(_stack.Concat(new[] { _currentPosition }));
-      }
-    }
-
-    private DateFormatHandling _dateFormatHandling;
-    private DateTimeZoneHandling _dateTimeZoneHandling;
-
-    /// <summary>
-    /// Indicates how JSON text output is formatted.
-    /// </summary>
-    public Formatting Formatting
-    {
-      get { return _formatting; }
-      set { _formatting = value; }
-    }
-
-    /// <summary>
-    /// Get or set how dates are written to JSON text.
-    /// </summary>
-    public DateFormatHandling DateFormatHandling
-    {
-      get { return _dateFormatHandling; }
-      set { _dateFormatHandling = value; }
-    }
-
-    /// <summary>
-    /// Get or set how <see cref="DateTime"/> time zones are handling when writing JSON.
-    /// </summary>
-    public DateTimeZoneHandling DateTimeZoneHandling
-    {
-      get { return _dateTimeZoneHandling; }
-      set { _dateTimeZoneHandling = value; }
-    }
-
-    /// <summary>
-    /// Creates an instance of the <c>JsonWriter</c> class. 
-    /// </summary>
-    protected JsonWriter()
-    {
-      _stack = new List<JsonPosition>(4);
-      _currentState = State.Start;
-      _formatting = Formatting.None;
-      _dateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
-
-      CloseOutput = true;
-    }
-
-    private void UpdateScopeWithFinishedValue()
-    {
-      if (_currentPosition.Type == JsonContainerType.Array
-        || _currentPosition.Type == JsonContainerType.Constructor)
-      {
-        if (_currentPosition.Position == null)
-          _currentPosition.Position = 0;
-        else
-          _currentPosition.Position++;
-      }
-    }
-
-    private void Push(JsonContainerType value)
-    {
-      UpdateScopeWithFinishedValue();
-
-      if (_currentPosition.Type == JsonContainerType.None)
-      {
-        _currentPosition.Type = value;
-      }
-      else
-      {
-        _stack.Add(_currentPosition);
-        var state = new JsonPosition
-        {
-          Type = value
-        };
-        _currentPosition = state;
-      }
-    }
-
-    private JsonContainerType Pop()
-    {
-      JsonPosition oldPosition;
-      if (_stack.Count > 0)
-      {
-        oldPosition = _currentPosition;
-        _currentPosition = _stack[_stack.Count - 1];
-        _stack.RemoveAt(_stack.Count - 1);
-      }
-      else
-      {
-        oldPosition = _currentPosition;
-        _currentPosition = new JsonPosition();
-      }
-
-      return oldPosition.Type;
-    }
-
-    private JsonContainerType Peek()
-    {
-      return _currentPosition.Type;
-    }
-
-    /// <summary>
-    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
-    /// </summary>
-    public abstract void Flush();
-
-    /// <summary>
-    /// Closes this stream and the underlying stream.
-    /// </summary>
-    public virtual void Close()
-    {
-      AutoCompleteAll();
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json object.
-    /// </summary>
-    public virtual void WriteStartObject()
-    {
-      AutoComplete(JsonToken.StartObject);
-      Push(JsonContainerType.Object);
-    }
-
-    /// <summary>
-    /// Writes the end of a Json object.
-    /// </summary>
-    public virtual void WriteEndObject()
-    {
-      AutoCompleteClose(JsonToken.EndObject);
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json array.
-    /// </summary>
-    public virtual void WriteStartArray()
-    {
-      AutoComplete(JsonToken.StartArray);
-      Push(JsonContainerType.Array);
-    }
-
-    /// <summary>
-    /// Writes the end of an array.
-    /// </summary>
-    public virtual void WriteEndArray()
-    {
-      AutoCompleteClose(JsonToken.EndArray);
-    }
-
-    /// <summary>
-    /// Writes the start of a constructor with the given name.
-    /// </summary>
-    /// <param name="name">The name of the constructor.</param>
-    public virtual void WriteStartConstructor(string name)
-    {
-      AutoComplete(JsonToken.StartConstructor);
-      Push(JsonContainerType.Constructor);
-    }
-
-    /// <summary>
-    /// Writes the end constructor.
-    /// </summary>
-    public virtual void WriteEndConstructor()
-    {
-      AutoCompleteClose(JsonToken.EndConstructor);
-    }
-
-    /// <summary>
-    /// Writes the property name of a name/value pair on a Json object.
-    /// </summary>
-    /// <param name="name">The name of the property.</param>
-    public virtual void WritePropertyName(string name)
-    {
-      _currentPosition.PropertyName = name;
-      AutoComplete(JsonToken.PropertyName);
-    }
-
-    /// <summary>
-    /// Writes the end of the current Json object or array.
-    /// </summary>
-    public virtual void WriteEnd()
-    {
-      WriteEnd(Peek());
-    }
-
-    /// <summary>
-    /// Writes the current <see cref="JsonReader"/> token.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> to read the token from.</param>
-    public void WriteToken(JsonReader reader)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-
-      int initialDepth;
-
-      if (reader.TokenType == JsonToken.None)
-        initialDepth = -1;
-      else if (!IsStartToken(reader.TokenType))
-        initialDepth = reader.Depth + 1;
-      else
-        initialDepth = reader.Depth;
-
-      WriteToken(reader, initialDepth);
-    }
-
-    internal void WriteToken(JsonReader reader, int initialDepth)
-    {
-      do
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.None:
-            // read to next
-            break;
-          case JsonToken.StartObject:
-            WriteStartObject();
-            break;
-          case JsonToken.StartArray:
-            WriteStartArray();
-            break;
-          case JsonToken.StartConstructor:
-            string constructorName = reader.Value.ToString();
-            // write a JValue date when the constructor is for a date
-            if (string.Equals(constructorName, "Date", StringComparison.Ordinal))
-              WriteConstructorDate(reader);
-            else
-              WriteStartConstructor(reader.Value.ToString());
-            break;
-          case JsonToken.PropertyName:
-            WritePropertyName(reader.Value.ToString());
-            break;
-          case JsonToken.Comment:
-            WriteComment(reader.Value.ToString());
-            break;
-          case JsonToken.Integer:
-            WriteValue(Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture));
-            break;
-          case JsonToken.Float:
-            WriteValue(Convert.ToDouble(reader.Value, CultureInfo.InvariantCulture));
-            break;
-          case JsonToken.String:
-            WriteValue(reader.Value.ToString());
-            break;
-          case JsonToken.Boolean:
-            WriteValue(Convert.ToBoolean(reader.Value, CultureInfo.InvariantCulture));
-            break;
-          case JsonToken.Null:
-            WriteNull();
-            break;
-          case JsonToken.Undefined:
-            WriteUndefined();
-            break;
-          case JsonToken.EndObject:
-            WriteEndObject();
-            break;
-          case JsonToken.EndArray:
-            WriteEndArray();
-            break;
-          case JsonToken.EndConstructor:
-            WriteEndConstructor();
-            break;
-          case JsonToken.Date:
-            WriteValue((DateTime)reader.Value);
-            break;
-          case JsonToken.Raw:
-            WriteRawValue((string)reader.Value);
-            break;
-          case JsonToken.Bytes:
-            WriteValue((byte[])reader.Value);
-            break;
-          default:
-            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", reader.TokenType, "Unexpected token type.");
-        }
-      }
-      while (
-        // stop if we have reached the end of the token being read
-        initialDepth - 1 < reader.Depth - (IsEndToken(reader.TokenType) ? 1 : 0)
-        && reader.Read());
-    }
-
-    private void WriteConstructorDate(JsonReader reader)
-    {
-      if (!reader.Read())
-        throw new Exception("Unexpected end when reading date constructor.");
-      if (reader.TokenType != JsonToken.Integer)
-        throw new Exception("Unexpected token when reading date constructor. Expected Integer, got " + reader.TokenType);
-
-      long ticks = (long)reader.Value;
-      DateTime date = JsonConvert.ConvertJavaScriptTicksToDateTime(ticks);
-
-      if (!reader.Read())
-        throw new Exception("Unexpected end when reading date constructor.");
-      if (reader.TokenType != JsonToken.EndConstructor)
-        throw new Exception("Unexpected token when reading date constructor. Expected EndConstructor, got " + reader.TokenType);
-
-      WriteValue(date);
-    }
-
-    private bool IsEndToken(JsonToken token)
-    {
-      switch (token)
-      {
-        case JsonToken.EndObject:
-        case JsonToken.EndArray:
-        case JsonToken.EndConstructor:
-          return true;
-        default:
-          return false;
-      }
-    }
-
-    private bool IsStartToken(JsonToken token)
-    {
-      switch (token)
-      {
-        case JsonToken.StartObject:
-        case JsonToken.StartArray:
-        case JsonToken.StartConstructor:
-          return true;
-        default:
-          return false;
-      }
-    }
-
-    private void WriteEnd(JsonContainerType type)
-    {
-      switch (type)
-      {
-        case JsonContainerType.Object:
-          WriteEndObject();
-          break;
-        case JsonContainerType.Array:
-          WriteEndArray();
-          break;
-        case JsonContainerType.Constructor:
-          WriteEndConstructor();
-          break;
-        default:
-          throw new JsonWriterException("Unexpected type when writing end: " + type);
-      }
-    }
-
-    private void AutoCompleteAll()
-    {
-      while (Top > 0)
-      {
-        WriteEnd();
-      }
-    }
-
-    private JsonContainerType GetTypeForCloseToken(JsonToken token)
-    {
-      switch (token)
-      {
-        case JsonToken.EndObject:
-          return JsonContainerType.Object;
-        case JsonToken.EndArray:
-          return JsonContainerType.Array;
-        case JsonToken.EndConstructor:
-          return JsonContainerType.Constructor;
-        default:
-          throw new JsonWriterException("No type for token: " + token);
-      }
-    }
-
-    private JsonToken GetCloseTokenForType(JsonContainerType type)
-    {
-      switch (type)
-      {
-        case JsonContainerType.Object:
-          return JsonToken.EndObject;
-        case JsonContainerType.Array:
-          return JsonToken.EndArray;
-        case JsonContainerType.Constructor:
-          return JsonToken.EndConstructor;
-        default:
-          throw new JsonWriterException("No close token for type: " + type);
-      }
-    }
-
-    private void AutoCompleteClose(JsonToken tokenBeingClosed)
-    {
-      // write closing symbol and calculate new state
-
-      int levelsToComplete = 0;
-      JsonContainerType type = GetTypeForCloseToken(tokenBeingClosed);
-
-      if (_currentPosition.Type == type)
-      {
-        levelsToComplete = 1;
-      }
-      else
-      {
-        int top = Top - 2;
-        for (int i = top; i >= 0; i--)
-        {
-          int currentLevel = top - i;
-
-          if (_stack[currentLevel].Type == type)
-          {
-            levelsToComplete = i + 2;
-            break;
-          }
-        }
-      }
-
-      if (levelsToComplete == 0)
-        throw new JsonWriterException("No token to close.");
-
-      for (int i = 0; i < levelsToComplete; i++)
-      {
-        JsonToken token = GetCloseTokenForType(Pop());
-
-        if (_formatting == Formatting.Indented)
-        {
-          if (_currentState != State.ObjectStart && _currentState != State.ArrayStart)
-            WriteIndent();
-        }
-
-        WriteEnd(token);
-
-        JsonContainerType currentLevelType = Peek();
-
-        switch (currentLevelType)
-        {
-          case JsonContainerType.Object:
-            _currentState = State.Object;
-            break;
-          case JsonContainerType.Array:
-            _currentState = State.Array;
-            break;
-          case JsonContainerType.Constructor:
-            _currentState = State.Array;
-            break;
-          case JsonContainerType.None:
-            _currentState = State.Start;
-            break;
-          default:
-            throw new JsonWriterException("Unknown JsonType: " + currentLevelType);
-        }
-      }
-    }
-
-    /// <summary>
-    /// Writes the specified end token.
-    /// </summary>
-    /// <param name="token">The end token to write.</param>
-    protected virtual void WriteEnd(JsonToken token)
-    {
-    }
-
-    /// <summary>
-    /// Writes indent characters.
-    /// </summary>
-    protected virtual void WriteIndent()
-    {
-    }
-
-    /// <summary>
-    /// Writes the JSON value delimiter.
-    /// </summary>
-    protected virtual void WriteValueDelimiter()
-    {
-    }
-
-    /// <summary>
-    /// Writes an indent space.
-    /// </summary>
-    protected virtual void WriteIndentSpace()
-    {
-    }
-
-    internal void AutoComplete(JsonToken tokenBeingWritten)
-    {
-      if (tokenBeingWritten != JsonToken.StartObject
-        && tokenBeingWritten != JsonToken.StartArray
-        && tokenBeingWritten != JsonToken.StartConstructor)
-        UpdateScopeWithFinishedValue();
-
-      // gets new state based on the current state and what is being written
-      State newState = StateArray[(int)tokenBeingWritten][(int)_currentState];
-
-      if (newState == State.Error)
-      {
-        throw new JsonWriterException("Token {0} in state {1} would result in an invalid JSON object.".FormatWith(CultureInfo.InvariantCulture, tokenBeingWritten.ToString(), _currentState.ToString()));
-      }
-
-      if ((_currentState == State.Object || _currentState == State.Array || _currentState == State.Constructor) && tokenBeingWritten != JsonToken.Comment)
-      {
-        WriteValueDelimiter();
-      }
-      else if (_currentState == State.Property)
-      {
-        if (_formatting == Formatting.Indented)
-          WriteIndentSpace();
-      }
-
-      if (_formatting == Formatting.Indented)
-      {
-        WriteState writeState = WriteState;
-
-        // don't indent a property when it is the first token to be written (i.e. at the start)
-        if ((tokenBeingWritten == JsonToken.PropertyName && writeState != WriteState.Start) ||
-            writeState == WriteState.Array || writeState == WriteState.Constructor)
-        {
-          WriteIndent();
-        }
-      }
-
-      _currentState = newState;
-    }
-
-    #region WriteValue methods
-    /// <summary>
-    /// Writes a null value.
-    /// </summary>
-    public virtual void WriteNull()
-    {
-      AutoComplete(JsonToken.Null);
-    }
-
-    /// <summary>
-    /// Writes an undefined value.
-    /// </summary>
-    public virtual void WriteUndefined()
-    {
-      AutoComplete(JsonToken.Undefined);
-    }
-
-    /// <summary>
-    /// Writes raw JSON without changing the writer's state.
-    /// </summary>
-    /// <param name="json">The raw JSON to write.</param>
-    public virtual void WriteRaw(string json)
-    {
-    }
-
-    /// <summary>
-    /// Writes raw JSON where a value is expected and updates the writer's state.
-    /// </summary>
-    /// <param name="json">The raw JSON to write.</param>
-    public virtual void WriteRawValue(string json)
-    {
-      // hack. want writer to change state as if a value had been written
-      AutoComplete(JsonToken.Undefined);
-      WriteRaw(json);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="String"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="String"/> value to write.</param>
-    public virtual void WriteValue(string value)
-    {
-      AutoComplete(JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int32"/> value to write.</param>
-    public virtual void WriteValue(int value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(uint value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int64"/> value to write.</param>
-    public virtual void WriteValue(long value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(ulong value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Single"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Single"/> value to write.</param>
-    public virtual void WriteValue(float value)
-    {
-      AutoComplete(JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Double"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Double"/> value to write.</param>
-    public virtual void WriteValue(double value)
-    {
-      AutoComplete(JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Boolean"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
-    public virtual void WriteValue(bool value)
-    {
-      AutoComplete(JsonToken.Boolean);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int16"/> value to write.</param>
-    public virtual void WriteValue(short value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(ushort value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Char"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Char"/> value to write.</param>
-    public virtual void WriteValue(char value)
-    {
-      AutoComplete(JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Byte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Byte"/> value to write.</param>
-    public virtual void WriteValue(byte value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="SByte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="SByte"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(sbyte value)
-    {
-      AutoComplete(JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Decimal"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
-    public virtual void WriteValue(decimal value)
-    {
-      AutoComplete(JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="DateTime"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
-    public virtual void WriteValue(DateTime value)
-    {
-      AutoComplete(JsonToken.Date);
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Writes a <see cref="DateTimeOffset"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
-    public virtual void WriteValue(DateTimeOffset value)
-    {
-      AutoComplete(JsonToken.Date);
-    }
-#endif
-
-    /// <summary>
-    /// Writes a <see cref="Guid"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Guid"/> value to write.</param>
-    public virtual void WriteValue(Guid value)
-    {
-      AutoComplete(JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="TimeSpan"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
-    public virtual void WriteValue(TimeSpan value)
-    {
-      AutoComplete(JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Int32}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Int32}"/> value to write.</param>
-    public virtual void WriteValue(int? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{UInt32}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{UInt32}"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(uint? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Int64}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Int64}"/> value to write.</param>
-    public virtual void WriteValue(long? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{UInt64}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{UInt64}"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(ulong? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Single}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Single}"/> value to write.</param>
-    public virtual void WriteValue(float? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Double}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Double}"/> value to write.</param>
-    public virtual void WriteValue(double? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Boolean}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Boolean}"/> value to write.</param>
-    public virtual void WriteValue(bool? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Int16}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Int16}"/> value to write.</param>
-    public virtual void WriteValue(short? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{UInt16}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{UInt16}"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(ushort? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Char}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Char}"/> value to write.</param>
-    public virtual void WriteValue(char? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Byte}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Byte}"/> value to write.</param>
-    public virtual void WriteValue(byte? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{SByte}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{SByte}"/> value to write.</param>
-    [CLSCompliant(false)]
-    public virtual void WriteValue(sbyte? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Decimal}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Decimal}"/> value to write.</param>
-    public virtual void WriteValue(decimal? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{DateTime}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{DateTime}"/> value to write.</param>
-    public virtual void WriteValue(DateTime? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Writes a <see cref="Nullable{DateTimeOffset}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{DateTimeOffset}"/> value to write.</param>
-    public virtual void WriteValue(DateTimeOffset? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-#endif
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{Guid}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{Guid}"/> value to write.</param>
-    public virtual void WriteValue(Guid? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Nullable{TimeSpan}"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Nullable{TimeSpan}"/> value to write.</param>
-    public virtual void WriteValue(TimeSpan? value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        WriteValue(value.Value);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="T:Byte[]"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
-    public virtual void WriteValue(byte[] value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        AutoComplete(JsonToken.Bytes);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Uri"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Uri"/> value to write.</param>
-    public virtual void WriteValue(Uri value)
-    {
-      if (value == null)
-        WriteNull();
-      else
-        AutoComplete(JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Object"/> value.
-    /// An error will raised if the value cannot be written as a single JSON token.
-    /// </summary>
-    /// <param name="value">The <see cref="Object"/> value to write.</param>
-    public virtual void WriteValue(object value)
-    {
-      if (value == null)
-      {
-        WriteNull();
-        return;
-      }
-      else if (ConvertUtils.IsConvertible(value))
-      {
-        IConvertible convertible = ConvertUtils.ToConvertible(value);
-
-        switch (convertible.GetTypeCode())
-        {
-          case TypeCode.String:
-            WriteValue(convertible.ToString(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Char:
-            WriteValue(convertible.ToChar(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Boolean:
-            WriteValue(convertible.ToBoolean(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.SByte:
-            WriteValue(convertible.ToSByte(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Int16:
-            WriteValue(convertible.ToInt16(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.UInt16:
-            WriteValue(convertible.ToUInt16(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Int32:
-            WriteValue(convertible.ToInt32(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Byte:
-            WriteValue(convertible.ToByte(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.UInt32:
-            WriteValue(convertible.ToUInt32(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Int64:
-            WriteValue(convertible.ToInt64(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.UInt64:
-            WriteValue(convertible.ToUInt64(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Single:
-            WriteValue(convertible.ToSingle(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Double:
-            WriteValue(convertible.ToDouble(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.DateTime:
-            WriteValue(convertible.ToDateTime(CultureInfo.InvariantCulture));
-            return;
-          case TypeCode.Decimal:
-            WriteValue(convertible.ToDecimal(CultureInfo.InvariantCulture));
-            return;
-#if !NETFX_CORE
-          case TypeCode.DBNull:
-            WriteNull();
-            return;
-#endif
-        }
-      }
-#if !PocketPC && !NET20
-      else if (value is DateTimeOffset)
-      {
-        WriteValue((DateTimeOffset)value);
-        return;
-      }
-#endif
-      else if (value is byte[])
-      {
-        WriteValue((byte[])value);
-        return;
-      }
-      else if (value is Guid)
-      {
-        WriteValue((Guid)value);
-        return;
-      }
-      else if (value is Uri)
-      {
-        WriteValue((Uri)value);
-        return;
-      }
-      else if (value is TimeSpan)
-      {
-        WriteValue((TimeSpan)value);
-        return;
-      }
-
-      throw new ArgumentException("Unsupported type: {0}. Use the JsonSerializer class to get the object's JSON representation.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
-    }
-    #endregion
-
-    /// <summary>
-    /// Writes out a comment <code>/*...*/</code> containing the specified text. 
-    /// </summary>
-    /// <param name="text">Text to place inside the comment.</param>
-    public virtual void WriteComment(string text)
-    {
-      AutoComplete(JsonToken.Comment);
-    }
-
-    /// <summary>
-    /// Writes out the given white space.
-    /// </summary>
-    /// <param name="ws">The string of white space characters.</param>
-    public virtual void WriteWhitespace(string ws)
-    {
-      if (ws != null)
-      {
-        if (!StringUtils.IsWhiteSpace(ws))
-          throw new JsonWriterException("Only white space characters should be used.");
-      }
-    }
-
-
-    void IDisposable.Dispose()
-    {
-      Dispose(true);
-    }
-
-    private void Dispose(bool disposing)
-    {
-      if (_currentState != State.Closed)
-        Close();
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+#if NETFX_CORE
+using IConvertible = Newtonsoft.Json.Utilities.Convertible;
+#endif
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
+  /// </summary>
+  public abstract class JsonWriter : IDisposable
+  {
+    internal enum State
+    {
+      Start,
+      Property,
+      ObjectStart,
+      Object,
+      ArrayStart,
+      Array,
+      ConstructorStart,
+      Constructor,
+      Bytes,
+      Closed,
+      Error
+    }
+
+    // array that gives a new state based on the current state an the token being written
+    private static readonly State[][] StateArray;
+
+    internal static readonly State[][] StateArrayTempate = new[] {
+//                                      Start                   PropertyName            ObjectStart         Object            ArrayStart              Array                   ConstructorStart        Constructor             Closed          Error
+//                        
+/* None                        */new[]{ State.Error,            State.Error,            State.Error,        State.Error,      State.Error,            State.Error,            State.Error,            State.Error,            State.Error,    State.Error },
+/* StartObject                 */new[]{ State.ObjectStart,      State.ObjectStart,      State.Error,        State.Error,      State.ObjectStart,      State.ObjectStart,      State.ObjectStart,      State.ObjectStart,      State.Error,    State.Error },
+/* StartArray                  */new[]{ State.ArrayStart,       State.ArrayStart,       State.Error,        State.Error,      State.ArrayStart,       State.ArrayStart,       State.ArrayStart,       State.ArrayStart,       State.Error,    State.Error },
+/* StartConstructor            */new[]{ State.ConstructorStart, State.ConstructorStart, State.Error,        State.Error,      State.ConstructorStart, State.ConstructorStart, State.ConstructorStart, State.ConstructorStart, State.Error,    State.Error },
+/* StartProperty               */new[]{ State.Property,         State.Error,            State.Property,     State.Property,   State.Error,            State.Error,            State.Error,            State.Error,            State.Error,    State.Error },
+/* Comment                     */new[]{ State.Start,            State.Property,         State.ObjectStart,  State.Object,     State.ArrayStart,       State.Array,            State.Constructor,      State.Constructor,      State.Error,    State.Error },
+/* Raw                         */new[]{ State.Start,            State.Property,         State.ObjectStart,  State.Object,     State.ArrayStart,       State.Array,            State.Constructor,      State.Constructor,      State.Error,    State.Error },
+/* Value (this will be copied) */new[]{ State.Start,            State.Object,           State.Error,        State.Error,      State.Array,            State.Array,            State.Constructor,      State.Constructor,      State.Error,    State.Error }
+		};
+
+    internal static State[][] BuildStateArray()
+    {
+      var allStates = StateArrayTempate.ToList();
+      var errorStates = StateArrayTempate[0];
+      var valueStates = StateArrayTempate[7];
+
+      foreach (JsonToken valueToken in EnumUtils.GetValues(typeof(JsonToken)))
+      {
+        if (allStates.Count <= (int)valueToken)
+        {
+          switch (valueToken)
+          {
+            case JsonToken.Integer:
+            case JsonToken.Float:
+            case JsonToken.String:
+            case JsonToken.Boolean:
+            case JsonToken.Null:
+            case JsonToken.Undefined:
+            case JsonToken.Date:
+            case JsonToken.Bytes:
+              allStates.Add(valueStates);
+              break;
+            default:
+              allStates.Add(errorStates);
+              break;
+          }
+        }
+      }
+
+      return allStates.ToArray();
+    }
+
+    static JsonWriter()
+    {
+      StateArray = BuildStateArray();
+    }
+
+    private readonly List<JsonPosition> _stack;
+    private JsonPosition _currentPosition;
+    private State _currentState;
+    private Formatting _formatting;
+
+    /// <summary>
+    /// Gets or sets a value indicating whether the underlying stream or
+    /// <see cref="TextReader"/> should be closed when the writer is closed.
+    /// </summary>
+    /// <value>
+    /// true to close the underlying stream or <see cref="TextReader"/> when
+    /// the writer is closed; otherwise false. The default is true.
+    /// </value>
+    public bool CloseOutput { get; set; }
+
+    /// <summary>
+    /// Gets the top.
+    /// </summary>
+    /// <value>The top.</value>
+    protected internal int Top
+    {
+      get
+      {
+        int depth = _stack.Count;
+        if (Peek() != JsonContainerType.None)
+          depth++;
+
+        return depth;
+      }
+    }
+
+    internal string ContainerPath
+    {
+      get
+      {
+        if (_currentPosition.Type == JsonContainerType.None)
+          return string.Empty;
+
+        IEnumerable<JsonPosition> positions = (_currentPosition.InsideContainer())
+          ? _stack
+          : _stack.Concat(new[] { _currentPosition });
+
+        return JsonPosition.BuildPath(positions);
+      }
+    }
+    
+    /// <summary>
+    /// Gets the state of the writer.
+    /// </summary>
+    public WriteState WriteState
+    {
+      get
+      {
+        switch (_currentState)
+        {
+          case State.Error:
+            return WriteState.Error;
+          case State.Closed:
+            return WriteState.Closed;
+          case State.Object:
+          case State.ObjectStart:
+            return WriteState.Object;
+          case State.Array:
+          case State.ArrayStart:
+            return WriteState.Array;
+          case State.Constructor:
+          case State.ConstructorStart:
+            return WriteState.Constructor;
+          case State.Property:
+            return WriteState.Property;
+          case State.Start:
+            return WriteState.Start;
+          default:
+            throw new JsonWriterException("Invalid state: " + _currentState);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Gets the path of the writer. 
+    /// </summary>
+    public string Path
+    {
+      get
+      {
+        if (_currentPosition.Type == JsonContainerType.None)
+          return string.Empty;
+
+        return JsonPosition.BuildPath(_stack.Concat(new[] { _currentPosition }));
+      }
+    }
+
+    private DateFormatHandling _dateFormatHandling;
+    private DateTimeZoneHandling _dateTimeZoneHandling;
+
+    /// <summary>
+    /// Indicates how JSON text output is formatted.
+    /// </summary>
+    public Formatting Formatting
+    {
+      get { return _formatting; }
+      set { _formatting = value; }
+    }
+
+    /// <summary>
+    /// Get or set how dates are written to JSON text.
+    /// </summary>
+    public DateFormatHandling DateFormatHandling
+    {
+      get { return _dateFormatHandling; }
+      set { _dateFormatHandling = value; }
+    }
+
+    /// <summary>
+    /// Get or set how <see cref="DateTime"/> time zones are handling when writing JSON.
+    /// </summary>
+    public DateTimeZoneHandling DateTimeZoneHandling
+    {
+      get { return _dateTimeZoneHandling; }
+      set { _dateTimeZoneHandling = value; }
+    }
+
+    /// <summary>
+    /// Creates an instance of the <c>JsonWriter</c> class. 
+    /// </summary>
+    protected JsonWriter()
+    {
+      _stack = new List<JsonPosition>(4);
+      _currentState = State.Start;
+      _formatting = Formatting.None;
+      _dateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
+
+      CloseOutput = true;
+    }
+
+    private void UpdateScopeWithFinishedValue()
+    {
+      if (_currentPosition.Type == JsonContainerType.Array
+        || _currentPosition.Type == JsonContainerType.Constructor)
+      {
+        if (_currentPosition.Position == null)
+          _currentPosition.Position = 0;
+        else
+          _currentPosition.Position++;
+      }
+    }
+
+    private void Push(JsonContainerType value)
+    {
+      UpdateScopeWithFinishedValue();
+
+      if (_currentPosition.Type == JsonContainerType.None)
+      {
+        _currentPosition.Type = value;
+      }
+      else
+      {
+        _stack.Add(_currentPosition);
+        var state = new JsonPosition
+        {
+          Type = value
+        };
+        _currentPosition = state;
+      }
+    }
+
+    private JsonContainerType Pop()
+    {
+      JsonPosition oldPosition;
+      if (_stack.Count > 0)
+      {
+        oldPosition = _currentPosition;
+        _currentPosition = _stack[_stack.Count - 1];
+        _stack.RemoveAt(_stack.Count - 1);
+      }
+      else
+      {
+        oldPosition = _currentPosition;
+        _currentPosition = new JsonPosition();
+      }
+
+      return oldPosition.Type;
+    }
+
+    private JsonContainerType Peek()
+    {
+      return _currentPosition.Type;
+    }
+
+    /// <summary>
+    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+    /// </summary>
+    public abstract void Flush();
+
+    /// <summary>
+    /// Closes this stream and the underlying stream.
+    /// </summary>
+    public virtual void Close()
+    {
+      AutoCompleteAll();
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json object.
+    /// </summary>
+    public virtual void WriteStartObject()
+    {
+      AutoComplete(JsonToken.StartObject);
+      Push(JsonContainerType.Object);
+    }
+
+    /// <summary>
+    /// Writes the end of a Json object.
+    /// </summary>
+    public virtual void WriteEndObject()
+    {
+      AutoCompleteClose(JsonToken.EndObject);
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json array.
+    /// </summary>
+    public virtual void WriteStartArray()
+    {
+      AutoComplete(JsonToken.StartArray);
+      Push(JsonContainerType.Array);
+    }
+
+    /// <summary>
+    /// Writes the end of an array.
+    /// </summary>
+    public virtual void WriteEndArray()
+    {
+      AutoCompleteClose(JsonToken.EndArray);
+    }
+
+    /// <summary>
+    /// Writes the start of a constructor with the given name.
+    /// </summary>
+    /// <param name="name">The name of the constructor.</param>
+    public virtual void WriteStartConstructor(string name)
+    {
+      AutoComplete(JsonToken.StartConstructor);
+      Push(JsonContainerType.Constructor);
+    }
+
+    /// <summary>
+    /// Writes the end constructor.
+    /// </summary>
+    public virtual void WriteEndConstructor()
+    {
+      AutoCompleteClose(JsonToken.EndConstructor);
+    }
+
+    /// <summary>
+    /// Writes the property name of a name/value pair on a Json object.
+    /// </summary>
+    /// <param name="name">The name of the property.</param>
+    public virtual void WritePropertyName(string name)
+    {
+      _currentPosition.PropertyName = name;
+      AutoComplete(JsonToken.PropertyName);
+    }
+
+    /// <summary>
+    /// Writes the end of the current Json object or array.
+    /// </summary>
+    public virtual void WriteEnd()
+    {
+      WriteEnd(Peek());
+    }
+
+    /// <summary>
+    /// Writes the current <see cref="JsonReader"/> token.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> to read the token from.</param>
+    public void WriteToken(JsonReader reader)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+
+      int initialDepth;
+
+      if (reader.TokenType == JsonToken.None)
+        initialDepth = -1;
+      else if (!IsStartToken(reader.TokenType))
+        initialDepth = reader.Depth + 1;
+      else
+        initialDepth = reader.Depth;
+
+      WriteToken(reader, initialDepth);
+    }
+
+    internal void WriteToken(JsonReader reader, int initialDepth)
+    {
+      do
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.None:
+            // read to next
+            break;
+          case JsonToken.StartObject:
+            WriteStartObject();
+            break;
+          case JsonToken.StartArray:
+            WriteStartArray();
+            break;
+          case JsonToken.StartConstructor:
+            string constructorName = reader.Value.ToString();
+            // write a JValue date when the constructor is for a date
+            if (string.Equals(constructorName, "Date", StringComparison.Ordinal))
+              WriteConstructorDate(reader);
+            else
+              WriteStartConstructor(reader.Value.ToString());
+            break;
+          case JsonToken.PropertyName:
+            WritePropertyName(reader.Value.ToString());
+            break;
+          case JsonToken.Comment:
+            WriteComment(reader.Value.ToString());
+            break;
+          case JsonToken.Integer:
+            WriteValue(Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture));
+            break;
+          case JsonToken.Float:
+            WriteValue(Convert.ToDouble(reader.Value, CultureInfo.InvariantCulture));
+            break;
+          case JsonToken.String:
+            WriteValue(reader.Value.ToString());
+            break;
+          case JsonToken.Boolean:
+            WriteValue(Convert.ToBoolean(reader.Value, CultureInfo.InvariantCulture));
+            break;
+          case JsonToken.Null:
+            WriteNull();
+            break;
+          case JsonToken.Undefined:
+            WriteUndefined();
+            break;
+          case JsonToken.EndObject:
+            WriteEndObject();
+            break;
+          case JsonToken.EndArray:
+            WriteEndArray();
+            break;
+          case JsonToken.EndConstructor:
+            WriteEndConstructor();
+            break;
+          case JsonToken.Date:
+            WriteValue((DateTime)reader.Value);
+            break;
+          case JsonToken.Raw:
+            WriteRawValue((string)reader.Value);
+            break;
+          case JsonToken.Bytes:
+            WriteValue((byte[])reader.Value);
+            break;
+          default:
+            throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", reader.TokenType, "Unexpected token type.");
+        }
+      }
+      while (
+        // stop if we have reached the end of the token being read
+        initialDepth - 1 < reader.Depth - (IsEndToken(reader.TokenType) ? 1 : 0)
+        && reader.Read());
+    }
+
+    private void WriteConstructorDate(JsonReader reader)
+    {
+      if (!reader.Read())
+        throw new Exception("Unexpected end when reading date constructor.");
+      if (reader.TokenType != JsonToken.Integer)
+        throw new Exception("Unexpected token when reading date constructor. Expected Integer, got " + reader.TokenType);
+
+      long ticks = (long)reader.Value;
+      DateTime date = JsonConvert.ConvertJavaScriptTicksToDateTime(ticks);
+
+      if (!reader.Read())
+        throw new Exception("Unexpected end when reading date constructor.");
+      if (reader.TokenType != JsonToken.EndConstructor)
+        throw new Exception("Unexpected token when reading date constructor. Expected EndConstructor, got " + reader.TokenType);
+
+      WriteValue(date);
+    }
+
+    private bool IsEndToken(JsonToken token)
+    {
+      switch (token)
+      {
+        case JsonToken.EndObject:
+        case JsonToken.EndArray:
+        case JsonToken.EndConstructor:
+          return true;
+        default:
+          return false;
+      }
+    }
+
+    private bool IsStartToken(JsonToken token)
+    {
+      switch (token)
+      {
+        case JsonToken.StartObject:
+        case JsonToken.StartArray:
+        case JsonToken.StartConstructor:
+          return true;
+        default:
+          return false;
+      }
+    }
+
+    private void WriteEnd(JsonContainerType type)
+    {
+      switch (type)
+      {
+        case JsonContainerType.Object:
+          WriteEndObject();
+          break;
+        case JsonContainerType.Array:
+          WriteEndArray();
+          break;
+        case JsonContainerType.Constructor:
+          WriteEndConstructor();
+          break;
+        default:
+          throw new JsonWriterException("Unexpected type when writing end: " + type);
+      }
+    }
+
+    private void AutoCompleteAll()
+    {
+      while (Top > 0)
+      {
+        WriteEnd();
+      }
+    }
+
+    private JsonContainerType GetTypeForCloseToken(JsonToken token)
+    {
+      switch (token)
+      {
+        case JsonToken.EndObject:
+          return JsonContainerType.Object;
+        case JsonToken.EndArray:
+          return JsonContainerType.Array;
+        case JsonToken.EndConstructor:
+          return JsonContainerType.Constructor;
+        default:
+          throw new JsonWriterException("No type for token: " + token);
+      }
+    }
+
+    private JsonToken GetCloseTokenForType(JsonContainerType type)
+    {
+      switch (type)
+      {
+        case JsonContainerType.Object:
+          return JsonToken.EndObject;
+        case JsonContainerType.Array:
+          return JsonToken.EndArray;
+        case JsonContainerType.Constructor:
+          return JsonToken.EndConstructor;
+        default:
+          throw new JsonWriterException("No close token for type: " + type);
+      }
+    }
+
+    private void AutoCompleteClose(JsonToken tokenBeingClosed)
+    {
+      // write closing symbol and calculate new state
+
+      int levelsToComplete = 0;
+      JsonContainerType type = GetTypeForCloseToken(tokenBeingClosed);
+
+      if (_currentPosition.Type == type)
+      {
+        levelsToComplete = 1;
+      }
+      else
+      {
+        int top = Top - 2;
+        for (int i = top; i >= 0; i--)
+        {
+          int currentLevel = top - i;
+
+          if (_stack[currentLevel].Type == type)
+          {
+            levelsToComplete = i + 2;
+            break;
+          }
+        }
+      }
+
+      if (levelsToComplete == 0)
+        throw new JsonWriterException("No token to close.");
+
+      for (int i = 0; i < levelsToComplete; i++)
+      {
+        JsonToken token = GetCloseTokenForType(Pop());
+
+        if (_formatting == Formatting.Indented)
+        {
+          if (_currentState != State.ObjectStart && _currentState != State.ArrayStart)
+            WriteIndent();
+        }
+
+        WriteEnd(token);
+
+        JsonContainerType currentLevelType = Peek();
+
+        switch (currentLevelType)
+        {
+          case JsonContainerType.Object:
+            _currentState = State.Object;
+            break;
+          case JsonContainerType.Array:
+            _currentState = State.Array;
+            break;
+          case JsonContainerType.Constructor:
+            _currentState = State.Array;
+            break;
+          case JsonContainerType.None:
+            _currentState = State.Start;
+            break;
+          default:
+            throw new JsonWriterException("Unknown JsonType: " + currentLevelType);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Writes the specified end token.
+    /// </summary>
+    /// <param name="token">The end token to write.</param>
+    protected virtual void WriteEnd(JsonToken token)
+    {
+    }
+
+    /// <summary>
+    /// Writes indent characters.
+    /// </summary>
+    protected virtual void WriteIndent()
+    {
+    }
+
+    /// <summary>
+    /// Writes the JSON value delimiter.
+    /// </summary>
+    protected virtual void WriteValueDelimiter()
+    {
+    }
+
+    /// <summary>
+    /// Writes an indent space.
+    /// </summary>
+    protected virtual void WriteIndentSpace()
+    {
+    }
+
+    internal void AutoComplete(JsonToken tokenBeingWritten)
+    {
+      if (tokenBeingWritten != JsonToken.StartObject
+        && tokenBeingWritten != JsonToken.StartArray
+        && tokenBeingWritten != JsonToken.StartConstructor)
+        UpdateScopeWithFinishedValue();
+
+      // gets new state based on the current state and what is being written
+      State newState = StateArray[(int)tokenBeingWritten][(int)_currentState];
+
+      if (newState == State.Error)
+      {
+        throw new JsonWriterException("Token {0} in state {1} would result in an invalid JSON object.".FormatWith(CultureInfo.InvariantCulture, tokenBeingWritten.ToString(), _currentState.ToString()));
+      }
+
+      if ((_currentState == State.Object || _currentState == State.Array || _currentState == State.Constructor) && tokenBeingWritten != JsonToken.Comment)
+      {
+        WriteValueDelimiter();
+      }
+      else if (_currentState == State.Property)
+      {
+        if (_formatting == Formatting.Indented)
+          WriteIndentSpace();
+      }
+
+      if (_formatting == Formatting.Indented)
+      {
+        WriteState writeState = WriteState;
+
+        // don't indent a property when it is the first token to be written (i.e. at the start)
+        if ((tokenBeingWritten == JsonToken.PropertyName && writeState != WriteState.Start) ||
+            writeState == WriteState.Array || writeState == WriteState.Constructor)
+        {
+          WriteIndent();
+        }
+      }
+
+      _currentState = newState;
+    }
+
+    #region WriteValue methods
+    /// <summary>
+    /// Writes a null value.
+    /// </summary>
+    public virtual void WriteNull()
+    {
+      AutoComplete(JsonToken.Null);
+    }
+
+    /// <summary>
+    /// Writes an undefined value.
+    /// </summary>
+    public virtual void WriteUndefined()
+    {
+      AutoComplete(JsonToken.Undefined);
+    }
+
+    /// <summary>
+    /// Writes raw JSON without changing the writer's state.
+    /// </summary>
+    /// <param name="json">The raw JSON to write.</param>
+    public virtual void WriteRaw(string json)
+    {
+    }
+
+    /// <summary>
+    /// Writes raw JSON where a value is expected and updates the writer's state.
+    /// </summary>
+    /// <param name="json">The raw JSON to write.</param>
+    public virtual void WriteRawValue(string json)
+    {
+      // hack. want writer to change state as if a value had been written
+      AutoComplete(JsonToken.Undefined);
+      WriteRaw(json);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="String"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="String"/> value to write.</param>
+    public virtual void WriteValue(string value)
+    {
+      AutoComplete(JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int32"/> value to write.</param>
+    public virtual void WriteValue(int value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(uint value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int64"/> value to write.</param>
+    public virtual void WriteValue(long value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(ulong value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Single"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Single"/> value to write.</param>
+    public virtual void WriteValue(float value)
+    {
+      AutoComplete(JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Double"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Double"/> value to write.</param>
+    public virtual void WriteValue(double value)
+    {
+      AutoComplete(JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Boolean"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
+    public virtual void WriteValue(bool value)
+    {
+      AutoComplete(JsonToken.Boolean);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int16"/> value to write.</param>
+    public virtual void WriteValue(short value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(ushort value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Char"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Char"/> value to write.</param>
+    public virtual void WriteValue(char value)
+    {
+      AutoComplete(JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Byte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Byte"/> value to write.</param>
+    public virtual void WriteValue(byte value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="SByte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="SByte"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(sbyte value)
+    {
+      AutoComplete(JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Decimal"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
+    public virtual void WriteValue(decimal value)
+    {
+      AutoComplete(JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="DateTime"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
+    public virtual void WriteValue(DateTime value)
+    {
+      AutoComplete(JsonToken.Date);
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Writes a <see cref="DateTimeOffset"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
+    public virtual void WriteValue(DateTimeOffset value)
+    {
+      AutoComplete(JsonToken.Date);
+    }
+#endif
+
+    /// <summary>
+    /// Writes a <see cref="Guid"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Guid"/> value to write.</param>
+    public virtual void WriteValue(Guid value)
+    {
+      AutoComplete(JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="TimeSpan"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
+    public virtual void WriteValue(TimeSpan value)
+    {
+      AutoComplete(JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Int32}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Int32}"/> value to write.</param>
+    public virtual void WriteValue(int? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{UInt32}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{UInt32}"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(uint? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Int64}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Int64}"/> value to write.</param>
+    public virtual void WriteValue(long? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{UInt64}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{UInt64}"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(ulong? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Single}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Single}"/> value to write.</param>
+    public virtual void WriteValue(float? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Double}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Double}"/> value to write.</param>
+    public virtual void WriteValue(double? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Boolean}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Boolean}"/> value to write.</param>
+    public virtual void WriteValue(bool? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Int16}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Int16}"/> value to write.</param>
+    public virtual void WriteValue(short? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{UInt16}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{UInt16}"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(ushort? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Char}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Char}"/> value to write.</param>
+    public virtual void WriteValue(char? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Byte}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Byte}"/> value to write.</param>
+    public virtual void WriteValue(byte? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{SByte}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{SByte}"/> value to write.</param>
+    [CLSCompliant(false)]
+    public virtual void WriteValue(sbyte? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Decimal}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Decimal}"/> value to write.</param>
+    public virtual void WriteValue(decimal? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{DateTime}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{DateTime}"/> value to write.</param>
+    public virtual void WriteValue(DateTime? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Writes a <see cref="Nullable{DateTimeOffset}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{DateTimeOffset}"/> value to write.</param>
+    public virtual void WriteValue(DateTimeOffset? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+#endif
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{Guid}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{Guid}"/> value to write.</param>
+    public virtual void WriteValue(Guid? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Nullable{TimeSpan}"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Nullable{TimeSpan}"/> value to write.</param>
+    public virtual void WriteValue(TimeSpan? value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        WriteValue(value.Value);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="T:Byte[]"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
+    public virtual void WriteValue(byte[] value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        AutoComplete(JsonToken.Bytes);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Uri"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Uri"/> value to write.</param>
+    public virtual void WriteValue(Uri value)
+    {
+      if (value == null)
+        WriteNull();
+      else
+        AutoComplete(JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Object"/> value.
+    /// An error will raised if the value cannot be written as a single JSON token.
+    /// </summary>
+    /// <param name="value">The <see cref="Object"/> value to write.</param>
+    public virtual void WriteValue(object value)
+    {
+      if (value == null)
+      {
+        WriteNull();
+        return;
+      }
+      else if (ConvertUtils.IsConvertible(value))
+      {
+        IConvertible convertible = ConvertUtils.ToConvertible(value);
+
+        switch (convertible.GetTypeCode())
+        {
+          case TypeCode.String:
+            WriteValue(convertible.ToString(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Char:
+            WriteValue(convertible.ToChar(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Boolean:
+            WriteValue(convertible.ToBoolean(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.SByte:
+            WriteValue(convertible.ToSByte(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Int16:
+            WriteValue(convertible.ToInt16(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.UInt16:
+            WriteValue(convertible.ToUInt16(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Int32:
+            WriteValue(convertible.ToInt32(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Byte:
+            WriteValue(convertible.ToByte(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.UInt32:
+            WriteValue(convertible.ToUInt32(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Int64:
+            WriteValue(convertible.ToInt64(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.UInt64:
+            WriteValue(convertible.ToUInt64(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Single:
+            WriteValue(convertible.ToSingle(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Double:
+            WriteValue(convertible.ToDouble(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.DateTime:
+            WriteValue(convertible.ToDateTime(CultureInfo.InvariantCulture));
+            return;
+          case TypeCode.Decimal:
+            WriteValue(convertible.ToDecimal(CultureInfo.InvariantCulture));
+            return;
+#if !NETFX_CORE
+          case TypeCode.DBNull:
+            WriteNull();
+            return;
+#endif
+        }
+      }
+#if !PocketPC && !NET20
+      else if (value is DateTimeOffset)
+      {
+        WriteValue((DateTimeOffset)value);
+        return;
+      }
+#endif
+      else if (value is byte[])
+      {
+        WriteValue((byte[])value);
+        return;
+      }
+      else if (value is Guid)
+      {
+        WriteValue((Guid)value);
+        return;
+      }
+      else if (value is Uri)
+      {
+        WriteValue((Uri)value);
+        return;
+      }
+      else if (value is TimeSpan)
+      {
+        WriteValue((TimeSpan)value);
+        return;
+      }
+
+      throw new ArgumentException("Unsupported type: {0}. Use the JsonSerializer class to get the object's JSON representation.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
+    }
+    #endregion
+
+    /// <summary>
+    /// Writes out a comment <code>/*...*/</code> containing the specified text. 
+    /// </summary>
+    /// <param name="text">Text to place inside the comment.</param>
+    public virtual void WriteComment(string text)
+    {
+      AutoComplete(JsonToken.Comment);
+    }
+
+    /// <summary>
+    /// Writes out the given white space.
+    /// </summary>
+    /// <param name="ws">The string of white space characters.</param>
+    public virtual void WriteWhitespace(string ws)
+    {
+      if (ws != null)
+      {
+        if (!StringUtils.IsWhiteSpace(ws))
+          throw new JsonWriterException("Only white space characters should be used.");
+      }
+    }
+
+
+    void IDisposable.Dispose()
+    {
+      Dispose(true);
+    }
+
+    private void Dispose(bool disposing)
+    {
+      if (_currentState != State.Closed)
+        Close();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonWriterException.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/JsonWriterException.cs
@@ -1,83 +1,83 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-using System.Text;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// The exception thrown when an error occurs while reading Json text.
-  /// </summary>
-#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
-  [Serializable]
-#endif
-  public class JsonWriterException : Exception
-  {
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonWriterException"/> class.
-    /// </summary>
-    public JsonWriterException()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonWriterException"/> class
-    /// with a specified error message.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    public JsonWriterException(string message)
-      : base(message)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonWriterException"/> class
-    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
-    public JsonWriterException(string message, Exception innerException)
-      : base(message, innerException)
-    {
-    }
-
-#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonWriterException"/> class.
-    /// </summary>
-    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
-    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
-    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
-    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
-    public JsonWriterException(SerializationInfo info, StreamingContext context)
-      : base(info, context)
-    {
-    }
-#endif
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// The exception thrown when an error occurs while reading Json text.
+  /// </summary>
+#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
+  [Serializable]
+#endif
+  public class JsonWriterException : Exception
+  {
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonWriterException"/> class.
+    /// </summary>
+    public JsonWriterException()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonWriterException"/> class
+    /// with a specified error message.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    public JsonWriterException(string message)
+      : base(message)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonWriterException"/> class
+    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
+    public JsonWriterException(string message, Exception innerException)
+      : base(message, innerException)
+    {
+    }
+
+#if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonWriterException"/> class.
+    /// </summary>
+    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
+    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
+    public JsonWriterException(SerializationInfo info, StreamingContext context)
+      : base(info, context)
+    {
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/Extensions.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/Extensions.cs
@@ -1,311 +1,311 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Contains the LINQ to JSON extension methods.
-  /// </summary>
-  public static class Extensions
-  {
-    /// <summary>
-    /// Returns a collection of tokens that contains the ancestors of every token in the source collection.
-    /// </summary>
-    /// <typeparam name="T">The type of the objects in source, constrained to <see cref="JToken"/>.</typeparam>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the ancestors of every node in the source collection.</returns>
-    public static IJEnumerable<JToken> Ancestors<T>(this IEnumerable<T> source) where T : JToken
-    {
-      ValidationUtils.ArgumentNotNull(source, "source");
-
-      return source.SelectMany(j => j.Ancestors()).AsJEnumerable();
-    }
-
-    //TODO
-    //public static IEnumerable<JObject> AncestorsAndSelf<T>(this IEnumerable<T> source) where T : JObject
-    //{
-    //  ValidationUtils.ArgumentNotNull(source, "source");
-
-    //  return source.SelectMany(j => j.AncestorsAndSelf());
-    //}
-
-    /// <summary>
-    /// Returns a collection of tokens that contains the descendants of every token in the source collection.
-    /// </summary>
-    /// <typeparam name="T">The type of the objects in source, constrained to <see cref="JContainer"/>.</typeparam>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the descendants of every node in the source collection.</returns>
-    public static IJEnumerable<JToken> Descendants<T>(this IEnumerable<T> source) where T : JContainer
-    {
-      ValidationUtils.ArgumentNotNull(source, "source");
-
-      return source.SelectMany(j => j.Descendants()).AsJEnumerable();
-    }
-
-    //TODO
-    //public static IEnumerable<JObject> DescendantsAndSelf<T>(this IEnumerable<T> source) where T : JContainer
-    //{
-    //  ValidationUtils.ArgumentNotNull(source, "source");
-
-    //  return source.SelectMany(j => j.DescendantsAndSelf());
-    //}
-
-    /// <summary>
-    /// Returns a collection of child properties of every object in the source collection.
-    /// </summary>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JObject"/> that contains the source collection.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JProperty"/> that contains the properties of every object in the source collection.</returns>
-    public static IJEnumerable<JProperty> Properties(this IEnumerable<JObject> source)
-    {
-      ValidationUtils.ArgumentNotNull(source, "source");
-
-      return source.SelectMany(d => d.Properties()).AsJEnumerable();
-    }
-
-    /// <summary>
-    /// Returns a collection of child values of every object in the source collection with the given key.
-    /// </summary>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <param name="key">The token key.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the values of every node in the source collection with the given key.</returns>
-    public static IJEnumerable<JToken> Values(this IEnumerable<JToken> source, object key)
-    {
-      return Values<JToken, JToken>(source, key).AsJEnumerable();
-    }
-
-    /// <summary>
-    /// Returns a collection of child values of every object in the source collection.
-    /// </summary>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the values of every node in the source collection.</returns>
-    public static IJEnumerable<JToken> Values(this IEnumerable<JToken> source)
-    {
-      return source.Values(null);
-    }
-
-    /// <summary>
-    /// Returns a collection of converted child values of every object in the source collection with the given key.
-    /// </summary>
-    /// <typeparam name="U">The type to convert the values to.</typeparam>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <param name="key">The token key.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> that contains the converted values of every node in the source collection with the given key.</returns>
-    public static IEnumerable<U> Values<U>(this IEnumerable<JToken> source, object key)
-    {
-      return Values<JToken, U>(source, key);
-    }
-
-    /// <summary>
-    /// Returns a collection of converted child values of every object in the source collection.
-    /// </summary>
-    /// <typeparam name="U">The type to convert the values to.</typeparam>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> that contains the converted values of every node in the source collection.</returns>
-    public static IEnumerable<U> Values<U>(this IEnumerable<JToken> source)
-    {
-      return Values<JToken, U>(source, null);
-    }
-
-    /// <summary>
-    /// Converts the value.
-    /// </summary>
-    /// <typeparam name="U">The type to convert the value to.</typeparam>
-    /// <param name="value">A <see cref="JToken"/> cast as a <see cref="IEnumerable{T}"/> of <see cref="JToken"/>.</param>
-    /// <returns>A converted value.</returns>
-    public static U Value<U>(this IEnumerable<JToken> value)
-    {
-      return value.Value<JToken, U>();
-    }
-
-    /// <summary>
-    /// Converts the value.
-    /// </summary>
-    /// <typeparam name="T">The source collection type.</typeparam>
-    /// <typeparam name="U">The type to convert the value to.</typeparam>
-    /// <param name="value">A <see cref="JToken"/> cast as a <see cref="IEnumerable{T}"/> of <see cref="JToken"/>.</param>
-    /// <returns>A converted value.</returns>
-    public static U Value<T, U>(this IEnumerable<T> value) where T : JToken
-    {
-      ValidationUtils.ArgumentNotNull(value, "source");
-
-      JToken token = value as JToken;
-      if (token == null)
-        throw new ArgumentException("Source value must be a JToken.");
-
-      return token.Convert<JToken, U>();
-    }
-
-
-    internal static IEnumerable<U> Values<T, U>(this IEnumerable<T> source, object key) where T : JToken
-    {
-      ValidationUtils.ArgumentNotNull(source, "source");
-
-      foreach (JToken token in source)
-      {
-        if (key == null)
-        {
-          if (token is JValue)
-          {
-            yield return Convert<JValue, U>((JValue)token);
-          }
-          else
-          {
-            foreach (JToken t in token.Children())
-            {
-              yield return t.Convert<JToken, U>();
-            }
-          }
-        }
-        else
-        {
-          JToken value = token[key];
-          if (value != null)
-            yield return value.Convert<JToken, U>();
-        }
-      }
-
-      yield break;
-    }
-
-    //TODO
-    //public static IEnumerable<T> InDocumentOrder<T>(this IEnumerable<T> source) where T : JObject;
-
-    //public static IEnumerable<JToken> Children<T>(this IEnumerable<T> source) where T : JToken
-    //{
-    //  ValidationUtils.ArgumentNotNull(source, "source");
-
-    //  return source.SelectMany(c => c.Children());
-    //}
-
-    /// <summary>
-    /// Returns a collection of child tokens of every array in the source collection.
-    /// </summary>
-    /// <typeparam name="T">The source collection type.</typeparam>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the values of every node in the source collection.</returns>
-    public static IJEnumerable<JToken> Children<T>(this IEnumerable<T> source) where T : JToken
-    {
-      return Children<T, JToken>(source).AsJEnumerable();
-    }
-
-    /// <summary>
-    /// Returns a collection of converted child tokens of every array in the source collection.
-    /// </summary>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <typeparam name="U">The type to convert the values to.</typeparam>
-    /// <typeparam name="T">The source collection type.</typeparam>
-    /// <returns>An <see cref="IEnumerable{T}"/> that contains the converted values of every node in the source collection.</returns>
-    public static IEnumerable<U> Children<T, U>(this IEnumerable<T> source) where T : JToken
-    {
-      ValidationUtils.ArgumentNotNull(source, "source");
-
-      return source.SelectMany(c => c.Children()).Convert<JToken, U>();
-    }
-
-    internal static IEnumerable<U> Convert<T, U>(this IEnumerable<T> source) where T : JToken
-    {
-      ValidationUtils.ArgumentNotNull(source, "source");
-
-      foreach (T token in source)
-      {
-        yield return Convert<JToken, U>(token);
-      }
-    }
-
-    internal static U Convert<T, U>(this T token) where T : JToken
-    {
-      if (token == null)
-        return default(U);
-
-      if (token is U
-        // don't want to cast JValue to its interfaces, want to get the internal value
-        && typeof(U) != typeof(IComparable) && typeof(U) != typeof(IFormattable))
-      {
-        // HACK
-        return (U)(object)token;
-      }
-      else
-      {
-        JValue value = token as JValue;
-        if (value == null)
-          throw new InvalidCastException("Cannot cast {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, token.GetType(), typeof(T)));
-
-        if (value.Value is U)
-          return (U)value.Value;
-
-        Type targetType = typeof(U);
-
-        if (ReflectionUtils.IsNullableType(targetType))
-        {
-          if (value.Value == null)
-            return default(U);
-
-          targetType = Nullable.GetUnderlyingType(targetType);
-        }
-
-        return (U)System.Convert.ChangeType(value.Value, targetType, CultureInfo.InvariantCulture);
-      }
-    }
-
-    //TODO
-    //public static void Remove<T>(this IEnumerable<T> source) where T : JContainer;
-
-    /// <summary>
-    /// Returns the input typed as <see cref="IJEnumerable{T}"/>.
-    /// </summary>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <returns>The input typed as <see cref="IJEnumerable{T}"/>.</returns>
-    public static IJEnumerable<JToken> AsJEnumerable(this IEnumerable<JToken> source)
-    {
-      return source.AsJEnumerable<JToken>();
-    }
-
-    /// <summary>
-    /// Returns the input typed as <see cref="IJEnumerable{T}"/>.
-    /// </summary>
-    /// <typeparam name="T">The source collection type.</typeparam>
-    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
-    /// <returns>The input typed as <see cref="IJEnumerable{T}"/>.</returns>
-    public static IJEnumerable<T> AsJEnumerable<T>(this IEnumerable<T> source) where T : JToken
-    {
-      if (source == null)
-        return null;
-      else if (source is IJEnumerable<T>)
-        return (IJEnumerable<T>)source;
-      else
-        return new JEnumerable<T>(source);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Contains the LINQ to JSON extension methods.
+  /// </summary>
+  public static class Extensions
+  {
+    /// <summary>
+    /// Returns a collection of tokens that contains the ancestors of every token in the source collection.
+    /// </summary>
+    /// <typeparam name="T">The type of the objects in source, constrained to <see cref="JToken"/>.</typeparam>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the ancestors of every node in the source collection.</returns>
+    public static IJEnumerable<JToken> Ancestors<T>(this IEnumerable<T> source) where T : JToken
+    {
+      ValidationUtils.ArgumentNotNull(source, "source");
+
+      return source.SelectMany(j => j.Ancestors()).AsJEnumerable();
+    }
+
+    //TODO
+    //public static IEnumerable<JObject> AncestorsAndSelf<T>(this IEnumerable<T> source) where T : JObject
+    //{
+    //  ValidationUtils.ArgumentNotNull(source, "source");
+
+    //  return source.SelectMany(j => j.AncestorsAndSelf());
+    //}
+
+    /// <summary>
+    /// Returns a collection of tokens that contains the descendants of every token in the source collection.
+    /// </summary>
+    /// <typeparam name="T">The type of the objects in source, constrained to <see cref="JContainer"/>.</typeparam>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the descendants of every node in the source collection.</returns>
+    public static IJEnumerable<JToken> Descendants<T>(this IEnumerable<T> source) where T : JContainer
+    {
+      ValidationUtils.ArgumentNotNull(source, "source");
+
+      return source.SelectMany(j => j.Descendants()).AsJEnumerable();
+    }
+
+    //TODO
+    //public static IEnumerable<JObject> DescendantsAndSelf<T>(this IEnumerable<T> source) where T : JContainer
+    //{
+    //  ValidationUtils.ArgumentNotNull(source, "source");
+
+    //  return source.SelectMany(j => j.DescendantsAndSelf());
+    //}
+
+    /// <summary>
+    /// Returns a collection of child properties of every object in the source collection.
+    /// </summary>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JObject"/> that contains the source collection.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JProperty"/> that contains the properties of every object in the source collection.</returns>
+    public static IJEnumerable<JProperty> Properties(this IEnumerable<JObject> source)
+    {
+      ValidationUtils.ArgumentNotNull(source, "source");
+
+      return source.SelectMany(d => d.Properties()).AsJEnumerable();
+    }
+
+    /// <summary>
+    /// Returns a collection of child values of every object in the source collection with the given key.
+    /// </summary>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <param name="key">The token key.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the values of every node in the source collection with the given key.</returns>
+    public static IJEnumerable<JToken> Values(this IEnumerable<JToken> source, object key)
+    {
+      return Values<JToken, JToken>(source, key).AsJEnumerable();
+    }
+
+    /// <summary>
+    /// Returns a collection of child values of every object in the source collection.
+    /// </summary>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the values of every node in the source collection.</returns>
+    public static IJEnumerable<JToken> Values(this IEnumerable<JToken> source)
+    {
+      return source.Values(null);
+    }
+
+    /// <summary>
+    /// Returns a collection of converted child values of every object in the source collection with the given key.
+    /// </summary>
+    /// <typeparam name="U">The type to convert the values to.</typeparam>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <param name="key">The token key.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> that contains the converted values of every node in the source collection with the given key.</returns>
+    public static IEnumerable<U> Values<U>(this IEnumerable<JToken> source, object key)
+    {
+      return Values<JToken, U>(source, key);
+    }
+
+    /// <summary>
+    /// Returns a collection of converted child values of every object in the source collection.
+    /// </summary>
+    /// <typeparam name="U">The type to convert the values to.</typeparam>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> that contains the converted values of every node in the source collection.</returns>
+    public static IEnumerable<U> Values<U>(this IEnumerable<JToken> source)
+    {
+      return Values<JToken, U>(source, null);
+    }
+
+    /// <summary>
+    /// Converts the value.
+    /// </summary>
+    /// <typeparam name="U">The type to convert the value to.</typeparam>
+    /// <param name="value">A <see cref="JToken"/> cast as a <see cref="IEnumerable{T}"/> of <see cref="JToken"/>.</param>
+    /// <returns>A converted value.</returns>
+    public static U Value<U>(this IEnumerable<JToken> value)
+    {
+      return value.Value<JToken, U>();
+    }
+
+    /// <summary>
+    /// Converts the value.
+    /// </summary>
+    /// <typeparam name="T">The source collection type.</typeparam>
+    /// <typeparam name="U">The type to convert the value to.</typeparam>
+    /// <param name="value">A <see cref="JToken"/> cast as a <see cref="IEnumerable{T}"/> of <see cref="JToken"/>.</param>
+    /// <returns>A converted value.</returns>
+    public static U Value<T, U>(this IEnumerable<T> value) where T : JToken
+    {
+      ValidationUtils.ArgumentNotNull(value, "source");
+
+      JToken token = value as JToken;
+      if (token == null)
+        throw new ArgumentException("Source value must be a JToken.");
+
+      return token.Convert<JToken, U>();
+    }
+
+
+    internal static IEnumerable<U> Values<T, U>(this IEnumerable<T> source, object key) where T : JToken
+    {
+      ValidationUtils.ArgumentNotNull(source, "source");
+
+      foreach (JToken token in source)
+      {
+        if (key == null)
+        {
+          if (token is JValue)
+          {
+            yield return Convert<JValue, U>((JValue)token);
+          }
+          else
+          {
+            foreach (JToken t in token.Children())
+            {
+              yield return t.Convert<JToken, U>();
+            }
+          }
+        }
+        else
+        {
+          JToken value = token[key];
+          if (value != null)
+            yield return value.Convert<JToken, U>();
+        }
+      }
+
+      yield break;
+    }
+
+    //TODO
+    //public static IEnumerable<T> InDocumentOrder<T>(this IEnumerable<T> source) where T : JObject;
+
+    //public static IEnumerable<JToken> Children<T>(this IEnumerable<T> source) where T : JToken
+    //{
+    //  ValidationUtils.ArgumentNotNull(source, "source");
+
+    //  return source.SelectMany(c => c.Children());
+    //}
+
+    /// <summary>
+    /// Returns a collection of child tokens of every array in the source collection.
+    /// </summary>
+    /// <typeparam name="T">The source collection type.</typeparam>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the values of every node in the source collection.</returns>
+    public static IJEnumerable<JToken> Children<T>(this IEnumerable<T> source) where T : JToken
+    {
+      return Children<T, JToken>(source).AsJEnumerable();
+    }
+
+    /// <summary>
+    /// Returns a collection of converted child tokens of every array in the source collection.
+    /// </summary>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <typeparam name="U">The type to convert the values to.</typeparam>
+    /// <typeparam name="T">The source collection type.</typeparam>
+    /// <returns>An <see cref="IEnumerable{T}"/> that contains the converted values of every node in the source collection.</returns>
+    public static IEnumerable<U> Children<T, U>(this IEnumerable<T> source) where T : JToken
+    {
+      ValidationUtils.ArgumentNotNull(source, "source");
+
+      return source.SelectMany(c => c.Children()).Convert<JToken, U>();
+    }
+
+    internal static IEnumerable<U> Convert<T, U>(this IEnumerable<T> source) where T : JToken
+    {
+      ValidationUtils.ArgumentNotNull(source, "source");
+
+      foreach (T token in source)
+      {
+        yield return Convert<JToken, U>(token);
+      }
+    }
+
+    internal static U Convert<T, U>(this T token) where T : JToken
+    {
+      if (token == null)
+        return default(U);
+
+      if (token is U
+        // don't want to cast JValue to its interfaces, want to get the internal value
+        && typeof(U) != typeof(IComparable) && typeof(U) != typeof(IFormattable))
+      {
+        // HACK
+        return (U)(object)token;
+      }
+      else
+      {
+        JValue value = token as JValue;
+        if (value == null)
+          throw new InvalidCastException("Cannot cast {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, token.GetType(), typeof(T)));
+
+        if (value.Value is U)
+          return (U)value.Value;
+
+        Type targetType = typeof(U);
+
+        if (ReflectionUtils.IsNullableType(targetType))
+        {
+          if (value.Value == null)
+            return default(U);
+
+          targetType = Nullable.GetUnderlyingType(targetType);
+        }
+
+        return (U)System.Convert.ChangeType(value.Value, targetType, CultureInfo.InvariantCulture);
+      }
+    }
+
+    //TODO
+    //public static void Remove<T>(this IEnumerable<T> source) where T : JContainer;
+
+    /// <summary>
+    /// Returns the input typed as <see cref="IJEnumerable{T}"/>.
+    /// </summary>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <returns>The input typed as <see cref="IJEnumerable{T}"/>.</returns>
+    public static IJEnumerable<JToken> AsJEnumerable(this IEnumerable<JToken> source)
+    {
+      return source.AsJEnumerable<JToken>();
+    }
+
+    /// <summary>
+    /// Returns the input typed as <see cref="IJEnumerable{T}"/>.
+    /// </summary>
+    /// <typeparam name="T">The source collection type.</typeparam>
+    /// <param name="source">An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> that contains the source collection.</param>
+    /// <returns>The input typed as <see cref="IJEnumerable{T}"/>.</returns>
+    public static IJEnumerable<T> AsJEnumerable<T>(this IEnumerable<T> source) where T : JToken
+    {
+      if (source == null)
+        return null;
+      else if (source is IJEnumerable<T>)
+        return (IJEnumerable<T>)source;
+      else
+        return new JEnumerable<T>(source);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/IJEnumerable.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/IJEnumerable.cs
@@ -1,21 +1,21 @@
-﻿using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a collection of <see cref="JToken"/> objects.
-  /// </summary>
-  /// <typeparam name="T">The type of token</typeparam>
-  public interface IJEnumerable<
-#if !(NET20 || NET35 || SILVERLIGHT)
-    out
-#endif
-    T> : IEnumerable<T> where T : JToken
-  {
-    /// <summary>
-    /// Gets the <see cref="IJEnumerable{JToken}"/> with the specified key.
-    /// </summary>
-    /// <value></value>
-    IJEnumerable<JToken> this[object key] { get; }
-  }
+﻿using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a collection of <see cref="JToken"/> objects.
+  /// </summary>
+  /// <typeparam name="T">The type of token</typeparam>
+  public interface IJEnumerable<
+#if !(NET20 || NET35 || SILVERLIGHT)
+    out
+#endif
+    T> : IEnumerable<T> where T : JToken
+  {
+    /// <summary>
+    /// Gets the <see cref="IJEnumerable{JToken}"/> with the specified key.
+    /// </summary>
+    /// <value></value>
+    IJEnumerable<JToken> this[object key] { get; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JArray.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JArray.cs
@@ -1,327 +1,327 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Utilities;
-using System.IO;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a JSON array.
-  /// </summary>
-  public class JArray : JContainer, IList<JToken>
-  {
-    private readonly IList<JToken> _values = new List<JToken>();
-
-    /// <summary>
-    /// Gets the container's children tokens.
-    /// </summary>
-    /// <value>The container's children tokens.</value>
-    protected override IList<JToken> ChildrenTokens
-    {
-      get { return _values; }
-    }
-
-    /// <summary>
-    /// Gets the node type for this <see cref="JToken"/>.
-    /// </summary>
-    /// <value>The type.</value>
-    public override JTokenType Type
-    {
-      get { return JTokenType.Array; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JArray"/> class.
-    /// </summary>
-    public JArray()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JArray"/> class from another <see cref="JArray"/> object.
-    /// </summary>
-    /// <param name="other">A <see cref="JArray"/> object to copy from.</param>
-    public JArray(JArray other)
-      : base(other)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JArray"/> class with the specified content.
-    /// </summary>
-    /// <param name="content">The contents of the array.</param>
-    public JArray(params object[] content)
-      : this((object)content)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JArray"/> class with the specified content.
-    /// </summary>
-    /// <param name="content">The contents of the array.</param>
-    public JArray(object content)
-    {
-      Add(content);
-    }
-
-    internal override bool DeepEquals(JToken node)
-    {
-      JArray t = node as JArray;
-      return (t != null && ContentsEqual(t));
-    }
-
-    internal override JToken CloneToken()
-    {
-      return new JArray(this);
-    }
-
-    /// <summary>
-    /// Loads an <see cref="JArray"/> from a <see cref="JsonReader"/>. 
-    /// </summary>
-    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JArray"/>.</param>
-    /// <returns>A <see cref="JArray"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
-    public static new JArray Load(JsonReader reader)
-    {
-      if (reader.TokenType == JsonToken.None)
-      {
-        if (!reader.Read())
-          throw new Exception("Error reading JArray from JsonReader.");
-      }
-      if (reader.TokenType != JsonToken.StartArray)
-        throw new Exception("Error reading JArray from JsonReader. Current JsonReader item is not an array: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-
-      JArray a = new JArray();
-      a.SetLineInfo(reader as IJsonLineInfo);
-
-      a.ReadTokenFrom(reader);
-
-      return a;
-    }
-
-    /// <summary>
-    /// Load a <see cref="JArray"/> from a string that contains JSON.
-    /// </summary>
-    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
-    /// <returns>A <see cref="JArray"/> populated from the string that contains JSON.</returns>
-    public static new JArray Parse(string json)
-    {
-      JsonReader jsonReader = new JsonTextReader(new StringReader(json));
-
-      JArray a = Load(jsonReader);
-
-      if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
-        throw new Exception("Additional text found in JSON string after parsing content.");
-
-      return a;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JArray"/> from an object.
-    /// </summary>
-    /// <param name="o">The object that will be used to create <see cref="JArray"/>.</param>
-    /// <returns>A <see cref="JArray"/> with the values of the specified object</returns>
-    public static new JArray FromObject(object o)
-    {
-      return FromObject(o, new JsonSerializer());
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JArray"/> from an object.
-    /// </summary>
-    /// <param name="o">The object that will be used to create <see cref="JArray"/>.</param>
-    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used to read the object.</param>
-    /// <returns>A <see cref="JArray"/> with the values of the specified object</returns>
-    public static new JArray FromObject(object o, JsonSerializer jsonSerializer)
-    {
-      JToken token = FromObjectInternal(o, jsonSerializer);
-
-      if (token.Type != JTokenType.Array)
-        throw new ArgumentException("Object serialized to {0}. JArray instance expected.".FormatWith(CultureInfo.InvariantCulture, token.Type));
-
-      return (JArray)token;
-    }
-
-    /// <summary>
-    /// Writes this token to a <see cref="JsonWriter"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
-    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
-    {
-      writer.WriteStartArray();
-
-      foreach (JToken token in ChildrenTokens)
-      {
-        token.WriteTo(writer, converters);
-      }
-
-      writer.WriteEndArray();
-    }
-
-    /// <summary>
-    /// Gets the <see cref="JToken"/> with the specified key.
-    /// </summary>
-    /// <value>The <see cref="JToken"/> with the specified key.</value>
-    public override JToken this[object key]
-    {
-      get
-      {
-        ValidationUtils.ArgumentNotNull(key, "o");
-
-        if (!(key is int))
-          throw new ArgumentException("Accessed JArray values with invalid key value: {0}. Array position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
-
-        return GetItem((int)key);
-      }
-      set
-      {
-        ValidationUtils.ArgumentNotNull(key, "o");
-
-        if (!(key is int))
-          throw new ArgumentException("Set JArray values with invalid key value: {0}. Array position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
-
-        SetItem((int)key, value);
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the <see cref="Newtonsoft.Json.Linq.JToken"/> at the specified index.
-    /// </summary>
-    /// <value></value>
-    public JToken this[int index]
-    {
-      get { return GetItem(index); }
-      set { SetItem(index, value); }
-    }
-
-    #region IList<JToken> Members
-
-    /// <summary>
-    /// Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>.
-    /// </summary>
-    /// <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
-    /// <returns>
-    /// The index of <paramref name="item"/> if found in the list; otherwise, -1.
-    /// </returns>
-    public int IndexOf(JToken item)
-    {
-      return IndexOfItem(item);
-    }
-
-    /// <summary>
-    /// Inserts an item to the <see cref="T:System.Collections.Generic.IList`1"/> at the specified index.
-    /// </summary>
-    /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
-    /// <param name="item">The object to insert into the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
-    /// <exception cref="T:System.ArgumentOutOfRangeException">
-    /// 	<paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception>
-    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception>
-    public void Insert(int index, JToken item)
-    {
-      InsertItem(index, item, false);
-    }
-
-    /// <summary>
-    /// Removes the <see cref="T:System.Collections.Generic.IList`1"/> item at the specified index.
-    /// </summary>
-    /// <param name="index">The zero-based index of the item to remove.</param>
-    /// <exception cref="T:System.ArgumentOutOfRangeException">
-    /// 	<paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception>
-    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception>
-    public void RemoveAt(int index)
-    {
-      RemoveItemAt(index);
-    }
-
-    #endregion
-
-    #region ICollection<JToken> Members
-
-    /// <summary>
-    /// Adds an item to the <see cref="T:System.Collections.Generic.ICollection`1"/>.
-    /// </summary>
-    /// <param name="item">The object to add to the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
-    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>
-    public void Add(JToken item)
-    {
-      Add((object)item);
-    }
-
-    /// <summary>
-    /// Removes all items from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
-    /// </summary>
-    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only. </exception>
-    public void Clear()
-    {
-      ClearItems();
-    }
-
-    /// <summary>
-    /// Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value.
-    /// </summary>
-    /// <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
-    /// <returns>
-    /// true if <paramref name="item"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false.
-    /// </returns>
-    public bool Contains(JToken item)
-    {
-      return ContainsItem(item);
-    }
-
-    void ICollection<JToken>.CopyTo(JToken[] array, int arrayIndex)
-    {
-      CopyItemsTo(array, arrayIndex);
-    }
-
-    bool ICollection<JToken>.IsReadOnly
-    {
-      get { return false; }
-    }
-
-    /// <summary>
-    /// Removes the first occurrence of a specific object from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
-    /// </summary>
-    /// <param name="item">The object to remove from the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
-    /// <returns>
-    /// true if <paramref name="item"/> was successfully removed from the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false. This method also returns false if <paramref name="item"/> is not found in the original <see cref="T:System.Collections.Generic.ICollection`1"/>.
-    /// </returns>
-    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>
-    public bool Remove(JToken item)
-    {
-      return RemoveItem(item);
-    }
-
-    #endregion
-
-    internal override int GetDeepHashCode()
-    {
-      return ContentsHashCode();
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Utilities;
+using System.IO;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a JSON array.
+  /// </summary>
+  public class JArray : JContainer, IList<JToken>
+  {
+    private readonly IList<JToken> _values = new List<JToken>();
+
+    /// <summary>
+    /// Gets the container's children tokens.
+    /// </summary>
+    /// <value>The container's children tokens.</value>
+    protected override IList<JToken> ChildrenTokens
+    {
+      get { return _values; }
+    }
+
+    /// <summary>
+    /// Gets the node type for this <see cref="JToken"/>.
+    /// </summary>
+    /// <value>The type.</value>
+    public override JTokenType Type
+    {
+      get { return JTokenType.Array; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JArray"/> class.
+    /// </summary>
+    public JArray()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JArray"/> class from another <see cref="JArray"/> object.
+    /// </summary>
+    /// <param name="other">A <see cref="JArray"/> object to copy from.</param>
+    public JArray(JArray other)
+      : base(other)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JArray"/> class with the specified content.
+    /// </summary>
+    /// <param name="content">The contents of the array.</param>
+    public JArray(params object[] content)
+      : this((object)content)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JArray"/> class with the specified content.
+    /// </summary>
+    /// <param name="content">The contents of the array.</param>
+    public JArray(object content)
+    {
+      Add(content);
+    }
+
+    internal override bool DeepEquals(JToken node)
+    {
+      JArray t = node as JArray;
+      return (t != null && ContentsEqual(t));
+    }
+
+    internal override JToken CloneToken()
+    {
+      return new JArray(this);
+    }
+
+    /// <summary>
+    /// Loads an <see cref="JArray"/> from a <see cref="JsonReader"/>. 
+    /// </summary>
+    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JArray"/>.</param>
+    /// <returns>A <see cref="JArray"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
+    public static new JArray Load(JsonReader reader)
+    {
+      if (reader.TokenType == JsonToken.None)
+      {
+        if (!reader.Read())
+          throw new Exception("Error reading JArray from JsonReader.");
+      }
+      if (reader.TokenType != JsonToken.StartArray)
+        throw new Exception("Error reading JArray from JsonReader. Current JsonReader item is not an array: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+
+      JArray a = new JArray();
+      a.SetLineInfo(reader as IJsonLineInfo);
+
+      a.ReadTokenFrom(reader);
+
+      return a;
+    }
+
+    /// <summary>
+    /// Load a <see cref="JArray"/> from a string that contains JSON.
+    /// </summary>
+    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
+    /// <returns>A <see cref="JArray"/> populated from the string that contains JSON.</returns>
+    public static new JArray Parse(string json)
+    {
+      JsonReader jsonReader = new JsonTextReader(new StringReader(json));
+
+      JArray a = Load(jsonReader);
+
+      if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
+        throw new Exception("Additional text found in JSON string after parsing content.");
+
+      return a;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JArray"/> from an object.
+    /// </summary>
+    /// <param name="o">The object that will be used to create <see cref="JArray"/>.</param>
+    /// <returns>A <see cref="JArray"/> with the values of the specified object</returns>
+    public static new JArray FromObject(object o)
+    {
+      return FromObject(o, new JsonSerializer());
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JArray"/> from an object.
+    /// </summary>
+    /// <param name="o">The object that will be used to create <see cref="JArray"/>.</param>
+    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used to read the object.</param>
+    /// <returns>A <see cref="JArray"/> with the values of the specified object</returns>
+    public static new JArray FromObject(object o, JsonSerializer jsonSerializer)
+    {
+      JToken token = FromObjectInternal(o, jsonSerializer);
+
+      if (token.Type != JTokenType.Array)
+        throw new ArgumentException("Object serialized to {0}. JArray instance expected.".FormatWith(CultureInfo.InvariantCulture, token.Type));
+
+      return (JArray)token;
+    }
+
+    /// <summary>
+    /// Writes this token to a <see cref="JsonWriter"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
+    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
+    {
+      writer.WriteStartArray();
+
+      foreach (JToken token in ChildrenTokens)
+      {
+        token.WriteTo(writer, converters);
+      }
+
+      writer.WriteEndArray();
+    }
+
+    /// <summary>
+    /// Gets the <see cref="JToken"/> with the specified key.
+    /// </summary>
+    /// <value>The <see cref="JToken"/> with the specified key.</value>
+    public override JToken this[object key]
+    {
+      get
+      {
+        ValidationUtils.ArgumentNotNull(key, "o");
+
+        if (!(key is int))
+          throw new ArgumentException("Accessed JArray values with invalid key value: {0}. Array position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
+
+        return GetItem((int)key);
+      }
+      set
+      {
+        ValidationUtils.ArgumentNotNull(key, "o");
+
+        if (!(key is int))
+          throw new ArgumentException("Set JArray values with invalid key value: {0}. Array position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
+
+        SetItem((int)key, value);
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets the <see cref="Newtonsoft.Json.Linq.JToken"/> at the specified index.
+    /// </summary>
+    /// <value></value>
+    public JToken this[int index]
+    {
+      get { return GetItem(index); }
+      set { SetItem(index, value); }
+    }
+
+    #region IList<JToken> Members
+
+    /// <summary>
+    /// Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>.
+    /// </summary>
+    /// <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
+    /// <returns>
+    /// The index of <paramref name="item"/> if found in the list; otherwise, -1.
+    /// </returns>
+    public int IndexOf(JToken item)
+    {
+      return IndexOfItem(item);
+    }
+
+    /// <summary>
+    /// Inserts an item to the <see cref="T:System.Collections.Generic.IList`1"/> at the specified index.
+    /// </summary>
+    /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+    /// <param name="item">The object to insert into the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
+    /// <exception cref="T:System.ArgumentOutOfRangeException">
+    /// 	<paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception>
+    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception>
+    public void Insert(int index, JToken item)
+    {
+      InsertItem(index, item, false);
+    }
+
+    /// <summary>
+    /// Removes the <see cref="T:System.Collections.Generic.IList`1"/> item at the specified index.
+    /// </summary>
+    /// <param name="index">The zero-based index of the item to remove.</param>
+    /// <exception cref="T:System.ArgumentOutOfRangeException">
+    /// 	<paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception>
+    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception>
+    public void RemoveAt(int index)
+    {
+      RemoveItemAt(index);
+    }
+
+    #endregion
+
+    #region ICollection<JToken> Members
+
+    /// <summary>
+    /// Adds an item to the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+    /// </summary>
+    /// <param name="item">The object to add to the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>
+    public void Add(JToken item)
+    {
+      Add((object)item);
+    }
+
+    /// <summary>
+    /// Removes all items from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+    /// </summary>
+    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only. </exception>
+    public void Clear()
+    {
+      ClearItems();
+    }
+
+    /// <summary>
+    /// Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value.
+    /// </summary>
+    /// <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+    /// <returns>
+    /// true if <paramref name="item"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false.
+    /// </returns>
+    public bool Contains(JToken item)
+    {
+      return ContainsItem(item);
+    }
+
+    void ICollection<JToken>.CopyTo(JToken[] array, int arrayIndex)
+    {
+      CopyItemsTo(array, arrayIndex);
+    }
+
+    bool ICollection<JToken>.IsReadOnly
+    {
+      get { return false; }
+    }
+
+    /// <summary>
+    /// Removes the first occurrence of a specific object from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+    /// </summary>
+    /// <param name="item">The object to remove from the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+    /// <returns>
+    /// true if <paramref name="item"/> was successfully removed from the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false. This method also returns false if <paramref name="item"/> is not found in the original <see cref="T:System.Collections.Generic.ICollection`1"/>.
+    /// </returns>
+    /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>
+    public bool Remove(JToken item)
+    {
+      return RemoveItem(item);
+    }
+
+    #endregion
+
+    internal override int GetDeepHashCode()
+    {
+      return ContentsHashCode();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JConstructor.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JConstructor.cs
@@ -1,201 +1,201 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a JSON constructor.
-  /// </summary>
-  public class JConstructor : JContainer
-  {
-    private string _name;
-    private readonly IList<JToken> _values = new List<JToken>();
-
-    /// <summary>
-    /// Gets the container's children tokens.
-    /// </summary>
-    /// <value>The container's children tokens.</value>
-    protected override IList<JToken> ChildrenTokens
-    {
-      get { return _values; }
-    }
-
-    /// <summary>
-    /// Gets or sets the name of this constructor.
-    /// </summary>
-    /// <value>The constructor name.</value>
-    public string Name
-    {
-      get { return _name; }
-      set { _name = value; }
-    }
-
-    /// <summary>
-    /// Gets the node type for this <see cref="JToken"/>.
-    /// </summary>
-    /// <value>The type.</value>
-    public override JTokenType Type
-    {
-      get { return JTokenType.Constructor; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JConstructor"/> class.
-    /// </summary>
-    public JConstructor()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JConstructor"/> class from another <see cref="JConstructor"/> object.
-    /// </summary>
-    /// <param name="other">A <see cref="JConstructor"/> object to copy from.</param>
-    public JConstructor(JConstructor other)
-      : base(other)
-    {
-      _name = other.Name;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JConstructor"/> class with the specified name and content.
-    /// </summary>
-    /// <param name="name">The constructor name.</param>
-    /// <param name="content">The contents of the constructor.</param>
-    public JConstructor(string name, params object[] content)
-      : this(name, (object)content)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JConstructor"/> class with the specified name and content.
-    /// </summary>
-    /// <param name="name">The constructor name.</param>
-    /// <param name="content">The contents of the constructor.</param>
-    public JConstructor(string name, object content)
-      : this(name)
-    {
-      Add(content);
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JConstructor"/> class with the specified name.
-    /// </summary>
-    /// <param name="name">The constructor name.</param>
-    public JConstructor(string name)
-    {
-      ValidationUtils.ArgumentNotNullOrEmpty(name, "name");
-
-      _name = name;
-    }
-
-    internal override bool DeepEquals(JToken node)
-    {
-      JConstructor c = node as JConstructor;
-      return (c != null && _name == c.Name && ContentsEqual(c));
-    }
-
-    internal override JToken CloneToken()
-    {
-      return new JConstructor(this);
-    }
-
-    /// <summary>
-    /// Writes this token to a <see cref="JsonWriter"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
-    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
-    {
-      writer.WriteStartConstructor(_name);
-
-      foreach (JToken token in Children())
-      {
-        token.WriteTo(writer, converters);
-      }
-
-      writer.WriteEndConstructor();
-    }
-
-    /// <summary>
-    /// Gets the <see cref="JToken"/> with the specified key.
-    /// </summary>
-    /// <value>The <see cref="JToken"/> with the specified key.</value>
-    public override JToken this[object key]
-    {
-      get
-      {
-        ValidationUtils.ArgumentNotNull(key, "o");
-
-        if (!(key is int))
-          throw new ArgumentException("Accessed JConstructor values with invalid key value: {0}. Argument position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
-
-        return GetItem((int)key);
-      }
-      set
-      {
-        ValidationUtils.ArgumentNotNull(key, "o");
-
-        if (!(key is int))
-          throw new ArgumentException("Set JConstructor values with invalid key value: {0}. Argument position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
-
-        SetItem((int)key, value);
-      }
-    }
-
-    internal override int GetDeepHashCode()
-    {
-      return _name.GetHashCode() ^ ContentsHashCode();
-    }
-
-    /// <summary>
-    /// Loads an <see cref="JConstructor"/> from a <see cref="JsonReader"/>. 
-    /// </summary>
-    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JConstructor"/>.</param>
-    /// <returns>A <see cref="JConstructor"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
-    public static new JConstructor Load(JsonReader reader)
-    {
-      if (reader.TokenType == JsonToken.None)
-      {
-        if (!reader.Read())
-          throw new Exception("Error reading JConstructor from JsonReader.");
-      }
-
-      if (reader.TokenType != JsonToken.StartConstructor)
-        throw new Exception("Error reading JConstructor from JsonReader. Current JsonReader item is not a constructor: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-
-      JConstructor c = new JConstructor((string)reader.Value);
-      c.SetLineInfo(reader as IJsonLineInfo);
-
-      c.ReadTokenFrom(reader);
-
-      return c;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a JSON constructor.
+  /// </summary>
+  public class JConstructor : JContainer
+  {
+    private string _name;
+    private readonly IList<JToken> _values = new List<JToken>();
+
+    /// <summary>
+    /// Gets the container's children tokens.
+    /// </summary>
+    /// <value>The container's children tokens.</value>
+    protected override IList<JToken> ChildrenTokens
+    {
+      get { return _values; }
+    }
+
+    /// <summary>
+    /// Gets or sets the name of this constructor.
+    /// </summary>
+    /// <value>The constructor name.</value>
+    public string Name
+    {
+      get { return _name; }
+      set { _name = value; }
+    }
+
+    /// <summary>
+    /// Gets the node type for this <see cref="JToken"/>.
+    /// </summary>
+    /// <value>The type.</value>
+    public override JTokenType Type
+    {
+      get { return JTokenType.Constructor; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JConstructor"/> class.
+    /// </summary>
+    public JConstructor()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JConstructor"/> class from another <see cref="JConstructor"/> object.
+    /// </summary>
+    /// <param name="other">A <see cref="JConstructor"/> object to copy from.</param>
+    public JConstructor(JConstructor other)
+      : base(other)
+    {
+      _name = other.Name;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JConstructor"/> class with the specified name and content.
+    /// </summary>
+    /// <param name="name">The constructor name.</param>
+    /// <param name="content">The contents of the constructor.</param>
+    public JConstructor(string name, params object[] content)
+      : this(name, (object)content)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JConstructor"/> class with the specified name and content.
+    /// </summary>
+    /// <param name="name">The constructor name.</param>
+    /// <param name="content">The contents of the constructor.</param>
+    public JConstructor(string name, object content)
+      : this(name)
+    {
+      Add(content);
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JConstructor"/> class with the specified name.
+    /// </summary>
+    /// <param name="name">The constructor name.</param>
+    public JConstructor(string name)
+    {
+      ValidationUtils.ArgumentNotNullOrEmpty(name, "name");
+
+      _name = name;
+    }
+
+    internal override bool DeepEquals(JToken node)
+    {
+      JConstructor c = node as JConstructor;
+      return (c != null && _name == c.Name && ContentsEqual(c));
+    }
+
+    internal override JToken CloneToken()
+    {
+      return new JConstructor(this);
+    }
+
+    /// <summary>
+    /// Writes this token to a <see cref="JsonWriter"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
+    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
+    {
+      writer.WriteStartConstructor(_name);
+
+      foreach (JToken token in Children())
+      {
+        token.WriteTo(writer, converters);
+      }
+
+      writer.WriteEndConstructor();
+    }
+
+    /// <summary>
+    /// Gets the <see cref="JToken"/> with the specified key.
+    /// </summary>
+    /// <value>The <see cref="JToken"/> with the specified key.</value>
+    public override JToken this[object key]
+    {
+      get
+      {
+        ValidationUtils.ArgumentNotNull(key, "o");
+
+        if (!(key is int))
+          throw new ArgumentException("Accessed JConstructor values with invalid key value: {0}. Argument position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
+
+        return GetItem((int)key);
+      }
+      set
+      {
+        ValidationUtils.ArgumentNotNull(key, "o");
+
+        if (!(key is int))
+          throw new ArgumentException("Set JConstructor values with invalid key value: {0}. Argument position index expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
+
+        SetItem((int)key, value);
+      }
+    }
+
+    internal override int GetDeepHashCode()
+    {
+      return _name.GetHashCode() ^ ContentsHashCode();
+    }
+
+    /// <summary>
+    /// Loads an <see cref="JConstructor"/> from a <see cref="JsonReader"/>. 
+    /// </summary>
+    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JConstructor"/>.</param>
+    /// <returns>A <see cref="JConstructor"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
+    public static new JConstructor Load(JsonReader reader)
+    {
+      if (reader.TokenType == JsonToken.None)
+      {
+        if (!reader.Read())
+          throw new Exception("Error reading JConstructor from JsonReader.");
+      }
+
+      if (reader.TokenType != JsonToken.StartConstructor)
+        throw new Exception("Error reading JConstructor from JsonReader. Current JsonReader item is not a constructor: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+
+      JConstructor c = new JConstructor((string)reader.Value);
+      c.SetLineInfo(reader as IJsonLineInfo);
+
+      c.ReadTokenFrom(reader);
+
+      return c;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JContainer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JContainer.cs
@@ -1,992 +1,992 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Threading;
-using Newtonsoft.Json.Utilities;
-using System.Collections;
-using System.Globalization;
-using System.ComponentModel;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a token that can contain other tokens.
-  /// </summary>
-  public abstract class JContainer : JToken, IList<JToken>
-#if !(SILVERLIGHT || NETFX_CORE)
-    , ITypedList, IBindingList
-#else
-    , IList, INotifyCollectionChanged
-#endif
-#if !(SILVERLIGHT || NET20 || NET35 || NETFX_CORE)
-    , INotifyCollectionChanged
-#endif
-  {
-#if !SILVERLIGHT && !NETFX_CORE
-    /// <summary>
-    /// Occurs when the list changes or an item in the list changes.
-    /// </summary>
-    public event ListChangedEventHandler ListChanged;
-
-    /// <summary>
-    /// Occurs before an item is added to the collection.
-    /// </summary>
-    public event AddingNewEventHandler AddingNew;
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-    /// <summary>
-    /// Occurs when the items list of the collection has changed, or the collection is reset.
-    /// </summary>
-    public event NotifyCollectionChangedEventHandler CollectionChanged;
-#endif
-
-    /// <summary>
-    /// Gets the container's children tokens.
-    /// </summary>
-    /// <value>The container's children tokens.</value>
-    protected abstract IList<JToken> ChildrenTokens { get; }
-
-    private object _syncRoot;
-    private bool _busy;
-
-    internal JContainer()
-    {
-    }
-
-    internal JContainer(JContainer other)
-    {
-      ValidationUtils.ArgumentNotNull(other, "c");
-
-      foreach (JToken child in other)
-      {
-        Add(child);
-      }
-    }
-
-    internal void CheckReentrancy()
-    {
-      if (_busy)
-        throw new InvalidOperationException("Cannot change {0} during a collection change event.".FormatWith(CultureInfo.InvariantCulture, GetType()));
-    }
-
- #if !SILVERLIGHT && !NETFX_CORE
-    /// <summary>
-    /// Raises the <see cref="AddingNew"/> event.
-    /// </summary>
-    /// <param name="e">The <see cref="AddingNewEventArgs"/> instance containing the event data.</param>
-    protected virtual void OnAddingNew(AddingNewEventArgs e)
-    {
-      AddingNewEventHandler handler = AddingNew;
-      if (handler != null)
-        handler(this, e);
-    }
-
-    /// <summary>
-    /// Raises the <see cref="ListChanged"/> event.
-    /// </summary>
-    /// <param name="e">The <see cref="ListChangedEventArgs"/> instance containing the event data.</param>
-    protected virtual void OnListChanged(ListChangedEventArgs e)
-    {
-      ListChangedEventHandler handler = ListChanged;
-
-      if (handler != null)
-      {
-        _busy = true;
-        try
-        {
-          handler(this, e);
-        }
-        finally
-        {
-          _busy = false;
-        }
-      }
-    }
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-    /// <summary>
-    /// Raises the <see cref="CollectionChanged"/> event.
-    /// </summary>
-    /// <param name="e">The <see cref="NotifyCollectionChangedEventArgs"/> instance containing the event data.</param>
-    protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
-    {
-      NotifyCollectionChangedEventHandler handler = CollectionChanged;
-
-      if (handler != null)
-      {
-        _busy = true;
-        try
-        {
-          handler(this, e);
-        }
-        finally
-        {
-          _busy = false;
-        }
-      }
-    }
-#endif
-
-    /// <summary>
-    /// Gets a value indicating whether this token has childen tokens.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if this token has child values; otherwise, <c>false</c>.
-    /// </value>
-    public override bool HasValues
-    {
-      get { return ChildrenTokens.Count > 0; }
-    }
-
-    internal bool ContentsEqual(JContainer container)
-    {
-      JToken t1 = First;
-      JToken t2 = container.First;
-
-      if (t1 == t2)
-        return true;
-
-      do
-      {
-        if (t1 == null && t2 == null)
-          return true;
-
-        if (t1 != null && t2 != null && t1.DeepEquals(t2))
-        {
-          t1 = (t1 != Last) ? t1.Next : null;
-          t2 = (t2 != container.Last) ? t2.Next : null;
-        }
-        else
-        {
-          return false;
-        }
-      }
-      while (true);
-    }
-
-    /// <summary>
-    /// Get the first child token of this token.
-    /// </summary>
-    /// <value>
-    /// A <see cref="JToken"/> containing the first child token of the <see cref="JToken"/>.
-    /// </value>
-    public override JToken First
-    {
-      get { return ChildrenTokens.FirstOrDefault(); }
-    }
-
-    /// <summary>
-    /// Get the last child token of this token.
-    /// </summary>
-    /// <value>
-    /// A <see cref="JToken"/> containing the last child token of the <see cref="JToken"/>.
-    /// </value>
-    public override JToken Last
-    {
-      get { return ChildrenTokens.LastOrDefault(); }
-    }
-
-    /// <summary>
-    /// Returns a collection of the child tokens of this token, in document order.
-    /// </summary>
-    /// <returns>
-    /// An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> containing the child tokens of this <see cref="JToken"/>, in document order.
-    /// </returns>
-    public override JEnumerable<JToken> Children()
-    {
-      return new JEnumerable<JToken>(ChildrenTokens);
-    }
-
-    /// <summary>
-    /// Returns a collection of the child values of this token, in document order.
-    /// </summary>
-    /// <typeparam name="T">The type to convert the values to.</typeparam>
-    /// <returns>
-    /// A <see cref="IEnumerable{T}"/> containing the child values of this <see cref="JToken"/>, in document order.
-    /// </returns>
-    public override IEnumerable<T> Values<T>()
-    {
-      return ChildrenTokens.Convert<JToken, T>();
-    }
-
-    /// <summary>
-    /// Returns a collection of the descendant tokens for this token in document order.
-    /// </summary>
-    /// <returns>An <see cref="IEnumerable{JToken}"/> containing the descendant tokens of the <see cref="JToken"/>.</returns>
-    public IEnumerable<JToken> Descendants()
-    {
-      foreach (JToken o in ChildrenTokens)
-      {
-        yield return o;
-        JContainer c = o as JContainer;
-        if (c != null)
-        {
-          foreach (JToken d in c.Descendants())
-          {
-            yield return d;
-          }
-        }
-      }
-    }
-
-    internal bool IsMultiContent(object content)
-    {
-      return (content is IEnumerable && !(content is string) && !(content is JToken) && !(content is byte[]));
-    }
-
-    internal JToken EnsureParentToken(JToken item, bool skipParentCheck)
-    {
-      if (item == null)
-        return new JValue((object) null);
-
-      if (skipParentCheck)
-        return item;
-
-      // to avoid a token having multiple parents or creating a recursive loop, create a copy if...
-      // the item already has a parent
-      // the item is being added to itself
-      // the item is being added to the root parent of itself
-      if (item.Parent != null || item == this || (item.HasValues && Root == item))
-        item = item.CloneToken();
-
-      return item;
-    }
-
-    private class JTokenReferenceEqualityComparer : IEqualityComparer<JToken>
-    {
-      public static readonly JTokenReferenceEqualityComparer Instance = new JTokenReferenceEqualityComparer();
-
-      public bool Equals(JToken x, JToken y)
-      {
-        return ReferenceEquals(x, y);
-      }
-
-      public int GetHashCode(JToken obj)
-      {
-        if (obj == null)
-          return 0;
-
-        return obj.GetHashCode();
-      }
-    }
-
-    internal int IndexOfItem(JToken item)
-    {
-      return ChildrenTokens.IndexOf(item, JTokenReferenceEqualityComparer.Instance);
-    }
-
-    internal virtual void InsertItem(int index, JToken item, bool skipParentCheck)
-    {
-      if (index > ChildrenTokens.Count)
-        throw new ArgumentOutOfRangeException("index", "Index must be within the bounds of the List.");
-
-      CheckReentrancy();
-
-      item = EnsureParentToken(item, skipParentCheck);
-
-      JToken previous = (index == 0) ? null : ChildrenTokens[index - 1];
-      // haven't inserted new token yet so next token is still at the inserting index
-      JToken next = (index == ChildrenTokens.Count) ? null : ChildrenTokens[index];
-
-      ValidateToken(item, null);
-
-      item.Parent = this;
-
-      item.Previous = previous;
-      if (previous != null)
-        previous.Next = item;
-
-      item.Next = next;
-      if (next != null)
-        next.Previous = item;
-      
-      ChildrenTokens.Insert(index, item);
-
-#if !SILVERLIGHT && !NETFX_CORE
-      if (ListChanged != null)
-        OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-      if (CollectionChanged != null)
-        OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item, index));
-#endif
-    }
-
-    internal virtual void RemoveItemAt(int index)
-    {
-      if (index < 0)
-        throw new ArgumentOutOfRangeException("index", "Index is less than 0.");
-      if (index >= ChildrenTokens.Count)
-        throw new ArgumentOutOfRangeException("index", "Index is equal to or greater than Count.");
-
-      CheckReentrancy();
-
-      JToken item = ChildrenTokens[index];
-      JToken previous = (index == 0) ? null : ChildrenTokens[index - 1];
-      JToken next = (index == ChildrenTokens.Count - 1) ? null : ChildrenTokens[index + 1];
-
-      if (previous != null)
-        previous.Next = next;
-      if (next != null)
-        next.Previous = previous;
-
-      item.Parent = null;
-      item.Previous = null;
-      item.Next = null;
-
-      ChildrenTokens.RemoveAt(index);
-
-#if !SILVERLIGHT && !NETFX_CORE
-      OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item, index));
-#endif
-    }
-
-    internal virtual bool RemoveItem(JToken item)
-    {
-      int index = IndexOfItem(item);
-      if (index >= 0)
-      {
-        RemoveItemAt(index);
-        return true;
-      }
-
-      return false;
-    }
-
-    internal virtual JToken GetItem(int index)
-    {
-      return ChildrenTokens[index];
-    }
-
-    internal virtual void SetItem(int index, JToken item)
-    {
-      if (index < 0)
-        throw new ArgumentOutOfRangeException("index", "Index is less than 0.");
-      if (index >= ChildrenTokens.Count)
-        throw new ArgumentOutOfRangeException("index", "Index is equal to or greater than Count.");
-
-      JToken existing = ChildrenTokens[index];
-
-      if (IsTokenUnchanged(existing, item))
-        return;
-
-      CheckReentrancy();
-
-      item = EnsureParentToken(item, false);
-
-      ValidateToken(item, existing);
-
-      JToken previous = (index == 0) ? null : ChildrenTokens[index - 1];
-      JToken next = (index == ChildrenTokens.Count - 1) ? null : ChildrenTokens[index + 1];
-
-      item.Parent = this;
-
-      item.Previous = previous;
-      if (previous != null)
-        previous.Next = item;
-
-      item.Next = next;
-      if (next != null)
-        next.Previous = item;
-
-      ChildrenTokens[index] = item;
-
-      existing.Parent = null;
-      existing.Previous = null;
-      existing.Next = null;
-
-#if !SILVERLIGHT && !NETFX_CORE
-      OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, index));
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, item, existing, index));
-#endif
-    }
-
-    internal virtual void ClearItems()
-    {
-      CheckReentrancy();
-
-      foreach (JToken item in ChildrenTokens)
-      {
-        item.Parent = null;
-        item.Previous = null;
-        item.Next = null;
-      }
-
-      ChildrenTokens.Clear();
-
-#if !SILVERLIGHT && !NETFX_CORE
-      OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
-#endif
-    }
-
-    internal virtual void ReplaceItem(JToken existing, JToken replacement)
-    {
-      if (existing == null || existing.Parent != this)
-        return;
-
-      int index = IndexOfItem(existing);
-      SetItem(index, replacement);
-    }
-
-    internal virtual bool ContainsItem(JToken item)
-    {
-      return (IndexOfItem(item) != -1);
-    }
-
-    internal virtual void CopyItemsTo(Array array, int arrayIndex)
-    {
-      if (array == null)
-        throw new ArgumentNullException("array");
-      if (arrayIndex < 0)
-        throw new ArgumentOutOfRangeException("arrayIndex", "arrayIndex is less than 0.");
-      if (arrayIndex >= array.Length)
-        throw new ArgumentException("arrayIndex is equal to or greater than the length of array.");
-      if (Count > array.Length - arrayIndex)
-        throw new ArgumentException("The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array.");
-
-      int index = 0;
-      foreach (JToken token in ChildrenTokens)
-      {
-        array.SetValue(token, arrayIndex + index);
-        index++;
-      }
-    }
-
-    internal static bool IsTokenUnchanged(JToken currentValue, JToken newValue)
-    {
-      JValue v1 = currentValue as JValue;
-      if (v1 != null)
-      {
-        // null will get turned into a JValue of type null
-        if (v1.Type == JTokenType.Null && newValue == null)
-          return true;
-
-        return v1.Equals(newValue);
-      }
-
-      return false;
-    }
-
-    internal virtual void ValidateToken(JToken o, JToken existing)
-    {
-      ValidationUtils.ArgumentNotNull(o, "o");
-
-      if (o.Type == JTokenType.Property)
-        throw new ArgumentException("Can not add {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, o.GetType(), GetType()));
-    }
-
-    /// <summary>
-    /// Adds the specified content as children of this <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="content">The content to be added.</param>
-    public virtual void Add(object content)
-    {
-      AddInternal(ChildrenTokens.Count, content, false);
-    }
-
-    internal void AddAndSkipParentCheck(JToken token)
-    {
-      AddInternal(ChildrenTokens.Count, token, true);
-    }
-
-    /// <summary>
-    /// Adds the specified content as the first children of this <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="content">The content to be added.</param>
-    public void AddFirst(object content)
-    {
-      AddInternal(0, content, false);
-    }
-
-    internal void AddInternal(int index, object content, bool skipParentCheck)
-    {
-      if (IsMultiContent(content))
-      {
-        IEnumerable enumerable = (IEnumerable)content;
-
-        int multiIndex = index;
-        foreach (object c in enumerable)
-        {
-          AddInternal(multiIndex, c, skipParentCheck);
-          multiIndex++;
-        }
-      }
-      else
-      {
-        JToken item = CreateFromContent(content);
-
-        InsertItem(index, item, skipParentCheck);
-      }
-    }
-
-    internal JToken CreateFromContent(object content)
-    {
-      if (content is JToken)
-        return (JToken)content;
-      
-      return new JValue(content);
-    }
-
-    /// <summary>
-    /// Creates an <see cref="JsonWriter"/> that can be used to add tokens to the <see cref="JToken"/>.
-    /// </summary>
-    /// <returns>An <see cref="JsonWriter"/> that is ready to have content written to it.</returns>
-    public JsonWriter CreateWriter()
-    {
-      return new JTokenWriter(this);
-    }
-
-    /// <summary>
-    /// Replaces the children nodes of this token with the specified content.
-    /// </summary>
-    /// <param name="content">The content.</param>
-    public void ReplaceAll(object content)
-    {
-      ClearItems();
-      Add(content);
-    }
-
-    /// <summary>
-    /// Removes the child nodes from this token.
-    /// </summary>
-    public void RemoveAll()
-    {
-      ClearItems();
-    }
-
-    internal void ReadTokenFrom(JsonReader r)
-    {
-      int startDepth = r.Depth;
-
-      if (!r.Read())
-        throw new Exception("Error reading {0} from JsonReader.".FormatWith(CultureInfo.InvariantCulture, GetType().Name));
-
-      ReadContentFrom(r);
-
-      int endDepth = r.Depth;
-
-      if (endDepth > startDepth)
-        throw new Exception("Unexpected end of content while loading {0}.".FormatWith(CultureInfo.InvariantCulture, GetType().Name));
-    }
-
-    internal void ReadContentFrom(JsonReader r)
-    {
-      ValidationUtils.ArgumentNotNull(r, "r");
-      IJsonLineInfo lineInfo = r as IJsonLineInfo;
-
-      JContainer parent = this;
-
-      do
-      {
-        if (parent is JProperty && ((JProperty)parent).Value != null)
-        {
-          if (parent == this)
-            return;
-
-          parent = parent.Parent;
-        }
-
-        switch (r.TokenType)
-        {
-          case JsonToken.None:
-            // new reader. move to actual content
-            break;
-          case JsonToken.StartArray:
-            JArray a = new JArray();
-            a.SetLineInfo(lineInfo);
-            parent.Add(a);
-            parent = a;
-            break;
-
-          case JsonToken.EndArray:
-            if (parent == this)
-              return;
-
-            parent = parent.Parent;
-            break;
-          case JsonToken.StartObject:
-            JObject o = new JObject();
-            o.SetLineInfo(lineInfo);
-            parent.Add(o);
-            parent = o;
-            break;
-          case JsonToken.EndObject:
-            if (parent == this)
-              return;
-
-            parent = parent.Parent;
-            break;
-          case JsonToken.StartConstructor:
-            JConstructor constructor = new JConstructor(r.Value.ToString());
-            constructor.SetLineInfo(constructor);
-            parent.Add(constructor);
-            parent = constructor;
-            break;
-          case JsonToken.EndConstructor:
-            if (parent == this)
-              return;
-
-            parent = parent.Parent;
-            break;
-          case JsonToken.String:
-          case JsonToken.Integer:
-          case JsonToken.Float:
-          case JsonToken.Date:
-          case JsonToken.Boolean:
-          case JsonToken.Bytes:
-            JValue v = new JValue(r.Value);
-            v.SetLineInfo(lineInfo);
-            parent.Add(v);
-            break;
-          case JsonToken.Comment:
-            v = JValue.CreateComment(r.Value.ToString());
-            v.SetLineInfo(lineInfo);
-            parent.Add(v);
-            break;
-          case JsonToken.Null:
-            v = new JValue(null, JTokenType.Null);
-            v.SetLineInfo(lineInfo);
-            parent.Add(v);
-            break;
-          case JsonToken.Undefined:
-            v = new JValue(null, JTokenType.Undefined);
-            v.SetLineInfo(lineInfo);
-            parent.Add(v);
-            break;
-          case JsonToken.PropertyName:
-            string propertyName = r.Value.ToString();
-            JProperty property = new JProperty(propertyName);
-            property.SetLineInfo(lineInfo);
-            JObject parentObject = (JObject) parent;
-            // handle multiple properties with the same name in JSON
-            JProperty existingPropertyWithName = parentObject.Property(propertyName);
-            if (existingPropertyWithName == null)
-              parent.Add(property);
-            else
-              existingPropertyWithName.Replace(property);
-            parent = property;
-            break;
-          default:
-            throw new InvalidOperationException("The JsonReader should not be on a token of type {0}.".FormatWith(CultureInfo.InvariantCulture, r.TokenType));
-        }
-      }
-      while (r.Read());
-    }
-
-    internal int ContentsHashCode()
-    {
-      int hashCode = 0;
-      foreach (JToken item in ChildrenTokens)
-      {
-        hashCode ^= item.GetDeepHashCode();
-      }
-      return hashCode;
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    string ITypedList.GetListName(PropertyDescriptor[] listAccessors)
-    {
-      return string.Empty;
-    }
-
-    PropertyDescriptorCollection ITypedList.GetItemProperties(PropertyDescriptor[] listAccessors)
-    {
-      ICustomTypeDescriptor d = First as ICustomTypeDescriptor;
-      if (d != null)
-        return d.GetProperties();
-
-      return null;
-    }
-#endif
-
-    #region IList<JToken> Members
-
-    int IList<JToken>.IndexOf(JToken item)
-    {
-      return IndexOfItem(item);
-    }
-
-    void IList<JToken>.Insert(int index, JToken item)
-    {
-      InsertItem(index, item, false);
-    }
-
-    void IList<JToken>.RemoveAt(int index)
-    {
-      RemoveItemAt(index);
-    }
-
-    JToken IList<JToken>.this[int index]
-    {
-      get { return GetItem(index); }
-      set { SetItem(index, value); }
-    }
-
-    #endregion
-
-    #region ICollection<JToken> Members
-
-    void ICollection<JToken>.Add(JToken item)
-    {
-      Add(item);
-    }
-
-    void ICollection<JToken>.Clear()
-    {
-      ClearItems();
-    }
-
-    bool ICollection<JToken>.Contains(JToken item)
-    {
-      return ContainsItem(item);
-    }
-
-    void ICollection<JToken>.CopyTo(JToken[] array, int arrayIndex)
-    {
-      CopyItemsTo(array, arrayIndex);
-    }
-
-    bool ICollection<JToken>.IsReadOnly
-    {
-      get { return false; }
-    }
-
-    bool ICollection<JToken>.Remove(JToken item)
-    {
-      return RemoveItem(item);
-    }
-
-    #endregion
-
-    private JToken EnsureValue(object value)
-    {
-      if (value == null)
-        return null;
-
-      if (value is JToken)
-        return (JToken) value;
-
-      throw new ArgumentException("Argument is not a JToken.");
-    }
-
-    #region IList Members
-
-    int IList.Add(object value)
-    {
-      Add(EnsureValue(value));
-      return Count - 1;
-    }
-
-    void IList.Clear()
-    {
-      ClearItems();
-    }
-
-    bool IList.Contains(object value)
-    {
-      return ContainsItem(EnsureValue(value));
-    }
-
-    int IList.IndexOf(object value)
-    {
-      return IndexOfItem(EnsureValue(value));
-    }
-
-    void IList.Insert(int index, object value)
-    {
-      InsertItem(index, EnsureValue(value), false);
-    }
-
-    bool IList.IsFixedSize
-    {
-      get { return false; }
-    }
-
-    bool IList.IsReadOnly
-    {
-      get { return false; }
-    }
-
-    void IList.Remove(object value)
-    {
-      RemoveItem(EnsureValue(value));
-    }
-
-    void IList.RemoveAt(int index)
-    {
-      RemoveItemAt(index);
-    }
-
-    object IList.this[int index]
-    {
-      get { return GetItem(index); }
-      set { SetItem(index, EnsureValue(value)); }
-    }
-
-    #endregion
-
-    #region ICollection Members
-
-    void ICollection.CopyTo(Array array, int index)
-    {
-      CopyItemsTo(array, index);
-    }
-
-    /// <summary>
-    /// Gets the count of child JSON tokens.
-    /// </summary>
-    /// <value>The count of child JSON tokens</value>
-    public int Count
-    {
-      get { return ChildrenTokens.Count; }
-    }
-
-    bool ICollection.IsSynchronized
-    {
-      get { return false; }
-    }
-
-    object ICollection.SyncRoot
-    {
-      get
-      {
-        if (_syncRoot == null)
-          Interlocked.CompareExchange(ref _syncRoot, new object(), null);
-
-        return _syncRoot;
-      }
-
-    }
-
-    #endregion
-
-    #region IBindingList Members
-
-#if !SILVERLIGHT && !NETFX_CORE
-    void IBindingList.AddIndex(PropertyDescriptor property)
-    {
-    }
-
-    object IBindingList.AddNew()
-    {
-      AddingNewEventArgs args = new AddingNewEventArgs();
-      OnAddingNew(args);
-
-      if (args.NewObject == null)
-        throw new Exception("Could not determine new value to add to '{0}'.".FormatWith(CultureInfo.InvariantCulture, GetType()));
-
-      if (!(args.NewObject is JToken))
-        throw new Exception("New item to be added to collection must be compatible with {0}.".FormatWith(CultureInfo.InvariantCulture, typeof (JToken)));
-
-      JToken newItem = (JToken)args.NewObject;
-      Add(newItem);
-
-      return newItem;
-    }
-
-    bool IBindingList.AllowEdit
-    {
-      get { return true; }
-    }
-
-    bool IBindingList.AllowNew
-    {
-      get { return true; }
-    }
-
-    bool IBindingList.AllowRemove
-    {
-      get { return true; }
-    }
-
-    void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection direction)
-    {
-      throw new NotSupportedException();
-    }
-
-    int IBindingList.Find(PropertyDescriptor property, object key)
-    {
-      throw new NotSupportedException();
-    }
-
-    bool IBindingList.IsSorted
-    {
-      get { return false; }
-    }
-
-    void IBindingList.RemoveIndex(PropertyDescriptor property)
-    {
-    }
-
-    void IBindingList.RemoveSort()
-    {
-      throw new NotSupportedException();
-    }
-
-    ListSortDirection IBindingList.SortDirection
-    {
-      get { return ListSortDirection.Ascending; }
-    }
-
-    PropertyDescriptor IBindingList.SortProperty
-    {
-      get { return null; }
-    }
-
-    bool IBindingList.SupportsChangeNotification
-    {
-      get { return true; }
-    }
-
-    bool IBindingList.SupportsSearching
-    {
-      get { return false; }
-    }
-
-    bool IBindingList.SupportsSorting
-    {
-      get { return false; }
-    }
-#endif
-
-    #endregion
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.Threading;
+using Newtonsoft.Json.Utilities;
+using System.Collections;
+using System.Globalization;
+using System.ComponentModel;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a token that can contain other tokens.
+  /// </summary>
+  public abstract class JContainer : JToken, IList<JToken>
+#if !(SILVERLIGHT || NETFX_CORE)
+    , ITypedList, IBindingList
+#else
+    , IList, INotifyCollectionChanged
+#endif
+#if !(SILVERLIGHT || NET20 || NET35 || NETFX_CORE)
+    , INotifyCollectionChanged
+#endif
+  {
+#if !SILVERLIGHT && !NETFX_CORE
+    /// <summary>
+    /// Occurs when the list changes or an item in the list changes.
+    /// </summary>
+    public event ListChangedEventHandler ListChanged;
+
+    /// <summary>
+    /// Occurs before an item is added to the collection.
+    /// </summary>
+    public event AddingNewEventHandler AddingNew;
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+    /// <summary>
+    /// Occurs when the items list of the collection has changed, or the collection is reset.
+    /// </summary>
+    public event NotifyCollectionChangedEventHandler CollectionChanged;
+#endif
+
+    /// <summary>
+    /// Gets the container's children tokens.
+    /// </summary>
+    /// <value>The container's children tokens.</value>
+    protected abstract IList<JToken> ChildrenTokens { get; }
+
+    private object _syncRoot;
+    private bool _busy;
+
+    internal JContainer()
+    {
+    }
+
+    internal JContainer(JContainer other)
+    {
+      ValidationUtils.ArgumentNotNull(other, "c");
+
+      foreach (JToken child in other)
+      {
+        Add(child);
+      }
+    }
+
+    internal void CheckReentrancy()
+    {
+      if (_busy)
+        throw new InvalidOperationException("Cannot change {0} during a collection change event.".FormatWith(CultureInfo.InvariantCulture, GetType()));
+    }
+
+ #if !SILVERLIGHT && !NETFX_CORE
+    /// <summary>
+    /// Raises the <see cref="AddingNew"/> event.
+    /// </summary>
+    /// <param name="e">The <see cref="AddingNewEventArgs"/> instance containing the event data.</param>
+    protected virtual void OnAddingNew(AddingNewEventArgs e)
+    {
+      AddingNewEventHandler handler = AddingNew;
+      if (handler != null)
+        handler(this, e);
+    }
+
+    /// <summary>
+    /// Raises the <see cref="ListChanged"/> event.
+    /// </summary>
+    /// <param name="e">The <see cref="ListChangedEventArgs"/> instance containing the event data.</param>
+    protected virtual void OnListChanged(ListChangedEventArgs e)
+    {
+      ListChangedEventHandler handler = ListChanged;
+
+      if (handler != null)
+      {
+        _busy = true;
+        try
+        {
+          handler(this, e);
+        }
+        finally
+        {
+          _busy = false;
+        }
+      }
+    }
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+    /// <summary>
+    /// Raises the <see cref="CollectionChanged"/> event.
+    /// </summary>
+    /// <param name="e">The <see cref="NotifyCollectionChangedEventArgs"/> instance containing the event data.</param>
+    protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
+    {
+      NotifyCollectionChangedEventHandler handler = CollectionChanged;
+
+      if (handler != null)
+      {
+        _busy = true;
+        try
+        {
+          handler(this, e);
+        }
+        finally
+        {
+          _busy = false;
+        }
+      }
+    }
+#endif
+
+    /// <summary>
+    /// Gets a value indicating whether this token has childen tokens.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if this token has child values; otherwise, <c>false</c>.
+    /// </value>
+    public override bool HasValues
+    {
+      get { return ChildrenTokens.Count > 0; }
+    }
+
+    internal bool ContentsEqual(JContainer container)
+    {
+      JToken t1 = First;
+      JToken t2 = container.First;
+
+      if (t1 == t2)
+        return true;
+
+      do
+      {
+        if (t1 == null && t2 == null)
+          return true;
+
+        if (t1 != null && t2 != null && t1.DeepEquals(t2))
+        {
+          t1 = (t1 != Last) ? t1.Next : null;
+          t2 = (t2 != container.Last) ? t2.Next : null;
+        }
+        else
+        {
+          return false;
+        }
+      }
+      while (true);
+    }
+
+    /// <summary>
+    /// Get the first child token of this token.
+    /// </summary>
+    /// <value>
+    /// A <see cref="JToken"/> containing the first child token of the <see cref="JToken"/>.
+    /// </value>
+    public override JToken First
+    {
+      get { return ChildrenTokens.FirstOrDefault(); }
+    }
+
+    /// <summary>
+    /// Get the last child token of this token.
+    /// </summary>
+    /// <value>
+    /// A <see cref="JToken"/> containing the last child token of the <see cref="JToken"/>.
+    /// </value>
+    public override JToken Last
+    {
+      get { return ChildrenTokens.LastOrDefault(); }
+    }
+
+    /// <summary>
+    /// Returns a collection of the child tokens of this token, in document order.
+    /// </summary>
+    /// <returns>
+    /// An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> containing the child tokens of this <see cref="JToken"/>, in document order.
+    /// </returns>
+    public override JEnumerable<JToken> Children()
+    {
+      return new JEnumerable<JToken>(ChildrenTokens);
+    }
+
+    /// <summary>
+    /// Returns a collection of the child values of this token, in document order.
+    /// </summary>
+    /// <typeparam name="T">The type to convert the values to.</typeparam>
+    /// <returns>
+    /// A <see cref="IEnumerable{T}"/> containing the child values of this <see cref="JToken"/>, in document order.
+    /// </returns>
+    public override IEnumerable<T> Values<T>()
+    {
+      return ChildrenTokens.Convert<JToken, T>();
+    }
+
+    /// <summary>
+    /// Returns a collection of the descendant tokens for this token in document order.
+    /// </summary>
+    /// <returns>An <see cref="IEnumerable{JToken}"/> containing the descendant tokens of the <see cref="JToken"/>.</returns>
+    public IEnumerable<JToken> Descendants()
+    {
+      foreach (JToken o in ChildrenTokens)
+      {
+        yield return o;
+        JContainer c = o as JContainer;
+        if (c != null)
+        {
+          foreach (JToken d in c.Descendants())
+          {
+            yield return d;
+          }
+        }
+      }
+    }
+
+    internal bool IsMultiContent(object content)
+    {
+      return (content is IEnumerable && !(content is string) && !(content is JToken) && !(content is byte[]));
+    }
+
+    internal JToken EnsureParentToken(JToken item, bool skipParentCheck)
+    {
+      if (item == null)
+        return new JValue((object) null);
+
+      if (skipParentCheck)
+        return item;
+
+      // to avoid a token having multiple parents or creating a recursive loop, create a copy if...
+      // the item already has a parent
+      // the item is being added to itself
+      // the item is being added to the root parent of itself
+      if (item.Parent != null || item == this || (item.HasValues && Root == item))
+        item = item.CloneToken();
+
+      return item;
+    }
+
+    private class JTokenReferenceEqualityComparer : IEqualityComparer<JToken>
+    {
+      public static readonly JTokenReferenceEqualityComparer Instance = new JTokenReferenceEqualityComparer();
+
+      public bool Equals(JToken x, JToken y)
+      {
+        return ReferenceEquals(x, y);
+      }
+
+      public int GetHashCode(JToken obj)
+      {
+        if (obj == null)
+          return 0;
+
+        return obj.GetHashCode();
+      }
+    }
+
+    internal int IndexOfItem(JToken item)
+    {
+      return ChildrenTokens.IndexOf(item, JTokenReferenceEqualityComparer.Instance);
+    }
+
+    internal virtual void InsertItem(int index, JToken item, bool skipParentCheck)
+    {
+      if (index > ChildrenTokens.Count)
+        throw new ArgumentOutOfRangeException("index", "Index must be within the bounds of the List.");
+
+      CheckReentrancy();
+
+      item = EnsureParentToken(item, skipParentCheck);
+
+      JToken previous = (index == 0) ? null : ChildrenTokens[index - 1];
+      // haven't inserted new token yet so next token is still at the inserting index
+      JToken next = (index == ChildrenTokens.Count) ? null : ChildrenTokens[index];
+
+      ValidateToken(item, null);
+
+      item.Parent = this;
+
+      item.Previous = previous;
+      if (previous != null)
+        previous.Next = item;
+
+      item.Next = next;
+      if (next != null)
+        next.Previous = item;
+      
+      ChildrenTokens.Insert(index, item);
+
+#if !SILVERLIGHT && !NETFX_CORE
+      if (ListChanged != null)
+        OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+      if (CollectionChanged != null)
+        OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item, index));
+#endif
+    }
+
+    internal virtual void RemoveItemAt(int index)
+    {
+      if (index < 0)
+        throw new ArgumentOutOfRangeException("index", "Index is less than 0.");
+      if (index >= ChildrenTokens.Count)
+        throw new ArgumentOutOfRangeException("index", "Index is equal to or greater than Count.");
+
+      CheckReentrancy();
+
+      JToken item = ChildrenTokens[index];
+      JToken previous = (index == 0) ? null : ChildrenTokens[index - 1];
+      JToken next = (index == ChildrenTokens.Count - 1) ? null : ChildrenTokens[index + 1];
+
+      if (previous != null)
+        previous.Next = next;
+      if (next != null)
+        next.Previous = previous;
+
+      item.Parent = null;
+      item.Previous = null;
+      item.Next = null;
+
+      ChildrenTokens.RemoveAt(index);
+
+#if !SILVERLIGHT && !NETFX_CORE
+      OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item, index));
+#endif
+    }
+
+    internal virtual bool RemoveItem(JToken item)
+    {
+      int index = IndexOfItem(item);
+      if (index >= 0)
+      {
+        RemoveItemAt(index);
+        return true;
+      }
+
+      return false;
+    }
+
+    internal virtual JToken GetItem(int index)
+    {
+      return ChildrenTokens[index];
+    }
+
+    internal virtual void SetItem(int index, JToken item)
+    {
+      if (index < 0)
+        throw new ArgumentOutOfRangeException("index", "Index is less than 0.");
+      if (index >= ChildrenTokens.Count)
+        throw new ArgumentOutOfRangeException("index", "Index is equal to or greater than Count.");
+
+      JToken existing = ChildrenTokens[index];
+
+      if (IsTokenUnchanged(existing, item))
+        return;
+
+      CheckReentrancy();
+
+      item = EnsureParentToken(item, false);
+
+      ValidateToken(item, existing);
+
+      JToken previous = (index == 0) ? null : ChildrenTokens[index - 1];
+      JToken next = (index == ChildrenTokens.Count - 1) ? null : ChildrenTokens[index + 1];
+
+      item.Parent = this;
+
+      item.Previous = previous;
+      if (previous != null)
+        previous.Next = item;
+
+      item.Next = next;
+      if (next != null)
+        next.Previous = item;
+
+      ChildrenTokens[index] = item;
+
+      existing.Parent = null;
+      existing.Previous = null;
+      existing.Next = null;
+
+#if !SILVERLIGHT && !NETFX_CORE
+      OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, index));
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, item, existing, index));
+#endif
+    }
+
+    internal virtual void ClearItems()
+    {
+      CheckReentrancy();
+
+      foreach (JToken item in ChildrenTokens)
+      {
+        item.Parent = null;
+        item.Previous = null;
+        item.Next = null;
+      }
+
+      ChildrenTokens.Clear();
+
+#if !SILVERLIGHT && !NETFX_CORE
+      OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
+#endif
+    }
+
+    internal virtual void ReplaceItem(JToken existing, JToken replacement)
+    {
+      if (existing == null || existing.Parent != this)
+        return;
+
+      int index = IndexOfItem(existing);
+      SetItem(index, replacement);
+    }
+
+    internal virtual bool ContainsItem(JToken item)
+    {
+      return (IndexOfItem(item) != -1);
+    }
+
+    internal virtual void CopyItemsTo(Array array, int arrayIndex)
+    {
+      if (array == null)
+        throw new ArgumentNullException("array");
+      if (arrayIndex < 0)
+        throw new ArgumentOutOfRangeException("arrayIndex", "arrayIndex is less than 0.");
+      if (arrayIndex >= array.Length)
+        throw new ArgumentException("arrayIndex is equal to or greater than the length of array.");
+      if (Count > array.Length - arrayIndex)
+        throw new ArgumentException("The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array.");
+
+      int index = 0;
+      foreach (JToken token in ChildrenTokens)
+      {
+        array.SetValue(token, arrayIndex + index);
+        index++;
+      }
+    }
+
+    internal static bool IsTokenUnchanged(JToken currentValue, JToken newValue)
+    {
+      JValue v1 = currentValue as JValue;
+      if (v1 != null)
+      {
+        // null will get turned into a JValue of type null
+        if (v1.Type == JTokenType.Null && newValue == null)
+          return true;
+
+        return v1.Equals(newValue);
+      }
+
+      return false;
+    }
+
+    internal virtual void ValidateToken(JToken o, JToken existing)
+    {
+      ValidationUtils.ArgumentNotNull(o, "o");
+
+      if (o.Type == JTokenType.Property)
+        throw new ArgumentException("Can not add {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, o.GetType(), GetType()));
+    }
+
+    /// <summary>
+    /// Adds the specified content as children of this <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="content">The content to be added.</param>
+    public virtual void Add(object content)
+    {
+      AddInternal(ChildrenTokens.Count, content, false);
+    }
+
+    internal void AddAndSkipParentCheck(JToken token)
+    {
+      AddInternal(ChildrenTokens.Count, token, true);
+    }
+
+    /// <summary>
+    /// Adds the specified content as the first children of this <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="content">The content to be added.</param>
+    public void AddFirst(object content)
+    {
+      AddInternal(0, content, false);
+    }
+
+    internal void AddInternal(int index, object content, bool skipParentCheck)
+    {
+      if (IsMultiContent(content))
+      {
+        IEnumerable enumerable = (IEnumerable)content;
+
+        int multiIndex = index;
+        foreach (object c in enumerable)
+        {
+          AddInternal(multiIndex, c, skipParentCheck);
+          multiIndex++;
+        }
+      }
+      else
+      {
+        JToken item = CreateFromContent(content);
+
+        InsertItem(index, item, skipParentCheck);
+      }
+    }
+
+    internal JToken CreateFromContent(object content)
+    {
+      if (content is JToken)
+        return (JToken)content;
+      
+      return new JValue(content);
+    }
+
+    /// <summary>
+    /// Creates an <see cref="JsonWriter"/> that can be used to add tokens to the <see cref="JToken"/>.
+    /// </summary>
+    /// <returns>An <see cref="JsonWriter"/> that is ready to have content written to it.</returns>
+    public JsonWriter CreateWriter()
+    {
+      return new JTokenWriter(this);
+    }
+
+    /// <summary>
+    /// Replaces the children nodes of this token with the specified content.
+    /// </summary>
+    /// <param name="content">The content.</param>
+    public void ReplaceAll(object content)
+    {
+      ClearItems();
+      Add(content);
+    }
+
+    /// <summary>
+    /// Removes the child nodes from this token.
+    /// </summary>
+    public void RemoveAll()
+    {
+      ClearItems();
+    }
+
+    internal void ReadTokenFrom(JsonReader r)
+    {
+      int startDepth = r.Depth;
+
+      if (!r.Read())
+        throw new Exception("Error reading {0} from JsonReader.".FormatWith(CultureInfo.InvariantCulture, GetType().Name));
+
+      ReadContentFrom(r);
+
+      int endDepth = r.Depth;
+
+      if (endDepth > startDepth)
+        throw new Exception("Unexpected end of content while loading {0}.".FormatWith(CultureInfo.InvariantCulture, GetType().Name));
+    }
+
+    internal void ReadContentFrom(JsonReader r)
+    {
+      ValidationUtils.ArgumentNotNull(r, "r");
+      IJsonLineInfo lineInfo = r as IJsonLineInfo;
+
+      JContainer parent = this;
+
+      do
+      {
+        if (parent is JProperty && ((JProperty)parent).Value != null)
+        {
+          if (parent == this)
+            return;
+
+          parent = parent.Parent;
+        }
+
+        switch (r.TokenType)
+        {
+          case JsonToken.None:
+            // new reader. move to actual content
+            break;
+          case JsonToken.StartArray:
+            JArray a = new JArray();
+            a.SetLineInfo(lineInfo);
+            parent.Add(a);
+            parent = a;
+            break;
+
+          case JsonToken.EndArray:
+            if (parent == this)
+              return;
+
+            parent = parent.Parent;
+            break;
+          case JsonToken.StartObject:
+            JObject o = new JObject();
+            o.SetLineInfo(lineInfo);
+            parent.Add(o);
+            parent = o;
+            break;
+          case JsonToken.EndObject:
+            if (parent == this)
+              return;
+
+            parent = parent.Parent;
+            break;
+          case JsonToken.StartConstructor:
+            JConstructor constructor = new JConstructor(r.Value.ToString());
+            constructor.SetLineInfo(constructor);
+            parent.Add(constructor);
+            parent = constructor;
+            break;
+          case JsonToken.EndConstructor:
+            if (parent == this)
+              return;
+
+            parent = parent.Parent;
+            break;
+          case JsonToken.String:
+          case JsonToken.Integer:
+          case JsonToken.Float:
+          case JsonToken.Date:
+          case JsonToken.Boolean:
+          case JsonToken.Bytes:
+            JValue v = new JValue(r.Value);
+            v.SetLineInfo(lineInfo);
+            parent.Add(v);
+            break;
+          case JsonToken.Comment:
+            v = JValue.CreateComment(r.Value.ToString());
+            v.SetLineInfo(lineInfo);
+            parent.Add(v);
+            break;
+          case JsonToken.Null:
+            v = new JValue(null, JTokenType.Null);
+            v.SetLineInfo(lineInfo);
+            parent.Add(v);
+            break;
+          case JsonToken.Undefined:
+            v = new JValue(null, JTokenType.Undefined);
+            v.SetLineInfo(lineInfo);
+            parent.Add(v);
+            break;
+          case JsonToken.PropertyName:
+            string propertyName = r.Value.ToString();
+            JProperty property = new JProperty(propertyName);
+            property.SetLineInfo(lineInfo);
+            JObject parentObject = (JObject) parent;
+            // handle multiple properties with the same name in JSON
+            JProperty existingPropertyWithName = parentObject.Property(propertyName);
+            if (existingPropertyWithName == null)
+              parent.Add(property);
+            else
+              existingPropertyWithName.Replace(property);
+            parent = property;
+            break;
+          default:
+            throw new InvalidOperationException("The JsonReader should not be on a token of type {0}.".FormatWith(CultureInfo.InvariantCulture, r.TokenType));
+        }
+      }
+      while (r.Read());
+    }
+
+    internal int ContentsHashCode()
+    {
+      int hashCode = 0;
+      foreach (JToken item in ChildrenTokens)
+      {
+        hashCode ^= item.GetDeepHashCode();
+      }
+      return hashCode;
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    string ITypedList.GetListName(PropertyDescriptor[] listAccessors)
+    {
+      return string.Empty;
+    }
+
+    PropertyDescriptorCollection ITypedList.GetItemProperties(PropertyDescriptor[] listAccessors)
+    {
+      ICustomTypeDescriptor d = First as ICustomTypeDescriptor;
+      if (d != null)
+        return d.GetProperties();
+
+      return null;
+    }
+#endif
+
+    #region IList<JToken> Members
+
+    int IList<JToken>.IndexOf(JToken item)
+    {
+      return IndexOfItem(item);
+    }
+
+    void IList<JToken>.Insert(int index, JToken item)
+    {
+      InsertItem(index, item, false);
+    }
+
+    void IList<JToken>.RemoveAt(int index)
+    {
+      RemoveItemAt(index);
+    }
+
+    JToken IList<JToken>.this[int index]
+    {
+      get { return GetItem(index); }
+      set { SetItem(index, value); }
+    }
+
+    #endregion
+
+    #region ICollection<JToken> Members
+
+    void ICollection<JToken>.Add(JToken item)
+    {
+      Add(item);
+    }
+
+    void ICollection<JToken>.Clear()
+    {
+      ClearItems();
+    }
+
+    bool ICollection<JToken>.Contains(JToken item)
+    {
+      return ContainsItem(item);
+    }
+
+    void ICollection<JToken>.CopyTo(JToken[] array, int arrayIndex)
+    {
+      CopyItemsTo(array, arrayIndex);
+    }
+
+    bool ICollection<JToken>.IsReadOnly
+    {
+      get { return false; }
+    }
+
+    bool ICollection<JToken>.Remove(JToken item)
+    {
+      return RemoveItem(item);
+    }
+
+    #endregion
+
+    private JToken EnsureValue(object value)
+    {
+      if (value == null)
+        return null;
+
+      if (value is JToken)
+        return (JToken) value;
+
+      throw new ArgumentException("Argument is not a JToken.");
+    }
+
+    #region IList Members
+
+    int IList.Add(object value)
+    {
+      Add(EnsureValue(value));
+      return Count - 1;
+    }
+
+    void IList.Clear()
+    {
+      ClearItems();
+    }
+
+    bool IList.Contains(object value)
+    {
+      return ContainsItem(EnsureValue(value));
+    }
+
+    int IList.IndexOf(object value)
+    {
+      return IndexOfItem(EnsureValue(value));
+    }
+
+    void IList.Insert(int index, object value)
+    {
+      InsertItem(index, EnsureValue(value), false);
+    }
+
+    bool IList.IsFixedSize
+    {
+      get { return false; }
+    }
+
+    bool IList.IsReadOnly
+    {
+      get { return false; }
+    }
+
+    void IList.Remove(object value)
+    {
+      RemoveItem(EnsureValue(value));
+    }
+
+    void IList.RemoveAt(int index)
+    {
+      RemoveItemAt(index);
+    }
+
+    object IList.this[int index]
+    {
+      get { return GetItem(index); }
+      set { SetItem(index, EnsureValue(value)); }
+    }
+
+    #endregion
+
+    #region ICollection Members
+
+    void ICollection.CopyTo(Array array, int index)
+    {
+      CopyItemsTo(array, index);
+    }
+
+    /// <summary>
+    /// Gets the count of child JSON tokens.
+    /// </summary>
+    /// <value>The count of child JSON tokens</value>
+    public int Count
+    {
+      get { return ChildrenTokens.Count; }
+    }
+
+    bool ICollection.IsSynchronized
+    {
+      get { return false; }
+    }
+
+    object ICollection.SyncRoot
+    {
+      get
+      {
+        if (_syncRoot == null)
+          Interlocked.CompareExchange(ref _syncRoot, new object(), null);
+
+        return _syncRoot;
+      }
+
+    }
+
+    #endregion
+
+    #region IBindingList Members
+
+#if !SILVERLIGHT && !NETFX_CORE
+    void IBindingList.AddIndex(PropertyDescriptor property)
+    {
+    }
+
+    object IBindingList.AddNew()
+    {
+      AddingNewEventArgs args = new AddingNewEventArgs();
+      OnAddingNew(args);
+
+      if (args.NewObject == null)
+        throw new Exception("Could not determine new value to add to '{0}'.".FormatWith(CultureInfo.InvariantCulture, GetType()));
+
+      if (!(args.NewObject is JToken))
+        throw new Exception("New item to be added to collection must be compatible with {0}.".FormatWith(CultureInfo.InvariantCulture, typeof (JToken)));
+
+      JToken newItem = (JToken)args.NewObject;
+      Add(newItem);
+
+      return newItem;
+    }
+
+    bool IBindingList.AllowEdit
+    {
+      get { return true; }
+    }
+
+    bool IBindingList.AllowNew
+    {
+      get { return true; }
+    }
+
+    bool IBindingList.AllowRemove
+    {
+      get { return true; }
+    }
+
+    void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection direction)
+    {
+      throw new NotSupportedException();
+    }
+
+    int IBindingList.Find(PropertyDescriptor property, object key)
+    {
+      throw new NotSupportedException();
+    }
+
+    bool IBindingList.IsSorted
+    {
+      get { return false; }
+    }
+
+    void IBindingList.RemoveIndex(PropertyDescriptor property)
+    {
+    }
+
+    void IBindingList.RemoveSort()
+    {
+      throw new NotSupportedException();
+    }
+
+    ListSortDirection IBindingList.SortDirection
+    {
+      get { return ListSortDirection.Ascending; }
+    }
+
+    PropertyDescriptor IBindingList.SortProperty
+    {
+      get { return null; }
+    }
+
+    bool IBindingList.SupportsChangeNotification
+    {
+      get { return true; }
+    }
+
+    bool IBindingList.SupportsSearching
+    {
+      get { return false; }
+    }
+
+    bool IBindingList.SupportsSorting
+    {
+      get { return false; }
+    }
+#endif
+
+    #endregion
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JEnumerable.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JEnumerable.cs
@@ -1,93 +1,93 @@
-﻿using System.Collections.Generic;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using Newtonsoft.Json.Utilities;
-using System.Collections;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a collection of <see cref="JToken"/> objects.
-  /// </summary>
-  /// <typeparam name="T">The type of token</typeparam>
-  public struct JEnumerable<T> : IJEnumerable<T> where T : JToken
-  {
-    /// <summary>
-    /// An empty collection of <see cref="JToken"/> objects.
-    /// </summary>
-    public static readonly JEnumerable<T> Empty = new JEnumerable<T>(Enumerable.Empty<T>());
-
-    private readonly IEnumerable<T> _enumerable;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JEnumerable{T}"/> struct.
-    /// </summary>
-    /// <param name="enumerable">The enumerable.</param>
-    public JEnumerable(IEnumerable<T> enumerable)
-    {
-      ValidationUtils.ArgumentNotNull(enumerable, "enumerable");
-
-      _enumerable = enumerable;
-    }
-
-    /// <summary>
-    /// Returns an enumerator that iterates through the collection.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
-    /// </returns>
-    public IEnumerator<T> GetEnumerator()
-    {
-      return _enumerable.GetEnumerator();
-    }
-
-    /// <summary>
-    /// Returns an enumerator that iterates through a collection.
-    /// </summary>
-    /// <returns>
-    /// An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
-    /// </returns>
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return GetEnumerator();
-    }
-
-    /// <summary>
-    /// Gets the <see cref="IJEnumerable{JToken}"/> with the specified key.
-    /// </summary>
-    /// <value></value>
-    public IJEnumerable<JToken> this[object key]
-    {
-      get { return new JEnumerable<JToken>(Extensions.Values<T, JToken>(_enumerable, key)); }
-    }
-
-    /// <summary>
-    /// Determines whether the specified <see cref="System.Object"/> is equal to this instance.
-    /// </summary>
-    /// <param name="obj">The <see cref="System.Object"/> to compare with this instance.</param>
-    /// <returns>
-    /// 	<c>true</c> if the specified <see cref="System.Object"/> is equal to this instance; otherwise, <c>false</c>.
-    /// </returns>
-    public override bool Equals(object obj)
-    {
-      if (obj is JEnumerable<T>)
-        return _enumerable.Equals(((JEnumerable<T>)obj)._enumerable);
-
-      return false;
-    }
-
-    /// <summary>
-    /// Returns a hash code for this instance.
-    /// </summary>
-    /// <returns>
-    /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 
-    /// </returns>
-    public override int GetHashCode()
-    {
-      return _enumerable.GetHashCode();
-    }
-  }
-}
+﻿using System.Collections.Generic;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using Newtonsoft.Json.Utilities;
+using System.Collections;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a collection of <see cref="JToken"/> objects.
+  /// </summary>
+  /// <typeparam name="T">The type of token</typeparam>
+  public struct JEnumerable<T> : IJEnumerable<T> where T : JToken
+  {
+    /// <summary>
+    /// An empty collection of <see cref="JToken"/> objects.
+    /// </summary>
+    public static readonly JEnumerable<T> Empty = new JEnumerable<T>(Enumerable.Empty<T>());
+
+    private readonly IEnumerable<T> _enumerable;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JEnumerable{T}"/> struct.
+    /// </summary>
+    /// <param name="enumerable">The enumerable.</param>
+    public JEnumerable(IEnumerable<T> enumerable)
+    {
+      ValidationUtils.ArgumentNotNull(enumerable, "enumerable");
+
+      _enumerable = enumerable;
+    }
+
+    /// <summary>
+    /// Returns an enumerator that iterates through the collection.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
+    /// </returns>
+    public IEnumerator<T> GetEnumerator()
+    {
+      return _enumerable.GetEnumerator();
+    }
+
+    /// <summary>
+    /// Returns an enumerator that iterates through a collection.
+    /// </summary>
+    /// <returns>
+    /// An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
+    /// </returns>
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return GetEnumerator();
+    }
+
+    /// <summary>
+    /// Gets the <see cref="IJEnumerable{JToken}"/> with the specified key.
+    /// </summary>
+    /// <value></value>
+    public IJEnumerable<JToken> this[object key]
+    {
+      get { return new JEnumerable<JToken>(Extensions.Values<T, JToken>(_enumerable, key)); }
+    }
+
+    /// <summary>
+    /// Determines whether the specified <see cref="System.Object"/> is equal to this instance.
+    /// </summary>
+    /// <param name="obj">The <see cref="System.Object"/> to compare with this instance.</param>
+    /// <returns>
+    /// 	<c>true</c> if the specified <see cref="System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+    /// </returns>
+    public override bool Equals(object obj)
+    {
+      if (obj is JEnumerable<T>)
+        return _enumerable.Equals(((JEnumerable<T>)obj)._enumerable);
+
+      return false;
+    }
+
+    /// <summary>
+    /// Returns a hash code for this instance.
+    /// </summary>
+    /// <returns>
+    /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 
+    /// </returns>
+    public override int GetHashCode()
+    {
+      return _enumerable.GetHashCode();
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JObject.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JObject.cs
@@ -1,729 +1,729 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Collections.Specialized;
-using System.ComponentModel;
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System.Dynamic;
-using System.Linq.Expressions;
-#endif
-using System.IO;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a JSON object.
-  /// </summary>
-  public class JObject : JContainer, IDictionary<string, JToken>, INotifyPropertyChanged
-#if !(PocketPC || SILVERLIGHT || NETFX_CORE)
-    , ICustomTypeDescriptor
-#endif
-#if !(PocketPC || SILVERLIGHT || NET20 || NETFX_CORE)
-    , INotifyPropertyChanging
-#endif
-  {
-    private readonly JPropertyKeyedCollection _properties = new JPropertyKeyedCollection();
-
-    /// <summary>
-    /// Gets the container's children tokens.
-    /// </summary>
-    /// <value>The container's children tokens.</value>
-    protected override IList<JToken> ChildrenTokens
-    {
-      get { return _properties; }
-    }
-
-    /// <summary>
-    /// Occurs when a property value changes.
-    /// </summary>
-    public event PropertyChangedEventHandler PropertyChanged;
-
-#if !(PocketPC || SILVERLIGHT || NET20 || NETFX_CORE)
-    /// <summary>
-    /// Occurs when a property value is changing.
-    /// </summary>
-    public event PropertyChangingEventHandler PropertyChanging;
-#endif
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JObject"/> class.
-    /// </summary>
-    public JObject()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JObject"/> class from another <see cref="JObject"/> object.
-    /// </summary>
-    /// <param name="other">A <see cref="JObject"/> object to copy from.</param>
-    public JObject(JObject other)
-      : base(other)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JObject"/> class with the specified content.
-    /// </summary>
-    /// <param name="content">The contents of the object.</param>
-    public JObject(params object[] content)
-      : this((object)content)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JObject"/> class with the specified content.
-    /// </summary>
-    /// <param name="content">The contents of the object.</param>
-    public JObject(object content)
-    {
-      Add(content);
-    }
-
-    internal override bool DeepEquals(JToken node)
-    {
-      JObject t = node as JObject;
-      return (t != null && ContentsEqual(t));
-    }
-
-    internal override void InsertItem(int index, JToken item, bool skipParentCheck)
-    {
-      // don't add comments to JObject, no name to reference comment by
-      if (item != null && item.Type == JTokenType.Comment)
-        return;
-
-      base.InsertItem(index, item, skipParentCheck);
-    }
-
-    internal override void ValidateToken(JToken o, JToken existing)
-    {
-      ValidationUtils.ArgumentNotNull(o, "o");
-
-      if (o.Type != JTokenType.Property)
-        throw new ArgumentException("Can not add {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, o.GetType(), GetType()));
-
-      JProperty newProperty = (JProperty) o;
-
-      if (existing != null)
-      {
-        JProperty existingProperty = (JProperty) existing;
-
-        if (newProperty.Name == existingProperty.Name)
-          return;
-      }
-
-      if (_properties.TryGetValue(newProperty.Name, out existing))
-        throw new ArgumentException("Can not add property {0} to {1}. Property with the same name already exists on object.".FormatWith(CultureInfo.InvariantCulture, newProperty.Name, GetType()));
-    }
-
-    internal void InternalPropertyChanged(JProperty childProperty)
-    {
-      OnPropertyChanged(childProperty.Name);
-#if !SILVERLIGHT && !NETFX_CORE
-      OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, IndexOfItem(childProperty)));
-#endif
-#if SILVERLIGHT || !(NET20 || NET35)
-      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, childProperty, childProperty, IndexOfItem(childProperty)));
-#endif
-    }
-
-    internal void InternalPropertyChanging(JProperty childProperty)
-    {
-#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
-      OnPropertyChanging(childProperty.Name);
-#endif
-    }
-
-    internal override JToken CloneToken()
-    {
-      return new JObject(this);
-    }
-
-    /// <summary>
-    /// Gets the node type for this <see cref="JToken"/>.
-    /// </summary>
-    /// <value>The type.</value>
-    public override JTokenType Type
-    {
-      get { return JTokenType.Object; }
-    }
-
-    /// <summary>
-    /// Gets an <see cref="IEnumerable{JProperty}"/> of this object's properties.
-    /// </summary>
-    /// <returns>An <see cref="IEnumerable{JProperty}"/> of this object's properties.</returns>
-    public IEnumerable<JProperty> Properties()
-    {
-      return ChildrenTokens.Cast<JProperty>();
-    }
-
-    /// <summary>
-    /// Gets a <see cref="JProperty"/> the specified name.
-    /// </summary>
-    /// <param name="name">The property name.</param>
-    /// <returns>A <see cref="JProperty"/> with the specified name or null.</returns>
-    public JProperty Property(string name)
-    {
-      if (name == null)
-        return null;
-
-      JToken property;
-      _properties.TryGetValue(name, out property);
-      return (JProperty)property;
-    }
-
-    /// <summary>
-    /// Gets an <see cref="JEnumerable{JToken}"/> of this object's property values.
-    /// </summary>
-    /// <returns>An <see cref="JEnumerable{JToken}"/> of this object's property values.</returns>
-    public JEnumerable<JToken> PropertyValues()
-    {
-      return new JEnumerable<JToken>(Properties().Select(p => p.Value));
-    }
-
-    /// <summary>
-    /// Gets the <see cref="JToken"/> with the specified key.
-    /// </summary>
-    /// <value>The <see cref="JToken"/> with the specified key.</value>
-    public override JToken this[object key]
-    {
-      get
-      {
-        ValidationUtils.ArgumentNotNull(key, "o");
-
-        string propertyName = key as string;
-        if (propertyName == null)
-          throw new ArgumentException("Accessed JObject values with invalid key value: {0}. Object property name expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
-
-        return this[propertyName];
-      }
-      set
-      {
-        ValidationUtils.ArgumentNotNull(key, "o");
-
-        string propertyName = key as string;
-        if (propertyName == null)
-          throw new ArgumentException("Set JObject values with invalid key value: {0}. Object property name expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
-
-        this[propertyName] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the <see cref="Newtonsoft.Json.Linq.JToken"/> with the specified property name.
-    /// </summary>
-    /// <value></value>
-    public JToken this[string propertyName]
-    {
-      get
-      {
-        ValidationUtils.ArgumentNotNull(propertyName, "propertyName");
-
-        JProperty property = Property(propertyName);
-
-        return (property != null) ? property.Value : null;
-      }
-      set
-      {
-        JProperty property = Property(propertyName);
-        if (property != null)
-        {
-          property.Value = value;
-        }
-        else
-        {
-#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
-          OnPropertyChanging(propertyName);
-#endif
-          Add(new JProperty(propertyName, value));
-          OnPropertyChanged(propertyName);
-        }
-      }
-    }
-
-    /// <summary>
-    /// Loads an <see cref="JObject"/> from a <see cref="JsonReader"/>. 
-    /// </summary>
-    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JObject"/>.</param>
-    /// <returns>A <see cref="JObject"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
-    public static new JObject Load(JsonReader reader)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-
-      if (reader.TokenType == JsonToken.None)
-      {
-        if (!reader.Read())
-          throw new Exception("Error reading JObject from JsonReader.");
-      }
-
-      if (reader.TokenType != JsonToken.StartObject)
-      {
-          throw new Exception(
-              "Error reading JObject from JsonReader. Current JsonReader item is not an object: {0}".FormatWith(
-                  CultureInfo.InvariantCulture, reader.TokenType));
-      }
-
-      JObject o = new JObject();
-      o.SetLineInfo(reader as IJsonLineInfo);
-      
-      o.ReadTokenFrom(reader);
-
-      return o;
-    }
-
-    /// <summary>
-    /// Load a <see cref="JObject"/> from a string that contains JSON.
-    /// </summary>
-    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
-    /// <returns>A <see cref="JObject"/> populated from the string that contains JSON.</returns>
-    public static new JObject Parse(string json)
-    {
-      JsonReader jsonReader = new JsonTextReader(new StringReader(json));
-
-      JObject o = Load(jsonReader);
-
-      if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
-        throw new Exception("Additional text found in JSON string after parsing content.");
-
-      return o;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JObject"/> from an object.
-    /// </summary>
-    /// <param name="o">The object that will be used to create <see cref="JObject"/>.</param>
-    /// <returns>A <see cref="JObject"/> with the values of the specified object</returns>
-    public static new JObject FromObject(object o)
-    {
-      return FromObject(o, new JsonSerializer());
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JArray"/> from an object.
-    /// </summary>
-    /// <param name="o">The object that will be used to create <see cref="JArray"/>.</param>
-    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used to read the object.</param>
-    /// <returns>A <see cref="JArray"/> with the values of the specified object</returns>
-    public static new JObject FromObject(object o, JsonSerializer jsonSerializer)
-    {
-      JToken token = FromObjectInternal(o, jsonSerializer);
-
-      if (token != null && token.Type != JTokenType.Object)
-        throw new ArgumentException("Object serialized to {0}. JObject instance expected.".FormatWith(CultureInfo.InvariantCulture, token.Type));
-
-      return (JObject)token;
-    }
-
-    /// <summary>
-    /// Writes this token to a <see cref="JsonWriter"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
-    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
-    {
-      writer.WriteStartObject();
-
-      foreach (JProperty property in ChildrenTokens)
-      {
-        property.WriteTo(writer, converters);
-      }
-
-      writer.WriteEndObject();
-    }
-
-    #region IDictionary<string,JToken> Members
-    /// <summary>
-    /// Adds the specified property name.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    /// <param name="value">The value.</param>
-    public void Add(string propertyName, JToken value)
-    {
-      Add(new JProperty(propertyName, value));
-    }
-
-    bool IDictionary<string, JToken>.ContainsKey(string key)
-    {
-      return _properties.Contains(key);
-    }
-
-    ICollection<string> IDictionary<string, JToken>.Keys
-    {
-      // todo: make order the collection returned match JObject order
-      get { return _properties.Keys; }
-    }
-
-    /// <summary>
-    /// Removes the property with the specified name.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    /// <returns>true if item was successfully removed; otherwise, false.</returns>
-    public bool Remove(string propertyName)
-    {
-      JProperty property = Property(propertyName);
-      if (property == null)
-        return false;
-
-      property.Remove();
-      return true;
-    }
-
-    /// <summary>
-    /// Tries the get value.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    /// <param name="value">The value.</param>
-    /// <returns>true if a value was successfully retrieved; otherwise, false.</returns>
-    public bool TryGetValue(string propertyName, out JToken value)
-    {
-      JProperty property = Property(propertyName);
-      if (property == null)
-      {
-        value = null;
-        return false;
-      }
-
-      value = property.Value;
-      return true;
-    }
-
-    ICollection<JToken> IDictionary<string, JToken>.Values
-    {
-      get
-      {
-        // todo: need to wrap _properties.Values with a collection to get the JProperty value
-        throw new NotImplementedException();
-      }
-    }
-
-    #endregion
-
-    #region ICollection<KeyValuePair<string,JToken>> Members
-
-    void ICollection<KeyValuePair<string,JToken>>.Add(KeyValuePair<string, JToken> item)
-    {
-      Add(new JProperty(item.Key, item.Value));
-    }
-
-    void ICollection<KeyValuePair<string, JToken>>.Clear()
-    {
-      RemoveAll();
-    }
-
-    bool ICollection<KeyValuePair<string,JToken>>.Contains(KeyValuePair<string, JToken> item)
-    {
-      JProperty property = Property(item.Key);
-      if (property == null)
-        return false;
-
-      return (property.Value == item.Value);
-    }
-
-    void ICollection<KeyValuePair<string,JToken>>.CopyTo(KeyValuePair<string, JToken>[] array, int arrayIndex)
-    {
-      if (array == null)
-        throw new ArgumentNullException("array");
-      if (arrayIndex < 0)
-        throw new ArgumentOutOfRangeException("arrayIndex", "arrayIndex is less than 0.");
-      if (arrayIndex >= array.Length)
-        throw new ArgumentException("arrayIndex is equal to or greater than the length of array.");
-      if (Count > array.Length - arrayIndex)
-        throw new ArgumentException("The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array.");
-
-      int index = 0;
-      foreach (JProperty property in ChildrenTokens)
-      {
-        array[arrayIndex + index] = new KeyValuePair<string, JToken>(property.Name, property.Value);
-        index++;
-      }
-    }
-
-    bool ICollection<KeyValuePair<string,JToken>>.IsReadOnly
-    {
-      get { return false; }
-    }
-
-    bool ICollection<KeyValuePair<string,JToken>>.Remove(KeyValuePair<string, JToken> item)
-    {
-      if (!((ICollection<KeyValuePair<string,JToken>>)this).Contains(item))
-        return false;
-
-      ((IDictionary<string, JToken>)this).Remove(item.Key);
-      return true;
-    }
-
-    #endregion
-
-    internal override int GetDeepHashCode()
-    {
-      return ContentsHashCode();
-    }
-
-    /// <summary>
-    /// Returns an enumerator that iterates through the collection.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
-    /// </returns>
-    public IEnumerator<KeyValuePair<string, JToken>> GetEnumerator()
-    {
-      foreach (JProperty property in ChildrenTokens)
-      {
-        yield return new KeyValuePair<string, JToken>(property.Name, property.Value);
-      }
-    }
-
-    /// <summary>
-    /// Raises the <see cref="PropertyChanged"/> event with the provided arguments.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    protected virtual void OnPropertyChanged(string propertyName)
-    {
-      if (PropertyChanged != null)
-        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-    }
-
-#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
-    /// <summary>
-    /// Raises the <see cref="PropertyChanging"/> event with the provided arguments.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    protected virtual void OnPropertyChanging(string propertyName)
-    {
-      if (PropertyChanging != null)
-        PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
-    }
-#endif
-
-#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
-    // include custom type descriptor on JObject rather than use a provider because the properties are specific to a type
-    #region ICustomTypeDescriptor
-    /// <summary>
-    /// Returns the properties for this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the properties for this component instance.
-    /// </returns>
-    PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
-    {
-      return ((ICustomTypeDescriptor) this).GetProperties(null);
-    }
-
-    private static Type GetTokenPropertyType(JToken token)
-    {
-      if (token is JValue)
-      {
-        JValue v = (JValue)token;
-        return (v.Value != null) ? v.Value.GetType() : typeof(object);
-      }
-
-      return token.GetType();
-    }
-
-    /// <summary>
-    /// Returns the properties for this instance of a component using the attribute array as a filter.
-    /// </summary>
-    /// <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param>
-    /// <returns>
-    /// A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the filtered properties for this component instance.
-    /// </returns>
-    PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
-    {
-      PropertyDescriptorCollection descriptors = new PropertyDescriptorCollection(null);
-
-      foreach (KeyValuePair<string, JToken> propertyValue in this)
-      {
-        descriptors.Add(new JPropertyDescriptor(propertyValue.Key, GetTokenPropertyType(propertyValue.Value)));
-      }
-
-      return descriptors;
-    }
-
-    /// <summary>
-    /// Returns a collection of custom attributes for this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// An <see cref="T:System.ComponentModel.AttributeCollection"/> containing the attributes for this object.
-    /// </returns>
-    AttributeCollection ICustomTypeDescriptor.GetAttributes()
-    {
-      return AttributeCollection.Empty;
-    }
-
-    /// <summary>
-    /// Returns the class name of this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// The class name of the object, or null if the class does not have a name.
-    /// </returns>
-    string ICustomTypeDescriptor.GetClassName()
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// Returns the name of this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// The name of the object, or null if the object does not have a name.
-    /// </returns>
-    string ICustomTypeDescriptor.GetComponentName()
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// Returns a type converter for this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.ComponentModel.TypeConverter"/> that is the converter for this object, or null if there is no <see cref="T:System.ComponentModel.TypeConverter"/> for this object.
-    /// </returns>
-    TypeConverter ICustomTypeDescriptor.GetConverter()
-    {
-      return new TypeConverter();
-    }
-
-    /// <summary>
-    /// Returns the default event for this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// An <see cref="T:System.ComponentModel.EventDescriptor"/> that represents the default event for this object, or null if this object does not have events.
-    /// </returns>
-    EventDescriptor ICustomTypeDescriptor.GetDefaultEvent()
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// Returns the default property for this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the default property for this object, or null if this object does not have properties.
-    /// </returns>
-    PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty()
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// Returns an editor of the specified type for this instance of a component.
-    /// </summary>
-    /// <param name="editorBaseType">A <see cref="T:System.Type"/> that represents the editor for this object.</param>
-    /// <returns>
-    /// An <see cref="T:System.Object"/> of the specified type that is the editor for this object, or null if the editor cannot be found.
-    /// </returns>
-    object ICustomTypeDescriptor.GetEditor(Type editorBaseType)
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// Returns the events for this instance of a component using the specified attribute array as a filter.
-    /// </summary>
-    /// <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param>
-    /// <returns>
-    /// An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the filtered events for this component instance.
-    /// </returns>
-    EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes)
-    {
-      return EventDescriptorCollection.Empty;
-    }
-
-    /// <summary>
-    /// Returns the events for this instance of a component.
-    /// </summary>
-    /// <returns>
-    /// An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the events for this component instance.
-    /// </returns>
-    EventDescriptorCollection ICustomTypeDescriptor.GetEvents()
-    {
-      return EventDescriptorCollection.Empty;
-    }
-
-    /// <summary>
-    /// Returns an object that contains the property described by the specified property descriptor.
-    /// </summary>
-    /// <param name="pd">A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the property whose owner is to be found.</param>
-    /// <returns>
-    /// An <see cref="T:System.Object"/> that represents the owner of the specified property.
-    /// </returns>
-    object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd)
-    {
-      return null;
-    }
-    #endregion
-#endif
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    /// <summary>
-    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
-    /// </summary>
-    /// <param name="parameter">The expression tree representation of the runtime value.</param>
-    /// <returns>
-    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
-    /// </returns>
-    protected override DynamicMetaObject GetMetaObject(Expression parameter)
-    {
-      return new DynamicProxyMetaObject<JObject>(parameter, this, new JObjectDynamicProxy(), true);
-    }
-
-    private class JObjectDynamicProxy : DynamicProxy<JObject>
-    {
-      public override bool TryGetMember(JObject instance, GetMemberBinder binder, out object result)
-      {
-        // result can be null
-        result = instance[binder.Name];
-        return true;
-      }
-
-      public override bool TrySetMember(JObject instance, SetMemberBinder binder, object value)
-      {
-        JToken v = value as JToken;
-
-        // this can throw an error if value isn't a valid for a JValue
-        if (v == null)
-          v = new JValue(value);
-
-        instance[binder.Name] = v;
-        return true;
-      }
-
-      public override IEnumerable<string> GetDynamicMemberNames(JObject instance)
-      {
-        return instance.Properties().Select(p => p.Name);
-      }
-    }
-#endif
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.ComponentModel;
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System.Dynamic;
+using System.Linq.Expressions;
+#endif
+using System.IO;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a JSON object.
+  /// </summary>
+  public class JObject : JContainer, IDictionary<string, JToken>, INotifyPropertyChanged
+#if !(PocketPC || SILVERLIGHT || NETFX_CORE)
+    , ICustomTypeDescriptor
+#endif
+#if !(PocketPC || SILVERLIGHT || NET20 || NETFX_CORE)
+    , INotifyPropertyChanging
+#endif
+  {
+    private readonly JPropertyKeyedCollection _properties = new JPropertyKeyedCollection();
+
+    /// <summary>
+    /// Gets the container's children tokens.
+    /// </summary>
+    /// <value>The container's children tokens.</value>
+    protected override IList<JToken> ChildrenTokens
+    {
+      get { return _properties; }
+    }
+
+    /// <summary>
+    /// Occurs when a property value changes.
+    /// </summary>
+    public event PropertyChangedEventHandler PropertyChanged;
+
+#if !(PocketPC || SILVERLIGHT || NET20 || NETFX_CORE)
+    /// <summary>
+    /// Occurs when a property value is changing.
+    /// </summary>
+    public event PropertyChangingEventHandler PropertyChanging;
+#endif
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JObject"/> class.
+    /// </summary>
+    public JObject()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JObject"/> class from another <see cref="JObject"/> object.
+    /// </summary>
+    /// <param name="other">A <see cref="JObject"/> object to copy from.</param>
+    public JObject(JObject other)
+      : base(other)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JObject"/> class with the specified content.
+    /// </summary>
+    /// <param name="content">The contents of the object.</param>
+    public JObject(params object[] content)
+      : this((object)content)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JObject"/> class with the specified content.
+    /// </summary>
+    /// <param name="content">The contents of the object.</param>
+    public JObject(object content)
+    {
+      Add(content);
+    }
+
+    internal override bool DeepEquals(JToken node)
+    {
+      JObject t = node as JObject;
+      return (t != null && ContentsEqual(t));
+    }
+
+    internal override void InsertItem(int index, JToken item, bool skipParentCheck)
+    {
+      // don't add comments to JObject, no name to reference comment by
+      if (item != null && item.Type == JTokenType.Comment)
+        return;
+
+      base.InsertItem(index, item, skipParentCheck);
+    }
+
+    internal override void ValidateToken(JToken o, JToken existing)
+    {
+      ValidationUtils.ArgumentNotNull(o, "o");
+
+      if (o.Type != JTokenType.Property)
+        throw new ArgumentException("Can not add {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, o.GetType(), GetType()));
+
+      JProperty newProperty = (JProperty) o;
+
+      if (existing != null)
+      {
+        JProperty existingProperty = (JProperty) existing;
+
+        if (newProperty.Name == existingProperty.Name)
+          return;
+      }
+
+      if (_properties.TryGetValue(newProperty.Name, out existing))
+        throw new ArgumentException("Can not add property {0} to {1}. Property with the same name already exists on object.".FormatWith(CultureInfo.InvariantCulture, newProperty.Name, GetType()));
+    }
+
+    internal void InternalPropertyChanged(JProperty childProperty)
+    {
+      OnPropertyChanged(childProperty.Name);
+#if !SILVERLIGHT && !NETFX_CORE
+      OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, IndexOfItem(childProperty)));
+#endif
+#if SILVERLIGHT || !(NET20 || NET35)
+      OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, childProperty, childProperty, IndexOfItem(childProperty)));
+#endif
+    }
+
+    internal void InternalPropertyChanging(JProperty childProperty)
+    {
+#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
+      OnPropertyChanging(childProperty.Name);
+#endif
+    }
+
+    internal override JToken CloneToken()
+    {
+      return new JObject(this);
+    }
+
+    /// <summary>
+    /// Gets the node type for this <see cref="JToken"/>.
+    /// </summary>
+    /// <value>The type.</value>
+    public override JTokenType Type
+    {
+      get { return JTokenType.Object; }
+    }
+
+    /// <summary>
+    /// Gets an <see cref="IEnumerable{JProperty}"/> of this object's properties.
+    /// </summary>
+    /// <returns>An <see cref="IEnumerable{JProperty}"/> of this object's properties.</returns>
+    public IEnumerable<JProperty> Properties()
+    {
+      return ChildrenTokens.Cast<JProperty>();
+    }
+
+    /// <summary>
+    /// Gets a <see cref="JProperty"/> the specified name.
+    /// </summary>
+    /// <param name="name">The property name.</param>
+    /// <returns>A <see cref="JProperty"/> with the specified name or null.</returns>
+    public JProperty Property(string name)
+    {
+      if (name == null)
+        return null;
+
+      JToken property;
+      _properties.TryGetValue(name, out property);
+      return (JProperty)property;
+    }
+
+    /// <summary>
+    /// Gets an <see cref="JEnumerable{JToken}"/> of this object's property values.
+    /// </summary>
+    /// <returns>An <see cref="JEnumerable{JToken}"/> of this object's property values.</returns>
+    public JEnumerable<JToken> PropertyValues()
+    {
+      return new JEnumerable<JToken>(Properties().Select(p => p.Value));
+    }
+
+    /// <summary>
+    /// Gets the <see cref="JToken"/> with the specified key.
+    /// </summary>
+    /// <value>The <see cref="JToken"/> with the specified key.</value>
+    public override JToken this[object key]
+    {
+      get
+      {
+        ValidationUtils.ArgumentNotNull(key, "o");
+
+        string propertyName = key as string;
+        if (propertyName == null)
+          throw new ArgumentException("Accessed JObject values with invalid key value: {0}. Object property name expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
+
+        return this[propertyName];
+      }
+      set
+      {
+        ValidationUtils.ArgumentNotNull(key, "o");
+
+        string propertyName = key as string;
+        if (propertyName == null)
+          throw new ArgumentException("Set JObject values with invalid key value: {0}. Object property name expected.".FormatWith(CultureInfo.InvariantCulture, MiscellaneousUtils.ToString(key)));
+
+        this[propertyName] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets the <see cref="Newtonsoft.Json.Linq.JToken"/> with the specified property name.
+    /// </summary>
+    /// <value></value>
+    public JToken this[string propertyName]
+    {
+      get
+      {
+        ValidationUtils.ArgumentNotNull(propertyName, "propertyName");
+
+        JProperty property = Property(propertyName);
+
+        return (property != null) ? property.Value : null;
+      }
+      set
+      {
+        JProperty property = Property(propertyName);
+        if (property != null)
+        {
+          property.Value = value;
+        }
+        else
+        {
+#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
+          OnPropertyChanging(propertyName);
+#endif
+          Add(new JProperty(propertyName, value));
+          OnPropertyChanged(propertyName);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Loads an <see cref="JObject"/> from a <see cref="JsonReader"/>. 
+    /// </summary>
+    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JObject"/>.</param>
+    /// <returns>A <see cref="JObject"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
+    public static new JObject Load(JsonReader reader)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+
+      if (reader.TokenType == JsonToken.None)
+      {
+        if (!reader.Read())
+          throw new Exception("Error reading JObject from JsonReader.");
+      }
+
+      if (reader.TokenType != JsonToken.StartObject)
+      {
+          throw new Exception(
+              "Error reading JObject from JsonReader. Current JsonReader item is not an object: {0}".FormatWith(
+                  CultureInfo.InvariantCulture, reader.TokenType));
+      }
+
+      JObject o = new JObject();
+      o.SetLineInfo(reader as IJsonLineInfo);
+      
+      o.ReadTokenFrom(reader);
+
+      return o;
+    }
+
+    /// <summary>
+    /// Load a <see cref="JObject"/> from a string that contains JSON.
+    /// </summary>
+    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
+    /// <returns>A <see cref="JObject"/> populated from the string that contains JSON.</returns>
+    public static new JObject Parse(string json)
+    {
+      JsonReader jsonReader = new JsonTextReader(new StringReader(json));
+
+      JObject o = Load(jsonReader);
+
+      if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
+        throw new Exception("Additional text found in JSON string after parsing content.");
+
+      return o;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JObject"/> from an object.
+    /// </summary>
+    /// <param name="o">The object that will be used to create <see cref="JObject"/>.</param>
+    /// <returns>A <see cref="JObject"/> with the values of the specified object</returns>
+    public static new JObject FromObject(object o)
+    {
+      return FromObject(o, new JsonSerializer());
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JArray"/> from an object.
+    /// </summary>
+    /// <param name="o">The object that will be used to create <see cref="JArray"/>.</param>
+    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used to read the object.</param>
+    /// <returns>A <see cref="JArray"/> with the values of the specified object</returns>
+    public static new JObject FromObject(object o, JsonSerializer jsonSerializer)
+    {
+      JToken token = FromObjectInternal(o, jsonSerializer);
+
+      if (token != null && token.Type != JTokenType.Object)
+        throw new ArgumentException("Object serialized to {0}. JObject instance expected.".FormatWith(CultureInfo.InvariantCulture, token.Type));
+
+      return (JObject)token;
+    }
+
+    /// <summary>
+    /// Writes this token to a <see cref="JsonWriter"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
+    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
+    {
+      writer.WriteStartObject();
+
+      foreach (JProperty property in ChildrenTokens)
+      {
+        property.WriteTo(writer, converters);
+      }
+
+      writer.WriteEndObject();
+    }
+
+    #region IDictionary<string,JToken> Members
+    /// <summary>
+    /// Adds the specified property name.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    /// <param name="value">The value.</param>
+    public void Add(string propertyName, JToken value)
+    {
+      Add(new JProperty(propertyName, value));
+    }
+
+    bool IDictionary<string, JToken>.ContainsKey(string key)
+    {
+      return _properties.Contains(key);
+    }
+
+    ICollection<string> IDictionary<string, JToken>.Keys
+    {
+      // todo: make order the collection returned match JObject order
+      get { return _properties.Keys; }
+    }
+
+    /// <summary>
+    /// Removes the property with the specified name.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    /// <returns>true if item was successfully removed; otherwise, false.</returns>
+    public bool Remove(string propertyName)
+    {
+      JProperty property = Property(propertyName);
+      if (property == null)
+        return false;
+
+      property.Remove();
+      return true;
+    }
+
+    /// <summary>
+    /// Tries the get value.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    /// <param name="value">The value.</param>
+    /// <returns>true if a value was successfully retrieved; otherwise, false.</returns>
+    public bool TryGetValue(string propertyName, out JToken value)
+    {
+      JProperty property = Property(propertyName);
+      if (property == null)
+      {
+        value = null;
+        return false;
+      }
+
+      value = property.Value;
+      return true;
+    }
+
+    ICollection<JToken> IDictionary<string, JToken>.Values
+    {
+      get
+      {
+        // todo: need to wrap _properties.Values with a collection to get the JProperty value
+        throw new NotImplementedException();
+      }
+    }
+
+    #endregion
+
+    #region ICollection<KeyValuePair<string,JToken>> Members
+
+    void ICollection<KeyValuePair<string,JToken>>.Add(KeyValuePair<string, JToken> item)
+    {
+      Add(new JProperty(item.Key, item.Value));
+    }
+
+    void ICollection<KeyValuePair<string, JToken>>.Clear()
+    {
+      RemoveAll();
+    }
+
+    bool ICollection<KeyValuePair<string,JToken>>.Contains(KeyValuePair<string, JToken> item)
+    {
+      JProperty property = Property(item.Key);
+      if (property == null)
+        return false;
+
+      return (property.Value == item.Value);
+    }
+
+    void ICollection<KeyValuePair<string,JToken>>.CopyTo(KeyValuePair<string, JToken>[] array, int arrayIndex)
+    {
+      if (array == null)
+        throw new ArgumentNullException("array");
+      if (arrayIndex < 0)
+        throw new ArgumentOutOfRangeException("arrayIndex", "arrayIndex is less than 0.");
+      if (arrayIndex >= array.Length)
+        throw new ArgumentException("arrayIndex is equal to or greater than the length of array.");
+      if (Count > array.Length - arrayIndex)
+        throw new ArgumentException("The number of elements in the source JObject is greater than the available space from arrayIndex to the end of the destination array.");
+
+      int index = 0;
+      foreach (JProperty property in ChildrenTokens)
+      {
+        array[arrayIndex + index] = new KeyValuePair<string, JToken>(property.Name, property.Value);
+        index++;
+      }
+    }
+
+    bool ICollection<KeyValuePair<string,JToken>>.IsReadOnly
+    {
+      get { return false; }
+    }
+
+    bool ICollection<KeyValuePair<string,JToken>>.Remove(KeyValuePair<string, JToken> item)
+    {
+      if (!((ICollection<KeyValuePair<string,JToken>>)this).Contains(item))
+        return false;
+
+      ((IDictionary<string, JToken>)this).Remove(item.Key);
+      return true;
+    }
+
+    #endregion
+
+    internal override int GetDeepHashCode()
+    {
+      return ContentsHashCode();
+    }
+
+    /// <summary>
+    /// Returns an enumerator that iterates through the collection.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
+    /// </returns>
+    public IEnumerator<KeyValuePair<string, JToken>> GetEnumerator()
+    {
+      foreach (JProperty property in ChildrenTokens)
+      {
+        yield return new KeyValuePair<string, JToken>(property.Name, property.Value);
+      }
+    }
+
+    /// <summary>
+    /// Raises the <see cref="PropertyChanged"/> event with the provided arguments.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    protected virtual void OnPropertyChanged(string propertyName)
+    {
+      if (PropertyChanged != null)
+        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+    }
+
+#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
+    /// <summary>
+    /// Raises the <see cref="PropertyChanging"/> event with the provided arguments.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    protected virtual void OnPropertyChanging(string propertyName)
+    {
+      if (PropertyChanging != null)
+        PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
+    }
+#endif
+
+#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
+    // include custom type descriptor on JObject rather than use a provider because the properties are specific to a type
+    #region ICustomTypeDescriptor
+    /// <summary>
+    /// Returns the properties for this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the properties for this component instance.
+    /// </returns>
+    PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
+    {
+      return ((ICustomTypeDescriptor) this).GetProperties(null);
+    }
+
+    private static Type GetTokenPropertyType(JToken token)
+    {
+      if (token is JValue)
+      {
+        JValue v = (JValue)token;
+        return (v.Value != null) ? v.Value.GetType() : typeof(object);
+      }
+
+      return token.GetType();
+    }
+
+    /// <summary>
+    /// Returns the properties for this instance of a component using the attribute array as a filter.
+    /// </summary>
+    /// <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param>
+    /// <returns>
+    /// A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the filtered properties for this component instance.
+    /// </returns>
+    PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
+    {
+      PropertyDescriptorCollection descriptors = new PropertyDescriptorCollection(null);
+
+      foreach (KeyValuePair<string, JToken> propertyValue in this)
+      {
+        descriptors.Add(new JPropertyDescriptor(propertyValue.Key, GetTokenPropertyType(propertyValue.Value)));
+      }
+
+      return descriptors;
+    }
+
+    /// <summary>
+    /// Returns a collection of custom attributes for this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// An <see cref="T:System.ComponentModel.AttributeCollection"/> containing the attributes for this object.
+    /// </returns>
+    AttributeCollection ICustomTypeDescriptor.GetAttributes()
+    {
+      return AttributeCollection.Empty;
+    }
+
+    /// <summary>
+    /// Returns the class name of this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// The class name of the object, or null if the class does not have a name.
+    /// </returns>
+    string ICustomTypeDescriptor.GetClassName()
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// Returns the name of this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// The name of the object, or null if the object does not have a name.
+    /// </returns>
+    string ICustomTypeDescriptor.GetComponentName()
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// Returns a type converter for this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.ComponentModel.TypeConverter"/> that is the converter for this object, or null if there is no <see cref="T:System.ComponentModel.TypeConverter"/> for this object.
+    /// </returns>
+    TypeConverter ICustomTypeDescriptor.GetConverter()
+    {
+      return new TypeConverter();
+    }
+
+    /// <summary>
+    /// Returns the default event for this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// An <see cref="T:System.ComponentModel.EventDescriptor"/> that represents the default event for this object, or null if this object does not have events.
+    /// </returns>
+    EventDescriptor ICustomTypeDescriptor.GetDefaultEvent()
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// Returns the default property for this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the default property for this object, or null if this object does not have properties.
+    /// </returns>
+    PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty()
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// Returns an editor of the specified type for this instance of a component.
+    /// </summary>
+    /// <param name="editorBaseType">A <see cref="T:System.Type"/> that represents the editor for this object.</param>
+    /// <returns>
+    /// An <see cref="T:System.Object"/> of the specified type that is the editor for this object, or null if the editor cannot be found.
+    /// </returns>
+    object ICustomTypeDescriptor.GetEditor(Type editorBaseType)
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// Returns the events for this instance of a component using the specified attribute array as a filter.
+    /// </summary>
+    /// <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param>
+    /// <returns>
+    /// An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the filtered events for this component instance.
+    /// </returns>
+    EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes)
+    {
+      return EventDescriptorCollection.Empty;
+    }
+
+    /// <summary>
+    /// Returns the events for this instance of a component.
+    /// </summary>
+    /// <returns>
+    /// An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the events for this component instance.
+    /// </returns>
+    EventDescriptorCollection ICustomTypeDescriptor.GetEvents()
+    {
+      return EventDescriptorCollection.Empty;
+    }
+
+    /// <summary>
+    /// Returns an object that contains the property described by the specified property descriptor.
+    /// </summary>
+    /// <param name="pd">A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the property whose owner is to be found.</param>
+    /// <returns>
+    /// An <see cref="T:System.Object"/> that represents the owner of the specified property.
+    /// </returns>
+    object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd)
+    {
+      return null;
+    }
+    #endregion
+#endif
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    /// <summary>
+    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+    /// </summary>
+    /// <param name="parameter">The expression tree representation of the runtime value.</param>
+    /// <returns>
+    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+    /// </returns>
+    protected override DynamicMetaObject GetMetaObject(Expression parameter)
+    {
+      return new DynamicProxyMetaObject<JObject>(parameter, this, new JObjectDynamicProxy(), true);
+    }
+
+    private class JObjectDynamicProxy : DynamicProxy<JObject>
+    {
+      public override bool TryGetMember(JObject instance, GetMemberBinder binder, out object result)
+      {
+        // result can be null
+        result = instance[binder.Name];
+        return true;
+      }
+
+      public override bool TrySetMember(JObject instance, SetMemberBinder binder, object value)
+      {
+        JToken v = value as JToken;
+
+        // this can throw an error if value isn't a valid for a JValue
+        if (v == null)
+          v = new JValue(value);
+
+        instance[binder.Name] = v;
+        return true;
+      }
+
+      public override IEnumerable<string> GetDynamicMemberNames(JObject instance)
+      {
+        return instance.Properties().Select(p => p.Name);
+      }
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JPath.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JPath.cs
@@ -1,183 +1,183 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Linq
-{
-  internal class JPath
-  {
-    private readonly string _expression;
-    public List<object> Parts { get; private set; }
-
-    private int _currentIndex;
-
-    public JPath(string expression)
-    {
-      ValidationUtils.ArgumentNotNull(expression, "expression");
-      _expression = expression;
-      Parts = new List<object>();
-
-      ParseMain();
-    }
-
-    private void ParseMain()
-    {
-      int currentPartStartIndex = _currentIndex;
-      bool followingIndexer = false;
-
-      while (_currentIndex < _expression.Length)
-      {
-        char currentChar = _expression[_currentIndex];
-
-        switch (currentChar)
-        {
-          case '[':
-          case '(':
-            if (_currentIndex > currentPartStartIndex)
-            {
-              string member = _expression.Substring(currentPartStartIndex, _currentIndex - currentPartStartIndex);
-              Parts.Add(member);
-            }
-
-            ParseIndexer(currentChar);
-            currentPartStartIndex = _currentIndex + 1;
-            followingIndexer = true;
-            break;
-          case ']':
-          case ')':
-            throw new Exception("Unexpected character while parsing path: " + currentChar);
-          case '.':
-            if (_currentIndex > currentPartStartIndex)
-            {
-              string member = _expression.Substring(currentPartStartIndex, _currentIndex - currentPartStartIndex);
-              Parts.Add(member);
-            }
-            currentPartStartIndex = _currentIndex + 1;
-            followingIndexer = false;
-            break;
-          default:
-            if (followingIndexer)
-              throw new Exception("Unexpected character following indexer: " + currentChar);
-            break;
-        }
-
-        _currentIndex++;
-      }
-
-      if (_currentIndex > currentPartStartIndex)
-      {
-        string member = _expression.Substring(currentPartStartIndex, _currentIndex - currentPartStartIndex);
-        Parts.Add(member);
-      }
-    }
-
-    private void ParseIndexer(char indexerOpenChar)
-    {
-      _currentIndex++;
-
-      char indexerCloseChar = (indexerOpenChar == '[') ? ']' : ')';
-      int indexerStart = _currentIndex;
-      int indexerLength = 0;
-      bool indexerClosed = false;
-
-      while (_currentIndex < _expression.Length)
-      {
-        char currentCharacter = _expression[_currentIndex];
-        if (char.IsDigit(currentCharacter))
-        {
-          indexerLength++;
-        }
-        else if (currentCharacter == indexerCloseChar)
-        {
-          indexerClosed = true;
-          break;
-        }
-        else
-        {
-          throw new Exception("Unexpected character while parsing path indexer: " + currentCharacter);
-        }
-
-        _currentIndex++;
-      }
-
-      if (!indexerClosed)
-        throw new Exception("Path ended with open indexer. Expected " + indexerCloseChar);
-
-      if (indexerLength == 0)
-        throw new Exception("Empty path indexer.");
-
-      string indexer = _expression.Substring(indexerStart, indexerLength);
-      Parts.Add(Convert.ToInt32(indexer, CultureInfo.InvariantCulture));
-    }
-
-    internal JToken Evaluate(JToken root, bool errorWhenNoMatch)
-    {
-      JToken current = root;
-
-      foreach (object part in Parts)
-      {
-        string propertyName = part as string;
-        if (propertyName != null)
-        {
-          JObject o = current as JObject;
-          if (o != null)
-          {
-            current = o[propertyName];
-
-            if (current == null && errorWhenNoMatch)
-              throw new Exception("Property '{0}' does not exist on JObject.".FormatWith(CultureInfo.InvariantCulture, propertyName));
-          }
-          else
-          {
-            if (errorWhenNoMatch)
-              throw new Exception("Property '{0}' not valid on {1}.".FormatWith(CultureInfo.InvariantCulture, propertyName, current.GetType().Name));
-
-            return null;
-          }
-        }
-        else
-        {
-          int index = (int) part;
-
-          JArray a = current as JArray;
-          JConstructor c = current as JConstructor;
-
-          if (a != null)
-          {
-            if (a.Count <= index)
-            {
-              if (errorWhenNoMatch)
-                throw new IndexOutOfRangeException("Index {0} outside the bounds of JArray.".FormatWith(CultureInfo.InvariantCulture, index));
-              
-              return null;
-            }
-
-            current = a[index];
-          }
-          else if (c != null)
-          {
-            if (c.Count <= index)
-            {
-              if (errorWhenNoMatch)
-                throw new IndexOutOfRangeException("Index {0} outside the bounds of JConstructor.".FormatWith(CultureInfo.InvariantCulture, index));
-
-              return null;
-            }
-
-            current = c[index];
-          }
-          else
-          {
-            if (errorWhenNoMatch)
-              throw new Exception("Index {0} not valid on {1}.".FormatWith(CultureInfo.InvariantCulture, index, current.GetType().Name));
-
-            return null;
-          }
-        }
-      }
-
-      return current;
-    }
-  }
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Linq
+{
+  internal class JPath
+  {
+    private readonly string _expression;
+    public List<object> Parts { get; private set; }
+
+    private int _currentIndex;
+
+    public JPath(string expression)
+    {
+      ValidationUtils.ArgumentNotNull(expression, "expression");
+      _expression = expression;
+      Parts = new List<object>();
+
+      ParseMain();
+    }
+
+    private void ParseMain()
+    {
+      int currentPartStartIndex = _currentIndex;
+      bool followingIndexer = false;
+
+      while (_currentIndex < _expression.Length)
+      {
+        char currentChar = _expression[_currentIndex];
+
+        switch (currentChar)
+        {
+          case '[':
+          case '(':
+            if (_currentIndex > currentPartStartIndex)
+            {
+              string member = _expression.Substring(currentPartStartIndex, _currentIndex - currentPartStartIndex);
+              Parts.Add(member);
+            }
+
+            ParseIndexer(currentChar);
+            currentPartStartIndex = _currentIndex + 1;
+            followingIndexer = true;
+            break;
+          case ']':
+          case ')':
+            throw new Exception("Unexpected character while parsing path: " + currentChar);
+          case '.':
+            if (_currentIndex > currentPartStartIndex)
+            {
+              string member = _expression.Substring(currentPartStartIndex, _currentIndex - currentPartStartIndex);
+              Parts.Add(member);
+            }
+            currentPartStartIndex = _currentIndex + 1;
+            followingIndexer = false;
+            break;
+          default:
+            if (followingIndexer)
+              throw new Exception("Unexpected character following indexer: " + currentChar);
+            break;
+        }
+
+        _currentIndex++;
+      }
+
+      if (_currentIndex > currentPartStartIndex)
+      {
+        string member = _expression.Substring(currentPartStartIndex, _currentIndex - currentPartStartIndex);
+        Parts.Add(member);
+      }
+    }
+
+    private void ParseIndexer(char indexerOpenChar)
+    {
+      _currentIndex++;
+
+      char indexerCloseChar = (indexerOpenChar == '[') ? ']' : ')';
+      int indexerStart = _currentIndex;
+      int indexerLength = 0;
+      bool indexerClosed = false;
+
+      while (_currentIndex < _expression.Length)
+      {
+        char currentCharacter = _expression[_currentIndex];
+        if (char.IsDigit(currentCharacter))
+        {
+          indexerLength++;
+        }
+        else if (currentCharacter == indexerCloseChar)
+        {
+          indexerClosed = true;
+          break;
+        }
+        else
+        {
+          throw new Exception("Unexpected character while parsing path indexer: " + currentCharacter);
+        }
+
+        _currentIndex++;
+      }
+
+      if (!indexerClosed)
+        throw new Exception("Path ended with open indexer. Expected " + indexerCloseChar);
+
+      if (indexerLength == 0)
+        throw new Exception("Empty path indexer.");
+
+      string indexer = _expression.Substring(indexerStart, indexerLength);
+      Parts.Add(Convert.ToInt32(indexer, CultureInfo.InvariantCulture));
+    }
+
+    internal JToken Evaluate(JToken root, bool errorWhenNoMatch)
+    {
+      JToken current = root;
+
+      foreach (object part in Parts)
+      {
+        string propertyName = part as string;
+        if (propertyName != null)
+        {
+          JObject o = current as JObject;
+          if (o != null)
+          {
+            current = o[propertyName];
+
+            if (current == null && errorWhenNoMatch)
+              throw new Exception("Property '{0}' does not exist on JObject.".FormatWith(CultureInfo.InvariantCulture, propertyName));
+          }
+          else
+          {
+            if (errorWhenNoMatch)
+              throw new Exception("Property '{0}' not valid on {1}.".FormatWith(CultureInfo.InvariantCulture, propertyName, current.GetType().Name));
+
+            return null;
+          }
+        }
+        else
+        {
+          int index = (int) part;
+
+          JArray a = current as JArray;
+          JConstructor c = current as JConstructor;
+
+          if (a != null)
+          {
+            if (a.Count <= index)
+            {
+              if (errorWhenNoMatch)
+                throw new IndexOutOfRangeException("Index {0} outside the bounds of JArray.".FormatWith(CultureInfo.InvariantCulture, index));
+              
+              return null;
+            }
+
+            current = a[index];
+          }
+          else if (c != null)
+          {
+            if (c.Count <= index)
+            {
+              if (errorWhenNoMatch)
+                throw new IndexOutOfRangeException("Index {0} outside the bounds of JConstructor.".FormatWith(CultureInfo.InvariantCulture, index));
+
+              return null;
+            }
+
+            current = c[index];
+          }
+          else
+          {
+            if (errorWhenNoMatch)
+              throw new Exception("Index {0} not valid on {1}.".FormatWith(CultureInfo.InvariantCulture, index, current.GetType().Name));
+
+            return null;
+          }
+        }
+      }
+
+      return current;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JProperty.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JProperty.cs
@@ -1,245 +1,245 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Utilities;
-using System.Diagnostics;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a JSON property.
-  /// </summary>
-  public class JProperty : JContainer
-  {
-    private readonly List<JToken> _content = new List<JToken>();
-    private readonly string _name;
-
-    /// <summary>
-    /// Gets the container's children tokens.
-    /// </summary>
-    /// <value>The container's children tokens.</value>
-    protected override IList<JToken> ChildrenTokens
-    {
-      get { return _content; }
-    }
-
-    /// <summary>
-    /// Gets the property name.
-    /// </summary>
-    /// <value>The property name.</value>
-    public string Name
-    {
-      [DebuggerStepThrough]
-      get { return _name; }
-    }
-
-    /// <summary>
-    /// Gets or sets the property value.
-    /// </summary>
-    /// <value>The property value.</value>
-    public JToken Value
-    {
-      [DebuggerStepThrough]
-      get { return (ChildrenTokens.Count > 0) ? ChildrenTokens[0] : null; }
-      set
-      {
-        CheckReentrancy();
-
-        JToken newValue = value ?? new JValue((object) null);
-
-        if (ChildrenTokens.Count == 0)
-        {
-          InsertItem(0, newValue, false);
-        }
-        else
-        {
-          SetItem(0, newValue);
-        }
-      }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JProperty"/> class from another <see cref="JProperty"/> object.
-    /// </summary>
-    /// <param name="other">A <see cref="JProperty"/> object to copy from.</param>
-    public JProperty(JProperty other)
-      : base(other)
-    {
-      _name = other.Name;
-    }
-
-    internal override JToken GetItem(int index)
-    {
-      if (index != 0)
-        throw new ArgumentOutOfRangeException();
-
-      return Value;
-    }
-
-    internal override void SetItem(int index, JToken item)
-    {
-      if (index != 0)
-        throw new ArgumentOutOfRangeException();
-
-      if (IsTokenUnchanged(Value, item))
-        return;
-
-      if (Parent != null)
-        ((JObject)Parent).InternalPropertyChanging(this);
-
-      base.SetItem(0, item);
-
-      if (Parent != null)
-        ((JObject)Parent).InternalPropertyChanged(this);
-    }
-
-    internal override bool RemoveItem(JToken item)
-    {
-      throw new Exception("Cannot add or remove items from {0}.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
-    }
-
-    internal override void RemoveItemAt(int index)
-    {
-      throw new Exception("Cannot add or remove items from {0}.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
-    }
-
-    internal override void InsertItem(int index, JToken item, bool skipParentCheck)
-    {
-      if (Value != null)
-        throw new Exception("{0} cannot have multiple values.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
-
-      base.InsertItem(0, item, false);
-    }
-
-    internal override bool ContainsItem(JToken item)
-    {
-      return (Value == item);
-    }
-
-    internal override void ClearItems()
-    {
-      throw new Exception("Cannot add or remove items from {0}.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
-    }
-
-    internal override bool DeepEquals(JToken node)
-    {
-      JProperty t = node as JProperty;
-      return (t != null && _name == t.Name && ContentsEqual(t));
-    }
-
-    internal override JToken CloneToken()
-    {
-      return new JProperty(this);
-    }
-
-    /// <summary>
-    /// Gets the node type for this <see cref="JToken"/>.
-    /// </summary>
-    /// <value>The type.</value>
-    public override JTokenType Type
-    {
-      [DebuggerStepThrough]
-      get { return JTokenType.Property; }
-    }
-
-    internal JProperty(string name)
-    {
-      // called from JTokenWriter
-      ValidationUtils.ArgumentNotNull(name, "name");
-
-      _name = name;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JProperty"/> class.
-    /// </summary>
-    /// <param name="name">The property name.</param>
-    /// <param name="content">The property content.</param>
-    public JProperty(string name, params object[] content)
-      : this(name, (object)content)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JProperty"/> class.
-    /// </summary>
-    /// <param name="name">The property name.</param>
-    /// <param name="content">The property content.</param>
-    public JProperty(string name, object content)
-    {
-      ValidationUtils.ArgumentNotNull(name, "name");
-
-      _name = name;
-
-      Value = IsMultiContent(content)
-        ? new JArray(content)
-        : CreateFromContent(content);
-    }
-
-    /// <summary>
-    /// Writes this token to a <see cref="JsonWriter"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
-    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
-    {
-      writer.WritePropertyName(_name);
-      Value.WriteTo(writer, converters);
-    }
-
-    internal override int GetDeepHashCode()
-    {
-      return _name.GetHashCode() ^ ((Value != null) ? Value.GetDeepHashCode() : 0);
-    }
-
-    /// <summary>
-    /// Loads an <see cref="JProperty"/> from a <see cref="JsonReader"/>. 
-    /// </summary>
-    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JProperty"/>.</param>
-    /// <returns>A <see cref="JProperty"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
-    public static new JProperty Load(JsonReader reader)
-    {
-      if (reader.TokenType == JsonToken.None)
-      {
-        if (!reader.Read())
-          throw new Exception("Error reading JProperty from JsonReader.");
-      }
-      if (reader.TokenType != JsonToken.PropertyName)
-        throw new Exception(
-          "Error reading JProperty from JsonReader. Current JsonReader item is not a property: {0}".FormatWith(
-            CultureInfo.InvariantCulture, reader.TokenType));
-
-      JProperty p = new JProperty((string)reader.Value);
-      p.SetLineInfo(reader as IJsonLineInfo);
-
-      p.ReadTokenFrom(reader);
-
-      return p;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Utilities;
+using System.Diagnostics;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a JSON property.
+  /// </summary>
+  public class JProperty : JContainer
+  {
+    private readonly List<JToken> _content = new List<JToken>();
+    private readonly string _name;
+
+    /// <summary>
+    /// Gets the container's children tokens.
+    /// </summary>
+    /// <value>The container's children tokens.</value>
+    protected override IList<JToken> ChildrenTokens
+    {
+      get { return _content; }
+    }
+
+    /// <summary>
+    /// Gets the property name.
+    /// </summary>
+    /// <value>The property name.</value>
+    public string Name
+    {
+      [DebuggerStepThrough]
+      get { return _name; }
+    }
+
+    /// <summary>
+    /// Gets or sets the property value.
+    /// </summary>
+    /// <value>The property value.</value>
+    public JToken Value
+    {
+      [DebuggerStepThrough]
+      get { return (ChildrenTokens.Count > 0) ? ChildrenTokens[0] : null; }
+      set
+      {
+        CheckReentrancy();
+
+        JToken newValue = value ?? new JValue((object) null);
+
+        if (ChildrenTokens.Count == 0)
+        {
+          InsertItem(0, newValue, false);
+        }
+        else
+        {
+          SetItem(0, newValue);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JProperty"/> class from another <see cref="JProperty"/> object.
+    /// </summary>
+    /// <param name="other">A <see cref="JProperty"/> object to copy from.</param>
+    public JProperty(JProperty other)
+      : base(other)
+    {
+      _name = other.Name;
+    }
+
+    internal override JToken GetItem(int index)
+    {
+      if (index != 0)
+        throw new ArgumentOutOfRangeException();
+
+      return Value;
+    }
+
+    internal override void SetItem(int index, JToken item)
+    {
+      if (index != 0)
+        throw new ArgumentOutOfRangeException();
+
+      if (IsTokenUnchanged(Value, item))
+        return;
+
+      if (Parent != null)
+        ((JObject)Parent).InternalPropertyChanging(this);
+
+      base.SetItem(0, item);
+
+      if (Parent != null)
+        ((JObject)Parent).InternalPropertyChanged(this);
+    }
+
+    internal override bool RemoveItem(JToken item)
+    {
+      throw new Exception("Cannot add or remove items from {0}.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
+    }
+
+    internal override void RemoveItemAt(int index)
+    {
+      throw new Exception("Cannot add or remove items from {0}.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
+    }
+
+    internal override void InsertItem(int index, JToken item, bool skipParentCheck)
+    {
+      if (Value != null)
+        throw new Exception("{0} cannot have multiple values.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
+
+      base.InsertItem(0, item, false);
+    }
+
+    internal override bool ContainsItem(JToken item)
+    {
+      return (Value == item);
+    }
+
+    internal override void ClearItems()
+    {
+      throw new Exception("Cannot add or remove items from {0}.".FormatWith(CultureInfo.InvariantCulture, typeof(JProperty)));
+    }
+
+    internal override bool DeepEquals(JToken node)
+    {
+      JProperty t = node as JProperty;
+      return (t != null && _name == t.Name && ContentsEqual(t));
+    }
+
+    internal override JToken CloneToken()
+    {
+      return new JProperty(this);
+    }
+
+    /// <summary>
+    /// Gets the node type for this <see cref="JToken"/>.
+    /// </summary>
+    /// <value>The type.</value>
+    public override JTokenType Type
+    {
+      [DebuggerStepThrough]
+      get { return JTokenType.Property; }
+    }
+
+    internal JProperty(string name)
+    {
+      // called from JTokenWriter
+      ValidationUtils.ArgumentNotNull(name, "name");
+
+      _name = name;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JProperty"/> class.
+    /// </summary>
+    /// <param name="name">The property name.</param>
+    /// <param name="content">The property content.</param>
+    public JProperty(string name, params object[] content)
+      : this(name, (object)content)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JProperty"/> class.
+    /// </summary>
+    /// <param name="name">The property name.</param>
+    /// <param name="content">The property content.</param>
+    public JProperty(string name, object content)
+    {
+      ValidationUtils.ArgumentNotNull(name, "name");
+
+      _name = name;
+
+      Value = IsMultiContent(content)
+        ? new JArray(content)
+        : CreateFromContent(content);
+    }
+
+    /// <summary>
+    /// Writes this token to a <see cref="JsonWriter"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
+    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
+    {
+      writer.WritePropertyName(_name);
+      Value.WriteTo(writer, converters);
+    }
+
+    internal override int GetDeepHashCode()
+    {
+      return _name.GetHashCode() ^ ((Value != null) ? Value.GetDeepHashCode() : 0);
+    }
+
+    /// <summary>
+    /// Loads an <see cref="JProperty"/> from a <see cref="JsonReader"/>. 
+    /// </summary>
+    /// <param name="reader">A <see cref="JsonReader"/> that will be read for the content of the <see cref="JProperty"/>.</param>
+    /// <returns>A <see cref="JProperty"/> that contains the JSON that was read from the specified <see cref="JsonReader"/>.</returns>
+    public static new JProperty Load(JsonReader reader)
+    {
+      if (reader.TokenType == JsonToken.None)
+      {
+        if (!reader.Read())
+          throw new Exception("Error reading JProperty from JsonReader.");
+      }
+      if (reader.TokenType != JsonToken.PropertyName)
+        throw new Exception(
+          "Error reading JProperty from JsonReader. Current JsonReader item is not a property: {0}".FormatWith(
+            CultureInfo.InvariantCulture, reader.TokenType));
+
+      JProperty p = new JProperty((string)reader.Value);
+      p.SetLineInfo(reader as IJsonLineInfo);
+
+      p.ReadTokenFrom(reader);
+
+      return p;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JPropertyDescriptor.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JPropertyDescriptor.cs
@@ -1,173 +1,173 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !SILVERLIGHT && !NETFX_CORE
-using System;
-using System.ComponentModel;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a view of a <see cref="JProperty"/>.
-  /// </summary>
-  public class JPropertyDescriptor : PropertyDescriptor
-  {
-    private readonly Type _propertyType;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JPropertyDescriptor"/> class.
-    /// </summary>
-    /// <param name="name">The name.</param>
-    /// <param name="propertyType">Type of the property.</param>
-    public JPropertyDescriptor(string name, Type propertyType)
-      : base(name, null)
-    {
-      ValidationUtils.ArgumentNotNull(name, "name");
-      ValidationUtils.ArgumentNotNull(propertyType, "propertyType");
-
-      _propertyType = propertyType;
-    }
-
-    private static JObject CastInstance(object instance)
-    {
-      return (JObject)instance;
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, returns whether resetting an object changes its value.
-    /// </summary>
-    /// <returns>
-    /// true if resetting the component changes its value; otherwise, false.
-    /// </returns>
-    /// <param name="component">The component to test for reset capability. 
-    ///                 </param>
-    public override bool CanResetValue(object component)
-    {
-      return false;
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, gets the current value of the property on a component.
-    /// </summary>
-    /// <returns>
-    /// The value of a property for a given component.
-    /// </returns>
-    /// <param name="component">The component with the property for which to retrieve the value. 
-    ///                 </param>
-    public override object GetValue(object component)
-    {
-      JToken token = CastInstance(component)[Name];
-
-      return token;
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, resets the value for this property of the component to the default value.
-    /// </summary>
-    /// <param name="component">The component with the property value that is to be reset to the default value. 
-    ///                 </param>
-    public override void ResetValue(object component)
-    {
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, sets the value of the component to a different value.
-    /// </summary>
-    /// <param name="component">The component with the property value that is to be set. 
-    ///                 </param><param name="value">The new value. 
-    ///                 </param>
-    public override void SetValue(object component, object value)
-    {
-      JToken token = (value is JToken) ? (JToken) value : new JValue(value);
-
-      CastInstance(component)[Name] = token;
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted.
-    /// </summary>
-    /// <returns>
-    /// true if the property should be persisted; otherwise, false.
-    /// </returns>
-    /// <param name="component">The component with the property to be examined for persistence. 
-    ///                 </param>
-    public override bool ShouldSerializeValue(object component)
-    {
-      return false;
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, gets the type of the component this property is bound to.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.Type"/> that represents the type of component this property is bound to. When the <see cref="M:System.ComponentModel.PropertyDescriptor.GetValue(System.Object)"/> or <see cref="M:System.ComponentModel.PropertyDescriptor.SetValue(System.Object,System.Object)"/> methods are invoked, the object specified might be an instance of this type.
-    /// </returns>
-    public override Type ComponentType
-    {
-      get { return typeof(JObject); }
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, gets a value indicating whether this property is read-only.
-    /// </summary>
-    /// <returns>
-    /// true if the property is read-only; otherwise, false.
-    /// </returns>
-    public override bool IsReadOnly
-    {
-      get { return false; }
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, gets the type of the property.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.Type"/> that represents the type of the property.
-    /// </returns>
-    public override Type PropertyType
-    {
-      get { return _propertyType; }
-    }
-
-    /// <summary>
-    /// Gets the hash code for the name of the member.
-    /// </summary>
-    /// <value></value>
-    /// <returns>
-    /// The hash code for the name of the member.
-    /// </returns>
-    protected override int NameHashCode
-    {
-      get
-      {
-        // override property to fix up an error in its documentation
-        int nameHashCode = base.NameHashCode;
-        return nameHashCode;
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !SILVERLIGHT && !NETFX_CORE
+using System;
+using System.ComponentModel;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a view of a <see cref="JProperty"/>.
+  /// </summary>
+  public class JPropertyDescriptor : PropertyDescriptor
+  {
+    private readonly Type _propertyType;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JPropertyDescriptor"/> class.
+    /// </summary>
+    /// <param name="name">The name.</param>
+    /// <param name="propertyType">Type of the property.</param>
+    public JPropertyDescriptor(string name, Type propertyType)
+      : base(name, null)
+    {
+      ValidationUtils.ArgumentNotNull(name, "name");
+      ValidationUtils.ArgumentNotNull(propertyType, "propertyType");
+
+      _propertyType = propertyType;
+    }
+
+    private static JObject CastInstance(object instance)
+    {
+      return (JObject)instance;
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, returns whether resetting an object changes its value.
+    /// </summary>
+    /// <returns>
+    /// true if resetting the component changes its value; otherwise, false.
+    /// </returns>
+    /// <param name="component">The component to test for reset capability. 
+    ///                 </param>
+    public override bool CanResetValue(object component)
+    {
+      return false;
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, gets the current value of the property on a component.
+    /// </summary>
+    /// <returns>
+    /// The value of a property for a given component.
+    /// </returns>
+    /// <param name="component">The component with the property for which to retrieve the value. 
+    ///                 </param>
+    public override object GetValue(object component)
+    {
+      JToken token = CastInstance(component)[Name];
+
+      return token;
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, resets the value for this property of the component to the default value.
+    /// </summary>
+    /// <param name="component">The component with the property value that is to be reset to the default value. 
+    ///                 </param>
+    public override void ResetValue(object component)
+    {
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, sets the value of the component to a different value.
+    /// </summary>
+    /// <param name="component">The component with the property value that is to be set. 
+    ///                 </param><param name="value">The new value. 
+    ///                 </param>
+    public override void SetValue(object component, object value)
+    {
+      JToken token = (value is JToken) ? (JToken) value : new JValue(value);
+
+      CastInstance(component)[Name] = token;
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted.
+    /// </summary>
+    /// <returns>
+    /// true if the property should be persisted; otherwise, false.
+    /// </returns>
+    /// <param name="component">The component with the property to be examined for persistence. 
+    ///                 </param>
+    public override bool ShouldSerializeValue(object component)
+    {
+      return false;
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, gets the type of the component this property is bound to.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.Type"/> that represents the type of component this property is bound to. When the <see cref="M:System.ComponentModel.PropertyDescriptor.GetValue(System.Object)"/> or <see cref="M:System.ComponentModel.PropertyDescriptor.SetValue(System.Object,System.Object)"/> methods are invoked, the object specified might be an instance of this type.
+    /// </returns>
+    public override Type ComponentType
+    {
+      get { return typeof(JObject); }
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, gets a value indicating whether this property is read-only.
+    /// </summary>
+    /// <returns>
+    /// true if the property is read-only; otherwise, false.
+    /// </returns>
+    public override bool IsReadOnly
+    {
+      get { return false; }
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, gets the type of the property.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.Type"/> that represents the type of the property.
+    /// </returns>
+    public override Type PropertyType
+    {
+      get { return _propertyType; }
+    }
+
+    /// <summary>
+    /// Gets the hash code for the name of the member.
+    /// </summary>
+    /// <value></value>
+    /// <returns>
+    /// The hash code for the name of the member.
+    /// </returns>
+    protected override int NameHashCode
+    {
+      get
+      {
+        // override property to fix up an error in its documentation
+        int nameHashCode = base.NameHashCode;
+        return nameHashCode;
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JRaw.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JRaw.cs
@@ -1,50 +1,50 @@
-﻿using System.Globalization;
-using System.IO;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a raw JSON string.
-  /// </summary>
-  public class JRaw : JValue
-  {
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JRaw"/> class from another <see cref="JRaw"/> object.
-    /// </summary>
-    /// <param name="other">A <see cref="JRaw"/> object to copy from.</param>
-    public JRaw(JRaw other)
-      : base(other)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JRaw"/> class.
-    /// </summary>
-    /// <param name="rawJson">The raw json.</param>
-    public JRaw(object rawJson)
-      : base(rawJson, JTokenType.Raw)
-    {
-    }
-
-    /// <summary>
-    /// Creates an instance of <see cref="JRaw"/> with the content of the reader's current token.
-    /// </summary>
-    /// <param name="reader">The reader.</param>
-    /// <returns>An instance of <see cref="JRaw"/> with the content of the reader's current token.</returns>
-    public static JRaw Create(JsonReader reader)
-    {
-      using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture))
-      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
-      {
-        jsonWriter.WriteToken(reader);
-
-        return new JRaw(sw.ToString());
-      }
-    }
-
-    internal override JToken CloneToken()
-    {
-      return new JRaw(this);
-    }
-  }
+﻿using System.Globalization;
+using System.IO;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a raw JSON string.
+  /// </summary>
+  public class JRaw : JValue
+  {
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JRaw"/> class from another <see cref="JRaw"/> object.
+    /// </summary>
+    /// <param name="other">A <see cref="JRaw"/> object to copy from.</param>
+    public JRaw(JRaw other)
+      : base(other)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JRaw"/> class.
+    /// </summary>
+    /// <param name="rawJson">The raw json.</param>
+    public JRaw(object rawJson)
+      : base(rawJson, JTokenType.Raw)
+    {
+    }
+
+    /// <summary>
+    /// Creates an instance of <see cref="JRaw"/> with the content of the reader's current token.
+    /// </summary>
+    /// <param name="reader">The reader.</param>
+    /// <returns>An instance of <see cref="JRaw"/> with the content of the reader's current token.</returns>
+    public static JRaw Create(JsonReader reader)
+    {
+      using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture))
+      using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
+      {
+        jsonWriter.WriteToken(reader);
+
+        return new JRaw(sw.ToString());
+      }
+    }
+
+    internal override JToken CloneToken()
+    {
+      return new JRaw(this);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JToken.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JToken.cs
@@ -1,1359 +1,1359 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System.Dynamic;
-using System.Linq.Expressions;
-#endif
-using System.IO;
-using Newtonsoft.Json.Utilities;
-using System.Diagnostics;
-using System.Globalization;
-using System.Collections;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents an abstract JSON token.
-  /// </summary>
-  public abstract class JToken : IJEnumerable<JToken>, IJsonLineInfo
-#if !SILVERLIGHT && !NETFX_CORE
-, ICloneable
-#endif
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-, IDynamicMetaObjectProvider
-#endif
-  {
-    private JContainer _parent;
-    private JToken _previous;
-    private JToken _next;
-    private static JTokenEqualityComparer _equalityComparer;
-
-    private int? _lineNumber;
-    private int? _linePosition;
-
-    /// <summary>
-    /// Gets a comparer that can compare two tokens for value equality.
-    /// </summary>
-    /// <value>A <see cref="JTokenEqualityComparer"/> that can compare two nodes for value equality.</value>
-    public static JTokenEqualityComparer EqualityComparer
-    {
-      get
-      {
-        if (_equalityComparer == null)
-          _equalityComparer = new JTokenEqualityComparer();
-
-        return _equalityComparer;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the parent.
-    /// </summary>
-    /// <value>The parent.</value>
-    public JContainer Parent
-    {
-      [DebuggerStepThrough]
-      get { return _parent; }
-      internal set { _parent = value; }
-    }
-
-    /// <summary>
-    /// Gets the root <see cref="JToken"/> of this <see cref="JToken"/>.
-    /// </summary>
-    /// <value>The root <see cref="JToken"/> of this <see cref="JToken"/>.</value>
-    public JToken Root
-    {
-      get
-      {
-        JContainer parent = Parent;
-        if (parent == null)
-          return this;
-
-        while (parent.Parent != null)
-        {
-          parent = parent.Parent;
-        }
-
-        return parent;
-      }
-    }
-
-    internal abstract JToken CloneToken();
-    internal abstract bool DeepEquals(JToken node);
-
-    /// <summary>
-    /// Gets the node type for this <see cref="JToken"/>.
-    /// </summary>
-    /// <value>The type.</value>
-    public abstract JTokenType Type { get; }
-
-    /// <summary>
-    /// Gets a value indicating whether this token has childen tokens.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if this token has child values; otherwise, <c>false</c>.
-    /// </value>
-    public abstract bool HasValues { get; }
-
-    /// <summary>
-    /// Compares the values of two tokens, including the values of all descendant tokens.
-    /// </summary>
-    /// <param name="t1">The first <see cref="JToken"/> to compare.</param>
-    /// <param name="t2">The second <see cref="JToken"/> to compare.</param>
-    /// <returns>true if the tokens are equal; otherwise false.</returns>
-    public static bool DeepEquals(JToken t1, JToken t2)
-    {
-      return (t1 == t2 || (t1 != null && t2 != null && t1.DeepEquals(t2)));
-    }
-
-    /// <summary>
-    /// Gets the next sibling token of this node.
-    /// </summary>
-    /// <value>The <see cref="JToken"/> that contains the next sibling token.</value>
-    public JToken Next
-    {
-      get { return _next; }
-      internal set { _next = value; }
-    }
-
-    /// <summary>
-    /// Gets the previous sibling token of this node.
-    /// </summary>
-    /// <value>The <see cref="JToken"/> that contains the previous sibling token.</value>
-    public JToken Previous
-    {
-      get { return _previous; }
-      internal set { _previous = value; }
-    }
-
-    internal JToken()
-    {
-    }
-
-    /// <summary>
-    /// Adds the specified content immediately after this token.
-    /// </summary>
-    /// <param name="content">A content object that contains simple content or a collection of content objects to be added after this token.</param>
-    public void AddAfterSelf(object content)
-    {
-      if (_parent == null)
-        throw new InvalidOperationException("The parent is missing.");
-
-      int index = _parent.IndexOfItem(this);
-      _parent.AddInternal(index + 1, content, false);
-    }
-
-    /// <summary>
-    /// Adds the specified content immediately before this token.
-    /// </summary>
-    /// <param name="content">A content object that contains simple content or a collection of content objects to be added before this token.</param>
-    public void AddBeforeSelf(object content)
-    {
-      if (_parent == null)
-        throw new InvalidOperationException("The parent is missing.");
-
-      int index = _parent.IndexOfItem(this);
-      _parent.AddInternal(index, content, false);
-    }
-
-    /// <summary>
-    /// Returns a collection of the ancestor tokens of this token.
-    /// </summary>
-    /// <returns>A collection of the ancestor tokens of this token.</returns>
-    public IEnumerable<JToken> Ancestors()
-    {
-      for (JToken parent = Parent; parent != null; parent = parent.Parent)
-      {
-        yield return parent;
-      }
-    }
-
-    /// <summary>
-    /// Returns a collection of the sibling tokens after this token, in document order.
-    /// </summary>
-    /// <returns>A collection of the sibling tokens after this tokens, in document order.</returns>
-    public IEnumerable<JToken> AfterSelf()
-    {
-      if (Parent == null)
-        yield break;
-
-      for (JToken o = Next; o != null; o = o.Next)
-        yield return o;
-    }
-
-    /// <summary>
-    /// Returns a collection of the sibling tokens before this token, in document order.
-    /// </summary>
-    /// <returns>A collection of the sibling tokens before this token, in document order.</returns>
-    public IEnumerable<JToken> BeforeSelf()
-    {
-      for (JToken o = Parent.First; o != this; o = o.Next)
-        yield return o;
-    }
-
-    /// <summary>
-    /// Gets the <see cref="JToken"/> with the specified key.
-    /// </summary>
-    /// <value>The <see cref="JToken"/> with the specified key.</value>
-    public virtual JToken this[object key]
-    {
-      get { throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
-      set { throw new InvalidOperationException("Cannot set child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
-    }
-
-    /// <summary>
-    /// Gets the <see cref="JToken"/> with the specified key converted to the specified type.
-    /// </summary>
-    /// <typeparam name="T">The type to convert the token to.</typeparam>
-    /// <param name="key">The token key.</param>
-    /// <returns>The converted token value.</returns>
-    public virtual T Value<T>(object key)
-    {
-      JToken token = this[key];
-
-      return Extensions.Convert<JToken, T>(token);
-    }
-
-    /// <summary>
-    /// Get the first child token of this token.
-    /// </summary>
-    /// <value>A <see cref="JToken"/> containing the first child token of the <see cref="JToken"/>.</value>
-    public virtual JToken First
-    {
-      get { throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
-    }
-
-    /// <summary>
-    /// Get the last child token of this token.
-    /// </summary>
-    /// <value>A <see cref="JToken"/> containing the last child token of the <see cref="JToken"/>.</value>
-    public virtual JToken Last
-    {
-      get { throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
-    }
-
-    /// <summary>
-    /// Returns a collection of the child tokens of this token, in document order.
-    /// </summary>
-    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> containing the child tokens of this <see cref="JToken"/>, in document order.</returns>
-    public virtual JEnumerable<JToken> Children()
-    {
-      return JEnumerable<JToken>.Empty;
-    }
-
-    /// <summary>
-    /// Returns a collection of the child tokens of this token, in document order, filtered by the specified type.
-    /// </summary>
-    /// <typeparam name="T">The type to filter the child tokens on.</typeparam>
-    /// <returns>A <see cref="JEnumerable{T}"/> containing the child tokens of this <see cref="JToken"/>, in document order.</returns>
-    public JEnumerable<T> Children<T>() where T : JToken
-    {
-      return new JEnumerable<T>(Children().OfType<T>());
-    }
-
-    /// <summary>
-    /// Returns a collection of the child values of this token, in document order.
-    /// </summary>
-    /// <typeparam name="T">The type to convert the values to.</typeparam>
-    /// <returns>A <see cref="IEnumerable{T}"/> containing the child values of this <see cref="JToken"/>, in document order.</returns>
-    public virtual IEnumerable<T> Values<T>()
-    {
-      throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType()));
-    }
-
-    /// <summary>
-    /// Removes this token from its parent.
-    /// </summary>
-    public void Remove()
-    {
-      if (_parent == null)
-        throw new InvalidOperationException("The parent is missing.");
-
-      _parent.RemoveItem(this);
-    }
-
-    /// <summary>
-    /// Replaces this token with the specified token.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public void Replace(JToken value)
-    {
-      if (_parent == null)
-        throw new InvalidOperationException("The parent is missing.");
-
-      _parent.ReplaceItem(this, value);
-    }
-
-    /// <summary>
-    /// Writes this token to a <see cref="JsonWriter"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
-    public abstract void WriteTo(JsonWriter writer, params JsonConverter[] converters);
-
-    /// <summary>
-    /// Returns the indented JSON for this token.
-    /// </summary>
-    /// <returns>
-    /// The indented JSON for this token.
-    /// </returns>
-    public override string ToString()
-    {
-      return ToString(Formatting.Indented);
-    }
-
-    /// <summary>
-    /// Returns the JSON for this token using the given formatting and converters.
-    /// </summary>
-    /// <param name="formatting">Indicates how the output is formatted.</param>
-    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
-    /// <returns>The JSON for this token using the given formatting and converters.</returns>
-    public string ToString(Formatting formatting, params JsonConverter[] converters)
-    {
-      using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture))
-      {
-        JsonTextWriter jw = new JsonTextWriter(sw);
-        jw.Formatting = formatting;
-
-        WriteTo(jw, converters);
-
-        return sw.ToString();
-      }
-    }
-
-    private static JValue EnsureValue(JToken value)
-    {
-      if (value == null)
-        throw new ArgumentNullException("value");
-
-      if (value is JProperty)
-        value = ((JProperty)value).Value;
-
-      JValue v = value as JValue;
-
-      return v;
-    }
-
-    private static string GetType(JToken token)
-    {
-      ValidationUtils.ArgumentNotNull(token, "token");
-
-      if (token is JProperty)
-        token = ((JProperty)token).Value;
-
-      return token.Type.ToString();
-    }
-
-    private static bool IsNullable(JToken o)
-    {
-      return (o.Type == JTokenType.Undefined || o.Type == JTokenType.Null);
-    }
-
-    private static bool ValidateFloat(JToken o, bool nullable)
-    {
-      return (o.Type == JTokenType.Float || o.Type == JTokenType.Integer || (nullable && IsNullable(o)));
-    }
-
-    private static bool ValidateInteger(JToken o, bool nullable)
-    {
-      return (o.Type == JTokenType.Integer || (nullable && IsNullable(o)));
-    }
-
-    private static bool ValidateDate(JToken o, bool nullable)
-    {
-      return (o.Type == JTokenType.Date || (nullable && IsNullable(o)));
-    }
-
-    private static bool ValidateBoolean(JToken o, bool nullable)
-    {
-      return (o.Type == JTokenType.Boolean || (nullable && IsNullable(o)));
-    }
-
-    private static bool ValidateString(JToken o)
-    {
-      return (o.Type == JTokenType.String || o.Type == JTokenType.Comment || o.Type == JTokenType.Raw || IsNullable(o));
-    }
-
-    private static bool ValidateBytes(JToken o)
-    {
-      return (o.Type == JTokenType.Bytes || IsNullable(o));
-    }
-
-    #region Cast from operators
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Boolean"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator bool(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateBoolean(v, false))
-        throw new ArgumentException("Can not convert {0} to Boolean.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToBoolean(v.Value, CultureInfo.InvariantCulture);
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.DateTimeOffset"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator DateTimeOffset(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateDate(v, false))
-        throw new ArgumentException("Can not convert {0} to DateTimeOffset.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (DateTimeOffset)v.Value;
-    }
-#endif
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Boolean}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator bool?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateBoolean(v, true))
-        throw new ArgumentException("Can not convert {0} to Boolean.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (bool?)Convert.ToBoolean(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Int64"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator long(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, false))
-        throw new ArgumentException("Can not convert {0} to Int64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToInt64(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{DateTime}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator DateTime?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateDate(v, true))
-        throw new ArgumentException("Can not convert {0} to DateTime.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (DateTime?)Convert.ToDateTime(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{DateTimeOffset}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator DateTimeOffset?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateDate(v, true))
-        throw new ArgumentException("Can not convert {0} to DateTimeOffset.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (DateTimeOffset?)v.Value;
-    }
-#endif
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Decimal}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator decimal?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateFloat(v, true))
-        throw new ArgumentException("Can not convert {0} to Decimal.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (decimal?)Convert.ToDecimal(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Double}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator double?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateFloat(v, true))
-        throw new ArgumentException("Can not convert {0} to Double.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (double?)v.Value;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Int32"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator int(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, false))
-        throw new ArgumentException("Can not convert {0} to Int32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToInt32(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Int16"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator short(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, false))
-        throw new ArgumentException("Can not convert {0} to Int16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToInt16(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.UInt16"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    [CLSCompliant(false)]
-    public static explicit operator ushort(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, false))
-        throw new ArgumentException("Can not convert {0} to UInt16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToUInt16(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Int32}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator int?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, true))
-        throw new ArgumentException("Can not convert {0} to Int32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (int?)Convert.ToInt32(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Int16}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator short?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, true))
-        throw new ArgumentException("Can not convert {0} to Int16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (short?)Convert.ToInt16(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{UInt16}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    [CLSCompliant(false)]
-    public static explicit operator ushort?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, true))
-        throw new ArgumentException("Can not convert {0} to UInt16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (ushort?)Convert.ToInt16(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.DateTime"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator DateTime(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateDate(v, false))
-        throw new ArgumentException("Can not convert {0} to DateTime.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToDateTime(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Int64}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator long?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, true))
-        throw new ArgumentException("Can not convert {0} to Int64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (long?)Convert.ToInt64(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Single}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator float?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateFloat(v, true))
-        throw new ArgumentException("Can not convert {0} to Single.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (float?)Convert.ToSingle(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Decimal"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator decimal(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateFloat(v, false))
-        throw new ArgumentException("Can not convert {0} to Decimal.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToDecimal(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{UInt32}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    [CLSCompliant(false)]
-    public static explicit operator uint?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, true))
-        throw new ArgumentException("Can not convert {0} to UInt32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (uint?)Convert.ToUInt32(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{UInt64}"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    [CLSCompliant(false)]
-    public static explicit operator ulong?(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, true))
-        throw new ArgumentException("Can not convert {0} to UInt64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? (ulong?)Convert.ToUInt64(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Double"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator double(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateFloat(v, false))
-        throw new ArgumentException("Can not convert {0} to Double.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToDouble(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Single"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator float(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateFloat(v, false))
-        throw new ArgumentException("Can not convert {0} to Single.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToSingle(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.String"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator string(JToken value)
-    {
-      if (value == null)
-        return null;
-
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateString(v))
-        throw new ArgumentException("Can not convert {0} to String.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (v.Value != null) ? Convert.ToString(v.Value, CultureInfo.InvariantCulture) : null;
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.UInt32"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    [CLSCompliant(false)]
-    public static explicit operator uint(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, false))
-        throw new ArgumentException("Can not convert {0} to UInt32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToUInt32(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.UInt64"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    [CLSCompliant(false)]
-    public static explicit operator ulong(JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateInteger(v, false))
-        throw new ArgumentException("Can not convert {0} to UInt64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return Convert.ToUInt64(v.Value, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Byte[]"/>.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>The result of the conversion.</returns>
-    public static explicit operator byte[](JToken value)
-    {
-      JValue v = EnsureValue(value);
-      if (v == null || !ValidateBytes(v))
-        throw new ArgumentException("Can not convert {0} to byte array.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
-
-      return (byte[])v.Value;
-    }
-    #endregion
-
-    #region Cast to operators
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Boolean"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(bool value)
-    {
-      return new JValue(value);
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="DateTimeOffset"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(DateTimeOffset value)
-    {
-      return new JValue(value);
-    }
-#endif
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Boolean}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(bool? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Int64}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(long value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{DateTime}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(DateTime? value)
-    {
-      return new JValue(value);
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{DateTimeOffset}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(DateTimeOffset? value)
-    {
-      return new JValue(value);
-    }
-#endif
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Decimal}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(decimal? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Double}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(double? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Int16"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(short value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="UInt16"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(ushort value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Int32"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(int value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Int32}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(int? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="DateTime"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(DateTime value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Int64}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(long? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Single}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(float? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Decimal"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(decimal value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{Int16}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(short? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{UInt16}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(ushort? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{UInt32}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(uint? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Nullable{UInt64}"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(ulong? value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Double"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(double value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="Single"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(float value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="String"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(string value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="UInt32"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(uint value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="UInt64"/> to <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    [CLSCompliant(false)]
-    public static implicit operator JToken(ulong value)
-    {
-      return new JValue(value);
-    }
-
-    /// <summary>
-    /// Performs an implicit conversion from <see cref="T:System.Byte[]"/> to <see cref="Newtonsoft.Json.Linq.JToken"/>.
-    /// </summary>
-    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
-    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
-    public static implicit operator JToken(byte[] value)
-    {
-      return new JValue(value);
-    }
-    #endregion
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return ((IEnumerable<JToken>)this).GetEnumerator();
-    }
-
-    IEnumerator<JToken> IEnumerable<JToken>.GetEnumerator()
-    {
-      return Children().GetEnumerator();
-    }
-
-    internal abstract int GetDeepHashCode();
-
-    IJEnumerable<JToken> IJEnumerable<JToken>.this[object key]
-    {
-      get { return this[key]; }
-    }
-
-    /// <summary>
-    /// Creates an <see cref="JsonReader"/> for this token.
-    /// </summary>
-    /// <returns>An <see cref="JsonReader"/> that can be used to read this token and its descendants.</returns>
-    public JsonReader CreateReader()
-    {
-      return new JTokenReader(this);
-    }
-
-    internal static JToken FromObjectInternal(object o, JsonSerializer jsonSerializer)
-    {
-      ValidationUtils.ArgumentNotNull(o, "o");
-      ValidationUtils.ArgumentNotNull(jsonSerializer, "jsonSerializer");
-
-      JToken token;
-      using (JTokenWriter jsonWriter = new JTokenWriter())
-      {
-        jsonSerializer.Serialize(jsonWriter, o);
-        token = jsonWriter.Token;
-      }
-
-      return token;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JToken"/> from an object.
-    /// </summary>
-    /// <param name="o">The object that will be used to create <see cref="JToken"/>.</param>
-    /// <returns>A <see cref="JToken"/> with the value of the specified object</returns>
-    public static JToken FromObject(object o)
-    {
-      return FromObjectInternal(o, new JsonSerializer());
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JToken"/> from an object using the specified <see cref="JsonSerializer"/>.
-    /// </summary>
-    /// <param name="o">The object that will be used to create <see cref="JToken"/>.</param>
-    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used when reading the object.</param>
-    /// <returns>A <see cref="JToken"/> with the value of the specified object</returns>
-    public static JToken FromObject(object o, JsonSerializer jsonSerializer)
-    {
-      return FromObjectInternal(o, jsonSerializer);
-    }
-
-    /// <summary>
-    /// Creates the specified .NET type from the <see cref="JToken"/>.
-    /// </summary>
-    /// <returns>The new object created from the JSON value.</returns>
-    public T ToObject<T>()
-    {
-      return ToObject<T>(new JsonSerializer());
-    }
-
-    /// <summary>
-    /// Creates the specified .NET type from the <see cref="JToken"/> using the specified <see cref="JsonSerializer"/>.
-    /// </summary>
-    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used when creating the object.</param>
-    /// <returns>The new object created from the JSON value.</returns>
-    public T ToObject<T>(JsonSerializer jsonSerializer)
-    {
-      ValidationUtils.ArgumentNotNull(jsonSerializer, "jsonSerializer");
-
-      using (JTokenReader jsonReader = new JTokenReader(this))
-      {
-        return jsonSerializer.Deserialize<T>(jsonReader);
-      }
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JToken"/> from a <see cref="JsonReader"/>.
-    /// </summary>
-    /// <param name="reader">An <see cref="JsonReader"/> positioned at the token to read into this <see cref="JToken"/>.</param>
-    /// <returns>
-    /// An <see cref="JToken"/> that contains the token and its descendant tokens
-    /// that were read from the reader. The runtime type of the token is determined
-    /// by the token type of the first token encountered in the reader.
-    /// </returns>
-    public static JToken ReadFrom(JsonReader reader)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-
-      if (reader.TokenType == JsonToken.None)
-      {
-        if (!reader.Read())
-          throw new Exception("Error reading JToken from JsonReader.");
-      }
-
-      if (reader.TokenType == JsonToken.StartObject)
-        return JObject.Load(reader);
-
-      if (reader.TokenType == JsonToken.StartArray)
-        return JArray.Load(reader);
-
-      if (reader.TokenType == JsonToken.PropertyName)
-        return JProperty.Load(reader);
-
-      if (reader.TokenType == JsonToken.StartConstructor)
-        return JConstructor.Load(reader);
-
-      if (!JsonReader.IsStartToken(reader.TokenType))
-        return new JValue(reader.Value);
-
-      // TODO: loading constructor and parameters?
-      throw new Exception("Error reading JToken from JsonReader. Unexpected token: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-    }
-
-    /// <summary>
-    /// Load a <see cref="JToken"/> from a string that contains JSON.
-    /// </summary>
-    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
-    /// <returns>A <see cref="JToken"/> populated from the string that contains JSON.</returns>
-    public static JToken Parse(string json)
-    {
-      JsonReader jsonReader = new JsonTextReader(new StringReader(json));
-
-      JToken t = Load(jsonReader);
-
-      if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
-        throw new Exception("Additional text found in JSON string after parsing content.");
-
-      return t;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JToken"/> from a <see cref="JsonReader"/>.
-    /// </summary>
-    /// <param name="reader">An <see cref="JsonReader"/> positioned at the token to read into this <see cref="JToken"/>.</param>
-    /// <returns>
-    /// An <see cref="JToken"/> that contains the token and its descendant tokens
-    /// that were read from the reader. The runtime type of the token is determined
-    /// by the token type of the first token encountered in the reader.
-    /// </returns>
-    public static JToken Load(JsonReader reader)
-    {
-      return ReadFrom(reader);
-    }
-
-    internal void SetLineInfo(IJsonLineInfo lineInfo)
-    {
-      if (lineInfo == null || !lineInfo.HasLineInfo())
-        return;
-
-      SetLineInfo(lineInfo.LineNumber, lineInfo.LinePosition);
-    }
-
-    internal void SetLineInfo(int lineNumber, int linePosition)
-    {
-      _lineNumber = lineNumber;
-      _linePosition = linePosition;
-    }
-
-    bool IJsonLineInfo.HasLineInfo()
-    {
-      return (_lineNumber != null && _linePosition != null);
-    }
-
-    int IJsonLineInfo.LineNumber
-    {
-      get { return _lineNumber ?? 0; }
-    }
-
-    int IJsonLineInfo.LinePosition
-    {
-      get { return _linePosition ?? 0; }
-    }
-
-    /// <summary>
-    /// Selects the token that matches the object path.
-    /// </summary>
-    /// <param name="path">
-    /// The object path from the current <see cref="JToken"/> to the <see cref="JToken"/>
-    /// to be returned. This must be a string of property names or array indexes separated
-    /// by periods, such as <code>Tables[0].DefaultView[0].Price</code> in C# or
-    /// <code>Tables(0).DefaultView(0).Price</code> in Visual Basic.
-    /// </param>
-    /// <returns>The <see cref="JToken"/> that matches the object path or a null reference if no matching token is found.</returns>
-    public JToken SelectToken(string path)
-    {
-      return SelectToken(path, false);
-    }
-
-    /// <summary>
-    /// Selects the token that matches the object path.
-    /// </summary>
-    /// <param name="path">
-    /// The object path from the current <see cref="JToken"/> to the <see cref="JToken"/>
-    /// to be returned. This must be a string of property names or array indexes separated
-    /// by periods, such as <code>Tables[0].DefaultView[0].Price</code> in C# or
-    /// <code>Tables(0).DefaultView(0).Price</code> in Visual Basic.
-    /// </param>
-    /// <param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no token is found.</param>
-    /// <returns>The <see cref="JToken"/> that matches the object path.</returns>
-    public JToken SelectToken(string path, bool errorWhenNoMatch)
-    {
-      JPath p = new JPath(path);
-      return p.Evaluate(this, errorWhenNoMatch);
-    }
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    /// <summary>
-    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
-    /// </summary>
-    /// <param name="parameter">The expression tree representation of the runtime value.</param>
-    /// <returns>
-    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
-    /// </returns>
-    protected virtual DynamicMetaObject GetMetaObject(Expression parameter)
-    {
-      return new DynamicProxyMetaObject<JToken>(parameter, this, new DynamicProxy<JToken>(), true);
-    }
-
-    /// <summary>
-    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
-    /// </summary>
-    /// <param name="parameter">The expression tree representation of the runtime value.</param>
-    /// <returns>
-    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
-    /// </returns>
-    DynamicMetaObject IDynamicMetaObjectProvider.GetMetaObject(Expression parameter)
-    {
-      return GetMetaObject(parameter);
-    }
-#endif
-
-#if !SILVERLIGHT && !NETFX_CORE
-    object ICloneable.Clone()
-    {
-      return DeepClone();
-    }
-#endif
-
-    /// <summary>
-    /// Creates a new instance of the <see cref="JToken"/>. All child tokens are recursively cloned.
-    /// </summary>
-    /// <returns>A new instance of the <see cref="JToken"/>.</returns>
-    public JToken DeepClone()
-    {
-      return CloneToken();
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System.Dynamic;
+using System.Linq.Expressions;
+#endif
+using System.IO;
+using Newtonsoft.Json.Utilities;
+using System.Diagnostics;
+using System.Globalization;
+using System.Collections;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents an abstract JSON token.
+  /// </summary>
+  public abstract class JToken : IJEnumerable<JToken>, IJsonLineInfo
+#if !SILVERLIGHT && !NETFX_CORE
+, ICloneable
+#endif
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+, IDynamicMetaObjectProvider
+#endif
+  {
+    private JContainer _parent;
+    private JToken _previous;
+    private JToken _next;
+    private static JTokenEqualityComparer _equalityComparer;
+
+    private int? _lineNumber;
+    private int? _linePosition;
+
+    /// <summary>
+    /// Gets a comparer that can compare two tokens for value equality.
+    /// </summary>
+    /// <value>A <see cref="JTokenEqualityComparer"/> that can compare two nodes for value equality.</value>
+    public static JTokenEqualityComparer EqualityComparer
+    {
+      get
+      {
+        if (_equalityComparer == null)
+          _equalityComparer = new JTokenEqualityComparer();
+
+        return _equalityComparer;
+      }
+    }
+
+    /// <summary>
+    /// Gets or sets the parent.
+    /// </summary>
+    /// <value>The parent.</value>
+    public JContainer Parent
+    {
+      [DebuggerStepThrough]
+      get { return _parent; }
+      internal set { _parent = value; }
+    }
+
+    /// <summary>
+    /// Gets the root <see cref="JToken"/> of this <see cref="JToken"/>.
+    /// </summary>
+    /// <value>The root <see cref="JToken"/> of this <see cref="JToken"/>.</value>
+    public JToken Root
+    {
+      get
+      {
+        JContainer parent = Parent;
+        if (parent == null)
+          return this;
+
+        while (parent.Parent != null)
+        {
+          parent = parent.Parent;
+        }
+
+        return parent;
+      }
+    }
+
+    internal abstract JToken CloneToken();
+    internal abstract bool DeepEquals(JToken node);
+
+    /// <summary>
+    /// Gets the node type for this <see cref="JToken"/>.
+    /// </summary>
+    /// <value>The type.</value>
+    public abstract JTokenType Type { get; }
+
+    /// <summary>
+    /// Gets a value indicating whether this token has childen tokens.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if this token has child values; otherwise, <c>false</c>.
+    /// </value>
+    public abstract bool HasValues { get; }
+
+    /// <summary>
+    /// Compares the values of two tokens, including the values of all descendant tokens.
+    /// </summary>
+    /// <param name="t1">The first <see cref="JToken"/> to compare.</param>
+    /// <param name="t2">The second <see cref="JToken"/> to compare.</param>
+    /// <returns>true if the tokens are equal; otherwise false.</returns>
+    public static bool DeepEquals(JToken t1, JToken t2)
+    {
+      return (t1 == t2 || (t1 != null && t2 != null && t1.DeepEquals(t2)));
+    }
+
+    /// <summary>
+    /// Gets the next sibling token of this node.
+    /// </summary>
+    /// <value>The <see cref="JToken"/> that contains the next sibling token.</value>
+    public JToken Next
+    {
+      get { return _next; }
+      internal set { _next = value; }
+    }
+
+    /// <summary>
+    /// Gets the previous sibling token of this node.
+    /// </summary>
+    /// <value>The <see cref="JToken"/> that contains the previous sibling token.</value>
+    public JToken Previous
+    {
+      get { return _previous; }
+      internal set { _previous = value; }
+    }
+
+    internal JToken()
+    {
+    }
+
+    /// <summary>
+    /// Adds the specified content immediately after this token.
+    /// </summary>
+    /// <param name="content">A content object that contains simple content or a collection of content objects to be added after this token.</param>
+    public void AddAfterSelf(object content)
+    {
+      if (_parent == null)
+        throw new InvalidOperationException("The parent is missing.");
+
+      int index = _parent.IndexOfItem(this);
+      _parent.AddInternal(index + 1, content, false);
+    }
+
+    /// <summary>
+    /// Adds the specified content immediately before this token.
+    /// </summary>
+    /// <param name="content">A content object that contains simple content or a collection of content objects to be added before this token.</param>
+    public void AddBeforeSelf(object content)
+    {
+      if (_parent == null)
+        throw new InvalidOperationException("The parent is missing.");
+
+      int index = _parent.IndexOfItem(this);
+      _parent.AddInternal(index, content, false);
+    }
+
+    /// <summary>
+    /// Returns a collection of the ancestor tokens of this token.
+    /// </summary>
+    /// <returns>A collection of the ancestor tokens of this token.</returns>
+    public IEnumerable<JToken> Ancestors()
+    {
+      for (JToken parent = Parent; parent != null; parent = parent.Parent)
+      {
+        yield return parent;
+      }
+    }
+
+    /// <summary>
+    /// Returns a collection of the sibling tokens after this token, in document order.
+    /// </summary>
+    /// <returns>A collection of the sibling tokens after this tokens, in document order.</returns>
+    public IEnumerable<JToken> AfterSelf()
+    {
+      if (Parent == null)
+        yield break;
+
+      for (JToken o = Next; o != null; o = o.Next)
+        yield return o;
+    }
+
+    /// <summary>
+    /// Returns a collection of the sibling tokens before this token, in document order.
+    /// </summary>
+    /// <returns>A collection of the sibling tokens before this token, in document order.</returns>
+    public IEnumerable<JToken> BeforeSelf()
+    {
+      for (JToken o = Parent.First; o != this; o = o.Next)
+        yield return o;
+    }
+
+    /// <summary>
+    /// Gets the <see cref="JToken"/> with the specified key.
+    /// </summary>
+    /// <value>The <see cref="JToken"/> with the specified key.</value>
+    public virtual JToken this[object key]
+    {
+      get { throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
+      set { throw new InvalidOperationException("Cannot set child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
+    }
+
+    /// <summary>
+    /// Gets the <see cref="JToken"/> with the specified key converted to the specified type.
+    /// </summary>
+    /// <typeparam name="T">The type to convert the token to.</typeparam>
+    /// <param name="key">The token key.</param>
+    /// <returns>The converted token value.</returns>
+    public virtual T Value<T>(object key)
+    {
+      JToken token = this[key];
+
+      return Extensions.Convert<JToken, T>(token);
+    }
+
+    /// <summary>
+    /// Get the first child token of this token.
+    /// </summary>
+    /// <value>A <see cref="JToken"/> containing the first child token of the <see cref="JToken"/>.</value>
+    public virtual JToken First
+    {
+      get { throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
+    }
+
+    /// <summary>
+    /// Get the last child token of this token.
+    /// </summary>
+    /// <value>A <see cref="JToken"/> containing the last child token of the <see cref="JToken"/>.</value>
+    public virtual JToken Last
+    {
+      get { throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType())); }
+    }
+
+    /// <summary>
+    /// Returns a collection of the child tokens of this token, in document order.
+    /// </summary>
+    /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="JToken"/> containing the child tokens of this <see cref="JToken"/>, in document order.</returns>
+    public virtual JEnumerable<JToken> Children()
+    {
+      return JEnumerable<JToken>.Empty;
+    }
+
+    /// <summary>
+    /// Returns a collection of the child tokens of this token, in document order, filtered by the specified type.
+    /// </summary>
+    /// <typeparam name="T">The type to filter the child tokens on.</typeparam>
+    /// <returns>A <see cref="JEnumerable{T}"/> containing the child tokens of this <see cref="JToken"/>, in document order.</returns>
+    public JEnumerable<T> Children<T>() where T : JToken
+    {
+      return new JEnumerable<T>(Children().OfType<T>());
+    }
+
+    /// <summary>
+    /// Returns a collection of the child values of this token, in document order.
+    /// </summary>
+    /// <typeparam name="T">The type to convert the values to.</typeparam>
+    /// <returns>A <see cref="IEnumerable{T}"/> containing the child values of this <see cref="JToken"/>, in document order.</returns>
+    public virtual IEnumerable<T> Values<T>()
+    {
+      throw new InvalidOperationException("Cannot access child value on {0}.".FormatWith(CultureInfo.InvariantCulture, GetType()));
+    }
+
+    /// <summary>
+    /// Removes this token from its parent.
+    /// </summary>
+    public void Remove()
+    {
+      if (_parent == null)
+        throw new InvalidOperationException("The parent is missing.");
+
+      _parent.RemoveItem(this);
+    }
+
+    /// <summary>
+    /// Replaces this token with the specified token.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public void Replace(JToken value)
+    {
+      if (_parent == null)
+        throw new InvalidOperationException("The parent is missing.");
+
+      _parent.ReplaceItem(this, value);
+    }
+
+    /// <summary>
+    /// Writes this token to a <see cref="JsonWriter"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
+    public abstract void WriteTo(JsonWriter writer, params JsonConverter[] converters);
+
+    /// <summary>
+    /// Returns the indented JSON for this token.
+    /// </summary>
+    /// <returns>
+    /// The indented JSON for this token.
+    /// </returns>
+    public override string ToString()
+    {
+      return ToString(Formatting.Indented);
+    }
+
+    /// <summary>
+    /// Returns the JSON for this token using the given formatting and converters.
+    /// </summary>
+    /// <param name="formatting">Indicates how the output is formatted.</param>
+    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
+    /// <returns>The JSON for this token using the given formatting and converters.</returns>
+    public string ToString(Formatting formatting, params JsonConverter[] converters)
+    {
+      using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture))
+      {
+        JsonTextWriter jw = new JsonTextWriter(sw);
+        jw.Formatting = formatting;
+
+        WriteTo(jw, converters);
+
+        return sw.ToString();
+      }
+    }
+
+    private static JValue EnsureValue(JToken value)
+    {
+      if (value == null)
+        throw new ArgumentNullException("value");
+
+      if (value is JProperty)
+        value = ((JProperty)value).Value;
+
+      JValue v = value as JValue;
+
+      return v;
+    }
+
+    private static string GetType(JToken token)
+    {
+      ValidationUtils.ArgumentNotNull(token, "token");
+
+      if (token is JProperty)
+        token = ((JProperty)token).Value;
+
+      return token.Type.ToString();
+    }
+
+    private static bool IsNullable(JToken o)
+    {
+      return (o.Type == JTokenType.Undefined || o.Type == JTokenType.Null);
+    }
+
+    private static bool ValidateFloat(JToken o, bool nullable)
+    {
+      return (o.Type == JTokenType.Float || o.Type == JTokenType.Integer || (nullable && IsNullable(o)));
+    }
+
+    private static bool ValidateInteger(JToken o, bool nullable)
+    {
+      return (o.Type == JTokenType.Integer || (nullable && IsNullable(o)));
+    }
+
+    private static bool ValidateDate(JToken o, bool nullable)
+    {
+      return (o.Type == JTokenType.Date || (nullable && IsNullable(o)));
+    }
+
+    private static bool ValidateBoolean(JToken o, bool nullable)
+    {
+      return (o.Type == JTokenType.Boolean || (nullable && IsNullable(o)));
+    }
+
+    private static bool ValidateString(JToken o)
+    {
+      return (o.Type == JTokenType.String || o.Type == JTokenType.Comment || o.Type == JTokenType.Raw || IsNullable(o));
+    }
+
+    private static bool ValidateBytes(JToken o)
+    {
+      return (o.Type == JTokenType.Bytes || IsNullable(o));
+    }
+
+    #region Cast from operators
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Boolean"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator bool(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateBoolean(v, false))
+        throw new ArgumentException("Can not convert {0} to Boolean.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToBoolean(v.Value, CultureInfo.InvariantCulture);
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.DateTimeOffset"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator DateTimeOffset(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateDate(v, false))
+        throw new ArgumentException("Can not convert {0} to DateTimeOffset.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (DateTimeOffset)v.Value;
+    }
+#endif
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Boolean}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator bool?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateBoolean(v, true))
+        throw new ArgumentException("Can not convert {0} to Boolean.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (bool?)Convert.ToBoolean(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Int64"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator long(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, false))
+        throw new ArgumentException("Can not convert {0} to Int64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToInt64(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{DateTime}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator DateTime?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateDate(v, true))
+        throw new ArgumentException("Can not convert {0} to DateTime.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (DateTime?)Convert.ToDateTime(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{DateTimeOffset}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator DateTimeOffset?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateDate(v, true))
+        throw new ArgumentException("Can not convert {0} to DateTimeOffset.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (DateTimeOffset?)v.Value;
+    }
+#endif
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Decimal}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator decimal?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateFloat(v, true))
+        throw new ArgumentException("Can not convert {0} to Decimal.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (decimal?)Convert.ToDecimal(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Double}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator double?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateFloat(v, true))
+        throw new ArgumentException("Can not convert {0} to Double.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (double?)v.Value;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Int32"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator int(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, false))
+        throw new ArgumentException("Can not convert {0} to Int32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToInt32(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Int16"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator short(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, false))
+        throw new ArgumentException("Can not convert {0} to Int16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToInt16(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.UInt16"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    [CLSCompliant(false)]
+    public static explicit operator ushort(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, false))
+        throw new ArgumentException("Can not convert {0} to UInt16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToUInt16(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Int32}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator int?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, true))
+        throw new ArgumentException("Can not convert {0} to Int32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (int?)Convert.ToInt32(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Int16}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator short?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, true))
+        throw new ArgumentException("Can not convert {0} to Int16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (short?)Convert.ToInt16(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{UInt16}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    [CLSCompliant(false)]
+    public static explicit operator ushort?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, true))
+        throw new ArgumentException("Can not convert {0} to UInt16.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (ushort?)Convert.ToInt16(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.DateTime"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator DateTime(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateDate(v, false))
+        throw new ArgumentException("Can not convert {0} to DateTime.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToDateTime(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Int64}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator long?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, true))
+        throw new ArgumentException("Can not convert {0} to Int64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (long?)Convert.ToInt64(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{Single}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator float?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateFloat(v, true))
+        throw new ArgumentException("Can not convert {0} to Single.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (float?)Convert.ToSingle(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Decimal"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator decimal(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateFloat(v, false))
+        throw new ArgumentException("Can not convert {0} to Decimal.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToDecimal(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{UInt32}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    [CLSCompliant(false)]
+    public static explicit operator uint?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, true))
+        throw new ArgumentException("Can not convert {0} to UInt32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (uint?)Convert.ToUInt32(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="Nullable{UInt64}"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    [CLSCompliant(false)]
+    public static explicit operator ulong?(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, true))
+        throw new ArgumentException("Can not convert {0} to UInt64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? (ulong?)Convert.ToUInt64(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Double"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator double(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateFloat(v, false))
+        throw new ArgumentException("Can not convert {0} to Double.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToDouble(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.Single"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator float(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateFloat(v, false))
+        throw new ArgumentException("Can not convert {0} to Single.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToSingle(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.String"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator string(JToken value)
+    {
+      if (value == null)
+        return null;
+
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateString(v))
+        throw new ArgumentException("Can not convert {0} to String.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (v.Value != null) ? Convert.ToString(v.Value, CultureInfo.InvariantCulture) : null;
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.UInt32"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    [CLSCompliant(false)]
+    public static explicit operator uint(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, false))
+        throw new ArgumentException("Can not convert {0} to UInt32.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToUInt32(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="System.UInt64"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    [CLSCompliant(false)]
+    public static explicit operator ulong(JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateInteger(v, false))
+        throw new ArgumentException("Can not convert {0} to UInt64.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return Convert.ToUInt64(v.Value, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Performs an explicit conversion from <see cref="Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Byte[]"/>.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>The result of the conversion.</returns>
+    public static explicit operator byte[](JToken value)
+    {
+      JValue v = EnsureValue(value);
+      if (v == null || !ValidateBytes(v))
+        throw new ArgumentException("Can not convert {0} to byte array.".FormatWith(CultureInfo.InvariantCulture, GetType(value)));
+
+      return (byte[])v.Value;
+    }
+    #endregion
+
+    #region Cast to operators
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Boolean"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(bool value)
+    {
+      return new JValue(value);
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="DateTimeOffset"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(DateTimeOffset value)
+    {
+      return new JValue(value);
+    }
+#endif
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Boolean}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(bool? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Int64}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(long value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{DateTime}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(DateTime? value)
+    {
+      return new JValue(value);
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{DateTimeOffset}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(DateTimeOffset? value)
+    {
+      return new JValue(value);
+    }
+#endif
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Decimal}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(decimal? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Double}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(double? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Int16"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(short value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="UInt16"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(ushort value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Int32"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(int value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Int32}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(int? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="DateTime"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(DateTime value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Int64}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(long? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Single}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(float? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Decimal"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(decimal value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{Int16}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(short? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{UInt16}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(ushort? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{UInt32}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(uint? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Nullable{UInt64}"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(ulong? value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Double"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(double value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="Single"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(float value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="String"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(string value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="UInt32"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(uint value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="UInt64"/> to <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    [CLSCompliant(false)]
+    public static implicit operator JToken(ulong value)
+    {
+      return new JValue(value);
+    }
+
+    /// <summary>
+    /// Performs an implicit conversion from <see cref="T:System.Byte[]"/> to <see cref="Newtonsoft.Json.Linq.JToken"/>.
+    /// </summary>
+    /// <param name="value">The value to create a <see cref="JValue"/> from.</param>
+    /// <returns>The <see cref="JValue"/> initialized with the specified value.</returns>
+    public static implicit operator JToken(byte[] value)
+    {
+      return new JValue(value);
+    }
+    #endregion
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return ((IEnumerable<JToken>)this).GetEnumerator();
+    }
+
+    IEnumerator<JToken> IEnumerable<JToken>.GetEnumerator()
+    {
+      return Children().GetEnumerator();
+    }
+
+    internal abstract int GetDeepHashCode();
+
+    IJEnumerable<JToken> IJEnumerable<JToken>.this[object key]
+    {
+      get { return this[key]; }
+    }
+
+    /// <summary>
+    /// Creates an <see cref="JsonReader"/> for this token.
+    /// </summary>
+    /// <returns>An <see cref="JsonReader"/> that can be used to read this token and its descendants.</returns>
+    public JsonReader CreateReader()
+    {
+      return new JTokenReader(this);
+    }
+
+    internal static JToken FromObjectInternal(object o, JsonSerializer jsonSerializer)
+    {
+      ValidationUtils.ArgumentNotNull(o, "o");
+      ValidationUtils.ArgumentNotNull(jsonSerializer, "jsonSerializer");
+
+      JToken token;
+      using (JTokenWriter jsonWriter = new JTokenWriter())
+      {
+        jsonSerializer.Serialize(jsonWriter, o);
+        token = jsonWriter.Token;
+      }
+
+      return token;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JToken"/> from an object.
+    /// </summary>
+    /// <param name="o">The object that will be used to create <see cref="JToken"/>.</param>
+    /// <returns>A <see cref="JToken"/> with the value of the specified object</returns>
+    public static JToken FromObject(object o)
+    {
+      return FromObjectInternal(o, new JsonSerializer());
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JToken"/> from an object using the specified <see cref="JsonSerializer"/>.
+    /// </summary>
+    /// <param name="o">The object that will be used to create <see cref="JToken"/>.</param>
+    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used when reading the object.</param>
+    /// <returns>A <see cref="JToken"/> with the value of the specified object</returns>
+    public static JToken FromObject(object o, JsonSerializer jsonSerializer)
+    {
+      return FromObjectInternal(o, jsonSerializer);
+    }
+
+    /// <summary>
+    /// Creates the specified .NET type from the <see cref="JToken"/>.
+    /// </summary>
+    /// <returns>The new object created from the JSON value.</returns>
+    public T ToObject<T>()
+    {
+      return ToObject<T>(new JsonSerializer());
+    }
+
+    /// <summary>
+    /// Creates the specified .NET type from the <see cref="JToken"/> using the specified <see cref="JsonSerializer"/>.
+    /// </summary>
+    /// <param name="jsonSerializer">The <see cref="JsonSerializer"/> that will be used when creating the object.</param>
+    /// <returns>The new object created from the JSON value.</returns>
+    public T ToObject<T>(JsonSerializer jsonSerializer)
+    {
+      ValidationUtils.ArgumentNotNull(jsonSerializer, "jsonSerializer");
+
+      using (JTokenReader jsonReader = new JTokenReader(this))
+      {
+        return jsonSerializer.Deserialize<T>(jsonReader);
+      }
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JToken"/> from a <see cref="JsonReader"/>.
+    /// </summary>
+    /// <param name="reader">An <see cref="JsonReader"/> positioned at the token to read into this <see cref="JToken"/>.</param>
+    /// <returns>
+    /// An <see cref="JToken"/> that contains the token and its descendant tokens
+    /// that were read from the reader. The runtime type of the token is determined
+    /// by the token type of the first token encountered in the reader.
+    /// </returns>
+    public static JToken ReadFrom(JsonReader reader)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+
+      if (reader.TokenType == JsonToken.None)
+      {
+        if (!reader.Read())
+          throw new Exception("Error reading JToken from JsonReader.");
+      }
+
+      if (reader.TokenType == JsonToken.StartObject)
+        return JObject.Load(reader);
+
+      if (reader.TokenType == JsonToken.StartArray)
+        return JArray.Load(reader);
+
+      if (reader.TokenType == JsonToken.PropertyName)
+        return JProperty.Load(reader);
+
+      if (reader.TokenType == JsonToken.StartConstructor)
+        return JConstructor.Load(reader);
+
+      if (!JsonReader.IsStartToken(reader.TokenType))
+        return new JValue(reader.Value);
+
+      // TODO: loading constructor and parameters?
+      throw new Exception("Error reading JToken from JsonReader. Unexpected token: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+    }
+
+    /// <summary>
+    /// Load a <see cref="JToken"/> from a string that contains JSON.
+    /// </summary>
+    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
+    /// <returns>A <see cref="JToken"/> populated from the string that contains JSON.</returns>
+    public static JToken Parse(string json)
+    {
+      JsonReader jsonReader = new JsonTextReader(new StringReader(json));
+
+      JToken t = Load(jsonReader);
+
+      if (jsonReader.Read() && jsonReader.TokenType != JsonToken.Comment)
+        throw new Exception("Additional text found in JSON string after parsing content.");
+
+      return t;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JToken"/> from a <see cref="JsonReader"/>.
+    /// </summary>
+    /// <param name="reader">An <see cref="JsonReader"/> positioned at the token to read into this <see cref="JToken"/>.</param>
+    /// <returns>
+    /// An <see cref="JToken"/> that contains the token and its descendant tokens
+    /// that were read from the reader. The runtime type of the token is determined
+    /// by the token type of the first token encountered in the reader.
+    /// </returns>
+    public static JToken Load(JsonReader reader)
+    {
+      return ReadFrom(reader);
+    }
+
+    internal void SetLineInfo(IJsonLineInfo lineInfo)
+    {
+      if (lineInfo == null || !lineInfo.HasLineInfo())
+        return;
+
+      SetLineInfo(lineInfo.LineNumber, lineInfo.LinePosition);
+    }
+
+    internal void SetLineInfo(int lineNumber, int linePosition)
+    {
+      _lineNumber = lineNumber;
+      _linePosition = linePosition;
+    }
+
+    bool IJsonLineInfo.HasLineInfo()
+    {
+      return (_lineNumber != null && _linePosition != null);
+    }
+
+    int IJsonLineInfo.LineNumber
+    {
+      get { return _lineNumber ?? 0; }
+    }
+
+    int IJsonLineInfo.LinePosition
+    {
+      get { return _linePosition ?? 0; }
+    }
+
+    /// <summary>
+    /// Selects the token that matches the object path.
+    /// </summary>
+    /// <param name="path">
+    /// The object path from the current <see cref="JToken"/> to the <see cref="JToken"/>
+    /// to be returned. This must be a string of property names or array indexes separated
+    /// by periods, such as <code>Tables[0].DefaultView[0].Price</code> in C# or
+    /// <code>Tables(0).DefaultView(0).Price</code> in Visual Basic.
+    /// </param>
+    /// <returns>The <see cref="JToken"/> that matches the object path or a null reference if no matching token is found.</returns>
+    public JToken SelectToken(string path)
+    {
+      return SelectToken(path, false);
+    }
+
+    /// <summary>
+    /// Selects the token that matches the object path.
+    /// </summary>
+    /// <param name="path">
+    /// The object path from the current <see cref="JToken"/> to the <see cref="JToken"/>
+    /// to be returned. This must be a string of property names or array indexes separated
+    /// by periods, such as <code>Tables[0].DefaultView[0].Price</code> in C# or
+    /// <code>Tables(0).DefaultView(0).Price</code> in Visual Basic.
+    /// </param>
+    /// <param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no token is found.</param>
+    /// <returns>The <see cref="JToken"/> that matches the object path.</returns>
+    public JToken SelectToken(string path, bool errorWhenNoMatch)
+    {
+      JPath p = new JPath(path);
+      return p.Evaluate(this, errorWhenNoMatch);
+    }
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    /// <summary>
+    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+    /// </summary>
+    /// <param name="parameter">The expression tree representation of the runtime value.</param>
+    /// <returns>
+    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+    /// </returns>
+    protected virtual DynamicMetaObject GetMetaObject(Expression parameter)
+    {
+      return new DynamicProxyMetaObject<JToken>(parameter, this, new DynamicProxy<JToken>(), true);
+    }
+
+    /// <summary>
+    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+    /// </summary>
+    /// <param name="parameter">The expression tree representation of the runtime value.</param>
+    /// <returns>
+    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+    /// </returns>
+    DynamicMetaObject IDynamicMetaObjectProvider.GetMetaObject(Expression parameter)
+    {
+      return GetMetaObject(parameter);
+    }
+#endif
+
+#if !SILVERLIGHT && !NETFX_CORE
+    object ICloneable.Clone()
+    {
+      return DeepClone();
+    }
+#endif
+
+    /// <summary>
+    /// Creates a new instance of the <see cref="JToken"/>. All child tokens are recursively cloned.
+    /// </summary>
+    /// <returns>A new instance of the <see cref="JToken"/>.</returns>
+    public JToken DeepClone()
+    {
+      return CloneToken();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenEqualityComparer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenEqualityComparer.cs
@@ -1,37 +1,37 @@
-﻿using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Compares tokens to determine whether they are equal.
-  /// </summary>
-  public class JTokenEqualityComparer : IEqualityComparer<JToken>
-  {
-    /// <summary>
-    /// Determines whether the specified objects are equal.
-    /// </summary>
-    /// <param name="x">The first object of type <see cref="JToken"/> to compare.</param>
-    /// <param name="y">The second object of type <see cref="JToken"/> to compare.</param>
-    /// <returns>
-    /// true if the specified objects are equal; otherwise, false.
-    /// </returns>
-    public bool Equals(JToken x, JToken y)
-    {
-      return JToken.DeepEquals(x, y);
-    }
-
-    /// <summary>
-    /// Returns a hash code for the specified object.
-    /// </summary>
-    /// <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
-    /// <returns>A hash code for the specified object.</returns>
-    /// <exception cref="T:System.ArgumentNullException">The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.</exception>
-    public int GetHashCode(JToken obj)
-    {
-      if (obj == null)
-        return 0;
-
-      return obj.GetDeepHashCode();
-    }
-  }
+﻿using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Compares tokens to determine whether they are equal.
+  /// </summary>
+  public class JTokenEqualityComparer : IEqualityComparer<JToken>
+  {
+    /// <summary>
+    /// Determines whether the specified objects are equal.
+    /// </summary>
+    /// <param name="x">The first object of type <see cref="JToken"/> to compare.</param>
+    /// <param name="y">The second object of type <see cref="JToken"/> to compare.</param>
+    /// <returns>
+    /// true if the specified objects are equal; otherwise, false.
+    /// </returns>
+    public bool Equals(JToken x, JToken y)
+    {
+      return JToken.DeepEquals(x, y);
+    }
+
+    /// <summary>
+    /// Returns a hash code for the specified object.
+    /// </summary>
+    /// <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
+    /// <returns>A hash code for the specified object.</returns>
+    /// <exception cref="T:System.ArgumentNullException">The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.</exception>
+    public int GetHashCode(JToken obj)
+    {
+      if (obj == null)
+        return 0;
+
+      return obj.GetDeepHashCode();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenReader.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenReader.cs
@@ -1,298 +1,298 @@
-﻿using System;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
-  /// </summary>
-  public class JTokenReader : JsonReader, IJsonLineInfo
-  {
-    private readonly JToken _root;
-    private JToken _parent;
-    private JToken _current;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JTokenReader"/> class.
-    /// </summary>
-    /// <param name="token">The token to read from.</param>
-    public JTokenReader(JToken token)
-    {
-      ValidationUtils.ArgumentNotNull(token, "token");
-
-      _root = token;
-      _current = token;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.
-    /// </returns>
-    public override byte[] ReadAsBytes()
-    {
-      return ReadAsBytesInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override decimal? ReadAsDecimal()
-    {
-      return ReadAsDecimalInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override int? ReadAsInt32()
-    {
-      return ReadAsInt32Internal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="String"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override string ReadAsString()
-    {
-      return ReadAsStringInternal();
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
-    /// </summary>
-    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override DateTime? ReadAsDateTime()
-    {
-      return ReadAsDateTimeInternal();
-    }
-
-#if !NET20
-    /// <summary>
-    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
-    /// </summary>
-    /// <returns>A <see cref="Nullable{DateTimeOffset}"/>. This method will return <c>null</c> at the end of an array.</returns>
-    public override DateTimeOffset? ReadAsDateTimeOffset()
-    {
-      return ReadAsDateTimeOffsetInternal();
-    }
-#endif
-
-    internal override bool ReadInternal()
-    {
-      if (CurrentState != State.Start)
-      {
-        JContainer container = _current as JContainer;
-        if (container != null && _parent != container)
-          return ReadInto(container);
-        else
-          return ReadOver(_current);
-      }
-
-      SetToken(_current);
-      return true;
-    }
-
-    /// <summary>
-    /// Reads the next JSON token from the stream.
-    /// </summary>
-    /// <returns>
-    /// true if the next token was read successfully; false if there are no more tokens to read.
-    /// </returns>
-    public override bool Read()
-    {
-      _readType = ReadType.Read;
-
-      return ReadInternal();
-    }
-
-    private bool ReadOver(JToken t)
-    {
-      if (t == _root)
-        return ReadToEnd();
-
-      JToken next = t.Next;
-      if ((next == null || next == t) || t == t.Parent.Last)
-      {
-        if (t.Parent == null)
-          return ReadToEnd();
-
-        return SetEnd(t.Parent);
-      }
-      else
-      {
-        _current = next;
-        SetToken(_current);
-        return true;
-      }
-    }
-
-    private bool ReadToEnd()
-    {
-      SetToken(JsonToken.None);
-      return false;
-    }
-
-    private bool IsEndElement
-    {
-      get { return (_current == _parent); }
-    }
-
-    private JsonToken? GetEndToken(JContainer c)
-    {
-      switch (c.Type)
-      {
-        case JTokenType.Object:
-          return JsonToken.EndObject;
-        case JTokenType.Array:
-          return JsonToken.EndArray;
-        case JTokenType.Constructor:
-          return JsonToken.EndConstructor;
-        case JTokenType.Property:
-          return null;
-        default:
-          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("Type", c.Type, "Unexpected JContainer type.");
-      }
-    }
-
-    private bool ReadInto(JContainer c)
-    {
-      JToken firstChild = c.First;
-      if (firstChild == null)
-      {
-        return SetEnd(c);
-      }
-      else
-      {
-        SetToken(firstChild);
-        _current = firstChild;
-        _parent = c;
-        return true;
-      }
-    }
-
-    private bool SetEnd(JContainer c)
-    {
-      JsonToken? endToken = GetEndToken(c);
-      if (endToken != null)
-      {
-        SetToken(endToken.Value);
-        _current = c;
-        _parent = c;
-        return true;
-      }
-      else
-      {
-        return ReadOver(c);
-      }
-    }
-
-    private void SetToken(JToken token)
-    {
-      switch (token.Type)
-      {
-        case JTokenType.Object:
-          SetToken(JsonToken.StartObject);
-          break;
-        case JTokenType.Array:
-          SetToken(JsonToken.StartArray);
-          break;
-        case JTokenType.Constructor:
-          SetToken(JsonToken.StartConstructor);
-          break;
-        case JTokenType.Property:
-          SetToken(JsonToken.PropertyName, ((JProperty)token).Name);
-          break;
-        case JTokenType.Comment:
-          SetToken(JsonToken.Comment, ((JValue)token).Value);
-          break;
-        case JTokenType.Integer:
-          SetToken(JsonToken.Integer, ((JValue)token).Value);
-          break;
-        case JTokenType.Float:
-          SetToken(JsonToken.Float, ((JValue)token).Value);
-          break;
-        case JTokenType.String:
-          SetToken(JsonToken.String, ((JValue)token).Value);
-          break;
-        case JTokenType.Boolean:
-          SetToken(JsonToken.Boolean, ((JValue)token).Value);
-          break;
-        case JTokenType.Null:
-          SetToken(JsonToken.Null, ((JValue)token).Value);
-          break;
-        case JTokenType.Undefined:
-          SetToken(JsonToken.Undefined, ((JValue)token).Value);
-          break;
-        case JTokenType.Date:
-          SetToken(JsonToken.Date, ((JValue)token).Value);
-          break;
-        case JTokenType.Raw:
-          SetToken(JsonToken.Raw, ((JValue)token).Value);
-          break;
-        case JTokenType.Bytes:
-          SetToken(JsonToken.Bytes, ((JValue)token).Value);
-          break;
-        case JTokenType.Guid:
-          SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
-          break;
-        case JTokenType.Uri:
-          SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
-          break;
-        case JTokenType.TimeSpan:
-          SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
-          break;
-        default:
-          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("Type", token.Type, "Unexpected JTokenType.");
-      }
-    }
-
-    private string SafeToString(object value)
-    {
-      return (value != null) ? value.ToString() : null;
-    }
-
-    bool IJsonLineInfo.HasLineInfo()
-    {
-      if (CurrentState == State.Start)
-        return false;
-
-      IJsonLineInfo info = IsEndElement ? null : _current;
-      return (info != null && info.HasLineInfo());
-    }
-
-    int IJsonLineInfo.LineNumber
-    {
-      get
-      {
-        if (CurrentState == State.Start)
-          return 0;
-
-        IJsonLineInfo info = IsEndElement ? null : _current;
-        if (info != null)
-          return info.LineNumber;
-        
-        return 0;
-      }
-    }
-
-    int IJsonLineInfo.LinePosition
-    {
-      get
-      {
-        if (CurrentState == State.Start)
-          return 0;
-
-        IJsonLineInfo info = IsEndElement ? null : _current;
-        if (info != null)
-          return info.LinePosition;
-
-        return 0;
-      }
-    }
-  }
+﻿using System;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
+  /// </summary>
+  public class JTokenReader : JsonReader, IJsonLineInfo
+  {
+    private readonly JToken _root;
+    private JToken _parent;
+    private JToken _current;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JTokenReader"/> class.
+    /// </summary>
+    /// <param name="token">The token to read from.</param>
+    public JTokenReader(JToken token)
+    {
+      ValidationUtils.ArgumentNotNull(token, "token");
+
+      _root = token;
+      _current = token;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null. This method will return <c>null</c> at the end of an array.
+    /// </returns>
+    public override byte[] ReadAsBytes()
+    {
+      return ReadAsBytesInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Decimal}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Decimal}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override decimal? ReadAsDecimal()
+    {
+      return ReadAsDecimalInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{Int32}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{Int32}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override int? ReadAsInt32()
+    {
+      return ReadAsInt32Internal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="String"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override string ReadAsString()
+    {
+      return ReadAsStringInternal();
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTime}"/>.
+    /// </summary>
+    /// <returns>A <see cref="String"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override DateTime? ReadAsDateTime()
+    {
+      return ReadAsDateTimeInternal();
+    }
+
+#if !NET20
+    /// <summary>
+    /// Reads the next JSON token from the stream as a <see cref="Nullable{DateTimeOffset}"/>.
+    /// </summary>
+    /// <returns>A <see cref="Nullable{DateTimeOffset}"/>. This method will return <c>null</c> at the end of an array.</returns>
+    public override DateTimeOffset? ReadAsDateTimeOffset()
+    {
+      return ReadAsDateTimeOffsetInternal();
+    }
+#endif
+
+    internal override bool ReadInternal()
+    {
+      if (CurrentState != State.Start)
+      {
+        JContainer container = _current as JContainer;
+        if (container != null && _parent != container)
+          return ReadInto(container);
+        else
+          return ReadOver(_current);
+      }
+
+      SetToken(_current);
+      return true;
+    }
+
+    /// <summary>
+    /// Reads the next JSON token from the stream.
+    /// </summary>
+    /// <returns>
+    /// true if the next token was read successfully; false if there are no more tokens to read.
+    /// </returns>
+    public override bool Read()
+    {
+      _readType = ReadType.Read;
+
+      return ReadInternal();
+    }
+
+    private bool ReadOver(JToken t)
+    {
+      if (t == _root)
+        return ReadToEnd();
+
+      JToken next = t.Next;
+      if ((next == null || next == t) || t == t.Parent.Last)
+      {
+        if (t.Parent == null)
+          return ReadToEnd();
+
+        return SetEnd(t.Parent);
+      }
+      else
+      {
+        _current = next;
+        SetToken(_current);
+        return true;
+      }
+    }
+
+    private bool ReadToEnd()
+    {
+      SetToken(JsonToken.None);
+      return false;
+    }
+
+    private bool IsEndElement
+    {
+      get { return (_current == _parent); }
+    }
+
+    private JsonToken? GetEndToken(JContainer c)
+    {
+      switch (c.Type)
+      {
+        case JTokenType.Object:
+          return JsonToken.EndObject;
+        case JTokenType.Array:
+          return JsonToken.EndArray;
+        case JTokenType.Constructor:
+          return JsonToken.EndConstructor;
+        case JTokenType.Property:
+          return null;
+        default:
+          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("Type", c.Type, "Unexpected JContainer type.");
+      }
+    }
+
+    private bool ReadInto(JContainer c)
+    {
+      JToken firstChild = c.First;
+      if (firstChild == null)
+      {
+        return SetEnd(c);
+      }
+      else
+      {
+        SetToken(firstChild);
+        _current = firstChild;
+        _parent = c;
+        return true;
+      }
+    }
+
+    private bool SetEnd(JContainer c)
+    {
+      JsonToken? endToken = GetEndToken(c);
+      if (endToken != null)
+      {
+        SetToken(endToken.Value);
+        _current = c;
+        _parent = c;
+        return true;
+      }
+      else
+      {
+        return ReadOver(c);
+      }
+    }
+
+    private void SetToken(JToken token)
+    {
+      switch (token.Type)
+      {
+        case JTokenType.Object:
+          SetToken(JsonToken.StartObject);
+          break;
+        case JTokenType.Array:
+          SetToken(JsonToken.StartArray);
+          break;
+        case JTokenType.Constructor:
+          SetToken(JsonToken.StartConstructor);
+          break;
+        case JTokenType.Property:
+          SetToken(JsonToken.PropertyName, ((JProperty)token).Name);
+          break;
+        case JTokenType.Comment:
+          SetToken(JsonToken.Comment, ((JValue)token).Value);
+          break;
+        case JTokenType.Integer:
+          SetToken(JsonToken.Integer, ((JValue)token).Value);
+          break;
+        case JTokenType.Float:
+          SetToken(JsonToken.Float, ((JValue)token).Value);
+          break;
+        case JTokenType.String:
+          SetToken(JsonToken.String, ((JValue)token).Value);
+          break;
+        case JTokenType.Boolean:
+          SetToken(JsonToken.Boolean, ((JValue)token).Value);
+          break;
+        case JTokenType.Null:
+          SetToken(JsonToken.Null, ((JValue)token).Value);
+          break;
+        case JTokenType.Undefined:
+          SetToken(JsonToken.Undefined, ((JValue)token).Value);
+          break;
+        case JTokenType.Date:
+          SetToken(JsonToken.Date, ((JValue)token).Value);
+          break;
+        case JTokenType.Raw:
+          SetToken(JsonToken.Raw, ((JValue)token).Value);
+          break;
+        case JTokenType.Bytes:
+          SetToken(JsonToken.Bytes, ((JValue)token).Value);
+          break;
+        case JTokenType.Guid:
+          SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
+          break;
+        case JTokenType.Uri:
+          SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
+          break;
+        case JTokenType.TimeSpan:
+          SetToken(JsonToken.String, SafeToString(((JValue)token).Value));
+          break;
+        default:
+          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("Type", token.Type, "Unexpected JTokenType.");
+      }
+    }
+
+    private string SafeToString(object value)
+    {
+      return (value != null) ? value.ToString() : null;
+    }
+
+    bool IJsonLineInfo.HasLineInfo()
+    {
+      if (CurrentState == State.Start)
+        return false;
+
+      IJsonLineInfo info = IsEndElement ? null : _current;
+      return (info != null && info.HasLineInfo());
+    }
+
+    int IJsonLineInfo.LineNumber
+    {
+      get
+      {
+        if (CurrentState == State.Start)
+          return 0;
+
+        IJsonLineInfo info = IsEndElement ? null : _current;
+        if (info != null)
+          return info.LineNumber;
+        
+        return 0;
+      }
+    }
+
+    int IJsonLineInfo.LinePosition
+    {
+      get
+      {
+        if (CurrentState == State.Start)
+          return 0;
+
+        IJsonLineInfo info = IsEndElement ? null : _current;
+        if (info != null)
+          return info.LinePosition;
+
+        return 0;
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenType.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenType.cs
@@ -1,106 +1,106 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Specifies the type of token.
-  /// </summary>
-  public enum JTokenType
-  {
-    /// <summary>
-    /// No token type has been set.
-    /// </summary>
-    None,
-    /// <summary>
-    /// A JSON object.
-    /// </summary>
-    Object,
-    /// <summary>
-    /// A JSON array.
-    /// </summary>
-    Array,
-    /// <summary>
-    /// A JSON constructor.
-    /// </summary>
-    Constructor,
-    /// <summary>
-    /// A JSON object property.
-    /// </summary>
-    Property,
-    /// <summary>
-    /// A comment.
-    /// </summary>
-    Comment,
-    /// <summary>
-    /// An integer value.
-    /// </summary>
-    Integer,
-    /// <summary>
-    /// A float value.
-    /// </summary>
-    Float,
-    /// <summary>
-    /// A string value.
-    /// </summary>
-    String,
-    /// <summary>
-    /// A boolean value.
-    /// </summary>
-    Boolean,
-    /// <summary>
-    /// A null value.
-    /// </summary>
-    Null,
-    /// <summary>
-    /// An undefined value.
-    /// </summary>
-    Undefined,
-    /// <summary>
-    /// A date value.
-    /// </summary>
-    Date,
-    /// <summary>
-    /// A raw JSON value.
-    /// </summary>
-    Raw,
-    /// <summary>
-    /// A collection of bytes value.
-    /// </summary>
-    Bytes,
-    /// <summary>
-    /// A Guid value.
-    /// </summary>
-    Guid,
-    /// <summary>
-    /// A Uri value.
-    /// </summary>
-    Uri,
-    /// <summary>
-    /// A TimeSpan value.
-    /// </summary>
-    TimeSpan
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Specifies the type of token.
+  /// </summary>
+  public enum JTokenType
+  {
+    /// <summary>
+    /// No token type has been set.
+    /// </summary>
+    None,
+    /// <summary>
+    /// A JSON object.
+    /// </summary>
+    Object,
+    /// <summary>
+    /// A JSON array.
+    /// </summary>
+    Array,
+    /// <summary>
+    /// A JSON constructor.
+    /// </summary>
+    Constructor,
+    /// <summary>
+    /// A JSON object property.
+    /// </summary>
+    Property,
+    /// <summary>
+    /// A comment.
+    /// </summary>
+    Comment,
+    /// <summary>
+    /// An integer value.
+    /// </summary>
+    Integer,
+    /// <summary>
+    /// A float value.
+    /// </summary>
+    Float,
+    /// <summary>
+    /// A string value.
+    /// </summary>
+    String,
+    /// <summary>
+    /// A boolean value.
+    /// </summary>
+    Boolean,
+    /// <summary>
+    /// A null value.
+    /// </summary>
+    Null,
+    /// <summary>
+    /// An undefined value.
+    /// </summary>
+    Undefined,
+    /// <summary>
+    /// A date value.
+    /// </summary>
+    Date,
+    /// <summary>
+    /// A raw JSON value.
+    /// </summary>
+    Raw,
+    /// <summary>
+    /// A collection of bytes value.
+    /// </summary>
+    Bytes,
+    /// <summary>
+    /// A Guid value.
+    /// </summary>
+    Guid,
+    /// <summary>
+    /// A Uri value.
+    /// </summary>
+    Uri,
+    /// <summary>
+    /// A TimeSpan value.
+    /// </summary>
+    TimeSpan
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenWriter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JTokenWriter.cs
@@ -1,407 +1,407 @@
-﻿using System;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
-  /// </summary>
-  public class JTokenWriter : JsonWriter
-  {
-    private JContainer _token;
-    private JContainer _parent;
-    // used when writer is writing single value and the value has no containing parent
-    private JValue _value;
-
-    /// <summary>
-    /// Gets the token being writen.
-    /// </summary>
-    /// <value>The token being writen.</value>
-    public JToken Token
-    {
-      get
-      {
-        if (_token != null)
-          return _token;
-
-        return _value;
-      }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JTokenWriter"/> class writing to the given <see cref="JContainer"/>.
-    /// </summary>
-    /// <param name="container">The container being written to.</param>
-    public JTokenWriter(JContainer container)
-    {
-      ValidationUtils.ArgumentNotNull(container, "container");
-
-      _token = container;
-      _parent = container;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JTokenWriter"/> class.
-    /// </summary>
-    public JTokenWriter()
-    {
-    }
-
-    /// <summary>
-    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
-    /// </summary>
-    public override void Flush()
-    {
-    }
-
-    /// <summary>
-    /// Closes this stream and the underlying stream.
-    /// </summary>
-    public override void Close()
-    {
-      base.Close();
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json object.
-    /// </summary>
-    public override void WriteStartObject()
-    {
-      base.WriteStartObject();
-
-      AddParent(new JObject());
-    }
-
-    private void AddParent(JContainer container)
-    {
-      if (_parent == null)
-        _token = container;
-      else
-        _parent.AddAndSkipParentCheck(container);
-
-      _parent = container;
-    }
-
-    private void RemoveParent()
-    {
-      _parent = _parent.Parent;
-
-      if (_parent != null && _parent.Type == JTokenType.Property)
-        _parent = _parent.Parent;
-    }
-
-    /// <summary>
-    /// Writes the beginning of a Json array.
-    /// </summary>
-    public override void WriteStartArray()
-    {
-      base.WriteStartArray();
-
-      AddParent(new JArray());
-    }
-
-    /// <summary>
-    /// Writes the start of a constructor with the given name.
-    /// </summary>
-    /// <param name="name">The name of the constructor.</param>
-    public override void WriteStartConstructor(string name)
-    {
-      base.WriteStartConstructor(name);
-
-      AddParent(new JConstructor(name));
-    }
-
-    /// <summary>
-    /// Writes the end.
-    /// </summary>
-    /// <param name="token">The token.</param>
-    protected override void WriteEnd(JsonToken token)
-    {
-      RemoveParent();
-    }
-
-    /// <summary>
-    /// Writes the property name of a name/value pair on a Json object.
-    /// </summary>
-    /// <param name="name">The name of the property.</param>
-    public override void WritePropertyName(string name)
-    {
-      base.WritePropertyName(name);
-
-      AddParent(new JProperty(name));
-    }
-
-    private void AddValue(object value, JsonToken token)
-    {
-      AddValue(new JValue(value), token);
-    }
-
-    internal void AddValue(JValue value, JsonToken token)
-    {
-      if (_parent != null)
-      {
-        _parent.Add(value);
-
-        if (_parent.Type == JTokenType.Property)
-          _parent = _parent.Parent;
-      }
-      else
-      {
-        _value = value;
-      }
-    }
-
-    #region WriteValue methods
-    /// <summary>
-    /// Writes a null value.
-    /// </summary>
-    public override void WriteNull()
-    {
-      base.WriteNull();
-      AddValue(null, JsonToken.Null);
-    }
-
-    /// <summary>
-    /// Writes an undefined value.
-    /// </summary>
-    public override void WriteUndefined()
-    {
-      base.WriteUndefined();
-      AddValue(null, JsonToken.Undefined);
-    }
-
-    /// <summary>
-    /// Writes raw JSON.
-    /// </summary>
-    /// <param name="json">The raw JSON to write.</param>
-    public override void WriteRaw(string json)
-    {
-      base.WriteRaw(json);
-      AddValue(new JRaw(json), JsonToken.Raw);
-    }
-
-    /// <summary>
-    /// Writes out a comment <code>/*...*/</code> containing the specified text.
-    /// </summary>
-    /// <param name="text">Text to place inside the comment.</param>
-    public override void WriteComment(string text)
-    {
-      base.WriteComment(text);
-      AddValue(JValue.CreateComment(text), JsonToken.Comment);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="String"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="String"/> value to write.</param>
-    public override void WriteValue(string value)
-    {
-      base.WriteValue(value);
-      AddValue(value ?? string.Empty, JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int32"/> value to write.</param>
-    public override void WriteValue(int value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt32"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(uint value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int64"/> value to write.</param>
-    public override void WriteValue(long value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt64"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(ulong value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Single"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Single"/> value to write.</param>
-    public override void WriteValue(float value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Double"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Double"/> value to write.</param>
-    public override void WriteValue(double value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Boolean"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
-    public override void WriteValue(bool value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Boolean);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Int16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Int16"/> value to write.</param>
-    public override void WriteValue(short value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="UInt16"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(ushort value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Char"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Char"/> value to write.</param>
-    public override void WriteValue(char value)
-    {
-      base.WriteValue(value);
-      string s = null;
-#if !NETFX_CORE
-      s = value.ToString(CultureInfo.InvariantCulture);
-#else
-      s = value.ToString();
-#endif
-      AddValue(s, JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Byte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Byte"/> value to write.</param>
-    public override void WriteValue(byte value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="SByte"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="SByte"/> value to write.</param>
-    [CLSCompliant(false)]
-    public override void WriteValue(sbyte value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Integer);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Decimal"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
-    public override void WriteValue(decimal value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Float);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="DateTime"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
-    public override void WriteValue(DateTime value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Date);
-    }
-
-#if !PocketPC && !NET20
-    /// <summary>
-    /// Writes a <see cref="DateTimeOffset"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
-    public override void WriteValue(DateTimeOffset value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Date);
-    }
-#endif
-
-    /// <summary>
-    /// Writes a <see cref="T:Byte[]"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
-    public override void WriteValue(byte[] value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.Bytes);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="TimeSpan"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
-    public override void WriteValue(TimeSpan value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Guid"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Guid"/> value to write.</param>
-    public override void WriteValue(Guid value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.String);
-    }
-
-    /// <summary>
-    /// Writes a <see cref="Uri"/> value.
-    /// </summary>
-    /// <param name="value">The <see cref="Uri"/> value to write.</param>
-    public override void WriteValue(Uri value)
-    {
-      base.WriteValue(value);
-      AddValue(value, JsonToken.String);
-    }
-    #endregion
-  }
-}
+﻿using System;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
+  /// </summary>
+  public class JTokenWriter : JsonWriter
+  {
+    private JContainer _token;
+    private JContainer _parent;
+    // used when writer is writing single value and the value has no containing parent
+    private JValue _value;
+
+    /// <summary>
+    /// Gets the token being writen.
+    /// </summary>
+    /// <value>The token being writen.</value>
+    public JToken Token
+    {
+      get
+      {
+        if (_token != null)
+          return _token;
+
+        return _value;
+      }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JTokenWriter"/> class writing to the given <see cref="JContainer"/>.
+    /// </summary>
+    /// <param name="container">The container being written to.</param>
+    public JTokenWriter(JContainer container)
+    {
+      ValidationUtils.ArgumentNotNull(container, "container");
+
+      _token = container;
+      _parent = container;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JTokenWriter"/> class.
+    /// </summary>
+    public JTokenWriter()
+    {
+    }
+
+    /// <summary>
+    /// Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
+    /// </summary>
+    public override void Flush()
+    {
+    }
+
+    /// <summary>
+    /// Closes this stream and the underlying stream.
+    /// </summary>
+    public override void Close()
+    {
+      base.Close();
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json object.
+    /// </summary>
+    public override void WriteStartObject()
+    {
+      base.WriteStartObject();
+
+      AddParent(new JObject());
+    }
+
+    private void AddParent(JContainer container)
+    {
+      if (_parent == null)
+        _token = container;
+      else
+        _parent.AddAndSkipParentCheck(container);
+
+      _parent = container;
+    }
+
+    private void RemoveParent()
+    {
+      _parent = _parent.Parent;
+
+      if (_parent != null && _parent.Type == JTokenType.Property)
+        _parent = _parent.Parent;
+    }
+
+    /// <summary>
+    /// Writes the beginning of a Json array.
+    /// </summary>
+    public override void WriteStartArray()
+    {
+      base.WriteStartArray();
+
+      AddParent(new JArray());
+    }
+
+    /// <summary>
+    /// Writes the start of a constructor with the given name.
+    /// </summary>
+    /// <param name="name">The name of the constructor.</param>
+    public override void WriteStartConstructor(string name)
+    {
+      base.WriteStartConstructor(name);
+
+      AddParent(new JConstructor(name));
+    }
+
+    /// <summary>
+    /// Writes the end.
+    /// </summary>
+    /// <param name="token">The token.</param>
+    protected override void WriteEnd(JsonToken token)
+    {
+      RemoveParent();
+    }
+
+    /// <summary>
+    /// Writes the property name of a name/value pair on a Json object.
+    /// </summary>
+    /// <param name="name">The name of the property.</param>
+    public override void WritePropertyName(string name)
+    {
+      base.WritePropertyName(name);
+
+      AddParent(new JProperty(name));
+    }
+
+    private void AddValue(object value, JsonToken token)
+    {
+      AddValue(new JValue(value), token);
+    }
+
+    internal void AddValue(JValue value, JsonToken token)
+    {
+      if (_parent != null)
+      {
+        _parent.Add(value);
+
+        if (_parent.Type == JTokenType.Property)
+          _parent = _parent.Parent;
+      }
+      else
+      {
+        _value = value;
+      }
+    }
+
+    #region WriteValue methods
+    /// <summary>
+    /// Writes a null value.
+    /// </summary>
+    public override void WriteNull()
+    {
+      base.WriteNull();
+      AddValue(null, JsonToken.Null);
+    }
+
+    /// <summary>
+    /// Writes an undefined value.
+    /// </summary>
+    public override void WriteUndefined()
+    {
+      base.WriteUndefined();
+      AddValue(null, JsonToken.Undefined);
+    }
+
+    /// <summary>
+    /// Writes raw JSON.
+    /// </summary>
+    /// <param name="json">The raw JSON to write.</param>
+    public override void WriteRaw(string json)
+    {
+      base.WriteRaw(json);
+      AddValue(new JRaw(json), JsonToken.Raw);
+    }
+
+    /// <summary>
+    /// Writes out a comment <code>/*...*/</code> containing the specified text.
+    /// </summary>
+    /// <param name="text">Text to place inside the comment.</param>
+    public override void WriteComment(string text)
+    {
+      base.WriteComment(text);
+      AddValue(JValue.CreateComment(text), JsonToken.Comment);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="String"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="String"/> value to write.</param>
+    public override void WriteValue(string value)
+    {
+      base.WriteValue(value);
+      AddValue(value ?? string.Empty, JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int32"/> value to write.</param>
+    public override void WriteValue(int value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt32"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt32"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(uint value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int64"/> value to write.</param>
+    public override void WriteValue(long value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt64"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt64"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(ulong value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Single"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Single"/> value to write.</param>
+    public override void WriteValue(float value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Double"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Double"/> value to write.</param>
+    public override void WriteValue(double value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Boolean"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Boolean"/> value to write.</param>
+    public override void WriteValue(bool value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Boolean);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Int16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Int16"/> value to write.</param>
+    public override void WriteValue(short value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="UInt16"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="UInt16"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(ushort value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Char"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Char"/> value to write.</param>
+    public override void WriteValue(char value)
+    {
+      base.WriteValue(value);
+      string s = null;
+#if !NETFX_CORE
+      s = value.ToString(CultureInfo.InvariantCulture);
+#else
+      s = value.ToString();
+#endif
+      AddValue(s, JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Byte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Byte"/> value to write.</param>
+    public override void WriteValue(byte value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="SByte"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="SByte"/> value to write.</param>
+    [CLSCompliant(false)]
+    public override void WriteValue(sbyte value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Integer);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Decimal"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Decimal"/> value to write.</param>
+    public override void WriteValue(decimal value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Float);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="DateTime"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTime"/> value to write.</param>
+    public override void WriteValue(DateTime value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Date);
+    }
+
+#if !PocketPC && !NET20
+    /// <summary>
+    /// Writes a <see cref="DateTimeOffset"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="DateTimeOffset"/> value to write.</param>
+    public override void WriteValue(DateTimeOffset value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Date);
+    }
+#endif
+
+    /// <summary>
+    /// Writes a <see cref="T:Byte[]"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
+    public override void WriteValue(byte[] value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.Bytes);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="TimeSpan"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="TimeSpan"/> value to write.</param>
+    public override void WriteValue(TimeSpan value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Guid"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Guid"/> value to write.</param>
+    public override void WriteValue(Guid value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.String);
+    }
+
+    /// <summary>
+    /// Writes a <see cref="Uri"/> value.
+    /// </summary>
+    /// <param name="value">The <see cref="Uri"/> value to write.</param>
+    public override void WriteValue(Uri value)
+    {
+      base.WriteValue(value);
+      AddValue(value, JsonToken.String);
+    }
+    #endregion
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JValue.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Linq/JValue.cs
@@ -1,799 +1,799 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System.Dynamic;
-using System.Linq.Expressions;
-#endif
-
-namespace Newtonsoft.Json.Linq
-{
-  /// <summary>
-  /// Represents a value in JSON (string, integer, date, etc).
-  /// </summary>
-  public class JValue : JToken, IEquatable<JValue>, IFormattable, IComparable, IComparable<JValue>
-  {
-    private JTokenType _valueType;
-    private object _value;
-
-    internal JValue(object value, JTokenType type)
-    {
-      _value = value;
-      _valueType = type;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class from another <see cref="JValue"/> object.
-    /// </summary>
-    /// <param name="other">A <see cref="JValue"/> object to copy from.</param>
-    public JValue(JValue other)
-      : this(other.Value, other.Type)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(long value)
-      : this(value, JTokenType.Integer)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    [CLSCompliant(false)]
-    public JValue(ulong value)
-      : this(value, JTokenType.Integer)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(double value)
-      : this(value, JTokenType.Float)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(DateTime value)
-      : this(value, JTokenType.Date)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(bool value)
-      : this(value, JTokenType.Boolean)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(string value)
-      : this(value, JTokenType.String)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(Guid value)
-      : this(value, JTokenType.String)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(Uri value)
-      : this(value, JTokenType.String)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(TimeSpan value)
-      : this(value, JTokenType.String)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    public JValue(object value)
-      : this(value, GetValueType(null, value))
-    {
-    }
-
-    internal override bool DeepEquals(JToken node)
-    {
-      JValue other = node as JValue;
-      if (other == null)
-        return false;
-
-      return ValuesEquals(this, other);
-    }
-
-    /// <summary>
-    /// Gets a value indicating whether this token has childen tokens.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if this token has child values; otherwise, <c>false</c>.
-    /// </value>
-    public override bool HasValues
-    {
-      get { return false; }
-    }
-
-    private static int Compare(JTokenType valueType, object objA, object objB)
-    {
-      if (objA == null && objB == null)
-        return 0;
-      if (objA != null && objB == null)
-        return 1;
-      if (objA == null && objB != null)
-        return -1;
-
-      switch (valueType)
-      {
-        case JTokenType.Integer:
-          if (objA is ulong || objB is ulong || objA is decimal || objB is decimal)
-            return Convert.ToDecimal(objA, CultureInfo.InvariantCulture).CompareTo(Convert.ToDecimal(objB, CultureInfo.InvariantCulture));
-          else if (objA is float || objB is float || objA is double || objB is double)
-            return CompareFloat(objA, objB);
-          else
-            return Convert.ToInt64(objA, CultureInfo.InvariantCulture).CompareTo(Convert.ToInt64(objB, CultureInfo.InvariantCulture));
-        case JTokenType.Float:
-          return CompareFloat(objA, objB);
-        case JTokenType.Comment:
-        case JTokenType.String:
-        case JTokenType.Raw:
-          string s1 = Convert.ToString(objA, CultureInfo.InvariantCulture);
-          string s2 = Convert.ToString(objB, CultureInfo.InvariantCulture);
-
-          return string.CompareOrdinal(s1, s2);
-        case JTokenType.Boolean:
-          bool b1 = Convert.ToBoolean(objA, CultureInfo.InvariantCulture);
-          bool b2 = Convert.ToBoolean(objB, CultureInfo.InvariantCulture);
-
-          return b1.CompareTo(b2);
-        case JTokenType.Date:
-#if !NET20
-          if (objA is DateTime)
-          {
-#endif
-            DateTime date1 = Convert.ToDateTime(objA, CultureInfo.InvariantCulture);
-            DateTime date2 = Convert.ToDateTime(objB, CultureInfo.InvariantCulture);
-
-            return date1.CompareTo(date2);
-#if !NET20
-          }
-          else
-          {
-            if (!(objB is DateTimeOffset))
-              throw new ArgumentException("Object must be of type DateTimeOffset.");
-
-            DateTimeOffset date1 = (DateTimeOffset) objA;
-            DateTimeOffset date2 = (DateTimeOffset) objB;
-
-            return date1.CompareTo(date2);
-          }
-#endif
-        case JTokenType.Bytes:
-          if (!(objB is byte[]))
-            throw new ArgumentException("Object must be of type byte[].");
-
-          byte[] bytes1 = objA as byte[];
-          byte[] bytes2 = objB as byte[];
-          if (bytes1 == null)
-            return -1;
-          if (bytes2 == null)
-            return 1;
-
-          return MiscellaneousUtils.ByteArrayCompare(bytes1, bytes2);
-        case JTokenType.Guid:
-          if (!(objB is Guid))
-            throw new ArgumentException("Object must be of type Guid.");
-
-          Guid guid1 = (Guid) objA;
-          Guid guid2 = (Guid) objB;
-
-          return guid1.CompareTo(guid2);
-        case JTokenType.Uri:
-          if (!(objB is Uri))
-            throw new ArgumentException("Object must be of type Uri.");
-
-          Uri uri1 = (Uri)objA;
-          Uri uri2 = (Uri)objB;
-
-          return Comparer<string>.Default.Compare(uri1.ToString(), uri2.ToString());
-        case JTokenType.TimeSpan:
-          if (!(objB is TimeSpan))
-            throw new ArgumentException("Object must be of type TimeSpan.");
-
-          TimeSpan ts1 = (TimeSpan)objA;
-          TimeSpan ts2 = (TimeSpan)objB;
-
-          return ts1.CompareTo(ts2);
-        default:
-          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("valueType", valueType, "Unexpected value type: {0}".FormatWith(CultureInfo.InvariantCulture, valueType));
-      }
-    }
-
-    private static int CompareFloat(object objA, object objB)
-    {
-      double d1 = Convert.ToDouble(objA, CultureInfo.InvariantCulture);
-      double d2 = Convert.ToDouble(objB, CultureInfo.InvariantCulture);
-
-      // take into account possible floating point errors
-      if (MathUtils.ApproxEquals(d1, d2))
-        return 0;
-
-      return d1.CompareTo(d2);
-    }
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    private static bool Operation(ExpressionType operation, object objA, object objB, out object result)
-    {
-      if (objA is string || objB is string)
-      {
-        if (operation == ExpressionType.Add || operation == ExpressionType.AddAssign)
-        {
-          result = ((objA != null) ? objA.ToString() : null) + ((objB != null) ? objB.ToString() : null);
-          return true;
-        }
-      }
-
-      if (objA is ulong || objB is ulong || objA is decimal || objB is decimal)
-      {
-        if (objA == null || objB == null)
-        {
-          result = null;
-          return true;
-        }
-
-        decimal d1 = Convert.ToDecimal(objA, CultureInfo.InvariantCulture);
-        decimal d2 = Convert.ToDecimal(objB, CultureInfo.InvariantCulture);
-
-        switch (operation)
-        {
-          case ExpressionType.Add:
-          case ExpressionType.AddAssign:
-            result = d1 + d2;
-            return true;
-          case ExpressionType.Subtract:
-          case ExpressionType.SubtractAssign:
-            result = d1 - d2;
-            return true;
-          case ExpressionType.Multiply:
-          case ExpressionType.MultiplyAssign:
-            result = d1 * d2;
-            return true;
-          case ExpressionType.Divide:
-          case ExpressionType.DivideAssign:
-            result = d1 / d2;
-            return true;
-        }
-      }
-      else if (objA is float || objB is float || objA is double || objB is double)
-      {
-        if (objA == null || objB == null)
-        {
-          result = null;
-          return true;
-        }
-
-        double d1 = Convert.ToDouble(objA, CultureInfo.InvariantCulture);
-        double d2 = Convert.ToDouble(objB, CultureInfo.InvariantCulture);
-
-        switch (operation)
-        {
-          case ExpressionType.Add:
-          case ExpressionType.AddAssign:
-            result = d1 + d2;
-            return true;
-          case ExpressionType.Subtract:
-          case ExpressionType.SubtractAssign:
-            result = d1 - d2;
-            return true;
-          case ExpressionType.Multiply:
-          case ExpressionType.MultiplyAssign:
-            result = d1 * d2;
-            return true;
-          case ExpressionType.Divide:
-          case ExpressionType.DivideAssign:
-            result = d1 / d2;
-            return true;
-        }
-      }
-      else if (objA is int || objA is uint || objA is long || objA is short || objA is ushort || objA is sbyte || objA is byte ||
-        objB is int || objB is uint || objB is long || objB is short || objB is ushort || objB is sbyte || objB is byte)
-      {
-        if (objA == null || objB == null)
-        {
-          result = null;
-          return true;
-        }
-
-        long l1 = Convert.ToInt64(objA, CultureInfo.InvariantCulture);
-        long l2 = Convert.ToInt64(objB, CultureInfo.InvariantCulture);
-
-        switch (operation)
-        {
-          case ExpressionType.Add:
-          case ExpressionType.AddAssign:
-            result = l1 + l2;
-            return true;
-          case ExpressionType.Subtract:
-          case ExpressionType.SubtractAssign:
-            result = l1 - l2;
-            return true;
-          case ExpressionType.Multiply:
-          case ExpressionType.MultiplyAssign:
-            result = l1 * l2;
-            return true;
-          case ExpressionType.Divide:
-          case ExpressionType.DivideAssign:
-            result = l1 / l2;
-            return true;
-        }
-      }
-
-      result = null;
-      return false;
-    }
-#endif
-
-    internal override JToken CloneToken()
-    {
-      return new JValue(this);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JValue"/> comment with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>A <see cref="JValue"/> comment with the given value.</returns>
-    public static JValue CreateComment(string value)
-    {
-      return new JValue(value, JTokenType.Comment);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JValue"/> string with the given value.
-    /// </summary>
-    /// <param name="value">The value.</param>
-    /// <returns>A <see cref="JValue"/> string with the given value.</returns>
-    public static JValue CreateString(string value)
-    {
-      return new JValue(value, JTokenType.String);
-    }
-
-    private static JTokenType GetValueType(JTokenType? current, object value)
-    {
-      if (value == null)
-        return JTokenType.Null;
-#if !NETFX_CORE
-      else if (value == DBNull.Value)
-        return JTokenType.Null;
-#endif
-      else if (value is string)
-        return GetStringValueType(current);
-      else if (value is long || value is int || value is short || value is sbyte
-        || value is ulong || value is uint || value is ushort || value is byte)
-        return JTokenType.Integer;
-      else if (value is Enum)
-        return JTokenType.Integer;
-      else if (value is double || value is float || value is decimal)
-        return JTokenType.Float;
-      else if (value is DateTime)
-        return JTokenType.Date;
-#if !PocketPC && !NET20
-      else if (value is DateTimeOffset)
-        return JTokenType.Date;
-#endif
-      else if (value is byte[])
-        return JTokenType.Bytes;
-      else if (value is bool)
-        return JTokenType.Boolean;
-      else if (value is Guid)
-        return JTokenType.Guid;
-      else if (value is Uri)
-        return JTokenType.Uri;
-      else if (value is TimeSpan)
-        return JTokenType.TimeSpan;
-
-      throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
-    }
-
-    private static JTokenType GetStringValueType(JTokenType? current)
-    {
-      if (current == null)
-        return JTokenType.String;
-
-      switch (current.Value)
-      {
-        case JTokenType.Comment:
-        case JTokenType.String:
-        case JTokenType.Raw:
-          return current.Value;
-        default:
-          return JTokenType.String;
-      }
-    }
-
-    /// <summary>
-    /// Gets the node type for this <see cref="JToken"/>.
-    /// </summary>
-    /// <value>The type.</value>
-    public override JTokenType Type
-    {
-      get { return _valueType; }
-    }
-
-    /// <summary>
-    /// Gets or sets the underlying token value.
-    /// </summary>
-    /// <value>The underlying token value.</value>
-    public object Value
-    {
-      get { return _value; }
-      set
-      {
-        Type currentType = (_value != null) ? _value.GetType() : null;
-        Type newType = (value != null) ? value.GetType() : null;
-
-        if (currentType != newType)
-          _valueType = GetValueType(_valueType, value);
-
-        _value = value;
-      }
-    }
-
-    /// <summary>
-    /// Writes this token to a <see cref="JsonWriter"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
-    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
-    {
-      switch (_valueType)
-      {
-        case JTokenType.Comment:
-          writer.WriteComment(_value.ToString());
-          return;
-        case JTokenType.Raw:
-          writer.WriteRawValue((_value != null) ? _value.ToString() : null);
-          return;
-        case JTokenType.Null:
-          writer.WriteNull();
-          return;
-        case JTokenType.Undefined:
-          writer.WriteUndefined();
-          return;
-      }
-
-      JsonConverter matchingConverter;
-      if (_value != null && ((matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType())) != null))
-      {
-        matchingConverter.WriteJson(writer, _value, new JsonSerializer());
-        return;
-      }
-
-      switch (_valueType)
-      {
-        case JTokenType.Integer:
-          writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
-          return;
-        case JTokenType.Float:
-          writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
-          return;
-        case JTokenType.String:
-          writer.WriteValue((_value != null) ? _value.ToString() : null);
-          return;
-        case JTokenType.Boolean:
-          writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
-          return;
-        case JTokenType.Date:
-#if !PocketPC && !NET20
-          if (_value is DateTimeOffset)
-            writer.WriteValue((DateTimeOffset)_value);
-          else
-#endif
-            writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));
-          return;
-        case JTokenType.Bytes:
-          writer.WriteValue((byte[])_value);
-          return;
-        case JTokenType.Guid:
-        case JTokenType.Uri:
-        case JTokenType.TimeSpan:
-          writer.WriteValue((_value != null) ? _value.ToString() : null);
-          return;
-      }
-
-      throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
-    }
-
-    internal override int GetDeepHashCode()
-    {
-      int valueHashCode = (_value != null) ? _value.GetHashCode() : 0;
-
-      return _valueType.GetHashCode() ^ valueHashCode;
-    }
-
-    private static bool ValuesEquals(JValue v1, JValue v2)
-    {
-      return (v1 == v2 || (v1._valueType == v2._valueType && Compare(v1._valueType, v1._value, v2._value) == 0));
-    }
-
-    /// <summary>
-    /// Indicates whether the current object is equal to another object of the same type.
-    /// </summary>
-    /// <returns>
-    /// true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false.
-    /// </returns>
-    /// <param name="other">An object to compare with this object.</param>
-    public bool Equals(JValue other)
-    {
-      if (other == null)
-        return false;
-
-      return ValuesEquals(this, other);
-    }
-
-    /// <summary>
-    /// Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
-    /// </summary>
-    /// <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param>
-    /// <returns>
-    /// true if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, false.
-    /// </returns>
-    /// <exception cref="T:System.NullReferenceException">
-    /// The <paramref name="obj"/> parameter is null.
-    /// </exception>
-    public override bool Equals(object obj)
-    {
-      if (obj == null)
-        return false;
-
-      JValue otherValue = obj as JValue;
-      if (otherValue != null)
-        return Equals(otherValue);
-
-      return base.Equals(obj);
-    }
-
-    /// <summary>
-    /// Serves as a hash function for a particular type.
-    /// </summary>
-    /// <returns>
-    /// A hash code for the current <see cref="T:System.Object"/>.
-    /// </returns>
-    public override int GetHashCode()
-    {
-      if (_value == null)
-        return 0;
-
-      return _value.GetHashCode();
-    }
-
-    /// <summary>
-    /// Returns a <see cref="System.String"/> that represents this instance.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="System.String"/> that represents this instance.
-    /// </returns>
-    public override string ToString()
-    {
-      if (_value == null)
-        return string.Empty;
-
-      return _value.ToString();
-    }
-
-    /// <summary>
-    /// Returns a <see cref="System.String"/> that represents this instance.
-    /// </summary>
-    /// <param name="format">The format.</param>
-    /// <returns>
-    /// A <see cref="System.String"/> that represents this instance.
-    /// </returns>
-    public string ToString(string format)
-    {
-      return ToString(format, CultureInfo.CurrentCulture);
-    }
-
-    /// <summary>
-    /// Returns a <see cref="System.String"/> that represents this instance.
-    /// </summary>
-    /// <param name="formatProvider">The format provider.</param>
-    /// <returns>
-    /// A <see cref="System.String"/> that represents this instance.
-    /// </returns>
-    public string ToString(IFormatProvider formatProvider)
-    {
-      return ToString(null, formatProvider);
-    }
-
-    /// <summary>
-    /// Returns a <see cref="System.String"/> that represents this instance.
-    /// </summary>
-    /// <param name="format">The format.</param>
-    /// <param name="formatProvider">The format provider.</param>
-    /// <returns>
-    /// A <see cref="System.String"/> that represents this instance.
-    /// </returns>
-    public string ToString(string format, IFormatProvider formatProvider)
-    {
-      if (_value == null)
-        return string.Empty;
-
-      IFormattable formattable = _value as IFormattable;
-      if (formattable != null)
-        return formattable.ToString(format, formatProvider);
-      else
-        return _value.ToString();
-    }
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    /// <summary>
-    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
-    /// </summary>
-    /// <param name="parameter">The expression tree representation of the runtime value.</param>
-    /// <returns>
-    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
-    /// </returns>
-    protected override DynamicMetaObject GetMetaObject(Expression parameter)
-    {
-      return new DynamicProxyMetaObject<JValue>(parameter, this, new JValueDynamicProxy(), true);
-    }
-
-    private class JValueDynamicProxy : DynamicProxy<JValue>
-    {
-      public override bool TryConvert(JValue instance, ConvertBinder binder, out object result)
-      {
-        if (binder.Type == typeof(JValue))
-        {
-          result = instance;
-          return true;
-        }
-
-        object value = instance.Value;
-
-        if (value == null)
-        {
-          result = null;
-          return ReflectionUtils.IsNullable(binder.Type);
-        }
-
-        result = ConvertUtils.Convert(instance.Value, CultureInfo.InvariantCulture, binder.Type);
-        return true;
-      }
-
-      public override bool TryBinaryOperation(JValue instance, BinaryOperationBinder binder, object arg, out object result)
-      {
-        object compareValue = (arg is JValue) ? ((JValue) arg).Value : arg;
-
-        switch (binder.Operation)
-        {
-          case ExpressionType.Equal:
-            result = (Compare(instance.Type, instance.Value, compareValue) == 0);
-            return true;
-          case ExpressionType.NotEqual:
-            result = (Compare(instance.Type, instance.Value, compareValue) != 0);
-            return true;
-          case ExpressionType.GreaterThan:
-            result = (Compare(instance.Type, instance.Value, compareValue) > 0);
-            return true;
-          case ExpressionType.GreaterThanOrEqual:
-            result = (Compare(instance.Type, instance.Value, compareValue) >= 0);
-            return true;
-          case ExpressionType.LessThan:
-            result = (Compare(instance.Type, instance.Value, compareValue) < 0);
-            return true;
-          case ExpressionType.LessThanOrEqual:
-            result = (Compare(instance.Type, instance.Value, compareValue) <= 0);
-            return true;
-          case ExpressionType.Add:
-          case ExpressionType.AddAssign:
-          case ExpressionType.Subtract:
-          case ExpressionType.SubtractAssign:
-          case ExpressionType.Multiply:
-          case ExpressionType.MultiplyAssign:
-          case ExpressionType.Divide:
-          case ExpressionType.DivideAssign:
-            if (Operation(binder.Operation, instance.Value, compareValue, out result))
-            {
-              result = new JValue(result);
-              return true;
-            }
-            break;
-        }
-
-        result = null;
-        return false;
-      }
-    }
-#endif
-
-    int IComparable.CompareTo(object obj)
-    {
-      if (obj == null)
-        return 1;
-
-      object otherValue = (obj is JValue) ? ((JValue) obj).Value : obj;
-
-      return Compare(_valueType, _value, otherValue);
-    }
-
-    /// <summary>
-    /// Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
-    /// </summary>
-    /// <param name="obj">An object to compare with this instance.</param>
-    /// <returns>
-    /// A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
-    /// Value
-    /// Meaning
-    /// Less than zero
-    /// This instance is less than <paramref name="obj"/>.
-    /// Zero
-    /// This instance is equal to <paramref name="obj"/>.
-    /// Greater than zero
-    /// This instance is greater than <paramref name="obj"/>.
-    /// </returns>
-    /// <exception cref="T:System.ArgumentException">
-    /// 	<paramref name="obj"/> is not the same type as this instance.
-    /// </exception>
-    public int CompareTo(JValue obj)
-    {
-      if (obj == null)
-        return 1;
-
-      return Compare(_valueType, _value, obj._value);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System.Dynamic;
+using System.Linq.Expressions;
+#endif
+
+namespace Newtonsoft.Json.Linq
+{
+  /// <summary>
+  /// Represents a value in JSON (string, integer, date, etc).
+  /// </summary>
+  public class JValue : JToken, IEquatable<JValue>, IFormattable, IComparable, IComparable<JValue>
+  {
+    private JTokenType _valueType;
+    private object _value;
+
+    internal JValue(object value, JTokenType type)
+    {
+      _value = value;
+      _valueType = type;
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class from another <see cref="JValue"/> object.
+    /// </summary>
+    /// <param name="other">A <see cref="JValue"/> object to copy from.</param>
+    public JValue(JValue other)
+      : this(other.Value, other.Type)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(long value)
+      : this(value, JTokenType.Integer)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    [CLSCompliant(false)]
+    public JValue(ulong value)
+      : this(value, JTokenType.Integer)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(double value)
+      : this(value, JTokenType.Float)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(DateTime value)
+      : this(value, JTokenType.Date)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(bool value)
+      : this(value, JTokenType.Boolean)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(string value)
+      : this(value, JTokenType.String)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(Guid value)
+      : this(value, JTokenType.String)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(Uri value)
+      : this(value, JTokenType.String)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(TimeSpan value)
+      : this(value, JTokenType.String)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JValue"/> class with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    public JValue(object value)
+      : this(value, GetValueType(null, value))
+    {
+    }
+
+    internal override bool DeepEquals(JToken node)
+    {
+      JValue other = node as JValue;
+      if (other == null)
+        return false;
+
+      return ValuesEquals(this, other);
+    }
+
+    /// <summary>
+    /// Gets a value indicating whether this token has childen tokens.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if this token has child values; otherwise, <c>false</c>.
+    /// </value>
+    public override bool HasValues
+    {
+      get { return false; }
+    }
+
+    private static int Compare(JTokenType valueType, object objA, object objB)
+    {
+      if (objA == null && objB == null)
+        return 0;
+      if (objA != null && objB == null)
+        return 1;
+      if (objA == null && objB != null)
+        return -1;
+
+      switch (valueType)
+      {
+        case JTokenType.Integer:
+          if (objA is ulong || objB is ulong || objA is decimal || objB is decimal)
+            return Convert.ToDecimal(objA, CultureInfo.InvariantCulture).CompareTo(Convert.ToDecimal(objB, CultureInfo.InvariantCulture));
+          else if (objA is float || objB is float || objA is double || objB is double)
+            return CompareFloat(objA, objB);
+          else
+            return Convert.ToInt64(objA, CultureInfo.InvariantCulture).CompareTo(Convert.ToInt64(objB, CultureInfo.InvariantCulture));
+        case JTokenType.Float:
+          return CompareFloat(objA, objB);
+        case JTokenType.Comment:
+        case JTokenType.String:
+        case JTokenType.Raw:
+          string s1 = Convert.ToString(objA, CultureInfo.InvariantCulture);
+          string s2 = Convert.ToString(objB, CultureInfo.InvariantCulture);
+
+          return string.CompareOrdinal(s1, s2);
+        case JTokenType.Boolean:
+          bool b1 = Convert.ToBoolean(objA, CultureInfo.InvariantCulture);
+          bool b2 = Convert.ToBoolean(objB, CultureInfo.InvariantCulture);
+
+          return b1.CompareTo(b2);
+        case JTokenType.Date:
+#if !NET20
+          if (objA is DateTime)
+          {
+#endif
+            DateTime date1 = Convert.ToDateTime(objA, CultureInfo.InvariantCulture);
+            DateTime date2 = Convert.ToDateTime(objB, CultureInfo.InvariantCulture);
+
+            return date1.CompareTo(date2);
+#if !NET20
+          }
+          else
+          {
+            if (!(objB is DateTimeOffset))
+              throw new ArgumentException("Object must be of type DateTimeOffset.");
+
+            DateTimeOffset date1 = (DateTimeOffset) objA;
+            DateTimeOffset date2 = (DateTimeOffset) objB;
+
+            return date1.CompareTo(date2);
+          }
+#endif
+        case JTokenType.Bytes:
+          if (!(objB is byte[]))
+            throw new ArgumentException("Object must be of type byte[].");
+
+          byte[] bytes1 = objA as byte[];
+          byte[] bytes2 = objB as byte[];
+          if (bytes1 == null)
+            return -1;
+          if (bytes2 == null)
+            return 1;
+
+          return MiscellaneousUtils.ByteArrayCompare(bytes1, bytes2);
+        case JTokenType.Guid:
+          if (!(objB is Guid))
+            throw new ArgumentException("Object must be of type Guid.");
+
+          Guid guid1 = (Guid) objA;
+          Guid guid2 = (Guid) objB;
+
+          return guid1.CompareTo(guid2);
+        case JTokenType.Uri:
+          if (!(objB is Uri))
+            throw new ArgumentException("Object must be of type Uri.");
+
+          Uri uri1 = (Uri)objA;
+          Uri uri2 = (Uri)objB;
+
+          return Comparer<string>.Default.Compare(uri1.ToString(), uri2.ToString());
+        case JTokenType.TimeSpan:
+          if (!(objB is TimeSpan))
+            throw new ArgumentException("Object must be of type TimeSpan.");
+
+          TimeSpan ts1 = (TimeSpan)objA;
+          TimeSpan ts2 = (TimeSpan)objB;
+
+          return ts1.CompareTo(ts2);
+        default:
+          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("valueType", valueType, "Unexpected value type: {0}".FormatWith(CultureInfo.InvariantCulture, valueType));
+      }
+    }
+
+    private static int CompareFloat(object objA, object objB)
+    {
+      double d1 = Convert.ToDouble(objA, CultureInfo.InvariantCulture);
+      double d2 = Convert.ToDouble(objB, CultureInfo.InvariantCulture);
+
+      // take into account possible floating point errors
+      if (MathUtils.ApproxEquals(d1, d2))
+        return 0;
+
+      return d1.CompareTo(d2);
+    }
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    private static bool Operation(ExpressionType operation, object objA, object objB, out object result)
+    {
+      if (objA is string || objB is string)
+      {
+        if (operation == ExpressionType.Add || operation == ExpressionType.AddAssign)
+        {
+          result = ((objA != null) ? objA.ToString() : null) + ((objB != null) ? objB.ToString() : null);
+          return true;
+        }
+      }
+
+      if (objA is ulong || objB is ulong || objA is decimal || objB is decimal)
+      {
+        if (objA == null || objB == null)
+        {
+          result = null;
+          return true;
+        }
+
+        decimal d1 = Convert.ToDecimal(objA, CultureInfo.InvariantCulture);
+        decimal d2 = Convert.ToDecimal(objB, CultureInfo.InvariantCulture);
+
+        switch (operation)
+        {
+          case ExpressionType.Add:
+          case ExpressionType.AddAssign:
+            result = d1 + d2;
+            return true;
+          case ExpressionType.Subtract:
+          case ExpressionType.SubtractAssign:
+            result = d1 - d2;
+            return true;
+          case ExpressionType.Multiply:
+          case ExpressionType.MultiplyAssign:
+            result = d1 * d2;
+            return true;
+          case ExpressionType.Divide:
+          case ExpressionType.DivideAssign:
+            result = d1 / d2;
+            return true;
+        }
+      }
+      else if (objA is float || objB is float || objA is double || objB is double)
+      {
+        if (objA == null || objB == null)
+        {
+          result = null;
+          return true;
+        }
+
+        double d1 = Convert.ToDouble(objA, CultureInfo.InvariantCulture);
+        double d2 = Convert.ToDouble(objB, CultureInfo.InvariantCulture);
+
+        switch (operation)
+        {
+          case ExpressionType.Add:
+          case ExpressionType.AddAssign:
+            result = d1 + d2;
+            return true;
+          case ExpressionType.Subtract:
+          case ExpressionType.SubtractAssign:
+            result = d1 - d2;
+            return true;
+          case ExpressionType.Multiply:
+          case ExpressionType.MultiplyAssign:
+            result = d1 * d2;
+            return true;
+          case ExpressionType.Divide:
+          case ExpressionType.DivideAssign:
+            result = d1 / d2;
+            return true;
+        }
+      }
+      else if (objA is int || objA is uint || objA is long || objA is short || objA is ushort || objA is sbyte || objA is byte ||
+        objB is int || objB is uint || objB is long || objB is short || objB is ushort || objB is sbyte || objB is byte)
+      {
+        if (objA == null || objB == null)
+        {
+          result = null;
+          return true;
+        }
+
+        long l1 = Convert.ToInt64(objA, CultureInfo.InvariantCulture);
+        long l2 = Convert.ToInt64(objB, CultureInfo.InvariantCulture);
+
+        switch (operation)
+        {
+          case ExpressionType.Add:
+          case ExpressionType.AddAssign:
+            result = l1 + l2;
+            return true;
+          case ExpressionType.Subtract:
+          case ExpressionType.SubtractAssign:
+            result = l1 - l2;
+            return true;
+          case ExpressionType.Multiply:
+          case ExpressionType.MultiplyAssign:
+            result = l1 * l2;
+            return true;
+          case ExpressionType.Divide:
+          case ExpressionType.DivideAssign:
+            result = l1 / l2;
+            return true;
+        }
+      }
+
+      result = null;
+      return false;
+    }
+#endif
+
+    internal override JToken CloneToken()
+    {
+      return new JValue(this);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JValue"/> comment with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>A <see cref="JValue"/> comment with the given value.</returns>
+    public static JValue CreateComment(string value)
+    {
+      return new JValue(value, JTokenType.Comment);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JValue"/> string with the given value.
+    /// </summary>
+    /// <param name="value">The value.</param>
+    /// <returns>A <see cref="JValue"/> string with the given value.</returns>
+    public static JValue CreateString(string value)
+    {
+      return new JValue(value, JTokenType.String);
+    }
+
+    private static JTokenType GetValueType(JTokenType? current, object value)
+    {
+      if (value == null)
+        return JTokenType.Null;
+#if !NETFX_CORE
+      else if (value == DBNull.Value)
+        return JTokenType.Null;
+#endif
+      else if (value is string)
+        return GetStringValueType(current);
+      else if (value is long || value is int || value is short || value is sbyte
+        || value is ulong || value is uint || value is ushort || value is byte)
+        return JTokenType.Integer;
+      else if (value is Enum)
+        return JTokenType.Integer;
+      else if (value is double || value is float || value is decimal)
+        return JTokenType.Float;
+      else if (value is DateTime)
+        return JTokenType.Date;
+#if !PocketPC && !NET20
+      else if (value is DateTimeOffset)
+        return JTokenType.Date;
+#endif
+      else if (value is byte[])
+        return JTokenType.Bytes;
+      else if (value is bool)
+        return JTokenType.Boolean;
+      else if (value is Guid)
+        return JTokenType.Guid;
+      else if (value is Uri)
+        return JTokenType.Uri;
+      else if (value is TimeSpan)
+        return JTokenType.TimeSpan;
+
+      throw new ArgumentException("Could not determine JSON object type for type {0}.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
+    }
+
+    private static JTokenType GetStringValueType(JTokenType? current)
+    {
+      if (current == null)
+        return JTokenType.String;
+
+      switch (current.Value)
+      {
+        case JTokenType.Comment:
+        case JTokenType.String:
+        case JTokenType.Raw:
+          return current.Value;
+        default:
+          return JTokenType.String;
+      }
+    }
+
+    /// <summary>
+    /// Gets the node type for this <see cref="JToken"/>.
+    /// </summary>
+    /// <value>The type.</value>
+    public override JTokenType Type
+    {
+      get { return _valueType; }
+    }
+
+    /// <summary>
+    /// Gets or sets the underlying token value.
+    /// </summary>
+    /// <value>The underlying token value.</value>
+    public object Value
+    {
+      get { return _value; }
+      set
+      {
+        Type currentType = (_value != null) ? _value.GetType() : null;
+        Type newType = (value != null) ? value.GetType() : null;
+
+        if (currentType != newType)
+          _valueType = GetValueType(_valueType, value);
+
+        _value = value;
+      }
+    }
+
+    /// <summary>
+    /// Writes this token to a <see cref="JsonWriter"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    /// <param name="converters">A collection of <see cref="JsonConverter"/> which will be used when writing the token.</param>
+    public override void WriteTo(JsonWriter writer, params JsonConverter[] converters)
+    {
+      switch (_valueType)
+      {
+        case JTokenType.Comment:
+          writer.WriteComment(_value.ToString());
+          return;
+        case JTokenType.Raw:
+          writer.WriteRawValue((_value != null) ? _value.ToString() : null);
+          return;
+        case JTokenType.Null:
+          writer.WriteNull();
+          return;
+        case JTokenType.Undefined:
+          writer.WriteUndefined();
+          return;
+      }
+
+      JsonConverter matchingConverter;
+      if (_value != null && ((matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType())) != null))
+      {
+        matchingConverter.WriteJson(writer, _value, new JsonSerializer());
+        return;
+      }
+
+      switch (_valueType)
+      {
+        case JTokenType.Integer:
+          writer.WriteValue(Convert.ToInt64(_value, CultureInfo.InvariantCulture));
+          return;
+        case JTokenType.Float:
+          writer.WriteValue(Convert.ToDouble(_value, CultureInfo.InvariantCulture));
+          return;
+        case JTokenType.String:
+          writer.WriteValue((_value != null) ? _value.ToString() : null);
+          return;
+        case JTokenType.Boolean:
+          writer.WriteValue(Convert.ToBoolean(_value, CultureInfo.InvariantCulture));
+          return;
+        case JTokenType.Date:
+#if !PocketPC && !NET20
+          if (_value is DateTimeOffset)
+            writer.WriteValue((DateTimeOffset)_value);
+          else
+#endif
+            writer.WriteValue(Convert.ToDateTime(_value, CultureInfo.InvariantCulture));
+          return;
+        case JTokenType.Bytes:
+          writer.WriteValue((byte[])_value);
+          return;
+        case JTokenType.Guid:
+        case JTokenType.Uri:
+        case JTokenType.TimeSpan:
+          writer.WriteValue((_value != null) ? _value.ToString() : null);
+          return;
+      }
+
+      throw MiscellaneousUtils.CreateArgumentOutOfRangeException("TokenType", _valueType, "Unexpected token type.");
+    }
+
+    internal override int GetDeepHashCode()
+    {
+      int valueHashCode = (_value != null) ? _value.GetHashCode() : 0;
+
+      return _valueType.GetHashCode() ^ valueHashCode;
+    }
+
+    private static bool ValuesEquals(JValue v1, JValue v2)
+    {
+      return (v1 == v2 || (v1._valueType == v2._valueType && Compare(v1._valueType, v1._value, v2._value) == 0));
+    }
+
+    /// <summary>
+    /// Indicates whether the current object is equal to another object of the same type.
+    /// </summary>
+    /// <returns>
+    /// true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false.
+    /// </returns>
+    /// <param name="other">An object to compare with this object.</param>
+    public bool Equals(JValue other)
+    {
+      if (other == null)
+        return false;
+
+      return ValuesEquals(this, other);
+    }
+
+    /// <summary>
+    /// Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
+    /// </summary>
+    /// <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param>
+    /// <returns>
+    /// true if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, false.
+    /// </returns>
+    /// <exception cref="T:System.NullReferenceException">
+    /// The <paramref name="obj"/> parameter is null.
+    /// </exception>
+    public override bool Equals(object obj)
+    {
+      if (obj == null)
+        return false;
+
+      JValue otherValue = obj as JValue;
+      if (otherValue != null)
+        return Equals(otherValue);
+
+      return base.Equals(obj);
+    }
+
+    /// <summary>
+    /// Serves as a hash function for a particular type.
+    /// </summary>
+    /// <returns>
+    /// A hash code for the current <see cref="T:System.Object"/>.
+    /// </returns>
+    public override int GetHashCode()
+    {
+      if (_value == null)
+        return 0;
+
+      return _value.GetHashCode();
+    }
+
+    /// <summary>
+    /// Returns a <see cref="System.String"/> that represents this instance.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="System.String"/> that represents this instance.
+    /// </returns>
+    public override string ToString()
+    {
+      if (_value == null)
+        return string.Empty;
+
+      return _value.ToString();
+    }
+
+    /// <summary>
+    /// Returns a <see cref="System.String"/> that represents this instance.
+    /// </summary>
+    /// <param name="format">The format.</param>
+    /// <returns>
+    /// A <see cref="System.String"/> that represents this instance.
+    /// </returns>
+    public string ToString(string format)
+    {
+      return ToString(format, CultureInfo.CurrentCulture);
+    }
+
+    /// <summary>
+    /// Returns a <see cref="System.String"/> that represents this instance.
+    /// </summary>
+    /// <param name="formatProvider">The format provider.</param>
+    /// <returns>
+    /// A <see cref="System.String"/> that represents this instance.
+    /// </returns>
+    public string ToString(IFormatProvider formatProvider)
+    {
+      return ToString(null, formatProvider);
+    }
+
+    /// <summary>
+    /// Returns a <see cref="System.String"/> that represents this instance.
+    /// </summary>
+    /// <param name="format">The format.</param>
+    /// <param name="formatProvider">The format provider.</param>
+    /// <returns>
+    /// A <see cref="System.String"/> that represents this instance.
+    /// </returns>
+    public string ToString(string format, IFormatProvider formatProvider)
+    {
+      if (_value == null)
+        return string.Empty;
+
+      IFormattable formattable = _value as IFormattable;
+      if (formattable != null)
+        return formattable.ToString(format, formatProvider);
+      else
+        return _value.ToString();
+    }
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    /// <summary>
+    /// Returns the <see cref="T:System.Dynamic.DynamicMetaObject"/> responsible for binding operations performed on this object.
+    /// </summary>
+    /// <param name="parameter">The expression tree representation of the runtime value.</param>
+    /// <returns>
+    /// The <see cref="T:System.Dynamic.DynamicMetaObject"/> to bind this object.
+    /// </returns>
+    protected override DynamicMetaObject GetMetaObject(Expression parameter)
+    {
+      return new DynamicProxyMetaObject<JValue>(parameter, this, new JValueDynamicProxy(), true);
+    }
+
+    private class JValueDynamicProxy : DynamicProxy<JValue>
+    {
+      public override bool TryConvert(JValue instance, ConvertBinder binder, out object result)
+      {
+        if (binder.Type == typeof(JValue))
+        {
+          result = instance;
+          return true;
+        }
+
+        object value = instance.Value;
+
+        if (value == null)
+        {
+          result = null;
+          return ReflectionUtils.IsNullable(binder.Type);
+        }
+
+        result = ConvertUtils.Convert(instance.Value, CultureInfo.InvariantCulture, binder.Type);
+        return true;
+      }
+
+      public override bool TryBinaryOperation(JValue instance, BinaryOperationBinder binder, object arg, out object result)
+      {
+        object compareValue = (arg is JValue) ? ((JValue) arg).Value : arg;
+
+        switch (binder.Operation)
+        {
+          case ExpressionType.Equal:
+            result = (Compare(instance.Type, instance.Value, compareValue) == 0);
+            return true;
+          case ExpressionType.NotEqual:
+            result = (Compare(instance.Type, instance.Value, compareValue) != 0);
+            return true;
+          case ExpressionType.GreaterThan:
+            result = (Compare(instance.Type, instance.Value, compareValue) > 0);
+            return true;
+          case ExpressionType.GreaterThanOrEqual:
+            result = (Compare(instance.Type, instance.Value, compareValue) >= 0);
+            return true;
+          case ExpressionType.LessThan:
+            result = (Compare(instance.Type, instance.Value, compareValue) < 0);
+            return true;
+          case ExpressionType.LessThanOrEqual:
+            result = (Compare(instance.Type, instance.Value, compareValue) <= 0);
+            return true;
+          case ExpressionType.Add:
+          case ExpressionType.AddAssign:
+          case ExpressionType.Subtract:
+          case ExpressionType.SubtractAssign:
+          case ExpressionType.Multiply:
+          case ExpressionType.MultiplyAssign:
+          case ExpressionType.Divide:
+          case ExpressionType.DivideAssign:
+            if (Operation(binder.Operation, instance.Value, compareValue, out result))
+            {
+              result = new JValue(result);
+              return true;
+            }
+            break;
+        }
+
+        result = null;
+        return false;
+      }
+    }
+#endif
+
+    int IComparable.CompareTo(object obj)
+    {
+      if (obj == null)
+        return 1;
+
+      object otherValue = (obj is JValue) ? ((JValue) obj).Value : obj;
+
+      return Compare(_valueType, _value, otherValue);
+    }
+
+    /// <summary>
+    /// Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
+    /// </summary>
+    /// <param name="obj">An object to compare with this instance.</param>
+    /// <returns>
+    /// A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
+    /// Value
+    /// Meaning
+    /// Less than zero
+    /// This instance is less than <paramref name="obj"/>.
+    /// Zero
+    /// This instance is equal to <paramref name="obj"/>.
+    /// Greater than zero
+    /// This instance is greater than <paramref name="obj"/>.
+    /// </returns>
+    /// <exception cref="T:System.ArgumentException">
+    /// 	<paramref name="obj"/> is not the same type as this instance.
+    /// </exception>
+    public int CompareTo(JValue obj)
+    {
+      if (obj == null)
+        return 1;
+
+      return Compare(_valueType, _value, obj._value);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/MemberSerialization.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/MemberSerialization.cs
@@ -1,42 +1,42 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies the member serialization options for the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public enum MemberSerialization
-  {
-    /// <summary>
-    /// All members are serialized by default. Members can be excluded using the <see cref="JsonIgnoreAttribute"/>.
-    /// </summary>
-    OptOut,
-    /// <summary>
-    /// Only members must be marked with the <see cref="JsonPropertyAttribute"/> are serialized.
-    /// </summary>
-    OptIn
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies the member serialization options for the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public enum MemberSerialization
+  {
+    /// <summary>
+    /// All members are serialized by default. Members can be excluded using the <see cref="JsonIgnoreAttribute"/>.
+    /// </summary>
+    OptOut,
+    /// <summary>
+    /// Only members must be marked with the <see cref="JsonPropertyAttribute"/> are serialized.
+    /// </summary>
+    OptIn
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/MissingMemberHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/MissingMemberHandling.cs
@@ -1,46 +1,46 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies missing member handling options for the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public enum MissingMemberHandling
-  {
-    /// <summary>
-    /// Ignore a missing member and do not attempt to deserialize it.
-    /// </summary>
-    Ignore = 0,
-    /// <summary>
-    /// Throw a <see cref="JsonSerializationException"/> when a missing member is encountered during deserialization.
-    /// </summary>
-    Error = 1
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies missing member handling options for the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public enum MissingMemberHandling
+  {
+    /// <summary>
+    /// Ignore a missing member and do not attempt to deserialize it.
+    /// </summary>
+    Ignore = 0,
+    /// <summary>
+    /// Throw a <see cref="JsonSerializationException"/> when a missing member is encountered during deserialization.
+    /// </summary>
+    Error = 1
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Metro.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Metro.csproj
@@ -1,284 +1,284 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{263136A2-B89B-424E-A87A-F988CAA8D032}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json</RootNamespace>
-    <AssemblyName>Newtonsoft.Json</AssemblyName>
-    <DefaultLanguage>en-US</DefaultLanguage>
-    <FileAlignment>512</FileAlignment>
-    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Metro\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>3</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Metro\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\Metro\Newtonsoft.Json.xml</DocumentationFile>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\ARM\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>full</DebugType>
-    <PlatformTarget>ARM</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
-    <OutputPath>bin\ARM\Release\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <Optimize>true</Optimize>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>ARM</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x64\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
-    <OutputPath>bin\x64\Release\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <Optimize>true</Optimize>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x64</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>full</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
-    <OutputPath>bin\x86\Release\</OutputPath>
-    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
-    <Optimize>true</Optimize>
-    <NoWarn>;2008</NoWarn>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>x86</PlatformTarget>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
-    <Prefer32Bit>true</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonBinaryType.cs" />
-    <Compile Include="Bson\BsonBinaryWriter.cs" />
-    <Compile Include="Bson\BsonObjectId.cs" />
-    <Compile Include="Bson\BsonReader.cs" />
-    <Compile Include="Bson\BsonToken.cs" />
-    <Compile Include="Bson\BsonType.cs" />
-    <Compile Include="Bson\BsonWriter.cs" />
-    <Compile Include="ConstructorHandling.cs" />
-    <Compile Include="Converters\BinaryConverter.cs" />
-    <Compile Include="Converters\BsonObjectIdConverter.cs" />
-    <Compile Include="Converters\CustomCreationConverter.cs" />
-    <Compile Include="Converters\DataSetConverter.cs" />
-    <Compile Include="Converters\DataTableConverter.cs" />
-    <Compile Include="Converters\DateTimeConverterBase.cs" />
-    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
-    <Compile Include="Converters\ExpandoObjectConverter.cs" />
-    <Compile Include="Converters\IsoDateTimeConverter.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
-    <Compile Include="Converters\KeyValuePairConverter.cs" />
-    <Compile Include="Converters\RegexConverter.cs" />
-    <Compile Include="Converters\StringEnumConverter.cs" />
-    <Compile Include="Converters\VersionConverter.cs" />
-    <Compile Include="Converters\XmlNodeConverter.cs" />
-    <Compile Include="DateFormatHandling.cs" />
-    <Compile Include="DateTimeZoneHandling.cs" />
-    <Compile Include="DefaultValueHandling.cs" />
-    <Compile Include="FormatterAssemblyStyle.cs" />
-    <Compile Include="Formatting.cs" />
-    <Compile Include="IJsonLineInfo.cs" />
-    <Compile Include="JsonArrayAttribute.cs" />
-    <Compile Include="JsonConstructorAttribute.cs" />
-    <Compile Include="JsonContainerAttribute.cs" />
-    <Compile Include="JsonConvert.cs" />
-    <Compile Include="JsonConverter.cs" />
-    <Compile Include="JsonConverterAttribute.cs" />
-    <Compile Include="JsonConverterCollection.cs" />
-    <Compile Include="JsonIgnoreAttribute.cs" />
-    <Compile Include="JsonObjectAttribute.cs" />
-    <Compile Include="JsonPosition.cs" />
-    <Compile Include="JsonPropertyAttribute.cs" />
-    <Compile Include="JsonReader.cs" />
-    <Compile Include="JsonReaderException.cs" />
-    <Compile Include="JsonSerializationException.cs" />
-    <Compile Include="JsonSerializer.cs" />
-    <Compile Include="JsonSerializerSettings.cs" />
-    <Compile Include="JsonTextReader.cs" />
-    <Compile Include="JsonTextWriter.cs" />
-    <Compile Include="JsonToken.cs" />
-    <Compile Include="JsonValidatingReader.cs" />
-    <Compile Include="JsonWriter.cs" />
-    <Compile Include="JsonWriterException.cs" />
-    <Compile Include="Linq\Extensions.cs" />
-    <Compile Include="Linq\IJEnumerable.cs" />
-    <Compile Include="Linq\JArray.cs" />
-    <Compile Include="Linq\JConstructor.cs" />
-    <Compile Include="Linq\JContainer.cs" />
-    <Compile Include="Linq\JEnumerable.cs" />
-    <Compile Include="Linq\JObject.cs" />
-    <Compile Include="Linq\JPath.cs" />
-    <Compile Include="Linq\JProperty.cs" />
-    <Compile Include="Linq\JPropertyDescriptor.cs" />
-    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
-    <Compile Include="Linq\JRaw.cs" />
-    <Compile Include="Linq\JToken.cs" />
-    <Compile Include="Linq\JTokenEqualityComparer.cs" />
-    <Compile Include="Linq\JTokenReader.cs" />
-    <Compile Include="Linq\JTokenType.cs" />
-    <Compile Include="Linq\JTokenWriter.cs" />
-    <Compile Include="Linq\JValue.cs" />
-    <Compile Include="MemberSerialization.cs" />
-    <Compile Include="MissingMemberHandling.cs" />
-    <Compile Include="NullValueHandling.cs" />
-    <Compile Include="ObjectCreationHandling.cs" />
-    <Compile Include="PreserveReferencesHandling.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ReferenceLoopHandling.cs" />
-    <Compile Include="Required.cs" />
-    <Compile Include="Schema\Extensions.cs" />
-    <Compile Include="Schema\JsonSchema.cs" />
-    <Compile Include="Schema\JsonSchemaBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaConstants.cs" />
-    <Compile Include="Schema\JsonSchemaException.cs" />
-    <Compile Include="Schema\JsonSchemaGenerator.cs" />
-    <Compile Include="Schema\JsonSchemaModel.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaNode.cs" />
-    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
-    <Compile Include="Schema\JsonSchemaResolver.cs" />
-    <Compile Include="Schema\JsonSchemaType.cs" />
-    <Compile Include="Schema\JsonSchemaWriter.cs" />
-    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
-    <Compile Include="Schema\ValidationEventArgs.cs" />
-    <Compile Include="Schema\ValidationEventHandler.cs" />
-    <Compile Include="SerializationBinder.cs" />
-    <Compile Include="Serialization\CachedAttributeGetter.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
-    <Compile Include="Serialization\DefaultContractResolver.cs" />
-    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
-    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
-    <Compile Include="Serialization\DynamicValueProvider.cs" />
-    <Compile Include="Serialization\ErrorContext.cs" />
-    <Compile Include="Serialization\ErrorEventArgs.cs" />
-    <Compile Include="Serialization\IContractResolver.cs" />
-    <Compile Include="Serialization\IReferenceResolver.cs" />
-    <Compile Include="Serialization\IValueProvider.cs" />
-    <Compile Include="Serialization\JsonArrayContract.cs" />
-    <Compile Include="Serialization\JsonContract.cs" />
-    <Compile Include="Serialization\JsonDictionaryContract.cs" />
-    <Compile Include="Serialization\JsonDynamicContract.cs" />
-    <Compile Include="Serialization\JsonFormatterConverter.cs" />
-    <Compile Include="Serialization\JsonISerializableContract.cs" />
-    <Compile Include="Serialization\JsonLinqContract.cs" />
-    <Compile Include="Serialization\JsonObjectContract.cs" />
-    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
-    <Compile Include="Serialization\JsonProperty.cs" />
-    <Compile Include="Serialization\JsonPropertyCollection.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
-    <Compile Include="Serialization\JsonSerializerProxy.cs" />
-    <Compile Include="Serialization\JsonStringContract.cs" />
-    <Compile Include="Serialization\JsonTypeReflector.cs" />
-    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
-    <Compile Include="Serialization\ObjectConstructor.cs" />
-    <Compile Include="Serialization\OnErrorAttribute.cs" />
-    <Compile Include="Serialization\ReflectionValueProvider.cs" />
-    <Compile Include="StreamingContext.cs" />
-    <Compile Include="TypeNameHandling.cs" />
-    <Compile Include="Utilities\Base64Encoder.cs" />
-    <Compile Include="Utilities\BidirectionalDictionary.cs" />
-    <Compile Include="Utilities\CollectionUtils.cs" />
-    <Compile Include="Utilities\CollectionWrapper.cs" />
-    <Compile Include="Utilities\ConvertUtils.cs" />
-    <Compile Include="Utilities\DateTimeUtils.cs" />
-    <Compile Include="Utilities\DictionaryWrapper.cs" />
-    <Compile Include="Utilities\DynamicProxy.cs" />
-    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\DynamicUtils.cs" />
-    <Compile Include="Utilities\DynamicWrapper.cs" />
-    <Compile Include="Utilities\EnumUtils.cs" />
-    <Compile Include="Utilities\EnumValue.cs" />
-    <Compile Include="Utilities\EnumValues.cs" />
-    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
-    <Compile Include="Utilities\JavaScriptUtils.cs" />
-    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\LinqBridge.cs" />
-    <Compile Include="Utilities\ListWrapper.cs" />
-    <Compile Include="Utilities\MathUtils.cs" />
-    <Compile Include="Utilities\MethodCall.cs" />
-    <Compile Include="Utilities\MiscellaneousUtils.cs" />
-    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\ReflectionUtils.cs" />
-    <Compile Include="Utilities\StringBuffer.cs" />
-    <Compile Include="Utilities\StringReference.cs" />
-    <Compile Include="Utilities\StringUtils.cs" />
-    <Compile Include="Utilities\ThreadSafeStore.cs" />
-    <Compile Include="Utilities\TypeExtensions.cs" />
-    <Compile Include="Utilities\ValidationUtils.cs" />
-    <Compile Include="WriteState.cs" />
-  </ItemGroup>
-  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' ">
-    <VisualStudioVersion>11.0</VisualStudioVersion>
-  </PropertyGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{263136A2-B89B-424E-A87A-F988CAA8D032}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json</RootNamespace>
+    <AssemblyName>Newtonsoft.Json</AssemblyName>
+    <DefaultLanguage>en-US</DefaultLanguage>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Metro\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>3</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Metro\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\Metro\Newtonsoft.Json.xml</DocumentationFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\ARM\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
+    <OutputPath>bin\ARM\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>ARM</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
+    <Optimize>true</Optimize>
+    <NoWarn>;2008</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>ExpressRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonBinaryType.cs" />
+    <Compile Include="Bson\BsonBinaryWriter.cs" />
+    <Compile Include="Bson\BsonObjectId.cs" />
+    <Compile Include="Bson\BsonReader.cs" />
+    <Compile Include="Bson\BsonToken.cs" />
+    <Compile Include="Bson\BsonType.cs" />
+    <Compile Include="Bson\BsonWriter.cs" />
+    <Compile Include="ConstructorHandling.cs" />
+    <Compile Include="Converters\BinaryConverter.cs" />
+    <Compile Include="Converters\BsonObjectIdConverter.cs" />
+    <Compile Include="Converters\CustomCreationConverter.cs" />
+    <Compile Include="Converters\DataSetConverter.cs" />
+    <Compile Include="Converters\DataTableConverter.cs" />
+    <Compile Include="Converters\DateTimeConverterBase.cs" />
+    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
+    <Compile Include="Converters\ExpandoObjectConverter.cs" />
+    <Compile Include="Converters\IsoDateTimeConverter.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
+    <Compile Include="Converters\KeyValuePairConverter.cs" />
+    <Compile Include="Converters\RegexConverter.cs" />
+    <Compile Include="Converters\StringEnumConverter.cs" />
+    <Compile Include="Converters\VersionConverter.cs" />
+    <Compile Include="Converters\XmlNodeConverter.cs" />
+    <Compile Include="DateFormatHandling.cs" />
+    <Compile Include="DateTimeZoneHandling.cs" />
+    <Compile Include="DefaultValueHandling.cs" />
+    <Compile Include="FormatterAssemblyStyle.cs" />
+    <Compile Include="Formatting.cs" />
+    <Compile Include="IJsonLineInfo.cs" />
+    <Compile Include="JsonArrayAttribute.cs" />
+    <Compile Include="JsonConstructorAttribute.cs" />
+    <Compile Include="JsonContainerAttribute.cs" />
+    <Compile Include="JsonConvert.cs" />
+    <Compile Include="JsonConverter.cs" />
+    <Compile Include="JsonConverterAttribute.cs" />
+    <Compile Include="JsonConverterCollection.cs" />
+    <Compile Include="JsonIgnoreAttribute.cs" />
+    <Compile Include="JsonObjectAttribute.cs" />
+    <Compile Include="JsonPosition.cs" />
+    <Compile Include="JsonPropertyAttribute.cs" />
+    <Compile Include="JsonReader.cs" />
+    <Compile Include="JsonReaderException.cs" />
+    <Compile Include="JsonSerializationException.cs" />
+    <Compile Include="JsonSerializer.cs" />
+    <Compile Include="JsonSerializerSettings.cs" />
+    <Compile Include="JsonTextReader.cs" />
+    <Compile Include="JsonTextWriter.cs" />
+    <Compile Include="JsonToken.cs" />
+    <Compile Include="JsonValidatingReader.cs" />
+    <Compile Include="JsonWriter.cs" />
+    <Compile Include="JsonWriterException.cs" />
+    <Compile Include="Linq\Extensions.cs" />
+    <Compile Include="Linq\IJEnumerable.cs" />
+    <Compile Include="Linq\JArray.cs" />
+    <Compile Include="Linq\JConstructor.cs" />
+    <Compile Include="Linq\JContainer.cs" />
+    <Compile Include="Linq\JEnumerable.cs" />
+    <Compile Include="Linq\JObject.cs" />
+    <Compile Include="Linq\JPath.cs" />
+    <Compile Include="Linq\JProperty.cs" />
+    <Compile Include="Linq\JPropertyDescriptor.cs" />
+    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
+    <Compile Include="Linq\JRaw.cs" />
+    <Compile Include="Linq\JToken.cs" />
+    <Compile Include="Linq\JTokenEqualityComparer.cs" />
+    <Compile Include="Linq\JTokenReader.cs" />
+    <Compile Include="Linq\JTokenType.cs" />
+    <Compile Include="Linq\JTokenWriter.cs" />
+    <Compile Include="Linq\JValue.cs" />
+    <Compile Include="MemberSerialization.cs" />
+    <Compile Include="MissingMemberHandling.cs" />
+    <Compile Include="NullValueHandling.cs" />
+    <Compile Include="ObjectCreationHandling.cs" />
+    <Compile Include="PreserveReferencesHandling.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ReferenceLoopHandling.cs" />
+    <Compile Include="Required.cs" />
+    <Compile Include="Schema\Extensions.cs" />
+    <Compile Include="Schema\JsonSchema.cs" />
+    <Compile Include="Schema\JsonSchemaBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaConstants.cs" />
+    <Compile Include="Schema\JsonSchemaException.cs" />
+    <Compile Include="Schema\JsonSchemaGenerator.cs" />
+    <Compile Include="Schema\JsonSchemaModel.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaNode.cs" />
+    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
+    <Compile Include="Schema\JsonSchemaResolver.cs" />
+    <Compile Include="Schema\JsonSchemaType.cs" />
+    <Compile Include="Schema\JsonSchemaWriter.cs" />
+    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
+    <Compile Include="Schema\ValidationEventArgs.cs" />
+    <Compile Include="Schema\ValidationEventHandler.cs" />
+    <Compile Include="SerializationBinder.cs" />
+    <Compile Include="Serialization\CachedAttributeGetter.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
+    <Compile Include="Serialization\DefaultContractResolver.cs" />
+    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
+    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
+    <Compile Include="Serialization\DynamicValueProvider.cs" />
+    <Compile Include="Serialization\ErrorContext.cs" />
+    <Compile Include="Serialization\ErrorEventArgs.cs" />
+    <Compile Include="Serialization\IContractResolver.cs" />
+    <Compile Include="Serialization\IReferenceResolver.cs" />
+    <Compile Include="Serialization\IValueProvider.cs" />
+    <Compile Include="Serialization\JsonArrayContract.cs" />
+    <Compile Include="Serialization\JsonContract.cs" />
+    <Compile Include="Serialization\JsonDictionaryContract.cs" />
+    <Compile Include="Serialization\JsonDynamicContract.cs" />
+    <Compile Include="Serialization\JsonFormatterConverter.cs" />
+    <Compile Include="Serialization\JsonISerializableContract.cs" />
+    <Compile Include="Serialization\JsonLinqContract.cs" />
+    <Compile Include="Serialization\JsonObjectContract.cs" />
+    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
+    <Compile Include="Serialization\JsonProperty.cs" />
+    <Compile Include="Serialization\JsonPropertyCollection.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
+    <Compile Include="Serialization\JsonSerializerProxy.cs" />
+    <Compile Include="Serialization\JsonStringContract.cs" />
+    <Compile Include="Serialization\JsonTypeReflector.cs" />
+    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
+    <Compile Include="Serialization\ObjectConstructor.cs" />
+    <Compile Include="Serialization\OnErrorAttribute.cs" />
+    <Compile Include="Serialization\ReflectionValueProvider.cs" />
+    <Compile Include="StreamingContext.cs" />
+    <Compile Include="TypeNameHandling.cs" />
+    <Compile Include="Utilities\Base64Encoder.cs" />
+    <Compile Include="Utilities\BidirectionalDictionary.cs" />
+    <Compile Include="Utilities\CollectionUtils.cs" />
+    <Compile Include="Utilities\CollectionWrapper.cs" />
+    <Compile Include="Utilities\ConvertUtils.cs" />
+    <Compile Include="Utilities\DateTimeUtils.cs" />
+    <Compile Include="Utilities\DictionaryWrapper.cs" />
+    <Compile Include="Utilities\DynamicProxy.cs" />
+    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\DynamicUtils.cs" />
+    <Compile Include="Utilities\DynamicWrapper.cs" />
+    <Compile Include="Utilities\EnumUtils.cs" />
+    <Compile Include="Utilities\EnumValue.cs" />
+    <Compile Include="Utilities\EnumValues.cs" />
+    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
+    <Compile Include="Utilities\JavaScriptUtils.cs" />
+    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\LinqBridge.cs" />
+    <Compile Include="Utilities\ListWrapper.cs" />
+    <Compile Include="Utilities\MathUtils.cs" />
+    <Compile Include="Utilities\MethodCall.cs" />
+    <Compile Include="Utilities\MiscellaneousUtils.cs" />
+    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\ReflectionUtils.cs" />
+    <Compile Include="Utilities\StringBuffer.cs" />
+    <Compile Include="Utilities\StringReference.cs" />
+    <Compile Include="Utilities\StringUtils.cs" />
+    <Compile Include="Utilities\ThreadSafeStore.cs" />
+    <Compile Include="Utilities\TypeExtensions.cs" />
+    <Compile Include="Utilities\ValidationUtils.cs" />
+    <Compile Include="WriteState.cs" />
+  </ItemGroup>
+  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' ">
+    <VisualStudioVersion>11.0</VisualStudioVersion>
+  </PropertyGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Net20.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Net20.csproj
@@ -1,260 +1,260 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json</RootNamespace>
-    <AssemblyName>Newtonsoft.Json</AssemblyName>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <SccProjectName>
-    </SccProjectName>
-    <SccLocalPath>
-    </SccLocalPath>
-    <SccAuxPath>
-    </SccAuxPath>
-    <SccProvider>
-    </SccProvider>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Net20\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;NET20</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Debug\Net20\Newtonsoft.Json.xml</DocumentationFile>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <CodeAnalysisRules>
-    </CodeAnalysisRules>
-    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Net20\</OutputPath>
-    <DefineConstants>TRACE;NET20</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\Net20\Newtonsoft.Json.xml</DocumentationFile>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonBinaryType.cs" />
-    <Compile Include="Bson\BsonBinaryWriter.cs" />
-    <Compile Include="Bson\BsonObjectId.cs" />
-    <Compile Include="Bson\BsonReader.cs" />
-    <Compile Include="Bson\BsonToken.cs" />
-    <Compile Include="Bson\BsonType.cs" />
-    <Compile Include="Bson\BsonWriter.cs" />
-    <Compile Include="ConstructorHandling.cs" />
-    <Compile Include="Converters\BinaryConverter.cs" />
-    <Compile Include="Converters\BsonObjectIdConverter.cs" />
-    <Compile Include="Converters\CustomCreationConverter.cs" />
-    <Compile Include="Converters\DataSetConverter.cs" />
-    <Compile Include="Converters\DataTableConverter.cs" />
-    <Compile Include="Converters\DateTimeConverterBase.cs" />
-    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
-    <Compile Include="Converters\KeyValuePairConverter.cs" />
-    <Compile Include="Converters\RegexConverter.cs" />
-    <Compile Include="Converters\StringEnumConverter.cs" />
-    <Compile Include="Converters\VersionConverter.cs" />
-    <Compile Include="DateFormatHandling.cs" />
-    <Compile Include="DateTimeZoneHandling.cs" />
-    <Compile Include="FormatterAssemblyStyle.cs" />
-    <Compile Include="Formatting.cs" />
-    <Compile Include="JsonConstructorAttribute.cs" />
-    <Compile Include="JsonPosition.cs" />
-    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
-    <Compile Include="SerializationBinder.cs" />
-    <Compile Include="StreamingContext.cs" />
-    <Compile Include="Utilities\LinqBridge.cs" />
-    <Compile Include="Linq\JPath.cs" />
-    <Compile Include="Linq\JPropertyDescriptor.cs" />
-    <Compile Include="Linq\JRaw.cs" />
-    <Compile Include="Required.cs" />
-    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
-    <Compile Include="PreserveReferencesHandling.cs" />
-    <Compile Include="IJsonLineInfo.cs" />
-    <Compile Include="JsonArrayAttribute.cs" />
-    <Compile Include="JsonContainerAttribute.cs" />
-    <Compile Include="DefaultValueHandling.cs" />
-    <Compile Include="JsonConverterAttribute.cs" />
-    <Compile Include="JsonObjectAttribute.cs" />
-    <Compile Include="JsonSerializerSettings.cs" />
-    <Compile Include="JsonValidatingReader.cs" />
-    <Compile Include="Linq\IJEnumerable.cs" />
-    <Compile Include="Linq\JTokenEqualityComparer.cs" />
-    <Compile Include="MemberSerialization.cs" />
-    <Compile Include="ObjectCreationHandling.cs" />
-    <Compile Include="Converters\IsoDateTimeConverter.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
-    <Compile Include="Converters\XmlNodeConverter.cs" />
-    <Compile Include="JsonTextReader.cs" />
-    <Compile Include="JsonPropertyAttribute.cs" />
-    <Compile Include="JsonIgnoreAttribute.cs" />
-    <Compile Include="JsonTextWriter.cs" />
-    <Compile Include="JsonWriterException.cs" />
-    <Compile Include="JsonReaderException.cs" />
-    <Compile Include="JsonConverter.cs" />
-    <Compile Include="JsonConverterCollection.cs" />
-    <Compile Include="JsonReader.cs" />
-    <Compile Include="JsonConvert.cs" />
-    <Compile Include="JsonSerializationException.cs" />
-    <Compile Include="JsonSerializer.cs" />
-    <Compile Include="Linq\Extensions.cs" />
-    <Compile Include="Linq\JConstructor.cs" />
-    <Compile Include="Linq\JContainer.cs" />
-    <Compile Include="Linq\JEnumerable.cs" />
-    <Compile Include="Linq\JObject.cs" />
-    <Compile Include="Linq\JArray.cs" />
-    <Compile Include="Linq\JTokenReader.cs" />
-    <Compile Include="Linq\JTokenWriter.cs" />
-    <Compile Include="Linq\JToken.cs" />
-    <Compile Include="Linq\JProperty.cs" />
-    <Compile Include="Linq\JTokenType.cs" />
-    <Compile Include="Linq\JValue.cs" />
-    <Compile Include="Schema\Extensions.cs" />
-    <Compile Include="Schema\JsonSchemaException.cs" />
-    <Compile Include="Schema\JsonSchemaModel.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
-    <Compile Include="Schema\JsonSchemaNode.cs" />
-    <Compile Include="Schema\JsonSchemaResolver.cs" />
-    <Compile Include="Schema\JsonSchemaWriter.cs" />
-    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
-    <Compile Include="Schema\ValidationEventArgs.cs" />
-    <Compile Include="Schema\ValidationEventHandler.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
-    <Compile Include="Serialization\DefaultContractResolver.cs" />
-    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
-    <Compile Include="Serialization\DynamicValueProvider.cs" />
-    <Compile Include="Serialization\ErrorContext.cs" />
-    <Compile Include="Serialization\ErrorEventArgs.cs" />
-    <Compile Include="Serialization\IContractResolver.cs" />
-    <Compile Include="Serialization\IValueProvider.cs" />
-    <Compile Include="Serialization\JsonArrayContract.cs" />
-    <Compile Include="Serialization\JsonContract.cs" />
-    <Compile Include="Serialization\JsonDictionaryContract.cs" />
-    <Compile Include="Serialization\JsonFormatterConverter.cs" />
-    <Compile Include="Serialization\JsonISerializableContract.cs" />
-    <Compile Include="Serialization\JsonLinqContract.cs" />
-    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
-    <Compile Include="Serialization\JsonProperty.cs" />
-    <Compile Include="Serialization\JsonPropertyCollection.cs" />
-    <Compile Include="MissingMemberHandling.cs" />
-    <Compile Include="NullValueHandling.cs" />
-    <Compile Include="ReferenceLoopHandling.cs" />
-    <Compile Include="Schema\JsonSchema.cs" />
-    <Compile Include="Schema\JsonSchemaBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaConstants.cs" />
-    <Compile Include="Schema\JsonSchemaGenerator.cs" />
-    <Compile Include="Serialization\IReferenceResolver.cs" />
-    <Compile Include="Schema\JsonSchemaType.cs" />
-    <Compile Include="Serialization\JsonObjectContract.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
-    <Compile Include="Serialization\JsonSerializerProxy.cs" />
-    <Compile Include="Serialization\JsonStringContract.cs" />
-    <Compile Include="Serialization\JsonTypeReflector.cs" />
-    <Compile Include="Serialization\CachedAttributeGetter.cs" />
-    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
-    <Compile Include="Serialization\ObjectConstructor.cs" />
-    <Compile Include="Serialization\OnErrorAttribute.cs" />
-    <Compile Include="Serialization\ReflectionValueProvider.cs" />
-    <Compile Include="Utilities\Base64Encoder.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\DynamicWrapper.cs" />
-    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
-    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\MethodCall.cs" />
-    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\StringReference.cs" />
-    <Compile Include="Utilities\ThreadSafeStore.cs" />
-    <Compile Include="TypeNameHandling.cs" />
-    <Compile Include="Utilities\BidirectionalDictionary.cs" />
-    <Compile Include="Utilities\ConvertUtils.cs" />
-    <Compile Include="Utilities\CollectionWrapper.cs" />
-    <Compile Include="Utilities\DateTimeUtils.cs" />
-    <Compile Include="Utilities\DictionaryWrapper.cs" />
-    <Compile Include="Utilities\EnumUtils.cs" />
-    <Compile Include="Utilities\EnumValue.cs" />
-    <Compile Include="Utilities\EnumValues.cs" />
-    <Compile Include="Utilities\JavaScriptUtils.cs" />
-    <Compile Include="JsonToken.cs" />
-    <Compile Include="JsonWriter.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Utilities\StringBuffer.cs" />
-    <Compile Include="Utilities\CollectionUtils.cs" />
-    <Compile Include="Utilities\ListWrapper.cs" />
-    <Compile Include="Utilities\MathUtils.cs" />
-    <Compile Include="Utilities\MiscellaneousUtils.cs" />
-    <Compile Include="Utilities\ReflectionUtils.cs" />
-    <Compile Include="Utilities\StringUtils.cs" />
-    <Compile Include="Utilities\TypeExtensions.cs" />
-    <Compile Include="Utilities\ValidationUtils.cs" />
-    <Compile Include="WriteState.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json</RootNamespace>
+    <AssemblyName>Newtonsoft.Json</AssemblyName>
+    <SignAssembly>false</SignAssembly>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Net20\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;NET20</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Debug\Net20\Newtonsoft.Json.xml</DocumentationFile>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <CodeAnalysisRules>
+    </CodeAnalysisRules>
+    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Net20\</OutputPath>
+    <DefineConstants>TRACE;NET20</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\Net20\Newtonsoft.Json.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonBinaryType.cs" />
+    <Compile Include="Bson\BsonBinaryWriter.cs" />
+    <Compile Include="Bson\BsonObjectId.cs" />
+    <Compile Include="Bson\BsonReader.cs" />
+    <Compile Include="Bson\BsonToken.cs" />
+    <Compile Include="Bson\BsonType.cs" />
+    <Compile Include="Bson\BsonWriter.cs" />
+    <Compile Include="ConstructorHandling.cs" />
+    <Compile Include="Converters\BinaryConverter.cs" />
+    <Compile Include="Converters\BsonObjectIdConverter.cs" />
+    <Compile Include="Converters\CustomCreationConverter.cs" />
+    <Compile Include="Converters\DataSetConverter.cs" />
+    <Compile Include="Converters\DataTableConverter.cs" />
+    <Compile Include="Converters\DateTimeConverterBase.cs" />
+    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
+    <Compile Include="Converters\KeyValuePairConverter.cs" />
+    <Compile Include="Converters\RegexConverter.cs" />
+    <Compile Include="Converters\StringEnumConverter.cs" />
+    <Compile Include="Converters\VersionConverter.cs" />
+    <Compile Include="DateFormatHandling.cs" />
+    <Compile Include="DateTimeZoneHandling.cs" />
+    <Compile Include="FormatterAssemblyStyle.cs" />
+    <Compile Include="Formatting.cs" />
+    <Compile Include="JsonConstructorAttribute.cs" />
+    <Compile Include="JsonPosition.cs" />
+    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
+    <Compile Include="SerializationBinder.cs" />
+    <Compile Include="StreamingContext.cs" />
+    <Compile Include="Utilities\LinqBridge.cs" />
+    <Compile Include="Linq\JPath.cs" />
+    <Compile Include="Linq\JPropertyDescriptor.cs" />
+    <Compile Include="Linq\JRaw.cs" />
+    <Compile Include="Required.cs" />
+    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
+    <Compile Include="PreserveReferencesHandling.cs" />
+    <Compile Include="IJsonLineInfo.cs" />
+    <Compile Include="JsonArrayAttribute.cs" />
+    <Compile Include="JsonContainerAttribute.cs" />
+    <Compile Include="DefaultValueHandling.cs" />
+    <Compile Include="JsonConverterAttribute.cs" />
+    <Compile Include="JsonObjectAttribute.cs" />
+    <Compile Include="JsonSerializerSettings.cs" />
+    <Compile Include="JsonValidatingReader.cs" />
+    <Compile Include="Linq\IJEnumerable.cs" />
+    <Compile Include="Linq\JTokenEqualityComparer.cs" />
+    <Compile Include="MemberSerialization.cs" />
+    <Compile Include="ObjectCreationHandling.cs" />
+    <Compile Include="Converters\IsoDateTimeConverter.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
+    <Compile Include="Converters\XmlNodeConverter.cs" />
+    <Compile Include="JsonTextReader.cs" />
+    <Compile Include="JsonPropertyAttribute.cs" />
+    <Compile Include="JsonIgnoreAttribute.cs" />
+    <Compile Include="JsonTextWriter.cs" />
+    <Compile Include="JsonWriterException.cs" />
+    <Compile Include="JsonReaderException.cs" />
+    <Compile Include="JsonConverter.cs" />
+    <Compile Include="JsonConverterCollection.cs" />
+    <Compile Include="JsonReader.cs" />
+    <Compile Include="JsonConvert.cs" />
+    <Compile Include="JsonSerializationException.cs" />
+    <Compile Include="JsonSerializer.cs" />
+    <Compile Include="Linq\Extensions.cs" />
+    <Compile Include="Linq\JConstructor.cs" />
+    <Compile Include="Linq\JContainer.cs" />
+    <Compile Include="Linq\JEnumerable.cs" />
+    <Compile Include="Linq\JObject.cs" />
+    <Compile Include="Linq\JArray.cs" />
+    <Compile Include="Linq\JTokenReader.cs" />
+    <Compile Include="Linq\JTokenWriter.cs" />
+    <Compile Include="Linq\JToken.cs" />
+    <Compile Include="Linq\JProperty.cs" />
+    <Compile Include="Linq\JTokenType.cs" />
+    <Compile Include="Linq\JValue.cs" />
+    <Compile Include="Schema\Extensions.cs" />
+    <Compile Include="Schema\JsonSchemaException.cs" />
+    <Compile Include="Schema\JsonSchemaModel.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
+    <Compile Include="Schema\JsonSchemaNode.cs" />
+    <Compile Include="Schema\JsonSchemaResolver.cs" />
+    <Compile Include="Schema\JsonSchemaWriter.cs" />
+    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
+    <Compile Include="Schema\ValidationEventArgs.cs" />
+    <Compile Include="Schema\ValidationEventHandler.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
+    <Compile Include="Serialization\DefaultContractResolver.cs" />
+    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
+    <Compile Include="Serialization\DynamicValueProvider.cs" />
+    <Compile Include="Serialization\ErrorContext.cs" />
+    <Compile Include="Serialization\ErrorEventArgs.cs" />
+    <Compile Include="Serialization\IContractResolver.cs" />
+    <Compile Include="Serialization\IValueProvider.cs" />
+    <Compile Include="Serialization\JsonArrayContract.cs" />
+    <Compile Include="Serialization\JsonContract.cs" />
+    <Compile Include="Serialization\JsonDictionaryContract.cs" />
+    <Compile Include="Serialization\JsonFormatterConverter.cs" />
+    <Compile Include="Serialization\JsonISerializableContract.cs" />
+    <Compile Include="Serialization\JsonLinqContract.cs" />
+    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
+    <Compile Include="Serialization\JsonProperty.cs" />
+    <Compile Include="Serialization\JsonPropertyCollection.cs" />
+    <Compile Include="MissingMemberHandling.cs" />
+    <Compile Include="NullValueHandling.cs" />
+    <Compile Include="ReferenceLoopHandling.cs" />
+    <Compile Include="Schema\JsonSchema.cs" />
+    <Compile Include="Schema\JsonSchemaBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaConstants.cs" />
+    <Compile Include="Schema\JsonSchemaGenerator.cs" />
+    <Compile Include="Serialization\IReferenceResolver.cs" />
+    <Compile Include="Schema\JsonSchemaType.cs" />
+    <Compile Include="Serialization\JsonObjectContract.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
+    <Compile Include="Serialization\JsonSerializerProxy.cs" />
+    <Compile Include="Serialization\JsonStringContract.cs" />
+    <Compile Include="Serialization\JsonTypeReflector.cs" />
+    <Compile Include="Serialization\CachedAttributeGetter.cs" />
+    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
+    <Compile Include="Serialization\ObjectConstructor.cs" />
+    <Compile Include="Serialization\OnErrorAttribute.cs" />
+    <Compile Include="Serialization\ReflectionValueProvider.cs" />
+    <Compile Include="Utilities\Base64Encoder.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\DynamicWrapper.cs" />
+    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
+    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\MethodCall.cs" />
+    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\StringReference.cs" />
+    <Compile Include="Utilities\ThreadSafeStore.cs" />
+    <Compile Include="TypeNameHandling.cs" />
+    <Compile Include="Utilities\BidirectionalDictionary.cs" />
+    <Compile Include="Utilities\ConvertUtils.cs" />
+    <Compile Include="Utilities\CollectionWrapper.cs" />
+    <Compile Include="Utilities\DateTimeUtils.cs" />
+    <Compile Include="Utilities\DictionaryWrapper.cs" />
+    <Compile Include="Utilities\EnumUtils.cs" />
+    <Compile Include="Utilities\EnumValue.cs" />
+    <Compile Include="Utilities\EnumValues.cs" />
+    <Compile Include="Utilities\JavaScriptUtils.cs" />
+    <Compile Include="JsonToken.cs" />
+    <Compile Include="JsonWriter.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Utilities\StringBuffer.cs" />
+    <Compile Include="Utilities\CollectionUtils.cs" />
+    <Compile Include="Utilities\ListWrapper.cs" />
+    <Compile Include="Utilities\MathUtils.cs" />
+    <Compile Include="Utilities\MiscellaneousUtils.cs" />
+    <Compile Include="Utilities\ReflectionUtils.cs" />
+    <Compile Include="Utilities\StringUtils.cs" />
+    <Compile Include="Utilities\TypeExtensions.cs" />
+    <Compile Include="Utilities\ValidationUtils.cs" />
+    <Compile Include="WriteState.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Net35.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Net35.csproj
@@ -1,278 +1,278 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json</RootNamespace>
-    <AssemblyName>Newtonsoft.Json</AssemblyName>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <SccProjectName>
-    </SccProjectName>
-    <SccLocalPath>
-    </SccLocalPath>
-    <SccAuxPath>
-    </SccAuxPath>
-    <SccProvider>
-    </SccProvider>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Net35\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;CODE_ANALYSIS;NET35</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Debug\Net35\Newtonsoft.Json.xml</DocumentationFile>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <CodeAnalysisRules>
-    </CodeAnalysisRules>
-    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Net35\</OutputPath>
-    <DefineConstants>TRACE;NET35</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\Net35\Newtonsoft.Json.xml</DocumentationFile>
-    <CodeAnalysisRuleSet>..\..\..\..\trunk\Src\Newtonsoft.Json\Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
-    <RunCodeAnalysis>false</RunCodeAnalysis>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Runtime.Serialization">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonBinaryType.cs" />
-    <Compile Include="Bson\BsonBinaryWriter.cs" />
-    <Compile Include="Bson\BsonReader.cs" />
-    <Compile Include="Bson\BsonToken.cs" />
-    <Compile Include="Bson\BsonType.cs" />
-    <Compile Include="Bson\BsonWriter.cs" />
-    <Compile Include="Bson\BsonObjectId.cs" />
-    <Compile Include="Converters\BinaryConverter.cs" />
-    <Compile Include="Converters\DataSetConverter.cs" />
-    <Compile Include="Converters\DataTableConverter.cs" />
-    <Compile Include="Converters\CustomCreationConverter.cs" />
-    <Compile Include="Converters\DateTimeConverterBase.cs" />
-    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
-    <Compile Include="Converters\ExpandoObjectConverter.cs" />
-    <Compile Include="Converters\KeyValuePairConverter.cs" />
-    <Compile Include="Converters\BsonObjectIdConverter.cs" />
-    <Compile Include="Converters\RegexConverter.cs" />
-    <Compile Include="Converters\StringEnumConverter.cs" />
-    <Compile Include="ConstructorHandling.cs" />
-    <Compile Include="Converters\VersionConverter.cs" />
-    <Compile Include="DateFormatHandling.cs" />
-    <Compile Include="DateTimeZoneHandling.cs" />
-    <Compile Include="FormatterAssemblyStyle.cs" />
-    <Compile Include="Formatting.cs" />
-    <Compile Include="JsonConstructorAttribute.cs" />
-    <Compile Include="JsonPosition.cs" />
-    <Compile Include="Linq\JPropertyDescriptor.cs" />
-    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
-    <Compile Include="SerializationBinder.cs" />
-    <Compile Include="StreamingContext.cs" />
-    <Compile Include="Utilities\DynamicProxy.cs" />
-    <Compile Include="Linq\JPath.cs" />
-    <Compile Include="Linq\JRaw.cs" />
-    <Compile Include="Required.cs" />
-    <Compile Include="Serialization\JsonDynamicContract.cs" />
-    <Compile Include="Serialization\JsonFormatterConverter.cs" />
-    <Compile Include="Serialization\JsonISerializableContract.cs" />
-    <Compile Include="Serialization\JsonLinqContract.cs" />
-    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
-    <Compile Include="Serialization\DynamicValueProvider.cs" />
-    <Compile Include="Serialization\ErrorEventArgs.cs" />
-    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
-    <Compile Include="PreserveReferencesHandling.cs" />
-    <Compile Include="IJsonLineInfo.cs" />
-    <Compile Include="JsonArrayAttribute.cs" />
-    <Compile Include="JsonContainerAttribute.cs" />
-    <Compile Include="DefaultValueHandling.cs" />
-    <Compile Include="JsonConverterAttribute.cs" />
-    <Compile Include="JsonObjectAttribute.cs" />
-    <Compile Include="JsonSerializerSettings.cs" />
-    <Compile Include="JsonValidatingReader.cs" />
-    <Compile Include="Linq\IJEnumerable.cs" />
-    <Compile Include="Linq\JTokenEqualityComparer.cs" />
-    <Compile Include="MemberSerialization.cs" />
-    <Compile Include="ObjectCreationHandling.cs" />
-    <Compile Include="Converters\IsoDateTimeConverter.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
-    <Compile Include="Converters\XmlNodeConverter.cs" />
-    <Compile Include="JsonTextReader.cs" />
-    <Compile Include="JsonPropertyAttribute.cs" />
-    <Compile Include="JsonIgnoreAttribute.cs" />
-    <Compile Include="JsonTextWriter.cs" />
-    <Compile Include="JsonWriterException.cs" />
-    <Compile Include="JsonReaderException.cs" />
-    <Compile Include="JsonConverter.cs" />
-    <Compile Include="JsonConverterCollection.cs" />
-    <Compile Include="JsonReader.cs" />
-    <Compile Include="JsonConvert.cs" />
-    <Compile Include="JsonSerializationException.cs" />
-    <Compile Include="JsonSerializer.cs" />
-    <Compile Include="Linq\Extensions.cs" />
-    <Compile Include="Linq\JConstructor.cs" />
-    <Compile Include="Linq\JContainer.cs" />
-    <Compile Include="Linq\JEnumerable.cs" />
-    <Compile Include="Linq\JObject.cs" />
-    <Compile Include="Linq\JArray.cs" />
-    <Compile Include="Linq\JTokenReader.cs" />
-    <Compile Include="Linq\JTokenWriter.cs" />
-    <Compile Include="Linq\JToken.cs" />
-    <Compile Include="Linq\JProperty.cs" />
-    <Compile Include="Linq\JTokenType.cs" />
-    <Compile Include="Linq\JValue.cs" />
-    <Compile Include="Schema\Extensions.cs" />
-    <Compile Include="Schema\JsonSchemaException.cs" />
-    <Compile Include="Schema\JsonSchemaModel.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
-    <Compile Include="Schema\JsonSchemaNode.cs" />
-    <Compile Include="Schema\JsonSchemaResolver.cs" />
-    <Compile Include="Schema\JsonSchemaWriter.cs" />
-    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
-    <Compile Include="Schema\ValidationEventArgs.cs" />
-    <Compile Include="Schema\ValidationEventHandler.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
-    <Compile Include="Serialization\DefaultContractResolver.cs" />
-    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
-    <Compile Include="Serialization\ErrorContext.cs" />
-    <Compile Include="Serialization\IContractResolver.cs" />
-    <Compile Include="Serialization\IValueProvider.cs" />
-    <Compile Include="Serialization\JsonArrayContract.cs" />
-    <Compile Include="Serialization\JsonContract.cs" />
-    <Compile Include="Serialization\JsonDictionaryContract.cs" />
-    <Compile Include="Serialization\JsonProperty.cs" />
-    <Compile Include="Serialization\JsonPropertyCollection.cs" />
-    <Compile Include="MissingMemberHandling.cs" />
-    <Compile Include="NullValueHandling.cs" />
-    <Compile Include="ReferenceLoopHandling.cs" />
-    <Compile Include="Schema\JsonSchema.cs" />
-    <Compile Include="Schema\JsonSchemaBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaConstants.cs" />
-    <Compile Include="Schema\JsonSchemaGenerator.cs" />
-    <Compile Include="Serialization\IReferenceResolver.cs" />
-    <Compile Include="Schema\JsonSchemaType.cs" />
-    <Compile Include="Serialization\JsonObjectContract.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
-    <Compile Include="Serialization\JsonSerializerProxy.cs" />
-    <Compile Include="Serialization\JsonStringContract.cs" />
-    <Compile Include="Serialization\JsonTypeReflector.cs" />
-    <Compile Include="Serialization\CachedAttributeGetter.cs" />
-    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
-    <Compile Include="Serialization\ReflectionValueProvider.cs" />
-    <Compile Include="Serialization\OnErrorAttribute.cs" />
-    <Compile Include="Utilities\Base64Encoder.cs" />
-    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
-    <Compile Include="Utilities\DynamicUtils.cs" />
-    <Compile Include="Utilities\DynamicWrapper.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
-    <Compile Include="Serialization\ObjectConstructor.cs" />
-    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
-    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\MethodCall.cs" />
-    <Compile Include="Utilities\StringReference.cs" />
-    <Compile Include="Utilities\ThreadSafeStore.cs" />
-    <Compile Include="TypeNameHandling.cs" />
-    <Compile Include="Utilities\BidirectionalDictionary.cs" />
-    <Compile Include="Utilities\ConvertUtils.cs" />
-    <Compile Include="Utilities\CollectionWrapper.cs" />
-    <Compile Include="Utilities\DateTimeUtils.cs" />
-    <Compile Include="Utilities\DictionaryWrapper.cs" />
-    <Compile Include="Utilities\EnumUtils.cs" />
-    <Compile Include="Utilities\EnumValue.cs" />
-    <Compile Include="Utilities\EnumValues.cs" />
-    <Compile Include="Utilities\JavaScriptUtils.cs" />
-    <Compile Include="JsonToken.cs" />
-    <Compile Include="JsonWriter.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Utilities\StringBuffer.cs" />
-    <Compile Include="Utilities\CollectionUtils.cs" />
-    <Compile Include="Utilities\ListWrapper.cs" />
-    <Compile Include="Utilities\MathUtils.cs" />
-    <Compile Include="Utilities\MiscellaneousUtils.cs" />
-    <Compile Include="Utilities\ReflectionUtils.cs" />
-    <Compile Include="Utilities\StringUtils.cs" />
-    <Compile Include="Utilities\TypeExtensions.cs" />
-    <Compile Include="Utilities\ValidationUtils.cs" />
-    <Compile Include="WriteState.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Dynamic.snk" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json</RootNamespace>
+    <AssemblyName>Newtonsoft.Json</AssemblyName>
+    <SignAssembly>false</SignAssembly>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Net35\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;CODE_ANALYSIS;NET35</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Debug\Net35\Newtonsoft.Json.xml</DocumentationFile>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <CodeAnalysisRules>
+    </CodeAnalysisRules>
+    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Net35\</OutputPath>
+    <DefineConstants>TRACE;NET35</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\Net35\Newtonsoft.Json.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>..\..\..\..\trunk\Src\Newtonsoft.Json\Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
+    <RunCodeAnalysis>false</RunCodeAnalysis>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonBinaryType.cs" />
+    <Compile Include="Bson\BsonBinaryWriter.cs" />
+    <Compile Include="Bson\BsonReader.cs" />
+    <Compile Include="Bson\BsonToken.cs" />
+    <Compile Include="Bson\BsonType.cs" />
+    <Compile Include="Bson\BsonWriter.cs" />
+    <Compile Include="Bson\BsonObjectId.cs" />
+    <Compile Include="Converters\BinaryConverter.cs" />
+    <Compile Include="Converters\DataSetConverter.cs" />
+    <Compile Include="Converters\DataTableConverter.cs" />
+    <Compile Include="Converters\CustomCreationConverter.cs" />
+    <Compile Include="Converters\DateTimeConverterBase.cs" />
+    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
+    <Compile Include="Converters\ExpandoObjectConverter.cs" />
+    <Compile Include="Converters\KeyValuePairConverter.cs" />
+    <Compile Include="Converters\BsonObjectIdConverter.cs" />
+    <Compile Include="Converters\RegexConverter.cs" />
+    <Compile Include="Converters\StringEnumConverter.cs" />
+    <Compile Include="ConstructorHandling.cs" />
+    <Compile Include="Converters\VersionConverter.cs" />
+    <Compile Include="DateFormatHandling.cs" />
+    <Compile Include="DateTimeZoneHandling.cs" />
+    <Compile Include="FormatterAssemblyStyle.cs" />
+    <Compile Include="Formatting.cs" />
+    <Compile Include="JsonConstructorAttribute.cs" />
+    <Compile Include="JsonPosition.cs" />
+    <Compile Include="Linq\JPropertyDescriptor.cs" />
+    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
+    <Compile Include="SerializationBinder.cs" />
+    <Compile Include="StreamingContext.cs" />
+    <Compile Include="Utilities\DynamicProxy.cs" />
+    <Compile Include="Linq\JPath.cs" />
+    <Compile Include="Linq\JRaw.cs" />
+    <Compile Include="Required.cs" />
+    <Compile Include="Serialization\JsonDynamicContract.cs" />
+    <Compile Include="Serialization\JsonFormatterConverter.cs" />
+    <Compile Include="Serialization\JsonISerializableContract.cs" />
+    <Compile Include="Serialization\JsonLinqContract.cs" />
+    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
+    <Compile Include="Serialization\DynamicValueProvider.cs" />
+    <Compile Include="Serialization\ErrorEventArgs.cs" />
+    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
+    <Compile Include="PreserveReferencesHandling.cs" />
+    <Compile Include="IJsonLineInfo.cs" />
+    <Compile Include="JsonArrayAttribute.cs" />
+    <Compile Include="JsonContainerAttribute.cs" />
+    <Compile Include="DefaultValueHandling.cs" />
+    <Compile Include="JsonConverterAttribute.cs" />
+    <Compile Include="JsonObjectAttribute.cs" />
+    <Compile Include="JsonSerializerSettings.cs" />
+    <Compile Include="JsonValidatingReader.cs" />
+    <Compile Include="Linq\IJEnumerable.cs" />
+    <Compile Include="Linq\JTokenEqualityComparer.cs" />
+    <Compile Include="MemberSerialization.cs" />
+    <Compile Include="ObjectCreationHandling.cs" />
+    <Compile Include="Converters\IsoDateTimeConverter.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
+    <Compile Include="Converters\XmlNodeConverter.cs" />
+    <Compile Include="JsonTextReader.cs" />
+    <Compile Include="JsonPropertyAttribute.cs" />
+    <Compile Include="JsonIgnoreAttribute.cs" />
+    <Compile Include="JsonTextWriter.cs" />
+    <Compile Include="JsonWriterException.cs" />
+    <Compile Include="JsonReaderException.cs" />
+    <Compile Include="JsonConverter.cs" />
+    <Compile Include="JsonConverterCollection.cs" />
+    <Compile Include="JsonReader.cs" />
+    <Compile Include="JsonConvert.cs" />
+    <Compile Include="JsonSerializationException.cs" />
+    <Compile Include="JsonSerializer.cs" />
+    <Compile Include="Linq\Extensions.cs" />
+    <Compile Include="Linq\JConstructor.cs" />
+    <Compile Include="Linq\JContainer.cs" />
+    <Compile Include="Linq\JEnumerable.cs" />
+    <Compile Include="Linq\JObject.cs" />
+    <Compile Include="Linq\JArray.cs" />
+    <Compile Include="Linq\JTokenReader.cs" />
+    <Compile Include="Linq\JTokenWriter.cs" />
+    <Compile Include="Linq\JToken.cs" />
+    <Compile Include="Linq\JProperty.cs" />
+    <Compile Include="Linq\JTokenType.cs" />
+    <Compile Include="Linq\JValue.cs" />
+    <Compile Include="Schema\Extensions.cs" />
+    <Compile Include="Schema\JsonSchemaException.cs" />
+    <Compile Include="Schema\JsonSchemaModel.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
+    <Compile Include="Schema\JsonSchemaNode.cs" />
+    <Compile Include="Schema\JsonSchemaResolver.cs" />
+    <Compile Include="Schema\JsonSchemaWriter.cs" />
+    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
+    <Compile Include="Schema\ValidationEventArgs.cs" />
+    <Compile Include="Schema\ValidationEventHandler.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
+    <Compile Include="Serialization\DefaultContractResolver.cs" />
+    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
+    <Compile Include="Serialization\ErrorContext.cs" />
+    <Compile Include="Serialization\IContractResolver.cs" />
+    <Compile Include="Serialization\IValueProvider.cs" />
+    <Compile Include="Serialization\JsonArrayContract.cs" />
+    <Compile Include="Serialization\JsonContract.cs" />
+    <Compile Include="Serialization\JsonDictionaryContract.cs" />
+    <Compile Include="Serialization\JsonProperty.cs" />
+    <Compile Include="Serialization\JsonPropertyCollection.cs" />
+    <Compile Include="MissingMemberHandling.cs" />
+    <Compile Include="NullValueHandling.cs" />
+    <Compile Include="ReferenceLoopHandling.cs" />
+    <Compile Include="Schema\JsonSchema.cs" />
+    <Compile Include="Schema\JsonSchemaBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaConstants.cs" />
+    <Compile Include="Schema\JsonSchemaGenerator.cs" />
+    <Compile Include="Serialization\IReferenceResolver.cs" />
+    <Compile Include="Schema\JsonSchemaType.cs" />
+    <Compile Include="Serialization\JsonObjectContract.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
+    <Compile Include="Serialization\JsonSerializerProxy.cs" />
+    <Compile Include="Serialization\JsonStringContract.cs" />
+    <Compile Include="Serialization\JsonTypeReflector.cs" />
+    <Compile Include="Serialization\CachedAttributeGetter.cs" />
+    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
+    <Compile Include="Serialization\ReflectionValueProvider.cs" />
+    <Compile Include="Serialization\OnErrorAttribute.cs" />
+    <Compile Include="Utilities\Base64Encoder.cs" />
+    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
+    <Compile Include="Utilities\DynamicUtils.cs" />
+    <Compile Include="Utilities\DynamicWrapper.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
+    <Compile Include="Serialization\ObjectConstructor.cs" />
+    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
+    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\MethodCall.cs" />
+    <Compile Include="Utilities\StringReference.cs" />
+    <Compile Include="Utilities\ThreadSafeStore.cs" />
+    <Compile Include="TypeNameHandling.cs" />
+    <Compile Include="Utilities\BidirectionalDictionary.cs" />
+    <Compile Include="Utilities\ConvertUtils.cs" />
+    <Compile Include="Utilities\CollectionWrapper.cs" />
+    <Compile Include="Utilities\DateTimeUtils.cs" />
+    <Compile Include="Utilities\DictionaryWrapper.cs" />
+    <Compile Include="Utilities\EnumUtils.cs" />
+    <Compile Include="Utilities\EnumValue.cs" />
+    <Compile Include="Utilities\EnumValues.cs" />
+    <Compile Include="Utilities\JavaScriptUtils.cs" />
+    <Compile Include="JsonToken.cs" />
+    <Compile Include="JsonWriter.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Utilities\StringBuffer.cs" />
+    <Compile Include="Utilities\CollectionUtils.cs" />
+    <Compile Include="Utilities\ListWrapper.cs" />
+    <Compile Include="Utilities\MathUtils.cs" />
+    <Compile Include="Utilities\MiscellaneousUtils.cs" />
+    <Compile Include="Utilities\ReflectionUtils.cs" />
+    <Compile Include="Utilities\StringUtils.cs" />
+    <Compile Include="Utilities\TypeExtensions.cs" />
+    <Compile Include="Utilities\ValidationUtils.cs" />
+    <Compile Include="WriteState.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Dynamic.snk" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Silverlight.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.Silverlight.csproj
@@ -1,275 +1,275 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-  </PropertyGroup>
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}</ProjectGuid>
-    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json</RootNamespace>
-    <AssemblyName>Newtonsoft.Json</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <SilverlightApplication>false</SilverlightApplication>
-    <ValidateXaml>true</ValidateXaml>
-    <ThrowErrorsInValidation>false</ThrowErrorsInValidation>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile />
-    <SignManifests>false</SignManifests>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug\Silverlight\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>Bin\Debug\Silverlight\Newtonsoft.Json.xml</DocumentationFile>
-    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release\Silverlight\</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>Bin\Release\Silverlight\Newtonsoft.Json.xml</DocumentationFile>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Windows" />
-    <Reference Include="mscorlib" />
-    <Reference Include="system" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Net" />
-    <Reference Include="System.Windows.Browser" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonBinaryType.cs" />
-    <Compile Include="Bson\BsonBinaryWriter.cs" />
-    <Compile Include="Bson\BsonObjectId.cs" />
-    <Compile Include="Bson\BsonReader.cs" />
-    <Compile Include="Bson\BsonToken.cs" />
-    <Compile Include="Bson\BsonType.cs" />
-    <Compile Include="Bson\BsonWriter.cs" />
-    <Compile Include="ConstructorHandling.cs" />
-    <Compile Include="Converters\BinaryConverter.cs" />
-    <Compile Include="Converters\BsonObjectIdConverter.cs" />
-    <Compile Include="Converters\CustomCreationConverter.cs" />
-    <Compile Include="Converters\DataSetConverter.cs" />
-    <Compile Include="Converters\DataTableConverter.cs" />
-    <Compile Include="Converters\DateTimeConverterBase.cs" />
-    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
-    <Compile Include="Converters\ExpandoObjectConverter.cs" />
-    <Compile Include="Converters\IsoDateTimeConverter.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
-    <Compile Include="Converters\KeyValuePairConverter.cs" />
-    <Compile Include="Converters\RegexConverter.cs" />
-    <Compile Include="Converters\StringEnumConverter.cs" />
-    <Compile Include="Converters\VersionConverter.cs" />
-    <Compile Include="Converters\XmlNodeConverter.cs" />
-    <Compile Include="DateFormatHandling.cs" />
-    <Compile Include="DateTimeZoneHandling.cs" />
-    <Compile Include="FormatterAssemblyStyle.cs" />
-    <Compile Include="DefaultValueHandling.cs" />
-    <Compile Include="Formatting.cs" />
-    <Compile Include="IJsonLineInfo.cs" />
-    <Compile Include="JsonArrayAttribute.cs" />
-    <Compile Include="JsonConstructorAttribute.cs" />
-    <Compile Include="JsonContainerAttribute.cs" />
-    <Compile Include="JsonConvert.cs" />
-    <Compile Include="JsonConverter.cs" />
-    <Compile Include="JsonConverterAttribute.cs" />
-    <Compile Include="JsonConverterCollection.cs" />
-    <Compile Include="JsonIgnoreAttribute.cs" />
-    <Compile Include="JsonObjectAttribute.cs" />
-    <Compile Include="JsonPosition.cs" />
-    <Compile Include="JsonPropertyAttribute.cs" />
-    <Compile Include="JsonReader.cs" />
-    <Compile Include="JsonReaderException.cs" />
-    <Compile Include="JsonSerializationException.cs" />
-    <Compile Include="JsonSerializer.cs" />
-    <Compile Include="JsonSerializerSettings.cs" />
-    <Compile Include="JsonTextReader.cs" />
-    <Compile Include="JsonTextWriter.cs" />
-    <Compile Include="JsonToken.cs" />
-    <Compile Include="JsonValidatingReader.cs" />
-    <Compile Include="JsonWriter.cs" />
-    <Compile Include="JsonWriterException.cs" />
-    <Compile Include="Linq\Extensions.cs" />
-    <Compile Include="Linq\IJEnumerable.cs" />
-    <Compile Include="Linq\JArray.cs" />
-    <Compile Include="Linq\JConstructor.cs" />
-    <Compile Include="Linq\JContainer.cs" />
-    <Compile Include="Linq\JEnumerable.cs" />
-    <Compile Include="Linq\JObject.cs" />
-    <Compile Include="Linq\JPath.cs" />
-    <Compile Include="Linq\JProperty.cs" />
-    <Compile Include="Linq\JPropertyDescriptor.cs" />
-    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
-    <Compile Include="Linq\JRaw.cs" />
-    <Compile Include="Linq\JToken.cs" />
-    <Compile Include="Linq\JTokenEqualityComparer.cs" />
-    <Compile Include="Linq\JTokenReader.cs" />
-    <Compile Include="Linq\JTokenType.cs" />
-    <Compile Include="Linq\JTokenWriter.cs" />
-    <Compile Include="Linq\JValue.cs" />
-    <Compile Include="MemberSerialization.cs" />
-    <Compile Include="MissingMemberHandling.cs" />
-    <Compile Include="NullValueHandling.cs" />
-    <Compile Include="ObjectCreationHandling.cs" />
-    <Compile Include="PreserveReferencesHandling.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ReferenceLoopHandling.cs" />
-    <Compile Include="Required.cs" />
-    <Compile Include="SerializationBinder.cs" />
-    <Compile Include="Serialization\CachedAttributeGetter.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
-    <Compile Include="Serialization\DefaultContractResolver.cs" />
-    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
-    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
-    <Compile Include="Serialization\DynamicValueProvider.cs" />
-    <Compile Include="Serialization\ErrorContext.cs" />
-    <Compile Include="Serialization\ErrorEventArgs.cs" />
-    <Compile Include="Serialization\IContractResolver.cs" />
-    <Compile Include="Serialization\IReferenceResolver.cs" />
-    <Compile Include="Serialization\IValueProvider.cs" />
-    <Compile Include="Serialization\JsonArrayContract.cs" />
-    <Compile Include="Serialization\JsonContract.cs" />
-    <Compile Include="Serialization\JsonDictionaryContract.cs" />
-    <Compile Include="Serialization\JsonDynamicContract.cs" />
-    <Compile Include="Serialization\JsonFormatterConverter.cs" />
-    <Compile Include="Serialization\JsonISerializableContract.cs" />
-    <Compile Include="Serialization\JsonLinqContract.cs" />
-    <Compile Include="Serialization\JsonObjectContract.cs" />
-    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
-    <Compile Include="Serialization\JsonProperty.cs" />
-    <Compile Include="Serialization\JsonPropertyCollection.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
-    <Compile Include="Serialization\JsonSerializerProxy.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
-    <Compile Include="Serialization\JsonStringContract.cs" />
-    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
-    <Compile Include="Serialization\ObjectConstructor.cs" />
-    <Compile Include="Serialization\OnErrorAttribute.cs" />
-    <Compile Include="Serialization\ReflectionValueProvider.cs" />
-    <Compile Include="StreamingContext.cs" />
-    <Compile Include="TypeNameHandling.cs" />
-    <Compile Include="Utilities\Base64Encoder.cs" />
-    <Compile Include="Utilities\BidirectionalDictionary.cs" />
-    <Compile Include="Utilities\CollectionUtils.cs" />
-    <Compile Include="Utilities\CollectionWrapper.cs" />
-    <Compile Include="Utilities\ConvertUtils.cs" />
-    <Compile Include="Utilities\DateTimeUtils.cs" />
-    <Compile Include="Utilities\DictionaryWrapper.cs" />
-    <Compile Include="Utilities\DynamicProxy.cs" />
-    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\DynamicUtils.cs" />
-    <Compile Include="Utilities\DynamicWrapper.cs" />
-    <Compile Include="Utilities\EnumUtils.cs" />
-    <Compile Include="Utilities\EnumValue.cs" />
-    <Compile Include="Utilities\EnumValues.cs" />
-    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
-    <Compile Include="Utilities\JavaScriptUtils.cs" />
-    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\ListWrapper.cs" />
-    <Compile Include="Utilities\MathUtils.cs" />
-    <Compile Include="Utilities\MethodCall.cs" />
-    <Compile Include="Utilities\MiscellaneousUtils.cs" />
-    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\ReflectionUtils.cs" />
-    <Compile Include="Utilities\StringBuffer.cs" />
-    <Compile Include="Utilities\StringReference.cs" />
-    <Compile Include="Utilities\StringUtils.cs" />
-    <Compile Include="Utilities\ThreadSafeStore.cs" />
-    <Compile Include="Utilities\TypeExtensions.cs" />
-    <Compile Include="Utilities\ValidationUtils.cs" />
-    <Compile Include="Schema\Extensions.cs" />
-    <Compile Include="Schema\JsonSchemaException.cs" />
-    <Compile Include="Schema\JsonSchemaModel.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
-    <Compile Include="Schema\JsonSchemaNode.cs" />
-    <Compile Include="Schema\JsonSchemaWriter.cs" />
-    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
-    <Compile Include="Schema\ValidationEventArgs.cs" />
-    <Compile Include="Schema\ValidationEventHandler.cs" />
-    <Compile Include="Schema\JsonSchema.cs" />
-    <Compile Include="Schema\JsonSchemaBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaConstants.cs" />
-    <Compile Include="Schema\JsonSchemaGenerator.cs" />
-    <Compile Include="Schema\JsonSchemaResolver.cs" />
-    <Compile Include="Schema\JsonSchemaType.cs" />
-    <Compile Include="Serialization\JsonTypeReflector.cs" />
-    <Compile Include="WriteState.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ProjectExtensions>
-    <VisualStudio>
-      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
-        <SilverlightProjectProperties />
-      </FlavorProperties>
-    </VisualStudio>
-  </ProjectExtensions>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(MSBuildToolsVersion)' == '3.5'">
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{DC3C6F3D-2CA1-4278-9B79-63770FB3EA2D}</ProjectGuid>
+    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json</RootNamespace>
+    <AssemblyName>Newtonsoft.Json</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <SilverlightApplication>false</SilverlightApplication>
+    <ValidateXaml>true</ValidateXaml>
+    <ThrowErrorsInValidation>false</ThrowErrorsInValidation>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+    <SignManifests>false</SignManifests>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug\Silverlight\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>Bin\Debug\Silverlight\Newtonsoft.Json.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release\Silverlight\</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>Bin\Release\Silverlight\Newtonsoft.Json.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.Windows" />
+    <Reference Include="mscorlib" />
+    <Reference Include="system" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Net" />
+    <Reference Include="System.Windows.Browser" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonBinaryType.cs" />
+    <Compile Include="Bson\BsonBinaryWriter.cs" />
+    <Compile Include="Bson\BsonObjectId.cs" />
+    <Compile Include="Bson\BsonReader.cs" />
+    <Compile Include="Bson\BsonToken.cs" />
+    <Compile Include="Bson\BsonType.cs" />
+    <Compile Include="Bson\BsonWriter.cs" />
+    <Compile Include="ConstructorHandling.cs" />
+    <Compile Include="Converters\BinaryConverter.cs" />
+    <Compile Include="Converters\BsonObjectIdConverter.cs" />
+    <Compile Include="Converters\CustomCreationConverter.cs" />
+    <Compile Include="Converters\DataSetConverter.cs" />
+    <Compile Include="Converters\DataTableConverter.cs" />
+    <Compile Include="Converters\DateTimeConverterBase.cs" />
+    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
+    <Compile Include="Converters\ExpandoObjectConverter.cs" />
+    <Compile Include="Converters\IsoDateTimeConverter.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
+    <Compile Include="Converters\KeyValuePairConverter.cs" />
+    <Compile Include="Converters\RegexConverter.cs" />
+    <Compile Include="Converters\StringEnumConverter.cs" />
+    <Compile Include="Converters\VersionConverter.cs" />
+    <Compile Include="Converters\XmlNodeConverter.cs" />
+    <Compile Include="DateFormatHandling.cs" />
+    <Compile Include="DateTimeZoneHandling.cs" />
+    <Compile Include="FormatterAssemblyStyle.cs" />
+    <Compile Include="DefaultValueHandling.cs" />
+    <Compile Include="Formatting.cs" />
+    <Compile Include="IJsonLineInfo.cs" />
+    <Compile Include="JsonArrayAttribute.cs" />
+    <Compile Include="JsonConstructorAttribute.cs" />
+    <Compile Include="JsonContainerAttribute.cs" />
+    <Compile Include="JsonConvert.cs" />
+    <Compile Include="JsonConverter.cs" />
+    <Compile Include="JsonConverterAttribute.cs" />
+    <Compile Include="JsonConverterCollection.cs" />
+    <Compile Include="JsonIgnoreAttribute.cs" />
+    <Compile Include="JsonObjectAttribute.cs" />
+    <Compile Include="JsonPosition.cs" />
+    <Compile Include="JsonPropertyAttribute.cs" />
+    <Compile Include="JsonReader.cs" />
+    <Compile Include="JsonReaderException.cs" />
+    <Compile Include="JsonSerializationException.cs" />
+    <Compile Include="JsonSerializer.cs" />
+    <Compile Include="JsonSerializerSettings.cs" />
+    <Compile Include="JsonTextReader.cs" />
+    <Compile Include="JsonTextWriter.cs" />
+    <Compile Include="JsonToken.cs" />
+    <Compile Include="JsonValidatingReader.cs" />
+    <Compile Include="JsonWriter.cs" />
+    <Compile Include="JsonWriterException.cs" />
+    <Compile Include="Linq\Extensions.cs" />
+    <Compile Include="Linq\IJEnumerable.cs" />
+    <Compile Include="Linq\JArray.cs" />
+    <Compile Include="Linq\JConstructor.cs" />
+    <Compile Include="Linq\JContainer.cs" />
+    <Compile Include="Linq\JEnumerable.cs" />
+    <Compile Include="Linq\JObject.cs" />
+    <Compile Include="Linq\JPath.cs" />
+    <Compile Include="Linq\JProperty.cs" />
+    <Compile Include="Linq\JPropertyDescriptor.cs" />
+    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
+    <Compile Include="Linq\JRaw.cs" />
+    <Compile Include="Linq\JToken.cs" />
+    <Compile Include="Linq\JTokenEqualityComparer.cs" />
+    <Compile Include="Linq\JTokenReader.cs" />
+    <Compile Include="Linq\JTokenType.cs" />
+    <Compile Include="Linq\JTokenWriter.cs" />
+    <Compile Include="Linq\JValue.cs" />
+    <Compile Include="MemberSerialization.cs" />
+    <Compile Include="MissingMemberHandling.cs" />
+    <Compile Include="NullValueHandling.cs" />
+    <Compile Include="ObjectCreationHandling.cs" />
+    <Compile Include="PreserveReferencesHandling.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ReferenceLoopHandling.cs" />
+    <Compile Include="Required.cs" />
+    <Compile Include="SerializationBinder.cs" />
+    <Compile Include="Serialization\CachedAttributeGetter.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
+    <Compile Include="Serialization\DefaultContractResolver.cs" />
+    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
+    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
+    <Compile Include="Serialization\DynamicValueProvider.cs" />
+    <Compile Include="Serialization\ErrorContext.cs" />
+    <Compile Include="Serialization\ErrorEventArgs.cs" />
+    <Compile Include="Serialization\IContractResolver.cs" />
+    <Compile Include="Serialization\IReferenceResolver.cs" />
+    <Compile Include="Serialization\IValueProvider.cs" />
+    <Compile Include="Serialization\JsonArrayContract.cs" />
+    <Compile Include="Serialization\JsonContract.cs" />
+    <Compile Include="Serialization\JsonDictionaryContract.cs" />
+    <Compile Include="Serialization\JsonDynamicContract.cs" />
+    <Compile Include="Serialization\JsonFormatterConverter.cs" />
+    <Compile Include="Serialization\JsonISerializableContract.cs" />
+    <Compile Include="Serialization\JsonLinqContract.cs" />
+    <Compile Include="Serialization\JsonObjectContract.cs" />
+    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
+    <Compile Include="Serialization\JsonProperty.cs" />
+    <Compile Include="Serialization\JsonPropertyCollection.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
+    <Compile Include="Serialization\JsonSerializerProxy.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
+    <Compile Include="Serialization\JsonStringContract.cs" />
+    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
+    <Compile Include="Serialization\ObjectConstructor.cs" />
+    <Compile Include="Serialization\OnErrorAttribute.cs" />
+    <Compile Include="Serialization\ReflectionValueProvider.cs" />
+    <Compile Include="StreamingContext.cs" />
+    <Compile Include="TypeNameHandling.cs" />
+    <Compile Include="Utilities\Base64Encoder.cs" />
+    <Compile Include="Utilities\BidirectionalDictionary.cs" />
+    <Compile Include="Utilities\CollectionUtils.cs" />
+    <Compile Include="Utilities\CollectionWrapper.cs" />
+    <Compile Include="Utilities\ConvertUtils.cs" />
+    <Compile Include="Utilities\DateTimeUtils.cs" />
+    <Compile Include="Utilities\DictionaryWrapper.cs" />
+    <Compile Include="Utilities\DynamicProxy.cs" />
+    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\DynamicUtils.cs" />
+    <Compile Include="Utilities\DynamicWrapper.cs" />
+    <Compile Include="Utilities\EnumUtils.cs" />
+    <Compile Include="Utilities\EnumValue.cs" />
+    <Compile Include="Utilities\EnumValues.cs" />
+    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
+    <Compile Include="Utilities\JavaScriptUtils.cs" />
+    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\ListWrapper.cs" />
+    <Compile Include="Utilities\MathUtils.cs" />
+    <Compile Include="Utilities\MethodCall.cs" />
+    <Compile Include="Utilities\MiscellaneousUtils.cs" />
+    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\ReflectionUtils.cs" />
+    <Compile Include="Utilities\StringBuffer.cs" />
+    <Compile Include="Utilities\StringReference.cs" />
+    <Compile Include="Utilities\StringUtils.cs" />
+    <Compile Include="Utilities\ThreadSafeStore.cs" />
+    <Compile Include="Utilities\TypeExtensions.cs" />
+    <Compile Include="Utilities\ValidationUtils.cs" />
+    <Compile Include="Schema\Extensions.cs" />
+    <Compile Include="Schema\JsonSchemaException.cs" />
+    <Compile Include="Schema\JsonSchemaModel.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
+    <Compile Include="Schema\JsonSchemaNode.cs" />
+    <Compile Include="Schema\JsonSchemaWriter.cs" />
+    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
+    <Compile Include="Schema\ValidationEventArgs.cs" />
+    <Compile Include="Schema\ValidationEventHandler.cs" />
+    <Compile Include="Schema\JsonSchema.cs" />
+    <Compile Include="Schema\JsonSchemaBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaConstants.cs" />
+    <Compile Include="Schema\JsonSchemaGenerator.cs" />
+    <Compile Include="Schema\JsonSchemaResolver.cs" />
+    <Compile Include="Schema\JsonSchemaType.cs" />
+    <Compile Include="Serialization\JsonTypeReflector.cs" />
+    <Compile Include="WriteState.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{A1591282-1198-4647-A2B1-27E5FF5F6F3B}">
+        <SilverlightProjectProperties />
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.WindowsPhone.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.WindowsPhone.csproj
@@ -1,223 +1,223 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>10.0.20506</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}</ProjectGuid>
-    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json</RootNamespace>
-    <AssemblyName>Newtonsoft.Json</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
-    <TargetFrameworkProfile>WindowsPhone</TargetFrameworkProfile>
-    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
-    <SilverlightApplication>false</SilverlightApplication>
-    <ValidateXaml>true</ValidateXaml>
-    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>Bin\Debug\WindowsPhone\</OutputPath>
-    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>
-    </DocumentationFile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>Bin\Release\WindowsPhone\</OutputPath>
-    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
-    <NoStdLib>true</NoStdLib>
-    <NoConfig>true</NoConfig>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>Bin\Release\WindowsPhone\Newtonsoft.Json.xml</DocumentationFile>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Windows" />
-    <Reference Include="system" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Net" />
-    <Reference Include="System.Xml.Linq" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonBinaryType.cs" />
-    <Compile Include="Bson\BsonBinaryWriter.cs" />
-    <Compile Include="Bson\BsonObjectId.cs" />
-    <Compile Include="Bson\BsonReader.cs" />
-    <Compile Include="Bson\BsonToken.cs" />
-    <Compile Include="Bson\BsonType.cs" />
-    <Compile Include="Bson\BsonWriter.cs" />
-    <Compile Include="ConstructorHandling.cs" />
-    <Compile Include="Converters\BinaryConverter.cs" />
-    <Compile Include="Converters\BsonObjectIdConverter.cs" />
-    <Compile Include="Converters\CustomCreationConverter.cs" />
-    <Compile Include="Converters\DataSetConverter.cs" />
-    <Compile Include="Converters\DataTableConverter.cs" />
-    <Compile Include="Converters\DateTimeConverterBase.cs" />
-    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
-    <Compile Include="Converters\ExpandoObjectConverter.cs" />
-    <Compile Include="Converters\IsoDateTimeConverter.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
-    <Compile Include="Converters\KeyValuePairConverter.cs" />
-    <Compile Include="Converters\RegexConverter.cs" />
-    <Compile Include="Converters\StringEnumConverter.cs" />
-    <Compile Include="Converters\VersionConverter.cs" />
-    <Compile Include="Converters\XmlNodeConverter.cs" />
-    <Compile Include="DateFormatHandling.cs" />
-    <Compile Include="DateTimeZoneHandling.cs" />
-    <Compile Include="FormatterAssemblyStyle.cs" />
-    <Compile Include="DefaultValueHandling.cs" />
-    <Compile Include="Formatting.cs" />
-    <Compile Include="IJsonLineInfo.cs" />
-    <Compile Include="JsonArrayAttribute.cs" />
-    <Compile Include="JsonConstructorAttribute.cs" />
-    <Compile Include="JsonContainerAttribute.cs" />
-    <Compile Include="JsonConvert.cs" />
-    <Compile Include="JsonConverter.cs" />
-    <Compile Include="JsonConverterAttribute.cs" />
-    <Compile Include="JsonConverterCollection.cs" />
-    <Compile Include="JsonIgnoreAttribute.cs" />
-    <Compile Include="JsonObjectAttribute.cs" />
-    <Compile Include="JsonPosition.cs" />
-    <Compile Include="JsonPropertyAttribute.cs" />
-    <Compile Include="JsonReader.cs" />
-    <Compile Include="JsonReaderException.cs" />
-    <Compile Include="JsonSerializationException.cs" />
-    <Compile Include="JsonSerializer.cs" />
-    <Compile Include="JsonSerializerSettings.cs" />
-    <Compile Include="JsonTextReader.cs" />
-    <Compile Include="JsonTextWriter.cs" />
-    <Compile Include="JsonToken.cs" />
-    <Compile Include="JsonValidatingReader.cs" />
-    <Compile Include="JsonWriter.cs" />
-    <Compile Include="JsonWriterException.cs" />
-    <Compile Include="Linq\Extensions.cs" />
-    <Compile Include="Linq\IJEnumerable.cs" />
-    <Compile Include="Linq\JArray.cs" />
-    <Compile Include="Linq\JConstructor.cs" />
-    <Compile Include="Linq\JContainer.cs" />
-    <Compile Include="Linq\JEnumerable.cs" />
-    <Compile Include="Linq\JObject.cs" />
-    <Compile Include="Linq\JPath.cs" />
-    <Compile Include="Linq\JProperty.cs" />
-    <Compile Include="Linq\JPropertyDescriptor.cs" />
-    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
-    <Compile Include="Linq\JRaw.cs" />
-    <Compile Include="Linq\JToken.cs" />
-    <Compile Include="Linq\JTokenEqualityComparer.cs" />
-    <Compile Include="Linq\JTokenReader.cs" />
-    <Compile Include="Linq\JTokenType.cs" />
-    <Compile Include="Linq\JTokenWriter.cs" />
-    <Compile Include="Linq\JValue.cs" />
-    <Compile Include="MemberSerialization.cs" />
-    <Compile Include="MissingMemberHandling.cs" />
-    <Compile Include="NullValueHandling.cs" />
-    <Compile Include="ObjectCreationHandling.cs" />
-    <Compile Include="PreserveReferencesHandling.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ReferenceLoopHandling.cs" />
-    <Compile Include="Required.cs" />
-    <Compile Include="SerializationBinder.cs" />
-    <Compile Include="Serialization\CachedAttributeGetter.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
-    <Compile Include="Serialization\DefaultContractResolver.cs" />
-    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
-    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
-    <Compile Include="Serialization\DynamicValueProvider.cs" />
-    <Compile Include="Serialization\ErrorContext.cs" />
-    <Compile Include="Serialization\ErrorEventArgs.cs" />
-    <Compile Include="Serialization\IContractResolver.cs" />
-    <Compile Include="Serialization\IReferenceResolver.cs" />
-    <Compile Include="Serialization\IValueProvider.cs" />
-    <Compile Include="Serialization\JsonArrayContract.cs" />
-    <Compile Include="Serialization\JsonContract.cs" />
-    <Compile Include="Serialization\JsonDictionaryContract.cs" />
-    <Compile Include="Serialization\JsonDynamicContract.cs" />
-    <Compile Include="Serialization\JsonFormatterConverter.cs" />
-    <Compile Include="Serialization\JsonISerializableContract.cs" />
-    <Compile Include="Serialization\JsonLinqContract.cs" />
-    <Compile Include="Serialization\JsonObjectContract.cs" />
-    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
-    <Compile Include="Serialization\JsonProperty.cs" />
-    <Compile Include="Serialization\JsonPropertyCollection.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
-    <Compile Include="Serialization\JsonSerializerProxy.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
-    <Compile Include="Serialization\JsonStringContract.cs" />
-    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
-    <Compile Include="Serialization\ObjectConstructor.cs" />
-    <Compile Include="Serialization\OnErrorAttribute.cs" />
-    <Compile Include="Serialization\ReflectionValueProvider.cs" />
-    <Compile Include="StreamingContext.cs" />
-    <Compile Include="TypeNameHandling.cs" />
-    <Compile Include="Utilities\Base64Encoder.cs" />
-    <Compile Include="Utilities\BidirectionalDictionary.cs" />
-    <Compile Include="Utilities\CollectionUtils.cs" />
-    <Compile Include="Utilities\CollectionWrapper.cs" />
-    <Compile Include="Utilities\ConvertUtils.cs" />
-    <Compile Include="Utilities\DateTimeUtils.cs" />
-    <Compile Include="Utilities\DictionaryWrapper.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\DynamicWrapper.cs" />
-    <Compile Include="Utilities\EnumUtils.cs" />
-    <Compile Include="Utilities\EnumValue.cs" />
-    <Compile Include="Utilities\EnumValues.cs" />
-    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
-    <Compile Include="Utilities\JavaScriptUtils.cs" />
-    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\ListWrapper.cs" />
-    <Compile Include="Utilities\MathUtils.cs" />
-    <Compile Include="Utilities\MethodCall.cs" />
-    <Compile Include="Utilities\MiscellaneousUtils.cs" />
-    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\ReflectionUtils.cs" />
-    <Compile Include="Utilities\StringBuffer.cs" />
-    <Compile Include="Utilities\StringReference.cs" />
-    <Compile Include="Utilities\StringUtils.cs" />
-    <Compile Include="Utilities\ThreadSafeStore.cs" />
-    <Compile Include="Utilities\TypeExtensions.cs" />
-    <Compile Include="Utilities\ValidationUtils.cs" />
-    <Compile Include="Schema\Extensions.cs" />
-    <Compile Include="Schema\JsonSchemaException.cs" />
-    <Compile Include="Schema\JsonSchemaModel.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
-    <Compile Include="Schema\JsonSchemaNode.cs" />
-    <Compile Include="Schema\JsonSchemaWriter.cs" />
-    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
-    <Compile Include="Schema\ValidationEventArgs.cs" />
-    <Compile Include="Schema\ValidationEventHandler.cs" />
-    <Compile Include="Schema\JsonSchema.cs" />
-    <Compile Include="Schema\JsonSchemaBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaConstants.cs" />
-    <Compile Include="Schema\JsonSchemaGenerator.cs" />
-    <Compile Include="Schema\JsonSchemaResolver.cs" />
-    <Compile Include="Schema\JsonSchemaType.cs" />
-    <Compile Include="Serialization\JsonTypeReflector.cs" />
-    <Compile Include="WriteState.cs" />
-  </ItemGroup>
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
-  <ProjectExtensions />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.20506</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7A7F70AB-5C07-47ED-BDD2-ECC14DBACA5E}</ProjectGuid>
+    <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json</RootNamespace>
+    <AssemblyName>Newtonsoft.Json</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+    <TargetFrameworkProfile>WindowsPhone</TargetFrameworkProfile>
+    <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+    <SilverlightApplication>false</SilverlightApplication>
+    <ValidateXaml>true</ValidateXaml>
+    <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>Bin\Debug\WindowsPhone\</OutputPath>
+    <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>
+    </DocumentationFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>Bin\Release\WindowsPhone\</OutputPath>
+    <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
+    <NoStdLib>true</NoStdLib>
+    <NoConfig>true</NoConfig>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>Bin\Release\WindowsPhone\Newtonsoft.Json.xml</DocumentationFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.Windows" />
+    <Reference Include="system" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Net" />
+    <Reference Include="System.Xml.Linq" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonBinaryType.cs" />
+    <Compile Include="Bson\BsonBinaryWriter.cs" />
+    <Compile Include="Bson\BsonObjectId.cs" />
+    <Compile Include="Bson\BsonReader.cs" />
+    <Compile Include="Bson\BsonToken.cs" />
+    <Compile Include="Bson\BsonType.cs" />
+    <Compile Include="Bson\BsonWriter.cs" />
+    <Compile Include="ConstructorHandling.cs" />
+    <Compile Include="Converters\BinaryConverter.cs" />
+    <Compile Include="Converters\BsonObjectIdConverter.cs" />
+    <Compile Include="Converters\CustomCreationConverter.cs" />
+    <Compile Include="Converters\DataSetConverter.cs" />
+    <Compile Include="Converters\DataTableConverter.cs" />
+    <Compile Include="Converters\DateTimeConverterBase.cs" />
+    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
+    <Compile Include="Converters\ExpandoObjectConverter.cs" />
+    <Compile Include="Converters\IsoDateTimeConverter.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
+    <Compile Include="Converters\KeyValuePairConverter.cs" />
+    <Compile Include="Converters\RegexConverter.cs" />
+    <Compile Include="Converters\StringEnumConverter.cs" />
+    <Compile Include="Converters\VersionConverter.cs" />
+    <Compile Include="Converters\XmlNodeConverter.cs" />
+    <Compile Include="DateFormatHandling.cs" />
+    <Compile Include="DateTimeZoneHandling.cs" />
+    <Compile Include="FormatterAssemblyStyle.cs" />
+    <Compile Include="DefaultValueHandling.cs" />
+    <Compile Include="Formatting.cs" />
+    <Compile Include="IJsonLineInfo.cs" />
+    <Compile Include="JsonArrayAttribute.cs" />
+    <Compile Include="JsonConstructorAttribute.cs" />
+    <Compile Include="JsonContainerAttribute.cs" />
+    <Compile Include="JsonConvert.cs" />
+    <Compile Include="JsonConverter.cs" />
+    <Compile Include="JsonConverterAttribute.cs" />
+    <Compile Include="JsonConverterCollection.cs" />
+    <Compile Include="JsonIgnoreAttribute.cs" />
+    <Compile Include="JsonObjectAttribute.cs" />
+    <Compile Include="JsonPosition.cs" />
+    <Compile Include="JsonPropertyAttribute.cs" />
+    <Compile Include="JsonReader.cs" />
+    <Compile Include="JsonReaderException.cs" />
+    <Compile Include="JsonSerializationException.cs" />
+    <Compile Include="JsonSerializer.cs" />
+    <Compile Include="JsonSerializerSettings.cs" />
+    <Compile Include="JsonTextReader.cs" />
+    <Compile Include="JsonTextWriter.cs" />
+    <Compile Include="JsonToken.cs" />
+    <Compile Include="JsonValidatingReader.cs" />
+    <Compile Include="JsonWriter.cs" />
+    <Compile Include="JsonWriterException.cs" />
+    <Compile Include="Linq\Extensions.cs" />
+    <Compile Include="Linq\IJEnumerable.cs" />
+    <Compile Include="Linq\JArray.cs" />
+    <Compile Include="Linq\JConstructor.cs" />
+    <Compile Include="Linq\JContainer.cs" />
+    <Compile Include="Linq\JEnumerable.cs" />
+    <Compile Include="Linq\JObject.cs" />
+    <Compile Include="Linq\JPath.cs" />
+    <Compile Include="Linq\JProperty.cs" />
+    <Compile Include="Linq\JPropertyDescriptor.cs" />
+    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
+    <Compile Include="Linq\JRaw.cs" />
+    <Compile Include="Linq\JToken.cs" />
+    <Compile Include="Linq\JTokenEqualityComparer.cs" />
+    <Compile Include="Linq\JTokenReader.cs" />
+    <Compile Include="Linq\JTokenType.cs" />
+    <Compile Include="Linq\JTokenWriter.cs" />
+    <Compile Include="Linq\JValue.cs" />
+    <Compile Include="MemberSerialization.cs" />
+    <Compile Include="MissingMemberHandling.cs" />
+    <Compile Include="NullValueHandling.cs" />
+    <Compile Include="ObjectCreationHandling.cs" />
+    <Compile Include="PreserveReferencesHandling.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ReferenceLoopHandling.cs" />
+    <Compile Include="Required.cs" />
+    <Compile Include="SerializationBinder.cs" />
+    <Compile Include="Serialization\CachedAttributeGetter.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
+    <Compile Include="Serialization\DefaultContractResolver.cs" />
+    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
+    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
+    <Compile Include="Serialization\DynamicValueProvider.cs" />
+    <Compile Include="Serialization\ErrorContext.cs" />
+    <Compile Include="Serialization\ErrorEventArgs.cs" />
+    <Compile Include="Serialization\IContractResolver.cs" />
+    <Compile Include="Serialization\IReferenceResolver.cs" />
+    <Compile Include="Serialization\IValueProvider.cs" />
+    <Compile Include="Serialization\JsonArrayContract.cs" />
+    <Compile Include="Serialization\JsonContract.cs" />
+    <Compile Include="Serialization\JsonDictionaryContract.cs" />
+    <Compile Include="Serialization\JsonDynamicContract.cs" />
+    <Compile Include="Serialization\JsonFormatterConverter.cs" />
+    <Compile Include="Serialization\JsonISerializableContract.cs" />
+    <Compile Include="Serialization\JsonLinqContract.cs" />
+    <Compile Include="Serialization\JsonObjectContract.cs" />
+    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
+    <Compile Include="Serialization\JsonProperty.cs" />
+    <Compile Include="Serialization\JsonPropertyCollection.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
+    <Compile Include="Serialization\JsonSerializerProxy.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
+    <Compile Include="Serialization\JsonStringContract.cs" />
+    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
+    <Compile Include="Serialization\ObjectConstructor.cs" />
+    <Compile Include="Serialization\OnErrorAttribute.cs" />
+    <Compile Include="Serialization\ReflectionValueProvider.cs" />
+    <Compile Include="StreamingContext.cs" />
+    <Compile Include="TypeNameHandling.cs" />
+    <Compile Include="Utilities\Base64Encoder.cs" />
+    <Compile Include="Utilities\BidirectionalDictionary.cs" />
+    <Compile Include="Utilities\CollectionUtils.cs" />
+    <Compile Include="Utilities\CollectionWrapper.cs" />
+    <Compile Include="Utilities\ConvertUtils.cs" />
+    <Compile Include="Utilities\DateTimeUtils.cs" />
+    <Compile Include="Utilities\DictionaryWrapper.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\DynamicWrapper.cs" />
+    <Compile Include="Utilities\EnumUtils.cs" />
+    <Compile Include="Utilities\EnumValue.cs" />
+    <Compile Include="Utilities\EnumValues.cs" />
+    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
+    <Compile Include="Utilities\JavaScriptUtils.cs" />
+    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\ListWrapper.cs" />
+    <Compile Include="Utilities\MathUtils.cs" />
+    <Compile Include="Utilities\MethodCall.cs" />
+    <Compile Include="Utilities\MiscellaneousUtils.cs" />
+    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\ReflectionUtils.cs" />
+    <Compile Include="Utilities\StringBuffer.cs" />
+    <Compile Include="Utilities\StringReference.cs" />
+    <Compile Include="Utilities\StringUtils.cs" />
+    <Compile Include="Utilities\ThreadSafeStore.cs" />
+    <Compile Include="Utilities\TypeExtensions.cs" />
+    <Compile Include="Utilities\ValidationUtils.cs" />
+    <Compile Include="Schema\Extensions.cs" />
+    <Compile Include="Schema\JsonSchemaException.cs" />
+    <Compile Include="Schema\JsonSchemaModel.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
+    <Compile Include="Schema\JsonSchemaNode.cs" />
+    <Compile Include="Schema\JsonSchemaWriter.cs" />
+    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
+    <Compile Include="Schema\ValidationEventArgs.cs" />
+    <Compile Include="Schema\ValidationEventHandler.cs" />
+    <Compile Include="Schema\JsonSchema.cs" />
+    <Compile Include="Schema\JsonSchemaBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaConstants.cs" />
+    <Compile Include="Schema\JsonSchemaGenerator.cs" />
+    <Compile Include="Schema\JsonSchemaResolver.cs" />
+    <Compile Include="Schema\JsonSchemaType.cs" />
+    <Compile Include="Serialization\JsonTypeReflector.cs" />
+    <Compile Include="WriteState.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
+  <ProjectExtensions />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.csproj
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.csproj
@@ -1,275 +1,275 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Newtonsoft.Json</RootNamespace>
-    <AssemblyName>Newtonsoft.Json</AssemblyName>
-    <SignAssembly>false</SignAssembly>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <SccProjectName>
-    </SccProjectName>
-    <SccLocalPath>
-    </SccLocalPath>
-    <SccAuxPath>
-    </SccAuxPath>
-    <SccProvider>
-    </SccProvider>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\Net\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Debug\Net\Newtonsoft.Json.xml</DocumentationFile>
-    <RunCodeAnalysis>true</RunCodeAnalysis>
-    <CodeAnalysisRules>
-    </CodeAnalysisRules>
-    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\Net\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\Net\Newtonsoft.Json.xml</DocumentationFile>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Runtime.Serialization">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Bson\BsonBinaryType.cs" />
-    <Compile Include="Bson\BsonBinaryWriter.cs" />
-    <Compile Include="Bson\BsonReader.cs" />
-    <Compile Include="Bson\BsonToken.cs" />
-    <Compile Include="Bson\BsonType.cs" />
-    <Compile Include="Bson\BsonWriter.cs" />
-    <Compile Include="Bson\BsonObjectId.cs" />
-    <Compile Include="Converters\BinaryConverter.cs" />
-    <Compile Include="Converters\DataSetConverter.cs" />
-    <Compile Include="Converters\DataTableConverter.cs" />
-    <Compile Include="Converters\CustomCreationConverter.cs" />
-    <Compile Include="Converters\DateTimeConverterBase.cs" />
-    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
-    <Compile Include="Converters\ExpandoObjectConverter.cs" />
-    <Compile Include="Converters\KeyValuePairConverter.cs" />
-    <Compile Include="Converters\BsonObjectIdConverter.cs" />
-    <Compile Include="Converters\RegexConverter.cs" />
-    <Compile Include="Converters\StringEnumConverter.cs" />
-    <Compile Include="ConstructorHandling.cs" />
-    <Compile Include="Converters\VersionConverter.cs" />
-    <Compile Include="DateFormatHandling.cs" />
-    <Compile Include="DateTimeZoneHandling.cs" />
-    <Compile Include="Formatting.cs" />
-    <Compile Include="JsonConstructorAttribute.cs" />
-    <Compile Include="JsonPosition.cs" />
-    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
-    <Compile Include="Utilities\DynamicProxy.cs" />
-    <Compile Include="Linq\JPath.cs" />
-    <Compile Include="Linq\JRaw.cs" />
-    <Compile Include="Required.cs" />
-    <Compile Include="Serialization\JsonDynamicContract.cs" />
-    <Compile Include="Serialization\JsonFormatterConverter.cs" />
-    <Compile Include="Serialization\JsonISerializableContract.cs" />
-    <Compile Include="Serialization\JsonLinqContract.cs" />
-    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
-    <Compile Include="Serialization\DynamicValueProvider.cs" />
-    <Compile Include="Serialization\ErrorEventArgs.cs" />
-    <Compile Include="Linq\JPropertyDescriptor.cs" />
-    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
-    <Compile Include="PreserveReferencesHandling.cs" />
-    <Compile Include="IJsonLineInfo.cs" />
-    <Compile Include="JsonArrayAttribute.cs" />
-    <Compile Include="JsonContainerAttribute.cs" />
-    <Compile Include="DefaultValueHandling.cs" />
-    <Compile Include="JsonConverterAttribute.cs" />
-    <Compile Include="JsonObjectAttribute.cs" />
-    <Compile Include="JsonSerializerSettings.cs" />
-    <Compile Include="JsonValidatingReader.cs" />
-    <Compile Include="Linq\IJEnumerable.cs" />
-    <Compile Include="Linq\JTokenEqualityComparer.cs" />
-    <Compile Include="MemberSerialization.cs" />
-    <Compile Include="ObjectCreationHandling.cs" />
-    <Compile Include="Converters\IsoDateTimeConverter.cs" />
-    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
-    <Compile Include="Converters\XmlNodeConverter.cs" />
-    <Compile Include="JsonTextReader.cs" />
-    <Compile Include="JsonPropertyAttribute.cs" />
-    <Compile Include="JsonIgnoreAttribute.cs" />
-    <Compile Include="JsonTextWriter.cs" />
-    <Compile Include="JsonWriterException.cs" />
-    <Compile Include="JsonReaderException.cs" />
-    <Compile Include="JsonConverter.cs" />
-    <Compile Include="JsonConverterCollection.cs" />
-    <Compile Include="JsonReader.cs" />
-    <Compile Include="JsonConvert.cs" />
-    <Compile Include="JsonSerializationException.cs" />
-    <Compile Include="JsonSerializer.cs" />
-    <Compile Include="Linq\Extensions.cs" />
-    <Compile Include="Linq\JConstructor.cs" />
-    <Compile Include="Linq\JContainer.cs" />
-    <Compile Include="Linq\JEnumerable.cs" />
-    <Compile Include="Linq\JObject.cs" />
-    <Compile Include="Linq\JArray.cs" />
-    <Compile Include="Linq\JTokenReader.cs" />
-    <Compile Include="Linq\JTokenWriter.cs" />
-    <Compile Include="Linq\JToken.cs" />
-    <Compile Include="Linq\JProperty.cs" />
-    <Compile Include="Linq\JTokenType.cs" />
-    <Compile Include="Linq\JValue.cs" />
-    <Compile Include="Schema\Extensions.cs" />
-    <Compile Include="Schema\JsonSchemaException.cs" />
-    <Compile Include="Schema\JsonSchemaModel.cs" />
-    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
-    <Compile Include="Schema\JsonSchemaNode.cs" />
-    <Compile Include="Schema\JsonSchemaResolver.cs" />
-    <Compile Include="Schema\JsonSchemaWriter.cs" />
-    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
-    <Compile Include="Schema\ValidationEventArgs.cs" />
-    <Compile Include="Schema\ValidationEventHandler.cs" />
-    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
-    <Compile Include="Serialization\DefaultContractResolver.cs" />
-    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
-    <Compile Include="Serialization\ErrorContext.cs" />
-    <Compile Include="Serialization\IContractResolver.cs" />
-    <Compile Include="Serialization\IValueProvider.cs" />
-    <Compile Include="Serialization\JsonArrayContract.cs" />
-    <Compile Include="Serialization\JsonContract.cs" />
-    <Compile Include="Serialization\JsonDictionaryContract.cs" />
-    <Compile Include="Serialization\JsonProperty.cs" />
-    <Compile Include="Serialization\JsonPropertyCollection.cs" />
-    <Compile Include="MissingMemberHandling.cs" />
-    <Compile Include="NullValueHandling.cs" />
-    <Compile Include="ReferenceLoopHandling.cs" />
-    <Compile Include="Schema\JsonSchema.cs" />
-    <Compile Include="Schema\JsonSchemaBuilder.cs" />
-    <Compile Include="Schema\JsonSchemaConstants.cs" />
-    <Compile Include="Schema\JsonSchemaGenerator.cs" />
-    <Compile Include="Serialization\IReferenceResolver.cs" />
-    <Compile Include="Schema\JsonSchemaType.cs" />
-    <Compile Include="Serialization\JsonObjectContract.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
-    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
-    <Compile Include="Serialization\JsonSerializerProxy.cs" />
-    <Compile Include="Serialization\JsonStringContract.cs" />
-    <Compile Include="Serialization\JsonTypeReflector.cs" />
-    <Compile Include="Serialization\CachedAttributeGetter.cs" />
-    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
-    <Compile Include="Serialization\ReflectionValueProvider.cs" />
-    <Compile Include="Serialization\OnErrorAttribute.cs" />
-    <Compile Include="Utilities\Base64Encoder.cs" />
-    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
-    <Compile Include="Utilities\DynamicUtils.cs" />
-    <Compile Include="Utilities\DynamicWrapper.cs" />
-    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
-    <Compile Include="Serialization\ObjectConstructor.cs" />
-    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
-    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
-    <Compile Include="Utilities\MethodCall.cs" />
-    <Compile Include="Utilities\StringReference.cs" />
-    <Compile Include="Utilities\ThreadSafeStore.cs" />
-    <Compile Include="TypeNameHandling.cs" />
-    <Compile Include="Utilities\BidirectionalDictionary.cs" />
-    <Compile Include="Utilities\ConvertUtils.cs" />
-    <Compile Include="Utilities\CollectionWrapper.cs" />
-    <Compile Include="Utilities\DateTimeUtils.cs" />
-    <Compile Include="Utilities\DictionaryWrapper.cs" />
-    <Compile Include="Utilities\EnumUtils.cs" />
-    <Compile Include="Utilities\EnumValue.cs" />
-    <Compile Include="Utilities\EnumValues.cs" />
-    <Compile Include="Utilities\JavaScriptUtils.cs" />
-    <Compile Include="JsonToken.cs" />
-    <Compile Include="JsonWriter.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Utilities\StringBuffer.cs" />
-    <Compile Include="Utilities\CollectionUtils.cs" />
-    <Compile Include="Utilities\ListWrapper.cs" />
-    <Compile Include="Utilities\MathUtils.cs" />
-    <Compile Include="Utilities\MiscellaneousUtils.cs" />
-    <Compile Include="Utilities\ReflectionUtils.cs" />
-    <Compile Include="Utilities\StringUtils.cs" />
-    <Compile Include="Utilities\TypeExtensions.cs" />
-    <Compile Include="Utilities\ValidationUtils.cs" />
-    <Compile Include="WriteState.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Dynamic.snk" />
-  </ItemGroup>
-  <ItemGroup />
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A9AE40FF-1A21-414A-9FE7-3BE13644CC6D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Newtonsoft.Json</RootNamespace>
+    <AssemblyName>Newtonsoft.Json</AssemblyName>
+    <SignAssembly>false</SignAssembly>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\Net\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Debug\Net\Newtonsoft.Json.xml</DocumentationFile>
+    <RunCodeAnalysis>true</RunCodeAnalysis>
+    <CodeAnalysisRules>
+    </CodeAnalysisRules>
+    <CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\Net\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\Net\Newtonsoft.Json.xml</DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Bson\BsonBinaryType.cs" />
+    <Compile Include="Bson\BsonBinaryWriter.cs" />
+    <Compile Include="Bson\BsonReader.cs" />
+    <Compile Include="Bson\BsonToken.cs" />
+    <Compile Include="Bson\BsonType.cs" />
+    <Compile Include="Bson\BsonWriter.cs" />
+    <Compile Include="Bson\BsonObjectId.cs" />
+    <Compile Include="Converters\BinaryConverter.cs" />
+    <Compile Include="Converters\DataSetConverter.cs" />
+    <Compile Include="Converters\DataTableConverter.cs" />
+    <Compile Include="Converters\CustomCreationConverter.cs" />
+    <Compile Include="Converters\DateTimeConverterBase.cs" />
+    <Compile Include="Converters\EntityKeyMemberConverter.cs" />
+    <Compile Include="Converters\ExpandoObjectConverter.cs" />
+    <Compile Include="Converters\KeyValuePairConverter.cs" />
+    <Compile Include="Converters\BsonObjectIdConverter.cs" />
+    <Compile Include="Converters\RegexConverter.cs" />
+    <Compile Include="Converters\StringEnumConverter.cs" />
+    <Compile Include="ConstructorHandling.cs" />
+    <Compile Include="Converters\VersionConverter.cs" />
+    <Compile Include="DateFormatHandling.cs" />
+    <Compile Include="DateTimeZoneHandling.cs" />
+    <Compile Include="Formatting.cs" />
+    <Compile Include="JsonConstructorAttribute.cs" />
+    <Compile Include="JsonPosition.cs" />
+    <Compile Include="Linq\JPropertyKeyedCollection.cs" />
+    <Compile Include="Utilities\DynamicProxy.cs" />
+    <Compile Include="Linq\JPath.cs" />
+    <Compile Include="Linq\JRaw.cs" />
+    <Compile Include="Required.cs" />
+    <Compile Include="Serialization\JsonDynamicContract.cs" />
+    <Compile Include="Serialization\JsonFormatterConverter.cs" />
+    <Compile Include="Serialization\JsonISerializableContract.cs" />
+    <Compile Include="Serialization\JsonLinqContract.cs" />
+    <Compile Include="Serialization\JsonPrimitiveContract.cs" />
+    <Compile Include="Serialization\DynamicValueProvider.cs" />
+    <Compile Include="Serialization\ErrorEventArgs.cs" />
+    <Compile Include="Linq\JPropertyDescriptor.cs" />
+    <Compile Include="Serialization\DefaultReferenceResolver.cs" />
+    <Compile Include="PreserveReferencesHandling.cs" />
+    <Compile Include="IJsonLineInfo.cs" />
+    <Compile Include="JsonArrayAttribute.cs" />
+    <Compile Include="JsonContainerAttribute.cs" />
+    <Compile Include="DefaultValueHandling.cs" />
+    <Compile Include="JsonConverterAttribute.cs" />
+    <Compile Include="JsonObjectAttribute.cs" />
+    <Compile Include="JsonSerializerSettings.cs" />
+    <Compile Include="JsonValidatingReader.cs" />
+    <Compile Include="Linq\IJEnumerable.cs" />
+    <Compile Include="Linq\JTokenEqualityComparer.cs" />
+    <Compile Include="MemberSerialization.cs" />
+    <Compile Include="ObjectCreationHandling.cs" />
+    <Compile Include="Converters\IsoDateTimeConverter.cs" />
+    <Compile Include="Converters\JavaScriptDateTimeConverter.cs" />
+    <Compile Include="Converters\XmlNodeConverter.cs" />
+    <Compile Include="JsonTextReader.cs" />
+    <Compile Include="JsonPropertyAttribute.cs" />
+    <Compile Include="JsonIgnoreAttribute.cs" />
+    <Compile Include="JsonTextWriter.cs" />
+    <Compile Include="JsonWriterException.cs" />
+    <Compile Include="JsonReaderException.cs" />
+    <Compile Include="JsonConverter.cs" />
+    <Compile Include="JsonConverterCollection.cs" />
+    <Compile Include="JsonReader.cs" />
+    <Compile Include="JsonConvert.cs" />
+    <Compile Include="JsonSerializationException.cs" />
+    <Compile Include="JsonSerializer.cs" />
+    <Compile Include="Linq\Extensions.cs" />
+    <Compile Include="Linq\JConstructor.cs" />
+    <Compile Include="Linq\JContainer.cs" />
+    <Compile Include="Linq\JEnumerable.cs" />
+    <Compile Include="Linq\JObject.cs" />
+    <Compile Include="Linq\JArray.cs" />
+    <Compile Include="Linq\JTokenReader.cs" />
+    <Compile Include="Linq\JTokenWriter.cs" />
+    <Compile Include="Linq\JToken.cs" />
+    <Compile Include="Linq\JProperty.cs" />
+    <Compile Include="Linq\JTokenType.cs" />
+    <Compile Include="Linq\JValue.cs" />
+    <Compile Include="Schema\Extensions.cs" />
+    <Compile Include="Schema\JsonSchemaException.cs" />
+    <Compile Include="Schema\JsonSchemaModel.cs" />
+    <Compile Include="Schema\JsonSchemaModelBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaNodeCollection.cs" />
+    <Compile Include="Schema\JsonSchemaNode.cs" />
+    <Compile Include="Schema\JsonSchemaResolver.cs" />
+    <Compile Include="Schema\JsonSchemaWriter.cs" />
+    <Compile Include="Schema\UndefinedSchemaIdHandling.cs" />
+    <Compile Include="Schema\ValidationEventArgs.cs" />
+    <Compile Include="Schema\ValidationEventHandler.cs" />
+    <Compile Include="Serialization\CamelCasePropertyNamesContractResolver.cs" />
+    <Compile Include="Serialization\DefaultContractResolver.cs" />
+    <Compile Include="Serialization\DefaultSerializationBinder.cs" />
+    <Compile Include="Serialization\ErrorContext.cs" />
+    <Compile Include="Serialization\IContractResolver.cs" />
+    <Compile Include="Serialization\IValueProvider.cs" />
+    <Compile Include="Serialization\JsonArrayContract.cs" />
+    <Compile Include="Serialization\JsonContract.cs" />
+    <Compile Include="Serialization\JsonDictionaryContract.cs" />
+    <Compile Include="Serialization\JsonProperty.cs" />
+    <Compile Include="Serialization\JsonPropertyCollection.cs" />
+    <Compile Include="MissingMemberHandling.cs" />
+    <Compile Include="NullValueHandling.cs" />
+    <Compile Include="ReferenceLoopHandling.cs" />
+    <Compile Include="Schema\JsonSchema.cs" />
+    <Compile Include="Schema\JsonSchemaBuilder.cs" />
+    <Compile Include="Schema\JsonSchemaConstants.cs" />
+    <Compile Include="Schema\JsonSchemaGenerator.cs" />
+    <Compile Include="Serialization\IReferenceResolver.cs" />
+    <Compile Include="Schema\JsonSchemaType.cs" />
+    <Compile Include="Serialization\JsonObjectContract.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalBase.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalReader.cs" />
+    <Compile Include="Serialization\JsonSerializerInternalWriter.cs" />
+    <Compile Include="Serialization\JsonSerializerProxy.cs" />
+    <Compile Include="Serialization\JsonStringContract.cs" />
+    <Compile Include="Serialization\JsonTypeReflector.cs" />
+    <Compile Include="Serialization\CachedAttributeGetter.cs" />
+    <Compile Include="Serialization\LateBoundMetadataTypeAttribute.cs" />
+    <Compile Include="Serialization\ReflectionValueProvider.cs" />
+    <Compile Include="Serialization\OnErrorAttribute.cs" />
+    <Compile Include="Utilities\Base64Encoder.cs" />
+    <Compile Include="Utilities\DynamicProxyMetaObject.cs" />
+    <Compile Include="Utilities\DynamicUtils.cs" />
+    <Compile Include="Utilities\DynamicWrapper.cs" />
+    <Compile Include="Utilities\DynamicReflectionDelegateFactory.cs" />
+    <Compile Include="Serialization\ObjectConstructor.cs" />
+    <Compile Include="Utilities\ILGeneratorExtensions.cs" />
+    <Compile Include="Utilities\ReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\LateBoundReflectionDelegateFactory.cs" />
+    <Compile Include="Utilities\MethodCall.cs" />
+    <Compile Include="Utilities\StringReference.cs" />
+    <Compile Include="Utilities\ThreadSafeStore.cs" />
+    <Compile Include="TypeNameHandling.cs" />
+    <Compile Include="Utilities\BidirectionalDictionary.cs" />
+    <Compile Include="Utilities\ConvertUtils.cs" />
+    <Compile Include="Utilities\CollectionWrapper.cs" />
+    <Compile Include="Utilities\DateTimeUtils.cs" />
+    <Compile Include="Utilities\DictionaryWrapper.cs" />
+    <Compile Include="Utilities\EnumUtils.cs" />
+    <Compile Include="Utilities\EnumValue.cs" />
+    <Compile Include="Utilities\EnumValues.cs" />
+    <Compile Include="Utilities\JavaScriptUtils.cs" />
+    <Compile Include="JsonToken.cs" />
+    <Compile Include="JsonWriter.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Utilities\StringBuffer.cs" />
+    <Compile Include="Utilities\CollectionUtils.cs" />
+    <Compile Include="Utilities\ListWrapper.cs" />
+    <Compile Include="Utilities\MathUtils.cs" />
+    <Compile Include="Utilities\MiscellaneousUtils.cs" />
+    <Compile Include="Utilities\ReflectionUtils.cs" />
+    <Compile Include="Utilities\StringUtils.cs" />
+    <Compile Include="Utilities\TypeExtensions.cs" />
+    <Compile Include="Utilities\ValidationUtils.cs" />
+    <Compile Include="WriteState.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Dynamic.snk" />
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.ruleset
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Newtonsoft.Json.ruleset
@@ -1,234 +1,234 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<RuleSet Name="Newtonsoft.Json.ruleset" ToolsVersion="10.0">
-  <IncludeAll Action="Warning" />
-  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
-    <Rule Id="CA1000" Action="None" />
-    <Rule Id="CA1001" Action="None" />
-    <Rule Id="CA1002" Action="None" />
-    <Rule Id="CA1003" Action="None" />
-    <Rule Id="CA1004" Action="None" />
-    <Rule Id="CA1005" Action="None" />
-    <Rule Id="CA1006" Action="None" />
-    <Rule Id="CA1007" Action="None" />
-    <Rule Id="CA1008" Action="None" />
-    <Rule Id="CA1009" Action="None" />
-    <Rule Id="CA1010" Action="None" />
-    <Rule Id="CA1011" Action="None" />
-    <Rule Id="CA1012" Action="None" />
-    <Rule Id="CA1013" Action="None" />
-    <Rule Id="CA1014" Action="None" />
-    <Rule Id="CA1016" Action="None" />
-    <Rule Id="CA1017" Action="None" />
-    <Rule Id="CA1018" Action="None" />
-    <Rule Id="CA1019" Action="None" />
-    <Rule Id="CA1020" Action="None" />
-    <Rule Id="CA1021" Action="None" />
-    <Rule Id="CA1023" Action="None" />
-    <Rule Id="CA1024" Action="None" />
-    <Rule Id="CA1025" Action="None" />
-    <Rule Id="CA1026" Action="None" />
-    <Rule Id="CA1027" Action="None" />
-    <Rule Id="CA1028" Action="None" />
-    <Rule Id="CA1030" Action="None" />
-    <Rule Id="CA1031" Action="None" />
-    <Rule Id="CA1032" Action="None" />
-    <Rule Id="CA1033" Action="None" />
-    <Rule Id="CA1034" Action="None" />
-    <Rule Id="CA1035" Action="None" />
-    <Rule Id="CA1036" Action="None" />
-    <Rule Id="CA1038" Action="None" />
-    <Rule Id="CA1039" Action="None" />
-    <Rule Id="CA1040" Action="None" />
-    <Rule Id="CA1041" Action="None" />
-    <Rule Id="CA1043" Action="None" />
-    <Rule Id="CA1044" Action="None" />
-    <Rule Id="CA1045" Action="None" />
-    <Rule Id="CA1046" Action="None" />
-    <Rule Id="CA1047" Action="None" />
-    <Rule Id="CA1048" Action="None" />
-    <Rule Id="CA1049" Action="None" />
-    <Rule Id="CA1050" Action="None" />
-    <Rule Id="CA1051" Action="None" />
-    <Rule Id="CA1052" Action="None" />
-    <Rule Id="CA1053" Action="None" />
-    <Rule Id="CA1054" Action="None" />
-    <Rule Id="CA1055" Action="None" />
-    <Rule Id="CA1056" Action="None" />
-    <Rule Id="CA1057" Action="None" />
-    <Rule Id="CA1058" Action="None" />
-    <Rule Id="CA1059" Action="None" />
-    <Rule Id="CA1060" Action="None" />
-    <Rule Id="CA1061" Action="None" />
-    <Rule Id="CA1062" Action="None" />
-    <Rule Id="CA1063" Action="None" />
-    <Rule Id="CA1064" Action="None" />
-    <Rule Id="CA1065" Action="None" />
-    <Rule Id="CA1300" Action="None" />
-    <Rule Id="CA1301" Action="None" />
-    <Rule Id="CA1302" Action="None" />
-    <Rule Id="CA1303" Action="None" />
-    <Rule Id="CA1306" Action="None" />
-    <Rule Id="CA1307" Action="None" />
-    <Rule Id="CA1308" Action="None" />
-    <Rule Id="CA1309" Action="None" />
-    <Rule Id="CA1400" Action="None" />
-    <Rule Id="CA1401" Action="None" />
-    <Rule Id="CA1402" Action="None" />
-    <Rule Id="CA1403" Action="None" />
-    <Rule Id="CA1404" Action="None" />
-    <Rule Id="CA1405" Action="None" />
-    <Rule Id="CA1406" Action="None" />
-    <Rule Id="CA1407" Action="None" />
-    <Rule Id="CA1408" Action="None" />
-    <Rule Id="CA1409" Action="None" />
-    <Rule Id="CA1410" Action="None" />
-    <Rule Id="CA1411" Action="None" />
-    <Rule Id="CA1412" Action="None" />
-    <Rule Id="CA1413" Action="None" />
-    <Rule Id="CA1414" Action="None" />
-    <Rule Id="CA1415" Action="None" />
-    <Rule Id="CA1500" Action="None" />
-    <Rule Id="CA1501" Action="None" />
-    <Rule Id="CA1502" Action="None" />
-    <Rule Id="CA1504" Action="None" />
-    <Rule Id="CA1505" Action="None" />
-    <Rule Id="CA1506" Action="None" />
-    <Rule Id="CA1600" Action="None" />
-    <Rule Id="CA1601" Action="None" />
-    <Rule Id="CA1700" Action="None" />
-    <Rule Id="CA1701" Action="None" />
-    <Rule Id="CA1702" Action="None" />
-    <Rule Id="CA1703" Action="None" />
-    <Rule Id="CA1704" Action="None" />
-    <Rule Id="CA1707" Action="None" />
-    <Rule Id="CA1708" Action="None" />
-    <Rule Id="CA1709" Action="None" />
-    <Rule Id="CA1710" Action="None" />
-    <Rule Id="CA1711" Action="None" />
-    <Rule Id="CA1712" Action="None" />
-    <Rule Id="CA1713" Action="None" />
-    <Rule Id="CA1714" Action="None" />
-    <Rule Id="CA1715" Action="None" />
-    <Rule Id="CA1716" Action="None" />
-    <Rule Id="CA1717" Action="None" />
-    <Rule Id="CA1719" Action="None" />
-    <Rule Id="CA1720" Action="None" />
-    <Rule Id="CA1721" Action="None" />
-    <Rule Id="CA1722" Action="None" />
-    <Rule Id="CA1724" Action="None" />
-    <Rule Id="CA1725" Action="None" />
-    <Rule Id="CA1726" Action="None" />
-    <Rule Id="CA1800" Action="None" />
-    <Rule Id="CA1801" Action="None" />
-    <Rule Id="CA1802" Action="None" />
-    <Rule Id="CA1804" Action="None" />
-    <Rule Id="CA1806" Action="None" />
-    <Rule Id="CA1809" Action="None" />
-    <Rule Id="CA1810" Action="None" />
-    <Rule Id="CA1811" Action="None" />
-    <Rule Id="CA1812" Action="None" />
-    <Rule Id="CA1813" Action="None" />
-    <Rule Id="CA1814" Action="None" />
-    <Rule Id="CA1815" Action="None" />
-    <Rule Id="CA1816" Action="None" />
-    <Rule Id="CA1819" Action="None" />
-    <Rule Id="CA1820" Action="None" />
-    <Rule Id="CA1821" Action="None" />
-    <Rule Id="CA1822" Action="None" />
-    <Rule Id="CA1823" Action="None" />
-    <Rule Id="CA1824" Action="None" />
-    <Rule Id="CA1900" Action="None" />
-    <Rule Id="CA1901" Action="None" />
-    <Rule Id="CA1903" Action="Error" />
-    <Rule Id="CA2000" Action="None" />
-    <Rule Id="CA2001" Action="None" />
-    <Rule Id="CA2002" Action="None" />
-    <Rule Id="CA2003" Action="None" />
-    <Rule Id="CA2004" Action="None" />
-    <Rule Id="CA2006" Action="None" />
-    <Rule Id="CA2100" Action="None" />
-    <Rule Id="CA2101" Action="None" />
-    <Rule Id="CA2102" Action="None" />
-    <Rule Id="CA2103" Action="None" />
-    <Rule Id="CA2104" Action="None" />
-    <Rule Id="CA2105" Action="None" />
-    <Rule Id="CA2106" Action="None" />
-    <Rule Id="CA2107" Action="None" />
-    <Rule Id="CA2108" Action="None" />
-    <Rule Id="CA2109" Action="None" />
-    <Rule Id="CA2111" Action="None" />
-    <Rule Id="CA2112" Action="None" />
-    <Rule Id="CA2114" Action="None" />
-    <Rule Id="CA2115" Action="None" />
-    <Rule Id="CA2116" Action="None" />
-    <Rule Id="CA2117" Action="None" />
-    <Rule Id="CA2118" Action="None" />
-    <Rule Id="CA2119" Action="None" />
-    <Rule Id="CA2120" Action="None" />
-    <Rule Id="CA2121" Action="None" />
-    <Rule Id="CA2122" Action="None" />
-    <Rule Id="CA2123" Action="None" />
-    <Rule Id="CA2124" Action="None" />
-    <Rule Id="CA2126" Action="None" />
-    <Rule Id="CA2130" Action="None" />
-    <Rule Id="CA2131" Action="None" />
-    <Rule Id="CA2132" Action="None" />
-    <Rule Id="CA2133" Action="None" />
-    <Rule Id="CA2134" Action="None" />
-    <Rule Id="CA2135" Action="None" />
-    <Rule Id="CA2136" Action="None" />
-    <Rule Id="CA2137" Action="None" />
-    <Rule Id="CA2138" Action="None" />
-    <Rule Id="CA2139" Action="None" />
-    <Rule Id="CA2140" Action="None" />
-    <Rule Id="CA2141" Action="None" />
-    <Rule Id="CA2142" Action="None" />
-    <Rule Id="CA2143" Action="None" />
-    <Rule Id="CA2144" Action="None" />
-    <Rule Id="CA2145" Action="None" />
-    <Rule Id="CA2146" Action="None" />
-    <Rule Id="CA2147" Action="None" />
-    <Rule Id="CA2149" Action="None" />
-    <Rule Id="CA2200" Action="None" />
-    <Rule Id="CA2201" Action="None" />
-    <Rule Id="CA2202" Action="None" />
-    <Rule Id="CA2204" Action="None" />
-    <Rule Id="CA2205" Action="None" />
-    <Rule Id="CA2207" Action="None" />
-    <Rule Id="CA2208" Action="None" />
-    <Rule Id="CA2210" Action="None" />
-    <Rule Id="CA2211" Action="None" />
-    <Rule Id="CA2212" Action="None" />
-    <Rule Id="CA2213" Action="None" />
-    <Rule Id="CA2214" Action="None" />
-    <Rule Id="CA2215" Action="None" />
-    <Rule Id="CA2216" Action="None" />
-    <Rule Id="CA2217" Action="None" />
-    <Rule Id="CA2218" Action="None" />
-    <Rule Id="CA2219" Action="None" />
-    <Rule Id="CA2220" Action="None" />
-    <Rule Id="CA2221" Action="None" />
-    <Rule Id="CA2222" Action="None" />
-    <Rule Id="CA2223" Action="None" />
-    <Rule Id="CA2224" Action="None" />
-    <Rule Id="CA2225" Action="None" />
-    <Rule Id="CA2226" Action="None" />
-    <Rule Id="CA2227" Action="None" />
-    <Rule Id="CA2228" Action="None" />
-    <Rule Id="CA2229" Action="None" />
-    <Rule Id="CA2230" Action="None" />
-    <Rule Id="CA2231" Action="None" />
-    <Rule Id="CA2232" Action="None" />
-    <Rule Id="CA2233" Action="None" />
-    <Rule Id="CA2234" Action="None" />
-    <Rule Id="CA2235" Action="None" />
-    <Rule Id="CA2236" Action="None" />
-    <Rule Id="CA2237" Action="None" />
-    <Rule Id="CA2238" Action="None" />
-    <Rule Id="CA2239" Action="None" />
-    <Rule Id="CA2240" Action="None" />
-    <Rule Id="CA2241" Action="None" />
-    <Rule Id="CA2242" Action="None" />
-    <Rule Id="CA2243" Action="None" />
-  </Rules>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<RuleSet Name="Newtonsoft.Json.ruleset" ToolsVersion="10.0">
+  <IncludeAll Action="Warning" />
+  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
+    <Rule Id="CA1000" Action="None" />
+    <Rule Id="CA1001" Action="None" />
+    <Rule Id="CA1002" Action="None" />
+    <Rule Id="CA1003" Action="None" />
+    <Rule Id="CA1004" Action="None" />
+    <Rule Id="CA1005" Action="None" />
+    <Rule Id="CA1006" Action="None" />
+    <Rule Id="CA1007" Action="None" />
+    <Rule Id="CA1008" Action="None" />
+    <Rule Id="CA1009" Action="None" />
+    <Rule Id="CA1010" Action="None" />
+    <Rule Id="CA1011" Action="None" />
+    <Rule Id="CA1012" Action="None" />
+    <Rule Id="CA1013" Action="None" />
+    <Rule Id="CA1014" Action="None" />
+    <Rule Id="CA1016" Action="None" />
+    <Rule Id="CA1017" Action="None" />
+    <Rule Id="CA1018" Action="None" />
+    <Rule Id="CA1019" Action="None" />
+    <Rule Id="CA1020" Action="None" />
+    <Rule Id="CA1021" Action="None" />
+    <Rule Id="CA1023" Action="None" />
+    <Rule Id="CA1024" Action="None" />
+    <Rule Id="CA1025" Action="None" />
+    <Rule Id="CA1026" Action="None" />
+    <Rule Id="CA1027" Action="None" />
+    <Rule Id="CA1028" Action="None" />
+    <Rule Id="CA1030" Action="None" />
+    <Rule Id="CA1031" Action="None" />
+    <Rule Id="CA1032" Action="None" />
+    <Rule Id="CA1033" Action="None" />
+    <Rule Id="CA1034" Action="None" />
+    <Rule Id="CA1035" Action="None" />
+    <Rule Id="CA1036" Action="None" />
+    <Rule Id="CA1038" Action="None" />
+    <Rule Id="CA1039" Action="None" />
+    <Rule Id="CA1040" Action="None" />
+    <Rule Id="CA1041" Action="None" />
+    <Rule Id="CA1043" Action="None" />
+    <Rule Id="CA1044" Action="None" />
+    <Rule Id="CA1045" Action="None" />
+    <Rule Id="CA1046" Action="None" />
+    <Rule Id="CA1047" Action="None" />
+    <Rule Id="CA1048" Action="None" />
+    <Rule Id="CA1049" Action="None" />
+    <Rule Id="CA1050" Action="None" />
+    <Rule Id="CA1051" Action="None" />
+    <Rule Id="CA1052" Action="None" />
+    <Rule Id="CA1053" Action="None" />
+    <Rule Id="CA1054" Action="None" />
+    <Rule Id="CA1055" Action="None" />
+    <Rule Id="CA1056" Action="None" />
+    <Rule Id="CA1057" Action="None" />
+    <Rule Id="CA1058" Action="None" />
+    <Rule Id="CA1059" Action="None" />
+    <Rule Id="CA1060" Action="None" />
+    <Rule Id="CA1061" Action="None" />
+    <Rule Id="CA1062" Action="None" />
+    <Rule Id="CA1063" Action="None" />
+    <Rule Id="CA1064" Action="None" />
+    <Rule Id="CA1065" Action="None" />
+    <Rule Id="CA1300" Action="None" />
+    <Rule Id="CA1301" Action="None" />
+    <Rule Id="CA1302" Action="None" />
+    <Rule Id="CA1303" Action="None" />
+    <Rule Id="CA1306" Action="None" />
+    <Rule Id="CA1307" Action="None" />
+    <Rule Id="CA1308" Action="None" />
+    <Rule Id="CA1309" Action="None" />
+    <Rule Id="CA1400" Action="None" />
+    <Rule Id="CA1401" Action="None" />
+    <Rule Id="CA1402" Action="None" />
+    <Rule Id="CA1403" Action="None" />
+    <Rule Id="CA1404" Action="None" />
+    <Rule Id="CA1405" Action="None" />
+    <Rule Id="CA1406" Action="None" />
+    <Rule Id="CA1407" Action="None" />
+    <Rule Id="CA1408" Action="None" />
+    <Rule Id="CA1409" Action="None" />
+    <Rule Id="CA1410" Action="None" />
+    <Rule Id="CA1411" Action="None" />
+    <Rule Id="CA1412" Action="None" />
+    <Rule Id="CA1413" Action="None" />
+    <Rule Id="CA1414" Action="None" />
+    <Rule Id="CA1415" Action="None" />
+    <Rule Id="CA1500" Action="None" />
+    <Rule Id="CA1501" Action="None" />
+    <Rule Id="CA1502" Action="None" />
+    <Rule Id="CA1504" Action="None" />
+    <Rule Id="CA1505" Action="None" />
+    <Rule Id="CA1506" Action="None" />
+    <Rule Id="CA1600" Action="None" />
+    <Rule Id="CA1601" Action="None" />
+    <Rule Id="CA1700" Action="None" />
+    <Rule Id="CA1701" Action="None" />
+    <Rule Id="CA1702" Action="None" />
+    <Rule Id="CA1703" Action="None" />
+    <Rule Id="CA1704" Action="None" />
+    <Rule Id="CA1707" Action="None" />
+    <Rule Id="CA1708" Action="None" />
+    <Rule Id="CA1709" Action="None" />
+    <Rule Id="CA1710" Action="None" />
+    <Rule Id="CA1711" Action="None" />
+    <Rule Id="CA1712" Action="None" />
+    <Rule Id="CA1713" Action="None" />
+    <Rule Id="CA1714" Action="None" />
+    <Rule Id="CA1715" Action="None" />
+    <Rule Id="CA1716" Action="None" />
+    <Rule Id="CA1717" Action="None" />
+    <Rule Id="CA1719" Action="None" />
+    <Rule Id="CA1720" Action="None" />
+    <Rule Id="CA1721" Action="None" />
+    <Rule Id="CA1722" Action="None" />
+    <Rule Id="CA1724" Action="None" />
+    <Rule Id="CA1725" Action="None" />
+    <Rule Id="CA1726" Action="None" />
+    <Rule Id="CA1800" Action="None" />
+    <Rule Id="CA1801" Action="None" />
+    <Rule Id="CA1802" Action="None" />
+    <Rule Id="CA1804" Action="None" />
+    <Rule Id="CA1806" Action="None" />
+    <Rule Id="CA1809" Action="None" />
+    <Rule Id="CA1810" Action="None" />
+    <Rule Id="CA1811" Action="None" />
+    <Rule Id="CA1812" Action="None" />
+    <Rule Id="CA1813" Action="None" />
+    <Rule Id="CA1814" Action="None" />
+    <Rule Id="CA1815" Action="None" />
+    <Rule Id="CA1816" Action="None" />
+    <Rule Id="CA1819" Action="None" />
+    <Rule Id="CA1820" Action="None" />
+    <Rule Id="CA1821" Action="None" />
+    <Rule Id="CA1822" Action="None" />
+    <Rule Id="CA1823" Action="None" />
+    <Rule Id="CA1824" Action="None" />
+    <Rule Id="CA1900" Action="None" />
+    <Rule Id="CA1901" Action="None" />
+    <Rule Id="CA1903" Action="Error" />
+    <Rule Id="CA2000" Action="None" />
+    <Rule Id="CA2001" Action="None" />
+    <Rule Id="CA2002" Action="None" />
+    <Rule Id="CA2003" Action="None" />
+    <Rule Id="CA2004" Action="None" />
+    <Rule Id="CA2006" Action="None" />
+    <Rule Id="CA2100" Action="None" />
+    <Rule Id="CA2101" Action="None" />
+    <Rule Id="CA2102" Action="None" />
+    <Rule Id="CA2103" Action="None" />
+    <Rule Id="CA2104" Action="None" />
+    <Rule Id="CA2105" Action="None" />
+    <Rule Id="CA2106" Action="None" />
+    <Rule Id="CA2107" Action="None" />
+    <Rule Id="CA2108" Action="None" />
+    <Rule Id="CA2109" Action="None" />
+    <Rule Id="CA2111" Action="None" />
+    <Rule Id="CA2112" Action="None" />
+    <Rule Id="CA2114" Action="None" />
+    <Rule Id="CA2115" Action="None" />
+    <Rule Id="CA2116" Action="None" />
+    <Rule Id="CA2117" Action="None" />
+    <Rule Id="CA2118" Action="None" />
+    <Rule Id="CA2119" Action="None" />
+    <Rule Id="CA2120" Action="None" />
+    <Rule Id="CA2121" Action="None" />
+    <Rule Id="CA2122" Action="None" />
+    <Rule Id="CA2123" Action="None" />
+    <Rule Id="CA2124" Action="None" />
+    <Rule Id="CA2126" Action="None" />
+    <Rule Id="CA2130" Action="None" />
+    <Rule Id="CA2131" Action="None" />
+    <Rule Id="CA2132" Action="None" />
+    <Rule Id="CA2133" Action="None" />
+    <Rule Id="CA2134" Action="None" />
+    <Rule Id="CA2135" Action="None" />
+    <Rule Id="CA2136" Action="None" />
+    <Rule Id="CA2137" Action="None" />
+    <Rule Id="CA2138" Action="None" />
+    <Rule Id="CA2139" Action="None" />
+    <Rule Id="CA2140" Action="None" />
+    <Rule Id="CA2141" Action="None" />
+    <Rule Id="CA2142" Action="None" />
+    <Rule Id="CA2143" Action="None" />
+    <Rule Id="CA2144" Action="None" />
+    <Rule Id="CA2145" Action="None" />
+    <Rule Id="CA2146" Action="None" />
+    <Rule Id="CA2147" Action="None" />
+    <Rule Id="CA2149" Action="None" />
+    <Rule Id="CA2200" Action="None" />
+    <Rule Id="CA2201" Action="None" />
+    <Rule Id="CA2202" Action="None" />
+    <Rule Id="CA2204" Action="None" />
+    <Rule Id="CA2205" Action="None" />
+    <Rule Id="CA2207" Action="None" />
+    <Rule Id="CA2208" Action="None" />
+    <Rule Id="CA2210" Action="None" />
+    <Rule Id="CA2211" Action="None" />
+    <Rule Id="CA2212" Action="None" />
+    <Rule Id="CA2213" Action="None" />
+    <Rule Id="CA2214" Action="None" />
+    <Rule Id="CA2215" Action="None" />
+    <Rule Id="CA2216" Action="None" />
+    <Rule Id="CA2217" Action="None" />
+    <Rule Id="CA2218" Action="None" />
+    <Rule Id="CA2219" Action="None" />
+    <Rule Id="CA2220" Action="None" />
+    <Rule Id="CA2221" Action="None" />
+    <Rule Id="CA2222" Action="None" />
+    <Rule Id="CA2223" Action="None" />
+    <Rule Id="CA2224" Action="None" />
+    <Rule Id="CA2225" Action="None" />
+    <Rule Id="CA2226" Action="None" />
+    <Rule Id="CA2227" Action="None" />
+    <Rule Id="CA2228" Action="None" />
+    <Rule Id="CA2229" Action="None" />
+    <Rule Id="CA2230" Action="None" />
+    <Rule Id="CA2231" Action="None" />
+    <Rule Id="CA2232" Action="None" />
+    <Rule Id="CA2233" Action="None" />
+    <Rule Id="CA2234" Action="None" />
+    <Rule Id="CA2235" Action="None" />
+    <Rule Id="CA2236" Action="None" />
+    <Rule Id="CA2237" Action="None" />
+    <Rule Id="CA2238" Action="None" />
+    <Rule Id="CA2239" Action="None" />
+    <Rule Id="CA2240" Action="None" />
+    <Rule Id="CA2241" Action="None" />
+    <Rule Id="CA2242" Action="None" />
+    <Rule Id="CA2243" Action="None" />
+  </Rules>
 </RuleSet>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/NullValueHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/NullValueHandling.cs
@@ -1,42 +1,42 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies null value handling options for the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public enum NullValueHandling
-  {
-    /// <summary>
-    /// Include null values when serializing and deserializing objects.
-    /// </summary>
-    Include = 0,
-    /// <summary>
-    /// Ignore null values when serializing and deserializing objects.
-    /// </summary>
-    Ignore = 1
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies null value handling options for the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public enum NullValueHandling
+  {
+    /// <summary>
+    /// Include null values when serializing and deserializing objects.
+    /// </summary>
+    Include = 0,
+    /// <summary>
+    /// Ignore null values when serializing and deserializing objects.
+    /// </summary>
+    Ignore = 1
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/ObjectCreationHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/ObjectCreationHandling.cs
@@ -1,46 +1,46 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies how object creation is handled by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public enum ObjectCreationHandling
-  {
-    /// <summary>
-    /// Reuse existing objects, create new objects when needed.
-    /// </summary>
-    Auto = 0,
-    /// <summary>
-    /// Only reuse existing objects.
-    /// </summary>
-    Reuse = 1,
-    /// <summary>
-    /// Always create new objects.
-    /// </summary>
-    Replace = 2
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies how object creation is handled by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public enum ObjectCreationHandling
+  {
+    /// <summary>
+    /// Reuse existing objects, create new objects when needed.
+    /// </summary>
+    Auto = 0,
+    /// <summary>
+    /// Only reuse existing objects.
+    /// </summary>
+    Reuse = 1,
+    /// <summary>
+    /// Always create new objects.
+    /// </summary>
+    Replace = 2
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/PreserveReferencesHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/PreserveReferencesHandling.cs
@@ -1,55 +1,55 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies reference handling options for the <see cref="JsonSerializer"/>.
-  /// </summary>
-  [Flags]
-  public enum PreserveReferencesHandling
-  {
-    /// <summary>
-    /// Do not preserve references when serializing types.
-    /// </summary>
-    None = 0,
-    /// <summary>
-    /// Preserve references when serializing into a JSON object structure.
-    /// </summary>
-    Objects = 1,
-    /// <summary>
-    /// Preserve references when serializing into a JSON array structure.
-    /// </summary>
-    Arrays = 2,
-    /// <summary>
-    /// Preserve references when serializing.
-    /// </summary>
-    All = Objects | Arrays
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies reference handling options for the <see cref="JsonSerializer"/>.
+  /// </summary>
+  [Flags]
+  public enum PreserveReferencesHandling
+  {
+    /// <summary>
+    /// Do not preserve references when serializing types.
+    /// </summary>
+    None = 0,
+    /// <summary>
+    /// Preserve references when serializing into a JSON object structure.
+    /// </summary>
+    Objects = 1,
+    /// <summary>
+    /// Preserve references when serializing into a JSON array structure.
+    /// </summary>
+    Arrays = 2,
+    /// <summary>
+    /// Preserve references when serializing.
+    /// </summary>
+    All = Objects | Arrays
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
@@ -1,94 +1,94 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-#if WINDOWS_PHONE
-[assembly: AssemblyTitle("Json.NET Windows Phone")]
-#elif SILVERLIGHT
-[assembly: AssemblyTitle("Json.NET Silverlight")]
-#elif PocketPC
-[assembly: AssemblyTitle("Json.NET Compact")]
-#elif NETFX_CORE
-[assembly: AssemblyTitle("Json.NET Metro")]
-[assembly: AllowPartiallyTrustedCallers]
-#elif NET20
-[assembly: AssemblyTitle("Json.NET .NET 2.0")]
-[assembly: AllowPartiallyTrustedCallers]
-#elif NET35
-[assembly: AssemblyTitle("Json.NET .NET 3.5")]
-[assembly: AllowPartiallyTrustedCallers]
-#else
-[assembly: AssemblyTitle("Json.NET")]
-[assembly: AllowPartiallyTrustedCallers]
-#endif
-
-#if !SIGNED
-[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests")]
-#else
-[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f561df277c6c0b497d629032b410cdcf286e537c054724f7ffa0164345f62b3e642029d7a80cc351918955328c4adc8a048823ef90b0cf38ea7db0d729caf2b633c3babe08b0310198c1081995c19029bc675193744eab9d7345b8a67258ec17d112cebdbbb2a281487dceeafb9d83aa930f32103fbe1d2911425bc5744002c7")]
-#endif
-
-[assembly: InternalsVisibleTo("Newtonsoft.Json.Dynamic, PublicKey=0024000004800000940000000602000000240000525341310004000001000100cbd8d53b9d7de30f1f1278f636ec462cf9c254991291e66ebb157a885638a517887633b898ccbcf0d5c5ff7be85a6abe9e765d0ac7cd33c68dac67e7e64530e8222101109f154ab14a941c490ac155cd1d4fcba0fabb49016b4ef28593b015cab5937da31172f03f67d09edda404b88a60023f062ae71d0b2e4438b74cc11dc9")]
-
-[assembly: AssemblyDescription("Json.NET is a popular high-performance JSON framework for .NET")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Newtonsoft")]
-[assembly: AssemblyProduct("Json.NET")]
-[assembly: AssemblyCopyright("Copyright  James Newton-King 2008")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM componenets.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("9ca358aa-317b-4925-8ada-4a29e943a363")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("4.5.0.0")]
-#if !PocketPC
-[assembly: AssemblyFileVersion("4.5.1.14719")]
-#endif
-
-[assembly: CLSCompliant(true)]
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Security;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+#if WINDOWS_PHONE
+[assembly: AssemblyTitle("Json.NET Windows Phone")]
+#elif SILVERLIGHT
+[assembly: AssemblyTitle("Json.NET Silverlight")]
+#elif PocketPC
+[assembly: AssemblyTitle("Json.NET Compact")]
+#elif NETFX_CORE
+[assembly: AssemblyTitle("Json.NET Metro")]
+[assembly: AllowPartiallyTrustedCallers]
+#elif NET20
+[assembly: AssemblyTitle("Json.NET .NET 2.0")]
+[assembly: AllowPartiallyTrustedCallers]
+#elif NET35
+[assembly: AssemblyTitle("Json.NET .NET 3.5")]
+[assembly: AllowPartiallyTrustedCallers]
+#else
+[assembly: AssemblyTitle("Json.NET")]
+[assembly: AllowPartiallyTrustedCallers]
+#endif
+
+#if !SIGNED
+[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests")]
+#else
+[assembly: InternalsVisibleTo("Newtonsoft.Json.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f561df277c6c0b497d629032b410cdcf286e537c054724f7ffa0164345f62b3e642029d7a80cc351918955328c4adc8a048823ef90b0cf38ea7db0d729caf2b633c3babe08b0310198c1081995c19029bc675193744eab9d7345b8a67258ec17d112cebdbbb2a281487dceeafb9d83aa930f32103fbe1d2911425bc5744002c7")]
+#endif
+
+[assembly: InternalsVisibleTo("Newtonsoft.Json.Dynamic, PublicKey=0024000004800000940000000602000000240000525341310004000001000100cbd8d53b9d7de30f1f1278f636ec462cf9c254991291e66ebb157a885638a517887633b898ccbcf0d5c5ff7be85a6abe9e765d0ac7cd33c68dac67e7e64530e8222101109f154ab14a941c490ac155cd1d4fcba0fabb49016b4ef28593b015cab5937da31172f03f67d09edda404b88a60023f062ae71d0b2e4438b74cc11dc9")]
+
+[assembly: AssemblyDescription("Json.NET is a popular high-performance JSON framework for .NET")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Newtonsoft")]
+[assembly: AssemblyProduct("Json.NET")]
+[assembly: AssemblyCopyright("Copyright  James Newton-King 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM componenets.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9ca358aa-317b-4925-8ada-4a29e943a363")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("4.5.0.0")]
+#if !PocketPC
+[assembly: AssemblyFileVersion("4.5.1.14719")]
+#endif
+
+[assembly: CLSCompliant(true)]
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/ReferenceLoopHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/ReferenceLoopHandling.cs
@@ -1,50 +1,50 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies reference loop handling options for the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public enum ReferenceLoopHandling
-  {
-    /// <summary>
-    /// Throw a <see cref="JsonSerializationException"/> when a loop is encountered.
-    /// </summary>
-    Error = 0,
-    /// <summary>
-    /// Ignore loop references and do not serialize.
-    /// </summary>
-    Ignore = 1,
-    /// <summary>
-    /// Serialize loop references.
-    /// </summary>
-    Serialize = 2
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies reference loop handling options for the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public enum ReferenceLoopHandling
+  {
+    /// <summary>
+    /// Throw a <see cref="JsonSerializationException"/> when a loop is encountered.
+    /// </summary>
+    Error = 0,
+    /// <summary>
+    /// Ignore loop references and do not serialize.
+    /// </summary>
+    Ignore = 1,
+    /// <summary>
+    /// Serialize loop references.
+    /// </summary>
+    Serialize = 2
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Required.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Required.cs
@@ -1,21 +1,21 @@
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Indicating whether a property is required.
-  /// </summary>
-  public enum Required
-  {
-    /// <summary>
-    /// The property is not required. The default state.
-    /// </summary>
-    Default,
-    /// <summary>
-    /// The property must be defined in JSON but can be a null value.
-    /// </summary>
-    AllowNull,
-    /// <summary>
-    /// The property must be defined in JSON and cannot be a null value.
-    /// </summary>
-    Always
-  }
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Indicating whether a property is required.
+  /// </summary>
+  public enum Required
+  {
+    /// <summary>
+    /// The property is not required. The default state.
+    /// </summary>
+    Default,
+    /// <summary>
+    /// The property must be defined in JSON but can be a null value.
+    /// </summary>
+    AllowNull,
+    /// <summary>
+    /// The property must be defined in JSON and cannot be a null value.
+    /// </summary>
+    Always
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/Extensions.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/Extensions.cs
@@ -1,104 +1,104 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// Contains the JSON schema extension methods.
-  /// </summary>
-  public static class Extensions
-  {
-    /// <summary>
-    /// Determines whether the <see cref="JToken"/> is valid.
-    /// </summary>
-    /// <param name="source">The source <see cref="JToken"/> to test.</param>
-    /// <param name="schema">The schema to test with.</param>
-    /// <returns>
-    /// 	<c>true</c> if the specified <see cref="JToken"/> is valid; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool IsValid(this JToken source, JsonSchema schema)
-    {
-      bool valid = true;
-      source.Validate(schema, (sender, args) => { valid = false; });
-      return valid;
-    }
-
-    /// <summary>
-    /// Determines whether the <see cref="JToken"/> is valid.
-    /// </summary>
-    /// <param name="source">The source <see cref="JToken"/> to test.</param>
-    /// <param name="schema">The schema to test with.</param>
-    /// <param name="errorMessages">When this method returns, contains any error messages generated while validating. </param>
-    /// <returns>
-    /// 	<c>true</c> if the specified <see cref="JToken"/> is valid; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool IsValid(this JToken source, JsonSchema schema, out IList<string> errorMessages)
-    {
-      IList<string> errors = new List<string>();
-
-      source.Validate(schema, (sender, args) => errors.Add(args.Message));
-
-      errorMessages = errors;
-      return (errorMessages.Count == 0);
-    }
-
-    /// <summary>
-    /// Validates the specified <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="source">The source <see cref="JToken"/> to test.</param>
-    /// <param name="schema">The schema to test with.</param>
-    public static void Validate(this JToken source, JsonSchema schema)
-    {
-      source.Validate(schema, null);
-    }
-
-    /// <summary>
-    /// Validates the specified <see cref="JToken"/>.
-    /// </summary>
-    /// <param name="source">The source <see cref="JToken"/> to test.</param>
-    /// <param name="schema">The schema to test with.</param>
-    /// <param name="validationEventHandler">The validation event handler.</param>
-    public static void Validate(this JToken source, JsonSchema schema, ValidationEventHandler validationEventHandler)
-    {
-      ValidationUtils.ArgumentNotNull(source, "source");
-      ValidationUtils.ArgumentNotNull(schema, "schema");
-
-      using (JsonValidatingReader reader = new JsonValidatingReader(source.CreateReader()))
-      {
-        reader.Schema = schema;
-        if (validationEventHandler != null)
-          reader.ValidationEventHandler += validationEventHandler;
-
-        while (reader.Read())
-        {
-        }
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// Contains the JSON schema extension methods.
+  /// </summary>
+  public static class Extensions
+  {
+    /// <summary>
+    /// Determines whether the <see cref="JToken"/> is valid.
+    /// </summary>
+    /// <param name="source">The source <see cref="JToken"/> to test.</param>
+    /// <param name="schema">The schema to test with.</param>
+    /// <returns>
+    /// 	<c>true</c> if the specified <see cref="JToken"/> is valid; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool IsValid(this JToken source, JsonSchema schema)
+    {
+      bool valid = true;
+      source.Validate(schema, (sender, args) => { valid = false; });
+      return valid;
+    }
+
+    /// <summary>
+    /// Determines whether the <see cref="JToken"/> is valid.
+    /// </summary>
+    /// <param name="source">The source <see cref="JToken"/> to test.</param>
+    /// <param name="schema">The schema to test with.</param>
+    /// <param name="errorMessages">When this method returns, contains any error messages generated while validating. </param>
+    /// <returns>
+    /// 	<c>true</c> if the specified <see cref="JToken"/> is valid; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool IsValid(this JToken source, JsonSchema schema, out IList<string> errorMessages)
+    {
+      IList<string> errors = new List<string>();
+
+      source.Validate(schema, (sender, args) => errors.Add(args.Message));
+
+      errorMessages = errors;
+      return (errorMessages.Count == 0);
+    }
+
+    /// <summary>
+    /// Validates the specified <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="source">The source <see cref="JToken"/> to test.</param>
+    /// <param name="schema">The schema to test with.</param>
+    public static void Validate(this JToken source, JsonSchema schema)
+    {
+      source.Validate(schema, null);
+    }
+
+    /// <summary>
+    /// Validates the specified <see cref="JToken"/>.
+    /// </summary>
+    /// <param name="source">The source <see cref="JToken"/> to test.</param>
+    /// <param name="schema">The schema to test with.</param>
+    /// <param name="validationEventHandler">The validation event handler.</param>
+    public static void Validate(this JToken source, JsonSchema schema, ValidationEventHandler validationEventHandler)
+    {
+      ValidationUtils.ArgumentNotNull(source, "source");
+      ValidationUtils.ArgumentNotNull(schema, "schema");
+
+      using (JsonValidatingReader reader = new JsonValidatingReader(source.CreateReader()))
+      {
+        reader.Schema = schema;
+        if (validationEventHandler != null)
+          reader.ValidationEventHandler += validationEventHandler;
+
+        while (reader.Read())
+        {
+        }
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchema.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchema.cs
@@ -1,296 +1,296 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// An in-memory representation of a JSON Schema.
-  /// </summary>
-  public class JsonSchema
-  {
-    /// <summary>
-    /// Gets or sets the id.
-    /// </summary>
-    public string Id { get; set; }
-    /// <summary>
-    /// Gets or sets the title.
-    /// </summary>
-    public string Title { get; set; }
-    /// <summary>
-    /// Gets or sets whether the object is required.
-    /// </summary>
-    public bool? Required { get; set; }
-    /// <summary>
-    /// Gets or sets whether the object is read only.
-    /// </summary>
-    public bool? ReadOnly { get; set; }
-    /// <summary>
-    /// Gets or sets whether the object is visible to users.
-    /// </summary>
-    public bool? Hidden { get; set; }
-    /// <summary>
-    /// Gets or sets whether the object is transient.
-    /// </summary>
-    public bool? Transient { get; set; }
-    /// <summary>
-    /// Gets or sets the description of the object.
-    /// </summary>
-    public string Description { get; set; }
-    /// <summary>
-    /// Gets or sets the types of values allowed by the object.
-    /// </summary>
-    /// <value>The type.</value>
-    public JsonSchemaType? Type { get; set; }
-    /// <summary>
-    /// Gets or sets the pattern.
-    /// </summary>
-    /// <value>The pattern.</value>
-    public string Pattern { get; set; }
-    /// <summary>
-    /// Gets or sets the minimum length.
-    /// </summary>
-    /// <value>The minimum length.</value>
-    public int? MinimumLength { get; set; }
-    /// <summary>
-    /// Gets or sets the maximum length.
-    /// </summary>
-    /// <value>The maximum length.</value>
-    public int? MaximumLength { get; set; }
-    /// <summary>
-    /// Gets or sets a number that the value should be divisble by.
-    /// </summary>
-    /// <value>A number that the value should be divisble by.</value>
-    public double? DivisibleBy { get; set; }
-    /// <summary>
-    /// Gets or sets the minimum.
-    /// </summary>
-    /// <value>The minimum.</value>
-    public double? Minimum { get; set; }
-    /// <summary>
-    /// Gets or sets the maximum.
-    /// </summary>
-    /// <value>The maximum.</value>
-    public double? Maximum { get; set; }
-    /// <summary>
-    /// Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute.
-    /// </summary>
-    /// <value>A flag indicating whether the value can not equal the number defined by the "minimum" attribute.</value>
-    public bool? ExclusiveMinimum { get; set; }
-    /// <summary>
-    /// Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute.
-    /// </summary>
-    /// <value>A flag indicating whether the value can not equal the number defined by the "maximum" attribute.</value>
-    public bool? ExclusiveMaximum { get; set; }
-    /// <summary>
-    /// Gets or sets the minimum number of items.
-    /// </summary>
-    /// <value>The minimum number of items.</value>
-    public int? MinimumItems { get; set; }
-    /// <summary>
-    /// Gets or sets the maximum number of items.
-    /// </summary>
-    /// <value>The maximum number of items.</value>
-    public int? MaximumItems { get; set; }
-    /// <summary>
-    /// Gets or sets the <see cref="JsonSchema"/> of items.
-    /// </summary>
-    /// <value>The <see cref="JsonSchema"/> of items.</value>
-    public IList<JsonSchema> Items { get; set; }
-    /// <summary>
-    /// Gets or sets the <see cref="JsonSchema"/> of properties.
-    /// </summary>
-    /// <value>The <see cref="JsonSchema"/> of properties.</value>
-    public IDictionary<string, JsonSchema> Properties { get; set; }
-    /// <summary>
-    /// Gets or sets the <see cref="JsonSchema"/> of additional properties.
-    /// </summary>
-    /// <value>The <see cref="JsonSchema"/> of additional properties.</value>
-    public JsonSchema AdditionalProperties { get; set; }
-    /// <summary>
-    /// Gets or sets the pattern properties.
-    /// </summary>
-    /// <value>The pattern properties.</value>
-    public IDictionary<string, JsonSchema> PatternProperties { get; set; }
-    /// <summary>
-    /// Gets or sets a value indicating whether additional properties are allowed.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if additional properties are allowed; otherwise, <c>false</c>.
-    /// </value>
-    public bool AllowAdditionalProperties { get; set; }
-    /// <summary>
-    /// Gets or sets the required property if this property is present.
-    /// </summary>
-    /// <value>The required property if this property is present.</value>
-    public string Requires { get; set; }
-    /// <summary>
-    /// Gets or sets the identity.
-    /// </summary>
-    /// <value>The identity.</value>
-    public IList<string> Identity { get; set; }
-    /// <summary>
-    /// Gets or sets the a collection of valid enum values allowed.
-    /// </summary>
-    /// <value>A collection of valid enum values allowed.</value>
-    public IList<JToken> Enum { get; set; }
-    /// <summary>
-    /// Gets or sets a collection of options.
-    /// </summary>
-    /// <value>A collection of options.</value>
-    public IDictionary<JToken, string> Options { get; set; }
-    /// <summary>
-    /// Gets or sets disallowed types.
-    /// </summary>
-    /// <value>The disallow types.</value>
-    public JsonSchemaType? Disallow { get; set; }
-    /// <summary>
-    /// Gets or sets the default value.
-    /// </summary>
-    /// <value>The default value.</value>
-    public JToken Default { get; set; }
-    /// <summary>
-    /// Gets or sets the extend <see cref="JsonSchema"/>.
-    /// </summary>
-    /// <value>The extended <see cref="JsonSchema"/>.</value>
-    public JsonSchema Extends { get; set; }
-    /// <summary>
-    /// Gets or sets the format.
-    /// </summary>
-    /// <value>The format.</value>
-    public string Format { get; set; }
-
-    private readonly string _internalId = Guid.NewGuid().ToString("N");
-
-    internal string InternalId
-    {
-      get { return _internalId; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSchema"/> class.
-    /// </summary>
-    public JsonSchema()
-    {
-      AllowAdditionalProperties = true;
-    }
-
-    /// <summary>
-    /// Reads a <see cref="JsonSchema"/> from the specified <see cref="JsonReader"/>.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> containing the JSON Schema to read.</param>
-    /// <returns>The <see cref="JsonSchema"/> object representing the JSON Schema.</returns>
-    public static JsonSchema Read(JsonReader reader)
-    {
-      return Read(reader, new JsonSchemaResolver());
-    }
-
-    /// <summary>
-    /// Reads a <see cref="JsonSchema"/> from the specified <see cref="JsonReader"/>.
-    /// </summary>
-    /// <param name="reader">The <see cref="JsonReader"/> containing the JSON Schema to read.</param>
-    /// <param name="resolver">The <see cref="JsonSchemaResolver"/> to use when resolving schema references.</param>
-    /// <returns>The <see cref="JsonSchema"/> object representing the JSON Schema.</returns>
-    public static JsonSchema Read(JsonReader reader, JsonSchemaResolver resolver)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-      ValidationUtils.ArgumentNotNull(resolver, "resolver");
-
-      JsonSchemaBuilder builder = new JsonSchemaBuilder(resolver);
-      return builder.Parse(reader);
-    }
-
-    /// <summary>
-    /// Load a <see cref="JsonSchema"/> from a string that contains schema JSON.
-    /// </summary>
-    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
-    /// <returns>A <see cref="JsonSchema"/> populated from the string that contains JSON.</returns>
-    public static JsonSchema Parse(string json)
-    {
-      return Parse(json, new JsonSchemaResolver());
-    }
-
-    /// <summary>
-    /// Parses the specified json.
-    /// </summary>
-    /// <param name="json">The json.</param>
-    /// <param name="resolver">The resolver.</param>
-    /// <returns>A <see cref="JsonSchema"/> populated from the string that contains JSON.</returns>
-    public static JsonSchema Parse(string json, JsonSchemaResolver resolver)
-    {
-      ValidationUtils.ArgumentNotNull(json, "json");
-
-      JsonReader reader = new JsonTextReader(new StringReader(json));
-
-      return Read(reader, resolver);
-    }
-
-    /// <summary>
-    /// Writes this schema to a <see cref="JsonWriter"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    public void WriteTo(JsonWriter writer)
-    {
-      WriteTo(writer, new JsonSchemaResolver());
-    }
-
-    /// <summary>
-    /// Writes this schema to a <see cref="JsonWriter"/> using the specified <see cref="JsonSchemaResolver"/>.
-    /// </summary>
-    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
-    /// <param name="resolver">The resolver used.</param>
-    public void WriteTo(JsonWriter writer, JsonSchemaResolver resolver)
-    {
-      ValidationUtils.ArgumentNotNull(writer, "writer");
-      ValidationUtils.ArgumentNotNull(resolver, "resolver");
-
-      JsonSchemaWriter schemaWriter = new JsonSchemaWriter(writer, resolver);
-      schemaWriter.WriteSchema(this);
-    }
-
-    /// <summary>
-    /// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
-    /// </returns>
-    public override string ToString()
-    {
-      StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
-      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
-      jsonWriter.Formatting = Formatting.Indented;
-
-      WriteTo(jsonWriter);
-
-      return writer.ToString();
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// An in-memory representation of a JSON Schema.
+  /// </summary>
+  public class JsonSchema
+  {
+    /// <summary>
+    /// Gets or sets the id.
+    /// </summary>
+    public string Id { get; set; }
+    /// <summary>
+    /// Gets or sets the title.
+    /// </summary>
+    public string Title { get; set; }
+    /// <summary>
+    /// Gets or sets whether the object is required.
+    /// </summary>
+    public bool? Required { get; set; }
+    /// <summary>
+    /// Gets or sets whether the object is read only.
+    /// </summary>
+    public bool? ReadOnly { get; set; }
+    /// <summary>
+    /// Gets or sets whether the object is visible to users.
+    /// </summary>
+    public bool? Hidden { get; set; }
+    /// <summary>
+    /// Gets or sets whether the object is transient.
+    /// </summary>
+    public bool? Transient { get; set; }
+    /// <summary>
+    /// Gets or sets the description of the object.
+    /// </summary>
+    public string Description { get; set; }
+    /// <summary>
+    /// Gets or sets the types of values allowed by the object.
+    /// </summary>
+    /// <value>The type.</value>
+    public JsonSchemaType? Type { get; set; }
+    /// <summary>
+    /// Gets or sets the pattern.
+    /// </summary>
+    /// <value>The pattern.</value>
+    public string Pattern { get; set; }
+    /// <summary>
+    /// Gets or sets the minimum length.
+    /// </summary>
+    /// <value>The minimum length.</value>
+    public int? MinimumLength { get; set; }
+    /// <summary>
+    /// Gets or sets the maximum length.
+    /// </summary>
+    /// <value>The maximum length.</value>
+    public int? MaximumLength { get; set; }
+    /// <summary>
+    /// Gets or sets a number that the value should be divisble by.
+    /// </summary>
+    /// <value>A number that the value should be divisble by.</value>
+    public double? DivisibleBy { get; set; }
+    /// <summary>
+    /// Gets or sets the minimum.
+    /// </summary>
+    /// <value>The minimum.</value>
+    public double? Minimum { get; set; }
+    /// <summary>
+    /// Gets or sets the maximum.
+    /// </summary>
+    /// <value>The maximum.</value>
+    public double? Maximum { get; set; }
+    /// <summary>
+    /// Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute.
+    /// </summary>
+    /// <value>A flag indicating whether the value can not equal the number defined by the "minimum" attribute.</value>
+    public bool? ExclusiveMinimum { get; set; }
+    /// <summary>
+    /// Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute.
+    /// </summary>
+    /// <value>A flag indicating whether the value can not equal the number defined by the "maximum" attribute.</value>
+    public bool? ExclusiveMaximum { get; set; }
+    /// <summary>
+    /// Gets or sets the minimum number of items.
+    /// </summary>
+    /// <value>The minimum number of items.</value>
+    public int? MinimumItems { get; set; }
+    /// <summary>
+    /// Gets or sets the maximum number of items.
+    /// </summary>
+    /// <value>The maximum number of items.</value>
+    public int? MaximumItems { get; set; }
+    /// <summary>
+    /// Gets or sets the <see cref="JsonSchema"/> of items.
+    /// </summary>
+    /// <value>The <see cref="JsonSchema"/> of items.</value>
+    public IList<JsonSchema> Items { get; set; }
+    /// <summary>
+    /// Gets or sets the <see cref="JsonSchema"/> of properties.
+    /// </summary>
+    /// <value>The <see cref="JsonSchema"/> of properties.</value>
+    public IDictionary<string, JsonSchema> Properties { get; set; }
+    /// <summary>
+    /// Gets or sets the <see cref="JsonSchema"/> of additional properties.
+    /// </summary>
+    /// <value>The <see cref="JsonSchema"/> of additional properties.</value>
+    public JsonSchema AdditionalProperties { get; set; }
+    /// <summary>
+    /// Gets or sets the pattern properties.
+    /// </summary>
+    /// <value>The pattern properties.</value>
+    public IDictionary<string, JsonSchema> PatternProperties { get; set; }
+    /// <summary>
+    /// Gets or sets a value indicating whether additional properties are allowed.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if additional properties are allowed; otherwise, <c>false</c>.
+    /// </value>
+    public bool AllowAdditionalProperties { get; set; }
+    /// <summary>
+    /// Gets or sets the required property if this property is present.
+    /// </summary>
+    /// <value>The required property if this property is present.</value>
+    public string Requires { get; set; }
+    /// <summary>
+    /// Gets or sets the identity.
+    /// </summary>
+    /// <value>The identity.</value>
+    public IList<string> Identity { get; set; }
+    /// <summary>
+    /// Gets or sets the a collection of valid enum values allowed.
+    /// </summary>
+    /// <value>A collection of valid enum values allowed.</value>
+    public IList<JToken> Enum { get; set; }
+    /// <summary>
+    /// Gets or sets a collection of options.
+    /// </summary>
+    /// <value>A collection of options.</value>
+    public IDictionary<JToken, string> Options { get; set; }
+    /// <summary>
+    /// Gets or sets disallowed types.
+    /// </summary>
+    /// <value>The disallow types.</value>
+    public JsonSchemaType? Disallow { get; set; }
+    /// <summary>
+    /// Gets or sets the default value.
+    /// </summary>
+    /// <value>The default value.</value>
+    public JToken Default { get; set; }
+    /// <summary>
+    /// Gets or sets the extend <see cref="JsonSchema"/>.
+    /// </summary>
+    /// <value>The extended <see cref="JsonSchema"/>.</value>
+    public JsonSchema Extends { get; set; }
+    /// <summary>
+    /// Gets or sets the format.
+    /// </summary>
+    /// <value>The format.</value>
+    public string Format { get; set; }
+
+    private readonly string _internalId = Guid.NewGuid().ToString("N");
+
+    internal string InternalId
+    {
+      get { return _internalId; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSchema"/> class.
+    /// </summary>
+    public JsonSchema()
+    {
+      AllowAdditionalProperties = true;
+    }
+
+    /// <summary>
+    /// Reads a <see cref="JsonSchema"/> from the specified <see cref="JsonReader"/>.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> containing the JSON Schema to read.</param>
+    /// <returns>The <see cref="JsonSchema"/> object representing the JSON Schema.</returns>
+    public static JsonSchema Read(JsonReader reader)
+    {
+      return Read(reader, new JsonSchemaResolver());
+    }
+
+    /// <summary>
+    /// Reads a <see cref="JsonSchema"/> from the specified <see cref="JsonReader"/>.
+    /// </summary>
+    /// <param name="reader">The <see cref="JsonReader"/> containing the JSON Schema to read.</param>
+    /// <param name="resolver">The <see cref="JsonSchemaResolver"/> to use when resolving schema references.</param>
+    /// <returns>The <see cref="JsonSchema"/> object representing the JSON Schema.</returns>
+    public static JsonSchema Read(JsonReader reader, JsonSchemaResolver resolver)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+      ValidationUtils.ArgumentNotNull(resolver, "resolver");
+
+      JsonSchemaBuilder builder = new JsonSchemaBuilder(resolver);
+      return builder.Parse(reader);
+    }
+
+    /// <summary>
+    /// Load a <see cref="JsonSchema"/> from a string that contains schema JSON.
+    /// </summary>
+    /// <param name="json">A <see cref="String"/> that contains JSON.</param>
+    /// <returns>A <see cref="JsonSchema"/> populated from the string that contains JSON.</returns>
+    public static JsonSchema Parse(string json)
+    {
+      return Parse(json, new JsonSchemaResolver());
+    }
+
+    /// <summary>
+    /// Parses the specified json.
+    /// </summary>
+    /// <param name="json">The json.</param>
+    /// <param name="resolver">The resolver.</param>
+    /// <returns>A <see cref="JsonSchema"/> populated from the string that contains JSON.</returns>
+    public static JsonSchema Parse(string json, JsonSchemaResolver resolver)
+    {
+      ValidationUtils.ArgumentNotNull(json, "json");
+
+      JsonReader reader = new JsonTextReader(new StringReader(json));
+
+      return Read(reader, resolver);
+    }
+
+    /// <summary>
+    /// Writes this schema to a <see cref="JsonWriter"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    public void WriteTo(JsonWriter writer)
+    {
+      WriteTo(writer, new JsonSchemaResolver());
+    }
+
+    /// <summary>
+    /// Writes this schema to a <see cref="JsonWriter"/> using the specified <see cref="JsonSchemaResolver"/>.
+    /// </summary>
+    /// <param name="writer">A <see cref="JsonWriter"/> into which this method will write.</param>
+    /// <param name="resolver">The resolver used.</param>
+    public void WriteTo(JsonWriter writer, JsonSchemaResolver resolver)
+    {
+      ValidationUtils.ArgumentNotNull(writer, "writer");
+      ValidationUtils.ArgumentNotNull(resolver, "resolver");
+
+      JsonSchemaWriter schemaWriter = new JsonSchemaWriter(writer, resolver);
+      schemaWriter.WriteSchema(this);
+    }
+
+    /// <summary>
+    /// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
+    /// </returns>
+    public override string ToString()
+    {
+      StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
+      JsonTextWriter jsonWriter = new JsonTextWriter(writer);
+      jsonWriter.Formatting = Formatting.Indented;
+
+      WriteTo(jsonWriter);
+
+      return writer.ToString();
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaBuilder.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaBuilder.cs
@@ -1,434 +1,434 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Schema
-{
-  internal class JsonSchemaBuilder
-  {
-    private JsonReader _reader;
-    private readonly IList<JsonSchema> _stack;
-    private readonly JsonSchemaResolver _resolver;
-    private JsonSchema _currentSchema;
-
-    private void Push(JsonSchema value)
-    {
-      _currentSchema = value;
-      _stack.Add(value);
-      _resolver.LoadedSchemas.Add(value);
-    }
-
-    private JsonSchema Pop()
-    {
-      JsonSchema poppedSchema = _currentSchema;
-      _stack.RemoveAt(_stack.Count - 1);
-      _currentSchema = _stack.LastOrDefault();
-
-      return poppedSchema;
-    }
-
-    private JsonSchema CurrentSchema
-    {
-      get { return _currentSchema; }
-    }
-
-    public JsonSchemaBuilder(JsonSchemaResolver resolver)
-    {
-      _stack = new List<JsonSchema>();
-      _resolver = resolver;
-    }
-
-    internal JsonSchema Parse(JsonReader reader)
-    {
-      _reader = reader;
-
-      if (reader.TokenType == JsonToken.None)
-        _reader.Read();
-
-      return BuildSchema();
-    }
-
-    private JsonSchema BuildSchema()
-    {
-      if (_reader.TokenType != JsonToken.StartObject)
-        throw new Exception("Expected StartObject while parsing schema object, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-
-      _reader.Read();
-      // empty schema object
-      if (_reader.TokenType == JsonToken.EndObject)
-      {
-        Push(new JsonSchema());
-        return Pop();
-      }
-
-      string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
-      _reader.Read();
-      
-      // schema reference
-      if (propertyName == JsonSchemaConstants.ReferencePropertyName)
-      {
-        string id = (string)_reader.Value;
-
-        // skip to the end of the current object
-        while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
-        {
-            if (_reader.TokenType == JsonToken.StartObject)
-                throw new Exception("Found StartObject within the schema reference with the Id '{0}'"
-                                            .FormatWith(CultureInfo.InvariantCulture, id));
-        }
-
-        JsonSchema referencedSchema = _resolver.GetSchema(id);
-        if (referencedSchema == null)
-          throw new Exception("Could not resolve schema reference for Id '{0}'.".FormatWith(CultureInfo.InvariantCulture, id));
-
-        return referencedSchema;
-      }
-
-      // regular ol' schema object
-      Push(new JsonSchema());
-
-      ProcessSchemaProperty(propertyName);
-
-      while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
-      {
-        propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
-        _reader.Read();
-
-        ProcessSchemaProperty(propertyName);
-      }
-
-      return Pop();
-    }
-
-    private void ProcessSchemaProperty(string propertyName)
-    {
-      switch (propertyName)
-      {
-        case JsonSchemaConstants.TypePropertyName:
-          CurrentSchema.Type = ProcessType();
-          break;
-        case JsonSchemaConstants.IdPropertyName:
-          CurrentSchema.Id = (string) _reader.Value;
-          break;
-        case JsonSchemaConstants.TitlePropertyName:
-          CurrentSchema.Title = (string) _reader.Value;
-          break;
-        case JsonSchemaConstants.DescriptionPropertyName:
-          CurrentSchema.Description = (string)_reader.Value;
-          break;
-        case JsonSchemaConstants.PropertiesPropertyName:
-          ProcessProperties();
-          break;
-        case JsonSchemaConstants.ItemsPropertyName:
-          ProcessItems();
-          break;
-        case JsonSchemaConstants.AdditionalPropertiesPropertyName:
-          ProcessAdditionalProperties();
-          break;
-        case JsonSchemaConstants.PatternPropertiesPropertyName:
-          ProcessPatternProperties();
-          break;
-        case JsonSchemaConstants.RequiredPropertyName:
-          CurrentSchema.Required = (bool)_reader.Value;
-          break;
-        case JsonSchemaConstants.RequiresPropertyName:
-          CurrentSchema.Requires = (string) _reader.Value;
-          break;
-        case JsonSchemaConstants.IdentityPropertyName:
-          ProcessIdentity();
-          break;
-        case JsonSchemaConstants.MinimumPropertyName:
-          CurrentSchema.Minimum = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
-          break;
-        case JsonSchemaConstants.MaximumPropertyName:
-          CurrentSchema.Maximum = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
-          break;
-        case JsonSchemaConstants.ExclusiveMinimumPropertyName:
-          CurrentSchema.ExclusiveMinimum = (bool)_reader.Value;
-          break;
-        case JsonSchemaConstants.ExclusiveMaximumPropertyName:
-          CurrentSchema.ExclusiveMaximum = (bool)_reader.Value;
-          break;
-        case JsonSchemaConstants.MaximumLengthPropertyName:
-          CurrentSchema.MaximumLength = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
-          break;
-        case JsonSchemaConstants.MinimumLengthPropertyName:
-          CurrentSchema.MinimumLength = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
-          break;
-        case JsonSchemaConstants.MaximumItemsPropertyName:
-          CurrentSchema.MaximumItems = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
-          break;
-        case JsonSchemaConstants.MinimumItemsPropertyName:
-          CurrentSchema.MinimumItems = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
-          break;
-        case JsonSchemaConstants.DivisibleByPropertyName:
-          CurrentSchema.DivisibleBy = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
-          break;
-        case JsonSchemaConstants.DisallowPropertyName:
-          CurrentSchema.Disallow = ProcessType();
-          break;
-        case JsonSchemaConstants.DefaultPropertyName:
-          ProcessDefault();
-          break;
-        case JsonSchemaConstants.HiddenPropertyName:
-          CurrentSchema.Hidden = (bool) _reader.Value;
-          break;
-        case JsonSchemaConstants.ReadOnlyPropertyName:
-          CurrentSchema.ReadOnly = (bool) _reader.Value;
-          break;
-        case JsonSchemaConstants.FormatPropertyName:
-          CurrentSchema.Format = (string) _reader.Value;
-          break;
-        case JsonSchemaConstants.PatternPropertyName:
-          CurrentSchema.Pattern = (string) _reader.Value;
-          break;
-        case JsonSchemaConstants.OptionsPropertyName:
-          ProcessOptions();
-          break;
-        case JsonSchemaConstants.EnumPropertyName:
-          ProcessEnum();
-          break;
-        case JsonSchemaConstants.ExtendsPropertyName:
-          ProcessExtends();
-          break;
-        default:
-          _reader.Skip();
-          break;
-      }
-    }
-
-    private void ProcessExtends()
-    {
-      CurrentSchema.Extends = BuildSchema();
-    }
-
-    private void ProcessEnum()
-    {
-      if (_reader.TokenType != JsonToken.StartArray)
-        throw new Exception("Expected StartArray token while parsing enum values, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-
-      CurrentSchema.Enum = new List<JToken>();
-
-      while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
-      {
-        JToken value = JToken.ReadFrom(_reader);
-        CurrentSchema.Enum.Add(value);
-      }
-    }
-
-    private void ProcessOptions()
-    {
-      CurrentSchema.Options = new Dictionary<JToken, string>(new JTokenEqualityComparer());
-
-      switch (_reader.TokenType)
-      {
-        case JsonToken.StartArray:
-          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
-          {
-            if (_reader.TokenType != JsonToken.StartObject)
-              throw new Exception("Expect object token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-
-            string label = null;
-            JToken value = null;
-
-            while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
-            {
-              string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
-              _reader.Read();
-
-              switch (propertyName)
-              {
-                case JsonSchemaConstants.OptionValuePropertyName:
-                  value = JToken.ReadFrom(_reader);
-                  break;
-                case JsonSchemaConstants.OptionLabelPropertyName:
-                  label = (string) _reader.Value;
-                  break;
-                default:
-                  throw new Exception("Unexpected property in JSON schema option: {0}.".FormatWith(CultureInfo.InvariantCulture, propertyName));
-              }
-            }
-
-            if (value == null)
-              throw new Exception("No value specified for JSON schema option.");
-
-            if (CurrentSchema.Options.ContainsKey(value))
-              throw new Exception("Duplicate value in JSON schema option collection: {0}".FormatWith(CultureInfo.InvariantCulture, value));
-
-            CurrentSchema.Options.Add(value, label);
-          }
-          break;
-        default:
-          throw new Exception("Expected array token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-      }
-    }
-
-    private void ProcessDefault()
-    {
-      CurrentSchema.Default = JToken.ReadFrom(_reader);
-    }
-
-    private void ProcessIdentity()
-    {
-      CurrentSchema.Identity = new List<string>();
-
-      switch (_reader.TokenType)
-      {
-        case JsonToken.String:
-          CurrentSchema.Identity.Add(_reader.Value.ToString());
-          break;
-        case JsonToken.StartArray:
-          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
-          {
-            if (_reader.TokenType != JsonToken.String)
-              throw new Exception("Exception JSON property name string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-
-            CurrentSchema.Identity.Add(_reader.Value.ToString());
-          }
-          break;
-        default:
-          throw new Exception("Expected array or JSON property name string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-      }
-    }
-
-    private void ProcessAdditionalProperties()
-    {
-      if (_reader.TokenType == JsonToken.Boolean)
-        CurrentSchema.AllowAdditionalProperties = (bool)_reader.Value;
-      else
-        CurrentSchema.AdditionalProperties = BuildSchema();
-    }
-
-    private void ProcessPatternProperties()
-    {
-      Dictionary<string, JsonSchema> patternProperties = new Dictionary<string, JsonSchema>();
-
-      if (_reader.TokenType != JsonToken.StartObject)
-        throw new Exception("Expected start object token.");
-
-      while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
-      {
-        string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
-        _reader.Read();
-
-        if (patternProperties.ContainsKey(propertyName))
-          throw new Exception("Property {0} has already been defined in schema.".FormatWith(CultureInfo.InvariantCulture, propertyName));
-
-        patternProperties.Add(propertyName, BuildSchema());
-      }
-
-      CurrentSchema.PatternProperties = patternProperties;
-    }
-
-    private void ProcessItems()
-    {
-      CurrentSchema.Items = new List<JsonSchema>();
-
-      switch (_reader.TokenType)
-      {
-        case JsonToken.StartObject:
-          CurrentSchema.Items.Add(BuildSchema());
-          break;
-        case JsonToken.StartArray:
-          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
-          {
-            CurrentSchema.Items.Add(BuildSchema());
-          }
-          break;
-        default:
-          throw new Exception("Expected array or JSON schema object token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-      }
-    }
-
-    private void ProcessProperties()
-    {
-      IDictionary<string, JsonSchema> properties = new Dictionary<string, JsonSchema>();
-
-      if (_reader.TokenType != JsonToken.StartObject)
-        throw new Exception("Expected StartObject token while parsing schema properties, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-
-      while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
-      {
-        string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
-        _reader.Read();
-
-        if (properties.ContainsKey(propertyName))
-          throw new Exception("Property {0} has already been defined in schema.".FormatWith(CultureInfo.InvariantCulture, propertyName));
-
-        properties.Add(propertyName, BuildSchema());
-      }
-
-      CurrentSchema.Properties = properties;
-    }
-
-    private JsonSchemaType? ProcessType()
-    {
-      switch (_reader.TokenType)
-      {
-        case JsonToken.String:
-          return MapType(_reader.Value.ToString());
-        case JsonToken.StartArray:
-          // ensure type is in blank state before ORing values
-          JsonSchemaType? type = JsonSchemaType.None;
-
-          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
-          {
-            if (_reader.TokenType != JsonToken.String)
-              throw new Exception("Exception JSON schema type string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-
-            type = type | MapType(_reader.Value.ToString());
-          }
-
-          return type;
-        default:
-          throw new Exception("Expected array or JSON schema type string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
-      }
-    }
-
-    internal static JsonSchemaType MapType(string type)
-    {
-      JsonSchemaType mappedType;
-      if (!JsonSchemaConstants.JsonSchemaTypeMapping.TryGetValue(type, out mappedType))
-        throw new Exception("Invalid JSON schema type: {0}".FormatWith(CultureInfo.InvariantCulture, type));
-
-      return mappedType;
-    }
-
-    internal static string MapType(JsonSchemaType type)
-    {
-      return JsonSchemaConstants.JsonSchemaTypeMapping.Single(kv => kv.Value == type).Key;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Schema
+{
+  internal class JsonSchemaBuilder
+  {
+    private JsonReader _reader;
+    private readonly IList<JsonSchema> _stack;
+    private readonly JsonSchemaResolver _resolver;
+    private JsonSchema _currentSchema;
+
+    private void Push(JsonSchema value)
+    {
+      _currentSchema = value;
+      _stack.Add(value);
+      _resolver.LoadedSchemas.Add(value);
+    }
+
+    private JsonSchema Pop()
+    {
+      JsonSchema poppedSchema = _currentSchema;
+      _stack.RemoveAt(_stack.Count - 1);
+      _currentSchema = _stack.LastOrDefault();
+
+      return poppedSchema;
+    }
+
+    private JsonSchema CurrentSchema
+    {
+      get { return _currentSchema; }
+    }
+
+    public JsonSchemaBuilder(JsonSchemaResolver resolver)
+    {
+      _stack = new List<JsonSchema>();
+      _resolver = resolver;
+    }
+
+    internal JsonSchema Parse(JsonReader reader)
+    {
+      _reader = reader;
+
+      if (reader.TokenType == JsonToken.None)
+        _reader.Read();
+
+      return BuildSchema();
+    }
+
+    private JsonSchema BuildSchema()
+    {
+      if (_reader.TokenType != JsonToken.StartObject)
+        throw new Exception("Expected StartObject while parsing schema object, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+
+      _reader.Read();
+      // empty schema object
+      if (_reader.TokenType == JsonToken.EndObject)
+      {
+        Push(new JsonSchema());
+        return Pop();
+      }
+
+      string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
+      _reader.Read();
+      
+      // schema reference
+      if (propertyName == JsonSchemaConstants.ReferencePropertyName)
+      {
+        string id = (string)_reader.Value;
+
+        // skip to the end of the current object
+        while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
+        {
+            if (_reader.TokenType == JsonToken.StartObject)
+                throw new Exception("Found StartObject within the schema reference with the Id '{0}'"
+                                            .FormatWith(CultureInfo.InvariantCulture, id));
+        }
+
+        JsonSchema referencedSchema = _resolver.GetSchema(id);
+        if (referencedSchema == null)
+          throw new Exception("Could not resolve schema reference for Id '{0}'.".FormatWith(CultureInfo.InvariantCulture, id));
+
+        return referencedSchema;
+      }
+
+      // regular ol' schema object
+      Push(new JsonSchema());
+
+      ProcessSchemaProperty(propertyName);
+
+      while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
+      {
+        propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
+        _reader.Read();
+
+        ProcessSchemaProperty(propertyName);
+      }
+
+      return Pop();
+    }
+
+    private void ProcessSchemaProperty(string propertyName)
+    {
+      switch (propertyName)
+      {
+        case JsonSchemaConstants.TypePropertyName:
+          CurrentSchema.Type = ProcessType();
+          break;
+        case JsonSchemaConstants.IdPropertyName:
+          CurrentSchema.Id = (string) _reader.Value;
+          break;
+        case JsonSchemaConstants.TitlePropertyName:
+          CurrentSchema.Title = (string) _reader.Value;
+          break;
+        case JsonSchemaConstants.DescriptionPropertyName:
+          CurrentSchema.Description = (string)_reader.Value;
+          break;
+        case JsonSchemaConstants.PropertiesPropertyName:
+          ProcessProperties();
+          break;
+        case JsonSchemaConstants.ItemsPropertyName:
+          ProcessItems();
+          break;
+        case JsonSchemaConstants.AdditionalPropertiesPropertyName:
+          ProcessAdditionalProperties();
+          break;
+        case JsonSchemaConstants.PatternPropertiesPropertyName:
+          ProcessPatternProperties();
+          break;
+        case JsonSchemaConstants.RequiredPropertyName:
+          CurrentSchema.Required = (bool)_reader.Value;
+          break;
+        case JsonSchemaConstants.RequiresPropertyName:
+          CurrentSchema.Requires = (string) _reader.Value;
+          break;
+        case JsonSchemaConstants.IdentityPropertyName:
+          ProcessIdentity();
+          break;
+        case JsonSchemaConstants.MinimumPropertyName:
+          CurrentSchema.Minimum = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
+          break;
+        case JsonSchemaConstants.MaximumPropertyName:
+          CurrentSchema.Maximum = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
+          break;
+        case JsonSchemaConstants.ExclusiveMinimumPropertyName:
+          CurrentSchema.ExclusiveMinimum = (bool)_reader.Value;
+          break;
+        case JsonSchemaConstants.ExclusiveMaximumPropertyName:
+          CurrentSchema.ExclusiveMaximum = (bool)_reader.Value;
+          break;
+        case JsonSchemaConstants.MaximumLengthPropertyName:
+          CurrentSchema.MaximumLength = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
+          break;
+        case JsonSchemaConstants.MinimumLengthPropertyName:
+          CurrentSchema.MinimumLength = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
+          break;
+        case JsonSchemaConstants.MaximumItemsPropertyName:
+          CurrentSchema.MaximumItems = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
+          break;
+        case JsonSchemaConstants.MinimumItemsPropertyName:
+          CurrentSchema.MinimumItems = Convert.ToInt32(_reader.Value, CultureInfo.InvariantCulture);
+          break;
+        case JsonSchemaConstants.DivisibleByPropertyName:
+          CurrentSchema.DivisibleBy = Convert.ToDouble(_reader.Value, CultureInfo.InvariantCulture);
+          break;
+        case JsonSchemaConstants.DisallowPropertyName:
+          CurrentSchema.Disallow = ProcessType();
+          break;
+        case JsonSchemaConstants.DefaultPropertyName:
+          ProcessDefault();
+          break;
+        case JsonSchemaConstants.HiddenPropertyName:
+          CurrentSchema.Hidden = (bool) _reader.Value;
+          break;
+        case JsonSchemaConstants.ReadOnlyPropertyName:
+          CurrentSchema.ReadOnly = (bool) _reader.Value;
+          break;
+        case JsonSchemaConstants.FormatPropertyName:
+          CurrentSchema.Format = (string) _reader.Value;
+          break;
+        case JsonSchemaConstants.PatternPropertyName:
+          CurrentSchema.Pattern = (string) _reader.Value;
+          break;
+        case JsonSchemaConstants.OptionsPropertyName:
+          ProcessOptions();
+          break;
+        case JsonSchemaConstants.EnumPropertyName:
+          ProcessEnum();
+          break;
+        case JsonSchemaConstants.ExtendsPropertyName:
+          ProcessExtends();
+          break;
+        default:
+          _reader.Skip();
+          break;
+      }
+    }
+
+    private void ProcessExtends()
+    {
+      CurrentSchema.Extends = BuildSchema();
+    }
+
+    private void ProcessEnum()
+    {
+      if (_reader.TokenType != JsonToken.StartArray)
+        throw new Exception("Expected StartArray token while parsing enum values, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+
+      CurrentSchema.Enum = new List<JToken>();
+
+      while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
+      {
+        JToken value = JToken.ReadFrom(_reader);
+        CurrentSchema.Enum.Add(value);
+      }
+    }
+
+    private void ProcessOptions()
+    {
+      CurrentSchema.Options = new Dictionary<JToken, string>(new JTokenEqualityComparer());
+
+      switch (_reader.TokenType)
+      {
+        case JsonToken.StartArray:
+          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
+          {
+            if (_reader.TokenType != JsonToken.StartObject)
+              throw new Exception("Expect object token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+
+            string label = null;
+            JToken value = null;
+
+            while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
+            {
+              string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
+              _reader.Read();
+
+              switch (propertyName)
+              {
+                case JsonSchemaConstants.OptionValuePropertyName:
+                  value = JToken.ReadFrom(_reader);
+                  break;
+                case JsonSchemaConstants.OptionLabelPropertyName:
+                  label = (string) _reader.Value;
+                  break;
+                default:
+                  throw new Exception("Unexpected property in JSON schema option: {0}.".FormatWith(CultureInfo.InvariantCulture, propertyName));
+              }
+            }
+
+            if (value == null)
+              throw new Exception("No value specified for JSON schema option.");
+
+            if (CurrentSchema.Options.ContainsKey(value))
+              throw new Exception("Duplicate value in JSON schema option collection: {0}".FormatWith(CultureInfo.InvariantCulture, value));
+
+            CurrentSchema.Options.Add(value, label);
+          }
+          break;
+        default:
+          throw new Exception("Expected array token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+      }
+    }
+
+    private void ProcessDefault()
+    {
+      CurrentSchema.Default = JToken.ReadFrom(_reader);
+    }
+
+    private void ProcessIdentity()
+    {
+      CurrentSchema.Identity = new List<string>();
+
+      switch (_reader.TokenType)
+      {
+        case JsonToken.String:
+          CurrentSchema.Identity.Add(_reader.Value.ToString());
+          break;
+        case JsonToken.StartArray:
+          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
+          {
+            if (_reader.TokenType != JsonToken.String)
+              throw new Exception("Exception JSON property name string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+
+            CurrentSchema.Identity.Add(_reader.Value.ToString());
+          }
+          break;
+        default:
+          throw new Exception("Expected array or JSON property name string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+      }
+    }
+
+    private void ProcessAdditionalProperties()
+    {
+      if (_reader.TokenType == JsonToken.Boolean)
+        CurrentSchema.AllowAdditionalProperties = (bool)_reader.Value;
+      else
+        CurrentSchema.AdditionalProperties = BuildSchema();
+    }
+
+    private void ProcessPatternProperties()
+    {
+      Dictionary<string, JsonSchema> patternProperties = new Dictionary<string, JsonSchema>();
+
+      if (_reader.TokenType != JsonToken.StartObject)
+        throw new Exception("Expected start object token.");
+
+      while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
+      {
+        string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
+        _reader.Read();
+
+        if (patternProperties.ContainsKey(propertyName))
+          throw new Exception("Property {0} has already been defined in schema.".FormatWith(CultureInfo.InvariantCulture, propertyName));
+
+        patternProperties.Add(propertyName, BuildSchema());
+      }
+
+      CurrentSchema.PatternProperties = patternProperties;
+    }
+
+    private void ProcessItems()
+    {
+      CurrentSchema.Items = new List<JsonSchema>();
+
+      switch (_reader.TokenType)
+      {
+        case JsonToken.StartObject:
+          CurrentSchema.Items.Add(BuildSchema());
+          break;
+        case JsonToken.StartArray:
+          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
+          {
+            CurrentSchema.Items.Add(BuildSchema());
+          }
+          break;
+        default:
+          throw new Exception("Expected array or JSON schema object token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+      }
+    }
+
+    private void ProcessProperties()
+    {
+      IDictionary<string, JsonSchema> properties = new Dictionary<string, JsonSchema>();
+
+      if (_reader.TokenType != JsonToken.StartObject)
+        throw new Exception("Expected StartObject token while parsing schema properties, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+
+      while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
+      {
+        string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
+        _reader.Read();
+
+        if (properties.ContainsKey(propertyName))
+          throw new Exception("Property {0} has already been defined in schema.".FormatWith(CultureInfo.InvariantCulture, propertyName));
+
+        properties.Add(propertyName, BuildSchema());
+      }
+
+      CurrentSchema.Properties = properties;
+    }
+
+    private JsonSchemaType? ProcessType()
+    {
+      switch (_reader.TokenType)
+      {
+        case JsonToken.String:
+          return MapType(_reader.Value.ToString());
+        case JsonToken.StartArray:
+          // ensure type is in blank state before ORing values
+          JsonSchemaType? type = JsonSchemaType.None;
+
+          while (_reader.Read() && _reader.TokenType != JsonToken.EndArray)
+          {
+            if (_reader.TokenType != JsonToken.String)
+              throw new Exception("Exception JSON schema type string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+
+            type = type | MapType(_reader.Value.ToString());
+          }
+
+          return type;
+        default:
+          throw new Exception("Expected array or JSON schema type string token, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));
+      }
+    }
+
+    internal static JsonSchemaType MapType(string type)
+    {
+      JsonSchemaType mappedType;
+      if (!JsonSchemaConstants.JsonSchemaTypeMapping.TryGetValue(type, out mappedType))
+        throw new Exception("Invalid JSON schema type: {0}".FormatWith(CultureInfo.InvariantCulture, type));
+
+      return mappedType;
+    }
+
+    internal static string MapType(JsonSchemaType type)
+    {
+      return JsonSchemaConstants.JsonSchemaTypeMapping.Single(kv => kv.Value == type).Key;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaConstants.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaConstants.cs
@@ -1,80 +1,80 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Schema
-{
-  internal static class JsonSchemaConstants
-  {
-    public const string TypePropertyName = "type";
-    public const string PropertiesPropertyName = "properties";
-    public const string ItemsPropertyName = "items";
-    public const string RequiredPropertyName = "required";
-    public const string PatternPropertiesPropertyName = "patternProperties";
-    public const string AdditionalPropertiesPropertyName = "additionalProperties";
-    public const string RequiresPropertyName = "requires";
-    public const string IdentityPropertyName = "identity";
-    public const string MinimumPropertyName = "minimum";
-    public const string MaximumPropertyName = "maximum";
-    public const string ExclusiveMinimumPropertyName = "exclusiveMinimum";
-    public const string ExclusiveMaximumPropertyName = "exclusiveMaximum";
-    public const string MinimumItemsPropertyName = "minItems";
-    public const string MaximumItemsPropertyName = "maxItems";
-    public const string PatternPropertyName = "pattern";
-    public const string MaximumLengthPropertyName = "maxLength";
-    public const string MinimumLengthPropertyName = "minLength";
-    public const string EnumPropertyName = "enum";
-    public const string OptionsPropertyName = "options";
-    public const string ReadOnlyPropertyName = "readonly";
-    public const string TitlePropertyName = "title";
-    public const string DescriptionPropertyName = "description";
-    public const string FormatPropertyName = "format";
-    public const string DefaultPropertyName = "default";
-    public const string TransientPropertyName = "transient";
-    public const string DivisibleByPropertyName = "divisibleBy";
-    public const string HiddenPropertyName = "hidden";
-    public const string DisallowPropertyName = "disallow";
-    public const string ExtendsPropertyName = "extends";
-    public const string IdPropertyName = "id";
-
-    public const string OptionValuePropertyName = "value";
-    public const string OptionLabelPropertyName = "label";
-
-    public const string ReferencePropertyName = "$ref";
-
-    public static readonly IDictionary<string, JsonSchemaType> JsonSchemaTypeMapping = new Dictionary<string, JsonSchemaType>
-    {
-      {"string", JsonSchemaType.String},
-      {"object", JsonSchemaType.Object},
-      {"integer", JsonSchemaType.Integer},
-      {"number", JsonSchemaType.Float},
-      {"null", JsonSchemaType.Null},
-      {"boolean", JsonSchemaType.Boolean},
-      {"array", JsonSchemaType.Array},
-      {"any", JsonSchemaType.Any}
-    };
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Schema
+{
+  internal static class JsonSchemaConstants
+  {
+    public const string TypePropertyName = "type";
+    public const string PropertiesPropertyName = "properties";
+    public const string ItemsPropertyName = "items";
+    public const string RequiredPropertyName = "required";
+    public const string PatternPropertiesPropertyName = "patternProperties";
+    public const string AdditionalPropertiesPropertyName = "additionalProperties";
+    public const string RequiresPropertyName = "requires";
+    public const string IdentityPropertyName = "identity";
+    public const string MinimumPropertyName = "minimum";
+    public const string MaximumPropertyName = "maximum";
+    public const string ExclusiveMinimumPropertyName = "exclusiveMinimum";
+    public const string ExclusiveMaximumPropertyName = "exclusiveMaximum";
+    public const string MinimumItemsPropertyName = "minItems";
+    public const string MaximumItemsPropertyName = "maxItems";
+    public const string PatternPropertyName = "pattern";
+    public const string MaximumLengthPropertyName = "maxLength";
+    public const string MinimumLengthPropertyName = "minLength";
+    public const string EnumPropertyName = "enum";
+    public const string OptionsPropertyName = "options";
+    public const string ReadOnlyPropertyName = "readonly";
+    public const string TitlePropertyName = "title";
+    public const string DescriptionPropertyName = "description";
+    public const string FormatPropertyName = "format";
+    public const string DefaultPropertyName = "default";
+    public const string TransientPropertyName = "transient";
+    public const string DivisibleByPropertyName = "divisibleBy";
+    public const string HiddenPropertyName = "hidden";
+    public const string DisallowPropertyName = "disallow";
+    public const string ExtendsPropertyName = "extends";
+    public const string IdPropertyName = "id";
+
+    public const string OptionValuePropertyName = "value";
+    public const string OptionLabelPropertyName = "label";
+
+    public const string ReferencePropertyName = "$ref";
+
+    public static readonly IDictionary<string, JsonSchemaType> JsonSchemaTypeMapping = new Dictionary<string, JsonSchemaType>
+    {
+      {"string", JsonSchemaType.String},
+      {"object", JsonSchemaType.Object},
+      {"integer", JsonSchemaType.Integer},
+      {"number", JsonSchemaType.Float},
+      {"null", JsonSchemaType.Null},
+      {"boolean", JsonSchemaType.Boolean},
+      {"array", JsonSchemaType.Array},
+      {"any", JsonSchemaType.Any}
+    };
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaException.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaException.cs
@@ -1,108 +1,108 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Runtime.Serialization;
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// Returns detailed information about the schema exception.
-  /// </summary>
-#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
-  [Serializable]
-#endif
-  public class JsonSchemaException : Exception
-  {
-    /// <summary>
-    /// Gets the line number indicating where the error occurred.
-    /// </summary>
-    /// <value>The line number indicating where the error occurred.</value>
-    public int LineNumber { get; private set; }
-
-
-    /// <summary>
-    /// Gets the line position indicating where the error occurred.
-    /// </summary>
-    /// <value>The line position indicating where the error occurred.</value>
-    public int LinePosition { get; private set; }
-
-    /// <summary>
-    /// Gets the path to the JSON where the error occurred.
-    /// </summary>
-    /// <value>The path to the JSON where the error occurred.</value>
-    public string Path { get; private set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class.
-    /// </summary>
-    public JsonSchemaException()
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class
-    /// with a specified error message.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    public JsonSchemaException(string message)
-      : base(message)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class
-    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
-    /// </summary>
-    /// <param name="message">The error message that explains the reason for the exception.</param>
-    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
-    public JsonSchemaException(string message, Exception innerException)
-      : base(message, innerException)
-    {
-    }
-
- #if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class.
-    /// </summary>
-    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
-    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
-    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
-    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
-    public JsonSchemaException(SerializationInfo info, StreamingContext context)
-      : base(info, context)
-    {
-    }
-#endif
-
-    internal JsonSchemaException(string message, Exception innerException, string path, int lineNumber, int linePosition)
-      : base(message, innerException)
-    {
-      Path = path;
-      LineNumber = lineNumber;
-      LinePosition = linePosition;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Runtime.Serialization;
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// Returns detailed information about the schema exception.
+  /// </summary>
+#if !(SILVERLIGHT || WINDOWS_PHONE || NETFX_CORE)
+  [Serializable]
+#endif
+  public class JsonSchemaException : Exception
+  {
+    /// <summary>
+    /// Gets the line number indicating where the error occurred.
+    /// </summary>
+    /// <value>The line number indicating where the error occurred.</value>
+    public int LineNumber { get; private set; }
+
+
+    /// <summary>
+    /// Gets the line position indicating where the error occurred.
+    /// </summary>
+    /// <value>The line position indicating where the error occurred.</value>
+    public int LinePosition { get; private set; }
+
+    /// <summary>
+    /// Gets the path to the JSON where the error occurred.
+    /// </summary>
+    /// <value>The path to the JSON where the error occurred.</value>
+    public string Path { get; private set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class.
+    /// </summary>
+    public JsonSchemaException()
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class
+    /// with a specified error message.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    public JsonSchemaException(string message)
+      : base(message)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class
+    /// with a specified error message and a reference to the inner exception that is the cause of this exception.
+    /// </summary>
+    /// <param name="message">The error message that explains the reason for the exception.</param>
+    /// <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
+    public JsonSchemaException(string message, Exception innerException)
+      : base(message, innerException)
+    {
+    }
+
+ #if !(WINDOWS_PHONE || SILVERLIGHT || NETFX_CORE)
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSchemaException"/> class.
+    /// </summary>
+    /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
+    /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
+    /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
+    /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
+    public JsonSchemaException(SerializationInfo info, StreamingContext context)
+      : base(info, context)
+    {
+    }
+#endif
+
+    internal JsonSchemaException(string message, Exception innerException, string path, int lineNumber, int linePosition)
+      : base(message, innerException)
+    {
+      Path = path;
+      LineNumber = lineNumber;
+      LinePosition = linePosition;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaGenerator.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaGenerator.cs
@@ -1,464 +1,464 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Globalization;
-using System.ComponentModel;
-using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Serialization;
-#if NETFX_CORE
-using IConvertible = Newtonsoft.Json.Utilities.Convertible;
-#endif
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// Generates a <see cref="JsonSchema"/> from a specified <see cref="Type"/>.
-  /// </summary>
-  public class JsonSchemaGenerator
-  {
-    /// <summary>
-    /// Gets or sets how undefined schemas are handled by the serializer.
-    /// </summary>
-    public UndefinedSchemaIdHandling UndefinedSchemaIdHandling { get; set; }
-
-    private IContractResolver _contractResolver;
-    /// <summary>
-    /// Gets or sets the contract resolver.
-    /// </summary>
-    /// <value>The contract resolver.</value>
-    public IContractResolver ContractResolver
-    {
-      get
-      {
-        if (_contractResolver == null)
-          return DefaultContractResolver.Instance;
-
-        return _contractResolver;
-      }
-      set { _contractResolver = value; }
-    }
-
-    private class TypeSchema
-    {
-      public Type Type { get; private set; }
-      public JsonSchema Schema { get; private set;}
-
-      public TypeSchema(Type type, JsonSchema schema)
-      {
-        ValidationUtils.ArgumentNotNull(type, "type");
-        ValidationUtils.ArgumentNotNull(schema, "schema");
-
-        Type = type;
-        Schema = schema;
-      }
-    }
-
-    private JsonSchemaResolver _resolver;
-    private readonly IList<TypeSchema> _stack = new List<TypeSchema>();
-    private JsonSchema _currentSchema;
-
-    private JsonSchema CurrentSchema
-    {
-      get { return _currentSchema; }
-    }
-
-    private void Push(TypeSchema typeSchema)
-    {
-      _currentSchema = typeSchema.Schema;
-      _stack.Add(typeSchema);
-      _resolver.LoadedSchemas.Add(typeSchema.Schema);
-    }
-
-    private TypeSchema Pop()
-    {
-      TypeSchema popped = _stack[_stack.Count - 1];
-      _stack.RemoveAt(_stack.Count - 1);
-      TypeSchema newValue = _stack.LastOrDefault();
-      if (newValue != null)
-      {
-        _currentSchema = newValue.Schema;
-      }
-      else
-      {
-        _currentSchema = null;
-      }
-
-      return popped;
-    }
-
-    /// <summary>
-    /// Generate a <see cref="JsonSchema"/> from the specified type.
-    /// </summary>
-    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
-    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
-    public JsonSchema Generate(Type type)
-    {
-      return Generate(type, new JsonSchemaResolver(), false);
-    }
-
-    /// <summary>
-    /// Generate a <see cref="JsonSchema"/> from the specified type.
-    /// </summary>
-    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
-    /// <param name="resolver">The <see cref="JsonSchemaResolver"/> used to resolve schema references.</param>
-    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
-    public JsonSchema Generate(Type type, JsonSchemaResolver resolver)
-    {
-      return Generate(type, resolver, false);
-    }
-
-    /// <summary>
-    /// Generate a <see cref="JsonSchema"/> from the specified type.
-    /// </summary>
-    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
-    /// <param name="rootSchemaNullable">Specify whether the generated root <see cref="JsonSchema"/> will be nullable.</param>
-    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
-    public JsonSchema Generate(Type type, bool rootSchemaNullable)
-    {
-      return Generate(type, new JsonSchemaResolver(), rootSchemaNullable);
-    }
-
-    /// <summary>
-    /// Generate a <see cref="JsonSchema"/> from the specified type.
-    /// </summary>
-    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
-    /// <param name="resolver">The <see cref="JsonSchemaResolver"/> used to resolve schema references.</param>
-    /// <param name="rootSchemaNullable">Specify whether the generated root <see cref="JsonSchema"/> will be nullable.</param>
-    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
-    public JsonSchema Generate(Type type, JsonSchemaResolver resolver, bool rootSchemaNullable)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-      ValidationUtils.ArgumentNotNull(resolver, "resolver");
-
-      _resolver = resolver;
-
-      return GenerateInternal(type, (!rootSchemaNullable) ? Required.Always : Required.Default, false);
-    }
-
-    private string GetTitle(Type type)
-    {
-      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(type);
-
-      if (containerAttribute != null && !string.IsNullOrEmpty(containerAttribute.Title))
-        return containerAttribute.Title;
-
-      return null;
-    }
-
-    private string GetDescription(Type type)
-    {
-      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(type);
-
-      if (containerAttribute != null && !string.IsNullOrEmpty(containerAttribute.Description))
-        return containerAttribute.Description;
-
-#if !PocketPC && !NETFX_CORE
-      DescriptionAttribute descriptionAttribute = ReflectionUtils.GetAttribute<DescriptionAttribute>(type);
-      if (descriptionAttribute != null)
-        return descriptionAttribute.Description;
-#endif
-
-      return null;
-    }
-
-    private string GetTypeId(Type type, bool explicitOnly)
-    {
-      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(type);
-
-      if (containerAttribute != null && !string.IsNullOrEmpty(containerAttribute.Id))
-        return containerAttribute.Id;
-
-      if (explicitOnly)
-        return null;
-
-      switch (UndefinedSchemaIdHandling)
-      {
-        case UndefinedSchemaIdHandling.UseTypeName:
-          return type.FullName;
-        case UndefinedSchemaIdHandling.UseAssemblyQualifiedName:
-          return type.AssemblyQualifiedName;
-        default:
-          return null;
-      }
-    }
-
-    private JsonSchema GenerateInternal(Type type, Required valueRequired, bool required)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-
-      string resolvedId = GetTypeId(type, false);
-      string explicitId = GetTypeId(type, true);
-
-      if (!string.IsNullOrEmpty(resolvedId))
-      {
-        JsonSchema resolvedSchema = _resolver.GetSchema(resolvedId);
-        if (resolvedSchema != null)
-        {
-          // resolved schema is not null but referencing member allows nulls
-          // change resolved schema to allow nulls. hacky but what are ya gonna do?
-          if (valueRequired != Required.Always && !HasFlag(resolvedSchema.Type, JsonSchemaType.Null))
-            resolvedSchema.Type |= JsonSchemaType.Null;
-          if (required && resolvedSchema.Required != true)
-            resolvedSchema.Required = true;
-
-          return resolvedSchema;
-        }
-      }
-
-      // test for unresolved circular reference
-      if (_stack.Any(tc => tc.Type == type))
-      {
-        throw new Exception("Unresolved circular reference for type '{0}'. Explicitly define an Id for the type using a JsonObject/JsonArray attribute or automatically generate a type Id using the UndefinedSchemaIdHandling property.".FormatWith(CultureInfo.InvariantCulture, type));
-      }
-
-      JsonContract contract = ContractResolver.ResolveContract(type);
-      JsonConverter converter;
-      if ((converter = contract.Converter) != null || (converter = contract.InternalConverter) != null)
-      {
-        JsonSchema converterSchema = converter.GetSchema();
-        if (converterSchema != null)
-          return converterSchema;
-      }
-
-      Push(new TypeSchema(type, new JsonSchema()));
-
-      if (explicitId != null)
-        CurrentSchema.Id = explicitId;
-
-      if (required)
-        CurrentSchema.Required = true;
-      CurrentSchema.Title = GetTitle(type);
-      CurrentSchema.Description = GetDescription(type);
-
-      if (converter != null)
-      {
-        // todo: Add GetSchema to JsonConverter and use here?
-        CurrentSchema.Type = JsonSchemaType.Any;
-      }
-      else
-      {
-        switch (contract.ContractType)
-        {
-          case JsonContractType.Object:
-            CurrentSchema.Type = AddNullType(JsonSchemaType.Object, valueRequired);
-            CurrentSchema.Id = GetTypeId(type, false);
-            GenerateObjectSchema(type, (JsonObjectContract) contract);
-            break;
-          case JsonContractType.Array:
-            CurrentSchema.Type = AddNullType(JsonSchemaType.Array, valueRequired);
-
-            CurrentSchema.Id = GetTypeId(type, false);
-
-            JsonArrayAttribute arrayAttribute = JsonTypeReflector.GetJsonContainerAttribute(type) as JsonArrayAttribute;
-            bool allowNullItem = (arrayAttribute == null || arrayAttribute.AllowNullItems);
-
-            Type collectionItemType = ReflectionUtils.GetCollectionItemType(type);
-            if (collectionItemType != null)
-            {
-              CurrentSchema.Items = new List<JsonSchema>();
-              CurrentSchema.Items.Add(GenerateInternal(collectionItemType, (!allowNullItem) ? Required.Always : Required.Default, false));
-            }
-            break;
-          case JsonContractType.Primitive:
-            CurrentSchema.Type = GetJsonSchemaType(type, valueRequired);
-
-            if (CurrentSchema.Type == JsonSchemaType.Integer && type.IsEnum() && !type.IsDefined(typeof (FlagsAttribute), true))
-            {
-              CurrentSchema.Enum = new List<JToken>();
-              CurrentSchema.Options = new Dictionary<JToken, string>();
-
-              EnumValues<long> enumValues = EnumUtils.GetNamesAndValues<long>(type);
-              foreach (EnumValue<long> enumValue in enumValues)
-              {
-                JToken value = JToken.FromObject(enumValue.Value);
-
-                CurrentSchema.Enum.Add(value);
-                CurrentSchema.Options.Add(value, enumValue.Name);
-              }
-            }
-            break;
-          case JsonContractType.String:
-            JsonSchemaType schemaType = (!ReflectionUtils.IsNullable(contract.UnderlyingType))
-                                          ? JsonSchemaType.String
-                                          : AddNullType(JsonSchemaType.String, valueRequired);
-
-            CurrentSchema.Type = schemaType;
-            break;
-          case JsonContractType.Dictionary:
-            CurrentSchema.Type = AddNullType(JsonSchemaType.Object, valueRequired);
-
-            Type keyType;
-            Type valueType;
-            ReflectionUtils.GetDictionaryKeyValueTypes(type, out keyType, out valueType);
-
-            if (keyType != null)
-            {
-              // can be converted to a string
-              if (ConvertUtils.IsConvertible(keyType))
-              {
-                CurrentSchema.AdditionalProperties = GenerateInternal(valueType, Required.Default, false);
-              }
-            }
-            break;
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-          case JsonContractType.Serializable:
-            CurrentSchema.Type = AddNullType(JsonSchemaType.Object, valueRequired);
-            CurrentSchema.Id = GetTypeId(type, false);
-            GenerateISerializableContract(type, (JsonISerializableContract) contract);
-            break;
-#endif
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-          case JsonContractType.Dynamic:
-#endif
-          case JsonContractType.Linq:
-            CurrentSchema.Type = JsonSchemaType.Any;
-            break;
-          default:
-            throw new Exception("Unexpected contract type: {0}".FormatWith(CultureInfo.InvariantCulture, contract));
-        }
-      }
-
-      return Pop().Schema;
-    }
-
-    private JsonSchemaType AddNullType(JsonSchemaType type, Required valueRequired)
-    {
-      if (valueRequired != Required.Always)
-        return type | JsonSchemaType.Null;
-
-      return type;
-    }
-
-    private bool HasFlag(DefaultValueHandling value, DefaultValueHandling flag)
-    {
-      return ((value & flag) == flag);
-    }
-
-    private void GenerateObjectSchema(Type type, JsonObjectContract contract)
-    {
-      CurrentSchema.Properties = new Dictionary<string, JsonSchema>();
-      foreach (JsonProperty property in contract.Properties)
-      {
-        if (!property.Ignored)
-        {
-          bool optional = property.NullValueHandling == NullValueHandling.Ignore ||
-                          HasFlag(property.DefaultValueHandling.GetValueOrDefault(), DefaultValueHandling.Ignore) ||
-                          property.ShouldSerialize != null ||
-                          property.GetIsSpecified != null;
-
-          JsonSchema propertySchema = GenerateInternal(property.PropertyType, property.Required, !optional);
-
-          if (property.DefaultValue != null)
-            propertySchema.Default = JToken.FromObject(property.DefaultValue);
-
-          CurrentSchema.Properties.Add(property.PropertyName, propertySchema);
-        }
-      }
-
-      if (type.IsSealed())
-        CurrentSchema.AllowAdditionalProperties = false;
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    private void GenerateISerializableContract(Type type, JsonISerializableContract contract)
-    {
-      CurrentSchema.AllowAdditionalProperties = true;
-    }
-#endif
-
-    internal static bool HasFlag(JsonSchemaType? value, JsonSchemaType flag)
-    {
-      // default value is Any
-      if (value == null)
-        return true;
-
-      bool match = ((value & flag) == flag);
-      if (match)
-        return true;
-
-      // integer is a subset of float
-      if (value == JsonSchemaType.Float && flag == JsonSchemaType.Integer)
-        return true;
-
-      return false;
-    }
-
-    private JsonSchemaType GetJsonSchemaType(Type type, Required valueRequired)
-    {
-      JsonSchemaType schemaType = JsonSchemaType.None;
-      if (valueRequired != Required.Always && ReflectionUtils.IsNullable(type))
-      {
-        schemaType = JsonSchemaType.Null;
-        if (ReflectionUtils.IsNullableType(type))
-          type = Nullable.GetUnderlyingType(type);
-      }
-
-      TypeCode typeCode = ConvertUtils.GetTypeCode(type);
-
-      switch (typeCode)
-      {
-        case TypeCode.Empty:
-        case TypeCode.Object:
-          return schemaType | JsonSchemaType.String;
-#if !NETFX_CORE
-        case TypeCode.DBNull:
-          return schemaType | JsonSchemaType.Null;
-#endif
-        case TypeCode.Boolean:
-          return schemaType | JsonSchemaType.Boolean;
-        case TypeCode.Char:
-          return schemaType | JsonSchemaType.String;
-        case TypeCode.SByte:
-        case TypeCode.Byte:
-        case TypeCode.Int16:
-        case TypeCode.UInt16:
-        case TypeCode.Int32:
-        case TypeCode.UInt32:
-        case TypeCode.Int64:
-        case TypeCode.UInt64:
-          return schemaType | JsonSchemaType.Integer;
-        case TypeCode.Single:
-        case TypeCode.Double:
-        case TypeCode.Decimal:
-          return schemaType | JsonSchemaType.Float;
-        // convert to string?
-        case TypeCode.DateTime:
-          return schemaType | JsonSchemaType.String;
-        case TypeCode.String:
-          return schemaType | JsonSchemaType.String;
-        default:
-          throw new Exception("Unexpected type code '{0}' for type '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeCode, type));
-      }
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Globalization;
+using System.ComponentModel;
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Serialization;
+#if NETFX_CORE
+using IConvertible = Newtonsoft.Json.Utilities.Convertible;
+#endif
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// Generates a <see cref="JsonSchema"/> from a specified <see cref="Type"/>.
+  /// </summary>
+  public class JsonSchemaGenerator
+  {
+    /// <summary>
+    /// Gets or sets how undefined schemas are handled by the serializer.
+    /// </summary>
+    public UndefinedSchemaIdHandling UndefinedSchemaIdHandling { get; set; }
+
+    private IContractResolver _contractResolver;
+    /// <summary>
+    /// Gets or sets the contract resolver.
+    /// </summary>
+    /// <value>The contract resolver.</value>
+    public IContractResolver ContractResolver
+    {
+      get
+      {
+        if (_contractResolver == null)
+          return DefaultContractResolver.Instance;
+
+        return _contractResolver;
+      }
+      set { _contractResolver = value; }
+    }
+
+    private class TypeSchema
+    {
+      public Type Type { get; private set; }
+      public JsonSchema Schema { get; private set;}
+
+      public TypeSchema(Type type, JsonSchema schema)
+      {
+        ValidationUtils.ArgumentNotNull(type, "type");
+        ValidationUtils.ArgumentNotNull(schema, "schema");
+
+        Type = type;
+        Schema = schema;
+      }
+    }
+
+    private JsonSchemaResolver _resolver;
+    private readonly IList<TypeSchema> _stack = new List<TypeSchema>();
+    private JsonSchema _currentSchema;
+
+    private JsonSchema CurrentSchema
+    {
+      get { return _currentSchema; }
+    }
+
+    private void Push(TypeSchema typeSchema)
+    {
+      _currentSchema = typeSchema.Schema;
+      _stack.Add(typeSchema);
+      _resolver.LoadedSchemas.Add(typeSchema.Schema);
+    }
+
+    private TypeSchema Pop()
+    {
+      TypeSchema popped = _stack[_stack.Count - 1];
+      _stack.RemoveAt(_stack.Count - 1);
+      TypeSchema newValue = _stack.LastOrDefault();
+      if (newValue != null)
+      {
+        _currentSchema = newValue.Schema;
+      }
+      else
+      {
+        _currentSchema = null;
+      }
+
+      return popped;
+    }
+
+    /// <summary>
+    /// Generate a <see cref="JsonSchema"/> from the specified type.
+    /// </summary>
+    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
+    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
+    public JsonSchema Generate(Type type)
+    {
+      return Generate(type, new JsonSchemaResolver(), false);
+    }
+
+    /// <summary>
+    /// Generate a <see cref="JsonSchema"/> from the specified type.
+    /// </summary>
+    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
+    /// <param name="resolver">The <see cref="JsonSchemaResolver"/> used to resolve schema references.</param>
+    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
+    public JsonSchema Generate(Type type, JsonSchemaResolver resolver)
+    {
+      return Generate(type, resolver, false);
+    }
+
+    /// <summary>
+    /// Generate a <see cref="JsonSchema"/> from the specified type.
+    /// </summary>
+    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
+    /// <param name="rootSchemaNullable">Specify whether the generated root <see cref="JsonSchema"/> will be nullable.</param>
+    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
+    public JsonSchema Generate(Type type, bool rootSchemaNullable)
+    {
+      return Generate(type, new JsonSchemaResolver(), rootSchemaNullable);
+    }
+
+    /// <summary>
+    /// Generate a <see cref="JsonSchema"/> from the specified type.
+    /// </summary>
+    /// <param name="type">The type to generate a <see cref="JsonSchema"/> from.</param>
+    /// <param name="resolver">The <see cref="JsonSchemaResolver"/> used to resolve schema references.</param>
+    /// <param name="rootSchemaNullable">Specify whether the generated root <see cref="JsonSchema"/> will be nullable.</param>
+    /// <returns>A <see cref="JsonSchema"/> generated from the specified type.</returns>
+    public JsonSchema Generate(Type type, JsonSchemaResolver resolver, bool rootSchemaNullable)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+      ValidationUtils.ArgumentNotNull(resolver, "resolver");
+
+      _resolver = resolver;
+
+      return GenerateInternal(type, (!rootSchemaNullable) ? Required.Always : Required.Default, false);
+    }
+
+    private string GetTitle(Type type)
+    {
+      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(type);
+
+      if (containerAttribute != null && !string.IsNullOrEmpty(containerAttribute.Title))
+        return containerAttribute.Title;
+
+      return null;
+    }
+
+    private string GetDescription(Type type)
+    {
+      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(type);
+
+      if (containerAttribute != null && !string.IsNullOrEmpty(containerAttribute.Description))
+        return containerAttribute.Description;
+
+#if !PocketPC && !NETFX_CORE
+      DescriptionAttribute descriptionAttribute = ReflectionUtils.GetAttribute<DescriptionAttribute>(type);
+      if (descriptionAttribute != null)
+        return descriptionAttribute.Description;
+#endif
+
+      return null;
+    }
+
+    private string GetTypeId(Type type, bool explicitOnly)
+    {
+      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(type);
+
+      if (containerAttribute != null && !string.IsNullOrEmpty(containerAttribute.Id))
+        return containerAttribute.Id;
+
+      if (explicitOnly)
+        return null;
+
+      switch (UndefinedSchemaIdHandling)
+      {
+        case UndefinedSchemaIdHandling.UseTypeName:
+          return type.FullName;
+        case UndefinedSchemaIdHandling.UseAssemblyQualifiedName:
+          return type.AssemblyQualifiedName;
+        default:
+          return null;
+      }
+    }
+
+    private JsonSchema GenerateInternal(Type type, Required valueRequired, bool required)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+
+      string resolvedId = GetTypeId(type, false);
+      string explicitId = GetTypeId(type, true);
+
+      if (!string.IsNullOrEmpty(resolvedId))
+      {
+        JsonSchema resolvedSchema = _resolver.GetSchema(resolvedId);
+        if (resolvedSchema != null)
+        {
+          // resolved schema is not null but referencing member allows nulls
+          // change resolved schema to allow nulls. hacky but what are ya gonna do?
+          if (valueRequired != Required.Always && !HasFlag(resolvedSchema.Type, JsonSchemaType.Null))
+            resolvedSchema.Type |= JsonSchemaType.Null;
+          if (required && resolvedSchema.Required != true)
+            resolvedSchema.Required = true;
+
+          return resolvedSchema;
+        }
+      }
+
+      // test for unresolved circular reference
+      if (_stack.Any(tc => tc.Type == type))
+      {
+        throw new Exception("Unresolved circular reference for type '{0}'. Explicitly define an Id for the type using a JsonObject/JsonArray attribute or automatically generate a type Id using the UndefinedSchemaIdHandling property.".FormatWith(CultureInfo.InvariantCulture, type));
+      }
+
+      JsonContract contract = ContractResolver.ResolveContract(type);
+      JsonConverter converter;
+      if ((converter = contract.Converter) != null || (converter = contract.InternalConverter) != null)
+      {
+        JsonSchema converterSchema = converter.GetSchema();
+        if (converterSchema != null)
+          return converterSchema;
+      }
+
+      Push(new TypeSchema(type, new JsonSchema()));
+
+      if (explicitId != null)
+        CurrentSchema.Id = explicitId;
+
+      if (required)
+        CurrentSchema.Required = true;
+      CurrentSchema.Title = GetTitle(type);
+      CurrentSchema.Description = GetDescription(type);
+
+      if (converter != null)
+      {
+        // todo: Add GetSchema to JsonConverter and use here?
+        CurrentSchema.Type = JsonSchemaType.Any;
+      }
+      else
+      {
+        switch (contract.ContractType)
+        {
+          case JsonContractType.Object:
+            CurrentSchema.Type = AddNullType(JsonSchemaType.Object, valueRequired);
+            CurrentSchema.Id = GetTypeId(type, false);
+            GenerateObjectSchema(type, (JsonObjectContract) contract);
+            break;
+          case JsonContractType.Array:
+            CurrentSchema.Type = AddNullType(JsonSchemaType.Array, valueRequired);
+
+            CurrentSchema.Id = GetTypeId(type, false);
+
+            JsonArrayAttribute arrayAttribute = JsonTypeReflector.GetJsonContainerAttribute(type) as JsonArrayAttribute;
+            bool allowNullItem = (arrayAttribute == null || arrayAttribute.AllowNullItems);
+
+            Type collectionItemType = ReflectionUtils.GetCollectionItemType(type);
+            if (collectionItemType != null)
+            {
+              CurrentSchema.Items = new List<JsonSchema>();
+              CurrentSchema.Items.Add(GenerateInternal(collectionItemType, (!allowNullItem) ? Required.Always : Required.Default, false));
+            }
+            break;
+          case JsonContractType.Primitive:
+            CurrentSchema.Type = GetJsonSchemaType(type, valueRequired);
+
+            if (CurrentSchema.Type == JsonSchemaType.Integer && type.IsEnum() && !type.IsDefined(typeof (FlagsAttribute), true))
+            {
+              CurrentSchema.Enum = new List<JToken>();
+              CurrentSchema.Options = new Dictionary<JToken, string>();
+
+              EnumValues<long> enumValues = EnumUtils.GetNamesAndValues<long>(type);
+              foreach (EnumValue<long> enumValue in enumValues)
+              {
+                JToken value = JToken.FromObject(enumValue.Value);
+
+                CurrentSchema.Enum.Add(value);
+                CurrentSchema.Options.Add(value, enumValue.Name);
+              }
+            }
+            break;
+          case JsonContractType.String:
+            JsonSchemaType schemaType = (!ReflectionUtils.IsNullable(contract.UnderlyingType))
+                                          ? JsonSchemaType.String
+                                          : AddNullType(JsonSchemaType.String, valueRequired);
+
+            CurrentSchema.Type = schemaType;
+            break;
+          case JsonContractType.Dictionary:
+            CurrentSchema.Type = AddNullType(JsonSchemaType.Object, valueRequired);
+
+            Type keyType;
+            Type valueType;
+            ReflectionUtils.GetDictionaryKeyValueTypes(type, out keyType, out valueType);
+
+            if (keyType != null)
+            {
+              // can be converted to a string
+              if (ConvertUtils.IsConvertible(keyType))
+              {
+                CurrentSchema.AdditionalProperties = GenerateInternal(valueType, Required.Default, false);
+              }
+            }
+            break;
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+          case JsonContractType.Serializable:
+            CurrentSchema.Type = AddNullType(JsonSchemaType.Object, valueRequired);
+            CurrentSchema.Id = GetTypeId(type, false);
+            GenerateISerializableContract(type, (JsonISerializableContract) contract);
+            break;
+#endif
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+          case JsonContractType.Dynamic:
+#endif
+          case JsonContractType.Linq:
+            CurrentSchema.Type = JsonSchemaType.Any;
+            break;
+          default:
+            throw new Exception("Unexpected contract type: {0}".FormatWith(CultureInfo.InvariantCulture, contract));
+        }
+      }
+
+      return Pop().Schema;
+    }
+
+    private JsonSchemaType AddNullType(JsonSchemaType type, Required valueRequired)
+    {
+      if (valueRequired != Required.Always)
+        return type | JsonSchemaType.Null;
+
+      return type;
+    }
+
+    private bool HasFlag(DefaultValueHandling value, DefaultValueHandling flag)
+    {
+      return ((value & flag) == flag);
+    }
+
+    private void GenerateObjectSchema(Type type, JsonObjectContract contract)
+    {
+      CurrentSchema.Properties = new Dictionary<string, JsonSchema>();
+      foreach (JsonProperty property in contract.Properties)
+      {
+        if (!property.Ignored)
+        {
+          bool optional = property.NullValueHandling == NullValueHandling.Ignore ||
+                          HasFlag(property.DefaultValueHandling.GetValueOrDefault(), DefaultValueHandling.Ignore) ||
+                          property.ShouldSerialize != null ||
+                          property.GetIsSpecified != null;
+
+          JsonSchema propertySchema = GenerateInternal(property.PropertyType, property.Required, !optional);
+
+          if (property.DefaultValue != null)
+            propertySchema.Default = JToken.FromObject(property.DefaultValue);
+
+          CurrentSchema.Properties.Add(property.PropertyName, propertySchema);
+        }
+      }
+
+      if (type.IsSealed())
+        CurrentSchema.AllowAdditionalProperties = false;
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    private void GenerateISerializableContract(Type type, JsonISerializableContract contract)
+    {
+      CurrentSchema.AllowAdditionalProperties = true;
+    }
+#endif
+
+    internal static bool HasFlag(JsonSchemaType? value, JsonSchemaType flag)
+    {
+      // default value is Any
+      if (value == null)
+        return true;
+
+      bool match = ((value & flag) == flag);
+      if (match)
+        return true;
+
+      // integer is a subset of float
+      if (value == JsonSchemaType.Float && flag == JsonSchemaType.Integer)
+        return true;
+
+      return false;
+    }
+
+    private JsonSchemaType GetJsonSchemaType(Type type, Required valueRequired)
+    {
+      JsonSchemaType schemaType = JsonSchemaType.None;
+      if (valueRequired != Required.Always && ReflectionUtils.IsNullable(type))
+      {
+        schemaType = JsonSchemaType.Null;
+        if (ReflectionUtils.IsNullableType(type))
+          type = Nullable.GetUnderlyingType(type);
+      }
+
+      TypeCode typeCode = ConvertUtils.GetTypeCode(type);
+
+      switch (typeCode)
+      {
+        case TypeCode.Empty:
+        case TypeCode.Object:
+          return schemaType | JsonSchemaType.String;
+#if !NETFX_CORE
+        case TypeCode.DBNull:
+          return schemaType | JsonSchemaType.Null;
+#endif
+        case TypeCode.Boolean:
+          return schemaType | JsonSchemaType.Boolean;
+        case TypeCode.Char:
+          return schemaType | JsonSchemaType.String;
+        case TypeCode.SByte:
+        case TypeCode.Byte:
+        case TypeCode.Int16:
+        case TypeCode.UInt16:
+        case TypeCode.Int32:
+        case TypeCode.UInt32:
+        case TypeCode.Int64:
+        case TypeCode.UInt64:
+          return schemaType | JsonSchemaType.Integer;
+        case TypeCode.Single:
+        case TypeCode.Double:
+        case TypeCode.Decimal:
+          return schemaType | JsonSchemaType.Float;
+        // convert to string?
+        case TypeCode.DateTime:
+          return schemaType | JsonSchemaType.String;
+        case TypeCode.String:
+          return schemaType | JsonSchemaType.String;
+        default:
+          throw new Exception("Unexpected type code '{0}' for type '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeCode, type));
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaModel.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaModel.cs
@@ -1,111 +1,111 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Schema
-{
-  internal class JsonSchemaModel
-  {
-    public bool Required { get; set; }
-    public JsonSchemaType Type { get; set; }
-    public int? MinimumLength { get; set; }
-    public int? MaximumLength { get; set; }
-    public double? DivisibleBy { get; set; }
-    public double? Minimum { get; set; }
-    public double? Maximum { get; set; }
-    public bool ExclusiveMinimum { get; set; }
-    public bool ExclusiveMaximum { get; set; }
-    public int? MinimumItems { get; set; }
-    public int? MaximumItems { get; set; }
-    public IList<string> Patterns { get; set; }
-    public IList<JsonSchemaModel> Items { get; set; }
-    public IDictionary<string, JsonSchemaModel> Properties { get; set; }
-    public IDictionary<string, JsonSchemaModel> PatternProperties { get; set; }
-    public JsonSchemaModel AdditionalProperties { get; set; }
-    public bool AllowAdditionalProperties { get; set; }
-    public IList<JToken> Enum { get; set; }
-    public JsonSchemaType Disallow { get; set; }
-
-    public JsonSchemaModel()
-    {
-      Type = JsonSchemaType.Any;
-      AllowAdditionalProperties = true;
-      Required = false;
-    }
-
-    public static JsonSchemaModel Create(IList<JsonSchema> schemata)
-    {
-      JsonSchemaModel model = new JsonSchemaModel();
-
-      foreach (JsonSchema schema in schemata)
-      {
-        Combine(model, schema);
-      }
-
-      return model;
-    }
-
-    private static void Combine(JsonSchemaModel model, JsonSchema schema)
-    {
-      // Version 3 of the Draft JSON Schema has the default value of Not Required
-      model.Required = model.Required || (schema.Required ?? false);
-      model.Type = model.Type & (schema.Type ?? JsonSchemaType.Any);
-
-      model.MinimumLength = MathUtils.Max(model.MinimumLength, schema.MinimumLength);
-      model.MaximumLength = MathUtils.Min(model.MaximumLength, schema.MaximumLength);
-
-      // not sure what is the best way to combine divisibleBy
-      model.DivisibleBy = MathUtils.Max(model.DivisibleBy, schema.DivisibleBy);
-
-      model.Minimum = MathUtils.Max(model.Minimum, schema.Minimum);
-      model.Maximum = MathUtils.Max(model.Maximum, schema.Maximum);
-      model.ExclusiveMinimum = model.ExclusiveMinimum || (schema.ExclusiveMinimum ?? false);
-      model.ExclusiveMaximum = model.ExclusiveMaximum || (schema.ExclusiveMaximum ?? false);
-
-      model.MinimumItems = MathUtils.Max(model.MinimumItems, schema.MinimumItems);
-      model.MaximumItems = MathUtils.Min(model.MaximumItems, schema.MaximumItems);
-      model.AllowAdditionalProperties = model.AllowAdditionalProperties && schema.AllowAdditionalProperties;
-      if (schema.Enum != null)
-      {
-        if (model.Enum == null)
-          model.Enum = new List<JToken>();
-
-        model.Enum.AddRangeDistinct(schema.Enum, new JTokenEqualityComparer());
-      }
-      model.Disallow = model.Disallow | (schema.Disallow ?? JsonSchemaType.None);
-
-      if (schema.Pattern != null)
-      {
-        if (model.Patterns == null)
-          model.Patterns = new List<string>();
-
-        model.Patterns.AddDistinct(schema.Pattern);
-      }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Schema
+{
+  internal class JsonSchemaModel
+  {
+    public bool Required { get; set; }
+    public JsonSchemaType Type { get; set; }
+    public int? MinimumLength { get; set; }
+    public int? MaximumLength { get; set; }
+    public double? DivisibleBy { get; set; }
+    public double? Minimum { get; set; }
+    public double? Maximum { get; set; }
+    public bool ExclusiveMinimum { get; set; }
+    public bool ExclusiveMaximum { get; set; }
+    public int? MinimumItems { get; set; }
+    public int? MaximumItems { get; set; }
+    public IList<string> Patterns { get; set; }
+    public IList<JsonSchemaModel> Items { get; set; }
+    public IDictionary<string, JsonSchemaModel> Properties { get; set; }
+    public IDictionary<string, JsonSchemaModel> PatternProperties { get; set; }
+    public JsonSchemaModel AdditionalProperties { get; set; }
+    public bool AllowAdditionalProperties { get; set; }
+    public IList<JToken> Enum { get; set; }
+    public JsonSchemaType Disallow { get; set; }
+
+    public JsonSchemaModel()
+    {
+      Type = JsonSchemaType.Any;
+      AllowAdditionalProperties = true;
+      Required = false;
+    }
+
+    public static JsonSchemaModel Create(IList<JsonSchema> schemata)
+    {
+      JsonSchemaModel model = new JsonSchemaModel();
+
+      foreach (JsonSchema schema in schemata)
+      {
+        Combine(model, schema);
+      }
+
+      return model;
+    }
+
+    private static void Combine(JsonSchemaModel model, JsonSchema schema)
+    {
+      // Version 3 of the Draft JSON Schema has the default value of Not Required
+      model.Required = model.Required || (schema.Required ?? false);
+      model.Type = model.Type & (schema.Type ?? JsonSchemaType.Any);
+
+      model.MinimumLength = MathUtils.Max(model.MinimumLength, schema.MinimumLength);
+      model.MaximumLength = MathUtils.Min(model.MaximumLength, schema.MaximumLength);
+
+      // not sure what is the best way to combine divisibleBy
+      model.DivisibleBy = MathUtils.Max(model.DivisibleBy, schema.DivisibleBy);
+
+      model.Minimum = MathUtils.Max(model.Minimum, schema.Minimum);
+      model.Maximum = MathUtils.Max(model.Maximum, schema.Maximum);
+      model.ExclusiveMinimum = model.ExclusiveMinimum || (schema.ExclusiveMinimum ?? false);
+      model.ExclusiveMaximum = model.ExclusiveMaximum || (schema.ExclusiveMaximum ?? false);
+
+      model.MinimumItems = MathUtils.Max(model.MinimumItems, schema.MinimumItems);
+      model.MaximumItems = MathUtils.Min(model.MaximumItems, schema.MaximumItems);
+      model.AllowAdditionalProperties = model.AllowAdditionalProperties && schema.AllowAdditionalProperties;
+      if (schema.Enum != null)
+      {
+        if (model.Enum == null)
+          model.Enum = new List<JToken>();
+
+        model.Enum.AddRangeDistinct(schema.Enum, new JTokenEqualityComparer());
+      }
+      model.Disallow = model.Disallow | (schema.Disallow ?? JsonSchemaType.None);
+
+      if (schema.Pattern != null)
+      {
+        if (model.Patterns == null)
+          model.Patterns = new List<string>();
+
+        model.Patterns.AddDistinct(schema.Pattern);
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaModelBuilder.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaModelBuilder.cs
@@ -1,175 +1,175 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Schema
-{
-  internal class JsonSchemaModelBuilder
-  {
-    private JsonSchemaNodeCollection _nodes = new JsonSchemaNodeCollection();
-    private Dictionary<JsonSchemaNode, JsonSchemaModel> _nodeModels = new Dictionary<JsonSchemaNode, JsonSchemaModel>();
-    private JsonSchemaNode _node ;
-
-    public JsonSchemaModel Build(JsonSchema schema)
-    {
-      _nodes = new JsonSchemaNodeCollection();
-      _node = AddSchema(null, schema);
-
-      _nodeModels = new Dictionary<JsonSchemaNode, JsonSchemaModel>();
-      JsonSchemaModel model = BuildNodeModel(_node);
-
-      return model;
-    }
-
-    public JsonSchemaNode AddSchema(JsonSchemaNode existingNode, JsonSchema schema)
-    {
-      string newId;
-      if (existingNode != null)
-      {
-        if (existingNode.Schemas.Contains(schema))
-          return existingNode;
-
-        newId = JsonSchemaNode.GetId(existingNode.Schemas.Union(new[] { schema }));
-      }
-      else
-      {
-        newId = JsonSchemaNode.GetId(new[] { schema });
-      }
-
-      if (_nodes.Contains(newId))
-        return _nodes[newId];
-
-      JsonSchemaNode currentNode = (existingNode != null)
-        ? existingNode.Combine(schema)
-        : new JsonSchemaNode(schema);
-
-      _nodes.Add(currentNode);
-
-      AddProperties(schema.Properties, currentNode.Properties);
-
-      AddProperties(schema.PatternProperties, currentNode.PatternProperties);
-
-      if (schema.Items != null)
-      {
-        for (int i = 0; i < schema.Items.Count; i++)
-        {
-          AddItem(currentNode, i, schema.Items[i]);
-        }
-      }
-
-      if (schema.AdditionalProperties != null)
-        AddAdditionalProperties(currentNode, schema.AdditionalProperties);
-
-      if (schema.Extends != null)
-        currentNode = AddSchema(currentNode, schema.Extends);
-
-      return currentNode;
-    }
-
-    public void AddProperties(IDictionary<string, JsonSchema> source, IDictionary<string, JsonSchemaNode> target)
-    {
-      if (source != null)
-      {
-        foreach (KeyValuePair<string, JsonSchema> property in source)
-        {
-          AddProperty(target, property.Key, property.Value);
-        }
-      }
-    }
-
-    public void AddProperty(IDictionary<string, JsonSchemaNode> target, string propertyName, JsonSchema schema)
-    {
-      JsonSchemaNode propertyNode;
-      target.TryGetValue(propertyName, out propertyNode);
-
-      target[propertyName] = AddSchema(propertyNode, schema);
-    }
-
-    public void AddItem(JsonSchemaNode parentNode, int index, JsonSchema schema)
-    {
-      JsonSchemaNode existingItemNode = (parentNode.Items.Count > index)
-                                  ? parentNode.Items[index]
-                                  : null;
-
-      JsonSchemaNode newItemNode = AddSchema(existingItemNode, schema);
-      
-      if (!(parentNode.Items.Count > index))
-      {
-        parentNode.Items.Add(newItemNode);
-      }
-      else
-      {
-        parentNode.Items[index] = newItemNode;
-      }
-    }
-
-    public void AddAdditionalProperties(JsonSchemaNode parentNode, JsonSchema schema)
-    {
-      parentNode.AdditionalProperties = AddSchema(parentNode.AdditionalProperties, schema);
-    }
-
-    private JsonSchemaModel BuildNodeModel(JsonSchemaNode node)
-    {
-      JsonSchemaModel model;
-      if (_nodeModels.TryGetValue(node, out model))
-        return model;
-      
-      model = JsonSchemaModel.Create(node.Schemas);
-      _nodeModels[node] = model;
-
-      foreach (KeyValuePair<string, JsonSchemaNode> property in node.Properties)
-      {
-        if (model.Properties == null)
-          model.Properties = new Dictionary<string, JsonSchemaModel>();
-
-        model.Properties[property.Key] = BuildNodeModel(property.Value);
-      }
-      foreach (KeyValuePair<string, JsonSchemaNode> property in node.PatternProperties)
-      {
-        if (model.PatternProperties == null)
-          model.PatternProperties = new Dictionary<string, JsonSchemaModel>();
-
-        model.PatternProperties[property.Key] = BuildNodeModel(property.Value);
-      }
-      foreach (JsonSchemaNode t in node.Items)
-      {
-        if (model.Items == null)
-          model.Items = new List<JsonSchemaModel>();
-
-        model.Items.Add(BuildNodeModel(t));
-      }
-      if (node.AdditionalProperties != null)
-        model.AdditionalProperties = BuildNodeModel(node.AdditionalProperties);
-
-      return model;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Schema
+{
+  internal class JsonSchemaModelBuilder
+  {
+    private JsonSchemaNodeCollection _nodes = new JsonSchemaNodeCollection();
+    private Dictionary<JsonSchemaNode, JsonSchemaModel> _nodeModels = new Dictionary<JsonSchemaNode, JsonSchemaModel>();
+    private JsonSchemaNode _node ;
+
+    public JsonSchemaModel Build(JsonSchema schema)
+    {
+      _nodes = new JsonSchemaNodeCollection();
+      _node = AddSchema(null, schema);
+
+      _nodeModels = new Dictionary<JsonSchemaNode, JsonSchemaModel>();
+      JsonSchemaModel model = BuildNodeModel(_node);
+
+      return model;
+    }
+
+    public JsonSchemaNode AddSchema(JsonSchemaNode existingNode, JsonSchema schema)
+    {
+      string newId;
+      if (existingNode != null)
+      {
+        if (existingNode.Schemas.Contains(schema))
+          return existingNode;
+
+        newId = JsonSchemaNode.GetId(existingNode.Schemas.Union(new[] { schema }));
+      }
+      else
+      {
+        newId = JsonSchemaNode.GetId(new[] { schema });
+      }
+
+      if (_nodes.Contains(newId))
+        return _nodes[newId];
+
+      JsonSchemaNode currentNode = (existingNode != null)
+        ? existingNode.Combine(schema)
+        : new JsonSchemaNode(schema);
+
+      _nodes.Add(currentNode);
+
+      AddProperties(schema.Properties, currentNode.Properties);
+
+      AddProperties(schema.PatternProperties, currentNode.PatternProperties);
+
+      if (schema.Items != null)
+      {
+        for (int i = 0; i < schema.Items.Count; i++)
+        {
+          AddItem(currentNode, i, schema.Items[i]);
+        }
+      }
+
+      if (schema.AdditionalProperties != null)
+        AddAdditionalProperties(currentNode, schema.AdditionalProperties);
+
+      if (schema.Extends != null)
+        currentNode = AddSchema(currentNode, schema.Extends);
+
+      return currentNode;
+    }
+
+    public void AddProperties(IDictionary<string, JsonSchema> source, IDictionary<string, JsonSchemaNode> target)
+    {
+      if (source != null)
+      {
+        foreach (KeyValuePair<string, JsonSchema> property in source)
+        {
+          AddProperty(target, property.Key, property.Value);
+        }
+      }
+    }
+
+    public void AddProperty(IDictionary<string, JsonSchemaNode> target, string propertyName, JsonSchema schema)
+    {
+      JsonSchemaNode propertyNode;
+      target.TryGetValue(propertyName, out propertyNode);
+
+      target[propertyName] = AddSchema(propertyNode, schema);
+    }
+
+    public void AddItem(JsonSchemaNode parentNode, int index, JsonSchema schema)
+    {
+      JsonSchemaNode existingItemNode = (parentNode.Items.Count > index)
+                                  ? parentNode.Items[index]
+                                  : null;
+
+      JsonSchemaNode newItemNode = AddSchema(existingItemNode, schema);
+      
+      if (!(parentNode.Items.Count > index))
+      {
+        parentNode.Items.Add(newItemNode);
+      }
+      else
+      {
+        parentNode.Items[index] = newItemNode;
+      }
+    }
+
+    public void AddAdditionalProperties(JsonSchemaNode parentNode, JsonSchema schema)
+    {
+      parentNode.AdditionalProperties = AddSchema(parentNode.AdditionalProperties, schema);
+    }
+
+    private JsonSchemaModel BuildNodeModel(JsonSchemaNode node)
+    {
+      JsonSchemaModel model;
+      if (_nodeModels.TryGetValue(node, out model))
+        return model;
+      
+      model = JsonSchemaModel.Create(node.Schemas);
+      _nodeModels[node] = model;
+
+      foreach (KeyValuePair<string, JsonSchemaNode> property in node.Properties)
+      {
+        if (model.Properties == null)
+          model.Properties = new Dictionary<string, JsonSchemaModel>();
+
+        model.Properties[property.Key] = BuildNodeModel(property.Value);
+      }
+      foreach (KeyValuePair<string, JsonSchemaNode> property in node.PatternProperties)
+      {
+        if (model.PatternProperties == null)
+          model.PatternProperties = new Dictionary<string, JsonSchemaModel>();
+
+        model.PatternProperties[property.Key] = BuildNodeModel(property.Value);
+      }
+      foreach (JsonSchemaNode t in node.Items)
+      {
+        if (model.Items == null)
+          model.Items = new List<JsonSchemaModel>();
+
+        model.Items.Add(BuildNodeModel(t));
+      }
+      if (node.AdditionalProperties != null)
+        model.AdditionalProperties = BuildNodeModel(node.AdditionalProperties);
+
+      return model;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaNode.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaNode.cs
@@ -1,77 +1,77 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Schema
-{
-  internal class JsonSchemaNode
-  {
-    public string Id { get; private set; }
-    public ReadOnlyCollection<JsonSchema> Schemas { get; private set; }
-    public Dictionary<string, JsonSchemaNode> Properties { get; private set; }
-    public Dictionary<string, JsonSchemaNode> PatternProperties { get; private set; }
-    public List<JsonSchemaNode> Items { get; private set; }
-    public JsonSchemaNode AdditionalProperties { get; set; }
-
-    public JsonSchemaNode(JsonSchema schema)
-    {
-      Schemas = new ReadOnlyCollection<JsonSchema>(new []{ schema });
-      Properties = new Dictionary<string, JsonSchemaNode>();
-      PatternProperties = new Dictionary<string, JsonSchemaNode>();
-      Items = new List<JsonSchemaNode>();
-
-      Id = GetId(Schemas);
-    }
-
-    private JsonSchemaNode(JsonSchemaNode source, JsonSchema schema)
-    {
-      Schemas = new ReadOnlyCollection<JsonSchema>(source.Schemas.Union(new[] { schema }).ToList());
-      Properties = new Dictionary<string, JsonSchemaNode>(source.Properties);
-      PatternProperties = new Dictionary<string, JsonSchemaNode>(source.PatternProperties);
-      Items = new List<JsonSchemaNode>(source.Items);
-      AdditionalProperties = source.AdditionalProperties;
-
-      Id = GetId(Schemas);
-    }
-
-    public JsonSchemaNode Combine(JsonSchema schema)
-    {
-      return new JsonSchemaNode(this, schema);
-    }
-
-    public static string GetId(IEnumerable<JsonSchema> schemata)
-    {
-      return string.Join("-", schemata.Select(s => s.InternalId).OrderBy(id => id, StringComparer.Ordinal).ToArray());
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Schema
+{
+  internal class JsonSchemaNode
+  {
+    public string Id { get; private set; }
+    public ReadOnlyCollection<JsonSchema> Schemas { get; private set; }
+    public Dictionary<string, JsonSchemaNode> Properties { get; private set; }
+    public Dictionary<string, JsonSchemaNode> PatternProperties { get; private set; }
+    public List<JsonSchemaNode> Items { get; private set; }
+    public JsonSchemaNode AdditionalProperties { get; set; }
+
+    public JsonSchemaNode(JsonSchema schema)
+    {
+      Schemas = new ReadOnlyCollection<JsonSchema>(new []{ schema });
+      Properties = new Dictionary<string, JsonSchemaNode>();
+      PatternProperties = new Dictionary<string, JsonSchemaNode>();
+      Items = new List<JsonSchemaNode>();
+
+      Id = GetId(Schemas);
+    }
+
+    private JsonSchemaNode(JsonSchemaNode source, JsonSchema schema)
+    {
+      Schemas = new ReadOnlyCollection<JsonSchema>(source.Schemas.Union(new[] { schema }).ToList());
+      Properties = new Dictionary<string, JsonSchemaNode>(source.Properties);
+      PatternProperties = new Dictionary<string, JsonSchemaNode>(source.PatternProperties);
+      Items = new List<JsonSchemaNode>(source.Items);
+      AdditionalProperties = source.AdditionalProperties;
+
+      Id = GetId(Schemas);
+    }
+
+    public JsonSchemaNode Combine(JsonSchema schema)
+    {
+      return new JsonSchemaNode(this, schema);
+    }
+
+    public static string GetId(IEnumerable<JsonSchema> schemata)
+    {
+      return string.Join("-", schemata.Select(s => s.InternalId).OrderBy(id => id, StringComparer.Ordinal).ToArray());
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaNodeCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaNodeCollection.cs
@@ -1,37 +1,37 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.ObjectModel;
-
-namespace Newtonsoft.Json.Schema
-{
-  internal class JsonSchemaNodeCollection : KeyedCollection<string, JsonSchemaNode>
-  {
-    protected override string GetKeyForItem(JsonSchemaNode item)
-    {
-      return item.Id;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.ObjectModel;
+
+namespace Newtonsoft.Json.Schema
+{
+  internal class JsonSchemaNodeCollection : KeyedCollection<string, JsonSchemaNode>
+  {
+    protected override string GetKeyForItem(JsonSchemaNode item)
+    {
+      return item.Id;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaResolver.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaResolver.cs
@@ -1,65 +1,65 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// Resolves <see cref="JsonSchema"/> from an id.
-  /// </summary>
-  public class JsonSchemaResolver
-  {
-    /// <summary>
-    /// Gets or sets the loaded schemas.
-    /// </summary>
-    /// <value>The loaded schemas.</value>
-    public IList<JsonSchema> LoadedSchemas { get; protected set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonSchemaResolver"/> class.
-    /// </summary>
-    public JsonSchemaResolver()
-    {
-      LoadedSchemas = new List<JsonSchema>();
-    }
-
-    /// <summary>
-    /// Gets a <see cref="JsonSchema"/> for the specified id.
-    /// </summary>
-    /// <param name="id">The id.</param>
-    /// <returns>A <see cref="JsonSchema"/> for the specified id.</returns>
-    public virtual JsonSchema GetSchema(string id)
-    {
-      JsonSchema schema = LoadedSchemas.SingleOrDefault(s => s.Id == id);
-      return schema;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// Resolves <see cref="JsonSchema"/> from an id.
+  /// </summary>
+  public class JsonSchemaResolver
+  {
+    /// <summary>
+    /// Gets or sets the loaded schemas.
+    /// </summary>
+    /// <value>The loaded schemas.</value>
+    public IList<JsonSchema> LoadedSchemas { get; protected set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonSchemaResolver"/> class.
+    /// </summary>
+    public JsonSchemaResolver()
+    {
+      LoadedSchemas = new List<JsonSchema>();
+    }
+
+    /// <summary>
+    /// Gets a <see cref="JsonSchema"/> for the specified id.
+    /// </summary>
+    /// <param name="id">The id.</param>
+    /// <returns>A <see cref="JsonSchema"/> for the specified id.</returns>
+    public virtual JsonSchema GetSchema(string id)
+    {
+      JsonSchema schema = LoadedSchemas.SingleOrDefault(s => s.Id == id);
+      return schema;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaType.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaType.cs
@@ -1,73 +1,73 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// The value types allowed by the <see cref="JsonSchema"/>.
-  /// </summary>
-  [Flags]
-  public enum JsonSchemaType
-  {
-    /// <summary>
-    /// No type specified.
-    /// </summary>
-    None = 0,
-    /// <summary>
-    /// String type.
-    /// </summary>
-    String = 1,
-    /// <summary>
-    /// Float type.
-    /// </summary>
-    Float = 2,
-    /// <summary>
-    /// Integer type.
-    /// </summary>
-    Integer = 4,
-    /// <summary>
-    /// Boolean type.
-    /// </summary>
-    Boolean = 8,
-    /// <summary>
-    /// Object type.
-    /// </summary>
-    Object = 16,
-    /// <summary>
-    /// Array type.
-    /// </summary>
-    Array = 32,
-    /// <summary>
-    /// Null type.
-    /// </summary>
-    Null = 64,
-    /// <summary>
-    /// Any type.
-    /// </summary>
-    Any = String | Float | Integer | Boolean | Object | Array | Null
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// The value types allowed by the <see cref="JsonSchema"/>.
+  /// </summary>
+  [Flags]
+  public enum JsonSchemaType
+  {
+    /// <summary>
+    /// No type specified.
+    /// </summary>
+    None = 0,
+    /// <summary>
+    /// String type.
+    /// </summary>
+    String = 1,
+    /// <summary>
+    /// Float type.
+    /// </summary>
+    Float = 2,
+    /// <summary>
+    /// Integer type.
+    /// </summary>
+    Integer = 4,
+    /// <summary>
+    /// Boolean type.
+    /// </summary>
+    Boolean = 8,
+    /// <summary>
+    /// Object type.
+    /// </summary>
+    Object = 16,
+    /// <summary>
+    /// Array type.
+    /// </summary>
+    Array = 32,
+    /// <summary>
+    /// Null type.
+    /// </summary>
+    Null = 64,
+    /// <summary>
+    /// Any type.
+    /// </summary>
+    Any = String | Float | Integer | Boolean | Object | Array | Null
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaWriter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/JsonSchemaWriter.cs
@@ -1,223 +1,223 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Schema
-{
-  internal class JsonSchemaWriter
-  {
-    private readonly JsonWriter _writer;
-    private readonly JsonSchemaResolver _resolver;
-
-    public JsonSchemaWriter(JsonWriter writer, JsonSchemaResolver resolver)
-    {
-      ValidationUtils.ArgumentNotNull(writer, "writer");
-      _writer = writer;
-      _resolver = resolver;
-    }
-
-    private void ReferenceOrWriteSchema(JsonSchema schema)
-    {
-      if (schema.Id != null && _resolver.GetSchema(schema.Id) != null)
-      {
-        _writer.WriteStartObject();
-        _writer.WritePropertyName(JsonSchemaConstants.ReferencePropertyName);
-        _writer.WriteValue(schema.Id);
-        _writer.WriteEndObject();
-      }
-      else
-      {
-        WriteSchema(schema);
-      }
-    }
-
-    public void WriteSchema(JsonSchema schema)
-    {
-      ValidationUtils.ArgumentNotNull(schema, "schema");
-
-      if (!_resolver.LoadedSchemas.Contains(schema))
-        _resolver.LoadedSchemas.Add(schema);
-
-      _writer.WriteStartObject();
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.IdPropertyName, schema.Id);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.TitlePropertyName, schema.Title);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.DescriptionPropertyName, schema.Description);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.RequiredPropertyName, schema.Required);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.ReadOnlyPropertyName, schema.ReadOnly);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.HiddenPropertyName, schema.Hidden);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.TransientPropertyName, schema.Transient);
-      if (schema.Type != null)
-        WriteType(JsonSchemaConstants.TypePropertyName, _writer, schema.Type.Value);
-      if (!schema.AllowAdditionalProperties)
-      {
-        _writer.WritePropertyName(JsonSchemaConstants.AdditionalPropertiesPropertyName);
-        _writer.WriteValue(schema.AllowAdditionalProperties);
-      }
-      else
-      {
-        if (schema.AdditionalProperties != null)
-        {
-          _writer.WritePropertyName(JsonSchemaConstants.AdditionalPropertiesPropertyName);
-          ReferenceOrWriteSchema(schema.AdditionalProperties);
-        }
-      }
-      WriteSchemaDictionaryIfNotNull(_writer, JsonSchemaConstants.PropertiesPropertyName, schema.Properties);
-      WriteSchemaDictionaryIfNotNull(_writer, JsonSchemaConstants.PatternPropertiesPropertyName, schema.PatternProperties);
-      WriteItems(schema);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MinimumPropertyName, schema.Minimum);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MaximumPropertyName, schema.Maximum);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.ExclusiveMinimumPropertyName, schema.ExclusiveMinimum);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.ExclusiveMaximumPropertyName, schema.ExclusiveMaximum);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MinimumLengthPropertyName, schema.MinimumLength);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MaximumLengthPropertyName, schema.MaximumLength);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MinimumItemsPropertyName, schema.MinimumItems);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MaximumItemsPropertyName, schema.MaximumItems);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.DivisibleByPropertyName, schema.DivisibleBy);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.FormatPropertyName, schema.Format);
-      WritePropertyIfNotNull(_writer, JsonSchemaConstants.PatternPropertyName, schema.Pattern);
-      if (schema.Enum != null)
-      {
-        _writer.WritePropertyName(JsonSchemaConstants.EnumPropertyName);
-        _writer.WriteStartArray();
-        foreach (JToken token in schema.Enum)
-        {
-          token.WriteTo(_writer);
-        }
-        _writer.WriteEndArray();
-      }
-      if (schema.Default != null)
-      {
-        _writer.WritePropertyName(JsonSchemaConstants.DefaultPropertyName);
-        schema.Default.WriteTo(_writer);
-      }
-      if (schema.Options != null)
-      {
-        _writer.WritePropertyName(JsonSchemaConstants.OptionsPropertyName);
-        _writer.WriteStartArray();
-        foreach (KeyValuePair<JToken, string> option in schema.Options)
-        {
-          _writer.WriteStartObject();
-          _writer.WritePropertyName(JsonSchemaConstants.OptionValuePropertyName);
-          option.Key.WriteTo(_writer);
-          if (option.Value != null)
-          {
-            _writer.WritePropertyName(JsonSchemaConstants.OptionLabelPropertyName);
-            _writer.WriteValue(option.Value);
-          }
-          _writer.WriteEndObject();
-        }
-        _writer.WriteEndArray();
-      }
-      if (schema.Disallow != null)
-        WriteType(JsonSchemaConstants.DisallowPropertyName, _writer, schema.Disallow.Value);
-      if (schema.Extends != null)
-      {
-        _writer.WritePropertyName(JsonSchemaConstants.ExtendsPropertyName);
-        ReferenceOrWriteSchema(schema.Extends);
-      }
-      _writer.WriteEndObject();
-    }
-
-    private void WriteSchemaDictionaryIfNotNull(JsonWriter writer, string propertyName, IDictionary<string, JsonSchema> properties)
-    {
-      if (properties != null)
-      {
-        writer.WritePropertyName(propertyName);
-        writer.WriteStartObject();
-        foreach (KeyValuePair<string, JsonSchema> property in properties)
-        {
-          writer.WritePropertyName(property.Key);
-          ReferenceOrWriteSchema(property.Value);
-        }
-        writer.WriteEndObject();
-      }
-    }
-
-    private void WriteItems(JsonSchema schema)
-    {
-      if (CollectionUtils.IsNullOrEmpty(schema.Items))
-        return;
-
-      _writer.WritePropertyName(JsonSchemaConstants.ItemsPropertyName);
-
-      if (schema.Items.Count == 1)
-      {
-        ReferenceOrWriteSchema(schema.Items[0]);
-        return;
-      }
-
-      _writer.WriteStartArray();
-      foreach (JsonSchema itemSchema in schema.Items)
-      {
-        ReferenceOrWriteSchema(itemSchema);
-      }
-      _writer.WriteEndArray();
-    }
-
-    private void WriteType(string propertyName, JsonWriter writer, JsonSchemaType type)
-    {
-      IList<JsonSchemaType> types;
-      if (System.Enum.IsDefined(typeof(JsonSchemaType), type))
-        types = new List<JsonSchemaType> { type };
-      else
-        types = EnumUtils.GetFlagsValues(type).Where(v => v != JsonSchemaType.None).ToList();
-
-      if (types.Count == 0)
-        return;
-
-      writer.WritePropertyName(propertyName);
-
-      if (types.Count == 1)
-      {
-        writer.WriteValue(JsonSchemaBuilder.MapType(types[0]));
-        return;
-      }
-
-      writer.WriteStartArray();
-      foreach (JsonSchemaType jsonSchemaType in types)
-      {
-        writer.WriteValue(JsonSchemaBuilder.MapType(jsonSchemaType));
-      }
-      writer.WriteEndArray();
-    }
-
-    private void WritePropertyIfNotNull(JsonWriter writer, string propertyName, object value)
-    {
-      if (value != null)
-      {
-        writer.WritePropertyName(propertyName);
-        writer.WriteValue(value);
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Schema
+{
+  internal class JsonSchemaWriter
+  {
+    private readonly JsonWriter _writer;
+    private readonly JsonSchemaResolver _resolver;
+
+    public JsonSchemaWriter(JsonWriter writer, JsonSchemaResolver resolver)
+    {
+      ValidationUtils.ArgumentNotNull(writer, "writer");
+      _writer = writer;
+      _resolver = resolver;
+    }
+
+    private void ReferenceOrWriteSchema(JsonSchema schema)
+    {
+      if (schema.Id != null && _resolver.GetSchema(schema.Id) != null)
+      {
+        _writer.WriteStartObject();
+        _writer.WritePropertyName(JsonSchemaConstants.ReferencePropertyName);
+        _writer.WriteValue(schema.Id);
+        _writer.WriteEndObject();
+      }
+      else
+      {
+        WriteSchema(schema);
+      }
+    }
+
+    public void WriteSchema(JsonSchema schema)
+    {
+      ValidationUtils.ArgumentNotNull(schema, "schema");
+
+      if (!_resolver.LoadedSchemas.Contains(schema))
+        _resolver.LoadedSchemas.Add(schema);
+
+      _writer.WriteStartObject();
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.IdPropertyName, schema.Id);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.TitlePropertyName, schema.Title);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.DescriptionPropertyName, schema.Description);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.RequiredPropertyName, schema.Required);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.ReadOnlyPropertyName, schema.ReadOnly);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.HiddenPropertyName, schema.Hidden);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.TransientPropertyName, schema.Transient);
+      if (schema.Type != null)
+        WriteType(JsonSchemaConstants.TypePropertyName, _writer, schema.Type.Value);
+      if (!schema.AllowAdditionalProperties)
+      {
+        _writer.WritePropertyName(JsonSchemaConstants.AdditionalPropertiesPropertyName);
+        _writer.WriteValue(schema.AllowAdditionalProperties);
+      }
+      else
+      {
+        if (schema.AdditionalProperties != null)
+        {
+          _writer.WritePropertyName(JsonSchemaConstants.AdditionalPropertiesPropertyName);
+          ReferenceOrWriteSchema(schema.AdditionalProperties);
+        }
+      }
+      WriteSchemaDictionaryIfNotNull(_writer, JsonSchemaConstants.PropertiesPropertyName, schema.Properties);
+      WriteSchemaDictionaryIfNotNull(_writer, JsonSchemaConstants.PatternPropertiesPropertyName, schema.PatternProperties);
+      WriteItems(schema);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MinimumPropertyName, schema.Minimum);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MaximumPropertyName, schema.Maximum);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.ExclusiveMinimumPropertyName, schema.ExclusiveMinimum);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.ExclusiveMaximumPropertyName, schema.ExclusiveMaximum);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MinimumLengthPropertyName, schema.MinimumLength);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MaximumLengthPropertyName, schema.MaximumLength);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MinimumItemsPropertyName, schema.MinimumItems);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.MaximumItemsPropertyName, schema.MaximumItems);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.DivisibleByPropertyName, schema.DivisibleBy);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.FormatPropertyName, schema.Format);
+      WritePropertyIfNotNull(_writer, JsonSchemaConstants.PatternPropertyName, schema.Pattern);
+      if (schema.Enum != null)
+      {
+        _writer.WritePropertyName(JsonSchemaConstants.EnumPropertyName);
+        _writer.WriteStartArray();
+        foreach (JToken token in schema.Enum)
+        {
+          token.WriteTo(_writer);
+        }
+        _writer.WriteEndArray();
+      }
+      if (schema.Default != null)
+      {
+        _writer.WritePropertyName(JsonSchemaConstants.DefaultPropertyName);
+        schema.Default.WriteTo(_writer);
+      }
+      if (schema.Options != null)
+      {
+        _writer.WritePropertyName(JsonSchemaConstants.OptionsPropertyName);
+        _writer.WriteStartArray();
+        foreach (KeyValuePair<JToken, string> option in schema.Options)
+        {
+          _writer.WriteStartObject();
+          _writer.WritePropertyName(JsonSchemaConstants.OptionValuePropertyName);
+          option.Key.WriteTo(_writer);
+          if (option.Value != null)
+          {
+            _writer.WritePropertyName(JsonSchemaConstants.OptionLabelPropertyName);
+            _writer.WriteValue(option.Value);
+          }
+          _writer.WriteEndObject();
+        }
+        _writer.WriteEndArray();
+      }
+      if (schema.Disallow != null)
+        WriteType(JsonSchemaConstants.DisallowPropertyName, _writer, schema.Disallow.Value);
+      if (schema.Extends != null)
+      {
+        _writer.WritePropertyName(JsonSchemaConstants.ExtendsPropertyName);
+        ReferenceOrWriteSchema(schema.Extends);
+      }
+      _writer.WriteEndObject();
+    }
+
+    private void WriteSchemaDictionaryIfNotNull(JsonWriter writer, string propertyName, IDictionary<string, JsonSchema> properties)
+    {
+      if (properties != null)
+      {
+        writer.WritePropertyName(propertyName);
+        writer.WriteStartObject();
+        foreach (KeyValuePair<string, JsonSchema> property in properties)
+        {
+          writer.WritePropertyName(property.Key);
+          ReferenceOrWriteSchema(property.Value);
+        }
+        writer.WriteEndObject();
+      }
+    }
+
+    private void WriteItems(JsonSchema schema)
+    {
+      if (CollectionUtils.IsNullOrEmpty(schema.Items))
+        return;
+
+      _writer.WritePropertyName(JsonSchemaConstants.ItemsPropertyName);
+
+      if (schema.Items.Count == 1)
+      {
+        ReferenceOrWriteSchema(schema.Items[0]);
+        return;
+      }
+
+      _writer.WriteStartArray();
+      foreach (JsonSchema itemSchema in schema.Items)
+      {
+        ReferenceOrWriteSchema(itemSchema);
+      }
+      _writer.WriteEndArray();
+    }
+
+    private void WriteType(string propertyName, JsonWriter writer, JsonSchemaType type)
+    {
+      IList<JsonSchemaType> types;
+      if (System.Enum.IsDefined(typeof(JsonSchemaType), type))
+        types = new List<JsonSchemaType> { type };
+      else
+        types = EnumUtils.GetFlagsValues(type).Where(v => v != JsonSchemaType.None).ToList();
+
+      if (types.Count == 0)
+        return;
+
+      writer.WritePropertyName(propertyName);
+
+      if (types.Count == 1)
+      {
+        writer.WriteValue(JsonSchemaBuilder.MapType(types[0]));
+        return;
+      }
+
+      writer.WriteStartArray();
+      foreach (JsonSchemaType jsonSchemaType in types)
+      {
+        writer.WriteValue(JsonSchemaBuilder.MapType(jsonSchemaType));
+      }
+      writer.WriteEndArray();
+    }
+
+    private void WritePropertyIfNotNull(JsonWriter writer, string propertyName, object value)
+    {
+      if (value != null)
+      {
+        writer.WritePropertyName(propertyName);
+        writer.WriteValue(value);
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/UndefinedSchemaIdHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/UndefinedSchemaIdHandling.cs
@@ -1,46 +1,46 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// Specifies undefined schema Id handling options for the <see cref="JsonSchemaGenerator"/>.
-  /// </summary>
-  public enum UndefinedSchemaIdHandling
-  {
-    /// <summary>
-    /// Do not infer a schema Id.
-    /// </summary>
-    None = 0,
-    /// <summary>
-    /// Use the .NET type name as the schema Id.
-    /// </summary>
-    UseTypeName = 1,
-    /// <summary>
-    /// Use the assembly qualified .NET type name as the schema Id.
-    /// </summary>
-    UseAssemblyQualifiedName = 2,
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// Specifies undefined schema Id handling options for the <see cref="JsonSchemaGenerator"/>.
+  /// </summary>
+  public enum UndefinedSchemaIdHandling
+  {
+    /// <summary>
+    /// Do not infer a schema Id.
+    /// </summary>
+    None = 0,
+    /// <summary>
+    /// Use the .NET type name as the schema Id.
+    /// </summary>
+    UseTypeName = 1,
+    /// <summary>
+    /// Use the assembly qualified .NET type name as the schema Id.
+    /// </summary>
+    UseAssemblyQualifiedName = 2,
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/ValidationEventArgs.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/ValidationEventArgs.cs
@@ -1,71 +1,71 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// Returns detailed information related to the <see cref="ValidationEventHandler"/>.
-  /// </summary>
-  public class ValidationEventArgs : EventArgs
-  {
-    private readonly JsonSchemaException _ex;
-
-    internal ValidationEventArgs(JsonSchemaException ex)
-    {
-      ValidationUtils.ArgumentNotNull(ex, "ex");
-      _ex = ex;
-    }
-
-    /// <summary>
-    /// Gets the <see cref="JsonSchemaException"/> associated with the validation error.
-    /// </summary>
-    /// <value>The JsonSchemaException associated with the validation error.</value>
-    public JsonSchemaException Exception
-    {
-      get { return _ex; }
-    }
-
-    /// <summary>
-    /// Gets the path of the JSON location where the validation error occurred.
-    /// </summary>
-    /// <value>The path of the JSON location where the validation error occurred.</value>
-    public string Path
-    {
-      get { return _ex.Path; }
-    }
-
-    /// <summary>
-    /// Gets the text description corresponding to the validation error.
-    /// </summary>
-    /// <value>The text description.</value>
-    public string Message
-    {
-      get { return _ex.Message; }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// Returns detailed information related to the <see cref="ValidationEventHandler"/>.
+  /// </summary>
+  public class ValidationEventArgs : EventArgs
+  {
+    private readonly JsonSchemaException _ex;
+
+    internal ValidationEventArgs(JsonSchemaException ex)
+    {
+      ValidationUtils.ArgumentNotNull(ex, "ex");
+      _ex = ex;
+    }
+
+    /// <summary>
+    /// Gets the <see cref="JsonSchemaException"/> associated with the validation error.
+    /// </summary>
+    /// <value>The JsonSchemaException associated with the validation error.</value>
+    public JsonSchemaException Exception
+    {
+      get { return _ex; }
+    }
+
+    /// <summary>
+    /// Gets the path of the JSON location where the validation error occurred.
+    /// </summary>
+    /// <value>The path of the JSON location where the validation error occurred.</value>
+    public string Path
+    {
+      get { return _ex.Path; }
+    }
+
+    /// <summary>
+    /// Gets the text description corresponding to the validation error.
+    /// </summary>
+    /// <value>The text description.</value>
+    public string Message
+    {
+      get { return _ex.Message; }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/ValidationEventHandler.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Schema/ValidationEventHandler.cs
@@ -1,32 +1,32 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Schema
-{
-  /// <summary>
-  /// Represents the callback method that will handle JSON schema validation events and the <see cref="ValidationEventArgs"/>.
-  /// </summary>
-  public delegate void ValidationEventHandler(object sender, ValidationEventArgs e);
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Schema
+{
+  /// <summary>
+  /// Represents the callback method that will handle JSON schema validation events and the <see cref="ValidationEventArgs"/>.
+  /// </summary>
+  public delegate void ValidationEventHandler(object sender, ValidationEventArgs e);
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/CachedAttributeGetter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/CachedAttributeGetter.cs
@@ -1,44 +1,44 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-#if NETFX_CORE
-using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal static class CachedAttributeGetter<T> where T : Attribute
-  {
-    private static readonly ThreadSafeStore<ICustomAttributeProvider, T> TypeAttributeCache = new ThreadSafeStore<ICustomAttributeProvider, T>(JsonTypeReflector.GetAttribute<T>);
-
-    public static T GetAttribute(ICustomAttributeProvider type)
-    {
-      return TypeAttributeCache.Get(type);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+#if NETFX_CORE
+using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal static class CachedAttributeGetter<T> where T : Attribute
+  {
+    private static readonly ThreadSafeStore<ICustomAttributeProvider, T> TypeAttributeCache = new ThreadSafeStore<ICustomAttributeProvider, T>(JsonTypeReflector.GetAttribute<T>);
+
+    public static T GetAttribute(ICustomAttributeProvider type)
+    {
+      return TypeAttributeCache.Get(type);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/CamelCasePropertyNamesContractResolver.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/CamelCasePropertyNamesContractResolver.cs
@@ -1,55 +1,55 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Resolves member mappings for a type, camel casing property names.
-  /// </summary>
-  public class CamelCasePropertyNamesContractResolver : DefaultContractResolver
-  {
-    /// <summary>
-    /// Initializes a new instance of the <see cref="CamelCasePropertyNamesContractResolver"/> class.
-    /// </summary>
-    public CamelCasePropertyNamesContractResolver()
-      : base(true)
-    {
-    }
-
-    /// <summary>
-    /// Resolves the name of the property.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    /// <returns>The property name camel cased.</returns>
-    protected internal override string ResolvePropertyName(string propertyName)
-    {
-      // lower case the first letter of the passed in name
-      return StringUtils.ToCamelCase(propertyName);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Resolves member mappings for a type, camel casing property names.
+  /// </summary>
+  public class CamelCasePropertyNamesContractResolver : DefaultContractResolver
+  {
+    /// <summary>
+    /// Initializes a new instance of the <see cref="CamelCasePropertyNamesContractResolver"/> class.
+    /// </summary>
+    public CamelCasePropertyNamesContractResolver()
+      : base(true)
+    {
+    }
+
+    /// <summary>
+    /// Resolves the name of the property.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    /// <returns>The property name camel cased.</returns>
+    protected internal override string ResolvePropertyName(string propertyName)
+    {
+      // lower case the first letter of the passed in name
+      return StringUtils.ToCamelCase(propertyName);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs
@@ -1,996 +1,996 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
-using System.Collections.Concurrent;
-#endif
-using System.Collections.Generic;
-using System.ComponentModel;
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System.Dynamic;
-#endif
-using System.Globalization;
-using System.Reflection;
-using System.Runtime.Serialization;
-#if !NETFX_CORE
-using System.Security.Permissions;
-#endif
-using System.Xml.Serialization;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Linq;
-using System.Runtime.CompilerServices;
-#if NETFX_CORE
-using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
-#endif
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal struct ResolverContractKey : IEquatable<ResolverContractKey>
-  {
-    private readonly Type _resolverType;
-    private readonly Type _contractType;
-
-    public ResolverContractKey(Type resolverType, Type contractType)
-    {
-      _resolverType = resolverType;
-      _contractType = contractType;
-    }
-
-    public override int GetHashCode()
-    {
-      return _resolverType.GetHashCode() ^ _contractType.GetHashCode();
-    }
-
-    public override bool Equals(object obj)
-    {
-      if (!(obj is ResolverContractKey))
-        return false;
-
-      return Equals((ResolverContractKey)obj);
-    }
-
-    public bool Equals(ResolverContractKey other)
-    {
-      return (_resolverType == other._resolverType && _contractType == other._contractType);
-    }
-  }
-
-  /// <summary>
-  /// Used by <see cref="JsonSerializer"/> to resolves a <see cref="JsonContract"/> for a given <see cref="Type"/>.
-  /// </summary>
-  public class DefaultContractResolver : IContractResolver
-  {
-    private static readonly IContractResolver _instance = new DefaultContractResolver(true);
-    internal static IContractResolver Instance
-    {
-        get { return _instance; }
-    }
-    private static readonly IList<JsonConverter> BuiltInConverters = new List<JsonConverter>
-      {
-#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
-        new EntityKeyMemberConverter(),
-#endif
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-        new ExpandoObjectConverter(),
-#endif
-        new BinaryConverter(),
-        new KeyValuePairConverter(),
-#if (!SILVERLIGHT || WINDOWS_PHONE)
-        new XmlNodeConverter(),
-#endif
-#if !SILVERLIGHT && !NETFX_CORE
-        new DataSetConverter(),
-        new DataTableConverter(),
-#endif
-        new BsonObjectIdConverter()
-      };
-
-    private static Dictionary<ResolverContractKey, JsonContract> _sharedContractCache;
-    private static readonly object _typeContractCacheLock = new object();
-
-    private Dictionary<ResolverContractKey, JsonContract> _instanceContractCache;
-    private readonly bool _sharedCache;
-
-    /// <summary>
-    /// Gets a value indicating whether members are being get and set using dynamic code generation.
-    /// This value is determined by the runtime permissions available.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if using dynamic code generation; otherwise, <c>false</c>.
-    /// </value>
-    public bool DynamicCodeGeneration
-    {
-      get { return JsonTypeReflector.DynamicCodeGeneration; }
-    }
-
-#if !NETFX_CORE
-    /// <summary>
-    /// Gets or sets the default members search flags.
-    /// </summary>
-    /// <value>The default members search flags.</value>
-    public BindingFlags DefaultMembersSearchFlags { get; set; }
-#else
-    private BindingFlags DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.Public;
-#endif
-
-    /// <summary>
-    /// Gets or sets a value indicating whether compiler generated members should be serialized.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if serialized compiler generated members; otherwise, <c>false</c>.
-    /// </value>
-    public bool SerializeCompilerGeneratedMembers { get; set; }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    /// <summary>
-    /// Gets or sets a value indicating whether to ignore the ISerializable interface when serializing and deserializing types.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if the ISerializable interface will be ignored when serializing and deserializing types; otherwise, <c>false</c>.
-    /// </value>
-    public bool IgnoreSerializableInterface { get; set; }
-#endif
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="DefaultContractResolver"/> class.
-    /// </summary>
-    public DefaultContractResolver()
-      : this(false)
-    {
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="DefaultContractResolver"/> class.
-    /// </summary>
-    /// <param name="shareCache">
-    /// If set to <c>true</c> the <see cref="DefaultContractResolver"/> will use a cached shared with other resolvers of the same type.
-    /// Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected
-    /// behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly
-    /// recommended to reuse <see cref="DefaultContractResolver"/> instances with the <see cref="JsonSerializer"/>.
-    /// </param>
-    public DefaultContractResolver(bool shareCache)
-    {
-#if !NETFX_CORE
-      DefaultMembersSearchFlags = BindingFlags.Public | BindingFlags.Instance;
-#endif
-      _sharedCache = shareCache;
-    }
-
-    private Dictionary<ResolverContractKey, JsonContract> GetCache()
-    {
-      if (_sharedCache)
-        return _sharedContractCache;
-      else
-        return _instanceContractCache;
-    }
-
-    private void UpdateCache(Dictionary<ResolverContractKey, JsonContract> cache)
-    {
-      if (_sharedCache)
-        _sharedContractCache = cache;
-      else
-        _instanceContractCache = cache;
-    }
-
-    /// <summary>
-    /// Resolves the contract for a given type.
-    /// </summary>
-    /// <param name="type">The type to resolve a contract for.</param>
-    /// <returns>The contract for a given type.</returns>
-    public virtual JsonContract ResolveContract(Type type)
-    {
-      if (type == null)
-        throw new ArgumentNullException("type");
-
-      JsonContract contract;
-      ResolverContractKey key = new ResolverContractKey(GetType(), type);
-      Dictionary<ResolverContractKey, JsonContract> cache = GetCache();
-      if (cache == null || !cache.TryGetValue(key, out contract))
-      {
-        contract = CreateContract(type);
-
-        // avoid the possibility of modifying the cache dictionary while another thread is accessing it
-        lock (_typeContractCacheLock)
-        {
-          cache = GetCache();
-          Dictionary<ResolverContractKey, JsonContract> updatedCache =
-            (cache != null)
-              ? new Dictionary<ResolverContractKey, JsonContract>(cache)
-              : new Dictionary<ResolverContractKey, JsonContract>();
-          updatedCache[key] = contract;
-
-          UpdateCache(updatedCache);
-        }
-      }
-
-      return contract;
-    }
-
-    /// <summary>
-    /// Gets the serializable members for the type.
-    /// </summary>
-    /// <param name="objectType">The type to get serializable members for.</param>
-    /// <returns>The serializable members for the type.</returns>
-    protected virtual List<MemberInfo> GetSerializableMembers(Type objectType)
-    {
-#if !PocketPC && !NET20
-      DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(objectType);
-#endif
-
-      List<MemberInfo> defaultMembers = ReflectionUtils.GetFieldsAndProperties(objectType, DefaultMembersSearchFlags)
-        .Where(m => !ReflectionUtils.IsIndexedProperty(m)).ToList();
-      List<MemberInfo> allMembers = ReflectionUtils.GetFieldsAndProperties(objectType, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
-        .Where(m => !ReflectionUtils.IsIndexedProperty(m)).ToList();
-
-      List<MemberInfo> serializableMembers = new List<MemberInfo>();
-      foreach (MemberInfo member in allMembers)
-      {
-        // exclude members that are compiler generated if set
-        if (SerializeCompilerGeneratedMembers || !member.IsDefined(typeof(CompilerGeneratedAttribute), true))
-        {
-          if (defaultMembers.Contains(member))
-          {
-            // add all members that are found by default member search
-            serializableMembers.Add(member);
-          }
-          else
-          {
-            // add members that are explicitly marked with JsonProperty/DataMember attribute
-            if (JsonTypeReflector.GetAttribute<JsonPropertyAttribute>(member.GetCustomAttributeProvider()) != null)
-              serializableMembers.Add(member);
-#if !PocketPC && !NET20
-            else if (dataContractAttribute != null && JsonTypeReflector.GetAttribute<DataMemberAttribute>(member.GetCustomAttributeProvider()) != null)
-              serializableMembers.Add(member);
-#endif
-          }
-        }
-      }
-
-#if !PocketPC && !SILVERLIGHT && !NET20
-      Type match;
-      // don't include EntityKey on entities objects... this is a bit hacky
-      if (objectType.AssignableToTypeName("System.Data.Objects.DataClasses.EntityObject", out match))
-        serializableMembers = serializableMembers.Where(ShouldSerializeEntityMember).ToList();
-#endif
-
-      return serializableMembers;
-    }
-
-#if !PocketPC && !SILVERLIGHT && !NET20
-    private bool ShouldSerializeEntityMember(MemberInfo memberInfo)
-    {
-      PropertyInfo propertyInfo = memberInfo as PropertyInfo;
-      if (propertyInfo != null)
-      {
-        if (propertyInfo.PropertyType.IsGenericType() && propertyInfo.PropertyType.GetGenericTypeDefinition().FullName == "System.Data.Objects.DataClasses.EntityReference`1")
-          return false;
-      }
-
-      return true;
-    }
-#endif
-
-    /// <summary>
-    /// Creates a <see cref="JsonObjectContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonObjectContract"/> for the given type.</returns>
-    protected virtual JsonObjectContract CreateObjectContract(Type objectType)
-    {
-      JsonObjectContract contract = new JsonObjectContract(objectType);
-      InitializeContract(contract);
-
-      contract.MemberSerialization = JsonTypeReflector.GetObjectMemberSerialization(contract.NonNullableUnderlyingType);
-      contract.Properties.AddRange(CreateProperties(contract.NonNullableUnderlyingType, contract.MemberSerialization));
-
-      // check if a JsonConstructorAttribute has been defined and use that
-      if (contract.NonNullableUnderlyingType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Any(c => c.IsDefined(typeof(JsonConstructorAttribute), true)))
-      {
-        ConstructorInfo constructor = GetAttributeConstructor(contract.NonNullableUnderlyingType);
-        if (constructor != null)
-        {
-          contract.OverrideConstructor = constructor;
-          contract.ConstructorParameters.AddRange(CreateConstructorParameters(constructor, contract.Properties));
-        }
-      }
-      else if (contract.DefaultCreator == null || contract.DefaultCreatorNonPublic)
-      {
-        ConstructorInfo constructor = GetParametrizedConstructor(contract.NonNullableUnderlyingType);
-        if (constructor != null)
-        {
-          contract.ParametrizedConstructor = constructor;
-          contract.ConstructorParameters.AddRange(CreateConstructorParameters(constructor, contract.Properties));
-        }
-      }
-      return contract;
-    }
-
-    private ConstructorInfo GetAttributeConstructor(Type objectType)
-    {
-      IList<ConstructorInfo> markedConstructors = objectType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(c => c.IsDefined(typeof(JsonConstructorAttribute), true)).ToList();
-
-      if (markedConstructors.Count > 1)
-        throw new Exception("Multiple constructors with the JsonConstructorAttribute.");
-      else if (markedConstructors.Count == 1)
-        return markedConstructors[0];
-
-      return null;
-    }
-
-    private ConstructorInfo GetParametrizedConstructor(Type objectType)
-    {
-      IList<ConstructorInfo> constructors = objectType.GetConstructors(BindingFlags.Public | BindingFlags.Instance).ToList();
-
-      if (constructors.Count == 1)
-        return constructors[0];
-      else
-        return null;
-    }
-
-    /// <summary>
-    /// Creates the constructor parameters.
-    /// </summary>
-    /// <param name="constructor">The constructor to create properties for.</param>
-    /// <param name="memberProperties">The type's member properties.</param>
-    /// <returns>Properties for the given <see cref="ConstructorInfo"/>.</returns>
-    protected virtual IList<JsonProperty> CreateConstructorParameters(ConstructorInfo constructor, JsonPropertyCollection memberProperties)
-    {
-      var constructorParameters = constructor.GetParameters();
-
-      JsonPropertyCollection parameterCollection = new JsonPropertyCollection(constructor.DeclaringType);
-
-      foreach (ParameterInfo parameterInfo in constructorParameters)
-      {
-        JsonProperty matchingMemberProperty = memberProperties.GetClosestMatchProperty(parameterInfo.Name);
-        // type must match as well as name
-        if (matchingMemberProperty != null && matchingMemberProperty.PropertyType != parameterInfo.ParameterType)
-          matchingMemberProperty = null;
-
-        JsonProperty property = CreatePropertyFromConstructorParameter(matchingMemberProperty, parameterInfo);
-
-        if (property != null)
-        {
-          parameterCollection.AddProperty(property);
-        }
-      }
-
-      return parameterCollection;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JsonProperty"/> for the given <see cref="ParameterInfo"/>.
-    /// </summary>
-    /// <param name="matchingMemberProperty">The matching member property.</param>
-    /// <param name="parameterInfo">The constructor parameter.</param>
-    /// <returns>A created <see cref="JsonProperty"/> for the given <see cref="ParameterInfo"/>.</returns>
-    protected virtual JsonProperty CreatePropertyFromConstructorParameter(JsonProperty matchingMemberProperty, ParameterInfo parameterInfo)
-    {
-      JsonProperty property = new JsonProperty();
-      property.PropertyType = parameterInfo.ParameterType;
-
-      bool allowNonPublicAccess;
-      bool hasExplicitAttribute;
-      SetPropertySettingsFromAttributes(property, parameterInfo.GetCustomAttributeProvider(), parameterInfo.Name, parameterInfo.Member.DeclaringType, MemberSerialization.OptOut, out allowNonPublicAccess, out hasExplicitAttribute);
-
-      property.Readable = false;
-      property.Writable = true;
-
-      // "inherit" values from matching member property if unset on parameter
-      if (matchingMemberProperty != null)
-      {
-        property.PropertyName = (property.PropertyName != parameterInfo.Name) ? property.PropertyName : matchingMemberProperty.PropertyName;
-        property.Converter = property.Converter ?? matchingMemberProperty.Converter;
-        property.MemberConverter = property.MemberConverter ?? matchingMemberProperty.MemberConverter;
-        property.DefaultValue = property.DefaultValue ?? matchingMemberProperty.DefaultValue;
-        property.Required = (property.Required != Required.Default) ? property.Required : matchingMemberProperty.Required;
-        property.IsReference = property.IsReference ?? matchingMemberProperty.IsReference;
-        property.NullValueHandling = property.NullValueHandling ?? matchingMemberProperty.NullValueHandling;
-        property.DefaultValueHandling = property.DefaultValueHandling ?? matchingMemberProperty.DefaultValueHandling;
-        property.ReferenceLoopHandling = property.ReferenceLoopHandling ?? matchingMemberProperty.ReferenceLoopHandling;
-        property.ObjectCreationHandling = property.ObjectCreationHandling ?? matchingMemberProperty.ObjectCreationHandling;
-        property.TypeNameHandling = property.TypeNameHandling ?? matchingMemberProperty.TypeNameHandling;
-      }
-
-      return property;
-    }
-
-    /// <summary>
-    /// Resolves the default <see cref="JsonConverter" /> for the contract.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns></returns>
-    protected virtual JsonConverter ResolveContractConverter(Type objectType)
-    {
-      return JsonTypeReflector.GetJsonConverter(objectType.GetCustomAttributeProvider(), objectType);
-    }
-
-    private Func<object> GetDefaultCreator(Type createdType)
-    {
-      return JsonTypeReflector.ReflectionDelegateFactory.CreateDefaultConstructor<object>(createdType);
-    }
-
-#if !PocketPC && !NET20
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Portability", "CA1903:UseOnlyApiFromTargetedFramework", MessageId = "System.Runtime.Serialization.DataContractAttribute.#get_IsReference()")]
-#endif
-    private void InitializeContract(JsonContract contract)
-    {
-      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(contract.NonNullableUnderlyingType);
-      if (containerAttribute != null)
-      {
-        contract.IsReference = containerAttribute._isReference;
-      }
-#if !PocketPC && !NET20
-      else
-      {
-        DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(contract.NonNullableUnderlyingType);
-        // doesn't have a null value
-        if (dataContractAttribute != null && dataContractAttribute.IsReference)
-          contract.IsReference = true;
-      }
-#endif
-
-      contract.Converter = ResolveContractConverter(contract.NonNullableUnderlyingType);
-
-      // then see whether object is compadible with any of the built in converters
-      contract.InternalConverter = JsonSerializer.GetMatchingConverter(BuiltInConverters, contract.NonNullableUnderlyingType);
-
-      if (ReflectionUtils.HasDefaultConstructor(contract.CreatedType, true)
-        || contract.CreatedType.IsValueType())
-      {
-        contract.DefaultCreator = GetDefaultCreator(contract.CreatedType);
-
-        contract.DefaultCreatorNonPublic = (!contract.CreatedType.IsValueType() &&
-                                            ReflectionUtils.GetDefaultConstructor(contract.CreatedType) == null);
-      }
-
-      ResolveCallbackMethods(contract, contract.NonNullableUnderlyingType);
-    }
-
-    private void ResolveCallbackMethods(JsonContract contract, Type t)
-    {
-      if (t.BaseType() != null)
-        ResolveCallbackMethods(contract, t.BaseType());
-
-      MethodInfo onSerializing;
-      MethodInfo onSerialized;
-      MethodInfo onDeserializing;
-      MethodInfo onDeserialized;
-      MethodInfo onError;
-
-      GetCallbackMethodsForType(t, out onSerializing, out onSerialized, out onDeserializing, out onDeserialized, out onError);
-
-      if (onSerializing != null)
-      {
-#if NETFX_CORE
-        if (!t.IsGenericType() || (t.GetGenericTypeDefinition() != typeof(ConcurrentDictionary<,>)))
-          contract.OnSerializing = onSerializing;
-#else
-        contract.OnSerializing = onSerializing;
-#endif
-      }
-
-      if (onSerialized != null)
-        contract.OnSerialized = onSerialized;
-
-      if (onDeserializing != null)
-        contract.OnDeserializing = onDeserializing;
-
-      if (onDeserialized != null)
-      {
-        // ConcurrentDictionary throws an error here so don't use its OnDeserialized - http://json.codeplex.com/discussions/257093
-#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
-        if (!t.IsGenericType() || (t.GetGenericTypeDefinition() != typeof(ConcurrentDictionary<,>)))
-          contract.OnDeserialized = onDeserialized;
-#else
-        contract.OnDeserialized = onDeserialized;
-#endif
-      }
-
-      if (onError != null)
-        contract.OnError = onError;
-    }
-
-    private void GetCallbackMethodsForType(Type type, out MethodInfo onSerializing, out MethodInfo onSerialized, out MethodInfo onDeserializing, out MethodInfo onDeserialized, out MethodInfo onError)
-    {
-      onSerializing = null;
-      onSerialized = null;
-      onDeserializing = null;
-      onDeserialized = null;
-      onError = null;
-
-      foreach (MethodInfo method in type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly))
-      {
-        // compact framework errors when getting parameters for a generic method
-        // lame, but generic methods should not be callbacks anyway
-        if (method.ContainsGenericParameters)
-          continue;
-
-        Type prevAttributeType = null;
-        ParameterInfo[] parameters = method.GetParameters();
-
-        if (IsValidCallback(method, parameters, typeof(OnSerializingAttribute), onSerializing, ref prevAttributeType))
-        {
-          onSerializing = method;
-        }
-        if (IsValidCallback(method, parameters, typeof(OnSerializedAttribute), onSerialized, ref prevAttributeType))
-        {
-          onSerialized = method;
-        }
-        if (IsValidCallback(method, parameters, typeof(OnDeserializingAttribute), onDeserializing, ref prevAttributeType))
-        {
-          onDeserializing = method;
-        }
-        if (IsValidCallback(method, parameters, typeof(OnDeserializedAttribute), onDeserialized, ref prevAttributeType))
-        {
-          onDeserialized = method;
-        }
-        if (IsValidCallback(method, parameters, typeof(OnErrorAttribute), onError, ref prevAttributeType))
-        {
-          onError = method;
-        }
-      }
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JsonDictionaryContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonDictionaryContract"/> for the given type.</returns>
-    protected virtual JsonDictionaryContract CreateDictionaryContract(Type objectType)
-    {
-      JsonDictionaryContract contract = new JsonDictionaryContract(objectType);
-      InitializeContract(contract);
-
-      contract.PropertyNameResolver = ResolvePropertyName;
-
-      return contract;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JsonArrayContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonArrayContract"/> for the given type.</returns>
-    protected virtual JsonArrayContract CreateArrayContract(Type objectType)
-    {
-      JsonArrayContract contract = new JsonArrayContract(objectType);
-      InitializeContract(contract);
-
-      return contract;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JsonPrimitiveContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonPrimitiveContract"/> for the given type.</returns>
-    protected virtual JsonPrimitiveContract CreatePrimitiveContract(Type objectType)
-    {
-      JsonPrimitiveContract contract = new JsonPrimitiveContract(objectType);
-      InitializeContract(contract);
-
-      return contract;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JsonLinqContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonLinqContract"/> for the given type.</returns>
-    protected virtual JsonLinqContract CreateLinqContract(Type objectType)
-    {
-      JsonLinqContract contract = new JsonLinqContract(objectType);
-      InitializeContract(contract);
-
-      return contract;
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    /// <summary>
-    /// Creates a <see cref="JsonISerializableContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonISerializableContract"/> for the given type.</returns>
-    protected virtual JsonISerializableContract CreateISerializableContract(Type objectType)
-    {
-      JsonISerializableContract contract = new JsonISerializableContract(objectType);
-      InitializeContract(contract);
-
-      ConstructorInfo constructorInfo = contract.NonNullableUnderlyingType.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new[] { typeof(SerializationInfo), typeof(StreamingContext) }, null);
-      if (constructorInfo != null)
-      {
-        MethodCall<object, object> methodCall = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(constructorInfo);
-
-        contract.ISerializableCreator = (args => methodCall(null, args));
-      }
-
-      return contract;
-    }
-#endif
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    /// <summary>
-    /// Creates a <see cref="JsonDynamicContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonDynamicContract"/> for the given type.</returns>
-    protected virtual JsonDynamicContract CreateDynamicContract(Type objectType)
-    {
-      JsonDynamicContract contract = new JsonDynamicContract(objectType);
-      InitializeContract(contract);
-
-      contract.PropertyNameResolver = ResolvePropertyName;
-      contract.Properties.AddRange(CreateProperties(objectType, MemberSerialization.OptOut));
-
-      return contract;
-    }
-#endif
-
-    /// <summary>
-    /// Creates a <see cref="JsonStringContract"/> for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonStringContract"/> for the given type.</returns>
-    protected virtual JsonStringContract CreateStringContract(Type objectType)
-    {
-      JsonStringContract contract = new JsonStringContract(objectType);
-      InitializeContract(contract);
-
-      return contract;
-    }
-
-    /// <summary>
-    /// Determines which contract type is created for the given type.
-    /// </summary>
-    /// <param name="objectType">Type of the object.</param>
-    /// <returns>A <see cref="JsonContract"/> for the given type.</returns>
-    protected virtual JsonContract CreateContract(Type objectType)
-    {
-      Type t = ReflectionUtils.EnsureNotNullableType(objectType);
-
-      if (JsonConvert.IsJsonPrimitiveType(t))
-        return CreatePrimitiveContract(objectType);
-
-      if (JsonTypeReflector.GetJsonObjectAttribute(t) != null)
-        return CreateObjectContract(objectType);
-
-      if (JsonTypeReflector.GetJsonArrayAttribute(t) != null)
-        return CreateArrayContract(objectType);
-
-      if (t == typeof(JToken) || t.IsSubclassOf(typeof(JToken)))
-        return CreateLinqContract(objectType);
-
-      if (CollectionUtils.IsDictionaryType(t))
-        return CreateDictionaryContract(objectType);
-
-      if (typeof(IEnumerable).IsAssignableFrom(t))
-        return CreateArrayContract(objectType);
-
-      if (CanConvertToString(t))
-        return CreateStringContract(objectType);
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-      if (!IgnoreSerializableInterface && typeof(ISerializable).IsAssignableFrom(t))
-        return CreateISerializableContract(objectType);
-#endif
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-      if (typeof(IDynamicMetaObjectProvider).IsAssignableFrom(t))
-        return CreateDynamicContract(objectType);
-#endif
-
-      return CreateObjectContract(objectType);
-    }
-
-    internal static bool CanConvertToString(Type type)
-    {
-#if !PocketPC && !NETFX_CORE
-      TypeConverter converter = ConvertUtils.GetConverter(type);
-
-      // use the objectType's TypeConverter if it has one and can convert to a string
-      if (converter != null
-#if !SILVERLIGHT
- && !(converter is ComponentConverter)
- && !(converter is ReferenceConverter)
-#endif
- && converter.GetType() != typeof(TypeConverter))
-      {
-        if (converter.CanConvertTo(typeof(string)))
-          return true;
-      }
-#endif
-
-      if (type == typeof(Type) || type.IsSubclassOf(typeof(Type)))
-        return true;
-
-#if SILVERLIGHT || PocketPC
-      if (type == typeof(Guid) || type == typeof(Uri) || type == typeof(TimeSpan))
-        return true;
-#endif
-
-      return false;
-    }
-
-    private static bool IsValidCallback(MethodInfo method, ParameterInfo[] parameters, Type attributeType, MethodInfo currentCallback, ref Type prevAttributeType)
-    {
-      if (!method.IsDefined(attributeType, false))
-        return false;
-
-      if (currentCallback != null)
-        throw new Exception("Invalid attribute. Both '{0}' and '{1}' in type '{2}' have '{3}'.".FormatWith(CultureInfo.InvariantCulture, method, currentCallback, GetClrTypeFullName(method.DeclaringType), attributeType));
-
-      if (prevAttributeType != null)
-        throw new Exception("Invalid Callback. Method '{3}' in type '{2}' has both '{0}' and '{1}'.".FormatWith(CultureInfo.InvariantCulture, prevAttributeType, attributeType, GetClrTypeFullName(method.DeclaringType), method));
-
-      if (method.IsVirtual)
-        throw new Exception("Virtual Method '{0}' of type '{1}' cannot be marked with '{2}' attribute.".FormatWith(CultureInfo.InvariantCulture, method, GetClrTypeFullName(method.DeclaringType), attributeType));
-
-      if (method.ReturnType != typeof(void))
-        throw new Exception("Serialization Callback '{1}' in type '{0}' must return void.".FormatWith(CultureInfo.InvariantCulture, GetClrTypeFullName(method.DeclaringType), method));
-
-      if (attributeType == typeof(OnErrorAttribute))
-      {
-        if (parameters == null || parameters.Length != 2 || parameters[0].ParameterType != typeof(StreamingContext) || parameters[1].ParameterType != typeof(ErrorContext))
-          throw new Exception("Serialization Error Callback '{1}' in type '{0}' must have two parameters of type '{2}' and '{3}'.".FormatWith(CultureInfo.InvariantCulture, GetClrTypeFullName(method.DeclaringType), method, typeof(StreamingContext), typeof(ErrorContext)));
-      }
-      else
-      {
-        if (parameters == null || parameters.Length != 1 || parameters[0].ParameterType != typeof(StreamingContext))
-          throw new Exception("Serialization Callback '{1}' in type '{0}' must have a single parameter of type '{2}'.".FormatWith(CultureInfo.InvariantCulture, GetClrTypeFullName(method.DeclaringType), method, typeof(StreamingContext)));
-      }
-
-      prevAttributeType = attributeType;
-
-      return true;
-    }
-
-    internal static string GetClrTypeFullName(Type type)
-    {
-      if (type.IsGenericTypeDefinition() || !type.ContainsGenericParameters())
-        return type.FullName;
-
-      return string.Format(CultureInfo.InvariantCulture, "{0}.{1}", new object[] { type.Namespace, type.Name });
-    }
-
-    /// <summary>
-    /// Creates properties for the given <see cref="JsonContract"/>.
-    /// </summary>
-    /// <param name="type">The type to create properties for.</param>
-    /// /// <param name="memberSerialization">The member serialization mode for the type.</param>
-    /// <returns>Properties for the given <see cref="JsonContract"/>.</returns>
-    protected virtual IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
-    {
-      List<MemberInfo> members = GetSerializableMembers(type);
-      if (members == null)
-        throw new JsonSerializationException("Null collection of seralizable members returned.");
-
-      JsonPropertyCollection properties = new JsonPropertyCollection(type);
-
-      foreach (MemberInfo member in members)
-      {
-        JsonProperty property = CreateProperty(member, memberSerialization);
-
-        if (property != null)
-          properties.AddProperty(property);
-      }
-
-      IList<JsonProperty> orderedProperties = properties.OrderBy(p => p.Order ?? -1).ToList();
-      return orderedProperties;
-    }
-
-    /// <summary>
-    /// Creates the <see cref="IValueProvider"/> used by the serializer to get and set values from a member.
-    /// </summary>
-    /// <param name="member">The member.</param>
-    /// <returns>The <see cref="IValueProvider"/> used by the serializer to get and set values from a member.</returns>
-    protected virtual IValueProvider CreateMemberValueProvider(MemberInfo member)
-    {
-      // warning - this method use to cause errors with Intellitrace. Retest in VS Ultimate after changes
-      IValueProvider valueProvider;
-
-#if !PocketPC && !SILVERLIGHT
-      if (DynamicCodeGeneration)
-        valueProvider = new DynamicValueProvider(member);
-      else
-        valueProvider = new ReflectionValueProvider(member);
-#else
-      valueProvider = new ReflectionValueProvider(member);
-#endif
-
-      return valueProvider;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="JsonProperty"/> for the given <see cref="MemberInfo"/>.
-    /// </summary>
-    /// <param name="memberSerialization">The member's parent <see cref="MemberSerialization"/>.</param>
-    /// <param name="member">The member to create a <see cref="JsonProperty"/> for.</param>
-    /// <returns>A created <see cref="JsonProperty"/> for the given <see cref="MemberInfo"/>.</returns>
-    protected virtual JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
-    {
-      JsonProperty property = new JsonProperty();
-      property.PropertyType = ReflectionUtils.GetMemberUnderlyingType(member);
-      property.DeclaringType = member.DeclaringType;
-      property.ValueProvider = CreateMemberValueProvider(member);
-
-      bool allowNonPublicAccess;
-      bool hasExplicitAttribute;
-      SetPropertySettingsFromAttributes(property, member.GetCustomAttributeProvider(), member.Name, member.DeclaringType, memberSerialization, out allowNonPublicAccess, out hasExplicitAttribute);
-
-      property.Readable = ReflectionUtils.CanReadMemberValue(member, allowNonPublicAccess);
-      property.Writable = ReflectionUtils.CanSetMemberValue(member, allowNonPublicAccess, hasExplicitAttribute);
-      property.ShouldSerialize = CreateShouldSerializeTest(member);
-
-      SetIsSpecifiedActions(property, member, allowNonPublicAccess);
-
-      return property;
-    }
-
-    private void SetPropertySettingsFromAttributes(JsonProperty property, ICustomAttributeProvider attributeProvider, string name, Type declaringType, MemberSerialization memberSerialization, out bool allowNonPublicAccess, out bool hasExplicitAttribute)
-    {
-      hasExplicitAttribute = false;
-
-#if !PocketPC && !NET20
-      DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(declaringType);
-
-      MemberInfo memberInfo = null;
-#if !NETFX_CORE
-      memberInfo = attributeProvider as MemberInfo;
-#else
-      memberInfo = attributeProvider.UnderlyingObject as MemberInfo;
-#endif
-
-      DataMemberAttribute dataMemberAttribute;
-      if (dataContractAttribute != null && memberInfo != null)
-        dataMemberAttribute = JsonTypeReflector.GetDataMemberAttribute((MemberInfo)memberInfo);
-      else
-        dataMemberAttribute = null;
-#endif
-
-      JsonPropertyAttribute propertyAttribute = JsonTypeReflector.GetAttribute<JsonPropertyAttribute>(attributeProvider);
-      if (propertyAttribute != null)
-        hasExplicitAttribute = true;
-
-      bool hasIgnoreAttribute = (JsonTypeReflector.GetAttribute<JsonIgnoreAttribute>(attributeProvider) != null);
-
-      string mappedName;
-      if (propertyAttribute != null && propertyAttribute.PropertyName != null)
-        mappedName = propertyAttribute.PropertyName;
-#if !PocketPC && !NET20
-      else if (dataMemberAttribute != null && dataMemberAttribute.Name != null)
-        mappedName = dataMemberAttribute.Name;
-#endif
-      else
-        mappedName = name;
-
-      property.PropertyName = ResolvePropertyName(mappedName);
-      property.UnderlyingName = name;
-
-      if (propertyAttribute != null)
-      {
-        property.Required = propertyAttribute.Required;
-        property.Order = propertyAttribute._order;
-      }
-#if !PocketPC && !NET20
-      else if (dataMemberAttribute != null)
-      {
-        property.Required = (dataMemberAttribute.IsRequired) ? Required.AllowNull : Required.Default;
-        property.Order = (dataMemberAttribute.Order != -1) ? (int?) dataMemberAttribute.Order : null;
-      }
-#endif
-      else
-      {
-        property.Required = Required.Default;
-      }
-
-      property.Ignored = (hasIgnoreAttribute ||
-                      (memberSerialization == MemberSerialization.OptIn
-                       && propertyAttribute == null
-#if !PocketPC && !NET20
- && dataMemberAttribute == null
-#endif
-));
-
-      // resolve converter for property
-      // the class type might have a converter but the property converter takes presidence
-      property.Converter = JsonTypeReflector.GetJsonConverter(attributeProvider, property.PropertyType);
-      property.MemberConverter = JsonTypeReflector.GetJsonConverter(attributeProvider, property.PropertyType);
-
-      DefaultValueAttribute defaultValueAttribute = JsonTypeReflector.GetAttribute<DefaultValueAttribute>(attributeProvider);
-      property.DefaultValue = (defaultValueAttribute != null) ? defaultValueAttribute.Value : null;
-
-      property.NullValueHandling = (propertyAttribute != null) ? propertyAttribute._nullValueHandling : null;
-      property.DefaultValueHandling = (propertyAttribute != null) ? propertyAttribute._defaultValueHandling : null;
-      property.ReferenceLoopHandling = (propertyAttribute != null) ? propertyAttribute._referenceLoopHandling : null;
-      property.ObjectCreationHandling = (propertyAttribute != null) ? propertyAttribute._objectCreationHandling : null;
-      property.TypeNameHandling = (propertyAttribute != null) ? propertyAttribute._typeNameHandling : null;
-      property.IsReference = (propertyAttribute != null) ? propertyAttribute._isReference : null;
-
-      allowNonPublicAccess = false;
-      if ((DefaultMembersSearchFlags & BindingFlags.NonPublic) == BindingFlags.NonPublic)
-        allowNonPublicAccess = true;
-      if (propertyAttribute != null)
-        allowNonPublicAccess = true;
-
-#if !PocketPC && !NET20
-      if (dataMemberAttribute != null)
-      {
-        allowNonPublicAccess = true;
-        hasExplicitAttribute = true;
-      }
-#endif
-    }
-
-    private Predicate<object> CreateShouldSerializeTest(MemberInfo member)
-    {
-      MethodInfo shouldSerializeMethod = member.DeclaringType.GetMethod(JsonTypeReflector.ShouldSerializePrefix + member.Name, ReflectionUtils.EmptyTypes);
-
-      if (shouldSerializeMethod == null || shouldSerializeMethod.ReturnType != typeof(bool))
-        return null;
-
-      MethodCall<object, object> shouldSerializeCall =
-        JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(shouldSerializeMethod);
-
-      return o => (bool)shouldSerializeCall(o);
-    }
-
-    private void SetIsSpecifiedActions(JsonProperty property, MemberInfo member, bool allowNonPublicAccess)
-    {
-      MemberInfo specifiedMember = member.DeclaringType.GetProperty(member.Name + JsonTypeReflector.SpecifiedPostfix);
-      if (specifiedMember == null)
-        specifiedMember = member.DeclaringType.GetField(member.Name + JsonTypeReflector.SpecifiedPostfix);
-
-      if (specifiedMember == null || ReflectionUtils.GetMemberUnderlyingType(specifiedMember) != typeof(bool))
-      {
-        return;
-      }
-
-      Func<object, object> specifiedPropertyGet = JsonTypeReflector.ReflectionDelegateFactory.CreateGet<object>(specifiedMember);
-
-      property.GetIsSpecified = o => (bool)specifiedPropertyGet(o);
-
-      if (ReflectionUtils.CanSetMemberValue(specifiedMember, allowNonPublicAccess, false))
-        property.SetIsSpecified = JsonTypeReflector.ReflectionDelegateFactory.CreateSet<object>(specifiedMember);
-    }
-
-    /// <summary>
-    /// Resolves the name of the property.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    /// <returns>Name of the property.</returns>
-    protected internal virtual string ResolvePropertyName(string propertyName)
-    {
-      return propertyName;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
+using System.Collections.Concurrent;
+#endif
+using System.Collections.Generic;
+using System.ComponentModel;
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System.Dynamic;
+#endif
+using System.Globalization;
+using System.Reflection;
+using System.Runtime.Serialization;
+#if !NETFX_CORE
+using System.Security.Permissions;
+#endif
+using System.Xml.Serialization;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Linq;
+using System.Runtime.CompilerServices;
+#if NETFX_CORE
+using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
+#endif
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal struct ResolverContractKey : IEquatable<ResolverContractKey>
+  {
+    private readonly Type _resolverType;
+    private readonly Type _contractType;
+
+    public ResolverContractKey(Type resolverType, Type contractType)
+    {
+      _resolverType = resolverType;
+      _contractType = contractType;
+    }
+
+    public override int GetHashCode()
+    {
+      return _resolverType.GetHashCode() ^ _contractType.GetHashCode();
+    }
+
+    public override bool Equals(object obj)
+    {
+      if (!(obj is ResolverContractKey))
+        return false;
+
+      return Equals((ResolverContractKey)obj);
+    }
+
+    public bool Equals(ResolverContractKey other)
+    {
+      return (_resolverType == other._resolverType && _contractType == other._contractType);
+    }
+  }
+
+  /// <summary>
+  /// Used by <see cref="JsonSerializer"/> to resolves a <see cref="JsonContract"/> for a given <see cref="Type"/>.
+  /// </summary>
+  public class DefaultContractResolver : IContractResolver
+  {
+    private static readonly IContractResolver _instance = new DefaultContractResolver(true);
+    internal static IContractResolver Instance
+    {
+        get { return _instance; }
+    }
+    private static readonly IList<JsonConverter> BuiltInConverters = new List<JsonConverter>
+      {
+#if !PocketPC && !SILVERLIGHT && !NET20 && !NETFX_CORE
+        new EntityKeyMemberConverter(),
+#endif
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+        new ExpandoObjectConverter(),
+#endif
+        new BinaryConverter(),
+        new KeyValuePairConverter(),
+#if (!SILVERLIGHT || WINDOWS_PHONE)
+        new XmlNodeConverter(),
+#endif
+#if !SILVERLIGHT && !NETFX_CORE
+        new DataSetConverter(),
+        new DataTableConverter(),
+#endif
+        new BsonObjectIdConverter()
+      };
+
+    private static Dictionary<ResolverContractKey, JsonContract> _sharedContractCache;
+    private static readonly object _typeContractCacheLock = new object();
+
+    private Dictionary<ResolverContractKey, JsonContract> _instanceContractCache;
+    private readonly bool _sharedCache;
+
+    /// <summary>
+    /// Gets a value indicating whether members are being get and set using dynamic code generation.
+    /// This value is determined by the runtime permissions available.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if using dynamic code generation; otherwise, <c>false</c>.
+    /// </value>
+    public bool DynamicCodeGeneration
+    {
+      get { return JsonTypeReflector.DynamicCodeGeneration; }
+    }
+
+#if !NETFX_CORE
+    /// <summary>
+    /// Gets or sets the default members search flags.
+    /// </summary>
+    /// <value>The default members search flags.</value>
+    public BindingFlags DefaultMembersSearchFlags { get; set; }
+#else
+    private BindingFlags DefaultMembersSearchFlags = BindingFlags.Instance | BindingFlags.Public;
+#endif
+
+    /// <summary>
+    /// Gets or sets a value indicating whether compiler generated members should be serialized.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if serialized compiler generated members; otherwise, <c>false</c>.
+    /// </value>
+    public bool SerializeCompilerGeneratedMembers { get; set; }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    /// <summary>
+    /// Gets or sets a value indicating whether to ignore the ISerializable interface when serializing and deserializing types.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if the ISerializable interface will be ignored when serializing and deserializing types; otherwise, <c>false</c>.
+    /// </value>
+    public bool IgnoreSerializableInterface { get; set; }
+#endif
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="DefaultContractResolver"/> class.
+    /// </summary>
+    public DefaultContractResolver()
+      : this(false)
+    {
+    }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="DefaultContractResolver"/> class.
+    /// </summary>
+    /// <param name="shareCache">
+    /// If set to <c>true</c> the <see cref="DefaultContractResolver"/> will use a cached shared with other resolvers of the same type.
+    /// Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected
+    /// behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly
+    /// recommended to reuse <see cref="DefaultContractResolver"/> instances with the <see cref="JsonSerializer"/>.
+    /// </param>
+    public DefaultContractResolver(bool shareCache)
+    {
+#if !NETFX_CORE
+      DefaultMembersSearchFlags = BindingFlags.Public | BindingFlags.Instance;
+#endif
+      _sharedCache = shareCache;
+    }
+
+    private Dictionary<ResolverContractKey, JsonContract> GetCache()
+    {
+      if (_sharedCache)
+        return _sharedContractCache;
+      else
+        return _instanceContractCache;
+    }
+
+    private void UpdateCache(Dictionary<ResolverContractKey, JsonContract> cache)
+    {
+      if (_sharedCache)
+        _sharedContractCache = cache;
+      else
+        _instanceContractCache = cache;
+    }
+
+    /// <summary>
+    /// Resolves the contract for a given type.
+    /// </summary>
+    /// <param name="type">The type to resolve a contract for.</param>
+    /// <returns>The contract for a given type.</returns>
+    public virtual JsonContract ResolveContract(Type type)
+    {
+      if (type == null)
+        throw new ArgumentNullException("type");
+
+      JsonContract contract;
+      ResolverContractKey key = new ResolverContractKey(GetType(), type);
+      Dictionary<ResolverContractKey, JsonContract> cache = GetCache();
+      if (cache == null || !cache.TryGetValue(key, out contract))
+      {
+        contract = CreateContract(type);
+
+        // avoid the possibility of modifying the cache dictionary while another thread is accessing it
+        lock (_typeContractCacheLock)
+        {
+          cache = GetCache();
+          Dictionary<ResolverContractKey, JsonContract> updatedCache =
+            (cache != null)
+              ? new Dictionary<ResolverContractKey, JsonContract>(cache)
+              : new Dictionary<ResolverContractKey, JsonContract>();
+          updatedCache[key] = contract;
+
+          UpdateCache(updatedCache);
+        }
+      }
+
+      return contract;
+    }
+
+    /// <summary>
+    /// Gets the serializable members for the type.
+    /// </summary>
+    /// <param name="objectType">The type to get serializable members for.</param>
+    /// <returns>The serializable members for the type.</returns>
+    protected virtual List<MemberInfo> GetSerializableMembers(Type objectType)
+    {
+#if !PocketPC && !NET20
+      DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(objectType);
+#endif
+
+      List<MemberInfo> defaultMembers = ReflectionUtils.GetFieldsAndProperties(objectType, DefaultMembersSearchFlags)
+        .Where(m => !ReflectionUtils.IsIndexedProperty(m)).ToList();
+      List<MemberInfo> allMembers = ReflectionUtils.GetFieldsAndProperties(objectType, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
+        .Where(m => !ReflectionUtils.IsIndexedProperty(m)).ToList();
+
+      List<MemberInfo> serializableMembers = new List<MemberInfo>();
+      foreach (MemberInfo member in allMembers)
+      {
+        // exclude members that are compiler generated if set
+        if (SerializeCompilerGeneratedMembers || !member.IsDefined(typeof(CompilerGeneratedAttribute), true))
+        {
+          if (defaultMembers.Contains(member))
+          {
+            // add all members that are found by default member search
+            serializableMembers.Add(member);
+          }
+          else
+          {
+            // add members that are explicitly marked with JsonProperty/DataMember attribute
+            if (JsonTypeReflector.GetAttribute<JsonPropertyAttribute>(member.GetCustomAttributeProvider()) != null)
+              serializableMembers.Add(member);
+#if !PocketPC && !NET20
+            else if (dataContractAttribute != null && JsonTypeReflector.GetAttribute<DataMemberAttribute>(member.GetCustomAttributeProvider()) != null)
+              serializableMembers.Add(member);
+#endif
+          }
+        }
+      }
+
+#if !PocketPC && !SILVERLIGHT && !NET20
+      Type match;
+      // don't include EntityKey on entities objects... this is a bit hacky
+      if (objectType.AssignableToTypeName("System.Data.Objects.DataClasses.EntityObject", out match))
+        serializableMembers = serializableMembers.Where(ShouldSerializeEntityMember).ToList();
+#endif
+
+      return serializableMembers;
+    }
+
+#if !PocketPC && !SILVERLIGHT && !NET20
+    private bool ShouldSerializeEntityMember(MemberInfo memberInfo)
+    {
+      PropertyInfo propertyInfo = memberInfo as PropertyInfo;
+      if (propertyInfo != null)
+      {
+        if (propertyInfo.PropertyType.IsGenericType() && propertyInfo.PropertyType.GetGenericTypeDefinition().FullName == "System.Data.Objects.DataClasses.EntityReference`1")
+          return false;
+      }
+
+      return true;
+    }
+#endif
+
+    /// <summary>
+    /// Creates a <see cref="JsonObjectContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonObjectContract"/> for the given type.</returns>
+    protected virtual JsonObjectContract CreateObjectContract(Type objectType)
+    {
+      JsonObjectContract contract = new JsonObjectContract(objectType);
+      InitializeContract(contract);
+
+      contract.MemberSerialization = JsonTypeReflector.GetObjectMemberSerialization(contract.NonNullableUnderlyingType);
+      contract.Properties.AddRange(CreateProperties(contract.NonNullableUnderlyingType, contract.MemberSerialization));
+
+      // check if a JsonConstructorAttribute has been defined and use that
+      if (contract.NonNullableUnderlyingType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Any(c => c.IsDefined(typeof(JsonConstructorAttribute), true)))
+      {
+        ConstructorInfo constructor = GetAttributeConstructor(contract.NonNullableUnderlyingType);
+        if (constructor != null)
+        {
+          contract.OverrideConstructor = constructor;
+          contract.ConstructorParameters.AddRange(CreateConstructorParameters(constructor, contract.Properties));
+        }
+      }
+      else if (contract.DefaultCreator == null || contract.DefaultCreatorNonPublic)
+      {
+        ConstructorInfo constructor = GetParametrizedConstructor(contract.NonNullableUnderlyingType);
+        if (constructor != null)
+        {
+          contract.ParametrizedConstructor = constructor;
+          contract.ConstructorParameters.AddRange(CreateConstructorParameters(constructor, contract.Properties));
+        }
+      }
+      return contract;
+    }
+
+    private ConstructorInfo GetAttributeConstructor(Type objectType)
+    {
+      IList<ConstructorInfo> markedConstructors = objectType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(c => c.IsDefined(typeof(JsonConstructorAttribute), true)).ToList();
+
+      if (markedConstructors.Count > 1)
+        throw new Exception("Multiple constructors with the JsonConstructorAttribute.");
+      else if (markedConstructors.Count == 1)
+        return markedConstructors[0];
+
+      return null;
+    }
+
+    private ConstructorInfo GetParametrizedConstructor(Type objectType)
+    {
+      IList<ConstructorInfo> constructors = objectType.GetConstructors(BindingFlags.Public | BindingFlags.Instance).ToList();
+
+      if (constructors.Count == 1)
+        return constructors[0];
+      else
+        return null;
+    }
+
+    /// <summary>
+    /// Creates the constructor parameters.
+    /// </summary>
+    /// <param name="constructor">The constructor to create properties for.</param>
+    /// <param name="memberProperties">The type's member properties.</param>
+    /// <returns>Properties for the given <see cref="ConstructorInfo"/>.</returns>
+    protected virtual IList<JsonProperty> CreateConstructorParameters(ConstructorInfo constructor, JsonPropertyCollection memberProperties)
+    {
+      var constructorParameters = constructor.GetParameters();
+
+      JsonPropertyCollection parameterCollection = new JsonPropertyCollection(constructor.DeclaringType);
+
+      foreach (ParameterInfo parameterInfo in constructorParameters)
+      {
+        JsonProperty matchingMemberProperty = memberProperties.GetClosestMatchProperty(parameterInfo.Name);
+        // type must match as well as name
+        if (matchingMemberProperty != null && matchingMemberProperty.PropertyType != parameterInfo.ParameterType)
+          matchingMemberProperty = null;
+
+        JsonProperty property = CreatePropertyFromConstructorParameter(matchingMemberProperty, parameterInfo);
+
+        if (property != null)
+        {
+          parameterCollection.AddProperty(property);
+        }
+      }
+
+      return parameterCollection;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JsonProperty"/> for the given <see cref="ParameterInfo"/>.
+    /// </summary>
+    /// <param name="matchingMemberProperty">The matching member property.</param>
+    /// <param name="parameterInfo">The constructor parameter.</param>
+    /// <returns>A created <see cref="JsonProperty"/> for the given <see cref="ParameterInfo"/>.</returns>
+    protected virtual JsonProperty CreatePropertyFromConstructorParameter(JsonProperty matchingMemberProperty, ParameterInfo parameterInfo)
+    {
+      JsonProperty property = new JsonProperty();
+      property.PropertyType = parameterInfo.ParameterType;
+
+      bool allowNonPublicAccess;
+      bool hasExplicitAttribute;
+      SetPropertySettingsFromAttributes(property, parameterInfo.GetCustomAttributeProvider(), parameterInfo.Name, parameterInfo.Member.DeclaringType, MemberSerialization.OptOut, out allowNonPublicAccess, out hasExplicitAttribute);
+
+      property.Readable = false;
+      property.Writable = true;
+
+      // "inherit" values from matching member property if unset on parameter
+      if (matchingMemberProperty != null)
+      {
+        property.PropertyName = (property.PropertyName != parameterInfo.Name) ? property.PropertyName : matchingMemberProperty.PropertyName;
+        property.Converter = property.Converter ?? matchingMemberProperty.Converter;
+        property.MemberConverter = property.MemberConverter ?? matchingMemberProperty.MemberConverter;
+        property.DefaultValue = property.DefaultValue ?? matchingMemberProperty.DefaultValue;
+        property.Required = (property.Required != Required.Default) ? property.Required : matchingMemberProperty.Required;
+        property.IsReference = property.IsReference ?? matchingMemberProperty.IsReference;
+        property.NullValueHandling = property.NullValueHandling ?? matchingMemberProperty.NullValueHandling;
+        property.DefaultValueHandling = property.DefaultValueHandling ?? matchingMemberProperty.DefaultValueHandling;
+        property.ReferenceLoopHandling = property.ReferenceLoopHandling ?? matchingMemberProperty.ReferenceLoopHandling;
+        property.ObjectCreationHandling = property.ObjectCreationHandling ?? matchingMemberProperty.ObjectCreationHandling;
+        property.TypeNameHandling = property.TypeNameHandling ?? matchingMemberProperty.TypeNameHandling;
+      }
+
+      return property;
+    }
+
+    /// <summary>
+    /// Resolves the default <see cref="JsonConverter" /> for the contract.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns></returns>
+    protected virtual JsonConverter ResolveContractConverter(Type objectType)
+    {
+      return JsonTypeReflector.GetJsonConverter(objectType.GetCustomAttributeProvider(), objectType);
+    }
+
+    private Func<object> GetDefaultCreator(Type createdType)
+    {
+      return JsonTypeReflector.ReflectionDelegateFactory.CreateDefaultConstructor<object>(createdType);
+    }
+
+#if !PocketPC && !NET20
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Portability", "CA1903:UseOnlyApiFromTargetedFramework", MessageId = "System.Runtime.Serialization.DataContractAttribute.#get_IsReference()")]
+#endif
+    private void InitializeContract(JsonContract contract)
+    {
+      JsonContainerAttribute containerAttribute = JsonTypeReflector.GetJsonContainerAttribute(contract.NonNullableUnderlyingType);
+      if (containerAttribute != null)
+      {
+        contract.IsReference = containerAttribute._isReference;
+      }
+#if !PocketPC && !NET20
+      else
+      {
+        DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(contract.NonNullableUnderlyingType);
+        // doesn't have a null value
+        if (dataContractAttribute != null && dataContractAttribute.IsReference)
+          contract.IsReference = true;
+      }
+#endif
+
+      contract.Converter = ResolveContractConverter(contract.NonNullableUnderlyingType);
+
+      // then see whether object is compadible with any of the built in converters
+      contract.InternalConverter = JsonSerializer.GetMatchingConverter(BuiltInConverters, contract.NonNullableUnderlyingType);
+
+      if (ReflectionUtils.HasDefaultConstructor(contract.CreatedType, true)
+        || contract.CreatedType.IsValueType())
+      {
+        contract.DefaultCreator = GetDefaultCreator(contract.CreatedType);
+
+        contract.DefaultCreatorNonPublic = (!contract.CreatedType.IsValueType() &&
+                                            ReflectionUtils.GetDefaultConstructor(contract.CreatedType) == null);
+      }
+
+      ResolveCallbackMethods(contract, contract.NonNullableUnderlyingType);
+    }
+
+    private void ResolveCallbackMethods(JsonContract contract, Type t)
+    {
+      if (t.BaseType() != null)
+        ResolveCallbackMethods(contract, t.BaseType());
+
+      MethodInfo onSerializing;
+      MethodInfo onSerialized;
+      MethodInfo onDeserializing;
+      MethodInfo onDeserialized;
+      MethodInfo onError;
+
+      GetCallbackMethodsForType(t, out onSerializing, out onSerialized, out onDeserializing, out onDeserialized, out onError);
+
+      if (onSerializing != null)
+      {
+#if NETFX_CORE
+        if (!t.IsGenericType() || (t.GetGenericTypeDefinition() != typeof(ConcurrentDictionary<,>)))
+          contract.OnSerializing = onSerializing;
+#else
+        contract.OnSerializing = onSerializing;
+#endif
+      }
+
+      if (onSerialized != null)
+        contract.OnSerialized = onSerialized;
+
+      if (onDeserializing != null)
+        contract.OnDeserializing = onDeserializing;
+
+      if (onDeserialized != null)
+      {
+        // ConcurrentDictionary throws an error here so don't use its OnDeserialized - http://json.codeplex.com/discussions/257093
+#if !(NET35 || NET20 || SILVERLIGHT || WINDOWS_PHONE)
+        if (!t.IsGenericType() || (t.GetGenericTypeDefinition() != typeof(ConcurrentDictionary<,>)))
+          contract.OnDeserialized = onDeserialized;
+#else
+        contract.OnDeserialized = onDeserialized;
+#endif
+      }
+
+      if (onError != null)
+        contract.OnError = onError;
+    }
+
+    private void GetCallbackMethodsForType(Type type, out MethodInfo onSerializing, out MethodInfo onSerialized, out MethodInfo onDeserializing, out MethodInfo onDeserialized, out MethodInfo onError)
+    {
+      onSerializing = null;
+      onSerialized = null;
+      onDeserializing = null;
+      onDeserialized = null;
+      onError = null;
+
+      foreach (MethodInfo method in type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly))
+      {
+        // compact framework errors when getting parameters for a generic method
+        // lame, but generic methods should not be callbacks anyway
+        if (method.ContainsGenericParameters)
+          continue;
+
+        Type prevAttributeType = null;
+        ParameterInfo[] parameters = method.GetParameters();
+
+        if (IsValidCallback(method, parameters, typeof(OnSerializingAttribute), onSerializing, ref prevAttributeType))
+        {
+          onSerializing = method;
+        }
+        if (IsValidCallback(method, parameters, typeof(OnSerializedAttribute), onSerialized, ref prevAttributeType))
+        {
+          onSerialized = method;
+        }
+        if (IsValidCallback(method, parameters, typeof(OnDeserializingAttribute), onDeserializing, ref prevAttributeType))
+        {
+          onDeserializing = method;
+        }
+        if (IsValidCallback(method, parameters, typeof(OnDeserializedAttribute), onDeserialized, ref prevAttributeType))
+        {
+          onDeserialized = method;
+        }
+        if (IsValidCallback(method, parameters, typeof(OnErrorAttribute), onError, ref prevAttributeType))
+        {
+          onError = method;
+        }
+      }
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JsonDictionaryContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonDictionaryContract"/> for the given type.</returns>
+    protected virtual JsonDictionaryContract CreateDictionaryContract(Type objectType)
+    {
+      JsonDictionaryContract contract = new JsonDictionaryContract(objectType);
+      InitializeContract(contract);
+
+      contract.PropertyNameResolver = ResolvePropertyName;
+
+      return contract;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JsonArrayContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonArrayContract"/> for the given type.</returns>
+    protected virtual JsonArrayContract CreateArrayContract(Type objectType)
+    {
+      JsonArrayContract contract = new JsonArrayContract(objectType);
+      InitializeContract(contract);
+
+      return contract;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JsonPrimitiveContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonPrimitiveContract"/> for the given type.</returns>
+    protected virtual JsonPrimitiveContract CreatePrimitiveContract(Type objectType)
+    {
+      JsonPrimitiveContract contract = new JsonPrimitiveContract(objectType);
+      InitializeContract(contract);
+
+      return contract;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JsonLinqContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonLinqContract"/> for the given type.</returns>
+    protected virtual JsonLinqContract CreateLinqContract(Type objectType)
+    {
+      JsonLinqContract contract = new JsonLinqContract(objectType);
+      InitializeContract(contract);
+
+      return contract;
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    /// <summary>
+    /// Creates a <see cref="JsonISerializableContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonISerializableContract"/> for the given type.</returns>
+    protected virtual JsonISerializableContract CreateISerializableContract(Type objectType)
+    {
+      JsonISerializableContract contract = new JsonISerializableContract(objectType);
+      InitializeContract(contract);
+
+      ConstructorInfo constructorInfo = contract.NonNullableUnderlyingType.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new[] { typeof(SerializationInfo), typeof(StreamingContext) }, null);
+      if (constructorInfo != null)
+      {
+        MethodCall<object, object> methodCall = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(constructorInfo);
+
+        contract.ISerializableCreator = (args => methodCall(null, args));
+      }
+
+      return contract;
+    }
+#endif
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    /// <summary>
+    /// Creates a <see cref="JsonDynamicContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonDynamicContract"/> for the given type.</returns>
+    protected virtual JsonDynamicContract CreateDynamicContract(Type objectType)
+    {
+      JsonDynamicContract contract = new JsonDynamicContract(objectType);
+      InitializeContract(contract);
+
+      contract.PropertyNameResolver = ResolvePropertyName;
+      contract.Properties.AddRange(CreateProperties(objectType, MemberSerialization.OptOut));
+
+      return contract;
+    }
+#endif
+
+    /// <summary>
+    /// Creates a <see cref="JsonStringContract"/> for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonStringContract"/> for the given type.</returns>
+    protected virtual JsonStringContract CreateStringContract(Type objectType)
+    {
+      JsonStringContract contract = new JsonStringContract(objectType);
+      InitializeContract(contract);
+
+      return contract;
+    }
+
+    /// <summary>
+    /// Determines which contract type is created for the given type.
+    /// </summary>
+    /// <param name="objectType">Type of the object.</param>
+    /// <returns>A <see cref="JsonContract"/> for the given type.</returns>
+    protected virtual JsonContract CreateContract(Type objectType)
+    {
+      Type t = ReflectionUtils.EnsureNotNullableType(objectType);
+
+      if (JsonConvert.IsJsonPrimitiveType(t))
+        return CreatePrimitiveContract(objectType);
+
+      if (JsonTypeReflector.GetJsonObjectAttribute(t) != null)
+        return CreateObjectContract(objectType);
+
+      if (JsonTypeReflector.GetJsonArrayAttribute(t) != null)
+        return CreateArrayContract(objectType);
+
+      if (t == typeof(JToken) || t.IsSubclassOf(typeof(JToken)))
+        return CreateLinqContract(objectType);
+
+      if (CollectionUtils.IsDictionaryType(t))
+        return CreateDictionaryContract(objectType);
+
+      if (typeof(IEnumerable).IsAssignableFrom(t))
+        return CreateArrayContract(objectType);
+
+      if (CanConvertToString(t))
+        return CreateStringContract(objectType);
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+      if (!IgnoreSerializableInterface && typeof(ISerializable).IsAssignableFrom(t))
+        return CreateISerializableContract(objectType);
+#endif
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+      if (typeof(IDynamicMetaObjectProvider).IsAssignableFrom(t))
+        return CreateDynamicContract(objectType);
+#endif
+
+      return CreateObjectContract(objectType);
+    }
+
+    internal static bool CanConvertToString(Type type)
+    {
+#if !PocketPC && !NETFX_CORE
+      TypeConverter converter = ConvertUtils.GetConverter(type);
+
+      // use the objectType's TypeConverter if it has one and can convert to a string
+      if (converter != null
+#if !SILVERLIGHT
+ && !(converter is ComponentConverter)
+ && !(converter is ReferenceConverter)
+#endif
+ && converter.GetType() != typeof(TypeConverter))
+      {
+        if (converter.CanConvertTo(typeof(string)))
+          return true;
+      }
+#endif
+
+      if (type == typeof(Type) || type.IsSubclassOf(typeof(Type)))
+        return true;
+
+#if SILVERLIGHT || PocketPC
+      if (type == typeof(Guid) || type == typeof(Uri) || type == typeof(TimeSpan))
+        return true;
+#endif
+
+      return false;
+    }
+
+    private static bool IsValidCallback(MethodInfo method, ParameterInfo[] parameters, Type attributeType, MethodInfo currentCallback, ref Type prevAttributeType)
+    {
+      if (!method.IsDefined(attributeType, false))
+        return false;
+
+      if (currentCallback != null)
+        throw new Exception("Invalid attribute. Both '{0}' and '{1}' in type '{2}' have '{3}'.".FormatWith(CultureInfo.InvariantCulture, method, currentCallback, GetClrTypeFullName(method.DeclaringType), attributeType));
+
+      if (prevAttributeType != null)
+        throw new Exception("Invalid Callback. Method '{3}' in type '{2}' has both '{0}' and '{1}'.".FormatWith(CultureInfo.InvariantCulture, prevAttributeType, attributeType, GetClrTypeFullName(method.DeclaringType), method));
+
+      if (method.IsVirtual)
+        throw new Exception("Virtual Method '{0}' of type '{1}' cannot be marked with '{2}' attribute.".FormatWith(CultureInfo.InvariantCulture, method, GetClrTypeFullName(method.DeclaringType), attributeType));
+
+      if (method.ReturnType != typeof(void))
+        throw new Exception("Serialization Callback '{1}' in type '{0}' must return void.".FormatWith(CultureInfo.InvariantCulture, GetClrTypeFullName(method.DeclaringType), method));
+
+      if (attributeType == typeof(OnErrorAttribute))
+      {
+        if (parameters == null || parameters.Length != 2 || parameters[0].ParameterType != typeof(StreamingContext) || parameters[1].ParameterType != typeof(ErrorContext))
+          throw new Exception("Serialization Error Callback '{1}' in type '{0}' must have two parameters of type '{2}' and '{3}'.".FormatWith(CultureInfo.InvariantCulture, GetClrTypeFullName(method.DeclaringType), method, typeof(StreamingContext), typeof(ErrorContext)));
+      }
+      else
+      {
+        if (parameters == null || parameters.Length != 1 || parameters[0].ParameterType != typeof(StreamingContext))
+          throw new Exception("Serialization Callback '{1}' in type '{0}' must have a single parameter of type '{2}'.".FormatWith(CultureInfo.InvariantCulture, GetClrTypeFullName(method.DeclaringType), method, typeof(StreamingContext)));
+      }
+
+      prevAttributeType = attributeType;
+
+      return true;
+    }
+
+    internal static string GetClrTypeFullName(Type type)
+    {
+      if (type.IsGenericTypeDefinition() || !type.ContainsGenericParameters())
+        return type.FullName;
+
+      return string.Format(CultureInfo.InvariantCulture, "{0}.{1}", new object[] { type.Namespace, type.Name });
+    }
+
+    /// <summary>
+    /// Creates properties for the given <see cref="JsonContract"/>.
+    /// </summary>
+    /// <param name="type">The type to create properties for.</param>
+    /// /// <param name="memberSerialization">The member serialization mode for the type.</param>
+    /// <returns>Properties for the given <see cref="JsonContract"/>.</returns>
+    protected virtual IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
+    {
+      List<MemberInfo> members = GetSerializableMembers(type);
+      if (members == null)
+        throw new JsonSerializationException("Null collection of seralizable members returned.");
+
+      JsonPropertyCollection properties = new JsonPropertyCollection(type);
+
+      foreach (MemberInfo member in members)
+      {
+        JsonProperty property = CreateProperty(member, memberSerialization);
+
+        if (property != null)
+          properties.AddProperty(property);
+      }
+
+      IList<JsonProperty> orderedProperties = properties.OrderBy(p => p.Order ?? -1).ToList();
+      return orderedProperties;
+    }
+
+    /// <summary>
+    /// Creates the <see cref="IValueProvider"/> used by the serializer to get and set values from a member.
+    /// </summary>
+    /// <param name="member">The member.</param>
+    /// <returns>The <see cref="IValueProvider"/> used by the serializer to get and set values from a member.</returns>
+    protected virtual IValueProvider CreateMemberValueProvider(MemberInfo member)
+    {
+      // warning - this method use to cause errors with Intellitrace. Retest in VS Ultimate after changes
+      IValueProvider valueProvider;
+
+#if !PocketPC && !SILVERLIGHT
+      if (DynamicCodeGeneration)
+        valueProvider = new DynamicValueProvider(member);
+      else
+        valueProvider = new ReflectionValueProvider(member);
+#else
+      valueProvider = new ReflectionValueProvider(member);
+#endif
+
+      return valueProvider;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="JsonProperty"/> for the given <see cref="MemberInfo"/>.
+    /// </summary>
+    /// <param name="memberSerialization">The member's parent <see cref="MemberSerialization"/>.</param>
+    /// <param name="member">The member to create a <see cref="JsonProperty"/> for.</param>
+    /// <returns>A created <see cref="JsonProperty"/> for the given <see cref="MemberInfo"/>.</returns>
+    protected virtual JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
+    {
+      JsonProperty property = new JsonProperty();
+      property.PropertyType = ReflectionUtils.GetMemberUnderlyingType(member);
+      property.DeclaringType = member.DeclaringType;
+      property.ValueProvider = CreateMemberValueProvider(member);
+
+      bool allowNonPublicAccess;
+      bool hasExplicitAttribute;
+      SetPropertySettingsFromAttributes(property, member.GetCustomAttributeProvider(), member.Name, member.DeclaringType, memberSerialization, out allowNonPublicAccess, out hasExplicitAttribute);
+
+      property.Readable = ReflectionUtils.CanReadMemberValue(member, allowNonPublicAccess);
+      property.Writable = ReflectionUtils.CanSetMemberValue(member, allowNonPublicAccess, hasExplicitAttribute);
+      property.ShouldSerialize = CreateShouldSerializeTest(member);
+
+      SetIsSpecifiedActions(property, member, allowNonPublicAccess);
+
+      return property;
+    }
+
+    private void SetPropertySettingsFromAttributes(JsonProperty property, ICustomAttributeProvider attributeProvider, string name, Type declaringType, MemberSerialization memberSerialization, out bool allowNonPublicAccess, out bool hasExplicitAttribute)
+    {
+      hasExplicitAttribute = false;
+
+#if !PocketPC && !NET20
+      DataContractAttribute dataContractAttribute = JsonTypeReflector.GetDataContractAttribute(declaringType);
+
+      MemberInfo memberInfo = null;
+#if !NETFX_CORE
+      memberInfo = attributeProvider as MemberInfo;
+#else
+      memberInfo = attributeProvider.UnderlyingObject as MemberInfo;
+#endif
+
+      DataMemberAttribute dataMemberAttribute;
+      if (dataContractAttribute != null && memberInfo != null)
+        dataMemberAttribute = JsonTypeReflector.GetDataMemberAttribute((MemberInfo)memberInfo);
+      else
+        dataMemberAttribute = null;
+#endif
+
+      JsonPropertyAttribute propertyAttribute = JsonTypeReflector.GetAttribute<JsonPropertyAttribute>(attributeProvider);
+      if (propertyAttribute != null)
+        hasExplicitAttribute = true;
+
+      bool hasIgnoreAttribute = (JsonTypeReflector.GetAttribute<JsonIgnoreAttribute>(attributeProvider) != null);
+
+      string mappedName;
+      if (propertyAttribute != null && propertyAttribute.PropertyName != null)
+        mappedName = propertyAttribute.PropertyName;
+#if !PocketPC && !NET20
+      else if (dataMemberAttribute != null && dataMemberAttribute.Name != null)
+        mappedName = dataMemberAttribute.Name;
+#endif
+      else
+        mappedName = name;
+
+      property.PropertyName = ResolvePropertyName(mappedName);
+      property.UnderlyingName = name;
+
+      if (propertyAttribute != null)
+      {
+        property.Required = propertyAttribute.Required;
+        property.Order = propertyAttribute._order;
+      }
+#if !PocketPC && !NET20
+      else if (dataMemberAttribute != null)
+      {
+        property.Required = (dataMemberAttribute.IsRequired) ? Required.AllowNull : Required.Default;
+        property.Order = (dataMemberAttribute.Order != -1) ? (int?) dataMemberAttribute.Order : null;
+      }
+#endif
+      else
+      {
+        property.Required = Required.Default;
+      }
+
+      property.Ignored = (hasIgnoreAttribute ||
+                      (memberSerialization == MemberSerialization.OptIn
+                       && propertyAttribute == null
+#if !PocketPC && !NET20
+ && dataMemberAttribute == null
+#endif
+));
+
+      // resolve converter for property
+      // the class type might have a converter but the property converter takes presidence
+      property.Converter = JsonTypeReflector.GetJsonConverter(attributeProvider, property.PropertyType);
+      property.MemberConverter = JsonTypeReflector.GetJsonConverter(attributeProvider, property.PropertyType);
+
+      DefaultValueAttribute defaultValueAttribute = JsonTypeReflector.GetAttribute<DefaultValueAttribute>(attributeProvider);
+      property.DefaultValue = (defaultValueAttribute != null) ? defaultValueAttribute.Value : null;
+
+      property.NullValueHandling = (propertyAttribute != null) ? propertyAttribute._nullValueHandling : null;
+      property.DefaultValueHandling = (propertyAttribute != null) ? propertyAttribute._defaultValueHandling : null;
+      property.ReferenceLoopHandling = (propertyAttribute != null) ? propertyAttribute._referenceLoopHandling : null;
+      property.ObjectCreationHandling = (propertyAttribute != null) ? propertyAttribute._objectCreationHandling : null;
+      property.TypeNameHandling = (propertyAttribute != null) ? propertyAttribute._typeNameHandling : null;
+      property.IsReference = (propertyAttribute != null) ? propertyAttribute._isReference : null;
+
+      allowNonPublicAccess = false;
+      if ((DefaultMembersSearchFlags & BindingFlags.NonPublic) == BindingFlags.NonPublic)
+        allowNonPublicAccess = true;
+      if (propertyAttribute != null)
+        allowNonPublicAccess = true;
+
+#if !PocketPC && !NET20
+      if (dataMemberAttribute != null)
+      {
+        allowNonPublicAccess = true;
+        hasExplicitAttribute = true;
+      }
+#endif
+    }
+
+    private Predicate<object> CreateShouldSerializeTest(MemberInfo member)
+    {
+      MethodInfo shouldSerializeMethod = member.DeclaringType.GetMethod(JsonTypeReflector.ShouldSerializePrefix + member.Name, ReflectionUtils.EmptyTypes);
+
+      if (shouldSerializeMethod == null || shouldSerializeMethod.ReturnType != typeof(bool))
+        return null;
+
+      MethodCall<object, object> shouldSerializeCall =
+        JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(shouldSerializeMethod);
+
+      return o => (bool)shouldSerializeCall(o);
+    }
+
+    private void SetIsSpecifiedActions(JsonProperty property, MemberInfo member, bool allowNonPublicAccess)
+    {
+      MemberInfo specifiedMember = member.DeclaringType.GetProperty(member.Name + JsonTypeReflector.SpecifiedPostfix);
+      if (specifiedMember == null)
+        specifiedMember = member.DeclaringType.GetField(member.Name + JsonTypeReflector.SpecifiedPostfix);
+
+      if (specifiedMember == null || ReflectionUtils.GetMemberUnderlyingType(specifiedMember) != typeof(bool))
+      {
+        return;
+      }
+
+      Func<object, object> specifiedPropertyGet = JsonTypeReflector.ReflectionDelegateFactory.CreateGet<object>(specifiedMember);
+
+      property.GetIsSpecified = o => (bool)specifiedPropertyGet(o);
+
+      if (ReflectionUtils.CanSetMemberValue(specifiedMember, allowNonPublicAccess, false))
+        property.SetIsSpecified = JsonTypeReflector.ReflectionDelegateFactory.CreateSet<object>(specifiedMember);
+    }
+
+    /// <summary>
+    /// Resolves the name of the property.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    /// <returns>Name of the property.</returns>
+    protected internal virtual string ResolvePropertyName(string propertyName)
+    {
+      return propertyName;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultReferenceResolver.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultReferenceResolver.cs
@@ -1,83 +1,83 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal class DefaultReferenceResolver : IReferenceResolver
-  {
-    private int _referenceCount;
-
-    private BidirectionalDictionary<string, object> GetMappings(object context)
-    {
-      JsonSerializerInternalBase internalSerializer;
-
-      if (context is JsonSerializerInternalBase)
-        internalSerializer = (JsonSerializerInternalBase) context;
-      else if (context is JsonSerializerProxy)
-        internalSerializer = ((JsonSerializerProxy) context).GetInternalSerializer();
-      else
-        throw new Exception("The DefaultReferenceResolver can only be used internally.");
-
-      return internalSerializer.DefaultReferenceMappings;
-    }
-
-    public object ResolveReference(object context, string reference)
-    {
-      object value;
-      GetMappings(context).TryGetByFirst(reference, out value);
-      return value;
-    }
-
-    public string GetReference(object context, object value)
-    {
-      var mappings = GetMappings(context);
-
-      string reference;
-      if (!mappings.TryGetBySecond(value, out reference))
-      {
-        _referenceCount++;
-        reference = _referenceCount.ToString(CultureInfo.InvariantCulture);
-        mappings.Add(reference, value);
-      }
-
-      return reference;
-    }
-
-    public void AddReference(object context, string reference, object value)
-    {
-      GetMappings(context).Add(reference, value);
-    }
-
-    public bool IsReferenced(object context, object value)
-    {
-      string reference;
-      return GetMappings(context).TryGetBySecond(value, out reference);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal class DefaultReferenceResolver : IReferenceResolver
+  {
+    private int _referenceCount;
+
+    private BidirectionalDictionary<string, object> GetMappings(object context)
+    {
+      JsonSerializerInternalBase internalSerializer;
+
+      if (context is JsonSerializerInternalBase)
+        internalSerializer = (JsonSerializerInternalBase) context;
+      else if (context is JsonSerializerProxy)
+        internalSerializer = ((JsonSerializerProxy) context).GetInternalSerializer();
+      else
+        throw new Exception("The DefaultReferenceResolver can only be used internally.");
+
+      return internalSerializer.DefaultReferenceMappings;
+    }
+
+    public object ResolveReference(object context, string reference)
+    {
+      object value;
+      GetMappings(context).TryGetByFirst(reference, out value);
+      return value;
+    }
+
+    public string GetReference(object context, object value)
+    {
+      var mappings = GetMappings(context);
+
+      string reference;
+      if (!mappings.TryGetBySecond(value, out reference))
+      {
+        _referenceCount++;
+        reference = _referenceCount.ToString(CultureInfo.InvariantCulture);
+        mappings.Add(reference, value);
+      }
+
+      return reference;
+    }
+
+    public void AddReference(object context, string reference, object value)
+    {
+      GetMappings(context).Add(reference, value);
+    }
+
+    public bool IsReferenced(object context, object value)
+    {
+      string reference;
+      return GetMappings(context).TryGetBySecond(value, out reference);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultSerializationBinder.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DefaultSerializationBinder.cs
@@ -1,144 +1,144 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Runtime.Serialization;
-using System.Reflection;
-using System.Globalization;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// The default serialization binder used when resolving and loading classes from type names.
-  /// </summary>
-  public class DefaultSerializationBinder : SerializationBinder
-  {
-    internal static readonly DefaultSerializationBinder Instance = new DefaultSerializationBinder();
-
-    private readonly ThreadSafeStore<TypeNameKey, Type> _typeCache = new ThreadSafeStore<TypeNameKey, Type>(GetTypeFromTypeNameKey);
-
-    private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey)
-    {
-      string assemblyName = typeNameKey.AssemblyName;
-      string typeName = typeNameKey.TypeName;
-
-      if (assemblyName != null)
-      {
-        Assembly assembly;
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-        // look, I don't like using obsolete methods as much as you do but this is the only way
-        // Assembly.Load won't check the GAC for a partial name
-#pragma warning disable 618,612
-        assembly = Assembly.LoadWithPartialName(assemblyName);
-#pragma warning restore 618,612
-#elif NETFX_CORE
-        assembly = Assembly.Load(new AssemblyName(assemblyName));
-#else
-        assembly = Assembly.Load(assemblyName);
-#endif
-
-        if (assembly == null)
-          throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName));
-
-        Type type = assembly.GetType(typeName);
-        if (type == null)
-          throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName));
-
-        return type;
-      }
-      else
-      {
-        return Type.GetType(typeName);
-      }
-    }
-
-    internal struct TypeNameKey : IEquatable<TypeNameKey>
-    {
-      internal readonly string AssemblyName;
-      internal readonly string TypeName;
-
-      public TypeNameKey(string assemblyName, string typeName)
-      {
-        AssemblyName = assemblyName;
-        TypeName = typeName;
-      }
-
-      public override int GetHashCode()
-      {
-        return ((AssemblyName != null) ? AssemblyName.GetHashCode() : 0) ^ ((TypeName != null) ? TypeName.GetHashCode() : 0);
-      }
-
-      public override bool Equals(object obj)
-      {
-        if (!(obj is TypeNameKey))
-          return false;
-
-        return Equals((TypeNameKey)obj);
-      }
-
-      public bool Equals(TypeNameKey other)
-      {
-        return (AssemblyName == other.AssemblyName && TypeName == other.TypeName);
-      }
-    }
-
-    /// <summary>
-    /// When overridden in a derived class, controls the binding of a serialized object to a type.
-    /// </summary>
-    /// <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param>
-    /// <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object.</param>
-    /// <returns>
-    /// The type of the object the formatter creates a new instance of.
-    /// </returns>
-    public override Type BindToType(string assemblyName, string typeName)
-    {
-      return _typeCache.Get(new TypeNameKey(assemblyName, typeName));
-    }
-
-#if !(NET35 || NET20)
-    /// <summary>
-    /// When overridden in a derived class, controls the binding of a serialized object to a type.
-    /// </summary>
-    /// <param name="serializedType">The type of the object the formatter creates a new instance of.</param>
-    /// <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object. </param>
-    /// <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object. </param>
-    public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
-    {
-#if NETFX_CORE
-      assemblyName = serializedType.GetTypeInfo().Assembly.FullName;
-      typeName = serializedType.FullName;
-#elif !SILVERLIGHT
-      assemblyName = serializedType.Assembly.FullName;
-      typeName = serializedType.FullName;
-#else
-      assemblyName = null;
-      typeName = serializedType.AssemblyQualifiedName;
-#endif
-    }
-#endif
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Runtime.Serialization;
+using System.Reflection;
+using System.Globalization;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// The default serialization binder used when resolving and loading classes from type names.
+  /// </summary>
+  public class DefaultSerializationBinder : SerializationBinder
+  {
+    internal static readonly DefaultSerializationBinder Instance = new DefaultSerializationBinder();
+
+    private readonly ThreadSafeStore<TypeNameKey, Type> _typeCache = new ThreadSafeStore<TypeNameKey, Type>(GetTypeFromTypeNameKey);
+
+    private static Type GetTypeFromTypeNameKey(TypeNameKey typeNameKey)
+    {
+      string assemblyName = typeNameKey.AssemblyName;
+      string typeName = typeNameKey.TypeName;
+
+      if (assemblyName != null)
+      {
+        Assembly assembly;
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+        // look, I don't like using obsolete methods as much as you do but this is the only way
+        // Assembly.Load won't check the GAC for a partial name
+#pragma warning disable 618,612
+        assembly = Assembly.LoadWithPartialName(assemblyName);
+#pragma warning restore 618,612
+#elif NETFX_CORE
+        assembly = Assembly.Load(new AssemblyName(assemblyName));
+#else
+        assembly = Assembly.Load(assemblyName);
+#endif
+
+        if (assembly == null)
+          throw new JsonSerializationException("Could not load assembly '{0}'.".FormatWith(CultureInfo.InvariantCulture, assemblyName));
+
+        Type type = assembly.GetType(typeName);
+        if (type == null)
+          throw new JsonSerializationException("Could not find type '{0}' in assembly '{1}'.".FormatWith(CultureInfo.InvariantCulture, typeName, assembly.FullName));
+
+        return type;
+      }
+      else
+      {
+        return Type.GetType(typeName);
+      }
+    }
+
+    internal struct TypeNameKey : IEquatable<TypeNameKey>
+    {
+      internal readonly string AssemblyName;
+      internal readonly string TypeName;
+
+      public TypeNameKey(string assemblyName, string typeName)
+      {
+        AssemblyName = assemblyName;
+        TypeName = typeName;
+      }
+
+      public override int GetHashCode()
+      {
+        return ((AssemblyName != null) ? AssemblyName.GetHashCode() : 0) ^ ((TypeName != null) ? TypeName.GetHashCode() : 0);
+      }
+
+      public override bool Equals(object obj)
+      {
+        if (!(obj is TypeNameKey))
+          return false;
+
+        return Equals((TypeNameKey)obj);
+      }
+
+      public bool Equals(TypeNameKey other)
+      {
+        return (AssemblyName == other.AssemblyName && TypeName == other.TypeName);
+      }
+    }
+
+    /// <summary>
+    /// When overridden in a derived class, controls the binding of a serialized object to a type.
+    /// </summary>
+    /// <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param>
+    /// <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object.</param>
+    /// <returns>
+    /// The type of the object the formatter creates a new instance of.
+    /// </returns>
+    public override Type BindToType(string assemblyName, string typeName)
+    {
+      return _typeCache.Get(new TypeNameKey(assemblyName, typeName));
+    }
+
+#if !(NET35 || NET20)
+    /// <summary>
+    /// When overridden in a derived class, controls the binding of a serialized object to a type.
+    /// </summary>
+    /// <param name="serializedType">The type of the object the formatter creates a new instance of.</param>
+    /// <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object. </param>
+    /// <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object. </param>
+    public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
+    {
+#if NETFX_CORE
+      assemblyName = serializedType.GetTypeInfo().Assembly.FullName;
+      typeName = serializedType.FullName;
+#elif !SILVERLIGHT
+      assemblyName = serializedType.Assembly.FullName;
+      typeName = serializedType.FullName;
+#else
+      assemblyName = null;
+      typeName = serializedType.AssemblyQualifiedName;
+#endif
+    }
+#endif
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DynamicValueProvider.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/DynamicValueProvider.cs
@@ -1,113 +1,113 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !SILVERLIGHT
-using System;
-using System.Collections.Generic;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-using System.Text;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Get and set values for a <see cref="MemberInfo"/> using dynamic methods.
-  /// </summary>
-  public class DynamicValueProvider : IValueProvider
-  {
-    private readonly MemberInfo _memberInfo;
-    private Func<object, object> _getter;
-    private Action<object, object> _setter;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="DynamicValueProvider"/> class.
-    /// </summary>
-    /// <param name="memberInfo">The member info.</param>
-    public DynamicValueProvider(MemberInfo memberInfo)
-    {
-      ValidationUtils.ArgumentNotNull(memberInfo, "memberInfo");
-      _memberInfo = memberInfo;
-    }
-
-    /// <summary>
-    /// Sets the value.
-    /// </summary>
-    /// <param name="target">The target to set the value on.</param>
-    /// <param name="value">The value to set on the target.</param>
-    public void SetValue(object target, object value)
-    {
-      try
-      {
-        if (_setter == null)
-          _setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(_memberInfo);
-
-#if DEBUG
-        // dynamic method doesn't check whether the type is 'legal' to set
-        // add this check for unit tests
-        if (value == null)
-        {
-          if (!ReflectionUtils.IsNullable(ReflectionUtils.GetMemberUnderlyingType(_memberInfo)))
-            throw new Exception("Incompatible value. Cannot set {0} to null.".FormatWith(CultureInfo.InvariantCulture, _memberInfo));
-        }
-        else if (!ReflectionUtils.GetMemberUnderlyingType(_memberInfo).IsAssignableFrom(value.GetType()))
-        {
-            throw new Exception("Incompatible value. Cannot set {0} to type {1}.".FormatWith(CultureInfo.InvariantCulture, _memberInfo, value.GetType()));
-        }
-#endif
-
-        _setter(target, value);
-      }
-      catch (Exception ex)
-      {
-        throw new JsonSerializationException("Error setting value to '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
-      }
-    }
-
-    /// <summary>
-    /// Gets the value.
-    /// </summary>
-    /// <param name="target">The target to get the value from.</param>
-    /// <returns>The value.</returns>
-    public object GetValue(object target)
-    {
-      try
-      {
-        if (_getter == null)
-          _getter = DynamicReflectionDelegateFactory.Instance.CreateGet<object>(_memberInfo);
-
-        return _getter(target);
-      }
-      catch (Exception ex)
-      {
-        throw new JsonSerializationException("Error getting value from '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !SILVERLIGHT
+using System;
+using System.Collections.Generic;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+using System.Text;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Get and set values for a <see cref="MemberInfo"/> using dynamic methods.
+  /// </summary>
+  public class DynamicValueProvider : IValueProvider
+  {
+    private readonly MemberInfo _memberInfo;
+    private Func<object, object> _getter;
+    private Action<object, object> _setter;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="DynamicValueProvider"/> class.
+    /// </summary>
+    /// <param name="memberInfo">The member info.</param>
+    public DynamicValueProvider(MemberInfo memberInfo)
+    {
+      ValidationUtils.ArgumentNotNull(memberInfo, "memberInfo");
+      _memberInfo = memberInfo;
+    }
+
+    /// <summary>
+    /// Sets the value.
+    /// </summary>
+    /// <param name="target">The target to set the value on.</param>
+    /// <param name="value">The value to set on the target.</param>
+    public void SetValue(object target, object value)
+    {
+      try
+      {
+        if (_setter == null)
+          _setter = DynamicReflectionDelegateFactory.Instance.CreateSet<object>(_memberInfo);
+
+#if DEBUG
+        // dynamic method doesn't check whether the type is 'legal' to set
+        // add this check for unit tests
+        if (value == null)
+        {
+          if (!ReflectionUtils.IsNullable(ReflectionUtils.GetMemberUnderlyingType(_memberInfo)))
+            throw new Exception("Incompatible value. Cannot set {0} to null.".FormatWith(CultureInfo.InvariantCulture, _memberInfo));
+        }
+        else if (!ReflectionUtils.GetMemberUnderlyingType(_memberInfo).IsAssignableFrom(value.GetType()))
+        {
+            throw new Exception("Incompatible value. Cannot set {0} to type {1}.".FormatWith(CultureInfo.InvariantCulture, _memberInfo, value.GetType()));
+        }
+#endif
+
+        _setter(target, value);
+      }
+      catch (Exception ex)
+      {
+        throw new JsonSerializationException("Error setting value to '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
+      }
+    }
+
+    /// <summary>
+    /// Gets the value.
+    /// </summary>
+    /// <param name="target">The target to get the value from.</param>
+    /// <returns>The value.</returns>
+    public object GetValue(object target)
+    {
+      try
+      {
+        if (_getter == null)
+          _getter = DynamicReflectionDelegateFactory.Instance.CreateGet<object>(_memberInfo);
+
+        return _getter(target);
+      }
+      catch (Exception ex)
+      {
+        throw new JsonSerializationException("Error getting value from '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ErrorContext.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ErrorContext.cs
@@ -1,69 +1,69 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Provides information surrounding an error.
-  /// </summary>
-  public class ErrorContext
-  {
-    internal ErrorContext(object originalObject, object member, string path, Exception error)
-    {
-      OriginalObject = originalObject;
-      Member = member;
-      Error = error;
-      Path = path;
-    }
-
-    /// <summary>
-    /// Gets or sets the error.
-    /// </summary>
-    /// <value>The error.</value>
-    public Exception Error { get; private set; }
-    /// <summary>
-    /// Gets the original object that caused the error.
-    /// </summary>
-    /// <value>The original object that caused the error.</value>
-    public object OriginalObject { get; private set; }
-    /// <summary>
-    /// Gets the member that caused the error.
-    /// </summary>
-    /// <value>The member that caused the error.</value>
-    public object Member { get; private set; }
-    /// <summary>
-    /// Gets the path of the JSON location where the error occurred.
-    /// </summary>
-    /// <value>The path of the JSON location where the error occurred.</value>
-    public string Path { get; private set; }
-    /// <summary>
-    /// Gets or sets a value indicating whether this <see cref="ErrorContext"/> is handled.
-    /// </summary>
-    /// <value><c>true</c> if handled; otherwise, <c>false</c>.</value>
-    public bool Handled { get; set; }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Provides information surrounding an error.
+  /// </summary>
+  public class ErrorContext
+  {
+    internal ErrorContext(object originalObject, object member, string path, Exception error)
+    {
+      OriginalObject = originalObject;
+      Member = member;
+      Error = error;
+      Path = path;
+    }
+
+    /// <summary>
+    /// Gets or sets the error.
+    /// </summary>
+    /// <value>The error.</value>
+    public Exception Error { get; private set; }
+    /// <summary>
+    /// Gets the original object that caused the error.
+    /// </summary>
+    /// <value>The original object that caused the error.</value>
+    public object OriginalObject { get; private set; }
+    /// <summary>
+    /// Gets the member that caused the error.
+    /// </summary>
+    /// <value>The member that caused the error.</value>
+    public object Member { get; private set; }
+    /// <summary>
+    /// Gets the path of the JSON location where the error occurred.
+    /// </summary>
+    /// <value>The path of the JSON location where the error occurred.</value>
+    public string Path { get; private set; }
+    /// <summary>
+    /// Gets or sets a value indicating whether this <see cref="ErrorContext"/> is handled.
+    /// </summary>
+    /// <value><c>true</c> if handled; otherwise, <c>false</c>.</value>
+    public bool Handled { get; set; }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ErrorEventArgs.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ErrorEventArgs.cs
@@ -1,32 +1,32 @@
-﻿using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Provides data for the Error event.
-  /// </summary>
-  public class ErrorEventArgs : EventArgs
-  {
-    /// <summary>
-    /// Gets the current object the error event is being raised against.
-    /// </summary>
-    /// <value>The current object the error event is being raised against.</value>
-    public object CurrentObject { get; private set; }
-    /// <summary>
-    /// Gets the error context.
-    /// </summary>
-    /// <value>The error context.</value>
-    public ErrorContext ErrorContext { get; private set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="ErrorEventArgs"/> class.
-    /// </summary>
-    /// <param name="currentObject">The current object.</param>
-    /// <param name="errorContext">The error context.</param>
-    public ErrorEventArgs(object currentObject, ErrorContext errorContext)
-    {
-      CurrentObject = currentObject;
-      ErrorContext = errorContext;
-    }
-  }
+﻿using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Provides data for the Error event.
+  /// </summary>
+  public class ErrorEventArgs : EventArgs
+  {
+    /// <summary>
+    /// Gets the current object the error event is being raised against.
+    /// </summary>
+    /// <value>The current object the error event is being raised against.</value>
+    public object CurrentObject { get; private set; }
+    /// <summary>
+    /// Gets the error context.
+    /// </summary>
+    /// <value>The error context.</value>
+    public ErrorContext ErrorContext { get; private set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="ErrorEventArgs"/> class.
+    /// </summary>
+    /// <param name="currentObject">The current object.</param>
+    /// <param name="errorContext">The error context.</param>
+    public ErrorEventArgs(object currentObject, ErrorContext errorContext)
+    {
+      CurrentObject = currentObject;
+      ErrorContext = errorContext;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IContractResolver.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IContractResolver.cs
@@ -1,42 +1,42 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Used by <see cref="JsonSerializer"/> to resolves a <see cref="JsonContract"/> for a given <see cref="Type"/>.
-  /// </summary>
-  public interface IContractResolver
-  {
-    /// <summary>
-    /// Resolves the contract for a given type.
-    /// </summary>
-    /// <param name="type">The type to resolve a contract for.</param>
-    /// <returns>The contract for a given type.</returns>
-    JsonContract ResolveContract(Type type);
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Used by <see cref="JsonSerializer"/> to resolves a <see cref="JsonContract"/> for a given <see cref="Type"/>.
+  /// </summary>
+  public interface IContractResolver
+  {
+    /// <summary>
+    /// Resolves the contract for a given type.
+    /// </summary>
+    /// <param name="type">The type to resolve a contract for.</param>
+    /// <returns>The contract for a given type.</returns>
+    JsonContract ResolveContract(Type type);
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IReferenceResolver.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IReferenceResolver.cs
@@ -1,64 +1,64 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Used to resolve references when serializing and deserializing JSON by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public interface IReferenceResolver
-  {
-    /// <summary>
-    /// Resolves a reference to its object.
-    /// </summary>
-    /// <param name="context">The serialization context.</param>
-    /// <param name="reference">The reference to resolve.</param>
-    /// <returns>The object that</returns>
-    object ResolveReference(object context, string reference);
-    /// <summary>
-    /// Gets the reference for the sepecified object.
-    /// </summary>
-    /// <param name="context">The serialization context.</param>
-    /// <param name="value">The object to get a reference for.</param>
-    /// <returns>The reference to the object.</returns>
-    string GetReference(object context, object value);
-    /// <summary>
-    /// Determines whether the specified object is referenced.
-    /// </summary>
-    /// <param name="context">The serialization context.</param>
-    /// <param name="value">The object to test for a reference.</param>
-    /// <returns>
-    /// 	<c>true</c> if the specified object is referenced; otherwise, <c>false</c>.
-    /// </returns>
-    bool IsReferenced(object context, object value);
-    /// <summary>
-    /// Adds a reference to the specified object.
-    /// </summary>
-    /// <param name="context">The serialization context.</param>
-    /// <param name="reference">The reference.</param>
-    /// <param name="value">The object to reference.</param>
-    void AddReference(object context, string reference, object value);
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Used to resolve references when serializing and deserializing JSON by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public interface IReferenceResolver
+  {
+    /// <summary>
+    /// Resolves a reference to its object.
+    /// </summary>
+    /// <param name="context">The serialization context.</param>
+    /// <param name="reference">The reference to resolve.</param>
+    /// <returns>The object that</returns>
+    object ResolveReference(object context, string reference);
+    /// <summary>
+    /// Gets the reference for the sepecified object.
+    /// </summary>
+    /// <param name="context">The serialization context.</param>
+    /// <param name="value">The object to get a reference for.</param>
+    /// <returns>The reference to the object.</returns>
+    string GetReference(object context, object value);
+    /// <summary>
+    /// Determines whether the specified object is referenced.
+    /// </summary>
+    /// <param name="context">The serialization context.</param>
+    /// <param name="value">The object to test for a reference.</param>
+    /// <returns>
+    /// 	<c>true</c> if the specified object is referenced; otherwise, <c>false</c>.
+    /// </returns>
+    bool IsReferenced(object context, object value);
+    /// <summary>
+    /// Adds a reference to the specified object.
+    /// </summary>
+    /// <param name="context">The serialization context.</param>
+    /// <param name="reference">The reference.</param>
+    /// <param name="value">The object to reference.</param>
+    void AddReference(object context, string reference, object value);
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IValueProvider.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/IValueProvider.cs
@@ -1,47 +1,47 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Provides methods to get and set values.
-  /// </summary>
-  public interface IValueProvider
-  {
-    /// <summary>
-    /// Sets the value.
-    /// </summary>
-    /// <param name="target">The target to set the value on.</param>
-    /// <param name="value">The value to set on the target.</param>
-    void SetValue(object target, object value);
-
-    /// <summary>
-    /// Gets the value.
-    /// </summary>
-    /// <param name="target">The target to get the value from.</param>
-    /// <returns>The value.</returns>
-    object GetValue(object target);
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Provides methods to get and set values.
+  /// </summary>
+  public interface IValueProvider
+  {
+    /// <summary>
+    /// Sets the value.
+    /// </summary>
+    /// <param name="target">The target to set the value on.</param>
+    /// <param name="value">The value to set on the target.</param>
+    void SetValue(object target, object value);
+
+    /// <summary>
+    /// Gets the value.
+    /// </summary>
+    /// <param name="target">The target to get the value from.</param>
+    /// <returns>The value.</returns>
+    object GetValue(object target);
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonArrayContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonArrayContract.cs
@@ -1,150 +1,150 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-using System.Collections;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonArrayContract : JsonContract
-  {
-    /// <summary>
-    /// Gets the <see cref="Type"/> of the collection items.
-    /// </summary>
-    /// <value>The <see cref="Type"/> of the collection items.</value>
-    public Type CollectionItemType { get; private set; }
-
-    internal JsonContract CollectionItemContract { get; set; }
-
-    private readonly bool _isCollectionItemTypeNullableType;
-    private readonly Type _genericCollectionDefinitionType;
-    private Type _genericWrapperType;
-    private MethodCall<object, object> _genericWrapperCreator;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonArrayContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonArrayContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.Array;
-      
-      if (ReflectionUtils.ImplementsGenericDefinition(underlyingType, typeof(ICollection<>), out _genericCollectionDefinitionType))
-      {
-        CollectionItemType = _genericCollectionDefinitionType.GetGenericArguments()[0];
-      }
-      else if (underlyingType.IsGenericType() && underlyingType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
-      {
-        _genericCollectionDefinitionType =  typeof (IEnumerable<>);
-        CollectionItemType = underlyingType.GetGenericArguments()[0];
-      }
-      else
-      {
-        CollectionItemType = ReflectionUtils.GetCollectionItemType(UnderlyingType);
-      }
-
-      if (CollectionItemType != null)
-        _isCollectionItemTypeNullableType = ReflectionUtils.IsNullableType(CollectionItemType);
-
-      if (IsTypeGenericCollectionInterface(UnderlyingType))
-      {
-        CreatedType = ReflectionUtils.MakeGenericType(typeof(List<>), CollectionItemType);
-      }
-    }
-
-    internal IWrappedCollection CreateWrapper(object list)
-    {
-      if ((list is IList && (CollectionItemType == null || !_isCollectionItemTypeNullableType))
-        || UnderlyingType.IsArray)
-        return new CollectionWrapper<object>((IList)list);
-
-      if (_genericCollectionDefinitionType != null)
-      {
-        EnsureGenericWrapperCreator();
-        return (IWrappedCollection) _genericWrapperCreator(null, list);
-      }
-      else
-      {
-        IList values = ((IEnumerable) list).Cast<object>().ToList();
-
-        if (CollectionItemType != null)
-        {
-          Array array = Array.CreateInstance(CollectionItemType, values.Count);
-          for (int i = 0; i < values.Count; i++)
-          {
-            array.SetValue(values[i], i);
-          }
-
-          values = array;
-        }
-
-        return new CollectionWrapper<object>(values);
-      }
-    }
-
-    private void EnsureGenericWrapperCreator()
-    {
-      if (_genericWrapperCreator == null)
-      {
-        _genericWrapperType = ReflectionUtils.MakeGenericType(typeof (CollectionWrapper<>), CollectionItemType);
-
-        Type constructorArgument;
-
-        if (ReflectionUtils.InheritsGenericDefinition(_genericCollectionDefinitionType, typeof(List<>))
-          || _genericCollectionDefinitionType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
-          constructorArgument = ReflectionUtils.MakeGenericType(typeof(ICollection<>), CollectionItemType);
-        else
-          constructorArgument = _genericCollectionDefinitionType;
-
-        ConstructorInfo genericWrapperConstructor = _genericWrapperType.GetConstructor(new[] { constructorArgument });
-        _genericWrapperCreator = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(genericWrapperConstructor);
-      }
-    }
-
-    private bool IsTypeGenericCollectionInterface(Type type)
-    {
-      if (!type.IsGenericType())
-        return false;
-
-      Type genericDefinition = type.GetGenericTypeDefinition();
-
-      return (genericDefinition == typeof(IList<>)
-              || genericDefinition == typeof(ICollection<>)
-              || genericDefinition == typeof(IEnumerable<>));
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+using System.Collections;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonArrayContract : JsonContract
+  {
+    /// <summary>
+    /// Gets the <see cref="Type"/> of the collection items.
+    /// </summary>
+    /// <value>The <see cref="Type"/> of the collection items.</value>
+    public Type CollectionItemType { get; private set; }
+
+    internal JsonContract CollectionItemContract { get; set; }
+
+    private readonly bool _isCollectionItemTypeNullableType;
+    private readonly Type _genericCollectionDefinitionType;
+    private Type _genericWrapperType;
+    private MethodCall<object, object> _genericWrapperCreator;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonArrayContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonArrayContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.Array;
+      
+      if (ReflectionUtils.ImplementsGenericDefinition(underlyingType, typeof(ICollection<>), out _genericCollectionDefinitionType))
+      {
+        CollectionItemType = _genericCollectionDefinitionType.GetGenericArguments()[0];
+      }
+      else if (underlyingType.IsGenericType() && underlyingType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
+      {
+        _genericCollectionDefinitionType =  typeof (IEnumerable<>);
+        CollectionItemType = underlyingType.GetGenericArguments()[0];
+      }
+      else
+      {
+        CollectionItemType = ReflectionUtils.GetCollectionItemType(UnderlyingType);
+      }
+
+      if (CollectionItemType != null)
+        _isCollectionItemTypeNullableType = ReflectionUtils.IsNullableType(CollectionItemType);
+
+      if (IsTypeGenericCollectionInterface(UnderlyingType))
+      {
+        CreatedType = ReflectionUtils.MakeGenericType(typeof(List<>), CollectionItemType);
+      }
+    }
+
+    internal IWrappedCollection CreateWrapper(object list)
+    {
+      if ((list is IList && (CollectionItemType == null || !_isCollectionItemTypeNullableType))
+        || UnderlyingType.IsArray)
+        return new CollectionWrapper<object>((IList)list);
+
+      if (_genericCollectionDefinitionType != null)
+      {
+        EnsureGenericWrapperCreator();
+        return (IWrappedCollection) _genericWrapperCreator(null, list);
+      }
+      else
+      {
+        IList values = ((IEnumerable) list).Cast<object>().ToList();
+
+        if (CollectionItemType != null)
+        {
+          Array array = Array.CreateInstance(CollectionItemType, values.Count);
+          for (int i = 0; i < values.Count; i++)
+          {
+            array.SetValue(values[i], i);
+          }
+
+          values = array;
+        }
+
+        return new CollectionWrapper<object>(values);
+      }
+    }
+
+    private void EnsureGenericWrapperCreator()
+    {
+      if (_genericWrapperCreator == null)
+      {
+        _genericWrapperType = ReflectionUtils.MakeGenericType(typeof (CollectionWrapper<>), CollectionItemType);
+
+        Type constructorArgument;
+
+        if (ReflectionUtils.InheritsGenericDefinition(_genericCollectionDefinitionType, typeof(List<>))
+          || _genericCollectionDefinitionType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
+          constructorArgument = ReflectionUtils.MakeGenericType(typeof(ICollection<>), CollectionItemType);
+        else
+          constructorArgument = _genericCollectionDefinitionType;
+
+        ConstructorInfo genericWrapperConstructor = _genericWrapperType.GetConstructor(new[] { constructorArgument });
+        _genericWrapperCreator = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(genericWrapperConstructor);
+      }
+    }
+
+    private bool IsTypeGenericCollectionInterface(Type type)
+    {
+      if (!type.IsGenericType())
+        return false;
+
+      Type genericDefinition = type.GetGenericTypeDefinition();
+
+      return (genericDefinition == typeof(IList<>)
+              || genericDefinition == typeof(ICollection<>)
+              || genericDefinition == typeof(IEnumerable<>));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonContract.cs
@@ -1,219 +1,219 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Reflection;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Utilities;
-#if NETFX_CORE
-using IConvertible = Newtonsoft.Json.Utilities.Convertible;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal enum JsonContractType
-  {
-    None,
-    Object,
-    Array,
-    Primitive,
-    String,
-    Dictionary,
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    Dynamic,
-#endif
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    Serializable,
-#endif
-    Linq
-  }
-
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public abstract class JsonContract
-  {
-    internal bool IsNullable;
-    internal bool IsConvertable;
-    internal Type NonNullableUnderlyingType;
-    internal ReadType InternalReadType;
-    internal JsonContractType ContractType;
-
-    /// <summary>
-    /// Gets the underlying type for the contract.
-    /// </summary>
-    /// <value>The underlying type for the contract.</value>
-    public Type UnderlyingType { get; private set; }
-
-    /// <summary>
-    /// Gets or sets the type created during deserialization.
-    /// </summary>
-    /// <value>The type created during deserialization.</value>
-    public Type CreatedType { get; set; }
-
-    /// <summary>
-    /// Gets or sets whether this type contract is serialized as a reference.
-    /// </summary>
-    /// <value>Whether this type contract is serialized as a reference.</value>
-    public bool? IsReference { get; set; }
-
-    /// <summary>
-    /// Gets or sets the default <see cref="JsonConverter" /> for this contract.
-    /// </summary>
-    /// <value>The converter.</value>
-    public JsonConverter Converter { get; set; }
-
-    // internally specified JsonConverter's to override default behavour
-    // checked for after passed in converters and attribute specified converters
-    internal JsonConverter InternalConverter { get; set; }
-
-#if !PocketPC
-    /// <summary>
-    /// Gets or sets the method called immediately after deserialization of the object.
-    /// </summary>
-    /// <value>The method called immediately after deserialization of the object.</value>
-    public MethodInfo OnDeserialized { get; set; }
-
-    /// <summary>
-    /// Gets or sets the method called during deserialization of the object.
-    /// </summary>
-    /// <value>The method called during deserialization of the object.</value>
-    public MethodInfo OnDeserializing { get; set; }
-
-    /// <summary>
-    /// Gets or sets the method called after serialization of the object graph.
-    /// </summary>
-    /// <value>The method called after serialization of the object graph.</value>
-    public MethodInfo OnSerialized { get; set; }
-
-    /// <summary>
-    /// Gets or sets the method called before serialization of the object.
-    /// </summary>
-    /// <value>The method called before serialization of the object.</value>
-    public MethodInfo OnSerializing { get; set; }
-#endif
-
-    /// <summary>
-    /// Gets or sets the default creator method used to create the object.
-    /// </summary>
-    /// <value>The default creator method used to create the object.</value>
-    public Func<object> DefaultCreator { get; set; }
-
-    /// <summary>
-    /// Gets or sets a value indicating whether the default creator is non public.
-    /// </summary>
-    /// <value><c>true</c> if the default object creator is non-public; otherwise, <c>false</c>.</value>
-    public bool DefaultCreatorNonPublic { get; set; }
-
-    /// <summary>
-    /// Gets or sets the method called when an error is thrown during the serialization of the object.
-    /// </summary>
-    /// <value>The method called when an error is thrown during the serialization of the object.</value>
-    public MethodInfo OnError { get; set; }
-
-    internal void InvokeOnSerializing(object o, StreamingContext context)
-    {
-#if !PocketPC
-      if (OnSerializing != null)
-        OnSerializing.Invoke(o, new object[] {context});
-#endif
-    }
-
-    internal void InvokeOnSerialized(object o, StreamingContext context)
-    {
-#if !PocketPC
-      if (OnSerialized != null)
-        OnSerialized.Invoke(o, new object[] {context});
-#endif
-    }
-
-    internal void InvokeOnDeserializing(object o, StreamingContext context)
-    {
-#if !PocketPC
-      if (OnDeserializing != null)
-        OnDeserializing.Invoke(o, new object[] {context});
-#endif
-    }
-
-    internal void InvokeOnDeserialized(object o, StreamingContext context)
-    {
-#if !PocketPC
-      if (OnDeserialized != null)
-        OnDeserialized.Invoke(o, new object[] {context});
-#endif
-    }
-
-    internal void InvokeOnError(object o, StreamingContext context, ErrorContext errorContext)
-    {
-      if (OnError != null)
-        OnError.Invoke(o, new object[] {context, errorContext});
-    }
-
-    internal JsonContract(Type underlyingType)
-    {
-      ValidationUtils.ArgumentNotNull(underlyingType, "underlyingType");
-
-      UnderlyingType = underlyingType;
-
-      IsNullable = ReflectionUtils.IsNullable(underlyingType);
-      NonNullableUnderlyingType = (IsNullable && ReflectionUtils.IsNullableType(underlyingType)) ? Nullable.GetUnderlyingType(underlyingType) : underlyingType;
-
-      CreatedType = NonNullableUnderlyingType;
-
-      IsConvertable = ConvertUtils.IsConvertible(NonNullableUnderlyingType);
-
-      if (NonNullableUnderlyingType == typeof(byte[]))
-      {
-        InternalReadType = ReadType.ReadAsBytes;
-      }
-      else if (NonNullableUnderlyingType == typeof(int))
-      {
-        InternalReadType = ReadType.ReadAsInt32;
-      }
-      else if (NonNullableUnderlyingType == typeof(decimal))
-      {
-        InternalReadType = ReadType.ReadAsDecimal;
-      }
-      else if (NonNullableUnderlyingType == typeof(string))
-      {
-        InternalReadType = ReadType.ReadAsString;
-      }
-      else if (NonNullableUnderlyingType == typeof(DateTime))
-      {
-        InternalReadType = ReadType.ReadAsDateTime;
-      }
-#if !NET20
-      else if (NonNullableUnderlyingType == typeof(DateTimeOffset))
-      {
-        InternalReadType = ReadType.ReadAsDateTimeOffset;
-      }
-#endif
-      else
-      {
-        InternalReadType = ReadType.Read;
-      }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Reflection;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Utilities;
+#if NETFX_CORE
+using IConvertible = Newtonsoft.Json.Utilities.Convertible;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal enum JsonContractType
+  {
+    None,
+    Object,
+    Array,
+    Primitive,
+    String,
+    Dictionary,
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    Dynamic,
+#endif
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    Serializable,
+#endif
+    Linq
+  }
+
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public abstract class JsonContract
+  {
+    internal bool IsNullable;
+    internal bool IsConvertable;
+    internal Type NonNullableUnderlyingType;
+    internal ReadType InternalReadType;
+    internal JsonContractType ContractType;
+
+    /// <summary>
+    /// Gets the underlying type for the contract.
+    /// </summary>
+    /// <value>The underlying type for the contract.</value>
+    public Type UnderlyingType { get; private set; }
+
+    /// <summary>
+    /// Gets or sets the type created during deserialization.
+    /// </summary>
+    /// <value>The type created during deserialization.</value>
+    public Type CreatedType { get; set; }
+
+    /// <summary>
+    /// Gets or sets whether this type contract is serialized as a reference.
+    /// </summary>
+    /// <value>Whether this type contract is serialized as a reference.</value>
+    public bool? IsReference { get; set; }
+
+    /// <summary>
+    /// Gets or sets the default <see cref="JsonConverter" /> for this contract.
+    /// </summary>
+    /// <value>The converter.</value>
+    public JsonConverter Converter { get; set; }
+
+    // internally specified JsonConverter's to override default behavour
+    // checked for after passed in converters and attribute specified converters
+    internal JsonConverter InternalConverter { get; set; }
+
+#if !PocketPC
+    /// <summary>
+    /// Gets or sets the method called immediately after deserialization of the object.
+    /// </summary>
+    /// <value>The method called immediately after deserialization of the object.</value>
+    public MethodInfo OnDeserialized { get; set; }
+
+    /// <summary>
+    /// Gets or sets the method called during deserialization of the object.
+    /// </summary>
+    /// <value>The method called during deserialization of the object.</value>
+    public MethodInfo OnDeserializing { get; set; }
+
+    /// <summary>
+    /// Gets or sets the method called after serialization of the object graph.
+    /// </summary>
+    /// <value>The method called after serialization of the object graph.</value>
+    public MethodInfo OnSerialized { get; set; }
+
+    /// <summary>
+    /// Gets or sets the method called before serialization of the object.
+    /// </summary>
+    /// <value>The method called before serialization of the object.</value>
+    public MethodInfo OnSerializing { get; set; }
+#endif
+
+    /// <summary>
+    /// Gets or sets the default creator method used to create the object.
+    /// </summary>
+    /// <value>The default creator method used to create the object.</value>
+    public Func<object> DefaultCreator { get; set; }
+
+    /// <summary>
+    /// Gets or sets a value indicating whether the default creator is non public.
+    /// </summary>
+    /// <value><c>true</c> if the default object creator is non-public; otherwise, <c>false</c>.</value>
+    public bool DefaultCreatorNonPublic { get; set; }
+
+    /// <summary>
+    /// Gets or sets the method called when an error is thrown during the serialization of the object.
+    /// </summary>
+    /// <value>The method called when an error is thrown during the serialization of the object.</value>
+    public MethodInfo OnError { get; set; }
+
+    internal void InvokeOnSerializing(object o, StreamingContext context)
+    {
+#if !PocketPC
+      if (OnSerializing != null)
+        OnSerializing.Invoke(o, new object[] {context});
+#endif
+    }
+
+    internal void InvokeOnSerialized(object o, StreamingContext context)
+    {
+#if !PocketPC
+      if (OnSerialized != null)
+        OnSerialized.Invoke(o, new object[] {context});
+#endif
+    }
+
+    internal void InvokeOnDeserializing(object o, StreamingContext context)
+    {
+#if !PocketPC
+      if (OnDeserializing != null)
+        OnDeserializing.Invoke(o, new object[] {context});
+#endif
+    }
+
+    internal void InvokeOnDeserialized(object o, StreamingContext context)
+    {
+#if !PocketPC
+      if (OnDeserialized != null)
+        OnDeserialized.Invoke(o, new object[] {context});
+#endif
+    }
+
+    internal void InvokeOnError(object o, StreamingContext context, ErrorContext errorContext)
+    {
+      if (OnError != null)
+        OnError.Invoke(o, new object[] {context, errorContext});
+    }
+
+    internal JsonContract(Type underlyingType)
+    {
+      ValidationUtils.ArgumentNotNull(underlyingType, "underlyingType");
+
+      UnderlyingType = underlyingType;
+
+      IsNullable = ReflectionUtils.IsNullable(underlyingType);
+      NonNullableUnderlyingType = (IsNullable && ReflectionUtils.IsNullableType(underlyingType)) ? Nullable.GetUnderlyingType(underlyingType) : underlyingType;
+
+      CreatedType = NonNullableUnderlyingType;
+
+      IsConvertable = ConvertUtils.IsConvertible(NonNullableUnderlyingType);
+
+      if (NonNullableUnderlyingType == typeof(byte[]))
+      {
+        InternalReadType = ReadType.ReadAsBytes;
+      }
+      else if (NonNullableUnderlyingType == typeof(int))
+      {
+        InternalReadType = ReadType.ReadAsInt32;
+      }
+      else if (NonNullableUnderlyingType == typeof(decimal))
+      {
+        InternalReadType = ReadType.ReadAsDecimal;
+      }
+      else if (NonNullableUnderlyingType == typeof(string))
+      {
+        InternalReadType = ReadType.ReadAsString;
+      }
+      else if (NonNullableUnderlyingType == typeof(DateTime))
+      {
+        InternalReadType = ReadType.ReadAsDateTime;
+      }
+#if !NET20
+      else if (NonNullableUnderlyingType == typeof(DateTimeOffset))
+      {
+        InternalReadType = ReadType.ReadAsDateTimeOffset;
+      }
+#endif
+      else
+      {
+        InternalReadType = ReadType.Read;
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonDictionaryContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonDictionaryContract.cs
@@ -1,134 +1,134 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-using System.Collections;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonDictionaryContract : JsonContract
-  {
-    /// <summary>
-    /// Gets or sets the property name resolver.
-    /// </summary>
-    /// <value>The property name resolver.</value>
-    public Func<string, string> PropertyNameResolver { get; set; }
-
-    /// <summary>
-    /// Gets the <see cref="Type"/> of the dictionary keys.
-    /// </summary>
-    /// <value>The <see cref="Type"/> of the dictionary keys.</value>
-    public Type DictionaryKeyType { get; private set; }
-    /// <summary>
-    /// Gets the <see cref="Type"/> of the dictionary values.
-    /// </summary>
-    /// <value>The <see cref="Type"/> of the dictionary values.</value>
-    public Type DictionaryValueType { get; private set; }
-
-    internal JsonContract DictionaryKeyContract { get; set; }
-    internal JsonContract DictionaryValueContract { get; set; }
-
-    private readonly bool _isDictionaryValueTypeNullableType;
-    private readonly Type _genericCollectionDefinitionType;
-    private Type _genericWrapperType;
-    private MethodCall<object, object> _genericWrapperCreator;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonDictionaryContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonDictionaryContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.Dictionary;
-
-      Type keyType;
-      Type valueType;
-      if (ReflectionUtils.ImplementsGenericDefinition(underlyingType, typeof(IDictionary<,>), out _genericCollectionDefinitionType))
-      {
-        keyType = _genericCollectionDefinitionType.GetGenericArguments()[0];
-        valueType = _genericCollectionDefinitionType.GetGenericArguments()[1];
-      }
-      else
-      {
-        ReflectionUtils.GetDictionaryKeyValueTypes(UnderlyingType, out keyType, out valueType);
-      }
-
-      DictionaryKeyType = keyType;
-      DictionaryValueType = valueType;
-
-      if (DictionaryValueType != null)
-        _isDictionaryValueTypeNullableType = ReflectionUtils.IsNullableType(DictionaryValueType);
-      
-      if (IsTypeGenericDictionaryInterface(UnderlyingType))
-      {
-        CreatedType = ReflectionUtils.MakeGenericType(typeof(Dictionary<,>), keyType, valueType);
-      }
-#if !NETFX_CORE
-      else if (UnderlyingType == typeof(IDictionary))
-      {
-        CreatedType = typeof (Dictionary<object, object>);
-      }
-#endif
-    }
-
-    internal IWrappedDictionary CreateWrapper(object dictionary)
-    {
-#if !NETFX_CORE
-      if (dictionary is IDictionary && (DictionaryValueType == null || !_isDictionaryValueTypeNullableType))
-        return new DictionaryWrapper<object, object>((IDictionary)dictionary);
-#endif
-
-      if (_genericWrapperCreator == null)
-      {
-        _genericWrapperType = ReflectionUtils.MakeGenericType(typeof(DictionaryWrapper<,>), DictionaryKeyType, DictionaryValueType);
-
-        ConstructorInfo genericWrapperConstructor = _genericWrapperType.GetConstructor(new[] { _genericCollectionDefinitionType });
-        _genericWrapperCreator = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(genericWrapperConstructor);
-      }
-
-      return (IWrappedDictionary)_genericWrapperCreator(null, dictionary);
-    }
-
-    private bool IsTypeGenericDictionaryInterface(Type type)
-    {
-      if (!type.IsGenericType())
-        return false;
-
-      Type genericDefinition = type.GetGenericTypeDefinition();
-
-      return (genericDefinition == typeof(IDictionary<,>));
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+using System.Collections;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonDictionaryContract : JsonContract
+  {
+    /// <summary>
+    /// Gets or sets the property name resolver.
+    /// </summary>
+    /// <value>The property name resolver.</value>
+    public Func<string, string> PropertyNameResolver { get; set; }
+
+    /// <summary>
+    /// Gets the <see cref="Type"/> of the dictionary keys.
+    /// </summary>
+    /// <value>The <see cref="Type"/> of the dictionary keys.</value>
+    public Type DictionaryKeyType { get; private set; }
+    /// <summary>
+    /// Gets the <see cref="Type"/> of the dictionary values.
+    /// </summary>
+    /// <value>The <see cref="Type"/> of the dictionary values.</value>
+    public Type DictionaryValueType { get; private set; }
+
+    internal JsonContract DictionaryKeyContract { get; set; }
+    internal JsonContract DictionaryValueContract { get; set; }
+
+    private readonly bool _isDictionaryValueTypeNullableType;
+    private readonly Type _genericCollectionDefinitionType;
+    private Type _genericWrapperType;
+    private MethodCall<object, object> _genericWrapperCreator;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonDictionaryContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonDictionaryContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.Dictionary;
+
+      Type keyType;
+      Type valueType;
+      if (ReflectionUtils.ImplementsGenericDefinition(underlyingType, typeof(IDictionary<,>), out _genericCollectionDefinitionType))
+      {
+        keyType = _genericCollectionDefinitionType.GetGenericArguments()[0];
+        valueType = _genericCollectionDefinitionType.GetGenericArguments()[1];
+      }
+      else
+      {
+        ReflectionUtils.GetDictionaryKeyValueTypes(UnderlyingType, out keyType, out valueType);
+      }
+
+      DictionaryKeyType = keyType;
+      DictionaryValueType = valueType;
+
+      if (DictionaryValueType != null)
+        _isDictionaryValueTypeNullableType = ReflectionUtils.IsNullableType(DictionaryValueType);
+      
+      if (IsTypeGenericDictionaryInterface(UnderlyingType))
+      {
+        CreatedType = ReflectionUtils.MakeGenericType(typeof(Dictionary<,>), keyType, valueType);
+      }
+#if !NETFX_CORE
+      else if (UnderlyingType == typeof(IDictionary))
+      {
+        CreatedType = typeof (Dictionary<object, object>);
+      }
+#endif
+    }
+
+    internal IWrappedDictionary CreateWrapper(object dictionary)
+    {
+#if !NETFX_CORE
+      if (dictionary is IDictionary && (DictionaryValueType == null || !_isDictionaryValueTypeNullableType))
+        return new DictionaryWrapper<object, object>((IDictionary)dictionary);
+#endif
+
+      if (_genericWrapperCreator == null)
+      {
+        _genericWrapperType = ReflectionUtils.MakeGenericType(typeof(DictionaryWrapper<,>), DictionaryKeyType, DictionaryValueType);
+
+        ConstructorInfo genericWrapperConstructor = _genericWrapperType.GetConstructor(new[] { _genericCollectionDefinitionType });
+        _genericWrapperCreator = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(genericWrapperConstructor);
+      }
+
+      return (IWrappedDictionary)_genericWrapperCreator(null, dictionary);
+    }
+
+    private bool IsTypeGenericDictionaryInterface(Type type)
+    {
+      if (!type.IsGenericType())
+        return false;
+
+      Type genericDefinition = type.GetGenericTypeDefinition();
+
+      return (genericDefinition == typeof(IDictionary<,>));
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonDynamicContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonDynamicContract.cs
@@ -1,65 +1,65 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-using System.Collections;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonDynamicContract : JsonContract
-  {
-    /// <summary>
-    /// Gets the object's properties.
-    /// </summary>
-    /// <value>The object's properties.</value>
-    public JsonPropertyCollection Properties { get; private set; }
-
-    /// <summary>
-    /// Gets or sets the property name resolver.
-    /// </summary>
-    /// <value>The property name resolver.</value>
-    public Func<string, string> PropertyNameResolver { get; set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonDynamicContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonDynamicContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.Dynamic;
-
-      Properties = new JsonPropertyCollection(UnderlyingType);
-    }
-  }
-}
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+using System.Collections;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonDynamicContract : JsonContract
+  {
+    /// <summary>
+    /// Gets the object's properties.
+    /// </summary>
+    /// <value>The object's properties.</value>
+    public JsonPropertyCollection Properties { get; private set; }
+
+    /// <summary>
+    /// Gets or sets the property name resolver.
+    /// </summary>
+    /// <value>The property name resolver.</value>
+    public Func<string, string> PropertyNameResolver { get; set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonDynamicContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonDynamicContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.Dynamic;
+
+      Properties = new JsonPropertyCollection(UnderlyingType);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonFormatterConverter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonFormatterConverter.cs
@@ -1,151 +1,151 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !(SILVERLIGHT || NETFX_CORE)
-using System;
-using System.Globalization;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Utilities;
-using Newtonsoft.Json.Linq;
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal class JsonFormatterConverter : IFormatterConverter
-  {
-    private readonly JsonSerializer _serializer;
-
-    public JsonFormatterConverter(JsonSerializer serializer)
-    {
-      ValidationUtils.ArgumentNotNull(serializer, "serializer");
-
-      _serializer = serializer;
-    }
-
-    private T GetTokenValue<T>(object value)
-    {
-      ValidationUtils.ArgumentNotNull(value, "value");
-      
-      JValue v = (JValue)value;
-      return (T)System.Convert.ChangeType(v.Value, typeof(T), CultureInfo.InvariantCulture);
-    }
-
-    public object Convert(object value, Type type)
-    {
-      ValidationUtils.ArgumentNotNull(value, "value");
-
-      JToken token = value as JToken;
-      if (token == null)
-        throw new ArgumentException("Value is not a JToken.", "value");
-
-      return _serializer.Deserialize(token.CreateReader(), type);
-    }
-
-    public object Convert(object value, TypeCode typeCode)
-    {
-      ValidationUtils.ArgumentNotNull(value, "value");
-
-      if (value is JValue)
-        value = ((JValue) value).Value;
-
-      return System.Convert.ChangeType(value, typeCode, CultureInfo.InvariantCulture);
-    }
-
-    public bool ToBoolean(object value)
-    {
-      return GetTokenValue<bool>(value);
-    }
-
-    public byte ToByte(object value)
-    {
-      return GetTokenValue<byte>(value);
-    }
-
-    public char ToChar(object value)
-    {
-      return GetTokenValue<char>(value);
-    }
-
-    public DateTime ToDateTime(object value)
-    {
-      return GetTokenValue<DateTime>(value);
-    }
-
-    public decimal ToDecimal(object value)
-    {
-      return GetTokenValue<decimal>(value);
-    }
-
-    public double ToDouble(object value)
-    {
-      return GetTokenValue<double>(value);
-    }
-
-    public short ToInt16(object value)
-    {
-      return GetTokenValue<short>(value);
-    }
-
-    public int ToInt32(object value)
-    {
-      return GetTokenValue<int>(value);
-    }
-
-    public long ToInt64(object value)
-    {
-      return GetTokenValue<long>(value);
-    }
-
-    public sbyte ToSByte(object value)
-    {
-      return GetTokenValue<sbyte>(value);
-    }
-
-    public float ToSingle(object value)
-    {
-      return GetTokenValue<float>(value);
-    }
-
-    public string ToString(object value)
-    {
-      return GetTokenValue<string>(value);
-    }
-
-    public ushort ToUInt16(object value)
-    {
-      return GetTokenValue<ushort>(value);
-    }
-
-    public uint ToUInt32(object value)
-    {
-      return GetTokenValue<uint>(value);
-    }
-
-    public ulong ToUInt64(object value)
-    {
-      return GetTokenValue<ulong>(value);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !(SILVERLIGHT || NETFX_CORE)
+using System;
+using System.Globalization;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Utilities;
+using Newtonsoft.Json.Linq;
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal class JsonFormatterConverter : IFormatterConverter
+  {
+    private readonly JsonSerializer _serializer;
+
+    public JsonFormatterConverter(JsonSerializer serializer)
+    {
+      ValidationUtils.ArgumentNotNull(serializer, "serializer");
+
+      _serializer = serializer;
+    }
+
+    private T GetTokenValue<T>(object value)
+    {
+      ValidationUtils.ArgumentNotNull(value, "value");
+      
+      JValue v = (JValue)value;
+      return (T)System.Convert.ChangeType(v.Value, typeof(T), CultureInfo.InvariantCulture);
+    }
+
+    public object Convert(object value, Type type)
+    {
+      ValidationUtils.ArgumentNotNull(value, "value");
+
+      JToken token = value as JToken;
+      if (token == null)
+        throw new ArgumentException("Value is not a JToken.", "value");
+
+      return _serializer.Deserialize(token.CreateReader(), type);
+    }
+
+    public object Convert(object value, TypeCode typeCode)
+    {
+      ValidationUtils.ArgumentNotNull(value, "value");
+
+      if (value is JValue)
+        value = ((JValue) value).Value;
+
+      return System.Convert.ChangeType(value, typeCode, CultureInfo.InvariantCulture);
+    }
+
+    public bool ToBoolean(object value)
+    {
+      return GetTokenValue<bool>(value);
+    }
+
+    public byte ToByte(object value)
+    {
+      return GetTokenValue<byte>(value);
+    }
+
+    public char ToChar(object value)
+    {
+      return GetTokenValue<char>(value);
+    }
+
+    public DateTime ToDateTime(object value)
+    {
+      return GetTokenValue<DateTime>(value);
+    }
+
+    public decimal ToDecimal(object value)
+    {
+      return GetTokenValue<decimal>(value);
+    }
+
+    public double ToDouble(object value)
+    {
+      return GetTokenValue<double>(value);
+    }
+
+    public short ToInt16(object value)
+    {
+      return GetTokenValue<short>(value);
+    }
+
+    public int ToInt32(object value)
+    {
+      return GetTokenValue<int>(value);
+    }
+
+    public long ToInt64(object value)
+    {
+      return GetTokenValue<long>(value);
+    }
+
+    public sbyte ToSByte(object value)
+    {
+      return GetTokenValue<sbyte>(value);
+    }
+
+    public float ToSingle(object value)
+    {
+      return GetTokenValue<float>(value);
+    }
+
+    public string ToString(object value)
+    {
+      return GetTokenValue<string>(value);
+    }
+
+    public ushort ToUInt16(object value)
+    {
+      return GetTokenValue<ushort>(value);
+    }
+
+    public uint ToUInt32(object value)
+    {
+      return GetTokenValue<uint>(value);
+    }
+
+    public ulong ToUInt64(object value)
+    {
+      return GetTokenValue<ulong>(value);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonISerializableContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonISerializableContract.cs
@@ -1,53 +1,53 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonISerializableContract : JsonContract
-  {
-    /// <summary>
-    /// Gets or sets the ISerializable object constructor.
-    /// </summary>
-    /// <value>The ISerializable object constructor.</value>
-    public ObjectConstructor<object> ISerializableCreator { get; set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonISerializableContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonISerializableContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.Serializable;
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonISerializableContract : JsonContract
+  {
+    /// <summary>
+    /// Gets or sets the ISerializable object constructor.
+    /// </summary>
+    /// <value>The ISerializable object constructor.</value>
+    public ObjectConstructor<object> ISerializableCreator { get; set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonISerializableContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonISerializableContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.Serializable;
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonLinqContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonLinqContract.cs
@@ -1,20 +1,20 @@
-﻿using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonLinqContract : JsonContract
-  {
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonLinqContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonLinqContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.Linq;
-    }
-  }
+﻿using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonLinqContract : JsonContract
+  {
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonLinqContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonLinqContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.Linq;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonObjectContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonObjectContract.cs
@@ -1,80 +1,80 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Reflection;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonObjectContract : JsonContract
-  {
-    /// <summary>
-    /// Gets or sets the object member serialization.
-    /// </summary>
-    /// <value>The member object serialization.</value>
-    public MemberSerialization MemberSerialization { get; set; }
-
-    /// <summary>
-    /// Gets the object's properties.
-    /// </summary>
-    /// <value>The object's properties.</value>
-    public JsonPropertyCollection Properties { get; private set; }
-
-    /// <summary>
-    /// Gets the constructor parameters required for any non-default constructor
-    /// </summary>
-    public JsonPropertyCollection ConstructorParameters { get; private set; }
-
-    /// <summary>
-    /// Gets or sets the override constructor used to create the object.
-    /// This is set when a constructor is marked up using the
-    /// JsonConstructor attribute.
-    /// </summary>
-    /// <value>The override constructor.</value>
-    public ConstructorInfo OverrideConstructor { get; set; }
-
-    /// <summary>
-    /// Gets or sets the parametrized constructor used to create the object.
-    /// </summary>
-    /// <value>The parametrized constructor.</value>
-    public ConstructorInfo ParametrizedConstructor { get; set; }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonObjectContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonObjectContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.Object;
-
-      Properties = new JsonPropertyCollection(UnderlyingType);
-      ConstructorParameters = new JsonPropertyCollection(UnderlyingType);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Reflection;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonObjectContract : JsonContract
+  {
+    /// <summary>
+    /// Gets or sets the object member serialization.
+    /// </summary>
+    /// <value>The member object serialization.</value>
+    public MemberSerialization MemberSerialization { get; set; }
+
+    /// <summary>
+    /// Gets the object's properties.
+    /// </summary>
+    /// <value>The object's properties.</value>
+    public JsonPropertyCollection Properties { get; private set; }
+
+    /// <summary>
+    /// Gets the constructor parameters required for any non-default constructor
+    /// </summary>
+    public JsonPropertyCollection ConstructorParameters { get; private set; }
+
+    /// <summary>
+    /// Gets or sets the override constructor used to create the object.
+    /// This is set when a constructor is marked up using the
+    /// JsonConstructor attribute.
+    /// </summary>
+    /// <value>The override constructor.</value>
+    public ConstructorInfo OverrideConstructor { get; set; }
+
+    /// <summary>
+    /// Gets or sets the parametrized constructor used to create the object.
+    /// </summary>
+    /// <value>The parametrized constructor.</value>
+    public ConstructorInfo ParametrizedConstructor { get; set; }
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonObjectContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonObjectContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.Object;
+
+      Properties = new JsonPropertyCollection(UnderlyingType);
+      ConstructorParameters = new JsonPropertyCollection(UnderlyingType);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonPrimitiveContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonPrimitiveContract.cs
@@ -1,45 +1,45 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonPrimitiveContract : JsonContract
-  {
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonPrimitiveContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonPrimitiveContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.Primitive;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonPrimitiveContract : JsonContract
+  {
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonPrimitiveContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonPrimitiveContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.Primitive;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonProperty.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonProperty.cs
@@ -1,187 +1,187 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Maps a JSON property to a .NET member or constructor parameter.
-  /// </summary>
-  public class JsonProperty
-  {
-    // use to cache contract during deserialization
-    internal JsonContract PropertyContract { get; set; }
-    
-    /// <summary>
-    /// Gets or sets the name of the property.
-    /// </summary>
-    /// <value>The name of the property.</value>
-    public string PropertyName { get; set; }
-
-    /// <summary>
-    /// Gets or sets the type that declared this property.
-    /// </summary>
-    /// <value>The type that declared this property.</value>
-    public Type DeclaringType { get; set; }
-
-    /// <summary>
-    /// Gets or sets the order of serialization and deserialization of a member.
-    /// </summary>
-    /// <value>The numeric order of serialization or deserialization.</value>
-    public int? Order { get; set; }
-
-    /// <summary>
-    /// Gets or sets the name of the underlying member or parameter.
-    /// </summary>
-    /// <value>The name of the underlying member or parameter.</value>
-    public string UnderlyingName { get; set; }
-
-    /// <summary>
-    /// Gets the <see cref="IValueProvider"/> that will get and set the <see cref="JsonProperty"/> during serialization.
-    /// </summary>
-    /// <value>The <see cref="IValueProvider"/> that will get and set the <see cref="JsonProperty"/> during serialization.</value>
-    public IValueProvider ValueProvider { get; set; }
-
-    /// <summary>
-    /// Gets or sets the type of the property.
-    /// </summary>
-    /// <value>The type of the property.</value>
-    public Type PropertyType { get; set; }
-
-    /// <summary>
-    /// Gets or sets the <see cref="JsonConverter" /> for the property.
-    /// If set this converter takes presidence over the contract converter for the property type.
-    /// </summary>
-    /// <value>The converter.</value>
-    public JsonConverter Converter { get; set; }
-
-    /// <summary>
-    /// Gets the member converter.
-    /// </summary>
-    /// <value>The member converter.</value>
-    public JsonConverter MemberConverter { get; set; }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonProperty"/> is ignored.
-    /// </summary>
-    /// <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
-    public bool Ignored { get; set; }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonProperty"/> is readable.
-    /// </summary>
-    /// <value><c>true</c> if readable; otherwise, <c>false</c>.</value>
-    public bool Readable { get; set; }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonProperty"/> is writable.
-    /// </summary>
-    /// <value><c>true</c> if writable; otherwise, <c>false</c>.</value>
-    public bool Writable { get; set; }
-
-    /// <summary>
-    /// Gets the default value.
-    /// </summary>
-    /// <value>The default value.</value>
-    public object DefaultValue { get; set; }
-
-    /// <summary>
-    /// Gets a value indicating whether this <see cref="JsonProperty"/> is required.
-    /// </summary>
-    /// <value>A value indicating whether this <see cref="JsonProperty"/> is required.</value>
-    public Required Required { get; set; }
-
-    /// <summary>
-    /// Gets a value indicating whether this property preserves object references.
-    /// </summary>
-    /// <value>
-    /// 	<c>true</c> if this instance is reference; otherwise, <c>false</c>.
-    /// </value>
-    public bool? IsReference { get; set; }
-
-    /// <summary>
-    /// Gets the property null value handling.
-    /// </summary>
-    /// <value>The null value handling.</value>
-    public NullValueHandling? NullValueHandling { get; set; }
-
-    /// <summary>
-    /// Gets the property default value handling.
-    /// </summary>
-    /// <value>The default value handling.</value>
-    public DefaultValueHandling? DefaultValueHandling { get; set; }
-
-    /// <summary>
-    /// Gets the property reference loop handling.
-    /// </summary>
-    /// <value>The reference loop handling.</value>
-    public ReferenceLoopHandling? ReferenceLoopHandling { get; set; }
-
-    /// <summary>
-    /// Gets the property object creation handling.
-    /// </summary>
-    /// <value>The object creation handling.</value>
-    public ObjectCreationHandling? ObjectCreationHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets the type name handling.
-    /// </summary>
-    /// <value>The type name handling.</value>
-    public TypeNameHandling? TypeNameHandling { get; set; }
-
-    /// <summary>
-    /// Gets or sets a predicate used to determine whether the property should be serialize.
-    /// </summary>
-    /// <value>A predicate used to determine whether the property should be serialize.</value>
-    public Predicate<object> ShouldSerialize { get; set; }
-
-    /// <summary>
-    /// Gets or sets a predicate used to determine whether the property should be serialized.
-    /// </summary>
-    /// <value>A predicate used to determine whether the property should be serialized.</value>
-    public Predicate<object> GetIsSpecified { get; set; }
-
-    /// <summary>
-    /// Gets or sets an action used to set whether the property has been deserialized.
-    /// </summary>
-    /// <value>An action used to set whether the property has been deserialized.</value>
-    public Action<object, object> SetIsSpecified { get; set; }
-
-    /// <summary>
-    /// Returns a <see cref="String"/> that represents this instance.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="String"/> that represents this instance.
-    /// </returns>
-    public override string ToString()
-    {
-      return PropertyName;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Maps a JSON property to a .NET member or constructor parameter.
+  /// </summary>
+  public class JsonProperty
+  {
+    // use to cache contract during deserialization
+    internal JsonContract PropertyContract { get; set; }
+    
+    /// <summary>
+    /// Gets or sets the name of the property.
+    /// </summary>
+    /// <value>The name of the property.</value>
+    public string PropertyName { get; set; }
+
+    /// <summary>
+    /// Gets or sets the type that declared this property.
+    /// </summary>
+    /// <value>The type that declared this property.</value>
+    public Type DeclaringType { get; set; }
+
+    /// <summary>
+    /// Gets or sets the order of serialization and deserialization of a member.
+    /// </summary>
+    /// <value>The numeric order of serialization or deserialization.</value>
+    public int? Order { get; set; }
+
+    /// <summary>
+    /// Gets or sets the name of the underlying member or parameter.
+    /// </summary>
+    /// <value>The name of the underlying member or parameter.</value>
+    public string UnderlyingName { get; set; }
+
+    /// <summary>
+    /// Gets the <see cref="IValueProvider"/> that will get and set the <see cref="JsonProperty"/> during serialization.
+    /// </summary>
+    /// <value>The <see cref="IValueProvider"/> that will get and set the <see cref="JsonProperty"/> during serialization.</value>
+    public IValueProvider ValueProvider { get; set; }
+
+    /// <summary>
+    /// Gets or sets the type of the property.
+    /// </summary>
+    /// <value>The type of the property.</value>
+    public Type PropertyType { get; set; }
+
+    /// <summary>
+    /// Gets or sets the <see cref="JsonConverter" /> for the property.
+    /// If set this converter takes presidence over the contract converter for the property type.
+    /// </summary>
+    /// <value>The converter.</value>
+    public JsonConverter Converter { get; set; }
+
+    /// <summary>
+    /// Gets the member converter.
+    /// </summary>
+    /// <value>The member converter.</value>
+    public JsonConverter MemberConverter { get; set; }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonProperty"/> is ignored.
+    /// </summary>
+    /// <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
+    public bool Ignored { get; set; }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonProperty"/> is readable.
+    /// </summary>
+    /// <value><c>true</c> if readable; otherwise, <c>false</c>.</value>
+    public bool Readable { get; set; }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonProperty"/> is writable.
+    /// </summary>
+    /// <value><c>true</c> if writable; otherwise, <c>false</c>.</value>
+    public bool Writable { get; set; }
+
+    /// <summary>
+    /// Gets the default value.
+    /// </summary>
+    /// <value>The default value.</value>
+    public object DefaultValue { get; set; }
+
+    /// <summary>
+    /// Gets a value indicating whether this <see cref="JsonProperty"/> is required.
+    /// </summary>
+    /// <value>A value indicating whether this <see cref="JsonProperty"/> is required.</value>
+    public Required Required { get; set; }
+
+    /// <summary>
+    /// Gets a value indicating whether this property preserves object references.
+    /// </summary>
+    /// <value>
+    /// 	<c>true</c> if this instance is reference; otherwise, <c>false</c>.
+    /// </value>
+    public bool? IsReference { get; set; }
+
+    /// <summary>
+    /// Gets the property null value handling.
+    /// </summary>
+    /// <value>The null value handling.</value>
+    public NullValueHandling? NullValueHandling { get; set; }
+
+    /// <summary>
+    /// Gets the property default value handling.
+    /// </summary>
+    /// <value>The default value handling.</value>
+    public DefaultValueHandling? DefaultValueHandling { get; set; }
+
+    /// <summary>
+    /// Gets the property reference loop handling.
+    /// </summary>
+    /// <value>The reference loop handling.</value>
+    public ReferenceLoopHandling? ReferenceLoopHandling { get; set; }
+
+    /// <summary>
+    /// Gets the property object creation handling.
+    /// </summary>
+    /// <value>The object creation handling.</value>
+    public ObjectCreationHandling? ObjectCreationHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets the type name handling.
+    /// </summary>
+    /// <value>The type name handling.</value>
+    public TypeNameHandling? TypeNameHandling { get; set; }
+
+    /// <summary>
+    /// Gets or sets a predicate used to determine whether the property should be serialize.
+    /// </summary>
+    /// <value>A predicate used to determine whether the property should be serialize.</value>
+    public Predicate<object> ShouldSerialize { get; set; }
+
+    /// <summary>
+    /// Gets or sets a predicate used to determine whether the property should be serialized.
+    /// </summary>
+    /// <value>A predicate used to determine whether the property should be serialized.</value>
+    public Predicate<object> GetIsSpecified { get; set; }
+
+    /// <summary>
+    /// Gets or sets an action used to set whether the property has been deserialized.
+    /// </summary>
+    /// <value>An action used to set whether the property has been deserialized.</value>
+    public Action<object, object> SetIsSpecified { get; set; }
+
+    /// <summary>
+    /// Returns a <see cref="String"/> that represents this instance.
+    /// </summary>
+    /// <returns>
+    /// A <see cref="String"/> that represents this instance.
+    /// </returns>
+    public override string ToString()
+    {
+      return PropertyName;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonPropertyCollection.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonPropertyCollection.cs
@@ -1,164 +1,164 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Collections.ObjectModel;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// A collection of <see cref="JsonProperty"/> objects.
-  /// </summary>
-  public class JsonPropertyCollection : KeyedCollection<string, JsonProperty>
-  {
-    private readonly Type _type;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonPropertyCollection"/> class.
-    /// </summary>
-    /// <param name="type">The type.</param>
-    public JsonPropertyCollection(Type type)
-      : base(StringComparer.Ordinal)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-      _type = type;
-    }
-
-    /// <summary>
-    /// When implemented in a derived class, extracts the key from the specified element.
-    /// </summary>
-    /// <param name="item">The element from which to extract the key.</param>
-    /// <returns>The key for the specified element.</returns>
-    protected override string GetKeyForItem(JsonProperty item)
-    {
-      return item.PropertyName;
-    }
-
-    /// <summary>
-    /// Adds a <see cref="JsonProperty"/> object.
-    /// </summary>
-    /// <param name="property">The property to add to the collection.</param>
-    public void AddProperty(JsonProperty property)
-    {
-      if (Contains(property.PropertyName))
-      {
-        // don't overwrite existing property with ignored property
-        if (property.Ignored)
-          return;
-
-        JsonProperty existingProperty = this[property.PropertyName];
-        bool duplicateProperty = true;
-
-        if (existingProperty.Ignored)
-        {
-          // remove ignored property so it can be replaced in collection
-          Remove(existingProperty);
-          duplicateProperty = false;
-        }
-
-        if (property.DeclaringType != null && existingProperty.DeclaringType != null)
-        {
-          if (property.DeclaringType.IsSubclassOf(existingProperty.DeclaringType))
-          {
-            // current property is on a derived class and hides the existing
-            Remove(existingProperty);
-            duplicateProperty = false;
-          }
-          if (existingProperty.DeclaringType.IsSubclassOf(property.DeclaringType))
-          {
-            // current property is hidden by the existing so don't add it
-            return;
-          }
-        }
-
-        if (duplicateProperty)
-          throw new JsonSerializationException("A member with the name '{0}' already exists on '{1}'. Use the JsonPropertyAttribute to specify another name.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName, _type));
-      }
-
-      Add(property);
-    }
-
-    /// <summary>
-    /// Gets the closest matching <see cref="JsonProperty"/> object.
-    /// First attempts to get an exact case match of propertyName and then
-    /// a case insensitive match.
-    /// </summary>
-    /// <param name="propertyName">Name of the property.</param>
-    /// <returns>A matching property if found.</returns>
-    public JsonProperty GetClosestMatchProperty(string propertyName)
-    {
-      JsonProperty property = GetProperty(propertyName, StringComparison.Ordinal);
-      if (property == null)
-        property = GetProperty(propertyName, StringComparison.OrdinalIgnoreCase);
-
-      return property;
-    }
-
-    private bool TryGetValue(string key, out JsonProperty item)
-    {
-      if (Dictionary == null)
-      {
-        item = default(JsonProperty);
-        return false;
-      }
-
-      return Dictionary.TryGetValue(key, out item);
-    }
-
-
-    /// <summary>
-    /// Gets a property by property name.
-    /// </summary>
-    /// <param name="propertyName">The name of the property to get.</param>
-    /// <param name="comparisonType">Type property name string comparison.</param>
-    /// <returns>A matching property if found.</returns>
-    public JsonProperty GetProperty(string propertyName, StringComparison comparisonType)
-    {
-      // KeyedCollection has an ordinal comparer
-      if (comparisonType == StringComparison.Ordinal)
-      {
-        JsonProperty property;
-        if (TryGetValue(propertyName, out property))
-          return property;
-
-        return null;
-      }
-
-      foreach (JsonProperty property in this)
-      {
-        if (string.Equals(propertyName, property.PropertyName, comparisonType))
-        {
-          return property;
-        }
-      }
-
-      return null;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Collections.ObjectModel;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// A collection of <see cref="JsonProperty"/> objects.
+  /// </summary>
+  public class JsonPropertyCollection : KeyedCollection<string, JsonProperty>
+  {
+    private readonly Type _type;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonPropertyCollection"/> class.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    public JsonPropertyCollection(Type type)
+      : base(StringComparer.Ordinal)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+      _type = type;
+    }
+
+    /// <summary>
+    /// When implemented in a derived class, extracts the key from the specified element.
+    /// </summary>
+    /// <param name="item">The element from which to extract the key.</param>
+    /// <returns>The key for the specified element.</returns>
+    protected override string GetKeyForItem(JsonProperty item)
+    {
+      return item.PropertyName;
+    }
+
+    /// <summary>
+    /// Adds a <see cref="JsonProperty"/> object.
+    /// </summary>
+    /// <param name="property">The property to add to the collection.</param>
+    public void AddProperty(JsonProperty property)
+    {
+      if (Contains(property.PropertyName))
+      {
+        // don't overwrite existing property with ignored property
+        if (property.Ignored)
+          return;
+
+        JsonProperty existingProperty = this[property.PropertyName];
+        bool duplicateProperty = true;
+
+        if (existingProperty.Ignored)
+        {
+          // remove ignored property so it can be replaced in collection
+          Remove(existingProperty);
+          duplicateProperty = false;
+        }
+
+        if (property.DeclaringType != null && existingProperty.DeclaringType != null)
+        {
+          if (property.DeclaringType.IsSubclassOf(existingProperty.DeclaringType))
+          {
+            // current property is on a derived class and hides the existing
+            Remove(existingProperty);
+            duplicateProperty = false;
+          }
+          if (existingProperty.DeclaringType.IsSubclassOf(property.DeclaringType))
+          {
+            // current property is hidden by the existing so don't add it
+            return;
+          }
+        }
+
+        if (duplicateProperty)
+          throw new JsonSerializationException("A member with the name '{0}' already exists on '{1}'. Use the JsonPropertyAttribute to specify another name.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName, _type));
+      }
+
+      Add(property);
+    }
+
+    /// <summary>
+    /// Gets the closest matching <see cref="JsonProperty"/> object.
+    /// First attempts to get an exact case match of propertyName and then
+    /// a case insensitive match.
+    /// </summary>
+    /// <param name="propertyName">Name of the property.</param>
+    /// <returns>A matching property if found.</returns>
+    public JsonProperty GetClosestMatchProperty(string propertyName)
+    {
+      JsonProperty property = GetProperty(propertyName, StringComparison.Ordinal);
+      if (property == null)
+        property = GetProperty(propertyName, StringComparison.OrdinalIgnoreCase);
+
+      return property;
+    }
+
+    private bool TryGetValue(string key, out JsonProperty item)
+    {
+      if (Dictionary == null)
+      {
+        item = default(JsonProperty);
+        return false;
+      }
+
+      return Dictionary.TryGetValue(key, out item);
+    }
+
+
+    /// <summary>
+    /// Gets a property by property name.
+    /// </summary>
+    /// <param name="propertyName">The name of the property to get.</param>
+    /// <param name="comparisonType">Type property name string comparison.</param>
+    /// <returns>A matching property if found.</returns>
+    public JsonProperty GetProperty(string propertyName, StringComparison comparisonType)
+    {
+      // KeyedCollection has an ordinal comparer
+      if (comparisonType == StringComparison.Ordinal)
+      {
+        JsonProperty property;
+        if (TryGetValue(propertyName, out property))
+          return property;
+
+        return null;
+      }
+
+      foreach (JsonProperty property in this)
+      {
+        if (string.Equals(propertyName, property.PropertyName, comparisonType))
+        {
+          return property;
+        }
+      }
+
+      return null;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalBase.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalBase.cs
@@ -1,112 +1,112 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Net;
-using System.Runtime.CompilerServices;
-using Newtonsoft.Json.Utilities;
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal abstract class JsonSerializerInternalBase
-  {
-    private class ReferenceEqualsEqualityComparer : IEqualityComparer<object>
-    {
-      bool IEqualityComparer<object>.Equals(object x, object y)
-      {
-        return ReferenceEquals(x, y);
-      }
-
-      int IEqualityComparer<object>.GetHashCode(object obj)
-      {
-#if !PocketPC && !NETFX_CORE
-        // put objects in a bucket based on their reference
-        return RuntimeHelpers.GetHashCode(obj);
-#else
-        // put all objects in the same bucket so ReferenceEquals is called on all
-        return -1;
-#endif
-      }
-    }
-
-    private ErrorContext _currentErrorContext;
-    private BidirectionalDictionary<string, object> _mappings;
-
-    internal readonly JsonSerializer Serializer;
-
-    protected JsonSerializerInternalBase(JsonSerializer serializer)
-    {
-      ValidationUtils.ArgumentNotNull(serializer, "serializer");
-
-      Serializer = serializer;
-    }
-
-    internal BidirectionalDictionary<string, object> DefaultReferenceMappings
-    {
-      get
-      {
-        // override equality comparer for object key dictionary
-        // object will be modified as it deserializes and might have mutable hashcode
-        if (_mappings == null)
-          _mappings = new BidirectionalDictionary<string, object>(
-            EqualityComparer<string>.Default,
-            new ReferenceEqualsEqualityComparer());
-
-        return _mappings;
-      }
-    }
-
-    protected ErrorContext GetErrorContext(object currentObject, object member, string path, Exception error)
-    {
-      if (_currentErrorContext == null)
-        _currentErrorContext = new ErrorContext(currentObject, member, path, error);
-
-      if (_currentErrorContext.Error != error)
-        throw new InvalidOperationException("Current error context error is different to requested error.");
-
-      return _currentErrorContext;
-    }
-
-    protected void ClearErrorContext()
-    {
-      if (_currentErrorContext == null)
-        throw new InvalidOperationException("Could not clear error context. Error context is already null.");
-
-      _currentErrorContext = null;
-    }
-
-    protected bool IsErrorHandled(object currentObject, JsonContract contract, object keyValue, string path, Exception ex)
-    {
-      ErrorContext errorContext = GetErrorContext(currentObject, keyValue, path, ex);
-      contract.InvokeOnError(currentObject, Serializer.Context, errorContext);
-
-      if (!errorContext.Handled)
-        Serializer.OnError(new ErrorEventArgs(currentObject, errorContext));
-
-      return errorContext.Handled;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Runtime.CompilerServices;
+using Newtonsoft.Json.Utilities;
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal abstract class JsonSerializerInternalBase
+  {
+    private class ReferenceEqualsEqualityComparer : IEqualityComparer<object>
+    {
+      bool IEqualityComparer<object>.Equals(object x, object y)
+      {
+        return ReferenceEquals(x, y);
+      }
+
+      int IEqualityComparer<object>.GetHashCode(object obj)
+      {
+#if !PocketPC && !NETFX_CORE
+        // put objects in a bucket based on their reference
+        return RuntimeHelpers.GetHashCode(obj);
+#else
+        // put all objects in the same bucket so ReferenceEquals is called on all
+        return -1;
+#endif
+      }
+    }
+
+    private ErrorContext _currentErrorContext;
+    private BidirectionalDictionary<string, object> _mappings;
+
+    internal readonly JsonSerializer Serializer;
+
+    protected JsonSerializerInternalBase(JsonSerializer serializer)
+    {
+      ValidationUtils.ArgumentNotNull(serializer, "serializer");
+
+      Serializer = serializer;
+    }
+
+    internal BidirectionalDictionary<string, object> DefaultReferenceMappings
+    {
+      get
+      {
+        // override equality comparer for object key dictionary
+        // object will be modified as it deserializes and might have mutable hashcode
+        if (_mappings == null)
+          _mappings = new BidirectionalDictionary<string, object>(
+            EqualityComparer<string>.Default,
+            new ReferenceEqualsEqualityComparer());
+
+        return _mappings;
+      }
+    }
+
+    protected ErrorContext GetErrorContext(object currentObject, object member, string path, Exception error)
+    {
+      if (_currentErrorContext == null)
+        _currentErrorContext = new ErrorContext(currentObject, member, path, error);
+
+      if (_currentErrorContext.Error != error)
+        throw new InvalidOperationException("Current error context error is different to requested error.");
+
+      return _currentErrorContext;
+    }
+
+    protected void ClearErrorContext()
+    {
+      if (_currentErrorContext == null)
+        throw new InvalidOperationException("Could not clear error context. Error context is already null.");
+
+      _currentErrorContext = null;
+    }
+
+    protected bool IsErrorHandled(object currentObject, JsonContract contract, object keyValue, string path, Exception ex)
+    {
+      ErrorContext errorContext = GetErrorContext(currentObject, keyValue, path, ex);
+      contract.InvokeOnError(currentObject, Serializer.Context, errorContext);
+
+      if (!errorContext.Handled)
+        Serializer.OnError(new ErrorEventArgs(currentObject, errorContext));
+
+      return errorContext.Handled;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs
@@ -1,1314 +1,1314 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System.Dynamic;
-#endif
-using System.Globalization;
-using System.Reflection;
-using System.Runtime.Serialization;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal class JsonSerializerInternalReader : JsonSerializerInternalBase
-  {
-    private JsonSerializerProxy _internalSerializer;
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    private JsonFormatterConverter _formatterConverter;
-#endif
-
-    public JsonSerializerInternalReader(JsonSerializer serializer)
-      : base(serializer)
-    {
-    }
-
-    public void Populate(JsonReader reader, object target)
-    {
-      ValidationUtils.ArgumentNotNull(target, "target");
-
-      Type objectType = target.GetType();
-
-      JsonContract contract = Serializer.ContractResolver.ResolveContract(objectType);
-
-      if (reader.TokenType == JsonToken.None)
-        reader.Read();
-
-      if (reader.TokenType == JsonToken.StartArray)
-      {
-        if (contract.ContractType == JsonContractType.Array)
-          PopulateList(CollectionUtils.CreateCollectionWrapper(target), reader, null, (JsonArrayContract) contract);
-        else
-          throw CreateSerializationException(reader, "Cannot populate JSON array onto type '{0}'.".FormatWith(CultureInfo.InvariantCulture, objectType));
-      }
-      else if (reader.TokenType == JsonToken.StartObject)
-      {
-        CheckedRead(reader);
-
-        string id = null;
-        if (reader.TokenType == JsonToken.PropertyName && string.Equals(reader.Value.ToString(), JsonTypeReflector.IdPropertyName, StringComparison.Ordinal))
-        {
-          CheckedRead(reader);
-          id = (reader.Value != null) ? reader.Value.ToString() : null;
-          CheckedRead(reader);
-        }
-
-        if (contract.ContractType == JsonContractType.Dictionary)
-          PopulateDictionary(CollectionUtils.CreateDictionaryWrapper(target), reader, (JsonDictionaryContract) contract, id);
-        else if (contract.ContractType == JsonContractType.Object)
-          PopulateObject(target, reader, (JsonObjectContract) contract, id);
-        else
-          throw CreateSerializationException(reader, "Cannot populate JSON object onto type '{0}'.".FormatWith(CultureInfo.InvariantCulture, objectType));
-      }
-      else
-      {
-        throw CreateSerializationException(reader, "Unexpected initial token '{0}' when populating object. Expected JSON object or array.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
-      }
-    }
-
-    private JsonContract GetContractSafe(Type type)
-    {
-      if (type == null)
-        return null;
-
-      return Serializer.ContractResolver.ResolveContract(type);
-    }
-
-    public object Deserialize(JsonReader reader, Type objectType)
-    {
-      if (reader == null)
-        throw new ArgumentNullException("reader");
-
-      JsonContract contract = GetContractSafe(objectType);
-
-      JsonConverter converter = GetConverter(contract, null);
-
-      if (reader.TokenType == JsonToken.None && !ReadForType(reader, contract, converter != null, false))
-      {
-        if (!contract.IsNullable)
-          throw new JsonSerializationException("No JSON content found and type '{0}' is not nullable.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-        return null;
-      }
-
-      return CreateValueNonProperty(reader, objectType, contract, converter);
-    }
-
-    private JsonSerializerProxy GetInternalSerializer()
-    {
-      if (_internalSerializer == null)
-        _internalSerializer = new JsonSerializerProxy(this);
-
-      return _internalSerializer;
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    private JsonFormatterConverter GetFormatterConverter()
-    {
-      if (_formatterConverter == null)
-        _formatterConverter = new JsonFormatterConverter(GetInternalSerializer());
-
-      return _formatterConverter;
-    }
-#endif
-
-    private JToken CreateJToken(JsonReader reader, JsonContract contract)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-
-      if (contract != null && contract.UnderlyingType == typeof (JRaw))
-      {
-        return JRaw.Create(reader);
-      }
-      else
-      {
-        JToken token;
-        using (JTokenWriter writer = new JTokenWriter())
-        {
-          writer.WriteToken(reader);
-          token = writer.Token;
-        }
-
-        return token;
-      }
-    }
-
-    private JToken CreateJObject(JsonReader reader)
-    {
-      ValidationUtils.ArgumentNotNull(reader, "reader");
-
-      // this is needed because we've already read inside the object, looking for special properties
-      JToken token;
-      using (JTokenWriter writer = new JTokenWriter())
-      {
-        writer.WriteStartObject();
-
-        if (reader.TokenType == JsonToken.PropertyName)
-          writer.WriteToken(reader, reader.Depth - 1);
-        else
-          writer.WriteEndObject();
-
-        token = writer.Token;
-      }
-
-      return token;
-    }
-
-    private object CreateValueProperty(JsonReader reader, JsonProperty property, JsonConverter propertyConverter, object target, bool gottenCurrentValue, object currentValue)
-    {
-      JsonContract contract;
-      JsonConverter converter;
-
-      if (property.PropertyContract == null)
-        property.PropertyContract = GetContractSafe(property.PropertyType);
-
-      if (currentValue == null)
-      {
-        contract = property.PropertyContract;
-        converter = propertyConverter;
-      }
-      else
-      {
-        contract = GetContractSafe(currentValue.GetType());
-
-        if (contract != property.PropertyContract)
-          converter = GetConverter(contract, property.MemberConverter);
-        else
-          converter = propertyConverter;
-      }
-
-      Type objectType = property.PropertyType;
-
-      if (converter != null && converter.CanRead)
-      {
-        if (!gottenCurrentValue && target != null && property.Readable)
-          currentValue = property.ValueProvider.GetValue(target);
-
-        return converter.ReadJson(reader, objectType, currentValue, GetInternalSerializer());
-      }
-
-      return CreateValueInternal(reader, objectType, contract, property, currentValue);
-    }
-
-    private object CreateValueNonProperty(JsonReader reader, Type objectType, JsonContract contract, JsonConverter converter)
-    {
-      if (converter != null && converter.CanRead)
-        return converter.ReadJson(reader, objectType, null, GetInternalSerializer());
-
-      return CreateValueInternal(reader, objectType, contract, null, null);
-    }
-
-    private object CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue)
-    {
-      if (contract != null && contract.ContractType == JsonContractType.Linq)
-        return CreateJToken(reader, contract);
-
-      do
-      {
-        switch (reader.TokenType)
-        {
-            // populate a typed object or generic dictionary/array
-            // depending upon whether an objectType was supplied
-          case JsonToken.StartObject:
-            return CreateObject(reader, objectType, contract, member, existingValue);
-          case JsonToken.StartArray:
-            return CreateList(reader, objectType, contract, member, existingValue, null);
-          case JsonToken.Integer:
-          case JsonToken.Float:
-          case JsonToken.Boolean:
-          case JsonToken.Date:
-          case JsonToken.Bytes:
-            return EnsureType(reader, reader.Value, CultureInfo.InvariantCulture, contract, objectType);
-          case JsonToken.String:
-            // convert empty string to null automatically for nullable types
-            if (string.IsNullOrEmpty((string)reader.Value) && objectType != typeof(string) && objectType != typeof(object) && contract.IsNullable)
-              return null;
-
-            // string that needs to be returned as a byte array should be base 64 decoded
-            if (objectType == typeof (byte[]))
-              return Convert.FromBase64String((string) reader.Value);
-
-            return EnsureType(reader, reader.Value, CultureInfo.InvariantCulture, contract, objectType);
-          case JsonToken.StartConstructor:
-          case JsonToken.EndConstructor:
-            string constructorName = reader.Value.ToString();
-
-            return constructorName;
-          case JsonToken.Null:
-          case JsonToken.Undefined:
-#if !NETFX_CORE
-            if (objectType == typeof (DBNull))
-              return DBNull.Value;
-#endif
-
-            return EnsureType(reader, reader.Value, CultureInfo.InvariantCulture, contract, objectType);
-          case JsonToken.Raw:
-            return new JRaw((string) reader.Value);
-          case JsonToken.Comment:
-            // ignore
-            break;
-          default:
-            throw CreateSerializationException(reader, "Unexpected token while deserializing object: " + reader.TokenType);
-        }
-      } while (reader.Read());
-
-      throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
-    }
-
-    private JsonSerializationException CreateSerializationException(JsonReader reader, string message)
-    {
-      return CreateSerializationException(reader, message, null);
-    }
-
-    private JsonSerializationException CreateSerializationException(JsonReader reader, string message, Exception ex)
-    {
-      return CreateSerializationException(reader as IJsonLineInfo, message, ex);
-    }
-
-    private JsonSerializationException CreateSerializationException(IJsonLineInfo lineInfo, string message, Exception ex)
-    {
-      message = JsonReader.FormatExceptionMessage(lineInfo, message);
-
-      return new JsonSerializationException(message, ex);
-    }
-
-    private JsonConverter GetConverter(JsonContract contract, JsonConverter memberConverter)
-    {
-      JsonConverter converter = null;
-      if (memberConverter != null)
-      {
-        // member attribute converter
-        converter = memberConverter;
-      }
-      else if (contract != null)
-      {
-        JsonConverter matchingConverter;
-        if (contract.Converter != null)
-          // class attribute converter
-          converter = contract.Converter;
-        else if ((matchingConverter = Serializer.GetMatchingConverter(contract.UnderlyingType)) != null)
-          // passed in converters
-          converter = matchingConverter;
-        else if (contract.InternalConverter != null)
-          // internally specified converter
-          converter = contract.InternalConverter;
-      }
-      return converter;
-    }
-
-    private object CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue)
-    {
-      CheckedRead(reader);
-
-      string id = null;
-
-      if (reader.TokenType == JsonToken.PropertyName)
-      {
-        string propertyName = reader.Value.ToString();
-
-        if (propertyName.Length > 0 && propertyName[0] == '$')
-        {
-          // read 'special' properties
-          // $type, $id, $ref, etc
-          bool specialProperty;
-
-          do
-          {
-            propertyName = reader.Value.ToString();
-
-            if (string.Equals(propertyName, JsonTypeReflector.RefPropertyName, StringComparison.Ordinal))
-            {
-              CheckedRead(reader);
-              if (reader.TokenType != JsonToken.String && reader.TokenType != JsonToken.Null)
-                throw CreateSerializationException(reader, "JSON reference {0} property must have a string or null value.".FormatWith(CultureInfo.InvariantCulture, JsonTypeReflector.RefPropertyName));
-
-              string reference = (reader.Value != null) ? reader.Value.ToString() : null;
-
-              CheckedRead(reader);
-
-              if (reference != null)
-              {
-                if (reader.TokenType == JsonToken.PropertyName)
-                  throw CreateSerializationException(reader, "Additional content found in JSON reference object. A JSON reference object should only have a {0} property.".FormatWith(CultureInfo.InvariantCulture, JsonTypeReflector.RefPropertyName));
-
-                return Serializer.ReferenceResolver.ResolveReference(this, reference);
-              }
-              else
-              {
-                specialProperty = true;
-              }
-            }
-            else if (string.Equals(propertyName, JsonTypeReflector.TypePropertyName, StringComparison.Ordinal))
-            {
-              CheckedRead(reader);
-              string qualifiedTypeName = reader.Value.ToString();
-
-              if ((((member != null) ? member.TypeNameHandling : null) ?? Serializer.TypeNameHandling) != TypeNameHandling.None)
-              {
-                string typeName;
-                string assemblyName;
-                ReflectionUtils.SplitFullyQualifiedTypeName(qualifiedTypeName, out typeName, out assemblyName);
-
-                Type specifiedType;
-                try
-                {
-                  specifiedType = Serializer.Binder.BindToType(assemblyName, typeName);
-                }
-                catch (Exception ex)
-                {
-                  throw CreateSerializationException(reader, "Error resolving type specified in JSON '{0}'.".FormatWith(CultureInfo.InvariantCulture, qualifiedTypeName), ex);
-                }
-
-                if (specifiedType == null)
-                  throw CreateSerializationException(reader, "Type specified in JSON '{0}' was not resolved.".FormatWith(CultureInfo.InvariantCulture, qualifiedTypeName));
-
-                if (objectType != null && !objectType.IsAssignableFrom(specifiedType))
-                  throw CreateSerializationException(reader, "Type specified in JSON '{0}' is not compatible with '{1}'.".FormatWith(CultureInfo.InvariantCulture, specifiedType.AssemblyQualifiedName, objectType.AssemblyQualifiedName));
-
-                objectType = specifiedType;
-                contract = GetContractSafe(specifiedType);
-              }
-
-              CheckedRead(reader);
-
-              specialProperty = true;
-            }
-            else if (string.Equals(propertyName, JsonTypeReflector.IdPropertyName, StringComparison.Ordinal))
-            {
-              CheckedRead(reader);
-
-              id = (reader.Value != null) ? reader.Value.ToString() : null;
-
-              CheckedRead(reader);
-              specialProperty = true;
-            }
-            else if (string.Equals(propertyName, JsonTypeReflector.ArrayValuesPropertyName, StringComparison.Ordinal))
-            {
-              CheckedRead(reader);
-              object list = CreateList(reader, objectType, contract, member, existingValue, id);
-              CheckedRead(reader);
-              return list;
-            }
-            else
-            {
-              specialProperty = false;
-            }
-          } while (specialProperty
-                   && reader.TokenType == JsonToken.PropertyName);
-        }
-      }
-
-      if (!HasDefinedType(objectType))
-        return CreateJObject(reader);
-
-      if (contract == null)
-        throw CreateSerializationException(reader, "Could not resolve type '{0}' to a JsonContract.".FormatWith(CultureInfo.InvariantCulture, objectType));
-
-      switch (contract.ContractType)
-      {
-        case JsonContractType.Object:
-          JsonObjectContract objectContract = (JsonObjectContract) contract;
-          if (existingValue == null)
-            return CreateAndPopulateObject(reader, objectContract, id);
-
-          return PopulateObject(existingValue, reader, objectContract, id);
-        case JsonContractType.Primitive:
-          JsonPrimitiveContract primitiveContract = (JsonPrimitiveContract) contract;
-          // if the content is inside $value then read past it
-          if (reader.TokenType == JsonToken.PropertyName && string.Equals(reader.Value.ToString(), JsonTypeReflector.ValuePropertyName, StringComparison.Ordinal))
-          {
-            CheckedRead(reader);
-            object value = CreateValueInternal(reader, objectType, primitiveContract, member, existingValue);
-
-            CheckedRead(reader);
-            return value;
-          }
-          break;
-        case JsonContractType.Dictionary:
-          JsonDictionaryContract dictionaryContract = (JsonDictionaryContract) contract;
-          if (existingValue == null)
-            return CreateAndPopulateDictionary(reader, dictionaryContract, id);
-
-          return PopulateDictionary(dictionaryContract.CreateWrapper(existingValue), reader, dictionaryContract, id);
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-        case JsonContractType.Dynamic:
-          JsonDynamicContract dynamicContract = (JsonDynamicContract) contract;
-          return CreateDynamic(reader, dynamicContract, id);
-#endif
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-        case JsonContractType.Serializable:
-          JsonISerializableContract serializableContract = (JsonISerializableContract) contract;
-          return CreateISerializable(reader, serializableContract, id);
-#endif
-      }
-
-      throw CreateSerializationException(reader, @"Cannot deserialize JSON object (i.e. {{""name"":""value""}}) into type '{0}'.
-The deserialized type should be a normal .NET type (i.e. not a primitive type like integer, not a collection type like an array or List<T>) or a dictionary type (i.e. Dictionary<TKey, TValue>).
-To force JSON objects to deserialize add the JsonObjectAttribute to the type.".FormatWith(CultureInfo.InvariantCulture, objectType));
-    }
-
-    private JsonArrayContract EnsureArrayContract(JsonReader reader, Type objectType, JsonContract contract)
-    {
-      if (contract == null)
-        throw CreateSerializationException(reader, "Could not resolve type '{0}' to a JsonContract.".FormatWith(CultureInfo.InvariantCulture, objectType));
-
-      JsonArrayContract arrayContract = contract as JsonArrayContract;
-      if (arrayContract == null)
-        throw CreateSerializationException(reader, @"Cannot deserialize JSON array (i.e. [1,2,3]) into type '{0}'.
-The deserialized type must be an array or implement a collection interface like IEnumerable, ICollection or IList.
-To force JSON arrays to deserialize add the JsonArrayAttribute to the type.".FormatWith(CultureInfo.InvariantCulture, objectType));
-
-      return arrayContract;
-    }
-
-    private void CheckedRead(JsonReader reader)
-    {
-      if (!reader.Read())
-        throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
-    }
-
-    private object CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue, string reference)
-    {
-      object value;
-      if (HasDefinedType(objectType))
-      {
-        JsonArrayContract arrayContract = EnsureArrayContract(reader, objectType, contract);
-
-        if (existingValue == null)
-          value = CreateAndPopulateList(reader, reference, arrayContract);
-        else
-          value = PopulateList(arrayContract.CreateWrapper(existingValue), reader, reference, arrayContract);
-      }
-      else
-      {
-        value = CreateJToken(reader, contract);
-      }
-      return value;
-    }
-
-    private bool HasDefinedType(Type type)
-    {
-      return (type != null && type != typeof (object) && !typeof (JToken).IsSubclassOf(type)
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-        && type != typeof (IDynamicMetaObjectProvider)
-#endif
-        );
-    }
-
-    private object EnsureType(JsonReader reader, object value, CultureInfo culture, JsonContract contract, Type targetType)
-    {
-      if (targetType == null)
-        return value;
-
-      Type valueType = ReflectionUtils.GetObjectType(value);
-
-      // type of value and type of target don't match
-      // attempt to convert value's type to target's type
-      if (valueType != targetType)
-      {
-        try
-        {
-          if (value == null && contract.IsNullable)
-            return null;
-
-          if (contract.IsConvertable)
-          {
-            if (contract.NonNullableUnderlyingType.IsEnum())
-              {
-                if (value is string)
-                  return Enum.Parse(contract.NonNullableUnderlyingType, value.ToString(), true);
-                else if (ConvertUtils.IsInteger(value))
-                  return Enum.ToObject(contract.NonNullableUnderlyingType, value);
-              }
-
-              return Convert.ChangeType(value, contract.NonNullableUnderlyingType, culture);
-          }
-
-          return ConvertUtils.ConvertOrCast(value, culture, contract.NonNullableUnderlyingType);
-        }
-        catch (Exception ex)
-        {
-          throw CreateSerializationException(reader, "Error converting value {0} to type '{1}'.".FormatWith(CultureInfo.InvariantCulture, FormatValueForPrint(value), targetType), ex);
-        }
-      }
-
-      return value;
-    }
-
-    private string FormatValueForPrint(object value)
-    {
-      if (value == null)
-        return "{null}";
-
-      if (value is string)
-        return @"""" + value + @"""";
-
-      return value.ToString();
-    }
-
-    private void SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonReader reader, object target)
-    {
-      if (property.Ignored)
-      {
-        reader.Skip();
-        return;
-      }
-
-      object currentValue = null;
-      bool useExistingValue = false;
-      bool gottenCurrentValue = false;
-
-      ObjectCreationHandling objectCreationHandling =
-        property.ObjectCreationHandling.GetValueOrDefault(Serializer.ObjectCreationHandling);
-
-      if ((objectCreationHandling == ObjectCreationHandling.Auto || objectCreationHandling == ObjectCreationHandling.Reuse)
-        && (reader.TokenType == JsonToken.StartArray || reader.TokenType == JsonToken.StartObject)
-          && property.Readable)
-      {
-        currentValue = property.ValueProvider.GetValue(target);
-        gottenCurrentValue = true;
-
-        useExistingValue = (currentValue != null
-          && !property.PropertyType.IsArray
-            && !ReflectionUtils.InheritsGenericDefinition(property.PropertyType, typeof (ReadOnlyCollection<>))
-              && !property.PropertyType.IsValueType());
-      }
-
-      if (!property.Writable && !useExistingValue)
-      {
-        reader.Skip();
-        return;
-      }
-
-      // test tokentype here because null might not be convertable to some types, e.g. ignoring null when applied to DateTime
-      if (property.NullValueHandling.GetValueOrDefault(Serializer.NullValueHandling) == NullValueHandling.Ignore && reader.TokenType == JsonToken.Null)
-      {
-        reader.Skip();
-        return;
-      }
-
-      // test tokentype here because default value might not be convertable to actual type, e.g. default of "" for DateTime
-      if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Ignore)
-        && JsonReader.IsPrimitiveToken(reader.TokenType)
-          && MiscellaneousUtils.ValueEquals(reader.Value, property.DefaultValue))
-      {
-        reader.Skip();
-        return;
-      }
-
-      object existingValue = (useExistingValue) ? currentValue : null;
-      object value = CreateValueProperty(reader, property, propertyConverter, target, gottenCurrentValue, existingValue);
-
-      // always set the value if useExistingValue is false,
-      // otherwise also set it if CreateValue returns a new value compared to the currentValue
-      // this could happen because of a JsonConverter against the type
-      if ((!useExistingValue || value != currentValue)
-        && ShouldSetPropertyValue(property, value))
-      {
-        property.ValueProvider.SetValue(target, value);
-
-        if (property.SetIsSpecified != null)
-          property.SetIsSpecified(target, true);
-      }
-    }
-
-    private bool HasFlag(DefaultValueHandling value, DefaultValueHandling flag)
-    {
-      return ((value & flag) == flag);
-    }
-
-    private bool ShouldSetPropertyValue(JsonProperty property, object value)
-    {
-      if (property.NullValueHandling.GetValueOrDefault(Serializer.NullValueHandling) == NullValueHandling.Ignore && value == null)
-        return false;
-
-      if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Ignore)
-        && MiscellaneousUtils.ValueEquals(value, property.DefaultValue))
-        return false;
-
-      if (!property.Writable)
-        return false;
-
-      return true;
-    }
-
-    private object CreateAndPopulateDictionary(JsonReader reader, JsonDictionaryContract contract, string id)
-    {
-      object dictionary;
-
-      if (contract.DefaultCreator != null &&
-        (!contract.DefaultCreatorNonPublic || Serializer.ConstructorHandling == ConstructorHandling.AllowNonPublicDefaultConstructor))
-        dictionary = contract.DefaultCreator();
-      else
-        throw CreateSerializationException(reader, "Unable to find a default constructor to use for type {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-      IWrappedDictionary dictionaryWrapper = contract.CreateWrapper(dictionary);
-
-      PopulateDictionary(dictionaryWrapper, reader, contract, id);
-
-      return dictionaryWrapper.UnderlyingDictionary;
-    }
-
-    private object PopulateDictionary(IWrappedDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, string id)
-    {
-      if (id != null)
-        Serializer.ReferenceResolver.AddReference(this, id, dictionary.UnderlyingDictionary);
-
-      contract.InvokeOnDeserializing(dictionary.UnderlyingDictionary, Serializer.Context);
-
-      int initialDepth = reader.Depth;
-
-      do
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.PropertyName:
-            object keyValue = reader.Value;
-            try
-            {
-              if (contract.DictionaryKeyContract == null)
-                contract.DictionaryKeyContract = GetContractSafe(contract.DictionaryKeyType);
-              
-              try
-              {
-                keyValue = EnsureType(reader, keyValue, CultureInfo.InvariantCulture, contract.DictionaryKeyContract, contract.DictionaryKeyType);
-              }
-              catch (Exception ex)
-              {
-                throw CreateSerializationException(reader, "Could not convert string '{0}' to dictionary key type '{1}'. Create a TypeConverter to convert from the string to the key type object.".FormatWith(CultureInfo.InvariantCulture, reader.Value, contract.DictionaryKeyType), ex);
-              }
-
-              if (contract.DictionaryValueContract == null)
-                contract.DictionaryValueContract = GetContractSafe(contract.DictionaryValueType);
-
-              JsonConverter dictionaryValueConverter = GetConverter(contract.DictionaryValueContract, null);
-
-              if (!ReadForType(reader, contract.DictionaryValueContract, dictionaryValueConverter != null, false))
-                throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
-
-              dictionary[keyValue] = CreateValueNonProperty(reader, contract.DictionaryValueType, contract.DictionaryValueContract, dictionaryValueConverter);
-            }
-            catch (Exception ex)
-            {
-              if (IsErrorHandled(dictionary, contract, keyValue, reader.Path, ex))
-                HandleError(reader, initialDepth);
-              else
-                throw;
-            }
-            break;
-          case JsonToken.Comment:
-            break;
-          case JsonToken.EndObject:
-            contract.InvokeOnDeserialized(dictionary.UnderlyingDictionary, Serializer.Context);
-
-            return dictionary.UnderlyingDictionary;
-          default:
-            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
-        }
-      } while (reader.Read());
-
-      throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
-    }
-
-    private object CreateAndPopulateList(JsonReader reader, string reference, JsonArrayContract contract)
-    {
-      return CollectionUtils.CreateAndPopulateList(contract.CreatedType, (l, isTemporaryListReference) =>
-        {
-          if (reference != null && isTemporaryListReference)
-            throw CreateSerializationException(reader, "Cannot preserve reference to array or readonly list: {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-#if !PocketPC
-          if (contract.OnSerializing != null && isTemporaryListReference)
-            throw CreateSerializationException(reader, "Cannot call OnSerializing on an array or readonly list: {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-#endif
-          if (contract.OnError != null && isTemporaryListReference)
-            throw CreateSerializationException(reader, "Cannot call OnError on an array or readonly list: {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-          PopulateList(contract.CreateWrapper(l), reader, reference, contract);
-        });
-    }
-
-    private object PopulateList(IWrappedCollection wrappedList, JsonReader reader, string reference, JsonArrayContract contract)
-    {
-      object list = wrappedList.UnderlyingCollection;
-
-      // can't populate an existing array
-      if (wrappedList.IsFixedSize)
-      {
-        reader.Skip();
-        return wrappedList.UnderlyingCollection;
-      }
-
-      if (reference != null)
-        Serializer.ReferenceResolver.AddReference(this, reference, list);
-
-      contract.InvokeOnDeserializing(list, Serializer.Context);
-
-      int initialDepth = reader.Depth;
-      int index = 0;
-
-      JsonContract collectionItemContract = GetContractSafe(contract.CollectionItemType);
-      JsonConverter collectionItemConverter = GetConverter(collectionItemContract, null);
-
-      while (true)
-      {
-        try
-        {
-          if (ReadForType(reader, collectionItemContract, collectionItemConverter != null, true))
-          {
-            switch (reader.TokenType)
-            {
-              case JsonToken.EndArray:
-                contract.InvokeOnDeserialized(list, Serializer.Context);
-
-                return wrappedList.UnderlyingCollection;
-              case JsonToken.Comment:
-                break;
-              default:
-                object value = CreateValueNonProperty(reader, contract.CollectionItemType, collectionItemContract, collectionItemConverter);
-
-                wrappedList.Add(value);
-                break;
-            }
-          }
-          else
-          {
-            break;
-          }
-        }
-        catch (Exception ex)
-        {
-          if (IsErrorHandled(list, contract, index, reader.Path, ex))
-            HandleError(reader, initialDepth);
-          else
-            throw;
-        }
-        finally
-        {
-          index++;
-        }
-      }
-
-      throw CreateSerializationException(reader, "Unexpected end when deserializing array.");
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-    private object CreateISerializable(JsonReader reader, JsonISerializableContract contract, string id)
-    {
-      Type objectType = contract.UnderlyingType;
-
-      if (!JsonTypeReflector.FullyTrusted)
-      {
-        throw new JsonSerializationException(@"Type '{0}' implements ISerializable but cannot be deserialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
-To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.".FormatWith(CultureInfo.InvariantCulture, objectType));
-      }
-
-      SerializationInfo serializationInfo = new SerializationInfo(contract.UnderlyingType, GetFormatterConverter());
-
-      bool exit = false;
-      do
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.PropertyName:
-            string memberName = reader.Value.ToString();
-            if (!reader.Read())
-              throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
-
-            serializationInfo.AddValue(memberName, JToken.ReadFrom(reader));
-            break;
-          case JsonToken.Comment:
-            break;
-          case JsonToken.EndObject:
-            exit = true;
-            break;
-          default:
-            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
-        }
-      } while (!exit && reader.Read());
-
-      if (contract.ISerializableCreator == null)
-        throw CreateSerializationException(reader, "ISerializable type '{0}' does not have a valid constructor. To correctly implement ISerializable a constructor that takes SerializationInfo and StreamingContext parameters should be present.".FormatWith(CultureInfo.InvariantCulture, objectType));
-
-      object createdObject = contract.ISerializableCreator(serializationInfo, Serializer.Context);
-
-      if (id != null)
-        Serializer.ReferenceResolver.AddReference(this, id, createdObject);
-
-      // these are together because OnDeserializing takes an object but for an ISerializable the object is full created in the constructor
-      contract.InvokeOnDeserializing(createdObject, Serializer.Context);
-      contract.InvokeOnDeserialized(createdObject, Serializer.Context);
-
-      return createdObject;
-    }
-#endif
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    private object CreateDynamic(JsonReader reader, JsonDynamicContract contract, string id)
-    {
-      IDynamicMetaObjectProvider newObject = null;
-
-      if (contract.UnderlyingType.IsInterface() || contract.UnderlyingType.IsAbstract())
-        throw CreateSerializationException(reader, "Could not create an instance of type {0}. Type is an interface or abstract class and cannot be instantated.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-      if (contract.DefaultCreator != null &&
-        (!contract.DefaultCreatorNonPublic || Serializer.ConstructorHandling == ConstructorHandling.AllowNonPublicDefaultConstructor))
-        newObject = (IDynamicMetaObjectProvider) contract.DefaultCreator();
-      else
-        throw CreateSerializationException(reader, "Unable to find a default constructor to use for type {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-      if (id != null)
-        Serializer.ReferenceResolver.AddReference(this, id, newObject);
-
-      contract.InvokeOnDeserializing(newObject, Serializer.Context);
-
-      int initialDepth = reader.Depth;
-
-      bool exit = false;
-      do
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.PropertyName:
-            string memberName = reader.Value.ToString();
-
-            try
-            {
-              if (!reader.Read())
-                throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
-
-              // first attempt to find a settable property, otherwise fall back to a dynamic set without type
-              JsonProperty property = contract.Properties.GetClosestMatchProperty(memberName);
-
-              if (property != null && property.Writable && !property.Ignored)
-              {
-                if (property.PropertyContract == null)
-                  property.PropertyContract = GetContractSafe(property.PropertyType);
-
-                JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter);
-
-                SetPropertyValue(property, propertyConverter, reader, newObject);
-              }
-              else
-              {
-                Type t = (JsonReader.IsPrimitiveToken(reader.TokenType)) ? reader.ValueType : typeof (IDynamicMetaObjectProvider);
-
-                JsonContract dynamicMemberContract = GetContractSafe(t);
-                JsonConverter dynamicMemberConverter = GetConverter(dynamicMemberContract, null);
-
-                object value = CreateValueNonProperty(reader, t, dynamicMemberContract, dynamicMemberConverter);
-
-                newObject.TrySetMember(memberName, value);
-              }
-            }
-            catch (Exception ex)
-            {
-              if (IsErrorHandled(newObject, contract, memberName, reader.Path, ex))
-                HandleError(reader, initialDepth);
-              else
-                throw;
-            }
-            break;
-          case JsonToken.EndObject:
-            exit = true;
-            break;
-          default:
-            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
-        }
-      } while (!exit && reader.Read());
-
-      contract.InvokeOnDeserialized(newObject, Serializer.Context);
-
-      return newObject;
-    }
-#endif
-
-    private object CreateAndPopulateObject(JsonReader reader, JsonObjectContract contract, string id)
-    {
-      object newObject = null;
-
-      if (contract.UnderlyingType.IsInterface() || contract.UnderlyingType.IsAbstract())
-        throw CreateSerializationException(reader, "Could not create an instance of type {0}. Type is an interface or abstract class and cannot be instantated.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-      if (contract.OverrideConstructor != null)
-      {
-        if (contract.OverrideConstructor.GetParameters().Length > 0)
-          return CreateObjectFromNonDefaultConstructor(reader, contract, contract.OverrideConstructor, id);
-
-        newObject = contract.OverrideConstructor.Invoke(null);
-      }
-      else if (contract.DefaultCreator != null &&
-        (!contract.DefaultCreatorNonPublic || Serializer.ConstructorHandling == ConstructorHandling.AllowNonPublicDefaultConstructor || contract.ParametrizedConstructor == null))
-      {
-        // use the default constructor if it is...
-        // public
-        // non-public and the user has change constructor handling settings
-        // non-public and there is no other constructor
-        newObject = contract.DefaultCreator();
-      }
-      else if (contract.ParametrizedConstructor != null)
-      {
-        return CreateObjectFromNonDefaultConstructor(reader, contract, contract.ParametrizedConstructor, id);
-      }
-
-      if (newObject == null)
-        throw CreateSerializationException(reader, "Unable to find a constructor to use for type {0}. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
-
-      PopulateObject(newObject, reader, contract, id);
-      return newObject;
-    }
-
-    private object CreateObjectFromNonDefaultConstructor(JsonReader reader, JsonObjectContract contract, ConstructorInfo constructorInfo, string id)
-    {
-      ValidationUtils.ArgumentNotNull(constructorInfo, "constructorInfo");
-
-      Type objectType = contract.UnderlyingType;
-
-      IDictionary<JsonProperty, object> propertyValues = ResolvePropertyAndConstructorValues(contract, reader, objectType);
-
-      IDictionary<ParameterInfo, object> constructorParameters = constructorInfo.GetParameters().ToDictionary(p => p, p => (object) null);
-      IDictionary<JsonProperty, object> remainingPropertyValues = new Dictionary<JsonProperty, object>();
-
-      foreach (KeyValuePair<JsonProperty, object> propertyValue in propertyValues)
-      {
-        ParameterInfo matchingConstructorParameter = constructorParameters.ForgivingCaseSensitiveFind(kv => kv.Key.Name, propertyValue.Key.UnderlyingName).Key;
-        if (matchingConstructorParameter != null)
-          constructorParameters[matchingConstructorParameter] = propertyValue.Value;
-        else
-          remainingPropertyValues.Add(propertyValue);
-      }
-
-      object createdObject = constructorInfo.Invoke(constructorParameters.Values.ToArray());
-
-      if (id != null)
-        Serializer.ReferenceResolver.AddReference(this, id, createdObject);
-
-      contract.InvokeOnDeserializing(createdObject, Serializer.Context);
-
-      // go through unused values and set the newly created object's properties
-      foreach (KeyValuePair<JsonProperty, object> remainingPropertyValue in remainingPropertyValues)
-      {
-        JsonProperty property = remainingPropertyValue.Key;
-        object value = remainingPropertyValue.Value;
-
-        if (ShouldSetPropertyValue(remainingPropertyValue.Key, remainingPropertyValue.Value))
-        {
-          property.ValueProvider.SetValue(createdObject, value);
-        }
-        else if (!property.Writable && value != null)
-        {
-          // handle readonly collection/dictionary properties
-          JsonContract propertyContract = Serializer.ContractResolver.ResolveContract(property.PropertyType);
-
-          if (propertyContract.ContractType == JsonContractType.Array)
-          {
-            JsonArrayContract propertyArrayContract = propertyContract as JsonArrayContract;
-
-            object createdObjectCollection = property.ValueProvider.GetValue(createdObject);
-            if (createdObjectCollection != null)
-            {
-              IWrappedCollection createdObjectCollectionWrapper = propertyArrayContract.CreateWrapper(createdObjectCollection);
-              IWrappedCollection newValues = propertyArrayContract.CreateWrapper(value);
-
-              foreach (object newValue in newValues)
-              {
-                createdObjectCollectionWrapper.Add(newValue);
-              }
-            }
-          }
-          else if (propertyContract.ContractType == JsonContractType.Dictionary)
-          {
-            JsonDictionaryContract jsonDictionaryContract = propertyContract as JsonDictionaryContract;
-
-            object createdObjectDictionary = property.ValueProvider.GetValue(createdObject);
-            if (createdObjectDictionary != null)
-            {
-              IWrappedDictionary createdObjectDictionaryWrapper = jsonDictionaryContract.CreateWrapper(createdObjectDictionary);
-              IWrappedDictionary newValues = jsonDictionaryContract.CreateWrapper(value);
-
-              foreach (DictionaryEntry newValue in newValues)
-              {
-                createdObjectDictionaryWrapper.Add(newValue.Key, newValue.Value);
-              }
-            }
-          }
-        }
-      }
-
-      contract.InvokeOnDeserialized(createdObject, Serializer.Context);
-      return createdObject;
-    }
-
-    private IDictionary<JsonProperty, object> ResolvePropertyAndConstructorValues(JsonObjectContract contract, JsonReader reader, Type objectType)
-    {
-      IDictionary<JsonProperty, object> propertyValues = new Dictionary<JsonProperty, object>();
-      bool exit = false;
-      do
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.PropertyName:
-            string memberName = reader.Value.ToString();
-
-            // attempt exact case match first
-            // then try match ignoring case
-            JsonProperty property = contract.ConstructorParameters.GetClosestMatchProperty(memberName) ??
-              contract.Properties.GetClosestMatchProperty(memberName);
-
-            if (property != null)
-            {
-              if (property.PropertyContract == null)
-                property.PropertyContract = GetContractSafe(property.PropertyType);
-
-              JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter);
-
-              if (!ReadForType(reader, property.PropertyContract, propertyConverter != null, false))
-                throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
-
-              if (!property.Ignored)
-                propertyValues[property] = CreateValueProperty(reader, property, propertyConverter, null, true, null);
-              else
-                reader.Skip();
-            }
-            else
-            {
-              if (!reader.Read())
-                throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
-
-              if (Serializer.MissingMemberHandling == MissingMemberHandling.Error)
-                throw CreateSerializationException(reader, "Could not find member '{0}' on object of type '{1}'".FormatWith(CultureInfo.InvariantCulture, memberName, objectType.Name));
-
-              reader.Skip();
-            }
-            break;
-          case JsonToken.Comment:
-            break;
-          case JsonToken.EndObject:
-            exit = true;
-            break;
-          default:
-            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
-        }
-      } while (!exit && reader.Read());
-
-      return propertyValues;
-    }
-
-    private bool ReadForType(JsonReader reader, JsonContract contract, bool hasConverter, bool inArray)
-    {
-      // don't read properties with converters as a specific value
-      // the value might be a string which will then get converted which will error if read as date for example
-      if (hasConverter)
-        return reader.Read();
-
-      ReadType t = (contract != null) ? contract.InternalReadType : ReadType.Read;
-
-      switch (t)
-      {
-        case ReadType.Read:
-          do
-          {
-            if (!reader.Read())
-              return false;
-          } while (reader.TokenType == JsonToken.Comment);
-
-          return true;
-        case ReadType.ReadAsInt32:
-          reader.ReadAsInt32();
-          break;
-        case ReadType.ReadAsDecimal:
-          reader.ReadAsDecimal();
-          break;
-        case ReadType.ReadAsBytes:
-          reader.ReadAsBytes();
-          break;
-        case ReadType.ReadAsString:
-          reader.ReadAsString();
-          break;
-        case ReadType.ReadAsDateTime:
-          reader.ReadAsDateTime();
-          break;
-#if !NET20
-        case ReadType.ReadAsDateTimeOffset:
-          reader.ReadAsDateTimeOffset();
-          break;
-#endif
-        default:
-          throw new ArgumentOutOfRangeException();
-      }
-
-      return (reader.TokenType != JsonToken.None);
-    }
-
-    private object PopulateObject(object newObject, JsonReader reader, JsonObjectContract contract, string id)
-    {
-      contract.InvokeOnDeserializing(newObject, Serializer.Context);
-
-      Dictionary<JsonProperty, PropertyPresence> propertiesPresence =
-        contract.Properties.ToDictionary(m => m, m => PropertyPresence.None);
-
-      if (id != null)
-        Serializer.ReferenceResolver.AddReference(this, id, newObject);
-
-      int initialDepth = reader.Depth;
-
-      do
-      {
-        switch (reader.TokenType)
-        {
-          case JsonToken.PropertyName:
-            {
-              string memberName = reader.Value.ToString();
-
-              try
-              {
-                // attempt exact case match first
-                // then try match ignoring case
-                JsonProperty property = contract.Properties.GetClosestMatchProperty(memberName);
-
-                if (property == null)
-                {
-                  if (Serializer.MissingMemberHandling == MissingMemberHandling.Error)
-                    throw CreateSerializationException(reader, "Could not find member '{0}' on object of type '{1}'".FormatWith(CultureInfo.InvariantCulture, memberName, contract.UnderlyingType.Name));
-
-                  reader.Skip();
-                  continue;
-                }
-
-                if (property.PropertyContract == null)
-                  property.PropertyContract = GetContractSafe(property.PropertyType);
-
-                JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter);
-
-                if (!ReadForType(reader, property.PropertyContract, propertyConverter != null, false))
-                  throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
-
-                SetPropertyPresence(reader, property, propertiesPresence);
-
-                SetPropertyValue(property, propertyConverter, reader, newObject);
-              }
-              catch (Exception ex)
-              {
-                if (IsErrorHandled(newObject, contract, memberName, reader.Path, ex))
-                  HandleError(reader, initialDepth);
-                else
-                  throw;
-              }
-            }
-            break;
-          case JsonToken.EndObject:
-            {
-              foreach (KeyValuePair<JsonProperty, PropertyPresence> propertyPresence in propertiesPresence)
-              {
-                JsonProperty property = propertyPresence.Key;
-                PropertyPresence presence = propertyPresence.Value;
-
-                if (presence == PropertyPresence.None || presence == PropertyPresence.Null)
-                {
-                  try
-                  {
-                    switch (presence)
-                    {
-                      case PropertyPresence.None:
-                        if (property.Required == Required.AllowNull || property.Required == Required.Always)
-                          throw CreateSerializationException(reader, "Required property '{0}' not found in JSON.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName));
-
-                        if (property.PropertyContract == null)
-                          property.PropertyContract = GetContractSafe(property.PropertyType);
-
-                        if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Populate)
-                            && property.Writable)
-                          property.ValueProvider.SetValue(newObject, EnsureType(reader, property.DefaultValue, CultureInfo.InvariantCulture, property.PropertyContract, property.PropertyType));
-                        break;
-                      case PropertyPresence.Null:
-                        if (property.Required == Required.Always)
-                          throw CreateSerializationException(reader, "Required property '{0}' expects a value but got null.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName));
-                        break;
-                    }
-                  }
-                  catch (Exception ex)
-                  {
-                    if (IsErrorHandled(newObject, contract, property.PropertyName, reader.Path, ex))
-                      HandleError(reader, initialDepth);
-                    else
-                      throw;
-                  }
-                }
-              }
-
-              contract.InvokeOnDeserialized(newObject, Serializer.Context);
-              return newObject;
-            }
-          case JsonToken.Comment:
-            // ignore
-            break;
-          default:
-            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
-        }
-      } while (reader.Read());
-
-      throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
-    }
-
-    private void SetPropertyPresence(JsonReader reader, JsonProperty property, Dictionary<JsonProperty, PropertyPresence> requiredProperties)
-    {
-      if (property != null)
-      {
-        requiredProperties[property] = (reader.TokenType == JsonToken.Null || reader.TokenType == JsonToken.Undefined)
-          ? PropertyPresence.Null
-          : PropertyPresence.Value;
-      }
-    }
-
-    private void HandleError(JsonReader reader, int initialDepth)
-    {
-      ClearErrorContext();
-
-      reader.Skip();
-
-      while (reader.Depth > (initialDepth + 1))
-      {
-        reader.Read();
-      }
-    }
-
-    internal enum PropertyPresence
-    {
-      None,
-      Null,
-      Value
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System.Dynamic;
+#endif
+using System.Globalization;
+using System.Reflection;
+using System.Runtime.Serialization;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal class JsonSerializerInternalReader : JsonSerializerInternalBase
+  {
+    private JsonSerializerProxy _internalSerializer;
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    private JsonFormatterConverter _formatterConverter;
+#endif
+
+    public JsonSerializerInternalReader(JsonSerializer serializer)
+      : base(serializer)
+    {
+    }
+
+    public void Populate(JsonReader reader, object target)
+    {
+      ValidationUtils.ArgumentNotNull(target, "target");
+
+      Type objectType = target.GetType();
+
+      JsonContract contract = Serializer.ContractResolver.ResolveContract(objectType);
+
+      if (reader.TokenType == JsonToken.None)
+        reader.Read();
+
+      if (reader.TokenType == JsonToken.StartArray)
+      {
+        if (contract.ContractType == JsonContractType.Array)
+          PopulateList(CollectionUtils.CreateCollectionWrapper(target), reader, null, (JsonArrayContract) contract);
+        else
+          throw CreateSerializationException(reader, "Cannot populate JSON array onto type '{0}'.".FormatWith(CultureInfo.InvariantCulture, objectType));
+      }
+      else if (reader.TokenType == JsonToken.StartObject)
+      {
+        CheckedRead(reader);
+
+        string id = null;
+        if (reader.TokenType == JsonToken.PropertyName && string.Equals(reader.Value.ToString(), JsonTypeReflector.IdPropertyName, StringComparison.Ordinal))
+        {
+          CheckedRead(reader);
+          id = (reader.Value != null) ? reader.Value.ToString() : null;
+          CheckedRead(reader);
+        }
+
+        if (contract.ContractType == JsonContractType.Dictionary)
+          PopulateDictionary(CollectionUtils.CreateDictionaryWrapper(target), reader, (JsonDictionaryContract) contract, id);
+        else if (contract.ContractType == JsonContractType.Object)
+          PopulateObject(target, reader, (JsonObjectContract) contract, id);
+        else
+          throw CreateSerializationException(reader, "Cannot populate JSON object onto type '{0}'.".FormatWith(CultureInfo.InvariantCulture, objectType));
+      }
+      else
+      {
+        throw CreateSerializationException(reader, "Unexpected initial token '{0}' when populating object. Expected JSON object or array.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
+      }
+    }
+
+    private JsonContract GetContractSafe(Type type)
+    {
+      if (type == null)
+        return null;
+
+      return Serializer.ContractResolver.ResolveContract(type);
+    }
+
+    public object Deserialize(JsonReader reader, Type objectType)
+    {
+      if (reader == null)
+        throw new ArgumentNullException("reader");
+
+      JsonContract contract = GetContractSafe(objectType);
+
+      JsonConverter converter = GetConverter(contract, null);
+
+      if (reader.TokenType == JsonToken.None && !ReadForType(reader, contract, converter != null, false))
+      {
+        if (!contract.IsNullable)
+          throw new JsonSerializationException("No JSON content found and type '{0}' is not nullable.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+        return null;
+      }
+
+      return CreateValueNonProperty(reader, objectType, contract, converter);
+    }
+
+    private JsonSerializerProxy GetInternalSerializer()
+    {
+      if (_internalSerializer == null)
+        _internalSerializer = new JsonSerializerProxy(this);
+
+      return _internalSerializer;
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    private JsonFormatterConverter GetFormatterConverter()
+    {
+      if (_formatterConverter == null)
+        _formatterConverter = new JsonFormatterConverter(GetInternalSerializer());
+
+      return _formatterConverter;
+    }
+#endif
+
+    private JToken CreateJToken(JsonReader reader, JsonContract contract)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+
+      if (contract != null && contract.UnderlyingType == typeof (JRaw))
+      {
+        return JRaw.Create(reader);
+      }
+      else
+      {
+        JToken token;
+        using (JTokenWriter writer = new JTokenWriter())
+        {
+          writer.WriteToken(reader);
+          token = writer.Token;
+        }
+
+        return token;
+      }
+    }
+
+    private JToken CreateJObject(JsonReader reader)
+    {
+      ValidationUtils.ArgumentNotNull(reader, "reader");
+
+      // this is needed because we've already read inside the object, looking for special properties
+      JToken token;
+      using (JTokenWriter writer = new JTokenWriter())
+      {
+        writer.WriteStartObject();
+
+        if (reader.TokenType == JsonToken.PropertyName)
+          writer.WriteToken(reader, reader.Depth - 1);
+        else
+          writer.WriteEndObject();
+
+        token = writer.Token;
+      }
+
+      return token;
+    }
+
+    private object CreateValueProperty(JsonReader reader, JsonProperty property, JsonConverter propertyConverter, object target, bool gottenCurrentValue, object currentValue)
+    {
+      JsonContract contract;
+      JsonConverter converter;
+
+      if (property.PropertyContract == null)
+        property.PropertyContract = GetContractSafe(property.PropertyType);
+
+      if (currentValue == null)
+      {
+        contract = property.PropertyContract;
+        converter = propertyConverter;
+      }
+      else
+      {
+        contract = GetContractSafe(currentValue.GetType());
+
+        if (contract != property.PropertyContract)
+          converter = GetConverter(contract, property.MemberConverter);
+        else
+          converter = propertyConverter;
+      }
+
+      Type objectType = property.PropertyType;
+
+      if (converter != null && converter.CanRead)
+      {
+        if (!gottenCurrentValue && target != null && property.Readable)
+          currentValue = property.ValueProvider.GetValue(target);
+
+        return converter.ReadJson(reader, objectType, currentValue, GetInternalSerializer());
+      }
+
+      return CreateValueInternal(reader, objectType, contract, property, currentValue);
+    }
+
+    private object CreateValueNonProperty(JsonReader reader, Type objectType, JsonContract contract, JsonConverter converter)
+    {
+      if (converter != null && converter.CanRead)
+        return converter.ReadJson(reader, objectType, null, GetInternalSerializer());
+
+      return CreateValueInternal(reader, objectType, contract, null, null);
+    }
+
+    private object CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue)
+    {
+      if (contract != null && contract.ContractType == JsonContractType.Linq)
+        return CreateJToken(reader, contract);
+
+      do
+      {
+        switch (reader.TokenType)
+        {
+            // populate a typed object or generic dictionary/array
+            // depending upon whether an objectType was supplied
+          case JsonToken.StartObject:
+            return CreateObject(reader, objectType, contract, member, existingValue);
+          case JsonToken.StartArray:
+            return CreateList(reader, objectType, contract, member, existingValue, null);
+          case JsonToken.Integer:
+          case JsonToken.Float:
+          case JsonToken.Boolean:
+          case JsonToken.Date:
+          case JsonToken.Bytes:
+            return EnsureType(reader, reader.Value, CultureInfo.InvariantCulture, contract, objectType);
+          case JsonToken.String:
+            // convert empty string to null automatically for nullable types
+            if (string.IsNullOrEmpty((string)reader.Value) && objectType != typeof(string) && objectType != typeof(object) && contract.IsNullable)
+              return null;
+
+            // string that needs to be returned as a byte array should be base 64 decoded
+            if (objectType == typeof (byte[]))
+              return Convert.FromBase64String((string) reader.Value);
+
+            return EnsureType(reader, reader.Value, CultureInfo.InvariantCulture, contract, objectType);
+          case JsonToken.StartConstructor:
+          case JsonToken.EndConstructor:
+            string constructorName = reader.Value.ToString();
+
+            return constructorName;
+          case JsonToken.Null:
+          case JsonToken.Undefined:
+#if !NETFX_CORE
+            if (objectType == typeof (DBNull))
+              return DBNull.Value;
+#endif
+
+            return EnsureType(reader, reader.Value, CultureInfo.InvariantCulture, contract, objectType);
+          case JsonToken.Raw:
+            return new JRaw((string) reader.Value);
+          case JsonToken.Comment:
+            // ignore
+            break;
+          default:
+            throw CreateSerializationException(reader, "Unexpected token while deserializing object: " + reader.TokenType);
+        }
+      } while (reader.Read());
+
+      throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
+    }
+
+    private JsonSerializationException CreateSerializationException(JsonReader reader, string message)
+    {
+      return CreateSerializationException(reader, message, null);
+    }
+
+    private JsonSerializationException CreateSerializationException(JsonReader reader, string message, Exception ex)
+    {
+      return CreateSerializationException(reader as IJsonLineInfo, message, ex);
+    }
+
+    private JsonSerializationException CreateSerializationException(IJsonLineInfo lineInfo, string message, Exception ex)
+    {
+      message = JsonReader.FormatExceptionMessage(lineInfo, message);
+
+      return new JsonSerializationException(message, ex);
+    }
+
+    private JsonConverter GetConverter(JsonContract contract, JsonConverter memberConverter)
+    {
+      JsonConverter converter = null;
+      if (memberConverter != null)
+      {
+        // member attribute converter
+        converter = memberConverter;
+      }
+      else if (contract != null)
+      {
+        JsonConverter matchingConverter;
+        if (contract.Converter != null)
+          // class attribute converter
+          converter = contract.Converter;
+        else if ((matchingConverter = Serializer.GetMatchingConverter(contract.UnderlyingType)) != null)
+          // passed in converters
+          converter = matchingConverter;
+        else if (contract.InternalConverter != null)
+          // internally specified converter
+          converter = contract.InternalConverter;
+      }
+      return converter;
+    }
+
+    private object CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue)
+    {
+      CheckedRead(reader);
+
+      string id = null;
+
+      if (reader.TokenType == JsonToken.PropertyName)
+      {
+        string propertyName = reader.Value.ToString();
+
+        if (propertyName.Length > 0 && propertyName[0] == '$')
+        {
+          // read 'special' properties
+          // $type, $id, $ref, etc
+          bool specialProperty;
+
+          do
+          {
+            propertyName = reader.Value.ToString();
+
+            if (string.Equals(propertyName, JsonTypeReflector.RefPropertyName, StringComparison.Ordinal))
+            {
+              CheckedRead(reader);
+              if (reader.TokenType != JsonToken.String && reader.TokenType != JsonToken.Null)
+                throw CreateSerializationException(reader, "JSON reference {0} property must have a string or null value.".FormatWith(CultureInfo.InvariantCulture, JsonTypeReflector.RefPropertyName));
+
+              string reference = (reader.Value != null) ? reader.Value.ToString() : null;
+
+              CheckedRead(reader);
+
+              if (reference != null)
+              {
+                if (reader.TokenType == JsonToken.PropertyName)
+                  throw CreateSerializationException(reader, "Additional content found in JSON reference object. A JSON reference object should only have a {0} property.".FormatWith(CultureInfo.InvariantCulture, JsonTypeReflector.RefPropertyName));
+
+                return Serializer.ReferenceResolver.ResolveReference(this, reference);
+              }
+              else
+              {
+                specialProperty = true;
+              }
+            }
+            else if (string.Equals(propertyName, JsonTypeReflector.TypePropertyName, StringComparison.Ordinal))
+            {
+              CheckedRead(reader);
+              string qualifiedTypeName = reader.Value.ToString();
+
+              if ((((member != null) ? member.TypeNameHandling : null) ?? Serializer.TypeNameHandling) != TypeNameHandling.None)
+              {
+                string typeName;
+                string assemblyName;
+                ReflectionUtils.SplitFullyQualifiedTypeName(qualifiedTypeName, out typeName, out assemblyName);
+
+                Type specifiedType;
+                try
+                {
+                  specifiedType = Serializer.Binder.BindToType(assemblyName, typeName);
+                }
+                catch (Exception ex)
+                {
+                  throw CreateSerializationException(reader, "Error resolving type specified in JSON '{0}'.".FormatWith(CultureInfo.InvariantCulture, qualifiedTypeName), ex);
+                }
+
+                if (specifiedType == null)
+                  throw CreateSerializationException(reader, "Type specified in JSON '{0}' was not resolved.".FormatWith(CultureInfo.InvariantCulture, qualifiedTypeName));
+
+                if (objectType != null && !objectType.IsAssignableFrom(specifiedType))
+                  throw CreateSerializationException(reader, "Type specified in JSON '{0}' is not compatible with '{1}'.".FormatWith(CultureInfo.InvariantCulture, specifiedType.AssemblyQualifiedName, objectType.AssemblyQualifiedName));
+
+                objectType = specifiedType;
+                contract = GetContractSafe(specifiedType);
+              }
+
+              CheckedRead(reader);
+
+              specialProperty = true;
+            }
+            else if (string.Equals(propertyName, JsonTypeReflector.IdPropertyName, StringComparison.Ordinal))
+            {
+              CheckedRead(reader);
+
+              id = (reader.Value != null) ? reader.Value.ToString() : null;
+
+              CheckedRead(reader);
+              specialProperty = true;
+            }
+            else if (string.Equals(propertyName, JsonTypeReflector.ArrayValuesPropertyName, StringComparison.Ordinal))
+            {
+              CheckedRead(reader);
+              object list = CreateList(reader, objectType, contract, member, existingValue, id);
+              CheckedRead(reader);
+              return list;
+            }
+            else
+            {
+              specialProperty = false;
+            }
+          } while (specialProperty
+                   && reader.TokenType == JsonToken.PropertyName);
+        }
+      }
+
+      if (!HasDefinedType(objectType))
+        return CreateJObject(reader);
+
+      if (contract == null)
+        throw CreateSerializationException(reader, "Could not resolve type '{0}' to a JsonContract.".FormatWith(CultureInfo.InvariantCulture, objectType));
+
+      switch (contract.ContractType)
+      {
+        case JsonContractType.Object:
+          JsonObjectContract objectContract = (JsonObjectContract) contract;
+          if (existingValue == null)
+            return CreateAndPopulateObject(reader, objectContract, id);
+
+          return PopulateObject(existingValue, reader, objectContract, id);
+        case JsonContractType.Primitive:
+          JsonPrimitiveContract primitiveContract = (JsonPrimitiveContract) contract;
+          // if the content is inside $value then read past it
+          if (reader.TokenType == JsonToken.PropertyName && string.Equals(reader.Value.ToString(), JsonTypeReflector.ValuePropertyName, StringComparison.Ordinal))
+          {
+            CheckedRead(reader);
+            object value = CreateValueInternal(reader, objectType, primitiveContract, member, existingValue);
+
+            CheckedRead(reader);
+            return value;
+          }
+          break;
+        case JsonContractType.Dictionary:
+          JsonDictionaryContract dictionaryContract = (JsonDictionaryContract) contract;
+          if (existingValue == null)
+            return CreateAndPopulateDictionary(reader, dictionaryContract, id);
+
+          return PopulateDictionary(dictionaryContract.CreateWrapper(existingValue), reader, dictionaryContract, id);
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+        case JsonContractType.Dynamic:
+          JsonDynamicContract dynamicContract = (JsonDynamicContract) contract;
+          return CreateDynamic(reader, dynamicContract, id);
+#endif
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+        case JsonContractType.Serializable:
+          JsonISerializableContract serializableContract = (JsonISerializableContract) contract;
+          return CreateISerializable(reader, serializableContract, id);
+#endif
+      }
+
+      throw CreateSerializationException(reader, @"Cannot deserialize JSON object (i.e. {{""name"":""value""}}) into type '{0}'.
+The deserialized type should be a normal .NET type (i.e. not a primitive type like integer, not a collection type like an array or List<T>) or a dictionary type (i.e. Dictionary<TKey, TValue>).
+To force JSON objects to deserialize add the JsonObjectAttribute to the type.".FormatWith(CultureInfo.InvariantCulture, objectType));
+    }
+
+    private JsonArrayContract EnsureArrayContract(JsonReader reader, Type objectType, JsonContract contract)
+    {
+      if (contract == null)
+        throw CreateSerializationException(reader, "Could not resolve type '{0}' to a JsonContract.".FormatWith(CultureInfo.InvariantCulture, objectType));
+
+      JsonArrayContract arrayContract = contract as JsonArrayContract;
+      if (arrayContract == null)
+        throw CreateSerializationException(reader, @"Cannot deserialize JSON array (i.e. [1,2,3]) into type '{0}'.
+The deserialized type must be an array or implement a collection interface like IEnumerable, ICollection or IList.
+To force JSON arrays to deserialize add the JsonArrayAttribute to the type.".FormatWith(CultureInfo.InvariantCulture, objectType));
+
+      return arrayContract;
+    }
+
+    private void CheckedRead(JsonReader reader)
+    {
+      if (!reader.Read())
+        throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
+    }
+
+    private object CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue, string reference)
+    {
+      object value;
+      if (HasDefinedType(objectType))
+      {
+        JsonArrayContract arrayContract = EnsureArrayContract(reader, objectType, contract);
+
+        if (existingValue == null)
+          value = CreateAndPopulateList(reader, reference, arrayContract);
+        else
+          value = PopulateList(arrayContract.CreateWrapper(existingValue), reader, reference, arrayContract);
+      }
+      else
+      {
+        value = CreateJToken(reader, contract);
+      }
+      return value;
+    }
+
+    private bool HasDefinedType(Type type)
+    {
+      return (type != null && type != typeof (object) && !typeof (JToken).IsSubclassOf(type)
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+        && type != typeof (IDynamicMetaObjectProvider)
+#endif
+        );
+    }
+
+    private object EnsureType(JsonReader reader, object value, CultureInfo culture, JsonContract contract, Type targetType)
+    {
+      if (targetType == null)
+        return value;
+
+      Type valueType = ReflectionUtils.GetObjectType(value);
+
+      // type of value and type of target don't match
+      // attempt to convert value's type to target's type
+      if (valueType != targetType)
+      {
+        try
+        {
+          if (value == null && contract.IsNullable)
+            return null;
+
+          if (contract.IsConvertable)
+          {
+            if (contract.NonNullableUnderlyingType.IsEnum())
+              {
+                if (value is string)
+                  return Enum.Parse(contract.NonNullableUnderlyingType, value.ToString(), true);
+                else if (ConvertUtils.IsInteger(value))
+                  return Enum.ToObject(contract.NonNullableUnderlyingType, value);
+              }
+
+              return Convert.ChangeType(value, contract.NonNullableUnderlyingType, culture);
+          }
+
+          return ConvertUtils.ConvertOrCast(value, culture, contract.NonNullableUnderlyingType);
+        }
+        catch (Exception ex)
+        {
+          throw CreateSerializationException(reader, "Error converting value {0} to type '{1}'.".FormatWith(CultureInfo.InvariantCulture, FormatValueForPrint(value), targetType), ex);
+        }
+      }
+
+      return value;
+    }
+
+    private string FormatValueForPrint(object value)
+    {
+      if (value == null)
+        return "{null}";
+
+      if (value is string)
+        return @"""" + value + @"""";
+
+      return value.ToString();
+    }
+
+    private void SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonReader reader, object target)
+    {
+      if (property.Ignored)
+      {
+        reader.Skip();
+        return;
+      }
+
+      object currentValue = null;
+      bool useExistingValue = false;
+      bool gottenCurrentValue = false;
+
+      ObjectCreationHandling objectCreationHandling =
+        property.ObjectCreationHandling.GetValueOrDefault(Serializer.ObjectCreationHandling);
+
+      if ((objectCreationHandling == ObjectCreationHandling.Auto || objectCreationHandling == ObjectCreationHandling.Reuse)
+        && (reader.TokenType == JsonToken.StartArray || reader.TokenType == JsonToken.StartObject)
+          && property.Readable)
+      {
+        currentValue = property.ValueProvider.GetValue(target);
+        gottenCurrentValue = true;
+
+        useExistingValue = (currentValue != null
+          && !property.PropertyType.IsArray
+            && !ReflectionUtils.InheritsGenericDefinition(property.PropertyType, typeof (ReadOnlyCollection<>))
+              && !property.PropertyType.IsValueType());
+      }
+
+      if (!property.Writable && !useExistingValue)
+      {
+        reader.Skip();
+        return;
+      }
+
+      // test tokentype here because null might not be convertable to some types, e.g. ignoring null when applied to DateTime
+      if (property.NullValueHandling.GetValueOrDefault(Serializer.NullValueHandling) == NullValueHandling.Ignore && reader.TokenType == JsonToken.Null)
+      {
+        reader.Skip();
+        return;
+      }
+
+      // test tokentype here because default value might not be convertable to actual type, e.g. default of "" for DateTime
+      if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Ignore)
+        && JsonReader.IsPrimitiveToken(reader.TokenType)
+          && MiscellaneousUtils.ValueEquals(reader.Value, property.DefaultValue))
+      {
+        reader.Skip();
+        return;
+      }
+
+      object existingValue = (useExistingValue) ? currentValue : null;
+      object value = CreateValueProperty(reader, property, propertyConverter, target, gottenCurrentValue, existingValue);
+
+      // always set the value if useExistingValue is false,
+      // otherwise also set it if CreateValue returns a new value compared to the currentValue
+      // this could happen because of a JsonConverter against the type
+      if ((!useExistingValue || value != currentValue)
+        && ShouldSetPropertyValue(property, value))
+      {
+        property.ValueProvider.SetValue(target, value);
+
+        if (property.SetIsSpecified != null)
+          property.SetIsSpecified(target, true);
+      }
+    }
+
+    private bool HasFlag(DefaultValueHandling value, DefaultValueHandling flag)
+    {
+      return ((value & flag) == flag);
+    }
+
+    private bool ShouldSetPropertyValue(JsonProperty property, object value)
+    {
+      if (property.NullValueHandling.GetValueOrDefault(Serializer.NullValueHandling) == NullValueHandling.Ignore && value == null)
+        return false;
+
+      if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Ignore)
+        && MiscellaneousUtils.ValueEquals(value, property.DefaultValue))
+        return false;
+
+      if (!property.Writable)
+        return false;
+
+      return true;
+    }
+
+    private object CreateAndPopulateDictionary(JsonReader reader, JsonDictionaryContract contract, string id)
+    {
+      object dictionary;
+
+      if (contract.DefaultCreator != null &&
+        (!contract.DefaultCreatorNonPublic || Serializer.ConstructorHandling == ConstructorHandling.AllowNonPublicDefaultConstructor))
+        dictionary = contract.DefaultCreator();
+      else
+        throw CreateSerializationException(reader, "Unable to find a default constructor to use for type {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+      IWrappedDictionary dictionaryWrapper = contract.CreateWrapper(dictionary);
+
+      PopulateDictionary(dictionaryWrapper, reader, contract, id);
+
+      return dictionaryWrapper.UnderlyingDictionary;
+    }
+
+    private object PopulateDictionary(IWrappedDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, string id)
+    {
+      if (id != null)
+        Serializer.ReferenceResolver.AddReference(this, id, dictionary.UnderlyingDictionary);
+
+      contract.InvokeOnDeserializing(dictionary.UnderlyingDictionary, Serializer.Context);
+
+      int initialDepth = reader.Depth;
+
+      do
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.PropertyName:
+            object keyValue = reader.Value;
+            try
+            {
+              if (contract.DictionaryKeyContract == null)
+                contract.DictionaryKeyContract = GetContractSafe(contract.DictionaryKeyType);
+              
+              try
+              {
+                keyValue = EnsureType(reader, keyValue, CultureInfo.InvariantCulture, contract.DictionaryKeyContract, contract.DictionaryKeyType);
+              }
+              catch (Exception ex)
+              {
+                throw CreateSerializationException(reader, "Could not convert string '{0}' to dictionary key type '{1}'. Create a TypeConverter to convert from the string to the key type object.".FormatWith(CultureInfo.InvariantCulture, reader.Value, contract.DictionaryKeyType), ex);
+              }
+
+              if (contract.DictionaryValueContract == null)
+                contract.DictionaryValueContract = GetContractSafe(contract.DictionaryValueType);
+
+              JsonConverter dictionaryValueConverter = GetConverter(contract.DictionaryValueContract, null);
+
+              if (!ReadForType(reader, contract.DictionaryValueContract, dictionaryValueConverter != null, false))
+                throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
+
+              dictionary[keyValue] = CreateValueNonProperty(reader, contract.DictionaryValueType, contract.DictionaryValueContract, dictionaryValueConverter);
+            }
+            catch (Exception ex)
+            {
+              if (IsErrorHandled(dictionary, contract, keyValue, reader.Path, ex))
+                HandleError(reader, initialDepth);
+              else
+                throw;
+            }
+            break;
+          case JsonToken.Comment:
+            break;
+          case JsonToken.EndObject:
+            contract.InvokeOnDeserialized(dictionary.UnderlyingDictionary, Serializer.Context);
+
+            return dictionary.UnderlyingDictionary;
+          default:
+            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
+        }
+      } while (reader.Read());
+
+      throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
+    }
+
+    private object CreateAndPopulateList(JsonReader reader, string reference, JsonArrayContract contract)
+    {
+      return CollectionUtils.CreateAndPopulateList(contract.CreatedType, (l, isTemporaryListReference) =>
+        {
+          if (reference != null && isTemporaryListReference)
+            throw CreateSerializationException(reader, "Cannot preserve reference to array or readonly list: {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+#if !PocketPC
+          if (contract.OnSerializing != null && isTemporaryListReference)
+            throw CreateSerializationException(reader, "Cannot call OnSerializing on an array or readonly list: {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+#endif
+          if (contract.OnError != null && isTemporaryListReference)
+            throw CreateSerializationException(reader, "Cannot call OnError on an array or readonly list: {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+          PopulateList(contract.CreateWrapper(l), reader, reference, contract);
+        });
+    }
+
+    private object PopulateList(IWrappedCollection wrappedList, JsonReader reader, string reference, JsonArrayContract contract)
+    {
+      object list = wrappedList.UnderlyingCollection;
+
+      // can't populate an existing array
+      if (wrappedList.IsFixedSize)
+      {
+        reader.Skip();
+        return wrappedList.UnderlyingCollection;
+      }
+
+      if (reference != null)
+        Serializer.ReferenceResolver.AddReference(this, reference, list);
+
+      contract.InvokeOnDeserializing(list, Serializer.Context);
+
+      int initialDepth = reader.Depth;
+      int index = 0;
+
+      JsonContract collectionItemContract = GetContractSafe(contract.CollectionItemType);
+      JsonConverter collectionItemConverter = GetConverter(collectionItemContract, null);
+
+      while (true)
+      {
+        try
+        {
+          if (ReadForType(reader, collectionItemContract, collectionItemConverter != null, true))
+          {
+            switch (reader.TokenType)
+            {
+              case JsonToken.EndArray:
+                contract.InvokeOnDeserialized(list, Serializer.Context);
+
+                return wrappedList.UnderlyingCollection;
+              case JsonToken.Comment:
+                break;
+              default:
+                object value = CreateValueNonProperty(reader, contract.CollectionItemType, collectionItemContract, collectionItemConverter);
+
+                wrappedList.Add(value);
+                break;
+            }
+          }
+          else
+          {
+            break;
+          }
+        }
+        catch (Exception ex)
+        {
+          if (IsErrorHandled(list, contract, index, reader.Path, ex))
+            HandleError(reader, initialDepth);
+          else
+            throw;
+        }
+        finally
+        {
+          index++;
+        }
+      }
+
+      throw CreateSerializationException(reader, "Unexpected end when deserializing array.");
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+    private object CreateISerializable(JsonReader reader, JsonISerializableContract contract, string id)
+    {
+      Type objectType = contract.UnderlyingType;
+
+      if (!JsonTypeReflector.FullyTrusted)
+      {
+        throw new JsonSerializationException(@"Type '{0}' implements ISerializable but cannot be deserialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
+To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.".FormatWith(CultureInfo.InvariantCulture, objectType));
+      }
+
+      SerializationInfo serializationInfo = new SerializationInfo(contract.UnderlyingType, GetFormatterConverter());
+
+      bool exit = false;
+      do
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.PropertyName:
+            string memberName = reader.Value.ToString();
+            if (!reader.Read())
+              throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
+
+            serializationInfo.AddValue(memberName, JToken.ReadFrom(reader));
+            break;
+          case JsonToken.Comment:
+            break;
+          case JsonToken.EndObject:
+            exit = true;
+            break;
+          default:
+            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
+        }
+      } while (!exit && reader.Read());
+
+      if (contract.ISerializableCreator == null)
+        throw CreateSerializationException(reader, "ISerializable type '{0}' does not have a valid constructor. To correctly implement ISerializable a constructor that takes SerializationInfo and StreamingContext parameters should be present.".FormatWith(CultureInfo.InvariantCulture, objectType));
+
+      object createdObject = contract.ISerializableCreator(serializationInfo, Serializer.Context);
+
+      if (id != null)
+        Serializer.ReferenceResolver.AddReference(this, id, createdObject);
+
+      // these are together because OnDeserializing takes an object but for an ISerializable the object is full created in the constructor
+      contract.InvokeOnDeserializing(createdObject, Serializer.Context);
+      contract.InvokeOnDeserialized(createdObject, Serializer.Context);
+
+      return createdObject;
+    }
+#endif
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    private object CreateDynamic(JsonReader reader, JsonDynamicContract contract, string id)
+    {
+      IDynamicMetaObjectProvider newObject = null;
+
+      if (contract.UnderlyingType.IsInterface() || contract.UnderlyingType.IsAbstract())
+        throw CreateSerializationException(reader, "Could not create an instance of type {0}. Type is an interface or abstract class and cannot be instantated.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+      if (contract.DefaultCreator != null &&
+        (!contract.DefaultCreatorNonPublic || Serializer.ConstructorHandling == ConstructorHandling.AllowNonPublicDefaultConstructor))
+        newObject = (IDynamicMetaObjectProvider) contract.DefaultCreator();
+      else
+        throw CreateSerializationException(reader, "Unable to find a default constructor to use for type {0}.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+      if (id != null)
+        Serializer.ReferenceResolver.AddReference(this, id, newObject);
+
+      contract.InvokeOnDeserializing(newObject, Serializer.Context);
+
+      int initialDepth = reader.Depth;
+
+      bool exit = false;
+      do
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.PropertyName:
+            string memberName = reader.Value.ToString();
+
+            try
+            {
+              if (!reader.Read())
+                throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
+
+              // first attempt to find a settable property, otherwise fall back to a dynamic set without type
+              JsonProperty property = contract.Properties.GetClosestMatchProperty(memberName);
+
+              if (property != null && property.Writable && !property.Ignored)
+              {
+                if (property.PropertyContract == null)
+                  property.PropertyContract = GetContractSafe(property.PropertyType);
+
+                JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter);
+
+                SetPropertyValue(property, propertyConverter, reader, newObject);
+              }
+              else
+              {
+                Type t = (JsonReader.IsPrimitiveToken(reader.TokenType)) ? reader.ValueType : typeof (IDynamicMetaObjectProvider);
+
+                JsonContract dynamicMemberContract = GetContractSafe(t);
+                JsonConverter dynamicMemberConverter = GetConverter(dynamicMemberContract, null);
+
+                object value = CreateValueNonProperty(reader, t, dynamicMemberContract, dynamicMemberConverter);
+
+                newObject.TrySetMember(memberName, value);
+              }
+            }
+            catch (Exception ex)
+            {
+              if (IsErrorHandled(newObject, contract, memberName, reader.Path, ex))
+                HandleError(reader, initialDepth);
+              else
+                throw;
+            }
+            break;
+          case JsonToken.EndObject:
+            exit = true;
+            break;
+          default:
+            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
+        }
+      } while (!exit && reader.Read());
+
+      contract.InvokeOnDeserialized(newObject, Serializer.Context);
+
+      return newObject;
+    }
+#endif
+
+    private object CreateAndPopulateObject(JsonReader reader, JsonObjectContract contract, string id)
+    {
+      object newObject = null;
+
+      if (contract.UnderlyingType.IsInterface() || contract.UnderlyingType.IsAbstract())
+        throw CreateSerializationException(reader, "Could not create an instance of type {0}. Type is an interface or abstract class and cannot be instantated.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+      if (contract.OverrideConstructor != null)
+      {
+        if (contract.OverrideConstructor.GetParameters().Length > 0)
+          return CreateObjectFromNonDefaultConstructor(reader, contract, contract.OverrideConstructor, id);
+
+        newObject = contract.OverrideConstructor.Invoke(null);
+      }
+      else if (contract.DefaultCreator != null &&
+        (!contract.DefaultCreatorNonPublic || Serializer.ConstructorHandling == ConstructorHandling.AllowNonPublicDefaultConstructor || contract.ParametrizedConstructor == null))
+      {
+        // use the default constructor if it is...
+        // public
+        // non-public and the user has change constructor handling settings
+        // non-public and there is no other constructor
+        newObject = contract.DefaultCreator();
+      }
+      else if (contract.ParametrizedConstructor != null)
+      {
+        return CreateObjectFromNonDefaultConstructor(reader, contract, contract.ParametrizedConstructor, id);
+      }
+
+      if (newObject == null)
+        throw CreateSerializationException(reader, "Unable to find a constructor to use for type {0}. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType));
+
+      PopulateObject(newObject, reader, contract, id);
+      return newObject;
+    }
+
+    private object CreateObjectFromNonDefaultConstructor(JsonReader reader, JsonObjectContract contract, ConstructorInfo constructorInfo, string id)
+    {
+      ValidationUtils.ArgumentNotNull(constructorInfo, "constructorInfo");
+
+      Type objectType = contract.UnderlyingType;
+
+      IDictionary<JsonProperty, object> propertyValues = ResolvePropertyAndConstructorValues(contract, reader, objectType);
+
+      IDictionary<ParameterInfo, object> constructorParameters = constructorInfo.GetParameters().ToDictionary(p => p, p => (object) null);
+      IDictionary<JsonProperty, object> remainingPropertyValues = new Dictionary<JsonProperty, object>();
+
+      foreach (KeyValuePair<JsonProperty, object> propertyValue in propertyValues)
+      {
+        ParameterInfo matchingConstructorParameter = constructorParameters.ForgivingCaseSensitiveFind(kv => kv.Key.Name, propertyValue.Key.UnderlyingName).Key;
+        if (matchingConstructorParameter != null)
+          constructorParameters[matchingConstructorParameter] = propertyValue.Value;
+        else
+          remainingPropertyValues.Add(propertyValue);
+      }
+
+      object createdObject = constructorInfo.Invoke(constructorParameters.Values.ToArray());
+
+      if (id != null)
+        Serializer.ReferenceResolver.AddReference(this, id, createdObject);
+
+      contract.InvokeOnDeserializing(createdObject, Serializer.Context);
+
+      // go through unused values and set the newly created object's properties
+      foreach (KeyValuePair<JsonProperty, object> remainingPropertyValue in remainingPropertyValues)
+      {
+        JsonProperty property = remainingPropertyValue.Key;
+        object value = remainingPropertyValue.Value;
+
+        if (ShouldSetPropertyValue(remainingPropertyValue.Key, remainingPropertyValue.Value))
+        {
+          property.ValueProvider.SetValue(createdObject, value);
+        }
+        else if (!property.Writable && value != null)
+        {
+          // handle readonly collection/dictionary properties
+          JsonContract propertyContract = Serializer.ContractResolver.ResolveContract(property.PropertyType);
+
+          if (propertyContract.ContractType == JsonContractType.Array)
+          {
+            JsonArrayContract propertyArrayContract = propertyContract as JsonArrayContract;
+
+            object createdObjectCollection = property.ValueProvider.GetValue(createdObject);
+            if (createdObjectCollection != null)
+            {
+              IWrappedCollection createdObjectCollectionWrapper = propertyArrayContract.CreateWrapper(createdObjectCollection);
+              IWrappedCollection newValues = propertyArrayContract.CreateWrapper(value);
+
+              foreach (object newValue in newValues)
+              {
+                createdObjectCollectionWrapper.Add(newValue);
+              }
+            }
+          }
+          else if (propertyContract.ContractType == JsonContractType.Dictionary)
+          {
+            JsonDictionaryContract jsonDictionaryContract = propertyContract as JsonDictionaryContract;
+
+            object createdObjectDictionary = property.ValueProvider.GetValue(createdObject);
+            if (createdObjectDictionary != null)
+            {
+              IWrappedDictionary createdObjectDictionaryWrapper = jsonDictionaryContract.CreateWrapper(createdObjectDictionary);
+              IWrappedDictionary newValues = jsonDictionaryContract.CreateWrapper(value);
+
+              foreach (DictionaryEntry newValue in newValues)
+              {
+                createdObjectDictionaryWrapper.Add(newValue.Key, newValue.Value);
+              }
+            }
+          }
+        }
+      }
+
+      contract.InvokeOnDeserialized(createdObject, Serializer.Context);
+      return createdObject;
+    }
+
+    private IDictionary<JsonProperty, object> ResolvePropertyAndConstructorValues(JsonObjectContract contract, JsonReader reader, Type objectType)
+    {
+      IDictionary<JsonProperty, object> propertyValues = new Dictionary<JsonProperty, object>();
+      bool exit = false;
+      do
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.PropertyName:
+            string memberName = reader.Value.ToString();
+
+            // attempt exact case match first
+            // then try match ignoring case
+            JsonProperty property = contract.ConstructorParameters.GetClosestMatchProperty(memberName) ??
+              contract.Properties.GetClosestMatchProperty(memberName);
+
+            if (property != null)
+            {
+              if (property.PropertyContract == null)
+                property.PropertyContract = GetContractSafe(property.PropertyType);
+
+              JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter);
+
+              if (!ReadForType(reader, property.PropertyContract, propertyConverter != null, false))
+                throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
+
+              if (!property.Ignored)
+                propertyValues[property] = CreateValueProperty(reader, property, propertyConverter, null, true, null);
+              else
+                reader.Skip();
+            }
+            else
+            {
+              if (!reader.Read())
+                throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
+
+              if (Serializer.MissingMemberHandling == MissingMemberHandling.Error)
+                throw CreateSerializationException(reader, "Could not find member '{0}' on object of type '{1}'".FormatWith(CultureInfo.InvariantCulture, memberName, objectType.Name));
+
+              reader.Skip();
+            }
+            break;
+          case JsonToken.Comment:
+            break;
+          case JsonToken.EndObject:
+            exit = true;
+            break;
+          default:
+            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
+        }
+      } while (!exit && reader.Read());
+
+      return propertyValues;
+    }
+
+    private bool ReadForType(JsonReader reader, JsonContract contract, bool hasConverter, bool inArray)
+    {
+      // don't read properties with converters as a specific value
+      // the value might be a string which will then get converted which will error if read as date for example
+      if (hasConverter)
+        return reader.Read();
+
+      ReadType t = (contract != null) ? contract.InternalReadType : ReadType.Read;
+
+      switch (t)
+      {
+        case ReadType.Read:
+          do
+          {
+            if (!reader.Read())
+              return false;
+          } while (reader.TokenType == JsonToken.Comment);
+
+          return true;
+        case ReadType.ReadAsInt32:
+          reader.ReadAsInt32();
+          break;
+        case ReadType.ReadAsDecimal:
+          reader.ReadAsDecimal();
+          break;
+        case ReadType.ReadAsBytes:
+          reader.ReadAsBytes();
+          break;
+        case ReadType.ReadAsString:
+          reader.ReadAsString();
+          break;
+        case ReadType.ReadAsDateTime:
+          reader.ReadAsDateTime();
+          break;
+#if !NET20
+        case ReadType.ReadAsDateTimeOffset:
+          reader.ReadAsDateTimeOffset();
+          break;
+#endif
+        default:
+          throw new ArgumentOutOfRangeException();
+      }
+
+      return (reader.TokenType != JsonToken.None);
+    }
+
+    private object PopulateObject(object newObject, JsonReader reader, JsonObjectContract contract, string id)
+    {
+      contract.InvokeOnDeserializing(newObject, Serializer.Context);
+
+      Dictionary<JsonProperty, PropertyPresence> propertiesPresence =
+        contract.Properties.ToDictionary(m => m, m => PropertyPresence.None);
+
+      if (id != null)
+        Serializer.ReferenceResolver.AddReference(this, id, newObject);
+
+      int initialDepth = reader.Depth;
+
+      do
+      {
+        switch (reader.TokenType)
+        {
+          case JsonToken.PropertyName:
+            {
+              string memberName = reader.Value.ToString();
+
+              try
+              {
+                // attempt exact case match first
+                // then try match ignoring case
+                JsonProperty property = contract.Properties.GetClosestMatchProperty(memberName);
+
+                if (property == null)
+                {
+                  if (Serializer.MissingMemberHandling == MissingMemberHandling.Error)
+                    throw CreateSerializationException(reader, "Could not find member '{0}' on object of type '{1}'".FormatWith(CultureInfo.InvariantCulture, memberName, contract.UnderlyingType.Name));
+
+                  reader.Skip();
+                  continue;
+                }
+
+                if (property.PropertyContract == null)
+                  property.PropertyContract = GetContractSafe(property.PropertyType);
+
+                JsonConverter propertyConverter = GetConverter(property.PropertyContract, property.MemberConverter);
+
+                if (!ReadForType(reader, property.PropertyContract, propertyConverter != null, false))
+                  throw CreateSerializationException(reader, "Unexpected end when setting {0}'s value.".FormatWith(CultureInfo.InvariantCulture, memberName));
+
+                SetPropertyPresence(reader, property, propertiesPresence);
+
+                SetPropertyValue(property, propertyConverter, reader, newObject);
+              }
+              catch (Exception ex)
+              {
+                if (IsErrorHandled(newObject, contract, memberName, reader.Path, ex))
+                  HandleError(reader, initialDepth);
+                else
+                  throw;
+              }
+            }
+            break;
+          case JsonToken.EndObject:
+            {
+              foreach (KeyValuePair<JsonProperty, PropertyPresence> propertyPresence in propertiesPresence)
+              {
+                JsonProperty property = propertyPresence.Key;
+                PropertyPresence presence = propertyPresence.Value;
+
+                if (presence == PropertyPresence.None || presence == PropertyPresence.Null)
+                {
+                  try
+                  {
+                    switch (presence)
+                    {
+                      case PropertyPresence.None:
+                        if (property.Required == Required.AllowNull || property.Required == Required.Always)
+                          throw CreateSerializationException(reader, "Required property '{0}' not found in JSON.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName));
+
+                        if (property.PropertyContract == null)
+                          property.PropertyContract = GetContractSafe(property.PropertyType);
+
+                        if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Populate)
+                            && property.Writable)
+                          property.ValueProvider.SetValue(newObject, EnsureType(reader, property.DefaultValue, CultureInfo.InvariantCulture, property.PropertyContract, property.PropertyType));
+                        break;
+                      case PropertyPresence.Null:
+                        if (property.Required == Required.Always)
+                          throw CreateSerializationException(reader, "Required property '{0}' expects a value but got null.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName));
+                        break;
+                    }
+                  }
+                  catch (Exception ex)
+                  {
+                    if (IsErrorHandled(newObject, contract, property.PropertyName, reader.Path, ex))
+                      HandleError(reader, initialDepth);
+                    else
+                      throw;
+                  }
+                }
+              }
+
+              contract.InvokeOnDeserialized(newObject, Serializer.Context);
+              return newObject;
+            }
+          case JsonToken.Comment:
+            // ignore
+            break;
+          default:
+            throw CreateSerializationException(reader, "Unexpected token when deserializing object: " + reader.TokenType);
+        }
+      } while (reader.Read());
+
+      throw CreateSerializationException(reader, "Unexpected end when deserializing object.");
+    }
+
+    private void SetPropertyPresence(JsonReader reader, JsonProperty property, Dictionary<JsonProperty, PropertyPresence> requiredProperties)
+    {
+      if (property != null)
+      {
+        requiredProperties[property] = (reader.TokenType == JsonToken.Null || reader.TokenType == JsonToken.Undefined)
+          ? PropertyPresence.Null
+          : PropertyPresence.Value;
+      }
+    }
+
+    private void HandleError(JsonReader reader, int initialDepth)
+    {
+      ClearErrorContext();
+
+      reader.Skip();
+
+      while (reader.Depth > (initialDepth + 1))
+      {
+        reader.Read();
+      }
+    }
+
+    internal enum PropertyPresence
+    {
+      None,
+      Null,
+      Value
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs
@@ -1,680 +1,680 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System.Dynamic;
-#endif
-using System.Globalization;
-using System.Security;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Utilities;
-using System.Runtime.Serialization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal class JsonSerializerInternalWriter : JsonSerializerInternalBase
-  {
-    private readonly List<object> _serializeStack = new List<object>();
-    private JsonSerializerProxy _internalSerializer;
-
-    public JsonSerializerInternalWriter(JsonSerializer serializer)
-      : base(serializer)
-    {
-    }
-
-    public void Serialize(JsonWriter jsonWriter, object value)
-    {
-      if (jsonWriter == null)
-        throw new ArgumentNullException("jsonWriter");
-
-      SerializeValue(jsonWriter, value, GetContractSafe(value), null, null);
-    }
-
-    private JsonSerializerProxy GetInternalSerializer()
-    {
-      if (_internalSerializer == null)
-        _internalSerializer = new JsonSerializerProxy(this);
-
-      return _internalSerializer;
-    }
-
-    private JsonContract GetContractSafe(object value)
-    {
-      if (value == null)
-        return null;
-
-      return Serializer.ContractResolver.ResolveContract(value.GetType());
-    }
-
-    private void SerializePrimitive(JsonWriter writer, object value, JsonPrimitiveContract contract, JsonProperty member, JsonContract collectionValueContract)
-    {
-      if (contract.UnderlyingType == typeof (byte[]))
-      {
-        bool includeTypeDetails = ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract);
-        if (includeTypeDetails)
-        {
-          writer.WriteStartObject();
-          WriteTypeProperty(writer, contract.CreatedType);
-          writer.WritePropertyName(JsonTypeReflector.ValuePropertyName);
-          writer.WriteValue(value);
-          writer.WriteEndObject();
-          return;
-        }
-      }
-
-      writer.WriteValue(value);
-    }
-
-    private void SerializeValue(JsonWriter writer, object value, JsonContract valueContract, JsonProperty member, JsonContract collectionValueContract)
-    {
-      JsonConverter converter = (member != null) ? member.Converter : null;
-
-      if (value == null)
-      {
-        writer.WriteNull();
-        return;
-      }
-
-      if ((converter != null
-           || ((converter = valueContract.Converter) != null)
-           || ((converter = Serializer.GetMatchingConverter(valueContract.UnderlyingType)) != null)
-           || ((converter = valueContract.InternalConverter) != null))
-          && converter.CanWrite)
-      {
-        SerializeConvertable(writer, converter, value, valueContract);
-        return;
-      }
-
-      switch (valueContract.ContractType)
-      {
-        case JsonContractType.Object:
-          SerializeObject(writer, value, (JsonObjectContract) valueContract, member, collectionValueContract);
-          break;
-        case JsonContractType.Array:
-          JsonArrayContract arrayContract = (JsonArrayContract) valueContract;
-          SerializeList(writer, arrayContract.CreateWrapper(value), arrayContract, member, collectionValueContract);
-          break;
-        case JsonContractType.Primitive:
-          SerializePrimitive(writer, value, (JsonPrimitiveContract) valueContract, member, collectionValueContract);
-          break;
-        case JsonContractType.String:
-          SerializeString(writer, value, (JsonStringContract) valueContract);
-          break;
-        case JsonContractType.Dictionary:
-          JsonDictionaryContract dictionaryContract = (JsonDictionaryContract) valueContract;
-          SerializeDictionary(writer, dictionaryContract.CreateWrapper(value), dictionaryContract, member, collectionValueContract);
-          break;
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-        case JsonContractType.Dynamic:
-          SerializeDynamic(writer, (IDynamicMetaObjectProvider) value, (JsonDynamicContract) valueContract);
-          break;
-#endif
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-        case JsonContractType.Serializable:
-          SerializeISerializable(writer, (ISerializable) value, (JsonISerializableContract) valueContract, member, collectionValueContract);
-          break;
-#endif
-        case JsonContractType.Linq:
-          ((JToken) value).WriteTo(writer, (Serializer.Converters != null) ? Serializer.Converters.ToArray() : null);
-          break;
-      }
-    }
-
-    private bool ShouldWriteReference(object value, JsonProperty property, JsonContract contract)
-    {
-      if (value == null)
-        return false;
-      if (contract.ContractType == JsonContractType.Primitive || contract.ContractType == JsonContractType.String)
-        return false;
-
-      bool? isReference = null;
-
-      // value could be coming from a dictionary or array and not have a property
-      if (property != null)
-        isReference = property.IsReference;
-
-      if (isReference == null)
-        isReference = contract.IsReference;
-
-      if (isReference == null)
-      {
-        if (contract.ContractType == JsonContractType.Array)
-          isReference = HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Arrays);
-        else
-          isReference = HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Objects);
-      }
-
-      if (!isReference.Value)
-        return false;
-
-      return Serializer.ReferenceResolver.IsReferenced(this, value);
-    }
-
-    private void WriteMemberInfoProperty(JsonWriter writer, object memberValue, JsonProperty property, JsonContract contract)
-    {
-      string propertyName = property.PropertyName;
-      object defaultValue = property.DefaultValue;
-
-      if (property.NullValueHandling.GetValueOrDefault(Serializer.NullValueHandling) == NullValueHandling.Ignore &&
-          memberValue == null)
-        return;
-
-      if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Ignore)
-        && MiscellaneousUtils.ValueEquals(memberValue, defaultValue))
-        return;
-
-      if (ShouldWriteReference(memberValue, property, contract))
-      {
-        writer.WritePropertyName(propertyName);
-        WriteReference(writer, memberValue);
-        return;
-      }
-
-      if (!CheckForCircularReference(memberValue, property.ReferenceLoopHandling, contract))
-        return;
-
-      if (memberValue == null && property.Required == Required.Always)
-        throw new JsonSerializationException("Cannot write a null value for property '{0}'. Property requires a value.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName));
-
-      writer.WritePropertyName(propertyName);
-      SerializeValue(writer, memberValue, contract, property, null);
-    }
-
-    private bool CheckForCircularReference(object value, ReferenceLoopHandling? referenceLoopHandling, JsonContract contract)
-    {
-      if (value == null || contract.ContractType == JsonContractType.Primitive || contract.ContractType == JsonContractType.String)
-        return true;
-
-      if (_serializeStack.IndexOf(value) != -1)
-      {
-        switch (referenceLoopHandling.GetValueOrDefault(Serializer.ReferenceLoopHandling))
-        {
-          case ReferenceLoopHandling.Error:
-            throw new JsonSerializationException("Self referencing loop detected for type '{0}'.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
-          case ReferenceLoopHandling.Ignore:
-            return false;
-          case ReferenceLoopHandling.Serialize:
-            return true;
-          default:
-            throw new InvalidOperationException("Unexpected ReferenceLoopHandling value: '{0}'".FormatWith(CultureInfo.InvariantCulture, Serializer.ReferenceLoopHandling));
-        }
-      }
-
-      return true;
-    }
-
-    private void WriteReference(JsonWriter writer, object value)
-    {
-      writer.WriteStartObject();
-      writer.WritePropertyName(JsonTypeReflector.RefPropertyName);
-      writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, value));
-      writer.WriteEndObject();
-    }
-
-    internal static bool TryConvertToString(object value, Type type, out string s)
-    {
-#if !(PocketPC || NETFX_CORE)
-      TypeConverter converter = ConvertUtils.GetConverter(type);
-
-      // use the objectType's TypeConverter if it has one and can convert to a string
-      if (converter != null
-#if !SILVERLIGHT
- && !(converter is ComponentConverter)
-#endif
- && converter.GetType() != typeof(TypeConverter))
-      {
-        if (converter.CanConvertTo(typeof(string)))
-        {
-#if !SILVERLIGHT
-          s = converter.ConvertToInvariantString(value);
-#else
-          s = converter.ConvertToString(value);
-#endif
-          return true;
-        }
-      }
-#endif
-
-#if SILVERLIGHT || PocketPC || NETFX_CORE
-      if (value is Guid || value is Uri || value is TimeSpan)
-      {
-        s = value.ToString();
-        return true;
-      }
-#endif
-
-      if (value is Type)
-      {
-        s = ((Type)value).AssemblyQualifiedName;
-        return true;
-      }
-
-      s = null;
-      return false;
-    }
-
-    private void SerializeString(JsonWriter writer, object value, JsonStringContract contract)
-    {
-      contract.InvokeOnSerializing(value, Serializer.Context);
-
-      string s;
-      TryConvertToString(value, contract.UnderlyingType, out s);
-      writer.WriteValue(s);
-
-      contract.InvokeOnSerialized(value, Serializer.Context);
-    }
-
-    private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContract collectionValueContract)
-    {
-      contract.InvokeOnSerializing(value, Serializer.Context);
-
-      _serializeStack.Add(value);
-      writer.WriteStartObject();
-
-      bool isReference = contract.IsReference ?? HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Objects);
-      if (isReference)
-      {
-        writer.WritePropertyName(JsonTypeReflector.IdPropertyName);
-        writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, value));
-      }
-      if (ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract))
-      {
-        WriteTypeProperty(writer, contract.UnderlyingType);
-      }
-
-      int initialDepth = writer.Top;
-
-      foreach (JsonProperty property in contract.Properties)
-      {
-        try
-        {
-          if (!property.Ignored && property.Readable && ShouldSerialize(property, value) && IsSpecified(property, value))
-          {
-            if (property.PropertyContract == null)
-              property.PropertyContract = Serializer.ContractResolver.ResolveContract(property.PropertyType);
-
-            object memberValue = property.ValueProvider.GetValue(value);
-            JsonContract memberContract = (property.PropertyContract.UnderlyingType.IsSealed()) ? property.PropertyContract : GetContractSafe(memberValue);
-
-            WriteMemberInfoProperty(writer, memberValue, property, memberContract);
-          }
-        }
-        catch (Exception ex)
-        {
-          if (IsErrorHandled(value, contract, property.PropertyName, writer.ContainerPath, ex))
-            HandleError(writer, initialDepth);
-          else
-            throw;
-        }
-      }
-
-      writer.WriteEndObject();
-      _serializeStack.RemoveAt(_serializeStack.Count - 1);
-
-      contract.InvokeOnSerialized(value, Serializer.Context);
-    }
-
-    private void WriteTypeProperty(JsonWriter writer, Type type)
-    {
-      writer.WritePropertyName(JsonTypeReflector.TypePropertyName);
-      writer.WriteValue(ReflectionUtils.GetTypeName(type, Serializer.TypeNameAssemblyFormat, Serializer.Binder));
-    }
-
-    private bool HasFlag(DefaultValueHandling value, DefaultValueHandling flag)
-    {
-      return ((value & flag) == flag);
-    }
-
-    private bool HasFlag(PreserveReferencesHandling value, PreserveReferencesHandling flag)
-    {
-      return ((value & flag) == flag);
-    }
-
-    private bool HasFlag(TypeNameHandling value, TypeNameHandling flag)
-    {
-      return ((value & flag) == flag);
-    }
-
-    private void SerializeConvertable(JsonWriter writer, JsonConverter converter, object value, JsonContract contract)
-    {
-      if (ShouldWriteReference(value, null, contract))
-      {
-        WriteReference(writer, value);
-      }
-      else
-      {
-        if (!CheckForCircularReference(value, null, contract))
-          return;
-
-        _serializeStack.Add(value);
-
-        converter.WriteJson(writer, value, GetInternalSerializer());
-
-        _serializeStack.RemoveAt(_serializeStack.Count - 1);
-      }
-    }
-
-    private void SerializeList(JsonWriter writer, IWrappedCollection values, JsonArrayContract contract, JsonProperty member, JsonContract collectionValueContract)
-    {
-      contract.InvokeOnSerializing(values.UnderlyingCollection, Serializer.Context);
-
-      _serializeStack.Add(values.UnderlyingCollection);
-
-      bool isReference = contract.IsReference ?? HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Arrays);
-      bool includeTypeDetails = ShouldWriteType(TypeNameHandling.Arrays, contract, member, collectionValueContract);
-
-      if (isReference || includeTypeDetails)
-      {
-        writer.WriteStartObject();
-
-        if (isReference)
-        {
-          writer.WritePropertyName(JsonTypeReflector.IdPropertyName);
-          writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, values.UnderlyingCollection));
-        }
-        if (includeTypeDetails)
-        {
-          WriteTypeProperty(writer, values.UnderlyingCollection.GetType());
-        }
-        writer.WritePropertyName(JsonTypeReflector.ArrayValuesPropertyName);
-      }
-
-      if (contract.CollectionItemContract == null)
-        contract.CollectionItemContract = Serializer.ContractResolver.ResolveContract(contract.CollectionItemType ?? typeof(object));
-
-      JsonContract collectionItemValueContract = (contract.CollectionItemContract.UnderlyingType.IsSealed()) ? contract.CollectionItemContract : null;
-
-      writer.WriteStartArray();
-
-      int initialDepth = writer.Top;
-
-      int index = 0;
-      // note that an error in the IEnumerable won't be caught
-      foreach (object value in values)
-      {
-        try
-        {
-          JsonContract valueContract = collectionItemValueContract ?? GetContractSafe(value);
-
-          if (ShouldWriteReference(value, null, valueContract))
-          {
-            WriteReference(writer, value);
-          }
-          else
-          {
-            if (CheckForCircularReference(value, null, contract))
-            {
-              SerializeValue(writer, value, valueContract, null, contract.CollectionItemContract);
-            }
-          }
-        }
-        catch (Exception ex)
-        {
-          if (IsErrorHandled(values.UnderlyingCollection, contract, index, writer.ContainerPath, ex))
-            HandleError(writer, initialDepth);
-          else
-            throw;
-        }
-        finally
-        {
-          index++;
-        }
-      }
-
-      writer.WriteEndArray();
-
-      if (isReference || includeTypeDetails)
-      {
-        writer.WriteEndObject();
-      }
-
-      _serializeStack.RemoveAt(_serializeStack.Count - 1);
-
-      contract.InvokeOnSerialized(values.UnderlyingCollection, Serializer.Context);
-    }
-
-#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-#if !NET20
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Portability", "CA1903:UseOnlyApiFromTargetedFramework", MessageId = "System.Security.SecuritySafeCriticalAttribute")]
-    [SecuritySafeCritical]
-#endif
-    private void SerializeISerializable(JsonWriter writer, ISerializable value, JsonISerializableContract contract, JsonProperty member, JsonContract collectionValueContract)
-    {
-      if (!JsonTypeReflector.FullyTrusted)
-      {
-        throw new JsonSerializationException(@"Type '{0}' implements ISerializable but cannot be serialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
-To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
-      }
-
-      contract.InvokeOnSerializing(value, Serializer.Context);
-      _serializeStack.Add(value);
-
-      writer.WriteStartObject();
-
-      if (ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract))
-      {
-          WriteTypeProperty(writer, contract.UnderlyingType);
-      }
-
-      SerializationInfo serializationInfo = new SerializationInfo(contract.UnderlyingType, new FormatterConverter());
-      value.GetObjectData(serializationInfo, Serializer.Context);
-
-      foreach (SerializationEntry serializationEntry in serializationInfo)
-      {
-        writer.WritePropertyName(serializationEntry.Name);
-        SerializeValue(writer, serializationEntry.Value, GetContractSafe(serializationEntry.Value), null, null);
-      }
-
-      writer.WriteEndObject();
-
-      _serializeStack.RemoveAt(_serializeStack.Count - 1);
-      contract.InvokeOnSerialized(value, Serializer.Context);
-    }
-#endif
-
-#if !(NET35 || NET20 || WINDOWS_PHONE)
-    /// <summary>
-    /// Serializes the dynamic.
-    /// </summary>
-    /// <param name="writer">The writer.</param>
-    /// <param name="value">The value.</param>
-    /// <param name="contract">The contract.</param>
-    private void SerializeDynamic(JsonWriter writer, IDynamicMetaObjectProvider value, JsonDynamicContract contract)
-    {
-      contract.InvokeOnSerializing(value, Serializer.Context);
-      _serializeStack.Add(value);
-
-      writer.WriteStartObject();
-
-      foreach (string memberName in value.GetDynamicMemberNames())
-      {
-        object memberValue;
-        if (DynamicUtils.TryGetMember(value, memberName, out memberValue))
-        {
-          string resolvedPropertyName = (contract.PropertyNameResolver != null)
-            ? contract.PropertyNameResolver(memberName)
-            : memberName;
-          
-          writer.WritePropertyName(resolvedPropertyName);
-          SerializeValue(writer, memberValue, GetContractSafe(memberValue), null, null);
-        }
-      }
-
-      writer.WriteEndObject();
-
-      _serializeStack.RemoveAt(_serializeStack.Count - 1);
-      contract.InvokeOnSerialized(value, Serializer.Context);
-    }
-#endif
-
-    private bool ShouldWriteType(TypeNameHandling typeNameHandlingFlag, JsonContract contract, JsonProperty member, JsonContract collectionValueContract)
-    {
-      if (HasFlag(((member != null) ? member.TypeNameHandling : null) ?? Serializer.TypeNameHandling, typeNameHandlingFlag))
-        return true;
-
-      if (member != null)
-      {
-        if ((member.TypeNameHandling ?? Serializer.TypeNameHandling) == TypeNameHandling.Auto
-          // instance and property type are different
-          && contract.UnderlyingType != member.PropertyType)
-        {
-          JsonContract memberTypeContract = Serializer.ContractResolver.ResolveContract(member.PropertyType);
-          // instance type and the property's type's contract default type are different (no need to put the type in JSON because the type will be created by default)
-          if (contract.UnderlyingType != memberTypeContract.CreatedType)
-            return true;
-        }
-      }
-      else if (collectionValueContract != null)
-      {
-        if (Serializer.TypeNameHandling == TypeNameHandling.Auto && contract.UnderlyingType != collectionValueContract.UnderlyingType)
-          return true;
-      }
-
-      return false;
-    }
-
-    private void SerializeDictionary(JsonWriter writer, IWrappedDictionary values, JsonDictionaryContract contract, JsonProperty member, JsonContract collectionValueContract)
-    {
-      contract.InvokeOnSerializing(values.UnderlyingDictionary, Serializer.Context);
-
-      _serializeStack.Add(values.UnderlyingDictionary);
-      writer.WriteStartObject();
-
-      bool isReference = contract.IsReference ?? HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Objects);
-      if (isReference)
-      {
-        writer.WritePropertyName(JsonTypeReflector.IdPropertyName);
-        writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, values.UnderlyingDictionary));
-      }
-      if (ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract))
-      {
-        WriteTypeProperty(writer, values.UnderlyingDictionary.GetType());
-      }
-
-      if (contract.DictionaryValueContract == null)
-        contract.DictionaryValueContract = Serializer.ContractResolver.ResolveContract(contract.DictionaryValueType ?? typeof(object));
-
-      JsonContract dictionaryValueContract = (contract.DictionaryValueContract.UnderlyingType.IsSealed()) ? contract.DictionaryValueContract : null;
-
-      int initialDepth = writer.Top;
-
-#if !NETFX_CORE
-      // Mono Unity 3.0 fix
-      IDictionary d = values;
-#else
-      IWrappedDictionary d = values;
-#endif
-
-      foreach (DictionaryEntry entry in d)
-      {
-        string propertyName = GetPropertyName(entry);
-
-        propertyName = (contract.PropertyNameResolver != null)
-                         ? contract.PropertyNameResolver(propertyName)
-                         : propertyName;
-
-        try
-        {
-          object value = entry.Value;
-          JsonContract valueContract = dictionaryValueContract ?? GetContractSafe(value);
-
-          if (ShouldWriteReference(value, null, valueContract))
-          {
-            writer.WritePropertyName(propertyName);
-            WriteReference(writer, value);
-          }
-          else
-          {
-            if (!CheckForCircularReference(value, null, contract))
-              continue;
-
-            writer.WritePropertyName(propertyName);
-
-            SerializeValue(writer, value, valueContract, null, contract.DictionaryValueContract);
-          }
-        }
-        catch (Exception ex)
-        {
-          if (IsErrorHandled(values.UnderlyingDictionary, contract, propertyName, writer.ContainerPath, ex))
-            HandleError(writer, initialDepth);
-          else
-            throw;
-        }
-      }
-
-      writer.WriteEndObject();
-      _serializeStack.RemoveAt(_serializeStack.Count - 1);
-
-      contract.InvokeOnSerialized(values.UnderlyingDictionary, Serializer.Context);
-    }
-
-    private string GetPropertyName(DictionaryEntry entry)
-    {
-      string propertyName;
-
-      if (ConvertUtils.IsConvertible(entry.Key))
-        return Convert.ToString(entry.Key, CultureInfo.InvariantCulture);
-      else if (TryConvertToString(entry.Key, entry.Key.GetType(), out propertyName))
-        return propertyName;
-      else
-        return entry.Key.ToString();
-    }
-
-    private void HandleError(JsonWriter writer, int initialDepth)
-    {
-      ClearErrorContext();
-
-      while (writer.Top > initialDepth)
-      {
-        writer.WriteEnd();
-      }
-    }
-
-    private bool ShouldSerialize(JsonProperty property, object target)
-    {
-      if (property.ShouldSerialize == null)
-        return true;
-
-      return property.ShouldSerialize(target);
-    }
-
-    private bool IsSpecified(JsonProperty property, object target)
-    {
-      if (property.GetIsSpecified == null)
-        return true;
-
-      return property.GetIsSpecified(target);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System.Dynamic;
+#endif
+using System.Globalization;
+using System.Security;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Utilities;
+using System.Runtime.Serialization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal class JsonSerializerInternalWriter : JsonSerializerInternalBase
+  {
+    private readonly List<object> _serializeStack = new List<object>();
+    private JsonSerializerProxy _internalSerializer;
+
+    public JsonSerializerInternalWriter(JsonSerializer serializer)
+      : base(serializer)
+    {
+    }
+
+    public void Serialize(JsonWriter jsonWriter, object value)
+    {
+      if (jsonWriter == null)
+        throw new ArgumentNullException("jsonWriter");
+
+      SerializeValue(jsonWriter, value, GetContractSafe(value), null, null);
+    }
+
+    private JsonSerializerProxy GetInternalSerializer()
+    {
+      if (_internalSerializer == null)
+        _internalSerializer = new JsonSerializerProxy(this);
+
+      return _internalSerializer;
+    }
+
+    private JsonContract GetContractSafe(object value)
+    {
+      if (value == null)
+        return null;
+
+      return Serializer.ContractResolver.ResolveContract(value.GetType());
+    }
+
+    private void SerializePrimitive(JsonWriter writer, object value, JsonPrimitiveContract contract, JsonProperty member, JsonContract collectionValueContract)
+    {
+      if (contract.UnderlyingType == typeof (byte[]))
+      {
+        bool includeTypeDetails = ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract);
+        if (includeTypeDetails)
+        {
+          writer.WriteStartObject();
+          WriteTypeProperty(writer, contract.CreatedType);
+          writer.WritePropertyName(JsonTypeReflector.ValuePropertyName);
+          writer.WriteValue(value);
+          writer.WriteEndObject();
+          return;
+        }
+      }
+
+      writer.WriteValue(value);
+    }
+
+    private void SerializeValue(JsonWriter writer, object value, JsonContract valueContract, JsonProperty member, JsonContract collectionValueContract)
+    {
+      JsonConverter converter = (member != null) ? member.Converter : null;
+
+      if (value == null)
+      {
+        writer.WriteNull();
+        return;
+      }
+
+      if ((converter != null
+           || ((converter = valueContract.Converter) != null)
+           || ((converter = Serializer.GetMatchingConverter(valueContract.UnderlyingType)) != null)
+           || ((converter = valueContract.InternalConverter) != null))
+          && converter.CanWrite)
+      {
+        SerializeConvertable(writer, converter, value, valueContract);
+        return;
+      }
+
+      switch (valueContract.ContractType)
+      {
+        case JsonContractType.Object:
+          SerializeObject(writer, value, (JsonObjectContract) valueContract, member, collectionValueContract);
+          break;
+        case JsonContractType.Array:
+          JsonArrayContract arrayContract = (JsonArrayContract) valueContract;
+          SerializeList(writer, arrayContract.CreateWrapper(value), arrayContract, member, collectionValueContract);
+          break;
+        case JsonContractType.Primitive:
+          SerializePrimitive(writer, value, (JsonPrimitiveContract) valueContract, member, collectionValueContract);
+          break;
+        case JsonContractType.String:
+          SerializeString(writer, value, (JsonStringContract) valueContract);
+          break;
+        case JsonContractType.Dictionary:
+          JsonDictionaryContract dictionaryContract = (JsonDictionaryContract) valueContract;
+          SerializeDictionary(writer, dictionaryContract.CreateWrapper(value), dictionaryContract, member, collectionValueContract);
+          break;
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+        case JsonContractType.Dynamic:
+          SerializeDynamic(writer, (IDynamicMetaObjectProvider) value, (JsonDynamicContract) valueContract);
+          break;
+#endif
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+        case JsonContractType.Serializable:
+          SerializeISerializable(writer, (ISerializable) value, (JsonISerializableContract) valueContract, member, collectionValueContract);
+          break;
+#endif
+        case JsonContractType.Linq:
+          ((JToken) value).WriteTo(writer, (Serializer.Converters != null) ? Serializer.Converters.ToArray() : null);
+          break;
+      }
+    }
+
+    private bool ShouldWriteReference(object value, JsonProperty property, JsonContract contract)
+    {
+      if (value == null)
+        return false;
+      if (contract.ContractType == JsonContractType.Primitive || contract.ContractType == JsonContractType.String)
+        return false;
+
+      bool? isReference = null;
+
+      // value could be coming from a dictionary or array and not have a property
+      if (property != null)
+        isReference = property.IsReference;
+
+      if (isReference == null)
+        isReference = contract.IsReference;
+
+      if (isReference == null)
+      {
+        if (contract.ContractType == JsonContractType.Array)
+          isReference = HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Arrays);
+        else
+          isReference = HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Objects);
+      }
+
+      if (!isReference.Value)
+        return false;
+
+      return Serializer.ReferenceResolver.IsReferenced(this, value);
+    }
+
+    private void WriteMemberInfoProperty(JsonWriter writer, object memberValue, JsonProperty property, JsonContract contract)
+    {
+      string propertyName = property.PropertyName;
+      object defaultValue = property.DefaultValue;
+
+      if (property.NullValueHandling.GetValueOrDefault(Serializer.NullValueHandling) == NullValueHandling.Ignore &&
+          memberValue == null)
+        return;
+
+      if (HasFlag(property.DefaultValueHandling.GetValueOrDefault(Serializer.DefaultValueHandling), DefaultValueHandling.Ignore)
+        && MiscellaneousUtils.ValueEquals(memberValue, defaultValue))
+        return;
+
+      if (ShouldWriteReference(memberValue, property, contract))
+      {
+        writer.WritePropertyName(propertyName);
+        WriteReference(writer, memberValue);
+        return;
+      }
+
+      if (!CheckForCircularReference(memberValue, property.ReferenceLoopHandling, contract))
+        return;
+
+      if (memberValue == null && property.Required == Required.Always)
+        throw new JsonSerializationException("Cannot write a null value for property '{0}'. Property requires a value.".FormatWith(CultureInfo.InvariantCulture, property.PropertyName));
+
+      writer.WritePropertyName(propertyName);
+      SerializeValue(writer, memberValue, contract, property, null);
+    }
+
+    private bool CheckForCircularReference(object value, ReferenceLoopHandling? referenceLoopHandling, JsonContract contract)
+    {
+      if (value == null || contract.ContractType == JsonContractType.Primitive || contract.ContractType == JsonContractType.String)
+        return true;
+
+      if (_serializeStack.IndexOf(value) != -1)
+      {
+        switch (referenceLoopHandling.GetValueOrDefault(Serializer.ReferenceLoopHandling))
+        {
+          case ReferenceLoopHandling.Error:
+            throw new JsonSerializationException("Self referencing loop detected for type '{0}'.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
+          case ReferenceLoopHandling.Ignore:
+            return false;
+          case ReferenceLoopHandling.Serialize:
+            return true;
+          default:
+            throw new InvalidOperationException("Unexpected ReferenceLoopHandling value: '{0}'".FormatWith(CultureInfo.InvariantCulture, Serializer.ReferenceLoopHandling));
+        }
+      }
+
+      return true;
+    }
+
+    private void WriteReference(JsonWriter writer, object value)
+    {
+      writer.WriteStartObject();
+      writer.WritePropertyName(JsonTypeReflector.RefPropertyName);
+      writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, value));
+      writer.WriteEndObject();
+    }
+
+    internal static bool TryConvertToString(object value, Type type, out string s)
+    {
+#if !(PocketPC || NETFX_CORE)
+      TypeConverter converter = ConvertUtils.GetConverter(type);
+
+      // use the objectType's TypeConverter if it has one and can convert to a string
+      if (converter != null
+#if !SILVERLIGHT
+ && !(converter is ComponentConverter)
+#endif
+ && converter.GetType() != typeof(TypeConverter))
+      {
+        if (converter.CanConvertTo(typeof(string)))
+        {
+#if !SILVERLIGHT
+          s = converter.ConvertToInvariantString(value);
+#else
+          s = converter.ConvertToString(value);
+#endif
+          return true;
+        }
+      }
+#endif
+
+#if SILVERLIGHT || PocketPC || NETFX_CORE
+      if (value is Guid || value is Uri || value is TimeSpan)
+      {
+        s = value.ToString();
+        return true;
+      }
+#endif
+
+      if (value is Type)
+      {
+        s = ((Type)value).AssemblyQualifiedName;
+        return true;
+      }
+
+      s = null;
+      return false;
+    }
+
+    private void SerializeString(JsonWriter writer, object value, JsonStringContract contract)
+    {
+      contract.InvokeOnSerializing(value, Serializer.Context);
+
+      string s;
+      TryConvertToString(value, contract.UnderlyingType, out s);
+      writer.WriteValue(s);
+
+      contract.InvokeOnSerialized(value, Serializer.Context);
+    }
+
+    private void SerializeObject(JsonWriter writer, object value, JsonObjectContract contract, JsonProperty member, JsonContract collectionValueContract)
+    {
+      contract.InvokeOnSerializing(value, Serializer.Context);
+
+      _serializeStack.Add(value);
+      writer.WriteStartObject();
+
+      bool isReference = contract.IsReference ?? HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Objects);
+      if (isReference)
+      {
+        writer.WritePropertyName(JsonTypeReflector.IdPropertyName);
+        writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, value));
+      }
+      if (ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract))
+      {
+        WriteTypeProperty(writer, contract.UnderlyingType);
+      }
+
+      int initialDepth = writer.Top;
+
+      foreach (JsonProperty property in contract.Properties)
+      {
+        try
+        {
+          if (!property.Ignored && property.Readable && ShouldSerialize(property, value) && IsSpecified(property, value))
+          {
+            if (property.PropertyContract == null)
+              property.PropertyContract = Serializer.ContractResolver.ResolveContract(property.PropertyType);
+
+            object memberValue = property.ValueProvider.GetValue(value);
+            JsonContract memberContract = (property.PropertyContract.UnderlyingType.IsSealed()) ? property.PropertyContract : GetContractSafe(memberValue);
+
+            WriteMemberInfoProperty(writer, memberValue, property, memberContract);
+          }
+        }
+        catch (Exception ex)
+        {
+          if (IsErrorHandled(value, contract, property.PropertyName, writer.ContainerPath, ex))
+            HandleError(writer, initialDepth);
+          else
+            throw;
+        }
+      }
+
+      writer.WriteEndObject();
+      _serializeStack.RemoveAt(_serializeStack.Count - 1);
+
+      contract.InvokeOnSerialized(value, Serializer.Context);
+    }
+
+    private void WriteTypeProperty(JsonWriter writer, Type type)
+    {
+      writer.WritePropertyName(JsonTypeReflector.TypePropertyName);
+      writer.WriteValue(ReflectionUtils.GetTypeName(type, Serializer.TypeNameAssemblyFormat, Serializer.Binder));
+    }
+
+    private bool HasFlag(DefaultValueHandling value, DefaultValueHandling flag)
+    {
+      return ((value & flag) == flag);
+    }
+
+    private bool HasFlag(PreserveReferencesHandling value, PreserveReferencesHandling flag)
+    {
+      return ((value & flag) == flag);
+    }
+
+    private bool HasFlag(TypeNameHandling value, TypeNameHandling flag)
+    {
+      return ((value & flag) == flag);
+    }
+
+    private void SerializeConvertable(JsonWriter writer, JsonConverter converter, object value, JsonContract contract)
+    {
+      if (ShouldWriteReference(value, null, contract))
+      {
+        WriteReference(writer, value);
+      }
+      else
+      {
+        if (!CheckForCircularReference(value, null, contract))
+          return;
+
+        _serializeStack.Add(value);
+
+        converter.WriteJson(writer, value, GetInternalSerializer());
+
+        _serializeStack.RemoveAt(_serializeStack.Count - 1);
+      }
+    }
+
+    private void SerializeList(JsonWriter writer, IWrappedCollection values, JsonArrayContract contract, JsonProperty member, JsonContract collectionValueContract)
+    {
+      contract.InvokeOnSerializing(values.UnderlyingCollection, Serializer.Context);
+
+      _serializeStack.Add(values.UnderlyingCollection);
+
+      bool isReference = contract.IsReference ?? HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Arrays);
+      bool includeTypeDetails = ShouldWriteType(TypeNameHandling.Arrays, contract, member, collectionValueContract);
+
+      if (isReference || includeTypeDetails)
+      {
+        writer.WriteStartObject();
+
+        if (isReference)
+        {
+          writer.WritePropertyName(JsonTypeReflector.IdPropertyName);
+          writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, values.UnderlyingCollection));
+        }
+        if (includeTypeDetails)
+        {
+          WriteTypeProperty(writer, values.UnderlyingCollection.GetType());
+        }
+        writer.WritePropertyName(JsonTypeReflector.ArrayValuesPropertyName);
+      }
+
+      if (contract.CollectionItemContract == null)
+        contract.CollectionItemContract = Serializer.ContractResolver.ResolveContract(contract.CollectionItemType ?? typeof(object));
+
+      JsonContract collectionItemValueContract = (contract.CollectionItemContract.UnderlyingType.IsSealed()) ? contract.CollectionItemContract : null;
+
+      writer.WriteStartArray();
+
+      int initialDepth = writer.Top;
+
+      int index = 0;
+      // note that an error in the IEnumerable won't be caught
+      foreach (object value in values)
+      {
+        try
+        {
+          JsonContract valueContract = collectionItemValueContract ?? GetContractSafe(value);
+
+          if (ShouldWriteReference(value, null, valueContract))
+          {
+            WriteReference(writer, value);
+          }
+          else
+          {
+            if (CheckForCircularReference(value, null, contract))
+            {
+              SerializeValue(writer, value, valueContract, null, contract.CollectionItemContract);
+            }
+          }
+        }
+        catch (Exception ex)
+        {
+          if (IsErrorHandled(values.UnderlyingCollection, contract, index, writer.ContainerPath, ex))
+            HandleError(writer, initialDepth);
+          else
+            throw;
+        }
+        finally
+        {
+          index++;
+        }
+      }
+
+      writer.WriteEndArray();
+
+      if (isReference || includeTypeDetails)
+      {
+        writer.WriteEndObject();
+      }
+
+      _serializeStack.RemoveAt(_serializeStack.Count - 1);
+
+      contract.InvokeOnSerialized(values.UnderlyingCollection, Serializer.Context);
+    }
+
+#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+#if !NET20
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Portability", "CA1903:UseOnlyApiFromTargetedFramework", MessageId = "System.Security.SecuritySafeCriticalAttribute")]
+    [SecuritySafeCritical]
+#endif
+    private void SerializeISerializable(JsonWriter writer, ISerializable value, JsonISerializableContract contract, JsonProperty member, JsonContract collectionValueContract)
+    {
+      if (!JsonTypeReflector.FullyTrusted)
+      {
+        throw new JsonSerializationException(@"Type '{0}' implements ISerializable but cannot be serialized using the ISerializable interface because the current application is not fully trusted and ISerializable can expose secure data.
+To fix this error either change the environment to be fully trusted, change the application to not deserialize the type, add to JsonObjectAttribute to the type or change the JsonSerializer setting ContractResolver to use a new DefaultContractResolver with IgnoreSerializableInterface set to true.".FormatWith(CultureInfo.InvariantCulture, value.GetType()));
+      }
+
+      contract.InvokeOnSerializing(value, Serializer.Context);
+      _serializeStack.Add(value);
+
+      writer.WriteStartObject();
+
+      if (ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract))
+      {
+          WriteTypeProperty(writer, contract.UnderlyingType);
+      }
+
+      SerializationInfo serializationInfo = new SerializationInfo(contract.UnderlyingType, new FormatterConverter());
+      value.GetObjectData(serializationInfo, Serializer.Context);
+
+      foreach (SerializationEntry serializationEntry in serializationInfo)
+      {
+        writer.WritePropertyName(serializationEntry.Name);
+        SerializeValue(writer, serializationEntry.Value, GetContractSafe(serializationEntry.Value), null, null);
+      }
+
+      writer.WriteEndObject();
+
+      _serializeStack.RemoveAt(_serializeStack.Count - 1);
+      contract.InvokeOnSerialized(value, Serializer.Context);
+    }
+#endif
+
+#if !(NET35 || NET20 || WINDOWS_PHONE)
+    /// <summary>
+    /// Serializes the dynamic.
+    /// </summary>
+    /// <param name="writer">The writer.</param>
+    /// <param name="value">The value.</param>
+    /// <param name="contract">The contract.</param>
+    private void SerializeDynamic(JsonWriter writer, IDynamicMetaObjectProvider value, JsonDynamicContract contract)
+    {
+      contract.InvokeOnSerializing(value, Serializer.Context);
+      _serializeStack.Add(value);
+
+      writer.WriteStartObject();
+
+      foreach (string memberName in value.GetDynamicMemberNames())
+      {
+        object memberValue;
+        if (DynamicUtils.TryGetMember(value, memberName, out memberValue))
+        {
+          string resolvedPropertyName = (contract.PropertyNameResolver != null)
+            ? contract.PropertyNameResolver(memberName)
+            : memberName;
+          
+          writer.WritePropertyName(resolvedPropertyName);
+          SerializeValue(writer, memberValue, GetContractSafe(memberValue), null, null);
+        }
+      }
+
+      writer.WriteEndObject();
+
+      _serializeStack.RemoveAt(_serializeStack.Count - 1);
+      contract.InvokeOnSerialized(value, Serializer.Context);
+    }
+#endif
+
+    private bool ShouldWriteType(TypeNameHandling typeNameHandlingFlag, JsonContract contract, JsonProperty member, JsonContract collectionValueContract)
+    {
+      if (HasFlag(((member != null) ? member.TypeNameHandling : null) ?? Serializer.TypeNameHandling, typeNameHandlingFlag))
+        return true;
+
+      if (member != null)
+      {
+        if ((member.TypeNameHandling ?? Serializer.TypeNameHandling) == TypeNameHandling.Auto
+          // instance and property type are different
+          && contract.UnderlyingType != member.PropertyType)
+        {
+          JsonContract memberTypeContract = Serializer.ContractResolver.ResolveContract(member.PropertyType);
+          // instance type and the property's type's contract default type are different (no need to put the type in JSON because the type will be created by default)
+          if (contract.UnderlyingType != memberTypeContract.CreatedType)
+            return true;
+        }
+      }
+      else if (collectionValueContract != null)
+      {
+        if (Serializer.TypeNameHandling == TypeNameHandling.Auto && contract.UnderlyingType != collectionValueContract.UnderlyingType)
+          return true;
+      }
+
+      return false;
+    }
+
+    private void SerializeDictionary(JsonWriter writer, IWrappedDictionary values, JsonDictionaryContract contract, JsonProperty member, JsonContract collectionValueContract)
+    {
+      contract.InvokeOnSerializing(values.UnderlyingDictionary, Serializer.Context);
+
+      _serializeStack.Add(values.UnderlyingDictionary);
+      writer.WriteStartObject();
+
+      bool isReference = contract.IsReference ?? HasFlag(Serializer.PreserveReferencesHandling, PreserveReferencesHandling.Objects);
+      if (isReference)
+      {
+        writer.WritePropertyName(JsonTypeReflector.IdPropertyName);
+        writer.WriteValue(Serializer.ReferenceResolver.GetReference(this, values.UnderlyingDictionary));
+      }
+      if (ShouldWriteType(TypeNameHandling.Objects, contract, member, collectionValueContract))
+      {
+        WriteTypeProperty(writer, values.UnderlyingDictionary.GetType());
+      }
+
+      if (contract.DictionaryValueContract == null)
+        contract.DictionaryValueContract = Serializer.ContractResolver.ResolveContract(contract.DictionaryValueType ?? typeof(object));
+
+      JsonContract dictionaryValueContract = (contract.DictionaryValueContract.UnderlyingType.IsSealed()) ? contract.DictionaryValueContract : null;
+
+      int initialDepth = writer.Top;
+
+#if !NETFX_CORE
+      // Mono Unity 3.0 fix
+      IDictionary d = values;
+#else
+      IWrappedDictionary d = values;
+#endif
+
+      foreach (DictionaryEntry entry in d)
+      {
+        string propertyName = GetPropertyName(entry);
+
+        propertyName = (contract.PropertyNameResolver != null)
+                         ? contract.PropertyNameResolver(propertyName)
+                         : propertyName;
+
+        try
+        {
+          object value = entry.Value;
+          JsonContract valueContract = dictionaryValueContract ?? GetContractSafe(value);
+
+          if (ShouldWriteReference(value, null, valueContract))
+          {
+            writer.WritePropertyName(propertyName);
+            WriteReference(writer, value);
+          }
+          else
+          {
+            if (!CheckForCircularReference(value, null, contract))
+              continue;
+
+            writer.WritePropertyName(propertyName);
+
+            SerializeValue(writer, value, valueContract, null, contract.DictionaryValueContract);
+          }
+        }
+        catch (Exception ex)
+        {
+          if (IsErrorHandled(values.UnderlyingDictionary, contract, propertyName, writer.ContainerPath, ex))
+            HandleError(writer, initialDepth);
+          else
+            throw;
+        }
+      }
+
+      writer.WriteEndObject();
+      _serializeStack.RemoveAt(_serializeStack.Count - 1);
+
+      contract.InvokeOnSerialized(values.UnderlyingDictionary, Serializer.Context);
+    }
+
+    private string GetPropertyName(DictionaryEntry entry)
+    {
+      string propertyName;
+
+      if (ConvertUtils.IsConvertible(entry.Key))
+        return Convert.ToString(entry.Key, CultureInfo.InvariantCulture);
+      else if (TryConvertToString(entry.Key, entry.Key.GetType(), out propertyName))
+        return propertyName;
+      else
+        return entry.Key.ToString();
+    }
+
+    private void HandleError(JsonWriter writer, int initialDepth)
+    {
+      ClearErrorContext();
+
+      while (writer.Top > initialDepth)
+      {
+        writer.WriteEnd();
+      }
+    }
+
+    private bool ShouldSerialize(JsonProperty property, object target)
+    {
+      if (property.ShouldSerialize == null)
+        return true;
+
+      return property.ShouldSerialize(target);
+    }
+
+    private bool IsSpecified(JsonProperty property, object target)
+    {
+      if (property.GetIsSpecified == null)
+        return true;
+
+      return property.GetIsSpecified(target);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerProxy.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonSerializerProxy.cs
@@ -1,195 +1,195 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Globalization;
-using System.Runtime.Serialization.Formatters;
-using Newtonsoft.Json.Utilities;
-using System.Runtime.Serialization;
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal class JsonSerializerProxy : JsonSerializer
-  {
-    private readonly JsonSerializerInternalReader _serializerReader;
-    private readonly JsonSerializerInternalWriter _serializerWriter;
-    private readonly JsonSerializer _serializer;
-
-    public override event EventHandler<ErrorEventArgs> Error
-    {
-      add { _serializer.Error += value; }
-      remove { _serializer.Error -= value; }
-    }
-
-    public override IReferenceResolver ReferenceResolver
-    {
-      get { return _serializer.ReferenceResolver; }
-      set { _serializer.ReferenceResolver = value; }
-    }
-
-    public override JsonConverterCollection Converters
-    {
-      get { return _serializer.Converters; }
-    }
-
-    public override DefaultValueHandling DefaultValueHandling
-    {
-      get { return _serializer.DefaultValueHandling; }
-      set { _serializer.DefaultValueHandling = value; }
-    }
-
-    public override IContractResolver ContractResolver
-    {
-      get { return _serializer.ContractResolver; }
-      set { _serializer.ContractResolver = value; }
-    }
-
-    public override MissingMemberHandling MissingMemberHandling
-    {
-      get { return _serializer.MissingMemberHandling; }
-      set { _serializer.MissingMemberHandling = value; }
-    }
-
-    public override NullValueHandling NullValueHandling
-    {
-      get { return _serializer.NullValueHandling; }
-      set { _serializer.NullValueHandling = value; }
-    }
-
-    public override ObjectCreationHandling ObjectCreationHandling
-    {
-      get { return _serializer.ObjectCreationHandling; }
-      set { _serializer.ObjectCreationHandling = value; }
-    }
-
-    public override ReferenceLoopHandling ReferenceLoopHandling
-    {
-      get { return _serializer.ReferenceLoopHandling; }
-      set { _serializer.ReferenceLoopHandling = value; }
-    }
-
-    public override PreserveReferencesHandling PreserveReferencesHandling
-    {
-      get { return _serializer.PreserveReferencesHandling; }
-      set { _serializer.PreserveReferencesHandling = value; }
-    }
-
-    public override TypeNameHandling TypeNameHandling
-    {
-      get { return _serializer.TypeNameHandling; }
-      set { _serializer.TypeNameHandling = value; }
-    }
-
-    public override FormatterAssemblyStyle TypeNameAssemblyFormat
-    {
-      get { return _serializer.TypeNameAssemblyFormat; }
-      set { _serializer.TypeNameAssemblyFormat = value; }
-    }
-
-    public override ConstructorHandling ConstructorHandling
-    {
-      get { return _serializer.ConstructorHandling; }
-      set { _serializer.ConstructorHandling = value; }
-    }
-
-    public override SerializationBinder Binder
-    {
-      get { return _serializer.Binder; }
-      set { _serializer.Binder = value; }
-    }
-
-    public override StreamingContext Context
-    {
-      get { return _serializer.Context; }
-      set { _serializer.Context = value; }
-    }
-
-    public override Formatting Formatting
-    {
-      get { return _serializer.Formatting; }
-      set { _serializer.Formatting = value; }
-    }
-
-    public override DateFormatHandling DateFormatHandling
-    {
-      get { return _serializer.DateFormatHandling; }
-      set { _serializer.DateFormatHandling = value; }
-    }
-
-    public override DateTimeZoneHandling DateTimeZoneHandling
-    {
-      get { return _serializer.DateTimeZoneHandling; }
-      set { _serializer.DateTimeZoneHandling = value; }
-    }
-
-    internal JsonSerializerInternalBase GetInternalSerializer()
-    {
-      if (_serializerReader != null)
-        return _serializerReader;
-      else
-        return _serializerWriter;
-    }
-
-    public JsonSerializerProxy(JsonSerializerInternalReader serializerReader)
-    {
-      ValidationUtils.ArgumentNotNull(serializerReader, "serializerReader");
-
-      _serializerReader = serializerReader;
-      _serializer = serializerReader.Serializer;
-    }
-
-    public JsonSerializerProxy(JsonSerializerInternalWriter serializerWriter)
-    {
-      ValidationUtils.ArgumentNotNull(serializerWriter, "serializerWriter");
-
-      _serializerWriter = serializerWriter;
-      _serializer = serializerWriter.Serializer;
-    }
-
-    internal override object DeserializeInternal(JsonReader reader, Type objectType)
-    {
-      if (_serializerReader != null)
-        return _serializerReader.Deserialize(reader, objectType);
-      else
-        return _serializer.Deserialize(reader, objectType);
-    }
-
-    internal override void PopulateInternal(JsonReader reader, object target)
-    {
-      if (_serializerReader != null)
-        _serializerReader.Populate(reader, target);
-      else
-        _serializer.Populate(reader, target);
-    }
-
-    internal override void SerializeInternal(JsonWriter jsonWriter, object value)
-    {
-      if (_serializerWriter != null)
-        _serializerWriter.Serialize(jsonWriter, value);
-      else
-        _serializer.Serialize(jsonWriter, value);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Globalization;
+using System.Runtime.Serialization.Formatters;
+using Newtonsoft.Json.Utilities;
+using System.Runtime.Serialization;
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal class JsonSerializerProxy : JsonSerializer
+  {
+    private readonly JsonSerializerInternalReader _serializerReader;
+    private readonly JsonSerializerInternalWriter _serializerWriter;
+    private readonly JsonSerializer _serializer;
+
+    public override event EventHandler<ErrorEventArgs> Error
+    {
+      add { _serializer.Error += value; }
+      remove { _serializer.Error -= value; }
+    }
+
+    public override IReferenceResolver ReferenceResolver
+    {
+      get { return _serializer.ReferenceResolver; }
+      set { _serializer.ReferenceResolver = value; }
+    }
+
+    public override JsonConverterCollection Converters
+    {
+      get { return _serializer.Converters; }
+    }
+
+    public override DefaultValueHandling DefaultValueHandling
+    {
+      get { return _serializer.DefaultValueHandling; }
+      set { _serializer.DefaultValueHandling = value; }
+    }
+
+    public override IContractResolver ContractResolver
+    {
+      get { return _serializer.ContractResolver; }
+      set { _serializer.ContractResolver = value; }
+    }
+
+    public override MissingMemberHandling MissingMemberHandling
+    {
+      get { return _serializer.MissingMemberHandling; }
+      set { _serializer.MissingMemberHandling = value; }
+    }
+
+    public override NullValueHandling NullValueHandling
+    {
+      get { return _serializer.NullValueHandling; }
+      set { _serializer.NullValueHandling = value; }
+    }
+
+    public override ObjectCreationHandling ObjectCreationHandling
+    {
+      get { return _serializer.ObjectCreationHandling; }
+      set { _serializer.ObjectCreationHandling = value; }
+    }
+
+    public override ReferenceLoopHandling ReferenceLoopHandling
+    {
+      get { return _serializer.ReferenceLoopHandling; }
+      set { _serializer.ReferenceLoopHandling = value; }
+    }
+
+    public override PreserveReferencesHandling PreserveReferencesHandling
+    {
+      get { return _serializer.PreserveReferencesHandling; }
+      set { _serializer.PreserveReferencesHandling = value; }
+    }
+
+    public override TypeNameHandling TypeNameHandling
+    {
+      get { return _serializer.TypeNameHandling; }
+      set { _serializer.TypeNameHandling = value; }
+    }
+
+    public override FormatterAssemblyStyle TypeNameAssemblyFormat
+    {
+      get { return _serializer.TypeNameAssemblyFormat; }
+      set { _serializer.TypeNameAssemblyFormat = value; }
+    }
+
+    public override ConstructorHandling ConstructorHandling
+    {
+      get { return _serializer.ConstructorHandling; }
+      set { _serializer.ConstructorHandling = value; }
+    }
+
+    public override SerializationBinder Binder
+    {
+      get { return _serializer.Binder; }
+      set { _serializer.Binder = value; }
+    }
+
+    public override StreamingContext Context
+    {
+      get { return _serializer.Context; }
+      set { _serializer.Context = value; }
+    }
+
+    public override Formatting Formatting
+    {
+      get { return _serializer.Formatting; }
+      set { _serializer.Formatting = value; }
+    }
+
+    public override DateFormatHandling DateFormatHandling
+    {
+      get { return _serializer.DateFormatHandling; }
+      set { _serializer.DateFormatHandling = value; }
+    }
+
+    public override DateTimeZoneHandling DateTimeZoneHandling
+    {
+      get { return _serializer.DateTimeZoneHandling; }
+      set { _serializer.DateTimeZoneHandling = value; }
+    }
+
+    internal JsonSerializerInternalBase GetInternalSerializer()
+    {
+      if (_serializerReader != null)
+        return _serializerReader;
+      else
+        return _serializerWriter;
+    }
+
+    public JsonSerializerProxy(JsonSerializerInternalReader serializerReader)
+    {
+      ValidationUtils.ArgumentNotNull(serializerReader, "serializerReader");
+
+      _serializerReader = serializerReader;
+      _serializer = serializerReader.Serializer;
+    }
+
+    public JsonSerializerProxy(JsonSerializerInternalWriter serializerWriter)
+    {
+      ValidationUtils.ArgumentNotNull(serializerWriter, "serializerWriter");
+
+      _serializerWriter = serializerWriter;
+      _serializer = serializerWriter.Serializer;
+    }
+
+    internal override object DeserializeInternal(JsonReader reader, Type objectType)
+    {
+      if (_serializerReader != null)
+        return _serializerReader.Deserialize(reader, objectType);
+      else
+        return _serializer.Deserialize(reader, objectType);
+    }
+
+    internal override void PopulateInternal(JsonReader reader, object target)
+    {
+      if (_serializerReader != null)
+        _serializerReader.Populate(reader, target);
+      else
+        _serializer.Populate(reader, target);
+    }
+
+    internal override void SerializeInternal(JsonWriter jsonWriter, object value)
+    {
+      if (_serializerWriter != null)
+        _serializerWriter.Serialize(jsonWriter, value);
+      else
+        _serializer.Serialize(jsonWriter, value);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonStringContract.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonStringContract.cs
@@ -1,45 +1,45 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
-  /// </summary>
-  public class JsonStringContract : JsonPrimitiveContract
-  {
-    /// <summary>
-    /// Initializes a new instance of the <see cref="JsonStringContract"/> class.
-    /// </summary>
-    /// <param name="underlyingType">The underlying type for the contract.</param>
-    public JsonStringContract(Type underlyingType)
-      : base(underlyingType)
-    {
-      ContractType = JsonContractType.String;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Contract details for a <see cref="Type"/> used by the <see cref="JsonSerializer"/>.
+  /// </summary>
+  public class JsonStringContract : JsonPrimitiveContract
+  {
+    /// <summary>
+    /// Initializes a new instance of the <see cref="JsonStringContract"/> class.
+    /// </summary>
+    /// <param name="underlyingType">The underlying type for the contract.</param>
+    public JsonStringContract(Type underlyingType)
+      : base(underlyingType)
+    {
+      ContractType = JsonContractType.String;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonTypeReflector.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/JsonTypeReflector.cs
@@ -1,442 +1,442 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using System.Reflection;
-#if !NETFX_CORE
-using System.Security.Permissions;
-#endif
-using Newtonsoft.Json.Utilities;
-#if NETFX_CORE
-using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
-#endif
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using System.Runtime.Serialization;
-
-namespace Newtonsoft.Json.Serialization
-{
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-  internal interface IMetadataTypeAttribute
-  {
-    Type MetadataClassType { get; }
-  }
-#endif
-
-  internal static class JsonTypeReflector
-  {
-    public const string IdPropertyName = "$id";
-    public const string RefPropertyName = "$ref";
-    public const string TypePropertyName = "$type";
-    public const string ValuePropertyName = "$value";
-    public const string ArrayValuesPropertyName = "$values";
-
-    public const string ShouldSerializePrefix = "ShouldSerialize";
-    public const string SpecifiedPostfix = "Specified";
-
-    private static readonly ThreadSafeStore<ICustomAttributeProvider, Type> JsonConverterTypeCache = new ThreadSafeStore<ICustomAttributeProvider, Type>(GetJsonConverterTypeFromAttribute);
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-    private static readonly ThreadSafeStore<Type, Type> AssociatedMetadataTypesCache = new ThreadSafeStore<Type, Type>(GetAssociateMetadataTypeFromAttribute);
-
-    private const string MetadataTypeAttributeTypeName =
-      "System.ComponentModel.DataAnnotations.MetadataTypeAttribute, System.ComponentModel.DataAnnotations, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
-    private static Type _cachedMetadataTypeAttributeType;
-#endif
-#if SILVERLIGHT
-    private static readonly ThreadSafeStore<ICustomAttributeProvider, Type> TypeConverterTypeCache = new ThreadSafeStore<ICustomAttributeProvider, Type>(GetTypeConverterTypeFromAttribute);
-
-    private static Type GetTypeConverterTypeFromAttribute(ICustomAttributeProvider attributeProvider)
-    {
-      TypeConverterAttribute converterAttribute = GetAttribute<TypeConverterAttribute>(attributeProvider);
-      if (converterAttribute == null)
-        return null;
-
-      return Type.GetType(converterAttribute.ConverterTypeName);
-    }
-
-    private static Type GetTypeConverterType(ICustomAttributeProvider attributeProvider)
-    {
-      return TypeConverterTypeCache.Get(attributeProvider);
-    }
-#endif
-
-    public static JsonContainerAttribute GetJsonContainerAttribute(Type type)
-    {
-      return CachedAttributeGetter<JsonContainerAttribute>.GetAttribute(type.GetCustomAttributeProvider());
-    }
-
-    public static JsonObjectAttribute GetJsonObjectAttribute(Type type)
-    {
-      return GetJsonContainerAttribute(type) as JsonObjectAttribute;
-    }
-
-    public static JsonArrayAttribute GetJsonArrayAttribute(Type type)
-    {
-      return GetJsonContainerAttribute(type) as JsonArrayAttribute;
-    }
-
-#if !PocketPC && !NET20 
-    public static DataContractAttribute GetDataContractAttribute(Type type)
-    {
-      // DataContractAttribute does not have inheritance
-      DataContractAttribute result = null;
-      Type currentType = type;
-      while (result == null && currentType != null)
-      {
-        result = CachedAttributeGetter<DataContractAttribute>.GetAttribute(currentType.GetCustomAttributeProvider());
-        currentType = currentType.BaseType();
-      }
-
-      return result;
-    }
-
-    public static DataMemberAttribute GetDataMemberAttribute(MemberInfo memberInfo)
-    {
-      // DataMemberAttribute does not have inheritance
-
-      // can't override a field
-      if (memberInfo.MemberType() == MemberTypes.Field)
-        return CachedAttributeGetter<DataMemberAttribute>.GetAttribute(memberInfo.GetCustomAttributeProvider());
-
-      // search property and then search base properties if nothing is returned and the property is virtual
-      PropertyInfo propertyInfo = (PropertyInfo) memberInfo;
-      DataMemberAttribute result = CachedAttributeGetter<DataMemberAttribute>.GetAttribute(propertyInfo.GetCustomAttributeProvider());
-      if (result == null)
-      {
-        if (propertyInfo.IsVirtual())
-        {
-          Type currentType = propertyInfo.DeclaringType;
-
-          while (result == null && currentType != null)
-          {
-            PropertyInfo baseProperty = (PropertyInfo)ReflectionUtils.GetMemberInfoFromType(currentType, propertyInfo);
-            if (baseProperty != null && baseProperty.IsVirtual())
-              result = CachedAttributeGetter<DataMemberAttribute>.GetAttribute(baseProperty.GetCustomAttributeProvider());
-
-            currentType = currentType.BaseType();
-          }
-        }
-      }
-
-      return result;
-    }
-#endif
-
-    public static MemberSerialization GetObjectMemberSerialization(Type objectType)
-    {
-      JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);
-
-      if (objectAttribute == null)
-      {
-#if !PocketPC && !NET20
-        DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
-
-        if (dataContractAttribute != null)
-          return MemberSerialization.OptIn;
-#endif
-
-        return MemberSerialization.OptOut;
-      }
-
-      return objectAttribute.MemberSerialization;
-    }
-
-    private static Type GetJsonConverterType(ICustomAttributeProvider attributeProvider)
-    {
-      return JsonConverterTypeCache.Get(attributeProvider);
-    }
-
-    private static Type GetJsonConverterTypeFromAttribute(ICustomAttributeProvider attributeProvider)
-    {
-      JsonConverterAttribute converterAttribute = GetAttribute<JsonConverterAttribute>(attributeProvider);
-      return (converterAttribute != null)
-        ? converterAttribute.ConverterType
-        : null;
-    }
-
-    public static JsonConverter GetJsonConverter(ICustomAttributeProvider attributeProvider, Type targetConvertedType)
-    {
-      object provider = null;
-#if !NETFX_CORE
-      provider = attributeProvider as MemberInfo;
-#else
-      provider = attributeProvider.UnderlyingObject;
-#endif
-
-      Type converterType = GetJsonConverterType(attributeProvider);
-
-      if (converterType != null)
-      {
-        JsonConverter memberConverter = JsonConverterAttribute.CreateJsonConverterInstance(converterType);
-
-        if (!memberConverter.CanConvert(targetConvertedType))
-          throw new JsonSerializationException("JsonConverter {0} on {1} is not compatible with member type {2}.".FormatWith(CultureInfo.InvariantCulture, memberConverter.GetType().Name, provider, targetConvertedType.Name));
-
-        return memberConverter;
-      }
-
-      return null;
-    }
-
-#if !NETFX_CORE
-#if !PocketPC
-    public static TypeConverter GetTypeConverter(Type type)
-    {
-#if !SILVERLIGHT
-      return TypeDescriptor.GetConverter(type);
-#else
-      Type converterType = GetTypeConverterType(type);
-
-      if (converterType != null)
-        return (TypeConverter)ReflectionUtils.CreateInstance(converterType);
-
-      return null;
-#endif
-#endif
-    }
-#endif
-
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-    private static Type GetAssociatedMetadataType(Type type)
-    {
-      return AssociatedMetadataTypesCache.Get(type);
-    }
-
-    private static Type GetAssociateMetadataTypeFromAttribute(Type type)
-    {
-      Type metadataTypeAttributeType = GetMetadataTypeAttributeType();
-      if (metadataTypeAttributeType == null)
-        return null;
-
-      object attribute = type.GetCustomAttributes(metadataTypeAttributeType, true).SingleOrDefault();
-      if (attribute == null)
-        return null;
-
-      IMetadataTypeAttribute metadataTypeAttribute = (DynamicCodeGeneration)
-                                                       ? DynamicWrapper.CreateWrapper<IMetadataTypeAttribute>(attribute)
-                                                       : new LateBoundMetadataTypeAttribute(attribute);
-
-      return metadataTypeAttribute.MetadataClassType;
-    }
-
-    private static Type GetMetadataTypeAttributeType()
-    {
-      // always attempt to get the metadata type attribute type
-      // the assembly may have been loaded since last time
-      if (_cachedMetadataTypeAttributeType == null)
-      {
-        Type metadataTypeAttributeType = Type.GetType(MetadataTypeAttributeTypeName);
-
-        if (metadataTypeAttributeType != null)
-          _cachedMetadataTypeAttributeType = metadataTypeAttributeType;
-        else
-          return null;
-      }
-      
-      return _cachedMetadataTypeAttributeType;
-    }
-#endif
-
-    private static T GetAttribute<T>(Type type) where T : Attribute
-    {
-      T attribute;
-
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-      Type metadataType = GetAssociatedMetadataType(type);
-      if (metadataType != null)
-      {
-        attribute = ReflectionUtils.GetAttribute<T>(metadataType, true);
-        if (attribute != null)
-          return attribute;
-      }
-#endif
-
-      attribute = ReflectionUtils.GetAttribute<T>(type.GetCustomAttributeProvider(), true);
-      if (attribute != null)
-        return attribute;
-
-      foreach (Type typeInterface in type.GetInterfaces())
-      {
-        attribute = ReflectionUtils.GetAttribute<T>(typeInterface.GetCustomAttributeProvider(), true);
-        if (attribute != null)
-          return attribute;
-      }
-
-      return null;
-    }
-
-    private static T GetAttribute<T>(MemberInfo memberInfo) where T : Attribute
-    {
-      T attribute;
-
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-      Type metadataType = GetAssociatedMetadataType(memberInfo.DeclaringType);
-      if (metadataType != null)
-      {
-        MemberInfo metadataTypeMemberInfo = ReflectionUtils.GetMemberInfoFromType(metadataType, memberInfo);
-
-        if (metadataTypeMemberInfo != null)
-        {
-          attribute = ReflectionUtils.GetAttribute<T>(metadataTypeMemberInfo, true);
-          if (attribute != null)
-            return attribute;
-        }
-      }
-#endif
-
-      attribute = ReflectionUtils.GetAttribute<T>(memberInfo.GetCustomAttributeProvider(), true);
-      if (attribute != null)
-        return attribute;
-
-      if (memberInfo.DeclaringType != null)
-      {
-        foreach (Type typeInterface in memberInfo.DeclaringType.GetInterfaces())
-        {
-          MemberInfo interfaceTypeMemberInfo = ReflectionUtils.GetMemberInfoFromType(typeInterface, memberInfo);
-
-          if (interfaceTypeMemberInfo != null)
-          {
-            attribute = ReflectionUtils.GetAttribute<T>(interfaceTypeMemberInfo.GetCustomAttributeProvider(), true);
-            if (attribute != null)
-              return attribute;
-          }
-        }
-      }
-
-      return null;
-    }
-
-    public static T GetAttribute<T>(ICustomAttributeProvider attributeProvider) where T : Attribute
-    {
-      object provider = null;
-#if !NETFX_CORE
-      provider = attributeProvider;
-#else
-      provider = attributeProvider.UnderlyingObject;
-#endif
-
-      Type type = provider as Type;
-      if (type != null)
-        return GetAttribute<T>(type);
-
-      MemberInfo memberInfo = provider as MemberInfo;
-      if (memberInfo != null)
-        return GetAttribute<T>(memberInfo);
-
-      return ReflectionUtils.GetAttribute<T>(attributeProvider, true);
-    }
-
-    private static bool? _dynamicCodeGeneration;
-    private static bool? _fullyTrusted;
-
-#if DEBUG
-    internal static void SetFullyTrusted(bool fullyTrusted)
-    {
-      _fullyTrusted = fullyTrusted;
-    }
-
-    internal static void SetDynamicCodeGeneration(bool dynamicCodeGeneration)
-    {
-      _dynamicCodeGeneration = dynamicCodeGeneration;
-    }
-#endif
-
-    public static bool DynamicCodeGeneration
-    {
-      get
-      {
-        if (_dynamicCodeGeneration == null)
-        {
-#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
-          try
-          {
-            new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Demand();
-            new ReflectionPermission(ReflectionPermissionFlag.RestrictedMemberAccess).Demand();
-            new SecurityPermission(SecurityPermissionFlag.SkipVerification).Demand();
-            new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
-            new SecurityPermission(PermissionState.Unrestricted).Demand();
-            _dynamicCodeGeneration = true;
-          }
-          catch (Exception)
-          {
-            _dynamicCodeGeneration = false;
-          }
-#else
-          _dynamicCodeGeneration = false;
-#endif
-        }
-
-        return _dynamicCodeGeneration.Value;
-      }
-    }
-
-    public static bool FullyTrusted
-    {
-      get
-      {
-        if (_fullyTrusted == null)
-        {
-#if (NETFX_CORE || SILVERLIGHT)
-          _fullyTrusted = false;
-#elif !(NET20 || NET35)
-          AppDomain appDomain = AppDomain.CurrentDomain;
-
-          _fullyTrusted = appDomain.IsHomogenous && appDomain.IsFullyTrusted;
-#else
-          try
-          {
-            new SecurityPermission(PermissionState.Unrestricted).Demand();
-            _fullyTrusted = true;
-          }
-          catch (Exception)
-          {
-            _fullyTrusted = false;
-          }
-#endif
-        }
-
-        return _fullyTrusted.Value;
-      }
-    }
-
-    public static ReflectionDelegateFactory ReflectionDelegateFactory
-    {
-      get
-      {
-#if !PocketPC && !SILVERLIGHT
-        if (DynamicCodeGeneration)
-          return DynamicReflectionDelegateFactory.Instance;
-#endif
-
-        return LateBoundReflectionDelegateFactory.Instance;
-      }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Reflection;
+#if !NETFX_CORE
+using System.Security.Permissions;
+#endif
+using Newtonsoft.Json.Utilities;
+#if NETFX_CORE
+using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
+#endif
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using System.Runtime.Serialization;
+
+namespace Newtonsoft.Json.Serialization
+{
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+  internal interface IMetadataTypeAttribute
+  {
+    Type MetadataClassType { get; }
+  }
+#endif
+
+  internal static class JsonTypeReflector
+  {
+    public const string IdPropertyName = "$id";
+    public const string RefPropertyName = "$ref";
+    public const string TypePropertyName = "$type";
+    public const string ValuePropertyName = "$value";
+    public const string ArrayValuesPropertyName = "$values";
+
+    public const string ShouldSerializePrefix = "ShouldSerialize";
+    public const string SpecifiedPostfix = "Specified";
+
+    private static readonly ThreadSafeStore<ICustomAttributeProvider, Type> JsonConverterTypeCache = new ThreadSafeStore<ICustomAttributeProvider, Type>(GetJsonConverterTypeFromAttribute);
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+    private static readonly ThreadSafeStore<Type, Type> AssociatedMetadataTypesCache = new ThreadSafeStore<Type, Type>(GetAssociateMetadataTypeFromAttribute);
+
+    private const string MetadataTypeAttributeTypeName =
+      "System.ComponentModel.DataAnnotations.MetadataTypeAttribute, System.ComponentModel.DataAnnotations, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
+    private static Type _cachedMetadataTypeAttributeType;
+#endif
+#if SILVERLIGHT
+    private static readonly ThreadSafeStore<ICustomAttributeProvider, Type> TypeConverterTypeCache = new ThreadSafeStore<ICustomAttributeProvider, Type>(GetTypeConverterTypeFromAttribute);
+
+    private static Type GetTypeConverterTypeFromAttribute(ICustomAttributeProvider attributeProvider)
+    {
+      TypeConverterAttribute converterAttribute = GetAttribute<TypeConverterAttribute>(attributeProvider);
+      if (converterAttribute == null)
+        return null;
+
+      return Type.GetType(converterAttribute.ConverterTypeName);
+    }
+
+    private static Type GetTypeConverterType(ICustomAttributeProvider attributeProvider)
+    {
+      return TypeConverterTypeCache.Get(attributeProvider);
+    }
+#endif
+
+    public static JsonContainerAttribute GetJsonContainerAttribute(Type type)
+    {
+      return CachedAttributeGetter<JsonContainerAttribute>.GetAttribute(type.GetCustomAttributeProvider());
+    }
+
+    public static JsonObjectAttribute GetJsonObjectAttribute(Type type)
+    {
+      return GetJsonContainerAttribute(type) as JsonObjectAttribute;
+    }
+
+    public static JsonArrayAttribute GetJsonArrayAttribute(Type type)
+    {
+      return GetJsonContainerAttribute(type) as JsonArrayAttribute;
+    }
+
+#if !PocketPC && !NET20 
+    public static DataContractAttribute GetDataContractAttribute(Type type)
+    {
+      // DataContractAttribute does not have inheritance
+      DataContractAttribute result = null;
+      Type currentType = type;
+      while (result == null && currentType != null)
+      {
+        result = CachedAttributeGetter<DataContractAttribute>.GetAttribute(currentType.GetCustomAttributeProvider());
+        currentType = currentType.BaseType();
+      }
+
+      return result;
+    }
+
+    public static DataMemberAttribute GetDataMemberAttribute(MemberInfo memberInfo)
+    {
+      // DataMemberAttribute does not have inheritance
+
+      // can't override a field
+      if (memberInfo.MemberType() == MemberTypes.Field)
+        return CachedAttributeGetter<DataMemberAttribute>.GetAttribute(memberInfo.GetCustomAttributeProvider());
+
+      // search property and then search base properties if nothing is returned and the property is virtual
+      PropertyInfo propertyInfo = (PropertyInfo) memberInfo;
+      DataMemberAttribute result = CachedAttributeGetter<DataMemberAttribute>.GetAttribute(propertyInfo.GetCustomAttributeProvider());
+      if (result == null)
+      {
+        if (propertyInfo.IsVirtual())
+        {
+          Type currentType = propertyInfo.DeclaringType;
+
+          while (result == null && currentType != null)
+          {
+            PropertyInfo baseProperty = (PropertyInfo)ReflectionUtils.GetMemberInfoFromType(currentType, propertyInfo);
+            if (baseProperty != null && baseProperty.IsVirtual())
+              result = CachedAttributeGetter<DataMemberAttribute>.GetAttribute(baseProperty.GetCustomAttributeProvider());
+
+            currentType = currentType.BaseType();
+          }
+        }
+      }
+
+      return result;
+    }
+#endif
+
+    public static MemberSerialization GetObjectMemberSerialization(Type objectType)
+    {
+      JsonObjectAttribute objectAttribute = GetJsonObjectAttribute(objectType);
+
+      if (objectAttribute == null)
+      {
+#if !PocketPC && !NET20
+        DataContractAttribute dataContractAttribute = GetDataContractAttribute(objectType);
+
+        if (dataContractAttribute != null)
+          return MemberSerialization.OptIn;
+#endif
+
+        return MemberSerialization.OptOut;
+      }
+
+      return objectAttribute.MemberSerialization;
+    }
+
+    private static Type GetJsonConverterType(ICustomAttributeProvider attributeProvider)
+    {
+      return JsonConverterTypeCache.Get(attributeProvider);
+    }
+
+    private static Type GetJsonConverterTypeFromAttribute(ICustomAttributeProvider attributeProvider)
+    {
+      JsonConverterAttribute converterAttribute = GetAttribute<JsonConverterAttribute>(attributeProvider);
+      return (converterAttribute != null)
+        ? converterAttribute.ConverterType
+        : null;
+    }
+
+    public static JsonConverter GetJsonConverter(ICustomAttributeProvider attributeProvider, Type targetConvertedType)
+    {
+      object provider = null;
+#if !NETFX_CORE
+      provider = attributeProvider as MemberInfo;
+#else
+      provider = attributeProvider.UnderlyingObject;
+#endif
+
+      Type converterType = GetJsonConverterType(attributeProvider);
+
+      if (converterType != null)
+      {
+        JsonConverter memberConverter = JsonConverterAttribute.CreateJsonConverterInstance(converterType);
+
+        if (!memberConverter.CanConvert(targetConvertedType))
+          throw new JsonSerializationException("JsonConverter {0} on {1} is not compatible with member type {2}.".FormatWith(CultureInfo.InvariantCulture, memberConverter.GetType().Name, provider, targetConvertedType.Name));
+
+        return memberConverter;
+      }
+
+      return null;
+    }
+
+#if !NETFX_CORE
+#if !PocketPC
+    public static TypeConverter GetTypeConverter(Type type)
+    {
+#if !SILVERLIGHT
+      return TypeDescriptor.GetConverter(type);
+#else
+      Type converterType = GetTypeConverterType(type);
+
+      if (converterType != null)
+        return (TypeConverter)ReflectionUtils.CreateInstance(converterType);
+
+      return null;
+#endif
+#endif
+    }
+#endif
+
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+    private static Type GetAssociatedMetadataType(Type type)
+    {
+      return AssociatedMetadataTypesCache.Get(type);
+    }
+
+    private static Type GetAssociateMetadataTypeFromAttribute(Type type)
+    {
+      Type metadataTypeAttributeType = GetMetadataTypeAttributeType();
+      if (metadataTypeAttributeType == null)
+        return null;
+
+      object attribute = type.GetCustomAttributes(metadataTypeAttributeType, true).SingleOrDefault();
+      if (attribute == null)
+        return null;
+
+      IMetadataTypeAttribute metadataTypeAttribute = (DynamicCodeGeneration)
+                                                       ? DynamicWrapper.CreateWrapper<IMetadataTypeAttribute>(attribute)
+                                                       : new LateBoundMetadataTypeAttribute(attribute);
+
+      return metadataTypeAttribute.MetadataClassType;
+    }
+
+    private static Type GetMetadataTypeAttributeType()
+    {
+      // always attempt to get the metadata type attribute type
+      // the assembly may have been loaded since last time
+      if (_cachedMetadataTypeAttributeType == null)
+      {
+        Type metadataTypeAttributeType = Type.GetType(MetadataTypeAttributeTypeName);
+
+        if (metadataTypeAttributeType != null)
+          _cachedMetadataTypeAttributeType = metadataTypeAttributeType;
+        else
+          return null;
+      }
+      
+      return _cachedMetadataTypeAttributeType;
+    }
+#endif
+
+    private static T GetAttribute<T>(Type type) where T : Attribute
+    {
+      T attribute;
+
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+      Type metadataType = GetAssociatedMetadataType(type);
+      if (metadataType != null)
+      {
+        attribute = ReflectionUtils.GetAttribute<T>(metadataType, true);
+        if (attribute != null)
+          return attribute;
+      }
+#endif
+
+      attribute = ReflectionUtils.GetAttribute<T>(type.GetCustomAttributeProvider(), true);
+      if (attribute != null)
+        return attribute;
+
+      foreach (Type typeInterface in type.GetInterfaces())
+      {
+        attribute = ReflectionUtils.GetAttribute<T>(typeInterface.GetCustomAttributeProvider(), true);
+        if (attribute != null)
+          return attribute;
+      }
+
+      return null;
+    }
+
+    private static T GetAttribute<T>(MemberInfo memberInfo) where T : Attribute
+    {
+      T attribute;
+
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+      Type metadataType = GetAssociatedMetadataType(memberInfo.DeclaringType);
+      if (metadataType != null)
+      {
+        MemberInfo metadataTypeMemberInfo = ReflectionUtils.GetMemberInfoFromType(metadataType, memberInfo);
+
+        if (metadataTypeMemberInfo != null)
+        {
+          attribute = ReflectionUtils.GetAttribute<T>(metadataTypeMemberInfo, true);
+          if (attribute != null)
+            return attribute;
+        }
+      }
+#endif
+
+      attribute = ReflectionUtils.GetAttribute<T>(memberInfo.GetCustomAttributeProvider(), true);
+      if (attribute != null)
+        return attribute;
+
+      if (memberInfo.DeclaringType != null)
+      {
+        foreach (Type typeInterface in memberInfo.DeclaringType.GetInterfaces())
+        {
+          MemberInfo interfaceTypeMemberInfo = ReflectionUtils.GetMemberInfoFromType(typeInterface, memberInfo);
+
+          if (interfaceTypeMemberInfo != null)
+          {
+            attribute = ReflectionUtils.GetAttribute<T>(interfaceTypeMemberInfo.GetCustomAttributeProvider(), true);
+            if (attribute != null)
+              return attribute;
+          }
+        }
+      }
+
+      return null;
+    }
+
+    public static T GetAttribute<T>(ICustomAttributeProvider attributeProvider) where T : Attribute
+    {
+      object provider = null;
+#if !NETFX_CORE
+      provider = attributeProvider;
+#else
+      provider = attributeProvider.UnderlyingObject;
+#endif
+
+      Type type = provider as Type;
+      if (type != null)
+        return GetAttribute<T>(type);
+
+      MemberInfo memberInfo = provider as MemberInfo;
+      if (memberInfo != null)
+        return GetAttribute<T>(memberInfo);
+
+      return ReflectionUtils.GetAttribute<T>(attributeProvider, true);
+    }
+
+    private static bool? _dynamicCodeGeneration;
+    private static bool? _fullyTrusted;
+
+#if DEBUG
+    internal static void SetFullyTrusted(bool fullyTrusted)
+    {
+      _fullyTrusted = fullyTrusted;
+    }
+
+    internal static void SetDynamicCodeGeneration(bool dynamicCodeGeneration)
+    {
+      _dynamicCodeGeneration = dynamicCodeGeneration;
+    }
+#endif
+
+    public static bool DynamicCodeGeneration
+    {
+      get
+      {
+        if (_dynamicCodeGeneration == null)
+        {
+#if !PocketPC && !SILVERLIGHT && !NETFX_CORE
+          try
+          {
+            new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Demand();
+            new ReflectionPermission(ReflectionPermissionFlag.RestrictedMemberAccess).Demand();
+            new SecurityPermission(SecurityPermissionFlag.SkipVerification).Demand();
+            new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
+            new SecurityPermission(PermissionState.Unrestricted).Demand();
+            _dynamicCodeGeneration = true;
+          }
+          catch (Exception)
+          {
+            _dynamicCodeGeneration = false;
+          }
+#else
+          _dynamicCodeGeneration = false;
+#endif
+        }
+
+        return _dynamicCodeGeneration.Value;
+      }
+    }
+
+    public static bool FullyTrusted
+    {
+      get
+      {
+        if (_fullyTrusted == null)
+        {
+#if (NETFX_CORE || SILVERLIGHT)
+          _fullyTrusted = false;
+#elif !(NET20 || NET35)
+          AppDomain appDomain = AppDomain.CurrentDomain;
+
+          _fullyTrusted = appDomain.IsHomogenous && appDomain.IsFullyTrusted;
+#else
+          try
+          {
+            new SecurityPermission(PermissionState.Unrestricted).Demand();
+            _fullyTrusted = true;
+          }
+          catch (Exception)
+          {
+            _fullyTrusted = false;
+          }
+#endif
+        }
+
+        return _fullyTrusted.Value;
+      }
+    }
+
+    public static ReflectionDelegateFactory ReflectionDelegateFactory
+    {
+      get
+      {
+#if !PocketPC && !SILVERLIGHT
+        if (DynamicCodeGeneration)
+          return DynamicReflectionDelegateFactory.Instance;
+#endif
+
+        return LateBoundReflectionDelegateFactory.Instance;
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/LateBoundMetadataTypeAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/LateBoundMetadataTypeAttribute.cs
@@ -1,59 +1,59 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json.Utilities;
-using System.Reflection;
-
-namespace Newtonsoft.Json.Serialization
-{
-  internal class LateBoundMetadataTypeAttribute : IMetadataTypeAttribute
-  {
-    private static PropertyInfo _metadataClassTypeProperty;
-
-    private readonly object _attribute;
-
-    public LateBoundMetadataTypeAttribute(object attribute)
-    {
-      _attribute = attribute;
-    }
-
-    public Type MetadataClassType
-    {
-      get
-      {
-        if (_metadataClassTypeProperty == null)
-          _metadataClassTypeProperty = _attribute.GetType().GetProperty("MetadataClassType");
-
-        return (Type)ReflectionUtils.GetMemberValue(_metadataClassTypeProperty, _attribute);
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !SILVERLIGHT && !PocketPC && !NET20 && !NETFX_CORE
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Utilities;
+using System.Reflection;
+
+namespace Newtonsoft.Json.Serialization
+{
+  internal class LateBoundMetadataTypeAttribute : IMetadataTypeAttribute
+  {
+    private static PropertyInfo _metadataClassTypeProperty;
+
+    private readonly object _attribute;
+
+    public LateBoundMetadataTypeAttribute(object attribute)
+    {
+      _attribute = attribute;
+    }
+
+    public Type MetadataClassType
+    {
+      get
+      {
+        if (_metadataClassTypeProperty == null)
+          _metadataClassTypeProperty = _attribute.GetType().GetProperty("MetadataClassType");
+
+        return (Type)ReflectionUtils.GetMemberValue(_metadataClassTypeProperty, _attribute);
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ObjectConstructor.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ObjectConstructor.cs
@@ -1,32 +1,32 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Represents a method that constructs an object.
-  /// </summary>
-  public delegate object ObjectConstructor<T>(params object[] args);
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Represents a method that constructs an object.
+  /// </summary>
+  public delegate object ObjectConstructor<T>(params object[] args);
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/OnErrorAttribute.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/OnErrorAttribute.cs
@@ -1,37 +1,37 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// When applied to a method, specifies that the method is called when an error occurs serializing an object.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Method, Inherited = false)]
-  public sealed class OnErrorAttribute : Attribute
-  {
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// When applied to a method, specifies that the method is called when an error occurs serializing an object.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Method, Inherited = false)]
+  public sealed class OnErrorAttribute : Attribute
+  {
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ReflectionValueProvider.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Serialization/ReflectionValueProvider.cs
@@ -1,84 +1,84 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Reflection;
-using Newtonsoft.Json.Utilities;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Serialization
-{
-  /// <summary>
-  /// Get and set values for a <see cref="MemberInfo"/> using reflection.
-  /// </summary>
-  public class ReflectionValueProvider : IValueProvider
-  {
-    private readonly MemberInfo _memberInfo;
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="ReflectionValueProvider"/> class.
-    /// </summary>
-    /// <param name="memberInfo">The member info.</param>
-    public ReflectionValueProvider(MemberInfo memberInfo)
-    {
-      ValidationUtils.ArgumentNotNull(memberInfo, "memberInfo");
-      _memberInfo = memberInfo;
-    }
-
-    /// <summary>
-    /// Sets the value.
-    /// </summary>
-    /// <param name="target">The target to set the value on.</param>
-    /// <param name="value">The value to set on the target.</param>
-    public void SetValue(object target, object value)
-    {
-      try
-      {
-        ReflectionUtils.SetMemberValue(_memberInfo, target, value);
-      }
-      catch (Exception ex)
-      {
-        throw new JsonSerializationException("Error setting value to '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
-      }
-    }
-
-    /// <summary>
-    /// Gets the value.
-    /// </summary>
-    /// <param name="target">The target to get the value from.</param>
-    /// <returns>The value.</returns>
-    public object GetValue(object target)
-    {
-      try
-      {
-        return ReflectionUtils.GetMemberValue(_memberInfo, target);
-      }
-      catch (Exception ex)
-      {
-        throw new JsonSerializationException("Error getting value from '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
-      }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Reflection;
+using Newtonsoft.Json.Utilities;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Serialization
+{
+  /// <summary>
+  /// Get and set values for a <see cref="MemberInfo"/> using reflection.
+  /// </summary>
+  public class ReflectionValueProvider : IValueProvider
+  {
+    private readonly MemberInfo _memberInfo;
+
+    /// <summary>
+    /// Initializes a new instance of the <see cref="ReflectionValueProvider"/> class.
+    /// </summary>
+    /// <param name="memberInfo">The member info.</param>
+    public ReflectionValueProvider(MemberInfo memberInfo)
+    {
+      ValidationUtils.ArgumentNotNull(memberInfo, "memberInfo");
+      _memberInfo = memberInfo;
+    }
+
+    /// <summary>
+    /// Sets the value.
+    /// </summary>
+    /// <param name="target">The target to set the value on.</param>
+    /// <param name="value">The value to set on the target.</param>
+    public void SetValue(object target, object value)
+    {
+      try
+      {
+        ReflectionUtils.SetMemberValue(_memberInfo, target, value);
+      }
+      catch (Exception ex)
+      {
+        throw new JsonSerializationException("Error setting value to '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
+      }
+    }
+
+    /// <summary>
+    /// Gets the value.
+    /// </summary>
+    /// <param name="target">The target to get the value from.</param>
+    /// <returns>The value.</returns>
+    public object GetValue(object target)
+    {
+      try
+      {
+        return ReflectionUtils.GetMemberValue(_memberInfo, target);
+      }
+      catch (Exception ex)
+      {
+        throw new JsonSerializationException("Error getting value from '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex);
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/SerializationBinder.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/SerializationBinder.cs
@@ -1,33 +1,33 @@
-﻿#if SILVERLIGHT || PocketPC || NETFX_CORE
-using System;
-using System.Reflection;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Allows users to control class loading and mandate what class to load.
-  /// </summary>
-  public abstract class SerializationBinder
-  {
-    /// <summary>
-    /// When overridden in a derived class, controls the binding of a serialized object to a type.
-    /// </summary>
-    /// <param name="assemblyName">Specifies the <see cref="Assembly"/> name of the serialized object.</param>
-    /// <param name="typeName">Specifies the <see cref="Type"/> name of the serialized object</param>
-    /// <returns>The type of the object the formatter creates a new instance of.</returns>
-    public abstract Type BindToType(string assemblyName, string typeName);
-
-    /// <summary>
-    /// When overridden in a derived class, controls the binding of a serialized object to a type.
-    /// </summary>
-    /// <param name="serializedType">The type of the object the formatter creates a new instance of.</param>
-    /// <param name="assemblyName">Specifies the <see cref="Assembly"/> name of the serialized object.</param>
-    /// <param name="typeName">Specifies the <see cref="Type"/> name of the serialized object.</param>
-    public virtual void BindToName(Type serializedType, out string assemblyName, out string typeName)
-    {
-      assemblyName = null;
-      typeName = null;
-    }
-  }
-}
+﻿#if SILVERLIGHT || PocketPC || NETFX_CORE
+using System;
+using System.Reflection;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Allows users to control class loading and mandate what class to load.
+  /// </summary>
+  public abstract class SerializationBinder
+  {
+    /// <summary>
+    /// When overridden in a derived class, controls the binding of a serialized object to a type.
+    /// </summary>
+    /// <param name="assemblyName">Specifies the <see cref="Assembly"/> name of the serialized object.</param>
+    /// <param name="typeName">Specifies the <see cref="Type"/> name of the serialized object</param>
+    /// <returns>The type of the object the formatter creates a new instance of.</returns>
+    public abstract Type BindToType(string assemblyName, string typeName);
+
+    /// <summary>
+    /// When overridden in a derived class, controls the binding of a serialized object to a type.
+    /// </summary>
+    /// <param name="serializedType">The type of the object the formatter creates a new instance of.</param>
+    /// <param name="assemblyName">Specifies the <see cref="Assembly"/> name of the serialized object.</param>
+    /// <param name="typeName">Specifies the <see cref="Type"/> name of the serialized object.</param>
+    public virtual void BindToName(Type serializedType, out string assemblyName, out string typeName)
+    {
+      assemblyName = null;
+      typeName = null;
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/StreamingContext.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/StreamingContext.cs
@@ -1,64 +1,64 @@
-﻿#if PocketPC
-#pragma warning disable 1591
-
-// This class is... borrowed from .NET and Microsoft for a short time.
-// Hopefully Microsoft will add DateTimeOffset to the compact framework
-// or I will rewrite a striped down version of this file myself
-
-namespace System.Runtime.Serialization
-{
-  public enum StreamingContextStates
-  {
-    All = 255,
-    Clone = 64,
-    CrossAppDomain = 128,
-    CrossMachine = 2,
-    CrossProcess = 1,
-    File = 4,
-    Other = 32,
-    Persistence = 8,
-    Remoting = 16
-  }
-
-  public struct StreamingContext
-  {
-    internal object m_additionalContext;
-    internal StreamingContextStates m_state;
-    public StreamingContext(StreamingContextStates state)
-      : this(state, null)
-    {
-    }
-
-    public StreamingContext(StreamingContextStates state, object additional)
-    {
-      this.m_state = state;
-      this.m_additionalContext = additional;
-    }
-
-    public object Context
-    {
-      get
-      {
-        return this.m_additionalContext;
-      }
-    }
-    public override bool Equals(object obj)
-    {
-      return ((obj is StreamingContext) && ((((StreamingContext)obj).m_additionalContext == this.m_additionalContext) && (((StreamingContext)obj).m_state == this.m_state)));
-    }
-
-    public override int GetHashCode()
-    {
-      return (int)this.m_state;
-    }
-
-    public StreamingContextStates State
-    {
-      get
-      {
-        return this.m_state;
-      }
-    }
-  }
-}
+﻿#if PocketPC
+#pragma warning disable 1591
+
+// This class is... borrowed from .NET and Microsoft for a short time.
+// Hopefully Microsoft will add DateTimeOffset to the compact framework
+// or I will rewrite a striped down version of this file myself
+
+namespace System.Runtime.Serialization
+{
+  public enum StreamingContextStates
+  {
+    All = 255,
+    Clone = 64,
+    CrossAppDomain = 128,
+    CrossMachine = 2,
+    CrossProcess = 1,
+    File = 4,
+    Other = 32,
+    Persistence = 8,
+    Remoting = 16
+  }
+
+  public struct StreamingContext
+  {
+    internal object m_additionalContext;
+    internal StreamingContextStates m_state;
+    public StreamingContext(StreamingContextStates state)
+      : this(state, null)
+    {
+    }
+
+    public StreamingContext(StreamingContextStates state, object additional)
+    {
+      this.m_state = state;
+      this.m_additionalContext = additional;
+    }
+
+    public object Context
+    {
+      get
+      {
+        return this.m_additionalContext;
+      }
+    }
+    public override bool Equals(object obj)
+    {
+      return ((obj is StreamingContext) && ((((StreamingContext)obj).m_additionalContext == this.m_additionalContext) && (((StreamingContext)obj).m_state == this.m_state)));
+    }
+
+    public override int GetHashCode()
+    {
+      return (int)this.m_state;
+    }
+
+    public StreamingContextStates State
+    {
+      get
+      {
+        return this.m_state;
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/TypeNameHandling.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/TypeNameHandling.cs
@@ -1,32 +1,32 @@
-﻿using System;
-
-namespace Newtonsoft.Json
-{
-  /// <summary>
-  /// Specifies type name handling options for the <see cref="JsonSerializer"/>.
-  /// </summary>
-  [Flags]
-  public enum TypeNameHandling
-  {
-    /// <summary>
-    /// Do not include the .NET type name when serializing types.
-    /// </summary>
-    None = 0,
-    /// <summary>
-    /// Include the .NET type name when serializing into a JSON object structure.
-    /// </summary>
-    Objects = 1,
-    /// <summary>
-    /// Include the .NET type name when serializing into a JSON array structure.
-    /// </summary>
-    Arrays = 2,
-    /// <summary>
-    /// Include the .NET type name when the type of the object being serialized is not the same as its declared type.
-    /// </summary>
-    Auto = 4,
-    /// <summary>
-    /// Always include the .NET type name when serializing.
-    /// </summary>
-    All = Objects | Arrays
-  }
+﻿using System;
+
+namespace Newtonsoft.Json
+{
+  /// <summary>
+  /// Specifies type name handling options for the <see cref="JsonSerializer"/>.
+  /// </summary>
+  [Flags]
+  public enum TypeNameHandling
+  {
+    /// <summary>
+    /// Do not include the .NET type name when serializing types.
+    /// </summary>
+    None = 0,
+    /// <summary>
+    /// Include the .NET type name when serializing into a JSON object structure.
+    /// </summary>
+    Objects = 1,
+    /// <summary>
+    /// Include the .NET type name when serializing into a JSON array structure.
+    /// </summary>
+    Arrays = 2,
+    /// <summary>
+    /// Include the .NET type name when the type of the object being serialized is not the same as its declared type.
+    /// </summary>
+    Auto = 4,
+    /// <summary>
+    /// Always include the .NET type name when serializing.
+    /// </summary>
+    All = Objects | Arrays
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/Base64Encoder.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/Base64Encoder.cs
@@ -1,95 +1,95 @@
-﻿using System;
-using System.IO;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class Base64Encoder
-  {
-    private const int Base64LineSize = 76;
-    private const int LineSizeInBytes = 57;
-
-    private readonly char[] _charsLine = new char[Base64LineSize];
-    private readonly TextWriter _writer;
-
-    private byte[] _leftOverBytes;
-    private int _leftOverBytesCount;
-
-    public Base64Encoder(TextWriter writer)
-    {
-      ValidationUtils.ArgumentNotNull(writer, "writer");
-      _writer = writer;
-    }
-
-    public void Encode(byte[] buffer, int index, int count)
-    {
-      if (buffer == null)
-        throw new ArgumentNullException("buffer");
-
-      if (index < 0)
-        throw new ArgumentOutOfRangeException("index");
-
-      if (count < 0)
-        throw new ArgumentOutOfRangeException("count");
-
-      if (count > (buffer.Length - index))
-        throw new ArgumentOutOfRangeException("count");
-
-      if (_leftOverBytesCount > 0)
-      {
-        int leftOverBytesCount = _leftOverBytesCount;
-        while (leftOverBytesCount < 3 && count > 0)
-        {
-          _leftOverBytes[leftOverBytesCount++] = buffer[index++];
-          count--;
-        }
-        if (count == 0 && leftOverBytesCount < 3)
-        {
-          _leftOverBytesCount = leftOverBytesCount;
-          return;
-        }
-        int num2 = Convert.ToBase64CharArray(_leftOverBytes, 0, 3, _charsLine, 0);
-        WriteChars(_charsLine, 0, num2);
-      }
-      _leftOverBytesCount = count % 3;
-      if (_leftOverBytesCount > 0)
-      {
-        count -= _leftOverBytesCount;
-        if (_leftOverBytes == null)
-        {
-          _leftOverBytes = new byte[3];
-        }
-        for (int i = 0; i < _leftOverBytesCount; i++)
-        {
-          _leftOverBytes[i] = buffer[(index + count) + i];
-        }
-      }
-      int num4 = index + count;
-      int length = LineSizeInBytes;
-      while (index < num4)
-      {
-        if ((index + length) > num4)
-        {
-          length = num4 - index;
-        }
-        int num6 = Convert.ToBase64CharArray(buffer, index, length, _charsLine, 0);
-        WriteChars(_charsLine, 0, num6);
-        index += length;
-      }
-    }
-
-    public void Flush()
-    {
-      if (_leftOverBytesCount > 0)
-      {
-        int count = Convert.ToBase64CharArray(_leftOverBytes, 0, _leftOverBytesCount, _charsLine, 0);
-        WriteChars(_charsLine, 0, count);
-        _leftOverBytesCount = 0;
-      }
-    }
-
-    private void WriteChars(char[] chars, int index, int count)
-    {
-      _writer.Write(chars, index, count);
-    }
-  }
+﻿using System;
+using System.IO;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class Base64Encoder
+  {
+    private const int Base64LineSize = 76;
+    private const int LineSizeInBytes = 57;
+
+    private readonly char[] _charsLine = new char[Base64LineSize];
+    private readonly TextWriter _writer;
+
+    private byte[] _leftOverBytes;
+    private int _leftOverBytesCount;
+
+    public Base64Encoder(TextWriter writer)
+    {
+      ValidationUtils.ArgumentNotNull(writer, "writer");
+      _writer = writer;
+    }
+
+    public void Encode(byte[] buffer, int index, int count)
+    {
+      if (buffer == null)
+        throw new ArgumentNullException("buffer");
+
+      if (index < 0)
+        throw new ArgumentOutOfRangeException("index");
+
+      if (count < 0)
+        throw new ArgumentOutOfRangeException("count");
+
+      if (count > (buffer.Length - index))
+        throw new ArgumentOutOfRangeException("count");
+
+      if (_leftOverBytesCount > 0)
+      {
+        int leftOverBytesCount = _leftOverBytesCount;
+        while (leftOverBytesCount < 3 && count > 0)
+        {
+          _leftOverBytes[leftOverBytesCount++] = buffer[index++];
+          count--;
+        }
+        if (count == 0 && leftOverBytesCount < 3)
+        {
+          _leftOverBytesCount = leftOverBytesCount;
+          return;
+        }
+        int num2 = Convert.ToBase64CharArray(_leftOverBytes, 0, 3, _charsLine, 0);
+        WriteChars(_charsLine, 0, num2);
+      }
+      _leftOverBytesCount = count % 3;
+      if (_leftOverBytesCount > 0)
+      {
+        count -= _leftOverBytesCount;
+        if (_leftOverBytes == null)
+        {
+          _leftOverBytes = new byte[3];
+        }
+        for (int i = 0; i < _leftOverBytesCount; i++)
+        {
+          _leftOverBytes[i] = buffer[(index + count) + i];
+        }
+      }
+      int num4 = index + count;
+      int length = LineSizeInBytes;
+      while (index < num4)
+      {
+        if ((index + length) > num4)
+        {
+          length = num4 - index;
+        }
+        int num6 = Convert.ToBase64CharArray(buffer, index, length, _charsLine, 0);
+        WriteChars(_charsLine, 0, num6);
+        index += length;
+      }
+    }
+
+    public void Flush()
+    {
+      if (_leftOverBytesCount > 0)
+      {
+        int count = Convert.ToBase64CharArray(_leftOverBytes, 0, _leftOverBytesCount, _charsLine, 0);
+        WriteChars(_charsLine, 0, count);
+        _leftOverBytesCount = 0;
+      }
+    }
+
+    private void WriteChars(char[] chars, int index, int count)
+    {
+      _writer.Write(chars, index, count);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/BidirectionalDictionary.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/BidirectionalDictionary.cs
@@ -1,67 +1,67 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class BidirectionalDictionary<TFirst, TSecond>
-  {
-    private readonly IDictionary<TFirst, TSecond> _firstToSecond;
-    private readonly IDictionary<TSecond, TFirst> _secondToFirst;
-
-    public BidirectionalDictionary()
-      : this(EqualityComparer<TFirst>.Default, EqualityComparer<TSecond>.Default)
-    {
-    }
-
-    public BidirectionalDictionary(IEqualityComparer<TFirst> firstEqualityComparer, IEqualityComparer<TSecond> secondEqualityComparer)
-    {
-      _firstToSecond = new Dictionary<TFirst, TSecond>(firstEqualityComparer);
-      _secondToFirst = new Dictionary<TSecond, TFirst>(secondEqualityComparer);
-    }
-
-    public void Add(TFirst first, TSecond second)
-    {
-      if (_firstToSecond.ContainsKey(first) || _secondToFirst.ContainsKey(second))
-      {
-        throw new ArgumentException("Duplicate first or second");
-      }
-      _firstToSecond.Add(first, second);
-      _secondToFirst.Add(second, first);
-    }
-
-    public bool TryGetByFirst(TFirst first, out TSecond second)
-    {
-      return _firstToSecond.TryGetValue(first, out second);
-    }
-
-    public bool TryGetBySecond(TSecond second, out TFirst first)
-    {
-      return _secondToFirst.TryGetValue(second, out first);
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class BidirectionalDictionary<TFirst, TSecond>
+  {
+    private readonly IDictionary<TFirst, TSecond> _firstToSecond;
+    private readonly IDictionary<TSecond, TFirst> _secondToFirst;
+
+    public BidirectionalDictionary()
+      : this(EqualityComparer<TFirst>.Default, EqualityComparer<TSecond>.Default)
+    {
+    }
+
+    public BidirectionalDictionary(IEqualityComparer<TFirst> firstEqualityComparer, IEqualityComparer<TSecond> secondEqualityComparer)
+    {
+      _firstToSecond = new Dictionary<TFirst, TSecond>(firstEqualityComparer);
+      _secondToFirst = new Dictionary<TSecond, TFirst>(secondEqualityComparer);
+    }
+
+    public void Add(TFirst first, TSecond second)
+    {
+      if (_firstToSecond.ContainsKey(first) || _secondToFirst.ContainsKey(second))
+      {
+        throw new ArgumentException("Duplicate first or second");
+      }
+      _firstToSecond.Add(first, second);
+      _secondToFirst.Add(second, first);
+    }
+
+    public bool TryGetByFirst(TFirst first, out TSecond second)
+    {
+      return _firstToSecond.TryGetValue(first, out second);
+    }
+
+    public bool TryGetBySecond(TSecond second, out TFirst first)
+    {
+      return _secondToFirst.TryGetValue(second, out first);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/CollectionUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/CollectionUtils.cs
@@ -1,350 +1,350 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Reflection;
-using System.Text;
-using System.Collections;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using System.Globalization;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class CollectionUtils
-  {
-    public static IEnumerable<T> CastValid<T>(this IEnumerable enumerable)
-    {
-      ValidationUtils.ArgumentNotNull(enumerable, "enumerable");
-
-      return enumerable.Cast<object>().Where(o => o is T).Cast<T>();
-    }
-
-    /// <summary>
-    /// Determines whether the collection is null or empty.
-    /// </summary>
-    /// <param name="collection">The collection.</param>
-    /// <returns>
-    /// 	<c>true</c> if the collection is null or empty; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool IsNullOrEmpty<T>(ICollection<T> collection)
-    {
-      if (collection != null)
-      {
-        return (collection.Count == 0);
-      }
-      return true;
-    }
-
-    /// <summary>
-    /// Adds the elements of the specified collection to the specified generic IList.
-    /// </summary>
-    /// <param name="initial">The list to add to.</param>
-    /// <param name="collection">The collection of elements to add.</param>
-    public static void AddRange<T>(this IList<T> initial, IEnumerable<T> collection)
-    {
-      if (initial == null)
-        throw new ArgumentNullException("initial");
-
-      if (collection == null)
-        return;
-
-      foreach (T value in collection)
-      {
-        initial.Add(value);
-      }
-    }
-
-    public static void AddRange(this IList initial, IEnumerable collection)
-    {
-      ValidationUtils.ArgumentNotNull(initial, "initial");
-
-      ListWrapper<object> wrapper = new ListWrapper<object>(initial);
-      wrapper.AddRange(collection.Cast<object>());
-    }
-
-    public static IList CreateGenericList(Type listType)
-    {
-      ValidationUtils.ArgumentNotNull(listType, "listType");
-
-      return (IList)ReflectionUtils.CreateGeneric(typeof(List<>), listType);
-    }
-
-    public static bool IsDictionaryType(Type type)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-
-#if !NETFX_CORE
-      if (typeof(IDictionary).IsAssignableFrom(type))
-        return true;
-#endif
-      if (ReflectionUtils.ImplementsGenericDefinition(type, typeof (IDictionary<,>)))
-        return true;
-
-      return false;
-    }
-
-    public static IWrappedCollection CreateCollectionWrapper(object list)
-    {
-      ValidationUtils.ArgumentNotNull(list, "list");
-
-      Type collectionDefinition;
-      if (ReflectionUtils.ImplementsGenericDefinition(list.GetType(), typeof(ICollection<>), out collectionDefinition))
-      {
-        Type collectionItemType = ReflectionUtils.GetCollectionItemType(collectionDefinition);
-
-        // Activator.CreateInstance throws AmbiguousMatchException. Manually invoke constructor
-        Func<Type, IList<object>, object> instanceCreator = (t, a) =>
-        {
-          ConstructorInfo c = t.GetConstructor(new[] { collectionDefinition });
-          return c.Invoke(new[] { list });
-        };
-
-        return (IWrappedCollection)ReflectionUtils.CreateGeneric(typeof(CollectionWrapper<>), new[] { collectionItemType }, instanceCreator, list);
-      }
-      else if (list is IList)
-      {
-        return new CollectionWrapper<object>((IList)list);
-      }
-      else
-      {
-        throw new Exception("Can not create ListWrapper for type {0}.".FormatWith(CultureInfo.InvariantCulture, list.GetType()));
-      }
-    }
-
-    public static IWrappedDictionary CreateDictionaryWrapper(object dictionary)
-    {
-      ValidationUtils.ArgumentNotNull(dictionary, "dictionary");
-
-      Type dictionaryDefinition;
-      if (ReflectionUtils.ImplementsGenericDefinition(dictionary.GetType(), typeof(IDictionary<,>), out dictionaryDefinition))
-      {
-        Type dictionaryKeyType = ReflectionUtils.GetDictionaryKeyType(dictionaryDefinition);
-        Type dictionaryValueType = ReflectionUtils.GetDictionaryValueType(dictionaryDefinition);
-
-        // Activator.CreateInstance throws AmbiguousMatchException. Manually invoke constructor
-        Func<Type, IList<object>, object> instanceCreator = (t, a) =>
-        {
-          ConstructorInfo c = t.GetConstructor(new[] { dictionaryDefinition });
-          return c.Invoke(new[] { dictionary });
-        };
-
-        return (IWrappedDictionary)ReflectionUtils.CreateGeneric(typeof(DictionaryWrapper<,>), new[] { dictionaryKeyType, dictionaryValueType }, instanceCreator, dictionary);
-      }
-#if !NETFX_CORE
-      else if (dictionary is IDictionary)
-      {
-        return new DictionaryWrapper<object, object>((IDictionary)dictionary);
-      }
-#endif
-      else
-      {
-        throw new Exception("Can not create DictionaryWrapper for type {0}.".FormatWith(CultureInfo.InvariantCulture, dictionary.GetType()));
-      }
-    }
-
-    public static object CreateAndPopulateList(Type listType, Action<IList, bool> populateList)
-    {
-      ValidationUtils.ArgumentNotNull(listType, "listType");
-      ValidationUtils.ArgumentNotNull(populateList, "populateList");
-
-      IList list;
-      Type collectionType;
-      bool isReadOnlyOrFixedSize = false;
-
-      if (listType.IsArray)
-      {
-        // have to use an arraylist when creating array
-        // there is no way to know the size until it is finised
-        list = new List<object>();
-        isReadOnlyOrFixedSize = true;
-      }
-      else if (ReflectionUtils.InheritsGenericDefinition(listType, typeof(ReadOnlyCollection<>), out collectionType))
-      {
-        Type readOnlyCollectionContentsType = collectionType.GetGenericArguments()[0];
-        Type genericEnumerable = ReflectionUtils.MakeGenericType(typeof(IEnumerable<>), readOnlyCollectionContentsType);
-        bool suitableConstructor = false;
-
-        foreach (ConstructorInfo constructor in listType.GetConstructors())
-        {
-          IList<ParameterInfo> parameters = constructor.GetParameters();
-
-          if (parameters.Count == 1)
-          {
-            if (genericEnumerable.IsAssignableFrom(parameters[0].ParameterType))
-            {
-              suitableConstructor = true;
-              break;
-            }
-          }
-        }
-
-        if (!suitableConstructor)
-          throw new Exception("Read-only type {0} does not have a public constructor that takes a type that implements {1}.".FormatWith(CultureInfo.InvariantCulture, listType, genericEnumerable));
-
-        // can't add or modify a readonly list
-        // use List<T> and convert once populated
-        list = CreateGenericList(readOnlyCollectionContentsType);
-        isReadOnlyOrFixedSize = true;
-      }
-      else if (typeof(IList).IsAssignableFrom(listType))
-      {
-        if (ReflectionUtils.IsInstantiatableType(listType))
-          list = (IList)Activator.CreateInstance(listType);
-        else if (listType == typeof(IList))
-          list = new List<object>();
-        else
-          list = null;
-      }
-      else if (ReflectionUtils.ImplementsGenericDefinition(listType, typeof(ICollection<>)))
-      {
-        if (ReflectionUtils.IsInstantiatableType(listType))
-          list = CreateCollectionWrapper(Activator.CreateInstance(listType));
-        else
-          list = null;
-      }
-      else
-      {
-        list = null;
-      }
-
-      if (list == null)
-        throw new Exception("Cannot create and populate list type {0}.".FormatWith(CultureInfo.InvariantCulture, listType));
-
-      populateList(list, isReadOnlyOrFixedSize);
-
-      // create readonly and fixed sized collections using the temporary list
-      if (isReadOnlyOrFixedSize)
-      {
-        if (listType.IsArray)
-          list = ToArray(((List<object>)list).ToArray(), ReflectionUtils.GetCollectionItemType(listType));
-        else if (ReflectionUtils.InheritsGenericDefinition(listType, typeof(ReadOnlyCollection<>)))
-          list = (IList)ReflectionUtils.CreateInstance(listType, list);
-      }
-      else if (list is IWrappedCollection)
-      {
-        return ((IWrappedCollection) list).UnderlyingCollection;
-      }
-
-      return list;
-    }
-
-    public static Array ToArray(Array initial, Type type)
-    {
-      if (type == null)
-        throw new ArgumentNullException("type");
-
-      Array destinationArray = Array.CreateInstance(type, initial.Length);
-      Array.Copy(initial, 0, destinationArray, 0, initial.Length);
-      return destinationArray;
-    }
-
-    public static bool AddDistinct<T>(this IList<T> list, T value)
-    {
-      return list.AddDistinct(value, EqualityComparer<T>.Default);
-    }
-
-    public static bool AddDistinct<T>(this IList<T> list, T value, IEqualityComparer<T> comparer)
-    {
-      if (list.ContainsValue(value, comparer))
-        return false;
-
-      list.Add(value);
-      return true;
-    }
-
-    // this is here because LINQ Bridge doesn't support Contains with IEqualityComparer<T>
-    public static bool ContainsValue<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer)
-    {
-      if (comparer == null)
-        comparer = EqualityComparer<TSource>.Default;
-
-      if (source == null)
-        throw new ArgumentNullException("source");
-
-      foreach (TSource local in source)
-      {
-        if (comparer.Equals(local, value))
-          return true;
-      }
-
-      return false;
-    }
-
-    public static bool AddRangeDistinct<T>(this IList<T> list, IEnumerable<T> values, IEqualityComparer<T> comparer)
-    {
-      bool allAdded = true;
-      foreach (T value in values)
-      {
-        if (!list.AddDistinct(value, comparer))
-          allAdded = false;
-      }
-
-      return allAdded;
-    }
-
-    public static int IndexOf<T>(this IEnumerable<T> collection, Func<T, bool> predicate)
-    {
-      int index = 0;
-      foreach (T value in collection)
-      {
-        if (predicate(value))
-          return index;
-
-        index++;
-      }
-
-      return -1;
-    }
-
-    /// <summary>
-    /// Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer.
-    /// </summary>
-    /// <typeparam name="TSource">The type of the elements of source.</typeparam>
-    /// <param name="list">A sequence in which to locate a value.</param>
-    /// <param name="value">The object to locate in the sequence</param>
-    /// <param name="comparer">An equality comparer to compare values.</param>
-    /// <returns>The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, 1.</returns>
-    public static int IndexOf<TSource>(this IEnumerable<TSource> list, TSource value, IEqualityComparer<TSource> comparer)
-    {
-      int index = 0;
-      foreach (TSource item in list)
-      {
-        if (comparer.Equals(item, value))
-        {
-          return index;
-        }
-        index++;
-      }
-      return -1;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Reflection;
+using System.Text;
+using System.Collections;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using System.Globalization;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class CollectionUtils
+  {
+    public static IEnumerable<T> CastValid<T>(this IEnumerable enumerable)
+    {
+      ValidationUtils.ArgumentNotNull(enumerable, "enumerable");
+
+      return enumerable.Cast<object>().Where(o => o is T).Cast<T>();
+    }
+
+    /// <summary>
+    /// Determines whether the collection is null or empty.
+    /// </summary>
+    /// <param name="collection">The collection.</param>
+    /// <returns>
+    /// 	<c>true</c> if the collection is null or empty; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool IsNullOrEmpty<T>(ICollection<T> collection)
+    {
+      if (collection != null)
+      {
+        return (collection.Count == 0);
+      }
+      return true;
+    }
+
+    /// <summary>
+    /// Adds the elements of the specified collection to the specified generic IList.
+    /// </summary>
+    /// <param name="initial">The list to add to.</param>
+    /// <param name="collection">The collection of elements to add.</param>
+    public static void AddRange<T>(this IList<T> initial, IEnumerable<T> collection)
+    {
+      if (initial == null)
+        throw new ArgumentNullException("initial");
+
+      if (collection == null)
+        return;
+
+      foreach (T value in collection)
+      {
+        initial.Add(value);
+      }
+    }
+
+    public static void AddRange(this IList initial, IEnumerable collection)
+    {
+      ValidationUtils.ArgumentNotNull(initial, "initial");
+
+      ListWrapper<object> wrapper = new ListWrapper<object>(initial);
+      wrapper.AddRange(collection.Cast<object>());
+    }
+
+    public static IList CreateGenericList(Type listType)
+    {
+      ValidationUtils.ArgumentNotNull(listType, "listType");
+
+      return (IList)ReflectionUtils.CreateGeneric(typeof(List<>), listType);
+    }
+
+    public static bool IsDictionaryType(Type type)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+
+#if !NETFX_CORE
+      if (typeof(IDictionary).IsAssignableFrom(type))
+        return true;
+#endif
+      if (ReflectionUtils.ImplementsGenericDefinition(type, typeof (IDictionary<,>)))
+        return true;
+
+      return false;
+    }
+
+    public static IWrappedCollection CreateCollectionWrapper(object list)
+    {
+      ValidationUtils.ArgumentNotNull(list, "list");
+
+      Type collectionDefinition;
+      if (ReflectionUtils.ImplementsGenericDefinition(list.GetType(), typeof(ICollection<>), out collectionDefinition))
+      {
+        Type collectionItemType = ReflectionUtils.GetCollectionItemType(collectionDefinition);
+
+        // Activator.CreateInstance throws AmbiguousMatchException. Manually invoke constructor
+        Func<Type, IList<object>, object> instanceCreator = (t, a) =>
+        {
+          ConstructorInfo c = t.GetConstructor(new[] { collectionDefinition });
+          return c.Invoke(new[] { list });
+        };
+
+        return (IWrappedCollection)ReflectionUtils.CreateGeneric(typeof(CollectionWrapper<>), new[] { collectionItemType }, instanceCreator, list);
+      }
+      else if (list is IList)
+      {
+        return new CollectionWrapper<object>((IList)list);
+      }
+      else
+      {
+        throw new Exception("Can not create ListWrapper for type {0}.".FormatWith(CultureInfo.InvariantCulture, list.GetType()));
+      }
+    }
+
+    public static IWrappedDictionary CreateDictionaryWrapper(object dictionary)
+    {
+      ValidationUtils.ArgumentNotNull(dictionary, "dictionary");
+
+      Type dictionaryDefinition;
+      if (ReflectionUtils.ImplementsGenericDefinition(dictionary.GetType(), typeof(IDictionary<,>), out dictionaryDefinition))
+      {
+        Type dictionaryKeyType = ReflectionUtils.GetDictionaryKeyType(dictionaryDefinition);
+        Type dictionaryValueType = ReflectionUtils.GetDictionaryValueType(dictionaryDefinition);
+
+        // Activator.CreateInstance throws AmbiguousMatchException. Manually invoke constructor
+        Func<Type, IList<object>, object> instanceCreator = (t, a) =>
+        {
+          ConstructorInfo c = t.GetConstructor(new[] { dictionaryDefinition });
+          return c.Invoke(new[] { dictionary });
+        };
+
+        return (IWrappedDictionary)ReflectionUtils.CreateGeneric(typeof(DictionaryWrapper<,>), new[] { dictionaryKeyType, dictionaryValueType }, instanceCreator, dictionary);
+      }
+#if !NETFX_CORE
+      else if (dictionary is IDictionary)
+      {
+        return new DictionaryWrapper<object, object>((IDictionary)dictionary);
+      }
+#endif
+      else
+      {
+        throw new Exception("Can not create DictionaryWrapper for type {0}.".FormatWith(CultureInfo.InvariantCulture, dictionary.GetType()));
+      }
+    }
+
+    public static object CreateAndPopulateList(Type listType, Action<IList, bool> populateList)
+    {
+      ValidationUtils.ArgumentNotNull(listType, "listType");
+      ValidationUtils.ArgumentNotNull(populateList, "populateList");
+
+      IList list;
+      Type collectionType;
+      bool isReadOnlyOrFixedSize = false;
+
+      if (listType.IsArray)
+      {
+        // have to use an arraylist when creating array
+        // there is no way to know the size until it is finised
+        list = new List<object>();
+        isReadOnlyOrFixedSize = true;
+      }
+      else if (ReflectionUtils.InheritsGenericDefinition(listType, typeof(ReadOnlyCollection<>), out collectionType))
+      {
+        Type readOnlyCollectionContentsType = collectionType.GetGenericArguments()[0];
+        Type genericEnumerable = ReflectionUtils.MakeGenericType(typeof(IEnumerable<>), readOnlyCollectionContentsType);
+        bool suitableConstructor = false;
+
+        foreach (ConstructorInfo constructor in listType.GetConstructors())
+        {
+          IList<ParameterInfo> parameters = constructor.GetParameters();
+
+          if (parameters.Count == 1)
+          {
+            if (genericEnumerable.IsAssignableFrom(parameters[0].ParameterType))
+            {
+              suitableConstructor = true;
+              break;
+            }
+          }
+        }
+
+        if (!suitableConstructor)
+          throw new Exception("Read-only type {0} does not have a public constructor that takes a type that implements {1}.".FormatWith(CultureInfo.InvariantCulture, listType, genericEnumerable));
+
+        // can't add or modify a readonly list
+        // use List<T> and convert once populated
+        list = CreateGenericList(readOnlyCollectionContentsType);
+        isReadOnlyOrFixedSize = true;
+      }
+      else if (typeof(IList).IsAssignableFrom(listType))
+      {
+        if (ReflectionUtils.IsInstantiatableType(listType))
+          list = (IList)Activator.CreateInstance(listType);
+        else if (listType == typeof(IList))
+          list = new List<object>();
+        else
+          list = null;
+      }
+      else if (ReflectionUtils.ImplementsGenericDefinition(listType, typeof(ICollection<>)))
+      {
+        if (ReflectionUtils.IsInstantiatableType(listType))
+          list = CreateCollectionWrapper(Activator.CreateInstance(listType));
+        else
+          list = null;
+      }
+      else
+      {
+        list = null;
+      }
+
+      if (list == null)
+        throw new Exception("Cannot create and populate list type {0}.".FormatWith(CultureInfo.InvariantCulture, listType));
+
+      populateList(list, isReadOnlyOrFixedSize);
+
+      // create readonly and fixed sized collections using the temporary list
+      if (isReadOnlyOrFixedSize)
+      {
+        if (listType.IsArray)
+          list = ToArray(((List<object>)list).ToArray(), ReflectionUtils.GetCollectionItemType(listType));
+        else if (ReflectionUtils.InheritsGenericDefinition(listType, typeof(ReadOnlyCollection<>)))
+          list = (IList)ReflectionUtils.CreateInstance(listType, list);
+      }
+      else if (list is IWrappedCollection)
+      {
+        return ((IWrappedCollection) list).UnderlyingCollection;
+      }
+
+      return list;
+    }
+
+    public static Array ToArray(Array initial, Type type)
+    {
+      if (type == null)
+        throw new ArgumentNullException("type");
+
+      Array destinationArray = Array.CreateInstance(type, initial.Length);
+      Array.Copy(initial, 0, destinationArray, 0, initial.Length);
+      return destinationArray;
+    }
+
+    public static bool AddDistinct<T>(this IList<T> list, T value)
+    {
+      return list.AddDistinct(value, EqualityComparer<T>.Default);
+    }
+
+    public static bool AddDistinct<T>(this IList<T> list, T value, IEqualityComparer<T> comparer)
+    {
+      if (list.ContainsValue(value, comparer))
+        return false;
+
+      list.Add(value);
+      return true;
+    }
+
+    // this is here because LINQ Bridge doesn't support Contains with IEqualityComparer<T>
+    public static bool ContainsValue<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer)
+    {
+      if (comparer == null)
+        comparer = EqualityComparer<TSource>.Default;
+
+      if (source == null)
+        throw new ArgumentNullException("source");
+
+      foreach (TSource local in source)
+      {
+        if (comparer.Equals(local, value))
+          return true;
+      }
+
+      return false;
+    }
+
+    public static bool AddRangeDistinct<T>(this IList<T> list, IEnumerable<T> values, IEqualityComparer<T> comparer)
+    {
+      bool allAdded = true;
+      foreach (T value in values)
+      {
+        if (!list.AddDistinct(value, comparer))
+          allAdded = false;
+      }
+
+      return allAdded;
+    }
+
+    public static int IndexOf<T>(this IEnumerable<T> collection, Func<T, bool> predicate)
+    {
+      int index = 0;
+      foreach (T value in collection)
+      {
+        if (predicate(value))
+          return index;
+
+        index++;
+      }
+
+      return -1;
+    }
+
+    /// <summary>
+    /// Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer.
+    /// </summary>
+    /// <typeparam name="TSource">The type of the elements of source.</typeparam>
+    /// <param name="list">A sequence in which to locate a value.</param>
+    /// <param name="value">The object to locate in the sequence</param>
+    /// <param name="comparer">An equality comparer to compare values.</param>
+    /// <returns>The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, 1.</returns>
+    public static int IndexOf<TSource>(this IEnumerable<TSource> list, TSource value, IEqualityComparer<TSource> comparer)
+    {
+      int index = 0;
+      foreach (TSource item in list)
+      {
+        if (comparer.Equals(item, value))
+        {
+          return index;
+        }
+        index++;
+      }
+      return -1;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/CollectionWrapper.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/CollectionWrapper.cs
@@ -1,281 +1,281 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Threading;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal interface IWrappedCollection : IList
-  {
-    object UnderlyingCollection { get; }
-  }
-
-  internal class CollectionWrapper<T> : ICollection<T>, IWrappedCollection
-  {
-    private readonly IList _list;
-    private readonly ICollection<T> _genericCollection;
-    private object _syncRoot;
-
-    public CollectionWrapper(IList list)
-    {
-      ValidationUtils.ArgumentNotNull(list, "list");
-
-      if (list is ICollection<T>)
-        _genericCollection = (ICollection<T>)list;
-      else
-        _list = list;
-    }
-
-    public CollectionWrapper(ICollection<T> list)
-    {
-      ValidationUtils.ArgumentNotNull(list, "list");
-
-      _genericCollection = list;
-    }
-
-    public virtual void Add(T item)
-    {
-      if (_genericCollection != null)
-        _genericCollection.Add(item);
-      else
-        _list.Add(item);
-    }
-
-    public virtual void Clear()
-    {
-      if (_genericCollection != null)
-        _genericCollection.Clear();
-      else
-        _list.Clear();
-    }
-
-    public virtual bool Contains(T item)
-    {
-      if (_genericCollection != null)
-        return _genericCollection.Contains(item);
-      else
-        return _list.Contains(item);
-    }
-
-    public virtual void CopyTo(T[] array, int arrayIndex)
-    {
-      if (_genericCollection != null)
-        _genericCollection.CopyTo(array, arrayIndex);
-      else
-        _list.CopyTo(array, arrayIndex);
-    }
-
-    public virtual int Count
-    {
-      get
-      {
-        if (_genericCollection != null)
-          return _genericCollection.Count;
-        else
-          return _list.Count;
-      }
-    }
-
-    public virtual bool IsReadOnly
-    {
-      get
-      {
-        if (_genericCollection != null)
-          return _genericCollection.IsReadOnly;
-        else
-          return _list.IsReadOnly;
-      }
-    }
-
-    public virtual bool Remove(T item)
-    {
-      if (_genericCollection != null)
-      {
-        return _genericCollection.Remove(item);
-      }
-      else
-      {
-        bool contains = _list.Contains(item);
-
-        if (contains)
-          _list.Remove(item);
-
-        return contains;
-      }
-    }
-
-    public virtual IEnumerator<T> GetEnumerator()
-    {
-      if (_genericCollection != null)
-        return _genericCollection.GetEnumerator();
-
-      return _list.Cast<T>().GetEnumerator();
-    }
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      if (_genericCollection != null)
-        return _genericCollection.GetEnumerator();
-      else
-        return _list.GetEnumerator();
-    }
-
-    int IList.Add(object value)
-    {
-      VerifyValueType(value);
-      Add((T)value);
-
-      return (Count - 1);
-    }
-
-    bool IList.Contains(object value)
-    {
-      if (IsCompatibleObject(value))
-        return Contains((T)value);
-
-      return false;
-    }
-
-    int IList.IndexOf(object value)
-    {
-      if (_genericCollection != null)
-        throw new Exception("Wrapped ICollection<T> does not support IndexOf.");
-
-      if (IsCompatibleObject(value))
-        return _list.IndexOf((T)value);
-
-      return -1;
-    }
-
-    void IList.RemoveAt(int index)
-    {
-      if (_genericCollection != null)
-        throw new Exception("Wrapped ICollection<T> does not support RemoveAt.");
-
-      _list.RemoveAt(index);
-    }
-
-    void IList.Insert(int index, object value)
-    {
-      if (_genericCollection != null)
-        throw new Exception("Wrapped ICollection<T> does not support Insert.");
-
-      VerifyValueType(value);
-      _list.Insert(index, (T)value);
-    }
-
-    bool IList.IsFixedSize
-    {
-      get
-      {
-        if (_genericCollection != null)
-          // ICollection<T> only has IsReadOnly
-          return _genericCollection.IsReadOnly;
-        else
-          return _list.IsFixedSize;
-      }
-    }
-
-    void IList.Remove(object value)
-    {
-      if (IsCompatibleObject(value))
-        Remove((T)value);
-    }
-
-    object IList.this[int index]
-    {
-      get
-      {
-        if (_genericCollection != null)
-          throw new Exception("Wrapped ICollection<T> does not support indexer.");
-
-        return _list[index];
-      }
-      set
-      {
-        if (_genericCollection != null)
-          throw new Exception("Wrapped ICollection<T> does not support indexer.");
-
-        VerifyValueType(value);
-        _list[index] = (T)value;
-      }
-    }
-
-    void ICollection.CopyTo(Array array, int arrayIndex)
-    {
-      CopyTo((T[])array, arrayIndex);
-    }
-
-    bool ICollection.IsSynchronized
-    {
-      get { return false; }
-    }
-
-    object ICollection.SyncRoot
-    {
-      get
-      {
-        if (_syncRoot == null)
-          Interlocked.CompareExchange(ref _syncRoot, new object(), null);
-
-        return _syncRoot;
-      }
-    }
-
-    private static void VerifyValueType(object value)
-    {
-      if (!IsCompatibleObject(value))
-        throw new ArgumentException("The value '{0}' is not of type '{1}' and cannot be used in this generic collection.".FormatWith(CultureInfo.InvariantCulture, value, typeof(T)), "value");
-    }
-
-    private static bool IsCompatibleObject(object value)
-    {
-      if (!(value is T) && (value != null || (typeof(T).IsValueType() && !ReflectionUtils.IsNullableType(typeof(T)))))
-        return false;
-
-      return true;
-    }
-
-    public object UnderlyingCollection
-    {
-      get
-      {
-        if (_genericCollection != null)
-          return _genericCollection;
-        else
-          return _list;
-      }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Threading;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal interface IWrappedCollection : IList
+  {
+    object UnderlyingCollection { get; }
+  }
+
+  internal class CollectionWrapper<T> : ICollection<T>, IWrappedCollection
+  {
+    private readonly IList _list;
+    private readonly ICollection<T> _genericCollection;
+    private object _syncRoot;
+
+    public CollectionWrapper(IList list)
+    {
+      ValidationUtils.ArgumentNotNull(list, "list");
+
+      if (list is ICollection<T>)
+        _genericCollection = (ICollection<T>)list;
+      else
+        _list = list;
+    }
+
+    public CollectionWrapper(ICollection<T> list)
+    {
+      ValidationUtils.ArgumentNotNull(list, "list");
+
+      _genericCollection = list;
+    }
+
+    public virtual void Add(T item)
+    {
+      if (_genericCollection != null)
+        _genericCollection.Add(item);
+      else
+        _list.Add(item);
+    }
+
+    public virtual void Clear()
+    {
+      if (_genericCollection != null)
+        _genericCollection.Clear();
+      else
+        _list.Clear();
+    }
+
+    public virtual bool Contains(T item)
+    {
+      if (_genericCollection != null)
+        return _genericCollection.Contains(item);
+      else
+        return _list.Contains(item);
+    }
+
+    public virtual void CopyTo(T[] array, int arrayIndex)
+    {
+      if (_genericCollection != null)
+        _genericCollection.CopyTo(array, arrayIndex);
+      else
+        _list.CopyTo(array, arrayIndex);
+    }
+
+    public virtual int Count
+    {
+      get
+      {
+        if (_genericCollection != null)
+          return _genericCollection.Count;
+        else
+          return _list.Count;
+      }
+    }
+
+    public virtual bool IsReadOnly
+    {
+      get
+      {
+        if (_genericCollection != null)
+          return _genericCollection.IsReadOnly;
+        else
+          return _list.IsReadOnly;
+      }
+    }
+
+    public virtual bool Remove(T item)
+    {
+      if (_genericCollection != null)
+      {
+        return _genericCollection.Remove(item);
+      }
+      else
+      {
+        bool contains = _list.Contains(item);
+
+        if (contains)
+          _list.Remove(item);
+
+        return contains;
+      }
+    }
+
+    public virtual IEnumerator<T> GetEnumerator()
+    {
+      if (_genericCollection != null)
+        return _genericCollection.GetEnumerator();
+
+      return _list.Cast<T>().GetEnumerator();
+    }
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      if (_genericCollection != null)
+        return _genericCollection.GetEnumerator();
+      else
+        return _list.GetEnumerator();
+    }
+
+    int IList.Add(object value)
+    {
+      VerifyValueType(value);
+      Add((T)value);
+
+      return (Count - 1);
+    }
+
+    bool IList.Contains(object value)
+    {
+      if (IsCompatibleObject(value))
+        return Contains((T)value);
+
+      return false;
+    }
+
+    int IList.IndexOf(object value)
+    {
+      if (_genericCollection != null)
+        throw new Exception("Wrapped ICollection<T> does not support IndexOf.");
+
+      if (IsCompatibleObject(value))
+        return _list.IndexOf((T)value);
+
+      return -1;
+    }
+
+    void IList.RemoveAt(int index)
+    {
+      if (_genericCollection != null)
+        throw new Exception("Wrapped ICollection<T> does not support RemoveAt.");
+
+      _list.RemoveAt(index);
+    }
+
+    void IList.Insert(int index, object value)
+    {
+      if (_genericCollection != null)
+        throw new Exception("Wrapped ICollection<T> does not support Insert.");
+
+      VerifyValueType(value);
+      _list.Insert(index, (T)value);
+    }
+
+    bool IList.IsFixedSize
+    {
+      get
+      {
+        if (_genericCollection != null)
+          // ICollection<T> only has IsReadOnly
+          return _genericCollection.IsReadOnly;
+        else
+          return _list.IsFixedSize;
+      }
+    }
+
+    void IList.Remove(object value)
+    {
+      if (IsCompatibleObject(value))
+        Remove((T)value);
+    }
+
+    object IList.this[int index]
+    {
+      get
+      {
+        if (_genericCollection != null)
+          throw new Exception("Wrapped ICollection<T> does not support indexer.");
+
+        return _list[index];
+      }
+      set
+      {
+        if (_genericCollection != null)
+          throw new Exception("Wrapped ICollection<T> does not support indexer.");
+
+        VerifyValueType(value);
+        _list[index] = (T)value;
+      }
+    }
+
+    void ICollection.CopyTo(Array array, int arrayIndex)
+    {
+      CopyTo((T[])array, arrayIndex);
+    }
+
+    bool ICollection.IsSynchronized
+    {
+      get { return false; }
+    }
+
+    object ICollection.SyncRoot
+    {
+      get
+      {
+        if (_syncRoot == null)
+          Interlocked.CompareExchange(ref _syncRoot, new object(), null);
+
+        return _syncRoot;
+      }
+    }
+
+    private static void VerifyValueType(object value)
+    {
+      if (!IsCompatibleObject(value))
+        throw new ArgumentException("The value '{0}' is not of type '{1}' and cannot be used in this generic collection.".FormatWith(CultureInfo.InvariantCulture, value, typeof(T)), "value");
+    }
+
+    private static bool IsCompatibleObject(object value)
+    {
+      if (!(value is T) && (value != null || (typeof(T).IsValueType() && !ReflectionUtils.IsNullableType(typeof(T)))))
+        return false;
+
+      return true;
+    }
+
+    public object UnderlyingCollection
+    {
+      get
+      {
+        if (_genericCollection != null)
+          return _genericCollection;
+        else
+          return _list;
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ConvertUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ConvertUtils.cs
@@ -1,496 +1,496 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Globalization;
-using System.ComponentModel;
-using Newtonsoft.Json.Serialization;
-using System.Reflection;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-
-#if !(SILVERLIGHT || NETFX_CORE)
-using System.Data.SqlTypes;
-#endif
-#if NETFX_CORE
-using IConvertible = Newtonsoft.Json.Utilities.Convertible;
-#endif
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class Convertible
-  {
-    private object _underlyingValue;
-
-    public Convertible(object o)
-    {
-      _underlyingValue = o;
-    }
-
-    public TypeCode GetTypeCode()
-    {
-      return ConvertUtils.GetTypeCode(_underlyingValue);
-    }
-
-    public bool ToBoolean(IFormatProvider provider)
-    {
-      return Convert.ToBoolean(_underlyingValue, provider);
-    }
-    public byte ToByte(IFormatProvider provider)
-    {
-      return Convert.ToByte(_underlyingValue, provider);
-    }
-    public char ToChar(IFormatProvider provider)
-    {
-      return Convert.ToChar(_underlyingValue, provider);
-    }
-    public DateTime ToDateTime(IFormatProvider provider)
-    {
-      return Convert.ToDateTime(_underlyingValue, provider);
-    }
-    public decimal ToDecimal(IFormatProvider provider)
-    {
-      return Convert.ToDecimal(_underlyingValue, provider);
-    }
-    public double ToDouble(IFormatProvider provider)
-    {
-      return Convert.ToDouble(_underlyingValue, provider);
-    }
-    public short ToInt16(IFormatProvider provider)
-    {
-      return Convert.ToInt16(_underlyingValue, provider);
-    }
-    public int ToInt32(IFormatProvider provider)
-    {
-      return Convert.ToInt32(_underlyingValue, provider);
-    }
-    public long ToInt64(IFormatProvider provider)
-    {
-      return Convert.ToInt64(_underlyingValue, provider);
-    }
-    public sbyte ToSByte(IFormatProvider provider)
-    {
-      return Convert.ToSByte(_underlyingValue, provider);
-    }
-    public float ToSingle(IFormatProvider provider)
-    {
-      return Convert.ToSingle(_underlyingValue, provider);
-    }
-    public string ToString(IFormatProvider provider)
-    {
-      return Convert.ToString(_underlyingValue, provider);
-    }
-    public object ToType(Type conversionType, IFormatProvider provider)
-    {
-      return Convert.ChangeType(_underlyingValue, conversionType, provider);
-    }
-    public ushort ToUInt16(IFormatProvider provider)
-    {
-      return Convert.ToUInt16(_underlyingValue, provider);
-    }
-    public uint ToUInt32(IFormatProvider provider)
-    {
-      return Convert.ToUInt32(_underlyingValue, provider);
-    }
-    public ulong ToUInt64(IFormatProvider provider)
-    {
-      return Convert.ToUInt64(_underlyingValue, provider);
-    }
-  }
-
-  internal static class ConvertUtils
-  {
-    public static TypeCode GetTypeCode(this IConvertible convertible)
-    {
-#if !NETFX_CORE
-      return convertible.GetTypeCode();
-#else
-      return GetTypeCode((object)convertible);
-#endif
-    }
-
-    public static TypeCode GetTypeCode(object o)
-    {
-#if !NETFX_CORE
-      return System.Convert.GetTypeCode(o);
-#else
-      return GetTypeCode(o.GetType());
-#endif
-    }
-
-    public static TypeCode GetTypeCode(Type t)
-    {
-#if !NETFX_CORE
-      return Type.GetTypeCode(t);
-#else
-      if (t == typeof(bool))
-        return TypeCode.Boolean;
-      if (t == typeof(byte))
-        return TypeCode.Byte;
-      if (t == typeof(char))
-        return TypeCode.Char;
-      if (t == typeof(DateTime))
-        return TypeCode.DateTime;
-      if (t == typeof(decimal))
-        return TypeCode.Decimal;
-      if (t == typeof(double))
-        return TypeCode.Double;
-      if (t == typeof(short))
-        return TypeCode.Int16;
-      if (t == typeof(int))
-        return TypeCode.Int32;
-      if (t == typeof(long))
-        return TypeCode.Int64;
-      if (t == typeof(sbyte))
-        return TypeCode.SByte;
-      if (t == typeof(float))
-        return TypeCode.Single;
-      if (t == typeof(string))
-        return TypeCode.String;
-      if (t == typeof(ushort))
-        return TypeCode.UInt16;
-      if (t == typeof(uint))
-        return TypeCode.UInt32;
-      if (t == typeof(ulong))
-        return TypeCode.UInt64;
-      if (t.IsEnum())
-        return GetTypeCode(Enum.GetUnderlyingType(t));
-
-      return TypeCode.Object;
-#endif
-    }
-
-    public static IConvertible ToConvertible(object o)
-    {
-#if !NETFX_CORE
-      return o as IConvertible;
-#else
-      if (!IsConvertible(o))
-        return null;
-
-      return new IConvertible(o);
-#endif
-    }
-
-    public static bool IsConvertible(object o)
-    {
-#if !NETFX_CORE
-      return o is IConvertible;
-#else
-      if (o == null)
-        return false;
-
-      return (
-        o is bool || o is byte || o is char || o is DateTime || o is decimal || o is double || o is short || o is int ||
-        o is long || o is sbyte || o is float || o is string || o is ushort || o is uint || o is ulong || o is Enum);
-#endif
-    }
-
-    public static bool IsConvertible(Type t)
-    {
-#if !NETFX_CORE
-      return typeof(IConvertible).IsAssignableFrom(t);
-#else
-      return (
-        t == typeof(bool) || t == typeof(byte) || t == typeof(char) || t == typeof(DateTime) || t == typeof(decimal) || t == typeof(double) || t == typeof(short) || t == typeof(int) ||
-        t == typeof(long) || t == typeof(sbyte) || t == typeof(float) || t == typeof(string) || t == typeof(ushort) || t == typeof(uint) || t == typeof(ulong) || t.IsEnum());
-#endif
-    }
-
-    internal struct TypeConvertKey : IEquatable<TypeConvertKey>
-    {
-      private readonly Type _initialType;
-      private readonly Type _targetType;
-
-      public Type InitialType
-      {
-        get { return _initialType; }
-      }
-
-      public Type TargetType
-      {
-        get { return _targetType; }
-      }
-
-      public TypeConvertKey(Type initialType, Type targetType)
-      {
-        _initialType = initialType;
-        _targetType = targetType;
-      }
-
-      public override int GetHashCode()
-      {
-        return _initialType.GetHashCode() ^ _targetType.GetHashCode();
-      }
-
-      public override bool Equals(object obj)
-      {
-        if (!(obj is TypeConvertKey))
-          return false;
-
-        return Equals((TypeConvertKey)obj);
-      }
-
-      public bool Equals(TypeConvertKey other)
-      {
-        return (_initialType == other._initialType && _targetType == other._targetType);
-      }
-    }
-
-    private static readonly ThreadSafeStore<TypeConvertKey, Func<object, object>> CastConverters =
-      new ThreadSafeStore<TypeConvertKey, Func<object, object>>(CreateCastConverter);
-
-    private static Func<object, object> CreateCastConverter(TypeConvertKey t)
-    {
-      MethodInfo castMethodInfo = t.TargetType.GetMethod("op_Implicit", new[] { t.InitialType });
-      if (castMethodInfo == null)
-        castMethodInfo = t.TargetType.GetMethod("op_Explicit", new[] { t.InitialType });
-
-      if (castMethodInfo == null)
-        return null;
-
-      MethodCall<object, object> call = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(castMethodInfo);
-
-      return o => call(null, o);
-    }
-
-    #region Convert
-    /// <summary>
-    /// Converts the value to the specified type.
-    /// </summary>
-    /// <param name="initialValue">The value to convert.</param>
-    /// <param name="culture">The culture to use when converting.</param>
-    /// <param name="targetType">The type to convert the value to.</param>
-    /// <returns>The converted type.</returns>
-    public static object Convert(object initialValue, CultureInfo culture, Type targetType)
-    {
-      if (initialValue == null)
-        throw new ArgumentNullException("initialValue");
-
-      if (ReflectionUtils.IsNullableType(targetType))
-        targetType = Nullable.GetUnderlyingType(targetType);
-
-      Type initialType = initialValue.GetType();
-
-      if (targetType == initialType)
-        return initialValue;
-
-      // use Convert.ChangeType if both types are IConvertible
-      if (ConvertUtils.IsConvertible(initialValue) && ConvertUtils.IsConvertible(targetType))
-      {
-        if (targetType.IsEnum())
-        {
-          if (initialValue is string)
-            return Enum.Parse(targetType, initialValue.ToString(), true);
-          else if (IsInteger(initialValue))
-            return Enum.ToObject(targetType, initialValue);
-        }
-
-        return System.Convert.ChangeType(initialValue, targetType, culture);
-      }
-
-      if (initialValue is string && typeof(Type).IsAssignableFrom(targetType))
-        return Type.GetType((string) initialValue, true);
-
-      if (targetType.IsInterface() || targetType.IsGenericTypeDefinition() || targetType.IsAbstract())
-        throw new ArgumentException("Target type {0} is not a value type or a non-abstract class.".FormatWith(CultureInfo.InvariantCulture, targetType), "targetType");
-
-#if !PocketPC && !NET20
-      if (initialValue is DateTime && targetType == typeof(DateTimeOffset))
-        return new DateTimeOffset((DateTime)initialValue);
-#endif
-
-      if (initialValue is string)
-      {
-        if (targetType == typeof (Guid))
-          return new Guid((string) initialValue);
-        if (targetType == typeof (Uri))
-          return new Uri((string) initialValue);
-        if (targetType == typeof (TimeSpan))
-#if !(NET35 || NET20 || SILVERLIGHT)
-          return TimeSpan.Parse((string) initialValue, CultureInfo.InvariantCulture);
-#else
-          return TimeSpan.Parse((string)initialValue);
-#endif
-      }
-
-#if !PocketPC && !NETFX_CORE
-      // see if source or target types have a TypeConverter that converts between the two
-      TypeConverter toConverter = GetConverter(initialType);
-
-      if (toConverter != null && toConverter.CanConvertTo(targetType))
-      {
-#if !SILVERLIGHT
-        return toConverter.ConvertTo(null, culture, initialValue, targetType);
-#else
-        return toConverter.ConvertTo(initialValue, targetType);
-#endif
-      }
-
-      TypeConverter fromConverter = GetConverter(targetType);
-
-      if (fromConverter != null && fromConverter.CanConvertFrom(initialType))
-      {
-#if !SILVERLIGHT
-        return fromConverter.ConvertFrom(null, culture, initialValue);
-#else
-        return fromConverter.ConvertFrom(initialValue);
-#endif
-      }
-#endif
-#if !NETFX_CORE
-      // handle DBNull and INullable
-      if (initialValue == DBNull.Value)
-      {
-        if (ReflectionUtils.IsNullable(targetType))
-          return EnsureTypeAssignable(null, initialType, targetType);
-        
-        throw new Exception("Can not convert null {0} into non-nullable {1}.".FormatWith(CultureInfo.InvariantCulture, initialType, targetType));
-      }
-#endif
-#if !SILVERLIGHT && !NETFX_CORE
-      if (initialValue is INullable)
-        return EnsureTypeAssignable(ToValue((INullable)initialValue), initialType, targetType);
-#endif
-
-      throw new Exception("Can not convert from {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, initialType, targetType));
-    }
-    #endregion
-
-    #region TryConvert
-    /// <summary>
-    /// Converts the value to the specified type.
-    /// </summary>
-    /// <param name="initialValue">The value to convert.</param>
-    /// <param name="culture">The culture to use when converting.</param>
-    /// <param name="targetType">The type to convert the value to.</param>
-    /// <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
-    /// <returns>
-    /// 	<c>true</c> if <c>initialValue</c> was converted successfully; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool TryConvert(object initialValue, CultureInfo culture, Type targetType, out object convertedValue)
-    {
-      return MiscellaneousUtils.TryAction<object>(delegate { return Convert(initialValue, culture, targetType); }, out convertedValue);
-    }
-    #endregion
-
-    #region ConvertOrCast
-    /// <summary>
-    /// Converts the value to the specified type. If the value is unable to be converted, the
-    /// value is checked whether it assignable to the specified type.
-    /// </summary>
-    /// <param name="initialValue">The value to convert.</param>
-    /// <param name="culture">The culture to use when converting.</param>
-    /// <param name="targetType">The type to convert or cast the value to.</param>
-    /// <returns>
-    /// The converted type. If conversion was unsuccessful, the initial value
-    /// is returned if assignable to the target type.
-    /// </returns>
-    public static object ConvertOrCast(object initialValue, CultureInfo culture, Type targetType)
-    {
-      object convertedValue;
-
-      if (targetType == typeof(object))
-        return initialValue;
-
-      if (initialValue == null && ReflectionUtils.IsNullable(targetType))
-        return null;
-
-      if (TryConvert(initialValue, culture, targetType, out convertedValue))
-        return convertedValue;
-
-      return EnsureTypeAssignable(initialValue, ReflectionUtils.GetObjectType(initialValue), targetType);
-    }
-    #endregion
-
-    private static object EnsureTypeAssignable(object value, Type initialType, Type targetType)
-    {
-      Type valueType = (value != null) ? value.GetType() : null;
-
-      if (value != null)
-      {
-        if (targetType.IsAssignableFrom(valueType))
-          return value;
-
-        Func<object, object> castConverter = CastConverters.Get(new TypeConvertKey(valueType, targetType));
-        if (castConverter != null)
-          return castConverter(value);
-      }
-      else
-      {
-        if (ReflectionUtils.IsNullable(targetType))
-          return null;
-      }
-
-      throw new Exception("Could not cast or convert from {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, (initialType != null) ? initialType.ToString() : "{null}", targetType));
-    }
-
-#if !SILVERLIGHT && !NETFX_CORE
-    public static object ToValue(INullable nullableValue)
-    {
-      if (nullableValue == null)
-        return null;
-      else if (nullableValue is SqlInt32)
-        return ToValue((SqlInt32)nullableValue);
-      else if (nullableValue is SqlInt64)
-        return ToValue((SqlInt64)nullableValue);
-      else if (nullableValue is SqlBoolean)
-        return ToValue((SqlBoolean)nullableValue);
-      else if (nullableValue is SqlString)
-        return ToValue((SqlString)nullableValue);
-      else if (nullableValue is SqlDateTime)
-        return ToValue((SqlDateTime)nullableValue);
-
-      throw new Exception("Unsupported INullable type: {0}".FormatWith(CultureInfo.InvariantCulture, nullableValue.GetType()));
-    }
-#endif
-
-#if !PocketPC && !NETFX_CORE
-    internal static TypeConverter GetConverter(Type t)
-    {
-      return JsonTypeReflector.GetTypeConverter(t);
-    }
-#endif
-
-    public static bool IsInteger(object value)
-    {
-      switch (GetTypeCode(value))
-      {
-        case TypeCode.SByte:
-        case TypeCode.Byte:
-        case TypeCode.Int16:
-        case TypeCode.UInt16:
-        case TypeCode.Int32:
-        case TypeCode.UInt32:
-        case TypeCode.Int64:
-        case TypeCode.UInt64:
-          return true;
-        default:
-          return false;
-      }
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Globalization;
+using System.ComponentModel;
+using Newtonsoft.Json.Serialization;
+using System.Reflection;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+
+#if !(SILVERLIGHT || NETFX_CORE)
+using System.Data.SqlTypes;
+#endif
+#if NETFX_CORE
+using IConvertible = Newtonsoft.Json.Utilities.Convertible;
+#endif
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class Convertible
+  {
+    private object _underlyingValue;
+
+    public Convertible(object o)
+    {
+      _underlyingValue = o;
+    }
+
+    public TypeCode GetTypeCode()
+    {
+      return ConvertUtils.GetTypeCode(_underlyingValue);
+    }
+
+    public bool ToBoolean(IFormatProvider provider)
+    {
+      return Convert.ToBoolean(_underlyingValue, provider);
+    }
+    public byte ToByte(IFormatProvider provider)
+    {
+      return Convert.ToByte(_underlyingValue, provider);
+    }
+    public char ToChar(IFormatProvider provider)
+    {
+      return Convert.ToChar(_underlyingValue, provider);
+    }
+    public DateTime ToDateTime(IFormatProvider provider)
+    {
+      return Convert.ToDateTime(_underlyingValue, provider);
+    }
+    public decimal ToDecimal(IFormatProvider provider)
+    {
+      return Convert.ToDecimal(_underlyingValue, provider);
+    }
+    public double ToDouble(IFormatProvider provider)
+    {
+      return Convert.ToDouble(_underlyingValue, provider);
+    }
+    public short ToInt16(IFormatProvider provider)
+    {
+      return Convert.ToInt16(_underlyingValue, provider);
+    }
+    public int ToInt32(IFormatProvider provider)
+    {
+      return Convert.ToInt32(_underlyingValue, provider);
+    }
+    public long ToInt64(IFormatProvider provider)
+    {
+      return Convert.ToInt64(_underlyingValue, provider);
+    }
+    public sbyte ToSByte(IFormatProvider provider)
+    {
+      return Convert.ToSByte(_underlyingValue, provider);
+    }
+    public float ToSingle(IFormatProvider provider)
+    {
+      return Convert.ToSingle(_underlyingValue, provider);
+    }
+    public string ToString(IFormatProvider provider)
+    {
+      return Convert.ToString(_underlyingValue, provider);
+    }
+    public object ToType(Type conversionType, IFormatProvider provider)
+    {
+      return Convert.ChangeType(_underlyingValue, conversionType, provider);
+    }
+    public ushort ToUInt16(IFormatProvider provider)
+    {
+      return Convert.ToUInt16(_underlyingValue, provider);
+    }
+    public uint ToUInt32(IFormatProvider provider)
+    {
+      return Convert.ToUInt32(_underlyingValue, provider);
+    }
+    public ulong ToUInt64(IFormatProvider provider)
+    {
+      return Convert.ToUInt64(_underlyingValue, provider);
+    }
+  }
+
+  internal static class ConvertUtils
+  {
+    public static TypeCode GetTypeCode(this IConvertible convertible)
+    {
+#if !NETFX_CORE
+      return convertible.GetTypeCode();
+#else
+      return GetTypeCode((object)convertible);
+#endif
+    }
+
+    public static TypeCode GetTypeCode(object o)
+    {
+#if !NETFX_CORE
+      return System.Convert.GetTypeCode(o);
+#else
+      return GetTypeCode(o.GetType());
+#endif
+    }
+
+    public static TypeCode GetTypeCode(Type t)
+    {
+#if !NETFX_CORE
+      return Type.GetTypeCode(t);
+#else
+      if (t == typeof(bool))
+        return TypeCode.Boolean;
+      if (t == typeof(byte))
+        return TypeCode.Byte;
+      if (t == typeof(char))
+        return TypeCode.Char;
+      if (t == typeof(DateTime))
+        return TypeCode.DateTime;
+      if (t == typeof(decimal))
+        return TypeCode.Decimal;
+      if (t == typeof(double))
+        return TypeCode.Double;
+      if (t == typeof(short))
+        return TypeCode.Int16;
+      if (t == typeof(int))
+        return TypeCode.Int32;
+      if (t == typeof(long))
+        return TypeCode.Int64;
+      if (t == typeof(sbyte))
+        return TypeCode.SByte;
+      if (t == typeof(float))
+        return TypeCode.Single;
+      if (t == typeof(string))
+        return TypeCode.String;
+      if (t == typeof(ushort))
+        return TypeCode.UInt16;
+      if (t == typeof(uint))
+        return TypeCode.UInt32;
+      if (t == typeof(ulong))
+        return TypeCode.UInt64;
+      if (t.IsEnum())
+        return GetTypeCode(Enum.GetUnderlyingType(t));
+
+      return TypeCode.Object;
+#endif
+    }
+
+    public static IConvertible ToConvertible(object o)
+    {
+#if !NETFX_CORE
+      return o as IConvertible;
+#else
+      if (!IsConvertible(o))
+        return null;
+
+      return new IConvertible(o);
+#endif
+    }
+
+    public static bool IsConvertible(object o)
+    {
+#if !NETFX_CORE
+      return o is IConvertible;
+#else
+      if (o == null)
+        return false;
+
+      return (
+        o is bool || o is byte || o is char || o is DateTime || o is decimal || o is double || o is short || o is int ||
+        o is long || o is sbyte || o is float || o is string || o is ushort || o is uint || o is ulong || o is Enum);
+#endif
+    }
+
+    public static bool IsConvertible(Type t)
+    {
+#if !NETFX_CORE
+      return typeof(IConvertible).IsAssignableFrom(t);
+#else
+      return (
+        t == typeof(bool) || t == typeof(byte) || t == typeof(char) || t == typeof(DateTime) || t == typeof(decimal) || t == typeof(double) || t == typeof(short) || t == typeof(int) ||
+        t == typeof(long) || t == typeof(sbyte) || t == typeof(float) || t == typeof(string) || t == typeof(ushort) || t == typeof(uint) || t == typeof(ulong) || t.IsEnum());
+#endif
+    }
+
+    internal struct TypeConvertKey : IEquatable<TypeConvertKey>
+    {
+      private readonly Type _initialType;
+      private readonly Type _targetType;
+
+      public Type InitialType
+      {
+        get { return _initialType; }
+      }
+
+      public Type TargetType
+      {
+        get { return _targetType; }
+      }
+
+      public TypeConvertKey(Type initialType, Type targetType)
+      {
+        _initialType = initialType;
+        _targetType = targetType;
+      }
+
+      public override int GetHashCode()
+      {
+        return _initialType.GetHashCode() ^ _targetType.GetHashCode();
+      }
+
+      public override bool Equals(object obj)
+      {
+        if (!(obj is TypeConvertKey))
+          return false;
+
+        return Equals((TypeConvertKey)obj);
+      }
+
+      public bool Equals(TypeConvertKey other)
+      {
+        return (_initialType == other._initialType && _targetType == other._targetType);
+      }
+    }
+
+    private static readonly ThreadSafeStore<TypeConvertKey, Func<object, object>> CastConverters =
+      new ThreadSafeStore<TypeConvertKey, Func<object, object>>(CreateCastConverter);
+
+    private static Func<object, object> CreateCastConverter(TypeConvertKey t)
+    {
+      MethodInfo castMethodInfo = t.TargetType.GetMethod("op_Implicit", new[] { t.InitialType });
+      if (castMethodInfo == null)
+        castMethodInfo = t.TargetType.GetMethod("op_Explicit", new[] { t.InitialType });
+
+      if (castMethodInfo == null)
+        return null;
+
+      MethodCall<object, object> call = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(castMethodInfo);
+
+      return o => call(null, o);
+    }
+
+    #region Convert
+    /// <summary>
+    /// Converts the value to the specified type.
+    /// </summary>
+    /// <param name="initialValue">The value to convert.</param>
+    /// <param name="culture">The culture to use when converting.</param>
+    /// <param name="targetType">The type to convert the value to.</param>
+    /// <returns>The converted type.</returns>
+    public static object Convert(object initialValue, CultureInfo culture, Type targetType)
+    {
+      if (initialValue == null)
+        throw new ArgumentNullException("initialValue");
+
+      if (ReflectionUtils.IsNullableType(targetType))
+        targetType = Nullable.GetUnderlyingType(targetType);
+
+      Type initialType = initialValue.GetType();
+
+      if (targetType == initialType)
+        return initialValue;
+
+      // use Convert.ChangeType if both types are IConvertible
+      if (ConvertUtils.IsConvertible(initialValue) && ConvertUtils.IsConvertible(targetType))
+      {
+        if (targetType.IsEnum())
+        {
+          if (initialValue is string)
+            return Enum.Parse(targetType, initialValue.ToString(), true);
+          else if (IsInteger(initialValue))
+            return Enum.ToObject(targetType, initialValue);
+        }
+
+        return System.Convert.ChangeType(initialValue, targetType, culture);
+      }
+
+      if (initialValue is string && typeof(Type).IsAssignableFrom(targetType))
+        return Type.GetType((string) initialValue, true);
+
+      if (targetType.IsInterface() || targetType.IsGenericTypeDefinition() || targetType.IsAbstract())
+        throw new ArgumentException("Target type {0} is not a value type or a non-abstract class.".FormatWith(CultureInfo.InvariantCulture, targetType), "targetType");
+
+#if !PocketPC && !NET20
+      if (initialValue is DateTime && targetType == typeof(DateTimeOffset))
+        return new DateTimeOffset((DateTime)initialValue);
+#endif
+
+      if (initialValue is string)
+      {
+        if (targetType == typeof (Guid))
+          return new Guid((string) initialValue);
+        if (targetType == typeof (Uri))
+          return new Uri((string) initialValue);
+        if (targetType == typeof (TimeSpan))
+#if !(NET35 || NET20 || SILVERLIGHT)
+          return TimeSpan.Parse((string) initialValue, CultureInfo.InvariantCulture);
+#else
+          return TimeSpan.Parse((string)initialValue);
+#endif
+      }
+
+#if !PocketPC && !NETFX_CORE
+      // see if source or target types have a TypeConverter that converts between the two
+      TypeConverter toConverter = GetConverter(initialType);
+
+      if (toConverter != null && toConverter.CanConvertTo(targetType))
+      {
+#if !SILVERLIGHT
+        return toConverter.ConvertTo(null, culture, initialValue, targetType);
+#else
+        return toConverter.ConvertTo(initialValue, targetType);
+#endif
+      }
+
+      TypeConverter fromConverter = GetConverter(targetType);
+
+      if (fromConverter != null && fromConverter.CanConvertFrom(initialType))
+      {
+#if !SILVERLIGHT
+        return fromConverter.ConvertFrom(null, culture, initialValue);
+#else
+        return fromConverter.ConvertFrom(initialValue);
+#endif
+      }
+#endif
+#if !NETFX_CORE
+      // handle DBNull and INullable
+      if (initialValue == DBNull.Value)
+      {
+        if (ReflectionUtils.IsNullable(targetType))
+          return EnsureTypeAssignable(null, initialType, targetType);
+        
+        throw new Exception("Can not convert null {0} into non-nullable {1}.".FormatWith(CultureInfo.InvariantCulture, initialType, targetType));
+      }
+#endif
+#if !SILVERLIGHT && !NETFX_CORE
+      if (initialValue is INullable)
+        return EnsureTypeAssignable(ToValue((INullable)initialValue), initialType, targetType);
+#endif
+
+      throw new Exception("Can not convert from {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, initialType, targetType));
+    }
+    #endregion
+
+    #region TryConvert
+    /// <summary>
+    /// Converts the value to the specified type.
+    /// </summary>
+    /// <param name="initialValue">The value to convert.</param>
+    /// <param name="culture">The culture to use when converting.</param>
+    /// <param name="targetType">The type to convert the value to.</param>
+    /// <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
+    /// <returns>
+    /// 	<c>true</c> if <c>initialValue</c> was converted successfully; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool TryConvert(object initialValue, CultureInfo culture, Type targetType, out object convertedValue)
+    {
+      return MiscellaneousUtils.TryAction<object>(delegate { return Convert(initialValue, culture, targetType); }, out convertedValue);
+    }
+    #endregion
+
+    #region ConvertOrCast
+    /// <summary>
+    /// Converts the value to the specified type. If the value is unable to be converted, the
+    /// value is checked whether it assignable to the specified type.
+    /// </summary>
+    /// <param name="initialValue">The value to convert.</param>
+    /// <param name="culture">The culture to use when converting.</param>
+    /// <param name="targetType">The type to convert or cast the value to.</param>
+    /// <returns>
+    /// The converted type. If conversion was unsuccessful, the initial value
+    /// is returned if assignable to the target type.
+    /// </returns>
+    public static object ConvertOrCast(object initialValue, CultureInfo culture, Type targetType)
+    {
+      object convertedValue;
+
+      if (targetType == typeof(object))
+        return initialValue;
+
+      if (initialValue == null && ReflectionUtils.IsNullable(targetType))
+        return null;
+
+      if (TryConvert(initialValue, culture, targetType, out convertedValue))
+        return convertedValue;
+
+      return EnsureTypeAssignable(initialValue, ReflectionUtils.GetObjectType(initialValue), targetType);
+    }
+    #endregion
+
+    private static object EnsureTypeAssignable(object value, Type initialType, Type targetType)
+    {
+      Type valueType = (value != null) ? value.GetType() : null;
+
+      if (value != null)
+      {
+        if (targetType.IsAssignableFrom(valueType))
+          return value;
+
+        Func<object, object> castConverter = CastConverters.Get(new TypeConvertKey(valueType, targetType));
+        if (castConverter != null)
+          return castConverter(value);
+      }
+      else
+      {
+        if (ReflectionUtils.IsNullable(targetType))
+          return null;
+      }
+
+      throw new Exception("Could not cast or convert from {0} to {1}.".FormatWith(CultureInfo.InvariantCulture, (initialType != null) ? initialType.ToString() : "{null}", targetType));
+    }
+
+#if !SILVERLIGHT && !NETFX_CORE
+    public static object ToValue(INullable nullableValue)
+    {
+      if (nullableValue == null)
+        return null;
+      else if (nullableValue is SqlInt32)
+        return ToValue((SqlInt32)nullableValue);
+      else if (nullableValue is SqlInt64)
+        return ToValue((SqlInt64)nullableValue);
+      else if (nullableValue is SqlBoolean)
+        return ToValue((SqlBoolean)nullableValue);
+      else if (nullableValue is SqlString)
+        return ToValue((SqlString)nullableValue);
+      else if (nullableValue is SqlDateTime)
+        return ToValue((SqlDateTime)nullableValue);
+
+      throw new Exception("Unsupported INullable type: {0}".FormatWith(CultureInfo.InvariantCulture, nullableValue.GetType()));
+    }
+#endif
+
+#if !PocketPC && !NETFX_CORE
+    internal static TypeConverter GetConverter(Type t)
+    {
+      return JsonTypeReflector.GetTypeConverter(t);
+    }
+#endif
+
+    public static bool IsInteger(object value)
+    {
+      switch (GetTypeCode(value))
+      {
+        case TypeCode.SByte:
+        case TypeCode.Byte:
+        case TypeCode.Int16:
+        case TypeCode.UInt16:
+        case TypeCode.Int32:
+        case TypeCode.UInt32:
+        case TypeCode.Int64:
+        case TypeCode.UInt64:
+          return true;
+        default:
+          return false;
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
@@ -1,42 +1,42 @@
-﻿using System;
-using System.Xml;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class DateTimeUtils
-  {
-    public static string GetUtcOffsetText(this DateTime d)
-    {
-      TimeSpan utcOffset = d.GetUtcOffset();
-
-      return utcOffset.Hours.ToString("+00;-00", CultureInfo.InvariantCulture) + ":" + utcOffset.Minutes.ToString("00;00", CultureInfo.InvariantCulture);
-    }
-
-    public static TimeSpan GetUtcOffset(this DateTime d)
-    {
-#if PocketPC || NET20
-      return TimeZone.CurrentTimeZone.GetUtcOffset(d);
-#else
-      return TimeZoneInfo.Local.GetUtcOffset(d);
-#endif
-    }
-
-#if !NETFX_CORE
-    public static XmlDateTimeSerializationMode ToSerializationMode(DateTimeKind kind)
-    {
-      switch (kind)
-      {
-        case DateTimeKind.Local:
-          return XmlDateTimeSerializationMode.Local;
-        case DateTimeKind.Unspecified:
-          return XmlDateTimeSerializationMode.Unspecified;
-        case DateTimeKind.Utc:
-          return XmlDateTimeSerializationMode.Utc;
-        default:
-          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("kind", kind, "Unexpected DateTimeKind value.");
-      }
-    }
-#endif
-  }
-}
+﻿using System;
+using System.Xml;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class DateTimeUtils
+  {
+    public static string GetUtcOffsetText(this DateTime d)
+    {
+      TimeSpan utcOffset = d.GetUtcOffset();
+
+      return utcOffset.Hours.ToString("+00;-00", CultureInfo.InvariantCulture) + ":" + utcOffset.Minutes.ToString("00;00", CultureInfo.InvariantCulture);
+    }
+
+    public static TimeSpan GetUtcOffset(this DateTime d)
+    {
+#if PocketPC || NET20
+      return TimeZone.CurrentTimeZone.GetUtcOffset(d);
+#else
+      return TimeZoneInfo.Local.GetUtcOffset(d);
+#endif
+    }
+
+#if !NETFX_CORE
+    public static XmlDateTimeSerializationMode ToSerializationMode(DateTimeKind kind)
+    {
+      switch (kind)
+      {
+        case DateTimeKind.Local:
+          return XmlDateTimeSerializationMode.Local;
+        case DateTimeKind.Unspecified:
+          return XmlDateTimeSerializationMode.Unspecified;
+        case DateTimeKind.Utc:
+          return XmlDateTimeSerializationMode.Utc;
+        default:
+          throw MiscellaneousUtils.CreateArgumentOutOfRangeException("kind", kind, "Unexpected DateTimeKind value.");
+      }
+    }
+#endif
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DictionaryWrapper.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DictionaryWrapper.cs
@@ -1,493 +1,493 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Collections;
-using System.Threading;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Utilities
-{
-#if NETFX_CORE
-  internal interface IDictionary : ICollection
-  {
-    object this[object key] { get; set; }
-    void Add(object key, object value);
-    new IDictionaryEnumerator GetEnumerator();
-  }
-
-  internal interface IDictionaryEnumerator : IEnumerator
-  {
-    DictionaryEntry Entry { get; }
-    object Key { get; }
-    object Value { get; }
-  }
-
-  internal struct DictionaryEntry
-  {
-    private readonly object _key;
-    private readonly object _value;
-
-    public DictionaryEntry(object key, object value)
-    {
-      _key = key;
-      _value = value;
-    }
-
-    public object Key
-    {
-      get { return _key; }
-    }
-
-    public object Value
-    {
-      get { return _value; }
-    }
-  }
-#endif
-
-  internal interface IWrappedDictionary
-    : IDictionary
-  {
-    object UnderlyingDictionary { get; }
-  }
-
-  internal class DictionaryWrapper<TKey, TValue> : IDictionary<TKey, TValue>, IWrappedDictionary
-  {
-#if !(NETFX_CORE)
-    private readonly IDictionary _dictionary;
-#endif
-    private readonly IDictionary<TKey, TValue> _genericDictionary;
-    private object _syncRoot;
-
-#if !(NETFX_CORE)
-    public DictionaryWrapper(IDictionary dictionary)
-    {
-      ValidationUtils.ArgumentNotNull(dictionary, "dictionary");
-
-      _dictionary = dictionary;
-    }
-#endif
-
-    public DictionaryWrapper(IDictionary<TKey, TValue> dictionary)
-    {
-      ValidationUtils.ArgumentNotNull(dictionary, "dictionary");
-
-      _genericDictionary = dictionary;
-    }
-
-    public void Add(TKey key, TValue value)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        _dictionary.Add(key, value);
-      else
-#endif
-        _genericDictionary.Add(key, value);
-    }
-
-    public bool ContainsKey(TKey key)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        return _dictionary.Contains(key);
-      else
-#endif
-        return _genericDictionary.ContainsKey(key);
-    }
-
-    public ICollection<TKey> Keys
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return _dictionary.Keys.Cast<TKey>().ToList();
-        else
-#endif
-          return _genericDictionary.Keys;
-      }
-    }
-
-    public bool Remove(TKey key)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-      {
-        if (_dictionary.Contains(key))
-        {
-          _dictionary.Remove(key);
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-#endif
-
-      return _genericDictionary.Remove(key);
-    }
-
-    public bool TryGetValue(TKey key, out TValue value)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-      {
-        if (!_dictionary.Contains(key))
-        {
-          value = default(TValue);
-          return false;
-        }
-        else
-        {
-          value = (TValue)_dictionary[key];
-          return true;
-        }
-      }
-#endif
-
-      return _genericDictionary.TryGetValue(key, out value);
-    }
-
-    public ICollection<TValue> Values
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return _dictionary.Values.Cast<TValue>().ToList();
-        else
-#endif
-          return _genericDictionary.Values;
-      }
-    }
-
-    public TValue this[TKey key]
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return (TValue)_dictionary[key];
-#endif
-        return _genericDictionary[key];
-      }
-      set
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          _dictionary[key] = value;
-        else
-#endif
-          _genericDictionary[key] = value;
-      }
-    }
-
-    public void Add(KeyValuePair<TKey, TValue> item)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        ((IList)_dictionary).Add(item);
-      else
-#endif
-        _genericDictionary.Add(item);
-    }
-
-    public void Clear()
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        _dictionary.Clear();
-      else
-#endif
-        _genericDictionary.Clear();
-    }
-
-    public bool Contains(KeyValuePair<TKey, TValue> item)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        return ((IList)_dictionary).Contains(item);
-      else
-#endif
-        return _genericDictionary.Contains(item);
-    }
-
-    public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-      {
-        foreach (DictionaryEntry item in _dictionary)
-        {
-          array[arrayIndex++] = new KeyValuePair<TKey, TValue>((TKey)item.Key, (TValue)item.Value);
-        }
-      }
-      else
-#endif
-      {
-        _genericDictionary.CopyTo(array, arrayIndex);
-      }
-    }
-
-    public int Count
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return _dictionary.Count;
-        else
-#endif
-          return _genericDictionary.Count;
-      }
-    }
-
-    public bool IsReadOnly
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return _dictionary.IsReadOnly;
-        else
-#endif
-          return _genericDictionary.IsReadOnly;
-      }
-    }
-
-    public bool Remove(KeyValuePair<TKey, TValue> item)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-      {
-        if (_dictionary.Contains(item.Key))
-        {
-          object value = _dictionary[item.Key];
-
-          if (object.Equals(value, item.Value))
-          {
-            _dictionary.Remove(item.Key);
-            return true;
-          }
-          else
-          {
-            return false;
-          }
-        }
-        else
-        {
-          return true;
-        }
-      }
-      else
-#endif
-      {
-        return _genericDictionary.Remove(item);
-      }
-    }
-
-    public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        return _dictionary.Cast<DictionaryEntry>().Select(de => new KeyValuePair<TKey, TValue>((TKey)de.Key, (TValue)de.Value)).GetEnumerator();
-      else
-#endif
-        return _genericDictionary.GetEnumerator();
-    }
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return GetEnumerator();
-    }
-
-    void IDictionary.Add(object key, object value)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        _dictionary.Add(key, value);
-      else
-#endif
-        _genericDictionary.Add((TKey)key, (TValue)value);
-    }
-
-    object IDictionary.this[object key]
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return _dictionary[key];
-        else
-#endif
-          return _genericDictionary[(TKey)key];
-      }
-      set
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          _dictionary[key] = value;
-        else
-#endif
-          _genericDictionary[(TKey)key] = (TValue)value;
-      }
-    }
-
-    private struct DictionaryEnumerator<TEnumeratorKey, TEnumeratorValue> : IDictionaryEnumerator
-    {
-      private readonly IEnumerator<KeyValuePair<TEnumeratorKey, TEnumeratorValue>> _e;
-
-      public DictionaryEnumerator(IEnumerator<KeyValuePair<TEnumeratorKey, TEnumeratorValue>> e)
-      {
-        ValidationUtils.ArgumentNotNull(e, "e");
-        _e = e;
-      }
-
-      public DictionaryEntry Entry
-      {
-        get { return (DictionaryEntry)Current; }
-      }
-
-      public object Key
-      {
-        get { return Entry.Key; }
-      }
-
-      public object Value
-      {
-        get { return Entry.Value; }
-      }
-
-      public object Current
-      {
-        get { return new DictionaryEntry(_e.Current.Key, _e.Current.Value); }
-      }
-
-      public bool MoveNext()
-      {
-        return _e.MoveNext();
-      }
-
-      public void Reset()
-      {
-        _e.Reset();
-      }
-    }
-
-    IDictionaryEnumerator IDictionary.GetEnumerator()
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        return _dictionary.GetEnumerator();
-      else
-#endif
-        return new DictionaryEnumerator<TKey, TValue>(_genericDictionary.GetEnumerator());
-    }
-
-#if !NETFX_CORE
-    bool IDictionary.Contains(object key)
-    {
-      if (_genericDictionary != null)
-        return _genericDictionary.ContainsKey((TKey)key);
-      else
-        return _dictionary.Contains(key);
-    }
-
-    bool IDictionary.IsFixedSize
-    {
-      get
-      {
-        if (_genericDictionary != null)
-          return false;
-        else
-          return _dictionary.IsFixedSize;
-      }
-    }
-
-    ICollection IDictionary.Keys
-    {
-      get
-      {
-        if (_genericDictionary != null)
-          return _genericDictionary.Keys.ToList();
-        else
-          return _dictionary.Keys;
-      }
-    }
-#endif
-
-    public void Remove(object key)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        _dictionary.Remove(key);
-      else
-#endif
-        _genericDictionary.Remove((TKey)key);
-    }
-
-#if !NETFX_CORE
-    ICollection IDictionary.Values
-    {
-      get
-      {
-        if (_genericDictionary != null)
-          return _genericDictionary.Values.ToList();
-        else
-          return _dictionary.Values;
-      }
-    }
-#endif
-
-    void ICollection.CopyTo(Array array, int index)
-    {
-#if !NETFX_CORE
-      if (_dictionary != null)
-        _dictionary.CopyTo(array, index);
-      else
-#endif
-        _genericDictionary.CopyTo((KeyValuePair<TKey, TValue>[])array, index);
-    }
-
-    bool ICollection.IsSynchronized
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return _dictionary.IsSynchronized;
-        else
-#endif
-          return false;
-      }
-    }
-
-    object ICollection.SyncRoot
-    {
-      get
-      {
-        if (_syncRoot == null)
-          Interlocked.CompareExchange(ref _syncRoot, new object(), null);
-
-        return _syncRoot;
-      }
-    }
-
-    public object UnderlyingDictionary
-    {
-      get
-      {
-#if !NETFX_CORE
-        if (_dictionary != null)
-          return _dictionary;
-        else
-#endif
-          return _genericDictionary;
-      }
-    }
-  }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Collections;
+using System.Threading;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Utilities
+{
+#if NETFX_CORE
+  internal interface IDictionary : ICollection
+  {
+    object this[object key] { get; set; }
+    void Add(object key, object value);
+    new IDictionaryEnumerator GetEnumerator();
+  }
+
+  internal interface IDictionaryEnumerator : IEnumerator
+  {
+    DictionaryEntry Entry { get; }
+    object Key { get; }
+    object Value { get; }
+  }
+
+  internal struct DictionaryEntry
+  {
+    private readonly object _key;
+    private readonly object _value;
+
+    public DictionaryEntry(object key, object value)
+    {
+      _key = key;
+      _value = value;
+    }
+
+    public object Key
+    {
+      get { return _key; }
+    }
+
+    public object Value
+    {
+      get { return _value; }
+    }
+  }
+#endif
+
+  internal interface IWrappedDictionary
+    : IDictionary
+  {
+    object UnderlyingDictionary { get; }
+  }
+
+  internal class DictionaryWrapper<TKey, TValue> : IDictionary<TKey, TValue>, IWrappedDictionary
+  {
+#if !(NETFX_CORE)
+    private readonly IDictionary _dictionary;
+#endif
+    private readonly IDictionary<TKey, TValue> _genericDictionary;
+    private object _syncRoot;
+
+#if !(NETFX_CORE)
+    public DictionaryWrapper(IDictionary dictionary)
+    {
+      ValidationUtils.ArgumentNotNull(dictionary, "dictionary");
+
+      _dictionary = dictionary;
+    }
+#endif
+
+    public DictionaryWrapper(IDictionary<TKey, TValue> dictionary)
+    {
+      ValidationUtils.ArgumentNotNull(dictionary, "dictionary");
+
+      _genericDictionary = dictionary;
+    }
+
+    public void Add(TKey key, TValue value)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        _dictionary.Add(key, value);
+      else
+#endif
+        _genericDictionary.Add(key, value);
+    }
+
+    public bool ContainsKey(TKey key)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        return _dictionary.Contains(key);
+      else
+#endif
+        return _genericDictionary.ContainsKey(key);
+    }
+
+    public ICollection<TKey> Keys
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return _dictionary.Keys.Cast<TKey>().ToList();
+        else
+#endif
+          return _genericDictionary.Keys;
+      }
+    }
+
+    public bool Remove(TKey key)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+      {
+        if (_dictionary.Contains(key))
+        {
+          _dictionary.Remove(key);
+          return true;
+        }
+        else
+        {
+          return false;
+        }
+      }
+#endif
+
+      return _genericDictionary.Remove(key);
+    }
+
+    public bool TryGetValue(TKey key, out TValue value)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+      {
+        if (!_dictionary.Contains(key))
+        {
+          value = default(TValue);
+          return false;
+        }
+        else
+        {
+          value = (TValue)_dictionary[key];
+          return true;
+        }
+      }
+#endif
+
+      return _genericDictionary.TryGetValue(key, out value);
+    }
+
+    public ICollection<TValue> Values
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return _dictionary.Values.Cast<TValue>().ToList();
+        else
+#endif
+          return _genericDictionary.Values;
+      }
+    }
+
+    public TValue this[TKey key]
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return (TValue)_dictionary[key];
+#endif
+        return _genericDictionary[key];
+      }
+      set
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          _dictionary[key] = value;
+        else
+#endif
+          _genericDictionary[key] = value;
+      }
+    }
+
+    public void Add(KeyValuePair<TKey, TValue> item)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        ((IList)_dictionary).Add(item);
+      else
+#endif
+        _genericDictionary.Add(item);
+    }
+
+    public void Clear()
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        _dictionary.Clear();
+      else
+#endif
+        _genericDictionary.Clear();
+    }
+
+    public bool Contains(KeyValuePair<TKey, TValue> item)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        return ((IList)_dictionary).Contains(item);
+      else
+#endif
+        return _genericDictionary.Contains(item);
+    }
+
+    public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+      {
+        foreach (DictionaryEntry item in _dictionary)
+        {
+          array[arrayIndex++] = new KeyValuePair<TKey, TValue>((TKey)item.Key, (TValue)item.Value);
+        }
+      }
+      else
+#endif
+      {
+        _genericDictionary.CopyTo(array, arrayIndex);
+      }
+    }
+
+    public int Count
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return _dictionary.Count;
+        else
+#endif
+          return _genericDictionary.Count;
+      }
+    }
+
+    public bool IsReadOnly
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return _dictionary.IsReadOnly;
+        else
+#endif
+          return _genericDictionary.IsReadOnly;
+      }
+    }
+
+    public bool Remove(KeyValuePair<TKey, TValue> item)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+      {
+        if (_dictionary.Contains(item.Key))
+        {
+          object value = _dictionary[item.Key];
+
+          if (object.Equals(value, item.Value))
+          {
+            _dictionary.Remove(item.Key);
+            return true;
+          }
+          else
+          {
+            return false;
+          }
+        }
+        else
+        {
+          return true;
+        }
+      }
+      else
+#endif
+      {
+        return _genericDictionary.Remove(item);
+      }
+    }
+
+    public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        return _dictionary.Cast<DictionaryEntry>().Select(de => new KeyValuePair<TKey, TValue>((TKey)de.Key, (TValue)de.Value)).GetEnumerator();
+      else
+#endif
+        return _genericDictionary.GetEnumerator();
+    }
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return GetEnumerator();
+    }
+
+    void IDictionary.Add(object key, object value)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        _dictionary.Add(key, value);
+      else
+#endif
+        _genericDictionary.Add((TKey)key, (TValue)value);
+    }
+
+    object IDictionary.this[object key]
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return _dictionary[key];
+        else
+#endif
+          return _genericDictionary[(TKey)key];
+      }
+      set
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          _dictionary[key] = value;
+        else
+#endif
+          _genericDictionary[(TKey)key] = (TValue)value;
+      }
+    }
+
+    private struct DictionaryEnumerator<TEnumeratorKey, TEnumeratorValue> : IDictionaryEnumerator
+    {
+      private readonly IEnumerator<KeyValuePair<TEnumeratorKey, TEnumeratorValue>> _e;
+
+      public DictionaryEnumerator(IEnumerator<KeyValuePair<TEnumeratorKey, TEnumeratorValue>> e)
+      {
+        ValidationUtils.ArgumentNotNull(e, "e");
+        _e = e;
+      }
+
+      public DictionaryEntry Entry
+      {
+        get { return (DictionaryEntry)Current; }
+      }
+
+      public object Key
+      {
+        get { return Entry.Key; }
+      }
+
+      public object Value
+      {
+        get { return Entry.Value; }
+      }
+
+      public object Current
+      {
+        get { return new DictionaryEntry(_e.Current.Key, _e.Current.Value); }
+      }
+
+      public bool MoveNext()
+      {
+        return _e.MoveNext();
+      }
+
+      public void Reset()
+      {
+        _e.Reset();
+      }
+    }
+
+    IDictionaryEnumerator IDictionary.GetEnumerator()
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        return _dictionary.GetEnumerator();
+      else
+#endif
+        return new DictionaryEnumerator<TKey, TValue>(_genericDictionary.GetEnumerator());
+    }
+
+#if !NETFX_CORE
+    bool IDictionary.Contains(object key)
+    {
+      if (_genericDictionary != null)
+        return _genericDictionary.ContainsKey((TKey)key);
+      else
+        return _dictionary.Contains(key);
+    }
+
+    bool IDictionary.IsFixedSize
+    {
+      get
+      {
+        if (_genericDictionary != null)
+          return false;
+        else
+          return _dictionary.IsFixedSize;
+      }
+    }
+
+    ICollection IDictionary.Keys
+    {
+      get
+      {
+        if (_genericDictionary != null)
+          return _genericDictionary.Keys.ToList();
+        else
+          return _dictionary.Keys;
+      }
+    }
+#endif
+
+    public void Remove(object key)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        _dictionary.Remove(key);
+      else
+#endif
+        _genericDictionary.Remove((TKey)key);
+    }
+
+#if !NETFX_CORE
+    ICollection IDictionary.Values
+    {
+      get
+      {
+        if (_genericDictionary != null)
+          return _genericDictionary.Values.ToList();
+        else
+          return _dictionary.Values;
+      }
+    }
+#endif
+
+    void ICollection.CopyTo(Array array, int index)
+    {
+#if !NETFX_CORE
+      if (_dictionary != null)
+        _dictionary.CopyTo(array, index);
+      else
+#endif
+        _genericDictionary.CopyTo((KeyValuePair<TKey, TValue>[])array, index);
+    }
+
+    bool ICollection.IsSynchronized
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return _dictionary.IsSynchronized;
+        else
+#endif
+          return false;
+      }
+    }
+
+    object ICollection.SyncRoot
+    {
+      get
+      {
+        if (_syncRoot == null)
+          Interlocked.CompareExchange(ref _syncRoot, new object(), null);
+
+        return _syncRoot;
+      }
+    }
+
+    public object UnderlyingDictionary
+    {
+      get
+      {
+#if !NETFX_CORE
+        if (_dictionary != null)
+          return _dictionary;
+        else
+#endif
+          return _genericDictionary;
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicProxy.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicProxy.cs
@@ -1,87 +1,87 @@
-﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System;
-using System.Collections.Generic;
-using System.Dynamic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Text;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class DynamicProxy<T>
-  {
-    public virtual IEnumerable<string> GetDynamicMemberNames(T instance)
-    {
-      return new string[0];
-    }
-
-    public virtual bool TryBinaryOperation(T instance, BinaryOperationBinder binder, object arg, out object result)
-    {
-      result = null;
-      return false;
-    }
-
-    public virtual bool TryConvert(T instance, ConvertBinder binder, out object result)
-    {
-      result = null;
-      return false;
-    }
-
-    public virtual bool TryCreateInstance(T instance, CreateInstanceBinder binder, object[] args, out object result)
-    {
-      result = null;
-      return false;
-    }
-
-    public virtual bool TryDeleteIndex(T instance, DeleteIndexBinder binder, object[] indexes)
-    {
-      return false;
-    }
-
-    public virtual bool TryDeleteMember(T instance, DeleteMemberBinder binder)
-    {
-      return false;
-    }
-
-    public virtual bool TryGetIndex(T instance, GetIndexBinder binder, object[] indexes, out object result)
-    {
-      result = null;
-      return false;
-    }
-
-    public virtual bool TryGetMember(T instance, GetMemberBinder binder, out object result)
-    {
-      result = null;
-      return false;
-    }
-
-    public virtual bool TryInvoke(T instance, InvokeBinder binder, object[] args, out object result)
-    {
-      result = null;
-      return false;
-    }
-
-    public virtual bool TryInvokeMember(T instance, InvokeMemberBinder binder, object[] args, out object result)
-    {
-      result = null;
-      return false;
-    }
-
-    public virtual bool TrySetIndex(T instance, SetIndexBinder binder, object[] indexes, object value)
-    {
-      return false;
-    }
-
-    public virtual bool TrySetMember(T instance, SetMemberBinder binder, object value)
-    {
-      return false;
-    }
-
-    public virtual bool TryUnaryOperation(T instance, UnaryOperationBinder binder, out object result)
-    {
-      result = null;
-      return false;
-    }
-  }
-}
+﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class DynamicProxy<T>
+  {
+    public virtual IEnumerable<string> GetDynamicMemberNames(T instance)
+    {
+      return new string[0];
+    }
+
+    public virtual bool TryBinaryOperation(T instance, BinaryOperationBinder binder, object arg, out object result)
+    {
+      result = null;
+      return false;
+    }
+
+    public virtual bool TryConvert(T instance, ConvertBinder binder, out object result)
+    {
+      result = null;
+      return false;
+    }
+
+    public virtual bool TryCreateInstance(T instance, CreateInstanceBinder binder, object[] args, out object result)
+    {
+      result = null;
+      return false;
+    }
+
+    public virtual bool TryDeleteIndex(T instance, DeleteIndexBinder binder, object[] indexes)
+    {
+      return false;
+    }
+
+    public virtual bool TryDeleteMember(T instance, DeleteMemberBinder binder)
+    {
+      return false;
+    }
+
+    public virtual bool TryGetIndex(T instance, GetIndexBinder binder, object[] indexes, out object result)
+    {
+      result = null;
+      return false;
+    }
+
+    public virtual bool TryGetMember(T instance, GetMemberBinder binder, out object result)
+    {
+      result = null;
+      return false;
+    }
+
+    public virtual bool TryInvoke(T instance, InvokeBinder binder, object[] args, out object result)
+    {
+      result = null;
+      return false;
+    }
+
+    public virtual bool TryInvokeMember(T instance, InvokeMemberBinder binder, object[] args, out object result)
+    {
+      result = null;
+      return false;
+    }
+
+    public virtual bool TrySetIndex(T instance, SetIndexBinder binder, object[] indexes, object value)
+    {
+      return false;
+    }
+
+    public virtual bool TrySetMember(T instance, SetMemberBinder binder, object value)
+    {
+      return false;
+    }
+
+    public virtual bool TryUnaryOperation(T instance, UnaryOperationBinder binder, out object result)
+    {
+      result = null;
+      return false;
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicProxyMetaObject.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicProxyMetaObject.cs
@@ -1,402 +1,402 @@
-﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System;
-using System.Collections.Generic;
-using System.Dynamic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal sealed class DynamicProxyMetaObject<T> : DynamicMetaObject
-  {
-    private readonly DynamicProxy<T> _proxy;
-    private readonly bool _dontFallbackFirst;
-
-    internal DynamicProxyMetaObject(Expression expression, T value, DynamicProxy<T> proxy, bool dontFallbackFirst)
-      : base(expression, BindingRestrictions.Empty, value)
-    {
-      _proxy = proxy;
-      _dontFallbackFirst = dontFallbackFirst;
-    }
-
-    private new T Value { get { return (T)base.Value; } }
-
-    private bool IsOverridden(string method)
-    {
-      return _proxy.GetType().GetMember(method, MemberTypes.Method, BindingFlags.Public | BindingFlags.Instance).Cast<MethodInfo>()
-        .Any(info =>
-          // check that the method overrides the original on DynamicObjectProxy
-          info.DeclaringType != typeof(DynamicProxy<T>)
-          // todo - find out whether there is a way to do this in winrt
-#if !NETFX_CORE
-          && info.GetBaseDefinition().DeclaringType == typeof(DynamicProxy<T>)
-#endif
-          );
-    }
-
-    public override DynamicMetaObject BindGetMember(GetMemberBinder binder)
-    {
-      return IsOverridden("TryGetMember")
-           ? CallMethodWithResult("TryGetMember", binder, NoArgs, e => binder.FallbackGetMember(this, e))
-           : base.BindGetMember(binder);
-    }
-
-    public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value)
-    {
-      return IsOverridden("TrySetMember")
-           ? CallMethodReturnLast("TrySetMember", binder, GetArgs(value), e => binder.FallbackSetMember(this, value, e))
-           : base.BindSetMember(binder, value);
-    }
-
-    public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder)
-    {
-      return IsOverridden("TryDeleteMember")
-           ? CallMethodNoResult("TryDeleteMember", binder, NoArgs, e => binder.FallbackDeleteMember(this, e))
-           : base.BindDeleteMember(binder);
-    }
-
-
-    public override DynamicMetaObject BindConvert(ConvertBinder binder)
-    {
-      return IsOverridden("TryConvert")
-           ? CallMethodWithResult("TryConvert", binder, NoArgs, e => binder.FallbackConvert(this, e))
-           : base.BindConvert(binder);
-    }
-
-    public override DynamicMetaObject BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args)
-    {
-      if (!IsOverridden("TryInvokeMember"))
-        return base.BindInvokeMember(binder, args);
-
-      //
-      // Generate a tree like:
-      //
-      // {
-      //   object result;
-      //   TryInvokeMember(payload, out result)
-      //      ? result
-      //      : TryGetMember(payload, out result)
-      //          ? FallbackInvoke(result)
-      //          : fallbackResult
-      // }
-      //
-      // Then it calls FallbackInvokeMember with this tree as the
-      // "error", giving the language the option of using this
-      // tree or doing .NET binding.
-      //
-      Fallback fallback = e => binder.FallbackInvokeMember(this, args, e);
-
-      DynamicMetaObject call = BuildCallMethodWithResult(
-          "TryInvokeMember",
-          binder,
-          GetArgArray(args),
-          BuildCallMethodWithResult(
-              "TryGetMember",
-              new GetBinderAdapter(binder),
-              NoArgs,
-              fallback(null),
-              e => binder.FallbackInvoke(e, args, null)
-          ),
-          null
-      );
-
-      return _dontFallbackFirst ? call : fallback(call);
-    }
-
-
-    public override DynamicMetaObject BindCreateInstance(CreateInstanceBinder binder, DynamicMetaObject[] args)
-    {
-      return IsOverridden("TryCreateInstance")
-           ? CallMethodWithResult("TryCreateInstance", binder, GetArgArray(args), e => binder.FallbackCreateInstance(this, args, e))
-           : base.BindCreateInstance(binder, args);
-    }
-
-    public override DynamicMetaObject BindInvoke(InvokeBinder binder, DynamicMetaObject[] args)
-    {
-      return IsOverridden("TryInvoke")
-        ? CallMethodWithResult("TryInvoke", binder, GetArgArray(args), e => binder.FallbackInvoke(this, args, e))
-        : base.BindInvoke(binder, args);
-    }
-
-    public override DynamicMetaObject BindBinaryOperation(BinaryOperationBinder binder, DynamicMetaObject arg)
-    {
-      return IsOverridden("TryBinaryOperation")
-        ? CallMethodWithResult("TryBinaryOperation", binder, GetArgs(arg), e => binder.FallbackBinaryOperation(this, arg, e))
-        : base.BindBinaryOperation(binder, arg);
-    }
-
-    public override DynamicMetaObject BindUnaryOperation(UnaryOperationBinder binder)
-    {
-      return IsOverridden("TryUnaryOperation")
-           ? CallMethodWithResult("TryUnaryOperation", binder, NoArgs, e => binder.FallbackUnaryOperation(this, e))
-           : base.BindUnaryOperation(binder);
-    }
-
-    public override DynamicMetaObject BindGetIndex(GetIndexBinder binder, DynamicMetaObject[] indexes)
-    {
-      return IsOverridden("TryGetIndex")
-           ? CallMethodWithResult("TryGetIndex", binder, GetArgArray(indexes), e => binder.FallbackGetIndex(this, indexes, e))
-           : base.BindGetIndex(binder, indexes);
-    }
-
-    public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value)
-    {
-      return IsOverridden("TrySetIndex")
-           ? CallMethodReturnLast("TrySetIndex", binder, GetArgArray(indexes, value), e => binder.FallbackSetIndex(this, indexes, value, e))
-           : base.BindSetIndex(binder, indexes, value);
-    }
-
-    public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
-    {
-      return IsOverridden("TryDeleteIndex")
-           ? CallMethodNoResult("TryDeleteIndex", binder, GetArgArray(indexes), e => binder.FallbackDeleteIndex(this, indexes, e))
-           : base.BindDeleteIndex(binder, indexes);
-    }
-
-    private delegate DynamicMetaObject Fallback(DynamicMetaObject errorSuggestion);
-
-    private readonly static Expression[] NoArgs = new Expression[0];
-
-    private static Expression[] GetArgs(params DynamicMetaObject[] args)
-    {
-      return args.Select(arg => Expression.Convert(arg.Expression, typeof(object))).ToArray();
-    }
-
-    private static Expression[] GetArgArray(DynamicMetaObject[] args)
-    {
-      return new[] { Expression.NewArrayInit(typeof(object), GetArgs(args)) };
-    }
-
-    private static Expression[] GetArgArray(DynamicMetaObject[] args, DynamicMetaObject value)
-    {
-      return new Expression[]
-            {
-                Expression.NewArrayInit(typeof(object), GetArgs(args)),
-                Expression.Convert(value.Expression, typeof(object))
-            };
-    }
-
-    private static ConstantExpression Constant(DynamicMetaObjectBinder binder)
-    {
-      Type t = binder.GetType();
-      while (!t.IsVisible())
-        t = t.BaseType();
-      return Expression.Constant(binder, t);
-    }
-
-    /// <summary>
-    /// Helper method for generating a MetaObject which calls a
-    /// specific method on Dynamic that returns a result
-    /// </summary>
-    private DynamicMetaObject CallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback, Fallback fallbackInvoke = null)
-    {
-      //
-      // First, call fallback to do default binding
-      // This produces either an error or a call to a .NET member
-      //
-      DynamicMetaObject fallbackResult = fallback(null);
-
-      DynamicMetaObject callDynamic = BuildCallMethodWithResult(methodName, binder, args, fallbackResult, fallbackInvoke);
-
-      //
-      // Now, call fallback again using our new MO as the error
-      // When we do this, one of two things can happen:
-      //   1. Binding will succeed, and it will ignore our call to
-      //      the dynamic method, OR
-      //   2. Binding will fail, and it will use the MO we created
-      //      above.
-      //
-
-      return _dontFallbackFirst ? callDynamic : fallback(callDynamic);
-    }
-
-    private DynamicMetaObject BuildCallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, DynamicMetaObject fallbackResult, Fallback fallbackInvoke)
-    {
-      //
-      // Build a new expression like:
-      // {
-      //   object result;
-      //   TryGetMember(payload, out result) ? fallbackInvoke(result) : fallbackResult
-      // }
-      //
-      ParameterExpression result = Expression.Parameter(typeof(object), null);
-
-      IList<Expression> callArgs = new List<Expression>();
-      callArgs.Add(Expression.Convert(Expression, typeof(T)));
-      callArgs.Add(Constant(binder));
-      callArgs.AddRange(args);
-      callArgs.Add(result);
-
-      DynamicMetaObject resultMetaObject = new DynamicMetaObject(result, BindingRestrictions.Empty);
-
-      // Need to add a conversion if calling TryConvert
-      if (binder.ReturnType != typeof (object))
-      {
-        UnaryExpression convert = Expression.Convert(resultMetaObject.Expression, binder.ReturnType);
-        // will always be a cast or unbox
-
-        resultMetaObject = new DynamicMetaObject(convert, resultMetaObject.Restrictions);
-      }
-
-      if (fallbackInvoke != null)
-        resultMetaObject = fallbackInvoke(resultMetaObject);
-
-      DynamicMetaObject callDynamic = new DynamicMetaObject(
-        Expression.Block(
-          new[] {result},
-          Expression.Condition(
-            Expression.Call(
-              Expression.Constant(_proxy),
-              typeof(DynamicProxy<T>).GetMethod(methodName),
-              callArgs
-              ),
-            resultMetaObject.Expression,
-            fallbackResult.Expression,
-            binder.ReturnType
-            )
-          ),
-        GetRestrictions().Merge(resultMetaObject.Restrictions).Merge(fallbackResult.Restrictions)
-        );
-
-      return callDynamic;
-    }
-
-    /// <summary>
-    /// Helper method for generating a MetaObject which calls a
-    /// specific method on Dynamic, but uses one of the arguments for
-    /// the result.
-    /// </summary>
-    private DynamicMetaObject CallMethodReturnLast(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback)
-    {
-      //
-      // First, call fallback to do default binding
-      // This produces either an error or a call to a .NET member
-      //
-      DynamicMetaObject fallbackResult = fallback(null);
-
-      //
-      // Build a new expression like:
-      // {
-      //   object result;
-      //   TrySetMember(payload, result = value) ? result : fallbackResult
-      // }
-      //
-      ParameterExpression result = Expression.Parameter(typeof(object), null);
-
-      IList<Expression> callArgs = new List<Expression>();
-      callArgs.Add(Expression.Convert(Expression, typeof (T)));
-      callArgs.Add(Constant(binder));
-      callArgs.AddRange(args);
-      callArgs[args.Length + 1] = Expression.Assign(result, callArgs[args.Length + 1]);
-
-      DynamicMetaObject callDynamic = new DynamicMetaObject(
-          Expression.Block(
-              new[] { result },
-              Expression.Condition(
-                  Expression.Call(
-                      Expression.Constant(_proxy),
-                      typeof(DynamicProxy<T>).GetMethod(methodName),
-                      callArgs
-                  ),
-                  result,
-                  fallbackResult.Expression,
-                  typeof(object)
-              )
-          ),
-          GetRestrictions().Merge(fallbackResult.Restrictions)
-      );
-
-      //
-      // Now, call fallback again using our new MO as the error
-      // When we do this, one of two things can happen:
-      //   1. Binding will succeed, and it will ignore our call to
-      //      the dynamic method, OR
-      //   2. Binding will fail, and it will use the MO we created
-      //      above.
-      //
-      return _dontFallbackFirst ? callDynamic : fallback(callDynamic);
-    }
-
-    /// <summary>
-    /// Helper method for generating a MetaObject which calls a
-    /// specific method on Dynamic, but uses one of the arguments for
-    /// the result.
-    /// </summary>
-    private DynamicMetaObject CallMethodNoResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback)
-    {
-      //
-      // First, call fallback to do default binding
-      // This produces either an error or a call to a .NET member
-      //
-      DynamicMetaObject fallbackResult = fallback(null);
-
-      IList<Expression> callArgs = new List<Expression>();
-      callArgs.Add(Expression.Convert(Expression, typeof(T)));
-      callArgs.Add(Constant(binder));
-      callArgs.AddRange(args);
-
-      //
-      // Build a new expression like:
-      //   if (TryDeleteMember(payload)) { } else { fallbackResult }
-      //
-      DynamicMetaObject callDynamic = new DynamicMetaObject(
-        Expression.Condition(
-          Expression.Call(
-            Expression.Constant(_proxy),
-            typeof(DynamicProxy<T>).GetMethod(methodName),
-            callArgs
-            ),
-          Expression.Empty(),
-          fallbackResult.Expression,
-          typeof (void)
-          ),
-        GetRestrictions().Merge(fallbackResult.Restrictions)
-        );
-
-      //
-      // Now, call fallback again using our new MO as the error
-      // When we do this, one of two things can happen:
-      //   1. Binding will succeed, and it will ignore our call to
-      //      the dynamic method, OR
-      //   2. Binding will fail, and it will use the MO we created
-      //      above.
-      //
-      return _dontFallbackFirst ? callDynamic : fallback(callDynamic);
-    }
-
-    /// <summary>
-    /// Returns a Restrictions object which includes our current restrictions merged
-    /// with a restriction limiting our type
-    /// </summary>
-    private BindingRestrictions GetRestrictions()
-    {
-      return (Value == null && HasValue)
-           ? BindingRestrictions.GetInstanceRestriction(Expression, null)
-           : BindingRestrictions.GetTypeRestriction(Expression, LimitType);
-    }
-
-    public override IEnumerable<string> GetDynamicMemberNames()
-    {
-      return _proxy.GetDynamicMemberNames(Value);
-    }
-
-    // It is okay to throw NotSupported from this binder. This object
-    // is only used by DynamicObject.GetMember--it is not expected to
-    // (and cannot) implement binding semantics. It is just so the DO
-    // can use the Name and IgnoreCase properties.
-    private sealed class GetBinderAdapter : GetMemberBinder
-    {
-      internal GetBinderAdapter(InvokeMemberBinder binder) :
-        base(binder.Name, binder.IgnoreCase)
-      {
-      }
-
-      public override DynamicMetaObject FallbackGetMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion)
-      {
-        throw new NotSupportedException();
-      }
-    }
-  }
-}
+﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal sealed class DynamicProxyMetaObject<T> : DynamicMetaObject
+  {
+    private readonly DynamicProxy<T> _proxy;
+    private readonly bool _dontFallbackFirst;
+
+    internal DynamicProxyMetaObject(Expression expression, T value, DynamicProxy<T> proxy, bool dontFallbackFirst)
+      : base(expression, BindingRestrictions.Empty, value)
+    {
+      _proxy = proxy;
+      _dontFallbackFirst = dontFallbackFirst;
+    }
+
+    private new T Value { get { return (T)base.Value; } }
+
+    private bool IsOverridden(string method)
+    {
+      return _proxy.GetType().GetMember(method, MemberTypes.Method, BindingFlags.Public | BindingFlags.Instance).Cast<MethodInfo>()
+        .Any(info =>
+          // check that the method overrides the original on DynamicObjectProxy
+          info.DeclaringType != typeof(DynamicProxy<T>)
+          // todo - find out whether there is a way to do this in winrt
+#if !NETFX_CORE
+          && info.GetBaseDefinition().DeclaringType == typeof(DynamicProxy<T>)
+#endif
+          );
+    }
+
+    public override DynamicMetaObject BindGetMember(GetMemberBinder binder)
+    {
+      return IsOverridden("TryGetMember")
+           ? CallMethodWithResult("TryGetMember", binder, NoArgs, e => binder.FallbackGetMember(this, e))
+           : base.BindGetMember(binder);
+    }
+
+    public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value)
+    {
+      return IsOverridden("TrySetMember")
+           ? CallMethodReturnLast("TrySetMember", binder, GetArgs(value), e => binder.FallbackSetMember(this, value, e))
+           : base.BindSetMember(binder, value);
+    }
+
+    public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder)
+    {
+      return IsOverridden("TryDeleteMember")
+           ? CallMethodNoResult("TryDeleteMember", binder, NoArgs, e => binder.FallbackDeleteMember(this, e))
+           : base.BindDeleteMember(binder);
+    }
+
+
+    public override DynamicMetaObject BindConvert(ConvertBinder binder)
+    {
+      return IsOverridden("TryConvert")
+           ? CallMethodWithResult("TryConvert", binder, NoArgs, e => binder.FallbackConvert(this, e))
+           : base.BindConvert(binder);
+    }
+
+    public override DynamicMetaObject BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args)
+    {
+      if (!IsOverridden("TryInvokeMember"))
+        return base.BindInvokeMember(binder, args);
+
+      //
+      // Generate a tree like:
+      //
+      // {
+      //   object result;
+      //   TryInvokeMember(payload, out result)
+      //      ? result
+      //      : TryGetMember(payload, out result)
+      //          ? FallbackInvoke(result)
+      //          : fallbackResult
+      // }
+      //
+      // Then it calls FallbackInvokeMember with this tree as the
+      // "error", giving the language the option of using this
+      // tree or doing .NET binding.
+      //
+      Fallback fallback = e => binder.FallbackInvokeMember(this, args, e);
+
+      DynamicMetaObject call = BuildCallMethodWithResult(
+          "TryInvokeMember",
+          binder,
+          GetArgArray(args),
+          BuildCallMethodWithResult(
+              "TryGetMember",
+              new GetBinderAdapter(binder),
+              NoArgs,
+              fallback(null),
+              e => binder.FallbackInvoke(e, args, null)
+          ),
+          null
+      );
+
+      return _dontFallbackFirst ? call : fallback(call);
+    }
+
+
+    public override DynamicMetaObject BindCreateInstance(CreateInstanceBinder binder, DynamicMetaObject[] args)
+    {
+      return IsOverridden("TryCreateInstance")
+           ? CallMethodWithResult("TryCreateInstance", binder, GetArgArray(args), e => binder.FallbackCreateInstance(this, args, e))
+           : base.BindCreateInstance(binder, args);
+    }
+
+    public override DynamicMetaObject BindInvoke(InvokeBinder binder, DynamicMetaObject[] args)
+    {
+      return IsOverridden("TryInvoke")
+        ? CallMethodWithResult("TryInvoke", binder, GetArgArray(args), e => binder.FallbackInvoke(this, args, e))
+        : base.BindInvoke(binder, args);
+    }
+
+    public override DynamicMetaObject BindBinaryOperation(BinaryOperationBinder binder, DynamicMetaObject arg)
+    {
+      return IsOverridden("TryBinaryOperation")
+        ? CallMethodWithResult("TryBinaryOperation", binder, GetArgs(arg), e => binder.FallbackBinaryOperation(this, arg, e))
+        : base.BindBinaryOperation(binder, arg);
+    }
+
+    public override DynamicMetaObject BindUnaryOperation(UnaryOperationBinder binder)
+    {
+      return IsOverridden("TryUnaryOperation")
+           ? CallMethodWithResult("TryUnaryOperation", binder, NoArgs, e => binder.FallbackUnaryOperation(this, e))
+           : base.BindUnaryOperation(binder);
+    }
+
+    public override DynamicMetaObject BindGetIndex(GetIndexBinder binder, DynamicMetaObject[] indexes)
+    {
+      return IsOverridden("TryGetIndex")
+           ? CallMethodWithResult("TryGetIndex", binder, GetArgArray(indexes), e => binder.FallbackGetIndex(this, indexes, e))
+           : base.BindGetIndex(binder, indexes);
+    }
+
+    public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value)
+    {
+      return IsOverridden("TrySetIndex")
+           ? CallMethodReturnLast("TrySetIndex", binder, GetArgArray(indexes, value), e => binder.FallbackSetIndex(this, indexes, value, e))
+           : base.BindSetIndex(binder, indexes, value);
+    }
+
+    public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
+    {
+      return IsOverridden("TryDeleteIndex")
+           ? CallMethodNoResult("TryDeleteIndex", binder, GetArgArray(indexes), e => binder.FallbackDeleteIndex(this, indexes, e))
+           : base.BindDeleteIndex(binder, indexes);
+    }
+
+    private delegate DynamicMetaObject Fallback(DynamicMetaObject errorSuggestion);
+
+    private readonly static Expression[] NoArgs = new Expression[0];
+
+    private static Expression[] GetArgs(params DynamicMetaObject[] args)
+    {
+      return args.Select(arg => Expression.Convert(arg.Expression, typeof(object))).ToArray();
+    }
+
+    private static Expression[] GetArgArray(DynamicMetaObject[] args)
+    {
+      return new[] { Expression.NewArrayInit(typeof(object), GetArgs(args)) };
+    }
+
+    private static Expression[] GetArgArray(DynamicMetaObject[] args, DynamicMetaObject value)
+    {
+      return new Expression[]
+            {
+                Expression.NewArrayInit(typeof(object), GetArgs(args)),
+                Expression.Convert(value.Expression, typeof(object))
+            };
+    }
+
+    private static ConstantExpression Constant(DynamicMetaObjectBinder binder)
+    {
+      Type t = binder.GetType();
+      while (!t.IsVisible())
+        t = t.BaseType();
+      return Expression.Constant(binder, t);
+    }
+
+    /// <summary>
+    /// Helper method for generating a MetaObject which calls a
+    /// specific method on Dynamic that returns a result
+    /// </summary>
+    private DynamicMetaObject CallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback, Fallback fallbackInvoke = null)
+    {
+      //
+      // First, call fallback to do default binding
+      // This produces either an error or a call to a .NET member
+      //
+      DynamicMetaObject fallbackResult = fallback(null);
+
+      DynamicMetaObject callDynamic = BuildCallMethodWithResult(methodName, binder, args, fallbackResult, fallbackInvoke);
+
+      //
+      // Now, call fallback again using our new MO as the error
+      // When we do this, one of two things can happen:
+      //   1. Binding will succeed, and it will ignore our call to
+      //      the dynamic method, OR
+      //   2. Binding will fail, and it will use the MO we created
+      //      above.
+      //
+
+      return _dontFallbackFirst ? callDynamic : fallback(callDynamic);
+    }
+
+    private DynamicMetaObject BuildCallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, DynamicMetaObject fallbackResult, Fallback fallbackInvoke)
+    {
+      //
+      // Build a new expression like:
+      // {
+      //   object result;
+      //   TryGetMember(payload, out result) ? fallbackInvoke(result) : fallbackResult
+      // }
+      //
+      ParameterExpression result = Expression.Parameter(typeof(object), null);
+
+      IList<Expression> callArgs = new List<Expression>();
+      callArgs.Add(Expression.Convert(Expression, typeof(T)));
+      callArgs.Add(Constant(binder));
+      callArgs.AddRange(args);
+      callArgs.Add(result);
+
+      DynamicMetaObject resultMetaObject = new DynamicMetaObject(result, BindingRestrictions.Empty);
+
+      // Need to add a conversion if calling TryConvert
+      if (binder.ReturnType != typeof (object))
+      {
+        UnaryExpression convert = Expression.Convert(resultMetaObject.Expression, binder.ReturnType);
+        // will always be a cast or unbox
+
+        resultMetaObject = new DynamicMetaObject(convert, resultMetaObject.Restrictions);
+      }
+
+      if (fallbackInvoke != null)
+        resultMetaObject = fallbackInvoke(resultMetaObject);
+
+      DynamicMetaObject callDynamic = new DynamicMetaObject(
+        Expression.Block(
+          new[] {result},
+          Expression.Condition(
+            Expression.Call(
+              Expression.Constant(_proxy),
+              typeof(DynamicProxy<T>).GetMethod(methodName),
+              callArgs
+              ),
+            resultMetaObject.Expression,
+            fallbackResult.Expression,
+            binder.ReturnType
+            )
+          ),
+        GetRestrictions().Merge(resultMetaObject.Restrictions).Merge(fallbackResult.Restrictions)
+        );
+
+      return callDynamic;
+    }
+
+    /// <summary>
+    /// Helper method for generating a MetaObject which calls a
+    /// specific method on Dynamic, but uses one of the arguments for
+    /// the result.
+    /// </summary>
+    private DynamicMetaObject CallMethodReturnLast(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback)
+    {
+      //
+      // First, call fallback to do default binding
+      // This produces either an error or a call to a .NET member
+      //
+      DynamicMetaObject fallbackResult = fallback(null);
+
+      //
+      // Build a new expression like:
+      // {
+      //   object result;
+      //   TrySetMember(payload, result = value) ? result : fallbackResult
+      // }
+      //
+      ParameterExpression result = Expression.Parameter(typeof(object), null);
+
+      IList<Expression> callArgs = new List<Expression>();
+      callArgs.Add(Expression.Convert(Expression, typeof (T)));
+      callArgs.Add(Constant(binder));
+      callArgs.AddRange(args);
+      callArgs[args.Length + 1] = Expression.Assign(result, callArgs[args.Length + 1]);
+
+      DynamicMetaObject callDynamic = new DynamicMetaObject(
+          Expression.Block(
+              new[] { result },
+              Expression.Condition(
+                  Expression.Call(
+                      Expression.Constant(_proxy),
+                      typeof(DynamicProxy<T>).GetMethod(methodName),
+                      callArgs
+                  ),
+                  result,
+                  fallbackResult.Expression,
+                  typeof(object)
+              )
+          ),
+          GetRestrictions().Merge(fallbackResult.Restrictions)
+      );
+
+      //
+      // Now, call fallback again using our new MO as the error
+      // When we do this, one of two things can happen:
+      //   1. Binding will succeed, and it will ignore our call to
+      //      the dynamic method, OR
+      //   2. Binding will fail, and it will use the MO we created
+      //      above.
+      //
+      return _dontFallbackFirst ? callDynamic : fallback(callDynamic);
+    }
+
+    /// <summary>
+    /// Helper method for generating a MetaObject which calls a
+    /// specific method on Dynamic, but uses one of the arguments for
+    /// the result.
+    /// </summary>
+    private DynamicMetaObject CallMethodNoResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback)
+    {
+      //
+      // First, call fallback to do default binding
+      // This produces either an error or a call to a .NET member
+      //
+      DynamicMetaObject fallbackResult = fallback(null);
+
+      IList<Expression> callArgs = new List<Expression>();
+      callArgs.Add(Expression.Convert(Expression, typeof(T)));
+      callArgs.Add(Constant(binder));
+      callArgs.AddRange(args);
+
+      //
+      // Build a new expression like:
+      //   if (TryDeleteMember(payload)) { } else { fallbackResult }
+      //
+      DynamicMetaObject callDynamic = new DynamicMetaObject(
+        Expression.Condition(
+          Expression.Call(
+            Expression.Constant(_proxy),
+            typeof(DynamicProxy<T>).GetMethod(methodName),
+            callArgs
+            ),
+          Expression.Empty(),
+          fallbackResult.Expression,
+          typeof (void)
+          ),
+        GetRestrictions().Merge(fallbackResult.Restrictions)
+        );
+
+      //
+      // Now, call fallback again using our new MO as the error
+      // When we do this, one of two things can happen:
+      //   1. Binding will succeed, and it will ignore our call to
+      //      the dynamic method, OR
+      //   2. Binding will fail, and it will use the MO we created
+      //      above.
+      //
+      return _dontFallbackFirst ? callDynamic : fallback(callDynamic);
+    }
+
+    /// <summary>
+    /// Returns a Restrictions object which includes our current restrictions merged
+    /// with a restriction limiting our type
+    /// </summary>
+    private BindingRestrictions GetRestrictions()
+    {
+      return (Value == null && HasValue)
+           ? BindingRestrictions.GetInstanceRestriction(Expression, null)
+           : BindingRestrictions.GetTypeRestriction(Expression, LimitType);
+    }
+
+    public override IEnumerable<string> GetDynamicMemberNames()
+    {
+      return _proxy.GetDynamicMemberNames(Value);
+    }
+
+    // It is okay to throw NotSupported from this binder. This object
+    // is only used by DynamicObject.GetMember--it is not expected to
+    // (and cannot) implement binding semantics. It is just so the DO
+    // can use the Name and IgnoreCase properties.
+    private sealed class GetBinderAdapter : GetMemberBinder
+    {
+      internal GetBinderAdapter(InvokeMemberBinder binder) :
+        base(binder.Name, binder.IgnoreCase)
+      {
+      }
+
+      public override DynamicMetaObject FallbackGetMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion)
+      {
+        throw new NotSupportedException();
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicReflectionDelegateFactory.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicReflectionDelegateFactory.cs
@@ -1,229 +1,229 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !SILVERLIGHT
-using System;
-using System.Collections.Generic;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-using System.Reflection;
-using System.Reflection.Emit;
-using Newtonsoft.Json.Serialization;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class DynamicReflectionDelegateFactory : ReflectionDelegateFactory
-  {
-    public static DynamicReflectionDelegateFactory Instance = new DynamicReflectionDelegateFactory();
-
-    private static DynamicMethod CreateDynamicMethod(string name, Type returnType, Type[] parameterTypes, Type owner)
-    {
-      DynamicMethod dynamicMethod = !owner.IsInterface()
-        ? new DynamicMethod(name, returnType, parameterTypes, owner, true)
-        : new DynamicMethod(name, returnType, parameterTypes, owner.Module(), true);
-
-      return dynamicMethod;
-    }
-
-    public override MethodCall<T, object> CreateMethodCall<T>(MethodBase method)
-    {
-      DynamicMethod dynamicMethod = CreateDynamicMethod(method.ToString(), typeof(object), new[] { typeof(object), typeof(object[]) }, method.DeclaringType);
-      ILGenerator generator = dynamicMethod.GetILGenerator();
-
-      GenerateCreateMethodCallIL(method, generator);
-
-      return (MethodCall<T, object>)dynamicMethod.CreateDelegate(typeof(MethodCall<T, object>));
-    }
-
-    private void GenerateCreateMethodCallIL(MethodBase method, ILGenerator generator)
-    {
-      ParameterInfo[] args = method.GetParameters();
-
-      Label argsOk = generator.DefineLabel();
-
-      generator.Emit(OpCodes.Ldarg_1);
-      generator.Emit(OpCodes.Ldlen);
-      generator.Emit(OpCodes.Ldc_I4, args.Length);
-      generator.Emit(OpCodes.Beq, argsOk);
-
-      generator.Emit(OpCodes.Newobj, typeof(TargetParameterCountException).GetConstructor(ReflectionUtils.EmptyTypes));
-      generator.Emit(OpCodes.Throw);
-
-      generator.MarkLabel(argsOk);
-
-      if (!method.IsConstructor && !method.IsStatic)
-        generator.PushInstance(method.DeclaringType);
-
-      for (int i = 0; i < args.Length; i++)
-      {
-        generator.Emit(OpCodes.Ldarg_1);
-        generator.Emit(OpCodes.Ldc_I4, i);
-        generator.Emit(OpCodes.Ldelem_Ref);
-
-        generator.UnboxIfNeeded(args[i].ParameterType);
-      }
-
-      if (method.IsConstructor)
-        generator.Emit(OpCodes.Newobj, (ConstructorInfo)method);
-      else if (method.IsFinal || !method.IsVirtual)
-        generator.CallMethod((MethodInfo)method);
-
-      Type returnType = method.IsConstructor
-                          ? method.DeclaringType
-                          : ((MethodInfo)method).ReturnType;
-
-      if (returnType != typeof(void))
-        generator.BoxIfNeeded(returnType);
-      else
-        generator.Emit(OpCodes.Ldnull);
-
-      generator.Return();
-    }
-
-    public override Func<T> CreateDefaultConstructor<T>(Type type)
-    {
-      DynamicMethod dynamicMethod = CreateDynamicMethod("Create" + type.FullName, typeof(T), ReflectionUtils.EmptyTypes, type);
-      dynamicMethod.InitLocals = true;
-      ILGenerator generator = dynamicMethod.GetILGenerator();
-
-      GenerateCreateDefaultConstructorIL(type, generator);
-
-      return (Func<T>)dynamicMethod.CreateDelegate(typeof(Func<T>));
-    }
-
-    private void GenerateCreateDefaultConstructorIL(Type type, ILGenerator generator)
-    {
-      if (type.IsValueType())
-      {
-        generator.DeclareLocal(type);
-        generator.Emit(OpCodes.Ldloc_0);
-        generator.Emit(OpCodes.Box, type);
-      }
-      else
-      {
-        ConstructorInfo constructorInfo =
-          type.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null,
-                              ReflectionUtils.EmptyTypes, null);
-
-        if (constructorInfo == null)
-          throw new Exception("Could not get constructor for {0}.".FormatWith(CultureInfo.InvariantCulture, type));
-
-        generator.Emit(OpCodes.Newobj, constructorInfo);
-      }
-
-      generator.Return();
-    }
-
-    public override Func<T, object> CreateGet<T>(PropertyInfo propertyInfo)
-    {
-      DynamicMethod dynamicMethod = CreateDynamicMethod("Get" + propertyInfo.Name, typeof(T), new[] { typeof(object) }, propertyInfo.DeclaringType);
-      ILGenerator generator = dynamicMethod.GetILGenerator();
-
-      GenerateCreateGetPropertyIL(propertyInfo, generator);
-
-      return (Func<T, object>)dynamicMethod.CreateDelegate(typeof(Func<T, object>));
-    }
-
-    private void GenerateCreateGetPropertyIL(PropertyInfo propertyInfo, ILGenerator generator)
-    {
-      MethodInfo getMethod = propertyInfo.GetGetMethod(true);
-      if (getMethod == null)
-        throw new Exception("Property '{0}' does not have a getter.".FormatWith(CultureInfo.InvariantCulture, propertyInfo.Name));
-
-      if (!getMethod.IsStatic)
-        generator.PushInstance(propertyInfo.DeclaringType);
-
-      generator.CallMethod(getMethod);
-      generator.BoxIfNeeded(propertyInfo.PropertyType);
-      generator.Return();
-    }
-
-    public override Func<T, object> CreateGet<T>(FieldInfo fieldInfo)
-    {
-      DynamicMethod dynamicMethod = CreateDynamicMethod("Get" + fieldInfo.Name, typeof(T), new[] { typeof(object) }, fieldInfo.DeclaringType);
-      ILGenerator generator = dynamicMethod.GetILGenerator();
-
-      GenerateCreateGetFieldIL(fieldInfo, generator);
-
-      return (Func<T, object>)dynamicMethod.CreateDelegate(typeof(Func<T, object>));
-    }
-
-    private void GenerateCreateGetFieldIL(FieldInfo fieldInfo, ILGenerator generator)
-    {
-      if (!fieldInfo.IsStatic)
-        generator.PushInstance(fieldInfo.DeclaringType);
-
-      generator.Emit(OpCodes.Ldfld, fieldInfo);
-      generator.BoxIfNeeded(fieldInfo.FieldType);
-      generator.Return();
-    }
-
-    public override Action<T, object> CreateSet<T>(FieldInfo fieldInfo)
-    {
-      DynamicMethod dynamicMethod = CreateDynamicMethod("Set" + fieldInfo.Name, null, new[] { typeof(T), typeof(object) }, fieldInfo.DeclaringType);
-      ILGenerator generator = dynamicMethod.GetILGenerator();
-
-      GenerateCreateSetFieldIL(fieldInfo, generator);
-
-      return (Action<T, object>)dynamicMethod.CreateDelegate(typeof(Action<T, object>));
-    }
-
-    internal static void GenerateCreateSetFieldIL(FieldInfo fieldInfo, ILGenerator generator)
-    {
-      if (!fieldInfo.IsStatic)
-        generator.PushInstance(fieldInfo.DeclaringType);
-
-      generator.Emit(OpCodes.Ldarg_1);
-      generator.UnboxIfNeeded(fieldInfo.FieldType);
-      generator.Emit(OpCodes.Stfld, fieldInfo);
-      generator.Return();
-    }
-
-    public override Action<T, object> CreateSet<T>(PropertyInfo propertyInfo)
-    {
-      DynamicMethod dynamicMethod = CreateDynamicMethod("Set" + propertyInfo.Name, null, new[] { typeof(T), typeof(object) }, propertyInfo.DeclaringType);
-      ILGenerator generator = dynamicMethod.GetILGenerator();
-
-      GenerateCreateSetPropertyIL(propertyInfo, generator);
-
-      return (Action<T, object>)dynamicMethod.CreateDelegate(typeof(Action<T, object>));
-    }
-
-    internal static void GenerateCreateSetPropertyIL(PropertyInfo propertyInfo, ILGenerator generator)
-    {
-      MethodInfo setMethod = propertyInfo.GetSetMethod(true);
-      if (!setMethod.IsStatic)
-        generator.PushInstance(propertyInfo.DeclaringType);
-
-      generator.Emit(OpCodes.Ldarg_1);
-      generator.UnboxIfNeeded(propertyInfo.PropertyType);
-      generator.CallMethod(setMethod);
-      generator.Return();
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !SILVERLIGHT
+using System;
+using System.Collections.Generic;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+using System.Reflection;
+using System.Reflection.Emit;
+using Newtonsoft.Json.Serialization;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class DynamicReflectionDelegateFactory : ReflectionDelegateFactory
+  {
+    public static DynamicReflectionDelegateFactory Instance = new DynamicReflectionDelegateFactory();
+
+    private static DynamicMethod CreateDynamicMethod(string name, Type returnType, Type[] parameterTypes, Type owner)
+    {
+      DynamicMethod dynamicMethod = !owner.IsInterface()
+        ? new DynamicMethod(name, returnType, parameterTypes, owner, true)
+        : new DynamicMethod(name, returnType, parameterTypes, owner.Module(), true);
+
+      return dynamicMethod;
+    }
+
+    public override MethodCall<T, object> CreateMethodCall<T>(MethodBase method)
+    {
+      DynamicMethod dynamicMethod = CreateDynamicMethod(method.ToString(), typeof(object), new[] { typeof(object), typeof(object[]) }, method.DeclaringType);
+      ILGenerator generator = dynamicMethod.GetILGenerator();
+
+      GenerateCreateMethodCallIL(method, generator);
+
+      return (MethodCall<T, object>)dynamicMethod.CreateDelegate(typeof(MethodCall<T, object>));
+    }
+
+    private void GenerateCreateMethodCallIL(MethodBase method, ILGenerator generator)
+    {
+      ParameterInfo[] args = method.GetParameters();
+
+      Label argsOk = generator.DefineLabel();
+
+      generator.Emit(OpCodes.Ldarg_1);
+      generator.Emit(OpCodes.Ldlen);
+      generator.Emit(OpCodes.Ldc_I4, args.Length);
+      generator.Emit(OpCodes.Beq, argsOk);
+
+      generator.Emit(OpCodes.Newobj, typeof(TargetParameterCountException).GetConstructor(ReflectionUtils.EmptyTypes));
+      generator.Emit(OpCodes.Throw);
+
+      generator.MarkLabel(argsOk);
+
+      if (!method.IsConstructor && !method.IsStatic)
+        generator.PushInstance(method.DeclaringType);
+
+      for (int i = 0; i < args.Length; i++)
+      {
+        generator.Emit(OpCodes.Ldarg_1);
+        generator.Emit(OpCodes.Ldc_I4, i);
+        generator.Emit(OpCodes.Ldelem_Ref);
+
+        generator.UnboxIfNeeded(args[i].ParameterType);
+      }
+
+      if (method.IsConstructor)
+        generator.Emit(OpCodes.Newobj, (ConstructorInfo)method);
+      else if (method.IsFinal || !method.IsVirtual)
+        generator.CallMethod((MethodInfo)method);
+
+      Type returnType = method.IsConstructor
+                          ? method.DeclaringType
+                          : ((MethodInfo)method).ReturnType;
+
+      if (returnType != typeof(void))
+        generator.BoxIfNeeded(returnType);
+      else
+        generator.Emit(OpCodes.Ldnull);
+
+      generator.Return();
+    }
+
+    public override Func<T> CreateDefaultConstructor<T>(Type type)
+    {
+      DynamicMethod dynamicMethod = CreateDynamicMethod("Create" + type.FullName, typeof(T), ReflectionUtils.EmptyTypes, type);
+      dynamicMethod.InitLocals = true;
+      ILGenerator generator = dynamicMethod.GetILGenerator();
+
+      GenerateCreateDefaultConstructorIL(type, generator);
+
+      return (Func<T>)dynamicMethod.CreateDelegate(typeof(Func<T>));
+    }
+
+    private void GenerateCreateDefaultConstructorIL(Type type, ILGenerator generator)
+    {
+      if (type.IsValueType())
+      {
+        generator.DeclareLocal(type);
+        generator.Emit(OpCodes.Ldloc_0);
+        generator.Emit(OpCodes.Box, type);
+      }
+      else
+      {
+        ConstructorInfo constructorInfo =
+          type.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null,
+                              ReflectionUtils.EmptyTypes, null);
+
+        if (constructorInfo == null)
+          throw new Exception("Could not get constructor for {0}.".FormatWith(CultureInfo.InvariantCulture, type));
+
+        generator.Emit(OpCodes.Newobj, constructorInfo);
+      }
+
+      generator.Return();
+    }
+
+    public override Func<T, object> CreateGet<T>(PropertyInfo propertyInfo)
+    {
+      DynamicMethod dynamicMethod = CreateDynamicMethod("Get" + propertyInfo.Name, typeof(T), new[] { typeof(object) }, propertyInfo.DeclaringType);
+      ILGenerator generator = dynamicMethod.GetILGenerator();
+
+      GenerateCreateGetPropertyIL(propertyInfo, generator);
+
+      return (Func<T, object>)dynamicMethod.CreateDelegate(typeof(Func<T, object>));
+    }
+
+    private void GenerateCreateGetPropertyIL(PropertyInfo propertyInfo, ILGenerator generator)
+    {
+      MethodInfo getMethod = propertyInfo.GetGetMethod(true);
+      if (getMethod == null)
+        throw new Exception("Property '{0}' does not have a getter.".FormatWith(CultureInfo.InvariantCulture, propertyInfo.Name));
+
+      if (!getMethod.IsStatic)
+        generator.PushInstance(propertyInfo.DeclaringType);
+
+      generator.CallMethod(getMethod);
+      generator.BoxIfNeeded(propertyInfo.PropertyType);
+      generator.Return();
+    }
+
+    public override Func<T, object> CreateGet<T>(FieldInfo fieldInfo)
+    {
+      DynamicMethod dynamicMethod = CreateDynamicMethod("Get" + fieldInfo.Name, typeof(T), new[] { typeof(object) }, fieldInfo.DeclaringType);
+      ILGenerator generator = dynamicMethod.GetILGenerator();
+
+      GenerateCreateGetFieldIL(fieldInfo, generator);
+
+      return (Func<T, object>)dynamicMethod.CreateDelegate(typeof(Func<T, object>));
+    }
+
+    private void GenerateCreateGetFieldIL(FieldInfo fieldInfo, ILGenerator generator)
+    {
+      if (!fieldInfo.IsStatic)
+        generator.PushInstance(fieldInfo.DeclaringType);
+
+      generator.Emit(OpCodes.Ldfld, fieldInfo);
+      generator.BoxIfNeeded(fieldInfo.FieldType);
+      generator.Return();
+    }
+
+    public override Action<T, object> CreateSet<T>(FieldInfo fieldInfo)
+    {
+      DynamicMethod dynamicMethod = CreateDynamicMethod("Set" + fieldInfo.Name, null, new[] { typeof(T), typeof(object) }, fieldInfo.DeclaringType);
+      ILGenerator generator = dynamicMethod.GetILGenerator();
+
+      GenerateCreateSetFieldIL(fieldInfo, generator);
+
+      return (Action<T, object>)dynamicMethod.CreateDelegate(typeof(Action<T, object>));
+    }
+
+    internal static void GenerateCreateSetFieldIL(FieldInfo fieldInfo, ILGenerator generator)
+    {
+      if (!fieldInfo.IsStatic)
+        generator.PushInstance(fieldInfo.DeclaringType);
+
+      generator.Emit(OpCodes.Ldarg_1);
+      generator.UnboxIfNeeded(fieldInfo.FieldType);
+      generator.Emit(OpCodes.Stfld, fieldInfo);
+      generator.Return();
+    }
+
+    public override Action<T, object> CreateSet<T>(PropertyInfo propertyInfo)
+    {
+      DynamicMethod dynamicMethod = CreateDynamicMethod("Set" + propertyInfo.Name, null, new[] { typeof(T), typeof(object) }, propertyInfo.DeclaringType);
+      ILGenerator generator = dynamicMethod.GetILGenerator();
+
+      GenerateCreateSetPropertyIL(propertyInfo, generator);
+
+      return (Action<T, object>)dynamicMethod.CreateDelegate(typeof(Action<T, object>));
+    }
+
+    internal static void GenerateCreateSetPropertyIL(PropertyInfo propertyInfo, ILGenerator generator)
+    {
+      MethodInfo setMethod = propertyInfo.GetSetMethod(true);
+      if (!setMethod.IsStatic)
+        generator.PushInstance(propertyInfo.DeclaringType);
+
+      generator.Emit(OpCodes.Ldarg_1);
+      generator.UnboxIfNeeded(propertyInfo.PropertyType);
+      generator.CallMethod(setMethod);
+      generator.Return();
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicUtils.cs
@@ -1,200 +1,200 @@
-﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
-using System;
-using System.Collections.Generic;
-using System.Dynamic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Text;
-using System.Globalization;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class DynamicUtils
-  {
-    internal static class BinderWrapper
-    {
-#if !SILVERLIGHT
-      public const string CSharpAssemblyName = "Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
-#else
-      public const string CSharpAssemblyName = "Microsoft.CSharp, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
-#endif
-
-      private const string BinderTypeName = "Microsoft.CSharp.RuntimeBinder.Binder, " + CSharpAssemblyName;
-      private const string CSharpArgumentInfoTypeName = "Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo, " + CSharpAssemblyName;
-      private const string CSharpArgumentInfoFlagsTypeName = "Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, " + CSharpAssemblyName;
-      private const string CSharpBinderFlagsTypeName = "Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags, " + CSharpAssemblyName;
-
-      private static object _getCSharpArgumentInfoArray;
-      private static object _setCSharpArgumentInfoArray;
-      private static MethodCall<object, object> _getMemberCall;
-      private static MethodCall<object, object> _setMemberCall;
-      private static bool _init;
-
-      private static void Init()
-      {
-        if (!_init)
-        {
-          Type binderType = Type.GetType(BinderTypeName, false);
-          if (binderType == null)
-            throw new Exception("Could not resolve type '{0}'. You may need to add a reference to Microsoft.CSharp.dll to work with dynamic types.".FormatWith(CultureInfo.InvariantCulture, BinderTypeName));
-
-          // None
-          _getCSharpArgumentInfoArray = CreateSharpArgumentInfoArray(0);
-          // None, Constant | UseCompileTimeType
-          _setCSharpArgumentInfoArray = CreateSharpArgumentInfoArray(0, 3);
-          CreateMemberCalls();
-
-          _init = true;
-        }
-      }
-
-      private static object CreateSharpArgumentInfoArray(params int[] values)
-      {
-        Type csharpArgumentInfoType = Type.GetType(CSharpArgumentInfoTypeName);
-        Type csharpArgumentInfoFlags = Type.GetType(CSharpArgumentInfoFlagsTypeName);
-
-        Array a = Array.CreateInstance(csharpArgumentInfoType, values.Length);
-
-        for (int i = 0; i < values.Length; i++)
-        {
-          MethodInfo createArgumentInfoMethod = csharpArgumentInfoType.GetMethod("Create", BindingFlags.Public | BindingFlags.Static, null, new[] { csharpArgumentInfoFlags, typeof(string) }, null);
-          object arg = createArgumentInfoMethod.Invoke(null, new object[] { 0, null });
-          a.SetValue(arg, i);
-        }
-
-        return a;
-      }
-
-      private static void CreateMemberCalls()
-      {
-        Type csharpArgumentInfoType = Type.GetType(CSharpArgumentInfoTypeName);
-        Type csharpBinderFlagsType = Type.GetType(CSharpBinderFlagsTypeName);
-        Type binderType = Type.GetType(BinderTypeName);
-
-        Type csharpArgumentInfoTypeEnumerableType = typeof(IEnumerable<>).MakeGenericType(csharpArgumentInfoType);
-
-        MethodInfo getMemberMethod = binderType.GetMethod("GetMember", BindingFlags.Public | BindingFlags.Static, null, new[] { csharpBinderFlagsType, typeof(string), typeof(Type), csharpArgumentInfoTypeEnumerableType }, null);
-        _getMemberCall = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(getMemberMethod);
-
-        MethodInfo setMemberMethod = binderType.GetMethod("SetMember", BindingFlags.Public | BindingFlags.Static, null, new[] { csharpBinderFlagsType, typeof(string), typeof(Type), csharpArgumentInfoTypeEnumerableType }, null);
-        _setMemberCall = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(setMemberMethod);
-      }
-
-      public static CallSiteBinder GetMember(string name, Type context)
-      {
-        Init();
-        return (CallSiteBinder)_getMemberCall(null, 0, name, context, _getCSharpArgumentInfoArray);
-      }
-
-      public static CallSiteBinder SetMember(string name, Type context)
-      {
-        Init();
-        return (CallSiteBinder)_setMemberCall(null, 0, name, context, _setCSharpArgumentInfoArray);
-      }
-    }
-
-    public static bool TryGetMember(this IDynamicMetaObjectProvider dynamicProvider, string name, out object value)
-    {
-      ValidationUtils.ArgumentNotNull(dynamicProvider, "dynamicProvider");
-
-      GetMemberBinder getMemberBinder = (GetMemberBinder) BinderWrapper.GetMember(name, typeof (DynamicUtils));
-
-      CallSite<Func<CallSite, object, object>> callSite = CallSite<Func<CallSite, object, object>>.Create(new NoThrowGetBinderMember(getMemberBinder));
-
-      object result = callSite.Target(callSite, dynamicProvider);
-
-      if (!ReferenceEquals(result, NoThrowExpressionVisitor.ErrorResult))
-      {
-        value = result;
-        return true;
-      }
-      else
-      {
-        value = null;
-        return false;
-      }
-    }
-
-    public static bool TrySetMember(this IDynamicMetaObjectProvider dynamicProvider, string name, object value)
-    {
-      ValidationUtils.ArgumentNotNull(dynamicProvider, "dynamicProvider");
-
-      SetMemberBinder binder = (SetMemberBinder)BinderWrapper.SetMember(name, typeof(DynamicUtils));
-
-      var setterSite = CallSite<Func<CallSite, object, object, object>>.Create(new NoThrowSetBinderMember(binder));
-
-      object result = setterSite.Target(setterSite, dynamicProvider, value);
-
-      return !ReferenceEquals(result, NoThrowExpressionVisitor.ErrorResult);
-    }
-
-    public static IEnumerable<string> GetDynamicMemberNames(this IDynamicMetaObjectProvider dynamicProvider)
-    {
-      DynamicMetaObject metaObject = dynamicProvider.GetMetaObject(Expression.Constant(dynamicProvider));
-      return metaObject.GetDynamicMemberNames();
-    }
-
-    internal class NoThrowGetBinderMember : GetMemberBinder
-    {
-      private readonly GetMemberBinder _innerBinder;
-
-      public NoThrowGetBinderMember(GetMemberBinder innerBinder)
-        : base(innerBinder.Name, innerBinder.IgnoreCase)
-      {
-        _innerBinder = innerBinder;
-      }
-
-      public override DynamicMetaObject FallbackGetMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion)
-      {
-        DynamicMetaObject retMetaObject = _innerBinder.Bind(target, new DynamicMetaObject[] { });
-
-        NoThrowExpressionVisitor noThrowVisitor = new NoThrowExpressionVisitor();
-        Expression resultExpression = noThrowVisitor.Visit(retMetaObject.Expression);
-
-        DynamicMetaObject finalMetaObject = new DynamicMetaObject(resultExpression, retMetaObject.Restrictions);
-        return finalMetaObject;
-      }
-    }
-
-    internal class NoThrowSetBinderMember : SetMemberBinder
-    {
-      private readonly SetMemberBinder _innerBinder;
-
-      public NoThrowSetBinderMember(SetMemberBinder innerBinder)
-        : base(innerBinder.Name, innerBinder.IgnoreCase)
-      {
-        _innerBinder = innerBinder;
-      }
-
-      public override DynamicMetaObject FallbackSetMember(DynamicMetaObject target, DynamicMetaObject value, DynamicMetaObject errorSuggestion)
-      {
-        DynamicMetaObject retMetaObject = _innerBinder.Bind(target, new DynamicMetaObject[] { value });
-
-        NoThrowExpressionVisitor noThrowVisitor = new NoThrowExpressionVisitor();
-        Expression resultExpression = noThrowVisitor.Visit(retMetaObject.Expression);
-
-        DynamicMetaObject finalMetaObject = new DynamicMetaObject(resultExpression, retMetaObject.Restrictions);
-        return finalMetaObject;
-      }
-    }
-
-
-    internal class NoThrowExpressionVisitor : ExpressionVisitor
-    {
-      internal static readonly object ErrorResult = new object();
-
-      protected override Expression VisitConditional(ConditionalExpression node)
-      {
-        // if the result of a test is to throw an error, rewrite to result an error result value
-        if (node.IfFalse.NodeType == ExpressionType.Throw)
-          return Expression.Condition(node.Test, node.IfTrue, Expression.Constant(ErrorResult));
-
-        return base.VisitConditional(node);
-      }
-    }
-  }
-}
+﻿#if !(NET35 || NET20 || WINDOWS_PHONE)
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Globalization;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class DynamicUtils
+  {
+    internal static class BinderWrapper
+    {
+#if !SILVERLIGHT
+      public const string CSharpAssemblyName = "Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
+#else
+      public const string CSharpAssemblyName = "Microsoft.CSharp, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
+#endif
+
+      private const string BinderTypeName = "Microsoft.CSharp.RuntimeBinder.Binder, " + CSharpAssemblyName;
+      private const string CSharpArgumentInfoTypeName = "Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo, " + CSharpAssemblyName;
+      private const string CSharpArgumentInfoFlagsTypeName = "Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, " + CSharpAssemblyName;
+      private const string CSharpBinderFlagsTypeName = "Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags, " + CSharpAssemblyName;
+
+      private static object _getCSharpArgumentInfoArray;
+      private static object _setCSharpArgumentInfoArray;
+      private static MethodCall<object, object> _getMemberCall;
+      private static MethodCall<object, object> _setMemberCall;
+      private static bool _init;
+
+      private static void Init()
+      {
+        if (!_init)
+        {
+          Type binderType = Type.GetType(BinderTypeName, false);
+          if (binderType == null)
+            throw new Exception("Could not resolve type '{0}'. You may need to add a reference to Microsoft.CSharp.dll to work with dynamic types.".FormatWith(CultureInfo.InvariantCulture, BinderTypeName));
+
+          // None
+          _getCSharpArgumentInfoArray = CreateSharpArgumentInfoArray(0);
+          // None, Constant | UseCompileTimeType
+          _setCSharpArgumentInfoArray = CreateSharpArgumentInfoArray(0, 3);
+          CreateMemberCalls();
+
+          _init = true;
+        }
+      }
+
+      private static object CreateSharpArgumentInfoArray(params int[] values)
+      {
+        Type csharpArgumentInfoType = Type.GetType(CSharpArgumentInfoTypeName);
+        Type csharpArgumentInfoFlags = Type.GetType(CSharpArgumentInfoFlagsTypeName);
+
+        Array a = Array.CreateInstance(csharpArgumentInfoType, values.Length);
+
+        for (int i = 0; i < values.Length; i++)
+        {
+          MethodInfo createArgumentInfoMethod = csharpArgumentInfoType.GetMethod("Create", BindingFlags.Public | BindingFlags.Static, null, new[] { csharpArgumentInfoFlags, typeof(string) }, null);
+          object arg = createArgumentInfoMethod.Invoke(null, new object[] { 0, null });
+          a.SetValue(arg, i);
+        }
+
+        return a;
+      }
+
+      private static void CreateMemberCalls()
+      {
+        Type csharpArgumentInfoType = Type.GetType(CSharpArgumentInfoTypeName);
+        Type csharpBinderFlagsType = Type.GetType(CSharpBinderFlagsTypeName);
+        Type binderType = Type.GetType(BinderTypeName);
+
+        Type csharpArgumentInfoTypeEnumerableType = typeof(IEnumerable<>).MakeGenericType(csharpArgumentInfoType);
+
+        MethodInfo getMemberMethod = binderType.GetMethod("GetMember", BindingFlags.Public | BindingFlags.Static, null, new[] { csharpBinderFlagsType, typeof(string), typeof(Type), csharpArgumentInfoTypeEnumerableType }, null);
+        _getMemberCall = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(getMemberMethod);
+
+        MethodInfo setMemberMethod = binderType.GetMethod("SetMember", BindingFlags.Public | BindingFlags.Static, null, new[] { csharpBinderFlagsType, typeof(string), typeof(Type), csharpArgumentInfoTypeEnumerableType }, null);
+        _setMemberCall = JsonTypeReflector.ReflectionDelegateFactory.CreateMethodCall<object>(setMemberMethod);
+      }
+
+      public static CallSiteBinder GetMember(string name, Type context)
+      {
+        Init();
+        return (CallSiteBinder)_getMemberCall(null, 0, name, context, _getCSharpArgumentInfoArray);
+      }
+
+      public static CallSiteBinder SetMember(string name, Type context)
+      {
+        Init();
+        return (CallSiteBinder)_setMemberCall(null, 0, name, context, _setCSharpArgumentInfoArray);
+      }
+    }
+
+    public static bool TryGetMember(this IDynamicMetaObjectProvider dynamicProvider, string name, out object value)
+    {
+      ValidationUtils.ArgumentNotNull(dynamicProvider, "dynamicProvider");
+
+      GetMemberBinder getMemberBinder = (GetMemberBinder) BinderWrapper.GetMember(name, typeof (DynamicUtils));
+
+      CallSite<Func<CallSite, object, object>> callSite = CallSite<Func<CallSite, object, object>>.Create(new NoThrowGetBinderMember(getMemberBinder));
+
+      object result = callSite.Target(callSite, dynamicProvider);
+
+      if (!ReferenceEquals(result, NoThrowExpressionVisitor.ErrorResult))
+      {
+        value = result;
+        return true;
+      }
+      else
+      {
+        value = null;
+        return false;
+      }
+    }
+
+    public static bool TrySetMember(this IDynamicMetaObjectProvider dynamicProvider, string name, object value)
+    {
+      ValidationUtils.ArgumentNotNull(dynamicProvider, "dynamicProvider");
+
+      SetMemberBinder binder = (SetMemberBinder)BinderWrapper.SetMember(name, typeof(DynamicUtils));
+
+      var setterSite = CallSite<Func<CallSite, object, object, object>>.Create(new NoThrowSetBinderMember(binder));
+
+      object result = setterSite.Target(setterSite, dynamicProvider, value);
+
+      return !ReferenceEquals(result, NoThrowExpressionVisitor.ErrorResult);
+    }
+
+    public static IEnumerable<string> GetDynamicMemberNames(this IDynamicMetaObjectProvider dynamicProvider)
+    {
+      DynamicMetaObject metaObject = dynamicProvider.GetMetaObject(Expression.Constant(dynamicProvider));
+      return metaObject.GetDynamicMemberNames();
+    }
+
+    internal class NoThrowGetBinderMember : GetMemberBinder
+    {
+      private readonly GetMemberBinder _innerBinder;
+
+      public NoThrowGetBinderMember(GetMemberBinder innerBinder)
+        : base(innerBinder.Name, innerBinder.IgnoreCase)
+      {
+        _innerBinder = innerBinder;
+      }
+
+      public override DynamicMetaObject FallbackGetMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion)
+      {
+        DynamicMetaObject retMetaObject = _innerBinder.Bind(target, new DynamicMetaObject[] { });
+
+        NoThrowExpressionVisitor noThrowVisitor = new NoThrowExpressionVisitor();
+        Expression resultExpression = noThrowVisitor.Visit(retMetaObject.Expression);
+
+        DynamicMetaObject finalMetaObject = new DynamicMetaObject(resultExpression, retMetaObject.Restrictions);
+        return finalMetaObject;
+      }
+    }
+
+    internal class NoThrowSetBinderMember : SetMemberBinder
+    {
+      private readonly SetMemberBinder _innerBinder;
+
+      public NoThrowSetBinderMember(SetMemberBinder innerBinder)
+        : base(innerBinder.Name, innerBinder.IgnoreCase)
+      {
+        _innerBinder = innerBinder;
+      }
+
+      public override DynamicMetaObject FallbackSetMember(DynamicMetaObject target, DynamicMetaObject value, DynamicMetaObject errorSuggestion)
+      {
+        DynamicMetaObject retMetaObject = _innerBinder.Bind(target, new DynamicMetaObject[] { value });
+
+        NoThrowExpressionVisitor noThrowVisitor = new NoThrowExpressionVisitor();
+        Expression resultExpression = noThrowVisitor.Visit(retMetaObject.Expression);
+
+        DynamicMetaObject finalMetaObject = new DynamicMetaObject(resultExpression, retMetaObject.Restrictions);
+        return finalMetaObject;
+      }
+    }
+
+
+    internal class NoThrowExpressionVisitor : ExpressionVisitor
+    {
+      internal static readonly object ErrorResult = new object();
+
+      protected override Expression VisitConditional(ConditionalExpression node)
+      {
+        // if the result of a test is to throw an error, rewrite to result an error result value
+        if (node.IfFalse.NodeType == ExpressionType.Throw)
+          return Expression.Condition(node.Test, node.IfTrue, Expression.Constant(ErrorResult));
+
+        return base.VisitConditional(node);
+      }
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicWrapper.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/DynamicWrapper.cs
@@ -1,239 +1,239 @@
-﻿#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Resources;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class DynamicWrapperBase
-  {
-    internal protected object UnderlyingObject;
-  }
-
-  internal static class DynamicWrapper
-  {
-    private static readonly object _lock = new object();
-    private static readonly WrapperDictionary _wrapperDictionary = new WrapperDictionary();
-
-    private static ModuleBuilder _moduleBuilder;
-
-    private static ModuleBuilder ModuleBuilder
-    {
-      get
-      {
-        Init();
-        return _moduleBuilder;
-      }
-    }
-
-    private static void Init()
-    {
-      if (_moduleBuilder == null)
-      {
-        lock (_lock)
-        {
-          if (_moduleBuilder == null)
-          {
-            AssemblyName assemblyName = new AssemblyName("Newtonsoft.Json.Dynamic");
-            assemblyName.KeyPair = new StrongNameKeyPair(GetStrongKey());
-
-            AssemblyBuilder assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
-            _moduleBuilder = assembly.DefineDynamicModule("Newtonsoft.Json.DynamicModule", false);
-          }
-        }
-      }
-    }
-
-    private static byte[] GetStrongKey()
-    {
-      const string name = "Newtonsoft.Json.Dynamic.snk";
-
-      using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name))
-      {
-        if (stream == null)
-          throw new MissingManifestResourceException("Should have " + name + " as an embedded resource.");
-
-        int length = (int)stream.Length;
-        byte[] buffer = new byte[length];
-        stream.Read(buffer, 0, length);
-
-        return buffer;
-      }
-    }
-
-    public static Type GetWrapper(Type interfaceType, Type realObjectType)
-    {
-      Type wrapperType = _wrapperDictionary.GetType(interfaceType, realObjectType);
-
-      if (wrapperType == null)
-      {
-        lock (_lock)
-        {
-          wrapperType = _wrapperDictionary.GetType(interfaceType, realObjectType);
-
-          if (wrapperType == null)
-          {
-            wrapperType = GenerateWrapperType(interfaceType, realObjectType);
-            _wrapperDictionary.SetType(interfaceType, realObjectType, wrapperType);
-          }
-        }
-      }
-
-      return wrapperType;
-    }
-
-    public static object GetUnderlyingObject(object wrapper)
-    {
-      DynamicWrapperBase wrapperBase = wrapper as DynamicWrapperBase;
-      if (wrapperBase == null)
-        throw new ArgumentException("Object is not a wrapper.", "wrapper");
-
-      return wrapperBase.UnderlyingObject;
-    }
-
-    private static Type GenerateWrapperType(Type interfaceType, Type underlyingType)
-    {
-      TypeBuilder wrapperBuilder = ModuleBuilder.DefineType(
-          "{0}_{1}_Wrapper".FormatWith(CultureInfo.InvariantCulture, interfaceType.Name, underlyingType.Name),
-          TypeAttributes.NotPublic | TypeAttributes.Sealed,
-          typeof(DynamicWrapperBase),
-          new[] { interfaceType });
-
-      WrapperMethodBuilder wrapperMethod = new WrapperMethodBuilder(underlyingType, wrapperBuilder);
-
-      foreach (MethodInfo method in interfaceType.GetAllMethods())
-      {
-        wrapperMethod.Generate(method);
-      }
-
-      return wrapperBuilder.CreateType();
-    }
-
-    public static T CreateWrapper<T>(object realObject) where T : class
-    {
-      var dynamicType = GetWrapper(typeof(T), realObject.GetType());
-      var dynamicWrapper = (DynamicWrapperBase)Activator.CreateInstance(dynamicType);
-
-      dynamicWrapper.UnderlyingObject = realObject;
-
-      return dynamicWrapper as T;
-    }
-  }
-
-  internal class WrapperMethodBuilder
-  {
-    private readonly Type _realObjectType;
-    private readonly TypeBuilder _wrapperBuilder;
-
-    public WrapperMethodBuilder(Type realObjectType, TypeBuilder proxyBuilder)
-    {
-      _realObjectType = realObjectType;
-      _wrapperBuilder = proxyBuilder;
-    }
-
-    public void Generate(MethodInfo newMethod)
-    {
-      if (newMethod.IsGenericMethod)
-        newMethod = newMethod.GetGenericMethodDefinition();
-
-      FieldInfo srcField = typeof(DynamicWrapperBase).GetField("UnderlyingObject", BindingFlags.Instance | BindingFlags.NonPublic);
-
-      var parameters = newMethod.GetParameters();
-      var parameterTypes = parameters.Select(parameter => parameter.ParameterType).ToArray();
-
-      MethodBuilder methodBuilder = _wrapperBuilder.DefineMethod(
-          newMethod.Name,
-          MethodAttributes.Public | MethodAttributes.Virtual,
-          newMethod.ReturnType,
-          parameterTypes);
-
-      if (newMethod.IsGenericMethod)
-      {
-        methodBuilder.DefineGenericParameters(
-            newMethod.GetGenericArguments().Select(arg => arg.Name).ToArray());
-      }
-
-      ILGenerator ilGenerator = methodBuilder.GetILGenerator();
-
-      LoadUnderlyingObject(ilGenerator, srcField);
-      PushParameters(parameters, ilGenerator);
-      ExecuteMethod(newMethod, parameterTypes, ilGenerator);
-      Return(ilGenerator);
-    }
-
-    private static void Return(ILGenerator ilGenerator)
-    {
-      ilGenerator.Emit(OpCodes.Ret);
-    }
-
-    private void ExecuteMethod(MethodBase newMethod, Type[] parameterTypes, ILGenerator ilGenerator)
-    {
-      MethodInfo srcMethod = GetMethod(newMethod, parameterTypes);
-
-      if (srcMethod == null)
-        throw new MissingMethodException("Unable to find method " + newMethod.Name + " on " + _realObjectType.FullName);
-
-      ilGenerator.Emit(OpCodes.Call, srcMethod);
-    }
-
-    private MethodInfo GetMethod(MethodBase realMethod, Type[] parameterTypes)
-    {
-      if (realMethod.IsGenericMethod)
-        return _realObjectType.GetGenericMethod(realMethod.Name, parameterTypes);
-
-      return _realObjectType.GetMethod(realMethod.Name, parameterTypes);
-    }
-
-    private static void PushParameters(ICollection<ParameterInfo> parameters, ILGenerator ilGenerator)
-    {
-      for (int i = 1; i < parameters.Count + 1; i++)
-        ilGenerator.Emit(OpCodes.Ldarg, i);
-    }
-
-    private static void LoadUnderlyingObject(ILGenerator ilGenerator, FieldInfo srcField)
-    {
-      ilGenerator.Emit(OpCodes.Ldarg_0);
-      ilGenerator.Emit(OpCodes.Ldfld, srcField);
-    }
-  }
-
-  internal class WrapperDictionary
-  {
-    private readonly Dictionary<string, Type> _wrapperTypes = new Dictionary<string, Type>();
-
-    private static string GenerateKey(Type interfaceType, Type realObjectType)
-    {
-      return interfaceType.Name + "_" + realObjectType.Name;
-    }
-
-    public Type GetType(Type interfaceType, Type realObjectType)
-    {
-      string key = GenerateKey(interfaceType, realObjectType);
-
-      if (_wrapperTypes.ContainsKey(key))
-        return _wrapperTypes[key];
-
-      return null;
-    }
-
-    public void SetType(Type interfaceType, Type realObjectType, Type wrapperType)
-    {
-      string key = GenerateKey(interfaceType, realObjectType);
-
-      if (_wrapperTypes.ContainsKey(key))
-        _wrapperTypes[key] = wrapperType;
-      else
-        _wrapperTypes.Add(key, wrapperType);
-    }
-  }
-}
+﻿#if !SILVERLIGHT && !PocketPC && !NETFX_CORE
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Resources;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class DynamicWrapperBase
+  {
+    internal protected object UnderlyingObject;
+  }
+
+  internal static class DynamicWrapper
+  {
+    private static readonly object _lock = new object();
+    private static readonly WrapperDictionary _wrapperDictionary = new WrapperDictionary();
+
+    private static ModuleBuilder _moduleBuilder;
+
+    private static ModuleBuilder ModuleBuilder
+    {
+      get
+      {
+        Init();
+        return _moduleBuilder;
+      }
+    }
+
+    private static void Init()
+    {
+      if (_moduleBuilder == null)
+      {
+        lock (_lock)
+        {
+          if (_moduleBuilder == null)
+          {
+            AssemblyName assemblyName = new AssemblyName("Newtonsoft.Json.Dynamic");
+            assemblyName.KeyPair = new StrongNameKeyPair(GetStrongKey());
+
+            AssemblyBuilder assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
+            _moduleBuilder = assembly.DefineDynamicModule("Newtonsoft.Json.DynamicModule", false);
+          }
+        }
+      }
+    }
+
+    private static byte[] GetStrongKey()
+    {
+      const string name = "Newtonsoft.Json.Dynamic.snk";
+
+      using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name))
+      {
+        if (stream == null)
+          throw new MissingManifestResourceException("Should have " + name + " as an embedded resource.");
+
+        int length = (int)stream.Length;
+        byte[] buffer = new byte[length];
+        stream.Read(buffer, 0, length);
+
+        return buffer;
+      }
+    }
+
+    public static Type GetWrapper(Type interfaceType, Type realObjectType)
+    {
+      Type wrapperType = _wrapperDictionary.GetType(interfaceType, realObjectType);
+
+      if (wrapperType == null)
+      {
+        lock (_lock)
+        {
+          wrapperType = _wrapperDictionary.GetType(interfaceType, realObjectType);
+
+          if (wrapperType == null)
+          {
+            wrapperType = GenerateWrapperType(interfaceType, realObjectType);
+            _wrapperDictionary.SetType(interfaceType, realObjectType, wrapperType);
+          }
+        }
+      }
+
+      return wrapperType;
+    }
+
+    public static object GetUnderlyingObject(object wrapper)
+    {
+      DynamicWrapperBase wrapperBase = wrapper as DynamicWrapperBase;
+      if (wrapperBase == null)
+        throw new ArgumentException("Object is not a wrapper.", "wrapper");
+
+      return wrapperBase.UnderlyingObject;
+    }
+
+    private static Type GenerateWrapperType(Type interfaceType, Type underlyingType)
+    {
+      TypeBuilder wrapperBuilder = ModuleBuilder.DefineType(
+          "{0}_{1}_Wrapper".FormatWith(CultureInfo.InvariantCulture, interfaceType.Name, underlyingType.Name),
+          TypeAttributes.NotPublic | TypeAttributes.Sealed,
+          typeof(DynamicWrapperBase),
+          new[] { interfaceType });
+
+      WrapperMethodBuilder wrapperMethod = new WrapperMethodBuilder(underlyingType, wrapperBuilder);
+
+      foreach (MethodInfo method in interfaceType.GetAllMethods())
+      {
+        wrapperMethod.Generate(method);
+      }
+
+      return wrapperBuilder.CreateType();
+    }
+
+    public static T CreateWrapper<T>(object realObject) where T : class
+    {
+      var dynamicType = GetWrapper(typeof(T), realObject.GetType());
+      var dynamicWrapper = (DynamicWrapperBase)Activator.CreateInstance(dynamicType);
+
+      dynamicWrapper.UnderlyingObject = realObject;
+
+      return dynamicWrapper as T;
+    }
+  }
+
+  internal class WrapperMethodBuilder
+  {
+    private readonly Type _realObjectType;
+    private readonly TypeBuilder _wrapperBuilder;
+
+    public WrapperMethodBuilder(Type realObjectType, TypeBuilder proxyBuilder)
+    {
+      _realObjectType = realObjectType;
+      _wrapperBuilder = proxyBuilder;
+    }
+
+    public void Generate(MethodInfo newMethod)
+    {
+      if (newMethod.IsGenericMethod)
+        newMethod = newMethod.GetGenericMethodDefinition();
+
+      FieldInfo srcField = typeof(DynamicWrapperBase).GetField("UnderlyingObject", BindingFlags.Instance | BindingFlags.NonPublic);
+
+      var parameters = newMethod.GetParameters();
+      var parameterTypes = parameters.Select(parameter => parameter.ParameterType).ToArray();
+
+      MethodBuilder methodBuilder = _wrapperBuilder.DefineMethod(
+          newMethod.Name,
+          MethodAttributes.Public | MethodAttributes.Virtual,
+          newMethod.ReturnType,
+          parameterTypes);
+
+      if (newMethod.IsGenericMethod)
+      {
+        methodBuilder.DefineGenericParameters(
+            newMethod.GetGenericArguments().Select(arg => arg.Name).ToArray());
+      }
+
+      ILGenerator ilGenerator = methodBuilder.GetILGenerator();
+
+      LoadUnderlyingObject(ilGenerator, srcField);
+      PushParameters(parameters, ilGenerator);
+      ExecuteMethod(newMethod, parameterTypes, ilGenerator);
+      Return(ilGenerator);
+    }
+
+    private static void Return(ILGenerator ilGenerator)
+    {
+      ilGenerator.Emit(OpCodes.Ret);
+    }
+
+    private void ExecuteMethod(MethodBase newMethod, Type[] parameterTypes, ILGenerator ilGenerator)
+    {
+      MethodInfo srcMethod = GetMethod(newMethod, parameterTypes);
+
+      if (srcMethod == null)
+        throw new MissingMethodException("Unable to find method " + newMethod.Name + " on " + _realObjectType.FullName);
+
+      ilGenerator.Emit(OpCodes.Call, srcMethod);
+    }
+
+    private MethodInfo GetMethod(MethodBase realMethod, Type[] parameterTypes)
+    {
+      if (realMethod.IsGenericMethod)
+        return _realObjectType.GetGenericMethod(realMethod.Name, parameterTypes);
+
+      return _realObjectType.GetMethod(realMethod.Name, parameterTypes);
+    }
+
+    private static void PushParameters(ICollection<ParameterInfo> parameters, ILGenerator ilGenerator)
+    {
+      for (int i = 1; i < parameters.Count + 1; i++)
+        ilGenerator.Emit(OpCodes.Ldarg, i);
+    }
+
+    private static void LoadUnderlyingObject(ILGenerator ilGenerator, FieldInfo srcField)
+    {
+      ilGenerator.Emit(OpCodes.Ldarg_0);
+      ilGenerator.Emit(OpCodes.Ldfld, srcField);
+    }
+  }
+
+  internal class WrapperDictionary
+  {
+    private readonly Dictionary<string, Type> _wrapperTypes = new Dictionary<string, Type>();
+
+    private static string GenerateKey(Type interfaceType, Type realObjectType)
+    {
+      return interfaceType.Name + "_" + realObjectType.Name;
+    }
+
+    public Type GetType(Type interfaceType, Type realObjectType)
+    {
+      string key = GenerateKey(interfaceType, realObjectType);
+
+      if (_wrapperTypes.ContainsKey(key))
+        return _wrapperTypes[key];
+
+      return null;
+    }
+
+    public void SetType(Type interfaceType, Type realObjectType, Type wrapperType)
+    {
+      string key = GenerateKey(interfaceType, realObjectType);
+
+      if (_wrapperTypes.ContainsKey(key))
+        _wrapperTypes[key] = wrapperType;
+      else
+        _wrapperTypes.Add(key, wrapperType);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumUtils.cs
@@ -1,147 +1,147 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using System.Reflection;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class EnumUtils
-  {
-    public static IList<T> GetFlagsValues<T>(T value) where T : struct
-    {
-      Type enumType = typeof(T);
-
-      if (!enumType.IsDefined(typeof(FlagsAttribute), false))
-        throw new Exception("Enum type {0} is not a set of flags.".FormatWith(CultureInfo.InvariantCulture, enumType));
-
-      Type underlyingType = Enum.GetUnderlyingType(value.GetType());
-
-      ulong num = Convert.ToUInt64(value, CultureInfo.InvariantCulture);
-      EnumValues<ulong> enumNameValues = GetNamesAndValues<T>();
-      IList<T> selectedFlagsValues = new List<T>();
-
-      foreach (EnumValue<ulong> enumNameValue in enumNameValues)
-      {
-        if ((num & enumNameValue.Value) == enumNameValue.Value && enumNameValue.Value != 0)
-          selectedFlagsValues.Add((T)Convert.ChangeType(enumNameValue.Value, underlyingType, CultureInfo.CurrentCulture));
-      }
-
-      if (selectedFlagsValues.Count == 0 && enumNameValues.SingleOrDefault(v => v.Value == 0) != null)
-        selectedFlagsValues.Add(default(T));
-
-      return selectedFlagsValues;
-    }
-
-    /// <summary>
-    /// Gets a dictionary of the names and values of an Enum type.
-    /// </summary>
-    /// <returns></returns>
-    public static EnumValues<ulong> GetNamesAndValues<T>() where T : struct
-    {
-      return GetNamesAndValues<ulong>(typeof(T));
-    }
-
-    /// <summary>
-    /// Gets a dictionary of the names and values of an Enum type.
-    /// </summary>
-    /// <param name="enumType">The enum type to get names and values for.</param>
-    /// <returns></returns>
-    public static EnumValues<TUnderlyingType> GetNamesAndValues<TUnderlyingType>(Type enumType) where TUnderlyingType : struct
-    {
-      if (enumType == null)
-        throw new ArgumentNullException("enumType");
-
-      ValidationUtils.ArgumentTypeIsEnum(enumType, "enumType");
-
-      IList<object> enumValues = GetValues(enumType);
-      IList<string> enumNames = GetNames(enumType);
-
-      EnumValues<TUnderlyingType> nameValues = new EnumValues<TUnderlyingType>();
-
-      for (int i = 0; i < enumValues.Count; i++)
-      {
-        try
-        {
-          nameValues.Add(new EnumValue<TUnderlyingType>(enumNames[i], (TUnderlyingType)Convert.ChangeType(enumValues[i], typeof(TUnderlyingType), CultureInfo.CurrentCulture)));
-        }
-        catch (OverflowException e)
-        {
-          throw new Exception(
-            string.Format(CultureInfo.InvariantCulture, "Value from enum with the underlying type of {0} cannot be added to dictionary with a value type of {1}. Value was too large: {2}",
-              Enum.GetUnderlyingType(enumType), typeof(TUnderlyingType), Convert.ToUInt64(enumValues[i], CultureInfo.InvariantCulture)), e);
-        }
-      }
-
-      return nameValues;
-    }
-
-    public static IList<object> GetValues(Type enumType)
-    {
-      if (!enumType.IsEnum())
-        throw new ArgumentException("Type '" + enumType.Name + "' is not an enum.");
-
-      List<object> values = new List<object>();
-
-      var fields = from field in enumType.GetFields()
-                   where field.IsLiteral
-                   select field;
-
-      foreach (FieldInfo field in fields)
-      {
-        object value = field.GetValue(enumType);
-        values.Add(value);
-      }
-
-      return values;
-    }
-
-    public static IList<string> GetNames(Type enumType)
-    {
-      if (!enumType.IsEnum())
-        throw new ArgumentException("Type '" + enumType.Name + "' is not an enum.");
-
-      List<string> values = new List<string>();
-
-      var fields = from field in enumType.GetFields()
-                   where field.IsLiteral
-                   select field;
-
-      foreach (FieldInfo field in fields)
-      {
-        values.Add(field.Name);
-      }
-
-      return values;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using System.Reflection;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class EnumUtils
+  {
+    public static IList<T> GetFlagsValues<T>(T value) where T : struct
+    {
+      Type enumType = typeof(T);
+
+      if (!enumType.IsDefined(typeof(FlagsAttribute), false))
+        throw new Exception("Enum type {0} is not a set of flags.".FormatWith(CultureInfo.InvariantCulture, enumType));
+
+      Type underlyingType = Enum.GetUnderlyingType(value.GetType());
+
+      ulong num = Convert.ToUInt64(value, CultureInfo.InvariantCulture);
+      EnumValues<ulong> enumNameValues = GetNamesAndValues<T>();
+      IList<T> selectedFlagsValues = new List<T>();
+
+      foreach (EnumValue<ulong> enumNameValue in enumNameValues)
+      {
+        if ((num & enumNameValue.Value) == enumNameValue.Value && enumNameValue.Value != 0)
+          selectedFlagsValues.Add((T)Convert.ChangeType(enumNameValue.Value, underlyingType, CultureInfo.CurrentCulture));
+      }
+
+      if (selectedFlagsValues.Count == 0 && enumNameValues.SingleOrDefault(v => v.Value == 0) != null)
+        selectedFlagsValues.Add(default(T));
+
+      return selectedFlagsValues;
+    }
+
+    /// <summary>
+    /// Gets a dictionary of the names and values of an Enum type.
+    /// </summary>
+    /// <returns></returns>
+    public static EnumValues<ulong> GetNamesAndValues<T>() where T : struct
+    {
+      return GetNamesAndValues<ulong>(typeof(T));
+    }
+
+    /// <summary>
+    /// Gets a dictionary of the names and values of an Enum type.
+    /// </summary>
+    /// <param name="enumType">The enum type to get names and values for.</param>
+    /// <returns></returns>
+    public static EnumValues<TUnderlyingType> GetNamesAndValues<TUnderlyingType>(Type enumType) where TUnderlyingType : struct
+    {
+      if (enumType == null)
+        throw new ArgumentNullException("enumType");
+
+      ValidationUtils.ArgumentTypeIsEnum(enumType, "enumType");
+
+      IList<object> enumValues = GetValues(enumType);
+      IList<string> enumNames = GetNames(enumType);
+
+      EnumValues<TUnderlyingType> nameValues = new EnumValues<TUnderlyingType>();
+
+      for (int i = 0; i < enumValues.Count; i++)
+      {
+        try
+        {
+          nameValues.Add(new EnumValue<TUnderlyingType>(enumNames[i], (TUnderlyingType)Convert.ChangeType(enumValues[i], typeof(TUnderlyingType), CultureInfo.CurrentCulture)));
+        }
+        catch (OverflowException e)
+        {
+          throw new Exception(
+            string.Format(CultureInfo.InvariantCulture, "Value from enum with the underlying type of {0} cannot be added to dictionary with a value type of {1}. Value was too large: {2}",
+              Enum.GetUnderlyingType(enumType), typeof(TUnderlyingType), Convert.ToUInt64(enumValues[i], CultureInfo.InvariantCulture)), e);
+        }
+      }
+
+      return nameValues;
+    }
+
+    public static IList<object> GetValues(Type enumType)
+    {
+      if (!enumType.IsEnum())
+        throw new ArgumentException("Type '" + enumType.Name + "' is not an enum.");
+
+      List<object> values = new List<object>();
+
+      var fields = from field in enumType.GetFields()
+                   where field.IsLiteral
+                   select field;
+
+      foreach (FieldInfo field in fields)
+      {
+        object value = field.GetValue(enumType);
+        values.Add(value);
+      }
+
+      return values;
+    }
+
+    public static IList<string> GetNames(Type enumType)
+    {
+      if (!enumType.IsEnum())
+        throw new ArgumentException("Type '" + enumType.Name + "' is not an enum.");
+
+      List<string> values = new List<string>();
+
+      var fields = from field in enumType.GetFields()
+                   where field.IsLiteral
+                   select field;
+
+      foreach (FieldInfo field in fields)
+      {
+        values.Add(field.Name);
+      }
+
+      return values;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumValue.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumValue.cs
@@ -1,48 +1,48 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class EnumValue<T> where T : struct
-  {
-    private readonly string _name;
-    private readonly T _value;
-
-    public string Name
-    {
-      get { return _name; }
-    }
-    public T Value
-    {
-      get { return _value; }
-    }
-
-    public EnumValue(string name, T value)
-    {
-      _name = name;
-      _value = value;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class EnumValue<T> where T : struct
+  {
+    private readonly string _name;
+    private readonly T _value;
+
+    public string Name
+    {
+      get { return _name; }
+    }
+    public T Value
+    {
+      get { return _value; }
+    }
+
+    public EnumValue(string name, T value)
+    {
+      _name = name;
+      _value = value;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumValues.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/EnumValues.cs
@@ -1,37 +1,37 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections.ObjectModel;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class EnumValues<T> : KeyedCollection<string, EnumValue<T>> where T : struct
-  {
-    protected override string GetKeyForItem(EnumValue<T> item)
-    {
-      return item.Name;
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections.ObjectModel;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class EnumValues<T> : KeyedCollection<string, EnumValue<T>> where T : struct
+  {
+    protected override string GetKeyForItem(EnumValue<T> item)
+    {
+      return item.Name;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ILGeneratorExtensions.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ILGeneratorExtensions.cs
@@ -1,74 +1,74 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-#if !PocketPC && !SILVERLIGHT
-using System;
-using System.Reflection.Emit;
-using System.Reflection;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class ILGeneratorExtensions
-  {
-    public static void PushInstance(this ILGenerator generator, Type type)
-    {
-      generator.Emit(OpCodes.Ldarg_0);
-      if (type.IsValueType())
-        generator.Emit(OpCodes.Unbox, type);
-      else
-        generator.Emit(OpCodes.Castclass, type);
-    }
-
-    public static void BoxIfNeeded(this ILGenerator generator, Type type)
-    {
-      if (type.IsValueType())
-        generator.Emit(OpCodes.Box, type);
-      else
-        generator.Emit(OpCodes.Castclass, type);
-    }
-
-    public static void UnboxIfNeeded(this ILGenerator generator, Type type)
-    {
-      if (type.IsValueType())
-        generator.Emit(OpCodes.Unbox_Any, type);
-      else
-        generator.Emit(OpCodes.Castclass, type);
-    }
-
-    public static void CallMethod(this ILGenerator generator, MethodInfo methodInfo)
-    {
-      if (methodInfo.IsFinal || !methodInfo.IsVirtual)
-        generator.Emit(OpCodes.Call, methodInfo);
-      else
-        generator.Emit(OpCodes.Callvirt, methodInfo);
-    }
-
-    public static void Return(this ILGenerator generator)
-    {
-      generator.Emit(OpCodes.Ret);
-    }
-  }
-}
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+#if !PocketPC && !SILVERLIGHT
+using System;
+using System.Reflection.Emit;
+using System.Reflection;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class ILGeneratorExtensions
+  {
+    public static void PushInstance(this ILGenerator generator, Type type)
+    {
+      generator.Emit(OpCodes.Ldarg_0);
+      if (type.IsValueType())
+        generator.Emit(OpCodes.Unbox, type);
+      else
+        generator.Emit(OpCodes.Castclass, type);
+    }
+
+    public static void BoxIfNeeded(this ILGenerator generator, Type type)
+    {
+      if (type.IsValueType())
+        generator.Emit(OpCodes.Box, type);
+      else
+        generator.Emit(OpCodes.Castclass, type);
+    }
+
+    public static void UnboxIfNeeded(this ILGenerator generator, Type type)
+    {
+      if (type.IsValueType())
+        generator.Emit(OpCodes.Unbox_Any, type);
+      else
+        generator.Emit(OpCodes.Castclass, type);
+    }
+
+    public static void CallMethod(this ILGenerator generator, MethodInfo methodInfo)
+    {
+      if (methodInfo.IsFinal || !methodInfo.IsVirtual)
+        generator.Emit(OpCodes.Call, methodInfo);
+      else
+        generator.Emit(OpCodes.Callvirt, methodInfo);
+    }
+
+    public static void Return(this ILGenerator generator)
+    {
+      generator.Emit(OpCodes.Ret);
+    }
+  }
+}
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs
@@ -1,151 +1,151 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class JavaScriptUtils
-  {
-    public static void WriteEscapedJavaScriptString(TextWriter writer, string s, char delimiter, bool appendDelimiters)
-    {
-      // leading delimiter
-      if (appendDelimiters)
-        writer.Write(delimiter);
-
-      if (s != null)
-      {
-        char[] chars = null;
-        int lastWritePosition = 0;
-
-        for (int i = 0; i < s.Length; i++)
-        {
-          var c = s[i];
-
-          // don't escape standard text/numbers except '\' and the text delimiter
-          if (c >= ' ' && c < 128 && c != '\\' && c != delimiter)
-            continue;
-
-          string escapedValue;
-
-          switch (c)
-          {
-            case '\t':
-              escapedValue = @"\t";
-              break;
-            case '\n':
-              escapedValue = @"\n";
-              break;
-            case '\r':
-              escapedValue = @"\r";
-              break;
-            case '\f':
-              escapedValue = @"\f";
-              break;
-            case '\b':
-              escapedValue = @"\b";
-              break;
-            case '\\':
-              escapedValue = @"\\";
-              break;
-            case '\u0085': // Next Line
-              escapedValue = @"\u0085";
-              break;
-            case '\u2028': // Line Separator
-              escapedValue = @"\u2028";
-              break;
-            case '\u2029': // Paragraph Separator
-              escapedValue = @"\u2029";
-              break;
-            case '\'':
-              // this charater is being used as the delimiter
-              escapedValue = @"\'";
-              break;
-            case '"':
-              // this charater is being used as the delimiter
-              escapedValue = "\\\"";
-              break;
-            default:
-              escapedValue = (c <= '\u001f') ? StringUtils.ToCharAsUnicode(c) : null;
-              break;
-          }
-
-          if (escapedValue == null)
-            continue;
-
-          if (i > lastWritePosition)
-          {
-            if (chars == null)
-              chars = s.ToCharArray();
-
-            // write unchanged chars before writing escaped text
-            writer.Write(chars, lastWritePosition, i - lastWritePosition);
-          }
-
-          lastWritePosition = i + 1;
-          writer.Write(escapedValue);
-        }
-
-        if (lastWritePosition == 0)
-        {
-          // no escaped text, write entire string
-          writer.Write(s);
-        }
-        else
-        {
-          if (chars == null)
-            chars = s.ToCharArray();
-
-          // write remaining text
-          writer.Write(chars, lastWritePosition, s.Length - lastWritePosition);
-        }
-      }
-
-      // trailing delimiter
-      if (appendDelimiters)
-        writer.Write(delimiter);
-    }
-
-    public static string ToEscapedJavaScriptString(string value)
-    {
-      return ToEscapedJavaScriptString(value, '"', true);
-    }
-
-    public static string ToEscapedJavaScriptString(string value, char delimiter, bool appendDelimiters)
-    {
-      using (StringWriter w = StringUtils.CreateStringWriter(StringUtils.GetLength(value) ?? 16))
-      {
-        WriteEscapedJavaScriptString(w, value, delimiter, appendDelimiters);
-        return w.ToString();
-      }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Globalization;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class JavaScriptUtils
+  {
+    public static void WriteEscapedJavaScriptString(TextWriter writer, string s, char delimiter, bool appendDelimiters)
+    {
+      // leading delimiter
+      if (appendDelimiters)
+        writer.Write(delimiter);
+
+      if (s != null)
+      {
+        char[] chars = null;
+        int lastWritePosition = 0;
+
+        for (int i = 0; i < s.Length; i++)
+        {
+          var c = s[i];
+
+          // don't escape standard text/numbers except '\' and the text delimiter
+          if (c >= ' ' && c < 128 && c != '\\' && c != delimiter)
+            continue;
+
+          string escapedValue;
+
+          switch (c)
+          {
+            case '\t':
+              escapedValue = @"\t";
+              break;
+            case '\n':
+              escapedValue = @"\n";
+              break;
+            case '\r':
+              escapedValue = @"\r";
+              break;
+            case '\f':
+              escapedValue = @"\f";
+              break;
+            case '\b':
+              escapedValue = @"\b";
+              break;
+            case '\\':
+              escapedValue = @"\\";
+              break;
+            case '\u0085': // Next Line
+              escapedValue = @"\u0085";
+              break;
+            case '\u2028': // Line Separator
+              escapedValue = @"\u2028";
+              break;
+            case '\u2029': // Paragraph Separator
+              escapedValue = @"\u2029";
+              break;
+            case '\'':
+              // this charater is being used as the delimiter
+              escapedValue = @"\'";
+              break;
+            case '"':
+              // this charater is being used as the delimiter
+              escapedValue = "\\\"";
+              break;
+            default:
+              escapedValue = (c <= '\u001f') ? StringUtils.ToCharAsUnicode(c) : null;
+              break;
+          }
+
+          if (escapedValue == null)
+            continue;
+
+          if (i > lastWritePosition)
+          {
+            if (chars == null)
+              chars = s.ToCharArray();
+
+            // write unchanged chars before writing escaped text
+            writer.Write(chars, lastWritePosition, i - lastWritePosition);
+          }
+
+          lastWritePosition = i + 1;
+          writer.Write(escapedValue);
+        }
+
+        if (lastWritePosition == 0)
+        {
+          // no escaped text, write entire string
+          writer.Write(s);
+        }
+        else
+        {
+          if (chars == null)
+            chars = s.ToCharArray();
+
+          // write remaining text
+          writer.Write(chars, lastWritePosition, s.Length - lastWritePosition);
+        }
+      }
+
+      // trailing delimiter
+      if (appendDelimiters)
+        writer.Write(delimiter);
+    }
+
+    public static string ToEscapedJavaScriptString(string value)
+    {
+      return ToEscapedJavaScriptString(value, '"', true);
+    }
+
+    public static string ToEscapedJavaScriptString(string value, char delimiter, bool appendDelimiters)
+    {
+      using (StringWriter w = StringUtils.CreateStringWriter(StringUtils.GetLength(value) ?? 16))
+      {
+        WriteEscapedJavaScriptString(w, value, delimiter, appendDelimiters);
+        return w.ToString();
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/LateBoundReflectionDelegateFactory.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/LateBoundReflectionDelegateFactory.cs
@@ -1,95 +1,95 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using Newtonsoft.Json.Serialization;
-using System.Reflection;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class LateBoundReflectionDelegateFactory : ReflectionDelegateFactory
-  {
-    private static readonly LateBoundReflectionDelegateFactory _instance = new LateBoundReflectionDelegateFactory();
-
-    internal static ReflectionDelegateFactory Instance
-    {
-      get { return _instance; }
-    }
-
-    public override MethodCall<T, object> CreateMethodCall<T>(MethodBase method)
-    {
-      ValidationUtils.ArgumentNotNull(method, "method");
-
-      ConstructorInfo c = method as ConstructorInfo;
-      if (c != null)
-        return (o, a) => c.Invoke(a);
-
-      return (o, a) => method.Invoke(o, a);
-    }
-
-    public override Func<T> CreateDefaultConstructor<T>(Type type)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-
-      if (type.IsValueType())
-        return () => (T)ReflectionUtils.CreateInstance(type);
-
-      ConstructorInfo constructorInfo = ReflectionUtils.GetDefaultConstructor(type, true);
-
-      return () => (T)constructorInfo.Invoke(null);
-    }
-
-    public override Func<T, object> CreateGet<T>(PropertyInfo propertyInfo)
-    {
-      ValidationUtils.ArgumentNotNull(propertyInfo, "propertyInfo");
-
-      return o => propertyInfo.GetValue(o, null);
-    }
-
-    public override Func<T, object> CreateGet<T>(FieldInfo fieldInfo)
-    {
-      ValidationUtils.ArgumentNotNull(fieldInfo, "fieldInfo");
-
-      return o => fieldInfo.GetValue(o);
-    }
-
-    public override Action<T, object> CreateSet<T>(FieldInfo fieldInfo)
-    {
-      ValidationUtils.ArgumentNotNull(fieldInfo, "fieldInfo");
-
-      return (o, v) => fieldInfo.SetValue(o, v);
-    }
-
-    public override Action<T, object> CreateSet<T>(PropertyInfo propertyInfo)
-    {
-      ValidationUtils.ArgumentNotNull(propertyInfo, "propertyInfo");
-
-      return (o, v) => propertyInfo.SetValue(o, v, null);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using Newtonsoft.Json.Serialization;
+using System.Reflection;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class LateBoundReflectionDelegateFactory : ReflectionDelegateFactory
+  {
+    private static readonly LateBoundReflectionDelegateFactory _instance = new LateBoundReflectionDelegateFactory();
+
+    internal static ReflectionDelegateFactory Instance
+    {
+      get { return _instance; }
+    }
+
+    public override MethodCall<T, object> CreateMethodCall<T>(MethodBase method)
+    {
+      ValidationUtils.ArgumentNotNull(method, "method");
+
+      ConstructorInfo c = method as ConstructorInfo;
+      if (c != null)
+        return (o, a) => c.Invoke(a);
+
+      return (o, a) => method.Invoke(o, a);
+    }
+
+    public override Func<T> CreateDefaultConstructor<T>(Type type)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+
+      if (type.IsValueType())
+        return () => (T)ReflectionUtils.CreateInstance(type);
+
+      ConstructorInfo constructorInfo = ReflectionUtils.GetDefaultConstructor(type, true);
+
+      return () => (T)constructorInfo.Invoke(null);
+    }
+
+    public override Func<T, object> CreateGet<T>(PropertyInfo propertyInfo)
+    {
+      ValidationUtils.ArgumentNotNull(propertyInfo, "propertyInfo");
+
+      return o => propertyInfo.GetValue(o, null);
+    }
+
+    public override Func<T, object> CreateGet<T>(FieldInfo fieldInfo)
+    {
+      ValidationUtils.ArgumentNotNull(fieldInfo, "fieldInfo");
+
+      return o => fieldInfo.GetValue(o);
+    }
+
+    public override Action<T, object> CreateSet<T>(FieldInfo fieldInfo)
+    {
+      ValidationUtils.ArgumentNotNull(fieldInfo, "fieldInfo");
+
+      return (o, v) => fieldInfo.SetValue(o, v);
+    }
+
+    public override Action<T, object> CreateSet<T>(PropertyInfo propertyInfo)
+    {
+      ValidationUtils.ArgumentNotNull(propertyInfo, "propertyInfo");
+
+      return (o, v) => propertyInfo.SetValue(o, v, null);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/LinqBridge.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/LinqBridge.cs
@@ -1,3010 +1,3010 @@
-﻿#if NET20
-
-#region License, Terms and Author(s)
-//
-// LINQBridge
-// Copyright (c) 2007-9 Atif Aziz, Joseph Albahari. All rights reserved.
-//
-//  Author(s):
-//
-//      Atif Aziz, http://www.raboof.com
-//
-// This library is free software; you can redistribute it and/or modify it 
-// under the terms of the New BSD License, a copy of which should have 
-// been delivered along with this distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Utilities.LinqBridge
-{
-  /// <summary>
-  /// Provides a set of static (Shared in Visual Basic) methods for 
-  /// querying objects that implement <see cref="IEnumerable{T}" />.
-  /// </summary>
-  internal static partial class Enumerable
-  {
-    /// <summary>
-    /// Returns the input typed as <see cref="IEnumerable{T}"/>.
-    /// </summary>
-
-    public static IEnumerable<TSource> AsEnumerable<TSource>(IEnumerable<TSource> source)
-    {
-      return source;
-    }
-
-    /// <summary>
-    /// Returns an empty <see cref="IEnumerable{T}"/> that has the 
-    /// specified type argument.
-    /// </summary>
-
-    public static IEnumerable<TResult> Empty<TResult>()
-    {
-      return Sequence<TResult>.Empty;
-    }
-
-    /// <summary>
-    /// Converts the elements of an <see cref="IEnumerable"/> to the 
-    /// specified type.
-    /// </summary>
-
-    public static IEnumerable<TResult> Cast<TResult>(
-      this IEnumerable source)
-    {
-      CheckNotNull(source, "source");
-
-      return CastYield<TResult>(source);
-    }
-
-    private static IEnumerable<TResult> CastYield<TResult>(
-      IEnumerable source)
-    {
-      foreach (var item in source)
-        yield return (TResult) item;
-    }
-
-    /// <summary>
-    /// Filters the elements of an <see cref="IEnumerable"/> based on a specified type.
-    /// </summary>
-
-    public static IEnumerable<TResult> OfType<TResult>(
-      this IEnumerable source)
-    {
-      CheckNotNull(source, "source");
-
-      return OfTypeYield<TResult>(source);
-    }
-
-    private static IEnumerable<TResult> OfTypeYield<TResult>(
-      IEnumerable source)
-    {
-      foreach (var item in source)
-        if (item is TResult)
-          yield return (TResult) item;
-    }
-
-    /// <summary>
-    /// Generates a sequence of integral numbers within a specified range.
-    /// </summary>
-    /// <param name="start">The value of the first integer in the sequence.</param>
-    /// <param name="count">The number of sequential integers to generate.</param>
-
-    public static IEnumerable<int> Range(int start, int count)
-    {
-      if (count < 0)
-        throw new ArgumentOutOfRangeException("count", count, null);
-
-      var end = (long) start + count;
-      if (end - 1 >= int.MaxValue)
-        throw new ArgumentOutOfRangeException("count", count, null);
-
-      return RangeYield(start, end);
-    }
-
-    private static IEnumerable<int> RangeYield(int start, long end)
-    {
-      for (var i = start; i < end; i++)
-        yield return i;
-    }
-
-    /// <summary>
-    /// Generates a sequence that contains one repeated value.
-    /// </summary>
-
-    public static IEnumerable<TResult> Repeat<TResult>(TResult element, int count)
-    {
-      if (count < 0) throw new ArgumentOutOfRangeException("count", count, null);
-
-      return RepeatYield(element, count);
-    }
-
-    private static IEnumerable<TResult> RepeatYield<TResult>(TResult element, int count)
-    {
-      for (var i = 0; i < count; i++)
-        yield return element;
-    }
-
-    /// <summary>
-    /// Filters a sequence of values based on a predicate.
-    /// </summary>
-
-    public static IEnumerable<TSource> Where<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      CheckNotNull(predicate, "predicate");
-
-      return source.Where((item, i) => predicate(item));
-    }
-
-    /// <summary>
-    /// Filters a sequence of values based on a predicate. 
-    /// Each element's index is used in the logic of the predicate function.
-    /// </summary>
-
-    public static IEnumerable<TSource> Where<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, bool> predicate)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(predicate, "predicate");
-
-      return WhereYield(source, predicate);
-    }
-
-    private static IEnumerable<TSource> WhereYield<TSource>(
-      IEnumerable<TSource> source,
-      Func<TSource, int, bool> predicate)
-    {
-      var i = 0;
-      foreach (var item in source)
-        if (predicate(item, i++))
-          yield return item;
-    }
-
-    /// <summary>
-    /// Projects each element of a sequence into a new form.
-    /// </summary>
-
-    public static IEnumerable<TResult> Select<TSource, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TResult> selector)
-    {
-      CheckNotNull(selector, "selector");
-
-      return source.Select((item, i) => selector(item));
-    }
-
-    /// <summary>
-    /// Projects each element of a sequence into a new form by 
-    /// incorporating the element's index.
-    /// </summary>
-
-    public static IEnumerable<TResult> Select<TSource, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, TResult> selector)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(selector, "selector");
-
-      return SelectYield(source, selector);
-    }
-
-    private static IEnumerable<TResult> SelectYield<TSource, TResult>(
-      IEnumerable<TSource> source,
-      Func<TSource, int, TResult> selector)
-    {
-      var i = 0;
-      foreach (var item in source)
-        yield return selector(item, i++);
-    }
-
-    /// <summary>
-    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" /> 
-    /// and flattens the resulting sequences into one sequence.
-    /// </summary>
-
-    public static IEnumerable<TResult> SelectMany<TSource, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, IEnumerable<TResult>> selector)
-    {
-      CheckNotNull(selector, "selector");
-
-      return source.SelectMany((item, i) => selector(item));
-    }
-
-    /// <summary>
-    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" />, 
-    /// and flattens the resulting sequences into one sequence. The 
-    /// index of each source element is used in the projected form of 
-    /// that element.
-    /// </summary>
-
-    public static IEnumerable<TResult> SelectMany<TSource, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, IEnumerable<TResult>> selector)
-    {
-      CheckNotNull(selector, "selector");
-
-      return source.SelectMany(selector, (item, subitem) => subitem);
-    }
-
-    /// <summary>
-    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" />, 
-    /// flattens the resulting sequences into one sequence, and invokes 
-    /// a result selector function on each element therein.
-    /// </summary>
-
-    public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, IEnumerable<TCollection>> collectionSelector,
-      Func<TSource, TCollection, TResult> resultSelector)
-    {
-      CheckNotNull(collectionSelector, "collectionSelector");
-
-      return source.SelectMany((item, i) => collectionSelector(item), resultSelector);
-    }
-
-    /// <summary>
-    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" />, 
-    /// flattens the resulting sequences into one sequence, and invokes 
-    /// a result selector function on each element therein. The index of 
-    /// each source element is used in the intermediate projected form 
-    /// of that element.
-    /// </summary>
-
-    public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, IEnumerable<TCollection>> collectionSelector,
-      Func<TSource, TCollection, TResult> resultSelector)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(collectionSelector, "collectionSelector");
-      CheckNotNull(resultSelector, "resultSelector");
-
-      return SelectManyYield(source, collectionSelector, resultSelector);
-    }
-
-    private static IEnumerable<TResult> SelectManyYield<TSource, TCollection, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, IEnumerable<TCollection>> collectionSelector,
-      Func<TSource, TCollection, TResult> resultSelector)
-    {
-      var i = 0;
-      foreach (var item in source)
-        foreach (var subitem in collectionSelector(item, i++))
-          yield return resultSelector(item, subitem);
-    }
-
-    /// <summary>
-    /// Returns elements from a sequence as long as a specified condition is true.
-    /// </summary>
-
-    public static IEnumerable<TSource> TakeWhile<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      CheckNotNull(predicate, "predicate");
-
-      return source.TakeWhile((item, i) => predicate(item));
-    }
-
-    /// <summary>
-    /// Returns elements from a sequence as long as a specified condition is true.
-    /// The element's index is used in the logic of the predicate function.
-    /// </summary>
-
-    public static IEnumerable<TSource> TakeWhile<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, bool> predicate)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(predicate, "predicate");
-
-      return TakeWhileYield(source, predicate);
-    }
-
-    private static IEnumerable<TSource> TakeWhileYield<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, bool> predicate)
-    {
-      var i = 0;
-      foreach (var item in source)
-        if (predicate(item, i++))
-          yield return item;
-        else
-          break;
-    }
-
-    private static class Futures<T>
-    {
-      public static readonly Func<T> Default = () => default(T);
-      public static readonly Func<T> Undefined = () => { throw new InvalidOperationException(); };
-    }
-
-    /// <summary>
-    /// Base implementation of First operator.
-    /// </summary>
-
-    private static TSource FirstImpl<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource> empty)
-    {
-      CheckNotNull(source, "source");
-      Debug.Assert(empty != null);
-
-      var list = source as IList<TSource>; // optimized case for lists
-      if (list != null)
-        return list.Count > 0 ? list[0] : empty();
-
-      using (var e = source.GetEnumerator()) // fallback for enumeration
-        return e.MoveNext() ? e.Current : empty();
-    }
-
-    /// <summary>
-    /// Returns the first element of a sequence.
-    /// </summary>
-
-    public static TSource First<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.FirstImpl(Futures<TSource>.Undefined);
-    }
-
-    /// <summary>
-    /// Returns the first element in a sequence that satisfies a specified condition.
-    /// </summary>
-
-    public static TSource First<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return First(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Returns the first element of a sequence, or a default value if 
-    /// the sequence contains no elements.
-    /// </summary>
-
-    public static TSource FirstOrDefault<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.FirstImpl(Futures<TSource>.Default);
-    }
-
-    /// <summary>
-    /// Returns the first element of the sequence that satisfies a 
-    /// condition or a default value if no such element is found.
-    /// </summary>
-
-    public static TSource FirstOrDefault<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return FirstOrDefault(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Base implementation of Last operator.
-    /// </summary>
-
-    private static TSource LastImpl<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource> empty)
-    {
-      CheckNotNull(source, "source");
-
-      var list = source as IList<TSource>; // optimized case for lists
-      if (list != null)
-        return list.Count > 0 ? list[list.Count - 1] : empty();
-
-      using (var e = source.GetEnumerator())
-      {
-        if (!e.MoveNext())
-          return empty();
-
-        var last = e.Current;
-        while (e.MoveNext())
-          last = e.Current;
-
-        return last;
-      }
-    }
-
-    /// <summary>
-    /// Returns the last element of a sequence.
-    /// </summary>
-    public static TSource Last<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.LastImpl(Futures<TSource>.Undefined);
-    }
-
-    /// <summary>
-    /// Returns the last element of a sequence that satisfies a 
-    /// specified condition.
-    /// </summary>
-
-    public static TSource Last<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return Last(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Returns the last element of a sequence, or a default value if 
-    /// the sequence contains no elements.
-    /// </summary>
-
-    public static TSource LastOrDefault<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.LastImpl(Futures<TSource>.Default);
-    }
-
-    /// <summary>
-    /// Returns the last element of a sequence that satisfies a 
-    /// condition or a default value if no such element is found.
-    /// </summary>
-
-    public static TSource LastOrDefault<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return LastOrDefault(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Base implementation of Single operator.
-    /// </summary>
-
-    private static TSource SingleImpl<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource> empty)
-    {
-      CheckNotNull(source, "source");
-
-      using (var e = source.GetEnumerator())
-      {
-        if (e.MoveNext())
-        {
-          var single = e.Current;
-          if (!e.MoveNext())
-            return single;
-
-          throw new InvalidOperationException();
-        }
-
-        return empty();
-      }
-    }
-
-    /// <summary>
-    /// Returns the only element of a sequence, and throws an exception 
-    /// if there is not exactly one element in the sequence.
-    /// </summary>
-
-    public static TSource Single<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.SingleImpl(Futures<TSource>.Undefined);
-    }
-
-    /// <summary>
-    /// Returns the only element of a sequence that satisfies a 
-    /// specified condition, and throws an exception if more than one 
-    /// such element exists.
-    /// </summary>
-
-    public static TSource Single<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return Single(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Returns the only element of a sequence, or a default value if 
-    /// the sequence is empty; this method throws an exception if there 
-    /// is more than one element in the sequence.
-    /// </summary>
-
-    public static TSource SingleOrDefault<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.SingleImpl(Futures<TSource>.Default);
-    }
-
-    /// <summary>
-    /// Returns the only element of a sequence that satisfies a 
-    /// specified condition or a default value if no such element 
-    /// exists; this method throws an exception if more than one element 
-    /// satisfies the condition.
-    /// </summary>
-
-    public static TSource SingleOrDefault<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return SingleOrDefault(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Returns the element at a specified index in a sequence.
-    /// </summary>
-
-    public static TSource ElementAt<TSource>(
-      this IEnumerable<TSource> source,
-      int index)
-    {
-      CheckNotNull(source, "source");
-
-      if (index < 0)
-        throw new ArgumentOutOfRangeException("index", index, null);
-
-      var list = source as IList<TSource>;
-      if (list != null)
-        return list[index];
-
-      try
-      {
-        return source.SkipWhile((item, i) => i < index).First();
-      }
-      catch (InvalidOperationException) // if thrown by First
-      {
-        throw new ArgumentOutOfRangeException("index", index, null);
-      }
-    }
-
-    /// <summary>
-    /// Returns the element at a specified index in a sequence or a 
-    /// default value if the index is out of range.
-    /// </summary>
-
-    public static TSource ElementAtOrDefault<TSource>(
-      this IEnumerable<TSource> source,
-      int index)
-    {
-      CheckNotNull(source, "source");
-
-      if (index < 0)
-        return default(TSource);
-
-      var list = source as IList<TSource>;
-      if (list != null)
-        return index < list.Count ? list[index] : default(TSource);
-
-      return source.SkipWhile((item, i) => i < index).FirstOrDefault();
-    }
-
-    /// <summary>
-    /// Inverts the order of the elements in a sequence.
-    /// </summary>
-
-    public static IEnumerable<TSource> Reverse<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      CheckNotNull(source, "source");
-
-      return ReverseYield(source);
-    }
-
-    private static IEnumerable<TSource> ReverseYield<TSource>(IEnumerable<TSource> source)
-    {
-      var stack = new Stack<TSource>();
-      foreach (var item in source)
-        stack.Push(item);
-
-      foreach (var item in stack)
-        yield return item;
-    }
-
-    /// <summary>
-    /// Returns a specified number of contiguous elements from the start 
-    /// of a sequence.
-    /// </summary>
-
-    public static IEnumerable<TSource> Take<TSource>(
-      this IEnumerable<TSource> source,
-      int count)
-    {
-      return source.Where((item, i) => i < count);
-    }
-
-    /// <summary>
-    /// Bypasses a specified number of elements in a sequence and then 
-    /// returns the remaining elements.
-    /// </summary>
-
-    public static IEnumerable<TSource> Skip<TSource>(
-      this IEnumerable<TSource> source,
-      int count)
-    {
-      return source.Where((item, i) => i >= count);
-    }
-
-    /// <summary>
-    /// Bypasses elements in a sequence as long as a specified condition 
-    /// is true and then returns the remaining elements.
-    /// </summary>
-
-    public static IEnumerable<TSource> SkipWhile<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      CheckNotNull(predicate, "predicate");
-
-      return source.SkipWhile((item, i) => predicate(item));
-    }
-
-    /// <summary>
-    /// Bypasses elements in a sequence as long as a specified condition 
-    /// is true and then returns the remaining elements. The element's 
-    /// index is used in the logic of the predicate function.
-    /// </summary>
-
-    public static IEnumerable<TSource> SkipWhile<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int, bool> predicate)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(predicate, "predicate");
-
-      return SkipWhileYield(source, predicate);
-    }
-
-    private static IEnumerable<TSource> SkipWhileYield<TSource>(
-      IEnumerable<TSource> source,
-      Func<TSource, int, bool> predicate)
-    {
-      using (var e = source.GetEnumerator())
-      {
-        for (var i = 0;; i++)
-        {
-          if (!e.MoveNext())
-            yield break;
-
-          if (!predicate(e.Current, i))
-            break;
-        }
-
-        do
-        {
-          yield return e.Current;
-        } while (e.MoveNext());
-      }
-    }
-
-    /// <summary>
-    /// Returns the number of elements in a sequence.
-    /// </summary>
-
-    public static int Count<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      CheckNotNull(source, "source");
-
-      var collection = source as ICollection;
-      return collection != null
-               ? collection.Count
-               : source.Aggregate(0, (count, item) => checked(count + 1));
-    }
-
-    /// <summary>
-    /// Returns a number that represents how many elements in the 
-    /// specified sequence satisfy a condition.
-    /// </summary>
-
-    public static int Count<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return Count(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Returns an <see cref="Int64"/> that represents the total number 
-    /// of elements in a sequence.
-    /// </summary>
-
-    public static long LongCount<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      CheckNotNull(source, "source");
-
-      var array = source as Array;
-      return array != null
-               ? array.LongLength
-               : source.Aggregate(0L, (count, item) => count + 1);
-    }
-
-    /// <summary>
-    /// Returns an <see cref="Int64"/> that represents how many elements 
-    /// in a sequence satisfy a condition.
-    /// </summary>
-
-    public static long LongCount<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return LongCount(source.Where(predicate));
-    }
-
-    /// <summary>
-    /// Concatenates two sequences.
-    /// </summary>
-
-    public static IEnumerable<TSource> Concat<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second)
-    {
-      CheckNotNull(first, "first");
-      CheckNotNull(second, "second");
-
-      return ConcatYield(first, second);
-    }
-
-    private static IEnumerable<TSource> ConcatYield<TSource>(
-      IEnumerable<TSource> first,
-      IEnumerable<TSource> second)
-    {
-      foreach (var item in first)
-        yield return item;
-
-      foreach (var item in second)
-        yield return item;
-    }
-
-    /// <summary>
-    /// Creates a <see cref="List{T}"/> from an <see cref="IEnumerable{T}"/>.
-    /// </summary>
-
-    public static List<TSource> ToList<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      CheckNotNull(source, "source");
-
-      return new List<TSource>(source);
-    }
-
-    /// <summary>
-    /// Creates an array from an <see cref="IEnumerable{T}"/>.
-    /// </summary>
-
-    public static TSource[] ToArray<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.ToList().ToArray();
-    }
-
-    /// <summary>
-    /// Returns distinct elements from a sequence by using the default 
-    /// equality comparer to compare values.
-    /// </summary>
-
-    public static IEnumerable<TSource> Distinct<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return Distinct(source, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Returns distinct elements from a sequence by using a specified 
-    /// <see cref="IEqualityComparer{T}"/> to compare values.
-    /// </summary>
-
-    public static IEnumerable<TSource> Distinct<TSource>(
-      this IEnumerable<TSource> source,
-      IEqualityComparer<TSource> comparer)
-    {
-      CheckNotNull(source, "source");
-
-      return DistinctYield(source, comparer);
-    }
-
-    private static IEnumerable<TSource> DistinctYield<TSource>(
-      IEnumerable<TSource> source,
-      IEqualityComparer<TSource> comparer)
-    {
-      var set = new Dictionary<TSource, object>(comparer);
-      var gotNull = false;
-
-      foreach (var item in source)
-      {
-        if (item == null)
-        {
-          if (gotNull)
-            continue;
-          gotNull = true;
-        }
-        else
-        {
-          if (set.ContainsKey(item))
-            continue;
-          set.Add(item, null);
-        }
-
-        yield return item;
-      }
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to a specified key 
-    /// selector function.
-    /// </summary>
-
-    public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector)
-    {
-      return ToLookup(source, keySelector, e => e, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to a specified key 
-    /// selector function and a key comparer.
-    /// </summary>
-
-    public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      return ToLookup(source, keySelector, e => e, comparer);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to specified key 
-    /// and element selector functions.
-    /// </summary>
-
-    public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector)
-    {
-      return ToLookup(source, keySelector, elementSelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to a specified key 
-    /// selector function, a comparer and an element selector function.
-    /// </summary>
-
-    public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(keySelector, "keySelector");
-      CheckNotNull(elementSelector, "elementSelector");
-
-      var lookup = new Lookup<TKey, TElement>(comparer);
-
-      foreach (var item in source)
-      {
-        var key = keySelector(item);
-
-        var grouping = (Grouping<TKey, TElement>) lookup.Find(key);
-        if (grouping == null)
-        {
-          grouping = new Grouping<TKey, TElement>(key);
-          lookup.Add(grouping);
-        }
-
-        grouping.Add(elementSelector(item));
-      }
-
-      return lookup;
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a specified key 
-    /// selector function.
-    /// </summary>
-
-    public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector)
-    {
-      return GroupBy(source, keySelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a specified key 
-    /// selector function and compares the keys by using a specified 
-    /// comparer.
-    /// </summary>
-
-    public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      return GroupBy(source, keySelector, e => e, comparer);
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a specified key 
-    /// selector function and projects the elements for each group by 
-    /// using a specified function.
-    /// </summary>
-
-    public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector)
-    {
-      return GroupBy(source, keySelector, elementSelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a specified key 
-    /// selector function and creates a result value from each group and 
-    /// its key.
-    /// </summary>
-
-    public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(keySelector, "keySelector");
-      CheckNotNull(elementSelector, "elementSelector");
-
-      return ToLookup(source, keySelector, elementSelector, comparer);
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a key selector 
-    /// function. The keys are compared by using a comparer and each 
-    /// group's elements are projected by using a specified function.
-    /// </summary>
-
-    public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TKey, IEnumerable<TSource>, TResult> resultSelector)
-    {
-      return GroupBy(source, keySelector, resultSelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a specified key 
-    /// selector function and creates a result value from each group and 
-    /// its key. The elements of each group are projected by using a 
-    /// specified function.
-    /// </summary>
-
-    public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TKey, IEnumerable<TSource>, TResult> resultSelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(keySelector, "keySelector");
-      CheckNotNull(resultSelector, "resultSelector");
-
-      return ToLookup(source, keySelector, comparer).Select(g => resultSelector(g.Key, g));
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a specified key 
-    /// selector function and creates a result value from each group and 
-    /// its key. The keys are compared by using a specified comparer.
-    /// </summary>
-
-    public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector,
-      Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
-    {
-      return GroupBy(source, keySelector, elementSelector, resultSelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Groups the elements of a sequence according to a specified key 
-    /// selector function and creates a result value from each group and 
-    /// its key. Key values are compared by using a specified comparer, 
-    /// and the elements of each group are projected by using a 
-    /// specified function.
-    /// </summary>
-
-    public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector,
-      Func<TKey, IEnumerable<TElement>, TResult> resultSelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(keySelector, "keySelector");
-      CheckNotNull(elementSelector, "elementSelector");
-      CheckNotNull(resultSelector, "resultSelector");
-
-      return ToLookup(source, keySelector, elementSelector, comparer)
-        .Select(g => resultSelector(g.Key, g));
-    }
-
-    /// <summary>
-    /// Applies an accumulator function over a sequence.
-    /// </summary>
-
-    public static TSource Aggregate<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TSource, TSource> func)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(func, "func");
-
-      using (var e = source.GetEnumerator())
-      {
-        if (!e.MoveNext())
-          throw new InvalidOperationException();
-
-        return e.Renumerable().Skip(1).Aggregate(e.Current, func);
-      }
-    }
-
-    /// <summary>
-    /// Applies an accumulator function over a sequence. The specified 
-    /// seed value is used as the initial accumulator value.
-    /// </summary>
-
-    public static TAccumulate Aggregate<TSource, TAccumulate>(
-      this IEnumerable<TSource> source,
-      TAccumulate seed,
-      Func<TAccumulate, TSource, TAccumulate> func)
-    {
-      return Aggregate(source, seed, func, r => r);
-    }
-
-    /// <summary>
-    /// Applies an accumulator function over a sequence. The specified 
-    /// seed value is used as the initial accumulator value, and the 
-    /// specified function is used to select the result value.
-    /// </summary>
-
-    public static TResult Aggregate<TSource, TAccumulate, TResult>(
-      this IEnumerable<TSource> source,
-      TAccumulate seed,
-      Func<TAccumulate, TSource, TAccumulate> func,
-      Func<TAccumulate, TResult> resultSelector)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(func, "func");
-      CheckNotNull(resultSelector, "resultSelector");
-
-      var result = seed;
-
-      foreach (var item in source)
-        result = func(result, item);
-
-      return resultSelector(result);
-    }
-
-    /// <summary>
-    /// Produces the set union of two sequences by using the default 
-    /// equality comparer.
-    /// </summary>
-
-    public static IEnumerable<TSource> Union<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second)
-    {
-      return Union(first, second, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Produces the set union of two sequences by using a specified 
-    /// <see cref="IEqualityComparer{T}" />.
-    /// </summary>
-
-    public static IEnumerable<TSource> Union<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second,
-      IEqualityComparer<TSource> comparer)
-    {
-      return first.Concat(second).Distinct(comparer);
-    }
-
-    /// <summary>
-    /// Returns the elements of the specified sequence or the type 
-    /// parameter's default value in a singleton collection if the 
-    /// sequence is empty.
-    /// </summary>
-
-    public static IEnumerable<TSource> DefaultIfEmpty<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      return source.DefaultIfEmpty(default(TSource));
-    }
-
-    /// <summary>
-    /// Returns the elements of the specified sequence or the specified 
-    /// value in a singleton collection if the sequence is empty.
-    /// </summary>
-
-    public static IEnumerable<TSource> DefaultIfEmpty<TSource>(
-      this IEnumerable<TSource> source,
-      TSource defaultValue)
-    {
-      CheckNotNull(source, "source");
-
-      return DefaultIfEmptyYield(source, defaultValue);
-    }
-
-    private static IEnumerable<TSource> DefaultIfEmptyYield<TSource>(
-      IEnumerable<TSource> source,
-      TSource defaultValue)
-    {
-      using (var e = source.GetEnumerator())
-      {
-        if (!e.MoveNext())
-          yield return defaultValue;
-        else
-          do
-          {
-            yield return e.Current;
-          } while (e.MoveNext());
-      }
-    }
-
-    /// <summary>
-    /// Determines whether all elements of a sequence satisfy a condition.
-    /// </summary>
-
-    public static bool All<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(predicate, "predicate");
-
-      foreach (var item in source)
-        if (!predicate(item))
-          return false;
-
-      return true;
-    }
-
-    /// <summary>
-    /// Determines whether a sequence contains any elements.
-    /// </summary>
-
-    public static bool Any<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      CheckNotNull(source, "source");
-
-      using (var e = source.GetEnumerator())
-        return e.MoveNext();
-    }
-
-    /// <summary>
-    /// Determines whether any element of a sequence satisfies a 
-    /// condition.
-    /// </summary>
-
-    public static bool Any<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, bool> predicate)
-    {
-      return source.Where(predicate).Any();
-    }
-
-    /// <summary>
-    /// Determines whether a sequence contains a specified element by 
-    /// using the default equality comparer.
-    /// </summary>
-
-    public static bool Contains<TSource>(
-      this IEnumerable<TSource> source,
-      TSource value)
-    {
-      return source.Contains(value, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Determines whether a sequence contains a specified element by 
-    /// using a specified <see cref="IEqualityComparer{T}" />.
-    /// </summary>
-
-    public static bool Contains<TSource>(
-      this IEnumerable<TSource> source,
-      TSource value,
-      IEqualityComparer<TSource> comparer)
-    {
-      CheckNotNull(source, "source");
-
-      if (comparer == null)
-      {
-        var collection = source as ICollection<TSource>;
-        if (collection != null)
-          return collection.Contains(value);
-      }
-
-      comparer = comparer ?? EqualityComparer<TSource>.Default;
-      return source.Any(item => comparer.Equals(item, value));
-    }
-
-    /// <summary>
-    /// Determines whether two sequences are equal by comparing the 
-    /// elements by using the default equality comparer for their type.
-    /// </summary>
-
-    public static bool SequenceEqual<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second)
-    {
-      return first.SequenceEqual(second, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Determines whether two sequences are equal by comparing their 
-    /// elements by using a specified <see cref="IEqualityComparer{T}" />.
-    /// </summary>
-
-    public static bool SequenceEqual<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second,
-      IEqualityComparer<TSource> comparer)
-    {
-      CheckNotNull(first, "frist");
-      CheckNotNull(second, "second");
-
-      comparer = comparer ?? EqualityComparer<TSource>.Default;
-
-      using (IEnumerator<TSource> lhs = first.GetEnumerator(),
-                                  rhs = second.GetEnumerator())
-      {
-        do
-        {
-          if (!lhs.MoveNext())
-            return !rhs.MoveNext();
-
-          if (!rhs.MoveNext())
-            return false;
-        } while (comparer.Equals(lhs.Current, rhs.Current));
-      }
-
-      return false;
-    }
-
-    /// <summary>
-    /// Base implementation for Min/Max operator.
-    /// </summary>
-
-    private static TSource MinMaxImpl<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TSource, bool> lesser)
-    {
-      CheckNotNull(source, "source");
-      Debug.Assert(lesser != null);
-
-      return source.Aggregate((a, item) => lesser(a, item) ? a : item);
-    }
-
-    /// <summary>
-    /// Base implementation for Min/Max operator for nullable types.
-    /// </summary>
-
-    private static TSource? MinMaxImpl<TSource>(
-      this IEnumerable<TSource?> source,
-      TSource? seed, Func<TSource?, TSource?, bool> lesser) where TSource : struct
-    {
-      CheckNotNull(source, "source");
-      Debug.Assert(lesser != null);
-
-      return source.Aggregate(seed, (a, item) => lesser(a, item) ? a : item);
-      //  == MinMaxImpl(Repeat<TSource?>(null, 1).Concat(source), lesser);
-    }
-
-    /// <summary>
-    /// Returns the minimum value in a generic sequence.
-    /// </summary>
-
-    public static TSource Min<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      var comparer = Comparer<TSource>.Default;
-      return source.MinMaxImpl((x, y) => comparer.Compare(x, y) < 0);
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a generic 
-    /// sequence and returns the minimum resulting value.
-    /// </summary>
-
-    public static TResult Min<TSource, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TResult> selector)
-    {
-      return source.Select(selector).Min();
-    }
-
-    /// <summary>
-    /// Returns the maximum value in a generic sequence.
-    /// </summary>
-
-    public static TSource Max<TSource>(
-      this IEnumerable<TSource> source)
-    {
-      var comparer = Comparer<TSource>.Default;
-      return source.MinMaxImpl((x, y) => comparer.Compare(x, y) > 0);
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a generic 
-    /// sequence and returns the maximum resulting value.
-    /// </summary>
-
-    public static TResult Max<TSource, TResult>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TResult> selector)
-    {
-      return source.Select(selector).Max();
-    }
-
-    /// <summary>
-    /// Makes an enumerator seen as enumerable once more.
-    /// </summary>
-    /// <remarks>
-    /// The supplied enumerator must have been started. The first element
-    /// returned is the element the enumerator was on when passed in.
-    /// DO NOT use this method if the caller must be a generator. It is
-    /// mostly safe among aggregate operations.
-    /// </remarks>
-
-    private static IEnumerable<T> Renumerable<T>(this IEnumerator<T> e)
-    {
-      Debug.Assert(e != null);
-
-      do
-      {
-        yield return e.Current;
-      } while (e.MoveNext());
-    }
-
-    /// <summary>
-    /// Sorts the elements of a sequence in ascending order according to a key.
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector)
-    {
-      return source.OrderBy(keySelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Sorts the elements of a sequence in ascending order by using a 
-    /// specified comparer.
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      IComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(keySelector, "keySelector");
-
-      return new OrderedEnumerable<TSource, TKey>(source, keySelector, comparer, /* descending */ false);
-    }
-
-    /// <summary>
-    /// Sorts the elements of a sequence in descending order according to a key.
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector)
-    {
-      return source.OrderByDescending(keySelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    ///  Sorts the elements of a sequence in descending order by using a 
-    /// specified comparer. 
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      IComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(source, "keySelector");
-
-      return new OrderedEnumerable<TSource, TKey>(source, keySelector, comparer, /* descending */ true);
-    }
-
-    /// <summary>
-    /// Performs a subsequent ordering of the elements in a sequence in 
-    /// ascending order according to a key.
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(
-      this IOrderedEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector)
-    {
-      return source.ThenBy(keySelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Performs a subsequent ordering of the elements in a sequence in 
-    /// ascending order by using a specified comparer.
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(
-      this IOrderedEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      IComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-
-      return source.CreateOrderedEnumerable(keySelector, comparer, /* descending */ false);
-    }
-
-    /// <summary>
-    /// Performs a subsequent ordering of the elements in a sequence in 
-    /// descending order, according to a key.
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
-      this IOrderedEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector)
-    {
-      return source.ThenByDescending(keySelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Performs a subsequent ordering of the elements in a sequence in 
-    /// descending order by using a specified comparer.
-    /// </summary>
-
-    public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
-      this IOrderedEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      IComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-
-      return source.CreateOrderedEnumerable(keySelector, comparer, /* descending */ true);
-    }
-
-    /// <summary>
-    /// Base implementation for Intersect and Except operators.
-    /// </summary>
-
-    private static IEnumerable<TSource> IntersectExceptImpl<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second,
-      IEqualityComparer<TSource> comparer,
-      bool flag)
-    {
-      CheckNotNull(first, "first");
-      CheckNotNull(second, "second");
-
-      var keys = new List<TSource>();
-      var flags = new Dictionary<TSource, bool>(comparer);
-
-      foreach (var item in first.Where(k => !flags.ContainsKey(k)))
-      {
-        flags.Add(item, !flag);
-        keys.Add(item);
-      }
-
-      foreach (var item in second.Where(flags.ContainsKey))
-        flags[item] = flag;
-
-      //
-      // As per docs, "the marked elements are yielded in the order in 
-      // which they were collected.
-      //
-
-      return keys.Where(item => flags[item]);
-    }
-
-    /// <summary>
-    /// Produces the set intersection of two sequences by using the 
-    /// default equality comparer to compare values.
-    /// </summary>
-
-    public static IEnumerable<TSource> Intersect<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second)
-    {
-      return first.Intersect(second, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Produces the set intersection of two sequences by using the 
-    /// specified <see cref="IEqualityComparer{T}" /> to compare values.
-    /// </summary>
-
-    public static IEnumerable<TSource> Intersect<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second,
-      IEqualityComparer<TSource> comparer)
-    {
-      return IntersectExceptImpl(first, second, comparer, /* flag */ true);
-    }
-
-    /// <summary>
-    /// Produces the set difference of two sequences by using the 
-    /// default equality comparer to compare values.
-    /// </summary>
-
-    public static IEnumerable<TSource> Except<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second)
-    {
-      return first.Except(second, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Produces the set difference of two sequences by using the 
-    /// specified <see cref="IEqualityComparer{T}" /> to compare values.
-    /// </summary>
-
-    public static IEnumerable<TSource> Except<TSource>(
-      this IEnumerable<TSource> first,
-      IEnumerable<TSource> second,
-      IEqualityComparer<TSource> comparer)
-    {
-      return IntersectExceptImpl(first, second, comparer, /* flag */ false);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to a specified key 
-    /// selector function.
-    /// </summary>
-
-    public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector)
-    {
-      return source.ToDictionary(keySelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to a specified key 
-    /// selector function and key comparer.
-    /// </summary>
-
-    public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      return source.ToDictionary(keySelector, e => e);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to specified key 
-    /// selector and element selector functions.
-    /// </summary>
-
-    public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector)
-    {
-      return source.ToDictionary(keySelector, elementSelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
-    /// <see cref="IEnumerable{T}" /> according to a specified key 
-    /// selector function, a comparer, and an element selector function.
-    /// </summary>
-
-    public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
-      this IEnumerable<TSource> source,
-      Func<TSource, TKey> keySelector,
-      Func<TSource, TElement> elementSelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      CheckNotNull(source, "source");
-      CheckNotNull(keySelector, "keySelector");
-      CheckNotNull(elementSelector, "elementSelector");
-
-      var dict = new Dictionary<TKey, TElement>(comparer);
-
-      foreach (var item in source)
-      {
-        //
-        // ToDictionary is meant to throw ArgumentNullException if
-        // keySelector produces a key that is null and 
-        // Argument exception if keySelector produces duplicate keys 
-        // for two elements. Incidentally, the doucmentation for
-        // IDictionary<TKey, TValue>.Add says that the Add method
-        // throws the same exceptions under the same circumstances
-        // so we don't need to do any additional checking or work
-        // here and let the Add implementation do all the heavy
-        // lifting.
-        //
-
-        dict.Add(keySelector(item), elementSelector(item));
-      }
-
-      return dict;
-    }
-
-    /// <summary>
-    /// Correlates the elements of two sequences based on matching keys. 
-    /// The default equality comparer is used to compare keys.
-    /// </summary>
-
-    public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
-      this IEnumerable<TOuter> outer,
-      IEnumerable<TInner> inner,
-      Func<TOuter, TKey> outerKeySelector,
-      Func<TInner, TKey> innerKeySelector,
-      Func<TOuter, TInner, TResult> resultSelector)
-    {
-      return outer.Join(inner, outerKeySelector, innerKeySelector, resultSelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Correlates the elements of two sequences based on matching keys. 
-    /// The default equality comparer is used to compare keys. A 
-    /// specified <see cref="IEqualityComparer{T}" /> is used to compare keys.
-    /// </summary>
-
-    public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
-      this IEnumerable<TOuter> outer,
-      IEnumerable<TInner> inner,
-      Func<TOuter, TKey> outerKeySelector,
-      Func<TInner, TKey> innerKeySelector,
-      Func<TOuter, TInner, TResult> resultSelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      CheckNotNull(outer, "outer");
-      CheckNotNull(inner, "inner");
-      CheckNotNull(outerKeySelector, "outerKeySelector");
-      CheckNotNull(innerKeySelector, "innerKeySelector");
-      CheckNotNull(resultSelector, "resultSelector");
-
-      var lookup = inner.ToLookup(innerKeySelector, comparer);
-
-      return
-        from o in outer
-        from i in lookup[outerKeySelector(o)]
-        select resultSelector(o, i);
-    }
-
-    /// <summary>
-    /// Correlates the elements of two sequences based on equality of 
-    /// keys and groups the results. The default equality comparer is 
-    /// used to compare keys.
-    /// </summary>
-
-    public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
-      this IEnumerable<TOuter> outer,
-      IEnumerable<TInner> inner,
-      Func<TOuter, TKey> outerKeySelector,
-      Func<TInner, TKey> innerKeySelector,
-      Func<TOuter, IEnumerable<TInner>, TResult> resultSelector)
-    {
-      return outer.GroupJoin(inner, outerKeySelector, innerKeySelector, resultSelector, /* comparer */ null);
-    }
-
-    /// <summary>
-    /// Correlates the elements of two sequences based on equality of 
-    /// keys and groups the results. The default equality comparer is 
-    /// used to compare keys. A specified <see cref="IEqualityComparer{T}" /> 
-    /// is used to compare keys.
-    /// </summary>
-
-    public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
-      this IEnumerable<TOuter> outer,
-      IEnumerable<TInner> inner,
-      Func<TOuter, TKey> outerKeySelector,
-      Func<TInner, TKey> innerKeySelector,
-      Func<TOuter, IEnumerable<TInner>, TResult> resultSelector,
-      IEqualityComparer<TKey> comparer)
-    {
-      CheckNotNull(outer, "outer");
-      CheckNotNull(inner, "inner");
-      CheckNotNull(outerKeySelector, "outerKeySelector");
-      CheckNotNull(innerKeySelector, "innerKeySelector");
-      CheckNotNull(resultSelector, "resultSelector");
-
-      var lookup = inner.ToLookup(innerKeySelector, comparer);
-      return outer.Select(o => resultSelector(o, lookup[outerKeySelector(o)]));
-    }
-
-    [DebuggerStepThrough]
-    private static void CheckNotNull<T>(T value, string name) where T : class
-    {
-      if (value == null)
-        throw new ArgumentNullException(name);
-    }
-
-    private static class Sequence<T>
-    {
-      public static readonly IEnumerable<T> Empty = new T[0];
-    }
-
-    private sealed class Grouping<K, V> : List<V>, IGrouping<K, V>
-    {
-      internal Grouping(K key)
-      {
-        Key = key;
-      }
-
-      public K Key { get; private set; }
-    }
-  }
-
-  internal partial class Enumerable
-  {
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Int32" /> values.
-    /// </summary>
-
-    public static int Sum(
-      this IEnumerable<int> source)
-    {
-      CheckNotNull(source, "source");
-
-      int sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + num);
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Int32" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static int Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Int32" /> values.
-    /// </summary>
-
-    public static double Average(
-      this IEnumerable<int> source)
-    {
-      CheckNotNull(source, "source");
-
-      long sum = 0;
-      long count = 0;
-
-      foreach (var num in source)
-        checked
-        {
-          sum += (int) num;
-          count++;
-        }
-
-      if (count == 0)
-        throw new InvalidOperationException();
-
-      return (double) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Int32" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static double Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Int32" /> values.
-    /// </summary>
-
-    public static int? Sum(
-      this IEnumerable<int?> source)
-    {
-      CheckNotNull(source, "source");
-
-      int sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + (num ?? 0));
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Int32" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static int? Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int?> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Int32" /> values.
-    /// </summary>
-
-    public static double? Average(
-      this IEnumerable<int?> source)
-    {
-      CheckNotNull(source, "source");
-
-      long sum = 0;
-      long count = 0;
-
-      foreach (var num in source.Where(n => n != null))
-        checked
-        {
-          sum += (int) num;
-          count++;
-        }
-
-      if (count == 0)
-        return null;
-
-      return (double?) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Int32" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static double? Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int?> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-    /// <summary>
-    /// Returns the minimum value in a sequence of nullable 
-    /// <see cref="System.Int32" /> values.
-    /// </summary>
-
-    public static int? Min(
-      this IEnumerable<int?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the minimum nullable <see cref="System.Int32" /> value.
-    /// </summary>
-
-    public static int? Min<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int?> selector)
-    {
-      return source.Select(selector).Min();
-    }
-
-    /// <summary>
-    /// Returns the maximum value in a sequence of nullable 
-    /// <see cref="System.Int32" /> values.
-    /// </summary>
-
-    public static int? Max(
-      this IEnumerable<int?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null),
-                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the maximum nullable <see cref="System.Int32" /> value.
-    /// </summary>
-
-    public static int? Max<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, int?> selector)
-    {
-      return source.Select(selector).Max();
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Int64" /> values.
-    /// </summary>
-
-    public static long Sum(
-      this IEnumerable<long> source)
-    {
-      CheckNotNull(source, "source");
-
-      long sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + num);
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Int64" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static long Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, long> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Int64" /> values.
-    /// </summary>
-
-    public static double Average(
-      this IEnumerable<long> source)
-    {
-      CheckNotNull(source, "source");
-
-      long sum = 0;
-      long count = 0;
-
-      foreach (var num in source)
-        checked
-        {
-          sum += (long) num;
-          count++;
-        }
-
-      if (count == 0)
-        throw new InvalidOperationException();
-
-      return (double) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Int64" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static double Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, long> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Int64" /> values.
-    /// </summary>
-
-    public static long? Sum(
-      this IEnumerable<long?> source)
-    {
-      CheckNotNull(source, "source");
-
-      long sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + (num ?? 0));
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Int64" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static long? Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, long?> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Int64" /> values.
-    /// </summary>
-
-    public static double? Average(
-      this IEnumerable<long?> source)
-    {
-      CheckNotNull(source, "source");
-
-      long sum = 0;
-      long count = 0;
-
-      foreach (var num in source.Where(n => n != null))
-        checked
-        {
-          sum += (long) num;
-          count++;
-        }
-
-      if (count == 0)
-        return null;
-
-      return (double?) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Int64" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static double? Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, long?> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-    /// <summary>
-    /// Returns the minimum value in a sequence of nullable 
-    /// <see cref="System.Int64" /> values.
-    /// </summary>
-
-    public static long? Min(
-      this IEnumerable<long?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the minimum nullable <see cref="System.Int64" /> value.
-    /// </summary>
-
-    public static long? Min<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, long?> selector)
-    {
-      return source.Select(selector).Min();
-    }
-
-    /// <summary>
-    /// Returns the maximum value in a sequence of nullable 
-    /// <see cref="System.Int64" /> values.
-    /// </summary>
-
-    public static long? Max(
-      this IEnumerable<long?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null),
-                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the maximum nullable <see cref="System.Int64" /> value.
-    /// </summary>
-
-    public static long? Max<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, long?> selector)
-    {
-      return source.Select(selector).Max();
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Single" /> values.
-    /// </summary>
-
-    public static float Sum(
-      this IEnumerable<float> source)
-    {
-      CheckNotNull(source, "source");
-
-      float sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + num);
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Single" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static float Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, float> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Single" /> values.
-    /// </summary>
-
-    public static float Average(
-      this IEnumerable<float> source)
-    {
-      CheckNotNull(source, "source");
-
-      float sum = 0;
-      long count = 0;
-
-      foreach (var num in source)
-        checked
-        {
-          sum += (float) num;
-          count++;
-        }
-
-      if (count == 0)
-        throw new InvalidOperationException();
-
-      return (float) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Single" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static float Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, float> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Single" /> values.
-    /// </summary>
-
-    public static float? Sum(
-      this IEnumerable<float?> source)
-    {
-      CheckNotNull(source, "source");
-
-      float sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + (num ?? 0));
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Single" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static float? Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, float?> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Single" /> values.
-    /// </summary>
-
-    public static float? Average(
-      this IEnumerable<float?> source)
-    {
-      CheckNotNull(source, "source");
-
-      float sum = 0;
-      long count = 0;
-
-      foreach (var num in source.Where(n => n != null))
-        checked
-        {
-          sum += (float) num;
-          count++;
-        }
-
-      if (count == 0)
-        return null;
-
-      return (float?) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Single" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static float? Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, float?> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-    /// <summary>
-    /// Returns the minimum value in a sequence of nullable 
-    /// <see cref="System.Single" /> values.
-    /// </summary>
-
-    public static float? Min(
-      this IEnumerable<float?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the minimum nullable <see cref="System.Single" /> value.
-    /// </summary>
-
-    public static float? Min<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, float?> selector)
-    {
-      return source.Select(selector).Min();
-    }
-
-    /// <summary>
-    /// Returns the maximum value in a sequence of nullable 
-    /// <see cref="System.Single" /> values.
-    /// </summary>
-
-    public static float? Max(
-      this IEnumerable<float?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null),
-                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the maximum nullable <see cref="System.Single" /> value.
-    /// </summary>
-
-    public static float? Max<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, float?> selector)
-    {
-      return source.Select(selector).Max();
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Double" /> values.
-    /// </summary>
-
-    public static double Sum(
-      this IEnumerable<double> source)
-    {
-      CheckNotNull(source, "source");
-
-      double sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + num);
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Double" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static double Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, double> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Double" /> values.
-    /// </summary>
-
-    public static double Average(
-      this IEnumerable<double> source)
-    {
-      CheckNotNull(source, "source");
-
-      double sum = 0;
-      long count = 0;
-
-      foreach (var num in source)
-        checked
-        {
-          sum += (double) num;
-          count++;
-        }
-
-      if (count == 0)
-        throw new InvalidOperationException();
-
-      return (double) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Double" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static double Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, double> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Double" /> values.
-    /// </summary>
-
-    public static double? Sum(
-      this IEnumerable<double?> source)
-    {
-      CheckNotNull(source, "source");
-
-      double sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + (num ?? 0));
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Double" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static double? Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, double?> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Double" /> values.
-    /// </summary>
-
-    public static double? Average(
-      this IEnumerable<double?> source)
-    {
-      CheckNotNull(source, "source");
-
-      double sum = 0;
-      long count = 0;
-
-      foreach (var num in source.Where(n => n != null))
-        checked
-        {
-          sum += (double) num;
-          count++;
-        }
-
-      if (count == 0)
-        return null;
-
-      return (double?) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Double" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static double? Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, double?> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-    /// <summary>
-    /// Returns the minimum value in a sequence of nullable 
-    /// <see cref="System.Double" /> values.
-    /// </summary>
-
-    public static double? Min(
-      this IEnumerable<double?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the minimum nullable <see cref="System.Double" /> value.
-    /// </summary>
-
-    public static double? Min<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, double?> selector)
-    {
-      return source.Select(selector).Min();
-    }
-
-    /// <summary>
-    /// Returns the maximum value in a sequence of nullable 
-    /// <see cref="System.Double" /> values.
-    /// </summary>
-
-    public static double? Max(
-      this IEnumerable<double?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null),
-                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the maximum nullable <see cref="System.Double" /> value.
-    /// </summary>
-
-    public static double? Max<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, double?> selector)
-    {
-      return source.Select(selector).Max();
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Decimal" /> values.
-    /// </summary>
-
-    public static decimal Sum(
-      this IEnumerable<decimal> source)
-    {
-      CheckNotNull(source, "source");
-
-      decimal sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + num);
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of nullable <see cref="System.Decimal" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static decimal Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, decimal> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Decimal" /> values.
-    /// </summary>
-
-    public static decimal Average(
-      this IEnumerable<decimal> source)
-    {
-      CheckNotNull(source, "source");
-
-      decimal sum = 0;
-      long count = 0;
-
-      foreach (var num in source)
-        checked
-        {
-          sum += (decimal) num;
-          count++;
-        }
-
-      if (count == 0)
-        throw new InvalidOperationException();
-
-      return (decimal) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of nullable <see cref="System.Decimal" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static decimal Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, decimal> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Decimal" /> values.
-    /// </summary>
-
-    public static decimal? Sum(
-      this IEnumerable<decimal?> source)
-    {
-      CheckNotNull(source, "source");
-
-      decimal sum = 0;
-      foreach (var num in source)
-        sum = checked(sum + (num ?? 0));
-
-      return sum;
-    }
-
-    /// <summary>
-    /// Computes the sum of a sequence of <see cref="System.Decimal" /> 
-    /// values that are obtained by invoking a transform function on 
-    /// each element of the input sequence.
-    /// </summary>
-
-    public static decimal? Sum<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, decimal?> selector)
-    {
-      return source.Select(selector).Sum();
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Decimal" /> values.
-    /// </summary>
-
-    public static decimal? Average(
-      this IEnumerable<decimal?> source)
-    {
-      CheckNotNull(source, "source");
-
-      decimal sum = 0;
-      long count = 0;
-
-      foreach (var num in source.Where(n => n != null))
-        checked
-        {
-          sum += (decimal) num;
-          count++;
-        }
-
-      if (count == 0)
-        return null;
-
-      return (decimal?) sum/count;
-    }
-
-    /// <summary>
-    /// Computes the average of a sequence of <see cref="System.Decimal" /> values 
-    /// that are obtained by invoking a transform function on each 
-    /// element of the input sequence.
-    /// </summary>
-
-    public static decimal? Average<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, decimal?> selector)
-    {
-      return source.Select(selector).Average();
-    }
-
-    /// <summary>
-    /// Returns the minimum value in a sequence of nullable 
-    /// <see cref="System.Decimal" /> values.
-    /// </summary>
-
-    public static decimal? Min(
-      this IEnumerable<decimal?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the minimum nullable <see cref="System.Decimal" /> value.
-    /// </summary>
-
-    public static decimal? Min<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, decimal?> selector)
-    {
-      return source.Select(selector).Min();
-    }
-
-    /// <summary>
-    /// Returns the maximum value in a sequence of nullable 
-    /// <see cref="System.Decimal" /> values.
-    /// </summary>
-
-    public static decimal? Max(
-      this IEnumerable<decimal?> source)
-    {
-      CheckNotNull(source, "source");
-
-      return MinMaxImpl(source.Where(x => x != null),
-                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
-    }
-
-    /// <summary>
-    /// Invokes a transform function on each element of a sequence and 
-    /// returns the maximum nullable <see cref="System.Decimal" /> value.
-    /// </summary>
-
-    public static decimal? Max<TSource>(
-      this IEnumerable<TSource> source,
-      Func<TSource, decimal?> selector)
-    {
-      return source.Select(selector).Max();
-    }
-  }
-
-  /// <summary>
-  /// Represents a collection of objects that have a common key.
-  /// </summary>
-  internal partial interface IGrouping<TKey, TElement> : IEnumerable<TElement>
-  {
-    /// <summary>
-    /// Gets the key of the <see cref="IGrouping{TKey,TElement}" />.
-    /// </summary>
-
-    TKey Key { get; }
-  }
-
-  /// <summary>
-  /// Defines an indexer, size property, and Boolean search method for 
-  /// data structures that map keys to <see cref="IEnumerable{T}"/> 
-  /// sequences of values.
-  /// </summary>
-  internal partial interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>
-  {
-    bool Contains(TKey key);
-    int Count { get; }
-    IEnumerable<TElement> this[TKey key] { get; }
-  }
-
-  /// <summary>
-  /// Represents a sorted sequence.
-  /// </summary>
-  internal partial interface IOrderedEnumerable<TElement> : IEnumerable<TElement>
-  {
-    /// <summary>
-    /// Performs a subsequent ordering on the elements of an 
-    /// <see cref="IOrderedEnumerable{T}"/> according to a key.
-    /// </summary>
-
-    IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey>(
-      Func<TElement, TKey> keySelector, IComparer<TKey> comparer, bool descending);
-  }
-
-  /// <summary>
-  /// Represents a collection of keys each mapped to one or more values.
-  /// </summary>
-  internal sealed class Lookup<TKey, TElement> : ILookup<TKey, TElement>
-  {
-    private readonly Dictionary<TKey, IGrouping<TKey, TElement>> _map;
-
-    internal Lookup(IEqualityComparer<TKey> comparer)
-    {
-      _map = new Dictionary<TKey, IGrouping<TKey, TElement>>(comparer);
-    }
-
-    internal void Add(IGrouping<TKey, TElement> item)
-    {
-      _map.Add(item.Key, item);
-    }
-
-    internal IEnumerable<TElement> Find(TKey key)
-    {
-      IGrouping<TKey, TElement> grouping;
-      return _map.TryGetValue(key, out grouping) ? grouping : null;
-    }
-
-    /// <summary>
-    /// Gets the number of key/value collection pairs in the <see cref="Lookup{TKey,TElement}" />.
-    /// </summary>
-
-    public int Count
-    {
-      get { return _map.Count; }
-    }
-
-    /// <summary>
-    /// Gets the collection of values indexed by the specified key.
-    /// </summary>
-
-    public IEnumerable<TElement> this[TKey key]
-    {
-      get
-      {
-        IGrouping<TKey, TElement> result;
-        return _map.TryGetValue(key, out result) ? result : Enumerable.Empty<TElement>();
-      }
-    }
-
-    /// <summary>
-    /// Determines whether a specified key is in the <see cref="Lookup{TKey,TElement}" />.
-    /// </summary>
-
-    public bool Contains(TKey key)
-    {
-      return _map.ContainsKey(key);
-    }
-
-    /// <summary>
-    /// Applies a transform function to each key and its associated 
-    /// values and returns the results.
-    /// </summary>
-
-    public IEnumerable<TResult> ApplyResultSelector<TResult>(
-      Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
-    {
-      if (resultSelector == null)
-        throw new ArgumentNullException("resultSelector");
-
-      foreach (var pair in _map)
-        yield return resultSelector(pair.Key, pair.Value);
-    }
-
-    /// <summary>
-    /// Returns a generic enumerator that iterates through the <see cref="Lookup{TKey,TElement}" />.
-    /// </summary>
-
-    public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator()
-    {
-      return _map.Values.GetEnumerator();
-    }
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return GetEnumerator();
-    }
-  }
-
-  internal sealed class OrderedEnumerable<T, K> : IOrderedEnumerable<T>
-  {
-    private readonly IEnumerable<T> _source;
-    private readonly List<Comparison<T>> _comparisons;
-
-    public OrderedEnumerable(IEnumerable<T> source,
-                             Func<T, K> keySelector, IComparer<K> comparer, bool descending) :
-                               this(source, null, keySelector, comparer, descending)
-    {
-    }
-
-    private OrderedEnumerable(IEnumerable<T> source, List<Comparison<T>> comparisons,
-                              Func<T, K> keySelector, IComparer<K> comparer, bool descending)
-    {
-      if (source == null) throw new ArgumentNullException("source");
-      if (keySelector == null) throw new ArgumentNullException("keySelector");
-
-      _source = source;
-
-      comparer = comparer ?? Comparer<K>.Default;
-
-      if (comparisons == null)
-        comparisons = new List<Comparison<T>>( /* capacity */ 4);
-
-      comparisons.Add((x, y)
-                      => (descending ? -1 : 1)*comparer.Compare(keySelector(x), keySelector(y)));
-
-      _comparisons = comparisons;
-    }
-
-    public IOrderedEnumerable<T> CreateOrderedEnumerable<KK>(
-      Func<T, KK> keySelector, IComparer<KK> comparer, bool descending)
-    {
-      return new OrderedEnumerable<T, KK>(_source, _comparisons, keySelector, comparer, descending);
-    }
-
-    public IEnumerator<T> GetEnumerator()
-    {
-      //
-      // We sort using List<T>.Sort, but docs say that it performs an 
-      // unstable sort. LINQ, on the other hand, says OrderBy performs 
-      // a stable sort. So convert the source sequence into a sequence 
-      // of tuples where the second element tags the position of the 
-      // element from the source sequence (First). The position is 
-      // then used as a tie breaker when all keys compare equal,
-      // thus making the sort stable.
-      //
-
-      var list = _source.Select(new Func<T, int, Tuple<T, int>>(TagPosition)).ToList();
-
-      list.Sort((x, y) =>
-        {
-          //
-          // Compare keys from left to right.
-          //
-
-          var comparisons = _comparisons;
-          for (var i = 0; i < comparisons.Count; i++)
-          {
-            var result = comparisons[i](x.First, y.First);
-            if (result != 0)
-              return result;
-          }
-
-          //
-          // All keys compared equal so now break the tie by their
-          // position in the original sequence, making the sort stable.
-          //
-
-          return x.Second.CompareTo(y.Second);
-        });
-
-      return list.Select(new Func<Tuple<T, int>, T>(GetFirst)).GetEnumerator();
-
-    }
-
-    /// <remarks>
-    /// See <a href="http://code.google.com/p/linqbridge/issues/detail?id=11">issue #11</a>
-    /// for why this method is needed and cannot be expressed as a 
-    /// lambda at the call site.
-    /// </remarks>
-
-    private static Tuple<T, int> TagPosition(T e, int i)
-    {
-      return new Tuple<T, int>(e, i);
-    }
-
-    /// <remarks>
-    /// See <a href="http://code.google.com/p/linqbridge/issues/detail?id=11">issue #11</a>
-    /// for why this method is needed and cannot be expressed as a 
-    /// lambda at the call site.
-    /// </remarks>
-
-    private static T GetFirst(Tuple<T, int> pv)
-    {
-      return pv.First;
-    }
-
-    IEnumerator IEnumerable.GetEnumerator()
-    {
-      return GetEnumerator();
-    }
-  }
-
-  [Serializable]
-  internal struct Tuple<TFirst, TSecond> : IEquatable<Tuple<TFirst, TSecond>>
-  {
-    public TFirst First { get; private set; }
-    public TSecond Second { get; private set; }
-
-    public Tuple(TFirst first, TSecond second)
-      : this()
-    {
-      First = first;
-      Second = second;
-    }
-
-    public override bool Equals(object obj)
-    {
-      return obj != null
-             && obj is Tuple<TFirst, TSecond>
-             && base.Equals((Tuple<TFirst, TSecond>) obj);
-    }
-
-    public bool Equals(Tuple<TFirst, TSecond> other)
-    {
-      return EqualityComparer<TFirst>.Default.Equals(other.First, First)
-             && EqualityComparer<TSecond>.Default.Equals(other.Second, Second);
-    }
-
-    public override int GetHashCode()
-    {
-      var num = 0x7a2f0b42;
-      num = (-1521134295*num) + EqualityComparer<TFirst>.Default.GetHashCode(First);
-      return (-1521134295*num) + EqualityComparer<TSecond>.Default.GetHashCode(Second);
-    }
-
-    public override string ToString()
-    {
-      return string.Format(@"{{ First = {0}, Second = {1} }}", First, Second);
-    }
-  }
-}
-
-namespace Newtonsoft.Json.Serialization
-{
-  public delegate TResult Func<TResult>();
-
-  public delegate TResult Func<T, TResult>(T a);
-
-  public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
-
-  public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
-
-  public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
-
-  public delegate void Action();
-
-  public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
-
-  public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
-
-  public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
-}
-
-namespace System.Runtime.CompilerServices
-{
-  /// <remarks>
-  /// This attribute allows us to define extension methods without 
-  /// requiring .NET Framework 3.5. For more information, see the section,
-  /// <a href="http://msdn.microsoft.com/en-us/magazine/cc163317.aspx#S7">Extension Methods in .NET Framework 2.0 Apps</a>,
-  /// of <a href="http://msdn.microsoft.com/en-us/magazine/cc163317.aspx">Basic Instincts: Extension Methods</a>
-  /// column in <a href="http://msdn.microsoft.com/msdnmag/">MSDN Magazine</a>, 
-  /// issue <a href="http://msdn.microsoft.com/en-us/magazine/cc135410.aspx">Nov 2007</a>.
-  /// </remarks>
-
-  [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
-  internal sealed class ExtensionAttribute : Attribute { }
-}
-
+﻿#if NET20
+
+#region License, Terms and Author(s)
+//
+// LINQBridge
+// Copyright (c) 2007-9 Atif Aziz, Joseph Albahari. All rights reserved.
+//
+//  Author(s):
+//
+//      Atif Aziz, http://www.raboof.com
+//
+// This library is free software; you can redistribute it and/or modify it 
+// under the terms of the New BSD License, a copy of which should have 
+// been delivered along with this distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
+// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Utilities.LinqBridge
+{
+  /// <summary>
+  /// Provides a set of static (Shared in Visual Basic) methods for 
+  /// querying objects that implement <see cref="IEnumerable{T}" />.
+  /// </summary>
+  internal static partial class Enumerable
+  {
+    /// <summary>
+    /// Returns the input typed as <see cref="IEnumerable{T}"/>.
+    /// </summary>
+
+    public static IEnumerable<TSource> AsEnumerable<TSource>(IEnumerable<TSource> source)
+    {
+      return source;
+    }
+
+    /// <summary>
+    /// Returns an empty <see cref="IEnumerable{T}"/> that has the 
+    /// specified type argument.
+    /// </summary>
+
+    public static IEnumerable<TResult> Empty<TResult>()
+    {
+      return Sequence<TResult>.Empty;
+    }
+
+    /// <summary>
+    /// Converts the elements of an <see cref="IEnumerable"/> to the 
+    /// specified type.
+    /// </summary>
+
+    public static IEnumerable<TResult> Cast<TResult>(
+      this IEnumerable source)
+    {
+      CheckNotNull(source, "source");
+
+      return CastYield<TResult>(source);
+    }
+
+    private static IEnumerable<TResult> CastYield<TResult>(
+      IEnumerable source)
+    {
+      foreach (var item in source)
+        yield return (TResult) item;
+    }
+
+    /// <summary>
+    /// Filters the elements of an <see cref="IEnumerable"/> based on a specified type.
+    /// </summary>
+
+    public static IEnumerable<TResult> OfType<TResult>(
+      this IEnumerable source)
+    {
+      CheckNotNull(source, "source");
+
+      return OfTypeYield<TResult>(source);
+    }
+
+    private static IEnumerable<TResult> OfTypeYield<TResult>(
+      IEnumerable source)
+    {
+      foreach (var item in source)
+        if (item is TResult)
+          yield return (TResult) item;
+    }
+
+    /// <summary>
+    /// Generates a sequence of integral numbers within a specified range.
+    /// </summary>
+    /// <param name="start">The value of the first integer in the sequence.</param>
+    /// <param name="count">The number of sequential integers to generate.</param>
+
+    public static IEnumerable<int> Range(int start, int count)
+    {
+      if (count < 0)
+        throw new ArgumentOutOfRangeException("count", count, null);
+
+      var end = (long) start + count;
+      if (end - 1 >= int.MaxValue)
+        throw new ArgumentOutOfRangeException("count", count, null);
+
+      return RangeYield(start, end);
+    }
+
+    private static IEnumerable<int> RangeYield(int start, long end)
+    {
+      for (var i = start; i < end; i++)
+        yield return i;
+    }
+
+    /// <summary>
+    /// Generates a sequence that contains one repeated value.
+    /// </summary>
+
+    public static IEnumerable<TResult> Repeat<TResult>(TResult element, int count)
+    {
+      if (count < 0) throw new ArgumentOutOfRangeException("count", count, null);
+
+      return RepeatYield(element, count);
+    }
+
+    private static IEnumerable<TResult> RepeatYield<TResult>(TResult element, int count)
+    {
+      for (var i = 0; i < count; i++)
+        yield return element;
+    }
+
+    /// <summary>
+    /// Filters a sequence of values based on a predicate.
+    /// </summary>
+
+    public static IEnumerable<TSource> Where<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      CheckNotNull(predicate, "predicate");
+
+      return source.Where((item, i) => predicate(item));
+    }
+
+    /// <summary>
+    /// Filters a sequence of values based on a predicate. 
+    /// Each element's index is used in the logic of the predicate function.
+    /// </summary>
+
+    public static IEnumerable<TSource> Where<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, bool> predicate)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(predicate, "predicate");
+
+      return WhereYield(source, predicate);
+    }
+
+    private static IEnumerable<TSource> WhereYield<TSource>(
+      IEnumerable<TSource> source,
+      Func<TSource, int, bool> predicate)
+    {
+      var i = 0;
+      foreach (var item in source)
+        if (predicate(item, i++))
+          yield return item;
+    }
+
+    /// <summary>
+    /// Projects each element of a sequence into a new form.
+    /// </summary>
+
+    public static IEnumerable<TResult> Select<TSource, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TResult> selector)
+    {
+      CheckNotNull(selector, "selector");
+
+      return source.Select((item, i) => selector(item));
+    }
+
+    /// <summary>
+    /// Projects each element of a sequence into a new form by 
+    /// incorporating the element's index.
+    /// </summary>
+
+    public static IEnumerable<TResult> Select<TSource, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, TResult> selector)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(selector, "selector");
+
+      return SelectYield(source, selector);
+    }
+
+    private static IEnumerable<TResult> SelectYield<TSource, TResult>(
+      IEnumerable<TSource> source,
+      Func<TSource, int, TResult> selector)
+    {
+      var i = 0;
+      foreach (var item in source)
+        yield return selector(item, i++);
+    }
+
+    /// <summary>
+    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" /> 
+    /// and flattens the resulting sequences into one sequence.
+    /// </summary>
+
+    public static IEnumerable<TResult> SelectMany<TSource, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, IEnumerable<TResult>> selector)
+    {
+      CheckNotNull(selector, "selector");
+
+      return source.SelectMany((item, i) => selector(item));
+    }
+
+    /// <summary>
+    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" />, 
+    /// and flattens the resulting sequences into one sequence. The 
+    /// index of each source element is used in the projected form of 
+    /// that element.
+    /// </summary>
+
+    public static IEnumerable<TResult> SelectMany<TSource, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, IEnumerable<TResult>> selector)
+    {
+      CheckNotNull(selector, "selector");
+
+      return source.SelectMany(selector, (item, subitem) => subitem);
+    }
+
+    /// <summary>
+    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" />, 
+    /// flattens the resulting sequences into one sequence, and invokes 
+    /// a result selector function on each element therein.
+    /// </summary>
+
+    public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, IEnumerable<TCollection>> collectionSelector,
+      Func<TSource, TCollection, TResult> resultSelector)
+    {
+      CheckNotNull(collectionSelector, "collectionSelector");
+
+      return source.SelectMany((item, i) => collectionSelector(item), resultSelector);
+    }
+
+    /// <summary>
+    /// Projects each element of a sequence to an <see cref="IEnumerable{T}" />, 
+    /// flattens the resulting sequences into one sequence, and invokes 
+    /// a result selector function on each element therein. The index of 
+    /// each source element is used in the intermediate projected form 
+    /// of that element.
+    /// </summary>
+
+    public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, IEnumerable<TCollection>> collectionSelector,
+      Func<TSource, TCollection, TResult> resultSelector)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(collectionSelector, "collectionSelector");
+      CheckNotNull(resultSelector, "resultSelector");
+
+      return SelectManyYield(source, collectionSelector, resultSelector);
+    }
+
+    private static IEnumerable<TResult> SelectManyYield<TSource, TCollection, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, IEnumerable<TCollection>> collectionSelector,
+      Func<TSource, TCollection, TResult> resultSelector)
+    {
+      var i = 0;
+      foreach (var item in source)
+        foreach (var subitem in collectionSelector(item, i++))
+          yield return resultSelector(item, subitem);
+    }
+
+    /// <summary>
+    /// Returns elements from a sequence as long as a specified condition is true.
+    /// </summary>
+
+    public static IEnumerable<TSource> TakeWhile<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      CheckNotNull(predicate, "predicate");
+
+      return source.TakeWhile((item, i) => predicate(item));
+    }
+
+    /// <summary>
+    /// Returns elements from a sequence as long as a specified condition is true.
+    /// The element's index is used in the logic of the predicate function.
+    /// </summary>
+
+    public static IEnumerable<TSource> TakeWhile<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, bool> predicate)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(predicate, "predicate");
+
+      return TakeWhileYield(source, predicate);
+    }
+
+    private static IEnumerable<TSource> TakeWhileYield<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, bool> predicate)
+    {
+      var i = 0;
+      foreach (var item in source)
+        if (predicate(item, i++))
+          yield return item;
+        else
+          break;
+    }
+
+    private static class Futures<T>
+    {
+      public static readonly Func<T> Default = () => default(T);
+      public static readonly Func<T> Undefined = () => { throw new InvalidOperationException(); };
+    }
+
+    /// <summary>
+    /// Base implementation of First operator.
+    /// </summary>
+
+    private static TSource FirstImpl<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource> empty)
+    {
+      CheckNotNull(source, "source");
+      Debug.Assert(empty != null);
+
+      var list = source as IList<TSource>; // optimized case for lists
+      if (list != null)
+        return list.Count > 0 ? list[0] : empty();
+
+      using (var e = source.GetEnumerator()) // fallback for enumeration
+        return e.MoveNext() ? e.Current : empty();
+    }
+
+    /// <summary>
+    /// Returns the first element of a sequence.
+    /// </summary>
+
+    public static TSource First<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.FirstImpl(Futures<TSource>.Undefined);
+    }
+
+    /// <summary>
+    /// Returns the first element in a sequence that satisfies a specified condition.
+    /// </summary>
+
+    public static TSource First<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return First(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Returns the first element of a sequence, or a default value if 
+    /// the sequence contains no elements.
+    /// </summary>
+
+    public static TSource FirstOrDefault<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.FirstImpl(Futures<TSource>.Default);
+    }
+
+    /// <summary>
+    /// Returns the first element of the sequence that satisfies a 
+    /// condition or a default value if no such element is found.
+    /// </summary>
+
+    public static TSource FirstOrDefault<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return FirstOrDefault(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Base implementation of Last operator.
+    /// </summary>
+
+    private static TSource LastImpl<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource> empty)
+    {
+      CheckNotNull(source, "source");
+
+      var list = source as IList<TSource>; // optimized case for lists
+      if (list != null)
+        return list.Count > 0 ? list[list.Count - 1] : empty();
+
+      using (var e = source.GetEnumerator())
+      {
+        if (!e.MoveNext())
+          return empty();
+
+        var last = e.Current;
+        while (e.MoveNext())
+          last = e.Current;
+
+        return last;
+      }
+    }
+
+    /// <summary>
+    /// Returns the last element of a sequence.
+    /// </summary>
+    public static TSource Last<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.LastImpl(Futures<TSource>.Undefined);
+    }
+
+    /// <summary>
+    /// Returns the last element of a sequence that satisfies a 
+    /// specified condition.
+    /// </summary>
+
+    public static TSource Last<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return Last(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Returns the last element of a sequence, or a default value if 
+    /// the sequence contains no elements.
+    /// </summary>
+
+    public static TSource LastOrDefault<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.LastImpl(Futures<TSource>.Default);
+    }
+
+    /// <summary>
+    /// Returns the last element of a sequence that satisfies a 
+    /// condition or a default value if no such element is found.
+    /// </summary>
+
+    public static TSource LastOrDefault<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return LastOrDefault(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Base implementation of Single operator.
+    /// </summary>
+
+    private static TSource SingleImpl<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource> empty)
+    {
+      CheckNotNull(source, "source");
+
+      using (var e = source.GetEnumerator())
+      {
+        if (e.MoveNext())
+        {
+          var single = e.Current;
+          if (!e.MoveNext())
+            return single;
+
+          throw new InvalidOperationException();
+        }
+
+        return empty();
+      }
+    }
+
+    /// <summary>
+    /// Returns the only element of a sequence, and throws an exception 
+    /// if there is not exactly one element in the sequence.
+    /// </summary>
+
+    public static TSource Single<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.SingleImpl(Futures<TSource>.Undefined);
+    }
+
+    /// <summary>
+    /// Returns the only element of a sequence that satisfies a 
+    /// specified condition, and throws an exception if more than one 
+    /// such element exists.
+    /// </summary>
+
+    public static TSource Single<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return Single(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Returns the only element of a sequence, or a default value if 
+    /// the sequence is empty; this method throws an exception if there 
+    /// is more than one element in the sequence.
+    /// </summary>
+
+    public static TSource SingleOrDefault<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.SingleImpl(Futures<TSource>.Default);
+    }
+
+    /// <summary>
+    /// Returns the only element of a sequence that satisfies a 
+    /// specified condition or a default value if no such element 
+    /// exists; this method throws an exception if more than one element 
+    /// satisfies the condition.
+    /// </summary>
+
+    public static TSource SingleOrDefault<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return SingleOrDefault(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Returns the element at a specified index in a sequence.
+    /// </summary>
+
+    public static TSource ElementAt<TSource>(
+      this IEnumerable<TSource> source,
+      int index)
+    {
+      CheckNotNull(source, "source");
+
+      if (index < 0)
+        throw new ArgumentOutOfRangeException("index", index, null);
+
+      var list = source as IList<TSource>;
+      if (list != null)
+        return list[index];
+
+      try
+      {
+        return source.SkipWhile((item, i) => i < index).First();
+      }
+      catch (InvalidOperationException) // if thrown by First
+      {
+        throw new ArgumentOutOfRangeException("index", index, null);
+      }
+    }
+
+    /// <summary>
+    /// Returns the element at a specified index in a sequence or a 
+    /// default value if the index is out of range.
+    /// </summary>
+
+    public static TSource ElementAtOrDefault<TSource>(
+      this IEnumerable<TSource> source,
+      int index)
+    {
+      CheckNotNull(source, "source");
+
+      if (index < 0)
+        return default(TSource);
+
+      var list = source as IList<TSource>;
+      if (list != null)
+        return index < list.Count ? list[index] : default(TSource);
+
+      return source.SkipWhile((item, i) => i < index).FirstOrDefault();
+    }
+
+    /// <summary>
+    /// Inverts the order of the elements in a sequence.
+    /// </summary>
+
+    public static IEnumerable<TSource> Reverse<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      CheckNotNull(source, "source");
+
+      return ReverseYield(source);
+    }
+
+    private static IEnumerable<TSource> ReverseYield<TSource>(IEnumerable<TSource> source)
+    {
+      var stack = new Stack<TSource>();
+      foreach (var item in source)
+        stack.Push(item);
+
+      foreach (var item in stack)
+        yield return item;
+    }
+
+    /// <summary>
+    /// Returns a specified number of contiguous elements from the start 
+    /// of a sequence.
+    /// </summary>
+
+    public static IEnumerable<TSource> Take<TSource>(
+      this IEnumerable<TSource> source,
+      int count)
+    {
+      return source.Where((item, i) => i < count);
+    }
+
+    /// <summary>
+    /// Bypasses a specified number of elements in a sequence and then 
+    /// returns the remaining elements.
+    /// </summary>
+
+    public static IEnumerable<TSource> Skip<TSource>(
+      this IEnumerable<TSource> source,
+      int count)
+    {
+      return source.Where((item, i) => i >= count);
+    }
+
+    /// <summary>
+    /// Bypasses elements in a sequence as long as a specified condition 
+    /// is true and then returns the remaining elements.
+    /// </summary>
+
+    public static IEnumerable<TSource> SkipWhile<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      CheckNotNull(predicate, "predicate");
+
+      return source.SkipWhile((item, i) => predicate(item));
+    }
+
+    /// <summary>
+    /// Bypasses elements in a sequence as long as a specified condition 
+    /// is true and then returns the remaining elements. The element's 
+    /// index is used in the logic of the predicate function.
+    /// </summary>
+
+    public static IEnumerable<TSource> SkipWhile<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int, bool> predicate)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(predicate, "predicate");
+
+      return SkipWhileYield(source, predicate);
+    }
+
+    private static IEnumerable<TSource> SkipWhileYield<TSource>(
+      IEnumerable<TSource> source,
+      Func<TSource, int, bool> predicate)
+    {
+      using (var e = source.GetEnumerator())
+      {
+        for (var i = 0;; i++)
+        {
+          if (!e.MoveNext())
+            yield break;
+
+          if (!predicate(e.Current, i))
+            break;
+        }
+
+        do
+        {
+          yield return e.Current;
+        } while (e.MoveNext());
+      }
+    }
+
+    /// <summary>
+    /// Returns the number of elements in a sequence.
+    /// </summary>
+
+    public static int Count<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      CheckNotNull(source, "source");
+
+      var collection = source as ICollection;
+      return collection != null
+               ? collection.Count
+               : source.Aggregate(0, (count, item) => checked(count + 1));
+    }
+
+    /// <summary>
+    /// Returns a number that represents how many elements in the 
+    /// specified sequence satisfy a condition.
+    /// </summary>
+
+    public static int Count<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return Count(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Returns an <see cref="Int64"/> that represents the total number 
+    /// of elements in a sequence.
+    /// </summary>
+
+    public static long LongCount<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      CheckNotNull(source, "source");
+
+      var array = source as Array;
+      return array != null
+               ? array.LongLength
+               : source.Aggregate(0L, (count, item) => count + 1);
+    }
+
+    /// <summary>
+    /// Returns an <see cref="Int64"/> that represents how many elements 
+    /// in a sequence satisfy a condition.
+    /// </summary>
+
+    public static long LongCount<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return LongCount(source.Where(predicate));
+    }
+
+    /// <summary>
+    /// Concatenates two sequences.
+    /// </summary>
+
+    public static IEnumerable<TSource> Concat<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second)
+    {
+      CheckNotNull(first, "first");
+      CheckNotNull(second, "second");
+
+      return ConcatYield(first, second);
+    }
+
+    private static IEnumerable<TSource> ConcatYield<TSource>(
+      IEnumerable<TSource> first,
+      IEnumerable<TSource> second)
+    {
+      foreach (var item in first)
+        yield return item;
+
+      foreach (var item in second)
+        yield return item;
+    }
+
+    /// <summary>
+    /// Creates a <see cref="List{T}"/> from an <see cref="IEnumerable{T}"/>.
+    /// </summary>
+
+    public static List<TSource> ToList<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      CheckNotNull(source, "source");
+
+      return new List<TSource>(source);
+    }
+
+    /// <summary>
+    /// Creates an array from an <see cref="IEnumerable{T}"/>.
+    /// </summary>
+
+    public static TSource[] ToArray<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.ToList().ToArray();
+    }
+
+    /// <summary>
+    /// Returns distinct elements from a sequence by using the default 
+    /// equality comparer to compare values.
+    /// </summary>
+
+    public static IEnumerable<TSource> Distinct<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return Distinct(source, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Returns distinct elements from a sequence by using a specified 
+    /// <see cref="IEqualityComparer{T}"/> to compare values.
+    /// </summary>
+
+    public static IEnumerable<TSource> Distinct<TSource>(
+      this IEnumerable<TSource> source,
+      IEqualityComparer<TSource> comparer)
+    {
+      CheckNotNull(source, "source");
+
+      return DistinctYield(source, comparer);
+    }
+
+    private static IEnumerable<TSource> DistinctYield<TSource>(
+      IEnumerable<TSource> source,
+      IEqualityComparer<TSource> comparer)
+    {
+      var set = new Dictionary<TSource, object>(comparer);
+      var gotNull = false;
+
+      foreach (var item in source)
+      {
+        if (item == null)
+        {
+          if (gotNull)
+            continue;
+          gotNull = true;
+        }
+        else
+        {
+          if (set.ContainsKey(item))
+            continue;
+          set.Add(item, null);
+        }
+
+        yield return item;
+      }
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to a specified key 
+    /// selector function.
+    /// </summary>
+
+    public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector)
+    {
+      return ToLookup(source, keySelector, e => e, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to a specified key 
+    /// selector function and a key comparer.
+    /// </summary>
+
+    public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      return ToLookup(source, keySelector, e => e, comparer);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to specified key 
+    /// and element selector functions.
+    /// </summary>
+
+    public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector)
+    {
+      return ToLookup(source, keySelector, elementSelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Lookup{TKey,TElement}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to a specified key 
+    /// selector function, a comparer and an element selector function.
+    /// </summary>
+
+    public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(keySelector, "keySelector");
+      CheckNotNull(elementSelector, "elementSelector");
+
+      var lookup = new Lookup<TKey, TElement>(comparer);
+
+      foreach (var item in source)
+      {
+        var key = keySelector(item);
+
+        var grouping = (Grouping<TKey, TElement>) lookup.Find(key);
+        if (grouping == null)
+        {
+          grouping = new Grouping<TKey, TElement>(key);
+          lookup.Add(grouping);
+        }
+
+        grouping.Add(elementSelector(item));
+      }
+
+      return lookup;
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a specified key 
+    /// selector function.
+    /// </summary>
+
+    public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector)
+    {
+      return GroupBy(source, keySelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a specified key 
+    /// selector function and compares the keys by using a specified 
+    /// comparer.
+    /// </summary>
+
+    public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      return GroupBy(source, keySelector, e => e, comparer);
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a specified key 
+    /// selector function and projects the elements for each group by 
+    /// using a specified function.
+    /// </summary>
+
+    public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector)
+    {
+      return GroupBy(source, keySelector, elementSelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a specified key 
+    /// selector function and creates a result value from each group and 
+    /// its key.
+    /// </summary>
+
+    public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(keySelector, "keySelector");
+      CheckNotNull(elementSelector, "elementSelector");
+
+      return ToLookup(source, keySelector, elementSelector, comparer);
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a key selector 
+    /// function. The keys are compared by using a comparer and each 
+    /// group's elements are projected by using a specified function.
+    /// </summary>
+
+    public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TKey, IEnumerable<TSource>, TResult> resultSelector)
+    {
+      return GroupBy(source, keySelector, resultSelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a specified key 
+    /// selector function and creates a result value from each group and 
+    /// its key. The elements of each group are projected by using a 
+    /// specified function.
+    /// </summary>
+
+    public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TKey, IEnumerable<TSource>, TResult> resultSelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(keySelector, "keySelector");
+      CheckNotNull(resultSelector, "resultSelector");
+
+      return ToLookup(source, keySelector, comparer).Select(g => resultSelector(g.Key, g));
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a specified key 
+    /// selector function and creates a result value from each group and 
+    /// its key. The keys are compared by using a specified comparer.
+    /// </summary>
+
+    public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector,
+      Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
+    {
+      return GroupBy(source, keySelector, elementSelector, resultSelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Groups the elements of a sequence according to a specified key 
+    /// selector function and creates a result value from each group and 
+    /// its key. Key values are compared by using a specified comparer, 
+    /// and the elements of each group are projected by using a 
+    /// specified function.
+    /// </summary>
+
+    public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector,
+      Func<TKey, IEnumerable<TElement>, TResult> resultSelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(keySelector, "keySelector");
+      CheckNotNull(elementSelector, "elementSelector");
+      CheckNotNull(resultSelector, "resultSelector");
+
+      return ToLookup(source, keySelector, elementSelector, comparer)
+        .Select(g => resultSelector(g.Key, g));
+    }
+
+    /// <summary>
+    /// Applies an accumulator function over a sequence.
+    /// </summary>
+
+    public static TSource Aggregate<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TSource, TSource> func)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(func, "func");
+
+      using (var e = source.GetEnumerator())
+      {
+        if (!e.MoveNext())
+          throw new InvalidOperationException();
+
+        return e.Renumerable().Skip(1).Aggregate(e.Current, func);
+      }
+    }
+
+    /// <summary>
+    /// Applies an accumulator function over a sequence. The specified 
+    /// seed value is used as the initial accumulator value.
+    /// </summary>
+
+    public static TAccumulate Aggregate<TSource, TAccumulate>(
+      this IEnumerable<TSource> source,
+      TAccumulate seed,
+      Func<TAccumulate, TSource, TAccumulate> func)
+    {
+      return Aggregate(source, seed, func, r => r);
+    }
+
+    /// <summary>
+    /// Applies an accumulator function over a sequence. The specified 
+    /// seed value is used as the initial accumulator value, and the 
+    /// specified function is used to select the result value.
+    /// </summary>
+
+    public static TResult Aggregate<TSource, TAccumulate, TResult>(
+      this IEnumerable<TSource> source,
+      TAccumulate seed,
+      Func<TAccumulate, TSource, TAccumulate> func,
+      Func<TAccumulate, TResult> resultSelector)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(func, "func");
+      CheckNotNull(resultSelector, "resultSelector");
+
+      var result = seed;
+
+      foreach (var item in source)
+        result = func(result, item);
+
+      return resultSelector(result);
+    }
+
+    /// <summary>
+    /// Produces the set union of two sequences by using the default 
+    /// equality comparer.
+    /// </summary>
+
+    public static IEnumerable<TSource> Union<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second)
+    {
+      return Union(first, second, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Produces the set union of two sequences by using a specified 
+    /// <see cref="IEqualityComparer{T}" />.
+    /// </summary>
+
+    public static IEnumerable<TSource> Union<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second,
+      IEqualityComparer<TSource> comparer)
+    {
+      return first.Concat(second).Distinct(comparer);
+    }
+
+    /// <summary>
+    /// Returns the elements of the specified sequence or the type 
+    /// parameter's default value in a singleton collection if the 
+    /// sequence is empty.
+    /// </summary>
+
+    public static IEnumerable<TSource> DefaultIfEmpty<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      return source.DefaultIfEmpty(default(TSource));
+    }
+
+    /// <summary>
+    /// Returns the elements of the specified sequence or the specified 
+    /// value in a singleton collection if the sequence is empty.
+    /// </summary>
+
+    public static IEnumerable<TSource> DefaultIfEmpty<TSource>(
+      this IEnumerable<TSource> source,
+      TSource defaultValue)
+    {
+      CheckNotNull(source, "source");
+
+      return DefaultIfEmptyYield(source, defaultValue);
+    }
+
+    private static IEnumerable<TSource> DefaultIfEmptyYield<TSource>(
+      IEnumerable<TSource> source,
+      TSource defaultValue)
+    {
+      using (var e = source.GetEnumerator())
+      {
+        if (!e.MoveNext())
+          yield return defaultValue;
+        else
+          do
+          {
+            yield return e.Current;
+          } while (e.MoveNext());
+      }
+    }
+
+    /// <summary>
+    /// Determines whether all elements of a sequence satisfy a condition.
+    /// </summary>
+
+    public static bool All<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(predicate, "predicate");
+
+      foreach (var item in source)
+        if (!predicate(item))
+          return false;
+
+      return true;
+    }
+
+    /// <summary>
+    /// Determines whether a sequence contains any elements.
+    /// </summary>
+
+    public static bool Any<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      CheckNotNull(source, "source");
+
+      using (var e = source.GetEnumerator())
+        return e.MoveNext();
+    }
+
+    /// <summary>
+    /// Determines whether any element of a sequence satisfies a 
+    /// condition.
+    /// </summary>
+
+    public static bool Any<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, bool> predicate)
+    {
+      return source.Where(predicate).Any();
+    }
+
+    /// <summary>
+    /// Determines whether a sequence contains a specified element by 
+    /// using the default equality comparer.
+    /// </summary>
+
+    public static bool Contains<TSource>(
+      this IEnumerable<TSource> source,
+      TSource value)
+    {
+      return source.Contains(value, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Determines whether a sequence contains a specified element by 
+    /// using a specified <see cref="IEqualityComparer{T}" />.
+    /// </summary>
+
+    public static bool Contains<TSource>(
+      this IEnumerable<TSource> source,
+      TSource value,
+      IEqualityComparer<TSource> comparer)
+    {
+      CheckNotNull(source, "source");
+
+      if (comparer == null)
+      {
+        var collection = source as ICollection<TSource>;
+        if (collection != null)
+          return collection.Contains(value);
+      }
+
+      comparer = comparer ?? EqualityComparer<TSource>.Default;
+      return source.Any(item => comparer.Equals(item, value));
+    }
+
+    /// <summary>
+    /// Determines whether two sequences are equal by comparing the 
+    /// elements by using the default equality comparer for their type.
+    /// </summary>
+
+    public static bool SequenceEqual<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second)
+    {
+      return first.SequenceEqual(second, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Determines whether two sequences are equal by comparing their 
+    /// elements by using a specified <see cref="IEqualityComparer{T}" />.
+    /// </summary>
+
+    public static bool SequenceEqual<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second,
+      IEqualityComparer<TSource> comparer)
+    {
+      CheckNotNull(first, "frist");
+      CheckNotNull(second, "second");
+
+      comparer = comparer ?? EqualityComparer<TSource>.Default;
+
+      using (IEnumerator<TSource> lhs = first.GetEnumerator(),
+                                  rhs = second.GetEnumerator())
+      {
+        do
+        {
+          if (!lhs.MoveNext())
+            return !rhs.MoveNext();
+
+          if (!rhs.MoveNext())
+            return false;
+        } while (comparer.Equals(lhs.Current, rhs.Current));
+      }
+
+      return false;
+    }
+
+    /// <summary>
+    /// Base implementation for Min/Max operator.
+    /// </summary>
+
+    private static TSource MinMaxImpl<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TSource, bool> lesser)
+    {
+      CheckNotNull(source, "source");
+      Debug.Assert(lesser != null);
+
+      return source.Aggregate((a, item) => lesser(a, item) ? a : item);
+    }
+
+    /// <summary>
+    /// Base implementation for Min/Max operator for nullable types.
+    /// </summary>
+
+    private static TSource? MinMaxImpl<TSource>(
+      this IEnumerable<TSource?> source,
+      TSource? seed, Func<TSource?, TSource?, bool> lesser) where TSource : struct
+    {
+      CheckNotNull(source, "source");
+      Debug.Assert(lesser != null);
+
+      return source.Aggregate(seed, (a, item) => lesser(a, item) ? a : item);
+      //  == MinMaxImpl(Repeat<TSource?>(null, 1).Concat(source), lesser);
+    }
+
+    /// <summary>
+    /// Returns the minimum value in a generic sequence.
+    /// </summary>
+
+    public static TSource Min<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      var comparer = Comparer<TSource>.Default;
+      return source.MinMaxImpl((x, y) => comparer.Compare(x, y) < 0);
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a generic 
+    /// sequence and returns the minimum resulting value.
+    /// </summary>
+
+    public static TResult Min<TSource, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TResult> selector)
+    {
+      return source.Select(selector).Min();
+    }
+
+    /// <summary>
+    /// Returns the maximum value in a generic sequence.
+    /// </summary>
+
+    public static TSource Max<TSource>(
+      this IEnumerable<TSource> source)
+    {
+      var comparer = Comparer<TSource>.Default;
+      return source.MinMaxImpl((x, y) => comparer.Compare(x, y) > 0);
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a generic 
+    /// sequence and returns the maximum resulting value.
+    /// </summary>
+
+    public static TResult Max<TSource, TResult>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TResult> selector)
+    {
+      return source.Select(selector).Max();
+    }
+
+    /// <summary>
+    /// Makes an enumerator seen as enumerable once more.
+    /// </summary>
+    /// <remarks>
+    /// The supplied enumerator must have been started. The first element
+    /// returned is the element the enumerator was on when passed in.
+    /// DO NOT use this method if the caller must be a generator. It is
+    /// mostly safe among aggregate operations.
+    /// </remarks>
+
+    private static IEnumerable<T> Renumerable<T>(this IEnumerator<T> e)
+    {
+      Debug.Assert(e != null);
+
+      do
+      {
+        yield return e.Current;
+      } while (e.MoveNext());
+    }
+
+    /// <summary>
+    /// Sorts the elements of a sequence in ascending order according to a key.
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector)
+    {
+      return source.OrderBy(keySelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Sorts the elements of a sequence in ascending order by using a 
+    /// specified comparer.
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      IComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(keySelector, "keySelector");
+
+      return new OrderedEnumerable<TSource, TKey>(source, keySelector, comparer, /* descending */ false);
+    }
+
+    /// <summary>
+    /// Sorts the elements of a sequence in descending order according to a key.
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector)
+    {
+      return source.OrderByDescending(keySelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    ///  Sorts the elements of a sequence in descending order by using a 
+    /// specified comparer. 
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      IComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(source, "keySelector");
+
+      return new OrderedEnumerable<TSource, TKey>(source, keySelector, comparer, /* descending */ true);
+    }
+
+    /// <summary>
+    /// Performs a subsequent ordering of the elements in a sequence in 
+    /// ascending order according to a key.
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(
+      this IOrderedEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector)
+    {
+      return source.ThenBy(keySelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Performs a subsequent ordering of the elements in a sequence in 
+    /// ascending order by using a specified comparer.
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(
+      this IOrderedEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      IComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+
+      return source.CreateOrderedEnumerable(keySelector, comparer, /* descending */ false);
+    }
+
+    /// <summary>
+    /// Performs a subsequent ordering of the elements in a sequence in 
+    /// descending order, according to a key.
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
+      this IOrderedEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector)
+    {
+      return source.ThenByDescending(keySelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Performs a subsequent ordering of the elements in a sequence in 
+    /// descending order by using a specified comparer.
+    /// </summary>
+
+    public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
+      this IOrderedEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      IComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+
+      return source.CreateOrderedEnumerable(keySelector, comparer, /* descending */ true);
+    }
+
+    /// <summary>
+    /// Base implementation for Intersect and Except operators.
+    /// </summary>
+
+    private static IEnumerable<TSource> IntersectExceptImpl<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second,
+      IEqualityComparer<TSource> comparer,
+      bool flag)
+    {
+      CheckNotNull(first, "first");
+      CheckNotNull(second, "second");
+
+      var keys = new List<TSource>();
+      var flags = new Dictionary<TSource, bool>(comparer);
+
+      foreach (var item in first.Where(k => !flags.ContainsKey(k)))
+      {
+        flags.Add(item, !flag);
+        keys.Add(item);
+      }
+
+      foreach (var item in second.Where(flags.ContainsKey))
+        flags[item] = flag;
+
+      //
+      // As per docs, "the marked elements are yielded in the order in 
+      // which they were collected.
+      //
+
+      return keys.Where(item => flags[item]);
+    }
+
+    /// <summary>
+    /// Produces the set intersection of two sequences by using the 
+    /// default equality comparer to compare values.
+    /// </summary>
+
+    public static IEnumerable<TSource> Intersect<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second)
+    {
+      return first.Intersect(second, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Produces the set intersection of two sequences by using the 
+    /// specified <see cref="IEqualityComparer{T}" /> to compare values.
+    /// </summary>
+
+    public static IEnumerable<TSource> Intersect<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second,
+      IEqualityComparer<TSource> comparer)
+    {
+      return IntersectExceptImpl(first, second, comparer, /* flag */ true);
+    }
+
+    /// <summary>
+    /// Produces the set difference of two sequences by using the 
+    /// default equality comparer to compare values.
+    /// </summary>
+
+    public static IEnumerable<TSource> Except<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second)
+    {
+      return first.Except(second, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Produces the set difference of two sequences by using the 
+    /// specified <see cref="IEqualityComparer{T}" /> to compare values.
+    /// </summary>
+
+    public static IEnumerable<TSource> Except<TSource>(
+      this IEnumerable<TSource> first,
+      IEnumerable<TSource> second,
+      IEqualityComparer<TSource> comparer)
+    {
+      return IntersectExceptImpl(first, second, comparer, /* flag */ false);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to a specified key 
+    /// selector function.
+    /// </summary>
+
+    public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector)
+    {
+      return source.ToDictionary(keySelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to a specified key 
+    /// selector function and key comparer.
+    /// </summary>
+
+    public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      return source.ToDictionary(keySelector, e => e);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to specified key 
+    /// selector and element selector functions.
+    /// </summary>
+
+    public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector)
+    {
+      return source.ToDictionary(keySelector, elementSelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Creates a <see cref="Dictionary{TKey,TValue}" /> from an 
+    /// <see cref="IEnumerable{T}" /> according to a specified key 
+    /// selector function, a comparer, and an element selector function.
+    /// </summary>
+
+    public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
+      this IEnumerable<TSource> source,
+      Func<TSource, TKey> keySelector,
+      Func<TSource, TElement> elementSelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      CheckNotNull(source, "source");
+      CheckNotNull(keySelector, "keySelector");
+      CheckNotNull(elementSelector, "elementSelector");
+
+      var dict = new Dictionary<TKey, TElement>(comparer);
+
+      foreach (var item in source)
+      {
+        //
+        // ToDictionary is meant to throw ArgumentNullException if
+        // keySelector produces a key that is null and 
+        // Argument exception if keySelector produces duplicate keys 
+        // for two elements. Incidentally, the doucmentation for
+        // IDictionary<TKey, TValue>.Add says that the Add method
+        // throws the same exceptions under the same circumstances
+        // so we don't need to do any additional checking or work
+        // here and let the Add implementation do all the heavy
+        // lifting.
+        //
+
+        dict.Add(keySelector(item), elementSelector(item));
+      }
+
+      return dict;
+    }
+
+    /// <summary>
+    /// Correlates the elements of two sequences based on matching keys. 
+    /// The default equality comparer is used to compare keys.
+    /// </summary>
+
+    public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
+      this IEnumerable<TOuter> outer,
+      IEnumerable<TInner> inner,
+      Func<TOuter, TKey> outerKeySelector,
+      Func<TInner, TKey> innerKeySelector,
+      Func<TOuter, TInner, TResult> resultSelector)
+    {
+      return outer.Join(inner, outerKeySelector, innerKeySelector, resultSelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Correlates the elements of two sequences based on matching keys. 
+    /// The default equality comparer is used to compare keys. A 
+    /// specified <see cref="IEqualityComparer{T}" /> is used to compare keys.
+    /// </summary>
+
+    public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
+      this IEnumerable<TOuter> outer,
+      IEnumerable<TInner> inner,
+      Func<TOuter, TKey> outerKeySelector,
+      Func<TInner, TKey> innerKeySelector,
+      Func<TOuter, TInner, TResult> resultSelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      CheckNotNull(outer, "outer");
+      CheckNotNull(inner, "inner");
+      CheckNotNull(outerKeySelector, "outerKeySelector");
+      CheckNotNull(innerKeySelector, "innerKeySelector");
+      CheckNotNull(resultSelector, "resultSelector");
+
+      var lookup = inner.ToLookup(innerKeySelector, comparer);
+
+      return
+        from o in outer
+        from i in lookup[outerKeySelector(o)]
+        select resultSelector(o, i);
+    }
+
+    /// <summary>
+    /// Correlates the elements of two sequences based on equality of 
+    /// keys and groups the results. The default equality comparer is 
+    /// used to compare keys.
+    /// </summary>
+
+    public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
+      this IEnumerable<TOuter> outer,
+      IEnumerable<TInner> inner,
+      Func<TOuter, TKey> outerKeySelector,
+      Func<TInner, TKey> innerKeySelector,
+      Func<TOuter, IEnumerable<TInner>, TResult> resultSelector)
+    {
+      return outer.GroupJoin(inner, outerKeySelector, innerKeySelector, resultSelector, /* comparer */ null);
+    }
+
+    /// <summary>
+    /// Correlates the elements of two sequences based on equality of 
+    /// keys and groups the results. The default equality comparer is 
+    /// used to compare keys. A specified <see cref="IEqualityComparer{T}" /> 
+    /// is used to compare keys.
+    /// </summary>
+
+    public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
+      this IEnumerable<TOuter> outer,
+      IEnumerable<TInner> inner,
+      Func<TOuter, TKey> outerKeySelector,
+      Func<TInner, TKey> innerKeySelector,
+      Func<TOuter, IEnumerable<TInner>, TResult> resultSelector,
+      IEqualityComparer<TKey> comparer)
+    {
+      CheckNotNull(outer, "outer");
+      CheckNotNull(inner, "inner");
+      CheckNotNull(outerKeySelector, "outerKeySelector");
+      CheckNotNull(innerKeySelector, "innerKeySelector");
+      CheckNotNull(resultSelector, "resultSelector");
+
+      var lookup = inner.ToLookup(innerKeySelector, comparer);
+      return outer.Select(o => resultSelector(o, lookup[outerKeySelector(o)]));
+    }
+
+    [DebuggerStepThrough]
+    private static void CheckNotNull<T>(T value, string name) where T : class
+    {
+      if (value == null)
+        throw new ArgumentNullException(name);
+    }
+
+    private static class Sequence<T>
+    {
+      public static readonly IEnumerable<T> Empty = new T[0];
+    }
+
+    private sealed class Grouping<K, V> : List<V>, IGrouping<K, V>
+    {
+      internal Grouping(K key)
+      {
+        Key = key;
+      }
+
+      public K Key { get; private set; }
+    }
+  }
+
+  internal partial class Enumerable
+  {
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Int32" /> values.
+    /// </summary>
+
+    public static int Sum(
+      this IEnumerable<int> source)
+    {
+      CheckNotNull(source, "source");
+
+      int sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + num);
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Int32" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static int Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Int32" /> values.
+    /// </summary>
+
+    public static double Average(
+      this IEnumerable<int> source)
+    {
+      CheckNotNull(source, "source");
+
+      long sum = 0;
+      long count = 0;
+
+      foreach (var num in source)
+        checked
+        {
+          sum += (int) num;
+          count++;
+        }
+
+      if (count == 0)
+        throw new InvalidOperationException();
+
+      return (double) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Int32" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static double Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Int32" /> values.
+    /// </summary>
+
+    public static int? Sum(
+      this IEnumerable<int?> source)
+    {
+      CheckNotNull(source, "source");
+
+      int sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + (num ?? 0));
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Int32" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static int? Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int?> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Int32" /> values.
+    /// </summary>
+
+    public static double? Average(
+      this IEnumerable<int?> source)
+    {
+      CheckNotNull(source, "source");
+
+      long sum = 0;
+      long count = 0;
+
+      foreach (var num in source.Where(n => n != null))
+        checked
+        {
+          sum += (int) num;
+          count++;
+        }
+
+      if (count == 0)
+        return null;
+
+      return (double?) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Int32" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static double? Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int?> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+    /// <summary>
+    /// Returns the minimum value in a sequence of nullable 
+    /// <see cref="System.Int32" /> values.
+    /// </summary>
+
+    public static int? Min(
+      this IEnumerable<int?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the minimum nullable <see cref="System.Int32" /> value.
+    /// </summary>
+
+    public static int? Min<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int?> selector)
+    {
+      return source.Select(selector).Min();
+    }
+
+    /// <summary>
+    /// Returns the maximum value in a sequence of nullable 
+    /// <see cref="System.Int32" /> values.
+    /// </summary>
+
+    public static int? Max(
+      this IEnumerable<int?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null),
+                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the maximum nullable <see cref="System.Int32" /> value.
+    /// </summary>
+
+    public static int? Max<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, int?> selector)
+    {
+      return source.Select(selector).Max();
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Int64" /> values.
+    /// </summary>
+
+    public static long Sum(
+      this IEnumerable<long> source)
+    {
+      CheckNotNull(source, "source");
+
+      long sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + num);
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Int64" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static long Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, long> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Int64" /> values.
+    /// </summary>
+
+    public static double Average(
+      this IEnumerable<long> source)
+    {
+      CheckNotNull(source, "source");
+
+      long sum = 0;
+      long count = 0;
+
+      foreach (var num in source)
+        checked
+        {
+          sum += (long) num;
+          count++;
+        }
+
+      if (count == 0)
+        throw new InvalidOperationException();
+
+      return (double) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Int64" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static double Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, long> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Int64" /> values.
+    /// </summary>
+
+    public static long? Sum(
+      this IEnumerable<long?> source)
+    {
+      CheckNotNull(source, "source");
+
+      long sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + (num ?? 0));
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Int64" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static long? Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, long?> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Int64" /> values.
+    /// </summary>
+
+    public static double? Average(
+      this IEnumerable<long?> source)
+    {
+      CheckNotNull(source, "source");
+
+      long sum = 0;
+      long count = 0;
+
+      foreach (var num in source.Where(n => n != null))
+        checked
+        {
+          sum += (long) num;
+          count++;
+        }
+
+      if (count == 0)
+        return null;
+
+      return (double?) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Int64" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static double? Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, long?> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+    /// <summary>
+    /// Returns the minimum value in a sequence of nullable 
+    /// <see cref="System.Int64" /> values.
+    /// </summary>
+
+    public static long? Min(
+      this IEnumerable<long?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the minimum nullable <see cref="System.Int64" /> value.
+    /// </summary>
+
+    public static long? Min<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, long?> selector)
+    {
+      return source.Select(selector).Min();
+    }
+
+    /// <summary>
+    /// Returns the maximum value in a sequence of nullable 
+    /// <see cref="System.Int64" /> values.
+    /// </summary>
+
+    public static long? Max(
+      this IEnumerable<long?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null),
+                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the maximum nullable <see cref="System.Int64" /> value.
+    /// </summary>
+
+    public static long? Max<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, long?> selector)
+    {
+      return source.Select(selector).Max();
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Single" /> values.
+    /// </summary>
+
+    public static float Sum(
+      this IEnumerable<float> source)
+    {
+      CheckNotNull(source, "source");
+
+      float sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + num);
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Single" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static float Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, float> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Single" /> values.
+    /// </summary>
+
+    public static float Average(
+      this IEnumerable<float> source)
+    {
+      CheckNotNull(source, "source");
+
+      float sum = 0;
+      long count = 0;
+
+      foreach (var num in source)
+        checked
+        {
+          sum += (float) num;
+          count++;
+        }
+
+      if (count == 0)
+        throw new InvalidOperationException();
+
+      return (float) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Single" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static float Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, float> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Single" /> values.
+    /// </summary>
+
+    public static float? Sum(
+      this IEnumerable<float?> source)
+    {
+      CheckNotNull(source, "source");
+
+      float sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + (num ?? 0));
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Single" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static float? Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, float?> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Single" /> values.
+    /// </summary>
+
+    public static float? Average(
+      this IEnumerable<float?> source)
+    {
+      CheckNotNull(source, "source");
+
+      float sum = 0;
+      long count = 0;
+
+      foreach (var num in source.Where(n => n != null))
+        checked
+        {
+          sum += (float) num;
+          count++;
+        }
+
+      if (count == 0)
+        return null;
+
+      return (float?) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Single" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static float? Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, float?> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+    /// <summary>
+    /// Returns the minimum value in a sequence of nullable 
+    /// <see cref="System.Single" /> values.
+    /// </summary>
+
+    public static float? Min(
+      this IEnumerable<float?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the minimum nullable <see cref="System.Single" /> value.
+    /// </summary>
+
+    public static float? Min<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, float?> selector)
+    {
+      return source.Select(selector).Min();
+    }
+
+    /// <summary>
+    /// Returns the maximum value in a sequence of nullable 
+    /// <see cref="System.Single" /> values.
+    /// </summary>
+
+    public static float? Max(
+      this IEnumerable<float?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null),
+                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the maximum nullable <see cref="System.Single" /> value.
+    /// </summary>
+
+    public static float? Max<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, float?> selector)
+    {
+      return source.Select(selector).Max();
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Double" /> values.
+    /// </summary>
+
+    public static double Sum(
+      this IEnumerable<double> source)
+    {
+      CheckNotNull(source, "source");
+
+      double sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + num);
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Double" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static double Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, double> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Double" /> values.
+    /// </summary>
+
+    public static double Average(
+      this IEnumerable<double> source)
+    {
+      CheckNotNull(source, "source");
+
+      double sum = 0;
+      long count = 0;
+
+      foreach (var num in source)
+        checked
+        {
+          sum += (double) num;
+          count++;
+        }
+
+      if (count == 0)
+        throw new InvalidOperationException();
+
+      return (double) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Double" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static double Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, double> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Double" /> values.
+    /// </summary>
+
+    public static double? Sum(
+      this IEnumerable<double?> source)
+    {
+      CheckNotNull(source, "source");
+
+      double sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + (num ?? 0));
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Double" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static double? Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, double?> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Double" /> values.
+    /// </summary>
+
+    public static double? Average(
+      this IEnumerable<double?> source)
+    {
+      CheckNotNull(source, "source");
+
+      double sum = 0;
+      long count = 0;
+
+      foreach (var num in source.Where(n => n != null))
+        checked
+        {
+          sum += (double) num;
+          count++;
+        }
+
+      if (count == 0)
+        return null;
+
+      return (double?) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Double" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static double? Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, double?> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+    /// <summary>
+    /// Returns the minimum value in a sequence of nullable 
+    /// <see cref="System.Double" /> values.
+    /// </summary>
+
+    public static double? Min(
+      this IEnumerable<double?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the minimum nullable <see cref="System.Double" /> value.
+    /// </summary>
+
+    public static double? Min<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, double?> selector)
+    {
+      return source.Select(selector).Min();
+    }
+
+    /// <summary>
+    /// Returns the maximum value in a sequence of nullable 
+    /// <see cref="System.Double" /> values.
+    /// </summary>
+
+    public static double? Max(
+      this IEnumerable<double?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null),
+                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the maximum nullable <see cref="System.Double" /> value.
+    /// </summary>
+
+    public static double? Max<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, double?> selector)
+    {
+      return source.Select(selector).Max();
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Decimal" /> values.
+    /// </summary>
+
+    public static decimal Sum(
+      this IEnumerable<decimal> source)
+    {
+      CheckNotNull(source, "source");
+
+      decimal sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + num);
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of nullable <see cref="System.Decimal" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static decimal Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, decimal> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Decimal" /> values.
+    /// </summary>
+
+    public static decimal Average(
+      this IEnumerable<decimal> source)
+    {
+      CheckNotNull(source, "source");
+
+      decimal sum = 0;
+      long count = 0;
+
+      foreach (var num in source)
+        checked
+        {
+          sum += (decimal) num;
+          count++;
+        }
+
+      if (count == 0)
+        throw new InvalidOperationException();
+
+      return (decimal) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of nullable <see cref="System.Decimal" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static decimal Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, decimal> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Decimal" /> values.
+    /// </summary>
+
+    public static decimal? Sum(
+      this IEnumerable<decimal?> source)
+    {
+      CheckNotNull(source, "source");
+
+      decimal sum = 0;
+      foreach (var num in source)
+        sum = checked(sum + (num ?? 0));
+
+      return sum;
+    }
+
+    /// <summary>
+    /// Computes the sum of a sequence of <see cref="System.Decimal" /> 
+    /// values that are obtained by invoking a transform function on 
+    /// each element of the input sequence.
+    /// </summary>
+
+    public static decimal? Sum<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, decimal?> selector)
+    {
+      return source.Select(selector).Sum();
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Decimal" /> values.
+    /// </summary>
+
+    public static decimal? Average(
+      this IEnumerable<decimal?> source)
+    {
+      CheckNotNull(source, "source");
+
+      decimal sum = 0;
+      long count = 0;
+
+      foreach (var num in source.Where(n => n != null))
+        checked
+        {
+          sum += (decimal) num;
+          count++;
+        }
+
+      if (count == 0)
+        return null;
+
+      return (decimal?) sum/count;
+    }
+
+    /// <summary>
+    /// Computes the average of a sequence of <see cref="System.Decimal" /> values 
+    /// that are obtained by invoking a transform function on each 
+    /// element of the input sequence.
+    /// </summary>
+
+    public static decimal? Average<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, decimal?> selector)
+    {
+      return source.Select(selector).Average();
+    }
+
+    /// <summary>
+    /// Returns the minimum value in a sequence of nullable 
+    /// <see cref="System.Decimal" /> values.
+    /// </summary>
+
+    public static decimal? Min(
+      this IEnumerable<decimal?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null), null, (min, x) => min < x);
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the minimum nullable <see cref="System.Decimal" /> value.
+    /// </summary>
+
+    public static decimal? Min<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, decimal?> selector)
+    {
+      return source.Select(selector).Min();
+    }
+
+    /// <summary>
+    /// Returns the maximum value in a sequence of nullable 
+    /// <see cref="System.Decimal" /> values.
+    /// </summary>
+
+    public static decimal? Max(
+      this IEnumerable<decimal?> source)
+    {
+      CheckNotNull(source, "source");
+
+      return MinMaxImpl(source.Where(x => x != null),
+                        null, (max, x) => x == null || (max != null && x.Value < max.Value));
+    }
+
+    /// <summary>
+    /// Invokes a transform function on each element of a sequence and 
+    /// returns the maximum nullable <see cref="System.Decimal" /> value.
+    /// </summary>
+
+    public static decimal? Max<TSource>(
+      this IEnumerable<TSource> source,
+      Func<TSource, decimal?> selector)
+    {
+      return source.Select(selector).Max();
+    }
+  }
+
+  /// <summary>
+  /// Represents a collection of objects that have a common key.
+  /// </summary>
+  internal partial interface IGrouping<TKey, TElement> : IEnumerable<TElement>
+  {
+    /// <summary>
+    /// Gets the key of the <see cref="IGrouping{TKey,TElement}" />.
+    /// </summary>
+
+    TKey Key { get; }
+  }
+
+  /// <summary>
+  /// Defines an indexer, size property, and Boolean search method for 
+  /// data structures that map keys to <see cref="IEnumerable{T}"/> 
+  /// sequences of values.
+  /// </summary>
+  internal partial interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>
+  {
+    bool Contains(TKey key);
+    int Count { get; }
+    IEnumerable<TElement> this[TKey key] { get; }
+  }
+
+  /// <summary>
+  /// Represents a sorted sequence.
+  /// </summary>
+  internal partial interface IOrderedEnumerable<TElement> : IEnumerable<TElement>
+  {
+    /// <summary>
+    /// Performs a subsequent ordering on the elements of an 
+    /// <see cref="IOrderedEnumerable{T}"/> according to a key.
+    /// </summary>
+
+    IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey>(
+      Func<TElement, TKey> keySelector, IComparer<TKey> comparer, bool descending);
+  }
+
+  /// <summary>
+  /// Represents a collection of keys each mapped to one or more values.
+  /// </summary>
+  internal sealed class Lookup<TKey, TElement> : ILookup<TKey, TElement>
+  {
+    private readonly Dictionary<TKey, IGrouping<TKey, TElement>> _map;
+
+    internal Lookup(IEqualityComparer<TKey> comparer)
+    {
+      _map = new Dictionary<TKey, IGrouping<TKey, TElement>>(comparer);
+    }
+
+    internal void Add(IGrouping<TKey, TElement> item)
+    {
+      _map.Add(item.Key, item);
+    }
+
+    internal IEnumerable<TElement> Find(TKey key)
+    {
+      IGrouping<TKey, TElement> grouping;
+      return _map.TryGetValue(key, out grouping) ? grouping : null;
+    }
+
+    /// <summary>
+    /// Gets the number of key/value collection pairs in the <see cref="Lookup{TKey,TElement}" />.
+    /// </summary>
+
+    public int Count
+    {
+      get { return _map.Count; }
+    }
+
+    /// <summary>
+    /// Gets the collection of values indexed by the specified key.
+    /// </summary>
+
+    public IEnumerable<TElement> this[TKey key]
+    {
+      get
+      {
+        IGrouping<TKey, TElement> result;
+        return _map.TryGetValue(key, out result) ? result : Enumerable.Empty<TElement>();
+      }
+    }
+
+    /// <summary>
+    /// Determines whether a specified key is in the <see cref="Lookup{TKey,TElement}" />.
+    /// </summary>
+
+    public bool Contains(TKey key)
+    {
+      return _map.ContainsKey(key);
+    }
+
+    /// <summary>
+    /// Applies a transform function to each key and its associated 
+    /// values and returns the results.
+    /// </summary>
+
+    public IEnumerable<TResult> ApplyResultSelector<TResult>(
+      Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
+    {
+      if (resultSelector == null)
+        throw new ArgumentNullException("resultSelector");
+
+      foreach (var pair in _map)
+        yield return resultSelector(pair.Key, pair.Value);
+    }
+
+    /// <summary>
+    /// Returns a generic enumerator that iterates through the <see cref="Lookup{TKey,TElement}" />.
+    /// </summary>
+
+    public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator()
+    {
+      return _map.Values.GetEnumerator();
+    }
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return GetEnumerator();
+    }
+  }
+
+  internal sealed class OrderedEnumerable<T, K> : IOrderedEnumerable<T>
+  {
+    private readonly IEnumerable<T> _source;
+    private readonly List<Comparison<T>> _comparisons;
+
+    public OrderedEnumerable(IEnumerable<T> source,
+                             Func<T, K> keySelector, IComparer<K> comparer, bool descending) :
+                               this(source, null, keySelector, comparer, descending)
+    {
+    }
+
+    private OrderedEnumerable(IEnumerable<T> source, List<Comparison<T>> comparisons,
+                              Func<T, K> keySelector, IComparer<K> comparer, bool descending)
+    {
+      if (source == null) throw new ArgumentNullException("source");
+      if (keySelector == null) throw new ArgumentNullException("keySelector");
+
+      _source = source;
+
+      comparer = comparer ?? Comparer<K>.Default;
+
+      if (comparisons == null)
+        comparisons = new List<Comparison<T>>( /* capacity */ 4);
+
+      comparisons.Add((x, y)
+                      => (descending ? -1 : 1)*comparer.Compare(keySelector(x), keySelector(y)));
+
+      _comparisons = comparisons;
+    }
+
+    public IOrderedEnumerable<T> CreateOrderedEnumerable<KK>(
+      Func<T, KK> keySelector, IComparer<KK> comparer, bool descending)
+    {
+      return new OrderedEnumerable<T, KK>(_source, _comparisons, keySelector, comparer, descending);
+    }
+
+    public IEnumerator<T> GetEnumerator()
+    {
+      //
+      // We sort using List<T>.Sort, but docs say that it performs an 
+      // unstable sort. LINQ, on the other hand, says OrderBy performs 
+      // a stable sort. So convert the source sequence into a sequence 
+      // of tuples where the second element tags the position of the 
+      // element from the source sequence (First). The position is 
+      // then used as a tie breaker when all keys compare equal,
+      // thus making the sort stable.
+      //
+
+      var list = _source.Select(new Func<T, int, Tuple<T, int>>(TagPosition)).ToList();
+
+      list.Sort((x, y) =>
+        {
+          //
+          // Compare keys from left to right.
+          //
+
+          var comparisons = _comparisons;
+          for (var i = 0; i < comparisons.Count; i++)
+          {
+            var result = comparisons[i](x.First, y.First);
+            if (result != 0)
+              return result;
+          }
+
+          //
+          // All keys compared equal so now break the tie by their
+          // position in the original sequence, making the sort stable.
+          //
+
+          return x.Second.CompareTo(y.Second);
+        });
+
+      return list.Select(new Func<Tuple<T, int>, T>(GetFirst)).GetEnumerator();
+
+    }
+
+    /// <remarks>
+    /// See <a href="http://code.google.com/p/linqbridge/issues/detail?id=11">issue #11</a>
+    /// for why this method is needed and cannot be expressed as a 
+    /// lambda at the call site.
+    /// </remarks>
+
+    private static Tuple<T, int> TagPosition(T e, int i)
+    {
+      return new Tuple<T, int>(e, i);
+    }
+
+    /// <remarks>
+    /// See <a href="http://code.google.com/p/linqbridge/issues/detail?id=11">issue #11</a>
+    /// for why this method is needed and cannot be expressed as a 
+    /// lambda at the call site.
+    /// </remarks>
+
+    private static T GetFirst(Tuple<T, int> pv)
+    {
+      return pv.First;
+    }
+
+    IEnumerator IEnumerable.GetEnumerator()
+    {
+      return GetEnumerator();
+    }
+  }
+
+  [Serializable]
+  internal struct Tuple<TFirst, TSecond> : IEquatable<Tuple<TFirst, TSecond>>
+  {
+    public TFirst First { get; private set; }
+    public TSecond Second { get; private set; }
+
+    public Tuple(TFirst first, TSecond second)
+      : this()
+    {
+      First = first;
+      Second = second;
+    }
+
+    public override bool Equals(object obj)
+    {
+      return obj != null
+             && obj is Tuple<TFirst, TSecond>
+             && base.Equals((Tuple<TFirst, TSecond>) obj);
+    }
+
+    public bool Equals(Tuple<TFirst, TSecond> other)
+    {
+      return EqualityComparer<TFirst>.Default.Equals(other.First, First)
+             && EqualityComparer<TSecond>.Default.Equals(other.Second, Second);
+    }
+
+    public override int GetHashCode()
+    {
+      var num = 0x7a2f0b42;
+      num = (-1521134295*num) + EqualityComparer<TFirst>.Default.GetHashCode(First);
+      return (-1521134295*num) + EqualityComparer<TSecond>.Default.GetHashCode(Second);
+    }
+
+    public override string ToString()
+    {
+      return string.Format(@"{{ First = {0}, Second = {1} }}", First, Second);
+    }
+  }
+}
+
+namespace Newtonsoft.Json.Serialization
+{
+  public delegate TResult Func<TResult>();
+
+  public delegate TResult Func<T, TResult>(T a);
+
+  public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
+
+  public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
+
+  public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
+
+  public delegate void Action();
+
+  public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
+
+  public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
+
+  public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
+}
+
+namespace System.Runtime.CompilerServices
+{
+  /// <remarks>
+  /// This attribute allows us to define extension methods without 
+  /// requiring .NET Framework 3.5. For more information, see the section,
+  /// <a href="http://msdn.microsoft.com/en-us/magazine/cc163317.aspx#S7">Extension Methods in .NET Framework 2.0 Apps</a>,
+  /// of <a href="http://msdn.microsoft.com/en-us/magazine/cc163317.aspx">Basic Instincts: Extension Methods</a>
+  /// column in <a href="http://msdn.microsoft.com/msdnmag/">MSDN Magazine</a>, 
+  /// issue <a href="http://msdn.microsoft.com/en-us/magazine/cc135410.aspx">Nov 2007</a>.
+  /// </remarks>
+
+  [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
+  internal sealed class ExtensionAttribute : Attribute { }
+}
+
 #endif
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ListWrapper.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ListWrapper.cs
@@ -1,189 +1,189 @@
-﻿#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System.Collections;
-using System.Collections.Generic;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal interface IWrappedList : IList
-  {
-    object UnderlyingList { get; }
-  }
-
-  internal class ListWrapper<T> : CollectionWrapper<T>, IList<T>, IWrappedList
-  {
-    private readonly IList<T> _genericList;
-
-    public ListWrapper(IList list)
-      : base(list)
-    {
-      ValidationUtils.ArgumentNotNull(list, "list");
-
-      if (list is IList<T>)
-        _genericList = (IList<T>) list;
-    }
-
-    public ListWrapper(IList<T> list)
-      : base(list)
-    {
-      ValidationUtils.ArgumentNotNull(list, "list");
-
-      _genericList = list;
-    }
-
-    public int IndexOf(T item)
-    {
-      if (_genericList != null)
-        return _genericList.IndexOf(item);
-      else
-        return ((IList)this).IndexOf(item);
-    }
-
-    public void Insert(int index, T item)
-    {
-      if (_genericList != null)
-        _genericList.Insert(index, item);
-      else
-        ((IList)this).Insert(index, item);
-    }
-
-    public void RemoveAt(int index)
-    {
-      if (_genericList != null)
-        _genericList.RemoveAt(index);
-      else
-        ((IList)this).RemoveAt(index);
-    }
-
-    public T this[int index]
-    {
-      get
-      {
-        if (_genericList != null)
-          return _genericList[index];
-        else
-          return (T)((IList)this)[index];
-      }
-      set
-      {
-        if (_genericList != null)
-          _genericList[index] = value;
-        else
-          ((IList)this)[index] = value;
-      }
-    }
-
-    public override void Add(T item)
-    {
-      if (_genericList != null)
-        _genericList.Add(item);
-      else
-        base.Add(item);
-    }
-
-    public override void Clear()
-    {
-      if (_genericList != null)
-        _genericList.Clear();
-      else
-        base.Clear();
-    }
-
-    public override bool Contains(T item)
-    {
-      if (_genericList != null)
-        return _genericList.Contains(item);
-      else
-        return base.Contains(item);
-    }
-
-    public override void CopyTo(T[] array, int arrayIndex)
-    {
-      if (_genericList != null)
-        _genericList.CopyTo(array, arrayIndex);
-      else
-        base.CopyTo(array, arrayIndex);
-    }
-
-    public override int Count
-    {
-      get
-      {
-        if (_genericList != null)
-          return _genericList.Count;
-        else
-          return base.Count;
-      }
-    }
-
-    public override bool IsReadOnly
-    {
-      get
-      {
-        if (_genericList != null)
-          return _genericList.IsReadOnly;
-        else
-          return base.IsReadOnly;
-      }
-    }
-
-    public override bool Remove(T item)
-    {
-      if (_genericList != null)
-      {
-        return _genericList.Remove(item);
-      }
-      else
-      {
-        bool contains = base.Contains(item);
-
-        if (contains)
-          base.Remove(item);
-
-        return contains;
-      }
-    }
-
-    public override IEnumerator<T> GetEnumerator()
-    {
-      if (_genericList != null)
-        return _genericList.GetEnumerator();
-
-      return base.GetEnumerator();
-    }
-
-    public object UnderlyingList
-    {
-      get
-      {
-        if (_genericList != null)
-          return _genericList;
-        else
-          return UnderlyingCollection;
-      }
-    }
-  }
+﻿#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal interface IWrappedList : IList
+  {
+    object UnderlyingList { get; }
+  }
+
+  internal class ListWrapper<T> : CollectionWrapper<T>, IList<T>, IWrappedList
+  {
+    private readonly IList<T> _genericList;
+
+    public ListWrapper(IList list)
+      : base(list)
+    {
+      ValidationUtils.ArgumentNotNull(list, "list");
+
+      if (list is IList<T>)
+        _genericList = (IList<T>) list;
+    }
+
+    public ListWrapper(IList<T> list)
+      : base(list)
+    {
+      ValidationUtils.ArgumentNotNull(list, "list");
+
+      _genericList = list;
+    }
+
+    public int IndexOf(T item)
+    {
+      if (_genericList != null)
+        return _genericList.IndexOf(item);
+      else
+        return ((IList)this).IndexOf(item);
+    }
+
+    public void Insert(int index, T item)
+    {
+      if (_genericList != null)
+        _genericList.Insert(index, item);
+      else
+        ((IList)this).Insert(index, item);
+    }
+
+    public void RemoveAt(int index)
+    {
+      if (_genericList != null)
+        _genericList.RemoveAt(index);
+      else
+        ((IList)this).RemoveAt(index);
+    }
+
+    public T this[int index]
+    {
+      get
+      {
+        if (_genericList != null)
+          return _genericList[index];
+        else
+          return (T)((IList)this)[index];
+      }
+      set
+      {
+        if (_genericList != null)
+          _genericList[index] = value;
+        else
+          ((IList)this)[index] = value;
+      }
+    }
+
+    public override void Add(T item)
+    {
+      if (_genericList != null)
+        _genericList.Add(item);
+      else
+        base.Add(item);
+    }
+
+    public override void Clear()
+    {
+      if (_genericList != null)
+        _genericList.Clear();
+      else
+        base.Clear();
+    }
+
+    public override bool Contains(T item)
+    {
+      if (_genericList != null)
+        return _genericList.Contains(item);
+      else
+        return base.Contains(item);
+    }
+
+    public override void CopyTo(T[] array, int arrayIndex)
+    {
+      if (_genericList != null)
+        _genericList.CopyTo(array, arrayIndex);
+      else
+        base.CopyTo(array, arrayIndex);
+    }
+
+    public override int Count
+    {
+      get
+      {
+        if (_genericList != null)
+          return _genericList.Count;
+        else
+          return base.Count;
+      }
+    }
+
+    public override bool IsReadOnly
+    {
+      get
+      {
+        if (_genericList != null)
+          return _genericList.IsReadOnly;
+        else
+          return base.IsReadOnly;
+      }
+    }
+
+    public override bool Remove(T item)
+    {
+      if (_genericList != null)
+      {
+        return _genericList.Remove(item);
+      }
+      else
+      {
+        bool contains = base.Contains(item);
+
+        if (contains)
+          base.Remove(item);
+
+        return contains;
+      }
+    }
+
+    public override IEnumerator<T> GetEnumerator()
+    {
+      if (_genericList != null)
+        return _genericList.GetEnumerator();
+
+      return base.GetEnumerator();
+    }
+
+    public object UnderlyingList
+    {
+      get
+      {
+        if (_genericList != null)
+          return _genericList;
+        else
+          return UnderlyingCollection;
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MathUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MathUtils.cs
@@ -1,90 +1,90 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class MathUtils
-  {
-    public static int IntLength(int i)
-    {
-      if (i < 0)
-        throw new ArgumentOutOfRangeException();
-
-      if (i == 0)
-        return 1;
-
-      return (int)Math.Floor(Math.Log10(i)) + 1;
-    }
-
-    public static char IntToHex(int n)
-    {
-      if (n <= 9)
-      {
-        return (char)(n + 48);
-      }
-      return (char)((n - 10) + 97);
-    }
-
-    public static int? Min(int? val1, int? val2)
-    {
-      if (val1 == null)
-        return val2;
-      if (val2 == null)
-        return val1;
-
-      return Math.Min(val1.Value, val2.Value);
-    }
-
-    public static int? Max(int? val1, int? val2)
-    {
-      if (val1 == null)
-        return val2;
-      if (val2 == null)
-        return val1;
-
-      return Math.Max(val1.Value, val2.Value);
-    }
-
-    public static double? Max(double? val1, double? val2)
-    {
-      if (val1 == null)
-        return val2;
-      if (val2 == null)
-        return val1;
-
-      return Math.Max(val1.Value, val2.Value);
-    }
-
-    public static bool ApproxEquals(double d1, double d2)
-    {
-      // are values equal to within 6 (or so) digits of precision?
-      return Math.Abs(d1 - d2) < (Math.Abs(d1) * 1e-6);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class MathUtils
+  {
+    public static int IntLength(int i)
+    {
+      if (i < 0)
+        throw new ArgumentOutOfRangeException();
+
+      if (i == 0)
+        return 1;
+
+      return (int)Math.Floor(Math.Log10(i)) + 1;
+    }
+
+    public static char IntToHex(int n)
+    {
+      if (n <= 9)
+      {
+        return (char)(n + 48);
+      }
+      return (char)((n - 10) + 97);
+    }
+
+    public static int? Min(int? val1, int? val2)
+    {
+      if (val1 == null)
+        return val2;
+      if (val2 == null)
+        return val1;
+
+      return Math.Min(val1.Value, val2.Value);
+    }
+
+    public static int? Max(int? val1, int? val2)
+    {
+      if (val1 == null)
+        return val2;
+      if (val2 == null)
+        return val1;
+
+      return Math.Max(val1.Value, val2.Value);
+    }
+
+    public static double? Max(double? val1, double? val2)
+    {
+      if (val1 == null)
+        return val2;
+      if (val2 == null)
+        return val1;
+
+      return Math.Max(val1.Value, val2.Value);
+    }
+
+    public static bool ApproxEquals(double d1, double d2)
+    {
+      // are values equal to within 6 (or so) digits of precision?
+      return Math.Abs(d1 - d2) < (Math.Abs(d1) * 1e-6);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MethodCall.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MethodCall.cs
@@ -1,29 +1,29 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal delegate TResult MethodCall<T, TResult>(T target, params object[] args);
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal delegate TResult MethodCall<T, TResult>(T target, params object[] args);
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MiscellaneousUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/MiscellaneousUtils.cs
@@ -1,162 +1,162 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Reflection;
-using System.Text;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal delegate T Creator<T>();
-
-  internal static class MiscellaneousUtils
-  {
-    public static bool ValueEquals(object objA, object objB)
-    {
-      if (objA == null && objB == null)
-        return true;
-      if (objA != null && objB == null)
-        return false;
-      if (objA == null && objB != null)
-        return false;
-
-      // comparing an Int32 and Int64 both of the same value returns false
-      // make types the same then compare
-      if (objA.GetType() != objB.GetType())
-      {
-        if (ConvertUtils.IsInteger(objA) && ConvertUtils.IsInteger(objB))
-          return Convert.ToDecimal(objA, CultureInfo.CurrentCulture).Equals(Convert.ToDecimal(objB, CultureInfo.CurrentCulture));
-        else if ((objA is double || objA is float || objA is decimal) && (objB is double || objB is float || objB is decimal))
-          return MathUtils.ApproxEquals(Convert.ToDouble(objA, CultureInfo.CurrentCulture), Convert.ToDouble(objB, CultureInfo.CurrentCulture));
-        else
-          return false;
-      }
-
-      return objA.Equals(objB);
-    }
-
-    public static ArgumentOutOfRangeException CreateArgumentOutOfRangeException(string paramName, object actualValue, string message)
-    {
-      string newMessage = message + Environment.NewLine + @"Actual value was {0}.".FormatWith(CultureInfo.InvariantCulture, actualValue);
-
-      return new ArgumentOutOfRangeException(paramName, newMessage);
-    }
-
-    public static bool TryAction<T>(Creator<T> creator, out T output)
-    {
-      ValidationUtils.ArgumentNotNull(creator, "creator");
-
-      try
-      {
-        output = creator();
-        return true;
-      }
-      catch
-      {
-        output = default(T);
-        return false;
-      }
-    }
-
-    public static string ToString(object value)
-    {
-      if (value == null)
-        return "{null}";
-
-      return (value is string) ? @"""" + value.ToString() + @"""" : value.ToString();
-    }
-
-    public static byte[] HexToBytes(string hex)
-    {
-      string fixedHex = hex.Replace("-", string.Empty);
-
-      // array to put the result in
-      byte[] bytes = new byte[fixedHex.Length / 2];
-      // variable to determine shift of high/low nibble
-      int shift = 4;
-      // offset of the current byte in the array
-      int offset = 0;
-      // loop the characters in the string
-      foreach (char c in fixedHex)
-      {
-        // get character code in range 0-9, 17-22
-        // the % 32 handles lower case characters
-        int b = (c - '0') % 32;
-        // correction for a-f
-        if (b > 9) b -= 7;
-        // store nibble (4 bits) in byte array
-        bytes[offset] |= (byte)(b << shift);
-        // toggle the shift variable between 0 and 4
-        shift ^= 4;
-        // move to next byte
-        if (shift != 0) offset++;
-      }
-      return bytes;
-    }
-
-    public static string BytesToHex(byte[] bytes)
-    {
-      return BytesToHex(bytes, false);
-    }
-
-    public static string BytesToHex(byte[] bytes, bool removeDashes)
-    {
-      string hex = BitConverter.ToString(bytes);
-      if (removeDashes)
-        hex = hex.Replace("-", "");
-
-      return hex;
-    }
-
-    public static int ByteArrayCompare(byte[] a1, byte[] a2)
-    {
-      int lengthCompare = a1.Length.CompareTo(a2.Length);
-      if (lengthCompare != 0)
-        return lengthCompare;
-
-      for (int i = 0; i < a1.Length; i++)
-      {
-        int valueCompare = a1[i].CompareTo(a2[i]);
-        if (valueCompare != 0)
-          return valueCompare;
-      }
-
-      return 0;
-    }
-
-    public static string GetPrefix(string qualifiedName)
-    {
-      string prefix;
-      string localName;
-      GetQualifiedNameParts(qualifiedName, out prefix, out localName);
-
-      return prefix;
-    }
-
-    public static string GetLocalName(string qualifiedName)
-    {
-      string prefix;
-      string localName;
-      GetQualifiedNameParts(qualifiedName, out prefix, out localName);
-
-      return localName;
-    }
-
-    public static void GetQualifiedNameParts(string qualifiedName, out string prefix, out string localName)
-    {
-      int colonPosition = qualifiedName.IndexOf(':');
-
-      if ((colonPosition == -1 || colonPosition == 0) || (qualifiedName.Length - 1) == colonPosition)
-      {
-        prefix = null;
-        localName = qualifiedName;
-      }
-      else
-      {
-        prefix = qualifiedName.Substring(0, colonPosition);
-        localName = qualifiedName.Substring(colonPosition + 1);
-      }
-    }
-  }
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Reflection;
+using System.Text;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal delegate T Creator<T>();
+
+  internal static class MiscellaneousUtils
+  {
+    public static bool ValueEquals(object objA, object objB)
+    {
+      if (objA == null && objB == null)
+        return true;
+      if (objA != null && objB == null)
+        return false;
+      if (objA == null && objB != null)
+        return false;
+
+      // comparing an Int32 and Int64 both of the same value returns false
+      // make types the same then compare
+      if (objA.GetType() != objB.GetType())
+      {
+        if (ConvertUtils.IsInteger(objA) && ConvertUtils.IsInteger(objB))
+          return Convert.ToDecimal(objA, CultureInfo.CurrentCulture).Equals(Convert.ToDecimal(objB, CultureInfo.CurrentCulture));
+        else if ((objA is double || objA is float || objA is decimal) && (objB is double || objB is float || objB is decimal))
+          return MathUtils.ApproxEquals(Convert.ToDouble(objA, CultureInfo.CurrentCulture), Convert.ToDouble(objB, CultureInfo.CurrentCulture));
+        else
+          return false;
+      }
+
+      return objA.Equals(objB);
+    }
+
+    public static ArgumentOutOfRangeException CreateArgumentOutOfRangeException(string paramName, object actualValue, string message)
+    {
+      string newMessage = message + Environment.NewLine + @"Actual value was {0}.".FormatWith(CultureInfo.InvariantCulture, actualValue);
+
+      return new ArgumentOutOfRangeException(paramName, newMessage);
+    }
+
+    public static bool TryAction<T>(Creator<T> creator, out T output)
+    {
+      ValidationUtils.ArgumentNotNull(creator, "creator");
+
+      try
+      {
+        output = creator();
+        return true;
+      }
+      catch
+      {
+        output = default(T);
+        return false;
+      }
+    }
+
+    public static string ToString(object value)
+    {
+      if (value == null)
+        return "{null}";
+
+      return (value is string) ? @"""" + value.ToString() + @"""" : value.ToString();
+    }
+
+    public static byte[] HexToBytes(string hex)
+    {
+      string fixedHex = hex.Replace("-", string.Empty);
+
+      // array to put the result in
+      byte[] bytes = new byte[fixedHex.Length / 2];
+      // variable to determine shift of high/low nibble
+      int shift = 4;
+      // offset of the current byte in the array
+      int offset = 0;
+      // loop the characters in the string
+      foreach (char c in fixedHex)
+      {
+        // get character code in range 0-9, 17-22
+        // the % 32 handles lower case characters
+        int b = (c - '0') % 32;
+        // correction for a-f
+        if (b > 9) b -= 7;
+        // store nibble (4 bits) in byte array
+        bytes[offset] |= (byte)(b << shift);
+        // toggle the shift variable between 0 and 4
+        shift ^= 4;
+        // move to next byte
+        if (shift != 0) offset++;
+      }
+      return bytes;
+    }
+
+    public static string BytesToHex(byte[] bytes)
+    {
+      return BytesToHex(bytes, false);
+    }
+
+    public static string BytesToHex(byte[] bytes, bool removeDashes)
+    {
+      string hex = BitConverter.ToString(bytes);
+      if (removeDashes)
+        hex = hex.Replace("-", "");
+
+      return hex;
+    }
+
+    public static int ByteArrayCompare(byte[] a1, byte[] a2)
+    {
+      int lengthCompare = a1.Length.CompareTo(a2.Length);
+      if (lengthCompare != 0)
+        return lengthCompare;
+
+      for (int i = 0; i < a1.Length; i++)
+      {
+        int valueCompare = a1[i].CompareTo(a2[i]);
+        if (valueCompare != 0)
+          return valueCompare;
+      }
+
+      return 0;
+    }
+
+    public static string GetPrefix(string qualifiedName)
+    {
+      string prefix;
+      string localName;
+      GetQualifiedNameParts(qualifiedName, out prefix, out localName);
+
+      return prefix;
+    }
+
+    public static string GetLocalName(string qualifiedName)
+    {
+      string prefix;
+      string localName;
+      GetQualifiedNameParts(qualifiedName, out prefix, out localName);
+
+      return localName;
+    }
+
+    public static void GetQualifiedNameParts(string qualifiedName, out string prefix, out string localName)
+    {
+      int colonPosition = qualifiedName.IndexOf(':');
+
+      if ((colonPosition == -1 || colonPosition == 0) || (qualifiedName.Length - 1) == colonPosition)
+      {
+        prefix = null;
+        localName = qualifiedName;
+      }
+      else
+      {
+        prefix = qualifiedName.Substring(0, colonPosition);
+        localName = qualifiedName.Substring(colonPosition + 1);
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ReflectionDelegateFactory.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ReflectionDelegateFactory.cs
@@ -1,71 +1,71 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Globalization;
-using System.Reflection;
-using Newtonsoft.Json.Serialization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal abstract class ReflectionDelegateFactory
-  {
-    public Func<T, object> CreateGet<T>(MemberInfo memberInfo)
-    {
-      PropertyInfo propertyInfo = memberInfo as PropertyInfo;
-      if (propertyInfo != null)
-        return CreateGet<T>(propertyInfo);
-
-      FieldInfo fieldInfo = memberInfo as FieldInfo;
-      if (fieldInfo != null)
-        return CreateGet<T>(fieldInfo);
-
-      throw new Exception("Could not create getter for {0}.".FormatWith(CultureInfo.InvariantCulture, memberInfo));
-    }
-
-    public Action<T, object> CreateSet<T>(MemberInfo memberInfo)
-    {
-      PropertyInfo propertyInfo = memberInfo as PropertyInfo;
-      if (propertyInfo != null)
-        return CreateSet<T>(propertyInfo);
-
-      FieldInfo fieldInfo = memberInfo as FieldInfo;
-      if (fieldInfo != null)
-        return CreateSet<T>(fieldInfo);
-
-      throw new Exception("Could not create setter for {0}.".FormatWith(CultureInfo.InvariantCulture, memberInfo));
-    }
-
-    public abstract MethodCall<T, object> CreateMethodCall<T>(MethodBase method);
-    public abstract Func<T> CreateDefaultConstructor<T>(Type type);
-    public abstract Func<T, object> CreateGet<T>(PropertyInfo propertyInfo);
-    public abstract Func<T, object> CreateGet<T>(FieldInfo fieldInfo);
-    public abstract Action<T, object> CreateSet<T>(FieldInfo fieldInfo);
-    public abstract Action<T, object> CreateSet<T>(PropertyInfo propertyInfo);
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Globalization;
+using System.Reflection;
+using Newtonsoft.Json.Serialization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal abstract class ReflectionDelegateFactory
+  {
+    public Func<T, object> CreateGet<T>(MemberInfo memberInfo)
+    {
+      PropertyInfo propertyInfo = memberInfo as PropertyInfo;
+      if (propertyInfo != null)
+        return CreateGet<T>(propertyInfo);
+
+      FieldInfo fieldInfo = memberInfo as FieldInfo;
+      if (fieldInfo != null)
+        return CreateGet<T>(fieldInfo);
+
+      throw new Exception("Could not create getter for {0}.".FormatWith(CultureInfo.InvariantCulture, memberInfo));
+    }
+
+    public Action<T, object> CreateSet<T>(MemberInfo memberInfo)
+    {
+      PropertyInfo propertyInfo = memberInfo as PropertyInfo;
+      if (propertyInfo != null)
+        return CreateSet<T>(propertyInfo);
+
+      FieldInfo fieldInfo = memberInfo as FieldInfo;
+      if (fieldInfo != null)
+        return CreateSet<T>(fieldInfo);
+
+      throw new Exception("Could not create setter for {0}.".FormatWith(CultureInfo.InvariantCulture, memberInfo));
+    }
+
+    public abstract MethodCall<T, object> CreateMethodCall<T>(MethodBase method);
+    public abstract Func<T> CreateDefaultConstructor<T>(Type type);
+    public abstract Func<T, object> CreateGet<T>(PropertyInfo propertyInfo);
+    public abstract Func<T, object> CreateGet<T>(FieldInfo fieldInfo);
+    public abstract Action<T, object> CreateSet<T>(FieldInfo fieldInfo);
+    public abstract Action<T, object> CreateSet<T>(PropertyInfo propertyInfo);
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
@@ -1,982 +1,982 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Collections;
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Text;
-#if NETFX_CORE
-using IConvertible = Newtonsoft.Json.Utilities.Convertible;
-using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
-#endif
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Utilities
-{
-#if NETFX_CORE
-  internal enum TypeCode
-  {
-    Empty,
-    Object,
-    String,
-    Char,
-    Boolean,
-    SByte,
-    Int16,
-    UInt16,
-    Int32,
-    Byte,
-    UInt32,
-    Int64,
-    UInt64,
-    Single,
-    Double,
-    DateTime,
-    Decimal
-  }
-
-  internal enum MemberTypes
-  {
-    Property,
-    Field,
-    Event,
-    Method,
-    Other
-  }
-  
-  [Flags]
-  internal enum BindingFlags
-  {
-    Default = 0,
-    IgnoreCase = 1,
-    DeclaredOnly = 2,
-    Instance = 4,
-    Static = 8,
-    Public = 16,
-    NonPublic = 32,
-    FlattenHierarchy = 64,
-    InvokeMethod = 256,
-    CreateInstance = 512,
-    GetField = 1024,
-    SetField = 2048,
-    GetProperty = 4096,
-    SetProperty = 8192,
-    PutDispProperty = 16384,
-    ExactBinding = 65536,
-    PutRefDispProperty = 32768,
-    SuppressChangeType = 131072,
-    OptionalParamBinding = 262144,
-    IgnoreReturn = 16777216
-  }
-
-  internal class CustomAttributeProvider
-  {
-    private readonly object _underlyingObject;
-
-    public CustomAttributeProvider(object o)
-    {
-      _underlyingObject = o;
-    }
-
-    public object UnderlyingObject
-    {
-      get { return _underlyingObject; }
-    }
-  }
-#endif
-
-  internal static class ReflectionUtils
-  {
-    public static readonly Type[] EmptyTypes;
-
-    static ReflectionUtils()
-    {
-#if !NETFX_CORE
-      EmptyTypes = Type.EmptyTypes;
-#else
-      EmptyTypes = new Type[0];
-#endif
-    }
-
-    public static ICustomAttributeProvider GetCustomAttributeProvider(this object o)
-    {
-#if !NETFX_CORE
-      return (ICustomAttributeProvider)o;
-#else
-      return new ICustomAttributeProvider(o);
-#endif
-    }
-
-    public static bool IsVirtual(this PropertyInfo propertyInfo)
-    {
-      ValidationUtils.ArgumentNotNull(propertyInfo, "propertyInfo");
-
-      MethodInfo m = propertyInfo.GetGetMethod();
-      if (m != null && m.IsVirtual)
-        return true;
-
-      m = propertyInfo.GetSetMethod();
-      if (m != null && m.IsVirtual)
-        return true;
-
-      return false;
-    }
-
-    public static Type GetObjectType(object v)
-    {
-      return (v != null) ? v.GetType() : null;
-    }
-
-    public static string GetTypeName(Type t, FormatterAssemblyStyle assemblyFormat)
-    {
-      return GetTypeName(t, assemblyFormat, null);
-    }
-
-    public static string GetTypeName(Type t, FormatterAssemblyStyle assemblyFormat, SerializationBinder binder)
-    {
-      string fullyQualifiedTypeName;
-#if !(NET20 || NET35)
-      if (binder != null)
-      {
-        string assemblyName, typeName;
-        binder.BindToName(t, out assemblyName, out typeName);
-        fullyQualifiedTypeName = typeName + (assemblyName == null ? "" : ", " + assemblyName);
-      }
-      else
-      {
-        fullyQualifiedTypeName = t.AssemblyQualifiedName;
-      }
-#else
-      fullyQualifiedTypeName = t.AssemblyQualifiedName;
-#endif
-
-      switch (assemblyFormat)
-      {
-        case FormatterAssemblyStyle.Simple:
-          return RemoveAssemblyDetails(fullyQualifiedTypeName);
-        case FormatterAssemblyStyle.Full:
-          return t.AssemblyQualifiedName;
-        default:
-          throw new ArgumentOutOfRangeException();
-      }
-    }
-
-    private static string RemoveAssemblyDetails(string fullyQualifiedTypeName)
-    {
-      StringBuilder builder = new StringBuilder();
-
-      // loop through the type name and filter out qualified assembly details from nested type names
-      bool writingAssemblyName = false;
-      bool skippingAssemblyDetails = false;
-      for (int i = 0; i < fullyQualifiedTypeName.Length; i++)
-      {
-        char current = fullyQualifiedTypeName[i];
-        switch (current)
-        {
-          case '[':
-            writingAssemblyName = false;
-            skippingAssemblyDetails = false;
-            builder.Append(current);
-            break;
-          case ']':
-            writingAssemblyName = false;
-            skippingAssemblyDetails = false;
-            builder.Append(current);
-            break;
-          case ',':
-            if (!writingAssemblyName)
-            {
-              writingAssemblyName = true;
-              builder.Append(current);
-            }
-            else
-            {
-              skippingAssemblyDetails = true;
-            }
-            break;
-          default:
-            if (!skippingAssemblyDetails)
-              builder.Append(current);
-            break;
-        }
-      }
-
-      return builder.ToString();
-    }
-
-    public static bool IsInstantiatableType(Type t)
-    {
-      ValidationUtils.ArgumentNotNull(t, "t");
-
-      if (t.IsAbstract() || t.IsInterface() || t.IsArray || t.IsGenericTypeDefinition() || t == typeof(void))
-        return false;
-
-      if (!HasDefaultConstructor(t))
-        return false;
-
-      return true;
-    }
-
-    public static bool HasDefaultConstructor(Type t)
-    {
-      return HasDefaultConstructor(t, false);
-    }
-
-    public static bool HasDefaultConstructor(Type t, bool nonPublic)
-    {
-      ValidationUtils.ArgumentNotNull(t, "t");
-
-      if (t.IsValueType())
-        return true;
-
-      return (GetDefaultConstructor(t, nonPublic) != null);
-    }
-
-    public static ConstructorInfo GetDefaultConstructor(Type t)
-    {
-      return GetDefaultConstructor(t, false);
-    }
-
-    public static ConstructorInfo GetDefaultConstructor(Type t, bool nonPublic)
-    {
-      BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public;
-      if (nonPublic)
-        bindingFlags = bindingFlags | BindingFlags.NonPublic;
-
-      return t.GetConstructor(bindingFlags, null, ReflectionUtils.EmptyTypes, null);
-    }
-
-    public static bool IsNullable(Type t)
-    {
-      ValidationUtils.ArgumentNotNull(t, "t");
-
-      if (t.IsValueType())
-        return IsNullableType(t);
-
-      return true;
-    }
-
-    public static bool IsNullableType(Type t)
-    {
-      ValidationUtils.ArgumentNotNull(t, "t");
-
-      return (t.IsGenericType() && t.GetGenericTypeDefinition() == typeof(Nullable<>));
-    }
-
-    public static Type EnsureNotNullableType(Type t)
-    {
-      return (IsNullableType(t))
-        ? Nullable.GetUnderlyingType(t)
-        : t;
-    }
-
-    public static bool ImplementsGenericDefinition(Type type, Type genericInterfaceDefinition)
-    {
-      Type implementingType;
-      return ImplementsGenericDefinition(type, genericInterfaceDefinition, out implementingType);
-    }
-
-    public static bool ImplementsGenericDefinition(Type type, Type genericInterfaceDefinition, out Type implementingType)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-      ValidationUtils.ArgumentNotNull(genericInterfaceDefinition, "genericInterfaceDefinition");
-
-      if (!genericInterfaceDefinition.IsInterface() || !genericInterfaceDefinition.IsGenericTypeDefinition())
-        throw new ArgumentNullException("'{0}' is not a generic interface definition.".FormatWith(CultureInfo.InvariantCulture, genericInterfaceDefinition));
-
-      if (type.IsInterface())
-      {
-        if (type.IsGenericType())
-        {
-          Type interfaceDefinition = type.GetGenericTypeDefinition();
-
-          if (genericInterfaceDefinition == interfaceDefinition)
-          {
-            implementingType = type;
-            return true;
-          }
-        }
-      }
-
-      foreach (Type i in type.GetInterfaces())
-      {
-        if (i.IsGenericType())
-        {
-          Type interfaceDefinition = i.GetGenericTypeDefinition();
-
-          if (genericInterfaceDefinition == interfaceDefinition)
-          {
-            implementingType = i;
-            return true;
-          }
-        }
-      }
-
-      implementingType = null;
-      return false;
-    }
-
-    public static bool InheritsGenericDefinition(Type type, Type genericClassDefinition)
-    {
-      Type implementingType;
-      return InheritsGenericDefinition(type, genericClassDefinition, out implementingType);
-    }
-
-    public static bool InheritsGenericDefinition(Type type, Type genericClassDefinition, out Type implementingType)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-      ValidationUtils.ArgumentNotNull(genericClassDefinition, "genericClassDefinition");
-
-      if (!genericClassDefinition.IsClass() || !genericClassDefinition.IsGenericTypeDefinition())
-        throw new ArgumentNullException("'{0}' is not a generic class definition.".FormatWith(CultureInfo.InvariantCulture, genericClassDefinition));
-
-      return InheritsGenericDefinitionInternal(type, genericClassDefinition, out implementingType);
-    }
-
-    private static bool InheritsGenericDefinitionInternal(Type currentType, Type genericClassDefinition, out Type implementingType)
-    {
-      if (currentType.IsGenericType())
-      {
-        Type currentGenericClassDefinition = currentType.GetGenericTypeDefinition();
-
-        if (genericClassDefinition == currentGenericClassDefinition)
-        {
-          implementingType = currentType;
-          return true;
-        }
-      }
-
-      if (currentType.BaseType() == null)
-      {
-        implementingType = null;
-        return false;
-      }
-
-      return InheritsGenericDefinitionInternal(currentType.BaseType(), genericClassDefinition, out implementingType);
-    }
-
-    /// <summary>
-    /// Gets the type of the typed collection's items.
-    /// </summary>
-    /// <param name="type">The type.</param>
-    /// <returns>The type of the typed collection's items.</returns>
-    public static Type GetCollectionItemType(Type type)
-    {
-      ValidationUtils.ArgumentNotNull(type, "type");
-      Type genericListType;
-
-      if (type.IsArray)
-      {
-        return type.GetElementType();
-      }
-      else if (ImplementsGenericDefinition(type, typeof(IEnumerable<>), out genericListType))
-      {
-        if (genericListType.IsGenericTypeDefinition())
-          throw new Exception("Type {0} is not a collection.".FormatWith(CultureInfo.InvariantCulture, type));
-
-        return genericListType.GetGenericArguments()[0];
-      }
-      else if (typeof(IEnumerable).IsAssignableFrom(type))
-      {
-        return null;
-      }
-      else
-      {
-        throw new Exception("Type {0} is not a collection.".FormatWith(CultureInfo.InvariantCulture, type));
-      }
-    }
-
-    public static void GetDictionaryKeyValueTypes(Type dictionaryType, out Type keyType, out Type valueType)
-    {
-      ValidationUtils.ArgumentNotNull(dictionaryType, "type");
-
-      Type genericDictionaryType;
-      if (ImplementsGenericDefinition(dictionaryType, typeof(IDictionary<,>), out genericDictionaryType))
-      {
-        if (genericDictionaryType.IsGenericTypeDefinition())
-          throw new Exception("Type {0} is not a dictionary.".FormatWith(CultureInfo.InvariantCulture, dictionaryType));
-
-        Type[] dictionaryGenericArguments = genericDictionaryType.GetGenericArguments();
-
-        keyType = dictionaryGenericArguments[0];
-        valueType = dictionaryGenericArguments[1];
-        return;
-      }
-      else if (typeof(IDictionary).IsAssignableFrom(dictionaryType))
-      {
-        keyType = null;
-        valueType = null;
-        return;
-      }
-      else
-      {
-        throw new Exception("Type {0} is not a dictionary.".FormatWith(CultureInfo.InvariantCulture, dictionaryType));
-      }
-    }
-
-    public static Type GetDictionaryValueType(Type dictionaryType)
-    {
-      Type keyType;
-      Type valueType;
-      GetDictionaryKeyValueTypes(dictionaryType, out keyType, out valueType);
-
-      return valueType;
-    }
-
-    public static Type GetDictionaryKeyType(Type dictionaryType)
-    {
-      Type keyType;
-      Type valueType;
-      GetDictionaryKeyValueTypes(dictionaryType, out keyType, out valueType);
-
-      return keyType;
-    }
-
-    /// <summary>
-    /// Gets the member's underlying type.
-    /// </summary>
-    /// <param name="member">The member.</param>
-    /// <returns>The underlying type of the member.</returns>
-    public static Type GetMemberUnderlyingType(MemberInfo member)
-    {
-      ValidationUtils.ArgumentNotNull(member, "member");
-
-      switch (member.MemberType())
-      {
-        case MemberTypes.Field:
-          return ((FieldInfo)member).FieldType;
-        case MemberTypes.Property:
-          return ((PropertyInfo)member).PropertyType;
-        case MemberTypes.Event:
-          return ((EventInfo)member).EventHandlerType;
-        default:
-          throw new ArgumentException("MemberInfo must be of type FieldInfo, PropertyInfo or EventInfo", "member");
-      }
-    }
-
-    /// <summary>
-    /// Determines whether the member is an indexed property.
-    /// </summary>
-    /// <param name="member">The member.</param>
-    /// <returns>
-    /// 	<c>true</c> if the member is an indexed property; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool IsIndexedProperty(MemberInfo member)
-    {
-      ValidationUtils.ArgumentNotNull(member, "member");
-
-      PropertyInfo propertyInfo = member as PropertyInfo;
-
-      if (propertyInfo != null)
-        return IsIndexedProperty(propertyInfo);
-      else
-        return false;
-    }
-
-    /// <summary>
-    /// Determines whether the property is an indexed property.
-    /// </summary>
-    /// <param name="property">The property.</param>
-    /// <returns>
-    /// 	<c>true</c> if the property is an indexed property; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool IsIndexedProperty(PropertyInfo property)
-    {
-      ValidationUtils.ArgumentNotNull(property, "property");
-
-      return (property.GetIndexParameters().Length > 0);
-    }
-
-    /// <summary>
-    /// Gets the member's value on the object.
-    /// </summary>
-    /// <param name="member">The member.</param>
-    /// <param name="target">The target object.</param>
-    /// <returns>The member's value on the object.</returns>
-    public static object GetMemberValue(MemberInfo member, object target)
-    {
-      ValidationUtils.ArgumentNotNull(member, "member");
-      ValidationUtils.ArgumentNotNull(target, "target");
-
-      switch (member.MemberType())
-      {
-        case MemberTypes.Field:
-          return ((FieldInfo)member).GetValue(target);
-        case MemberTypes.Property:
-          try
-          {
-            return ((PropertyInfo)member).GetValue(target, null);
-          }
-          catch (TargetParameterCountException e)
-          {
-            throw new ArgumentException("MemberInfo '{0}' has index parameters".FormatWith(CultureInfo.InvariantCulture, member.Name), e);
-          }
-        default:
-          throw new ArgumentException("MemberInfo '{0}' is not of type FieldInfo or PropertyInfo".FormatWith(CultureInfo.InvariantCulture, CultureInfo.InvariantCulture, member.Name), "member");
-      }
-    }
-
-    /// <summary>
-    /// Sets the member's value on the target object.
-    /// </summary>
-    /// <param name="member">The member.</param>
-    /// <param name="target">The target.</param>
-    /// <param name="value">The value.</param>
-    public static void SetMemberValue(MemberInfo member, object target, object value)
-    {
-      ValidationUtils.ArgumentNotNull(member, "member");
-      ValidationUtils.ArgumentNotNull(target, "target");
-
-      switch (member.MemberType())
-      {
-        case MemberTypes.Field:
-          ((FieldInfo)member).SetValue(target, value);
-          break;
-        case MemberTypes.Property:
-          ((PropertyInfo)member).SetValue(target, value, null);
-          break;
-        default:
-          throw new ArgumentException("MemberInfo '{0}' must be of type FieldInfo or PropertyInfo".FormatWith(CultureInfo.InvariantCulture, member.Name), "member");
-      }
-    }
-
-    /// <summary>
-    /// Determines whether the specified MemberInfo can be read.
-    /// </summary>
-    /// <param name="member">The MemberInfo to determine whether can be read.</param>
-    /// /// <param name="nonPublic">if set to <c>true</c> then allow the member to be gotten non-publicly.</param>
-    /// <returns>
-    /// 	<c>true</c> if the specified MemberInfo can be read; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool CanReadMemberValue(MemberInfo member, bool nonPublic)
-    {
-      switch (member.MemberType())
-      {
-        case MemberTypes.Field:
-          FieldInfo fieldInfo = (FieldInfo)member;
-
-          if (nonPublic)
-            return true;
-          else if (fieldInfo.IsPublic)
-            return true;
-          return false;
-        case MemberTypes.Property:
-          PropertyInfo propertyInfo = (PropertyInfo) member;
-
-          if (!propertyInfo.CanRead)
-            return false;
-          if (nonPublic)
-            return true;
-          return (propertyInfo.GetGetMethod(nonPublic) != null);
-        default:
-          return false;
-      }
-    }
-
-    /// <summary>
-    /// Determines whether the specified MemberInfo can be set.
-    /// </summary>
-    /// <param name="member">The MemberInfo to determine whether can be set.</param>
-    /// <param name="nonPublic">if set to <c>true</c> then allow the member to be set non-publicly.</param>
-    /// <param name="canSetReadOnly">if set to <c>true</c> then allow the member to be set if read-only.</param>
-    /// <returns>
-    /// 	<c>true</c> if the specified MemberInfo can be set; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool CanSetMemberValue(MemberInfo member, bool nonPublic, bool canSetReadOnly)
-    {
-      switch (member.MemberType())
-      {
-        case MemberTypes.Field:
-          FieldInfo fieldInfo = (FieldInfo)member;
-
-          if (fieldInfo.IsInitOnly && !canSetReadOnly)
-            return false;
-          if (nonPublic)
-            return true;
-          else if (fieldInfo.IsPublic)
-            return true;
-          return false;
-        case MemberTypes.Property:
-          PropertyInfo propertyInfo = (PropertyInfo)member;
-
-          if (!propertyInfo.CanWrite)
-            return false;
-          if (nonPublic)
-            return true;
-          return (propertyInfo.GetSetMethod(nonPublic) != null);
-        default:
-          return false;
-      }
-    }
-
-    public static List<MemberInfo> GetFieldsAndProperties(Type type, BindingFlags bindingAttr)
-    {
-      List<MemberInfo> targetMembers = new List<MemberInfo>();
-
-      targetMembers.AddRange(GetFields(type, bindingAttr));
-      targetMembers.AddRange(GetProperties(type, bindingAttr));
-
-      // for some reason .NET returns multiple members when overriding a generic member on a base class
-      // http://forums.msdn.microsoft.com/en-US/netfxbcl/thread/b5abbfee-e292-4a64-8907-4e3f0fb90cd9/
-      // filter members to only return the override on the topmost class
-      // update: I think this is fixed in .NET 3.5 SP1 - leave this in for now...
-      List<MemberInfo> distinctMembers = new List<MemberInfo>(targetMembers.Count);
-
-      var groupedMembers = targetMembers.GroupBy(m => m.Name).Select(g => new { Count = g.Count(), Members = g.Cast<MemberInfo>() });
-      foreach (var groupedMember in groupedMembers)
-      {
-        if (groupedMember.Count == 1)
-        {
-          distinctMembers.Add(groupedMember.Members.First());
-        }
-        else
-        {
-          var members = groupedMember.Members.Where(m => !IsOverridenGenericMember(m, bindingAttr) || m.Name == "Item");
-
-          distinctMembers.AddRange(members);
-        }
-      }
-
-      return distinctMembers;
-    }
-
-    private static bool IsOverridenGenericMember(MemberInfo memberInfo, BindingFlags bindingAttr)
-    {
-      MemberTypes memberType = memberInfo.MemberType();
-      if (memberType != MemberTypes.Field && memberType != MemberTypes.Property)
-        throw new ArgumentException("Member must be a field or property.");
-
-      Type declaringType = memberInfo.DeclaringType;
-      if (!declaringType.IsGenericType())
-        return false;
-      Type genericTypeDefinition = declaringType.GetGenericTypeDefinition();
-      if (genericTypeDefinition == null)
-        return false;
-      MemberInfo[] members = genericTypeDefinition.GetMember(memberInfo.Name, bindingAttr);
-      if (members.Length == 0)
-        return false;
-      Type memberUnderlyingType = GetMemberUnderlyingType(members[0]);
-      if (!memberUnderlyingType.IsGenericParameter)
-        return false;
-
-      return true;
-    }
-
-    public static T GetAttribute<T>(ICustomAttributeProvider attributeProvider) where T : Attribute
-    {
-      return GetAttribute<T>(attributeProvider, true);
-    }
-
-    public static T GetAttribute<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
-    {
-      T[] attributes = GetAttributes<T>(attributeProvider, inherit);
-
-      return attributes.SingleOrDefault();
-    }
-
-#if !NETFX_CORE
-    public static T[] GetAttributes<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
-    {
-      ValidationUtils.ArgumentNotNull(attributeProvider, "attributeProvider");
-
-      // http://hyperthink.net/blog/getcustomattributes-gotcha/
-      // ICustomAttributeProvider doesn't do inheritance
-
-      if (attributeProvider is Type)
-        return (T[])((Type)attributeProvider).GetCustomAttributes(typeof(T), inherit);
-
-      if (attributeProvider is Assembly)
-        return (T[])Attribute.GetCustomAttributes((Assembly)attributeProvider, typeof(T), inherit);
-
-      if (attributeProvider is MemberInfo)
-        return (T[])Attribute.GetCustomAttributes((MemberInfo)attributeProvider, typeof(T), inherit);
-
-      if (attributeProvider is Module)
-        return (T[])Attribute.GetCustomAttributes((Module)attributeProvider, typeof(T), inherit);
-
-      if (attributeProvider is ParameterInfo)
-        return (T[])Attribute.GetCustomAttributes((ParameterInfo)attributeProvider, typeof(T), inherit);
-
-      return (T[])attributeProvider.GetCustomAttributes(typeof(T), inherit);
-    }
-#else
-    public static T[] GetAttributes<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
-    {
-      object provider = attributeProvider.UnderlyingObject;
-
-      if (provider is Type)
-        return ((Type)provider).GetTypeInfo().GetCustomAttributes<T>(inherit).ToArray();
-
-      if (provider is Assembly)
-        return ((Assembly)provider).GetCustomAttributes<T>().ToArray();
-
-      if (provider is MemberInfo)
-        return ((MemberInfo)provider).GetCustomAttributes<T>(inherit).ToArray();
-
-      if (provider is Module)
-        return ((Module)provider).GetCustomAttributes<T>().ToArray();
-
-      if (provider is ParameterInfo)
-        return ((ParameterInfo)provider).GetCustomAttributes<T>(inherit).ToArray();
-
-      throw new Exception("Cannot get attributes from '{0}'.".FormatWith(CultureInfo.InvariantCulture, provider));
-    }
-#endif
-
-    public static Type MakeGenericType(Type genericTypeDefinition, params Type[] innerTypes)
-    {
-      ValidationUtils.ArgumentNotNull(genericTypeDefinition, "genericTypeDefinition");
-      ValidationUtils.ArgumentNotNullOrEmpty<Type>(innerTypes, "innerTypes");
-      ValidationUtils.ArgumentConditionTrue(genericTypeDefinition.IsGenericTypeDefinition(), "genericTypeDefinition", "Type {0} is not a generic type definition.".FormatWith(CultureInfo.InvariantCulture, genericTypeDefinition));
-
-      return genericTypeDefinition.MakeGenericType(innerTypes);
-    }
-
-    public static object CreateGeneric(Type genericTypeDefinition, Type innerType, params object[] args)
-    {
-      return CreateGeneric(genericTypeDefinition, new [] { innerType }, args);
-    }
-
-    public static object CreateGeneric(Type genericTypeDefinition, IList<Type> innerTypes, params object[] args)
-    {
-      return CreateGeneric(genericTypeDefinition, innerTypes, (t, a) => CreateInstance(t, a.ToArray()), args);
-    }
-
-    public static object CreateGeneric(Type genericTypeDefinition, IList<Type> innerTypes, Func<Type, IList<object>, object> instanceCreator, params object[] args)
-    {
-      ValidationUtils.ArgumentNotNull(genericTypeDefinition, "genericTypeDefinition");
-      ValidationUtils.ArgumentNotNullOrEmpty(innerTypes, "innerTypes");
-      ValidationUtils.ArgumentNotNull(instanceCreator, "createInstance");
-
-      Type specificType = MakeGenericType(genericTypeDefinition, innerTypes.ToArray());
-
-      return instanceCreator(specificType, args);
-    }
-
-     public static object CreateInstance(Type type, params object[] args)
-     {
-       ValidationUtils.ArgumentNotNull(type, "type");
-
-#if !PocketPC
-       return Activator.CreateInstance(type, args);
-#else
-       // CF doesn't have a Activator.CreateInstance overload that takes args
-       // lame
-
-       if (type.IsValueType && CollectionUtils.IsNullOrEmpty<object>(args))
-         return Activator.CreateInstance(type);
-
-       ConstructorInfo[] constructors = type.GetConstructors();
-       ConstructorInfo match = constructors.Where(c =>
-         {
-           ParameterInfo[] parameters = c.GetParameters();
-           if (parameters.Length != args.Length)
-             return false;
-
-           for (int i = 0; i < parameters.Length; i++)
-           {
-             ParameterInfo parameter = parameters[i];
-             object value = args[i];
-
-             if (!IsCompatibleValue(value, parameter.ParameterType))
-               return false;
-           }
-
-           return true;
-         }).FirstOrDefault();
-
-       if (match == null)
-         throw new Exception("Could not create '{0}' with given parameters.".FormatWith(CultureInfo.InvariantCulture, type));
-
-       return match.Invoke(args);
-#endif
-     }
-
-    public static void SplitFullyQualifiedTypeName(string fullyQualifiedTypeName, out string typeName, out string assemblyName)
-    {
-      int? assemblyDelimiterIndex = GetAssemblyDelimiterIndex(fullyQualifiedTypeName);
-
-      if (assemblyDelimiterIndex != null)
-      {
-        typeName = fullyQualifiedTypeName.Substring(0, assemblyDelimiterIndex.Value).Trim();
-        assemblyName = fullyQualifiedTypeName.Substring(assemblyDelimiterIndex.Value + 1, fullyQualifiedTypeName.Length - assemblyDelimiterIndex.Value - 1).Trim();
-      }
-      else
-      {
-        typeName = fullyQualifiedTypeName;
-        assemblyName = null;
-      }
-
-    }
-
-    private static int? GetAssemblyDelimiterIndex(string fullyQualifiedTypeName)
-    {
-      // we need to get the first comma following all surrounded in brackets because of generic types
-      // e.g. System.Collections.Generic.Dictionary`2[[System.String, mscorlib,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-      int scope = 0;
-      for (int i = 0; i < fullyQualifiedTypeName.Length; i++)
-      {
-        char current = fullyQualifiedTypeName[i];
-        switch (current)
-        {
-          case '[':
-            scope++;
-            break;
-          case ']':
-            scope--;
-            break;
-          case ',':
-            if (scope == 0)
-              return i;
-            break;
-        }
-      }
-
-      return null;
-    }
-
-    public static MemberInfo GetMemberInfoFromType(Type targetType, MemberInfo memberInfo)
-    {
-      const BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
-
-      switch (memberInfo.MemberType())
-      {
-        case MemberTypes.Property:
-          PropertyInfo propertyInfo = (PropertyInfo) memberInfo;
-
-          Type[] types = propertyInfo.GetIndexParameters().Select(p => p.ParameterType).ToArray();
-
-          return targetType.GetProperty(propertyInfo.Name, bindingAttr, null, propertyInfo.PropertyType, types, null);
-        default:
-          return targetType.GetMember(memberInfo.Name, memberInfo.MemberType(), bindingAttr).SingleOrDefault();
-      }
-    }
-
-    public static IEnumerable<FieldInfo> GetFields(Type targetType, BindingFlags bindingAttr)
-    {
-      ValidationUtils.ArgumentNotNull(targetType, "targetType");
-
-      List<MemberInfo> fieldInfos = new List<MemberInfo>(targetType.GetFields(bindingAttr));
-#if !NETFX_CORE
-      // Type.GetFields doesn't return inherited private fields
-      // manually find private fields from base class
-      GetChildPrivateFields(fieldInfos, targetType, bindingAttr);
-#endif
-
-      return fieldInfos.Cast<FieldInfo>();
-    }
-
-    private static void GetChildPrivateFields(IList<MemberInfo> initialFields, Type targetType, BindingFlags bindingAttr)
-    {
-      // fix weirdness with private FieldInfos only being returned for the current Type
-      // find base type fields and add them to result
-      if ((bindingAttr & BindingFlags.NonPublic) != 0)
-      {
-        // modify flags to not search for public fields
-        BindingFlags nonPublicBindingAttr = bindingAttr.RemoveFlag(BindingFlags.Public);
-
-        while ((targetType = targetType.BaseType()) != null)
-        {
-          // filter out protected fields
-          IEnumerable<MemberInfo> childPrivateFields =
-            targetType.GetFields(nonPublicBindingAttr).Where(f => f.IsPrivate).Cast<MemberInfo>();
-
-          initialFields.AddRange(childPrivateFields);
-        }
-      }
-    }
-
-    public static IEnumerable<PropertyInfo> GetProperties(Type targetType, BindingFlags bindingAttr)
-    {
-      ValidationUtils.ArgumentNotNull(targetType, "targetType");
-
-      List<PropertyInfo> propertyInfos = new List<PropertyInfo>(targetType.GetProperties(bindingAttr));
-      GetChildPrivateProperties(propertyInfos, targetType, bindingAttr);
-
-      // a base class private getter/setter will be inaccessable unless the property was gotten from the base class
-      for (int i = 0; i < propertyInfos.Count; i++)
-      {
-        PropertyInfo member = propertyInfos[i];
-        if (member.DeclaringType != targetType)
-        {
-          PropertyInfo declaredMember = (PropertyInfo)GetMemberInfoFromType(member.DeclaringType, member);
-          propertyInfos[i] = declaredMember;
-        }
-      }
-
-      return propertyInfos;
-    }
-
-    public static BindingFlags RemoveFlag(this BindingFlags bindingAttr, BindingFlags flag)
-    {
-      return ((bindingAttr & flag) == flag)
-        ? bindingAttr ^ flag
-        : bindingAttr;
-    }
-
-    private static void GetChildPrivateProperties(IList<PropertyInfo> initialProperties, Type targetType, BindingFlags bindingAttr)
-    {
-      // fix weirdness with private PropertyInfos only being returned for the current Type
-      // find base type properties and add them to result
-      if ((bindingAttr & BindingFlags.NonPublic) != 0)
-      {
-        // modify flags to not search for public fields
-        BindingFlags nonPublicBindingAttr = bindingAttr.RemoveFlag(BindingFlags.Public);
-
-        while ((targetType = targetType.BaseType()) != null)
-        {
-          foreach (PropertyInfo propertyInfo in targetType.GetProperties(nonPublicBindingAttr))
-          {
-            PropertyInfo nonPublicProperty = propertyInfo;
-
-            // have to test on name rather than reference because instances are different
-            // depending on the type that GetProperties was called on
-            int index = initialProperties.IndexOf(p => p.Name == nonPublicProperty.Name);
-            if (index == -1)
-            {
-              initialProperties.Add(nonPublicProperty);
-            }
-            else
-            {
-              // replace nonpublic properties for a child, but gotten from
-              // the parent with the one from the child
-              // the property gotten from the child will have access to private getter/setter
-              initialProperties[index] = nonPublicProperty;
-            }
-          }
-        }
-      }
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Collections;
+using System.Globalization;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters;
+using System.Text;
+#if NETFX_CORE
+using IConvertible = Newtonsoft.Json.Utilities.Convertible;
+using ICustomAttributeProvider = Newtonsoft.Json.Utilities.CustomAttributeProvider;
+#endif
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Utilities
+{
+#if NETFX_CORE
+  internal enum TypeCode
+  {
+    Empty,
+    Object,
+    String,
+    Char,
+    Boolean,
+    SByte,
+    Int16,
+    UInt16,
+    Int32,
+    Byte,
+    UInt32,
+    Int64,
+    UInt64,
+    Single,
+    Double,
+    DateTime,
+    Decimal
+  }
+
+  internal enum MemberTypes
+  {
+    Property,
+    Field,
+    Event,
+    Method,
+    Other
+  }
+  
+  [Flags]
+  internal enum BindingFlags
+  {
+    Default = 0,
+    IgnoreCase = 1,
+    DeclaredOnly = 2,
+    Instance = 4,
+    Static = 8,
+    Public = 16,
+    NonPublic = 32,
+    FlattenHierarchy = 64,
+    InvokeMethod = 256,
+    CreateInstance = 512,
+    GetField = 1024,
+    SetField = 2048,
+    GetProperty = 4096,
+    SetProperty = 8192,
+    PutDispProperty = 16384,
+    ExactBinding = 65536,
+    PutRefDispProperty = 32768,
+    SuppressChangeType = 131072,
+    OptionalParamBinding = 262144,
+    IgnoreReturn = 16777216
+  }
+
+  internal class CustomAttributeProvider
+  {
+    private readonly object _underlyingObject;
+
+    public CustomAttributeProvider(object o)
+    {
+      _underlyingObject = o;
+    }
+
+    public object UnderlyingObject
+    {
+      get { return _underlyingObject; }
+    }
+  }
+#endif
+
+  internal static class ReflectionUtils
+  {
+    public static readonly Type[] EmptyTypes;
+
+    static ReflectionUtils()
+    {
+#if !NETFX_CORE
+      EmptyTypes = Type.EmptyTypes;
+#else
+      EmptyTypes = new Type[0];
+#endif
+    }
+
+    public static ICustomAttributeProvider GetCustomAttributeProvider(this object o)
+    {
+#if !NETFX_CORE
+      return (ICustomAttributeProvider)o;
+#else
+      return new ICustomAttributeProvider(o);
+#endif
+    }
+
+    public static bool IsVirtual(this PropertyInfo propertyInfo)
+    {
+      ValidationUtils.ArgumentNotNull(propertyInfo, "propertyInfo");
+
+      MethodInfo m = propertyInfo.GetGetMethod();
+      if (m != null && m.IsVirtual)
+        return true;
+
+      m = propertyInfo.GetSetMethod();
+      if (m != null && m.IsVirtual)
+        return true;
+
+      return false;
+    }
+
+    public static Type GetObjectType(object v)
+    {
+      return (v != null) ? v.GetType() : null;
+    }
+
+    public static string GetTypeName(Type t, FormatterAssemblyStyle assemblyFormat)
+    {
+      return GetTypeName(t, assemblyFormat, null);
+    }
+
+    public static string GetTypeName(Type t, FormatterAssemblyStyle assemblyFormat, SerializationBinder binder)
+    {
+      string fullyQualifiedTypeName;
+#if !(NET20 || NET35)
+      if (binder != null)
+      {
+        string assemblyName, typeName;
+        binder.BindToName(t, out assemblyName, out typeName);
+        fullyQualifiedTypeName = typeName + (assemblyName == null ? "" : ", " + assemblyName);
+      }
+      else
+      {
+        fullyQualifiedTypeName = t.AssemblyQualifiedName;
+      }
+#else
+      fullyQualifiedTypeName = t.AssemblyQualifiedName;
+#endif
+
+      switch (assemblyFormat)
+      {
+        case FormatterAssemblyStyle.Simple:
+          return RemoveAssemblyDetails(fullyQualifiedTypeName);
+        case FormatterAssemblyStyle.Full:
+          return t.AssemblyQualifiedName;
+        default:
+          throw new ArgumentOutOfRangeException();
+      }
+    }
+
+    private static string RemoveAssemblyDetails(string fullyQualifiedTypeName)
+    {
+      StringBuilder builder = new StringBuilder();
+
+      // loop through the type name and filter out qualified assembly details from nested type names
+      bool writingAssemblyName = false;
+      bool skippingAssemblyDetails = false;
+      for (int i = 0; i < fullyQualifiedTypeName.Length; i++)
+      {
+        char current = fullyQualifiedTypeName[i];
+        switch (current)
+        {
+          case '[':
+            writingAssemblyName = false;
+            skippingAssemblyDetails = false;
+            builder.Append(current);
+            break;
+          case ']':
+            writingAssemblyName = false;
+            skippingAssemblyDetails = false;
+            builder.Append(current);
+            break;
+          case ',':
+            if (!writingAssemblyName)
+            {
+              writingAssemblyName = true;
+              builder.Append(current);
+            }
+            else
+            {
+              skippingAssemblyDetails = true;
+            }
+            break;
+          default:
+            if (!skippingAssemblyDetails)
+              builder.Append(current);
+            break;
+        }
+      }
+
+      return builder.ToString();
+    }
+
+    public static bool IsInstantiatableType(Type t)
+    {
+      ValidationUtils.ArgumentNotNull(t, "t");
+
+      if (t.IsAbstract() || t.IsInterface() || t.IsArray || t.IsGenericTypeDefinition() || t == typeof(void))
+        return false;
+
+      if (!HasDefaultConstructor(t))
+        return false;
+
+      return true;
+    }
+
+    public static bool HasDefaultConstructor(Type t)
+    {
+      return HasDefaultConstructor(t, false);
+    }
+
+    public static bool HasDefaultConstructor(Type t, bool nonPublic)
+    {
+      ValidationUtils.ArgumentNotNull(t, "t");
+
+      if (t.IsValueType())
+        return true;
+
+      return (GetDefaultConstructor(t, nonPublic) != null);
+    }
+
+    public static ConstructorInfo GetDefaultConstructor(Type t)
+    {
+      return GetDefaultConstructor(t, false);
+    }
+
+    public static ConstructorInfo GetDefaultConstructor(Type t, bool nonPublic)
+    {
+      BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public;
+      if (nonPublic)
+        bindingFlags = bindingFlags | BindingFlags.NonPublic;
+
+      return t.GetConstructor(bindingFlags, null, ReflectionUtils.EmptyTypes, null);
+    }
+
+    public static bool IsNullable(Type t)
+    {
+      ValidationUtils.ArgumentNotNull(t, "t");
+
+      if (t.IsValueType())
+        return IsNullableType(t);
+
+      return true;
+    }
+
+    public static bool IsNullableType(Type t)
+    {
+      ValidationUtils.ArgumentNotNull(t, "t");
+
+      return (t.IsGenericType() && t.GetGenericTypeDefinition() == typeof(Nullable<>));
+    }
+
+    public static Type EnsureNotNullableType(Type t)
+    {
+      return (IsNullableType(t))
+        ? Nullable.GetUnderlyingType(t)
+        : t;
+    }
+
+    public static bool ImplementsGenericDefinition(Type type, Type genericInterfaceDefinition)
+    {
+      Type implementingType;
+      return ImplementsGenericDefinition(type, genericInterfaceDefinition, out implementingType);
+    }
+
+    public static bool ImplementsGenericDefinition(Type type, Type genericInterfaceDefinition, out Type implementingType)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+      ValidationUtils.ArgumentNotNull(genericInterfaceDefinition, "genericInterfaceDefinition");
+
+      if (!genericInterfaceDefinition.IsInterface() || !genericInterfaceDefinition.IsGenericTypeDefinition())
+        throw new ArgumentNullException("'{0}' is not a generic interface definition.".FormatWith(CultureInfo.InvariantCulture, genericInterfaceDefinition));
+
+      if (type.IsInterface())
+      {
+        if (type.IsGenericType())
+        {
+          Type interfaceDefinition = type.GetGenericTypeDefinition();
+
+          if (genericInterfaceDefinition == interfaceDefinition)
+          {
+            implementingType = type;
+            return true;
+          }
+        }
+      }
+
+      foreach (Type i in type.GetInterfaces())
+      {
+        if (i.IsGenericType())
+        {
+          Type interfaceDefinition = i.GetGenericTypeDefinition();
+
+          if (genericInterfaceDefinition == interfaceDefinition)
+          {
+            implementingType = i;
+            return true;
+          }
+        }
+      }
+
+      implementingType = null;
+      return false;
+    }
+
+    public static bool InheritsGenericDefinition(Type type, Type genericClassDefinition)
+    {
+      Type implementingType;
+      return InheritsGenericDefinition(type, genericClassDefinition, out implementingType);
+    }
+
+    public static bool InheritsGenericDefinition(Type type, Type genericClassDefinition, out Type implementingType)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+      ValidationUtils.ArgumentNotNull(genericClassDefinition, "genericClassDefinition");
+
+      if (!genericClassDefinition.IsClass() || !genericClassDefinition.IsGenericTypeDefinition())
+        throw new ArgumentNullException("'{0}' is not a generic class definition.".FormatWith(CultureInfo.InvariantCulture, genericClassDefinition));
+
+      return InheritsGenericDefinitionInternal(type, genericClassDefinition, out implementingType);
+    }
+
+    private static bool InheritsGenericDefinitionInternal(Type currentType, Type genericClassDefinition, out Type implementingType)
+    {
+      if (currentType.IsGenericType())
+      {
+        Type currentGenericClassDefinition = currentType.GetGenericTypeDefinition();
+
+        if (genericClassDefinition == currentGenericClassDefinition)
+        {
+          implementingType = currentType;
+          return true;
+        }
+      }
+
+      if (currentType.BaseType() == null)
+      {
+        implementingType = null;
+        return false;
+      }
+
+      return InheritsGenericDefinitionInternal(currentType.BaseType(), genericClassDefinition, out implementingType);
+    }
+
+    /// <summary>
+    /// Gets the type of the typed collection's items.
+    /// </summary>
+    /// <param name="type">The type.</param>
+    /// <returns>The type of the typed collection's items.</returns>
+    public static Type GetCollectionItemType(Type type)
+    {
+      ValidationUtils.ArgumentNotNull(type, "type");
+      Type genericListType;
+
+      if (type.IsArray)
+      {
+        return type.GetElementType();
+      }
+      else if (ImplementsGenericDefinition(type, typeof(IEnumerable<>), out genericListType))
+      {
+        if (genericListType.IsGenericTypeDefinition())
+          throw new Exception("Type {0} is not a collection.".FormatWith(CultureInfo.InvariantCulture, type));
+
+        return genericListType.GetGenericArguments()[0];
+      }
+      else if (typeof(IEnumerable).IsAssignableFrom(type))
+      {
+        return null;
+      }
+      else
+      {
+        throw new Exception("Type {0} is not a collection.".FormatWith(CultureInfo.InvariantCulture, type));
+      }
+    }
+
+    public static void GetDictionaryKeyValueTypes(Type dictionaryType, out Type keyType, out Type valueType)
+    {
+      ValidationUtils.ArgumentNotNull(dictionaryType, "type");
+
+      Type genericDictionaryType;
+      if (ImplementsGenericDefinition(dictionaryType, typeof(IDictionary<,>), out genericDictionaryType))
+      {
+        if (genericDictionaryType.IsGenericTypeDefinition())
+          throw new Exception("Type {0} is not a dictionary.".FormatWith(CultureInfo.InvariantCulture, dictionaryType));
+
+        Type[] dictionaryGenericArguments = genericDictionaryType.GetGenericArguments();
+
+        keyType = dictionaryGenericArguments[0];
+        valueType = dictionaryGenericArguments[1];
+        return;
+      }
+      else if (typeof(IDictionary).IsAssignableFrom(dictionaryType))
+      {
+        keyType = null;
+        valueType = null;
+        return;
+      }
+      else
+      {
+        throw new Exception("Type {0} is not a dictionary.".FormatWith(CultureInfo.InvariantCulture, dictionaryType));
+      }
+    }
+
+    public static Type GetDictionaryValueType(Type dictionaryType)
+    {
+      Type keyType;
+      Type valueType;
+      GetDictionaryKeyValueTypes(dictionaryType, out keyType, out valueType);
+
+      return valueType;
+    }
+
+    public static Type GetDictionaryKeyType(Type dictionaryType)
+    {
+      Type keyType;
+      Type valueType;
+      GetDictionaryKeyValueTypes(dictionaryType, out keyType, out valueType);
+
+      return keyType;
+    }
+
+    /// <summary>
+    /// Gets the member's underlying type.
+    /// </summary>
+    /// <param name="member">The member.</param>
+    /// <returns>The underlying type of the member.</returns>
+    public static Type GetMemberUnderlyingType(MemberInfo member)
+    {
+      ValidationUtils.ArgumentNotNull(member, "member");
+
+      switch (member.MemberType())
+      {
+        case MemberTypes.Field:
+          return ((FieldInfo)member).FieldType;
+        case MemberTypes.Property:
+          return ((PropertyInfo)member).PropertyType;
+        case MemberTypes.Event:
+          return ((EventInfo)member).EventHandlerType;
+        default:
+          throw new ArgumentException("MemberInfo must be of type FieldInfo, PropertyInfo or EventInfo", "member");
+      }
+    }
+
+    /// <summary>
+    /// Determines whether the member is an indexed property.
+    /// </summary>
+    /// <param name="member">The member.</param>
+    /// <returns>
+    /// 	<c>true</c> if the member is an indexed property; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool IsIndexedProperty(MemberInfo member)
+    {
+      ValidationUtils.ArgumentNotNull(member, "member");
+
+      PropertyInfo propertyInfo = member as PropertyInfo;
+
+      if (propertyInfo != null)
+        return IsIndexedProperty(propertyInfo);
+      else
+        return false;
+    }
+
+    /// <summary>
+    /// Determines whether the property is an indexed property.
+    /// </summary>
+    /// <param name="property">The property.</param>
+    /// <returns>
+    /// 	<c>true</c> if the property is an indexed property; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool IsIndexedProperty(PropertyInfo property)
+    {
+      ValidationUtils.ArgumentNotNull(property, "property");
+
+      return (property.GetIndexParameters().Length > 0);
+    }
+
+    /// <summary>
+    /// Gets the member's value on the object.
+    /// </summary>
+    /// <param name="member">The member.</param>
+    /// <param name="target">The target object.</param>
+    /// <returns>The member's value on the object.</returns>
+    public static object GetMemberValue(MemberInfo member, object target)
+    {
+      ValidationUtils.ArgumentNotNull(member, "member");
+      ValidationUtils.ArgumentNotNull(target, "target");
+
+      switch (member.MemberType())
+      {
+        case MemberTypes.Field:
+          return ((FieldInfo)member).GetValue(target);
+        case MemberTypes.Property:
+          try
+          {
+            return ((PropertyInfo)member).GetValue(target, null);
+          }
+          catch (TargetParameterCountException e)
+          {
+            throw new ArgumentException("MemberInfo '{0}' has index parameters".FormatWith(CultureInfo.InvariantCulture, member.Name), e);
+          }
+        default:
+          throw new ArgumentException("MemberInfo '{0}' is not of type FieldInfo or PropertyInfo".FormatWith(CultureInfo.InvariantCulture, CultureInfo.InvariantCulture, member.Name), "member");
+      }
+    }
+
+    /// <summary>
+    /// Sets the member's value on the target object.
+    /// </summary>
+    /// <param name="member">The member.</param>
+    /// <param name="target">The target.</param>
+    /// <param name="value">The value.</param>
+    public static void SetMemberValue(MemberInfo member, object target, object value)
+    {
+      ValidationUtils.ArgumentNotNull(member, "member");
+      ValidationUtils.ArgumentNotNull(target, "target");
+
+      switch (member.MemberType())
+      {
+        case MemberTypes.Field:
+          ((FieldInfo)member).SetValue(target, value);
+          break;
+        case MemberTypes.Property:
+          ((PropertyInfo)member).SetValue(target, value, null);
+          break;
+        default:
+          throw new ArgumentException("MemberInfo '{0}' must be of type FieldInfo or PropertyInfo".FormatWith(CultureInfo.InvariantCulture, member.Name), "member");
+      }
+    }
+
+    /// <summary>
+    /// Determines whether the specified MemberInfo can be read.
+    /// </summary>
+    /// <param name="member">The MemberInfo to determine whether can be read.</param>
+    /// /// <param name="nonPublic">if set to <c>true</c> then allow the member to be gotten non-publicly.</param>
+    /// <returns>
+    /// 	<c>true</c> if the specified MemberInfo can be read; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool CanReadMemberValue(MemberInfo member, bool nonPublic)
+    {
+      switch (member.MemberType())
+      {
+        case MemberTypes.Field:
+          FieldInfo fieldInfo = (FieldInfo)member;
+
+          if (nonPublic)
+            return true;
+          else if (fieldInfo.IsPublic)
+            return true;
+          return false;
+        case MemberTypes.Property:
+          PropertyInfo propertyInfo = (PropertyInfo) member;
+
+          if (!propertyInfo.CanRead)
+            return false;
+          if (nonPublic)
+            return true;
+          return (propertyInfo.GetGetMethod(nonPublic) != null);
+        default:
+          return false;
+      }
+    }
+
+    /// <summary>
+    /// Determines whether the specified MemberInfo can be set.
+    /// </summary>
+    /// <param name="member">The MemberInfo to determine whether can be set.</param>
+    /// <param name="nonPublic">if set to <c>true</c> then allow the member to be set non-publicly.</param>
+    /// <param name="canSetReadOnly">if set to <c>true</c> then allow the member to be set if read-only.</param>
+    /// <returns>
+    /// 	<c>true</c> if the specified MemberInfo can be set; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool CanSetMemberValue(MemberInfo member, bool nonPublic, bool canSetReadOnly)
+    {
+      switch (member.MemberType())
+      {
+        case MemberTypes.Field:
+          FieldInfo fieldInfo = (FieldInfo)member;
+
+          if (fieldInfo.IsInitOnly && !canSetReadOnly)
+            return false;
+          if (nonPublic)
+            return true;
+          else if (fieldInfo.IsPublic)
+            return true;
+          return false;
+        case MemberTypes.Property:
+          PropertyInfo propertyInfo = (PropertyInfo)member;
+
+          if (!propertyInfo.CanWrite)
+            return false;
+          if (nonPublic)
+            return true;
+          return (propertyInfo.GetSetMethod(nonPublic) != null);
+        default:
+          return false;
+      }
+    }
+
+    public static List<MemberInfo> GetFieldsAndProperties(Type type, BindingFlags bindingAttr)
+    {
+      List<MemberInfo> targetMembers = new List<MemberInfo>();
+
+      targetMembers.AddRange(GetFields(type, bindingAttr));
+      targetMembers.AddRange(GetProperties(type, bindingAttr));
+
+      // for some reason .NET returns multiple members when overriding a generic member on a base class
+      // http://forums.msdn.microsoft.com/en-US/netfxbcl/thread/b5abbfee-e292-4a64-8907-4e3f0fb90cd9/
+      // filter members to only return the override on the topmost class
+      // update: I think this is fixed in .NET 3.5 SP1 - leave this in for now...
+      List<MemberInfo> distinctMembers = new List<MemberInfo>(targetMembers.Count);
+
+      var groupedMembers = targetMembers.GroupBy(m => m.Name).Select(g => new { Count = g.Count(), Members = g.Cast<MemberInfo>() });
+      foreach (var groupedMember in groupedMembers)
+      {
+        if (groupedMember.Count == 1)
+        {
+          distinctMembers.Add(groupedMember.Members.First());
+        }
+        else
+        {
+          var members = groupedMember.Members.Where(m => !IsOverridenGenericMember(m, bindingAttr) || m.Name == "Item");
+
+          distinctMembers.AddRange(members);
+        }
+      }
+
+      return distinctMembers;
+    }
+
+    private static bool IsOverridenGenericMember(MemberInfo memberInfo, BindingFlags bindingAttr)
+    {
+      MemberTypes memberType = memberInfo.MemberType();
+      if (memberType != MemberTypes.Field && memberType != MemberTypes.Property)
+        throw new ArgumentException("Member must be a field or property.");
+
+      Type declaringType = memberInfo.DeclaringType;
+      if (!declaringType.IsGenericType())
+        return false;
+      Type genericTypeDefinition = declaringType.GetGenericTypeDefinition();
+      if (genericTypeDefinition == null)
+        return false;
+      MemberInfo[] members = genericTypeDefinition.GetMember(memberInfo.Name, bindingAttr);
+      if (members.Length == 0)
+        return false;
+      Type memberUnderlyingType = GetMemberUnderlyingType(members[0]);
+      if (!memberUnderlyingType.IsGenericParameter)
+        return false;
+
+      return true;
+    }
+
+    public static T GetAttribute<T>(ICustomAttributeProvider attributeProvider) where T : Attribute
+    {
+      return GetAttribute<T>(attributeProvider, true);
+    }
+
+    public static T GetAttribute<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
+    {
+      T[] attributes = GetAttributes<T>(attributeProvider, inherit);
+
+      return attributes.SingleOrDefault();
+    }
+
+#if !NETFX_CORE
+    public static T[] GetAttributes<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
+    {
+      ValidationUtils.ArgumentNotNull(attributeProvider, "attributeProvider");
+
+      // http://hyperthink.net/blog/getcustomattributes-gotcha/
+      // ICustomAttributeProvider doesn't do inheritance
+
+      if (attributeProvider is Type)
+        return (T[])((Type)attributeProvider).GetCustomAttributes(typeof(T), inherit);
+
+      if (attributeProvider is Assembly)
+        return (T[])Attribute.GetCustomAttributes((Assembly)attributeProvider, typeof(T), inherit);
+
+      if (attributeProvider is MemberInfo)
+        return (T[])Attribute.GetCustomAttributes((MemberInfo)attributeProvider, typeof(T), inherit);
+
+      if (attributeProvider is Module)
+        return (T[])Attribute.GetCustomAttributes((Module)attributeProvider, typeof(T), inherit);
+
+      if (attributeProvider is ParameterInfo)
+        return (T[])Attribute.GetCustomAttributes((ParameterInfo)attributeProvider, typeof(T), inherit);
+
+      return (T[])attributeProvider.GetCustomAttributes(typeof(T), inherit);
+    }
+#else
+    public static T[] GetAttributes<T>(ICustomAttributeProvider attributeProvider, bool inherit) where T : Attribute
+    {
+      object provider = attributeProvider.UnderlyingObject;
+
+      if (provider is Type)
+        return ((Type)provider).GetTypeInfo().GetCustomAttributes<T>(inherit).ToArray();
+
+      if (provider is Assembly)
+        return ((Assembly)provider).GetCustomAttributes<T>().ToArray();
+
+      if (provider is MemberInfo)
+        return ((MemberInfo)provider).GetCustomAttributes<T>(inherit).ToArray();
+
+      if (provider is Module)
+        return ((Module)provider).GetCustomAttributes<T>().ToArray();
+
+      if (provider is ParameterInfo)
+        return ((ParameterInfo)provider).GetCustomAttributes<T>(inherit).ToArray();
+
+      throw new Exception("Cannot get attributes from '{0}'.".FormatWith(CultureInfo.InvariantCulture, provider));
+    }
+#endif
+
+    public static Type MakeGenericType(Type genericTypeDefinition, params Type[] innerTypes)
+    {
+      ValidationUtils.ArgumentNotNull(genericTypeDefinition, "genericTypeDefinition");
+      ValidationUtils.ArgumentNotNullOrEmpty<Type>(innerTypes, "innerTypes");
+      ValidationUtils.ArgumentConditionTrue(genericTypeDefinition.IsGenericTypeDefinition(), "genericTypeDefinition", "Type {0} is not a generic type definition.".FormatWith(CultureInfo.InvariantCulture, genericTypeDefinition));
+
+      return genericTypeDefinition.MakeGenericType(innerTypes);
+    }
+
+    public static object CreateGeneric(Type genericTypeDefinition, Type innerType, params object[] args)
+    {
+      return CreateGeneric(genericTypeDefinition, new [] { innerType }, args);
+    }
+
+    public static object CreateGeneric(Type genericTypeDefinition, IList<Type> innerTypes, params object[] args)
+    {
+      return CreateGeneric(genericTypeDefinition, innerTypes, (t, a) => CreateInstance(t, a.ToArray()), args);
+    }
+
+    public static object CreateGeneric(Type genericTypeDefinition, IList<Type> innerTypes, Func<Type, IList<object>, object> instanceCreator, params object[] args)
+    {
+      ValidationUtils.ArgumentNotNull(genericTypeDefinition, "genericTypeDefinition");
+      ValidationUtils.ArgumentNotNullOrEmpty(innerTypes, "innerTypes");
+      ValidationUtils.ArgumentNotNull(instanceCreator, "createInstance");
+
+      Type specificType = MakeGenericType(genericTypeDefinition, innerTypes.ToArray());
+
+      return instanceCreator(specificType, args);
+    }
+
+     public static object CreateInstance(Type type, params object[] args)
+     {
+       ValidationUtils.ArgumentNotNull(type, "type");
+
+#if !PocketPC
+       return Activator.CreateInstance(type, args);
+#else
+       // CF doesn't have a Activator.CreateInstance overload that takes args
+       // lame
+
+       if (type.IsValueType && CollectionUtils.IsNullOrEmpty<object>(args))
+         return Activator.CreateInstance(type);
+
+       ConstructorInfo[] constructors = type.GetConstructors();
+       ConstructorInfo match = constructors.Where(c =>
+         {
+           ParameterInfo[] parameters = c.GetParameters();
+           if (parameters.Length != args.Length)
+             return false;
+
+           for (int i = 0; i < parameters.Length; i++)
+           {
+             ParameterInfo parameter = parameters[i];
+             object value = args[i];
+
+             if (!IsCompatibleValue(value, parameter.ParameterType))
+               return false;
+           }
+
+           return true;
+         }).FirstOrDefault();
+
+       if (match == null)
+         throw new Exception("Could not create '{0}' with given parameters.".FormatWith(CultureInfo.InvariantCulture, type));
+
+       return match.Invoke(args);
+#endif
+     }
+
+    public static void SplitFullyQualifiedTypeName(string fullyQualifiedTypeName, out string typeName, out string assemblyName)
+    {
+      int? assemblyDelimiterIndex = GetAssemblyDelimiterIndex(fullyQualifiedTypeName);
+
+      if (assemblyDelimiterIndex != null)
+      {
+        typeName = fullyQualifiedTypeName.Substring(0, assemblyDelimiterIndex.Value).Trim();
+        assemblyName = fullyQualifiedTypeName.Substring(assemblyDelimiterIndex.Value + 1, fullyQualifiedTypeName.Length - assemblyDelimiterIndex.Value - 1).Trim();
+      }
+      else
+      {
+        typeName = fullyQualifiedTypeName;
+        assemblyName = null;
+      }
+
+    }
+
+    private static int? GetAssemblyDelimiterIndex(string fullyQualifiedTypeName)
+    {
+      // we need to get the first comma following all surrounded in brackets because of generic types
+      // e.g. System.Collections.Generic.Dictionary`2[[System.String, mscorlib,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+      int scope = 0;
+      for (int i = 0; i < fullyQualifiedTypeName.Length; i++)
+      {
+        char current = fullyQualifiedTypeName[i];
+        switch (current)
+        {
+          case '[':
+            scope++;
+            break;
+          case ']':
+            scope--;
+            break;
+          case ',':
+            if (scope == 0)
+              return i;
+            break;
+        }
+      }
+
+      return null;
+    }
+
+    public static MemberInfo GetMemberInfoFromType(Type targetType, MemberInfo memberInfo)
+    {
+      const BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
+
+      switch (memberInfo.MemberType())
+      {
+        case MemberTypes.Property:
+          PropertyInfo propertyInfo = (PropertyInfo) memberInfo;
+
+          Type[] types = propertyInfo.GetIndexParameters().Select(p => p.ParameterType).ToArray();
+
+          return targetType.GetProperty(propertyInfo.Name, bindingAttr, null, propertyInfo.PropertyType, types, null);
+        default:
+          return targetType.GetMember(memberInfo.Name, memberInfo.MemberType(), bindingAttr).SingleOrDefault();
+      }
+    }
+
+    public static IEnumerable<FieldInfo> GetFields(Type targetType, BindingFlags bindingAttr)
+    {
+      ValidationUtils.ArgumentNotNull(targetType, "targetType");
+
+      List<MemberInfo> fieldInfos = new List<MemberInfo>(targetType.GetFields(bindingAttr));
+#if !NETFX_CORE
+      // Type.GetFields doesn't return inherited private fields
+      // manually find private fields from base class
+      GetChildPrivateFields(fieldInfos, targetType, bindingAttr);
+#endif
+
+      return fieldInfos.Cast<FieldInfo>();
+    }
+
+    private static void GetChildPrivateFields(IList<MemberInfo> initialFields, Type targetType, BindingFlags bindingAttr)
+    {
+      // fix weirdness with private FieldInfos only being returned for the current Type
+      // find base type fields and add them to result
+      if ((bindingAttr & BindingFlags.NonPublic) != 0)
+      {
+        // modify flags to not search for public fields
+        BindingFlags nonPublicBindingAttr = bindingAttr.RemoveFlag(BindingFlags.Public);
+
+        while ((targetType = targetType.BaseType()) != null)
+        {
+          // filter out protected fields
+          IEnumerable<MemberInfo> childPrivateFields =
+            targetType.GetFields(nonPublicBindingAttr).Where(f => f.IsPrivate).Cast<MemberInfo>();
+
+          initialFields.AddRange(childPrivateFields);
+        }
+      }
+    }
+
+    public static IEnumerable<PropertyInfo> GetProperties(Type targetType, BindingFlags bindingAttr)
+    {
+      ValidationUtils.ArgumentNotNull(targetType, "targetType");
+
+      List<PropertyInfo> propertyInfos = new List<PropertyInfo>(targetType.GetProperties(bindingAttr));
+      GetChildPrivateProperties(propertyInfos, targetType, bindingAttr);
+
+      // a base class private getter/setter will be inaccessable unless the property was gotten from the base class
+      for (int i = 0; i < propertyInfos.Count; i++)
+      {
+        PropertyInfo member = propertyInfos[i];
+        if (member.DeclaringType != targetType)
+        {
+          PropertyInfo declaredMember = (PropertyInfo)GetMemberInfoFromType(member.DeclaringType, member);
+          propertyInfos[i] = declaredMember;
+        }
+      }
+
+      return propertyInfos;
+    }
+
+    public static BindingFlags RemoveFlag(this BindingFlags bindingAttr, BindingFlags flag)
+    {
+      return ((bindingAttr & flag) == flag)
+        ? bindingAttr ^ flag
+        : bindingAttr;
+    }
+
+    private static void GetChildPrivateProperties(IList<PropertyInfo> initialProperties, Type targetType, BindingFlags bindingAttr)
+    {
+      // fix weirdness with private PropertyInfos only being returned for the current Type
+      // find base type properties and add them to result
+      if ((bindingAttr & BindingFlags.NonPublic) != 0)
+      {
+        // modify flags to not search for public fields
+        BindingFlags nonPublicBindingAttr = bindingAttr.RemoveFlag(BindingFlags.Public);
+
+        while ((targetType = targetType.BaseType()) != null)
+        {
+          foreach (PropertyInfo propertyInfo in targetType.GetProperties(nonPublicBindingAttr))
+          {
+            PropertyInfo nonPublicProperty = propertyInfo;
+
+            // have to test on name rather than reference because instances are different
+            // depending on the type that GetProperties was called on
+            int index = initialProperties.IndexOf(p => p.Name == nonPublicProperty.Name);
+            if (index == -1)
+            {
+              initialProperties.Add(nonPublicProperty);
+            }
+            else
+            {
+              // replace nonpublic properties for a child, but gotten from
+              // the parent with the one from the child
+              // the property gotten from the child will have access to private getter/setter
+              initialProperties[index] = nonPublicProperty;
+            }
+          }
+        }
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringBuffer.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringBuffer.cs
@@ -1,107 +1,107 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-
-namespace Newtonsoft.Json.Utilities
-{
-  /// <summary>
-  /// Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer.
-  /// </summary>
-  internal class StringBuffer
-  {
-    private char[] _buffer;
-    private int _position;
-
-    private static readonly char[] EmptyBuffer = new char[0];
-
-    public int Position
-    {
-      get { return _position; }
-      set { _position = value; }
-    }
-
-    public StringBuffer()
-    {
-      _buffer = EmptyBuffer;
-    }
-
-    public StringBuffer(int initalSize)
-    {
-      _buffer = new char[initalSize];
-    }
-
-    public void Append(char value)
-    {
-      // test if the buffer array is large enough to take the value
-      if (_position == _buffer.Length)
-        EnsureSize(1);
-
-      // set value and increment poisition
-      _buffer[_position++] = value;
-    }
-
-    public void Append(char[] buffer, int startIndex, int count)
-    {
-      if (_position + count >= _buffer.Length)
-        EnsureSize(count);
-
-      Array.Copy(buffer, startIndex, _buffer, _position, count);
-
-      _position += count;
-    }
-
-    public void Clear()
-    {
-      _buffer = EmptyBuffer;
-      _position = 0;
-    }
-
-    private void EnsureSize(int appendLength)
-    {
-      char[] newBuffer = new char[(_position + appendLength) * 2];
-
-      Array.Copy(_buffer, newBuffer, _position);
-
-      _buffer = newBuffer;
-    }
-
-    public override string ToString()
-    {
-      return ToString(0, _position);
-    }
-
-    public string ToString(int start, int length)
-    {
-      // TODO: validation
-      return new string(_buffer, start, length);
-    }
-
-    public char[] GetInternalBuffer()
-    {
-      return _buffer;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+
+namespace Newtonsoft.Json.Utilities
+{
+  /// <summary>
+  /// Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer.
+  /// </summary>
+  internal class StringBuffer
+  {
+    private char[] _buffer;
+    private int _position;
+
+    private static readonly char[] EmptyBuffer = new char[0];
+
+    public int Position
+    {
+      get { return _position; }
+      set { _position = value; }
+    }
+
+    public StringBuffer()
+    {
+      _buffer = EmptyBuffer;
+    }
+
+    public StringBuffer(int initalSize)
+    {
+      _buffer = new char[initalSize];
+    }
+
+    public void Append(char value)
+    {
+      // test if the buffer array is large enough to take the value
+      if (_position == _buffer.Length)
+        EnsureSize(1);
+
+      // set value and increment poisition
+      _buffer[_position++] = value;
+    }
+
+    public void Append(char[] buffer, int startIndex, int count)
+    {
+      if (_position + count >= _buffer.Length)
+        EnsureSize(count);
+
+      Array.Copy(buffer, startIndex, _buffer, _position, count);
+
+      _position += count;
+    }
+
+    public void Clear()
+    {
+      _buffer = EmptyBuffer;
+      _position = 0;
+    }
+
+    private void EnsureSize(int appendLength)
+    {
+      char[] newBuffer = new char[(_position + appendLength) * 2];
+
+      Array.Copy(_buffer, newBuffer, _position);
+
+      _buffer = newBuffer;
+    }
+
+    public override string ToString()
+    {
+      return ToString(0, _position);
+    }
+
+    public string ToString(int start, int length)
+    {
+      // TODO: validation
+      return new string(_buffer, start, length);
+    }
+
+    public char[] GetInternalBuffer()
+    {
+      return _buffer;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringReference.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringReference.cs
@@ -1,36 +1,36 @@
-﻿namespace Newtonsoft.Json.Utilities
-{
-  internal struct StringReference
-  {
-    private readonly char[] _chars;
-    private readonly int _startIndex;
-    private readonly int _length;
-
-    public char[] Chars
-    {
-      get { return _chars; }
-    }
-
-    public int StartIndex
-    {
-      get { return _startIndex; }
-    }
-
-    public int Length
-    {
-      get { return _length; }
-    }
-
-    public StringReference(char[] chars, int startIndex, int length)
-    {
-      _chars = chars;
-      _startIndex = startIndex;
-      _length = length;
-    }
-
-    public override string ToString()
-    {
-      return new string(_chars, _startIndex, _length);
-    }
-  }
+﻿namespace Newtonsoft.Json.Utilities
+{
+  internal struct StringReference
+  {
+    private readonly char[] _chars;
+    private readonly int _startIndex;
+    private readonly int _length;
+
+    public char[] Chars
+    {
+      get { return _chars; }
+    }
+
+    public int StartIndex
+    {
+      get { return _startIndex; }
+    }
+
+    public int Length
+    {
+      get { return _length; }
+    }
+
+    public StringReference(char[] chars, int startIndex, int length)
+    {
+      _chars = chars;
+      _startIndex = startIndex;
+      _length = length;
+    }
+
+    public override string ToString()
+    {
+      return new string(_chars, _startIndex, _length);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/StringUtils.cs
@@ -1,156 +1,156 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using System.Globalization;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#else
-using System.Linq;
-#endif
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class StringUtils
-  {
-    public const string CarriageReturnLineFeed = "\r\n";
-    public const string Empty = "";
-    public const char CarriageReturn = '\r';
-    public const char LineFeed = '\n';
-    public const char Tab = '\t';
-
-    public static string FormatWith(this string format, IFormatProvider provider, params object[] args)
-    {
-      ValidationUtils.ArgumentNotNull(format, "format");
-
-      return string.Format(provider, format, args);
-    }
-
-    /// <summary>
-    /// Determines whether the string is all white space. Empty string will return false.
-    /// </summary>
-    /// <param name="s">The string to test whether it is all white space.</param>
-    /// <returns>
-    /// 	<c>true</c> if the string is all white space; otherwise, <c>false</c>.
-    /// </returns>
-    public static bool IsWhiteSpace(string s)
-    {
-      if (s == null)
-        throw new ArgumentNullException("s");
-
-      if (s.Length == 0)
-        return false;
-
-      for (int i = 0; i < s.Length; i++)
-      {
-        if (!char.IsWhiteSpace(s[i]))
-          return false;
-      }
-
-      return true;
-    }
-
-    /// <summary>
-    /// Nulls an empty string.
-    /// </summary>
-    /// <param name="s">The string.</param>
-    /// <returns>Null if the string was null, otherwise the string unchanged.</returns>
-    public static string NullEmptyString(string s)
-    {
-      return (string.IsNullOrEmpty(s)) ? null : s;
-    }
-
-    public static StringWriter CreateStringWriter(int capacity)
-    {
-      StringBuilder sb = new StringBuilder(capacity);
-      StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);
-
-      return sw;
-    }
-
-    public static int? GetLength(string value)
-    {
-      if (value == null)
-        return null;
-      else
-        return value.Length;
-    }
-
-    public static string ToCharAsUnicode(char c)
-    {
-      char h1 = MathUtils.IntToHex((c >> 12) & '\x000f');
-      char h2 = MathUtils.IntToHex((c >> 8) & '\x000f');
-      char h3 = MathUtils.IntToHex((c >> 4) & '\x000f');
-      char h4 = MathUtils.IntToHex(c & '\x000f');
-
-      return new string(new[] { '\\', 'u', h1, h2, h3, h4 });
-    }
-
-    public static TSource ForgivingCaseSensitiveFind<TSource>(this IEnumerable<TSource> source, Func<TSource, string> valueSelector, string testValue)
-    {
-      if (source == null)
-        throw new ArgumentNullException("source");
-      if (valueSelector == null)
-        throw new ArgumentNullException("valueSelector");
-
-      var caseInsensitiveResults = source.Where(s => string.Equals(valueSelector(s), testValue, StringComparison.OrdinalIgnoreCase));
-      if (caseInsensitiveResults.Count() <= 1)
-      {
-        return caseInsensitiveResults.SingleOrDefault();
-      }
-      else
-      {
-        // multiple results returned. now filter using case sensitivity
-        var caseSensitiveResults = source.Where(s => string.Equals(valueSelector(s), testValue, StringComparison.Ordinal));
-        return caseSensitiveResults.SingleOrDefault();
-      }
-    }
-
-    public static string ToCamelCase(string s)
-    {
-      if (string.IsNullOrEmpty(s))
-        return s;
-
-      if (!char.IsUpper(s[0]))
-        return s;
-
-      string camelCase = null;
-#if !NETFX_CORE
-      camelCase = char.ToLower(s[0], CultureInfo.InvariantCulture).ToString(CultureInfo.InvariantCulture);
-#else
-      camelCase = char.ToLower(s[0]).ToString();
-#endif
-
-      if (s.Length > 1)
-        camelCase += s.Substring(1);
-
-      return camelCase;
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Globalization;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#else
+using System.Linq;
+#endif
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class StringUtils
+  {
+    public const string CarriageReturnLineFeed = "\r\n";
+    public const string Empty = "";
+    public const char CarriageReturn = '\r';
+    public const char LineFeed = '\n';
+    public const char Tab = '\t';
+
+    public static string FormatWith(this string format, IFormatProvider provider, params object[] args)
+    {
+      ValidationUtils.ArgumentNotNull(format, "format");
+
+      return string.Format(provider, format, args);
+    }
+
+    /// <summary>
+    /// Determines whether the string is all white space. Empty string will return false.
+    /// </summary>
+    /// <param name="s">The string to test whether it is all white space.</param>
+    /// <returns>
+    /// 	<c>true</c> if the string is all white space; otherwise, <c>false</c>.
+    /// </returns>
+    public static bool IsWhiteSpace(string s)
+    {
+      if (s == null)
+        throw new ArgumentNullException("s");
+
+      if (s.Length == 0)
+        return false;
+
+      for (int i = 0; i < s.Length; i++)
+      {
+        if (!char.IsWhiteSpace(s[i]))
+          return false;
+      }
+
+      return true;
+    }
+
+    /// <summary>
+    /// Nulls an empty string.
+    /// </summary>
+    /// <param name="s">The string.</param>
+    /// <returns>Null if the string was null, otherwise the string unchanged.</returns>
+    public static string NullEmptyString(string s)
+    {
+      return (string.IsNullOrEmpty(s)) ? null : s;
+    }
+
+    public static StringWriter CreateStringWriter(int capacity)
+    {
+      StringBuilder sb = new StringBuilder(capacity);
+      StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);
+
+      return sw;
+    }
+
+    public static int? GetLength(string value)
+    {
+      if (value == null)
+        return null;
+      else
+        return value.Length;
+    }
+
+    public static string ToCharAsUnicode(char c)
+    {
+      char h1 = MathUtils.IntToHex((c >> 12) & '\x000f');
+      char h2 = MathUtils.IntToHex((c >> 8) & '\x000f');
+      char h3 = MathUtils.IntToHex((c >> 4) & '\x000f');
+      char h4 = MathUtils.IntToHex(c & '\x000f');
+
+      return new string(new[] { '\\', 'u', h1, h2, h3, h4 });
+    }
+
+    public static TSource ForgivingCaseSensitiveFind<TSource>(this IEnumerable<TSource> source, Func<TSource, string> valueSelector, string testValue)
+    {
+      if (source == null)
+        throw new ArgumentNullException("source");
+      if (valueSelector == null)
+        throw new ArgumentNullException("valueSelector");
+
+      var caseInsensitiveResults = source.Where(s => string.Equals(valueSelector(s), testValue, StringComparison.OrdinalIgnoreCase));
+      if (caseInsensitiveResults.Count() <= 1)
+      {
+        return caseInsensitiveResults.SingleOrDefault();
+      }
+      else
+      {
+        // multiple results returned. now filter using case sensitivity
+        var caseSensitiveResults = source.Where(s => string.Equals(valueSelector(s), testValue, StringComparison.Ordinal));
+        return caseSensitiveResults.SingleOrDefault();
+      }
+    }
+
+    public static string ToCamelCase(string s)
+    {
+      if (string.IsNullOrEmpty(s))
+        return s;
+
+      if (!char.IsUpper(s[0]))
+        return s;
+
+      string camelCase = null;
+#if !NETFX_CORE
+      camelCase = char.ToLower(s[0], CultureInfo.InvariantCulture).ToString(CultureInfo.InvariantCulture);
+#else
+      camelCase = char.ToLower(s[0]).ToString();
+#endif
+
+      if (s.Length > 1)
+        camelCase += s.Substring(1);
+
+      return camelCase;
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ThreadSafeStore.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ThreadSafeStore.cs
@@ -1,64 +1,64 @@
-﻿using System;
-using System.Collections.Generic;
-#if NET20
-using Newtonsoft.Json.Utilities.LinqBridge;
-#endif
-using Newtonsoft.Json.Serialization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal class ThreadSafeStore<TKey, TValue>
-  {
-    private readonly object _lock = new object();
-    private Dictionary<TKey, TValue> _store;
-    private readonly Func<TKey, TValue> _creator;
-
-    public ThreadSafeStore(Func<TKey, TValue> creator)
-    {
-      if (creator == null)
-        throw new ArgumentNullException("creator");
-
-      _creator = creator;
-    }
-
-    public TValue Get(TKey key)
-    {
-      if (_store == null)
-        return AddValue(key);
-
-      TValue value;
-      if (!_store.TryGetValue(key, out value))
-        return AddValue(key);
-
-      return value;
-    }
-
-    private TValue AddValue(TKey key)
-    {
-      TValue value = _creator(key);
-
-      lock (_lock)
-      {
-        if (_store == null)
-        {
-          _store = new Dictionary<TKey, TValue>();
-          _store[key] = value;
-        }
-        else
-        {
-          // double check locking
-          TValue checkValue;
-          if (_store.TryGetValue(key, out checkValue))
-            return checkValue;
-
-          Dictionary<TKey, TValue> newStore = new Dictionary<TKey, TValue>(_store);
-          newStore[key] = value;
-
-          _store = newStore;
-        }
-
-        return value;
-      }
-    }
-  }
+﻿using System;
+using System.Collections.Generic;
+#if NET20
+using Newtonsoft.Json.Utilities.LinqBridge;
+#endif
+using Newtonsoft.Json.Serialization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal class ThreadSafeStore<TKey, TValue>
+  {
+    private readonly object _lock = new object();
+    private Dictionary<TKey, TValue> _store;
+    private readonly Func<TKey, TValue> _creator;
+
+    public ThreadSafeStore(Func<TKey, TValue> creator)
+    {
+      if (creator == null)
+        throw new ArgumentNullException("creator");
+
+      _creator = creator;
+    }
+
+    public TValue Get(TKey key)
+    {
+      if (_store == null)
+        return AddValue(key);
+
+      TValue value;
+      if (!_store.TryGetValue(key, out value))
+        return AddValue(key);
+
+      return value;
+    }
+
+    private TValue AddValue(TKey key)
+    {
+      TValue value = _creator(key);
+
+      lock (_lock)
+      {
+        if (_store == null)
+        {
+          _store = new Dictionary<TKey, TValue>();
+          _store[key] = value;
+        }
+        else
+        {
+          // double check locking
+          TValue checkValue;
+          if (_store.TryGetValue(key, out checkValue))
+            return checkValue;
+
+          Dictionary<TKey, TValue> newStore = new Dictionary<TKey, TValue>(_store);
+          newStore[key] = value;
+
+          _store = newStore;
+        }
+
+        return value;
+      }
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ValidationUtils.cs
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Src/Newtonsoft.Json/Utilities/ValidationUtils.cs
@@ -1,79 +1,79 @@
-#region License
-// Copyright (c) 2007 James Newton-King
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the "Software"), to deal in the Software without
-// restriction, including without limitation the rights to use,
-// copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following
-// conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text;
-using System.Globalization;
-
-namespace Newtonsoft.Json.Utilities
-{
-  internal static class ValidationUtils
-  {
-    public static void ArgumentNotNullOrEmpty(string value, string parameterName)
-    {
-      if (value == null)
-        throw new ArgumentNullException(parameterName);
-
-      if (value.Length == 0)
-        throw new ArgumentException("'{0}' cannot be empty.".FormatWith(CultureInfo.InvariantCulture, parameterName), parameterName);
-    }
-
-    public static void ArgumentTypeIsEnum(Type enumType, string parameterName)
-    {
-      ArgumentNotNull(enumType, "enumType");
-
-      if (!enumType.IsEnum())
-        throw new ArgumentException("Type {0} is not an Enum.".FormatWith(CultureInfo.InvariantCulture, enumType), parameterName);
-    }
-
-    public static void ArgumentNotNullOrEmpty<T>(ICollection<T> collection, string parameterName)
-    {
-      ArgumentNotNullOrEmpty<T>(collection, parameterName, "Collection '{0}' cannot be empty.".FormatWith(CultureInfo.InvariantCulture, parameterName));
-    }
-
-    public static void ArgumentNotNullOrEmpty<T>(ICollection<T> collection, string parameterName, string message)
-    {
-      if (collection == null)
-        throw new ArgumentNullException(parameterName);
-
-      if (collection.Count == 0)
-        throw new ArgumentException(message, parameterName);
-    }
-
-    public static void ArgumentNotNull(object value, string parameterName)
-    {
-      if (value == null)
-        throw new ArgumentNullException(parameterName);
-    }
-
-    public static void ArgumentConditionTrue(bool condition, string parameterName, string message)
-    {
-      if (!condition)
-        throw new ArgumentException(message, parameterName);
-    }
-  }
+#region License
+// Copyright (c) 2007 James Newton-King
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following
+// conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.Globalization;
+
+namespace Newtonsoft.Json.Utilities
+{
+  internal static class ValidationUtils
+  {
+    public static void ArgumentNotNullOrEmpty(string value, string parameterName)
+    {
+      if (value == null)
+        throw new ArgumentNullException(parameterName);
+
+      if (value.Length == 0)
+        throw new ArgumentException("'{0}' cannot be empty.".FormatWith(CultureInfo.InvariantCulture, parameterName), parameterName);
+    }
+
+    public static void ArgumentTypeIsEnum(Type enumType, string parameterName)
+    {
+      ArgumentNotNull(enumType, "enumType");
+
+      if (!enumType.IsEnum())
+        throw new ArgumentException("Type {0} is not an Enum.".FormatWith(CultureInfo.InvariantCulture, enumType), parameterName);
+    }
+
+    public static void ArgumentNotNullOrEmpty<T>(ICollection<T> collection, string parameterName)
+    {
+      ArgumentNotNullOrEmpty<T>(collection, parameterName, "Collection '{0}' cannot be empty.".FormatWith(CultureInfo.InvariantCulture, parameterName));
+    }
+
+    public static void ArgumentNotNullOrEmpty<T>(ICollection<T> collection, string parameterName, string message)
+    {
+      if (collection == null)
+        throw new ArgumentNullException(parameterName);
+
+      if (collection.Count == 0)
+        throw new ArgumentException(message, parameterName);
+    }
+
+    public static void ArgumentNotNull(object value, string parameterName)
+    {
+      if (value == null)
+        throw new ArgumentNullException(parameterName);
+    }
+
+    public static void ArgumentConditionTrue(bool condition, string parameterName, string message)
+    {
+      if (!condition)
+        throw new ArgumentException(message, parameterName);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/7-zip/copying.txt
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/7-zip/copying.txt
@@ -1,504 +1,504 @@
-      GNU LESSER GENERAL PUBLIC LICENSE
-           Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-          Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-      GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-          NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-         END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
+      GNU LESSER GENERAL PUBLIC LICENSE
+           Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+      GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+          NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/7-zip/license.txt
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/7-zip/license.txt
@@ -1,30 +1,30 @@
-      7-Zip Command line version
-      ~~~~~~~~~~~~~~~~~~~~~~~~~~
-      License for use and distribution
-      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-      7-Zip Copyright (C) 1999-2009 Igor Pavlov.
-
-      7za.exe is distributed under the GNU LGPL license
-
-      Notes: 
-        You can use 7-Zip on any computer, including a computer in a commercial 
-        organization. You don't need to register or pay for 7-Zip.
-
-
-      GNU LGPL information
-      --------------------
-
-        This library is free software; you can redistribute it and/or
-        modify it under the terms of the GNU Lesser General Public
-        License as published by the Free Software Foundation; either
-        version 2.1 of the License, or (at your option) any later version.
-
-        This library is distributed in the hope that it will be useful,
-        but WITHOUT ANY WARRANTY; without even the implied warranty of
-        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-        Lesser General Public License for more details.
-
-        You should have received a copy of the GNU Lesser General Public
-        License along with this library; if not, write to the Free Software
-        Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+      7-Zip Command line version
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~
+      License for use and distribution
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      7-Zip Copyright (C) 1999-2009 Igor Pavlov.
+
+      7za.exe is distributed under the GNU LGPL license
+
+      Notes: 
+        You can use 7-Zip on any computer, including a computer in a commercial 
+        organization. You don't need to register or pay for 7-Zip.
+
+
+      GNU LGPL information
+      --------------------
+
+        This library is free software; you can redistribute it and/or
+        modify it under the terms of the GNU Lesser General Public
+        License as published by the Free Software Foundation; either
+        version 2.1 of the License, or (at your option) any later version.
+
+        This library is distributed in the hope that it will be useful,
+        but WITHOUT ANY WARRANTY; without even the implied warranty of
+        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+        Lesser General Public License for more details.
+
+        You should have received a copy of the GNU Lesser General Public
+        License along with this library; if not, write to the Free Software
+        Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/7-zip/readme.txt
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/7-zip/readme.txt
@@ -1,42 +1,42 @@
-7-Zip Command line version 4.65
--------------------------------
-
-7-Zip is a file archiver with high compression ratio.
-7za.exe is a standalone command line version of 7-Zip.
-
-7-Zip Copyright (C) 1999-2009 Igor Pavlov.
-
-Features of 7za.exe: 
-  - High compression ratio in new 7z format
-  - Supported formats:
-      - Packing / unpacking: 7z, ZIP, GZIP, BZIP2 and TAR 
-      - Unpacking only: Z
-  - Highest compression ratio for ZIP and GZIP formats.
-  - Fast compression and decompression
-  - Strong AES-256 encryption in 7z and ZIP formats.
-
-7za.exe is a free software distributed under the GNU LGPL.
-Read license.txt for more information.
-
-Source code of 7za.exe and 7-Zip can be found at
-http://www.7-zip.org/
-
-7za.exe can work in Windows 95/98/ME/NT/2000/XP/2003/Vista.
-
-There is also port of 7za.exe for POSIX systems like Unix (Linux, Solaris, OpenBSD, 
-FreeBSD, Cygwin, AIX, ...), MacOS X and BeOS:
-
-http://p7zip.sourceforge.net/
-
-
-  This distributive packet contains the following files:
-
-  7za.exe       - 7-Zip standalone command line version.
-  readme.txt    - This file.
-  copying.txt   - GNU LGPL license.
-  license.txt   - License information.
-  7-zip.chm     - User's Manual in HTML Help format.
-
-
----
-End of document
+7-Zip Command line version 4.65
+-------------------------------
+
+7-Zip is a file archiver with high compression ratio.
+7za.exe is a standalone command line version of 7-Zip.
+
+7-Zip Copyright (C) 1999-2009 Igor Pavlov.
+
+Features of 7za.exe: 
+  - High compression ratio in new 7z format
+  - Supported formats:
+      - Packing / unpacking: 7z, ZIP, GZIP, BZIP2 and TAR 
+      - Unpacking only: Z
+  - Highest compression ratio for ZIP and GZIP formats.
+  - Fast compression and decompression
+  - Strong AES-256 encryption in 7z and ZIP formats.
+
+7za.exe is a free software distributed under the GNU LGPL.
+Read license.txt for more information.
+
+Source code of 7za.exe and 7-Zip can be found at
+http://www.7-zip.org/
+
+7za.exe can work in Windows 95/98/ME/NT/2000/XP/2003/Vista.
+
+There is also port of 7za.exe for POSIX systems like Unix (Linux, Solaris, OpenBSD, 
+FreeBSD, Cygwin, AIX, ...), MacOS X and BeOS:
+
+http://p7zip.sourceforge.net/
+
+
+  This distributive packet contains the following files:
+
+  7za.exe       - 7-Zip standalone command line version.
+  readme.txt    - This file.
+  copying.txt   - GNU LGPL license.
+  license.txt   - License information.
+  7-zip.chm     - User's Manual in HTML Help format.
+
+
+---
+End of document
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.xml
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/NUnit/framework/nunit.framework.xml
@@ -1,10407 +1,10407 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>nunit.framework</name>
-    </assembly>
-    <members>
-        <member name="T:NUnit.Framework.CategoryAttribute">
-            <summary>
-            Attribute used to apply a category to a test
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.CategoryAttribute.categoryName">
-            <summary>
-            The name of the category
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CategoryAttribute.#ctor(System.String)">
-            <summary>
-            Construct attribute for a given category based on
-            a name. The name may not contain the characters ',',
-            '+', '-' or '!'. However, this is not checked in the
-            constructor since it would cause an error to arise at
-            as the test was loaded without giving a clear indication
-            of where the problem is located. The error is handled
-            in NUnitFramework.cs by marking the test as not
-            runnable.
-            </summary>
-            <param name="name">The name of the category</param>
-        </member>
-        <member name="M:NUnit.Framework.CategoryAttribute.#ctor">
-            <summary>
-            Protected constructor uses the Type name as the name
-            of the category.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.CategoryAttribute.Name">
-            <summary>
-            The name of the category
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.DatapointAttribute">
-            <summary>
-            Used to mark a field for use as a datapoint when executing a theory
-            within the same fixture that requires an argument of the field's Type.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.DatapointsAttribute">
-            <summary>
-            Used to mark an array as containing a set of datapoints to be used
-            executing a theory within the same fixture that requires an argument 
-            of the Type of the array elements.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.DescriptionAttribute">
-            <summary>
-            Attribute used to provide descriptive text about a 
-            test case or fixture.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.DescriptionAttribute.#ctor(System.String)">
-            <summary>
-            Construct the attribute
-            </summary>
-            <param name="description">Text describing the test</param>
-        </member>
-        <member name="P:NUnit.Framework.DescriptionAttribute.Description">
-            <summary>
-            Gets the test description
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.MessageMatch">
-            <summary>
-            Enumeration indicating how the expected message parameter is to be used
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.MessageMatch.Exact">
-            Expect an exact match
-        </member>
-        <member name="F:NUnit.Framework.MessageMatch.Contains">
-            Expect a message containing the parameter string
-        </member>
-        <member name="F:NUnit.Framework.MessageMatch.Regex">
-            Match the regular expression provided as a parameter
-        </member>
-        <member name="F:NUnit.Framework.MessageMatch.StartsWith">
-            Expect a message that starts with the parameter string
-        </member>
-        <member name="T:NUnit.Framework.ExpectedExceptionAttribute">
-            <summary>
-            ExpectedExceptionAttribute
-            </summary>
-            
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor">
-            <summary>
-            Constructor for a non-specific exception
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.Type)">
-            <summary>
-            Constructor for a given type of exception
-            </summary>
-            <param name="exceptionType">The type of the expected exception</param>
-        </member>
-        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.String)">
-            <summary>
-            Constructor for a given exception name
-            </summary>
-            <param name="exceptionName">The full name of the expected exception</param>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedException">
-            <summary>
-            Gets or sets the expected exception type
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedExceptionName">
-            <summary>
-            Gets or sets the full Type name of the expected exception
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedMessage">
-            <summary>
-            Gets or sets the expected message text
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.UserMessage">
-            <summary>
-            Gets or sets the user message displayed in case of failure
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.MatchType">
-            <summary>
-             Gets or sets the type of match to be performed on the expected message
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.Handler">
-            <summary>
-             Gets the name of a method to be used as an exception handler
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.ExplicitAttribute">
-            <summary>
-            ExplicitAttribute marks a test or test fixture so that it will
-            only be run if explicitly executed from the gui or command line
-            or if it is included by use of a filter. The test will not be
-            run simply because an enclosing suite is run.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor">
-            <summary>
-            Default constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor(System.String)">
-            <summary>
-            Constructor with a reason
-            </summary>
-            <param name="reason">The reason test is marked explicit</param>
-        </member>
-        <member name="P:NUnit.Framework.ExplicitAttribute.Reason">
-            <summary>
-            The reason test is marked explicit
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IgnoreAttribute">
-            <summary>
-            Attribute used to mark a test that is to be ignored.
-            Ignored tests result in a warning message when the
-            tests are run.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor">
-            <summary>
-            Constructs the attribute without giving a reason 
-            for ignoring the test.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor(System.String)">
-            <summary>
-            Constructs the attribute giving a reason for ignoring the test
-            </summary>
-            <param name="reason">The reason for ignoring the test</param>
-        </member>
-        <member name="P:NUnit.Framework.IgnoreAttribute.Reason">
-            <summary>
-            The reason for ignoring a test
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IncludeExcludeAttribute">
-            <summary>
-            Abstract base for Attributes that are used to include tests
-            in the test run based on environmental settings.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor">
-            <summary>
-            Constructor with no included items specified, for use
-            with named property syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor(System.String)">
-            <summary>
-            Constructor taking one or more included items
-            </summary>
-            <param name="include">Comma-delimited list of included items</param>
-        </member>
-        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Include">
-            <summary>
-            Name of the item that is needed in order for
-            a test to run. Multiple itemss may be given,
-            separated by a comma.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Exclude">
-            <summary>
-            Name of the item to be excluded. Multiple items
-            may be given, separated by a comma.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Reason">
-            <summary>
-            The reason for including or excluding the test
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.PlatformAttribute">
-            <summary>
-            PlatformAttribute is used to mark a test fixture or an
-            individual method as applying to a particular platform only.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PlatformAttribute.#ctor">
-            <summary>
-            Constructor with no platforms specified, for use
-            with named property syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PlatformAttribute.#ctor(System.String)">
-            <summary>
-            Constructor taking one or more platforms
-            </summary>
-            <param name="platforms">Comma-deliminted list of platforms</param>
-        </member>
-        <member name="T:NUnit.Framework.CultureAttribute">
-            <summary>
-            CultureAttribute is used to mark a test fixture or an
-            individual method as applying to a particular Culture only.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CultureAttribute.#ctor">
-            <summary>
-            Constructor with no cultures specified, for use
-            with named property syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CultureAttribute.#ctor(System.String)">
-            <summary>
-            Constructor taking one or more cultures
-            </summary>
-            <param name="cultures">Comma-deliminted list of cultures</param>
-        </member>
-        <member name="T:NUnit.Framework.CombinatorialAttribute">
-            <summary>
-            Marks a test to use a combinatorial join of any argument data 
-            provided. NUnit will create a test case for every combination of 
-            the arguments provided. This can result in a large number of test
-            cases and so should be used judiciously. This is the default join
-            type, so the attribute need not be used except as documentation.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.PropertyAttribute">
-            <summary>
-            PropertyAttribute is used to attach information to a test as a name/value pair..
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.String)">
-            <summary>
-            Construct a PropertyAttribute with a name and string value
-            </summary>
-            <param name="propertyName">The name of the property</param>
-            <param name="propertyValue">The property value</param>
-        </member>
-        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.Int32)">
-            <summary>
-            Construct a PropertyAttribute with a name and int value
-            </summary>
-            <param name="propertyName">The name of the property</param>
-            <param name="propertyValue">The property value</param>
-        </member>
-        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.Double)">
-            <summary>
-            Construct a PropertyAttribute with a name and double value
-            </summary>
-            <param name="propertyName">The name of the property</param>
-            <param name="propertyValue">The property value</param>
-        </member>
-        <member name="M:NUnit.Framework.PropertyAttribute.#ctor">
-            <summary>
-            Constructor for derived classes that set the
-            property dictionary directly.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.Object)">
-            <summary>
-            Constructor for use by derived classes that use the
-            name of the type as the property name. Derived classes
-            must ensure that the Type of the property value is
-            a standard type supported by the BCL. Any custom
-            types will cause a serialization Exception when
-            in the client.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.PropertyAttribute.Properties">
-            <summary>
-            Gets the property dictionary for this attribute
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CombinatorialAttribute.#ctor">
-            <summary>
-            Default constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.PairwiseAttribute">
-            <summary>
-            Marks a test to use pairwise join of any argument data provided. 
-            NUnit will attempt too excercise every pair of argument values at 
-            least once, using as small a number of test cases as it can. With
-            only two arguments, this is the same as a combinatorial join.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.PairwiseAttribute.#ctor">
-            <summary>
-            Default constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SequentialAttribute">
-            <summary>
-            Marks a test to use a sequential join of any argument data
-            provided. NUnit will use arguements for each parameter in
-            sequence, generating test cases up to the largest number
-            of argument values provided and using null for any arguments
-            for which it runs out of values. Normally, this should be
-            used with the same number of arguments for each parameter.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SequentialAttribute.#ctor">
-            <summary>
-            Default constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.MaxTimeAttribute">
-            <summary>
-            Summary description for MaxTimeAttribute.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.MaxTimeAttribute.#ctor(System.Int32)">
-            <summary>
-            Construct a MaxTimeAttribute, given a time in milliseconds.
-            </summary>
-            <param name="milliseconds">The maximum elapsed time in milliseconds</param>
-        </member>
-        <member name="T:NUnit.Framework.RandomAttribute">
-            <summary>
-            RandomAttribute is used to supply a set of random values
-            to a single parameter of a parameterized test.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.ValuesAttribute">
-            <summary>
-            ValuesAttribute is used to provide literal arguments for
-            an individual parameter of a test.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.ParameterDataAttribute">
-            <summary>
-            Abstract base class for attributes that apply to parameters 
-            and supply data for the parameter.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ParameterDataAttribute.GetData(System.Reflection.ParameterInfo)">
-            <summary>
-            Gets the data to be provided to the specified parameter
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.ValuesAttribute.data">
-            <summary>
-            The collection of data to be returned. Must
-            be set by any derived attribute classes.
-            We use an object[] so that the individual
-            elements may have their type changed in GetData
-            if necessary.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object)">
-            <summary>
-            Construct with one argument
-            </summary>
-            <param name="arg1"></param>
-        </member>
-        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object,System.Object)">
-            <summary>
-            Construct with two arguments
-            </summary>
-            <param name="arg1"></param>
-            <param name="arg2"></param>
-        </member>
-        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object,System.Object,System.Object)">
-            <summary>
-            Construct with three arguments
-            </summary>
-            <param name="arg1"></param>
-            <param name="arg2"></param>
-            <param name="arg3"></param>
-        </member>
-        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object[])">
-            <summary>
-            Construct with an array of arguments
-            </summary>
-            <param name="args"></param>
-        </member>
-        <member name="M:NUnit.Framework.ValuesAttribute.GetData(System.Reflection.ParameterInfo)">
-            <summary>
-            Get the collection of values to be used as arguments
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RandomAttribute.#ctor(System.Int32)">
-            <summary>
-            Construct a set of doubles from 0.0 to 1.0,
-            specifying only the count.
-            </summary>
-            <param name="count"></param>
-        </member>
-        <member name="M:NUnit.Framework.RandomAttribute.#ctor(System.Double,System.Double,System.Int32)">
-            <summary>
-            Construct a set of doubles from min to max
-            </summary>
-            <param name="min"></param>
-            <param name="max"></param>
-            <param name="count"></param>
-        </member>
-        <member name="M:NUnit.Framework.RandomAttribute.#ctor(System.Int32,System.Int32,System.Int32)">
-            <summary>
-            Construct a set of ints from min to max
-            </summary>
-            <param name="min"></param>
-            <param name="max"></param>
-            <param name="count"></param>
-        </member>
-        <member name="M:NUnit.Framework.RandomAttribute.GetData(System.Reflection.ParameterInfo)">
-            <summary>
-            Get the collection of values to be used as arguments
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.RangeAttribute">
-            <summary>
-            RangeAttribute is used to supply a range of values to an
-            individual parameter of a parameterized test.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Int32,System.Int32)">
-            <summary>
-            Construct a range of ints using default step of 1
-            </summary>
-            <param name="from"></param>
-            <param name="to"></param>
-        </member>
-        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Int32,System.Int32,System.Int32)">
-            <summary>
-            Construct a range of ints specifying the step size 
-            </summary>
-            <param name="from"></param>
-            <param name="to"></param>
-            <param name="step"></param>
-        </member>
-        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Int64,System.Int64,System.Int64)">
-            <summary>
-            Construct a range of longs
-            </summary>
-            <param name="from"></param>
-            <param name="to"></param>
-            <param name="step"></param>
-        </member>
-        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Double,System.Double,System.Double)">
-            <summary>
-            Construct a range of doubles
-            </summary>
-            <param name="from"></param>
-            <param name="to"></param>
-            <param name="step"></param>
-        </member>
-        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Single,System.Single,System.Single)">
-            <summary>
-            Construct a range of floats
-            </summary>
-            <param name="from"></param>
-            <param name="to"></param>
-            <param name="step"></param>
-        </member>
-        <member name="T:NUnit.Framework.RepeatAttribute">
-            <summary>
-            RepeatAttribute may be applied to test case in order
-            to run it multiple times.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RepeatAttribute.#ctor(System.Int32)">
-            <summary>
-            Construct a RepeatAttribute
-            </summary>
-            <param name="count">The number of times to run the test</param>
-        </member>
-        <member name="T:NUnit.Framework.RequiredAddinAttribute">
-            <summary>
-            RequiredAddinAttribute may be used to indicate the names of any addins
-            that must be present in order to run some or all of the tests in an
-            assembly. If the addin is not loaded, the entire assembly is marked
-            as NotRunnable.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RequiredAddinAttribute.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:RequiredAddinAttribute"/> class.
-            </summary>
-            <param name="requiredAddin">The required addin.</param>
-        </member>
-        <member name="P:NUnit.Framework.RequiredAddinAttribute.RequiredAddin">
-            <summary>
-            Gets the name of required addin.
-            </summary>
-            <value>The required addin name.</value>
-        </member>
-        <member name="T:NUnit.Framework.SetCultureAttribute">
-            <summary>
-            Summary description for SetCultureAttribute.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SetCultureAttribute.#ctor(System.String)">
-            <summary>
-            Construct given the name of a culture
-            </summary>
-            <param name="culture"></param>
-        </member>
-        <member name="T:NUnit.Framework.SetUICultureAttribute">
-            <summary>
-            Summary description for SetUICultureAttribute.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SetUICultureAttribute.#ctor(System.String)">
-            <summary>
-            Construct given the name of a culture
-            </summary>
-            <param name="culture"></param>
-        </member>
-        <member name="T:NUnit.Framework.SetUpAttribute">
-            <summary>
-            Attribute used to mark a class that contains one-time SetUp 
-            and/or TearDown methods that apply to all the tests in a
-            namespace or an assembly.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SetUpFixtureAttribute">
-            <summary>
-            SetUpFixtureAttribute is used to identify a SetUpFixture
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SuiteAttribute">
-            <summary>
-            Attribute used to mark a static (shared in VB) property
-            that returns a list of tests.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TearDownAttribute">
-            <summary>
-            Attribute used to identify a method that is called 
-            immediately after each test is run. The method is 
-            guaranteed to be called, even if an exception is thrown.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestAttribute">
-            <summary>
-            Adding this attribute to a method within a <seealso cref="T:NUnit.Framework.TestFixtureAttribute"/> 
-            class makes the method callable from the NUnit test runner. There is a property 
-            called Description which is optional which you can provide a more detailed test
-            description. This class cannot be inherited.
-            </summary>
-            
-            <example>
-            [TestFixture]
-            public class Fixture
-            {
-              [Test]
-              public void MethodToTest()
-              {}
-              
-              [Test(Description = "more detailed description")]
-              publc void TestDescriptionMethod()
-              {}
-            }
-            </example>
-            
-        </member>
-        <member name="P:NUnit.Framework.TestAttribute.Description">
-            <summary>
-            Descriptive text for this test
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestCaseAttribute">
-            <summary>
-            TestCaseAttribute is used to mark parameterized test cases
-            and provide them with their arguments.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.ITestCaseData">
-            <summary>
-            The ITestCaseData interface is implemented by a class
-            that is able to return complete testcases for use by
-            a parameterized test method.
-            
-            NOTE: This interface is used in both the framework
-            and the core, even though that results in two different
-            types. However, sharing the source code guarantees that
-            the various implementations will be compatible and that
-            the core is able to reflect successfully over the
-            framework implementations of ITestCaseData.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.Arguments">
-            <summary>
-            Gets the argument list to be provided to the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.Result">
-            <summary>
-            Gets the expected result
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.ExpectedException">
-            <summary>
-             Gets the expected exception Type
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.ExpectedExceptionName">
-            <summary>
-            Gets the FullName of the expected exception
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.TestName">
-            <summary>
-            Gets the name to be used for the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.Description">
-            <summary>
-            Gets the description of the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.Ignored">
-            <summary>
-            Gets a value indicating whether this <see cref="T:NUnit.Framework.ITestCaseData"/> is ignored.
-            </summary>
-            <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
-        </member>
-        <member name="P:NUnit.Framework.ITestCaseData.IgnoreReason">
-            <summary>
-            Gets the ignore reason.
-            </summary>
-            <value>The ignore reason.</value>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object[])">
-            <summary>
-            Construct a TestCaseAttribute with a list of arguments.
-            This constructor is not CLS-Compliant
-            </summary>
-            <param name="arguments"></param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object)">
-            <summary>
-            Construct a TestCaseAttribute with a single argument
-            </summary>
-            <param name="arg"></param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object,System.Object)">
-            <summary>
-            Construct a TestCaseAttribute with a two arguments
-            </summary>
-            <param name="arg1"></param>
-            <param name="arg2"></param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object,System.Object,System.Object)">
-            <summary>
-            Construct a TestCaseAttribute with a three arguments
-            </summary>
-            <param name="arg1"></param>
-            <param name="arg2"></param>
-            <param name="arg3"></param>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.Arguments">
-            <summary>
-            Gets the list of arguments to a test case
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.Result">
-            <summary>
-            Gets or sets the expected result.
-            </summary>
-            <value>The result.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.Categories">
-            <summary>
-            Gets a list of categories associated with this test;
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.Category">
-            <summary>
-            Gets or sets the category associated with this test.
-            May be a single category or a comma-separated list.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.ExpectedException">
-            <summary>
-            Gets or sets the expected exception.
-            </summary>
-            <value>The expected exception.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.ExpectedExceptionName">
-            <summary>
-            Gets or sets the name the expected exception.
-            </summary>
-            <value>The expected name of the exception.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.ExpectedMessage">
-            <summary>
-            Gets or sets the expected message of the expected exception
-            </summary>
-            <value>The expected message of the exception.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.MatchType">
-            <summary>
-             Gets or sets the type of match to be performed on the expected message
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.Description">
-            <summary>
-            Gets or sets the description.
-            </summary>
-            <value>The description.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.TestName">
-            <summary>
-            Gets or sets the name of the test.
-            </summary>
-            <value>The name of the test.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.Ignore">
-            <summary>
-            Gets or sets the ignored status of the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.Ignored">
-            <summary>
-            Gets or sets the ignored status of the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseAttribute.IgnoreReason">
-            <summary>
-            Gets the ignore reason.
-            </summary>
-            <value>The ignore reason.</value>
-        </member>
-        <member name="T:NUnit.Framework.TestCaseSourceAttribute">
-            <summary>
-            FactoryAttribute indicates the source to be used to
-            provide test cases for a test method.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseSourceAttribute.#ctor(System.String)">
-            <summary>
-            Construct with the name of the factory - for use with languages
-            that don't support params arrays.
-            </summary>
-            <param name="sourceName">An array of the names of the factories that will provide data</param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseSourceAttribute.#ctor(System.Type,System.String)">
-            <summary>
-            Construct with a Type and name - for use with languages
-            that don't support params arrays.
-            </summary>
-            <param name="sourceType">The Type that will provide data</param>
-            <param name="sourceName">The name of the method, property or field that will provide data</param>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseSourceAttribute.SourceName">
-            <summary>
-            The name of a the method, property or fiend to be used as a source
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseSourceAttribute.SourceType">
-            <summary>
-            A Type to be used as a source
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestFixtureAttribute">
-            <example>
-            [TestFixture]
-            public class ExampleClass 
-            {}
-            </example>
-        </member>
-        <member name="M:NUnit.Framework.TestFixtureAttribute.#ctor">
-            <summary>
-            Default constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestFixtureAttribute.#ctor(System.Object[])">
-            <summary>
-            Construct with a object[] representing a set of arguments. 
-            In .NET 2.0, the arguments may later be separated into
-            type arguments and constructor arguments.
-            </summary>
-            <param name="arguments"></param>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.Description">
-            <summary>
-            Descriptive text for this fixture
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.Category">
-            <summary>
-            Gets and sets the category for this fixture.
-            May be a comma-separated list of categories.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.Categories">
-            <summary>
-            Gets a list of categories for this fixture
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.Arguments">
-            <summary>
-            The arguments originally provided to the attribute
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.Ignore">
-            <summary>
-            Gets or sets a value indicating whether this <see cref="T:NUnit.Framework.TestFixtureAttribute"/> should be ignored.
-            </summary>
-            <value><c>true</c> if ignore; otherwise, <c>false</c>.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.IgnoreReason">
-            <summary>
-            Gets or sets the ignore reason. May set Ignored as a side effect.
-            </summary>
-            <value>The ignore reason.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestFixtureAttribute.TypeArgs">
-            <summary>
-            Get or set the type arguments. If not set
-            explicitly, any leading arguments that are
-            Types are taken as type arguments.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestFixtureSetUpAttribute">
-            <summary>
-            Attribute used to identify a method that is 
-            called before any tests in a fixture are run.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestFixtureTearDownAttribute">
-            <summary>
-            Attribute used to identify a method that is called after
-            all the tests in a fixture have run. The method is 
-            guaranteed to be called, even if an exception is thrown.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TheoryAttribute">
-            <summary>
-            Adding this attribute to a method within a <seealso cref="T:NUnit.Framework.TestFixtureAttribute"/> 
-            class makes the method callable from the NUnit test runner. There is a property 
-            called Description which is optional which you can provide a more detailed test
-            description. This class cannot be inherited.
-            </summary>
-            
-            <example>
-            [TestFixture]
-            public class Fixture
-            {
-              [Test]
-              public void MethodToTest()
-              {}
-              
-              [Test(Description = "more detailed description")]
-              publc void TestDescriptionMethod()
-              {}
-            }
-            </example>
-            
-        </member>
-        <member name="T:NUnit.Framework.TimeoutAttribute">
-            <summary>
-            WUsed on a method, marks the test with a timeout value in milliseconds. 
-            The test will be run in a separate thread and is cancelled if the timeout 
-            is exceeded. Used on a method or assembly, sets the default timeout 
-            for all contained test methods.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TimeoutAttribute.#ctor(System.Int32)">
-            <summary>
-            Construct a TimeoutAttribute given a time in milliseconds
-            </summary>
-            <param name="timeout">The timeout value in milliseconds</param>
-        </member>
-        <member name="T:NUnit.Framework.RequiresSTAAttribute">
-            <summary>
-            Marks a test that must run in the STA, causing it
-            to run in a separate thread if necessary.
-            
-            On methods, you may also use STAThreadAttribute
-            to serve the same purpose.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RequiresSTAAttribute.#ctor">
-            <summary>
-            Construct a RequiresSTAAttribute
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.RequiresMTAAttribute">
-            <summary>
-            Marks a test that must run in the MTA, causing it
-            to run in a separate thread if necessary.
-            
-            On methods, you may also use MTAThreadAttribute
-            to serve the same purpose.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RequiresMTAAttribute.#ctor">
-            <summary>
-            Construct a RequiresMTAAttribute
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.RequiresThreadAttribute">
-            <summary>
-            Marks a test that must run on a separate thread.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RequiresThreadAttribute.#ctor">
-            <summary>
-            Construct a RequiresThreadAttribute
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.RequiresThreadAttribute.#ctor(System.Threading.ApartmentState)">
-            <summary>
-            Construct a RequiresThreadAttribute, specifying the apartment
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.ValueSourceAttribute">
-            <summary>
-            ValueSourceAttribute indicates the source to be used to
-            provide data for one parameter of a test method.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ValueSourceAttribute.#ctor(System.String)">
-            <summary>
-            Construct with the name of the factory - for use with languages
-            that don't support params arrays.
-            </summary>
-            <param name="sourceName">The name of the data source to be used</param>
-        </member>
-        <member name="M:NUnit.Framework.ValueSourceAttribute.#ctor(System.Type,System.String)">
-            <summary>
-            Construct with a Type and name - for use with languages
-            that don't support params arrays.
-            </summary>
-            <param name="sourceType">The Type that will provide data</param>
-            <param name="sourceName">The name of the method, property or field that will provide data</param>
-        </member>
-        <member name="P:NUnit.Framework.ValueSourceAttribute.SourceName">
-            <summary>
-            The name of a the method, property or fiend to be used as a source
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.ValueSourceAttribute.SourceType">
-            <summary>
-            A Type to be used as a source
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AttributeExistsConstraint">
-            <summary>
-            AttributeExistsConstraint tests for the presence of a
-            specified attribute on  a Type.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.Constraint">
-            <summary>
-            The Constraint class is the base of all built-in constraints
-            within NUnit. It provides the operator overloads used to combine 
-            constraints.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.IResolveConstraint">
-            <summary>
-            The IConstraintExpression interface is implemented by all
-            complete and resolvable constraints and expressions.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.IResolveConstraint.Resolve">
-            <summary>
-            Return the top-level constraint for this expression
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.UNSET">
-            <summary>
-            Static UnsetObject used to detect derived constraints
-            failing to set the actual value.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.actual">
-            <summary>
-            The actual value being tested against a constraint
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.displayName">
-            <summary>
-            The display name of this Constraint for use by ToString()
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.argcnt">
-            <summary>
-            Argument fields used by ToString();
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.Constraint.builder">
-            <summary>
-            The builder holding this constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.#ctor">
-            <summary>
-            Construct a constraint with no arguments
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.#ctor(System.Object)">
-            <summary>
-            Construct a constraint with one argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.#ctor(System.Object,System.Object)">
-            <summary>
-            Construct a constraint with two arguments
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.SetBuilder(NUnit.Framework.Constraints.ConstraintBuilder)">
-            <summary>
-            Sets the ConstraintBuilder holding this constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.WriteMessageTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the failure message to the MessageWriter provided
-            as an argument. The default implementation simply passes
-            the constraint and the actual value to the writer, which
-            then displays the constraint description and the value.
-            
-            Constraints that need to provide additional details,
-            such as where the error occured can override this.
-            </summary>
-            <param name="writer">The MessageWriter on which to display the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
-            <summary>
-            Test whether the constraint is satisfied by an
-            ActualValueDelegate that returns the value to be tested.
-            The default implementation simply evaluates the delegate
-            but derived classes may override it to provide for delayed 
-            processing.
-            </summary>
-            <param name="del">An ActualValueDelegate</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.Matches``1(``0@)">
-            <summary>
-            Test whether the constraint is satisfied by a given reference.
-            The default implementation simply dereferences the value but
-            derived classes may override it to provide for delayed processing.
-            </summary>
-            <param name="actual">A reference to the value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.ToString">
-            <summary>
-            Default override of ToString returns the constraint DisplayName
-            followed by any arguments within angle brackets.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of this constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseAnd(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            This operator creates a constraint that is satisfied only if both 
-            argument constraints are satisfied.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseOr(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            This operator creates a constraint that is satisfied if either 
-            of the argument constraints is satisfied.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.op_LogicalNot(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            This operator creates a constraint that is satisfied if the 
-            argument constraint is not satisfied.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.After(System.Int32)">
-            <summary>
-            Returns a DelayedConstraint with the specified delay time.
-            </summary>
-            <param name="delayInMilliseconds">The delay in milliseconds.</param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Constraint.After(System.Int32,System.Int32)">
-            <summary>
-            Returns a DelayedConstraint with the specified delay time
-            and polling interval.
-            </summary>
-            <param name="delayInMilliseconds">The delay in milliseconds.</param>
-            <param name="pollingInterval">The interval at which to test the constraint.</param>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Constraint.DisplayName">
-            <summary>
-            The display name of this Constraint for use by ToString().
-            The default value is the name of the constraint with
-            trailing "Constraint" removed. Derived classes may set
-            this to another name in their constructors.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Constraint.And">
-            <summary>
-            Returns a ConstraintExpression by appending And
-            to the current constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Constraint.With">
-            <summary>
-            Returns a ConstraintExpression by appending And
-            to the current constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Constraint.Or">
-            <summary>
-            Returns a ConstraintExpression by appending Or
-            to the current constraint.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.Constraint.UnsetObject">
-            <summary>
-            Class used to detect any derived constraints
-            that fail to set the actual value in their
-            Matches override.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeExistsConstraint.#ctor(System.Type)">
-            <summary>
-            Constructs an AttributeExistsConstraint for a specific attribute Type
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeExistsConstraint.Matches(System.Object)">
-            <summary>
-            Tests whether the object provides the expected attribute.
-            </summary>
-            <param name="actual">A Type, MethodInfo, or other ICustomAttributeProvider</param>
-            <returns>True if the expected attribute is present, otherwise false</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeExistsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Writes the description of the constraint to the specified writer
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AttributeConstraint">
-            <summary>
-            AttributeConstraint tests that a specified attribute is present
-            on a Type or other provider and that the value of the attribute
-            satisfies some other constraint.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PrefixConstraint">
-            <summary>
-            Abstract base class used for prefixes
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.PrefixConstraint.baseConstraint">
-            <summary>
-            The base constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PrefixConstraint.#ctor(NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Construct given a base constraint
-            </summary>
-            <param name="resolvable"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.#ctor(System.Type,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Constructs an AttributeConstraint for a specified attriute
-            Type and base constraint.
-            </summary>
-            <param name="type"></param>
-            <param name="baseConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.Matches(System.Object)">
-            <summary>
-            Determines whether the Type or other provider has the 
-            expected attribute and if its value matches the
-            additional constraint specified.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Writes a description of the attribute to the specified writer.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Writes the actual value supplied to the specified writer.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.GetStringRepresentation">
-            <summary>
-            Returns a string representation of the constraint.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.BasicConstraint">
-            <summary>
-            BasicConstraint is the abstract base for constraints that
-            perform a simple comparison to a constant value.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BasicConstraint.#ctor(System.Object,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:BasicConstraint"/> class.
-            </summary>
-            <param name="expected">The expected.</param>
-            <param name="description">The description.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BasicConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BasicConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NullConstraint">
-            <summary>
-            NullConstraint tests that the actual value is null
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NullConstraint.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:NullConstraint"/> class.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.TrueConstraint">
-            <summary>
-            TrueConstraint tests that the actual value is true
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.TrueConstraint.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:TrueConstraint"/> class.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.FalseConstraint">
-            <summary>
-            FalseConstraint tests that the actual value is false
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.FalseConstraint.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:FalseConstraint"/> class.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NaNConstraint">
-            <summary>
-            NaNConstraint tests that the actual value is a double or float NaN
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NaNConstraint.Matches(System.Object)">
-            <summary>
-            Test that the actual value is an NaN
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NaNConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a specified writer
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.BinaryConstraint">
-            <summary>
-            BinaryConstraint is the abstract base of all constraints
-            that combine two other constraints in some fashion.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.BinaryConstraint.left">
-            <summary>
-            The first constraint being combined
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.BinaryConstraint.right">
-            <summary>
-            The second constraint being combined
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinaryConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct a BinaryConstraint from two other constraints
-            </summary>
-            <param name="left">The first constraint</param>
-            <param name="right">The second constraint</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AndConstraint">
-            <summary>
-            AndConstraint succeeds only if both members succeed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Create an AndConstraint from two other constraints
-            </summary>
-            <param name="left">The first constraint</param>
-            <param name="right">The second constraint</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndConstraint.Matches(System.Object)">
-            <summary>
-            Apply both member constraints to an actual value, succeeding 
-            succeeding only if both of them succeed.
-            </summary>
-            <param name="actual">The actual value</param>
-            <returns>True if the constraints both succeeded</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description for this contraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to receive the description</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.OrConstraint">
-            <summary>
-            OrConstraint succeeds if either member succeeds
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Create an OrConstraint from two other constraints
-            </summary>
-            <param name="left">The first constraint</param>
-            <param name="right">The second constraint</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrConstraint.Matches(System.Object)">
-            <summary>
-            Apply the member constraints to an actual value, succeeding 
-            succeeding as soon as one of them succeeds.
-            </summary>
-            <param name="actual">The actual value</param>
-            <returns>True if either constraint succeeded</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description for this contraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to receive the description</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionConstraint">
-            <summary>
-            CollectionConstraint is the abstract base class for
-            constraints that operate on collections.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.#ctor">
-            <summary>
-            Construct an empty CollectionConstraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.#ctor(System.Object)">
-            <summary>
-            Construct a CollectionConstraint
-            </summary>
-            <param name="arg"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.IsEmpty(System.Collections.IEnumerable)">
-            <summary>
-            Determines whether the specified enumerable is empty.
-            </summary>
-            <param name="enumerable">The enumerable.</param>
-            <returns>
-            	<c>true</c> if the specified enumerable is empty; otherwise, <c>false</c>.
-            </returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.doMatch(System.Collections.IEnumerable)">
-            <summary>
-            Protected method to be implemented by derived classes
-            </summary>
-            <param name="collection"></param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionItemsEqualConstraint">
-            <summary>
-            CollectionItemsEqualConstraint is the abstract base class for all
-            collection constraints that apply some notion of item equality
-            as a part of their operation.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.#ctor">
-            <summary>
-            Construct an empty CollectionConstraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.#ctor(System.Object)">
-            <summary>
-            Construct a CollectionConstraint
-            </summary>
-            <param name="arg"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using(System.Collections.IComparer)">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using``1(System.Comparison{``0})">
-            <summary>
-            Flag the constraint to use the supplied Comparison object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using(System.Collections.IEqualityComparer)">
-            <summary>
-            Flag the constraint to use the supplied IEqualityComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using``1(System.Collections.Generic.IEqualityComparer{``0})">
-            <summary>
-            Flag the constraint to use the supplied IEqualityComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.ItemsEqual(System.Object,System.Object)">
-            <summary>
-            Compares two collection members for equality
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Tally(System.Collections.IEnumerable)">
-            <summary>
-            Return a new CollectionTally for use in making tests
-            </summary>
-            <param name="c">The collection to be included in the tally</param>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.IgnoreCase">
-            <summary>
-            Flag the constraint to ignore case and return self.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EmptyCollectionConstraint">
-            <summary>
-            EmptyCollectionConstraint tests whether a collection is empty. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyCollectionConstraint.doMatch(System.Collections.IEnumerable)">
-            <summary>
-            Check that the collection is empty
-            </summary>
-            <param name="collection"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyCollectionConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.UniqueItemsConstraint">
-            <summary>
-            UniqueItemsConstraint tests whether all the items in a 
-            collection are unique.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.doMatch(System.Collections.IEnumerable)">
-            <summary>
-            Check that all items are unique.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionContainsConstraint">
-            <summary>
-            CollectionContainsConstraint is used to test whether a collection
-            contains an expected object as a member.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.#ctor(System.Object)">
-            <summary>
-            Construct a CollectionContainsConstraint
-            </summary>
-            <param name="expected"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.doMatch(System.Collections.IEnumerable)">
-            <summary>
-            Test whether the expected item is contained in the collection
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a descripton of the constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionEquivalentConstraint">
-            <summary>
-            CollectionEquivalentCOnstraint is used to determine whether two
-            collections are equivalent.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.#ctor(System.Collections.IEnumerable)">
-            <summary>
-            Construct a CollectionEquivalentConstraint
-            </summary>
-            <param name="expected"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.doMatch(System.Collections.IEnumerable)">
-            <summary>
-            Test whether two collections are equivalent
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionSubsetConstraint">
-            <summary>
-            CollectionSubsetConstraint is used to determine whether
-            one collection is a subset of another
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.#ctor(System.Collections.IEnumerable)">
-            <summary>
-            Construct a CollectionSubsetConstraint
-            </summary>
-            <param name="expected">The collection that the actual value is expected to be a subset of</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.doMatch(System.Collections.IEnumerable)">
-            <summary>
-            Test whether the actual collection is a subset of 
-            the expected collection provided.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionOrderedConstraint">
-            <summary>
-            CollectionOrderedConstraint is used to test whether a collection is ordered.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.#ctor">
-            <summary>
-            Construct a CollectionOrderedConstraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.Using(System.Collections.IComparer)">
-            <summary>
-            Modifies the constraint to use an IComparer and returns self.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Modifies the constraint to use an IComparer&lt;T&gt; and returns self.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.Using``1(System.Comparison{``0})">
-            <summary>
-            Modifies the constraint to use a Comparison&lt;T&gt; and returns self.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.By(System.String)">
-            <summary>
-            Modifies the constraint to test ordering by the value of
-            a specified property and returns self.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.doMatch(System.Collections.IEnumerable)">
-            <summary>
-            Test whether the collection is ordered
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of the constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of the constraint.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.CollectionOrderedConstraint.Descending">
-            <summary>
-             If used performs a reverse comparison
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionTally">
-            <summary>
-            CollectionTally counts (tallies) the number of
-            occurences of each object in one or more enumerations.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionTally.#ctor(NUnit.Framework.Constraints.NUnitEqualityComparer,System.Collections.IEnumerable)">
-            <summary>
-            Construct a CollectionTally object from a comparer and a collection
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionTally.TryRemove(System.Object)">
-            <summary>
-            Try to remove an object from the tally
-            </summary>
-            <param name="o">The object to remove</param>
-            <returns>True if successful, false if the object was not found</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionTally.TryRemove(System.Collections.IEnumerable)">
-            <summary>
-            Try to remove a set of objects from the tally
-            </summary>
-            <param name="c">The objects to remove</param>
-            <returns>True if successful, false if any object was not found</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.CollectionTally.Count">
-            <summary>
-            The number of objects remaining in the tally
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ComparisonAdapter">
-            <summary>
-            ComparisonAdapter class centralizes all comparisons of
-            values in NUnit, adapting to the use of any provided
-            IComparer, IComparer&lt;T&gt; or Comparison&lt;T&gt;
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.For(System.Collections.IComparer)">
-            <summary>
-            Returns a ComparisonAdapter that wraps an IComparer
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.For``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Returns a ComparisonAdapter that wraps an IComparer&lt;T&gt;
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.For``1(System.Comparison{``0})">
-            <summary>
-            Returns a ComparisonAdapter that wraps a Comparison&lt;T&gt;
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.Compare(System.Object,System.Object)">
-            <summary>
-            Compares two objects
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ComparisonAdapter.Default">
-            <summary>
-            Gets the default ComparisonAdapter, which wraps an
-            NUnitComparer object.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter.#ctor(System.Collections.IComparer)">
-            <summary>
-            Construct a ComparisonAdapter for an IComparer
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter.Compare(System.Object,System.Object)">
-            <summary>
-            Compares two objects
-            </summary>
-            <param name="expected"></param>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.DefaultComparisonAdapter.#ctor">
-            <summary>
-            Construct a default ComparisonAdapter
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter`1">
-            <summary>
-            ComparisonAdapter&lt;T&gt; extends ComparisonAdapter and
-            allows use of an IComparer&lt;T&gt; or Comparison&lt;T&gt;
-            to actually perform the comparison.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter`1.#ctor(System.Collections.Generic.IComparer{`0})">
-            <summary>
-            Construct a ComparisonAdapter for an IComparer&lt;T&gt;
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter`1.Compare(System.Object,System.Object)">
-            <summary>
-            Compare a Type T to an object
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparisonAdapterForComparison`1.#ctor(System.Comparison{`0})">
-            <summary>
-            Construct a ComparisonAdapter for a Comparison&lt;T&gt;
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparisonAdapterForComparison`1.Compare(System.Object,System.Object)">
-            <summary>
-            Compare a Type T to an object
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ComparisonConstraint">
-            <summary>
-            Abstract base class for constraints that compare values to
-            determine if one is greater than, equal to or less than
-            the other.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.expected">
-            <summary>
-            The value against which a comparison is to be made
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.ltOK">
-            <summary>
-            If true, less than returns success
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.eqOK">
-            <summary>
-            if true, equal returns success
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.gtOK">
-            <summary>
-            if true, greater than returns success
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.predicate">
-            <summary>
-            The predicate used as a part of the description
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.comparer">
-            <summary>
-            ComparisonAdapter to be used in making the comparison
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.#ctor(System.Object,System.Boolean,System.Boolean,System.Boolean,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
-            </summary>
-            <param name="value">The value against which to make a comparison.</param>
-            <param name="ltOK">if set to <c>true</c> less succeeds.</param>
-            <param name="eqOK">if set to <c>true</c> equal succeeds.</param>
-            <param name="gtOK">if set to <c>true</c> greater succeeds.</param>
-            <param name="predicate">String used in describing the constraint.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Using(System.Collections.IComparer)">
-            <summary>
-            Modifies the constraint to use an IComparer and returns self
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Modifies the constraint to use an IComparer&lt;T&gt; and returns self
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Using``1(System.Comparison{``0})">
-            <summary>
-            Modifies the constraint to use a Comparison&lt;T&gt; and returns self
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.GreaterThanConstraint">
-            <summary>
-            Tests whether a value is greater than the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.GreaterThanConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GreaterThanConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint">
-            <summary>
-            Tests whether a value is greater than or equal to the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GreaterThanOrEqualConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.LessThanConstraint">
-            <summary>
-            Tests whether a value is less than the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.LessThanConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:LessThanConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.LessThanOrEqualConstraint">
-            <summary>
-            Tests whether a value is less than or equal to the value supplied to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.LessThanOrEqualConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:LessThanOrEqualConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ActualValueDelegate">
-            <summary>
-            Delegate used to delay evaluation of the actual value
-            to be used in evaluating a constraint
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder">
-            <summary>
-            ConstraintBuilder maintains the stacks that are used in
-            processing a ConstraintExpression. An OperatorStack
-            is used to hold operators that are waiting for their
-            operands to be reognized. a ConstraintStack holds 
-            input constraints as well as the results of each
-            operator applied.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:ConstraintBuilder"/> class.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Append(NUnit.Framework.Constraints.ConstraintOperator)">
-            <summary>
-            Appends the specified operator to the expression by first
-            reducing the operator stack and then pushing the new
-            operator on the stack.
-            </summary>
-            <param name="op">The operator to push.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Append(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Appends the specified constraint to the expresson by pushing
-            it on the constraint stack.
-            </summary>
-            <param name="constraint">The constraint to push.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.SetTopOperatorRightContext(System.Object)">
-            <summary>
-            Sets the top operator right context.
-            </summary>
-            <param name="rightContext">The right context.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ReduceOperatorStack(System.Int32)">
-            <summary>
-            Reduces the operator stack until the topmost item
-            precedence is greater than or equal to the target precedence.
-            </summary>
-            <param name="targetPrecedence">The target precedence.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Resolve">
-            <summary>
-            Resolves this instance, returning a Constraint. If the builder
-            is not currently in a resolvable state, an exception is thrown.
-            </summary>
-            <returns>The resolved constraint</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.IsResolvable">
-            <summary>
-            Gets a value indicating whether this instance is resolvable.
-            </summary>
-            <value>
-            	<c>true</c> if this instance is resolvable; otherwise, <c>false</c>.
-            </value>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack">
-            <summary>
-            OperatorStack is a type-safe stack for holding ConstraintOperators
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
-            <summary>
-            Initializes a new instance of the <see cref="T:OperatorStack"/> class.
-            </summary>
-            <param name="builder">The builder.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Push(NUnit.Framework.Constraints.ConstraintOperator)">
-            <summary>
-            Pushes the specified operator onto the stack.
-            </summary>
-            <param name="op">The op.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Pop">
-            <summary>
-            Pops the topmost operator from the stack.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Empty">
-            <summary>
-            Gets a value indicating whether this <see cref="T:OpStack"/> is empty.
-            </summary>
-            <value><c>true</c> if empty; otherwise, <c>false</c>.</value>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Top">
-            <summary>
-            Gets the topmost operator without modifying the stack.
-            </summary>
-            <value>The top.</value>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack">
-            <summary>
-            ConstraintStack is a type-safe stack for holding Constraints
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ConstraintStack"/> class.
-            </summary>
-            <param name="builder">The builder.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Push(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Pushes the specified constraint. As a side effect,
-            the constraint's builder field is set to the 
-            ConstraintBuilder owning this stack.
-            </summary>
-            <param name="constraint">The constraint.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Pop">
-            <summary>
-            Pops this topmost constrait from the stack.
-            As a side effect, the constraint's builder
-            field is set to null.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Empty">
-            <summary>
-            Gets a value indicating whether this <see cref="T:ConstraintStack"/> is empty.
-            </summary>
-            <value><c>true</c> if empty; otherwise, <c>false</c>.</value>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Top">
-            <summary>
-            Gets the topmost constraint without modifying the stack.
-            </summary>
-            <value>The topmost constraint</value>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintExpression">
-            <summary>
-            ConstraintExpression represents a compound constraint in the 
-            process of being constructed from a series of syntactic elements.
-            
-            Individual elements are appended to the expression as they are
-            reognized. Once an actual Constraint is appended, the expression
-            returns a resolvable Constraint.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintExpressionBase">
-            <summary>
-            ConstraintExpressionBase is the abstract base class for the 
-            generated ConstraintExpression class, which represents a 
-            compound constraint in the process of being constructed 
-            from a series of syntactic elements.
-            
-            NOTE: ConstraintExpressionBase is aware of some of its
-            derived classes, which is an apparent violation of 
-            encapsulation. Ideally, these classes would be a 
-            single class, but they must be separated in order to
-            allow parts to be generated under .NET 1.x and to
-            provide proper user feedback in syntactically 
-            aware IDEs.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ConstraintExpressionBase.builder">
-            <summary>
-            The ConstraintBuilder holding the elements recognized so far
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:ConstraintExpressionBase"/> class.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ConstraintExpressionBase"/> 
-            class passing in a ConstraintBuilder, which may be pre-populated.
-            </summary>
-            <param name="builder">The builder.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.ToString">
-            <summary>
-            Returns a string representation of the expression as it
-            currently stands. This should only be used for testing,
-            since it has the side-effect of resolving the expression.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.Append(NUnit.Framework.Constraints.ConstraintOperator)">
-            <summary>
-            Appends an operator to the expression and returns the
-            resulting expression itself.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.Append(NUnit.Framework.Constraints.SelfResolvingOperator)">
-            <summary>
-            Appends a self-resolving operator to the expression and
-            returns a new ResolvableConstraintExpression.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.Append(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Appends a constraint to the expression and returns that
-            constraint, which is associated with the current state
-            of the expression being built.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:ConstraintExpression"/> class.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ConstraintExpression"/> 
-            class passing in a ConstraintBuilder, which may be pre-populated.
-            </summary>
-            <param name="builder">The builder.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Property(System.String)">
-            <summary>
-            Returns a new PropertyConstraintExpression, which will either
-            test for the existence of the named property on the object
-            being tested or apply any following constraint to that property.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Attribute(System.Type)">
-            <summary>
-            Returns a new AttributeConstraint checking for the
-            presence of a particular attribute on an object.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Attribute``1">
-            <summary>
-            Returns a new AttributeConstraint checking for the
-            presence of a particular attribute on an object.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Matches(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Returns the constraint provided as an argument - used to allow custom
-            custom constraints to easily participate in the syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Matches``1(System.Predicate{``0})">
-            <summary>
-            Returns the constraint provided as an argument - used to allow custom
-            custom constraints to easily participate in the syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.EqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests two items for equality
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SameAs(System.Object)">
-            <summary>
-            Returns a constraint that tests that two references are the same object
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.GreaterThan(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.GreaterThanOrEqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AtLeast(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.LessThan(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.LessThanOrEqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AtMost(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.TypeOf(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual
-            value is of the exact type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.TypeOf``1">
-            <summary>
-            Returns a constraint that tests whether the actual
-            value is of the exact type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOf(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOf``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOfType(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOfType``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableFrom(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableFrom``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableTo(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableTo``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.EquivalentTo(System.Collections.IEnumerable)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is a collection containing the same elements as the 
-            collection supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SubsetOf(System.Collections.IEnumerable)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is a subset of the collection supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Member(System.Object)">
-            <summary>
-            Returns a new CollectionContainsConstraint checking for the
-            presence of a particular object in the collection.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Contains(System.Object)">
-            <summary>
-            Returns a new CollectionContainsConstraint checking for the
-            presence of a particular object in the collection.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Contains(System.String)">
-            <summary>
-            Returns a new ContainsConstraint. This constraint
-            will, in turn, make use of the appropriate second-level
-            constraint, depending on the type of the actual argument. 
-            This overload is only used if the item sought is a string,
-            since any other type implies that we are looking for a 
-            collection member.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringContaining(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.ContainsSubstring(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StartsWith(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringStarting(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.EndsWith(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringEnding(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Matches(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value matches the Regex pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringMatching(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value matches the Regex pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SamePath(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same as an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SubPath(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same path or under an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SamePathOrUnder(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same path or under an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InRange(System.IComparable,System.IComparable)">
-            <summary>
-            Returns a constraint that tests whether the actual value falls 
-            within a specified range.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Not">
-            <summary>
-            Returns a ConstraintExpression that negates any
-            following constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.No">
-            <summary>
-            Returns a ConstraintExpression that negates any
-            following constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.All">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Some">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if at least one of them succeeds.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.None">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them fail.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Length">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Length property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Count">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Count property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Message">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Message property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.InnerException">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the InnerException property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.With">
-            <summary>
-            With is currently a NOP - reserved for future use.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Null">
-            <summary>
-            Returns a constraint that tests for null
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.True">
-            <summary>
-            Returns a constraint that tests for True
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.False">
-            <summary>
-            Returns a constraint that tests for False
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.NaN">
-            <summary>
-            Returns a constraint that tests for NaN
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Empty">
-            <summary>
-            Returns a constraint that tests for empty
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Unique">
-            <summary>
-            Returns a constraint that tests whether a collection 
-            contains all unique items.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.BinarySerializable">
-            <summary>
-            Returns a constraint that tests whether an object graph is serializable in binary format.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.XmlSerializable">
-            <summary>
-            Returns a constraint that tests whether an object graph is serializable in xml format.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Ordered">
-            <summary>
-            Returns a constraint that tests whether a collection is ordered
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintFactory">
-            <summary>
-            Helper class with properties and methods that supply
-            a number of constraints used in Asserts.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Property(System.String)">
-            <summary>
-            Returns a new PropertyConstraintExpression, which will either
-            test for the existence of the named property on the object
-            being tested or apply any following constraint to that property.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Attribute(System.Type)">
-            <summary>
-            Returns a new AttributeConstraint checking for the
-            presence of a particular attribute on an object.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Attribute``1">
-            <summary>
-            Returns a new AttributeConstraint checking for the
-            presence of a particular attribute on an object.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.EqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests two items for equality
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SameAs(System.Object)">
-            <summary>
-            Returns a constraint that tests that two references are the same object
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.GreaterThan(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.GreaterThanOrEqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AtLeast(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.LessThan(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.LessThanOrEqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AtMost(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.TypeOf(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual
-            value is of the exact type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.TypeOf``1">
-            <summary>
-            Returns a constraint that tests whether the actual
-            value is of the exact type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOf(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOf``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOfType(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOfType``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableFrom(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableFrom``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableTo(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableTo``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.EquivalentTo(System.Collections.IEnumerable)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is a collection containing the same elements as the 
-            collection supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SubsetOf(System.Collections.IEnumerable)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is a subset of the collection supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Member(System.Object)">
-            <summary>
-            Returns a new CollectionContainsConstraint checking for the
-            presence of a particular object in the collection.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Contains(System.Object)">
-            <summary>
-            Returns a new CollectionContainsConstraint checking for the
-            presence of a particular object in the collection.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Contains(System.String)">
-            <summary>
-            Returns a new ContainsConstraint. This constraint
-            will, in turn, make use of the appropriate second-level
-            constraint, depending on the type of the actual argument. 
-            This overload is only used if the item sought is a string,
-            since any other type implies that we are looking for a 
-            collection member.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringContaining(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.ContainsSubstring(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotContain(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StartsWith(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringStarting(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotStartWith(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.EndsWith(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringEnding(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotEndWith(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Matches(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value matches the Regex pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringMatching(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value matches the Regex pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotMatch(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value matches the pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SamePath(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same as an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SubPath(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same path or under an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SamePathOrUnder(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same path or under an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InRange(System.IComparable,System.IComparable)">
-            <summary>
-            Returns a constraint that tests whether the actual value falls 
-            within a specified range.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Not">
-            <summary>
-            Returns a ConstraintExpression that negates any
-            following constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.No">
-            <summary>
-            Returns a ConstraintExpression that negates any
-            following constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.All">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Some">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if at least one of them succeeds.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.None">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them fail.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Length">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Length property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Count">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Count property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Message">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Message property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.InnerException">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the InnerException property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Null">
-            <summary>
-            Returns a constraint that tests for null
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.True">
-            <summary>
-            Returns a constraint that tests for True
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.False">
-            <summary>
-            Returns a constraint that tests for False
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.NaN">
-            <summary>
-            Returns a constraint that tests for NaN
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Empty">
-            <summary>
-            Returns a constraint that tests for empty
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Unique">
-            <summary>
-            Returns a constraint that tests whether a collection 
-            contains all unique items.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.BinarySerializable">
-            <summary>
-            Returns a constraint that tests whether an object graph is serializable in binary format.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.XmlSerializable">
-            <summary>
-            Returns a constraint that tests whether an object graph is serializable in xml format.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Ordered">
-            <summary>
-            Returns a constraint that tests whether a collection is ordered
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ConstraintOperator">
-            <summary>
-            The ConstraintOperator class is used internally by a
-            ConstraintBuilder to represent an operator that 
-            modifies or combines constraints. 
-            
-            Constraint operators use left and right precedence
-            values to determine whether the top operator on the
-            stack should be reduced before pushing a new operator.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ConstraintOperator.left_precedence">
-            <summary>
-            The precedence value used when the operator
-            is about to be pushed to the stack.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ConstraintOperator.right_precedence">
-            <summary>
-            The precedence value used when the operator
-            is on the top of the stack.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ConstraintOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
-            <summary>
-            Reduce produces a constraint from the operator and 
-            any arguments. It takes the arguments from the constraint 
-            stack and pushes the resulting constraint on it.
-            </summary>
-            <param name="stack"></param>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.LeftContext">
-            <summary>
-            The syntax element preceding this operator
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.RightContext">
-            <summary>
-            The syntax element folowing this operator
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.LeftPrecedence">
-            <summary>
-            The precedence value used when the operator
-            is about to be pushed to the stack.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.RightPrecedence">
-            <summary>
-            The precedence value used when the operator
-            is on the top of the stack.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PrefixOperator">
-            <summary>
-            PrefixOperator takes a single constraint and modifies
-            it's action in some way.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PrefixOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
-            <summary>
-            Reduce produces a constraint from the operator and 
-            any arguments. It takes the arguments from the constraint 
-            stack and pushes the resulting constraint on it.
-            </summary>
-            <param name="stack"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PrefixOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Returns the constraint created by applying this
-            prefix to another constraint.
-            </summary>
-            <param name="constraint"></param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NotOperator">
-            <summary>
-            Negates the test of the constraint it wraps.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotOperator.#ctor">
-            <summary>
-            Constructs a new NotOperator
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Returns a NotConstraint applied to its argument.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.CollectionOperator">
-            <summary>
-            Abstract base for operators that indicate how to
-            apply a constraint to items in a collection.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.CollectionOperator.#ctor">
-            <summary>
-            Constructs a CollectionOperator
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AllOperator">
-            <summary>
-            Represents a constraint that succeeds if all the 
-            members of a collection match a base constraint.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AllOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Returns a constraint that will apply the argument
-            to the members of a collection, succeeding if
-            they all succeed.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SomeOperator">
-            <summary>
-            Represents a constraint that succeeds if any of the 
-            members of a collection match a base constraint.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SomeOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Returns a constraint that will apply the argument
-            to the members of a collection, succeeding if
-            any of them succeed.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NoneOperator">
-            <summary>
-            Represents a constraint that succeeds if none of the 
-            members of a collection match a base constraint.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NoneOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Returns a constraint that will apply the argument
-            to the members of a collection, succeeding if
-            none of them succeed.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.WithOperator">
-            <summary>
-            Represents a constraint that simply wraps the
-            constraint provided as an argument, without any
-            further functionality, but which modifes the
-            order of evaluation because of its precedence.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.WithOperator.#ctor">
-            <summary>
-            Constructor for the WithOperator
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.WithOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Returns a constraint that wraps its argument
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SelfResolvingOperator">
-            <summary>
-            Abstract base class for operators that are able to reduce to a 
-            constraint whether or not another syntactic element follows.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PropOperator">
-            <summary>
-            Operator used to test for the presence of a named Property
-            on an object and optionally apply further tests to the
-            value of that property.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropOperator.#ctor(System.String)">
-            <summary>
-            Constructs a PropOperator for a particular named property
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
-            <summary>
-            Reduce produces a constraint from the operator and 
-            any arguments. It takes the arguments from the constraint 
-            stack and pushes the resulting constraint on it.
-            </summary>
-            <param name="stack"></param>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.PropOperator.Name">
-            <summary>
-            Gets the name of the property to which the operator applies
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AttributeOperator">
-            <summary>
-            Operator that tests for the presence of a particular attribute
-            on a type and optionally applies further tests to the attribute.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeOperator.#ctor(System.Type)">
-            <summary>
-            Construct an AttributeOperator for a particular Type
-            </summary>
-            <param name="type">The Type of attribute tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AttributeOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
-            <summary>
-            Reduce produces a constraint from the operator and 
-            any arguments. It takes the arguments from the constraint 
-            stack and pushes the resulting constraint on it.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ThrowsOperator">
-            <summary>
-            Operator that tests that an exception is thrown and
-            optionally applies further tests to the exception.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsOperator.#ctor">
-            <summary>
-            Construct a ThrowsOperator
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
-            <summary>
-            Reduce produces a constraint from the operator and 
-            any arguments. It takes the arguments from the constraint 
-            stack and pushes the resulting constraint on it.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.BinaryOperator">
-            <summary>
-            Abstract base class for all binary operators
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinaryOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
-            <summary>
-            Reduce produces a constraint from the operator and 
-            any arguments. It takes the arguments from the constraint 
-            stack and pushes the resulting constraint on it.
-            </summary>
-            <param name="stack"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinaryOperator.ApplyOperator(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Abstract method that produces a constraint by applying
-            the operator to its left and right constraint arguments.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.BinaryOperator.LeftPrecedence">
-            <summary>
-            Gets the left precedence of the operator
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.BinaryOperator.RightPrecedence">
-            <summary>
-            Gets the right precedence of the operator
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AndOperator">
-            <summary>
-            Operator that requires both it's arguments to succeed
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndOperator.#ctor">
-            <summary>
-            Construct an AndOperator
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AndOperator.ApplyOperator(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Apply the operator to produce an AndConstraint
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.OrOperator">
-            <summary>
-            Operator that requires at least one of it's arguments to succeed
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrOperator.#ctor">
-            <summary>
-            Construct an OrOperator
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.OrOperator.ApplyOperator(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Apply the operator to produce an OrConstraint
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ContainsConstraint">
-            <summary>
-            ContainsConstraint tests a whether a string contains a substring
-            or a collection contains an object. It postpones the decision of
-            which test to use until the type of the actual argument is known.
-            This allows testing whether a string is contained in a collection
-            or as a substring of another string using the same syntax.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ContainsConstraint"/> class.
-            </summary>
-            <param name="expected">The expected.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using(System.Collections.IComparer)">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using``1(System.Comparison{``0})">
-            <summary>
-            Flag the constraint to use the supplied Comparison object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using(System.Collections.IEqualityComparer)">
-            <summary>
-            Flag the constraint to use the supplied IEqualityComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using``1(System.Collections.Generic.IEqualityComparer{``0})">
-            <summary>
-            Flag the constraint to use the supplied IEqualityComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ContainsConstraint.IgnoreCase">
-            <summary>
-            Flag the constraint to ignore case and return self.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.DelayedConstraint">
-            <summary>
-             Applies a delay to the match so that a match can be evaluated in the future.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.#ctor(NUnit.Framework.Constraints.Constraint,System.Int32)">
-            <summary>
-             Creates a new DelayedConstraint
-            </summary>
-            <param name="baseConstraint">The inner constraint two decorate</param>
-            <param name="delayInMilliseconds">The time interval after which the match is performed</param>
-            <exception cref="T:System.InvalidOperationException">If the value of <paramref name="delayInMilliseconds"/> is less than 0</exception>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.#ctor(NUnit.Framework.Constraints.Constraint,System.Int32,System.Int32)">
-            <summary>
-             Creates a new DelayedConstraint
-            </summary>
-            <param name="baseConstraint">The inner constraint two decorate</param>
-            <param name="delayInMilliseconds">The time interval after which the match is performed</param>
-            <param name="pollingInterval">The time interval used for polling</param>
-            <exception cref="T:System.InvalidOperationException">If the value of <paramref name="delayInMilliseconds"/> is less than 0</exception>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for if the base constraint fails, false if it succeeds</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
-            <summary>
-            Test whether the constraint is satisfied by a delegate
-            </summary>
-            <param name="del">The delegate whose value is to be tested</param>
-            <returns>True for if the base constraint fails, false if it succeeds</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.Matches``1(``0@)">
-            <summary>
-            Test whether the constraint is satisfied by a given reference.
-            Overridden to wait for the specified delay period before
-            calling the base constraint with the dereferenced value.
-            </summary>
-            <param name="actual">A reference to the value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a MessageWriter.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of the constraint.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EmptyDirectoryContraint">
-            <summary>
-            EmptyDirectoryConstraint is used to test that a directory is empty
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyDirectoryContraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyDirectoryContraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyDirectoryContraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EmptyConstraint">
-            <summary>
-            EmptyConstraint tests a whether a string or collection is empty,
-            postponing the decision about which test is applied until the
-            type of the actual argument is known.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EqualConstraint">
-            <summary>
-            EqualConstraint is able to compare an actual value with the
-            expected value provided in its constructor. Two objects are 
-            considered equal if both are null, or if both have the same 
-            value. NUnit has special semantics for some object types.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.EqualConstraint.clipStrings">
-            <summary>
-            If true, strings in error messages will be clipped
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.EqualConstraint.comparer">
-            <summary>
-            NUnitEqualityComparer used to test equality.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:NUnit.Framework.Constraints.EqualConstraint"/> class.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Within(System.Object)">
-            <summary>
-            Flag the constraint to use a tolerance when determining equality.
-            </summary>
-            <param name="amount">Tolerance value to be used</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Comparer(System.Collections.IComparer)">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using(System.Collections.IComparer)">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Flag the constraint to use the supplied IComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using``1(System.Comparison{``0})">
-            <summary>
-            Flag the constraint to use the supplied Comparison object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using(System.Collections.IEqualityComparer)">
-            <summary>
-            Flag the constraint to use the supplied IEqualityComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using``1(System.Collections.Generic.IEqualityComparer{``0})">
-            <summary>
-            Flag the constraint to use the supplied IEqualityComparer object.
-            </summary>
-            <param name="comparer">The IComparer object to use.</param>
-            <returns>Self.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteMessageTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a failure message. Overridden to provide custom 
-            failure messages for EqualConstraint.
-            </summary>
-            <param name="writer">The MessageWriter to write to</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write description of this constraint
-            </summary>
-            <param name="writer">The MessageWriter to write to</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionDifferences(NUnit.Framework.Constraints.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
-            <summary>
-            Display the failure information for two collections that did not match.
-            </summary>
-            <param name="writer">The MessageWriter on which to display</param>
-            <param name="expected">The expected collection.</param>
-            <param name="actual">The actual collection</param>
-            <param name="depth">The depth of this failure in a set of nested collections</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionTypesAndSizes(NUnit.Framework.Constraints.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
-            <summary>
-            Displays a single line showing the types and sizes of the expected
-            and actual collections or arrays. If both are identical, the value is 
-            only shown once.
-            </summary>
-            <param name="writer">The MessageWriter on which to display</param>
-            <param name="expected">The expected collection or array</param>
-            <param name="actual">The actual collection or array</param>
-            <param name="indent">The indentation level for the message line</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayFailurePoint(NUnit.Framework.Constraints.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32,System.Int32)">
-            <summary>
-            Displays a single line showing the point in the expected and actual
-            arrays at which the comparison failed. If the arrays have different
-            structures or dimensions, both values are shown.
-            </summary>
-            <param name="writer">The MessageWriter on which to display</param>
-            <param name="expected">The expected array</param>
-            <param name="actual">The actual array</param>
-            <param name="failurePoint">Index of the failure point in the underlying collections</param>
-            <param name="indent">The indentation level for the message line</param>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.IgnoreCase">
-            <summary>
-            Flag the constraint to ignore case and return self.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.NoClip">
-            <summary>
-            Flag the constraint to suppress string clipping 
-            and return self.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.AsCollection">
-            <summary>
-            Flag the constraint to compare arrays as collections
-            and return self.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Ulps">
-            <summary>
-            Switches the .Within() modifier to interpret its tolerance as
-            a distance in representable values (see remarks).
-            </summary>
-            <returns>Self.</returns>
-            <remarks>
-            Ulp stands for "unit in the last place" and describes the minimum
-            amount a given value can change. For any integers, an ulp is 1 whole
-            digit. For floating point values, the accuracy of which is better
-            for smaller numbers and worse for larger numbers, an ulp depends
-            on the size of the number. Using ulps for comparison of floating
-            point results instead of fixed tolerances is safer because it will
-            automatically compensate for the added inaccuracy of larger numbers.
-            </remarks>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Percent">
-            <summary>
-            Switches the .Within() modifier to interpret its tolerance as
-            a percentage that the actual values is allowed to deviate from
-            the expected value.
-            </summary>
-            <returns>Self</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Days">
-            <summary>
-            Causes the tolerance to be interpreted as a TimeSpan in days.
-            </summary>
-            <returns>Self</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Hours">
-            <summary>
-            Causes the tolerance to be interpreted as a TimeSpan in hours.
-            </summary>
-            <returns>Self</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Minutes">
-            <summary>
-            Causes the tolerance to be interpreted as a TimeSpan in minutes.
-            </summary>
-            <returns>Self</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Seconds">
-            <summary>
-            Causes the tolerance to be interpreted as a TimeSpan in seconds.
-            </summary>
-            <returns>Self</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Milliseconds">
-            <summary>
-            Causes the tolerance to be interpreted as a TimeSpan in milliseconds.
-            </summary>
-            <returns>Self</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Ticks">
-            <summary>
-            Causes the tolerance to be interpreted as a TimeSpan in clock ticks.
-            </summary>
-            <returns>Self</returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EqualityAdapter">
-            <summary>
-            EqualityAdapter class handles all equality comparisons
-            that use an IEqualityComparer, IEqualityComparer&lt;T&gt;
-            or a ComparisonAdapter.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.ObjectsEqual(System.Object,System.Object)">
-            <summary>
-            Compares two objects, returning true if they are equal
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For(System.Collections.IComparer)">
-            <summary>
-            Returns an EqualityAdapter that wraps an IComparer.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For(System.Collections.IEqualityComparer)">
-            <summary>
-            Returns an EqualityAdapter that wraps an IEqualityComparer.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For``1(System.Collections.Generic.IEqualityComparer{``0})">
-            <summary>
-            Returns an EqualityAdapter that wraps an IEqualityComparer&lt;T&gt;.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Returns an EqualityAdapter that wraps an IComparer&lt;T&gt;.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For``1(System.Comparison{``0})">
-            <summary>
-            Returns an EqualityAdapter that wraps a Comparison&lt;T&gt;.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.FloatingPointNumerics">
-            <summary>Helper routines for working with floating point numbers</summary>
-            <remarks>
-              <para>
-                The floating point comparison code is based on this excellent article:
-                http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
-              </para>
-              <para>
-                "ULP" means Unit in the Last Place and in the context of this library refers to
-                the distance between two adjacent floating point numbers. IEEE floating point
-                numbers can only represent a finite subset of natural numbers, with greater
-                accuracy for smaller numbers and lower accuracy for very large numbers.
-              </para>
-              <para>
-                If a comparison is allowed "2 ulps" of deviation, that means the values are
-                allowed to deviate by up to 2 adjacent floating point values, which might be
-                as low as 0.0000001 for small numbers or as high as 10.0 for large numbers.
-              </para>
-            </remarks>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.AreAlmostEqualUlps(System.Single,System.Single,System.Int32)">
-            <summary>Compares two floating point values for equality</summary>
-            <param name="left">First floating point value to be compared</param>
-            <param name="right">Second floating point value t be compared</param>
-            <param name="maxUlps">
-              Maximum number of representable floating point values that are allowed to
-              be between the left and the right floating point values
-            </param>
-            <returns>True if both numbers are equal or close to being equal</returns>
-            <remarks>
-              <para>
-                Floating point values can only represent a finite subset of natural numbers.
-                For example, the values 2.00000000 and 2.00000024 can be stored in a float,
-                but nothing inbetween them.
-              </para>
-              <para>
-                This comparison will count how many possible floating point values are between
-                the left and the right number. If the number of possible values between both
-                numbers is less than or equal to maxUlps, then the numbers are considered as
-                being equal.
-              </para>
-              <para>
-                Implementation partially follows the code outlined here:
-                http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/
-              </para>
-            </remarks>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.AreAlmostEqualUlps(System.Double,System.Double,System.Int64)">
-            <summary>Compares two double precision floating point values for equality</summary>
-            <param name="left">First double precision floating point value to be compared</param>
-            <param name="right">Second double precision floating point value t be compared</param>
-            <param name="maxUlps">
-              Maximum number of representable double precision floating point values that are
-              allowed to be between the left and the right double precision floating point values
-            </param>
-            <returns>True if both numbers are equal or close to being equal</returns>
-            <remarks>
-              <para>
-                Double precision floating point values can only represent a limited series of
-                natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004
-                can be stored in a double, but nothing inbetween them.
-              </para>
-              <para>
-                This comparison will count how many possible double precision floating point
-                values are between the left and the right number. If the number of possible
-                values between both numbers is less than or equal to maxUlps, then the numbers
-                are considered as being equal.
-              </para>
-              <para>
-                Implementation partially follows the code outlined here:
-                http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/
-              </para>
-            </remarks>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsInt(System.Single)">
-            <summary>
-              Reinterprets the memory contents of a floating point value as an integer value
-            </summary>
-            <param name="value">
-              Floating point value whose memory contents to reinterpret
-            </param>
-            <returns>
-              The memory contents of the floating point value interpreted as an integer
-            </returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsLong(System.Double)">
-            <summary>
-              Reinterprets the memory contents of a double precision floating point
-              value as an integer value
-            </summary>
-            <param name="value">
-              Double precision floating point value whose memory contents to reinterpret
-            </param>
-            <returns>
-              The memory contents of the double precision floating point value
-              interpreted as an integer
-            </returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsFloat(System.Int32)">
-            <summary>
-              Reinterprets the memory contents of an integer as a floating point value
-            </summary>
-            <param name="value">Integer value whose memory contents to reinterpret</param>
-            <returns>
-              The memory contents of the integer value interpreted as a floating point value
-            </returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsDouble(System.Int64)">
-            <summary>
-              Reinterprets the memory contents of an integer value as a double precision
-              floating point value
-            </summary>
-            <param name="value">Integer whose memory contents to reinterpret</param>
-            <returns>
-              The memory contents of the integer interpreted as a double precision
-              floating point value
-            </returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion">
-            <summary>Union of a floating point variable and an integer</summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion.Float">
-            <summary>The union's value as a floating point variable</summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion.Int">
-            <summary>The union's value as an integer</summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion.UInt">
-            <summary>The union's value as an unsigned integer</summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion">
-            <summary>Union of a double precision floating point variable and a long</summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion.Double">
-            <summary>The union's value as a double precision floating point variable</summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion.Long">
-            <summary>The union's value as a long</summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion.ULong">
-            <summary>The union's value as an unsigned long</summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.MessageWriter">
-            <summary>
-            MessageWriter is the abstract base for classes that write
-            constraint descriptions and messages in some form. The
-            class has separate methods for writing various components
-            of a message, allowing implementations to tailor the
-            presentation as needed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.#ctor">
-            <summary>
-            Construct a MessageWriter given a culture
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteMessageLine(System.String,System.Object[])">
-            <summary>
-            Method to write single line  message with optional args, usually
-            written to precede the general failure message.
-            </summary>
-            <param name="message">The message to be written</param>
-            <param name="args">Any arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
-            <summary>
-            Method to write single line  message with optional args, usually
-            written to precede the general failure message, at a givel 
-            indentation level.
-            </summary>
-            <param name="level">The indentation level of the message</param>
-            <param name="message">The message to be written</param>
-            <param name="args">Any arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Display Expected and Actual lines for a constraint. This
-            is called by MessageWriter's default implementation of 
-            WriteMessageTo and provides the generic two-line display. 
-            </summary>
-            <param name="constraint">The constraint that failed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayDifferences(System.Object,System.Object)">
-            <summary>
-            Display Expected and Actual lines for given values. This
-            method may be called by constraints that need more control over
-            the display of actual and expected values than is provided
-            by the default implementation.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayDifferences(System.Object,System.Object,NUnit.Framework.Constraints.Tolerance)">
-            <summary>
-            Display Expected and Actual lines for given values, including
-            a tolerance value on the Expected line.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-            <param name="tolerance">The tolerance within which the test was made</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean,System.Boolean)">
-            <summary>
-            Display the expected and actual string values on separate lines.
-            If the mismatch parameter is >=0, an additional line is displayed
-            line containing a caret that points to the mismatch point.
-            </summary>
-            <param name="expected">The expected string value</param>
-            <param name="actual">The actual string value</param>
-            <param name="mismatch">The point at which the strings don't match or -1</param>
-            <param name="ignoreCase">If true, case is ignored in locating the point where the strings differ</param>
-            <param name="clipping">If true, the strings should be clipped to fit the line</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteConnector(System.String)">
-            <summary>
-            Writes the text for a connector.
-            </summary>
-            <param name="connector">The connector.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WritePredicate(System.String)">
-            <summary>
-            Writes the text for a predicate.
-            </summary>
-            <param name="predicate">The predicate.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteExpectedValue(System.Object)">
-            <summary>
-            Writes the text for an expected value.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteModifier(System.String)">
-            <summary>
-            Writes the text for a modifier
-            </summary>
-            <param name="modifier">The modifier.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteActualValue(System.Object)">
-            <summary>
-            Writes the text for an actual value.
-            </summary>
-            <param name="actual">The actual value.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteValue(System.Object)">
-            <summary>
-            Writes the text for a generalized value.
-            </summary>
-            <param name="val">The value.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
-            <summary>
-            Writes the text for a collection value,
-            starting at a particular point, to a max length
-            </summary>
-            <param name="collection">The collection containing elements to write.</param>
-            <param name="start">The starting point of the elements to write</param>
-            <param name="max">The maximum number of elements to write</param>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.MessageWriter.MaxLineLength">
-            <summary>
-            Abstract method to get the max line length
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.MsgUtils">
-            <summary>
-            Static methods used in creating messages
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.MsgUtils.ELLIPSIS">
-            <summary>
-            Static string used when strings are clipped
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MsgUtils.GetTypeRepresentation(System.Object)">
-            <summary>
-            Returns the representation of a type as used in NUnitLite.
-            This is the same as Type.ToString() except for arrays,
-            which are displayed with their declared sizes.
-            </summary>
-            <param name="obj"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MsgUtils.EscapeControlChars(System.String)">
-            <summary>
-            Converts any control characters in a string 
-            to their escaped representation.
-            </summary>
-            <param name="s">The string to be converted</param>
-            <returns>The converted string</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MsgUtils.GetArrayIndicesAsString(System.Int32[])">
-            <summary>
-            Return the a string representation for a set of indices into an array
-            </summary>
-            <param name="indices">Array of indices for which a string is needed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MsgUtils.GetArrayIndicesFromCollectionIndex(System.Collections.ICollection,System.Int32)">
-            <summary>
-            Get an array of indices representing the point in a collection or
-            array corresponding to a single int index into the collection.
-            </summary>
-            <param name="collection">The collection to which the indices apply</param>
-            <param name="index">Index in the collection</param>
-            <returns>Array of indices</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MsgUtils.ClipString(System.String,System.Int32,System.Int32)">
-            <summary>
-            Clip a string to a given length, starting at a particular offset, returning the clipped
-            string with ellipses representing the removed parts
-            </summary>
-            <param name="s">The string to be clipped</param>
-            <param name="maxStringLength">The maximum permitted length of the result string</param>
-            <param name="clipStart">The point at which to start clipping</param>
-            <returns>The clipped string</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MsgUtils.ClipExpectedAndActual(System.String@,System.String@,System.Int32,System.Int32)">
-            <summary>
-            Clip the expected and actual strings in a coordinated fashion, 
-            so that they may be displayed together.
-            </summary>
-            <param name="expected"></param>
-            <param name="actual"></param>
-            <param name="maxDisplayLength"></param>
-            <param name="mismatch"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.MsgUtils.FindMismatchPosition(System.String,System.String,System.Int32,System.Boolean)">
-            <summary>
-            Shows the position two strings start to differ.  Comparison 
-            starts at the start index.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="istart">The index in the strings at which comparison should start</param>
-            <param name="ignoreCase">Boolean indicating whether case should be ignored</param>
-            <returns>-1 if no mismatch found, or the index where mismatch found</returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.Numerics">
-            <summary>
-            The Numerics class contains common operations on numeric values.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.IsNumericType(System.Object)">
-            <summary>
-            Checks the type of the object, returning true if
-            the object is a numeric type.
-            </summary>
-            <param name="obj">The object to check</param>
-            <returns>true if the object is a numeric type</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.IsFloatingPointNumeric(System.Object)">
-            <summary>
-            Checks the type of the object, returning true if
-            the object is a floating point numeric type.
-            </summary>
-            <param name="obj">The object to check</param>
-            <returns>true if the object is a floating point numeric type</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.IsFixedPointNumeric(System.Object)">
-            <summary>
-            Checks the type of the object, returning true if
-            the object is a fixed point numeric type.
-            </summary>
-            <param name="obj">The object to check</param>
-            <returns>true if the object is a fixed point numeric type</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.AreEqual(System.Object,System.Object,NUnit.Framework.Constraints.Tolerance@)">
-            <summary>
-            Test two numeric values for equality, performing the usual numeric 
-            conversions and using a provided or default tolerance. If the tolerance 
-            provided is Empty, this method may set it to a default tolerance.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="tolerance">A reference to the tolerance in effect</param>
-            <returns>True if the values are equal</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Numerics.Compare(System.Object,System.Object)">
-            <summary>
-            Compare two numeric values, performing the usual numeric conversions.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <returns>The relationship of the values to each other</returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NUnitComparer">
-            <summary>
-            NUnitComparer encapsulates NUnit's default behavior
-            in comparing two objects.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NUnitComparer.Compare(System.Object,System.Object)">
-            <summary>
-            Compares two objects
-            </summary>
-            <param name="x"></param>
-            <param name="y"></param>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.NUnitComparer.Default">
-            <summary>
-            Returns the default NUnitComparer.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NUnitEqualityComparer">
-            <summary>
-            NUnitEqualityComparer encapsulates NUnit's handling of
-            equality tests between objects.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.caseInsensitive">
-            <summary>
-            If true, all string comparisons will ignore case
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.compareAsCollection">
-            <summary>
-            If true, arrays will be treated as collections, allowing
-            those of different dimensions to be compared
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.tolerance">
-            <summary>
-            If non-zero, equality comparisons within the specified 
-            tolerance will succeed.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.externalComparer">
-            <summary>
-            Comparison object used in comparisons for some constraints.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NUnitEqualityComparer.ObjectsEqual(System.Object,System.Object)">
-            <summary>
-            Compares two objects for equality.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NUnitEqualityComparer.ArraysEqual(System.Array,System.Array)">
-            <summary>
-            Helper method to compare two arrays
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NUnitEqualityComparer.DirectoriesEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
-            <summary>
-            Method to compare two DirectoryInfo objects
-            </summary>
-            <param name="x">first directory to compare</param>
-            <param name="y">second directory to compare</param>
-            <returns>true if equivalent, false if not</returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.Default">
-            <summary>
-            Returns the default NUnitEqualityComparer
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.IgnoreCase">
-            <summary>
-            Gets and sets a flag indicating whether case should
-            be ignored in determining equality.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.CompareAsCollection">
-            <summary>
-            Gets and sets a flag indicating that arrays should be
-            compared as collections, without regard to their shape.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.ExternalComparer">
-            <summary>
-            Gets and sets an external comparer to be used to
-            test for equality. It is applied to members of
-            collections, in place of NUnit's own logic.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.Tolerance">
-            <summary>
-            Gets and sets a tolerance used to compare objects of 
-            certin types.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.FailurePoints">
-            <summary>
-            Gets the list of failure points for the last Match performed.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PathConstraint">
-            <summary>
-            PathConstraint serves as the abstract base of constraints
-            that operate on paths and provides several helper methods.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.PathConstraint.expectedPath">
-            <summary>
-            The expected path used in the constraint
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.PathConstraint.actualPath">
-            <summary>
-            The actual path being tested
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.PathConstraint.caseInsensitive">
-            <summary>
-            Flag indicating whether a caseInsensitive comparison should be made
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.#ctor(System.String)">
-            <summary>
-            Construct a PathConstraint for a give expected path
-            </summary>
-            <param name="expected">The expected path</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsMatch(System.String,System.String)">
-            <summary>
-            Returns true if the expected path and actual path match
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of this constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.Canonicalize(System.String)">
-            <summary>
-            Canonicalize the provided path
-            </summary>
-            <param name="path"></param>
-            <returns>The path in standardized form</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsSamePath(System.String,System.String,System.Boolean)">
-            <summary>
-            Test whether two paths are the same
-            </summary>
-            <param name="path1">The first path</param>
-            <param name="path2">The second path</param>
-            <param name="ignoreCase">Indicates whether case should be ignored</param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsSubPath(System.String,System.String,System.Boolean)">
-            <summary>
-            Test whether one path is under another path
-            </summary>
-            <param name="path1">The first path - supposed to be the parent path</param>
-            <param name="path2">The second path - supposed to be the child path</param>
-            <param name="ignoreCase">Indicates whether case should be ignored</param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsSamePathOrUnder(System.String,System.String)">
-            <summary>
-            Test whether one path is the same as or under another path
-            </summary>
-            <param name="path1">The first path - supposed to be the parent path</param>
-            <param name="path2">The second path - supposed to be the child path</param>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.PathConstraint.IgnoreCase">
-            <summary>
-            Modifies the current instance to be case-insensitve
-            and returns it.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.PathConstraint.RespectCase">
-            <summary>
-            Modifies the current instance to be case-sensitve
-            and returns it.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SamePathConstraint">
-            <summary>
-            Summary description for SamePathConstraint.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SamePathConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:SamePathConstraint"/> class.
-            </summary>
-            <param name="expected">The expected path</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SamePathConstraint.IsMatch(System.String,System.String)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="expectedPath">The expected path</param>
-            <param name="actualPath">The actual path</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SamePathConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SubPathConstraint">
-            <summary>
-            SubPathConstraint tests that the actual path is under the expected path
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubPathConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:SubPathConstraint"/> class.
-            </summary>
-            <param name="expected">The expected path</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubPathConstraint.IsMatch(System.String,System.String)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="expectedPath">The expected path</param>
-            <param name="actualPath">The actual path</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubPathConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SamePathOrUnderConstraint">
-            <summary>
-            SamePathOrUnderConstraint tests that one path is under another
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SamePathOrUnderConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:SamePathOrUnderConstraint"/> class.
-            </summary>
-            <param name="expected">The expected path</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SamePathOrUnderConstraint.IsMatch(System.String,System.String)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="expectedPath">The expected path</param>
-            <param name="actualPath">The actual path</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SamePathOrUnderConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PredicateConstraint`1">
-            <summary>
-            Predicate constraint wraps a Predicate in a constraint,
-            returning success if the predicate is true.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PredicateConstraint`1.#ctor(System.Predicate{`0})">
-            <summary>
-            Construct a PredicateConstraint from a predicate
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PredicateConstraint`1.Matches(System.Object)">
-            <summary>
-            Determines whether the predicate succeeds when applied
-            to the actual value.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PredicateConstraint`1.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Writes the description to a MessageWriter
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NotConstraint">
-            <summary>
-            NotConstraint negates the effect of some other constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Initializes a new instance of the <see cref="T:NotConstraint"/> class.
-            </summary>
-            <param name="baseConstraint">The base constraint to be negated.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for if the base constraint fails, false if it succeeds</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a MessageWriter.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AllItemsConstraint">
-            <summary>
-            AllItemsConstraint applies another constraint to each
-            item in a collection, succeeding if they all succeed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct an AllItemsConstraint on top of an existing constraint
-            </summary>
-            <param name="itemConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.Matches(System.Object)">
-            <summary>
-            Apply the item constraint to each item in the collection,
-            failing if any item fails.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SomeItemsConstraint">
-            <summary>
-            SomeItemsConstraint applies another constraint to each
-            item in a collection, succeeding if any of them succeeds.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct a SomeItemsConstraint on top of an existing constraint
-            </summary>
-            <param name="itemConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.Matches(System.Object)">
-            <summary>
-            Apply the item constraint to each item in the collection,
-            succeeding if any item succeeds.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NoItemConstraint">
-            <summary>
-            NoItemConstraint applies another constraint to each
-            item in a collection, failing if any of them succeeds.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Construct a SomeItemsConstraint on top of an existing constraint
-            </summary>
-            <param name="itemConstraint"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.Matches(System.Object)">
-            <summary>
-            Apply the item constraint to each item in the collection,
-            failing if any item fails.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer"></param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PropertyExistsConstraint">
-            <summary>
-            PropertyExistsConstraint tests that a named property
-            exists on the object provided through Match.
-            
-            Originally, PropertyConstraint provided this feature
-            in addition to making optional tests on the vaue
-            of the property. The two constraints are now separate.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:PropertyExistConstraint"/> class.
-            </summary>
-            <param name="name">The name of the property.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the property exists for a given object
-            </summary>
-            <param name="actual">The object to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of the constraint.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.PropertyConstraint">
-            <summary>
-            PropertyConstraint extracts a named property and uses
-            its value as the actual value for a chained constraint.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.#ctor(System.String,NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Initializes a new instance of the <see cref="T:PropertyConstraint"/> class.
-            </summary>
-            <param name="name">The name.</param>
-            <param name="baseConstraint">The constraint to apply to the property.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of the constraint.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.RangeConstraint">
-            <summary>
-            RangeConstraint tests whethe two values are within a 
-            specified range.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RangeConstraint.#ctor(System.IComparable,System.IComparable)">
-            <summary>
-            Initializes a new instance of the <see cref="T:RangeConstraint"/> class.
-            </summary>
-            <param name="from">From.</param>
-            <param name="to">To.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RangeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Using(System.Collections.IComparer)">
-            <summary>
-            Modifies the constraint to use an IComparer and returns self.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
-            <summary>
-            Modifies the constraint to use an IComparer&lt;T&gt; and returns self.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Using``1(System.Comparison{``0})">
-            <summary>
-            Modifies the constraint to use a Comparison&lt;T&gt; and returns self.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ResolvableConstraintExpression">
-            <summary>
-            ResolvableConstraintExpression is used to represent a compound
-            constraint being constructed at a point where the last operator
-            may either terminate the expression or may have additional 
-            qualifying constraints added to it. 
-            
-            It is used, for example, for a Property element or for
-            an Exception element, either of which may be optionally
-            followed by constraints that apply to the property or 
-            exception.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ResolvableConstraintExpression.#ctor">
-            <summary>
-            Create a new instance of ResolvableConstraintExpression
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ResolvableConstraintExpression.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
-            <summary>
-            Create a new instance of ResolvableConstraintExpression,
-            passing in a pre-populated ConstraintBuilder.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ResolvableConstraintExpression.NUnit#Framework#Constraints#IResolveConstraint#Resolve">
-            <summary>
-            Resolve the current expression to a Constraint
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ResolvableConstraintExpression.And">
-            <summary>
-            Appends an And Operator to the expression
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ResolvableConstraintExpression.Or">
-            <summary>
-            Appends an Or operator to the expression.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ReusableConstraint">
-            <summary>
-            ReusableConstraint wraps a resolved constraint so that it
-            may be saved and reused as needed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.#ctor(NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Construct a ReusableConstraint
-            </summary>
-            <param name="c">The constraint or expression to be reused</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.op_Implicit(NUnit.Framework.Constraints.Constraint)~NUnit.Framework.Constraints.ReusableConstraint">
-            <summary>
-            Conversion operator from a normal constraint to a ReusableConstraint.
-            </summary>
-            <param name="c">The original constraint to be wrapped as a ReusableConstraint</param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.ToString">
-            <summary>
-            Returns the string representation of the constraint.
-            </summary>
-            <returns>A string representing the constraint</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.Resolve">
-            <summary>
-            Resolves the ReusableConstraint by returning the constraint
-            that it originally wrapped.
-            </summary>
-            <returns>A resolved constraint</returns>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SameAsConstraint">
-            <summary>
-            SameAsConstraint tests whether an object is identical to
-            the object passed to its constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:SameAsConstraint"/> class.
-            </summary>
-            <param name="expected">The expected object.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.BinarySerializableConstraint">
-            <summary>
-            BinarySerializableConstraint tests whether 
-            an object is serializable in binary format.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.XmlSerializableConstraint">
-            <summary>
-            BinarySerializableConstraint tests whether 
-            an object is serializable in binary format.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of this constraint
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.StringConstraint">
-            <summary>
-            StringConstraint is the abstract base for constraints
-            that operate on strings. It supports the IgnoreCase
-            modifier for string operations.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.StringConstraint.expected">
-            <summary>
-            The expected value
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.StringConstraint.caseInsensitive">
-            <summary>
-            Indicates whether tests should be case-insensitive
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.StringConstraint.#ctor(System.String)">
-            <summary>
-            Constructs a StringConstraint given an expected value
-            </summary>
-            <param name="expected">The expected value</param>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.StringConstraint.IgnoreCase">
-            <summary>
-            Modify the constraint to ignore case in matching.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EmptyStringConstraint">
-            <summary>
-            EmptyStringConstraint tests whether a string is empty.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyStringConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EmptyStringConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.NullOrEmptyStringConstraint">
-            <summary>
-            NullEmptyStringConstraint tests whether a string is either null or empty.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NullOrEmptyStringConstraint.#ctor">
-            <summary>
-            Constructs a new NullOrEmptyStringConstraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NullOrEmptyStringConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.NullOrEmptyStringConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.SubstringConstraint">
-            <summary>
-            SubstringConstraint can test whether a string contains
-            the expected substring.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:SubstringConstraint"/> class.
-            </summary>
-            <param name="expected">The expected.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.StartsWithConstraint">
-            <summary>
-            StartsWithConstraint can test whether a string starts
-            with an expected substring.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:StartsWithConstraint"/> class.
-            </summary>
-            <param name="expected">The expected string</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is matched by the actual value.
-            This is a template method, which calls the IsMatch method
-            of the derived class.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.EndsWithConstraint">
-            <summary>
-            EndsWithConstraint can test whether a string ends
-            with an expected substring.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:EndsWithConstraint"/> class.
-            </summary>
-            <param name="expected">The expected string</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is matched by the actual value.
-            This is a template method, which calls the IsMatch method
-            of the derived class.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.RegexConstraint">
-            <summary>
-            RegexConstraint can test whether a string matches
-            the pattern provided.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RegexConstraint.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:RegexConstraint"/> class.
-            </summary>
-            <param name="pattern">The pattern.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RegexConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True for success, false for failure</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.RegexConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ThrowsConstraint">
-            <summary>
-            ThrowsConstraint is used to test the exception thrown by 
-            a delegate by applying a constraint to it.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Initializes a new instance of the <see cref="T:ThrowsConstraint"/> class,
-            using a constraint to be applied to the exception.
-            </summary>
-            <param name="baseConstraint">A constraint to apply to the caught exception.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.Matches(System.Object)">
-            <summary>
-            Executes the code of the delegate and captures any exception.
-            If a non-null base constraint was provided, it applies that
-            constraint to the exception.
-            </summary>
-            <param name="actual">A delegate representing the code to be tested</param>
-            <returns>True if an exception is thrown and the constraint succeeds, otherwise false</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
-            <summary>
-            Converts an ActualValueDelegate to a TestDelegate
-            before calling the primary overload.
-            </summary>
-            <param name="del"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.GetStringRepresentation">
-            <summary>
-            Returns the string representation of this constraint
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.ThrowsConstraint.ActualException">
-            <summary>
-            Get the actual exception thrown - used by Assert.Throws.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ThrowsNothingConstraint">
-            <summary>
-            ThrowsNothingConstraint tests that a delegate does not
-            throw an exception.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.Matches(System.Object)">
-            <summary>
-            Test whether the constraint is satisfied by a given value
-            </summary>
-            <param name="actual">The value to be tested</param>
-            <returns>True if no exception is thrown, otherwise false</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
-            <summary>
-            Converts an ActualValueDelegate to a TestDelegate
-            before calling the primary overload.
-            </summary>
-            <param name="del"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the constraint description to a MessageWriter
-            </summary>
-            <param name="writer">The writer on which the description is displayed</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. The default implementation simply writes
-            the raw value of actual, leaving it to the writer to
-            perform any formatting.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ToleranceMode">
-            <summary>
-            Modes in which the tolerance value for a comparison can
-            be interpreted.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ToleranceMode.None">
-            <summary>
-            The tolerance was created with a value, without specifying 
-            how the value would be used. This is used to prevent setting
-            the mode more than once and is generally changed to Linear
-            upon execution of the test.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ToleranceMode.Linear">
-            <summary>
-            The tolerance is used as a numeric range within which
-            two compared values are considered to be equal.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ToleranceMode.Percent">
-            <summary>
-            Interprets the tolerance as the percentage by which
-            the two compared values my deviate from each other.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.ToleranceMode.Ulps">
-            <summary>
-            Compares two values based in their distance in
-            representable numbers.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.Tolerance">
-            <summary>
-            The Tolerance class generalizes the notion of a tolerance
-            within which an equality test succeeds. Normally, it is
-            used with numeric types, but it can be used with any
-            type that supports taking a difference between two 
-            objects and comparing that difference to a value.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Tolerance.#ctor(System.Object)">
-            <summary>
-            Constructs a linear tolerance of a specdified amount
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Tolerance.#ctor(System.Object,NUnit.Framework.Constraints.ToleranceMode)">
-            <summary>
-            Constructs a tolerance given an amount and ToleranceMode
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.Tolerance.CheckLinearAndNumeric">
-            <summary>
-            Tests that the current Tolerance is linear with a 
-            numeric value, throwing an exception if it is not.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Empty">
-            <summary>
-            Returns an empty Tolerance object, equivalent to 
-            specifying an exact match.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Mode">
-            <summary>
-            Gets the ToleranceMode for the current Tolerance
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Value">
-            <summary>
-            Gets the value of the current Tolerance instance.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Percent">
-            <summary>
-            Returns a new tolerance, using the current amount as a percentage.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Ulps">
-            <summary>
-            Returns a new tolerance, using the current amount in Ulps.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Days">
-            <summary>
-            Returns a new tolerance with a TimeSpan as the amount, using 
-            the current amount as a number of days.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Hours">
-            <summary>
-            Returns a new tolerance with a TimeSpan as the amount, using 
-            the current amount as a number of hours.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Minutes">
-            <summary>
-            Returns a new tolerance with a TimeSpan as the amount, using 
-            the current amount as a number of minutes.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Seconds">
-            <summary>
-            Returns a new tolerance with a TimeSpan as the amount, using 
-            the current amount as a number of seconds.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Milliseconds">
-            <summary>
-            Returns a new tolerance with a TimeSpan as the amount, using 
-            the current amount as a number of milliseconds.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.Ticks">
-            <summary>
-            Returns a new tolerance with a TimeSpan as the amount, using 
-            the current amount as a number of clock ticks.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Constraints.Tolerance.IsEmpty">
-            <summary>
-            Returns true if the current tolerance is empty.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.TypeConstraint">
-            <summary>
-            TypeConstraint is the abstract base for constraints
-            that take a Type as their expected value.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.Constraints.TypeConstraint.expectedType">
-            <summary>
-            The expected Type used by the constraint
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.TypeConstraint.#ctor(System.Type)">
-            <summary>
-            Construct a TypeConstraint for a given Type
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.TypeConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the actual value for a failing constraint test to a
-            MessageWriter. TypeConstraints override this method to write
-            the name of the type.
-            </summary>
-            <param name="writer">The writer on which the actual value is displayed</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.ExactTypeConstraint">
-            <summary>
-            ExactTypeConstraint is used to test that an object
-            is of the exact type provided in the constructor
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.#ctor(System.Type)">
-            <summary>
-            Construct an ExactTypeConstraint for a given Type
-            </summary>
-            <param name="type">The expected Type.</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.Matches(System.Object)">
-            <summary>
-            Test that an object is of the exact type specified
-            </summary>
-            <param name="actual">The actual value.</param>
-            <returns>True if the tested object is of the exact type provided, otherwise false.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write the description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to use</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.InstanceOfTypeConstraint">
-            <summary>
-            InstanceOfTypeConstraint is used to test that an object
-            is of the same type provided or derived from it.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.#ctor(System.Type)">
-            <summary>
-            Construct an InstanceOfTypeConstraint for the type provided
-            </summary>
-            <param name="type">The expected Type</param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.Matches(System.Object)">
-            <summary>
-            Test whether an object is of the specified type or a derived type
-            </summary>
-            <param name="actual">The object to be tested</param>
-            <returns>True if the object is of the provided type or derives from it, otherwise false.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to use</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AssignableFromConstraint">
-            <summary>
-            AssignableFromConstraint is used to test that an object
-            can be assigned from a given Type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.#ctor(System.Type)">
-            <summary>
-            Construct an AssignableFromConstraint for the type provided
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.Matches(System.Object)">
-            <summary>
-            Test whether an object can be assigned from the specified type
-            </summary>
-            <param name="actual">The object to be tested</param>
-            <returns>True if the object can be assigned a value of the expected Type, otherwise false.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to use</param>
-        </member>
-        <member name="T:NUnit.Framework.Constraints.AssignableToConstraint">
-            <summary>
-            AssignableToConstraint is used to test that an object
-            can be assigned to a given Type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableToConstraint.#ctor(System.Type)">
-            <summary>
-            Construct an AssignableToConstraint for the type provided
-            </summary>
-            <param name="type"></param>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableToConstraint.Matches(System.Object)">
-            <summary>
-            Test whether an object can be assigned to the specified type
-            </summary>
-            <param name="actual">The object to be tested</param>
-            <returns>True if the object can be assigned a value of the expected Type, otherwise false.</returns>
-        </member>
-        <member name="M:NUnit.Framework.Constraints.AssignableToConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
-            <summary>
-            Write a description of this constraint to a MessageWriter
-            </summary>
-            <param name="writer">The MessageWriter to use</param>
-        </member>
-        <member name="T:NUnit.Framework.AssertionException">
-            <summary>
-            Thrown when an assertion failed.
-            </summary>
-            
-        </member>
-        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String,System.Exception)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-            <param name="inner">The exception that caused the 
-            current exception</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Serialization Constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IgnoreException">
-            <summary>
-            Thrown when an assertion failed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String)">
-            <param name="message"></param>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String,System.Exception)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-            <param name="inner">The exception that caused the 
-            current exception</param>
-        </member>
-        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Serialization Constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.InconclusiveException">
-            <summary>
-            Thrown when a test executes inconclusively.
-            </summary>
-            
-        </member>
-        <member name="M:NUnit.Framework.InconclusiveException.#ctor(System.String)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-        </member>
-        <member name="M:NUnit.Framework.InconclusiveException.#ctor(System.String,System.Exception)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-            <param name="inner">The exception that caused the 
-            current exception</param>
-        </member>
-        <member name="M:NUnit.Framework.InconclusiveException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Serialization Constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SuccessException">
-            <summary>
-            Thrown when an assertion failed.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.SuccessException.#ctor(System.String)">
-            <param name="message"></param>
-        </member>
-        <member name="M:NUnit.Framework.SuccessException.#ctor(System.String,System.Exception)">
-            <param name="message">The error message that explains 
-            the reason for the exception</param>
-            <param name="inner">The exception that caused the 
-            current exception</param>
-        </member>
-        <member name="M:NUnit.Framework.SuccessException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Serialization Constructor
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestDelegate">
-            <summary>
-            Delegate used by tests that execute code and
-            capture any thrown exception.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Assert">
-            <summary>
-            The Assert class contains a collection of static methods that
-            implement the most common assertions used in NUnit.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.#ctor">
-            <summary>
-            We don't actually want any instances of this object, but some people
-            like to inherit from it to add other static methods. Hence, the
-            protected constructor disallows any instances of this object. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AssertDoublesAreEqual(System.Double,System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Helper for Assert.AreEqual(double expected, double actual, ...)
-            allowing code generation to work consistently.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Pass(System.String,System.Object[])">
-            <summary>
-            Throws a <see cref="T:NUnit.Framework.SuccessException"/> with the message and arguments 
-            that are passed in. This allows a test to be cut short, with a result
-            of success returned to NUnit.
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Pass(System.String)">
-            <summary>
-            Throws a <see cref="T:NUnit.Framework.SuccessException"/> with the message and arguments 
-            that are passed in. This allows a test to be cut short, with a result
-            of success returned to NUnit.
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Pass">
-            <summary>
-            Throws a <see cref="T:NUnit.Framework.SuccessException"/> with the message and arguments 
-            that are passed in. This allows a test to be cut short, with a result
-            of success returned to NUnit.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Fail(System.String,System.Object[])">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message and arguments 
-            that are passed in. This is used by the other Assert functions. 
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Fail(System.String)">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message that is 
-            passed in. This is used by the other Assert functions. 
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Fail">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.AssertionException"/>. 
-            This is used by the other Assert functions. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Ignore(System.String,System.Object[])">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message and arguments 
-            that are passed in.  This causes the test to be reported as ignored.
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Ignore(System.String)">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message that is 
-            passed in. This causes the test to be reported as ignored. 
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Ignore">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.IgnoreException"/>. 
-            This causes the test to be reported as ignored. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Inconclusive(System.String,System.Object[])">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.InconclusiveException"/> with the message and arguments 
-            that are passed in.  This causes the test to be reported as inconclusive.
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.InconclusiveException"/> with.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Inconclusive(System.String)">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.InconclusiveException"/> with the message that is 
-            passed in. This causes the test to be reported as inconclusive. 
-            </summary>
-            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.InconclusiveException"/> with.</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Inconclusive">
-            <summary>
-            Throws an <see cref="T:NUnit.Framework.InconclusiveException"/>. 
-            This causes the test to be reported as Inconclusive. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expression">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expression">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expression">A Constraint expression to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expression">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expression">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expression">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.TestDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Asserts that the code represented by a delegate throws an exception
-            that satisfies the constraint provided.
-            </summary>
-            <param name="code">A TestDelegate to be executed</param>
-            <param name="constraint">A ThrowsConstraint used in the test</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws(NUnit.Framework.Constraints.IResolveConstraint,NUnit.Framework.TestDelegate,System.String,System.Object[])">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <param name="expression">A constraint to be satisfied by the exception</param>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws(NUnit.Framework.Constraints.IResolveConstraint,NUnit.Framework.TestDelegate,System.String)">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <param name="expression">A constraint to be satisfied by the exception</param>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws(NUnit.Framework.Constraints.IResolveConstraint,NUnit.Framework.TestDelegate)">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <param name="expression">A constraint to be satisfied by the exception</param>
-            <param name="code">A TestSnippet delegate</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws(System.Type,NUnit.Framework.TestDelegate,System.String,System.Object[])">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <param name="expectedExceptionType">The exception Type expected</param>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws(System.Type,NUnit.Framework.TestDelegate,System.String)">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <param name="expectedExceptionType">The exception Type expected</param>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws(System.Type,NUnit.Framework.TestDelegate)">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <param name="expectedExceptionType">The exception Type expected</param>
-            <param name="code">A TestSnippet delegate</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws``1(NUnit.Framework.TestDelegate,System.String,System.Object[])">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <typeparam name="T">Type of the expected exception</typeparam>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws``1(NUnit.Framework.TestDelegate,System.String)">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <typeparam name="T">Type of the expected exception</typeparam>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Throws``1(NUnit.Framework.TestDelegate)">
-            <summary>
-            Verifies that a delegate throws a particular exception when called.
-            </summary>
-            <typeparam name="T">Type of the expected exception</typeparam>
-            <param name="code">A TestSnippet delegate</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch(NUnit.Framework.TestDelegate,System.String,System.Object[])">
-            <summary>
-            Verifies that a delegate throws an exception when called
-            and returns it.
-            </summary>
-            <param name="code">A TestDelegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch(NUnit.Framework.TestDelegate,System.String)">
-            <summary>
-            Verifies that a delegate throws an exception when called
-            and returns it.
-            </summary>
-            <param name="code">A TestDelegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch(NUnit.Framework.TestDelegate)">
-            <summary>
-            Verifies that a delegate throws an exception when called
-            and returns it.
-            </summary>
-            <param name="code">A TestDelegate</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch(System.Type,NUnit.Framework.TestDelegate,System.String,System.Object[])">
-            <summary>
-            Verifies that a delegate throws an exception of a certain Type
-            or one derived from it when called and returns it.
-            </summary>
-            <param name="expectedExceptionType">The expected Exception Type</param>
-            <param name="code">A TestDelegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch(System.Type,NUnit.Framework.TestDelegate,System.String)">
-            <summary>
-            Verifies that a delegate throws an exception of a certain Type
-            or one derived from it when called and returns it.
-            </summary>
-            <param name="expectedExceptionType">The expected Exception Type</param>
-            <param name="code">A TestDelegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch(System.Type,NUnit.Framework.TestDelegate)">
-            <summary>
-            Verifies that a delegate throws an exception of a certain Type
-            or one derived from it when called and returns it.
-            </summary>
-            <param name="expectedExceptionType">The expected Exception Type</param>
-            <param name="code">A TestDelegate</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch``1(NUnit.Framework.TestDelegate,System.String,System.Object[])">
-            <summary>
-            Verifies that a delegate throws an exception of a certain Type
-            or one derived from it when called and returns it.
-            </summary>
-            <typeparam name="T">The expected Exception Type</typeparam>
-            <param name="code">A TestDelegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch``1(NUnit.Framework.TestDelegate,System.String)">
-            <summary>
-            Verifies that a delegate throws an exception of a certain Type
-            or one derived from it when called and returns it.
-            </summary>
-            <typeparam name="T">The expected Exception Type</typeparam>
-            <param name="code">A TestDelegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Catch``1(NUnit.Framework.TestDelegate)">
-            <summary>
-            Verifies that a delegate throws an exception of a certain Type
-            or one derived from it when called and returns it.
-            </summary>
-            <typeparam name="T">The expected Exception Type</typeparam>
-            <param name="code">A TestDelegate</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.DoesNotThrow(NUnit.Framework.TestDelegate,System.String,System.Object[])">
-            <summary>
-            Verifies that a delegate does not throw an exception
-            </summary>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.DoesNotThrow(NUnit.Framework.TestDelegate,System.String)">
-            <summary>
-            Verifies that a delegate does not throw an exception.
-            </summary>
-            <param name="code">A TestSnippet delegate</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.DoesNotThrow(NUnit.Framework.TestDelegate)">
-            <summary>
-            Verifies that a delegate does not throw an exception.
-            </summary>
-            <param name="code">A TestSnippet delegate</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.True(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.True(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.True(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.False(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.False(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.False(System.Boolean)">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean)">
-            <summary>
-            Asserts that a condition is false. If the condition is true the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.NotNull(System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.NotNull(System.Object,System.String)">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.NotNull(System.Object)">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String)">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object)">
-            <summary>
-            Verifies that the object that is passed in is not equal to <code>null</code>
-            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Null(System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Null(System.Object,System.String)">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Null(System.Object)">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String)">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNull(System.Object)">
-            <summary>
-            Verifies that the object that is passed in is equal to <code>null</code>
-            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="anObject">The object that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the double that is passed in is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The value that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String)">
-            <summary>
-            Verifies that the double that is passed in is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The value that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double)">
-            <summary>
-            Verifies that the double that is passed in is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The value that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Nullable{System.Double},System.String,System.Object[])">
-            <summary>
-            Verifies that the double that is passed in is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The value that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Nullable{System.Double},System.String)">
-            <summary>
-            Verifies that the double that is passed in is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The value that is to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNaN(System.Nullable{System.Double})">
-            <summary>
-            Verifies that the double that is passed in is an <code>NaN</code> value.
-            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
-            is thrown.
-            </summary>
-            <param name="aDouble">The value that is to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Assert that a string is empty - that is equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String)">
-            <summary>
-            Assert that a string is empty - that is equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String)">
-            <summary>
-            Assert that a string is empty - that is equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Assert that a string is not empty - that is not equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String)">
-            <summary>
-            Assert that a string is not empty - that is not equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String)">
-            <summary>
-            Assert that a string is not empty - that is not equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is not empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String)">
-            <summary>
-            Assert that an array, list or other collection is not empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection)">
-            <summary>
-            Assert that an array, list or other collection is not empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing ICollection</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNullOrEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Assert that a string is either null or equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNullOrEmpty(System.String,System.String)">
-            <summary>
-            Assert that a string is either null or equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNullOrEmpty(System.String)">
-            <summary>
-            Assert that a string is either null or equal to string.Empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNullOrEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Assert that a string is not null or empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNullOrEmpty(System.String,System.String)">
-            <summary>
-            Assert that a string is not null or empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotNullOrEmpty(System.String)">
-            <summary>
-            Assert that a string is not null or empty
-            </summary>
-            <param name="aString">The string to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object)">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom``1(System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <typeparam name="T">The expected Type.</typeparam>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom``1(System.Object,System.String)">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <typeparam name="T">The expected Type.</typeparam>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsAssignableFrom``1(System.Object)">
-            <summary>
-            Asserts that an object may be assigned a  value of a given Type.
-            </summary>
-            <typeparam name="T">The expected Type.</typeparam>
-            <param name="actual">The object under examination</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object)">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <param name="expected">The expected Type.</param>
-            <param name="actual">The object under examination</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom``1(System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <typeparam name="T">The expected Type.</typeparam>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom``1(System.Object,System.String)">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <typeparam name="T">The expected Type.</typeparam>
-            <param name="actual">The object under examination</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom``1(System.Object)">
-            <summary>
-            Asserts that an object may not be assigned a  value of a given Type.
-            </summary>
-            <typeparam name="T">The expected Type.</typeparam>
-            <param name="actual">The object under examination</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOf(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOf(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOf(System.Type,System.Object)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOf``1(System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <typeparam name="T">The expected Type</typeparam>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOf``1(System.Object,System.String)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <typeparam name="T">The expected Type</typeparam>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsInstanceOf``1(System.Object)">
-            <summary>
-            Asserts that an object is an instance of a given type.
-            </summary>
-            <typeparam name="T">The expected Type</typeparam>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf(System.Type,System.Object)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <param name="expected">The expected Type</param>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf``1(System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <typeparam name="T">The expected Type</typeparam>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf``1(System.Object,System.String)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <typeparam name="T">The expected Type</typeparam>
-            <param name="actual">The object being examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf``1(System.Object)">
-            <summary>
-            Asserts that an object is not an instance of a given type.
-            </summary>
-            <typeparam name="T">The expected Type</typeparam>
-            <param name="actual">The object being examined</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that two values are equal. If they are not, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double)">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Nullable{System.Double},System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Nullable{System.Double},System.Double,System.String)">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Nullable{System.Double},System.Double)">
-            <summary>
-            Verifies that two doubles are equal considering a delta. If the
-            expected value is infinity then the delta value is ignored. If 
-            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
-            thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="delta">The maximum acceptable difference between the
-            the expected and the actual</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that two objects are equal.  Two objects are considered
-            equal if both are null, or if both have the same value. NUnit
-            has special semantics for some object types.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String)">
-            <summary>
-            Verifies that two objects are equal.  Two objects are considered
-            equal if both are null, or if both have the same value. NUnit
-            has special semantics for some object types.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object)">
-            <summary>
-            Verifies that two objects are equal.  Two objects are considered
-            equal if both are null, or if both have the same value. NUnit
-            has special semantics for some object types.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double)">
-            <summary>
-            Verifies that two values are not equal. If they are equal, then an 
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Verifies that two objects are not equal.  Two objects are considered
-            equal if both are null, or if both have the same value. NUnit
-            has special semantics for some object types.
-            If they are equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String)">
-            <summary>
-            Verifies that two objects are not equal.  Two objects are considered
-            equal if both are null, or if both have the same value. NUnit
-            has special semantics for some object types.
-            If they are equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object)">
-            <summary>
-            Verifies that two objects are not equal.  Two objects are considered
-            equal if both are null, or if both have the same value. NUnit
-            has special semantics for some object types.
-            If they are equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The value that is expected</param>
-            <param name="actual">The actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that two objects refer to the same object. If they
-            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String)">
-            <summary>
-            Asserts that two objects refer to the same object. If they
-            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object)">
-            <summary>
-            Asserts that two objects refer to the same object. If they
-            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that two objects do not refer to the same object. If they
-            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String)">
-            <summary>
-            Asserts that two objects do not refer to the same object. If they
-            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object)">
-            <summary>
-            Asserts that two objects do not refer to the same object. If they
-            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The actual object</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is greater than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is less than the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is greater than or equal tothe second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be greater</param>
-            <param name="arg2">The second value, expected to be less</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable)">
-            <summary>
-            Verifies that the first value is less than or equal to the second
-            value. If it is not, then an
-            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
-            </summary>
-            <param name="arg1">The first value, expected to be less</param>
-            <param name="arg2">The second value, expected to be greater</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String,System.Object[])">
-            <summary>
-            Asserts that an object is contained in a list.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The list to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Array of objects to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String)">
-            <summary>
-            Asserts that an object is contained in a list.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The list to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection)">
-            <summary>
-            Asserts that an object is contained in a list.
-            </summary>
-            <param name="expected">The expected object</param>
-            <param name="actual">The list to be examined</param>
-        </member>
-        <member name="P:NUnit.Framework.Assert.Counter">
-            <summary>
-            Gets the number of assertions executed so far and 
-            resets the counter to zero.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.AssertionHelper">
-            <summary>
-            AssertionHelper is an optional base class for user tests,
-            allowing the use of shorter names for constraints and
-            asserts and avoiding conflict with the definition of 
-            <see cref="T:NUnit.Framework.Is"/>, from which it inherits much of its
-            behavior, in certain mock object frameworks.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure. Works
-            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint)"/>
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure. Works
-            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)"/>
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure. Works
-            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])"/>
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect``1(``0@,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="constraint">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an assertion exception on failure.
-            </summary>
-            <param name="expression">A Constraint to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
-            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
-            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String)"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to <see cref="M:NUnit.Framework.Assert.That(System.Boolean)"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.TestDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Asserts that the code represented by a delegate throws an exception
-            that satisfies the constraint provided.
-            </summary>
-            <param name="code">A TestDelegate to be executed</param>
-            <param name="constraint">A ThrowsConstraint used in the test</param>
-        </member>
-        <member name="M:NUnit.Framework.AssertionHelper.Map(System.Collections.ICollection)">
-            <summary>
-            Returns a ListMapper based on a collection.
-            </summary>
-            <param name="original">The original collection</param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.Assume">
-            <summary>
-            Provides static methods to express the assumptions
-            that must be met for a test to give a meaningful
-            result. If an assumption is not met, the test
-            should produce an inconclusive result.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Assume.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expression">A Constraint expression to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expression">A Constraint expression to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expression">A Constraint expression to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to an actual value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="del">An ActualValueDelegate returning the value to be tested</param>
-            <param name="expr">A Constraint expression to be applied</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expression">A Constraint expression to be applied</param>
-            <param name="actual">The actual value to test</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expression">A Constraint expression to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
-            <summary>
-            Apply a constraint to a referenced value, succeeding if the constraint
-            is satisfied and throwing an InconclusiveException on failure.
-            </summary>
-            <param name="expression">A Constraint expression to be applied</param>
-            <param name="actual">The actual value to test</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(System.Boolean,System.String,System.Object[])">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.InconclusiveException"/>.
-            </summary> 
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(System.Boolean,System.String)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the method throws
-            an <see cref="T:NUnit.Framework.InconclusiveException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-            <param name="message">The message to display if the condition is false</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(System.Boolean)">
-            <summary>
-            Asserts that a condition is true. If the condition is false the 
-            method throws an <see cref="T:NUnit.Framework.InconclusiveException"/>.
-            </summary>
-            <param name="condition">The evaluated condition</param>
-        </member>
-        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.TestDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
-            <summary>
-            Asserts that the code represented by a delegate throws an exception
-            that satisfies the constraint provided.
-            </summary>
-            <param name="code">A TestDelegate to be executed</param>
-            <param name="constraint">A ThrowsConstraint used in the test</param>
-        </member>
-        <member name="T:NUnit.Framework.CollectionAssert">
-            <summary>
-            A set of Assert methods operationg on one or more collections
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.IEnumerable,System.Type)">
-            <summary>
-            Asserts that all items contained in collection are of the type specified by expectedType.
-            </summary>
-            <param name="collection">IEnumerable containing objects to be considered</param>
-            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.IEnumerable,System.Type,System.String)">
-            <summary>
-            Asserts that all items contained in collection are of the type specified by expectedType.
-            </summary>
-            <param name="collection">IEnumerable containing objects to be considered</param>
-            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.IEnumerable,System.Type,System.String,System.Object[])">
-            <summary>
-            Asserts that all items contained in collection are of the type specified by expectedType.
-            </summary>
-            <param name="collection">IEnumerable containing objects to be considered</param>
-            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.IEnumerable)">
-            <summary>
-            Asserts that all items contained in collection are not equal to null.
-            </summary>
-            <param name="collection">IEnumerable containing objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.IEnumerable,System.String)">
-            <summary>
-            Asserts that all items contained in collection are not equal to null.
-            </summary>
-            <param name="collection">IEnumerable containing objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Asserts that all items contained in collection are not equal to null.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.IEnumerable)">
-            <summary>
-            Ensures that every object contained in collection exists within the collection
-            once and only once.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.IEnumerable,System.String)">
-            <summary>
-            Ensures that every object contained in collection exists within the collection
-            once and only once.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Ensures that every object contained in collection exists within the collection
-            once and only once.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String)">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-            and contain the exact same objects in the same order.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable)">
-            <summary>
-            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
-            <summary>
-            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String)">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are not exactly equal.
-            If comparer is not null then it will be used to compare the objects.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable)">
-            <summary>
-            Asserts that expected and actual are not equivalent.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
-            <summary>
-            Asserts that expected and actual are not equivalent.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Asserts that expected and actual are not equivalent.
-            </summary>
-            <param name="expected">The first IEnumerable of objects to be considered</param>
-            <param name="actual">The second IEnumerable of objects to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.IEnumerable,System.Object)">
-            <summary>
-            Asserts that collection contains actual as an item.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="actual">Object to be found within collection</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.IEnumerable,System.Object,System.String)">
-            <summary>
-            Asserts that collection contains actual as an item.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="actual">Object to be found within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.IEnumerable,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that collection contains actual as an item.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="actual">Object to be found within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.IEnumerable,System.Object)">
-            <summary>
-            Asserts that collection does not contain actual as an item.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="actual">Object that cannot exist within collection</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.IEnumerable,System.Object,System.String)">
-            <summary>
-            Asserts that collection does not contain actual as an item.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="actual">Object that cannot exist within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.IEnumerable,System.Object,System.String,System.Object[])">
-            <summary>
-            Asserts that collection does not contain actual as an item.
-            </summary>
-            <param name="collection">IEnumerable of objects to be considered</param>
-            <param name="actual">Object that cannot exist within collection</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable)">
-            <summary>
-            Asserts that superset is not a subject of subset.
-            </summary>
-            <param name="subset">The IEnumerable superset to be considered</param>
-            <param name="superset">The IEnumerable subset to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
-            <summary>
-            Asserts that superset is not a subject of subset.
-            </summary>
-            <param name="subset">The IEnumerable superset to be considered</param>
-            <param name="superset">The IEnumerable subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Asserts that superset is not a subject of subset.
-            </summary>
-            <param name="subset">The IEnumerable superset to be considered</param>
-            <param name="superset">The IEnumerable subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable)">
-            <summary>
-            Asserts that superset is a subset of subset.
-            </summary>
-            <param name="subset">The IEnumerable superset to be considered</param>
-            <param name="superset">The IEnumerable subset to be considered</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
-            <summary>
-            Asserts that superset is a subset of subset.
-            </summary>
-            <param name="subset">The IEnumerable superset to be considered</param>
-            <param name="superset">The IEnumerable subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Asserts that superset is a subset of subset.
-            </summary>
-            <param name="subset">The IEnumerable superset to be considered</param>
-            <param name="superset">The IEnumerable subset to be considered</param>
-            <param name="message">The message that will be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.IEnumerable,System.String)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.IEnumerable)">
-            <summary>
-            Assert that an array,list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.IEnumerable,System.String)">
-            <summary>
-            Assert that an array, list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.IEnumerable)">
-            <summary>
-            Assert that an array,list or other collection is empty
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is ordered
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.String)">
-            <summary>
-            Assert that an array, list or other collection is ordered
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable)">
-            <summary>
-            Assert that an array, list or other collection is ordered
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.Collections.IComparer,System.String,System.Object[])">
-            <summary>
-            Assert that an array, list or other collection is ordered
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="comparer">A custom comparer to perform the comparisons</param>
-            <param name="message">The message to be displayed on failure</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.Collections.IComparer,System.String)">
-            <summary>
-            Assert that an array, list or other collection is ordered
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="comparer">A custom comparer to perform the comparisons</param>
-            <param name="message">The message to be displayed on failure</param>
-        </member>
-        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.Collections.IComparer)">
-            <summary>
-            Assert that an array, list or other collection is ordered
-            </summary>
-            <param name="collection">An array, list or other collection implementing IEnumerable</param>
-            <param name="comparer">A custom comparer to perform the comparisons</param>
-        </member>
-        <member name="T:NUnit.Framework.Contains">
-            <summary>
-            Static helper class used in the constraint-based syntax
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Contains.Substring(System.String)">
-            <summary>
-            Creates a new SubstringConstraint
-            </summary>
-            <param name="substring">The value of the substring</param>
-            <returns>A SubstringConstraint</returns>
-        </member>
-        <member name="M:NUnit.Framework.Contains.Item(System.Object)">
-            <summary>
-            Creates a new CollectionContainsConstraint.
-            </summary>
-            <param name="item">The item that should be found.</param>
-            <returns>A new CollectionContainsConstraint</returns>
-        </member>
-        <member name="T:NUnit.Framework.DirectoryAssert">
-            <summary>
-            Summary description for DirectoryAssert
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.#ctor">
-            <summary>
-            We don't actually want any instances of this object, but some people
-            like to inherit from it to add other static methods. Hence, the
-            protected constructor disallows any instances of this object. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
-            <summary>
-            Verifies that two directories are equal.  Two directories are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory containing the value that is expected</param>
-            <param name="actual">A directory containing the actual value</param>
-            <param name="message">The message to display if directories are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
-            <summary>
-            Verifies that two directories are equal.  Two directories are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory containing the value that is expected</param>
-            <param name="actual">A directory containing the actual value</param>
-            <param name="message">The message to display if directories are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
-            <summary>
-            Verifies that two directories are equal.  Two directories are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory containing the value that is expected</param>
-            <param name="actual">A directory containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Verifies that two directories are equal.  Two directories are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory path string containing the value that is expected</param>
-            <param name="actual">A directory path string containing the actual value</param>
-            <param name="message">The message to display if directories are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.String,System.String,System.String)">
-            <summary>
-            Verifies that two directories are equal.  Two directories are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory path string containing the value that is expected</param>
-            <param name="actual">A directory path string containing the actual value</param>
-            <param name="message">The message to display if directories are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.String,System.String)">
-            <summary>
-            Verifies that two directories are equal.  Two directories are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory path string containing the value that is expected</param>
-            <param name="actual">A directory path string containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
-            <summary>
-            Asserts that two directories are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory containing the value that is expected</param>
-            <param name="actual">A directory containing the actual value</param>
-            <param name="message">The message to display if directories are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
-            <summary>
-            Asserts that two directories are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory containing the value that is expected</param>
-            <param name="actual">A directory containing the actual value</param>
-            <param name="message">The message to display if directories are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
-            <summary>
-            Asserts that two directories are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory containing the value that is expected</param>
-            <param name="actual">A directory containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that two directories are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory path string containing the value that is expected</param>
-            <param name="actual">A directory path string containing the actual value</param>
-            <param name="message">The message to display if directories are equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.String,System.String,System.String)">
-            <summary>
-            Asserts that two directories are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory path string containing the value that is expected</param>
-            <param name="actual">A directory path string containing the actual value</param>
-            <param name="message">The message to display if directories are equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.String,System.String)">
-            <summary>
-            Asserts that two directories are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A directory path string containing the value that is expected</param>
-            <param name="actual">A directory path string containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.IO.DirectoryInfo,System.String,System.Object[])">
-            <summary>
-            Asserts that the directory is empty. If it is not empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.IO.DirectoryInfo,System.String)">
-            <summary>
-            Asserts that the directory is empty. If it is not empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.IO.DirectoryInfo)">
-            <summary>
-            Asserts that the directory is empty. If it is not empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that the directory is empty. If it is not empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.String,System.String)">
-            <summary>
-            Asserts that the directory is empty. If it is not empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.String)">
-            <summary>
-            Asserts that the directory is empty. If it is not empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.IO.DirectoryInfo,System.String,System.Object[])">
-            <summary>
-            Asserts that the directory is not empty. If it is empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.IO.DirectoryInfo,System.String)">
-            <summary>
-            Asserts that the directory is not empty. If it is empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.IO.DirectoryInfo)">
-            <summary>
-            Asserts that the directory is not empty. If it is empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that the directory is not empty. If it is empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.String,System.String)">
-            <summary>
-            Asserts that the directory is not empty. If it is empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="message">The message to display if directories are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.String)">
-            <summary>
-            Asserts that the directory is not empty. If it is empty
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
-            <summary>
-            Asserts that path contains actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
-            <summary>
-            Asserts that path contains actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
-            <summary>
-            Asserts that path contains actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that path contains actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.String,System.String,System.String)">
-            <summary>
-            Asserts that path contains actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.String,System.String)">
-            <summary>
-            Asserts that path contains actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
-            <summary>
-            Asserts that path does not contain actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
-            <summary>
-            Asserts that path does not contain actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
-            <summary>
-            Asserts that path does not contain actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that path does not contain actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.String,System.String,System.String)">
-            <summary>
-            Asserts that path does not contain actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-            <param name="message">The message to display if directory is not within the path</param>
-        </member>
-        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.String,System.String)">
-            <summary>
-            Asserts that path does not contain actual as a subdirectory or
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="directory">A directory to search</param>
-            <param name="actual">sub-directory asserted to exist under directory</param>
-        </member>
-        <member name="T:NUnit.Framework.FileAssert">
-            <summary>
-            Summary description for FileAssert.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.#ctor">
-            <summary>
-            We don't actually want any instances of this object, but some people
-            like to inherit from it to add other static methods. Hence, the
-            protected constructor disallows any instances of this object. 
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
-            <summary>
-            Verifies that two Streams are equal.  Two Streams are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String)">
-            <summary>
-            Verifies that two Streams are equal.  Two Streams are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream)">
-            <summary>
-            Verifies that two Streams are equal.  Two Streams are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String)">
-            <summary>
-            Verifies that two files are equal.  Two files are considered
-            equal if both are null, or if both have the same value byte for byte.
-            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
-            <summary>
-            Asserts that two Streams are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to be displayed when the two Stream are the same.</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String)">
-            <summary>
-            Asserts that two Streams are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-            <param name="message">The message to be displayed when the Streams are the same.</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream)">
-            <summary>
-            Asserts that two Streams are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The expected Stream</param>
-            <param name="actual">The actual Stream</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">A file containing the value that is expected</param>
-            <param name="actual">A file containing the actual value</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if Streams are not equal</param>
-            <param name="args">Arguments to be used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-            <param name="message">The message to display if objects are not equal</param>
-        </member>
-        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String)">
-            <summary>
-            Asserts that two files are not equal. If they are equal
-            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
-            </summary>
-            <param name="expected">The path to a file containing the value that is expected</param>
-            <param name="actual">The path to a file containing the actual value</param>
-        </member>
-        <member name="T:NUnit.Framework.GlobalSettings">
-            <summary>
-            GlobalSettings is a place for setting default values used
-            by the framework in performing asserts.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.GlobalSettings.DefaultFloatingPointTolerance">
-            <summary>
-            Default tolerance for floating point equality
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Has">
-            <summary>
-            Helper class with properties and methods that supply
-            a number of constraints used in Asserts.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Has.Property(System.String)">
-            <summary>
-            Returns a new PropertyConstraintExpression, which will either
-            test for the existence of the named property on the object
-            being tested or apply any following constraint to that property.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Has.Attribute(System.Type)">
-            <summary>
-            Returns a new AttributeConstraint checking for the
-            presence of a particular attribute on an object.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Has.Attribute``1">
-            <summary>
-            Returns a new AttributeConstraint checking for the
-            presence of a particular attribute on an object.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Has.Member(System.Object)">
-            <summary>
-            Returns a new CollectionContainsConstraint checking for the
-            presence of a particular object in the collection.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.No">
-            <summary>
-            Returns a ConstraintExpression that negates any
-            following constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.All">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.Some">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if at least one of them succeeds.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.None">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them fail.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.Length">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Length property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.Count">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Count property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.Message">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the Message property of the object being tested.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Has.InnerException">
-            <summary>
-            Returns a new ConstraintExpression, which will apply the following
-            constraint to the InnerException property of the object being tested.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.IExpectException">
-            <summary>
-            Interface implemented by a user fixture in order to
-            validate any expected exceptions. It is only called
-            for test methods marked with the ExpectedException
-            attribute.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.IExpectException.HandleException(System.Exception)">
-            <summary>
-            Method to handle an expected exception
-            </summary>
-            <param name="ex">The exception to be handled</param>
-        </member>
-        <member name="T:NUnit.Framework.Is">
-            <summary>
-            Helper class with properties and methods that supply
-            a number of constraints used in Asserts.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.EqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests two items for equality
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.SameAs(System.Object)">
-            <summary>
-            Returns a constraint that tests that two references are the same object
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.GreaterThan(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.GreaterThanOrEqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.AtLeast(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is greater than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.LessThan(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.LessThanOrEqualTo(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.AtMost(System.Object)">
-            <summary>
-            Returns a constraint that tests whether the
-            actual value is less than or equal to the suppled argument
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.TypeOf(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual
-            value is of the exact type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.TypeOf``1">
-            <summary>
-            Returns a constraint that tests whether the actual
-            value is of the exact type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.InstanceOf(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.InstanceOf``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.InstanceOfType(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.InstanceOfType``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is of the type supplied as an argument or a derived type.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.AssignableFrom(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.AssignableFrom``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.AssignableTo(System.Type)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.AssignableTo``1">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is assignable from the type supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.EquivalentTo(System.Collections.IEnumerable)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is a collection containing the same elements as the 
-            collection supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.SubsetOf(System.Collections.IEnumerable)">
-            <summary>
-            Returns a constraint that tests whether the actual value
-            is a subset of the collection supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.StringContaining(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.StringStarting(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.StringEnding(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.StringMatching(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value matches the Regex pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.SamePath(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same as an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.SubPath(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same path or under an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.SamePathOrUnder(System.String)">
-            <summary>
-            Returns a constraint that tests whether the path provided 
-            is the same path or under an expected path after canonicalization.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Is.InRange(System.IComparable,System.IComparable)">
-            <summary>
-            Returns a constraint that tests whether the actual value falls 
-            within a specified range.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.Not">
-            <summary>
-            Returns a ConstraintExpression that negates any
-            following constraint.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.All">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.Null">
-            <summary>
-            Returns a constraint that tests for null
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.True">
-            <summary>
-            Returns a constraint that tests for True
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.False">
-            <summary>
-            Returns a constraint that tests for False
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.NaN">
-            <summary>
-            Returns a constraint that tests for NaN
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.Empty">
-            <summary>
-            Returns a constraint that tests for empty
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.Unique">
-            <summary>
-            Returns a constraint that tests whether a collection 
-            contains all unique items.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.BinarySerializable">
-            <summary>
-            Returns a constraint that tests whether an object graph is serializable in binary format.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.XmlSerializable">
-            <summary>
-            Returns a constraint that tests whether an object graph is serializable in xml format.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Is.Ordered">
-            <summary>
-            Returns a constraint that tests whether a collection is ordered
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Iz">
-            <summary>
-            The Iz class is a synonym for Is intended for use in VB,
-            which regards Is as a keyword.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.List">
-            <summary>
-            The List class is a helper class with properties and methods
-            that supply a number of constraints used with lists and collections.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.List.Map(System.Collections.ICollection)">
-            <summary>
-            List.Map returns a ListMapper, which can be used to map
-            the original collection to another collection.
-            </summary>
-            <param name="actual"></param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.ListMapper">
-            <summary>
-            ListMapper is used to transform a collection used as an actual argument
-            producing another collection to be used in the assertion.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.ListMapper.#ctor(System.Collections.ICollection)">
-            <summary>
-            Construct a ListMapper based on a collection
-            </summary>
-            <param name="original">The collection to be transformed</param>
-        </member>
-        <member name="M:NUnit.Framework.ListMapper.Property(System.String)">
-            <summary>
-            Produces a collection containing all the values of a property
-            </summary>
-            <param name="name">The collection of property values</param>
-            <returns></returns>
-        </member>
-        <member name="T:NUnit.Framework.Randomizer">
-            <summary>
-            Randomizer returns a set of random values in a repeatable
-            way, to allow re-running of tests if necessary.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Randomizer.GetRandomizer(System.Reflection.MemberInfo)">
-            <summary>
-            Get a randomizer for a particular member, returning
-            one that has already been created if it exists.
-            This ensures that the same values are generated
-            each time the tests are reloaded.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Randomizer.GetRandomizer(System.Reflection.ParameterInfo)">
-            <summary>
-            Get a randomizer for a particular parameter, returning
-            one that has already been created if it exists.
-            This ensures that the same values are generated
-            each time the tests are reloaded.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Randomizer.#ctor">
-            <summary>
-            Construct a randomizer using a random seed
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Randomizer.#ctor(System.Int32)">
-            <summary>
-            Construct a randomizer using a specified seed
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Randomizer.GetDoubles(System.Int32)">
-            <summary>
-            Return an array of random doubles between 0.0 and 1.0.
-            </summary>
-            <param name="count"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.Randomizer.GetDoubles(System.Double,System.Double,System.Int32)">
-            <summary>
-            Return an array of random doubles with values in a specified range.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Randomizer.GetInts(System.Int32,System.Int32,System.Int32)">
-            <summary>
-            Return an array of random ints with values in a specified range.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Randomizer.RandomSeed">
-            <summary>
-            Get a random seed for use in creating a randomizer.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.SpecialValue">
-            <summary>
-            The SpecialValue enum is used to represent TestCase arguments
-            that cannot be used as arguments to an Attribute.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.SpecialValue.Null">
-            <summary>
-            Null represents a null value, which cannot be used as an 
-            argument to an attriute under .NET 1.x
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.StringAssert">
-            <summary>
-            Basic Asserts on strings.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Equals(System.Object,System.Object)">
-            <summary>
-            The Equals method throws an AssertionException. This is done 
-            to make sure there is no mistake by calling this function.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.ReferenceEquals(System.Object,System.Object)">
-            <summary>
-            override the default ReferenceEquals to throw an AssertionException. This 
-            implementation makes sure there is no mistake in calling this function 
-            as part of Assert. 
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String)">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotContain(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string is not found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotContain(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotContain(System.String,System.String)">
-            <summary>
-            Asserts that a string is found within another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string starts with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string starts with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String)">
-            <summary>
-            Asserts that a string starts with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotStartWith(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string does not start with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotStartWith(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string does not start with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotStartWith(System.String,System.String)">
-            <summary>
-            Asserts that a string does not start with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string ends with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string ends with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String)">
-            <summary>
-            Asserts that a string ends with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotEndWith(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string does not end with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotEndWith(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string does not end with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotEndWith(System.String,System.String)">
-            <summary>
-            Asserts that a string does not end with another string.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The string to be examined</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that two strings are equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String)">
-            <summary>
-            Asserts that two strings are equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String)">
-            <summary>
-            Asserts that two strings are equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreNotEqualIgnoringCase(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that two strings are not equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreNotEqualIgnoringCase(System.String,System.String,System.String)">
-            <summary>
-            Asserts that two strings are Notequal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.AreNotEqualIgnoringCase(System.String,System.String)">
-            <summary>
-            Asserts that two strings are not equal, without regard to case.
-            </summary>
-            <param name="expected">The expected string</param>
-            <param name="actual">The actual string</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string matches an expected regular expression pattern.
-            </summary>
-            <param name="pattern">The regex pattern to be matched</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string matches an expected regular expression pattern.
-            </summary>
-            <param name="pattern">The regex pattern to be matched</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String)">
-            <summary>
-            Asserts that a string matches an expected regular expression pattern.
-            </summary>
-            <param name="pattern">The regex pattern to be matched</param>
-            <param name="actual">The actual string</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotMatch(System.String,System.String,System.String,System.Object[])">
-            <summary>
-            Asserts that a string does not match an expected regular expression pattern.
-            </summary>
-            <param name="pattern">The regex pattern to be used</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-            <param name="args">Arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotMatch(System.String,System.String,System.String)">
-            <summary>
-            Asserts that a string does not match an expected regular expression pattern.
-            </summary>
-            <param name="pattern">The regex pattern to be used</param>
-            <param name="actual">The actual string</param>
-            <param name="message">The message to display in case of failure</param>
-        </member>
-        <member name="M:NUnit.Framework.StringAssert.DoesNotMatch(System.String,System.String)">
-            <summary>
-            Asserts that a string does not match an expected regular expression pattern.
-            </summary>
-            <param name="pattern">The regex pattern to be used</param>
-            <param name="actual">The actual string</param>
-        </member>
-        <member name="T:NUnit.Framework.TestCaseData">
-            <summary>
-            The TestCaseData class represents a set of arguments
-            and other parameter info to be used for a parameterized
-            test case. It provides a number of instance modifiers
-            for use in initializing the test case.
-            
-            Note: Instance modifiers are getters that return
-            the same instance after modifying it's state.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.arguments">
-            <summary>
-            The argument list to be provided to the test
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.result">
-            <summary>
-            The expected result to be returned
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.expectedExceptionType">
-            <summary>
-             The expected exception Type
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.expectedExceptionName">
-            <summary>
-            The FullName of the expected exception
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.testName">
-            <summary>
-            The name to be used for the test
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.description">
-            <summary>
-            The description of the test
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.properties">
-            <summary>
-            A dictionary of properties, used to add information
-            to tests without requiring the class to change.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.isIgnored">
-            <summary>
-            If true, indicates that the test case is to be ignored
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestCaseData.ignoreReason">
-            <summary>
-            The reason for ignoring a test case
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object[])">
-            <summary>
-            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
-            </summary>
-            <param name="args">The arguments.</param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
-            </summary>
-            <param name="arg">The argument.</param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object,System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
-            </summary>
-            <param name="arg1">The first argument.</param>
-            <param name="arg2">The second argument.</param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object,System.Object,System.Object)">
-            <summary>
-            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
-            </summary>
-            <param name="arg1">The first argument.</param>
-            <param name="arg2">The second argument.</param>
-            <param name="arg3">The third argument.</param>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.Returns(System.Object)">
-            <summary>
-            Sets the expected result for the test
-            </summary>
-            <param name="result">The expected result</param>
-            <returns>A modified TestCaseData</returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.Throws(System.Type)">
-            <summary>
-            Sets the expected exception type for the test
-            </summary>
-            <param name="exceptionType">Type of the expected exception.</param>
-            <returns>The modified TestCaseData instance</returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.Throws(System.String)">
-            <summary>
-            Sets the expected exception type for the test
-            </summary>
-            <param name="exceptionName">FullName of the expected exception.</param>
-            <returns>The modified TestCaseData instance</returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.SetName(System.String)">
-            <summary>
-            Sets the name of the test case
-            </summary>
-            <returns>The modified TestCaseData instance</returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.SetDescription(System.String)">
-            <summary>
-            Sets the description for the test case
-            being constructed.
-            </summary>
-            <param name="description">The description.</param>
-            <returns>The modified TestCaseData instance.</returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.SetCategory(System.String)">
-            <summary>
-            Applies a category to the test
-            </summary>
-            <param name="category"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.SetProperty(System.String,System.String)">
-            <summary>
-            Applies a named property to the test
-            </summary>
-            <param name="propName"></param>
-            <param name="propValue"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.SetProperty(System.String,System.Int32)">
-            <summary>
-            Applies a named property to the test
-            </summary>
-            <param name="propName"></param>
-            <param name="propValue"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.SetProperty(System.String,System.Double)">
-            <summary>
-            Applies a named property to the test
-            </summary>
-            <param name="propName"></param>
-            <param name="propValue"></param>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.Ignore">
-            <summary>
-            Ignores this TestCase.
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:NUnit.Framework.TestCaseData.Ignore(System.String)">
-            <summary>
-            Ignores this TestCase, specifying the reason.
-            </summary>
-            <param name="reason">The reason.</param>
-            <returns></returns>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.Arguments">
-            <summary>
-            Gets the argument list to be provided to the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.Result">
-            <summary>
-            Gets the expected result
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.ExpectedException">
-            <summary>
-             Gets the expected exception Type
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.ExpectedExceptionName">
-            <summary>
-            Gets the FullName of the expected exception
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.TestName">
-            <summary>
-            Gets the name to be used for the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.Description">
-            <summary>
-            Gets the description of the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.Ignored">
-            <summary>
-            Gets a value indicating whether this <see cref="T:NUnit.Framework.ITestCaseData"/> is ignored.
-            </summary>
-            <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.IgnoreReason">
-            <summary>
-            Gets the ignore reason.
-            </summary>
-            <value>The ignore reason.</value>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.Categories">
-            <summary>
-            Gets a list of categories associated with this test.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestCaseData.Properties">
-            <summary>
-            Gets the property dictionary for this test
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestContext">
-            <summary>
-            Provide the context information of the current test
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestContext.#ctor(System.Collections.IDictionary)">
-            <summary>
-            Constructs a TestContext using the provided context dictionary
-            </summary>
-            <param name="context">A context dictionary</param>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.CurrentContext">
-            <summary>
-            Get the current test context. This is created
-            as needed. The user may save the context for
-            use within a test, but it should not be used
-            outside the test for which it is created.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.Test">
-            <summary>
-            Gets a TestAdapter representing the currently executing test in this context.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.Result">
-            <summary>
-            Gets a ResultAdapter representing the current result for the test 
-            executing in this context.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.TestDirectory">
-            <summary>
-            Gets the current directory for this TestContext
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestContext.TestAdapter">
-            <summary>
-            TestAdapter adapts a Test for consumption by
-            the user test code.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestContext.TestAdapter.#ctor(System.Collections.IDictionary)">
-            <summary>
-            Constructs a TestAdapter for this context
-            </summary>
-            <param name="context">The context dictionary</param>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.TestAdapter.Name">
-            <summary>
-            The name of the test.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.TestAdapter.FullName">
-            <summary>
-            The FullName of the test
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.TestAdapter.Properties">
-            <summary>
-            The properties of the test.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestContext.ResultAdapter">
-            <summary>
-            ResultAdapter adapts a TestResult for consumption by
-            the user test code.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TestContext.ResultAdapter.#ctor(System.Collections.IDictionary)">
-            <summary>
-            Construct a ResultAdapter for a context
-            </summary>
-            <param name="context">The context holding the result</param>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.ResultAdapter.State">
-            <summary>
-            The TestState of current test. This maps to the ResultState
-            used in nunit.core and is subject to change in the future.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.TestContext.ResultAdapter.Status">
-            <summary>
-            The TestStatus of current test. This enum will be used
-            in future versions of NUnit and so is to be preferred
-            to the TestState value.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestState">
-            <summary>
-            The ResultState enum indicates the result of running a test
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.Inconclusive">
-            <summary>
-            The result is inconclusive
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.NotRunnable">
-            <summary>
-            The test was not runnable.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.Skipped">
-            <summary>
-            The test has been skipped. 
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.Ignored">
-            <summary>
-            The test has been ignored.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.Success">
-            <summary>
-            The test succeeded
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.Failure">
-            <summary>
-            The test failed
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.Error">
-            <summary>
-            The test encountered an unexpected exception
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestState.Cancelled">
-            <summary>
-            The test was cancelled by the user
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TestStatus">
-            <summary>
-            The TestStatus enum indicates the result of running a test
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestStatus.Inconclusive">
-            <summary>
-            The test was inconclusive
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestStatus.Skipped">
-            <summary>
-            The test has skipped 
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestStatus.Passed">
-            <summary>
-            The test succeeded
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TestStatus.Failed">
-            <summary>
-            The test failed
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Text">
-            <summary>
-            Helper class with static methods used to supply constraints
-            that operate on strings.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.Contains(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.DoesNotContain(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value contains the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.StartsWith(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.DoesNotStartWith(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value starts with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.EndsWith(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.DoesNotEndWith(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value ends with the substring supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.Matches(System.String)">
-            <summary>
-            Returns a constraint that succeeds if the actual
-            value matches the Regex pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Text.DoesNotMatch(System.String)">
-            <summary>
-            Returns a constraint that fails if the actual
-            value matches the pattern supplied as an argument.
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Text.All">
-            <summary>
-            Returns a ConstraintExpression, which will apply
-            the following constraint to all members of a collection,
-            succeeding if all of them succeed.
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.TextMessageWriter">
-            <summary>
-            TextMessageWriter writes constraint descriptions and messages
-            in displayable form as a text stream. It tailors the display
-            of individual message components to form the standard message
-            format of NUnit assertion failure messages.
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Expected">
-            <summary>
-            Prefix used for the expected value line of a message
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Actual">
-            <summary>
-            Prefix used for the actual value line of a message
-            </summary>
-        </member>
-        <member name="F:NUnit.Framework.TextMessageWriter.PrefixLength">
-            <summary>
-            Length of a message prefix
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.#ctor">
-            <summary>
-            Construct a TextMessageWriter
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.#ctor(System.String,System.Object[])">
-            <summary>
-            Construct a TextMessageWriter, specifying a user message
-            and optional formatting arguments.
-            </summary>
-            <param name="userMessage"></param>
-            <param name="args"></param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
-            <summary>
-            Method to write single line  message with optional args, usually
-            written to precede the general failure message, at a givel 
-            indentation level.
-            </summary>
-            <param name="level">The indentation level of the message</param>
-            <param name="message">The message to be written</param>
-            <param name="args">Any arguments used in formatting the message</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Display Expected and Actual lines for a constraint. This
-            is called by MessageWriter's default implementation of 
-            WriteMessageTo and provides the generic two-line display. 
-            </summary>
-            <param name="constraint">The constraint that failed</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object)">
-            <summary>
-            Display Expected and Actual lines for given values. This
-            method may be called by constraints that need more control over
-            the display of actual and expected values than is provided
-            by the default implementation.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object,NUnit.Framework.Constraints.Tolerance)">
-            <summary>
-            Display Expected and Actual lines for given values, including
-            a tolerance value on the expected line.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="actual">The actual value causing the failure</param>
-            <param name="tolerance">The tolerance within which the test was made</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean,System.Boolean)">
-            <summary>
-            Display the expected and actual string values on separate lines.
-            If the mismatch parameter is >=0, an additional line is displayed
-            line containing a caret that points to the mismatch point.
-            </summary>
-            <param name="expected">The expected string value</param>
-            <param name="actual">The actual string value</param>
-            <param name="mismatch">The point at which the strings don't match or -1</param>
-            <param name="ignoreCase">If true, case is ignored in string comparisons</param>
-            <param name="clipping">If true, clip the strings to fit the max line length</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteConnector(System.String)">
-            <summary>
-            Writes the text for a connector.
-            </summary>
-            <param name="connector">The connector.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WritePredicate(System.String)">
-            <summary>
-            Writes the text for a predicate.
-            </summary>
-            <param name="predicate">The predicate.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteModifier(System.String)">
-            <summary>
-            Write the text for a modifier.
-            </summary>
-            <param name="modifier">The modifier.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedValue(System.Object)">
-            <summary>
-            Writes the text for an expected value.
-            </summary>
-            <param name="expected">The expected value.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualValue(System.Object)">
-            <summary>
-            Writes the text for an actual value.
-            </summary>
-            <param name="actual">The actual value.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteValue(System.Object)">
-            <summary>
-            Writes the text for a generalized value.
-            </summary>
-            <param name="val">The value.</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
-            <summary>
-            Writes the text for a collection value,
-            starting at a particular point, to a max length
-            </summary>
-            <param name="collection">The collection containing elements to write.</param>
-            <param name="start">The starting point of the elements to write</param>
-            <param name="max">The maximum number of elements to write</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Write the generic 'Expected' line for a constraint
-            </summary>
-            <param name="constraint">The constraint that failed</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object)">
-            <summary>
-            Write the generic 'Expected' line for a given value
-            </summary>
-            <param name="expected">The expected value</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object,NUnit.Framework.Constraints.Tolerance)">
-            <summary>
-            Write the generic 'Expected' line for a given value
-            and tolerance.
-            </summary>
-            <param name="expected">The expected value</param>
-            <param name="tolerance">The tolerance within which the test was made</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(NUnit.Framework.Constraints.Constraint)">
-            <summary>
-            Write the generic 'Actual' line for a constraint
-            </summary>
-            <param name="constraint">The constraint for which the actual value is to be written</param>
-        </member>
-        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(System.Object)">
-            <summary>
-            Write the generic 'Actual' line for a given value
-            </summary>
-            <param name="actual">The actual value causing a failure</param>
-        </member>
-        <member name="P:NUnit.Framework.TextMessageWriter.MaxLineLength">
-            <summary>
-            Gets or sets the maximum line length for this writer
-            </summary>
-        </member>
-        <member name="T:NUnit.Framework.Throws">
-            <summary>
-            Helper class with properties and methods that supply
-            constraints that operate on exceptions.
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Throws.TypeOf(System.Type)">
-            <summary>
-            Creates a constraint specifying the exact type of exception expected
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Throws.TypeOf``1">
-            <summary>
-            Creates a constraint specifying the exact type of exception expected
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Throws.InstanceOf(System.Type)">
-            <summary>
-            Creates a constraint specifying the type of exception expected
-            </summary>
-        </member>
-        <member name="M:NUnit.Framework.Throws.InstanceOf``1">
-            <summary>
-            Creates a constraint specifying the type of exception expected
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Throws.Exception">
-            <summary>
-            Creates a constraint specifying an expected exception
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Throws.InnerException">
-            <summary>
-            Creates a constraint specifying an exception with a given InnerException
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Throws.TargetInvocationException">
-            <summary>
-            Creates a constraint specifying an expected TargetInvocationException
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Throws.ArgumentException">
-            <summary>
-            Creates a constraint specifying an expected TargetInvocationException
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Throws.InvalidOperationException">
-            <summary>
-            Creates a constraint specifying an expected TargetInvocationException
-            </summary>
-        </member>
-        <member name="P:NUnit.Framework.Throws.Nothing">
-            <summary>
-            Creates a constraint specifying that no exception is thrown
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>nunit.framework</name>
+    </assembly>
+    <members>
+        <member name="T:NUnit.Framework.CategoryAttribute">
+            <summary>
+            Attribute used to apply a category to a test
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.CategoryAttribute.categoryName">
+            <summary>
+            The name of the category
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CategoryAttribute.#ctor(System.String)">
+            <summary>
+            Construct attribute for a given category based on
+            a name. The name may not contain the characters ',',
+            '+', '-' or '!'. However, this is not checked in the
+            constructor since it would cause an error to arise at
+            as the test was loaded without giving a clear indication
+            of where the problem is located. The error is handled
+            in NUnitFramework.cs by marking the test as not
+            runnable.
+            </summary>
+            <param name="name">The name of the category</param>
+        </member>
+        <member name="M:NUnit.Framework.CategoryAttribute.#ctor">
+            <summary>
+            Protected constructor uses the Type name as the name
+            of the category.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.CategoryAttribute.Name">
+            <summary>
+            The name of the category
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.DatapointAttribute">
+            <summary>
+            Used to mark a field for use as a datapoint when executing a theory
+            within the same fixture that requires an argument of the field's Type.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.DatapointsAttribute">
+            <summary>
+            Used to mark an array as containing a set of datapoints to be used
+            executing a theory within the same fixture that requires an argument 
+            of the Type of the array elements.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.DescriptionAttribute">
+            <summary>
+            Attribute used to provide descriptive text about a 
+            test case or fixture.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.DescriptionAttribute.#ctor(System.String)">
+            <summary>
+            Construct the attribute
+            </summary>
+            <param name="description">Text describing the test</param>
+        </member>
+        <member name="P:NUnit.Framework.DescriptionAttribute.Description">
+            <summary>
+            Gets the test description
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.MessageMatch">
+            <summary>
+            Enumeration indicating how the expected message parameter is to be used
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.MessageMatch.Exact">
+            Expect an exact match
+        </member>
+        <member name="F:NUnit.Framework.MessageMatch.Contains">
+            Expect a message containing the parameter string
+        </member>
+        <member name="F:NUnit.Framework.MessageMatch.Regex">
+            Match the regular expression provided as a parameter
+        </member>
+        <member name="F:NUnit.Framework.MessageMatch.StartsWith">
+            Expect a message that starts with the parameter string
+        </member>
+        <member name="T:NUnit.Framework.ExpectedExceptionAttribute">
+            <summary>
+            ExpectedExceptionAttribute
+            </summary>
+            
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor">
+            <summary>
+            Constructor for a non-specific exception
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.Type)">
+            <summary>
+            Constructor for a given type of exception
+            </summary>
+            <param name="exceptionType">The type of the expected exception</param>
+        </member>
+        <member name="M:NUnit.Framework.ExpectedExceptionAttribute.#ctor(System.String)">
+            <summary>
+            Constructor for a given exception name
+            </summary>
+            <param name="exceptionName">The full name of the expected exception</param>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedException">
+            <summary>
+            Gets or sets the expected exception type
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedExceptionName">
+            <summary>
+            Gets or sets the full Type name of the expected exception
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.ExpectedMessage">
+            <summary>
+            Gets or sets the expected message text
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.UserMessage">
+            <summary>
+            Gets or sets the user message displayed in case of failure
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.MatchType">
+            <summary>
+             Gets or sets the type of match to be performed on the expected message
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ExpectedExceptionAttribute.Handler">
+            <summary>
+             Gets the name of a method to be used as an exception handler
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.ExplicitAttribute">
+            <summary>
+            ExplicitAttribute marks a test or test fixture so that it will
+            only be run if explicitly executed from the gui or command line
+            or if it is included by use of a filter. The test will not be
+            run simply because an enclosing suite is run.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor">
+            <summary>
+            Default constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ExplicitAttribute.#ctor(System.String)">
+            <summary>
+            Constructor with a reason
+            </summary>
+            <param name="reason">The reason test is marked explicit</param>
+        </member>
+        <member name="P:NUnit.Framework.ExplicitAttribute.Reason">
+            <summary>
+            The reason test is marked explicit
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IgnoreAttribute">
+            <summary>
+            Attribute used to mark a test that is to be ignored.
+            Ignored tests result in a warning message when the
+            tests are run.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor">
+            <summary>
+            Constructs the attribute without giving a reason 
+            for ignoring the test.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreAttribute.#ctor(System.String)">
+            <summary>
+            Constructs the attribute giving a reason for ignoring the test
+            </summary>
+            <param name="reason">The reason for ignoring the test</param>
+        </member>
+        <member name="P:NUnit.Framework.IgnoreAttribute.Reason">
+            <summary>
+            The reason for ignoring a test
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IncludeExcludeAttribute">
+            <summary>
+            Abstract base for Attributes that are used to include tests
+            in the test run based on environmental settings.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor">
+            <summary>
+            Constructor with no included items specified, for use
+            with named property syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IncludeExcludeAttribute.#ctor(System.String)">
+            <summary>
+            Constructor taking one or more included items
+            </summary>
+            <param name="include">Comma-delimited list of included items</param>
+        </member>
+        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Include">
+            <summary>
+            Name of the item that is needed in order for
+            a test to run. Multiple itemss may be given,
+            separated by a comma.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Exclude">
+            <summary>
+            Name of the item to be excluded. Multiple items
+            may be given, separated by a comma.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.IncludeExcludeAttribute.Reason">
+            <summary>
+            The reason for including or excluding the test
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.PlatformAttribute">
+            <summary>
+            PlatformAttribute is used to mark a test fixture or an
+            individual method as applying to a particular platform only.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PlatformAttribute.#ctor">
+            <summary>
+            Constructor with no platforms specified, for use
+            with named property syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PlatformAttribute.#ctor(System.String)">
+            <summary>
+            Constructor taking one or more platforms
+            </summary>
+            <param name="platforms">Comma-deliminted list of platforms</param>
+        </member>
+        <member name="T:NUnit.Framework.CultureAttribute">
+            <summary>
+            CultureAttribute is used to mark a test fixture or an
+            individual method as applying to a particular Culture only.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CultureAttribute.#ctor">
+            <summary>
+            Constructor with no cultures specified, for use
+            with named property syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CultureAttribute.#ctor(System.String)">
+            <summary>
+            Constructor taking one or more cultures
+            </summary>
+            <param name="cultures">Comma-deliminted list of cultures</param>
+        </member>
+        <member name="T:NUnit.Framework.CombinatorialAttribute">
+            <summary>
+            Marks a test to use a combinatorial join of any argument data 
+            provided. NUnit will create a test case for every combination of 
+            the arguments provided. This can result in a large number of test
+            cases and so should be used judiciously. This is the default join
+            type, so the attribute need not be used except as documentation.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.PropertyAttribute">
+            <summary>
+            PropertyAttribute is used to attach information to a test as a name/value pair..
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.String)">
+            <summary>
+            Construct a PropertyAttribute with a name and string value
+            </summary>
+            <param name="propertyName">The name of the property</param>
+            <param name="propertyValue">The property value</param>
+        </member>
+        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.Int32)">
+            <summary>
+            Construct a PropertyAttribute with a name and int value
+            </summary>
+            <param name="propertyName">The name of the property</param>
+            <param name="propertyValue">The property value</param>
+        </member>
+        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.String,System.Double)">
+            <summary>
+            Construct a PropertyAttribute with a name and double value
+            </summary>
+            <param name="propertyName">The name of the property</param>
+            <param name="propertyValue">The property value</param>
+        </member>
+        <member name="M:NUnit.Framework.PropertyAttribute.#ctor">
+            <summary>
+            Constructor for derived classes that set the
+            property dictionary directly.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PropertyAttribute.#ctor(System.Object)">
+            <summary>
+            Constructor for use by derived classes that use the
+            name of the type as the property name. Derived classes
+            must ensure that the Type of the property value is
+            a standard type supported by the BCL. Any custom
+            types will cause a serialization Exception when
+            in the client.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.PropertyAttribute.Properties">
+            <summary>
+            Gets the property dictionary for this attribute
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CombinatorialAttribute.#ctor">
+            <summary>
+            Default constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.PairwiseAttribute">
+            <summary>
+            Marks a test to use pairwise join of any argument data provided. 
+            NUnit will attempt too excercise every pair of argument values at 
+            least once, using as small a number of test cases as it can. With
+            only two arguments, this is the same as a combinatorial join.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.PairwiseAttribute.#ctor">
+            <summary>
+            Default constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SequentialAttribute">
+            <summary>
+            Marks a test to use a sequential join of any argument data
+            provided. NUnit will use arguements for each parameter in
+            sequence, generating test cases up to the largest number
+            of argument values provided and using null for any arguments
+            for which it runs out of values. Normally, this should be
+            used with the same number of arguments for each parameter.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SequentialAttribute.#ctor">
+            <summary>
+            Default constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.MaxTimeAttribute">
+            <summary>
+            Summary description for MaxTimeAttribute.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.MaxTimeAttribute.#ctor(System.Int32)">
+            <summary>
+            Construct a MaxTimeAttribute, given a time in milliseconds.
+            </summary>
+            <param name="milliseconds">The maximum elapsed time in milliseconds</param>
+        </member>
+        <member name="T:NUnit.Framework.RandomAttribute">
+            <summary>
+            RandomAttribute is used to supply a set of random values
+            to a single parameter of a parameterized test.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.ValuesAttribute">
+            <summary>
+            ValuesAttribute is used to provide literal arguments for
+            an individual parameter of a test.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.ParameterDataAttribute">
+            <summary>
+            Abstract base class for attributes that apply to parameters 
+            and supply data for the parameter.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ParameterDataAttribute.GetData(System.Reflection.ParameterInfo)">
+            <summary>
+            Gets the data to be provided to the specified parameter
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.ValuesAttribute.data">
+            <summary>
+            The collection of data to be returned. Must
+            be set by any derived attribute classes.
+            We use an object[] so that the individual
+            elements may have their type changed in GetData
+            if necessary.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object)">
+            <summary>
+            Construct with one argument
+            </summary>
+            <param name="arg1"></param>
+        </member>
+        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object,System.Object)">
+            <summary>
+            Construct with two arguments
+            </summary>
+            <param name="arg1"></param>
+            <param name="arg2"></param>
+        </member>
+        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object,System.Object,System.Object)">
+            <summary>
+            Construct with three arguments
+            </summary>
+            <param name="arg1"></param>
+            <param name="arg2"></param>
+            <param name="arg3"></param>
+        </member>
+        <member name="M:NUnit.Framework.ValuesAttribute.#ctor(System.Object[])">
+            <summary>
+            Construct with an array of arguments
+            </summary>
+            <param name="args"></param>
+        </member>
+        <member name="M:NUnit.Framework.ValuesAttribute.GetData(System.Reflection.ParameterInfo)">
+            <summary>
+            Get the collection of values to be used as arguments
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RandomAttribute.#ctor(System.Int32)">
+            <summary>
+            Construct a set of doubles from 0.0 to 1.0,
+            specifying only the count.
+            </summary>
+            <param name="count"></param>
+        </member>
+        <member name="M:NUnit.Framework.RandomAttribute.#ctor(System.Double,System.Double,System.Int32)">
+            <summary>
+            Construct a set of doubles from min to max
+            </summary>
+            <param name="min"></param>
+            <param name="max"></param>
+            <param name="count"></param>
+        </member>
+        <member name="M:NUnit.Framework.RandomAttribute.#ctor(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Construct a set of ints from min to max
+            </summary>
+            <param name="min"></param>
+            <param name="max"></param>
+            <param name="count"></param>
+        </member>
+        <member name="M:NUnit.Framework.RandomAttribute.GetData(System.Reflection.ParameterInfo)">
+            <summary>
+            Get the collection of values to be used as arguments
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.RangeAttribute">
+            <summary>
+            RangeAttribute is used to supply a range of values to an
+            individual parameter of a parameterized test.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Construct a range of ints using default step of 1
+            </summary>
+            <param name="from"></param>
+            <param name="to"></param>
+        </member>
+        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Construct a range of ints specifying the step size 
+            </summary>
+            <param name="from"></param>
+            <param name="to"></param>
+            <param name="step"></param>
+        </member>
+        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Int64,System.Int64,System.Int64)">
+            <summary>
+            Construct a range of longs
+            </summary>
+            <param name="from"></param>
+            <param name="to"></param>
+            <param name="step"></param>
+        </member>
+        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Double,System.Double,System.Double)">
+            <summary>
+            Construct a range of doubles
+            </summary>
+            <param name="from"></param>
+            <param name="to"></param>
+            <param name="step"></param>
+        </member>
+        <member name="M:NUnit.Framework.RangeAttribute.#ctor(System.Single,System.Single,System.Single)">
+            <summary>
+            Construct a range of floats
+            </summary>
+            <param name="from"></param>
+            <param name="to"></param>
+            <param name="step"></param>
+        </member>
+        <member name="T:NUnit.Framework.RepeatAttribute">
+            <summary>
+            RepeatAttribute may be applied to test case in order
+            to run it multiple times.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RepeatAttribute.#ctor(System.Int32)">
+            <summary>
+            Construct a RepeatAttribute
+            </summary>
+            <param name="count">The number of times to run the test</param>
+        </member>
+        <member name="T:NUnit.Framework.RequiredAddinAttribute">
+            <summary>
+            RequiredAddinAttribute may be used to indicate the names of any addins
+            that must be present in order to run some or all of the tests in an
+            assembly. If the addin is not loaded, the entire assembly is marked
+            as NotRunnable.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RequiredAddinAttribute.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:RequiredAddinAttribute"/> class.
+            </summary>
+            <param name="requiredAddin">The required addin.</param>
+        </member>
+        <member name="P:NUnit.Framework.RequiredAddinAttribute.RequiredAddin">
+            <summary>
+            Gets the name of required addin.
+            </summary>
+            <value>The required addin name.</value>
+        </member>
+        <member name="T:NUnit.Framework.SetCultureAttribute">
+            <summary>
+            Summary description for SetCultureAttribute.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SetCultureAttribute.#ctor(System.String)">
+            <summary>
+            Construct given the name of a culture
+            </summary>
+            <param name="culture"></param>
+        </member>
+        <member name="T:NUnit.Framework.SetUICultureAttribute">
+            <summary>
+            Summary description for SetUICultureAttribute.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SetUICultureAttribute.#ctor(System.String)">
+            <summary>
+            Construct given the name of a culture
+            </summary>
+            <param name="culture"></param>
+        </member>
+        <member name="T:NUnit.Framework.SetUpAttribute">
+            <summary>
+            Attribute used to mark a class that contains one-time SetUp 
+            and/or TearDown methods that apply to all the tests in a
+            namespace or an assembly.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SetUpFixtureAttribute">
+            <summary>
+            SetUpFixtureAttribute is used to identify a SetUpFixture
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SuiteAttribute">
+            <summary>
+            Attribute used to mark a static (shared in VB) property
+            that returns a list of tests.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TearDownAttribute">
+            <summary>
+            Attribute used to identify a method that is called 
+            immediately after each test is run. The method is 
+            guaranteed to be called, even if an exception is thrown.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestAttribute">
+            <summary>
+            Adding this attribute to a method within a <seealso cref="T:NUnit.Framework.TestFixtureAttribute"/> 
+            class makes the method callable from the NUnit test runner. There is a property 
+            called Description which is optional which you can provide a more detailed test
+            description. This class cannot be inherited.
+            </summary>
+            
+            <example>
+            [TestFixture]
+            public class Fixture
+            {
+              [Test]
+              public void MethodToTest()
+              {}
+              
+              [Test(Description = "more detailed description")]
+              publc void TestDescriptionMethod()
+              {}
+            }
+            </example>
+            
+        </member>
+        <member name="P:NUnit.Framework.TestAttribute.Description">
+            <summary>
+            Descriptive text for this test
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestCaseAttribute">
+            <summary>
+            TestCaseAttribute is used to mark parameterized test cases
+            and provide them with their arguments.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.ITestCaseData">
+            <summary>
+            The ITestCaseData interface is implemented by a class
+            that is able to return complete testcases for use by
+            a parameterized test method.
+            
+            NOTE: This interface is used in both the framework
+            and the core, even though that results in two different
+            types. However, sharing the source code guarantees that
+            the various implementations will be compatible and that
+            the core is able to reflect successfully over the
+            framework implementations of ITestCaseData.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.Arguments">
+            <summary>
+            Gets the argument list to be provided to the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.Result">
+            <summary>
+            Gets the expected result
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.ExpectedException">
+            <summary>
+             Gets the expected exception Type
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.ExpectedExceptionName">
+            <summary>
+            Gets the FullName of the expected exception
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.TestName">
+            <summary>
+            Gets the name to be used for the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.Description">
+            <summary>
+            Gets the description of the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.Ignored">
+            <summary>
+            Gets a value indicating whether this <see cref="T:NUnit.Framework.ITestCaseData"/> is ignored.
+            </summary>
+            <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:NUnit.Framework.ITestCaseData.IgnoreReason">
+            <summary>
+            Gets the ignore reason.
+            </summary>
+            <value>The ignore reason.</value>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object[])">
+            <summary>
+            Construct a TestCaseAttribute with a list of arguments.
+            This constructor is not CLS-Compliant
+            </summary>
+            <param name="arguments"></param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object)">
+            <summary>
+            Construct a TestCaseAttribute with a single argument
+            </summary>
+            <param name="arg"></param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object,System.Object)">
+            <summary>
+            Construct a TestCaseAttribute with a two arguments
+            </summary>
+            <param name="arg1"></param>
+            <param name="arg2"></param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseAttribute.#ctor(System.Object,System.Object,System.Object)">
+            <summary>
+            Construct a TestCaseAttribute with a three arguments
+            </summary>
+            <param name="arg1"></param>
+            <param name="arg2"></param>
+            <param name="arg3"></param>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.Arguments">
+            <summary>
+            Gets the list of arguments to a test case
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.Result">
+            <summary>
+            Gets or sets the expected result.
+            </summary>
+            <value>The result.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.Categories">
+            <summary>
+            Gets a list of categories associated with this test;
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.Category">
+            <summary>
+            Gets or sets the category associated with this test.
+            May be a single category or a comma-separated list.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.ExpectedException">
+            <summary>
+            Gets or sets the expected exception.
+            </summary>
+            <value>The expected exception.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.ExpectedExceptionName">
+            <summary>
+            Gets or sets the name the expected exception.
+            </summary>
+            <value>The expected name of the exception.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.ExpectedMessage">
+            <summary>
+            Gets or sets the expected message of the expected exception
+            </summary>
+            <value>The expected message of the exception.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.MatchType">
+            <summary>
+             Gets or sets the type of match to be performed on the expected message
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.Description">
+            <summary>
+            Gets or sets the description.
+            </summary>
+            <value>The description.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.TestName">
+            <summary>
+            Gets or sets the name of the test.
+            </summary>
+            <value>The name of the test.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.Ignore">
+            <summary>
+            Gets or sets the ignored status of the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.Ignored">
+            <summary>
+            Gets or sets the ignored status of the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseAttribute.IgnoreReason">
+            <summary>
+            Gets the ignore reason.
+            </summary>
+            <value>The ignore reason.</value>
+        </member>
+        <member name="T:NUnit.Framework.TestCaseSourceAttribute">
+            <summary>
+            FactoryAttribute indicates the source to be used to
+            provide test cases for a test method.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseSourceAttribute.#ctor(System.String)">
+            <summary>
+            Construct with the name of the factory - for use with languages
+            that don't support params arrays.
+            </summary>
+            <param name="sourceName">An array of the names of the factories that will provide data</param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseSourceAttribute.#ctor(System.Type,System.String)">
+            <summary>
+            Construct with a Type and name - for use with languages
+            that don't support params arrays.
+            </summary>
+            <param name="sourceType">The Type that will provide data</param>
+            <param name="sourceName">The name of the method, property or field that will provide data</param>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseSourceAttribute.SourceName">
+            <summary>
+            The name of a the method, property or fiend to be used as a source
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseSourceAttribute.SourceType">
+            <summary>
+            A Type to be used as a source
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestFixtureAttribute">
+            <example>
+            [TestFixture]
+            public class ExampleClass 
+            {}
+            </example>
+        </member>
+        <member name="M:NUnit.Framework.TestFixtureAttribute.#ctor">
+            <summary>
+            Default constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestFixtureAttribute.#ctor(System.Object[])">
+            <summary>
+            Construct with a object[] representing a set of arguments. 
+            In .NET 2.0, the arguments may later be separated into
+            type arguments and constructor arguments.
+            </summary>
+            <param name="arguments"></param>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.Description">
+            <summary>
+            Descriptive text for this fixture
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.Category">
+            <summary>
+            Gets and sets the category for this fixture.
+            May be a comma-separated list of categories.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.Categories">
+            <summary>
+            Gets a list of categories for this fixture
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.Arguments">
+            <summary>
+            The arguments originally provided to the attribute
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.Ignore">
+            <summary>
+            Gets or sets a value indicating whether this <see cref="T:NUnit.Framework.TestFixtureAttribute"/> should be ignored.
+            </summary>
+            <value><c>true</c> if ignore; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.IgnoreReason">
+            <summary>
+            Gets or sets the ignore reason. May set Ignored as a side effect.
+            </summary>
+            <value>The ignore reason.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestFixtureAttribute.TypeArgs">
+            <summary>
+            Get or set the type arguments. If not set
+            explicitly, any leading arguments that are
+            Types are taken as type arguments.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestFixtureSetUpAttribute">
+            <summary>
+            Attribute used to identify a method that is 
+            called before any tests in a fixture are run.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestFixtureTearDownAttribute">
+            <summary>
+            Attribute used to identify a method that is called after
+            all the tests in a fixture have run. The method is 
+            guaranteed to be called, even if an exception is thrown.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TheoryAttribute">
+            <summary>
+            Adding this attribute to a method within a <seealso cref="T:NUnit.Framework.TestFixtureAttribute"/> 
+            class makes the method callable from the NUnit test runner. There is a property 
+            called Description which is optional which you can provide a more detailed test
+            description. This class cannot be inherited.
+            </summary>
+            
+            <example>
+            [TestFixture]
+            public class Fixture
+            {
+              [Test]
+              public void MethodToTest()
+              {}
+              
+              [Test(Description = "more detailed description")]
+              publc void TestDescriptionMethod()
+              {}
+            }
+            </example>
+            
+        </member>
+        <member name="T:NUnit.Framework.TimeoutAttribute">
+            <summary>
+            WUsed on a method, marks the test with a timeout value in milliseconds. 
+            The test will be run in a separate thread and is cancelled if the timeout 
+            is exceeded. Used on a method or assembly, sets the default timeout 
+            for all contained test methods.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TimeoutAttribute.#ctor(System.Int32)">
+            <summary>
+            Construct a TimeoutAttribute given a time in milliseconds
+            </summary>
+            <param name="timeout">The timeout value in milliseconds</param>
+        </member>
+        <member name="T:NUnit.Framework.RequiresSTAAttribute">
+            <summary>
+            Marks a test that must run in the STA, causing it
+            to run in a separate thread if necessary.
+            
+            On methods, you may also use STAThreadAttribute
+            to serve the same purpose.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RequiresSTAAttribute.#ctor">
+            <summary>
+            Construct a RequiresSTAAttribute
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.RequiresMTAAttribute">
+            <summary>
+            Marks a test that must run in the MTA, causing it
+            to run in a separate thread if necessary.
+            
+            On methods, you may also use MTAThreadAttribute
+            to serve the same purpose.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RequiresMTAAttribute.#ctor">
+            <summary>
+            Construct a RequiresMTAAttribute
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.RequiresThreadAttribute">
+            <summary>
+            Marks a test that must run on a separate thread.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RequiresThreadAttribute.#ctor">
+            <summary>
+            Construct a RequiresThreadAttribute
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.RequiresThreadAttribute.#ctor(System.Threading.ApartmentState)">
+            <summary>
+            Construct a RequiresThreadAttribute, specifying the apartment
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.ValueSourceAttribute">
+            <summary>
+            ValueSourceAttribute indicates the source to be used to
+            provide data for one parameter of a test method.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ValueSourceAttribute.#ctor(System.String)">
+            <summary>
+            Construct with the name of the factory - for use with languages
+            that don't support params arrays.
+            </summary>
+            <param name="sourceName">The name of the data source to be used</param>
+        </member>
+        <member name="M:NUnit.Framework.ValueSourceAttribute.#ctor(System.Type,System.String)">
+            <summary>
+            Construct with a Type and name - for use with languages
+            that don't support params arrays.
+            </summary>
+            <param name="sourceType">The Type that will provide data</param>
+            <param name="sourceName">The name of the method, property or field that will provide data</param>
+        </member>
+        <member name="P:NUnit.Framework.ValueSourceAttribute.SourceName">
+            <summary>
+            The name of a the method, property or fiend to be used as a source
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.ValueSourceAttribute.SourceType">
+            <summary>
+            A Type to be used as a source
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AttributeExistsConstraint">
+            <summary>
+            AttributeExistsConstraint tests for the presence of a
+            specified attribute on  a Type.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.Constraint">
+            <summary>
+            The Constraint class is the base of all built-in constraints
+            within NUnit. It provides the operator overloads used to combine 
+            constraints.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.IResolveConstraint">
+            <summary>
+            The IConstraintExpression interface is implemented by all
+            complete and resolvable constraints and expressions.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.IResolveConstraint.Resolve">
+            <summary>
+            Return the top-level constraint for this expression
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.UNSET">
+            <summary>
+            Static UnsetObject used to detect derived constraints
+            failing to set the actual value.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.actual">
+            <summary>
+            The actual value being tested against a constraint
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.displayName">
+            <summary>
+            The display name of this Constraint for use by ToString()
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.argcnt">
+            <summary>
+            Argument fields used by ToString();
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.Constraint.builder">
+            <summary>
+            The builder holding this constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.#ctor">
+            <summary>
+            Construct a constraint with no arguments
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.#ctor(System.Object)">
+            <summary>
+            Construct a constraint with one argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.#ctor(System.Object,System.Object)">
+            <summary>
+            Construct a constraint with two arguments
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.SetBuilder(NUnit.Framework.Constraints.ConstraintBuilder)">
+            <summary>
+            Sets the ConstraintBuilder holding this constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.WriteMessageTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the failure message to the MessageWriter provided
+            as an argument. The default implementation simply passes
+            the constraint and the actual value to the writer, which
+            then displays the constraint description and the value.
+            
+            Constraints that need to provide additional details,
+            such as where the error occured can override this.
+            </summary>
+            <param name="writer">The MessageWriter on which to display the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
+            <summary>
+            Test whether the constraint is satisfied by an
+            ActualValueDelegate that returns the value to be tested.
+            The default implementation simply evaluates the delegate
+            but derived classes may override it to provide for delayed 
+            processing.
+            </summary>
+            <param name="del">An ActualValueDelegate</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.Matches``1(``0@)">
+            <summary>
+            Test whether the constraint is satisfied by a given reference.
+            The default implementation simply dereferences the value but
+            derived classes may override it to provide for delayed processing.
+            </summary>
+            <param name="actual">A reference to the value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.ToString">
+            <summary>
+            Default override of ToString returns the constraint DisplayName
+            followed by any arguments within angle brackets.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of this constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseAnd(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            This operator creates a constraint that is satisfied only if both 
+            argument constraints are satisfied.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.op_BitwiseOr(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            This operator creates a constraint that is satisfied if either 
+            of the argument constraints is satisfied.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.op_LogicalNot(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            This operator creates a constraint that is satisfied if the 
+            argument constraint is not satisfied.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.After(System.Int32)">
+            <summary>
+            Returns a DelayedConstraint with the specified delay time.
+            </summary>
+            <param name="delayInMilliseconds">The delay in milliseconds.</param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Constraint.After(System.Int32,System.Int32)">
+            <summary>
+            Returns a DelayedConstraint with the specified delay time
+            and polling interval.
+            </summary>
+            <param name="delayInMilliseconds">The delay in milliseconds.</param>
+            <param name="pollingInterval">The interval at which to test the constraint.</param>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Constraint.DisplayName">
+            <summary>
+            The display name of this Constraint for use by ToString().
+            The default value is the name of the constraint with
+            trailing "Constraint" removed. Derived classes may set
+            this to another name in their constructors.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Constraint.And">
+            <summary>
+            Returns a ConstraintExpression by appending And
+            to the current constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Constraint.With">
+            <summary>
+            Returns a ConstraintExpression by appending And
+            to the current constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Constraint.Or">
+            <summary>
+            Returns a ConstraintExpression by appending Or
+            to the current constraint.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.Constraint.UnsetObject">
+            <summary>
+            Class used to detect any derived constraints
+            that fail to set the actual value in their
+            Matches override.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeExistsConstraint.#ctor(System.Type)">
+            <summary>
+            Constructs an AttributeExistsConstraint for a specific attribute Type
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeExistsConstraint.Matches(System.Object)">
+            <summary>
+            Tests whether the object provides the expected attribute.
+            </summary>
+            <param name="actual">A Type, MethodInfo, or other ICustomAttributeProvider</param>
+            <returns>True if the expected attribute is present, otherwise false</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeExistsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Writes the description of the constraint to the specified writer
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AttributeConstraint">
+            <summary>
+            AttributeConstraint tests that a specified attribute is present
+            on a Type or other provider and that the value of the attribute
+            satisfies some other constraint.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PrefixConstraint">
+            <summary>
+            Abstract base class used for prefixes
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.PrefixConstraint.baseConstraint">
+            <summary>
+            The base constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PrefixConstraint.#ctor(NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Construct given a base constraint
+            </summary>
+            <param name="resolvable"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.#ctor(System.Type,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Constructs an AttributeConstraint for a specified attriute
+            Type and base constraint.
+            </summary>
+            <param name="type"></param>
+            <param name="baseConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.Matches(System.Object)">
+            <summary>
+            Determines whether the Type or other provider has the 
+            expected attribute and if its value matches the
+            additional constraint specified.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Writes a description of the attribute to the specified writer.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Writes the actual value supplied to the specified writer.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeConstraint.GetStringRepresentation">
+            <summary>
+            Returns a string representation of the constraint.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.BasicConstraint">
+            <summary>
+            BasicConstraint is the abstract base for constraints that
+            perform a simple comparison to a constant value.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BasicConstraint.#ctor(System.Object,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:BasicConstraint"/> class.
+            </summary>
+            <param name="expected">The expected.</param>
+            <param name="description">The description.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BasicConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BasicConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NullConstraint">
+            <summary>
+            NullConstraint tests that the actual value is null
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NullConstraint.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:NullConstraint"/> class.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.TrueConstraint">
+            <summary>
+            TrueConstraint tests that the actual value is true
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.TrueConstraint.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:TrueConstraint"/> class.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.FalseConstraint">
+            <summary>
+            FalseConstraint tests that the actual value is false
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.FalseConstraint.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:FalseConstraint"/> class.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NaNConstraint">
+            <summary>
+            NaNConstraint tests that the actual value is a double or float NaN
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NaNConstraint.Matches(System.Object)">
+            <summary>
+            Test that the actual value is an NaN
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NaNConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a specified writer
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.BinaryConstraint">
+            <summary>
+            BinaryConstraint is the abstract base of all constraints
+            that combine two other constraints in some fashion.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.BinaryConstraint.left">
+            <summary>
+            The first constraint being combined
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.BinaryConstraint.right">
+            <summary>
+            The second constraint being combined
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinaryConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct a BinaryConstraint from two other constraints
+            </summary>
+            <param name="left">The first constraint</param>
+            <param name="right">The second constraint</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AndConstraint">
+            <summary>
+            AndConstraint succeeds only if both members succeed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Create an AndConstraint from two other constraints
+            </summary>
+            <param name="left">The first constraint</param>
+            <param name="right">The second constraint</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndConstraint.Matches(System.Object)">
+            <summary>
+            Apply both member constraints to an actual value, succeeding 
+            succeeding only if both of them succeed.
+            </summary>
+            <param name="actual">The actual value</param>
+            <returns>True if the constraints both succeeded</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description for this contraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to receive the description</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.OrConstraint">
+            <summary>
+            OrConstraint succeeds if either member succeeds
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrConstraint.#ctor(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Create an OrConstraint from two other constraints
+            </summary>
+            <param name="left">The first constraint</param>
+            <param name="right">The second constraint</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrConstraint.Matches(System.Object)">
+            <summary>
+            Apply the member constraints to an actual value, succeeding 
+            succeeding as soon as one of them succeeds.
+            </summary>
+            <param name="actual">The actual value</param>
+            <returns>True if either constraint succeeded</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description for this contraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to receive the description</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionConstraint">
+            <summary>
+            CollectionConstraint is the abstract base class for
+            constraints that operate on collections.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.#ctor">
+            <summary>
+            Construct an empty CollectionConstraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.#ctor(System.Object)">
+            <summary>
+            Construct a CollectionConstraint
+            </summary>
+            <param name="arg"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.IsEmpty(System.Collections.IEnumerable)">
+            <summary>
+            Determines whether the specified enumerable is empty.
+            </summary>
+            <param name="enumerable">The enumerable.</param>
+            <returns>
+            	<c>true</c> if the specified enumerable is empty; otherwise, <c>false</c>.
+            </returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionConstraint.doMatch(System.Collections.IEnumerable)">
+            <summary>
+            Protected method to be implemented by derived classes
+            </summary>
+            <param name="collection"></param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionItemsEqualConstraint">
+            <summary>
+            CollectionItemsEqualConstraint is the abstract base class for all
+            collection constraints that apply some notion of item equality
+            as a part of their operation.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.#ctor">
+            <summary>
+            Construct an empty CollectionConstraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.#ctor(System.Object)">
+            <summary>
+            Construct a CollectionConstraint
+            </summary>
+            <param name="arg"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using(System.Collections.IComparer)">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using``1(System.Comparison{``0})">
+            <summary>
+            Flag the constraint to use the supplied Comparison object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using(System.Collections.IEqualityComparer)">
+            <summary>
+            Flag the constraint to use the supplied IEqualityComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Using``1(System.Collections.Generic.IEqualityComparer{``0})">
+            <summary>
+            Flag the constraint to use the supplied IEqualityComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.ItemsEqual(System.Object,System.Object)">
+            <summary>
+            Compares two collection members for equality
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.Tally(System.Collections.IEnumerable)">
+            <summary>
+            Return a new CollectionTally for use in making tests
+            </summary>
+            <param name="c">The collection to be included in the tally</param>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.CollectionItemsEqualConstraint.IgnoreCase">
+            <summary>
+            Flag the constraint to ignore case and return self.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EmptyCollectionConstraint">
+            <summary>
+            EmptyCollectionConstraint tests whether a collection is empty. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyCollectionConstraint.doMatch(System.Collections.IEnumerable)">
+            <summary>
+            Check that the collection is empty
+            </summary>
+            <param name="collection"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyCollectionConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.UniqueItemsConstraint">
+            <summary>
+            UniqueItemsConstraint tests whether all the items in a 
+            collection are unique.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.doMatch(System.Collections.IEnumerable)">
+            <summary>
+            Check that all items are unique.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.UniqueItemsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionContainsConstraint">
+            <summary>
+            CollectionContainsConstraint is used to test whether a collection
+            contains an expected object as a member.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.#ctor(System.Object)">
+            <summary>
+            Construct a CollectionContainsConstraint
+            </summary>
+            <param name="expected"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.doMatch(System.Collections.IEnumerable)">
+            <summary>
+            Test whether the expected item is contained in the collection
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionContainsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a descripton of the constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionEquivalentConstraint">
+            <summary>
+            CollectionEquivalentCOnstraint is used to determine whether two
+            collections are equivalent.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.#ctor(System.Collections.IEnumerable)">
+            <summary>
+            Construct a CollectionEquivalentConstraint
+            </summary>
+            <param name="expected"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.doMatch(System.Collections.IEnumerable)">
+            <summary>
+            Test whether two collections are equivalent
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionEquivalentConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionSubsetConstraint">
+            <summary>
+            CollectionSubsetConstraint is used to determine whether
+            one collection is a subset of another
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.#ctor(System.Collections.IEnumerable)">
+            <summary>
+            Construct a CollectionSubsetConstraint
+            </summary>
+            <param name="expected">The collection that the actual value is expected to be a subset of</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.doMatch(System.Collections.IEnumerable)">
+            <summary>
+            Test whether the actual collection is a subset of 
+            the expected collection provided.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionSubsetConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionOrderedConstraint">
+            <summary>
+            CollectionOrderedConstraint is used to test whether a collection is ordered.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.#ctor">
+            <summary>
+            Construct a CollectionOrderedConstraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.Using(System.Collections.IComparer)">
+            <summary>
+            Modifies the constraint to use an IComparer and returns self.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Modifies the constraint to use an IComparer&lt;T&gt; and returns self.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.Using``1(System.Comparison{``0})">
+            <summary>
+            Modifies the constraint to use a Comparison&lt;T&gt; and returns self.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.By(System.String)">
+            <summary>
+            Modifies the constraint to test ordering by the value of
+            a specified property and returns self.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.doMatch(System.Collections.IEnumerable)">
+            <summary>
+            Test whether the collection is ordered
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of the constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOrderedConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of the constraint.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.CollectionOrderedConstraint.Descending">
+            <summary>
+             If used performs a reverse comparison
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionTally">
+            <summary>
+            CollectionTally counts (tallies) the number of
+            occurences of each object in one or more enumerations.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionTally.#ctor(NUnit.Framework.Constraints.NUnitEqualityComparer,System.Collections.IEnumerable)">
+            <summary>
+            Construct a CollectionTally object from a comparer and a collection
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionTally.TryRemove(System.Object)">
+            <summary>
+            Try to remove an object from the tally
+            </summary>
+            <param name="o">The object to remove</param>
+            <returns>True if successful, false if the object was not found</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionTally.TryRemove(System.Collections.IEnumerable)">
+            <summary>
+            Try to remove a set of objects from the tally
+            </summary>
+            <param name="c">The objects to remove</param>
+            <returns>True if successful, false if any object was not found</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.CollectionTally.Count">
+            <summary>
+            The number of objects remaining in the tally
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ComparisonAdapter">
+            <summary>
+            ComparisonAdapter class centralizes all comparisons of
+            values in NUnit, adapting to the use of any provided
+            IComparer, IComparer&lt;T&gt; or Comparison&lt;T&gt;
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.For(System.Collections.IComparer)">
+            <summary>
+            Returns a ComparisonAdapter that wraps an IComparer
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.For``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Returns a ComparisonAdapter that wraps an IComparer&lt;T&gt;
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.For``1(System.Comparison{``0})">
+            <summary>
+            Returns a ComparisonAdapter that wraps a Comparison&lt;T&gt;
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.Compare(System.Object,System.Object)">
+            <summary>
+            Compares two objects
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ComparisonAdapter.Default">
+            <summary>
+            Gets the default ComparisonAdapter, which wraps an
+            NUnitComparer object.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter.#ctor(System.Collections.IComparer)">
+            <summary>
+            Construct a ComparisonAdapter for an IComparer
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter.Compare(System.Object,System.Object)">
+            <summary>
+            Compares two objects
+            </summary>
+            <param name="expected"></param>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.DefaultComparisonAdapter.#ctor">
+            <summary>
+            Construct a default ComparisonAdapter
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter`1">
+            <summary>
+            ComparisonAdapter&lt;T&gt; extends ComparisonAdapter and
+            allows use of an IComparer&lt;T&gt; or Comparison&lt;T&gt;
+            to actually perform the comparison.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter`1.#ctor(System.Collections.Generic.IComparer{`0})">
+            <summary>
+            Construct a ComparisonAdapter for an IComparer&lt;T&gt;
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparerAdapter`1.Compare(System.Object,System.Object)">
+            <summary>
+            Compare a Type T to an object
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparisonAdapterForComparison`1.#ctor(System.Comparison{`0})">
+            <summary>
+            Construct a ComparisonAdapter for a Comparison&lt;T&gt;
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonAdapter.ComparisonAdapterForComparison`1.Compare(System.Object,System.Object)">
+            <summary>
+            Compare a Type T to an object
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ComparisonConstraint">
+            <summary>
+            Abstract base class for constraints that compare values to
+            determine if one is greater than, equal to or less than
+            the other.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.expected">
+            <summary>
+            The value against which a comparison is to be made
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.ltOK">
+            <summary>
+            If true, less than returns success
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.eqOK">
+            <summary>
+            if true, equal returns success
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.gtOK">
+            <summary>
+            if true, greater than returns success
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.predicate">
+            <summary>
+            The predicate used as a part of the description
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ComparisonConstraint.comparer">
+            <summary>
+            ComparisonAdapter to be used in making the comparison
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.#ctor(System.Object,System.Boolean,System.Boolean,System.Boolean,System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
+            </summary>
+            <param name="value">The value against which to make a comparison.</param>
+            <param name="ltOK">if set to <c>true</c> less succeeds.</param>
+            <param name="eqOK">if set to <c>true</c> equal succeeds.</param>
+            <param name="gtOK">if set to <c>true</c> greater succeeds.</param>
+            <param name="predicate">String used in describing the constraint.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Using(System.Collections.IComparer)">
+            <summary>
+            Modifies the constraint to use an IComparer and returns self
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Modifies the constraint to use an IComparer&lt;T&gt; and returns self
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ComparisonConstraint.Using``1(System.Comparison{``0})">
+            <summary>
+            Modifies the constraint to use a Comparison&lt;T&gt; and returns self
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.GreaterThanConstraint">
+            <summary>
+            Tests whether a value is greater than the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.GreaterThanConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:GreaterThanConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint">
+            <summary>
+            Tests whether a value is greater than or equal to the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.GreaterThanOrEqualConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:GreaterThanOrEqualConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.LessThanConstraint">
+            <summary>
+            Tests whether a value is less than the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.LessThanConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:LessThanConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.LessThanOrEqualConstraint">
+            <summary>
+            Tests whether a value is less than or equal to the value supplied to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.LessThanOrEqualConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:LessThanOrEqualConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ActualValueDelegate">
+            <summary>
+            Delegate used to delay evaluation of the actual value
+            to be used in evaluating a constraint
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder">
+            <summary>
+            ConstraintBuilder maintains the stacks that are used in
+            processing a ConstraintExpression. An OperatorStack
+            is used to hold operators that are waiting for their
+            operands to be reognized. a ConstraintStack holds 
+            input constraints as well as the results of each
+            operator applied.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:ConstraintBuilder"/> class.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Append(NUnit.Framework.Constraints.ConstraintOperator)">
+            <summary>
+            Appends the specified operator to the expression by first
+            reducing the operator stack and then pushing the new
+            operator on the stack.
+            </summary>
+            <param name="op">The operator to push.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Append(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Appends the specified constraint to the expresson by pushing
+            it on the constraint stack.
+            </summary>
+            <param name="constraint">The constraint to push.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.SetTopOperatorRightContext(System.Object)">
+            <summary>
+            Sets the top operator right context.
+            </summary>
+            <param name="rightContext">The right context.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ReduceOperatorStack(System.Int32)">
+            <summary>
+            Reduces the operator stack until the topmost item
+            precedence is greater than or equal to the target precedence.
+            </summary>
+            <param name="targetPrecedence">The target precedence.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.Resolve">
+            <summary>
+            Resolves this instance, returning a Constraint. If the builder
+            is not currently in a resolvable state, an exception is thrown.
+            </summary>
+            <returns>The resolved constraint</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.IsResolvable">
+            <summary>
+            Gets a value indicating whether this instance is resolvable.
+            </summary>
+            <value>
+            	<c>true</c> if this instance is resolvable; otherwise, <c>false</c>.
+            </value>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack">
+            <summary>
+            OperatorStack is a type-safe stack for holding ConstraintOperators
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
+            <summary>
+            Initializes a new instance of the <see cref="T:OperatorStack"/> class.
+            </summary>
+            <param name="builder">The builder.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Push(NUnit.Framework.Constraints.ConstraintOperator)">
+            <summary>
+            Pushes the specified operator onto the stack.
+            </summary>
+            <param name="op">The op.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Pop">
+            <summary>
+            Pops the topmost operator from the stack.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Empty">
+            <summary>
+            Gets a value indicating whether this <see cref="T:OpStack"/> is empty.
+            </summary>
+            <value><c>true</c> if empty; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.OperatorStack.Top">
+            <summary>
+            Gets the topmost operator without modifying the stack.
+            </summary>
+            <value>The top.</value>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack">
+            <summary>
+            ConstraintStack is a type-safe stack for holding Constraints
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ConstraintStack"/> class.
+            </summary>
+            <param name="builder">The builder.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Push(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Pushes the specified constraint. As a side effect,
+            the constraint's builder field is set to the 
+            ConstraintBuilder owning this stack.
+            </summary>
+            <param name="constraint">The constraint.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Pop">
+            <summary>
+            Pops this topmost constrait from the stack.
+            As a side effect, the constraint's builder
+            field is set to null.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Empty">
+            <summary>
+            Gets a value indicating whether this <see cref="T:ConstraintStack"/> is empty.
+            </summary>
+            <value><c>true</c> if empty; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack.Top">
+            <summary>
+            Gets the topmost constraint without modifying the stack.
+            </summary>
+            <value>The topmost constraint</value>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintExpression">
+            <summary>
+            ConstraintExpression represents a compound constraint in the 
+            process of being constructed from a series of syntactic elements.
+            
+            Individual elements are appended to the expression as they are
+            reognized. Once an actual Constraint is appended, the expression
+            returns a resolvable Constraint.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintExpressionBase">
+            <summary>
+            ConstraintExpressionBase is the abstract base class for the 
+            generated ConstraintExpression class, which represents a 
+            compound constraint in the process of being constructed 
+            from a series of syntactic elements.
+            
+            NOTE: ConstraintExpressionBase is aware of some of its
+            derived classes, which is an apparent violation of 
+            encapsulation. Ideally, these classes would be a 
+            single class, but they must be separated in order to
+            allow parts to be generated under .NET 1.x and to
+            provide proper user feedback in syntactically 
+            aware IDEs.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ConstraintExpressionBase.builder">
+            <summary>
+            The ConstraintBuilder holding the elements recognized so far
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:ConstraintExpressionBase"/> class.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ConstraintExpressionBase"/> 
+            class passing in a ConstraintBuilder, which may be pre-populated.
+            </summary>
+            <param name="builder">The builder.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.ToString">
+            <summary>
+            Returns a string representation of the expression as it
+            currently stands. This should only be used for testing,
+            since it has the side-effect of resolving the expression.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.Append(NUnit.Framework.Constraints.ConstraintOperator)">
+            <summary>
+            Appends an operator to the expression and returns the
+            resulting expression itself.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.Append(NUnit.Framework.Constraints.SelfResolvingOperator)">
+            <summary>
+            Appends a self-resolving operator to the expression and
+            returns a new ResolvableConstraintExpression.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpressionBase.Append(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Appends a constraint to the expression and returns that
+            constraint, which is associated with the current state
+            of the expression being built.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.#ctor">
+            <summary>
+            Initializes a new instance of the <see cref="T:ConstraintExpression"/> class.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ConstraintExpression"/> 
+            class passing in a ConstraintBuilder, which may be pre-populated.
+            </summary>
+            <param name="builder">The builder.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Property(System.String)">
+            <summary>
+            Returns a new PropertyConstraintExpression, which will either
+            test for the existence of the named property on the object
+            being tested or apply any following constraint to that property.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Attribute(System.Type)">
+            <summary>
+            Returns a new AttributeConstraint checking for the
+            presence of a particular attribute on an object.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Attribute``1">
+            <summary>
+            Returns a new AttributeConstraint checking for the
+            presence of a particular attribute on an object.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Matches(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Returns the constraint provided as an argument - used to allow custom
+            custom constraints to easily participate in the syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Matches``1(System.Predicate{``0})">
+            <summary>
+            Returns the constraint provided as an argument - used to allow custom
+            custom constraints to easily participate in the syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.EqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests two items for equality
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SameAs(System.Object)">
+            <summary>
+            Returns a constraint that tests that two references are the same object
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.GreaterThan(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.GreaterThanOrEqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AtLeast(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.LessThan(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.LessThanOrEqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AtMost(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.TypeOf(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual
+            value is of the exact type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.TypeOf``1">
+            <summary>
+            Returns a constraint that tests whether the actual
+            value is of the exact type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOf(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOf``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOfType(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InstanceOfType``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableFrom(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableFrom``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableTo(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.AssignableTo``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.EquivalentTo(System.Collections.IEnumerable)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is a collection containing the same elements as the 
+            collection supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SubsetOf(System.Collections.IEnumerable)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is a subset of the collection supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Member(System.Object)">
+            <summary>
+            Returns a new CollectionContainsConstraint checking for the
+            presence of a particular object in the collection.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Contains(System.Object)">
+            <summary>
+            Returns a new CollectionContainsConstraint checking for the
+            presence of a particular object in the collection.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Contains(System.String)">
+            <summary>
+            Returns a new ContainsConstraint. This constraint
+            will, in turn, make use of the appropriate second-level
+            constraint, depending on the type of the actual argument. 
+            This overload is only used if the item sought is a string,
+            since any other type implies that we are looking for a 
+            collection member.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringContaining(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.ContainsSubstring(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StartsWith(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringStarting(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.EndsWith(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringEnding(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.Matches(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value matches the Regex pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.StringMatching(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value matches the Regex pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SamePath(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same as an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SubPath(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same path or under an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.SamePathOrUnder(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same path or under an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintExpression.InRange(System.IComparable,System.IComparable)">
+            <summary>
+            Returns a constraint that tests whether the actual value falls 
+            within a specified range.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Not">
+            <summary>
+            Returns a ConstraintExpression that negates any
+            following constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.No">
+            <summary>
+            Returns a ConstraintExpression that negates any
+            following constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.All">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Some">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if at least one of them succeeds.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.None">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them fail.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Length">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Length property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Count">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Count property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Message">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Message property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.InnerException">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the InnerException property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.With">
+            <summary>
+            With is currently a NOP - reserved for future use.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Null">
+            <summary>
+            Returns a constraint that tests for null
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.True">
+            <summary>
+            Returns a constraint that tests for True
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.False">
+            <summary>
+            Returns a constraint that tests for False
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.NaN">
+            <summary>
+            Returns a constraint that tests for NaN
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Empty">
+            <summary>
+            Returns a constraint that tests for empty
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Unique">
+            <summary>
+            Returns a constraint that tests whether a collection 
+            contains all unique items.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.BinarySerializable">
+            <summary>
+            Returns a constraint that tests whether an object graph is serializable in binary format.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.XmlSerializable">
+            <summary>
+            Returns a constraint that tests whether an object graph is serializable in xml format.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintExpression.Ordered">
+            <summary>
+            Returns a constraint that tests whether a collection is ordered
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintFactory">
+            <summary>
+            Helper class with properties and methods that supply
+            a number of constraints used in Asserts.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Property(System.String)">
+            <summary>
+            Returns a new PropertyConstraintExpression, which will either
+            test for the existence of the named property on the object
+            being tested or apply any following constraint to that property.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Attribute(System.Type)">
+            <summary>
+            Returns a new AttributeConstraint checking for the
+            presence of a particular attribute on an object.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Attribute``1">
+            <summary>
+            Returns a new AttributeConstraint checking for the
+            presence of a particular attribute on an object.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.EqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests two items for equality
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SameAs(System.Object)">
+            <summary>
+            Returns a constraint that tests that two references are the same object
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.GreaterThan(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.GreaterThanOrEqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AtLeast(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.LessThan(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.LessThanOrEqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AtMost(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.TypeOf(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual
+            value is of the exact type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.TypeOf``1">
+            <summary>
+            Returns a constraint that tests whether the actual
+            value is of the exact type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOf(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOf``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOfType(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InstanceOfType``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableFrom(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableFrom``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableTo(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.AssignableTo``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.EquivalentTo(System.Collections.IEnumerable)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is a collection containing the same elements as the 
+            collection supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SubsetOf(System.Collections.IEnumerable)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is a subset of the collection supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Member(System.Object)">
+            <summary>
+            Returns a new CollectionContainsConstraint checking for the
+            presence of a particular object in the collection.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Contains(System.Object)">
+            <summary>
+            Returns a new CollectionContainsConstraint checking for the
+            presence of a particular object in the collection.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Contains(System.String)">
+            <summary>
+            Returns a new ContainsConstraint. This constraint
+            will, in turn, make use of the appropriate second-level
+            constraint, depending on the type of the actual argument. 
+            This overload is only used if the item sought is a string,
+            since any other type implies that we are looking for a 
+            collection member.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringContaining(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.ContainsSubstring(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotContain(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StartsWith(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringStarting(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotStartWith(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.EndsWith(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringEnding(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotEndWith(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.Matches(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value matches the Regex pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.StringMatching(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value matches the Regex pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.DoesNotMatch(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value matches the pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SamePath(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same as an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SubPath(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same path or under an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.SamePathOrUnder(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same path or under an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintFactory.InRange(System.IComparable,System.IComparable)">
+            <summary>
+            Returns a constraint that tests whether the actual value falls 
+            within a specified range.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Not">
+            <summary>
+            Returns a ConstraintExpression that negates any
+            following constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.No">
+            <summary>
+            Returns a ConstraintExpression that negates any
+            following constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.All">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Some">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if at least one of them succeeds.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.None">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them fail.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Length">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Length property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Count">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Count property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Message">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Message property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.InnerException">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the InnerException property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Null">
+            <summary>
+            Returns a constraint that tests for null
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.True">
+            <summary>
+            Returns a constraint that tests for True
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.False">
+            <summary>
+            Returns a constraint that tests for False
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.NaN">
+            <summary>
+            Returns a constraint that tests for NaN
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Empty">
+            <summary>
+            Returns a constraint that tests for empty
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Unique">
+            <summary>
+            Returns a constraint that tests whether a collection 
+            contains all unique items.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.BinarySerializable">
+            <summary>
+            Returns a constraint that tests whether an object graph is serializable in binary format.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.XmlSerializable">
+            <summary>
+            Returns a constraint that tests whether an object graph is serializable in xml format.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintFactory.Ordered">
+            <summary>
+            Returns a constraint that tests whether a collection is ordered
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ConstraintOperator">
+            <summary>
+            The ConstraintOperator class is used internally by a
+            ConstraintBuilder to represent an operator that 
+            modifies or combines constraints. 
+            
+            Constraint operators use left and right precedence
+            values to determine whether the top operator on the
+            stack should be reduced before pushing a new operator.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ConstraintOperator.left_precedence">
+            <summary>
+            The precedence value used when the operator
+            is about to be pushed to the stack.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ConstraintOperator.right_precedence">
+            <summary>
+            The precedence value used when the operator
+            is on the top of the stack.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ConstraintOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
+            <summary>
+            Reduce produces a constraint from the operator and 
+            any arguments. It takes the arguments from the constraint 
+            stack and pushes the resulting constraint on it.
+            </summary>
+            <param name="stack"></param>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.LeftContext">
+            <summary>
+            The syntax element preceding this operator
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.RightContext">
+            <summary>
+            The syntax element folowing this operator
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.LeftPrecedence">
+            <summary>
+            The precedence value used when the operator
+            is about to be pushed to the stack.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ConstraintOperator.RightPrecedence">
+            <summary>
+            The precedence value used when the operator
+            is on the top of the stack.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PrefixOperator">
+            <summary>
+            PrefixOperator takes a single constraint and modifies
+            it's action in some way.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PrefixOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
+            <summary>
+            Reduce produces a constraint from the operator and 
+            any arguments. It takes the arguments from the constraint 
+            stack and pushes the resulting constraint on it.
+            </summary>
+            <param name="stack"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PrefixOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Returns the constraint created by applying this
+            prefix to another constraint.
+            </summary>
+            <param name="constraint"></param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NotOperator">
+            <summary>
+            Negates the test of the constraint it wraps.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotOperator.#ctor">
+            <summary>
+            Constructs a new NotOperator
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Returns a NotConstraint applied to its argument.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.CollectionOperator">
+            <summary>
+            Abstract base for operators that indicate how to
+            apply a constraint to items in a collection.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.CollectionOperator.#ctor">
+            <summary>
+            Constructs a CollectionOperator
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AllOperator">
+            <summary>
+            Represents a constraint that succeeds if all the 
+            members of a collection match a base constraint.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AllOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Returns a constraint that will apply the argument
+            to the members of a collection, succeeding if
+            they all succeed.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SomeOperator">
+            <summary>
+            Represents a constraint that succeeds if any of the 
+            members of a collection match a base constraint.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SomeOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Returns a constraint that will apply the argument
+            to the members of a collection, succeeding if
+            any of them succeed.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NoneOperator">
+            <summary>
+            Represents a constraint that succeeds if none of the 
+            members of a collection match a base constraint.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NoneOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Returns a constraint that will apply the argument
+            to the members of a collection, succeeding if
+            none of them succeed.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.WithOperator">
+            <summary>
+            Represents a constraint that simply wraps the
+            constraint provided as an argument, without any
+            further functionality, but which modifes the
+            order of evaluation because of its precedence.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.WithOperator.#ctor">
+            <summary>
+            Constructor for the WithOperator
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.WithOperator.ApplyPrefix(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Returns a constraint that wraps its argument
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SelfResolvingOperator">
+            <summary>
+            Abstract base class for operators that are able to reduce to a 
+            constraint whether or not another syntactic element follows.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PropOperator">
+            <summary>
+            Operator used to test for the presence of a named Property
+            on an object and optionally apply further tests to the
+            value of that property.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropOperator.#ctor(System.String)">
+            <summary>
+            Constructs a PropOperator for a particular named property
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
+            <summary>
+            Reduce produces a constraint from the operator and 
+            any arguments. It takes the arguments from the constraint 
+            stack and pushes the resulting constraint on it.
+            </summary>
+            <param name="stack"></param>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.PropOperator.Name">
+            <summary>
+            Gets the name of the property to which the operator applies
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AttributeOperator">
+            <summary>
+            Operator that tests for the presence of a particular attribute
+            on a type and optionally applies further tests to the attribute.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeOperator.#ctor(System.Type)">
+            <summary>
+            Construct an AttributeOperator for a particular Type
+            </summary>
+            <param name="type">The Type of attribute tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AttributeOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
+            <summary>
+            Reduce produces a constraint from the operator and 
+            any arguments. It takes the arguments from the constraint 
+            stack and pushes the resulting constraint on it.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ThrowsOperator">
+            <summary>
+            Operator that tests that an exception is thrown and
+            optionally applies further tests to the exception.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsOperator.#ctor">
+            <summary>
+            Construct a ThrowsOperator
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
+            <summary>
+            Reduce produces a constraint from the operator and 
+            any arguments. It takes the arguments from the constraint 
+            stack and pushes the resulting constraint on it.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.BinaryOperator">
+            <summary>
+            Abstract base class for all binary operators
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinaryOperator.Reduce(NUnit.Framework.Constraints.ConstraintBuilder.ConstraintStack)">
+            <summary>
+            Reduce produces a constraint from the operator and 
+            any arguments. It takes the arguments from the constraint 
+            stack and pushes the resulting constraint on it.
+            </summary>
+            <param name="stack"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinaryOperator.ApplyOperator(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Abstract method that produces a constraint by applying
+            the operator to its left and right constraint arguments.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.BinaryOperator.LeftPrecedence">
+            <summary>
+            Gets the left precedence of the operator
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.BinaryOperator.RightPrecedence">
+            <summary>
+            Gets the right precedence of the operator
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AndOperator">
+            <summary>
+            Operator that requires both it's arguments to succeed
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndOperator.#ctor">
+            <summary>
+            Construct an AndOperator
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AndOperator.ApplyOperator(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Apply the operator to produce an AndConstraint
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.OrOperator">
+            <summary>
+            Operator that requires at least one of it's arguments to succeed
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrOperator.#ctor">
+            <summary>
+            Construct an OrOperator
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.OrOperator.ApplyOperator(NUnit.Framework.Constraints.Constraint,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Apply the operator to produce an OrConstraint
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ContainsConstraint">
+            <summary>
+            ContainsConstraint tests a whether a string contains a substring
+            or a collection contains an object. It postpones the decision of
+            which test to use until the type of the actual argument is known.
+            This allows testing whether a string is contained in a collection
+            or as a substring of another string using the same syntax.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ContainsConstraint"/> class.
+            </summary>
+            <param name="expected">The expected.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using(System.Collections.IComparer)">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using``1(System.Comparison{``0})">
+            <summary>
+            Flag the constraint to use the supplied Comparison object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using(System.Collections.IEqualityComparer)">
+            <summary>
+            Flag the constraint to use the supplied IEqualityComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ContainsConstraint.Using``1(System.Collections.Generic.IEqualityComparer{``0})">
+            <summary>
+            Flag the constraint to use the supplied IEqualityComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ContainsConstraint.IgnoreCase">
+            <summary>
+            Flag the constraint to ignore case and return self.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.DelayedConstraint">
+            <summary>
+             Applies a delay to the match so that a match can be evaluated in the future.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.#ctor(NUnit.Framework.Constraints.Constraint,System.Int32)">
+            <summary>
+             Creates a new DelayedConstraint
+            </summary>
+            <param name="baseConstraint">The inner constraint two decorate</param>
+            <param name="delayInMilliseconds">The time interval after which the match is performed</param>
+            <exception cref="T:System.InvalidOperationException">If the value of <paramref name="delayInMilliseconds"/> is less than 0</exception>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.#ctor(NUnit.Framework.Constraints.Constraint,System.Int32,System.Int32)">
+            <summary>
+             Creates a new DelayedConstraint
+            </summary>
+            <param name="baseConstraint">The inner constraint two decorate</param>
+            <param name="delayInMilliseconds">The time interval after which the match is performed</param>
+            <param name="pollingInterval">The time interval used for polling</param>
+            <exception cref="T:System.InvalidOperationException">If the value of <paramref name="delayInMilliseconds"/> is less than 0</exception>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for if the base constraint fails, false if it succeeds</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
+            <summary>
+            Test whether the constraint is satisfied by a delegate
+            </summary>
+            <param name="del">The delegate whose value is to be tested</param>
+            <returns>True for if the base constraint fails, false if it succeeds</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.Matches``1(``0@)">
+            <summary>
+            Test whether the constraint is satisfied by a given reference.
+            Overridden to wait for the specified delay period before
+            calling the base constraint with the dereferenced value.
+            </summary>
+            <param name="actual">A reference to the value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a MessageWriter.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.DelayedConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of the constraint.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EmptyDirectoryContraint">
+            <summary>
+            EmptyDirectoryConstraint is used to test that a directory is empty
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyDirectoryContraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyDirectoryContraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyDirectoryContraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EmptyConstraint">
+            <summary>
+            EmptyConstraint tests a whether a string or collection is empty,
+            postponing the decision about which test is applied until the
+            type of the actual argument is known.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EqualConstraint">
+            <summary>
+            EqualConstraint is able to compare an actual value with the
+            expected value provided in its constructor. Two objects are 
+            considered equal if both are null, or if both have the same 
+            value. NUnit has special semantics for some object types.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.EqualConstraint.clipStrings">
+            <summary>
+            If true, strings in error messages will be clipped
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.EqualConstraint.comparer">
+            <summary>
+            NUnitEqualityComparer used to test equality.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NUnit.Framework.Constraints.EqualConstraint"/> class.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Within(System.Object)">
+            <summary>
+            Flag the constraint to use a tolerance when determining equality.
+            </summary>
+            <param name="amount">Tolerance value to be used</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Comparer(System.Collections.IComparer)">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using(System.Collections.IComparer)">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Flag the constraint to use the supplied IComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using``1(System.Comparison{``0})">
+            <summary>
+            Flag the constraint to use the supplied Comparison object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using(System.Collections.IEqualityComparer)">
+            <summary>
+            Flag the constraint to use the supplied IEqualityComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Using``1(System.Collections.Generic.IEqualityComparer{``0})">
+            <summary>
+            Flag the constraint to use the supplied IEqualityComparer object.
+            </summary>
+            <param name="comparer">The IComparer object to use.</param>
+            <returns>Self.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteMessageTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a failure message. Overridden to provide custom 
+            failure messages for EqualConstraint.
+            </summary>
+            <param name="writer">The MessageWriter to write to</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write description of this constraint
+            </summary>
+            <param name="writer">The MessageWriter to write to</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionDifferences(NUnit.Framework.Constraints.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
+            <summary>
+            Display the failure information for two collections that did not match.
+            </summary>
+            <param name="writer">The MessageWriter on which to display</param>
+            <param name="expected">The expected collection.</param>
+            <param name="actual">The actual collection</param>
+            <param name="depth">The depth of this failure in a set of nested collections</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayCollectionTypesAndSizes(NUnit.Framework.Constraints.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32)">
+            <summary>
+            Displays a single line showing the types and sizes of the expected
+            and actual collections or arrays. If both are identical, the value is 
+            only shown once.
+            </summary>
+            <param name="writer">The MessageWriter on which to display</param>
+            <param name="expected">The expected collection or array</param>
+            <param name="actual">The actual collection or array</param>
+            <param name="indent">The indentation level for the message line</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualConstraint.DisplayFailurePoint(NUnit.Framework.Constraints.MessageWriter,System.Collections.ICollection,System.Collections.ICollection,System.Int32,System.Int32)">
+            <summary>
+            Displays a single line showing the point in the expected and actual
+            arrays at which the comparison failed. If the arrays have different
+            structures or dimensions, both values are shown.
+            </summary>
+            <param name="writer">The MessageWriter on which to display</param>
+            <param name="expected">The expected array</param>
+            <param name="actual">The actual array</param>
+            <param name="failurePoint">Index of the failure point in the underlying collections</param>
+            <param name="indent">The indentation level for the message line</param>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.IgnoreCase">
+            <summary>
+            Flag the constraint to ignore case and return self.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.NoClip">
+            <summary>
+            Flag the constraint to suppress string clipping 
+            and return self.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.AsCollection">
+            <summary>
+            Flag the constraint to compare arrays as collections
+            and return self.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Ulps">
+            <summary>
+            Switches the .Within() modifier to interpret its tolerance as
+            a distance in representable values (see remarks).
+            </summary>
+            <returns>Self.</returns>
+            <remarks>
+            Ulp stands for "unit in the last place" and describes the minimum
+            amount a given value can change. For any integers, an ulp is 1 whole
+            digit. For floating point values, the accuracy of which is better
+            for smaller numbers and worse for larger numbers, an ulp depends
+            on the size of the number. Using ulps for comparison of floating
+            point results instead of fixed tolerances is safer because it will
+            automatically compensate for the added inaccuracy of larger numbers.
+            </remarks>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Percent">
+            <summary>
+            Switches the .Within() modifier to interpret its tolerance as
+            a percentage that the actual values is allowed to deviate from
+            the expected value.
+            </summary>
+            <returns>Self</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Days">
+            <summary>
+            Causes the tolerance to be interpreted as a TimeSpan in days.
+            </summary>
+            <returns>Self</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Hours">
+            <summary>
+            Causes the tolerance to be interpreted as a TimeSpan in hours.
+            </summary>
+            <returns>Self</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Minutes">
+            <summary>
+            Causes the tolerance to be interpreted as a TimeSpan in minutes.
+            </summary>
+            <returns>Self</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Seconds">
+            <summary>
+            Causes the tolerance to be interpreted as a TimeSpan in seconds.
+            </summary>
+            <returns>Self</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Milliseconds">
+            <summary>
+            Causes the tolerance to be interpreted as a TimeSpan in milliseconds.
+            </summary>
+            <returns>Self</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.EqualConstraint.Ticks">
+            <summary>
+            Causes the tolerance to be interpreted as a TimeSpan in clock ticks.
+            </summary>
+            <returns>Self</returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EqualityAdapter">
+            <summary>
+            EqualityAdapter class handles all equality comparisons
+            that use an IEqualityComparer, IEqualityComparer&lt;T&gt;
+            or a ComparisonAdapter.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.ObjectsEqual(System.Object,System.Object)">
+            <summary>
+            Compares two objects, returning true if they are equal
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For(System.Collections.IComparer)">
+            <summary>
+            Returns an EqualityAdapter that wraps an IComparer.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For(System.Collections.IEqualityComparer)">
+            <summary>
+            Returns an EqualityAdapter that wraps an IEqualityComparer.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For``1(System.Collections.Generic.IEqualityComparer{``0})">
+            <summary>
+            Returns an EqualityAdapter that wraps an IEqualityComparer&lt;T&gt;.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Returns an EqualityAdapter that wraps an IComparer&lt;T&gt;.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EqualityAdapter.For``1(System.Comparison{``0})">
+            <summary>
+            Returns an EqualityAdapter that wraps a Comparison&lt;T&gt;.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.FloatingPointNumerics">
+            <summary>Helper routines for working with floating point numbers</summary>
+            <remarks>
+              <para>
+                The floating point comparison code is based on this excellent article:
+                http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
+              </para>
+              <para>
+                "ULP" means Unit in the Last Place and in the context of this library refers to
+                the distance between two adjacent floating point numbers. IEEE floating point
+                numbers can only represent a finite subset of natural numbers, with greater
+                accuracy for smaller numbers and lower accuracy for very large numbers.
+              </para>
+              <para>
+                If a comparison is allowed "2 ulps" of deviation, that means the values are
+                allowed to deviate by up to 2 adjacent floating point values, which might be
+                as low as 0.0000001 for small numbers or as high as 10.0 for large numbers.
+              </para>
+            </remarks>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.AreAlmostEqualUlps(System.Single,System.Single,System.Int32)">
+            <summary>Compares two floating point values for equality</summary>
+            <param name="left">First floating point value to be compared</param>
+            <param name="right">Second floating point value t be compared</param>
+            <param name="maxUlps">
+              Maximum number of representable floating point values that are allowed to
+              be between the left and the right floating point values
+            </param>
+            <returns>True if both numbers are equal or close to being equal</returns>
+            <remarks>
+              <para>
+                Floating point values can only represent a finite subset of natural numbers.
+                For example, the values 2.00000000 and 2.00000024 can be stored in a float,
+                but nothing inbetween them.
+              </para>
+              <para>
+                This comparison will count how many possible floating point values are between
+                the left and the right number. If the number of possible values between both
+                numbers is less than or equal to maxUlps, then the numbers are considered as
+                being equal.
+              </para>
+              <para>
+                Implementation partially follows the code outlined here:
+                http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/
+              </para>
+            </remarks>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.AreAlmostEqualUlps(System.Double,System.Double,System.Int64)">
+            <summary>Compares two double precision floating point values for equality</summary>
+            <param name="left">First double precision floating point value to be compared</param>
+            <param name="right">Second double precision floating point value t be compared</param>
+            <param name="maxUlps">
+              Maximum number of representable double precision floating point values that are
+              allowed to be between the left and the right double precision floating point values
+            </param>
+            <returns>True if both numbers are equal or close to being equal</returns>
+            <remarks>
+              <para>
+                Double precision floating point values can only represent a limited series of
+                natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004
+                can be stored in a double, but nothing inbetween them.
+              </para>
+              <para>
+                This comparison will count how many possible double precision floating point
+                values are between the left and the right number. If the number of possible
+                values between both numbers is less than or equal to maxUlps, then the numbers
+                are considered as being equal.
+              </para>
+              <para>
+                Implementation partially follows the code outlined here:
+                http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/
+              </para>
+            </remarks>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsInt(System.Single)">
+            <summary>
+              Reinterprets the memory contents of a floating point value as an integer value
+            </summary>
+            <param name="value">
+              Floating point value whose memory contents to reinterpret
+            </param>
+            <returns>
+              The memory contents of the floating point value interpreted as an integer
+            </returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsLong(System.Double)">
+            <summary>
+              Reinterprets the memory contents of a double precision floating point
+              value as an integer value
+            </summary>
+            <param name="value">
+              Double precision floating point value whose memory contents to reinterpret
+            </param>
+            <returns>
+              The memory contents of the double precision floating point value
+              interpreted as an integer
+            </returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsFloat(System.Int32)">
+            <summary>
+              Reinterprets the memory contents of an integer as a floating point value
+            </summary>
+            <param name="value">Integer value whose memory contents to reinterpret</param>
+            <returns>
+              The memory contents of the integer value interpreted as a floating point value
+            </returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.FloatingPointNumerics.ReinterpretAsDouble(System.Int64)">
+            <summary>
+              Reinterprets the memory contents of an integer value as a double precision
+              floating point value
+            </summary>
+            <param name="value">Integer whose memory contents to reinterpret</param>
+            <returns>
+              The memory contents of the integer interpreted as a double precision
+              floating point value
+            </returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion">
+            <summary>Union of a floating point variable and an integer</summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion.Float">
+            <summary>The union's value as a floating point variable</summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion.Int">
+            <summary>The union's value as an integer</summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.FloatIntUnion.UInt">
+            <summary>The union's value as an unsigned integer</summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion">
+            <summary>Union of a double precision floating point variable and a long</summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion.Double">
+            <summary>The union's value as a double precision floating point variable</summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion.Long">
+            <summary>The union's value as a long</summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.FloatingPointNumerics.DoubleLongUnion.ULong">
+            <summary>The union's value as an unsigned long</summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.MessageWriter">
+            <summary>
+            MessageWriter is the abstract base for classes that write
+            constraint descriptions and messages in some form. The
+            class has separate methods for writing various components
+            of a message, allowing implementations to tailor the
+            presentation as needed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.#ctor">
+            <summary>
+            Construct a MessageWriter given a culture
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteMessageLine(System.String,System.Object[])">
+            <summary>
+            Method to write single line  message with optional args, usually
+            written to precede the general failure message.
+            </summary>
+            <param name="message">The message to be written</param>
+            <param name="args">Any arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
+            <summary>
+            Method to write single line  message with optional args, usually
+            written to precede the general failure message, at a givel 
+            indentation level.
+            </summary>
+            <param name="level">The indentation level of the message</param>
+            <param name="message">The message to be written</param>
+            <param name="args">Any arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Display Expected and Actual lines for a constraint. This
+            is called by MessageWriter's default implementation of 
+            WriteMessageTo and provides the generic two-line display. 
+            </summary>
+            <param name="constraint">The constraint that failed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayDifferences(System.Object,System.Object)">
+            <summary>
+            Display Expected and Actual lines for given values. This
+            method may be called by constraints that need more control over
+            the display of actual and expected values than is provided
+            by the default implementation.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayDifferences(System.Object,System.Object,NUnit.Framework.Constraints.Tolerance)">
+            <summary>
+            Display Expected and Actual lines for given values, including
+            a tolerance value on the Expected line.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+            <param name="tolerance">The tolerance within which the test was made</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean,System.Boolean)">
+            <summary>
+            Display the expected and actual string values on separate lines.
+            If the mismatch parameter is >=0, an additional line is displayed
+            line containing a caret that points to the mismatch point.
+            </summary>
+            <param name="expected">The expected string value</param>
+            <param name="actual">The actual string value</param>
+            <param name="mismatch">The point at which the strings don't match or -1</param>
+            <param name="ignoreCase">If true, case is ignored in locating the point where the strings differ</param>
+            <param name="clipping">If true, the strings should be clipped to fit the line</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteConnector(System.String)">
+            <summary>
+            Writes the text for a connector.
+            </summary>
+            <param name="connector">The connector.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WritePredicate(System.String)">
+            <summary>
+            Writes the text for a predicate.
+            </summary>
+            <param name="predicate">The predicate.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteExpectedValue(System.Object)">
+            <summary>
+            Writes the text for an expected value.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteModifier(System.String)">
+            <summary>
+            Writes the text for a modifier
+            </summary>
+            <param name="modifier">The modifier.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteActualValue(System.Object)">
+            <summary>
+            Writes the text for an actual value.
+            </summary>
+            <param name="actual">The actual value.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteValue(System.Object)">
+            <summary>
+            Writes the text for a generalized value.
+            </summary>
+            <param name="val">The value.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
+            <summary>
+            Writes the text for a collection value,
+            starting at a particular point, to a max length
+            </summary>
+            <param name="collection">The collection containing elements to write.</param>
+            <param name="start">The starting point of the elements to write</param>
+            <param name="max">The maximum number of elements to write</param>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.MessageWriter.MaxLineLength">
+            <summary>
+            Abstract method to get the max line length
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.MsgUtils">
+            <summary>
+            Static methods used in creating messages
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.MsgUtils.ELLIPSIS">
+            <summary>
+            Static string used when strings are clipped
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MsgUtils.GetTypeRepresentation(System.Object)">
+            <summary>
+            Returns the representation of a type as used in NUnitLite.
+            This is the same as Type.ToString() except for arrays,
+            which are displayed with their declared sizes.
+            </summary>
+            <param name="obj"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MsgUtils.EscapeControlChars(System.String)">
+            <summary>
+            Converts any control characters in a string 
+            to their escaped representation.
+            </summary>
+            <param name="s">The string to be converted</param>
+            <returns>The converted string</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MsgUtils.GetArrayIndicesAsString(System.Int32[])">
+            <summary>
+            Return the a string representation for a set of indices into an array
+            </summary>
+            <param name="indices">Array of indices for which a string is needed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MsgUtils.GetArrayIndicesFromCollectionIndex(System.Collections.ICollection,System.Int32)">
+            <summary>
+            Get an array of indices representing the point in a collection or
+            array corresponding to a single int index into the collection.
+            </summary>
+            <param name="collection">The collection to which the indices apply</param>
+            <param name="index">Index in the collection</param>
+            <returns>Array of indices</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MsgUtils.ClipString(System.String,System.Int32,System.Int32)">
+            <summary>
+            Clip a string to a given length, starting at a particular offset, returning the clipped
+            string with ellipses representing the removed parts
+            </summary>
+            <param name="s">The string to be clipped</param>
+            <param name="maxStringLength">The maximum permitted length of the result string</param>
+            <param name="clipStart">The point at which to start clipping</param>
+            <returns>The clipped string</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MsgUtils.ClipExpectedAndActual(System.String@,System.String@,System.Int32,System.Int32)">
+            <summary>
+            Clip the expected and actual strings in a coordinated fashion, 
+            so that they may be displayed together.
+            </summary>
+            <param name="expected"></param>
+            <param name="actual"></param>
+            <param name="maxDisplayLength"></param>
+            <param name="mismatch"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.MsgUtils.FindMismatchPosition(System.String,System.String,System.Int32,System.Boolean)">
+            <summary>
+            Shows the position two strings start to differ.  Comparison 
+            starts at the start index.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="istart">The index in the strings at which comparison should start</param>
+            <param name="ignoreCase">Boolean indicating whether case should be ignored</param>
+            <returns>-1 if no mismatch found, or the index where mismatch found</returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.Numerics">
+            <summary>
+            The Numerics class contains common operations on numeric values.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.IsNumericType(System.Object)">
+            <summary>
+            Checks the type of the object, returning true if
+            the object is a numeric type.
+            </summary>
+            <param name="obj">The object to check</param>
+            <returns>true if the object is a numeric type</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.IsFloatingPointNumeric(System.Object)">
+            <summary>
+            Checks the type of the object, returning true if
+            the object is a floating point numeric type.
+            </summary>
+            <param name="obj">The object to check</param>
+            <returns>true if the object is a floating point numeric type</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.IsFixedPointNumeric(System.Object)">
+            <summary>
+            Checks the type of the object, returning true if
+            the object is a fixed point numeric type.
+            </summary>
+            <param name="obj">The object to check</param>
+            <returns>true if the object is a fixed point numeric type</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.AreEqual(System.Object,System.Object,NUnit.Framework.Constraints.Tolerance@)">
+            <summary>
+            Test two numeric values for equality, performing the usual numeric 
+            conversions and using a provided or default tolerance. If the tolerance 
+            provided is Empty, this method may set it to a default tolerance.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="tolerance">A reference to the tolerance in effect</param>
+            <returns>True if the values are equal</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Numerics.Compare(System.Object,System.Object)">
+            <summary>
+            Compare two numeric values, performing the usual numeric conversions.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <returns>The relationship of the values to each other</returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NUnitComparer">
+            <summary>
+            NUnitComparer encapsulates NUnit's default behavior
+            in comparing two objects.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NUnitComparer.Compare(System.Object,System.Object)">
+            <summary>
+            Compares two objects
+            </summary>
+            <param name="x"></param>
+            <param name="y"></param>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.NUnitComparer.Default">
+            <summary>
+            Returns the default NUnitComparer.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NUnitEqualityComparer">
+            <summary>
+            NUnitEqualityComparer encapsulates NUnit's handling of
+            equality tests between objects.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.caseInsensitive">
+            <summary>
+            If true, all string comparisons will ignore case
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.compareAsCollection">
+            <summary>
+            If true, arrays will be treated as collections, allowing
+            those of different dimensions to be compared
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.tolerance">
+            <summary>
+            If non-zero, equality comparisons within the specified 
+            tolerance will succeed.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.NUnitEqualityComparer.externalComparer">
+            <summary>
+            Comparison object used in comparisons for some constraints.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NUnitEqualityComparer.ObjectsEqual(System.Object,System.Object)">
+            <summary>
+            Compares two objects for equality.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NUnitEqualityComparer.ArraysEqual(System.Array,System.Array)">
+            <summary>
+            Helper method to compare two arrays
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NUnitEqualityComparer.DirectoriesEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
+            <summary>
+            Method to compare two DirectoryInfo objects
+            </summary>
+            <param name="x">first directory to compare</param>
+            <param name="y">second directory to compare</param>
+            <returns>true if equivalent, false if not</returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.Default">
+            <summary>
+            Returns the default NUnitEqualityComparer
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.IgnoreCase">
+            <summary>
+            Gets and sets a flag indicating whether case should
+            be ignored in determining equality.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.CompareAsCollection">
+            <summary>
+            Gets and sets a flag indicating that arrays should be
+            compared as collections, without regard to their shape.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.ExternalComparer">
+            <summary>
+            Gets and sets an external comparer to be used to
+            test for equality. It is applied to members of
+            collections, in place of NUnit's own logic.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.Tolerance">
+            <summary>
+            Gets and sets a tolerance used to compare objects of 
+            certin types.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.NUnitEqualityComparer.FailurePoints">
+            <summary>
+            Gets the list of failure points for the last Match performed.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PathConstraint">
+            <summary>
+            PathConstraint serves as the abstract base of constraints
+            that operate on paths and provides several helper methods.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.PathConstraint.expectedPath">
+            <summary>
+            The expected path used in the constraint
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.PathConstraint.actualPath">
+            <summary>
+            The actual path being tested
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.PathConstraint.caseInsensitive">
+            <summary>
+            Flag indicating whether a caseInsensitive comparison should be made
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.#ctor(System.String)">
+            <summary>
+            Construct a PathConstraint for a give expected path
+            </summary>
+            <param name="expected">The expected path</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsMatch(System.String,System.String)">
+            <summary>
+            Returns true if the expected path and actual path match
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of this constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.Canonicalize(System.String)">
+            <summary>
+            Canonicalize the provided path
+            </summary>
+            <param name="path"></param>
+            <returns>The path in standardized form</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsSamePath(System.String,System.String,System.Boolean)">
+            <summary>
+            Test whether two paths are the same
+            </summary>
+            <param name="path1">The first path</param>
+            <param name="path2">The second path</param>
+            <param name="ignoreCase">Indicates whether case should be ignored</param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsSubPath(System.String,System.String,System.Boolean)">
+            <summary>
+            Test whether one path is under another path
+            </summary>
+            <param name="path1">The first path - supposed to be the parent path</param>
+            <param name="path2">The second path - supposed to be the child path</param>
+            <param name="ignoreCase">Indicates whether case should be ignored</param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PathConstraint.IsSamePathOrUnder(System.String,System.String)">
+            <summary>
+            Test whether one path is the same as or under another path
+            </summary>
+            <param name="path1">The first path - supposed to be the parent path</param>
+            <param name="path2">The second path - supposed to be the child path</param>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.PathConstraint.IgnoreCase">
+            <summary>
+            Modifies the current instance to be case-insensitve
+            and returns it.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.PathConstraint.RespectCase">
+            <summary>
+            Modifies the current instance to be case-sensitve
+            and returns it.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SamePathConstraint">
+            <summary>
+            Summary description for SamePathConstraint.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SamePathConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:SamePathConstraint"/> class.
+            </summary>
+            <param name="expected">The expected path</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SamePathConstraint.IsMatch(System.String,System.String)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="expectedPath">The expected path</param>
+            <param name="actualPath">The actual path</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SamePathConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SubPathConstraint">
+            <summary>
+            SubPathConstraint tests that the actual path is under the expected path
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubPathConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:SubPathConstraint"/> class.
+            </summary>
+            <param name="expected">The expected path</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubPathConstraint.IsMatch(System.String,System.String)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="expectedPath">The expected path</param>
+            <param name="actualPath">The actual path</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubPathConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SamePathOrUnderConstraint">
+            <summary>
+            SamePathOrUnderConstraint tests that one path is under another
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SamePathOrUnderConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:SamePathOrUnderConstraint"/> class.
+            </summary>
+            <param name="expected">The expected path</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SamePathOrUnderConstraint.IsMatch(System.String,System.String)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="expectedPath">The expected path</param>
+            <param name="actualPath">The actual path</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SamePathOrUnderConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PredicateConstraint`1">
+            <summary>
+            Predicate constraint wraps a Predicate in a constraint,
+            returning success if the predicate is true.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PredicateConstraint`1.#ctor(System.Predicate{`0})">
+            <summary>
+            Construct a PredicateConstraint from a predicate
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PredicateConstraint`1.Matches(System.Object)">
+            <summary>
+            Determines whether the predicate succeeds when applied
+            to the actual value.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PredicateConstraint`1.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Writes the description to a MessageWriter
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NotConstraint">
+            <summary>
+            NotConstraint negates the effect of some other constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Initializes a new instance of the <see cref="T:NotConstraint"/> class.
+            </summary>
+            <param name="baseConstraint">The base constraint to be negated.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for if the base constraint fails, false if it succeeds</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NotConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a MessageWriter.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AllItemsConstraint">
+            <summary>
+            AllItemsConstraint applies another constraint to each
+            item in a collection, succeeding if they all succeed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct an AllItemsConstraint on top of an existing constraint
+            </summary>
+            <param name="itemConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.Matches(System.Object)">
+            <summary>
+            Apply the item constraint to each item in the collection,
+            failing if any item fails.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AllItemsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SomeItemsConstraint">
+            <summary>
+            SomeItemsConstraint applies another constraint to each
+            item in a collection, succeeding if any of them succeeds.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct a SomeItemsConstraint on top of an existing constraint
+            </summary>
+            <param name="itemConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.Matches(System.Object)">
+            <summary>
+            Apply the item constraint to each item in the collection,
+            succeeding if any item succeeds.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SomeItemsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NoItemConstraint">
+            <summary>
+            NoItemConstraint applies another constraint to each
+            item in a collection, failing if any of them succeeds.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Construct a SomeItemsConstraint on top of an existing constraint
+            </summary>
+            <param name="itemConstraint"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.Matches(System.Object)">
+            <summary>
+            Apply the item constraint to each item in the collection,
+            failing if any item fails.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NoItemConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer"></param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PropertyExistsConstraint">
+            <summary>
+            PropertyExistsConstraint tests that a named property
+            exists on the object provided through Match.
+            
+            Originally, PropertyConstraint provided this feature
+            in addition to making optional tests on the vaue
+            of the property. The two constraints are now separate.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:PropertyExistConstraint"/> class.
+            </summary>
+            <param name="name">The name of the property.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the property exists for a given object
+            </summary>
+            <param name="actual">The object to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyExistsConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of the constraint.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.PropertyConstraint">
+            <summary>
+            PropertyConstraint extracts a named property and uses
+            its value as the actual value for a chained constraint.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.#ctor(System.String,NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Initializes a new instance of the <see cref="T:PropertyConstraint"/> class.
+            </summary>
+            <param name="name">The name.</param>
+            <param name="baseConstraint">The constraint to apply to the property.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.PropertyConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of the constraint.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.RangeConstraint">
+            <summary>
+            RangeConstraint tests whethe two values are within a 
+            specified range.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RangeConstraint.#ctor(System.IComparable,System.IComparable)">
+            <summary>
+            Initializes a new instance of the <see cref="T:RangeConstraint"/> class.
+            </summary>
+            <param name="from">From.</param>
+            <param name="to">To.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RangeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Using(System.Collections.IComparer)">
+            <summary>
+            Modifies the constraint to use an IComparer and returns self.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Using``1(System.Collections.Generic.IComparer{``0})">
+            <summary>
+            Modifies the constraint to use an IComparer&lt;T&gt; and returns self.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RangeConstraint.Using``1(System.Comparison{``0})">
+            <summary>
+            Modifies the constraint to use a Comparison&lt;T&gt; and returns self.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ResolvableConstraintExpression">
+            <summary>
+            ResolvableConstraintExpression is used to represent a compound
+            constraint being constructed at a point where the last operator
+            may either terminate the expression or may have additional 
+            qualifying constraints added to it. 
+            
+            It is used, for example, for a Property element or for
+            an Exception element, either of which may be optionally
+            followed by constraints that apply to the property or 
+            exception.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ResolvableConstraintExpression.#ctor">
+            <summary>
+            Create a new instance of ResolvableConstraintExpression
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ResolvableConstraintExpression.#ctor(NUnit.Framework.Constraints.ConstraintBuilder)">
+            <summary>
+            Create a new instance of ResolvableConstraintExpression,
+            passing in a pre-populated ConstraintBuilder.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ResolvableConstraintExpression.NUnit#Framework#Constraints#IResolveConstraint#Resolve">
+            <summary>
+            Resolve the current expression to a Constraint
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ResolvableConstraintExpression.And">
+            <summary>
+            Appends an And Operator to the expression
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ResolvableConstraintExpression.Or">
+            <summary>
+            Appends an Or operator to the expression.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ReusableConstraint">
+            <summary>
+            ReusableConstraint wraps a resolved constraint so that it
+            may be saved and reused as needed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.#ctor(NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Construct a ReusableConstraint
+            </summary>
+            <param name="c">The constraint or expression to be reused</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.op_Implicit(NUnit.Framework.Constraints.Constraint)~NUnit.Framework.Constraints.ReusableConstraint">
+            <summary>
+            Conversion operator from a normal constraint to a ReusableConstraint.
+            </summary>
+            <param name="c">The original constraint to be wrapped as a ReusableConstraint</param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.ToString">
+            <summary>
+            Returns the string representation of the constraint.
+            </summary>
+            <returns>A string representing the constraint</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ReusableConstraint.Resolve">
+            <summary>
+            Resolves the ReusableConstraint by returning the constraint
+            that it originally wrapped.
+            </summary>
+            <returns>A resolved constraint</returns>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SameAsConstraint">
+            <summary>
+            SameAsConstraint tests whether an object is identical to
+            the object passed to its constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:SameAsConstraint"/> class.
+            </summary>
+            <param name="expected">The expected object.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SameAsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.BinarySerializableConstraint">
+            <summary>
+            BinarySerializableConstraint tests whether 
+            an object is serializable in binary format.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.BinarySerializableConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.XmlSerializableConstraint">
+            <summary>
+            BinarySerializableConstraint tests whether 
+            an object is serializable in binary format.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.XmlSerializableConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of this constraint
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.StringConstraint">
+            <summary>
+            StringConstraint is the abstract base for constraints
+            that operate on strings. It supports the IgnoreCase
+            modifier for string operations.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.StringConstraint.expected">
+            <summary>
+            The expected value
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.StringConstraint.caseInsensitive">
+            <summary>
+            Indicates whether tests should be case-insensitive
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.StringConstraint.#ctor(System.String)">
+            <summary>
+            Constructs a StringConstraint given an expected value
+            </summary>
+            <param name="expected">The expected value</param>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.StringConstraint.IgnoreCase">
+            <summary>
+            Modify the constraint to ignore case in matching.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EmptyStringConstraint">
+            <summary>
+            EmptyStringConstraint tests whether a string is empty.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyStringConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EmptyStringConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.NullOrEmptyStringConstraint">
+            <summary>
+            NullEmptyStringConstraint tests whether a string is either null or empty.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NullOrEmptyStringConstraint.#ctor">
+            <summary>
+            Constructs a new NullOrEmptyStringConstraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NullOrEmptyStringConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.NullOrEmptyStringConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.SubstringConstraint">
+            <summary>
+            SubstringConstraint can test whether a string contains
+            the expected substring.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:SubstringConstraint"/> class.
+            </summary>
+            <param name="expected">The expected.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.SubstringConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.StartsWithConstraint">
+            <summary>
+            StartsWithConstraint can test whether a string starts
+            with an expected substring.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:StartsWithConstraint"/> class.
+            </summary>
+            <param name="expected">The expected string</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is matched by the actual value.
+            This is a template method, which calls the IsMatch method
+            of the derived class.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.StartsWithConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.EndsWithConstraint">
+            <summary>
+            EndsWithConstraint can test whether a string ends
+            with an expected substring.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:EndsWithConstraint"/> class.
+            </summary>
+            <param name="expected">The expected string</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is matched by the actual value.
+            This is a template method, which calls the IsMatch method
+            of the derived class.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.EndsWithConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.RegexConstraint">
+            <summary>
+            RegexConstraint can test whether a string matches
+            the pattern provided.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RegexConstraint.#ctor(System.String)">
+            <summary>
+            Initializes a new instance of the <see cref="T:RegexConstraint"/> class.
+            </summary>
+            <param name="pattern">The pattern.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RegexConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True for success, false for failure</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.RegexConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ThrowsConstraint">
+            <summary>
+            ThrowsConstraint is used to test the exception thrown by 
+            a delegate by applying a constraint to it.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.#ctor(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Initializes a new instance of the <see cref="T:ThrowsConstraint"/> class,
+            using a constraint to be applied to the exception.
+            </summary>
+            <param name="baseConstraint">A constraint to apply to the caught exception.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.Matches(System.Object)">
+            <summary>
+            Executes the code of the delegate and captures any exception.
+            If a non-null base constraint was provided, it applies that
+            constraint to the exception.
+            </summary>
+            <param name="actual">A delegate representing the code to be tested</param>
+            <returns>True if an exception is thrown and the constraint succeeds, otherwise false</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
+            <summary>
+            Converts an ActualValueDelegate to a TestDelegate
+            before calling the primary overload.
+            </summary>
+            <param name="del"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsConstraint.GetStringRepresentation">
+            <summary>
+            Returns the string representation of this constraint
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.ThrowsConstraint.ActualException">
+            <summary>
+            Get the actual exception thrown - used by Assert.Throws.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ThrowsNothingConstraint">
+            <summary>
+            ThrowsNothingConstraint tests that a delegate does not
+            throw an exception.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.Matches(System.Object)">
+            <summary>
+            Test whether the constraint is satisfied by a given value
+            </summary>
+            <param name="actual">The value to be tested</param>
+            <returns>True if no exception is thrown, otherwise false</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.Matches(NUnit.Framework.Constraints.ActualValueDelegate)">
+            <summary>
+            Converts an ActualValueDelegate to a TestDelegate
+            before calling the primary overload.
+            </summary>
+            <param name="del"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the constraint description to a MessageWriter
+            </summary>
+            <param name="writer">The writer on which the description is displayed</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ThrowsNothingConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. The default implementation simply writes
+            the raw value of actual, leaving it to the writer to
+            perform any formatting.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ToleranceMode">
+            <summary>
+            Modes in which the tolerance value for a comparison can
+            be interpreted.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ToleranceMode.None">
+            <summary>
+            The tolerance was created with a value, without specifying 
+            how the value would be used. This is used to prevent setting
+            the mode more than once and is generally changed to Linear
+            upon execution of the test.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ToleranceMode.Linear">
+            <summary>
+            The tolerance is used as a numeric range within which
+            two compared values are considered to be equal.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ToleranceMode.Percent">
+            <summary>
+            Interprets the tolerance as the percentage by which
+            the two compared values my deviate from each other.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.ToleranceMode.Ulps">
+            <summary>
+            Compares two values based in their distance in
+            representable numbers.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.Tolerance">
+            <summary>
+            The Tolerance class generalizes the notion of a tolerance
+            within which an equality test succeeds. Normally, it is
+            used with numeric types, but it can be used with any
+            type that supports taking a difference between two 
+            objects and comparing that difference to a value.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Tolerance.#ctor(System.Object)">
+            <summary>
+            Constructs a linear tolerance of a specdified amount
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Tolerance.#ctor(System.Object,NUnit.Framework.Constraints.ToleranceMode)">
+            <summary>
+            Constructs a tolerance given an amount and ToleranceMode
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.Tolerance.CheckLinearAndNumeric">
+            <summary>
+            Tests that the current Tolerance is linear with a 
+            numeric value, throwing an exception if it is not.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Empty">
+            <summary>
+            Returns an empty Tolerance object, equivalent to 
+            specifying an exact match.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Mode">
+            <summary>
+            Gets the ToleranceMode for the current Tolerance
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Value">
+            <summary>
+            Gets the value of the current Tolerance instance.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Percent">
+            <summary>
+            Returns a new tolerance, using the current amount as a percentage.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Ulps">
+            <summary>
+            Returns a new tolerance, using the current amount in Ulps.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Days">
+            <summary>
+            Returns a new tolerance with a TimeSpan as the amount, using 
+            the current amount as a number of days.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Hours">
+            <summary>
+            Returns a new tolerance with a TimeSpan as the amount, using 
+            the current amount as a number of hours.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Minutes">
+            <summary>
+            Returns a new tolerance with a TimeSpan as the amount, using 
+            the current amount as a number of minutes.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Seconds">
+            <summary>
+            Returns a new tolerance with a TimeSpan as the amount, using 
+            the current amount as a number of seconds.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Milliseconds">
+            <summary>
+            Returns a new tolerance with a TimeSpan as the amount, using 
+            the current amount as a number of milliseconds.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.Ticks">
+            <summary>
+            Returns a new tolerance with a TimeSpan as the amount, using 
+            the current amount as a number of clock ticks.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Constraints.Tolerance.IsEmpty">
+            <summary>
+            Returns true if the current tolerance is empty.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.TypeConstraint">
+            <summary>
+            TypeConstraint is the abstract base for constraints
+            that take a Type as their expected value.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.Constraints.TypeConstraint.expectedType">
+            <summary>
+            The expected Type used by the constraint
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.TypeConstraint.#ctor(System.Type)">
+            <summary>
+            Construct a TypeConstraint for a given Type
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.TypeConstraint.WriteActualValueTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the actual value for a failing constraint test to a
+            MessageWriter. TypeConstraints override this method to write
+            the name of the type.
+            </summary>
+            <param name="writer">The writer on which the actual value is displayed</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.ExactTypeConstraint">
+            <summary>
+            ExactTypeConstraint is used to test that an object
+            is of the exact type provided in the constructor
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.#ctor(System.Type)">
+            <summary>
+            Construct an ExactTypeConstraint for a given Type
+            </summary>
+            <param name="type">The expected Type.</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.Matches(System.Object)">
+            <summary>
+            Test that an object is of the exact type specified
+            </summary>
+            <param name="actual">The actual value.</param>
+            <returns>True if the tested object is of the exact type provided, otherwise false.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.ExactTypeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write the description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to use</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.InstanceOfTypeConstraint">
+            <summary>
+            InstanceOfTypeConstraint is used to test that an object
+            is of the same type provided or derived from it.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.#ctor(System.Type)">
+            <summary>
+            Construct an InstanceOfTypeConstraint for the type provided
+            </summary>
+            <param name="type">The expected Type</param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.Matches(System.Object)">
+            <summary>
+            Test whether an object is of the specified type or a derived type
+            </summary>
+            <param name="actual">The object to be tested</param>
+            <returns>True if the object is of the provided type or derives from it, otherwise false.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.InstanceOfTypeConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to use</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AssignableFromConstraint">
+            <summary>
+            AssignableFromConstraint is used to test that an object
+            can be assigned from a given Type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.#ctor(System.Type)">
+            <summary>
+            Construct an AssignableFromConstraint for the type provided
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.Matches(System.Object)">
+            <summary>
+            Test whether an object can be assigned from the specified type
+            </summary>
+            <param name="actual">The object to be tested</param>
+            <returns>True if the object can be assigned a value of the expected Type, otherwise false.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableFromConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to use</param>
+        </member>
+        <member name="T:NUnit.Framework.Constraints.AssignableToConstraint">
+            <summary>
+            AssignableToConstraint is used to test that an object
+            can be assigned to a given Type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableToConstraint.#ctor(System.Type)">
+            <summary>
+            Construct an AssignableToConstraint for the type provided
+            </summary>
+            <param name="type"></param>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableToConstraint.Matches(System.Object)">
+            <summary>
+            Test whether an object can be assigned to the specified type
+            </summary>
+            <param name="actual">The object to be tested</param>
+            <returns>True if the object can be assigned a value of the expected Type, otherwise false.</returns>
+        </member>
+        <member name="M:NUnit.Framework.Constraints.AssignableToConstraint.WriteDescriptionTo(NUnit.Framework.Constraints.MessageWriter)">
+            <summary>
+            Write a description of this constraint to a MessageWriter
+            </summary>
+            <param name="writer">The MessageWriter to use</param>
+        </member>
+        <member name="T:NUnit.Framework.AssertionException">
+            <summary>
+            Thrown when an assertion failed.
+            </summary>
+            
+        </member>
+        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionException.#ctor(System.String,System.Exception)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+            <param name="inner">The exception that caused the 
+            current exception</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Serialization Constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IgnoreException">
+            <summary>
+            Thrown when an assertion failed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String)">
+            <param name="message"></param>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.String,System.Exception)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+            <param name="inner">The exception that caused the 
+            current exception</param>
+        </member>
+        <member name="M:NUnit.Framework.IgnoreException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Serialization Constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.InconclusiveException">
+            <summary>
+            Thrown when a test executes inconclusively.
+            </summary>
+            
+        </member>
+        <member name="M:NUnit.Framework.InconclusiveException.#ctor(System.String)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+        </member>
+        <member name="M:NUnit.Framework.InconclusiveException.#ctor(System.String,System.Exception)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+            <param name="inner">The exception that caused the 
+            current exception</param>
+        </member>
+        <member name="M:NUnit.Framework.InconclusiveException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Serialization Constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SuccessException">
+            <summary>
+            Thrown when an assertion failed.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.SuccessException.#ctor(System.String)">
+            <param name="message"></param>
+        </member>
+        <member name="M:NUnit.Framework.SuccessException.#ctor(System.String,System.Exception)">
+            <param name="message">The error message that explains 
+            the reason for the exception</param>
+            <param name="inner">The exception that caused the 
+            current exception</param>
+        </member>
+        <member name="M:NUnit.Framework.SuccessException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
+            <summary>
+            Serialization Constructor
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestDelegate">
+            <summary>
+            Delegate used by tests that execute code and
+            capture any thrown exception.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Assert">
+            <summary>
+            The Assert class contains a collection of static methods that
+            implement the most common assertions used in NUnit.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.#ctor">
+            <summary>
+            We don't actually want any instances of this object, but some people
+            like to inherit from it to add other static methods. Hence, the
+            protected constructor disallows any instances of this object. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AssertDoublesAreEqual(System.Double,System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Helper for Assert.AreEqual(double expected, double actual, ...)
+            allowing code generation to work consistently.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Pass(System.String,System.Object[])">
+            <summary>
+            Throws a <see cref="T:NUnit.Framework.SuccessException"/> with the message and arguments 
+            that are passed in. This allows a test to be cut short, with a result
+            of success returned to NUnit.
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Pass(System.String)">
+            <summary>
+            Throws a <see cref="T:NUnit.Framework.SuccessException"/> with the message and arguments 
+            that are passed in. This allows a test to be cut short, with a result
+            of success returned to NUnit.
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Pass">
+            <summary>
+            Throws a <see cref="T:NUnit.Framework.SuccessException"/> with the message and arguments 
+            that are passed in. This allows a test to be cut short, with a result
+            of success returned to NUnit.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Fail(System.String,System.Object[])">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message and arguments 
+            that are passed in. This is used by the other Assert functions. 
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Fail(System.String)">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.AssertionException"/> with the message that is 
+            passed in. This is used by the other Assert functions. 
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Fail">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.AssertionException"/>. 
+            This is used by the other Assert functions. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Ignore(System.String,System.Object[])">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message and arguments 
+            that are passed in.  This causes the test to be reported as ignored.
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Ignore(System.String)">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.IgnoreException"/> with the message that is 
+            passed in. This causes the test to be reported as ignored. 
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.AssertionException"/> with.</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Ignore">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.IgnoreException"/>. 
+            This causes the test to be reported as ignored. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Inconclusive(System.String,System.Object[])">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.InconclusiveException"/> with the message and arguments 
+            that are passed in.  This causes the test to be reported as inconclusive.
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.InconclusiveException"/> with.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Inconclusive(System.String)">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.InconclusiveException"/> with the message that is 
+            passed in. This causes the test to be reported as inconclusive. 
+            </summary>
+            <param name="message">The message to initialize the <see cref="T:NUnit.Framework.InconclusiveException"/> with.</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Inconclusive">
+            <summary>
+            Throws an <see cref="T:NUnit.Framework.InconclusiveException"/>. 
+            This causes the test to be reported as Inconclusive. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expression">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expression">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expression">A Constraint expression to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expression">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expression">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expression">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.That(NUnit.Framework.TestDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Asserts that the code represented by a delegate throws an exception
+            that satisfies the constraint provided.
+            </summary>
+            <param name="code">A TestDelegate to be executed</param>
+            <param name="constraint">A ThrowsConstraint used in the test</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws(NUnit.Framework.Constraints.IResolveConstraint,NUnit.Framework.TestDelegate,System.String,System.Object[])">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <param name="expression">A constraint to be satisfied by the exception</param>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws(NUnit.Framework.Constraints.IResolveConstraint,NUnit.Framework.TestDelegate,System.String)">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <param name="expression">A constraint to be satisfied by the exception</param>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws(NUnit.Framework.Constraints.IResolveConstraint,NUnit.Framework.TestDelegate)">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <param name="expression">A constraint to be satisfied by the exception</param>
+            <param name="code">A TestSnippet delegate</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws(System.Type,NUnit.Framework.TestDelegate,System.String,System.Object[])">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <param name="expectedExceptionType">The exception Type expected</param>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws(System.Type,NUnit.Framework.TestDelegate,System.String)">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <param name="expectedExceptionType">The exception Type expected</param>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws(System.Type,NUnit.Framework.TestDelegate)">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <param name="expectedExceptionType">The exception Type expected</param>
+            <param name="code">A TestSnippet delegate</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws``1(NUnit.Framework.TestDelegate,System.String,System.Object[])">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <typeparam name="T">Type of the expected exception</typeparam>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws``1(NUnit.Framework.TestDelegate,System.String)">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <typeparam name="T">Type of the expected exception</typeparam>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Throws``1(NUnit.Framework.TestDelegate)">
+            <summary>
+            Verifies that a delegate throws a particular exception when called.
+            </summary>
+            <typeparam name="T">Type of the expected exception</typeparam>
+            <param name="code">A TestSnippet delegate</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch(NUnit.Framework.TestDelegate,System.String,System.Object[])">
+            <summary>
+            Verifies that a delegate throws an exception when called
+            and returns it.
+            </summary>
+            <param name="code">A TestDelegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch(NUnit.Framework.TestDelegate,System.String)">
+            <summary>
+            Verifies that a delegate throws an exception when called
+            and returns it.
+            </summary>
+            <param name="code">A TestDelegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch(NUnit.Framework.TestDelegate)">
+            <summary>
+            Verifies that a delegate throws an exception when called
+            and returns it.
+            </summary>
+            <param name="code">A TestDelegate</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch(System.Type,NUnit.Framework.TestDelegate,System.String,System.Object[])">
+            <summary>
+            Verifies that a delegate throws an exception of a certain Type
+            or one derived from it when called and returns it.
+            </summary>
+            <param name="expectedExceptionType">The expected Exception Type</param>
+            <param name="code">A TestDelegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch(System.Type,NUnit.Framework.TestDelegate,System.String)">
+            <summary>
+            Verifies that a delegate throws an exception of a certain Type
+            or one derived from it when called and returns it.
+            </summary>
+            <param name="expectedExceptionType">The expected Exception Type</param>
+            <param name="code">A TestDelegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch(System.Type,NUnit.Framework.TestDelegate)">
+            <summary>
+            Verifies that a delegate throws an exception of a certain Type
+            or one derived from it when called and returns it.
+            </summary>
+            <param name="expectedExceptionType">The expected Exception Type</param>
+            <param name="code">A TestDelegate</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch``1(NUnit.Framework.TestDelegate,System.String,System.Object[])">
+            <summary>
+            Verifies that a delegate throws an exception of a certain Type
+            or one derived from it when called and returns it.
+            </summary>
+            <typeparam name="T">The expected Exception Type</typeparam>
+            <param name="code">A TestDelegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch``1(NUnit.Framework.TestDelegate,System.String)">
+            <summary>
+            Verifies that a delegate throws an exception of a certain Type
+            or one derived from it when called and returns it.
+            </summary>
+            <typeparam name="T">The expected Exception Type</typeparam>
+            <param name="code">A TestDelegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Catch``1(NUnit.Framework.TestDelegate)">
+            <summary>
+            Verifies that a delegate throws an exception of a certain Type
+            or one derived from it when called and returns it.
+            </summary>
+            <typeparam name="T">The expected Exception Type</typeparam>
+            <param name="code">A TestDelegate</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.DoesNotThrow(NUnit.Framework.TestDelegate,System.String,System.Object[])">
+            <summary>
+            Verifies that a delegate does not throw an exception
+            </summary>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.DoesNotThrow(NUnit.Framework.TestDelegate,System.String)">
+            <summary>
+            Verifies that a delegate does not throw an exception.
+            </summary>
+            <param name="code">A TestSnippet delegate</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.DoesNotThrow(NUnit.Framework.TestDelegate)">
+            <summary>
+            Verifies that a delegate does not throw an exception.
+            </summary>
+            <param name="code">A TestSnippet delegate</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.True(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.True(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.True(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsTrue(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.False(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.False(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.False(System.Boolean)">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsFalse(System.Boolean)">
+            <summary>
+            Asserts that a condition is false. If the condition is true the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.NotNull(System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.NotNull(System.Object,System.String)">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.NotNull(System.Object)">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object,System.String)">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNull(System.Object)">
+            <summary>
+            Verifies that the object that is passed in is not equal to <code>null</code>
+            If the object is <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Null(System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Null(System.Object,System.String)">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Null(System.Object)">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNull(System.Object,System.String)">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNull(System.Object)">
+            <summary>
+            Verifies that the object that is passed in is equal to <code>null</code>
+            If the object is not <code>null</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="anObject">The object that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the double that is passed in is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The value that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double,System.String)">
+            <summary>
+            Verifies that the double that is passed in is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The value that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Double)">
+            <summary>
+            Verifies that the double that is passed in is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The value that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Nullable{System.Double},System.String,System.Object[])">
+            <summary>
+            Verifies that the double that is passed in is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The value that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Nullable{System.Double},System.String)">
+            <summary>
+            Verifies that the double that is passed in is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The value that is to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNaN(System.Nullable{System.Double})">
+            <summary>
+            Verifies that the double that is passed in is an <code>NaN</code> value.
+            If the object is not <code>NaN</code> then an <see cref="T:NUnit.Framework.AssertionException"/>
+            is thrown.
+            </summary>
+            <param name="aDouble">The value that is to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Assert that a string is empty - that is equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String,System.String)">
+            <summary>
+            Assert that a string is empty - that is equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.String)">
+            <summary>
+            Assert that a string is empty - that is equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection,System.String)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsEmpty(System.Collections.ICollection)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Assert that a string is not empty - that is not equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String,System.String)">
+            <summary>
+            Assert that a string is not empty - that is not equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.String)">
+            <summary>
+            Assert that a string is not empty - that is not equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is not empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection,System.String)">
+            <summary>
+            Assert that an array, list or other collection is not empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotEmpty(System.Collections.ICollection)">
+            <summary>
+            Assert that an array, list or other collection is not empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing ICollection</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNullOrEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Assert that a string is either null or equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNullOrEmpty(System.String,System.String)">
+            <summary>
+            Assert that a string is either null or equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNullOrEmpty(System.String)">
+            <summary>
+            Assert that a string is either null or equal to string.Empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNullOrEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Assert that a string is not null or empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNullOrEmpty(System.String,System.String)">
+            <summary>
+            Assert that a string is not null or empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotNullOrEmpty(System.String)">
+            <summary>
+            Assert that a string is not null or empty
+            </summary>
+            <param name="aString">The string to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom(System.Type,System.Object)">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom``1(System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <typeparam name="T">The expected Type.</typeparam>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom``1(System.Object,System.String)">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <typeparam name="T">The expected Type.</typeparam>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsAssignableFrom``1(System.Object)">
+            <summary>
+            Asserts that an object may be assigned a  value of a given Type.
+            </summary>
+            <typeparam name="T">The expected Type.</typeparam>
+            <param name="actual">The object under examination</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom(System.Type,System.Object)">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <param name="expected">The expected Type.</param>
+            <param name="actual">The object under examination</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom``1(System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <typeparam name="T">The expected Type.</typeparam>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom``1(System.Object,System.String)">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <typeparam name="T">The expected Type.</typeparam>
+            <param name="actual">The object under examination</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotAssignableFrom``1(System.Object)">
+            <summary>
+            Asserts that an object may not be assigned a  value of a given Type.
+            </summary>
+            <typeparam name="T">The expected Type.</typeparam>
+            <param name="actual">The object under examination</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOf(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOf(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOf(System.Type,System.Object)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOfType(System.Type,System.Object)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOf``1(System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <typeparam name="T">The expected Type</typeparam>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOf``1(System.Object,System.String)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <typeparam name="T">The expected Type</typeparam>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsInstanceOf``1(System.Object)">
+            <summary>
+            Asserts that an object is an instance of a given type.
+            </summary>
+            <typeparam name="T">The expected Type</typeparam>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf(System.Type,System.Object)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object,System.String)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOfType(System.Type,System.Object)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <param name="expected">The expected Type</param>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf``1(System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <typeparam name="T">The expected Type</typeparam>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf``1(System.Object,System.String)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <typeparam name="T">The expected Type</typeparam>
+            <param name="actual">The object being examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.IsNotInstanceOf``1(System.Object)">
+            <summary>
+            Asserts that an object is not an instance of a given type.
+            </summary>
+            <typeparam name="T">The expected Type</typeparam>
+            <param name="actual">The object being examined</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int32,System.Int32)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Int64,System.Int64)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that two values are equal. If they are not, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Double,System.Double)">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Nullable{System.Double},System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Nullable{System.Double},System.Double,System.String)">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Double,System.Nullable{System.Double},System.Double)">
+            <summary>
+            Verifies that two doubles are equal considering a delta. If the
+            expected value is infinity then the delta value is ignored. If 
+            they are not equal then an <see cref="T:NUnit.Framework.AssertionException"/> is
+            thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="delta">The maximum acceptable difference between the
+            the expected and the actual</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that two objects are equal.  Two objects are considered
+            equal if both are null, or if both have the same value. NUnit
+            has special semantics for some object types.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object,System.String)">
+            <summary>
+            Verifies that two objects are equal.  Two objects are considered
+            equal if both are null, or if both have the same value. NUnit
+            has special semantics for some object types.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreEqual(System.Object,System.Object)">
+            <summary>
+            Verifies that two objects are equal.  Two objects are considered
+            equal if both are null, or if both have the same value. NUnit
+            has special semantics for some object types.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int32,System.Int32)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Int64,System.Int64)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Single,System.Single)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Double,System.Double)">
+            <summary>
+            Verifies that two values are not equal. If they are equal, then an 
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Verifies that two objects are not equal.  Two objects are considered
+            equal if both are null, or if both have the same value. NUnit
+            has special semantics for some object types.
+            If they are equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object,System.String)">
+            <summary>
+            Verifies that two objects are not equal.  Two objects are considered
+            equal if both are null, or if both have the same value. NUnit
+            has special semantics for some object types.
+            If they are equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotEqual(System.Object,System.Object)">
+            <summary>
+            Verifies that two objects are not equal.  Two objects are considered
+            equal if both are null, or if both have the same value. NUnit
+            has special semantics for some object types.
+            If they are equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The value that is expected</param>
+            <param name="actual">The actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that two objects refer to the same object. If they
+            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object,System.String)">
+            <summary>
+            Asserts that two objects refer to the same object. If they
+            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreSame(System.Object,System.Object)">
+            <summary>
+            Asserts that two objects refer to the same object. If they
+            are not the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that two objects do not refer to the same object. If they
+            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object,System.String)">
+            <summary>
+            Asserts that two objects do not refer to the same object. If they
+            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.AreNotSame(System.Object,System.Object)">
+            <summary>
+            Asserts that two objects do not refer to the same object. If they
+            are the same an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The actual object</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Greater(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is greater than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Less(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is less than the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.GreaterOrEqual(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is greater than or equal tothe second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be greater</param>
+            <param name="arg2">The second value, expected to be less</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int32,System.Int32)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt32,System.UInt32)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Int64,System.Int64)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.UInt64,System.UInt64)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Decimal,System.Decimal)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Double,System.Double)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.Single,System.Single)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String,System.Object[])">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable,System.String)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.LessOrEqual(System.IComparable,System.IComparable)">
+            <summary>
+            Verifies that the first value is less than or equal to the second
+            value. If it is not, then an
+            <see cref="T:NUnit.Framework.AssertionException"/> is thrown. 
+            </summary>
+            <param name="arg1">The first value, expected to be less</param>
+            <param name="arg2">The second value, expected to be greater</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String,System.Object[])">
+            <summary>
+            Asserts that an object is contained in a list.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The list to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Array of objects to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection,System.String)">
+            <summary>
+            Asserts that an object is contained in a list.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The list to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assert.Contains(System.Object,System.Collections.ICollection)">
+            <summary>
+            Asserts that an object is contained in a list.
+            </summary>
+            <param name="expected">The expected object</param>
+            <param name="actual">The list to be examined</param>
+        </member>
+        <member name="P:NUnit.Framework.Assert.Counter">
+            <summary>
+            Gets the number of assertions executed so far and 
+            resets the counter to zero.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.AssertionHelper">
+            <summary>
+            AssertionHelper is an optional base class for user tests,
+            allowing the use of shorter names for constraints and
+            asserts and avoiding conflict with the definition of 
+            <see cref="T:NUnit.Framework.Is"/>, from which it inherits much of its
+            behavior, in certain mock object frameworks.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure. Works
+            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint)"/>
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure. Works
+            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)"/>
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure. Works
+            identically to <see cref="M:NUnit.Framework.Assert.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])"/>
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect``1(``0@,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="constraint">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an assertion exception on failure.
+            </summary>
+            <param name="expression">A Constraint to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
+            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String,System.Object[])"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to 
+            <see cref="M:NUnit.Framework.Assert.That(System.Boolean,System.String)"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.AssertionException"/>. Works Identically to <see cref="M:NUnit.Framework.Assert.That(System.Boolean)"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Expect(NUnit.Framework.TestDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Asserts that the code represented by a delegate throws an exception
+            that satisfies the constraint provided.
+            </summary>
+            <param name="code">A TestDelegate to be executed</param>
+            <param name="constraint">A ThrowsConstraint used in the test</param>
+        </member>
+        <member name="M:NUnit.Framework.AssertionHelper.Map(System.Collections.ICollection)">
+            <summary>
+            Returns a ListMapper based on a collection.
+            </summary>
+            <param name="original">The original collection</param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.Assume">
+            <summary>
+            Provides static methods to express the assumptions
+            that must be met for a test to give a meaningful
+            result. If an assumption is not met, the test
+            should produce an inconclusive result.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Assume.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expression">A Constraint expression to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expression">A Constraint expression to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(System.Object,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expression">A Constraint expression to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.Constraints.ActualValueDelegate,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to an actual value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="del">An ActualValueDelegate returning the value to be tested</param>
+            <param name="expr">A Constraint expression to be applied</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expression">A Constraint expression to be applied</param>
+            <param name="actual">The actual value to test</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String)">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expression">A Constraint expression to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That``1(``0@,NUnit.Framework.Constraints.IResolveConstraint,System.String,System.Object[])">
+            <summary>
+            Apply a constraint to a referenced value, succeeding if the constraint
+            is satisfied and throwing an InconclusiveException on failure.
+            </summary>
+            <param name="expression">A Constraint expression to be applied</param>
+            <param name="actual">The actual value to test</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(System.Boolean,System.String,System.Object[])">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.InconclusiveException"/>.
+            </summary> 
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(System.Boolean,System.String)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the method throws
+            an <see cref="T:NUnit.Framework.InconclusiveException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+            <param name="message">The message to display if the condition is false</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(System.Boolean)">
+            <summary>
+            Asserts that a condition is true. If the condition is false the 
+            method throws an <see cref="T:NUnit.Framework.InconclusiveException"/>.
+            </summary>
+            <param name="condition">The evaluated condition</param>
+        </member>
+        <member name="M:NUnit.Framework.Assume.That(NUnit.Framework.TestDelegate,NUnit.Framework.Constraints.IResolveConstraint)">
+            <summary>
+            Asserts that the code represented by a delegate throws an exception
+            that satisfies the constraint provided.
+            </summary>
+            <param name="code">A TestDelegate to be executed</param>
+            <param name="constraint">A ThrowsConstraint used in the test</param>
+        </member>
+        <member name="T:NUnit.Framework.CollectionAssert">
+            <summary>
+            A set of Assert methods operationg on one or more collections
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.IEnumerable,System.Type)">
+            <summary>
+            Asserts that all items contained in collection are of the type specified by expectedType.
+            </summary>
+            <param name="collection">IEnumerable containing objects to be considered</param>
+            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.IEnumerable,System.Type,System.String)">
+            <summary>
+            Asserts that all items contained in collection are of the type specified by expectedType.
+            </summary>
+            <param name="collection">IEnumerable containing objects to be considered</param>
+            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreInstancesOfType(System.Collections.IEnumerable,System.Type,System.String,System.Object[])">
+            <summary>
+            Asserts that all items contained in collection are of the type specified by expectedType.
+            </summary>
+            <param name="collection">IEnumerable containing objects to be considered</param>
+            <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.IEnumerable)">
+            <summary>
+            Asserts that all items contained in collection are not equal to null.
+            </summary>
+            <param name="collection">IEnumerable containing objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.IEnumerable,System.String)">
+            <summary>
+            Asserts that all items contained in collection are not equal to null.
+            </summary>
+            <param name="collection">IEnumerable containing objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreNotNull(System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Asserts that all items contained in collection are not equal to null.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.IEnumerable)">
+            <summary>
+            Ensures that every object contained in collection exists within the collection
+            once and only once.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.IEnumerable,System.String)">
+            <summary>
+            Ensures that every object contained in collection exists within the collection
+            once and only once.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AllItemsAreUnique(System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Ensures that every object contained in collection exists within the collection
+            once and only once.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String)">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+            and contain the exact same objects in the same order.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable)">
+            <summary>
+            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
+            <summary>
+            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String)">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEqual(System.Collections.IEnumerable,System.Collections.IEnumerable,System.Collections.IComparer,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are not exactly equal.
+            If comparer is not null then it will be used to compare the objects.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable)">
+            <summary>
+            Asserts that expected and actual are not equivalent.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
+            <summary>
+            Asserts that expected and actual are not equivalent.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.AreNotEquivalent(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Asserts that expected and actual are not equivalent.
+            </summary>
+            <param name="expected">The first IEnumerable of objects to be considered</param>
+            <param name="actual">The second IEnumerable of objects to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.IEnumerable,System.Object)">
+            <summary>
+            Asserts that collection contains actual as an item.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="actual">Object to be found within collection</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.IEnumerable,System.Object,System.String)">
+            <summary>
+            Asserts that collection contains actual as an item.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="actual">Object to be found within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.Contains(System.Collections.IEnumerable,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that collection contains actual as an item.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="actual">Object to be found within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.IEnumerable,System.Object)">
+            <summary>
+            Asserts that collection does not contain actual as an item.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="actual">Object that cannot exist within collection</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.IEnumerable,System.Object,System.String)">
+            <summary>
+            Asserts that collection does not contain actual as an item.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="actual">Object that cannot exist within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.DoesNotContain(System.Collections.IEnumerable,System.Object,System.String,System.Object[])">
+            <summary>
+            Asserts that collection does not contain actual as an item.
+            </summary>
+            <param name="collection">IEnumerable of objects to be considered</param>
+            <param name="actual">Object that cannot exist within collection</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable)">
+            <summary>
+            Asserts that superset is not a subject of subset.
+            </summary>
+            <param name="subset">The IEnumerable superset to be considered</param>
+            <param name="superset">The IEnumerable subset to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
+            <summary>
+            Asserts that superset is not a subject of subset.
+            </summary>
+            <param name="subset">The IEnumerable superset to be considered</param>
+            <param name="superset">The IEnumerable subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Asserts that superset is not a subject of subset.
+            </summary>
+            <param name="subset">The IEnumerable superset to be considered</param>
+            <param name="superset">The IEnumerable subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable)">
+            <summary>
+            Asserts that superset is a subset of subset.
+            </summary>
+            <param name="subset">The IEnumerable superset to be considered</param>
+            <param name="superset">The IEnumerable subset to be considered</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String)">
+            <summary>
+            Asserts that superset is a subset of subset.
+            </summary>
+            <param name="subset">The IEnumerable superset to be considered</param>
+            <param name="superset">The IEnumerable subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsSubsetOf(System.Collections.IEnumerable,System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Asserts that superset is a subset of subset.
+            </summary>
+            <param name="subset">The IEnumerable superset to be considered</param>
+            <param name="superset">The IEnumerable subset to be considered</param>
+            <param name="message">The message that will be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.IEnumerable,System.String)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsEmpty(System.Collections.IEnumerable)">
+            <summary>
+            Assert that an array,list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.IEnumerable,System.String)">
+            <summary>
+            Assert that an array, list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsNotEmpty(System.Collections.IEnumerable)">
+            <summary>
+            Assert that an array,list or other collection is empty
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is ordered
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.String)">
+            <summary>
+            Assert that an array, list or other collection is ordered
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable)">
+            <summary>
+            Assert that an array, list or other collection is ordered
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.Collections.IComparer,System.String,System.Object[])">
+            <summary>
+            Assert that an array, list or other collection is ordered
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="comparer">A custom comparer to perform the comparisons</param>
+            <param name="message">The message to be displayed on failure</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.Collections.IComparer,System.String)">
+            <summary>
+            Assert that an array, list or other collection is ordered
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="comparer">A custom comparer to perform the comparisons</param>
+            <param name="message">The message to be displayed on failure</param>
+        </member>
+        <member name="M:NUnit.Framework.CollectionAssert.IsOrdered(System.Collections.IEnumerable,System.Collections.IComparer)">
+            <summary>
+            Assert that an array, list or other collection is ordered
+            </summary>
+            <param name="collection">An array, list or other collection implementing IEnumerable</param>
+            <param name="comparer">A custom comparer to perform the comparisons</param>
+        </member>
+        <member name="T:NUnit.Framework.Contains">
+            <summary>
+            Static helper class used in the constraint-based syntax
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Contains.Substring(System.String)">
+            <summary>
+            Creates a new SubstringConstraint
+            </summary>
+            <param name="substring">The value of the substring</param>
+            <returns>A SubstringConstraint</returns>
+        </member>
+        <member name="M:NUnit.Framework.Contains.Item(System.Object)">
+            <summary>
+            Creates a new CollectionContainsConstraint.
+            </summary>
+            <param name="item">The item that should be found.</param>
+            <returns>A new CollectionContainsConstraint</returns>
+        </member>
+        <member name="T:NUnit.Framework.DirectoryAssert">
+            <summary>
+            Summary description for DirectoryAssert
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.#ctor">
+            <summary>
+            We don't actually want any instances of this object, but some people
+            like to inherit from it to add other static methods. Hence, the
+            protected constructor disallows any instances of this object. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
+            <summary>
+            Verifies that two directories are equal.  Two directories are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory containing the value that is expected</param>
+            <param name="actual">A directory containing the actual value</param>
+            <param name="message">The message to display if directories are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
+            <summary>
+            Verifies that two directories are equal.  Two directories are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory containing the value that is expected</param>
+            <param name="actual">A directory containing the actual value</param>
+            <param name="message">The message to display if directories are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
+            <summary>
+            Verifies that two directories are equal.  Two directories are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory containing the value that is expected</param>
+            <param name="actual">A directory containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Verifies that two directories are equal.  Two directories are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory path string containing the value that is expected</param>
+            <param name="actual">A directory path string containing the actual value</param>
+            <param name="message">The message to display if directories are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.String,System.String,System.String)">
+            <summary>
+            Verifies that two directories are equal.  Two directories are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory path string containing the value that is expected</param>
+            <param name="actual">A directory path string containing the actual value</param>
+            <param name="message">The message to display if directories are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreEqual(System.String,System.String)">
+            <summary>
+            Verifies that two directories are equal.  Two directories are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory path string containing the value that is expected</param>
+            <param name="actual">A directory path string containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
+            <summary>
+            Asserts that two directories are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory containing the value that is expected</param>
+            <param name="actual">A directory containing the actual value</param>
+            <param name="message">The message to display if directories are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
+            <summary>
+            Asserts that two directories are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory containing the value that is expected</param>
+            <param name="actual">A directory containing the actual value</param>
+            <param name="message">The message to display if directories are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
+            <summary>
+            Asserts that two directories are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory containing the value that is expected</param>
+            <param name="actual">A directory containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that two directories are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory path string containing the value that is expected</param>
+            <param name="actual">A directory path string containing the actual value</param>
+            <param name="message">The message to display if directories are equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.String,System.String,System.String)">
+            <summary>
+            Asserts that two directories are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory path string containing the value that is expected</param>
+            <param name="actual">A directory path string containing the actual value</param>
+            <param name="message">The message to display if directories are equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.AreNotEqual(System.String,System.String)">
+            <summary>
+            Asserts that two directories are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A directory path string containing the value that is expected</param>
+            <param name="actual">A directory path string containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.IO.DirectoryInfo,System.String,System.Object[])">
+            <summary>
+            Asserts that the directory is empty. If it is not empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.IO.DirectoryInfo,System.String)">
+            <summary>
+            Asserts that the directory is empty. If it is not empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.IO.DirectoryInfo)">
+            <summary>
+            Asserts that the directory is empty. If it is not empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that the directory is empty. If it is not empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.String,System.String)">
+            <summary>
+            Asserts that the directory is empty. If it is not empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsEmpty(System.String)">
+            <summary>
+            Asserts that the directory is empty. If it is not empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.IO.DirectoryInfo,System.String,System.Object[])">
+            <summary>
+            Asserts that the directory is not empty. If it is empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.IO.DirectoryInfo,System.String)">
+            <summary>
+            Asserts that the directory is not empty. If it is empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.IO.DirectoryInfo)">
+            <summary>
+            Asserts that the directory is not empty. If it is empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that the directory is not empty. If it is empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.String,System.String)">
+            <summary>
+            Asserts that the directory is not empty. If it is empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="message">The message to display if directories are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotEmpty(System.String)">
+            <summary>
+            Asserts that the directory is not empty. If it is empty
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
+            <summary>
+            Asserts that path contains actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
+            <summary>
+            Asserts that path contains actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
+            <summary>
+            Asserts that path contains actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that path contains actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.String,System.String,System.String)">
+            <summary>
+            Asserts that path contains actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsWithin(System.String,System.String)">
+            <summary>
+            Asserts that path contains actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String,System.Object[])">
+            <summary>
+            Asserts that path does not contain actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo,System.String)">
+            <summary>
+            Asserts that path does not contain actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.IO.DirectoryInfo,System.IO.DirectoryInfo)">
+            <summary>
+            Asserts that path does not contain actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that path does not contain actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.String,System.String,System.String)">
+            <summary>
+            Asserts that path does not contain actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+            <param name="message">The message to display if directory is not within the path</param>
+        </member>
+        <member name="M:NUnit.Framework.DirectoryAssert.IsNotWithin(System.String,System.String)">
+            <summary>
+            Asserts that path does not contain actual as a subdirectory or
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="directory">A directory to search</param>
+            <param name="actual">sub-directory asserted to exist under directory</param>
+        </member>
+        <member name="T:NUnit.Framework.FileAssert">
+            <summary>
+            Summary description for FileAssert.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.#ctor">
+            <summary>
+            We don't actually want any instances of this object, but some people
+            like to inherit from it to add other static methods. Hence, the
+            protected constructor disallows any instances of this object. 
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
+            <summary>
+            Verifies that two Streams are equal.  Two Streams are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream,System.String)">
+            <summary>
+            Verifies that two Streams are equal.  Two Streams are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.Stream,System.IO.Stream)">
+            <summary>
+            Verifies that two Streams are equal.  Two Streams are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.IO.FileInfo,System.IO.FileInfo)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String,System.String)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreEqual(System.String,System.String)">
+            <summary>
+            Verifies that two files are equal.  Two files are considered
+            equal if both are null, or if both have the same value byte for byte.
+            If they are not equal an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String,System.Object[])">
+            <summary>
+            Asserts that two Streams are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to be displayed when the two Stream are the same.</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream,System.String)">
+            <summary>
+            Asserts that two Streams are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+            <param name="message">The message to be displayed when the Streams are the same.</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.Stream,System.IO.Stream)">
+            <summary>
+            Asserts that two Streams are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The expected Stream</param>
+            <param name="actual">The actual Stream</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String,System.Object[])">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo,System.String)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.IO.FileInfo,System.IO.FileInfo)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">A file containing the value that is expected</param>
+            <param name="actual">A file containing the actual value</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if Streams are not equal</param>
+            <param name="args">Arguments to be used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String,System.String)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+            <param name="message">The message to display if objects are not equal</param>
+        </member>
+        <member name="M:NUnit.Framework.FileAssert.AreNotEqual(System.String,System.String)">
+            <summary>
+            Asserts that two files are not equal. If they are equal
+            an <see cref="T:NUnit.Framework.AssertionException"/> is thrown.
+            </summary>
+            <param name="expected">The path to a file containing the value that is expected</param>
+            <param name="actual">The path to a file containing the actual value</param>
+        </member>
+        <member name="T:NUnit.Framework.GlobalSettings">
+            <summary>
+            GlobalSettings is a place for setting default values used
+            by the framework in performing asserts.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.GlobalSettings.DefaultFloatingPointTolerance">
+            <summary>
+            Default tolerance for floating point equality
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Has">
+            <summary>
+            Helper class with properties and methods that supply
+            a number of constraints used in Asserts.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Has.Property(System.String)">
+            <summary>
+            Returns a new PropertyConstraintExpression, which will either
+            test for the existence of the named property on the object
+            being tested or apply any following constraint to that property.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Has.Attribute(System.Type)">
+            <summary>
+            Returns a new AttributeConstraint checking for the
+            presence of a particular attribute on an object.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Has.Attribute``1">
+            <summary>
+            Returns a new AttributeConstraint checking for the
+            presence of a particular attribute on an object.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Has.Member(System.Object)">
+            <summary>
+            Returns a new CollectionContainsConstraint checking for the
+            presence of a particular object in the collection.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.No">
+            <summary>
+            Returns a ConstraintExpression that negates any
+            following constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.All">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.Some">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if at least one of them succeeds.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.None">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them fail.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.Length">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Length property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.Count">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Count property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.Message">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the Message property of the object being tested.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Has.InnerException">
+            <summary>
+            Returns a new ConstraintExpression, which will apply the following
+            constraint to the InnerException property of the object being tested.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.IExpectException">
+            <summary>
+            Interface implemented by a user fixture in order to
+            validate any expected exceptions. It is only called
+            for test methods marked with the ExpectedException
+            attribute.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.IExpectException.HandleException(System.Exception)">
+            <summary>
+            Method to handle an expected exception
+            </summary>
+            <param name="ex">The exception to be handled</param>
+        </member>
+        <member name="T:NUnit.Framework.Is">
+            <summary>
+            Helper class with properties and methods that supply
+            a number of constraints used in Asserts.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.EqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests two items for equality
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.SameAs(System.Object)">
+            <summary>
+            Returns a constraint that tests that two references are the same object
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.GreaterThan(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.GreaterThanOrEqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.AtLeast(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is greater than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.LessThan(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.LessThanOrEqualTo(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.AtMost(System.Object)">
+            <summary>
+            Returns a constraint that tests whether the
+            actual value is less than or equal to the suppled argument
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.TypeOf(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual
+            value is of the exact type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.TypeOf``1">
+            <summary>
+            Returns a constraint that tests whether the actual
+            value is of the exact type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.InstanceOf(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.InstanceOf``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.InstanceOfType(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.InstanceOfType``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is of the type supplied as an argument or a derived type.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.AssignableFrom(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.AssignableFrom``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.AssignableTo(System.Type)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.AssignableTo``1">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is assignable from the type supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.EquivalentTo(System.Collections.IEnumerable)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is a collection containing the same elements as the 
+            collection supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.SubsetOf(System.Collections.IEnumerable)">
+            <summary>
+            Returns a constraint that tests whether the actual value
+            is a subset of the collection supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.StringContaining(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.StringStarting(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.StringEnding(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.StringMatching(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value matches the Regex pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.SamePath(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same as an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.SubPath(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same path or under an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.SamePathOrUnder(System.String)">
+            <summary>
+            Returns a constraint that tests whether the path provided 
+            is the same path or under an expected path after canonicalization.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Is.InRange(System.IComparable,System.IComparable)">
+            <summary>
+            Returns a constraint that tests whether the actual value falls 
+            within a specified range.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.Not">
+            <summary>
+            Returns a ConstraintExpression that negates any
+            following constraint.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.All">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.Null">
+            <summary>
+            Returns a constraint that tests for null
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.True">
+            <summary>
+            Returns a constraint that tests for True
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.False">
+            <summary>
+            Returns a constraint that tests for False
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.NaN">
+            <summary>
+            Returns a constraint that tests for NaN
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.Empty">
+            <summary>
+            Returns a constraint that tests for empty
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.Unique">
+            <summary>
+            Returns a constraint that tests whether a collection 
+            contains all unique items.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.BinarySerializable">
+            <summary>
+            Returns a constraint that tests whether an object graph is serializable in binary format.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.XmlSerializable">
+            <summary>
+            Returns a constraint that tests whether an object graph is serializable in xml format.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Is.Ordered">
+            <summary>
+            Returns a constraint that tests whether a collection is ordered
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Iz">
+            <summary>
+            The Iz class is a synonym for Is intended for use in VB,
+            which regards Is as a keyword.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.List">
+            <summary>
+            The List class is a helper class with properties and methods
+            that supply a number of constraints used with lists and collections.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.List.Map(System.Collections.ICollection)">
+            <summary>
+            List.Map returns a ListMapper, which can be used to map
+            the original collection to another collection.
+            </summary>
+            <param name="actual"></param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.ListMapper">
+            <summary>
+            ListMapper is used to transform a collection used as an actual argument
+            producing another collection to be used in the assertion.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.ListMapper.#ctor(System.Collections.ICollection)">
+            <summary>
+            Construct a ListMapper based on a collection
+            </summary>
+            <param name="original">The collection to be transformed</param>
+        </member>
+        <member name="M:NUnit.Framework.ListMapper.Property(System.String)">
+            <summary>
+            Produces a collection containing all the values of a property
+            </summary>
+            <param name="name">The collection of property values</param>
+            <returns></returns>
+        </member>
+        <member name="T:NUnit.Framework.Randomizer">
+            <summary>
+            Randomizer returns a set of random values in a repeatable
+            way, to allow re-running of tests if necessary.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Randomizer.GetRandomizer(System.Reflection.MemberInfo)">
+            <summary>
+            Get a randomizer for a particular member, returning
+            one that has already been created if it exists.
+            This ensures that the same values are generated
+            each time the tests are reloaded.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Randomizer.GetRandomizer(System.Reflection.ParameterInfo)">
+            <summary>
+            Get a randomizer for a particular parameter, returning
+            one that has already been created if it exists.
+            This ensures that the same values are generated
+            each time the tests are reloaded.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Randomizer.#ctor">
+            <summary>
+            Construct a randomizer using a random seed
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Randomizer.#ctor(System.Int32)">
+            <summary>
+            Construct a randomizer using a specified seed
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Randomizer.GetDoubles(System.Int32)">
+            <summary>
+            Return an array of random doubles between 0.0 and 1.0.
+            </summary>
+            <param name="count"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.Randomizer.GetDoubles(System.Double,System.Double,System.Int32)">
+            <summary>
+            Return an array of random doubles with values in a specified range.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Randomizer.GetInts(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Return an array of random ints with values in a specified range.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Randomizer.RandomSeed">
+            <summary>
+            Get a random seed for use in creating a randomizer.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.SpecialValue">
+            <summary>
+            The SpecialValue enum is used to represent TestCase arguments
+            that cannot be used as arguments to an Attribute.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.SpecialValue.Null">
+            <summary>
+            Null represents a null value, which cannot be used as an 
+            argument to an attriute under .NET 1.x
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.StringAssert">
+            <summary>
+            Basic Asserts on strings.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Equals(System.Object,System.Object)">
+            <summary>
+            The Equals method throws an AssertionException. This is done 
+            to make sure there is no mistake by calling this function.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.ReferenceEquals(System.Object,System.Object)">
+            <summary>
+            override the default ReferenceEquals to throw an AssertionException. This 
+            implementation makes sure there is no mistake in calling this function 
+            as part of Assert. 
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.Contains(System.String,System.String)">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotContain(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string is not found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotContain(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotContain(System.String,System.String)">
+            <summary>
+            Asserts that a string is found within another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string starts with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string starts with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.StartsWith(System.String,System.String)">
+            <summary>
+            Asserts that a string starts with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotStartWith(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string does not start with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotStartWith(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string does not start with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotStartWith(System.String,System.String)">
+            <summary>
+            Asserts that a string does not start with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string ends with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string ends with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.EndsWith(System.String,System.String)">
+            <summary>
+            Asserts that a string ends with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotEndWith(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string does not end with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotEndWith(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string does not end with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotEndWith(System.String,System.String)">
+            <summary>
+            Asserts that a string does not end with another string.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The string to be examined</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that two strings are equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String,System.String)">
+            <summary>
+            Asserts that two strings are equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreEqualIgnoringCase(System.String,System.String)">
+            <summary>
+            Asserts that two strings are equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreNotEqualIgnoringCase(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that two strings are not equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreNotEqualIgnoringCase(System.String,System.String,System.String)">
+            <summary>
+            Asserts that two strings are Notequal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.AreNotEqualIgnoringCase(System.String,System.String)">
+            <summary>
+            Asserts that two strings are not equal, without regard to case.
+            </summary>
+            <param name="expected">The expected string</param>
+            <param name="actual">The actual string</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string matches an expected regular expression pattern.
+            </summary>
+            <param name="pattern">The regex pattern to be matched</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string matches an expected regular expression pattern.
+            </summary>
+            <param name="pattern">The regex pattern to be matched</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.IsMatch(System.String,System.String)">
+            <summary>
+            Asserts that a string matches an expected regular expression pattern.
+            </summary>
+            <param name="pattern">The regex pattern to be matched</param>
+            <param name="actual">The actual string</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotMatch(System.String,System.String,System.String,System.Object[])">
+            <summary>
+            Asserts that a string does not match an expected regular expression pattern.
+            </summary>
+            <param name="pattern">The regex pattern to be used</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+            <param name="args">Arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotMatch(System.String,System.String,System.String)">
+            <summary>
+            Asserts that a string does not match an expected regular expression pattern.
+            </summary>
+            <param name="pattern">The regex pattern to be used</param>
+            <param name="actual">The actual string</param>
+            <param name="message">The message to display in case of failure</param>
+        </member>
+        <member name="M:NUnit.Framework.StringAssert.DoesNotMatch(System.String,System.String)">
+            <summary>
+            Asserts that a string does not match an expected regular expression pattern.
+            </summary>
+            <param name="pattern">The regex pattern to be used</param>
+            <param name="actual">The actual string</param>
+        </member>
+        <member name="T:NUnit.Framework.TestCaseData">
+            <summary>
+            The TestCaseData class represents a set of arguments
+            and other parameter info to be used for a parameterized
+            test case. It provides a number of instance modifiers
+            for use in initializing the test case.
+            
+            Note: Instance modifiers are getters that return
+            the same instance after modifying it's state.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.arguments">
+            <summary>
+            The argument list to be provided to the test
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.result">
+            <summary>
+            The expected result to be returned
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.expectedExceptionType">
+            <summary>
+             The expected exception Type
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.expectedExceptionName">
+            <summary>
+            The FullName of the expected exception
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.testName">
+            <summary>
+            The name to be used for the test
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.description">
+            <summary>
+            The description of the test
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.properties">
+            <summary>
+            A dictionary of properties, used to add information
+            to tests without requiring the class to change.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.isIgnored">
+            <summary>
+            If true, indicates that the test case is to be ignored
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestCaseData.ignoreReason">
+            <summary>
+            The reason for ignoring a test case
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object[])">
+            <summary>
+            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+            </summary>
+            <param name="args">The arguments.</param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+            </summary>
+            <param name="arg">The argument.</param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+            </summary>
+            <param name="arg1">The first argument.</param>
+            <param name="arg2">The second argument.</param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.#ctor(System.Object,System.Object,System.Object)">
+            <summary>
+            Initializes a new instance of the <see cref="T:TestCaseData"/> class.
+            </summary>
+            <param name="arg1">The first argument.</param>
+            <param name="arg2">The second argument.</param>
+            <param name="arg3">The third argument.</param>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.Returns(System.Object)">
+            <summary>
+            Sets the expected result for the test
+            </summary>
+            <param name="result">The expected result</param>
+            <returns>A modified TestCaseData</returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.Throws(System.Type)">
+            <summary>
+            Sets the expected exception type for the test
+            </summary>
+            <param name="exceptionType">Type of the expected exception.</param>
+            <returns>The modified TestCaseData instance</returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.Throws(System.String)">
+            <summary>
+            Sets the expected exception type for the test
+            </summary>
+            <param name="exceptionName">FullName of the expected exception.</param>
+            <returns>The modified TestCaseData instance</returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.SetName(System.String)">
+            <summary>
+            Sets the name of the test case
+            </summary>
+            <returns>The modified TestCaseData instance</returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.SetDescription(System.String)">
+            <summary>
+            Sets the description for the test case
+            being constructed.
+            </summary>
+            <param name="description">The description.</param>
+            <returns>The modified TestCaseData instance.</returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.SetCategory(System.String)">
+            <summary>
+            Applies a category to the test
+            </summary>
+            <param name="category"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.SetProperty(System.String,System.String)">
+            <summary>
+            Applies a named property to the test
+            </summary>
+            <param name="propName"></param>
+            <param name="propValue"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.SetProperty(System.String,System.Int32)">
+            <summary>
+            Applies a named property to the test
+            </summary>
+            <param name="propName"></param>
+            <param name="propValue"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.SetProperty(System.String,System.Double)">
+            <summary>
+            Applies a named property to the test
+            </summary>
+            <param name="propName"></param>
+            <param name="propValue"></param>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.Ignore">
+            <summary>
+            Ignores this TestCase.
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:NUnit.Framework.TestCaseData.Ignore(System.String)">
+            <summary>
+            Ignores this TestCase, specifying the reason.
+            </summary>
+            <param name="reason">The reason.</param>
+            <returns></returns>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.Arguments">
+            <summary>
+            Gets the argument list to be provided to the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.Result">
+            <summary>
+            Gets the expected result
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.ExpectedException">
+            <summary>
+             Gets the expected exception Type
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.ExpectedExceptionName">
+            <summary>
+            Gets the FullName of the expected exception
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.TestName">
+            <summary>
+            Gets the name to be used for the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.Description">
+            <summary>
+            Gets the description of the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.Ignored">
+            <summary>
+            Gets a value indicating whether this <see cref="T:NUnit.Framework.ITestCaseData"/> is ignored.
+            </summary>
+            <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.IgnoreReason">
+            <summary>
+            Gets the ignore reason.
+            </summary>
+            <value>The ignore reason.</value>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.Categories">
+            <summary>
+            Gets a list of categories associated with this test.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestCaseData.Properties">
+            <summary>
+            Gets the property dictionary for this test
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestContext">
+            <summary>
+            Provide the context information of the current test
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestContext.#ctor(System.Collections.IDictionary)">
+            <summary>
+            Constructs a TestContext using the provided context dictionary
+            </summary>
+            <param name="context">A context dictionary</param>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.CurrentContext">
+            <summary>
+            Get the current test context. This is created
+            as needed. The user may save the context for
+            use within a test, but it should not be used
+            outside the test for which it is created.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.Test">
+            <summary>
+            Gets a TestAdapter representing the currently executing test in this context.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.Result">
+            <summary>
+            Gets a ResultAdapter representing the current result for the test 
+            executing in this context.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.TestDirectory">
+            <summary>
+            Gets the current directory for this TestContext
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestContext.TestAdapter">
+            <summary>
+            TestAdapter adapts a Test for consumption by
+            the user test code.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestContext.TestAdapter.#ctor(System.Collections.IDictionary)">
+            <summary>
+            Constructs a TestAdapter for this context
+            </summary>
+            <param name="context">The context dictionary</param>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.TestAdapter.Name">
+            <summary>
+            The name of the test.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.TestAdapter.FullName">
+            <summary>
+            The FullName of the test
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.TestAdapter.Properties">
+            <summary>
+            The properties of the test.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestContext.ResultAdapter">
+            <summary>
+            ResultAdapter adapts a TestResult for consumption by
+            the user test code.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TestContext.ResultAdapter.#ctor(System.Collections.IDictionary)">
+            <summary>
+            Construct a ResultAdapter for a context
+            </summary>
+            <param name="context">The context holding the result</param>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.ResultAdapter.State">
+            <summary>
+            The TestState of current test. This maps to the ResultState
+            used in nunit.core and is subject to change in the future.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.TestContext.ResultAdapter.Status">
+            <summary>
+            The TestStatus of current test. This enum will be used
+            in future versions of NUnit and so is to be preferred
+            to the TestState value.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestState">
+            <summary>
+            The ResultState enum indicates the result of running a test
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.Inconclusive">
+            <summary>
+            The result is inconclusive
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.NotRunnable">
+            <summary>
+            The test was not runnable.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.Skipped">
+            <summary>
+            The test has been skipped. 
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.Ignored">
+            <summary>
+            The test has been ignored.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.Success">
+            <summary>
+            The test succeeded
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.Failure">
+            <summary>
+            The test failed
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.Error">
+            <summary>
+            The test encountered an unexpected exception
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestState.Cancelled">
+            <summary>
+            The test was cancelled by the user
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TestStatus">
+            <summary>
+            The TestStatus enum indicates the result of running a test
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestStatus.Inconclusive">
+            <summary>
+            The test was inconclusive
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestStatus.Skipped">
+            <summary>
+            The test has skipped 
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestStatus.Passed">
+            <summary>
+            The test succeeded
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TestStatus.Failed">
+            <summary>
+            The test failed
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Text">
+            <summary>
+            Helper class with static methods used to supply constraints
+            that operate on strings.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.Contains(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.DoesNotContain(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value contains the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.StartsWith(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.DoesNotStartWith(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value starts with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.EndsWith(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.DoesNotEndWith(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value ends with the substring supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.Matches(System.String)">
+            <summary>
+            Returns a constraint that succeeds if the actual
+            value matches the Regex pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Text.DoesNotMatch(System.String)">
+            <summary>
+            Returns a constraint that fails if the actual
+            value matches the pattern supplied as an argument.
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Text.All">
+            <summary>
+            Returns a ConstraintExpression, which will apply
+            the following constraint to all members of a collection,
+            succeeding if all of them succeed.
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.TextMessageWriter">
+            <summary>
+            TextMessageWriter writes constraint descriptions and messages
+            in displayable form as a text stream. It tailors the display
+            of individual message components to form the standard message
+            format of NUnit assertion failure messages.
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Expected">
+            <summary>
+            Prefix used for the expected value line of a message
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TextMessageWriter.Pfx_Actual">
+            <summary>
+            Prefix used for the actual value line of a message
+            </summary>
+        </member>
+        <member name="F:NUnit.Framework.TextMessageWriter.PrefixLength">
+            <summary>
+            Length of a message prefix
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.#ctor">
+            <summary>
+            Construct a TextMessageWriter
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.#ctor(System.String,System.Object[])">
+            <summary>
+            Construct a TextMessageWriter, specifying a user message
+            and optional formatting arguments.
+            </summary>
+            <param name="userMessage"></param>
+            <param name="args"></param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteMessageLine(System.Int32,System.String,System.Object[])">
+            <summary>
+            Method to write single line  message with optional args, usually
+            written to precede the general failure message, at a givel 
+            indentation level.
+            </summary>
+            <param name="level">The indentation level of the message</param>
+            <param name="message">The message to be written</param>
+            <param name="args">Any arguments used in formatting the message</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Display Expected and Actual lines for a constraint. This
+            is called by MessageWriter's default implementation of 
+            WriteMessageTo and provides the generic two-line display. 
+            </summary>
+            <param name="constraint">The constraint that failed</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object)">
+            <summary>
+            Display Expected and Actual lines for given values. This
+            method may be called by constraints that need more control over
+            the display of actual and expected values than is provided
+            by the default implementation.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayDifferences(System.Object,System.Object,NUnit.Framework.Constraints.Tolerance)">
+            <summary>
+            Display Expected and Actual lines for given values, including
+            a tolerance value on the expected line.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="actual">The actual value causing the failure</param>
+            <param name="tolerance">The tolerance within which the test was made</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.DisplayStringDifferences(System.String,System.String,System.Int32,System.Boolean,System.Boolean)">
+            <summary>
+            Display the expected and actual string values on separate lines.
+            If the mismatch parameter is >=0, an additional line is displayed
+            line containing a caret that points to the mismatch point.
+            </summary>
+            <param name="expected">The expected string value</param>
+            <param name="actual">The actual string value</param>
+            <param name="mismatch">The point at which the strings don't match or -1</param>
+            <param name="ignoreCase">If true, case is ignored in string comparisons</param>
+            <param name="clipping">If true, clip the strings to fit the max line length</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteConnector(System.String)">
+            <summary>
+            Writes the text for a connector.
+            </summary>
+            <param name="connector">The connector.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WritePredicate(System.String)">
+            <summary>
+            Writes the text for a predicate.
+            </summary>
+            <param name="predicate">The predicate.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteModifier(System.String)">
+            <summary>
+            Write the text for a modifier.
+            </summary>
+            <param name="modifier">The modifier.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedValue(System.Object)">
+            <summary>
+            Writes the text for an expected value.
+            </summary>
+            <param name="expected">The expected value.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualValue(System.Object)">
+            <summary>
+            Writes the text for an actual value.
+            </summary>
+            <param name="actual">The actual value.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteValue(System.Object)">
+            <summary>
+            Writes the text for a generalized value.
+            </summary>
+            <param name="val">The value.</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteCollectionElements(System.Collections.ICollection,System.Int32,System.Int32)">
+            <summary>
+            Writes the text for a collection value,
+            starting at a particular point, to a max length
+            </summary>
+            <param name="collection">The collection containing elements to write.</param>
+            <param name="start">The starting point of the elements to write</param>
+            <param name="max">The maximum number of elements to write</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Write the generic 'Expected' line for a constraint
+            </summary>
+            <param name="constraint">The constraint that failed</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object)">
+            <summary>
+            Write the generic 'Expected' line for a given value
+            </summary>
+            <param name="expected">The expected value</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteExpectedLine(System.Object,NUnit.Framework.Constraints.Tolerance)">
+            <summary>
+            Write the generic 'Expected' line for a given value
+            and tolerance.
+            </summary>
+            <param name="expected">The expected value</param>
+            <param name="tolerance">The tolerance within which the test was made</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(NUnit.Framework.Constraints.Constraint)">
+            <summary>
+            Write the generic 'Actual' line for a constraint
+            </summary>
+            <param name="constraint">The constraint for which the actual value is to be written</param>
+        </member>
+        <member name="M:NUnit.Framework.TextMessageWriter.WriteActualLine(System.Object)">
+            <summary>
+            Write the generic 'Actual' line for a given value
+            </summary>
+            <param name="actual">The actual value causing a failure</param>
+        </member>
+        <member name="P:NUnit.Framework.TextMessageWriter.MaxLineLength">
+            <summary>
+            Gets or sets the maximum line length for this writer
+            </summary>
+        </member>
+        <member name="T:NUnit.Framework.Throws">
+            <summary>
+            Helper class with properties and methods that supply
+            constraints that operate on exceptions.
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Throws.TypeOf(System.Type)">
+            <summary>
+            Creates a constraint specifying the exact type of exception expected
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Throws.TypeOf``1">
+            <summary>
+            Creates a constraint specifying the exact type of exception expected
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Throws.InstanceOf(System.Type)">
+            <summary>
+            Creates a constraint specifying the type of exception expected
+            </summary>
+        </member>
+        <member name="M:NUnit.Framework.Throws.InstanceOf``1">
+            <summary>
+            Creates a constraint specifying the type of exception expected
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Throws.Exception">
+            <summary>
+            Creates a constraint specifying an expected exception
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Throws.InnerException">
+            <summary>
+            Creates a constraint specifying an exception with a given InnerException
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Throws.TargetInvocationException">
+            <summary>
+            Creates a constraint specifying an expected TargetInvocationException
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Throws.ArgumentException">
+            <summary>
+            Creates a constraint specifying an expected TargetInvocationException
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Throws.InvalidOperationException">
+            <summary>
+            Creates a constraint specifying an expected TargetInvocationException
+            </summary>
+        </member>
+        <member name="P:NUnit.Framework.Throws.Nothing">
+            <summary>
+            Creates a constraint specifying that no exception is thrown
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe.config
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/NUnit/nunit-agent-x86.exe.config
@@ -1,69 +1,69 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  
-  <runtime>
-    <!-- We need this so test exceptions don't crash NUnit -->
-    <legacyUnhandledExceptionPolicy enabled="1" />
-
-    <!-- Look for addins in the addins directory for now -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <probing privatePath="lib;addins"/>
-   </assemblyBinding>
-
-    <!--
-    The following <assemblyBinding> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file,
-    which controls loading of the tests.
-   -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-			appliesTo="v1.0.3705">
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Data" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Drawing" 
-                          publicKeyToken="b03f5f7f11d50a3a" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Windows.Forms" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Xml" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-  
-  </runtime>
-  
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  
+  <runtime>
+    <!-- We need this so test exceptions don't crash NUnit -->
+    <legacyUnhandledExceptionPolicy enabled="1" />
+
+    <!-- Look for addins in the addins directory for now -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <probing privatePath="lib;addins"/>
+   </assemblyBinding>
+
+    <!--
+    The following <assemblyBinding> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file,
+    which controls loading of the tests.
+   -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+			appliesTo="v1.0.3705">
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Data" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Drawing" 
+                          publicKeyToken="b03f5f7f11d50a3a" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Windows.Forms" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Xml" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+  
+  </runtime>
+  
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe.config
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/NUnit/nunit-agent.exe.config
@@ -1,69 +1,69 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  
-  <runtime>
-    <!-- We need this so test exceptions don't crash NUnit -->
-    <legacyUnhandledExceptionPolicy enabled="1" />
-
-    <!-- Look for addins in the addins directory for now -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <probing privatePath="lib;addins"/>
-   </assemblyBinding>
-
-    <!--
-    The following <assemblyBinding> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file,
-    which controls loading of the tests.
-   -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-			appliesTo="v1.0.3705">
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Data" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Drawing" 
-                          publicKeyToken="b03f5f7f11d50a3a" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Windows.Forms" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Xml" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-  
-  </runtime>
-  
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  
+  <runtime>
+    <!-- We need this so test exceptions don't crash NUnit -->
+    <legacyUnhandledExceptionPolicy enabled="1" />
+
+    <!-- Look for addins in the addins directory for now -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <probing privatePath="lib;addins"/>
+   </assemblyBinding>
+
+    <!--
+    The following <assemblyBinding> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file,
+    which controls loading of the tests.
+   -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+			appliesTo="v1.0.3705">
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Data" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Drawing" 
+                          publicKeyToken="b03f5f7f11d50a3a" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Windows.Forms" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Xml" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+  
+  </runtime>
+  
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe.config
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/NUnit/nunit-console-x86.exe.config
@@ -1,69 +1,69 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-
-  <runtime>
-    <!-- We need this so test exceptions don't crash NUnit -->
-    <legacyUnhandledExceptionPolicy enabled="1" />
-
-    <!-- Look for addins in the addins directory for now -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <probing privatePath="lib;addins"/>
-   </assemblyBinding>
-
-   <!--
-    The following <assemblyBinding> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file,
-    which controls loading of the tests.
-   -->
-   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-			appliesTo="v1.0.3705">
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Data" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Drawing" 
-                          publicKeyToken="b03f5f7f11d50a3a" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Windows.Forms" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Xml" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-
-  </runtime>
-  
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+
+  <runtime>
+    <!-- We need this so test exceptions don't crash NUnit -->
+    <legacyUnhandledExceptionPolicy enabled="1" />
+
+    <!-- Look for addins in the addins directory for now -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <probing privatePath="lib;addins"/>
+   </assemblyBinding>
+
+   <!--
+    The following <assemblyBinding> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file,
+    which controls loading of the tests.
+   -->
+   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+			appliesTo="v1.0.3705">
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Data" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Drawing" 
+                          publicKeyToken="b03f5f7f11d50a3a" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Windows.Forms" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Xml" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+
+  </runtime>
+  
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/NUnit/nunit-console.exe.config
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/NUnit/nunit-console.exe.config
@@ -1,69 +1,69 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-
-  <runtime>
-    <!-- We need this so test exceptions don't crash NUnit -->
-    <legacyUnhandledExceptionPolicy enabled="1" />
-
-    <!-- Look for addins in the addins directory for now -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <probing privatePath="lib;addins"/>
-   </assemblyBinding>
-
-   <!--
-    The following <assemblyBinding> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file,
-    which controls loading of the tests.
-   -->
-   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-			appliesTo="v1.0.3705">
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Data" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Drawing" 
-                          publicKeyToken="b03f5f7f11d50a3a" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Windows.Forms" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Xml" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-
-  </runtime>
-  
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+
+  <runtime>
+    <!-- We need this so test exceptions don't crash NUnit -->
+    <legacyUnhandledExceptionPolicy enabled="1" />
+
+    <!-- Look for addins in the addins directory for now -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <probing privatePath="lib;addins"/>
+   </assemblyBinding>
+
+   <!--
+    The following <assemblyBinding> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file,
+    which controls loading of the tests.
+   -->
+   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+			appliesTo="v1.0.3705">
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Data" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Drawing" 
+                          publicKeyToken="b03f5f7f11d50a3a" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Windows.Forms" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Xml" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+
+  </runtime>
+  
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/NUnit/nunit-x86.exe.config
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/NUnit/nunit-x86.exe.config
@@ -1,83 +1,83 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <!--
-     Application settings for NUnit-gui.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-  <appSettings>
-    <!--
-     Uncomment to specify the url to be used for help. If not used, the
-     default value is something like
-		file://localhost/C:/Program Files/NUnit 2.2/doc/index.html
-	 This setting is provided in case your default browser doesn't
-	 support this format.
-	-->
-    <!-- <add key="helpUrl" value="http://www.nunit.org" /> -->
-  </appSettings>
-
-  <runtime>
-    <!-- We need this so test exceptions don't crash NUnit -->
-    <legacyUnhandledExceptionPolicy enabled="1" />
-
-    <!-- Look for addins in the addins directory for now -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <probing privatePath="lib;addins" />
-    </assemblyBinding>
-
-    <!--
-    The following <assemblyBinding> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file,
-    which controls loading of the tests.
-   -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-       appliesTo="v1.0.3705">
-
-      <dependentAssembly>
-        <assemblyIdentity name="System"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Data"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Drawing"
-                          publicKeyToken="b03f5f7f11d50a3a"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Windows.Forms"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Xml"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-
-  </runtime>
-
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <!--
+     Application settings for NUnit-gui.exe. Do NOT put settings
+	 for use by your tests here.
+	-->
+  <appSettings>
+    <!--
+     Uncomment to specify the url to be used for help. If not used, the
+     default value is something like
+		file://localhost/C:/Program Files/NUnit 2.2/doc/index.html
+	 This setting is provided in case your default browser doesn't
+	 support this format.
+	-->
+    <!-- <add key="helpUrl" value="http://www.nunit.org" /> -->
+  </appSettings>
+
+  <runtime>
+    <!-- We need this so test exceptions don't crash NUnit -->
+    <legacyUnhandledExceptionPolicy enabled="1" />
+
+    <!-- Look for addins in the addins directory for now -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <probing privatePath="lib;addins" />
+    </assemblyBinding>
+
+    <!--
+    The following <assemblyBinding> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file,
+    which controls loading of the tests.
+   -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+       appliesTo="v1.0.3705">
+
+      <dependentAssembly>
+        <assemblyIdentity name="System"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Data"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Drawing"
+                          publicKeyToken="b03f5f7f11d50a3a"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Windows.Forms"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Xml"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+
+  </runtime>
+
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/NUnit/nunit.exe.config
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/NUnit/nunit.exe.config
@@ -1,83 +1,83 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <!--
-     Application settings for NUnit-gui.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-  <appSettings>
-    <!--
-     Uncomment to specify the url to be used for help. If not used, the
-     default value is something like
-		file://localhost/C:/Program Files/NUnit 2.2/doc/index.html
-	 This setting is provided in case your default browser doesn't
-	 support this format.
-	-->
-    <!-- <add key="helpUrl" value="http://www.nunit.org" /> -->
-  </appSettings>
-
-  <runtime>
-    <!-- We need this so test exceptions don't crash NUnit -->
-    <legacyUnhandledExceptionPolicy enabled="1" />
-
-    <!-- Look for addins in the addins directory for now -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <probing privatePath="lib;addins" />
-    </assemblyBinding>
-
-    <!--
-    The following <assemblyBinding> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file,
-    which controls loading of the tests.
-   -->
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-       appliesTo="v1.0.3705">
-
-      <dependentAssembly>
-        <assemblyIdentity name="System"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Data"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Drawing"
-                          publicKeyToken="b03f5f7f11d50a3a"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Windows.Forms"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly>
-        <assemblyIdentity name="System.Xml"
-                          publicKeyToken="b77a5c561934e089"
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0"
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-
-  </runtime>
-
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <!--
+     Application settings for NUnit-gui.exe. Do NOT put settings
+	 for use by your tests here.
+	-->
+  <appSettings>
+    <!--
+     Uncomment to specify the url to be used for help. If not used, the
+     default value is something like
+		file://localhost/C:/Program Files/NUnit 2.2/doc/index.html
+	 This setting is provided in case your default browser doesn't
+	 support this format.
+	-->
+    <!-- <add key="helpUrl" value="http://www.nunit.org" /> -->
+  </appSettings>
+
+  <runtime>
+    <!-- We need this so test exceptions don't crash NUnit -->
+    <legacyUnhandledExceptionPolicy enabled="1" />
+
+    <!-- Look for addins in the addins directory for now -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <probing privatePath="lib;addins" />
+    </assemblyBinding>
+
+    <!--
+    The following <assemblyBinding> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file,
+    which controls loading of the tests.
+   -->
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+       appliesTo="v1.0.3705">
+
+      <dependentAssembly>
+        <assemblyIdentity name="System"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Data"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Drawing"
+                          publicKeyToken="b03f5f7f11d50a3a"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Windows.Forms"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly>
+        <assemblyIdentity name="System.Xml"
+                          publicKeyToken="b77a5c561934e089"
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0"
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+
+  </runtime>
+
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/Newtonsoft.Json/Tools/PSake/psake.psm1
+++ mono-4.6.2.7+dfsg/external/Newtonsoft.Json/Tools/PSake/psake.psm1
@@ -1,1208 +1,1208 @@
-# psake
-# Copyright (c) 2010 James Kovacs
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-#Requires -Version 2.0
-
-#-- Private Module Variables (Listed here for quick reference)
-[system.collections.stack]$script:context
-
-#-- Public Module Variables -- The psake hashtable variable is initialized in the invoke-psake function
-$script:psake = @{}
-$script:psake.use_exit_on_error = $false    # determines if psake uses the "exit()" function when an exception occurs
-$script:psake.log_error = $false            # determines if the exception details are written to a file
-$script:psake.build_success = $false        # indicates that the current build was successful
-$script:psake.version = "4.00"              # contains the current version of psake
-$script:psake.build_script_file = $null     # contains a System.IO.FileInfo for the current build file
-$script:psake.framework_version = ""        # contains the framework version # for the current build
-$script:psake.default_build_file_name = 'default.ps1'
-
-Export-ModuleMember -Variable "psake"
-
-#-- Private Module Functions
-function ExecuteTask
-{
-  param([string]$taskName)
-
-  Assert (![string]::IsNullOrEmpty($taskName)) "Task name should not be null or empty string"
-
-  $taskKey = $taskName.ToLower()
-
-    Assert ($script:context.Peek().tasks.Contains($taskKey)) "task [$taskName] does not exist"
-
-    if ($script:context.Peek().executedTasks.Contains($taskKey))
-  {
-    return
-  }
-
-  Assert (!$script:context.Peek().callStack.Contains($taskKey)) "Error: Circular reference found for task, $taskName"
-
-  $script:context.Peek().callStack.Push($taskKey)
-
-  $task = $script:context.Peek().tasks.$taskKey
-
-  $taskName = $task.Name
-
-  $precondition_is_valid = if ($task.Precondition -ne $null) {& $task.Precondition} else {$true}
-
-  if (!$precondition_is_valid)
-  {
-    "Precondition was false not executing $name"
-  }
-  else
-  {
-    if ($taskKey -ne 'default')
-    {
-      $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
-
-      if ( ($task.PreAction -ne $null) -or ($task.PostAction -ne $null) )
-      {
-        Assert ($task.Action -ne $null) "Error: Action parameter must be specified when using PreAction or PostAction parameters"
-      }
-
-      if ($task.Action -ne $null)
-      {
-        try
-        {
-          foreach($childTask in $task.DependsOn)
-          {
-            ExecuteTask $childTask
-          }
-
-          $script:context.Peek().currentTaskName = $taskName
-
-          if ($script:context.Peek().taskSetupScriptBlock -ne $null)
-          {
-            & $script:context.Peek().taskSetupScriptBlock
-          }
-
-          if ($task.PreAction -ne $null)
-          {
-            & $task.PreAction
-          }
-
-          $script:context.Peek().formatTaskNameString -f $taskName
-          & $task.Action
-
-          if ($task.PostAction -ne $null)
-          {
-            & $task.PostAction
-          }
-
-          if ($script:context.Peek().taskTearDownScriptBlock -ne $null)
-          {
-            & $script:context.Peek().taskTearDownScriptBlock
-          }
-        }
-        catch
-        {
-          if ($task.ContinueOnError)
-          {
-            "-"*70
-            "Error in Task [$taskName] $_"
-            "-"*70
-          }
-          else
-          {
-            throw $_
-          }
-        }
-      } # if ($task.Action -ne $null)
-      else
-      {
-        #no Action was specified but we still execute all the dependencies
-        foreach($childTask in $task.DependsOn)
-        {
-          ExecuteTask $childTask
-        }
-      }
-      $stopwatch.stop()
-      $task.Duration = $stopwatch.Elapsed
-    } # if ($name.ToLower() -ne 'default')
-    else
-    {
-      foreach($childTask in $task.DependsOn)
-      {
-        ExecuteTask $childTask
-      }
-    }
-
-    if ($task.Postcondition -ne $null)
-    {
-      Assert (& $task.Postcondition) "Error: Postcondition failed for $taskName"
-    }
-  }
-
-  $poppedTaskKey = $script:context.Peek().callStack.Pop()
-
-  Assert ($poppedTaskKey -eq $taskKey) "Error: CallStack was corrupt. Expected $taskKey, but got $poppedTaskKey."
-
-  $script:context.Peek().executedTasks.Push($taskKey)
-}
-
-function Configure-BuildEnvironment
-{
-  if ($framework.Length -ne 3 -and $framework.Length -ne 6) {
-    throw "Error: Invalid .NET Framework version, $framework, specified"
-  }
-  $versionPart = $framework.Substring(0,3)
-  $bitnessPart = $framework.Substring(3)
-  $versions = $null
-  switch ($versionPart)
-  {
-    '1.0' { $versions = @('v1.0.3705')  }
-    '1.1' { $versions = @('v1.1.4322')  }
-    '2.0' { $versions = @('v2.0.50727') }
-    '3.0' { $versions = @('v2.0.50727') }
-    '3.5' { $versions = @('v3.5','v2.0.50727') }
-    '4.0' { $versions = @('v4.0.30319') }
-    default { throw "Error: Unknown .NET Framework version, $versionPart, specified in $framework" }
-  }
-
-  $bitness = 'Framework'
-  if($versionPart -ne '1.0' -and $versionPart -ne '1.1') {
-    switch ($bitnessPart)
-    {
-      'x86' { $bitness = 'Framework' }
-      'x64' { $bitness = 'Framework64' }
-      $null {
-        $ptrSize = [System.IntPtr]::Size
-        switch ($ptrSize)
-        {
-          4 { $bitness = 'Framework' }
-          8 { $bitness = 'Framework64' }
-          default { throw "Error: Unknown pointer size ($ptrSize) returned from System.IntPtr." }
-        }
-      }
-      default { throw "Error: Unknown .NET Framework bitness, $bitnessPart, specified in $framework" }
-    }
-  }
-  $frameworkDirs = $versions | foreach { "$env:windir\Microsoft.NET\$bitness\$_\" }
-
-  $frameworkDirs | foreach { Assert (test-path $_) "Error: No .NET Framework installation directory found at $_" }
-
-  $env:path = [string]::Join(';', $frameworkDirs) + ";$env:path"
-  #if any error occurs in a PS function then "stop" processing immediately
-  # this does not effect any external programs that return a non-zero exit code
-  $global:ErrorActionPreference = "Stop"
-}
-
-function Cleanup-Environment
-{
-  $env:path = $script:context.Peek().originalEnvPath
-  Set-Location $script:context.Peek().originalDirectory
-  $global:ErrorActionPreference = $script:context.Peek().originalErrorActionPreference
-}
-
-#borrowed from Jeffrey Snover http://blogs.msdn.com/powershell/archive/2006/12/07/resolve-error.aspx
-function Resolve-Error($ErrorRecord=$Error[0])
-{
-  "ErrorRecord"
-  $ErrorRecord | Format-List * -Force | Out-String -Stream | ? {$_}
-  ""
-  "ErrorRecord.InvocationInfo"
-  $ErrorRecord.InvocationInfo | Format-List * | Out-String -Stream | ? {$_}
-  ""
-  "Exception"
-  $Exception = $ErrorRecord.Exception
-  for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException))
-  {
-    "$i" * 70
-    $Exception | Format-List * -Force | Out-String -Stream | ? {$_}
-    ""
-  }
-}
-
-function Write-Documentation
-{
-  $list = New-Object System.Collections.ArrayList
-  foreach($key in $script:context.Peek().tasks.Keys)
-  {
-    if($key -eq "default")
-    {
-      continue
-    }
-    $task = $script:context.Peek().tasks.$key
-    $content = "" | Select-Object Name, Description
-    $content.Name = $task.Name
-    $content.Description = $task.Description
-    $index = $list.Add($content)
-  }
-
-  $list | Sort 'Name' | Format-Table -Auto
-}
-
-function Write-TaskTimeSummary
-{
-  "-"*70
-  "Build Time Report"
-  "-"*70
-  $list = @()
-  while ($script:context.Peek().executedTasks.Count -gt 0)
-  {
-    $taskKey = $script:context.Peek().executedTasks.Pop()
-    $task = $script:context.Peek().tasks.$taskKey
-    if($taskKey -eq "default")
-    {
-      continue
-    }
-    $list += "" | Select-Object @{Name="Name";Expression={$task.Name}}, @{Name="Duration";Expression={$task.Duration}}
-  }
-  [Array]::Reverse($list)
-  $list += "" | Select-Object @{Name="Name";Expression={"Total:"}}, @{Name="Duration";Expression={$stopwatch.Elapsed}}
-  $list | Format-Table -Auto | Out-String -Stream | ? {$_}  # using "Out-String -Stream" to filter out the blank line that Format-Table prepends
-}
-
-#-- Public Module Functions
-function Exec
-{
-<#
-.SYNOPSIS
-Helper function for executing command-line programs.
-
-.DESCRIPTION
-This is a helper function that runs a scriptblock and checks the PS variable $lastexitcode to see if an error occcured.
-If an error is detected then an exception is thrown.  This function allows you to run command-line programs without
-having to explicitly check fthe $lastexitcode variable.
-
-.PARAMETER cmd
-The scriptblock to execute.  This scriptblock will typically contain the command-line invocation.
-Required
-
-.PARAMETER errorMessage
-The error message used for the exception that is thrown.
-Optional
-
-.EXAMPLE
-exec { svn info $repository_trunk } "Error executing SVN. Please verify SVN command-line client is installed"
-
-This example calls the svn command-line client.
-
-.LINK
-Assert
-Invoke-psake
-Task
-Properties
-Include
-FormatTaskName
-TaskSetup
-TaskTearDown
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-
-  param(
-      [Parameter(Position=0,Mandatory=1)][scriptblock]$cmd,
-    [Parameter(Position=1,Mandatory=0)][string]$errorMessage = "Error executing command: " + $cmd
-  )
-     & $cmd
-     if ($lastexitcode -ne 0)
-     {
-          throw $errorMessage
-     }
-}
-
-function Assert
-{
-<#
-.SYNOPSIS
-Helper function for "Design by Contract" assertion checking.
-
-.DESCRIPTION
-This is a helper function that makes the code less noisy by eliminating many of the "if" statements
-that are normally required to verify assumptions in the code.
-
-.PARAMETER conditionToCheck
-The boolean condition to evaluate
-Required
-
-.PARAMETER failureMessage
-The error message used for the exception if the conditionToCheck parameter is false
-Required
-
-.EXAMPLE
-Assert $false "This always throws an exception"
-
-This example always throws an exception
-
-.EXAMPLE
-Assert ( ($i % 2) -eq 0 ) "%i is not an even number"
-
-This exmaple may throw an exception if $i is not an even number
-
-.LINK
-Invoke-psake
-Task
-Properties
-Include
-FormatTaskName
-TaskSetup
-TaskTearDown
-
-.NOTES
-It might be necessary to wrap the condition with paranthesis to force PS to evaluate the condition
-so that a boolean value is calculated and passed into the 'conditionToCheck' parameter.
-
-Example:
-    Assert 1 -eq 2 "1 doesn't equal 2"
-
-PS will pass 1 into the condtionToCheck variable and PS will look for a parameter called "eq" and
-throw an exception with the following message "A parameter cannot be found that matches parameter name 'eq'"
-
-The solution is to wrap the condition in () so that PS will evaluate it first.
-
-    Assert (1 -eq 2) "1 doesn't equal 2"
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-
-  param(
-    [Parameter(Position=0,Mandatory=1)]$conditionToCheck,
-    [Parameter(Position=1,Mandatory=1)]$failureMessage
-  )
-  if (!$conditionToCheck) { throw $failureMessage }
-}
-
-function Task
-{
-<#
-.SYNOPSIS
-Defines a build task to be executed by psake
-
-.DESCRIPTION
-This function creates a 'task' object that will be used by the psake engine to execute a build task.
-Note: There must be at least one task called 'default' in the build script
-
-.PARAMETER Name
-The name of the task
-Required
-
-.PARAMETER Action
-A scriptblock containing the statements to execute
-Optional
-
-.PARAMETER PreAction
-A scriptblock to be executed before the 'Action' scriptblock.
-Note: This parameter is ignored if the 'Action' scriptblock is not defined.
-Optional
-
-.PARAMETER PostAction
-A scriptblock to be executed after the 'Action' scriptblock.
-Note: This parameter is ignored if the 'Action' scriptblock is not defined.
-Optional
-
-.PARAMETER Precondition
-A scriptblock that is executed to determine if the task is executed or skipped.
-This scriptblock should return $true or $false
-Optional
-
-.PARAMETER Postcondition
-A scriptblock that is executed to determine if the task completed its job correctly.
-An exception is thrown if the scriptblock returns $false.
-Optional
-
-.PARAMETER ContinueOnError
-If this switch parameter is set then the task will not cause the build to fail when an exception is thrown
-
-.PARAMETER Depends
-An array of tasks that this task depends on.  They will be executed before the current task is executed.
-
-.PARAMETER Description
-A description of the task.
-
-.EXAMPLE
-A sample build script is shown below:
-
-task default -depends Test
-
-task Test -depends Compile, Clean {
-  "This is a test"
-}
-
-task Compile -depends Clean {
-  "Compile"
-}
-
-task Clean {
-  "Clean"
-}
-
-The 'default' task is required and should not contain an 'Action' parameter.
-It uses the 'depends' parameter to specify that 'Test' is a dependency
-
-The 'Test' task uses the 'depends' parameter to specify that 'Compile' and 'Clean' are dependencies
-The 'Compile' task depends on the 'Clean' task.
-
-Note:
-The 'Action' parameter is defaulted to the script block following the 'Clean' task.
-
-The equivalent 'Test' task is shown below:
-
-task Test -depends Compile, Clean -Action {
-  $testMessage
-}
-
-The output for the above sample build script is shown below:
-Executing task, Clean...
-Clean
-Executing task, Compile...
-Compile
-Executing task, Test...
-This is a test
-
-Build Succeeded!
-
-----------------------------------------------------------------------
-Build Time Report
-----------------------------------------------------------------------
-Name    Duration
-----    --------
-Clean   00:00:00.0065614
-Compile 00:00:00.0133268
-Test    00:00:00.0225964
-Total:  00:00:00.0782496
-
-.LINK
-Invoke-psake
-Properties
-Include
-FormatTaskName
-TaskSetup
-TaskTearDown
-Assert
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-  param(
-    [Parameter(Position=0,Mandatory=1)]
-    [string]$name = $null,
-    [Parameter(Position=1,Mandatory=0)]
-    [scriptblock]$action = $null,
-    [Parameter(Position=2,Mandatory=0)]
-    [scriptblock]$preaction = $null,
-    [Parameter(Position=3,Mandatory=0)]
-    [scriptblock]$postaction = $null,
-    [Parameter(Position=4,Mandatory=0)]
-    [scriptblock]$precondition = $null,
-    [Parameter(Position=5,Mandatory=0)]
-    [scriptblock]$postcondition = $null,
-    [Parameter(Position=6,Mandatory=0)]
-    [switch]$continueOnError = $false,
-    [Parameter(Position=7,Mandatory=0)]
-    [string[]]$depends = @(),
-    [Parameter(Position=8,Mandatory=0)]
-    [string]$description = $null
-    )
-
-  if ($name.ToLower() -eq 'default')
-  {
-    Assert ($action -eq $null) "Error: 'default' task cannot specify an action"
-  }
-
-  $newTask = @{
-    Name = $name
-    DependsOn = $depends
-    PreAction = $preaction
-    Action = $action
-    PostAction = $postaction
-    Precondition = $precondition
-    Postcondition = $postcondition
-    ContinueOnError = $continueOnError
-    Description = $description
-    Duration = 0
-  }
-
-  $taskKey = $name.ToLower()
-
-  Assert (!$script:context.Peek().tasks.ContainsKey($taskKey)) "Error: Task, $name, has already been defined."
-
-  $script:context.Peek().tasks.$taskKey = $newTask
-}
-
-function Properties
-{
-<#
-.SYNOPSIS
-Define a scriptblock that contains assignments to variables that will be available to all tasks in the build script
-
-.DESCRIPTION
-A build script may declare a "Properies" function which allows you to define
-variables that will be available to all the "Task" functions in the build script.
-
-.PARAMETER properties
-The script block containing all the variable assignment statements
-Required
-
-.EXAMPLE
-A sample build script is shown below:
-
-Properties {
-  $build_dir = "c:\build"
-  $connection_string = "datasource=localhost;initial catalog=northwind;integrated security=sspi"
-}
-
-Task default -depends Test
-
-Task Test -depends Compile, Clean {
-}
-
-Task Compile -depends Clean {
-}
-
-Task Clean {
-}
-
-.LINK
-Invoke-psake
-Task
-Include
-FormatTaskName
-TaskSetup
-TaskTearDown
-Assert
-
-.NOTES
-You can have more than 1 "Properties" function defined in the script
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-  param(
-  [Parameter(Position=0,Mandatory=1)]
-  [scriptblock]$properties
-  )
-  $script:context.Peek().properties += $properties
-}
-
-function Include
-{
-<#
-.SYNOPSIS
-Include the functions or code of another powershell script file into the current build script's scope
-
-.DESCRIPTION
-A build script may declare an "includes" function which allows you to define
-a file containing powershell code to be included and added to the scope of
-the currently running build script.
-
-.PARAMETER fileNamePathToInclude
-A string containing the path and name of the powershell file to include
-Required
-
-.EXAMPLE
-A sample build script is shown below:
-
-Include ".\build_utils.ps1"
-
-Task default -depends Test
-
-Task Test -depends Compile, Clean {
-}
-
-Task Compile -depends Clean {
-}
-
-Task Clean {
-}
-
-
-.LINK
-Invoke-psake
-Task
-Properties
-FormatTaskName
-TaskSetup
-TaskTearDown
-Assert
-
-.NOTES
-You can have more than 1 "Include" function defined in the script
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-  param(
-  [Parameter(Position=0,Mandatory=1)]
-  [string]$fileNamePathToInclude
-  )
-  Assert (test-path $fileNamePathToInclude) "Error: Unable to include $fileNamePathToInclude. File not found."
-  $script:context.Peek().includes.Enqueue((Resolve-Path $fileNamePathToInclude));
-}
-
-function FormatTaskName
-{
-<#
-.SYNOPSIS
-Allows you to define a format mask that will be used when psake displays
-the task name
-
-.DESCRIPTION
-Allows you to define a format mask that will be used when psake displays
-the task name.  The default is "Executing task, {0}..."
-
-.PARAMETER format
-A string containing the format mask to use, it should contain a placeholder ({0})
-that will be used to substitute the task name.
-Required
-
-.EXAMPLE
-A sample build script is shown below:
-
-FormatTaskName "[Task: {0}]"
-
-Task default -depends Test
-
-Task Test -depends Compile, Clean {
-}
-
-Task Compile -depends Clean {
-}
-
-Task Clean {
-}
-
-You should get the following output:
-------------------------------------
-
-[Task: Clean]
-[Task: Compile]
-[Task: Test]
-
-Build Succeeded
-
-----------------------------------------------------------------------
-Build Time Report
-----------------------------------------------------------------------
-Name    Duration
-----    --------
-Clean   00:00:00.0043477
-Compile 00:00:00.0102130
-Test    00:00:00.0182858
-Total:  00:00:00.0698071
-
-.LINK
-Invoke-psake
-Include
-Task
-Properties
-TaskSetup
-TaskTearDown
-Assert
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-  param(
-  [Parameter(Position=0,Mandatory=1)]
-  [string]$format
-  )
-  $script:context.Peek().formatTaskNameString = $format
-}
-
-function TaskSetup
-{
-<#
-.SYNOPSIS
-Adds a scriptblock that will be executed before each task
-
-.DESCRIPTION
-This function will accept a scriptblock that will be executed before each
-task in the build script.
-
-.PARAMETER include
-A scriptblock to execute
-Required
-
-.EXAMPLE
-A sample build script is shown below:
-
-Task default -depends Test
-
-Task Test -depends Compile, Clean {
-}
-
-Task Compile -depends Clean {
-}
-
-Task Clean {
-}
-
-TaskSetup {
-  "Running 'TaskSetup' for task $script:context.Peek().currentTaskName"
-}
-
-You should get the following output:
-------------------------------------
-
-Running 'TaskSetup' for task Clean
-Executing task, Clean...
-Running 'TaskSetup' for task Compile
-Executing task, Compile...
-Running 'TaskSetup' for task Test
-Executing task, Test...
-
-Build Succeeded
-
-----------------------------------------------------------------------
-Build Time Report
-----------------------------------------------------------------------
-Name    Duration
-----    --------
-Clean   00:00:00.0054018
-Compile 00:00:00.0123085
-Test    00:00:00.0236915
-Total:  00:00:00.0739437
-
-.LINK
-Invoke-psake
-Include
-Task
-Properties
-FormatTaskName
-TaskTearDown
-Assert
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-  param(
-  [Parameter(Position=0,Mandatory=1)]
-  [scriptblock]$setup
-  )
-  $script:context.Peek().taskSetupScriptBlock = $setup
-}
-
-function TaskTearDown
-{
-<#
-.SYNOPSIS
-Adds a scriptblock that will be executed after each task
-
-.DESCRIPTION
-This function will accept a scriptblock that will be executed after each
-task in the build script.
-
-.PARAMETER include
-A scriptblock to execute
-Required
-
-.EXAMPLE
-A sample build script is shown below:
-
-Task default -depends Test
-
-Task Test -depends Compile, Clean {
-}
-
-Task Compile -depends Clean {
-}
-
-Task Clean {
-}
-
-TaskTearDown {
-  "Running 'TaskTearDown' for task $script:context.Peek().currentTaskName"
-}
-
-You should get the following output:
-------------------------------------
-
-Executing task, Clean...
-Running 'TaskTearDown' for task Clean
-Executing task, Compile...
-Running 'TaskTearDown' for task Compile
-Executing task, Test...
-Running 'TaskTearDown' for task Test
-
-Build Succeeded
-
-----------------------------------------------------------------------
-Build Time Report
-----------------------------------------------------------------------
-Name    Duration
-----    --------
-Clean   00:00:00.0064555
-Compile 00:00:00.0218902
-Test    00:00:00.0309151
-Total:  00:00:00.0858301
-
-.LINK
-Invoke-psake
-Include
-Task
-Properties
-FormatTaskName
-TaskSetup
-Assert
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-  param(
-  [Parameter(Position=0,Mandatory=1)]
-  [scriptblock]$teardown)
-  $script:context.Peek().taskTearDownScriptBlock = $teardown
-}
-
-function Invoke-psake
-{
-<#
-.SYNOPSIS
-Runs a psake build script.
-
-.DESCRIPTION
-This function runs a psake build script
-
-.PARAMETER BuildFile
-The psake build script to execute (default: default.ps1).
-
-.PARAMETER TaskList
-A comma-separated list of task names to execute
-
-.PARAMETER Framework
-The version of the .NET framework you want to build. You can append x86 or x64 to force a specific framework. If not specified, x86 or x64 will be detected based on the bitness of the PowerShell process.
-Possible values: '1.0', '1.1', '2.0', '2.0x86', '2.0x64', '3.0', '3.0x86', '3.0x64', '3.5', '3.5x86', '3.5x64', '4.0', '4.0x86', '4.0x64'
-Default = '3.5'
-
-.PARAMETER Docs
-Prints a list of tasks and their descriptions
-
-.PARAMETER Parameters
-A hashtable containing parameters to be passed into the current build script.  These parameters will be processed before the 'Properties' function of the script is processed.  This means you can access parameters from within the 'Properties' function!
-
-.PARAMETER Properties
-A hashtable containing properties to be passed into the current build script.  These properties will override matching properties that are found in the 'Properties' function of the script.
-
-.EXAMPLE
-Invoke-psake
-
-Runs the 'default' task in the 'default.ps1' build script in the current directory
-
-.EXAMPLE
-Invoke-psake '.\build.ps1'
-
-Runs the 'default' task in the '.build.ps1' build script
-
-.EXAMPLE
-Invoke-psake '.\build.ps1' Tests,Package
-
-Runs the 'Tests' and 'Package' tasks in the '.build.ps1' build script
-
-.EXAMPLE
-Invoke-psake Tests
-
-If you have your Tasks in the .\default.ps1. This example will run the 'Tests' tasks in the 'default.ps1' build script.
-
-.EXAMPLE
-Invoke-psake 'Tests, Package'
-
-If you have your Tasks in the .\default.ps1. This example will run the 'Tests' and 'Package' tasks in the 'default.ps1' build script.
-NOTE: the quotes around the list of tasks to execute.
-
-.EXAMPLE
-Invoke-psake '.\build.ps1' -docs
-
-Prints a report of all the tasks and their descriptions and exits
-
-.EXAMPLE
-Invoke-psake .\parameters.ps1 -parameters @{"p1"="v1";"p2"="v2"}
-
-Runs the build script called 'parameters.ps1' and passes in parameters 'p1' and 'p2' with values 'v1' and 'v2'
-
-.EXAMPLE
-Invoke-psake .\properties.ps1 -properties @{"x"="1";"y"="2"}
-
-Runs the build script called 'properties.ps1' and passes in parameters 'x' and 'y' with values '1' and '2'
-
-.OUTPUTS
-    If there is an exception and '$psake.use_exit_on_error' -eq $true
-  then runs exit(1) to set the DOS lastexitcode variable
-  otherwise set the '$psake.build_success variable' to $true or $false depending
-  on whether an exception was thrown
-
-.NOTES
-When the psake module is loaded a variabled called $psake is created it is a hashtable
-containing some variables that can be used to configure psake:
-
-$psake.use_exit_on_error = $false   # determines if psake uses the "exit()" function when an exception occurs
-$psake.log_error = $false           # determines if the exception details are written to a file
-$psake.build_success = $false       # indicates that the current build was successful
-$psake.version = "4.00"             # contains the current version of psake
-$psake.build_script_file = $null    # contains a System.IO.FileInfo for the current build file
-$psake.framework_version = ""       # contains the framework version # for the current build
-
-$psake.use_exit_on_error and $psake.log_error are boolean variables that can be set before you call Invoke-Psake.
-
-You should see the following when you display the contents of the $psake variable right after importing psake
-
-PS projects:\psake> Import-Module .\psake.psm1
-PS projects:\psake> $psake
-
-Name                           Value
-----                           -----
-version                        4.00
-build_script_file
-use_exit_on_error              False
-build_success                  False
-log_error                      False
-framework_version
-
-After a build is executed the following $psake values are updated (build_script_file, build_success, and framework_version)
-
-PS projects:\psake> Invoke-psake .\examples\default.ps1
-Executing task: Clean
-Executed Clean!
-Executing task: Compile
-Executed Compile!
-Executing task: Test
-Executed Test!
-
-Build Succeeded!
-
-----------------------------------------------------------------------
-Build Time Report
-----------------------------------------------------------------------
-Name    Duration
-----    --------
-Clean   00:00:00.0798486
-Compile 00:00:00.0869948
-Test    00:00:00.0958225
-Total:  00:00:00.2712414
-
-PS projects:\psake> $psake
-
-Name                           Value
-----                           -----
-version                        4.00
-build_script_file              C:\Users\Jorge\Documents\Projects\psake\examples\default.ps1
-use_exit_on_error              False
-build_success                  True
-log_error                      False
-framework_version              3.5
-
-.LINK
-Task
-Include
-Properties
-FormatTaskName
-TaskSetup
-TaskTearDown
-Assert
-#>
-[CmdletBinding(
-    SupportsShouldProcess=$False,
-    SupportsTransactions=$False,
-    ConfirmImpact="None",
-    DefaultParameterSetName="")]
-
-  param(
-    [Parameter(Position=0,Mandatory=0)]
-    [string]$buildFile = $script:psake.default_build_file_name,
-    [Parameter(Position=1,Mandatory=0)]
-    [string[]]$taskList = @(),
-    [Parameter(Position=2,Mandatory=0)]
-    [string]$framework = '3.5',
-    [Parameter(Position=3,Mandatory=0)]
-    [switch]$docs = $false,
-    [Parameter(Position=4,Mandatory=0)]
-    [System.Collections.Hashtable]$parameters = @{},
-    [Parameter(Position=5, Mandatory=0)]
-    [System.Collections.Hashtable]$properties = @{}
-  )
-
-  Begin
-  {
-    $script:psake.build_success = $false
-    $script:psake.framework_version = $framework
-
-    if ($script:context -eq $null)
-    {
-      $script:context = New-Object System.Collections.Stack
-    }
-
-    $script:context.push(@{
-                           "formatTaskNameString" = "Executing task: {0}";
-                           "taskSetupScriptBlock" = $null;
-                           "taskTearDownScriptBlock" = $null;
-                           "executedTasks" = New-Object System.Collections.Stack;
-                           "callStack" = New-Object System.Collections.Stack;
-                           "originalEnvPath" = $env:path;
-                           "originalDirectory" = Get-Location;
-                           "originalErrorActionPreference" = $global:ErrorActionPreference;
-                           "tasks" = @{};
-                           "properties" = @();
-                           "includes" = New-Object System.Collections.Queue;
-    })
-  }
-
-  Process
-  {
-    try
-    {
-    $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
-
-    <#
-      If the default.ps1 file exists and the given "buildfile" isn't found assume that the given 
-      $buildFile is actually the target Tasks to execute in the default.ps1 script.
-    #>
-    if((Test-Path $script:psake.default_build_file_name ) -and !(test-path $buildFile)) {
-      $list = New-Object System.Collections.ArrayList
-      foreach($t in $buildFile.Split(',')) {
-        $t1 = $t.Trim()
-        if($t1 -ne $null -or $t1 -ne "") {
-          $list.Add($t1)
-        }
-      }
-      $taskList = $list.ToArray()
-      $buildFile = $script:psake.default_build_file_name
-    }
-
-    # Execute the build file to set up the tasks and defaults
-    Assert (test-path $buildFile) "Error: Could not find the build file, $buildFile."
-
-    $script:psake.build_script_file = dir $buildFile
-    set-location $script:psake.build_script_file.Directory
-    . $script:psake.build_script_file.FullName
-
-    if ($docs)
-    {
-    Write-Documentation
-    Cleanup-Environment
-    return
-    }
-
-    Configure-BuildEnvironment
-
-    # N.B. The initial dot (.) indicates that variables initialized/modified
-    #      in the propertyBlock are available in the parent scope.
-    while ($script:context.Peek().includes.Count -gt 0)
-    {
-      $includeBlock = $script:context.Peek().includes.Dequeue()
-      . $includeBlock
-    }
-
-    foreach($key in $parameters.keys)
-    {
-      if (test-path "variable:\$key")
-      {
-        set-item -path "variable:\$key" -value $parameters.$key | out-null
-      }
-      else
-      {
-        new-item -path "variable:\$key" -value $parameters.$key | out-null
-      }
-    }
-
-    foreach($propertyBlock in $script:context.Peek().properties)
-    {
-      . $propertyBlock
-    }
-
-    foreach($key in $properties.keys)
-    {
-      if (test-path "variable:\$key")
-      {
-        set-item -path "variable:\$key" -value $properties.$key | out-null
-      }
-    }
-
-    # Execute the list of tasks or the default task
-    if($taskList.Length -ne 0)
-    {
-      foreach($task in $taskList)
-      {
-        ExecuteTask $task
-      }
-    }
-    elseif ($script:context.Peek().tasks.default -ne $null)
-    {
-      ExecuteTask default
-    }
-    else
-    {
-      throw 'Error: default task required'
-    }
-
-    $stopwatch.Stop()
-
-    "`nBuild Succeeded!`n"
-
-    Write-TaskTimeSummary
-
-    $script:psake.build_success = $true
-    }
-    catch
-    {
-    #Append detailed exception and script variables to error log file
-    if ($script:psake.log_error)
-    {
-      $errorLogFile = "psake-error-log-{0}.log" -f ([DateTime]::Now.ToString("yyyyMMdd"))
-      "-" * 70 >> $errorLogFile
-      "{0}: An Error Occurred. See Error Details Below: " -f [DateTime]::Now >>$errorLogFile
-      "-" * 70 >> $errorLogFile
-      Resolve-Error $_ >> $errorLogFile
-      "-" * 70 >> $errorLogFile
-      "Script Variables" >> $errorLogFile
-      "-" * 70 >> $errorLogFile
-      Get-Variable -scope script >> $errorLogFile
-    }
-
-    $buildFileName = Split-Path $buildFile -leaf
-    if (test-path $buildFile) { $buildFileName = $script:psake.build_script_file.Name }
-    Write-Host -foregroundcolor Red ($buildFileName + ":" + $_)
-
-    if ($script:psake.use_exit_on_error)
-    {
-      exit(1)
-    }
-    else
-    {
-      $script:psake.build_success = $false
-    }
-    }
-  } #Process
-
-  End
-  {
-  # Clear out any global variables
-  Cleanup-Environment
-  [void]$script:context.Pop()
-  }
-}
-
+# psake
+# Copyright (c) 2010 James Kovacs
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+#Requires -Version 2.0
+
+#-- Private Module Variables (Listed here for quick reference)
+[system.collections.stack]$script:context
+
+#-- Public Module Variables -- The psake hashtable variable is initialized in the invoke-psake function
+$script:psake = @{}
+$script:psake.use_exit_on_error = $false    # determines if psake uses the "exit()" function when an exception occurs
+$script:psake.log_error = $false            # determines if the exception details are written to a file
+$script:psake.build_success = $false        # indicates that the current build was successful
+$script:psake.version = "4.00"              # contains the current version of psake
+$script:psake.build_script_file = $null     # contains a System.IO.FileInfo for the current build file
+$script:psake.framework_version = ""        # contains the framework version # for the current build
+$script:psake.default_build_file_name = 'default.ps1'
+
+Export-ModuleMember -Variable "psake"
+
+#-- Private Module Functions
+function ExecuteTask
+{
+  param([string]$taskName)
+
+  Assert (![string]::IsNullOrEmpty($taskName)) "Task name should not be null or empty string"
+
+  $taskKey = $taskName.ToLower()
+
+    Assert ($script:context.Peek().tasks.Contains($taskKey)) "task [$taskName] does not exist"
+
+    if ($script:context.Peek().executedTasks.Contains($taskKey))
+  {
+    return
+  }
+
+  Assert (!$script:context.Peek().callStack.Contains($taskKey)) "Error: Circular reference found for task, $taskName"
+
+  $script:context.Peek().callStack.Push($taskKey)
+
+  $task = $script:context.Peek().tasks.$taskKey
+
+  $taskName = $task.Name
+
+  $precondition_is_valid = if ($task.Precondition -ne $null) {& $task.Precondition} else {$true}
+
+  if (!$precondition_is_valid)
+  {
+    "Precondition was false not executing $name"
+  }
+  else
+  {
+    if ($taskKey -ne 'default')
+    {
+      $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
+
+      if ( ($task.PreAction -ne $null) -or ($task.PostAction -ne $null) )
+      {
+        Assert ($task.Action -ne $null) "Error: Action parameter must be specified when using PreAction or PostAction parameters"
+      }
+
+      if ($task.Action -ne $null)
+      {
+        try
+        {
+          foreach($childTask in $task.DependsOn)
+          {
+            ExecuteTask $childTask
+          }
+
+          $script:context.Peek().currentTaskName = $taskName
+
+          if ($script:context.Peek().taskSetupScriptBlock -ne $null)
+          {
+            & $script:context.Peek().taskSetupScriptBlock
+          }
+
+          if ($task.PreAction -ne $null)
+          {
+            & $task.PreAction
+          }
+
+          $script:context.Peek().formatTaskNameString -f $taskName
+          & $task.Action
+
+          if ($task.PostAction -ne $null)
+          {
+            & $task.PostAction
+          }
+
+          if ($script:context.Peek().taskTearDownScriptBlock -ne $null)
+          {
+            & $script:context.Peek().taskTearDownScriptBlock
+          }
+        }
+        catch
+        {
+          if ($task.ContinueOnError)
+          {
+            "-"*70
+            "Error in Task [$taskName] $_"
+            "-"*70
+          }
+          else
+          {
+            throw $_
+          }
+        }
+      } # if ($task.Action -ne $null)
+      else
+      {
+        #no Action was specified but we still execute all the dependencies
+        foreach($childTask in $task.DependsOn)
+        {
+          ExecuteTask $childTask
+        }
+      }
+      $stopwatch.stop()
+      $task.Duration = $stopwatch.Elapsed
+    } # if ($name.ToLower() -ne 'default')
+    else
+    {
+      foreach($childTask in $task.DependsOn)
+      {
+        ExecuteTask $childTask
+      }
+    }
+
+    if ($task.Postcondition -ne $null)
+    {
+      Assert (& $task.Postcondition) "Error: Postcondition failed for $taskName"
+    }
+  }
+
+  $poppedTaskKey = $script:context.Peek().callStack.Pop()
+
+  Assert ($poppedTaskKey -eq $taskKey) "Error: CallStack was corrupt. Expected $taskKey, but got $poppedTaskKey."
+
+  $script:context.Peek().executedTasks.Push($taskKey)
+}
+
+function Configure-BuildEnvironment
+{
+  if ($framework.Length -ne 3 -and $framework.Length -ne 6) {
+    throw "Error: Invalid .NET Framework version, $framework, specified"
+  }
+  $versionPart = $framework.Substring(0,3)
+  $bitnessPart = $framework.Substring(3)
+  $versions = $null
+  switch ($versionPart)
+  {
+    '1.0' { $versions = @('v1.0.3705')  }
+    '1.1' { $versions = @('v1.1.4322')  }
+    '2.0' { $versions = @('v2.0.50727') }
+    '3.0' { $versions = @('v2.0.50727') }
+    '3.5' { $versions = @('v3.5','v2.0.50727') }
+    '4.0' { $versions = @('v4.0.30319') }
+    default { throw "Error: Unknown .NET Framework version, $versionPart, specified in $framework" }
+  }
+
+  $bitness = 'Framework'
+  if($versionPart -ne '1.0' -and $versionPart -ne '1.1') {
+    switch ($bitnessPart)
+    {
+      'x86' { $bitness = 'Framework' }
+      'x64' { $bitness = 'Framework64' }
+      $null {
+        $ptrSize = [System.IntPtr]::Size
+        switch ($ptrSize)
+        {
+          4 { $bitness = 'Framework' }
+          8 { $bitness = 'Framework64' }
+          default { throw "Error: Unknown pointer size ($ptrSize) returned from System.IntPtr." }
+        }
+      }
+      default { throw "Error: Unknown .NET Framework bitness, $bitnessPart, specified in $framework" }
+    }
+  }
+  $frameworkDirs = $versions | foreach { "$env:windir\Microsoft.NET\$bitness\$_\" }
+
+  $frameworkDirs | foreach { Assert (test-path $_) "Error: No .NET Framework installation directory found at $_" }
+
+  $env:path = [string]::Join(';', $frameworkDirs) + ";$env:path"
+  #if any error occurs in a PS function then "stop" processing immediately
+  # this does not effect any external programs that return a non-zero exit code
+  $global:ErrorActionPreference = "Stop"
+}
+
+function Cleanup-Environment
+{
+  $env:path = $script:context.Peek().originalEnvPath
+  Set-Location $script:context.Peek().originalDirectory
+  $global:ErrorActionPreference = $script:context.Peek().originalErrorActionPreference
+}
+
+#borrowed from Jeffrey Snover http://blogs.msdn.com/powershell/archive/2006/12/07/resolve-error.aspx
+function Resolve-Error($ErrorRecord=$Error[0])
+{
+  "ErrorRecord"
+  $ErrorRecord | Format-List * -Force | Out-String -Stream | ? {$_}
+  ""
+  "ErrorRecord.InvocationInfo"
+  $ErrorRecord.InvocationInfo | Format-List * | Out-String -Stream | ? {$_}
+  ""
+  "Exception"
+  $Exception = $ErrorRecord.Exception
+  for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException))
+  {
+    "$i" * 70
+    $Exception | Format-List * -Force | Out-String -Stream | ? {$_}
+    ""
+  }
+}
+
+function Write-Documentation
+{
+  $list = New-Object System.Collections.ArrayList
+  foreach($key in $script:context.Peek().tasks.Keys)
+  {
+    if($key -eq "default")
+    {
+      continue
+    }
+    $task = $script:context.Peek().tasks.$key
+    $content = "" | Select-Object Name, Description
+    $content.Name = $task.Name
+    $content.Description = $task.Description
+    $index = $list.Add($content)
+  }
+
+  $list | Sort 'Name' | Format-Table -Auto
+}
+
+function Write-TaskTimeSummary
+{
+  "-"*70
+  "Build Time Report"
+  "-"*70
+  $list = @()
+  while ($script:context.Peek().executedTasks.Count -gt 0)
+  {
+    $taskKey = $script:context.Peek().executedTasks.Pop()
+    $task = $script:context.Peek().tasks.$taskKey
+    if($taskKey -eq "default")
+    {
+      continue
+    }
+    $list += "" | Select-Object @{Name="Name";Expression={$task.Name}}, @{Name="Duration";Expression={$task.Duration}}
+  }
+  [Array]::Reverse($list)
+  $list += "" | Select-Object @{Name="Name";Expression={"Total:"}}, @{Name="Duration";Expression={$stopwatch.Elapsed}}
+  $list | Format-Table -Auto | Out-String -Stream | ? {$_}  # using "Out-String -Stream" to filter out the blank line that Format-Table prepends
+}
+
+#-- Public Module Functions
+function Exec
+{
+<#
+.SYNOPSIS
+Helper function for executing command-line programs.
+
+.DESCRIPTION
+This is a helper function that runs a scriptblock and checks the PS variable $lastexitcode to see if an error occcured.
+If an error is detected then an exception is thrown.  This function allows you to run command-line programs without
+having to explicitly check fthe $lastexitcode variable.
+
+.PARAMETER cmd
+The scriptblock to execute.  This scriptblock will typically contain the command-line invocation.
+Required
+
+.PARAMETER errorMessage
+The error message used for the exception that is thrown.
+Optional
+
+.EXAMPLE
+exec { svn info $repository_trunk } "Error executing SVN. Please verify SVN command-line client is installed"
+
+This example calls the svn command-line client.
+
+.LINK
+Assert
+Invoke-psake
+Task
+Properties
+Include
+FormatTaskName
+TaskSetup
+TaskTearDown
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+
+  param(
+      [Parameter(Position=0,Mandatory=1)][scriptblock]$cmd,
+    [Parameter(Position=1,Mandatory=0)][string]$errorMessage = "Error executing command: " + $cmd
+  )
+     & $cmd
+     if ($lastexitcode -ne 0)
+     {
+          throw $errorMessage
+     }
+}
+
+function Assert
+{
+<#
+.SYNOPSIS
+Helper function for "Design by Contract" assertion checking.
+
+.DESCRIPTION
+This is a helper function that makes the code less noisy by eliminating many of the "if" statements
+that are normally required to verify assumptions in the code.
+
+.PARAMETER conditionToCheck
+The boolean condition to evaluate
+Required
+
+.PARAMETER failureMessage
+The error message used for the exception if the conditionToCheck parameter is false
+Required
+
+.EXAMPLE
+Assert $false "This always throws an exception"
+
+This example always throws an exception
+
+.EXAMPLE
+Assert ( ($i % 2) -eq 0 ) "%i is not an even number"
+
+This exmaple may throw an exception if $i is not an even number
+
+.LINK
+Invoke-psake
+Task
+Properties
+Include
+FormatTaskName
+TaskSetup
+TaskTearDown
+
+.NOTES
+It might be necessary to wrap the condition with paranthesis to force PS to evaluate the condition
+so that a boolean value is calculated and passed into the 'conditionToCheck' parameter.
+
+Example:
+    Assert 1 -eq 2 "1 doesn't equal 2"
+
+PS will pass 1 into the condtionToCheck variable and PS will look for a parameter called "eq" and
+throw an exception with the following message "A parameter cannot be found that matches parameter name 'eq'"
+
+The solution is to wrap the condition in () so that PS will evaluate it first.
+
+    Assert (1 -eq 2) "1 doesn't equal 2"
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+
+  param(
+    [Parameter(Position=0,Mandatory=1)]$conditionToCheck,
+    [Parameter(Position=1,Mandatory=1)]$failureMessage
+  )
+  if (!$conditionToCheck) { throw $failureMessage }
+}
+
+function Task
+{
+<#
+.SYNOPSIS
+Defines a build task to be executed by psake
+
+.DESCRIPTION
+This function creates a 'task' object that will be used by the psake engine to execute a build task.
+Note: There must be at least one task called 'default' in the build script
+
+.PARAMETER Name
+The name of the task
+Required
+
+.PARAMETER Action
+A scriptblock containing the statements to execute
+Optional
+
+.PARAMETER PreAction
+A scriptblock to be executed before the 'Action' scriptblock.
+Note: This parameter is ignored if the 'Action' scriptblock is not defined.
+Optional
+
+.PARAMETER PostAction
+A scriptblock to be executed after the 'Action' scriptblock.
+Note: This parameter is ignored if the 'Action' scriptblock is not defined.
+Optional
+
+.PARAMETER Precondition
+A scriptblock that is executed to determine if the task is executed or skipped.
+This scriptblock should return $true or $false
+Optional
+
+.PARAMETER Postcondition
+A scriptblock that is executed to determine if the task completed its job correctly.
+An exception is thrown if the scriptblock returns $false.
+Optional
+
+.PARAMETER ContinueOnError
+If this switch parameter is set then the task will not cause the build to fail when an exception is thrown
+
+.PARAMETER Depends
+An array of tasks that this task depends on.  They will be executed before the current task is executed.
+
+.PARAMETER Description
+A description of the task.
+
+.EXAMPLE
+A sample build script is shown below:
+
+task default -depends Test
+
+task Test -depends Compile, Clean {
+  "This is a test"
+}
+
+task Compile -depends Clean {
+  "Compile"
+}
+
+task Clean {
+  "Clean"
+}
+
+The 'default' task is required and should not contain an 'Action' parameter.
+It uses the 'depends' parameter to specify that 'Test' is a dependency
+
+The 'Test' task uses the 'depends' parameter to specify that 'Compile' and 'Clean' are dependencies
+The 'Compile' task depends on the 'Clean' task.
+
+Note:
+The 'Action' parameter is defaulted to the script block following the 'Clean' task.
+
+The equivalent 'Test' task is shown below:
+
+task Test -depends Compile, Clean -Action {
+  $testMessage
+}
+
+The output for the above sample build script is shown below:
+Executing task, Clean...
+Clean
+Executing task, Compile...
+Compile
+Executing task, Test...
+This is a test
+
+Build Succeeded!
+
+----------------------------------------------------------------------
+Build Time Report
+----------------------------------------------------------------------
+Name    Duration
+----    --------
+Clean   00:00:00.0065614
+Compile 00:00:00.0133268
+Test    00:00:00.0225964
+Total:  00:00:00.0782496
+
+.LINK
+Invoke-psake
+Properties
+Include
+FormatTaskName
+TaskSetup
+TaskTearDown
+Assert
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+  param(
+    [Parameter(Position=0,Mandatory=1)]
+    [string]$name = $null,
+    [Parameter(Position=1,Mandatory=0)]
+    [scriptblock]$action = $null,
+    [Parameter(Position=2,Mandatory=0)]
+    [scriptblock]$preaction = $null,
+    [Parameter(Position=3,Mandatory=0)]
+    [scriptblock]$postaction = $null,
+    [Parameter(Position=4,Mandatory=0)]
+    [scriptblock]$precondition = $null,
+    [Parameter(Position=5,Mandatory=0)]
+    [scriptblock]$postcondition = $null,
+    [Parameter(Position=6,Mandatory=0)]
+    [switch]$continueOnError = $false,
+    [Parameter(Position=7,Mandatory=0)]
+    [string[]]$depends = @(),
+    [Parameter(Position=8,Mandatory=0)]
+    [string]$description = $null
+    )
+
+  if ($name.ToLower() -eq 'default')
+  {
+    Assert ($action -eq $null) "Error: 'default' task cannot specify an action"
+  }
+
+  $newTask = @{
+    Name = $name
+    DependsOn = $depends
+    PreAction = $preaction
+    Action = $action
+    PostAction = $postaction
+    Precondition = $precondition
+    Postcondition = $postcondition
+    ContinueOnError = $continueOnError
+    Description = $description
+    Duration = 0
+  }
+
+  $taskKey = $name.ToLower()
+
+  Assert (!$script:context.Peek().tasks.ContainsKey($taskKey)) "Error: Task, $name, has already been defined."
+
+  $script:context.Peek().tasks.$taskKey = $newTask
+}
+
+function Properties
+{
+<#
+.SYNOPSIS
+Define a scriptblock that contains assignments to variables that will be available to all tasks in the build script
+
+.DESCRIPTION
+A build script may declare a "Properies" function which allows you to define
+variables that will be available to all the "Task" functions in the build script.
+
+.PARAMETER properties
+The script block containing all the variable assignment statements
+Required
+
+.EXAMPLE
+A sample build script is shown below:
+
+Properties {
+  $build_dir = "c:\build"
+  $connection_string = "datasource=localhost;initial catalog=northwind;integrated security=sspi"
+}
+
+Task default -depends Test
+
+Task Test -depends Compile, Clean {
+}
+
+Task Compile -depends Clean {
+}
+
+Task Clean {
+}
+
+.LINK
+Invoke-psake
+Task
+Include
+FormatTaskName
+TaskSetup
+TaskTearDown
+Assert
+
+.NOTES
+You can have more than 1 "Properties" function defined in the script
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+  param(
+  [Parameter(Position=0,Mandatory=1)]
+  [scriptblock]$properties
+  )
+  $script:context.Peek().properties += $properties
+}
+
+function Include
+{
+<#
+.SYNOPSIS
+Include the functions or code of another powershell script file into the current build script's scope
+
+.DESCRIPTION
+A build script may declare an "includes" function which allows you to define
+a file containing powershell code to be included and added to the scope of
+the currently running build script.
+
+.PARAMETER fileNamePathToInclude
+A string containing the path and name of the powershell file to include
+Required
+
+.EXAMPLE
+A sample build script is shown below:
+
+Include ".\build_utils.ps1"
+
+Task default -depends Test
+
+Task Test -depends Compile, Clean {
+}
+
+Task Compile -depends Clean {
+}
+
+Task Clean {
+}
+
+
+.LINK
+Invoke-psake
+Task
+Properties
+FormatTaskName
+TaskSetup
+TaskTearDown
+Assert
+
+.NOTES
+You can have more than 1 "Include" function defined in the script
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+  param(
+  [Parameter(Position=0,Mandatory=1)]
+  [string]$fileNamePathToInclude
+  )
+  Assert (test-path $fileNamePathToInclude) "Error: Unable to include $fileNamePathToInclude. File not found."
+  $script:context.Peek().includes.Enqueue((Resolve-Path $fileNamePathToInclude));
+}
+
+function FormatTaskName
+{
+<#
+.SYNOPSIS
+Allows you to define a format mask that will be used when psake displays
+the task name
+
+.DESCRIPTION
+Allows you to define a format mask that will be used when psake displays
+the task name.  The default is "Executing task, {0}..."
+
+.PARAMETER format
+A string containing the format mask to use, it should contain a placeholder ({0})
+that will be used to substitute the task name.
+Required
+
+.EXAMPLE
+A sample build script is shown below:
+
+FormatTaskName "[Task: {0}]"
+
+Task default -depends Test
+
+Task Test -depends Compile, Clean {
+}
+
+Task Compile -depends Clean {
+}
+
+Task Clean {
+}
+
+You should get the following output:
+------------------------------------
+
+[Task: Clean]
+[Task: Compile]
+[Task: Test]
+
+Build Succeeded
+
+----------------------------------------------------------------------
+Build Time Report
+----------------------------------------------------------------------
+Name    Duration
+----    --------
+Clean   00:00:00.0043477
+Compile 00:00:00.0102130
+Test    00:00:00.0182858
+Total:  00:00:00.0698071
+
+.LINK
+Invoke-psake
+Include
+Task
+Properties
+TaskSetup
+TaskTearDown
+Assert
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+  param(
+  [Parameter(Position=0,Mandatory=1)]
+  [string]$format
+  )
+  $script:context.Peek().formatTaskNameString = $format
+}
+
+function TaskSetup
+{
+<#
+.SYNOPSIS
+Adds a scriptblock that will be executed before each task
+
+.DESCRIPTION
+This function will accept a scriptblock that will be executed before each
+task in the build script.
+
+.PARAMETER include
+A scriptblock to execute
+Required
+
+.EXAMPLE
+A sample build script is shown below:
+
+Task default -depends Test
+
+Task Test -depends Compile, Clean {
+}
+
+Task Compile -depends Clean {
+}
+
+Task Clean {
+}
+
+TaskSetup {
+  "Running 'TaskSetup' for task $script:context.Peek().currentTaskName"
+}
+
+You should get the following output:
+------------------------------------
+
+Running 'TaskSetup' for task Clean
+Executing task, Clean...
+Running 'TaskSetup' for task Compile
+Executing task, Compile...
+Running 'TaskSetup' for task Test
+Executing task, Test...
+
+Build Succeeded
+
+----------------------------------------------------------------------
+Build Time Report
+----------------------------------------------------------------------
+Name    Duration
+----    --------
+Clean   00:00:00.0054018
+Compile 00:00:00.0123085
+Test    00:00:00.0236915
+Total:  00:00:00.0739437
+
+.LINK
+Invoke-psake
+Include
+Task
+Properties
+FormatTaskName
+TaskTearDown
+Assert
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+  param(
+  [Parameter(Position=0,Mandatory=1)]
+  [scriptblock]$setup
+  )
+  $script:context.Peek().taskSetupScriptBlock = $setup
+}
+
+function TaskTearDown
+{
+<#
+.SYNOPSIS
+Adds a scriptblock that will be executed after each task
+
+.DESCRIPTION
+This function will accept a scriptblock that will be executed after each
+task in the build script.
+
+.PARAMETER include
+A scriptblock to execute
+Required
+
+.EXAMPLE
+A sample build script is shown below:
+
+Task default -depends Test
+
+Task Test -depends Compile, Clean {
+}
+
+Task Compile -depends Clean {
+}
+
+Task Clean {
+}
+
+TaskTearDown {
+  "Running 'TaskTearDown' for task $script:context.Peek().currentTaskName"
+}
+
+You should get the following output:
+------------------------------------
+
+Executing task, Clean...
+Running 'TaskTearDown' for task Clean
+Executing task, Compile...
+Running 'TaskTearDown' for task Compile
+Executing task, Test...
+Running 'TaskTearDown' for task Test
+
+Build Succeeded
+
+----------------------------------------------------------------------
+Build Time Report
+----------------------------------------------------------------------
+Name    Duration
+----    --------
+Clean   00:00:00.0064555
+Compile 00:00:00.0218902
+Test    00:00:00.0309151
+Total:  00:00:00.0858301
+
+.LINK
+Invoke-psake
+Include
+Task
+Properties
+FormatTaskName
+TaskSetup
+Assert
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+  param(
+  [Parameter(Position=0,Mandatory=1)]
+  [scriptblock]$teardown)
+  $script:context.Peek().taskTearDownScriptBlock = $teardown
+}
+
+function Invoke-psake
+{
+<#
+.SYNOPSIS
+Runs a psake build script.
+
+.DESCRIPTION
+This function runs a psake build script
+
+.PARAMETER BuildFile
+The psake build script to execute (default: default.ps1).
+
+.PARAMETER TaskList
+A comma-separated list of task names to execute
+
+.PARAMETER Framework
+The version of the .NET framework you want to build. You can append x86 or x64 to force a specific framework. If not specified, x86 or x64 will be detected based on the bitness of the PowerShell process.
+Possible values: '1.0', '1.1', '2.0', '2.0x86', '2.0x64', '3.0', '3.0x86', '3.0x64', '3.5', '3.5x86', '3.5x64', '4.0', '4.0x86', '4.0x64'
+Default = '3.5'
+
+.PARAMETER Docs
+Prints a list of tasks and their descriptions
+
+.PARAMETER Parameters
+A hashtable containing parameters to be passed into the current build script.  These parameters will be processed before the 'Properties' function of the script is processed.  This means you can access parameters from within the 'Properties' function!
+
+.PARAMETER Properties
+A hashtable containing properties to be passed into the current build script.  These properties will override matching properties that are found in the 'Properties' function of the script.
+
+.EXAMPLE
+Invoke-psake
+
+Runs the 'default' task in the 'default.ps1' build script in the current directory
+
+.EXAMPLE
+Invoke-psake '.\build.ps1'
+
+Runs the 'default' task in the '.build.ps1' build script
+
+.EXAMPLE
+Invoke-psake '.\build.ps1' Tests,Package
+
+Runs the 'Tests' and 'Package' tasks in the '.build.ps1' build script
+
+.EXAMPLE
+Invoke-psake Tests
+
+If you have your Tasks in the .\default.ps1. This example will run the 'Tests' tasks in the 'default.ps1' build script.
+
+.EXAMPLE
+Invoke-psake 'Tests, Package'
+
+If you have your Tasks in the .\default.ps1. This example will run the 'Tests' and 'Package' tasks in the 'default.ps1' build script.
+NOTE: the quotes around the list of tasks to execute.
+
+.EXAMPLE
+Invoke-psake '.\build.ps1' -docs
+
+Prints a report of all the tasks and their descriptions and exits
+
+.EXAMPLE
+Invoke-psake .\parameters.ps1 -parameters @{"p1"="v1";"p2"="v2"}
+
+Runs the build script called 'parameters.ps1' and passes in parameters 'p1' and 'p2' with values 'v1' and 'v2'
+
+.EXAMPLE
+Invoke-psake .\properties.ps1 -properties @{"x"="1";"y"="2"}
+
+Runs the build script called 'properties.ps1' and passes in parameters 'x' and 'y' with values '1' and '2'
+
+.OUTPUTS
+    If there is an exception and '$psake.use_exit_on_error' -eq $true
+  then runs exit(1) to set the DOS lastexitcode variable
+  otherwise set the '$psake.build_success variable' to $true or $false depending
+  on whether an exception was thrown
+
+.NOTES
+When the psake module is loaded a variabled called $psake is created it is a hashtable
+containing some variables that can be used to configure psake:
+
+$psake.use_exit_on_error = $false   # determines if psake uses the "exit()" function when an exception occurs
+$psake.log_error = $false           # determines if the exception details are written to a file
+$psake.build_success = $false       # indicates that the current build was successful
+$psake.version = "4.00"             # contains the current version of psake
+$psake.build_script_file = $null    # contains a System.IO.FileInfo for the current build file
+$psake.framework_version = ""       # contains the framework version # for the current build
+
+$psake.use_exit_on_error and $psake.log_error are boolean variables that can be set before you call Invoke-Psake.
+
+You should see the following when you display the contents of the $psake variable right after importing psake
+
+PS projects:\psake> Import-Module .\psake.psm1
+PS projects:\psake> $psake
+
+Name                           Value
+----                           -----
+version                        4.00
+build_script_file
+use_exit_on_error              False
+build_success                  False
+log_error                      False
+framework_version
+
+After a build is executed the following $psake values are updated (build_script_file, build_success, and framework_version)
+
+PS projects:\psake> Invoke-psake .\examples\default.ps1
+Executing task: Clean
+Executed Clean!
+Executing task: Compile
+Executed Compile!
+Executing task: Test
+Executed Test!
+
+Build Succeeded!
+
+----------------------------------------------------------------------
+Build Time Report
+----------------------------------------------------------------------
+Name    Duration
+----    --------
+Clean   00:00:00.0798486
+Compile 00:00:00.0869948
+Test    00:00:00.0958225
+Total:  00:00:00.2712414
+
+PS projects:\psake> $psake
+
+Name                           Value
+----                           -----
+version                        4.00
+build_script_file              C:\Users\Jorge\Documents\Projects\psake\examples\default.ps1
+use_exit_on_error              False
+build_success                  True
+log_error                      False
+framework_version              3.5
+
+.LINK
+Task
+Include
+Properties
+FormatTaskName
+TaskSetup
+TaskTearDown
+Assert
+#>
+[CmdletBinding(
+    SupportsShouldProcess=$False,
+    SupportsTransactions=$False,
+    ConfirmImpact="None",
+    DefaultParameterSetName="")]
+
+  param(
+    [Parameter(Position=0,Mandatory=0)]
+    [string]$buildFile = $script:psake.default_build_file_name,
+    [Parameter(Position=1,Mandatory=0)]
+    [string[]]$taskList = @(),
+    [Parameter(Position=2,Mandatory=0)]
+    [string]$framework = '3.5',
+    [Parameter(Position=3,Mandatory=0)]
+    [switch]$docs = $false,
+    [Parameter(Position=4,Mandatory=0)]
+    [System.Collections.Hashtable]$parameters = @{},
+    [Parameter(Position=5, Mandatory=0)]
+    [System.Collections.Hashtable]$properties = @{}
+  )
+
+  Begin
+  {
+    $script:psake.build_success = $false
+    $script:psake.framework_version = $framework
+
+    if ($script:context -eq $null)
+    {
+      $script:context = New-Object System.Collections.Stack
+    }
+
+    $script:context.push(@{
+                           "formatTaskNameString" = "Executing task: {0}";
+                           "taskSetupScriptBlock" = $null;
+                           "taskTearDownScriptBlock" = $null;
+                           "executedTasks" = New-Object System.Collections.Stack;
+                           "callStack" = New-Object System.Collections.Stack;
+                           "originalEnvPath" = $env:path;
+                           "originalDirectory" = Get-Location;
+                           "originalErrorActionPreference" = $global:ErrorActionPreference;
+                           "tasks" = @{};
+                           "properties" = @();
+                           "includes" = New-Object System.Collections.Queue;
+    })
+  }
+
+  Process
+  {
+    try
+    {
+    $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
+
+    <#
+      If the default.ps1 file exists and the given "buildfile" isn't found assume that the given 
+      $buildFile is actually the target Tasks to execute in the default.ps1 script.
+    #>
+    if((Test-Path $script:psake.default_build_file_name ) -and !(test-path $buildFile)) {
+      $list = New-Object System.Collections.ArrayList
+      foreach($t in $buildFile.Split(',')) {
+        $t1 = $t.Trim()
+        if($t1 -ne $null -or $t1 -ne "") {
+          $list.Add($t1)
+        }
+      }
+      $taskList = $list.ToArray()
+      $buildFile = $script:psake.default_build_file_name
+    }
+
+    # Execute the build file to set up the tasks and defaults
+    Assert (test-path $buildFile) "Error: Could not find the build file, $buildFile."
+
+    $script:psake.build_script_file = dir $buildFile
+    set-location $script:psake.build_script_file.Directory
+    . $script:psake.build_script_file.FullName
+
+    if ($docs)
+    {
+    Write-Documentation
+    Cleanup-Environment
+    return
+    }
+
+    Configure-BuildEnvironment
+
+    # N.B. The initial dot (.) indicates that variables initialized/modified
+    #      in the propertyBlock are available in the parent scope.
+    while ($script:context.Peek().includes.Count -gt 0)
+    {
+      $includeBlock = $script:context.Peek().includes.Dequeue()
+      . $includeBlock
+    }
+
+    foreach($key in $parameters.keys)
+    {
+      if (test-path "variable:\$key")
+      {
+        set-item -path "variable:\$key" -value $parameters.$key | out-null
+      }
+      else
+      {
+        new-item -path "variable:\$key" -value $parameters.$key | out-null
+      }
+    }
+
+    foreach($propertyBlock in $script:context.Peek().properties)
+    {
+      . $propertyBlock
+    }
+
+    foreach($key in $properties.keys)
+    {
+      if (test-path "variable:\$key")
+      {
+        set-item -path "variable:\$key" -value $properties.$key | out-null
+      }
+    }
+
+    # Execute the list of tasks or the default task
+    if($taskList.Length -ne 0)
+    {
+      foreach($task in $taskList)
+      {
+        ExecuteTask $task
+      }
+    }
+    elseif ($script:context.Peek().tasks.default -ne $null)
+    {
+      ExecuteTask default
+    }
+    else
+    {
+      throw 'Error: default task required'
+    }
+
+    $stopwatch.Stop()
+
+    "`nBuild Succeeded!`n"
+
+    Write-TaskTimeSummary
+
+    $script:psake.build_success = $true
+    }
+    catch
+    {
+    #Append detailed exception and script variables to error log file
+    if ($script:psake.log_error)
+    {
+      $errorLogFile = "psake-error-log-{0}.log" -f ([DateTime]::Now.ToString("yyyyMMdd"))
+      "-" * 70 >> $errorLogFile
+      "{0}: An Error Occurred. See Error Details Below: " -f [DateTime]::Now >>$errorLogFile
+      "-" * 70 >> $errorLogFile
+      Resolve-Error $_ >> $errorLogFile
+      "-" * 70 >> $errorLogFile
+      "Script Variables" >> $errorLogFile
+      "-" * 70 >> $errorLogFile
+      Get-Variable -scope script >> $errorLogFile
+    }
+
+    $buildFileName = Split-Path $buildFile -leaf
+    if (test-path $buildFile) { $buildFileName = $script:psake.build_script_file.Name }
+    Write-Host -foregroundcolor Red ($buildFileName + ":" + $_)
+
+    if ($script:psake.use_exit_on_error)
+    {
+      exit(1)
+    }
+    else
+    {
+      $script:psake.build_success = $false
+    }
+    }
+  } #Process
+
+  End
+  {
+  # Clear out any global variables
+  Cleanup-Environment
+  [void]$script:context.Pop()
+  }
+}
+
 Export-ModuleMember -Function "Invoke-psake","Task","Properties","Include","FormatTaskName","TaskSetup","TaskTearDown","Assert","Exec"
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/external/cecil/Test/Resources/assemblies/text_file.txt
+++ mono-4.6.2.7+dfsg/external/cecil/Test/Resources/assemblies/text_file.txt
@@ -1 +1 @@
-Cecil ftw!
+Cecil ftw!
--- mono-4.6.2.7+dfsg.orig/external/cecil/Test/libs/nunit-2.6.2/license.txt
+++ mono-4.6.2.7+dfsg/external/cecil/Test/libs/nunit-2.6.2/license.txt
@@ -1,15 +1,15 @@
-Copyright  2002-2012 Charlie Poole
-Copyright  2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov
-Copyright  2000-2002 Philip A. Craig
-
-This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-
-1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required.
-
-Portions Copyright  2002-2012 Charlie Poole or Copyright  2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright  2000-2002 Philip A. Craig
-
-2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-
-3. This notice may not be removed or altered from any source distribution.
+Copyright  2002-2012 Charlie Poole
+Copyright  2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov
+Copyright  2000-2002 Philip A. Craig
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required.
+
+Portions Copyright  2002-2012 Charlie Poole or Copyright  2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright  2000-2002 Philip A. Craig
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Ix_Xamarin/android/ix/System.Interactive.Providers/android_System.Interactive.Providers.csproj
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Ix_Xamarin/android/ix/System.Interactive.Providers/android_System.Interactive.Providers.csproj
@@ -40,9 +40,9 @@
   </ItemGroup>
   <ItemGroup>
 
-<ProjectReference Include="..\System.Interactive\android_System.Interactive.csproj">
-  <Project>{8E4B04F0-915E-48F9-9796-76278C6094BD}</Project>
-  <Name>android_System.Interactive</Name>
+<ProjectReference Include="..\System.Interactive\android_System.Interactive.csproj">
+  <Project>{8E4B04F0-915E-48F9-9796-76278C6094BD}</Project>
+  <Name>android_System.Interactive</Name>
 </ProjectReference>
     <!--
     <ProjectReference Include="..\Andr.Unit\Android.NUnitLite\Android.NUnitLite.csproj">
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Ix_Xamarin/iOS/ix/System.Interactive.Providers/ios_System.Interactive.Providers.csproj
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Ix_Xamarin/iOS/ix/System.Interactive.Providers/ios_System.Interactive.Providers.csproj
@@ -49,9 +49,9 @@
     
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\System.Interactive\ios_System.Interactive.csproj">
-  <Project>{8E4B04F0-915E-48F9-9796-76278C6094BD}</Project>
-  <Name>ios_System.Interactive</Name>
+    <ProjectReference Include="..\System.Interactive\ios_System.Interactive.csproj">
+  <Project>{8E4B04F0-915E-48F9-9796-76278C6094BD}</Project>
+  <Name>ios_System.Interactive</Name>
 </ProjectReference>
     <!--
     <ProjectReference Include="..\Andr.Unit\Android.NUnitLite\Android.NUnitLite.csproj">
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.Aggregates.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.Aggregates.cs
@@ -5,13 +5,13 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Collections;
 using System.Threading;
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.Bugs.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.Bugs.cs
@@ -4,13 +4,13 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Collections;
 using System.Threading;
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.Conversions.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.Conversions.cs
@@ -4,13 +4,13 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Threading;
 
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.Creation.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.Creation.cs
@@ -5,13 +5,13 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Threading.Tasks;
 using System.Threading;
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.Exceptions.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.Exceptions.cs
@@ -5,13 +5,13 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Threading;
 
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.Multiple.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.Multiple.cs
@@ -5,13 +5,13 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Threading;
 
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.Single.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.Single.cs
@@ -5,13 +5,13 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Threading;
 
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/AsyncTests.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/AsyncTests.cs
@@ -4,13 +4,13 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 
 namespace Tests
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Aggregates.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Aggregates.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 
 namespace Tests
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Buffering.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Buffering.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Collections;
 
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Creation.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Creation.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Collections;
 
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Exceptions.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Exceptions.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 
 namespace Tests
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Imperative.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Imperative.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 
 namespace Tests
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Multiple.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Multiple.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 
 namespace Tests
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Qbservable.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Qbservable.cs
@@ -6,13 +6,13 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Reflection;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 using System.Runtime.CompilerServices;
 using System.Linq.Expressions;
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.Single.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.Single.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 
 namespace Tests
--- mono-4.6.2.7+dfsg.orig/external/rx/Ix/NET/Tests/Tests.cs
+++ mono-4.6.2.7+dfsg/external/rx/Ix/NET/Tests/Tests.cs
@@ -3,13 +3,13 @@ using System;
 using System.Text;
 using System.Collections.Generic;
 using System.Linq;
-#if NUNIT
-using NUnit.Framework;
-using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
-using TestMethodAttribute = NUnit.Framework.TestAttribute;
-using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
-#else
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+#if NUNIT
+using NUnit.Framework;
+using TestClassAttribute = NUnit.Framework.TestFixtureAttribute;
+using TestMethodAttribute = NUnit.Framework.TestAttribute;
+using TestInitializeAttribute = NUnit.Framework.SetUpAttribute;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 #endif
 
 namespace Tests
--- mono-4.6.2.7+dfsg.orig/mcs/ScalableMonoIcon.svg
+++ mono-4.6.2.7+dfsg/mcs/ScalableMonoIcon.svg
@@ -1,566 +1,566 @@
-<?xml version="1.0" standalone="yes"?>
-<svg width="600" height="523">
-<path style="fill:#feffff" d="M600 0 L600 523 L0 523 L0 0 L600 0 z"/>
-<path style="fill:#606060" d="M142 40 C142.2 41.18 140.7 41.02 140 41 C139.8 39.82 141.3 39.98 142 40 z"/>
-<path style="fill:#0" d="M442 40 C441.8 41.18 443.3 41.02 444 41 L446 41 L447 42 L450 43 L451 44 L456 49 L457 50 L457 51 L458 52 L458 53 L459 54 L459 56 L459 58 L459 358 L459 360 L459 361 L458 362 L455 368 L454 369 L453 370 L452 371 L450 372 L449 373 L448 373 L447 374 L446 374 C445.3 374 443.8 373.8 444 375 L441 375 L153 374 L154 373 L157 369 L158 368 L159 367 L161 364 L162 363 L163 362 L165 359 L166 358 L167 357 L170 353 L171 352 L172 351 L174 348 L175 347 L176 346 L179 342 L180 341 L181 340 L183 337 L184 336 L185 335 L188 331 L189 330 L190 329 L192 326 L193 325 L194 324 L197 320 L198 319 L199 318 L201 315 L202 314 L203 313 L206 309 L207 308 L208 307 L210 304 L211 303 L212 302 L215 298 L216 297 L217 296 L219 293 L220 292 L221 291 C221.3 289.7 222.7 288.7 224 289 L225 290 L227 290 L228 291 L229 291 L230 292 L231 292 L232 293 L234 293 L235 294 L236 294 L237 295 L238 295 L239 296 L241 296 L242 297 L243 297 L244 298 L245 298 L246 299 L248 299 L249 300 L250 300 L251 301 L252 301 L253 302 L255 302 L256 303 L257 303 L258 304 L259 304 L260 305 L264 306 L265 307 L266 307 L267 308 L271 309 L272 310 L273 310 L274 311 L278 312 L279 313 L280 313 L281 314 L285 315 L286 316 L287 316 L288 317 L292 318 L293 319 L294 319 L295 320 L299 321 L300 322 L301 322 L302 323 L306 324 L307 325 L308 325 L309 326 L313 327 L314 328 L315 328 L316 329 L317 329 L318 330 L320 330 L321 331 L322 331 L323 332 L324 332 L325 333 L327 333 L328 334 L329 334 L330 335 L331 335 L332 336 L334 336 L335 337 L336 337 L337 338 L338 338 L339 339 L341 339 L342 340 L343 340 L344 341 L345 341 L346 342 L348 342 L349 343 L350 343 L351 344 L352 344 L353 345 L355 345 L356 346 L357 346 L358 347 L359 347 L360 348 C361.6 348.3 363.7 347.9 364 346 L365 345 L366 343 L367 342 L367 341 L368 340 L373 329 L374 328 L374 327 L375 326 L375 325 L376 324 L376 323 L377 322 L377 320 L378 319 L378 318 L379 317 L380 313 L381 312 L381 311 L382 310 L382 308 L383 307 L384 303 L385 302 L380 298 L379 297 L378 297 L377 296 L373 294 L372 293 L369 291 L368 290 L366 289 L365 288 L364 287 L361 285 L360 284 L359 283 L345 269 L344 268 L343 267 L342 266 L340 263 L339 262 L337 259 L336 258 L331 250 L330 249 L329 247 L328 246 L328 245 L327 244 L324 238 L324 237 L327 240 L328 241 L330 244 L331 245 L332 246 L333 247 L337 252 L338 253 L339 254 L340 255 L341 256 L342 257 L343 258 L344 259 L345 260 L346 261 L347 262 L348 263 L349 264 L355 269 L356 270 L357 271 L358 272 L362 275 L363 276 L366 278 L367 279 L368 280 L370 281 L371 282 L372 283 L374 284 L375 285 L377 286 L378 287 L380 288 L381 289 L383 290 L384 291 L386 292 C385.8 293.3 388.2 293.3 388 292 L388 291 C389.2 291.2 389 289.7 389 289 L389 287 C390.2 287.2 390 285.7 390 285 L390 282 C391.2 282.2 391 280.7 391 280 L391 277 C392.6 276.9 391.8 274.9 392 274 L392 272 L393 267 L393 242 L392 237 L392 233 L391 229 L391 227 L391 225 C391 224.3 391.2 222.8 390 223 L390 220 C390 219.3 390.2 217.8 389 218 L389 215 C389 214.3 389.2 212.8 388 213 L388 211 C388 210.3 388.2 208.8 387 209 L387 207 C387 206.3 387.2 204.8 386 205 L386 204 C386 203.3 386.2 201.8 385 202 L385 200 C385 199.3 385.2 197.8 384 198 L384 197 C384 196.3 384.2 194.8 383 195 L383 193 L382 192 L382 190 L381 189 L381 187 L380 186 L380 185 L379 184 L379 182 L378 181 L377 180 L376 179 L368 177 L367 176 L365 176 C365.2 174.8 363.7 175 363 175 L362 175 C362.2 173.8 360.7 174 360 174 L358 174 L357 173 L356 173 C356.2 171.8 354.7 172 354 172 L349 171 L348 170 L346 170 C346.2 168.8 344.7 169 344 169 L343 169 L344 168 L347 168 C346.8 169.2 348.3 169 349 169 L351 169 C350.8 170.2 352.3 170 353 170 L357 170 C356.8 171.2 358.3 171 359 171 L360 171 C360.1 172.6 362.1 171.8 363 172 L367 172 C366.8 173.2 368.3 173 369 173 L373 173 C373.1 174.6 375.1 173.8 376 174 L378 174 L382 175 C385.8 174.6 391.3 176.6 393 172 L394 171 L394 169 L395 165 L395 159 L394 154 L394 151 C393.8 150.1 394.6 148.1 393 148 L393 145 L393 143 C393 142.3 393.2 140.8 392 141 L391 134 C391 133.3 391.2 131.8 390 132 L390 131 C390 130.3 390.2 128.8 389 129 L389 127 C389 126.3 389.2 124.8 388 125 L388 124 C388 123.3 388.2 121.8 387 122 L387 120 C387 119.3 387.2 117.8 386 118 L386 117 C386 116.3 386.2 114.8 385 115 L385 114 C385 113.3 385.2 111.8 384 112 L383 108 L382 107 L382 106 L381 105 L381 104 L380 103 L379 100 L378 99 L378 98 L377 97 L375 95 L374 94 L372 93 L371 92 L367 91 L366 90 L364 90 L363 89 L361 89 L360 88 L358 88 C358.2 86.82 356.7 86.98 356 87 L355 87 C355.2 85.82 353.7 85.98 353 86 L351 86 C351.2 84.82 349.7 84.98 349 85 L346 85 C346.2 83.82 344.7 83.98 344 84 L341 84 C341.2 82.82 339.7 82.98 339 83 L336 83 C336.2 81.82 334.7 81.98 334 82 L331 82 C331.2 80.82 329.7 80.98 329 81 L326 81 C325.9 79.41 323.9 80.19 323 80 L319 80 C318.9 78.41 316.9 79.19 316 79 L312 79 C311.9 77.41 309.9 78.19 309 78 L302 78 L297 77 L294 77 C293.9 75.41 291.9 76.19 291 76 L285 76 L281 76 L275 75 L264 76 L254 76 L250 77 L248 77 L246 77 C245.3 76.98 243.8 76.82 244 78 L242 78 C241.3 77.98 239.8 77.82 240 79 L238 79 C237.3 78.98 235.8 78.82 236 80 L235 80 C234.3 79.98 232.8 79.82 233 81 L232 81 L231 82 L229 82 L228 83 L227 83 L226 84 C224 84.21 226.2 85.56 227 85 C226.8 86.18 228.3 86.02 229 86 L234 86 C233.8 87.18 235.3 87.02 236 87 L238 87 C237.8 88.18 239.3 88.02 240 88 L243 88 C242.8 89.18 244.3 89.02 245 89 L248 89 C248.2 90.18 246.7 90.02 246 90 L242 90 L238 89 L232 89 C231.9 87.41 229.9 88.19 229 88 L225 88 L221 87 L217 87 L213 86 L211 86 L207 85 L203 85 L199 84 L195 84 L191 83 C187.6 82.2 184.4 83.9 183 87 L182 88 L181 89 L180 90 L178 93 L177 94 L176 96 L175 97 L174 99 L173 100 L173 101 L172 102 L172 103 L171 104 L171 105 L170 106 L170 108 C168.8 107.8 169 109.3 169 110 L169 112 C167.3 113.7 167.3 119.3 169 121 L169 123 L170 124 L170 126 L171 127 L171 128 L172 129 L173 131 L174 132 L176 135 L177 136 L178 137 L179 138 L180 139 L181 140 L182 141 L183 142 L184 143 L185 144 L188 146 L189 147 L190 148 L192 149 L193 150 L195 151 L196 152 L208 158 L209 159 L210 159 L211 160 L212 160 L213 161 L214 161 L215 162 L216 162 L217 163 L218 163 L217 164 L216 164 L215 164 L214 163 L210 162 L209 161 L208 161 L207 160 L205 160 L204 159 L203 159 L202 158 L200 158 L199 157 L198 157 L197 156 L196 156 L195 155 L193 155 L192 154 L188 154 C187.3 154 185.8 153.8 186 155 L185 155 C184.3 155 182.8 154.8 183 156 L181 156 C180.3 156 178.8 155.8 179 157 L177 157 C176.3 157 174.8 156.8 175 158 L174 158 C173.3 158 171.8 157.8 172 159 L170 159 C169.3 159 167.8 158.8 168 160 L167 160 C166.3 160 164.8 159.8 165 161 L163 161 C162.3 161 160.8 160.8 161 162 L160 162 C159.3 162 157.8 161.8 158 163 L156 163 C155.3 163 153.8 162.8 154 164 L152 164 C151.3 164 149.8 163.8 150 165 L149 165 C148.3 165 146.8 164.8 147 166 L145 166 C144.3 166 142.8 165.8 143 167 L141 167 C140.3 167 138.8 166.8 139 168 L138 168 C137.3 168 135.8 167.8 136 169 L134 169 C133.3 169 131.8 168.8 132 170 L131 170 C130.3 170 128.8 169.8 129 171 L126 171 L125 59 L125 56 L125 55 C126.2 55.15 126 53.66 126 53 L126 52 L127 51 L128 49 L129 48 L133 44 L134 43 L135 43 L136 42 L137 42 L138 41 L140 41 C140.7 41.02 142.2 41.18 142 40 L442 40 z"/>
-<path style="fill:#585858" d="M444 41 C443.3 41.02 441.8 41.18 442 40 C442.7 39.98 444.2 39.82 444 41 z"/>
-<path style="fill:#606060" d="M138 41 L137 42 L138 41 z"/>
-<path style="fill:#606060" d="M447 42 L446 41 L447 42 z"/>
-<path style="fill:#606060" d="M136 42 L135 43 L136 42 z"/>
-<path style="fill:#909090" d="M134 43 L133 44 L134 43 z"/>
-<path style="fill:#808080" d="M451 44 L450 43 L451 44 z"/>
-<path style="fill:#606060" d="M129 48 L128 49 L129 48 z"/>
-<path style="fill:#909090" d="M457 50 L456 49 L457 50 z"/>
-<path style="fill:#808080" d="M127 51 L126 52 L127 51 z"/>
-<path style="fill:#606060" d="M458 52 L457 51 L458 52 z"/>
-<path style="fill:#787878" d="M126 53 C126 53.66 126.2 55.15 125 55 C125 54.34 124.8 52.85 126 53 z"/>
-<path style="fill:#909090" d="M459 54 L458 53 L459 54 z"/>
-<path style="fill:#9a9b9b" d="M125 56 L125 59 L124 59 C124.2 58.05 123.4 56.06 125 56 z"/>
-<path style="fill:#909090" d="M460 58 L459 58 L459 56 C460.2 55.85 460 57.34 460 58 z"/>
-<path style="fill:#404040" d="M460 58 L460 358 L459 358 L459 58 L460 58 z"/>
-<path style="fill:#404040" d="M125 59 L126 171 L124 59 L125 59 z"/>
-<path style="fill:#7d7d7d" d="M275 75 L275 76 L264 76 L275 75 z"/>
-<path style="fill:#3a3b3b" d="M281 76 L275 76 L275 75 L281 76 z"/>
-<path style="fill:#686868" d="M254 76 L250 77 L254 76 z"/>
-<path style="fill:#a2a3a3" d="M291 76 L291 77 L285 76 L291 76 z"/>
-<path style="fill:#4a4b4b" d="M294 77 L291 77 L291 76 C291.9 76.19 293.9 75.41 294 77 z"/>
-<path style="fill:#585858" d="M246 77 L246 78 L244 78 C243.8 76.82 245.3 76.98 246 77 z"/>
-<path style="fill:#a8a8a8" d="M248 77 C248.2 78.18 246.7 78.02 246 78 L246 77 L248 77 z"/>
-<path style="fill:#a0a0a0" d="M302 78 L297 77 L302 78 z"/>
-<path style="fill:#707070" d="M242 78 C242.2 79.18 240.7 79.02 240 79 C239.8 77.82 241.3 77.98 242 78 z"/>
-<path style="fill:#606060" d="M312 79 C311.1 78.81 309.1 79.59 309 78 C309.9 78.19 311.9 77.41 312 79 z"/>
-<path style="fill:#707070" d="M238 79 C238.2 80.18 236.7 80.02 236 80 C235.8 78.82 237.3 78.98 238 79 z"/>
-<path style="fill:#656565" d="M319 80 C318.1 79.81 316.1 80.59 316 79 C316.9 79.19 318.9 78.41 319 80 z"/>
-<path style="fill:#787878" d="M235 80 C235.2 81.18 233.7 81.02 233 81 C232.8 79.82 234.3 79.98 235 80 z"/>
-<path style="fill:#606060" d="M326 81 C325.1 80.81 323.1 81.59 323 80 C323.9 80.19 325.9 79.41 326 81 z"/>
-<path style="fill:#a0a0a0" d="M232 81 L231 82 L232 81 z"/>
-<path style="fill:#707070" d="M331 82 C330.3 82.02 328.8 82.18 329 81 C329.7 80.98 331.2 80.82 331 82 z"/>
-<path style="fill:#606060" d="M229 82 L228 83 L229 82 z"/>
-<path style="fill:#909090" d="M336 83 C335.3 83.02 333.8 83.18 334 82 C334.7 81.98 336.2 81.82 336 83 z"/>
-<path style="fill:#686868" d="M195 84 L191 83 L195 84 z"/>
-<path style="fill:#808080" d="M227 83 L226 84 L227 83 z"/>
-<path style="fill:#989898" d="M341 84 C340.3 84.02 338.8 84.18 339 83 C339.7 82.98 341.2 82.82 341 84 z"/>
-<path style="fill:#606060" d="M203 85 L199 84 L203 85 z"/>
-<path style="fill:#888888" d="M346 85 C345.3 85.02 343.8 85.18 344 84 C344.7 83.98 346.2 83.82 346 85 z"/>
-<path style="fill:#5c5c5c" d="M211 86 L207 85 L211 86 z"/>
-<path style="fill:#585858" d="M229 86 C228.3 86.02 226.8 86.18 227 85 C227.7 84.98 229.2 84.82 229 86 z"/>
-<path style="fill:#606060" d="M351 86 C350.3 86.02 348.8 86.18 349 85 C349.7 84.98 351.2 84.82 351 86 z"/>
-<path style="fill:#989898" d="M217 87 L213 86 L217 87 z"/>
-<path style="fill:#a8a8a8" d="M236 87 C235.3 87.02 233.8 87.18 234 86 C234.7 85.98 236.2 85.82 236 87 z"/>
-<path style="fill:#606060" d="M355 87 C354.3 87.02 352.8 87.18 353 86 C353.7 85.98 355.2 85.82 355 87 z"/>
-<path style="fill:#a0a0a0" d="M183 87 L182 88 L183 87 z"/>
-<path style="fill:#909090" d="M225 88 L221 87 L225 88 z"/>
-<path style="fill:#686868" d="M240 88 C239.3 88.02 237.8 88.18 238 87 C238.7 86.98 240.2 86.82 240 88 z"/>
-<path style="fill:#909090" d="M358 88 C357.3 88.02 355.8 88.18 356 87 C356.7 86.98 358.2 86.82 358 88 z"/>
-<path style="fill:#909090" d="M182 88 L181 89 L182 88 z"/>
-<path style="fill:#a0a0a0" d="M232 89 C231.1 88.81 229.1 89.59 229 88 C229.9 88.19 231.9 87.41 232 89 z"/>
-<path style="fill:#606060" d="M245 89 C244.3 89.02 242.8 89.18 243 88 C243.7 87.98 245.2 87.82 245 89 z"/>
-<path style="fill:#909090" d="M361 89 L360 88 L361 89 z"/>
-<path style="fill:#606060" d="M181 89 L180 90 L181 89 z"/>
-<path style="fill:#686868" d="M242 90 L238 89 L242 90 z"/>
-<path style="fill:#6e6e6e" d="M252 90 C251.3 89.98 249.8 89.82 250 91 L246 90 C246.7 90.02 248.2 90.18 248 89 L252 90 z"/>
-<path style="fill:#a0a0a0" d="M364 90 L363 89 L364 90 z"/>
-<path style="fill:#0c0c0c" d="M252 90 L254 90 L254 91 L250 91 C249.8 89.82 251.3 89.98 252 90 z"/>
-<path style="fill:#505050" d="M260 91 L260 92 L254 91 L254 90 L260 91 z"/>
-<path style="fill:#909090" d="M367 91 L366 90 L367 91 z"/>
-<path style="fill:#989898" d="M260 92 L260 91 L266.8 92.25 C265.8 93.41 260.9 93.72 260 92 z"/>
-<path style="fill:#606060" d="M372 93 L371 92 L372 93 z"/>
-<path style="fill:#808080" d="M178 93 L177 94 L178 93 z"/>
-<path style="fill:#909090" d="M375 95 L374 94 L375 95 z"/>
-<path style="fill:#909090" d="M176 96 L175 97 L176 96 z"/>
-<path style="fill:#707070" d="M378 98 L377 97 L378 98 z"/>
-<path style="fill:#707070" d="M174 99 L173 100 L174 99 z"/>
-<path style="fill:#a0a0a0" d="M379 100 L378 99 L379 100 z"/>
-<path style="fill:#808080" d="M173 101 L172 102 L173 101 z"/>
-<path style="fill:#808080" d="M172 103 L171 104 L172 103 z"/>
-<path style="fill:#a0a0a0" d="M381 104 L380 103 L381 104 z"/>
-<path style="fill:#606060" d="M171 105 L170 106 L171 105 z"/>
-<path style="fill:#808080" d="M382 106 L381 105 L382 106 z"/>
-<path style="fill:#606060" d="M383 108 L382 107 L383 108 z"/>
-<path style="fill:#989898" d="M170 108 C170 108.7 170.2 110.2 169 110 C169 109.3 168.8 107.8 170 108 z"/>
-<path style="fill:#a5a5a5" d="M169 112 L169 121 C167.3 119.3 167.3 113.7 169 112 z"/>
-<path style="fill:#787878" d="M385 114 C383.8 114.2 384 112.7 384 112 C385.2 111.8 385 113.3 385 114 z"/>
-<path style="fill:#787878" d="M386 117 C384.8 117.2 385 115.7 385 115 C386.2 114.8 386 116.3 386 117 z"/>
-<path style="fill:#787878" d="M387 120 C385.8 120.2 386 118.7 386 118 C387.2 117.8 387 119.3 387 120 z"/>
-<path style="fill:#b0b0b0" d="M388 124 C386.8 124.2 387 122.7 387 122 C388.2 121.8 388 123.3 388 124 z"/>
-<path style="fill:#a0a0a0" d="M170 124 L169 123 L170 124 z"/>
-<path style="fill:#888888" d="M389 127 C387.8 127.2 388 125.7 388 125 C389.2 124.8 389 126.3 389 127 z"/>
-<path style="fill:#606060" d="M171 127 L170 126 L171 127 z"/>
-<path style="fill:#606060" d="M172 129 L171 128 L172 129 z"/>
-<path style="fill:#a0a0a0" d="M390 131 C388.8 131.2 389 129.7 389 129 C390.2 128.8 390 130.3 390 131 z"/>
-<path style="fill:#808080" d="M174 132 L173 131 L174 132 z"/>
-<path style="fill:#606060" d="M391 134 C389.8 134.2 390 132.7 390 132 C391.2 131.8 391 133.3 391 134 z"/>
-<path style="fill:#707070" d="M177 136 L176 135 L177 136 z"/>
-<path style="fill:#a0a0a0" d="M178 137 L177 136 L178 137 z"/>
-<path style="fill:#a0a0a0" d="M179 138 L178 137 L179 138 z"/>
-<path style="fill:#a0a0a0" d="M180 139 L179 138 L180 139 z"/>
-<path style="fill:#a0a0a0" d="M181 140 L180 139 L181 140 z"/>
-<path style="fill:#a0a0a0" d="M182 141 L181 140 L182 141 z"/>
-<path style="fill:#a0a0a0" d="M183 142 L182 141 L183 142 z"/>
-<path style="fill:#585858" d="M393 143 L392 143 L392 141 C393.2 140.8 393 142.3 393 143 z"/>
-<path style="fill:#909090" d="M184 143 L183 142 L184 143 z"/>
-<path style="fill:#606060" d="M185 144 L184 143 L185 144 z"/>
-<path style="fill:#b0b0b0" d="M393 143 L393 145 C391.8 145.2 392 143.7 392 143 L393 143 z"/>
-<path style="fill:#a0a0a0" d="M189 147 L188 146 L189 147 z"/>
-<path style="fill:#606060" d="M190 148 L189 147 L190 148 z"/>
-<path style="fill:#a0a0a0" d="M394 151 C392.4 150.9 393.2 148.9 393 148 C394.6 148.1 393.8 150.1 394 151 z"/>
-<path style="fill:#808080" d="M193 150 L192 149 L193 150 z"/>
-<path style="fill:#808080" d="M196 152 L195 151 L196 152 z"/>
-<path style="fill:#808080" d="M188 154 C188.2 155.2 186.7 155 186 155 C185.8 153.8 187.3 154 188 154 z"/>
-<path style="fill:#909090" d="M193 155 L192 154 L193 155 z"/>
-<path style="fill:#696a6a" d="M395 159 L394 159 L394 154 L395 159 z"/>
-<path style="fill:#b0b0b0" d="M185 155 C185.2 156.2 183.7 156 183 156 C182.8 154.8 184.3 155 185 155 z"/>
-<path style="fill:#606060" d="M196 156 L195 155 L196 156 z"/>
-<path style="fill:#888888" d="M181 156 C181.2 157.2 179.7 157 179 157 C178.8 155.8 180.3 156 181 156 z"/>
-<path style="fill:#808080" d="M198 157 L197 156 L198 157 z"/>
-<path style="fill:#707070" d="M177 157 C177.2 158.2 175.7 158 175 158 C174.8 156.8 176.3 157 177 157 z"/>
-<path style="fill:#a0a0a0" d="M200 158 L199 157 L200 158 z"/>
-<path style="fill:#909090" d="M174 158 C174.2 159.2 172.7 159 172 159 C171.8 157.8 173.3 158 174 158 z"/>
-<path style="fill:#606060" d="M203 159 L202 158 L203 159 z"/>
-<path style="fill:#606060" d="M209 159 L208 158 L209 159 z"/>
-<path style="fill:#787878" d="M170 159 C170.2 160.2 168.7 160 168 160 C167.8 158.8 169.3 159 170 159 z"/>
-<path style="fill:#a0a0a0" d="M205 160 L204 159 L205 160 z"/>
-<path style="fill:#606060" d="M211 160 L210 159 L211 160 z"/>
-<path style="fill:#b8b8b8" d="M395 159 L395 165 L394 165 L394 159 L395 159 z"/>
-<path style="fill:#a8a8a8" d="M167 160 C167.2 161.2 165.7 161 165 161 C164.8 159.8 166.3 160 167 160 z"/>
-<path style="fill:#606060" d="M208 161 L207 160 L208 161 z"/>
-<path style="fill:#606060" d="M213 161 L212 160 L213 161 z"/>
-<path style="fill:#808080" d="M163 161 C163.2 162.2 161.7 162 161 162 C160.8 160.8 162.3 161 163 161 z"/>
-<path style="fill:#808080" d="M210 162 L209 161 L210 162 z"/>
-<path style="fill:#606060" d="M215 162 L214 161 L215 162 z"/>
-<path style="fill:#b0b0b0" d="M160 162 C160.2 163.2 158.7 163 158 163 C157.8 161.8 159.3 162 160 162 z"/>
-<path style="fill:#606060" d="M217 163 L216 162 L217 163 z"/>
-<path style="fill:#909090" d="M156 163 C156.2 164.2 154.7 164 154 164 C153.8 162.8 155.3 163 156 163 z"/>
-<path style="fill:#707070" d="M215 164 L214 163 L215 164 z"/>
-<path style="fill:#2e2f2f" d="M226 167 L226 168 L222 167 L221 166 L217 165 L217 164 L218 163 L226 167 z"/>
-<path style="fill:#707070" d="M152 164 C152.2 165.2 150.7 165 150 165 C149.8 163.8 151.3 164 152 164 z"/>
-<path style="fill:#a0a0a0" d="M217 164 L217 165 L216 164 L217 164 z"/>
-<path style="fill:#989898" d="M149 165 C149.2 166.2 147.7 166 147 166 C146.8 164.8 148.3 165 149 165 z"/>
-<path style="fill:#929393" d="M336 166 L336 167 C331.1 167.2 332.8 162.9 336 166 z"/>
-<path style="fill:#686868" d="M395 165 L394 169 L394 165 L395 165 z"/>
-<path style="fill:#808080" d="M145 166 C145.2 167.2 143.7 167 143 167 C142.8 165.8 144.3 166 145 166 z"/>
-<path style="fill:#909090" d="M222 167 L221 166 L222 167 z"/>
-<path style="fill:#525353" d="M344 168 L343 169 L336 167 L336 166 L344 168 z"/>
-<path style="fill:#606060" d="M141 167 C141.2 168.2 139.7 168 139 168 C138.8 166.8 140.3 167 141 167 z"/>
-<path style="fill:#808080" d="M227 168 L227 169 L226 168 L226 167 L227 168 z"/>
-<path style="fill:#888888" d="M138 168 C138.2 169.2 136.7 169 136 169 C135.8 167.8 137.3 168 138 168 z"/>
-<path style="fill:#202020" d="M228 168 L228 169 L227 169 L227 168 L228 168 z"/>
-<path style="fill:#7c7c7c" d="M231 170 C230.1 169.8 228.1 170.6 228 169 L228 168 L231 170 z"/>
-<path style="fill:#989898" d="M349 169 C348.3 169 346.8 169.2 347 168 C347.7 168 349.2 167.8 349 169 z"/>
-<path style="fill:#707070" d="M134 169 C134.2 170.2 132.7 170 132 170 C131.8 168.8 133.3 169 134 169 z"/>
-<path style="fill:#808080" d="M346 170 C345.3 170 343.8 170.2 344 169 C344.7 169 346.2 168.8 346 170 z"/>
-<path style="fill:#686868" d="M353 170 C352.3 170 350.8 170.2 351 169 C351.7 169 353.2 168.8 353 170 z"/>
-<path style="fill:#909090" d="M131 170 C131.2 171.2 129.7 171 129 171 C128.8 169.8 130.3 170 131 170 z"/>
-<path style="fill:#808080" d="M231 170 C234.2 169.3 231.7 172.5 231 170 z"/>
-<path style="fill:#606060" d="M349 171 L348 170 L349 171 z"/>
-<path style="fill:#a8a8a8" d="M359 171 C358.3 171 356.8 171.2 357 170 C357.7 170 359.2 169.8 359 171 z"/>
-<path style="fill:#5a5b5b" d="M363 172 C362.1 171.8 360.1 172.6 360 171 C360.9 171.2 362.9 170.4 363 172 z"/>
-<path style="fill:#606060" d="M394 171 L393 172 L394 171 z"/>
-<path style="fill:#505050" d="M356 173 C355.3 173 353.8 173.2 354 172 C354.7 172 356.2 171.8 356 173 z"/>
-<path style="fill:#989898" d="M369 173 C368.3 173 366.8 173.2 367 172 C367.7 172 369.2 171.8 369 173 z"/>
-<path style="fill:#909090" d="M358 174 L357 173 L358 174 z"/>
-<path style="fill:#a5a5a5" d="M376 174 C375.1 173.8 373.1 174.6 373 173 C373.9 173.2 375.9 172.4 376 174 z"/>
-<path style="fill:#707070" d="M362 175 C361.3 175 359.8 175.2 360 174 C360.7 174 362.2 173.8 362 175 z"/>
-<path style="fill:#646464" d="M382 175 L378 174 L382 175 z"/>
-<path style="fill:#787878" d="M365 176 C364.3 176 362.8 176.2 363 175 C363.7 175 365.2 174.8 365 176 z"/>
-<path style="fill:#606060" d="M368 177 L367 176 L368 177 z"/>
-<path style="fill:#909090" d="M377 180 L376 179 L377 180 z"/>
-<path style="fill:#707070" d="M379 182 L378 181 L379 182 z"/>
-<path style="fill:#a0a0a0" d="M380 185 L379 184 L380 185 z"/>
-<path style="fill:#606060" d="M381 187 L380 186 L381 187 z"/>
-<path style="fill:#707070" d="M382 190 L381 189 L382 190 z"/>
-<path style="fill:#707070" d="M383 193 L382 192 L383 193 z"/>
-<path style="fill:#909090" d="M384 197 C382.8 197.2 383 195.7 383 195 C384.2 194.8 384 196.3 384 197 z"/>
-<path style="fill:#787878" d="M385 200 C383.8 200.2 384 198.7 384 198 C385.2 197.8 385 199.3 385 200 z"/>
-<path style="fill:#a0a0a0" d="M386 204 C384.8 204.2 385 202.7 385 202 C386.2 201.8 386 203.3 386 204 z"/>
-<path style="fill:#707070" d="M387 207 C385.8 207.2 386 205.7 386 205 C387.2 204.8 387 206.3 387 207 z"/>
-<path style="fill:#707070" d="M388 211 C386.8 211.2 387 209.7 387 209 C388.2 208.8 388 210.3 388 211 z"/>
-<path style="fill:#606060" d="M389 215 C387.8 215.2 388 213.7 388 213 C389.2 212.8 389 214.3 389 215 z"/>
-<path style="fill:#686868" d="M390 220 C388.8 220.2 389 218.7 389 218 C390.2 217.8 390 219.3 390 220 z"/>
-<path style="fill:#585858" d="M391 225 L390 225 L390 223 C391.2 222.8 391 224.3 391 225 z"/>
-<path style="fill:#a8a8a8" d="M391 225 L391 227 C389.8 227.2 390 225.7 390 225 L391 225 z"/>
-<path style="fill:#707070" d="M392 233 L391 229 L392 233 z"/>
-<path style="fill:#909090" d="M324 236 L323 236 C320.3 234.8 323.9 233.2 324 236 z"/>
-<path style="fill:#202020" d="M324 236 L324 237 L323 237 L323 236 L324 236 z"/>
-<path style="fill:#a0a0a0" d="M324 237 L324 238 L323 237 L324 237 z"/>
-<path style="fill:#666666" d="M393 242 L392 237 L393 242 z"/>
-<path style="fill:#a0a0a0" d="M328 241 L327 240 L328 241 z"/>
-<path style="fill:#707070" d="M328 245 L327 244 L328 245 z"/>
-<path style="fill:#606060" d="M331 245 L330 244 L331 245 z"/>
-<path style="fill:#909090" d="M332 246 L331 245 L332 246 z"/>
-<path style="fill:#909090" d="M329 247 L328 246 L329 247 z"/>
-<path style="fill:#a0a0a0" d="M333 247 L332 246 L333 247 z"/>
-<path style="fill:#707070" d="M331 250 L330 249 L331 250 z"/>
-<path style="fill:#606060" d="M338 253 L337 252 L338 253 z"/>
-<path style="fill:#606060" d="M339 254 L338 253 L339 254 z"/>
-<path style="fill:#606060" d="M340 255 L339 254 L340 255 z"/>
-<path style="fill:#606060" d="M341 256 L340 255 L341 256 z"/>
-<path style="fill:#606060" d="M342 257 L341 256 L342 257 z"/>
-<path style="fill:#606060" d="M343 258 L342 257 L343 258 z"/>
-<path style="fill:#707070" d="M337 259 L336 258 L337 259 z"/>
-<path style="fill:#606060" d="M344 259 L343 258 L344 259 z"/>
-<path style="fill:#606060" d="M345 260 L344 259 L345 260 z"/>
-<path style="fill:#606060" d="M346 261 L345 260 L346 261 z"/>
-<path style="fill:#606060" d="M347 262 L346 261 L347 262 z"/>
-<path style="fill:#707070" d="M340 263 L339 262 L340 263 z"/>
-<path style="fill:#606060" d="M348 263 L347 262 L348 263 z"/>
-<path style="fill:#606060" d="M349 264 L348 263 L349 264 z"/>
-<path style="fill:#a0a0a0" d="M343 267 L342 266 L343 267 z"/>
-<path style="fill:#808080" d="M344 268 L343 267 L344 268 z"/>
-<path style="fill:#636363" d="M393 267 L392 272 L393 267 z"/>
-<path style="fill:#606060" d="M345 269 L344 268 L345 269 z"/>
-<path style="fill:#a0a0a0" d="M356 270 L355 269 L356 270 z"/>
-<path style="fill:#909090" d="M357 271 L356 270 L357 271 z"/>
-<path style="fill:#606060" d="M358 272 L357 271 L358 272 z"/>
-<path style="fill:#a0a0a0" d="M392 274 C391.8 274.9 392.6 276.9 391 277 C391.2 276.1 390.4 274.1 392 274 z"/>
-<path style="fill:#808080" d="M363 276 L362 275 L363 276 z"/>
-<path style="fill:#a0a0a0" d="M367 279 L366 278 L367 279 z"/>
-<path style="fill:#606060" d="M368 280 L367 279 L368 280 z"/>
-<path style="fill:#a8a8a8" d="M391 280 C391 280.7 391.2 282.2 390 282 C390 281.3 389.8 279.8 391 280 z"/>
-<path style="fill:#a0a0a0" d="M371 282 L370 281 L371 282 z"/>
-<path style="fill:#606060" d="M372 283 L371 282 L372 283 z"/>
-<path style="fill:#606060" d="M360 284 L359 283 L360 284 z"/>
-<path style="fill:#a0a0a0" d="M361 285 L360 284 L361 285 z"/>
-<path style="fill:#808080" d="M375 285 L374 284 L375 285 z"/>
-<path style="fill:#909090" d="M390 285 C390 285.7 390.2 287.2 389 287 C389 286.3 388.8 284.8 390 285 z"/>
-<path style="fill:#909090" d="M378 287 L377 286 L378 287 z"/>
-<path style="fill:#606060" d="M365 288 L364 287 L365 288 z"/>
-<path style="fill:#909090" d="M366 289 L365 288 L366 289 z"/>
-<path style="fill:#909090" d="M381 289 L380 288 L381 289 z"/>
-<path style="fill:#606060" d="M225 290 L224 289 L225 290 z"/>
-<path style="fill:#808080" d="M389 289 C389 289.7 389.2 291.2 388 291 C388 290.3 387.8 288.8 389 289 z"/>
-<path style="fill:#a0a0a0" d="M228 291 L227 290 L228 291 z"/>
-<path style="fill:#606060" d="M369 291 L368 290 L369 291 z"/>
-<path style="fill:#808080" d="M384 291 L383 290 L384 291 z"/>
-<path style="fill:#606060" d="M221 291 L220 292 L221 291 z"/>
-<path style="fill:#808080" d="M230 292 L229 291 L230 292 z"/>
-<path style="fill:#a0a0a0" d="M220 292 L219 293 L220 292 z"/>
-<path style="fill:#606060" d="M232 293 L231 292 L232 293 z"/>
-<path style="fill:#606060" d="M388 292 C388.2 293.3 385.8 293.3 386 292 L388 292 z"/>
-<path style="fill:#a0a0a0" d="M235 294 L234 293 L235 294 z"/>
-<path style="fill:#a0a0a0" d="M373 294 L372 293 L373 294 z"/>
-<path style="fill:#808080" d="M237 295 L236 294 L237 295 z"/>
-<path style="fill:#606060" d="M239 296 L238 295 L239 296 z"/>
-<path style="fill:#606060" d="M217 296 L216 297 L217 296 z"/>
-<path style="fill:#a0a0a0" d="M242 297 L241 296 L242 297 z"/>
-<path style="fill:#808080" d="M378 297 L377 296 L378 297 z"/>
-<path style="fill:#909090" d="M216 297 L215 298 L216 297 z"/>
-<path style="fill:#808080" d="M244 298 L243 297 L244 298 z"/>
-<path style="fill:#606060" d="M380 298 L379 297 L380 298 z"/>
-<path style="fill:#606060" d="M246 299 L245 298 L246 299 z"/>
-<path style="fill:#a0a0a0" d="M249 300 L248 299 L249 300 z"/>
-<path style="fill:#808080" d="M251 301 L250 300 L251 301 z"/>
-<path style="fill:#606060" d="M253 302 L252 301 L253 302 z"/>
-<path style="fill:#707070" d="M212 302 L211 303 L212 302 z"/>
-<path style="fill:#a0a0a0" d="M256 303 L255 302 L256 303 z"/>
-<path style="fill:#808080" d="M385 302 L384 303 L385 302 z"/>
-<path style="fill:#a0a0a0" d="M211 303 L210 304 L211 303 z"/>
-<path style="fill:#808080" d="M258 304 L257 303 L258 304 z"/>
-<path style="fill:#606060" d="M260 305 L259 304 L260 305 z"/>
-<path style="fill:#909090" d="M265 307 L264 306 L265 307 z"/>
-<path style="fill:#606060" d="M208 307 L207 308 L208 307 z"/>
-<path style="fill:#606060" d="M267 308 L266 307 L267 308 z"/>
-<path style="fill:#909090" d="M383 307 L382 308 L383 307 z"/>
-<path style="fill:#909090" d="M207 308 L206 309 L207 308 z"/>
-<path style="fill:#909090" d="M272 310 L271 309 L272 310 z"/>
-<path style="fill:#606060" d="M274 311 L273 310 L274 311 z"/>
-<path style="fill:#606060" d="M382 310 L381 311 L382 310 z"/>
-<path style="fill:#909090" d="M279 313 L278 312 L279 313 z"/>
-<path style="fill:#909090" d="M381 312 L380 313 L381 312 z"/>
-<path style="fill:#707070" d="M203 313 L202 314 L203 313 z"/>
-<path style="fill:#606060" d="M281 314 L280 313 L281 314 z"/>
-<path style="fill:#a0a0a0" d="M202 314 L201 315 L202 314 z"/>
-<path style="fill:#a0a0a0" d="M286 316 L285 315 L286 316 z"/>
-<path style="fill:#707070" d="M288 317 L287 316 L288 317 z"/>
-<path style="fill:#707070" d="M379 317 L378 318 L379 317 z"/>
-<path style="fill:#606060" d="M199 318 L198 319 L199 318 z"/>
-<path style="fill:#a0a0a0" d="M293 319 L292 318 L293 319 z"/>
-<path style="fill:#909090" d="M198 319 L197 320 L198 319 z"/>
-<path style="fill:#707070" d="M295 320 L294 319 L295 320 z"/>
-<path style="fill:#a0a0a0" d="M378 319 L377 320 L378 319 z"/>
-<path style="fill:#a0a0a0" d="M300 322 L299 321 L300 322 z"/>
-<path style="fill:#707070" d="M302 323 L301 322 L302 323 z"/>
-<path style="fill:#606060" d="M377 322 L376 323 L377 322 z"/>
-<path style="fill:#707070" d="M194 324 L193 325 L194 324 z"/>
-<path style="fill:#a0a0a0" d="M307 325 L306 324 L307 325 z"/>
-<path style="fill:#707070" d="M376 324 L375 325 L376 324 z"/>
-<path style="fill:#a0a0a0" d="M193 325 L192 326 L193 325 z"/>
-<path style="fill:#707070" d="M309 326 L308 325 L309 326 z"/>
-<path style="fill:#808080" d="M375 326 L374 327 L375 326 z"/>
-<path style="fill:#a0a0a0" d="M314 328 L313 327 L314 328 z"/>
-<path style="fill:#808080" d="M316 329 L315 328 L316 329 z"/>
-<path style="fill:#a0a0a0" d="M374 328 L373 329 L374 328 z"/>
-<path style="fill:#606060" d="M190 329 L189 330 L190 329 z"/>
-<path style="fill:#606060" d="M318 330 L317 329 L318 330 z"/>
-<path style="fill:#909090" d="M189 330 L188 331 L189 330 z"/>
-<path style="fill:#a0a0a0" d="M321 331 L320 330 L321 331 z"/>
-<path style="fill:#808080" d="M323 332 L322 331 L323 332 z"/>
-<path style="fill:#606060" d="M325 333 L324 332 L325 333 z"/>
-<path style="fill:#a0a0a0" d="M328 334 L327 333 L328 334 z"/>
-<path style="fill:#808080" d="M330 335 L329 334 L330 335 z"/>
-<path style="fill:#707070" d="M185 335 L184 336 L185 335 z"/>
-<path style="fill:#606060" d="M332 336 L331 335 L332 336 z"/>
-<path style="fill:#a0a0a0" d="M184 336 L183 337 L184 336 z"/>
-<path style="fill:#a0a0a0" d="M335 337 L334 336 L335 337 z"/>
-<path style="fill:#808080" d="M337 338 L336 337 L337 338 z"/>
-<path style="fill:#606060" d="M339 339 L338 338 L339 339 z"/>
-<path style="fill:#a0a0a0" d="M342 340 L341 339 L342 340 z"/>
-<path style="fill:#606060" d="M181 340 L180 341 L181 340 z"/>
-<path style="fill:#808080" d="M344 341 L343 340 L344 341 z"/>
-<path style="fill:#a0a0a0" d="M368 340 L367 341 L368 340 z"/>
-<path style="fill:#a0a0a0" d="M180 341 L179 342 L180 341 z"/>
-<path style="fill:#606060" d="M346 342 L345 341 L346 342 z"/>
-<path style="fill:#a0a0a0" d="M349 343 L348 342 L349 343 z"/>
-<path style="fill:#707070" d="M367 342 L366 343 L367 342 z"/>
-<path style="fill:#808080" d="M351 344 L350 343 L351 344 z"/>
-<path style="fill:#606060" d="M353 345 L352 344 L353 345 z"/>
-<path style="fill:#a0a0a0" d="M356 346 L355 345 L356 346 z"/>
-<path style="fill:#808080" d="M365 345 L364 346 L365 345 z"/>
-<path style="fill:#808080" d="M176 346 L175 347 L176 346 z"/>
-<path style="fill:#808080" d="M358 347 L357 346 L358 347 z"/>
-<path style="fill:#a0a0a0" d="M175 347 L174 348 L175 347 z"/>
-<path style="fill:#606060" d="M360 348 L359 347 L360 348 z"/>
-<path style="fill:#606060" d="M172 351 L171 352 L172 351 z"/>
-<path style="fill:#a0a0a0" d="M171 352 L170 353 L171 352 z"/>
-<path style="fill:#808080" d="M167 357 L166 358 L167 357 z"/>
-<path style="fill:#a0a0a0" d="M166 358 L165 359 L166 358 z"/>
-<path style="fill:#a8a8a8" d="M460 358 C460 358.7 460.2 360.2 459 360 L459 358 L460 358 z"/>
-<path style="fill:#606060" d="M459 361 L458 362 L459 361 z"/>
-<path style="fill:#606060" d="M163 362 L162 363 L163 362 z"/>
-<path style="fill:#a0a0a0" d="M162 363 L161 364 L162 363 z"/>
-<path style="fill:#606060" d="M159 367 L158 368 L159 367 z"/>
-<path style="fill:#808080" d="M158 368 L157 369 L158 368 z"/>
-<path style="fill:#a0a0a0" d="M455 368 L454 369 L455 368 z"/>
-<path style="fill:#808080" d="M454 369 L453 370 L454 369 z"/>
-<path style="fill:#a0a0a0" d="M453 370 L452 371 L453 370 z"/>
-<path style="fill:#707070" d="M450 372 L449 373 L450 372 z"/>
-<path style="fill:#606060" d="M154 373 L153 374 L154 373 z"/>
-<path style="fill:#606060" d="M448 373 L447 374 L448 373 z"/>
-<path style="fill:#808080" d="M153 374 L441 375 C347.2 376 242.5 378 153 374 z"/>
-<path style="fill:#787878" d="M446 374 C446.2 375.2 444.7 375 444 375 C443.8 373.8 445.3 374 446 374 z"/>
-<path style="fill:#404040" d="M462 387 L462 388 L452 388 L462 387 z"/>
-<path style="fill:#909090" d="M462 389 L462 388 L462 387 C463.3 386.8 463.3 389.2 462 389 z"/>
-<path style="fill:#0d0e0e" d="M467 389 L468 390 L468 392 L469 393 L469 395 L470 396 L470 397 L471 399 L471 400 L469 400 L469 399 L468 398 L468 396 L467 395 L467 392 C463.7 387.1 465.4 397.8 465 400 L464 400 C464.1 396.7 462.8 382.8 467 389 z"/>
-<path style="fill:#080808" d="M476 387 L475 400 L474 392 L473 391 L473 389 L474 388 C473.8 386.8 475.3 387 476 387 z"/>
-<path style="fill:#868686" d="M475 400 L476 387 C477.4 389.3 478.4 401.9 475 400 z"/>
-<path style="fill:#0" d="M462 388 L462 389 L459 389 L458 400 L457 400 L456 389 L452 388 L462 388 z"/>
-<path style="fill:#909090" d="M474 388 L473 389 L474 388 z"/>
-<path style="fill:#404040" d="M457 400 L456 400 L456 389 L457 400 z"/>
-<path style="fill:#c0c0c0" d="M459 389 L458 400 L459 389 z"/>
-<path style="fill:#909090" d="M468 390 L467 389 L468 390 z"/>
-<path style="fill:#3b3c3c" d="M467 392 L466 400 L465 400 C465.4 397.8 463.7 387.1 467 392 z"/>
-<path style="fill:#2c2c2c" d="M473 391 L474 392 L473 394 L473 396 L472 397 L472 399 L471 399 L470 397 L473 391 z"/>
-<path style="fill:#7e7e7e" d="M475 400 L473 394 L474 392 L475 400 z"/>
-<path style="fill:#909090" d="M469 393 L468 392 L469 393 z"/>
-<path style="fill:#909090" d="M468 396 L467 395 L468 396 z"/>
-<path style="fill:#909090" d="M470 396 L469 395 L470 396 z"/>
-<path style="fill:#909090" d="M473 396 L472 397 L473 396 z"/>
-<path style="fill:#888888" d="M166 397 C166.2 398.2 164.7 398 164 398 C163.8 396.8 165.3 397 166 397 z"/>
-<path style="fill:#0" d="M175 397 C174.8 398.2 176.3 398 177 398 L179 398 L180 399 L183 400 L184 401 L185 402 L186 403 L187 404 L188 406 C187.6 407.1 189.4 407.1 189 406 L190 405 L191 404 L192 403 L195 401 L196 400 L202 398 C202.7 398 204.2 398.2 204 397 L211 397 C211.1 398.6 213.1 397.8 214 398 L217 398 L218 399 L219 399 L220 400 L222 401 L223 402 L224 403 L225 405 L226 406 L226 407 L227 408 L227 409 C227 409.7 226.8 411.2 228 411 L228 414 L228 457 L206.3 456.8 L206 421 C206 420.3 206.2 418.8 205 419 L204 417 L203 416 L202 416 L201 415 L196 415 L195 416 C193.5 416.7 191.7 418.1 192 420 L191 421 L191 422 L190 457 L168 457 L168 421 C168 420.3 168.2 418.8 167 419 L166 417 L165 416 C163 414.4 160.4 415.1 158 415 L157 416 L154 419 L153 420 L153 421 C151.8 420.8 152 422.3 152 423 L152 457 L130 457 L130 399 L150 399 C150.1 400.8 149.1 408.1 152 405 L153 404 L154 403 L155 402 L157 401 L158 400 L164 398 C164.7 398 166.2 398.2 166 397 L175 397 z"/>
-<path style="fill:#707070" d="M177 398 C176.3 398 174.8 398.2 175 397 C175.7 397 177.2 396.8 177 398 z"/>
-<path style="fill:#808080" d="M204 397 C204.2 398.2 202.7 398 202 398 C201.8 396.8 203.3 397 204 397 z"/>
-<path style="fill:#4a4b4b" d="M214 398 C213.1 397.8 211.1 398.6 211 397 C211.9 397.2 213.9 396.4 214 398 z"/>
-<path style="fill:#696a6a" d="M269 397 L264 398 L269 397 z"/>
-<path style="fill:#010101" d="M276 397 L280 398 L282 398 L284 398 C283.8 399.2 285.3 399 286 399 L287 399 L288 400 L290 400 L291 401 L296 404 L297 405 L298 406 L299 407 L300 408 L303 413 L304 414 L304 416 L305 417 L305 419 C305 419.7 304.8 421.2 306 421 L306 424 L306 432 L306 434 C304.8 433.8 305 435.3 305 436 L305 438 L304 439 L304 441 L303 442 L300 447 L299 448 L298 449 L297 450 L296 451 L293 453 L292 454 L291 454 L290 455 L289 455 L288 456 L282 457 C281.1 457.2 279.1 456.4 279 458 L276 458 L269 458 L265 458 C265.2 456.8 263.7 457 263 457 L261 457 C261.2 455.8 259.7 456 259 456 L258 456 L257 455 L252 453 L251 452 L245 446 L244 445 L243 443 L242 442 L242 441 L241 440 L241 439 C241 438.3 241.2 436.8 240 437 L240 435 C240 434.3 240.2 432.8 239 433 L239 423 C240.2 423.2 240 421.7 240 421 L240 419 C241.2 419.2 241 417.7 241 417 C241.3 414 243.4 411.5 245 409 L246 408 L249 405 L250 404 L251 403 L253 402 L254 401 L255 401 L256 400 L257 400 L258 399 L260 399 C260.7 399 262.2 399.2 262 398 L264 398 L269 397 L276 397 z"/>
-<path style="fill:#545454" d="M280 397 L280 398 L276 397 L280 397 z"/>
-<path style="fill:#b0b0b0" d="M282 398 L280 398 L280 397 C280.7 397 282.2 396.8 282 398 z"/>
-<path style="fill:#909090" d="M354 397 C354.2 398.2 352.7 398 352 398 C351.8 396.8 353.3 397 354 397 z"/>
-<path style="fill:#0" d="M364 397 C363.8 398.2 365.3 398 366 398 L367 398 L368 399 L369 399 L370 400 L372 401 L373 402 L374 403 L375 404 L377 409 C377 409.7 376.8 411.2 378 411 L378 412 L378 416 L378 457 L356.3 456.8 L356 421 C356 420.3 356.2 418.8 355 419 L355 418 L354 417 L353 416 C350.4 414.5 346.6 414.5 344 416 L343 417 L342 418 L341 419 L341 420 C339.8 419.8 340 421.3 340 422 L340 423 L339 457 L317 457 L317 399 L338 399 L339 406 L340 405 L341 404 L342 403 L345 401 L346 400 L347 400 L348 399 L349 399 L350 398 L352 398 C352.7 398 354.2 398.2 354 397 L364 397 z"/>
-<path style="fill:#b0b0b0" d="M366 398 C365.3 398 363.8 398.2 364 397 C364.7 397 366.2 396.8 366 398 z"/>
-<path style="fill:#696a6a" d="M419 397 L414 398 L419 397 z"/>
-<path style="fill:#010101" d="M426 397 L431 398 L434 398 C433.8 399.2 435.3 399 436 399 L437 399 L438 400 L440 400 L441 401 L446 404 L447 405 L448 406 L449 407 L450 408 L453 413 L454 414 L454 416 L455 417 L455 418 C455 418.7 454.8 420.2 456 420 L456 426 L456 432 L456 435 C454.8 434.8 455 436.3 455 437 L455 438 C453.8 437.8 454 439.3 454 440 L454 441 L453 442 L450 447 L449 448 L448 449 L447 450 L446 451 L445 452 L443 453 L442 454 L441 454 L440 455 L439 455 L438 456 L437 456 C436.3 456 434.8 455.8 435 457 L432 457 C431.1 457.2 429.1 456.4 429 458 L426 458 L419 458 L415 458 C415.2 456.8 413.7 457 413 457 L411 457 C411.2 455.8 409.7 456 409 456 L408 456 L407 455 L402 453 L401 452 L395 446 L394 445 L393 443 L392 442 L392 441 L391 440 L391 438 L390 437 L390 434 L389 430 L389 423 C390.2 423.2 390 421.7 390 421 L390 419 C391.2 419.2 391 417.7 391 417 L391 416 L392 415 L393 412 L394 411 L395 409 L396 408 L397 407 L398 406 L399 405 L400 404 L401 403 L403 402 L404 401 L405 401 L406 400 L407 400 C407.7 400 409.2 400.2 409 399 L410 399 C410.7 399 412.2 399.2 412 398 L414 398 L419 397 L426 397 z"/>
-<path style="fill:#606060" d="M431 398 L426 397 L431 398 z"/>
-<path style="fill:#808181" d="M130 398 L130 399 L130 457 C128.3 438.7 128.3 416.3 130 398 z"/>
-<path style="fill:#404040" d="M150 398 L150 399 L130 399 L130 398 L150 398 z"/>
-<path style="fill:#878787" d="M152 405 C149.1 408.1 150.1 400.8 150 399 L150 398 L152 405 z"/>
-<path style="fill:#606060" d="M180 399 L179 398 L180 399 z"/>
-<path style="fill:#909090" d="M218 399 L217 398 L218 399 z"/>
-<path style="fill:#787878" d="M262 398 C262.2 399.2 260.7 399 260 399 C259.8 397.8 261.3 398 262 398 z"/>
-<path style="fill:#909090" d="M286 399 C285.3 399 283.8 399.2 284 398 C284.7 398 286.2 397.8 286 399 z"/>
-<path style="fill:#c0c0c0" d="M317 398 L317 399 L317 457 C315.3 438.7 315.3 416.3 317 398 z"/>
-<path style="fill:#404040" d="M338 399 L317 399 L317 398 L338 399 z"/>
-<path style="fill:#707070" d="M350 398 L349 399 L350 398 z"/>
-<path style="fill:#808080" d="M368 399 L367 398 L368 399 z"/>
-<path style="fill:#787878" d="M412 398 C412.2 399.2 410.7 399 410 399 C409.8 397.8 411.3 398 412 398 z"/>
-<path style="fill:#909090" d="M436 399 C435.3 399 433.8 399.2 434 398 C434.7 398 436.2 397.8 436 399 z"/>
-<path style="fill:#a0a0a0" d="M469 399 L468 398 L469 399 z"/>
-<path style="fill:#808080" d="M220 400 L219 399 L220 400 z"/>
-<path style="fill:#a0a0a0" d="M258 399 L257 400 L258 399 z"/>
-<path style="fill:#606060" d="M288 400 L287 399 L288 400 z"/>
-<path style="fill:#606060" d="M348 399 L347 400 L348 399 z"/>
-<path style="fill:#707070" d="M370 400 L369 399 L370 400 z"/>
-<path style="fill:#787878" d="M409 399 C409.2 400.2 407.7 400 407 400 C406.8 398.8 408.3 399 409 399 z"/>
-<path style="fill:#606060" d="M438 400 L437 399 L438 400 z"/>
-<path style="fill:#a0a0a0" d="M472 399 L471 400 L471 399 L472 399 z"/>
-<path style="fill:#707070" d="M158 400 L157 401 L158 400 z"/>
-<path style="fill:#a0a0a0" d="M184 401 L183 400 L184 401 z"/>
-<path style="fill:#808080" d="M196 400 L195 401 L196 400 z"/>
-<path style="fill:#808080" d="M256 400 L255 401 L256 400 z"/>
-<path style="fill:#a0a0a0" d="M291 401 L290 400 L291 401 z"/>
-<path style="fill:#808080" d="M346 400 L345 401 L346 400 z"/>
-<path style="fill:#808080" d="M406 400 L405 401 L406 400 z"/>
-<path style="fill:#a0a0a0" d="M441 401 L440 400 L441 401 z"/>
-<path style="fill:#909090" d="M457 400 L458 400 C458.2 401.3 455.8 401.3 456 400 L457 400 z"/>
-<path style="fill:#909090" d="M465 400 L466 400 C466.2 401.3 463.8 401.3 464 400 L465 400 z"/>
-<path style="fill:#909090" d="M471 400 C471.2 401.3 468.8 401.3 469 400 L471 400 z"/>
-<path style="fill:#808080" d="M185 402 L184 401 L185 402 z"/>
-<path style="fill:#a0a0a0" d="M223 402 L222 401 L223 402 z"/>
-<path style="fill:#909090" d="M254 401 L253 402 L254 401 z"/>
-<path style="fill:#a0a0a0" d="M373 402 L372 401 L373 402 z"/>
-<path style="fill:#a0a0a0" d="M404 401 L403 402 L404 401 z"/>
-<path style="fill:#a0a0a0" d="M155 402 L154 403 L155 402 z"/>
-<path style="fill:#808080" d="M186 403 L185 402 L186 403 z"/>
-<path style="fill:#a0a0a0" d="M224 403 L223 402 L224 403 z"/>
-<path style="fill:#808080" d="M374 403 L373 402 L374 403 z"/>
-<path style="fill:#a0a0a0" d="M154 403 L153 404 L154 403 z"/>
-<path style="fill:#a0a0a0" d="M187 404 L186 403 L187 404 z"/>
-<path style="fill:#a0a0a0" d="M192 403 L191 404 L192 403 z"/>
-<path style="fill:#909090" d="M251 403 L250 404 L251 403 z"/>
-<path style="fill:#a0a0a0" d="M342 403 L341 404 L342 403 z"/>
-<path style="fill:#a0a0a0" d="M375 404 L374 403 L375 404 z"/>
-<path style="fill:#a0a0a0" d="M401 403 L400 404 L401 403 z"/>
-<path style="fill:#a0a0a0" d="M153 404 L152 405 L153 404 z"/>
-<path style="fill:#a0a0a0" d="M191 404 L190 405 L191 404 z"/>
-<path style="fill:#606060" d="M250 404 L249 405 L250 404 z"/>
-<path style="fill:#a0a0a0" d="M297 405 L296 404 L297 405 z"/>
-<path style="fill:#a0a0a0" d="M341 404 L340 405 L341 404 z"/>
-<path style="fill:#606060" d="M400 404 L399 405 L400 404 z"/>
-<path style="fill:#909090" d="M447 405 L446 404 L447 405 z"/>
-<path style="fill:#a0a0a0" d="M190 405 L189 406 L190 405 z"/>
-<path style="fill:#606060" d="M226 406 L225 405 L226 406 z"/>
-<path style="fill:#808080" d="M298 406 L297 405 L298 406 z"/>
-<path style="fill:#a0a0a0" d="M340 405 L339 406 L340 405 z"/>
-<path style="fill:#606060" d="M399 405 L398 406 L399 405 z"/>
-<path style="fill:#606060" d="M448 406 L447 405 L448 406 z"/>
-<path style="fill:#606060" d="M189 406 C189.4 407.1 187.6 407.1 188 406 L189 406 z"/>
-<path style="fill:#808080" d="M299 407 L298 406 L299 407 z"/>
-<path style="fill:#606060" d="M398 406 L397 407 L398 406 z"/>
-<path style="fill:#606060" d="M449 407 L448 406 L449 407 z"/>
-<path style="fill:#606060" d="M227 408 L226 407 L227 408 z"/>
-<path style="fill:#a0a0a0" d="M300 408 L299 407 L300 408 z"/>
-<path style="fill:#606060" d="M397 407 L396 408 L397 407 z"/>
-<path style="fill:#909090" d="M450 408 L449 407 L450 408 z"/>
-<path style="fill:#707070" d="M246 408 L245 409 L246 408 z"/>
-<path style="fill:#808080" d="M396 408 L395 409 L396 408 z"/>
-<path style="fill:#787878" d="M228 411 C226.8 411.2 227 409.7 227 409 C228.2 408.8 228 410.3 228 411 z"/>
-<path style="fill:#686868" d="M378 411 C376.8 411.2 377 409.7 377 409 C378.2 408.8 378 410.3 378 411 z"/>
-<path style="fill:#606060" d="M394 411 L393 412 L394 411 z"/>
-<path style="fill:#909090" d="M379 416 L378 416 L378 412 L379 416 z"/>
-<path style="fill:#606060" d="M269 413 L268 414 L269 413 z"/>
-<path style="fill:#fdfefe" d="M276 413 L277 414 L278 414 L279 415 L280 416 L281 417 L282 419 C282 419.7 281.8 421.2 283 421 L283 423 L283 432 L283 435 L282 436 L282 437 L281 438 L278 441 L277 442 L276 442 L270 442 L268 442 L267 441 L265 439 L264 438 L263 435 L262 434 L262 431 L262 425 L262 422 C263.2 422.2 263 420.7 263 420 L263 419 L264 418 L268 414 L269 413 L276 413 z"/>
-<path style="fill:#a0a0a0" d="M277 414 L276 413 L277 414 z"/>
-<path style="fill:#a0a0a0" d="M304 414 L303 413 L304 414 z"/>
-<path style="fill:#606060" d="M419 413 L418 414 L419 413 z"/>
-<path style="fill:#fdfdfd" d="M426 413 L427 414 L428 414 L429 415 L430 416 L431 417 L432 418 L432 419 L433 420 L433 423 L433 432 L433 435 L432 436 L431 439 L430 440 L429 441 L426 442 L425 443 L421 443 C421.2 441.8 419.7 442 419 442 L417 441 L416 440 L415 439 L414 438 L413 435 C413 434.3 413.2 432.8 412 433 L412 423 C413.2 423.2 413 421.7 413 421 L413 419 L414 418 L418 414 L419 413 L426 413 z"/>
-<path style="fill:#a0a0a0" d="M427 414 L426 413 L427 414 z"/>
-<path style="fill:#a0a0a0" d="M454 414 L453 413 L454 414 z"/>
-<path style="fill:#434343" d="M228 457 L228 414 C229.7 427 229.7 444 228 457 z"/>
-<path style="fill:#808080" d="M279 415 L278 414 L279 415 z"/>
-<path style="fill:#909090" d="M429 415 L428 414 L429 415 z"/>
-<path style="fill:#a0a0a0" d="M158 415 L157 416 L158 415 z"/>
-<path style="fill:#606060" d="M196 415 L195 416 L196 415 z"/>
-<path style="fill:#a0a0a0" d="M202 416 L201 415 L202 416 z"/>
-<path style="fill:#a0a0a0" d="M280 416 L279 415 L280 416 z"/>
-<path style="fill:#606060" d="M392 415 L391 416 L392 415 z"/>
-<path style="fill:#606060" d="M166 417 L165 416 L166 417 z"/>
-<path style="fill:#606060" d="M204 417 L203 416 L204 417 z"/>
-<path style="fill:#a0a0a0" d="M281 417 L280 416 L281 417 z"/>
-<path style="fill:#606060" d="M305 417 L304 416 L305 417 z"/>
-<path style="fill:#a0a0a0" d="M344 416 L343 417 L344 416 z"/>
-<path style="fill:#808080" d="M354 417 L353 416 L354 417 z"/>
-<path style="fill:#404040" d="M379 416 L378 457 L378 416 L379 416 z"/>
-<path style="fill:#a0a0a0" d="M431 417 L430 416 L431 417 z"/>
-<path style="fill:#606060" d="M455 417 L454 416 L455 417 z"/>
-<path style="fill:#686868" d="M241 417 C241 417.7 241.2 419.2 240 419 C240 418.3 239.8 416.8 241 417 z"/>
-<path style="fill:#a0a0a0" d="M343 417 L342 418 L343 417 z"/>
-<path style="fill:#707070" d="M355 418 L354 417 L355 418 z"/>
-<path style="fill:#787878" d="M391 417 C391 417.7 391.2 419.2 390 419 C390 418.3 389.8 416.8 391 417 z"/>
-<path style="fill:#707070" d="M432 418 L431 417 L432 418 z"/>
-<path style="fill:#808080" d="M264 418 L263 419 L264 418 z"/>
-<path style="fill:#808080" d="M342 418 L341 419 L342 418 z"/>
-<path style="fill:#606060" d="M414 418 L413 419 L414 418 z"/>
-<path style="fill:#989898" d="M456 420 C454.8 420.2 455 418.7 455 418 C456.2 417.8 456 419.3 456 420 z"/>
-<path style="fill:#808080" d="M154 419 L153 420 L154 419 z"/>
-<path style="fill:#686868" d="M168 421 L167 421 L167 419 C168.2 418.8 168 420.3 168 421 z"/>
-<path style="fill:#989898" d="M206 421 C204.8 421.2 205 419.7 205 419 C206.2 418.8 206 420.3 206 421 z"/>
-<path style="fill:#888888" d="M283 421 C281.8 421.2 282 419.7 282 419 C283.2 418.8 283 420.3 283 421 z"/>
-<path style="fill:#686868" d="M306 421 C304.8 421.2 305 419.7 305 419 C306.2 418.8 306 420.3 306 421 z"/>
-<path style="fill:#888888" d="M356 421 C354.8 421.2 355 419.7 355 419 C356.2 418.8 356 420.3 356 421 z"/>
-<path style="fill:#606060" d="M433 420 L432 419 L433 420 z"/>
-<path style="fill:#a0a0a0" d="M192 420 L191 421 L192 420 z"/>
-<path style="fill:#707070" d="M263 420 C263 420.7 263.2 422.2 262 422 C262 421.3 261.8 419.8 263 420 z"/>
-<path style="fill:#989898" d="M341 420 C341 420.7 341.2 422.2 340 422 C340 421.3 339.8 419.8 341 420 z"/>
-<path style="fill:#606060" d="M153 421 L153 423 L152 423 C152 422.3 151.8 420.8 153 421 z"/>
-<path style="fill:#bfc0c0" d="M168 421 L168 457 L167 421 L168 421 z"/>
-<path style="fill:#707070" d="M240 421 C240 421.7 240.2 423.2 239 423 C239 422.3 238.8 420.8 240 421 z"/>
-<path style="fill:#909090" d="M390 421 C390 421.7 390.2 423.2 389 423 C389 422.3 388.8 420.8 390 421 z"/>
-<path style="fill:#a0a0a0" d="M413 421 C413 421.7 413.2 423.2 412 423 C412 422.3 411.8 420.8 413 421 z"/>
-<path style="fill:#7c7c7c" d="M191 422 L190 457 L191 422 z"/>
-<path style="fill:#bfbfbf" d="M153 423 L152 457 L152 423 L153 423 z"/>
-<path style="fill:#888989" d="M283 432 L283 423 C284.7 424.7 284.7 430.3 283 432 z"/>
-<path style="fill:#7c7d7d" d="M340 423 L339 457 L340 423 z"/>
-<path style="fill:#a1a2a2" d="M433 432 L433 423 C434.7 424.7 434.7 430.3 433 432 z"/>
-<path style="fill:#c4c4c4" d="M306 432 L306 424 C307.6 425.3 307.6 430.7 306 432 z"/>
-<path style="fill:#404040" d="M262 425 L262 431 C260.4 430.3 260.4 425.7 262 425 z"/>
-<path style="fill:#a0a0a0" d="M456 432 L456 426 C457.6 426.7 457.6 431.3 456 432 z"/>
-<path style="fill:#585858" d="M390 434 L389 430 L390 434 z"/>
-<path style="fill:#909090" d="M240 435 C238.8 435.2 239 433.7 239 433 C240.2 432.8 240 434.3 240 435 z"/>
-<path style="fill:#808080" d="M413 435 C411.8 435.2 412 433.7 412 433 C413.2 432.8 413 434.3 413 435 z"/>
-<path style="fill:#707070" d="M263 435 L262 434 L263 435 z"/>
-<path style="fill:#707070" d="M306 434 C306 434.7 306.2 436.2 305 436 C305 435.3 304.8 433.8 306 434 z"/>
-<path style="fill:#909090" d="M283 435 L282 436 L283 435 z"/>
-<path style="fill:#a0a0a0" d="M433 435 L432 436 L433 435 z"/>
-<path style="fill:#989898" d="M456 435 C456 435.7 456.2 437.2 455 437 C455 436.3 454.8 434.8 456 435 z"/>
-<path style="fill:#888888" d="M241 439 C239.8 439.2 240 437.7 240 437 C241.2 436.8 241 438.3 241 439 z"/>
-<path style="fill:#a0a0a0" d="M282 437 L281 438 L282 437 z"/>
-<path style="fill:#707070" d="M391 438 L390 437 L391 438 z"/>
-<path style="fill:#909090" d="M265 439 L264 438 L265 439 z"/>
-<path style="fill:#606060" d="M305 438 L304 439 L305 438 z"/>
-<path style="fill:#909090" d="M415 439 L414 438 L415 439 z"/>
-<path style="fill:#888888" d="M455 438 C455 438.7 455.2 440.2 454 440 C454 439.3 453.8 437.8 455 438 z"/>
-<path style="fill:#a0a0a0" d="M416 440 L415 439 L416 440 z"/>
-<path style="fill:#606060" d="M431 439 L430 440 L431 439 z"/>
-<path style="fill:#808080" d="M242 441 L241 440 L242 441 z"/>
-<path style="fill:#a0a0a0" d="M392 441 L391 440 L392 441 z"/>
-<path style="fill:#a0a0a0" d="M417 441 L416 440 L417 441 z"/>
-<path style="fill:#606060" d="M430 440 L429 441 L430 440 z"/>
-<path style="fill:#606060" d="M268 442 L267 441 L268 442 z"/>
-<path style="fill:#a0a0a0" d="M278 441 L277 442 L278 441 z"/>
-<path style="fill:#a0a0a0" d="M304 441 L303 442 L304 441 z"/>
-<path style="fill:#a0a0a0" d="M454 441 L453 442 L454 441 z"/>
-<path style="fill:#808080" d="M243 443 L242 442 L243 443 z"/>
-<path style="fill:#aaabab" d="M276 442 C275.3 443.6 270.7 443.6 270 442 L276 442 z"/>
-<path style="fill:#909090" d="M393 443 L392 442 L393 443 z"/>
-<path style="fill:#707070" d="M421 443 C420.3 443 418.8 443.2 419 442 C419.7 442 421.2 441.8 421 443 z"/>
-<path style="fill:#808080" d="M426 442 L425 443 L426 442 z"/>
-<path style="fill:#707070" d="M245 446 L244 445 L245 446 z"/>
-<path style="fill:#707070" d="M395 446 L394 445 L395 446 z"/>
-<path style="fill:#a0a0a0" d="M300 447 L299 448 L300 447 z"/>
-<path style="fill:#909090" d="M450 447 L449 448 L450 447 z"/>
-<path style="fill:#707070" d="M299 448 L298 449 L299 448 z"/>
-<path style="fill:#606060" d="M449 448 L448 449 L449 448 z"/>
-<path style="fill:#606060" d="M298 449 L297 450 L298 449 z"/>
-<path style="fill:#606060" d="M448 449 L447 450 L448 449 z"/>
-<path style="fill:#a0a0a0" d="M297 450 L296 451 L297 450 z"/>
-<path style="fill:#808080" d="M447 450 L446 451 L447 450 z"/>
-<path style="fill:#a0a0a0" d="M446 451 L445 452 L446 451 z"/>
-<path style="fill:#909090" d="M252 453 L251 452 L252 453 z"/>
-<path style="fill:#909090" d="M402 453 L401 452 L402 453 z"/>
-<path style="fill:#a0a0a0" d="M293 453 L292 454 L293 453 z"/>
-<path style="fill:#909090" d="M443 453 L442 454 L443 453 z"/>
-<path style="fill:#808080" d="M291 454 L290 455 L291 454 z"/>
-<path style="fill:#808080" d="M441 454 L440 455 L441 454 z"/>
-<path style="fill:#606060" d="M258 456 L257 455 L258 456 z"/>
-<path style="fill:#a0a0a0" d="M289 455 L288 456 L289 455 z"/>
-<path style="fill:#606060" d="M408 456 L407 455 L408 456 z"/>
-<path style="fill:#909090" d="M439 455 L438 456 L439 455 z"/>
-<path style="fill:#787878" d="M261 457 C260.3 457 258.8 457.2 259 456 C259.7 456 261.2 455.8 261 457 z"/>
-<path style="fill:#808080" d="M411 457 C410.3 457 408.8 457.2 409 456 C409.7 456 411.2 455.8 411 457 z"/>
-<path style="fill:#a8a8a8" d="M437 456 C437.2 457.2 435.7 457 435 457 C434.8 455.8 436.3 456 437 456 z"/>
-<path style="fill:#888888" d="M265 458 C264.3 458 262.8 458.2 263 457 C263.7 457 265.2 456.8 265 458 z"/>
-<path style="fill:#606060" d="M282 457 C281.9 458.6 279.9 457.8 279 458 C279.1 456.4 281.1 457.2 282 457 z"/>
-<path style="fill:#888888" d="M415 458 C414.3 458 412.8 458.2 413 457 C413.7 457 415.2 456.8 415 458 z"/>
-<path style="fill:#606060" d="M432 457 C431.9 458.6 429.9 457.8 429 458 C429.1 456.4 431.1 457.2 432 457 z"/>
-<path style="fill:#c2c2c2" d="M276 458 C275 459.6 270 459.6 269 458 L276 458 z"/>
-<path style="fill:#c2c2c2" d="M426 458 C425 459.6 420 459.6 419 458 L426 458 z"/>
-</svg>
+<?xml version="1.0" standalone="yes"?>
+<svg width="600" height="523">
+<path style="fill:#feffff" d="M600 0 L600 523 L0 523 L0 0 L600 0 z"/>
+<path style="fill:#606060" d="M142 40 C142.2 41.18 140.7 41.02 140 41 C139.8 39.82 141.3 39.98 142 40 z"/>
+<path style="fill:#0" d="M442 40 C441.8 41.18 443.3 41.02 444 41 L446 41 L447 42 L450 43 L451 44 L456 49 L457 50 L457 51 L458 52 L458 53 L459 54 L459 56 L459 58 L459 358 L459 360 L459 361 L458 362 L455 368 L454 369 L453 370 L452 371 L450 372 L449 373 L448 373 L447 374 L446 374 C445.3 374 443.8 373.8 444 375 L441 375 L153 374 L154 373 L157 369 L158 368 L159 367 L161 364 L162 363 L163 362 L165 359 L166 358 L167 357 L170 353 L171 352 L172 351 L174 348 L175 347 L176 346 L179 342 L180 341 L181 340 L183 337 L184 336 L185 335 L188 331 L189 330 L190 329 L192 326 L193 325 L194 324 L197 320 L198 319 L199 318 L201 315 L202 314 L203 313 L206 309 L207 308 L208 307 L210 304 L211 303 L212 302 L215 298 L216 297 L217 296 L219 293 L220 292 L221 291 C221.3 289.7 222.7 288.7 224 289 L225 290 L227 290 L228 291 L229 291 L230 292 L231 292 L232 293 L234 293 L235 294 L236 294 L237 295 L238 295 L239 296 L241 296 L242 297 L243 297 L244 298 L245 298 L246 299 L248 299 L249 300 L250 300 L251 301 L252 301 L253 302 L255 302 L256 303 L257 303 L258 304 L259 304 L260 305 L264 306 L265 307 L266 307 L267 308 L271 309 L272 310 L273 310 L274 311 L278 312 L279 313 L280 313 L281 314 L285 315 L286 316 L287 316 L288 317 L292 318 L293 319 L294 319 L295 320 L299 321 L300 322 L301 322 L302 323 L306 324 L307 325 L308 325 L309 326 L313 327 L314 328 L315 328 L316 329 L317 329 L318 330 L320 330 L321 331 L322 331 L323 332 L324 332 L325 333 L327 333 L328 334 L329 334 L330 335 L331 335 L332 336 L334 336 L335 337 L336 337 L337 338 L338 338 L339 339 L341 339 L342 340 L343 340 L344 341 L345 341 L346 342 L348 342 L349 343 L350 343 L351 344 L352 344 L353 345 L355 345 L356 346 L357 346 L358 347 L359 347 L360 348 C361.6 348.3 363.7 347.9 364 346 L365 345 L366 343 L367 342 L367 341 L368 340 L373 329 L374 328 L374 327 L375 326 L375 325 L376 324 L376 323 L377 322 L377 320 L378 319 L378 318 L379 317 L380 313 L381 312 L381 311 L382 310 L382 308 L383 307 L384 303 L385 302 L380 298 L379 297 L378 297 L377 296 L373 294 L372 293 L369 291 L368 290 L366 289 L365 288 L364 287 L361 285 L360 284 L359 283 L345 269 L344 268 L343 267 L342 266 L340 263 L339 262 L337 259 L336 258 L331 250 L330 249 L329 247 L328 246 L328 245 L327 244 L324 238 L324 237 L327 240 L328 241 L330 244 L331 245 L332 246 L333 247 L337 252 L338 253 L339 254 L340 255 L341 256 L342 257 L343 258 L344 259 L345 260 L346 261 L347 262 L348 263 L349 264 L355 269 L356 270 L357 271 L358 272 L362 275 L363 276 L366 278 L367 279 L368 280 L370 281 L371 282 L372 283 L374 284 L375 285 L377 286 L378 287 L380 288 L381 289 L383 290 L384 291 L386 292 C385.8 293.3 388.2 293.3 388 292 L388 291 C389.2 291.2 389 289.7 389 289 L389 287 C390.2 287.2 390 285.7 390 285 L390 282 C391.2 282.2 391 280.7 391 280 L391 277 C392.6 276.9 391.8 274.9 392 274 L392 272 L393 267 L393 242 L392 237 L392 233 L391 229 L391 227 L391 225 C391 224.3 391.2 222.8 390 223 L390 220 C390 219.3 390.2 217.8 389 218 L389 215 C389 214.3 389.2 212.8 388 213 L388 211 C388 210.3 388.2 208.8 387 209 L387 207 C387 206.3 387.2 204.8 386 205 L386 204 C386 203.3 386.2 201.8 385 202 L385 200 C385 199.3 385.2 197.8 384 198 L384 197 C384 196.3 384.2 194.8 383 195 L383 193 L382 192 L382 190 L381 189 L381 187 L380 186 L380 185 L379 184 L379 182 L378 181 L377 180 L376 179 L368 177 L367 176 L365 176 C365.2 174.8 363.7 175 363 175 L362 175 C362.2 173.8 360.7 174 360 174 L358 174 L357 173 L356 173 C356.2 171.8 354.7 172 354 172 L349 171 L348 170 L346 170 C346.2 168.8 344.7 169 344 169 L343 169 L344 168 L347 168 C346.8 169.2 348.3 169 349 169 L351 169 C350.8 170.2 352.3 170 353 170 L357 170 C356.8 171.2 358.3 171 359 171 L360 171 C360.1 172.6 362.1 171.8 363 172 L367 172 C366.8 173.2 368.3 173 369 173 L373 173 C373.1 174.6 375.1 173.8 376 174 L378 174 L382 175 C385.8 174.6 391.3 176.6 393 172 L394 171 L394 169 L395 165 L395 159 L394 154 L394 151 C393.8 150.1 394.6 148.1 393 148 L393 145 L393 143 C393 142.3 393.2 140.8 392 141 L391 134 C391 133.3 391.2 131.8 390 132 L390 131 C390 130.3 390.2 128.8 389 129 L389 127 C389 126.3 389.2 124.8 388 125 L388 124 C388 123.3 388.2 121.8 387 122 L387 120 C387 119.3 387.2 117.8 386 118 L386 117 C386 116.3 386.2 114.8 385 115 L385 114 C385 113.3 385.2 111.8 384 112 L383 108 L382 107 L382 106 L381 105 L381 104 L380 103 L379 100 L378 99 L378 98 L377 97 L375 95 L374 94 L372 93 L371 92 L367 91 L366 90 L364 90 L363 89 L361 89 L360 88 L358 88 C358.2 86.82 356.7 86.98 356 87 L355 87 C355.2 85.82 353.7 85.98 353 86 L351 86 C351.2 84.82 349.7 84.98 349 85 L346 85 C346.2 83.82 344.7 83.98 344 84 L341 84 C341.2 82.82 339.7 82.98 339 83 L336 83 C336.2 81.82 334.7 81.98 334 82 L331 82 C331.2 80.82 329.7 80.98 329 81 L326 81 C325.9 79.41 323.9 80.19 323 80 L319 80 C318.9 78.41 316.9 79.19 316 79 L312 79 C311.9 77.41 309.9 78.19 309 78 L302 78 L297 77 L294 77 C293.9 75.41 291.9 76.19 291 76 L285 76 L281 76 L275 75 L264 76 L254 76 L250 77 L248 77 L246 77 C245.3 76.98 243.8 76.82 244 78 L242 78 C241.3 77.98 239.8 77.82 240 79 L238 79 C237.3 78.98 235.8 78.82 236 80 L235 80 C234.3 79.98 232.8 79.82 233 81 L232 81 L231 82 L229 82 L228 83 L227 83 L226 84 C224 84.21 226.2 85.56 227 85 C226.8 86.18 228.3 86.02 229 86 L234 86 C233.8 87.18 235.3 87.02 236 87 L238 87 C237.8 88.18 239.3 88.02 240 88 L243 88 C242.8 89.18 244.3 89.02 245 89 L248 89 C248.2 90.18 246.7 90.02 246 90 L242 90 L238 89 L232 89 C231.9 87.41 229.9 88.19 229 88 L225 88 L221 87 L217 87 L213 86 L211 86 L207 85 L203 85 L199 84 L195 84 L191 83 C187.6 82.2 184.4 83.9 183 87 L182 88 L181 89 L180 90 L178 93 L177 94 L176 96 L175 97 L174 99 L173 100 L173 101 L172 102 L172 103 L171 104 L171 105 L170 106 L170 108 C168.8 107.8 169 109.3 169 110 L169 112 C167.3 113.7 167.3 119.3 169 121 L169 123 L170 124 L170 126 L171 127 L171 128 L172 129 L173 131 L174 132 L176 135 L177 136 L178 137 L179 138 L180 139 L181 140 L182 141 L183 142 L184 143 L185 144 L188 146 L189 147 L190 148 L192 149 L193 150 L195 151 L196 152 L208 158 L209 159 L210 159 L211 160 L212 160 L213 161 L214 161 L215 162 L216 162 L217 163 L218 163 L217 164 L216 164 L215 164 L214 163 L210 162 L209 161 L208 161 L207 160 L205 160 L204 159 L203 159 L202 158 L200 158 L199 157 L198 157 L197 156 L196 156 L195 155 L193 155 L192 154 L188 154 C187.3 154 185.8 153.8 186 155 L185 155 C184.3 155 182.8 154.8 183 156 L181 156 C180.3 156 178.8 155.8 179 157 L177 157 C176.3 157 174.8 156.8 175 158 L174 158 C173.3 158 171.8 157.8 172 159 L170 159 C169.3 159 167.8 158.8 168 160 L167 160 C166.3 160 164.8 159.8 165 161 L163 161 C162.3 161 160.8 160.8 161 162 L160 162 C159.3 162 157.8 161.8 158 163 L156 163 C155.3 163 153.8 162.8 154 164 L152 164 C151.3 164 149.8 163.8 150 165 L149 165 C148.3 165 146.8 164.8 147 166 L145 166 C144.3 166 142.8 165.8 143 167 L141 167 C140.3 167 138.8 166.8 139 168 L138 168 C137.3 168 135.8 167.8 136 169 L134 169 C133.3 169 131.8 168.8 132 170 L131 170 C130.3 170 128.8 169.8 129 171 L126 171 L125 59 L125 56 L125 55 C126.2 55.15 126 53.66 126 53 L126 52 L127 51 L128 49 L129 48 L133 44 L134 43 L135 43 L136 42 L137 42 L138 41 L140 41 C140.7 41.02 142.2 41.18 142 40 L442 40 z"/>
+<path style="fill:#585858" d="M444 41 C443.3 41.02 441.8 41.18 442 40 C442.7 39.98 444.2 39.82 444 41 z"/>
+<path style="fill:#606060" d="M138 41 L137 42 L138 41 z"/>
+<path style="fill:#606060" d="M447 42 L446 41 L447 42 z"/>
+<path style="fill:#606060" d="M136 42 L135 43 L136 42 z"/>
+<path style="fill:#909090" d="M134 43 L133 44 L134 43 z"/>
+<path style="fill:#808080" d="M451 44 L450 43 L451 44 z"/>
+<path style="fill:#606060" d="M129 48 L128 49 L129 48 z"/>
+<path style="fill:#909090" d="M457 50 L456 49 L457 50 z"/>
+<path style="fill:#808080" d="M127 51 L126 52 L127 51 z"/>
+<path style="fill:#606060" d="M458 52 L457 51 L458 52 z"/>
+<path style="fill:#787878" d="M126 53 C126 53.66 126.2 55.15 125 55 C125 54.34 124.8 52.85 126 53 z"/>
+<path style="fill:#909090" d="M459 54 L458 53 L459 54 z"/>
+<path style="fill:#9a9b9b" d="M125 56 L125 59 L124 59 C124.2 58.05 123.4 56.06 125 56 z"/>
+<path style="fill:#909090" d="M460 58 L459 58 L459 56 C460.2 55.85 460 57.34 460 58 z"/>
+<path style="fill:#404040" d="M460 58 L460 358 L459 358 L459 58 L460 58 z"/>
+<path style="fill:#404040" d="M125 59 L126 171 L124 59 L125 59 z"/>
+<path style="fill:#7d7d7d" d="M275 75 L275 76 L264 76 L275 75 z"/>
+<path style="fill:#3a3b3b" d="M281 76 L275 76 L275 75 L281 76 z"/>
+<path style="fill:#686868" d="M254 76 L250 77 L254 76 z"/>
+<path style="fill:#a2a3a3" d="M291 76 L291 77 L285 76 L291 76 z"/>
+<path style="fill:#4a4b4b" d="M294 77 L291 77 L291 76 C291.9 76.19 293.9 75.41 294 77 z"/>
+<path style="fill:#585858" d="M246 77 L246 78 L244 78 C243.8 76.82 245.3 76.98 246 77 z"/>
+<path style="fill:#a8a8a8" d="M248 77 C248.2 78.18 246.7 78.02 246 78 L246 77 L248 77 z"/>
+<path style="fill:#a0a0a0" d="M302 78 L297 77 L302 78 z"/>
+<path style="fill:#707070" d="M242 78 C242.2 79.18 240.7 79.02 240 79 C239.8 77.82 241.3 77.98 242 78 z"/>
+<path style="fill:#606060" d="M312 79 C311.1 78.81 309.1 79.59 309 78 C309.9 78.19 311.9 77.41 312 79 z"/>
+<path style="fill:#707070" d="M238 79 C238.2 80.18 236.7 80.02 236 80 C235.8 78.82 237.3 78.98 238 79 z"/>
+<path style="fill:#656565" d="M319 80 C318.1 79.81 316.1 80.59 316 79 C316.9 79.19 318.9 78.41 319 80 z"/>
+<path style="fill:#787878" d="M235 80 C235.2 81.18 233.7 81.02 233 81 C232.8 79.82 234.3 79.98 235 80 z"/>
+<path style="fill:#606060" d="M326 81 C325.1 80.81 323.1 81.59 323 80 C323.9 80.19 325.9 79.41 326 81 z"/>
+<path style="fill:#a0a0a0" d="M232 81 L231 82 L232 81 z"/>
+<path style="fill:#707070" d="M331 82 C330.3 82.02 328.8 82.18 329 81 C329.7 80.98 331.2 80.82 331 82 z"/>
+<path style="fill:#606060" d="M229 82 L228 83 L229 82 z"/>
+<path style="fill:#909090" d="M336 83 C335.3 83.02 333.8 83.18 334 82 C334.7 81.98 336.2 81.82 336 83 z"/>
+<path style="fill:#686868" d="M195 84 L191 83 L195 84 z"/>
+<path style="fill:#808080" d="M227 83 L226 84 L227 83 z"/>
+<path style="fill:#989898" d="M341 84 C340.3 84.02 338.8 84.18 339 83 C339.7 82.98 341.2 82.82 341 84 z"/>
+<path style="fill:#606060" d="M203 85 L199 84 L203 85 z"/>
+<path style="fill:#888888" d="M346 85 C345.3 85.02 343.8 85.18 344 84 C344.7 83.98 346.2 83.82 346 85 z"/>
+<path style="fill:#5c5c5c" d="M211 86 L207 85 L211 86 z"/>
+<path style="fill:#585858" d="M229 86 C228.3 86.02 226.8 86.18 227 85 C227.7 84.98 229.2 84.82 229 86 z"/>
+<path style="fill:#606060" d="M351 86 C350.3 86.02 348.8 86.18 349 85 C349.7 84.98 351.2 84.82 351 86 z"/>
+<path style="fill:#989898" d="M217 87 L213 86 L217 87 z"/>
+<path style="fill:#a8a8a8" d="M236 87 C235.3 87.02 233.8 87.18 234 86 C234.7 85.98 236.2 85.82 236 87 z"/>
+<path style="fill:#606060" d="M355 87 C354.3 87.02 352.8 87.18 353 86 C353.7 85.98 355.2 85.82 355 87 z"/>
+<path style="fill:#a0a0a0" d="M183 87 L182 88 L183 87 z"/>
+<path style="fill:#909090" d="M225 88 L221 87 L225 88 z"/>
+<path style="fill:#686868" d="M240 88 C239.3 88.02 237.8 88.18 238 87 C238.7 86.98 240.2 86.82 240 88 z"/>
+<path style="fill:#909090" d="M358 88 C357.3 88.02 355.8 88.18 356 87 C356.7 86.98 358.2 86.82 358 88 z"/>
+<path style="fill:#909090" d="M182 88 L181 89 L182 88 z"/>
+<path style="fill:#a0a0a0" d="M232 89 C231.1 88.81 229.1 89.59 229 88 C229.9 88.19 231.9 87.41 232 89 z"/>
+<path style="fill:#606060" d="M245 89 C244.3 89.02 242.8 89.18 243 88 C243.7 87.98 245.2 87.82 245 89 z"/>
+<path style="fill:#909090" d="M361 89 L360 88 L361 89 z"/>
+<path style="fill:#606060" d="M181 89 L180 90 L181 89 z"/>
+<path style="fill:#686868" d="M242 90 L238 89 L242 90 z"/>
+<path style="fill:#6e6e6e" d="M252 90 C251.3 89.98 249.8 89.82 250 91 L246 90 C246.7 90.02 248.2 90.18 248 89 L252 90 z"/>
+<path style="fill:#a0a0a0" d="M364 90 L363 89 L364 90 z"/>
+<path style="fill:#0c0c0c" d="M252 90 L254 90 L254 91 L250 91 C249.8 89.82 251.3 89.98 252 90 z"/>
+<path style="fill:#505050" d="M260 91 L260 92 L254 91 L254 90 L260 91 z"/>
+<path style="fill:#909090" d="M367 91 L366 90 L367 91 z"/>
+<path style="fill:#989898" d="M260 92 L260 91 L266.8 92.25 C265.8 93.41 260.9 93.72 260 92 z"/>
+<path style="fill:#606060" d="M372 93 L371 92 L372 93 z"/>
+<path style="fill:#808080" d="M178 93 L177 94 L178 93 z"/>
+<path style="fill:#909090" d="M375 95 L374 94 L375 95 z"/>
+<path style="fill:#909090" d="M176 96 L175 97 L176 96 z"/>
+<path style="fill:#707070" d="M378 98 L377 97 L378 98 z"/>
+<path style="fill:#707070" d="M174 99 L173 100 L174 99 z"/>
+<path style="fill:#a0a0a0" d="M379 100 L378 99 L379 100 z"/>
+<path style="fill:#808080" d="M173 101 L172 102 L173 101 z"/>
+<path style="fill:#808080" d="M172 103 L171 104 L172 103 z"/>
+<path style="fill:#a0a0a0" d="M381 104 L380 103 L381 104 z"/>
+<path style="fill:#606060" d="M171 105 L170 106 L171 105 z"/>
+<path style="fill:#808080" d="M382 106 L381 105 L382 106 z"/>
+<path style="fill:#606060" d="M383 108 L382 107 L383 108 z"/>
+<path style="fill:#989898" d="M170 108 C170 108.7 170.2 110.2 169 110 C169 109.3 168.8 107.8 170 108 z"/>
+<path style="fill:#a5a5a5" d="M169 112 L169 121 C167.3 119.3 167.3 113.7 169 112 z"/>
+<path style="fill:#787878" d="M385 114 C383.8 114.2 384 112.7 384 112 C385.2 111.8 385 113.3 385 114 z"/>
+<path style="fill:#787878" d="M386 117 C384.8 117.2 385 115.7 385 115 C386.2 114.8 386 116.3 386 117 z"/>
+<path style="fill:#787878" d="M387 120 C385.8 120.2 386 118.7 386 118 C387.2 117.8 387 119.3 387 120 z"/>
+<path style="fill:#b0b0b0" d="M388 124 C386.8 124.2 387 122.7 387 122 C388.2 121.8 388 123.3 388 124 z"/>
+<path style="fill:#a0a0a0" d="M170 124 L169 123 L170 124 z"/>
+<path style="fill:#888888" d="M389 127 C387.8 127.2 388 125.7 388 125 C389.2 124.8 389 126.3 389 127 z"/>
+<path style="fill:#606060" d="M171 127 L170 126 L171 127 z"/>
+<path style="fill:#606060" d="M172 129 L171 128 L172 129 z"/>
+<path style="fill:#a0a0a0" d="M390 131 C388.8 131.2 389 129.7 389 129 C390.2 128.8 390 130.3 390 131 z"/>
+<path style="fill:#808080" d="M174 132 L173 131 L174 132 z"/>
+<path style="fill:#606060" d="M391 134 C389.8 134.2 390 132.7 390 132 C391.2 131.8 391 133.3 391 134 z"/>
+<path style="fill:#707070" d="M177 136 L176 135 L177 136 z"/>
+<path style="fill:#a0a0a0" d="M178 137 L177 136 L178 137 z"/>
+<path style="fill:#a0a0a0" d="M179 138 L178 137 L179 138 z"/>
+<path style="fill:#a0a0a0" d="M180 139 L179 138 L180 139 z"/>
+<path style="fill:#a0a0a0" d="M181 140 L180 139 L181 140 z"/>
+<path style="fill:#a0a0a0" d="M182 141 L181 140 L182 141 z"/>
+<path style="fill:#a0a0a0" d="M183 142 L182 141 L183 142 z"/>
+<path style="fill:#585858" d="M393 143 L392 143 L392 141 C393.2 140.8 393 142.3 393 143 z"/>
+<path style="fill:#909090" d="M184 143 L183 142 L184 143 z"/>
+<path style="fill:#606060" d="M185 144 L184 143 L185 144 z"/>
+<path style="fill:#b0b0b0" d="M393 143 L393 145 C391.8 145.2 392 143.7 392 143 L393 143 z"/>
+<path style="fill:#a0a0a0" d="M189 147 L188 146 L189 147 z"/>
+<path style="fill:#606060" d="M190 148 L189 147 L190 148 z"/>
+<path style="fill:#a0a0a0" d="M394 151 C392.4 150.9 393.2 148.9 393 148 C394.6 148.1 393.8 150.1 394 151 z"/>
+<path style="fill:#808080" d="M193 150 L192 149 L193 150 z"/>
+<path style="fill:#808080" d="M196 152 L195 151 L196 152 z"/>
+<path style="fill:#808080" d="M188 154 C188.2 155.2 186.7 155 186 155 C185.8 153.8 187.3 154 188 154 z"/>
+<path style="fill:#909090" d="M193 155 L192 154 L193 155 z"/>
+<path style="fill:#696a6a" d="M395 159 L394 159 L394 154 L395 159 z"/>
+<path style="fill:#b0b0b0" d="M185 155 C185.2 156.2 183.7 156 183 156 C182.8 154.8 184.3 155 185 155 z"/>
+<path style="fill:#606060" d="M196 156 L195 155 L196 156 z"/>
+<path style="fill:#888888" d="M181 156 C181.2 157.2 179.7 157 179 157 C178.8 155.8 180.3 156 181 156 z"/>
+<path style="fill:#808080" d="M198 157 L197 156 L198 157 z"/>
+<path style="fill:#707070" d="M177 157 C177.2 158.2 175.7 158 175 158 C174.8 156.8 176.3 157 177 157 z"/>
+<path style="fill:#a0a0a0" d="M200 158 L199 157 L200 158 z"/>
+<path style="fill:#909090" d="M174 158 C174.2 159.2 172.7 159 172 159 C171.8 157.8 173.3 158 174 158 z"/>
+<path style="fill:#606060" d="M203 159 L202 158 L203 159 z"/>
+<path style="fill:#606060" d="M209 159 L208 158 L209 159 z"/>
+<path style="fill:#787878" d="M170 159 C170.2 160.2 168.7 160 168 160 C167.8 158.8 169.3 159 170 159 z"/>
+<path style="fill:#a0a0a0" d="M205 160 L204 159 L205 160 z"/>
+<path style="fill:#606060" d="M211 160 L210 159 L211 160 z"/>
+<path style="fill:#b8b8b8" d="M395 159 L395 165 L394 165 L394 159 L395 159 z"/>
+<path style="fill:#a8a8a8" d="M167 160 C167.2 161.2 165.7 161 165 161 C164.8 159.8 166.3 160 167 160 z"/>
+<path style="fill:#606060" d="M208 161 L207 160 L208 161 z"/>
+<path style="fill:#606060" d="M213 161 L212 160 L213 161 z"/>
+<path style="fill:#808080" d="M163 161 C163.2 162.2 161.7 162 161 162 C160.8 160.8 162.3 161 163 161 z"/>
+<path style="fill:#808080" d="M210 162 L209 161 L210 162 z"/>
+<path style="fill:#606060" d="M215 162 L214 161 L215 162 z"/>
+<path style="fill:#b0b0b0" d="M160 162 C160.2 163.2 158.7 163 158 163 C157.8 161.8 159.3 162 160 162 z"/>
+<path style="fill:#606060" d="M217 163 L216 162 L217 163 z"/>
+<path style="fill:#909090" d="M156 163 C156.2 164.2 154.7 164 154 164 C153.8 162.8 155.3 163 156 163 z"/>
+<path style="fill:#707070" d="M215 164 L214 163 L215 164 z"/>
+<path style="fill:#2e2f2f" d="M226 167 L226 168 L222 167 L221 166 L217 165 L217 164 L218 163 L226 167 z"/>
+<path style="fill:#707070" d="M152 164 C152.2 165.2 150.7 165 150 165 C149.8 163.8 151.3 164 152 164 z"/>
+<path style="fill:#a0a0a0" d="M217 164 L217 165 L216 164 L217 164 z"/>
+<path style="fill:#989898" d="M149 165 C149.2 166.2 147.7 166 147 166 C146.8 164.8 148.3 165 149 165 z"/>
+<path style="fill:#929393" d="M336 166 L336 167 C331.1 167.2 332.8 162.9 336 166 z"/>
+<path style="fill:#686868" d="M395 165 L394 169 L394 165 L395 165 z"/>
+<path style="fill:#808080" d="M145 166 C145.2 167.2 143.7 167 143 167 C142.8 165.8 144.3 166 145 166 z"/>
+<path style="fill:#909090" d="M222 167 L221 166 L222 167 z"/>
+<path style="fill:#525353" d="M344 168 L343 169 L336 167 L336 166 L344 168 z"/>
+<path style="fill:#606060" d="M141 167 C141.2 168.2 139.7 168 139 168 C138.8 166.8 140.3 167 141 167 z"/>
+<path style="fill:#808080" d="M227 168 L227 169 L226 168 L226 167 L227 168 z"/>
+<path style="fill:#888888" d="M138 168 C138.2 169.2 136.7 169 136 169 C135.8 167.8 137.3 168 138 168 z"/>
+<path style="fill:#202020" d="M228 168 L228 169 L227 169 L227 168 L228 168 z"/>
+<path style="fill:#7c7c7c" d="M231 170 C230.1 169.8 228.1 170.6 228 169 L228 168 L231 170 z"/>
+<path style="fill:#989898" d="M349 169 C348.3 169 346.8 169.2 347 168 C347.7 168 349.2 167.8 349 169 z"/>
+<path style="fill:#707070" d="M134 169 C134.2 170.2 132.7 170 132 170 C131.8 168.8 133.3 169 134 169 z"/>
+<path style="fill:#808080" d="M346 170 C345.3 170 343.8 170.2 344 169 C344.7 169 346.2 168.8 346 170 z"/>
+<path style="fill:#686868" d="M353 170 C352.3 170 350.8 170.2 351 169 C351.7 169 353.2 168.8 353 170 z"/>
+<path style="fill:#909090" d="M131 170 C131.2 171.2 129.7 171 129 171 C128.8 169.8 130.3 170 131 170 z"/>
+<path style="fill:#808080" d="M231 170 C234.2 169.3 231.7 172.5 231 170 z"/>
+<path style="fill:#606060" d="M349 171 L348 170 L349 171 z"/>
+<path style="fill:#a8a8a8" d="M359 171 C358.3 171 356.8 171.2 357 170 C357.7 170 359.2 169.8 359 171 z"/>
+<path style="fill:#5a5b5b" d="M363 172 C362.1 171.8 360.1 172.6 360 171 C360.9 171.2 362.9 170.4 363 172 z"/>
+<path style="fill:#606060" d="M394 171 L393 172 L394 171 z"/>
+<path style="fill:#505050" d="M356 173 C355.3 173 353.8 173.2 354 172 C354.7 172 356.2 171.8 356 173 z"/>
+<path style="fill:#989898" d="M369 173 C368.3 173 366.8 173.2 367 172 C367.7 172 369.2 171.8 369 173 z"/>
+<path style="fill:#909090" d="M358 174 L357 173 L358 174 z"/>
+<path style="fill:#a5a5a5" d="M376 174 C375.1 173.8 373.1 174.6 373 173 C373.9 173.2 375.9 172.4 376 174 z"/>
+<path style="fill:#707070" d="M362 175 C361.3 175 359.8 175.2 360 174 C360.7 174 362.2 173.8 362 175 z"/>
+<path style="fill:#646464" d="M382 175 L378 174 L382 175 z"/>
+<path style="fill:#787878" d="M365 176 C364.3 176 362.8 176.2 363 175 C363.7 175 365.2 174.8 365 176 z"/>
+<path style="fill:#606060" d="M368 177 L367 176 L368 177 z"/>
+<path style="fill:#909090" d="M377 180 L376 179 L377 180 z"/>
+<path style="fill:#707070" d="M379 182 L378 181 L379 182 z"/>
+<path style="fill:#a0a0a0" d="M380 185 L379 184 L380 185 z"/>
+<path style="fill:#606060" d="M381 187 L380 186 L381 187 z"/>
+<path style="fill:#707070" d="M382 190 L381 189 L382 190 z"/>
+<path style="fill:#707070" d="M383 193 L382 192 L383 193 z"/>
+<path style="fill:#909090" d="M384 197 C382.8 197.2 383 195.7 383 195 C384.2 194.8 384 196.3 384 197 z"/>
+<path style="fill:#787878" d="M385 200 C383.8 200.2 384 198.7 384 198 C385.2 197.8 385 199.3 385 200 z"/>
+<path style="fill:#a0a0a0" d="M386 204 C384.8 204.2 385 202.7 385 202 C386.2 201.8 386 203.3 386 204 z"/>
+<path style="fill:#707070" d="M387 207 C385.8 207.2 386 205.7 386 205 C387.2 204.8 387 206.3 387 207 z"/>
+<path style="fill:#707070" d="M388 211 C386.8 211.2 387 209.7 387 209 C388.2 208.8 388 210.3 388 211 z"/>
+<path style="fill:#606060" d="M389 215 C387.8 215.2 388 213.7 388 213 C389.2 212.8 389 214.3 389 215 z"/>
+<path style="fill:#686868" d="M390 220 C388.8 220.2 389 218.7 389 218 C390.2 217.8 390 219.3 390 220 z"/>
+<path style="fill:#585858" d="M391 225 L390 225 L390 223 C391.2 222.8 391 224.3 391 225 z"/>
+<path style="fill:#a8a8a8" d="M391 225 L391 227 C389.8 227.2 390 225.7 390 225 L391 225 z"/>
+<path style="fill:#707070" d="M392 233 L391 229 L392 233 z"/>
+<path style="fill:#909090" d="M324 236 L323 236 C320.3 234.8 323.9 233.2 324 236 z"/>
+<path style="fill:#202020" d="M324 236 L324 237 L323 237 L323 236 L324 236 z"/>
+<path style="fill:#a0a0a0" d="M324 237 L324 238 L323 237 L324 237 z"/>
+<path style="fill:#666666" d="M393 242 L392 237 L393 242 z"/>
+<path style="fill:#a0a0a0" d="M328 241 L327 240 L328 241 z"/>
+<path style="fill:#707070" d="M328 245 L327 244 L328 245 z"/>
+<path style="fill:#606060" d="M331 245 L330 244 L331 245 z"/>
+<path style="fill:#909090" d="M332 246 L331 245 L332 246 z"/>
+<path style="fill:#909090" d="M329 247 L328 246 L329 247 z"/>
+<path style="fill:#a0a0a0" d="M333 247 L332 246 L333 247 z"/>
+<path style="fill:#707070" d="M331 250 L330 249 L331 250 z"/>
+<path style="fill:#606060" d="M338 253 L337 252 L338 253 z"/>
+<path style="fill:#606060" d="M339 254 L338 253 L339 254 z"/>
+<path style="fill:#606060" d="M340 255 L339 254 L340 255 z"/>
+<path style="fill:#606060" d="M341 256 L340 255 L341 256 z"/>
+<path style="fill:#606060" d="M342 257 L341 256 L342 257 z"/>
+<path style="fill:#606060" d="M343 258 L342 257 L343 258 z"/>
+<path style="fill:#707070" d="M337 259 L336 258 L337 259 z"/>
+<path style="fill:#606060" d="M344 259 L343 258 L344 259 z"/>
+<path style="fill:#606060" d="M345 260 L344 259 L345 260 z"/>
+<path style="fill:#606060" d="M346 261 L345 260 L346 261 z"/>
+<path style="fill:#606060" d="M347 262 L346 261 L347 262 z"/>
+<path style="fill:#707070" d="M340 263 L339 262 L340 263 z"/>
+<path style="fill:#606060" d="M348 263 L347 262 L348 263 z"/>
+<path style="fill:#606060" d="M349 264 L348 263 L349 264 z"/>
+<path style="fill:#a0a0a0" d="M343 267 L342 266 L343 267 z"/>
+<path style="fill:#808080" d="M344 268 L343 267 L344 268 z"/>
+<path style="fill:#636363" d="M393 267 L392 272 L393 267 z"/>
+<path style="fill:#606060" d="M345 269 L344 268 L345 269 z"/>
+<path style="fill:#a0a0a0" d="M356 270 L355 269 L356 270 z"/>
+<path style="fill:#909090" d="M357 271 L356 270 L357 271 z"/>
+<path style="fill:#606060" d="M358 272 L357 271 L358 272 z"/>
+<path style="fill:#a0a0a0" d="M392 274 C391.8 274.9 392.6 276.9 391 277 C391.2 276.1 390.4 274.1 392 274 z"/>
+<path style="fill:#808080" d="M363 276 L362 275 L363 276 z"/>
+<path style="fill:#a0a0a0" d="M367 279 L366 278 L367 279 z"/>
+<path style="fill:#606060" d="M368 280 L367 279 L368 280 z"/>
+<path style="fill:#a8a8a8" d="M391 280 C391 280.7 391.2 282.2 390 282 C390 281.3 389.8 279.8 391 280 z"/>
+<path style="fill:#a0a0a0" d="M371 282 L370 281 L371 282 z"/>
+<path style="fill:#606060" d="M372 283 L371 282 L372 283 z"/>
+<path style="fill:#606060" d="M360 284 L359 283 L360 284 z"/>
+<path style="fill:#a0a0a0" d="M361 285 L360 284 L361 285 z"/>
+<path style="fill:#808080" d="M375 285 L374 284 L375 285 z"/>
+<path style="fill:#909090" d="M390 285 C390 285.7 390.2 287.2 389 287 C389 286.3 388.8 284.8 390 285 z"/>
+<path style="fill:#909090" d="M378 287 L377 286 L378 287 z"/>
+<path style="fill:#606060" d="M365 288 L364 287 L365 288 z"/>
+<path style="fill:#909090" d="M366 289 L365 288 L366 289 z"/>
+<path style="fill:#909090" d="M381 289 L380 288 L381 289 z"/>
+<path style="fill:#606060" d="M225 290 L224 289 L225 290 z"/>
+<path style="fill:#808080" d="M389 289 C389 289.7 389.2 291.2 388 291 C388 290.3 387.8 288.8 389 289 z"/>
+<path style="fill:#a0a0a0" d="M228 291 L227 290 L228 291 z"/>
+<path style="fill:#606060" d="M369 291 L368 290 L369 291 z"/>
+<path style="fill:#808080" d="M384 291 L383 290 L384 291 z"/>
+<path style="fill:#606060" d="M221 291 L220 292 L221 291 z"/>
+<path style="fill:#808080" d="M230 292 L229 291 L230 292 z"/>
+<path style="fill:#a0a0a0" d="M220 292 L219 293 L220 292 z"/>
+<path style="fill:#606060" d="M232 293 L231 292 L232 293 z"/>
+<path style="fill:#606060" d="M388 292 C388.2 293.3 385.8 293.3 386 292 L388 292 z"/>
+<path style="fill:#a0a0a0" d="M235 294 L234 293 L235 294 z"/>
+<path style="fill:#a0a0a0" d="M373 294 L372 293 L373 294 z"/>
+<path style="fill:#808080" d="M237 295 L236 294 L237 295 z"/>
+<path style="fill:#606060" d="M239 296 L238 295 L239 296 z"/>
+<path style="fill:#606060" d="M217 296 L216 297 L217 296 z"/>
+<path style="fill:#a0a0a0" d="M242 297 L241 296 L242 297 z"/>
+<path style="fill:#808080" d="M378 297 L377 296 L378 297 z"/>
+<path style="fill:#909090" d="M216 297 L215 298 L216 297 z"/>
+<path style="fill:#808080" d="M244 298 L243 297 L244 298 z"/>
+<path style="fill:#606060" d="M380 298 L379 297 L380 298 z"/>
+<path style="fill:#606060" d="M246 299 L245 298 L246 299 z"/>
+<path style="fill:#a0a0a0" d="M249 300 L248 299 L249 300 z"/>
+<path style="fill:#808080" d="M251 301 L250 300 L251 301 z"/>
+<path style="fill:#606060" d="M253 302 L252 301 L253 302 z"/>
+<path style="fill:#707070" d="M212 302 L211 303 L212 302 z"/>
+<path style="fill:#a0a0a0" d="M256 303 L255 302 L256 303 z"/>
+<path style="fill:#808080" d="M385 302 L384 303 L385 302 z"/>
+<path style="fill:#a0a0a0" d="M211 303 L210 304 L211 303 z"/>
+<path style="fill:#808080" d="M258 304 L257 303 L258 304 z"/>
+<path style="fill:#606060" d="M260 305 L259 304 L260 305 z"/>
+<path style="fill:#909090" d="M265 307 L264 306 L265 307 z"/>
+<path style="fill:#606060" d="M208 307 L207 308 L208 307 z"/>
+<path style="fill:#606060" d="M267 308 L266 307 L267 308 z"/>
+<path style="fill:#909090" d="M383 307 L382 308 L383 307 z"/>
+<path style="fill:#909090" d="M207 308 L206 309 L207 308 z"/>
+<path style="fill:#909090" d="M272 310 L271 309 L272 310 z"/>
+<path style="fill:#606060" d="M274 311 L273 310 L274 311 z"/>
+<path style="fill:#606060" d="M382 310 L381 311 L382 310 z"/>
+<path style="fill:#909090" d="M279 313 L278 312 L279 313 z"/>
+<path style="fill:#909090" d="M381 312 L380 313 L381 312 z"/>
+<path style="fill:#707070" d="M203 313 L202 314 L203 313 z"/>
+<path style="fill:#606060" d="M281 314 L280 313 L281 314 z"/>
+<path style="fill:#a0a0a0" d="M202 314 L201 315 L202 314 z"/>
+<path style="fill:#a0a0a0" d="M286 316 L285 315 L286 316 z"/>
+<path style="fill:#707070" d="M288 317 L287 316 L288 317 z"/>
+<path style="fill:#707070" d="M379 317 L378 318 L379 317 z"/>
+<path style="fill:#606060" d="M199 318 L198 319 L199 318 z"/>
+<path style="fill:#a0a0a0" d="M293 319 L292 318 L293 319 z"/>
+<path style="fill:#909090" d="M198 319 L197 320 L198 319 z"/>
+<path style="fill:#707070" d="M295 320 L294 319 L295 320 z"/>
+<path style="fill:#a0a0a0" d="M378 319 L377 320 L378 319 z"/>
+<path style="fill:#a0a0a0" d="M300 322 L299 321 L300 322 z"/>
+<path style="fill:#707070" d="M302 323 L301 322 L302 323 z"/>
+<path style="fill:#606060" d="M377 322 L376 323 L377 322 z"/>
+<path style="fill:#707070" d="M194 324 L193 325 L194 324 z"/>
+<path style="fill:#a0a0a0" d="M307 325 L306 324 L307 325 z"/>
+<path style="fill:#707070" d="M376 324 L375 325 L376 324 z"/>
+<path style="fill:#a0a0a0" d="M193 325 L192 326 L193 325 z"/>
+<path style="fill:#707070" d="M309 326 L308 325 L309 326 z"/>
+<path style="fill:#808080" d="M375 326 L374 327 L375 326 z"/>
+<path style="fill:#a0a0a0" d="M314 328 L313 327 L314 328 z"/>
+<path style="fill:#808080" d="M316 329 L315 328 L316 329 z"/>
+<path style="fill:#a0a0a0" d="M374 328 L373 329 L374 328 z"/>
+<path style="fill:#606060" d="M190 329 L189 330 L190 329 z"/>
+<path style="fill:#606060" d="M318 330 L317 329 L318 330 z"/>
+<path style="fill:#909090" d="M189 330 L188 331 L189 330 z"/>
+<path style="fill:#a0a0a0" d="M321 331 L320 330 L321 331 z"/>
+<path style="fill:#808080" d="M323 332 L322 331 L323 332 z"/>
+<path style="fill:#606060" d="M325 333 L324 332 L325 333 z"/>
+<path style="fill:#a0a0a0" d="M328 334 L327 333 L328 334 z"/>
+<path style="fill:#808080" d="M330 335 L329 334 L330 335 z"/>
+<path style="fill:#707070" d="M185 335 L184 336 L185 335 z"/>
+<path style="fill:#606060" d="M332 336 L331 335 L332 336 z"/>
+<path style="fill:#a0a0a0" d="M184 336 L183 337 L184 336 z"/>
+<path style="fill:#a0a0a0" d="M335 337 L334 336 L335 337 z"/>
+<path style="fill:#808080" d="M337 338 L336 337 L337 338 z"/>
+<path style="fill:#606060" d="M339 339 L338 338 L339 339 z"/>
+<path style="fill:#a0a0a0" d="M342 340 L341 339 L342 340 z"/>
+<path style="fill:#606060" d="M181 340 L180 341 L181 340 z"/>
+<path style="fill:#808080" d="M344 341 L343 340 L344 341 z"/>
+<path style="fill:#a0a0a0" d="M368 340 L367 341 L368 340 z"/>
+<path style="fill:#a0a0a0" d="M180 341 L179 342 L180 341 z"/>
+<path style="fill:#606060" d="M346 342 L345 341 L346 342 z"/>
+<path style="fill:#a0a0a0" d="M349 343 L348 342 L349 343 z"/>
+<path style="fill:#707070" d="M367 342 L366 343 L367 342 z"/>
+<path style="fill:#808080" d="M351 344 L350 343 L351 344 z"/>
+<path style="fill:#606060" d="M353 345 L352 344 L353 345 z"/>
+<path style="fill:#a0a0a0" d="M356 346 L355 345 L356 346 z"/>
+<path style="fill:#808080" d="M365 345 L364 346 L365 345 z"/>
+<path style="fill:#808080" d="M176 346 L175 347 L176 346 z"/>
+<path style="fill:#808080" d="M358 347 L357 346 L358 347 z"/>
+<path style="fill:#a0a0a0" d="M175 347 L174 348 L175 347 z"/>
+<path style="fill:#606060" d="M360 348 L359 347 L360 348 z"/>
+<path style="fill:#606060" d="M172 351 L171 352 L172 351 z"/>
+<path style="fill:#a0a0a0" d="M171 352 L170 353 L171 352 z"/>
+<path style="fill:#808080" d="M167 357 L166 358 L167 357 z"/>
+<path style="fill:#a0a0a0" d="M166 358 L165 359 L166 358 z"/>
+<path style="fill:#a8a8a8" d="M460 358 C460 358.7 460.2 360.2 459 360 L459 358 L460 358 z"/>
+<path style="fill:#606060" d="M459 361 L458 362 L459 361 z"/>
+<path style="fill:#606060" d="M163 362 L162 363 L163 362 z"/>
+<path style="fill:#a0a0a0" d="M162 363 L161 364 L162 363 z"/>
+<path style="fill:#606060" d="M159 367 L158 368 L159 367 z"/>
+<path style="fill:#808080" d="M158 368 L157 369 L158 368 z"/>
+<path style="fill:#a0a0a0" d="M455 368 L454 369 L455 368 z"/>
+<path style="fill:#808080" d="M454 369 L453 370 L454 369 z"/>
+<path style="fill:#a0a0a0" d="M453 370 L452 371 L453 370 z"/>
+<path style="fill:#707070" d="M450 372 L449 373 L450 372 z"/>
+<path style="fill:#606060" d="M154 373 L153 374 L154 373 z"/>
+<path style="fill:#606060" d="M448 373 L447 374 L448 373 z"/>
+<path style="fill:#808080" d="M153 374 L441 375 C347.2 376 242.5 378 153 374 z"/>
+<path style="fill:#787878" d="M446 374 C446.2 375.2 444.7 375 444 375 C443.8 373.8 445.3 374 446 374 z"/>
+<path style="fill:#404040" d="M462 387 L462 388 L452 388 L462 387 z"/>
+<path style="fill:#909090" d="M462 389 L462 388 L462 387 C463.3 386.8 463.3 389.2 462 389 z"/>
+<path style="fill:#0d0e0e" d="M467 389 L468 390 L468 392 L469 393 L469 395 L470 396 L470 397 L471 399 L471 400 L469 400 L469 399 L468 398 L468 396 L467 395 L467 392 C463.7 387.1 465.4 397.8 465 400 L464 400 C464.1 396.7 462.8 382.8 467 389 z"/>
+<path style="fill:#080808" d="M476 387 L475 400 L474 392 L473 391 L473 389 L474 388 C473.8 386.8 475.3 387 476 387 z"/>
+<path style="fill:#868686" d="M475 400 L476 387 C477.4 389.3 478.4 401.9 475 400 z"/>
+<path style="fill:#0" d="M462 388 L462 389 L459 389 L458 400 L457 400 L456 389 L452 388 L462 388 z"/>
+<path style="fill:#909090" d="M474 388 L473 389 L474 388 z"/>
+<path style="fill:#404040" d="M457 400 L456 400 L456 389 L457 400 z"/>
+<path style="fill:#c0c0c0" d="M459 389 L458 400 L459 389 z"/>
+<path style="fill:#909090" d="M468 390 L467 389 L468 390 z"/>
+<path style="fill:#3b3c3c" d="M467 392 L466 400 L465 400 C465.4 397.8 463.7 387.1 467 392 z"/>
+<path style="fill:#2c2c2c" d="M473 391 L474 392 L473 394 L473 396 L472 397 L472 399 L471 399 L470 397 L473 391 z"/>
+<path style="fill:#7e7e7e" d="M475 400 L473 394 L474 392 L475 400 z"/>
+<path style="fill:#909090" d="M469 393 L468 392 L469 393 z"/>
+<path style="fill:#909090" d="M468 396 L467 395 L468 396 z"/>
+<path style="fill:#909090" d="M470 396 L469 395 L470 396 z"/>
+<path style="fill:#909090" d="M473 396 L472 397 L473 396 z"/>
+<path style="fill:#888888" d="M166 397 C166.2 398.2 164.7 398 164 398 C163.8 396.8 165.3 397 166 397 z"/>
+<path style="fill:#0" d="M175 397 C174.8 398.2 176.3 398 177 398 L179 398 L180 399 L183 400 L184 401 L185 402 L186 403 L187 404 L188 406 C187.6 407.1 189.4 407.1 189 406 L190 405 L191 404 L192 403 L195 401 L196 400 L202 398 C202.7 398 204.2 398.2 204 397 L211 397 C211.1 398.6 213.1 397.8 214 398 L217 398 L218 399 L219 399 L220 400 L222 401 L223 402 L224 403 L225 405 L226 406 L226 407 L227 408 L227 409 C227 409.7 226.8 411.2 228 411 L228 414 L228 457 L206.3 456.8 L206 421 C206 420.3 206.2 418.8 205 419 L204 417 L203 416 L202 416 L201 415 L196 415 L195 416 C193.5 416.7 191.7 418.1 192 420 L191 421 L191 422 L190 457 L168 457 L168 421 C168 420.3 168.2 418.8 167 419 L166 417 L165 416 C163 414.4 160.4 415.1 158 415 L157 416 L154 419 L153 420 L153 421 C151.8 420.8 152 422.3 152 423 L152 457 L130 457 L130 399 L150 399 C150.1 400.8 149.1 408.1 152 405 L153 404 L154 403 L155 402 L157 401 L158 400 L164 398 C164.7 398 166.2 398.2 166 397 L175 397 z"/>
+<path style="fill:#707070" d="M177 398 C176.3 398 174.8 398.2 175 397 C175.7 397 177.2 396.8 177 398 z"/>
+<path style="fill:#808080" d="M204 397 C204.2 398.2 202.7 398 202 398 C201.8 396.8 203.3 397 204 397 z"/>
+<path style="fill:#4a4b4b" d="M214 398 C213.1 397.8 211.1 398.6 211 397 C211.9 397.2 213.9 396.4 214 398 z"/>
+<path style="fill:#696a6a" d="M269 397 L264 398 L269 397 z"/>
+<path style="fill:#010101" d="M276 397 L280 398 L282 398 L284 398 C283.8 399.2 285.3 399 286 399 L287 399 L288 400 L290 400 L291 401 L296 404 L297 405 L298 406 L299 407 L300 408 L303 413 L304 414 L304 416 L305 417 L305 419 C305 419.7 304.8 421.2 306 421 L306 424 L306 432 L306 434 C304.8 433.8 305 435.3 305 436 L305 438 L304 439 L304 441 L303 442 L300 447 L299 448 L298 449 L297 450 L296 451 L293 453 L292 454 L291 454 L290 455 L289 455 L288 456 L282 457 C281.1 457.2 279.1 456.4 279 458 L276 458 L269 458 L265 458 C265.2 456.8 263.7 457 263 457 L261 457 C261.2 455.8 259.7 456 259 456 L258 456 L257 455 L252 453 L251 452 L245 446 L244 445 L243 443 L242 442 L242 441 L241 440 L241 439 C241 438.3 241.2 436.8 240 437 L240 435 C240 434.3 240.2 432.8 239 433 L239 423 C240.2 423.2 240 421.7 240 421 L240 419 C241.2 419.2 241 417.7 241 417 C241.3 414 243.4 411.5 245 409 L246 408 L249 405 L250 404 L251 403 L253 402 L254 401 L255 401 L256 400 L257 400 L258 399 L260 399 C260.7 399 262.2 399.2 262 398 L264 398 L269 397 L276 397 z"/>
+<path style="fill:#545454" d="M280 397 L280 398 L276 397 L280 397 z"/>
+<path style="fill:#b0b0b0" d="M282 398 L280 398 L280 397 C280.7 397 282.2 396.8 282 398 z"/>
+<path style="fill:#909090" d="M354 397 C354.2 398.2 352.7 398 352 398 C351.8 396.8 353.3 397 354 397 z"/>
+<path style="fill:#0" d="M364 397 C363.8 398.2 365.3 398 366 398 L367 398 L368 399 L369 399 L370 400 L372 401 L373 402 L374 403 L375 404 L377 409 C377 409.7 376.8 411.2 378 411 L378 412 L378 416 L378 457 L356.3 456.8 L356 421 C356 420.3 356.2 418.8 355 419 L355 418 L354 417 L353 416 C350.4 414.5 346.6 414.5 344 416 L343 417 L342 418 L341 419 L341 420 C339.8 419.8 340 421.3 340 422 L340 423 L339 457 L317 457 L317 399 L338 399 L339 406 L340 405 L341 404 L342 403 L345 401 L346 400 L347 400 L348 399 L349 399 L350 398 L352 398 C352.7 398 354.2 398.2 354 397 L364 397 z"/>
+<path style="fill:#b0b0b0" d="M366 398 C365.3 398 363.8 398.2 364 397 C364.7 397 366.2 396.8 366 398 z"/>
+<path style="fill:#696a6a" d="M419 397 L414 398 L419 397 z"/>
+<path style="fill:#010101" d="M426 397 L431 398 L434 398 C433.8 399.2 435.3 399 436 399 L437 399 L438 400 L440 400 L441 401 L446 404 L447 405 L448 406 L449 407 L450 408 L453 413 L454 414 L454 416 L455 417 L455 418 C455 418.7 454.8 420.2 456 420 L456 426 L456 432 L456 435 C454.8 434.8 455 436.3 455 437 L455 438 C453.8 437.8 454 439.3 454 440 L454 441 L453 442 L450 447 L449 448 L448 449 L447 450 L446 451 L445 452 L443 453 L442 454 L441 454 L440 455 L439 455 L438 456 L437 456 C436.3 456 434.8 455.8 435 457 L432 457 C431.1 457.2 429.1 456.4 429 458 L426 458 L419 458 L415 458 C415.2 456.8 413.7 457 413 457 L411 457 C411.2 455.8 409.7 456 409 456 L408 456 L407 455 L402 453 L401 452 L395 446 L394 445 L393 443 L392 442 L392 441 L391 440 L391 438 L390 437 L390 434 L389 430 L389 423 C390.2 423.2 390 421.7 390 421 L390 419 C391.2 419.2 391 417.7 391 417 L391 416 L392 415 L393 412 L394 411 L395 409 L396 408 L397 407 L398 406 L399 405 L400 404 L401 403 L403 402 L404 401 L405 401 L406 400 L407 400 C407.7 400 409.2 400.2 409 399 L410 399 C410.7 399 412.2 399.2 412 398 L414 398 L419 397 L426 397 z"/>
+<path style="fill:#606060" d="M431 398 L426 397 L431 398 z"/>
+<path style="fill:#808181" d="M130 398 L130 399 L130 457 C128.3 438.7 128.3 416.3 130 398 z"/>
+<path style="fill:#404040" d="M150 398 L150 399 L130 399 L130 398 L150 398 z"/>
+<path style="fill:#878787" d="M152 405 C149.1 408.1 150.1 400.8 150 399 L150 398 L152 405 z"/>
+<path style="fill:#606060" d="M180 399 L179 398 L180 399 z"/>
+<path style="fill:#909090" d="M218 399 L217 398 L218 399 z"/>
+<path style="fill:#787878" d="M262 398 C262.2 399.2 260.7 399 260 399 C259.8 397.8 261.3 398 262 398 z"/>
+<path style="fill:#909090" d="M286 399 C285.3 399 283.8 399.2 284 398 C284.7 398 286.2 397.8 286 399 z"/>
+<path style="fill:#c0c0c0" d="M317 398 L317 399 L317 457 C315.3 438.7 315.3 416.3 317 398 z"/>
+<path style="fill:#404040" d="M338 399 L317 399 L317 398 L338 399 z"/>
+<path style="fill:#707070" d="M350 398 L349 399 L350 398 z"/>
+<path style="fill:#808080" d="M368 399 L367 398 L368 399 z"/>
+<path style="fill:#787878" d="M412 398 C412.2 399.2 410.7 399 410 399 C409.8 397.8 411.3 398 412 398 z"/>
+<path style="fill:#909090" d="M436 399 C435.3 399 433.8 399.2 434 398 C434.7 398 436.2 397.8 436 399 z"/>
+<path style="fill:#a0a0a0" d="M469 399 L468 398 L469 399 z"/>
+<path style="fill:#808080" d="M220 400 L219 399 L220 400 z"/>
+<path style="fill:#a0a0a0" d="M258 399 L257 400 L258 399 z"/>
+<path style="fill:#606060" d="M288 400 L287 399 L288 400 z"/>
+<path style="fill:#606060" d="M348 399 L347 400 L348 399 z"/>
+<path style="fill:#707070" d="M370 400 L369 399 L370 400 z"/>
+<path style="fill:#787878" d="M409 399 C409.2 400.2 407.7 400 407 400 C406.8 398.8 408.3 399 409 399 z"/>
+<path style="fill:#606060" d="M438 400 L437 399 L438 400 z"/>
+<path style="fill:#a0a0a0" d="M472 399 L471 400 L471 399 L472 399 z"/>
+<path style="fill:#707070" d="M158 400 L157 401 L158 400 z"/>
+<path style="fill:#a0a0a0" d="M184 401 L183 400 L184 401 z"/>
+<path style="fill:#808080" d="M196 400 L195 401 L196 400 z"/>
+<path style="fill:#808080" d="M256 400 L255 401 L256 400 z"/>
+<path style="fill:#a0a0a0" d="M291 401 L290 400 L291 401 z"/>
+<path style="fill:#808080" d="M346 400 L345 401 L346 400 z"/>
+<path style="fill:#808080" d="M406 400 L405 401 L406 400 z"/>
+<path style="fill:#a0a0a0" d="M441 401 L440 400 L441 401 z"/>
+<path style="fill:#909090" d="M457 400 L458 400 C458.2 401.3 455.8 401.3 456 400 L457 400 z"/>
+<path style="fill:#909090" d="M465 400 L466 400 C466.2 401.3 463.8 401.3 464 400 L465 400 z"/>
+<path style="fill:#909090" d="M471 400 C471.2 401.3 468.8 401.3 469 400 L471 400 z"/>
+<path style="fill:#808080" d="M185 402 L184 401 L185 402 z"/>
+<path style="fill:#a0a0a0" d="M223 402 L222 401 L223 402 z"/>
+<path style="fill:#909090" d="M254 401 L253 402 L254 401 z"/>
+<path style="fill:#a0a0a0" d="M373 402 L372 401 L373 402 z"/>
+<path style="fill:#a0a0a0" d="M404 401 L403 402 L404 401 z"/>
+<path style="fill:#a0a0a0" d="M155 402 L154 403 L155 402 z"/>
+<path style="fill:#808080" d="M186 403 L185 402 L186 403 z"/>
+<path style="fill:#a0a0a0" d="M224 403 L223 402 L224 403 z"/>
+<path style="fill:#808080" d="M374 403 L373 402 L374 403 z"/>
+<path style="fill:#a0a0a0" d="M154 403 L153 404 L154 403 z"/>
+<path style="fill:#a0a0a0" d="M187 404 L186 403 L187 404 z"/>
+<path style="fill:#a0a0a0" d="M192 403 L191 404 L192 403 z"/>
+<path style="fill:#909090" d="M251 403 L250 404 L251 403 z"/>
+<path style="fill:#a0a0a0" d="M342 403 L341 404 L342 403 z"/>
+<path style="fill:#a0a0a0" d="M375 404 L374 403 L375 404 z"/>
+<path style="fill:#a0a0a0" d="M401 403 L400 404 L401 403 z"/>
+<path style="fill:#a0a0a0" d="M153 404 L152 405 L153 404 z"/>
+<path style="fill:#a0a0a0" d="M191 404 L190 405 L191 404 z"/>
+<path style="fill:#606060" d="M250 404 L249 405 L250 404 z"/>
+<path style="fill:#a0a0a0" d="M297 405 L296 404 L297 405 z"/>
+<path style="fill:#a0a0a0" d="M341 404 L340 405 L341 404 z"/>
+<path style="fill:#606060" d="M400 404 L399 405 L400 404 z"/>
+<path style="fill:#909090" d="M447 405 L446 404 L447 405 z"/>
+<path style="fill:#a0a0a0" d="M190 405 L189 406 L190 405 z"/>
+<path style="fill:#606060" d="M226 406 L225 405 L226 406 z"/>
+<path style="fill:#808080" d="M298 406 L297 405 L298 406 z"/>
+<path style="fill:#a0a0a0" d="M340 405 L339 406 L340 405 z"/>
+<path style="fill:#606060" d="M399 405 L398 406 L399 405 z"/>
+<path style="fill:#606060" d="M448 406 L447 405 L448 406 z"/>
+<path style="fill:#606060" d="M189 406 C189.4 407.1 187.6 407.1 188 406 L189 406 z"/>
+<path style="fill:#808080" d="M299 407 L298 406 L299 407 z"/>
+<path style="fill:#606060" d="M398 406 L397 407 L398 406 z"/>
+<path style="fill:#606060" d="M449 407 L448 406 L449 407 z"/>
+<path style="fill:#606060" d="M227 408 L226 407 L227 408 z"/>
+<path style="fill:#a0a0a0" d="M300 408 L299 407 L300 408 z"/>
+<path style="fill:#606060" d="M397 407 L396 408 L397 407 z"/>
+<path style="fill:#909090" d="M450 408 L449 407 L450 408 z"/>
+<path style="fill:#707070" d="M246 408 L245 409 L246 408 z"/>
+<path style="fill:#808080" d="M396 408 L395 409 L396 408 z"/>
+<path style="fill:#787878" d="M228 411 C226.8 411.2 227 409.7 227 409 C228.2 408.8 228 410.3 228 411 z"/>
+<path style="fill:#686868" d="M378 411 C376.8 411.2 377 409.7 377 409 C378.2 408.8 378 410.3 378 411 z"/>
+<path style="fill:#606060" d="M394 411 L393 412 L394 411 z"/>
+<path style="fill:#909090" d="M379 416 L378 416 L378 412 L379 416 z"/>
+<path style="fill:#606060" d="M269 413 L268 414 L269 413 z"/>
+<path style="fill:#fdfefe" d="M276 413 L277 414 L278 414 L279 415 L280 416 L281 417 L282 419 C282 419.7 281.8 421.2 283 421 L283 423 L283 432 L283 435 L282 436 L282 437 L281 438 L278 441 L277 442 L276 442 L270 442 L268 442 L267 441 L265 439 L264 438 L263 435 L262 434 L262 431 L262 425 L262 422 C263.2 422.2 263 420.7 263 420 L263 419 L264 418 L268 414 L269 413 L276 413 z"/>
+<path style="fill:#a0a0a0" d="M277 414 L276 413 L277 414 z"/>
+<path style="fill:#a0a0a0" d="M304 414 L303 413 L304 414 z"/>
+<path style="fill:#606060" d="M419 413 L418 414 L419 413 z"/>
+<path style="fill:#fdfdfd" d="M426 413 L427 414 L428 414 L429 415 L430 416 L431 417 L432 418 L432 419 L433 420 L433 423 L433 432 L433 435 L432 436 L431 439 L430 440 L429 441 L426 442 L425 443 L421 443 C421.2 441.8 419.7 442 419 442 L417 441 L416 440 L415 439 L414 438 L413 435 C413 434.3 413.2 432.8 412 433 L412 423 C413.2 423.2 413 421.7 413 421 L413 419 L414 418 L418 414 L419 413 L426 413 z"/>
+<path style="fill:#a0a0a0" d="M427 414 L426 413 L427 414 z"/>
+<path style="fill:#a0a0a0" d="M454 414 L453 413 L454 414 z"/>
+<path style="fill:#434343" d="M228 457 L228 414 C229.7 427 229.7 444 228 457 z"/>
+<path style="fill:#808080" d="M279 415 L278 414 L279 415 z"/>
+<path style="fill:#909090" d="M429 415 L428 414 L429 415 z"/>
+<path style="fill:#a0a0a0" d="M158 415 L157 416 L158 415 z"/>
+<path style="fill:#606060" d="M196 415 L195 416 L196 415 z"/>
+<path style="fill:#a0a0a0" d="M202 416 L201 415 L202 416 z"/>
+<path style="fill:#a0a0a0" d="M280 416 L279 415 L280 416 z"/>
+<path style="fill:#606060" d="M392 415 L391 416 L392 415 z"/>
+<path style="fill:#606060" d="M166 417 L165 416 L166 417 z"/>
+<path style="fill:#606060" d="M204 417 L203 416 L204 417 z"/>
+<path style="fill:#a0a0a0" d="M281 417 L280 416 L281 417 z"/>
+<path style="fill:#606060" d="M305 417 L304 416 L305 417 z"/>
+<path style="fill:#a0a0a0" d="M344 416 L343 417 L344 416 z"/>
+<path style="fill:#808080" d="M354 417 L353 416 L354 417 z"/>
+<path style="fill:#404040" d="M379 416 L378 457 L378 416 L379 416 z"/>
+<path style="fill:#a0a0a0" d="M431 417 L430 416 L431 417 z"/>
+<path style="fill:#606060" d="M455 417 L454 416 L455 417 z"/>
+<path style="fill:#686868" d="M241 417 C241 417.7 241.2 419.2 240 419 C240 418.3 239.8 416.8 241 417 z"/>
+<path style="fill:#a0a0a0" d="M343 417 L342 418 L343 417 z"/>
+<path style="fill:#707070" d="M355 418 L354 417 L355 418 z"/>
+<path style="fill:#787878" d="M391 417 C391 417.7 391.2 419.2 390 419 C390 418.3 389.8 416.8 391 417 z"/>
+<path style="fill:#707070" d="M432 418 L431 417 L432 418 z"/>
+<path style="fill:#808080" d="M264 418 L263 419 L264 418 z"/>
+<path style="fill:#808080" d="M342 418 L341 419 L342 418 z"/>
+<path style="fill:#606060" d="M414 418 L413 419 L414 418 z"/>
+<path style="fill:#989898" d="M456 420 C454.8 420.2 455 418.7 455 418 C456.2 417.8 456 419.3 456 420 z"/>
+<path style="fill:#808080" d="M154 419 L153 420 L154 419 z"/>
+<path style="fill:#686868" d="M168 421 L167 421 L167 419 C168.2 418.8 168 420.3 168 421 z"/>
+<path style="fill:#989898" d="M206 421 C204.8 421.2 205 419.7 205 419 C206.2 418.8 206 420.3 206 421 z"/>
+<path style="fill:#888888" d="M283 421 C281.8 421.2 282 419.7 282 419 C283.2 418.8 283 420.3 283 421 z"/>
+<path style="fill:#686868" d="M306 421 C304.8 421.2 305 419.7 305 419 C306.2 418.8 306 420.3 306 421 z"/>
+<path style="fill:#888888" d="M356 421 C354.8 421.2 355 419.7 355 419 C356.2 418.8 356 420.3 356 421 z"/>
+<path style="fill:#606060" d="M433 420 L432 419 L433 420 z"/>
+<path style="fill:#a0a0a0" d="M192 420 L191 421 L192 420 z"/>
+<path style="fill:#707070" d="M263 420 C263 420.7 263.2 422.2 262 422 C262 421.3 261.8 419.8 263 420 z"/>
+<path style="fill:#989898" d="M341 420 C341 420.7 341.2 422.2 340 422 C340 421.3 339.8 419.8 341 420 z"/>
+<path style="fill:#606060" d="M153 421 L153 423 L152 423 C152 422.3 151.8 420.8 153 421 z"/>
+<path style="fill:#bfc0c0" d="M168 421 L168 457 L167 421 L168 421 z"/>
+<path style="fill:#707070" d="M240 421 C240 421.7 240.2 423.2 239 423 C239 422.3 238.8 420.8 240 421 z"/>
+<path style="fill:#909090" d="M390 421 C390 421.7 390.2 423.2 389 423 C389 422.3 388.8 420.8 390 421 z"/>
+<path style="fill:#a0a0a0" d="M413 421 C413 421.7 413.2 423.2 412 423 C412 422.3 411.8 420.8 413 421 z"/>
+<path style="fill:#7c7c7c" d="M191 422 L190 457 L191 422 z"/>
+<path style="fill:#bfbfbf" d="M153 423 L152 457 L152 423 L153 423 z"/>
+<path style="fill:#888989" d="M283 432 L283 423 C284.7 424.7 284.7 430.3 283 432 z"/>
+<path style="fill:#7c7d7d" d="M340 423 L339 457 L340 423 z"/>
+<path style="fill:#a1a2a2" d="M433 432 L433 423 C434.7 424.7 434.7 430.3 433 432 z"/>
+<path style="fill:#c4c4c4" d="M306 432 L306 424 C307.6 425.3 307.6 430.7 306 432 z"/>
+<path style="fill:#404040" d="M262 425 L262 431 C260.4 430.3 260.4 425.7 262 425 z"/>
+<path style="fill:#a0a0a0" d="M456 432 L456 426 C457.6 426.7 457.6 431.3 456 432 z"/>
+<path style="fill:#585858" d="M390 434 L389 430 L390 434 z"/>
+<path style="fill:#909090" d="M240 435 C238.8 435.2 239 433.7 239 433 C240.2 432.8 240 434.3 240 435 z"/>
+<path style="fill:#808080" d="M413 435 C411.8 435.2 412 433.7 412 433 C413.2 432.8 413 434.3 413 435 z"/>
+<path style="fill:#707070" d="M263 435 L262 434 L263 435 z"/>
+<path style="fill:#707070" d="M306 434 C306 434.7 306.2 436.2 305 436 C305 435.3 304.8 433.8 306 434 z"/>
+<path style="fill:#909090" d="M283 435 L282 436 L283 435 z"/>
+<path style="fill:#a0a0a0" d="M433 435 L432 436 L433 435 z"/>
+<path style="fill:#989898" d="M456 435 C456 435.7 456.2 437.2 455 437 C455 436.3 454.8 434.8 456 435 z"/>
+<path style="fill:#888888" d="M241 439 C239.8 439.2 240 437.7 240 437 C241.2 436.8 241 438.3 241 439 z"/>
+<path style="fill:#a0a0a0" d="M282 437 L281 438 L282 437 z"/>
+<path style="fill:#707070" d="M391 438 L390 437 L391 438 z"/>
+<path style="fill:#909090" d="M265 439 L264 438 L265 439 z"/>
+<path style="fill:#606060" d="M305 438 L304 439 L305 438 z"/>
+<path style="fill:#909090" d="M415 439 L414 438 L415 439 z"/>
+<path style="fill:#888888" d="M455 438 C455 438.7 455.2 440.2 454 440 C454 439.3 453.8 437.8 455 438 z"/>
+<path style="fill:#a0a0a0" d="M416 440 L415 439 L416 440 z"/>
+<path style="fill:#606060" d="M431 439 L430 440 L431 439 z"/>
+<path style="fill:#808080" d="M242 441 L241 440 L242 441 z"/>
+<path style="fill:#a0a0a0" d="M392 441 L391 440 L392 441 z"/>
+<path style="fill:#a0a0a0" d="M417 441 L416 440 L417 441 z"/>
+<path style="fill:#606060" d="M430 440 L429 441 L430 440 z"/>
+<path style="fill:#606060" d="M268 442 L267 441 L268 442 z"/>
+<path style="fill:#a0a0a0" d="M278 441 L277 442 L278 441 z"/>
+<path style="fill:#a0a0a0" d="M304 441 L303 442 L304 441 z"/>
+<path style="fill:#a0a0a0" d="M454 441 L453 442 L454 441 z"/>
+<path style="fill:#808080" d="M243 443 L242 442 L243 443 z"/>
+<path style="fill:#aaabab" d="M276 442 C275.3 443.6 270.7 443.6 270 442 L276 442 z"/>
+<path style="fill:#909090" d="M393 443 L392 442 L393 443 z"/>
+<path style="fill:#707070" d="M421 443 C420.3 443 418.8 443.2 419 442 C419.7 442 421.2 441.8 421 443 z"/>
+<path style="fill:#808080" d="M426 442 L425 443 L426 442 z"/>
+<path style="fill:#707070" d="M245 446 L244 445 L245 446 z"/>
+<path style="fill:#707070" d="M395 446 L394 445 L395 446 z"/>
+<path style="fill:#a0a0a0" d="M300 447 L299 448 L300 447 z"/>
+<path style="fill:#909090" d="M450 447 L449 448 L450 447 z"/>
+<path style="fill:#707070" d="M299 448 L298 449 L299 448 z"/>
+<path style="fill:#606060" d="M449 448 L448 449 L449 448 z"/>
+<path style="fill:#606060" d="M298 449 L297 450 L298 449 z"/>
+<path style="fill:#606060" d="M448 449 L447 450 L448 449 z"/>
+<path style="fill:#a0a0a0" d="M297 450 L296 451 L297 450 z"/>
+<path style="fill:#808080" d="M447 450 L446 451 L447 450 z"/>
+<path style="fill:#a0a0a0" d="M446 451 L445 452 L446 451 z"/>
+<path style="fill:#909090" d="M252 453 L251 452 L252 453 z"/>
+<path style="fill:#909090" d="M402 453 L401 452 L402 453 z"/>
+<path style="fill:#a0a0a0" d="M293 453 L292 454 L293 453 z"/>
+<path style="fill:#909090" d="M443 453 L442 454 L443 453 z"/>
+<path style="fill:#808080" d="M291 454 L290 455 L291 454 z"/>
+<path style="fill:#808080" d="M441 454 L440 455 L441 454 z"/>
+<path style="fill:#606060" d="M258 456 L257 455 L258 456 z"/>
+<path style="fill:#a0a0a0" d="M289 455 L288 456 L289 455 z"/>
+<path style="fill:#606060" d="M408 456 L407 455 L408 456 z"/>
+<path style="fill:#909090" d="M439 455 L438 456 L439 455 z"/>
+<path style="fill:#787878" d="M261 457 C260.3 457 258.8 457.2 259 456 C259.7 456 261.2 455.8 261 457 z"/>
+<path style="fill:#808080" d="M411 457 C410.3 457 408.8 457.2 409 456 C409.7 456 411.2 455.8 411 457 z"/>
+<path style="fill:#a8a8a8" d="M437 456 C437.2 457.2 435.7 457 435 457 C434.8 455.8 436.3 456 437 456 z"/>
+<path style="fill:#888888" d="M265 458 C264.3 458 262.8 458.2 263 457 C263.7 457 265.2 456.8 265 458 z"/>
+<path style="fill:#606060" d="M282 457 C281.9 458.6 279.9 457.8 279 458 C279.1 456.4 281.1 457.2 282 457 z"/>
+<path style="fill:#888888" d="M415 458 C414.3 458 412.8 458.2 413 457 C413.7 457 415.2 456.8 415 458 z"/>
+<path style="fill:#606060" d="M432 457 C431.9 458.6 429.9 457.8 429 458 C429.1 456.4 431.1 457.2 432 457 z"/>
+<path style="fill:#c2c2c2" d="M276 458 C275 459.6 270 459.6 269 458 L276 458 z"/>
+<path style="fill:#c2c2c2" d="M426 458 C425 459.6 420 459.6 419 458 L426 458 z"/>
+</svg>
--- mono-4.6.2.7+dfsg.orig/mcs/build/library.make
+++ mono-4.6.2.7+dfsg/mcs/build/library.make
@@ -277,10 +277,10 @@ $(the_lib): $(the_libdir)/.stamp
 
 $(build_lib): $(response) $(sn) $(BUILT_SOURCES) $(build_libdir:=/.stamp)
 	$(LIBRARY_COMPILE) $(LIBRARY_FLAGS) $(LIB_MCS_FLAGS) -target:library -out:$@ $(BUILT_SOURCES_cmdline) @$(response)
-	$(Q) $(SN) -R $@ $(LIBRARY_SNK)
 ifdef RESOURCE_STRINGS_FILES
 	$(Q) $(STRING_REPLACER) $(RESOURCE_STRINGS_FILES) $@
 endif
+	$(Q) $(SN) -R $@ $(LIBRARY_SNK)
 
 ifdef LIBRARY_USE_INTERMEDIATE_FILE
 $(the_lib): $(build_lib)
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncTokenizer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncTokenizer.cs
@@ -1,511 +1,511 @@
-//
-// RELAX NG Compact Syntax parser
-//
-// Author:
-//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
-//
-// (C)2003 Atsushi Enomoto
-// (C)2004 Novell Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Xml;
-using Commons.Xml.Relaxng;
-
-namespace Commons.Xml.Relaxng.Rnc
-{
-	internal class RncTokenizer : Commons.Xml.Relaxng.Rnc.yyParser.yyInput
-	{
-		TextReader source;
-
-		int currentToken;
-		object tokenValue;
-		int peekChar;
-		string peekString;
-		bool isElement;
-		bool isLiteralNsUri;
-
-		int line = 1;
-		int column;
-		int savedLineNumber = 1;
-		int savedLinePosition;
-		bool nextIncrementLine;
-		string baseUri;
-
-		public RncTokenizer (TextReader source, string baseUri)
-		{
-			this.source = source;
-			this.baseUri = baseUri;
-		}
-
-		public bool IsElement {
-			get { return isElement; }
-		}
-
-		public int Line {
-			get { return savedLineNumber; }
-		}
-
-		public int Column {
-			get { return savedLinePosition; }
-		}
-
-		public string BaseUri {
-			get { return baseUri; }
-		}
-
-		// jay interface implementation
-
-		public int token ()
-		{
-			return currentToken;
-		}
-
-		public bool advance ()
-		{
-			tokenValue = null;
-			currentToken = ParseToken (false);
-			savedLineNumber = line;
-			savedLinePosition = column;
-			return currentToken != Token.EOF;
-		}
-
-		public object value ()
-		{
-			return tokenValue;
-		}
-
-		// private methods
-
-		private int ReadEscapedHexNumber (int current)
-		{
-			int i = source.Read ();
-			switch (i) {
-			case '0':
-			case '1':
-			case '2':
-			case '3':
-			case '4':
-			case '5':
-			case '6':
-			case '7':
-			case '8':
-			case '9':
-				current = current * 16 + (i - '0');
-				return ReadEscapedHexNumber (current);
-			case 'A':
-			case 'B':
-			case 'C':
-			case 'D':
-			case 'E':
-			case 'F':
-				current = current * 16 + (i - 'A') + 10;
-				return ReadEscapedHexNumber (current);
-			case 'a':
-			case 'b':
-			case 'c':
-			case 'd':
-			case 'e':
-			case 'f':
-				current = current * 16 + (i - 'a' + 10);
-				return ReadEscapedHexNumber (current);
-			}
-			peekChar = i;
-			return current;
-		}
-
-		private int ReadFromStream ()
-		{
-			int ret = source.Read ();
-			if (ret != '\\')
-				return ret;
-			ret = source.Read ();
-			switch (ret) {
-			case 'x':
-				int tmp;
-				int xcount = 0;
-				do {
-					xcount++;
-					tmp = source.Read ();
-				} while (tmp == 'x');
-				if (tmp != '{') {
-					peekString = new string ('x', xcount);
-					if (tmp >= 0)
-						peekString += (char) tmp;
-					return '\\';
-				}
-				ret = ReadEscapedHexNumber (0);
-				if (peekChar != '}')
-					break;
-				peekChar = 0;
-				return ret;
-			}
-			peekString = new string ((char) ret, 1);
-			return '\\';
-		}
-
-		private int PeekChar ()
-		{
-			if (peekChar == 0) {
-				if (peekString != null) {
-					peekChar = peekString [0];
-					peekString = peekString.Length == 1 ?
-						null : peekString.Substring (1);
-				}
-				else
-					peekChar = ReadFromStream ();
-			}
-
-			return peekChar;
-		}
-
-		private int ReadChar ()
-		{
-			int ret;
-			if (peekChar != 0) {
-				ret = peekChar;
-				peekChar = 0;
-			}
-			else if (peekString != null) {
-				ret = peekString [0];
-				peekString = peekString.Length == 1 ?
-					null : peekString.Substring (1);
-			}
-			else
-				ret = ReadFromStream ();
-
-			if (nextIncrementLine) {
-				line++;
-				column = 1;
-				nextIncrementLine = false;
-			}
-			switch (ret) {
-			case '\r':
-				break;
-			case '\n':
-				nextIncrementLine = true;
-				goto default;
-			default:
-				column++;
-				break;
-			}
-
-			return ret;
-		}
-
-		private void SkipWhitespaces ()
-		{
-			while (true) {
-				switch (PeekChar ()) {
-				case ' ':
-				case '\t':
-				case '\r':
-				case '\n':
-					ReadChar ();
-					continue;
-				default:
-					return;
-				}
-			}
-		}
-
-		char [] nameBuffer = new char [30];
-
-		private string ReadQuoted (char quoteChar)
-		{
-			int index = 0;
-			bool loop = true;
-			while (loop) {
-				int c = ReadChar ();
-				switch (c) {
-				case -1:
-				case '\'':
-				case '\"':
-					if (quoteChar != c)
-						goto default;
-					loop = false;
-					break;
-				default:
-					if (c < 0)
-						throw new RelaxngException ("Unterminated quoted literal.");
-					if (XmlChar.IsInvalid (c))
-						throw new RelaxngException ("Invalid character in literal.");
-					AppendNameChar (c, ref index);
-					break;
-				}
-			}
-
-			return new string (nameBuffer, 0, index);
-		}
-
-		private void AppendNameChar (int c, ref int index)
-		{
-			if (nameBuffer.Length == index) {
-				char [] arr = new char [index * 2];
-				Array.Copy (nameBuffer, arr, index);
-				nameBuffer = arr;
-			}
-			if (c > 0x10000) {
-				AppendNameChar ((c - 0x10000) / 0x400 + 0xD800, ref index);
-				AppendNameChar ((c - 0x10000) % 0x400 + 0xDC00, ref index);
-			}
-			else
-				nameBuffer [index++] = (char) c;
-		}
-
-		private string ReadTripleQuoted (char quoteChar)
-		{
-			int index = 0;
-			bool loop = true;
-			do {
-				int c = ReadChar ();
-				switch (c) {
-				case -1:
-				case '\'':
-				case '\"':
-					// 1
-					if (quoteChar != c)
-						goto default;
-					// 2
-					if ((c = PeekChar ()) != quoteChar) {
-						AppendNameChar (quoteChar, ref index);
-						goto default;
-					}
-					ReadChar ();
-					// 3
-					if ((c = PeekChar ()) == quoteChar) {
-						ReadChar ();
-						loop = false;
-						break;
-					}
-					AppendNameChar (quoteChar, ref index);
-					AppendNameChar (quoteChar, ref index);
-					break;
-				default:
-					if (c < 0)
-						throw new RelaxngException ("Unterminated triple-quoted literal.");
-					if (XmlChar.IsInvalid (c))
-						throw new RelaxngException ("Invalid character in literal.");
-					AppendNameChar (c, ref index);
-					break;
-				}
-			} while (loop);
-
-			return new string (nameBuffer, 0, index);
-		}
-
-		private string ReadOneName ()
-		{
-			int index = 0;
-			bool loop = true;
-			int c = PeekChar ();
-			if (!XmlChar.IsFirstNameChar (c) || !XmlChar.IsNCNameChar (c))
-				throw new RelaxngException (String.Format ("Invalid NCName start character: {0}", c));
-			do {
-				c = PeekChar ();
-				switch (c) {
-				case -1:
-				case ' ':
-				case '\t':
-				case '\r':
-				case '\n':
-					ReadChar ();
-					loop = false;
-					break;
-				default:
-					if (!XmlChar.IsNCNameChar (c)) {
-						loop = false;
-						break;
-					}
-
-					ReadChar ();
-					if (nameBuffer.Length == index) {
-						char [] arr = new char [index * 2];
-						Array.Copy (nameBuffer, arr, index);
-						nameBuffer = arr;
-					}
-					nameBuffer [index++] = (char) c;
-					break;
-				}
-			} while (loop);
-
-			return new string (nameBuffer, 0, index);
-		}
-
-		private string ReadLine ()
-		{
-			string s = source.ReadLine ();
-			line++;
-			column = 1;
-			return s;
-		}
-
-		private int ParseToken (bool backslashed)
-		{
-			SkipWhitespaces ();
-			int c = ReadChar ();
-			string name;
-			switch (c) {
-			case -1:
-				return Token.EOF;
-			case '=':
-				return Token.Equal;
-			case '~':
-				return Token.Tilde;
-			case ',':
-				return Token.Comma;
-			case '{':
-				return Token.OpenCurly;
-			case '}':
-				return Token.CloseCurly;
-			case '(':
-				return Token.OpenParen;
-			case ')':
-				return Token.CloseParen;
-			case '[':
-				return Token.OpenBracket;
-			case ']':
-				return Token.CloseBracket;
-			case '&':
-				if (PeekChar () != '=')
-					return Token.Amp;
-				ReadChar ();
-				return Token.AndEquals;
-			case '|':
-				if (PeekChar () != '=')
-					return Token.Bar;
-				ReadChar ();
-				return Token.OrEquals;
-			case '?':
-				return Token.Question;
-			case '*':
-				// See also ':' for NsName
-				return Token.Asterisk;
-			case '\\':
-				if (backslashed)
-					return Token.ERROR;
-				return ParseToken (true);
-			case '+':
-				return Token.Plus;
-			case '-':
-				return Token.Minus;
-			case '>':
-				if (PeekChar () == '>') {
-					ReadChar ();
-					return Token.TwoGreaters;
-				}
-				peekChar = '>';
-				goto default;
-			case '#':
-//				tokenValue = ReadLine ();
-//				return Token.Documentation;
-				ReadLine ();
-				return ParseToken (false);
-			case '\'':
-			case '\"':
-				if (PeekChar () != c)
-					name = ReadQuoted ((char) c);
-				else {
-					ReadChar ();
-					if (PeekChar () == c) {
-						ReadChar ();
-						name = ReadTripleQuoted ((char) c);
-					} // else '' or ""
-					name = String.Empty;
-				}
-				int invidx = XmlChar.IndexOfInvalid (name, true) ;
-				if (invidx >= 0)
-					throw new RelaxngException (String.Format ("Invalid XML character in compact syntax literal segment at {0:X}", (int) name [invidx]));
-				tokenValue = name;
-				return Token.LiteralSegment;
-			default:
-				if (!XmlChar.IsNCNameChar (c))
-					throw new RelaxngException ("Invalid NCName character.");
-				peekChar = c;
-				name = ReadOneName ();
-				if (PeekChar () == ':') {
-					ReadChar ();
-					if (PeekChar () == '*') {
-						ReadChar ();
-						tokenValue = name;
-						return Token.NsName;
-					}
-					tokenValue = name + ":" + ReadOneName ();
-					return Token.CName;
-
-				}
-				tokenValue = name;
-				if (backslashed)
-					return Token.QuotedIdentifier;
-				switch (name) {
-				case "attribute":
-					isElement = false;
-					return Token.KeywordAttribute;
-				case "element":
-					isElement = true;
-					return Token.KeywordElement;
-				case "datatypes":
-					return Token.KeywordDatatypes;
-				case "default":
-					return Token.KeywordDefault;
-				case "div":
-					return Token.KeywordDiv;
-				case "empty":
-					return Token.KeywordEmpty;
-				case "external":
-					return Token.KeywordExternal;
-				case "grammar":
-					return Token.KeywordGrammar;
-				case "include":
-					return Token.KeywordInclude;
-				case "inherit":
-					return Token.KeywordInherit;
-				case "list":
-					return Token.KeywordList;
-				case "mixed":
-					return Token.KeywordMixed;
-				case "namespace":
-					return Token.KeywordNamespace;
-				case "notAllowed":
-					return Token.KeywordNotAllowed;
-				case "parent":
-					return Token.KeywordParent;
-				case "start":
-					return Token.KeywordStart;
-				case "string":
-					return Token.KeywordString;
-				case "text":
-					return Token.KeywordText;
-				case "token":
-					return Token.KeywordToken;
-				default:
-					return Token.NCName;
-				}
-			}
-		}
-
-	}
-}
+//
+// RELAX NG Compact Syntax parser
+//
+// Author:
+//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//
+// (C)2003 Atsushi Enomoto
+// (C)2004 Novell Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.IO;
+using System.Xml;
+using Commons.Xml.Relaxng;
+
+namespace Commons.Xml.Relaxng.Rnc
+{
+	internal class RncTokenizer : Commons.Xml.Relaxng.Rnc.yyParser.yyInput
+	{
+		TextReader source;
+
+		int currentToken;
+		object tokenValue;
+		int peekChar;
+		string peekString;
+		bool isElement;
+		bool isLiteralNsUri;
+
+		int line = 1;
+		int column;
+		int savedLineNumber = 1;
+		int savedLinePosition;
+		bool nextIncrementLine;
+		string baseUri;
+
+		public RncTokenizer (TextReader source, string baseUri)
+		{
+			this.source = source;
+			this.baseUri = baseUri;
+		}
+
+		public bool IsElement {
+			get { return isElement; }
+		}
+
+		public int Line {
+			get { return savedLineNumber; }
+		}
+
+		public int Column {
+			get { return savedLinePosition; }
+		}
+
+		public string BaseUri {
+			get { return baseUri; }
+		}
+
+		// jay interface implementation
+
+		public int token ()
+		{
+			return currentToken;
+		}
+
+		public bool advance ()
+		{
+			tokenValue = null;
+			currentToken = ParseToken (false);
+			savedLineNumber = line;
+			savedLinePosition = column;
+			return currentToken != Token.EOF;
+		}
+
+		public object value ()
+		{
+			return tokenValue;
+		}
+
+		// private methods
+
+		private int ReadEscapedHexNumber (int current)
+		{
+			int i = source.Read ();
+			switch (i) {
+			case '0':
+			case '1':
+			case '2':
+			case '3':
+			case '4':
+			case '5':
+			case '6':
+			case '7':
+			case '8':
+			case '9':
+				current = current * 16 + (i - '0');
+				return ReadEscapedHexNumber (current);
+			case 'A':
+			case 'B':
+			case 'C':
+			case 'D':
+			case 'E':
+			case 'F':
+				current = current * 16 + (i - 'A') + 10;
+				return ReadEscapedHexNumber (current);
+			case 'a':
+			case 'b':
+			case 'c':
+			case 'd':
+			case 'e':
+			case 'f':
+				current = current * 16 + (i - 'a' + 10);
+				return ReadEscapedHexNumber (current);
+			}
+			peekChar = i;
+			return current;
+		}
+
+		private int ReadFromStream ()
+		{
+			int ret = source.Read ();
+			if (ret != '\\')
+				return ret;
+			ret = source.Read ();
+			switch (ret) {
+			case 'x':
+				int tmp;
+				int xcount = 0;
+				do {
+					xcount++;
+					tmp = source.Read ();
+				} while (tmp == 'x');
+				if (tmp != '{') {
+					peekString = new string ('x', xcount);
+					if (tmp >= 0)
+						peekString += (char) tmp;
+					return '\\';
+				}
+				ret = ReadEscapedHexNumber (0);
+				if (peekChar != '}')
+					break;
+				peekChar = 0;
+				return ret;
+			}
+			peekString = new string ((char) ret, 1);
+			return '\\';
+		}
+
+		private int PeekChar ()
+		{
+			if (peekChar == 0) {
+				if (peekString != null) {
+					peekChar = peekString [0];
+					peekString = peekString.Length == 1 ?
+						null : peekString.Substring (1);
+				}
+				else
+					peekChar = ReadFromStream ();
+			}
+
+			return peekChar;
+		}
+
+		private int ReadChar ()
+		{
+			int ret;
+			if (peekChar != 0) {
+				ret = peekChar;
+				peekChar = 0;
+			}
+			else if (peekString != null) {
+				ret = peekString [0];
+				peekString = peekString.Length == 1 ?
+					null : peekString.Substring (1);
+			}
+			else
+				ret = ReadFromStream ();
+
+			if (nextIncrementLine) {
+				line++;
+				column = 1;
+				nextIncrementLine = false;
+			}
+			switch (ret) {
+			case '\r':
+				break;
+			case '\n':
+				nextIncrementLine = true;
+				goto default;
+			default:
+				column++;
+				break;
+			}
+
+			return ret;
+		}
+
+		private void SkipWhitespaces ()
+		{
+			while (true) {
+				switch (PeekChar ()) {
+				case ' ':
+				case '\t':
+				case '\r':
+				case '\n':
+					ReadChar ();
+					continue;
+				default:
+					return;
+				}
+			}
+		}
+
+		char [] nameBuffer = new char [30];
+
+		private string ReadQuoted (char quoteChar)
+		{
+			int index = 0;
+			bool loop = true;
+			while (loop) {
+				int c = ReadChar ();
+				switch (c) {
+				case -1:
+				case '\'':
+				case '\"':
+					if (quoteChar != c)
+						goto default;
+					loop = false;
+					break;
+				default:
+					if (c < 0)
+						throw new RelaxngException ("Unterminated quoted literal.");
+					if (XmlChar.IsInvalid (c))
+						throw new RelaxngException ("Invalid character in literal.");
+					AppendNameChar (c, ref index);
+					break;
+				}
+			}
+
+			return new string (nameBuffer, 0, index);
+		}
+
+		private void AppendNameChar (int c, ref int index)
+		{
+			if (nameBuffer.Length == index) {
+				char [] arr = new char [index * 2];
+				Array.Copy (nameBuffer, arr, index);
+				nameBuffer = arr;
+			}
+			if (c > 0x10000) {
+				AppendNameChar ((c - 0x10000) / 0x400 + 0xD800, ref index);
+				AppendNameChar ((c - 0x10000) % 0x400 + 0xDC00, ref index);
+			}
+			else
+				nameBuffer [index++] = (char) c;
+		}
+
+		private string ReadTripleQuoted (char quoteChar)
+		{
+			int index = 0;
+			bool loop = true;
+			do {
+				int c = ReadChar ();
+				switch (c) {
+				case -1:
+				case '\'':
+				case '\"':
+					// 1
+					if (quoteChar != c)
+						goto default;
+					// 2
+					if ((c = PeekChar ()) != quoteChar) {
+						AppendNameChar (quoteChar, ref index);
+						goto default;
+					}
+					ReadChar ();
+					// 3
+					if ((c = PeekChar ()) == quoteChar) {
+						ReadChar ();
+						loop = false;
+						break;
+					}
+					AppendNameChar (quoteChar, ref index);
+					AppendNameChar (quoteChar, ref index);
+					break;
+				default:
+					if (c < 0)
+						throw new RelaxngException ("Unterminated triple-quoted literal.");
+					if (XmlChar.IsInvalid (c))
+						throw new RelaxngException ("Invalid character in literal.");
+					AppendNameChar (c, ref index);
+					break;
+				}
+			} while (loop);
+
+			return new string (nameBuffer, 0, index);
+		}
+
+		private string ReadOneName ()
+		{
+			int index = 0;
+			bool loop = true;
+			int c = PeekChar ();
+			if (!XmlChar.IsFirstNameChar (c) || !XmlChar.IsNCNameChar (c))
+				throw new RelaxngException (String.Format ("Invalid NCName start character: {0}", c));
+			do {
+				c = PeekChar ();
+				switch (c) {
+				case -1:
+				case ' ':
+				case '\t':
+				case '\r':
+				case '\n':
+					ReadChar ();
+					loop = false;
+					break;
+				default:
+					if (!XmlChar.IsNCNameChar (c)) {
+						loop = false;
+						break;
+					}
+
+					ReadChar ();
+					if (nameBuffer.Length == index) {
+						char [] arr = new char [index * 2];
+						Array.Copy (nameBuffer, arr, index);
+						nameBuffer = arr;
+					}
+					nameBuffer [index++] = (char) c;
+					break;
+				}
+			} while (loop);
+
+			return new string (nameBuffer, 0, index);
+		}
+
+		private string ReadLine ()
+		{
+			string s = source.ReadLine ();
+			line++;
+			column = 1;
+			return s;
+		}
+
+		private int ParseToken (bool backslashed)
+		{
+			SkipWhitespaces ();
+			int c = ReadChar ();
+			string name;
+			switch (c) {
+			case -1:
+				return Token.EOF;
+			case '=':
+				return Token.Equal;
+			case '~':
+				return Token.Tilde;
+			case ',':
+				return Token.Comma;
+			case '{':
+				return Token.OpenCurly;
+			case '}':
+				return Token.CloseCurly;
+			case '(':
+				return Token.OpenParen;
+			case ')':
+				return Token.CloseParen;
+			case '[':
+				return Token.OpenBracket;
+			case ']':
+				return Token.CloseBracket;
+			case '&':
+				if (PeekChar () != '=')
+					return Token.Amp;
+				ReadChar ();
+				return Token.AndEquals;
+			case '|':
+				if (PeekChar () != '=')
+					return Token.Bar;
+				ReadChar ();
+				return Token.OrEquals;
+			case '?':
+				return Token.Question;
+			case '*':
+				// See also ':' for NsName
+				return Token.Asterisk;
+			case '\\':
+				if (backslashed)
+					return Token.ERROR;
+				return ParseToken (true);
+			case '+':
+				return Token.Plus;
+			case '-':
+				return Token.Minus;
+			case '>':
+				if (PeekChar () == '>') {
+					ReadChar ();
+					return Token.TwoGreaters;
+				}
+				peekChar = '>';
+				goto default;
+			case '#':
+//				tokenValue = ReadLine ();
+//				return Token.Documentation;
+				ReadLine ();
+				return ParseToken (false);
+			case '\'':
+			case '\"':
+				if (PeekChar () != c)
+					name = ReadQuoted ((char) c);
+				else {
+					ReadChar ();
+					if (PeekChar () == c) {
+						ReadChar ();
+						name = ReadTripleQuoted ((char) c);
+					} // else '' or ""
+					name = String.Empty;
+				}
+				int invidx = XmlChar.IndexOfInvalid (name, true) ;
+				if (invidx >= 0)
+					throw new RelaxngException (String.Format ("Invalid XML character in compact syntax literal segment at {0:X}", (int) name [invidx]));
+				tokenValue = name;
+				return Token.LiteralSegment;
+			default:
+				if (!XmlChar.IsNCNameChar (c))
+					throw new RelaxngException ("Invalid NCName character.");
+				peekChar = c;
+				name = ReadOneName ();
+				if (PeekChar () == ':') {
+					ReadChar ();
+					if (PeekChar () == '*') {
+						ReadChar ();
+						tokenValue = name;
+						return Token.NsName;
+					}
+					tokenValue = name + ":" + ReadOneName ();
+					return Token.CName;
+
+				}
+				tokenValue = name;
+				if (backslashed)
+					return Token.QuotedIdentifier;
+				switch (name) {
+				case "attribute":
+					isElement = false;
+					return Token.KeywordAttribute;
+				case "element":
+					isElement = true;
+					return Token.KeywordElement;
+				case "datatypes":
+					return Token.KeywordDatatypes;
+				case "default":
+					return Token.KeywordDefault;
+				case "div":
+					return Token.KeywordDiv;
+				case "empty":
+					return Token.KeywordEmpty;
+				case "external":
+					return Token.KeywordExternal;
+				case "grammar":
+					return Token.KeywordGrammar;
+				case "include":
+					return Token.KeywordInclude;
+				case "inherit":
+					return Token.KeywordInherit;
+				case "list":
+					return Token.KeywordList;
+				case "mixed":
+					return Token.KeywordMixed;
+				case "namespace":
+					return Token.KeywordNamespace;
+				case "notAllowed":
+					return Token.KeywordNotAllowed;
+				case "parent":
+					return Token.KeywordParent;
+				case "start":
+					return Token.KeywordStart;
+				case "string":
+					return Token.KeywordString;
+				case "text":
+					return Token.KeywordText;
+				case "token":
+					return Token.KeywordToken;
+				default:
+					return Token.NCName;
+				}
+			}
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng.Rnc/RncWriter.cs
@@ -1,544 +1,544 @@
-//
-// RELAX NG Compact Syntax writer
-//
-// Author:
-//	Atsushi Enomoto <atsushi@ximian.com>
-//
-// (C)2005 Novell Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Xml;
-using Commons.Xml.Relaxng;
-
-using NSResolver = System.Xml.IXmlNamespaceResolver;
-
-namespace Commons.Xml.Relaxng.Rnc
-{
-	internal class RncWriter
-	{
-		static readonly XmlNamespaceManager defaultNamespaceManager;
-
-		static RncWriter ()
-		{
-			XmlNamespaceManager n = new XmlNamespaceManager (
-				new NameTable ());
-			n.AddNamespace ("xs", "http://www.w3.org/2001/XMLSchema-datatypes");
-			defaultNamespaceManager = n;
-		}
-
-		TextWriter w;
-		NSResolver nsmgr;
-		NSResolver datansmgr;
-
-		public RncWriter (TextWriter writer)
-			: this (writer, null, defaultNamespaceManager)
-		{
-		}
-
-		public RncWriter (TextWriter writer, NSResolver nsmgr)
-			: this (writer, nsmgr, defaultNamespaceManager)
-		{
-		}
-
-		public RncWriter (TextWriter writer, NSResolver structureNamespaces, NSResolver dataNamespaces)
-		{
-			this.w = writer;
-			this.nsmgr = structureNamespaces;
-			this.datansmgr = dataNamespaces;
-			XmlNameTable nt = GetNameTable (nsmgr, datansmgr);
-			if (nsmgr == null)
-				nsmgr = new XmlNamespaceManager (nt);
-			if (datansmgr == null)
-				datansmgr = new XmlNamespaceManager (nt);
-		}
-
-		#region Utility methods
-
-		private XmlNameTable GetNameTable (NSResolver nss1, NSResolver nss2)
-		{
-			XmlNameTable nt = null;
-			if (nss1 is XmlNamespaceManager)
-				nt = ((XmlNamespaceManager) nss1).NameTable;
-			if (nss2 is XmlNamespaceManager)
-				nt = ((XmlNamespaceManager) nss2).NameTable;
-			if (nt == null)
-				nt = new NameTable ();
-			return nt;
-		}
-
-		private bool IsKeyword (string name)
-		{
-			switch (name) {
-			case "attribute":
-			case "default":
-			case "datatypes":
-			case "div":
-			case "element":
-			case "empty":
-			case "external":
-			case "grammar":
-			case "include":
-			case "inherit":
-			case "list":
-			case "mixed":
-			case "namespace":
-			case "notAllowed":
-			case "parent":
-			case "start":
-			case "string":
-			case "text":
-			case "token":
-				return true;
-			default:
-				return false;
-			}
-		}
-
-		private void WriteNames (RelaxngNameClassList l, bool wrap)
-		{
-			switch (l.Count) {
-			case 0:
-				throw new RelaxngException ("name choice must contain at least one name class.");
-			case 1:
-				l [0].WriteRnc (this);
-				break;
-			default:
-				if (wrap)
-					w.Write ('(');
-				l [0].WriteRnc (this);
-				for (int i = 1; i < l.Count; i++) {
-					w.Write ('|');
-					l [i].WriteRnc (this);
-				}
-				if (wrap)
-					w.Write (')');
-				break;
-			}
-		}
-
-		private void WritePatterns (RelaxngPatternList l, bool parens)
-		{
-			WritePatterns (l, ',', parens);
-		}
-
-		private void WritePatterns (RelaxngPatternList l,
-			char sep, bool parens)
-		{
-			switch (l.Count) {
-			case 0:
-				w.Write ("empty");
-				break;
-			case 1:
-				parens = (l [0] is RelaxngBinaryContentPattern 
-					|| l [0] is RelaxngData && ((RelaxngData) l [0]).Except != null);
-				if (parens)
-					w.Write ('(');
-				l [0].WriteRnc (this);
-				if (parens)
-					w.Write (')');
-				break;
-			default:
-				if (parens)
-					w.Write ('(');
-				l [0].WriteRnc (this);
-				for (int i = 1; i < l.Count; i++) {
-					if (sep != ',')
-						w.Write (' ');
-					w.Write (sep);
-					w.Write (' ');
-					l [i].WriteRnc (this);
-				}
-				if (parens)
-					w.Write (')');
-				break;
-			}
-		}
-
-		private void WriteGrammarIncludeContents (
-			RelaxngGrammarContentList starts,
-			RelaxngGrammarContentList defines,
-			RelaxngGrammarContentList divs,
-			RelaxngGrammarContentList includes)
-		{
-			if (includes != null) {
-				foreach (RelaxngInclude inc in includes)
-					inc.WriteRnc (this);
-				w.WriteLine ();
-			}
-			if (divs != null) {
-				foreach (RelaxngDiv div in divs)
-					div.WriteRnc (this);
-				w.WriteLine ();
-			}
-			if (starts != null) {
-				foreach (RelaxngStart s in starts)
-					s.WriteRnc (this);
-				w.WriteLine ();
-			}
-			if (defines != null)
-				foreach (RelaxngDefine def in defines)
-					def.WriteRnc (this);
-		}
-
-		private void WriteQName (string name, string ns)
-		{
-			WriteQName (name, ns, nsmgr);
-		}
-
-		private void WriteQName (string name, string ns, NSResolver nss)
-		{
-			string prefix = String.Empty;
-			if (ns != null && ns != String.Empty) {
-				prefix = nss.LookupPrefix (ns);
-			}
-			if (prefix == null)
-				throw new RelaxngException (String.Format ("Namespace '{0}' is not mapped to a prefix in argument XmlNamespaceManager.", ns));
-			if (prefix != String.Empty) {
-				w.Write (prefix);
-				w.Write (':');
-			}
-			if (IsKeyword (name))
-				w.Write ('\\');
-			w.Write (name);
-		}
-
-		private void WriteLiteral (string value)
-		{
-			w.Write ('"');
-			for (int i = 0; i < value.Length; i++) {
-				switch (value [i]) {
-				case '"':
-					w.Write ("\\x{22}");
-					break;
-				case '\r':
-					w.Write ("\\x{13}");
-					break;
-				case '\n':
-					w.Write ("\\x{10}");
-					break;
-				case '\t': // It is not required, but would be better.
-					w.Write ("\\x{9}");
-					break;
-				default:
-					w.Write (value [i]);
-					break;
-				}
-			}
-			w.Write ('"');
-		}
-
-		#endregion
-
-		public void WriteNamespaces (string defaultNamespace)
-		{
-			WriteNamespaces (defaultNamespace, nsmgr, false);
-			WriteNamespaces (null, datansmgr, true);
-		}
-
-		public void WriteNamespaces (string defaultNamespace, NSResolver nsmgr, bool isData)
-		{
-			if (defaultNamespace == null)
-				defaultNamespace = String.Empty;
-
-			if (defaultNamespace.Length > 0)
-				w.WriteLine ("default namespace = {0}",
-					defaultNamespace);
-
-			if (nsmgr != null) {
-				foreach (string s in nsmgr.GetNamespacesInScope (
-					XmlNamespaceScope.All).Keys) {
-					switch (s) {
-					case "xml":
-					case "xmlns":
-						continue;
-					case "":
-						if (defaultNamespace.Length > 0)
-							w.WriteLine ("default namespace = '{0}'",
-								nsmgr.LookupNamespace (s).Replace ('\'', '\"'));
-						break;
-					default:
-						w.WriteLine ("{2} {0} = '{1}'",
-							s,
-							nsmgr.LookupNamespace (s).Replace ('\'', '\"'),
-							isData ? "datatypes" : "namespace");
-						break;
-					}
-				}
-			}
-			w.WriteLine ();
-		}
-
-		#region Elements
-		// Note that it might not be used directly when a grammar
-		// contains more than one "start" (compact syntax does not
-		// support "combine" attribute).
-		public void WriteStart (RelaxngStart start)
-		{
-			w.Write ("start");
-			if (start.Combine == null)
-				w.Write (" = ");
-			else
-				w.Write (start.Combine.Trim () == "interleave" ?
-					" &= " : " |= ");
-			start.Pattern.WriteRnc (this);
-			w.WriteLine ();
-		}
-
-		// Note that it might not be used directly when a grammar
-		// contains more than one "define" for an identical name
-		// (compact syntax does not support "combine" attribute).
-		public void WriteDefine (RelaxngDefine define)
-		{
-			if (IsKeyword (define.Name))
-				w.Write ('\\');
-			w.Write (define.Name);
-			if (define.Combine == null)
-				w.Write (" = ");
-			else
-				w.Write (define.Combine.Trim () == "interleave" ?
-					" &= " : " |= ");
-			if (define.Patterns.Count == 0)
-				w.Write ("empty");
-			else {
-				define.Patterns [0].WriteRnc (this);
-				for (int i = 1; i < define.Patterns.Count; i++) {
-					w.Write (",");
-					define.Patterns [i].WriteRnc (this);
-				}
-			}
-			w.WriteLine ();
-			w.WriteLine ();
-		}
-
-		public void WriteInclude (RelaxngInclude include)
-		{
-			w.Write ("include ");
-			w.Write (include.Href);
-
-			// FIXME: optInherit?
-
-			if (include.Starts.Count > 0 ||
-				include.Defines.Count > 0 ||
-				include.Divs.Count > 0) {
-				w.Write ('(');
-				WriteGrammarIncludeContents (include.Starts,
-					include.Defines, include.Divs, null);
-				w.Write (')');
-			}
-			w.WriteLine ();
-		}
-
-		public void WriteDiv (RelaxngDiv div)
-		{
-			w.Write ("div { ");
-			WriteGrammarIncludeContents (div.Starts,
-				div.Defines, div.Divs, div.Includes);
-			w.WriteLine ('}');
-		}
-
-		public void WriteNotAllowed (RelaxngNotAllowed na)
-		{
-			w.Write ("notAllowed ");
-		}
-
-		public void WriteEmpty (RelaxngEmpty empty)
-		{
-			w.Write ("empty ");
-		}
-
-		public void WriteText (RelaxngText text)
-		{
-			w.Write ("text ");
-		}
-
-		public void WriteData (RelaxngData data)
-		{
-			WriteQName (data.Type, data.DatatypeLibrary, datansmgr);
-			if (data.ParamList.Count > 0) {
-				w.Write (" { ");
-				foreach (RelaxngParam p in data.ParamList)
-					p.WriteRnc (this);
-				w.Write (" }");
-			}
-			if (data.Except != null)
-				data.Except.WriteRnc (this);
-		}
-
-		public void WriteValue (RelaxngValue v)
-		{
-			WriteQName (v.Type, v.DatatypeLibrary, datansmgr);
-			w.Write (' ');
-			WriteLiteral (v.Value);
-		}
-
-		public void WriteList (RelaxngList p)
-		{
-			w.Write ("list {");
-			WritePatterns (p.Patterns, false);
-			w.Write ("}");
-		}
-
-		public void WriteMixed (RelaxngMixed p)
-		{
-			w.Write ("mixed {");
-			WritePatterns (p.Patterns, false);
-			w.Write ("}");
-		}
-
-		public void WriteElement (RelaxngElement element)
-		{
-			w.Write ("element ");
-			element.NameClass.WriteRnc (this);
-			w.Write (" {");
-			WritePatterns (element.Patterns, false);
-			w.Write ("}");
-		}
-
-		public void WriteAttribute (RelaxngAttribute attribute)
-		{
-			w.Write ("attribute ");
-			attribute.NameClass.WriteRnc (this);
-			w.Write (" {");
-			if (attribute.Pattern == null)
-				w.Write ("empty");
-			else
-				attribute.Pattern.WriteRnc (this);
-			w.Write (" }");
-		}
-
-		public void WriteRef (RelaxngRef r)
-		{
-			if (IsKeyword (r.Name))
-				w.Write ('\\');
-			w.Write (r.Name);
-		}
-
-		public void WriteParentRef (RelaxngParentRef r)
-		{
-			w.Write ("parent ");
-			if (IsKeyword (r.Name))
-				w.Write ('\\');
-			w.Write (r.Name);
-			w.Write (' ');
-		}
-
-		public void WriteExternalRef (RelaxngExternalRef r)
-		{
-			w.Write ("external ");
-			w.Write (r.Href);
-			// FIXME: optInherit?
-			w.Write (' ');
-		}
-
-		public void WriteOneOrMore (RelaxngOneOrMore p)
-		{
-			WritePatterns (p.Patterns, true);
-			w.Write ('+');
-		}
-
-		public void WriteZeroOrMore (RelaxngZeroOrMore p)
-		{
-			WritePatterns (p.Patterns, true);
-			w.Write ('*');
-		}
-
-		public void WriteOptional (RelaxngOptional p)
-		{
-			WritePatterns (p.Patterns, true);
-			w.Write ('?');
-		}
-
-		public void WriteChoice (RelaxngChoice p)
-		{
-			WritePatterns (p.Patterns, '|', false);
-		}
-
-		public void WriteGroup (RelaxngGroup p)
-		{
-			WritePatterns (p.Patterns, ',', false);
-		}
-
-		public void WriteInterleave (RelaxngInterleave p)
-		{
-			WritePatterns (p.Patterns, '&', false);
-		}
-
-		public void WriteParam (RelaxngParam p)
-		{
-			if (IsKeyword (p.Name))
-				w.Write ('\\');
-			w.Write (p.Name);
-			w.Write (" = ");
-			WriteLiteral (p.Value);
-		}
-
-		public void WriteDataExcept (RelaxngExcept e)
-		{
-			w.Write (" - ");
-			WritePatterns (e.Patterns, true);
-		}
-
-		public void WriteGrammar (RelaxngGrammar g)
-		{
-			w.WriteLine ("grammar {");
-			WriteGrammarIncludeContents (g.Starts,
-				g.Defines, g.Divs, g.Includes);
-			w.WriteLine ('}');
-		}
-
-		public void WriteAnyName (RelaxngAnyName n)
-		{
-			w.Write ('*');
-			if (n.Except != null)
-				n.Except.WriteRnc (this);
-		}
-
-		public void WriteNsName (RelaxngNsName n)
-		{
-			WriteQName ("*", n.Namespace);
-			if (n.Except != null)
-				n.Except.WriteRnc (this);
-		}
-
-		public void WriteName (RelaxngName n)
-		{
-			WriteQName (n.LocalName, n.Namespace);
-		}
-
-		public void WriteNameChoice (RelaxngNameChoice c)
-		{
-			WriteNames (c.Children, false);
-		}
-
-		public void WriteNameExcept (RelaxngExceptNameClass e)
-		{
-			w.Write (" - ");
-			WriteNames (e.Names, true);
-		}
-		#endregion
-	}
-}
+//
+// RELAX NG Compact Syntax writer
+//
+// Author:
+//	Atsushi Enomoto <atsushi@ximian.com>
+//
+// (C)2005 Novell Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.IO;
+using System.Xml;
+using Commons.Xml.Relaxng;
+
+using NSResolver = System.Xml.IXmlNamespaceResolver;
+
+namespace Commons.Xml.Relaxng.Rnc
+{
+	internal class RncWriter
+	{
+		static readonly XmlNamespaceManager defaultNamespaceManager;
+
+		static RncWriter ()
+		{
+			XmlNamespaceManager n = new XmlNamespaceManager (
+				new NameTable ());
+			n.AddNamespace ("xs", "http://www.w3.org/2001/XMLSchema-datatypes");
+			defaultNamespaceManager = n;
+		}
+
+		TextWriter w;
+		NSResolver nsmgr;
+		NSResolver datansmgr;
+
+		public RncWriter (TextWriter writer)
+			: this (writer, null, defaultNamespaceManager)
+		{
+		}
+
+		public RncWriter (TextWriter writer, NSResolver nsmgr)
+			: this (writer, nsmgr, defaultNamespaceManager)
+		{
+		}
+
+		public RncWriter (TextWriter writer, NSResolver structureNamespaces, NSResolver dataNamespaces)
+		{
+			this.w = writer;
+			this.nsmgr = structureNamespaces;
+			this.datansmgr = dataNamespaces;
+			XmlNameTable nt = GetNameTable (nsmgr, datansmgr);
+			if (nsmgr == null)
+				nsmgr = new XmlNamespaceManager (nt);
+			if (datansmgr == null)
+				datansmgr = new XmlNamespaceManager (nt);
+		}
+
+		#region Utility methods
+
+		private XmlNameTable GetNameTable (NSResolver nss1, NSResolver nss2)
+		{
+			XmlNameTable nt = null;
+			if (nss1 is XmlNamespaceManager)
+				nt = ((XmlNamespaceManager) nss1).NameTable;
+			if (nss2 is XmlNamespaceManager)
+				nt = ((XmlNamespaceManager) nss2).NameTable;
+			if (nt == null)
+				nt = new NameTable ();
+			return nt;
+		}
+
+		private bool IsKeyword (string name)
+		{
+			switch (name) {
+			case "attribute":
+			case "default":
+			case "datatypes":
+			case "div":
+			case "element":
+			case "empty":
+			case "external":
+			case "grammar":
+			case "include":
+			case "inherit":
+			case "list":
+			case "mixed":
+			case "namespace":
+			case "notAllowed":
+			case "parent":
+			case "start":
+			case "string":
+			case "text":
+			case "token":
+				return true;
+			default:
+				return false;
+			}
+		}
+
+		private void WriteNames (RelaxngNameClassList l, bool wrap)
+		{
+			switch (l.Count) {
+			case 0:
+				throw new RelaxngException ("name choice must contain at least one name class.");
+			case 1:
+				l [0].WriteRnc (this);
+				break;
+			default:
+				if (wrap)
+					w.Write ('(');
+				l [0].WriteRnc (this);
+				for (int i = 1; i < l.Count; i++) {
+					w.Write ('|');
+					l [i].WriteRnc (this);
+				}
+				if (wrap)
+					w.Write (')');
+				break;
+			}
+		}
+
+		private void WritePatterns (RelaxngPatternList l, bool parens)
+		{
+			WritePatterns (l, ',', parens);
+		}
+
+		private void WritePatterns (RelaxngPatternList l,
+			char sep, bool parens)
+		{
+			switch (l.Count) {
+			case 0:
+				w.Write ("empty");
+				break;
+			case 1:
+				parens = (l [0] is RelaxngBinaryContentPattern 
+					|| l [0] is RelaxngData && ((RelaxngData) l [0]).Except != null);
+				if (parens)
+					w.Write ('(');
+				l [0].WriteRnc (this);
+				if (parens)
+					w.Write (')');
+				break;
+			default:
+				if (parens)
+					w.Write ('(');
+				l [0].WriteRnc (this);
+				for (int i = 1; i < l.Count; i++) {
+					if (sep != ',')
+						w.Write (' ');
+					w.Write (sep);
+					w.Write (' ');
+					l [i].WriteRnc (this);
+				}
+				if (parens)
+					w.Write (')');
+				break;
+			}
+		}
+
+		private void WriteGrammarIncludeContents (
+			RelaxngGrammarContentList starts,
+			RelaxngGrammarContentList defines,
+			RelaxngGrammarContentList divs,
+			RelaxngGrammarContentList includes)
+		{
+			if (includes != null) {
+				foreach (RelaxngInclude inc in includes)
+					inc.WriteRnc (this);
+				w.WriteLine ();
+			}
+			if (divs != null) {
+				foreach (RelaxngDiv div in divs)
+					div.WriteRnc (this);
+				w.WriteLine ();
+			}
+			if (starts != null) {
+				foreach (RelaxngStart s in starts)
+					s.WriteRnc (this);
+				w.WriteLine ();
+			}
+			if (defines != null)
+				foreach (RelaxngDefine def in defines)
+					def.WriteRnc (this);
+		}
+
+		private void WriteQName (string name, string ns)
+		{
+			WriteQName (name, ns, nsmgr);
+		}
+
+		private void WriteQName (string name, string ns, NSResolver nss)
+		{
+			string prefix = String.Empty;
+			if (ns != null && ns != String.Empty) {
+				prefix = nss.LookupPrefix (ns);
+			}
+			if (prefix == null)
+				throw new RelaxngException (String.Format ("Namespace '{0}' is not mapped to a prefix in argument XmlNamespaceManager.", ns));
+			if (prefix != String.Empty) {
+				w.Write (prefix);
+				w.Write (':');
+			}
+			if (IsKeyword (name))
+				w.Write ('\\');
+			w.Write (name);
+		}
+
+		private void WriteLiteral (string value)
+		{
+			w.Write ('"');
+			for (int i = 0; i < value.Length; i++) {
+				switch (value [i]) {
+				case '"':
+					w.Write ("\\x{22}");
+					break;
+				case '\r':
+					w.Write ("\\x{13}");
+					break;
+				case '\n':
+					w.Write ("\\x{10}");
+					break;
+				case '\t': // It is not required, but would be better.
+					w.Write ("\\x{9}");
+					break;
+				default:
+					w.Write (value [i]);
+					break;
+				}
+			}
+			w.Write ('"');
+		}
+
+		#endregion
+
+		public void WriteNamespaces (string defaultNamespace)
+		{
+			WriteNamespaces (defaultNamespace, nsmgr, false);
+			WriteNamespaces (null, datansmgr, true);
+		}
+
+		public void WriteNamespaces (string defaultNamespace, NSResolver nsmgr, bool isData)
+		{
+			if (defaultNamespace == null)
+				defaultNamespace = String.Empty;
+
+			if (defaultNamespace.Length > 0)
+				w.WriteLine ("default namespace = {0}",
+					defaultNamespace);
+
+			if (nsmgr != null) {
+				foreach (string s in nsmgr.GetNamespacesInScope (
+					XmlNamespaceScope.All).Keys) {
+					switch (s) {
+					case "xml":
+					case "xmlns":
+						continue;
+					case "":
+						if (defaultNamespace.Length > 0)
+							w.WriteLine ("default namespace = '{0}'",
+								nsmgr.LookupNamespace (s).Replace ('\'', '\"'));
+						break;
+					default:
+						w.WriteLine ("{2} {0} = '{1}'",
+							s,
+							nsmgr.LookupNamespace (s).Replace ('\'', '\"'),
+							isData ? "datatypes" : "namespace");
+						break;
+					}
+				}
+			}
+			w.WriteLine ();
+		}
+
+		#region Elements
+		// Note that it might not be used directly when a grammar
+		// contains more than one "start" (compact syntax does not
+		// support "combine" attribute).
+		public void WriteStart (RelaxngStart start)
+		{
+			w.Write ("start");
+			if (start.Combine == null)
+				w.Write (" = ");
+			else
+				w.Write (start.Combine.Trim () == "interleave" ?
+					" &= " : " |= ");
+			start.Pattern.WriteRnc (this);
+			w.WriteLine ();
+		}
+
+		// Note that it might not be used directly when a grammar
+		// contains more than one "define" for an identical name
+		// (compact syntax does not support "combine" attribute).
+		public void WriteDefine (RelaxngDefine define)
+		{
+			if (IsKeyword (define.Name))
+				w.Write ('\\');
+			w.Write (define.Name);
+			if (define.Combine == null)
+				w.Write (" = ");
+			else
+				w.Write (define.Combine.Trim () == "interleave" ?
+					" &= " : " |= ");
+			if (define.Patterns.Count == 0)
+				w.Write ("empty");
+			else {
+				define.Patterns [0].WriteRnc (this);
+				for (int i = 1; i < define.Patterns.Count; i++) {
+					w.Write (",");
+					define.Patterns [i].WriteRnc (this);
+				}
+			}
+			w.WriteLine ();
+			w.WriteLine ();
+		}
+
+		public void WriteInclude (RelaxngInclude include)
+		{
+			w.Write ("include ");
+			w.Write (include.Href);
+
+			// FIXME: optInherit?
+
+			if (include.Starts.Count > 0 ||
+				include.Defines.Count > 0 ||
+				include.Divs.Count > 0) {
+				w.Write ('(');
+				WriteGrammarIncludeContents (include.Starts,
+					include.Defines, include.Divs, null);
+				w.Write (')');
+			}
+			w.WriteLine ();
+		}
+
+		public void WriteDiv (RelaxngDiv div)
+		{
+			w.Write ("div { ");
+			WriteGrammarIncludeContents (div.Starts,
+				div.Defines, div.Divs, div.Includes);
+			w.WriteLine ('}');
+		}
+
+		public void WriteNotAllowed (RelaxngNotAllowed na)
+		{
+			w.Write ("notAllowed ");
+		}
+
+		public void WriteEmpty (RelaxngEmpty empty)
+		{
+			w.Write ("empty ");
+		}
+
+		public void WriteText (RelaxngText text)
+		{
+			w.Write ("text ");
+		}
+
+		public void WriteData (RelaxngData data)
+		{
+			WriteQName (data.Type, data.DatatypeLibrary, datansmgr);
+			if (data.ParamList.Count > 0) {
+				w.Write (" { ");
+				foreach (RelaxngParam p in data.ParamList)
+					p.WriteRnc (this);
+				w.Write (" }");
+			}
+			if (data.Except != null)
+				data.Except.WriteRnc (this);
+		}
+
+		public void WriteValue (RelaxngValue v)
+		{
+			WriteQName (v.Type, v.DatatypeLibrary, datansmgr);
+			w.Write (' ');
+			WriteLiteral (v.Value);
+		}
+
+		public void WriteList (RelaxngList p)
+		{
+			w.Write ("list {");
+			WritePatterns (p.Patterns, false);
+			w.Write ("}");
+		}
+
+		public void WriteMixed (RelaxngMixed p)
+		{
+			w.Write ("mixed {");
+			WritePatterns (p.Patterns, false);
+			w.Write ("}");
+		}
+
+		public void WriteElement (RelaxngElement element)
+		{
+			w.Write ("element ");
+			element.NameClass.WriteRnc (this);
+			w.Write (" {");
+			WritePatterns (element.Patterns, false);
+			w.Write ("}");
+		}
+
+		public void WriteAttribute (RelaxngAttribute attribute)
+		{
+			w.Write ("attribute ");
+			attribute.NameClass.WriteRnc (this);
+			w.Write (" {");
+			if (attribute.Pattern == null)
+				w.Write ("empty");
+			else
+				attribute.Pattern.WriteRnc (this);
+			w.Write (" }");
+		}
+
+		public void WriteRef (RelaxngRef r)
+		{
+			if (IsKeyword (r.Name))
+				w.Write ('\\');
+			w.Write (r.Name);
+		}
+
+		public void WriteParentRef (RelaxngParentRef r)
+		{
+			w.Write ("parent ");
+			if (IsKeyword (r.Name))
+				w.Write ('\\');
+			w.Write (r.Name);
+			w.Write (' ');
+		}
+
+		public void WriteExternalRef (RelaxngExternalRef r)
+		{
+			w.Write ("external ");
+			w.Write (r.Href);
+			// FIXME: optInherit?
+			w.Write (' ');
+		}
+
+		public void WriteOneOrMore (RelaxngOneOrMore p)
+		{
+			WritePatterns (p.Patterns, true);
+			w.Write ('+');
+		}
+
+		public void WriteZeroOrMore (RelaxngZeroOrMore p)
+		{
+			WritePatterns (p.Patterns, true);
+			w.Write ('*');
+		}
+
+		public void WriteOptional (RelaxngOptional p)
+		{
+			WritePatterns (p.Patterns, true);
+			w.Write ('?');
+		}
+
+		public void WriteChoice (RelaxngChoice p)
+		{
+			WritePatterns (p.Patterns, '|', false);
+		}
+
+		public void WriteGroup (RelaxngGroup p)
+		{
+			WritePatterns (p.Patterns, ',', false);
+		}
+
+		public void WriteInterleave (RelaxngInterleave p)
+		{
+			WritePatterns (p.Patterns, '&', false);
+		}
+
+		public void WriteParam (RelaxngParam p)
+		{
+			if (IsKeyword (p.Name))
+				w.Write ('\\');
+			w.Write (p.Name);
+			w.Write (" = ");
+			WriteLiteral (p.Value);
+		}
+
+		public void WriteDataExcept (RelaxngExcept e)
+		{
+			w.Write (" - ");
+			WritePatterns (e.Patterns, true);
+		}
+
+		public void WriteGrammar (RelaxngGrammar g)
+		{
+			w.WriteLine ("grammar {");
+			WriteGrammarIncludeContents (g.Starts,
+				g.Defines, g.Divs, g.Includes);
+			w.WriteLine ('}');
+		}
+
+		public void WriteAnyName (RelaxngAnyName n)
+		{
+			w.Write ('*');
+			if (n.Except != null)
+				n.Except.WriteRnc (this);
+		}
+
+		public void WriteNsName (RelaxngNsName n)
+		{
+			WriteQName ("*", n.Namespace);
+			if (n.Except != null)
+				n.Except.WriteRnc (this);
+		}
+
+		public void WriteName (RelaxngName n)
+		{
+			WriteQName (n.LocalName, n.Namespace);
+		}
+
+		public void WriteNameChoice (RelaxngNameChoice c)
+		{
+			WriteNames (c.Children, false);
+		}
+
+		public void WriteNameExcept (RelaxngExceptNameClass e)
+		{
+			w.Write (" - ");
+			WriteNames (e.Names, true);
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Commons.Xml/XmlDefaultReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Commons.Xml/XmlDefaultReader.cs
@@ -1,246 +1,246 @@
-//
-// Commons.Xml.XmlDefaultReader.cs
-//
-// Author:
-//	Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
-//
-// 2003 Atsushi Enomoto "No rights reserved."
-//
-// Copyright (c) 2004 Novell Inc.
-// All rights reserved
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-//
-// Similar to SAX DefaultHandler
-//
-
-using System;
-using System.Xml;
-
-namespace Commons.Xml
-{
-	public class XmlDefaultReader : XmlReader, IXmlLineInfo
-	{
-		XmlReader reader;
-		IXmlLineInfo lineInfo;
-
-		public XmlDefaultReader (XmlReader reader)
-		{
-			this.reader = reader;
-			this.lineInfo = reader as IXmlLineInfo;
-		}
-
-		#region Properties
-		// This is the only one non-overriden property.
-		public XmlReader Reader {
-			get { return reader; }
-		}
-
-		public int LineNumber {
-			get { return lineInfo != null ? lineInfo.LineNumber : 0; }
-		}
-		
-		public int LinePosition {
-			get { return lineInfo != null ? lineInfo.LinePosition : 0; }
-		}
-		
-		public override XmlNodeType NodeType 
-		{
-			get { return reader.NodeType; }
-		}
-
-		public override string Name {
-			get { return reader.Name; }
-		}
-
-		public override string LocalName {
-			get { return reader.LocalName; }
-		}
-
-		public override string NamespaceURI {
-			get { return reader.NamespaceURI; }
-		}
-
-		public override string Prefix {
-			get { return reader.Prefix; }
-		}
-
-		public override bool HasValue {
-			get { return reader.HasValue; }
-		}
-
-		public override int Depth {
-			get { return reader.Depth; }
-		}
-
-		public override string Value {
-			get { return reader.Value; }
-		}
-
-		public override string BaseURI {
-			get { return reader.BaseURI; }
-		}
-
-		public override bool IsEmptyElement {
-			get { return reader.IsEmptyElement; }
-		}
-
-		public override bool IsDefault {
-			get { return reader.IsDefault; }
-		}
-
-		public override char QuoteChar {
-			get { return reader.QuoteChar; }
-		}
-
-		public override string XmlLang {
-			get { return reader.XmlLang; }
-		}
-
-		public override XmlSpace XmlSpace {
-			get { return reader.XmlSpace; }
-		}
-
-		public override int AttributeCount {
-			get { return reader.AttributeCount; }
-		}
-
-		public override string this [int i] {
-			get { return reader [i]; }
-		}
-
-		public override string this [string name] {
-			get { return reader [name]; }
-		}
-
-		public override string this [string localName, string namespaceURI] {
-			get { return reader [localName, namespaceURI]; }
-		}
-
-		public override bool EOF {
-			get { return reader.EOF; }
-		}
-
-		public override ReadState ReadState {
-			get { return reader.ReadState; }
-		}
-
-		public override XmlNameTable NameTable {
-			get { return reader.NameTable; }
-		}
-		#endregion
-
-		#region Methods
-
-		public override string GetAttribute (string name)
-		{
-			return reader.GetAttribute (name);
-		}
-
-		public override string GetAttribute (string localName, string namespaceURI)
-		{
-			return reader.GetAttribute (localName, namespaceURI);
-		}
-
-		public override string GetAttribute (int i)
-		{
-			return reader.GetAttribute (i);
-		}
-
-		public bool HasLineInfo ()
-		{
-			return lineInfo != null ? lineInfo.HasLineInfo () : false;
-		}
-
-		public override bool MoveToAttribute (string name)
-		{
-			return reader.MoveToAttribute (name);
-		}
-
-		public override bool MoveToAttribute (string localName, string namespaceURI)
-		{
-			return reader.MoveToAttribute (localName, namespaceURI);
-		}
-
-		public override void MoveToAttribute (int i)
-		{
-			reader.MoveToAttribute (i);
-		}
-
-		public override bool MoveToFirstAttribute ()
-		{
-			return reader.MoveToFirstAttribute ();
-		}
-
-		public override bool MoveToNextAttribute ()
-		{
-			return reader.MoveToNextAttribute ();
-		}
-
-		public override bool MoveToElement ()
-		{
-			return reader.MoveToElement ();
-		}
-
-		public override void Close ()
-		{
-			reader.Close ();
-		}
-
-		public override bool Read ()
-		{
-			return Reader.Read ();
-		}
-
-/*
-		public override string ReadString ()
-		{
-			return reader.ReadString ();
-		}
-
-		public override string ReadInnerXml ()
-		{
-			return reader.ReadInnerXml ();
-		}
-
-		public override string ReadOuterXml ()
-		{
-			return reader.ReadOuterXml ();
-		}
-*/
-
-		public override string LookupNamespace (string prefix)
-		{
-			return reader.LookupNamespace (prefix);
-		}
-
-		public override void ResolveEntity ()
-		{
-			reader.ResolveEntity ();
-		}
-
-		public override bool ReadAttributeValue () {
-			return reader.ReadAttributeValue ();
-		}
-		#endregion
-	}
-}
+//
+// Commons.Xml.XmlDefaultReader.cs
+//
+// Author:
+//	Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
+//
+// 2003 Atsushi Enomoto "No rights reserved."
+//
+// Copyright (c) 2004 Novell Inc.
+// All rights reserved
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// Similar to SAX DefaultHandler
+//
+
+using System;
+using System.Xml;
+
+namespace Commons.Xml
+{
+	public class XmlDefaultReader : XmlReader, IXmlLineInfo
+	{
+		XmlReader reader;
+		IXmlLineInfo lineInfo;
+
+		public XmlDefaultReader (XmlReader reader)
+		{
+			this.reader = reader;
+			this.lineInfo = reader as IXmlLineInfo;
+		}
+
+		#region Properties
+		// This is the only one non-overriden property.
+		public XmlReader Reader {
+			get { return reader; }
+		}
+
+		public int LineNumber {
+			get { return lineInfo != null ? lineInfo.LineNumber : 0; }
+		}
+		
+		public int LinePosition {
+			get { return lineInfo != null ? lineInfo.LinePosition : 0; }
+		}
+		
+		public override XmlNodeType NodeType 
+		{
+			get { return reader.NodeType; }
+		}
+
+		public override string Name {
+			get { return reader.Name; }
+		}
+
+		public override string LocalName {
+			get { return reader.LocalName; }
+		}
+
+		public override string NamespaceURI {
+			get { return reader.NamespaceURI; }
+		}
+
+		public override string Prefix {
+			get { return reader.Prefix; }
+		}
+
+		public override bool HasValue {
+			get { return reader.HasValue; }
+		}
+
+		public override int Depth {
+			get { return reader.Depth; }
+		}
+
+		public override string Value {
+			get { return reader.Value; }
+		}
+
+		public override string BaseURI {
+			get { return reader.BaseURI; }
+		}
+
+		public override bool IsEmptyElement {
+			get { return reader.IsEmptyElement; }
+		}
+
+		public override bool IsDefault {
+			get { return reader.IsDefault; }
+		}
+
+		public override char QuoteChar {
+			get { return reader.QuoteChar; }
+		}
+
+		public override string XmlLang {
+			get { return reader.XmlLang; }
+		}
+
+		public override XmlSpace XmlSpace {
+			get { return reader.XmlSpace; }
+		}
+
+		public override int AttributeCount {
+			get { return reader.AttributeCount; }
+		}
+
+		public override string this [int i] {
+			get { return reader [i]; }
+		}
+
+		public override string this [string name] {
+			get { return reader [name]; }
+		}
+
+		public override string this [string localName, string namespaceURI] {
+			get { return reader [localName, namespaceURI]; }
+		}
+
+		public override bool EOF {
+			get { return reader.EOF; }
+		}
+
+		public override ReadState ReadState {
+			get { return reader.ReadState; }
+		}
+
+		public override XmlNameTable NameTable {
+			get { return reader.NameTable; }
+		}
+		#endregion
+
+		#region Methods
+
+		public override string GetAttribute (string name)
+		{
+			return reader.GetAttribute (name);
+		}
+
+		public override string GetAttribute (string localName, string namespaceURI)
+		{
+			return reader.GetAttribute (localName, namespaceURI);
+		}
+
+		public override string GetAttribute (int i)
+		{
+			return reader.GetAttribute (i);
+		}
+
+		public bool HasLineInfo ()
+		{
+			return lineInfo != null ? lineInfo.HasLineInfo () : false;
+		}
+
+		public override bool MoveToAttribute (string name)
+		{
+			return reader.MoveToAttribute (name);
+		}
+
+		public override bool MoveToAttribute (string localName, string namespaceURI)
+		{
+			return reader.MoveToAttribute (localName, namespaceURI);
+		}
+
+		public override void MoveToAttribute (int i)
+		{
+			reader.MoveToAttribute (i);
+		}
+
+		public override bool MoveToFirstAttribute ()
+		{
+			return reader.MoveToFirstAttribute ();
+		}
+
+		public override bool MoveToNextAttribute ()
+		{
+			return reader.MoveToNextAttribute ();
+		}
+
+		public override bool MoveToElement ()
+		{
+			return reader.MoveToElement ();
+		}
+
+		public override void Close ()
+		{
+			reader.Close ();
+		}
+
+		public override bool Read ()
+		{
+			return Reader.Read ();
+		}
+
+/*
+		public override string ReadString ()
+		{
+			return reader.ReadString ();
+		}
+
+		public override string ReadInnerXml ()
+		{
+			return reader.ReadInnerXml ();
+		}
+
+		public override string ReadOuterXml ()
+		{
+			return reader.ReadOuterXml ();
+		}
+*/
+
+		public override string LookupNamespace (string prefix)
+		{
+			return reader.LookupNamespace (prefix);
+		}
+
+		public override void ResolveEntity ()
+		{
+			reader.ResolveEntity ();
+		}
+
+		public override bool ReadAttributeValue () {
+			return reader.ReadAttributeValue ();
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/Nvdl.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/Nvdl.xml
@@ -1,50 +1,50 @@
-<Type Name="Nvdl" FullName="Commons.Xml.Nvdl.Nvdl">
-  <TypeSignature Language="C#" Value="public class Nvdl" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public const string Namespace;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>Represents the namespace URI for NVDL grammar.</summary>
-        <remarks>The value is http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0 .</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BuiltInValidationNamespace">
-      <MemberSignature Language="C#" Value="public const string BuiltInValidationNamespace;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>Represents the namespace URI for built-in NVDL validation.</summary>
-        <remarks>The value is http://purl.oclc.org/dsdl/nvdl/ns/predefinedSchema/1.0 .</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="InstanceNamespace">
-      <MemberSignature Language="C#" Value="public const string InstanceNamespace;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>Represents the namespace URI for NVDL instance.</summary>
-        <remarks>The value is http://purl.oclc.org/dsdl/nvdl/ns/instance/1.0 .</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Holds constants for several NVDL related namespace URIs.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="Nvdl" FullName="Commons.Xml.Nvdl.Nvdl">
+  <TypeSignature Language="C#" Value="public class Nvdl" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Namespace">
+      <MemberSignature Language="C#" Value="public const string Namespace;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>Represents the namespace URI for NVDL grammar.</summary>
+        <remarks>The value is http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0 .</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BuiltInValidationNamespace">
+      <MemberSignature Language="C#" Value="public const string BuiltInValidationNamespace;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>Represents the namespace URI for built-in NVDL validation.</summary>
+        <remarks>The value is http://purl.oclc.org/dsdl/nvdl/ns/predefinedSchema/1.0 .</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="InstanceNamespace">
+      <MemberSignature Language="C#" Value="public const string InstanceNamespace;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>Represents the namespace URI for NVDL instance.</summary>
+        <remarks>The value is http://purl.oclc.org/dsdl/nvdl/ns/instance/1.0 .</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Holds constants for several NVDL related namespace URIs.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAction.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAction.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlAction" FullName="Commons.Xml.Nvdl.NvdlAction">
-  <TypeSignature Language="C#" Value="public abstract class NvdlAction : Commons.Xml.Nvdl.NvdlAttributable" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected NvdlAction ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>Default constructor for NVDL "action" element.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Represents "action" element of NVDL grammar object model.</summary>
-    <remarks>This class represents NVDL "action" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlAction" FullName="Commons.Xml.Nvdl.NvdlAction">
+  <TypeSignature Language="C#" Value="public abstract class NvdlAction : Commons.Xml.Nvdl.NvdlAttributable" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected NvdlAction ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>Default constructor for NVDL "action" element.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Represents "action" element of NVDL grammar object model.</summary>
+    <remarks>This class represents NVDL "action" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlActionList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlActionList.xml
@@ -1,77 +1,77 @@
-<Type Name="NvdlActionList" FullName="Commons.Xml.Nvdl.NvdlActionList">
-  <TypeSignature Language="C#" Value="public class NvdlActionList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlActionList ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlAction item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlAction" />
-      </Parameters>
-      <Docs>
-        <param name="item">NVDL "action" element to add.</param>
-        <summary>Adds an "action" to this collection.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlAction item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlAction" />
-      </Parameters>
-      <Docs>
-        <param name="item">Target NVDL "action" item to remove.</param>
-        <summary>Removes an NVDL "action" from this collection.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlAction Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlAction</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="i">Index to the target "action".</param>
-        <summary>Gets or sets the target "action" element.</summary>
-        <value>The target "action" element.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Typed collection for <see cref="T:Commons.Xml.Nvdl.NvdlAction" />.</summary>
-    <remarks>This class is a collection for <see cref="T:Commons.Xml.Nvdl.NvdlAction" />.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlActionList" FullName="Commons.Xml.Nvdl.NvdlActionList">
+  <TypeSignature Language="C#" Value="public class NvdlActionList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlActionList ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlAction item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlAction" />
+      </Parameters>
+      <Docs>
+        <param name="item">NVDL "action" element to add.</param>
+        <summary>Adds an "action" to this collection.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlAction item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlAction" />
+      </Parameters>
+      <Docs>
+        <param name="item">Target NVDL "action" item to remove.</param>
+        <summary>Removes an NVDL "action" from this collection.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlAction Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlAction</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="i">Index to the target "action".</param>
+        <summary>Gets or sets the target "action" element.</summary>
+        <value>The target "action" element.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Typed collection for <see cref="T:Commons.Xml.Nvdl.NvdlAction" />.</summary>
+    <remarks>This class is a collection for <see cref="T:Commons.Xml.Nvdl.NvdlAction" />.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAllow.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAllow.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlAllow" FullName="Commons.Xml.Nvdl.NvdlAllow">
-  <TypeSignature Language="C#" Value="public class NvdlAllow : Commons.Xml.Nvdl.NvdlNoResultAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoResultAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlAllow ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Represents an NVDL "allow" element.</summary>
-    <remarks>This class represents NVDL "allow" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlAllow" FullName="Commons.Xml.Nvdl.NvdlAllow">
+  <TypeSignature Language="C#" Value="public class NvdlAllow : Commons.Xml.Nvdl.NvdlNoResultAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoResultAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlAllow ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Represents an NVDL "allow" element.</summary>
+    <remarks>This class represents NVDL "allow" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAnyNamespace.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAnyNamespace.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlAnyNamespace" FullName="Commons.Xml.Nvdl.NvdlAnyNamespace">
-  <TypeSignature Language="C#" Value="public class NvdlAnyNamespace : Commons.Xml.Nvdl.NvdlRule" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlRule</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlAnyNamespace ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Represents an NVDL "anyNamespace" element.</summary>
-    <remarks>This class represents NVDL "allow" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlAnyNamespace" FullName="Commons.Xml.Nvdl.NvdlAnyNamespace">
+  <TypeSignature Language="C#" Value="public class NvdlAnyNamespace : Commons.Xml.Nvdl.NvdlRule" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlRule</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlAnyNamespace ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Represents an NVDL "anyNamespace" element.</summary>
+    <remarks>This class represents NVDL "allow" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAttach.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAttach.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlAttach" FullName="Commons.Xml.Nvdl.NvdlAttach">
-  <TypeSignature Language="C#" Value="public class NvdlAttach : Commons.Xml.Nvdl.NvdlResultAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlResultAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlAttach ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Represents an NVDL "attach" element.</summary>
-    <remarks>This class represents NVDL "attach" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlAttach" FullName="Commons.Xml.Nvdl.NvdlAttach">
+  <TypeSignature Language="C#" Value="public class NvdlAttach : Commons.Xml.Nvdl.NvdlResultAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlResultAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlAttach ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Represents an NVDL "attach" element.</summary>
+    <remarks>This class represents NVDL "attach" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAttachPlaceHolder.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAttachPlaceHolder.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlAttachPlaceHolder" FullName="Commons.Xml.Nvdl.NvdlAttachPlaceHolder">
-  <TypeSignature Language="C#" Value="public class NvdlAttachPlaceHolder : Commons.Xml.Nvdl.NvdlResultAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlResultAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlAttachPlaceHolder ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Represents an NVDL "attachPlaceHolder" element.</summary>
-    <remarks>This class represents NVDL "attachPlaceHolder" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlAttachPlaceHolder" FullName="Commons.Xml.Nvdl.NvdlAttachPlaceHolder">
+  <TypeSignature Language="C#" Value="public class NvdlAttachPlaceHolder : Commons.Xml.Nvdl.NvdlResultAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlResultAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlAttachPlaceHolder ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Represents an NVDL "attachPlaceHolder" element.</summary>
+    <remarks>This class represents NVDL "attachPlaceHolder" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAttributable.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlAttributable.xml
@@ -1,38 +1,38 @@
-<Type Name="NvdlAttributable" FullName="Commons.Xml.Nvdl.NvdlAttributable">
-  <TypeSignature Language="C#" Value="public class NvdlAttributable : Commons.Xml.Nvdl.NvdlElementBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlElementBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlAttributable ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Foreign">
-      <MemberSignature Language="C#" Value="public System.Collections.ArrayList Foreign { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Collections.ArrayList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>Holds the all foreign attributes.</summary>
-        <value>A list that holds the entire foreign attributes.</value>
-        <remarks>This list holds the entire foreign attributes. Here "foreign" means those attributes whose namespace URI is neither empty nor NVDL structure namespace (see <see cref="F:Commons.Xml.Nvdl.Nvdl.NvdlNamespace" />). </remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Represents an abstract NVDL element that can hold foreign attribute.</summary>
-    <remarks>This class represents an abstract NVDL element that can hold foreign attribute. Here "foreign" means those attributes whose namespace URI is neither empty nor NVDL structure namespace (see <see cref="F:Commons.Xml.Nvdl.Nvdl.NvdlNamespace" />). For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlAttributable" FullName="Commons.Xml.Nvdl.NvdlAttributable">
+  <TypeSignature Language="C#" Value="public class NvdlAttributable : Commons.Xml.Nvdl.NvdlElementBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlElementBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlAttributable ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Foreign">
+      <MemberSignature Language="C#" Value="public System.Collections.ArrayList Foreign { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Collections.ArrayList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>Holds the all foreign attributes.</summary>
+        <value>A list that holds the entire foreign attributes.</value>
+        <remarks>This list holds the entire foreign attributes. Here "foreign" means those attributes whose namespace URI is neither empty nor NVDL structure namespace (see <see cref="F:Commons.Xml.Nvdl.Nvdl.NvdlNamespace" />). </remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Represents an abstract NVDL element that can hold foreign attribute.</summary>
+    <remarks>This class represents an abstract NVDL element that can hold foreign attribute. Here "foreign" means those attributes whose namespace URI is neither empty nor NVDL structure namespace (see <see cref="F:Commons.Xml.Nvdl.Nvdl.NvdlNamespace" />). For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlBuiltInValidationProvider.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlBuiltInValidationProvider.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlBuiltInValidationProvider" FullName="Commons.Xml.Nvdl.NvdlBuiltInValidationProvider">
-  <TypeSignature Language="C#" Value="public class NvdlBuiltInValidationProvider : Commons.Xml.Nvdl.NvdlValidationProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlValidationProvider</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlBuiltInValidationProvider ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Validator implementation for built-in NVDL namespace.</summary>
-    <remarks>This validation provider implements a validation feature for built-in NVDL namespace. In this namespace, the rule is simple; any of input XML instances are either allowed or rejected.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlBuiltInValidationProvider" FullName="Commons.Xml.Nvdl.NvdlBuiltInValidationProvider">
+  <TypeSignature Language="C#" Value="public class NvdlBuiltInValidationProvider : Commons.Xml.Nvdl.NvdlValidationProvider" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlValidationProvider</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlBuiltInValidationProvider ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Validator implementation for built-in NVDL namespace.</summary>
+    <remarks>This validation provider implements a validation feature for built-in NVDL namespace. In this namespace, the rule is simple; any of input XML instances are either allowed or rejected.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlCancelAction.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlCancelAction.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlCancelAction" FullName="Commons.Xml.Nvdl.NvdlCancelAction">
-  <TypeSignature Language="C#" Value="public class NvdlCancelAction : Commons.Xml.Nvdl.NvdlAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlCancelAction ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>Represents an NVDL "cancelNestedAction" element.</summary>
-    <remarks>This class represents NVDL "cancelNestedAction" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlCancelAction" FullName="Commons.Xml.Nvdl.NvdlCancelAction">
+  <TypeSignature Language="C#" Value="public class NvdlCancelAction : Commons.Xml.Nvdl.NvdlAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlCancelAction ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>Represents an NVDL "cancelNestedAction" element.</summary>
+    <remarks>This class represents NVDL "cancelNestedAction" element. For the entire NVDL grammar, see http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/fcd/nvdl-fcd.pdf .</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlCompileException.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlCompileException.xml
@@ -1,47 +1,47 @@
-<Type Name="NvdlCompileException" FullName="Commons.Xml.Nvdl.NvdlCompileException">
-  <TypeSignature Language="C#" Value="public class NvdlCompileException : Commons.Xml.Nvdl.NvdlException" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlException</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlCompileException (string message, System.Xml.IXmlLineInfo source);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <param name="source">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlCompileException (string message, Exception inner, System.Xml.IXmlLineInfo source);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-        <Parameter Name="inner" Type="System.Exception" />
-        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <param name="inner">To be added.</param>
-        <param name="source">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlCompileException" FullName="Commons.Xml.Nvdl.NvdlCompileException">
+  <TypeSignature Language="C#" Value="public class NvdlCompileException : Commons.Xml.Nvdl.NvdlException" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlException</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlCompileException (string message, System.Xml.IXmlLineInfo source);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <param name="source">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlCompileException (string message, Exception inner, System.Xml.IXmlLineInfo source);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+        <Parameter Name="inner" Type="System.Exception" />
+        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <param name="inner">To be added.</param>
+        <param name="source">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlConfig.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlConfig.xml
@@ -1,71 +1,71 @@
-<Type Name="NvdlConfig" FullName="Commons.Xml.Nvdl.NvdlConfig">
-  <TypeSignature Language="C#" Value="public class NvdlConfig" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlConfig ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddProvider">
-      <MemberSignature Language="C#" Value="public void AddProvider (Commons.Xml.Nvdl.NvdlValidationProvider provider);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="provider" Type="Commons.Xml.Nvdl.NvdlValidationProvider" />
-      </Parameters>
-      <Docs>
-        <param name="provider">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetGenerator">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlValidatorGenerator GetGenerator (Commons.Xml.Nvdl.NvdlValidate validate, string inheritSchemaType);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlValidatorGenerator</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="validate" Type="Commons.Xml.Nvdl.NvdlValidate" />
-        <Parameter Name="inheritSchemaType" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="validate">To be added.</param>
-        <param name="inheritSchemaType">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="XmlResolver">
-      <MemberSignature Language="C#" Value="public System.Xml.XmlResolver XmlResolver { set; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlResolver</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlConfig" FullName="Commons.Xml.Nvdl.NvdlConfig">
+  <TypeSignature Language="C#" Value="public class NvdlConfig" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlConfig ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AddProvider">
+      <MemberSignature Language="C#" Value="public void AddProvider (Commons.Xml.Nvdl.NvdlValidationProvider provider);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="provider" Type="Commons.Xml.Nvdl.NvdlValidationProvider" />
+      </Parameters>
+      <Docs>
+        <param name="provider">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetGenerator">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlValidatorGenerator GetGenerator (Commons.Xml.Nvdl.NvdlValidate validate, string inheritSchemaType);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlValidatorGenerator</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="validate" Type="Commons.Xml.Nvdl.NvdlValidate" />
+        <Parameter Name="inheritSchemaType" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="validate">To be added.</param>
+        <param name="inheritSchemaType">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="XmlResolver">
+      <MemberSignature Language="C#" Value="public System.Xml.XmlResolver XmlResolver { set; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlResolver</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlContext.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlContext.xml
@@ -1,62 +1,62 @@
-<Type Name="NvdlContext" FullName="Commons.Xml.Nvdl.NvdlContext">
-  <TypeSignature Language="C#" Value="public class NvdlContext : Commons.Xml.Nvdl.NvdlAttributable" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlContext ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Path">
-      <MemberSignature Language="C#" Value="public string Path { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UseMode">
-      <MemberSignature Language="C#" Value="public string UseMode { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedMode">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlNestedMode NestedMode { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlNestedMode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlContext" FullName="Commons.Xml.Nvdl.NvdlContext">
+  <TypeSignature Language="C#" Value="public class NvdlContext : Commons.Xml.Nvdl.NvdlAttributable" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlContext ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Path">
+      <MemberSignature Language="C#" Value="public string Path { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="UseMode">
+      <MemberSignature Language="C#" Value="public string UseMode { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NestedMode">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlNestedMode NestedMode { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlNestedMode</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlContextList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlContextList.xml
@@ -1,77 +1,77 @@
-<Type Name="NvdlContextList" FullName="Commons.Xml.Nvdl.NvdlContextList">
-  <TypeSignature Language="C#" Value="public class NvdlContextList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlContextList ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlContext item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlContext" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlContext item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlContext" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlContext Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlContext</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlContextList" FullName="Commons.Xml.Nvdl.NvdlContextList">
+  <TypeSignature Language="C#" Value="public class NvdlContextList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlContextList ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlContext item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlContext" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlContext item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlContext" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlContext Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlContext</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="i">To be added.</param>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlElementBase.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlElementBase.xml
@@ -1,79 +1,79 @@
-<Type Name="NvdlElementBase" FullName="Commons.Xml.Nvdl.NvdlElementBase">
-  <TypeSignature Language="C#" Value="public class NvdlElementBase : System.Xml.IXmlLineInfo" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>System.Xml.IXmlLineInfo</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlElementBase ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasLineInfo">
-      <MemberSignature Language="C#" Value="public bool HasLineInfo ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LineNumber">
-      <MemberSignature Language="C#" Value="public int LineNumber { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LinePosition">
-      <MemberSignature Language="C#" Value="public int LinePosition { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SourceUri">
-      <MemberSignature Language="C#" Value="public string SourceUri { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlElementBase" FullName="Commons.Xml.Nvdl.NvdlElementBase">
+  <TypeSignature Language="C#" Value="public class NvdlElementBase : System.Xml.IXmlLineInfo" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces>
+    <Interface>
+      <InterfaceName>System.Xml.IXmlLineInfo</InterfaceName>
+    </Interface>
+  </Interfaces>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlElementBase ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="HasLineInfo">
+      <MemberSignature Language="C#" Value="public bool HasLineInfo ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LineNumber">
+      <MemberSignature Language="C#" Value="public int LineNumber { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LinePosition">
+      <MemberSignature Language="C#" Value="public int LinePosition { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="SourceUri">
+      <MemberSignature Language="C#" Value="public string SourceUri { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlException.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlException.xml
@@ -1,43 +1,43 @@
-<Type Name="NvdlException" FullName="Commons.Xml.Nvdl.NvdlException">
-  <TypeSignature Language="C#" Value="public class NvdlException : System.Exception" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Exception</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlException (string message);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlException (string message, Exception inner);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-        <Parameter Name="inner" Type="System.Exception" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <param name="inner">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlException" FullName="Commons.Xml.Nvdl.NvdlException">
+  <TypeSignature Language="C#" Value="public class NvdlException : System.Exception" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Exception</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlException (string message);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlException (string message, Exception inner);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+        <Parameter Name="inner" Type="System.Exception" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <param name="inner">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlIncludedMode.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlIncludedMode.xml
@@ -1,38 +1,38 @@
-<Type Name="NvdlIncludedMode" FullName="Commons.Xml.Nvdl.NvdlIncludedMode">
-  <TypeSignature Language="C#" Value="public class NvdlIncludedMode : Commons.Xml.Nvdl.NvdlModeBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlModeBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlIncludedMode ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlIncludedMode" FullName="Commons.Xml.Nvdl.NvdlIncludedMode">
+  <TypeSignature Language="C#" Value="public class NvdlIncludedMode : Commons.Xml.Nvdl.NvdlModeBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlModeBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlIncludedMode ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessage.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessage.xml
@@ -1,62 +1,62 @@
-<Type Name="NvdlMessage" FullName="Commons.Xml.Nvdl.NvdlMessage">
-  <TypeSignature Language="C#" Value="public class NvdlMessage : Commons.Xml.Nvdl.NvdlElementBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlElementBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlMessage ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Text">
-      <MemberSignature Language="C#" Value="public string Text { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="XmlLang">
-      <MemberSignature Language="C#" Value="public string XmlLang { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ForeignAttributes">
-      <MemberSignature Language="C#" Value="public System.Collections.ArrayList ForeignAttributes { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Collections.ArrayList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlMessage" FullName="Commons.Xml.Nvdl.NvdlMessage">
+  <TypeSignature Language="C#" Value="public class NvdlMessage : Commons.Xml.Nvdl.NvdlElementBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlElementBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlMessage ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Text">
+      <MemberSignature Language="C#" Value="public string Text { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="XmlLang">
+      <MemberSignature Language="C#" Value="public string XmlLang { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ForeignAttributes">
+      <MemberSignature Language="C#" Value="public System.Collections.ArrayList ForeignAttributes { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Collections.ArrayList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessageEventArgs.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessageEventArgs.xml
@@ -1,41 +1,41 @@
-<Type Name="NvdlMessageEventArgs" FullName="Commons.Xml.Nvdl.NvdlMessageEventArgs">
-  <TypeSignature Language="C#" Value="public class NvdlMessageEventArgs : System.EventArgs" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.EventArgs</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlMessageEventArgs (string message);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Message">
-      <MemberSignature Language="C#" Value="public string Message { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlMessageEventArgs" FullName="Commons.Xml.Nvdl.NvdlMessageEventArgs">
+  <TypeSignature Language="C#" Value="public class NvdlMessageEventArgs : System.EventArgs" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.EventArgs</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlMessageEventArgs (string message);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Message">
+      <MemberSignature Language="C#" Value="public string Message { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessageEventHandler.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessageEventHandler.xml
@@ -1,23 +1,23 @@
-<Type Name="NvdlMessageEventHandler" FullName="Commons.Xml.Nvdl.NvdlMessageEventHandler">
-  <TypeSignature Language="C#" Value="public delegate void NvdlMessageEventHandler(object o, Commons.Xml.Nvdl.NvdlMessageEventArgs e);" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Delegate</BaseTypeName>
-  </Base>
-  <Parameters>
-    <Parameter Name="o" Type="System.Object" />
-    <Parameter Name="e" Type="Commons.Xml.Nvdl.NvdlMessageEventArgs" />
-  </Parameters>
-  <ReturnValue>
-    <ReturnType>System.Void</ReturnType>
-  </ReturnValue>
-  <Docs>
-    <param name="o">To be added.</param>
-    <param name="e">To be added.</param>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlMessageEventHandler" FullName="Commons.Xml.Nvdl.NvdlMessageEventHandler">
+  <TypeSignature Language="C#" Value="public delegate void NvdlMessageEventHandler(object o, Commons.Xml.Nvdl.NvdlMessageEventArgs e);" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Delegate</BaseTypeName>
+  </Base>
+  <Parameters>
+    <Parameter Name="o" Type="System.Object" />
+    <Parameter Name="e" Type="Commons.Xml.Nvdl.NvdlMessageEventArgs" />
+  </Parameters>
+  <ReturnValue>
+    <ReturnType>System.Void</ReturnType>
+  </ReturnValue>
+  <Docs>
+    <param name="o">To be added.</param>
+    <param name="e">To be added.</param>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessageList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMessageList.xml
@@ -1,77 +1,77 @@
-<Type Name="NvdlMessageList" FullName="Commons.Xml.Nvdl.NvdlMessageList">
-  <TypeSignature Language="C#" Value="public class NvdlMessageList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlMessageList ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlMessage item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlMessage" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlMessage item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlMessage" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlMessage Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlMessage</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlMessageList" FullName="Commons.Xml.Nvdl.NvdlMessageList">
+  <TypeSignature Language="C#" Value="public class NvdlMessageList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlMessageList ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlMessage item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlMessage" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlMessage item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlMessage" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlMessage Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlMessage</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="i">To be added.</param>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMode.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlMode.xml
@@ -1,38 +1,38 @@
-<Type Name="NvdlMode" FullName="Commons.Xml.Nvdl.NvdlMode">
-  <TypeSignature Language="C#" Value="public class NvdlMode : Commons.Xml.Nvdl.NvdlModeBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlModeBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlMode ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlMode" FullName="Commons.Xml.Nvdl.NvdlMode">
+  <TypeSignature Language="C#" Value="public class NvdlMode : Commons.Xml.Nvdl.NvdlModeBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlModeBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlMode ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlModeBase.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlModeBase.xml
@@ -1,50 +1,50 @@
-<Type Name="NvdlModeBase" FullName="Commons.Xml.Nvdl.NvdlModeBase">
-  <TypeSignature Language="C#" Value="public abstract class NvdlModeBase : Commons.Xml.Nvdl.NvdlAttributable" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected NvdlModeBase ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IncludedModes">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeList IncludedModes { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlModeList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rules">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRuleList Rules { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRuleList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlModeBase" FullName="Commons.Xml.Nvdl.NvdlModeBase">
+  <TypeSignature Language="C#" Value="public abstract class NvdlModeBase : Commons.Xml.Nvdl.NvdlAttributable" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected NvdlModeBase ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="IncludedModes">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeList IncludedModes { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlModeList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Rules">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRuleList Rules { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRuleList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlModeList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlModeList.xml
@@ -1,77 +1,77 @@
-<Type Name="NvdlModeList" FullName="Commons.Xml.Nvdl.NvdlModeList">
-  <TypeSignature Language="C#" Value="public class NvdlModeList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlModeList ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlModeBase item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlModeBase" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlModeBase item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlModeBase" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeBase Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlModeBase</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlModeList" FullName="Commons.Xml.Nvdl.NvdlModeList">
+  <TypeSignature Language="C#" Value="public class NvdlModeList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlModeList ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlModeBase item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlModeBase" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlModeBase item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlModeBase" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeBase Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlModeBase</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="i">To be added.</param>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlModeUsage.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlModeUsage.xml
@@ -1,62 +1,62 @@
-<Type Name="NvdlModeUsage" FullName="Commons.Xml.Nvdl.NvdlModeUsage">
-  <TypeSignature Language="C#" Value="public class NvdlModeUsage" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlModeUsage ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="UseMode">
-      <MemberSignature Language="C#" Value="public string UseMode { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NestedMode">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlNestedMode NestedMode { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlNestedMode</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Contexts">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlContextList Contexts { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlContextList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlModeUsage" FullName="Commons.Xml.Nvdl.NvdlModeUsage">
+  <TypeSignature Language="C#" Value="public class NvdlModeUsage" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlModeUsage ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="UseMode">
+      <MemberSignature Language="C#" Value="public string UseMode { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NestedMode">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlNestedMode NestedMode { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlNestedMode</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Contexts">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlContextList Contexts { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlContextList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNamespace.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNamespace.xml
@@ -1,50 +1,50 @@
-<Type Name="NvdlNamespace" FullName="Commons.Xml.Nvdl.NvdlNamespace">
-  <TypeSignature Language="C#" Value="public class NvdlNamespace : Commons.Xml.Nvdl.NvdlRule" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlRule</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlNamespace ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NS">
-      <MemberSignature Language="C#" Value="public string NS { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Wildcard">
-      <MemberSignature Language="C#" Value="public string Wildcard { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlNamespace" FullName="Commons.Xml.Nvdl.NvdlNamespace">
+  <TypeSignature Language="C#" Value="public class NvdlNamespace : Commons.Xml.Nvdl.NvdlRule" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlRule</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlNamespace ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NS">
+      <MemberSignature Language="C#" Value="public string NS { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Wildcard">
+      <MemberSignature Language="C#" Value="public string Wildcard { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNestedMode.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNestedMode.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlNestedMode" FullName="Commons.Xml.Nvdl.NvdlNestedMode">
-  <TypeSignature Language="C#" Value="public class NvdlNestedMode : Commons.Xml.Nvdl.NvdlModeBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlModeBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlNestedMode ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlNestedMode" FullName="Commons.Xml.Nvdl.NvdlNestedMode">
+  <TypeSignature Language="C#" Value="public class NvdlNestedMode : Commons.Xml.Nvdl.NvdlModeBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlModeBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlNestedMode ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNoCancelAction.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNoCancelAction.xml
@@ -1,62 +1,62 @@
-<Type Name="NvdlNoCancelAction" FullName="Commons.Xml.Nvdl.NvdlNoCancelAction">
-  <TypeSignature Language="C#" Value="public abstract class NvdlNoCancelAction : Commons.Xml.Nvdl.NvdlAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected NvdlNoCancelAction ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ModeUsage">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeUsage ModeUsage { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlModeUsage</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SimpleMessage">
-      <MemberSignature Language="C#" Value="public string SimpleMessage { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Messages">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlMessageList Messages { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlMessageList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlNoCancelAction" FullName="Commons.Xml.Nvdl.NvdlNoCancelAction">
+  <TypeSignature Language="C#" Value="public abstract class NvdlNoCancelAction : Commons.Xml.Nvdl.NvdlAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected NvdlNoCancelAction ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ModeUsage">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeUsage ModeUsage { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlModeUsage</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="SimpleMessage">
+      <MemberSignature Language="C#" Value="public string SimpleMessage { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Messages">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlMessageList Messages { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlMessageList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNoResultAction.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlNoResultAction.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlNoResultAction" FullName="Commons.Xml.Nvdl.NvdlNoResultAction">
-  <TypeSignature Language="C#" Value="public abstract class NvdlNoResultAction : Commons.Xml.Nvdl.NvdlNoCancelAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoCancelAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected NvdlNoResultAction ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlNoResultAction" FullName="Commons.Xml.Nvdl.NvdlNoResultAction">
+  <TypeSignature Language="C#" Value="public abstract class NvdlNoResultAction : Commons.Xml.Nvdl.NvdlNoCancelAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoCancelAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected NvdlNoResultAction ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlOption.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlOption.xml
@@ -1,62 +1,62 @@
-<Type Name="NvdlOption" FullName="Commons.Xml.Nvdl.NvdlOption">
-  <TypeSignature Language="C#" Value="public class NvdlOption : Commons.Xml.Nvdl.NvdlAttributable" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlOption ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Arg">
-      <MemberSignature Language="C#" Value="public string Arg { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MustSupport">
-      <MemberSignature Language="C#" Value="public string MustSupport { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlOption" FullName="Commons.Xml.Nvdl.NvdlOption">
+  <TypeSignature Language="C#" Value="public class NvdlOption : Commons.Xml.Nvdl.NvdlAttributable" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlOption ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Arg">
+      <MemberSignature Language="C#" Value="public string Arg { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MustSupport">
+      <MemberSignature Language="C#" Value="public string MustSupport { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlOptionList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlOptionList.xml
@@ -1,77 +1,77 @@
-<Type Name="NvdlOptionList" FullName="Commons.Xml.Nvdl.NvdlOptionList">
-  <TypeSignature Language="C#" Value="public class NvdlOptionList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlOptionList ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlOption item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlOption" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlOption item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlOption" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlOption Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlOption</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlOptionList" FullName="Commons.Xml.Nvdl.NvdlOptionList">
+  <TypeSignature Language="C#" Value="public class NvdlOptionList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlOptionList ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlOption item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlOption" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlOption item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlOption" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlOption Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlOption</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="i">To be added.</param>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlReader.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlReader.xml
@@ -1,33 +1,33 @@
-<Type Name="NvdlReader" FullName="Commons.Xml.Nvdl.NvdlReader">
-  <TypeSignature Language="C#" Value="public class NvdlReader" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public static Commons.Xml.Nvdl.NvdlRules Read (System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRules</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlReader" FullName="Commons.Xml.Nvdl.NvdlReader">
+  <TypeSignature Language="C#" Value="public class NvdlReader" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Read">
+      <MemberSignature Language="C#" Value="public static Commons.Xml.Nvdl.NvdlRules Read (System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRules</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlReject.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlReject.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlReject" FullName="Commons.Xml.Nvdl.NvdlReject">
-  <TypeSignature Language="C#" Value="public class NvdlReject : Commons.Xml.Nvdl.NvdlNoResultAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoResultAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlReject ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlReject" FullName="Commons.Xml.Nvdl.NvdlReject">
+  <TypeSignature Language="C#" Value="public class NvdlReject : Commons.Xml.Nvdl.NvdlNoResultAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoResultAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlReject ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRelaxngValidatorProvider.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRelaxngValidatorProvider.xml
@@ -1,37 +1,37 @@
-<Type Name="NvdlRelaxngValidatorProvider" FullName="Commons.Xml.Nvdl.NvdlRelaxngValidatorProvider">
-  <TypeSignature Language="C#" Value="public class NvdlRelaxngValidatorProvider : Commons.Xml.Nvdl.NvdlValidationProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlValidationProvider</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlRelaxngValidatorProvider ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RncMimeType">
-      <MemberSignature Language="C#" Value="public const string RncMimeType;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlRelaxngValidatorProvider" FullName="Commons.Xml.Nvdl.NvdlRelaxngValidatorProvider">
+  <TypeSignature Language="C#" Value="public class NvdlRelaxngValidatorProvider : Commons.Xml.Nvdl.NvdlValidationProvider" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlValidationProvider</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlRelaxngValidatorProvider ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="RncMimeType">
+      <MemberSignature Language="C#" Value="public const string RncMimeType;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlResultAction.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlResultAction.xml
@@ -1,38 +1,38 @@
-<Type Name="NvdlResultAction" FullName="Commons.Xml.Nvdl.NvdlResultAction">
-  <TypeSignature Language="C#" Value="public abstract class NvdlResultAction : Commons.Xml.Nvdl.NvdlNoCancelAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoCancelAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected NvdlResultAction ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ResultType">
-      <MemberSignature Language="C#" Value="public abstract Commons.Xml.Nvdl.NvdlResultType ResultType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlResultAction" FullName="Commons.Xml.Nvdl.NvdlResultAction">
+  <TypeSignature Language="C#" Value="public abstract class NvdlResultAction : Commons.Xml.Nvdl.NvdlNoCancelAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoCancelAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected NvdlResultAction ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ResultType">
+      <MemberSignature Language="C#" Value="public abstract Commons.Xml.Nvdl.NvdlResultType ResultType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlResultType.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlResultType.xml
@@ -1,46 +1,46 @@
-<Type Name="NvdlResultType" FullName="Commons.Xml.Nvdl.NvdlResultType">
-  <TypeSignature Language="C#" Value="public enum NvdlResultType" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Members>
-    <Member MemberName="Attach">
-      <MemberSignature Language="C#" Value="Attach" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="AttachPlaceHolder">
-      <MemberSignature Language="C#" Value="AttachPlaceHolder" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Unwrap">
-      <MemberSignature Language="C#" Value="Unwrap" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlResultType" FullName="Commons.Xml.Nvdl.NvdlResultType">
+  <TypeSignature Language="C#" Value="public enum NvdlResultType" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Enum</BaseTypeName>
+  </Base>
+  <Members>
+    <Member MemberName="Attach">
+      <MemberSignature Language="C#" Value="Attach" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="AttachPlaceHolder">
+      <MemberSignature Language="C#" Value="AttachPlaceHolder" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Unwrap">
+      <MemberSignature Language="C#" Value="Unwrap" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlResultType</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRule.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRule.xml
@@ -1,50 +1,50 @@
-<Type Name="NvdlRule" FullName="Commons.Xml.Nvdl.NvdlRule">
-  <TypeSignature Language="C#" Value="public abstract class NvdlRule : Commons.Xml.Nvdl.NvdlAttributable" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected NvdlRule ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Match">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRuleTarget Match { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Actions">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlActionList Actions { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlActionList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlRule" FullName="Commons.Xml.Nvdl.NvdlRule">
+  <TypeSignature Language="C#" Value="public abstract class NvdlRule : Commons.Xml.Nvdl.NvdlAttributable" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected NvdlRule ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Match">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRuleTarget Match { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Actions">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlActionList Actions { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlActionList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRuleList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRuleList.xml
@@ -1,77 +1,77 @@
-<Type Name="NvdlRuleList" FullName="Commons.Xml.Nvdl.NvdlRuleList">
-  <TypeSignature Language="C#" Value="public class NvdlRuleList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlRuleList ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlRule item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlRule" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlRule item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlRule" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRule Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRule</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlRuleList" FullName="Commons.Xml.Nvdl.NvdlRuleList">
+  <TypeSignature Language="C#" Value="public class NvdlRuleList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlRuleList ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlRule item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlRule" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlRule item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlRule" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRule Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRule</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="i">To be added.</param>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRuleTarget.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRuleTarget.xml
@@ -1,56 +1,56 @@
-<Type Name="NvdlRuleTarget" FullName="Commons.Xml.Nvdl.NvdlRuleTarget">
-  <TypeSignature Language="C#" Value="public enum NvdlRuleTarget" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Members>
-    <Member MemberName="Elements">
-      <MemberSignature Language="C#" Value="Elements" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Attributes">
-      <MemberSignature Language="C#" Value="Attributes" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Both">
-      <MemberSignature Language="C#" Value="Both" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="None">
-      <MemberSignature Language="C#" Value="None" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlRuleTarget" FullName="Commons.Xml.Nvdl.NvdlRuleTarget">
+  <TypeSignature Language="C#" Value="public enum NvdlRuleTarget" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Enum</BaseTypeName>
+  </Base>
+  <Members>
+    <Member MemberName="Elements">
+      <MemberSignature Language="C#" Value="Elements" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Attributes">
+      <MemberSignature Language="C#" Value="Attributes" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Both">
+      <MemberSignature Language="C#" Value="Both" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="None">
+      <MemberSignature Language="C#" Value="None" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRuleTarget</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRules.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlRules.xml
@@ -1,86 +1,86 @@
-<Type Name="NvdlRules" FullName="Commons.Xml.Nvdl.NvdlRules">
-  <TypeSignature Language="C#" Value="public class NvdlRules : Commons.Xml.Nvdl.NvdlAttributable" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlRules ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SchemaType">
-      <MemberSignature Language="C#" Value="public string SchemaType { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Triggers">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlTriggerList Triggers { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlTriggerList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Rules">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRuleList Rules { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlRuleList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="StartMode">
-      <MemberSignature Language="C#" Value="public string StartMode { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Modes">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeList Modes { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlModeList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlRules" FullName="Commons.Xml.Nvdl.NvdlRules">
+  <TypeSignature Language="C#" Value="public class NvdlRules : Commons.Xml.Nvdl.NvdlAttributable" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlRules ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="SchemaType">
+      <MemberSignature Language="C#" Value="public string SchemaType { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Triggers">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlTriggerList Triggers { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlTriggerList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Rules">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlRuleList Rules { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlRuleList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="StartMode">
+      <MemberSignature Language="C#" Value="public string StartMode { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Modes">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlModeList Modes { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlModeList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlTrigger.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlTrigger.xml
@@ -1,50 +1,50 @@
-<Type Name="NvdlTrigger" FullName="Commons.Xml.Nvdl.NvdlTrigger">
-  <TypeSignature Language="C#" Value="public class NvdlTrigger : Commons.Xml.Nvdl.NvdlAttributable" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlTrigger ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NS">
-      <MemberSignature Language="C#" Value="public string NS { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlTrigger" FullName="Commons.Xml.Nvdl.NvdlTrigger">
+  <TypeSignature Language="C#" Value="public class NvdlTrigger : Commons.Xml.Nvdl.NvdlAttributable" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlAttributable</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlTrigger ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NS">
+      <MemberSignature Language="C#" Value="public string NS { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlTriggerList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlTriggerList.xml
@@ -1,77 +1,77 @@
-<Type Name="NvdlTriggerList" FullName="Commons.Xml.Nvdl.NvdlTriggerList">
-  <TypeSignature Language="C#" Value="public class NvdlTriggerList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlTriggerList ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlTrigger item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlTrigger" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlTrigger item);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlTrigger" />
-      </Parameters>
-      <Docs>
-        <param name="item">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlTrigger Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlTrigger</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="i">To be added.</param>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlTriggerList" FullName="Commons.Xml.Nvdl.NvdlTriggerList">
+  <TypeSignature Language="C#" Value="public class NvdlTriggerList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlTriggerList ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Nvdl.NvdlTrigger item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlTrigger" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Nvdl.NvdlTrigger item);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="item" Type="Commons.Xml.Nvdl.NvdlTrigger" />
+      </Parameters>
+      <Docs>
+        <param name="item">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlTrigger Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlTrigger</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="i">To be added.</param>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlUnwrap.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlUnwrap.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlUnwrap" FullName="Commons.Xml.Nvdl.NvdlUnwrap">
-  <TypeSignature Language="C#" Value="public class NvdlUnwrap : Commons.Xml.Nvdl.NvdlResultAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlResultAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlUnwrap ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlUnwrap" FullName="Commons.Xml.Nvdl.NvdlUnwrap">
+  <TypeSignature Language="C#" Value="public class NvdlUnwrap : Commons.Xml.Nvdl.NvdlResultAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlResultAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlUnwrap ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidate.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidate.xml
@@ -1,74 +1,74 @@
-<Type Name="NvdlValidate" FullName="Commons.Xml.Nvdl.NvdlValidate">
-  <TypeSignature Language="C#" Value="public class NvdlValidate : Commons.Xml.Nvdl.NvdlNoResultAction" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoResultAction</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlValidate ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SchemaType">
-      <MemberSignature Language="C#" Value="public string SchemaType { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Options">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlOptionList Options { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlOptionList</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SchemaUri">
-      <MemberSignature Language="C#" Value="public string SchemaUri { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="SchemaBody">
-      <MemberSignature Language="C#" Value="public System.Xml.XmlElement SchemaBody { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlElement</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlValidate" FullName="Commons.Xml.Nvdl.NvdlValidate">
+  <TypeSignature Language="C#" Value="public class NvdlValidate : Commons.Xml.Nvdl.NvdlNoResultAction" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlNoResultAction</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlValidate ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="SchemaType">
+      <MemberSignature Language="C#" Value="public string SchemaType { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Options">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Nvdl.NvdlOptionList Options { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlOptionList</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="SchemaUri">
+      <MemberSignature Language="C#" Value="public string SchemaUri { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="SchemaBody">
+      <MemberSignature Language="C#" Value="public System.Xml.XmlElement SchemaBody { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlElement</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidatingReader.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidatingReader.xml
@@ -1,76 +1,76 @@
-<Type Name="NvdlValidatingReader" FullName="Commons.Xml.Nvdl.NvdlValidatingReader">
-  <TypeSignature Language="C#" Value="public class NvdlValidatingReader : Commons.Xml.XmlDefaultReader" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.XmlDefaultReader</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Nvdl.NvdlRules rules);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="rules" Type="Commons.Xml.Nvdl.NvdlRules" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <param name="rules">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Nvdl.NvdlRules rules, System.Xml.XmlResolver resolver);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="rules" Type="Commons.Xml.Nvdl.NvdlRules" />
-        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <param name="rules">To be added.</param>
-        <param name="resolver">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Nvdl.NvdlRules rules, System.Xml.XmlResolver resolver, Commons.Xml.Nvdl.NvdlConfig config);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="rules" Type="Commons.Xml.Nvdl.NvdlRules" />
-        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
-        <Parameter Name="config" Type="Commons.Xml.Nvdl.NvdlConfig" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <param name="rules">To be added.</param>
-        <param name="resolver">To be added.</param>
-        <param name="config">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ActionStarted">
-      <MemberSignature Language="C#" Value="public event Commons.Xml.Nvdl.NvdlMessageEventHandler ActionStarted;" />
-      <MemberType>Event</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlMessageEventHandler</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlValidatingReader" FullName="Commons.Xml.Nvdl.NvdlValidatingReader">
+  <TypeSignature Language="C#" Value="public class NvdlValidatingReader : Commons.Xml.XmlDefaultReader" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.XmlDefaultReader</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Nvdl.NvdlRules rules);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="rules" Type="Commons.Xml.Nvdl.NvdlRules" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <param name="rules">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Nvdl.NvdlRules rules, System.Xml.XmlResolver resolver);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="rules" Type="Commons.Xml.Nvdl.NvdlRules" />
+        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <param name="rules">To be added.</param>
+        <param name="resolver">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Nvdl.NvdlRules rules, System.Xml.XmlResolver resolver, Commons.Xml.Nvdl.NvdlConfig config);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="rules" Type="Commons.Xml.Nvdl.NvdlRules" />
+        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
+        <Parameter Name="config" Type="Commons.Xml.Nvdl.NvdlConfig" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <param name="rules">To be added.</param>
+        <param name="resolver">To be added.</param>
+        <param name="config">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ActionStarted">
+      <MemberSignature Language="C#" Value="public event Commons.Xml.Nvdl.NvdlMessageEventHandler ActionStarted;" />
+      <MemberType>Event</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlMessageEventHandler</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidationException.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidationException.xml
@@ -1,47 +1,47 @@
-<Type Name="NvdlValidationException" FullName="Commons.Xml.Nvdl.NvdlValidationException">
-  <TypeSignature Language="C#" Value="public class NvdlValidationException : Commons.Xml.Nvdl.NvdlException" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlException</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlValidationException (string message, System.Xml.IXmlLineInfo source);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <param name="source">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlValidationException (string message, Exception inner, System.Xml.IXmlLineInfo source);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-        <Parameter Name="inner" Type="System.Exception" />
-        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <param name="inner">To be added.</param>
-        <param name="source">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlValidationException" FullName="Commons.Xml.Nvdl.NvdlValidationException">
+  <TypeSignature Language="C#" Value="public class NvdlValidationException : Commons.Xml.Nvdl.NvdlException" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlException</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlValidationException (string message, System.Xml.IXmlLineInfo source);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <param name="source">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlValidationException (string message, Exception inner, System.Xml.IXmlLineInfo source);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+        <Parameter Name="inner" Type="System.Exception" />
+        <Parameter Name="source" Type="System.Xml.IXmlLineInfo" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <param name="inner">To be added.</param>
+        <param name="source">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidationProvider.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidationProvider.xml
@@ -1,80 +1,80 @@
-<Type Name="NvdlValidationProvider" FullName="Commons.Xml.Nvdl.NvdlValidationProvider">
-  <TypeSignature Language="C#" Value="public class NvdlValidationProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlValidationProvider ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateGenerator">
-      <MemberSignature Language="C#" Value="public virtual Commons.Xml.Nvdl.NvdlValidatorGenerator CreateGenerator (Commons.Xml.Nvdl.NvdlValidate validate, string schemaType, Commons.Xml.Nvdl.NvdlConfig config);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlValidatorGenerator</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="validate" Type="Commons.Xml.Nvdl.NvdlValidate" />
-        <Parameter Name="schemaType" Type="System.String" />
-        <Parameter Name="config" Type="Commons.Xml.Nvdl.NvdlConfig" />
-      </Parameters>
-      <Docs>
-        <param name="validate">To be added.</param>
-        <param name="schemaType">To be added.</param>
-        <param name="config">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateGenerator">
-      <MemberSignature Language="C#" Value="public virtual Commons.Xml.Nvdl.NvdlValidatorGenerator CreateGenerator (System.Xml.XmlReader schema, Commons.Xml.Nvdl.NvdlConfig config);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Nvdl.NvdlValidatorGenerator</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="schema" Type="System.Xml.XmlReader" />
-        <Parameter Name="config" Type="Commons.Xml.Nvdl.NvdlConfig" />
-      </Parameters>
-      <Docs>
-        <param name="schema">To be added.</param>
-        <param name="config">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetSchemaUri">
-      <MemberSignature Language="C#" Value="public string GetSchemaUri (Commons.Xml.Nvdl.NvdlValidate validate);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="validate" Type="Commons.Xml.Nvdl.NvdlValidate" />
-      </Parameters>
-      <Docs>
-        <param name="validate">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlValidationProvider" FullName="Commons.Xml.Nvdl.NvdlValidationProvider">
+  <TypeSignature Language="C#" Value="public class NvdlValidationProvider" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlValidationProvider ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateGenerator">
+      <MemberSignature Language="C#" Value="public virtual Commons.Xml.Nvdl.NvdlValidatorGenerator CreateGenerator (Commons.Xml.Nvdl.NvdlValidate validate, string schemaType, Commons.Xml.Nvdl.NvdlConfig config);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlValidatorGenerator</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="validate" Type="Commons.Xml.Nvdl.NvdlValidate" />
+        <Parameter Name="schemaType" Type="System.String" />
+        <Parameter Name="config" Type="Commons.Xml.Nvdl.NvdlConfig" />
+      </Parameters>
+      <Docs>
+        <param name="validate">To be added.</param>
+        <param name="schemaType">To be added.</param>
+        <param name="config">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateGenerator">
+      <MemberSignature Language="C#" Value="public virtual Commons.Xml.Nvdl.NvdlValidatorGenerator CreateGenerator (System.Xml.XmlReader schema, Commons.Xml.Nvdl.NvdlConfig config);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Nvdl.NvdlValidatorGenerator</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="schema" Type="System.Xml.XmlReader" />
+        <Parameter Name="config" Type="Commons.Xml.Nvdl.NvdlConfig" />
+      </Parameters>
+      <Docs>
+        <param name="schema">To be added.</param>
+        <param name="config">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetSchemaUri">
+      <MemberSignature Language="C#" Value="public string GetSchemaUri (Commons.Xml.Nvdl.NvdlValidate validate);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="validate" Type="Commons.Xml.Nvdl.NvdlValidate" />
+      </Parameters>
+      <Docs>
+        <param name="validate">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidatorGenerator.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlValidatorGenerator.xml
@@ -1,80 +1,80 @@
-<Type Name="NvdlValidatorGenerator" FullName="Commons.Xml.Nvdl.NvdlValidatorGenerator">
-  <TypeSignature Language="C#" Value="public abstract class NvdlValidatorGenerator" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected NvdlValidatorGenerator ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateValidator">
-      <MemberSignature Language="C#" Value="public abstract System.Xml.XmlReader CreateValidator (System.Xml.XmlReader reader, System.Xml.XmlResolver resolver);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <param name="resolver">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CreateAttributeValidator">
-      <MemberSignature Language="C#" Value="public virtual System.Xml.XmlReader CreateAttributeValidator (System.Xml.XmlReader reader, System.Xml.XmlResolver resolver);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlReader</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <param name="resolver">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AddOption">
-      <MemberSignature Language="C#" Value="public abstract bool AddOption (string name, string arg);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="arg" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="name">To be added.</param>
-        <param name="arg">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlValidatorGenerator" FullName="Commons.Xml.Nvdl.NvdlValidatorGenerator">
+  <TypeSignature Language="C#" Value="public abstract class NvdlValidatorGenerator" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected NvdlValidatorGenerator ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateValidator">
+      <MemberSignature Language="C#" Value="public abstract System.Xml.XmlReader CreateValidator (System.Xml.XmlReader reader, System.Xml.XmlResolver resolver);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlReader</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <param name="resolver">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CreateAttributeValidator">
+      <MemberSignature Language="C#" Value="public virtual System.Xml.XmlReader CreateAttributeValidator (System.Xml.XmlReader reader, System.Xml.XmlResolver resolver);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlReader</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="resolver" Type="System.Xml.XmlResolver" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <param name="resolver">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AddOption">
+      <MemberSignature Language="C#" Value="public abstract bool AddOption (string name, string arg);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+        <Parameter Name="arg" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="name">To be added.</param>
+        <param name="arg">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlXsdValidatorProvider.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Nvdl/NvdlXsdValidatorProvider.xml
@@ -1,26 +1,26 @@
-<Type Name="NvdlXsdValidatorProvider" FullName="Commons.Xml.Nvdl.NvdlXsdValidatorProvider">
-  <TypeSignature Language="C#" Value="public class NvdlXsdValidatorProvider : Commons.Xml.Nvdl.NvdlValidationProvider" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.Nvdl.NvdlValidationProvider</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public NvdlXsdValidatorProvider ();" />
-      <MemberType>Constructor</MemberType>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="NvdlXsdValidatorProvider" FullName="Commons.Xml.Nvdl.NvdlXsdValidatorProvider">
+  <TypeSignature Language="C#" Value="public class NvdlXsdValidatorProvider : Commons.Xml.Nvdl.NvdlValidationProvider" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.Nvdl.NvdlValidationProvider</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public NvdlXsdValidatorProvider ();" />
+      <MemberType>Constructor</MemberType>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng.Rnc/RncParser.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng.Rnc/RncParser.xml
@@ -1,322 +1,322 @@
-<Type Name="RncParser" FullName="Commons.Xml.Relaxng.Rnc.RncParser">
-  <TypeSignature Language="C#" Value="public class RncParser" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Implements a RELAX NG Compact Syntax parser.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="ParseRnc">
-      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern ParseRnc (System.IO.TextReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="reader" Type="System.IO.TextReader" />
-      </Parameters>
-      <Docs>
-        <summary>This static method internally calls ParseRnc (reader, new NameTable ()).</summary>
-        <param name="reader">a <see cref="T:System.IO.TextReader" /> that holds the compact syntax source.</param>
-        <returns>The resulting <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" />.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ParseRnc">
-      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern ParseRnc (System.IO.TextReader reader, System.Xml.XmlNameTable nameTable);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="reader" Type="System.IO.TextReader" />
-        <Parameter Name="nameTable" Type="System.Xml.XmlNameTable" />
-      </Parameters>
-      <Docs>
-        <summary>This static method internally creates a new instance of this class and then parses the input compact syntax and returns the result pattern.</summary>
-        <param name="reader">a <see cref="T:System.IO.TextReader" /> that holds the compact syntax source.</param>
-        <param name="nameTable">a <see cref="T:System.Xml.XmlNameTable" /> that is passed to the instance constructor.</param>
-        <returns>The resulting <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" />.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Parse">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Parse (System.IO.TextReader source);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="source" Type="System.IO.TextReader" />
-      </Parameters>
-      <Docs>
-        <summary>Parses the input compact syntax source and returns the pattern object.</summary>
-        <param name="source">a <see cref="T:System.IO.TextReader" /> that holds the input compact syntax.</param>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></returns>
-        <remarks>The resulting pattern is not compiled. To make sure that the pattern is valid in the context of simplification and limitation defined by the RELAX NG specification, you have to call Compile () against the resulting pattern.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RncParser (System.Xml.XmlNameTable nameTable);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="nameTable" Type="System.Xml.XmlNameTable" />
-      </Parameters>
-      <Docs>
-        <summary>The constructor.</summary>
-        <param name="nameTable">a <see cref="T:System.Xml.XmlNameTable" /> that is used through this parser.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Line">
-      <MemberSignature Language="C#" Value="public int Line { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the line number that progresses on parse.</summary>
-        <value>a <see cref="T:System.Int32" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Column">
-      <MemberSignature Language="C#" Value="public int Column { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the column number that progresses on parse.</summary>
-        <value>a <see cref="T:System.Int32" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefaultNamespace">
-      <MemberSignature Language="C#" Value="public string DefaultNamespace { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Holds the default namespace through the parse phase.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ErrorOutput">
-      <MemberSignature Language="C#" Value="public System.IO.TextWriter ErrorOutput;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.IO.TextWriter</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyFinal">
-      <MemberSignature Language="C#" Value="protected static int yyFinal;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyRule">
-      <MemberSignature Language="C#" Value="public static string[] yyRule;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyNames">
-      <MemberSignature Language="C#" Value="protected static string[] yyNames;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyMax">
-      <MemberSignature Language="C#" Value="protected int yyMax;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyDgoto">
-      <MemberSignature Language="C#" Value="protected static short[] yyDgoto;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yySindex">
-      <MemberSignature Language="C#" Value="protected static short[] yySindex;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyRindex">
-      <MemberSignature Language="C#" Value="protected static short[] yyRindex;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyGindex">
-      <MemberSignature Language="C#" Value="protected static short[] yyGindex;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyTable">
-      <MemberSignature Language="C#" Value="protected static short[] yyTable;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyCheck">
-      <MemberSignature Language="C#" Value="protected static short[] yyCheck;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int16[]</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyerror">
-      <MemberSignature Language="C#" Value="public void yyerror (string message);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyerror">
-      <MemberSignature Language="C#" Value="public void yyerror (string message, string[] expected);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-        <Parameter Name="expected" Type="System.String[]" />
-      </Parameters>
-      <Docs>
-        <param name="message">To be added.</param>
-        <param name="expected">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyname">
-      <MemberSignature Language="C#" Value="public static string yyname (int token);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="token" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="token">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyExpecting">
-      <MemberSignature Language="C#" Value="protected string[] yyExpecting (int state);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String[]</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="state" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <param name="state">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="yyDefault">
-      <MemberSignature Language="C#" Value="protected object yyDefault (object first);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="first" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="first">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RncParser" FullName="Commons.Xml.Relaxng.Rnc.RncParser">
+  <TypeSignature Language="C#" Value="public class RncParser" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Implements a RELAX NG Compact Syntax parser.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="ParseRnc">
+      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern ParseRnc (System.IO.TextReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="reader" Type="System.IO.TextReader" />
+      </Parameters>
+      <Docs>
+        <summary>This static method internally calls ParseRnc (reader, new NameTable ()).</summary>
+        <param name="reader">a <see cref="T:System.IO.TextReader" /> that holds the compact syntax source.</param>
+        <returns>The resulting <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" />.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ParseRnc">
+      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern ParseRnc (System.IO.TextReader reader, System.Xml.XmlNameTable nameTable);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="reader" Type="System.IO.TextReader" />
+        <Parameter Name="nameTable" Type="System.Xml.XmlNameTable" />
+      </Parameters>
+      <Docs>
+        <summary>This static method internally creates a new instance of this class and then parses the input compact syntax and returns the result pattern.</summary>
+        <param name="reader">a <see cref="T:System.IO.TextReader" /> that holds the compact syntax source.</param>
+        <param name="nameTable">a <see cref="T:System.Xml.XmlNameTable" /> that is passed to the instance constructor.</param>
+        <returns>The resulting <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" />.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Parse">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Parse (System.IO.TextReader source);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="source" Type="System.IO.TextReader" />
+      </Parameters>
+      <Docs>
+        <summary>Parses the input compact syntax source and returns the pattern object.</summary>
+        <param name="source">a <see cref="T:System.IO.TextReader" /> that holds the input compact syntax.</param>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></returns>
+        <remarks>The resulting pattern is not compiled. To make sure that the pattern is valid in the context of simplification and limitation defined by the RELAX NG specification, you have to call Compile () against the resulting pattern.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RncParser (System.Xml.XmlNameTable nameTable);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="nameTable" Type="System.Xml.XmlNameTable" />
+      </Parameters>
+      <Docs>
+        <summary>The constructor.</summary>
+        <param name="nameTable">a <see cref="T:System.Xml.XmlNameTable" /> that is used through this parser.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Line">
+      <MemberSignature Language="C#" Value="public int Line { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the line number that progresses on parse.</summary>
+        <value>a <see cref="T:System.Int32" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Column">
+      <MemberSignature Language="C#" Value="public int Column { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the column number that progresses on parse.</summary>
+        <value>a <see cref="T:System.Int32" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="DefaultNamespace">
+      <MemberSignature Language="C#" Value="public string DefaultNamespace { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Holds the default namespace through the parse phase.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ErrorOutput">
+      <MemberSignature Language="C#" Value="public System.IO.TextWriter ErrorOutput;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.IO.TextWriter</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyFinal">
+      <MemberSignature Language="C#" Value="protected static int yyFinal;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyRule">
+      <MemberSignature Language="C#" Value="public static string[] yyRule;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyNames">
+      <MemberSignature Language="C#" Value="protected static string[] yyNames;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyMax">
+      <MemberSignature Language="C#" Value="protected int yyMax;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyDgoto">
+      <MemberSignature Language="C#" Value="protected static short[] yyDgoto;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int16[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yySindex">
+      <MemberSignature Language="C#" Value="protected static short[] yySindex;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int16[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyRindex">
+      <MemberSignature Language="C#" Value="protected static short[] yyRindex;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int16[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyGindex">
+      <MemberSignature Language="C#" Value="protected static short[] yyGindex;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int16[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyTable">
+      <MemberSignature Language="C#" Value="protected static short[] yyTable;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int16[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyCheck">
+      <MemberSignature Language="C#" Value="protected static short[] yyCheck;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int16[]</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyerror">
+      <MemberSignature Language="C#" Value="public void yyerror (string message);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyerror">
+      <MemberSignature Language="C#" Value="public void yyerror (string message, string[] expected);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+        <Parameter Name="expected" Type="System.String[]" />
+      </Parameters>
+      <Docs>
+        <param name="message">To be added.</param>
+        <param name="expected">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyname">
+      <MemberSignature Language="C#" Value="public static string yyname (int token);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="token" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="token">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyExpecting">
+      <MemberSignature Language="C#" Value="protected string[] yyExpecting (int state);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String[]</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="state" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <param name="state">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="yyDefault">
+      <MemberSignature Language="C#" Value="protected object yyDefault (object first);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="first" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="first">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/IGrammarContent.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/IGrammarContent.xml
@@ -1,15 +1,15 @@
-<Type Name="IGrammarContent" FullName="Commons.Xml.Relaxng.IGrammarContent">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public interface IGrammarContent" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Indicates that the implementors of this class can be contained in either of "grammar", "include" or "div" element.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Interfaces />
-  <Members />
-</Type>
+<Type Name="IGrammarContent" FullName="Commons.Xml.Relaxng.IGrammarContent">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public interface IGrammarContent" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Indicates that the implementors of this class can be contained in either of "grammar", "include" or "div" element.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Interfaces />
+  <Members />
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngAnyName.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngAnyName.xml
@@ -1,56 +1,56 @@
-<Type Name="RelaxngAnyName" FullName="Commons.Xml.Relaxng.RelaxngAnyName">
-  <TypeSignature Language="C#" Value="public class RelaxngAnyName : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "anyName" name class.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngAnyName ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Except">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngExceptNameClass Except { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngExceptNameClass</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents "except" child of this element.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngExceptNameClass" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngAnyName" FullName="Commons.Xml.Relaxng.RelaxngAnyName">
+  <TypeSignature Language="C#" Value="public class RelaxngAnyName : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "anyName" name class.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngAnyName ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Except">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngExceptNameClass Except { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngExceptNameClass</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents "except" child of this element.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngExceptNameClass" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngAttribute.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngAttribute.xml
@@ -1,81 +1,81 @@
-<Type Name="RelaxngAttribute" FullName="Commons.Xml.Relaxng.RelaxngAttribute">
-  <TypeSignature Language="C#" Value="public class RelaxngAttribute : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "attribute" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngAttribute ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Pattern">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Pattern { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The constraining content pattern for this attribute.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></value>
-        <remarks>RELAX NG "attribute" pattern can have at most one pattern.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NameClass">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClass NameClass { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClass</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The constraining name class for this attribute pattern.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Attribute.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngAttribute" FullName="Commons.Xml.Relaxng.RelaxngAttribute">
+  <TypeSignature Language="C#" Value="public class RelaxngAttribute : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "attribute" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngAttribute ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Pattern">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Pattern { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The constraining content pattern for this attribute.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></value>
+        <remarks>RELAX NG "attribute" pattern can have at most one pattern.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NameClass">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClass NameClass { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClass</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The constraining name class for this attribute pattern.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Attribute.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngBinaryContentPattern.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngBinaryContentPattern.xml
@@ -1,42 +1,42 @@
-<Type Name="RelaxngBinaryContentPattern" FullName="Commons.Xml.Relaxng.RelaxngBinaryContentPattern">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngBinaryContentPattern : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents an abstract form of patterns that have child patterns that would be simplified into exactly two pattern children at compile time.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngBinaryContentPattern ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The constructor that is intended to be used internally.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Patterns">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The patterns that is contained in this element.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngBinaryContentPattern" FullName="Commons.Xml.Relaxng.RelaxngBinaryContentPattern">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngBinaryContentPattern : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents an abstract form of patterns that have child patterns that would be simplified into exactly two pattern children at compile time.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngBinaryContentPattern ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The constructor that is intended to be used internally.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Patterns">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The patterns that is contained in this element.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngChoice.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngChoice.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngChoice" FullName="Commons.Xml.Relaxng.RelaxngChoice">
-  <TypeSignature Language="C#" Value="public class RelaxngChoice : Commons.Xml.Relaxng.RelaxngBinaryContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "choice" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngBinaryContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngChoice ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Data.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngChoice" FullName="Commons.Xml.Relaxng.RelaxngChoice">
+  <TypeSignature Language="C#" Value="public class RelaxngChoice : Commons.Xml.Relaxng.RelaxngBinaryContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "choice" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngBinaryContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngChoice ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Data.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngData.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngData.xml
@@ -1,81 +1,81 @@
-<Type Name="RelaxngData" FullName="Commons.Xml.Relaxng.RelaxngData">
-  <TypeSignature Language="C#" Value="public class RelaxngData : Commons.Xml.Relaxng.RelaxngDataSupport" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "data" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDataSupport</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngData ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Data.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="ParamList">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngParamList ParamList { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngParamList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the list for this data type's parameters.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngParamList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Except">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngExcept Except { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngExcept</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the "except" part of this data pattern.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngExcept" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngData" FullName="Commons.Xml.Relaxng.RelaxngData">
+  <TypeSignature Language="C#" Value="public class RelaxngData : Commons.Xml.Relaxng.RelaxngDataSupport" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "data" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDataSupport</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngData ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Data.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="ParamList">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngParamList ParamList { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngParamList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the list for this data type's parameters.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngParamList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Except">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngExcept Except { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngExcept</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the "except" part of this data pattern.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngExcept" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDataSupport.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDataSupport.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngDataSupport" FullName="Commons.Xml.Relaxng.RelaxngDataSupport">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngDataSupport : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents an abstract data container pattern. "data" and "value" patterns are derived from this type.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngDataSupport ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The constructor that is intended to be used internally.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Type">
-      <MemberSignature Language="C#" Value="public string Type { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the local part of the type name.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DatatypeLibrary">
-      <MemberSignature Language="C#" Value="public string DatatypeLibrary { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the datatype library name.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngDataSupport" FullName="Commons.Xml.Relaxng.RelaxngDataSupport">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngDataSupport : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents an abstract data container pattern. "data" and "value" patterns are derived from this type.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngDataSupport ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The constructor that is intended to be used internally.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Type">
+      <MemberSignature Language="C#" Value="public string Type { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the local part of the type name.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="DatatypeLibrary">
+      <MemberSignature Language="C#" Value="public string DatatypeLibrary { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the datatype library name.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDatatype.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDatatype.xml
@@ -1,129 +1,129 @@
-<Type Name="RelaxngDatatype" FullName="Commons.Xml.Relaxng.RelaxngDatatype">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngDatatype" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>This type represents an abstract datatype that is being used in "data" and "value" elements' validation.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Parse">
-      <MemberSignature Language="C#" Value="public abstract object Parse (string text, System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="text" Type="System.String" />
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Validates the value string and returns the validated typed object, being supplied context information by XmlReader as a context holder.</summary>
-        <param name="text">a <see cref="T:System.String" /> that represents a value being parsed.</param>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is used as a context holder.</param>
-        <returns>a <see cref="T:System.Object" /> that represents the validated value. This method <strong>must</strong> return null if the value was invalid. It is recommended that implementations return <see cref="P:System.DBNull.Value" /> for explicit NULL value.</returns>
-        <remarks>The context represented by the XmlReader parameter is used for example to acquire namespace URI using <see cref="M:System.Xml.XmlREader.LookupNamespace" />.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Compare">
-      <MemberSignature Language="C#" Value="public virtual bool Compare (object o1, object o2);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o1" Type="System.Object" />
-        <Parameter Name="o2" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <summary>Compares two "values" that would be used in "value" constraint check.</summary>
-        <param name="o1">a <see cref="T:System.Object" /> that is being compared.</param>
-        <param name="o2">a <see cref="T:System.Object" /> that is being compared.</param>
-        <returns>True if equals. False if not equals.</returns>
-        <remarks>The default implementation Parses the values into objects and compares as objects.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CompareString">
-      <MemberSignature Language="C#" Value="public virtual bool CompareString (string s1, string s2, System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="s1" Type="System.String" />
-        <Parameter Name="s2" Type="System.String" />
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Compares two "value strings" that would be used in "value" constraint check.</summary>
-        <param name="s1">a <see cref="T:System.String" /> that is being compared.</param>
-        <param name="s2">a <see cref="T:System.String" /> that is being compared.</param>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <returns>True if equals. False if not equals.</returns>
-        <remarks>The default implementation converts the values into objects and calls Compare method.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsValid">
-      <MemberSignature Language="C#" Value="public virtual bool IsValid (string text, System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="text" Type="System.String" />
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Validates the argument string.</summary>
-        <param name="text">a <see cref="T:System.String" /> that represents a value being parsed.</param>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is used as a context holder.</param>
-        <returns>True if valid. False if invalid.</returns>
-        <remarks>The default implementation calls Parse() and checks if the return value is null or not.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngDatatype ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The protected constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public abstract string Name { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the local part of this type's name.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NamespaceURI">
-      <MemberSignature Language="C#" Value="public abstract string NamespaceURI { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the namespace part of this type's name (datatype library name).</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngDatatype" FullName="Commons.Xml.Relaxng.RelaxngDatatype">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngDatatype" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>This type represents an abstract datatype that is being used in "data" and "value" elements' validation.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Parse">
+      <MemberSignature Language="C#" Value="public abstract object Parse (string text, System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="text" Type="System.String" />
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Validates the value string and returns the validated typed object, being supplied context information by XmlReader as a context holder.</summary>
+        <param name="text">a <see cref="T:System.String" /> that represents a value being parsed.</param>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is used as a context holder.</param>
+        <returns>a <see cref="T:System.Object" /> that represents the validated value. This method <strong>must</strong> return null if the value was invalid. It is recommended that implementations return <see cref="P:System.DBNull.Value" /> for explicit NULL value.</returns>
+        <remarks>The context represented by the XmlReader parameter is used for example to acquire namespace URI using <see cref="M:System.Xml.XmlREader.LookupNamespace" />.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Compare">
+      <MemberSignature Language="C#" Value="public virtual bool Compare (object o1, object o2);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="o1" Type="System.Object" />
+        <Parameter Name="o2" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <summary>Compares two "values" that would be used in "value" constraint check.</summary>
+        <param name="o1">a <see cref="T:System.Object" /> that is being compared.</param>
+        <param name="o2">a <see cref="T:System.Object" /> that is being compared.</param>
+        <returns>True if equals. False if not equals.</returns>
+        <remarks>The default implementation Parses the values into objects and compares as objects.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CompareString">
+      <MemberSignature Language="C#" Value="public virtual bool CompareString (string s1, string s2, System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="s1" Type="System.String" />
+        <Parameter Name="s2" Type="System.String" />
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Compares two "value strings" that would be used in "value" constraint check.</summary>
+        <param name="s1">a <see cref="T:System.String" /> that is being compared.</param>
+        <param name="s2">a <see cref="T:System.String" /> that is being compared.</param>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <returns>True if equals. False if not equals.</returns>
+        <remarks>The default implementation converts the values into objects and calls Compare method.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="IsValid">
+      <MemberSignature Language="C#" Value="public virtual bool IsValid (string text, System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="text" Type="System.String" />
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Validates the argument string.</summary>
+        <param name="text">a <see cref="T:System.String" /> that represents a value being parsed.</param>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is used as a context holder.</param>
+        <returns>True if valid. False if invalid.</returns>
+        <remarks>The default implementation calls Parse() and checks if the return value is null or not.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngDatatype ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The protected constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public abstract string Name { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the local part of this type's name.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NamespaceURI">
+      <MemberSignature Language="C#" Value="public abstract string NamespaceURI { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the namespace part of this type's name (datatype library name).</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDatatypeProvider.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDatatypeProvider.xml
@@ -1,59 +1,59 @@
-<Type Name="RelaxngDatatypeProvider" FullName="Commons.Xml.Relaxng.RelaxngDatatypeProvider">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngDatatypeProvider" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>
-      <para>This class functions as a provider for data type support for "data" and "value" patterns. Usually, RELAX NG recognizes each datatype by its "datatypeLibrary" and the type (local) name, but this class is designed to just return datatypes by the type's qualified name.
-	</para>
-      <para>
-	Each data type is represented as a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatype" /> instance. The datatype class abstract and can be used to support custom datatypes.
-	</para>
-      <remarks>
-        <para>By default, <see cref="P:Commons.Xml.Relaxng.RelaxngMergedProvider.DefaultProvider" /> is used to support RELAX NG "string" and "token" datatypes, plus XML Schema primitive datatypes indentified by the following URL: http://www.w3.org/2001/XMLSchema-datatypes .
-	</para>
-      </remarks>
-    </summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="GetDatatype">
-      <MemberSignature Language="C#" Value="public abstract Commons.Xml.Relaxng.RelaxngDatatype GetDatatype (string name, string ns, Commons.Xml.Relaxng.RelaxngParamList parameters);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatype</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-        <Parameter Name="parameters" Type="Commons.Xml.Relaxng.RelaxngParamList" />
-      </Parameters>
-      <Docs>
-        <summary>Returns each datatype idenfitied by its local name and datatype library namespace. Derived classes should return null if the target type is not supported by the provider itself.</summary>
-        <param name="name">a <see cref="T:System.String" /> that represents the local name of the datatype.</param>
-        <param name="ns">a URI <see cref="T:System.String" /> that represents the datatype library namespace.</param>
-        <param name="parameters">a <see cref="T:Commons.Xml.Relaxng.RelaxngParamList" />; list of datatype parameters.</param>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatype" /> identified by the name and datatype library, customized by the parameters.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngDatatypeProvider ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>Creates an instance of this type.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngDatatypeProvider" FullName="Commons.Xml.Relaxng.RelaxngDatatypeProvider">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngDatatypeProvider" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>
+      <para>This class functions as a provider for data type support for "data" and "value" patterns. Usually, RELAX NG recognizes each datatype by its "datatypeLibrary" and the type (local) name, but this class is designed to just return datatypes by the type's qualified name.
+	</para>
+      <para>
+	Each data type is represented as a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatype" /> instance. The datatype class abstract and can be used to support custom datatypes.
+	</para>
+      <remarks>
+        <para>By default, <see cref="P:Commons.Xml.Relaxng.RelaxngMergedProvider.DefaultProvider" /> is used to support RELAX NG "string" and "token" datatypes, plus XML Schema primitive datatypes indentified by the following URL: http://www.w3.org/2001/XMLSchema-datatypes .
+	</para>
+      </remarks>
+    </summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="GetDatatype">
+      <MemberSignature Language="C#" Value="public abstract Commons.Xml.Relaxng.RelaxngDatatype GetDatatype (string name, string ns, Commons.Xml.Relaxng.RelaxngParamList parameters);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatype</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+        <Parameter Name="ns" Type="System.String" />
+        <Parameter Name="parameters" Type="Commons.Xml.Relaxng.RelaxngParamList" />
+      </Parameters>
+      <Docs>
+        <summary>Returns each datatype idenfitied by its local name and datatype library namespace. Derived classes should return null if the target type is not supported by the provider itself.</summary>
+        <param name="name">a <see cref="T:System.String" /> that represents the local name of the datatype.</param>
+        <param name="ns">a URI <see cref="T:System.String" /> that represents the datatype library namespace.</param>
+        <param name="parameters">a <see cref="T:Commons.Xml.Relaxng.RelaxngParamList" />; list of datatype parameters.</param>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatype" /> identified by the name and datatype library, customized by the parameters.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngDatatypeProvider ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>Creates an instance of this type.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDefine.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDefine.xml
@@ -1,86 +1,86 @@
-<Type Name="RelaxngDefine" FullName="Commons.Xml.Relaxng.RelaxngDefine">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngDefine : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "define" element.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngDefine ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Patterns">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that holds the contained patterns in this define component.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Combine">
-      <MemberSignature Language="C#" Value="public string Combine { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the "combine" attribute value specified to this start component.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The name of this define component.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngDefine" FullName="Commons.Xml.Relaxng.RelaxngDefine">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngDefine : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "define" element.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+    <Interface>
+      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
+    </Interface>
+  </Interfaces>
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngDefine ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Patterns">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that holds the contained patterns in this define component.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Combine">
+      <MemberSignature Language="C#" Value="public string Combine { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the "combine" attribute value specified to this start component.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The name of this define component.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDiv.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngDiv.xml
@@ -1,99 +1,99 @@
-<Type Name="RelaxngDiv" FullName="Commons.Xml.Relaxng.RelaxngDiv">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngDiv : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "div" element.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngDiv ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Starts">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Starts { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "start" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Defines">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Defines { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "define" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Includes">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Includes { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "include" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Divs">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Divs { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "div" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngDiv" FullName="Commons.Xml.Relaxng.RelaxngDiv">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngDiv : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "div" element.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+    <Interface>
+      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
+    </Interface>
+  </Interfaces>
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngDiv ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Starts">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Starts { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "start" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Defines">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Defines { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "define" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Includes">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Includes { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "include" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Divs">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Divs { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "div" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngElement.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngElement.xml
@@ -1,68 +1,68 @@
-<Type Name="RelaxngElement" FullName="Commons.Xml.Relaxng.RelaxngElement">
-  <TypeSignature Language="C#" Value="public class RelaxngElement : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "element" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngElement ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NameClass">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClass NameClass { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClass</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The constraining name class for this element pattern.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Element.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngElement" FullName="Commons.Xml.Relaxng.RelaxngElement">
+  <TypeSignature Language="C#" Value="public class RelaxngElement : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "element" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngElement ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NameClass">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClass NameClass { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClass</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The constraining name class for this element pattern.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Element.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngElementBase.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngElementBase.xml
@@ -1,85 +1,85 @@
-<Type Name="RelaxngElementBase" FullName="Commons.Xml.Relaxng.RelaxngElementBase">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngElementBase" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>An abstract representation of RELAX NG grammar element.</summary>
-    <remarks>This class does not represent "element" pattern (see <see cref="T:Commons.Xml.Relaxng.RelaxngElement" />).</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Object</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public abstract void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the XmlWriter.</summary>
-        <param name="writer">an <see cref="T:System.Xml.XmlWriter" /> that is used to output this element.</param>
-        <remarks>
-		Each of the derived class in Commons.Xml.Relaxng.dll can be created by its own default constructor.
-		</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngElementBase ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>Not intended to be used.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LineNumber">
-      <MemberSignature Language="C#" Value="public int LineNumber { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the line number of this element, if provided by the source.</summary>
-        <value>a <see cref="T:System.Int32" /> that represents the line number.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LinePosition">
-      <MemberSignature Language="C#" Value="public int LinePosition { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the column number of this element, if provided by the source.</summary>
-        <value>a <see cref="T:System.Int32" /> that represents the column number.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseUri">
-      <MemberSignature Language="C#" Value="public string BaseUri { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the base URI of this element, if provided by the source.</summary>
-        <value>a <see cref="T:System.String" /> that represents the base URI of this element.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngElementBase" FullName="Commons.Xml.Relaxng.RelaxngElementBase">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngElementBase" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>An abstract representation of RELAX NG grammar element.</summary>
+    <remarks>This class does not represent "element" pattern (see <see cref="T:Commons.Xml.Relaxng.RelaxngElement" />).</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Object</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public abstract void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the XmlWriter.</summary>
+        <param name="writer">an <see cref="T:System.Xml.XmlWriter" /> that is used to output this element.</param>
+        <remarks>
+		Each of the derived class in Commons.Xml.Relaxng.dll can be created by its own default constructor.
+		</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngElementBase ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>Not intended to be used.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LineNumber">
+      <MemberSignature Language="C#" Value="public int LineNumber { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the line number of this element, if provided by the source.</summary>
+        <value>a <see cref="T:System.Int32" /> that represents the line number.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LinePosition">
+      <MemberSignature Language="C#" Value="public int LinePosition { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the column number of this element, if provided by the source.</summary>
+        <value>a <see cref="T:System.Int32" /> that represents the column number.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BaseUri">
+      <MemberSignature Language="C#" Value="public string BaseUri { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the base URI of this element, if provided by the source.</summary>
+        <value>a <see cref="T:System.String" /> that represents the base URI of this element.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngEmpty.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngEmpty.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngEmpty" FullName="Commons.Xml.Relaxng.RelaxngEmpty">
-  <TypeSignature Language="C#" Value="public class RelaxngEmpty : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "empty" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngEmpty ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Empty.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngEmpty" FullName="Commons.Xml.Relaxng.RelaxngEmpty">
+  <TypeSignature Language="C#" Value="public class RelaxngEmpty : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "empty" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngEmpty ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Empty.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngExcept.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngExcept.xml
@@ -1,56 +1,56 @@
-<Type Name="RelaxngExcept" FullName="Commons.Xml.Relaxng.RelaxngExcept">
-  <TypeSignature Language="C#" Value="public class RelaxngExcept : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "except" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngExcept ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Patterns">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the patterns that is contained in the exception list.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngExcept" FullName="Commons.Xml.Relaxng.RelaxngExcept">
+  <TypeSignature Language="C#" Value="public class RelaxngExcept : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "except" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngExcept ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Patterns">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the patterns that is contained in the exception list.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngExceptNameClass.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngExceptNameClass.xml
@@ -1,56 +1,56 @@
-<Type Name="RelaxngExceptNameClass" FullName="Commons.Xml.Relaxng.RelaxngExceptNameClass">
-  <TypeSignature Language="C#" Value="public class RelaxngExceptNameClass : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "except" part of "anyName" and "nsName" elements.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngExceptNameClass ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Names">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClassList Names { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClassList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the list of the excluded name classes contained in this element.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClassList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngExceptNameClass" FullName="Commons.Xml.Relaxng.RelaxngExceptNameClass">
+  <TypeSignature Language="C#" Value="public class RelaxngExceptNameClass : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "except" part of "anyName" and "nsName" elements.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngExceptNameClass ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Names">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClassList Names { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClassList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the list of the excluded name classes contained in this element.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClassList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngException.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngException.xml
@@ -1,72 +1,72 @@
-<Type Name="RelaxngException" FullName="Commons.Xml.Relaxng.RelaxngException">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngException : System.Exception" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents an exception from both the compilation of the RELAX NG grammar patterns, and validation of XML documents.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Exception</BaseTypeName>
-  </Base>
-  <Interfaces>
-  </Interfaces>
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngException ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngException (string message);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>The constructor that accepts the error message.</summary>
-        <param name="message">a <see cref="T:System.String" /></param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngException (string message, Exception innerException);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="message" Type="System.String" />
-        <Parameter Name="innerException" Type="System.Exception" />
-      </Parameters>
-      <Docs>
-        <summary>The constructor that accepts the error message and the inner exception.</summary>
-        <param name="message">a <see cref="T:System.String" /></param>
-        <param name="innerException">a <see cref="T:System.Exception" /></param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngException (Commons.Xml.Relaxng.RelaxngElementBase source, string message);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="source" Type="Commons.Xml.Relaxng.RelaxngElementBase" />
-        <Parameter Name="message" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="source">To be added.</param>
-        <param name="message">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngException" FullName="Commons.Xml.Relaxng.RelaxngException">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngException : System.Exception" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents an exception from both the compilation of the RELAX NG grammar patterns, and validation of XML documents.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Exception</BaseTypeName>
+  </Base>
+  <Interfaces>
+  </Interfaces>
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngException ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngException (string message);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>The constructor that accepts the error message.</summary>
+        <param name="message">a <see cref="T:System.String" /></param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngException (string message, Exception innerException);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="message" Type="System.String" />
+        <Parameter Name="innerException" Type="System.Exception" />
+      </Parameters>
+      <Docs>
+        <summary>The constructor that accepts the error message and the inner exception.</summary>
+        <param name="message">a <see cref="T:System.String" /></param>
+        <param name="innerException">a <see cref="T:System.Exception" /></param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngException (Commons.Xml.Relaxng.RelaxngElementBase source, string message);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="source" Type="Commons.Xml.Relaxng.RelaxngElementBase" />
+        <Parameter Name="message" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="source">To be added.</param>
+        <param name="message">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngExternalRef.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngExternalRef.xml
@@ -1,81 +1,81 @@
-<Type Name="RelaxngExternalRef" FullName="Commons.Xml.Relaxng.RelaxngExternalRef">
-  <TypeSignature Language="C#" Value="public class RelaxngExternalRef : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "externalRef" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngExternalRef ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Href">
-      <MemberSignature Language="C#" Value="public string Href { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NSContext">
-      <MemberSignature Language="C#" Value="public string NSContext { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the target name to be referenced.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>The name must specifiy one of the name of the "define" element in an external grammar to this pattern's grammar.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns ExternalRef.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngExternalRef" FullName="Commons.Xml.Relaxng.RelaxngExternalRef">
+  <TypeSignature Language="C#" Value="public class RelaxngExternalRef : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "externalRef" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngExternalRef ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Href">
+      <MemberSignature Language="C#" Value="public string Href { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NSContext">
+      <MemberSignature Language="C#" Value="public string NSContext { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the target name to be referenced.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>The name must specifiy one of the name of the "define" element in an external grammar to this pattern's grammar.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns ExternalRef.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngGrammar.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngGrammar.xml
@@ -1,132 +1,132 @@
-<Type Name="RelaxngGrammar" FullName="Commons.Xml.Relaxng.RelaxngGrammar">
-  <TypeSignature Language="C#" Value="public class RelaxngGrammar : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "grammar" element pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="NamespaceURI">
-      <MemberSignature Language="C#" Value="public static string NamespaceURI;" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Returns RELAX NG namespace URI ( http://relaxng.org/ns/structures/1.0 ).</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngGrammar ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The RELAX NG pattern type for this class. It returns Grammar.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="Starts">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Starts { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "start" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Defines">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Defines { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "define" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Includes">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Includes { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "include" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Divs">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Divs { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains "div" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefaultNamespace">
-      <MemberSignature Language="C#" Value="public string DefaultNamespace { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngGrammar" FullName="Commons.Xml.Relaxng.RelaxngGrammar">
+  <TypeSignature Language="C#" Value="public class RelaxngGrammar : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "grammar" element pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="NamespaceURI">
+      <MemberSignature Language="C#" Value="public static string NamespaceURI;" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Returns RELAX NG namespace URI ( http://relaxng.org/ns/structures/1.0 ).</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngGrammar ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The RELAX NG pattern type for this class. It returns Grammar.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="Starts">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Starts { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "start" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Defines">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Defines { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "define" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Includes">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Includes { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "include" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Divs">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Divs { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains "div" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="DefaultNamespace">
+      <MemberSignature Language="C#" Value="public string DefaultNamespace { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngGrammarContentList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngGrammarContentList.xml
@@ -1,98 +1,98 @@
-<Type Name="RelaxngGrammarContentList" FullName="Commons.Xml.Relaxng.RelaxngGrammarContentList">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngGrammarContentList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents a list that contains <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> instances.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-  </Interfaces>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.IGrammarContent p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.IGrammarContent" />
-      </Parameters>
-      <Docs>
-        <summary>Adds an IGrammarContent to the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> to be added.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.IGrammarContent p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pos" Type="System.Int32" />
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.IGrammarContent" />
-      </Parameters>
-      <Docs>
-        <summary>Inserts an IGrammar object into the indicated position in the list.</summary>
-        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> to be inserted.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.IGrammarContent p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.IGrammarContent" />
-      </Parameters>
-      <Docs>
-        <summary>Removes an IGrammarContent object from the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> to be removed.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngGrammarContentList ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constuctor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.IGrammarContent Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.IGrammarContent</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <summary>Gets or sets an IGrammarContent object to the indicated position.</summary>
-        <param name="i">an <see cref="T:System.Int32" /> that indicates the position.</param>
-        <value>an <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> object that is positioned at the specified index.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngGrammarContentList" FullName="Commons.Xml.Relaxng.RelaxngGrammarContentList">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngGrammarContentList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents a list that contains <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> instances.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+  </Interfaces>
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.IGrammarContent p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.IGrammarContent" />
+      </Parameters>
+      <Docs>
+        <summary>Adds an IGrammarContent to the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> to be added.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Insert">
+      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.IGrammarContent p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="pos" Type="System.Int32" />
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.IGrammarContent" />
+      </Parameters>
+      <Docs>
+        <summary>Inserts an IGrammar object into the indicated position in the list.</summary>
+        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> to be inserted.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.IGrammarContent p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.IGrammarContent" />
+      </Parameters>
+      <Docs>
+        <summary>Removes an IGrammarContent object from the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> to be removed.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngGrammarContentList ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constuctor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.IGrammarContent Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.IGrammarContent</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <summary>Gets or sets an IGrammarContent object to the indicated position.</summary>
+        <param name="i">an <see cref="T:System.Int32" /> that indicates the position.</param>
+        <value>an <see cref="T:Commons.Xml.Relaxng.IGrammarContent" /> object that is positioned at the specified index.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngGroup.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngGroup.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngGroup" FullName="Commons.Xml.Relaxng.RelaxngGroup">
-  <TypeSignature Language="C#" Value="public class RelaxngGroup : Commons.Xml.Relaxng.RelaxngBinaryContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "group" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngBinaryContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngGroup ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Group.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngGroup" FullName="Commons.Xml.Relaxng.RelaxngGroup">
+  <TypeSignature Language="C#" Value="public class RelaxngGroup : Commons.Xml.Relaxng.RelaxngBinaryContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "group" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngBinaryContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngGroup ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Group.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngInclude.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngInclude.xml
@@ -1,112 +1,112 @@
-<Type Name="RelaxngInclude" FullName="Commons.Xml.Relaxng.RelaxngInclude">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngInclude : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "include" element.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngInclude ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Href">
-      <MemberSignature Language="C#" Value="public string Href { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the target grammar location.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Starts">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Starts { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains overriding "start" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Defines">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Defines { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains overriding "define" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Divs">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Divs { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains overriding "div" components.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NSContext">
-      <MemberSignature Language="C#" Value="public string NSContext { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Returns the context namespace. This namespace is filled when read through <see cref="M:Commons.Xml.Relaxng.RelaxngPattern.Read" /> and that affects on the compilation of the components contained in this include.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngInclude" FullName="Commons.Xml.Relaxng.RelaxngInclude">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngInclude : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "include" element.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+    <Interface>
+      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
+    </Interface>
+  </Interfaces>
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngInclude ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Href">
+      <MemberSignature Language="C#" Value="public string Href { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the target grammar location.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Starts">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Starts { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains overriding "start" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Defines">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Defines { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains overriding "define" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Divs">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngGrammarContentList Divs { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngGrammarContentList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains overriding "div" components.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngGrammarContentList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NSContext">
+      <MemberSignature Language="C#" Value="public string NSContext { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Returns the context namespace. This namespace is filled when read through <see cref="M:Commons.Xml.Relaxng.RelaxngPattern.Read" /> and that affects on the compilation of the components contained in this include.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngInterleave.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngInterleave.xml
@@ -1,56 +1,56 @@
-<Type Name="RelaxngInterleave" FullName="Commons.Xml.Relaxng.RelaxngInterleave">
-  <TypeSignature Language="C#" Value="public class RelaxngInterleave : Commons.Xml.Relaxng.RelaxngBinaryContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "interleave" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngBinaryContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngInterleave ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Interleave.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngInterleave" FullName="Commons.Xml.Relaxng.RelaxngInterleave">
+  <TypeSignature Language="C#" Value="public class RelaxngInterleave : Commons.Xml.Relaxng.RelaxngBinaryContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "interleave" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngBinaryContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngInterleave ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Interleave.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngList.xml
@@ -1,45 +1,45 @@
-<Type Name="RelaxngList" FullName="Commons.Xml.Relaxng.RelaxngList">
-  <TypeSignature Language="C#" Value="public class RelaxngList : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "list" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Mixed.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngList" FullName="Commons.Xml.Relaxng.RelaxngList">
+  <TypeSignature Language="C#" Value="public class RelaxngList : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "list" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Mixed.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngMergedProvider.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngMergedProvider.xml
@@ -1,83 +1,83 @@
-<Type Name="RelaxngMergedProvider" FullName="Commons.Xml.Relaxng.RelaxngMergedProvider">
-  <TypeSignature Language="C#" Value="public class RelaxngMergedProvider : Commons.Xml.Relaxng.RelaxngDatatypeProvider" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>A <see cref="Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> implementation that is used to merge multiple data provider identified by its datatype library names.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDatatypeProvider</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName="GetDatatype">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngDatatype GetDatatype (string name, string ns, Commons.Xml.Relaxng.RelaxngParamList parameters);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatype</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-        <Parameter Name="parameters" Type="Commons.Xml.Relaxng.RelaxngParamList" />
-      </Parameters>
-      <Docs>
-        <summary>Returns data types using contained datatype providers.</summary>
-        <param name="name">a <see cref="T:System.String" /> that represents the local type name.</param>
-        <param name="ns">a <see cref="T:System.String" /> that represents the namespace (datatype library).</param>
-        <param name="parameters">a <see cref="T:Commons.Xml.Relaxng.RelaxngParamList" />; The parameters for this type.</param>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatype" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngMergedProvider ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DefaultProvider">
-      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngMergedProvider DefaultProvider { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngMergedProvider</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The default provider used by <see cref="M:Commons.Xml.Relaxng.RelaxngPattern.Read" />. This provider support default namespace types ("string" and "token") and XML Schema datatypes (identified by the namespace http://www.w3.org/2001/XMLSchema-datatypes ).</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngMergedProvider" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngDatatypeProvider Item[string ns] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatypeProvider</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>This indexer is used to get or set each <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> instance indexed by the parameter datatype library URI.</summary>
-        <param name="ns">a <see cref="T:System.String" /> that indicates the datatype library namespace.</param>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> that is identified by the namespace. Returns null if no datatype provider is registered by this provider.</value>
-        <remarks>Note that returned <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> does not always support the datatypes indicated by the datatype library URI. <see cref="M:Commons.Xml.Relaxng.RelaxngDatatypeProvider.GetDatatype" /> is not always bound to certain datatype library.
-		</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngMergedProvider" FullName="Commons.Xml.Relaxng.RelaxngMergedProvider">
+  <TypeSignature Language="C#" Value="public class RelaxngMergedProvider : Commons.Xml.Relaxng.RelaxngDatatypeProvider" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>A <see cref="Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> implementation that is used to merge multiple data provider identified by its datatype library names.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDatatypeProvider</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName="GetDatatype">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngDatatype GetDatatype (string name, string ns, Commons.Xml.Relaxng.RelaxngParamList parameters);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatype</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+        <Parameter Name="ns" Type="System.String" />
+        <Parameter Name="parameters" Type="Commons.Xml.Relaxng.RelaxngParamList" />
+      </Parameters>
+      <Docs>
+        <summary>Returns data types using contained datatype providers.</summary>
+        <param name="name">a <see cref="T:System.String" /> that represents the local type name.</param>
+        <param name="ns">a <see cref="T:System.String" /> that represents the namespace (datatype library).</param>
+        <param name="parameters">a <see cref="T:Commons.Xml.Relaxng.RelaxngParamList" />; The parameters for this type.</param>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatype" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngMergedProvider ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="DefaultProvider">
+      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngMergedProvider DefaultProvider { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngMergedProvider</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The default provider used by <see cref="M:Commons.Xml.Relaxng.RelaxngPattern.Read" />. This provider support default namespace types ("string" and "token") and XML Schema datatypes (identified by the namespace http://www.w3.org/2001/XMLSchema-datatypes ).</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngMergedProvider" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngDatatypeProvider Item[string ns] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatypeProvider</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="ns" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>This indexer is used to get or set each <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> instance indexed by the parameter datatype library URI.</summary>
+        <param name="ns">a <see cref="T:System.String" /> that indicates the datatype library namespace.</param>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> that is identified by the namespace. Returns null if no datatype provider is registered by this provider.</value>
+        <remarks>Note that returned <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> does not always support the datatypes indicated by the datatype library URI. <see cref="M:Commons.Xml.Relaxng.RelaxngDatatypeProvider.GetDatatype" /> is not always bound to certain datatype library.
+		</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngMixed.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngMixed.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngMixed" FullName="Commons.Xml.Relaxng.RelaxngMixed">
-  <TypeSignature Language="C#" Value="public class RelaxngMixed : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "mixed" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngMixed ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Mixed.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngMixed" FullName="Commons.Xml.Relaxng.RelaxngMixed">
+  <TypeSignature Language="C#" Value="public class RelaxngMixed : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "mixed" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngMixed ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Mixed.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngName.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngName.xml
@@ -1,84 +1,84 @@
-<Type Name="RelaxngName" FullName="Commons.Xml.Relaxng.RelaxngName">
-  <TypeSignature Language="C#" Value="public class RelaxngName : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "name" name class.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngName ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngName (string ncname, string ns);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="ncname" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>The constructor that initializes <see cref="P:Commons.Xml.Relaxng.RelaxngName.Name" /> and <see cref="P:Commons.Xml.Relaxng.RelaxngName.Namespace" />.</summary>
-        <param name="ncname">a <see cref="T:System.String" /> that represents the local name.</param>
-        <param name="ns">a <see cref="T:System.String" /> that represents the namespace URI.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LocalName">
-      <MemberSignature Language="C#" Value="public string LocalName { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the local part of the target qualified name.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public string Namespace { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the namespace URI part of the target qualified name.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngName" FullName="Commons.Xml.Relaxng.RelaxngName">
+  <TypeSignature Language="C#" Value="public class RelaxngName : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "name" name class.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngName ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngName (string ncname, string ns);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="ncname" Type="System.String" />
+        <Parameter Name="ns" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>The constructor that initializes <see cref="P:Commons.Xml.Relaxng.RelaxngName.Name" /> and <see cref="P:Commons.Xml.Relaxng.RelaxngName.Namespace" />.</summary>
+        <param name="ncname">a <see cref="T:System.String" /> that represents the local name.</param>
+        <param name="ns">a <see cref="T:System.String" /> that represents the namespace URI.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LocalName">
+      <MemberSignature Language="C#" Value="public string LocalName { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the local part of the target qualified name.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Namespace">
+      <MemberSignature Language="C#" Value="public string Namespace { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the namespace URI part of the target qualified name.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNameChoice.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNameChoice.xml
@@ -1,57 +1,57 @@
-<Type Name="RelaxngNameChoice" FullName="Commons.Xml.Relaxng.RelaxngNameChoice">
-  <TypeSignature Language="C#" Value="public class RelaxngNameChoice : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "choice" name class.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngNameChoice ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Children">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClassList Children { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClassList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The list that contains all the alternatives contained in this choice name class.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClassList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngNameChoice" FullName="Commons.Xml.Relaxng.RelaxngNameChoice">
+  <TypeSignature Language="C#" Value="public class RelaxngNameChoice : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "choice" name class.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngNameChoice ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Children">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClassList Children { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClassList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The list that contains all the alternatives contained in this choice name class.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClassList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNameClass.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNameClass.xml
@@ -1,29 +1,29 @@
-<Type Name="RelaxngNameClass" FullName="Commons.Xml.Relaxng.RelaxngNameClass">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngNameClass : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents an abstract form of RELAX NG name classes.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngNameClass ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The constructor intended to be used internally.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngNameClass" FullName="Commons.Xml.Relaxng.RelaxngNameClass">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngNameClass : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents an abstract form of RELAX NG name classes.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngNameClass ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The constructor intended to be used internally.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNameClassList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNameClassList.xml
@@ -1,98 +1,98 @@
-<Type Name="RelaxngNameClassList" FullName="Commons.Xml.Relaxng.RelaxngNameClassList">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngNameClassList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents a list that contains <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> instances.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-  </Interfaces>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.RelaxngNameClass p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngNameClass" />
-      </Parameters>
-      <Docs>
-        <summary>Adds a name class to the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> to be added.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.RelaxngNameClass p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pos" Type="System.Int32" />
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngNameClass" />
-      </Parameters>
-      <Docs>
-        <summary>Inserts a name class into the indicated position in the list.</summary>
-        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> to be inserted.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.RelaxngNameClass p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngNameClass" />
-      </Parameters>
-      <Docs>
-        <summary>Removes a name class from the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> to be removed.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngNameClassList ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClass Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClass</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <summary>Gets or sets a name class object to the indicated position.</summary>
-        <param name="i">an <see cref="T:System.Int32" /> that indicates the location.</param>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> that is positioned at the specified index.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngNameClassList" FullName="Commons.Xml.Relaxng.RelaxngNameClassList">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngNameClassList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents a list that contains <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> instances.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+  </Interfaces>
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.RelaxngNameClass p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngNameClass" />
+      </Parameters>
+      <Docs>
+        <summary>Adds a name class to the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> to be added.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Insert">
+      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.RelaxngNameClass p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="pos" Type="System.Int32" />
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngNameClass" />
+      </Parameters>
+      <Docs>
+        <summary>Inserts a name class into the indicated position in the list.</summary>
+        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> to be inserted.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.RelaxngNameClass p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngNameClass" />
+      </Parameters>
+      <Docs>
+        <summary>Removes a name class from the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> to be removed.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngNameClassList ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngNameClass Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngNameClass</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <summary>Gets or sets a name class object to the indicated position.</summary>
+        <param name="i">an <see cref="T:System.Int32" /> that indicates the location.</param>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngNameClass" /> that is positioned at the specified index.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNotAllowed.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNotAllowed.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngNotAllowed" FullName="Commons.Xml.Relaxng.RelaxngNotAllowed">
-  <TypeSignature Language="C#" Value="public class RelaxngNotAllowed : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "notAllowed" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngNotAllowed ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns NotAllowed.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngNotAllowed" FullName="Commons.Xml.Relaxng.RelaxngNotAllowed">
+  <TypeSignature Language="C#" Value="public class RelaxngNotAllowed : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "notAllowed" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngNotAllowed ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns NotAllowed.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNsName.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngNsName.xml
@@ -1,69 +1,69 @@
-<Type Name="RelaxngNsName" FullName="Commons.Xml.Relaxng.RelaxngNsName">
-  <TypeSignature Language="C#" Value="public class RelaxngNsName : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "nsName" name class.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngNsName ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Namespace">
-      <MemberSignature Language="C#" Value="public string Namespace { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the target namesace URI for this nsName name class.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Except">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngExceptNameClass Except { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngExceptNameClass</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the "except" part of this nsName name class.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngExceptNameClass" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngNsName" FullName="Commons.Xml.Relaxng.RelaxngNsName">
+  <TypeSignature Language="C#" Value="public class RelaxngNsName : Commons.Xml.Relaxng.RelaxngNameClass" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "nsName" name class.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngNameClass</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngNsName ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Namespace">
+      <MemberSignature Language="C#" Value="public string Namespace { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the target namesace URI for this nsName name class.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Except">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngExceptNameClass Except { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngExceptNameClass</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the "except" part of this nsName name class.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngExceptNameClass" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngOneOrMore.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngOneOrMore.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngOneOrMore" FullName="Commons.Xml.Relaxng.RelaxngOneOrMore">
-  <TypeSignature Language="C#" Value="public class RelaxngOneOrMore : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "oneOrMore" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngOneOrMore ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns OneOrMore.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngOneOrMore" FullName="Commons.Xml.Relaxng.RelaxngOneOrMore">
+  <TypeSignature Language="C#" Value="public class RelaxngOneOrMore : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "oneOrMore" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngOneOrMore ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns OneOrMore.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngOptional.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngOptional.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngOptional" FullName="Commons.Xml.Relaxng.RelaxngOptional">
-  <TypeSignature Language="C#" Value="public class RelaxngOptional : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "optional" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngOptional ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Optional.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngOptional" FullName="Commons.Xml.Relaxng.RelaxngOptional">
+  <TypeSignature Language="C#" Value="public class RelaxngOptional : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "optional" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngOptional ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Optional.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngParam.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngParam.xml
@@ -1,84 +1,84 @@
-<Type Name="RelaxngParam" FullName="Commons.Xml.Relaxng.RelaxngParam">
-  <TypeSignature Language="C#" Value="public class RelaxngParam : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents a parameter for datatype.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngParam ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngParam (string name, string value);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-        <Parameter Name="value" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>The constructor that specifies parameter name and value.</summary>
-        <param name="name">a <see cref="T:System.String" /> that specifies the name.</param>
-        <param name="value">a <see cref="T:System.String" /> that specifies the value.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The name of the parameter.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public string Value { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The value of the parameter.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngParam" FullName="Commons.Xml.Relaxng.RelaxngParam">
+  <TypeSignature Language="C#" Value="public class RelaxngParam : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents a parameter for datatype.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngParam ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngParam (string name, string value);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+        <Parameter Name="value" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>The constructor that specifies parameter name and value.</summary>
+        <param name="name">a <see cref="T:System.String" /> that specifies the name.</param>
+        <param name="value">a <see cref="T:System.String" /> that specifies the value.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The name of the parameter.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Value">
+      <MemberSignature Language="C#" Value="public string Value { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The value of the parameter.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngParamList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngParamList.xml
@@ -1,98 +1,98 @@
-<Type Name="RelaxngParamList" FullName="Commons.Xml.Relaxng.RelaxngParamList">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngParamList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents a list that contains <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> instances.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-  </Interfaces>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.RelaxngParam p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngParam" />
-      </Parameters>
-      <Docs>
-        <summary>Adds a parameter to the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> to be added.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.RelaxngParam p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pos" Type="System.Int32" />
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngParam" />
-      </Parameters>
-      <Docs>
-        <summary>Inserts a parameter into the indicated position in the list.</summary>
-        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> to be inserted.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.RelaxngParam p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngParam" />
-      </Parameters>
-      <Docs>
-        <summary>Removes a parameter from the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> to be removed.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngParamList ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngParam Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngParam</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <summary>Gets or sets a parameter object to the indicated position.</summary>
-        <param name="i">an <see cref="T:System.Int32" /> that indicates the location.</param>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> that is positioned at the specified index.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngParamList" FullName="Commons.Xml.Relaxng.RelaxngParamList">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngParamList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents a list that contains <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> instances.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+  </Interfaces>
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.RelaxngParam p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngParam" />
+      </Parameters>
+      <Docs>
+        <summary>Adds a parameter to the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> to be added.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Insert">
+      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.RelaxngParam p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="pos" Type="System.Int32" />
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngParam" />
+      </Parameters>
+      <Docs>
+        <summary>Inserts a parameter into the indicated position in the list.</summary>
+        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> to be inserted.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.RelaxngParam p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngParam" />
+      </Parameters>
+      <Docs>
+        <summary>Removes a parameter from the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> to be removed.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngParamList ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngParam Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngParam</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <summary>Gets or sets a parameter object to the indicated position.</summary>
+        <param name="i">an <see cref="T:System.Int32" /> that indicates the location.</param>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngParam" /> that is positioned at the specified index.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngParentRef.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngParentRef.xml
@@ -1,68 +1,68 @@
-<Type Name="RelaxngParentRef" FullName="Commons.Xml.Relaxng.RelaxngParentRef">
-  <TypeSignature Language="C#" Value="public class RelaxngParentRef : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "parentRef" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngParentRef ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the target name to be referenced.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>The name must specifiy one of the name of the "define" element in the "parent grammar" of this pattern's grammar.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns ParentRef.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngParentRef" FullName="Commons.Xml.Relaxng.RelaxngParentRef">
+  <TypeSignature Language="C#" Value="public class RelaxngParentRef : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "parentRef" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngParentRef ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the target name to be referenced.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>The name must specifiy one of the name of the "define" element in the "parent grammar" of this pattern's grammar.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns ParentRef.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngPattern.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngPattern.xml
@@ -1,145 +1,145 @@
-<Type Name="RelaxngPattern" FullName="Commons.Xml.Relaxng.RelaxngPattern">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngPattern : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents an abstract RELAX NG pattern. All RELAX NG patterns derive from this class.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern Read (System.Xml.XmlReader xmlReader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="xmlReader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Reads a RELAX NG pattern from XmlReader. This method equals to the call to Read (xmlReader, RelaxngMergedProvider.DefaultProvider).</summary>
-        <param name="xmlReader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern Read (System.Xml.XmlReader xmlReader, Commons.Xml.Relaxng.RelaxngDatatypeProvider provider);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="xmlReader" Type="System.Xml.XmlReader" />
-        <Parameter Name="provider" Type="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
-      </Parameters>
-      <Docs>
-        <summary>Reads a RELAX NG pattern from XmlReader, using specified data type provider (see <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> for the detail).</summary>
-        <param name="xmlReader">a <see cref="T:System.Xml.XmlReader" /> that holds the target RELAX NG grammar XML.</param>
-        <param name="provider">a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /></param>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></returns>
-        <remarks>This method is not designed to read RELAX NG compact syntax. To parse RELAX NG compact syntax, use <see cref="T:Commons.Xml.Relaxng.Rnc.RncParser" />.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Compile">
-      <MemberSignature Language="C#" Value="public void Compile ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Compiles the pattern and checks if the pattern object contains any errors or not.</summary>
-        <remarks>This method is anyways called internally before being used in <see cref="T:Commons.Xml.Relaxng.RelaxngValidatingReader" />.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngPattern ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The constructor that is intended to be used internally.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public abstract Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the pattern type of this instance.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DataProvider">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngDatatypeProvider DataProvider { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatypeProvider</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Returns the data type provider for this pattern instance. See <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> for the detail.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="WriteCompact">
-      <MemberSignature Language="C#" Value="public void WriteCompact (System.IO.TextWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.IO.TextWriter" />
-      </Parameters>
-      <Docs>
-        <param name="writer">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="WriteCompact">
-      <MemberSignature Language="C#" Value="public void WriteCompact (System.IO.TextWriter writer, System.Xml.XmlNamespaceManager res);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.IO.TextWriter" />
-        <Parameter Name="res" Type="System.Xml.XmlNamespaceManager" />
-      </Parameters>
-      <Docs>
-        <param name="writer">To be added.</param>
-        <param name="res">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="XmlResolver">
-      <MemberSignature Language="C#" Value="public System.Xml.XmlResolver XmlResolver { set; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlResolver</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngPattern" FullName="Commons.Xml.Relaxng.RelaxngPattern">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngPattern : Commons.Xml.Relaxng.RelaxngElementBase" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents an abstract RELAX NG pattern. All RELAX NG patterns derive from this class.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Read">
+      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern Read (System.Xml.XmlReader xmlReader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="xmlReader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Reads a RELAX NG pattern from XmlReader. This method equals to the call to Read (xmlReader, RelaxngMergedProvider.DefaultProvider).</summary>
+        <param name="xmlReader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Read">
+      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern Read (System.Xml.XmlReader xmlReader, Commons.Xml.Relaxng.RelaxngDatatypeProvider provider);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="xmlReader" Type="System.Xml.XmlReader" />
+        <Parameter Name="provider" Type="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
+      </Parameters>
+      <Docs>
+        <summary>Reads a RELAX NG pattern from XmlReader, using specified data type provider (see <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> for the detail).</summary>
+        <param name="xmlReader">a <see cref="T:System.Xml.XmlReader" /> that holds the target RELAX NG grammar XML.</param>
+        <param name="provider">a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /></param>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></returns>
+        <remarks>This method is not designed to read RELAX NG compact syntax. To parse RELAX NG compact syntax, use <see cref="T:Commons.Xml.Relaxng.Rnc.RncParser" />.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Compile">
+      <MemberSignature Language="C#" Value="public void Compile ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Compiles the pattern and checks if the pattern object contains any errors or not.</summary>
+        <remarks>This method is anyways called internally before being used in <see cref="T:Commons.Xml.Relaxng.RelaxngValidatingReader" />.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngPattern ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The constructor that is intended to be used internally.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public abstract Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the pattern type of this instance.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="DataProvider">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngDatatypeProvider DataProvider { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngDatatypeProvider</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Returns the data type provider for this pattern instance. See <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> for the detail.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="WriteCompact">
+      <MemberSignature Language="C#" Value="public void WriteCompact (System.IO.TextWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.IO.TextWriter" />
+      </Parameters>
+      <Docs>
+        <param name="writer">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="WriteCompact">
+      <MemberSignature Language="C#" Value="public void WriteCompact (System.IO.TextWriter writer, System.Xml.XmlNamespaceManager res);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.IO.TextWriter" />
+        <Parameter Name="res" Type="System.Xml.XmlNamespaceManager" />
+      </Parameters>
+      <Docs>
+        <param name="writer">To be added.</param>
+        <param name="res">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="XmlResolver">
+      <MemberSignature Language="C#" Value="public System.Xml.XmlResolver XmlResolver { set; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlResolver</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngPatternList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngPatternList.xml
@@ -1,98 +1,98 @@
-<Type Name="RelaxngPatternList" FullName="Commons.Xml.Relaxng.RelaxngPatternList">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngPatternList : System.Collections.CollectionBase" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents a list of <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> instances.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-  </Interfaces>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName="Add">
-      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.RelaxngPattern p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngPattern" />
-      </Parameters>
-      <Docs>
-        <summary>Adds a pattern to the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> to be added.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Insert">
-      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.RelaxngPattern p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="pos" Type="System.Int32" />
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngPattern" />
-      </Parameters>
-      <Docs>
-        <summary>Inserts a pattern into the indicated position in the list.</summary>
-        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> to be inserted.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Remove">
-      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.RelaxngPattern p);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngPattern" />
-      </Parameters>
-      <Docs>
-        <summary>Removes a patern from the list.</summary>
-        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> to be removed.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngPatternList ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Item[int i] { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <summary>Gets or sets a pattern object to the indicated position.</summary>
-        <param name="i">an <see cref="T:System.Int32" /> that indicates the location.</param>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" />that is positioned at the specified index.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngPatternList" FullName="Commons.Xml.Relaxng.RelaxngPatternList">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngPatternList : System.Collections.CollectionBase" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents a list of <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> instances.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Collections.CollectionBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+  </Interfaces>
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName="Add">
+      <MemberSignature Language="C#" Value="public void Add (Commons.Xml.Relaxng.RelaxngPattern p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngPattern" />
+      </Parameters>
+      <Docs>
+        <summary>Adds a pattern to the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> to be added.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Insert">
+      <MemberSignature Language="C#" Value="public void Insert (int pos, Commons.Xml.Relaxng.RelaxngPattern p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="pos" Type="System.Int32" />
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngPattern" />
+      </Parameters>
+      <Docs>
+        <summary>Inserts a pattern into the indicated position in the list.</summary>
+        <param name="pos">an <see cref="T:System.Int32" /> that indicates the position.</param>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> to be inserted.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Remove">
+      <MemberSignature Language="C#" Value="public void Remove (Commons.Xml.Relaxng.RelaxngPattern p);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="p" Type="Commons.Xml.Relaxng.RelaxngPattern" />
+      </Parameters>
+      <Docs>
+        <summary>Removes a patern from the list.</summary>
+        <param name="p">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> to be removed.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngPatternList ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Item[int i] { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <summary>Gets or sets a pattern object to the indicated position.</summary>
+        <param name="i">an <see cref="T:System.Int32" /> that indicates the location.</param>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" />that is positioned at the specified index.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngPatternType.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngPatternType.xml
@@ -1,270 +1,270 @@
-<Type Name="RelaxngPatternType" FullName="Commons.Xml.Relaxng.RelaxngPatternType">
-  <TypeSignature Language="C#" Value="public enum RelaxngPatternType" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>This is an enum type. Enum type is thread safe.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Enumerates the kind of RELAX NG patterns.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Enum</BaseTypeName>
-  </Base>
-  <Members>
-    <Member MemberName="Empty">
-      <MemberSignature Language="C#" Value="Empty" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "empty" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="NotAllowed">
-      <MemberSignature Language="C#" Value="NotAllowed" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "notAllowed" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Text">
-      <MemberSignature Language="C#" Value="Text" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "text" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Choice">
-      <MemberSignature Language="C#" Value="Choice" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "choice" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Interleave">
-      <MemberSignature Language="C#" Value="Interleave" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "interleave" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Group">
-      <MemberSignature Language="C#" Value="Group" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "group" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="OneOrMore">
-      <MemberSignature Language="C#" Value="OneOrMore" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "oneOrMore" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="List">
-      <MemberSignature Language="C#" Value="List" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "list" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Data">
-      <MemberSignature Language="C#" Value="Data" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "data" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="DataExcept">
-      <MemberSignature Language="C#" Value="DataExcept" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>This enumeration represents a kind of "derivative" and used only in internal processing.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="Value" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "value" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Attribute">
-      <MemberSignature Language="C#" Value="Attribute" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "attribute" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Element">
-      <MemberSignature Language="C#" Value="Element" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "element" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="After">
-      <MemberSignature Language="C#" Value="After" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>This enumeration represents a kind of "derivative" and used only in internal processing.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Ref">
-      <MemberSignature Language="C#" Value="Ref" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "ref" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Grammar">
-      <MemberSignature Language="C#" Value="Grammar" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "grammar" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ZeroOrMore">
-      <MemberSignature Language="C#" Value="ZeroOrMore" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "zeroOrMore" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Mixed">
-      <MemberSignature Language="C#" Value="Mixed" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "mixed" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="Optional">
-      <MemberSignature Language="C#" Value="Optional" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "optional" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ExternalRef">
-      <MemberSignature Language="C#" Value="ExternalRef" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "externalRef" pattern.</summary>
-      </Docs>
-    </Member>
-    <Member MemberName="ParentRef">
-      <MemberSignature Language="C#" Value="ParentRef" />
-      <MemberType>Field</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters>
-      </Parameters>
-      <Docs>
-        <summary>Represents "parentRef" pattern.</summary>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngPatternType" FullName="Commons.Xml.Relaxng.RelaxngPatternType">
+  <TypeSignature Language="C#" Value="public enum RelaxngPatternType" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>This is an enum type. Enum type is thread safe.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Enumerates the kind of RELAX NG patterns.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Enum</BaseTypeName>
+  </Base>
+  <Members>
+    <Member MemberName="Empty">
+      <MemberSignature Language="C#" Value="Empty" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "empty" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="NotAllowed">
+      <MemberSignature Language="C#" Value="NotAllowed" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "notAllowed" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Text">
+      <MemberSignature Language="C#" Value="Text" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "text" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Choice">
+      <MemberSignature Language="C#" Value="Choice" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "choice" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Interleave">
+      <MemberSignature Language="C#" Value="Interleave" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "interleave" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Group">
+      <MemberSignature Language="C#" Value="Group" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "group" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="OneOrMore">
+      <MemberSignature Language="C#" Value="OneOrMore" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "oneOrMore" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="List">
+      <MemberSignature Language="C#" Value="List" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "list" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Data">
+      <MemberSignature Language="C#" Value="Data" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "data" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="DataExcept">
+      <MemberSignature Language="C#" Value="DataExcept" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>This enumeration represents a kind of "derivative" and used only in internal processing.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Value">
+      <MemberSignature Language="C#" Value="Value" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "value" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Attribute">
+      <MemberSignature Language="C#" Value="Attribute" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "attribute" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Element">
+      <MemberSignature Language="C#" Value="Element" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "element" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="After">
+      <MemberSignature Language="C#" Value="After" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>This enumeration represents a kind of "derivative" and used only in internal processing.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Ref">
+      <MemberSignature Language="C#" Value="Ref" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "ref" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Grammar">
+      <MemberSignature Language="C#" Value="Grammar" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "grammar" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="ZeroOrMore">
+      <MemberSignature Language="C#" Value="ZeroOrMore" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "zeroOrMore" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Mixed">
+      <MemberSignature Language="C#" Value="Mixed" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "mixed" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="Optional">
+      <MemberSignature Language="C#" Value="Optional" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "optional" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="ExternalRef">
+      <MemberSignature Language="C#" Value="ExternalRef" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "externalRef" pattern.</summary>
+      </Docs>
+    </Member>
+    <Member MemberName="ParentRef">
+      <MemberSignature Language="C#" Value="ParentRef" />
+      <MemberType>Field</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters>
+      </Parameters>
+      <Docs>
+        <summary>Represents "parentRef" pattern.</summary>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngReader.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngReader.xml
@@ -1,120 +1,120 @@
-<Type Name="RelaxngReader" FullName="Commons.Xml.Relaxng.RelaxngReader">
-  <TypeSignature Language="C#" Value="public class RelaxngReader : Commons.Xml.XmlDefaultReader" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <Base>
-    <BaseTypeName>Commons.Xml.XmlDefaultReader</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngReader (System.Xml.XmlReader reader);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngReader (System.Xml.XmlReader reader, string ns);" />
-      <MemberType>Constructor</MemberType>
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="reader">To be added.</param>
-        <param name="ns">To be added.</param>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RelaxngNS">
-      <MemberSignature Language="C#" Value="public static string RelaxngNS;" />
-      <MemberType>Field</MemberType>
-      <Attributes>
-        <Attribute>
-          <AttributeName>System.Obsolete(Message=null, IsError=False)</AttributeName>
-        </Attribute>
-      </Attributes>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadPattern">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern ReadPattern ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GrammarForRelaxng">
-      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern GrammarForRelaxng { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="XmlResolver">
-      <MemberSignature Language="C#" Value="public System.Xml.XmlResolver XmlResolver { set; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlResolver</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ContextNamespace">
-      <MemberSignature Language="C#" Value="public string ContextNamespace { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="DatatypeLibrary">
-      <MemberSignature Language="C#" Value="public string DatatypeLibrary { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Type>
+<Type Name="RelaxngReader" FullName="Commons.Xml.Relaxng.RelaxngReader">
+  <TypeSignature Language="C#" Value="public class RelaxngReader : Commons.Xml.XmlDefaultReader" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <Base>
+    <BaseTypeName>Commons.Xml.XmlDefaultReader</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngReader (System.Xml.XmlReader reader);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngReader (System.Xml.XmlReader reader, string ns);" />
+      <MemberType>Constructor</MemberType>
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="ns" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="reader">To be added.</param>
+        <param name="ns">To be added.</param>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="RelaxngNS">
+      <MemberSignature Language="C#" Value="public static string RelaxngNS;" />
+      <MemberType>Field</MemberType>
+      <Attributes>
+        <Attribute>
+          <AttributeName>System.Obsolete(Message=null, IsError=False)</AttributeName>
+        </Attribute>
+      </Attributes>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ReadPattern">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern ReadPattern ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GrammarForRelaxng">
+      <MemberSignature Language="C#" Value="public static Commons.Xml.Relaxng.RelaxngPattern GrammarForRelaxng { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="XmlResolver">
+      <MemberSignature Language="C#" Value="public System.Xml.XmlResolver XmlResolver { set; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlResolver</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ContextNamespace">
+      <MemberSignature Language="C#" Value="public string ContextNamespace { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="DatatypeLibrary">
+      <MemberSignature Language="C#" Value="public string DatatypeLibrary { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngRef.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngRef.xml
@@ -1,68 +1,68 @@
-<Type Name="RelaxngRef" FullName="Commons.Xml.Relaxng.RelaxngRef">
-  <TypeSignature Language="C#" Value="public class RelaxngRef : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "ref" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngRef ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the target name to be referenced.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>The name must specifiy one of the name of the "define" element in the grammar.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Ref.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngRef" FullName="Commons.Xml.Relaxng.RelaxngRef">
+  <TypeSignature Language="C#" Value="public class RelaxngRef : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "ref" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngRef ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public string Name { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the target name to be referenced.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>The name must specifiy one of the name of the "define" element in the grammar.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Ref.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngSingleContentPattern.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngSingleContentPattern.xml
@@ -1,42 +1,42 @@
-<Type Name="RelaxngSingleContentPattern" FullName="Commons.Xml.Relaxng.RelaxngSingleContentPattern">
-  <TypeSignature Language="C#" Value="public abstract class RelaxngSingleContentPattern : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents an abstract form of patterns that have child patterns that would be simplified into exactly one pattern child at compile time.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="protected RelaxngSingleContentPattern ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The protected constructor that is intended for internal use.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Patterns">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The patterns that is contained in this element.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngSingleContentPattern" FullName="Commons.Xml.Relaxng.RelaxngSingleContentPattern">
+  <TypeSignature Language="C#" Value="public abstract class RelaxngSingleContentPattern : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents an abstract form of patterns that have child patterns that would be simplified into exactly one pattern child at compile time.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="protected RelaxngSingleContentPattern ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The protected constructor that is intended for internal use.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Patterns">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPatternList Patterns { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternList</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The patterns that is contained in this element.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternList" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngStart.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngStart.xml
@@ -1,73 +1,73 @@
-<Type Name="RelaxngStart" FullName="Commons.Xml.Relaxng.RelaxngStart">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngStart : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "start" element.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngStart ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Combine">
-      <MemberSignature Language="C#" Value="public string Combine { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the "combine" attribute value specified to this start component.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Pattern">
-      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Pattern { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the content pattern of this start component.</summary>
-        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngStart" FullName="Commons.Xml.Relaxng.RelaxngStart">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngStart : Commons.Xml.Relaxng.RelaxngElementBase, Commons.Xml.Relaxng.IGrammarContent" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "start" element.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngElementBase</BaseTypeName>
+  </Base>
+  <Interfaces>
+    <Interface>
+      <InterfaceName>Commons.Xml.Relaxng.IGrammarContent</InterfaceName>
+    </Interface>
+  </Interfaces>
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngStart ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Combine">
+      <MemberSignature Language="C#" Value="public string Combine { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the "combine" attribute value specified to this start component.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Pattern">
+      <MemberSignature Language="C#" Value="public Commons.Xml.Relaxng.RelaxngPattern Pattern { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPattern</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the content pattern of this start component.</summary>
+        <value>a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngString.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngString.xml
@@ -1,104 +1,104 @@
-<Type Name="RelaxngString" FullName="Commons.Xml.Relaxng.RelaxngString">
-  <TypeSignature Language="C#" Value="public class RelaxngString : Commons.Xml.Relaxng.RelaxngDatatype" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "string" datatype.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDatatype</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="IsValid">
-      <MemberSignature Language="C#" Value="public override bool IsValid (string text, System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="text" Type="System.String" />
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Validates the value string. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.IsValid" /> for the details of this mehod.</summary>
-        <param name="text">a <see cref="T:System.String" /></param>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="Parse">
-      <MemberSignature Language="C#" Value="public override object Parse (string text, System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="text" Type="System.String" />
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Parses the value string. See <see cref="Commons.Xml.Relaxng.RelaxngDatatype.Parse" /> for the details of this method.</summary>
-        <param name="text">a <see cref="T:System.String" /></param>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <returns>a <see cref="T:System.Object" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="Compare">
-      <MemberSignature Language="C#" Value="public override bool Compare (object o1, object o2);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o1" Type="System.Object" />
-        <Parameter Name="o2" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <summary>Compares two parameters. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.Compare" /> for the details of this method.</summary>
-        <param name="o1">a <see cref="T:System.Object" /></param>
-        <param name="o2">a <see cref="T:System.Object" /></param>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngString ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The local type name. It returns "string".</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="NamespaceURI">
-      <MemberSignature Language="C#" Value="public override string NamespaceURI { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The datatype library name. It returns String.Empty.</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngString" FullName="Commons.Xml.Relaxng.RelaxngString">
+  <TypeSignature Language="C#" Value="public class RelaxngString : Commons.Xml.Relaxng.RelaxngDatatype" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "string" datatype.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDatatype</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="IsValid">
+      <MemberSignature Language="C#" Value="public override bool IsValid (string text, System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="text" Type="System.String" />
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Validates the value string. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.IsValid" /> for the details of this mehod.</summary>
+        <param name="text">a <see cref="T:System.String" /></param>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="Parse">
+      <MemberSignature Language="C#" Value="public override object Parse (string text, System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="text" Type="System.String" />
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Parses the value string. See <see cref="Commons.Xml.Relaxng.RelaxngDatatype.Parse" /> for the details of this method.</summary>
+        <param name="text">a <see cref="T:System.String" /></param>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <returns>a <see cref="T:System.Object" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="Compare">
+      <MemberSignature Language="C#" Value="public override bool Compare (object o1, object o2);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="o1" Type="System.Object" />
+        <Parameter Name="o2" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <summary>Compares two parameters. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.Compare" /> for the details of this method.</summary>
+        <param name="o1">a <see cref="T:System.Object" /></param>
+        <param name="o2">a <see cref="T:System.Object" /></param>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngString ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public override string Name { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The local type name. It returns "string".</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="NamespaceURI">
+      <MemberSignature Language="C#" Value="public override string NamespaceURI { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The datatype library name. It returns String.Empty.</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngText.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngText.xml
@@ -1,55 +1,55 @@
-<Type Name="RelaxngText" FullName="Commons.Xml.Relaxng.RelaxngText">
-  <TypeSignature Language="C#" Value="public class RelaxngText : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "text" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngText ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Text.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngText" FullName="Commons.Xml.Relaxng.RelaxngText">
+  <TypeSignature Language="C#" Value="public class RelaxngText : Commons.Xml.Relaxng.RelaxngPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "text" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngText ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Text.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngToken.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngToken.xml
@@ -1,104 +1,104 @@
-<Type Name="RelaxngToken" FullName="Commons.Xml.Relaxng.RelaxngToken">
-  <TypeSignature Language="C#" Value="public class RelaxngToken : Commons.Xml.Relaxng.RelaxngDatatype" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "token" datatype.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDatatype</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="IsValid">
-      <MemberSignature Language="C#" Value="public override bool IsValid (string text, System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="text" Type="System.String" />
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Validates the value string. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.IsValid" /> for the details of this mehod.</summary>
-        <param name="text">a <see cref="T:System.String" /></param>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="Parse">
-      <MemberSignature Language="C#" Value="public override object Parse (string text, System.Xml.XmlReader reader);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="text" Type="System.String" />
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>Parses the value string. See <see cref="Commons.Xml.Relaxng.RelaxngDatatype.Parse" /> for the details of this method.</summary>
-        <param name="text">a <see cref="T:System.String" /></param>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <returns>a <see cref="T:System.Object" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="Compare">
-      <MemberSignature Language="C#" Value="public override bool Compare (object o1, object o2);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="o1" Type="System.Object" />
-        <Parameter Name="o2" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <summary>Compares two parameters. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.Compare" /> for the details of this method.</summary>
-        <param name="o1">a <see cref="T:System.Object" /></param>
-        <param name="o2">a <see cref="T:System.Object" /></param>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngToken ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The local type name. It returns "token".</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="NamespaceURI">
-      <MemberSignature Language="C#" Value="public override string NamespaceURI { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>The datatype library name. It returns String.Empty.</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngToken" FullName="Commons.Xml.Relaxng.RelaxngToken">
+  <TypeSignature Language="C#" Value="public class RelaxngToken : Commons.Xml.Relaxng.RelaxngDatatype" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "token" datatype.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDatatype</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="IsValid">
+      <MemberSignature Language="C#" Value="public override bool IsValid (string text, System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="text" Type="System.String" />
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Validates the value string. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.IsValid" /> for the details of this mehod.</summary>
+        <param name="text">a <see cref="T:System.String" /></param>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="Parse">
+      <MemberSignature Language="C#" Value="public override object Parse (string text, System.Xml.XmlReader reader);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="text" Type="System.String" />
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>Parses the value string. See <see cref="Commons.Xml.Relaxng.RelaxngDatatype.Parse" /> for the details of this method.</summary>
+        <param name="text">a <see cref="T:System.String" /></param>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <returns>a <see cref="T:System.Object" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="Compare">
+      <MemberSignature Language="C#" Value="public override bool Compare (object o1, object o2);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="o1" Type="System.Object" />
+        <Parameter Name="o2" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <summary>Compares two parameters. See <see cref="M:Commons.Xml.Relaxng.RelaxngDatatype.Compare" /> for the details of this method.</summary>
+        <param name="o1">a <see cref="T:System.Object" /></param>
+        <param name="o2">a <see cref="T:System.Object" /></param>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngToken ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public override string Name { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The local type name. It returns "token".</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="NamespaceURI">
+      <MemberSignature Language="C#" Value="public override string NamespaceURI { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>The datatype library name. It returns String.Empty.</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngValidatingReader.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngValidatingReader.xml
@@ -1,330 +1,330 @@
-<Type Name="RelaxngValidatingReader" FullName="Commons.Xml.Relaxng.RelaxngValidatingReader">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngValidatingReader : Commons.Xml.XmlDefaultReader" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>An implementation that validates XML document against RELAX NG pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.XmlDefaultReader</BaseTypeName>
-  </Base>
-  <Interfaces>
-  </Interfaces>
-  <Members>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public override bool Read ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Overrides the target XmlReader's <see cref="M:System.Xml.XmlReader.Read" /> and validates the reader against the target grammar. </summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>
-          <para>
-		When the XML node consumed by this method was invalid in the context of the target pattern, <see cref="T:Commons.Xml.Relaxng.RelaxngException" /> will be thrown.
-		</para>
-          <para>
-		The exception does not contain any location of the target grammar element, since RELAX NG grammar supports non-deterministic content model.
-		</para>
-        </remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>The target XmlReader that is being validated.</summary>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader, System.Xml.XmlReader grammarXml);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="grammarXml" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is being validated.</param>
-        <param name="grammarXml">To be added.</param>
-        <summary>Creates a new instance of this validating reader. This method equals to the call to new RelaxngValidatingReader (reader, grammarXml, RelaxngMergedProvider.DefaultProvider).</summary>
-        <summary>Creates a new instance of this validating reader.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader, System.Xml.XmlReader grammarXml, Commons.Xml.Relaxng.RelaxngDatatypeProvider provider);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="grammarXml" Type="System.Xml.XmlReader" />
-        <Parameter Name="provider" Type="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
-      </Parameters>
-      <Docs>
-        <summary>Creates a new instance of this validating reader.</summary>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is being validated.</param>
-        <param name="grammarXml">a <see cref="T:System.Xml.XmlReader" /> that contains the RELAX NG pattern that is being compiled and being used to validate.</param>
-        <param name="provider">a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> that is used to compile the pattern.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Relaxng.RelaxngPattern pattern);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-        <Parameter Name="pattern" Type="Commons.Xml.Relaxng.RelaxngPattern" />
-      </Parameters>
-      <Docs>
-        <summary>Creates a new instance of this validating reader.</summary>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is being validated.</param>
-        <param name="pattern">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> that is used to validate the XmlReader.</param>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetCurrentState">
-      <MemberSignature Language="C#" Value="public object GetCurrentState ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AfterOpenStartTag">
-      <MemberSignature Language="C#" Value="public object AfterOpenStartTag (object stateObject, string localName, string ns);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-        <Parameter Name="localName" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <param name="localName">To be added.</param>
-        <param name="ns">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="OpenStartTag">
-      <MemberSignature Language="C#" Value="public bool OpenStartTag (object stateObject, string localName, string ns);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-        <Parameter Name="localName" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <param name="localName">To be added.</param>
-        <param name="ns">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AfterAttribute">
-      <MemberSignature Language="C#" Value="public object AfterAttribute (object stateObject, string localName, string ns);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-        <Parameter Name="localName" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <param name="localName">To be added.</param>
-        <param name="ns">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Attribute">
-      <MemberSignature Language="C#" Value="public bool Attribute (object stateObject, string localName, string ns);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-        <Parameter Name="localName" Type="System.String" />
-        <Parameter Name="ns" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <param name="localName">To be added.</param>
-        <param name="ns">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AfterCloseStartTag">
-      <MemberSignature Language="C#" Value="public object AfterCloseStartTag (object stateObject);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="CloseStartTag">
-      <MemberSignature Language="C#" Value="public bool CloseStartTag (object stateObject);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AfterEndTag">
-      <MemberSignature Language="C#" Value="public object AfterEndTag (object stateObject);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Object</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EndTag">
-      <MemberSignature Language="C#" Value="public bool EndTag (object stateObject);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetElementLabels">
-      <MemberSignature Language="C#" Value="public System.Collections.ICollection GetElementLabels (object stateObject);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Collections.ICollection</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAttributeLabels">
-      <MemberSignature Language="C#" Value="public System.Collections.ICollection GetAttributeLabels (object stateObject);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Collections.ICollection</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Emptiable">
-      <MemberSignature Language="C#" Value="public bool Emptiable (object stateObject);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="stateObject" Type="System.Object" />
-      </Parameters>
-      <Docs>
-        <param name="stateObject">To be added.</param>
-        <summary>To be added.</summary>
-        <returns>To be added.</returns>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReportDetails">
-      <MemberSignature Language="C#" Value="public bool ReportDetails { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="RoughLabelCheck">
-      <MemberSignature Language="C#" Value="public bool RoughLabelCheck { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Docs>
-        <summary>To be added.</summary>
-        <value>To be added.</value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngValidatingReader" FullName="Commons.Xml.Relaxng.RelaxngValidatingReader">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class RelaxngValidatingReader : Commons.Xml.XmlDefaultReader" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>An implementation that validates XML document against RELAX NG pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.XmlDefaultReader</BaseTypeName>
+  </Base>
+  <Interfaces>
+  </Interfaces>
+  <Members>
+    <Member MemberName="Read">
+      <MemberSignature Language="C#" Value="public override bool Read ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Overrides the target XmlReader's <see cref="M:System.Xml.XmlReader.Read" /> and validates the reader against the target grammar. </summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>
+          <para>
+		When the XML node consumed by this method was invalid in the context of the target pattern, <see cref="T:Commons.Xml.Relaxng.RelaxngException" /> will be thrown.
+		</para>
+          <para>
+		The exception does not contain any location of the target grammar element, since RELAX NG grammar supports non-deterministic content model.
+		</para>
+        </remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>The target XmlReader that is being validated.</summary>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader, System.Xml.XmlReader grammarXml);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="grammarXml" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is being validated.</param>
+        <param name="grammarXml">To be added.</param>
+        <summary>Creates a new instance of this validating reader. This method equals to the call to new RelaxngValidatingReader (reader, grammarXml, RelaxngMergedProvider.DefaultProvider).</summary>
+        <summary>Creates a new instance of this validating reader.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader, System.Xml.XmlReader grammarXml, Commons.Xml.Relaxng.RelaxngDatatypeProvider provider);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="grammarXml" Type="System.Xml.XmlReader" />
+        <Parameter Name="provider" Type="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
+      </Parameters>
+      <Docs>
+        <summary>Creates a new instance of this validating reader.</summary>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is being validated.</param>
+        <param name="grammarXml">a <see cref="T:System.Xml.XmlReader" /> that contains the RELAX NG pattern that is being compiled and being used to validate.</param>
+        <param name="provider">a <see cref="T:Commons.Xml.Relaxng.RelaxngDatatypeProvider" /> that is used to compile the pattern.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngValidatingReader (System.Xml.XmlReader reader, Commons.Xml.Relaxng.RelaxngPattern pattern);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+        <Parameter Name="pattern" Type="Commons.Xml.Relaxng.RelaxngPattern" />
+      </Parameters>
+      <Docs>
+        <summary>Creates a new instance of this validating reader.</summary>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /> that is being validated.</param>
+        <param name="pattern">a <see cref="T:Commons.Xml.Relaxng.RelaxngPattern" /> that is used to validate the XmlReader.</param>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetCurrentState">
+      <MemberSignature Language="C#" Value="public object GetCurrentState ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AfterOpenStartTag">
+      <MemberSignature Language="C#" Value="public object AfterOpenStartTag (object stateObject, string localName, string ns);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+        <Parameter Name="localName" Type="System.String" />
+        <Parameter Name="ns" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <param name="localName">To be added.</param>
+        <param name="ns">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="OpenStartTag">
+      <MemberSignature Language="C#" Value="public bool OpenStartTag (object stateObject, string localName, string ns);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+        <Parameter Name="localName" Type="System.String" />
+        <Parameter Name="ns" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <param name="localName">To be added.</param>
+        <param name="ns">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AfterAttribute">
+      <MemberSignature Language="C#" Value="public object AfterAttribute (object stateObject, string localName, string ns);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+        <Parameter Name="localName" Type="System.String" />
+        <Parameter Name="ns" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <param name="localName">To be added.</param>
+        <param name="ns">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Attribute">
+      <MemberSignature Language="C#" Value="public bool Attribute (object stateObject, string localName, string ns);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+        <Parameter Name="localName" Type="System.String" />
+        <Parameter Name="ns" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <param name="localName">To be added.</param>
+        <param name="ns">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AfterCloseStartTag">
+      <MemberSignature Language="C#" Value="public object AfterCloseStartTag (object stateObject);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="CloseStartTag">
+      <MemberSignature Language="C#" Value="public bool CloseStartTag (object stateObject);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AfterEndTag">
+      <MemberSignature Language="C#" Value="public object AfterEndTag (object stateObject);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Object</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="EndTag">
+      <MemberSignature Language="C#" Value="public bool EndTag (object stateObject);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetElementLabels">
+      <MemberSignature Language="C#" Value="public System.Collections.ICollection GetElementLabels (object stateObject);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Collections.ICollection</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetAttributeLabels">
+      <MemberSignature Language="C#" Value="public System.Collections.ICollection GetAttributeLabels (object stateObject);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Collections.ICollection</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Emptiable">
+      <MemberSignature Language="C#" Value="public bool Emptiable (object stateObject);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="stateObject" Type="System.Object" />
+      </Parameters>
+      <Docs>
+        <param name="stateObject">To be added.</param>
+        <summary>To be added.</summary>
+        <returns>To be added.</returns>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ReportDetails">
+      <MemberSignature Language="C#" Value="public bool ReportDetails { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="RoughLabelCheck">
+      <MemberSignature Language="C#" Value="public bool RoughLabelCheck { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Docs>
+        <summary>To be added.</summary>
+        <value>To be added.</value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngValue.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngValue.xml
@@ -1,69 +1,69 @@
-<Type Name="RelaxngValue" FullName="Commons.Xml.Relaxng.RelaxngValue">
-  <TypeSignature Language="C#" Value="public class RelaxngValue : Commons.Xml.Relaxng.RelaxngDataSupport" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "value" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDataSupport</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngValue ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns Value.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public string Value { set; get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the constraining text value that indicates the instance to match the string to be valid.</summary>
-        <value>a <see cref="T:System.String" /></value>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngValue" FullName="Commons.Xml.Relaxng.RelaxngValue">
+  <TypeSignature Language="C#" Value="public class RelaxngValue : Commons.Xml.Relaxng.RelaxngDataSupport" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "value" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngDataSupport</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngValue ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns Value.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+    <Member MemberName="Value">
+      <MemberSignature Language="C#" Value="public string Value { set; get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the constraining text value that indicates the instance to match the string to be valid.</summary>
+        <value>a <see cref="T:System.String" /></value>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngZeroOrMore.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml.Relaxng/RelaxngZeroOrMore.xml
@@ -1,56 +1,56 @@
-<Type Name="RelaxngZeroOrMore" FullName="Commons.Xml.Relaxng.RelaxngZeroOrMore">
-  <TypeSignature Language="C#" Value="public class RelaxngZeroOrMore : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>Represents RELAX NG "zeroOrMore" pattern.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
-  </Base>
-  <Interfaces />
-  <Members>
-    <Member MemberName="Write">
-      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
-      </Parameters>
-      <Docs>
-        <summary>Writes the whole element to the argument XmlWriter.</summary>
-        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public RelaxngZeroOrMore ();" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters />
-      <Docs>
-        <summary>The default constructor.</summary>
-        <remarks>To be added.</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="PatternType">
-      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>Represents the type of this pattern. It returns ZeroOrMore.</summary>
-        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="RelaxngZeroOrMore" FullName="Commons.Xml.Relaxng.RelaxngZeroOrMore">
+  <TypeSignature Language="C#" Value="public class RelaxngZeroOrMore : Commons.Xml.Relaxng.RelaxngSingleContentPattern" Maintainer="auto" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>Represents RELAX NG "zeroOrMore" pattern.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>Commons.Xml.Relaxng.RelaxngSingleContentPattern</BaseTypeName>
+  </Base>
+  <Interfaces />
+  <Members>
+    <Member MemberName="Write">
+      <MemberSignature Language="C#" Value="public override void Write (System.Xml.XmlWriter writer);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="writer" Type="System.Xml.XmlWriter" />
+      </Parameters>
+      <Docs>
+        <summary>Writes the whole element to the argument XmlWriter.</summary>
+        <param name="writer">a <see cref="T:System.Xml.XmlWriter" /></param>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public RelaxngZeroOrMore ();" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters />
+      <Docs>
+        <summary>The default constructor.</summary>
+        <remarks>To be added.</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="PatternType">
+      <MemberSignature Language="C#" Value="public override Commons.Xml.Relaxng.RelaxngPatternType PatternType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>Commons.Xml.Relaxng.RelaxngPatternType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>Represents the type of this pattern. It returns ZeroOrMore.</summary>
+        <returns>a <see cref="T:Commons.Xml.Relaxng.RelaxngPatternType" /></returns>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml/XmlDefaultReader.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/Commons.Xml/XmlDefaultReader.xml
@@ -1,596 +1,596 @@
-<Type Name="XmlDefaultReader" FullName="Commons.Xml.XmlDefaultReader">
-  <TypeSignature Language="C#" Maintainer="auto" Value="public class XmlDefaultReader : System.Xml.XmlReader, System.Xml.IXmlLineInfo" />
-  <AssemblyInfo>
-    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
-    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
-    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
-  </AssemblyInfo>
-  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
-  <Docs>
-    <summary>An utility XmlReader implementation that accepts an XmlReader as its source. This class implements all the abstract methods just by calling the source XmlReader.</summary>
-    <remarks>This class works like SAX's DefaultHandler</remarks>
-  </Docs>
-  <Base>
-    <BaseTypeName>System.Xml.XmlReader</BaseTypeName>
-  </Base>
-  <Interfaces>
-    <Interface>
-      <InterfaceName>System.Xml.IXmlLineInfo</InterfaceName>
-    </Interface>
-  </Interfaces>
-  <Attributes>
-    <Attribute>
-      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
-    </Attribute>
-  </Attributes>
-  <Members>
-    <Member MemberName="GetAttribute">
-      <MemberSignature Language="C#" Value="public override string GetAttribute (string name);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="name">a <see cref="T:System.String" /></param>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAttribute">
-      <MemberSignature Language="C#" Value="public override string GetAttribute (string localName, string namespaceURI);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="localName" Type="System.String" />
-        <Parameter Name="namespaceURI" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="localName">a <see cref="T:System.String" /></param>
-        <param name="namespaceURI">a <see cref="T:System.String" /></param>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="GetAttribute">
-      <MemberSignature Language="C#" Value="public override string GetAttribute (int i);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="i">a <see cref="T:System.Int32" /></param>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasLineInfo">
-      <MemberSignature Language="C#" Value="public bool HasLineInfo ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MoveToAttribute">
-      <MemberSignature Language="C#" Value="public override bool MoveToAttribute (string name);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="name">a <see cref="T:System.String" /></param>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MoveToAttribute">
-      <MemberSignature Language="C#" Value="public override bool MoveToAttribute (string localName, string namespaceURI);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="localName" Type="System.String" />
-        <Parameter Name="namespaceURI" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="localName">a <see cref="T:System.String" /></param>
-        <param name="namespaceURI">a <see cref="T:System.String" /></param>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MoveToAttribute">
-      <MemberSignature Language="C#" Value="public override void MoveToAttribute (int i);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Void</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="i">a <see cref="T:System.Int32" /></param>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MoveToFirstAttribute">
-      <MemberSignature Language="C#" Value="public override bool MoveToFirstAttribute ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MoveToNextAttribute">
-      <MemberSignature Language="C#" Value="public override bool MoveToNextAttribute ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="MoveToElement">
-      <MemberSignature Language="C#" Value="public override bool MoveToElement ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Read">
-      <MemberSignature Language="C#" Value="public override bool Read ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadString">
-      <MemberSignature Language="C#" Value="public override string ReadString ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadInnerXml">
-      <MemberSignature Language="C#" Value="public override string ReadInnerXml ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadOuterXml">
-      <MemberSignature Language="C#" Value="public override string ReadOuterXml ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LookupNamespace">
-      <MemberSignature Language="C#" Value="public override string LookupNamespace (string prefix);" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="prefix" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="prefix">a <see cref="T:System.String" /></param>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadAttributeValue">
-      <MemberSignature Language="C#" Value="public override bool ReadAttributeValue ();" />
-      <MemberType>Method</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName=".ctor">
-      <MemberSignature Language="C#" Value="public XmlDefaultReader (System.Xml.XmlReader reader);" />
-      <MemberType>Constructor</MemberType>
-      <ReturnValue />
-      <Parameters>
-        <Parameter Name="reader" Type="System.Xml.XmlReader" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Reader">
-      <MemberSignature Language="C#" Value="public System.Xml.XmlReader Reader { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlReader</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <value>a <see cref="T:System.Xml.XmlReader" /></value>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LineNumber">
-      <MemberSignature Language="C#" Value="public int LineNumber { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <value>a <see cref="T:System.Int32" /></value>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LinePosition">
-      <MemberSignature Language="C#" Value="public int LinePosition { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <value>a <see cref="T:System.Int32" /></value>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NodeType">
-      <MemberSignature Language="C#" Value="public override System.Xml.XmlNodeType NodeType { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlNodeType</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Xml.XmlNodeType" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Name">
-      <MemberSignature Language="C#" Value="public override string Name { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="LocalName">
-      <MemberSignature Language="C#" Value="public override string LocalName { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NamespaceURI">
-      <MemberSignature Language="C#" Value="public override string NamespaceURI { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Prefix">
-      <MemberSignature Language="C#" Value="public override string Prefix { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="HasValue">
-      <MemberSignature Language="C#" Value="public override bool HasValue { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Depth">
-      <MemberSignature Language="C#" Value="public override int Depth { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Int32" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Value">
-      <MemberSignature Language="C#" Value="public override string Value { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="BaseURI">
-      <MemberSignature Language="C#" Value="public override string BaseURI { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsEmptyElement">
-      <MemberSignature Language="C#" Value="public override bool IsEmptyElement { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="IsDefault">
-      <MemberSignature Language="C#" Value="public override bool IsDefault { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="QuoteChar">
-      <MemberSignature Language="C#" Value="public override char QuoteChar { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Char</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Char" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="XmlLang">
-      <MemberSignature Language="C#" Value="public override string XmlLang { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="XmlSpace">
-      <MemberSignature Language="C#" Value="public override System.Xml.XmlSpace XmlSpace { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlSpace</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Xml.XmlSpace" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="AttributeCount">
-      <MemberSignature Language="C#" Value="public override int AttributeCount { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Int32</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Int32" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="EOF">
-      <MemberSignature Language="C#" Value="public override bool EOF { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Boolean</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Boolean" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="ReadState">
-      <MemberSignature Language="C#" Value="public override System.Xml.ReadState ReadState { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.ReadState</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Xml.ReadState" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="NameTable">
-      <MemberSignature Language="C#" Value="public override System.Xml.XmlNameTable NameTable { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.Xml.XmlNameTable</ReturnType>
-      </ReturnValue>
-      <Parameters />
-      <Docs>
-        <summary>To be added</summary>
-        <returns>a <see cref="T:System.Xml.XmlNameTable" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public override string Item { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="i" Type="System.Int32" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="i">a <see cref="T:System.Int32" /></param>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public override string Item { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="name" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="name">a <see cref="T:System.String" /></param>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-    <Member MemberName="Item">
-      <MemberSignature Language="C#" Value="public override string Item { get; };" />
-      <MemberType>Property</MemberType>
-      <ReturnValue>
-        <ReturnType>System.String</ReturnType>
-      </ReturnValue>
-      <Parameters>
-        <Parameter Name="localName" Type="System.String" />
-        <Parameter Name="namespaceURI" Type="System.String" />
-      </Parameters>
-      <Docs>
-        <summary>To be added</summary>
-        <param name="localName">a <see cref="T:System.String" /></param>
-        <param name="namespaceURI">a <see cref="T:System.String" /></param>
-        <returns>a <see cref="T:System.String" /></returns>
-        <remarks>To be added</remarks>
-      </Docs>
-    </Member>
-  </Members>
-</Type>
+<Type Name="XmlDefaultReader" FullName="Commons.Xml.XmlDefaultReader">
+  <TypeSignature Language="C#" Maintainer="auto" Value="public class XmlDefaultReader : System.Xml.XmlReader, System.Xml.IXmlLineInfo" />
+  <AssemblyInfo>
+    <AssemblyName>Commons.Xml.Relaxng</AssemblyName>
+    <AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 79 15 99 77 D2 D0 3A 8E 6B EA 7A 2E 74 E8 D1 AF CC 93 E8 85 19 74 95 2B B4 80 A1 2C 91 34 47 4D 04 06 24 47 C3 7E 0E 68 C0 80 53 6F CF 3C 3F BE 2F F9 C9 79 CE 99 84 75 E5 06 E8 CE 82 DD 5B 0F 35 0D C1 0E 93 BF 2E EE CF 87 4B 24 77 0C 50 81 DB EA 74 47 FD DA FA 27 7B 22 DE 47 D6 FF EA 44 96 74 A4 F9 FC CF 84 D1 50 69 08 93 80 28 4D BD D3 5F 46 CD FF 12 A1 BD 78 E4 EF 00 65 D0 16 DF]</AssemblyPublicKey>
+    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
+  </AssemblyInfo>
+  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
+  <Docs>
+    <summary>An utility XmlReader implementation that accepts an XmlReader as its source. This class implements all the abstract methods just by calling the source XmlReader.</summary>
+    <remarks>This class works like SAX's DefaultHandler</remarks>
+  </Docs>
+  <Base>
+    <BaseTypeName>System.Xml.XmlReader</BaseTypeName>
+  </Base>
+  <Interfaces>
+    <Interface>
+      <InterfaceName>System.Xml.IXmlLineInfo</InterfaceName>
+    </Interface>
+  </Interfaces>
+  <Attributes>
+    <Attribute>
+      <AttributeName>System.Reflection.DefaultMember(MemberName="Item")</AttributeName>
+    </Attribute>
+  </Attributes>
+  <Members>
+    <Member MemberName="GetAttribute">
+      <MemberSignature Language="C#" Value="public override string GetAttribute (string name);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="name">a <see cref="T:System.String" /></param>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetAttribute">
+      <MemberSignature Language="C#" Value="public override string GetAttribute (string localName, string namespaceURI);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="localName" Type="System.String" />
+        <Parameter Name="namespaceURI" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="localName">a <see cref="T:System.String" /></param>
+        <param name="namespaceURI">a <see cref="T:System.String" /></param>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="GetAttribute">
+      <MemberSignature Language="C#" Value="public override string GetAttribute (int i);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="i">a <see cref="T:System.Int32" /></param>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="HasLineInfo">
+      <MemberSignature Language="C#" Value="public bool HasLineInfo ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MoveToAttribute">
+      <MemberSignature Language="C#" Value="public override bool MoveToAttribute (string name);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="name">a <see cref="T:System.String" /></param>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MoveToAttribute">
+      <MemberSignature Language="C#" Value="public override bool MoveToAttribute (string localName, string namespaceURI);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="localName" Type="System.String" />
+        <Parameter Name="namespaceURI" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="localName">a <see cref="T:System.String" /></param>
+        <param name="namespaceURI">a <see cref="T:System.String" /></param>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MoveToAttribute">
+      <MemberSignature Language="C#" Value="public override void MoveToAttribute (int i);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Void</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="i">a <see cref="T:System.Int32" /></param>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MoveToFirstAttribute">
+      <MemberSignature Language="C#" Value="public override bool MoveToFirstAttribute ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MoveToNextAttribute">
+      <MemberSignature Language="C#" Value="public override bool MoveToNextAttribute ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="MoveToElement">
+      <MemberSignature Language="C#" Value="public override bool MoveToElement ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Read">
+      <MemberSignature Language="C#" Value="public override bool Read ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ReadString">
+      <MemberSignature Language="C#" Value="public override string ReadString ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ReadInnerXml">
+      <MemberSignature Language="C#" Value="public override string ReadInnerXml ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ReadOuterXml">
+      <MemberSignature Language="C#" Value="public override string ReadOuterXml ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LookupNamespace">
+      <MemberSignature Language="C#" Value="public override string LookupNamespace (string prefix);" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="prefix" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="prefix">a <see cref="T:System.String" /></param>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ReadAttributeValue">
+      <MemberSignature Language="C#" Value="public override bool ReadAttributeValue ();" />
+      <MemberType>Method</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName=".ctor">
+      <MemberSignature Language="C#" Value="public XmlDefaultReader (System.Xml.XmlReader reader);" />
+      <MemberType>Constructor</MemberType>
+      <ReturnValue />
+      <Parameters>
+        <Parameter Name="reader" Type="System.Xml.XmlReader" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="reader">a <see cref="T:System.Xml.XmlReader" /></param>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Reader">
+      <MemberSignature Language="C#" Value="public System.Xml.XmlReader Reader { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlReader</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <value>a <see cref="T:System.Xml.XmlReader" /></value>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LineNumber">
+      <MemberSignature Language="C#" Value="public int LineNumber { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <value>a <see cref="T:System.Int32" /></value>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LinePosition">
+      <MemberSignature Language="C#" Value="public int LinePosition { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <value>a <see cref="T:System.Int32" /></value>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NodeType">
+      <MemberSignature Language="C#" Value="public override System.Xml.XmlNodeType NodeType { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlNodeType</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Xml.XmlNodeType" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Name">
+      <MemberSignature Language="C#" Value="public override string Name { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="LocalName">
+      <MemberSignature Language="C#" Value="public override string LocalName { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NamespaceURI">
+      <MemberSignature Language="C#" Value="public override string NamespaceURI { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Prefix">
+      <MemberSignature Language="C#" Value="public override string Prefix { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="HasValue">
+      <MemberSignature Language="C#" Value="public override bool HasValue { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Depth">
+      <MemberSignature Language="C#" Value="public override int Depth { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Int32" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Value">
+      <MemberSignature Language="C#" Value="public override string Value { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="BaseURI">
+      <MemberSignature Language="C#" Value="public override string BaseURI { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="IsEmptyElement">
+      <MemberSignature Language="C#" Value="public override bool IsEmptyElement { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="IsDefault">
+      <MemberSignature Language="C#" Value="public override bool IsDefault { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="QuoteChar">
+      <MemberSignature Language="C#" Value="public override char QuoteChar { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Char</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Char" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="XmlLang">
+      <MemberSignature Language="C#" Value="public override string XmlLang { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="XmlSpace">
+      <MemberSignature Language="C#" Value="public override System.Xml.XmlSpace XmlSpace { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlSpace</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Xml.XmlSpace" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="AttributeCount">
+      <MemberSignature Language="C#" Value="public override int AttributeCount { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Int32</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Int32" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="EOF">
+      <MemberSignature Language="C#" Value="public override bool EOF { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Boolean</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Boolean" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="ReadState">
+      <MemberSignature Language="C#" Value="public override System.Xml.ReadState ReadState { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.ReadState</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Xml.ReadState" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="NameTable">
+      <MemberSignature Language="C#" Value="public override System.Xml.XmlNameTable NameTable { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.Xml.XmlNameTable</ReturnType>
+      </ReturnValue>
+      <Parameters />
+      <Docs>
+        <summary>To be added</summary>
+        <returns>a <see cref="T:System.Xml.XmlNameTable" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public override string Item { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="i" Type="System.Int32" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="i">a <see cref="T:System.Int32" /></param>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public override string Item { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="name" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="name">a <see cref="T:System.String" /></param>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+    <Member MemberName="Item">
+      <MemberSignature Language="C#" Value="public override string Item { get; };" />
+      <MemberType>Property</MemberType>
+      <ReturnValue>
+        <ReturnType>System.String</ReturnType>
+      </ReturnValue>
+      <Parameters>
+        <Parameter Name="localName" Type="System.String" />
+        <Parameter Name="namespaceURI" Type="System.String" />
+      </Parameters>
+      <Docs>
+        <summary>To be added</summary>
+        <param name="localName">a <see cref="T:System.String" /></param>
+        <param name="namespaceURI">a <see cref="T:System.String" /></param>
+        <returns>a <see cref="T:System.String" /></returns>
+        <remarks>To be added</remarks>
+      </Docs>
+    </Member>
+  </Members>
+</Type>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/ns-Commons.Xml.Nvdl.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/ns-Commons.Xml.Nvdl.xml
@@ -1,6 +1,6 @@
-<Namespace Name="Commons.Xml.Nvdl">
-  <Docs>
-    <summary>To be added.</summary>
-    <remarks>To be added.</remarks>
-  </Docs>
-</Namespace>
+<Namespace Name="Commons.Xml.Nvdl">
+  <Docs>
+    <summary>To be added.</summary>
+    <remarks>To be added.</remarks>
+  </Docs>
+</Namespace>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Documentation/en/ns-Commons.Xml.Relaxng.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Documentation/en/ns-Commons.Xml.Relaxng.xml
@@ -1,676 +1,676 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="Commons.Xml.Relaxng">
-    <class name="RelaxngDatatype" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngDatatype()" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
-        <method name="Compare(System.Object, System.Object)" argnames="o1, o2" returntype="System.Boolean" />
-        <method name="CompareString(System.String, System.String, System.Xml.XmlReader)" argnames="s1, s2, reader" returntype="System.Boolean" />
-        <method name="IsValid(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Boolean" />
-    </class>
-    <class name="RelaxngDatatypeProvider" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngDatatypeProvider()" argnames="" />
-        <method name="GetDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList)" argnames="name, ns, parameters" returntype="Commons.Xml.Relaxng.RelaxngDatatype" />
-    </class>
-    <class name="RelaxngString" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngString()" argnames="" />
-        <property name="Instance" propertytype="Commons.Xml.Relaxng.RelaxngString" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <method name="IsValid(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Boolean" />
-        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
-        <method name="Compare(System.Object, System.Object)" argnames="o1, o2" returntype="System.Boolean" />
-    </class>
-    <class name="RelaxngToken" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngToken()" argnames="" />
-        <property name="Instance" propertytype="Commons.Xml.Relaxng.RelaxngToken" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <method name="IsValid(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Boolean" />
-        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
-        <method name="Compare(System.Object, System.Object)" argnames="o1, o2" returntype="System.Boolean" />
-    </class>
-    <class name="RelaxngException" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngException()" argnames="" />
-        <constructor name="RelaxngException(System.String)" argnames="message" />
-        <constructor name="RelaxngException(System.String, System.Exception)" argnames="message, innerException" />
-    </class>
-    <class name="RelaxngElementBase" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngElementBase()" argnames="" />
-        <property name="IsCompiled" propertytype="System.Boolean" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <property name="BaseUri" propertytype="System.String" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="write" returntype="System.Void" />
-    </class>
-    <class name="RelaxngPattern" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngPattern()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="DataProvider" propertytype="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
-        <property name="StartPattern" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="Read(System.Xml.XmlReader)" argnames="xmlReader" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <method name="Read(System.Xml.XmlReader, Commons.Xml.Relaxng.RelaxngDatatypeProvider)" argnames="xmlReader, provider" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <method name="Compile()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="RelaxngGrammar" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngGrammar()" argnames="" />
-        <field name="NamespaceURI" />
-        <property name="ParentGrammar" propertytype="Commons.Xml.Relaxng.RelaxngGrammar" />
-        <property name="Provider" propertytype="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="Starts" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Defines" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Includes" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Divs" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="IncludedUris" propertytype="System.Collections.Hashtable" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngMergedProvider" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngMergedProvider()" argnames="" />
-        <property name="DefaultProvider" propertytype="Commons.Xml.Relaxng.RelaxngMergedProvider" />
-        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
-        <method name="GetDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList)" argnames="name, ns, parameters" returntype="Commons.Xml.Relaxng.RelaxngDatatype" />
-    </class>
-    <class name="RelaxngNameClassList" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngNameClassList()" argnames="" />
-        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngNameClass" />
-        <method name="Add(Commons.Xml.Relaxng.RelaxngNameClass)" argnames="p" returntype="System.Void" />
-        <method name="Insert(System.Int32, Commons.Xml.Relaxng.RelaxngNameClass)" argnames="pos, p" returntype="System.Void" />
-        <method name="Remove(Commons.Xml.Relaxng.RelaxngNameClass)" argnames="p" returntype="System.Void" />
-    </class>
-    <class name="RelaxngNameClass" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngNameClass()" argnames="" />
-    </class>
-    <class name="RelaxngAnyName" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngAnyName()" argnames="" />
-        <property name="Except" propertytype="Commons.Xml.Relaxng.RelaxngExceptNameClass" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngNsName" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngNsName()" argnames="" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Except" propertytype="Commons.Xml.Relaxng.RelaxngExceptNameClass" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngName" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngName()" argnames="" />
-        <constructor name="RelaxngName(System.String, System.String)" argnames="ncname, ns" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngNameChoice" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngNameChoice()" argnames="" />
-        <property name="Children" propertytype="Commons.Xml.Relaxng.RelaxngNameClassList" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngExceptNameClass" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngExceptNameClass()" argnames="" />
-        <property name="Names" propertytype="Commons.Xml.Relaxng.RelaxngNameClassList" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngSingleContentPattern" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngSingleContentPattern()" argnames="" />
-        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
-    </class>
-    <class name="RelaxngBinaryContentPattern" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngBinaryContentPattern()" argnames="" />
-        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
-    </class>
-    <class name="RelaxngStart" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngStart()" argnames="" />
-        <property name="Combine" propertytype="System.String" />
-        <property name="Pattern" propertytype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngDefine" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngDefine()" argnames="" />
-        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
-        <property name="Combine" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngInclude" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngInclude()" argnames="" />
-        <property name="Href" propertytype="System.String" />
-        <property name="Starts" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Defines" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Divs" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="NSContext" propertytype="System.String" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngDiv" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngDiv()" argnames="" />
-        <property name="Starts" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Defines" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Includes" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <property name="Divs" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngPatternList" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngPatternList()" argnames="" />
-        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <method name="Add(Commons.Xml.Relaxng.RelaxngPattern)" argnames="p" returntype="System.Void" />
-        <method name="Insert(System.Int32, Commons.Xml.Relaxng.RelaxngPattern)" argnames="pos, p" returntype="System.Void" />
-        <method name="Remove(Commons.Xml.Relaxng.RelaxngPattern)" argnames="p" returntype="System.Void" />
-    </class>
-    <class name="RelaxngGrammarContentList" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngGrammarContentList()" argnames="" />
-        <property name="Item" propertytype="Commons.Xml.Relaxng.IGrammarContent" />
-        <method name="Add(Commons.Xml.Relaxng.IGrammarContent)" argnames="p" returntype="System.Void" />
-        <method name="Insert(System.Int32, Commons.Xml.Relaxng.IGrammarContent)" argnames="pos, p" returntype="System.Void" />
-        <method name="Remove(Commons.Xml.Relaxng.IGrammarContent)" argnames="p" returntype="System.Void" />
-    </class>
-    <class name="RelaxngNotAllowed" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngNotAllowed()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngEmpty" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngEmpty()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngText" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngText()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngDataSupport" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngDataSupport()" argnames="" />
-        <property name="Type" propertytype="System.String" />
-        <property name="DatatypeLibrary" propertytype="System.String" />
-    </class>
-    <class name="RelaxngData" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngData()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ParamList" propertytype="Commons.Xml.Relaxng.RelaxngParamList" />
-        <property name="Except" propertytype="Commons.Xml.Relaxng.RelaxngExcept" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngValue" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngValue()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="Value" propertytype="System.String" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngList" namespace="Commons.Xml.Relaxng">
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngElement" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngElement()" argnames="" />
-        <property name="NameClass" propertytype="Commons.Xml.Relaxng.RelaxngNameClass" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngAttribute" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngAttribute()" argnames="" />
-        <property name="Pattern" propertytype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <property name="NameClass" propertytype="Commons.Xml.Relaxng.RelaxngNameClass" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngRef" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngRef()" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngParentRef" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngParentRef()" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngExternalRef" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngExternalRef()" argnames="" />
-        <property name="Href" propertytype="System.String" />
-        <property name="NSContext" propertytype="System.String" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngOneOrMore" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngOneOrMore()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngZeroOrMore" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngZeroOrMore()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngOptional" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngOptional()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngMixed" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngMixed()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngChoice" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngChoice()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngGroup" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngGroup()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngInterleave" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngInterleave()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngParam" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngParam()" argnames="" />
-        <constructor name="RelaxngParam(System.String, System.String)" argnames="name, value" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngParamList" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngParamList()" argnames="" />
-        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngParam" />
-        <method name="Add(Commons.Xml.Relaxng.RelaxngParam)" argnames="p" returntype="System.Void" />
-        <method name="Insert(System.Int32, Commons.Xml.Relaxng.RelaxngParam)" argnames="pos, p" returntype="System.Void" />
-        <method name="Remove(Commons.Xml.Relaxng.RelaxngParam)" argnames="p" returntype="System.Void" />
-    </class>
-    <class name="RelaxngExcept" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngExcept()" argnames="" />
-        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-    </class>
-    <class name="RelaxngValidatingReader" namespace="Commons.Xml.Relaxng">
-        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader)" argnames="reader" />
-        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader, System.Xml.XmlReader)" argnames="reader, grammarXml" />
-        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader, System.Xml.XmlReader, Commons.Xml.Relaxng.RelaxngDatatypeProvider)" argnames="reader, grammarXml, provider" />
-        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader, Commons.Xml.Relaxng.RelaxngPattern)" argnames="reader, pattern" />
-        <property name="CurrentStateXml" propertytype="System.String" />
-        <property name="PreviousStateXml" propertytype="System.String" />
-        <method name="Read()" argnames="" returntype="System.Boolean" />
-    </class>
-    <interface name="IGrammarContent" namespace="Commons.Xml.Relaxng" />
-    <enum name="RelaxngPatternType" namespace="Commons.Xml.Relaxng">
-        <field name="Empty" />
-        <field name="NotAllowed" />
-        <field name="Text" />
-        <field name="Choice" />
-        <field name="Interleave" />
-        <field name="Group" />
-        <field name="OneOrMore" />
-        <field name="List" />
-        <field name="Data" />
-        <field name="DataExcept" />
-        <field name="Value" />
-        <field name="Attribute" />
-        <field name="Element" />
-        <field name="After" />
-        <field name="Ref" />
-        <field name="Grammar" />
-        <field name="ZeroOrMore" />
-        <field name="Mixed" />
-        <field name="Optional" />
-        <field name="ExternalRef" />
-        <field name="ParentRef" />
-    </enum>
-    <interface name="yyDebug" namespace="Commons.Xml.Relaxng.Rnc.yydebug">
-        <method name="push(System.Int32, System.Object)" argnames="state, value" returntype="System.Void" />
-        <method name="lex(System.Int32, System.Int32, System.String, System.Object)" argnames="state, token, name, value" returntype="System.Void" />
-        <method name="shift(System.Int32, System.Int32, System.Int32)" argnames="from, to, errorFlag" returntype="System.Void" />
-        <method name="pop(System.Int32)" argnames="state" returntype="System.Void" />
-        <method name="discard(System.Int32, System.Int32, System.String, System.Object)" argnames="state, token, name, value" returntype="System.Void" />
-        <method name="reduce(System.Int32, System.Int32, System.Int32, System.String, System.Int32)" argnames="from, to, rule, text, len" returntype="System.Void" />
-        <method name="shift(System.Int32, System.Int32)" argnames="from, to" returntype="System.Void" />
-        <method name="accept(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="error(System.String)" argnames="message" returntype="System.Void" />
-        <method name="reject()" argnames="" returntype="System.Void" />
-    </interface>
-    <class name="yyException" namespace="Commons.Xml.Relaxng.Rnc.yyParser">
-        <constructor name="yyException(System.String)" argnames="message" />
-    </class>
-    <interface name="yyInput" namespace="Commons.Xml.Relaxng.Rnc.yyParser">
-        <method name="advance()" argnames="" returntype="System.Boolean" />
-        <method name="token()" argnames="" returntype="System.Int32" />
-        <method name="value()" argnames="" returntype="System.Object" />
-    </interface>
-    <class name="XmlDefaultReader" namespace="Commons.Xml">
-        <constructor name="XmlDefaultReader(System.Xml.XmlReader)" argnames="reader" />
-        <property name="Reader" propertytype="System.Xml.XmlReader" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="HasValue" propertytype="System.Boolean" />
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="Value" propertytype="System.String" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="IsEmptyElement" propertytype="System.Boolean" />
-        <property name="IsDefault" propertytype="System.Boolean" />
-        <property name="QuoteChar" propertytype="System.Char" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="AttributeCount" propertytype="System.Int32" />
-        <property name="EOF" propertytype="System.Boolean" />
-        <property name="ReadState" propertytype="System.Xml.ReadState" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
-        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
-        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="HasLineInfo()" argnames="" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
-        <method name="MoveToFirstAttribute()" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNextAttribute()" argnames="" returntype="System.Boolean" />
-        <method name="MoveToElement()" argnames="" returntype="System.Boolean" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Read()" argnames="" returntype="System.Boolean" />
-        <method name="ReadString()" argnames="" returntype="System.String" />
-        <method name="ReadInnerXml()" argnames="" returntype="System.String" />
-        <method name="ReadOuterXml()" argnames="" returntype="System.String" />
-        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
-        <method name="ResolveEntity()" argnames="" returntype="System.Void" />
-        <method name="ReadAttributeValue()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="RdpPattern" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpPattern()" argnames="" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <method name="MakeChoice(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpChoice" />
-        <method name="MakeGroup(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="MakeInterleave(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpInterleave" />
-        <method name="MakeAfter(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpAfter" />
-        <method name="MakeOneOrMore(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpOneOrMore" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="ListDeriv(System.String[], System.Int32, System.Xml.XmlReader)" argnames="list, index, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="Choice(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="Group(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="Interleave(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="After(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="h" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="ValueMatch(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="System.Boolean" />
-        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="OneOrMore()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="EndTagDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpNameClass" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpNameClass()" argnames="" />
-        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
-        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-    </class>
-    <class name="RdpAnyName" namespace="Commons.Xml.Relaxng.Derivative">
-        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpAnyName" />
-        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
-        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-    </class>
-    <class name="RdpAnyNameExcept" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpAnyNameExcept(Commons.Xml.Relaxng.Derivative.RdpNameClass)" argnames="except" />
-        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
-        <property name="ExceptNameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
-        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-    </class>
-    <class name="RdpNsName" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpNsName(System.String)" argnames="ns" />
-        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-    </class>
-    <class name="RdpNsNameExcept" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpNsNameExcept(System.String, Commons.Xml.Relaxng.Derivative.RdpNameClass)" argnames="ns, except" />
-        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
-        <property name="ExceptNameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
-        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-    </class>
-    <class name="RdpName" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpName(System.String, System.String)" argnames="local, ns" />
-        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-    </class>
-    <class name="RdpNameClassChoice" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpNameClassChoice(Commons.Xml.Relaxng.Derivative.RdpNameClass, Commons.Xml.Relaxng.Derivative.RdpNameClass)" argnames="l, r" />
-        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
-        <property name="LValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
-        <property name="RValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
-        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-    </class>
-    <class name="RdpParamList" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpParamList()" argnames="" />
-    </class>
-    <class name="RdpParam" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpParam(System.String, System.String)" argnames="localName, value" />
-        <property name="Value" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-    </class>
-    <class name="RdpDatatype" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList, Commons.Xml.Relaxng.RelaxngDatatypeProvider)" argnames="ns, localName, parameters, provider" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <method name="IsAllowed(System.String, System.Xml.XmlReader)" argnames="value, reader" returntype="System.Boolean" />
-        <method name="IsTypeEqual(System.String, System.String, System.Xml.XmlReader)" argnames="s1, s2, reader" returntype="System.Boolean" />
-    </class>
-    <class name="RdpEmpty" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpEmpty()" argnames="" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpEmpty" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-    </class>
-    <class name="RdpNotAllowed" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpNotAllowed()" argnames="" />
-        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpNotAllowed" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="h" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpText" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpText()" argnames="" />
-        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpText" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpAbstractBinary" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpAbstractBinary(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
-        <property name="LValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <property name="RValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-    </class>
-    <class name="RdpChoice" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpChoice(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="handler" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="EndTagDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpInterleave" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpInterleave(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpGroup" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpGroup(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpAbstractSingleContent" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpAbstractSingleContent(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" />
-        <property name="Child" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpOneOrMore" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpOneOrMore(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpList" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpList(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpData" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpData(Commons.Xml.Relaxng.Derivative.RdpDatatype)" argnames="dt" />
-        <property name="Datatype" propertytype="Commons.Xml.Relaxng.Derivative.RdpDatatype" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpDataExcept" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpDataExcept(Commons.Xml.Relaxng.Derivative.RdpDatatype, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="dt, except" />
-        <property name="Except" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpValue" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpValue(Commons.Xml.Relaxng.Derivative.RdpDatatype, System.String)" argnames="dt, value" />
-        <property name="Datatype" propertytype="Commons.Xml.Relaxng.Derivative.RdpDatatype" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpAttribute" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpAttribute(Commons.Xml.Relaxng.Derivative.RdpNameClass, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="nameClass, p" />
-        <property name="NameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
-        <property name="Children" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpElement" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpElement(Commons.Xml.Relaxng.Derivative.RdpNameClass, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="nameClass, p" />
-        <property name="NameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
-        <property name="Children" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
-        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpAfter" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpAfter(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
-        <property name="Nullable" propertytype="System.Boolean" />
-        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
-        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="handler" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="EndTagDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </class>
-    <class name="RdpUtil" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpUtil()" argnames="" />
-        <field name="WhitespaceChars" />
-    </class>
-    <delegate name="RdpApplyAfterHandler" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpApplyAfterHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="Invoke(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="BeginInvoke(Commons.Xml.Relaxng.Derivative.RdpPattern, System.AsyncCallback, System.Object)" argnames="p, callback, object" returntype="System.IAsyncResult" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </delegate>
-    <delegate name="RdpBinaryFunction" namespace="Commons.Xml.Relaxng.Derivative">
-        <constructor name="RdpBinaryFunction(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="Invoke(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-        <method name="BeginInvoke(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern, System.AsyncCallback, System.Object)" argnames="p1, p2, callback, object" returntype="System.IAsyncResult" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
-    </delegate>
-    <enum name="RdpContentType" namespace="Commons.Xml.Relaxng.Derivative">
-        <field name="Invalid" />
-        <field name="Empty" />
-        <field name="Complex" />
-        <field name="Simple" />
-    </enum>
-    <enum name="RdpNameClassType" namespace="Commons.Xml.Relaxng.Derivative">
-        <field name="None" />
-        <field name="AnyName" />
-        <field name="AnyNameExcept" />
-        <field name="NsName" />
-        <field name="NsNameExcept" />
-        <field name="Name" />
-        <field name="NameClassChoice" />
-    </enum>
-    <class name="XsdDatatypeProvider" namespace="Commons.Xml.Relaxng.XmlSchema">
-        <property name="Instance" propertytype="Commons.Xml.Relaxng.XmlSchema.XsdDatatypeProvider" />
-        <method name="GetDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList)" argnames="name, ns, parameters" returntype="Commons.Xml.Relaxng.RelaxngDatatype" />
-    </class>
-    <class name="XsdPrimitiveType" namespace="Commons.Xml.Relaxng.XmlSchema">
-        <constructor name="XsdPrimitiveType(System.String, System.Xml.Schema.XmlSchemaDatatype)" argnames="name, xstype" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
-    </class>
-    <class name="XsdQNameWrapper" namespace="Commons.Xml.Relaxng.XmlSchema">
-        <constructor name="XsdQNameWrapper()" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="System.Object" />
-    </class>
-    <class name="RncParser" namespace="Commons.Xml.Relaxng.Rnc">
-        <constructor name="RncParser(System.Xml.XmlNameTable)" argnames="nameTable" />
-        <field name="ErrorOutput" />
-        <field name="debug" />
-        <field name="yyFinal" />
-        <field name="yyRule" />
-        <field name="yyNames" />
-        <field name="yyMax" />
-        <field name="yyDgoto" />
-        <field name="yySindex" />
-        <field name="yyRindex" />
-        <field name="yyGindex" />
-        <field name="yyTable" />
-        <field name="yyCheck" />
-        <property name="Line" propertytype="System.Int32" />
-        <property name="Column" propertytype="System.Int32" />
-        <property name="DefaultNamespace" propertytype="System.String" />
-        <method name="ParseRnc(System.IO.TextReader)" argnames="reader" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <method name="ParseRnc(System.IO.TextReader, System.Xml.XmlNameTable)" argnames="reader, nameTable" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <method name="Parse(System.IO.TextReader)" argnames="source" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
-        <method name="yyerror(System.String)" argnames="message" returntype="System.Void" />
-        <method name="yyerror(System.String, System.String[])" argnames="message, expected" returntype="System.Void" />
-        <method name="yyname(System.Int32)" argnames="token" returntype="System.String" />
-        <method name="yyExpecting(System.Int32)" argnames="state" returntype="System.String[]" />
-        <method name="yyparse(Commons.Xml.Relaxng.Rnc.yyParser.yyInput, System.Object)" argnames="yyLex, yyd" returntype="System.Object" />
-        <method name="yyDefault(System.Object)" argnames="first" returntype="System.Object" />
-        <method name="yyparse(Commons.Xml.Relaxng.Rnc.yyParser.yyInput)" argnames="yyLex" returntype="System.Object" />
-    </class>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="Commons.Xml.Relaxng">
+    <class name="RelaxngDatatype" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngDatatype()" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
+        <method name="Compare(System.Object, System.Object)" argnames="o1, o2" returntype="System.Boolean" />
+        <method name="CompareString(System.String, System.String, System.Xml.XmlReader)" argnames="s1, s2, reader" returntype="System.Boolean" />
+        <method name="IsValid(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Boolean" />
+    </class>
+    <class name="RelaxngDatatypeProvider" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngDatatypeProvider()" argnames="" />
+        <method name="GetDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList)" argnames="name, ns, parameters" returntype="Commons.Xml.Relaxng.RelaxngDatatype" />
+    </class>
+    <class name="RelaxngString" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngString()" argnames="" />
+        <property name="Instance" propertytype="Commons.Xml.Relaxng.RelaxngString" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <method name="IsValid(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Boolean" />
+        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
+        <method name="Compare(System.Object, System.Object)" argnames="o1, o2" returntype="System.Boolean" />
+    </class>
+    <class name="RelaxngToken" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngToken()" argnames="" />
+        <property name="Instance" propertytype="Commons.Xml.Relaxng.RelaxngToken" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <method name="IsValid(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Boolean" />
+        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
+        <method name="Compare(System.Object, System.Object)" argnames="o1, o2" returntype="System.Boolean" />
+    </class>
+    <class name="RelaxngException" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngException()" argnames="" />
+        <constructor name="RelaxngException(System.String)" argnames="message" />
+        <constructor name="RelaxngException(System.String, System.Exception)" argnames="message, innerException" />
+    </class>
+    <class name="RelaxngElementBase" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngElementBase()" argnames="" />
+        <property name="IsCompiled" propertytype="System.Boolean" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <property name="BaseUri" propertytype="System.String" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="write" returntype="System.Void" />
+    </class>
+    <class name="RelaxngPattern" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngPattern()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="DataProvider" propertytype="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
+        <property name="StartPattern" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="Read(System.Xml.XmlReader)" argnames="xmlReader" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <method name="Read(System.Xml.XmlReader, Commons.Xml.Relaxng.RelaxngDatatypeProvider)" argnames="xmlReader, provider" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <method name="Compile()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="RelaxngGrammar" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngGrammar()" argnames="" />
+        <field name="NamespaceURI" />
+        <property name="ParentGrammar" propertytype="Commons.Xml.Relaxng.RelaxngGrammar" />
+        <property name="Provider" propertytype="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="Starts" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Defines" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Includes" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Divs" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="IncludedUris" propertytype="System.Collections.Hashtable" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngMergedProvider" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngMergedProvider()" argnames="" />
+        <property name="DefaultProvider" propertytype="Commons.Xml.Relaxng.RelaxngMergedProvider" />
+        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngDatatypeProvider" />
+        <method name="GetDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList)" argnames="name, ns, parameters" returntype="Commons.Xml.Relaxng.RelaxngDatatype" />
+    </class>
+    <class name="RelaxngNameClassList" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngNameClassList()" argnames="" />
+        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngNameClass" />
+        <method name="Add(Commons.Xml.Relaxng.RelaxngNameClass)" argnames="p" returntype="System.Void" />
+        <method name="Insert(System.Int32, Commons.Xml.Relaxng.RelaxngNameClass)" argnames="pos, p" returntype="System.Void" />
+        <method name="Remove(Commons.Xml.Relaxng.RelaxngNameClass)" argnames="p" returntype="System.Void" />
+    </class>
+    <class name="RelaxngNameClass" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngNameClass()" argnames="" />
+    </class>
+    <class name="RelaxngAnyName" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngAnyName()" argnames="" />
+        <property name="Except" propertytype="Commons.Xml.Relaxng.RelaxngExceptNameClass" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngNsName" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngNsName()" argnames="" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Except" propertytype="Commons.Xml.Relaxng.RelaxngExceptNameClass" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngName" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngName()" argnames="" />
+        <constructor name="RelaxngName(System.String, System.String)" argnames="ncname, ns" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngNameChoice" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngNameChoice()" argnames="" />
+        <property name="Children" propertytype="Commons.Xml.Relaxng.RelaxngNameClassList" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngExceptNameClass" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngExceptNameClass()" argnames="" />
+        <property name="Names" propertytype="Commons.Xml.Relaxng.RelaxngNameClassList" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngSingleContentPattern" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngSingleContentPattern()" argnames="" />
+        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
+    </class>
+    <class name="RelaxngBinaryContentPattern" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngBinaryContentPattern()" argnames="" />
+        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
+    </class>
+    <class name="RelaxngStart" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngStart()" argnames="" />
+        <property name="Combine" propertytype="System.String" />
+        <property name="Pattern" propertytype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngDefine" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngDefine()" argnames="" />
+        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
+        <property name="Combine" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngInclude" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngInclude()" argnames="" />
+        <property name="Href" propertytype="System.String" />
+        <property name="Starts" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Defines" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Divs" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="NSContext" propertytype="System.String" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngDiv" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngDiv()" argnames="" />
+        <property name="Starts" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Defines" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Includes" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <property name="Divs" propertytype="Commons.Xml.Relaxng.RelaxngGrammarContentList" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngPatternList" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngPatternList()" argnames="" />
+        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <method name="Add(Commons.Xml.Relaxng.RelaxngPattern)" argnames="p" returntype="System.Void" />
+        <method name="Insert(System.Int32, Commons.Xml.Relaxng.RelaxngPattern)" argnames="pos, p" returntype="System.Void" />
+        <method name="Remove(Commons.Xml.Relaxng.RelaxngPattern)" argnames="p" returntype="System.Void" />
+    </class>
+    <class name="RelaxngGrammarContentList" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngGrammarContentList()" argnames="" />
+        <property name="Item" propertytype="Commons.Xml.Relaxng.IGrammarContent" />
+        <method name="Add(Commons.Xml.Relaxng.IGrammarContent)" argnames="p" returntype="System.Void" />
+        <method name="Insert(System.Int32, Commons.Xml.Relaxng.IGrammarContent)" argnames="pos, p" returntype="System.Void" />
+        <method name="Remove(Commons.Xml.Relaxng.IGrammarContent)" argnames="p" returntype="System.Void" />
+    </class>
+    <class name="RelaxngNotAllowed" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngNotAllowed()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngEmpty" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngEmpty()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngText" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngText()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngDataSupport" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngDataSupport()" argnames="" />
+        <property name="Type" propertytype="System.String" />
+        <property name="DatatypeLibrary" propertytype="System.String" />
+    </class>
+    <class name="RelaxngData" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngData()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ParamList" propertytype="Commons.Xml.Relaxng.RelaxngParamList" />
+        <property name="Except" propertytype="Commons.Xml.Relaxng.RelaxngExcept" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngValue" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngValue()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="Value" propertytype="System.String" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngList" namespace="Commons.Xml.Relaxng">
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngElement" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngElement()" argnames="" />
+        <property name="NameClass" propertytype="Commons.Xml.Relaxng.RelaxngNameClass" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngAttribute" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngAttribute()" argnames="" />
+        <property name="Pattern" propertytype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <property name="NameClass" propertytype="Commons.Xml.Relaxng.RelaxngNameClass" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngRef" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngRef()" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngParentRef" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngParentRef()" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngExternalRef" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngExternalRef()" argnames="" />
+        <property name="Href" propertytype="System.String" />
+        <property name="NSContext" propertytype="System.String" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngOneOrMore" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngOneOrMore()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngZeroOrMore" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngZeroOrMore()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngOptional" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngOptional()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngMixed" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngMixed()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngChoice" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngChoice()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngGroup" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngGroup()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngInterleave" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngInterleave()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngParam" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngParam()" argnames="" />
+        <constructor name="RelaxngParam(System.String, System.String)" argnames="name, value" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngParamList" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngParamList()" argnames="" />
+        <property name="Item" propertytype="Commons.Xml.Relaxng.RelaxngParam" />
+        <method name="Add(Commons.Xml.Relaxng.RelaxngParam)" argnames="p" returntype="System.Void" />
+        <method name="Insert(System.Int32, Commons.Xml.Relaxng.RelaxngParam)" argnames="pos, p" returntype="System.Void" />
+        <method name="Remove(Commons.Xml.Relaxng.RelaxngParam)" argnames="p" returntype="System.Void" />
+    </class>
+    <class name="RelaxngExcept" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngExcept()" argnames="" />
+        <property name="Patterns" propertytype="Commons.Xml.Relaxng.RelaxngPatternList" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+    </class>
+    <class name="RelaxngValidatingReader" namespace="Commons.Xml.Relaxng">
+        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader)" argnames="reader" />
+        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader, System.Xml.XmlReader)" argnames="reader, grammarXml" />
+        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader, System.Xml.XmlReader, Commons.Xml.Relaxng.RelaxngDatatypeProvider)" argnames="reader, grammarXml, provider" />
+        <constructor name="RelaxngValidatingReader(System.Xml.XmlReader, Commons.Xml.Relaxng.RelaxngPattern)" argnames="reader, pattern" />
+        <property name="CurrentStateXml" propertytype="System.String" />
+        <property name="PreviousStateXml" propertytype="System.String" />
+        <method name="Read()" argnames="" returntype="System.Boolean" />
+    </class>
+    <interface name="IGrammarContent" namespace="Commons.Xml.Relaxng" />
+    <enum name="RelaxngPatternType" namespace="Commons.Xml.Relaxng">
+        <field name="Empty" />
+        <field name="NotAllowed" />
+        <field name="Text" />
+        <field name="Choice" />
+        <field name="Interleave" />
+        <field name="Group" />
+        <field name="OneOrMore" />
+        <field name="List" />
+        <field name="Data" />
+        <field name="DataExcept" />
+        <field name="Value" />
+        <field name="Attribute" />
+        <field name="Element" />
+        <field name="After" />
+        <field name="Ref" />
+        <field name="Grammar" />
+        <field name="ZeroOrMore" />
+        <field name="Mixed" />
+        <field name="Optional" />
+        <field name="ExternalRef" />
+        <field name="ParentRef" />
+    </enum>
+    <interface name="yyDebug" namespace="Commons.Xml.Relaxng.Rnc.yydebug">
+        <method name="push(System.Int32, System.Object)" argnames="state, value" returntype="System.Void" />
+        <method name="lex(System.Int32, System.Int32, System.String, System.Object)" argnames="state, token, name, value" returntype="System.Void" />
+        <method name="shift(System.Int32, System.Int32, System.Int32)" argnames="from, to, errorFlag" returntype="System.Void" />
+        <method name="pop(System.Int32)" argnames="state" returntype="System.Void" />
+        <method name="discard(System.Int32, System.Int32, System.String, System.Object)" argnames="state, token, name, value" returntype="System.Void" />
+        <method name="reduce(System.Int32, System.Int32, System.Int32, System.String, System.Int32)" argnames="from, to, rule, text, len" returntype="System.Void" />
+        <method name="shift(System.Int32, System.Int32)" argnames="from, to" returntype="System.Void" />
+        <method name="accept(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="error(System.String)" argnames="message" returntype="System.Void" />
+        <method name="reject()" argnames="" returntype="System.Void" />
+    </interface>
+    <class name="yyException" namespace="Commons.Xml.Relaxng.Rnc.yyParser">
+        <constructor name="yyException(System.String)" argnames="message" />
+    </class>
+    <interface name="yyInput" namespace="Commons.Xml.Relaxng.Rnc.yyParser">
+        <method name="advance()" argnames="" returntype="System.Boolean" />
+        <method name="token()" argnames="" returntype="System.Int32" />
+        <method name="value()" argnames="" returntype="System.Object" />
+    </interface>
+    <class name="XmlDefaultReader" namespace="Commons.Xml">
+        <constructor name="XmlDefaultReader(System.Xml.XmlReader)" argnames="reader" />
+        <property name="Reader" propertytype="System.Xml.XmlReader" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="HasValue" propertytype="System.Boolean" />
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="Value" propertytype="System.String" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="IsEmptyElement" propertytype="System.Boolean" />
+        <property name="IsDefault" propertytype="System.Boolean" />
+        <property name="QuoteChar" propertytype="System.Char" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="AttributeCount" propertytype="System.Int32" />
+        <property name="EOF" propertytype="System.Boolean" />
+        <property name="ReadState" propertytype="System.Xml.ReadState" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
+        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
+        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="HasLineInfo()" argnames="" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
+        <method name="MoveToFirstAttribute()" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNextAttribute()" argnames="" returntype="System.Boolean" />
+        <method name="MoveToElement()" argnames="" returntype="System.Boolean" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Read()" argnames="" returntype="System.Boolean" />
+        <method name="ReadString()" argnames="" returntype="System.String" />
+        <method name="ReadInnerXml()" argnames="" returntype="System.String" />
+        <method name="ReadOuterXml()" argnames="" returntype="System.String" />
+        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
+        <method name="ResolveEntity()" argnames="" returntype="System.Void" />
+        <method name="ReadAttributeValue()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="RdpPattern" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpPattern()" argnames="" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <method name="MakeChoice(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpChoice" />
+        <method name="MakeGroup(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="MakeInterleave(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpInterleave" />
+        <method name="MakeAfter(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpAfter" />
+        <method name="MakeOneOrMore(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpOneOrMore" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="ListDeriv(System.String[], System.Int32, System.Xml.XmlReader)" argnames="list, index, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="Choice(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="Group(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="Interleave(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="After(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="h" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="ValueMatch(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="System.Boolean" />
+        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="OneOrMore()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="EndTagDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpNameClass" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpNameClass()" argnames="" />
+        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
+        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+    </class>
+    <class name="RdpAnyName" namespace="Commons.Xml.Relaxng.Derivative">
+        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpAnyName" />
+        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
+        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+    </class>
+    <class name="RdpAnyNameExcept" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpAnyNameExcept(Commons.Xml.Relaxng.Derivative.RdpNameClass)" argnames="except" />
+        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
+        <property name="ExceptNameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
+        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+    </class>
+    <class name="RdpNsName" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpNsName(System.String)" argnames="ns" />
+        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+    </class>
+    <class name="RdpNsNameExcept" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpNsNameExcept(System.String, Commons.Xml.Relaxng.Derivative.RdpNameClass)" argnames="ns, except" />
+        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
+        <property name="ExceptNameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
+        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+    </class>
+    <class name="RdpName" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpName(System.String, System.String)" argnames="local, ns" />
+        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+    </class>
+    <class name="RdpNameClassChoice" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpNameClassChoice(Commons.Xml.Relaxng.Derivative.RdpNameClass, Commons.Xml.Relaxng.Derivative.RdpNameClass)" argnames="l, r" />
+        <property name="NameClassType" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClassType" />
+        <property name="LValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
+        <property name="RValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
+        <method name="Contains(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+    </class>
+    <class name="RdpParamList" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpParamList()" argnames="" />
+    </class>
+    <class name="RdpParam" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpParam(System.String, System.String)" argnames="localName, value" />
+        <property name="Value" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+    </class>
+    <class name="RdpDatatype" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList, Commons.Xml.Relaxng.RelaxngDatatypeProvider)" argnames="ns, localName, parameters, provider" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <method name="IsAllowed(System.String, System.Xml.XmlReader)" argnames="value, reader" returntype="System.Boolean" />
+        <method name="IsTypeEqual(System.String, System.String, System.Xml.XmlReader)" argnames="s1, s2, reader" returntype="System.Boolean" />
+    </class>
+    <class name="RdpEmpty" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpEmpty()" argnames="" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpEmpty" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+    </class>
+    <class name="RdpNotAllowed" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpNotAllowed()" argnames="" />
+        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpNotAllowed" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="h" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpText" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpText()" argnames="" />
+        <property name="Instance" propertytype="Commons.Xml.Relaxng.Derivative.RdpText" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpAbstractBinary" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpAbstractBinary(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
+        <property name="LValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <property name="RValue" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+    </class>
+    <class name="RdpChoice" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpChoice(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="handler" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="EndTagDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpInterleave" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpInterleave(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpGroup" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpGroup(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpAbstractSingleContent" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpAbstractSingleContent(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" />
+        <property name="Child" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpOneOrMore" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpOneOrMore(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpList" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpList(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpData" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpData(Commons.Xml.Relaxng.Derivative.RdpDatatype)" argnames="dt" />
+        <property name="Datatype" propertytype="Commons.Xml.Relaxng.Derivative.RdpDatatype" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpDataExcept" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpDataExcept(Commons.Xml.Relaxng.Derivative.RdpDatatype, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="dt, except" />
+        <property name="Except" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpValue" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpValue(Commons.Xml.Relaxng.Derivative.RdpDatatype, System.String)" argnames="dt, value" />
+        <property name="Datatype" propertytype="Commons.Xml.Relaxng.Derivative.RdpDatatype" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpAttribute" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpAttribute(Commons.Xml.Relaxng.Derivative.RdpNameClass, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="nameClass, p" />
+        <property name="NameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
+        <property name="Children" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpElement" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpElement(Commons.Xml.Relaxng.Derivative.RdpNameClass, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="nameClass, p" />
+        <property name="NameClass" propertytype="Commons.Xml.Relaxng.Derivative.RdpNameClass" />
+        <property name="Children" propertytype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <property name="ContentType" propertytype="Commons.Xml.Relaxng.Derivative.RdpContentType" />
+        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpAfter" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpAfter(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="l, r" />
+        <property name="Nullable" propertytype="System.Boolean" />
+        <property name="PatternType" propertytype="Commons.Xml.Relaxng.RelaxngPatternType" />
+        <method name="TextDeriv(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagOpenDeriv(System.String, System.String)" argnames="name, ns" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="ApplyAfter(Commons.Xml.Relaxng.Derivative.RdpApplyAfterHandler)" argnames="handler" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="AttDeriv(System.String, System.String, System.String, System.Xml.XmlReader)" argnames="name, ns, value, reader" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="StartTagCloseDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="EndTagDeriv()" argnames="" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </class>
+    <class name="RdpUtil" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpUtil()" argnames="" />
+        <field name="WhitespaceChars" />
+    </class>
+    <delegate name="RdpApplyAfterHandler" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpApplyAfterHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="Invoke(Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="BeginInvoke(Commons.Xml.Relaxng.Derivative.RdpPattern, System.AsyncCallback, System.Object)" argnames="p, callback, object" returntype="System.IAsyncResult" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </delegate>
+    <delegate name="RdpBinaryFunction" namespace="Commons.Xml.Relaxng.Derivative">
+        <constructor name="RdpBinaryFunction(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="Invoke(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern)" argnames="p1, p2" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+        <method name="BeginInvoke(Commons.Xml.Relaxng.Derivative.RdpPattern, Commons.Xml.Relaxng.Derivative.RdpPattern, System.AsyncCallback, System.Object)" argnames="p1, p2, callback, object" returntype="System.IAsyncResult" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="Commons.Xml.Relaxng.Derivative.RdpPattern" />
+    </delegate>
+    <enum name="RdpContentType" namespace="Commons.Xml.Relaxng.Derivative">
+        <field name="Invalid" />
+        <field name="Empty" />
+        <field name="Complex" />
+        <field name="Simple" />
+    </enum>
+    <enum name="RdpNameClassType" namespace="Commons.Xml.Relaxng.Derivative">
+        <field name="None" />
+        <field name="AnyName" />
+        <field name="AnyNameExcept" />
+        <field name="NsName" />
+        <field name="NsNameExcept" />
+        <field name="Name" />
+        <field name="NameClassChoice" />
+    </enum>
+    <class name="XsdDatatypeProvider" namespace="Commons.Xml.Relaxng.XmlSchema">
+        <property name="Instance" propertytype="Commons.Xml.Relaxng.XmlSchema.XsdDatatypeProvider" />
+        <method name="GetDatatype(System.String, System.String, Commons.Xml.Relaxng.RelaxngParamList)" argnames="name, ns, parameters" returntype="Commons.Xml.Relaxng.RelaxngDatatype" />
+    </class>
+    <class name="XsdPrimitiveType" namespace="Commons.Xml.Relaxng.XmlSchema">
+        <constructor name="XsdPrimitiveType(System.String, System.Xml.Schema.XmlSchemaDatatype)" argnames="name, xstype" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="text, reader" returntype="System.Object" />
+    </class>
+    <class name="XsdQNameWrapper" namespace="Commons.Xml.Relaxng.XmlSchema">
+        <constructor name="XsdQNameWrapper()" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <method name="Parse(System.String, System.Xml.XmlReader)" argnames="s, reader" returntype="System.Object" />
+    </class>
+    <class name="RncParser" namespace="Commons.Xml.Relaxng.Rnc">
+        <constructor name="RncParser(System.Xml.XmlNameTable)" argnames="nameTable" />
+        <field name="ErrorOutput" />
+        <field name="debug" />
+        <field name="yyFinal" />
+        <field name="yyRule" />
+        <field name="yyNames" />
+        <field name="yyMax" />
+        <field name="yyDgoto" />
+        <field name="yySindex" />
+        <field name="yyRindex" />
+        <field name="yyGindex" />
+        <field name="yyTable" />
+        <field name="yyCheck" />
+        <property name="Line" propertytype="System.Int32" />
+        <property name="Column" propertytype="System.Int32" />
+        <property name="DefaultNamespace" propertytype="System.String" />
+        <method name="ParseRnc(System.IO.TextReader)" argnames="reader" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <method name="ParseRnc(System.IO.TextReader, System.Xml.XmlNameTable)" argnames="reader, nameTable" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <method name="Parse(System.IO.TextReader)" argnames="source" returntype="Commons.Xml.Relaxng.RelaxngPattern" />
+        <method name="yyerror(System.String)" argnames="message" returntype="System.Void" />
+        <method name="yyerror(System.String, System.String[])" argnames="message, expected" returntype="System.Void" />
+        <method name="yyname(System.Int32)" argnames="token" returntype="System.String" />
+        <method name="yyExpecting(System.Int32)" argnames="state" returntype="System.String[]" />
+        <method name="yyparse(Commons.Xml.Relaxng.Rnc.yyParser.yyInput, System.Object)" argnames="yyLex, yyd" returntype="System.Object" />
+        <method name="yyDefault(System.Object)" argnames="first" returntype="System.Object" />
+        <method name="yyparse(Commons.Xml.Relaxng.Rnc.yyParser.yyInput)" argnames="yyLex" returntype="System.Object" />
+    </class>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern1.rng
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern1.rng
@@ -1,5 +1,5 @@
-<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
-	<element name='bar'>
-		<empty/>
-	</element>
-</element>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+	<element name='bar'>
+		<empty/>
+	</element>
+</element>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern1.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern1.xml
@@ -1 +1 @@
-<foo><bar /></foo>
+<foo><bar /></foo>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern2.rng
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern2.rng
@@ -1,8 +1,8 @@
-<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
-	<element name='bar'>
-		<element name='baz'><empty/></element>
-	</element>
-	<element name='hoge'>
-		<element name='fuga'><empty/></element>
-	</element>
-</element>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
+	<element name='bar'>
+		<element name='baz'><empty/></element>
+	</element>
+	<element name='hoge'>
+		<element name='fuga'><empty/></element>
+	</element>
+</element>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern2.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/SimpleElementPattern2.xml
@@ -1,4 +1,4 @@
-<foo>
-<bar><baz/></bar>
-<hoge><fuga/></hoge>
-</foo>
+<foo>
+<bar><baz/></bar>
+<hoge><fuga/></hoge>
+</foo>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/atom.rnc
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/atom.rnc
@@ -1,339 +1,339 @@
-# -*- rnc -*-
-# RELAX NG Compact Syntax Grammar for the
-# Atom Format Specification Version 11
-
-namespace atom = "http://www.w3.org/2005/Atom"
-namespace xhtml = "http://www.w3.org/1999/xhtml"
-namespace s = "http://www.ascc.net/xml/schematron"
-namespace local = ""
-
-start = atomFeed | atomEntry
-
-# Common attributes
-
-atomCommonAttributes =
-   attribute xml:base { atomUri }?,
-   attribute xml:lang { atomLanguageTag }?,
-   undefinedAttribute*
-
-# Text Constructs
-
-atomPlainTextConstruct =
-   atomCommonAttributes,
-   attribute type { "text" | "html" }?,
-   text
-
-atomXHTMLTextConstruct =
-   atomCommonAttributes,
-   attribute type { "xhtml" },
-   xhtmlDiv
-
-atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
-
-# Person Construct
-
-atomPersonConstruct =
-   atomCommonAttributes,
-   (element atom:name { text }
-    & element atom:uri { atomUri }?
-    & element atom:email { atomEmailAddress }?
-    & extensionElement*)
-
-# Date Construct
-
-atomDateConstruct =
-   atomCommonAttributes,
-   xsd:dateTime
-
-# atom:feed
-
-atomFeed =
-   [
-      s:rule [
-         context = "atom:feed"
-         s:assert [
-            test = "atom:author or not(atom:entry[not(atom:author)])"
-            "An atom:feed must have an atom:author unless all "
-            ~ "of its atom:entry children have an atom:author."
-         ]
-      ]
-   ]
-   element atom:feed {
-      atomCommonAttributes,
-      (atomAuthor*
-       & atomCategory*
-       & atomContributor*
-       & atomGenerator?
-       & atomIcon?
-       & atomId
-       & atomLink*
-       & atomLogo?
-       & atomRights?
-       & atomSubtitle?
-       & atomTitle
-       & atomUpdated
-       & extensionElement*),
-      atomEntry*
-   }
-
-# atom:entry
-
-atomEntry =
-   [
-      s:rule [
-         context = "atom:entry"
-         s:assert [
-            test = "atom:link[@rel='alternate'] "
-            ~ "or atom:link[not(@rel)] "
-            ~ "or atom:content"
-            "An atom:entry must have at least one atom:link element "
-            ~ "with a rel attribute of 'alternate' "
-            ~ "or an atom:content."
-         ]
-      ]
-      s:rule [
-         context = "atom:entry"
-         s:assert [
-            test = "atom:author or "
-            ~ "../atom:author or atom:source/atom:author"
-            "An atom:entry must have an atom:author "
-            ~ "if its feed does not."
-         ]
-      ]
-   ]
-   element atom:entry {
-      atomCommonAttributes,
-      (atomAuthor*
-       & atomCategory*
-       & atomContent?
-       & atomContributor*
-       & atomId
-       & atomLink*
-       & atomPublished?
-       & atomRights?
-       & atomSource?
-       & atomSummary?
-       & atomTitle
-       & atomUpdated
-       & extensionElement*)
-   }
-
-# atom:content
-
-atomInlineTextContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { "text" | "html" }?,
-      (text)*
-   }
-
-atomInlineXHTMLContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { "xhtml" },
-      xhtmlDiv
-   }
-
-atomInlineOtherContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { atomMediaType }?,
-      (text|anyElement)*
-   }
-
-atomOutOfLineContent =
-   element atom:content {
-      atomCommonAttributes,
-      attribute type { atomMediaType }?,
-      attribute src { atomUri },
-      empty
-   }
-
-atomContent = atomInlineTextContent
- | atomInlineXHTMLContent
- | atomInlineOtherContent
- | atomOutOfLineContent
-
-# atom:author
-
-atomAuthor = element atom:author { atomPersonConstruct }
-
-# atom:category
-
-atomCategory =
-   element atom:category {
-      atomCommonAttributes,
-      attribute term { text },
-      attribute scheme { atomUri }?,
-      attribute label { text }?,
-      undefinedContent
-   }
-
-# atom:contributor
-
-atomContributor = element atom:contributor { atomPersonConstruct }
-
-# atom:generator
-
-atomGenerator = element atom:generator {
-   atomCommonAttributes,
-   attribute uri { atomUri }?,
-   attribute version { text }?,
-   text
-}
-
-# atom:icon
-
-atomIcon = element atom:icon {
-   atomCommonAttributes,
-   (atomUri)
-}
-
-# atom:id
-
-atomId = element atom:id {
-   atomCommonAttributes,
-   (atomUri)
-}
-
-# atom:logo
-
-atomLogo = element atom:logo {
-   atomCommonAttributes,
-   (atomUri)
-}
-
-# atom:link
-
-atomLink =
-   element atom:link {
-      atomCommonAttributes,
-      attribute href { atomUri },
-      attribute rel { atomNCName | atomUri }?,
-      attribute type { atomMediaType }?,
-      attribute hreflang { atomLanguageTag }?,
-      attribute title { text }?,
-      attribute length { text }?,
-      undefinedContent
-   }
-
-# atom:published
-
-atomPublished = element atom:published { atomDateConstruct }
-
-# atom:rights
-
-atomRights = element atom:rights { atomTextConstruct }
-
-# atom:source
-
-atomSource =
-   element atom:source {
-      atomCommonAttributes,
-      (atomAuthor*
-       & atomCategory*
-       & atomContributor*
-       & atomGenerator?
-       & atomIcon?
-       & atomId?
-       & atomLink*
-       & atomLogo?
-       & atomRights?
-       & atomSubtitle?
-       & atomTitle?
-       & atomUpdated?
-       & extensionElement*)
-   }
-
-# atom:subtitle
-
-atomSubtitle = element atom:subtitle { atomTextConstruct }
-
-# atom:summary
-
-atomSummary = element atom:summary { atomTextConstruct }
-
-# atom:title
-
-atomTitle = element atom:title { atomTextConstruct }
-
-# atom:updated
-
-atomUpdated = element atom:updated { atomDateConstruct }
-
-# Low-level simple types
-
-atomNCName = xsd:string { minLength = "1" pattern = "[^:]*" }
-
-# Whatever a media type is, it contains at least one slash
-atomMediaType = xsd:string { pattern = ".+/.+" }
-
-# As defined in RFC 3066
-atomLanguageTag = xsd:string {
-   pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*"
-}
-
-# Unconstrained; it's not entirely clear how IRI fit into
-# xsd:anyURI so let's not try to constrain it here
-atomUri = text
-
-# Whatever an email address is, it contains at least one @
-atomEmailAddress = xsd:string { pattern = ".+@.+" }
-
-# Simple Extension
-
-simpleExtensionElement =
-   element * - atom:* {
-      text
-   }
-
-# Structured Extension
-
-structuredExtensionElement =
-   element * - atom:* {
-      (attribute * { text }+,
-         (text|anyElement)*)
-    | (attribute * { text }*,
-       (text?, anyElement+, (text|anyElement)*))
-   }
-
-# Other Extensibility
-
-extensionElement =
-   simpleExtensionElement | structuredExtensionElement
-
-undefinedAttribute =
-  attribute * - (xml:base | xml:lang | local:*) { text }
-
-undefinedContent = (text|anyForeignElement)*
-
-anyElement =
-   element * {
-      (attribute * { text }
-       | text
-       | anyElement)*
-   }
-
-anyForeignElement =
-   element * - atom:* {
-      (attribute * { text }
-       | text
-       | anyElement)*
-   }
-
-# XHTML
-
-anyXHTML = element xhtml:* {
-   (attribute * { text }
-    | text
-    | anyXHTML)*
-}
-
-xhtmlDiv = element xhtml:div {
-   (attribute * { text }
-    | text
-    | anyXHTML)*
-}
-
-# EOF
-
+# -*- rnc -*-
+# RELAX NG Compact Syntax Grammar for the
+# Atom Format Specification Version 11
+
+namespace atom = "http://www.w3.org/2005/Atom"
+namespace xhtml = "http://www.w3.org/1999/xhtml"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace local = ""
+
+start = atomFeed | atomEntry
+
+# Common attributes
+
+atomCommonAttributes =
+   attribute xml:base { atomUri }?,
+   attribute xml:lang { atomLanguageTag }?,
+   undefinedAttribute*
+
+# Text Constructs
+
+atomPlainTextConstruct =
+   atomCommonAttributes,
+   attribute type { "text" | "html" }?,
+   text
+
+atomXHTMLTextConstruct =
+   atomCommonAttributes,
+   attribute type { "xhtml" },
+   xhtmlDiv
+
+atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
+
+# Person Construct
+
+atomPersonConstruct =
+   atomCommonAttributes,
+   (element atom:name { text }
+    & element atom:uri { atomUri }?
+    & element atom:email { atomEmailAddress }?
+    & extensionElement*)
+
+# Date Construct
+
+atomDateConstruct =
+   atomCommonAttributes,
+   xsd:dateTime
+
+# atom:feed
+
+atomFeed =
+   [
+      s:rule [
+         context = "atom:feed"
+         s:assert [
+            test = "atom:author or not(atom:entry[not(atom:author)])"
+            "An atom:feed must have an atom:author unless all "
+            ~ "of its atom:entry children have an atom:author."
+         ]
+      ]
+   ]
+   element atom:feed {
+      atomCommonAttributes,
+      (atomAuthor*
+       & atomCategory*
+       & atomContributor*
+       & atomGenerator?
+       & atomIcon?
+       & atomId
+       & atomLink*
+       & atomLogo?
+       & atomRights?
+       & atomSubtitle?
+       & atomTitle
+       & atomUpdated
+       & extensionElement*),
+      atomEntry*
+   }
+
+# atom:entry
+
+atomEntry =
+   [
+      s:rule [
+         context = "atom:entry"
+         s:assert [
+            test = "atom:link[@rel='alternate'] "
+            ~ "or atom:link[not(@rel)] "
+            ~ "or atom:content"
+            "An atom:entry must have at least one atom:link element "
+            ~ "with a rel attribute of 'alternate' "
+            ~ "or an atom:content."
+         ]
+      ]
+      s:rule [
+         context = "atom:entry"
+         s:assert [
+            test = "atom:author or "
+            ~ "../atom:author or atom:source/atom:author"
+            "An atom:entry must have an atom:author "
+            ~ "if its feed does not."
+         ]
+      ]
+   ]
+   element atom:entry {
+      atomCommonAttributes,
+      (atomAuthor*
+       & atomCategory*
+       & atomContent?
+       & atomContributor*
+       & atomId
+       & atomLink*
+       & atomPublished?
+       & atomRights?
+       & atomSource?
+       & atomSummary?
+       & atomTitle
+       & atomUpdated
+       & extensionElement*)
+   }
+
+# atom:content
+
+atomInlineTextContent =
+   element atom:content {
+      atomCommonAttributes,
+      attribute type { "text" | "html" }?,
+      (text)*
+   }
+
+atomInlineXHTMLContent =
+   element atom:content {
+      atomCommonAttributes,
+      attribute type { "xhtml" },
+      xhtmlDiv
+   }
+
+atomInlineOtherContent =
+   element atom:content {
+      atomCommonAttributes,
+      attribute type { atomMediaType }?,
+      (text|anyElement)*
+   }
+
+atomOutOfLineContent =
+   element atom:content {
+      atomCommonAttributes,
+      attribute type { atomMediaType }?,
+      attribute src { atomUri },
+      empty
+   }
+
+atomContent = atomInlineTextContent
+ | atomInlineXHTMLContent
+ | atomInlineOtherContent
+ | atomOutOfLineContent
+
+# atom:author
+
+atomAuthor = element atom:author { atomPersonConstruct }
+
+# atom:category
+
+atomCategory =
+   element atom:category {
+      atomCommonAttributes,
+      attribute term { text },
+      attribute scheme { atomUri }?,
+      attribute label { text }?,
+      undefinedContent
+   }
+
+# atom:contributor
+
+atomContributor = element atom:contributor { atomPersonConstruct }
+
+# atom:generator
+
+atomGenerator = element atom:generator {
+   atomCommonAttributes,
+   attribute uri { atomUri }?,
+   attribute version { text }?,
+   text
+}
+
+# atom:icon
+
+atomIcon = element atom:icon {
+   atomCommonAttributes,
+   (atomUri)
+}
+
+# atom:id
+
+atomId = element atom:id {
+   atomCommonAttributes,
+   (atomUri)
+}
+
+# atom:logo
+
+atomLogo = element atom:logo {
+   atomCommonAttributes,
+   (atomUri)
+}
+
+# atom:link
+
+atomLink =
+   element atom:link {
+      atomCommonAttributes,
+      attribute href { atomUri },
+      attribute rel { atomNCName | atomUri }?,
+      attribute type { atomMediaType }?,
+      attribute hreflang { atomLanguageTag }?,
+      attribute title { text }?,
+      attribute length { text }?,
+      undefinedContent
+   }
+
+# atom:published
+
+atomPublished = element atom:published { atomDateConstruct }
+
+# atom:rights
+
+atomRights = element atom:rights { atomTextConstruct }
+
+# atom:source
+
+atomSource =
+   element atom:source {
+      atomCommonAttributes,
+      (atomAuthor*
+       & atomCategory*
+       & atomContributor*
+       & atomGenerator?
+       & atomIcon?
+       & atomId?
+       & atomLink*
+       & atomLogo?
+       & atomRights?
+       & atomSubtitle?
+       & atomTitle?
+       & atomUpdated?
+       & extensionElement*)
+   }
+
+# atom:subtitle
+
+atomSubtitle = element atom:subtitle { atomTextConstruct }
+
+# atom:summary
+
+atomSummary = element atom:summary { atomTextConstruct }
+
+# atom:title
+
+atomTitle = element atom:title { atomTextConstruct }
+
+# atom:updated
+
+atomUpdated = element atom:updated { atomDateConstruct }
+
+# Low-level simple types
+
+atomNCName = xsd:string { minLength = "1" pattern = "[^:]*" }
+
+# Whatever a media type is, it contains at least one slash
+atomMediaType = xsd:string { pattern = ".+/.+" }
+
+# As defined in RFC 3066
+atomLanguageTag = xsd:string {
+   pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*"
+}
+
+# Unconstrained; it's not entirely clear how IRI fit into
+# xsd:anyURI so let's not try to constrain it here
+atomUri = text
+
+# Whatever an email address is, it contains at least one @
+atomEmailAddress = xsd:string { pattern = ".+@.+" }
+
+# Simple Extension
+
+simpleExtensionElement =
+   element * - atom:* {
+      text
+   }
+
+# Structured Extension
+
+structuredExtensionElement =
+   element * - atom:* {
+      (attribute * { text }+,
+         (text|anyElement)*)
+    | (attribute * { text }*,
+       (text?, anyElement+, (text|anyElement)*))
+   }
+
+# Other Extensibility
+
+extensionElement =
+   simpleExtensionElement | structuredExtensionElement
+
+undefinedAttribute =
+  attribute * - (xml:base | xml:lang | local:*) { text }
+
+undefinedContent = (text|anyForeignElement)*
+
+anyElement =
+   element * {
+      (attribute * { text }
+       | text
+       | anyElement)*
+   }
+
+anyForeignElement =
+   element * - atom:* {
+      (attribute * { text }
+       | text
+       | anyElement)*
+   }
+
+# XHTML
+
+anyXHTML = element xhtml:* {
+   (attribute * { text }
+    | text
+    | anyXHTML)*
+}
+
+xhtmlDiv = element xhtml:div {
+   (attribute * { text }
+    | text
+    | anyXHTML)*
+}
+
+# EOF
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/relaxng.rnc
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/relaxng.rnc
@@ -1,63 +1,63 @@
-# RELAX NG XML syntax specified in compact syntax.
-
-default namespace rng = "http://relaxng.org/ns/structure/1.0"
-namespace local = ""
-datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
-
-start = pattern
-
-pattern =
-  element element { (nameQName | nameClass), (common & pattern+) }
-  | element attribute { (nameQName | nameClass), (common & pattern?) }
-  | element group|interleave|choice|optional
-            |zeroOrMore|oneOrMore|list|mixed { common & pattern+ }
-  | element ref|parentRef { nameNCName, common }
-  | element empty|notAllowed|text { common }
-  | element data { type, param*, (common & exceptPattern?) }
-  | element value { commonAttributes, type?, xsd:string }
-  | element externalRef { href, common }
-  | element grammar { common & grammarContent* }
-
-param = element param { commonAttributes, nameNCName, xsd:string }
-
-exceptPattern = element except { common & pattern+ }
-
-grammarContent = 
-  definition
-  | element div { common & grammarContent* }
-  | element include { href, (common & includeContent*) }
-
-includeContent =
-  definition
-  | element div { common & includeContent* }
-
-definition =
-  element start { combine?, (common & pattern+) }
-  | element define { nameNCName, combine?, (common & pattern+) }
-
-combine = attribute combine { "choice" | "interleave" }
-
-nameClass = 
-  element name { commonAttributes, xsd:QName }
-  | element anyName { common & exceptNameClass? }
-  | element nsName { common & exceptNameClass? }
-  | element choice { common & nameClass+ }
-
-exceptNameClass = element except { common & nameClass+ }
-
-nameQName = attribute name { xsd:QName }
-nameNCName = attribute name { xsd:NCName }
-href = attribute href { xsd:anyURI }
-type = attribute type { xsd:NCName }
-
-common = commonAttributes, foreignElement*
-
-commonAttributes = 
-  attribute ns { xsd:string }?,
-  attribute datatypeLibrary { xsd:anyURI }?,
-  foreignAttribute*
-
-foreignElement = element * - rng:* { (anyAttribute | text | anyElement)* }
-foreignAttribute = attribute * - (rng:*|local:*) { text }
-anyElement = element * { (anyAttribute | text | anyElement)* }
-anyAttribute = attribute * { text }
+# RELAX NG XML syntax specified in compact syntax.
+
+default namespace rng = "http://relaxng.org/ns/structure/1.0"
+namespace local = ""
+datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
+
+start = pattern
+
+pattern =
+  element element { (nameQName | nameClass), (common & pattern+) }
+  | element attribute { (nameQName | nameClass), (common & pattern?) }
+  | element group|interleave|choice|optional
+            |zeroOrMore|oneOrMore|list|mixed { common & pattern+ }
+  | element ref|parentRef { nameNCName, common }
+  | element empty|notAllowed|text { common }
+  | element data { type, param*, (common & exceptPattern?) }
+  | element value { commonAttributes, type?, xsd:string }
+  | element externalRef { href, common }
+  | element grammar { common & grammarContent* }
+
+param = element param { commonAttributes, nameNCName, xsd:string }
+
+exceptPattern = element except { common & pattern+ }
+
+grammarContent = 
+  definition
+  | element div { common & grammarContent* }
+  | element include { href, (common & includeContent*) }
+
+includeContent =
+  definition
+  | element div { common & includeContent* }
+
+definition =
+  element start { combine?, (common & pattern+) }
+  | element define { nameNCName, combine?, (common & pattern+) }
+
+combine = attribute combine { "choice" | "interleave" }
+
+nameClass = 
+  element name { commonAttributes, xsd:QName }
+  | element anyName { common & exceptNameClass? }
+  | element nsName { common & exceptNameClass? }
+  | element choice { common & nameClass+ }
+
+exceptNameClass = element except { common & nameClass+ }
+
+nameQName = attribute name { xsd:QName }
+nameNCName = attribute name { xsd:NCName }
+href = attribute href { xsd:anyURI }
+type = attribute type { xsd:NCName }
+
+common = commonAttributes, foreignElement*
+
+commonAttributes = 
+  attribute ns { xsd:string }?,
+  attribute datatypeLibrary { xsd:anyURI }?,
+  foreignAttribute*
+
+foreignElement = element * - rng:* { (anyAttribute | text | anyElement)* }
+foreignAttribute = attribute * - (rng:*|local:*) { text }
+anyElement = element * { (anyAttribute | text | anyElement)* }
+anyAttribute = attribute * { text }
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/team.rng
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/XmlFiles/team.rng
@@ -1,56 +1,56 @@
-<grammar
-	xmlns="http://relaxng.org/ns/structure/1.0"
-	ns="http://go-mono.org/team.xsd">
-<start>
-	<element name="contributors">
-		<optional>
-			<ref name="schema" />
-		</optional>
-		<oneOrMore>
-			<element name="contributor">
-				<zeroOrMore><element name="name">
-					<zeroOrMore><element name="first-name"><text/></element></zeroOrMore>
-					<zeroOrMore><element name="last-name"><text/></element></zeroOrMore>
-				</element></zeroOrMore>
-				<zeroOrMore><element name="e-mail"><text/></element></zeroOrMore>
-				<zeroOrMore><element name="image"><text/></element></zeroOrMore>
-				<zeroOrMore><element name="location"><text/></element></zeroOrMore>
-				<zeroOrMore><element name="organization"><text/></element></zeroOrMore>
-				<zeroOrMore><element name="description"><text/></element></zeroOrMore>
-				<zeroOrMore><element name="tasks">
-					<oneOrMore><element name="task">
-						<text/>
-					</element></oneOrMore>
-				</element></zeroOrMore>
-			</element>
-		</oneOrMore>
-	</element>
-</start>
-
-<define name="schema">
-	<element name="schema" ns="http://www.w3.org/2001/XMLSchema">
-		<ref name="anyAttribute" />
-		<ref name="anyElement"/>
-	</element>
-</define>
-
-<define name="anyElement">
-<zeroOrMore>
-	<element>
-		<anyName/>
-		<ref name="anyAttribute" />
-		<zeroOrMore>
-			<text/>
-			<ref name="anyElement"/>
-		</zeroOrMore>
-	</element>
-</zeroOrMore>
-</define>
-
-<define name="anyAttribute">
-<zeroOrMore>
-	<attribute><anyName/></attribute>
-</zeroOrMore>
-</define>
-
-</grammar>
+<grammar
+	xmlns="http://relaxng.org/ns/structure/1.0"
+	ns="http://go-mono.org/team.xsd">
+<start>
+	<element name="contributors">
+		<optional>
+			<ref name="schema" />
+		</optional>
+		<oneOrMore>
+			<element name="contributor">
+				<zeroOrMore><element name="name">
+					<zeroOrMore><element name="first-name"><text/></element></zeroOrMore>
+					<zeroOrMore><element name="last-name"><text/></element></zeroOrMore>
+				</element></zeroOrMore>
+				<zeroOrMore><element name="e-mail"><text/></element></zeroOrMore>
+				<zeroOrMore><element name="image"><text/></element></zeroOrMore>
+				<zeroOrMore><element name="location"><text/></element></zeroOrMore>
+				<zeroOrMore><element name="organization"><text/></element></zeroOrMore>
+				<zeroOrMore><element name="description"><text/></element></zeroOrMore>
+				<zeroOrMore><element name="tasks">
+					<oneOrMore><element name="task">
+						<text/>
+					</element></oneOrMore>
+				</element></zeroOrMore>
+			</element>
+		</oneOrMore>
+	</element>
+</start>
+
+<define name="schema">
+	<element name="schema" ns="http://www.w3.org/2001/XMLSchema">
+		<ref name="anyAttribute" />
+		<ref name="anyElement"/>
+	</element>
+</define>
+
+<define name="anyElement">
+<zeroOrMore>
+	<element>
+		<anyName/>
+		<ref name="anyAttribute" />
+		<zeroOrMore>
+			<text/>
+			<ref name="anyElement"/>
+		</zeroOrMore>
+	</element>
+</zeroOrMore>
+</define>
+
+<define name="anyAttribute">
+<zeroOrMore>
+	<attribute><anyName/></attribute>
+</zeroOrMore>
+</define>
+
+</grammar>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/standalone_tests/anglia-test-runner.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/standalone_tests/anglia-test-runner.cs
@@ -1,69 +1,69 @@
-using System;
-using System.IO;
-using System.Xml;
-using Commons.Xml.Relaxng;
-using Commons.Xml.Relaxng.Rnc;
-
-public class Driver
-{
-	public static void Main (string [] args)
-	{
-		bool outAll = false;
-		bool details = false;
-		bool stopOnError = false;
-		string filter = null;
-		foreach (string arg in args) {
-			switch (arg) {
-			case "--outall":
-				outAll = true; break;
-			case "--details":
-				details = true; break;
-			case "--stoponerror":
-				stopOnError = true; break;
-			default:
-				filter = arg; break;
-			}
-		}
-
-		try {
-			XmlDocument doc = new XmlDocument ();
-			doc.Load ("test/RNCTest.xml");
-			int success = 0;
-			int failure = 0;
-			foreach (XmlElement el in doc.SelectNodes ("/RNCTestCases/TestCase")) {
-				string id = el.GetAttribute ("id");
-				if (filter != null && id.IndexOf (filter) < 0)
-					continue;
-				if (outAll)
-					Console.WriteLine ("testing " + id);
-				bool isValid = el.GetAttribute ("legal") == "true";
-				RncParser p = new RncParser (new NameTable ());
-				try {
-					string s = new StreamReader ("test" + Path.DirectorySeparatorChar + el.GetAttribute ("path")).ReadToEnd ();
-					p.Parse (new StringReader (s));
-					if (isValid) {
-						success++;
-//						Console.Error.WriteLine ("valid " + id);
-					} else {
-						failure++;
-						Console.Error.WriteLine ("INCORRECTLY VALID   " + id);
-					}
-				} catch (Exception ex) {
-					if (isValid) {
-						if (stopOnError)
-							throw;
-						failure++;
-						Console.Error.WriteLine ("INCORRECTLY INVALID " + id + " --> " + (details ? ex.ToString () : ex.Message));
-					} else {
-						success++;
-//						Console.Error.WriteLine ("invalid " + id);
-					}
-				}
-			}
-			Console.Error.WriteLine ("Total success: " + success);
-			Console.Error.WriteLine ("Total failure: " + failure);
-		} catch (Exception ex) {
-			Console.Error.WriteLine ("Unexpected Exception: " + ex);
-		}
-	}
-}
+using System;
+using System.IO;
+using System.Xml;
+using Commons.Xml.Relaxng;
+using Commons.Xml.Relaxng.Rnc;
+
+public class Driver
+{
+	public static void Main (string [] args)
+	{
+		bool outAll = false;
+		bool details = false;
+		bool stopOnError = false;
+		string filter = null;
+		foreach (string arg in args) {
+			switch (arg) {
+			case "--outall":
+				outAll = true; break;
+			case "--details":
+				details = true; break;
+			case "--stoponerror":
+				stopOnError = true; break;
+			default:
+				filter = arg; break;
+			}
+		}
+
+		try {
+			XmlDocument doc = new XmlDocument ();
+			doc.Load ("test/RNCTest.xml");
+			int success = 0;
+			int failure = 0;
+			foreach (XmlElement el in doc.SelectNodes ("/RNCTestCases/TestCase")) {
+				string id = el.GetAttribute ("id");
+				if (filter != null && id.IndexOf (filter) < 0)
+					continue;
+				if (outAll)
+					Console.WriteLine ("testing " + id);
+				bool isValid = el.GetAttribute ("legal") == "true";
+				RncParser p = new RncParser (new NameTable ());
+				try {
+					string s = new StreamReader ("test" + Path.DirectorySeparatorChar + el.GetAttribute ("path")).ReadToEnd ();
+					p.Parse (new StringReader (s));
+					if (isValid) {
+						success++;
+//						Console.Error.WriteLine ("valid " + id);
+					} else {
+						failure++;
+						Console.Error.WriteLine ("INCORRECTLY VALID   " + id);
+					}
+				} catch (Exception ex) {
+					if (isValid) {
+						if (stopOnError)
+							throw;
+						failure++;
+						Console.Error.WriteLine ("INCORRECTLY INVALID " + id + " --> " + (details ? ex.ToString () : ex.Message));
+					} else {
+						success++;
+//						Console.Error.WriteLine ("invalid " + id);
+					}
+				}
+			}
+			Console.Error.WriteLine ("Total success: " + success);
+			Console.Error.WriteLine ("Total failure: " + failure);
+		} catch (Exception ex) {
+			Console.Error.WriteLine ("Unexpected Exception: " + ex);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Commons.Xml.Relaxng/Test/standalone_tests/relaxngtest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Commons.Xml.Relaxng/Test/standalone_tests/relaxngtest.cs
@@ -1,80 +1,80 @@
-using System;
-using System.IO;
-using System.Xml;
-using Commons.Xml.Relaxng;
-using Commons.Xml.Relaxng.Derivative;
-
-public class Test
-{
-	static char SEP = Path.DirectorySeparatorChar;
-	static bool skip_error = true;
-
-	public static void Main (string [] args)
-	{
-		if (args.Length > 0 && args [0] == "--skip-error")
-			skip_error = true;
-
-Console.WriteLine ("Started:  " + DateTime.Now.ToString ("yyyy-MM-dd HH:mm:ss.fff"));
-		RunTest ();
-Console.WriteLine ("Finished: " + DateTime.Now.ToString ("yyyy-MM-dd HH:mm:ss.fff"));
-	}
-
-	static void RunTest ()
-	{
-		foreach (DirectoryInfo di in new DirectoryInfo (@"relax-ng").GetDirectories ()) {
-			XmlTextReader xtr = null;
-			FileInfo fi = new FileInfo (di.FullName + "/i.rng");
-			// Invalid grammar case:
-			if (fi.Exists) {
-				xtr = new XmlTextReader (fi.FullName);
-				try {
-					RelaxngPattern.Read (xtr).Compile ();
-					Console.WriteLine ("Expected error: " + di.Name);
-				} catch (RelaxngException ex) {
-				} catch (XmlException ex) {
-				} catch (ArgumentNullException ex) {
-				} catch (UriFormatException ex) {
-				} catch (Exception ex) {
-					Console.WriteLine ("Unexpected error type : " + di.Name + " : " + ex.Message);
-				} finally {
-					xtr.Close ();
-				}
-				continue;
-			}
-
-			// Valid grammar case:
-			xtr = new XmlTextReader (di.FullName + "/c.rng");
-			RelaxngPattern p = null;
-			try {
-				p = RelaxngPattern.Read (xtr);
-				p.Compile ();
-				} catch (Exception ex) {
-					Console.WriteLine ("Invalidated grammar: " + di.Name + " : " + ex.Message);
-					continue;
-			} finally {
-				xtr.Close ();
-			}
-
-
-			// Instance validation
-			foreach (FileInfo inst in di.GetFiles ("*.xml")) {
-				try {
-					RelaxngValidatingReader vr = new RelaxngValidatingReader (new XmlTextReader (inst.FullName), p);
-					if (skip_error)
-						vr.InvalidNodeFound += RelaxngValidatingReader.IgnoreError;
-					while (!vr.EOF)
-						vr.Read ();
-					if (inst.Name.IndexOf ("i.") >= 0 && !skip_error)
-						Console.WriteLine ("Incorrectly validated instance: " + di.Name + "/" + inst.Name);
-				} catch (RelaxngException ex) {
-					string path = di.Name + "/" + inst.Name;
-					if (skip_error)
-						Console.WriteLine ("Failed to skip error : " + path + ex.Message);
-					if (inst.Name.IndexOf ("i.") >= 0)
-						continue;
-					Console.WriteLine ("Invalidated instance: " + path + " : " + ex.Message);
-				}
-			}
-		}
-	}
-}
+using System;
+using System.IO;
+using System.Xml;
+using Commons.Xml.Relaxng;
+using Commons.Xml.Relaxng.Derivative;
+
+public class Test
+{
+	static char SEP = Path.DirectorySeparatorChar;
+	static bool skip_error = true;
+
+	public static void Main (string [] args)
+	{
+		if (args.Length > 0 && args [0] == "--skip-error")
+			skip_error = true;
+
+Console.WriteLine ("Started:  " + DateTime.Now.ToString ("yyyy-MM-dd HH:mm:ss.fff"));
+		RunTest ();
+Console.WriteLine ("Finished: " + DateTime.Now.ToString ("yyyy-MM-dd HH:mm:ss.fff"));
+	}
+
+	static void RunTest ()
+	{
+		foreach (DirectoryInfo di in new DirectoryInfo (@"relax-ng").GetDirectories ()) {
+			XmlTextReader xtr = null;
+			FileInfo fi = new FileInfo (di.FullName + "/i.rng");
+			// Invalid grammar case:
+			if (fi.Exists) {
+				xtr = new XmlTextReader (fi.FullName);
+				try {
+					RelaxngPattern.Read (xtr).Compile ();
+					Console.WriteLine ("Expected error: " + di.Name);
+				} catch (RelaxngException ex) {
+				} catch (XmlException ex) {
+				} catch (ArgumentNullException ex) {
+				} catch (UriFormatException ex) {
+				} catch (Exception ex) {
+					Console.WriteLine ("Unexpected error type : " + di.Name + " : " + ex.Message);
+				} finally {
+					xtr.Close ();
+				}
+				continue;
+			}
+
+			// Valid grammar case:
+			xtr = new XmlTextReader (di.FullName + "/c.rng");
+			RelaxngPattern p = null;
+			try {
+				p = RelaxngPattern.Read (xtr);
+				p.Compile ();
+				} catch (Exception ex) {
+					Console.WriteLine ("Invalidated grammar: " + di.Name + " : " + ex.Message);
+					continue;
+			} finally {
+				xtr.Close ();
+			}
+
+
+			// Instance validation
+			foreach (FileInfo inst in di.GetFiles ("*.xml")) {
+				try {
+					RelaxngValidatingReader vr = new RelaxngValidatingReader (new XmlTextReader (inst.FullName), p);
+					if (skip_error)
+						vr.InvalidNodeFound += RelaxngValidatingReader.IgnoreError;
+					while (!vr.EOF)
+						vr.Read ();
+					if (inst.Name.IndexOf ("i.") >= 0 && !skip_error)
+						Console.WriteLine ("Incorrectly validated instance: " + di.Name + "/" + inst.Name);
+				} catch (RelaxngException ex) {
+					string path = di.Name + "/" + inst.Name;
+					if (skip_error)
+						Console.WriteLine ("Failed to skip error : " + path + ex.Message);
+					if (inst.Name.IndexOf ("i.") >= 0)
+						continue;
+					Console.WriteLine ("Invalidated instance: " + path + " : " + ex.Message);
+				}
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/Assembly/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/Assembly/AssemblyInfo.cs
@@ -19,35 +19,35 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-//
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-//
-[assembly: AssemblyTitle("")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]		
-
-//
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("1.0.0.0")]
-
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("ibm.pub")]
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly: AssemblyTitle("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]		
+
+//
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("1.0.0.0")]
+
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("ibm.pub")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ClientUtils.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ClientUtils.cs
@@ -29,27 +29,27 @@ namespace IBM.Data.DB2
 
 		#region DB2CheckReturn
 
-		public static void DB2CheckReturn(short sqlRet, short handleType, IntPtr handle, string message, DB2Connection connection)
-		{
-			switch (sqlRet) 
-			{
-				case DB2Constants.SQL_SUCCESS_WITH_INFO:
-					if(connection != null)
-					{
-						connection.OnInfoMessage(handleType, handle);
-					}
-					goto case DB2Constants.SQL_SUCCESS;
-				case DB2Constants.SQL_SUCCESS:
-				case DB2Constants.SQL_NO_DATA:
-					return;
-
-				case DB2Constants.SQL_INVALID_HANDLE:
-					throw new ArgumentException("Invalid handle");
-
-				default:
-				case DB2Constants.SQL_ERROR:
-					throw new DB2Exception(handleType, handle, message);
-			}
+		public static void DB2CheckReturn(short sqlRet, short handleType, IntPtr handle, string message, DB2Connection connection)
+		{
+			switch (sqlRet) 
+			{
+				case DB2Constants.SQL_SUCCESS_WITH_INFO:
+					if(connection != null)
+					{
+						connection.OnInfoMessage(handleType, handle);
+					}
+					goto case DB2Constants.SQL_SUCCESS;
+				case DB2Constants.SQL_SUCCESS:
+				case DB2Constants.SQL_NO_DATA:
+					return;
+
+				case DB2Constants.SQL_INVALID_HANDLE:
+					throw new ArgumentException("Invalid handle");
+
+				default:
+				case DB2Constants.SQL_ERROR:
+					throw new DB2Exception(handleType, handle, message);
+			}
 		}
 		public static void DB2CheckReturn(short sqlRet, short handleType, IntPtr handle, string message)
 		{
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Command.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Command.cs
@@ -31,21 +31,21 @@ namespace IBM.Data.DB2
 	{
 		#region Private data members
 		
-		private WeakReference refDataReader;
-		private string commandText;
-		private CommandType commandType = CommandType.Text;
-		private DB2Connection db2Conn;
-		private DB2Transaction db2Trans;
-		private int commandTimeout = 30;
-		private bool prepared = false;
-		private bool binded = false;
-		private IntPtr hwndStmt = IntPtr.Zero;  //Our statement handle
-		private DB2ParameterCollection parameters = new DB2ParameterCollection();
-		private bool disposed = false;
-		private bool statementOpen;
-		private CommandBehavior previousBehavior;
-		private UpdateRowSource updatedRowSource = UpdateRowSource.Both;
-		private IntPtr statementParametersMemory;
+		private WeakReference refDataReader;
+		private string commandText;
+		private CommandType commandType = CommandType.Text;
+		private DB2Connection db2Conn;
+		private DB2Transaction db2Trans;
+		private int commandTimeout = 30;
+		private bool prepared = false;
+		private bool binded = false;
+		private IntPtr hwndStmt = IntPtr.Zero;  //Our statement handle
+		private DB2ParameterCollection parameters = new DB2ParameterCollection();
+		private bool disposed = false;
+		private bool statementOpen;
+		private CommandBehavior previousBehavior;
+		private UpdateRowSource updatedRowSource = UpdateRowSource.Both;
+		private IntPtr statementParametersMemory;
 		private int statementParametersMemorySize;
 
 		#endregion
@@ -65,104 +65,104 @@ namespace IBM.Data.DB2
 		{
 			db2Conn = con;
 			commandText = commandStr;
-			if(con != null)
-			{
-				con.AddCommand(this);
+			if(con != null)
+			{
+				con.AddCommand(this);
 			}
 		}
 		public DB2Command (string commandStr, DB2Connection con, DB2Transaction trans)
 		{
-			commandText = commandStr;
-			db2Conn = con;
-			db2Trans = trans;
-			if(con != null)
-			{
-				con.AddCommand(this);
-			}
-		}
-		#endregion
-
-		#region Dispose
-		public new void  Dispose()
-		{
-			Dispose(true);
-			GC.SuppressFinalize(this);
-		}
-
-		protected override void Dispose(bool disposing)
-		{
-			if(!disposed) 
-			{
-				if(disposing)
-				{
-					ConnectionClosed();
-					if(db2Conn != null)
-					{
-						db2Conn.RemoveCommand(this);
-						db2Conn = null;
-					}
-				}
-				if(statementParametersMemory != IntPtr.Zero)
-				{
-					Marshal.FreeHGlobal(statementParametersMemory);
-					statementParametersMemory = IntPtr.Zero;
-				}
-			}
-			base.Dispose(disposing);
-			disposed = true;
-		}
-
-
-		~DB2Command()
-		{
-			Dispose(false);
-		}
-
-		internal void DataReaderClosed()
-		{
-			CloseStatementHandle(false);
-			if((previousBehavior & CommandBehavior.CloseConnection) != 0)
-				Connection.Close();
-			refDataReader = null;
-		}
-
-		private void CloseStatementHandle(bool dispose)
-		{
-			if(hwndStmt != IntPtr.Zero)
-			{
-				if(statementOpen)
-				{
-					short sqlRet = DB2CLIWrapper.SQLFreeStmt(hwndStmt, DB2Constants.SQL_CLOSE);
-				}
-				if((!prepared && statementOpen) ||
-					dispose)
-				{
-					short sqlRet = DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_STMT, hwndStmt);
-
-					hwndStmt = IntPtr.Zero;
-					prepared = false;
-				}
-				statementOpen = false;
-			}
-		}
-
-		internal void ConnectionClosed()
-		{
-			DB2DataReader reader = null;
-			if((refDataReader != null) && refDataReader.IsAlive)
-			{
-				reader = (DB2DataReader)refDataReader.Target;
-			}
-			if((reader != null) && refDataReader.IsAlive)
-			{
-				reader.Dispose();
-				refDataReader = null;
-			}
-			CloseStatementHandle(true);
-
-			db2Trans = null;
-		}
-
+			commandText = commandStr;
+			db2Conn = con;
+			db2Trans = trans;
+			if(con != null)
+			{
+				con.AddCommand(this);
+			}
+		}
+		#endregion
+
+		#region Dispose
+		public new void  Dispose()
+		{
+			Dispose(true);
+			GC.SuppressFinalize(this);
+		}
+
+		protected override void Dispose(bool disposing)
+		{
+			if(!disposed) 
+			{
+				if(disposing)
+				{
+					ConnectionClosed();
+					if(db2Conn != null)
+					{
+						db2Conn.RemoveCommand(this);
+						db2Conn = null;
+					}
+				}
+				if(statementParametersMemory != IntPtr.Zero)
+				{
+					Marshal.FreeHGlobal(statementParametersMemory);
+					statementParametersMemory = IntPtr.Zero;
+				}
+			}
+			base.Dispose(disposing);
+			disposed = true;
+		}
+
+
+		~DB2Command()
+		{
+			Dispose(false);
+		}
+
+		internal void DataReaderClosed()
+		{
+			CloseStatementHandle(false);
+			if((previousBehavior & CommandBehavior.CloseConnection) != 0)
+				Connection.Close();
+			refDataReader = null;
+		}
+
+		private void CloseStatementHandle(bool dispose)
+		{
+			if(hwndStmt != IntPtr.Zero)
+			{
+				if(statementOpen)
+				{
+					short sqlRet = DB2CLIWrapper.SQLFreeStmt(hwndStmt, DB2Constants.SQL_CLOSE);
+				}
+				if((!prepared && statementOpen) ||
+					dispose)
+				{
+					short sqlRet = DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_STMT, hwndStmt);
+
+					hwndStmt = IntPtr.Zero;
+					prepared = false;
+				}
+				statementOpen = false;
+			}
+		}
+
+		internal void ConnectionClosed()
+		{
+			DB2DataReader reader = null;
+			if((refDataReader != null) && refDataReader.IsAlive)
+			{
+				reader = (DB2DataReader)refDataReader.Target;
+			}
+			if((reader != null) && refDataReader.IsAlive)
+			{
+				reader.Dispose();
+				refDataReader = null;
+			}
+			CloseStatementHandle(true);
+
+			db2Trans = null;
+		}
+
 		#endregion
 
 		#region SelfDescribe property
@@ -206,18 +206,18 @@ namespace IBM.Data.DB2
 		///
 		/// The Timeout property states how long we wait for results to return
 		/// 
-		public int CommandTimeout
-		{
-			get
-			{
-				return commandTimeout;
-			}
-			set 
-			{
-				commandTimeout = value;
-				if(hwndStmt != IntPtr.Zero)
-					SetStatementTimeout();
-			}
+		public int CommandTimeout
+		{
+			get
+			{
+				return commandTimeout;
+			}
+			set 
+			{
+				commandTimeout = value;
+				if(hwndStmt != IntPtr.Zero)
+					SetStatementTimeout();
+			}
 		}
 		#endregion
 
@@ -252,24 +252,24 @@ namespace IBM.Data.DB2
 			}
 		}
 
-		public DB2Connection Connection
-		{
-			get
-			{
-				return db2Conn;
-			}
-			set
-			{
-				if(db2Conn != null)
-				{
-					db2Conn.RemoveCommand(this);
-				}
-				db2Conn = value;
-				if(db2Conn != null)
-				{
-					db2Conn.AddCommand(this);
-				}
-			}
+		public DB2Connection Connection
+		{
+			get
+			{
+				return db2Conn;
+			}
+			set
+			{
+				if(db2Conn != null)
+				{
+					db2Conn.RemoveCommand(this);
+				}
+				db2Conn = value;
+				if(db2Conn != null)
+				{
+					db2Conn.AddCommand(this);
+				}
+			}
 		}
 		#endregion
 
@@ -309,25 +309,25 @@ namespace IBM.Data.DB2
 			}
 		}
 
-		public DB2Transaction Transaction
-		{
-			get
-			{
-				return db2Trans;
-			}
-			set
-			{
-				db2Trans = value;
-			}
+		public DB2Transaction Transaction
+		{
+			get
+			{
+				return db2Trans;
+			}
+			set
+			{
+				db2Trans = value;
+			}
 		}
 		#endregion
 
 		#region UpdatedRowSource property
 
-		public UpdateRowSource UpdatedRowSource	
-		{
-			get { return updatedRowSource; }
-			set { updatedRowSource = value; }
+		public UpdateRowSource UpdatedRowSource	
+		{
+			get { return updatedRowSource; }
+			set { updatedRowSource = value; }
 		}
 		#endregion
 
@@ -346,23 +346,23 @@ namespace IBM.Data.DB2
 
 		#region AllocateStatement function
 
-		internal void AllocateStatement(string location)
-		{
-			if (db2Conn.DBHandle.ToInt32() == 0) return;
-			short sqlRet;
-			sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_STMT, db2Conn.DBHandle, out hwndStmt);
-			if ((sqlRet != DB2Constants.SQL_SUCCESS) && (sqlRet != DB2Constants.SQL_SUCCESS_WITH_INFO))
-				throw new DB2Exception(DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, location +": Unable to allocate statement handle.");
-
-			parameters.HwndStmt = hwndStmt;
-
-			SetStatementTimeout();
-		}
-
-		private void SetStatementTimeout()
-		{
-			short sqlRet = DB2CLIWrapper.SQLSetStmtAttr(hwndStmt, DB2Constants.SQL_ATTR_QUERY_TIMEOUT, new IntPtr(commandTimeout), 0);
-			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Set statement timeout.", db2Conn);
+		internal void AllocateStatement(string location)
+		{
+			if (db2Conn.DBHandle.ToInt32() == 0) return;
+			short sqlRet;
+			sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_STMT, db2Conn.DBHandle, out hwndStmt);
+			if ((sqlRet != DB2Constants.SQL_SUCCESS) && (sqlRet != DB2Constants.SQL_SUCCESS_WITH_INFO))
+				throw new DB2Exception(DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, location +": Unable to allocate statement handle.");
+
+			parameters.HwndStmt = hwndStmt;
+
+			SetStatementTimeout();
+		}
+
+		private void SetStatementTimeout()
+		{
+			short sqlRet = DB2CLIWrapper.SQLSetStmtAttr(hwndStmt, DB2Constants.SQL_ATTR_QUERY_TIMEOUT, new IntPtr(commandTimeout), 0);
+			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Set statement timeout.", db2Conn);
 		}
 		#endregion
 
@@ -370,13 +370,13 @@ namespace IBM.Data.DB2
 		/// <summary>
 		/// Attempt to cancel an executing command
 		/// </summary>
-		public void Cancel()
-		{
-			if(hwndStmt == IntPtr.Zero)
-			{
-				throw new InvalidOperationException("Nothing to Cancel.");
-			}
-			DB2CLIWrapper.SQLCancel(hwndStmt);
+		public void Cancel()
+		{
+			if(hwndStmt == IntPtr.Zero)
+			{
+				throw new InvalidOperationException("Nothing to Cancel.");
+			}
+			DB2CLIWrapper.SQLCancel(hwndStmt);
 		}
 		#endregion
 
@@ -392,135 +392,135 @@ namespace IBM.Data.DB2
 
 		#region ExecuteNonQuery
 
-		public int ExecuteNonQuery()
-		{
-			ExecuteNonQueryInternal(CommandBehavior.Default);
-
-			int numRows;
-
-			//How many rows affected.  numRows will be -1 if we aren't dealing with an Insert, Delete or Update, or if the statement did not execute successfully
-			short sqlRet = DB2CLIWrapper.SQLRowCount(hwndStmt, out numRows);
-			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecDirect error.", db2Conn);
-
-			do
-			{
-				sqlRet = DB2CLIWrapper.SQLMoreResults(this.hwndStmt);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "DB2ClientDataReader - SQLMoreResults", db2Conn);
-			} while(sqlRet != DB2Constants.SQL_NO_DATA_FOUND);
-
-			CloseStatementHandle(false);
-			
-			return numRows;
-		}
-
-		public void ExecuteNonQueryInternal(CommandBehavior behavior)
-		{
-			short sqlRet;
-
-			if(prepared && binded)
-			{
-				sqlRet = DB2CLIWrapper.SQLExecute(hwndStmt);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecute error.", db2Conn);
-				return;
-			}
-
-			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
-				throw new InvalidOperationException("Prepare needs an open connection");
-			if((refDataReader != null) &&
-				(refDataReader.IsAlive))
-				throw new InvalidOperationException("There is already an open DataReader associated with this Connection which must be closed first.");
-			DB2Transaction connectionTransaction = null;
-			if(db2Conn.WeakRefTransaction != null)
-				connectionTransaction = (DB2Transaction)db2Conn.WeakRefTransaction.Target;
-			if(!Object.ReferenceEquals(connectionTransaction, Transaction))
-			{
-				if(Transaction == null)
-					throw new InvalidOperationException("A transaction was started in the connection, but the command doesn't specify a transaction");
-				throw new InvalidOperationException("The transaction specified at the connection doesn't belong to the connection");
-			}
-
-			if (hwndStmt == IntPtr.Zero)
-			{
-				AllocateStatement("InternalExecuteNonQuery");
-				previousBehavior = 0;
-			}
-			if(previousBehavior != behavior)
-			{
-				if(((previousBehavior ^ behavior) & CommandBehavior.SchemaOnly) != 0)
-				{
-					sqlRet = DB2CLIWrapper.SQLSetStmtAttr(hwndStmt, DB2Constants.SQL_ATTR_DEFERRED_PREPARE, 
-						new IntPtr((behavior & CommandBehavior.SchemaOnly) != 0 ? 0 : 1), 0);
-					// TODO: don't check. what if it is not supported???
-					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Defered prepare.", db2Conn);
-
-					previousBehavior = (previousBehavior & ~CommandBehavior.SchemaOnly) | (behavior & CommandBehavior.SchemaOnly);
-				}
-				if(((previousBehavior ^ behavior) & CommandBehavior.SingleRow) != 0)
-				{
-					sqlRet = DB2CLIWrapper.SQLSetStmtAttr(hwndStmt, DB2Constants.SQL_ATTR_MAX_ROWS, 
-						new IntPtr((behavior & CommandBehavior.SingleRow) == 0 ? 0 : 1), 0);
-					// TODO: don't check. what if it is not supported???
-					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Set max rows", db2Conn);
-
-					previousBehavior = (previousBehavior & ~CommandBehavior.SingleRow) | (behavior & CommandBehavior.SingleRow);
-				}
-				previousBehavior = behavior;
-			}
-			if((Transaction == null) &&
-				!db2Conn.openConnection.autoCommit)
-			{
-				sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_AUTOCOMMIT, new IntPtr(DB2Constants.SQL_AUTOCOMMIT_ON), 0);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting AUTOCOMMIT ON in transaction CTOR.", db2Conn);
-				db2Conn.openConnection.autoCommit = true;
-
-				sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_TXN_ISOLATION, new IntPtr(DB2Constants.SQL_TXN_READ_COMMITTED), 0);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting isolation level.", db2Conn);
-			}
-
-
-			if ((commandText == null) ||(commandText.Length == 0))
-				throw new InvalidOperationException("Command string is empty");
-				
-			if(CommandType.StoredProcedure == commandType && !commandText.StartsWith("CALL "))
-				commandText = "CALL " + commandText + " ()";
-			
-			if((behavior & CommandBehavior.SchemaOnly) != 0)
-			{
-				if(!prepared)
-				{
-					Prepare();
-				}
-			}
-			else
-			{
-				if(statementParametersMemory != IntPtr.Zero)
-				{
-					Marshal.FreeHGlobal(statementParametersMemory);
-					statementParametersMemory = IntPtr.Zero;
-				}
-
-				BindParams();
-				
-				if (prepared)
-				{
-					sqlRet = DB2CLIWrapper.SQLExecute(hwndStmt);
-					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecute error.", db2Conn);
-				}
-				else
-				{
-					sqlRet = DB2CLIWrapper.SQLExecDirect(hwndStmt, commandText, commandText.Length);
-					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecDirect error.", db2Conn);
-				}
-				statementOpen = true;
-
-				parameters.GetOutValues();
-
-				if(statementParametersMemory != IntPtr.Zero)
-				{
-					Marshal.FreeHGlobal(statementParametersMemory);
-					statementParametersMemory = IntPtr.Zero;
-				}
-			}
+		public int ExecuteNonQuery()
+		{
+			ExecuteNonQueryInternal(CommandBehavior.Default);
+
+			int numRows;
+
+			//How many rows affected.  numRows will be -1 if we aren't dealing with an Insert, Delete or Update, or if the statement did not execute successfully
+			short sqlRet = DB2CLIWrapper.SQLRowCount(hwndStmt, out numRows);
+			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecDirect error.", db2Conn);
+
+			do
+			{
+				sqlRet = DB2CLIWrapper.SQLMoreResults(this.hwndStmt);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "DB2ClientDataReader - SQLMoreResults", db2Conn);
+			} while(sqlRet != DB2Constants.SQL_NO_DATA_FOUND);
+
+			CloseStatementHandle(false);
+			
+			return numRows;
+		}
+
+		public void ExecuteNonQueryInternal(CommandBehavior behavior)
+		{
+			short sqlRet;
+
+			if(prepared && binded)
+			{
+				sqlRet = DB2CLIWrapper.SQLExecute(hwndStmt);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecute error.", db2Conn);
+				return;
+			}
+
+			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
+				throw new InvalidOperationException("Prepare needs an open connection");
+			if((refDataReader != null) &&
+				(refDataReader.IsAlive))
+				throw new InvalidOperationException("There is already an open DataReader associated with this Connection which must be closed first.");
+			DB2Transaction connectionTransaction = null;
+			if(db2Conn.WeakRefTransaction != null)
+				connectionTransaction = (DB2Transaction)db2Conn.WeakRefTransaction.Target;
+			if(!Object.ReferenceEquals(connectionTransaction, Transaction))
+			{
+				if(Transaction == null)
+					throw new InvalidOperationException("A transaction was started in the connection, but the command doesn't specify a transaction");
+				throw new InvalidOperationException("The transaction specified at the connection doesn't belong to the connection");
+			}
+
+			if (hwndStmt == IntPtr.Zero)
+			{
+				AllocateStatement("InternalExecuteNonQuery");
+				previousBehavior = 0;
+			}
+			if(previousBehavior != behavior)
+			{
+				if(((previousBehavior ^ behavior) & CommandBehavior.SchemaOnly) != 0)
+				{
+					sqlRet = DB2CLIWrapper.SQLSetStmtAttr(hwndStmt, DB2Constants.SQL_ATTR_DEFERRED_PREPARE, 
+						new IntPtr((behavior & CommandBehavior.SchemaOnly) != 0 ? 0 : 1), 0);
+					// TODO: don't check. what if it is not supported???
+					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Defered prepare.", db2Conn);
+
+					previousBehavior = (previousBehavior & ~CommandBehavior.SchemaOnly) | (behavior & CommandBehavior.SchemaOnly);
+				}
+				if(((previousBehavior ^ behavior) & CommandBehavior.SingleRow) != 0)
+				{
+					sqlRet = DB2CLIWrapper.SQLSetStmtAttr(hwndStmt, DB2Constants.SQL_ATTR_MAX_ROWS, 
+						new IntPtr((behavior & CommandBehavior.SingleRow) == 0 ? 0 : 1), 0);
+					// TODO: don't check. what if it is not supported???
+					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Set max rows", db2Conn);
+
+					previousBehavior = (previousBehavior & ~CommandBehavior.SingleRow) | (behavior & CommandBehavior.SingleRow);
+				}
+				previousBehavior = behavior;
+			}
+			if((Transaction == null) &&
+				!db2Conn.openConnection.autoCommit)
+			{
+				sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_AUTOCOMMIT, new IntPtr(DB2Constants.SQL_AUTOCOMMIT_ON), 0);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting AUTOCOMMIT ON in transaction CTOR.", db2Conn);
+				db2Conn.openConnection.autoCommit = true;
+
+				sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_TXN_ISOLATION, new IntPtr(DB2Constants.SQL_TXN_READ_COMMITTED), 0);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting isolation level.", db2Conn);
+			}
+
+
+			if ((commandText == null) ||(commandText.Length == 0))
+				throw new InvalidOperationException("Command string is empty");
+				
+			if(CommandType.StoredProcedure == commandType && !commandText.StartsWith("CALL "))
+				commandText = "CALL " + commandText + " ()";
+			
+			if((behavior & CommandBehavior.SchemaOnly) != 0)
+			{
+				if(!prepared)
+				{
+					Prepare();
+				}
+			}
+			else
+			{
+				if(statementParametersMemory != IntPtr.Zero)
+				{
+					Marshal.FreeHGlobal(statementParametersMemory);
+					statementParametersMemory = IntPtr.Zero;
+				}
+
+				BindParams();
+				
+				if (prepared)
+				{
+					sqlRet = DB2CLIWrapper.SQLExecute(hwndStmt);
+					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecute error.", db2Conn);
+				}
+				else
+				{
+					sqlRet = DB2CLIWrapper.SQLExecDirect(hwndStmt, commandText, commandText.Length);
+					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecDirect error.", db2Conn);
+				}
+				statementOpen = true;
+
+				parameters.GetOutValues();
+
+				if(statementParametersMemory != IntPtr.Zero)
+				{
+					Marshal.FreeHGlobal(statementParametersMemory);
+					statementParametersMemory = IntPtr.Zero;
+				}
+			}
 		}
 		#endregion
 
@@ -528,34 +528,34 @@ namespace IBM.Data.DB2
 		///
 		///ExecuteReader
 		///
-		IDataReader IDbCommand.ExecuteReader()
-		{
-			return ExecuteReader(CommandBehavior.Default);
-		}
-
-		IDataReader IDbCommand.ExecuteReader(CommandBehavior behavior)
-		{
-			return ExecuteReader(behavior);
-		}
-
-		public DB2DataReader ExecuteReader()
-		{
-			return ExecuteReader(CommandBehavior.Default);
-		}
-
-		public DB2DataReader ExecuteReader(CommandBehavior behavior)
-		{
-			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
-				throw new InvalidOperationException("Prepare needs an open connection");
-
-			DB2DataReader reader;
-			
-			ExecuteNonQueryInternal(behavior);
-			reader = new DB2DataReader(db2Conn, this, behavior);
-			
-			refDataReader = new WeakReference(reader);
-
-			return reader;
+		IDataReader IDbCommand.ExecuteReader()
+		{
+			return ExecuteReader(CommandBehavior.Default);
+		}
+
+		IDataReader IDbCommand.ExecuteReader(CommandBehavior behavior)
+		{
+			return ExecuteReader(behavior);
+		}
+
+		public DB2DataReader ExecuteReader()
+		{
+			return ExecuteReader(CommandBehavior.Default);
+		}
+
+		public DB2DataReader ExecuteReader(CommandBehavior behavior)
+		{
+			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
+				throw new InvalidOperationException("Prepare needs an open connection");
+
+			DB2DataReader reader;
+			
+			ExecuteNonQueryInternal(behavior);
+			reader = new DB2DataReader(db2Conn, this, behavior);
+			
+			refDataReader = new WeakReference(reader);
+
+			return reader;
 		}
 		#endregion
 
@@ -563,102 +563,102 @@ namespace IBM.Data.DB2
 		///
 		/// ExecuteScalar
 		/// 
-		public object ExecuteScalar()
-		{
-			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
-				throw new InvalidOperationException("Prepare needs an open connection");
-
-			using(DB2DataReader reader = ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.SingleRow))
-			{
-				if(reader.Read() && (reader.FieldCount > 0))
-				{
-					return reader[0];
-				}
-			}
-			return null;
+		public object ExecuteScalar()
+		{
+			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
+				throw new InvalidOperationException("Prepare needs an open connection");
+
+			using(DB2DataReader reader = ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.SingleRow))
+			{
+				if(reader.Read() && (reader.FieldCount > 0))
+				{
+					return reader[0];
+				}
+			}
+			return null;
 		}
 		#endregion
 
 		#region Prepare ()
-
-		public void Prepare ()
-		{
-			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
-				throw new InvalidOperationException("Prepare needs an open connection");
-
-			CloseStatementHandle(false);
-			if (hwndStmt == IntPtr.Zero)
-			{
-				AllocateStatement("InternalExecuteNonQuery");
-			}
-
-			short sqlRet = 0;
-
-			IntPtr numParams = IntPtr.Zero;
-			sqlRet = DB2CLIWrapper.SQLPrepare(hwndStmt, commandText, commandText.Length);
-			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLPrepare error.", db2Conn);
-			
-			
-			statementOpen = true;
-			prepared=true;
+
+		public void Prepare ()
+		{
+			if((db2Conn == null) || (db2Conn.State != ConnectionState.Open))
+				throw new InvalidOperationException("Prepare needs an open connection");
+
+			CloseStatementHandle(false);
+			if (hwndStmt == IntPtr.Zero)
+			{
+				AllocateStatement("InternalExecuteNonQuery");
+			}
+
+			short sqlRet = 0;
+
+			IntPtr numParams = IntPtr.Zero;
+			sqlRet = DB2CLIWrapper.SQLPrepare(hwndStmt, commandText, commandText.Length);
+			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLPrepare error.", db2Conn);
+			
+			
+			statementOpen = true;
+			prepared=true;
 		}
 		#endregion
 
-		private string AddCallParam( string _cmString)
-		{
-			if(_cmString.IndexOf("()") != -1)
-			{
-				return _cmString.Replace("()","(?)");
-			}
+		private string AddCallParam( string _cmString)
+		{
+			if(_cmString.IndexOf("()") != -1)
+			{
+				return _cmString.Replace("()","(?)");
+			}
 			return _cmString.Replace(")", ",?)");
 		}
 
-		private void BindParams()
+		private void BindParams()
 		{
-			if(parameters.Count > 0)
-			{
-				statementParametersMemorySize = 0;
-				int offset = 0;
-				short sqlRet;
-				for(int i = 0; i < parameters.Count; i++) 
-				{
-					if(commandType == CommandType.StoredProcedure)
-					{
-						commandText = AddCallParam(commandText);
-					}
-					DB2Parameter param = parameters[i];
-					param.CalculateRequiredmemory();
-					statementParametersMemorySize += param.requiredMemory + 8;
-					param.internalBuffer = Marshal.AllocHGlobal(param.requiredMemory);
-					offset += param.requiredMemory;
-					param.internalLengthBuffer = Marshal.AllocHGlobal(4);
-					Marshal.WriteInt32(param.internalLengthBuffer, param.requiredMemory);
-					sqlRet = param.Bind(this.hwndStmt, (short)(i + 1));
-					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Error binding parameter in DB2Command: ", db2Conn);
-				}
-				binded = true;
+			if(parameters.Count > 0)
+			{
+				statementParametersMemorySize = 0;
+				int offset = 0;
+				short sqlRet;
+				for(int i = 0; i < parameters.Count; i++) 
+				{
+					if(commandType == CommandType.StoredProcedure)
+					{
+						commandText = AddCallParam(commandText);
+					}
+					DB2Parameter param = parameters[i];
+					param.CalculateRequiredmemory();
+					statementParametersMemorySize += param.requiredMemory + 8;
+					param.internalBuffer = Marshal.AllocHGlobal(param.requiredMemory);
+					offset += param.requiredMemory;
+					param.internalLengthBuffer = Marshal.AllocHGlobal(4);
+					Marshal.WriteInt32(param.internalLengthBuffer, param.requiredMemory);
+					sqlRet = param.Bind(this.hwndStmt, (short)(i + 1));
+					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Error binding parameter in DB2Command: ", db2Conn);
+				}
+				binded = true;
 			}
 		}
 
-		#region ICloneable Members
-
-		object ICloneable.Clone()
-		{
-			DB2Command clone = new DB2Command();
-
-			clone.Connection = Connection;
-			clone.commandText = commandText;
-			clone.commandType = commandType;
-			clone.Transaction = db2Trans;
-			clone.commandTimeout = commandTimeout;
-			clone.updatedRowSource = updatedRowSource;
-			clone.parameters = new DB2ParameterCollection();
-			for(int i = 0; i < parameters.Count; i++)
-				clone.Parameters.Add(((ICloneable)parameters[i]).Clone());
-
-			return clone;
-		}
-
+		#region ICloneable Members
+
+		object ICloneable.Clone()
+		{
+			DB2Command clone = new DB2Command();
+
+			clone.Connection = Connection;
+			clone.commandText = commandText;
+			clone.commandType = commandType;
+			clone.Transaction = db2Trans;
+			clone.commandTimeout = commandTimeout;
+			clone.updatedRowSource = updatedRowSource;
+			clone.parameters = new DB2ParameterCollection();
+			for(int i = 0; i < parameters.Count; i++)
+				clone.Parameters.Add(((ICloneable)parameters[i]).Clone());
+
+			return clone;
+		}
+
 		#endregion
 	}
 }
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Connection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Connection.cs
@@ -34,11 +34,11 @@ namespace IBM.Data.DB2
 	{
 		#region private data members
 
-		private ArrayList refCommands;
-		private WeakReference refTransaction;
-		private DB2ConnectionSettings connectionSettings = null;
-		private int connectionTimeout;
-		internal DB2OpenConnection openConnection;
+		private ArrayList refCommands;
+		private WeakReference refTransaction;
+		private DB2ConnectionSettings connectionSettings = null;
+		private int connectionTimeout;
+		internal DB2OpenConnection openConnection;
 		private bool disposed = false;
 
 		#endregion
@@ -115,32 +115,32 @@ namespace IBM.Data.DB2
 		}
 		#endregion
 
-		#region events
-
-		public event DB2InfoMessageEventHandler InfoMessage;
-		public event StateChangeEventHandler StateChange;
-
-		internal void OnInfoMessage(short handleType, IntPtr handle)
-		{
-			if(InfoMessage != null)
-			{
-				// Don't get error information until we know for sure someone is listening
-				try
-				{
-					InfoMessage(this,
-						new DB2InfoMessageEventArgs(new DB2ErrorCollection(handleType, handle)));
-				}
-				catch(Exception)
-				{}
-			}
-		}
-
-		private void OnStateChange(StateChangeEventArgs args)
-		{
-			if(StateChange != null)
-				StateChange(this, args);
-		}
-
+		#region events
+
+		public event DB2InfoMessageEventHandler InfoMessage;
+		public event StateChangeEventHandler StateChange;
+
+		internal void OnInfoMessage(short handleType, IntPtr handle)
+		{
+			if(InfoMessage != null)
+			{
+				// Don't get error information until we know for sure someone is listening
+				try
+				{
+					InfoMessage(this,
+						new DB2InfoMessageEventArgs(new DB2ErrorCollection(handleType, handle)));
+				}
+				catch(Exception)
+				{}
+			}
+		}
+
+		private void OnStateChange(StateChangeEventArgs args)
+		{
+			if(StateChange != null)
+				StateChange(this, args);
+		}
+
 		#endregion
 		
 		#region DBHandle
@@ -172,87 +172,87 @@ namespace IBM.Data.DB2
 		}
 
 		public DB2Transaction BeginTransaction(IsolationLevel isolationL)
-		{
-			if ((refTransaction != null) && (refTransaction.IsAlive))
-				throw new InvalidOperationException("Cannot open another transaction");
-			if(State != ConnectionState.Open)
-				throw new InvalidOperationException("BeginTransaction needs an open connection");
-
-			if(refTransaction != null)
-			{
-				if(refTransaction.IsAlive)
-					throw new InvalidOperationException("Parallel transactions not supported");
-
-				openConnection.RollbackDeadTransaction();
-				refTransaction = null;
-			}
-			openConnection.transactionOpen = true;
-			DB2Transaction tran = new DB2Transaction(this, isolationL);
-			refTransaction = new WeakReference(tran);
-			return tran;
+		{
+			if ((refTransaction != null) && (refTransaction.IsAlive))
+				throw new InvalidOperationException("Cannot open another transaction");
+			if(State != ConnectionState.Open)
+				throw new InvalidOperationException("BeginTransaction needs an open connection");
+
+			if(refTransaction != null)
+			{
+				if(refTransaction.IsAlive)
+					throw new InvalidOperationException("Parallel transactions not supported");
+
+				openConnection.RollbackDeadTransaction();
+				refTransaction = null;
+			}
+			openConnection.transactionOpen = true;
+			DB2Transaction tran = new DB2Transaction(this, isolationL);
+			refTransaction = new WeakReference(tran);
+			return tran;
 		}
 
 		#endregion
 		
 		#region ChangeDatabase
-		unsafe public void ChangeDatabase(string newDBName)
-		{
-			if(connectionSettings == null)
-			{
-				throw new InvalidOperationException("No connection string");
-			}
-			this.Close();
-
-			SetConnectionString(connectionSettings.ConnectionString.Replace(connectionSettings.DatabaseAlias, newDBName));
-
-			this.Open();
+		unsafe public void ChangeDatabase(string newDBName)
+		{
+			if(connectionSettings == null)
+			{
+				throw new InvalidOperationException("No connection string");
+			}
+			this.Close();
+
+			SetConnectionString(connectionSettings.ConnectionString.Replace(connectionSettings.DatabaseAlias, newDBName));
+
+			this.Open();
 		}
 		#endregion
 
 		#region ReleaseObjectPool
-		public static void ReleaseObjectPool()
-		{
-			DB2Environment.Instance.Dispose();
+		public static void ReleaseObjectPool()
+		{
+			DB2Environment.Instance.Dispose();
 		}
 		#endregion
 		
 		#region Close
-		public void Close()
-		{
-			DB2Transaction transaction = null;
-			if(refTransaction != null)
-				transaction = (DB2Transaction)refTransaction.Target;
-			if((transaction != null) && refTransaction.IsAlive)
-			{
-				transaction.Dispose();
-			}
-			if(refCommands != null)
-			{
-				for(int i = 0; i < refCommands.Count; i++)
-				{
-					DB2Command command = null;
-					if(refCommands[i] != null)
-					{
-						command = (DB2Command)((WeakReference)refCommands[i]).Target;
-					}
-					if((command != null) && ((WeakReference)refCommands[i]).IsAlive)
-					{
-						try
-						{
-							command.ConnectionClosed();
-						}
-						catch{}
-					}
-					//?? refCommands[i] = null;
-				}
-			}
-
-			if(openConnection != null)
-			{
-				openConnection.Close();
-				openConnection = null;
-			}
-		}
+		public void Close()
+		{
+			DB2Transaction transaction = null;
+			if(refTransaction != null)
+				transaction = (DB2Transaction)refTransaction.Target;
+			if((transaction != null) && refTransaction.IsAlive)
+			{
+				transaction.Dispose();
+			}
+			if(refCommands != null)
+			{
+				for(int i = 0; i < refCommands.Count; i++)
+				{
+					DB2Command command = null;
+					if(refCommands[i] != null)
+					{
+						command = (DB2Command)((WeakReference)refCommands[i]).Target;
+					}
+					if((command != null) && ((WeakReference)refCommands[i]).IsAlive)
+					{
+						try
+						{
+							command.ConnectionClosed();
+						}
+						catch{}
+					}
+					//?? refCommands[i] = null;
+				}
+			}
+
+			if(openConnection != null)
+			{
+				openConnection.Close();
+				openConnection = null;
+			}
+		}
 
 		#endregion
 		
@@ -271,129 +271,129 @@ namespace IBM.Data.DB2
 		
 		#region Open
 
-		unsafe public void Open()
-		{
-			if(disposed)
-			{
-				throw new ObjectDisposedException("DB2Connection");
-			}
-
-			if (this.State == ConnectionState.Open || this.State == ConnectionState.Connecting || this.State == ConnectionState.Executing || this.State == ConnectionState.Fetching)
-			{
-				throw new InvalidOperationException("Connection already open");
-			}
-
-			try
-			{
-				openConnection = connectionSettings.GetRealOpenConnection(this);
-			}
-			catch (DB2Exception)
-			{
-				Close();
-				throw;
-			}
+		unsafe public void Open()
+		{
+			if(disposed)
+			{
+				throw new ObjectDisposedException("DB2Connection");
+			}
+
+			if (this.State == ConnectionState.Open || this.State == ConnectionState.Connecting || this.State == ConnectionState.Executing || this.State == ConnectionState.Fetching)
+			{
+				throw new InvalidOperationException("Connection already open");
+			}
+
+			try
+			{
+				openConnection = connectionSettings.GetRealOpenConnection(this);
+			}
+			catch (DB2Exception)
+			{
+				Close();
+				throw;
+			}
 		}
 		#endregion
 		
 		#region Dispose
-		public new void Dispose()
-		{
-			Dispose(true);
-			GC.SuppressFinalize(this);
-		}
-
-		protected override void Dispose(bool disposing)
-		{
-			if(!disposed) 
-			{
-				if(disposing)
-				{
-					// dispose managed resources
-					Close();
-				}
-			}
-			base.Dispose(disposing);
-			disposed = true;
-		}
-
-
-		~DB2Connection()
-		{
-			Dispose(false);
-		}
-		#endregion
-
-		private void CheckState()
-		{
-			if (ConnectionState.Closed == State)
-				throw new InvalidOperationException("Connection is currently closed.");
-		}
-
-		void SetConnectionString (string connectionString) 
-		{
-			if (State != ConnectionState.Closed)
-				throw new InvalidOperationException("Connection is not closed.");
-
-			this.connectionSettings = DB2ConnectionSettings.GetConnectionSettings(connectionString);
-		}
-
-		internal WeakReference WeakRefTransaction
-		{
-			get
-			{
-				return refTransaction;
-			}
-			set
-			{
-				refTransaction = value;
-			}
-
-		}
-
-		internal void AddCommand(DB2Command command)
-		{
-			if(refCommands == null)
-			{
-				refCommands = new ArrayList();
-			}
-			for(int i = 0; i < refCommands.Count; i++)
-			{
-				WeakReference reference = (WeakReference)refCommands[i];
-				if((reference == null) || !reference.IsAlive)
-				{
-					refCommands[i] = new WeakReference(command);
-					return;
-				}
-			}
-			refCommands.Add(new WeakReference(command));
-
-		}
-
-		internal void RemoveCommand(DB2Command command)
-		{
-			for(int i = 0; i < refCommands.Count; i++)
-			{
-				WeakReference reference = (WeakReference)refCommands[i];
-				if(object.ReferenceEquals(reference, command))
-				{
-					refCommands[i] = null;
-					return;
-				}
-			}
-		}
-
-		#region ICloneable Members
-
-		object ICloneable.Clone()
-		{
-			DB2Connection clone = new DB2Connection();
-
-			clone.connectionSettings = connectionSettings;
-			clone.connectionTimeout = connectionTimeout;
-			
-			return clone;
-		}
-
+		public new void Dispose()
+		{
+			Dispose(true);
+			GC.SuppressFinalize(this);
+		}
+
+		protected override void Dispose(bool disposing)
+		{
+			if(!disposed) 
+			{
+				if(disposing)
+				{
+					// dispose managed resources
+					Close();
+				}
+			}
+			base.Dispose(disposing);
+			disposed = true;
+		}
+
+
+		~DB2Connection()
+		{
+			Dispose(false);
+		}
+		#endregion
+
+		private void CheckState()
+		{
+			if (ConnectionState.Closed == State)
+				throw new InvalidOperationException("Connection is currently closed.");
+		}
+
+		void SetConnectionString (string connectionString) 
+		{
+			if (State != ConnectionState.Closed)
+				throw new InvalidOperationException("Connection is not closed.");
+
+			this.connectionSettings = DB2ConnectionSettings.GetConnectionSettings(connectionString);
+		}
+
+		internal WeakReference WeakRefTransaction
+		{
+			get
+			{
+				return refTransaction;
+			}
+			set
+			{
+				refTransaction = value;
+			}
+
+		}
+
+		internal void AddCommand(DB2Command command)
+		{
+			if(refCommands == null)
+			{
+				refCommands = new ArrayList();
+			}
+			for(int i = 0; i < refCommands.Count; i++)
+			{
+				WeakReference reference = (WeakReference)refCommands[i];
+				if((reference == null) || !reference.IsAlive)
+				{
+					refCommands[i] = new WeakReference(command);
+					return;
+				}
+			}
+			refCommands.Add(new WeakReference(command));
+
+		}
+
+		internal void RemoveCommand(DB2Command command)
+		{
+			for(int i = 0; i < refCommands.Count; i++)
+			{
+				WeakReference reference = (WeakReference)refCommands[i];
+				if(object.ReferenceEquals(reference, command))
+				{
+					refCommands[i] = null;
+					return;
+				}
+			}
+		}
+
+		#region ICloneable Members
+
+		object ICloneable.Clone()
+		{
+			DB2Connection clone = new DB2Connection();
+
+			clone.connectionSettings = connectionSettings;
+			clone.connectionTimeout = connectionTimeout;
+			
+			return clone;
+		}
+
 		#endregion
 
 	}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ConnectionPool.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ConnectionPool.cs
@@ -1,214 +1,214 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Text;
-using System.Threading;
-
-namespace IBM.Data.DB2
-{
-	/// <summary>
-	/// 
-	/// </summary>
-	/// <remarks>One connection pool per connectionstring</remarks>
-	internal sealed class DB2ConnectionPool
-	{
-		private ArrayList	openFreeConnections; // list of pooled connections sorted by age. First connection is present at index 'connectionsUsableOffset'
-		private Queue		openFreeMinimalAllocated;
-		private int			connectionsOpen;	// total number of connections open (in pool, an in use by application)
-		private int			connectionsInUse;	// total connection in use by application
-		private int			connectionsUsableOffset; // Offset to the first pooled connection in 'openFreeConnections'
-		private Timer		timer;
-		public string		databaseProductName;
-		public string		databaseVersion;
-		public int			majorVersion;
-		public int			minorVersion;
-
-		private DB2ConnectionSettings connectionSettings;
-
-		public DB2ConnectionPool(DB2ConnectionSettings connectionSettings)
-		{
-			this.connectionSettings = connectionSettings;
-			openFreeConnections = new ArrayList();
-		}
-
-		public DB2ConnectionSettings ConnectionSettings
-		{
-			get { return connectionSettings; }
-		}
-
-		public DB2OpenConnection GetOpenConnection(DB2Connection db2Conn)
-		{
-			DB2OpenConnection connection = null;
-			lock(openFreeConnections.SyncRoot)
-			{
-				if((connectionSettings.ConnectionPoolSizeMax > 0) &&
-					(connectionsOpen >= connectionSettings.ConnectionPoolSizeMax))
-				{
-					throw new ArgumentException("Maximum connections reached for connectionstring");
-				}
-
-				while(connectionsOpen > connectionsInUse)
-				{
-					connection = (DB2OpenConnection)openFreeConnections[openFreeConnections.Count - 1];
-					openFreeConnections.RemoveAt(openFreeConnections.Count - 1);
-
-					// check if connection is dead
-					int isDead;
-					short sqlRet = DB2CLIWrapper.SQLGetConnectAttr(connection.DBHandle, DB2Constants.SQL_ATTR_CONNECTION_DEAD, out isDead, 0, IntPtr.Zero);
-					if(((sqlRet == DB2Constants.SQL_SUCCESS_WITH_INFO) || (sqlRet == DB2Constants.SQL_SUCCESS)) &&
-						(isDead == DB2Constants.SQL_CD_FALSE))
-					{
-						connectionsInUse++;
-						break;
-					}
-					else
-					{
-						connectionsOpen--;
-						connection.Dispose();
-						connection = null;
-					}
-
-				}
-				if(connectionsOpen == connectionsInUse)
-				{
-					if(timer != null)
-					{
-						timer.Dispose();
-						timer = null;
-					}
-				}
-			}
-			if(connection == null)
-			{
-				openFreeConnections.Clear();
-				connectionsUsableOffset = 0;
-
-				connection = new DB2OpenConnection(connectionSettings, db2Conn);
-				connectionsOpen++;
-				connectionsInUse++;
-			}
-
-			return connection;
-		}
-
-		private void DisposeTimedoutConnections(object state)
-		{
-			lock(openFreeConnections.SyncRoot)
-			{
-				if(timer != null)
-				{
-					TimeSpan timeToDispose = TimeSpan.Zero;
-					DB2OpenConnection connection;
-					while(connectionsOpen > connectionsInUse)
-					{
-						connection = (DB2OpenConnection)openFreeConnections[connectionsUsableOffset];
-						timeToDispose = connection.poolDisposalTime.Subtract(DateTime.Now);
-						if((timeToDispose.Ticks < 0) ||								 // time to die
-							(timeToDispose > connectionSettings.ConnectionLifeTime)) // messing with system clock
-						{
-							connection.Dispose();
-							openFreeConnections[connectionsUsableOffset] = null;
-							connectionsOpen--;
-							connectionsUsableOffset++;
-						}
-						else
-						{
-							break;
-						}
-					}
-					if(connectionsOpen > connectionsInUse)
-					{
-						connection = (DB2OpenConnection)openFreeConnections[connectionsUsableOffset];
-						timer.Change(timeToDispose, new TimeSpan(-1));
-					}
-					else
-					{
-						timer.Dispose();
-						timer = null;
-					}
-				}
-				if((connectionsUsableOffset > (openFreeConnections.Capacity / 2)) &&
-					(connectionsOpen > connectionsInUse))
-				{
-					openFreeConnections.RemoveRange(0, connectionsUsableOffset); // cleanup once in a while
-					connectionsUsableOffset = 0;
-				}
-			}
-		}
-
-		public void AddToFreeConnections(DB2OpenConnection connection)
-		{
-			lock(openFreeConnections.SyncRoot)
-			{
-				connection.poolDisposalTime = DateTime.Now.Add(connectionSettings.ConnectionLifeTime);
-				if(timer == null)
-				{
-					timer = new Timer(new TimerCallback(DisposeTimedoutConnections), null, 
-						connectionSettings.ConnectionLifeTime, new TimeSpan(-1));
-				}
-				connectionsInUse--;
-				openFreeConnections.Add(connection);
-			}
-		}
-
-		public void OpenConnectionFinalized()
-		{
-			lock(openFreeConnections.SyncRoot)
-			{
-				connectionsOpen--;
-				connectionsInUse--;
-			}
-		}
-
-		/// <summary>
-		/// Find a specific connection pool
-		/// </summary>
-		/// <param name="connectionString"></param>
-		/// <returns></returns>
-		static public DB2ConnectionPool FindConnectionPool(string connectionString)
-		{
-			return (DB2ConnectionPool)DB2Environment.Instance.connectionPools[connectionString];
-		}
-
-		/// <summary>
-		/// Get a connection pool. If it doesn't exist yet, create it
-		/// </summary>
-		/// <param name="connectionSettings"></param>
-		/// <returns></returns>
-		static public DB2ConnectionPool GetConnectionPool(DB2ConnectionSettings connectionSettings)
-		{
-			DB2Environment environment = DB2Environment.Instance;
-
-			lock(environment.connectionPools.SyncRoot)
-			{
-				DB2ConnectionPool pool = (DB2ConnectionPool)environment.connectionPools[connectionSettings.ConnectionString];
-				if(pool == null)
-				{
-					pool = new DB2ConnectionPool(connectionSettings);
-					environment.connectionPools.Add(connectionSettings.ConnectionString, pool);
-				}
-				return pool;
-			}
-		}
-	}
-}
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Text;
+using System.Threading;
+
+namespace IBM.Data.DB2
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	/// <remarks>One connection pool per connectionstring</remarks>
+	internal sealed class DB2ConnectionPool
+	{
+		private ArrayList	openFreeConnections; // list of pooled connections sorted by age. First connection is present at index 'connectionsUsableOffset'
+		private Queue		openFreeMinimalAllocated;
+		private int			connectionsOpen;	// total number of connections open (in pool, an in use by application)
+		private int			connectionsInUse;	// total connection in use by application
+		private int			connectionsUsableOffset; // Offset to the first pooled connection in 'openFreeConnections'
+		private Timer		timer;
+		public string		databaseProductName;
+		public string		databaseVersion;
+		public int			majorVersion;
+		public int			minorVersion;
+
+		private DB2ConnectionSettings connectionSettings;
+
+		public DB2ConnectionPool(DB2ConnectionSettings connectionSettings)
+		{
+			this.connectionSettings = connectionSettings;
+			openFreeConnections = new ArrayList();
+		}
+
+		public DB2ConnectionSettings ConnectionSettings
+		{
+			get { return connectionSettings; }
+		}
+
+		public DB2OpenConnection GetOpenConnection(DB2Connection db2Conn)
+		{
+			DB2OpenConnection connection = null;
+			lock(openFreeConnections.SyncRoot)
+			{
+				if((connectionSettings.ConnectionPoolSizeMax > 0) &&
+					(connectionsOpen >= connectionSettings.ConnectionPoolSizeMax))
+				{
+					throw new ArgumentException("Maximum connections reached for connectionstring");
+				}
+
+				while(connectionsOpen > connectionsInUse)
+				{
+					connection = (DB2OpenConnection)openFreeConnections[openFreeConnections.Count - 1];
+					openFreeConnections.RemoveAt(openFreeConnections.Count - 1);
+
+					// check if connection is dead
+					int isDead;
+					short sqlRet = DB2CLIWrapper.SQLGetConnectAttr(connection.DBHandle, DB2Constants.SQL_ATTR_CONNECTION_DEAD, out isDead, 0, IntPtr.Zero);
+					if(((sqlRet == DB2Constants.SQL_SUCCESS_WITH_INFO) || (sqlRet == DB2Constants.SQL_SUCCESS)) &&
+						(isDead == DB2Constants.SQL_CD_FALSE))
+					{
+						connectionsInUse++;
+						break;
+					}
+					else
+					{
+						connectionsOpen--;
+						connection.Dispose();
+						connection = null;
+					}
+
+				}
+				if(connectionsOpen == connectionsInUse)
+				{
+					if(timer != null)
+					{
+						timer.Dispose();
+						timer = null;
+					}
+				}
+			}
+			if(connection == null)
+			{
+				openFreeConnections.Clear();
+				connectionsUsableOffset = 0;
+
+				connection = new DB2OpenConnection(connectionSettings, db2Conn);
+				connectionsOpen++;
+				connectionsInUse++;
+			}
+
+			return connection;
+		}
+
+		private void DisposeTimedoutConnections(object state)
+		{
+			lock(openFreeConnections.SyncRoot)
+			{
+				if(timer != null)
+				{
+					TimeSpan timeToDispose = TimeSpan.Zero;
+					DB2OpenConnection connection;
+					while(connectionsOpen > connectionsInUse)
+					{
+						connection = (DB2OpenConnection)openFreeConnections[connectionsUsableOffset];
+						timeToDispose = connection.poolDisposalTime.Subtract(DateTime.Now);
+						if((timeToDispose.Ticks < 0) ||								 // time to die
+							(timeToDispose > connectionSettings.ConnectionLifeTime)) // messing with system clock
+						{
+							connection.Dispose();
+							openFreeConnections[connectionsUsableOffset] = null;
+							connectionsOpen--;
+							connectionsUsableOffset++;
+						}
+						else
+						{
+							break;
+						}
+					}
+					if(connectionsOpen > connectionsInUse)
+					{
+						connection = (DB2OpenConnection)openFreeConnections[connectionsUsableOffset];
+						timer.Change(timeToDispose, new TimeSpan(-1));
+					}
+					else
+					{
+						timer.Dispose();
+						timer = null;
+					}
+				}
+				if((connectionsUsableOffset > (openFreeConnections.Capacity / 2)) &&
+					(connectionsOpen > connectionsInUse))
+				{
+					openFreeConnections.RemoveRange(0, connectionsUsableOffset); // cleanup once in a while
+					connectionsUsableOffset = 0;
+				}
+			}
+		}
+
+		public void AddToFreeConnections(DB2OpenConnection connection)
+		{
+			lock(openFreeConnections.SyncRoot)
+			{
+				connection.poolDisposalTime = DateTime.Now.Add(connectionSettings.ConnectionLifeTime);
+				if(timer == null)
+				{
+					timer = new Timer(new TimerCallback(DisposeTimedoutConnections), null, 
+						connectionSettings.ConnectionLifeTime, new TimeSpan(-1));
+				}
+				connectionsInUse--;
+				openFreeConnections.Add(connection);
+			}
+		}
+
+		public void OpenConnectionFinalized()
+		{
+			lock(openFreeConnections.SyncRoot)
+			{
+				connectionsOpen--;
+				connectionsInUse--;
+			}
+		}
+
+		/// <summary>
+		/// Find a specific connection pool
+		/// </summary>
+		/// <param name="connectionString"></param>
+		/// <returns></returns>
+		static public DB2ConnectionPool FindConnectionPool(string connectionString)
+		{
+			return (DB2ConnectionPool)DB2Environment.Instance.connectionPools[connectionString];
+		}
+
+		/// <summary>
+		/// Get a connection pool. If it doesn't exist yet, create it
+		/// </summary>
+		/// <param name="connectionSettings"></param>
+		/// <returns></returns>
+		static public DB2ConnectionPool GetConnectionPool(DB2ConnectionSettings connectionSettings)
+		{
+			DB2Environment environment = DB2Environment.Instance;
+
+			lock(environment.connectionPools.SyncRoot)
+			{
+				DB2ConnectionPool pool = (DB2ConnectionPool)environment.connectionPools[connectionSettings.ConnectionString];
+				if(pool == null)
+				{
+					pool = new DB2ConnectionPool(connectionSettings);
+					environment.connectionPools.Add(connectionSettings.ConnectionString, pool);
+				}
+				return pool;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ConnectionSettings.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ConnectionSettings.cs
@@ -1,202 +1,202 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace IBM.Data.DB2
-{
-	internal sealed class DB2ConnectionSettings
-	{
-		private string	 connectionString;
-		private string	 userName = "";
-		private string	 passWord = "";
-		private string	 databaseAlias = "";
-		private string	 server = "";
-		private bool	 pooling = true;
-		private TimeSpan connectTimeout = new TimeSpan(0, 0, 15);
-		private TimeSpan connectionLifeTime = new TimeSpan(0, 0, 15);	// 15 seconds
-		private int		 connectionPoolSizeMin = 0;
-		private int		 connectionPoolSizeMax = -1;	// no maximum
-
-		private DB2ConnectionPool pool;
-
-		private DB2ConnectionSettings(string connectionString)
-		{
-			this.connectionString = connectionString;
-			this.Parse();
-		}
-
-		public static DB2ConnectionSettings GetConnectionSettings(string connectionString)
-		{
-			DB2ConnectionPool pool = DB2ConnectionPool.FindConnectionPool(connectionString);
-			if(pool != null)
-			{
-				return pool.ConnectionSettings;
-			}
-			DB2ConnectionSettings settings = new DB2ConnectionSettings(connectionString);
-			if(settings.Pooling)
-			{
-				settings.pool = DB2ConnectionPool.GetConnectionPool(settings);
-			}
-			return settings;
-		}
-
-		public DB2OpenConnection GetRealOpenConnection(DB2Connection connection)
-		{
-			if(pool != null)
-			{
-				return pool.GetOpenConnection(connection);
-			}
-			else
-			{
-				return new DB2OpenConnection(this, connection);
-			}
-		}
-
-		public DB2ConnectionPool Pool
-		{
-			get { return pool; }
-		}
-
-		public string ConnectionString
-		{
-			get { return connectionString; }
-		}
-
-		public string UserName
-		{
-			get { return userName; }
-		}
-		
-		public string PassWord
-		{
-			get { return passWord; }
-		}
-
-		/// <summary>
-		/// database alias (for cataloged database)
-		/// </summary>
-		public string DatabaseAlias
-		{
-			get { return databaseAlias; }
-		}
-
-		/// <summary>
-		/// server name with optional port number for direct connection (<server name/ip address>[:<port>])
-		/// </summary>
-		public string Server
-		{
-			get { return server; }
-		}
-
-		public TimeSpan ConnectTimeout
-		{
-			get { return connectTimeout; }
-		}
-
-		/// <summary>
-		/// Connection pooling yes/no
-		/// </summary>
-		public bool Pooling
-		{
-			get { return pooling; }
-		}
-
-		public int ConnectionPoolSizeMin
-		{
-			get { return connectionPoolSizeMin; }
-		}
-
-		public int ConnectionPoolSizeMax
-		{
-			get { return connectionPoolSizeMin; }
-		}
-
-		public TimeSpan ConnectionLifeTime
-		{
-			get { return connectionLifeTime; }
-		}
-
-
-		/// <summary>
-		/// parsed according to IBM DB2 .NET data provider help
-		/// </summary>
-		public void Parse()
-		{
-			string[] parts = connectionString.Split(new char[]{';'});
-			foreach(string part in parts)
-			{
-				string[] pairs = part.Split(new char[]{'='});
-				switch(pairs[0].ToLower())
-				{
-					case "database":
-					case "dsn":
-						databaseAlias = pairs[1];
-						break;
-					case "uid":
-					case "user id":
-						userName = pairs[1];
-						break;
-					case "pwd":
-					case "password":
-						passWord = pairs[1];
-						break;
-					case "server":
-						server = pairs[1];
-						break;
-					case "pooling":
-						pooling = (pairs[1].ToLower() == "true") || (pairs[1]== "1");
-						break;
-					case "connect timeout":
-					case "timeout":
-					case "connection timeout":
-						connectTimeout = new TimeSpan(0, 0, int.Parse(pairs[1]));
-						break;
-					case "min pool size":
-						connectionPoolSizeMin = int.Parse(pairs[1]);
-						break;
-					case "max pool size":
-						connectionPoolSizeMax = int.Parse(pairs[1]);
-						break;
-					case "connection lifetime":
-						connectionLifeTime = new TimeSpan(0, 0, int.Parse(pairs[1]));
-						break;
-				}
-			}
-			if(connectionLifeTime.Ticks <= 0)
-			{
-				pooling = false;
-			}
-		}
-	
-		public override int GetHashCode()
-		{
-			return connectionString.GetHashCode ();
-		}
-	
-		public override bool Equals(object obj)
-		{
-			return connectionString.Equals (obj);
-		}
-	}
-}
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace IBM.Data.DB2
+{
+	internal sealed class DB2ConnectionSettings
+	{
+		private string	 connectionString;
+		private string	 userName = "";
+		private string	 passWord = "";
+		private string	 databaseAlias = "";
+		private string	 server = "";
+		private bool	 pooling = true;
+		private TimeSpan connectTimeout = new TimeSpan(0, 0, 15);
+		private TimeSpan connectionLifeTime = new TimeSpan(0, 0, 15);	// 15 seconds
+		private int		 connectionPoolSizeMin = 0;
+		private int		 connectionPoolSizeMax = -1;	// no maximum
+
+		private DB2ConnectionPool pool;
+
+		private DB2ConnectionSettings(string connectionString)
+		{
+			this.connectionString = connectionString;
+			this.Parse();
+		}
+
+		public static DB2ConnectionSettings GetConnectionSettings(string connectionString)
+		{
+			DB2ConnectionPool pool = DB2ConnectionPool.FindConnectionPool(connectionString);
+			if(pool != null)
+			{
+				return pool.ConnectionSettings;
+			}
+			DB2ConnectionSettings settings = new DB2ConnectionSettings(connectionString);
+			if(settings.Pooling)
+			{
+				settings.pool = DB2ConnectionPool.GetConnectionPool(settings);
+			}
+			return settings;
+		}
+
+		public DB2OpenConnection GetRealOpenConnection(DB2Connection connection)
+		{
+			if(pool != null)
+			{
+				return pool.GetOpenConnection(connection);
+			}
+			else
+			{
+				return new DB2OpenConnection(this, connection);
+			}
+		}
+
+		public DB2ConnectionPool Pool
+		{
+			get { return pool; }
+		}
+
+		public string ConnectionString
+		{
+			get { return connectionString; }
+		}
+
+		public string UserName
+		{
+			get { return userName; }
+		}
+		
+		public string PassWord
+		{
+			get { return passWord; }
+		}
+
+		/// <summary>
+		/// database alias (for cataloged database)
+		/// </summary>
+		public string DatabaseAlias
+		{
+			get { return databaseAlias; }
+		}
+
+		/// <summary>
+		/// server name with optional port number for direct connection (<server name/ip address>[:<port>])
+		/// </summary>
+		public string Server
+		{
+			get { return server; }
+		}
+
+		public TimeSpan ConnectTimeout
+		{
+			get { return connectTimeout; }
+		}
+
+		/// <summary>
+		/// Connection pooling yes/no
+		/// </summary>
+		public bool Pooling
+		{
+			get { return pooling; }
+		}
+
+		public int ConnectionPoolSizeMin
+		{
+			get { return connectionPoolSizeMin; }
+		}
+
+		public int ConnectionPoolSizeMax
+		{
+			get { return connectionPoolSizeMin; }
+		}
+
+		public TimeSpan ConnectionLifeTime
+		{
+			get { return connectionLifeTime; }
+		}
+
+
+		/// <summary>
+		/// parsed according to IBM DB2 .NET data provider help
+		/// </summary>
+		public void Parse()
+		{
+			string[] parts = connectionString.Split(new char[]{';'});
+			foreach(string part in parts)
+			{
+				string[] pairs = part.Split(new char[]{'='});
+				switch(pairs[0].ToLower())
+				{
+					case "database":
+					case "dsn":
+						databaseAlias = pairs[1];
+						break;
+					case "uid":
+					case "user id":
+						userName = pairs[1];
+						break;
+					case "pwd":
+					case "password":
+						passWord = pairs[1];
+						break;
+					case "server":
+						server = pairs[1];
+						break;
+					case "pooling":
+						pooling = (pairs[1].ToLower() == "true") || (pairs[1]== "1");
+						break;
+					case "connect timeout":
+					case "timeout":
+					case "connection timeout":
+						connectTimeout = new TimeSpan(0, 0, int.Parse(pairs[1]));
+						break;
+					case "min pool size":
+						connectionPoolSizeMin = int.Parse(pairs[1]);
+						break;
+					case "max pool size":
+						connectionPoolSizeMax = int.Parse(pairs[1]);
+						break;
+					case "connection lifetime":
+						connectionLifeTime = new TimeSpan(0, 0, int.Parse(pairs[1]));
+						break;
+				}
+			}
+			if(connectionLifeTime.Ticks <= 0)
+			{
+				pooling = false;
+			}
+		}
+	
+		public override int GetHashCode()
+		{
+			return connectionString.GetHashCode ();
+		}
+	
+		public override bool Equals(object obj)
+		{
+			return connectionString.Equals (obj);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Constants.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Constants.cs
@@ -1,208 +1,208 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace IBM.Data.DB2
-{
-	/// <summary>
-	/// Summary description for DB2Constants.
-	/// </summary>
-	internal sealed class DB2Constants
-	{
-		public const short  SQL_HANDLE_ENV = 1;
-		public const short  SQL_HANDLE_DBC = 2;
-		public const short  SQL_HANDLE_STMT = 3;
-		public const short  SQL_HANDLE_DESC = 4;
-
-		/* RETCODE values             */
-		public const short  SQL_SUCCESS			 = 0;
-		public const short  SQL_SUCCESS_WITH_INFO = 1;
-		public const short  SQL_NEED_DATA         = 99;
-		public const short  SQL_NO_DATA           = 100;
-		public const short  SQL_STILL_EXECUTING   = 2;
-		public const short  SQL_ERROR             = -1;
-		public const short  SQL_INVALID_HANDLE    = -2;
-
-		public const int   SQL_NTS				 = -3;
-		public const long  SQL_NULL_HANDLE		 = 0L;
-		public const short SQL_COMMIT			 = 0;
-		public const short SQL_ROLLBACK			 = 1;
-		public const short SQL_NO_DATA_FOUND	 = 100;
-
-		/* SQLFreeStmt option values  */
-		public const short SQL_CLOSE             = 0;
-		public const short SQL_DROP              = 1;
-		public const short SQL_UNBIND            = 2;
-		public const short SQL_RESET_PARAMS      = 3;
-
-		/* Isolation levels */
-		public const long  SQL_TXN_READ_UNCOMMITTED		= 0x00000001L;
-		public const long  SQL_TXN_READ_COMMITTED		= 0x00000002L;
-		public const long  SQL_TXN_REPEATABLE_READ		= 0x00000004L;
-		public const long  SQL_TXN_SERIALIZABLE_READ	= 0x00000008L;
-		public const long  SQL_TXN_NOCOMMIT				= 0x00000020L;
-
-		/* Connect options */
-		public const int  SQL_ATTR_TXN_ISOLATION= 108;
-		public const int  SQL_ATTR_AUTOCOMMIT	= 102;
-
-		/* attribute */
-		public const int  SQL_ATTR_ANSI_APP		= 115;
-		public const int  SQL_AA_TRUE           = 1;      /* the application is an ANSI app */
-		public const int  SQL_AA_FALSE          = 0;      /* the application is a Unicode app */
-
-		public const int  SQL_ATTR_CONNECTION_DEAD = 1209;    /* GetConnectAttr only */
-		public const int  SQL_CD_TRUE           = 1;      /* the connection is dead */
-		public const int  SQL_CD_FALSE          = 0;      /* the connection is not dead */
-
-		public const int  SQL_ATTR_QUERY_TIMEOUT = 0;
-		public const int  SQL_ATTR_MAX_ROWS		= 1;
-		public const int  SQL_ATTR_DEFERRED_PREPARE = 1277;
-
-		/*Used for batch operations*/
-		public const int  SQL_ATTR_PARAMSET_SIZE = 22;
-		public const int  SQL_ATTR_PARAM_STATUS_PTR = 20;
-		public const int  SQL_ATTR_PARAMS_PROCESSED_PTR = 21;
-		public const int SQL_ATTR_PARAM_BIND_TYPE	    = 18;
-
-		public const int  SQL_IS_POINTER        = -4;
-		public const int  SQL_IS_UINTEGER       = -5;
-		public const int  SQL_IS_INTEGER        = -6;
-		public const int  SQL_IS_USMALLINT      = -7;
-		public const int  SQL_IS_SMALLINT       = -8;
-
-
-
-		public const long SQL_AUTOCOMMIT_OFF	= 0L;
-		public const long SQL_AUTOCOMMIT_ON		= 1L;
-
-		/* Data Types */
-		public const int  SQL_UNKNOWN_TYPE		= 0;
-		public const int  SQL_CHAR				= 1;
-		public const int  SQL_NUMERIC			= 2;
-		public const int  SQL_DECIMAL			= 3;
-		public const int  SQL_INTEGER			= 4;
-		public const int  SQL_SMALLINT			= 5;
-		public const int  SQL_FLOAT				= 6;
-		public const int  SQL_REAL				= 7;
-		public const int  SQL_DOUBLE			= 8;
-		public const int  SQL_DATETIME			= 9;
-		public const int  SQL_VARCHAR			= 12;
-		public const int  SQL_VARBINARY         = (-3);
-		public const int  SQL_LONGVARBINARY     = (-4);
-		public const int  SQL_BIGINT			= (-5);
-		public const int  SQL_BIT  				= (-7);
-		public const int  SQL_WCHAR				= (-8);
-		public const int  SQL_WVARCHAR			= (-9);
-		public const int  SQL_WLONGVARCHAR		= (-10);
-		public const int  SQL_GUID				= (-11);
-		public const int  SQL_UTINYINT		    = (-28);
-
-		public const int  SQL_TYPE_DATE			= 91;
-		public const int  SQL_TYPE_TIME			= 92;
-		public const int  SQL_TYPE_TIMESTAMP	= 93;
-		public const int SQL_TYPE_BINARY		= -2;
-		public const int SQL_GRAPHIC            = -95;
-		public const int SQL_VARGRAPHIC         = -96;
-		public const int SQL_LONGVARGRAPHIC     = -97;
-		public const int SQL_TYPE_BLOB			= -98;
-		public const int SQL_TYPE_CLOB			= -99;
-		public const int SQL_DBCLOB				= 350;
-
-		public const int  SQL_C_CHAR			= SQL_CHAR;
-		public const int  SQL_C_WCHAR			= SQL_WCHAR;
-		public const int SQL_C_SBIGINT          = -25;
-		public const int SQL_C_SLONG			= -16;
-		public const int SQL_C_SSHORT			= -15;
-		public const int SQL_C_TYPE_BINARY		= -2;
-		public const int SQL_C_DOUBLE			= 8;
-		public const int SQL_C_DECIMAL_IBM		= 3;
-		public const int SQL_C_DECIMAL_OLEDB		= 2514;
-		public const int  SQL_C_DEFAULT			= 99;
-		public const int SQL_C_TYPE_DATE		= 91;
-		public const int SQL_C_TYPE_TIME		= 92;
-		public const int SQL_C_TYPE_TIMESTAMP		= 93;
-		public const int SQL_C_TYPE_NUMERIC 		= 2;
-		public const int SQL_C_TYPE_REAL		= 7;
-
-		public const int  SQL_BLOB_LOCATOR		= 31;
-		public const int  SQL_CLOB_LOCATOR		= 41;
-		public const int  SQL_DBCLOB_LOCATOR	= -351;
-
-		public const int  SQL_C_BLOB_LOCATOR = SQL_BLOB_LOCATOR;
-		public const int  SQL_C_CLOB_LOCATOR = SQL_CLOB_LOCATOR;
-		public const int  SQL_C_DBCLOB_LOCATOR = SQL_DBCLOB_LOCATOR;
-
-		public const int  SQL_USER_DEFINED_TYPE = (-450);
-
-		/* Special length values  */
-		public const int SQL_NULL_DATA			= -1;
-
-		/* SQLDriverConnect Options */
-		public const int  SQL_DRIVER_NOPROMPT   = 0;
-		public const int  SQL_DRIVER_COMPLETE   = 1;
-		public const int  SQL_DRIVER_PROMPT     = 2;
-		public const int  SQL_DRIVER_COMPLETE_REQUIRED = 3;
-
-		/* Null settings */
-		public const int  SQL_NO_NULLS			= 0;
-		public const int  SQL_NULLABLE			= 1;
-		public const int  SQL_NULLABLE_UNKNOWN	= 2;
-
-		public const int SQL_PARAM_BIND_BY_COLUMN    = 0;
-
-		/* Defines for SQLBindParameter and SQLProcedureColumns */
-		public const int SQL_PARAM_TYPE_UNKNOWN = 0;
-		public const int SQL_PARAM_INPUT		= 1;
-		public const int SQL_PARAM_INPUT_OUTPUT = 2;
-		public const int SQL_RESULT_COL         = 3;
-		public const int SQL_PARAM_OUTPUT       = 4;
-		public const int SQL_RETURN_VALUE       = 5;
-		
-		/*Defines for SQLColAttributeW*/
-		public const int SQL_DESC_ALLOC_TYPE = 1099;
-		public const int SQL_DESC_AUTO_UNIQUE_VALUE = 11;
-		public const int SQL_DESC_BASE_COLUMN_NAME = 22;
-		public const int SQL_DESC_BASE_TABLE_NAME = 23;
-		public const int SQL_DESC_COLUMN_CATALOG_NAME = 17;
-		public const int SQL_DESC_COLUMN_NAME = 1;
-		public const int SQL_DESC_SCHEMA_NAME = 16;
-		public const int SQL_DESC_COLUMN_TABLE_NAME = 15;
-		public const int SQL_DESC_CONCISE_TYPE = 2;
-		public const int SQL_DESC_COUNT = 1001;
-		public const int SQL_DESC_DATA_PTR = 1010;
-		public const int SQL_DESC_DATETIME_INTERVAL_CODE = 1007;
-		public const int SQL_DESC_INDICATOR_PTR = 1009;
-		public const int SQL_DESC_LENGTH = 1003;
-		public const int SQL_DESC_NAME = 1011;
-		public const int SQL_DESC_NULLABLE = 1008;
-		public const int SQL_DESC_OCTET_LENGTH = 1013;
-		public const int SQL_DESC_OCTET_LENGTH_PTR = 1004;
-		public const int SQL_DESC_PRECISION = 1005;
-		public const int SQL_DESC_SCALE = 1006;
-		public const int SQL_DESC_TYPE = 1002;
-		public const int SQL_DESC_TYPE_NAME = 14;
-		public const int SQL_DESC_UNNAMED = 1012;
-		public const int SQL_DESC_UNSIGNED = 8;
-		public const int SQL_DESC_UPDATABLE = 10; 
-	}
-}
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace IBM.Data.DB2
+{
+	/// <summary>
+	/// Summary description for DB2Constants.
+	/// </summary>
+	internal sealed class DB2Constants
+	{
+		public const short  SQL_HANDLE_ENV = 1;
+		public const short  SQL_HANDLE_DBC = 2;
+		public const short  SQL_HANDLE_STMT = 3;
+		public const short  SQL_HANDLE_DESC = 4;
+
+		/* RETCODE values             */
+		public const short  SQL_SUCCESS			 = 0;
+		public const short  SQL_SUCCESS_WITH_INFO = 1;
+		public const short  SQL_NEED_DATA         = 99;
+		public const short  SQL_NO_DATA           = 100;
+		public const short  SQL_STILL_EXECUTING   = 2;
+		public const short  SQL_ERROR             = -1;
+		public const short  SQL_INVALID_HANDLE    = -2;
+
+		public const int   SQL_NTS				 = -3;
+		public const long  SQL_NULL_HANDLE		 = 0L;
+		public const short SQL_COMMIT			 = 0;
+		public const short SQL_ROLLBACK			 = 1;
+		public const short SQL_NO_DATA_FOUND	 = 100;
+
+		/* SQLFreeStmt option values  */
+		public const short SQL_CLOSE             = 0;
+		public const short SQL_DROP              = 1;
+		public const short SQL_UNBIND            = 2;
+		public const short SQL_RESET_PARAMS      = 3;
+
+		/* Isolation levels */
+		public const long  SQL_TXN_READ_UNCOMMITTED		= 0x00000001L;
+		public const long  SQL_TXN_READ_COMMITTED		= 0x00000002L;
+		public const long  SQL_TXN_REPEATABLE_READ		= 0x00000004L;
+		public const long  SQL_TXN_SERIALIZABLE_READ	= 0x00000008L;
+		public const long  SQL_TXN_NOCOMMIT				= 0x00000020L;
+
+		/* Connect options */
+		public const int  SQL_ATTR_TXN_ISOLATION= 108;
+		public const int  SQL_ATTR_AUTOCOMMIT	= 102;
+
+		/* attribute */
+		public const int  SQL_ATTR_ANSI_APP		= 115;
+		public const int  SQL_AA_TRUE           = 1;      /* the application is an ANSI app */
+		public const int  SQL_AA_FALSE          = 0;      /* the application is a Unicode app */
+
+		public const int  SQL_ATTR_CONNECTION_DEAD = 1209;    /* GetConnectAttr only */
+		public const int  SQL_CD_TRUE           = 1;      /* the connection is dead */
+		public const int  SQL_CD_FALSE          = 0;      /* the connection is not dead */
+
+		public const int  SQL_ATTR_QUERY_TIMEOUT = 0;
+		public const int  SQL_ATTR_MAX_ROWS		= 1;
+		public const int  SQL_ATTR_DEFERRED_PREPARE = 1277;
+
+		/*Used for batch operations*/
+		public const int  SQL_ATTR_PARAMSET_SIZE = 22;
+		public const int  SQL_ATTR_PARAM_STATUS_PTR = 20;
+		public const int  SQL_ATTR_PARAMS_PROCESSED_PTR = 21;
+		public const int SQL_ATTR_PARAM_BIND_TYPE	    = 18;
+
+		public const int  SQL_IS_POINTER        = -4;
+		public const int  SQL_IS_UINTEGER       = -5;
+		public const int  SQL_IS_INTEGER        = -6;
+		public const int  SQL_IS_USMALLINT      = -7;
+		public const int  SQL_IS_SMALLINT       = -8;
+
+
+
+		public const long SQL_AUTOCOMMIT_OFF	= 0L;
+		public const long SQL_AUTOCOMMIT_ON		= 1L;
+
+		/* Data Types */
+		public const int  SQL_UNKNOWN_TYPE		= 0;
+		public const int  SQL_CHAR				= 1;
+		public const int  SQL_NUMERIC			= 2;
+		public const int  SQL_DECIMAL			= 3;
+		public const int  SQL_INTEGER			= 4;
+		public const int  SQL_SMALLINT			= 5;
+		public const int  SQL_FLOAT				= 6;
+		public const int  SQL_REAL				= 7;
+		public const int  SQL_DOUBLE			= 8;
+		public const int  SQL_DATETIME			= 9;
+		public const int  SQL_VARCHAR			= 12;
+		public const int  SQL_VARBINARY         = (-3);
+		public const int  SQL_LONGVARBINARY     = (-4);
+		public const int  SQL_BIGINT			= (-5);
+		public const int  SQL_BIT  				= (-7);
+		public const int  SQL_WCHAR				= (-8);
+		public const int  SQL_WVARCHAR			= (-9);
+		public const int  SQL_WLONGVARCHAR		= (-10);
+		public const int  SQL_GUID				= (-11);
+		public const int  SQL_UTINYINT		    = (-28);
+
+		public const int  SQL_TYPE_DATE			= 91;
+		public const int  SQL_TYPE_TIME			= 92;
+		public const int  SQL_TYPE_TIMESTAMP	= 93;
+		public const int SQL_TYPE_BINARY		= -2;
+		public const int SQL_GRAPHIC            = -95;
+		public const int SQL_VARGRAPHIC         = -96;
+		public const int SQL_LONGVARGRAPHIC     = -97;
+		public const int SQL_TYPE_BLOB			= -98;
+		public const int SQL_TYPE_CLOB			= -99;
+		public const int SQL_DBCLOB				= 350;
+
+		public const int  SQL_C_CHAR			= SQL_CHAR;
+		public const int  SQL_C_WCHAR			= SQL_WCHAR;
+		public const int SQL_C_SBIGINT          = -25;
+		public const int SQL_C_SLONG			= -16;
+		public const int SQL_C_SSHORT			= -15;
+		public const int SQL_C_TYPE_BINARY		= -2;
+		public const int SQL_C_DOUBLE			= 8;
+		public const int SQL_C_DECIMAL_IBM		= 3;
+		public const int SQL_C_DECIMAL_OLEDB		= 2514;
+		public const int  SQL_C_DEFAULT			= 99;
+		public const int SQL_C_TYPE_DATE		= 91;
+		public const int SQL_C_TYPE_TIME		= 92;
+		public const int SQL_C_TYPE_TIMESTAMP		= 93;
+		public const int SQL_C_TYPE_NUMERIC 		= 2;
+		public const int SQL_C_TYPE_REAL		= 7;
+
+		public const int  SQL_BLOB_LOCATOR		= 31;
+		public const int  SQL_CLOB_LOCATOR		= 41;
+		public const int  SQL_DBCLOB_LOCATOR	= -351;
+
+		public const int  SQL_C_BLOB_LOCATOR = SQL_BLOB_LOCATOR;
+		public const int  SQL_C_CLOB_LOCATOR = SQL_CLOB_LOCATOR;
+		public const int  SQL_C_DBCLOB_LOCATOR = SQL_DBCLOB_LOCATOR;
+
+		public const int  SQL_USER_DEFINED_TYPE = (-450);
+
+		/* Special length values  */
+		public const int SQL_NULL_DATA			= -1;
+
+		/* SQLDriverConnect Options */
+		public const int  SQL_DRIVER_NOPROMPT   = 0;
+		public const int  SQL_DRIVER_COMPLETE   = 1;
+		public const int  SQL_DRIVER_PROMPT     = 2;
+		public const int  SQL_DRIVER_COMPLETE_REQUIRED = 3;
+
+		/* Null settings */
+		public const int  SQL_NO_NULLS			= 0;
+		public const int  SQL_NULLABLE			= 1;
+		public const int  SQL_NULLABLE_UNKNOWN	= 2;
+
+		public const int SQL_PARAM_BIND_BY_COLUMN    = 0;
+
+		/* Defines for SQLBindParameter and SQLProcedureColumns */
+		public const int SQL_PARAM_TYPE_UNKNOWN = 0;
+		public const int SQL_PARAM_INPUT		= 1;
+		public const int SQL_PARAM_INPUT_OUTPUT = 2;
+		public const int SQL_RESULT_COL         = 3;
+		public const int SQL_PARAM_OUTPUT       = 4;
+		public const int SQL_RETURN_VALUE       = 5;
+		
+		/*Defines for SQLColAttributeW*/
+		public const int SQL_DESC_ALLOC_TYPE = 1099;
+		public const int SQL_DESC_AUTO_UNIQUE_VALUE = 11;
+		public const int SQL_DESC_BASE_COLUMN_NAME = 22;
+		public const int SQL_DESC_BASE_TABLE_NAME = 23;
+		public const int SQL_DESC_COLUMN_CATALOG_NAME = 17;
+		public const int SQL_DESC_COLUMN_NAME = 1;
+		public const int SQL_DESC_SCHEMA_NAME = 16;
+		public const int SQL_DESC_COLUMN_TABLE_NAME = 15;
+		public const int SQL_DESC_CONCISE_TYPE = 2;
+		public const int SQL_DESC_COUNT = 1001;
+		public const int SQL_DESC_DATA_PTR = 1010;
+		public const int SQL_DESC_DATETIME_INTERVAL_CODE = 1007;
+		public const int SQL_DESC_INDICATOR_PTR = 1009;
+		public const int SQL_DESC_LENGTH = 1003;
+		public const int SQL_DESC_NAME = 1011;
+		public const int SQL_DESC_NULLABLE = 1008;
+		public const int SQL_DESC_OCTET_LENGTH = 1013;
+		public const int SQL_DESC_OCTET_LENGTH_PTR = 1004;
+		public const int SQL_DESC_PRECISION = 1005;
+		public const int SQL_DESC_SCALE = 1006;
+		public const int SQL_DESC_TYPE = 1002;
+		public const int SQL_DESC_TYPE_NAME = 14;
+		public const int SQL_DESC_UNNAMED = 1012;
+		public const int SQL_DESC_UNSIGNED = 8;
+		public const int SQL_DESC_UPDATABLE = 10; 
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2DataReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2DataReader.cs
@@ -1,1458 +1,1458 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Data;
-using System.Runtime.InteropServices;
-using System.Globalization;
-using System.Text;
-
-namespace IBM.Data.DB2
-{
-	/// <summary>
-	/// Summary description for DB2ClientDataReader.
-	/// DB2ClientDataReader. 
-	/// </summary>
-	public sealed class DB2DataReader : MarshalByRefObject, IDataReader
-	{
-		private struct ColumnInfo
-		{
-			public string	Colname;
-			public int		Sqltype;
-		}
-
-		private object[] _resultSet;
-		private ColumnInfo[] columnInfo;
-		private Hashtable columnsNames;
-		private const int internalBufferSize = 100;
-		private IntPtr internalBuffer;
-		internal DB2Connection db2Conn; 
-		internal DB2Command db2Comm; 
-		internal IntPtr hwndStmt;
-		private int recordsAffected;
-		private bool hasData = false;
-		private int fieldCount = -1;
-		private CommandBehavior behavior;
-		private bool hasRows;
-		private bool skipReadOnce;
-	
-		
-		#region Constructors and destructors
-		/// <summary>
-		/// 
-		/// </summary>
-		/// <param name="con"></Connection object to Db2>
-		/// <param name="com"></Command object>
-		internal DB2DataReader(DB2Connection con, DB2Command com, CommandBehavior behavior)
-		{
-			db2Conn = con;
-			db2Comm = com;
-			this.behavior = behavior;
-			hwndStmt = com.statementHandle;    //We have access to the results through the statement handle
-			
-			_resultSet = null;
-			
-			GetFieldCountAndAffectedRows();
-			internalBuffer = Marshal.AllocHGlobal(internalBufferSize);
-
-			isClosed = false;
-		}
-
-		#endregion
-
-		private void GetFieldCountAndAffectedRows()
-		{
-			short sqlRet;
-			recordsAffected = -1;
-			if((behavior & CommandBehavior.SchemaOnly) == 0)
-			{
-				//How many rows affected.  numRows will be -1 if we aren't dealing with an Insert, Delete or Update, or if the statement did not execute successfully
-				sqlRet = DB2CLIWrapper.SQLRowCount(hwndStmt, out recordsAffected);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecDirect error.", db2Conn);
-			}			
-			short colCount;
-			sqlRet = DB2CLIWrapper.SQLNumResultCols(hwndStmt, out colCount);
-			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "DB2ClientDataReader - SQLNumResultCols", db2Conn);
-			fieldCount = colCount;
-		}
-
-		#region Properties
-
-		#region Depth property 
-		///
-		///Depth of nesting for the current row, need to figure out what this translates into 
-		///with DB2.
-		///
-		private int depth = 0;
-		public int Depth
-		{
-			get
-			{
-				if(isClosed)
-				{
-					throw new InvalidOperationException("Reader is closed");
-				}
-				return depth;
-			}
-		}
-		#endregion
-
-		#region IsClosed property
-		/// <summary>
-		/// True if the reader is closed.
-		/// </summary>
-		private bool isClosed = true;
-		public bool IsClosed
-		{
-			get
-			{
-				return isClosed;
-			}
-		}
-		#endregion
-
-		#region RecordsAffected property
-		///
-		/// Number of records affected by this operation.  Will be zero until we close the 
-		/// reader
-		/// 
-		
-		public int RecordsAffected
-		{
-			get
-			{
-				return recordsAffected;
-			}
-		}
-		#endregion
-
-		#endregion
-
-		#region Methods
-
-
-
-		#region Close method
-
-		public void Close()
-		{
-			Dispose();
-		}
-
-		public void Dispose()
-		{
-			Dispose(true);
-			GC.SuppressFinalize(this);
-		}
-
-		void Dispose(bool disposing)
-		{
-			if(!isClosed) 
-			{
-				if(disposing)
-				{
-					short sqlRet;
-					do
-					{
-						sqlRet = DB2CLIWrapper.SQLMoreResults(this.hwndStmt);
-						DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Db2ClientDataReader - SQLMoreResults", db2Conn);
-					} while(sqlRet != DB2Constants.SQL_NO_DATA_FOUND);
-
-					_resultSet = null;
-					hasData = false;
-					isClosed=true;
-
-					if(db2Comm != null)
-					{
-						db2Comm.DataReaderClosed();
-						db2Comm = null;
-					}
-				}
-				Marshal.FreeHGlobal(internalBuffer);
-			}
-			isClosed = true;
-		}
-
-		~DB2DataReader()
-		{
-			Dispose(false);
-		}
-
-		#endregion
-
-		#region GetSchemaTable 
-
-		public DataTable GetSchemaTable()
-		{
-			if(isClosed)
-			{
-				throw new InvalidOperationException("No data exists for the row/column.");
-			}
-
-			DataTable _schemaTable = BuildNewSchemaTable();
-			
-			short sqlRet;
-			IntPtr ptrCharacterAttribute = IntPtr.Zero;
-			InitMem(256, ref ptrCharacterAttribute);
-			short buflen = 256;
-			short strlen = 256;
-			int numericattr = 0;
-			int colsize;
-			string colname;
-			int sqltype;
-			int precision;
-			int scale;
-			int nullable;
-			int updatable;
-			int isautoincrement;
-			string baseschemaname;
-			//string basecatalogname;
-			string basetablename;
-			string basecolumnname;
-
-			string previousTableName = null;
-			string previousSchemaName = null;
-			bool differentTablesUsed = false;
-
-			for (short i=1; i<=fieldCount; i++) 
-			{
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_COLUMN_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				colname = Marshal.PtrToStringUni(ptrCharacterAttribute);
-				
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_CONCISE_TYPE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				sqltype = numericattr;
-				
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_OCTET_LENGTH, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				colsize = numericattr;
-				
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_PRECISION, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				precision = numericattr;
-				
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_SCALE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				scale = numericattr;
-
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_NULLABLE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				nullable = numericattr;
-
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_UPDATABLE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				updatable = numericattr;
-				
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_AUTO_UNIQUE_VALUE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				isautoincrement = numericattr;
-				
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_BASE_COLUMN_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				basecolumnname = Marshal.PtrToStringUni(ptrCharacterAttribute);
-
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_BASE_TABLE_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				basetablename = Marshal.PtrToStringUni(ptrCharacterAttribute);
-				
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_SCHEMA_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
-				baseschemaname = Marshal.PtrToStringUni(ptrCharacterAttribute);
-				DataRow r = _schemaTable.NewRow();
-				
-				r["ColumnName"] = colname;
-				r["ColumnOrdinal"] = i - 1;
-				r["ColumnSize"] = colsize;
-				r["NumericPrecision"] = precision;
-				r["NumericScale"] = scale;
-				r["DataType"] = GetManagedType((short)sqltype);
-				r["ProviderType"] = sqltype;
-				r["IsLong"] = IsLong((short)sqltype);
-				r["AllowDBNull"] = (nullable==0) ? false : true;
-				r["IsReadOnly"] = (basecolumnname == null) || (basecolumnname == "");
-				r["IsRowVersion"] = false;
-				r["IsUnique"] = false;
-				r["IsKeyColumn"] = false;
-				r["IsAutoIncrement"] = (isautoincrement==0) ? false : true;
-				r["BaseSchemaName"] = baseschemaname;
-				r["BaseCatalogName"] = "";
-				r["BaseTableName"] = basetablename;
-				r["BaseColumnName"] = basecolumnname;
-				
-				_schemaTable.Rows.Add(r);
-
-				if(!differentTablesUsed)
-				{
-					if(((previousSchemaName == baseschemaname) && (previousTableName == basetablename)) || 
-						(previousTableName == null))
-					{
-						previousTableName = basetablename;
-						previousSchemaName = baseschemaname;
-					}
-					else
-					{
-						differentTablesUsed = true;
-					}
-				}
-			}
-			if(!differentTablesUsed && 
-				((behavior & CommandBehavior.KeyInfo) != 0) &&
-				(db2Comm.Transaction == null) &&
-				(previousTableName != null) &&
-				(previousTableName != ""))
-			{
-				DB2Command schemaInfoCommand = db2Conn.CreateCommand();
-				schemaInfoCommand.CommandText = 
-					"select concat(concat(INDSCHEMA,'.'),INDNAME), COLNAMES, UNIQUERULE from syscat.INDEXES " +
-					"where TABSCHEMA=? and TABNAME=? and uniquerule in ('P','U') order by UNIQUERULE";
-				schemaInfoCommand.Parameters.Add("TABSCHEMA", previousSchemaName);
-				schemaInfoCommand.Parameters.Add("TABNAME", previousTableName);
-				using(DB2DataReader reader = schemaInfoCommand.ExecuteReader())
-				{
-					bool keyColumnSet = false;
-					while(reader.Read())
-					{
-						string indexName = reader.GetString(0);
-						string[] indexColumns = reader.GetString(1).TrimStart('-', '+').Split('-', '+');
-						bool primary = reader.GetString(2) == "P";
-
-						bool allColumnsFound = true;
-						for(int i= 0; i < indexColumns.Length; i++)
-						{
-							int ordinal = FieldNameLookup(_schemaTable, indexColumns[i]);
-							if(ordinal < 0)
-							{
-								allColumnsFound = false;
-								break;
-							}
-							if(indexColumns.Length == 1)
-								_schemaTable.Rows[ordinal]["IsUnique"] = true;
-						}
-						if(allColumnsFound && !keyColumnSet)
-						{
-							for(int i= 0; i < indexColumns.Length; i++)
-								_schemaTable.Rows[FieldNameLookup(_schemaTable, indexColumns[i])]["IsKeyColumn"] = true;
-							keyColumnSet = true;
-						}
-					}
-				}
-				if(db2Conn.openConnection.MajorVersion >= 8)
-				{
-					try
-					{
-						schemaInfoCommand.CommandText = 
-							"select COLNAME from SYSCAT.COLIDENTATTRIBUTES where TABSCHEMA=? and TABNAME=?";
-						using(DB2DataReader reader = schemaInfoCommand.ExecuteReader())
-						{
-							while(reader.Read())
-							{
-								string columnName = reader.GetString(0);
-
-								int ordinal = FieldNameLookup(_schemaTable, columnName);
-								if(ordinal >= 0)
-									_schemaTable.Rows[ordinal]["IsAutoIncrement"] = true;
-							}
-						}
-					}
-					catch{}
-				}
-			}
-			return _schemaTable;
-		}
-		#endregion
-
-		#region NextResult 
-
-		public bool NextResult()
-		{
-			hasRows = false;
-			skipReadOnce = false;
-			hasData = false;
-			columnInfo = null;
-			_resultSet = null;
-		
-			if((behavior & (CommandBehavior.SchemaOnly | CommandBehavior.SingleResult)) != 0)
-				return false;
-
-			short sqlRet = DB2CLIWrapper.SQLMoreResults(this.hwndStmt);
-			if(sqlRet == DB2Constants.SQL_NO_DATA_FOUND) 
-				return false;
-			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Db2ClientDataReader - SQLMoreResults", db2Conn);
-			return true;
-		}
-		#endregion
-
-		#region Read
-
-		public bool HasRows
-		{
-			get
-			{
-				if(hasData)
-					return true;
-
-				hasRows = Read();
-				hasData = false;
-				skipReadOnce = true;
-				return hasRows;
-			}
-		}
-
-		public bool Read()
-		{
-			if (isClosed)
-				throw new InvalidOperationException("Reader is closed");
-			if((behavior & CommandBehavior.SchemaOnly) != 0)
-				return false;
-
-			if(skipReadOnce)
-			{
-				skipReadOnce = false;
-				hasData = hasRows;
-				return hasRows;
-			}
-
-			_resultSet = null;
-			hasData = false;
-
-			short sqlRet = DB2CLIWrapper.SQLFetch(hwndStmt);
-			if(sqlRet == DB2Constants.SQL_NO_DATA_FOUND)
-				return false;
-			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "DB2ClientDataReader - SQLFetch 1", db2Conn);
-
-			hasData = true;
-			return true;
-		}
-		#endregion
-
-		#region GetColumnInfo
-		private void GetColumnInfo()
-		{
-			if(isClosed)
-				throw new InvalidOperationException("Reader is closed");
-			if(fieldCount <= 0)
-				throw new InvalidOperationException("No Fields found"); // TODO: check error
-			if(columnInfo != null)
-				return;
-		
-			columnInfo = new ColumnInfo[fieldCount];
-			columnsNames = new Hashtable(fieldCount);
-			
-			StringBuilder sb = new StringBuilder(400);
-			for(int i = 0; i < columnInfo.Length; i++)
-			{
-				short sqlRet;
-				short strlen;
-				int numericAttribute;
-
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)(i + 1), (short)DB2Constants.SQL_DESC_BASE_COLUMN_NAME, sb, (short)sb.Capacity, out strlen, out numericAttribute);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable");
-				columnInfo[i].Colname = sb.ToString();
-				columnsNames[columnInfo[i].Colname.ToUpper()] = i;
-
-				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)(i + 1), (short)DB2Constants.SQL_DESC_CONCISE_TYPE, sb, (short)sb.Capacity, out strlen, out columnInfo[i].Sqltype);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable");
-
-
-			}
-		}
-		#endregion
-
-		#region Describe/Bind/Fetch functions
-		///
-		///Broke these out so that we can use different paths for Immediate executions and Prepared executions
-		/// <summary>
-		/// Does the describe and bind steps for the query result set.  Called for both immediate and prepared queries. 
-		/// </summary>
-		
-/// <summary>
-/// FetchResults does  what it says.
-/// </summary>
-/// <param name="dbVals"></param>
-/// <param name="sqlLen_or_IndPtr"></param>
-/// <param name="_resultSet"></param>
-		private int FieldNameLookup(DataTable _schemaTable, string name)
-		{
-			for(int i = 0; i < _schemaTable.Rows.Count; i++)
-			{
-				if(CultureInfo.CurrentCulture.CompareInfo.Compare(name, (string)_schemaTable.Rows[i]["BaseColumnName"],
-					CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase) == 0)
-				{
-					return i;
-				}
-			}
-			return -1;
-		}
-		
-		#endregion
-
-		#region IDataRecord Interface
-		///Code for the IDataRecord interface
-		///
-		#region FieldCount
-		///
-		///
-		public int FieldCount
-		{
-			get
-			{
-				if (isClosed)
-					throw new InvalidOperationException("Reader is closed");
-
-				return fieldCount;
-			}
-		}
-		#endregion
-
-		#region Item accessors
-		public object this[string name]
-		{
-			get
-			{
-				int ordinal = GetOrdinal(name);
-				return this[ordinal];
-			}
-		}
-		public object this[int col]
-		{
-			get
-			{
-				if(columnInfo == null)
-				{
-					GetColumnInfo();
-				}
-				switch(columnInfo[col].Sqltype)
-				{
-					case DB2Constants.SQL_INTEGER:
-						return GetInt32Internal(col);
-					case DB2Constants.SQL_SMALLINT:
-						return GetInt16Internal(col);
-					case DB2Constants.SQL_BIGINT:
-						return GetInt64Internal(col);
-					case DB2Constants.SQL_DOUBLE:
-						return GetDoubleInternal(col);
-					case DB2Constants.SQL_REAL:
-						return GetFloatInternal(col);
-					case DB2Constants.SQL_DECIMAL:
-						return GetDecimalInternal(col);
-					case DB2Constants.SQL_DATETIME:
-					case DB2Constants.SQL_TYPE_TIMESTAMP:
-						return GetDateTimeInternal(col);
-					case DB2Constants.SQL_TYPE_DATE:
-						return GetDateInternal(col);
-					case DB2Constants.SQL_TYPE_TIME:
-						return GetTimeInternal(col);
-					case DB2Constants.SQL_TYPE_CLOB:
-					case DB2Constants.SQL_CHAR:
-					case DB2Constants.SQL_VARCHAR:
-						return GetStringInternal(col);
-					case DB2Constants.SQL_TYPE_BLOB:
-					case DB2Constants.SQL_TYPE_BINARY:
-					case DB2Constants.SQL_LONGVARBINARY:
-					case DB2Constants.SQL_VARBINARY:
-						return GetBlobDataInternal(col);
-				}
-				throw new NotImplementedException("Unknown SQL type " + columnInfo[col].Sqltype);
-			}
-		}
-		#endregion
-
-		#region GetBytes
-		///
-		///  GetBytes, return a stream of bytes
-		///
-		public long GetBytes(int col, long fieldOffset, byte[] buffer, int bufferOffset, int length)
-		{
-			// TODO: need better implementation for big BLOBs
-
-			byte[] sourceArray = (byte[])this[col];
-			if(buffer == null)
-			{
-				Array.Copy(sourceArray, fieldOffset, buffer, bufferOffset, length);
-			}
-			return sourceArray.LongLength;
-		}
-		#endregion
-
-		#region GetChars
-		///
-		///GetChars, returns char array
-		///
-		public long GetChars(int col, long fieldOffset, char[] buffer, int bufferOffset, int length)
-		{
-			// TODO: need better implementation for big CLOBs
-
-			string sourceString = GetString(col);
-			if(buffer == null)
-			{
-				sourceString.CopyTo((int)fieldOffset, buffer, bufferOffset, length);
-			}
-			return (long)sourceString.Length;
-		}
-		#endregion
-
-		#region GetBoolean method
-
-		public Boolean GetBoolean(int col)
-		{
-			return (Boolean)GetBooleanInternal(col);
-		}
-		internal object GetBooleanInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_BIT, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.ReadByte(internalBuffer) != 0;
-				}
-			}		
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region GetGuid
-		///
-		/// GetDateTime method
-		/// 
-		public Guid GetGuid(int col)
-		{
-			return (Guid)GetGuidInternal(col);
-		}
-		internal object GetGuidInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_GUID, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(Guid)); 
-				}
-			}		
-			return _resultSet[col];
-		}
-
-		#endregion
-
-		#region GetByte
-		///
-		///GetByte
-		///
-		public Byte GetByte(int col)
-		{
-			return (Byte)GetByteInternal(col);
-		}
-		internal object GetByteInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_UTINYINT, internalBuffer, 10, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.ReadByte(internalBuffer);
-				}
-			}		
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region GetChar
-		///
-		///GetChar, return column as a char
-		///
-		public Char GetChar(int col)
-		{
-			return (Char)GetCharInternal(col);
-		}
-		internal object GetCharInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_WCHAR, internalBuffer, 10, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(char));
-				}
-			}		
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region GetData
-		///
-		/// GetData method
-		/// 
-		public IDataReader GetData(int col)
-		{
-			//Have to research this one, not quite sure what the docs mean
-			//DB2 does have some structured data types, is that what this is for?
-			throw new NotSupportedException();
-		}
-		#endregion
-
-		#region GetDataTypeName
-		///
-		///GetDataTypeName return the type of data
-		///
-		public string GetDataTypeName(int col)
-		{
-			if(columnInfo == null)
-			{
-				GetColumnInfo();
-			}
-			switch(columnInfo[col].Sqltype)
-			{
-				case DB2Constants.SQL_INTEGER:
-					return "INTEGER";
-				case DB2Constants.SQL_SMALLINT:
-					return "SMALLINT";
-				case DB2Constants.SQL_BIGINT:
-					return "BIGINT";
-				case DB2Constants.SQL_DOUBLE:
-					return "DOUBLE";
-				case DB2Constants.SQL_REAL:
-					return "REAL";
-				case DB2Constants.SQL_DECIMAL:
-					return "DECIMAL";
-				case DB2Constants.SQL_DATETIME:
-					return "DATETIME";
-				case DB2Constants.SQL_TYPE_TIMESTAMP:
-					return "TIMESTAMP";
-				case DB2Constants.SQL_TYPE_DATE:
-					return "DATE";
-				case DB2Constants.SQL_TYPE_TIME:
-					return "TIME";
-				case DB2Constants.SQL_TYPE_CLOB:
-					return "CLOB";
-				case DB2Constants.SQL_CHAR:
-					return "CHAR";
-				case DB2Constants.SQL_VARCHAR:
-					return "VARCHAR";
-				case DB2Constants.SQL_TYPE_BLOB:
-					return "BLOB";
-				case DB2Constants.SQL_TYPE_BINARY:
-					return "BINARY";
-				case DB2Constants.SQL_LONGVARBINARY:
-					return "LONGVARBINARY";
-				case DB2Constants.SQL_VARBINARY:
-					return "VARBINARY";
-			}
-			throw new NotImplementedException("Unknown SQL type " + columnInfo[col].Sqltype);
-		}
-		#endregion
-
-		#region GetDateTime
-		///
-		/// GetDateTime method
-		/// 
-
-		public DateTime GetDateTime(int col)
-		{
-			return (DateTime)GetDateTimeInternal(col);
-		}
-		internal object GetDateTimeInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_TIMESTAMP, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					DateTime ret = new DateTime(
-						Marshal.ReadInt16(internalBuffer, 0),  // year
-						Marshal.ReadInt16(internalBuffer, 2),  // month
-						Marshal.ReadInt16(internalBuffer, 4),  // day
-						Marshal.ReadInt16(internalBuffer, 6),  // hour
-						Marshal.ReadInt16(internalBuffer, 8),  // minute
-						Marshal.ReadInt16(internalBuffer, 10));// second
-					_resultSet[col] = ret.AddTicks(Marshal.ReadInt32(internalBuffer, 12) / 100); // nanoseconds 
-				}
-			}		
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region GetDate
-		///
-		/// GetDate method
-		/// 
-		public DateTime GetDate(int col)
-		{
-			return (DateTime)GetDateInternal(col);
-		}
-		internal object GetDateInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_DATE, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = new DateTime(
-						Marshal.ReadInt16(internalBuffer, 0),  // year
-						Marshal.ReadInt16(internalBuffer, 2),  // month
-						Marshal.ReadInt16(internalBuffer, 4));  // day
-				}
-			}		
-			return _resultSet[col];
-		}
-
-		#endregion
-
-		#region GetTime
-		///
-		/// GetTime method
-		/// 
-		public TimeSpan GetTimeSpan(int col)
-		{
-			return (TimeSpan)GetTimeInternal(col);
-		}
-		public TimeSpan GetTime(int col)
-		{
-			return (TimeSpan)GetTimeInternal(col);
-		}
-		internal object GetTimeInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_TIME, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = new TimeSpan(
-						Marshal.ReadInt16(internalBuffer, 0),  // Hour
-						Marshal.ReadInt16(internalBuffer, 2),  // Minute
-						Marshal.ReadInt16(internalBuffer, 4)); // Second
-				}
-			}		
-			return _resultSet[col];
-		}
-
-		#endregion
-
-
-		#region GetDecimal
-		///
-		///GetDecimal method
-		///
-
-		public Decimal GetDecimal(int col)
-		{
-			return (Decimal)GetDecimalInternal(col);
-		}
-		internal object GetDecimalInternal(int col)
-		{
-			object tmp = GetStringInternal(col);
-			if(tmp is string)
-			{
-				_resultSet[col] = decimal.Parse(((string)_resultSet[col]).Replace(',','.'),	// sometimes we get a '.' and sometimes we get a ','
-					System.Globalization.CultureInfo.InvariantCulture);
-			}
-			//			if((col < 0) || (col >= fieldCount))	// only works on windows UDB DB2 V8?
-			//			{
-			//				throw new IndexOutOfRangeException("col");
-			//			}
-			//			if(!hasData)
-			//			{
-			//				throw new InvalidOperationException("No data");
-			//			}
-			//			if(_resultSet == null)
-			//			{
-			//				_resultSet = new object[fieldCount];
-			//			}
-			//			if(_resultSet[col] == null)
-			//			{
-			//				int len;
-			//				short sqlRet = Db2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)Db2Constants.SQL_C_DECIMAL_OLEDB, internalBuffer, internalBufferSize, out len);
-			//				if(len == Db2Constants.SQL_NULL_DATA)
-			//				{
-			//					_resultSet[col] = DBNull.Value;
-			//				}
-			//				else
-			//				{
-			//					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(decimal));
-			//				}
-			//			}		
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region GetDouble 
-		///
-		/// GetDouble 
-		/// 
-		public Double GetDouble(int col)
-		{
-			return (Double)GetDoubleInternal(col);
-		}
-		internal object GetDoubleInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_DOUBLE, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(double));
-				}
-			}		
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region GetFieldType
-		///
-		/// Type GetFieldType
-		///
-		public Type GetFieldType(int col)
-		{
-			if(columnInfo == null)
-			{
-				GetColumnInfo();
-			}
-			return GetManagedType(columnInfo[col].Sqltype);
-		}
-		#endregion
-
-		#region GetFloat
-		///
-		/// GetFloat
-		/// 
-		public float GetFloat(int col)
-		{
-			return (float)GetFloatInternal(col);
-		}
-		internal object GetFloatInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_REAL, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(float));
-				}
-			}		
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region The GetInt?? series
-		///
-		///GetInt16
-		///
-		public short GetInt16(int col)
-		{
-			return (short)GetInt16Internal(col);
-		}
-
-		internal object GetInt16Internal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_SSHORT, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(short));
-				}
-			}		
-			return _resultSet[col];
-		}
-		///
-		///GetInt32
-		///
-		public int GetInt32(int col)
-		{
-			return (int)GetInt32Internal(col);
-		}
-
-		internal object GetInt32Internal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_SLONG, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(int));
-				}
-			}		
-			return _resultSet[col];
-		}
-
-		///
-		///GetInt64
-		///
-		public long GetInt64(int col)
-		{
-			return (long)GetInt64Internal(col);
-		}
-
-		internal object GetInt64Internal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int len;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_SBIGINT, internalBuffer, internalBufferSize, out len);
-				if(len == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(long));
-				}
-			}		
-			return _resultSet[col];
-		}
-
-		#endregion
-
-		#region GetName
-		///
-		///GetName, returns the name of the field
-		///
-		public string GetName(int col)
-		{
-			if(columnInfo == null)
-			{
-				GetColumnInfo();
-			}
-			return columnInfo[col].Colname;
-		}
-		#endregion
-
-		#region GetOrdinal
-		///
-		/// GetOrdinal, return the index of the named column
-		/// 
-		public int GetOrdinal(string name)
-		{
-			if(columnInfo == null)
-			{
-				GetColumnInfo();
-			}
-			object ordinal = columnsNames[name.ToUpper()];
-			if(ordinal == null)
-			{
-				throw new IndexOutOfRangeException("name");
-			}
-			return (int)ordinal;
-		}
-		#endregion
-
-		#region GetString
-		///
-		/// GetString returns a string
-		/// 
-		public string GetString(int col)
-		{
-			return (string)GetStringInternal(col);
-		}
-
-		public object GetStringInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int length;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_WCHAR, (StringBuilder)null, 0, out length);
-				if(length == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					IntPtr mem = Marshal.AllocHGlobal(length + 2);
-					sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_WCHAR, mem, length + 2, out length);
-					_resultSet[col] = Marshal.PtrToStringUni(mem);
-					Marshal.FreeHGlobal(mem);
-				}
-			}			
-			return _resultSet[col];
-		}
-		#endregion
-
-		#region GetValue
-		///
-		/// GetVCalue, returns an object
-		/// 
-		public object GetValue(int col)
-		{
-			return this[col];
-		}
-		#endregion
-
-		#region GetValues
-		///
-		/// GetValues returns all columns in the row through the argument, and the number of columns in the return value
-		/// 
-		public int GetValues(object[] values)
-		{
-			int count = Math.Min(fieldCount, values.Length);
-
-			for (int i = 0; i < count; i++)
-			{
-				values[i] = this[i];
-			 
-			}
-			  
-			return count;
-		}
-		#endregion
-
-		#region IsDBNull
-		///
-		/// IsDBNull Is the column null
-		/// 
-		public bool IsDBNull(int col)
-		{
-			//Proper implementation once I get the SQLDescribe/SQLBind/SQLFetch stuff in place
-			return Convert.IsDBNull(this[col]);
-		}
-		#endregion
-
-		#endregion  ///For IDataRecord
-
-		#region private methods
-		
-		private DataTable BuildNewSchemaTable()
-		{
-			DataTable schemaTable = new DataTable("SchemaTable");
-
-			schemaTable.Columns.Add(new DataColumn("ColumnName", typeof(string)));
-			schemaTable.Columns.Add(new DataColumn("ColumnOrdinal", typeof(int)));
-			schemaTable.Columns.Add(new DataColumn("ColumnSize", typeof(int)));
-			schemaTable.Columns.Add(new DataColumn("NumericPrecision", typeof(short)));
-			schemaTable.Columns.Add(new DataColumn("NumericScale", typeof(short)));
-			schemaTable.Columns.Add(new DataColumn("DataType", typeof(System.Type)));
-			schemaTable.Columns.Add(new DataColumn("ProviderType", typeof(int)));
-			schemaTable.Columns.Add(new DataColumn("IsLong", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("AllowDBNull", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("IsReadOnly", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("IsRowVersion", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("IsUnique", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("IsKey", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("IsKeyColumn", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("IsAutoIncrement", typeof(bool)));
-			schemaTable.Columns.Add(new DataColumn("BaseSchemaName", typeof(string)));
-			schemaTable.Columns.Add(new DataColumn("BaseCatalogName", typeof(string)));
-			schemaTable.Columns.Add(new DataColumn("BaseTableName", typeof(string)));
-			schemaTable.Columns.Add(new DataColumn("BaseColumnName", typeof(string)));
-
-			return schemaTable;
-		}
-		#endregion
-		
-		private void InitMem(int memSize, ref IntPtr ptr){
-			if (ptr.ToInt32() == 0){
-				unsafe{
-					fixed(byte* arr = new byte[memSize]){
-						ptr = new IntPtr(arr); 
-					}
-				}
-			}	
-		}
-		
-		private Type GetManagedType(int sql_type)
-		{
-			switch(sql_type)
-			{
-				case DB2Constants.SQL_INTEGER:
-					return typeof(int);
-				case DB2Constants.SQL_SMALLINT:
-					return typeof(short);
-				case DB2Constants.SQL_BIGINT:
-					return typeof(long);
-				case DB2Constants.SQL_DOUBLE:
-					return typeof(double);
-				case DB2Constants.SQL_DECIMAL:
-					return typeof(decimal);
-				case DB2Constants.SQL_DATETIME:
-				case DB2Constants.SQL_TYPE_DATE:
-				case DB2Constants.SQL_TYPE_TIMESTAMP:
-					return typeof(DateTime);
-				case DB2Constants.SQL_TYPE_TIME:
-					return typeof(TimeSpan);
-				case DB2Constants.SQL_CHAR:
-				case DB2Constants.SQL_VARCHAR:
-				case DB2Constants.SQL_TYPE_CLOB:
-					return typeof(string);
-				case DB2Constants.SQL_TYPE_BLOB:
-				case DB2Constants.SQL_TYPE_BINARY:
-				case DB2Constants.SQL_LONGVARBINARY:
-				case DB2Constants.SQL_VARBINARY:
-					return typeof(byte[]);
-			}
-			throw new NotImplementedException("Unknown SQL type " + sql_type);
-		}
-		
-		private bool IsLong(short sql_type)
-		{
-			switch(sql_type)
-			{
-				case DB2Constants.SQL_TYPE_CLOB:
-				case DB2Constants.SQL_TYPE_BLOB:
-					return true;
-			}
-			return false;
-		}
-		private object GetBlobDataInternal(int col)
-		{
-			if((col < 0) || (col >= fieldCount))
-			{
-				throw new IndexOutOfRangeException("col");
-			}
-			if(!hasData)
-			{
-				throw new InvalidOperationException("No data");
-			}
-			if(_resultSet == null)
-			{
-				_resultSet = new object[fieldCount];
-			}
-			if(_resultSet[col] == null)
-			{
-				int length;
-				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_BINARY, (StringBuilder)null, 0, out length);
-				if(length == DB2Constants.SQL_NULL_DATA)
-				{
-					_resultSet[col] = DBNull.Value;
-				}
-				else
-				{
-					byte[] result = new byte[length];
-					sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_BINARY, result, length, out length);
-					_resultSet[col] = result;
-				}
-			}			
-			return _resultSet[col];
-		}
-	}
-
-}
-#endregion
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Data;
+using System.Runtime.InteropServices;
+using System.Globalization;
+using System.Text;
+
+namespace IBM.Data.DB2
+{
+	/// <summary>
+	/// Summary description for DB2ClientDataReader.
+	/// DB2ClientDataReader. 
+	/// </summary>
+	public sealed class DB2DataReader : MarshalByRefObject, IDataReader
+	{
+		private struct ColumnInfo
+		{
+			public string	Colname;
+			public int		Sqltype;
+		}
+
+		private object[] _resultSet;
+		private ColumnInfo[] columnInfo;
+		private Hashtable columnsNames;
+		private const int internalBufferSize = 100;
+		private IntPtr internalBuffer;
+		internal DB2Connection db2Conn; 
+		internal DB2Command db2Comm; 
+		internal IntPtr hwndStmt;
+		private int recordsAffected;
+		private bool hasData = false;
+		private int fieldCount = -1;
+		private CommandBehavior behavior;
+		private bool hasRows;
+		private bool skipReadOnce;
+	
+		
+		#region Constructors and destructors
+		/// <summary>
+		/// 
+		/// </summary>
+		/// <param name="con"></Connection object to Db2>
+		/// <param name="com"></Command object>
+		internal DB2DataReader(DB2Connection con, DB2Command com, CommandBehavior behavior)
+		{
+			db2Conn = con;
+			db2Comm = com;
+			this.behavior = behavior;
+			hwndStmt = com.statementHandle;    //We have access to the results through the statement handle
+			
+			_resultSet = null;
+			
+			GetFieldCountAndAffectedRows();
+			internalBuffer = Marshal.AllocHGlobal(internalBufferSize);
+
+			isClosed = false;
+		}
+
+		#endregion
+
+		private void GetFieldCountAndAffectedRows()
+		{
+			short sqlRet;
+			recordsAffected = -1;
+			if((behavior & CommandBehavior.SchemaOnly) == 0)
+			{
+				//How many rows affected.  numRows will be -1 if we aren't dealing with an Insert, Delete or Update, or if the statement did not execute successfully
+				sqlRet = DB2CLIWrapper.SQLRowCount(hwndStmt, out recordsAffected);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "SQLExecDirect error.", db2Conn);
+			}			
+			short colCount;
+			sqlRet = DB2CLIWrapper.SQLNumResultCols(hwndStmt, out colCount);
+			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "DB2ClientDataReader - SQLNumResultCols", db2Conn);
+			fieldCount = colCount;
+		}
+
+		#region Properties
+
+		#region Depth property 
+		///
+		///Depth of nesting for the current row, need to figure out what this translates into 
+		///with DB2.
+		///
+		private int depth = 0;
+		public int Depth
+		{
+			get
+			{
+				if(isClosed)
+				{
+					throw new InvalidOperationException("Reader is closed");
+				}
+				return depth;
+			}
+		}
+		#endregion
+
+		#region IsClosed property
+		/// <summary>
+		/// True if the reader is closed.
+		/// </summary>
+		private bool isClosed = true;
+		public bool IsClosed
+		{
+			get
+			{
+				return isClosed;
+			}
+		}
+		#endregion
+
+		#region RecordsAffected property
+		///
+		/// Number of records affected by this operation.  Will be zero until we close the 
+		/// reader
+		/// 
+		
+		public int RecordsAffected
+		{
+			get
+			{
+				return recordsAffected;
+			}
+		}
+		#endregion
+
+		#endregion
+
+		#region Methods
+
+
+
+		#region Close method
+
+		public void Close()
+		{
+			Dispose();
+		}
+
+		public void Dispose()
+		{
+			Dispose(true);
+			GC.SuppressFinalize(this);
+		}
+
+		void Dispose(bool disposing)
+		{
+			if(!isClosed) 
+			{
+				if(disposing)
+				{
+					short sqlRet;
+					do
+					{
+						sqlRet = DB2CLIWrapper.SQLMoreResults(this.hwndStmt);
+						DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Db2ClientDataReader - SQLMoreResults", db2Conn);
+					} while(sqlRet != DB2Constants.SQL_NO_DATA_FOUND);
+
+					_resultSet = null;
+					hasData = false;
+					isClosed=true;
+
+					if(db2Comm != null)
+					{
+						db2Comm.DataReaderClosed();
+						db2Comm = null;
+					}
+				}
+				Marshal.FreeHGlobal(internalBuffer);
+			}
+			isClosed = true;
+		}
+
+		~DB2DataReader()
+		{
+			Dispose(false);
+		}
+
+		#endregion
+
+		#region GetSchemaTable 
+
+		public DataTable GetSchemaTable()
+		{
+			if(isClosed)
+			{
+				throw new InvalidOperationException("No data exists for the row/column.");
+			}
+
+			DataTable _schemaTable = BuildNewSchemaTable();
+			
+			short sqlRet;
+			IntPtr ptrCharacterAttribute = IntPtr.Zero;
+			InitMem(256, ref ptrCharacterAttribute);
+			short buflen = 256;
+			short strlen = 256;
+			int numericattr = 0;
+			int colsize;
+			string colname;
+			int sqltype;
+			int precision;
+			int scale;
+			int nullable;
+			int updatable;
+			int isautoincrement;
+			string baseschemaname;
+			//string basecatalogname;
+			string basetablename;
+			string basecolumnname;
+
+			string previousTableName = null;
+			string previousSchemaName = null;
+			bool differentTablesUsed = false;
+
+			for (short i=1; i<=fieldCount; i++) 
+			{
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_COLUMN_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				colname = Marshal.PtrToStringUni(ptrCharacterAttribute);
+				
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_CONCISE_TYPE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				sqltype = numericattr;
+				
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_OCTET_LENGTH, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				colsize = numericattr;
+				
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_PRECISION, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				precision = numericattr;
+				
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_SCALE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				scale = numericattr;
+
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_NULLABLE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				nullable = numericattr;
+
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_UPDATABLE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				updatable = numericattr;
+				
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_AUTO_UNIQUE_VALUE, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				isautoincrement = numericattr;
+				
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_BASE_COLUMN_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				basecolumnname = Marshal.PtrToStringUni(ptrCharacterAttribute);
+
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_BASE_TABLE_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				basetablename = Marshal.PtrToStringUni(ptrCharacterAttribute);
+				
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)i, (short)DB2Constants.SQL_DESC_SCHEMA_NAME, ptrCharacterAttribute, buflen, ref strlen, ref numericattr);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable", db2Conn);
+				baseschemaname = Marshal.PtrToStringUni(ptrCharacterAttribute);
+				DataRow r = _schemaTable.NewRow();
+				
+				r["ColumnName"] = colname;
+				r["ColumnOrdinal"] = i - 1;
+				r["ColumnSize"] = colsize;
+				r["NumericPrecision"] = precision;
+				r["NumericScale"] = scale;
+				r["DataType"] = GetManagedType((short)sqltype);
+				r["ProviderType"] = sqltype;
+				r["IsLong"] = IsLong((short)sqltype);
+				r["AllowDBNull"] = (nullable==0) ? false : true;
+				r["IsReadOnly"] = (basecolumnname == null) || (basecolumnname == "");
+				r["IsRowVersion"] = false;
+				r["IsUnique"] = false;
+				r["IsKeyColumn"] = false;
+				r["IsAutoIncrement"] = (isautoincrement==0) ? false : true;
+				r["BaseSchemaName"] = baseschemaname;
+				r["BaseCatalogName"] = "";
+				r["BaseTableName"] = basetablename;
+				r["BaseColumnName"] = basecolumnname;
+				
+				_schemaTable.Rows.Add(r);
+
+				if(!differentTablesUsed)
+				{
+					if(((previousSchemaName == baseschemaname) && (previousTableName == basetablename)) || 
+						(previousTableName == null))
+					{
+						previousTableName = basetablename;
+						previousSchemaName = baseschemaname;
+					}
+					else
+					{
+						differentTablesUsed = true;
+					}
+				}
+			}
+			if(!differentTablesUsed && 
+				((behavior & CommandBehavior.KeyInfo) != 0) &&
+				(db2Comm.Transaction == null) &&
+				(previousTableName != null) &&
+				(previousTableName != ""))
+			{
+				DB2Command schemaInfoCommand = db2Conn.CreateCommand();
+				schemaInfoCommand.CommandText = 
+					"select concat(concat(INDSCHEMA,'.'),INDNAME), COLNAMES, UNIQUERULE from syscat.INDEXES " +
+					"where TABSCHEMA=? and TABNAME=? and uniquerule in ('P','U') order by UNIQUERULE";
+				schemaInfoCommand.Parameters.Add("TABSCHEMA", previousSchemaName);
+				schemaInfoCommand.Parameters.Add("TABNAME", previousTableName);
+				using(DB2DataReader reader = schemaInfoCommand.ExecuteReader())
+				{
+					bool keyColumnSet = false;
+					while(reader.Read())
+					{
+						string indexName = reader.GetString(0);
+						string[] indexColumns = reader.GetString(1).TrimStart('-', '+').Split('-', '+');
+						bool primary = reader.GetString(2) == "P";
+
+						bool allColumnsFound = true;
+						for(int i= 0; i < indexColumns.Length; i++)
+						{
+							int ordinal = FieldNameLookup(_schemaTable, indexColumns[i]);
+							if(ordinal < 0)
+							{
+								allColumnsFound = false;
+								break;
+							}
+							if(indexColumns.Length == 1)
+								_schemaTable.Rows[ordinal]["IsUnique"] = true;
+						}
+						if(allColumnsFound && !keyColumnSet)
+						{
+							for(int i= 0; i < indexColumns.Length; i++)
+								_schemaTable.Rows[FieldNameLookup(_schemaTable, indexColumns[i])]["IsKeyColumn"] = true;
+							keyColumnSet = true;
+						}
+					}
+				}
+				if(db2Conn.openConnection.MajorVersion >= 8)
+				{
+					try
+					{
+						schemaInfoCommand.CommandText = 
+							"select COLNAME from SYSCAT.COLIDENTATTRIBUTES where TABSCHEMA=? and TABNAME=?";
+						using(DB2DataReader reader = schemaInfoCommand.ExecuteReader())
+						{
+							while(reader.Read())
+							{
+								string columnName = reader.GetString(0);
+
+								int ordinal = FieldNameLookup(_schemaTable, columnName);
+								if(ordinal >= 0)
+									_schemaTable.Rows[ordinal]["IsAutoIncrement"] = true;
+							}
+						}
+					}
+					catch{}
+				}
+			}
+			return _schemaTable;
+		}
+		#endregion
+
+		#region NextResult 
+
+		public bool NextResult()
+		{
+			hasRows = false;
+			skipReadOnce = false;
+			hasData = false;
+			columnInfo = null;
+			_resultSet = null;
+		
+			if((behavior & (CommandBehavior.SchemaOnly | CommandBehavior.SingleResult)) != 0)
+				return false;
+
+			short sqlRet = DB2CLIWrapper.SQLMoreResults(this.hwndStmt);
+			if(sqlRet == DB2Constants.SQL_NO_DATA_FOUND) 
+				return false;
+			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "Db2ClientDataReader - SQLMoreResults", db2Conn);
+			return true;
+		}
+		#endregion
+
+		#region Read
+
+		public bool HasRows
+		{
+			get
+			{
+				if(hasData)
+					return true;
+
+				hasRows = Read();
+				hasData = false;
+				skipReadOnce = true;
+				return hasRows;
+			}
+		}
+
+		public bool Read()
+		{
+			if (isClosed)
+				throw new InvalidOperationException("Reader is closed");
+			if((behavior & CommandBehavior.SchemaOnly) != 0)
+				return false;
+
+			if(skipReadOnce)
+			{
+				skipReadOnce = false;
+				hasData = hasRows;
+				return hasRows;
+			}
+
+			_resultSet = null;
+			hasData = false;
+
+			short sqlRet = DB2CLIWrapper.SQLFetch(hwndStmt);
+			if(sqlRet == DB2Constants.SQL_NO_DATA_FOUND)
+				return false;
+			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "DB2ClientDataReader - SQLFetch 1", db2Conn);
+
+			hasData = true;
+			return true;
+		}
+		#endregion
+
+		#region GetColumnInfo
+		private void GetColumnInfo()
+		{
+			if(isClosed)
+				throw new InvalidOperationException("Reader is closed");
+			if(fieldCount <= 0)
+				throw new InvalidOperationException("No Fields found"); // TODO: check error
+			if(columnInfo != null)
+				return;
+		
+			columnInfo = new ColumnInfo[fieldCount];
+			columnsNames = new Hashtable(fieldCount);
+			
+			StringBuilder sb = new StringBuilder(400);
+			for(int i = 0; i < columnInfo.Length; i++)
+			{
+				short sqlRet;
+				short strlen;
+				int numericAttribute;
+
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)(i + 1), (short)DB2Constants.SQL_DESC_BASE_COLUMN_NAME, sb, (short)sb.Capacity, out strlen, out numericAttribute);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable");
+				columnInfo[i].Colname = sb.ToString();
+				columnsNames[columnInfo[i].Colname.ToUpper()] = i;
+
+				sqlRet = DB2CLIWrapper.SQLColAttribute(hwndStmt, (short)(i + 1), (short)DB2Constants.SQL_DESC_CONCISE_TYPE, sb, (short)sb.Capacity, out strlen, out columnInfo[i].Sqltype);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_STMT, hwndStmt, "GetSchemaTable");
+
+
+			}
+		}
+		#endregion
+
+		#region Describe/Bind/Fetch functions
+		///
+		///Broke these out so that we can use different paths for Immediate executions and Prepared executions
+		/// <summary>
+		/// Does the describe and bind steps for the query result set.  Called for both immediate and prepared queries. 
+		/// </summary>
+		
+/// <summary>
+/// FetchResults does  what it says.
+/// </summary>
+/// <param name="dbVals"></param>
+/// <param name="sqlLen_or_IndPtr"></param>
+/// <param name="_resultSet"></param>
+		private int FieldNameLookup(DataTable _schemaTable, string name)
+		{
+			for(int i = 0; i < _schemaTable.Rows.Count; i++)
+			{
+				if(CultureInfo.CurrentCulture.CompareInfo.Compare(name, (string)_schemaTable.Rows[i]["BaseColumnName"],
+					CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase) == 0)
+				{
+					return i;
+				}
+			}
+			return -1;
+		}
+		
+		#endregion
+
+		#region IDataRecord Interface
+		///Code for the IDataRecord interface
+		///
+		#region FieldCount
+		///
+		///
+		public int FieldCount
+		{
+			get
+			{
+				if (isClosed)
+					throw new InvalidOperationException("Reader is closed");
+
+				return fieldCount;
+			}
+		}
+		#endregion
+
+		#region Item accessors
+		public object this[string name]
+		{
+			get
+			{
+				int ordinal = GetOrdinal(name);
+				return this[ordinal];
+			}
+		}
+		public object this[int col]
+		{
+			get
+			{
+				if(columnInfo == null)
+				{
+					GetColumnInfo();
+				}
+				switch(columnInfo[col].Sqltype)
+				{
+					case DB2Constants.SQL_INTEGER:
+						return GetInt32Internal(col);
+					case DB2Constants.SQL_SMALLINT:
+						return GetInt16Internal(col);
+					case DB2Constants.SQL_BIGINT:
+						return GetInt64Internal(col);
+					case DB2Constants.SQL_DOUBLE:
+						return GetDoubleInternal(col);
+					case DB2Constants.SQL_REAL:
+						return GetFloatInternal(col);
+					case DB2Constants.SQL_DECIMAL:
+						return GetDecimalInternal(col);
+					case DB2Constants.SQL_DATETIME:
+					case DB2Constants.SQL_TYPE_TIMESTAMP:
+						return GetDateTimeInternal(col);
+					case DB2Constants.SQL_TYPE_DATE:
+						return GetDateInternal(col);
+					case DB2Constants.SQL_TYPE_TIME:
+						return GetTimeInternal(col);
+					case DB2Constants.SQL_TYPE_CLOB:
+					case DB2Constants.SQL_CHAR:
+					case DB2Constants.SQL_VARCHAR:
+						return GetStringInternal(col);
+					case DB2Constants.SQL_TYPE_BLOB:
+					case DB2Constants.SQL_TYPE_BINARY:
+					case DB2Constants.SQL_LONGVARBINARY:
+					case DB2Constants.SQL_VARBINARY:
+						return GetBlobDataInternal(col);
+				}
+				throw new NotImplementedException("Unknown SQL type " + columnInfo[col].Sqltype);
+			}
+		}
+		#endregion
+
+		#region GetBytes
+		///
+		///  GetBytes, return a stream of bytes
+		///
+		public long GetBytes(int col, long fieldOffset, byte[] buffer, int bufferOffset, int length)
+		{
+			// TODO: need better implementation for big BLOBs
+
+			byte[] sourceArray = (byte[])this[col];
+			if(buffer == null)
+			{
+				Array.Copy(sourceArray, fieldOffset, buffer, bufferOffset, length);
+			}
+			return sourceArray.LongLength;
+		}
+		#endregion
+
+		#region GetChars
+		///
+		///GetChars, returns char array
+		///
+		public long GetChars(int col, long fieldOffset, char[] buffer, int bufferOffset, int length)
+		{
+			// TODO: need better implementation for big CLOBs
+
+			string sourceString = GetString(col);
+			if(buffer == null)
+			{
+				sourceString.CopyTo((int)fieldOffset, buffer, bufferOffset, length);
+			}
+			return (long)sourceString.Length;
+		}
+		#endregion
+
+		#region GetBoolean method
+
+		public Boolean GetBoolean(int col)
+		{
+			return (Boolean)GetBooleanInternal(col);
+		}
+		internal object GetBooleanInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_BIT, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.ReadByte(internalBuffer) != 0;
+				}
+			}		
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region GetGuid
+		///
+		/// GetDateTime method
+		/// 
+		public Guid GetGuid(int col)
+		{
+			return (Guid)GetGuidInternal(col);
+		}
+		internal object GetGuidInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_GUID, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(Guid)); 
+				}
+			}		
+			return _resultSet[col];
+		}
+
+		#endregion
+
+		#region GetByte
+		///
+		///GetByte
+		///
+		public Byte GetByte(int col)
+		{
+			return (Byte)GetByteInternal(col);
+		}
+		internal object GetByteInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_UTINYINT, internalBuffer, 10, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.ReadByte(internalBuffer);
+				}
+			}		
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region GetChar
+		///
+		///GetChar, return column as a char
+		///
+		public Char GetChar(int col)
+		{
+			return (Char)GetCharInternal(col);
+		}
+		internal object GetCharInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_WCHAR, internalBuffer, 10, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(char));
+				}
+			}		
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region GetData
+		///
+		/// GetData method
+		/// 
+		public IDataReader GetData(int col)
+		{
+			//Have to research this one, not quite sure what the docs mean
+			//DB2 does have some structured data types, is that what this is for?
+			throw new NotSupportedException();
+		}
+		#endregion
+
+		#region GetDataTypeName
+		///
+		///GetDataTypeName return the type of data
+		///
+		public string GetDataTypeName(int col)
+		{
+			if(columnInfo == null)
+			{
+				GetColumnInfo();
+			}
+			switch(columnInfo[col].Sqltype)
+			{
+				case DB2Constants.SQL_INTEGER:
+					return "INTEGER";
+				case DB2Constants.SQL_SMALLINT:
+					return "SMALLINT";
+				case DB2Constants.SQL_BIGINT:
+					return "BIGINT";
+				case DB2Constants.SQL_DOUBLE:
+					return "DOUBLE";
+				case DB2Constants.SQL_REAL:
+					return "REAL";
+				case DB2Constants.SQL_DECIMAL:
+					return "DECIMAL";
+				case DB2Constants.SQL_DATETIME:
+					return "DATETIME";
+				case DB2Constants.SQL_TYPE_TIMESTAMP:
+					return "TIMESTAMP";
+				case DB2Constants.SQL_TYPE_DATE:
+					return "DATE";
+				case DB2Constants.SQL_TYPE_TIME:
+					return "TIME";
+				case DB2Constants.SQL_TYPE_CLOB:
+					return "CLOB";
+				case DB2Constants.SQL_CHAR:
+					return "CHAR";
+				case DB2Constants.SQL_VARCHAR:
+					return "VARCHAR";
+				case DB2Constants.SQL_TYPE_BLOB:
+					return "BLOB";
+				case DB2Constants.SQL_TYPE_BINARY:
+					return "BINARY";
+				case DB2Constants.SQL_LONGVARBINARY:
+					return "LONGVARBINARY";
+				case DB2Constants.SQL_VARBINARY:
+					return "VARBINARY";
+			}
+			throw new NotImplementedException("Unknown SQL type " + columnInfo[col].Sqltype);
+		}
+		#endregion
+
+		#region GetDateTime
+		///
+		/// GetDateTime method
+		/// 
+
+		public DateTime GetDateTime(int col)
+		{
+			return (DateTime)GetDateTimeInternal(col);
+		}
+		internal object GetDateTimeInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_TIMESTAMP, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					DateTime ret = new DateTime(
+						Marshal.ReadInt16(internalBuffer, 0),  // year
+						Marshal.ReadInt16(internalBuffer, 2),  // month
+						Marshal.ReadInt16(internalBuffer, 4),  // day
+						Marshal.ReadInt16(internalBuffer, 6),  // hour
+						Marshal.ReadInt16(internalBuffer, 8),  // minute
+						Marshal.ReadInt16(internalBuffer, 10));// second
+					_resultSet[col] = ret.AddTicks(Marshal.ReadInt32(internalBuffer, 12) / 100); // nanoseconds 
+				}
+			}		
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region GetDate
+		///
+		/// GetDate method
+		/// 
+		public DateTime GetDate(int col)
+		{
+			return (DateTime)GetDateInternal(col);
+		}
+		internal object GetDateInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_DATE, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = new DateTime(
+						Marshal.ReadInt16(internalBuffer, 0),  // year
+						Marshal.ReadInt16(internalBuffer, 2),  // month
+						Marshal.ReadInt16(internalBuffer, 4));  // day
+				}
+			}		
+			return _resultSet[col];
+		}
+
+		#endregion
+
+		#region GetTime
+		///
+		/// GetTime method
+		/// 
+		public TimeSpan GetTimeSpan(int col)
+		{
+			return (TimeSpan)GetTimeInternal(col);
+		}
+		public TimeSpan GetTime(int col)
+		{
+			return (TimeSpan)GetTimeInternal(col);
+		}
+		internal object GetTimeInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_TIME, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = new TimeSpan(
+						Marshal.ReadInt16(internalBuffer, 0),  // Hour
+						Marshal.ReadInt16(internalBuffer, 2),  // Minute
+						Marshal.ReadInt16(internalBuffer, 4)); // Second
+				}
+			}		
+			return _resultSet[col];
+		}
+
+		#endregion
+
+
+		#region GetDecimal
+		///
+		///GetDecimal method
+		///
+
+		public Decimal GetDecimal(int col)
+		{
+			return (Decimal)GetDecimalInternal(col);
+		}
+		internal object GetDecimalInternal(int col)
+		{
+			object tmp = GetStringInternal(col);
+			if(tmp is string)
+			{
+				_resultSet[col] = decimal.Parse(((string)_resultSet[col]).Replace(',','.'),	// sometimes we get a '.' and sometimes we get a ','
+					System.Globalization.CultureInfo.InvariantCulture);
+			}
+			//			if((col < 0) || (col >= fieldCount))	// only works on windows UDB DB2 V8?
+			//			{
+			//				throw new IndexOutOfRangeException("col");
+			//			}
+			//			if(!hasData)
+			//			{
+			//				throw new InvalidOperationException("No data");
+			//			}
+			//			if(_resultSet == null)
+			//			{
+			//				_resultSet = new object[fieldCount];
+			//			}
+			//			if(_resultSet[col] == null)
+			//			{
+			//				int len;
+			//				short sqlRet = Db2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)Db2Constants.SQL_C_DECIMAL_OLEDB, internalBuffer, internalBufferSize, out len);
+			//				if(len == Db2Constants.SQL_NULL_DATA)
+			//				{
+			//					_resultSet[col] = DBNull.Value;
+			//				}
+			//				else
+			//				{
+			//					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(decimal));
+			//				}
+			//			}		
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region GetDouble 
+		///
+		/// GetDouble 
+		/// 
+		public Double GetDouble(int col)
+		{
+			return (Double)GetDoubleInternal(col);
+		}
+		internal object GetDoubleInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_DOUBLE, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(double));
+				}
+			}		
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region GetFieldType
+		///
+		/// Type GetFieldType
+		///
+		public Type GetFieldType(int col)
+		{
+			if(columnInfo == null)
+			{
+				GetColumnInfo();
+			}
+			return GetManagedType(columnInfo[col].Sqltype);
+		}
+		#endregion
+
+		#region GetFloat
+		///
+		/// GetFloat
+		/// 
+		public float GetFloat(int col)
+		{
+			return (float)GetFloatInternal(col);
+		}
+		internal object GetFloatInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_REAL, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(float));
+				}
+			}		
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region The GetInt?? series
+		///
+		///GetInt16
+		///
+		public short GetInt16(int col)
+		{
+			return (short)GetInt16Internal(col);
+		}
+
+		internal object GetInt16Internal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_SSHORT, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(short));
+				}
+			}		
+			return _resultSet[col];
+		}
+		///
+		///GetInt32
+		///
+		public int GetInt32(int col)
+		{
+			return (int)GetInt32Internal(col);
+		}
+
+		internal object GetInt32Internal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_SLONG, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(int));
+				}
+			}		
+			return _resultSet[col];
+		}
+
+		///
+		///GetInt64
+		///
+		public long GetInt64(int col)
+		{
+			return (long)GetInt64Internal(col);
+		}
+
+		internal object GetInt64Internal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int len;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_SBIGINT, internalBuffer, internalBufferSize, out len);
+				if(len == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					_resultSet[col] = Marshal.PtrToStructure(internalBuffer, typeof(long));
+				}
+			}		
+			return _resultSet[col];
+		}
+
+		#endregion
+
+		#region GetName
+		///
+		///GetName, returns the name of the field
+		///
+		public string GetName(int col)
+		{
+			if(columnInfo == null)
+			{
+				GetColumnInfo();
+			}
+			return columnInfo[col].Colname;
+		}
+		#endregion
+
+		#region GetOrdinal
+		///
+		/// GetOrdinal, return the index of the named column
+		/// 
+		public int GetOrdinal(string name)
+		{
+			if(columnInfo == null)
+			{
+				GetColumnInfo();
+			}
+			object ordinal = columnsNames[name.ToUpper()];
+			if(ordinal == null)
+			{
+				throw new IndexOutOfRangeException("name");
+			}
+			return (int)ordinal;
+		}
+		#endregion
+
+		#region GetString
+		///
+		/// GetString returns a string
+		/// 
+		public string GetString(int col)
+		{
+			return (string)GetStringInternal(col);
+		}
+
+		public object GetStringInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int length;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_WCHAR, (StringBuilder)null, 0, out length);
+				if(length == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					IntPtr mem = Marshal.AllocHGlobal(length + 2);
+					sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_WCHAR, mem, length + 2, out length);
+					_resultSet[col] = Marshal.PtrToStringUni(mem);
+					Marshal.FreeHGlobal(mem);
+				}
+			}			
+			return _resultSet[col];
+		}
+		#endregion
+
+		#region GetValue
+		///
+		/// GetVCalue, returns an object
+		/// 
+		public object GetValue(int col)
+		{
+			return this[col];
+		}
+		#endregion
+
+		#region GetValues
+		///
+		/// GetValues returns all columns in the row through the argument, and the number of columns in the return value
+		/// 
+		public int GetValues(object[] values)
+		{
+			int count = Math.Min(fieldCount, values.Length);
+
+			for (int i = 0; i < count; i++)
+			{
+				values[i] = this[i];
+			 
+			}
+			  
+			return count;
+		}
+		#endregion
+
+		#region IsDBNull
+		///
+		/// IsDBNull Is the column null
+		/// 
+		public bool IsDBNull(int col)
+		{
+			//Proper implementation once I get the SQLDescribe/SQLBind/SQLFetch stuff in place
+			return Convert.IsDBNull(this[col]);
+		}
+		#endregion
+
+		#endregion  ///For IDataRecord
+
+		#region private methods
+		
+		private DataTable BuildNewSchemaTable()
+		{
+			DataTable schemaTable = new DataTable("SchemaTable");
+
+			schemaTable.Columns.Add(new DataColumn("ColumnName", typeof(string)));
+			schemaTable.Columns.Add(new DataColumn("ColumnOrdinal", typeof(int)));
+			schemaTable.Columns.Add(new DataColumn("ColumnSize", typeof(int)));
+			schemaTable.Columns.Add(new DataColumn("NumericPrecision", typeof(short)));
+			schemaTable.Columns.Add(new DataColumn("NumericScale", typeof(short)));
+			schemaTable.Columns.Add(new DataColumn("DataType", typeof(System.Type)));
+			schemaTable.Columns.Add(new DataColumn("ProviderType", typeof(int)));
+			schemaTable.Columns.Add(new DataColumn("IsLong", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("AllowDBNull", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("IsReadOnly", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("IsRowVersion", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("IsUnique", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("IsKey", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("IsKeyColumn", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("IsAutoIncrement", typeof(bool)));
+			schemaTable.Columns.Add(new DataColumn("BaseSchemaName", typeof(string)));
+			schemaTable.Columns.Add(new DataColumn("BaseCatalogName", typeof(string)));
+			schemaTable.Columns.Add(new DataColumn("BaseTableName", typeof(string)));
+			schemaTable.Columns.Add(new DataColumn("BaseColumnName", typeof(string)));
+
+			return schemaTable;
+		}
+		#endregion
+		
+		private void InitMem(int memSize, ref IntPtr ptr){
+			if (ptr.ToInt32() == 0){
+				unsafe{
+					fixed(byte* arr = new byte[memSize]){
+						ptr = new IntPtr(arr); 
+					}
+				}
+			}	
+		}
+		
+		private Type GetManagedType(int sql_type)
+		{
+			switch(sql_type)
+			{
+				case DB2Constants.SQL_INTEGER:
+					return typeof(int);
+				case DB2Constants.SQL_SMALLINT:
+					return typeof(short);
+				case DB2Constants.SQL_BIGINT:
+					return typeof(long);
+				case DB2Constants.SQL_DOUBLE:
+					return typeof(double);
+				case DB2Constants.SQL_DECIMAL:
+					return typeof(decimal);
+				case DB2Constants.SQL_DATETIME:
+				case DB2Constants.SQL_TYPE_DATE:
+				case DB2Constants.SQL_TYPE_TIMESTAMP:
+					return typeof(DateTime);
+				case DB2Constants.SQL_TYPE_TIME:
+					return typeof(TimeSpan);
+				case DB2Constants.SQL_CHAR:
+				case DB2Constants.SQL_VARCHAR:
+				case DB2Constants.SQL_TYPE_CLOB:
+					return typeof(string);
+				case DB2Constants.SQL_TYPE_BLOB:
+				case DB2Constants.SQL_TYPE_BINARY:
+				case DB2Constants.SQL_LONGVARBINARY:
+				case DB2Constants.SQL_VARBINARY:
+					return typeof(byte[]);
+			}
+			throw new NotImplementedException("Unknown SQL type " + sql_type);
+		}
+		
+		private bool IsLong(short sql_type)
+		{
+			switch(sql_type)
+			{
+				case DB2Constants.SQL_TYPE_CLOB:
+				case DB2Constants.SQL_TYPE_BLOB:
+					return true;
+			}
+			return false;
+		}
+		private object GetBlobDataInternal(int col)
+		{
+			if((col < 0) || (col >= fieldCount))
+			{
+				throw new IndexOutOfRangeException("col");
+			}
+			if(!hasData)
+			{
+				throw new InvalidOperationException("No data");
+			}
+			if(_resultSet == null)
+			{
+				_resultSet = new object[fieldCount];
+			}
+			if(_resultSet[col] == null)
+			{
+				int length;
+				short sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_BINARY, (StringBuilder)null, 0, out length);
+				if(length == DB2Constants.SQL_NULL_DATA)
+				{
+					_resultSet[col] = DBNull.Value;
+				}
+				else
+				{
+					byte[] result = new byte[length];
+					sqlRet = DB2CLIWrapper.SQLGetData(this.hwndStmt, (short)(col + 1), (short)DB2Constants.SQL_C_TYPE_BINARY, result, length, out length);
+					_resultSet[col] = result;
+				}
+			}			
+			return _resultSet[col];
+		}
+	}
+
+}
+#endregion
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Environment.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Environment.cs
@@ -19,73 +19,73 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.Collections;
-
-namespace IBM.Data.DB2
-{
-
-	internal sealed class DB2Environment : IDisposable
-	{
+using System;
+using System.Collections;
+
+namespace IBM.Data.DB2
+{
+
+	internal sealed class DB2Environment : IDisposable
+	{
 		volatile static DB2Environment environment;
-		static readonly object lockobj = new object ();
-		internal Hashtable connectionPools;
-		internal IntPtr penvHandle = IntPtr.Zero;
-
-		private DB2Environment()
-		{
-			connectionPools = Hashtable.Synchronized(new Hashtable());
-
-			//			short sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_ENV, IntPtr.Zero, ref penvHandle);
-			short sqlRet = DB2CLIWrapper.Initialize(ref penvHandle);
-			DB2ClientUtils.DB2CheckReturn(sqlRet, 0, IntPtr.Zero, "Unable to allocate Environment handle.", null);
-
-			// SQLSetEnvAttr( hEnv=0:1, fAttribute=SQL_ATTR_APP_TYPE 2473, vParam=4, cbParam=0 )	// 4=ADO.NET apptype????
-			// SQLSetEnvAttr( hEnv=0:1, fAttribute=SQL_ATTR_OUTPUT_NTS 10001, vParam=0, cbParam=0 ) // strings not 0-terminated
-		}
-
-		public static DB2Environment Instance
-		{
-			get
-			{
-				if(environment == null)
-				{
-					lock(lockobj)
-					{
-						if(environment == null)
-						{
-							environment = new DB2Environment();
-						}
-					}
-				}
-				return environment;
-			}
-		}
-		#region IDisposable Members
-
-		bool disposed;
-		public void Dispose()
-		{
-			Dispose(true);
-			GC.SuppressFinalize(this);
-		}
-
-		public void Dispose(bool disposing)
-		{
-			if(disposed)
-			{
-				DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_ENV, penvHandle);
-				environment = null;
-			}
-			disposed = true;
-		}
-
-		~DB2Environment()
-		{
-			Dispose(false);
-		}
-
-		#endregion
-	}
-
+		static readonly object lockobj = new object ();
+		internal Hashtable connectionPools;
+		internal IntPtr penvHandle = IntPtr.Zero;
+
+		private DB2Environment()
+		{
+			connectionPools = Hashtable.Synchronized(new Hashtable());
+
+			//			short sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_ENV, IntPtr.Zero, ref penvHandle);
+			short sqlRet = DB2CLIWrapper.Initialize(ref penvHandle);
+			DB2ClientUtils.DB2CheckReturn(sqlRet, 0, IntPtr.Zero, "Unable to allocate Environment handle.", null);
+
+			// SQLSetEnvAttr( hEnv=0:1, fAttribute=SQL_ATTR_APP_TYPE 2473, vParam=4, cbParam=0 )	// 4=ADO.NET apptype????
+			// SQLSetEnvAttr( hEnv=0:1, fAttribute=SQL_ATTR_OUTPUT_NTS 10001, vParam=0, cbParam=0 ) // strings not 0-terminated
+		}
+
+		public static DB2Environment Instance
+		{
+			get
+			{
+				if(environment == null)
+				{
+					lock(lockobj)
+					{
+						if(environment == null)
+						{
+							environment = new DB2Environment();
+						}
+					}
+				}
+				return environment;
+			}
+		}
+		#region IDisposable Members
+
+		bool disposed;
+		public void Dispose()
+		{
+			Dispose(true);
+			GC.SuppressFinalize(this);
+		}
+
+		public void Dispose(bool disposing)
+		{
+			if(disposed)
+			{
+				DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_ENV, penvHandle);
+				environment = null;
+			}
+			disposed = true;
+		}
+
+		~DB2Environment()
+		{
+			Dispose(false);
+		}
+
+		#endregion
+	}
+
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Error.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Error.cs
@@ -19,44 +19,44 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace IBM.Data.DB2
-{
-	public sealed class DB2Error
-	{
-		string message;
-		string state;
-		int nativeerror;
-
-		internal DB2Error(string message, string state, int nativeerror)
-		{
-			this.message = message;
-			this.state = state;
-			this.nativeerror = nativeerror;
-		}
-
-		public override string ToString()
-		{
-			return Message;
-		}
-		public string Message 
-		{
-			get { return message; }
-		}
-		public int NativeError  
-		{
-			get { return nativeerror; }
-		}
-		public string Source
-		{
-			get { return "IBM.Data.DB2"; }
-		}
-		public string SQLState 
-		{
-			get { return state; }
-		}					 
-	}
-}
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace IBM.Data.DB2
+{
+	public sealed class DB2Error
+	{
+		string message;
+		string state;
+		int nativeerror;
+
+		internal DB2Error(string message, string state, int nativeerror)
+		{
+			this.message = message;
+			this.state = state;
+			this.nativeerror = nativeerror;
+		}
+
+		public override string ToString()
+		{
+			return Message;
+		}
+		public string Message 
+		{
+			get { return message; }
+		}
+		public int NativeError  
+		{
+			get { return nativeerror; }
+		}
+		public string Source
+		{
+			get { return "IBM.Data.DB2"; }
+		}
+		public string SQLState 
+		{
+			get { return state; }
+		}					 
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ErrorCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ErrorCollection.cs
@@ -1,132 +1,132 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Text;
-
-namespace IBM.Data.DB2
-{
-	[Serializable()]
-	public class DB2ErrorCollection : CollectionBase 
-	{
-        
-		public DB2ErrorCollection(short sqlHandleType, IntPtr sqlHandle) 
-		{
-			StringBuilder sqlState = new StringBuilder(10);
-			StringBuilder errorMessage = new StringBuilder(1025);
-
-			int sqlReturn;
-			short recNum=1;
-
-			do
-			{
-				int nativeError;
-				short errorMessageLength;
-				sqlReturn = DB2CLIWrapper.SQLGetDiagRec(sqlHandleType, sqlHandle, recNum++, sqlState, out nativeError, errorMessage, errorMessage.Capacity - 1, out errorMessageLength);
-				if(sqlReturn == 0)
-				{
-					Add(new DB2Error(errorMessage.ToString(), sqlState.ToString(), nativeError));
-				}
-			}
-			while (sqlReturn == 0);
-		}
-        
-		public DB2Error this[int index] 
-		{
-			get 
-			{
-				return ((DB2Error)(List[index]));
-			}
-		}
-		internal int Add(DB2Error value) 
-		{
-			return List.Add(value);
-		}
-        
-		public void CopyTo(DB2Error[] array, int index) 
-		{
-			List.CopyTo(array, index);
-		}
-        
-		/// <summary>
-		///    <para>Returns an enumerator that can iterate through 
-		///       the <see cref='d.DB2ErrorCollection'/> .</para>
-		/// </summary>
-		/// <returns><para>None.</para></returns>
-		/// <seealso cref='System.Collections.IEnumerator'/>
-		public new DB2ErrorEnumerator GetEnumerator() 
-		{
-			return new DB2ErrorEnumerator(this);
-		}
-        
-		public class DB2ErrorEnumerator : object, IEnumerator 
-		{
-            
-			private IEnumerator baseEnumerator;
-            
-			private IEnumerable temp;
-            
-			public DB2ErrorEnumerator(DB2ErrorCollection mappings) 
-			{
-				this.temp = ((IEnumerable)(mappings));
-				this.baseEnumerator = temp.GetEnumerator();
-			}
-            
-			public DB2Error Current 
-			{
-				get 
-				{
-					return ((DB2Error)(baseEnumerator.Current));
-				}
-			}
-            
-			object IEnumerator.Current 
-			{
-				get 
-				{
-					return baseEnumerator.Current;
-				}
-			}
-            
-			public bool MoveNext() 
-			{
-				return baseEnumerator.MoveNext();
-			}
-            
-			bool IEnumerator.MoveNext() 
-			{
-				return baseEnumerator.MoveNext();
-			}
-            
-			public void Reset() 
-			{
-				baseEnumerator.Reset();
-			}
-            
-			void IEnumerator.Reset() 
-			{
-				baseEnumerator.Reset();
-			}
-		}
-	
-	}
-}
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Text;
+
+namespace IBM.Data.DB2
+{
+	[Serializable()]
+	public class DB2ErrorCollection : CollectionBase 
+	{
+        
+		public DB2ErrorCollection(short sqlHandleType, IntPtr sqlHandle) 
+		{
+			StringBuilder sqlState = new StringBuilder(10);
+			StringBuilder errorMessage = new StringBuilder(1025);
+
+			int sqlReturn;
+			short recNum=1;
+
+			do
+			{
+				int nativeError;
+				short errorMessageLength;
+				sqlReturn = DB2CLIWrapper.SQLGetDiagRec(sqlHandleType, sqlHandle, recNum++, sqlState, out nativeError, errorMessage, errorMessage.Capacity - 1, out errorMessageLength);
+				if(sqlReturn == 0)
+				{
+					Add(new DB2Error(errorMessage.ToString(), sqlState.ToString(), nativeError));
+				}
+			}
+			while (sqlReturn == 0);
+		}
+        
+		public DB2Error this[int index] 
+		{
+			get 
+			{
+				return ((DB2Error)(List[index]));
+			}
+		}
+		internal int Add(DB2Error value) 
+		{
+			return List.Add(value);
+		}
+        
+		public void CopyTo(DB2Error[] array, int index) 
+		{
+			List.CopyTo(array, index);
+		}
+        
+		/// <summary>
+		///    <para>Returns an enumerator that can iterate through 
+		///       the <see cref='d.DB2ErrorCollection'/> .</para>
+		/// </summary>
+		/// <returns><para>None.</para></returns>
+		/// <seealso cref='System.Collections.IEnumerator'/>
+		public new DB2ErrorEnumerator GetEnumerator() 
+		{
+			return new DB2ErrorEnumerator(this);
+		}
+        
+		public class DB2ErrorEnumerator : object, IEnumerator 
+		{
+            
+			private IEnumerator baseEnumerator;
+            
+			private IEnumerable temp;
+            
+			public DB2ErrorEnumerator(DB2ErrorCollection mappings) 
+			{
+				this.temp = ((IEnumerable)(mappings));
+				this.baseEnumerator = temp.GetEnumerator();
+			}
+            
+			public DB2Error Current 
+			{
+				get 
+				{
+					return ((DB2Error)(baseEnumerator.Current));
+				}
+			}
+            
+			object IEnumerator.Current 
+			{
+				get 
+				{
+					return baseEnumerator.Current;
+				}
+			}
+            
+			public bool MoveNext() 
+			{
+				return baseEnumerator.MoveNext();
+			}
+            
+			bool IEnumerator.MoveNext() 
+			{
+				return baseEnumerator.MoveNext();
+			}
+            
+			public void Reset() 
+			{
+				baseEnumerator.Reset();
+			}
+            
+			void IEnumerator.Reset() 
+			{
+				baseEnumerator.Reset();
+			}
+		}
+	
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Exception.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Exception.cs
@@ -19,69 +19,69 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Runtime.Serialization;
-
-namespace IBM.Data.DB2
-{
-
-
-	[Serializable]
-	public sealed class DB2Exception : Exception
-	{
-		private DB2ErrorCollection errors;
-		private string message;
-
-
-		public DB2ErrorCollection Errors
-		{
-			get
-			{
-				return errors;
-			}
-		}
-		public override string Message
-		{
-			get
-			{
-				if(errors.Count > 0)
-				{
-					string result = "";
-					for(int i = 0; i < errors.Count; i++)
-					{
-						if(i > 0)
-						{
-							result += " ";
-						}
-						result += "ERROR [" + errors[i].SQLState + "] " + errors[i].Message;
-					}
-					if(message != null)
-					{
-						result += " " + message;
-					}
-					return result;
-				}
-				return "No error information";
-			}
-		}
-
-		private DB2Exception(SerializationInfo si, StreamingContext sc)
-		{
-			throw new NotImplementedException();
-		}
-		public override void GetObjectData(SerializationInfo si, StreamingContext context)
-		{
-			throw new NotImplementedException();
-		}
-
-		internal DB2Exception(short sqlHandleType, IntPtr sqlHandle, string message)
-		{	
-			this.message = message;
-			errors = new DB2ErrorCollection(sqlHandleType, sqlHandle);
-
-
-		}
-	}
-}
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace IBM.Data.DB2
+{
+
+
+	[Serializable]
+	public sealed class DB2Exception : Exception
+	{
+		private DB2ErrorCollection errors;
+		private string message;
+
+
+		public DB2ErrorCollection Errors
+		{
+			get
+			{
+				return errors;
+			}
+		}
+		public override string Message
+		{
+			get
+			{
+				if(errors.Count > 0)
+				{
+					string result = "";
+					for(int i = 0; i < errors.Count; i++)
+					{
+						if(i > 0)
+						{
+							result += " ";
+						}
+						result += "ERROR [" + errors[i].SQLState + "] " + errors[i].Message;
+					}
+					if(message != null)
+					{
+						result += " " + message;
+					}
+					return result;
+				}
+				return "No error information";
+			}
+		}
+
+		private DB2Exception(SerializationInfo si, StreamingContext sc)
+		{
+			throw new NotImplementedException();
+		}
+		public override void GetObjectData(SerializationInfo si, StreamingContext context)
+		{
+			throw new NotImplementedException();
+		}
+
+		internal DB2Exception(short sqlHandleType, IntPtr sqlHandle, string message)
+		{	
+			this.message = message;
+			errors = new DB2ErrorCollection(sqlHandleType, sqlHandle);
+
+
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2InfoMessageEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2InfoMessageEventHandler.cs
@@ -19,51 +19,51 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.Data;
-using System.Runtime.InteropServices;
-
-namespace IBM.Data.DB2
-{
-	public delegate void DB2InfoMessageEventHandler(object sender, DB2InfoMessageEventArgs e);
-
-	public sealed class DB2InfoMessageEventArgs : EventArgs
-	{
-		private DB2ErrorCollection errors;
-
-		public DB2InfoMessageEventArgs(DB2ErrorCollection errors)
-		{
-			this.errors = errors;
-		}
-
-		public DB2ErrorCollection Errors
-		{
-			get
-			{
-				return errors;
-			}
-		}
-		public string Message
-		{
-			get
-			{
-				if(errors.Count > 0)
-				{
-					string result = "";
-					for(int i = 0; i < errors.Count; i++)
-					{
-						if(i > 0)
-						{
-							result += " ";
-						}
-						result += "INFO [" + errors[i].SQLState + "] " + errors[i].Message;
-					}
-					return result;
-				}
-				return "No information";
-			}
-		}
-
-	}
-}
-
+using System;
+using System.Data;
+using System.Runtime.InteropServices;
+
+namespace IBM.Data.DB2
+{
+	public delegate void DB2InfoMessageEventHandler(object sender, DB2InfoMessageEventArgs e);
+
+	public sealed class DB2InfoMessageEventArgs : EventArgs
+	{
+		private DB2ErrorCollection errors;
+
+		public DB2InfoMessageEventArgs(DB2ErrorCollection errors)
+		{
+			this.errors = errors;
+		}
+
+		public DB2ErrorCollection Errors
+		{
+			get
+			{
+				return errors;
+			}
+		}
+		public string Message
+		{
+			get
+			{
+				if(errors.Count > 0)
+				{
+					string result = "";
+					for(int i = 0; i < errors.Count; i++)
+					{
+						if(i > 0)
+						{
+							result += " ";
+						}
+						result += "INFO [" + errors[i].SQLState + "] " + errors[i].Message;
+					}
+					return result;
+				}
+				return "No information";
+			}
+		}
+
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2OpenConnection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2OpenConnection.cs
@@ -1,211 +1,211 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading;
-
-namespace IBM.Data.DB2
-{
-
-	internal sealed class DB2OpenConnection : IDisposable
-	{
-		private IntPtr dbHandle = IntPtr.Zero;
-
-		private DB2ConnectionSettings settings;
-		private bool disposed = false;
-		internal DateTime poolDisposalTime; // time to live used for disposal of connections in the connection pool
-		public bool transactionOpen;
-		public bool autoCommit = true;
-		private string		databaseProductName;
-		private string		databaseVersion;
-		private int			majorVersion;
-		private int			minorVersion;
-
-		public IntPtr DBHandle
-		{
-			get { return dbHandle; }
-		}
-		public string DatabaseProductName
-		{
-			get { return databaseProductName; }
-		}
-		public string DatabaseVersion
-		{
-			get { return databaseVersion; }
-		}
-		public int MajorVersion
-		{
-			get { return majorVersion; }
-		}
-		public int MinorVersion
-		{
-			get { return minorVersion; }
-		}
-
-		public DB2OpenConnection(DB2ConnectionSettings settings, DB2Connection connection)
-		{
-			this.settings = settings;
-			try
-			{
-				short sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, out dbHandle);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, "Unable to allocate database handle in DB2Connection.", connection);
-
-				if(settings.Server.Length > 0)
-				{
-					StringBuilder outConnectStr = new StringBuilder(60);  // TODO: ????
-					short numOutCharsReturned;
-
-					sqlRet = DB2CLIWrapper.SQLDriverConnect(dbHandle, IntPtr.Zero, 
-						settings.ConnectionString,	(short)settings.ConnectionString.Length,
-						outConnectStr,				(short)outConnectStr.Length, out numOutCharsReturned, 
-						DB2Constants.SQL_DRIVER_NOPROMPT /*SQL_DRIVER_COMPLETE*/);
-				}
-				else
-				{
-					sqlRet = DB2CLIWrapper.SQLConnect(dbHandle, 
-						settings.DatabaseAlias,	(short)settings.DatabaseAlias.Length, 
-						settings.UserName,		(short)settings.UserName.Length,
-						settings.PassWord,		(short)settings.PassWord.Length);
-					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, dbHandle, "Unable to connect to the database.", connection);
-				}
-
-				if((settings.Pool == null) || (settings.Pool.databaseProductName == null))
-				{
-					StringBuilder sb = new StringBuilder(256);
-					short stringLength;
-					sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_NAME*/17, sb, (short)(sb.Capacity / 2), out stringLength);
-					new DB2ErrorCollection(DB2Constants.SQL_HANDLE_DBC, dbHandle).ToString();
-					if(sqlRet == 0)
-						databaseProductName = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2));
-					sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_VER*/18, sb, (short)(sb.Capacity / 2), out stringLength);
-					if(sqlRet == 0)
-					{
-						databaseVersion = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2));
-						try
-						{
-							string[] splitVersion = databaseVersion.Split('.');
-							majorVersion = int.Parse(splitVersion[0]);
-							minorVersion = int.Parse(splitVersion[1]);
-						}
-						catch{}
-					}
-					if(settings.Pool != null)
-					{
-						settings.Pool.databaseProductName = databaseProductName;
-						settings.Pool.databaseVersion	  = databaseVersion;
-						settings.Pool.majorVersion		  = majorVersion;
-						settings.Pool.minorVersion		  = minorVersion;
-					}
-				}
-				else if(settings.Pool != null)
-				{
-					if(settings.Pool != null)
-					{
-						databaseProductName = settings.Pool.databaseProductName;
-						databaseVersion		= settings.Pool.databaseVersion;
-						majorVersion		= settings.Pool.majorVersion;
-						minorVersion		= settings.Pool.minorVersion;
-					}
-				}
-			}
-			catch
-			{
-				if(dbHandle != IntPtr.Zero)
-				{
-					DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_DBC, dbHandle);
-					dbHandle = IntPtr.Zero;
-				}
-				throw;
-			}
-		}
-
-		public void RollbackDeadTransaction()
-		{
-			DB2CLIWrapper.SQLEndTran(DB2Constants.SQL_HANDLE_DBC, DBHandle, DB2Constants.SQL_ROLLBACK);
-			transactionOpen = false;
-		}
-
-		public void Close()
-		{
-			if(transactionOpen)
-				RollbackDeadTransaction();
-
-			if(settings.Pool != null)
-			{
-				settings.Pool.AddToFreeConnections(this);
-			}
-			else
-			{
-				Dispose();
-			}
-		}
-
-		private void FreeHandles()
-		{
-			if(dbHandle != IntPtr.Zero)
-			{
-				short sqlRet = DB2CLIWrapper.SQLDisconnect(dbHandle);
-				// Note that SQLDisconnect() automatically drops any statements and
-				// descriptors open on the connection.
-				sqlRet = DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_DBC, dbHandle);
-
-				dbHandle = IntPtr.Zero;
-			}
-		}
-
-		#region IDisposable Members
-
-		public void Dispose()
-		{
-			Dispose(true);
-			GC.SuppressFinalize(this);
-		}
-
-		private void Dispose(bool disposing)
-		{
-			if(!disposed) 
-			{
-				if(disposing)
-				{
-					// dispose managed resources
-				}
-				FreeHandles();
-			}
-			disposed = true;
-		}
-
-
-		~DB2OpenConnection()
-		{
-			if(settings.Pool != null)
-			{
-				settings.Pool.OpenConnectionFinalized();
-			}
-			Dispose(false);
-		}
-		#endregion
-	}
-
-
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading;
+
+namespace IBM.Data.DB2
+{
+
+	internal sealed class DB2OpenConnection : IDisposable
+	{
+		private IntPtr dbHandle = IntPtr.Zero;
+
+		private DB2ConnectionSettings settings;
+		private bool disposed = false;
+		internal DateTime poolDisposalTime; // time to live used for disposal of connections in the connection pool
+		public bool transactionOpen;
+		public bool autoCommit = true;
+		private string		databaseProductName;
+		private string		databaseVersion;
+		private int			majorVersion;
+		private int			minorVersion;
+
+		public IntPtr DBHandle
+		{
+			get { return dbHandle; }
+		}
+		public string DatabaseProductName
+		{
+			get { return databaseProductName; }
+		}
+		public string DatabaseVersion
+		{
+			get { return databaseVersion; }
+		}
+		public int MajorVersion
+		{
+			get { return majorVersion; }
+		}
+		public int MinorVersion
+		{
+			get { return minorVersion; }
+		}
+
+		public DB2OpenConnection(DB2ConnectionSettings settings, DB2Connection connection)
+		{
+			this.settings = settings;
+			try
+			{
+				short sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, out dbHandle);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, "Unable to allocate database handle in DB2Connection.", connection);
+
+				if(settings.Server.Length > 0)
+				{
+					StringBuilder outConnectStr = new StringBuilder(60);  // TODO: ????
+					short numOutCharsReturned;
+
+					sqlRet = DB2CLIWrapper.SQLDriverConnect(dbHandle, IntPtr.Zero, 
+						settings.ConnectionString,	(short)settings.ConnectionString.Length,
+						outConnectStr,				(short)outConnectStr.Length, out numOutCharsReturned, 
+						DB2Constants.SQL_DRIVER_NOPROMPT /*SQL_DRIVER_COMPLETE*/);
+				}
+				else
+				{
+					sqlRet = DB2CLIWrapper.SQLConnect(dbHandle, 
+						settings.DatabaseAlias,	(short)settings.DatabaseAlias.Length, 
+						settings.UserName,		(short)settings.UserName.Length,
+						settings.PassWord,		(short)settings.PassWord.Length);
+					DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, dbHandle, "Unable to connect to the database.", connection);
+				}
+
+				if((settings.Pool == null) || (settings.Pool.databaseProductName == null))
+				{
+					StringBuilder sb = new StringBuilder(256);
+					short stringLength;
+					sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_NAME*/17, sb, (short)(sb.Capacity / 2), out stringLength);
+					new DB2ErrorCollection(DB2Constants.SQL_HANDLE_DBC, dbHandle).ToString();
+					if(sqlRet == 0)
+						databaseProductName = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2));
+					sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_VER*/18, sb, (short)(sb.Capacity / 2), out stringLength);
+					if(sqlRet == 0)
+					{
+						databaseVersion = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2));
+						try
+						{
+							string[] splitVersion = databaseVersion.Split('.');
+							majorVersion = int.Parse(splitVersion[0]);
+							minorVersion = int.Parse(splitVersion[1]);
+						}
+						catch{}
+					}
+					if(settings.Pool != null)
+					{
+						settings.Pool.databaseProductName = databaseProductName;
+						settings.Pool.databaseVersion	  = databaseVersion;
+						settings.Pool.majorVersion		  = majorVersion;
+						settings.Pool.minorVersion		  = minorVersion;
+					}
+				}
+				else if(settings.Pool != null)
+				{
+					if(settings.Pool != null)
+					{
+						databaseProductName = settings.Pool.databaseProductName;
+						databaseVersion		= settings.Pool.databaseVersion;
+						majorVersion		= settings.Pool.majorVersion;
+						minorVersion		= settings.Pool.minorVersion;
+					}
+				}
+			}
+			catch
+			{
+				if(dbHandle != IntPtr.Zero)
+				{
+					DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_DBC, dbHandle);
+					dbHandle = IntPtr.Zero;
+				}
+				throw;
+			}
+		}
+
+		public void RollbackDeadTransaction()
+		{
+			DB2CLIWrapper.SQLEndTran(DB2Constants.SQL_HANDLE_DBC, DBHandle, DB2Constants.SQL_ROLLBACK);
+			transactionOpen = false;
+		}
+
+		public void Close()
+		{
+			if(transactionOpen)
+				RollbackDeadTransaction();
+
+			if(settings.Pool != null)
+			{
+				settings.Pool.AddToFreeConnections(this);
+			}
+			else
+			{
+				Dispose();
+			}
+		}
+
+		private void FreeHandles()
+		{
+			if(dbHandle != IntPtr.Zero)
+			{
+				short sqlRet = DB2CLIWrapper.SQLDisconnect(dbHandle);
+				// Note that SQLDisconnect() automatically drops any statements and
+				// descriptors open on the connection.
+				sqlRet = DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_DBC, dbHandle);
+
+				dbHandle = IntPtr.Zero;
+			}
+		}
+
+		#region IDisposable Members
+
+		public void Dispose()
+		{
+			Dispose(true);
+			GC.SuppressFinalize(this);
+		}
+
+		private void Dispose(bool disposing)
+		{
+			if(!disposed) 
+			{
+				if(disposing)
+				{
+					// dispose managed resources
+				}
+				FreeHandles();
+			}
+			disposed = true;
+		}
+
+
+		~DB2OpenConnection()
+		{
+			if(settings.Pool != null)
+			{
+				settings.Pool.OpenConnectionFinalized();
+			}
+			Dispose(false);
+		}
+		#endregion
+	}
+
+
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Parameter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Parameter.cs
@@ -1,703 +1,703 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Data;
-using System.Runtime.InteropServices;
-
-namespace IBM.Data.DB2
-{
-
-	public sealed class DB2Parameter : MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneable
-	{
-		private DbType dbType = DbType.Object;
-		private DB2Type db2Type = DB2Type.Invalid;
-		private short db2DataType = DB2Constants.SQL_UNKNOWN_TYPE;
-		private short db2LastUsedDataType = DB2Constants.SQL_UNKNOWN_TYPE;
-
-		private ParameterDirection direction;
-		private short db2Direction = DB2Constants.SQL_PARAM_INPUT;
-		private bool nullable = true;
-		private string parameterName;
-		private string sourceColumn;
-		private DataRowVersion sourceVersion;
-		private object dataVal;
-		private byte scale, precision;
-		private int size;
-		internal IntPtr internalBuffer;
-		internal IntPtr internalLengthBuffer;
-		internal int requiredMemory;
-
-		#region Contructors and destructors
-		public DB2Parameter()
-		{
-			direction = ParameterDirection.Input;
-			sourceVersion = DataRowVersion.Current;
-		} 
-
-		public DB2Parameter(string name, DB2Type type)
-		{
-			direction = ParameterDirection.Input;
-			sourceVersion = DataRowVersion.Current;
-			this.ParameterName = name;
-			this.DB2Type = type;
-		} 
-
-		public DB2Parameter(string name, DB2Type type, int size)
-		{
-			direction = ParameterDirection.Input;
-			sourceVersion = DataRowVersion.Current;
-			this.ParameterName = name;
-			this.DB2Type = type;
-			this.Size = size;
-		}
-
-		public DB2Parameter(string name, DB2Type type, int size, string sourceColumn)
-		{
-			direction = ParameterDirection.Input;
-			sourceVersion = DataRowVersion.Current;
-			this.ParameterName = name;
-			this.DB2Type = type;
-			this.Size = size;
-			this.SourceColumn = sourceColumn;
-		}
-
-		public DB2Parameter(string parameterName, object value)
-		{
-			direction = ParameterDirection.Input;
-			sourceVersion = DataRowVersion.Current;
-			this.ParameterName = parameterName;
-			this.Value = value;
-		}
-
-		public DB2Parameter(string parameterName, DB2Type db2Type, int size, ParameterDirection parameterDirection, bool isNullable, byte precision, byte scale, string srcColumn, DataRowVersion srcVersion, object value)
-		{
-			this.ParameterName = parameterName;
-			this.DB2Type = db2Type;
-			this.Size = size;
-			this.Direction = parameterDirection;
-			this.IsNullable = isNullable;
-			this.Precision = precision;
-			this.Scale = scale;
-			this.SourceColumn = srcColumn;
-			this.SourceVersion = srcVersion;
-			this.Value = value;
-		}
-
-		#endregion
-
-		#region Properties
-		#region DbType Property
-		public DB2Type DB2Type
-		{
-			get 
-			{
-				return db2Type;
-			}
-			set 
-			{
-				db2Type = value;
-				switch(db2Type)
-				{
-					case DB2Type.Invalid:        dbType = DbType.Object;            db2DataType = DB2Constants.SQL_UNKNOWN_TYPE;   break;
-					case DB2Type.SmallInt:       dbType = DbType.Int16;             db2DataType = DB2Constants.SQL_SMALLINT;       break;
-					case DB2Type.Integer:        dbType = DbType.Int32;             db2DataType = DB2Constants.SQL_INTEGER;        break;
-					case DB2Type.BigInt:         dbType = DbType.Int64;             db2DataType = DB2Constants.SQL_BIGINT;         break;
-					case DB2Type.Real:           dbType = DbType.Single;            db2DataType = DB2Constants.SQL_REAL;           break;
-					case DB2Type.Double:         dbType = DbType.Double;            db2DataType = DB2Constants.SQL_DOUBLE;         break;
-					case DB2Type.Float:          dbType = DbType.Single;            db2DataType = DB2Constants.SQL_REAL;           break;
-					case DB2Type.Decimal:        dbType = DbType.Decimal;           db2DataType = DB2Constants.SQL_DECIMAL;        break;
-					case DB2Type.Numeric:        dbType = DbType.VarNumeric;        db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.Date:           dbType = DbType.Date;              db2DataType = DB2Constants.SQL_TYPE_DATE;      break;
-					case DB2Type.Time:           dbType = DbType.Time;              db2DataType = DB2Constants.SQL_TYPE_TIME;      break;
-					case DB2Type.Timestamp:      dbType = DbType.DateTime;          db2DataType = DB2Constants.SQL_TYPE_TIMESTAMP; break;
-					case DB2Type.Char:           dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.VarChar:        dbType = DbType.StringFixedLength; db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.LongVarChar:    dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.Binary:         dbType = DbType.Binary;            db2DataType = DB2Constants.SQL_VARBINARY;      break;
-					case DB2Type.VarBinary:      dbType = DbType.Binary;            db2DataType = DB2Constants.SQL_VARBINARY;      break;
-					case DB2Type.LongVarBinary:  dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.Graphic:        dbType = DbType.StringFixedLength; db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.VarGraphic:     dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.LongVarGraphic: dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.Clob:           dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.Blob:           dbType = DbType.Binary;            db2DataType = DB2Constants.SQL_VARBINARY;      break;
-					case DB2Type.DbClob:         dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DB2Type.Datalink:       dbType = DbType.Byte;              db2DataType = DB2Constants.SQL_VARBINARY;      break;
-					case DB2Type.RowId:          dbType = DbType.Decimal;           db2DataType = DB2Constants.SQL_DECIMAL;        break;
-					case DB2Type.XmlReader:      dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
-					default:
-						throw new NotSupportedException("Value is of unknown data type");
-				}
-			}
-		}
-		///
-		/// Parameter data type
-		/// 
-		public DbType DbType
-		{
-			get 
-			{
-				return dbType;
-			}
-			set 
-			{
-				dbType = value;
-				switch(dbType)
-				{
-					case DbType.AnsiString:             db2Type = DB2Type.VarChar;    db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DbType.AnsiStringFixedLength:  db2Type = DB2Type.Char;       db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DbType.Binary:                 db2Type = DB2Type.Binary;     db2DataType = DB2Constants.SQL_VARBINARY;      break;
-					case DbType.Boolean:                db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_BIT;            break;
-					case DbType.Byte:                   db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_UTINYINT;       break;
-					case DbType.Currency:               db2Type = DB2Type.Decimal;    db2DataType = DB2Constants.SQL_DECIMAL;        break;
-					case DbType.Date:                   db2Type = DB2Type.Date;       db2DataType = DB2Constants.SQL_TYPE_DATE;      break;
-					case DbType.DateTime:               db2Type = DB2Type.Timestamp;  db2DataType = DB2Constants.SQL_TYPE_TIMESTAMP; break;
-					case DbType.Decimal:                db2Type = DB2Type.Decimal;    db2DataType = DB2Constants.SQL_DECIMAL;        break;
-					case DbType.Double:                 db2Type = DB2Type.Double;     db2DataType = DB2Constants.SQL_DOUBLE;         break;
-					case DbType.Guid:                   db2Type = DB2Type.Binary;     db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DbType.Int16:                  db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_SMALLINT;       break;
-					case DbType.Int32:                  db2Type = DB2Type.Integer;    db2DataType = DB2Constants.SQL_INTEGER;        break;
-					case DbType.Int64:                  db2Type = DB2Type.BigInt;     db2DataType = DB2Constants.SQL_BIGINT;         break;
-					case DbType.Object:                 db2Type = DB2Type.Invalid;    db2DataType = DB2Constants.SQL_UNKNOWN_TYPE;   break;
-					case DbType.SByte:                  db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_UTINYINT;       break;
-					case DbType.Single:                 db2Type = DB2Type.Float;      db2DataType = DB2Constants.SQL_REAL;           break;
-					case DbType.String:                 db2Type = DB2Type.VarChar;    db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DbType.StringFixedLength:      db2Type = DB2Type.Char;       db2DataType = DB2Constants.SQL_WCHAR;          break;
-					case DbType.Time:                   db2Type = DB2Type.Time;       db2DataType = DB2Constants.SQL_TYPE_TIME;      break;
-					case DbType.UInt16:                 db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_SMALLINT;       break;
-					case DbType.UInt32:                 db2Type = DB2Type.Integer;    db2DataType = DB2Constants.SQL_INTEGER;        break;
-					case DbType.UInt64:                 db2Type = DB2Type.BigInt;     db2DataType = DB2Constants.SQL_BIGINT;         break;
-					case DbType.VarNumeric:             db2Type = DB2Type.Numeric;    db2DataType = DB2Constants.SQL_WCHAR;          break;
-					default:
-						throw new NotSupportedException("Value is of unknown data type");
-				}
-			}
-		}
-
-		#endregion
-		#region Direction
-		///
-		/// In or out parameter, or both
-		/// 
-		public ParameterDirection Direction
-		{
-			get 
-			{
-				return direction;
-			}
-			set 
-			{
-				direction = value;
-				switch(direction)
-				{
-					default:
-					case ParameterDirection.Input:			db2Direction = DB2Constants.SQL_PARAM_INPUT;		break;
-					case ParameterDirection.Output:			db2Direction = DB2Constants.SQL_PARAM_OUTPUT;		break;
-					case ParameterDirection.InputOutput:	db2Direction = DB2Constants.SQL_PARAM_INPUT_OUTPUT;	break;
-					case ParameterDirection.ReturnValue:	db2Direction = DB2Constants.SQL_RETURN_VALUE;		break;
-				}
-			}
-		}
-		#endregion
-		#region IsNullable
-		///
-		/// Does this parameter support a null value
-		/// 
-		public bool IsNullable 
-		{
-			get 
-			{
-				return nullable;
-			}
-			set 
-			{
-				nullable = value;
-			}
-		}
-		#endregion
-		#region ParameterName
-		public string ParameterName
-		{
-			get 
-			{
-				return parameterName;
-			}
-			set 
-			{
-				parameterName = value;
-			}
-		}
-		#endregion
-		#region SourceColumn
-		///
-		/// Gets or sets the name of the source column that is mapped to the DataSet
-		/// 
-		public string SourceColumn
-		{
-			get 
-			{
-				return sourceColumn;
-			}
-			set 
-			{
-				sourceColumn = value;
-			}
-		}
-		#endregion
-		#region SourceVersion
-		///
-		/// DataRowVersion property
-		/// 
-		public DataRowVersion SourceVersion 
-		{
-			get 
-			{
-				return sourceVersion;
-			}
-			set 
-			{
-				sourceVersion = value;
-			}
-		}
-		#endregion
-		#region IDbDataParameter properties
-		public byte Precision 
-		{
-			get 
-			{ 
-				return precision;
-			}
-			set 
-			{ 
-				precision = value; 
-			}
-		}
-		
-		public byte Scale 
-		{
-			get 
-			{ 
-				return scale;
-			}
-			set 
-			{ 
-				scale = value; 
-			}
-		}
-		
-		public int Size 
-		{
-			get 
-			{
-				return size;
-			}
-			set 
-			{ 
-				size = value;
-			}
-		}
-		#endregion
-		#region Value
-		///
-		/// The actual parameter data
-		/// 
-		public object Value 
-		{
-			get
-			{
-				return dataVal;
-			}
-			set 
-			{
-				this.dataVal = value;
-			}
-		}
-		#endregion
-		#endregion
-		
-		#region inferType Method
-		/// <summary>
-		/// Determine the data type based on the value
-		/// </summary>
-		private void InferType()
-		{
-			if(Value == null)
-				throw new ArgumentException("No DB2Parameter.Value found");
-
-			if(Value is IConvertible)
-			{
-				switch(((IConvertible)Value).GetTypeCode())
-				{
-					case TypeCode.Char:      dbType = DbType.Byte;       db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_WCHAR;           break;
-					case TypeCode.Boolean:   dbType = DbType.Byte;       db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_BIT;             break;
-					case TypeCode.SByte:
-					case TypeCode.Byte:      dbType = DbType.Byte;       db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_UTINYINT;        break;
-					case TypeCode.UInt16:
-					case TypeCode.Int16:     dbType = DbType.Int16;      db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_SMALLINT;        break;
-					case TypeCode.UInt32:
-					case TypeCode.Int32:     dbType = DbType.Int32;      db2Type = DB2Type.Integer;     db2DataType = DB2Constants.SQL_INTEGER;         break;
-					case TypeCode.UInt64:
-					case TypeCode.Int64:     dbType = DbType.Int64;      db2Type = DB2Type.BigInt;      db2DataType = DB2Constants.SQL_BIGINT;          break;
-					case TypeCode.Single:    dbType = DbType.Single;     db2Type = DB2Type.Float;       db2DataType = DB2Constants.SQL_REAL;            break;
-					case TypeCode.Double:    dbType = DbType.Double;     db2Type = DB2Type.Double;      db2DataType = DB2Constants.SQL_DOUBLE;          break;
-					case TypeCode.Decimal:   dbType = DbType.Decimal;    db2Type = DB2Type.Decimal;     db2DataType = DB2Constants.SQL_DECIMAL;         break;
-					case TypeCode.DateTime:  dbType = DbType.DateTime;   db2Type = DB2Type.Timestamp;   db2DataType = DB2Constants.SQL_TYPE_TIMESTAMP;  break;
-					case TypeCode.String:    dbType = DbType.String;     db2Type = DB2Type.VarChar;     db2DataType = DB2Constants.SQL_WCHAR;           break;
-
-					case TypeCode.Object:
-					case TypeCode.DBNull:
-					case TypeCode.Empty:
-						throw new SystemException("Unknown data type");
-					default:
-						throw new SystemException("Value is of unknown data type");
-				}
-			}
-			else if(Value is byte[])
-			{
-				dbType = DbType.Binary;
-				db2Type = DB2Type.VarBinary;
-				db2DataType = DB2Constants.SQL_VARBINARY;
-			}
-			else if(Value is TimeSpan)
-			{
-				dbType = DbType.Time;
-				db2Type = DB2Type.Time;
-				db2DataType = DB2Constants.SQL_TYPE_TIME;
-			}
-			else
-			{
-				throw new NotSupportedException("Value is of unsupported data type");
-			}
-		}
-		#endregion
-		
-		internal void CalculateRequiredmemory()
-		{
-			//if((direction == ParameterDirection.Input) || (direction == ParameterDirection.InputOutput))
-			//{
-			//	if(Value == null)
-			//		throw new ArgumentException("Value missing");
-			//}
-			if(dbType == DbType.Object)
-			{
-				if((direction == ParameterDirection.Output) || (direction == ParameterDirection.ReturnValue))
-					throw new ArgumentException("Unknown type");
-
-				if((direction != ParameterDirection.Input) || !Convert.IsDBNull(Value))
-				{
-					InferType();
-				}
-			}
-			if (db2DataType == DB2Constants.SQL_INTEGER)
-			{
-				requiredMemory = 4;
-			}
-			if((db2DataType == DB2Constants.SQL_VARBINARY) ||
-				(db2DataType == DB2Constants.SQL_WCHAR))
-			{
-				if(Size <= 0)
-				{
-					if(direction != ParameterDirection.Input)
-						throw new ArgumentException("Size not specified");
-					if(Value == DBNull.Value)
-						requiredMemory = 0;
-					else if(Value is string)
-						requiredMemory = ((string)Value).Length;
-					else if(Value is byte[])
-						requiredMemory = ((byte[])Value).Length;
-					else
-						throw new ArgumentException("wrong type!?");
-				}
-				else
-				{
-					requiredMemory = Size;
-				}
-				if(db2DataType == DB2Constants.SQL_WCHAR)
-					requiredMemory = (requiredMemory * 2) + 2;
-				requiredMemory = (requiredMemory | 0xf) + 1;
-			}
-			requiredMemory = Math.Max(128, requiredMemory);
-		}
-
-		#region Bind 
-		///
-		/// Bind this parameter
-		/// 
-		internal short Bind(IntPtr hwndStmt, short paramNum)
-		{
-			int inLength = requiredMemory;
-			db2LastUsedDataType = db2DataType;
-			short db2CType = DB2Constants.SQL_C_DEFAULT;
-			if((direction == ParameterDirection.Input) || (direction == ParameterDirection.InputOutput))
-			{
-				if(Convert.IsDBNull(Value))
-				{
-					inLength = DB2Constants.SQL_NULL_DATA;
-					if((db2DataType == DB2Constants.SQL_UNKNOWN_TYPE) || 
-						(db2DataType == DB2Constants.SQL_DECIMAL))
-					{
-						db2LastUsedDataType = DB2Constants.SQL_VARGRAPHIC;
-						db2CType = DB2Constants.SQL_C_WCHAR;
-					}
-				}
-			}
-			if((direction == ParameterDirection.Input) || (direction == ParameterDirection.InputOutput))
-			{
-				switch (db2DataType) 
-				{
-					case DB2Constants.SQL_WCHAR:
-						string tmpString = Convert.ToString(Value);
-						inLength =  tmpString.Length;
-						if((Size > 0) && (inLength > Size))
-							inLength = Size;
-						Marshal.Copy(tmpString.ToCharArray(), 0, internalBuffer, inLength);
-						inLength *= 2;
-						db2LastUsedDataType = DB2Constants.SQL_VARGRAPHIC;
-						db2CType = DB2Constants.SQL_C_WCHAR;
-						if(inLength > 32000)
-						{
-							db2LastUsedDataType = DB2Constants.SQL_TYPE_BLOB;
-						}
-						break;
-					case DB2Constants.SQL_VARBINARY:
-						byte[] tmpBytes = (byte[])Value;
-						inLength = tmpBytes.Length;
-						if((Size > 0) && (inLength > Size))
-							inLength = Size;
-						Marshal.Copy(tmpBytes, 0, internalBuffer, inLength);
-						db2CType = DB2Constants.SQL_TYPE_BINARY;
-						break;
-					case DB2Constants.SQL_BIT:
-					case DB2Constants.SQL_UTINYINT:
-					case DB2Constants.SQL_SMALLINT:
-						Marshal.WriteInt16(internalBuffer, Convert.ToInt16(Value));
-						db2CType = DB2Constants.SQL_C_SSHORT;
-						break;
-					case DB2Constants.SQL_INTEGER:
-						Marshal.WriteInt32(internalBuffer, Convert.ToInt32(Value));
-						db2CType = DB2Constants.SQL_C_SLONG;
-						break;
-					case DB2Constants.SQL_BIGINT:
-						Marshal.WriteInt64(internalBuffer, Convert.ToInt64(Value));
-						db2CType = DB2Constants.SQL_C_SBIGINT;
-						break;
-					case DB2Constants.SQL_REAL:
-						Marshal.StructureToPtr((float)Convert.ToDouble(Value), internalBuffer, false);
-						db2CType = DB2Constants.SQL_C_TYPE_REAL;
-						break;
-					case DB2Constants.SQL_DOUBLE:
-						Marshal.StructureToPtr(Convert.ToDouble(Value), internalBuffer, false);
-						db2CType = DB2Constants.SQL_C_DOUBLE;
-						break;
-					case DB2Constants.SQL_DECIMAL:
-						byte[] tmpDecimalData = System.Text.Encoding.UTF8.GetBytes(
-							Convert.ToDecimal(Value).ToString(System.Globalization.CultureInfo.InvariantCulture));
-						inLength =  Math.Min(tmpDecimalData.Length, requiredMemory);
-						Marshal.Copy(tmpDecimalData, 0, internalBuffer, inLength);
-						db2LastUsedDataType = DB2Constants.SQL_VARCHAR;
-						db2CType = DB2Constants.SQL_C_CHAR;
-						break;
-					case DB2Constants.SQL_TYPE_DATE:
-						DateTime tmpDate = Convert.ToDateTime(Value);
-						Marshal.WriteInt16(internalBuffer, 0,  (short)tmpDate.Year);
-						Marshal.WriteInt16(internalBuffer, 2,  (short)tmpDate.Month);
-						Marshal.WriteInt16(internalBuffer, 4,  (short)tmpDate.Day);
-						db2CType = DB2Constants.SQL_C_TYPE_DATE;
-						break;
-					case DB2Constants.SQL_TYPE_TIMESTAMP:
-						DateTime tmpDateTime = Convert.ToDateTime(Value);
-						Marshal.WriteInt16(internalBuffer, 0,  (short)tmpDateTime.Year);
-						Marshal.WriteInt16(internalBuffer, 2,  (short)tmpDateTime.Month);
-						Marshal.WriteInt16(internalBuffer, 4,  (short)tmpDateTime.Day);
-						Marshal.WriteInt16(internalBuffer, 6,  (short)tmpDateTime.Hour);
-						Marshal.WriteInt16(internalBuffer, 8,  (short)tmpDateTime.Minute);
-						Marshal.WriteInt16(internalBuffer, 10, (short)tmpDateTime.Second);
-						Marshal.WriteInt32(internalBuffer, 12, (int)((tmpDateTime.Ticks % 10000000) * 100));
-						db2CType = DB2Constants.SQL_C_TYPE_TIMESTAMP;
-						break;
-					case DB2Constants.SQL_TYPE_TIME:
-						TimeSpan tmpTime = (TimeSpan)Value;
-						Marshal.WriteInt16(internalBuffer, 0,  (short)tmpTime.Hours);
-						Marshal.WriteInt16(internalBuffer, 2,  (short)tmpTime.Minutes);
-						Marshal.WriteInt16(internalBuffer, 4,  (short)tmpTime.Seconds);
-						db2CType = DB2Constants.SQL_C_TYPE_TIME;
-						break;
-				}
-			}
-			else
-			{
-				switch (db2DataType) 
-				{
-					case DB2Constants.SQL_WCHAR:
-						db2LastUsedDataType = DB2Constants.SQL_VARGRAPHIC;
-						db2CType = DB2Constants.SQL_C_WCHAR;
-						break;
-					case DB2Constants.SQL_VARBINARY:
-						db2CType = DB2Constants.SQL_TYPE_BINARY;
-						break;
-					case DB2Constants.SQL_BIT:
-					case DB2Constants.SQL_UTINYINT:
-					case DB2Constants.SQL_SMALLINT:
-						db2CType = DB2Constants.SQL_C_SSHORT;
-						break;
-					case DB2Constants.SQL_INTEGER:
-						db2CType = DB2Constants.SQL_C_SLONG;
-						break;
-					case DB2Constants.SQL_BIGINT:
-						db2CType = DB2Constants.SQL_C_SBIGINT;
-						break;
-					case DB2Constants.SQL_REAL:
-						db2CType = DB2Constants.SQL_C_TYPE_REAL;
-						break;
-					case DB2Constants.SQL_DOUBLE:
-						db2CType = DB2Constants.SQL_C_DOUBLE;
-						break;
-					case DB2Constants.SQL_DECIMAL:
-						db2LastUsedDataType = DB2Constants.SQL_VARCHAR;
-						db2CType = DB2Constants.SQL_C_CHAR;
-						break;
-					case DB2Constants.SQL_TYPE_DATE:
-						db2CType = DB2Constants.SQL_C_TYPE_DATE;
-						break;
-					case DB2Constants.SQL_TYPE_TIMESTAMP:
-						db2CType = DB2Constants.SQL_C_TYPE_TIMESTAMP;
-						break;
-					case DB2Constants.SQL_TYPE_TIME:
-						db2CType = DB2Constants.SQL_C_TYPE_TIME;
-						break;
-				}
-			}
-			Marshal.WriteInt32(internalLengthBuffer, inLength);
-			short sqlRet = DB2CLIWrapper.SQLBindParameter(hwndStmt, paramNum, db2Direction, 
-				db2CType, db2LastUsedDataType, Size, Scale,
-				internalBuffer, requiredMemory, internalLengthBuffer);
-
-			return sqlRet;
-		}
-		#endregion
-		object ICloneable.Clone ()
-		{
-			DB2Parameter clone = new DB2Parameter();
-			clone.dbType = dbType;
-			clone.db2Type = db2Type;
-			clone.db2DataType = db2DataType;
-			clone.db2LastUsedDataType = db2LastUsedDataType;
-			clone.direction = direction;
-			clone.db2Direction = db2Direction;
-			clone.nullable = nullable;
-			clone.parameterName = parameterName;
-			clone.sourceColumn = sourceColumn;
-			clone.sourceVersion = sourceVersion;
-			clone.dataVal = dataVal;
-			clone.scale = scale;
-			clone.precision = precision;
-			clone.size = size;
-			if(dataVal is ICloneable)
-			{
-				clone.dataVal = ((ICloneable)dataVal).Clone();
-			}
-			return clone;
-		}
-		
-		internal void GetOutValue()
-		{
-			int length = Marshal.ReadInt32(internalLengthBuffer);
-			if(length == DB2Constants.SQL_NULL_DATA)
-			{
-				dataVal = DBNull.Value;
-				return;
-			}
-			switch(DB2Type) 
-			{
-				case DB2Type.SmallInt:
-					dataVal = Marshal.ReadInt16(internalBuffer);
-					break;
-				case DB2Type.Integer:
-					dataVal = Marshal.ReadInt32(internalBuffer);
-					break;
-				case DB2Type.BigInt:
-					dataVal = Marshal.ReadInt64(internalBuffer);
-					break;
-				case DB2Type.Double:
-					dataVal = Marshal.PtrToStructure(internalBuffer, typeof(Double));
-					break;
-				case DB2Type.Float:
-					dataVal = Marshal.PtrToStructure(internalBuffer, typeof(Single));
-					break;
-				case DB2Type.Char:
-				case DB2Type.VarChar:
-				case DB2Type.LongVarChar:
-				case DB2Type.Graphic:
-				case DB2Type.VarGraphic:
-				case DB2Type.LongVarGraphic:
-				case DB2Type.Clob:
-				case DB2Type.DbClob:
-					dataVal = Marshal.PtrToStringUni(internalBuffer, Math.Min(Size, length / 2));
-					break;
-				case DB2Type.Binary:
-				case DB2Type.VarBinary:
-				case DB2Type.LongVarBinary:
-				case DB2Type.Blob:
-				case DB2Type.Datalink:
-					length = Math.Min(Size, length);
-					dataVal = new byte[length];
-					Marshal.Copy(internalBuffer, (byte[])dataVal, 0, length);
-					break;
-				case DB2Type.Decimal:
-					dataVal = decimal.Parse(Marshal.PtrToStringAnsi(internalBuffer, length), 
-						System.Globalization.CultureInfo.InvariantCulture);
-					break;
-				case DB2Type.Timestamp:
-					DateTime dtTmp = new DateTime(
-						Marshal.ReadInt16(internalBuffer, 0),  // year
-						Marshal.ReadInt16(internalBuffer, 2),  // month
-						Marshal.ReadInt16(internalBuffer, 4),  // day
-						Marshal.ReadInt16(internalBuffer, 6),  // hour
-						Marshal.ReadInt16(internalBuffer, 8),  // minute
-						Marshal.ReadInt16(internalBuffer, 10));// second
-					dataVal = dtTmp.AddTicks(Marshal.ReadInt32(internalBuffer, 12) / 100); // nanoseconds 
-					break;
-				case DB2Type.Date:
-					dataVal = new DateTime(
-						Marshal.ReadInt16(internalBuffer, 0),
-						Marshal.ReadInt16(internalBuffer, 2),
-						Marshal.ReadInt16(internalBuffer, 4));
-					break;
-				case DB2Type.Time:
-					dataVal = new TimeSpan(
-						Marshal.ReadInt16(internalBuffer, 0),  // Hour
-						Marshal.ReadInt16(internalBuffer, 2),  // Minute
-						Marshal.ReadInt16(internalBuffer, 4)); // Second
-					break;
-
-				case DB2Type.Invalid:
-				case DB2Type.Real:
-				case DB2Type.Numeric:
-				case DB2Type.RowId:
-				case DB2Type.XmlReader:
-					throw new NotImplementedException();
-				default:
-					throw new NotSupportedException("unknown data type");
-			}
-		}
-	}
-}
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Data;
+using System.Runtime.InteropServices;
+
+namespace IBM.Data.DB2
+{
+
+	public sealed class DB2Parameter : MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneable
+	{
+		private DbType dbType = DbType.Object;
+		private DB2Type db2Type = DB2Type.Invalid;
+		private short db2DataType = DB2Constants.SQL_UNKNOWN_TYPE;
+		private short db2LastUsedDataType = DB2Constants.SQL_UNKNOWN_TYPE;
+
+		private ParameterDirection direction;
+		private short db2Direction = DB2Constants.SQL_PARAM_INPUT;
+		private bool nullable = true;
+		private string parameterName;
+		private string sourceColumn;
+		private DataRowVersion sourceVersion;
+		private object dataVal;
+		private byte scale, precision;
+		private int size;
+		internal IntPtr internalBuffer;
+		internal IntPtr internalLengthBuffer;
+		internal int requiredMemory;
+
+		#region Contructors and destructors
+		public DB2Parameter()
+		{
+			direction = ParameterDirection.Input;
+			sourceVersion = DataRowVersion.Current;
+		} 
+
+		public DB2Parameter(string name, DB2Type type)
+		{
+			direction = ParameterDirection.Input;
+			sourceVersion = DataRowVersion.Current;
+			this.ParameterName = name;
+			this.DB2Type = type;
+		} 
+
+		public DB2Parameter(string name, DB2Type type, int size)
+		{
+			direction = ParameterDirection.Input;
+			sourceVersion = DataRowVersion.Current;
+			this.ParameterName = name;
+			this.DB2Type = type;
+			this.Size = size;
+		}
+
+		public DB2Parameter(string name, DB2Type type, int size, string sourceColumn)
+		{
+			direction = ParameterDirection.Input;
+			sourceVersion = DataRowVersion.Current;
+			this.ParameterName = name;
+			this.DB2Type = type;
+			this.Size = size;
+			this.SourceColumn = sourceColumn;
+		}
+
+		public DB2Parameter(string parameterName, object value)
+		{
+			direction = ParameterDirection.Input;
+			sourceVersion = DataRowVersion.Current;
+			this.ParameterName = parameterName;
+			this.Value = value;
+		}
+
+		public DB2Parameter(string parameterName, DB2Type db2Type, int size, ParameterDirection parameterDirection, bool isNullable, byte precision, byte scale, string srcColumn, DataRowVersion srcVersion, object value)
+		{
+			this.ParameterName = parameterName;
+			this.DB2Type = db2Type;
+			this.Size = size;
+			this.Direction = parameterDirection;
+			this.IsNullable = isNullable;
+			this.Precision = precision;
+			this.Scale = scale;
+			this.SourceColumn = srcColumn;
+			this.SourceVersion = srcVersion;
+			this.Value = value;
+		}
+
+		#endregion
+
+		#region Properties
+		#region DbType Property
+		public DB2Type DB2Type
+		{
+			get 
+			{
+				return db2Type;
+			}
+			set 
+			{
+				db2Type = value;
+				switch(db2Type)
+				{
+					case DB2Type.Invalid:        dbType = DbType.Object;            db2DataType = DB2Constants.SQL_UNKNOWN_TYPE;   break;
+					case DB2Type.SmallInt:       dbType = DbType.Int16;             db2DataType = DB2Constants.SQL_SMALLINT;       break;
+					case DB2Type.Integer:        dbType = DbType.Int32;             db2DataType = DB2Constants.SQL_INTEGER;        break;
+					case DB2Type.BigInt:         dbType = DbType.Int64;             db2DataType = DB2Constants.SQL_BIGINT;         break;
+					case DB2Type.Real:           dbType = DbType.Single;            db2DataType = DB2Constants.SQL_REAL;           break;
+					case DB2Type.Double:         dbType = DbType.Double;            db2DataType = DB2Constants.SQL_DOUBLE;         break;
+					case DB2Type.Float:          dbType = DbType.Single;            db2DataType = DB2Constants.SQL_REAL;           break;
+					case DB2Type.Decimal:        dbType = DbType.Decimal;           db2DataType = DB2Constants.SQL_DECIMAL;        break;
+					case DB2Type.Numeric:        dbType = DbType.VarNumeric;        db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.Date:           dbType = DbType.Date;              db2DataType = DB2Constants.SQL_TYPE_DATE;      break;
+					case DB2Type.Time:           dbType = DbType.Time;              db2DataType = DB2Constants.SQL_TYPE_TIME;      break;
+					case DB2Type.Timestamp:      dbType = DbType.DateTime;          db2DataType = DB2Constants.SQL_TYPE_TIMESTAMP; break;
+					case DB2Type.Char:           dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.VarChar:        dbType = DbType.StringFixedLength; db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.LongVarChar:    dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.Binary:         dbType = DbType.Binary;            db2DataType = DB2Constants.SQL_VARBINARY;      break;
+					case DB2Type.VarBinary:      dbType = DbType.Binary;            db2DataType = DB2Constants.SQL_VARBINARY;      break;
+					case DB2Type.LongVarBinary:  dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.Graphic:        dbType = DbType.StringFixedLength; db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.VarGraphic:     dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.LongVarGraphic: dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.Clob:           dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.Blob:           dbType = DbType.Binary;            db2DataType = DB2Constants.SQL_VARBINARY;      break;
+					case DB2Type.DbClob:         dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DB2Type.Datalink:       dbType = DbType.Byte;              db2DataType = DB2Constants.SQL_VARBINARY;      break;
+					case DB2Type.RowId:          dbType = DbType.Decimal;           db2DataType = DB2Constants.SQL_DECIMAL;        break;
+					case DB2Type.XmlReader:      dbType = DbType.String;            db2DataType = DB2Constants.SQL_WCHAR;          break;
+					default:
+						throw new NotSupportedException("Value is of unknown data type");
+				}
+			}
+		}
+		///
+		/// Parameter data type
+		/// 
+		public DbType DbType
+		{
+			get 
+			{
+				return dbType;
+			}
+			set 
+			{
+				dbType = value;
+				switch(dbType)
+				{
+					case DbType.AnsiString:             db2Type = DB2Type.VarChar;    db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DbType.AnsiStringFixedLength:  db2Type = DB2Type.Char;       db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DbType.Binary:                 db2Type = DB2Type.Binary;     db2DataType = DB2Constants.SQL_VARBINARY;      break;
+					case DbType.Boolean:                db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_BIT;            break;
+					case DbType.Byte:                   db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_UTINYINT;       break;
+					case DbType.Currency:               db2Type = DB2Type.Decimal;    db2DataType = DB2Constants.SQL_DECIMAL;        break;
+					case DbType.Date:                   db2Type = DB2Type.Date;       db2DataType = DB2Constants.SQL_TYPE_DATE;      break;
+					case DbType.DateTime:               db2Type = DB2Type.Timestamp;  db2DataType = DB2Constants.SQL_TYPE_TIMESTAMP; break;
+					case DbType.Decimal:                db2Type = DB2Type.Decimal;    db2DataType = DB2Constants.SQL_DECIMAL;        break;
+					case DbType.Double:                 db2Type = DB2Type.Double;     db2DataType = DB2Constants.SQL_DOUBLE;         break;
+					case DbType.Guid:                   db2Type = DB2Type.Binary;     db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DbType.Int16:                  db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_SMALLINT;       break;
+					case DbType.Int32:                  db2Type = DB2Type.Integer;    db2DataType = DB2Constants.SQL_INTEGER;        break;
+					case DbType.Int64:                  db2Type = DB2Type.BigInt;     db2DataType = DB2Constants.SQL_BIGINT;         break;
+					case DbType.Object:                 db2Type = DB2Type.Invalid;    db2DataType = DB2Constants.SQL_UNKNOWN_TYPE;   break;
+					case DbType.SByte:                  db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_UTINYINT;       break;
+					case DbType.Single:                 db2Type = DB2Type.Float;      db2DataType = DB2Constants.SQL_REAL;           break;
+					case DbType.String:                 db2Type = DB2Type.VarChar;    db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DbType.StringFixedLength:      db2Type = DB2Type.Char;       db2DataType = DB2Constants.SQL_WCHAR;          break;
+					case DbType.Time:                   db2Type = DB2Type.Time;       db2DataType = DB2Constants.SQL_TYPE_TIME;      break;
+					case DbType.UInt16:                 db2Type = DB2Type.SmallInt;   db2DataType = DB2Constants.SQL_SMALLINT;       break;
+					case DbType.UInt32:                 db2Type = DB2Type.Integer;    db2DataType = DB2Constants.SQL_INTEGER;        break;
+					case DbType.UInt64:                 db2Type = DB2Type.BigInt;     db2DataType = DB2Constants.SQL_BIGINT;         break;
+					case DbType.VarNumeric:             db2Type = DB2Type.Numeric;    db2DataType = DB2Constants.SQL_WCHAR;          break;
+					default:
+						throw new NotSupportedException("Value is of unknown data type");
+				}
+			}
+		}
+
+		#endregion
+		#region Direction
+		///
+		/// In or out parameter, or both
+		/// 
+		public ParameterDirection Direction
+		{
+			get 
+			{
+				return direction;
+			}
+			set 
+			{
+				direction = value;
+				switch(direction)
+				{
+					default:
+					case ParameterDirection.Input:			db2Direction = DB2Constants.SQL_PARAM_INPUT;		break;
+					case ParameterDirection.Output:			db2Direction = DB2Constants.SQL_PARAM_OUTPUT;		break;
+					case ParameterDirection.InputOutput:	db2Direction = DB2Constants.SQL_PARAM_INPUT_OUTPUT;	break;
+					case ParameterDirection.ReturnValue:	db2Direction = DB2Constants.SQL_RETURN_VALUE;		break;
+				}
+			}
+		}
+		#endregion
+		#region IsNullable
+		///
+		/// Does this parameter support a null value
+		/// 
+		public bool IsNullable 
+		{
+			get 
+			{
+				return nullable;
+			}
+			set 
+			{
+				nullable = value;
+			}
+		}
+		#endregion
+		#region ParameterName
+		public string ParameterName
+		{
+			get 
+			{
+				return parameterName;
+			}
+			set 
+			{
+				parameterName = value;
+			}
+		}
+		#endregion
+		#region SourceColumn
+		///
+		/// Gets or sets the name of the source column that is mapped to the DataSet
+		/// 
+		public string SourceColumn
+		{
+			get 
+			{
+				return sourceColumn;
+			}
+			set 
+			{
+				sourceColumn = value;
+			}
+		}
+		#endregion
+		#region SourceVersion
+		///
+		/// DataRowVersion property
+		/// 
+		public DataRowVersion SourceVersion 
+		{
+			get 
+			{
+				return sourceVersion;
+			}
+			set 
+			{
+				sourceVersion = value;
+			}
+		}
+		#endregion
+		#region IDbDataParameter properties
+		public byte Precision 
+		{
+			get 
+			{ 
+				return precision;
+			}
+			set 
+			{ 
+				precision = value; 
+			}
+		}
+		
+		public byte Scale 
+		{
+			get 
+			{ 
+				return scale;
+			}
+			set 
+			{ 
+				scale = value; 
+			}
+		}
+		
+		public int Size 
+		{
+			get 
+			{
+				return size;
+			}
+			set 
+			{ 
+				size = value;
+			}
+		}
+		#endregion
+		#region Value
+		///
+		/// The actual parameter data
+		/// 
+		public object Value 
+		{
+			get
+			{
+				return dataVal;
+			}
+			set 
+			{
+				this.dataVal = value;
+			}
+		}
+		#endregion
+		#endregion
+		
+		#region inferType Method
+		/// <summary>
+		/// Determine the data type based on the value
+		/// </summary>
+		private void InferType()
+		{
+			if(Value == null)
+				throw new ArgumentException("No DB2Parameter.Value found");
+
+			if(Value is IConvertible)
+			{
+				switch(((IConvertible)Value).GetTypeCode())
+				{
+					case TypeCode.Char:      dbType = DbType.Byte;       db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_WCHAR;           break;
+					case TypeCode.Boolean:   dbType = DbType.Byte;       db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_BIT;             break;
+					case TypeCode.SByte:
+					case TypeCode.Byte:      dbType = DbType.Byte;       db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_UTINYINT;        break;
+					case TypeCode.UInt16:
+					case TypeCode.Int16:     dbType = DbType.Int16;      db2Type = DB2Type.SmallInt;    db2DataType = DB2Constants.SQL_SMALLINT;        break;
+					case TypeCode.UInt32:
+					case TypeCode.Int32:     dbType = DbType.Int32;      db2Type = DB2Type.Integer;     db2DataType = DB2Constants.SQL_INTEGER;         break;
+					case TypeCode.UInt64:
+					case TypeCode.Int64:     dbType = DbType.Int64;      db2Type = DB2Type.BigInt;      db2DataType = DB2Constants.SQL_BIGINT;          break;
+					case TypeCode.Single:    dbType = DbType.Single;     db2Type = DB2Type.Float;       db2DataType = DB2Constants.SQL_REAL;            break;
+					case TypeCode.Double:    dbType = DbType.Double;     db2Type = DB2Type.Double;      db2DataType = DB2Constants.SQL_DOUBLE;          break;
+					case TypeCode.Decimal:   dbType = DbType.Decimal;    db2Type = DB2Type.Decimal;     db2DataType = DB2Constants.SQL_DECIMAL;         break;
+					case TypeCode.DateTime:  dbType = DbType.DateTime;   db2Type = DB2Type.Timestamp;   db2DataType = DB2Constants.SQL_TYPE_TIMESTAMP;  break;
+					case TypeCode.String:    dbType = DbType.String;     db2Type = DB2Type.VarChar;     db2DataType = DB2Constants.SQL_WCHAR;           break;
+
+					case TypeCode.Object:
+					case TypeCode.DBNull:
+					case TypeCode.Empty:
+						throw new SystemException("Unknown data type");
+					default:
+						throw new SystemException("Value is of unknown data type");
+				}
+			}
+			else if(Value is byte[])
+			{
+				dbType = DbType.Binary;
+				db2Type = DB2Type.VarBinary;
+				db2DataType = DB2Constants.SQL_VARBINARY;
+			}
+			else if(Value is TimeSpan)
+			{
+				dbType = DbType.Time;
+				db2Type = DB2Type.Time;
+				db2DataType = DB2Constants.SQL_TYPE_TIME;
+			}
+			else
+			{
+				throw new NotSupportedException("Value is of unsupported data type");
+			}
+		}
+		#endregion
+		
+		internal void CalculateRequiredmemory()
+		{
+			//if((direction == ParameterDirection.Input) || (direction == ParameterDirection.InputOutput))
+			//{
+			//	if(Value == null)
+			//		throw new ArgumentException("Value missing");
+			//}
+			if(dbType == DbType.Object)
+			{
+				if((direction == ParameterDirection.Output) || (direction == ParameterDirection.ReturnValue))
+					throw new ArgumentException("Unknown type");
+
+				if((direction != ParameterDirection.Input) || !Convert.IsDBNull(Value))
+				{
+					InferType();
+				}
+			}
+			if (db2DataType == DB2Constants.SQL_INTEGER)
+			{
+				requiredMemory = 4;
+			}
+			if((db2DataType == DB2Constants.SQL_VARBINARY) ||
+				(db2DataType == DB2Constants.SQL_WCHAR))
+			{
+				if(Size <= 0)
+				{
+					if(direction != ParameterDirection.Input)
+						throw new ArgumentException("Size not specified");
+					if(Value == DBNull.Value)
+						requiredMemory = 0;
+					else if(Value is string)
+						requiredMemory = ((string)Value).Length;
+					else if(Value is byte[])
+						requiredMemory = ((byte[])Value).Length;
+					else
+						throw new ArgumentException("wrong type!?");
+				}
+				else
+				{
+					requiredMemory = Size;
+				}
+				if(db2DataType == DB2Constants.SQL_WCHAR)
+					requiredMemory = (requiredMemory * 2) + 2;
+				requiredMemory = (requiredMemory | 0xf) + 1;
+			}
+			requiredMemory = Math.Max(128, requiredMemory);
+		}
+
+		#region Bind 
+		///
+		/// Bind this parameter
+		/// 
+		internal short Bind(IntPtr hwndStmt, short paramNum)
+		{
+			int inLength = requiredMemory;
+			db2LastUsedDataType = db2DataType;
+			short db2CType = DB2Constants.SQL_C_DEFAULT;
+			if((direction == ParameterDirection.Input) || (direction == ParameterDirection.InputOutput))
+			{
+				if(Convert.IsDBNull(Value))
+				{
+					inLength = DB2Constants.SQL_NULL_DATA;
+					if((db2DataType == DB2Constants.SQL_UNKNOWN_TYPE) || 
+						(db2DataType == DB2Constants.SQL_DECIMAL))
+					{
+						db2LastUsedDataType = DB2Constants.SQL_VARGRAPHIC;
+						db2CType = DB2Constants.SQL_C_WCHAR;
+					}
+				}
+			}
+			if((direction == ParameterDirection.Input) || (direction == ParameterDirection.InputOutput))
+			{
+				switch (db2DataType) 
+				{
+					case DB2Constants.SQL_WCHAR:
+						string tmpString = Convert.ToString(Value);
+						inLength =  tmpString.Length;
+						if((Size > 0) && (inLength > Size))
+							inLength = Size;
+						Marshal.Copy(tmpString.ToCharArray(), 0, internalBuffer, inLength);
+						inLength *= 2;
+						db2LastUsedDataType = DB2Constants.SQL_VARGRAPHIC;
+						db2CType = DB2Constants.SQL_C_WCHAR;
+						if(inLength > 32000)
+						{
+							db2LastUsedDataType = DB2Constants.SQL_TYPE_BLOB;
+						}
+						break;
+					case DB2Constants.SQL_VARBINARY:
+						byte[] tmpBytes = (byte[])Value;
+						inLength = tmpBytes.Length;
+						if((Size > 0) && (inLength > Size))
+							inLength = Size;
+						Marshal.Copy(tmpBytes, 0, internalBuffer, inLength);
+						db2CType = DB2Constants.SQL_TYPE_BINARY;
+						break;
+					case DB2Constants.SQL_BIT:
+					case DB2Constants.SQL_UTINYINT:
+					case DB2Constants.SQL_SMALLINT:
+						Marshal.WriteInt16(internalBuffer, Convert.ToInt16(Value));
+						db2CType = DB2Constants.SQL_C_SSHORT;
+						break;
+					case DB2Constants.SQL_INTEGER:
+						Marshal.WriteInt32(internalBuffer, Convert.ToInt32(Value));
+						db2CType = DB2Constants.SQL_C_SLONG;
+						break;
+					case DB2Constants.SQL_BIGINT:
+						Marshal.WriteInt64(internalBuffer, Convert.ToInt64(Value));
+						db2CType = DB2Constants.SQL_C_SBIGINT;
+						break;
+					case DB2Constants.SQL_REAL:
+						Marshal.StructureToPtr((float)Convert.ToDouble(Value), internalBuffer, false);
+						db2CType = DB2Constants.SQL_C_TYPE_REAL;
+						break;
+					case DB2Constants.SQL_DOUBLE:
+						Marshal.StructureToPtr(Convert.ToDouble(Value), internalBuffer, false);
+						db2CType = DB2Constants.SQL_C_DOUBLE;
+						break;
+					case DB2Constants.SQL_DECIMAL:
+						byte[] tmpDecimalData = System.Text.Encoding.UTF8.GetBytes(
+							Convert.ToDecimal(Value).ToString(System.Globalization.CultureInfo.InvariantCulture));
+						inLength =  Math.Min(tmpDecimalData.Length, requiredMemory);
+						Marshal.Copy(tmpDecimalData, 0, internalBuffer, inLength);
+						db2LastUsedDataType = DB2Constants.SQL_VARCHAR;
+						db2CType = DB2Constants.SQL_C_CHAR;
+						break;
+					case DB2Constants.SQL_TYPE_DATE:
+						DateTime tmpDate = Convert.ToDateTime(Value);
+						Marshal.WriteInt16(internalBuffer, 0,  (short)tmpDate.Year);
+						Marshal.WriteInt16(internalBuffer, 2,  (short)tmpDate.Month);
+						Marshal.WriteInt16(internalBuffer, 4,  (short)tmpDate.Day);
+						db2CType = DB2Constants.SQL_C_TYPE_DATE;
+						break;
+					case DB2Constants.SQL_TYPE_TIMESTAMP:
+						DateTime tmpDateTime = Convert.ToDateTime(Value);
+						Marshal.WriteInt16(internalBuffer, 0,  (short)tmpDateTime.Year);
+						Marshal.WriteInt16(internalBuffer, 2,  (short)tmpDateTime.Month);
+						Marshal.WriteInt16(internalBuffer, 4,  (short)tmpDateTime.Day);
+						Marshal.WriteInt16(internalBuffer, 6,  (short)tmpDateTime.Hour);
+						Marshal.WriteInt16(internalBuffer, 8,  (short)tmpDateTime.Minute);
+						Marshal.WriteInt16(internalBuffer, 10, (short)tmpDateTime.Second);
+						Marshal.WriteInt32(internalBuffer, 12, (int)((tmpDateTime.Ticks % 10000000) * 100));
+						db2CType = DB2Constants.SQL_C_TYPE_TIMESTAMP;
+						break;
+					case DB2Constants.SQL_TYPE_TIME:
+						TimeSpan tmpTime = (TimeSpan)Value;
+						Marshal.WriteInt16(internalBuffer, 0,  (short)tmpTime.Hours);
+						Marshal.WriteInt16(internalBuffer, 2,  (short)tmpTime.Minutes);
+						Marshal.WriteInt16(internalBuffer, 4,  (short)tmpTime.Seconds);
+						db2CType = DB2Constants.SQL_C_TYPE_TIME;
+						break;
+				}
+			}
+			else
+			{
+				switch (db2DataType) 
+				{
+					case DB2Constants.SQL_WCHAR:
+						db2LastUsedDataType = DB2Constants.SQL_VARGRAPHIC;
+						db2CType = DB2Constants.SQL_C_WCHAR;
+						break;
+					case DB2Constants.SQL_VARBINARY:
+						db2CType = DB2Constants.SQL_TYPE_BINARY;
+						break;
+					case DB2Constants.SQL_BIT:
+					case DB2Constants.SQL_UTINYINT:
+					case DB2Constants.SQL_SMALLINT:
+						db2CType = DB2Constants.SQL_C_SSHORT;
+						break;
+					case DB2Constants.SQL_INTEGER:
+						db2CType = DB2Constants.SQL_C_SLONG;
+						break;
+					case DB2Constants.SQL_BIGINT:
+						db2CType = DB2Constants.SQL_C_SBIGINT;
+						break;
+					case DB2Constants.SQL_REAL:
+						db2CType = DB2Constants.SQL_C_TYPE_REAL;
+						break;
+					case DB2Constants.SQL_DOUBLE:
+						db2CType = DB2Constants.SQL_C_DOUBLE;
+						break;
+					case DB2Constants.SQL_DECIMAL:
+						db2LastUsedDataType = DB2Constants.SQL_VARCHAR;
+						db2CType = DB2Constants.SQL_C_CHAR;
+						break;
+					case DB2Constants.SQL_TYPE_DATE:
+						db2CType = DB2Constants.SQL_C_TYPE_DATE;
+						break;
+					case DB2Constants.SQL_TYPE_TIMESTAMP:
+						db2CType = DB2Constants.SQL_C_TYPE_TIMESTAMP;
+						break;
+					case DB2Constants.SQL_TYPE_TIME:
+						db2CType = DB2Constants.SQL_C_TYPE_TIME;
+						break;
+				}
+			}
+			Marshal.WriteInt32(internalLengthBuffer, inLength);
+			short sqlRet = DB2CLIWrapper.SQLBindParameter(hwndStmt, paramNum, db2Direction, 
+				db2CType, db2LastUsedDataType, Size, Scale,
+				internalBuffer, requiredMemory, internalLengthBuffer);
+
+			return sqlRet;
+		}
+		#endregion
+		object ICloneable.Clone ()
+		{
+			DB2Parameter clone = new DB2Parameter();
+			clone.dbType = dbType;
+			clone.db2Type = db2Type;
+			clone.db2DataType = db2DataType;
+			clone.db2LastUsedDataType = db2LastUsedDataType;
+			clone.direction = direction;
+			clone.db2Direction = db2Direction;
+			clone.nullable = nullable;
+			clone.parameterName = parameterName;
+			clone.sourceColumn = sourceColumn;
+			clone.sourceVersion = sourceVersion;
+			clone.dataVal = dataVal;
+			clone.scale = scale;
+			clone.precision = precision;
+			clone.size = size;
+			if(dataVal is ICloneable)
+			{
+				clone.dataVal = ((ICloneable)dataVal).Clone();
+			}
+			return clone;
+		}
+		
+		internal void GetOutValue()
+		{
+			int length = Marshal.ReadInt32(internalLengthBuffer);
+			if(length == DB2Constants.SQL_NULL_DATA)
+			{
+				dataVal = DBNull.Value;
+				return;
+			}
+			switch(DB2Type) 
+			{
+				case DB2Type.SmallInt:
+					dataVal = Marshal.ReadInt16(internalBuffer);
+					break;
+				case DB2Type.Integer:
+					dataVal = Marshal.ReadInt32(internalBuffer);
+					break;
+				case DB2Type.BigInt:
+					dataVal = Marshal.ReadInt64(internalBuffer);
+					break;
+				case DB2Type.Double:
+					dataVal = Marshal.PtrToStructure(internalBuffer, typeof(Double));
+					break;
+				case DB2Type.Float:
+					dataVal = Marshal.PtrToStructure(internalBuffer, typeof(Single));
+					break;
+				case DB2Type.Char:
+				case DB2Type.VarChar:
+				case DB2Type.LongVarChar:
+				case DB2Type.Graphic:
+				case DB2Type.VarGraphic:
+				case DB2Type.LongVarGraphic:
+				case DB2Type.Clob:
+				case DB2Type.DbClob:
+					dataVal = Marshal.PtrToStringUni(internalBuffer, Math.Min(Size, length / 2));
+					break;
+				case DB2Type.Binary:
+				case DB2Type.VarBinary:
+				case DB2Type.LongVarBinary:
+				case DB2Type.Blob:
+				case DB2Type.Datalink:
+					length = Math.Min(Size, length);
+					dataVal = new byte[length];
+					Marshal.Copy(internalBuffer, (byte[])dataVal, 0, length);
+					break;
+				case DB2Type.Decimal:
+					dataVal = decimal.Parse(Marshal.PtrToStringAnsi(internalBuffer, length), 
+						System.Globalization.CultureInfo.InvariantCulture);
+					break;
+				case DB2Type.Timestamp:
+					DateTime dtTmp = new DateTime(
+						Marshal.ReadInt16(internalBuffer, 0),  // year
+						Marshal.ReadInt16(internalBuffer, 2),  // month
+						Marshal.ReadInt16(internalBuffer, 4),  // day
+						Marshal.ReadInt16(internalBuffer, 6),  // hour
+						Marshal.ReadInt16(internalBuffer, 8),  // minute
+						Marshal.ReadInt16(internalBuffer, 10));// second
+					dataVal = dtTmp.AddTicks(Marshal.ReadInt32(internalBuffer, 12) / 100); // nanoseconds 
+					break;
+				case DB2Type.Date:
+					dataVal = new DateTime(
+						Marshal.ReadInt16(internalBuffer, 0),
+						Marshal.ReadInt16(internalBuffer, 2),
+						Marshal.ReadInt16(internalBuffer, 4));
+					break;
+				case DB2Type.Time:
+					dataVal = new TimeSpan(
+						Marshal.ReadInt16(internalBuffer, 0),  // Hour
+						Marshal.ReadInt16(internalBuffer, 2),  // Minute
+						Marshal.ReadInt16(internalBuffer, 4)); // Second
+					break;
+
+				case DB2Type.Invalid:
+				case DB2Type.Real:
+				case DB2Type.Numeric:
+				case DB2Type.RowId:
+				case DB2Type.XmlReader:
+					throw new NotImplementedException();
+				default:
+					throw new NotSupportedException("unknown data type");
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ParameterCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2ParameterCollection.cs
@@ -1,156 +1,156 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Data;
-using System.Collections;
-using System.Globalization;
-
-
-namespace IBM.Data.DB2
-{
-
-	public class DB2ParameterCollection : ArrayList, IDataParameterCollection
-	{
-		IntPtr hwndStmt = IntPtr.Zero;
-		
-		internal IntPtr HwndStmt
-		{
-			set
-			{
-				hwndStmt = value;
-			}
-		}
-		public new DB2Parameter this[int index]
-		{
-			get 
-			{
-				return (DB2Parameter)base[index];
-			}
-			set
-			{
-				base[index] = value;
-			}
-		}
-		public DB2Parameter this[string index]
-		{
-			get 
-			{
-				return (DB2Parameter)base[IndexOf(index)];
-			}
-			set
-			{
-				base[IndexOf(index)] = value;
-			}
-		}
-		object IDataParameterCollection.this[string index]
-		{
-			get 
-			{
-				return this[IndexOf(index)];
-			}
-			set
-			{
-				this[IndexOf(index)] = (DB2Parameter)value;
-			}
-		}
-		public bool Contains(string paramName)
-		{
-			return(-1 != IndexOf(paramName));
-		}
-
-		public int IndexOf(string paramName)
-		{
-			int index = 0;
-			for(index = 0; index < Count; index++) 
-			{
-				if (0 == _cultureAwareCompare(((DB2Parameter)this[index]).ParameterName, paramName))
-				{
-					return index;
-				}
-			}
-			return -1;
-		}
-
-		public void RemoveAt(string paramName)
-		{
-			RemoveAt(IndexOf(paramName));
-		}
-
-		public override int Add(object obj)
-		{
-			DB2Parameter value = (DB2Parameter)obj;
-			if(value.ParameterName == null)
-				throw new ArgumentException("parameter must be named");
-			if(IndexOf(value.ParameterName) >= 0)
-				throw new ArgumentException("parameter name is already in collection");
-			return base.Add(value);
-		}
-
-		public DB2Parameter Add(DB2Parameter value)
-		{
-			if(value.ParameterName == null)
-				throw new ArgumentException("parameter must be named");
-			if(IndexOf(value.ParameterName) >= 0)
-				throw new ArgumentException("parameter name is already in collection");
-			base.Add(value);
-			return value;
-		}
-
-		public DB2Parameter Add(string paramName, DB2Type type)
-		{
-			return Add(new DB2Parameter(paramName, type));
-		}
-
-		public DB2Parameter Add(string paramName, object value)
-		{
-			return Add(new DB2Parameter(paramName, value));
-		}
-
-		public DB2Parameter Add(string paramName, DB2Type dbType, int size)
-		{
-			return Add(new DB2Parameter(paramName, dbType, size));
-		}
-
-		public DB2Parameter Add(string paramName, DB2Type dbType, int size, string sourceColumn)
-		{
-			return Add(new DB2Parameter(paramName, dbType, size, sourceColumn));
-		}
-
-		private int _cultureAwareCompare(string strA, string strB)
-		{
-			return CultureInfo.CurrentCulture.CompareInfo.Compare(strA, strB, CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase);
-		}
-		
-		internal void GetOutValues()
-		{
-			foreach(DB2Parameter param in this)
-			{
-				if(ParameterDirection.Output == param.Direction || ParameterDirection.InputOutput == param.Direction)
-				{
-					param.GetOutValue();
-					//Console.WriteLine(param.ParameterName);
-				}
-			}
-		}
-	}
-}
-
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Data;
+using System.Collections;
+using System.Globalization;
+
+
+namespace IBM.Data.DB2
+{
+
+	public class DB2ParameterCollection : ArrayList, IDataParameterCollection
+	{
+		IntPtr hwndStmt = IntPtr.Zero;
+		
+		internal IntPtr HwndStmt
+		{
+			set
+			{
+				hwndStmt = value;
+			}
+		}
+		public new DB2Parameter this[int index]
+		{
+			get 
+			{
+				return (DB2Parameter)base[index];
+			}
+			set
+			{
+				base[index] = value;
+			}
+		}
+		public DB2Parameter this[string index]
+		{
+			get 
+			{
+				return (DB2Parameter)base[IndexOf(index)];
+			}
+			set
+			{
+				base[IndexOf(index)] = value;
+			}
+		}
+		object IDataParameterCollection.this[string index]
+		{
+			get 
+			{
+				return this[IndexOf(index)];
+			}
+			set
+			{
+				this[IndexOf(index)] = (DB2Parameter)value;
+			}
+		}
+		public bool Contains(string paramName)
+		{
+			return(-1 != IndexOf(paramName));
+		}
+
+		public int IndexOf(string paramName)
+		{
+			int index = 0;
+			for(index = 0; index < Count; index++) 
+			{
+				if (0 == _cultureAwareCompare(((DB2Parameter)this[index]).ParameterName, paramName))
+				{
+					return index;
+				}
+			}
+			return -1;
+		}
+
+		public void RemoveAt(string paramName)
+		{
+			RemoveAt(IndexOf(paramName));
+		}
+
+		public override int Add(object obj)
+		{
+			DB2Parameter value = (DB2Parameter)obj;
+			if(value.ParameterName == null)
+				throw new ArgumentException("parameter must be named");
+			if(IndexOf(value.ParameterName) >= 0)
+				throw new ArgumentException("parameter name is already in collection");
+			return base.Add(value);
+		}
+
+		public DB2Parameter Add(DB2Parameter value)
+		{
+			if(value.ParameterName == null)
+				throw new ArgumentException("parameter must be named");
+			if(IndexOf(value.ParameterName) >= 0)
+				throw new ArgumentException("parameter name is already in collection");
+			base.Add(value);
+			return value;
+		}
+
+		public DB2Parameter Add(string paramName, DB2Type type)
+		{
+			return Add(new DB2Parameter(paramName, type));
+		}
+
+		public DB2Parameter Add(string paramName, object value)
+		{
+			return Add(new DB2Parameter(paramName, value));
+		}
+
+		public DB2Parameter Add(string paramName, DB2Type dbType, int size)
+		{
+			return Add(new DB2Parameter(paramName, dbType, size));
+		}
+
+		public DB2Parameter Add(string paramName, DB2Type dbType, int size, string sourceColumn)
+		{
+			return Add(new DB2Parameter(paramName, dbType, size, sourceColumn));
+		}
+
+		private int _cultureAwareCompare(string strA, string strB)
+		{
+			return CultureInfo.CurrentCulture.CompareInfo.Compare(strA, strB, CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase);
+		}
+		
+		internal void GetOutValues()
+		{
+			foreach(DB2Parameter param in this)
+			{
+				if(ParameterDirection.Output == param.Direction || ParameterDirection.InputOutput == param.Direction)
+				{
+					param.GetOutValue();
+					//Console.WriteLine(param.ParameterName);
+				}
+			}
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Transaction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Transaction.cs
@@ -1,142 +1,142 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Data;
-using System.Runtime.InteropServices;
-
-namespace IBM.Data.DB2
-{
-	public sealed class DB2Transaction : MarshalByRefObject, IDbTransaction
-	{
-		private enum TransactionState
-		{
-			Open,
-			Committed,
-			Rolledback,
-		}
-		IsolationLevel isolationLevel;
-		DB2Connection db2Conn;
-		TransactionState state;
-		
-
-
-		internal DB2Transaction(DB2Connection con, IsolationLevel isoL)
-		{
-			long db2IsoL;
-			db2Conn = con;
-			short sqlRet;
-
-			isolationLevel = isoL;
-
-			switch (isoL) 
-			{
-				default:
-				case System.Data.IsolationLevel.Chaos:				//No DB2equivalent, default to SQL_TXN_READ_COMMITTED
-				case System.Data.IsolationLevel.ReadCommitted:		//SQL_TXN_READ_COMMITTED
-					db2IsoL = DB2Constants.SQL_TXN_READ_COMMITTED;
-					break;
-				case System.Data.IsolationLevel.ReadUncommitted:	//SQL_TXN_READ_UNCOMMITTED
-					db2IsoL = DB2Constants.SQL_TXN_READ_UNCOMMITTED;
-					break;
-				case System.Data.IsolationLevel.RepeatableRead:		//SQL_TXN_REPEATABLE_READ
-					db2IsoL = DB2Constants.SQL_TXN_REPEATABLE_READ;
-					break;
-				case System.Data.IsolationLevel.Serializable:		//SQL_TXN_SERIALIZABLE_READ
-					db2IsoL = DB2Constants.SQL_TXN_SERIALIZABLE_READ;
-					break;
-			}
-
-			if(db2Conn.openConnection.autoCommit)
-			{
-				sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_AUTOCOMMIT, new IntPtr(DB2Constants.SQL_AUTOCOMMIT_OFF), 0);
-				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting AUTOCOMMIT OFF in transaction CTOR.", db2Conn);
-				db2Conn.openConnection.autoCommit = false;
-			}
-			sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_TXN_ISOLATION, new IntPtr(db2IsoL), 0);
-			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting isolation level.", db2Conn);
-
-			state = TransactionState.Open;
-		}
-
-		/// <summary>
-		/// DB2Connection associated with this transaction
-		/// </summary>
-		public IDbConnection Connection
-		{
-			get
-			{
-				return db2Conn;
-			}
-		}
-		/// <summary>
-		/// IsolationLevel property
-		/// </summary>
-		/// 
-		public IsolationLevel IsolationLevel
-		{
-			get 
-			{
-				CheckStateOpen();
-				return isolationLevel;
-			}
-		}
-
-		internal void CheckStateOpen()
-		{
-			if(state == TransactionState.Committed)
-				throw new InvalidOperationException("Transaction was already committed. It is no longer usable.");
-			if(state == TransactionState.Rolledback)
-				throw new InvalidOperationException("Transaction was already rolled back. It is no longer usable.");
-		}
-
-		public void Commit() 
-		{
-			CheckStateOpen();
-			DB2CLIWrapper.SQLEndTran(DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, DB2Constants.SQL_COMMIT);
-			this.state = TransactionState.Committed;
-			this.db2Conn.openConnection.transactionOpen = false;
-			this.db2Conn.WeakRefTransaction = null;
-			this.db2Conn = null;
-		}
-
-		public void Rollback() 
-		{
-			CheckStateOpen();
-			DB2CLIWrapper.SQLEndTran(DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, DB2Constants.SQL_ROLLBACK);
-			this.db2Conn.openConnection.transactionOpen = false;
-			this.state = TransactionState.Rolledback;
-			this.db2Conn.WeakRefTransaction = null;
-			this.db2Conn = null;
-		}
-
-		/// <summary>
-		/// Dispose method.
-		/// </summary>
-		public void Dispose()
-		{
-			if (state != TransactionState.Open) 
-				return;
-
-			Rollback();
-		}
-	}
-}
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Data;
+using System.Runtime.InteropServices;
+
+namespace IBM.Data.DB2
+{
+	public sealed class DB2Transaction : MarshalByRefObject, IDbTransaction
+	{
+		private enum TransactionState
+		{
+			Open,
+			Committed,
+			Rolledback,
+		}
+		IsolationLevel isolationLevel;
+		DB2Connection db2Conn;
+		TransactionState state;
+		
+
+
+		internal DB2Transaction(DB2Connection con, IsolationLevel isoL)
+		{
+			long db2IsoL;
+			db2Conn = con;
+			short sqlRet;
+
+			isolationLevel = isoL;
+
+			switch (isoL) 
+			{
+				default:
+				case System.Data.IsolationLevel.Chaos:				//No DB2equivalent, default to SQL_TXN_READ_COMMITTED
+				case System.Data.IsolationLevel.ReadCommitted:		//SQL_TXN_READ_COMMITTED
+					db2IsoL = DB2Constants.SQL_TXN_READ_COMMITTED;
+					break;
+				case System.Data.IsolationLevel.ReadUncommitted:	//SQL_TXN_READ_UNCOMMITTED
+					db2IsoL = DB2Constants.SQL_TXN_READ_UNCOMMITTED;
+					break;
+				case System.Data.IsolationLevel.RepeatableRead:		//SQL_TXN_REPEATABLE_READ
+					db2IsoL = DB2Constants.SQL_TXN_REPEATABLE_READ;
+					break;
+				case System.Data.IsolationLevel.Serializable:		//SQL_TXN_SERIALIZABLE_READ
+					db2IsoL = DB2Constants.SQL_TXN_SERIALIZABLE_READ;
+					break;
+			}
+
+			if(db2Conn.openConnection.autoCommit)
+			{
+				sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_AUTOCOMMIT, new IntPtr(DB2Constants.SQL_AUTOCOMMIT_OFF), 0);
+				DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting AUTOCOMMIT OFF in transaction CTOR.", db2Conn);
+				db2Conn.openConnection.autoCommit = false;
+			}
+			sqlRet = DB2CLIWrapper.SQLSetConnectAttr(db2Conn.DBHandle, DB2Constants.SQL_ATTR_TXN_ISOLATION, new IntPtr(db2IsoL), 0);
+			DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, "Error setting isolation level.", db2Conn);
+
+			state = TransactionState.Open;
+		}
+
+		/// <summary>
+		/// DB2Connection associated with this transaction
+		/// </summary>
+		public IDbConnection Connection
+		{
+			get
+			{
+				return db2Conn;
+			}
+		}
+		/// <summary>
+		/// IsolationLevel property
+		/// </summary>
+		/// 
+		public IsolationLevel IsolationLevel
+		{
+			get 
+			{
+				CheckStateOpen();
+				return isolationLevel;
+			}
+		}
+
+		internal void CheckStateOpen()
+		{
+			if(state == TransactionState.Committed)
+				throw new InvalidOperationException("Transaction was already committed. It is no longer usable.");
+			if(state == TransactionState.Rolledback)
+				throw new InvalidOperationException("Transaction was already rolled back. It is no longer usable.");
+		}
+
+		public void Commit() 
+		{
+			CheckStateOpen();
+			DB2CLIWrapper.SQLEndTran(DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, DB2Constants.SQL_COMMIT);
+			this.state = TransactionState.Committed;
+			this.db2Conn.openConnection.transactionOpen = false;
+			this.db2Conn.WeakRefTransaction = null;
+			this.db2Conn = null;
+		}
+
+		public void Rollback() 
+		{
+			CheckStateOpen();
+			DB2CLIWrapper.SQLEndTran(DB2Constants.SQL_HANDLE_DBC, db2Conn.DBHandle, DB2Constants.SQL_ROLLBACK);
+			this.db2Conn.openConnection.transactionOpen = false;
+			this.state = TransactionState.Rolledback;
+			this.db2Conn.WeakRefTransaction = null;
+			this.db2Conn = null;
+		}
+
+		/// <summary>
+		/// Dispose method.
+		/// </summary>
+		public void Dispose()
+		{
+			if (state != TransactionState.Open) 
+				return;
+
+			Rollback();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Type.cs
+++ mono-4.6.2.7+dfsg/mcs/class/IBM.Data.DB2/IBM.Data.DB2/DB2Type.cs
@@ -1,91 +1,91 @@
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace IBM.Data.DB2
-{
-	public enum DB2Type
-	{
-		Invalid = 0,
-		SmallInt = 1,
-		Integer = 2,
-		BigInt = 3,
-		Real = 4,
-		Double = 5,
-		Float = 6,
-		Decimal = 7,
-		Numeric = 8,
-		Date = 9,
-		Time = 10,
-		Timestamp = 11,
-		Char = 12,
-		VarChar = 13,
-		LongVarChar = 14,
-		Binary = 15,
-		VarBinary = 16,
-		LongVarBinary = 17,
-		Graphic = 18,
-		VarGraphic = 19,
-		LongVarGraphic = 20,
-		Clob = 21,
-		Blob = 22,
-		DbClob = 23,
-		Datalink = 24,
-		RowId = 25,
-		XmlReader = 26,
-	}
-	public class DB2TypeConverter
-	{
-		public static Type GetManagedType(int sql_type)
-		{
-			switch(sql_type)
-			{
-				case DB2Constants.SQL_INTEGER:
-					return typeof(int);
-				case DB2Constants.SQL_SMALLINT:
-					return typeof(short);
-				case DB2Constants.SQL_BIGINT:
-					return typeof(long);
-				case DB2Constants.SQL_DOUBLE:
-					return typeof(double);
-				case DB2Constants.SQL_DECIMAL:
-					return typeof(decimal);
-				case DB2Constants.SQL_DATETIME:
-				case DB2Constants.SQL_TYPE_DATE:
-				case DB2Constants.SQL_TYPE_TIMESTAMP:
-					return typeof(DateTime);
-				case DB2Constants.SQL_TYPE_TIME:
-					return typeof(TimeSpan);
-				case DB2Constants.SQL_CHAR:
-				case DB2Constants.SQL_VARCHAR:
-				case DB2Constants.SQL_TYPE_CLOB:
-					return typeof(string);
-				case DB2Constants.SQL_TYPE_BLOB:
-				case DB2Constants.SQL_TYPE_BINARY:
-				case DB2Constants.SQL_LONGVARBINARY:
-				case DB2Constants.SQL_VARBINARY:
-					return typeof(byte[]);
-			}
-			throw new NotImplementedException("Unknown SQL type " + sql_type);
-		}
-	}
-}
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace IBM.Data.DB2
+{
+	public enum DB2Type
+	{
+		Invalid = 0,
+		SmallInt = 1,
+		Integer = 2,
+		BigInt = 3,
+		Real = 4,
+		Double = 5,
+		Float = 6,
+		Decimal = 7,
+		Numeric = 8,
+		Date = 9,
+		Time = 10,
+		Timestamp = 11,
+		Char = 12,
+		VarChar = 13,
+		LongVarChar = 14,
+		Binary = 15,
+		VarBinary = 16,
+		LongVarBinary = 17,
+		Graphic = 18,
+		VarGraphic = 19,
+		LongVarGraphic = 20,
+		Clob = 21,
+		Blob = 22,
+		DbClob = 23,
+		Datalink = 24,
+		RowId = 25,
+		XmlReader = 26,
+	}
+	public class DB2TypeConverter
+	{
+		public static Type GetManagedType(int sql_type)
+		{
+			switch(sql_type)
+			{
+				case DB2Constants.SQL_INTEGER:
+					return typeof(int);
+				case DB2Constants.SQL_SMALLINT:
+					return typeof(short);
+				case DB2Constants.SQL_BIGINT:
+					return typeof(long);
+				case DB2Constants.SQL_DOUBLE:
+					return typeof(double);
+				case DB2Constants.SQL_DECIMAL:
+					return typeof(decimal);
+				case DB2Constants.SQL_DATETIME:
+				case DB2Constants.SQL_TYPE_DATE:
+				case DB2Constants.SQL_TYPE_TIMESTAMP:
+					return typeof(DateTime);
+				case DB2Constants.SQL_TYPE_TIME:
+					return typeof(TimeSpan);
+				case DB2Constants.SQL_CHAR:
+				case DB2Constants.SQL_VARCHAR:
+				case DB2Constants.SQL_TYPE_CLOB:
+					return typeof(string);
+				case DB2Constants.SQL_TYPE_BLOB:
+				case DB2Constants.SQL_TYPE_BINARY:
+				case DB2Constants.SQL_LONGVARBINARY:
+				case DB2Constants.SQL_VARBINARY:
+					return typeof(byte[]);
+			}
+			throw new NotImplementedException("Unknown SQL type " + sql_type);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/AssemblyInfo.cs
@@ -1,54 +1,54 @@
-// AssemblyInfo.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: CLSCompliant(true)]
-
-[assembly: AssemblyTitle("ICSharpCode.SharpZipLibrary")]
-[assembly: AssemblyDescription("A free C# compression library")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("#ZipLibrary")]
-[assembly: AssemblyCopyright("Copyright 2001-2005 Mike Krueger")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-[assembly: AssemblyVersion("4.84.0.0")]
-
-[assembly: AssemblyDelaySign(true)]
-[assembly: AssemblyKeyFile("SharpZipLib.pub")]
+// AssemblyInfo.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: CLSCompliant(true)]
+
+[assembly: AssemblyTitle("ICSharpCode.SharpZipLibrary")]
+[assembly: AssemblyDescription("A free C# compression library")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("#ZipLibrary")]
+[assembly: AssemblyCopyright("Copyright 2001-2005 Mike Krueger")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: AssemblyVersion("4.84.0.0")]
+
+[assembly: AssemblyDelaySign(true)]
+[assembly: AssemblyKeyFile("SharpZipLib.pub")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2.cs
@@ -1,99 +1,99 @@
-// BZip2.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-
-namespace ICSharpCode.SharpZipLib.BZip2
-{
-	
-	/// <summary>
-	/// Does all the compress and decompress pre-operation stuff.
-	/// Sets up the streams and file header characters.
-	/// Uses multiply overloaded methods to call for the compress/decompress.
-	/// </summary>
-	public sealed class BZip2
-	{
-		/// <summary>
-		/// Decompress <paramref name="instream">input</paramref> writing 
-		/// decompressed data to <paramref name="outstream">output stream</paramref>
-		/// </summary>
-		public static void Decompress(Stream instream, Stream outstream) 
-		{
-			System.IO.Stream bos = outstream;
-			System.IO.Stream bis = instream;
-			BZip2InputStream bzis = new BZip2InputStream(bis);
-			int ch = bzis.ReadByte();
-			while (ch != -1) {
-				bos.WriteByte((byte)ch);
-				ch = bzis.ReadByte();
-			}
-			bos.Flush();
-		}
-		
-		/// <summary>
-		/// Compress <paramref name="instream">input stream</paramref> sending 
-		/// result to <paramref name="outputstream">output stream</paramref>
-		/// </summary>
-		public static void Compress(Stream instream, Stream outstream, int blockSize) 
-		{			
-			System.IO.Stream bos = outstream;
-			System.IO.Stream bis = instream;
-			int ch = bis.ReadByte();
-			BZip2OutputStream bzos = new BZip2OutputStream(bos, blockSize);
-			while (ch != -1) {
-				bzos.WriteByte((byte)ch);
-				ch = bis.ReadByte();
-			}
-			bis.Close();
-			bzos.Close();
-		}
-	}
-}
-
-/* derived from a file which contained this license :
- * Copyright (c) 1999-2001 Keiron Liddle, Aftex Software
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
-*/
+// BZip2.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+
+namespace ICSharpCode.SharpZipLib.BZip2
+{
+	
+	/// <summary>
+	/// Does all the compress and decompress pre-operation stuff.
+	/// Sets up the streams and file header characters.
+	/// Uses multiply overloaded methods to call for the compress/decompress.
+	/// </summary>
+	public sealed class BZip2
+	{
+		/// <summary>
+		/// Decompress <paramref name="instream">input</paramref> writing 
+		/// decompressed data to <paramref name="outstream">output stream</paramref>
+		/// </summary>
+		public static void Decompress(Stream instream, Stream outstream) 
+		{
+			System.IO.Stream bos = outstream;
+			System.IO.Stream bis = instream;
+			BZip2InputStream bzis = new BZip2InputStream(bis);
+			int ch = bzis.ReadByte();
+			while (ch != -1) {
+				bos.WriteByte((byte)ch);
+				ch = bzis.ReadByte();
+			}
+			bos.Flush();
+		}
+		
+		/// <summary>
+		/// Compress <paramref name="instream">input stream</paramref> sending 
+		/// result to <paramref name="outputstream">output stream</paramref>
+		/// </summary>
+		public static void Compress(Stream instream, Stream outstream, int blockSize) 
+		{			
+			System.IO.Stream bos = outstream;
+			System.IO.Stream bis = instream;
+			int ch = bis.ReadByte();
+			BZip2OutputStream bzos = new BZip2OutputStream(bos, blockSize);
+			while (ch != -1) {
+				bzos.WriteByte((byte)ch);
+				ch = bis.ReadByte();
+			}
+			bis.Close();
+			bzos.Close();
+		}
+	}
+}
+
+/* derived from a file which contained this license :
+ * Copyright (c) 1999-2001 Keiron Liddle, Aftex Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+*/
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2Constants.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2Constants.cs
@@ -1,197 +1,197 @@
-// BZip2Constants.cs
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-namespace ICSharpCode.SharpZipLib.BZip2 
-{
-	
-	/// <summary>
-	/// Defines internal values for both compression and decompression
-	/// </summary>
-	public sealed class BZip2Constants
-	{
-		/// <summary>
-		/// Random numbers used to randomise repetitive blocks
-		/// </summary>
-		public readonly static int[] rNums = {
-			619, 720, 127, 481, 931, 816, 813, 233, 566, 247,
-			985, 724, 205, 454, 863, 491, 741, 242, 949, 214,
-			733, 859, 335, 708, 621, 574,  73, 654, 730, 472,
-			419, 436, 278, 496, 867, 210, 399, 680, 480,  51,
-			878, 465, 811, 169, 869, 675, 611, 697, 867, 561,
-			862, 687, 507, 283, 482, 129, 807, 591, 733, 623,
-			150, 238,  59, 379, 684, 877, 625, 169, 643, 105,
-			170, 607, 520, 932, 727, 476, 693, 425, 174, 647,
-			 73, 122, 335, 530, 442, 853, 695, 249, 445, 515,
-			909, 545, 703, 919, 874, 474, 882, 500, 594, 612,
-			641, 801, 220, 162, 819, 984, 589, 513, 495, 799,
-			161, 604, 958, 533, 221, 400, 386, 867, 600, 782,
-			382, 596, 414, 171, 516, 375, 682, 485, 911, 276,
-			 98, 553, 163, 354, 666, 933, 424, 341, 533, 870,
-			227, 730, 475, 186, 263, 647, 537, 686, 600, 224,
-			469,  68, 770, 919, 190, 373, 294, 822, 808, 206,
-			184, 943, 795, 384, 383, 461, 404, 758, 839, 887,
-			715,  67, 618, 276, 204, 918, 873, 777, 604, 560,
-			951, 160, 578, 722,  79, 804,  96, 409, 713, 940,
-			652, 934, 970, 447, 318, 353, 859, 672, 112, 785,
-			645, 863, 803, 350, 139,  93, 354,  99, 820, 908,
-			609, 772, 154, 274, 580, 184,  79, 626, 630, 742,
-			653, 282, 762, 623, 680,  81, 927, 626, 789, 125,
-			411, 521, 938, 300, 821,  78, 343, 175, 128, 250,
-			170, 774, 972, 275, 999, 639, 495,  78, 352, 126,
-			857, 956, 358, 619, 580, 124, 737, 594, 701, 612,
-			669, 112, 134, 694, 363, 992, 809, 743, 168, 974,
-			944, 375, 748,  52, 600, 747, 642, 182, 862,  81,
-			344, 805, 988, 739, 511, 655, 814, 334, 249, 515,
-			897, 955, 664, 981, 649, 113, 974, 459, 893, 228,
-			433, 837, 553, 268, 926, 240, 102, 654, 459,  51,
-			686, 754, 806, 760, 493, 403, 415, 394, 687, 700,
-			946, 670, 656, 610, 738, 392, 760, 799, 887, 653,
-			978, 321, 576, 617, 626, 502, 894, 679, 243, 440,
-			680, 879, 194, 572, 640, 724, 926,  56, 204, 700,
-			707, 151, 457, 449, 797, 195, 791, 558, 945, 679,
-			297,  59,  87, 824, 713, 663, 412, 693, 342, 606,
-			134, 108, 571, 364, 631, 212, 174, 643, 304, 329,
-			343,  97, 430, 751, 497, 314, 983, 374, 822, 928,
-			140, 206,  73, 263, 980, 736, 876, 478, 430, 305,
-			170, 514, 364, 692, 829,  82, 855, 953, 676, 246,
-			369, 970, 294, 750, 807, 827, 150, 790, 288, 923,
-			804, 378, 215, 828, 592, 281, 565, 555, 710,  82,
-			896, 831, 547, 261, 524, 462, 293, 465, 502,  56,
-			661, 821, 976, 991, 658, 869, 905, 758, 745, 193,
-			768, 550, 608, 933, 378, 286, 215, 979, 792, 961,
-			 61, 688, 793, 644, 986, 403, 106, 366, 905, 644,
-			372, 567, 466, 434, 645, 210, 389, 550, 919, 135,
-			780, 773, 635, 389, 707, 100, 626, 958, 165, 504,
-			920, 176, 193, 713, 857, 265, 203,  50, 668, 108,
-			645, 990, 626, 197, 510, 357, 358, 850, 858, 364,
-			936, 638
-		};
-
-		/// <summary>
-		/// When multiplied by compression parameter (1-9) gives the block size for compression
-		/// 9 gives the best compresssion but uses the most memory.
-		/// </summary>		
-		public readonly static int baseBlockSize = 100000;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int MAX_ALPHA_SIZE = 258;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int MAX_CODE_LEN = 23;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int RUNA = 0;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int RUNB = 1;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int N_GROUPS = 6;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int G_SIZE = 50;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int N_ITERS = 4;
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int MAX_SELECTORS = (2 + (900000 / G_SIZE));
-		
-		/// <summary>
-		/// Backend constant
-		/// </summary>
-		public readonly static int NUM_OVERSHOOT_BYTES = 20;
-		
-		private BZip2Constants()
-		{
-		}
-	}
-}
-	
-/* This file was derived from a file containing this license:
- * 
- * This file is a part of bzip2 and/or libbzip2, a program and
- * library for lossless, block-sorting data compression.
- * 
- * Copyright (C) 1996-1998 Julian R Seward.  All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 
- * 2. The origin of this software must not be misrepresented; you must 
- * not claim that you wrote the original software.  If you use this 
- * software in a product, an acknowledgment in the product 
- * documentation would be appreciated but is not required.
- * 
- * 3. Altered source versions must be plainly marked as such, and must
- * not be misrepresented as being the original software.
- * 
- * 4. The name of the author may not be used to endorse or promote 
- * products derived from this software without specific prior written 
- * permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * Java version ported by Keiron Liddle, Aftex Software <keiron@aftexsw.com> 1999-2001
- */
+// BZip2Constants.cs
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+namespace ICSharpCode.SharpZipLib.BZip2 
+{
+	
+	/// <summary>
+	/// Defines internal values for both compression and decompression
+	/// </summary>
+	public sealed class BZip2Constants
+	{
+		/// <summary>
+		/// Random numbers used to randomise repetitive blocks
+		/// </summary>
+		public readonly static int[] rNums = {
+			619, 720, 127, 481, 931, 816, 813, 233, 566, 247,
+			985, 724, 205, 454, 863, 491, 741, 242, 949, 214,
+			733, 859, 335, 708, 621, 574,  73, 654, 730, 472,
+			419, 436, 278, 496, 867, 210, 399, 680, 480,  51,
+			878, 465, 811, 169, 869, 675, 611, 697, 867, 561,
+			862, 687, 507, 283, 482, 129, 807, 591, 733, 623,
+			150, 238,  59, 379, 684, 877, 625, 169, 643, 105,
+			170, 607, 520, 932, 727, 476, 693, 425, 174, 647,
+			 73, 122, 335, 530, 442, 853, 695, 249, 445, 515,
+			909, 545, 703, 919, 874, 474, 882, 500, 594, 612,
+			641, 801, 220, 162, 819, 984, 589, 513, 495, 799,
+			161, 604, 958, 533, 221, 400, 386, 867, 600, 782,
+			382, 596, 414, 171, 516, 375, 682, 485, 911, 276,
+			 98, 553, 163, 354, 666, 933, 424, 341, 533, 870,
+			227, 730, 475, 186, 263, 647, 537, 686, 600, 224,
+			469,  68, 770, 919, 190, 373, 294, 822, 808, 206,
+			184, 943, 795, 384, 383, 461, 404, 758, 839, 887,
+			715,  67, 618, 276, 204, 918, 873, 777, 604, 560,
+			951, 160, 578, 722,  79, 804,  96, 409, 713, 940,
+			652, 934, 970, 447, 318, 353, 859, 672, 112, 785,
+			645, 863, 803, 350, 139,  93, 354,  99, 820, 908,
+			609, 772, 154, 274, 580, 184,  79, 626, 630, 742,
+			653, 282, 762, 623, 680,  81, 927, 626, 789, 125,
+			411, 521, 938, 300, 821,  78, 343, 175, 128, 250,
+			170, 774, 972, 275, 999, 639, 495,  78, 352, 126,
+			857, 956, 358, 619, 580, 124, 737, 594, 701, 612,
+			669, 112, 134, 694, 363, 992, 809, 743, 168, 974,
+			944, 375, 748,  52, 600, 747, 642, 182, 862,  81,
+			344, 805, 988, 739, 511, 655, 814, 334, 249, 515,
+			897, 955, 664, 981, 649, 113, 974, 459, 893, 228,
+			433, 837, 553, 268, 926, 240, 102, 654, 459,  51,
+			686, 754, 806, 760, 493, 403, 415, 394, 687, 700,
+			946, 670, 656, 610, 738, 392, 760, 799, 887, 653,
+			978, 321, 576, 617, 626, 502, 894, 679, 243, 440,
+			680, 879, 194, 572, 640, 724, 926,  56, 204, 700,
+			707, 151, 457, 449, 797, 195, 791, 558, 945, 679,
+			297,  59,  87, 824, 713, 663, 412, 693, 342, 606,
+			134, 108, 571, 364, 631, 212, 174, 643, 304, 329,
+			343,  97, 430, 751, 497, 314, 983, 374, 822, 928,
+			140, 206,  73, 263, 980, 736, 876, 478, 430, 305,
+			170, 514, 364, 692, 829,  82, 855, 953, 676, 246,
+			369, 970, 294, 750, 807, 827, 150, 790, 288, 923,
+			804, 378, 215, 828, 592, 281, 565, 555, 710,  82,
+			896, 831, 547, 261, 524, 462, 293, 465, 502,  56,
+			661, 821, 976, 991, 658, 869, 905, 758, 745, 193,
+			768, 550, 608, 933, 378, 286, 215, 979, 792, 961,
+			 61, 688, 793, 644, 986, 403, 106, 366, 905, 644,
+			372, 567, 466, 434, 645, 210, 389, 550, 919, 135,
+			780, 773, 635, 389, 707, 100, 626, 958, 165, 504,
+			920, 176, 193, 713, 857, 265, 203,  50, 668, 108,
+			645, 990, 626, 197, 510, 357, 358, 850, 858, 364,
+			936, 638
+		};
+
+		/// <summary>
+		/// When multiplied by compression parameter (1-9) gives the block size for compression
+		/// 9 gives the best compresssion but uses the most memory.
+		/// </summary>		
+		public readonly static int baseBlockSize = 100000;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int MAX_ALPHA_SIZE = 258;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int MAX_CODE_LEN = 23;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int RUNA = 0;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int RUNB = 1;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int N_GROUPS = 6;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int G_SIZE = 50;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int N_ITERS = 4;
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int MAX_SELECTORS = (2 + (900000 / G_SIZE));
+		
+		/// <summary>
+		/// Backend constant
+		/// </summary>
+		public readonly static int NUM_OVERSHOOT_BYTES = 20;
+		
+		private BZip2Constants()
+		{
+		}
+	}
+}
+	
+/* This file was derived from a file containing this license:
+ * 
+ * This file is a part of bzip2 and/or libbzip2, a program and
+ * library for lossless, block-sorting data compression.
+ * 
+ * Copyright (C) 1996-1998 Julian R Seward.  All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 
+ * 2. The origin of this software must not be misrepresented; you must 
+ * not claim that you wrote the original software.  If you use this 
+ * software in a product, an acknowledgment in the product 
+ * documentation would be appreciated but is not required.
+ * 
+ * 3. Altered source versions must be plainly marked as such, and must
+ * not be misrepresented as being the original software.
+ * 
+ * 4. The name of the author may not be used to endorse or promote 
+ * products derived from this software without specific prior written 
+ * permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 
+ * Java version ported by Keiron Liddle, Aftex Software <keiron@aftexsw.com> 1999-2001
+ */
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2Exception.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2Exception.cs
@@ -1,62 +1,62 @@
-// BZip2.cs
-//
-// Copyright 2004 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using ICSharpCode.SharpZipLib;
-
-namespace ICSharpCode.SharpZipLib.BZip2
-{
-	/// <summary>
-	/// BZip2Exception represents exceptions specific to Bzip2 algorithm
-	/// </summary>
-	public class BZip2Exception : SharpZipBaseException
-	{
-		/// <summary>
-		/// Initialise a new instance of BZip2Exception.
-		/// </summary>
-		public BZip2Exception()
-		{
-		}
-		
-		/// <summary>
-		/// Initialise a new instance of BZip2Exception with its message set to message.
-		/// </summary>
-		/// <param name="message">The message describing the error.</param>
-		public BZip2Exception(string message) : base(message)
-		{
-		}
-		
-	}
-}
+// BZip2.cs
+//
+// Copyright 2004 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using ICSharpCode.SharpZipLib;
+
+namespace ICSharpCode.SharpZipLib.BZip2
+{
+	/// <summary>
+	/// BZip2Exception represents exceptions specific to Bzip2 algorithm
+	/// </summary>
+	public class BZip2Exception : SharpZipBaseException
+	{
+		/// <summary>
+		/// Initialise a new instance of BZip2Exception.
+		/// </summary>
+		public BZip2Exception()
+		{
+		}
+		
+		/// <summary>
+		/// Initialise a new instance of BZip2Exception with its message set to message.
+		/// </summary>
+		/// <param name="message">The message describing the error.</param>
+		public BZip2Exception(string message) : base(message)
+		{
+		}
+		
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2InputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2InputStream.cs
@@ -1,966 +1,966 @@
-// BZip2InputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-
-using ICSharpCode.SharpZipLib.Checksums;
-
-namespace ICSharpCode.SharpZipLib.BZip2 
-{
-	
-	/// <summary>
-	/// An input stream that decompresses files in the BZip2 format 
-	/// </summary>
-	public class BZip2InputStream : Stream
-	{
-		/// <summary>
-		/// Gets a value indicating if the stream supports reading
-		/// </summary>
-		public override bool CanRead {
-			get {
-				return baseStream.CanRead;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports seeking.
-		/// </summary>
-		public override bool CanSeek {
-			get {
-				return baseStream.CanSeek;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports writing.
-		/// This property always returns false
-		/// </summary>
-		public override bool CanWrite {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the length in bytes of the stream.
-		/// </summary>
-		public override long Length {
-			get {
-				return baseStream.Length;
-			}
-		}
-		
-		/// <summary>
-		/// Gets or sets the streams position.
-		/// Setting the position is not supported and will throw a NotSupportException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any attempt to set the position</exception>
-		public override long Position {
-			get {
-				return baseStream.Position;
-			}
-			set {
-				throw new NotSupportedException("BZip2InputStream position cannot be set");
-			}
-		}
-		
-		/// <summary>
-		/// Flushes the stream.
-		/// </summary>
-		public override void Flush()
-		{
-			if (baseStream != null) {
-				baseStream.Flush();
-			}
-		}
-		
-		/// <summary>
-		/// Set the streams position.  This operation is not supported and will throw a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override long Seek(long offset, SeekOrigin origin)
-		{
-			throw new NotSupportedException("BZip2InputStream Seek not supported");
-		}
-		
-		/// <summary>
-		/// Sets the length of this stream to the given value.
-		/// This operation is not supported and will throw a NotSupportedExceptionortedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void SetLength(long val)
-		{
-			throw new NotSupportedException("BZip2InputStream SetLength not supported");
-		}
-		
-		/// <summary>
-		/// Writes a block of bytes to this stream using data from a buffer.
-		/// This operation is not supported and will throw a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void Write(byte[] array, int offset, int count)
-		{
-			throw new NotSupportedException("BZip2InputStream Write not supported");
-		}
-		
-		/// <summary>
-		/// Writes a byte to the current position in the file stream.
-		/// This operation is not supported and will throw a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void WriteByte(byte val)
-		{
-			throw new NotSupportedException("BZip2InputStream WriteByte not supported");
-		}
-		
-		/// <summary>
-		/// Read a sequence of bytes and advances the read position by one byte.
-		/// </summary>
-		/// <param name="b">Array of bytes to store values in</param>
-		/// <param name="offset">Offset in array to begin storing data</param>
-		/// <param name="count">The maximum number of bytes to read</param>
-		/// <returns>The total number of bytes read into the buffer. This might be less
-		/// than the number of bytes requested if that number of bytes are not 
-		/// currently available or zero if the end of the stream is reached.
-		/// </returns>
-		public override int Read(byte[] b, int offset, int count)
-		{
-			for (int i = 0; i < count; ++i) {
-				int rb = ReadByte();
-				if (rb == -1) {
-					return i;
-				}
-				b[offset + i] = (byte)rb;
-			}
-			return count;
-		}
-		
-		/// <summary>
-		/// Closes the stream, releasing any associated resources.
-		/// </summary>
-		public override void Close()
-		{
-			if (baseStream != null) {
-				baseStream.Close();
-			}
-		}
-		
-		void MakeMaps() 
-		{
-			nInUse = 0;
-			for (int i = 0; i < 256; ++i) {
-				if (inUse[i]) {
-					seqToUnseq[nInUse] = (byte)i;
-					unseqToSeq[i] = (byte)nInUse;
-					nInUse++;
-				}
-			}
-		}
-		
-		/*--
-		index of the last char in the block, so
-		the block size == last + 1.
-		--*/
-		int last;
-		
-		/*--
-		index in zptr[] of original string after sorting.
-		--*/
-		int origPtr;
-		
-		/*--
-		always: in the range 0 .. 9.
-		The current block size is 100000 * this number.
-		--*/
-		int blockSize100k;
-		
-		bool blockRandomised;
-		
-		int bsBuff;
-		int bsLive;
-		IChecksum mCrc = new StrangeCRC();
-		
-		bool[] inUse = new bool[256];
-		int    nInUse;
-		
-		byte[] seqToUnseq = new byte[256];
-		byte[] unseqToSeq = new byte[256];
-		
-		byte[] selector    = new byte[BZip2Constants.MAX_SELECTORS];
-		byte[] selectorMtf = new byte[BZip2Constants.MAX_SELECTORS];
-		
-		int[] tt;
-		byte[] ll8;
-		
-		/*--
-		freq table collected to save a pass over the data
-		during decompression.
-		--*/
-		int[] unzftab = new int[256];
-		
-		int[][] limit     = new int[BZip2Constants.N_GROUPS][];
-		int[][] baseArray = new int[BZip2Constants.N_GROUPS][];
-		int[][] perm      = new int[BZip2Constants.N_GROUPS][];
-		int[] minLens     = new int[BZip2Constants.N_GROUPS];
-		
-		Stream baseStream;
-		bool   streamEnd = false;
-		
-		int currentChar = -1;
-		
-		const int START_BLOCK_STATE = 1;
-		const int RAND_PART_A_STATE = 2;
-		const int RAND_PART_B_STATE = 3;
-		const int RAND_PART_C_STATE = 4;
-		const int NO_RAND_PART_A_STATE = 5;
-		const int NO_RAND_PART_B_STATE = 6;
-		const int NO_RAND_PART_C_STATE = 7;
-		
-		int currentState = START_BLOCK_STATE;
-		
-		int storedBlockCRC, storedCombinedCRC;
-		int computedBlockCRC;
-		uint computedCombinedCRC;
-		
-		int count, chPrev, ch2;
-		int tPos;
-		int rNToGo = 0;
-		int rTPos  = 0;
-		int i2, j2;
-		byte z;
-		
-		/// <summary>
-		/// Construct instance for reading from stream
-		/// </summary>
-		/// <param name="stream">Data source</param>
-		public BZip2InputStream(Stream stream) 
-		{
-			// init arrays
-			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
-				limit[i] = new int[BZip2Constants.MAX_ALPHA_SIZE];
-				baseArray[i]  = new int[BZip2Constants.MAX_ALPHA_SIZE];
-				perm[i]  = new int[BZip2Constants.MAX_ALPHA_SIZE];
-			}
-			
-			ll8 = null;
-			tt  = null;
-			BsSetStream(stream);
-			Initialize();
-			InitBlock();
-			SetupBlock();
-		}
-		
-		/// <summary>
-		/// Read a byte from stream advancing position
-		/// </summary>
-		/// <returns>byte read or -1 on end of stream</returns>
-		public override int ReadByte()
-		{
-			if (streamEnd) {
-				return -1; // ok
-			}
-			
-			int retChar = currentChar;
-			switch (currentState) {
-				case RAND_PART_B_STATE:
-					SetupRandPartB();
-					break;
-				case RAND_PART_C_STATE:
-					SetupRandPartC();
-					break;
-				case NO_RAND_PART_B_STATE:
-					SetupNoRandPartB();
-					break;
-				case NO_RAND_PART_C_STATE:
-					SetupNoRandPartC();
-					break;
-				case START_BLOCK_STATE:
-				case NO_RAND_PART_A_STATE:
-				case RAND_PART_A_STATE:
-					break;
-				default:
-					break;
-			}
-			return retChar;
-		}
-		
-		void Initialize() 
-		{
-			char magic1 = BsGetUChar();
-			char magic2 = BsGetUChar();
-			
-			char magic3 = BsGetUChar();
-			char magic4 = BsGetUChar();
-			
-			if (magic1 != 'B' || magic2 != 'Z' || magic3 != 'h' || magic4 < '1' || magic4 > '9') {
-				streamEnd = true;
-				return;
-			}
-			
-			SetDecompressStructureSizes(magic4 - '0');
-			computedCombinedCRC = 0;
-		}
-		
-		void InitBlock() 
-		{
-			char magic1 = BsGetUChar();
-			char magic2 = BsGetUChar();
-			char magic3 = BsGetUChar();
-			char magic4 = BsGetUChar();
-			char magic5 = BsGetUChar();
-			char magic6 = BsGetUChar();
-			
-			if (magic1 == 0x17 && magic2 == 0x72 && magic3 == 0x45 && magic4 == 0x38 && magic5 == 0x50 && magic6 == 0x90) {
-				Complete();
-				return;
-			}
-			
-			if (magic1 != 0x31 || magic2 != 0x41 || magic3 != 0x59 || magic4 != 0x26 || magic5 != 0x53 || magic6 != 0x59) {
-				BadBlockHeader();
-				streamEnd = true;
-				return;
-			}
-			
-			storedBlockCRC  = BsGetInt32();
-			
-			blockRandomised = (BsR(1) == 1);
-			
-			GetAndMoveToFrontDecode();
-			
-			mCrc.Reset();
-			currentState = START_BLOCK_STATE;
-		}
-		
-		void EndBlock() 
-		{
-			computedBlockCRC = (int)mCrc.Value;
-			
-			/*-- A bad CRC is considered a fatal error. --*/
-			if (storedBlockCRC != computedBlockCRC) {
-				CrcError();
-			}
-			
-			// 1528150659
-			computedCombinedCRC = ((computedCombinedCRC << 1) & 0xFFFFFFFF) | (computedCombinedCRC >> 31);
-			computedCombinedCRC = computedCombinedCRC ^ (uint)computedBlockCRC;
-		}
-		
-		void Complete() 
-		{
-			storedCombinedCRC = BsGetInt32();
-			if (storedCombinedCRC != (int)computedCombinedCRC) {
-				CrcError();
-			}
-			
-			streamEnd = true;
-		}
-		
-		static void CompressedStreamEOF() 
-		{
-			throw new BZip2Exception("BZip2 input stream end of compressed stream");
-		}
-		
-		static void BlockOverrun() 
-		{
-			throw new BZip2Exception("BZip2 input stream block overrun");
-		}
-		
-		static void BadBlockHeader() 
-		{
-			throw new BZip2Exception("BZip2 input stream bad block header");
-		}
-		
-		static void CrcError() 
-		{
-			throw new BZip2Exception("BZip2 input stream crc error");
-		}
-		
-		
-		void BsSetStream(Stream f) 
-		{
-			baseStream = f;
-			bsLive = 0;
-			bsBuff = 0;
-		}
-		
-		void FillBuffer()
-		{
-			int thech = 0;
-			
-			try {
-				thech = baseStream.ReadByte();
-			} catch (Exception) {
-				CompressedStreamEOF();
-			}
-			
-			if (thech == -1) {
-				CompressedStreamEOF();
-			}
-			
-			bsBuff = (bsBuff << 8) | (thech & 0xFF);
-			bsLive += 8;
-		}
-		
-		int BsR(int n) 
-		{
-			while (bsLive < n) {
-				FillBuffer();
-			}
-			
-			int v = (bsBuff >> (bsLive - n)) & ((1 << n) - 1);
-			bsLive -= n;
-			return v;
-		}
-		
-		char BsGetUChar() 
-		{
-			return (char)BsR(8);
-		}
-		
-		int BsGetint() 
-		{
-			int u = 0;
-			u = (u << 8) | BsR(8);
-			u = (u << 8) | BsR(8);
-			u = (u << 8) | BsR(8);
-			u = (u << 8) | BsR(8);
-			return u;
-		}
-		
-		int BsGetIntVS(int numBits) 
-		{
-			return (int)BsR(numBits);
-		}
-		
-		int BsGetInt32() 
-		{
-			return (int)BsGetint();
-		}
-		
-		void HbCreateDecodeTables(int[] limit, int[] baseArray, int[] perm, char[] length, int minLen, int maxLen, int alphaSize) 
-		{
-			int pp = 0;
-			
-			for (int i = minLen; i <= maxLen; ++i) {
-				for (int j = 0; j < alphaSize; ++j) {
-					if (length[j] == i) {
-						perm[pp] = j;
-						++pp;
-					}
-				}
-			}
-			
-			for (int i = 0; i < BZip2Constants.MAX_CODE_LEN; i++) {
-				baseArray[i] = 0;
-			}
-			
-			for (int i = 0; i < alphaSize; i++) {
-				++baseArray[length[i] + 1];
-			}
-			
-			for (int i = 1; i < BZip2Constants.MAX_CODE_LEN; i++) {
-				baseArray[i] += baseArray[i - 1];
-			}
-			
-			for (int i = 0; i < BZip2Constants.MAX_CODE_LEN; i++) {
-				limit[i] = 0;
-			}
-			
-			int vec = 0;
-			
-			for (int i = minLen; i <= maxLen; i++) {
-				vec += (baseArray[i + 1] - baseArray[i]);
-				limit[i] = vec - 1;
-				vec <<= 1;
-			}
-			
-			for (int i = minLen + 1; i <= maxLen; i++) {
-				baseArray[i] = ((limit[i - 1] + 1) << 1) - baseArray[i];
-			}
-		}
-		
-		void RecvDecodingTables() 
-		{
-			char[][] len = new char[BZip2Constants.N_GROUPS][];
-			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
-				len[i] = new char[BZip2Constants.MAX_ALPHA_SIZE];
-			}
-			
-			bool[] inUse16 = new bool[16];
-			
-			/*--- Receive the mapping table ---*/
-			for (int i = 0; i < 16; i++) {
-				inUse16[i] = (BsR(1) == 1);
-			} 
-			
-			for (int i = 0; i < 16; i++) {
-				if (inUse16[i]) {
-					for (int j = 0; j < 16; j++) {
-						inUse[i * 16 + j] = (BsR(1) == 1);
-					}
-				} else {
-					for (int j = 0; j < 16; j++) {
-						inUse[i * 16 + j] = false;
-					}
-				}
-			}
-			
-			MakeMaps();
-			int alphaSize = nInUse + 2;
-			
-			/*--- Now the selectors ---*/
-			int nGroups    = BsR(3);
-			int nSelectors = BsR(15);
-			
-			for (int i = 0; i < nSelectors; i++) {
-				int j = 0;
-				while (BsR(1) == 1) {
-					j++;
-				}
-				selectorMtf[i] = (byte)j;
-			}
-			
-			/*--- Undo the MTF values for the selectors. ---*/
-			byte[] pos = new byte[BZip2Constants.N_GROUPS];
-			for (int v = 0; v < nGroups; v++) {
-				pos[v] = (byte)v;
-			}
-			
-			for (int i = 0; i < nSelectors; i++) {
-				int  v   = selectorMtf[i];
-				byte tmp = pos[v];
-				while (v > 0) {
-					pos[v] = pos[v - 1];
-					v--;
-				}
-				pos[0]      = tmp;
-				selector[i] = tmp;
-			}
-			
-			/*--- Now the coding tables ---*/
-			for (int t = 0; t < nGroups; t++) {
-				int curr = BsR(5);
-				for (int i = 0; i < alphaSize; i++) {
-					while (BsR(1) == 1) {
-						if (BsR(1) == 0) {
-							curr++;
-						} else {
-							curr--;
-						}
-					}
-					len[t][i] = (char)curr;
-				}
-			}
-			
-			/*--- Create the Huffman decoding tables ---*/
-			for (int t = 0; t < nGroups; t++) {
-				int minLen = 32;
-				int maxLen = 0;
-				for (int i = 0; i < alphaSize; i++) {
-					maxLen = Math.Max(maxLen, len[t][i]);
-					minLen = Math.Min(minLen, len[t][i]);
-				}
-				HbCreateDecodeTables(limit[t], baseArray[t], perm[t], len[t], minLen, maxLen, alphaSize);
-				minLens[t] = minLen;
-			}
-		}
-		
-		void GetAndMoveToFrontDecode() 
-		{
-			byte[] yy = new byte[256];
-			int nextSym;
-			
-			int limitLast = BZip2Constants.baseBlockSize * blockSize100k;
-			origPtr = BsGetIntVS(24);
-			
-			RecvDecodingTables();
-			int EOB = nInUse+1;
-			int groupNo = -1;
-			int groupPos = 0;
-			
-			/*--
-			Setting up the unzftab entries here is not strictly
-			necessary, but it does save having to do it later
-			in a separate pass, and so saves a block's worth of
-			cache misses.
-			--*/
-			for (int i = 0; i <= 255; i++) {
-				unzftab[i] = 0;
-			}
-			
-			for (int i = 0; i <= 255; i++) {
-				yy[i] = (byte)i;
-			}
-			
-			last = -1;
-			
-			if (groupPos == 0) {
-				groupNo++;
-				groupPos = BZip2Constants.G_SIZE;
-			}
-			
-			groupPos--;
-			int zt = selector[groupNo];
-			int zn = minLens[zt];
-			int zvec = BsR(zn);
-			int zj;
-			
-			while (zvec > limit[zt][zn]) {
-				if (zn > 20) { // the longest code
-					throw new BZip2Exception("Bzip data error");  // -jr- 17-Dec-2003 from bzip 1.02 why 20???
-				}
-				zn++;
-				while (bsLive < 1) {
-					FillBuffer();
-				}
-				zj = (bsBuff >> (bsLive-1)) & 1;
-				bsLive--;
-				zvec = (zvec << 1) | zj;
-			}
-			if (zvec - baseArray[zt][zn] < 0 || zvec - baseArray[zt][zn] >= BZip2Constants.MAX_ALPHA_SIZE) {
-				throw new BZip2Exception("Bzip data error");  // -jr- 17-Dec-2003 from bzip 1.02
-			}
-			nextSym = perm[zt][zvec - baseArray[zt][zn]];
-			
-			while (true) {
-				if (nextSym == EOB) {
-					break;
-				}
-				
-				if (nextSym == BZip2Constants.RUNA || nextSym == BZip2Constants.RUNB) {
-					int s = -1;
-					int n = 1;
-					do {
-						if (nextSym == BZip2Constants.RUNA) {
-							s += (0 + 1) * n;
-						} else if (nextSym == BZip2Constants.RUNB) {
-							s += (1 + 1) * n;
-						}
-
-						n <<= 1;
-						
-						if (groupPos == 0) {
-							groupNo++;
-							groupPos = BZip2Constants.G_SIZE;
-						}
-						
-						groupPos--;
-						
-						zt = selector[groupNo];
-						zn = minLens[zt];
-						zvec = BsR(zn);
-						
-						while (zvec > limit[zt][zn]) {
-							zn++;
-							while (bsLive < 1) {
-								FillBuffer();
-							}
-							zj = (bsBuff >> (bsLive - 1)) & 1;
-							bsLive--;
-							zvec = (zvec << 1) | zj;
-						}
-						nextSym = perm[zt][zvec - baseArray[zt][zn]];
-					} while (nextSym == BZip2Constants.RUNA || nextSym == BZip2Constants.RUNB);
-					
-					s++;
-					byte ch = seqToUnseq[yy[0]];
-					unzftab[ch] += s;
-					
-					while (s > 0) {
-						last++;
-						ll8[last] = ch;
-						s--;
-					}
-					
-					if (last >= limitLast) {
-						BlockOverrun();
-					}
-					continue;
-				} else {
-					last++;
-					if (last >= limitLast) {
-						BlockOverrun();
-					}
-					
-					byte tmp = yy[nextSym - 1];
-					unzftab[seqToUnseq[tmp]]++;
-					ll8[last] = seqToUnseq[tmp];
-					
-					for (int j = nextSym-1; j > 0; --j) {
-						yy[j] = yy[j - 1];
-					}
-					yy[0] = tmp;
-					
-					if (groupPos == 0) {
-						groupNo++;
-						groupPos = BZip2Constants.G_SIZE;
-					}
-					
-					groupPos--;
-					zt = selector[groupNo];
-					zn = minLens[zt];
-					zvec = BsR(zn);
-					while (zvec > limit[zt][zn]) {
-						zn++;
-						while (bsLive < 1) {
-							FillBuffer();
-						}
-						zj = (bsBuff >> (bsLive-1)) & 1;
-						bsLive--;
-						zvec = (zvec << 1) | zj;
-					}
-					nextSym = perm[zt][zvec - baseArray[zt][zn]];
-					continue;
-				}
-			}
-		}
-		
-		void SetupBlock() 
-		{
-			int[] cftab = new int[257];
-			
-			cftab[0] = 0;
-			Array.Copy(unzftab, 0, cftab, 1, 256);
-			
-			for (int i = 1; i <= 256; i++) {
-				cftab[i] += cftab[i - 1];
-			}
-			
-			for (int i = 0; i <= last; i++) {
-				byte ch = ll8[i];
-				tt[cftab[ch]] = i;
-				cftab[ch]++;
-			}
-			
-			cftab = null;
-			
-			tPos = tt[origPtr];
-			
-			count = 0;
-			i2    = 0;
-			ch2   = 256;   /*-- not a char and not EOF --*/
-			
-			if (blockRandomised) {
-				rNToGo = 0;
-				rTPos = 0;
-				SetupRandPartA();
-			} else {
-				SetupNoRandPartA();
-			}
-		}
-		
-		void SetupRandPartA() 
-		{
-			if (i2 <= last) {
-				chPrev = ch2;
-				ch2  = ll8[tPos];
-				tPos = tt[tPos];
-				if (rNToGo == 0) {
-					rNToGo = BZip2Constants.rNums[rTPos];
-					rTPos++;
-					if (rTPos == 512) {
-						rTPos = 0;
-					}
-				}
-				rNToGo--;
-				ch2 ^= (int)((rNToGo == 1) ? 1 : 0);
-				i2++;
-				
-				currentChar  = ch2;
-				currentState = RAND_PART_B_STATE;
-				mCrc.Update(ch2);
-			} else {
-				EndBlock();
-				InitBlock();
-				SetupBlock();
-			}
-		}
-		
-		void SetupNoRandPartA() 
-		{
-			if (i2 <= last) {
-				chPrev = ch2;
-				ch2  = ll8[tPos];
-				tPos = tt[tPos];
-				i2++;
-				
-				currentChar = ch2;
-				currentState = NO_RAND_PART_B_STATE;
-				mCrc.Update(ch2);
-			} else {
-				EndBlock();
-				InitBlock();
-				SetupBlock();
-			}
-		}
-		
-		void SetupRandPartB() 
-		{
-			if (ch2 != chPrev) {
-				currentState = RAND_PART_A_STATE;
-				count = 1;
-				SetupRandPartA();
-			} else {
-				count++;
-				if (count >= 4) {
-					z = ll8[tPos];
-					tPos = tt[tPos];
-					if (rNToGo == 0) {
-						rNToGo = BZip2Constants.rNums[rTPos];
-						rTPos++;
-						if (rTPos == 512) {
-							rTPos = 0;
-						}
-					}
-					rNToGo--;
-					z ^= (byte)((rNToGo == 1) ? 1 : 0);
-					j2 = 0;
-					currentState = RAND_PART_C_STATE;
-					SetupRandPartC();
-				} else {
-					currentState = RAND_PART_A_STATE;
-					SetupRandPartA();
-				}
-			}
-		}
-		
-		void SetupRandPartC() 
-		{
-			if (j2 < (int)z) {
-				currentChar = ch2;
-				mCrc.Update(ch2);
-				j2++;
-			} else {
-				currentState = RAND_PART_A_STATE;
-				i2++;
-				count = 0;
-				SetupRandPartA();
-			}
-		}
-		
-		void SetupNoRandPartB() 
-		{
-			if (ch2 != chPrev) {
-				currentState = NO_RAND_PART_A_STATE;
-				count = 1;
-				SetupNoRandPartA();
-			} else {
-				count++;
-				if (count >= 4) {
-					z = ll8[tPos];
-					tPos = tt[tPos];
-					currentState = NO_RAND_PART_C_STATE;
-					j2 = 0;
-					SetupNoRandPartC();
-				} else {
-					currentState = NO_RAND_PART_A_STATE;
-					SetupNoRandPartA();
-				}
-			}
-		}
-		
-		void SetupNoRandPartC() 
-		{
-			if (j2 < (int)z) {
-				currentChar = ch2;
-				mCrc.Update(ch2);
-				j2++;
-			} else {
-				currentState = NO_RAND_PART_A_STATE;
-				i2++;
-				count = 0;
-				SetupNoRandPartA();
-			}
-		}
-		
-		void SetDecompressStructureSizes(int newSize100k) 
-		{
-			if (!(0 <= newSize100k && newSize100k <= 9 && 0 <= blockSize100k && blockSize100k <= 9)) {
-				throw new BZip2Exception("Invalid block size");
-			}
-			
-			blockSize100k = newSize100k;
-			
-			if (newSize100k == 0) {
-				return;
-			}
-			
-			int n = BZip2Constants.baseBlockSize * newSize100k;
-			ll8 = new byte[n];
-			tt  = new int[n];
-		}
-	}
-}
-/* This file was derived from a file containing under this license:
- * 
- * This file is a part of bzip2 and/or libbzip2, a program and
- * library for lossless, block-sorting data compression.
- * 
- * Copyright (C) 1996-1998 Julian R Seward.  All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 
- * 2. The origin of this software must not be misrepresented; you must 
- * not claim that you wrote the original software.  If you use this 
- * software in a product, an acknowledgment in the product 
- * documentation would be appreciated but is not required.
- * 
- * 3. Altered source versions must be plainly marked as such, and must
- * not be misrepresented as being the original software.
- * 
- * 4. The name of the author may not be used to endorse or promote 
- * products derived from this software without specific prior written 
- * permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * Java version ported by Keiron Liddle, Aftex Software <keiron@aftexsw.com> 1999-2001
- */
+// BZip2InputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Checksums;
+
+namespace ICSharpCode.SharpZipLib.BZip2 
+{
+	
+	/// <summary>
+	/// An input stream that decompresses files in the BZip2 format 
+	/// </summary>
+	public class BZip2InputStream : Stream
+	{
+		/// <summary>
+		/// Gets a value indicating if the stream supports reading
+		/// </summary>
+		public override bool CanRead {
+			get {
+				return baseStream.CanRead;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports seeking.
+		/// </summary>
+		public override bool CanSeek {
+			get {
+				return baseStream.CanSeek;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports writing.
+		/// This property always returns false
+		/// </summary>
+		public override bool CanWrite {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the length in bytes of the stream.
+		/// </summary>
+		public override long Length {
+			get {
+				return baseStream.Length;
+			}
+		}
+		
+		/// <summary>
+		/// Gets or sets the streams position.
+		/// Setting the position is not supported and will throw a NotSupportException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any attempt to set the position</exception>
+		public override long Position {
+			get {
+				return baseStream.Position;
+			}
+			set {
+				throw new NotSupportedException("BZip2InputStream position cannot be set");
+			}
+		}
+		
+		/// <summary>
+		/// Flushes the stream.
+		/// </summary>
+		public override void Flush()
+		{
+			if (baseStream != null) {
+				baseStream.Flush();
+			}
+		}
+		
+		/// <summary>
+		/// Set the streams position.  This operation is not supported and will throw a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override long Seek(long offset, SeekOrigin origin)
+		{
+			throw new NotSupportedException("BZip2InputStream Seek not supported");
+		}
+		
+		/// <summary>
+		/// Sets the length of this stream to the given value.
+		/// This operation is not supported and will throw a NotSupportedExceptionortedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void SetLength(long val)
+		{
+			throw new NotSupportedException("BZip2InputStream SetLength not supported");
+		}
+		
+		/// <summary>
+		/// Writes a block of bytes to this stream using data from a buffer.
+		/// This operation is not supported and will throw a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void Write(byte[] array, int offset, int count)
+		{
+			throw new NotSupportedException("BZip2InputStream Write not supported");
+		}
+		
+		/// <summary>
+		/// Writes a byte to the current position in the file stream.
+		/// This operation is not supported and will throw a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void WriteByte(byte val)
+		{
+			throw new NotSupportedException("BZip2InputStream WriteByte not supported");
+		}
+		
+		/// <summary>
+		/// Read a sequence of bytes and advances the read position by one byte.
+		/// </summary>
+		/// <param name="b">Array of bytes to store values in</param>
+		/// <param name="offset">Offset in array to begin storing data</param>
+		/// <param name="count">The maximum number of bytes to read</param>
+		/// <returns>The total number of bytes read into the buffer. This might be less
+		/// than the number of bytes requested if that number of bytes are not 
+		/// currently available or zero if the end of the stream is reached.
+		/// </returns>
+		public override int Read(byte[] b, int offset, int count)
+		{
+			for (int i = 0; i < count; ++i) {
+				int rb = ReadByte();
+				if (rb == -1) {
+					return i;
+				}
+				b[offset + i] = (byte)rb;
+			}
+			return count;
+		}
+		
+		/// <summary>
+		/// Closes the stream, releasing any associated resources.
+		/// </summary>
+		public override void Close()
+		{
+			if (baseStream != null) {
+				baseStream.Close();
+			}
+		}
+		
+		void MakeMaps() 
+		{
+			nInUse = 0;
+			for (int i = 0; i < 256; ++i) {
+				if (inUse[i]) {
+					seqToUnseq[nInUse] = (byte)i;
+					unseqToSeq[i] = (byte)nInUse;
+					nInUse++;
+				}
+			}
+		}
+		
+		/*--
+		index of the last char in the block, so
+		the block size == last + 1.
+		--*/
+		int last;
+		
+		/*--
+		index in zptr[] of original string after sorting.
+		--*/
+		int origPtr;
+		
+		/*--
+		always: in the range 0 .. 9.
+		The current block size is 100000 * this number.
+		--*/
+		int blockSize100k;
+		
+		bool blockRandomised;
+		
+		int bsBuff;
+		int bsLive;
+		IChecksum mCrc = new StrangeCRC();
+		
+		bool[] inUse = new bool[256];
+		int    nInUse;
+		
+		byte[] seqToUnseq = new byte[256];
+		byte[] unseqToSeq = new byte[256];
+		
+		byte[] selector    = new byte[BZip2Constants.MAX_SELECTORS];
+		byte[] selectorMtf = new byte[BZip2Constants.MAX_SELECTORS];
+		
+		int[] tt;
+		byte[] ll8;
+		
+		/*--
+		freq table collected to save a pass over the data
+		during decompression.
+		--*/
+		int[] unzftab = new int[256];
+		
+		int[][] limit     = new int[BZip2Constants.N_GROUPS][];
+		int[][] baseArray = new int[BZip2Constants.N_GROUPS][];
+		int[][] perm      = new int[BZip2Constants.N_GROUPS][];
+		int[] minLens     = new int[BZip2Constants.N_GROUPS];
+		
+		Stream baseStream;
+		bool   streamEnd = false;
+		
+		int currentChar = -1;
+		
+		const int START_BLOCK_STATE = 1;
+		const int RAND_PART_A_STATE = 2;
+		const int RAND_PART_B_STATE = 3;
+		const int RAND_PART_C_STATE = 4;
+		const int NO_RAND_PART_A_STATE = 5;
+		const int NO_RAND_PART_B_STATE = 6;
+		const int NO_RAND_PART_C_STATE = 7;
+		
+		int currentState = START_BLOCK_STATE;
+		
+		int storedBlockCRC, storedCombinedCRC;
+		int computedBlockCRC;
+		uint computedCombinedCRC;
+		
+		int count, chPrev, ch2;
+		int tPos;
+		int rNToGo = 0;
+		int rTPos  = 0;
+		int i2, j2;
+		byte z;
+		
+		/// <summary>
+		/// Construct instance for reading from stream
+		/// </summary>
+		/// <param name="stream">Data source</param>
+		public BZip2InputStream(Stream stream) 
+		{
+			// init arrays
+			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
+				limit[i] = new int[BZip2Constants.MAX_ALPHA_SIZE];
+				baseArray[i]  = new int[BZip2Constants.MAX_ALPHA_SIZE];
+				perm[i]  = new int[BZip2Constants.MAX_ALPHA_SIZE];
+			}
+			
+			ll8 = null;
+			tt  = null;
+			BsSetStream(stream);
+			Initialize();
+			InitBlock();
+			SetupBlock();
+		}
+		
+		/// <summary>
+		/// Read a byte from stream advancing position
+		/// </summary>
+		/// <returns>byte read or -1 on end of stream</returns>
+		public override int ReadByte()
+		{
+			if (streamEnd) {
+				return -1; // ok
+			}
+			
+			int retChar = currentChar;
+			switch (currentState) {
+				case RAND_PART_B_STATE:
+					SetupRandPartB();
+					break;
+				case RAND_PART_C_STATE:
+					SetupRandPartC();
+					break;
+				case NO_RAND_PART_B_STATE:
+					SetupNoRandPartB();
+					break;
+				case NO_RAND_PART_C_STATE:
+					SetupNoRandPartC();
+					break;
+				case START_BLOCK_STATE:
+				case NO_RAND_PART_A_STATE:
+				case RAND_PART_A_STATE:
+					break;
+				default:
+					break;
+			}
+			return retChar;
+		}
+		
+		void Initialize() 
+		{
+			char magic1 = BsGetUChar();
+			char magic2 = BsGetUChar();
+			
+			char magic3 = BsGetUChar();
+			char magic4 = BsGetUChar();
+			
+			if (magic1 != 'B' || magic2 != 'Z' || magic3 != 'h' || magic4 < '1' || magic4 > '9') {
+				streamEnd = true;
+				return;
+			}
+			
+			SetDecompressStructureSizes(magic4 - '0');
+			computedCombinedCRC = 0;
+		}
+		
+		void InitBlock() 
+		{
+			char magic1 = BsGetUChar();
+			char magic2 = BsGetUChar();
+			char magic3 = BsGetUChar();
+			char magic4 = BsGetUChar();
+			char magic5 = BsGetUChar();
+			char magic6 = BsGetUChar();
+			
+			if (magic1 == 0x17 && magic2 == 0x72 && magic3 == 0x45 && magic4 == 0x38 && magic5 == 0x50 && magic6 == 0x90) {
+				Complete();
+				return;
+			}
+			
+			if (magic1 != 0x31 || magic2 != 0x41 || magic3 != 0x59 || magic4 != 0x26 || magic5 != 0x53 || magic6 != 0x59) {
+				BadBlockHeader();
+				streamEnd = true;
+				return;
+			}
+			
+			storedBlockCRC  = BsGetInt32();
+			
+			blockRandomised = (BsR(1) == 1);
+			
+			GetAndMoveToFrontDecode();
+			
+			mCrc.Reset();
+			currentState = START_BLOCK_STATE;
+		}
+		
+		void EndBlock() 
+		{
+			computedBlockCRC = (int)mCrc.Value;
+			
+			/*-- A bad CRC is considered a fatal error. --*/
+			if (storedBlockCRC != computedBlockCRC) {
+				CrcError();
+			}
+			
+			// 1528150659
+			computedCombinedCRC = ((computedCombinedCRC << 1) & 0xFFFFFFFF) | (computedCombinedCRC >> 31);
+			computedCombinedCRC = computedCombinedCRC ^ (uint)computedBlockCRC;
+		}
+		
+		void Complete() 
+		{
+			storedCombinedCRC = BsGetInt32();
+			if (storedCombinedCRC != (int)computedCombinedCRC) {
+				CrcError();
+			}
+			
+			streamEnd = true;
+		}
+		
+		static void CompressedStreamEOF() 
+		{
+			throw new BZip2Exception("BZip2 input stream end of compressed stream");
+		}
+		
+		static void BlockOverrun() 
+		{
+			throw new BZip2Exception("BZip2 input stream block overrun");
+		}
+		
+		static void BadBlockHeader() 
+		{
+			throw new BZip2Exception("BZip2 input stream bad block header");
+		}
+		
+		static void CrcError() 
+		{
+			throw new BZip2Exception("BZip2 input stream crc error");
+		}
+		
+		
+		void BsSetStream(Stream f) 
+		{
+			baseStream = f;
+			bsLive = 0;
+			bsBuff = 0;
+		}
+		
+		void FillBuffer()
+		{
+			int thech = 0;
+			
+			try {
+				thech = baseStream.ReadByte();
+			} catch (Exception) {
+				CompressedStreamEOF();
+			}
+			
+			if (thech == -1) {
+				CompressedStreamEOF();
+			}
+			
+			bsBuff = (bsBuff << 8) | (thech & 0xFF);
+			bsLive += 8;
+		}
+		
+		int BsR(int n) 
+		{
+			while (bsLive < n) {
+				FillBuffer();
+			}
+			
+			int v = (bsBuff >> (bsLive - n)) & ((1 << n) - 1);
+			bsLive -= n;
+			return v;
+		}
+		
+		char BsGetUChar() 
+		{
+			return (char)BsR(8);
+		}
+		
+		int BsGetint() 
+		{
+			int u = 0;
+			u = (u << 8) | BsR(8);
+			u = (u << 8) | BsR(8);
+			u = (u << 8) | BsR(8);
+			u = (u << 8) | BsR(8);
+			return u;
+		}
+		
+		int BsGetIntVS(int numBits) 
+		{
+			return (int)BsR(numBits);
+		}
+		
+		int BsGetInt32() 
+		{
+			return (int)BsGetint();
+		}
+		
+		void HbCreateDecodeTables(int[] limit, int[] baseArray, int[] perm, char[] length, int minLen, int maxLen, int alphaSize) 
+		{
+			int pp = 0;
+			
+			for (int i = minLen; i <= maxLen; ++i) {
+				for (int j = 0; j < alphaSize; ++j) {
+					if (length[j] == i) {
+						perm[pp] = j;
+						++pp;
+					}
+				}
+			}
+			
+			for (int i = 0; i < BZip2Constants.MAX_CODE_LEN; i++) {
+				baseArray[i] = 0;
+			}
+			
+			for (int i = 0; i < alphaSize; i++) {
+				++baseArray[length[i] + 1];
+			}
+			
+			for (int i = 1; i < BZip2Constants.MAX_CODE_LEN; i++) {
+				baseArray[i] += baseArray[i - 1];
+			}
+			
+			for (int i = 0; i < BZip2Constants.MAX_CODE_LEN; i++) {
+				limit[i] = 0;
+			}
+			
+			int vec = 0;
+			
+			for (int i = minLen; i <= maxLen; i++) {
+				vec += (baseArray[i + 1] - baseArray[i]);
+				limit[i] = vec - 1;
+				vec <<= 1;
+			}
+			
+			for (int i = minLen + 1; i <= maxLen; i++) {
+				baseArray[i] = ((limit[i - 1] + 1) << 1) - baseArray[i];
+			}
+		}
+		
+		void RecvDecodingTables() 
+		{
+			char[][] len = new char[BZip2Constants.N_GROUPS][];
+			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
+				len[i] = new char[BZip2Constants.MAX_ALPHA_SIZE];
+			}
+			
+			bool[] inUse16 = new bool[16];
+			
+			/*--- Receive the mapping table ---*/
+			for (int i = 0; i < 16; i++) {
+				inUse16[i] = (BsR(1) == 1);
+			} 
+			
+			for (int i = 0; i < 16; i++) {
+				if (inUse16[i]) {
+					for (int j = 0; j < 16; j++) {
+						inUse[i * 16 + j] = (BsR(1) == 1);
+					}
+				} else {
+					for (int j = 0; j < 16; j++) {
+						inUse[i * 16 + j] = false;
+					}
+				}
+			}
+			
+			MakeMaps();
+			int alphaSize = nInUse + 2;
+			
+			/*--- Now the selectors ---*/
+			int nGroups    = BsR(3);
+			int nSelectors = BsR(15);
+			
+			for (int i = 0; i < nSelectors; i++) {
+				int j = 0;
+				while (BsR(1) == 1) {
+					j++;
+				}
+				selectorMtf[i] = (byte)j;
+			}
+			
+			/*--- Undo the MTF values for the selectors. ---*/
+			byte[] pos = new byte[BZip2Constants.N_GROUPS];
+			for (int v = 0; v < nGroups; v++) {
+				pos[v] = (byte)v;
+			}
+			
+			for (int i = 0; i < nSelectors; i++) {
+				int  v   = selectorMtf[i];
+				byte tmp = pos[v];
+				while (v > 0) {
+					pos[v] = pos[v - 1];
+					v--;
+				}
+				pos[0]      = tmp;
+				selector[i] = tmp;
+			}
+			
+			/*--- Now the coding tables ---*/
+			for (int t = 0; t < nGroups; t++) {
+				int curr = BsR(5);
+				for (int i = 0; i < alphaSize; i++) {
+					while (BsR(1) == 1) {
+						if (BsR(1) == 0) {
+							curr++;
+						} else {
+							curr--;
+						}
+					}
+					len[t][i] = (char)curr;
+				}
+			}
+			
+			/*--- Create the Huffman decoding tables ---*/
+			for (int t = 0; t < nGroups; t++) {
+				int minLen = 32;
+				int maxLen = 0;
+				for (int i = 0; i < alphaSize; i++) {
+					maxLen = Math.Max(maxLen, len[t][i]);
+					minLen = Math.Min(minLen, len[t][i]);
+				}
+				HbCreateDecodeTables(limit[t], baseArray[t], perm[t], len[t], minLen, maxLen, alphaSize);
+				minLens[t] = minLen;
+			}
+		}
+		
+		void GetAndMoveToFrontDecode() 
+		{
+			byte[] yy = new byte[256];
+			int nextSym;
+			
+			int limitLast = BZip2Constants.baseBlockSize * blockSize100k;
+			origPtr = BsGetIntVS(24);
+			
+			RecvDecodingTables();
+			int EOB = nInUse+1;
+			int groupNo = -1;
+			int groupPos = 0;
+			
+			/*--
+			Setting up the unzftab entries here is not strictly
+			necessary, but it does save having to do it later
+			in a separate pass, and so saves a block's worth of
+			cache misses.
+			--*/
+			for (int i = 0; i <= 255; i++) {
+				unzftab[i] = 0;
+			}
+			
+			for (int i = 0; i <= 255; i++) {
+				yy[i] = (byte)i;
+			}
+			
+			last = -1;
+			
+			if (groupPos == 0) {
+				groupNo++;
+				groupPos = BZip2Constants.G_SIZE;
+			}
+			
+			groupPos--;
+			int zt = selector[groupNo];
+			int zn = minLens[zt];
+			int zvec = BsR(zn);
+			int zj;
+			
+			while (zvec > limit[zt][zn]) {
+				if (zn > 20) { // the longest code
+					throw new BZip2Exception("Bzip data error");  // -jr- 17-Dec-2003 from bzip 1.02 why 20???
+				}
+				zn++;
+				while (bsLive < 1) {
+					FillBuffer();
+				}
+				zj = (bsBuff >> (bsLive-1)) & 1;
+				bsLive--;
+				zvec = (zvec << 1) | zj;
+			}
+			if (zvec - baseArray[zt][zn] < 0 || zvec - baseArray[zt][zn] >= BZip2Constants.MAX_ALPHA_SIZE) {
+				throw new BZip2Exception("Bzip data error");  // -jr- 17-Dec-2003 from bzip 1.02
+			}
+			nextSym = perm[zt][zvec - baseArray[zt][zn]];
+			
+			while (true) {
+				if (nextSym == EOB) {
+					break;
+				}
+				
+				if (nextSym == BZip2Constants.RUNA || nextSym == BZip2Constants.RUNB) {
+					int s = -1;
+					int n = 1;
+					do {
+						if (nextSym == BZip2Constants.RUNA) {
+							s += (0 + 1) * n;
+						} else if (nextSym == BZip2Constants.RUNB) {
+							s += (1 + 1) * n;
+						}
+
+						n <<= 1;
+						
+						if (groupPos == 0) {
+							groupNo++;
+							groupPos = BZip2Constants.G_SIZE;
+						}
+						
+						groupPos--;
+						
+						zt = selector[groupNo];
+						zn = minLens[zt];
+						zvec = BsR(zn);
+						
+						while (zvec > limit[zt][zn]) {
+							zn++;
+							while (bsLive < 1) {
+								FillBuffer();
+							}
+							zj = (bsBuff >> (bsLive - 1)) & 1;
+							bsLive--;
+							zvec = (zvec << 1) | zj;
+						}
+						nextSym = perm[zt][zvec - baseArray[zt][zn]];
+					} while (nextSym == BZip2Constants.RUNA || nextSym == BZip2Constants.RUNB);
+					
+					s++;
+					byte ch = seqToUnseq[yy[0]];
+					unzftab[ch] += s;
+					
+					while (s > 0) {
+						last++;
+						ll8[last] = ch;
+						s--;
+					}
+					
+					if (last >= limitLast) {
+						BlockOverrun();
+					}
+					continue;
+				} else {
+					last++;
+					if (last >= limitLast) {
+						BlockOverrun();
+					}
+					
+					byte tmp = yy[nextSym - 1];
+					unzftab[seqToUnseq[tmp]]++;
+					ll8[last] = seqToUnseq[tmp];
+					
+					for (int j = nextSym-1; j > 0; --j) {
+						yy[j] = yy[j - 1];
+					}
+					yy[0] = tmp;
+					
+					if (groupPos == 0) {
+						groupNo++;
+						groupPos = BZip2Constants.G_SIZE;
+					}
+					
+					groupPos--;
+					zt = selector[groupNo];
+					zn = minLens[zt];
+					zvec = BsR(zn);
+					while (zvec > limit[zt][zn]) {
+						zn++;
+						while (bsLive < 1) {
+							FillBuffer();
+						}
+						zj = (bsBuff >> (bsLive-1)) & 1;
+						bsLive--;
+						zvec = (zvec << 1) | zj;
+					}
+					nextSym = perm[zt][zvec - baseArray[zt][zn]];
+					continue;
+				}
+			}
+		}
+		
+		void SetupBlock() 
+		{
+			int[] cftab = new int[257];
+			
+			cftab[0] = 0;
+			Array.Copy(unzftab, 0, cftab, 1, 256);
+			
+			for (int i = 1; i <= 256; i++) {
+				cftab[i] += cftab[i - 1];
+			}
+			
+			for (int i = 0; i <= last; i++) {
+				byte ch = ll8[i];
+				tt[cftab[ch]] = i;
+				cftab[ch]++;
+			}
+			
+			cftab = null;
+			
+			tPos = tt[origPtr];
+			
+			count = 0;
+			i2    = 0;
+			ch2   = 256;   /*-- not a char and not EOF --*/
+			
+			if (blockRandomised) {
+				rNToGo = 0;
+				rTPos = 0;
+				SetupRandPartA();
+			} else {
+				SetupNoRandPartA();
+			}
+		}
+		
+		void SetupRandPartA() 
+		{
+			if (i2 <= last) {
+				chPrev = ch2;
+				ch2  = ll8[tPos];
+				tPos = tt[tPos];
+				if (rNToGo == 0) {
+					rNToGo = BZip2Constants.rNums[rTPos];
+					rTPos++;
+					if (rTPos == 512) {
+						rTPos = 0;
+					}
+				}
+				rNToGo--;
+				ch2 ^= (int)((rNToGo == 1) ? 1 : 0);
+				i2++;
+				
+				currentChar  = ch2;
+				currentState = RAND_PART_B_STATE;
+				mCrc.Update(ch2);
+			} else {
+				EndBlock();
+				InitBlock();
+				SetupBlock();
+			}
+		}
+		
+		void SetupNoRandPartA() 
+		{
+			if (i2 <= last) {
+				chPrev = ch2;
+				ch2  = ll8[tPos];
+				tPos = tt[tPos];
+				i2++;
+				
+				currentChar = ch2;
+				currentState = NO_RAND_PART_B_STATE;
+				mCrc.Update(ch2);
+			} else {
+				EndBlock();
+				InitBlock();
+				SetupBlock();
+			}
+		}
+		
+		void SetupRandPartB() 
+		{
+			if (ch2 != chPrev) {
+				currentState = RAND_PART_A_STATE;
+				count = 1;
+				SetupRandPartA();
+			} else {
+				count++;
+				if (count >= 4) {
+					z = ll8[tPos];
+					tPos = tt[tPos];
+					if (rNToGo == 0) {
+						rNToGo = BZip2Constants.rNums[rTPos];
+						rTPos++;
+						if (rTPos == 512) {
+							rTPos = 0;
+						}
+					}
+					rNToGo--;
+					z ^= (byte)((rNToGo == 1) ? 1 : 0);
+					j2 = 0;
+					currentState = RAND_PART_C_STATE;
+					SetupRandPartC();
+				} else {
+					currentState = RAND_PART_A_STATE;
+					SetupRandPartA();
+				}
+			}
+		}
+		
+		void SetupRandPartC() 
+		{
+			if (j2 < (int)z) {
+				currentChar = ch2;
+				mCrc.Update(ch2);
+				j2++;
+			} else {
+				currentState = RAND_PART_A_STATE;
+				i2++;
+				count = 0;
+				SetupRandPartA();
+			}
+		}
+		
+		void SetupNoRandPartB() 
+		{
+			if (ch2 != chPrev) {
+				currentState = NO_RAND_PART_A_STATE;
+				count = 1;
+				SetupNoRandPartA();
+			} else {
+				count++;
+				if (count >= 4) {
+					z = ll8[tPos];
+					tPos = tt[tPos];
+					currentState = NO_RAND_PART_C_STATE;
+					j2 = 0;
+					SetupNoRandPartC();
+				} else {
+					currentState = NO_RAND_PART_A_STATE;
+					SetupNoRandPartA();
+				}
+			}
+		}
+		
+		void SetupNoRandPartC() 
+		{
+			if (j2 < (int)z) {
+				currentChar = ch2;
+				mCrc.Update(ch2);
+				j2++;
+			} else {
+				currentState = NO_RAND_PART_A_STATE;
+				i2++;
+				count = 0;
+				SetupNoRandPartA();
+			}
+		}
+		
+		void SetDecompressStructureSizes(int newSize100k) 
+		{
+			if (!(0 <= newSize100k && newSize100k <= 9 && 0 <= blockSize100k && blockSize100k <= 9)) {
+				throw new BZip2Exception("Invalid block size");
+			}
+			
+			blockSize100k = newSize100k;
+			
+			if (newSize100k == 0) {
+				return;
+			}
+			
+			int n = BZip2Constants.baseBlockSize * newSize100k;
+			ll8 = new byte[n];
+			tt  = new int[n];
+		}
+	}
+}
+/* This file was derived from a file containing under this license:
+ * 
+ * This file is a part of bzip2 and/or libbzip2, a program and
+ * library for lossless, block-sorting data compression.
+ * 
+ * Copyright (C) 1996-1998 Julian R Seward.  All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 
+ * 2. The origin of this software must not be misrepresented; you must 
+ * not claim that you wrote the original software.  If you use this 
+ * software in a product, an acknowledgment in the product 
+ * documentation would be appreciated but is not required.
+ * 
+ * 3. Altered source versions must be plainly marked as such, and must
+ * not be misrepresented as being the original software.
+ * 
+ * 4. The name of the author may not be used to endorse or promote 
+ * products derived from this software without specific prior written 
+ * permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 
+ * Java version ported by Keiron Liddle, Aftex Software <keiron@aftexsw.com> 1999-2001
+ */
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2OutputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/BZip2/BZip2OutputStream.cs
@@ -1,1804 +1,1804 @@
-// BZip2OutputStream.cs
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-
-using ICSharpCode.SharpZipLib.Checksums;
-
-namespace ICSharpCode.SharpZipLib.BZip2 
-{
-	
-	// TODO: Update to BZip2 1.0.1, 1.0.2
-	
-	/// <summary>
-	/// An output stream that compresses into the BZip2 format 
-	/// including file header chars into another stream.
-	/// </summary>
-	public class BZip2OutputStream : Stream
-	{
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports reading
-		/// </summary>
-		public override bool CanRead {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports seeking
-		/// </summary>
-		public override bool CanSeek {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports writing
-		/// </summary>
-		public override bool CanWrite {
-			get {
-				return baseStream.CanWrite;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the length in bytes of the stream
-		/// </summary>
-		public override long Length {
-			get {
-				return baseStream.Length;
-			}
-		}
-		
-		/// <summary>
-		/// Gets or sets the current position of this stream.
-		/// </summary>
-		public override long Position {
-			get {
-				return baseStream.Position;
-			}
-			set {
-				throw new NotSupportedException("BZip2OutputStream position cannot be set");
-			}
-		}
-		
-		/// <summary>
-		/// Sets the current position of this stream to the given value.
-		/// </summary>
-		public override long Seek(long offset, SeekOrigin origin)
-		{
-			throw new NotSupportedException("BZip2OutputStream Seek not supported");
-		}
-		
-		/// <summary>
-		/// Sets the length of this stream to the given value.
-		/// </summary>
-		public override void SetLength(long val)
-		{
-			throw new NotSupportedException("BZip2OutputStream SetLength not supported");
-		}
-		
-		/// <summary>
-		/// Read a byte from the stream advancing the position.
-		/// </summary>
-		public override int ReadByte()
-		{
-			throw new NotSupportedException("BZip2OutputStream ReadByte not supported");
-		}
-		
-		/// <summary>
-		/// Read a block of bytes
-		/// </summary>
-		public override int Read(byte[] b, int off, int len)
-		{
-			throw new NotSupportedException("BZip2OutputStream Read not supported");
-		}
-		
-		/// <summary>
-		/// Write a block of bytes to the stream
-		/// </summary>
-		public override void Write(byte[] buf, int off, int len)
-		{
-			for (int i = 0; i < len; ++i) {
-				WriteByte(buf[off + i]);
-			}
-		}
-		
-		readonly static int SETMASK       = (1 << 21);
-		readonly static int CLEARMASK     = (~SETMASK);
-		readonly static int GREATER_ICOST = 15;
-		readonly static int LESSER_ICOST  = 0;
-		readonly static int SMALL_THRESH  = 20;
-		readonly static int DEPTH_THRESH  = 10;
-		
-		/*--
-		If you are ever unlucky/improbable enough
-		to get a stack overflow whilst sorting,
-		increase the following constant and try
-		again.  In practice I have never seen the
-		stack go above 27 elems, so the following
-		limit seems very generous.
-		--*/
-		readonly static int QSORT_STACK_SIZE = 1000;
-		
-		static void Panic() 
-		{
-			throw new BZip2Exception("BZip2 output stream panic");
-		}
-		
-		void MakeMaps() 
-		{
-			int i;
-			nInUse = 0;
-			for (i = 0; i < 256; i++) {
-				if (inUse[i]) {
-					seqToUnseq[nInUse] = (char)i;
-					unseqToSeq[i] = (char)nInUse;
-					nInUse++;
-				}
-			}
-		}
-		
-		static void HbMakeCodeLengths(char[] len, int[] freq, int alphaSize, int maxLen) 
-		{
-			/*--
-			Nodes and heap entries run from 1.  Entry 0
-			for both the heap and nodes is a sentinel.
-			--*/
-			int nNodes, nHeap, n1, n2, j, k;
-			bool  tooLong;
-			
-			int[] heap   = new int[BZip2Constants.MAX_ALPHA_SIZE + 2];
-			int[] weight = new int[BZip2Constants.MAX_ALPHA_SIZE * 2];
-			int[] parent = new int[BZip2Constants.MAX_ALPHA_SIZE * 2];
-			
-			for (int i = 0; i < alphaSize; ++i) {
-				weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
-			}
-			
-			while (true) {
-				nNodes = alphaSize;
-				nHeap = 0;
-				
-				heap[0] = 0;
-				weight[0] = 0;
-				parent[0] = -2;
-				
-				for (int i = 1; i <= alphaSize; ++i) {
-					parent[i] = -1;
-					nHeap++;
-					heap[nHeap] = i;
-					int zz = nHeap;
-					int tmp = heap[zz];
-					while (weight[tmp] < weight[heap[zz >> 1]]) {
-						heap[zz] = heap[zz >> 1];
-						zz >>= 1;
-					}
-					heap[zz] = tmp;
-				}
-				if (!(nHeap < (BZip2Constants.MAX_ALPHA_SIZE+2))) {
-					Panic();
-				}
-				
-				while (nHeap > 1) {
-					n1 = heap[1];
-					heap[1] = heap[nHeap];
-					nHeap--;
-					int zz = 1;
-					int yy = 0;
-					int tmp = heap[zz];
-					while (true) {
-						yy = zz << 1;
-						if (yy > nHeap) {
-							break;
-						}
-						if (yy < nHeap &&  weight[heap[yy+1]] < weight[heap[yy]]) {
-							yy++;
-						}
-						if (weight[tmp] < weight[heap[yy]]) {
-							break;
-						}
-						
-						heap[zz] = heap[yy];
-						zz = yy;
-					}
-					heap[zz] = tmp;
-					n2 = heap[1];
-					heap[1] = heap[nHeap];
-					nHeap--;
-					
-					zz = 1;
-					yy = 0;
-					tmp = heap[zz];
-					while (true) {
-						yy = zz << 1;
-						if (yy > nHeap) {
-							break;
-						}
-						if (yy < nHeap && weight[heap[yy+1]] < weight[heap[yy]]) {
-							yy++;
-						}
-						if (weight[tmp] < weight[heap[yy]]) {
-							break;
-						}
-						heap[zz] = heap[yy];
-						zz = yy;
-					}
-					heap[zz] = tmp;
-					nNodes++;
-					parent[n1] = parent[n2] = nNodes;
-					
-					weight[nNodes] = (int)((weight[n1] & 0xffffff00) + (weight[n2] & 0xffffff00)) | 
-					                 (int)(1 + (((weight[n1] & 0x000000ff) > (weight[n2] & 0x000000ff)) ? (weight[n1] & 0x000000ff) : (weight[n2] & 0x000000ff)));
-					
-					parent[nNodes] = -1;
-					nHeap++;
-					heap[nHeap] = nNodes;
-					
-					zz  = nHeap;
-					tmp = heap[zz];
-					while (weight[tmp] < weight[heap[zz >> 1]]) {
-						heap[zz] = heap[zz >> 1];
-						zz >>= 1;
-					}
-					heap[zz] = tmp;
-				}
-				if (!(nNodes < (BZip2Constants.MAX_ALPHA_SIZE * 2))) {
-					Panic();
-				}
-				
-				tooLong = false;
-				for (int i = 1; i <= alphaSize; ++i) {
-					j = 0;
-					k = i;
-					while (parent[k] >= 0) {
-						k = parent[k];
-						j++;
-					}
-					len[i - 1] = (char)j;
-					if (j > maxLen) {
-						tooLong = true;
-					}
-				}
-				
-				if (!tooLong) {
-					break;
-				}
-				
-				for (int i = 1; i < alphaSize; ++i) {
-					j = weight[i] >> 8;
-					j = 1 + (j / 2);
-					weight[i] = j << 8;
-				}
-			}
-		}
-		
-		/*--
-		index of the last char in the block, so
-		the block size == last + 1.
-		--*/
-		int last;
-		
-		/*--
-		index in zptr[] of original string after sorting.
-		--*/
-		int origPtr;
-		
-		/*--
-		always: in the range 0 .. 9.
-		The current block size is 100000 * this number.
-		--*/
-		int blockSize100k;
-		
-		bool blockRandomised;
-		
-		int bytesOut;
-		int bsBuff;
-		int bsLive;
-		IChecksum mCrc = new StrangeCRC();
-		
-		bool[] inUse = new bool[256];
-		int nInUse;
-		
-		char[] seqToUnseq = new char[256];
-		char[] unseqToSeq = new char[256];
-		
-		char[] selector = new char[BZip2Constants.MAX_SELECTORS];
-		char[] selectorMtf = new char[BZip2Constants.MAX_SELECTORS];
-		
-		byte[]  block;
-		int[]   quadrant;
-		int[]   zptr;
-		short[] szptr;
-		int[]   ftab;
-		
-		int nMTF;
-		
-		int[] mtfFreq = new int[BZip2Constants.MAX_ALPHA_SIZE];
-		
-		/*
-		* Used when sorting.  If too many long comparisons
-		* happen, we stop sorting, randomise the block
-		* slightly, and try again.
-		*/
-		int workFactor;
-		int workDone;
-		int workLimit;
-		bool firstAttempt;
-		int nBlocksRandomised;
-		
-		int currentChar = -1;
-		int runLength = 0;
-		
-		/// <summary>
-		/// Construct a default output stream with maximum block size
-		/// </summary>
-		/// <param name="stream">The stream to write BZip data onto.</param>
-		public BZip2OutputStream(Stream stream) : this(stream, 9)
-		{
-		}
-		
-		/// <summary>
-		/// Initialise a new instance of the <see cref="BZip2OutputStream"></see> 
-		/// for the specified stream, using the given blocksize.
-		/// </summary>
-		/// <param name="stream">The stream to write compressed data to.</param>
-		/// <param name="blockSize">The block size to use.</param>
-		/// <remarks>
-		/// Valid block sizes are in the range 1..9, with 1 giving 
-		/// the lowest compression and 9 the highest.
-		/// </remarks>
-		public BZip2OutputStream(Stream stream, int blockSize)
-		{
-			block    = null;
-			quadrant = null;
-			zptr     = null;
-			ftab     = null;
-			
-			BsSetStream(stream);
-			
-			workFactor = 50;
-			if (blockSize > 9) {
-				blockSize = 9;
-			}
-			if (blockSize < 1) {
-				blockSize = 1;
-			}
-			blockSize100k = blockSize;
-			AllocateCompressStructures();
-			Initialize();
-			InitBlock();
-		}
-		
-		/// <summary>
-		/// Write a byte to the stream.
-		/// </summary>
-		public override void WriteByte(byte bv)
-		{
-			int b = (256 + bv) % 256;
-			if (currentChar != -1) {
-				if (currentChar == b) {
-					runLength++;
-					if (runLength > 254) {
-						WriteRun();
-						currentChar = -1;
-						runLength = 0;
-					}
-				} else {
-					WriteRun();
-					runLength = 1;
-					currentChar = b;
-				}
-			} else {
-				currentChar = b;
-				runLength++;
-			}
-		}
-		
-		void WriteRun()
-		{
-			if (last < allowableBlockSize) {
-				inUse[currentChar] = true;
-				for (int i = 0; i < runLength; i++) {
-					mCrc.Update(currentChar);
-				}
-				
-				switch (runLength) {
-					case 1:
-						last++;
-						block[last + 1] = (byte)currentChar;
-						break;
-					case 2:
-						last++;
-						block[last + 1] = (byte)currentChar;
-						last++;
-						block[last + 1] = (byte)currentChar;
-						break;
-					case 3:
-						last++;
-						block[last + 1] = (byte)currentChar;
-						last++;
-						block[last + 1] = (byte)currentChar;
-						last++;
-						block[last + 1] = (byte)currentChar;
-						break;
-					default:
-						inUse[runLength - 4] = true;
-						last++;
-						block[last + 1] = (byte)currentChar;
-						last++;
-						block[last + 1] = (byte)currentChar;
-						last++;
-						block[last + 1] = (byte)currentChar;
-						last++;
-						block[last + 1] = (byte)currentChar;
-						last++;
-						block[last + 1] = (byte)(runLength - 4);
-						break;
-				}
-			} else {
-				EndBlock();
-				InitBlock();
-				WriteRun();
-			}
-		}
-		
-		bool closed = false;
-		
-		/// <summary>
-		/// Free any resources and other cleanup before garbage collection reclaims memory
-		/// </summary>
-		~BZip2OutputStream()
-		{
-			Close();
-		}
-		
-		/// <summary>
-		/// End the current block and end compression.
-		/// Close the stream and free any resources
-		/// </summary>
-		public override void Close()
-		{
-			if (!closed) {
-				closed = true;
-			
-				if (runLength > 0) {
-					WriteRun();
-				}
-			
-				currentChar = -1;
-				EndBlock();
-				EndCompression();
-				Flush();
-				baseStream.Close();
-			}
-		}
-
-		/// <summary>
-		/// Flush output buffers
-		/// </summary>		
-		public override void Flush()
-		{
-			baseStream.Flush();
-		}
-		
-		uint blockCRC, combinedCRC;
-		
-		void Initialize()
-		{
-			bytesOut = 0;
-			nBlocksRandomised = 0;
-			
-			/*--- Write `magic' bytes h indicating file-format == huffmanised,
-			followed by a digit indicating blockSize100k.
-			---*/
-			
-			// TODO  adding header here should be optional?
-			BsPutUChar('B');
-			BsPutUChar('Z');
-			
-			BsPutUChar('h');
-			BsPutUChar('0' + blockSize100k);
-			
-			combinedCRC = 0;
-		}
-		
-		int allowableBlockSize;
-		
-		void InitBlock() 
-		{
-			//		blockNo++;
-			mCrc.Reset();
-			last = -1;
-			//		ch = 0;
-			
-			for (int i = 0; i < 256; i++) {
-				inUse[i] = false;
-			}
-			
-			/*--- 20 is just a paranoia constant ---*/
-			allowableBlockSize = BZip2Constants.baseBlockSize * blockSize100k - 20;
-		}
-		
-		void EndBlock()
-		{
-			if (last < 0) {       // dont do anything for empty files, (makes empty files compatible with original Bzip)
-				return;
-			}
-			
-			blockCRC = (uint)mCrc.Value;
-			combinedCRC = (combinedCRC << 1) | (combinedCRC >> 31);
-			combinedCRC ^= blockCRC;
-			
-			/*-- sort the block and establish posn of original string --*/
-			DoReversibleTransformation();
-			
-			/*--
-			A 6-byte block header, the value chosen arbitrarily
-			as 0x314159265359 :-).  A 32 bit value does not really
-			give a strong enough guarantee that the value will not
-			appear by chance in the compressed datastream.  Worst-case
-			probability of this event, for a 900k block, is about
-			2.0e-3 for 32 bits, 1.0e-5 for 40 bits and 4.0e-8 for 48 bits.
-			For a compressed file of size 100Gb -- about 100000 blocks --
-			only a 48-bit marker will do.  NB: normal compression/
-			decompression do *not* rely on these statistical properties.
-			They are only important when trying to recover blocks from
-			damaged files.
-			--*/
-			BsPutUChar(0x31);
-			BsPutUChar(0x41);
-			BsPutUChar(0x59);
-			BsPutUChar(0x26);
-			BsPutUChar(0x53);
-			BsPutUChar(0x59);
-			
-			/*-- Now the block's CRC, so it is in a known place. --*/
-			BsPutint((int)blockCRC);
-			
-			/*-- Now a single bit indicating randomisation. --*/
-			if (blockRandomised) {
-				BsW(1,1);
-				nBlocksRandomised++;
-			} else {
-				BsW(1,0);
-			}
-			
-			/*-- Finally, block's contents proper. --*/
-			MoveToFrontCodeAndSend();
-		}
-		
-		void EndCompression()
-		{
-			/*--
-			Now another magic 48-bit number, 0x177245385090, to
-			indicate the end of the last block.  (sqrt(pi), if
-			you want to know.  I did want to use e, but it contains
-			too much repetition -- 27 18 28 18 28 46 -- for me
-			to feel statistically comfortable.  Call me paranoid.)
-			--*/
-			BsPutUChar(0x17);
-			BsPutUChar(0x72);
-			BsPutUChar(0x45);
-			BsPutUChar(0x38);
-			BsPutUChar(0x50);
-			BsPutUChar(0x90);
-			
-			BsPutint((int)combinedCRC);
-			
-			BsFinishedWithStream();
-		}
-		
-		void HbAssignCodes (int[] code, char[] length, int minLen, int maxLen, int alphaSize) 
-		{
-			int vec = 0;
-			for (int n = minLen; n <= maxLen; ++n) {
-				for (int i = 0; i < alphaSize; ++i) {
-					if (length[i] == n) {
-						code[i] = vec;
-						++vec;
-					}
-				}
-				vec <<= 1;
-			}
-		}
-		
-		void BsSetStream(Stream f) 
-		{
-			baseStream = f;
-			bsLive = 0;
-			bsBuff = 0;
-			bytesOut = 0;
-		}
-		
-		void BsFinishedWithStream()
-		{
-			while (bsLive > 0) 
-			{
-				int ch = (bsBuff >> 24);
-				baseStream.WriteByte((byte)ch); // write 8-bit
-				bsBuff <<= 8;
-				bsLive -= 8;
-				bytesOut++;
-			}
-		}
-		
-		void BsW(int n, int v)
-		{
-			while (bsLive >= 8) {
-				int ch = (bsBuff >> 24);
-				baseStream.WriteByte((byte)ch); // write 8-bit
-				bsBuff <<= 8;
-				bsLive -= 8;
-				++bytesOut;
-			}
-			bsBuff |= (v << (32 - bsLive - n));
-			bsLive += n;
-		}
-		
-		void BsPutUChar(int c)
-		{
-			BsW(8, c);
-		}
-		
-		void BsPutint(int u)
-		{
-			BsW(8, (u >> 24) & 0xFF);
-			BsW(8, (u >> 16) & 0xFF);
-			BsW(8, (u >>  8) & 0xFF);
-			BsW(8,  u        & 0xFF);
-		}
-		
-		void BsPutIntVS(int numBits, int c)
-		{
-			BsW(numBits, c);
-		}
-		
-		void SendMTFValues()
-		{
-			char[][] len = new char[BZip2Constants.N_GROUPS][];
-			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
-				len[i] = new char[BZip2Constants.MAX_ALPHA_SIZE];
-			}
-			
-			int gs, ge, totc, bt, bc, iter;
-			int nSelectors = 0, alphaSize, minLen, maxLen, selCtr;
-			int nGroups, nBytes;
-			
-			alphaSize = nInUse + 2;
-			for (int t = 0; t < BZip2Constants.N_GROUPS; t++) {
-				for (int v = 0; v < alphaSize; v++) {
-					len[t][v] = (char)GREATER_ICOST;
-				}
-			}
-			
-			/*--- Decide how many coding tables to use ---*/
-			if (nMTF <= 0) {
-				Panic();
-			}
-			
-			if (nMTF < 200) {
-				nGroups = 2;
-			} else if (nMTF < 600) {
-				nGroups = 3;
-			} else if (nMTF < 1200) {
-				nGroups = 4;
-			} else if (nMTF < 2400) {
-				nGroups = 5;
-			} else {
-				nGroups = 6;
-			}
-			
-			/*--- Generate an initial set of coding tables ---*/ 
-			int nPart = nGroups;
-			int remF  = nMTF;
-			gs = 0;
-			while (nPart > 0) {
-				int tFreq = remF / nPart;
-				int aFreq = 0;
-				ge = gs - 1;
-				while (aFreq < tFreq && ge < alphaSize - 1) {
-					ge++;
-					aFreq += mtfFreq[ge];
-				}
-				
-				if (ge > gs && nPart != nGroups && nPart != 1 && ((nGroups - nPart) % 2 == 1)) {
-					aFreq -= mtfFreq[ge];
-					ge--;
-				}
-				
-				for (int v = 0; v < alphaSize; v++) {
-					if (v >= gs && v <= ge) {
-						len[nPart - 1][v] = (char)LESSER_ICOST;
-					} else {
-						len[nPart - 1][v] = (char)GREATER_ICOST;
-					}
-				}
-				
-				nPart--;
-				gs = ge + 1;
-				remF -= aFreq;
-			}
-			
-			int[][] rfreq = new int[BZip2Constants.N_GROUPS][];
-			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
-				rfreq[i] = new int[BZip2Constants.MAX_ALPHA_SIZE];
-			}
-			
-			int[]   fave = new int[BZip2Constants.N_GROUPS];
-			short[] cost = new short[BZip2Constants.N_GROUPS];
-			/*---
-			Iterate up to N_ITERS times to improve the tables.
-			---*/
-			for (iter = 0; iter < BZip2Constants.N_ITERS; ++iter) {
-				for (int t = 0; t < nGroups; ++t) {
-					fave[t] = 0;
-				}
-				
-				for (int t = 0; t < nGroups; ++t) {
-					for (int v = 0; v < alphaSize; ++v) {
-						rfreq[t][v] = 0;
-					}
-				}
-				
-				nSelectors = 0;
-				totc = 0;
-				gs   = 0;
-				while (true) {
-					/*--- Set group start & end marks. --*/
-					if (gs >= nMTF) {
-						break;
-					}
-					ge = gs + BZip2Constants.G_SIZE - 1;
-					if (ge >= nMTF) {
-						ge = nMTF - 1;
-					}
-					
-					/*--
-					Calculate the cost of this group as coded
-					by each of the coding tables.
-					--*/
-					for (int t = 0; t < nGroups; t++) {
-						cost[t] = 0;
-					}
-					
-					if (nGroups == 6) {
-						short cost0, cost1, cost2, cost3, cost4, cost5;
-						cost0 = cost1 = cost2 = cost3 = cost4 = cost5 = 0;
-						for (int i = gs; i <= ge; ++i) {
-							short icv = szptr[i];
-							cost0 += (short)len[0][icv];
-							cost1 += (short)len[1][icv];
-							cost2 += (short)len[2][icv];
-							cost3 += (short)len[3][icv];
-							cost4 += (short)len[4][icv];
-							cost5 += (short)len[5][icv];
-						}
-						cost[0] = cost0;
-						cost[1] = cost1;
-						cost[2] = cost2;
-						cost[3] = cost3;
-						cost[4] = cost4;
-						cost[5] = cost5;
-					} else {
-						for (int i = gs; i <= ge; ++i) {
-							short icv = szptr[i];
-							for (int t = 0; t < nGroups; t++) {
-								cost[t] += (short)len[t][icv];
-							}
-						}
-					}
-					
-					/*--
-					Find the coding table which is best for this group,
-					and record its identity in the selector table.
-					--*/
-					bc = 999999999;
-					bt = -1;
-					for (int t = 0; t < nGroups; ++t) {
-						if (cost[t] < bc) {
-							bc = cost[t];
-							bt = t;
-						}
-					}
-					totc += bc;
-					fave[bt]++;
-					selector[nSelectors] = (char)bt;
-					nSelectors++;
-					
-					/*--
-					Increment the symbol frequencies for the selected table.
-					--*/
-					for (int i = gs; i <= ge; ++i) {
-						++rfreq[bt][szptr[i]];
-					}
-					
-					gs = ge+1;
-				}
-				
-				/*--
-				Recompute the tables based on the accumulated frequencies.
-				--*/
-				for (int t = 0; t < nGroups; ++t) {
-					HbMakeCodeLengths(len[t], rfreq[t], alphaSize, 20);
-				}
-			}
-			
-			rfreq = null;
-			fave = null;
-			cost = null;
-			
-			if (!(nGroups < 8)) {
-				Panic();
-			}
-			if (!(nSelectors < 32768 && nSelectors <= (2 + (900000 / BZip2Constants.G_SIZE)))) {
-				Panic();
-			}
-			
-			/*--- Compute MTF values for the selectors. ---*/
-			char[] pos = new char[BZip2Constants.N_GROUPS];
-			char ll_i, tmp2, tmp;
-			for (int i = 0; i < nGroups; i++) {
-				pos[i] = (char)i;
-			}
-			for (int i = 0; i < nSelectors; i++) {
-				ll_i = selector[i];
-				int j = 0;
-				tmp = pos[j];
-				while (ll_i != tmp) {
-					j++;
-					tmp2 = tmp;
-					tmp = pos[j];
-					pos[j] = tmp2;
-				}
-				pos[0] = tmp;
-				selectorMtf[i] = (char)j;
-			}
-			
-			int[][] code = new int[BZip2Constants.N_GROUPS][];
-			
-			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
-				code[i] = new int[BZip2Constants.MAX_ALPHA_SIZE];
-			}
-			
-			/*--- Assign actual codes for the tables. --*/
-			for (int t = 0; t < nGroups; t++) {
-				minLen = 32;
-				maxLen = 0;
-				for (int i = 0; i < alphaSize; i++) {
-					if (len[t][i] > maxLen) {
-						maxLen = len[t][i];
-					}
-					if (len[t][i] < minLen) {
-						minLen = len[t][i];
-					}
-				}
-				if (maxLen > 20) {
-					Panic();
-				}
-				if (minLen < 1) {
-					Panic();
-				}
-				HbAssignCodes(code[t], len[t], minLen, maxLen, alphaSize);
-			}
-			
-			/*--- Transmit the mapping table. ---*/
-			bool[] inUse16 = new bool[16];
-			for (int i = 0; i < 16; ++i) {
-				inUse16[i] = false;
-				for (int j = 0; j < 16; ++j) {
-					if (inUse[i * 16 + j]) {
-						inUse16[i] = true; 
-					}
-				}
-			}
-			
-			nBytes = bytesOut;
-			for (int i = 0; i < 16; ++i) {
-				if (inUse16[i]) {
-					BsW(1,1);
-				} else {
-					BsW(1,0);
-				}
-			}
-			
-			for (int i = 0; i < 16; ++i) {
-				if (inUse16[i]) {
-					for (int j = 0; j < 16; ++j) {
-						if (inUse[i * 16 + j]) {
-							BsW(1,1);
-						} else {
-							BsW(1,0);
-						}
-					}
-				}
-			}
-			
-			/*--- Now the selectors. ---*/
-			nBytes = bytesOut;
-			BsW(3, nGroups);
-			BsW(15, nSelectors);
-			for (int i = 0; i < nSelectors; ++i) {
-				for (int j = 0; j < selectorMtf[i]; ++j) {
-					BsW(1,1);
-				}
-				BsW(1,0);
-			}
-			
-			/*--- Now the coding tables. ---*/
-			nBytes = bytesOut;
-			
-			for (int t = 0; t < nGroups; ++t) {
-				int curr = len[t][0];
-				BsW(5, curr);
-				for (int i = 0; i < alphaSize; ++i) {
-					while (curr < len[t][i]) {
-						BsW(2, 2);
-						curr++; /* 10 */
-					}
-					while (curr > len[t][i]) {
-						BsW(2, 3);
-						curr--; /* 11 */
-					}
-					BsW (1, 0);
-				}
-			}
-			
-			/*--- And finally, the block data proper ---*/
-			nBytes = bytesOut;
-			selCtr = 0;
-			gs = 0;
-			while (true) {
-				if (gs >= nMTF) {
-					break;
-				}
-				ge = gs + BZip2Constants.G_SIZE - 1;
-				if (ge >= nMTF) {
-					ge = nMTF - 1;
-				}
-				
-				for (int i = gs; i <= ge; i++) {
-					BsW(len[selector[selCtr]][szptr[i]], code[selector[selCtr]][szptr[i]]);
-				}
-				
-				gs = ge + 1;
-				++selCtr;
-			}
-			if (!(selCtr == nSelectors)) {
-				Panic();
-			}
-		}
-		
-		void MoveToFrontCodeAndSend () 
-		{
-			BsPutIntVS(24, origPtr);
-			GenerateMTFValues();
-			SendMTFValues();
-		}
-		
-		Stream baseStream;
-		
-		void SimpleSort(int lo, int hi, int d) 
-		{
-			int i, j, h, bigN, hp;
-			int v;
-			
-			bigN = hi - lo + 1;
-			if (bigN < 2) {
-				return;
-			}
-			
-			hp = 0;
-			while (incs[hp] < bigN) {
-				hp++;
-			}
-			hp--;
-			
-			for (; hp >= 0; hp--) {
-				h = incs[hp];
-				
-				i = lo + h;
-				while (true) {
-					/*-- copy 1 --*/
-					if (i > hi)
-						break;
-					v = zptr[i];
-					j = i;
-					while (FullGtU(zptr[j-h]+d, v+d)) {
-						zptr[j] = zptr[j-h];
-						j = j - h;
-						if (j <= (lo + h - 1))
-							break;
-					}
-					zptr[j] = v;
-					i++;
-					
-					/*-- copy 2 --*/
-					if (i > hi) {
-						break;
-					}
-					v = zptr[i];
-					j = i;
-					while (FullGtU ( zptr[j-h]+d, v+d )) {
-						zptr[j] = zptr[j-h];
-						j = j - h;
-						if (j <= (lo + h - 1)) {
-							break;
-						}
-					}
-					zptr[j] = v;
-					i++;
-					
-					/*-- copy 3 --*/
-					if (i > hi) {
-						break;
-					}
-					v = zptr[i];
-					j = i;
-					while (FullGtU ( zptr[j-h]+d, v+d)) {
-						zptr[j] = zptr[j-h];
-						j = j - h;
-						if (j <= (lo + h - 1)) {
-							break;
-						}
-					}
-					zptr[j] = v;
-					i++;
-					
-					if (workDone > workLimit && firstAttempt) {
-						return;
-					}
-				}
-			}
-		}
-		
-		void Vswap(int p1, int p2, int n ) 
-		{
-			int temp = 0;
-			while (n > 0) {
-				temp = zptr[p1];
-				zptr[p1] = zptr[p2];
-				zptr[p2] = temp;
-				p1++;
-				p2++;
-				n--;
-			}
-		}
-		
-		byte Med3(byte a, byte b, byte c ) 
-		{
-			byte t;
-			if (a > b) {
-				t = a;
-				a = b;
-				b = t;
-			}
-			if (b > c) {
-				t = b;
-				b = c;
-				c = t;
-			}
-			if (a > b) {
-				b = a;
-			}
-			return b;
-		}
-		
-		class StackElem 
-		{
-			public int ll;
-			public int hh;
-			public int dd;
-		}
-		
-		void QSort3(int loSt, int hiSt, int dSt) 
-		{
-			int unLo, unHi, ltLo, gtHi, med, n, m;
-			int sp, lo, hi, d;
-			StackElem[] stack = new StackElem[QSORT_STACK_SIZE];
-			for (int count = 0; count < QSORT_STACK_SIZE; count++) {
-				stack[count] = new StackElem();
-			}
-			
-			sp = 0;
-			
-			stack[sp].ll = loSt;
-			stack[sp].hh = hiSt;
-			stack[sp].dd = dSt;
-			sp++;
-			
-			while (sp > 0) {
-				if (sp >= QSORT_STACK_SIZE) {
-					Panic();
-				}
-				
-				sp--;
-				lo = stack[sp].ll;
-				hi = stack[sp].hh;
-				d = stack[sp].dd;
-				
-				if (hi - lo < SMALL_THRESH || d > DEPTH_THRESH) {
-					SimpleSort(lo, hi, d);
-					if (workDone > workLimit && firstAttempt) {
-						return;
-					}
-					continue;
-				}
-				
-				med = Med3(block[zptr[lo] + d + 1],
-				           block[zptr[hi            ] + d  + 1],
-				           block[zptr[(lo + hi) >> 1] + d + 1]);
-				
-				unLo = ltLo = lo;
-				unHi = gtHi = hi;
-				
-				while (true) {
-					while (true) {
-						if (unLo > unHi) {
-							break;
-						}
-						n = ((int)block[zptr[unLo]+d + 1]) - med;
-						if (n == 0) {
-							int temp = 0;
-							temp = zptr[unLo];
-							zptr[unLo] = zptr[ltLo];
-							zptr[ltLo] = temp;
-							ltLo++;
-							unLo++;
-							continue;
-						}
-						if (n >  0) {
-							break;
-						}
-						unLo++;
-					}
-					while (true) {
-						if (unLo > unHi) {
-							break;
-						}
-						n = ((int)block[zptr[unHi]+d + 1]) - med;
-						if (n == 0) {
-							int temp = 0;
-							temp = zptr[unHi];
-							zptr[unHi] = zptr[gtHi];
-							zptr[gtHi] = temp;
-							gtHi--;
-							unHi--;
-							continue;
-						}
-						if (n <  0) {
-							break;
-						}
-						unHi--;
-					}
-					if (unLo > unHi) {
-						break;
-					}
-					{
-						int temp = zptr[unLo];
-						zptr[unLo] = zptr[unHi];
-						zptr[unHi] = temp;
-						unLo++;
-						unHi--;
-					}
-				}
-				
-				if (gtHi < ltLo) {
-					stack[sp].ll = lo;
-					stack[sp].hh = hi;
-					stack[sp].dd = d+1;
-					sp++;
-					continue;
-				}
-				
-				n = ((ltLo-lo) < (unLo-ltLo)) ? (ltLo-lo) : (unLo-ltLo);
-				Vswap(lo, unLo-n, n);
-				m = ((hi-gtHi) < (gtHi-unHi)) ? (hi-gtHi) : (gtHi-unHi);
-				Vswap(unLo, hi-m+1, m);
-				
-				n = lo + unLo - ltLo - 1;
-				m = hi - (gtHi - unHi) + 1;
-				
-				stack[sp].ll = lo;
-				stack[sp].hh = n;
-				stack[sp].dd = d;
-				sp++;
-				
-				stack[sp].ll = n + 1;
-				stack[sp].hh = m - 1;
-				stack[sp].dd = d+1;
-				sp++;
-				
-				stack[sp].ll = m;
-				stack[sp].hh = hi;
-				stack[sp].dd = d;
-				sp++;
-			}
-		}
-		
-		void MainSort() 
-		{
-			int i, j, ss, sb;
-			int[] runningOrder = new int[256];
-			int[] copy = new int[256];
-			bool[] bigDone = new bool[256];
-			int c1, c2;
-			int numQSorted;
-			
-			/*--
-			In the various block-sized structures, live data runs
-			from 0 to last+NUM_OVERSHOOT_BYTES inclusive.  First,
-			set up the overshoot area for block.
-			--*/
-			
-			//   if (verbosity >= 4) fprintf ( stderr, "        sort initialise ...\n" );
-			for (i = 0; i < BZip2Constants.NUM_OVERSHOOT_BYTES; i++) {
-				block[last + i + 2] = block[(i % (last + 1)) + 1];
-			}
-			for (i = 0; i <= last + BZip2Constants.NUM_OVERSHOOT_BYTES; i++) {
-				quadrant[i] = 0;
-			}
-			
-			block[0] = (byte)(block[last + 1]);
-			
-			if (last < 4000) {
-				/*--
-				Use simpleSort(), since the full sorting mechanism
-				has quite a large constant overhead.
-				--*/
-				for (i = 0; i <= last; i++) {
-					zptr[i] = i;
-				}
-				firstAttempt = false;
-				workDone = workLimit = 0;
-				SimpleSort(0, last, 0);
-			} else {
-				numQSorted = 0;
-				for (i = 0; i <= 255; i++) {
-					bigDone[i] = false;
-				}
-				for (i = 0; i <= 65536; i++) {
-					ftab[i] = 0;
-				}
-				
-				c1 = block[0];
-				for (i = 0; i <= last; i++) {
-					c2 = block[i + 1];
-					ftab[(c1 << 8) + c2]++;
-					c1 = c2;
-				}
-				
-				for (i = 1; i <= 65536; i++) {
-					ftab[i] += ftab[i - 1];
-				}
-				
-				c1 = block[1];
-				for (i = 0; i < last; i++) {
-					c2 = block[i + 2];
-					j = (c1 << 8) + c2;
-					c1 = c2;
-					ftab[j]--;
-					zptr[ftab[j]] = i;
-				}
-				
-				j = ((block[last + 1]) << 8) + (block[1]);
-				ftab[j]--;
-				zptr[ftab[j]] = last;
-				
-				/*--
-				Now ftab contains the first loc of every small bucket.
-				Calculate the running order, from smallest to largest
-				big bucket.
-				--*/
-				
-				for (i = 0; i <= 255; i++) {
-					runningOrder[i] = i;
-				}
-				
-				int vv;
-				int h = 1;
-				do {
-					h = 3 * h + 1;
-				} while (h <= 256);
-				do {
-					h = h / 3;
-					for (i = h; i <= 255; i++) {
-						vv = runningOrder[i];
-						j = i;
-						while ((ftab[((runningOrder[j-h])+1) << 8] - ftab[(runningOrder[j-h]) << 8]) > (ftab[((vv)+1) << 8] - ftab[(vv) << 8])) {
-							runningOrder[j] = runningOrder[j-h];
-							j = j - h;
-							if (j <= (h - 1)) {
-								break;
-							}
-						}
-						runningOrder[j] = vv;
-					}
-				} while (h != 1);
-				
-				/*--
-				The main sorting loop.
-				--*/
-				for (i = 0; i <= 255; i++) {
-					
-					/*--
-					Process big buckets, starting with the least full.
-					--*/
-					ss = runningOrder[i];
-					
-					/*--
-					Complete the big bucket [ss] by quicksorting
-					any unsorted small buckets [ss, j].  Hopefully
-					previous pointer-scanning phases have already
-					completed many of the small buckets [ss, j], so
-					we don't have to sort them at all.
-					--*/
-					for (j = 0; j <= 255; j++) {
-						sb = (ss << 8) + j;
-						if(!((ftab[sb] & SETMASK) == SETMASK)) {
-							int lo = ftab[sb] & CLEARMASK;
-							int hi = (ftab[sb+1] & CLEARMASK) - 1;
-							if (hi > lo) {
-								QSort3(lo, hi, 2);
-								numQSorted += (hi - lo + 1);
-								if (workDone > workLimit && firstAttempt) {
-									return;
-								}
-							}
-							ftab[sb] |= SETMASK;
-						}
-					}
-					
-					/*--
-					The ss big bucket is now done.  Record this fact,
-					and update the quadrant descriptors.  Remember to
-					update quadrants in the overshoot area too, if
-					necessary.  The "if (i < 255)" test merely skips
-					this updating for the last bucket processed, since
-					updating for the last bucket is pointless.
-					--*/
-					bigDone[ss] = true;
-					
-					if (i < 255) {
-						int bbStart  = ftab[ss << 8] & CLEARMASK;
-						int bbSize   = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
-						int shifts   = 0;
-						
-						while ((bbSize >> shifts) > 65534) {
-							shifts++;
-						}
-						
-						for (j = 0; j < bbSize; j++) {
-							int a2update = zptr[bbStart + j];
-							int qVal = (j >> shifts);
-							quadrant[a2update] = qVal;
-							if (a2update < BZip2Constants.NUM_OVERSHOOT_BYTES) {
-								quadrant[a2update + last + 1] = qVal;
-							}
-						}
-						
-						if (!(((bbSize-1) >> shifts) <= 65535)) {
-							Panic();
-						}
-					}
-					
-					/*--
-					Now scan this big bucket so as to synthesise the
-					sorted order for small buckets [t, ss] for all t != ss.
-					--*/
-					for (j = 0; j <= 255; j++) {
-						copy[j] = ftab[(j << 8) + ss] & CLEARMASK;
-					}
-					
-					for (j = ftab[ss << 8] & CLEARMASK; j < (ftab[(ss+1) << 8] & CLEARMASK); j++) {
-						c1 = block[zptr[j]];
-						if (!bigDone[c1]) {
-							zptr[copy[c1]] = zptr[j] == 0 ? last : zptr[j] - 1;
-							copy[c1] ++;
-						}
-					}
-					
-					for (j = 0; j <= 255; j++) {
-						ftab[(j << 8) + ss] |= SETMASK;
-					}
-				}
-			}
-		}
-		
-		void RandomiseBlock() 
-		{
-			int i;
-			int rNToGo = 0;
-			int rTPos  = 0;
-			for (i = 0; i < 256; i++) {
-				inUse[i] = false;
-			}
-			
-			for (i = 0; i <= last; i++) {
-				if (rNToGo == 0) {
-					rNToGo = (int)BZip2Constants.rNums[rTPos];
-					rTPos++;
-					if (rTPos == 512) {
-						rTPos = 0;
-					}
-				}
-				rNToGo--;
-				block[i + 1] ^= (byte)((rNToGo == 1) ? 1 : 0);
-				// handle 16 bit signed numbers
-				block[i + 1] &= 0xFF;
-				
-				inUse[block[i + 1]] = true;
-			}
-		}
-		
-		void DoReversibleTransformation() 
-		{
-			workLimit = workFactor * last;
-			workDone = 0;
-			blockRandomised = false;
-			firstAttempt = true;
-			
-			MainSort();
-			
-			if (workDone > workLimit && firstAttempt) {
-				RandomiseBlock();
-				workLimit = workDone = 0;
-				blockRandomised = true;
-				firstAttempt = false;
-				MainSort();
-			}
-			
-			origPtr = -1;
-			for (int i = 0; i <= last; i++) {
-				if (zptr[i] == 0) {
-					origPtr = i;
-					break;
-				}
-			}
-			
-			if (origPtr == -1) {
-				Panic();
-			}
-		}
-		
-		bool FullGtU(int i1, int i2) 
-		{
-			int k;
-			byte c1, c2;
-			int s1, s2;
-			
-			c1 = block[i1 + 1];
-			c2 = block[i2 + 1];
-			if (c1 != c2) {
-				return c1 > c2;
-			}
-			i1++;
-			i2++;
-			
-			c1 = block[i1 + 1];
-			c2 = block[i2 + 1];
-			if (c1 != c2) {
-				return c1 > c2;
-			}
-			i1++;
-			i2++;
-			
-			c1 = block[i1 + 1];
-			c2 = block[i2 + 1];
-			if (c1 != c2) {
-				return c1 > c2;
-			}
-			i1++;
-			i2++;
-			
-			c1 = block[i1 + 1];
-			c2 = block[i2 + 1];
-			if (c1 != c2) {
-				return c1 > c2;
-			}
-			i1++;
-			i2++;
-			
-			c1 = block[i1 + 1];
-			c2 = block[i2 + 1];
-			if (c1 != c2) {
-				return c1 > c2;
-			}
-			i1++;
-			i2++;
-			
-			c1 = block[i1 + 1];
-			c2 = block[i2 + 1];
-			if (c1 != c2) {
-				return c1 > c2;
-			}
-			i1++;
-			i2++;
-			
-			k = last + 1;
-			
-			do {
-				c1 = block[i1 + 1];
-				c2 = block[i2 + 1];
-				if (c1 != c2) {
-					return c1 > c2;
-				}
-				s1 = quadrant[i1];
-				s2 = quadrant[i2];
-				if (s1 != s2) {
-					return s1 > s2;
-				}
-				i1++;
-				i2++;
-				
-				c1 = block[i1 + 1];
-				c2 = block[i2 + 1];
-				if (c1 != c2) {
-					return c1 > c2;
-				}
-				s1 = quadrant[i1];
-				s2 = quadrant[i2];
-				if (s1 != s2) {
-					return s1 > s2;
-				}
-				i1++;
-				i2++;
-				
-				c1 = block[i1 + 1];
-				c2 = block[i2 + 1];
-				if (c1 != c2) {
-					return c1 > c2;
-				}
-				s1 = quadrant[i1];
-				s2 = quadrant[i2];
-				if (s1 != s2) {
-					return s1 > s2;
-				}
-				i1++;
-				i2++;
-				
-				c1 = block[i1 + 1];
-				c2 = block[i2 + 1];
-				if (c1 != c2) {
-					return c1 > c2;
-				}
-				s1 = quadrant[i1];
-				s2 = quadrant[i2];
-				if (s1 != s2) {
-					return s1 > s2;
-				}
-				i1++;
-				i2++;
-				
-				if (i1 > last) {
-					i1 -= last;
-					i1--;
-				}
-				if (i2 > last) {
-					i2 -= last;
-					i2--;
-				}
-				
-				k -= 4;
-				++workDone;
-			} while (k >= 0);
-			
-			return false;
-		}
-		
-		/*--
-		Knuth's increments seem to work better
-		than Incerpi-Sedgewick here.  Possibly
-		because the number of elems to sort is
-		usually small, typically <= 20.
-		--*/
-		readonly int[] incs = new int[] { 
-			1, 4, 13, 40, 121, 364, 1093, 3280,
-			9841, 29524, 88573, 265720,
-			797161, 2391484 
-		};
-		
-		void AllocateCompressStructures() 
-		{
-			int n = BZip2Constants.baseBlockSize * blockSize100k;
-			block = new byte[(n + 1 + BZip2Constants.NUM_OVERSHOOT_BYTES)];
-			quadrant = new int[(n + BZip2Constants.NUM_OVERSHOOT_BYTES)];
-			zptr = new int[n];
-			ftab = new int[65537];
-			
-			if (block == null || quadrant == null || zptr == null  || ftab == null) {
-				//		int totalDraw = (n + 1 + NUM_OVERSHOOT_BYTES) + (n + NUM_OVERSHOOT_BYTES) + n + 65537;
-				//		compressOutOfMemory ( totalDraw, n );
-			}
-			
-			/*
-			The back end needs a place to store the MTF values
-			whilst it calculates the coding tables.  We could
-			put them in the zptr array.  However, these values
-			will fit in a short, so we overlay szptr at the
-			start of zptr, in the hope of reducing the number
-			of cache misses induced by the multiple traversals
-			of the MTF values when calculating coding tables.
-			Seems to improve compression speed by about 1%.
-			*/
-			//	szptr = zptr;
-			
-			
-			szptr = new short[2 * n];
-		}
-		
-		void GenerateMTFValues() 
-		{
-			char[] yy = new char[256];
-			int  i, j;
-			char tmp;
-			char tmp2;
-			int zPend;
-			int wr;
-			int EOB;
-			
-			MakeMaps();
-			EOB = nInUse+1;
-			
-			for (i = 0; i <= EOB; i++) {
-				mtfFreq[i] = 0;
-			}
-			
-			wr = 0;
-			zPend = 0;
-			for (i = 0; i < nInUse; i++) {
-				yy[i] = (char) i;
-			}
-			
-			
-			for (i = 0; i <= last; i++) {
-				char ll_i;
-				
-				ll_i = unseqToSeq[block[zptr[i]]];
-				
-				j = 0;
-				tmp = yy[j];
-				while (ll_i != tmp) {
-					j++;
-					tmp2 = tmp;
-					tmp = yy[j];
-					yy[j] = tmp2;
-				}
-				yy[0] = tmp;
-				
-				if (j == 0) {
-					zPend++;
-				} else {
-					if (zPend > 0) {
-						zPend--;
-						while (true) {
-							switch (zPend % 2) {
-								case 0:
-									szptr[wr] = (short)BZip2Constants.RUNA;
-									wr++;
-									mtfFreq[BZip2Constants.RUNA]++;
-									break;
-								case 1:
-									szptr[wr] = (short)BZip2Constants.RUNB;
-									wr++;
-									mtfFreq[BZip2Constants.RUNB]++;
-									break;
-							}
-							if (zPend < 2) {
-								break;
-							}
-							zPend = (zPend - 2) / 2;
-						}
-						zPend = 0;
-					}
-					szptr[wr] = (short)(j + 1);
-					wr++;
-					mtfFreq[j + 1]++;
-				}
-			}
-			
-			if (zPend > 0) {
-				zPend--;
-				while (true) {
-					switch (zPend % 2) {
-						case 0:
-							szptr[wr] = (short)BZip2Constants.RUNA;
-							wr++;
-							mtfFreq[BZip2Constants.RUNA]++;
-							break;
-						case 1:
-							szptr[wr] = (short)BZip2Constants.RUNB;
-							wr++;
-							mtfFreq[BZip2Constants.RUNB]++;
-							break;
-					}
-					if (zPend < 2) {
-						break;
-					}
-					zPend = (zPend - 2) / 2;
-				}
-			}
-			
-			szptr[wr] = (short)EOB;
-			wr++;
-			mtfFreq[EOB]++;
-			
-			nMTF = wr;
-		}
-	}
-}
-
-/* This file was derived from a file containing under this license:
- * 
- * This file is a part of bzip2 and/or libbzip2, a program and
- * library for lossless, block-sorting data compression.
- * 
- * Copyright (C) 1996-1998 Julian R Seward.  All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 
- * 2. The origin of this software must not be misrepresented; you must 
- * not claim that you wrote the original software.  If you use this 
- * software in a product, an acknowledgment in the product 
- * documentation would be appreciated but is not required.
- * 
- * 3. Altered source versions must be plainly marked as such, and must
- * not be misrepresented as being the original software.
- * 
- * 4. The name of the author may not be used to endorse or promote 
- * products derived from this software without specific prior written 
- * permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * 
- * Java version ported by Keiron Liddle, Aftex Software <keiron@aftexsw.com> 1999-2001
- */
+// BZip2OutputStream.cs
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Checksums;
+
+namespace ICSharpCode.SharpZipLib.BZip2 
+{
+	
+	// TODO: Update to BZip2 1.0.1, 1.0.2
+	
+	/// <summary>
+	/// An output stream that compresses into the BZip2 format 
+	/// including file header chars into another stream.
+	/// </summary>
+	public class BZip2OutputStream : Stream
+	{
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports reading
+		/// </summary>
+		public override bool CanRead {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports seeking
+		/// </summary>
+		public override bool CanSeek {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports writing
+		/// </summary>
+		public override bool CanWrite {
+			get {
+				return baseStream.CanWrite;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the length in bytes of the stream
+		/// </summary>
+		public override long Length {
+			get {
+				return baseStream.Length;
+			}
+		}
+		
+		/// <summary>
+		/// Gets or sets the current position of this stream.
+		/// </summary>
+		public override long Position {
+			get {
+				return baseStream.Position;
+			}
+			set {
+				throw new NotSupportedException("BZip2OutputStream position cannot be set");
+			}
+		}
+		
+		/// <summary>
+		/// Sets the current position of this stream to the given value.
+		/// </summary>
+		public override long Seek(long offset, SeekOrigin origin)
+		{
+			throw new NotSupportedException("BZip2OutputStream Seek not supported");
+		}
+		
+		/// <summary>
+		/// Sets the length of this stream to the given value.
+		/// </summary>
+		public override void SetLength(long val)
+		{
+			throw new NotSupportedException("BZip2OutputStream SetLength not supported");
+		}
+		
+		/// <summary>
+		/// Read a byte from the stream advancing the position.
+		/// </summary>
+		public override int ReadByte()
+		{
+			throw new NotSupportedException("BZip2OutputStream ReadByte not supported");
+		}
+		
+		/// <summary>
+		/// Read a block of bytes
+		/// </summary>
+		public override int Read(byte[] b, int off, int len)
+		{
+			throw new NotSupportedException("BZip2OutputStream Read not supported");
+		}
+		
+		/// <summary>
+		/// Write a block of bytes to the stream
+		/// </summary>
+		public override void Write(byte[] buf, int off, int len)
+		{
+			for (int i = 0; i < len; ++i) {
+				WriteByte(buf[off + i]);
+			}
+		}
+		
+		readonly static int SETMASK       = (1 << 21);
+		readonly static int CLEARMASK     = (~SETMASK);
+		readonly static int GREATER_ICOST = 15;
+		readonly static int LESSER_ICOST  = 0;
+		readonly static int SMALL_THRESH  = 20;
+		readonly static int DEPTH_THRESH  = 10;
+		
+		/*--
+		If you are ever unlucky/improbable enough
+		to get a stack overflow whilst sorting,
+		increase the following constant and try
+		again.  In practice I have never seen the
+		stack go above 27 elems, so the following
+		limit seems very generous.
+		--*/
+		readonly static int QSORT_STACK_SIZE = 1000;
+		
+		static void Panic() 
+		{
+			throw new BZip2Exception("BZip2 output stream panic");
+		}
+		
+		void MakeMaps() 
+		{
+			int i;
+			nInUse = 0;
+			for (i = 0; i < 256; i++) {
+				if (inUse[i]) {
+					seqToUnseq[nInUse] = (char)i;
+					unseqToSeq[i] = (char)nInUse;
+					nInUse++;
+				}
+			}
+		}
+		
+		static void HbMakeCodeLengths(char[] len, int[] freq, int alphaSize, int maxLen) 
+		{
+			/*--
+			Nodes and heap entries run from 1.  Entry 0
+			for both the heap and nodes is a sentinel.
+			--*/
+			int nNodes, nHeap, n1, n2, j, k;
+			bool  tooLong;
+			
+			int[] heap   = new int[BZip2Constants.MAX_ALPHA_SIZE + 2];
+			int[] weight = new int[BZip2Constants.MAX_ALPHA_SIZE * 2];
+			int[] parent = new int[BZip2Constants.MAX_ALPHA_SIZE * 2];
+			
+			for (int i = 0; i < alphaSize; ++i) {
+				weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
+			}
+			
+			while (true) {
+				nNodes = alphaSize;
+				nHeap = 0;
+				
+				heap[0] = 0;
+				weight[0] = 0;
+				parent[0] = -2;
+				
+				for (int i = 1; i <= alphaSize; ++i) {
+					parent[i] = -1;
+					nHeap++;
+					heap[nHeap] = i;
+					int zz = nHeap;
+					int tmp = heap[zz];
+					while (weight[tmp] < weight[heap[zz >> 1]]) {
+						heap[zz] = heap[zz >> 1];
+						zz >>= 1;
+					}
+					heap[zz] = tmp;
+				}
+				if (!(nHeap < (BZip2Constants.MAX_ALPHA_SIZE+2))) {
+					Panic();
+				}
+				
+				while (nHeap > 1) {
+					n1 = heap[1];
+					heap[1] = heap[nHeap];
+					nHeap--;
+					int zz = 1;
+					int yy = 0;
+					int tmp = heap[zz];
+					while (true) {
+						yy = zz << 1;
+						if (yy > nHeap) {
+							break;
+						}
+						if (yy < nHeap &&  weight[heap[yy+1]] < weight[heap[yy]]) {
+							yy++;
+						}
+						if (weight[tmp] < weight[heap[yy]]) {
+							break;
+						}
+						
+						heap[zz] = heap[yy];
+						zz = yy;
+					}
+					heap[zz] = tmp;
+					n2 = heap[1];
+					heap[1] = heap[nHeap];
+					nHeap--;
+					
+					zz = 1;
+					yy = 0;
+					tmp = heap[zz];
+					while (true) {
+						yy = zz << 1;
+						if (yy > nHeap) {
+							break;
+						}
+						if (yy < nHeap && weight[heap[yy+1]] < weight[heap[yy]]) {
+							yy++;
+						}
+						if (weight[tmp] < weight[heap[yy]]) {
+							break;
+						}
+						heap[zz] = heap[yy];
+						zz = yy;
+					}
+					heap[zz] = tmp;
+					nNodes++;
+					parent[n1] = parent[n2] = nNodes;
+					
+					weight[nNodes] = (int)((weight[n1] & 0xffffff00) + (weight[n2] & 0xffffff00)) | 
+					                 (int)(1 + (((weight[n1] & 0x000000ff) > (weight[n2] & 0x000000ff)) ? (weight[n1] & 0x000000ff) : (weight[n2] & 0x000000ff)));
+					
+					parent[nNodes] = -1;
+					nHeap++;
+					heap[nHeap] = nNodes;
+					
+					zz  = nHeap;
+					tmp = heap[zz];
+					while (weight[tmp] < weight[heap[zz >> 1]]) {
+						heap[zz] = heap[zz >> 1];
+						zz >>= 1;
+					}
+					heap[zz] = tmp;
+				}
+				if (!(nNodes < (BZip2Constants.MAX_ALPHA_SIZE * 2))) {
+					Panic();
+				}
+				
+				tooLong = false;
+				for (int i = 1; i <= alphaSize; ++i) {
+					j = 0;
+					k = i;
+					while (parent[k] >= 0) {
+						k = parent[k];
+						j++;
+					}
+					len[i - 1] = (char)j;
+					if (j > maxLen) {
+						tooLong = true;
+					}
+				}
+				
+				if (!tooLong) {
+					break;
+				}
+				
+				for (int i = 1; i < alphaSize; ++i) {
+					j = weight[i] >> 8;
+					j = 1 + (j / 2);
+					weight[i] = j << 8;
+				}
+			}
+		}
+		
+		/*--
+		index of the last char in the block, so
+		the block size == last + 1.
+		--*/
+		int last;
+		
+		/*--
+		index in zptr[] of original string after sorting.
+		--*/
+		int origPtr;
+		
+		/*--
+		always: in the range 0 .. 9.
+		The current block size is 100000 * this number.
+		--*/
+		int blockSize100k;
+		
+		bool blockRandomised;
+		
+		int bytesOut;
+		int bsBuff;
+		int bsLive;
+		IChecksum mCrc = new StrangeCRC();
+		
+		bool[] inUse = new bool[256];
+		int nInUse;
+		
+		char[] seqToUnseq = new char[256];
+		char[] unseqToSeq = new char[256];
+		
+		char[] selector = new char[BZip2Constants.MAX_SELECTORS];
+		char[] selectorMtf = new char[BZip2Constants.MAX_SELECTORS];
+		
+		byte[]  block;
+		int[]   quadrant;
+		int[]   zptr;
+		short[] szptr;
+		int[]   ftab;
+		
+		int nMTF;
+		
+		int[] mtfFreq = new int[BZip2Constants.MAX_ALPHA_SIZE];
+		
+		/*
+		* Used when sorting.  If too many long comparisons
+		* happen, we stop sorting, randomise the block
+		* slightly, and try again.
+		*/
+		int workFactor;
+		int workDone;
+		int workLimit;
+		bool firstAttempt;
+		int nBlocksRandomised;
+		
+		int currentChar = -1;
+		int runLength = 0;
+		
+		/// <summary>
+		/// Construct a default output stream with maximum block size
+		/// </summary>
+		/// <param name="stream">The stream to write BZip data onto.</param>
+		public BZip2OutputStream(Stream stream) : this(stream, 9)
+		{
+		}
+		
+		/// <summary>
+		/// Initialise a new instance of the <see cref="BZip2OutputStream"></see> 
+		/// for the specified stream, using the given blocksize.
+		/// </summary>
+		/// <param name="stream">The stream to write compressed data to.</param>
+		/// <param name="blockSize">The block size to use.</param>
+		/// <remarks>
+		/// Valid block sizes are in the range 1..9, with 1 giving 
+		/// the lowest compression and 9 the highest.
+		/// </remarks>
+		public BZip2OutputStream(Stream stream, int blockSize)
+		{
+			block    = null;
+			quadrant = null;
+			zptr     = null;
+			ftab     = null;
+			
+			BsSetStream(stream);
+			
+			workFactor = 50;
+			if (blockSize > 9) {
+				blockSize = 9;
+			}
+			if (blockSize < 1) {
+				blockSize = 1;
+			}
+			blockSize100k = blockSize;
+			AllocateCompressStructures();
+			Initialize();
+			InitBlock();
+		}
+		
+		/// <summary>
+		/// Write a byte to the stream.
+		/// </summary>
+		public override void WriteByte(byte bv)
+		{
+			int b = (256 + bv) % 256;
+			if (currentChar != -1) {
+				if (currentChar == b) {
+					runLength++;
+					if (runLength > 254) {
+						WriteRun();
+						currentChar = -1;
+						runLength = 0;
+					}
+				} else {
+					WriteRun();
+					runLength = 1;
+					currentChar = b;
+				}
+			} else {
+				currentChar = b;
+				runLength++;
+			}
+		}
+		
+		void WriteRun()
+		{
+			if (last < allowableBlockSize) {
+				inUse[currentChar] = true;
+				for (int i = 0; i < runLength; i++) {
+					mCrc.Update(currentChar);
+				}
+				
+				switch (runLength) {
+					case 1:
+						last++;
+						block[last + 1] = (byte)currentChar;
+						break;
+					case 2:
+						last++;
+						block[last + 1] = (byte)currentChar;
+						last++;
+						block[last + 1] = (byte)currentChar;
+						break;
+					case 3:
+						last++;
+						block[last + 1] = (byte)currentChar;
+						last++;
+						block[last + 1] = (byte)currentChar;
+						last++;
+						block[last + 1] = (byte)currentChar;
+						break;
+					default:
+						inUse[runLength - 4] = true;
+						last++;
+						block[last + 1] = (byte)currentChar;
+						last++;
+						block[last + 1] = (byte)currentChar;
+						last++;
+						block[last + 1] = (byte)currentChar;
+						last++;
+						block[last + 1] = (byte)currentChar;
+						last++;
+						block[last + 1] = (byte)(runLength - 4);
+						break;
+				}
+			} else {
+				EndBlock();
+				InitBlock();
+				WriteRun();
+			}
+		}
+		
+		bool closed = false;
+		
+		/// <summary>
+		/// Free any resources and other cleanup before garbage collection reclaims memory
+		/// </summary>
+		~BZip2OutputStream()
+		{
+			Close();
+		}
+		
+		/// <summary>
+		/// End the current block and end compression.
+		/// Close the stream and free any resources
+		/// </summary>
+		public override void Close()
+		{
+			if (!closed) {
+				closed = true;
+			
+				if (runLength > 0) {
+					WriteRun();
+				}
+			
+				currentChar = -1;
+				EndBlock();
+				EndCompression();
+				Flush();
+				baseStream.Close();
+			}
+		}
+
+		/// <summary>
+		/// Flush output buffers
+		/// </summary>		
+		public override void Flush()
+		{
+			baseStream.Flush();
+		}
+		
+		uint blockCRC, combinedCRC;
+		
+		void Initialize()
+		{
+			bytesOut = 0;
+			nBlocksRandomised = 0;
+			
+			/*--- Write `magic' bytes h indicating file-format == huffmanised,
+			followed by a digit indicating blockSize100k.
+			---*/
+			
+			// TODO  adding header here should be optional?
+			BsPutUChar('B');
+			BsPutUChar('Z');
+			
+			BsPutUChar('h');
+			BsPutUChar('0' + blockSize100k);
+			
+			combinedCRC = 0;
+		}
+		
+		int allowableBlockSize;
+		
+		void InitBlock() 
+		{
+			//		blockNo++;
+			mCrc.Reset();
+			last = -1;
+			//		ch = 0;
+			
+			for (int i = 0; i < 256; i++) {
+				inUse[i] = false;
+			}
+			
+			/*--- 20 is just a paranoia constant ---*/
+			allowableBlockSize = BZip2Constants.baseBlockSize * blockSize100k - 20;
+		}
+		
+		void EndBlock()
+		{
+			if (last < 0) {       // dont do anything for empty files, (makes empty files compatible with original Bzip)
+				return;
+			}
+			
+			blockCRC = (uint)mCrc.Value;
+			combinedCRC = (combinedCRC << 1) | (combinedCRC >> 31);
+			combinedCRC ^= blockCRC;
+			
+			/*-- sort the block and establish posn of original string --*/
+			DoReversibleTransformation();
+			
+			/*--
+			A 6-byte block header, the value chosen arbitrarily
+			as 0x314159265359 :-).  A 32 bit value does not really
+			give a strong enough guarantee that the value will not
+			appear by chance in the compressed datastream.  Worst-case
+			probability of this event, for a 900k block, is about
+			2.0e-3 for 32 bits, 1.0e-5 for 40 bits and 4.0e-8 for 48 bits.
+			For a compressed file of size 100Gb -- about 100000 blocks --
+			only a 48-bit marker will do.  NB: normal compression/
+			decompression do *not* rely on these statistical properties.
+			They are only important when trying to recover blocks from
+			damaged files.
+			--*/
+			BsPutUChar(0x31);
+			BsPutUChar(0x41);
+			BsPutUChar(0x59);
+			BsPutUChar(0x26);
+			BsPutUChar(0x53);
+			BsPutUChar(0x59);
+			
+			/*-- Now the block's CRC, so it is in a known place. --*/
+			BsPutint((int)blockCRC);
+			
+			/*-- Now a single bit indicating randomisation. --*/
+			if (blockRandomised) {
+				BsW(1,1);
+				nBlocksRandomised++;
+			} else {
+				BsW(1,0);
+			}
+			
+			/*-- Finally, block's contents proper. --*/
+			MoveToFrontCodeAndSend();
+		}
+		
+		void EndCompression()
+		{
+			/*--
+			Now another magic 48-bit number, 0x177245385090, to
+			indicate the end of the last block.  (sqrt(pi), if
+			you want to know.  I did want to use e, but it contains
+			too much repetition -- 27 18 28 18 28 46 -- for me
+			to feel statistically comfortable.  Call me paranoid.)
+			--*/
+			BsPutUChar(0x17);
+			BsPutUChar(0x72);
+			BsPutUChar(0x45);
+			BsPutUChar(0x38);
+			BsPutUChar(0x50);
+			BsPutUChar(0x90);
+			
+			BsPutint((int)combinedCRC);
+			
+			BsFinishedWithStream();
+		}
+		
+		void HbAssignCodes (int[] code, char[] length, int minLen, int maxLen, int alphaSize) 
+		{
+			int vec = 0;
+			for (int n = minLen; n <= maxLen; ++n) {
+				for (int i = 0; i < alphaSize; ++i) {
+					if (length[i] == n) {
+						code[i] = vec;
+						++vec;
+					}
+				}
+				vec <<= 1;
+			}
+		}
+		
+		void BsSetStream(Stream f) 
+		{
+			baseStream = f;
+			bsLive = 0;
+			bsBuff = 0;
+			bytesOut = 0;
+		}
+		
+		void BsFinishedWithStream()
+		{
+			while (bsLive > 0) 
+			{
+				int ch = (bsBuff >> 24);
+				baseStream.WriteByte((byte)ch); // write 8-bit
+				bsBuff <<= 8;
+				bsLive -= 8;
+				bytesOut++;
+			}
+		}
+		
+		void BsW(int n, int v)
+		{
+			while (bsLive >= 8) {
+				int ch = (bsBuff >> 24);
+				baseStream.WriteByte((byte)ch); // write 8-bit
+				bsBuff <<= 8;
+				bsLive -= 8;
+				++bytesOut;
+			}
+			bsBuff |= (v << (32 - bsLive - n));
+			bsLive += n;
+		}
+		
+		void BsPutUChar(int c)
+		{
+			BsW(8, c);
+		}
+		
+		void BsPutint(int u)
+		{
+			BsW(8, (u >> 24) & 0xFF);
+			BsW(8, (u >> 16) & 0xFF);
+			BsW(8, (u >>  8) & 0xFF);
+			BsW(8,  u        & 0xFF);
+		}
+		
+		void BsPutIntVS(int numBits, int c)
+		{
+			BsW(numBits, c);
+		}
+		
+		void SendMTFValues()
+		{
+			char[][] len = new char[BZip2Constants.N_GROUPS][];
+			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
+				len[i] = new char[BZip2Constants.MAX_ALPHA_SIZE];
+			}
+			
+			int gs, ge, totc, bt, bc, iter;
+			int nSelectors = 0, alphaSize, minLen, maxLen, selCtr;
+			int nGroups, nBytes;
+			
+			alphaSize = nInUse + 2;
+			for (int t = 0; t < BZip2Constants.N_GROUPS; t++) {
+				for (int v = 0; v < alphaSize; v++) {
+					len[t][v] = (char)GREATER_ICOST;
+				}
+			}
+			
+			/*--- Decide how many coding tables to use ---*/
+			if (nMTF <= 0) {
+				Panic();
+			}
+			
+			if (nMTF < 200) {
+				nGroups = 2;
+			} else if (nMTF < 600) {
+				nGroups = 3;
+			} else if (nMTF < 1200) {
+				nGroups = 4;
+			} else if (nMTF < 2400) {
+				nGroups = 5;
+			} else {
+				nGroups = 6;
+			}
+			
+			/*--- Generate an initial set of coding tables ---*/ 
+			int nPart = nGroups;
+			int remF  = nMTF;
+			gs = 0;
+			while (nPart > 0) {
+				int tFreq = remF / nPart;
+				int aFreq = 0;
+				ge = gs - 1;
+				while (aFreq < tFreq && ge < alphaSize - 1) {
+					ge++;
+					aFreq += mtfFreq[ge];
+				}
+				
+				if (ge > gs && nPart != nGroups && nPart != 1 && ((nGroups - nPart) % 2 == 1)) {
+					aFreq -= mtfFreq[ge];
+					ge--;
+				}
+				
+				for (int v = 0; v < alphaSize; v++) {
+					if (v >= gs && v <= ge) {
+						len[nPart - 1][v] = (char)LESSER_ICOST;
+					} else {
+						len[nPart - 1][v] = (char)GREATER_ICOST;
+					}
+				}
+				
+				nPart--;
+				gs = ge + 1;
+				remF -= aFreq;
+			}
+			
+			int[][] rfreq = new int[BZip2Constants.N_GROUPS][];
+			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
+				rfreq[i] = new int[BZip2Constants.MAX_ALPHA_SIZE];
+			}
+			
+			int[]   fave = new int[BZip2Constants.N_GROUPS];
+			short[] cost = new short[BZip2Constants.N_GROUPS];
+			/*---
+			Iterate up to N_ITERS times to improve the tables.
+			---*/
+			for (iter = 0; iter < BZip2Constants.N_ITERS; ++iter) {
+				for (int t = 0; t < nGroups; ++t) {
+					fave[t] = 0;
+				}
+				
+				for (int t = 0; t < nGroups; ++t) {
+					for (int v = 0; v < alphaSize; ++v) {
+						rfreq[t][v] = 0;
+					}
+				}
+				
+				nSelectors = 0;
+				totc = 0;
+				gs   = 0;
+				while (true) {
+					/*--- Set group start & end marks. --*/
+					if (gs >= nMTF) {
+						break;
+					}
+					ge = gs + BZip2Constants.G_SIZE - 1;
+					if (ge >= nMTF) {
+						ge = nMTF - 1;
+					}
+					
+					/*--
+					Calculate the cost of this group as coded
+					by each of the coding tables.
+					--*/
+					for (int t = 0; t < nGroups; t++) {
+						cost[t] = 0;
+					}
+					
+					if (nGroups == 6) {
+						short cost0, cost1, cost2, cost3, cost4, cost5;
+						cost0 = cost1 = cost2 = cost3 = cost4 = cost5 = 0;
+						for (int i = gs; i <= ge; ++i) {
+							short icv = szptr[i];
+							cost0 += (short)len[0][icv];
+							cost1 += (short)len[1][icv];
+							cost2 += (short)len[2][icv];
+							cost3 += (short)len[3][icv];
+							cost4 += (short)len[4][icv];
+							cost5 += (short)len[5][icv];
+						}
+						cost[0] = cost0;
+						cost[1] = cost1;
+						cost[2] = cost2;
+						cost[3] = cost3;
+						cost[4] = cost4;
+						cost[5] = cost5;
+					} else {
+						for (int i = gs; i <= ge; ++i) {
+							short icv = szptr[i];
+							for (int t = 0; t < nGroups; t++) {
+								cost[t] += (short)len[t][icv];
+							}
+						}
+					}
+					
+					/*--
+					Find the coding table which is best for this group,
+					and record its identity in the selector table.
+					--*/
+					bc = 999999999;
+					bt = -1;
+					for (int t = 0; t < nGroups; ++t) {
+						if (cost[t] < bc) {
+							bc = cost[t];
+							bt = t;
+						}
+					}
+					totc += bc;
+					fave[bt]++;
+					selector[nSelectors] = (char)bt;
+					nSelectors++;
+					
+					/*--
+					Increment the symbol frequencies for the selected table.
+					--*/
+					for (int i = gs; i <= ge; ++i) {
+						++rfreq[bt][szptr[i]];
+					}
+					
+					gs = ge+1;
+				}
+				
+				/*--
+				Recompute the tables based on the accumulated frequencies.
+				--*/
+				for (int t = 0; t < nGroups; ++t) {
+					HbMakeCodeLengths(len[t], rfreq[t], alphaSize, 20);
+				}
+			}
+			
+			rfreq = null;
+			fave = null;
+			cost = null;
+			
+			if (!(nGroups < 8)) {
+				Panic();
+			}
+			if (!(nSelectors < 32768 && nSelectors <= (2 + (900000 / BZip2Constants.G_SIZE)))) {
+				Panic();
+			}
+			
+			/*--- Compute MTF values for the selectors. ---*/
+			char[] pos = new char[BZip2Constants.N_GROUPS];
+			char ll_i, tmp2, tmp;
+			for (int i = 0; i < nGroups; i++) {
+				pos[i] = (char)i;
+			}
+			for (int i = 0; i < nSelectors; i++) {
+				ll_i = selector[i];
+				int j = 0;
+				tmp = pos[j];
+				while (ll_i != tmp) {
+					j++;
+					tmp2 = tmp;
+					tmp = pos[j];
+					pos[j] = tmp2;
+				}
+				pos[0] = tmp;
+				selectorMtf[i] = (char)j;
+			}
+			
+			int[][] code = new int[BZip2Constants.N_GROUPS][];
+			
+			for (int i = 0; i < BZip2Constants.N_GROUPS; ++i) {
+				code[i] = new int[BZip2Constants.MAX_ALPHA_SIZE];
+			}
+			
+			/*--- Assign actual codes for the tables. --*/
+			for (int t = 0; t < nGroups; t++) {
+				minLen = 32;
+				maxLen = 0;
+				for (int i = 0; i < alphaSize; i++) {
+					if (len[t][i] > maxLen) {
+						maxLen = len[t][i];
+					}
+					if (len[t][i] < minLen) {
+						minLen = len[t][i];
+					}
+				}
+				if (maxLen > 20) {
+					Panic();
+				}
+				if (minLen < 1) {
+					Panic();
+				}
+				HbAssignCodes(code[t], len[t], minLen, maxLen, alphaSize);
+			}
+			
+			/*--- Transmit the mapping table. ---*/
+			bool[] inUse16 = new bool[16];
+			for (int i = 0; i < 16; ++i) {
+				inUse16[i] = false;
+				for (int j = 0; j < 16; ++j) {
+					if (inUse[i * 16 + j]) {
+						inUse16[i] = true; 
+					}
+				}
+			}
+			
+			nBytes = bytesOut;
+			for (int i = 0; i < 16; ++i) {
+				if (inUse16[i]) {
+					BsW(1,1);
+				} else {
+					BsW(1,0);
+				}
+			}
+			
+			for (int i = 0; i < 16; ++i) {
+				if (inUse16[i]) {
+					for (int j = 0; j < 16; ++j) {
+						if (inUse[i * 16 + j]) {
+							BsW(1,1);
+						} else {
+							BsW(1,0);
+						}
+					}
+				}
+			}
+			
+			/*--- Now the selectors. ---*/
+			nBytes = bytesOut;
+			BsW(3, nGroups);
+			BsW(15, nSelectors);
+			for (int i = 0; i < nSelectors; ++i) {
+				for (int j = 0; j < selectorMtf[i]; ++j) {
+					BsW(1,1);
+				}
+				BsW(1,0);
+			}
+			
+			/*--- Now the coding tables. ---*/
+			nBytes = bytesOut;
+			
+			for (int t = 0; t < nGroups; ++t) {
+				int curr = len[t][0];
+				BsW(5, curr);
+				for (int i = 0; i < alphaSize; ++i) {
+					while (curr < len[t][i]) {
+						BsW(2, 2);
+						curr++; /* 10 */
+					}
+					while (curr > len[t][i]) {
+						BsW(2, 3);
+						curr--; /* 11 */
+					}
+					BsW (1, 0);
+				}
+			}
+			
+			/*--- And finally, the block data proper ---*/
+			nBytes = bytesOut;
+			selCtr = 0;
+			gs = 0;
+			while (true) {
+				if (gs >= nMTF) {
+					break;
+				}
+				ge = gs + BZip2Constants.G_SIZE - 1;
+				if (ge >= nMTF) {
+					ge = nMTF - 1;
+				}
+				
+				for (int i = gs; i <= ge; i++) {
+					BsW(len[selector[selCtr]][szptr[i]], code[selector[selCtr]][szptr[i]]);
+				}
+				
+				gs = ge + 1;
+				++selCtr;
+			}
+			if (!(selCtr == nSelectors)) {
+				Panic();
+			}
+		}
+		
+		void MoveToFrontCodeAndSend () 
+		{
+			BsPutIntVS(24, origPtr);
+			GenerateMTFValues();
+			SendMTFValues();
+		}
+		
+		Stream baseStream;
+		
+		void SimpleSort(int lo, int hi, int d) 
+		{
+			int i, j, h, bigN, hp;
+			int v;
+			
+			bigN = hi - lo + 1;
+			if (bigN < 2) {
+				return;
+			}
+			
+			hp = 0;
+			while (incs[hp] < bigN) {
+				hp++;
+			}
+			hp--;
+			
+			for (; hp >= 0; hp--) {
+				h = incs[hp];
+				
+				i = lo + h;
+				while (true) {
+					/*-- copy 1 --*/
+					if (i > hi)
+						break;
+					v = zptr[i];
+					j = i;
+					while (FullGtU(zptr[j-h]+d, v+d)) {
+						zptr[j] = zptr[j-h];
+						j = j - h;
+						if (j <= (lo + h - 1))
+							break;
+					}
+					zptr[j] = v;
+					i++;
+					
+					/*-- copy 2 --*/
+					if (i > hi) {
+						break;
+					}
+					v = zptr[i];
+					j = i;
+					while (FullGtU ( zptr[j-h]+d, v+d )) {
+						zptr[j] = zptr[j-h];
+						j = j - h;
+						if (j <= (lo + h - 1)) {
+							break;
+						}
+					}
+					zptr[j] = v;
+					i++;
+					
+					/*-- copy 3 --*/
+					if (i > hi) {
+						break;
+					}
+					v = zptr[i];
+					j = i;
+					while (FullGtU ( zptr[j-h]+d, v+d)) {
+						zptr[j] = zptr[j-h];
+						j = j - h;
+						if (j <= (lo + h - 1)) {
+							break;
+						}
+					}
+					zptr[j] = v;
+					i++;
+					
+					if (workDone > workLimit && firstAttempt) {
+						return;
+					}
+				}
+			}
+		}
+		
+		void Vswap(int p1, int p2, int n ) 
+		{
+			int temp = 0;
+			while (n > 0) {
+				temp = zptr[p1];
+				zptr[p1] = zptr[p2];
+				zptr[p2] = temp;
+				p1++;
+				p2++;
+				n--;
+			}
+		}
+		
+		byte Med3(byte a, byte b, byte c ) 
+		{
+			byte t;
+			if (a > b) {
+				t = a;
+				a = b;
+				b = t;
+			}
+			if (b > c) {
+				t = b;
+				b = c;
+				c = t;
+			}
+			if (a > b) {
+				b = a;
+			}
+			return b;
+		}
+		
+		class StackElem 
+		{
+			public int ll;
+			public int hh;
+			public int dd;
+		}
+		
+		void QSort3(int loSt, int hiSt, int dSt) 
+		{
+			int unLo, unHi, ltLo, gtHi, med, n, m;
+			int sp, lo, hi, d;
+			StackElem[] stack = new StackElem[QSORT_STACK_SIZE];
+			for (int count = 0; count < QSORT_STACK_SIZE; count++) {
+				stack[count] = new StackElem();
+			}
+			
+			sp = 0;
+			
+			stack[sp].ll = loSt;
+			stack[sp].hh = hiSt;
+			stack[sp].dd = dSt;
+			sp++;
+			
+			while (sp > 0) {
+				if (sp >= QSORT_STACK_SIZE) {
+					Panic();
+				}
+				
+				sp--;
+				lo = stack[sp].ll;
+				hi = stack[sp].hh;
+				d = stack[sp].dd;
+				
+				if (hi - lo < SMALL_THRESH || d > DEPTH_THRESH) {
+					SimpleSort(lo, hi, d);
+					if (workDone > workLimit && firstAttempt) {
+						return;
+					}
+					continue;
+				}
+				
+				med = Med3(block[zptr[lo] + d + 1],
+				           block[zptr[hi            ] + d  + 1],
+				           block[zptr[(lo + hi) >> 1] + d + 1]);
+				
+				unLo = ltLo = lo;
+				unHi = gtHi = hi;
+				
+				while (true) {
+					while (true) {
+						if (unLo > unHi) {
+							break;
+						}
+						n = ((int)block[zptr[unLo]+d + 1]) - med;
+						if (n == 0) {
+							int temp = 0;
+							temp = zptr[unLo];
+							zptr[unLo] = zptr[ltLo];
+							zptr[ltLo] = temp;
+							ltLo++;
+							unLo++;
+							continue;
+						}
+						if (n >  0) {
+							break;
+						}
+						unLo++;
+					}
+					while (true) {
+						if (unLo > unHi) {
+							break;
+						}
+						n = ((int)block[zptr[unHi]+d + 1]) - med;
+						if (n == 0) {
+							int temp = 0;
+							temp = zptr[unHi];
+							zptr[unHi] = zptr[gtHi];
+							zptr[gtHi] = temp;
+							gtHi--;
+							unHi--;
+							continue;
+						}
+						if (n <  0) {
+							break;
+						}
+						unHi--;
+					}
+					if (unLo > unHi) {
+						break;
+					}
+					{
+						int temp = zptr[unLo];
+						zptr[unLo] = zptr[unHi];
+						zptr[unHi] = temp;
+						unLo++;
+						unHi--;
+					}
+				}
+				
+				if (gtHi < ltLo) {
+					stack[sp].ll = lo;
+					stack[sp].hh = hi;
+					stack[sp].dd = d+1;
+					sp++;
+					continue;
+				}
+				
+				n = ((ltLo-lo) < (unLo-ltLo)) ? (ltLo-lo) : (unLo-ltLo);
+				Vswap(lo, unLo-n, n);
+				m = ((hi-gtHi) < (gtHi-unHi)) ? (hi-gtHi) : (gtHi-unHi);
+				Vswap(unLo, hi-m+1, m);
+				
+				n = lo + unLo - ltLo - 1;
+				m = hi - (gtHi - unHi) + 1;
+				
+				stack[sp].ll = lo;
+				stack[sp].hh = n;
+				stack[sp].dd = d;
+				sp++;
+				
+				stack[sp].ll = n + 1;
+				stack[sp].hh = m - 1;
+				stack[sp].dd = d+1;
+				sp++;
+				
+				stack[sp].ll = m;
+				stack[sp].hh = hi;
+				stack[sp].dd = d;
+				sp++;
+			}
+		}
+		
+		void MainSort() 
+		{
+			int i, j, ss, sb;
+			int[] runningOrder = new int[256];
+			int[] copy = new int[256];
+			bool[] bigDone = new bool[256];
+			int c1, c2;
+			int numQSorted;
+			
+			/*--
+			In the various block-sized structures, live data runs
+			from 0 to last+NUM_OVERSHOOT_BYTES inclusive.  First,
+			set up the overshoot area for block.
+			--*/
+			
+			//   if (verbosity >= 4) fprintf ( stderr, "        sort initialise ...\n" );
+			for (i = 0; i < BZip2Constants.NUM_OVERSHOOT_BYTES; i++) {
+				block[last + i + 2] = block[(i % (last + 1)) + 1];
+			}
+			for (i = 0; i <= last + BZip2Constants.NUM_OVERSHOOT_BYTES; i++) {
+				quadrant[i] = 0;
+			}
+			
+			block[0] = (byte)(block[last + 1]);
+			
+			if (last < 4000) {
+				/*--
+				Use simpleSort(), since the full sorting mechanism
+				has quite a large constant overhead.
+				--*/
+				for (i = 0; i <= last; i++) {
+					zptr[i] = i;
+				}
+				firstAttempt = false;
+				workDone = workLimit = 0;
+				SimpleSort(0, last, 0);
+			} else {
+				numQSorted = 0;
+				for (i = 0; i <= 255; i++) {
+					bigDone[i] = false;
+				}
+				for (i = 0; i <= 65536; i++) {
+					ftab[i] = 0;
+				}
+				
+				c1 = block[0];
+				for (i = 0; i <= last; i++) {
+					c2 = block[i + 1];
+					ftab[(c1 << 8) + c2]++;
+					c1 = c2;
+				}
+				
+				for (i = 1; i <= 65536; i++) {
+					ftab[i] += ftab[i - 1];
+				}
+				
+				c1 = block[1];
+				for (i = 0; i < last; i++) {
+					c2 = block[i + 2];
+					j = (c1 << 8) + c2;
+					c1 = c2;
+					ftab[j]--;
+					zptr[ftab[j]] = i;
+				}
+				
+				j = ((block[last + 1]) << 8) + (block[1]);
+				ftab[j]--;
+				zptr[ftab[j]] = last;
+				
+				/*--
+				Now ftab contains the first loc of every small bucket.
+				Calculate the running order, from smallest to largest
+				big bucket.
+				--*/
+				
+				for (i = 0; i <= 255; i++) {
+					runningOrder[i] = i;
+				}
+				
+				int vv;
+				int h = 1;
+				do {
+					h = 3 * h + 1;
+				} while (h <= 256);
+				do {
+					h = h / 3;
+					for (i = h; i <= 255; i++) {
+						vv = runningOrder[i];
+						j = i;
+						while ((ftab[((runningOrder[j-h])+1) << 8] - ftab[(runningOrder[j-h]) << 8]) > (ftab[((vv)+1) << 8] - ftab[(vv) << 8])) {
+							runningOrder[j] = runningOrder[j-h];
+							j = j - h;
+							if (j <= (h - 1)) {
+								break;
+							}
+						}
+						runningOrder[j] = vv;
+					}
+				} while (h != 1);
+				
+				/*--
+				The main sorting loop.
+				--*/
+				for (i = 0; i <= 255; i++) {
+					
+					/*--
+					Process big buckets, starting with the least full.
+					--*/
+					ss = runningOrder[i];
+					
+					/*--
+					Complete the big bucket [ss] by quicksorting
+					any unsorted small buckets [ss, j].  Hopefully
+					previous pointer-scanning phases have already
+					completed many of the small buckets [ss, j], so
+					we don't have to sort them at all.
+					--*/
+					for (j = 0; j <= 255; j++) {
+						sb = (ss << 8) + j;
+						if(!((ftab[sb] & SETMASK) == SETMASK)) {
+							int lo = ftab[sb] & CLEARMASK;
+							int hi = (ftab[sb+1] & CLEARMASK) - 1;
+							if (hi > lo) {
+								QSort3(lo, hi, 2);
+								numQSorted += (hi - lo + 1);
+								if (workDone > workLimit && firstAttempt) {
+									return;
+								}
+							}
+							ftab[sb] |= SETMASK;
+						}
+					}
+					
+					/*--
+					The ss big bucket is now done.  Record this fact,
+					and update the quadrant descriptors.  Remember to
+					update quadrants in the overshoot area too, if
+					necessary.  The "if (i < 255)" test merely skips
+					this updating for the last bucket processed, since
+					updating for the last bucket is pointless.
+					--*/
+					bigDone[ss] = true;
+					
+					if (i < 255) {
+						int bbStart  = ftab[ss << 8] & CLEARMASK;
+						int bbSize   = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
+						int shifts   = 0;
+						
+						while ((bbSize >> shifts) > 65534) {
+							shifts++;
+						}
+						
+						for (j = 0; j < bbSize; j++) {
+							int a2update = zptr[bbStart + j];
+							int qVal = (j >> shifts);
+							quadrant[a2update] = qVal;
+							if (a2update < BZip2Constants.NUM_OVERSHOOT_BYTES) {
+								quadrant[a2update + last + 1] = qVal;
+							}
+						}
+						
+						if (!(((bbSize-1) >> shifts) <= 65535)) {
+							Panic();
+						}
+					}
+					
+					/*--
+					Now scan this big bucket so as to synthesise the
+					sorted order for small buckets [t, ss] for all t != ss.
+					--*/
+					for (j = 0; j <= 255; j++) {
+						copy[j] = ftab[(j << 8) + ss] & CLEARMASK;
+					}
+					
+					for (j = ftab[ss << 8] & CLEARMASK; j < (ftab[(ss+1) << 8] & CLEARMASK); j++) {
+						c1 = block[zptr[j]];
+						if (!bigDone[c1]) {
+							zptr[copy[c1]] = zptr[j] == 0 ? last : zptr[j] - 1;
+							copy[c1] ++;
+						}
+					}
+					
+					for (j = 0; j <= 255; j++) {
+						ftab[(j << 8) + ss] |= SETMASK;
+					}
+				}
+			}
+		}
+		
+		void RandomiseBlock() 
+		{
+			int i;
+			int rNToGo = 0;
+			int rTPos  = 0;
+			for (i = 0; i < 256; i++) {
+				inUse[i] = false;
+			}
+			
+			for (i = 0; i <= last; i++) {
+				if (rNToGo == 0) {
+					rNToGo = (int)BZip2Constants.rNums[rTPos];
+					rTPos++;
+					if (rTPos == 512) {
+						rTPos = 0;
+					}
+				}
+				rNToGo--;
+				block[i + 1] ^= (byte)((rNToGo == 1) ? 1 : 0);
+				// handle 16 bit signed numbers
+				block[i + 1] &= 0xFF;
+				
+				inUse[block[i + 1]] = true;
+			}
+		}
+		
+		void DoReversibleTransformation() 
+		{
+			workLimit = workFactor * last;
+			workDone = 0;
+			blockRandomised = false;
+			firstAttempt = true;
+			
+			MainSort();
+			
+			if (workDone > workLimit && firstAttempt) {
+				RandomiseBlock();
+				workLimit = workDone = 0;
+				blockRandomised = true;
+				firstAttempt = false;
+				MainSort();
+			}
+			
+			origPtr = -1;
+			for (int i = 0; i <= last; i++) {
+				if (zptr[i] == 0) {
+					origPtr = i;
+					break;
+				}
+			}
+			
+			if (origPtr == -1) {
+				Panic();
+			}
+		}
+		
+		bool FullGtU(int i1, int i2) 
+		{
+			int k;
+			byte c1, c2;
+			int s1, s2;
+			
+			c1 = block[i1 + 1];
+			c2 = block[i2 + 1];
+			if (c1 != c2) {
+				return c1 > c2;
+			}
+			i1++;
+			i2++;
+			
+			c1 = block[i1 + 1];
+			c2 = block[i2 + 1];
+			if (c1 != c2) {
+				return c1 > c2;
+			}
+			i1++;
+			i2++;
+			
+			c1 = block[i1 + 1];
+			c2 = block[i2 + 1];
+			if (c1 != c2) {
+				return c1 > c2;
+			}
+			i1++;
+			i2++;
+			
+			c1 = block[i1 + 1];
+			c2 = block[i2 + 1];
+			if (c1 != c2) {
+				return c1 > c2;
+			}
+			i1++;
+			i2++;
+			
+			c1 = block[i1 + 1];
+			c2 = block[i2 + 1];
+			if (c1 != c2) {
+				return c1 > c2;
+			}
+			i1++;
+			i2++;
+			
+			c1 = block[i1 + 1];
+			c2 = block[i2 + 1];
+			if (c1 != c2) {
+				return c1 > c2;
+			}
+			i1++;
+			i2++;
+			
+			k = last + 1;
+			
+			do {
+				c1 = block[i1 + 1];
+				c2 = block[i2 + 1];
+				if (c1 != c2) {
+					return c1 > c2;
+				}
+				s1 = quadrant[i1];
+				s2 = quadrant[i2];
+				if (s1 != s2) {
+					return s1 > s2;
+				}
+				i1++;
+				i2++;
+				
+				c1 = block[i1 + 1];
+				c2 = block[i2 + 1];
+				if (c1 != c2) {
+					return c1 > c2;
+				}
+				s1 = quadrant[i1];
+				s2 = quadrant[i2];
+				if (s1 != s2) {
+					return s1 > s2;
+				}
+				i1++;
+				i2++;
+				
+				c1 = block[i1 + 1];
+				c2 = block[i2 + 1];
+				if (c1 != c2) {
+					return c1 > c2;
+				}
+				s1 = quadrant[i1];
+				s2 = quadrant[i2];
+				if (s1 != s2) {
+					return s1 > s2;
+				}
+				i1++;
+				i2++;
+				
+				c1 = block[i1 + 1];
+				c2 = block[i2 + 1];
+				if (c1 != c2) {
+					return c1 > c2;
+				}
+				s1 = quadrant[i1];
+				s2 = quadrant[i2];
+				if (s1 != s2) {
+					return s1 > s2;
+				}
+				i1++;
+				i2++;
+				
+				if (i1 > last) {
+					i1 -= last;
+					i1--;
+				}
+				if (i2 > last) {
+					i2 -= last;
+					i2--;
+				}
+				
+				k -= 4;
+				++workDone;
+			} while (k >= 0);
+			
+			return false;
+		}
+		
+		/*--
+		Knuth's increments seem to work better
+		than Incerpi-Sedgewick here.  Possibly
+		because the number of elems to sort is
+		usually small, typically <= 20.
+		--*/
+		readonly int[] incs = new int[] { 
+			1, 4, 13, 40, 121, 364, 1093, 3280,
+			9841, 29524, 88573, 265720,
+			797161, 2391484 
+		};
+		
+		void AllocateCompressStructures() 
+		{
+			int n = BZip2Constants.baseBlockSize * blockSize100k;
+			block = new byte[(n + 1 + BZip2Constants.NUM_OVERSHOOT_BYTES)];
+			quadrant = new int[(n + BZip2Constants.NUM_OVERSHOOT_BYTES)];
+			zptr = new int[n];
+			ftab = new int[65537];
+			
+			if (block == null || quadrant == null || zptr == null  || ftab == null) {
+				//		int totalDraw = (n + 1 + NUM_OVERSHOOT_BYTES) + (n + NUM_OVERSHOOT_BYTES) + n + 65537;
+				//		compressOutOfMemory ( totalDraw, n );
+			}
+			
+			/*
+			The back end needs a place to store the MTF values
+			whilst it calculates the coding tables.  We could
+			put them in the zptr array.  However, these values
+			will fit in a short, so we overlay szptr at the
+			start of zptr, in the hope of reducing the number
+			of cache misses induced by the multiple traversals
+			of the MTF values when calculating coding tables.
+			Seems to improve compression speed by about 1%.
+			*/
+			//	szptr = zptr;
+			
+			
+			szptr = new short[2 * n];
+		}
+		
+		void GenerateMTFValues() 
+		{
+			char[] yy = new char[256];
+			int  i, j;
+			char tmp;
+			char tmp2;
+			int zPend;
+			int wr;
+			int EOB;
+			
+			MakeMaps();
+			EOB = nInUse+1;
+			
+			for (i = 0; i <= EOB; i++) {
+				mtfFreq[i] = 0;
+			}
+			
+			wr = 0;
+			zPend = 0;
+			for (i = 0; i < nInUse; i++) {
+				yy[i] = (char) i;
+			}
+			
+			
+			for (i = 0; i <= last; i++) {
+				char ll_i;
+				
+				ll_i = unseqToSeq[block[zptr[i]]];
+				
+				j = 0;
+				tmp = yy[j];
+				while (ll_i != tmp) {
+					j++;
+					tmp2 = tmp;
+					tmp = yy[j];
+					yy[j] = tmp2;
+				}
+				yy[0] = tmp;
+				
+				if (j == 0) {
+					zPend++;
+				} else {
+					if (zPend > 0) {
+						zPend--;
+						while (true) {
+							switch (zPend % 2) {
+								case 0:
+									szptr[wr] = (short)BZip2Constants.RUNA;
+									wr++;
+									mtfFreq[BZip2Constants.RUNA]++;
+									break;
+								case 1:
+									szptr[wr] = (short)BZip2Constants.RUNB;
+									wr++;
+									mtfFreq[BZip2Constants.RUNB]++;
+									break;
+							}
+							if (zPend < 2) {
+								break;
+							}
+							zPend = (zPend - 2) / 2;
+						}
+						zPend = 0;
+					}
+					szptr[wr] = (short)(j + 1);
+					wr++;
+					mtfFreq[j + 1]++;
+				}
+			}
+			
+			if (zPend > 0) {
+				zPend--;
+				while (true) {
+					switch (zPend % 2) {
+						case 0:
+							szptr[wr] = (short)BZip2Constants.RUNA;
+							wr++;
+							mtfFreq[BZip2Constants.RUNA]++;
+							break;
+						case 1:
+							szptr[wr] = (short)BZip2Constants.RUNB;
+							wr++;
+							mtfFreq[BZip2Constants.RUNB]++;
+							break;
+					}
+					if (zPend < 2) {
+						break;
+					}
+					zPend = (zPend - 2) / 2;
+				}
+			}
+			
+			szptr[wr] = (short)EOB;
+			wr++;
+			mtfFreq[EOB]++;
+			
+			nMTF = wr;
+		}
+	}
+}
+
+/* This file was derived from a file containing under this license:
+ * 
+ * This file is a part of bzip2 and/or libbzip2, a program and
+ * library for lossless, block-sorting data compression.
+ * 
+ * Copyright (C) 1996-1998 Julian R Seward.  All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 
+ * 2. The origin of this software must not be misrepresented; you must 
+ * not claim that you wrote the original software.  If you use this 
+ * software in a product, an acknowledgment in the product 
+ * documentation would be appreciated but is not required.
+ * 
+ * 3. Altered source versions must be plainly marked as such, and must
+ * not be misrepresented as being the original software.
+ * 
+ * 4. The name of the author may not be used to endorse or promote 
+ * products derived from this software without specific prior written 
+ * permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 
+ * Java version ported by Keiron Liddle, Aftex Software <keiron@aftexsw.com> 1999-2001
+ */
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/Adler32.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/Adler32.cs
@@ -1,200 +1,200 @@
-// Adler32.cs - Computes Adler32 data checksum of a data stream
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Checksums 
-{
-	
-	/// <summary>
-	/// Computes Adler32 checksum for a stream of data. An Adler32
-	/// checksum is not as reliable as a CRC32 checksum, but a lot faster to
-	/// compute.
-	/// 
-	/// The specification for Adler32 may be found in RFC 1950.
-	/// ZLIB Compressed Data Format Specification version 3.3)
-	/// 
-	/// 
-	/// From that document:
-	/// 
-	///      "ADLER32 (Adler-32 checksum)
-	///       This contains a checksum value of the uncompressed data
-	///       (excluding any dictionary data) computed according to Adler-32
-	///       algorithm. This algorithm is a 32-bit extension and improvement
-	///       of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073
-	///       standard.
-	/// 
-	///       Adler-32 is composed of two sums accumulated per byte: s1 is
-	///       the sum of all bytes, s2 is the sum of all s1 values. Both sums
-	///       are done modulo 65521. s1 is initialized to 1, s2 to zero.  The
-	///       Adler-32 checksum is stored as s2*65536 + s1 in most-
-	///       significant-byte first (network) order."
-	/// 
-	///  "8.2. The Adler-32 algorithm
-	/// 
-	///    The Adler-32 algorithm is much faster than the CRC32 algorithm yet
-	///    still provides an extremely low probability of undetected errors.
-	/// 
-	///    The modulo on unsigned long accumulators can be delayed for 5552
-	///    bytes, so the modulo operation time is negligible.  If the bytes
-	///    are a, b, c, the second sum is 3a + 2b + c + 3, and so is position
-	///    and order sensitive, unlike the first sum, which is just a
-	///    checksum.  That 65521 is prime is important to avoid a possible
-	///    large class of two-byte errors that leave the check unchanged.
-	///    (The Fletcher checksum uses 255, which is not prime and which also
-	///    makes the Fletcher check insensitive to single byte changes 0 -
-	///    255.)
-	/// 
-	///    The sum s1 is initialized to 1 instead of zero to make the length
-	///    of the sequence part of s2, so that the length does not have to be
-	///    checked separately. (Any sequence of zeroes has a Fletcher
-	///    checksum of zero.)"
-	/// </summary>
-	/// <see cref="ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream"/>
-	/// <see cref="ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream"/>
-	public sealed class Adler32 : IChecksum
-	{
-		/// <summary>
-		/// largest prime smaller than 65536
-		/// </summary>
-		readonly static uint BASE = 65521;
-		
-		uint checksum;
-		
-		/// <summary>
-		/// Returns the Adler32 data checksum computed so far.
-		/// </summary>
-		public long Value {
-			get {
-				return checksum;
-			}
-		}
-		
-		/// <summary>
-		/// Creates a new instance of the Adler32 class.
-		/// The checksum starts off with a value of 1.
-		/// </summary>
-		public Adler32()
-		{
-			Reset();
-		}
-		
-		/// <summary>
-		/// Resets the Adler32 checksum to the initial value.
-		/// </summary>
-		public void Reset()
-		{
-			checksum = 1;
-		}
-		
-		/// <summary>
-		/// Updates the checksum with the byte b.
-		/// </summary>
-		/// <param name="bval">
-		/// The data value to add. The high byte of the int is ignored.
-		/// </param>
-		public void Update(int bval)
-		{
-			// We could make a length 1 byte array and call update again, but I
-			// would rather not have that overhead
-			uint s1 = checksum & 0xFFFF;
-			uint s2 = checksum >> 16;
-			
-			s1 = (s1 + ((uint)bval & 0xFF)) % BASE;
-			s2 = (s1 + s2) % BASE;
-			
-			checksum = (s2 << 16) + s1;
-		}
-		
-		/// <summary>
-		/// Updates the checksum with an array of bytes.
-		/// </summary>
-		/// <param name="buffer">
-		/// The source of the data to update with.
-		/// </param>
-		public void Update(byte[] buffer)
-		{
-			Update(buffer, 0, buffer.Length);
-		}
-		
-		/// <summary>
-		/// Updates the checksum with the bytes taken from the array.
-		/// </summary>
-		/// <param name="buf">
-		/// an array of bytes
-		/// </param>
-		/// <param name="off">
-		/// the start of the data used for this update
-		/// </param>
-		/// <param name="len">
-		/// the number of bytes to use for this update
-		/// </param>
-		public void Update(byte[] buf, int off, int len)
-		{
-			if (buf == null) {
-				throw new ArgumentNullException("buf");
-			}
-			
-			if (off < 0 || len < 0 || off + len > buf.Length) {
-				throw new ArgumentOutOfRangeException();
-			}
-			
-			//(By Per Bothner)
-			uint s1 = checksum & 0xFFFF;
-			uint s2 = checksum >> 16;
-			
-			while (len > 0) {
-				// We can defer the modulo operation:
-				// s1 maximally grows from 65521 to 65521 + 255 * 3800
-				// s2 maximally grows by 3800 * median(s1) = 2090079800 < 2^31
-				int n = 3800;
-				if (n > len) {
-					n = len;
-				}
-				len -= n;
-				while (--n >= 0) {
-					s1 = s1 + (uint)(buf[off++] & 0xFF);
-					s2 = s2 + s1;
-				}
-				s1 %= BASE;
-				s2 %= BASE;
-			}
-			
-			checksum = (s2 << 16) | s1;
-		}
-	}
-}
+// Adler32.cs - Computes Adler32 data checksum of a data stream
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Checksums 
+{
+	
+	/// <summary>
+	/// Computes Adler32 checksum for a stream of data. An Adler32
+	/// checksum is not as reliable as a CRC32 checksum, but a lot faster to
+	/// compute.
+	/// 
+	/// The specification for Adler32 may be found in RFC 1950.
+	/// ZLIB Compressed Data Format Specification version 3.3)
+	/// 
+	/// 
+	/// From that document:
+	/// 
+	///      "ADLER32 (Adler-32 checksum)
+	///       This contains a checksum value of the uncompressed data
+	///       (excluding any dictionary data) computed according to Adler-32
+	///       algorithm. This algorithm is a 32-bit extension and improvement
+	///       of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073
+	///       standard.
+	/// 
+	///       Adler-32 is composed of two sums accumulated per byte: s1 is
+	///       the sum of all bytes, s2 is the sum of all s1 values. Both sums
+	///       are done modulo 65521. s1 is initialized to 1, s2 to zero.  The
+	///       Adler-32 checksum is stored as s2*65536 + s1 in most-
+	///       significant-byte first (network) order."
+	/// 
+	///  "8.2. The Adler-32 algorithm
+	/// 
+	///    The Adler-32 algorithm is much faster than the CRC32 algorithm yet
+	///    still provides an extremely low probability of undetected errors.
+	/// 
+	///    The modulo on unsigned long accumulators can be delayed for 5552
+	///    bytes, so the modulo operation time is negligible.  If the bytes
+	///    are a, b, c, the second sum is 3a + 2b + c + 3, and so is position
+	///    and order sensitive, unlike the first sum, which is just a
+	///    checksum.  That 65521 is prime is important to avoid a possible
+	///    large class of two-byte errors that leave the check unchanged.
+	///    (The Fletcher checksum uses 255, which is not prime and which also
+	///    makes the Fletcher check insensitive to single byte changes 0 -
+	///    255.)
+	/// 
+	///    The sum s1 is initialized to 1 instead of zero to make the length
+	///    of the sequence part of s2, so that the length does not have to be
+	///    checked separately. (Any sequence of zeroes has a Fletcher
+	///    checksum of zero.)"
+	/// </summary>
+	/// <see cref="ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream"/>
+	/// <see cref="ICSharpCode.SharpZipLib.Zip.Compression.Streams.DeflaterOutputStream"/>
+	public sealed class Adler32 : IChecksum
+	{
+		/// <summary>
+		/// largest prime smaller than 65536
+		/// </summary>
+		readonly static uint BASE = 65521;
+		
+		uint checksum;
+		
+		/// <summary>
+		/// Returns the Adler32 data checksum computed so far.
+		/// </summary>
+		public long Value {
+			get {
+				return checksum;
+			}
+		}
+		
+		/// <summary>
+		/// Creates a new instance of the Adler32 class.
+		/// The checksum starts off with a value of 1.
+		/// </summary>
+		public Adler32()
+		{
+			Reset();
+		}
+		
+		/// <summary>
+		/// Resets the Adler32 checksum to the initial value.
+		/// </summary>
+		public void Reset()
+		{
+			checksum = 1;
+		}
+		
+		/// <summary>
+		/// Updates the checksum with the byte b.
+		/// </summary>
+		/// <param name="bval">
+		/// The data value to add. The high byte of the int is ignored.
+		/// </param>
+		public void Update(int bval)
+		{
+			// We could make a length 1 byte array and call update again, but I
+			// would rather not have that overhead
+			uint s1 = checksum & 0xFFFF;
+			uint s2 = checksum >> 16;
+			
+			s1 = (s1 + ((uint)bval & 0xFF)) % BASE;
+			s2 = (s1 + s2) % BASE;
+			
+			checksum = (s2 << 16) + s1;
+		}
+		
+		/// <summary>
+		/// Updates the checksum with an array of bytes.
+		/// </summary>
+		/// <param name="buffer">
+		/// The source of the data to update with.
+		/// </param>
+		public void Update(byte[] buffer)
+		{
+			Update(buffer, 0, buffer.Length);
+		}
+		
+		/// <summary>
+		/// Updates the checksum with the bytes taken from the array.
+		/// </summary>
+		/// <param name="buf">
+		/// an array of bytes
+		/// </param>
+		/// <param name="off">
+		/// the start of the data used for this update
+		/// </param>
+		/// <param name="len">
+		/// the number of bytes to use for this update
+		/// </param>
+		public void Update(byte[] buf, int off, int len)
+		{
+			if (buf == null) {
+				throw new ArgumentNullException("buf");
+			}
+			
+			if (off < 0 || len < 0 || off + len > buf.Length) {
+				throw new ArgumentOutOfRangeException();
+			}
+			
+			//(By Per Bothner)
+			uint s1 = checksum & 0xFFFF;
+			uint s2 = checksum >> 16;
+			
+			while (len > 0) {
+				// We can defer the modulo operation:
+				// s1 maximally grows from 65521 to 65521 + 255 * 3800
+				// s2 maximally grows by 3800 * median(s1) = 2090079800 < 2^31
+				int n = 3800;
+				if (n > len) {
+					n = len;
+				}
+				len -= n;
+				while (--n >= 0) {
+					s1 = s1 + (uint)(buf[off++] & 0xFF);
+					s2 = s2 + s1;
+				}
+				s1 %= BASE;
+				s2 %= BASE;
+			}
+			
+			checksum = (s2 << 16) | s1;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/CRC32.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/CRC32.cs
@@ -1,211 +1,211 @@
-// CRC32.cs - Computes CRC32 data checksum of a data stream
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Checksums 
-{
-	
-	/// <summary>
-	/// Generate a table for a byte-wise 32-bit CRC calculation on the polynomial:
-	/// x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
-	///
-	/// Polynomials over GF(2) are represented in binary, one bit per coefficient,
-	/// with the lowest powers in the most significant bit.  Then adding polynomials
-	/// is just exclusive-or, and multiplying a polynomial by x is a right shift by
-	/// one.  If we call the above polynomial p, and represent a byte as the
-	/// polynomial q, also with the lowest power in the most significant bit (so the
-	/// byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
-	/// where a mod b means the remainder after dividing a by b.
-	///
-	/// This calculation is done using the shift-register method of multiplying and
-	/// taking the remainder.  The register is initialized to zero, and for each
-	/// incoming bit, x^32 is added mod p to the register if the bit is a one (where
-	/// x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
-	/// x (which is shifting right by one and adding x^32 mod p if the bit shifted
-	/// out is a one).  We start with the highest power (least significant bit) of
-	/// q and repeat for all eight bits of q.
-	///
-	/// The table is simply the CRC of all possible eight bit values.  This is all
-	/// the information needed to generate CRC's on data a byte at a time for all
-	/// combinations of CRC register values and incoming bytes.
-	/// </summary>
-	public sealed class Crc32 : IChecksum
-	{
-		readonly static uint CrcSeed = 0xFFFFFFFF;
-		
-		readonly static uint[] CrcTable = new uint[] {
-			0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,
-			0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,
-			0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,
-			0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
-			0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,
-			0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,
-			0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,
-			0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
-			0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,
-			0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,
-			0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,
-			0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
-			0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,
-			0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,
-			0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,
-			0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
-			0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,
-			0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,
-			0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,
-			0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
-			0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,
-			0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,
-			0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,
-			0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
-			0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,
-			0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,
-			0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,
-			0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
-			0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,
-			0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,
-			0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,
-			0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
-			0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,
-			0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,
-			0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,
-			0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
-			0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,
-			0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,
-			0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,
-			0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
-			0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,
-			0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,
-			0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,
-			0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
-			0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,
-			0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,
-			0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,
-			0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
-			0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,
-			0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,
-			0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,
-			0x2D02EF8D
-		};
-		
-		internal static uint ComputeCrc32(uint oldCrc, byte bval)
-		{
-			return (uint)(Crc32.CrcTable[(oldCrc ^ bval) & 0xFF] ^ (oldCrc >> 8));
-		}
-		
-		/// <summary>
-		/// The crc data checksum so far.
-		/// </summary>
-		uint crc = 0;
-		
-		/// <summary>
-		/// Returns the CRC32 data checksum computed so far.
-		/// </summary>
-		public long Value {
-			get {
-				return (long)crc;
-			}
-			set {
-				crc = (uint)value;
-			}
-		}
-		
-		/// <summary>
-		/// Resets the CRC32 data checksum as if no update was ever called.
-		/// </summary>
-		public void Reset() 
-		{ 
-			crc = 0; 
-		}
-		
-		/// <summary>
-		/// Updates the checksum with the int bval.
-		/// </summary>
-		/// <param name = "bval">
-		/// the byte is taken as the lower 8 bits of bval
-		/// </param>
-		public void Update(int bval)
-		{
-			crc ^= CrcSeed;
-			crc  = CrcTable[(crc ^ bval) & 0xFF] ^ (crc >> 8);
-			crc ^= CrcSeed;
-		}
-		
-		/// <summary>
-		/// Updates the checksum with the bytes taken from the array.
-		/// </summary>
-		/// <param name="buffer">
-		/// buffer an array of bytes
-		/// </param>
-		public void Update(byte[] buffer)
-		{
-			Update(buffer, 0, buffer.Length);
-		}
-		
-		/// <summary>
-		/// Adds the byte array to the data checksum.
-		/// </summary>
-		/// <param name = "buf">
-		/// the buffer which contains the data
-		/// </param>
-		/// <param name = "off">
-		/// the offset in the buffer where the data starts
-		/// </param>
-		/// <param name = "len">
-		/// the length of the data
-		/// </param>
-		public void Update(byte[] buf, int off, int len)
-		{
-			if (buf == null) {
-				throw new ArgumentNullException("buf");
-			}
-			
-			if (off < 0 || len < 0 || off + len > buf.Length) {
-				throw new ArgumentOutOfRangeException();
-			}
-			
-			crc ^= CrcSeed;
-			
-			while (--len >= 0) {
-				crc = CrcTable[(crc ^ buf[off++]) & 0xFF] ^ (crc >> 8);
-			}
-			
-			crc ^= CrcSeed;
-		}
-	}
-}
+// CRC32.cs - Computes CRC32 data checksum of a data stream
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Checksums 
+{
+	
+	/// <summary>
+	/// Generate a table for a byte-wise 32-bit CRC calculation on the polynomial:
+	/// x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
+	///
+	/// Polynomials over GF(2) are represented in binary, one bit per coefficient,
+	/// with the lowest powers in the most significant bit.  Then adding polynomials
+	/// is just exclusive-or, and multiplying a polynomial by x is a right shift by
+	/// one.  If we call the above polynomial p, and represent a byte as the
+	/// polynomial q, also with the lowest power in the most significant bit (so the
+	/// byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+	/// where a mod b means the remainder after dividing a by b.
+	///
+	/// This calculation is done using the shift-register method of multiplying and
+	/// taking the remainder.  The register is initialized to zero, and for each
+	/// incoming bit, x^32 is added mod p to the register if the bit is a one (where
+	/// x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
+	/// x (which is shifting right by one and adding x^32 mod p if the bit shifted
+	/// out is a one).  We start with the highest power (least significant bit) of
+	/// q and repeat for all eight bits of q.
+	///
+	/// The table is simply the CRC of all possible eight bit values.  This is all
+	/// the information needed to generate CRC's on data a byte at a time for all
+	/// combinations of CRC register values and incoming bytes.
+	/// </summary>
+	public sealed class Crc32 : IChecksum
+	{
+		readonly static uint CrcSeed = 0xFFFFFFFF;
+		
+		readonly static uint[] CrcTable = new uint[] {
+			0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,
+			0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,
+			0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,
+			0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
+			0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,
+			0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,
+			0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,
+			0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
+			0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,
+			0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,
+			0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,
+			0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
+			0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,
+			0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,
+			0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,
+			0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
+			0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,
+			0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,
+			0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,
+			0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
+			0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,
+			0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,
+			0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,
+			0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
+			0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,
+			0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,
+			0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,
+			0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
+			0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,
+			0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,
+			0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,
+			0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
+			0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,
+			0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,
+			0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,
+			0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
+			0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,
+			0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,
+			0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,
+			0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
+			0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,
+			0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,
+			0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,
+			0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
+			0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,
+			0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,
+			0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,
+			0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
+			0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,
+			0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,
+			0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,
+			0x2D02EF8D
+		};
+		
+		internal static uint ComputeCrc32(uint oldCrc, byte bval)
+		{
+			return (uint)(Crc32.CrcTable[(oldCrc ^ bval) & 0xFF] ^ (oldCrc >> 8));
+		}
+		
+		/// <summary>
+		/// The crc data checksum so far.
+		/// </summary>
+		uint crc = 0;
+		
+		/// <summary>
+		/// Returns the CRC32 data checksum computed so far.
+		/// </summary>
+		public long Value {
+			get {
+				return (long)crc;
+			}
+			set {
+				crc = (uint)value;
+			}
+		}
+		
+		/// <summary>
+		/// Resets the CRC32 data checksum as if no update was ever called.
+		/// </summary>
+		public void Reset() 
+		{ 
+			crc = 0; 
+		}
+		
+		/// <summary>
+		/// Updates the checksum with the int bval.
+		/// </summary>
+		/// <param name = "bval">
+		/// the byte is taken as the lower 8 bits of bval
+		/// </param>
+		public void Update(int bval)
+		{
+			crc ^= CrcSeed;
+			crc  = CrcTable[(crc ^ bval) & 0xFF] ^ (crc >> 8);
+			crc ^= CrcSeed;
+		}
+		
+		/// <summary>
+		/// Updates the checksum with the bytes taken from the array.
+		/// </summary>
+		/// <param name="buffer">
+		/// buffer an array of bytes
+		/// </param>
+		public void Update(byte[] buffer)
+		{
+			Update(buffer, 0, buffer.Length);
+		}
+		
+		/// <summary>
+		/// Adds the byte array to the data checksum.
+		/// </summary>
+		/// <param name = "buf">
+		/// the buffer which contains the data
+		/// </param>
+		/// <param name = "off">
+		/// the offset in the buffer where the data starts
+		/// </param>
+		/// <param name = "len">
+		/// the length of the data
+		/// </param>
+		public void Update(byte[] buf, int off, int len)
+		{
+			if (buf == null) {
+				throw new ArgumentNullException("buf");
+			}
+			
+			if (off < 0 || len < 0 || off + len > buf.Length) {
+				throw new ArgumentOutOfRangeException();
+			}
+			
+			crc ^= CrcSeed;
+			
+			while (--len >= 0) {
+				crc = CrcTable[(crc ^ buf[off++]) & 0xFF] ^ (crc >> 8);
+			}
+			
+			crc ^= CrcSeed;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/IChecksum.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/IChecksum.cs
@@ -1,93 +1,93 @@
-// IChecksum.cs - Interface to compute a data checksum
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-namespace ICSharpCode.SharpZipLib.Checksums 
-{
-	
-	/// <summary>
-	/// Interface to compute a data checksum used by checked input/output streams.
-	/// A data checksum can be updated by one byte or with a byte array. After each
-	/// update the value of the current checksum can be returned by calling
-	/// <code>getValue</code>. The complete checksum object can also be reset
-	/// so it can be used again with new data.
-	/// </summary>
-	public interface IChecksum
-	{
-		/// <summary>
-		/// Returns the data checksum computed so far.
-		/// </summary>
-		long Value 
-		{
-			get;
-		}
-		
-		/// <summary>
-		/// Resets the data checksum as if no update was ever called.
-		/// </summary>
-		void Reset();
-		
-		/// <summary>
-		/// Adds one byte to the data checksum.
-		/// </summary>
-		/// <param name = "bval">
-		/// the data value to add. The high byte of the int is ignored.
-		/// </param>
-		void Update(int bval);
-		
-		/// <summary>
-		/// Updates the data checksum with the bytes taken from the array.
-		/// </summary>
-		/// <param name="buffer">
-		/// buffer an array of bytes
-		/// </param>
-		void Update(byte[] buffer);
-		
-		/// <summary>
-		/// Adds the byte array to the data checksum.
-		/// </summary>
-		/// <param name = "buf">
-		/// the buffer which contains the data
-		/// </param>
-		/// <param name = "off">
-		/// the offset in the buffer where the data starts
-		/// </param>
-		/// <param name = "len">
-		/// the length of the data
-		/// </param>
-		void Update(byte[] buf, int off, int len);
-	}
-}
+// IChecksum.cs - Interface to compute a data checksum
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+namespace ICSharpCode.SharpZipLib.Checksums 
+{
+	
+	/// <summary>
+	/// Interface to compute a data checksum used by checked input/output streams.
+	/// A data checksum can be updated by one byte or with a byte array. After each
+	/// update the value of the current checksum can be returned by calling
+	/// <code>getValue</code>. The complete checksum object can also be reset
+	/// so it can be used again with new data.
+	/// </summary>
+	public interface IChecksum
+	{
+		/// <summary>
+		/// Returns the data checksum computed so far.
+		/// </summary>
+		long Value 
+		{
+			get;
+		}
+		
+		/// <summary>
+		/// Resets the data checksum as if no update was ever called.
+		/// </summary>
+		void Reset();
+		
+		/// <summary>
+		/// Adds one byte to the data checksum.
+		/// </summary>
+		/// <param name = "bval">
+		/// the data value to add. The high byte of the int is ignored.
+		/// </param>
+		void Update(int bval);
+		
+		/// <summary>
+		/// Updates the data checksum with the bytes taken from the array.
+		/// </summary>
+		/// <param name="buffer">
+		/// buffer an array of bytes
+		/// </param>
+		void Update(byte[] buffer);
+		
+		/// <summary>
+		/// Adds the byte array to the data checksum.
+		/// </summary>
+		/// <param name = "buf">
+		/// the buffer which contains the data
+		/// </param>
+		/// <param name = "off">
+		/// the offset in the buffer where the data starts
+		/// </param>
+		/// <param name = "len">
+		/// the length of the data
+		/// </param>
+		void Update(byte[] buf, int off, int len);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/StrangeCRC.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Checksums/StrangeCRC.cs
@@ -1,184 +1,184 @@
-// StrangeCRC.cs - computes a crc used in the bziplib ... I don't think that
-//                 this is the 'standard' crc, please correct me, if I'm wrong
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Checksums 
-{
-	/// <summary>
-	/// Bzip2 checksum algorithm
-	/// </summary>
-	public class StrangeCRC : IChecksum
-	{
-		readonly static uint[] crc32Table = {
-			0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9,
-			0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
-			0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
-			0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
-			0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9,
-			0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
-			0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011,
-			0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
-			0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
-			0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5,
-			0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81,
-			0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
-			0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49,
-			0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
-			0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
-			0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d,
-			0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae,
-			0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
-			0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
-			0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
-			0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
-			0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02,
-			0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066,
-			0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
-			0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e,
-			0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
-			0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
-			0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a,
-			0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
-			0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
-			0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686,
-			0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
-			0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
-			0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
-			0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f,
-			0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
-			0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47,
-			0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
-			0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
-			0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623,
-			0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7,
-			0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
-			0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f,
-			0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
-			0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
-			0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b,
-			0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f,
-			0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
-			0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
-			0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
-			0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
-			0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24,
-			0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30,
-			0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
-			0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088,
-			0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
-			0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
-			0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c,
-			0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
-			0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
-			0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0,
-			0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
-			0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
-			0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
-		};
-		
-		int globalCrc;
-
-		/// <summary>
-		/// Initialise a default instance of <see cref="StrangeCRC"></see>
-		/// </summary>	
-		public StrangeCRC() 
-		{
-			Reset();
-		}
-
-		/// <summary>
-		/// Reset the state of Crc.
-		/// </summary>
-		public void Reset()
-		{
-			globalCrc = -1;
-		}
-
-		/// <summary>
-		/// Get the current Crc value.
-		/// </summary>
-		public long Value {
-			get {
-				return ~globalCrc;
-			}
-		}
-		
-		/// <summary>
-		/// Update the Crc value.
-		/// </summary>
-		/// <param name="inCh">data update is based on</param>
-		public void Update(int inCh)
-		{
-			int temp = (globalCrc >> 24) ^ inCh;
-			if (temp < 0) {
-				temp = 256 + temp;
-			}
-			globalCrc = (int)((globalCrc << 8) ^ crc32Table[temp]);
-		}
-
-		/// <summary>
-		/// Update Crc based on a block of data
-		/// </summary>		
-		public void Update(byte[] buf)
-		{
-			Update(buf, 0, buf.Length);
-		}
-		
-		/// <summary>
-		/// Update Crc based on a portion of a block of data
-		/// </summary>
-		/// <param name="buf">block of data</param>
-		/// <param name="off">index of first byte to use</param>
-		/// <param name="len">number of bytes to use</param>
-		public void Update(byte[] buf, int off, int len)
-		{
-			if (buf == null) {
-				throw new ArgumentNullException("buf");
-			}
-			
-			if (off < 0 || len < 0 || off + len > buf.Length) {
-				throw new ArgumentOutOfRangeException();
-			}
-			
-			for (int i = 0; i < len; ++i) {
-				Update(buf[off++]);
-			}
-		}
-	}
-}
+// StrangeCRC.cs - computes a crc used in the bziplib ... I don't think that
+//                 this is the 'standard' crc, please correct me, if I'm wrong
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Checksums 
+{
+	/// <summary>
+	/// Bzip2 checksum algorithm
+	/// </summary>
+	public class StrangeCRC : IChecksum
+	{
+		readonly static uint[] crc32Table = {
+			0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9,
+			0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
+			0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
+			0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
+			0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9,
+			0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
+			0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011,
+			0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
+			0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
+			0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5,
+			0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81,
+			0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
+			0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49,
+			0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
+			0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
+			0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d,
+			0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae,
+			0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
+			0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
+			0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
+			0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
+			0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02,
+			0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066,
+			0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
+			0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e,
+			0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
+			0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
+			0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a,
+			0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
+			0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
+			0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686,
+			0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
+			0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
+			0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
+			0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f,
+			0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
+			0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47,
+			0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
+			0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
+			0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623,
+			0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7,
+			0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
+			0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f,
+			0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
+			0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
+			0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b,
+			0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f,
+			0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
+			0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
+			0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
+			0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
+			0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24,
+			0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30,
+			0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
+			0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088,
+			0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
+			0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
+			0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c,
+			0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
+			0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
+			0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0,
+			0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
+			0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
+			0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
+		};
+		
+		int globalCrc;
+
+		/// <summary>
+		/// Initialise a default instance of <see cref="StrangeCRC"></see>
+		/// </summary>	
+		public StrangeCRC() 
+		{
+			Reset();
+		}
+
+		/// <summary>
+		/// Reset the state of Crc.
+		/// </summary>
+		public void Reset()
+		{
+			globalCrc = -1;
+		}
+
+		/// <summary>
+		/// Get the current Crc value.
+		/// </summary>
+		public long Value {
+			get {
+				return ~globalCrc;
+			}
+		}
+		
+		/// <summary>
+		/// Update the Crc value.
+		/// </summary>
+		/// <param name="inCh">data update is based on</param>
+		public void Update(int inCh)
+		{
+			int temp = (globalCrc >> 24) ^ inCh;
+			if (temp < 0) {
+				temp = 256 + temp;
+			}
+			globalCrc = (int)((globalCrc << 8) ^ crc32Table[temp]);
+		}
+
+		/// <summary>
+		/// Update Crc based on a block of data
+		/// </summary>		
+		public void Update(byte[] buf)
+		{
+			Update(buf, 0, buf.Length);
+		}
+		
+		/// <summary>
+		/// Update Crc based on a portion of a block of data
+		/// </summary>
+		/// <param name="buf">block of data</param>
+		/// <param name="off">index of first byte to use</param>
+		/// <param name="len">number of bytes to use</param>
+		public void Update(byte[] buf, int off, int len)
+		{
+			if (buf == null) {
+				throw new ArgumentNullException("buf");
+			}
+			
+			if (off < 0 || len < 0 || off + len > buf.Length) {
+				throw new ArgumentOutOfRangeException();
+			}
+			
+			for (int i = 0; i < len; ++i) {
+				Update(buf[off++]);
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/FileSystemScanner.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/FileSystemScanner.cs
@@ -1,380 +1,380 @@
-// FileSystemScanner.cs
-//
-// Copyright 2005 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-
-using System;
-using System.IO;
-
-namespace ICSharpCode.SharpZipLib.Core
-{
-	/// <summary>
-	/// Event arguments for scanning.
-	/// </summary>
-	public class ScanEventArgs : EventArgs
-	{
-		/// <summary>
-		/// Initialise a new instance of <see cref="ScanEventArgs"/>
-		/// </summary>
-		/// <param name="name"></param>
-		public ScanEventArgs(string name)
-		{
-			this.name = name;
-			ContinueRunning = true;
-		}
-		
-		string name;
-		
-		/// <summary>
-		/// The name for this event.
-		/// </summary>
-		public string Name
-		{
-			get { return name; }
-		}
-		
-		bool continueRunning;
-		
-		/// <summary>
-		/// Get set a value indicating if scanning should continue or not.
-		/// </summary>
-		public bool ContinueRunning
-		{
-			get { return continueRunning; }
-			set { continueRunning = value; }
-		}
-	}
-
-	/// <summary>
-	/// Event arguments for directories.
-	/// </summary>
-	public class DirectoryEventArgs : ScanEventArgs
-	{
-		/// <summary>
-		/// Initialize an instance of <see cref="DirectoryEventArgs"></see>.
-		/// </summary>
-		/// <param name="name">The name for this directory.</param>
-		/// <param name="hasMatchingFiles">Flag value indicating if any matching files are contained in this directory.</param>
-		public DirectoryEventArgs(string name, bool hasMatchingFiles)
-			: base (name)
-		{
-			this.hasMatchingFiles = hasMatchingFiles;
-		}
-		
-		/// <summary>
-		/// Get a value indicating if the directory contains any matching files or not.
-		/// </summary>
-		public bool HasMatchingFiles
-		{
-			get { return hasMatchingFiles; }
-		}
-		
-		bool hasMatchingFiles;
-	}
-	
-	/// <summary>
-	/// Arguments passed when scan failures are detected.
-	/// </summary>
-	public class ScanFailureEventArgs
-	{
-		/// <summary>
-		/// Initialise a new instance of <see cref="ScanFailureEventArgs"></see>
-		/// </summary>
-		/// <param name="name">The name to apply.</param>
-		/// <param name="e">The exception to use.</param>
-		public ScanFailureEventArgs(string name, Exception e)
-		{
-			this.name = name;
-			this.exception = e;
-			continueRunning = true;
-		}
-		
-		string name;
-		
-		/// <summary>
-		/// The applicable name.
-		/// </summary>
-		public string Name
-		{
-			get { return name; }
-		}
-		
-		Exception exception;
-		
-		/// <summary>
-		/// The applicable exception.
-		/// </summary>
-		public Exception Exception
-		{
-			get { return exception; }
-		}
-
-		bool continueRunning;
-		
-		/// <summary>
-		/// Get / set a value indicating wether scanning should continue.
-		/// </summary>
-		public bool ContinueRunning
-		{
-			get { return continueRunning; }
-			set { continueRunning = value; }
-		}
-	}
-	
-	/// <summary>
-	/// Delegate invokked when a directory is processed.
-	/// </summary>
-	public delegate void ProcessDirectoryDelegate(object Sender, DirectoryEventArgs e);
-	
-	/// <summary>
-	/// Delegate invoked when a file is processed.
-	/// </summary>
-	public delegate void ProcessFileDelegate(object sender, ScanEventArgs e);
-	
-	/// <summary>
-	/// Delegate invoked when a directory failure is detected.
-	/// </summary>
-	public delegate void DirectoryFailureDelegate(object sender, ScanFailureEventArgs e);
-	
-	/// <summary>
-	/// Delegate invoked when a file failure is detected.
-	/// </summary>
-	public delegate void FileFailureDelegate(object sender, ScanFailureEventArgs e);
-
-	/// <summary>
-	/// FileSystemScanner provides facilities scanning of files and directories.
-	/// </summary>
-	public class FileSystemScanner
-	{
-		/// <summary>
-		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
-		/// </summary>
-		/// <param name="filter">The file filter to apply when scanning.</param>
-		public FileSystemScanner(string filter)
-		{
-			fileFilter = new PathFilter(filter);
-		}
-		
-		/// <summary>
-		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
-		/// </summary>
-		/// <param name="fileFilter">The file <see cref="NameFilter"></see>filter to apply.</param>
-		/// <param name="directoryFilter">The directory <see cref="NameFilter"></see>filter to apply.</param>
-		public FileSystemScanner(string fileFilter, string directoryFilter)
-		{
-			this.fileFilter = new PathFilter(fileFilter);
-			this.directoryFilter = new PathFilter(directoryFilter);
-		}
-		
-		/// <summary>
-		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
-		/// </summary>
-		/// <param name="fileFilter">The file <see cref="NameFilter"></see>filter to apply.</param>
-		public FileSystemScanner(IScanFilter fileFilter)
-		{
-			this.fileFilter = fileFilter;
-		}
-		
-		/// <summary>
-		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
-		/// </summary>
-		/// <param name="fileFilter">The file <see cref="IScanFilter"></see>filter to apply.</param>
-		/// <param name="directoryFilter">The directory <see cref="IScanFilter"></see>filter to apply.</param>
-		public FileSystemScanner(IScanFilter fileFilter, IScanFilter directoryFilter)
-		{
-			this.fileFilter = fileFilter;
-			this.directoryFilter = directoryFilter;
-		}
-		
-		/// <summary>
-		/// Delegate to invoke when a directory is processed.
-		/// </summary>
-		public ProcessDirectoryDelegate ProcessDirectory;
-		
-		/// <summary>
-		/// Delegate to invoke when a file is processed.
-		/// </summary>
-		public ProcessFileDelegate ProcessFile;
-
-		/// <summary>
-		/// Delegate to invoke when a directory failure is detected.
-		/// </summary>
-		public DirectoryFailureDelegate DirectoryFailure;
-		
-		/// <summary>
-		/// Delegate to invoke when a file failure is detected.
-		/// </summary>
-		public FileFailureDelegate FileFailure;
-		
-		/// <summary>
-		/// Raise the DirectoryFailure event.
-		/// </summary>
-		/// <param name="directory">Rhe directory name.</param>
-		/// <param name="e">The exception detected.</param>
-		public void OnDirectoryFailure(string directory, Exception e)
-		{
-			if ( DirectoryFailure == null ) {
-				alive = false;
-			} else {
-				ScanFailureEventArgs args = new ScanFailureEventArgs(directory, e);
-				DirectoryFailure(this, args);
-				alive = args.ContinueRunning;
-			}
-		}
-		
-		/// <summary>
-		/// Raise the FileFailure event.
-		/// </summary>
-		/// <param name="file">The file name.</param>
-		/// <param name="e">The exception detected.</param>
-		public void OnFileFailure(string file, Exception e)
-		{
-			if ( FileFailure == null ) {
-				alive = false;
-			} else {
-				ScanFailureEventArgs args = new ScanFailureEventArgs(file, e);
-				FileFailure(this, args);
-				alive = args.ContinueRunning;
-			}
-		}
-
-		/// <summary>
-		/// Raise the ProcessFile event.
-		/// </summary>
-		/// <param name="file">The file name.</param>
-		public void OnProcessFile(string file)
-		{
-			if ( ProcessFile != null ) {
-				ScanEventArgs args = new ScanEventArgs(file);
-				ProcessFile(this, args);
-				alive = args.ContinueRunning;
-			}
-		}
-		
-		/// <summary>
-		/// Raise the ProcessDirectory event.
-		/// </summary>
-		/// <param name="directory">The directory name.</param>
-		/// <param name="hasMatchingFiles">Flag indicating if the directory has matching files.</param>
-		public void OnProcessDirectory(string directory, bool hasMatchingFiles)
-		{
-			if ( ProcessDirectory != null ) {
-				DirectoryEventArgs args = new DirectoryEventArgs(directory, hasMatchingFiles);
-				ProcessDirectory(this, args);
-				alive = args.ContinueRunning;
-			}
-		}
-
-		/// <summary>
-		/// Scan a directory.
-		/// </summary>
-		/// <param name="directory">The base directory to scan.</param>
-		/// <param name="recurse">True to recurse subdirectories, false to do a single directory.</param>
-		public void Scan(string directory, bool recurse)
-		{
-			alive = true;
-			ScanDir(directory, recurse);
-		}
-		
-		void ScanDir(string directory, bool recurse)
-		{
-
-			try {
-				string[] names = System.IO.Directory.GetFiles(directory);
-				bool hasMatch = false;
-				for (int fileIndex = 0; fileIndex < names.Length; ++fileIndex) {
-					if ( !fileFilter.IsMatch(names[fileIndex]) ) {
-						names[fileIndex] = null;
-					} else {
-						hasMatch = true;
-					}
-				}
-				
-				OnProcessDirectory(directory, hasMatch);
-				
-				if ( alive && hasMatch ) {
-					foreach (string fileName in names) {
-						try {
-							if ( fileName != null ) {
-								OnProcessFile(fileName);
-								if ( !alive ) {
-									break;
-								}
-							}
-						}
-						catch (Exception e)
-						{
-							OnFileFailure(fileName, e);
-						}
-					}
-				}
-			}
-			catch (Exception e) {
-				OnDirectoryFailure(directory, e);
-			}
-
-			if ( alive && recurse ) {
-				try {
-					string[] names = System.IO.Directory.GetDirectories(directory);
-					foreach (string fulldir in names) {
-						if ((directoryFilter == null) || (directoryFilter.IsMatch(fulldir))) {
-							ScanDir(fulldir, true);
-							if ( !alive ) {
-								break;
-							}
-						}
-					}
-				}
-				catch (Exception e) {
-					OnDirectoryFailure(directory, e);
-				}
-			}
-		}
-		
-		#region Instance Fields
-		/// <summary>
-		/// The file filter currently in use.
-		/// </summary>
-		IScanFilter fileFilter;
-		/// <summary>
-		/// The directory filter currently in use.
-		/// </summary>
-		IScanFilter directoryFilter;
-		/// <summary>
-		/// Falg indicating if scanning is still alive.  Used to cancel a scan.
-		/// </summary>
-		bool alive;
-		#endregion
-	}
-}
+// FileSystemScanner.cs
+//
+// Copyright 2005 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+
+using System;
+using System.IO;
+
+namespace ICSharpCode.SharpZipLib.Core
+{
+	/// <summary>
+	/// Event arguments for scanning.
+	/// </summary>
+	public class ScanEventArgs : EventArgs
+	{
+		/// <summary>
+		/// Initialise a new instance of <see cref="ScanEventArgs"/>
+		/// </summary>
+		/// <param name="name"></param>
+		public ScanEventArgs(string name)
+		{
+			this.name = name;
+			ContinueRunning = true;
+		}
+		
+		string name;
+		
+		/// <summary>
+		/// The name for this event.
+		/// </summary>
+		public string Name
+		{
+			get { return name; }
+		}
+		
+		bool continueRunning;
+		
+		/// <summary>
+		/// Get set a value indicating if scanning should continue or not.
+		/// </summary>
+		public bool ContinueRunning
+		{
+			get { return continueRunning; }
+			set { continueRunning = value; }
+		}
+	}
+
+	/// <summary>
+	/// Event arguments for directories.
+	/// </summary>
+	public class DirectoryEventArgs : ScanEventArgs
+	{
+		/// <summary>
+		/// Initialize an instance of <see cref="DirectoryEventArgs"></see>.
+		/// </summary>
+		/// <param name="name">The name for this directory.</param>
+		/// <param name="hasMatchingFiles">Flag value indicating if any matching files are contained in this directory.</param>
+		public DirectoryEventArgs(string name, bool hasMatchingFiles)
+			: base (name)
+		{
+			this.hasMatchingFiles = hasMatchingFiles;
+		}
+		
+		/// <summary>
+		/// Get a value indicating if the directory contains any matching files or not.
+		/// </summary>
+		public bool HasMatchingFiles
+		{
+			get { return hasMatchingFiles; }
+		}
+		
+		bool hasMatchingFiles;
+	}
+	
+	/// <summary>
+	/// Arguments passed when scan failures are detected.
+	/// </summary>
+	public class ScanFailureEventArgs
+	{
+		/// <summary>
+		/// Initialise a new instance of <see cref="ScanFailureEventArgs"></see>
+		/// </summary>
+		/// <param name="name">The name to apply.</param>
+		/// <param name="e">The exception to use.</param>
+		public ScanFailureEventArgs(string name, Exception e)
+		{
+			this.name = name;
+			this.exception = e;
+			continueRunning = true;
+		}
+		
+		string name;
+		
+		/// <summary>
+		/// The applicable name.
+		/// </summary>
+		public string Name
+		{
+			get { return name; }
+		}
+		
+		Exception exception;
+		
+		/// <summary>
+		/// The applicable exception.
+		/// </summary>
+		public Exception Exception
+		{
+			get { return exception; }
+		}
+
+		bool continueRunning;
+		
+		/// <summary>
+		/// Get / set a value indicating wether scanning should continue.
+		/// </summary>
+		public bool ContinueRunning
+		{
+			get { return continueRunning; }
+			set { continueRunning = value; }
+		}
+	}
+	
+	/// <summary>
+	/// Delegate invokked when a directory is processed.
+	/// </summary>
+	public delegate void ProcessDirectoryDelegate(object Sender, DirectoryEventArgs e);
+	
+	/// <summary>
+	/// Delegate invoked when a file is processed.
+	/// </summary>
+	public delegate void ProcessFileDelegate(object sender, ScanEventArgs e);
+	
+	/// <summary>
+	/// Delegate invoked when a directory failure is detected.
+	/// </summary>
+	public delegate void DirectoryFailureDelegate(object sender, ScanFailureEventArgs e);
+	
+	/// <summary>
+	/// Delegate invoked when a file failure is detected.
+	/// </summary>
+	public delegate void FileFailureDelegate(object sender, ScanFailureEventArgs e);
+
+	/// <summary>
+	/// FileSystemScanner provides facilities scanning of files and directories.
+	/// </summary>
+	public class FileSystemScanner
+	{
+		/// <summary>
+		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
+		/// </summary>
+		/// <param name="filter">The file filter to apply when scanning.</param>
+		public FileSystemScanner(string filter)
+		{
+			fileFilter = new PathFilter(filter);
+		}
+		
+		/// <summary>
+		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
+		/// </summary>
+		/// <param name="fileFilter">The file <see cref="NameFilter"></see>filter to apply.</param>
+		/// <param name="directoryFilter">The directory <see cref="NameFilter"></see>filter to apply.</param>
+		public FileSystemScanner(string fileFilter, string directoryFilter)
+		{
+			this.fileFilter = new PathFilter(fileFilter);
+			this.directoryFilter = new PathFilter(directoryFilter);
+		}
+		
+		/// <summary>
+		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
+		/// </summary>
+		/// <param name="fileFilter">The file <see cref="NameFilter"></see>filter to apply.</param>
+		public FileSystemScanner(IScanFilter fileFilter)
+		{
+			this.fileFilter = fileFilter;
+		}
+		
+		/// <summary>
+		/// Initialise a new instance of <see cref="FileSystemScanner"></see>
+		/// </summary>
+		/// <param name="fileFilter">The file <see cref="IScanFilter"></see>filter to apply.</param>
+		/// <param name="directoryFilter">The directory <see cref="IScanFilter"></see>filter to apply.</param>
+		public FileSystemScanner(IScanFilter fileFilter, IScanFilter directoryFilter)
+		{
+			this.fileFilter = fileFilter;
+			this.directoryFilter = directoryFilter;
+		}
+		
+		/// <summary>
+		/// Delegate to invoke when a directory is processed.
+		/// </summary>
+		public ProcessDirectoryDelegate ProcessDirectory;
+		
+		/// <summary>
+		/// Delegate to invoke when a file is processed.
+		/// </summary>
+		public ProcessFileDelegate ProcessFile;
+
+		/// <summary>
+		/// Delegate to invoke when a directory failure is detected.
+		/// </summary>
+		public DirectoryFailureDelegate DirectoryFailure;
+		
+		/// <summary>
+		/// Delegate to invoke when a file failure is detected.
+		/// </summary>
+		public FileFailureDelegate FileFailure;
+		
+		/// <summary>
+		/// Raise the DirectoryFailure event.
+		/// </summary>
+		/// <param name="directory">Rhe directory name.</param>
+		/// <param name="e">The exception detected.</param>
+		public void OnDirectoryFailure(string directory, Exception e)
+		{
+			if ( DirectoryFailure == null ) {
+				alive = false;
+			} else {
+				ScanFailureEventArgs args = new ScanFailureEventArgs(directory, e);
+				DirectoryFailure(this, args);
+				alive = args.ContinueRunning;
+			}
+		}
+		
+		/// <summary>
+		/// Raise the FileFailure event.
+		/// </summary>
+		/// <param name="file">The file name.</param>
+		/// <param name="e">The exception detected.</param>
+		public void OnFileFailure(string file, Exception e)
+		{
+			if ( FileFailure == null ) {
+				alive = false;
+			} else {
+				ScanFailureEventArgs args = new ScanFailureEventArgs(file, e);
+				FileFailure(this, args);
+				alive = args.ContinueRunning;
+			}
+		}
+
+		/// <summary>
+		/// Raise the ProcessFile event.
+		/// </summary>
+		/// <param name="file">The file name.</param>
+		public void OnProcessFile(string file)
+		{
+			if ( ProcessFile != null ) {
+				ScanEventArgs args = new ScanEventArgs(file);
+				ProcessFile(this, args);
+				alive = args.ContinueRunning;
+			}
+		}
+		
+		/// <summary>
+		/// Raise the ProcessDirectory event.
+		/// </summary>
+		/// <param name="directory">The directory name.</param>
+		/// <param name="hasMatchingFiles">Flag indicating if the directory has matching files.</param>
+		public void OnProcessDirectory(string directory, bool hasMatchingFiles)
+		{
+			if ( ProcessDirectory != null ) {
+				DirectoryEventArgs args = new DirectoryEventArgs(directory, hasMatchingFiles);
+				ProcessDirectory(this, args);
+				alive = args.ContinueRunning;
+			}
+		}
+
+		/// <summary>
+		/// Scan a directory.
+		/// </summary>
+		/// <param name="directory">The base directory to scan.</param>
+		/// <param name="recurse">True to recurse subdirectories, false to do a single directory.</param>
+		public void Scan(string directory, bool recurse)
+		{
+			alive = true;
+			ScanDir(directory, recurse);
+		}
+		
+		void ScanDir(string directory, bool recurse)
+		{
+
+			try {
+				string[] names = System.IO.Directory.GetFiles(directory);
+				bool hasMatch = false;
+				for (int fileIndex = 0; fileIndex < names.Length; ++fileIndex) {
+					if ( !fileFilter.IsMatch(names[fileIndex]) ) {
+						names[fileIndex] = null;
+					} else {
+						hasMatch = true;
+					}
+				}
+				
+				OnProcessDirectory(directory, hasMatch);
+				
+				if ( alive && hasMatch ) {
+					foreach (string fileName in names) {
+						try {
+							if ( fileName != null ) {
+								OnProcessFile(fileName);
+								if ( !alive ) {
+									break;
+								}
+							}
+						}
+						catch (Exception e)
+						{
+							OnFileFailure(fileName, e);
+						}
+					}
+				}
+			}
+			catch (Exception e) {
+				OnDirectoryFailure(directory, e);
+			}
+
+			if ( alive && recurse ) {
+				try {
+					string[] names = System.IO.Directory.GetDirectories(directory);
+					foreach (string fulldir in names) {
+						if ((directoryFilter == null) || (directoryFilter.IsMatch(fulldir))) {
+							ScanDir(fulldir, true);
+							if ( !alive ) {
+								break;
+							}
+						}
+					}
+				}
+				catch (Exception e) {
+					OnDirectoryFailure(directory, e);
+				}
+			}
+		}
+		
+		#region Instance Fields
+		/// <summary>
+		/// The file filter currently in use.
+		/// </summary>
+		IScanFilter fileFilter;
+		/// <summary>
+		/// The directory filter currently in use.
+		/// </summary>
+		IScanFilter directoryFilter;
+		/// <summary>
+		/// Falg indicating if scanning is still alive.  Used to cancel a scan.
+		/// </summary>
+		bool alive;
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/INameTransform.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/INameTransform.cs
@@ -1,57 +1,57 @@
-// INameTransform.cs
-//
-// Copyright 2005 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-namespace ICSharpCode.SharpZipLib.Core
-{
-	/// <summary>
-	/// INameTransform defines how file system names are transformed for use with archives.
-	/// </summary>
-	public interface INameTransform
-	{
-		/// <summary>
-		/// Given a file name determine the transformed equivalent.
-		/// </summary>
-		/// <param name="name">The name to transform.</param>
-		/// <returns>The transformed name.</returns>
-		string TransformFile(string name);
-		
-		/// <summary>
-		/// Given a directory name determine the transformed equivalent.
-		/// </summary>
-		/// <param name="name">The name to transform.</param>
-		/// <returns>The transformed directory name</returns>
-		string TransformDirectory(string name);
-	}
-}
+// INameTransform.cs
+//
+// Copyright 2005 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+namespace ICSharpCode.SharpZipLib.Core
+{
+	/// <summary>
+	/// INameTransform defines how file system names are transformed for use with archives.
+	/// </summary>
+	public interface INameTransform
+	{
+		/// <summary>
+		/// Given a file name determine the transformed equivalent.
+		/// </summary>
+		/// <param name="name">The name to transform.</param>
+		/// <returns>The transformed name.</returns>
+		string TransformFile(string name);
+		
+		/// <summary>
+		/// Given a directory name determine the transformed equivalent.
+		/// </summary>
+		/// <param name="name">The name to transform.</param>
+		/// <returns>The transformed directory name</returns>
+		string TransformDirectory(string name);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/NameFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/NameFilter.cs
@@ -1,213 +1,213 @@
-// NameFilter.cs
-//
-// Copyright 2005 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-
-using System;
-using System.Collections;
-using System.Text.RegularExpressions;
-
-namespace ICSharpCode.SharpZipLib.Core
-{
-	/// <summary>
-	/// NameFilter is a string matching class which allows for both positive and negative
-	/// matching.
-	/// A filter is a sequence of independant <see cref="Regex"></see> regular expressions separated by semi-colons ';'
-	/// Each expression can be prefixed by a plus '+' sign or a minus '-' sign to denote the expression
-	/// is intended to include or exclude names.  If neither a plus or minus sign is found include is the default
-	/// A given name is tested for inclusion before checking exclusions.  Only names matching an include spec 
-	/// and not matching an exclude spec are deemed to match the filter.
-	/// An empty filter matches any name.
-	/// </summary>
-	public class NameFilter
-	{
-		/// <summary>
-		/// Construct an instance based on the filter expression passed
-		/// </summary>
-		/// <param name="filter">The filter expression.</param>
-		public NameFilter(string filter)
-		{
-			this.filter = filter;
-			inclusions = new ArrayList();
-			exclusions = new ArrayList();
-			Compile();
-		}
-
-		/// <summary>
-		/// Test a string to see if it is a valid regular expression.
-		/// </summary>
-		/// <param name="e">The expression to test.</param>
-		/// <returns>True if expression is a valid <see cref="System.Text.RegularExpressions.Regex"/> false otherwise.</returns>
-		public static bool IsValidExpression(string e)
-		{
-			bool result = true;
-			try {
-				Regex exp = new Regex(e, RegexOptions.IgnoreCase | RegexOptions.Singleline);
-			}
-			catch {
-				result = false;
-			}
-			return result;
-		}
-
-		/// <summary>
-		/// Test an expression to see if it is valid as a filter.
-		/// </summary>
-		/// <param name="toTest">The filter expression to test.</param>
-		/// <returns>True if the expression is valid, false otherwise.</returns>
-		public static bool IsValidFilterExpression(string toTest)
-		{
-			bool result = true;
-		
-			try
-			{
-				string[] items = toTest.Split(';');
-				for (int i = 0; i < items.Length; ++i) {
-					if (items[i] != null && items[i].Length > 0) {
-						string toCompile;
-			
-						if (items[i][0] == '+')
-							toCompile = items[i].Substring(1, items[i].Length - 1);
-						else if (items[i][0] == '-')
-							toCompile = items[i].Substring(1, items[i].Length - 1);
-						else
-							toCompile = items[i];
-			
-						Regex testRE = new Regex(toCompile, RegexOptions.IgnoreCase | RegexOptions.Singleline);
-					}
-				}
-			}
-			catch (Exception) {
-				result = false;
-		 	}
-		
-			return result;
-		}
-
-		/// <summary>
-		/// Convert this filter to its string equivalent.
-		/// </summary>
-		/// <returns>The string equivalent for this filter.</returns>
-		public override string ToString()
-		{
-			return filter;
-		}
-		
-		/// <summary>
-		/// Test a value to see if it is included by the filter.
-		/// </summary>
-		/// <param name="testValue">The value to test.</param>
-		/// <returns>True if the value is included, false otherwise.</returns>
-		public bool IsIncluded(string testValue)
-		{
-			bool result = false;
-			if (inclusions.Count == 0)
-				result = true;
-			else {
-				foreach (Regex r in inclusions) {
-					if (r.IsMatch(testValue)) {
-						result = true;
-						break;
-					}
-				}
-			}
-			return result;
-		}
-
-		/// <summary>
-		/// Test a value to see if it is excluded by the filter.
-		/// </summary>
-		/// <param name="testValue">The value to test.</param>
-		/// <returns>True if the value is excluded, false otherwise.</returns>
-		public bool IsExcluded(string testValue)
-		{
-			bool result = false;
-			foreach (Regex r in exclusions) {
-				if (r.IsMatch(testValue)) {
-					result = true;
-					break;
-				}
-			}
-			return result;
-		}
-
-		/// <summary>
-		/// Test a value to see if it matches the filter.
-		/// </summary>
-		/// <param name="testValue">The value to test.</param>
-		/// <returns>True if the value matches, false otherwise.</returns>
-		public bool IsMatch(string testValue)
-		{
-			return IsIncluded(testValue) == true && IsExcluded(testValue) == false;
-		}
-
-		/// <summary>
-		/// Compile this filter.
-		/// </summary>
-		void Compile()
-		{
-			if (filter == null)
-				return;
-
-			string[] items = filter.Split(';');
-			for (int i = 0; i < items.Length; ++i) {
-				if (items[i] != null && items[i].Length > 0) {
-					bool include = items[i][0] != '-';
-					string toCompile;
-
-					if (items[i][0] == '+')
-						toCompile = items[i].Substring(1, items[i].Length - 1);
-					else if (items[i][0] == '-')
-						toCompile = items[i].Substring(1, items[i].Length - 1);
-					else
-						toCompile = items[i];
-
-					// NOTE: Regular expressions can fail to compile here for a number of reasons that cause an exception
-					// these are left unhandled here as the caller is responsible for ensuring all is valid.
-					// several functions IsValidFilterExpression and IsValidExpression are provided for such checking
-					if (include)
-						inclusions.Add(new Regex(toCompile, RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline));
-					else
-						exclusions.Add(new Regex(toCompile, RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline));
-				}
-			}
-		}
-
-		#region Instance Fields
-			string filter;
-			ArrayList inclusions;
-			ArrayList exclusions;
-		#endregion
-	}
-}
+// NameFilter.cs
+//
+// Copyright 2005 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+
+using System;
+using System.Collections;
+using System.Text.RegularExpressions;
+
+namespace ICSharpCode.SharpZipLib.Core
+{
+	/// <summary>
+	/// NameFilter is a string matching class which allows for both positive and negative
+	/// matching.
+	/// A filter is a sequence of independant <see cref="Regex"></see> regular expressions separated by semi-colons ';'
+	/// Each expression can be prefixed by a plus '+' sign or a minus '-' sign to denote the expression
+	/// is intended to include or exclude names.  If neither a plus or minus sign is found include is the default
+	/// A given name is tested for inclusion before checking exclusions.  Only names matching an include spec 
+	/// and not matching an exclude spec are deemed to match the filter.
+	/// An empty filter matches any name.
+	/// </summary>
+	public class NameFilter
+	{
+		/// <summary>
+		/// Construct an instance based on the filter expression passed
+		/// </summary>
+		/// <param name="filter">The filter expression.</param>
+		public NameFilter(string filter)
+		{
+			this.filter = filter;
+			inclusions = new ArrayList();
+			exclusions = new ArrayList();
+			Compile();
+		}
+
+		/// <summary>
+		/// Test a string to see if it is a valid regular expression.
+		/// </summary>
+		/// <param name="e">The expression to test.</param>
+		/// <returns>True if expression is a valid <see cref="System.Text.RegularExpressions.Regex"/> false otherwise.</returns>
+		public static bool IsValidExpression(string e)
+		{
+			bool result = true;
+			try {
+				Regex exp = new Regex(e, RegexOptions.IgnoreCase | RegexOptions.Singleline);
+			}
+			catch {
+				result = false;
+			}
+			return result;
+		}
+
+		/// <summary>
+		/// Test an expression to see if it is valid as a filter.
+		/// </summary>
+		/// <param name="toTest">The filter expression to test.</param>
+		/// <returns>True if the expression is valid, false otherwise.</returns>
+		public static bool IsValidFilterExpression(string toTest)
+		{
+			bool result = true;
+		
+			try
+			{
+				string[] items = toTest.Split(';');
+				for (int i = 0; i < items.Length; ++i) {
+					if (items[i] != null && items[i].Length > 0) {
+						string toCompile;
+			
+						if (items[i][0] == '+')
+							toCompile = items[i].Substring(1, items[i].Length - 1);
+						else if (items[i][0] == '-')
+							toCompile = items[i].Substring(1, items[i].Length - 1);
+						else
+							toCompile = items[i];
+			
+						Regex testRE = new Regex(toCompile, RegexOptions.IgnoreCase | RegexOptions.Singleline);
+					}
+				}
+			}
+			catch (Exception) {
+				result = false;
+		 	}
+		
+			return result;
+		}
+
+		/// <summary>
+		/// Convert this filter to its string equivalent.
+		/// </summary>
+		/// <returns>The string equivalent for this filter.</returns>
+		public override string ToString()
+		{
+			return filter;
+		}
+		
+		/// <summary>
+		/// Test a value to see if it is included by the filter.
+		/// </summary>
+		/// <param name="testValue">The value to test.</param>
+		/// <returns>True if the value is included, false otherwise.</returns>
+		public bool IsIncluded(string testValue)
+		{
+			bool result = false;
+			if (inclusions.Count == 0)
+				result = true;
+			else {
+				foreach (Regex r in inclusions) {
+					if (r.IsMatch(testValue)) {
+						result = true;
+						break;
+					}
+				}
+			}
+			return result;
+		}
+
+		/// <summary>
+		/// Test a value to see if it is excluded by the filter.
+		/// </summary>
+		/// <param name="testValue">The value to test.</param>
+		/// <returns>True if the value is excluded, false otherwise.</returns>
+		public bool IsExcluded(string testValue)
+		{
+			bool result = false;
+			foreach (Regex r in exclusions) {
+				if (r.IsMatch(testValue)) {
+					result = true;
+					break;
+				}
+			}
+			return result;
+		}
+
+		/// <summary>
+		/// Test a value to see if it matches the filter.
+		/// </summary>
+		/// <param name="testValue">The value to test.</param>
+		/// <returns>True if the value matches, false otherwise.</returns>
+		public bool IsMatch(string testValue)
+		{
+			return IsIncluded(testValue) == true && IsExcluded(testValue) == false;
+		}
+
+		/// <summary>
+		/// Compile this filter.
+		/// </summary>
+		void Compile()
+		{
+			if (filter == null)
+				return;
+
+			string[] items = filter.Split(';');
+			for (int i = 0; i < items.Length; ++i) {
+				if (items[i] != null && items[i].Length > 0) {
+					bool include = items[i][0] != '-';
+					string toCompile;
+
+					if (items[i][0] == '+')
+						toCompile = items[i].Substring(1, items[i].Length - 1);
+					else if (items[i][0] == '-')
+						toCompile = items[i].Substring(1, items[i].Length - 1);
+					else
+						toCompile = items[i];
+
+					// NOTE: Regular expressions can fail to compile here for a number of reasons that cause an exception
+					// these are left unhandled here as the caller is responsible for ensuring all is valid.
+					// several functions IsValidFilterExpression and IsValidExpression are provided for such checking
+					if (include)
+						inclusions.Add(new Regex(toCompile, RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline));
+					else
+						exclusions.Add(new Regex(toCompile, RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline));
+				}
+			}
+		}
+
+		#region Instance Fields
+			string filter;
+			ArrayList inclusions;
+			ArrayList exclusions;
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/PathFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Core/PathFilter.cs
@@ -1,137 +1,137 @@
-// PathFilter.cs
-//
-// Copyright 2005 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-
-using System;
-using System.IO;
-
-namespace ICSharpCode.SharpZipLib.Core
-{
-	/// <summary>
-	/// Scanning filters support these operations.
-	/// </summary>
-	public interface IScanFilter
-	{
-		/// <summary>
-		/// Test a name to see if is 'matches' the filter.
-		/// </summary>
-		/// <param name="name">The name to test.</param>
-		/// <returns>Returns true if the name matches the filter, false if it does not match.</returns>
-		bool IsMatch(string name);
-	}
-	
-	/// <summary>
-	/// PathFilter filters directories and files by full path name.
-	/// </summary>
-	public class PathFilter : IScanFilter
-	{
-		/// <summary>
-		/// Initialise a new instance of <see cref="PathFilter"></see>.
-		/// </summary>
-		/// <param name="filter">The <see cref="NameFilter"></see>filter expression to apply.</param>
-		public PathFilter(string filter)
-		{
-			nameFilter = new NameFilter(filter);
-		}
-
-		/// <summary>
-		/// Test a name to see if it matches the filter.
-		/// </summary>
-		/// <param name="name">The name to test.</param>
-		/// <returns>True if the name matches, false otherwise.</returns>
-		public virtual bool IsMatch(string name)
-		{
-			return nameFilter.IsMatch(Path.GetFullPath(name));
-		}
-		
-		#region Instance Fields
-		NameFilter nameFilter;
-		#endregion
-	}
-
-	/// <summary>
-	/// NameAnsSizeFilter filters based on name and file size.
-	/// </summary>
-	public class NameAndSizeFilter : PathFilter
-	{
-	
-		/// <summary>
-		/// Initialise a new instance of NameAndSizeFilter.
-		/// </summary>
-		/// <param name="filter">The filter to apply.</param>
-		/// <param name="minSize">The minimum file size to include.</param>
-		/// <param name="maxSize">The maximum file size to include.</param>
-		public NameAndSizeFilter(string filter, long minSize, long maxSize) : base(filter)
-		{
-			this.minSize = minSize;
-			this.maxSize = maxSize;
-		}
-		
-		/// <summary>
-		/// Test a filename to see if it matches the filter.
-		/// </summary>
-		/// <param name="fileName">The filename to test.</param>
-		/// <returns>True if the filter matches, false otherwise.</returns>
-		public override bool IsMatch(string fileName)
-		{
-			FileInfo fileInfo = new FileInfo(fileName);
-			long length = fileInfo.Length;
-			return base.IsMatch(fileName) &&
-				(MinSize <= length) && (MaxSize >= length);
-		}
-		
-		long minSize = 0;
-		
-		/// <summary>
-		/// The minimum size for a file that will match this filter.
-		/// </summary>
-		public long MinSize
-		{
-			get { return minSize; }
-			set { minSize = value; }
-		}
-		
-		long maxSize = long.MaxValue;
-		
-		/// <summary>
-		/// The maximum size for a file that will match this filter.
-		/// </summary>
-		public long MaxSize
-		{
-			get { return maxSize; }
-			set { maxSize = value; }
-		}
-	}
-}
+// PathFilter.cs
+//
+// Copyright 2005 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+
+using System;
+using System.IO;
+
+namespace ICSharpCode.SharpZipLib.Core
+{
+	/// <summary>
+	/// Scanning filters support these operations.
+	/// </summary>
+	public interface IScanFilter
+	{
+		/// <summary>
+		/// Test a name to see if is 'matches' the filter.
+		/// </summary>
+		/// <param name="name">The name to test.</param>
+		/// <returns>Returns true if the name matches the filter, false if it does not match.</returns>
+		bool IsMatch(string name);
+	}
+	
+	/// <summary>
+	/// PathFilter filters directories and files by full path name.
+	/// </summary>
+	public class PathFilter : IScanFilter
+	{
+		/// <summary>
+		/// Initialise a new instance of <see cref="PathFilter"></see>.
+		/// </summary>
+		/// <param name="filter">The <see cref="NameFilter"></see>filter expression to apply.</param>
+		public PathFilter(string filter)
+		{
+			nameFilter = new NameFilter(filter);
+		}
+
+		/// <summary>
+		/// Test a name to see if it matches the filter.
+		/// </summary>
+		/// <param name="name">The name to test.</param>
+		/// <returns>True if the name matches, false otherwise.</returns>
+		public virtual bool IsMatch(string name)
+		{
+			return nameFilter.IsMatch(Path.GetFullPath(name));
+		}
+		
+		#region Instance Fields
+		NameFilter nameFilter;
+		#endregion
+	}
+
+	/// <summary>
+	/// NameAnsSizeFilter filters based on name and file size.
+	/// </summary>
+	public class NameAndSizeFilter : PathFilter
+	{
+	
+		/// <summary>
+		/// Initialise a new instance of NameAndSizeFilter.
+		/// </summary>
+		/// <param name="filter">The filter to apply.</param>
+		/// <param name="minSize">The minimum file size to include.</param>
+		/// <param name="maxSize">The maximum file size to include.</param>
+		public NameAndSizeFilter(string filter, long minSize, long maxSize) : base(filter)
+		{
+			this.minSize = minSize;
+			this.maxSize = maxSize;
+		}
+		
+		/// <summary>
+		/// Test a filename to see if it matches the filter.
+		/// </summary>
+		/// <param name="fileName">The filename to test.</param>
+		/// <returns>True if the filter matches, false otherwise.</returns>
+		public override bool IsMatch(string fileName)
+		{
+			FileInfo fileInfo = new FileInfo(fileName);
+			long length = fileInfo.Length;
+			return base.IsMatch(fileName) &&
+				(MinSize <= length) && (MaxSize >= length);
+		}
+		
+		long minSize = 0;
+		
+		/// <summary>
+		/// The minimum size for a file that will match this filter.
+		/// </summary>
+		public long MinSize
+		{
+			get { return minSize; }
+			set { minSize = value; }
+		}
+		
+		long maxSize = long.MaxValue;
+		
+		/// <summary>
+		/// The maximum size for a file that will match this filter.
+		/// </summary>
+		public long MaxSize
+		{
+			get { return maxSize; }
+			set { maxSize = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Encryption/PkzipClassic.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Encryption/PkzipClassic.cs
@@ -1,472 +1,472 @@
-//
-// PkzipClassic encryption
-//
-// Copyright 2004 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-//
-
-using System;
-using System.Security.Cryptography;
-
-using ICSharpCode.SharpZipLib.Checksums;
-
-namespace ICSharpCode.SharpZipLib.Encryption
-{
-	/// <summary>
-	/// PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives.
-	/// While it has been superceded by more recent and more powerful algorithms, its still in use and 
-	/// is viable for preventing casual snooping
-	/// </summary>
-	public abstract class PkzipClassic  : SymmetricAlgorithm
-	{
-		/// <summary>
-		/// Generates new encryption keys based on given seed
-		/// </summary>
-		static public byte[] GenerateKeys(byte[] seed)
-		{
-			if ( seed == null ) 
-			{
-				throw new ArgumentNullException("seed");
-			}
-
-			if ( seed.Length == 0 )
-			{
-				throw new ArgumentException("seed");
-			}
-
-			uint[] newKeys = new uint[] {
-			                            0x12345678,
-			                            0x23456789,
-			                            0x34567890
-			                         };
-			
-			for (int i = 0; i < seed.Length; ++i) 
-			{
-				newKeys[0] = Crc32.ComputeCrc32(newKeys[0], seed[i]);
-				newKeys[1] = newKeys[1] + (byte)newKeys[0];
-				newKeys[1] = newKeys[1] * 134775813 + 1;
-				newKeys[2] = Crc32.ComputeCrc32(newKeys[2], (byte)(newKeys[1] >> 24));
-			}
-
-			byte[] result = new byte[12];
-			result[0] = (byte)(newKeys[0] & 0xff);
-			result[1] = (byte)((newKeys[0] >> 8) & 0xff);
-			result[2] = (byte)((newKeys[0] >> 16) & 0xff);
-			result[3] = (byte)((newKeys[0] >> 24) & 0xff);
-			result[4] = (byte)(newKeys[1] & 0xff);
-			result[5] = (byte)((newKeys[1] >> 8) & 0xff);
-			result[6] = (byte)((newKeys[1] >> 16) & 0xff);
-			result[7] = (byte)((newKeys[1] >> 24) & 0xff);
-			result[8] = (byte)(newKeys[2] & 0xff);
-			result[9] = (byte)((newKeys[2] >> 8) & 0xff);
-			result[10] = (byte)((newKeys[2] >> 16) & 0xff);
-			result[11] = (byte)((newKeys[2] >> 24) & 0xff);
-			return result;
-		}
-	}
-
-	/// <summary>
-	/// PkzipClassicCryptoBase provides the low level facilities for encryption
-	/// and decryption using the PkzipClassic algorithm.
-	/// </summary>
-	class PkzipClassicCryptoBase
-	{
-		uint[] keys     = null;
-
-		/// <summary>
-		/// Transform a single byte 
-		/// </summary>
-		/// <returns>
-		/// The transformed value
-		/// </returns>
-		protected byte TransformByte()
-		{
-			uint temp = ((keys[2] & 0xFFFF) | 2);
-			return (byte)((temp * (temp ^ 1)) >> 8);
-		}
-
-		protected void SetKeys(byte[] keyData)
-		{
-			if ( keyData == null ) {
-				throw new ArgumentNullException("keyData");
-			}
-		
-			if ( keyData.Length != 12 ) {
-				throw new InvalidOperationException("Keys not valid");
-			}
-			
-			keys = new uint[3];
-			keys[0] = (uint)((keyData[3] << 24) | (keyData[2] << 16) | (keyData[1] << 8) | keyData[0]);
-			keys[1] = (uint)((keyData[7] << 24) | (keyData[6] << 16) | (keyData[5] << 8) | keyData[4]);
-			keys[2] = (uint)((keyData[11] << 24) | (keyData[10] << 16) | (keyData[9] << 8) | keyData[8]);
-		}
-
-		/// <summary>
-		/// Update encryption keys 
-		/// </summary>		
-		protected void UpdateKeys(byte ch)
-		{
-			keys[0] = Crc32.ComputeCrc32(keys[0], ch);
-			keys[1] = keys[1] + (byte)keys[0];
-			keys[1] = keys[1] * 134775813 + 1;
-			keys[2] = Crc32.ComputeCrc32(keys[2], (byte)(keys[1] >> 24));
-		}
-
-		/// <summary>
-		/// Reset the internal state.
-		/// </summary>
-		protected void Reset()
-		{
-			keys[0] = 0;
-			keys[1] = 0;
-			keys[2] = 0;
-		}
-	}
-
-	/// <summary>
-	/// PkzipClassic CryptoTransform for encryption.
-	/// </summary>
-	class PkzipClassicEncryptCryptoTransform : PkzipClassicCryptoBase, ICryptoTransform
-	{
-		/// <summary>
-		/// Initialise a new instance of <see cref="PkzipClassicEncryptCryptoTransform"></see>
-		/// </summary>
-		/// <param name="keyBlock">The key block to use.</param>
-		internal PkzipClassicEncryptCryptoTransform(byte[] keyBlock)
-		{
-			SetKeys(keyBlock);
-		}
-
-		#region ICryptoTransform Members
-
-		/// <summary>
-		/// Transforms the specified region of the specified byte array.
-		/// </summary>
-		/// <param name="inputBuffer">The input for which to compute the transform.</param>
-		/// <param name="inputOffset">The offset into the byte array from which to begin using data.</param>
-		/// <param name="inputCount">The number of bytes in the byte array to use as data.</param>
-		/// <returns>The computed transform.</returns>
-		public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
-		{
-			byte[] result = new byte[inputCount];
-			TransformBlock(inputBuffer, inputOffset, inputCount, result, 0);
-			return result;
-		}
-
-		/// <summary>
-		/// Transforms the specified region of the input byte array and copies 
-		/// the resulting transform to the specified region of the output byte array.
-		/// </summary>
-		/// <param name="inputBuffer">The input for which to compute the transform.</param>
-		/// <param name="inputOffset">The offset into the input byte array from which to begin using data.</param>
-		/// <param name="inputCount">The number of bytes in the input byte array to use as data.</param>
-		/// <param name="outputBuffer">The output to which to write the transform.</param>
-		/// <param name="outputOffset">The offset into the output byte array from which to begin writing data.</param>
-		/// <returns>The number of bytes written.</returns>
-		public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-		{
-			for (int i = inputOffset; i < inputOffset + inputCount; ++i) {
-				byte oldbyte = inputBuffer[i];
-				outputBuffer[outputOffset++] = (byte)(inputBuffer[i] ^ TransformByte());
-				UpdateKeys(oldbyte);
-			}
-			return inputCount;
-		}
-
-		/// <summary>
-		/// Gets a value indicating whether the current transform can be reused.
-		/// </summary>
-		public bool CanReuseTransform
-		{
-			get {
-				return true;
-			}
-		}
-
-		/// <summary>
-		/// Gets the size of the input data blocks in bytes.
-		/// </summary>
-		public int InputBlockSize
-		{
-			get {
-				return 1;
-			}
-		}
-
-		/// <summary>
-		/// Gets the size of the output data blocks in bytes.
-		/// </summary>
-		public int OutputBlockSize
-		{
-			get {
-				return 1;
-			}
-		}
-
-		/// <summary>
-		/// Gets a value indicating whether multiple blocks can be transformed.
-		/// </summary>
-		public bool CanTransformMultipleBlocks
-		{
-			get {
-				return true;
-			}
-		}
-
-		#endregion
-
-		#region IDisposable Members
-
-		/// <summary>
-		/// Cleanup internal state.
-		/// </summary>
-		public void Dispose()
-		{
-			Reset();
-		}
-
-		#endregion
-	}
-
-
-	/// <summary>
-	/// PkzipClassic CryptoTransform for decryption.
-	/// </summary>
-	class PkzipClassicDecryptCryptoTransform : PkzipClassicCryptoBase, ICryptoTransform
-	{
-		/// <summary>
-		/// Initialise a new instance of <see cref="PkzipClassicDecryptCryptoTransform"></see>.
-		/// </summary>
-		/// <param name="keyBlock">The key block to decrypt with.</param>
-		internal PkzipClassicDecryptCryptoTransform(byte[] keyBlock)
-		{
-			SetKeys(keyBlock);
-		}
-
-		#region ICryptoTransform Members
-
-		/// <summary>
-		/// Transforms the specified region of the specified byte array.
-		/// </summary>
-		/// <param name="inputBuffer">The input for which to compute the transform.</param>
-		/// <param name="inputOffset">The offset into the byte array from which to begin using data.</param>
-		/// <param name="inputCount">The number of bytes in the byte array to use as data.</param>
-		/// <returns>The computed transform.</returns>
-		public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
-		{
-			byte[] result = new byte[inputCount];
-			TransformBlock(inputBuffer, inputOffset, inputCount, result, 0);
-			return result;
-		}
-
-		/// <summary>
-		/// Transforms the specified region of the input byte array and copies 
-		/// the resulting transform to the specified region of the output byte array.
-		/// </summary>
-		/// <param name="inputBuffer">The input for which to compute the transform.</param>
-		/// <param name="inputOffset">The offset into the input byte array from which to begin using data.</param>
-		/// <param name="inputCount">The number of bytes in the input byte array to use as data.</param>
-		/// <param name="outputBuffer">The output to which to write the transform.</param>
-		/// <param name="outputOffset">The offset into the output byte array from which to begin writing data.</param>
-		/// <returns>The number of bytes written.</returns>
-		public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-		{
-			for (int i = inputOffset; i < inputOffset + inputCount; ++i) {
-				byte newByte = (byte)(inputBuffer[i] ^ TransformByte());
-				outputBuffer[outputOffset++] = newByte;
-				UpdateKeys(newByte);
-			}
-			return inputCount;
-		}
-
-		/// <summary>
-		/// Gets a value indicating whether the current transform can be reused.
-		/// </summary>
-		public bool CanReuseTransform
-		{
-			get {
-				return true;
-			}
-		}
-
-		/// <summary>
-		/// Gets the size of the input data blocks in bytes.
-		/// </summary>
-		public int InputBlockSize
-		{
-			get {
-				return 1;
-			}
-		}
-
-		/// <summary>
-		/// Gets the size of the output data blocks in bytes.
-		/// </summary>
-		public int OutputBlockSize
-		{
-			get {
-				return 1;
-			}
-		}
-
-		/// <summary>
-		/// Gets a value indicating whether multiple blocks can be transformed.
-		/// </summary>
-		public bool CanTransformMultipleBlocks
-		{
-			get {
-				return true;
-			}
-		}
-
-		#endregion
-
-		#region IDisposable Members
-
-		/// <summary>
-		/// Cleanup internal state.
-		/// </summary>
-		public void Dispose()
-		{
-			Reset();
-		}
-
-		#endregion
-	}
-
-	/// <summary>
-	/// Defines a wrapper object to access the Pkzip algorithm. 
-	/// This class cannot be inherited.
-	/// </summary>
-	public sealed class PkzipClassicManaged : PkzipClassic
-	{
-		/// <summary>
-		/// Get / set the applicable block size.
-		/// </summary>
-		/// <remarks>The only valid block size is 8.</remarks>
-		public override int BlockSize 
-		{
-			get { return 8; }
-			set {
-				if (value != 8)
-					throw new CryptographicException();
-			}
-		}
-
-		/// <summary>
-		/// Get an array of legal <see cref="KeySizes">key sizes.</see>
-		/// </summary>
-		public override KeySizes[] LegalKeySizes
-		{
-			get {
-				KeySizes[] keySizes = new KeySizes[1];
-				keySizes[0] = new KeySizes(12 * 8, 12 * 8, 0);
-				return keySizes; 
-			}
-		}
-
-		/// <summary>
-		/// Generate an initial vector.
-		/// </summary>
-		public override void GenerateIV()
-		{
-			// Do nothing.
-		}
-
-		/// <summary>
-		/// Get an array of legal <see cref="KeySizes">block sizes</see>.
-		/// </summary>
-		public override KeySizes[] LegalBlockSizes
-		{
-			get {
-				KeySizes[] keySizes = new KeySizes[1];
-				keySizes[0] = new KeySizes(1 * 8, 1 * 8, 0);
-				return keySizes; 
-			}
-		}
-
-		byte[] key;
-
-		/// <summary>
-		/// Get / set the key value applicable.
-		/// </summary>
-		public override byte[] Key
-		{
-			get {
-				return key;
-			}
-		
-			set {
-				key = value;
-			}
-		}
-
-		/// <summary>
-		/// Generate a new random key.
-		/// </summary>
-		public override void GenerateKey()
-		{
-			key = new byte[12];
-			Random rnd = new Random();
-			rnd.NextBytes(key);
-		}
-
-		/// <summary>
-		/// Create an encryptor.
-		/// </summary>
-		/// <param name="rgbKey">The key to use for this encryptor.</param>
-		/// <param name="rgbIV">Initialisation vector for the new encryptor.</param>
-		/// <returns>Returns a new PkzipClassic encryptor</returns>
-		public override ICryptoTransform CreateEncryptor(
-			byte[] rgbKey,
-			byte[] rgbIV
-		)
-		{
-			return new PkzipClassicEncryptCryptoTransform(rgbKey);
-		}
-
-		/// <summary>
-		/// Create a decryptor.
-		/// </summary>
-		/// <param name="rgbKey">Keys to use for this new decryptor.</param>
-		/// <param name="rgbIV">Initialisation vector for the new decryptor.</param>
-		/// <returns>Returns a new decryptor.</returns>
-		public override ICryptoTransform CreateDecryptor(
-			byte[] rgbKey,
-			byte[] rgbIV
-		)
-		{
-			return new PkzipClassicDecryptCryptoTransform(rgbKey);
-		}
-	}
-}
+//
+// PkzipClassic encryption
+//
+// Copyright 2004 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+//
+
+using System;
+using System.Security.Cryptography;
+
+using ICSharpCode.SharpZipLib.Checksums;
+
+namespace ICSharpCode.SharpZipLib.Encryption
+{
+	/// <summary>
+	/// PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives.
+	/// While it has been superceded by more recent and more powerful algorithms, its still in use and 
+	/// is viable for preventing casual snooping
+	/// </summary>
+	public abstract class PkzipClassic  : SymmetricAlgorithm
+	{
+		/// <summary>
+		/// Generates new encryption keys based on given seed
+		/// </summary>
+		static public byte[] GenerateKeys(byte[] seed)
+		{
+			if ( seed == null ) 
+			{
+				throw new ArgumentNullException("seed");
+			}
+
+			if ( seed.Length == 0 )
+			{
+				throw new ArgumentException("seed");
+			}
+
+			uint[] newKeys = new uint[] {
+			                            0x12345678,
+			                            0x23456789,
+			                            0x34567890
+			                         };
+			
+			for (int i = 0; i < seed.Length; ++i) 
+			{
+				newKeys[0] = Crc32.ComputeCrc32(newKeys[0], seed[i]);
+				newKeys[1] = newKeys[1] + (byte)newKeys[0];
+				newKeys[1] = newKeys[1] * 134775813 + 1;
+				newKeys[2] = Crc32.ComputeCrc32(newKeys[2], (byte)(newKeys[1] >> 24));
+			}
+
+			byte[] result = new byte[12];
+			result[0] = (byte)(newKeys[0] & 0xff);
+			result[1] = (byte)((newKeys[0] >> 8) & 0xff);
+			result[2] = (byte)((newKeys[0] >> 16) & 0xff);
+			result[3] = (byte)((newKeys[0] >> 24) & 0xff);
+			result[4] = (byte)(newKeys[1] & 0xff);
+			result[5] = (byte)((newKeys[1] >> 8) & 0xff);
+			result[6] = (byte)((newKeys[1] >> 16) & 0xff);
+			result[7] = (byte)((newKeys[1] >> 24) & 0xff);
+			result[8] = (byte)(newKeys[2] & 0xff);
+			result[9] = (byte)((newKeys[2] >> 8) & 0xff);
+			result[10] = (byte)((newKeys[2] >> 16) & 0xff);
+			result[11] = (byte)((newKeys[2] >> 24) & 0xff);
+			return result;
+		}
+	}
+
+	/// <summary>
+	/// PkzipClassicCryptoBase provides the low level facilities for encryption
+	/// and decryption using the PkzipClassic algorithm.
+	/// </summary>
+	class PkzipClassicCryptoBase
+	{
+		uint[] keys     = null;
+
+		/// <summary>
+		/// Transform a single byte 
+		/// </summary>
+		/// <returns>
+		/// The transformed value
+		/// </returns>
+		protected byte TransformByte()
+		{
+			uint temp = ((keys[2] & 0xFFFF) | 2);
+			return (byte)((temp * (temp ^ 1)) >> 8);
+		}
+
+		protected void SetKeys(byte[] keyData)
+		{
+			if ( keyData == null ) {
+				throw new ArgumentNullException("keyData");
+			}
+		
+			if ( keyData.Length != 12 ) {
+				throw new InvalidOperationException("Keys not valid");
+			}
+			
+			keys = new uint[3];
+			keys[0] = (uint)((keyData[3] << 24) | (keyData[2] << 16) | (keyData[1] << 8) | keyData[0]);
+			keys[1] = (uint)((keyData[7] << 24) | (keyData[6] << 16) | (keyData[5] << 8) | keyData[4]);
+			keys[2] = (uint)((keyData[11] << 24) | (keyData[10] << 16) | (keyData[9] << 8) | keyData[8]);
+		}
+
+		/// <summary>
+		/// Update encryption keys 
+		/// </summary>		
+		protected void UpdateKeys(byte ch)
+		{
+			keys[0] = Crc32.ComputeCrc32(keys[0], ch);
+			keys[1] = keys[1] + (byte)keys[0];
+			keys[1] = keys[1] * 134775813 + 1;
+			keys[2] = Crc32.ComputeCrc32(keys[2], (byte)(keys[1] >> 24));
+		}
+
+		/// <summary>
+		/// Reset the internal state.
+		/// </summary>
+		protected void Reset()
+		{
+			keys[0] = 0;
+			keys[1] = 0;
+			keys[2] = 0;
+		}
+	}
+
+	/// <summary>
+	/// PkzipClassic CryptoTransform for encryption.
+	/// </summary>
+	class PkzipClassicEncryptCryptoTransform : PkzipClassicCryptoBase, ICryptoTransform
+	{
+		/// <summary>
+		/// Initialise a new instance of <see cref="PkzipClassicEncryptCryptoTransform"></see>
+		/// </summary>
+		/// <param name="keyBlock">The key block to use.</param>
+		internal PkzipClassicEncryptCryptoTransform(byte[] keyBlock)
+		{
+			SetKeys(keyBlock);
+		}
+
+		#region ICryptoTransform Members
+
+		/// <summary>
+		/// Transforms the specified region of the specified byte array.
+		/// </summary>
+		/// <param name="inputBuffer">The input for which to compute the transform.</param>
+		/// <param name="inputOffset">The offset into the byte array from which to begin using data.</param>
+		/// <param name="inputCount">The number of bytes in the byte array to use as data.</param>
+		/// <returns>The computed transform.</returns>
+		public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
+		{
+			byte[] result = new byte[inputCount];
+			TransformBlock(inputBuffer, inputOffset, inputCount, result, 0);
+			return result;
+		}
+
+		/// <summary>
+		/// Transforms the specified region of the input byte array and copies 
+		/// the resulting transform to the specified region of the output byte array.
+		/// </summary>
+		/// <param name="inputBuffer">The input for which to compute the transform.</param>
+		/// <param name="inputOffset">The offset into the input byte array from which to begin using data.</param>
+		/// <param name="inputCount">The number of bytes in the input byte array to use as data.</param>
+		/// <param name="outputBuffer">The output to which to write the transform.</param>
+		/// <param name="outputOffset">The offset into the output byte array from which to begin writing data.</param>
+		/// <returns>The number of bytes written.</returns>
+		public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
+		{
+			for (int i = inputOffset; i < inputOffset + inputCount; ++i) {
+				byte oldbyte = inputBuffer[i];
+				outputBuffer[outputOffset++] = (byte)(inputBuffer[i] ^ TransformByte());
+				UpdateKeys(oldbyte);
+			}
+			return inputCount;
+		}
+
+		/// <summary>
+		/// Gets a value indicating whether the current transform can be reused.
+		/// </summary>
+		public bool CanReuseTransform
+		{
+			get {
+				return true;
+			}
+		}
+
+		/// <summary>
+		/// Gets the size of the input data blocks in bytes.
+		/// </summary>
+		public int InputBlockSize
+		{
+			get {
+				return 1;
+			}
+		}
+
+		/// <summary>
+		/// Gets the size of the output data blocks in bytes.
+		/// </summary>
+		public int OutputBlockSize
+		{
+			get {
+				return 1;
+			}
+		}
+
+		/// <summary>
+		/// Gets a value indicating whether multiple blocks can be transformed.
+		/// </summary>
+		public bool CanTransformMultipleBlocks
+		{
+			get {
+				return true;
+			}
+		}
+
+		#endregion
+
+		#region IDisposable Members
+
+		/// <summary>
+		/// Cleanup internal state.
+		/// </summary>
+		public void Dispose()
+		{
+			Reset();
+		}
+
+		#endregion
+	}
+
+
+	/// <summary>
+	/// PkzipClassic CryptoTransform for decryption.
+	/// </summary>
+	class PkzipClassicDecryptCryptoTransform : PkzipClassicCryptoBase, ICryptoTransform
+	{
+		/// <summary>
+		/// Initialise a new instance of <see cref="PkzipClassicDecryptCryptoTransform"></see>.
+		/// </summary>
+		/// <param name="keyBlock">The key block to decrypt with.</param>
+		internal PkzipClassicDecryptCryptoTransform(byte[] keyBlock)
+		{
+			SetKeys(keyBlock);
+		}
+
+		#region ICryptoTransform Members
+
+		/// <summary>
+		/// Transforms the specified region of the specified byte array.
+		/// </summary>
+		/// <param name="inputBuffer">The input for which to compute the transform.</param>
+		/// <param name="inputOffset">The offset into the byte array from which to begin using data.</param>
+		/// <param name="inputCount">The number of bytes in the byte array to use as data.</param>
+		/// <returns>The computed transform.</returns>
+		public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
+		{
+			byte[] result = new byte[inputCount];
+			TransformBlock(inputBuffer, inputOffset, inputCount, result, 0);
+			return result;
+		}
+
+		/// <summary>
+		/// Transforms the specified region of the input byte array and copies 
+		/// the resulting transform to the specified region of the output byte array.
+		/// </summary>
+		/// <param name="inputBuffer">The input for which to compute the transform.</param>
+		/// <param name="inputOffset">The offset into the input byte array from which to begin using data.</param>
+		/// <param name="inputCount">The number of bytes in the input byte array to use as data.</param>
+		/// <param name="outputBuffer">The output to which to write the transform.</param>
+		/// <param name="outputOffset">The offset into the output byte array from which to begin writing data.</param>
+		/// <returns>The number of bytes written.</returns>
+		public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
+		{
+			for (int i = inputOffset; i < inputOffset + inputCount; ++i) {
+				byte newByte = (byte)(inputBuffer[i] ^ TransformByte());
+				outputBuffer[outputOffset++] = newByte;
+				UpdateKeys(newByte);
+			}
+			return inputCount;
+		}
+
+		/// <summary>
+		/// Gets a value indicating whether the current transform can be reused.
+		/// </summary>
+		public bool CanReuseTransform
+		{
+			get {
+				return true;
+			}
+		}
+
+		/// <summary>
+		/// Gets the size of the input data blocks in bytes.
+		/// </summary>
+		public int InputBlockSize
+		{
+			get {
+				return 1;
+			}
+		}
+
+		/// <summary>
+		/// Gets the size of the output data blocks in bytes.
+		/// </summary>
+		public int OutputBlockSize
+		{
+			get {
+				return 1;
+			}
+		}
+
+		/// <summary>
+		/// Gets a value indicating whether multiple blocks can be transformed.
+		/// </summary>
+		public bool CanTransformMultipleBlocks
+		{
+			get {
+				return true;
+			}
+		}
+
+		#endregion
+
+		#region IDisposable Members
+
+		/// <summary>
+		/// Cleanup internal state.
+		/// </summary>
+		public void Dispose()
+		{
+			Reset();
+		}
+
+		#endregion
+	}
+
+	/// <summary>
+	/// Defines a wrapper object to access the Pkzip algorithm. 
+	/// This class cannot be inherited.
+	/// </summary>
+	public sealed class PkzipClassicManaged : PkzipClassic
+	{
+		/// <summary>
+		/// Get / set the applicable block size.
+		/// </summary>
+		/// <remarks>The only valid block size is 8.</remarks>
+		public override int BlockSize 
+		{
+			get { return 8; }
+			set {
+				if (value != 8)
+					throw new CryptographicException();
+			}
+		}
+
+		/// <summary>
+		/// Get an array of legal <see cref="KeySizes">key sizes.</see>
+		/// </summary>
+		public override KeySizes[] LegalKeySizes
+		{
+			get {
+				KeySizes[] keySizes = new KeySizes[1];
+				keySizes[0] = new KeySizes(12 * 8, 12 * 8, 0);
+				return keySizes; 
+			}
+		}
+
+		/// <summary>
+		/// Generate an initial vector.
+		/// </summary>
+		public override void GenerateIV()
+		{
+			// Do nothing.
+		}
+
+		/// <summary>
+		/// Get an array of legal <see cref="KeySizes">block sizes</see>.
+		/// </summary>
+		public override KeySizes[] LegalBlockSizes
+		{
+			get {
+				KeySizes[] keySizes = new KeySizes[1];
+				keySizes[0] = new KeySizes(1 * 8, 1 * 8, 0);
+				return keySizes; 
+			}
+		}
+
+		byte[] key;
+
+		/// <summary>
+		/// Get / set the key value applicable.
+		/// </summary>
+		public override byte[] Key
+		{
+			get {
+				return key;
+			}
+		
+			set {
+				key = value;
+			}
+		}
+
+		/// <summary>
+		/// Generate a new random key.
+		/// </summary>
+		public override void GenerateKey()
+		{
+			key = new byte[12];
+			Random rnd = new Random();
+			rnd.NextBytes(key);
+		}
+
+		/// <summary>
+		/// Create an encryptor.
+		/// </summary>
+		/// <param name="rgbKey">The key to use for this encryptor.</param>
+		/// <param name="rgbIV">Initialisation vector for the new encryptor.</param>
+		/// <returns>Returns a new PkzipClassic encryptor</returns>
+		public override ICryptoTransform CreateEncryptor(
+			byte[] rgbKey,
+			byte[] rgbIV
+		)
+		{
+			return new PkzipClassicEncryptCryptoTransform(rgbKey);
+		}
+
+		/// <summary>
+		/// Create a decryptor.
+		/// </summary>
+		/// <param name="rgbKey">Keys to use for this new decryptor.</param>
+		/// <param name="rgbIV">Initialisation vector for the new decryptor.</param>
+		/// <returns>Returns a new decryptor.</returns>
+		public override ICryptoTransform CreateDecryptor(
+			byte[] rgbKey,
+			byte[] rgbIV
+		)
+		{
+			return new PkzipClassicDecryptCryptoTransform(rgbKey);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GZIPConstants.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GZIPConstants.cs
@@ -1,92 +1,92 @@
-// GZIPConstants.cs
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-namespace ICSharpCode.SharpZipLib.GZip 
-{
-	
-	/// <summary>
-	/// This class contains constants used for gzip.
-	/// </summary>
-	public class GZipConstants
-	{
-		/// <summary>
-		/// Magic number found at start of GZIP header
-		/// </summary>
-		public static readonly int GZIP_MAGIC = 0x1F8B;
-		
-		/*  The flag byte is divided into individual bits as follows:
-			
-			bit 0   FTEXT
-			bit 1   FHCRC
-			bit 2   FEXTRA
-			bit 3   FNAME
-			bit 4   FCOMMENT
-			bit 5   reserved
-			bit 6   reserved
-			bit 7   reserved
-		 */
-		 
-		/// <summary>
-		/// Flag bit mask for text
-		/// </summary>
-		public const int FTEXT    = 0x1;
-		
-		/// <summary>
-		/// Flag bitmask for Crc
-		/// </summary>
-		public const int FHCRC    = 0x2;
-		
-		/// <summary>
-		/// Flag bit mask for extra
-		/// </summary>
-		public const int FEXTRA   = 0x4;
-		
-		/// <summary>
-		/// flag bitmask for name
-		/// </summary>
-		public const int FNAME    = 0x8;
-		
-		/// <summary>
-		/// flag bit mask indicating comment is present
-		/// </summary>
-		public const int FCOMMENT = 0x10;
-		
-		GZipConstants()
-		{
-		}
-	}
-}
+// GZIPConstants.cs
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+namespace ICSharpCode.SharpZipLib.GZip 
+{
+	
+	/// <summary>
+	/// This class contains constants used for gzip.
+	/// </summary>
+	public class GZipConstants
+	{
+		/// <summary>
+		/// Magic number found at start of GZIP header
+		/// </summary>
+		public static readonly int GZIP_MAGIC = 0x1F8B;
+		
+		/*  The flag byte is divided into individual bits as follows:
+			
+			bit 0   FTEXT
+			bit 1   FHCRC
+			bit 2   FEXTRA
+			bit 3   FNAME
+			bit 4   FCOMMENT
+			bit 5   reserved
+			bit 6   reserved
+			bit 7   reserved
+		 */
+		 
+		/// <summary>
+		/// Flag bit mask for text
+		/// </summary>
+		public const int FTEXT    = 0x1;
+		
+		/// <summary>
+		/// Flag bitmask for Crc
+		/// </summary>
+		public const int FHCRC    = 0x2;
+		
+		/// <summary>
+		/// Flag bit mask for extra
+		/// </summary>
+		public const int FEXTRA   = 0x4;
+		
+		/// <summary>
+		/// flag bitmask for name
+		/// </summary>
+		public const int FNAME    = 0x8;
+		
+		/// <summary>
+		/// flag bit mask indicating comment is present
+		/// </summary>
+		public const int FCOMMENT = 0x10;
+		
+		GZipConstants()
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GZipException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GZipException.cs
@@ -1,61 +1,61 @@
-// GzipOutputStream.cs
-//
-// Copyright 2004 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using ICSharpCode.SharpZipLib;
-
-namespace ICSharpCode.SharpZipLib.GZip
-{
-	/// <summary>
-	/// GZipException represents a Gzip specific exception	
-	/// </summary>
-	public class GZipException : SharpZipBaseException
-	{
-		/// <summary>
-		/// Initialise a new instance of GZipException
-		/// </summary>
-		public GZipException()
-		{
-		}
-		
-		/// <summary>
-		/// Initialise a new instance of GZipException with its message string.
-		/// </summary>
-		/// <param name="message">A <see cref="string"></see>string that describes the error.</param>
-		public GZipException(string message) : base(message)
-		{
-		}
-	}
-}
+// GzipOutputStream.cs
+//
+// Copyright 2004 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using ICSharpCode.SharpZipLib;
+
+namespace ICSharpCode.SharpZipLib.GZip
+{
+	/// <summary>
+	/// GZipException represents a Gzip specific exception	
+	/// </summary>
+	public class GZipException : SharpZipBaseException
+	{
+		/// <summary>
+		/// Initialise a new instance of GZipException
+		/// </summary>
+		public GZipException()
+		{
+		}
+		
+		/// <summary>
+		/// Initialise a new instance of GZipException with its message string.
+		/// </summary>
+		/// <param name="message">A <see cref="string"></see>string that describes the error.</param>
+		public GZipException(string message) : base(message)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GzipInputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GzipInputStream.cs
@@ -1,340 +1,340 @@
-// GzipInputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-
-using ICSharpCode.SharpZipLib.Checksums;
-using ICSharpCode.SharpZipLib.Zip.Compression;
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-
-namespace ICSharpCode.SharpZipLib.GZip 
-{
-	
-	/// <summary>
-	/// This filter stream is used to decompress a "GZIP" format stream.
-	/// The "GZIP" format is described baseInputStream RFC 1952.
-	/// 
-	/// author of the original java version : John Leuner
-	/// </summary>
-	/// <example> This sample shows how to unzip a gzipped file
-	/// <code>
-	/// using System;
-	/// using System.IO;
-	/// 
-	/// using ICSharpCode.SharpZipLib.GZip;
-	/// 
-	/// class MainClass
-	/// {
-	/// 	public static void Main(string[] args)
-	/// 	{
-	/// 		Stream s = new GZipInputStream(File.OpenRead(args[0]));
-	/// 		FileStream fs = File.Create(Path.GetFileNameWithoutExtension(args[0]));
-	/// 		int size = 2048;
-	/// 		byte[] writeData = new byte[2048];
-	/// 		while (true) {
-	/// 			size = s.Read(writeData, 0, size);
-	/// 			if (size > 0) {
-	/// 				fs.Write(writeData, 0, size);
-	/// 			} else {
-	/// 				break;
-	/// 			}
-	/// 		}
-	/// 		s.Close();
-	/// 	}
-	/// }	
-	/// </code>
-	/// </example>
-	public class GZipInputStream : InflaterInputStream 
-	{
-		/// <summary>
-		/// CRC-32 value for uncompressed data
-		/// </summary>
-		protected Crc32 crc = new Crc32();
-		
-		/// <summary>
-		/// Indicates end of stream
-		/// </summary>
-		protected bool eos;
-		
-		// Have we read the GZIP header yet?
-		bool readGZIPHeader;
-		
-		/// <summary>
-		/// Creates a GzipInputStream with the default buffer size
-		/// </summary>
-		/// <param name="baseInputStream">
-		/// The stream to read compressed data from (baseInputStream GZIP format)
-		/// </param>
-		public GZipInputStream(Stream baseInputStream) : this(baseInputStream, 4096)
-		{
-		}
-		
-		/// <summary>
-		/// Creates a GZIPInputStream with the specified buffer size
-		/// </summary>
-		/// <param name="baseInputStream">
-		/// The stream to read compressed data from (baseInputStream GZIP format)
-		/// </param>
-		/// <param name="size">
-		/// Size of the buffer to use
-		/// </param>
-		public GZipInputStream(Stream baseInputStream, int size) : base(baseInputStream, new Inflater(true), size)
-		{
-		}
-		
-		/// <summary>
-		/// Reads uncompressed data into an array of bytes
-		/// </summary>
-		/// <param name="buf">
-		/// The buffer to read uncompressed data into
-		/// </param>
-		/// <param name="offset">
-		/// The offset indicating where the data should be placed
-		/// </param>
-		/// <param name="len">
-		/// The number of uncompressed bytes to be read
-		/// </param>
-		public override int Read(byte[] buf, int offset, int len) 
-		{
-			// We first have to read the GZIP header, then we feed all the
-			// rest of the data to the base class.
-			//
-			// As we do that we continually update the CRC32. Once the data is
-			// finished, we check the CRC32
-			//
-			// This means we don't need our own buffer, as everything is done
-			// baseInputStream the superclass.
-			if (!readGZIPHeader) {
-				ReadHeader();
-			}
-			
-			if (eos) {
-				return 0;
-			}
-			
-			// We don't have to read the header, so we just grab data from the superclass
-			int numRead = base.Read(buf, offset, len);
-			if (numRead > 0) {
-				crc.Update(buf, offset, numRead);
-			}
-			
-			if (inf.IsFinished) {
-				ReadFooter();
-			}
-			return numRead;
-		}
-		
-		void ReadHeader() 
-		{
-			/* 1. Check the two magic bytes */
-			Crc32 headCRC = new Crc32();
-			int magic = baseInputStream.ReadByte();
-			if (magic < 0) {
-				eos = true;
-				return;
-			}
-			headCRC.Update(magic);
-			if (magic != (GZipConstants.GZIP_MAGIC >> 8)) {
-				throw new GZipException("Error baseInputStream GZIP header, first byte doesn't match");
-			}
-				
-			magic = baseInputStream.ReadByte();
-			if (magic != (GZipConstants.GZIP_MAGIC & 0xFF)) {
-				throw new GZipException("Error baseInputStream GZIP header,  second byte doesn't match");
-			}
-			headCRC.Update(magic);
-			
-			/* 2. Check the compression type (must be 8) */
-			int CM = baseInputStream.ReadByte();
-			if (CM != 8) {
-				throw new GZipException("Error baseInputStream GZIP header, data not baseInputStream deflate format");
-			}
-			headCRC.Update(CM);
-			
-			/* 3. Check the flags */
-			int flags = baseInputStream.ReadByte();
-			if (flags < 0) {
-				throw new GZipException("Early EOF baseInputStream GZIP header");
-			}
-			headCRC.Update(flags);
-			
-			/*    This flag byte is divided into individual bits as follows:
-				
-				bit 0   FTEXT
-				bit 1   FHCRC
-				bit 2   FEXTRA
-				bit 3   FNAME
-				bit 4   FCOMMENT
-				bit 5   reserved
-				bit 6   reserved
-				bit 7   reserved
-				*/
-				
-			/* 3.1 Check the reserved bits are zero */
-			
-			if ((flags & 0xd0) != 0) {
-				throw new GZipException("Reserved flag bits baseInputStream GZIP header != 0");
-			}
-			
-			/* 4.-6. Skip the modification time, extra flags, and OS type */
-			for (int i=0; i< 6; i++) {
-				int readByte = baseInputStream.ReadByte();
-				if (readByte < 0) {
-					throw new GZipException("Early EOF baseInputStream GZIP header");
-				}
-				headCRC.Update(readByte);
-			}
-			
-			/* 7. Read extra field */
-			if ((flags & GZipConstants.FEXTRA) != 0) {
-				/* Skip subfield id */
-				for (int i=0; i< 2; i++) {
-					int readByte = baseInputStream.ReadByte();
-					if (readByte < 0) {
-						throw new GZipException("Early EOF baseInputStream GZIP header");
-					}
-					headCRC.Update(readByte);
-				}
-				if (baseInputStream.ReadByte() < 0 || baseInputStream.ReadByte() < 0) {
-					throw new GZipException("Early EOF baseInputStream GZIP header");
-				}
-				
-				int len1, len2, extraLen;
-				len1 = baseInputStream.ReadByte();
-				len2 = baseInputStream.ReadByte();
-				if ((len1 < 0) || (len2 < 0)) {
-					throw new GZipException("Early EOF baseInputStream GZIP header");
-				}
-				headCRC.Update(len1);
-				headCRC.Update(len2);
-				
-				extraLen = (len1 << 8) | len2;
-				for (int i = 0; i < extraLen;i++) {
-					int readByte = baseInputStream.ReadByte();
-					if (readByte < 0) 
-					{
-						throw new GZipException("Early EOF baseInputStream GZIP header");
-					}
-					headCRC.Update(readByte);
-				}
-			}
-			
-			/* 8. Read file name */
-			if ((flags & GZipConstants.FNAME) != 0) {
-				int readByte;
-				while ( (readByte = baseInputStream.ReadByte()) > 0) {
-					headCRC.Update(readByte);
-				}
-				if (readByte < 0) {
-					throw new GZipException("Early EOF baseInputStream GZIP file name");
-				}
-				headCRC.Update(readByte);
-			}
-			
-			/* 9. Read comment */
-			if ((flags & GZipConstants.FCOMMENT) != 0) {
-				int readByte;
-				while ( (readByte = baseInputStream.ReadByte()) > 0) {
-					headCRC.Update(readByte);
-				}
-				
-				if (readByte < 0) {
-					throw new GZipException("Early EOF baseInputStream GZIP comment");
-				}
-				headCRC.Update(readByte);
-			}
-			
-			/* 10. Read header CRC */
-			if ((flags & GZipConstants.FHCRC) != 0) {
-				int tempByte;
-				int crcval = baseInputStream.ReadByte();
-				if (crcval < 0) {
-					throw new GZipException("Early EOF baseInputStream GZIP header");
-				}
-				
-				tempByte = baseInputStream.ReadByte();
-				if (tempByte < 0) {
-					throw new GZipException("Early EOF baseInputStream GZIP header");
-				}
-				
-				crcval = (crcval << 8) | tempByte;
-				if (crcval != ((int) headCRC.Value & 0xffff)) {
-					throw new GZipException("Header CRC value mismatch");
-				}
-			}
-			
-			readGZIPHeader = true;
-		}
-		
-		void ReadFooter() 
-		{
-			byte[] footer = new byte[8];
-			int avail = inf.RemainingInput;
-			
-			if (avail > 8) {
-				avail = 8;
-			}
-			
-         System.Array.Copy(inputBuffer.RawData, inputBuffer.RawLength - inf.RemainingInput, footer, 0, avail);
-         int needed = 8 - avail;
-			
-			while (needed > 0) {
-				int count = baseInputStream.Read(footer, 8 - needed, needed);
-				if (count <= 0) {
-					throw new GZipException("Early EOF baseInputStream GZIP footer");
-				}
-				needed -= count; // Jewel Jan 16
-			}
-			int crcval = (footer[0] & 0xff) | ((footer[1] & 0xff) << 8) | ((footer[2] & 0xff) << 16) | (footer[3] << 24);
-			if (crcval != (int) crc.Value) {
-				throw new GZipException("GZIP crc sum mismatch, theirs \"" + crcval + "\" and ours \"" + (int) crc.Value);
-			}
-			
-			int total = (footer[4] & 0xff) | ((footer[5] & 0xff) << 8) | ((footer[6] & 0xff) << 16) | (footer[7] << 24);
-			if (total != inf.TotalOut) {
-				throw new GZipException("Number of bytes mismatch in footer");
-			}
-			
-			/* XXX Should we support multiple members.
-			* Difficult, since there may be some bytes still baseInputStream dataBuffer
-			*/
-			eos = true;
-		}
-	}
-}
+// GzipInputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Checksums;
+using ICSharpCode.SharpZipLib.Zip.Compression;
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+
+namespace ICSharpCode.SharpZipLib.GZip 
+{
+	
+	/// <summary>
+	/// This filter stream is used to decompress a "GZIP" format stream.
+	/// The "GZIP" format is described baseInputStream RFC 1952.
+	/// 
+	/// author of the original java version : John Leuner
+	/// </summary>
+	/// <example> This sample shows how to unzip a gzipped file
+	/// <code>
+	/// using System;
+	/// using System.IO;
+	/// 
+	/// using ICSharpCode.SharpZipLib.GZip;
+	/// 
+	/// class MainClass
+	/// {
+	/// 	public static void Main(string[] args)
+	/// 	{
+	/// 		Stream s = new GZipInputStream(File.OpenRead(args[0]));
+	/// 		FileStream fs = File.Create(Path.GetFileNameWithoutExtension(args[0]));
+	/// 		int size = 2048;
+	/// 		byte[] writeData = new byte[2048];
+	/// 		while (true) {
+	/// 			size = s.Read(writeData, 0, size);
+	/// 			if (size > 0) {
+	/// 				fs.Write(writeData, 0, size);
+	/// 			} else {
+	/// 				break;
+	/// 			}
+	/// 		}
+	/// 		s.Close();
+	/// 	}
+	/// }	
+	/// </code>
+	/// </example>
+	public class GZipInputStream : InflaterInputStream 
+	{
+		/// <summary>
+		/// CRC-32 value for uncompressed data
+		/// </summary>
+		protected Crc32 crc = new Crc32();
+		
+		/// <summary>
+		/// Indicates end of stream
+		/// </summary>
+		protected bool eos;
+		
+		// Have we read the GZIP header yet?
+		bool readGZIPHeader;
+		
+		/// <summary>
+		/// Creates a GzipInputStream with the default buffer size
+		/// </summary>
+		/// <param name="baseInputStream">
+		/// The stream to read compressed data from (baseInputStream GZIP format)
+		/// </param>
+		public GZipInputStream(Stream baseInputStream) : this(baseInputStream, 4096)
+		{
+		}
+		
+		/// <summary>
+		/// Creates a GZIPInputStream with the specified buffer size
+		/// </summary>
+		/// <param name="baseInputStream">
+		/// The stream to read compressed data from (baseInputStream GZIP format)
+		/// </param>
+		/// <param name="size">
+		/// Size of the buffer to use
+		/// </param>
+		public GZipInputStream(Stream baseInputStream, int size) : base(baseInputStream, new Inflater(true), size)
+		{
+		}
+		
+		/// <summary>
+		/// Reads uncompressed data into an array of bytes
+		/// </summary>
+		/// <param name="buf">
+		/// The buffer to read uncompressed data into
+		/// </param>
+		/// <param name="offset">
+		/// The offset indicating where the data should be placed
+		/// </param>
+		/// <param name="len">
+		/// The number of uncompressed bytes to be read
+		/// </param>
+		public override int Read(byte[] buf, int offset, int len) 
+		{
+			// We first have to read the GZIP header, then we feed all the
+			// rest of the data to the base class.
+			//
+			// As we do that we continually update the CRC32. Once the data is
+			// finished, we check the CRC32
+			//
+			// This means we don't need our own buffer, as everything is done
+			// baseInputStream the superclass.
+			if (!readGZIPHeader) {
+				ReadHeader();
+			}
+			
+			if (eos) {
+				return 0;
+			}
+			
+			// We don't have to read the header, so we just grab data from the superclass
+			int numRead = base.Read(buf, offset, len);
+			if (numRead > 0) {
+				crc.Update(buf, offset, numRead);
+			}
+			
+			if (inf.IsFinished) {
+				ReadFooter();
+			}
+			return numRead;
+		}
+		
+		void ReadHeader() 
+		{
+			/* 1. Check the two magic bytes */
+			Crc32 headCRC = new Crc32();
+			int magic = baseInputStream.ReadByte();
+			if (magic < 0) {
+				eos = true;
+				return;
+			}
+			headCRC.Update(magic);
+			if (magic != (GZipConstants.GZIP_MAGIC >> 8)) {
+				throw new GZipException("Error baseInputStream GZIP header, first byte doesn't match");
+			}
+				
+			magic = baseInputStream.ReadByte();
+			if (magic != (GZipConstants.GZIP_MAGIC & 0xFF)) {
+				throw new GZipException("Error baseInputStream GZIP header,  second byte doesn't match");
+			}
+			headCRC.Update(magic);
+			
+			/* 2. Check the compression type (must be 8) */
+			int CM = baseInputStream.ReadByte();
+			if (CM != 8) {
+				throw new GZipException("Error baseInputStream GZIP header, data not baseInputStream deflate format");
+			}
+			headCRC.Update(CM);
+			
+			/* 3. Check the flags */
+			int flags = baseInputStream.ReadByte();
+			if (flags < 0) {
+				throw new GZipException("Early EOF baseInputStream GZIP header");
+			}
+			headCRC.Update(flags);
+			
+			/*    This flag byte is divided into individual bits as follows:
+				
+				bit 0   FTEXT
+				bit 1   FHCRC
+				bit 2   FEXTRA
+				bit 3   FNAME
+				bit 4   FCOMMENT
+				bit 5   reserved
+				bit 6   reserved
+				bit 7   reserved
+				*/
+				
+			/* 3.1 Check the reserved bits are zero */
+			
+			if ((flags & 0xd0) != 0) {
+				throw new GZipException("Reserved flag bits baseInputStream GZIP header != 0");
+			}
+			
+			/* 4.-6. Skip the modification time, extra flags, and OS type */
+			for (int i=0; i< 6; i++) {
+				int readByte = baseInputStream.ReadByte();
+				if (readByte < 0) {
+					throw new GZipException("Early EOF baseInputStream GZIP header");
+				}
+				headCRC.Update(readByte);
+			}
+			
+			/* 7. Read extra field */
+			if ((flags & GZipConstants.FEXTRA) != 0) {
+				/* Skip subfield id */
+				for (int i=0; i< 2; i++) {
+					int readByte = baseInputStream.ReadByte();
+					if (readByte < 0) {
+						throw new GZipException("Early EOF baseInputStream GZIP header");
+					}
+					headCRC.Update(readByte);
+				}
+				if (baseInputStream.ReadByte() < 0 || baseInputStream.ReadByte() < 0) {
+					throw new GZipException("Early EOF baseInputStream GZIP header");
+				}
+				
+				int len1, len2, extraLen;
+				len1 = baseInputStream.ReadByte();
+				len2 = baseInputStream.ReadByte();
+				if ((len1 < 0) || (len2 < 0)) {
+					throw new GZipException("Early EOF baseInputStream GZIP header");
+				}
+				headCRC.Update(len1);
+				headCRC.Update(len2);
+				
+				extraLen = (len1 << 8) | len2;
+				for (int i = 0; i < extraLen;i++) {
+					int readByte = baseInputStream.ReadByte();
+					if (readByte < 0) 
+					{
+						throw new GZipException("Early EOF baseInputStream GZIP header");
+					}
+					headCRC.Update(readByte);
+				}
+			}
+			
+			/* 8. Read file name */
+			if ((flags & GZipConstants.FNAME) != 0) {
+				int readByte;
+				while ( (readByte = baseInputStream.ReadByte()) > 0) {
+					headCRC.Update(readByte);
+				}
+				if (readByte < 0) {
+					throw new GZipException("Early EOF baseInputStream GZIP file name");
+				}
+				headCRC.Update(readByte);
+			}
+			
+			/* 9. Read comment */
+			if ((flags & GZipConstants.FCOMMENT) != 0) {
+				int readByte;
+				while ( (readByte = baseInputStream.ReadByte()) > 0) {
+					headCRC.Update(readByte);
+				}
+				
+				if (readByte < 0) {
+					throw new GZipException("Early EOF baseInputStream GZIP comment");
+				}
+				headCRC.Update(readByte);
+			}
+			
+			/* 10. Read header CRC */
+			if ((flags & GZipConstants.FHCRC) != 0) {
+				int tempByte;
+				int crcval = baseInputStream.ReadByte();
+				if (crcval < 0) {
+					throw new GZipException("Early EOF baseInputStream GZIP header");
+				}
+				
+				tempByte = baseInputStream.ReadByte();
+				if (tempByte < 0) {
+					throw new GZipException("Early EOF baseInputStream GZIP header");
+				}
+				
+				crcval = (crcval << 8) | tempByte;
+				if (crcval != ((int) headCRC.Value & 0xffff)) {
+					throw new GZipException("Header CRC value mismatch");
+				}
+			}
+			
+			readGZIPHeader = true;
+		}
+		
+		void ReadFooter() 
+		{
+			byte[] footer = new byte[8];
+			int avail = inf.RemainingInput;
+			
+			if (avail > 8) {
+				avail = 8;
+			}
+			
+         System.Array.Copy(inputBuffer.RawData, inputBuffer.RawLength - inf.RemainingInput, footer, 0, avail);
+         int needed = 8 - avail;
+			
+			while (needed > 0) {
+				int count = baseInputStream.Read(footer, 8 - needed, needed);
+				if (count <= 0) {
+					throw new GZipException("Early EOF baseInputStream GZIP footer");
+				}
+				needed -= count; // Jewel Jan 16
+			}
+			int crcval = (footer[0] & 0xff) | ((footer[1] & 0xff) << 8) | ((footer[2] & 0xff) << 16) | (footer[3] << 24);
+			if (crcval != (int) crc.Value) {
+				throw new GZipException("GZIP crc sum mismatch, theirs \"" + crcval + "\" and ours \"" + (int) crc.Value);
+			}
+			
+			int total = (footer[4] & 0xff) | ((footer[5] & 0xff) << 8) | ((footer[6] & 0xff) << 16) | (footer[7] << 24);
+			if (total != inf.TotalOut) {
+				throw new GZipException("Number of bytes mismatch in footer");
+			}
+			
+			/* XXX Should we support multiple members.
+			* Difficult, since there may be some bytes still baseInputStream dataBuffer
+			*/
+			eos = true;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GzipOutputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/GZip/GzipOutputStream.cs
@@ -1,207 +1,207 @@
-// GzipOutputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-
-using ICSharpCode.SharpZipLib.Checksums;
-using ICSharpCode.SharpZipLib.Zip.Compression;
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-
-namespace ICSharpCode.SharpZipLib.GZip 
-{
-	
-	/// <summary>
-	/// This filter stream is used to compress a stream into a "GZIP" stream.
-	/// The "GZIP" format is described in RFC 1952.
-	///
-	/// author of the original java version : John Leuner
-	/// </summary>
-	/// <example> This sample shows how to gzip a file
-	/// <code>
-	/// using System;
-	/// using System.IO;
-	/// 
-	/// using ICSharpCode.SharpZipLib.GZip;
-	/// 
-	/// class MainClass
-	/// {
-	/// 	public static void Main(string[] args)
-	/// 	{
-	/// 		Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"));
-	/// 		FileStream fs = File.OpenRead(args[0]);
-	/// 		byte[] writeData = new byte[fs.Length];
-	/// 		fs.Read(writeData, 0, (int)fs.Length);
-	/// 		s.Write(writeData, 0, writeData.Length);
-	/// 		s.Close();
-	/// 	}
-	/// }	
-	/// </code>
-	/// </example>
-	public class GZipOutputStream : DeflaterOutputStream
-	{
-		/// <summary>
-		/// CRC-32 value for uncompressed data
-		/// </summary>
-		protected Crc32 crc = new Crc32();
-		
-		/// <summary>
-		/// Creates a GzipOutputStream with the default buffer size
-		/// </summary>
-		/// <param name="baseOutputStream">
-		/// The stream to read data (to be compressed) from
-		/// </param>
-		public GZipOutputStream(Stream baseOutputStream) : this(baseOutputStream, 4096)
-		{
-		}
-		
-		/// <summary>
-		/// Creates a GZipOutputStream with the specified buffer size
-		/// </summary>
-		/// <param name="baseOutputStream">
-		/// The stream to read data (to be compressed) from
-		/// </param>
-		/// <param name="size">
-		/// Size of the buffer to use
-		/// </param>
-		public GZipOutputStream(Stream baseOutputStream, int size) : base(baseOutputStream, new Deflater(Deflater.DEFAULT_COMPRESSION, true), size)
-		{
-			WriteHeader();
-		}
-		
-		void WriteHeader()
-		{
-			int mod_time = (int)(DateTime.Now.Ticks / 10000L);  // Ticks give back 100ns intervals
-			byte[] gzipHeader = {
-				/* The two magic bytes */
-				(byte) (GZipConstants.GZIP_MAGIC >> 8), (byte) GZipConstants.GZIP_MAGIC,
-				
-				/* The compression type */
-				(byte) Deflater.DEFLATED,
-				
-				/* The flags (not set) */
-				0,
-				
-				/* The modification time */
-				(byte) mod_time, (byte) (mod_time >> 8),
-				(byte) (mod_time >> 16), (byte) (mod_time >> 24),
-				
-				/* The extra flags */
-				0,
-				
-				/* The OS type (unknown) */
-				(byte) 255
-			};
-			baseOutputStream.Write(gzipHeader, 0, gzipHeader.Length);
-		}
-
-		/// <summary>
-		/// Write given buffer to output updating crc
-		/// </summary>
-		/// <param name="buf">Buffer to write</param>
-		/// <param name="off">Offset of first byte in buf to write</param>
-		/// <param name="len">Number of bytes to write</param>
-		public override void Write(byte[] buf, int off, int len)
-		{
-			crc.Update(buf, off, len);
-			base.Write(buf, off, len);
-		}
-		
-		/// <summary>
-		/// Writes remaining compressed output data to the output stream
-		/// and closes it.
-		/// </summary>
-		public override void Close()
-		{
-			Finish();
-			
-			if ( IsStreamOwner ) {
-				baseOutputStream.Close();
-			}
-		}
-		
-		/// <summary>
-		/// Sets the active compression level (1-9).  The new level will be activated
-		/// immediately.
-		/// </summary>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// Level specified is not supported.
-		/// </exception>
-		/// <see cref="Deflater"/>
-		public void SetLevel(int level)
-		{
-			if (level < Deflater.BEST_SPEED) {
-				throw new ArgumentOutOfRangeException("level");
-			}
-			def.SetLevel(level);
-		}
-		
-		/// <summary>
-		/// Get the current compression level.
-		/// </summary>
-		/// <returns>The current compression level.</returns>
-		public int GetLevel()
-		{
-			return def.GetLevel();
-		}
-		
-		/// <summary>
-		/// Finish compression and write any footer information required to stream
-		/// </summary>
-		public override void Finish()
-		{
-			base.Finish();
-			
-			int totalin = def.TotalIn;
-			int crcval = (int) (crc.Value & 0xffffffff);
-			
-			//    System.err.println("CRC val is " + Integer.toHexString( crcval ) 		       + " and length " + Integer.toHexString(totalin));
-			
-			byte[] gzipFooter = {
-				(byte) crcval, (byte) (crcval >> 8),
-				(byte) (crcval >> 16), (byte) (crcval >> 24),
-				
-				(byte) totalin, (byte) (totalin >> 8),
-				(byte) (totalin >> 16), (byte) (totalin >> 24)
-			};
-
-			baseOutputStream.Write(gzipFooter, 0, gzipFooter.Length);
-			//    System.err.println("wrote GZIP trailer (" + gzipFooter.length + " bytes )");
-		}
-	}
-}
+// GzipOutputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Checksums;
+using ICSharpCode.SharpZipLib.Zip.Compression;
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+
+namespace ICSharpCode.SharpZipLib.GZip 
+{
+	
+	/// <summary>
+	/// This filter stream is used to compress a stream into a "GZIP" stream.
+	/// The "GZIP" format is described in RFC 1952.
+	///
+	/// author of the original java version : John Leuner
+	/// </summary>
+	/// <example> This sample shows how to gzip a file
+	/// <code>
+	/// using System;
+	/// using System.IO;
+	/// 
+	/// using ICSharpCode.SharpZipLib.GZip;
+	/// 
+	/// class MainClass
+	/// {
+	/// 	public static void Main(string[] args)
+	/// 	{
+	/// 		Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"));
+	/// 		FileStream fs = File.OpenRead(args[0]);
+	/// 		byte[] writeData = new byte[fs.Length];
+	/// 		fs.Read(writeData, 0, (int)fs.Length);
+	/// 		s.Write(writeData, 0, writeData.Length);
+	/// 		s.Close();
+	/// 	}
+	/// }	
+	/// </code>
+	/// </example>
+	public class GZipOutputStream : DeflaterOutputStream
+	{
+		/// <summary>
+		/// CRC-32 value for uncompressed data
+		/// </summary>
+		protected Crc32 crc = new Crc32();
+		
+		/// <summary>
+		/// Creates a GzipOutputStream with the default buffer size
+		/// </summary>
+		/// <param name="baseOutputStream">
+		/// The stream to read data (to be compressed) from
+		/// </param>
+		public GZipOutputStream(Stream baseOutputStream) : this(baseOutputStream, 4096)
+		{
+		}
+		
+		/// <summary>
+		/// Creates a GZipOutputStream with the specified buffer size
+		/// </summary>
+		/// <param name="baseOutputStream">
+		/// The stream to read data (to be compressed) from
+		/// </param>
+		/// <param name="size">
+		/// Size of the buffer to use
+		/// </param>
+		public GZipOutputStream(Stream baseOutputStream, int size) : base(baseOutputStream, new Deflater(Deflater.DEFAULT_COMPRESSION, true), size)
+		{
+			WriteHeader();
+		}
+		
+		void WriteHeader()
+		{
+			int mod_time = (int)(DateTime.Now.Ticks / 10000L);  // Ticks give back 100ns intervals
+			byte[] gzipHeader = {
+				/* The two magic bytes */
+				(byte) (GZipConstants.GZIP_MAGIC >> 8), (byte) GZipConstants.GZIP_MAGIC,
+				
+				/* The compression type */
+				(byte) Deflater.DEFLATED,
+				
+				/* The flags (not set) */
+				0,
+				
+				/* The modification time */
+				(byte) mod_time, (byte) (mod_time >> 8),
+				(byte) (mod_time >> 16), (byte) (mod_time >> 24),
+				
+				/* The extra flags */
+				0,
+				
+				/* The OS type (unknown) */
+				(byte) 255
+			};
+			baseOutputStream.Write(gzipHeader, 0, gzipHeader.Length);
+		}
+
+		/// <summary>
+		/// Write given buffer to output updating crc
+		/// </summary>
+		/// <param name="buf">Buffer to write</param>
+		/// <param name="off">Offset of first byte in buf to write</param>
+		/// <param name="len">Number of bytes to write</param>
+		public override void Write(byte[] buf, int off, int len)
+		{
+			crc.Update(buf, off, len);
+			base.Write(buf, off, len);
+		}
+		
+		/// <summary>
+		/// Writes remaining compressed output data to the output stream
+		/// and closes it.
+		/// </summary>
+		public override void Close()
+		{
+			Finish();
+			
+			if ( IsStreamOwner ) {
+				baseOutputStream.Close();
+			}
+		}
+		
+		/// <summary>
+		/// Sets the active compression level (1-9).  The new level will be activated
+		/// immediately.
+		/// </summary>
+		/// <exception cref="ArgumentOutOfRangeException">
+		/// Level specified is not supported.
+		/// </exception>
+		/// <see cref="Deflater"/>
+		public void SetLevel(int level)
+		{
+			if (level < Deflater.BEST_SPEED) {
+				throw new ArgumentOutOfRangeException("level");
+			}
+			def.SetLevel(level);
+		}
+		
+		/// <summary>
+		/// Get the current compression level.
+		/// </summary>
+		/// <returns>The current compression level.</returns>
+		public int GetLevel()
+		{
+			return def.GetLevel();
+		}
+		
+		/// <summary>
+		/// Finish compression and write any footer information required to stream
+		/// </summary>
+		public override void Finish()
+		{
+			base.Finish();
+			
+			int totalin = def.TotalIn;
+			int crcval = (int) (crc.Value & 0xffffffff);
+			
+			//    System.err.println("CRC val is " + Integer.toHexString( crcval ) 		       + " and length " + Integer.toHexString(totalin));
+			
+			byte[] gzipFooter = {
+				(byte) crcval, (byte) (crcval >> 8),
+				(byte) (crcval >> 16), (byte) (crcval >> 24),
+				
+				(byte) totalin, (byte) (totalin >> 8),
+				(byte) (totalin >> 16), (byte) (totalin >> 24)
+			};
+
+			baseOutputStream.Write(gzipFooter, 0, gzipFooter.Length);
+			//    System.err.println("wrote GZIP trailer (" + gzipFooter.length + " bytes )");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Main.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Main.cs
@@ -1,36 +1,36 @@
-// Main.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-//
-
+// Main.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+//
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/SharpZipBaseException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/SharpZipBaseException.cs
@@ -1,73 +1,73 @@
-// SharpZipBaseException.cs
-//
-// Copyright 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib
-{
-	/// <summary>
-	/// SharpZipBaseException is the base exception class for the SharpZipLibrary.
-	/// All library exceptions are derived from this.
-	/// </summary>
-	public class SharpZipBaseException : ApplicationException
-	{
-		/// <summary>
-		/// Initializes a new instance of the SharpZipLibraryException class.
-		/// </summary>
-		public SharpZipBaseException()
-		{
-		}
-		
-		/// <summary>
-		/// Initializes a new instance of the SharpZipLibraryException class with a specified error message.
-		/// </summary>
-		public SharpZipBaseException(string msg) : base(msg)
-		{
-		}
-
-		/// <summary>
-		/// Initializes a new instance of the SharpZipLibraryException class with a specified
-		/// error message and a reference to the inner exception that is the cause of this exception.
-		/// </summary>
-		/// <param name="message">Error message string</param>
-		/// <param name="innerException">The inner exception</param>
-		public SharpZipBaseException(string message, Exception innerException)	: base(message, innerException)
-		{
-		}
-	}
-}
+// SharpZipBaseException.cs
+//
+// Copyright 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib
+{
+	/// <summary>
+	/// SharpZipBaseException is the base exception class for the SharpZipLibrary.
+	/// All library exceptions are derived from this.
+	/// </summary>
+	public class SharpZipBaseException : ApplicationException
+	{
+		/// <summary>
+		/// Initializes a new instance of the SharpZipLibraryException class.
+		/// </summary>
+		public SharpZipBaseException()
+		{
+		}
+		
+		/// <summary>
+		/// Initializes a new instance of the SharpZipLibraryException class with a specified error message.
+		/// </summary>
+		public SharpZipBaseException(string msg) : base(msg)
+		{
+		}
+
+		/// <summary>
+		/// Initializes a new instance of the SharpZipLibraryException class with a specified
+		/// error message and a reference to the inner exception that is the cause of this exception.
+		/// </summary>
+		/// <param name="message">Error message string</param>
+		/// <param name="innerException">The inner exception</param>
+		public SharpZipBaseException(string message, Exception innerException)	: base(message, innerException)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/InvalidHeaderException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/InvalidHeaderException.cs
@@ -1,73 +1,73 @@
-// InvalidHeaderException.cs
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-namespace ICSharpCode.SharpZipLib.Tar {
-	
-	/// <summary>
-	/// This exception is used to indicate that there is a problem
-	/// with a TAR archive header.
-	/// </summary>
-	public class InvalidHeaderException : TarException
-	{
-		/// <summary>
-		/// Initialise a new instance of the InvalidHeaderException class.
-		/// </summary>
-		public InvalidHeaderException()
-		{
-		}
-
-		/// <summary>
-		/// Initialises a new instance of the InvalidHeaderException class with a specified message.
-		/// </summary>
-		public InvalidHeaderException(string msg) : base(msg)
-		{
-		}
-	}
-}
-
-/* The original Java file had this header:
-** Authored by Timothy Gerard Endres
-** <mailto:time@gjt.org>  <http://www.trustice.com>
-** 
-** This work has been placed into the public domain.
-** You may use this work in any way and for any purpose you wish.
-**
-** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
-** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
-** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
-** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
-** REDISTRIBUTION OF THIS SOFTWARE. 
-** 
-*/
-
+// InvalidHeaderException.cs
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+namespace ICSharpCode.SharpZipLib.Tar {
+	
+	/// <summary>
+	/// This exception is used to indicate that there is a problem
+	/// with a TAR archive header.
+	/// </summary>
+	public class InvalidHeaderException : TarException
+	{
+		/// <summary>
+		/// Initialise a new instance of the InvalidHeaderException class.
+		/// </summary>
+		public InvalidHeaderException()
+		{
+		}
+
+		/// <summary>
+		/// Initialises a new instance of the InvalidHeaderException class with a specified message.
+		/// </summary>
+		public InvalidHeaderException(string msg) : base(msg)
+		{
+		}
+	}
+}
+
+/* The original Java file had this header:
+** Authored by Timothy Gerard Endres
+** <mailto:time@gjt.org>  <http://www.trustice.com>
+** 
+** This work has been placed into the public domain.
+** You may use this work in any way and for any purpose you wish.
+**
+** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
+** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
+** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
+** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
+** REDISTRIBUTION OF THIS SOFTWARE. 
+** 
+*/
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarArchive.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarArchive.cs
@@ -1,680 +1,680 @@
-// TarArchive.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-//
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-using System.Text;
-
-namespace ICSharpCode.SharpZipLib.Tar {
-	/// <summary>
-	/// Used to advise clients of 'events' while processing archives
-	/// </summary>
-	public delegate void ProgressMessageHandler(TarArchive archive, TarEntry entry, string message);
-
-	/// <summary>
-	/// The TarArchive class implements the concept of a
-	/// 'Tape Archive'. A tar archive is a series of entries, each of
-	/// which represents a file system object. Each entry in
-	/// the archive consists of a header block followed by 0 or more data blocks.
-	/// Directory entries consist only of the header block, and are followed by entries
-	/// for the directory's contents. File entries consist of a
-	/// header followed by the number of blocks needed to
-	/// contain the file's contents. All entries are written on
-	/// block boundaries. Blocks are 512 bytes long.
-	/// 
-	/// TarArchives are instantiated in either read or write mode,
-	/// based upon whether they are instantiated with an InputStream
-	/// or an OutputStream. Once instantiated TarArchives read/write
-	/// mode can not be changed.
-	/// 
-	/// There is currently no support for random access to tar archives.
-	/// However, it seems that subclassing TarArchive, and using the
-	/// TarBuffer.getCurrentRecordNum() and TarBuffer.getCurrentBlockNum()
-	/// methods, this would be rather trvial.
-	/// </summary>
-	public class TarArchive
-	{
-		bool keepOldFiles;
-		bool asciiTranslate;
-		
-		int    userId;
-		string userName;
-		int    groupId;
-		string groupName;
-		
-		string rootPath;
-		string pathPrefix;
-		
-		int    recordSize;
-		byte[] recordBuf;
-		
-		TarInputStream  tarIn;
-		TarOutputStream tarOut;
-		
-		/// <summary>
-		/// Client hook allowing detailed information to be reported during processing
-		/// </summary>
-		public event ProgressMessageHandler ProgressMessageEvent;
-		
-		/// <summary>
-		/// Raises the ProgressMessage event
-		/// </summary>
-		/// <param name="entry">TarEntry for this event</param>
-		/// <param name="message">message for this event.  Null is no message</param>
-		protected virtual void OnProgressMessageEvent(TarEntry entry, string message)
-		{
-			if (ProgressMessageEvent != null) {
-				ProgressMessageEvent(this, entry, message);
-			}
-		}
-		
-		/// <summary>
-		/// Constructor for a TarArchive.
-		/// </summary>
-		protected TarArchive()
-		{
-		}
-		
-		/// <summary>
-		/// The InputStream based constructors create a TarArchive for the
-		/// purposes of extracting or listing a tar archive. Thus, use
-		/// these constructors when you wish to extract files from or list
-		/// the contents of an existing tar archive.
-		/// </summary>
-		public static TarArchive CreateInputTarArchive(Stream inputStream)
-		{
-			return CreateInputTarArchive(inputStream, TarBuffer.DefaultBlockFactor);
-		}
-		
-		/// <summary>
-		/// Create TarArchive for reading setting block factor
-		/// </summary>
-		/// <param name="inputStream">Stream for tar archive contents</param>
-		/// <param name="blockFactor">The blocking factor to apply</param>
-		/// <returns>
-		/// TarArchive
-		/// </returns>
-		public static TarArchive CreateInputTarArchive(Stream inputStream, int blockFactor)
-		{
-			TarArchive archive = new TarArchive();
-			archive.tarIn = new TarInputStream(inputStream, blockFactor);
-			archive.Initialize(blockFactor * TarBuffer.BlockSize);
-			return archive;
-		}
-		
-		/// <summary>
-		/// Create a TarArchive for writing to, using the default blocking factor
-		/// </summary>
-		/// <param name="outputStream">Stream to write to</param>
-		public static TarArchive CreateOutputTarArchive(Stream outputStream)
-		{
-			return CreateOutputTarArchive(outputStream, TarBuffer.DefaultBlockFactor);
-		}
-
-		/// <summary>
-		/// Create a TarArchive for writing to
-		/// </summary>
-		/// <param name="outputStream">The stream to write to</param>
-		/// <param name="blockFactor">The blocking factor to use for buffering.</param>
-		public static TarArchive CreateOutputTarArchive(Stream outputStream, int blockFactor)
-		{
-			TarArchive archive = new TarArchive();
-			archive.tarOut = new TarOutputStream(outputStream, blockFactor);
-			archive.Initialize(blockFactor * TarBuffer.BlockSize);
-			return archive;
-		}
-		
-		/// <summary>
-		/// Common constructor initialization code.
-		/// </summary>
-		void Initialize(int recordSize)
-		{
-			this.recordSize = recordSize;
-			this.rootPath   = null;
-			this.pathPrefix = null;
-			
-			this.userId    = 0;
-			this.userName  = String.Empty;
-			this.groupId   = 0;
-			this.groupName = String.Empty;
-			
-			this.keepOldFiles    = false;
-			
-			this.recordBuf = new byte[RecordSize];
-		}
-		
-		/// <summary>
-		/// Set the flag that determines whether existing files are
-		/// kept, or overwritten during extraction.
-		/// </summary>
-		/// <param name="keepOldFiles">
-		/// If true, do not overwrite existing files.
-		/// </param>
-		public void SetKeepOldFiles(bool keepOldFiles)
-		{
-			this.keepOldFiles = keepOldFiles;
-		}
-		
-		/// <summary>
-		/// Set the ascii file translation flag. If ascii file translation
-		/// is true, then the file is checked to see if it a binary file or not. 
-		/// If the flag is true and the test indicates it is ascii text 
-		/// file, it will be translated. The translation converts the local
-		/// operating system's concept of line ends into the UNIX line end,
-		/// '\n', which is the defacto standard for a TAR archive. This makes
-		/// text files compatible with UNIX.
-		/// </summary>
-		/// <param name= "asciiTranslate">
-		/// If true, translate ascii text files.
-		/// </param>
-		public void SetAsciiTranslation(bool asciiTranslate)
-		{
-			this.asciiTranslate = asciiTranslate;
-		}
-
-		/// <summary>
-		/// PathPrefix is added to entry names as they are written if the value is not null.
-		/// A slash character is appended after PathPrefix 
-		/// </summary>
-		public string PathPrefix
-		{
-			get { return pathPrefix; }
-			set { pathPrefix = value; }
-		
-		}
-		
-		/// <summary>
-		/// RootPath is removed from entry names if it is found at the
-		/// beginning of the name.
-		/// </summary>
-		public string RootPath
-		{
-			get { return rootPath; }
-			set { rootPath = value; }
-		}
-		
-		/// <summary>
-		/// Set user and group information that will be used to fill in the
-		/// tar archive's entry headers. This information based on that available 
-		/// for the linux operating system, which is not always available on other
-		/// operating systems.  TarArchive allows the programmer to specify values
-		/// to be used in their place.
-		/// </summary>
-		/// <param name="userId">
-		/// The user id to use in the headers.
-		/// </param>
-		/// <param name="userName">
-		/// The user name to use in the headers.
-		/// </param>
-		/// <param name="groupId">
-		/// The group id to use in the headers.
-		/// </param>
-		/// <param name="groupName">
-		/// The group name to use in the headers.
-		/// </param>
-		public void SetUserInfo(int userId, string userName, int groupId, string groupName)
-		{
-			this.userId    = userId;
-			this.userName  = userName;
-			this.groupId   = groupId;
-			this.groupName = groupName;
-			applyUserInfoOverrides = true;
-		}
-		
-		bool applyUserInfoOverrides = false;
-
-		/// <summary>
-		/// Get or set a value indicating if overrides defined by <see cref="SetUserInfo">SetUserInfo</see> should be applied.
-		/// </summary>
-		/// <remarks>If overrides are not applied then the values as set in each header will be used.</remarks>
-		public bool ApplyUserInfoOverrides
-		{
-			get { return applyUserInfoOverrides; }
-			set { applyUserInfoOverrides = value; }
-		}
-
-		/// <summary>
-		/// Get the archive user id.
-		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
-		/// on how to allow setting values on a per entry basis.
-		/// </summary>
-		/// <returns>
-		/// The current user id.
-		/// </returns>
-		public int UserId {
-			get {
-				return this.userId;
-			}
-		}
-		
-		/// <summary>
-		/// Get the archive user name.
-		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
-		/// on how to allow setting values on a per entry basis.
-		/// </summary>
-		/// <returns>
-		/// The current user name.
-		/// </returns>
-		public string UserName {
-			get {
-				return this.userName;
-			}
-		}
-		
-		/// <summary>
-		/// Get the archive group id.
-		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
-		/// on how to allow setting values on a per entry basis.
-		/// </summary>
-		/// <returns>
-		/// The current group id.
-		/// </returns>
-		public int GroupId {
-			get {
-				return this.groupId;
-			}
-		}
-		
-		/// <summary>
-		/// Get the archive group name.
-		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
-		/// on how to allow setting values on a per entry basis.
-		/// </summary>
-		/// <returns>
-		/// The current group name.
-		/// </returns>
-		public string GroupName {
-			get {
-				return this.groupName;
-			}
-		}
-		
-		/// <summary>
-		/// Get the archive's record size. Because of its history, tar
-		/// supports the concept of buffered IO consisting of RECORDS of
-		/// BLOCKS. This allowed tar to match the IO characteristics of
-		/// the physical device being used. Of course, in the C# world,
-		/// this makes no sense, WITH ONE EXCEPTION - archives are expected
-		/// to be properly "blocked". Thus, all of the horrible TarBuffer
-		/// support boils down to simply getting the "boundaries" correct.
-		/// </summary>
-		/// <returns>
-		/// The record size this archive is using.
-		/// </returns>
-		public int RecordSize {
-			get {
-				if (this.tarIn != null) {
-					return this.tarIn.GetRecordSize();
-				} else if (this.tarOut != null) {
-					return this.tarOut.GetRecordSize();
-				}
-				return TarBuffer.DefaultRecordSize;
-			}
-		}
-		
-		/// <summary>
-		/// Close the archive. This simply calls the underlying
-		/// tar stream's close() method.
-		/// </summary>
-		public void CloseArchive()
-		{
-			if (this.tarIn != null) {
-				this.tarIn.Close();
-			} else if (this.tarOut != null) {
-				this.tarOut.Flush();
-				this.tarOut.Close();
-			}
-		}
-		
-		/// <summary>
-		/// Perform the "list" command for the archive contents.
-		/// 
-		/// NOTE That this method uses the <see cref="ProgressMessageEvent"> progress event</see> to actually list
-		/// the contents. If the progress display event is not set, nothing will be listed!
-		/// </summary>
-		public void ListContents()
-		{
-			while (true) {
-				TarEntry entry = this.tarIn.GetNextEntry();
-				
-				if (entry == null) {
-					break;
-				}
-				OnProgressMessageEvent(entry, null);
-			}
-		}
-		
-		/// <summary>
-		/// Perform the "extract" command and extract the contents of the archive.
-		/// </summary>
-		/// <param name="destDir">
-		/// The destination directory into which to extract.
-		/// </param>
-		public void ExtractContents(string destDir)
-		{
-			while (true) {
-				TarEntry entry = this.tarIn.GetNextEntry();
-				
-				if (entry == null) {
-					break;
-				}
-				
-				this.ExtractEntry(destDir, entry);
-			}
-		}
-		
-		void EnsureDirectoryExists(string directoryName)
-		{
-			if (!Directory.Exists(directoryName)) {
-				try {
-					Directory.CreateDirectory(directoryName);
-				}
-				catch (Exception e) {
-					throw new TarException("Exception creating directory '" + directoryName + "', " + e.Message);
-				}
-			}
-		}
-		
-		// TODO: Is there a better way to test for a text file?
-		// It no longer reads entire files into memory but is still a weak test!
-		// assumes that ascii 0-7, 14-31 or 255 are binary
-		// and that all non text files contain one of these values
-		bool IsBinary(string filename)
-		{
-			using (FileStream fs = File.OpenRead(filename))
-			{
-				int sampleSize = System.Math.Min(4096, (int)fs.Length);
-				byte[] content = new byte[sampleSize];
-			
-				int bytesRead = fs.Read(content, 0, sampleSize);
-			
-				for (int i = 0; i < bytesRead; ++i) {
-					byte b = content[i];
-					if (b < 8 || (b > 13 && b < 32) || b == 255) {
-						return true;
-					}
-				}
-			}
-			return false;
-		}		
-		
-		/// <summary>
-		/// Extract an entry from the archive. This method assumes that the
-		/// tarIn stream has been properly set with a call to getNextEntry().
-		/// </summary>
-		/// <param name="destDir">
-		/// The destination directory into which to extract.
-		/// </param>
-		/// <param name="entry">
-		/// The TarEntry returned by tarIn.getNextEntry().
-		/// </param>
-		void ExtractEntry(string destDir, TarEntry entry)
-		{
-			OnProgressMessageEvent(entry, null);
-			
-			string name = entry.Name;
-			
-			if (Path.IsPathRooted(name) == true) {
-				// NOTE:
-				// for UNC names...  \\machine\share\zoom\beet.txt gives \zoom\beet.txt
-				name = name.Substring(Path.GetPathRoot(name).Length);
-			}
-			
-			name = name.Replace('/', Path.DirectorySeparatorChar);
-			
-			string destFile = Path.Combine(destDir, name);
-			
-			if (entry.IsDirectory) {
-				EnsureDirectoryExists(destFile);
-			} else {
-				string parentDirectory = Path.GetDirectoryName(destFile);
-				EnsureDirectoryExists(parentDirectory);
-				
-				bool process = true;
-				FileInfo fileInfo = new FileInfo(destFile);
-				if (fileInfo.Exists) {
-					if (this.keepOldFiles) {
-						OnProgressMessageEvent(entry, "Destination file already exists");
-						process = false;
-					} else if ((fileInfo.Attributes & FileAttributes.ReadOnly) != 0) {
-						OnProgressMessageEvent(entry, "Destination file already exists, and is read-only");
-						process = false;
-					}
-				}
-				
-				if (process) {
-					bool asciiTrans = false;
-					
-					Stream outputStream = File.Create(destFile);
-					if (this.asciiTranslate) {
-						asciiTrans = !IsBinary(destFile);
-					}
-					
-					StreamWriter outw = null;
-					if (asciiTrans) {
-						outw = new StreamWriter(outputStream);
-					}
-					
-					byte[] rdbuf = new byte[32 * 1024];
-					
-					while (true) {
-						int numRead = this.tarIn.Read(rdbuf, 0, rdbuf.Length);
-						
-						if (numRead <= 0) {
-							break;
-						}
-						
-						if (asciiTrans) {
-							for (int off = 0, b = 0; b < numRead; ++b) {
-								if (rdbuf[b] == 10) {
-									string s = Encoding.ASCII.GetString(rdbuf, off, (b - off));
-									outw.WriteLine(s);
-									off = b + 1;
-								}
-							}
-						} else {
-							outputStream.Write(rdbuf, 0, numRead);
-						}
-					}
-					
-					if (asciiTrans) {
-						outw.Close();
-					} else {
-						outputStream.Close();
-					}
-				}
-			}
-		}
-
-		/// <summary>
-		/// Write an entry to the archive. This method will call the putNextEntry
-		/// and then write the contents of the entry, and finally call closeEntry()
-		/// for entries that are files. For directories, it will call putNextEntry(),
-		/// and then, if the recurse flag is true, process each entry that is a
-		/// child of the directory.
-		/// </summary>
-		/// <param name="sourceEntry">
-		/// The TarEntry representing the entry to write to the archive.
-		/// </param>
-		/// <param name="recurse">
-		/// If true, process the children of directory entries.
-		/// </param>
-		public void WriteEntry(TarEntry sourceEntry, bool recurse)
-		{
-			try
-			{
-				if ( recurse ) {
-					TarHeader.SetValueDefaults(sourceEntry.UserId, sourceEntry.UserName,
-					                           sourceEntry.GroupId, sourceEntry.GroupName);
-				}
-				InternalWriteEntry(sourceEntry, recurse);
-			}
-			finally
-			{
-				if ( recurse ) {
-					TarHeader.RestoreSetValues();
-				}
-			}
-		}
-		
-		/// <summary>
-		/// Write an entry to the archive. This method will call the putNextEntry
-		/// and then write the contents of the entry, and finally call closeEntry()
-		/// for entries that are files. For directories, it will call putNextEntry(),
-		/// and then, if the recurse flag is true, process each entry that is a
-		/// child of the directory.
-		/// </summary>
-		/// <param name="sourceEntry">
-		/// The TarEntry representing the entry to write to the archive.
-		/// </param>
-		/// <param name="recurse">
-		/// If true, process the children of directory entries.
-		/// </param>
-		void InternalWriteEntry(TarEntry sourceEntry, bool recurse)
-		{
-			bool asciiTrans = false;
-			
-			string tempFileName = null;
-			string entryFilename   = sourceEntry.File;
-			
-			TarEntry entry = (TarEntry)sourceEntry.Clone();
-
-			if ( applyUserInfoOverrides ) {
-				entry.GroupId = groupId;
-				entry.GroupName = groupName;
-				entry.UserId = userId;
-				entry.UserName = userName;
-			}
-			
-			OnProgressMessageEvent(entry, null);
-			
-			if (this.asciiTranslate && !entry.IsDirectory) {
-				asciiTrans = !IsBinary(entryFilename);
-
-				if (asciiTrans) {
-					tempFileName = Path.GetTempFileName();
-					
-					StreamReader inStream  = File.OpenText(entryFilename);
-					Stream       outStream = File.Create(tempFileName);
-					
-					while (true) {
-						string line = inStream.ReadLine();
-						if (line == null) {
-							break;
-						}
-						byte[] data = Encoding.ASCII.GetBytes(line);
-						outStream.Write(data, 0, data.Length);
-						outStream.WriteByte((byte)'\n');
-					}
-					
-					inStream.Close();
-
-					outStream.Flush();
-					outStream.Close();
-					
-					entry.Size = new FileInfo(tempFileName).Length;
-					
-					entryFilename = tempFileName;
-				}
-			}
-			
-			string newName = null;
-		
-			if (this.rootPath != null) {
-				if (entry.Name.StartsWith(this.rootPath)) {
-					newName = entry.Name.Substring(this.rootPath.Length + 1 );
-				}
-			}
-			
-			if (this.pathPrefix != null) {
-				newName = (newName == null) ? this.pathPrefix + "/" + entry.Name : this.pathPrefix + "/" + newName;
-			}
-			
-			if (newName != null) {
-				entry.Name = newName;
-			}
-			
-			this.tarOut.PutNextEntry(entry);
-			
-			if (entry.IsDirectory) {
-				if (recurse) {
-					TarEntry[] list = entry.GetDirectoryEntries();
-					for (int i = 0; i < list.Length; ++i) {
-						InternalWriteEntry(list[i], recurse);
-					}
-				}
-			} else {
-				Stream inputStream = File.OpenRead(entryFilename);
-				int numWritten = 0;
-				byte[] eBuf = new byte[32 * 1024];
-				while (true) {
-					int numRead = inputStream.Read(eBuf, 0, eBuf.Length);
-					
-					if (numRead <=0) {
-						break;
-					}
-					
-					this.tarOut.Write(eBuf, 0, numRead);
-					numWritten +=  numRead;
-				}
-
-				inputStream.Close();
-				
-				if (tempFileName != null && tempFileName.Length > 0) {
-					File.Delete(tempFileName);
-				}
-				
-				this.tarOut.CloseEntry();
-			}
-		}
-	}
-}
-
-
-/* The original Java file had this header:
-	** Authored by Timothy Gerard Endres
-	** <mailto:time@gjt.org>  <http://www.trustice.com>
-	**
-	** This work has been placed into the public domain.
-	** You may use this work in any way and for any purpose you wish.
-	**
-	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
-	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
-	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
-	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
-	** REDISTRIBUTION OF THIS SOFTWARE.
-	**
-	*/
-
+// TarArchive.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+//
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+using System.Text;
+
+namespace ICSharpCode.SharpZipLib.Tar {
+	/// <summary>
+	/// Used to advise clients of 'events' while processing archives
+	/// </summary>
+	public delegate void ProgressMessageHandler(TarArchive archive, TarEntry entry, string message);
+
+	/// <summary>
+	/// The TarArchive class implements the concept of a
+	/// 'Tape Archive'. A tar archive is a series of entries, each of
+	/// which represents a file system object. Each entry in
+	/// the archive consists of a header block followed by 0 or more data blocks.
+	/// Directory entries consist only of the header block, and are followed by entries
+	/// for the directory's contents. File entries consist of a
+	/// header followed by the number of blocks needed to
+	/// contain the file's contents. All entries are written on
+	/// block boundaries. Blocks are 512 bytes long.
+	/// 
+	/// TarArchives are instantiated in either read or write mode,
+	/// based upon whether they are instantiated with an InputStream
+	/// or an OutputStream. Once instantiated TarArchives read/write
+	/// mode can not be changed.
+	/// 
+	/// There is currently no support for random access to tar archives.
+	/// However, it seems that subclassing TarArchive, and using the
+	/// TarBuffer.getCurrentRecordNum() and TarBuffer.getCurrentBlockNum()
+	/// methods, this would be rather trvial.
+	/// </summary>
+	public class TarArchive
+	{
+		bool keepOldFiles;
+		bool asciiTranslate;
+		
+		int    userId;
+		string userName;
+		int    groupId;
+		string groupName;
+		
+		string rootPath;
+		string pathPrefix;
+		
+		int    recordSize;
+		byte[] recordBuf;
+		
+		TarInputStream  tarIn;
+		TarOutputStream tarOut;
+		
+		/// <summary>
+		/// Client hook allowing detailed information to be reported during processing
+		/// </summary>
+		public event ProgressMessageHandler ProgressMessageEvent;
+		
+		/// <summary>
+		/// Raises the ProgressMessage event
+		/// </summary>
+		/// <param name="entry">TarEntry for this event</param>
+		/// <param name="message">message for this event.  Null is no message</param>
+		protected virtual void OnProgressMessageEvent(TarEntry entry, string message)
+		{
+			if (ProgressMessageEvent != null) {
+				ProgressMessageEvent(this, entry, message);
+			}
+		}
+		
+		/// <summary>
+		/// Constructor for a TarArchive.
+		/// </summary>
+		protected TarArchive()
+		{
+		}
+		
+		/// <summary>
+		/// The InputStream based constructors create a TarArchive for the
+		/// purposes of extracting or listing a tar archive. Thus, use
+		/// these constructors when you wish to extract files from or list
+		/// the contents of an existing tar archive.
+		/// </summary>
+		public static TarArchive CreateInputTarArchive(Stream inputStream)
+		{
+			return CreateInputTarArchive(inputStream, TarBuffer.DefaultBlockFactor);
+		}
+		
+		/// <summary>
+		/// Create TarArchive for reading setting block factor
+		/// </summary>
+		/// <param name="inputStream">Stream for tar archive contents</param>
+		/// <param name="blockFactor">The blocking factor to apply</param>
+		/// <returns>
+		/// TarArchive
+		/// </returns>
+		public static TarArchive CreateInputTarArchive(Stream inputStream, int blockFactor)
+		{
+			TarArchive archive = new TarArchive();
+			archive.tarIn = new TarInputStream(inputStream, blockFactor);
+			archive.Initialize(blockFactor * TarBuffer.BlockSize);
+			return archive;
+		}
+		
+		/// <summary>
+		/// Create a TarArchive for writing to, using the default blocking factor
+		/// </summary>
+		/// <param name="outputStream">Stream to write to</param>
+		public static TarArchive CreateOutputTarArchive(Stream outputStream)
+		{
+			return CreateOutputTarArchive(outputStream, TarBuffer.DefaultBlockFactor);
+		}
+
+		/// <summary>
+		/// Create a TarArchive for writing to
+		/// </summary>
+		/// <param name="outputStream">The stream to write to</param>
+		/// <param name="blockFactor">The blocking factor to use for buffering.</param>
+		public static TarArchive CreateOutputTarArchive(Stream outputStream, int blockFactor)
+		{
+			TarArchive archive = new TarArchive();
+			archive.tarOut = new TarOutputStream(outputStream, blockFactor);
+			archive.Initialize(blockFactor * TarBuffer.BlockSize);
+			return archive;
+		}
+		
+		/// <summary>
+		/// Common constructor initialization code.
+		/// </summary>
+		void Initialize(int recordSize)
+		{
+			this.recordSize = recordSize;
+			this.rootPath   = null;
+			this.pathPrefix = null;
+			
+			this.userId    = 0;
+			this.userName  = String.Empty;
+			this.groupId   = 0;
+			this.groupName = String.Empty;
+			
+			this.keepOldFiles    = false;
+			
+			this.recordBuf = new byte[RecordSize];
+		}
+		
+		/// <summary>
+		/// Set the flag that determines whether existing files are
+		/// kept, or overwritten during extraction.
+		/// </summary>
+		/// <param name="keepOldFiles">
+		/// If true, do not overwrite existing files.
+		/// </param>
+		public void SetKeepOldFiles(bool keepOldFiles)
+		{
+			this.keepOldFiles = keepOldFiles;
+		}
+		
+		/// <summary>
+		/// Set the ascii file translation flag. If ascii file translation
+		/// is true, then the file is checked to see if it a binary file or not. 
+		/// If the flag is true and the test indicates it is ascii text 
+		/// file, it will be translated. The translation converts the local
+		/// operating system's concept of line ends into the UNIX line end,
+		/// '\n', which is the defacto standard for a TAR archive. This makes
+		/// text files compatible with UNIX.
+		/// </summary>
+		/// <param name= "asciiTranslate">
+		/// If true, translate ascii text files.
+		/// </param>
+		public void SetAsciiTranslation(bool asciiTranslate)
+		{
+			this.asciiTranslate = asciiTranslate;
+		}
+
+		/// <summary>
+		/// PathPrefix is added to entry names as they are written if the value is not null.
+		/// A slash character is appended after PathPrefix 
+		/// </summary>
+		public string PathPrefix
+		{
+			get { return pathPrefix; }
+			set { pathPrefix = value; }
+		
+		}
+		
+		/// <summary>
+		/// RootPath is removed from entry names if it is found at the
+		/// beginning of the name.
+		/// </summary>
+		public string RootPath
+		{
+			get { return rootPath; }
+			set { rootPath = value; }
+		}
+		
+		/// <summary>
+		/// Set user and group information that will be used to fill in the
+		/// tar archive's entry headers. This information based on that available 
+		/// for the linux operating system, which is not always available on other
+		/// operating systems.  TarArchive allows the programmer to specify values
+		/// to be used in their place.
+		/// </summary>
+		/// <param name="userId">
+		/// The user id to use in the headers.
+		/// </param>
+		/// <param name="userName">
+		/// The user name to use in the headers.
+		/// </param>
+		/// <param name="groupId">
+		/// The group id to use in the headers.
+		/// </param>
+		/// <param name="groupName">
+		/// The group name to use in the headers.
+		/// </param>
+		public void SetUserInfo(int userId, string userName, int groupId, string groupName)
+		{
+			this.userId    = userId;
+			this.userName  = userName;
+			this.groupId   = groupId;
+			this.groupName = groupName;
+			applyUserInfoOverrides = true;
+		}
+		
+		bool applyUserInfoOverrides = false;
+
+		/// <summary>
+		/// Get or set a value indicating if overrides defined by <see cref="SetUserInfo">SetUserInfo</see> should be applied.
+		/// </summary>
+		/// <remarks>If overrides are not applied then the values as set in each header will be used.</remarks>
+		public bool ApplyUserInfoOverrides
+		{
+			get { return applyUserInfoOverrides; }
+			set { applyUserInfoOverrides = value; }
+		}
+
+		/// <summary>
+		/// Get the archive user id.
+		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
+		/// on how to allow setting values on a per entry basis.
+		/// </summary>
+		/// <returns>
+		/// The current user id.
+		/// </returns>
+		public int UserId {
+			get {
+				return this.userId;
+			}
+		}
+		
+		/// <summary>
+		/// Get the archive user name.
+		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
+		/// on how to allow setting values on a per entry basis.
+		/// </summary>
+		/// <returns>
+		/// The current user name.
+		/// </returns>
+		public string UserName {
+			get {
+				return this.userName;
+			}
+		}
+		
+		/// <summary>
+		/// Get the archive group id.
+		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
+		/// on how to allow setting values on a per entry basis.
+		/// </summary>
+		/// <returns>
+		/// The current group id.
+		/// </returns>
+		public int GroupId {
+			get {
+				return this.groupId;
+			}
+		}
+		
+		/// <summary>
+		/// Get the archive group name.
+		/// See <see cref="ApplyUserInfoOverrides">ApplyUserInfoOverrides</see> for detail
+		/// on how to allow setting values on a per entry basis.
+		/// </summary>
+		/// <returns>
+		/// The current group name.
+		/// </returns>
+		public string GroupName {
+			get {
+				return this.groupName;
+			}
+		}
+		
+		/// <summary>
+		/// Get the archive's record size. Because of its history, tar
+		/// supports the concept of buffered IO consisting of RECORDS of
+		/// BLOCKS. This allowed tar to match the IO characteristics of
+		/// the physical device being used. Of course, in the C# world,
+		/// this makes no sense, WITH ONE EXCEPTION - archives are expected
+		/// to be properly "blocked". Thus, all of the horrible TarBuffer
+		/// support boils down to simply getting the "boundaries" correct.
+		/// </summary>
+		/// <returns>
+		/// The record size this archive is using.
+		/// </returns>
+		public int RecordSize {
+			get {
+				if (this.tarIn != null) {
+					return this.tarIn.GetRecordSize();
+				} else if (this.tarOut != null) {
+					return this.tarOut.GetRecordSize();
+				}
+				return TarBuffer.DefaultRecordSize;
+			}
+		}
+		
+		/// <summary>
+		/// Close the archive. This simply calls the underlying
+		/// tar stream's close() method.
+		/// </summary>
+		public void CloseArchive()
+		{
+			if (this.tarIn != null) {
+				this.tarIn.Close();
+			} else if (this.tarOut != null) {
+				this.tarOut.Flush();
+				this.tarOut.Close();
+			}
+		}
+		
+		/// <summary>
+		/// Perform the "list" command for the archive contents.
+		/// 
+		/// NOTE That this method uses the <see cref="ProgressMessageEvent"> progress event</see> to actually list
+		/// the contents. If the progress display event is not set, nothing will be listed!
+		/// </summary>
+		public void ListContents()
+		{
+			while (true) {
+				TarEntry entry = this.tarIn.GetNextEntry();
+				
+				if (entry == null) {
+					break;
+				}
+				OnProgressMessageEvent(entry, null);
+			}
+		}
+		
+		/// <summary>
+		/// Perform the "extract" command and extract the contents of the archive.
+		/// </summary>
+		/// <param name="destDir">
+		/// The destination directory into which to extract.
+		/// </param>
+		public void ExtractContents(string destDir)
+		{
+			while (true) {
+				TarEntry entry = this.tarIn.GetNextEntry();
+				
+				if (entry == null) {
+					break;
+				}
+				
+				this.ExtractEntry(destDir, entry);
+			}
+		}
+		
+		void EnsureDirectoryExists(string directoryName)
+		{
+			if (!Directory.Exists(directoryName)) {
+				try {
+					Directory.CreateDirectory(directoryName);
+				}
+				catch (Exception e) {
+					throw new TarException("Exception creating directory '" + directoryName + "', " + e.Message);
+				}
+			}
+		}
+		
+		// TODO: Is there a better way to test for a text file?
+		// It no longer reads entire files into memory but is still a weak test!
+		// assumes that ascii 0-7, 14-31 or 255 are binary
+		// and that all non text files contain one of these values
+		bool IsBinary(string filename)
+		{
+			using (FileStream fs = File.OpenRead(filename))
+			{
+				int sampleSize = System.Math.Min(4096, (int)fs.Length);
+				byte[] content = new byte[sampleSize];
+			
+				int bytesRead = fs.Read(content, 0, sampleSize);
+			
+				for (int i = 0; i < bytesRead; ++i) {
+					byte b = content[i];
+					if (b < 8 || (b > 13 && b < 32) || b == 255) {
+						return true;
+					}
+				}
+			}
+			return false;
+		}		
+		
+		/// <summary>
+		/// Extract an entry from the archive. This method assumes that the
+		/// tarIn stream has been properly set with a call to getNextEntry().
+		/// </summary>
+		/// <param name="destDir">
+		/// The destination directory into which to extract.
+		/// </param>
+		/// <param name="entry">
+		/// The TarEntry returned by tarIn.getNextEntry().
+		/// </param>
+		void ExtractEntry(string destDir, TarEntry entry)
+		{
+			OnProgressMessageEvent(entry, null);
+			
+			string name = entry.Name;
+			
+			if (Path.IsPathRooted(name) == true) {
+				// NOTE:
+				// for UNC names...  \\machine\share\zoom\beet.txt gives \zoom\beet.txt
+				name = name.Substring(Path.GetPathRoot(name).Length);
+			}
+			
+			name = name.Replace('/', Path.DirectorySeparatorChar);
+			
+			string destFile = Path.Combine(destDir, name);
+			
+			if (entry.IsDirectory) {
+				EnsureDirectoryExists(destFile);
+			} else {
+				string parentDirectory = Path.GetDirectoryName(destFile);
+				EnsureDirectoryExists(parentDirectory);
+				
+				bool process = true;
+				FileInfo fileInfo = new FileInfo(destFile);
+				if (fileInfo.Exists) {
+					if (this.keepOldFiles) {
+						OnProgressMessageEvent(entry, "Destination file already exists");
+						process = false;
+					} else if ((fileInfo.Attributes & FileAttributes.ReadOnly) != 0) {
+						OnProgressMessageEvent(entry, "Destination file already exists, and is read-only");
+						process = false;
+					}
+				}
+				
+				if (process) {
+					bool asciiTrans = false;
+					
+					Stream outputStream = File.Create(destFile);
+					if (this.asciiTranslate) {
+						asciiTrans = !IsBinary(destFile);
+					}
+					
+					StreamWriter outw = null;
+					if (asciiTrans) {
+						outw = new StreamWriter(outputStream);
+					}
+					
+					byte[] rdbuf = new byte[32 * 1024];
+					
+					while (true) {
+						int numRead = this.tarIn.Read(rdbuf, 0, rdbuf.Length);
+						
+						if (numRead <= 0) {
+							break;
+						}
+						
+						if (asciiTrans) {
+							for (int off = 0, b = 0; b < numRead; ++b) {
+								if (rdbuf[b] == 10) {
+									string s = Encoding.ASCII.GetString(rdbuf, off, (b - off));
+									outw.WriteLine(s);
+									off = b + 1;
+								}
+							}
+						} else {
+							outputStream.Write(rdbuf, 0, numRead);
+						}
+					}
+					
+					if (asciiTrans) {
+						outw.Close();
+					} else {
+						outputStream.Close();
+					}
+				}
+			}
+		}
+
+		/// <summary>
+		/// Write an entry to the archive. This method will call the putNextEntry
+		/// and then write the contents of the entry, and finally call closeEntry()
+		/// for entries that are files. For directories, it will call putNextEntry(),
+		/// and then, if the recurse flag is true, process each entry that is a
+		/// child of the directory.
+		/// </summary>
+		/// <param name="sourceEntry">
+		/// The TarEntry representing the entry to write to the archive.
+		/// </param>
+		/// <param name="recurse">
+		/// If true, process the children of directory entries.
+		/// </param>
+		public void WriteEntry(TarEntry sourceEntry, bool recurse)
+		{
+			try
+			{
+				if ( recurse ) {
+					TarHeader.SetValueDefaults(sourceEntry.UserId, sourceEntry.UserName,
+					                           sourceEntry.GroupId, sourceEntry.GroupName);
+				}
+				InternalWriteEntry(sourceEntry, recurse);
+			}
+			finally
+			{
+				if ( recurse ) {
+					TarHeader.RestoreSetValues();
+				}
+			}
+		}
+		
+		/// <summary>
+		/// Write an entry to the archive. This method will call the putNextEntry
+		/// and then write the contents of the entry, and finally call closeEntry()
+		/// for entries that are files. For directories, it will call putNextEntry(),
+		/// and then, if the recurse flag is true, process each entry that is a
+		/// child of the directory.
+		/// </summary>
+		/// <param name="sourceEntry">
+		/// The TarEntry representing the entry to write to the archive.
+		/// </param>
+		/// <param name="recurse">
+		/// If true, process the children of directory entries.
+		/// </param>
+		void InternalWriteEntry(TarEntry sourceEntry, bool recurse)
+		{
+			bool asciiTrans = false;
+			
+			string tempFileName = null;
+			string entryFilename   = sourceEntry.File;
+			
+			TarEntry entry = (TarEntry)sourceEntry.Clone();
+
+			if ( applyUserInfoOverrides ) {
+				entry.GroupId = groupId;
+				entry.GroupName = groupName;
+				entry.UserId = userId;
+				entry.UserName = userName;
+			}
+			
+			OnProgressMessageEvent(entry, null);
+			
+			if (this.asciiTranslate && !entry.IsDirectory) {
+				asciiTrans = !IsBinary(entryFilename);
+
+				if (asciiTrans) {
+					tempFileName = Path.GetTempFileName();
+					
+					StreamReader inStream  = File.OpenText(entryFilename);
+					Stream       outStream = File.Create(tempFileName);
+					
+					while (true) {
+						string line = inStream.ReadLine();
+						if (line == null) {
+							break;
+						}
+						byte[] data = Encoding.ASCII.GetBytes(line);
+						outStream.Write(data, 0, data.Length);
+						outStream.WriteByte((byte)'\n');
+					}
+					
+					inStream.Close();
+
+					outStream.Flush();
+					outStream.Close();
+					
+					entry.Size = new FileInfo(tempFileName).Length;
+					
+					entryFilename = tempFileName;
+				}
+			}
+			
+			string newName = null;
+		
+			if (this.rootPath != null) {
+				if (entry.Name.StartsWith(this.rootPath)) {
+					newName = entry.Name.Substring(this.rootPath.Length + 1 );
+				}
+			}
+			
+			if (this.pathPrefix != null) {
+				newName = (newName == null) ? this.pathPrefix + "/" + entry.Name : this.pathPrefix + "/" + newName;
+			}
+			
+			if (newName != null) {
+				entry.Name = newName;
+			}
+			
+			this.tarOut.PutNextEntry(entry);
+			
+			if (entry.IsDirectory) {
+				if (recurse) {
+					TarEntry[] list = entry.GetDirectoryEntries();
+					for (int i = 0; i < list.Length; ++i) {
+						InternalWriteEntry(list[i], recurse);
+					}
+				}
+			} else {
+				Stream inputStream = File.OpenRead(entryFilename);
+				int numWritten = 0;
+				byte[] eBuf = new byte[32 * 1024];
+				while (true) {
+					int numRead = inputStream.Read(eBuf, 0, eBuf.Length);
+					
+					if (numRead <=0) {
+						break;
+					}
+					
+					this.tarOut.Write(eBuf, 0, numRead);
+					numWritten +=  numRead;
+				}
+
+				inputStream.Close();
+				
+				if (tempFileName != null && tempFileName.Length > 0) {
+					File.Delete(tempFileName);
+				}
+				
+				this.tarOut.CloseEntry();
+			}
+		}
+	}
+}
+
+
+/* The original Java file had this header:
+	** Authored by Timothy Gerard Endres
+	** <mailto:time@gjt.org>  <http://www.trustice.com>
+	**
+	** This work has been placed into the public domain.
+	** You may use this work in any way and for any purpose you wish.
+	**
+	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
+	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
+	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
+	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
+	** REDISTRIBUTION OF THIS SOFTWARE.
+	**
+	*/
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarBuffer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarBuffer.cs
@@ -1,482 +1,482 @@
-// TarBuffer.cs
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-//
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-using System.Text;
-
-namespace ICSharpCode.SharpZipLib.Tar 
-{
-	
-	/// <summary>
-	/// The TarBuffer class implements the tar archive concept
-	/// of a buffered input stream. This concept goes back to the
-	/// days of blocked tape drives and special io devices. In the
-	/// C# universe, the only real function that this class
-	/// performs is to ensure that files have the correct "record"
-	/// size, or other tars will complain.
-	/// <p>
-	/// You should never have a need to access this class directly.
-	/// TarBuffers are created by Tar IO Streams.
-	/// </p>
-	/// </summary>
-	public class TarBuffer
-	{
-
-/* A quote from GNU tar man file on blocking and records
-   A `tar' archive file contains a series of blocks.  Each block
-contains `BLOCKSIZE' bytes.  Although this format may be thought of as
-being on magnetic tape, other media are often used.
-
-   Each file archived is represented by a header block which describes
-the file, followed by zero or more blocks which give the contents of
-the file.  At the end of the archive file there may be a block filled
-with binary zeros as an end-of-file marker.  A reasonable system should
-write a block of zeros at the end, but must not assume that such a
-block exists when reading an archive.
-
-   The blocks may be "blocked" for physical I/O operations.  Each
-record of N blocks (where N is set by the `--blocking-factor=512-SIZE'
-(`-b 512-SIZE') option to `tar') is written with a single `write ()'
-operation.  On magnetic tapes, the result of such a write is a single
-record.  When writing an archive, the last record of blocks should be
-written at the full size, with blocks after the zero block containing
-all zeros.  When reading an archive, a reasonable system should
-properly handle an archive whose last record is shorter than the rest,
-or which contains garbage records after a zero block.
-*/
-
-		/// <summary>
-		/// The size of a block in a tar archive in bytes.
-		/// </summary>
-		/// <remarks>This is 512 bytes.</remarks>
-		public const int BlockSize = 512;
-		
-		/// <summary>
-		/// The number of blocks in a default record.
-		/// </summary>
-		/// <remarks>
-		/// The default value is 20 block per record.
-		/// </remarks>
-		public const int DefaultBlockFactor = 20;
-		
-		/// <summary>
-		/// The size in bytes of a default record.
-		/// </summary>
-		/// <remarks>
-		/// The default size is 10KB.
-		/// </remarks>
-		public const int DefaultRecordSize = BlockSize * DefaultBlockFactor;
-		
-		Stream inputStream;
-		Stream outputStream;
-		
-		byte[] recordBuffer;
-		int    currentBlockIndex;
-		int    currentRecordIndex;
-
-		int    recordSize = DefaultRecordSize;
-		
-		/// <summary>
-		/// Get the record size for this buffer
-		/// </summary>
-		public int RecordSize {
-			get { 
-				return recordSize; 
-			}
-		}
-
-		int    blockFactor = DefaultBlockFactor;
-
-		/// <summary>
-		/// Get the Blocking factor for the buffer
-		/// </summary>
-		public int BlockFactor {
-			get { 
-				return blockFactor; 
-			}
-		}
-
-
-		/// <summary>
-		/// Construct a default TarBuffer
-		/// </summary>
-		protected TarBuffer()
-		{
-		}
-		
-		/// <summary>
-		/// Create TarBuffer for reading with default BlockFactor
-		/// </summary>
-		/// <param name="inputStream">Stream to buffer</param>
-		/// <returns>TarBuffer</returns>
-		public static TarBuffer CreateInputTarBuffer(Stream inputStream)
-		{
-			return CreateInputTarBuffer(inputStream, TarBuffer.DefaultBlockFactor);
-		}
-
-		/// <summary>
-		/// Construct TarBuffer for reading inputStream setting BlockFactor
-		/// </summary>
-		/// <param name="inputStream">Stream to buffer</param>
-		/// <param name="blockFactor">Blocking factor to apply</param>
-		/// <returns>TarBuffer</returns>
-		public static TarBuffer CreateInputTarBuffer(Stream inputStream, int blockFactor)
-		{
-			TarBuffer tarBuffer = new TarBuffer();
-			tarBuffer.inputStream  = inputStream;
-			tarBuffer.outputStream = null;
-			tarBuffer.Initialize(blockFactor);
-			
-			return tarBuffer;
-		}
-
-		/// <summary>
-		/// Construct TarBuffer for writing with default BlockFactor
-		/// </summary>
-		/// <param name="outputStream">output stream for buffer</param>
-		/// <returns>TarBuffer</returns>
-		public static TarBuffer CreateOutputTarBuffer(Stream outputStream)
-		{
-			return CreateOutputTarBuffer(outputStream, TarBuffer.DefaultBlockFactor);
-		}
-
-		/// <summary>
-		/// Construct TarBuffer for writing Tar output to streams.
-		/// </summary>
-		/// <param name="outputStream">Output stream to write to.</param>
-		/// <param name="blockFactor">Blocking factor to apply</param>
-		/// <returns>TarBuffer</returns>
-		public static TarBuffer CreateOutputTarBuffer(Stream outputStream, int blockFactor)
-		{
-			TarBuffer tarBuffer = new TarBuffer();
-			tarBuffer.inputStream  = null;
-			tarBuffer.outputStream = outputStream;
-			tarBuffer.Initialize(blockFactor);
-			
-			return tarBuffer;
-		}
-		
-		/// <summary>
-		/// Initialization common to all constructors.
-		/// </summary>
-		void Initialize(int blockFactor)
-		{
-			this.blockFactor  = blockFactor;
-			this.recordSize   = blockFactor * BlockSize;
-
-			this.recordBuffer  = new byte[RecordSize];
-			
-			if (inputStream != null) {
-				this.currentRecordIndex = -1;
-				this.currentBlockIndex = BlockFactor;
-			} else {
-				this.currentRecordIndex = 0;
-				this.currentBlockIndex = 0;
-			}
-		}
-		
-		/// <summary>
-		/// Get the TAR Buffer's block factor
-		/// </summary>
-		public int GetBlockFactor()
-		{
-			return this.blockFactor;
-		}
-		
-		/// <summary>
-		/// Get the TAR Buffer's record size.
-		/// </summary>
-		public int GetRecordSize()
-		{
-			return this.recordSize;
-		}
-		
-		/// <summary>
-		/// Determine if an archive block indicates End of Archive. End of
-		/// archive is indicated by a block that consists entirely of null bytes.
-		/// All remaining blocks for the record should also be null's
-		/// However some older tars only do a couple of null blocks (Old GNU tar for one)
-		/// and also partial records
-		/// </summary>
-		/// <param name = "block">The data block to check.</param>
-		public bool IsEOFBlock(byte[] block)
-		{
-			for (int i = 0, sz = BlockSize; i < sz; ++i) {
-				if (block[i] != 0) {
-					return false;
-				}
-			}
-			
-			return true;
-		}
-		
-		/// <summary>
-		/// Skip over a block on the input stream.
-		/// </summary>
-		public void SkipBlock()
-		{
-			if (this.inputStream == null) {
-				throw new TarException("no input stream defined");
-			}
-			
-			if (this.currentBlockIndex >= this.BlockFactor) {
-				if (!this.ReadRecord()) {
-					return;
-				}
-			}
-			
-			this.currentBlockIndex++;
-		}
-		
-		/// <summary>
-		/// Read a block from the input stream.
-		/// </summary>
-		/// <returns>
-		/// The block of data read.
-		/// </returns>
-		public byte[] ReadBlock()
-		{
-			if (this.inputStream == null) {
-				throw new TarException("TarBuffer.ReadBlock - no input stream defined");
-			}
-			
-			if (this.currentBlockIndex >= this.BlockFactor) {
-				if (!this.ReadRecord()) {
-					return null;
-				}
-			}
-			
-			byte[] result = new byte[BlockSize];
-			
-			Array.Copy(this.recordBuffer, (this.currentBlockIndex * BlockSize), result, 0, BlockSize );
-			this.currentBlockIndex++;
-			return result;
-		}
-		
-		/// <summary>
-		/// Read a record from data stream.
-		/// </summary>
-		/// <returns>
-		/// false if End-Of-File, else true.
-		/// </returns>
-		bool ReadRecord()
-		{
-			if (this.inputStream == null) {
-				throw new TarException("no input stream stream defined");
-			}
-						
-			this.currentBlockIndex = 0;
-			
-			int offset = 0;
-			int bytesNeeded = RecordSize;
-
-			while (bytesNeeded > 0) {
-				long numBytes = this.inputStream.Read(this.recordBuffer, offset, bytesNeeded);
-				
-				//
-				// NOTE
-				// We have found EOF, and the record is not full!
-				//
-				// This is a broken archive. It does not follow the standard
-				// blocking algorithm. However, because we are generous, and
-				// it requires little effort, we will simply ignore the error
-				// and continue as if the entire record were read. This does
-				// not appear to break anything upstream. We used to return
-				// false in this case.
-				//
-				// Thanks to 'Yohann.Roussel@alcatel.fr' for this fix.
-				//
-				if (numBytes <= 0) {
-					break;
-				}
-				
-				offset      += (int)numBytes;
-				bytesNeeded -= (int)numBytes;
-			}
-			
-			this.currentRecordIndex++;
-			return true;
-		}
-		
-		/// <summary>
-		/// Get the current block number, within the current record, zero based.
-		/// </summary>
-		/// <returns>
-		/// The current zero based block number.
-		/// </returns>
-		/// <remarks>
-		/// The absolute block number = (<see cref="GetCurrentRecordNum">record number</see> * <see cref="BlockFactor">block factor</see>) + <see cref="GetCurrentBlockNum">block number</see>.
-		/// </remarks>
-		public int GetCurrentBlockNum()
-		{
-			return this.currentBlockIndex;
-		}
-		
-		/// <summary>
-		/// Get the current record number.
-		/// </summary>
-		/// <returns>
-		/// The current zero based record number.
-		/// </returns>
-		public int GetCurrentRecordNum()
-		{
-			return this.currentRecordIndex;
-		}
-		
-		/// <summary>
-		/// Write a block of data to the archive.
-		/// </summary>
-		/// <param name="block">
-		/// The data to write to the archive.
-		/// </param>
-		public void WriteBlock(byte[] block)
-		{
-			if (this.outputStream == null) {
-				throw new TarException("TarBuffer.WriteBlock - no output stream defined");
-			}
-						
-			if (block.Length != BlockSize) {
-				throw new TarException("TarBuffer.WriteBlock - block to write has length '" + block.Length + "' which is not the block size of '" + BlockSize + "'" );
-			}
-			
-			if (this.currentBlockIndex >= BlockFactor) {
-				this.WriteRecord();
-			}
-
-			Array.Copy(block, 0, this.recordBuffer, (this.currentBlockIndex * BlockSize), BlockSize);
-			this.currentBlockIndex++;
-		}
-		
-		/// <summary>
-		/// Write an archive record to the archive, where the record may be
-		/// inside of a larger array buffer. The buffer must be "offset plus
-		/// record size" long.
-		/// </summary>
-		/// <param name="buf">
-		/// The buffer containing the record data to write.
-		/// </param>
-		/// <param name="offset">
-		/// The offset of the record data within buf.
-		/// </param>
-		public void WriteBlock(byte[] buf, int offset)
-		{
-			if (this.outputStream == null) {
-				throw new TarException("TarBuffer.WriteBlock - no output stream stream defined");
-			}
-						
-			if ((offset + BlockSize) > buf.Length) {
-				throw new TarException("TarBuffer.WriteBlock - record has length '" + buf.Length + "' with offset '" + offset + "' which is less than the record size of '" + this.recordSize + "'" );
-			}
-			
-			if (this.currentBlockIndex >= this.BlockFactor) {
-				this.WriteRecord();
-			}
-			
-			Array.Copy(buf, offset, this.recordBuffer, (this.currentBlockIndex * BlockSize), BlockSize);
-			
-			this.currentBlockIndex++;
-		}
-		
-		/// <summary>
-		/// Write a TarBuffer record to the archive.
-		/// </summary>
-		void WriteRecord()
-		{
-			if (this.outputStream == null)
-			{
-				throw new TarException("TarBuffer.WriteRecord no output stream defined");
-			}
-			
-			this.outputStream.Write(this.recordBuffer, 0, RecordSize);
-			this.outputStream.Flush();
-			
-			this.currentBlockIndex = 0;
-			this.currentRecordIndex++;
-		}
-		
-		/// <summary>
-		/// Flush the current data block if it has any data in it.
-		/// </summary>
-		void Flush()
-		{
-			if (this.outputStream == null) 
-			{
-				throw new TarException("TarBuffer.Flush no output stream defined");
-			}
-			
-			if (this.currentBlockIndex > 0) 
-			{
-				this.WriteRecord();
-			}
-			outputStream.Flush();
-		}
-		
-		/// <summary>
-		/// Close the TarBuffer. If this is an output buffer, also flush the
-		/// current block before closing.
-		/// </summary>
-		public void Close()
-		{
-			if (outputStream != null)
-			{
-				Flush();
-	
-				outputStream.Close();
-				outputStream = null;
-			}
-			else if (inputStream != null)
-			{
-				inputStream.Close();
-				inputStream = null;
-			}
-		}
-	}
-}
-
-/* The original Java file had this header:
-	*
-	** Authored by Timothy Gerard Endres
-	** <mailto:time@gjt.org>  <http://www.trustice.com>
-	**
-	** This work has been placed into the public domain.
-	** You may use this work in any way and for any purpose you wish.
-	**
-	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
-	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
-	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
-	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
-	** REDISTRIBUTION OF THIS SOFTWARE.
-	**
-	*/
+// TarBuffer.cs
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+//
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+using System.Text;
+
+namespace ICSharpCode.SharpZipLib.Tar 
+{
+	
+	/// <summary>
+	/// The TarBuffer class implements the tar archive concept
+	/// of a buffered input stream. This concept goes back to the
+	/// days of blocked tape drives and special io devices. In the
+	/// C# universe, the only real function that this class
+	/// performs is to ensure that files have the correct "record"
+	/// size, or other tars will complain.
+	/// <p>
+	/// You should never have a need to access this class directly.
+	/// TarBuffers are created by Tar IO Streams.
+	/// </p>
+	/// </summary>
+	public class TarBuffer
+	{
+
+/* A quote from GNU tar man file on blocking and records
+   A `tar' archive file contains a series of blocks.  Each block
+contains `BLOCKSIZE' bytes.  Although this format may be thought of as
+being on magnetic tape, other media are often used.
+
+   Each file archived is represented by a header block which describes
+the file, followed by zero or more blocks which give the contents of
+the file.  At the end of the archive file there may be a block filled
+with binary zeros as an end-of-file marker.  A reasonable system should
+write a block of zeros at the end, but must not assume that such a
+block exists when reading an archive.
+
+   The blocks may be "blocked" for physical I/O operations.  Each
+record of N blocks (where N is set by the `--blocking-factor=512-SIZE'
+(`-b 512-SIZE') option to `tar') is written with a single `write ()'
+operation.  On magnetic tapes, the result of such a write is a single
+record.  When writing an archive, the last record of blocks should be
+written at the full size, with blocks after the zero block containing
+all zeros.  When reading an archive, a reasonable system should
+properly handle an archive whose last record is shorter than the rest,
+or which contains garbage records after a zero block.
+*/
+
+		/// <summary>
+		/// The size of a block in a tar archive in bytes.
+		/// </summary>
+		/// <remarks>This is 512 bytes.</remarks>
+		public const int BlockSize = 512;
+		
+		/// <summary>
+		/// The number of blocks in a default record.
+		/// </summary>
+		/// <remarks>
+		/// The default value is 20 block per record.
+		/// </remarks>
+		public const int DefaultBlockFactor = 20;
+		
+		/// <summary>
+		/// The size in bytes of a default record.
+		/// </summary>
+		/// <remarks>
+		/// The default size is 10KB.
+		/// </remarks>
+		public const int DefaultRecordSize = BlockSize * DefaultBlockFactor;
+		
+		Stream inputStream;
+		Stream outputStream;
+		
+		byte[] recordBuffer;
+		int    currentBlockIndex;
+		int    currentRecordIndex;
+
+		int    recordSize = DefaultRecordSize;
+		
+		/// <summary>
+		/// Get the record size for this buffer
+		/// </summary>
+		public int RecordSize {
+			get { 
+				return recordSize; 
+			}
+		}
+
+		int    blockFactor = DefaultBlockFactor;
+
+		/// <summary>
+		/// Get the Blocking factor for the buffer
+		/// </summary>
+		public int BlockFactor {
+			get { 
+				return blockFactor; 
+			}
+		}
+
+
+		/// <summary>
+		/// Construct a default TarBuffer
+		/// </summary>
+		protected TarBuffer()
+		{
+		}
+		
+		/// <summary>
+		/// Create TarBuffer for reading with default BlockFactor
+		/// </summary>
+		/// <param name="inputStream">Stream to buffer</param>
+		/// <returns>TarBuffer</returns>
+		public static TarBuffer CreateInputTarBuffer(Stream inputStream)
+		{
+			return CreateInputTarBuffer(inputStream, TarBuffer.DefaultBlockFactor);
+		}
+
+		/// <summary>
+		/// Construct TarBuffer for reading inputStream setting BlockFactor
+		/// </summary>
+		/// <param name="inputStream">Stream to buffer</param>
+		/// <param name="blockFactor">Blocking factor to apply</param>
+		/// <returns>TarBuffer</returns>
+		public static TarBuffer CreateInputTarBuffer(Stream inputStream, int blockFactor)
+		{
+			TarBuffer tarBuffer = new TarBuffer();
+			tarBuffer.inputStream  = inputStream;
+			tarBuffer.outputStream = null;
+			tarBuffer.Initialize(blockFactor);
+			
+			return tarBuffer;
+		}
+
+		/// <summary>
+		/// Construct TarBuffer for writing with default BlockFactor
+		/// </summary>
+		/// <param name="outputStream">output stream for buffer</param>
+		/// <returns>TarBuffer</returns>
+		public static TarBuffer CreateOutputTarBuffer(Stream outputStream)
+		{
+			return CreateOutputTarBuffer(outputStream, TarBuffer.DefaultBlockFactor);
+		}
+
+		/// <summary>
+		/// Construct TarBuffer for writing Tar output to streams.
+		/// </summary>
+		/// <param name="outputStream">Output stream to write to.</param>
+		/// <param name="blockFactor">Blocking factor to apply</param>
+		/// <returns>TarBuffer</returns>
+		public static TarBuffer CreateOutputTarBuffer(Stream outputStream, int blockFactor)
+		{
+			TarBuffer tarBuffer = new TarBuffer();
+			tarBuffer.inputStream  = null;
+			tarBuffer.outputStream = outputStream;
+			tarBuffer.Initialize(blockFactor);
+			
+			return tarBuffer;
+		}
+		
+		/// <summary>
+		/// Initialization common to all constructors.
+		/// </summary>
+		void Initialize(int blockFactor)
+		{
+			this.blockFactor  = blockFactor;
+			this.recordSize   = blockFactor * BlockSize;
+
+			this.recordBuffer  = new byte[RecordSize];
+			
+			if (inputStream != null) {
+				this.currentRecordIndex = -1;
+				this.currentBlockIndex = BlockFactor;
+			} else {
+				this.currentRecordIndex = 0;
+				this.currentBlockIndex = 0;
+			}
+		}
+		
+		/// <summary>
+		/// Get the TAR Buffer's block factor
+		/// </summary>
+		public int GetBlockFactor()
+		{
+			return this.blockFactor;
+		}
+		
+		/// <summary>
+		/// Get the TAR Buffer's record size.
+		/// </summary>
+		public int GetRecordSize()
+		{
+			return this.recordSize;
+		}
+		
+		/// <summary>
+		/// Determine if an archive block indicates End of Archive. End of
+		/// archive is indicated by a block that consists entirely of null bytes.
+		/// All remaining blocks for the record should also be null's
+		/// However some older tars only do a couple of null blocks (Old GNU tar for one)
+		/// and also partial records
+		/// </summary>
+		/// <param name = "block">The data block to check.</param>
+		public bool IsEOFBlock(byte[] block)
+		{
+			for (int i = 0, sz = BlockSize; i < sz; ++i) {
+				if (block[i] != 0) {
+					return false;
+				}
+			}
+			
+			return true;
+		}
+		
+		/// <summary>
+		/// Skip over a block on the input stream.
+		/// </summary>
+		public void SkipBlock()
+		{
+			if (this.inputStream == null) {
+				throw new TarException("no input stream defined");
+			}
+			
+			if (this.currentBlockIndex >= this.BlockFactor) {
+				if (!this.ReadRecord()) {
+					return;
+				}
+			}
+			
+			this.currentBlockIndex++;
+		}
+		
+		/// <summary>
+		/// Read a block from the input stream.
+		/// </summary>
+		/// <returns>
+		/// The block of data read.
+		/// </returns>
+		public byte[] ReadBlock()
+		{
+			if (this.inputStream == null) {
+				throw new TarException("TarBuffer.ReadBlock - no input stream defined");
+			}
+			
+			if (this.currentBlockIndex >= this.BlockFactor) {
+				if (!this.ReadRecord()) {
+					return null;
+				}
+			}
+			
+			byte[] result = new byte[BlockSize];
+			
+			Array.Copy(this.recordBuffer, (this.currentBlockIndex * BlockSize), result, 0, BlockSize );
+			this.currentBlockIndex++;
+			return result;
+		}
+		
+		/// <summary>
+		/// Read a record from data stream.
+		/// </summary>
+		/// <returns>
+		/// false if End-Of-File, else true.
+		/// </returns>
+		bool ReadRecord()
+		{
+			if (this.inputStream == null) {
+				throw new TarException("no input stream stream defined");
+			}
+						
+			this.currentBlockIndex = 0;
+			
+			int offset = 0;
+			int bytesNeeded = RecordSize;
+
+			while (bytesNeeded > 0) {
+				long numBytes = this.inputStream.Read(this.recordBuffer, offset, bytesNeeded);
+				
+				//
+				// NOTE
+				// We have found EOF, and the record is not full!
+				//
+				// This is a broken archive. It does not follow the standard
+				// blocking algorithm. However, because we are generous, and
+				// it requires little effort, we will simply ignore the error
+				// and continue as if the entire record were read. This does
+				// not appear to break anything upstream. We used to return
+				// false in this case.
+				//
+				// Thanks to 'Yohann.Roussel@alcatel.fr' for this fix.
+				//
+				if (numBytes <= 0) {
+					break;
+				}
+				
+				offset      += (int)numBytes;
+				bytesNeeded -= (int)numBytes;
+			}
+			
+			this.currentRecordIndex++;
+			return true;
+		}
+		
+		/// <summary>
+		/// Get the current block number, within the current record, zero based.
+		/// </summary>
+		/// <returns>
+		/// The current zero based block number.
+		/// </returns>
+		/// <remarks>
+		/// The absolute block number = (<see cref="GetCurrentRecordNum">record number</see> * <see cref="BlockFactor">block factor</see>) + <see cref="GetCurrentBlockNum">block number</see>.
+		/// </remarks>
+		public int GetCurrentBlockNum()
+		{
+			return this.currentBlockIndex;
+		}
+		
+		/// <summary>
+		/// Get the current record number.
+		/// </summary>
+		/// <returns>
+		/// The current zero based record number.
+		/// </returns>
+		public int GetCurrentRecordNum()
+		{
+			return this.currentRecordIndex;
+		}
+		
+		/// <summary>
+		/// Write a block of data to the archive.
+		/// </summary>
+		/// <param name="block">
+		/// The data to write to the archive.
+		/// </param>
+		public void WriteBlock(byte[] block)
+		{
+			if (this.outputStream == null) {
+				throw new TarException("TarBuffer.WriteBlock - no output stream defined");
+			}
+						
+			if (block.Length != BlockSize) {
+				throw new TarException("TarBuffer.WriteBlock - block to write has length '" + block.Length + "' which is not the block size of '" + BlockSize + "'" );
+			}
+			
+			if (this.currentBlockIndex >= BlockFactor) {
+				this.WriteRecord();
+			}
+
+			Array.Copy(block, 0, this.recordBuffer, (this.currentBlockIndex * BlockSize), BlockSize);
+			this.currentBlockIndex++;
+		}
+		
+		/// <summary>
+		/// Write an archive record to the archive, where the record may be
+		/// inside of a larger array buffer. The buffer must be "offset plus
+		/// record size" long.
+		/// </summary>
+		/// <param name="buf">
+		/// The buffer containing the record data to write.
+		/// </param>
+		/// <param name="offset">
+		/// The offset of the record data within buf.
+		/// </param>
+		public void WriteBlock(byte[] buf, int offset)
+		{
+			if (this.outputStream == null) {
+				throw new TarException("TarBuffer.WriteBlock - no output stream stream defined");
+			}
+						
+			if ((offset + BlockSize) > buf.Length) {
+				throw new TarException("TarBuffer.WriteBlock - record has length '" + buf.Length + "' with offset '" + offset + "' which is less than the record size of '" + this.recordSize + "'" );
+			}
+			
+			if (this.currentBlockIndex >= this.BlockFactor) {
+				this.WriteRecord();
+			}
+			
+			Array.Copy(buf, offset, this.recordBuffer, (this.currentBlockIndex * BlockSize), BlockSize);
+			
+			this.currentBlockIndex++;
+		}
+		
+		/// <summary>
+		/// Write a TarBuffer record to the archive.
+		/// </summary>
+		void WriteRecord()
+		{
+			if (this.outputStream == null)
+			{
+				throw new TarException("TarBuffer.WriteRecord no output stream defined");
+			}
+			
+			this.outputStream.Write(this.recordBuffer, 0, RecordSize);
+			this.outputStream.Flush();
+			
+			this.currentBlockIndex = 0;
+			this.currentRecordIndex++;
+		}
+		
+		/// <summary>
+		/// Flush the current data block if it has any data in it.
+		/// </summary>
+		void Flush()
+		{
+			if (this.outputStream == null) 
+			{
+				throw new TarException("TarBuffer.Flush no output stream defined");
+			}
+			
+			if (this.currentBlockIndex > 0) 
+			{
+				this.WriteRecord();
+			}
+			outputStream.Flush();
+		}
+		
+		/// <summary>
+		/// Close the TarBuffer. If this is an output buffer, also flush the
+		/// current block before closing.
+		/// </summary>
+		public void Close()
+		{
+			if (outputStream != null)
+			{
+				Flush();
+	
+				outputStream.Close();
+				outputStream = null;
+			}
+			else if (inputStream != null)
+			{
+				inputStream.Close();
+				inputStream = null;
+			}
+		}
+	}
+}
+
+/* The original Java file had this header:
+	*
+	** Authored by Timothy Gerard Endres
+	** <mailto:time@gjt.org>  <http://www.trustice.com>
+	**
+	** This work has been placed into the public domain.
+	** You may use this work in any way and for any purpose you wish.
+	**
+	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
+	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
+	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
+	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
+	** REDISTRIBUTION OF THIS SOFTWARE.
+	**
+	*/
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarEntry.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarEntry.cs
@@ -1,539 +1,539 @@
-// TarEntry.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-using System.Text;
-
-namespace ICSharpCode.SharpZipLib.Tar 
-{
-	
-	/// <summary>
-	/// This class represents an entry in a Tar archive. It consists
-	/// of the entry's header, as well as the entry's File. Entries
-	/// can be instantiated in one of three ways, depending on how
-	/// they are to be used.
-	/// <p>
-	/// TarEntries that are created from the header bytes read from
-	/// an archive are instantiated with the TarEntry( byte[] )
-	/// constructor. These entries will be used when extracting from
-	/// or listing the contents of an archive. These entries have their
-	/// header filled in using the header bytes. They also set the File
-	/// to null, since they reference an archive entry not a file.</p>
-	/// <p>
-	/// TarEntries that are created from files that are to be written
-	/// into an archive are instantiated with the CreateEntryFromFile(string)
-	/// pseudo constructor. These entries have their header filled in using
-	/// the File's information. They also keep a reference to the File
-	/// for convenience when writing entries.</p>
-	/// <p>
-	/// Finally, TarEntries can be constructed from nothing but a name.
-	/// This allows the programmer to construct the entry by hand, for
-	/// instance when only an InputStream is available for writing to
-	/// the archive, and the header information is constructed from
-	/// other information. In this case the header fields are set to
-	/// defaults and the File is set to null.</p>
-	/// 
-	/// <see cref="TarHeader"/>
-	/// </summary>
-	public class TarEntry : ICloneable
-	{
-		/// <summary>
-		/// The name of the file this entry represents or null if the entry is not based on a file.
-		/// </summary>
-		string file;
-		
-		/// <summary>
-		/// The entry's header information.
-		/// </summary>
-		TarHeader	header;
-		
-		/// <summary>
-		/// Only allow creation of Entries with the static CreateXYZ factory methods.
-		/// </summary>
-		private TarEntry()
-		{
-		}
-		
-		/// <summary>
-		/// Construct an entry from an archive's header bytes. File is set
-		/// to null.
-		/// </summary>
-		/// <param name = "headerBuf">
-		/// The header bytes from a tar archive entry.
-		/// </param>
-		public TarEntry(byte[] headerBuf)
-		{
-			this.Initialize();
-			this.header.ParseBuffer(headerBuf);
-		}
-		
-
-		/// <summary>
-		/// Construct a TarEntry using the <paramref name="header">header</paramref> provided
-		/// </summary>
-		/// <param name="header">Header details for entry</param>
-		public TarEntry(TarHeader header)
-		{
-			file = null;
-			this.header = header;
-		}
-
-		/// <summary>
-		/// Clone this tar entry.
-		/// </summary>
-		/// <returns>Returns a clone of this entry.</returns>
-		public object Clone()
-		{
-			TarEntry entry = new TarEntry();
-			entry.file = this.file;
-			entry.header = (TarHeader)this.header.Clone();
-			entry.Name = this.Name;
-			return entry;
-		}
-		
-		/// <summary>
-		/// Construct an entry with only a <paramref name="name"></paramref>.
-		/// This allows the programmer to construct the entry's header "by hand". 
-		/// </summary>
-		public static TarEntry CreateTarEntry(string name)
-		{
-			TarEntry entry = new TarEntry();
-			entry.Initialize();
-			entry.NameTarHeader(entry.header, name);
-			return entry;
-		}
-		
-		/// <summary>
-		/// Construct an entry for a file. File is set to file, and the
-		/// header is constructed from information from the file.
-		/// </summary>
-		/// <param name = "fileName">
-		/// The file that the entry represents.
-		/// </param>
-		public static TarEntry CreateEntryFromFile(string fileName)
-		{
-			TarEntry entry = new TarEntry();
-			entry.Initialize();
-			entry.GetFileTarHeader(entry.header, fileName);
-			return entry;
-		}
-		
-		/// <summary>
-		/// Initialization code common to all pseudo constructors.
-		/// </summary>
-		void Initialize()
-		{
-			this.file   = null;
-			this.header = new TarHeader();
-		}
-		
-		/// <summary>
-		/// Determine if the two entries are equal. Equality is determined
-		/// by the header names being equal.
-		/// </summary>
-		/// <returns>
-		/// True if the entries are equal.
-		/// </returns>
-		public override bool Equals(object it)
-		{
-			if (!(it is TarEntry)) 
-			{
-				return false;
-			}
-			return this.Name.Equals(((TarEntry)it).Name);
-		}
-		
-		/// <summary>
-		/// Must be overridden when you override Equals.
-		/// </summary>
-		public override int GetHashCode()
-		{
-			return Name.GetHashCode();
-		}
-		
-		
-		/// <summary>
-		/// Determine if the given entry is a descendant of this entry.
-		/// Descendancy is determined by the name of the descendant
-		/// starting with this entry's name.
-		/// </summary>
-		/// <param name = "desc">
-		/// Entry to be checked as a descendent of this.
-		/// </param>
-		/// <returns>
-		/// True if entry is a descendant of this.
-		/// </returns>
-		public bool IsDescendent(TarEntry desc)
-		{
-			return desc.Name.StartsWith(Name);
-		}
-		
-		/// <summary>
-		/// Get this entry's header.
-		/// </summary>
-		/// <returns>
-		/// This entry's TarHeader.
-		/// </returns>
-		public TarHeader TarHeader 
-		{
-			get {
-				return this.header;
-			}
-		}
-		
-		/// <summary>
-		/// Get/Set this entry's name.
-		/// </summary>
-		public string Name 
-		{
-			get {
-				return header.Name;
-			}
-			set {
-				header.Name = value;
-			}
-		}
-		
-		/// <summary>
-		/// Get/set this entry's user id.
-		/// </summary>
-		public int UserId 
-		{
-			get {
-				return header.UserId;
-			}
-			set {
-				header.UserId = value;
-			}
-		}
-		
-		/// <summary>
-		/// Get/set this entry's group id.
-		/// </summary>
-		public int GroupId 
-		{
-			get {
-				return this.header.GroupId;
-			}
-			set {
-				this.header.GroupId = value;
-			}
-		}
-		
-		/// <summary>
-		/// Get/set this entry's user name.
-		/// </summary>
-		public string UserName 
-		{
-			get {
-				return this.header.UserName;
-			}
-			set {
-				this.header.UserName = value;
-			}
-		}
-		
-		/// <summary>
-		/// Get/set this entry's group name.
-		/// </summary>
-		public string GroupName 
-		{
-			get {
-				return this.header.GroupName;
-			}
-			set {
-				this.header.GroupName = value;
-			}
-		}
-		
-		/// <summary>
-		/// Convenience method to set this entry's group and user ids.
-		/// </summary>
-		/// <param name="userId">
-		/// This entry's new user id.
-		/// </param>
-		/// <param name="groupId">
-		/// This entry's new group id.
-		/// </param>
-		public void SetIds(int userId, int groupId)
-		{
-			UserId  = userId; 
-			GroupId = groupId;
-		}
-		
-		/// <summary>
-		/// Convenience method to set this entry's group and user names.
-		/// </summary>
-		/// <param name="userName">
-		/// This entry's new user name.
-		/// </param>
-		/// <param name="groupName">
-		/// This entry's new group name.
-		/// </param>
-		public void SetNames(string userName, string groupName)
-		{
-			UserName  = userName;
-			GroupName = groupName;
-		}
-
-		/// <summary>
-		/// Get/Set the modification time for this entry
-		/// </summary>
-		public DateTime ModTime {
-			get {
-				return this.header.ModTime;
-			}
-			set {
-				this.header.ModTime = value;
-			}
-		}
-		
-		/// <summary>
-		/// Get this entry's file.
-		/// </summary>
-		/// <returns>
-		/// This entry's file.
-		/// </returns>
-		public string File {
-			get {
-				return this.file;
-			}
-		}
-		
-		/// <summary>
-		/// Get/set this entry's recorded file size.
-		/// </summary>
-		public long Size {
-			get {
-				return this.header.Size;
-			}
-			set {
-				this.header.Size = value;
-			}
-		}
-		
-		/// <summary>
-		/// Convenience method that will modify an entry's name directly
-		/// in place in an entry header buffer byte array.
-		/// </summary>
-		/// <param name="outbuf">
-		/// The buffer containing the entry header to modify.
-		/// </param>
-		/// <param name="newName">
-		/// The new name to place into the header buffer.
-		/// </param>
-		public void AdjustEntryName(byte[] outbuf, string newName)
-		{
-			int offset = 0;
-			TarHeader.GetNameBytes(newName, outbuf, offset, TarHeader.NAMELEN);
-		}
-		
-		/// <summary>
-		/// Return true if this entry represents a directory, false otherwise
-		/// </summary>
-		/// <returns>
-		/// True if this entry is a directory.
-		/// </returns>
-		public bool IsDirectory {
-			get {
-				if (this.file != null) {
-					return Directory.Exists(file);
-				}
-				
-				if (this.header != null) {
-					if (this.header.TypeFlag == TarHeader.LF_DIR || Name.EndsWith( "/" )) {
-						return true;
-					}
-				}
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Fill in a TarHeader with information from a File.
-		/// </summary>
-		/// <param name="hdr">
-		/// The TarHeader to fill in.
-		/// </param>
-		/// <param name="file">
-		/// The file from which to get the header information.
-		/// </param>
-		public void GetFileTarHeader(TarHeader hdr, string file)
-		{
-			this.file = file;
-
-			// bugfix from torhovl from #D forum:
-			string name = file;
-
-#if !COMPACT_FRAMEWORK
-			// 23-Jan-2004 GnuTar allows device names in path where the name is not local to the current directory
-			if (name.IndexOf(Environment.CurrentDirectory) == 0) {
-				name = name.Substring(Environment.CurrentDirectory.Length);
-			}
-#endif
-			
-/*
-			if (Path.DirectorySeparatorChar == '\\') 
-			{  // check if the OS is Windows
-				// Strip off drive letters!
-				if (name.Length > 2) 
-				{
-					char ch1 = name[0];
-					char ch2 = name[1];
-					
-					if (ch2 == ':' && Char.IsLetter(ch1)) 
-					{
-						name = name.Substring(2);
-					}
-				}
-			}
-*/
-
-			name = name.Replace(Path.DirectorySeparatorChar, '/');
-
-			// No absolute pathnames
-			// Windows (and Posix?) paths can start with UNC style "\\NetworkDrive\",
-			// so we loop on starting /'s.
-			while (name.StartsWith("/")) {
-				name = name.Substring(1);
-			}
-
-			hdr.LinkName = String.Empty;
-			hdr.Name     = name;
-			
-			if (Directory.Exists(file)) {
-				hdr.Mode     = 1003; // Magic number for security access for a UNIX filesystem
-				hdr.TypeFlag = TarHeader.LF_DIR;
-				if (hdr.Name.Length == 0 || hdr.Name[hdr.Name.Length - 1] != '/') {
-					hdr.Name = hdr.Name + "/";
-				}
-				
-				hdr.Size     = 0;
-			} else {
-				hdr.Mode     = 33216; // Magic number for security access for a UNIX filesystem
-				hdr.TypeFlag = TarHeader.LF_NORMAL;
-				hdr.Size     = new FileInfo(file.Replace('/', Path.DirectorySeparatorChar)).Length;
-			}
-
-			hdr.ModTime = System.IO.File.GetLastWriteTime(file.Replace('/', Path.DirectorySeparatorChar)).ToUniversalTime();
-			hdr.DevMajor = 0;
-			hdr.DevMinor = 0;
-		}
-		
-		/// <summary>
-		/// Get entries for all files present in this entries directory.
-		/// If this entry doesnt represent a directory zero entries are returned.
-		/// </summary>
-		/// <returns>
-		/// An array of TarEntry's for this entry's children.
-		/// </returns>
-		public TarEntry[] GetDirectoryEntries()
-		{
-			if (this.file == null || !Directory.Exists(this.file)) {
-				return new TarEntry[0];
-			}
-			
-			string[]   list   = Directory.GetFileSystemEntries(this.file);
-			TarEntry[] result = new TarEntry[list.Length];
-
-			for (int i = 0; i < list.Length; ++i) {
-				result[i] = TarEntry.CreateEntryFromFile(list[i]);
-			}
-			
-			return result;
-		}
-		
-		/// <summary>
-		/// Write an entry's header information to a header buffer.
-		/// </summary>
-		/// <param name = "outbuf">
-		/// The tar entry header buffer to fill in.
-		/// </param>
-		public void WriteEntryHeader(byte[] outbuf)
-		{
-			this.header.WriteHeader(outbuf);
-		}
-		
-		/// <summary>
-		/// Fill in a TarHeader given only the entry's name.
-		/// </summary>
-		/// <param name="hdr">
-		/// The TarHeader to fill in.
-		/// </param>
-		/// <param name="name">
-		/// The tar entry name.
-		/// </param>
-		public void NameTarHeader(TarHeader hdr, string name)
-		{
-			bool isDir = name.EndsWith("/");
-			
-			hdr.Name = name;
-			hdr.Mode = isDir ? 1003 : 33216;
-			hdr.UserId   = 0;
-			hdr.GroupId  = 0;
-			hdr.Size     = 0;
-			
-			hdr.ModTime  = DateTime.UtcNow;
-			
-			hdr.TypeFlag = isDir ? TarHeader.LF_DIR : TarHeader.LF_NORMAL;
-			
-			hdr.LinkName  = String.Empty;
-			hdr.UserName  = String.Empty;
-			hdr.GroupName = String.Empty;
-			
-			hdr.DevMajor = 0;
-			hdr.DevMinor = 0;
-		}
-	}
-}
-
-
-
-/* The original Java file had this header:
-	*
-	** Authored by Timothy Gerard Endres
-	** <mailto:time@gjt.org>  <http://www.trustice.com>
-	**
-	** This work has been placed into the public domain.
-	** You may use this work in any way and for any purpose you wish.
-	**
-	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
-	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
-	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
-	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
-	** REDISTRIBUTION OF THIS SOFTWARE.
-	**
-	*/
+// TarEntry.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+using System.Text;
+
+namespace ICSharpCode.SharpZipLib.Tar 
+{
+	
+	/// <summary>
+	/// This class represents an entry in a Tar archive. It consists
+	/// of the entry's header, as well as the entry's File. Entries
+	/// can be instantiated in one of three ways, depending on how
+	/// they are to be used.
+	/// <p>
+	/// TarEntries that are created from the header bytes read from
+	/// an archive are instantiated with the TarEntry( byte[] )
+	/// constructor. These entries will be used when extracting from
+	/// or listing the contents of an archive. These entries have their
+	/// header filled in using the header bytes. They also set the File
+	/// to null, since they reference an archive entry not a file.</p>
+	/// <p>
+	/// TarEntries that are created from files that are to be written
+	/// into an archive are instantiated with the CreateEntryFromFile(string)
+	/// pseudo constructor. These entries have their header filled in using
+	/// the File's information. They also keep a reference to the File
+	/// for convenience when writing entries.</p>
+	/// <p>
+	/// Finally, TarEntries can be constructed from nothing but a name.
+	/// This allows the programmer to construct the entry by hand, for
+	/// instance when only an InputStream is available for writing to
+	/// the archive, and the header information is constructed from
+	/// other information. In this case the header fields are set to
+	/// defaults and the File is set to null.</p>
+	/// 
+	/// <see cref="TarHeader"/>
+	/// </summary>
+	public class TarEntry : ICloneable
+	{
+		/// <summary>
+		/// The name of the file this entry represents or null if the entry is not based on a file.
+		/// </summary>
+		string file;
+		
+		/// <summary>
+		/// The entry's header information.
+		/// </summary>
+		TarHeader	header;
+		
+		/// <summary>
+		/// Only allow creation of Entries with the static CreateXYZ factory methods.
+		/// </summary>
+		private TarEntry()
+		{
+		}
+		
+		/// <summary>
+		/// Construct an entry from an archive's header bytes. File is set
+		/// to null.
+		/// </summary>
+		/// <param name = "headerBuf">
+		/// The header bytes from a tar archive entry.
+		/// </param>
+		public TarEntry(byte[] headerBuf)
+		{
+			this.Initialize();
+			this.header.ParseBuffer(headerBuf);
+		}
+		
+
+		/// <summary>
+		/// Construct a TarEntry using the <paramref name="header">header</paramref> provided
+		/// </summary>
+		/// <param name="header">Header details for entry</param>
+		public TarEntry(TarHeader header)
+		{
+			file = null;
+			this.header = header;
+		}
+
+		/// <summary>
+		/// Clone this tar entry.
+		/// </summary>
+		/// <returns>Returns a clone of this entry.</returns>
+		public object Clone()
+		{
+			TarEntry entry = new TarEntry();
+			entry.file = this.file;
+			entry.header = (TarHeader)this.header.Clone();
+			entry.Name = this.Name;
+			return entry;
+		}
+		
+		/// <summary>
+		/// Construct an entry with only a <paramref name="name"></paramref>.
+		/// This allows the programmer to construct the entry's header "by hand". 
+		/// </summary>
+		public static TarEntry CreateTarEntry(string name)
+		{
+			TarEntry entry = new TarEntry();
+			entry.Initialize();
+			entry.NameTarHeader(entry.header, name);
+			return entry;
+		}
+		
+		/// <summary>
+		/// Construct an entry for a file. File is set to file, and the
+		/// header is constructed from information from the file.
+		/// </summary>
+		/// <param name = "fileName">
+		/// The file that the entry represents.
+		/// </param>
+		public static TarEntry CreateEntryFromFile(string fileName)
+		{
+			TarEntry entry = new TarEntry();
+			entry.Initialize();
+			entry.GetFileTarHeader(entry.header, fileName);
+			return entry;
+		}
+		
+		/// <summary>
+		/// Initialization code common to all pseudo constructors.
+		/// </summary>
+		void Initialize()
+		{
+			this.file   = null;
+			this.header = new TarHeader();
+		}
+		
+		/// <summary>
+		/// Determine if the two entries are equal. Equality is determined
+		/// by the header names being equal.
+		/// </summary>
+		/// <returns>
+		/// True if the entries are equal.
+		/// </returns>
+		public override bool Equals(object it)
+		{
+			if (!(it is TarEntry)) 
+			{
+				return false;
+			}
+			return this.Name.Equals(((TarEntry)it).Name);
+		}
+		
+		/// <summary>
+		/// Must be overridden when you override Equals.
+		/// </summary>
+		public override int GetHashCode()
+		{
+			return Name.GetHashCode();
+		}
+		
+		
+		/// <summary>
+		/// Determine if the given entry is a descendant of this entry.
+		/// Descendancy is determined by the name of the descendant
+		/// starting with this entry's name.
+		/// </summary>
+		/// <param name = "desc">
+		/// Entry to be checked as a descendent of this.
+		/// </param>
+		/// <returns>
+		/// True if entry is a descendant of this.
+		/// </returns>
+		public bool IsDescendent(TarEntry desc)
+		{
+			return desc.Name.StartsWith(Name);
+		}
+		
+		/// <summary>
+		/// Get this entry's header.
+		/// </summary>
+		/// <returns>
+		/// This entry's TarHeader.
+		/// </returns>
+		public TarHeader TarHeader 
+		{
+			get {
+				return this.header;
+			}
+		}
+		
+		/// <summary>
+		/// Get/Set this entry's name.
+		/// </summary>
+		public string Name 
+		{
+			get {
+				return header.Name;
+			}
+			set {
+				header.Name = value;
+			}
+		}
+		
+		/// <summary>
+		/// Get/set this entry's user id.
+		/// </summary>
+		public int UserId 
+		{
+			get {
+				return header.UserId;
+			}
+			set {
+				header.UserId = value;
+			}
+		}
+		
+		/// <summary>
+		/// Get/set this entry's group id.
+		/// </summary>
+		public int GroupId 
+		{
+			get {
+				return this.header.GroupId;
+			}
+			set {
+				this.header.GroupId = value;
+			}
+		}
+		
+		/// <summary>
+		/// Get/set this entry's user name.
+		/// </summary>
+		public string UserName 
+		{
+			get {
+				return this.header.UserName;
+			}
+			set {
+				this.header.UserName = value;
+			}
+		}
+		
+		/// <summary>
+		/// Get/set this entry's group name.
+		/// </summary>
+		public string GroupName 
+		{
+			get {
+				return this.header.GroupName;
+			}
+			set {
+				this.header.GroupName = value;
+			}
+		}
+		
+		/// <summary>
+		/// Convenience method to set this entry's group and user ids.
+		/// </summary>
+		/// <param name="userId">
+		/// This entry's new user id.
+		/// </param>
+		/// <param name="groupId">
+		/// This entry's new group id.
+		/// </param>
+		public void SetIds(int userId, int groupId)
+		{
+			UserId  = userId; 
+			GroupId = groupId;
+		}
+		
+		/// <summary>
+		/// Convenience method to set this entry's group and user names.
+		/// </summary>
+		/// <param name="userName">
+		/// This entry's new user name.
+		/// </param>
+		/// <param name="groupName">
+		/// This entry's new group name.
+		/// </param>
+		public void SetNames(string userName, string groupName)
+		{
+			UserName  = userName;
+			GroupName = groupName;
+		}
+
+		/// <summary>
+		/// Get/Set the modification time for this entry
+		/// </summary>
+		public DateTime ModTime {
+			get {
+				return this.header.ModTime;
+			}
+			set {
+				this.header.ModTime = value;
+			}
+		}
+		
+		/// <summary>
+		/// Get this entry's file.
+		/// </summary>
+		/// <returns>
+		/// This entry's file.
+		/// </returns>
+		public string File {
+			get {
+				return this.file;
+			}
+		}
+		
+		/// <summary>
+		/// Get/set this entry's recorded file size.
+		/// </summary>
+		public long Size {
+			get {
+				return this.header.Size;
+			}
+			set {
+				this.header.Size = value;
+			}
+		}
+		
+		/// <summary>
+		/// Convenience method that will modify an entry's name directly
+		/// in place in an entry header buffer byte array.
+		/// </summary>
+		/// <param name="outbuf">
+		/// The buffer containing the entry header to modify.
+		/// </param>
+		/// <param name="newName">
+		/// The new name to place into the header buffer.
+		/// </param>
+		public void AdjustEntryName(byte[] outbuf, string newName)
+		{
+			int offset = 0;
+			TarHeader.GetNameBytes(newName, outbuf, offset, TarHeader.NAMELEN);
+		}
+		
+		/// <summary>
+		/// Return true if this entry represents a directory, false otherwise
+		/// </summary>
+		/// <returns>
+		/// True if this entry is a directory.
+		/// </returns>
+		public bool IsDirectory {
+			get {
+				if (this.file != null) {
+					return Directory.Exists(file);
+				}
+				
+				if (this.header != null) {
+					if (this.header.TypeFlag == TarHeader.LF_DIR || Name.EndsWith( "/" )) {
+						return true;
+					}
+				}
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Fill in a TarHeader with information from a File.
+		/// </summary>
+		/// <param name="hdr">
+		/// The TarHeader to fill in.
+		/// </param>
+		/// <param name="file">
+		/// The file from which to get the header information.
+		/// </param>
+		public void GetFileTarHeader(TarHeader hdr, string file)
+		{
+			this.file = file;
+
+			// bugfix from torhovl from #D forum:
+			string name = file;
+
+#if !COMPACT_FRAMEWORK
+			// 23-Jan-2004 GnuTar allows device names in path where the name is not local to the current directory
+			if (name.IndexOf(Environment.CurrentDirectory) == 0) {
+				name = name.Substring(Environment.CurrentDirectory.Length);
+			}
+#endif
+			
+/*
+			if (Path.DirectorySeparatorChar == '\\') 
+			{  // check if the OS is Windows
+				// Strip off drive letters!
+				if (name.Length > 2) 
+				{
+					char ch1 = name[0];
+					char ch2 = name[1];
+					
+					if (ch2 == ':' && Char.IsLetter(ch1)) 
+					{
+						name = name.Substring(2);
+					}
+				}
+			}
+*/
+
+			name = name.Replace(Path.DirectorySeparatorChar, '/');
+
+			// No absolute pathnames
+			// Windows (and Posix?) paths can start with UNC style "\\NetworkDrive\",
+			// so we loop on starting /'s.
+			while (name.StartsWith("/")) {
+				name = name.Substring(1);
+			}
+
+			hdr.LinkName = String.Empty;
+			hdr.Name     = name;
+			
+			if (Directory.Exists(file)) {
+				hdr.Mode     = 1003; // Magic number for security access for a UNIX filesystem
+				hdr.TypeFlag = TarHeader.LF_DIR;
+				if (hdr.Name.Length == 0 || hdr.Name[hdr.Name.Length - 1] != '/') {
+					hdr.Name = hdr.Name + "/";
+				}
+				
+				hdr.Size     = 0;
+			} else {
+				hdr.Mode     = 33216; // Magic number for security access for a UNIX filesystem
+				hdr.TypeFlag = TarHeader.LF_NORMAL;
+				hdr.Size     = new FileInfo(file.Replace('/', Path.DirectorySeparatorChar)).Length;
+			}
+
+			hdr.ModTime = System.IO.File.GetLastWriteTime(file.Replace('/', Path.DirectorySeparatorChar)).ToUniversalTime();
+			hdr.DevMajor = 0;
+			hdr.DevMinor = 0;
+		}
+		
+		/// <summary>
+		/// Get entries for all files present in this entries directory.
+		/// If this entry doesnt represent a directory zero entries are returned.
+		/// </summary>
+		/// <returns>
+		/// An array of TarEntry's for this entry's children.
+		/// </returns>
+		public TarEntry[] GetDirectoryEntries()
+		{
+			if (this.file == null || !Directory.Exists(this.file)) {
+				return new TarEntry[0];
+			}
+			
+			string[]   list   = Directory.GetFileSystemEntries(this.file);
+			TarEntry[] result = new TarEntry[list.Length];
+
+			for (int i = 0; i < list.Length; ++i) {
+				result[i] = TarEntry.CreateEntryFromFile(list[i]);
+			}
+			
+			return result;
+		}
+		
+		/// <summary>
+		/// Write an entry's header information to a header buffer.
+		/// </summary>
+		/// <param name = "outbuf">
+		/// The tar entry header buffer to fill in.
+		/// </param>
+		public void WriteEntryHeader(byte[] outbuf)
+		{
+			this.header.WriteHeader(outbuf);
+		}
+		
+		/// <summary>
+		/// Fill in a TarHeader given only the entry's name.
+		/// </summary>
+		/// <param name="hdr">
+		/// The TarHeader to fill in.
+		/// </param>
+		/// <param name="name">
+		/// The tar entry name.
+		/// </param>
+		public void NameTarHeader(TarHeader hdr, string name)
+		{
+			bool isDir = name.EndsWith("/");
+			
+			hdr.Name = name;
+			hdr.Mode = isDir ? 1003 : 33216;
+			hdr.UserId   = 0;
+			hdr.GroupId  = 0;
+			hdr.Size     = 0;
+			
+			hdr.ModTime  = DateTime.UtcNow;
+			
+			hdr.TypeFlag = isDir ? TarHeader.LF_DIR : TarHeader.LF_NORMAL;
+			
+			hdr.LinkName  = String.Empty;
+			hdr.UserName  = String.Empty;
+			hdr.GroupName = String.Empty;
+			
+			hdr.DevMajor = 0;
+			hdr.DevMinor = 0;
+		}
+	}
+}
+
+
+
+/* The original Java file had this header:
+	*
+	** Authored by Timothy Gerard Endres
+	** <mailto:time@gjt.org>  <http://www.trustice.com>
+	**
+	** This work has been placed into the public domain.
+	** You may use this work in any way and for any purpose you wish.
+	**
+	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
+	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
+	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
+	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
+	** REDISTRIBUTION OF THIS SOFTWARE.
+	**
+	*/
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarException.cs
@@ -1,60 +1,60 @@
-// TarException.cs
-//
-// Copyright 2004 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using ICSharpCode.SharpZipLib;
-
-namespace ICSharpCode.SharpZipLib.Tar {
-	
-	/// <summary>
-	/// TarExceptions are used for exceptions specific to tar classes and code.	
-	/// </summary>
-	public class TarException : SharpZipBaseException
-	{
-		/// <summary>
-		/// Initialises a new instance of the TarException class.
-		/// </summary>
-		public TarException()
-		{
-		}
-		
-		/// <summary>
-		/// Initialises a new instance of the TarException class with a specified message.
-		/// </summary>
-		/// <param name="message">The message that describes the error.</param>
-		public TarException(string message) : base(message)
-		{
-		}
-	}
-}
+// TarException.cs
+//
+// Copyright 2004 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using ICSharpCode.SharpZipLib;
+
+namespace ICSharpCode.SharpZipLib.Tar {
+	
+	/// <summary>
+	/// TarExceptions are used for exceptions specific to tar classes and code.	
+	/// </summary>
+	public class TarException : SharpZipBaseException
+	{
+		/// <summary>
+		/// Initialises a new instance of the TarException class.
+		/// </summary>
+		public TarException()
+		{
+		}
+		
+		/// <summary>
+		/// Initialises a new instance of the TarException class with a specified message.
+		/// </summary>
+		/// <param name="message">The message that describes the error.</param>
+		public TarException(string message) : base(message)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarHeader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarHeader.cs
@@ -1,1090 +1,1090 @@
-// TarHeader.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-
-/* The tar format and its POSIX successor PAX have a long history which makes for compatability
-   issues when creating and reading files.
-   
-   This is further complicated by a large number of programs with variations on formats
-   One common issue is the handling of names longer than 100 characters.
-   GNU style long names are currently supported.
-
-This is the ustar (Posix 1003.1) header.
-
-struct header 
-{
-	char t_name[100];          //   0 Filename
-	char t_mode[8];            // 100 Permissions
-	char t_uid[8];             // 108 Numerical User ID
-	char t_gid[8];             // 116 Numerical Group ID
-	char t_size[12];           // 124 Filesize
-	char t_mtime[12];          // 136 st_mtime
-	char t_chksum[8];          // 148 Checksum
-	char t_typeflag;           // 156 Type of File
-	char t_linkname[100];      // 157 Target of Links
-	char t_magic[6];           // 257 "ustar" or other...
-	char t_version[2];         // 263 Version fixed to 00
-	char t_uname[32];          // 265 User Name
-	char t_gname[32];          // 297 Group Name
-	char t_devmajor[8];        // 329 Major for devices
-	char t_devminor[8];        // 337 Minor for devices
-	char t_prefix[155];        // 345 Prefix for t_name
-	char t_mfill[12];          // 500 Filler up to 512
-};
-
-*/
-
-using System;
-using System.Text;
-
-namespace ICSharpCode.SharpZipLib.Tar 
-{
-	
-	
-	/// <summary>
-	/// This class encapsulates the Tar Entry Header used in Tar Archives.
-	/// The class also holds a number of tar constants, used mostly in headers.
-	/// </summary>
-	public class TarHeader : ICloneable
-	{
-		/// <summary>
-		/// The length of the name field in a header buffer.
-		/// </summary>
-		public readonly static int NAMELEN = 100;
-		
-		/// <summary>
-		/// The length of the mode field in a header buffer.
-		/// </summary>
-		public readonly static int MODELEN = 8;
-		
-		/// <summary>
-		/// The length of the user id field in a header buffer.
-		/// </summary>
-		public readonly static int UIDLEN = 8;
-		
-		/// <summary>
-		/// The length of the group id field in a header buffer.
-		/// </summary>
-		public readonly static int GIDLEN = 8;
-		
-		/// <summary>
-		/// The length of the checksum field in a header buffer.
-		/// </summary>
-		public readonly static int CHKSUMLEN = 8;
-
-		/// <summary>
-		/// Offset of checksum in a header buffer.
-		/// </summary>
-		public const int CHKSUMOFS = 148;
-		
-		/// <summary>
-		/// The length of the size field in a header buffer.
-		/// </summary>
-		public readonly static int SIZELEN = 12;
-		
-		/// <summary>
-		/// The length of the magic field in a header buffer.
-		/// </summary>
-		public readonly static int MAGICLEN = 6;
-		
-		/// <summary>
-		/// The length of the version field in a header buffer.
-		/// </summary>
-		public readonly static int VERSIONLEN = 2;
-
-		/// <summary>
-		/// The length of the modification time field in a header buffer.
-		/// </summary>
-		public readonly static int MODTIMELEN = 12;
-		
-		/// <summary>
-		/// The length of the user name field in a header buffer.
-		/// </summary>
-		public readonly static int UNAMELEN = 32;
-		
-		/// <summary>
-		/// The length of the group name field in a header buffer.
-		/// </summary>
-		public readonly static int GNAMELEN = 32;
-		
-		/// <summary>
-		/// The length of the devices field in a header buffer.
-		/// </summary>
-		public readonly static int DEVLEN = 8;
-		
-		//
-		// LF_ constants represent the "type" of an entry
-		//
-
-		/// <summary>
-		///  The "old way" of indicating a normal file.
-		/// </summary>
-		public const byte	LF_OLDNORM	= 0;
-		
-		/// <summary>
-		/// Normal file type.
-		/// </summary>
-		public const byte	LF_NORMAL	= (byte) '0';
-		
-		/// <summary>
-		/// Link file type.
-		/// </summary>
-		public const byte	LF_LINK		= (byte) '1';
-		
-		/// <summary>
-		/// Symbolic link file type.
-		/// </summary>
-		public const byte	LF_SYMLINK	= (byte) '2';
-		
-		/// <summary>
-		/// Character device file type.
-		/// </summary>
-		public const byte	LF_CHR		= (byte) '3';
-		
-		/// <summary>
-		/// Block device file type.
-		/// </summary>
-		public const byte	LF_BLK		= (byte) '4';
-		
-		/// <summary>
-		/// Directory file type.
-		/// </summary>
-		public const byte	LF_DIR		= (byte) '5';
-		
-		/// <summary>
-		/// FIFO (pipe) file type.
-		/// </summary>
-		public const byte	LF_FIFO		= (byte) '6';
-		
-		/// <summary>
-		/// Contiguous file type.
-		/// </summary>
-		public const byte	LF_CONTIG	= (byte) '7';
-		
-		/// <summary>
-		/// Posix.1 2001 global extended header
-		/// </summary>
-		public const byte   LF_GHDR    = (byte) 'g';
-		
-		/// <summary>
-		/// Posix.1 2001 extended header
-		/// </summary>
-		public readonly static byte   LF_XHDR    = (byte) 'x';
-		
-		
-		
-		
-		// POSIX allows for upper case ascii type as extensions
-		
-		/// <summary>
-		/// Solaris access control list file type
-		/// </summary>
-		public const byte   LF_ACL            = (byte) 'A';
-		
-		/// <summary>
-		/// GNU dir dump file type
-		/// This is a dir entry that contains the names of files that were in the
-		/// dir at the time the dump was made
-		/// </summary>
-		public const byte   LF_GNU_DUMPDIR    = (byte) 'D';
-		
-		/// <summary>
-		/// Solaris Extended Attribute File
-		/// </summary>
-		public const byte   LF_EXTATTR        = (byte) 'E' ;
-		
-		/// <summary>
-		/// Inode (metadata only) no file content
-		/// </summary>
-		public const byte   LF_META           = (byte) 'I';
-		
-		/// <summary>
-		/// Identifies the next file on the tape as having a long link name
-		/// </summary>
-		public const byte   LF_GNU_LONGLINK   = (byte) 'K';
-		
-		/// <summary>
-		/// Identifies the next file on the tape as having a long name
-		/// </summary>
-		public const byte   LF_GNU_LONGNAME   = (byte) 'L';
-		
-		/// <summary>
-		/// Continuation of a file that began on another volume
-		/// </summary>
-		public const byte   LF_GNU_MULTIVOL   = (byte) 'M';
-		
-		/// <summary>
-		/// For storing filenames that dont fit in the main header (old GNU)
-		/// </summary>
-		public const byte   LF_GNU_NAMES      = (byte) 'N';
-		
-		/// <summary>
-		/// GNU Sparse file
-		/// </summary>
-		public const byte   LF_GNU_SPARSE     = (byte) 'S';
-		
-		/// <summary>
-		/// GNU Tape/volume header ignore on extraction
-		/// </summary>
-		public const byte   LF_GNU_VOLHDR     = (byte) 'V';
-		
-		/// <summary>
-		/// The magic tag representing a POSIX tar archive.  (includes trailing NULL)
-		/// </summary>
-		public readonly static string	TMAGIC		= "ustar ";
-		
-		/// <summary>
-		/// The magic tag representing an old GNU tar archive where version is included in magic and overwrites it
-		/// </summary>
-		public readonly static string	GNU_TMAGIC	= "ustar  ";
-		
-
-		string name;
-
-		/// <summary>
-		/// Get/set the name for this tar entry.
-		/// </summary>
-		/// <exception cref="ArgumentNullException">Thrown when attempting to set the property to null.</exception>
-		public string Name
-		{
-			get { return name; }
-			set { 
-				if ( value == null ) {
-					throw new ArgumentNullException();
-				}
-				name = value;	
-			}
-		}
-		
-		int mode;
-		
-		/// <summary>
-		/// Get/set the entry's Unix style permission mode.
-		/// </summary>
-		public int Mode
-		{
-			get { return mode; }
-			set { mode = value; }
-		}
-		
-		int userId;
-		
-		/// <summary>
-		/// The entry's user id.
-		/// </summary>
-		/// <remarks>
-		/// This is only directly relevant to unix systems.
-		/// The default is zero.
-		/// </remarks>
-		public int UserId
-		{
-			get { return userId; }
-			set { userId = value; }
-		}
-		
-		int groupId;
-		
-		/// <summary>
-		/// Get/set the entry's group id.
-		/// </summary>
-		/// <remarks>
-		/// This is only directly relevant to linux/unix systems.
-		/// The default value is zero.
-		/// </remarks>
-		public int GroupId
-		{
-			get { return groupId; }
-			set { groupId = value; }
-		}
-		
-
-		long size;
-		
-		/// <summary>
-		/// Get/set the entry's size.
-		/// </summary>
-		/// <exception cref="ArgumentOutOfRangeException">Thrown when setting the size to less than zero.</exception>
-		public long Size
-		{
-			get { return size; }
-			set { 
-				if ( value < 0 ) {
-					throw new ArgumentOutOfRangeException();
-				}
-				size = value; 
-			}
-		}
-		
-		DateTime modTime;
-		
-		/// <summary>
-		/// Get/set the entry's modification time.
-		/// </summary>
-		/// <remarks>
-		/// The modification time is only accurate to within a second.
-		/// </remarks>
-		/// <exception cref="ArgumentOutOfRangeException">Thrown when setting the date time to less than 1/1/1970.</exception>
-		public DateTime ModTime
-		{
-			get { return modTime; }
-			set {
-				if ( value < dateTime1970 )
-				{
-					throw new ArgumentOutOfRangeException();
-				}
-				modTime = new DateTime(value.Year, value.Month, value.Day, value.Hour, value.Minute, value.Second);
-			}
-		}
-		
-		int checksum;
-		
-		/// <summary>
-		/// Get the entry's checksum.  This is only valid/updated after writing or reading an entry.
-		/// </summary>
-		public int Checksum
-		{
-			get { return checksum; }
-		}
-		
-		bool isChecksumValid;
-		
-		/// <summary>
-		/// Get value of true if the header checksum is valid, false otherwise.
-		/// </summary>
-		public bool IsChecksumValid
-		{
-			get { return isChecksumValid; }
-		}
-		
-		byte typeFlag;
-		
-		/// <summary>
-		/// Get/set the entry's type flag.
-		/// </summary>
-		public byte TypeFlag
-		{
-			get { return typeFlag; }
-			set { typeFlag = value; }
-		}
-
-		string linkName;
-		
-		/// <summary>
-		/// The entry's link name.
-		/// </summary>
-		/// <exception cref="ArgumentNullException">Thrown when attempting to set LinkName to null.</exception>
-		public string LinkName
-		{
-			get { return linkName; }
-			set {
-				if ( value == null ) {
-					throw new ArgumentNullException();
-				}
-				linkName = value; 
-			}
-		}
-		
-		string magic;
-		
-		/// <summary>
-		/// Get/set the entry's magic tag.
-		/// </summary>
-		/// <exception cref="ArgumentNullException">Thrown when attempting to set Magic to null.</exception>
-		public string Magic
-		{
-			get { return magic; }
-			set { 
-				if ( value == null ) {
-					throw new ArgumentNullException();
-				}
-				magic = value; 
-			}
-		}
-		
-		string version;
-		
-		/// <summary>
-		/// The entry's version.
-		/// </summary>
-		/// <exception cref="ArgumentNullException">Thrown when attempting to set Version to null.</exception>
-		public string Version
-		{
-			get { return version; }
-			set { 
-				if ( value == null ) {
-					throw new ArgumentNullException();
-				}
-				version = value; 
-			}
-		}
-		
-		string userName;
-		
-		/// <summary>
-		/// The entry's user name.
-		/// </summary>
-		/// <remarks>
-		/// See <see cref="ResetValueDefaults">ResetValueDefaults</see>
-		/// for detail on how this value is derived.
-		/// </remarks>
-		public string UserName
-		{
-			get { return userName; }
-			set {
-				if (value != null) {
-					userName = value.Substring(0, Math.Min(UNAMELEN, value.Length));
-				}
-				else {
-#if COMPACT_FRAMEWORK
-					string currentUser = "PocketPC";
-#else
-					string currentUser = Environment.UserName;
-#endif
-					if (currentUser.Length > UNAMELEN) {
-						currentUser = currentUser.Substring(0, UNAMELEN);
-					}
-					userName = currentUser;
-				}
-			}
-		}
-		
-		string groupName;
-		
-		/// <summary>
-		/// Get/set the entry's group name.
-		/// </summary>
-		/// <remarks>
-		/// This is only directly relevant to unix systems.
-		/// </remarks>
-		public string GroupName
-		{
-			get { return groupName; }
-			set { 
-				if ( value == null ) {
-					groupName = "None";
-				}
-				else {
-					groupName = value; 
-				}
-			}
-		}
-		
-		int devMajor;
-		
-		/// <summary>
-		/// Get/set the entry's major device number.
-		/// </summary>
-		public int DevMajor
-		{
-			get { return devMajor; }
-			set { devMajor = value; }
-		}
-		
-		int devMinor;
-		
-		/// <summary>
-		/// Get/set the entry's minor device number.
-		/// </summary>
-		public int DevMinor
-		{
-			get { return devMinor; }
-			set { devMinor = value; }
-		}
-		
-		/// <summary>
-		/// Initialise a default TarHeader instance
-		/// </summary>
-		public TarHeader()
-		{
-			this.Magic = TarHeader.TMAGIC;
-			this.Version = " ";
-			
-			this.Name     = "";
-			this.LinkName = "";
-			
-			this.UserId    = defaultUserId;
-			this.GroupId   = defaultGroupId;
-			this.UserName  = defaultUser;
-			this.GroupName = defaultGroupName;
-			this.Size      = 0;
-		}
-		
-		// Values used during recursive operations.
-		static internal int userIdAsSet = 0;
-		static internal int groupIdAsSet = 0;
-		static internal string userNameAsSet = null;
-		static internal string groupNameAsSet = "None";
-		
-		static internal int defaultUserId = 0;
-		static internal int defaultGroupId = 0;
-		static internal string defaultGroupName = "None";
-		static internal string defaultUser = null;
-
-		static internal void RestoreSetValues()
-		{
-			defaultUserId = userIdAsSet;
-			defaultUser = userNameAsSet;
-			defaultGroupId = groupIdAsSet;
-			defaultGroupName = groupNameAsSet;
-		}
-
-		/// <summary>
-		/// Set defaults for values used when constructing a TarHeader instance.
-		/// </summary>
-		/// <param name="userId">Value to apply as a default for userId.</param>
-		/// <param name="userName">Value to apply as a default for userName.</param>
-		/// <param name="groupId">Value to apply as a default for groupId.</param>
-		/// <param name="groupName">Value to apply as a default for groupName.</param>
-		static public void SetValueDefaults(int userId, string userName, int groupId, string groupName)
-		{
-			defaultUserId = userIdAsSet = userId;
-			defaultUser = userNameAsSet = userName;
-			defaultGroupId = groupIdAsSet = groupId;
-			defaultGroupName = groupNameAsSet = groupName;
-		}
-		
-		static internal void SetActiveDefaults(int userId, string userName, int groupId, string groupName)
-		{
-			defaultUserId = userId;
-			defaultUser = userName;
-			defaultGroupId = groupId;
-			defaultGroupName = groupName;
-		}
-		
-		/// <summary>
-		/// Reset value defaults to initial values.
-		/// </summary>
-		/// <remarks>
-		/// The default values are user id=0, group id=0, groupname="None", user name=null.
-		/// When the default user name is null the value from Environment.UserName is used. Or "PocketPC" for the Compact framework.
-		/// When the default group name is null the value "None" is used.
-		/// </remarks>
-		static public void ResetValueDefaults()
-		{
-			defaultUserId = 0;
-			defaultGroupId = 0;
-			defaultGroupName = "None";
-			defaultUser = null;
-		}
-		
-		/// <summary>
-		/// Clone a TAR header.
-		/// </summary>
-		public object Clone()
-		{
-			TarHeader hdr = new TarHeader();
-			
-			hdr.Name      = Name;
-			hdr.Mode      = this.Mode;
-			hdr.UserId    = this.UserId;
-			hdr.GroupId   = this.GroupId;
-			hdr.Size      = this.Size;
-			hdr.ModTime   = this.ModTime;
-			hdr.TypeFlag  = this.TypeFlag;
-			hdr.LinkName  = this.LinkName;
-			hdr.Magic     = this.Magic;
-			hdr.Version   = this.Version;
-			hdr.UserName  = this.UserName;
-			hdr.GroupName = this.GroupName;
-			hdr.DevMajor  = this.DevMajor;
-			hdr.DevMinor  = this.DevMinor;
-			
-			return hdr;
-		}
-		/// <summary>
-		/// Get a hash code for the current object.
-		/// </summary>
-		/// <returns>A hash code for the current object.</returns>
-		public override int GetHashCode()
-		{
-			return Name.GetHashCode();
-		}
-		
-		/// <summary>
-		/// Determines if this instance is equal to the specified object.
-		/// </summary>
-		/// <param name="obj">The object to compare with.</param>
-		/// <returns>true if the objects are equal, false otherwise.</returns>
-		public override bool Equals(object obj)
-		{
-			if ( obj is TarHeader ) {
-				TarHeader th = obj as TarHeader;
-				return name == th.name
-					&& mode == th.mode
-					&& UserId == th.UserId
-					&& GroupId == th.GroupId
-					&& Size == th.Size
-					&& ModTime == th.ModTime
-					&& Checksum == th.Checksum
-					&& TypeFlag == th.TypeFlag
-					&& LinkName == th.LinkName
-					&& Magic == th.Magic
-					&& Version == th.Version
-					&& UserName == th.UserName
-					&& GroupName == th.GroupName
-					&& DevMajor == th.DevMajor
-					&& DevMinor == th.DevMinor;
-			}
-			else {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Get the name of this entry.
-		/// </summary>
-		/// <returns>The entry's name.</returns>
-		/// <remarks>
-		/// This is obsolete use the Name property instead.
-		/// </remarks>
-		[Obsolete]
-		public string GetName()
-		{
-			return this.name.ToString();
-		}
-		
-		/// <summary>
-		/// Parse an octal string from a header buffer.
-		/// </summary>
-		/// <param name = "header">The header buffer from which to parse.</param>
-		/// <param name = "offset">The offset into the buffer from which to parse.</param>
-		/// <param name = "length">The number of header bytes to parse.</param>
-		/// <returns>The long equivalent of the octal string.</returns>
-		public static long ParseOctal(byte[] header, int offset, int length)
-		{
-			long result = 0;
-			bool stillPadding = true;
-			
-			int end = offset + length;
-			for (int i = offset; i < end ; ++i) {
-				if (header[i] == 0) {
-					break;
-				}
-				
-				if (header[i] == (byte)' ' || header[i] == '0') {
-					if (stillPadding) {
-						continue;
-					}
-					
-					if (header[i] == (byte)' ') {
-						break;
-					}
-				}
-				
-				stillPadding = false;
-				
-				result = (result << 3) + (header[i] - '0');
-			}
-			
-			return result;
-		}
-		
-		/// <summary>
-		/// Parse a name from a header buffer.
-		/// </summary>
-		/// <param name="header">
-		/// The header buffer from which to parse.
-		/// </param>
-		/// <param name="offset">
-		/// The offset into the buffer from which to parse.
-		/// </param>
-		/// <param name="length">
-		/// The number of header bytes to parse.
-		/// </param>
-		/// <returns>
-		/// The name parsed.
-		/// </returns>
-		public static StringBuilder ParseName(byte[] header, int offset, int length)
-		{
-			StringBuilder result = new StringBuilder(length);
-			
-			for (int i = offset; i < offset + length; ++i) {
-				if (header[i] == 0) {
-					break;
-				}
-				result.Append((char)header[i]);
-			}
-			
-			return result;
-		}
-		
-		/// <summary>
-		/// Add <paramref name="name">name</paramref> to the buffer as a collection of bytes
-		/// </summary>
-		/// <param name="name">The name to add</param>
-		/// <param name="nameOffset">The offset of the first character</param>
-		/// <param name="buf">The buffer to add to</param>
-		/// <param name="bufferOffset">The index of the first byte to add</param>
-		/// <param name="length">The number of characters/bytes to add</param>
-		/// <returns>The next free index in the <paramref name="buf">buffer</paramref></returns>
-		public static int GetNameBytes(StringBuilder name, int nameOffset, byte[] buf, int bufferOffset, int length)
-		{
-			return GetNameBytes(name.ToString(), nameOffset, buf, bufferOffset, length);
-		}
-		
-		/// <summary>
-		/// Add <paramref name="name">name</paramref> to the buffer as a collection of bytes
-		/// </summary>
-		/// <param name="name">The name to add</param>
-		/// <param name="nameOffset">The offset of the first character</param>
-		/// <param name="buf">The buffer to add to</param>
-		/// <param name="bufferOffset">The index of the first byte to add</param>
-		/// <param name="length">The number of characters/bytes to add</param>
-		/// <returns>The next free index in the <paramref name="buf">buffer</paramref></returns>
-		public static int GetNameBytes(string name, int nameOffset, byte[] buf, int bufferOffset, int length)
-		{
-			int i;
-			
-			for (i = 0 ; i < length - 1 && nameOffset + i < name.Length; ++i) {
-				buf[bufferOffset + i] = (byte)name[nameOffset + i];
-			}
-			
-			for (; i < length ; ++i) {
-				buf[bufferOffset + i] = 0;
-			}
-			
-			return bufferOffset + length;
-		}
-
-		/// <summary>
-		/// Add an entry name to the buffer
-		/// </summary>
-		/// <param name="name">
-		/// The name to add
-		/// </param>
-		/// <param name="buf">
-		/// The buffer to add to
-		/// </param>
-		/// <param name="offset">
-		/// The offset into the buffer from which to start adding
-		/// </param>
-		/// <param name="length">
-		/// The number of header bytes to add
-		/// </param>
-		/// <returns>
-		/// The index of the next free byte in the buffer
-		/// </returns>
-		public static int GetNameBytes(StringBuilder name, byte[] buf, int offset, int length)
-		{
-			return GetNameBytes(name.ToString(), 0, buf, offset, length);
-		}
-		
-		/// <summary>
-		/// Add an entry name to the buffer
-		/// </summary>
-		/// <param name="name">The name to add</param>
-		/// <param name="buf">The buffer to add to</param>
-		/// <param name="offset">The offset into the buffer from which to start adding</param>
-		/// <param name="length">The number of header bytes to add</param>
-		/// <returns>The index of the next free byte in the buffer</returns>
-		public static int GetNameBytes(string name, byte[] buf, int offset, int length)
-		{
-			return GetNameBytes(name, 0, buf, offset, length);
-		}
-		
-		/// <summary>
-		/// Add a string to a buffer as a collection of ascii bytes.
-		/// </summary>
-		/// <param name="toAdd">The string to add</param>
-		/// <param name="nameOffset">The offset of the first character to add.</param>
-		/// <param name="buffer">The buffer to add to.</param>
-		/// <param name="bufferOffset">The offset to start adding at.</param>
-		/// <param name="length">The number of ascii characters to add.</param>
-		/// <returns>The next free index in the buffer.</returns>
-		public static int GetAsciiBytes(string toAdd, int nameOffset, byte[] buffer, int bufferOffset, int length )
-		{
-			for (int i = 0 ; i < length && nameOffset + i < toAdd.Length; ++i) 
-		 	{
-				buffer[bufferOffset + i] = (byte)toAdd[nameOffset + i];
-		 	}
-		 	return bufferOffset + length;
-		}
-
-		/// <summary>
-		/// Put an octal representation of a value into a buffer
-		/// </summary>
-		/// <param name = "val">
-		/// the value to be converted to octal
-		/// </param>
-		/// <param name = "buf">
-		/// buffer to store the octal string
-		/// </param>
-		/// <param name = "offset">
-		/// The offset into the buffer where the value starts
-		/// </param>
-		/// <param name = "length">
-		/// The length of the octal string to create
-		/// </param>
-		/// <returns>
-		/// The offset of the character next byte after the octal string
-		/// </returns>
-		public static int GetOctalBytes(long val, byte[] buf, int offset, int length)
-		{
-			int idx = length - 1;
-
-			// Either a space or null is valid here.  We use NULL as per GNUTar
-			buf[offset + idx] = 0;
-			--idx;
-
-			if (val > 0) {
-				for (long v = val; idx >= 0 && v > 0; --idx) {
-					buf[offset + idx] = (byte)((byte)'0' + (byte)(v & 7));
-					v >>= 3;
-				}
-			}
-				
-			for (; idx >= 0; --idx) {
-				buf[offset + idx] = (byte)'0';
-			}
-			
-			return offset + length;
-		}
-		
-		/// <summary>
-		/// Put an octal representation of a value into a buffer
-		/// </summary>
-		/// <param name = "val">Value to be convert to octal</param>
-		/// <param name = "buf">The buffer to update</param>
-		/// <param name = "offset">The offset into the buffer to store the value</param>
-		/// <param name = "length">The length of the octal string</param>
-		/// <returns>Index of next byte</returns>
-		public static int GetLongOctalBytes(long val, byte[] buf, int offset, int length)
-		{
-			return GetOctalBytes(val, buf, offset, length);
-		}
-		
-		/// <summary>
-		/// Add the checksum integer to header buffer.
-		/// </summary>
-		/// <param name = "val"></param>
-		/// <param name = "buf">The header buffer to set the checksum for</param>
-		/// <param name = "offset">The offset into the buffer for the checksum</param>
-		/// <param name = "length">The number of header bytes to update.
-		/// It's formatted differently from the other fields: it has 6 digits, a
-		/// null, then a space -- rather than digits, a space, then a null.
-		/// The final space is already there, from checksumming
-		/// </param>
-		/// <returns>The modified buffer offset</returns>
-		private static int GetCheckSumOctalBytes(long val, byte[] buf, int offset, int length)
-		{
-			TarHeader.GetOctalBytes(val, buf, offset, length - 1);
-			return offset + length;
-		}
-		
-		/// <summary>
-		/// Compute the checksum for a tar entry header.  
-		/// The checksum field must be all spaces prior to this happening
-		/// </summary>
-		/// <param name = "buf">The tar entry's header buffer.</param>
-		/// <returns>The computed checksum.</returns>
-		private static int ComputeCheckSum(byte[] buf)
-		{
-			int sum = 0;
-			for (int i = 0; i < buf.Length; ++i) {
-				sum += buf[i];
-			}
-			return sum;
-		}
-		
-		/// <summary>
-		/// Make a checksum for a tar entry ignoring the checksum contents.
-		/// </summary>
-		/// <param name = "buf">The tar entry's header buffer.</param>
-		/// <returns>The checksum for the buffer</returns>
-		private static int MakeCheckSum(byte[] buf)
-		{
-			int sum = 0;
-			for ( int i = 0; i < CHKSUMOFS; ++i )
-			{
-				sum += buf[i];
-			}
-		
-			for ( int i = 0; i < TarHeader.CHKSUMLEN; ++i)
-			{
-				sum += (byte)' ';
-			}
-		
-			for (int i = CHKSUMOFS + CHKSUMLEN; i < buf.Length; ++i) 
-			{
-				sum += buf[i];
-			}
-			return sum;
-		}
-		
-
-		readonly static long     timeConversionFactor = 10000000L;           // 1 tick == 100 nanoseconds
-		readonly static DateTime dateTime1970        = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
-		
-		static int GetCTime(System.DateTime dateTime)
-		{
-			return (int)((dateTime.Ticks - dateTime1970.Ticks) / timeConversionFactor);
-		}
-		
-		static DateTime GetDateTimeFromCTime(long ticks)
-		{
-			DateTime result;
-			
-			try {
-				result = new DateTime(dateTime1970.Ticks + ticks * timeConversionFactor);
-			}
-			catch {
-				result = dateTime1970;
-			}
-			return result;
-		}
-
-		/// <summary>
-		/// Parse TarHeader information from a header buffer.
-		/// </summary>
-		/// <param name = "header">
-		/// The tar entry header buffer to get information from.
-		/// </param>
-		public void ParseBuffer(byte[] header)
-		{
-			int offset = 0;
-			
-			name = TarHeader.ParseName(header, offset, TarHeader.NAMELEN).ToString();
-			offset += TarHeader.NAMELEN;
-			
-			mode = (int)TarHeader.ParseOctal(header, offset, TarHeader.MODELEN);
-			offset += TarHeader.MODELEN;
-			
-			UserId = (int)TarHeader.ParseOctal(header, offset, TarHeader.UIDLEN);
-			offset += TarHeader.UIDLEN;
-			
-			GroupId = (int)TarHeader.ParseOctal(header, offset, TarHeader.GIDLEN);
-			offset += TarHeader.GIDLEN;
-			
-			Size = TarHeader.ParseOctal(header, offset, TarHeader.SIZELEN);
-			offset += TarHeader.SIZELEN;
-			
-			ModTime = GetDateTimeFromCTime(TarHeader.ParseOctal(header, offset, TarHeader.MODTIMELEN));
-			offset += TarHeader.MODTIMELEN;
-			
-			checksum = (int)TarHeader.ParseOctal(header, offset, TarHeader.CHKSUMLEN);
-			offset += TarHeader.CHKSUMLEN;
-			
-			TypeFlag = header[ offset++ ];
-
-			LinkName = TarHeader.ParseName(header, offset, TarHeader.NAMELEN).ToString();
-			offset += TarHeader.NAMELEN;
-			
-			Magic = TarHeader.ParseName(header, offset, TarHeader.MAGICLEN).ToString();
-			offset += TarHeader.MAGICLEN;
-			
-			Version = TarHeader.ParseName(header, offset, TarHeader.VERSIONLEN).ToString();
-			offset += TarHeader.VERSIONLEN;
-			
-			UserName = TarHeader.ParseName(header, offset, TarHeader.UNAMELEN).ToString();
-			offset += TarHeader.UNAMELEN;
-			
-			GroupName = TarHeader.ParseName(header, offset, TarHeader.GNAMELEN).ToString();
-			offset += TarHeader.GNAMELEN;
-			
-			DevMajor = (int)TarHeader.ParseOctal(header, offset, TarHeader.DEVLEN);
-			offset += TarHeader.DEVLEN;
-			
-			DevMinor = (int)TarHeader.ParseOctal(header, offset, TarHeader.DEVLEN);
-			
-			// Fields past this point not currently parsed or used...
-			
-			// TODO: prefix information.
-			
-			isChecksumValid = Checksum == TarHeader.MakeCheckSum(header);
-		}
-
-		/// <summary>
-		/// 'Write' header information to buffer provided, updating the <see cref="Checksum">check sum</see>.
-		/// </summary>
-		/// <param name="outbuf">output buffer for header information</param>
-		public void WriteHeader(byte[] outbuf)
-		{
-			int offset = 0;
-			
-			offset = GetNameBytes(this.Name, outbuf, offset, TarHeader.NAMELEN);
-			offset = GetOctalBytes(this.mode, outbuf, offset, TarHeader.MODELEN);
-			offset = GetOctalBytes(this.UserId, outbuf, offset, TarHeader.UIDLEN);
-			offset = GetOctalBytes(this.GroupId, outbuf, offset, TarHeader.GIDLEN);
-			
-			long size = this.Size;
-			
-			offset = GetLongOctalBytes(size, outbuf, offset, TarHeader.SIZELEN);
-			offset = GetLongOctalBytes(GetCTime(this.ModTime), outbuf, offset, TarHeader.MODTIMELEN);
-			
-			int csOffset = offset;
-			for (int c = 0; c < TarHeader.CHKSUMLEN; ++c) {
-				outbuf[offset++] = (byte)' ';
-			}
-			
-			outbuf[offset++] = this.TypeFlag;
-			
-			offset = GetNameBytes(this.LinkName, outbuf, offset, NAMELEN);
-			offset = GetAsciiBytes(this.Magic, 0, outbuf, offset, MAGICLEN);
-			offset = GetNameBytes(this.Version, outbuf, offset, VERSIONLEN);
-			offset = GetNameBytes(this.UserName, outbuf, offset, UNAMELEN);
-			offset = GetNameBytes(this.GroupName, outbuf, offset, GNAMELEN);
-			
-			if (this.TypeFlag == LF_CHR || this.TypeFlag == LF_BLK) {
-				offset = GetOctalBytes(this.DevMajor, outbuf, offset, DEVLEN);
-				offset = GetOctalBytes(this.DevMinor, outbuf, offset, DEVLEN);
-			}
-			
-			for ( ; offset < outbuf.Length; ) {
-				outbuf[offset++] = 0;
-			}
-			
-			checksum = ComputeCheckSum(outbuf);
-			
-			GetCheckSumOctalBytes(checksum, outbuf, csOffset, CHKSUMLEN);
-			isChecksumValid = true;
-		}
-	}
-}
-
-/* The original Java file had this header:
- * 
-** Authored by Timothy Gerard Endres
-** <mailto:time@gjt.org>  <http://www.trustice.com>
-** 
-** This work has been placed into the public domain.
-** You may use this work in any way and for any purpose you wish.
-**
-** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
-** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
-** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
-** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
-** REDISTRIBUTION OF THIS SOFTWARE. 
-** 
-*/
+// TarHeader.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+
+/* The tar format and its POSIX successor PAX have a long history which makes for compatability
+   issues when creating and reading files.
+   
+   This is further complicated by a large number of programs with variations on formats
+   One common issue is the handling of names longer than 100 characters.
+   GNU style long names are currently supported.
+
+This is the ustar (Posix 1003.1) header.
+
+struct header 
+{
+	char t_name[100];          //   0 Filename
+	char t_mode[8];            // 100 Permissions
+	char t_uid[8];             // 108 Numerical User ID
+	char t_gid[8];             // 116 Numerical Group ID
+	char t_size[12];           // 124 Filesize
+	char t_mtime[12];          // 136 st_mtime
+	char t_chksum[8];          // 148 Checksum
+	char t_typeflag;           // 156 Type of File
+	char t_linkname[100];      // 157 Target of Links
+	char t_magic[6];           // 257 "ustar" or other...
+	char t_version[2];         // 263 Version fixed to 00
+	char t_uname[32];          // 265 User Name
+	char t_gname[32];          // 297 Group Name
+	char t_devmajor[8];        // 329 Major for devices
+	char t_devminor[8];        // 337 Minor for devices
+	char t_prefix[155];        // 345 Prefix for t_name
+	char t_mfill[12];          // 500 Filler up to 512
+};
+
+*/
+
+using System;
+using System.Text;
+
+namespace ICSharpCode.SharpZipLib.Tar 
+{
+	
+	
+	/// <summary>
+	/// This class encapsulates the Tar Entry Header used in Tar Archives.
+	/// The class also holds a number of tar constants, used mostly in headers.
+	/// </summary>
+	public class TarHeader : ICloneable
+	{
+		/// <summary>
+		/// The length of the name field in a header buffer.
+		/// </summary>
+		public readonly static int NAMELEN = 100;
+		
+		/// <summary>
+		/// The length of the mode field in a header buffer.
+		/// </summary>
+		public readonly static int MODELEN = 8;
+		
+		/// <summary>
+		/// The length of the user id field in a header buffer.
+		/// </summary>
+		public readonly static int UIDLEN = 8;
+		
+		/// <summary>
+		/// The length of the group id field in a header buffer.
+		/// </summary>
+		public readonly static int GIDLEN = 8;
+		
+		/// <summary>
+		/// The length of the checksum field in a header buffer.
+		/// </summary>
+		public readonly static int CHKSUMLEN = 8;
+
+		/// <summary>
+		/// Offset of checksum in a header buffer.
+		/// </summary>
+		public const int CHKSUMOFS = 148;
+		
+		/// <summary>
+		/// The length of the size field in a header buffer.
+		/// </summary>
+		public readonly static int SIZELEN = 12;
+		
+		/// <summary>
+		/// The length of the magic field in a header buffer.
+		/// </summary>
+		public readonly static int MAGICLEN = 6;
+		
+		/// <summary>
+		/// The length of the version field in a header buffer.
+		/// </summary>
+		public readonly static int VERSIONLEN = 2;
+
+		/// <summary>
+		/// The length of the modification time field in a header buffer.
+		/// </summary>
+		public readonly static int MODTIMELEN = 12;
+		
+		/// <summary>
+		/// The length of the user name field in a header buffer.
+		/// </summary>
+		public readonly static int UNAMELEN = 32;
+		
+		/// <summary>
+		/// The length of the group name field in a header buffer.
+		/// </summary>
+		public readonly static int GNAMELEN = 32;
+		
+		/// <summary>
+		/// The length of the devices field in a header buffer.
+		/// </summary>
+		public readonly static int DEVLEN = 8;
+		
+		//
+		// LF_ constants represent the "type" of an entry
+		//
+
+		/// <summary>
+		///  The "old way" of indicating a normal file.
+		/// </summary>
+		public const byte	LF_OLDNORM	= 0;
+		
+		/// <summary>
+		/// Normal file type.
+		/// </summary>
+		public const byte	LF_NORMAL	= (byte) '0';
+		
+		/// <summary>
+		/// Link file type.
+		/// </summary>
+		public const byte	LF_LINK		= (byte) '1';
+		
+		/// <summary>
+		/// Symbolic link file type.
+		/// </summary>
+		public const byte	LF_SYMLINK	= (byte) '2';
+		
+		/// <summary>
+		/// Character device file type.
+		/// </summary>
+		public const byte	LF_CHR		= (byte) '3';
+		
+		/// <summary>
+		/// Block device file type.
+		/// </summary>
+		public const byte	LF_BLK		= (byte) '4';
+		
+		/// <summary>
+		/// Directory file type.
+		/// </summary>
+		public const byte	LF_DIR		= (byte) '5';
+		
+		/// <summary>
+		/// FIFO (pipe) file type.
+		/// </summary>
+		public const byte	LF_FIFO		= (byte) '6';
+		
+		/// <summary>
+		/// Contiguous file type.
+		/// </summary>
+		public const byte	LF_CONTIG	= (byte) '7';
+		
+		/// <summary>
+		/// Posix.1 2001 global extended header
+		/// </summary>
+		public const byte   LF_GHDR    = (byte) 'g';
+		
+		/// <summary>
+		/// Posix.1 2001 extended header
+		/// </summary>
+		public readonly static byte   LF_XHDR    = (byte) 'x';
+		
+		
+		
+		
+		// POSIX allows for upper case ascii type as extensions
+		
+		/// <summary>
+		/// Solaris access control list file type
+		/// </summary>
+		public const byte   LF_ACL            = (byte) 'A';
+		
+		/// <summary>
+		/// GNU dir dump file type
+		/// This is a dir entry that contains the names of files that were in the
+		/// dir at the time the dump was made
+		/// </summary>
+		public const byte   LF_GNU_DUMPDIR    = (byte) 'D';
+		
+		/// <summary>
+		/// Solaris Extended Attribute File
+		/// </summary>
+		public const byte   LF_EXTATTR        = (byte) 'E' ;
+		
+		/// <summary>
+		/// Inode (metadata only) no file content
+		/// </summary>
+		public const byte   LF_META           = (byte) 'I';
+		
+		/// <summary>
+		/// Identifies the next file on the tape as having a long link name
+		/// </summary>
+		public const byte   LF_GNU_LONGLINK   = (byte) 'K';
+		
+		/// <summary>
+		/// Identifies the next file on the tape as having a long name
+		/// </summary>
+		public const byte   LF_GNU_LONGNAME   = (byte) 'L';
+		
+		/// <summary>
+		/// Continuation of a file that began on another volume
+		/// </summary>
+		public const byte   LF_GNU_MULTIVOL   = (byte) 'M';
+		
+		/// <summary>
+		/// For storing filenames that dont fit in the main header (old GNU)
+		/// </summary>
+		public const byte   LF_GNU_NAMES      = (byte) 'N';
+		
+		/// <summary>
+		/// GNU Sparse file
+		/// </summary>
+		public const byte   LF_GNU_SPARSE     = (byte) 'S';
+		
+		/// <summary>
+		/// GNU Tape/volume header ignore on extraction
+		/// </summary>
+		public const byte   LF_GNU_VOLHDR     = (byte) 'V';
+		
+		/// <summary>
+		/// The magic tag representing a POSIX tar archive.  (includes trailing NULL)
+		/// </summary>
+		public readonly static string	TMAGIC		= "ustar ";
+		
+		/// <summary>
+		/// The magic tag representing an old GNU tar archive where version is included in magic and overwrites it
+		/// </summary>
+		public readonly static string	GNU_TMAGIC	= "ustar  ";
+		
+
+		string name;
+
+		/// <summary>
+		/// Get/set the name for this tar entry.
+		/// </summary>
+		/// <exception cref="ArgumentNullException">Thrown when attempting to set the property to null.</exception>
+		public string Name
+		{
+			get { return name; }
+			set { 
+				if ( value == null ) {
+					throw new ArgumentNullException();
+				}
+				name = value;	
+			}
+		}
+		
+		int mode;
+		
+		/// <summary>
+		/// Get/set the entry's Unix style permission mode.
+		/// </summary>
+		public int Mode
+		{
+			get { return mode; }
+			set { mode = value; }
+		}
+		
+		int userId;
+		
+		/// <summary>
+		/// The entry's user id.
+		/// </summary>
+		/// <remarks>
+		/// This is only directly relevant to unix systems.
+		/// The default is zero.
+		/// </remarks>
+		public int UserId
+		{
+			get { return userId; }
+			set { userId = value; }
+		}
+		
+		int groupId;
+		
+		/// <summary>
+		/// Get/set the entry's group id.
+		/// </summary>
+		/// <remarks>
+		/// This is only directly relevant to linux/unix systems.
+		/// The default value is zero.
+		/// </remarks>
+		public int GroupId
+		{
+			get { return groupId; }
+			set { groupId = value; }
+		}
+		
+
+		long size;
+		
+		/// <summary>
+		/// Get/set the entry's size.
+		/// </summary>
+		/// <exception cref="ArgumentOutOfRangeException">Thrown when setting the size to less than zero.</exception>
+		public long Size
+		{
+			get { return size; }
+			set { 
+				if ( value < 0 ) {
+					throw new ArgumentOutOfRangeException();
+				}
+				size = value; 
+			}
+		}
+		
+		DateTime modTime;
+		
+		/// <summary>
+		/// Get/set the entry's modification time.
+		/// </summary>
+		/// <remarks>
+		/// The modification time is only accurate to within a second.
+		/// </remarks>
+		/// <exception cref="ArgumentOutOfRangeException">Thrown when setting the date time to less than 1/1/1970.</exception>
+		public DateTime ModTime
+		{
+			get { return modTime; }
+			set {
+				if ( value < dateTime1970 )
+				{
+					throw new ArgumentOutOfRangeException();
+				}
+				modTime = new DateTime(value.Year, value.Month, value.Day, value.Hour, value.Minute, value.Second);
+			}
+		}
+		
+		int checksum;
+		
+		/// <summary>
+		/// Get the entry's checksum.  This is only valid/updated after writing or reading an entry.
+		/// </summary>
+		public int Checksum
+		{
+			get { return checksum; }
+		}
+		
+		bool isChecksumValid;
+		
+		/// <summary>
+		/// Get value of true if the header checksum is valid, false otherwise.
+		/// </summary>
+		public bool IsChecksumValid
+		{
+			get { return isChecksumValid; }
+		}
+		
+		byte typeFlag;
+		
+		/// <summary>
+		/// Get/set the entry's type flag.
+		/// </summary>
+		public byte TypeFlag
+		{
+			get { return typeFlag; }
+			set { typeFlag = value; }
+		}
+
+		string linkName;
+		
+		/// <summary>
+		/// The entry's link name.
+		/// </summary>
+		/// <exception cref="ArgumentNullException">Thrown when attempting to set LinkName to null.</exception>
+		public string LinkName
+		{
+			get { return linkName; }
+			set {
+				if ( value == null ) {
+					throw new ArgumentNullException();
+				}
+				linkName = value; 
+			}
+		}
+		
+		string magic;
+		
+		/// <summary>
+		/// Get/set the entry's magic tag.
+		/// </summary>
+		/// <exception cref="ArgumentNullException">Thrown when attempting to set Magic to null.</exception>
+		public string Magic
+		{
+			get { return magic; }
+			set { 
+				if ( value == null ) {
+					throw new ArgumentNullException();
+				}
+				magic = value; 
+			}
+		}
+		
+		string version;
+		
+		/// <summary>
+		/// The entry's version.
+		/// </summary>
+		/// <exception cref="ArgumentNullException">Thrown when attempting to set Version to null.</exception>
+		public string Version
+		{
+			get { return version; }
+			set { 
+				if ( value == null ) {
+					throw new ArgumentNullException();
+				}
+				version = value; 
+			}
+		}
+		
+		string userName;
+		
+		/// <summary>
+		/// The entry's user name.
+		/// </summary>
+		/// <remarks>
+		/// See <see cref="ResetValueDefaults">ResetValueDefaults</see>
+		/// for detail on how this value is derived.
+		/// </remarks>
+		public string UserName
+		{
+			get { return userName; }
+			set {
+				if (value != null) {
+					userName = value.Substring(0, Math.Min(UNAMELEN, value.Length));
+				}
+				else {
+#if COMPACT_FRAMEWORK
+					string currentUser = "PocketPC";
+#else
+					string currentUser = Environment.UserName;
+#endif
+					if (currentUser.Length > UNAMELEN) {
+						currentUser = currentUser.Substring(0, UNAMELEN);
+					}
+					userName = currentUser;
+				}
+			}
+		}
+		
+		string groupName;
+		
+		/// <summary>
+		/// Get/set the entry's group name.
+		/// </summary>
+		/// <remarks>
+		/// This is only directly relevant to unix systems.
+		/// </remarks>
+		public string GroupName
+		{
+			get { return groupName; }
+			set { 
+				if ( value == null ) {
+					groupName = "None";
+				}
+				else {
+					groupName = value; 
+				}
+			}
+		}
+		
+		int devMajor;
+		
+		/// <summary>
+		/// Get/set the entry's major device number.
+		/// </summary>
+		public int DevMajor
+		{
+			get { return devMajor; }
+			set { devMajor = value; }
+		}
+		
+		int devMinor;
+		
+		/// <summary>
+		/// Get/set the entry's minor device number.
+		/// </summary>
+		public int DevMinor
+		{
+			get { return devMinor; }
+			set { devMinor = value; }
+		}
+		
+		/// <summary>
+		/// Initialise a default TarHeader instance
+		/// </summary>
+		public TarHeader()
+		{
+			this.Magic = TarHeader.TMAGIC;
+			this.Version = " ";
+			
+			this.Name     = "";
+			this.LinkName = "";
+			
+			this.UserId    = defaultUserId;
+			this.GroupId   = defaultGroupId;
+			this.UserName  = defaultUser;
+			this.GroupName = defaultGroupName;
+			this.Size      = 0;
+		}
+		
+		// Values used during recursive operations.
+		static internal int userIdAsSet = 0;
+		static internal int groupIdAsSet = 0;
+		static internal string userNameAsSet = null;
+		static internal string groupNameAsSet = "None";
+		
+		static internal int defaultUserId = 0;
+		static internal int defaultGroupId = 0;
+		static internal string defaultGroupName = "None";
+		static internal string defaultUser = null;
+
+		static internal void RestoreSetValues()
+		{
+			defaultUserId = userIdAsSet;
+			defaultUser = userNameAsSet;
+			defaultGroupId = groupIdAsSet;
+			defaultGroupName = groupNameAsSet;
+		}
+
+		/// <summary>
+		/// Set defaults for values used when constructing a TarHeader instance.
+		/// </summary>
+		/// <param name="userId">Value to apply as a default for userId.</param>
+		/// <param name="userName">Value to apply as a default for userName.</param>
+		/// <param name="groupId">Value to apply as a default for groupId.</param>
+		/// <param name="groupName">Value to apply as a default for groupName.</param>
+		static public void SetValueDefaults(int userId, string userName, int groupId, string groupName)
+		{
+			defaultUserId = userIdAsSet = userId;
+			defaultUser = userNameAsSet = userName;
+			defaultGroupId = groupIdAsSet = groupId;
+			defaultGroupName = groupNameAsSet = groupName;
+		}
+		
+		static internal void SetActiveDefaults(int userId, string userName, int groupId, string groupName)
+		{
+			defaultUserId = userId;
+			defaultUser = userName;
+			defaultGroupId = groupId;
+			defaultGroupName = groupName;
+		}
+		
+		/// <summary>
+		/// Reset value defaults to initial values.
+		/// </summary>
+		/// <remarks>
+		/// The default values are user id=0, group id=0, groupname="None", user name=null.
+		/// When the default user name is null the value from Environment.UserName is used. Or "PocketPC" for the Compact framework.
+		/// When the default group name is null the value "None" is used.
+		/// </remarks>
+		static public void ResetValueDefaults()
+		{
+			defaultUserId = 0;
+			defaultGroupId = 0;
+			defaultGroupName = "None";
+			defaultUser = null;
+		}
+		
+		/// <summary>
+		/// Clone a TAR header.
+		/// </summary>
+		public object Clone()
+		{
+			TarHeader hdr = new TarHeader();
+			
+			hdr.Name      = Name;
+			hdr.Mode      = this.Mode;
+			hdr.UserId    = this.UserId;
+			hdr.GroupId   = this.GroupId;
+			hdr.Size      = this.Size;
+			hdr.ModTime   = this.ModTime;
+			hdr.TypeFlag  = this.TypeFlag;
+			hdr.LinkName  = this.LinkName;
+			hdr.Magic     = this.Magic;
+			hdr.Version   = this.Version;
+			hdr.UserName  = this.UserName;
+			hdr.GroupName = this.GroupName;
+			hdr.DevMajor  = this.DevMajor;
+			hdr.DevMinor  = this.DevMinor;
+			
+			return hdr;
+		}
+		/// <summary>
+		/// Get a hash code for the current object.
+		/// </summary>
+		/// <returns>A hash code for the current object.</returns>
+		public override int GetHashCode()
+		{
+			return Name.GetHashCode();
+		}
+		
+		/// <summary>
+		/// Determines if this instance is equal to the specified object.
+		/// </summary>
+		/// <param name="obj">The object to compare with.</param>
+		/// <returns>true if the objects are equal, false otherwise.</returns>
+		public override bool Equals(object obj)
+		{
+			if ( obj is TarHeader ) {
+				TarHeader th = obj as TarHeader;
+				return name == th.name
+					&& mode == th.mode
+					&& UserId == th.UserId
+					&& GroupId == th.GroupId
+					&& Size == th.Size
+					&& ModTime == th.ModTime
+					&& Checksum == th.Checksum
+					&& TypeFlag == th.TypeFlag
+					&& LinkName == th.LinkName
+					&& Magic == th.Magic
+					&& Version == th.Version
+					&& UserName == th.UserName
+					&& GroupName == th.GroupName
+					&& DevMajor == th.DevMajor
+					&& DevMinor == th.DevMinor;
+			}
+			else {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Get the name of this entry.
+		/// </summary>
+		/// <returns>The entry's name.</returns>
+		/// <remarks>
+		/// This is obsolete use the Name property instead.
+		/// </remarks>
+		[Obsolete]
+		public string GetName()
+		{
+			return this.name.ToString();
+		}
+		
+		/// <summary>
+		/// Parse an octal string from a header buffer.
+		/// </summary>
+		/// <param name = "header">The header buffer from which to parse.</param>
+		/// <param name = "offset">The offset into the buffer from which to parse.</param>
+		/// <param name = "length">The number of header bytes to parse.</param>
+		/// <returns>The long equivalent of the octal string.</returns>
+		public static long ParseOctal(byte[] header, int offset, int length)
+		{
+			long result = 0;
+			bool stillPadding = true;
+			
+			int end = offset + length;
+			for (int i = offset; i < end ; ++i) {
+				if (header[i] == 0) {
+					break;
+				}
+				
+				if (header[i] == (byte)' ' || header[i] == '0') {
+					if (stillPadding) {
+						continue;
+					}
+					
+					if (header[i] == (byte)' ') {
+						break;
+					}
+				}
+				
+				stillPadding = false;
+				
+				result = (result << 3) + (header[i] - '0');
+			}
+			
+			return result;
+		}
+		
+		/// <summary>
+		/// Parse a name from a header buffer.
+		/// </summary>
+		/// <param name="header">
+		/// The header buffer from which to parse.
+		/// </param>
+		/// <param name="offset">
+		/// The offset into the buffer from which to parse.
+		/// </param>
+		/// <param name="length">
+		/// The number of header bytes to parse.
+		/// </param>
+		/// <returns>
+		/// The name parsed.
+		/// </returns>
+		public static StringBuilder ParseName(byte[] header, int offset, int length)
+		{
+			StringBuilder result = new StringBuilder(length);
+			
+			for (int i = offset; i < offset + length; ++i) {
+				if (header[i] == 0) {
+					break;
+				}
+				result.Append((char)header[i]);
+			}
+			
+			return result;
+		}
+		
+		/// <summary>
+		/// Add <paramref name="name">name</paramref> to the buffer as a collection of bytes
+		/// </summary>
+		/// <param name="name">The name to add</param>
+		/// <param name="nameOffset">The offset of the first character</param>
+		/// <param name="buf">The buffer to add to</param>
+		/// <param name="bufferOffset">The index of the first byte to add</param>
+		/// <param name="length">The number of characters/bytes to add</param>
+		/// <returns>The next free index in the <paramref name="buf">buffer</paramref></returns>
+		public static int GetNameBytes(StringBuilder name, int nameOffset, byte[] buf, int bufferOffset, int length)
+		{
+			return GetNameBytes(name.ToString(), nameOffset, buf, bufferOffset, length);
+		}
+		
+		/// <summary>
+		/// Add <paramref name="name">name</paramref> to the buffer as a collection of bytes
+		/// </summary>
+		/// <param name="name">The name to add</param>
+		/// <param name="nameOffset">The offset of the first character</param>
+		/// <param name="buf">The buffer to add to</param>
+		/// <param name="bufferOffset">The index of the first byte to add</param>
+		/// <param name="length">The number of characters/bytes to add</param>
+		/// <returns>The next free index in the <paramref name="buf">buffer</paramref></returns>
+		public static int GetNameBytes(string name, int nameOffset, byte[] buf, int bufferOffset, int length)
+		{
+			int i;
+			
+			for (i = 0 ; i < length - 1 && nameOffset + i < name.Length; ++i) {
+				buf[bufferOffset + i] = (byte)name[nameOffset + i];
+			}
+			
+			for (; i < length ; ++i) {
+				buf[bufferOffset + i] = 0;
+			}
+			
+			return bufferOffset + length;
+		}
+
+		/// <summary>
+		/// Add an entry name to the buffer
+		/// </summary>
+		/// <param name="name">
+		/// The name to add
+		/// </param>
+		/// <param name="buf">
+		/// The buffer to add to
+		/// </param>
+		/// <param name="offset">
+		/// The offset into the buffer from which to start adding
+		/// </param>
+		/// <param name="length">
+		/// The number of header bytes to add
+		/// </param>
+		/// <returns>
+		/// The index of the next free byte in the buffer
+		/// </returns>
+		public static int GetNameBytes(StringBuilder name, byte[] buf, int offset, int length)
+		{
+			return GetNameBytes(name.ToString(), 0, buf, offset, length);
+		}
+		
+		/// <summary>
+		/// Add an entry name to the buffer
+		/// </summary>
+		/// <param name="name">The name to add</param>
+		/// <param name="buf">The buffer to add to</param>
+		/// <param name="offset">The offset into the buffer from which to start adding</param>
+		/// <param name="length">The number of header bytes to add</param>
+		/// <returns>The index of the next free byte in the buffer</returns>
+		public static int GetNameBytes(string name, byte[] buf, int offset, int length)
+		{
+			return GetNameBytes(name, 0, buf, offset, length);
+		}
+		
+		/// <summary>
+		/// Add a string to a buffer as a collection of ascii bytes.
+		/// </summary>
+		/// <param name="toAdd">The string to add</param>
+		/// <param name="nameOffset">The offset of the first character to add.</param>
+		/// <param name="buffer">The buffer to add to.</param>
+		/// <param name="bufferOffset">The offset to start adding at.</param>
+		/// <param name="length">The number of ascii characters to add.</param>
+		/// <returns>The next free index in the buffer.</returns>
+		public static int GetAsciiBytes(string toAdd, int nameOffset, byte[] buffer, int bufferOffset, int length )
+		{
+			for (int i = 0 ; i < length && nameOffset + i < toAdd.Length; ++i) 
+		 	{
+				buffer[bufferOffset + i] = (byte)toAdd[nameOffset + i];
+		 	}
+		 	return bufferOffset + length;
+		}
+
+		/// <summary>
+		/// Put an octal representation of a value into a buffer
+		/// </summary>
+		/// <param name = "val">
+		/// the value to be converted to octal
+		/// </param>
+		/// <param name = "buf">
+		/// buffer to store the octal string
+		/// </param>
+		/// <param name = "offset">
+		/// The offset into the buffer where the value starts
+		/// </param>
+		/// <param name = "length">
+		/// The length of the octal string to create
+		/// </param>
+		/// <returns>
+		/// The offset of the character next byte after the octal string
+		/// </returns>
+		public static int GetOctalBytes(long val, byte[] buf, int offset, int length)
+		{
+			int idx = length - 1;
+
+			// Either a space or null is valid here.  We use NULL as per GNUTar
+			buf[offset + idx] = 0;
+			--idx;
+
+			if (val > 0) {
+				for (long v = val; idx >= 0 && v > 0; --idx) {
+					buf[offset + idx] = (byte)((byte)'0' + (byte)(v & 7));
+					v >>= 3;
+				}
+			}
+				
+			for (; idx >= 0; --idx) {
+				buf[offset + idx] = (byte)'0';
+			}
+			
+			return offset + length;
+		}
+		
+		/// <summary>
+		/// Put an octal representation of a value into a buffer
+		/// </summary>
+		/// <param name = "val">Value to be convert to octal</param>
+		/// <param name = "buf">The buffer to update</param>
+		/// <param name = "offset">The offset into the buffer to store the value</param>
+		/// <param name = "length">The length of the octal string</param>
+		/// <returns>Index of next byte</returns>
+		public static int GetLongOctalBytes(long val, byte[] buf, int offset, int length)
+		{
+			return GetOctalBytes(val, buf, offset, length);
+		}
+		
+		/// <summary>
+		/// Add the checksum integer to header buffer.
+		/// </summary>
+		/// <param name = "val"></param>
+		/// <param name = "buf">The header buffer to set the checksum for</param>
+		/// <param name = "offset">The offset into the buffer for the checksum</param>
+		/// <param name = "length">The number of header bytes to update.
+		/// It's formatted differently from the other fields: it has 6 digits, a
+		/// null, then a space -- rather than digits, a space, then a null.
+		/// The final space is already there, from checksumming
+		/// </param>
+		/// <returns>The modified buffer offset</returns>
+		private static int GetCheckSumOctalBytes(long val, byte[] buf, int offset, int length)
+		{
+			TarHeader.GetOctalBytes(val, buf, offset, length - 1);
+			return offset + length;
+		}
+		
+		/// <summary>
+		/// Compute the checksum for a tar entry header.  
+		/// The checksum field must be all spaces prior to this happening
+		/// </summary>
+		/// <param name = "buf">The tar entry's header buffer.</param>
+		/// <returns>The computed checksum.</returns>
+		private static int ComputeCheckSum(byte[] buf)
+		{
+			int sum = 0;
+			for (int i = 0; i < buf.Length; ++i) {
+				sum += buf[i];
+			}
+			return sum;
+		}
+		
+		/// <summary>
+		/// Make a checksum for a tar entry ignoring the checksum contents.
+		/// </summary>
+		/// <param name = "buf">The tar entry's header buffer.</param>
+		/// <returns>The checksum for the buffer</returns>
+		private static int MakeCheckSum(byte[] buf)
+		{
+			int sum = 0;
+			for ( int i = 0; i < CHKSUMOFS; ++i )
+			{
+				sum += buf[i];
+			}
+		
+			for ( int i = 0; i < TarHeader.CHKSUMLEN; ++i)
+			{
+				sum += (byte)' ';
+			}
+		
+			for (int i = CHKSUMOFS + CHKSUMLEN; i < buf.Length; ++i) 
+			{
+				sum += buf[i];
+			}
+			return sum;
+		}
+		
+
+		readonly static long     timeConversionFactor = 10000000L;           // 1 tick == 100 nanoseconds
+		readonly static DateTime dateTime1970        = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
+		
+		static int GetCTime(System.DateTime dateTime)
+		{
+			return (int)((dateTime.Ticks - dateTime1970.Ticks) / timeConversionFactor);
+		}
+		
+		static DateTime GetDateTimeFromCTime(long ticks)
+		{
+			DateTime result;
+			
+			try {
+				result = new DateTime(dateTime1970.Ticks + ticks * timeConversionFactor);
+			}
+			catch {
+				result = dateTime1970;
+			}
+			return result;
+		}
+
+		/// <summary>
+		/// Parse TarHeader information from a header buffer.
+		/// </summary>
+		/// <param name = "header">
+		/// The tar entry header buffer to get information from.
+		/// </param>
+		public void ParseBuffer(byte[] header)
+		{
+			int offset = 0;
+			
+			name = TarHeader.ParseName(header, offset, TarHeader.NAMELEN).ToString();
+			offset += TarHeader.NAMELEN;
+			
+			mode = (int)TarHeader.ParseOctal(header, offset, TarHeader.MODELEN);
+			offset += TarHeader.MODELEN;
+			
+			UserId = (int)TarHeader.ParseOctal(header, offset, TarHeader.UIDLEN);
+			offset += TarHeader.UIDLEN;
+			
+			GroupId = (int)TarHeader.ParseOctal(header, offset, TarHeader.GIDLEN);
+			offset += TarHeader.GIDLEN;
+			
+			Size = TarHeader.ParseOctal(header, offset, TarHeader.SIZELEN);
+			offset += TarHeader.SIZELEN;
+			
+			ModTime = GetDateTimeFromCTime(TarHeader.ParseOctal(header, offset, TarHeader.MODTIMELEN));
+			offset += TarHeader.MODTIMELEN;
+			
+			checksum = (int)TarHeader.ParseOctal(header, offset, TarHeader.CHKSUMLEN);
+			offset += TarHeader.CHKSUMLEN;
+			
+			TypeFlag = header[ offset++ ];
+
+			LinkName = TarHeader.ParseName(header, offset, TarHeader.NAMELEN).ToString();
+			offset += TarHeader.NAMELEN;
+			
+			Magic = TarHeader.ParseName(header, offset, TarHeader.MAGICLEN).ToString();
+			offset += TarHeader.MAGICLEN;
+			
+			Version = TarHeader.ParseName(header, offset, TarHeader.VERSIONLEN).ToString();
+			offset += TarHeader.VERSIONLEN;
+			
+			UserName = TarHeader.ParseName(header, offset, TarHeader.UNAMELEN).ToString();
+			offset += TarHeader.UNAMELEN;
+			
+			GroupName = TarHeader.ParseName(header, offset, TarHeader.GNAMELEN).ToString();
+			offset += TarHeader.GNAMELEN;
+			
+			DevMajor = (int)TarHeader.ParseOctal(header, offset, TarHeader.DEVLEN);
+			offset += TarHeader.DEVLEN;
+			
+			DevMinor = (int)TarHeader.ParseOctal(header, offset, TarHeader.DEVLEN);
+			
+			// Fields past this point not currently parsed or used...
+			
+			// TODO: prefix information.
+			
+			isChecksumValid = Checksum == TarHeader.MakeCheckSum(header);
+		}
+
+		/// <summary>
+		/// 'Write' header information to buffer provided, updating the <see cref="Checksum">check sum</see>.
+		/// </summary>
+		/// <param name="outbuf">output buffer for header information</param>
+		public void WriteHeader(byte[] outbuf)
+		{
+			int offset = 0;
+			
+			offset = GetNameBytes(this.Name, outbuf, offset, TarHeader.NAMELEN);
+			offset = GetOctalBytes(this.mode, outbuf, offset, TarHeader.MODELEN);
+			offset = GetOctalBytes(this.UserId, outbuf, offset, TarHeader.UIDLEN);
+			offset = GetOctalBytes(this.GroupId, outbuf, offset, TarHeader.GIDLEN);
+			
+			long size = this.Size;
+			
+			offset = GetLongOctalBytes(size, outbuf, offset, TarHeader.SIZELEN);
+			offset = GetLongOctalBytes(GetCTime(this.ModTime), outbuf, offset, TarHeader.MODTIMELEN);
+			
+			int csOffset = offset;
+			for (int c = 0; c < TarHeader.CHKSUMLEN; ++c) {
+				outbuf[offset++] = (byte)' ';
+			}
+			
+			outbuf[offset++] = this.TypeFlag;
+			
+			offset = GetNameBytes(this.LinkName, outbuf, offset, NAMELEN);
+			offset = GetAsciiBytes(this.Magic, 0, outbuf, offset, MAGICLEN);
+			offset = GetNameBytes(this.Version, outbuf, offset, VERSIONLEN);
+			offset = GetNameBytes(this.UserName, outbuf, offset, UNAMELEN);
+			offset = GetNameBytes(this.GroupName, outbuf, offset, GNAMELEN);
+			
+			if (this.TypeFlag == LF_CHR || this.TypeFlag == LF_BLK) {
+				offset = GetOctalBytes(this.DevMajor, outbuf, offset, DEVLEN);
+				offset = GetOctalBytes(this.DevMinor, outbuf, offset, DEVLEN);
+			}
+			
+			for ( ; offset < outbuf.Length; ) {
+				outbuf[offset++] = 0;
+			}
+			
+			checksum = ComputeCheckSum(outbuf);
+			
+			GetCheckSumOctalBytes(checksum, outbuf, csOffset, CHKSUMLEN);
+			isChecksumValid = true;
+		}
+	}
+}
+
+/* The original Java file had this header:
+ * 
+** Authored by Timothy Gerard Endres
+** <mailto:time@gjt.org>  <http://www.trustice.com>
+** 
+** This work has been placed into the public domain.
+** You may use this work in any way and for any purpose you wish.
+**
+** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
+** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
+** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
+** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
+** REDISTRIBUTION OF THIS SOFTWARE. 
+** 
+*/
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarInputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarInputStream.cs
@@ -1,636 +1,636 @@
-// TarInputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-//
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-using System.Text;
-
-namespace ICSharpCode.SharpZipLib.Tar 
-{
-	
-	/// <summary>
-	/// The TarInputStream reads a UNIX tar archive as an InputStream.
-	/// methods are provided to position at each successive entry in
-	/// the archive, and the read each entry as a normal input stream
-	/// using read().
-	/// </summary>
-	public class TarInputStream : Stream
-	{
-		/// <summary>
-		/// Flag set when last block has been read
-		/// </summary>
-		protected bool hasHitEOF;
-		
-		/// <summary>
-		/// Size of this entry as recorded in header
-		/// </summary>
-		protected long entrySize;
-		
-		/// <summary>
-		/// Number of bytes read for this entry so far
-		/// </summary>
-		protected long entryOffset;
-
-		/// <summary>
-		/// Buffer used with calls to <code>Read()</code>
-		/// </summary>		
-		protected byte[] readBuf;
-		
-		/// <summary>
-		/// Working buffer
-		/// </summary>
-		protected TarBuffer buffer;
-		
-		/// <summary>
-		/// Current entry being read
-		/// </summary>
-		protected TarEntry  currEntry;
-		
-		/// <summary>
-		/// Factory used to create TarEntry or descendant class instance
-		/// </summary>
-		protected IEntryFactory eFactory;
-		
-		Stream inputStream;
-
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports reading
-		/// </summary>
-		public override bool CanRead {
-			get {
-				return inputStream.CanRead;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports seeking
-		/// This property always returns false.
-		/// </summary>
-		public override bool CanSeek {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating if the stream supports writing.
-		/// This property always returns false.
-		/// </summary>
-		public override bool CanWrite {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// The length in bytes of the stream
-		/// </summary>
-		public override long Length {
-			get {
-				return inputStream.Length;
-			}
-		}
-		
-		/// <summary>
-		/// Gets or sets the position within the stream. 
-		/// Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any attempt to set position</exception>
-		public override long Position {
-			get {
-				return inputStream.Position;
-			}
-			set {
-				throw new NotSupportedException("TarInputStream Seek not supported");
-			}
-		}
-		
-		/// <summary>
-		/// Flushes the baseInputStream
-		/// </summary>
-		public override void Flush()
-		{
-			inputStream.Flush();
-		}
-		
-		/// <summary>
-		/// Set the streams position.  This operation is not supported and will throw a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override long Seek(long offset, SeekOrigin origin)
-		{
-			throw new NotSupportedException("TarInputStream Seek not supported");
-		}
-		
-		/// <summary>
-		/// Sets the length of the stream
-		/// This operation is not supported and will throw a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void SetLength(long val)
-		{
-			throw new NotSupportedException("TarInputStream SetLength not supported");
-		}
-		
-		/// <summary>
-		/// Writes a block of bytes to this stream using data from a buffer.
-		/// This operation is not supported and will throw a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void Write(byte[] array, int offset, int count)
-		{
-			throw new NotSupportedException("TarInputStream Write not supported");
-		}
-		
-		/// <summary>
-		/// Writes a byte to the current position in the file stream.
-		/// This operation is not supported and will throw a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void WriteByte(byte val)
-		{
-			throw new NotSupportedException("TarInputStream WriteByte not supported");
-		}
-			
-
-		/// <summary>
-		/// Construct a TarInputStream with default block factor
-		/// </summary>
-		/// <param name="inputStream">stream to source data from</param>
-		public TarInputStream(Stream inputStream) : this(inputStream, TarBuffer.DefaultBlockFactor)
-		{
-		}
-
-		/// <summary>
-		/// Construct a TarInputStream with user specified block factor
-		/// </summary>
-		/// <param name="inputStream">stream to source data from</param>
-		/// <param name="blockFactor">block factor to apply to archive</param>
-		public TarInputStream(Stream inputStream, int blockFactor)
-		{
-			this.inputStream = inputStream;
-			this.buffer      = TarBuffer.CreateInputTarBuffer(inputStream, blockFactor);
-			
-			this.readBuf   = null;
-			this.hasHitEOF = false;
-			this.eFactory  = null;
-		}
-
-		/// <summary>
-		/// Set the entry factory for this instance.
-		/// </summary>
-		/// <param name="factory">The factory for creating new entries</param>
-		public void SetEntryFactory(IEntryFactory factory)
-		{
-			this.eFactory = factory;
-		}
-		
-		/// <summary>
-		/// Closes this stream. Calls the TarBuffer's close() method.
-		/// The underlying stream is closed by the TarBuffer.
-		/// </summary>
-		public override void Close()
-		{
-			this.buffer.Close();
-		}
-		
-		/// <summary>
-		/// Get the record size being used by this stream's TarBuffer.
-		/// </summary>
-		/// <returns>
-		/// TarBuffer record size.
-		/// </returns>
-		public int GetRecordSize()
-		{
-			return this.buffer.GetRecordSize();
-		}
-		
-		/// <summary>
-		/// Get the available data that can be read from the current
-		/// entry in the archive. This does not indicate how much data
-		/// is left in the entire archive, only in the current entry.
-		/// This value is determined from the entry's size header field
-		/// and the amount of data already read from the current entry.
-		/// </summary>
-		/// <returns>
-		/// The number of available bytes for the current entry.
-		/// </returns>
-		public long Available {
-			get {
-				return this.entrySize - this.entryOffset;
-			}
-		}
-		
-		/// <summary>
-		/// Skip bytes in the input buffer. This skips bytes in the
-		/// current entry's data, not the entire archive, and will
-		/// stop at the end of the current entry's data if the number
-		/// to skip extends beyond that point.
-		/// </summary>
-		/// <param name="numToSkip">
-		/// The number of bytes to skip.
-		/// </param>
-		public void Skip(long numToSkip)
-		{
-			// TODO: REVIEW
-			// This is horribly inefficient, but it ensures that we
-			// properly skip over bytes via the TarBuffer...
-			//
-			byte[] skipBuf = new byte[8 * 1024];
-			
-			for (long num = numToSkip; num > 0;) {
-				int toRead = num > skipBuf.Length ? skipBuf.Length : (int)num;
-				int numRead = this.Read(skipBuf, 0, toRead);
-				
-				if (numRead == -1) {
-					break;
-				}
-				
-				num -= numRead;
-			}
-		}
-		
-		/// <summary>
-		/// Since we do not support marking just yet, we return false.
-		/// </summary>
-		public bool IsMarkSupported {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Since we do not support marking just yet, we do nothing.
-		/// </summary>
-		/// <param name ="markLimit">
-		/// The limit to mark.
-		/// </param>
-		public void Mark(int markLimit)
-		{
-		}
-		
-		/// <summary>
-		/// Since we do not support marking just yet, we do nothing.
-		/// </summary>
-		public void Reset()
-		{
-		}
-		
-		void SkipToNextEntry()
-		{
-			long numToSkip = this.entrySize - this.entryOffset;
-			
-			if (numToSkip > 0) {
-				this.Skip(numToSkip);
-			}
-			
-			this.readBuf = null;
-		}
-		
-		/// <summary>
-		/// Get the next entry in this tar archive. This will skip
-		/// over any remaining data in the current entry, if there
-		/// is one, and place the input stream at the header of the
-		/// next entry, and read the header and instantiate a new
-		/// TarEntry from the header bytes and return that entry.
-		/// If there are no more entries in the archive, null will
-		/// be returned to indicate that the end of the archive has
-		/// been reached.
-		/// </summary>
-		/// <returns>
-		/// The next TarEntry in the archive, or null.
-		/// </returns>
-		public TarEntry GetNextEntry()
-		{
-			if (this.hasHitEOF) {
-				return null;
-			}
-			
-			if (this.currEntry != null) {
-				SkipToNextEntry();
-			}
-			
-			byte[] headerBuf = this.buffer.ReadBlock();
-			
-			if (headerBuf == null) {
-				this.hasHitEOF = true;
-			} else if (this.buffer.IsEOFBlock(headerBuf)) {
-				this.hasHitEOF = true;
-			}
-			
-			if (this.hasHitEOF) {
-				this.currEntry = null;
-			} else {
-				try {
-					TarHeader header = new TarHeader();
-					header.ParseBuffer(headerBuf);
-					if ( !header.IsChecksumValid )
-					{
-						throw new TarException("Header checksum is invalid");
-					}
-					this.entryOffset = 0;
-					this.entrySize = header.Size;
-					
-					StringBuilder longName = null;
-					
-					if (header.TypeFlag == TarHeader.LF_GNU_LONGNAME) {
-						
-						byte[] nameBuffer = new byte[TarBuffer.BlockSize];
-						
-						long numToRead = this.entrySize;
-						
-						longName = new StringBuilder();
-						
-						while (numToRead > 0) {
-							int numRead = this.Read(nameBuffer, 0, (numToRead > nameBuffer.Length ? nameBuffer.Length : (int)numToRead));
-							
-							if (numRead == -1) {
-								throw new InvalidHeaderException("Failed to read long name entry");
-							}
-							
-							longName.Append(TarHeader.ParseName(nameBuffer, 0, numRead).ToString());
-							numToRead -= numRead;
-						}
-						
-						SkipToNextEntry();
-						headerBuf = this.buffer.ReadBlock();
-					} else if (header.TypeFlag == TarHeader.LF_GHDR) {  // POSIX global extended header 
-						// Ignore things we dont understand completely for now
-						SkipToNextEntry();
-						headerBuf = this.buffer.ReadBlock();
-					} else if (header.TypeFlag == TarHeader.LF_XHDR) {  // POSIX extended header
-						// Ignore things we dont understand completely for now
-						SkipToNextEntry();
-						headerBuf = this.buffer.ReadBlock();
-					} else if (header.TypeFlag == TarHeader.LF_GNU_VOLHDR) {
-						// TODO: could show volume name when verbose
-						SkipToNextEntry();
-						headerBuf = this.buffer.ReadBlock();
-					} else if (header.TypeFlag != TarHeader.LF_NORMAL && 
-					           header.TypeFlag != TarHeader.LF_OLDNORM &&
-					           header.TypeFlag != TarHeader.LF_DIR) {
-						// Ignore things we dont understand completely for now
-						SkipToNextEntry();
-						headerBuf = this.buffer.ReadBlock();
-					}
-					
-					if (this.eFactory == null) {
-						this.currEntry = new TarEntry(headerBuf);
-						if (longName != null) {
-							currEntry.Name = longName.ToString();
-						}
-					} else {
-						this.currEntry = this.eFactory.CreateEntry(headerBuf);
-					}
-					
-					// Magic was checked here for 'ustar' but there are multiple valid possibilities
-					// so this is not done anymore.
-					
-					this.entryOffset = 0;
-					
-					// TODO: Review How do we resolve this discrepancy?!
-					this.entrySize = this.currEntry.Size;
-				} catch (InvalidHeaderException ex) {
-					this.entrySize = 0;
-					this.entryOffset = 0;
-					this.currEntry = null;
-					throw new InvalidHeaderException("bad header in record " + this.buffer.GetCurrentBlockNum() + " block " + this.buffer.GetCurrentBlockNum() + ", " + ex.Message);
-				}
-			}
-			return this.currEntry;
-		}
-		
-		/// <summary>
-		/// Reads a byte from the current tar archive entry.
-		/// This method simply calls read(byte[], int, int).
-		/// </summary>
-		public override int ReadByte()
-		{
-			byte[] oneByteBuffer = new byte[1];
-			int num = this.Read(oneByteBuffer, 0, 1);
-			if (num <= 0) { // return -1 to indicate that no byte was read.
-				return -1;
-			}
-			return (int)oneByteBuffer[0];
-		}
-		
-		/// <summary>
-		/// Reads bytes from the current tar archive entry.
-		/// 
-		/// This method is aware of the boundaries of the current
-		/// entry in the archive and will deal with them appropriately
-		/// </summary>
-		/// <param name="outputBuffer">
-		/// The buffer into which to place bytes read.
-		/// </param>
-		/// <param name="offset">
-		/// The offset at which to place bytes read.
-		/// </param>
-		/// <param name="count">
-		/// The number of bytes to read.
-		/// </param>
-		/// <returns>
-		/// The number of bytes read, or 0 at end of stream/EOF.
-		/// </returns>
-		public override int Read(byte[] outputBuffer, int offset, int count)
-		{
-			int totalRead = 0;
-			
-			if (this.entryOffset >= this.entrySize) {
-				return 0;
-			}
-			
-			long numToRead = count;
-			
-			if ((numToRead + this.entryOffset) > this.entrySize) {
-				numToRead = this.entrySize - this.entryOffset;
-			}
-			
-			if (this.readBuf != null) {
-				int sz = (numToRead > this.readBuf.Length) ? this.readBuf.Length : (int)numToRead;
-				
-				Array.Copy(this.readBuf, 0, outputBuffer, offset, sz);
-				
-				if (sz >= this.readBuf.Length) {
-					this.readBuf = null;
-				} else {
-					int newLen = this.readBuf.Length - sz;
-					byte[] newBuf = new byte[newLen];
-					Array.Copy(this.readBuf, sz, newBuf, 0, newLen);
-					this.readBuf = newBuf;
-				}
-				
-				totalRead += sz;
-				numToRead -= sz;
-				offset += sz;
-			}
-			
-			while (numToRead > 0) {
-				byte[] rec = this.buffer.ReadBlock();
-				if (rec == null) {
-					// Unexpected EOF!
-					throw new TarException("unexpected EOF with " + numToRead + " bytes unread");
-				}
-				
-				int sz     = (int)numToRead;
-				int recLen = rec.Length;
-				
-				if (recLen > sz) {
-					Array.Copy(rec, 0, outputBuffer, offset, sz);
-					this.readBuf = new byte[recLen - sz];
-					Array.Copy(rec, sz, this.readBuf, 0, recLen - sz);
-				} else {
-					sz = recLen;
-					Array.Copy(rec, 0, outputBuffer, offset, recLen);
-				}
-				
-				totalRead += sz;
-				numToRead -= sz;
-				offset += sz;
-			}
-			
-			this.entryOffset += totalRead;
-			
-			return totalRead;
-		}
-		
-		/// <summary>
-		/// Copies the contents of the current tar archive entry directly into
-		/// an output stream.
-		/// </summary>
-		/// <param name="outputStream">
-		/// The OutputStream into which to write the entry's data.
-		/// </param>
-		public void CopyEntryContents(Stream outputStream)
-		{
-			byte[] buf = new byte[32 * 1024];
-			
-			while (true) {
-				int numRead = this.Read(buf, 0, buf.Length);
-				if (numRead <= 0) {
-					break;
-				}
-				outputStream.Write(buf, 0, numRead);
-			}
-		}
-		
-		/// <summary>
-		/// This interface is provided, along with the method setEntryFactory(), to allow
-		/// the programmer to have their own TarEntry subclass instantiated for the
-		/// entries return from getNextEntry().
-		/// </summary>
-		public interface IEntryFactory
-		{
-			/// <summary>
-			/// Create an entry based on name alone
-			/// </summary>
-			/// <param name="name">
-			/// Name of the new EntryPointNotFoundException to create
-			/// </param>
-			/// <returns>created TarEntry or descendant class</returns>
-			TarEntry CreateEntry(string name);
-			
-			/// <summary>
-			/// Create an instance based on an actual file
-			/// </summary>
-			/// <param name="fileName">
-			/// Name of file to represent in the entry
-			/// </param>
-			/// <returns>
-			/// Created TarEntry or descendant class
-			/// </returns>
-			TarEntry CreateEntryFromFile(string fileName);
-			
-			/// <summary>
-			/// Create a tar entry based on the header information passed
-			/// </summary>
-			/// <param name="headerBuf">
-			/// Buffer containing header information to base entry on
-			/// </param>
-			/// <returns>
-			/// Created TarEntry or descendant class
-			/// </returns>
-			TarEntry CreateEntry(byte[] headerBuf);
-		}
-
-		/// <summary>
-		/// Standard entry factory class creating instances of the class TarEntry
-		/// </summary>
-		public class EntryFactoryAdapter : IEntryFactory
-		{
-			/// <summary>
-			/// Create a TarEntry based on named
-			/// </summary>
-			public TarEntry CreateEntry(string name)
-			{
-				return TarEntry.CreateTarEntry(name);
-			}
-			
-			/// <summary>
-			/// Create a tar entry with details obtained from <paramref name="fileName">file</paramref>
-			/// </summary>
-			public TarEntry CreateEntryFromFile(string fileName)
-			{
-				return TarEntry.CreateEntryFromFile(fileName);
-			}
-
-			/// <summary>
-			/// Create and entry based on details in <paramref name="headerBuf">header</paramref>
-			/// </summary>			
-			public TarEntry CreateEntry(byte[] headerBuf)
-			{
-				return new TarEntry(headerBuf);
-			}
-		}
-	}
-	
-	
-}
-
-/* The original Java file had this header:
-	** Authored by Timothy Gerard Endres
-	** <mailto:time@gjt.org>  <http://www.trustice.com>
-	**
-	** This work has been placed into the public domain.
-	** You may use this work in any way and for any purpose you wish.
-	**
-	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
-	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
-	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
-	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
-	** REDISTRIBUTION OF THIS SOFTWARE.
-	**
-	*/
-	
+// TarInputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+//
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+using System.Text;
+
+namespace ICSharpCode.SharpZipLib.Tar 
+{
+	
+	/// <summary>
+	/// The TarInputStream reads a UNIX tar archive as an InputStream.
+	/// methods are provided to position at each successive entry in
+	/// the archive, and the read each entry as a normal input stream
+	/// using read().
+	/// </summary>
+	public class TarInputStream : Stream
+	{
+		/// <summary>
+		/// Flag set when last block has been read
+		/// </summary>
+		protected bool hasHitEOF;
+		
+		/// <summary>
+		/// Size of this entry as recorded in header
+		/// </summary>
+		protected long entrySize;
+		
+		/// <summary>
+		/// Number of bytes read for this entry so far
+		/// </summary>
+		protected long entryOffset;
+
+		/// <summary>
+		/// Buffer used with calls to <code>Read()</code>
+		/// </summary>		
+		protected byte[] readBuf;
+		
+		/// <summary>
+		/// Working buffer
+		/// </summary>
+		protected TarBuffer buffer;
+		
+		/// <summary>
+		/// Current entry being read
+		/// </summary>
+		protected TarEntry  currEntry;
+		
+		/// <summary>
+		/// Factory used to create TarEntry or descendant class instance
+		/// </summary>
+		protected IEntryFactory eFactory;
+		
+		Stream inputStream;
+
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports reading
+		/// </summary>
+		public override bool CanRead {
+			get {
+				return inputStream.CanRead;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports seeking
+		/// This property always returns false.
+		/// </summary>
+		public override bool CanSeek {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating if the stream supports writing.
+		/// This property always returns false.
+		/// </summary>
+		public override bool CanWrite {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// The length in bytes of the stream
+		/// </summary>
+		public override long Length {
+			get {
+				return inputStream.Length;
+			}
+		}
+		
+		/// <summary>
+		/// Gets or sets the position within the stream. 
+		/// Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any attempt to set position</exception>
+		public override long Position {
+			get {
+				return inputStream.Position;
+			}
+			set {
+				throw new NotSupportedException("TarInputStream Seek not supported");
+			}
+		}
+		
+		/// <summary>
+		/// Flushes the baseInputStream
+		/// </summary>
+		public override void Flush()
+		{
+			inputStream.Flush();
+		}
+		
+		/// <summary>
+		/// Set the streams position.  This operation is not supported and will throw a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override long Seek(long offset, SeekOrigin origin)
+		{
+			throw new NotSupportedException("TarInputStream Seek not supported");
+		}
+		
+		/// <summary>
+		/// Sets the length of the stream
+		/// This operation is not supported and will throw a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void SetLength(long val)
+		{
+			throw new NotSupportedException("TarInputStream SetLength not supported");
+		}
+		
+		/// <summary>
+		/// Writes a block of bytes to this stream using data from a buffer.
+		/// This operation is not supported and will throw a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void Write(byte[] array, int offset, int count)
+		{
+			throw new NotSupportedException("TarInputStream Write not supported");
+		}
+		
+		/// <summary>
+		/// Writes a byte to the current position in the file stream.
+		/// This operation is not supported and will throw a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void WriteByte(byte val)
+		{
+			throw new NotSupportedException("TarInputStream WriteByte not supported");
+		}
+			
+
+		/// <summary>
+		/// Construct a TarInputStream with default block factor
+		/// </summary>
+		/// <param name="inputStream">stream to source data from</param>
+		public TarInputStream(Stream inputStream) : this(inputStream, TarBuffer.DefaultBlockFactor)
+		{
+		}
+
+		/// <summary>
+		/// Construct a TarInputStream with user specified block factor
+		/// </summary>
+		/// <param name="inputStream">stream to source data from</param>
+		/// <param name="blockFactor">block factor to apply to archive</param>
+		public TarInputStream(Stream inputStream, int blockFactor)
+		{
+			this.inputStream = inputStream;
+			this.buffer      = TarBuffer.CreateInputTarBuffer(inputStream, blockFactor);
+			
+			this.readBuf   = null;
+			this.hasHitEOF = false;
+			this.eFactory  = null;
+		}
+
+		/// <summary>
+		/// Set the entry factory for this instance.
+		/// </summary>
+		/// <param name="factory">The factory for creating new entries</param>
+		public void SetEntryFactory(IEntryFactory factory)
+		{
+			this.eFactory = factory;
+		}
+		
+		/// <summary>
+		/// Closes this stream. Calls the TarBuffer's close() method.
+		/// The underlying stream is closed by the TarBuffer.
+		/// </summary>
+		public override void Close()
+		{
+			this.buffer.Close();
+		}
+		
+		/// <summary>
+		/// Get the record size being used by this stream's TarBuffer.
+		/// </summary>
+		/// <returns>
+		/// TarBuffer record size.
+		/// </returns>
+		public int GetRecordSize()
+		{
+			return this.buffer.GetRecordSize();
+		}
+		
+		/// <summary>
+		/// Get the available data that can be read from the current
+		/// entry in the archive. This does not indicate how much data
+		/// is left in the entire archive, only in the current entry.
+		/// This value is determined from the entry's size header field
+		/// and the amount of data already read from the current entry.
+		/// </summary>
+		/// <returns>
+		/// The number of available bytes for the current entry.
+		/// </returns>
+		public long Available {
+			get {
+				return this.entrySize - this.entryOffset;
+			}
+		}
+		
+		/// <summary>
+		/// Skip bytes in the input buffer. This skips bytes in the
+		/// current entry's data, not the entire archive, and will
+		/// stop at the end of the current entry's data if the number
+		/// to skip extends beyond that point.
+		/// </summary>
+		/// <param name="numToSkip">
+		/// The number of bytes to skip.
+		/// </param>
+		public void Skip(long numToSkip)
+		{
+			// TODO: REVIEW
+			// This is horribly inefficient, but it ensures that we
+			// properly skip over bytes via the TarBuffer...
+			//
+			byte[] skipBuf = new byte[8 * 1024];
+			
+			for (long num = numToSkip; num > 0;) {
+				int toRead = num > skipBuf.Length ? skipBuf.Length : (int)num;
+				int numRead = this.Read(skipBuf, 0, toRead);
+				
+				if (numRead == -1) {
+					break;
+				}
+				
+				num -= numRead;
+			}
+		}
+		
+		/// <summary>
+		/// Since we do not support marking just yet, we return false.
+		/// </summary>
+		public bool IsMarkSupported {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Since we do not support marking just yet, we do nothing.
+		/// </summary>
+		/// <param name ="markLimit">
+		/// The limit to mark.
+		/// </param>
+		public void Mark(int markLimit)
+		{
+		}
+		
+		/// <summary>
+		/// Since we do not support marking just yet, we do nothing.
+		/// </summary>
+		public void Reset()
+		{
+		}
+		
+		void SkipToNextEntry()
+		{
+			long numToSkip = this.entrySize - this.entryOffset;
+			
+			if (numToSkip > 0) {
+				this.Skip(numToSkip);
+			}
+			
+			this.readBuf = null;
+		}
+		
+		/// <summary>
+		/// Get the next entry in this tar archive. This will skip
+		/// over any remaining data in the current entry, if there
+		/// is one, and place the input stream at the header of the
+		/// next entry, and read the header and instantiate a new
+		/// TarEntry from the header bytes and return that entry.
+		/// If there are no more entries in the archive, null will
+		/// be returned to indicate that the end of the archive has
+		/// been reached.
+		/// </summary>
+		/// <returns>
+		/// The next TarEntry in the archive, or null.
+		/// </returns>
+		public TarEntry GetNextEntry()
+		{
+			if (this.hasHitEOF) {
+				return null;
+			}
+			
+			if (this.currEntry != null) {
+				SkipToNextEntry();
+			}
+			
+			byte[] headerBuf = this.buffer.ReadBlock();
+			
+			if (headerBuf == null) {
+				this.hasHitEOF = true;
+			} else if (this.buffer.IsEOFBlock(headerBuf)) {
+				this.hasHitEOF = true;
+			}
+			
+			if (this.hasHitEOF) {
+				this.currEntry = null;
+			} else {
+				try {
+					TarHeader header = new TarHeader();
+					header.ParseBuffer(headerBuf);
+					if ( !header.IsChecksumValid )
+					{
+						throw new TarException("Header checksum is invalid");
+					}
+					this.entryOffset = 0;
+					this.entrySize = header.Size;
+					
+					StringBuilder longName = null;
+					
+					if (header.TypeFlag == TarHeader.LF_GNU_LONGNAME) {
+						
+						byte[] nameBuffer = new byte[TarBuffer.BlockSize];
+						
+						long numToRead = this.entrySize;
+						
+						longName = new StringBuilder();
+						
+						while (numToRead > 0) {
+							int numRead = this.Read(nameBuffer, 0, (numToRead > nameBuffer.Length ? nameBuffer.Length : (int)numToRead));
+							
+							if (numRead == -1) {
+								throw new InvalidHeaderException("Failed to read long name entry");
+							}
+							
+							longName.Append(TarHeader.ParseName(nameBuffer, 0, numRead).ToString());
+							numToRead -= numRead;
+						}
+						
+						SkipToNextEntry();
+						headerBuf = this.buffer.ReadBlock();
+					} else if (header.TypeFlag == TarHeader.LF_GHDR) {  // POSIX global extended header 
+						// Ignore things we dont understand completely for now
+						SkipToNextEntry();
+						headerBuf = this.buffer.ReadBlock();
+					} else if (header.TypeFlag == TarHeader.LF_XHDR) {  // POSIX extended header
+						// Ignore things we dont understand completely for now
+						SkipToNextEntry();
+						headerBuf = this.buffer.ReadBlock();
+					} else if (header.TypeFlag == TarHeader.LF_GNU_VOLHDR) {
+						// TODO: could show volume name when verbose
+						SkipToNextEntry();
+						headerBuf = this.buffer.ReadBlock();
+					} else if (header.TypeFlag != TarHeader.LF_NORMAL && 
+					           header.TypeFlag != TarHeader.LF_OLDNORM &&
+					           header.TypeFlag != TarHeader.LF_DIR) {
+						// Ignore things we dont understand completely for now
+						SkipToNextEntry();
+						headerBuf = this.buffer.ReadBlock();
+					}
+					
+					if (this.eFactory == null) {
+						this.currEntry = new TarEntry(headerBuf);
+						if (longName != null) {
+							currEntry.Name = longName.ToString();
+						}
+					} else {
+						this.currEntry = this.eFactory.CreateEntry(headerBuf);
+					}
+					
+					// Magic was checked here for 'ustar' but there are multiple valid possibilities
+					// so this is not done anymore.
+					
+					this.entryOffset = 0;
+					
+					// TODO: Review How do we resolve this discrepancy?!
+					this.entrySize = this.currEntry.Size;
+				} catch (InvalidHeaderException ex) {
+					this.entrySize = 0;
+					this.entryOffset = 0;
+					this.currEntry = null;
+					throw new InvalidHeaderException("bad header in record " + this.buffer.GetCurrentBlockNum() + " block " + this.buffer.GetCurrentBlockNum() + ", " + ex.Message);
+				}
+			}
+			return this.currEntry;
+		}
+		
+		/// <summary>
+		/// Reads a byte from the current tar archive entry.
+		/// This method simply calls read(byte[], int, int).
+		/// </summary>
+		public override int ReadByte()
+		{
+			byte[] oneByteBuffer = new byte[1];
+			int num = this.Read(oneByteBuffer, 0, 1);
+			if (num <= 0) { // return -1 to indicate that no byte was read.
+				return -1;
+			}
+			return (int)oneByteBuffer[0];
+		}
+		
+		/// <summary>
+		/// Reads bytes from the current tar archive entry.
+		/// 
+		/// This method is aware of the boundaries of the current
+		/// entry in the archive and will deal with them appropriately
+		/// </summary>
+		/// <param name="outputBuffer">
+		/// The buffer into which to place bytes read.
+		/// </param>
+		/// <param name="offset">
+		/// The offset at which to place bytes read.
+		/// </param>
+		/// <param name="count">
+		/// The number of bytes to read.
+		/// </param>
+		/// <returns>
+		/// The number of bytes read, or 0 at end of stream/EOF.
+		/// </returns>
+		public override int Read(byte[] outputBuffer, int offset, int count)
+		{
+			int totalRead = 0;
+			
+			if (this.entryOffset >= this.entrySize) {
+				return 0;
+			}
+			
+			long numToRead = count;
+			
+			if ((numToRead + this.entryOffset) > this.entrySize) {
+				numToRead = this.entrySize - this.entryOffset;
+			}
+			
+			if (this.readBuf != null) {
+				int sz = (numToRead > this.readBuf.Length) ? this.readBuf.Length : (int)numToRead;
+				
+				Array.Copy(this.readBuf, 0, outputBuffer, offset, sz);
+				
+				if (sz >= this.readBuf.Length) {
+					this.readBuf = null;
+				} else {
+					int newLen = this.readBuf.Length - sz;
+					byte[] newBuf = new byte[newLen];
+					Array.Copy(this.readBuf, sz, newBuf, 0, newLen);
+					this.readBuf = newBuf;
+				}
+				
+				totalRead += sz;
+				numToRead -= sz;
+				offset += sz;
+			}
+			
+			while (numToRead > 0) {
+				byte[] rec = this.buffer.ReadBlock();
+				if (rec == null) {
+					// Unexpected EOF!
+					throw new TarException("unexpected EOF with " + numToRead + " bytes unread");
+				}
+				
+				int sz     = (int)numToRead;
+				int recLen = rec.Length;
+				
+				if (recLen > sz) {
+					Array.Copy(rec, 0, outputBuffer, offset, sz);
+					this.readBuf = new byte[recLen - sz];
+					Array.Copy(rec, sz, this.readBuf, 0, recLen - sz);
+				} else {
+					sz = recLen;
+					Array.Copy(rec, 0, outputBuffer, offset, recLen);
+				}
+				
+				totalRead += sz;
+				numToRead -= sz;
+				offset += sz;
+			}
+			
+			this.entryOffset += totalRead;
+			
+			return totalRead;
+		}
+		
+		/// <summary>
+		/// Copies the contents of the current tar archive entry directly into
+		/// an output stream.
+		/// </summary>
+		/// <param name="outputStream">
+		/// The OutputStream into which to write the entry's data.
+		/// </param>
+		public void CopyEntryContents(Stream outputStream)
+		{
+			byte[] buf = new byte[32 * 1024];
+			
+			while (true) {
+				int numRead = this.Read(buf, 0, buf.Length);
+				if (numRead <= 0) {
+					break;
+				}
+				outputStream.Write(buf, 0, numRead);
+			}
+		}
+		
+		/// <summary>
+		/// This interface is provided, along with the method setEntryFactory(), to allow
+		/// the programmer to have their own TarEntry subclass instantiated for the
+		/// entries return from getNextEntry().
+		/// </summary>
+		public interface IEntryFactory
+		{
+			/// <summary>
+			/// Create an entry based on name alone
+			/// </summary>
+			/// <param name="name">
+			/// Name of the new EntryPointNotFoundException to create
+			/// </param>
+			/// <returns>created TarEntry or descendant class</returns>
+			TarEntry CreateEntry(string name);
+			
+			/// <summary>
+			/// Create an instance based on an actual file
+			/// </summary>
+			/// <param name="fileName">
+			/// Name of file to represent in the entry
+			/// </param>
+			/// <returns>
+			/// Created TarEntry or descendant class
+			/// </returns>
+			TarEntry CreateEntryFromFile(string fileName);
+			
+			/// <summary>
+			/// Create a tar entry based on the header information passed
+			/// </summary>
+			/// <param name="headerBuf">
+			/// Buffer containing header information to base entry on
+			/// </param>
+			/// <returns>
+			/// Created TarEntry or descendant class
+			/// </returns>
+			TarEntry CreateEntry(byte[] headerBuf);
+		}
+
+		/// <summary>
+		/// Standard entry factory class creating instances of the class TarEntry
+		/// </summary>
+		public class EntryFactoryAdapter : IEntryFactory
+		{
+			/// <summary>
+			/// Create a TarEntry based on named
+			/// </summary>
+			public TarEntry CreateEntry(string name)
+			{
+				return TarEntry.CreateTarEntry(name);
+			}
+			
+			/// <summary>
+			/// Create a tar entry with details obtained from <paramref name="fileName">file</paramref>
+			/// </summary>
+			public TarEntry CreateEntryFromFile(string fileName)
+			{
+				return TarEntry.CreateEntryFromFile(fileName);
+			}
+
+			/// <summary>
+			/// Create and entry based on details in <paramref name="headerBuf">header</paramref>
+			/// </summary>			
+			public TarEntry CreateEntry(byte[] headerBuf)
+			{
+				return new TarEntry(headerBuf);
+			}
+		}
+	}
+	
+	
+}
+
+/* The original Java file had this header:
+	** Authored by Timothy Gerard Endres
+	** <mailto:time@gjt.org>  <http://www.trustice.com>
+	**
+	** This work has been placed into the public domain.
+	** You may use this work in any way and for any purpose you wish.
+	**
+	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
+	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
+	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
+	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
+	** REDISTRIBUTION OF THIS SOFTWARE.
+	**
+	*/
+	
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarOutputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarOutputStream.cs
@@ -1,428 +1,428 @@
-// TarOutputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-using System.Text;
-
-namespace ICSharpCode.SharpZipLib.Tar 
-{
-	
-	/// <summary>
-	/// The TarOutputStream writes a UNIX tar archive as an OutputStream.
-	/// Methods are provided to put entries, and then write their contents
-	/// by writing to this stream using write().
-	/// </summary>
-	/// public
-	public class TarOutputStream : Stream
-	{
-		/// <summary>
-		/// flag indicating debugging code should be activated or not
-		/// </summary>
-		protected bool      debug;
-		
-		/// <summary>
-		/// Size for the current entry
-		/// </summary>
-		protected long      currSize;
-
-		/// <summary>
-		/// bytes written for this entry so far
-		/// </summary>
-		protected long       currBytes;
-		
-		/// <summary>
-		/// single block working buffer 
-		/// </summary>
-		protected byte[]    blockBuf;
-
-		/// <summary>
-		/// current 'Assembly' buffer length
-		/// </summary>		
-		protected int       assemLen;
-		
-		/// <summary>
-		/// 'Assembly' buffer used to assmble data before writing
-		/// </summary>
-		protected byte[]    assemBuf;
-		
-		/// <summary>
-		/// TarBuffer used to provide correct blocking factor
-		/// </summary>
-		protected TarBuffer buffer;
-		
-		/// <summary>
-		/// the destination stream for the archive contents
-		/// </summary>
-		protected Stream    outputStream;
-		
-		/// <summary>
-		/// true if the stream supports reading; otherwise, false.
-		/// </summary>
-		public override bool CanRead {
-			get {
-				return outputStream.CanRead;
-			}
-		}
-		
-		/// <summary>
-		/// true if the stream supports seeking; otherwise, false.
-		/// </summary>
-		public override bool CanSeek {
-			get {
-				return outputStream.CanSeek;
-			}
-		}
-		
-		/// <summary>
-		/// true if stream supports writing; otherwise, false.
-		/// </summary>
-		public override bool CanWrite {
-			get {
-				return outputStream.CanWrite;
-			}
-		}
-		
-		/// <summary>
-		/// length of stream in bytes
-		/// </summary>
-		public override long Length {
-			get {
-				return outputStream.Length;
-			}
-		}
-		
-		/// <summary>
-		/// gets or sets the position within the current stream.
-		/// </summary>
-		public override long Position {
-			get {
-				return outputStream.Position;
-			}
-			set {
-				outputStream.Position = value;
-			}
-		}
-		
-		/// <summary>
-		/// set the position within the current stream
-		/// </summary>
-		public override long Seek(long offset, SeekOrigin origin)
-		{
-			return outputStream.Seek(offset, origin);
-		}
-		
-		/// <summary>
-		/// set the length of the current stream
-		/// </summary>
-		public override void SetLength(long val)
-		{
-			outputStream.SetLength(val);
-		}
-		
-		/// <summary>
-		/// Read a byte from the stream and advance the position within the stream 
-		/// by one byte or returns -1 if at the end of the stream.
-		/// </summary>
-		/// <returns>The byte value or -1 if at end of stream</returns>
-		public override int ReadByte()
-		{
-			return outputStream.ReadByte();
-		}
-		
-		/// <summary>
-		/// read bytes from the current stream and advance the position within the 
-		/// stream by the number of bytes read.
-		/// </summary>
-		/// <returns>The total number of bytes read, or zero if at the end of the stream</returns>
-		public override int Read(byte[] b, int off, int len)
-		{
-			return outputStream.Read(b, off, len);
-		}
-
-		/// <summary>
-		/// All buffered data is written to destination
-		/// </summary>		
-		public override void Flush()
-		{
-			outputStream.Flush();
-		}
-				
-		/// <summary>
-		/// Construct TarOutputStream using default block factor
-		/// </summary>
-		/// <param name="outputStream">stream to write to</param>
-		public TarOutputStream(Stream outputStream) : this(outputStream, TarBuffer.DefaultBlockFactor)
-		{
-		}
-		
-		/// <summary>
-		/// Construct TarOutputStream with user specified block factor
-		/// </summary>
-		/// <param name="outputStream">stream to write to</param>
-		/// <param name="blockFactor">blocking factor</param>
-		public TarOutputStream(Stream outputStream, int blockFactor)
-		{
-			this.outputStream = outputStream;
-			this.buffer       = TarBuffer.CreateOutputTarBuffer(outputStream, blockFactor);
-			
-			this.debug        = false;
-			this.assemLen     = 0;
-			this.assemBuf     = new byte[TarBuffer.BlockSize];
-			this.blockBuf     = new byte[TarBuffer.BlockSize];
-		}
-		
-		/// <summary>
-		/// Ends the TAR archive without closing the underlying OutputStream.
-		/// The result is that the EOF record of nulls is written.
-		/// </summary>
-		public void Finish()
-		{
-			this.WriteEOFRecord();
-		}
-		
-		/// <summary>
-		/// Ends the TAR archive and closes the underlying OutputStream.
-		/// This means that finish() is called followed by calling the
-		/// TarBuffer's close().
-		/// </summary>
-		public override void Close()
-		{
-			this.Finish();
-			this.buffer.Close();
-		}
-		
-		/// <summary>
-		/// Get the record size being used by this stream's TarBuffer.
-		/// </summary>
-		/// <returns>
-		/// The TarBuffer record size.
-		/// </returns>
-		public int GetRecordSize()
-		{
-			return this.buffer.GetRecordSize();
-		}
-		
-		/// <summary>
-		/// Put an entry on the output stream. This writes the entry's
-		/// header and positions the output stream for writing
-		/// the contents of the entry. Once this method is called, the
-		/// stream is ready for calls to write() to write the entry's
-		/// contents. Once the contents are written, closeEntry()
-		/// <B>MUST</B> be called to ensure that all buffered data
-		/// is completely written to the output stream.
-		/// </summary>
-		/// <param name="entry">
-		/// The TarEntry to be written to the archive.
-		/// </param>
-		public void PutNextEntry(TarEntry entry)
-		{
-			if (entry.TarHeader.Name.Length >= TarHeader.NAMELEN) {
-				TarHeader longHeader = new TarHeader();
-				longHeader.TypeFlag = TarHeader.LF_GNU_LONGNAME;
-				longHeader.Name = longHeader.Name + "././@LongLink";
-				longHeader.UserId = 0;
-				longHeader.GroupId = 0;
-				longHeader.GroupName = "";
-				longHeader.UserName = "";
-				longHeader.LinkName = "";
-
-				longHeader.Size = entry.TarHeader.Name.Length;
-
-				longHeader.WriteHeader(this.blockBuf);
-				this.buffer.WriteBlock(this.blockBuf);  // Add special long filename header block
-
-				int nameCharIndex = 0;
-
-				while (nameCharIndex < entry.TarHeader.Name.Length) {
-					Array.Clear(blockBuf, 0, blockBuf.Length);
-					TarHeader.GetAsciiBytes(entry.TarHeader.Name, nameCharIndex, this.blockBuf, 0, TarBuffer.BlockSize);
-					nameCharIndex += TarBuffer.BlockSize;
-					this.buffer.WriteBlock(this.blockBuf);
-				}
-			}
-			
-			entry.WriteEntryHeader(this.blockBuf);
-			this.buffer.WriteBlock(this.blockBuf);
-			
-			this.currBytes = 0;
-			
-			this.currSize = entry.IsDirectory ? 0 : entry.Size;
-		}
-		
-		/// <summary>
-		/// Close an entry. This method MUST be called for all file
-		/// entries that contain data. The reason is that we must
-		/// buffer data written to the stream in order to satisfy
-		/// the buffer's block based writes. Thus, there may be
-		/// data fragments still being assembled that must be written
-		/// to the output stream before this entry is closed and the
-		/// next entry written.
-		/// </summary>
-		public void CloseEntry()
-		{
-			if (this.assemLen > 0) {
-				for (int i = this.assemLen; i < this.assemBuf.Length; ++i) {
-					this.assemBuf[i] = 0;
-				}
-				
-				this.buffer.WriteBlock(this.assemBuf);
-				
-				this.currBytes += this.assemLen;
-				this.assemLen = 0;
-			}
-			
-			if (this.currBytes < this.currSize) {
-				throw new TarException("entry closed at '" + this.currBytes + "' before the '" + this.currSize + "' bytes specified in the header were written");
-			}
-		}
-		
-		/// <summary>
-		/// Writes a byte to the current tar archive entry.
-		/// This method simply calls Write(byte[], int, int).
-		/// </summary>
-		/// <param name="b">
-		/// The byte to be written.
-		/// </param>
-		public override void WriteByte(byte b)
-		{
-			this.Write(new byte[] { b }, 0, 1);
-		}
-		
-		/// <summary>
-		/// Writes bytes to the current tar archive entry. This method
-		/// is aware of the current entry and will throw an exception if
-		/// you attempt to write bytes past the length specified for the
-		/// current entry. The method is also (painfully) aware of the
-		/// record buffering required by TarBuffer, and manages buffers
-		/// that are not a multiple of recordsize in length, including
-		/// assembling records from small buffers.
-		/// </summary>
-		/// <param name = "wBuf">
-		/// The buffer to write to the archive.
-		/// </param>
-		/// <param name = "wOffset">
-		/// The offset in the buffer from which to get bytes.
-		/// </param>
-		/// <param name = "numToWrite">
-		/// The number of bytes to write.
-		/// </param>
-		public override void Write(byte[] wBuf, int wOffset, int numToWrite)
-		{
-			if (wBuf == null) {
-				throw new ArgumentNullException("TarOutputStream.Write buffer null");
-			}
-			
-			if ((this.currBytes + numToWrite) > this.currSize) {
-				throw new ArgumentOutOfRangeException("request to write '" + numToWrite + "' bytes exceeds size in header of '" + this.currSize + "' bytes");
-			}
-			
-			//
-			// We have to deal with assembly!!!
-			// The programmer can be writing little 32 byte chunks for all
-			// we know, and we must assemble complete blocks for writing.
-			// TODO  REVIEW Maybe this should be in TarBuffer? Could that help to
-			//        eliminate some of the buffer copying.
-			//
-			if (this.assemLen > 0) {
-				if ((this.assemLen + numToWrite ) >= this.blockBuf.Length) {
-					int aLen = this.blockBuf.Length - this.assemLen;
-					
-					Array.Copy(this.assemBuf, 0, this.blockBuf, 0, this.assemLen);
-					Array.Copy(wBuf, wOffset, this.blockBuf, this.assemLen, aLen);
-					
-					this.buffer.WriteBlock(this.blockBuf);
-					
-					this.currBytes += this.blockBuf.Length;
-					
-					wOffset    += aLen;
-					numToWrite -= aLen;
-					
-					this.assemLen = 0;
-				} else {					// ( (this.assemLen + numToWrite ) < this.blockBuf.length )
-					Array.Copy(wBuf, wOffset, this.assemBuf, this.assemLen, numToWrite);
-					wOffset       += numToWrite;
-					this.assemLen += numToWrite;
-					numToWrite -= numToWrite;
-				}
-			}
-			
-			//
-			// When we get here we have EITHER:
-			//   o An empty "assemble" buffer.
-			//   o No bytes to write (numToWrite == 0)
-			//
-			while (numToWrite > 0) {
-				if (numToWrite < this.blockBuf.Length) {
-					Array.Copy(wBuf, wOffset, this.assemBuf, this.assemLen, numToWrite);
-					this.assemLen += numToWrite;
-					break;
-				}
-				
-				this.buffer.WriteBlock(wBuf, wOffset);
-				
-				int num = this.blockBuf.Length;
-				this.currBytes += num;
-				numToWrite     -= num;
-				wOffset        += num;
-			}
-		}
-		
-		/// <summary>
-		/// Write an EOF (end of archive) record to the tar archive.
-		/// An EOF record consists of a record of all zeros.
-		/// </summary>
-		void WriteEOFRecord()
-		{
-			Array.Clear(blockBuf, 0, blockBuf.Length);
-			this.buffer.WriteBlock(this.blockBuf);
-		}
-	}
-}
-
-/* The original Java file had this header:
-	** Authored by Timothy Gerard Endres
-	** <mailto:time@gjt.org>  <http://www.trustice.com>
-	**
-	** This work has been placed into the public domain.
-	** You may use this work in any way and for any purpose you wish.
-	**
-	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
-	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
-	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
-	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
-	** REDISTRIBUTION OF THIS SOFTWARE.
-	**
-	*/
+// TarOutputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+using System.Text;
+
+namespace ICSharpCode.SharpZipLib.Tar 
+{
+	
+	/// <summary>
+	/// The TarOutputStream writes a UNIX tar archive as an OutputStream.
+	/// Methods are provided to put entries, and then write their contents
+	/// by writing to this stream using write().
+	/// </summary>
+	/// public
+	public class TarOutputStream : Stream
+	{
+		/// <summary>
+		/// flag indicating debugging code should be activated or not
+		/// </summary>
+		protected bool      debug;
+		
+		/// <summary>
+		/// Size for the current entry
+		/// </summary>
+		protected long      currSize;
+
+		/// <summary>
+		/// bytes written for this entry so far
+		/// </summary>
+		protected long       currBytes;
+		
+		/// <summary>
+		/// single block working buffer 
+		/// </summary>
+		protected byte[]    blockBuf;
+
+		/// <summary>
+		/// current 'Assembly' buffer length
+		/// </summary>		
+		protected int       assemLen;
+		
+		/// <summary>
+		/// 'Assembly' buffer used to assmble data before writing
+		/// </summary>
+		protected byte[]    assemBuf;
+		
+		/// <summary>
+		/// TarBuffer used to provide correct blocking factor
+		/// </summary>
+		protected TarBuffer buffer;
+		
+		/// <summary>
+		/// the destination stream for the archive contents
+		/// </summary>
+		protected Stream    outputStream;
+		
+		/// <summary>
+		/// true if the stream supports reading; otherwise, false.
+		/// </summary>
+		public override bool CanRead {
+			get {
+				return outputStream.CanRead;
+			}
+		}
+		
+		/// <summary>
+		/// true if the stream supports seeking; otherwise, false.
+		/// </summary>
+		public override bool CanSeek {
+			get {
+				return outputStream.CanSeek;
+			}
+		}
+		
+		/// <summary>
+		/// true if stream supports writing; otherwise, false.
+		/// </summary>
+		public override bool CanWrite {
+			get {
+				return outputStream.CanWrite;
+			}
+		}
+		
+		/// <summary>
+		/// length of stream in bytes
+		/// </summary>
+		public override long Length {
+			get {
+				return outputStream.Length;
+			}
+		}
+		
+		/// <summary>
+		/// gets or sets the position within the current stream.
+		/// </summary>
+		public override long Position {
+			get {
+				return outputStream.Position;
+			}
+			set {
+				outputStream.Position = value;
+			}
+		}
+		
+		/// <summary>
+		/// set the position within the current stream
+		/// </summary>
+		public override long Seek(long offset, SeekOrigin origin)
+		{
+			return outputStream.Seek(offset, origin);
+		}
+		
+		/// <summary>
+		/// set the length of the current stream
+		/// </summary>
+		public override void SetLength(long val)
+		{
+			outputStream.SetLength(val);
+		}
+		
+		/// <summary>
+		/// Read a byte from the stream and advance the position within the stream 
+		/// by one byte or returns -1 if at the end of the stream.
+		/// </summary>
+		/// <returns>The byte value or -1 if at end of stream</returns>
+		public override int ReadByte()
+		{
+			return outputStream.ReadByte();
+		}
+		
+		/// <summary>
+		/// read bytes from the current stream and advance the position within the 
+		/// stream by the number of bytes read.
+		/// </summary>
+		/// <returns>The total number of bytes read, or zero if at the end of the stream</returns>
+		public override int Read(byte[] b, int off, int len)
+		{
+			return outputStream.Read(b, off, len);
+		}
+
+		/// <summary>
+		/// All buffered data is written to destination
+		/// </summary>		
+		public override void Flush()
+		{
+			outputStream.Flush();
+		}
+				
+		/// <summary>
+		/// Construct TarOutputStream using default block factor
+		/// </summary>
+		/// <param name="outputStream">stream to write to</param>
+		public TarOutputStream(Stream outputStream) : this(outputStream, TarBuffer.DefaultBlockFactor)
+		{
+		}
+		
+		/// <summary>
+		/// Construct TarOutputStream with user specified block factor
+		/// </summary>
+		/// <param name="outputStream">stream to write to</param>
+		/// <param name="blockFactor">blocking factor</param>
+		public TarOutputStream(Stream outputStream, int blockFactor)
+		{
+			this.outputStream = outputStream;
+			this.buffer       = TarBuffer.CreateOutputTarBuffer(outputStream, blockFactor);
+			
+			this.debug        = false;
+			this.assemLen     = 0;
+			this.assemBuf     = new byte[TarBuffer.BlockSize];
+			this.blockBuf     = new byte[TarBuffer.BlockSize];
+		}
+		
+		/// <summary>
+		/// Ends the TAR archive without closing the underlying OutputStream.
+		/// The result is that the EOF record of nulls is written.
+		/// </summary>
+		public void Finish()
+		{
+			this.WriteEOFRecord();
+		}
+		
+		/// <summary>
+		/// Ends the TAR archive and closes the underlying OutputStream.
+		/// This means that finish() is called followed by calling the
+		/// TarBuffer's close().
+		/// </summary>
+		public override void Close()
+		{
+			this.Finish();
+			this.buffer.Close();
+		}
+		
+		/// <summary>
+		/// Get the record size being used by this stream's TarBuffer.
+		/// </summary>
+		/// <returns>
+		/// The TarBuffer record size.
+		/// </returns>
+		public int GetRecordSize()
+		{
+			return this.buffer.GetRecordSize();
+		}
+		
+		/// <summary>
+		/// Put an entry on the output stream. This writes the entry's
+		/// header and positions the output stream for writing
+		/// the contents of the entry. Once this method is called, the
+		/// stream is ready for calls to write() to write the entry's
+		/// contents. Once the contents are written, closeEntry()
+		/// <B>MUST</B> be called to ensure that all buffered data
+		/// is completely written to the output stream.
+		/// </summary>
+		/// <param name="entry">
+		/// The TarEntry to be written to the archive.
+		/// </param>
+		public void PutNextEntry(TarEntry entry)
+		{
+			if (entry.TarHeader.Name.Length >= TarHeader.NAMELEN) {
+				TarHeader longHeader = new TarHeader();
+				longHeader.TypeFlag = TarHeader.LF_GNU_LONGNAME;
+				longHeader.Name = longHeader.Name + "././@LongLink";
+				longHeader.UserId = 0;
+				longHeader.GroupId = 0;
+				longHeader.GroupName = "";
+				longHeader.UserName = "";
+				longHeader.LinkName = "";
+
+				longHeader.Size = entry.TarHeader.Name.Length;
+
+				longHeader.WriteHeader(this.blockBuf);
+				this.buffer.WriteBlock(this.blockBuf);  // Add special long filename header block
+
+				int nameCharIndex = 0;
+
+				while (nameCharIndex < entry.TarHeader.Name.Length) {
+					Array.Clear(blockBuf, 0, blockBuf.Length);
+					TarHeader.GetAsciiBytes(entry.TarHeader.Name, nameCharIndex, this.blockBuf, 0, TarBuffer.BlockSize);
+					nameCharIndex += TarBuffer.BlockSize;
+					this.buffer.WriteBlock(this.blockBuf);
+				}
+			}
+			
+			entry.WriteEntryHeader(this.blockBuf);
+			this.buffer.WriteBlock(this.blockBuf);
+			
+			this.currBytes = 0;
+			
+			this.currSize = entry.IsDirectory ? 0 : entry.Size;
+		}
+		
+		/// <summary>
+		/// Close an entry. This method MUST be called for all file
+		/// entries that contain data. The reason is that we must
+		/// buffer data written to the stream in order to satisfy
+		/// the buffer's block based writes. Thus, there may be
+		/// data fragments still being assembled that must be written
+		/// to the output stream before this entry is closed and the
+		/// next entry written.
+		/// </summary>
+		public void CloseEntry()
+		{
+			if (this.assemLen > 0) {
+				for (int i = this.assemLen; i < this.assemBuf.Length; ++i) {
+					this.assemBuf[i] = 0;
+				}
+				
+				this.buffer.WriteBlock(this.assemBuf);
+				
+				this.currBytes += this.assemLen;
+				this.assemLen = 0;
+			}
+			
+			if (this.currBytes < this.currSize) {
+				throw new TarException("entry closed at '" + this.currBytes + "' before the '" + this.currSize + "' bytes specified in the header were written");
+			}
+		}
+		
+		/// <summary>
+		/// Writes a byte to the current tar archive entry.
+		/// This method simply calls Write(byte[], int, int).
+		/// </summary>
+		/// <param name="b">
+		/// The byte to be written.
+		/// </param>
+		public override void WriteByte(byte b)
+		{
+			this.Write(new byte[] { b }, 0, 1);
+		}
+		
+		/// <summary>
+		/// Writes bytes to the current tar archive entry. This method
+		/// is aware of the current entry and will throw an exception if
+		/// you attempt to write bytes past the length specified for the
+		/// current entry. The method is also (painfully) aware of the
+		/// record buffering required by TarBuffer, and manages buffers
+		/// that are not a multiple of recordsize in length, including
+		/// assembling records from small buffers.
+		/// </summary>
+		/// <param name = "wBuf">
+		/// The buffer to write to the archive.
+		/// </param>
+		/// <param name = "wOffset">
+		/// The offset in the buffer from which to get bytes.
+		/// </param>
+		/// <param name = "numToWrite">
+		/// The number of bytes to write.
+		/// </param>
+		public override void Write(byte[] wBuf, int wOffset, int numToWrite)
+		{
+			if (wBuf == null) {
+				throw new ArgumentNullException("TarOutputStream.Write buffer null");
+			}
+			
+			if ((this.currBytes + numToWrite) > this.currSize) {
+				throw new ArgumentOutOfRangeException("request to write '" + numToWrite + "' bytes exceeds size in header of '" + this.currSize + "' bytes");
+			}
+			
+			//
+			// We have to deal with assembly!!!
+			// The programmer can be writing little 32 byte chunks for all
+			// we know, and we must assemble complete blocks for writing.
+			// TODO  REVIEW Maybe this should be in TarBuffer? Could that help to
+			//        eliminate some of the buffer copying.
+			//
+			if (this.assemLen > 0) {
+				if ((this.assemLen + numToWrite ) >= this.blockBuf.Length) {
+					int aLen = this.blockBuf.Length - this.assemLen;
+					
+					Array.Copy(this.assemBuf, 0, this.blockBuf, 0, this.assemLen);
+					Array.Copy(wBuf, wOffset, this.blockBuf, this.assemLen, aLen);
+					
+					this.buffer.WriteBlock(this.blockBuf);
+					
+					this.currBytes += this.blockBuf.Length;
+					
+					wOffset    += aLen;
+					numToWrite -= aLen;
+					
+					this.assemLen = 0;
+				} else {					// ( (this.assemLen + numToWrite ) < this.blockBuf.length )
+					Array.Copy(wBuf, wOffset, this.assemBuf, this.assemLen, numToWrite);
+					wOffset       += numToWrite;
+					this.assemLen += numToWrite;
+					numToWrite -= numToWrite;
+				}
+			}
+			
+			//
+			// When we get here we have EITHER:
+			//   o An empty "assemble" buffer.
+			//   o No bytes to write (numToWrite == 0)
+			//
+			while (numToWrite > 0) {
+				if (numToWrite < this.blockBuf.Length) {
+					Array.Copy(wBuf, wOffset, this.assemBuf, this.assemLen, numToWrite);
+					this.assemLen += numToWrite;
+					break;
+				}
+				
+				this.buffer.WriteBlock(wBuf, wOffset);
+				
+				int num = this.blockBuf.Length;
+				this.currBytes += num;
+				numToWrite     -= num;
+				wOffset        += num;
+			}
+		}
+		
+		/// <summary>
+		/// Write an EOF (end of archive) record to the tar archive.
+		/// An EOF record consists of a record of all zeros.
+		/// </summary>
+		void WriteEOFRecord()
+		{
+			Array.Clear(blockBuf, 0, blockBuf.Length);
+			this.buffer.WriteBlock(this.blockBuf);
+		}
+	}
+}
+
+/* The original Java file had this header:
+	** Authored by Timothy Gerard Endres
+	** <mailto:time@gjt.org>  <http://www.trustice.com>
+	**
+	** This work has been placed into the public domain.
+	** You may use this work in any way and for any purpose you wish.
+	**
+	** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
+	** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
+	** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
+	** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
+	** REDISTRIBUTION OF THIS SOFTWARE.
+	**
+	*/
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Deflater.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Deflater.cs
@@ -1,552 +1,552 @@
-// Deflater.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression
-{
-	
-	/// <summary>
-	/// This is the Deflater class.  The deflater class compresses input
-	/// with the deflate algorithm described in RFC 1951.  It has several
-	/// compression levels and three different strategies described below.
-	///
-	/// This class is <i>not</i> thread safe.  This is inherent in the API, due
-	/// to the split of deflate and setInput.
-	/// 
-	/// author of the original java version : Jochen Hoenicke
-	/// </summary>
-	public class Deflater
-	{
-		/// <summary>
-		/// The best and slowest compression level.  This tries to find very
-		/// long and distant string repetitions.
-		/// </summary>
-		public static  int BEST_COMPRESSION = 9;
-		
-		/// <summary>
-		/// The worst but fastest compression level.
-		/// </summary>
-		public static  int BEST_SPEED = 1;
-		
-		/// <summary>
-		/// The default compression level.
-		/// </summary>
-		public static  int DEFAULT_COMPRESSION = -1;
-		
-		/// <summary>
-		/// This level won't compress at all but output uncompressed blocks.
-		/// </summary>
-		public static  int NO_COMPRESSION = 0;
-				
-		/// <summary>
-		/// The compression method.  This is the only method supported so far.
-		/// There is no need to use this constant at all.
-		/// </summary>
-		public static  int DEFLATED = 8;
-		
-		/*
-		* The Deflater can do the following state transitions:
-			*
-			* (1) -> INIT_STATE   ----> INIT_FINISHING_STATE ---.
-			*        /  | (2)      (5)                         |
-			*       /   v          (5)                         |
-			*   (3)| SETDICT_STATE ---> SETDICT_FINISHING_STATE |(3)
-			*       \   | (3)                 |        ,-------'
-			*        |  |                     | (3)   /
-			*        v  v          (5)        v      v
-			* (1) -> BUSY_STATE   ----> FINISHING_STATE
-			*                                | (6)
-			*                                v
-			*                           FINISHED_STATE
-			*    \_____________________________________/
-			*          | (7)
-			*          v
-			*        CLOSED_STATE
-			*
-			* (1) If we should produce a header we start in INIT_STATE, otherwise
-			*     we start in BUSY_STATE.
-			* (2) A dictionary may be set only when we are in INIT_STATE, then
-			*     we change the state as indicated.
-			* (3) Whether a dictionary is set or not, on the first call of deflate
-			*     we change to BUSY_STATE.
-			* (4) -- intentionally left blank -- :)
-			* (5) FINISHING_STATE is entered, when flush() is called to indicate that
-			*     there is no more INPUT.  There are also states indicating, that
-			*     the header wasn't written yet.
-			* (6) FINISHED_STATE is entered, when everything has been flushed to the
-			*     internal pending output buffer.
-			* (7) At any time (7)
-			*
-			*/
-			
-		private static  int IS_SETDICT              = 0x01;
-		private static  int IS_FLUSHING             = 0x04;
-		private static  int IS_FINISHING            = 0x08;
-		
-		private static  int INIT_STATE              = 0x00;
-		private static  int SETDICT_STATE           = 0x01;
-		//		private static  int INIT_FINISHING_STATE    = 0x08;
-		//		private static  int SETDICT_FINISHING_STATE = 0x09;
-		private static  int BUSY_STATE              = 0x10;
-		private static  int FLUSHING_STATE          = 0x14;
-		private static  int FINISHING_STATE         = 0x1c;
-		private static  int FINISHED_STATE          = 0x1e;
-		private static  int CLOSED_STATE            = 0x7f;
-		
-		/// <summary>
-		/// Compression level.
-		/// </summary>
-		private int level;
-		
-		/// <summary>
-		/// If true no Zlib/RFC1950 headers or footers are generated
-		/// </summary>
-		private bool noZlibHeaderOrFooter;
-		
-		/// <summary>
-		/// The current state.
-		/// </summary>
-		private int state;
-		
-		/// <summary>
-		/// The total bytes of output written.
-		/// </summary>
-		private long totalOut;
-		
-		/// <summary>
-		/// The pending output.
-		/// </summary>
-		private DeflaterPending pending;
-		
-		/// <summary>
-		/// The deflater engine.
-		/// </summary>
-		private DeflaterEngine engine;
-		
-		/// <summary>
-		/// Creates a new deflater with default compression level.
-		/// </summary>
-		public Deflater() : this(DEFAULT_COMPRESSION, false)
-		{
-			
-		}
-		
-		/// <summary>
-		/// Creates a new deflater with given compression level.
-		/// </summary>
-		/// <param name="lvl">
-		/// the compression level, a value between NO_COMPRESSION
-		/// and BEST_COMPRESSION, or DEFAULT_COMPRESSION.
-		/// </param>
-		/// <exception cref="System.ArgumentOutOfRangeException">if lvl is out of range.</exception>
-		public Deflater(int lvl) : this(lvl, false)
-		{
-			
-		}
-		
-		/// <summary>
-		/// Creates a new deflater with given compression level.
-		/// </summary>
-		/// <param name="level">
-		/// the compression level, a value between NO_COMPRESSION
-		/// and BEST_COMPRESSION.
-		/// </param>
-		/// <param name="noZlibHeaderOrFooter">
-		/// true, if we should suppress the Zlib/RFC1950 header at the
-		/// beginning and the adler checksum at the end of the output.  This is
-		/// useful for the GZIP/PKZIP formats.
-		/// </param>
-		/// <exception cref="System.ArgumentOutOfRangeException">if lvl is out of range.</exception>
-		public Deflater(int level, bool noZlibHeaderOrFooter)
-		{
-			if (level == DEFAULT_COMPRESSION) {
-				level = 6;
-			} else if (level < NO_COMPRESSION || level > BEST_COMPRESSION) {
-				throw new ArgumentOutOfRangeException("level");
-			}
-			
-			pending = new DeflaterPending();
-			engine = new DeflaterEngine(pending);
-			this.noZlibHeaderOrFooter = noZlibHeaderOrFooter;
-			SetStrategy(DeflateStrategy.Default);
-			SetLevel(level);
-			Reset();
-		}
-		
-		
-		/// <summary>
-		/// Resets the deflater.  The deflater acts afterwards as if it was
-		/// just created with the same compression level and strategy as it
-		/// had before.
-		/// </summary>
-		public void Reset()
-		{
-			state = (noZlibHeaderOrFooter ? BUSY_STATE : INIT_STATE);
-			totalOut = 0;
-			pending.Reset();
-			engine.Reset();
-		}
-		
-		/// <summary>
-		/// Gets the current adler checksum of the data that was processed so far.
-		/// </summary>
-		public int Adler {
-			get {
-				return engine.Adler;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the number of input bytes processed so far.
-		/// </summary>
-		public int TotalIn {
-			get {
-				return engine.TotalIn;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the number of output bytes so far.
-		/// </summary>
-		public long TotalOut {
-			get {
-				return totalOut;
-			}
-		}
-		
-		/// <summary>
-		/// Flushes the current input block.  Further calls to deflate() will
-		/// produce enough output to inflate everything in the current input
-		/// block.  This is not part of Sun's JDK so I have made it package
-		/// private.  It is used by DeflaterOutputStream to implement
-		/// flush().
-		/// </summary>
-		public void Flush() 
-		{
-			state |= IS_FLUSHING;
-		}
-		
-		/// <summary>
-		/// Finishes the deflater with the current input block.  It is an error
-		/// to give more input after this method was called.  This method must
-		/// be called to force all bytes to be flushed.
-		/// </summary>
-		public void Finish() 
-		{
-			state |= IS_FLUSHING | IS_FINISHING;
-		}
-		
-		/// <summary>
-		/// Returns true if the stream was finished and no more output bytes
-		/// are available.
-		/// </summary>
-		public bool IsFinished {
-			get {
-				return state == FINISHED_STATE && pending.IsFlushed;
-			}
-		}
-		
-		/// <summary>
-		/// Returns true, if the input buffer is empty.
-		/// You should then call setInput(). 
-		/// NOTE: This method can also return true when the stream
-		/// was finished.
-		/// </summary>
-		public bool IsNeedingInput {
-			get {
-				return engine.NeedsInput();
-			}
-		}
-		
-		/// <summary>
-		/// Sets the data which should be compressed next.  This should be only
-		/// called when needsInput indicates that more input is needed.
-		/// If you call setInput when needsInput() returns false, the
-		/// previous input that is still pending will be thrown away.
-		/// The given byte array should not be changed, before needsInput() returns
-		/// true again.
-		/// This call is equivalent to <code>setInput(input, 0, input.length)</code>.
-		/// </summary>
-		/// <param name="input">
-		/// the buffer containing the input data.
-		/// </param>
-		/// <exception cref="System.InvalidOperationException">
-		/// if the buffer was finished() or ended().
-		/// </exception>
-		public void SetInput(byte[] input)
-		{
-			SetInput(input, 0, input.Length);
-		}
-		
-		/// <summary>
-		/// Sets the data which should be compressed next.  This should be
-		/// only called when needsInput indicates that more input is needed.
-		/// The given byte array should not be changed, before needsInput() returns
-		/// true again.
-		/// </summary>
-		/// <param name="input">
-		/// the buffer containing the input data.
-		/// </param>
-		/// <param name="off">
-		/// the start of the data.
-		/// </param>
-		/// <param name="len">
-		/// the length of the data.
-		/// </param>
-		/// <exception cref="System.InvalidOperationException">
-		/// if the buffer was finished() or ended() or if previous input is still pending.
-		/// </exception>
-		public void SetInput(byte[] input, int off, int len)
-		{
-			if ((state & IS_FINISHING) != 0) {
-				throw new InvalidOperationException("finish()/end() already called");
-			}
-			engine.SetInput(input, off, len);
-		}
-		
-		/// <summary>
-		/// Sets the compression level.  There is no guarantee of the exact
-		/// position of the change, but if you call this when needsInput is
-		/// true the change of compression level will occur somewhere near
-		/// before the end of the so far given input.
-		/// </summary>
-		/// <param name="lvl">
-		/// the new compression level.
-		/// </param>
-		public void SetLevel(int lvl)
-		{
-			if (lvl == DEFAULT_COMPRESSION) {
-				lvl = 6;
-			} else if (lvl < NO_COMPRESSION || lvl > BEST_COMPRESSION) {
-				throw new ArgumentOutOfRangeException("lvl");
-			}
-			
-			if (level != lvl) {
-				level = lvl;
-				engine.SetLevel(lvl);
-			}
-		}
-		
-		/// <summary>
-		/// Get current compression level
-		/// </summary>
-		/// <returns>Returns the current compression level</returns>
-		public int GetLevel() {
-			return level;
-		}
-		
-		/// <summary>
-		/// Sets the compression strategy. Strategy is one of
-		/// DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED.  For the exact
-		/// position where the strategy is changed, the same as for
-		/// setLevel() applies.
-		/// </summary>
-		/// <param name="strategy">
-		/// The new compression strategy.
-		/// </param>
-		public void SetStrategy(DeflateStrategy strategy)
-		{
-			engine.Strategy = strategy;
-		}
-		
-		/// <summary>
-		/// Deflates the current input block with to the given array.
-		/// </summary>
-		/// <param name="output">
-		/// The buffer where compressed data is stored
-		/// </param>
-		/// <returns>
-		/// The number of compressed bytes added to the output, or 0 if either
-		/// needsInput() or finished() returns true or length is zero.
-		/// </returns>
-		public int Deflate(byte[] output)
-		{
-			return Deflate(output, 0, output.Length);
-		}
-		
-		/// <summary>
-		/// Deflates the current input block to the given array.
-		/// </summary>
-		/// <param name="output">
-		/// Buffer to store the compressed data.
-		/// </param>
-		/// <param name="offset">
-		/// Offset into the output array.
-		/// </param>
-		/// <param name="length">
-		/// The maximum number of bytes that may be stored.
-		/// </param>
-		/// <returns>
-		/// The number of compressed bytes added to the output, or 0 if either
-		/// needsInput() or finished() returns true or length is zero.
-		/// </returns>
-		/// <exception cref="System.InvalidOperationException">
-		/// If end() was previously called.
-		/// </exception>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// If offset and/or length don't match the array length.
-		/// </exception>
-		public int Deflate(byte[] output, int offset, int length)
-		{
-			int origLength = length;
-			
-			if (state == CLOSED_STATE) {
-				throw new InvalidOperationException("Deflater closed");
-			}
-			
-			if (state < BUSY_STATE) {
-				/* output header */
-				int header = (DEFLATED +
-					((DeflaterConstants.MAX_WBITS - 8) << 4)) << 8;
-				int level_flags = (level - 1) >> 1;
-				if (level_flags < 0 || level_flags > 3) {
-					level_flags = 3;
-				}
-				header |= level_flags << 6;
-				if ((state & IS_SETDICT) != 0) {
-					/* Dictionary was set */
-					header |= DeflaterConstants.PRESET_DICT;
-				}
-				header += 31 - (header % 31);
-				
-				
-				pending.WriteShortMSB(header);
-				if ((state & IS_SETDICT) != 0) {
-					int chksum = engine.Adler;
-					engine.ResetAdler();
-					pending.WriteShortMSB(chksum >> 16);
-					pending.WriteShortMSB(chksum & 0xffff);
-				}
-				
-				state = BUSY_STATE | (state & (IS_FLUSHING | IS_FINISHING));
-			}
-			
-			for (;;) {
-				int count = pending.Flush(output, offset, length);
-				offset   += count;
-				totalOut += count;
-				length   -= count;
-				
-				if (length == 0 || state == FINISHED_STATE) {
-					break;
-				}
-				
-				if (!engine.Deflate((state & IS_FLUSHING) != 0, (state & IS_FINISHING) != 0)) {
-					if (state == BUSY_STATE) {
-						/* We need more input now */
-						return origLength - length;
-					} else if (state == FLUSHING_STATE) {
-						if (level != NO_COMPRESSION) {
-							/* We have to supply some lookahead.  8 bit lookahead
-							 * is needed by the zlib inflater, and we must fill
-							 * the next byte, so that all bits are flushed.
-							 */
-							int neededbits = 8 + ((-pending.BitCount) & 7);
-							while (neededbits > 0) {
-								/* write a static tree block consisting solely of
-								 * an EOF:
-								 */
-								pending.WriteBits(2, 10);
-								neededbits -= 10;
-							}
-						}
-						state = BUSY_STATE;
-					} else if (state == FINISHING_STATE) {
-						pending.AlignToByte();
-
-						// Compressed data is complete.  Write footer information if required.
-						if (!noZlibHeaderOrFooter) {
-							int adler = engine.Adler;
-							pending.WriteShortMSB(adler >> 16);
-							pending.WriteShortMSB(adler & 0xffff);
-						}
-						state = FINISHED_STATE;
-					}
-				}
-			}
-			return origLength - length;
-		}
-		
-		/// <summary>
-		/// Sets the dictionary which should be used in the deflate process.
-		/// This call is equivalent to <code>setDictionary(dict, 0, dict.Length)</code>.
-		/// </summary>
-		/// <param name="dict">
-		/// the dictionary.
-		/// </param>
-		/// <exception cref="System.InvalidOperationException">
-		/// if setInput () or deflate () were already called or another dictionary was already set.
-		/// </exception>
-		public void SetDictionary(byte[] dict)
-		{
-			SetDictionary(dict, 0, dict.Length);
-		}
-		
-		/// <summary>
-		/// Sets the dictionary which should be used in the deflate process.
-		/// The dictionary is a byte array containing strings that are
-		/// likely to occur in the data which should be compressed.  The
-		/// dictionary is not stored in the compressed output, only a
-		/// checksum.  To decompress the output you need to supply the same
-		/// dictionary again.
-		/// </summary>
-		/// <param name="dict">
-		/// The dictionary data
-		/// </param>
-		/// <param name="offset">
-		/// An offset into the dictionary.
-		/// </param>
-		/// <param name="length">
-		/// The length of the dictionary data to use
-		/// </param>
-		/// <exception cref="System.InvalidOperationException">
-		/// If setInput () or deflate () were already called or another dictionary was already set.
-		/// </exception>
-		public void SetDictionary(byte[] dict, int offset, int length)
-		{
-			if (state != INIT_STATE) {
-				throw new InvalidOperationException();
-			}
-			
-			state = SETDICT_STATE;
-			engine.SetDictionary(dict, offset, length);
-		}
-	}
-}
+// Deflater.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression
+{
+	
+	/// <summary>
+	/// This is the Deflater class.  The deflater class compresses input
+	/// with the deflate algorithm described in RFC 1951.  It has several
+	/// compression levels and three different strategies described below.
+	///
+	/// This class is <i>not</i> thread safe.  This is inherent in the API, due
+	/// to the split of deflate and setInput.
+	/// 
+	/// author of the original java version : Jochen Hoenicke
+	/// </summary>
+	public class Deflater
+	{
+		/// <summary>
+		/// The best and slowest compression level.  This tries to find very
+		/// long and distant string repetitions.
+		/// </summary>
+		public static  int BEST_COMPRESSION = 9;
+		
+		/// <summary>
+		/// The worst but fastest compression level.
+		/// </summary>
+		public static  int BEST_SPEED = 1;
+		
+		/// <summary>
+		/// The default compression level.
+		/// </summary>
+		public static  int DEFAULT_COMPRESSION = -1;
+		
+		/// <summary>
+		/// This level won't compress at all but output uncompressed blocks.
+		/// </summary>
+		public static  int NO_COMPRESSION = 0;
+				
+		/// <summary>
+		/// The compression method.  This is the only method supported so far.
+		/// There is no need to use this constant at all.
+		/// </summary>
+		public static  int DEFLATED = 8;
+		
+		/*
+		* The Deflater can do the following state transitions:
+			*
+			* (1) -> INIT_STATE   ----> INIT_FINISHING_STATE ---.
+			*        /  | (2)      (5)                         |
+			*       /   v          (5)                         |
+			*   (3)| SETDICT_STATE ---> SETDICT_FINISHING_STATE |(3)
+			*       \   | (3)                 |        ,-------'
+			*        |  |                     | (3)   /
+			*        v  v          (5)        v      v
+			* (1) -> BUSY_STATE   ----> FINISHING_STATE
+			*                                | (6)
+			*                                v
+			*                           FINISHED_STATE
+			*    \_____________________________________/
+			*          | (7)
+			*          v
+			*        CLOSED_STATE
+			*
+			* (1) If we should produce a header we start in INIT_STATE, otherwise
+			*     we start in BUSY_STATE.
+			* (2) A dictionary may be set only when we are in INIT_STATE, then
+			*     we change the state as indicated.
+			* (3) Whether a dictionary is set or not, on the first call of deflate
+			*     we change to BUSY_STATE.
+			* (4) -- intentionally left blank -- :)
+			* (5) FINISHING_STATE is entered, when flush() is called to indicate that
+			*     there is no more INPUT.  There are also states indicating, that
+			*     the header wasn't written yet.
+			* (6) FINISHED_STATE is entered, when everything has been flushed to the
+			*     internal pending output buffer.
+			* (7) At any time (7)
+			*
+			*/
+			
+		private static  int IS_SETDICT              = 0x01;
+		private static  int IS_FLUSHING             = 0x04;
+		private static  int IS_FINISHING            = 0x08;
+		
+		private static  int INIT_STATE              = 0x00;
+		private static  int SETDICT_STATE           = 0x01;
+		//		private static  int INIT_FINISHING_STATE    = 0x08;
+		//		private static  int SETDICT_FINISHING_STATE = 0x09;
+		private static  int BUSY_STATE              = 0x10;
+		private static  int FLUSHING_STATE          = 0x14;
+		private static  int FINISHING_STATE         = 0x1c;
+		private static  int FINISHED_STATE          = 0x1e;
+		private static  int CLOSED_STATE            = 0x7f;
+		
+		/// <summary>
+		/// Compression level.
+		/// </summary>
+		private int level;
+		
+		/// <summary>
+		/// If true no Zlib/RFC1950 headers or footers are generated
+		/// </summary>
+		private bool noZlibHeaderOrFooter;
+		
+		/// <summary>
+		/// The current state.
+		/// </summary>
+		private int state;
+		
+		/// <summary>
+		/// The total bytes of output written.
+		/// </summary>
+		private long totalOut;
+		
+		/// <summary>
+		/// The pending output.
+		/// </summary>
+		private DeflaterPending pending;
+		
+		/// <summary>
+		/// The deflater engine.
+		/// </summary>
+		private DeflaterEngine engine;
+		
+		/// <summary>
+		/// Creates a new deflater with default compression level.
+		/// </summary>
+		public Deflater() : this(DEFAULT_COMPRESSION, false)
+		{
+			
+		}
+		
+		/// <summary>
+		/// Creates a new deflater with given compression level.
+		/// </summary>
+		/// <param name="lvl">
+		/// the compression level, a value between NO_COMPRESSION
+		/// and BEST_COMPRESSION, or DEFAULT_COMPRESSION.
+		/// </param>
+		/// <exception cref="System.ArgumentOutOfRangeException">if lvl is out of range.</exception>
+		public Deflater(int lvl) : this(lvl, false)
+		{
+			
+		}
+		
+		/// <summary>
+		/// Creates a new deflater with given compression level.
+		/// </summary>
+		/// <param name="level">
+		/// the compression level, a value between NO_COMPRESSION
+		/// and BEST_COMPRESSION.
+		/// </param>
+		/// <param name="noZlibHeaderOrFooter">
+		/// true, if we should suppress the Zlib/RFC1950 header at the
+		/// beginning and the adler checksum at the end of the output.  This is
+		/// useful for the GZIP/PKZIP formats.
+		/// </param>
+		/// <exception cref="System.ArgumentOutOfRangeException">if lvl is out of range.</exception>
+		public Deflater(int level, bool noZlibHeaderOrFooter)
+		{
+			if (level == DEFAULT_COMPRESSION) {
+				level = 6;
+			} else if (level < NO_COMPRESSION || level > BEST_COMPRESSION) {
+				throw new ArgumentOutOfRangeException("level");
+			}
+			
+			pending = new DeflaterPending();
+			engine = new DeflaterEngine(pending);
+			this.noZlibHeaderOrFooter = noZlibHeaderOrFooter;
+			SetStrategy(DeflateStrategy.Default);
+			SetLevel(level);
+			Reset();
+		}
+		
+		
+		/// <summary>
+		/// Resets the deflater.  The deflater acts afterwards as if it was
+		/// just created with the same compression level and strategy as it
+		/// had before.
+		/// </summary>
+		public void Reset()
+		{
+			state = (noZlibHeaderOrFooter ? BUSY_STATE : INIT_STATE);
+			totalOut = 0;
+			pending.Reset();
+			engine.Reset();
+		}
+		
+		/// <summary>
+		/// Gets the current adler checksum of the data that was processed so far.
+		/// </summary>
+		public int Adler {
+			get {
+				return engine.Adler;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the number of input bytes processed so far.
+		/// </summary>
+		public int TotalIn {
+			get {
+				return engine.TotalIn;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the number of output bytes so far.
+		/// </summary>
+		public long TotalOut {
+			get {
+				return totalOut;
+			}
+		}
+		
+		/// <summary>
+		/// Flushes the current input block.  Further calls to deflate() will
+		/// produce enough output to inflate everything in the current input
+		/// block.  This is not part of Sun's JDK so I have made it package
+		/// private.  It is used by DeflaterOutputStream to implement
+		/// flush().
+		/// </summary>
+		public void Flush() 
+		{
+			state |= IS_FLUSHING;
+		}
+		
+		/// <summary>
+		/// Finishes the deflater with the current input block.  It is an error
+		/// to give more input after this method was called.  This method must
+		/// be called to force all bytes to be flushed.
+		/// </summary>
+		public void Finish() 
+		{
+			state |= IS_FLUSHING | IS_FINISHING;
+		}
+		
+		/// <summary>
+		/// Returns true if the stream was finished and no more output bytes
+		/// are available.
+		/// </summary>
+		public bool IsFinished {
+			get {
+				return state == FINISHED_STATE && pending.IsFlushed;
+			}
+		}
+		
+		/// <summary>
+		/// Returns true, if the input buffer is empty.
+		/// You should then call setInput(). 
+		/// NOTE: This method can also return true when the stream
+		/// was finished.
+		/// </summary>
+		public bool IsNeedingInput {
+			get {
+				return engine.NeedsInput();
+			}
+		}
+		
+		/// <summary>
+		/// Sets the data which should be compressed next.  This should be only
+		/// called when needsInput indicates that more input is needed.
+		/// If you call setInput when needsInput() returns false, the
+		/// previous input that is still pending will be thrown away.
+		/// The given byte array should not be changed, before needsInput() returns
+		/// true again.
+		/// This call is equivalent to <code>setInput(input, 0, input.length)</code>.
+		/// </summary>
+		/// <param name="input">
+		/// the buffer containing the input data.
+		/// </param>
+		/// <exception cref="System.InvalidOperationException">
+		/// if the buffer was finished() or ended().
+		/// </exception>
+		public void SetInput(byte[] input)
+		{
+			SetInput(input, 0, input.Length);
+		}
+		
+		/// <summary>
+		/// Sets the data which should be compressed next.  This should be
+		/// only called when needsInput indicates that more input is needed.
+		/// The given byte array should not be changed, before needsInput() returns
+		/// true again.
+		/// </summary>
+		/// <param name="input">
+		/// the buffer containing the input data.
+		/// </param>
+		/// <param name="off">
+		/// the start of the data.
+		/// </param>
+		/// <param name="len">
+		/// the length of the data.
+		/// </param>
+		/// <exception cref="System.InvalidOperationException">
+		/// if the buffer was finished() or ended() or if previous input is still pending.
+		/// </exception>
+		public void SetInput(byte[] input, int off, int len)
+		{
+			if ((state & IS_FINISHING) != 0) {
+				throw new InvalidOperationException("finish()/end() already called");
+			}
+			engine.SetInput(input, off, len);
+		}
+		
+		/// <summary>
+		/// Sets the compression level.  There is no guarantee of the exact
+		/// position of the change, but if you call this when needsInput is
+		/// true the change of compression level will occur somewhere near
+		/// before the end of the so far given input.
+		/// </summary>
+		/// <param name="lvl">
+		/// the new compression level.
+		/// </param>
+		public void SetLevel(int lvl)
+		{
+			if (lvl == DEFAULT_COMPRESSION) {
+				lvl = 6;
+			} else if (lvl < NO_COMPRESSION || lvl > BEST_COMPRESSION) {
+				throw new ArgumentOutOfRangeException("lvl");
+			}
+			
+			if (level != lvl) {
+				level = lvl;
+				engine.SetLevel(lvl);
+			}
+		}
+		
+		/// <summary>
+		/// Get current compression level
+		/// </summary>
+		/// <returns>Returns the current compression level</returns>
+		public int GetLevel() {
+			return level;
+		}
+		
+		/// <summary>
+		/// Sets the compression strategy. Strategy is one of
+		/// DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED.  For the exact
+		/// position where the strategy is changed, the same as for
+		/// setLevel() applies.
+		/// </summary>
+		/// <param name="strategy">
+		/// The new compression strategy.
+		/// </param>
+		public void SetStrategy(DeflateStrategy strategy)
+		{
+			engine.Strategy = strategy;
+		}
+		
+		/// <summary>
+		/// Deflates the current input block with to the given array.
+		/// </summary>
+		/// <param name="output">
+		/// The buffer where compressed data is stored
+		/// </param>
+		/// <returns>
+		/// The number of compressed bytes added to the output, or 0 if either
+		/// needsInput() or finished() returns true or length is zero.
+		/// </returns>
+		public int Deflate(byte[] output)
+		{
+			return Deflate(output, 0, output.Length);
+		}
+		
+		/// <summary>
+		/// Deflates the current input block to the given array.
+		/// </summary>
+		/// <param name="output">
+		/// Buffer to store the compressed data.
+		/// </param>
+		/// <param name="offset">
+		/// Offset into the output array.
+		/// </param>
+		/// <param name="length">
+		/// The maximum number of bytes that may be stored.
+		/// </param>
+		/// <returns>
+		/// The number of compressed bytes added to the output, or 0 if either
+		/// needsInput() or finished() returns true or length is zero.
+		/// </returns>
+		/// <exception cref="System.InvalidOperationException">
+		/// If end() was previously called.
+		/// </exception>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// If offset and/or length don't match the array length.
+		/// </exception>
+		public int Deflate(byte[] output, int offset, int length)
+		{
+			int origLength = length;
+			
+			if (state == CLOSED_STATE) {
+				throw new InvalidOperationException("Deflater closed");
+			}
+			
+			if (state < BUSY_STATE) {
+				/* output header */
+				int header = (DEFLATED +
+					((DeflaterConstants.MAX_WBITS - 8) << 4)) << 8;
+				int level_flags = (level - 1) >> 1;
+				if (level_flags < 0 || level_flags > 3) {
+					level_flags = 3;
+				}
+				header |= level_flags << 6;
+				if ((state & IS_SETDICT) != 0) {
+					/* Dictionary was set */
+					header |= DeflaterConstants.PRESET_DICT;
+				}
+				header += 31 - (header % 31);
+				
+				
+				pending.WriteShortMSB(header);
+				if ((state & IS_SETDICT) != 0) {
+					int chksum = engine.Adler;
+					engine.ResetAdler();
+					pending.WriteShortMSB(chksum >> 16);
+					pending.WriteShortMSB(chksum & 0xffff);
+				}
+				
+				state = BUSY_STATE | (state & (IS_FLUSHING | IS_FINISHING));
+			}
+			
+			for (;;) {
+				int count = pending.Flush(output, offset, length);
+				offset   += count;
+				totalOut += count;
+				length   -= count;
+				
+				if (length == 0 || state == FINISHED_STATE) {
+					break;
+				}
+				
+				if (!engine.Deflate((state & IS_FLUSHING) != 0, (state & IS_FINISHING) != 0)) {
+					if (state == BUSY_STATE) {
+						/* We need more input now */
+						return origLength - length;
+					} else if (state == FLUSHING_STATE) {
+						if (level != NO_COMPRESSION) {
+							/* We have to supply some lookahead.  8 bit lookahead
+							 * is needed by the zlib inflater, and we must fill
+							 * the next byte, so that all bits are flushed.
+							 */
+							int neededbits = 8 + ((-pending.BitCount) & 7);
+							while (neededbits > 0) {
+								/* write a static tree block consisting solely of
+								 * an EOF:
+								 */
+								pending.WriteBits(2, 10);
+								neededbits -= 10;
+							}
+						}
+						state = BUSY_STATE;
+					} else if (state == FINISHING_STATE) {
+						pending.AlignToByte();
+
+						// Compressed data is complete.  Write footer information if required.
+						if (!noZlibHeaderOrFooter) {
+							int adler = engine.Adler;
+							pending.WriteShortMSB(adler >> 16);
+							pending.WriteShortMSB(adler & 0xffff);
+						}
+						state = FINISHED_STATE;
+					}
+				}
+			}
+			return origLength - length;
+		}
+		
+		/// <summary>
+		/// Sets the dictionary which should be used in the deflate process.
+		/// This call is equivalent to <code>setDictionary(dict, 0, dict.Length)</code>.
+		/// </summary>
+		/// <param name="dict">
+		/// the dictionary.
+		/// </param>
+		/// <exception cref="System.InvalidOperationException">
+		/// if setInput () or deflate () were already called or another dictionary was already set.
+		/// </exception>
+		public void SetDictionary(byte[] dict)
+		{
+			SetDictionary(dict, 0, dict.Length);
+		}
+		
+		/// <summary>
+		/// Sets the dictionary which should be used in the deflate process.
+		/// The dictionary is a byte array containing strings that are
+		/// likely to occur in the data which should be compressed.  The
+		/// dictionary is not stored in the compressed output, only a
+		/// checksum.  To decompress the output you need to supply the same
+		/// dictionary again.
+		/// </summary>
+		/// <param name="dict">
+		/// The dictionary data
+		/// </param>
+		/// <param name="offset">
+		/// An offset into the dictionary.
+		/// </param>
+		/// <param name="length">
+		/// The length of the dictionary data to use
+		/// </param>
+		/// <exception cref="System.InvalidOperationException">
+		/// If setInput () or deflate () were already called or another dictionary was already set.
+		/// </exception>
+		public void SetDictionary(byte[] dict, int offset, int length)
+		{
+			if (state != INIT_STATE) {
+				throw new InvalidOperationException();
+			}
+			
+			state = SETDICT_STATE;
+			engine.SetDictionary(dict, offset, length);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterConstants.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterConstants.cs
@@ -1,186 +1,186 @@
-// DeflaterConstants.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	/// <summary>
-	/// This class contains constants used for deflation.
-	/// </summary>
-	public class DeflaterConstants 
-	{
-		/// <summary>
-		/// Set to true to enable debugging
-		/// </summary>
-		public const bool DEBUGGING = false;
-		
-		/// <summary>
-		/// Written to Zip file to identify a stored block
-		/// </summary>
-		public const int STORED_BLOCK = 0;
-		
-		/// <summary>
-		/// Identifies static tree in Zip file
-		/// </summary>
-		public const int STATIC_TREES = 1;
-		
-		/// <summary>
-		/// Identifies dynamic tree in Zip file
-		/// </summary>
-		public const int DYN_TREES    = 2;
-		
-		/// <summary>
-		/// Header flag indicating a preset dictionary for deflation
-		/// </summary>
-		public const int PRESET_DICT  = 0x20;
-		
-		/// <summary>
-		/// Sets internal buffer sizes for Huffman encoding
-		/// </summary>
-		public const int DEFAULT_MEM_LEVEL = 8;
-
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int MAX_MATCH = 258;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int MIN_MATCH = 3;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int MAX_WBITS = 15;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int WSIZE = 1 << MAX_WBITS;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int WMASK = WSIZE - 1;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int HASH_BITS = DEFAULT_MEM_LEVEL + 7;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int HASH_SIZE = 1 << HASH_BITS;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int HASH_MASK = HASH_SIZE - 1;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int HASH_SHIFT = (HASH_BITS + MIN_MATCH - 1) / MIN_MATCH;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int MAX_DIST = WSIZE - MIN_LOOKAHEAD;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int PENDING_BUF_SIZE = 1 << (DEFAULT_MEM_LEVEL + 8);
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public static int MAX_BLOCK_SIZE = Math.Min(65535, PENDING_BUF_SIZE - 5);
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int DEFLATE_STORED = 0;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int DEFLATE_FAST   = 1;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public const int DEFLATE_SLOW   = 2;
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public static int[] GOOD_LENGTH = { 0, 4,  4,  4,  4,  8,   8,   8,   32,   32 };
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public static int[] MAX_LAZY    = { 0, 4,  5,  6,  4, 16,  16,  32,  128,  258 };
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public static int[] NICE_LENGTH = { 0, 8, 16, 32, 16, 32, 128, 128,  258,  258 };
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public static int[] MAX_CHAIN   = { 0, 4,  8, 32, 16, 32, 128, 256, 1024, 4096 };
-		
-		/// <summary>
-		/// Internal compression engine constant
-		/// </summary>		
-		public static int[] COMPR_FUNC  = { 0, 1,  1,  1,  1,  2,   2,   2,    2,    2 };
-		
-	}
-}
+// DeflaterConstants.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	/// <summary>
+	/// This class contains constants used for deflation.
+	/// </summary>
+	public class DeflaterConstants 
+	{
+		/// <summary>
+		/// Set to true to enable debugging
+		/// </summary>
+		public const bool DEBUGGING = false;
+		
+		/// <summary>
+		/// Written to Zip file to identify a stored block
+		/// </summary>
+		public const int STORED_BLOCK = 0;
+		
+		/// <summary>
+		/// Identifies static tree in Zip file
+		/// </summary>
+		public const int STATIC_TREES = 1;
+		
+		/// <summary>
+		/// Identifies dynamic tree in Zip file
+		/// </summary>
+		public const int DYN_TREES    = 2;
+		
+		/// <summary>
+		/// Header flag indicating a preset dictionary for deflation
+		/// </summary>
+		public const int PRESET_DICT  = 0x20;
+		
+		/// <summary>
+		/// Sets internal buffer sizes for Huffman encoding
+		/// </summary>
+		public const int DEFAULT_MEM_LEVEL = 8;
+
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int MAX_MATCH = 258;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int MIN_MATCH = 3;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int MAX_WBITS = 15;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int WSIZE = 1 << MAX_WBITS;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int WMASK = WSIZE - 1;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int HASH_BITS = DEFAULT_MEM_LEVEL + 7;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int HASH_SIZE = 1 << HASH_BITS;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int HASH_MASK = HASH_SIZE - 1;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int HASH_SHIFT = (HASH_BITS + MIN_MATCH - 1) / MIN_MATCH;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int MAX_DIST = WSIZE - MIN_LOOKAHEAD;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int PENDING_BUF_SIZE = 1 << (DEFAULT_MEM_LEVEL + 8);
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public static int MAX_BLOCK_SIZE = Math.Min(65535, PENDING_BUF_SIZE - 5);
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int DEFLATE_STORED = 0;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int DEFLATE_FAST   = 1;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public const int DEFLATE_SLOW   = 2;
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public static int[] GOOD_LENGTH = { 0, 4,  4,  4,  4,  8,   8,   8,   32,   32 };
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public static int[] MAX_LAZY    = { 0, 4,  5,  6,  4, 16,  16,  32,  128,  258 };
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public static int[] NICE_LENGTH = { 0, 8, 16, 32, 16, 32, 128, 128,  258,  258 };
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public static int[] MAX_CHAIN   = { 0, 4,  8, 32, 16, 32, 128, 256, 1024, 4096 };
+		
+		/// <summary>
+		/// Internal compression engine constant
+		/// </summary>		
+		public static int[] COMPR_FUNC  = { 0, 1,  1,  1,  1,  2,   2,   2,    2,    2 };
+		
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterEngine.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterEngine.cs
@@ -1,791 +1,791 @@
-// DeflaterEngine.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-using ICSharpCode.SharpZipLib.Checksums;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	/// <summary>
-	/// Strategies for deflater
-	/// </summary>
-	public enum DeflateStrategy 
-	{
-		/// <summary>
-		/// The default strategy
-		/// </summary>
-		Default  = 0,
-		
-		/// <summary>
-		/// This strategy will only allow longer string repetitions.  It is
-		/// useful for random data with a small character set.
-		/// </summary>
-		Filtered = 1,
-
-			
-		/// <summary>
-		/// This strategy will not look for string repetitions at all.  It
-		/// only encodes with Huffman trees (which means, that more common
-		/// characters get a smaller encoding.
-		/// </summary>
-		HuffmanOnly = 2
-	}
-
-	// DEFLATE ALGORITHM:
-	// 
-	// The uncompressed stream is inserted into the window array.  When
-	// the window array is full the first half is thrown away and the
-	// second half is copied to the beginning.
-	//
-	// The head array is a hash table.  Three characters build a hash value
-	// and they the value points to the corresponding index in window of 
-	// the last string with this hash.  The prev array implements a
-	// linked list of matches with the same hash: prev[index & WMASK] points
-	// to the previous index with the same hash.
-	// 
-
-	
-	/// <summary>
-	/// Low level compression engine for deflate algorithm which uses a 32K sliding window
-	/// with secondary compression from Huffman/Shannon-Fano codes.
-	/// </summary>
-	public class DeflaterEngine : DeflaterConstants 
-	{
-		static int TOO_FAR = 4096;
-		
-		int ins_h;
-
-		/// <summary>
-		/// Hashtable, hashing three characters to an index for window, so
-		/// that window[index]..window[index+2] have this hash code.  
-		/// Note that the array should really be unsigned short, so you need
-		/// to and the values with 0xffff.
-		/// </summary>
-		short[] head;
-
-		/// <summary>
-		/// <code>prev[index &amp; WMASK]</code> points to the previous index that has the
-		/// same hash code as the string starting at index.  This way 
-		/// entries with the same hash code are in a linked list.
-		/// Note that the array should really be unsigned short, so you need
-		/// to and the values with 0xffff.
-		/// </summary>
-		short[] prev;
-		
-		int    matchStart;
-		int    matchLen;
-		bool   prevAvailable;
-		int    blockStart;
-
-		/// <summary>
-		/// Points to the current character in the window.
-		/// </summary>
-		int    strstart;
-
-		/// <summary>
-		/// lookahead is the number of characters starting at strstart in
-		/// window that are valid.
-		/// So window[strstart] until window[strstart+lookahead-1] are valid
-		/// characters.
-		/// </summary>
-		int    lookahead;
-
-		/// <summary>
-		/// This array contains the part of the uncompressed stream that 
-		/// is of relevance.  The current character is indexed by strstart.
-		/// </summary>
-		byte[] window;
-		
-		DeflateStrategy strategy;
-		int max_chain, max_lazy, niceLength, goodLength;
-		
-		/// <summary>
-		/// The current compression function.
-		/// </summary>
-		int comprFunc;
-		
-		/// <summary>
-		/// The input data for compression.
-		/// </summary>
-		byte[] inputBuf;
-		
-		/// <summary>
-		/// The total bytes of input read.
-		/// </summary>
-		int totalIn;
-		
-		/// <summary>
-		/// The offset into inputBuf, where input data starts.
-		/// </summary>
-		int inputOff;
-		
-		/// <summary>
-		/// The end offset of the input data.
-		/// </summary>
-		int inputEnd;
-		
-		DeflaterPending pending;
-		DeflaterHuffman huffman;
-		
-		/// <summary>
-		/// The adler checksum
-		/// </summary>
-		Adler32 adler;
-		
-		/// <summary>
-		/// Construct instance with pending buffer
-		/// </summary>
-		/// <param name="pending">
-		/// Pending buffer to use
-		/// </param>>
-		public DeflaterEngine(DeflaterPending pending) 
-		{
-			this.pending = pending;
-			huffman = new DeflaterHuffman(pending);
-			adler = new Adler32();
-			
-			window = new byte[2 * WSIZE];
-			head   = new short[HASH_SIZE];
-			prev   = new short[WSIZE];
-			
-			// We start at index 1, to avoid an implementation deficiency, that
-		   // we cannot build a repeat pattern at index 0.
-			blockStart = strstart = 1;
-		}
-
-		/// <summary>
-		/// Reset internal state
-		/// </summary>		
-		public void Reset()
-		{
-			huffman.Reset();
-			adler.Reset();
-			blockStart = strstart = 1;
-			lookahead = 0;
-			totalIn   = 0;
-			prevAvailable = false;
-			matchLen = MIN_MATCH - 1;
-			
-			for (int i = 0; i < HASH_SIZE; i++) {
-				head[i] = 0;
-			}
-			
-			for (int i = 0; i < WSIZE; i++) {
-				prev[i] = 0;
-			}
-		}
-
-		/// <summary>
-		/// Reset Adler checksum
-		/// </summary>		
-		public void ResetAdler()
-		{
-			adler.Reset();
-		}
-
-		/// <summary>
-		/// Get current value of Adler checksum
-		/// </summary>		
-		public int Adler {
-			get {
-				return (int)adler.Value;
-			}
-		}
-
-		/// <summary>
-		/// Total data processed
-		/// </summary>		
-		public int TotalIn {
-			get {
-				return totalIn;
-			}
-		}
-
-		/// <summary>
-		/// Get/set the <see cref="DeflateStrategy">deflate strategy</see>
-		/// </summary>		
-		public DeflateStrategy Strategy {
-			get {
-				return strategy;
-			}
-			set {
-				strategy = value;
-			}
-		}
-		
-		/// <summary>
-		/// Set the deflate level (0-9)
-		/// </summary>
-		public void SetLevel(int lvl)
-		{
-			goodLength = DeflaterConstants.GOOD_LENGTH[lvl];
-			max_lazy   = DeflaterConstants.MAX_LAZY[lvl];
-			niceLength = DeflaterConstants.NICE_LENGTH[lvl];
-			max_chain  = DeflaterConstants.MAX_CHAIN[lvl];
-			
-			if (DeflaterConstants.COMPR_FUNC[lvl] != comprFunc) {
-/*
-				if (DeflaterConstants.DEBUGGING) {
-				   Console.WriteLine("Change from " + comprFunc + " to "
-									      + DeflaterConstants.COMPR_FUNC[lvl]);
-				}
-*/
-				switch (comprFunc) {
-					case DEFLATE_STORED:
-						if (strstart > blockStart) {
-							huffman.FlushStoredBlock(window, blockStart,
-								strstart - blockStart, false);
-							blockStart = strstart;
-						}
-						UpdateHash();
-						break;
-					case DEFLATE_FAST:
-						if (strstart > blockStart) {
-							huffman.FlushBlock(window, blockStart, strstart - blockStart,
-								false);
-							blockStart = strstart;
-						}
-						break;
-					case DEFLATE_SLOW:
-						if (prevAvailable) {
-							huffman.TallyLit(window[strstart-1] & 0xff);
-						}
-						if (strstart > blockStart) {
-							huffman.FlushBlock(window, blockStart, strstart - blockStart, false);
-							blockStart = strstart;
-						}
-						prevAvailable = false;
-						matchLen = MIN_MATCH - 1;
-						break;
-				}
-				comprFunc = COMPR_FUNC[lvl];
-			}
-		}
-		
-		void UpdateHash() 
-		{
-/*
-			if (DEBUGGING) {
-				Console.WriteLine("updateHash: "+strstart);
-			}
-*/
-			ins_h = (window[strstart] << HASH_SHIFT) ^ window[strstart + 1];
-		}
-		
-		/// <summary>
-		/// Inserts the current string in the head hash and returns the previous
-		/// value for this hash.
-		/// </summary>
-		/// <returns>The previous hash value</returns>
-		int InsertString() 
-		{
-			short match;
-			int hash = ((ins_h << HASH_SHIFT) ^ window[strstart + (MIN_MATCH -1)]) & HASH_MASK;
-/*
-			if (DeflaterConstants.DEBUGGING) {
-				if (hash != (((window[strstart] << (2*HASH_SHIFT)) ^ 
-							      (window[strstart + 1] << HASH_SHIFT) ^ 
-							      (window[strstart + 2])) & HASH_MASK)) {
-						throw new SharpZipBaseException("hash inconsistent: " + hash + "/"
-									            +window[strstart] + ","
-									            +window[strstart+1] + ","
-									            +window[strstart+2] + "," + HASH_SHIFT);
-					}
-			}
-*/
-			prev[strstart & WMASK] = match = head[hash];
-			head[hash] = (short)strstart;
-			ins_h = hash;
-			return match & 0xffff;
-		}
-		
-		void SlideWindow()
-		{
-			Array.Copy(window, WSIZE, window, 0, WSIZE);
-			matchStart -= WSIZE;
-			strstart   -= WSIZE;
-			blockStart -= WSIZE;
-			
-			/* Slide the hash table (could be avoided with 32 bit values
-			 * at the expense of memory usage).
-			 */
-			for (int i = 0; i < HASH_SIZE; ++i) {
-				int m = head[i] & 0xffff;
-				head[i] = (short)(m >= WSIZE ? (m - WSIZE) : 0);
-			}
-			
-			/* Slide the prev table. */
-			for (int i = 0; i < WSIZE; i++) {
-				int m = prev[i] & 0xffff;
-				prev[i] = (short)(m >= WSIZE ? (m - WSIZE) : 0);
-			}
-		}
-		
-		/// <summary>
-		/// Fill the window
-		/// </summary>
-		public void FillWindow()
-		{
-			/* If the window is almost full and there is insufficient lookahead,
-			 * move the upper half to the lower one to make room in the upper half.
-			 */
-			if (strstart >= WSIZE + MAX_DIST) {
-				SlideWindow();
-			}
-			
-			/* If there is not enough lookahead, but still some input left,
-			 * read in the input
-			 */
-			while (lookahead < DeflaterConstants.MIN_LOOKAHEAD && inputOff < inputEnd) {
-				int more = 2 * WSIZE - lookahead - strstart;
-				
-				if (more > inputEnd - inputOff) {
-					more = inputEnd - inputOff;
-				}
-				
-				System.Array.Copy(inputBuf, inputOff, window, strstart + lookahead, more);
-				adler.Update(inputBuf, inputOff, more);
-				
-				inputOff += more;
-				totalIn  += more;
-				lookahead += more;
-			}
-			
-			if (lookahead >= MIN_MATCH) {
-				UpdateHash();
-			}
-		}
-		
-		/// <summary>
-		/// Find the best (longest) string in the window matching the 
-		/// string starting at strstart.
-		///
-		/// Preconditions:
-		/// <code>
-		/// strstart + MAX_MATCH &lt;= window.length.</code>
-		/// </summary>
-		/// <param name="curMatch"></param>
-		/// <returns>True if a match greater than the minimum length is found</returns>
-		bool FindLongestMatch(int curMatch) 
-		{
-			int chainLength = this.max_chain;
-			int niceLength  = this.niceLength;
-			short[] prev    = this.prev;
-			int scan        = this.strstart;
-			int match;
-			int best_end = this.strstart + matchLen;
-			int best_len = Math.Max(matchLen, MIN_MATCH - 1);
-			
-			int limit = Math.Max(strstart - MAX_DIST, 0);
-			
-			int strend = strstart + MAX_MATCH - 1;
-			byte scan_end1 = window[best_end - 1];
-			byte scan_end  = window[best_end];
-			
-			/* Do not waste too much time if we already have a good match: */
-			if (best_len >= this.goodLength) {
-				chainLength >>= 2;
-			}
-			
-			/* Do not look for matches beyond the end of the input. This is necessary
-			* to make deflate deterministic.
-			*/
-			if (niceLength > lookahead) {
-				niceLength = lookahead;
-			}
-			
-/*
-			if (DeflaterConstants.DEBUGGING && strstart > 2 * WSIZE - MIN_LOOKAHEAD) {
-				throw new InvalidOperationException("need lookahead");
-			}
-*/			
-			do {
-/*
-				if (DeflaterConstants.DEBUGGING && curMatch >= strstart) {
-					throw new InvalidOperationException("future match");
-				}
-*/            
-				if (window[curMatch + best_len] != scan_end      || 
-					window[curMatch + best_len - 1] != scan_end1 || 
-					window[curMatch] != window[scan]             || 
-					window[curMatch + 1] != window[scan + 1]) {
-					continue;
-				}
-				
-				match = curMatch + 2;
-				scan += 2;
-				
-				/* We check for insufficient lookahead only every 8th comparison;
-				* the 256th check will be made at strstart + 258.
-				*/
-			while (window[++scan] == window[++match] && 
-				window[++scan] == window[++match] && 
-				window[++scan] == window[++match] && 
-				window[++scan] == window[++match] && 
-				window[++scan] == window[++match] && 
-				window[++scan] == window[++match] && 
-				window[++scan] == window[++match] && 
-				window[++scan] == window[++match] && scan < strend) ;
-				
-				if (scan > best_end) {
-/*
-					if (DeflaterConstants.DEBUGGING && ins_h == 0)
-						System.err.println("Found match: "+curMatch+"-"+(scan-strstart));
-*/
-					matchStart = curMatch;
-					best_end = scan;
-					best_len = scan - strstart;
-					
-					if (best_len >= niceLength) {
-						break;
-					}
-					
-					scan_end1  = window[best_end - 1];
-					scan_end   = window[best_end];
-				}
-				scan = strstart;
-			} while ((curMatch = (prev[curMatch & WMASK] & 0xffff)) > limit && --chainLength != 0);
-			
-			matchLen = Math.Min(best_len, lookahead);
-			return matchLen >= MIN_MATCH;
-		}
-		
-		/// <summary>
-		/// Set compression dictionary
-		/// </summary>
-		public void SetDictionary(byte[] buffer, int offset, int length) 
-		{
-/*
-			if (DeflaterConstants.DEBUGGING && strstart != 1) {
-				throw new InvalidOperationException("strstart not 1");
-			}
-*/
-			adler.Update(buffer, offset, length);
-			if (length < MIN_MATCH) {
-				return;
-			}
-			if (length > MAX_DIST) {
-				offset += length - MAX_DIST;
-				length = MAX_DIST;
-			}
-			
-			System.Array.Copy(buffer, offset, window, strstart, length);
-			
-			UpdateHash();
-			--length;
-			while (--length > 0) {
-				InsertString();
-				strstart++;
-			}
-			strstart += 2;
-			blockStart = strstart;
-		}
-		
-		bool DeflateStored(bool flush, bool finish)
-		{
-			if (!flush && lookahead == 0) {
-				return false;
-			}
-			
-			strstart += lookahead;
-			lookahead = 0;
-			
-			int storedLen = strstart - blockStart;
-			
-			if ((storedLen >= DeflaterConstants.MAX_BLOCK_SIZE) || /* Block is full */
-				(blockStart < WSIZE && storedLen >= MAX_DIST) ||   /* Block may move out of window */
-				flush) {
-				bool lastBlock = finish;
-				if (storedLen > DeflaterConstants.MAX_BLOCK_SIZE) {
-					storedLen = DeflaterConstants.MAX_BLOCK_SIZE;
-					lastBlock = false;
-				}
-				
-/*
-				if (DeflaterConstants.DEBUGGING) {
-				   Console.WriteLine("storedBlock["+storedLen+","+lastBlock+"]");
-				}
-*/
-	
-				huffman.FlushStoredBlock(window, blockStart, storedLen, lastBlock);
-				blockStart += storedLen;
-				return !lastBlock;
-			}
-			return true;
-		}
-		
-		private bool DeflateFast(bool flush, bool finish)
-		{
-			if (lookahead < MIN_LOOKAHEAD && !flush) {
-				return false;
-			}
-			
-			while (lookahead >= MIN_LOOKAHEAD || flush) {
-				if (lookahead == 0) {
-					/* We are flushing everything */
-					huffman.FlushBlock(window, blockStart, strstart - blockStart, finish);
-					blockStart = strstart;
-					return false;
-				}
-				
-				if (strstart > 2 * WSIZE - MIN_LOOKAHEAD) {
-					/* slide window, as findLongestMatch needs this.
-					 * This should only happen when flushing and the window
-					 * is almost full.
-					 */
-					SlideWindow();
-				}
-				
-				int hashHead;
-				if (lookahead >= MIN_MATCH && 
-					(hashHead = InsertString()) != 0 && 
-					strategy != DeflateStrategy.HuffmanOnly &&
-					strstart - hashHead <= MAX_DIST && 
-					FindLongestMatch(hashHead)) {
-					/* longestMatch sets matchStart and matchLen */
-/*
-					if (DeflaterConstants.DEBUGGING) {
-						for (int i = 0 ; i < matchLen; i++) {
-							if (window[strstart+i] != window[matchStart + i]) {
-								throw new SharpZipBaseException("Match failure");
-							}
-						}
-					}
-*/					
-					// -jr- Hak hak hak this stops problems with fast/low compression and index out of range
-					if (huffman.TallyDist(strstart - matchStart, matchLen)) {
-						bool lastBlock = finish && lookahead == 0;
-						huffman.FlushBlock(window, blockStart, strstart - blockStart, lastBlock);
-						blockStart = strstart;
-					}
-					
-					lookahead -= matchLen;
-					if (matchLen <= max_lazy && lookahead >= MIN_MATCH) {
-						while (--matchLen > 0) {
-							++strstart;
-							InsertString();
-						}
-						++strstart;
-					} else {
-						strstart += matchLen;
-						if (lookahead >= MIN_MATCH - 1) {
-							UpdateHash();
-						}
-					}
-					matchLen = MIN_MATCH - 1;
-					continue;
-				} else {
-					/* No match found */
-					huffman.TallyLit(window[strstart] & 0xff);
-					++strstart;
-					--lookahead;
-				}
-				
-				if (huffman.IsFull()) {
-					bool lastBlock = finish && lookahead == 0;
-					huffman.FlushBlock(window, blockStart, strstart - blockStart, lastBlock);
-					blockStart = strstart;
-					return !lastBlock;
-				}
-			}
-			return true;
-		}
-		
-		bool DeflateSlow(bool flush, bool finish)
-		{
-			if (lookahead < MIN_LOOKAHEAD && !flush) {
-				return false;
-			}
-			
-			while (lookahead >= MIN_LOOKAHEAD || flush) {
-				if (lookahead == 0) {
-					if (prevAvailable) {
-						huffman.TallyLit(window[strstart-1] & 0xff);
-					}
-					prevAvailable = false;
-					
-					// We are flushing everything
-/*
-					if (DeflaterConstants.DEBUGGING && !flush) {
-						throw new SharpZipBaseException("Not flushing, but no lookahead");
-					}
-*/               
-					huffman.FlushBlock(window, blockStart, strstart - blockStart,
-						finish);
-					blockStart = strstart;
-					return false;
-				}
-				
-				if (strstart >= 2 * WSIZE - MIN_LOOKAHEAD) {
-					/* slide window, as findLongestMatch need this.
-					 * This should only happen when flushing and the window
-					 * is almost full.
-					 */
-					SlideWindow();
-				}
-				
-				int prevMatch = matchStart;
-				int prevLen = matchLen;
-				if (lookahead >= MIN_MATCH) {
-					int hashHead = InsertString();
-					if (strategy != DeflateStrategy.HuffmanOnly && hashHead != 0 && strstart - hashHead <= MAX_DIST && FindLongestMatch(hashHead)) {
-						/* longestMatch sets matchStart and matchLen */
-							
-						/* Discard match if too small and too far away */
-						if (matchLen <= 5 && (strategy == DeflateStrategy.Filtered || (matchLen == MIN_MATCH && strstart - matchStart > TOO_FAR))) {
-							matchLen = MIN_MATCH - 1;
-						}
-					}
-				}
-				
-				/* previous match was better */
-				if (prevLen >= MIN_MATCH && matchLen <= prevLen) {
-/*
-					if (DeflaterConstants.DEBUGGING) {
-					   for (int i = 0 ; i < matchLen; i++) {
-					      if (window[strstart-1+i] != window[prevMatch + i])
-					         throw new SharpZipBaseException();
-						}
-					}
-*/               
-					huffman.TallyDist(strstart - 1 - prevMatch, prevLen);
-					prevLen -= 2;
-					do {
-						strstart++;
-						lookahead--;
-						if (lookahead >= MIN_MATCH) {
-							InsertString();
-						}
-					} while (--prevLen > 0);
-					strstart ++;
-					lookahead--;
-					prevAvailable = false;
-					matchLen = MIN_MATCH - 1;
-				} else {
-					if (prevAvailable) {
-						huffman.TallyLit(window[strstart-1] & 0xff);
-					}
-					prevAvailable = true;
-					strstart++;
-					lookahead--;
-				}
-				
-				if (huffman.IsFull()) {
-					int len = strstart - blockStart;
-					if (prevAvailable) {
-						len--;
-					}
-					bool lastBlock = (finish && lookahead == 0 && !prevAvailable);
-					huffman.FlushBlock(window, blockStart, len, lastBlock);
-					blockStart += len;
-					return !lastBlock;
-				}
-			}
-			return true;
-		}
-		
-		/// <summary>
-		/// Deflate drives actual compression of data
-		/// </summary>
-		public bool Deflate(bool flush, bool finish)
-		{
-			bool progress;
-			do {
-				FillWindow();
-				bool canFlush = flush && inputOff == inputEnd;
-				//				if (DeflaterConstants.DEBUGGING) {
-				//					//Console.WriteLine("window: ["+blockStart+","+strstart+","
-				//					                  +lookahead+"], "+comprFunc+","+canFlush);
-				//				}
-				switch (comprFunc) {
-					case DEFLATE_STORED:
-						progress = DeflateStored(canFlush, finish);
-						break;
-					case DEFLATE_FAST:
-						progress = DeflateFast(canFlush, finish);
-						break;
-					case DEFLATE_SLOW:
-						progress = DeflateSlow(canFlush, finish);
-						break;
-					default:
-						throw new InvalidOperationException("unknown comprFunc");
-				}
-			} while (pending.IsFlushed && progress); /* repeat while we have no pending output and progress was made */
-			return progress;
-		}
-
-
-		/// <summary>
-		/// Sets input data to be deflated.  Should only be called when <code>NeedsInput()</code>
-		/// returns true
-		/// </summary>
-		/// <param name="buf">The buffer containing input data.</param>
-		/// <param name="off">The index of the first byte of data.</param>
-		/// <param name="len">The number of bytes of data to use as input.</param>
-		public void SetInput(byte[] buf, int off, int len)
-		{
-			if (inputOff < inputEnd) {
-				throw new InvalidOperationException("Old input was not completely processed");
-			}
-			
-			int end = off + len;
-			
-			/* We want to throw an ArrayIndexOutOfBoundsException early.  The
-			* check is very tricky: it also handles integer wrap around.
-			*/
-			if (0 > off || off > end || end > buf.Length) {
-				throw new ArgumentOutOfRangeException();
-			}
-			
-			inputBuf = buf;
-			inputOff = off;
-			inputEnd = end;
-		}
-
-		/// <summary>
-		/// Return true if input is needed via <see cref="SetInput"> SetInput</see>
-		/// </summary>		
-		public bool NeedsInput()
-		{
-			return inputEnd == inputOff;
-		}
-	}
-}
+// DeflaterEngine.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+using ICSharpCode.SharpZipLib.Checksums;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	/// <summary>
+	/// Strategies for deflater
+	/// </summary>
+	public enum DeflateStrategy 
+	{
+		/// <summary>
+		/// The default strategy
+		/// </summary>
+		Default  = 0,
+		
+		/// <summary>
+		/// This strategy will only allow longer string repetitions.  It is
+		/// useful for random data with a small character set.
+		/// </summary>
+		Filtered = 1,
+
+			
+		/// <summary>
+		/// This strategy will not look for string repetitions at all.  It
+		/// only encodes with Huffman trees (which means, that more common
+		/// characters get a smaller encoding.
+		/// </summary>
+		HuffmanOnly = 2
+	}
+
+	// DEFLATE ALGORITHM:
+	// 
+	// The uncompressed stream is inserted into the window array.  When
+	// the window array is full the first half is thrown away and the
+	// second half is copied to the beginning.
+	//
+	// The head array is a hash table.  Three characters build a hash value
+	// and they the value points to the corresponding index in window of 
+	// the last string with this hash.  The prev array implements a
+	// linked list of matches with the same hash: prev[index & WMASK] points
+	// to the previous index with the same hash.
+	// 
+
+	
+	/// <summary>
+	/// Low level compression engine for deflate algorithm which uses a 32K sliding window
+	/// with secondary compression from Huffman/Shannon-Fano codes.
+	/// </summary>
+	public class DeflaterEngine : DeflaterConstants 
+	{
+		static int TOO_FAR = 4096;
+		
+		int ins_h;
+
+		/// <summary>
+		/// Hashtable, hashing three characters to an index for window, so
+		/// that window[index]..window[index+2] have this hash code.  
+		/// Note that the array should really be unsigned short, so you need
+		/// to and the values with 0xffff.
+		/// </summary>
+		short[] head;
+
+		/// <summary>
+		/// <code>prev[index &amp; WMASK]</code> points to the previous index that has the
+		/// same hash code as the string starting at index.  This way 
+		/// entries with the same hash code are in a linked list.
+		/// Note that the array should really be unsigned short, so you need
+		/// to and the values with 0xffff.
+		/// </summary>
+		short[] prev;
+		
+		int    matchStart;
+		int    matchLen;
+		bool   prevAvailable;
+		int    blockStart;
+
+		/// <summary>
+		/// Points to the current character in the window.
+		/// </summary>
+		int    strstart;
+
+		/// <summary>
+		/// lookahead is the number of characters starting at strstart in
+		/// window that are valid.
+		/// So window[strstart] until window[strstart+lookahead-1] are valid
+		/// characters.
+		/// </summary>
+		int    lookahead;
+
+		/// <summary>
+		/// This array contains the part of the uncompressed stream that 
+		/// is of relevance.  The current character is indexed by strstart.
+		/// </summary>
+		byte[] window;
+		
+		DeflateStrategy strategy;
+		int max_chain, max_lazy, niceLength, goodLength;
+		
+		/// <summary>
+		/// The current compression function.
+		/// </summary>
+		int comprFunc;
+		
+		/// <summary>
+		/// The input data for compression.
+		/// </summary>
+		byte[] inputBuf;
+		
+		/// <summary>
+		/// The total bytes of input read.
+		/// </summary>
+		int totalIn;
+		
+		/// <summary>
+		/// The offset into inputBuf, where input data starts.
+		/// </summary>
+		int inputOff;
+		
+		/// <summary>
+		/// The end offset of the input data.
+		/// </summary>
+		int inputEnd;
+		
+		DeflaterPending pending;
+		DeflaterHuffman huffman;
+		
+		/// <summary>
+		/// The adler checksum
+		/// </summary>
+		Adler32 adler;
+		
+		/// <summary>
+		/// Construct instance with pending buffer
+		/// </summary>
+		/// <param name="pending">
+		/// Pending buffer to use
+		/// </param>>
+		public DeflaterEngine(DeflaterPending pending) 
+		{
+			this.pending = pending;
+			huffman = new DeflaterHuffman(pending);
+			adler = new Adler32();
+			
+			window = new byte[2 * WSIZE];
+			head   = new short[HASH_SIZE];
+			prev   = new short[WSIZE];
+			
+			// We start at index 1, to avoid an implementation deficiency, that
+		   // we cannot build a repeat pattern at index 0.
+			blockStart = strstart = 1;
+		}
+
+		/// <summary>
+		/// Reset internal state
+		/// </summary>		
+		public void Reset()
+		{
+			huffman.Reset();
+			adler.Reset();
+			blockStart = strstart = 1;
+			lookahead = 0;
+			totalIn   = 0;
+			prevAvailable = false;
+			matchLen = MIN_MATCH - 1;
+			
+			for (int i = 0; i < HASH_SIZE; i++) {
+				head[i] = 0;
+			}
+			
+			for (int i = 0; i < WSIZE; i++) {
+				prev[i] = 0;
+			}
+		}
+
+		/// <summary>
+		/// Reset Adler checksum
+		/// </summary>		
+		public void ResetAdler()
+		{
+			adler.Reset();
+		}
+
+		/// <summary>
+		/// Get current value of Adler checksum
+		/// </summary>		
+		public int Adler {
+			get {
+				return (int)adler.Value;
+			}
+		}
+
+		/// <summary>
+		/// Total data processed
+		/// </summary>		
+		public int TotalIn {
+			get {
+				return totalIn;
+			}
+		}
+
+		/// <summary>
+		/// Get/set the <see cref="DeflateStrategy">deflate strategy</see>
+		/// </summary>		
+		public DeflateStrategy Strategy {
+			get {
+				return strategy;
+			}
+			set {
+				strategy = value;
+			}
+		}
+		
+		/// <summary>
+		/// Set the deflate level (0-9)
+		/// </summary>
+		public void SetLevel(int lvl)
+		{
+			goodLength = DeflaterConstants.GOOD_LENGTH[lvl];
+			max_lazy   = DeflaterConstants.MAX_LAZY[lvl];
+			niceLength = DeflaterConstants.NICE_LENGTH[lvl];
+			max_chain  = DeflaterConstants.MAX_CHAIN[lvl];
+			
+			if (DeflaterConstants.COMPR_FUNC[lvl] != comprFunc) {
+/*
+				if (DeflaterConstants.DEBUGGING) {
+				   Console.WriteLine("Change from " + comprFunc + " to "
+									      + DeflaterConstants.COMPR_FUNC[lvl]);
+				}
+*/
+				switch (comprFunc) {
+					case DEFLATE_STORED:
+						if (strstart > blockStart) {
+							huffman.FlushStoredBlock(window, blockStart,
+								strstart - blockStart, false);
+							blockStart = strstart;
+						}
+						UpdateHash();
+						break;
+					case DEFLATE_FAST:
+						if (strstart > blockStart) {
+							huffman.FlushBlock(window, blockStart, strstart - blockStart,
+								false);
+							blockStart = strstart;
+						}
+						break;
+					case DEFLATE_SLOW:
+						if (prevAvailable) {
+							huffman.TallyLit(window[strstart-1] & 0xff);
+						}
+						if (strstart > blockStart) {
+							huffman.FlushBlock(window, blockStart, strstart - blockStart, false);
+							blockStart = strstart;
+						}
+						prevAvailable = false;
+						matchLen = MIN_MATCH - 1;
+						break;
+				}
+				comprFunc = COMPR_FUNC[lvl];
+			}
+		}
+		
+		void UpdateHash() 
+		{
+/*
+			if (DEBUGGING) {
+				Console.WriteLine("updateHash: "+strstart);
+			}
+*/
+			ins_h = (window[strstart] << HASH_SHIFT) ^ window[strstart + 1];
+		}
+		
+		/// <summary>
+		/// Inserts the current string in the head hash and returns the previous
+		/// value for this hash.
+		/// </summary>
+		/// <returns>The previous hash value</returns>
+		int InsertString() 
+		{
+			short match;
+			int hash = ((ins_h << HASH_SHIFT) ^ window[strstart + (MIN_MATCH -1)]) & HASH_MASK;
+/*
+			if (DeflaterConstants.DEBUGGING) {
+				if (hash != (((window[strstart] << (2*HASH_SHIFT)) ^ 
+							      (window[strstart + 1] << HASH_SHIFT) ^ 
+							      (window[strstart + 2])) & HASH_MASK)) {
+						throw new SharpZipBaseException("hash inconsistent: " + hash + "/"
+									            +window[strstart] + ","
+									            +window[strstart+1] + ","
+									            +window[strstart+2] + "," + HASH_SHIFT);
+					}
+			}
+*/
+			prev[strstart & WMASK] = match = head[hash];
+			head[hash] = (short)strstart;
+			ins_h = hash;
+			return match & 0xffff;
+		}
+		
+		void SlideWindow()
+		{
+			Array.Copy(window, WSIZE, window, 0, WSIZE);
+			matchStart -= WSIZE;
+			strstart   -= WSIZE;
+			blockStart -= WSIZE;
+			
+			/* Slide the hash table (could be avoided with 32 bit values
+			 * at the expense of memory usage).
+			 */
+			for (int i = 0; i < HASH_SIZE; ++i) {
+				int m = head[i] & 0xffff;
+				head[i] = (short)(m >= WSIZE ? (m - WSIZE) : 0);
+			}
+			
+			/* Slide the prev table. */
+			for (int i = 0; i < WSIZE; i++) {
+				int m = prev[i] & 0xffff;
+				prev[i] = (short)(m >= WSIZE ? (m - WSIZE) : 0);
+			}
+		}
+		
+		/// <summary>
+		/// Fill the window
+		/// </summary>
+		public void FillWindow()
+		{
+			/* If the window is almost full and there is insufficient lookahead,
+			 * move the upper half to the lower one to make room in the upper half.
+			 */
+			if (strstart >= WSIZE + MAX_DIST) {
+				SlideWindow();
+			}
+			
+			/* If there is not enough lookahead, but still some input left,
+			 * read in the input
+			 */
+			while (lookahead < DeflaterConstants.MIN_LOOKAHEAD && inputOff < inputEnd) {
+				int more = 2 * WSIZE - lookahead - strstart;
+				
+				if (more > inputEnd - inputOff) {
+					more = inputEnd - inputOff;
+				}
+				
+				System.Array.Copy(inputBuf, inputOff, window, strstart + lookahead, more);
+				adler.Update(inputBuf, inputOff, more);
+				
+				inputOff += more;
+				totalIn  += more;
+				lookahead += more;
+			}
+			
+			if (lookahead >= MIN_MATCH) {
+				UpdateHash();
+			}
+		}
+		
+		/// <summary>
+		/// Find the best (longest) string in the window matching the 
+		/// string starting at strstart.
+		///
+		/// Preconditions:
+		/// <code>
+		/// strstart + MAX_MATCH &lt;= window.length.</code>
+		/// </summary>
+		/// <param name="curMatch"></param>
+		/// <returns>True if a match greater than the minimum length is found</returns>
+		bool FindLongestMatch(int curMatch) 
+		{
+			int chainLength = this.max_chain;
+			int niceLength  = this.niceLength;
+			short[] prev    = this.prev;
+			int scan        = this.strstart;
+			int match;
+			int best_end = this.strstart + matchLen;
+			int best_len = Math.Max(matchLen, MIN_MATCH - 1);
+			
+			int limit = Math.Max(strstart - MAX_DIST, 0);
+			
+			int strend = strstart + MAX_MATCH - 1;
+			byte scan_end1 = window[best_end - 1];
+			byte scan_end  = window[best_end];
+			
+			/* Do not waste too much time if we already have a good match: */
+			if (best_len >= this.goodLength) {
+				chainLength >>= 2;
+			}
+			
+			/* Do not look for matches beyond the end of the input. This is necessary
+			* to make deflate deterministic.
+			*/
+			if (niceLength > lookahead) {
+				niceLength = lookahead;
+			}
+			
+/*
+			if (DeflaterConstants.DEBUGGING && strstart > 2 * WSIZE - MIN_LOOKAHEAD) {
+				throw new InvalidOperationException("need lookahead");
+			}
+*/			
+			do {
+/*
+				if (DeflaterConstants.DEBUGGING && curMatch >= strstart) {
+					throw new InvalidOperationException("future match");
+				}
+*/            
+				if (window[curMatch + best_len] != scan_end      || 
+					window[curMatch + best_len - 1] != scan_end1 || 
+					window[curMatch] != window[scan]             || 
+					window[curMatch + 1] != window[scan + 1]) {
+					continue;
+				}
+				
+				match = curMatch + 2;
+				scan += 2;
+				
+				/* We check for insufficient lookahead only every 8th comparison;
+				* the 256th check will be made at strstart + 258.
+				*/
+			while (window[++scan] == window[++match] && 
+				window[++scan] == window[++match] && 
+				window[++scan] == window[++match] && 
+				window[++scan] == window[++match] && 
+				window[++scan] == window[++match] && 
+				window[++scan] == window[++match] && 
+				window[++scan] == window[++match] && 
+				window[++scan] == window[++match] && scan < strend) ;
+				
+				if (scan > best_end) {
+/*
+					if (DeflaterConstants.DEBUGGING && ins_h == 0)
+						System.err.println("Found match: "+curMatch+"-"+(scan-strstart));
+*/
+					matchStart = curMatch;
+					best_end = scan;
+					best_len = scan - strstart;
+					
+					if (best_len >= niceLength) {
+						break;
+					}
+					
+					scan_end1  = window[best_end - 1];
+					scan_end   = window[best_end];
+				}
+				scan = strstart;
+			} while ((curMatch = (prev[curMatch & WMASK] & 0xffff)) > limit && --chainLength != 0);
+			
+			matchLen = Math.Min(best_len, lookahead);
+			return matchLen >= MIN_MATCH;
+		}
+		
+		/// <summary>
+		/// Set compression dictionary
+		/// </summary>
+		public void SetDictionary(byte[] buffer, int offset, int length) 
+		{
+/*
+			if (DeflaterConstants.DEBUGGING && strstart != 1) {
+				throw new InvalidOperationException("strstart not 1");
+			}
+*/
+			adler.Update(buffer, offset, length);
+			if (length < MIN_MATCH) {
+				return;
+			}
+			if (length > MAX_DIST) {
+				offset += length - MAX_DIST;
+				length = MAX_DIST;
+			}
+			
+			System.Array.Copy(buffer, offset, window, strstart, length);
+			
+			UpdateHash();
+			--length;
+			while (--length > 0) {
+				InsertString();
+				strstart++;
+			}
+			strstart += 2;
+			blockStart = strstart;
+		}
+		
+		bool DeflateStored(bool flush, bool finish)
+		{
+			if (!flush && lookahead == 0) {
+				return false;
+			}
+			
+			strstart += lookahead;
+			lookahead = 0;
+			
+			int storedLen = strstart - blockStart;
+			
+			if ((storedLen >= DeflaterConstants.MAX_BLOCK_SIZE) || /* Block is full */
+				(blockStart < WSIZE && storedLen >= MAX_DIST) ||   /* Block may move out of window */
+				flush) {
+				bool lastBlock = finish;
+				if (storedLen > DeflaterConstants.MAX_BLOCK_SIZE) {
+					storedLen = DeflaterConstants.MAX_BLOCK_SIZE;
+					lastBlock = false;
+				}
+				
+/*
+				if (DeflaterConstants.DEBUGGING) {
+				   Console.WriteLine("storedBlock["+storedLen+","+lastBlock+"]");
+				}
+*/
+	
+				huffman.FlushStoredBlock(window, blockStart, storedLen, lastBlock);
+				blockStart += storedLen;
+				return !lastBlock;
+			}
+			return true;
+		}
+		
+		private bool DeflateFast(bool flush, bool finish)
+		{
+			if (lookahead < MIN_LOOKAHEAD && !flush) {
+				return false;
+			}
+			
+			while (lookahead >= MIN_LOOKAHEAD || flush) {
+				if (lookahead == 0) {
+					/* We are flushing everything */
+					huffman.FlushBlock(window, blockStart, strstart - blockStart, finish);
+					blockStart = strstart;
+					return false;
+				}
+				
+				if (strstart > 2 * WSIZE - MIN_LOOKAHEAD) {
+					/* slide window, as findLongestMatch needs this.
+					 * This should only happen when flushing and the window
+					 * is almost full.
+					 */
+					SlideWindow();
+				}
+				
+				int hashHead;
+				if (lookahead >= MIN_MATCH && 
+					(hashHead = InsertString()) != 0 && 
+					strategy != DeflateStrategy.HuffmanOnly &&
+					strstart - hashHead <= MAX_DIST && 
+					FindLongestMatch(hashHead)) {
+					/* longestMatch sets matchStart and matchLen */
+/*
+					if (DeflaterConstants.DEBUGGING) {
+						for (int i = 0 ; i < matchLen; i++) {
+							if (window[strstart+i] != window[matchStart + i]) {
+								throw new SharpZipBaseException("Match failure");
+							}
+						}
+					}
+*/					
+					// -jr- Hak hak hak this stops problems with fast/low compression and index out of range
+					if (huffman.TallyDist(strstart - matchStart, matchLen)) {
+						bool lastBlock = finish && lookahead == 0;
+						huffman.FlushBlock(window, blockStart, strstart - blockStart, lastBlock);
+						blockStart = strstart;
+					}
+					
+					lookahead -= matchLen;
+					if (matchLen <= max_lazy && lookahead >= MIN_MATCH) {
+						while (--matchLen > 0) {
+							++strstart;
+							InsertString();
+						}
+						++strstart;
+					} else {
+						strstart += matchLen;
+						if (lookahead >= MIN_MATCH - 1) {
+							UpdateHash();
+						}
+					}
+					matchLen = MIN_MATCH - 1;
+					continue;
+				} else {
+					/* No match found */
+					huffman.TallyLit(window[strstart] & 0xff);
+					++strstart;
+					--lookahead;
+				}
+				
+				if (huffman.IsFull()) {
+					bool lastBlock = finish && lookahead == 0;
+					huffman.FlushBlock(window, blockStart, strstart - blockStart, lastBlock);
+					blockStart = strstart;
+					return !lastBlock;
+				}
+			}
+			return true;
+		}
+		
+		bool DeflateSlow(bool flush, bool finish)
+		{
+			if (lookahead < MIN_LOOKAHEAD && !flush) {
+				return false;
+			}
+			
+			while (lookahead >= MIN_LOOKAHEAD || flush) {
+				if (lookahead == 0) {
+					if (prevAvailable) {
+						huffman.TallyLit(window[strstart-1] & 0xff);
+					}
+					prevAvailable = false;
+					
+					// We are flushing everything
+/*
+					if (DeflaterConstants.DEBUGGING && !flush) {
+						throw new SharpZipBaseException("Not flushing, but no lookahead");
+					}
+*/               
+					huffman.FlushBlock(window, blockStart, strstart - blockStart,
+						finish);
+					blockStart = strstart;
+					return false;
+				}
+				
+				if (strstart >= 2 * WSIZE - MIN_LOOKAHEAD) {
+					/* slide window, as findLongestMatch need this.
+					 * This should only happen when flushing and the window
+					 * is almost full.
+					 */
+					SlideWindow();
+				}
+				
+				int prevMatch = matchStart;
+				int prevLen = matchLen;
+				if (lookahead >= MIN_MATCH) {
+					int hashHead = InsertString();
+					if (strategy != DeflateStrategy.HuffmanOnly && hashHead != 0 && strstart - hashHead <= MAX_DIST && FindLongestMatch(hashHead)) {
+						/* longestMatch sets matchStart and matchLen */
+							
+						/* Discard match if too small and too far away */
+						if (matchLen <= 5 && (strategy == DeflateStrategy.Filtered || (matchLen == MIN_MATCH && strstart - matchStart > TOO_FAR))) {
+							matchLen = MIN_MATCH - 1;
+						}
+					}
+				}
+				
+				/* previous match was better */
+				if (prevLen >= MIN_MATCH && matchLen <= prevLen) {
+/*
+					if (DeflaterConstants.DEBUGGING) {
+					   for (int i = 0 ; i < matchLen; i++) {
+					      if (window[strstart-1+i] != window[prevMatch + i])
+					         throw new SharpZipBaseException();
+						}
+					}
+*/               
+					huffman.TallyDist(strstart - 1 - prevMatch, prevLen);
+					prevLen -= 2;
+					do {
+						strstart++;
+						lookahead--;
+						if (lookahead >= MIN_MATCH) {
+							InsertString();
+						}
+					} while (--prevLen > 0);
+					strstart ++;
+					lookahead--;
+					prevAvailable = false;
+					matchLen = MIN_MATCH - 1;
+				} else {
+					if (prevAvailable) {
+						huffman.TallyLit(window[strstart-1] & 0xff);
+					}
+					prevAvailable = true;
+					strstart++;
+					lookahead--;
+				}
+				
+				if (huffman.IsFull()) {
+					int len = strstart - blockStart;
+					if (prevAvailable) {
+						len--;
+					}
+					bool lastBlock = (finish && lookahead == 0 && !prevAvailable);
+					huffman.FlushBlock(window, blockStart, len, lastBlock);
+					blockStart += len;
+					return !lastBlock;
+				}
+			}
+			return true;
+		}
+		
+		/// <summary>
+		/// Deflate drives actual compression of data
+		/// </summary>
+		public bool Deflate(bool flush, bool finish)
+		{
+			bool progress;
+			do {
+				FillWindow();
+				bool canFlush = flush && inputOff == inputEnd;
+				//				if (DeflaterConstants.DEBUGGING) {
+				//					//Console.WriteLine("window: ["+blockStart+","+strstart+","
+				//					                  +lookahead+"], "+comprFunc+","+canFlush);
+				//				}
+				switch (comprFunc) {
+					case DEFLATE_STORED:
+						progress = DeflateStored(canFlush, finish);
+						break;
+					case DEFLATE_FAST:
+						progress = DeflateFast(canFlush, finish);
+						break;
+					case DEFLATE_SLOW:
+						progress = DeflateSlow(canFlush, finish);
+						break;
+					default:
+						throw new InvalidOperationException("unknown comprFunc");
+				}
+			} while (pending.IsFlushed && progress); /* repeat while we have no pending output and progress was made */
+			return progress;
+		}
+
+
+		/// <summary>
+		/// Sets input data to be deflated.  Should only be called when <code>NeedsInput()</code>
+		/// returns true
+		/// </summary>
+		/// <param name="buf">The buffer containing input data.</param>
+		/// <param name="off">The index of the first byte of data.</param>
+		/// <param name="len">The number of bytes of data to use as input.</param>
+		public void SetInput(byte[] buf, int off, int len)
+		{
+			if (inputOff < inputEnd) {
+				throw new InvalidOperationException("Old input was not completely processed");
+			}
+			
+			int end = off + len;
+			
+			/* We want to throw an ArrayIndexOutOfBoundsException early.  The
+			* check is very tricky: it also handles integer wrap around.
+			*/
+			if (0 > off || off > end || end > buf.Length) {
+				throw new ArgumentOutOfRangeException();
+			}
+			
+			inputBuf = buf;
+			inputOff = off;
+			inputEnd = end;
+		}
+
+		/// <summary>
+		/// Return true if input is needed via <see cref="SetInput"> SetInput</see>
+		/// </summary>		
+		public bool NeedsInput()
+		{
+			return inputEnd == inputOff;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterHuffman.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterHuffman.cs
@@ -1,887 +1,887 @@
-// DeflaterHuffman.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	/// <summary>
-	/// This is the DeflaterHuffman class.
-	/// 
-	/// This class is <i>not</i> thread safe.  This is inherent in the API, due
-	/// to the split of deflate and setInput.
-	/// 
-	/// author of the original java version : Jochen Hoenicke
-	/// </summary>
-	public class DeflaterHuffman
-	{
-		static  int BUFSIZE = 1 << (DeflaterConstants.DEFAULT_MEM_LEVEL + 6);
-		static  int LITERAL_NUM = 286;
-		static  int DIST_NUM = 30;
-		static  int BITLEN_NUM = 19;
-		static  int REP_3_6    = 16;
-		static  int REP_3_10   = 17;
-		static  int REP_11_138 = 18;
-		static  int EOF_SYMBOL = 256;
-		static  int[] BL_ORDER = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
-		
-		static byte[] bit4Reverse = {
-			0,
-			8,
-			4,
-			12,
-			2,
-			10,
-			6,
-			14,
-			1,
-			9,
-			5,
-			13,
-			3,
-			11,
-			7,
-			15
-		};
-		
-		/// <summary>
-		/// Not documented
-		/// </summary>
-		public class Tree 
-		{
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public short[] freqs;
-			
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public byte[]  length;
-			
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public int     minNumCodes;
-			
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public int     numCodes;
-			
-			short[] codes;
-			int[]   bl_counts;
-			int     maxLength;
-			DeflaterHuffman dh;
-			
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public Tree(DeflaterHuffman dh, int elems, int minCodes, int maxLength) 
-			{
-				this.dh =  dh;
-				this.minNumCodes = minCodes;
-				this.maxLength  = maxLength;
-				freqs  = new short[elems];
-				bl_counts = new int[maxLength];
-			}
-			
-			/// <summary>
-			/// Resets the internal state of the tree
-			/// </summary>
-			public void Reset() 
-			{
-				for (int i = 0; i < freqs.Length; i++) {
-					freqs[i] = 0;
-				}
-				codes = null;
-				length = null;
-			}
-			
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public void WriteSymbol(int code)
-			{
-				//				if (DeflaterConstants.DEBUGGING) {
-				//					freqs[code]--;
-				//					//  	  Console.Write("writeSymbol("+freqs.length+","+code+"): ");
-				//				}
-				dh.pending.WriteBits(codes[code] & 0xffff, length[code]);
-			}
-			
-			/// <summary>
-			/// Check that at least one frequency is non-zero
-			/// </summary>
-			/// <exception cref="SharpZipBaseException">
-			/// No frequencies are non-zero
-			/// </exception>
-			public void CheckEmpty()
-			{
-				bool empty = true;
-				for (int i = 0; i < freqs.Length; i++) {
-					if (freqs[i] != 0) {
-						//Console.WriteLine("freqs[" + i + "] == " + freqs[i]);
-						empty = false;
-					}
-				}
-				
-				if (!empty) {
-					throw new SharpZipBaseException("!Empty");
-				}
-				//Console.WriteLine("checkEmpty suceeded!");
-			}
-
-			/// <summary>
-			/// Set static codes and length
-			/// </summary>
-			/// <param name="stCodes">new codes</param>
-			/// <param name="stLength">length for new codes</param>
-			public void SetStaticCodes(short[] stCodes, byte[] stLength)
-			{
-				codes = stCodes;
-				length = stLength;
-			}
-			
-			/// <summary>
-			/// Build dynamic codes and lengths
-			/// </summary>
-			public void BuildCodes() 
-			{
-				int numSymbols = freqs.Length;
-				int[] nextCode = new int[maxLength];
-				int code = 0;
-				codes = new short[freqs.Length];
-				
-				//				if (DeflaterConstants.DEBUGGING) {
-				//					//Console.WriteLine("buildCodes: "+freqs.Length);
-				//				}
-				
-				for (int bits = 0; bits < maxLength; bits++) {
-					nextCode[bits] = code;
-					code += bl_counts[bits] << (15 - bits);
-					//					if (DeflaterConstants.DEBUGGING) {
-					//						//Console.WriteLine("bits: " + ( bits + 1) + " count: " + bl_counts[bits]
-					//						                  +" nextCode: "+code);
-					//					}
-				}
-				if (DeflaterConstants.DEBUGGING && code != 65536) {
-					throw new SharpZipBaseException("Inconsistent bl_counts!");
-				}
-				
-				for (int i=0; i < numCodes; i++) {
-					int bits = length[i];
-					if (bits > 0) {
-						//						if (DeflaterConstants.DEBUGGING) {
-						//								//Console.WriteLine("codes["+i+"] = rev(" + nextCode[bits-1]+"),
-						//								                  +bits);
-						//						}
-						codes[i] = BitReverse(nextCode[bits-1]);
-						nextCode[bits-1] += 1 << (16 - bits);
-					}
-				}
-			}
-			
-			void BuildLength(int[] childs)
-			{
-				this.length = new byte [freqs.Length];
-				int numNodes = childs.Length / 2;
-				int numLeafs = (numNodes + 1) / 2;
-				int overflow = 0;
-				
-				for (int i = 0; i < maxLength; i++) {
-					bl_counts[i] = 0;
-				}
-				
-				/* First calculate optimal bit lengths */
-				int[] lengths = new int[numNodes];
-				lengths[numNodes-1] = 0;
-				
-				for (int i = numNodes - 1; i >= 0; i--) {
-					if (childs[2*i+1] != -1) {
-						int bitLength = lengths[i] + 1;
-						if (bitLength > maxLength) {
-							bitLength = maxLength;
-							overflow++;
-						}
-						lengths[childs[2*i]] = lengths[childs[2*i+1]] = bitLength;
-					} else {
-						/* A leaf node */
-						int bitLength = lengths[i];
-						bl_counts[bitLength - 1]++;
-						this.length[childs[2*i]] = (byte) lengths[i];
-					}
-				}
-				
-				//				if (DeflaterConstants.DEBUGGING) {
-				//					//Console.WriteLine("Tree "+freqs.Length+" lengths:");
-				//					for (int i=0; i < numLeafs; i++) {
-				//						//Console.WriteLine("Node "+childs[2*i]+" freq: "+freqs[childs[2*i]]
-				//						                  + " len: "+length[childs[2*i]]);
-				//					}
-				//				}
-				
-				if (overflow == 0) {
-					return;
-				}
-				
-				int incrBitLen = maxLength - 1;
-				do {
-					/* Find the first bit length which could increase: */
-					while (bl_counts[--incrBitLen] == 0)
-						;
-					
-					/* Move this node one down and remove a corresponding
-					* amount of overflow nodes.
-					*/
-					do {
-						bl_counts[incrBitLen]--;
-						bl_counts[++incrBitLen]++;
-						overflow -= 1 << (maxLength - 1 - incrBitLen);
-					} while (overflow > 0 && incrBitLen < maxLength - 1);
-				} while (overflow > 0);
-				
-				/* We may have overshot above.  Move some nodes from maxLength to
-				* maxLength-1 in that case.
-				*/
-				bl_counts[maxLength-1] += overflow;
-				bl_counts[maxLength-2] -= overflow;
-				
-				/* Now recompute all bit lengths, scanning in increasing
-				* frequency.  It is simpler to reconstruct all lengths instead of
-				* fixing only the wrong ones. This idea is taken from 'ar'
-				* written by Haruhiko Okumura.
-				*
-				* The nodes were inserted with decreasing frequency into the childs
-				* array.
-				*/
-				int nodePtr = 2 * numLeafs;
-				for (int bits = maxLength; bits != 0; bits--) {
-					int n = bl_counts[bits-1];
-					while (n > 0) {
-						int childPtr = 2*childs[nodePtr++];
-						if (childs[childPtr + 1] == -1) {
-							/* We found another leaf */
-							length[childs[childPtr]] = (byte) bits;
-							n--;
-						}
-					}
-				}
-				//				if (DeflaterConstants.DEBUGGING) {
-				//					//Console.WriteLine("*** After overflow elimination. ***");
-				//					for (int i=0; i < numLeafs; i++) {
-				//						//Console.WriteLine("Node "+childs[2*i]+" freq: "+freqs[childs[2*i]]
-				//						                  + " len: "+length[childs[2*i]]);
-				//					}
-				//				}
-			}
-			
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public void BuildTree()
-			{
-				int numSymbols = freqs.Length;
-				
-				/* heap is a priority queue, sorted by frequency, least frequent
-				* nodes first.  The heap is a binary tree, with the property, that
-				* the parent node is smaller than both child nodes.  This assures
-				* that the smallest node is the first parent.
-				*
-				* The binary tree is encoded in an array:  0 is root node and
-				* the nodes 2*n+1, 2*n+2 are the child nodes of node n.
-				*/
-				int[] heap = new int[numSymbols];
-				int heapLen = 0;
-				int maxCode = 0;
-				for (int n = 0; n < numSymbols; n++) {
-					int freq = freqs[n];
-					if (freq != 0) {
-						/* Insert n into heap */
-						int pos = heapLen++;
-						int ppos;
-						while (pos > 0 && freqs[heap[ppos = (pos - 1) / 2]] > freq) {
-							heap[pos] = heap[ppos];
-							pos = ppos;
-						}
-						heap[pos] = n;
-						
-						maxCode = n;
-					}
-				}
-				
-				/* We could encode a single literal with 0 bits but then we
-				* don't see the literals.  Therefore we force at least two
-				* literals to avoid this case.  We don't care about order in
-				* this case, both literals get a 1 bit code.
-				*/
-				while (heapLen < 2) {
-					int node = maxCode < 2 ? ++maxCode : 0;
-					heap[heapLen++] = node;
-				}
-				
-				numCodes = Math.Max(maxCode + 1, minNumCodes);
-				
-				int numLeafs = heapLen;
-				int[] childs = new int[4*heapLen - 2];
-				int[] values = new int[2*heapLen - 1];
-				int numNodes = numLeafs;
-				for (int i = 0; i < heapLen; i++) {
-					int node = heap[i];
-					childs[2*i]   = node;
-					childs[2*i+1] = -1;
-					values[i] = freqs[node] << 8;
-					heap[i] = i;
-				}
-				
-				/* Construct the Huffman tree by repeatedly combining the least two
-				* frequent nodes.
-				*/
-				do {
-					int first = heap[0];
-					int last  = heap[--heapLen];
-					
-					/* Propagate the hole to the leafs of the heap */
-					int ppos = 0;
-					int path = 1;
-					
-					while (path < heapLen) {
-						if (path + 1 < heapLen && values[heap[path]] > values[heap[path+1]]) {
-							path++;
-						}
-							
-						heap[ppos] = heap[path];
-						ppos = path;
-						path = path * 2 + 1;
-					}
-						
-					/* Now propagate the last element down along path.  Normally
-					* it shouldn't go too deep.
-					*/
-					int lastVal = values[last];
-					while ((path = ppos) > 0 && values[heap[ppos = (path - 1)/2]] > lastVal) {
-						heap[path] = heap[ppos];
-					}
-					heap[path] = last;
-					
-					
-					int second = heap[0];
-					
-					/* Create a new node father of first and second */
-					last = numNodes++;
-					childs[2*last] = first;
-					childs[2*last+1] = second;
-					int mindepth = Math.Min(values[first] & 0xff, values[second] & 0xff);
-					values[last] = lastVal = values[first] + values[second] - mindepth + 1;
-					
-					/* Again, propagate the hole to the leafs */
-					ppos = 0;
-					path = 1;
-					
-					while (path < heapLen) {
-						if (path + 1 < heapLen && values[heap[path]] > values[heap[path+1]]) {
-							path++;
-						}
-							
-						heap[ppos] = heap[path];
-						ppos = path;
-						path = ppos * 2 + 1;
-					}
-						
-					/* Now propagate the new element down along path */
-					while ((path = ppos) > 0 && values[heap[ppos = (path - 1)/2]] > lastVal) {
-						heap[path] = heap[ppos];
-					}
-					heap[path] = last;
-				} while (heapLen > 1);
-				
-				if (heap[0] != childs.Length / 2 - 1) {
-					throw new SharpZipBaseException("Heap invariant violated");
-				}
-				
-				BuildLength(childs);
-			}
-			
-			/// <summary>
-			/// Get encoded length
-			/// </summary>
-			/// <returns>Encoded length, the sum of frequencies * lengths</returns>
-			public int GetEncodedLength()
-			{
-				int len = 0;
-				for (int i = 0; i < freqs.Length; i++) {
-					len += freqs[i] * length[i];
-				}
-				return len;
-			}
-			
-			/// <summary>
-			/// Not documented
-			/// </summary>
-			public void CalcBLFreq(Tree blTree) 
-			{
-				int max_count;               /* max repeat count */
-				int min_count;               /* min repeat count */
-				int count;                   /* repeat count of the current code */
-				int curlen = -1;             /* length of current code */
-				
-				int i = 0;
-				while (i < numCodes) {
-					count = 1;
-					int nextlen = length[i];
-					if (nextlen == 0) {
-						max_count = 138;
-						min_count = 3;
-					} else {
-						max_count = 6;
-						min_count = 3;
-						if (curlen != nextlen) {
-							blTree.freqs[nextlen]++;
-							count = 0;
-						}
-					}
-					curlen = nextlen;
-					i++;
-					
-					while (i < numCodes && curlen == length[i]) {
-						i++;
-						if (++count >= max_count) {
-							break;
-						}
-					}
-					
-					if (count < min_count) {
-						blTree.freqs[curlen] += (short)count;
-					} else if (curlen != 0) {
-						blTree.freqs[REP_3_6]++;
-					} else if (count <= 10) {
-						blTree.freqs[REP_3_10]++;
-					} else {
-						blTree.freqs[REP_11_138]++;
-					}
-				}
-			}
-		
-			/// <summary>
-			/// Write tree values
-			/// </summary>
-			/// <param name="blTree">Tree to write</param>
-			public void WriteTree(Tree blTree)
-			{
-				int max_count;               /* max repeat count */
-				int min_count;               /* min repeat count */
-				int count;                   /* repeat count of the current code */
-				int curlen = -1;             /* length of current code */
-				
-				int i = 0;
-				while (i < numCodes) {
-					count = 1;
-					int nextlen = length[i];
-					if (nextlen == 0) {
-						max_count = 138;
-						min_count = 3;
-					} else {
-						max_count = 6;
-						min_count = 3;
-						if (curlen != nextlen) {
-							blTree.WriteSymbol(nextlen);
-							count = 0;
-						}
-					}
-					curlen = nextlen;
-					i++;
-					
-					while (i < numCodes && curlen == length[i]) {
-						i++;
-						if (++count >= max_count) {
-							break;
-						}
-					}
-					
-					if (count < min_count) {
-						while (count-- > 0) {
-							blTree.WriteSymbol(curlen);
-						}
-					} else if (curlen != 0) {
-						blTree.WriteSymbol(REP_3_6);
-						dh.pending.WriteBits(count - 3, 2);
-					} else if (count <= 10) {
-						blTree.WriteSymbol(REP_3_10);
-						dh.pending.WriteBits(count - 3, 3);
-					} else {
-						blTree.WriteSymbol(REP_11_138);
-						dh.pending.WriteBits(count - 11, 7);
-					}
-				}
-			}
-		}
-		
-		/// <summary>
-		/// Pending buffer to use
-		/// </summary>
-		public DeflaterPending pending;
-		
-		Tree literalTree, distTree, blTree;
-		
-		short[] d_buf;
-		byte[]  l_buf;
-		int last_lit;
-		int extra_bits;
-		
-		static short[] staticLCodes;
-		static byte[]  staticLLength;
-		static short[] staticDCodes;
-		static byte[]  staticDLength;
-		
-		/// <summary>
-		/// Reverse the bits of a 16 bit value.
-		/// </summary>
-		/// <param name="toReverse">Value to reverse bits</param>
-		/// <returns>Value with bits reversed</returns>
-		public static short BitReverse(int toReverse) 
-		{
-			return (short) (bit4Reverse[toReverse & 0xF] << 12 | 
-			                bit4Reverse[(toReverse >> 4) & 0xF] << 8 | 
-			                bit4Reverse[(toReverse >> 8) & 0xF] << 4 |
-			                bit4Reverse[toReverse >> 12]);
-		}
-		
-		
-		static DeflaterHuffman() 
-		{
-			/* See RFC 1951 3.2.6 */
-			/* Literal codes */
-			staticLCodes = new short[LITERAL_NUM];
-			staticLLength = new byte[LITERAL_NUM];
-			int i = 0;
-			while (i < 144) {
-				staticLCodes[i] = BitReverse((0x030 + i) << 8);
-				staticLLength[i++] = 8;
-			}
-			while (i < 256) {
-				staticLCodes[i] = BitReverse((0x190 - 144 + i) << 7);
-				staticLLength[i++] = 9;
-			}
-			while (i < 280) {
-				staticLCodes[i] = BitReverse((0x000 - 256 + i) << 9);
-				staticLLength[i++] = 7;
-			}
-			while (i < LITERAL_NUM) {
-				staticLCodes[i] = BitReverse((0x0c0 - 280 + i)  << 8);
-				staticLLength[i++] = 8;
-			}
-			
-			/* Distant codes */
-			staticDCodes = new short[DIST_NUM];
-			staticDLength = new byte[DIST_NUM];
-			for (i = 0; i < DIST_NUM; i++) {
-				staticDCodes[i] = BitReverse(i << 11);
-				staticDLength[i] = 5;
-			}
-		}
-		
-		/// <summary>
-		/// Construct instance with pending buffer
-		/// </summary>
-		/// <param name="pending">Pending buffer to use</param>
-		public DeflaterHuffman(DeflaterPending pending)
-		{
-			this.pending = pending;
-			
-			literalTree = new Tree(this, LITERAL_NUM, 257, 15);
-			distTree    = new Tree(this, DIST_NUM, 1, 15);
-			blTree      = new Tree(this, BITLEN_NUM, 4, 7);
-			
-			d_buf = new short[BUFSIZE];
-			l_buf = new byte [BUFSIZE];
-		}
-
-		/// <summary>
-		/// Reset internal state
-		/// </summary>		
-		public void Reset() 
-		{
-			last_lit = 0;
-			extra_bits = 0;
-			literalTree.Reset();
-			distTree.Reset();
-			blTree.Reset();
-		}
-		
-		int Lcode(int len) 
-		{
-			if (len == 255) {
-				return 285;
-			}
-			
-			int code = 257;
-			while (len >= 8) {
-				code += 4;
-				len >>= 1;
-			}
-			return code + len;
-		}
-		
-		int Dcode(int distance) 
-		{
-			int code = 0;
-			while (distance >= 4) {
-				code += 2;
-				distance >>= 1;
-			}
-			return code + distance;
-		}
-
-		/// <summary>
-		/// Write all trees to pending buffer
-		/// </summary>		
-		public void SendAllTrees(int blTreeCodes)
-		{
-			blTree.BuildCodes();
-			literalTree.BuildCodes();
-			distTree.BuildCodes();
-			pending.WriteBits(literalTree.numCodes - 257, 5);
-			pending.WriteBits(distTree.numCodes - 1, 5);
-			pending.WriteBits(blTreeCodes - 4, 4);
-			for (int rank = 0; rank < blTreeCodes; rank++) {
-				pending.WriteBits(blTree.length[BL_ORDER[rank]], 3);
-			}
-			literalTree.WriteTree(blTree);
-			distTree.WriteTree(blTree);
-			//			if (DeflaterConstants.DEBUGGING) {
-			//				blTree.CheckEmpty();
-			//			}
-		}
-
-		/// <summary>
-		/// Compress current buffer writing data to pending buffer
-		/// </summary>
-		public void CompressBlock()
-		{
-			for (int i = 0; i < last_lit; i++) {
-				int litlen = l_buf[i] & 0xff;
-				int dist = d_buf[i];
-				if (dist-- != 0) {
-					//					if (DeflaterConstants.DEBUGGING) {
-					//						Console.Write("["+(dist+1)+","+(litlen+3)+"]: ");
-					//					}
-					
-					int lc = Lcode(litlen);
-					literalTree.WriteSymbol(lc);
-					
-					int bits = (lc - 261) / 4;
-					if (bits > 0 && bits <= 5) {
-						pending.WriteBits(litlen & ((1 << bits) - 1), bits);
-					}
-					
-					int dc = Dcode(dist);
-					distTree.WriteSymbol(dc);
-					
-					bits = dc / 2 - 1;
-					if (bits > 0) {
-						pending.WriteBits(dist & ((1 << bits) - 1), bits);
-					}
-				} else {
-					//					if (DeflaterConstants.DEBUGGING) {
-					//						if (litlen > 32 && litlen < 127) {
-					//							Console.Write("("+(char)litlen+"): ");
-					//						} else {
-					//							Console.Write("{"+litlen+"}: ");
-					//						}
-					//					}
-					literalTree.WriteSymbol(litlen);
-				}
-			}
-			//			if (DeflaterConstants.DEBUGGING) {
-			//				Console.Write("EOF: ");
-			//			}
-			literalTree.WriteSymbol(EOF_SYMBOL);
-			//			if (DeflaterConstants.DEBUGGING) {
-			//				literalTree.CheckEmpty();
-			//				distTree.CheckEmpty();
-			//			}
-		}
-		
-		/// <summary>
-		/// Flush block to output with no compression
-		/// </summary>
-		/// <param name="stored">Data to write</param>
-		/// <param name="storedOffset">Index of first byte to write</param>
-		/// <param name="storedLength">Count of bytes to write</param>
-		/// <param name="lastBlock">True if this is the last block</param>
-		public void FlushStoredBlock(byte[] stored, int storedOffset, int storedLength, bool lastBlock)
-		{
-			//			if (DeflaterConstants.DEBUGGING) {
-			//				//Console.WriteLine("Flushing stored block "+ storedLength);
-			//			}
-			pending.WriteBits((DeflaterConstants.STORED_BLOCK << 1) + (lastBlock ? 1 : 0), 3);
-			pending.AlignToByte();
-			pending.WriteShort(storedLength);
-			pending.WriteShort(~storedLength);
-			pending.WriteBlock(stored, storedOffset, storedLength);
-			Reset();
-		}
-
-		/// <summary>
-		/// Flush block to output with compression
-		/// </summary>		
-		/// <param name="stored">Data to flush</param>
-		/// <param name="storedOffset">Index of first byte to flush</param>
-		/// <param name="storedLength">Count of bytes to flush</param>
-		/// <param name="lastBlock">True if this is the last block</param>
-		public void FlushBlock(byte[] stored, int storedOffset, int storedLength, bool lastBlock)
-		{
-			literalTree.freqs[EOF_SYMBOL]++;
-			
-			/* Build trees */
-			literalTree.BuildTree();
-			distTree.BuildTree();
-			
-			/* Calculate bitlen frequency */
-			literalTree.CalcBLFreq(blTree);
-			distTree.CalcBLFreq(blTree);
-			
-			/* Build bitlen tree */
-			blTree.BuildTree();
-			
-			int blTreeCodes = 4;
-			for (int i = 18; i > blTreeCodes; i--) {
-				if (blTree.length[BL_ORDER[i]] > 0) {
-					blTreeCodes = i+1;
-				}
-			}
-			int opt_len = 14 + blTreeCodes * 3 + blTree.GetEncodedLength() + 
-				literalTree.GetEncodedLength() + distTree.GetEncodedLength() + 
-				extra_bits;
-			
-			int static_len = extra_bits;
-			for (int i = 0; i < LITERAL_NUM; i++) {
-				static_len += literalTree.freqs[i] * staticLLength[i];
-			}
-			for (int i = 0; i < DIST_NUM; i++) {
-				static_len += distTree.freqs[i] * staticDLength[i];
-			}
-			if (opt_len >= static_len) {
-				/* Force static trees */
-				opt_len = static_len;
-			}
-			
-			if (storedOffset >= 0 && (storedLength + 4 < (opt_len >> 3))) {
-				/* Store Block */
-				//				if (DeflaterConstants.DEBUGGING) {
-				//					//Console.WriteLine("Storing, since " + storedLength + " < " + opt_len
-				//					                  + " <= " + static_len);
-				//				}
-				FlushStoredBlock(stored, storedOffset, storedLength, lastBlock);
-			} else if (opt_len == static_len) {
-				/* Encode with static tree */
-				pending.WriteBits((DeflaterConstants.STATIC_TREES << 1) + (lastBlock ? 1 : 0), 3);
-				literalTree.SetStaticCodes(staticLCodes, staticLLength);
-				distTree.SetStaticCodes(staticDCodes, staticDLength);
-				CompressBlock();
-				Reset();
-			} else {
-				/* Encode with dynamic tree */
-				pending.WriteBits((DeflaterConstants.DYN_TREES << 1) + (lastBlock ? 1 : 0), 3);
-				SendAllTrees(blTreeCodes);
-				CompressBlock();
-				Reset();
-			}
-		}
-		
-		/// <summary>
-		/// Get value indicating if internal buffer is full
-		/// </summary>
-		/// <returns>true if buffer is full</returns>
-		public bool IsFull()
-		{
-			return last_lit >= BUFSIZE;
-		}
-		
-		/// <summary>
-		/// Add literal to buffer
-		/// </summary>
-		/// <param name="lit"></param>
-		/// <returns>Value indicating internal buffer is full</returns>
-		public bool TallyLit(int lit)
-		{
-			//			if (DeflaterConstants.DEBUGGING) {
-			//				if (lit > 32 && lit < 127) {
-			//					//Console.WriteLine("("+(char)lit+")");
-			//				} else {
-			//					//Console.WriteLine("{"+lit+"}");
-			//				}
-			//			}
-			d_buf[last_lit] = 0;
-			l_buf[last_lit++] = (byte)lit;
-			literalTree.freqs[lit]++;
-			return IsFull();
-		}
-		
-		/// <summary>
-		/// Add distance code and length to literal and distance trees
-		/// </summary>
-		/// <param name="dist">Distance code</param>
-		/// <param name="len">Length</param>
-		/// <returns>Value indicating if internal buffer is full</returns>
-		public bool TallyDist(int dist, int len)
-		{
-			//			if (DeflaterConstants.DEBUGGING) {
-			//				//Console.WriteLine("["+dist+","+len+"]");
-			//			}
-			
-			d_buf[last_lit]   = (short)dist;
-			l_buf[last_lit++] = (byte)(len - 3);
-			
-			int lc = Lcode(len - 3);
-			literalTree.freqs[lc]++;
-			if (lc >= 265 && lc < 285) {
-				extra_bits += (lc - 261) / 4;
-			}
-			
-			int dc = Dcode(dist - 1);
-			distTree.freqs[dc]++;
-			if (dc >= 4) {
-				extra_bits += dc / 2 - 1;
-			}
-			return IsFull();
-		}
-	}
-}
+// DeflaterHuffman.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	/// <summary>
+	/// This is the DeflaterHuffman class.
+	/// 
+	/// This class is <i>not</i> thread safe.  This is inherent in the API, due
+	/// to the split of deflate and setInput.
+	/// 
+	/// author of the original java version : Jochen Hoenicke
+	/// </summary>
+	public class DeflaterHuffman
+	{
+		static  int BUFSIZE = 1 << (DeflaterConstants.DEFAULT_MEM_LEVEL + 6);
+		static  int LITERAL_NUM = 286;
+		static  int DIST_NUM = 30;
+		static  int BITLEN_NUM = 19;
+		static  int REP_3_6    = 16;
+		static  int REP_3_10   = 17;
+		static  int REP_11_138 = 18;
+		static  int EOF_SYMBOL = 256;
+		static  int[] BL_ORDER = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
+		
+		static byte[] bit4Reverse = {
+			0,
+			8,
+			4,
+			12,
+			2,
+			10,
+			6,
+			14,
+			1,
+			9,
+			5,
+			13,
+			3,
+			11,
+			7,
+			15
+		};
+		
+		/// <summary>
+		/// Not documented
+		/// </summary>
+		public class Tree 
+		{
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public short[] freqs;
+			
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public byte[]  length;
+			
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public int     minNumCodes;
+			
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public int     numCodes;
+			
+			short[] codes;
+			int[]   bl_counts;
+			int     maxLength;
+			DeflaterHuffman dh;
+			
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public Tree(DeflaterHuffman dh, int elems, int minCodes, int maxLength) 
+			{
+				this.dh =  dh;
+				this.minNumCodes = minCodes;
+				this.maxLength  = maxLength;
+				freqs  = new short[elems];
+				bl_counts = new int[maxLength];
+			}
+			
+			/// <summary>
+			/// Resets the internal state of the tree
+			/// </summary>
+			public void Reset() 
+			{
+				for (int i = 0; i < freqs.Length; i++) {
+					freqs[i] = 0;
+				}
+				codes = null;
+				length = null;
+			}
+			
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public void WriteSymbol(int code)
+			{
+				//				if (DeflaterConstants.DEBUGGING) {
+				//					freqs[code]--;
+				//					//  	  Console.Write("writeSymbol("+freqs.length+","+code+"): ");
+				//				}
+				dh.pending.WriteBits(codes[code] & 0xffff, length[code]);
+			}
+			
+			/// <summary>
+			/// Check that at least one frequency is non-zero
+			/// </summary>
+			/// <exception cref="SharpZipBaseException">
+			/// No frequencies are non-zero
+			/// </exception>
+			public void CheckEmpty()
+			{
+				bool empty = true;
+				for (int i = 0; i < freqs.Length; i++) {
+					if (freqs[i] != 0) {
+						//Console.WriteLine("freqs[" + i + "] == " + freqs[i]);
+						empty = false;
+					}
+				}
+				
+				if (!empty) {
+					throw new SharpZipBaseException("!Empty");
+				}
+				//Console.WriteLine("checkEmpty suceeded!");
+			}
+
+			/// <summary>
+			/// Set static codes and length
+			/// </summary>
+			/// <param name="stCodes">new codes</param>
+			/// <param name="stLength">length for new codes</param>
+			public void SetStaticCodes(short[] stCodes, byte[] stLength)
+			{
+				codes = stCodes;
+				length = stLength;
+			}
+			
+			/// <summary>
+			/// Build dynamic codes and lengths
+			/// </summary>
+			public void BuildCodes() 
+			{
+				int numSymbols = freqs.Length;
+				int[] nextCode = new int[maxLength];
+				int code = 0;
+				codes = new short[freqs.Length];
+				
+				//				if (DeflaterConstants.DEBUGGING) {
+				//					//Console.WriteLine("buildCodes: "+freqs.Length);
+				//				}
+				
+				for (int bits = 0; bits < maxLength; bits++) {
+					nextCode[bits] = code;
+					code += bl_counts[bits] << (15 - bits);
+					//					if (DeflaterConstants.DEBUGGING) {
+					//						//Console.WriteLine("bits: " + ( bits + 1) + " count: " + bl_counts[bits]
+					//						                  +" nextCode: "+code);
+					//					}
+				}
+				if (DeflaterConstants.DEBUGGING && code != 65536) {
+					throw new SharpZipBaseException("Inconsistent bl_counts!");
+				}
+				
+				for (int i=0; i < numCodes; i++) {
+					int bits = length[i];
+					if (bits > 0) {
+						//						if (DeflaterConstants.DEBUGGING) {
+						//								//Console.WriteLine("codes["+i+"] = rev(" + nextCode[bits-1]+"),
+						//								                  +bits);
+						//						}
+						codes[i] = BitReverse(nextCode[bits-1]);
+						nextCode[bits-1] += 1 << (16 - bits);
+					}
+				}
+			}
+			
+			void BuildLength(int[] childs)
+			{
+				this.length = new byte [freqs.Length];
+				int numNodes = childs.Length / 2;
+				int numLeafs = (numNodes + 1) / 2;
+				int overflow = 0;
+				
+				for (int i = 0; i < maxLength; i++) {
+					bl_counts[i] = 0;
+				}
+				
+				/* First calculate optimal bit lengths */
+				int[] lengths = new int[numNodes];
+				lengths[numNodes-1] = 0;
+				
+				for (int i = numNodes - 1; i >= 0; i--) {
+					if (childs[2*i+1] != -1) {
+						int bitLength = lengths[i] + 1;
+						if (bitLength > maxLength) {
+							bitLength = maxLength;
+							overflow++;
+						}
+						lengths[childs[2*i]] = lengths[childs[2*i+1]] = bitLength;
+					} else {
+						/* A leaf node */
+						int bitLength = lengths[i];
+						bl_counts[bitLength - 1]++;
+						this.length[childs[2*i]] = (byte) lengths[i];
+					}
+				}
+				
+				//				if (DeflaterConstants.DEBUGGING) {
+				//					//Console.WriteLine("Tree "+freqs.Length+" lengths:");
+				//					for (int i=0; i < numLeafs; i++) {
+				//						//Console.WriteLine("Node "+childs[2*i]+" freq: "+freqs[childs[2*i]]
+				//						                  + " len: "+length[childs[2*i]]);
+				//					}
+				//				}
+				
+				if (overflow == 0) {
+					return;
+				}
+				
+				int incrBitLen = maxLength - 1;
+				do {
+					/* Find the first bit length which could increase: */
+					while (bl_counts[--incrBitLen] == 0)
+						;
+					
+					/* Move this node one down and remove a corresponding
+					* amount of overflow nodes.
+					*/
+					do {
+						bl_counts[incrBitLen]--;
+						bl_counts[++incrBitLen]++;
+						overflow -= 1 << (maxLength - 1 - incrBitLen);
+					} while (overflow > 0 && incrBitLen < maxLength - 1);
+				} while (overflow > 0);
+				
+				/* We may have overshot above.  Move some nodes from maxLength to
+				* maxLength-1 in that case.
+				*/
+				bl_counts[maxLength-1] += overflow;
+				bl_counts[maxLength-2] -= overflow;
+				
+				/* Now recompute all bit lengths, scanning in increasing
+				* frequency.  It is simpler to reconstruct all lengths instead of
+				* fixing only the wrong ones. This idea is taken from 'ar'
+				* written by Haruhiko Okumura.
+				*
+				* The nodes were inserted with decreasing frequency into the childs
+				* array.
+				*/
+				int nodePtr = 2 * numLeafs;
+				for (int bits = maxLength; bits != 0; bits--) {
+					int n = bl_counts[bits-1];
+					while (n > 0) {
+						int childPtr = 2*childs[nodePtr++];
+						if (childs[childPtr + 1] == -1) {
+							/* We found another leaf */
+							length[childs[childPtr]] = (byte) bits;
+							n--;
+						}
+					}
+				}
+				//				if (DeflaterConstants.DEBUGGING) {
+				//					//Console.WriteLine("*** After overflow elimination. ***");
+				//					for (int i=0; i < numLeafs; i++) {
+				//						//Console.WriteLine("Node "+childs[2*i]+" freq: "+freqs[childs[2*i]]
+				//						                  + " len: "+length[childs[2*i]]);
+				//					}
+				//				}
+			}
+			
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public void BuildTree()
+			{
+				int numSymbols = freqs.Length;
+				
+				/* heap is a priority queue, sorted by frequency, least frequent
+				* nodes first.  The heap is a binary tree, with the property, that
+				* the parent node is smaller than both child nodes.  This assures
+				* that the smallest node is the first parent.
+				*
+				* The binary tree is encoded in an array:  0 is root node and
+				* the nodes 2*n+1, 2*n+2 are the child nodes of node n.
+				*/
+				int[] heap = new int[numSymbols];
+				int heapLen = 0;
+				int maxCode = 0;
+				for (int n = 0; n < numSymbols; n++) {
+					int freq = freqs[n];
+					if (freq != 0) {
+						/* Insert n into heap */
+						int pos = heapLen++;
+						int ppos;
+						while (pos > 0 && freqs[heap[ppos = (pos - 1) / 2]] > freq) {
+							heap[pos] = heap[ppos];
+							pos = ppos;
+						}
+						heap[pos] = n;
+						
+						maxCode = n;
+					}
+				}
+				
+				/* We could encode a single literal with 0 bits but then we
+				* don't see the literals.  Therefore we force at least two
+				* literals to avoid this case.  We don't care about order in
+				* this case, both literals get a 1 bit code.
+				*/
+				while (heapLen < 2) {
+					int node = maxCode < 2 ? ++maxCode : 0;
+					heap[heapLen++] = node;
+				}
+				
+				numCodes = Math.Max(maxCode + 1, minNumCodes);
+				
+				int numLeafs = heapLen;
+				int[] childs = new int[4*heapLen - 2];
+				int[] values = new int[2*heapLen - 1];
+				int numNodes = numLeafs;
+				for (int i = 0; i < heapLen; i++) {
+					int node = heap[i];
+					childs[2*i]   = node;
+					childs[2*i+1] = -1;
+					values[i] = freqs[node] << 8;
+					heap[i] = i;
+				}
+				
+				/* Construct the Huffman tree by repeatedly combining the least two
+				* frequent nodes.
+				*/
+				do {
+					int first = heap[0];
+					int last  = heap[--heapLen];
+					
+					/* Propagate the hole to the leafs of the heap */
+					int ppos = 0;
+					int path = 1;
+					
+					while (path < heapLen) {
+						if (path + 1 < heapLen && values[heap[path]] > values[heap[path+1]]) {
+							path++;
+						}
+							
+						heap[ppos] = heap[path];
+						ppos = path;
+						path = path * 2 + 1;
+					}
+						
+					/* Now propagate the last element down along path.  Normally
+					* it shouldn't go too deep.
+					*/
+					int lastVal = values[last];
+					while ((path = ppos) > 0 && values[heap[ppos = (path - 1)/2]] > lastVal) {
+						heap[path] = heap[ppos];
+					}
+					heap[path] = last;
+					
+					
+					int second = heap[0];
+					
+					/* Create a new node father of first and second */
+					last = numNodes++;
+					childs[2*last] = first;
+					childs[2*last+1] = second;
+					int mindepth = Math.Min(values[first] & 0xff, values[second] & 0xff);
+					values[last] = lastVal = values[first] + values[second] - mindepth + 1;
+					
+					/* Again, propagate the hole to the leafs */
+					ppos = 0;
+					path = 1;
+					
+					while (path < heapLen) {
+						if (path + 1 < heapLen && values[heap[path]] > values[heap[path+1]]) {
+							path++;
+						}
+							
+						heap[ppos] = heap[path];
+						ppos = path;
+						path = ppos * 2 + 1;
+					}
+						
+					/* Now propagate the new element down along path */
+					while ((path = ppos) > 0 && values[heap[ppos = (path - 1)/2]] > lastVal) {
+						heap[path] = heap[ppos];
+					}
+					heap[path] = last;
+				} while (heapLen > 1);
+				
+				if (heap[0] != childs.Length / 2 - 1) {
+					throw new SharpZipBaseException("Heap invariant violated");
+				}
+				
+				BuildLength(childs);
+			}
+			
+			/// <summary>
+			/// Get encoded length
+			/// </summary>
+			/// <returns>Encoded length, the sum of frequencies * lengths</returns>
+			public int GetEncodedLength()
+			{
+				int len = 0;
+				for (int i = 0; i < freqs.Length; i++) {
+					len += freqs[i] * length[i];
+				}
+				return len;
+			}
+			
+			/// <summary>
+			/// Not documented
+			/// </summary>
+			public void CalcBLFreq(Tree blTree) 
+			{
+				int max_count;               /* max repeat count */
+				int min_count;               /* min repeat count */
+				int count;                   /* repeat count of the current code */
+				int curlen = -1;             /* length of current code */
+				
+				int i = 0;
+				while (i < numCodes) {
+					count = 1;
+					int nextlen = length[i];
+					if (nextlen == 0) {
+						max_count = 138;
+						min_count = 3;
+					} else {
+						max_count = 6;
+						min_count = 3;
+						if (curlen != nextlen) {
+							blTree.freqs[nextlen]++;
+							count = 0;
+						}
+					}
+					curlen = nextlen;
+					i++;
+					
+					while (i < numCodes && curlen == length[i]) {
+						i++;
+						if (++count >= max_count) {
+							break;
+						}
+					}
+					
+					if (count < min_count) {
+						blTree.freqs[curlen] += (short)count;
+					} else if (curlen != 0) {
+						blTree.freqs[REP_3_6]++;
+					} else if (count <= 10) {
+						blTree.freqs[REP_3_10]++;
+					} else {
+						blTree.freqs[REP_11_138]++;
+					}
+				}
+			}
+		
+			/// <summary>
+			/// Write tree values
+			/// </summary>
+			/// <param name="blTree">Tree to write</param>
+			public void WriteTree(Tree blTree)
+			{
+				int max_count;               /* max repeat count */
+				int min_count;               /* min repeat count */
+				int count;                   /* repeat count of the current code */
+				int curlen = -1;             /* length of current code */
+				
+				int i = 0;
+				while (i < numCodes) {
+					count = 1;
+					int nextlen = length[i];
+					if (nextlen == 0) {
+						max_count = 138;
+						min_count = 3;
+					} else {
+						max_count = 6;
+						min_count = 3;
+						if (curlen != nextlen) {
+							blTree.WriteSymbol(nextlen);
+							count = 0;
+						}
+					}
+					curlen = nextlen;
+					i++;
+					
+					while (i < numCodes && curlen == length[i]) {
+						i++;
+						if (++count >= max_count) {
+							break;
+						}
+					}
+					
+					if (count < min_count) {
+						while (count-- > 0) {
+							blTree.WriteSymbol(curlen);
+						}
+					} else if (curlen != 0) {
+						blTree.WriteSymbol(REP_3_6);
+						dh.pending.WriteBits(count - 3, 2);
+					} else if (count <= 10) {
+						blTree.WriteSymbol(REP_3_10);
+						dh.pending.WriteBits(count - 3, 3);
+					} else {
+						blTree.WriteSymbol(REP_11_138);
+						dh.pending.WriteBits(count - 11, 7);
+					}
+				}
+			}
+		}
+		
+		/// <summary>
+		/// Pending buffer to use
+		/// </summary>
+		public DeflaterPending pending;
+		
+		Tree literalTree, distTree, blTree;
+		
+		short[] d_buf;
+		byte[]  l_buf;
+		int last_lit;
+		int extra_bits;
+		
+		static short[] staticLCodes;
+		static byte[]  staticLLength;
+		static short[] staticDCodes;
+		static byte[]  staticDLength;
+		
+		/// <summary>
+		/// Reverse the bits of a 16 bit value.
+		/// </summary>
+		/// <param name="toReverse">Value to reverse bits</param>
+		/// <returns>Value with bits reversed</returns>
+		public static short BitReverse(int toReverse) 
+		{
+			return (short) (bit4Reverse[toReverse & 0xF] << 12 | 
+			                bit4Reverse[(toReverse >> 4) & 0xF] << 8 | 
+			                bit4Reverse[(toReverse >> 8) & 0xF] << 4 |
+			                bit4Reverse[toReverse >> 12]);
+		}
+		
+		
+		static DeflaterHuffman() 
+		{
+			/* See RFC 1951 3.2.6 */
+			/* Literal codes */
+			staticLCodes = new short[LITERAL_NUM];
+			staticLLength = new byte[LITERAL_NUM];
+			int i = 0;
+			while (i < 144) {
+				staticLCodes[i] = BitReverse((0x030 + i) << 8);
+				staticLLength[i++] = 8;
+			}
+			while (i < 256) {
+				staticLCodes[i] = BitReverse((0x190 - 144 + i) << 7);
+				staticLLength[i++] = 9;
+			}
+			while (i < 280) {
+				staticLCodes[i] = BitReverse((0x000 - 256 + i) << 9);
+				staticLLength[i++] = 7;
+			}
+			while (i < LITERAL_NUM) {
+				staticLCodes[i] = BitReverse((0x0c0 - 280 + i)  << 8);
+				staticLLength[i++] = 8;
+			}
+			
+			/* Distant codes */
+			staticDCodes = new short[DIST_NUM];
+			staticDLength = new byte[DIST_NUM];
+			for (i = 0; i < DIST_NUM; i++) {
+				staticDCodes[i] = BitReverse(i << 11);
+				staticDLength[i] = 5;
+			}
+		}
+		
+		/// <summary>
+		/// Construct instance with pending buffer
+		/// </summary>
+		/// <param name="pending">Pending buffer to use</param>
+		public DeflaterHuffman(DeflaterPending pending)
+		{
+			this.pending = pending;
+			
+			literalTree = new Tree(this, LITERAL_NUM, 257, 15);
+			distTree    = new Tree(this, DIST_NUM, 1, 15);
+			blTree      = new Tree(this, BITLEN_NUM, 4, 7);
+			
+			d_buf = new short[BUFSIZE];
+			l_buf = new byte [BUFSIZE];
+		}
+
+		/// <summary>
+		/// Reset internal state
+		/// </summary>		
+		public void Reset() 
+		{
+			last_lit = 0;
+			extra_bits = 0;
+			literalTree.Reset();
+			distTree.Reset();
+			blTree.Reset();
+		}
+		
+		int Lcode(int len) 
+		{
+			if (len == 255) {
+				return 285;
+			}
+			
+			int code = 257;
+			while (len >= 8) {
+				code += 4;
+				len >>= 1;
+			}
+			return code + len;
+		}
+		
+		int Dcode(int distance) 
+		{
+			int code = 0;
+			while (distance >= 4) {
+				code += 2;
+				distance >>= 1;
+			}
+			return code + distance;
+		}
+
+		/// <summary>
+		/// Write all trees to pending buffer
+		/// </summary>		
+		public void SendAllTrees(int blTreeCodes)
+		{
+			blTree.BuildCodes();
+			literalTree.BuildCodes();
+			distTree.BuildCodes();
+			pending.WriteBits(literalTree.numCodes - 257, 5);
+			pending.WriteBits(distTree.numCodes - 1, 5);
+			pending.WriteBits(blTreeCodes - 4, 4);
+			for (int rank = 0; rank < blTreeCodes; rank++) {
+				pending.WriteBits(blTree.length[BL_ORDER[rank]], 3);
+			}
+			literalTree.WriteTree(blTree);
+			distTree.WriteTree(blTree);
+			//			if (DeflaterConstants.DEBUGGING) {
+			//				blTree.CheckEmpty();
+			//			}
+		}
+
+		/// <summary>
+		/// Compress current buffer writing data to pending buffer
+		/// </summary>
+		public void CompressBlock()
+		{
+			for (int i = 0; i < last_lit; i++) {
+				int litlen = l_buf[i] & 0xff;
+				int dist = d_buf[i];
+				if (dist-- != 0) {
+					//					if (DeflaterConstants.DEBUGGING) {
+					//						Console.Write("["+(dist+1)+","+(litlen+3)+"]: ");
+					//					}
+					
+					int lc = Lcode(litlen);
+					literalTree.WriteSymbol(lc);
+					
+					int bits = (lc - 261) / 4;
+					if (bits > 0 && bits <= 5) {
+						pending.WriteBits(litlen & ((1 << bits) - 1), bits);
+					}
+					
+					int dc = Dcode(dist);
+					distTree.WriteSymbol(dc);
+					
+					bits = dc / 2 - 1;
+					if (bits > 0) {
+						pending.WriteBits(dist & ((1 << bits) - 1), bits);
+					}
+				} else {
+					//					if (DeflaterConstants.DEBUGGING) {
+					//						if (litlen > 32 && litlen < 127) {
+					//							Console.Write("("+(char)litlen+"): ");
+					//						} else {
+					//							Console.Write("{"+litlen+"}: ");
+					//						}
+					//					}
+					literalTree.WriteSymbol(litlen);
+				}
+			}
+			//			if (DeflaterConstants.DEBUGGING) {
+			//				Console.Write("EOF: ");
+			//			}
+			literalTree.WriteSymbol(EOF_SYMBOL);
+			//			if (DeflaterConstants.DEBUGGING) {
+			//				literalTree.CheckEmpty();
+			//				distTree.CheckEmpty();
+			//			}
+		}
+		
+		/// <summary>
+		/// Flush block to output with no compression
+		/// </summary>
+		/// <param name="stored">Data to write</param>
+		/// <param name="storedOffset">Index of first byte to write</param>
+		/// <param name="storedLength">Count of bytes to write</param>
+		/// <param name="lastBlock">True if this is the last block</param>
+		public void FlushStoredBlock(byte[] stored, int storedOffset, int storedLength, bool lastBlock)
+		{
+			//			if (DeflaterConstants.DEBUGGING) {
+			//				//Console.WriteLine("Flushing stored block "+ storedLength);
+			//			}
+			pending.WriteBits((DeflaterConstants.STORED_BLOCK << 1) + (lastBlock ? 1 : 0), 3);
+			pending.AlignToByte();
+			pending.WriteShort(storedLength);
+			pending.WriteShort(~storedLength);
+			pending.WriteBlock(stored, storedOffset, storedLength);
+			Reset();
+		}
+
+		/// <summary>
+		/// Flush block to output with compression
+		/// </summary>		
+		/// <param name="stored">Data to flush</param>
+		/// <param name="storedOffset">Index of first byte to flush</param>
+		/// <param name="storedLength">Count of bytes to flush</param>
+		/// <param name="lastBlock">True if this is the last block</param>
+		public void FlushBlock(byte[] stored, int storedOffset, int storedLength, bool lastBlock)
+		{
+			literalTree.freqs[EOF_SYMBOL]++;
+			
+			/* Build trees */
+			literalTree.BuildTree();
+			distTree.BuildTree();
+			
+			/* Calculate bitlen frequency */
+			literalTree.CalcBLFreq(blTree);
+			distTree.CalcBLFreq(blTree);
+			
+			/* Build bitlen tree */
+			blTree.BuildTree();
+			
+			int blTreeCodes = 4;
+			for (int i = 18; i > blTreeCodes; i--) {
+				if (blTree.length[BL_ORDER[i]] > 0) {
+					blTreeCodes = i+1;
+				}
+			}
+			int opt_len = 14 + blTreeCodes * 3 + blTree.GetEncodedLength() + 
+				literalTree.GetEncodedLength() + distTree.GetEncodedLength() + 
+				extra_bits;
+			
+			int static_len = extra_bits;
+			for (int i = 0; i < LITERAL_NUM; i++) {
+				static_len += literalTree.freqs[i] * staticLLength[i];
+			}
+			for (int i = 0; i < DIST_NUM; i++) {
+				static_len += distTree.freqs[i] * staticDLength[i];
+			}
+			if (opt_len >= static_len) {
+				/* Force static trees */
+				opt_len = static_len;
+			}
+			
+			if (storedOffset >= 0 && (storedLength + 4 < (opt_len >> 3))) {
+				/* Store Block */
+				//				if (DeflaterConstants.DEBUGGING) {
+				//					//Console.WriteLine("Storing, since " + storedLength + " < " + opt_len
+				//					                  + " <= " + static_len);
+				//				}
+				FlushStoredBlock(stored, storedOffset, storedLength, lastBlock);
+			} else if (opt_len == static_len) {
+				/* Encode with static tree */
+				pending.WriteBits((DeflaterConstants.STATIC_TREES << 1) + (lastBlock ? 1 : 0), 3);
+				literalTree.SetStaticCodes(staticLCodes, staticLLength);
+				distTree.SetStaticCodes(staticDCodes, staticDLength);
+				CompressBlock();
+				Reset();
+			} else {
+				/* Encode with dynamic tree */
+				pending.WriteBits((DeflaterConstants.DYN_TREES << 1) + (lastBlock ? 1 : 0), 3);
+				SendAllTrees(blTreeCodes);
+				CompressBlock();
+				Reset();
+			}
+		}
+		
+		/// <summary>
+		/// Get value indicating if internal buffer is full
+		/// </summary>
+		/// <returns>true if buffer is full</returns>
+		public bool IsFull()
+		{
+			return last_lit >= BUFSIZE;
+		}
+		
+		/// <summary>
+		/// Add literal to buffer
+		/// </summary>
+		/// <param name="lit"></param>
+		/// <returns>Value indicating internal buffer is full</returns>
+		public bool TallyLit(int lit)
+		{
+			//			if (DeflaterConstants.DEBUGGING) {
+			//				if (lit > 32 && lit < 127) {
+			//					//Console.WriteLine("("+(char)lit+")");
+			//				} else {
+			//					//Console.WriteLine("{"+lit+"}");
+			//				}
+			//			}
+			d_buf[last_lit] = 0;
+			l_buf[last_lit++] = (byte)lit;
+			literalTree.freqs[lit]++;
+			return IsFull();
+		}
+		
+		/// <summary>
+		/// Add distance code and length to literal and distance trees
+		/// </summary>
+		/// <param name="dist">Distance code</param>
+		/// <param name="len">Length</param>
+		/// <returns>Value indicating if internal buffer is full</returns>
+		public bool TallyDist(int dist, int len)
+		{
+			//			if (DeflaterConstants.DEBUGGING) {
+			//				//Console.WriteLine("["+dist+","+len+"]");
+			//			}
+			
+			d_buf[last_lit]   = (short)dist;
+			l_buf[last_lit++] = (byte)(len - 3);
+			
+			int lc = Lcode(len - 3);
+			literalTree.freqs[lc]++;
+			if (lc >= 265 && lc < 285) {
+				extra_bits += (lc - 261) / 4;
+			}
+			
+			int dc = Dcode(dist - 1);
+			distTree.freqs[dc]++;
+			if (dc >= 4) {
+				extra_bits += dc / 2 - 1;
+			}
+			return IsFull();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterPending.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/DeflaterPending.cs
@@ -1,57 +1,57 @@
-// DeflaterPending.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	/// <summary>
-	/// This class stores the pending output of the Deflater.
-	/// 
-	/// author of the original java version : Jochen Hoenicke
-	/// </summary>
-	public class DeflaterPending : PendingBuffer
-	{
-		/// <summary>
-		/// Construct instance with default buffer size
-		/// </summary>
-		public DeflaterPending() : base(DeflaterConstants.PENDING_BUF_SIZE)
-		{
-		}
-	}
-}
+// DeflaterPending.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	/// <summary>
+	/// This class stores the pending output of the Deflater.
+	/// 
+	/// author of the original java version : Jochen Hoenicke
+	/// </summary>
+	public class DeflaterPending : PendingBuffer
+	{
+		/// <summary>
+		/// Construct instance with default buffer size
+		/// </summary>
+		public DeflaterPending() : base(DeflaterConstants.PENDING_BUF_SIZE)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Inflater.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Inflater.cs
@@ -1,817 +1,817 @@
-// Inflater.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-using ICSharpCode.SharpZipLib.Checksums;
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	/// <summary>
-	/// Inflater is used to decompress data that has been compressed according
-	/// to the "deflate" standard described in rfc1951.
-	/// 
-	/// By default Zlib (rfc1950) headers and footers are expected in the input.
-	/// You can use constructor <code> public Inflater(bool noHeader)</code> passing true
-	/// if there is no Zlib header information
-	///
-	/// The usage is as following.  First you have to set some input with
-	/// <code>setInput()</code>, then inflate() it.  If inflate doesn't
-	/// inflate any bytes there may be three reasons:
-	/// <ul>
-	/// <li>needsInput() returns true because the input buffer is empty.
-	/// You have to provide more input with <code>setInput()</code>.
-	/// NOTE: needsInput() also returns true when, the stream is finished.
-	/// </li>
-	/// <li>needsDictionary() returns true, you have to provide a preset
-	///    dictionary with <code>setDictionary()</code>.</li>
-	/// <li>finished() returns true, the inflater has finished.</li>
-	/// </ul>
-	/// Once the first output byte is produced, a dictionary will not be
-	/// needed at a later stage.
-	///
-	/// author of the original java version : John Leuner, Jochen Hoenicke
-	/// </summary>
-	public class Inflater
-	{
-		/// <summary>
-		/// Copy lengths for literal codes 257..285
-		/// </summary>
-		static int[] CPLENS = {
-								 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-								 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258
-							  };
-		
-		/// <summary>
-		/// Extra bits for literal codes 257..285
-		/// </summary>
-		static int[] CPLEXT = {
-								 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
-								 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0
-							  };
-		
-		/// <summary>
-		/// Copy offsets for distance codes 0..29
-		/// </summary>
-		static int[] CPDIST = {
-								1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-								257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-								8193, 12289, 16385, 24577
-							  };
-		
-		/// <summary>
-		/// Extra bits for distance codes
-		/// </summary>
-		static int[] CPDEXT = {
-								0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
-								7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
-								12, 12, 13, 13
-							  };
-		
-		/// <summary>
-		/// These are the possible states for an inflater
-		/// </summary>
-		const int DECODE_HEADER           = 0;
-		const int DECODE_DICT             = 1;
-		const int DECODE_BLOCKS           = 2;
-		const int DECODE_STORED_LEN1      = 3;
-		const int DECODE_STORED_LEN2      = 4;
-		const int DECODE_STORED           = 5;
-		const int DECODE_DYN_HEADER       = 6;
-		const int DECODE_HUFFMAN          = 7;
-		const int DECODE_HUFFMAN_LENBITS  = 8;
-		const int DECODE_HUFFMAN_DIST     = 9;
-		const int DECODE_HUFFMAN_DISTBITS = 10;
-		const int DECODE_CHKSUM           = 11;
-		const int FINISHED                = 12;
-		
-		/// <summary>
-		/// This variable contains the current state.
-		/// </summary>
-		int mode;
-		
-		/// <summary>
-		/// The adler checksum of the dictionary or of the decompressed
-		/// stream, as it is written in the header resp. footer of the
-		/// compressed stream. 
-		/// Only valid if mode is DECODE_DICT or DECODE_CHKSUM.
-		/// </summary>
-		int readAdler;
-		
-		/// <summary>
-		/// The number of bits needed to complete the current state.  This
-		/// is valid, if mode is DECODE_DICT, DECODE_CHKSUM,
-		/// DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS.
-		/// </summary>
-		int neededBits;
-		int repLength;
-		int repDist;
-		int uncomprLen;
-		
-		/// <summary>
-		/// True, if the last block flag was set in the last block of the
-		/// inflated stream.  This means that the stream ends after the
-		/// current block.
-		/// </summary>
-		bool isLastBlock;
-		
-		/// <summary>
-		/// The total number of inflated bytes.
-		/// </summary>
-		int totalOut;
-		
-		/// <summary>
-		/// The total number of bytes set with setInput().  This is not the
-		/// value returned by the TotalIn property, since this also includes the
-		/// unprocessed input.
-		/// </summary>
-		int totalIn;
-		
-		/// <summary>
-		/// This variable stores the noHeader flag that was given to the constructor.
-		/// True means, that the inflated stream doesn't contain a Zlib header or 
-		/// footer.
-		/// </summary>
-		bool noHeader;
-		
-		StreamManipulator input;
-		OutputWindow outputWindow;
-		InflaterDynHeader dynHeader;
-		InflaterHuffmanTree litlenTree, distTree;
-		Adler32 adler;
-		
-		/// <summary>
-		/// Creates a new inflater or RFC1951 decompressor
-		/// RFC1950/Zlib headers and footers will be expected in the input data
-		/// </summary>
-		public Inflater() : this(false)
-		{
-		}
-		
-		/// <summary>
-		/// Creates a new inflater.
-		/// </summary>
-		/// <param name="noHeader">
-		/// True if no RFC1950/Zlib header and footer fields are expected in the input data
-		/// 
-		/// This is used for GZIPed/Zipped input.
-		/// 
-		/// For compatibility with
-		/// Sun JDK you should provide one byte of input more than needed in
-		/// this case.
-		/// </param>
-		public Inflater(bool noHeader)
-		{
-			this.noHeader = noHeader;
-			this.adler = new Adler32();
-			input = new StreamManipulator();
-			outputWindow = new OutputWindow();
-			mode = noHeader ? DECODE_BLOCKS : DECODE_HEADER;
-		}
-		
-		/// <summary>
-		/// Resets the inflater so that a new stream can be decompressed.  All
-		/// pending input and output will be discarded.
-		/// </summary>
-		public void Reset()
-		{
-			mode = noHeader ? DECODE_BLOCKS : DECODE_HEADER;
-			totalIn = totalOut = 0;
-			input.Reset();
-			outputWindow.Reset();
-			dynHeader = null;
-			litlenTree = null;
-			distTree = null;
-			isLastBlock = false;
-			adler.Reset();
-		}
-		
-		/// <summary>
-		/// Decodes a zlib/RFC1950 header.
-		/// </summary>
-		/// <returns>
-		/// False if more input is needed.
-		/// </returns>
-		/// <exception cref="SharpZipBaseException">
-		/// The header is invalid.
-		/// </exception>
-		private bool DecodeHeader()
-		{
-			int header = input.PeekBits(16);
-			if (header < 0) {
-				return false;
-			}
-			input.DropBits(16);
-			
-			/* The header is written in "wrong" byte order */
-			header = ((header << 8) | (header >> 8)) & 0xffff;
-			if (header % 31 != 0) {
-				throw new SharpZipBaseException("Header checksum illegal");
-			}
-			
-			if ((header & 0x0f00) != (Deflater.DEFLATED << 8)) {
-				throw new SharpZipBaseException("Compression Method unknown");
-			}
-			
-			/* Maximum size of the backwards window in bits.
-			* We currently ignore this, but we could use it to make the
-			* inflater window more space efficient. On the other hand the
-			* full window (15 bits) is needed most times, anyway.
-			int max_wbits = ((header & 0x7000) >> 12) + 8;
-			*/
-			
-			if ((header & 0x0020) == 0) { // Dictionary flag?
-				mode = DECODE_BLOCKS;
-			} else {
-				mode = DECODE_DICT;
-				neededBits = 32;
-			}
-			return true;
-		}
-		
-		/// <summary>
-		/// Decodes the dictionary checksum after the deflate header.
-		/// </summary>
-		/// <returns>
-		/// False if more input is needed.
-		/// </returns>
-		private bool DecodeDict()
-		{
-			while (neededBits > 0) {
-				int dictByte = input.PeekBits(8);
-				if (dictByte < 0) {
-					return false;
-				}
-				input.DropBits(8);
-				readAdler = (readAdler << 8) | dictByte;
-				neededBits -= 8;
-			}
-			return false;
-		}
-		
-		/// <summary>
-		/// Decodes the huffman encoded symbols in the input stream.
-		/// </summary>
-		/// <returns>
-		/// false if more input is needed, true if output window is
-		/// full or the current block ends.
-		/// </returns>
-		/// <exception cref="SharpZipBaseException">
-		/// if deflated stream is invalid.
-		/// </exception>
-		private bool DecodeHuffman()
-		{
-			int free = outputWindow.GetFreeSpace();
-			while (free >= 258) {
-				int symbol;
-				switch (mode) {
-					case DECODE_HUFFMAN:
-						/* This is the inner loop so it is optimized a bit */
-						while (((symbol = litlenTree.GetSymbol(input)) & ~0xff) == 0) {
-							outputWindow.Write(symbol);
-							if (--free < 258) {
-								return true;
-							}
-						}
-						
-						if (symbol < 257) {
-							if (symbol < 0) {
-								return false;
-							} else {
-								/* symbol == 256: end of block */
-								distTree = null;
-								litlenTree = null;
-								mode = DECODE_BLOCKS;
-								return true;
-							}
-						}
-						
-						try {
-							repLength = CPLENS[symbol - 257];
-							neededBits = CPLEXT[symbol - 257];
-						} catch (Exception) {
-							throw new SharpZipBaseException("Illegal rep length code");
-						}
-						goto case DECODE_HUFFMAN_LENBITS; /* fall through */
-						
-					case DECODE_HUFFMAN_LENBITS:
-						if (neededBits > 0) {
-							mode = DECODE_HUFFMAN_LENBITS;
-							int i = input.PeekBits(neededBits);
-							if (i < 0) {
-								return false;
-							}
-							input.DropBits(neededBits);
-							repLength += i;
-						}
-						mode = DECODE_HUFFMAN_DIST;
-						goto case DECODE_HUFFMAN_DIST;/* fall through */
-						
-					case DECODE_HUFFMAN_DIST:
-						symbol = distTree.GetSymbol(input);
-						if (symbol < 0) {
-							return false;
-						}
-						
-						try {
-							repDist = CPDIST[symbol];
-							neededBits = CPDEXT[symbol];
-						} catch (Exception) {
-							throw new SharpZipBaseException("Illegal rep dist code");
-						}
-						
-						goto case DECODE_HUFFMAN_DISTBITS;/* fall through */
-						
-					case DECODE_HUFFMAN_DISTBITS:
-						if (neededBits > 0) {
-							mode = DECODE_HUFFMAN_DISTBITS;
-							int i = input.PeekBits(neededBits);
-							if (i < 0) {
-								return false;
-							}
-							input.DropBits(neededBits);
-							repDist += i;
-						}
-						
-						outputWindow.Repeat(repLength, repDist);
-						free -= repLength;
-						mode = DECODE_HUFFMAN;
-						break;
-					
-					default:
-						throw new SharpZipBaseException("Inflater unknown mode");
-				}
-			}
-			return true;
-		}
-		
-		/// <summary>
-		/// Decodes the adler checksum after the deflate stream.
-		/// </summary>
-		/// <returns>
-		/// false if more input is needed.
-		/// </returns>
-		/// <exception cref="SharpZipBaseException">
-		/// If checksum doesn't match.
-		/// </exception>
-		private bool DecodeChksum()
-		{
-			while (neededBits > 0) {
-				int chkByte = input.PeekBits(8);
-				if (chkByte < 0) {
-					return false;
-				}
-				input.DropBits(8);
-				readAdler = (readAdler << 8) | chkByte;
-				neededBits -= 8;
-			}
-			if ((int) adler.Value != readAdler) {
-				throw new SharpZipBaseException("Adler chksum doesn't match: " + (int)adler.Value + " vs. " + readAdler);
-			}
-			mode = FINISHED;
-			return false;
-		}
-		
-		/// <summary>
-		/// Decodes the deflated stream.
-		/// </summary>
-		/// <returns>
-		/// false if more input is needed, or if finished.
-		/// </returns>
-		/// <exception cref="SharpZipBaseException">
-		/// if deflated stream is invalid.
-		/// </exception>
-		private bool Decode()
-		{
-			switch (mode) {
-				case DECODE_HEADER:
-					return DecodeHeader();
-				case DECODE_DICT:
-					return DecodeDict();
-				case DECODE_CHKSUM:
-					return DecodeChksum();
-				
-				case DECODE_BLOCKS:
-					if (isLastBlock) {
-						if (noHeader) {
-							mode = FINISHED;
-							return false;
-						} else {
-							input.SkipToByteBoundary();
-							neededBits = 32;
-							mode = DECODE_CHKSUM;
-							return true;
-						}
-					}
-					
-					int type = input.PeekBits(3);
-					if (type < 0) {
-						return false;
-					}
-					input.DropBits(3);
-					
-					if ((type & 1) != 0) {
-						isLastBlock = true;
-					}
-					switch (type >> 1){
-						case DeflaterConstants.STORED_BLOCK:
-							input.SkipToByteBoundary();
-							mode = DECODE_STORED_LEN1;
-							break;
-						case DeflaterConstants.STATIC_TREES:
-							litlenTree = InflaterHuffmanTree.defLitLenTree;
-							distTree = InflaterHuffmanTree.defDistTree;
-							mode = DECODE_HUFFMAN;
-							break;
-						case DeflaterConstants.DYN_TREES:
-							dynHeader = new InflaterDynHeader();
-							mode = DECODE_DYN_HEADER;
-							break;
-						default:
-							throw new SharpZipBaseException("Unknown block type " + type);
-					}
-					return true;
-				
-				case DECODE_STORED_LEN1: 
-				{
-					if ((uncomprLen = input.PeekBits(16)) < 0) {
-						return false;
-					}
-					input.DropBits(16);
-					mode = DECODE_STORED_LEN2;
-				}
-					goto case DECODE_STORED_LEN2; /* fall through */
-					
-				case DECODE_STORED_LEN2: 
-				{
-					int nlen = input.PeekBits(16);
-					if (nlen < 0) {
-						return false;
-					}
-					input.DropBits(16);
-					if (nlen != (uncomprLen ^ 0xffff)) {
-						throw new SharpZipBaseException("broken uncompressed block");
-					}
-					mode = DECODE_STORED;
-				}
-					goto case DECODE_STORED;/* fall through */
-					
-				case DECODE_STORED: 
-				{
-					int more = outputWindow.CopyStored(input, uncomprLen);
-					uncomprLen -= more;
-					if (uncomprLen == 0) {
-						mode = DECODE_BLOCKS;
-						return true;
-					}
-					return !input.IsNeedingInput;
-				}
-				
-				case DECODE_DYN_HEADER:
-					if (!dynHeader.Decode(input)) {
-						return false;
-					}
-					
-					litlenTree = dynHeader.BuildLitLenTree();
-					distTree = dynHeader.BuildDistTree();
-					mode = DECODE_HUFFMAN;
-					goto case DECODE_HUFFMAN; /* fall through */
-					
-				case DECODE_HUFFMAN:
-				case DECODE_HUFFMAN_LENBITS:
-				case DECODE_HUFFMAN_DIST:
-				case DECODE_HUFFMAN_DISTBITS:
-					return DecodeHuffman();
-				
-				case FINISHED:
-					return false;
-				
-				default:
-					throw new SharpZipBaseException("Inflater.Decode unknown mode");
-			}
-		}
-			
-		/// <summary>
-		/// Sets the preset dictionary.  This should only be called, if
-		/// needsDictionary() returns true and it should set the same
-		/// dictionary, that was used for deflating.  The getAdler()
-		/// function returns the checksum of the dictionary needed.
-		/// </summary>
-		/// <param name="buffer">
-		/// The dictionary.
-		/// </param>
-		public void SetDictionary(byte[] buffer)
-		{
-			SetDictionary(buffer, 0, buffer.Length);
-		}
-		
-		/// <summary>
-		/// Sets the preset dictionary.  This should only be called, if
-		/// needsDictionary() returns true and it should set the same
-		/// dictionary, that was used for deflating.  The getAdler()
-		/// function returns the checksum of the dictionary needed.
-		/// </summary>
-		/// <param name="buffer">
-		/// The dictionary.
-		/// </param>
-		/// <param name="offset">
-		/// The offset into buffer where the dictionary starts.
-		/// </param>
-		/// <param name="len">
-		/// The length of the dictionary.
-		/// </param>
-		/// <exception cref="System.InvalidOperationException">
-		/// No dictionary is needed.
-		/// </exception>
-		/// <exception cref="SharpZipBaseException">
-		/// The adler checksum for the buffer is invalid
-		/// </exception>
-		public void SetDictionary(byte[] buffer, int offset, int len)
-		{
-			if (!IsNeedingDictionary) {
-				throw new InvalidOperationException();
-			}
-			
-			adler.Update(buffer, offset, len);
-			if ((int)adler.Value != readAdler) {
-				throw new SharpZipBaseException("Wrong adler checksum");
-			}
-			adler.Reset();
-			outputWindow.CopyDict(buffer, offset, len);
-			mode = DECODE_BLOCKS;
-		}
-		
-		/// <summary>
-		/// Sets the input.  This should only be called, if needsInput()
-		/// returns true.
-		/// </summary>
-		/// <param name="buf">
-		/// the input.
-		/// </param>
-		public void SetInput(byte[] buf)
-		{
-			SetInput(buf, 0, buf.Length);
-		}
-		
-		/// <summary>
-		/// Sets the input.  This should only be called, if needsInput()
-		/// returns true.
-		/// </summary>
-		/// <param name="buffer">
-		/// The source of input data
-		/// </param>
-		/// <param name="offset">
-		/// The offset into buffer where the input starts.
-		/// </param>
-		/// <param name="length">
-		/// The number of bytes of input to use.
-		/// </param>
-		/// <exception cref="System.InvalidOperationException">
-		/// No input is needed.
-		/// </exception>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// The off and/or len are wrong.
-		/// </exception>
-		public void SetInput(byte[] buffer, int offset, int length)
-		{
-			input.SetInput(buffer, offset, length);
-			totalIn += length;
-		}
-		
-		/// <summary>
-		/// Inflates the compressed stream to the output buffer.  If this
-		/// returns 0, you should check, whether needsDictionary(),
-		/// needsInput() or finished() returns true, to determine why no
-		/// further output is produced.
-		/// </summary>
-		/// <param name = "buf">
-		/// the output buffer.
-		/// </param>
-		/// <returns>
-		/// the number of bytes written to the buffer, 0 if no further
-		/// output can be produced.
-		/// </returns>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// if buf has length 0.
-		/// </exception>
-		/// <exception cref="System.FormatException">
-		/// if deflated stream is invalid.
-		/// </exception>
-		public int Inflate(byte[] buf)
-		{
-			return Inflate(buf, 0, buf.Length);
-		}
-		
-		/// <summary>
-		/// Inflates the compressed stream to the output buffer.  If this
-		/// returns 0, you should check, whether needsDictionary(),
-		/// needsInput() or finished() returns true, to determine why no
-		/// further output is produced.
-		/// </summary>
-		/// <param name = "buf">
-		/// the output buffer.
-		/// </param>
-		/// <param name = "offset">
-		/// the offset into buffer where the output should start.
-		/// </param>
-		/// <param name = "len">
-		/// the maximum length of the output.
-		/// </param>
-		/// <returns>
-		/// the number of bytes written to the buffer, 0 if no further output can be produced.
-		/// </returns>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// if len is &lt;= 0.
-		/// </exception>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// if the offset and/or len are wrong.
-		/// </exception>
-		/// <exception cref="System.FormatException">
-		/// if deflated stream is invalid.
-		/// </exception>
-		public int Inflate(byte[] buf, int offset, int len)
-		{
-			if (len < 0) {
-				throw new ArgumentOutOfRangeException("len < 0");
-			}
-			
-			// Special case: len may be zero
-			if (len == 0) {
-				if (IsFinished == false) { // -jr- 08-Nov-2003 INFLATE_BUG fix..
-					Decode();
-				}
-				return 0;
-			}
-/*
-			// Check for correct buff, off, len triple
-			if (off < 0 || off + len >= buf.Length) {
-				throw new ArgumentException("off/len outside buf bounds");
-			}
-*/
-			int count = 0;
-			int more;
-			do {
-				if (mode != DECODE_CHKSUM) {
-					/* Don't give away any output, if we are waiting for the
-					* checksum in the input stream.
-					*
-					* With this trick we have always:
-					*   needsInput() and not finished()
-					*   implies more output can be produced.
-					*/
-					more = outputWindow.CopyOutput(buf, offset, len);
-					adler.Update(buf, offset, more);
-					offset += more;
-					count += more;
-					totalOut += more;
-					len -= more;
-					if (len == 0) {
-						return count;
-					}
-				}
-			} while (Decode() || (outputWindow.GetAvailable() > 0 && mode != DECODE_CHKSUM));
-			return count;
-		}
-		
-		/// <summary>
-		/// Returns true, if the input buffer is empty.
-		/// You should then call setInput(). 
-		/// NOTE: This method also returns true when the stream is finished.
-		/// </summary>
-		public bool IsNeedingInput {
-			get {
-				return input.IsNeedingInput;
-			}
-		}
-		
-		/// <summary>
-		/// Returns true, if a preset dictionary is needed to inflate the input.
-		/// </summary>
-		public bool IsNeedingDictionary {
-			get {
-				return mode == DECODE_DICT && neededBits == 0;
-			}
-		}
-		
-		/// <summary>
-		/// Returns true, if the inflater has finished.  This means, that no
-		/// input is needed and no output can be produced.
-		/// </summary>
-		public bool IsFinished {
-			get {
-				return mode == FINISHED && outputWindow.GetAvailable() == 0;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the adler checksum.  This is either the checksum of all
-		/// uncompressed bytes returned by inflate(), or if needsDictionary()
-		/// returns true (and thus no output was yet produced) this is the
-		/// adler checksum of the expected dictionary.
-		/// </summary>
-		/// <returns>
-		/// the adler checksum.
-		/// </returns>
-		public int Adler {
-			get {
-				return IsNeedingDictionary ? readAdler : (int) adler.Value;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the total number of output bytes returned by inflate().
-		/// </summary>
-		/// <returns>
-		/// the total number of output bytes.
-		/// </returns>
-		public int TotalOut {
-			get {
-				return totalOut;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the total number of processed compressed input bytes.
-		/// </summary>
-		/// <returns>
-		/// The total number of bytes of processed input bytes.
-		/// </returns>
-		public int TotalIn {
-			get {
-				return totalIn - RemainingInput;
-			}
-		}
-		
-#if TEST_HAK		
-		/// <summary>
-		/// -jr test hak trying to figure out a bug
-		///</summary>
-		public int UnseenInput {
-			get {
-				return totalIn - ((input.AvailableBits + 7) >> 3);
-			}
-		}
-		
-		/// <summary>
-		/// -jr test hak trying to figure out a bug
-		///</summary>
-		public int PlainTotalIn {
-			get {
-				return totalIn;
-			}
-		}
-#endif
-		
-		/// <summary>
-		/// Gets the number of unprocessed input bytes.  Useful, if the end of the
-		/// stream is reached and you want to further process the bytes after
-		/// the deflate stream.
-		/// </summary>
-		/// <returns>
-		/// The number of bytes of the input which have not been processed.
-		/// </returns>
-		public int RemainingInput {
-			get {
-				return input.AvailableBytes;
-			}
-		}
-	}
-}
+// Inflater.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+using ICSharpCode.SharpZipLib.Checksums;
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	/// <summary>
+	/// Inflater is used to decompress data that has been compressed according
+	/// to the "deflate" standard described in rfc1951.
+	/// 
+	/// By default Zlib (rfc1950) headers and footers are expected in the input.
+	/// You can use constructor <code> public Inflater(bool noHeader)</code> passing true
+	/// if there is no Zlib header information
+	///
+	/// The usage is as following.  First you have to set some input with
+	/// <code>setInput()</code>, then inflate() it.  If inflate doesn't
+	/// inflate any bytes there may be three reasons:
+	/// <ul>
+	/// <li>needsInput() returns true because the input buffer is empty.
+	/// You have to provide more input with <code>setInput()</code>.
+	/// NOTE: needsInput() also returns true when, the stream is finished.
+	/// </li>
+	/// <li>needsDictionary() returns true, you have to provide a preset
+	///    dictionary with <code>setDictionary()</code>.</li>
+	/// <li>finished() returns true, the inflater has finished.</li>
+	/// </ul>
+	/// Once the first output byte is produced, a dictionary will not be
+	/// needed at a later stage.
+	///
+	/// author of the original java version : John Leuner, Jochen Hoenicke
+	/// </summary>
+	public class Inflater
+	{
+		/// <summary>
+		/// Copy lengths for literal codes 257..285
+		/// </summary>
+		static int[] CPLENS = {
+								 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+								 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258
+							  };
+		
+		/// <summary>
+		/// Extra bits for literal codes 257..285
+		/// </summary>
+		static int[] CPLEXT = {
+								 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
+								 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0
+							  };
+		
+		/// <summary>
+		/// Copy offsets for distance codes 0..29
+		/// </summary>
+		static int[] CPDIST = {
+								1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+								257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+								8193, 12289, 16385, 24577
+							  };
+		
+		/// <summary>
+		/// Extra bits for distance codes
+		/// </summary>
+		static int[] CPDEXT = {
+								0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
+								7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
+								12, 12, 13, 13
+							  };
+		
+		/// <summary>
+		/// These are the possible states for an inflater
+		/// </summary>
+		const int DECODE_HEADER           = 0;
+		const int DECODE_DICT             = 1;
+		const int DECODE_BLOCKS           = 2;
+		const int DECODE_STORED_LEN1      = 3;
+		const int DECODE_STORED_LEN2      = 4;
+		const int DECODE_STORED           = 5;
+		const int DECODE_DYN_HEADER       = 6;
+		const int DECODE_HUFFMAN          = 7;
+		const int DECODE_HUFFMAN_LENBITS  = 8;
+		const int DECODE_HUFFMAN_DIST     = 9;
+		const int DECODE_HUFFMAN_DISTBITS = 10;
+		const int DECODE_CHKSUM           = 11;
+		const int FINISHED                = 12;
+		
+		/// <summary>
+		/// This variable contains the current state.
+		/// </summary>
+		int mode;
+		
+		/// <summary>
+		/// The adler checksum of the dictionary or of the decompressed
+		/// stream, as it is written in the header resp. footer of the
+		/// compressed stream. 
+		/// Only valid if mode is DECODE_DICT or DECODE_CHKSUM.
+		/// </summary>
+		int readAdler;
+		
+		/// <summary>
+		/// The number of bits needed to complete the current state.  This
+		/// is valid, if mode is DECODE_DICT, DECODE_CHKSUM,
+		/// DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS.
+		/// </summary>
+		int neededBits;
+		int repLength;
+		int repDist;
+		int uncomprLen;
+		
+		/// <summary>
+		/// True, if the last block flag was set in the last block of the
+		/// inflated stream.  This means that the stream ends after the
+		/// current block.
+		/// </summary>
+		bool isLastBlock;
+		
+		/// <summary>
+		/// The total number of inflated bytes.
+		/// </summary>
+		int totalOut;
+		
+		/// <summary>
+		/// The total number of bytes set with setInput().  This is not the
+		/// value returned by the TotalIn property, since this also includes the
+		/// unprocessed input.
+		/// </summary>
+		int totalIn;
+		
+		/// <summary>
+		/// This variable stores the noHeader flag that was given to the constructor.
+		/// True means, that the inflated stream doesn't contain a Zlib header or 
+		/// footer.
+		/// </summary>
+		bool noHeader;
+		
+		StreamManipulator input;
+		OutputWindow outputWindow;
+		InflaterDynHeader dynHeader;
+		InflaterHuffmanTree litlenTree, distTree;
+		Adler32 adler;
+		
+		/// <summary>
+		/// Creates a new inflater or RFC1951 decompressor
+		/// RFC1950/Zlib headers and footers will be expected in the input data
+		/// </summary>
+		public Inflater() : this(false)
+		{
+		}
+		
+		/// <summary>
+		/// Creates a new inflater.
+		/// </summary>
+		/// <param name="noHeader">
+		/// True if no RFC1950/Zlib header and footer fields are expected in the input data
+		/// 
+		/// This is used for GZIPed/Zipped input.
+		/// 
+		/// For compatibility with
+		/// Sun JDK you should provide one byte of input more than needed in
+		/// this case.
+		/// </param>
+		public Inflater(bool noHeader)
+		{
+			this.noHeader = noHeader;
+			this.adler = new Adler32();
+			input = new StreamManipulator();
+			outputWindow = new OutputWindow();
+			mode = noHeader ? DECODE_BLOCKS : DECODE_HEADER;
+		}
+		
+		/// <summary>
+		/// Resets the inflater so that a new stream can be decompressed.  All
+		/// pending input and output will be discarded.
+		/// </summary>
+		public void Reset()
+		{
+			mode = noHeader ? DECODE_BLOCKS : DECODE_HEADER;
+			totalIn = totalOut = 0;
+			input.Reset();
+			outputWindow.Reset();
+			dynHeader = null;
+			litlenTree = null;
+			distTree = null;
+			isLastBlock = false;
+			adler.Reset();
+		}
+		
+		/// <summary>
+		/// Decodes a zlib/RFC1950 header.
+		/// </summary>
+		/// <returns>
+		/// False if more input is needed.
+		/// </returns>
+		/// <exception cref="SharpZipBaseException">
+		/// The header is invalid.
+		/// </exception>
+		private bool DecodeHeader()
+		{
+			int header = input.PeekBits(16);
+			if (header < 0) {
+				return false;
+			}
+			input.DropBits(16);
+			
+			/* The header is written in "wrong" byte order */
+			header = ((header << 8) | (header >> 8)) & 0xffff;
+			if (header % 31 != 0) {
+				throw new SharpZipBaseException("Header checksum illegal");
+			}
+			
+			if ((header & 0x0f00) != (Deflater.DEFLATED << 8)) {
+				throw new SharpZipBaseException("Compression Method unknown");
+			}
+			
+			/* Maximum size of the backwards window in bits.
+			* We currently ignore this, but we could use it to make the
+			* inflater window more space efficient. On the other hand the
+			* full window (15 bits) is needed most times, anyway.
+			int max_wbits = ((header & 0x7000) >> 12) + 8;
+			*/
+			
+			if ((header & 0x0020) == 0) { // Dictionary flag?
+				mode = DECODE_BLOCKS;
+			} else {
+				mode = DECODE_DICT;
+				neededBits = 32;
+			}
+			return true;
+		}
+		
+		/// <summary>
+		/// Decodes the dictionary checksum after the deflate header.
+		/// </summary>
+		/// <returns>
+		/// False if more input is needed.
+		/// </returns>
+		private bool DecodeDict()
+		{
+			while (neededBits > 0) {
+				int dictByte = input.PeekBits(8);
+				if (dictByte < 0) {
+					return false;
+				}
+				input.DropBits(8);
+				readAdler = (readAdler << 8) | dictByte;
+				neededBits -= 8;
+			}
+			return false;
+		}
+		
+		/// <summary>
+		/// Decodes the huffman encoded symbols in the input stream.
+		/// </summary>
+		/// <returns>
+		/// false if more input is needed, true if output window is
+		/// full or the current block ends.
+		/// </returns>
+		/// <exception cref="SharpZipBaseException">
+		/// if deflated stream is invalid.
+		/// </exception>
+		private bool DecodeHuffman()
+		{
+			int free = outputWindow.GetFreeSpace();
+			while (free >= 258) {
+				int symbol;
+				switch (mode) {
+					case DECODE_HUFFMAN:
+						/* This is the inner loop so it is optimized a bit */
+						while (((symbol = litlenTree.GetSymbol(input)) & ~0xff) == 0) {
+							outputWindow.Write(symbol);
+							if (--free < 258) {
+								return true;
+							}
+						}
+						
+						if (symbol < 257) {
+							if (symbol < 0) {
+								return false;
+							} else {
+								/* symbol == 256: end of block */
+								distTree = null;
+								litlenTree = null;
+								mode = DECODE_BLOCKS;
+								return true;
+							}
+						}
+						
+						try {
+							repLength = CPLENS[symbol - 257];
+							neededBits = CPLEXT[symbol - 257];
+						} catch (Exception) {
+							throw new SharpZipBaseException("Illegal rep length code");
+						}
+						goto case DECODE_HUFFMAN_LENBITS; /* fall through */
+						
+					case DECODE_HUFFMAN_LENBITS:
+						if (neededBits > 0) {
+							mode = DECODE_HUFFMAN_LENBITS;
+							int i = input.PeekBits(neededBits);
+							if (i < 0) {
+								return false;
+							}
+							input.DropBits(neededBits);
+							repLength += i;
+						}
+						mode = DECODE_HUFFMAN_DIST;
+						goto case DECODE_HUFFMAN_DIST;/* fall through */
+						
+					case DECODE_HUFFMAN_DIST:
+						symbol = distTree.GetSymbol(input);
+						if (symbol < 0) {
+							return false;
+						}
+						
+						try {
+							repDist = CPDIST[symbol];
+							neededBits = CPDEXT[symbol];
+						} catch (Exception) {
+							throw new SharpZipBaseException("Illegal rep dist code");
+						}
+						
+						goto case DECODE_HUFFMAN_DISTBITS;/* fall through */
+						
+					case DECODE_HUFFMAN_DISTBITS:
+						if (neededBits > 0) {
+							mode = DECODE_HUFFMAN_DISTBITS;
+							int i = input.PeekBits(neededBits);
+							if (i < 0) {
+								return false;
+							}
+							input.DropBits(neededBits);
+							repDist += i;
+						}
+						
+						outputWindow.Repeat(repLength, repDist);
+						free -= repLength;
+						mode = DECODE_HUFFMAN;
+						break;
+					
+					default:
+						throw new SharpZipBaseException("Inflater unknown mode");
+				}
+			}
+			return true;
+		}
+		
+		/// <summary>
+		/// Decodes the adler checksum after the deflate stream.
+		/// </summary>
+		/// <returns>
+		/// false if more input is needed.
+		/// </returns>
+		/// <exception cref="SharpZipBaseException">
+		/// If checksum doesn't match.
+		/// </exception>
+		private bool DecodeChksum()
+		{
+			while (neededBits > 0) {
+				int chkByte = input.PeekBits(8);
+				if (chkByte < 0) {
+					return false;
+				}
+				input.DropBits(8);
+				readAdler = (readAdler << 8) | chkByte;
+				neededBits -= 8;
+			}
+			if ((int) adler.Value != readAdler) {
+				throw new SharpZipBaseException("Adler chksum doesn't match: " + (int)adler.Value + " vs. " + readAdler);
+			}
+			mode = FINISHED;
+			return false;
+		}
+		
+		/// <summary>
+		/// Decodes the deflated stream.
+		/// </summary>
+		/// <returns>
+		/// false if more input is needed, or if finished.
+		/// </returns>
+		/// <exception cref="SharpZipBaseException">
+		/// if deflated stream is invalid.
+		/// </exception>
+		private bool Decode()
+		{
+			switch (mode) {
+				case DECODE_HEADER:
+					return DecodeHeader();
+				case DECODE_DICT:
+					return DecodeDict();
+				case DECODE_CHKSUM:
+					return DecodeChksum();
+				
+				case DECODE_BLOCKS:
+					if (isLastBlock) {
+						if (noHeader) {
+							mode = FINISHED;
+							return false;
+						} else {
+							input.SkipToByteBoundary();
+							neededBits = 32;
+							mode = DECODE_CHKSUM;
+							return true;
+						}
+					}
+					
+					int type = input.PeekBits(3);
+					if (type < 0) {
+						return false;
+					}
+					input.DropBits(3);
+					
+					if ((type & 1) != 0) {
+						isLastBlock = true;
+					}
+					switch (type >> 1){
+						case DeflaterConstants.STORED_BLOCK:
+							input.SkipToByteBoundary();
+							mode = DECODE_STORED_LEN1;
+							break;
+						case DeflaterConstants.STATIC_TREES:
+							litlenTree = InflaterHuffmanTree.defLitLenTree;
+							distTree = InflaterHuffmanTree.defDistTree;
+							mode = DECODE_HUFFMAN;
+							break;
+						case DeflaterConstants.DYN_TREES:
+							dynHeader = new InflaterDynHeader();
+							mode = DECODE_DYN_HEADER;
+							break;
+						default:
+							throw new SharpZipBaseException("Unknown block type " + type);
+					}
+					return true;
+				
+				case DECODE_STORED_LEN1: 
+				{
+					if ((uncomprLen = input.PeekBits(16)) < 0) {
+						return false;
+					}
+					input.DropBits(16);
+					mode = DECODE_STORED_LEN2;
+				}
+					goto case DECODE_STORED_LEN2; /* fall through */
+					
+				case DECODE_STORED_LEN2: 
+				{
+					int nlen = input.PeekBits(16);
+					if (nlen < 0) {
+						return false;
+					}
+					input.DropBits(16);
+					if (nlen != (uncomprLen ^ 0xffff)) {
+						throw new SharpZipBaseException("broken uncompressed block");
+					}
+					mode = DECODE_STORED;
+				}
+					goto case DECODE_STORED;/* fall through */
+					
+				case DECODE_STORED: 
+				{
+					int more = outputWindow.CopyStored(input, uncomprLen);
+					uncomprLen -= more;
+					if (uncomprLen == 0) {
+						mode = DECODE_BLOCKS;
+						return true;
+					}
+					return !input.IsNeedingInput;
+				}
+				
+				case DECODE_DYN_HEADER:
+					if (!dynHeader.Decode(input)) {
+						return false;
+					}
+					
+					litlenTree = dynHeader.BuildLitLenTree();
+					distTree = dynHeader.BuildDistTree();
+					mode = DECODE_HUFFMAN;
+					goto case DECODE_HUFFMAN; /* fall through */
+					
+				case DECODE_HUFFMAN:
+				case DECODE_HUFFMAN_LENBITS:
+				case DECODE_HUFFMAN_DIST:
+				case DECODE_HUFFMAN_DISTBITS:
+					return DecodeHuffman();
+				
+				case FINISHED:
+					return false;
+				
+				default:
+					throw new SharpZipBaseException("Inflater.Decode unknown mode");
+			}
+		}
+			
+		/// <summary>
+		/// Sets the preset dictionary.  This should only be called, if
+		/// needsDictionary() returns true and it should set the same
+		/// dictionary, that was used for deflating.  The getAdler()
+		/// function returns the checksum of the dictionary needed.
+		/// </summary>
+		/// <param name="buffer">
+		/// The dictionary.
+		/// </param>
+		public void SetDictionary(byte[] buffer)
+		{
+			SetDictionary(buffer, 0, buffer.Length);
+		}
+		
+		/// <summary>
+		/// Sets the preset dictionary.  This should only be called, if
+		/// needsDictionary() returns true and it should set the same
+		/// dictionary, that was used for deflating.  The getAdler()
+		/// function returns the checksum of the dictionary needed.
+		/// </summary>
+		/// <param name="buffer">
+		/// The dictionary.
+		/// </param>
+		/// <param name="offset">
+		/// The offset into buffer where the dictionary starts.
+		/// </param>
+		/// <param name="len">
+		/// The length of the dictionary.
+		/// </param>
+		/// <exception cref="System.InvalidOperationException">
+		/// No dictionary is needed.
+		/// </exception>
+		/// <exception cref="SharpZipBaseException">
+		/// The adler checksum for the buffer is invalid
+		/// </exception>
+		public void SetDictionary(byte[] buffer, int offset, int len)
+		{
+			if (!IsNeedingDictionary) {
+				throw new InvalidOperationException();
+			}
+			
+			adler.Update(buffer, offset, len);
+			if ((int)adler.Value != readAdler) {
+				throw new SharpZipBaseException("Wrong adler checksum");
+			}
+			adler.Reset();
+			outputWindow.CopyDict(buffer, offset, len);
+			mode = DECODE_BLOCKS;
+		}
+		
+		/// <summary>
+		/// Sets the input.  This should only be called, if needsInput()
+		/// returns true.
+		/// </summary>
+		/// <param name="buf">
+		/// the input.
+		/// </param>
+		public void SetInput(byte[] buf)
+		{
+			SetInput(buf, 0, buf.Length);
+		}
+		
+		/// <summary>
+		/// Sets the input.  This should only be called, if needsInput()
+		/// returns true.
+		/// </summary>
+		/// <param name="buffer">
+		/// The source of input data
+		/// </param>
+		/// <param name="offset">
+		/// The offset into buffer where the input starts.
+		/// </param>
+		/// <param name="length">
+		/// The number of bytes of input to use.
+		/// </param>
+		/// <exception cref="System.InvalidOperationException">
+		/// No input is needed.
+		/// </exception>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// The off and/or len are wrong.
+		/// </exception>
+		public void SetInput(byte[] buffer, int offset, int length)
+		{
+			input.SetInput(buffer, offset, length);
+			totalIn += length;
+		}
+		
+		/// <summary>
+		/// Inflates the compressed stream to the output buffer.  If this
+		/// returns 0, you should check, whether needsDictionary(),
+		/// needsInput() or finished() returns true, to determine why no
+		/// further output is produced.
+		/// </summary>
+		/// <param name = "buf">
+		/// the output buffer.
+		/// </param>
+		/// <returns>
+		/// the number of bytes written to the buffer, 0 if no further
+		/// output can be produced.
+		/// </returns>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// if buf has length 0.
+		/// </exception>
+		/// <exception cref="System.FormatException">
+		/// if deflated stream is invalid.
+		/// </exception>
+		public int Inflate(byte[] buf)
+		{
+			return Inflate(buf, 0, buf.Length);
+		}
+		
+		/// <summary>
+		/// Inflates the compressed stream to the output buffer.  If this
+		/// returns 0, you should check, whether needsDictionary(),
+		/// needsInput() or finished() returns true, to determine why no
+		/// further output is produced.
+		/// </summary>
+		/// <param name = "buf">
+		/// the output buffer.
+		/// </param>
+		/// <param name = "offset">
+		/// the offset into buffer where the output should start.
+		/// </param>
+		/// <param name = "len">
+		/// the maximum length of the output.
+		/// </param>
+		/// <returns>
+		/// the number of bytes written to the buffer, 0 if no further output can be produced.
+		/// </returns>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// if len is &lt;= 0.
+		/// </exception>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// if the offset and/or len are wrong.
+		/// </exception>
+		/// <exception cref="System.FormatException">
+		/// if deflated stream is invalid.
+		/// </exception>
+		public int Inflate(byte[] buf, int offset, int len)
+		{
+			if (len < 0) {
+				throw new ArgumentOutOfRangeException("len < 0");
+			}
+			
+			// Special case: len may be zero
+			if (len == 0) {
+				if (IsFinished == false) { // -jr- 08-Nov-2003 INFLATE_BUG fix..
+					Decode();
+				}
+				return 0;
+			}
+/*
+			// Check for correct buff, off, len triple
+			if (off < 0 || off + len >= buf.Length) {
+				throw new ArgumentException("off/len outside buf bounds");
+			}
+*/
+			int count = 0;
+			int more;
+			do {
+				if (mode != DECODE_CHKSUM) {
+					/* Don't give away any output, if we are waiting for the
+					* checksum in the input stream.
+					*
+					* With this trick we have always:
+					*   needsInput() and not finished()
+					*   implies more output can be produced.
+					*/
+					more = outputWindow.CopyOutput(buf, offset, len);
+					adler.Update(buf, offset, more);
+					offset += more;
+					count += more;
+					totalOut += more;
+					len -= more;
+					if (len == 0) {
+						return count;
+					}
+				}
+			} while (Decode() || (outputWindow.GetAvailable() > 0 && mode != DECODE_CHKSUM));
+			return count;
+		}
+		
+		/// <summary>
+		/// Returns true, if the input buffer is empty.
+		/// You should then call setInput(). 
+		/// NOTE: This method also returns true when the stream is finished.
+		/// </summary>
+		public bool IsNeedingInput {
+			get {
+				return input.IsNeedingInput;
+			}
+		}
+		
+		/// <summary>
+		/// Returns true, if a preset dictionary is needed to inflate the input.
+		/// </summary>
+		public bool IsNeedingDictionary {
+			get {
+				return mode == DECODE_DICT && neededBits == 0;
+			}
+		}
+		
+		/// <summary>
+		/// Returns true, if the inflater has finished.  This means, that no
+		/// input is needed and no output can be produced.
+		/// </summary>
+		public bool IsFinished {
+			get {
+				return mode == FINISHED && outputWindow.GetAvailable() == 0;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the adler checksum.  This is either the checksum of all
+		/// uncompressed bytes returned by inflate(), or if needsDictionary()
+		/// returns true (and thus no output was yet produced) this is the
+		/// adler checksum of the expected dictionary.
+		/// </summary>
+		/// <returns>
+		/// the adler checksum.
+		/// </returns>
+		public int Adler {
+			get {
+				return IsNeedingDictionary ? readAdler : (int) adler.Value;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the total number of output bytes returned by inflate().
+		/// </summary>
+		/// <returns>
+		/// the total number of output bytes.
+		/// </returns>
+		public int TotalOut {
+			get {
+				return totalOut;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the total number of processed compressed input bytes.
+		/// </summary>
+		/// <returns>
+		/// The total number of bytes of processed input bytes.
+		/// </returns>
+		public int TotalIn {
+			get {
+				return totalIn - RemainingInput;
+			}
+		}
+		
+#if TEST_HAK		
+		/// <summary>
+		/// -jr test hak trying to figure out a bug
+		///</summary>
+		public int UnseenInput {
+			get {
+				return totalIn - ((input.AvailableBits + 7) >> 3);
+			}
+		}
+		
+		/// <summary>
+		/// -jr test hak trying to figure out a bug
+		///</summary>
+		public int PlainTotalIn {
+			get {
+				return totalIn;
+			}
+		}
+#endif
+		
+		/// <summary>
+		/// Gets the number of unprocessed input bytes.  Useful, if the end of the
+		/// stream is reached and you want to further process the bytes after
+		/// the deflate stream.
+		/// </summary>
+		/// <returns>
+		/// The number of bytes of the input which have not been processed.
+		/// </returns>
+		public int RemainingInput {
+			get {
+				return input.AvailableBytes;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/InflaterDynHeader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/InflaterDynHeader.cs
@@ -1,207 +1,207 @@
-// InflaterDynHeader.cs
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-//
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	class InflaterDynHeader
-	{
-		const int LNUM   = 0;
-		const int DNUM   = 1;
-		const int BLNUM  = 2;
-		const int BLLENS = 3;
-		const int LENS   = 4;
-		const int REPS   = 5;
-		
-		static readonly int[] repMin  = { 3, 3, 11 };
-		static readonly int[] repBits = { 2, 3,  7 };
-		
-		byte[] blLens;
-		byte[] litdistLens;
-		
-		InflaterHuffmanTree blTree;
-		
-		int mode;
-		int lnum, dnum, blnum, num;
-		int repSymbol;
-		byte lastLen;
-		int ptr;
-		
-		static readonly int[] BL_ORDER = 
-		{ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
-		
-		public InflaterDynHeader()
-		{
-		}
-		
-		public bool Decode(StreamManipulator input)
-		{
-			decode_loop:
-				for (;;) {
-					switch (mode) {
-						case LNUM:
-							lnum = input.PeekBits(5);
-							if (lnum < 0) {
-								return false;
-							}
-							lnum += 257;
-							input.DropBits(5);
-							//  	    System.err.println("LNUM: "+lnum);
-							mode = DNUM;
-							goto case DNUM; // fall through
-						case DNUM:
-							dnum = input.PeekBits(5);
-							if (dnum < 0) {
-								return false;
-							}
-							dnum++;
-							input.DropBits(5);
-							//  	    System.err.println("DNUM: "+dnum);
-							num = lnum+dnum;
-							litdistLens = new byte[num];
-							mode = BLNUM;
-							goto case BLNUM; // fall through
-						case BLNUM:
-							blnum = input.PeekBits(4);
-							if (blnum < 0) {
-								return false;
-							}
-							blnum += 4;
-							input.DropBits(4);
-							blLens = new byte[19];
-							ptr = 0;
-							//  	    System.err.println("BLNUM: "+blnum);
-							mode = BLLENS;
-							goto case BLLENS; // fall through
-						case BLLENS:
-							while (ptr < blnum) {
-								int len = input.PeekBits(3);
-								if (len < 0) {
-									return false;
-								}
-								input.DropBits(3);
-								//  		System.err.println("blLens["+BL_ORDER[ptr]+"]: "+len);
-								blLens[BL_ORDER[ptr]] = (byte) len;
-								ptr++;
-							}
-							blTree = new InflaterHuffmanTree(blLens);
-							blLens = null;
-							ptr = 0;
-							mode = LENS;
-							goto case LENS; // fall through
-						case LENS: 
-						{
-							int symbol;
-							while (((symbol = blTree.GetSymbol(input)) & ~15) == 0) {
-								/* Normal case: symbol in [0..15] */
-							
-								//  		  System.err.println("litdistLens["+ptr+"]: "+symbol);
-								litdistLens[ptr++] = lastLen = (byte)symbol;
-							
-								if (ptr == num) {
-									/* Finished */
-									return true;
-								}
-							}
-						
-							/* need more input ? */
-							if (symbol < 0) {
-								return false;
-							}
-						
-							/* otherwise repeat code */
-							if (symbol >= 17) {
-								/* repeat zero */
-								//  		  System.err.println("repeating zero");
-								lastLen = 0;
-							} else {
-								if (ptr == 0) {
-									throw new SharpZipBaseException();
-								}
-							}
-							repSymbol = symbol-16;
-						}
-							mode = REPS;
-							goto case REPS; // fall through
-						case REPS:
-						{
-							int bits = repBits[repSymbol];
-							int count = input.PeekBits(bits);
-							if (count < 0) {
-								return false;
-							}
-							input.DropBits(bits);
-							count += repMin[repSymbol];
-							//  	      System.err.println("litdistLens repeated: "+count);
-							
-							if (ptr + count > num) {
-								throw new SharpZipBaseException();
-							}
-							while (count-- > 0) {
-								litdistLens[ptr++] = lastLen;
-							}
-							
-							if (ptr == num) {
-								/* Finished */
-								return true;
-							}
-						}
-							mode = LENS;
-							goto decode_loop;
-					}
-				}
-		}
-		
-		public InflaterHuffmanTree BuildLitLenTree()
-		{
-			byte[] litlenLens = new byte[lnum];
-			Array.Copy(litdistLens, 0, litlenLens, 0, lnum);
-			return new InflaterHuffmanTree(litlenLens);
-		}
-		
-		public InflaterHuffmanTree BuildDistTree()
-		{
-			byte[] distLens = new byte[dnum];
-			Array.Copy(litdistLens, lnum, distLens, 0, dnum);
-			return new InflaterHuffmanTree(distLens);
-		}
-	}
-}
+// InflaterDynHeader.cs
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+//
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	class InflaterDynHeader
+	{
+		const int LNUM   = 0;
+		const int DNUM   = 1;
+		const int BLNUM  = 2;
+		const int BLLENS = 3;
+		const int LENS   = 4;
+		const int REPS   = 5;
+		
+		static readonly int[] repMin  = { 3, 3, 11 };
+		static readonly int[] repBits = { 2, 3,  7 };
+		
+		byte[] blLens;
+		byte[] litdistLens;
+		
+		InflaterHuffmanTree blTree;
+		
+		int mode;
+		int lnum, dnum, blnum, num;
+		int repSymbol;
+		byte lastLen;
+		int ptr;
+		
+		static readonly int[] BL_ORDER = 
+		{ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
+		
+		public InflaterDynHeader()
+		{
+		}
+		
+		public bool Decode(StreamManipulator input)
+		{
+			decode_loop:
+				for (;;) {
+					switch (mode) {
+						case LNUM:
+							lnum = input.PeekBits(5);
+							if (lnum < 0) {
+								return false;
+							}
+							lnum += 257;
+							input.DropBits(5);
+							//  	    System.err.println("LNUM: "+lnum);
+							mode = DNUM;
+							goto case DNUM; // fall through
+						case DNUM:
+							dnum = input.PeekBits(5);
+							if (dnum < 0) {
+								return false;
+							}
+							dnum++;
+							input.DropBits(5);
+							//  	    System.err.println("DNUM: "+dnum);
+							num = lnum+dnum;
+							litdistLens = new byte[num];
+							mode = BLNUM;
+							goto case BLNUM; // fall through
+						case BLNUM:
+							blnum = input.PeekBits(4);
+							if (blnum < 0) {
+								return false;
+							}
+							blnum += 4;
+							input.DropBits(4);
+							blLens = new byte[19];
+							ptr = 0;
+							//  	    System.err.println("BLNUM: "+blnum);
+							mode = BLLENS;
+							goto case BLLENS; // fall through
+						case BLLENS:
+							while (ptr < blnum) {
+								int len = input.PeekBits(3);
+								if (len < 0) {
+									return false;
+								}
+								input.DropBits(3);
+								//  		System.err.println("blLens["+BL_ORDER[ptr]+"]: "+len);
+								blLens[BL_ORDER[ptr]] = (byte) len;
+								ptr++;
+							}
+							blTree = new InflaterHuffmanTree(blLens);
+							blLens = null;
+							ptr = 0;
+							mode = LENS;
+							goto case LENS; // fall through
+						case LENS: 
+						{
+							int symbol;
+							while (((symbol = blTree.GetSymbol(input)) & ~15) == 0) {
+								/* Normal case: symbol in [0..15] */
+							
+								//  		  System.err.println("litdistLens["+ptr+"]: "+symbol);
+								litdistLens[ptr++] = lastLen = (byte)symbol;
+							
+								if (ptr == num) {
+									/* Finished */
+									return true;
+								}
+							}
+						
+							/* need more input ? */
+							if (symbol < 0) {
+								return false;
+							}
+						
+							/* otherwise repeat code */
+							if (symbol >= 17) {
+								/* repeat zero */
+								//  		  System.err.println("repeating zero");
+								lastLen = 0;
+							} else {
+								if (ptr == 0) {
+									throw new SharpZipBaseException();
+								}
+							}
+							repSymbol = symbol-16;
+						}
+							mode = REPS;
+							goto case REPS; // fall through
+						case REPS:
+						{
+							int bits = repBits[repSymbol];
+							int count = input.PeekBits(bits);
+							if (count < 0) {
+								return false;
+							}
+							input.DropBits(bits);
+							count += repMin[repSymbol];
+							//  	      System.err.println("litdistLens repeated: "+count);
+							
+							if (ptr + count > num) {
+								throw new SharpZipBaseException();
+							}
+							while (count-- > 0) {
+								litdistLens[ptr++] = lastLen;
+							}
+							
+							if (ptr == num) {
+								/* Finished */
+								return true;
+							}
+						}
+							mode = LENS;
+							goto decode_loop;
+					}
+				}
+		}
+		
+		public InflaterHuffmanTree BuildLitLenTree()
+		{
+			byte[] litlenLens = new byte[lnum];
+			Array.Copy(litdistLens, 0, litlenLens, 0, lnum);
+			return new InflaterHuffmanTree(litlenLens);
+		}
+		
+		public InflaterHuffmanTree BuildDistTree()
+		{
+			byte[] distLens = new byte[dnum];
+			Array.Copy(litdistLens, lnum, distLens, 0, dnum);
+			return new InflaterHuffmanTree(distLens);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/InflaterHuffmanTree.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/InflaterHuffmanTree.cs
@@ -1,225 +1,225 @@
-// InflaterHuffmanTree.cs
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	/// <summary>
-	/// Huffman tree used for inflation
-	/// </summary>
-	public class InflaterHuffmanTree 
-	{
-		static int MAX_BITLEN = 15;
-		short[] tree;
-		
-		/// <summary>
-		/// Literal length tree
-		/// </summary>
-		public static InflaterHuffmanTree defLitLenTree;
-		
-		/// <summary>
-		/// Distance tree
-		/// </summary>
-		public static InflaterHuffmanTree defDistTree;
-		
-		static InflaterHuffmanTree()
-		{
-			try {
-				byte[] codeLengths = new byte[288];
-				int i = 0;
-				while (i < 144) {
-					codeLengths[i++] = 8;
-				}
-				while (i < 256) {
-					codeLengths[i++] = 9;
-				}
-				while (i < 280) {
-					codeLengths[i++] = 7;
-				}
-				while (i < 288) {
-					codeLengths[i++] = 8;
-				}
-				defLitLenTree = new InflaterHuffmanTree(codeLengths);
-				
-				codeLengths = new byte[32];
-				i = 0;
-				while (i < 32) {
-					codeLengths[i++] = 5;
-				}
-				defDistTree = new InflaterHuffmanTree(codeLengths);
-			} catch (Exception) {
-				throw new SharpZipBaseException("InflaterHuffmanTree: static tree length illegal");
-			}
-		}
-		
-		/// <summary>
-		/// Constructs a Huffman tree from the array of code lengths.
-		/// </summary>
-		/// <param name = "codeLengths">
-		/// the array of code lengths
-		/// </param>
-		public InflaterHuffmanTree(byte[] codeLengths)
-		{
-			BuildTree(codeLengths);
-		}
-		
-		void BuildTree(byte[] codeLengths)
-		{
-			int[] blCount  = new int[MAX_BITLEN + 1];
-			int[] nextCode = new int[MAX_BITLEN + 1];
-			
-			for (int i = 0; i < codeLengths.Length; i++) {
-				int bits = codeLengths[i];
-				if (bits > 0) {
-					blCount[bits]++;
-				}
-			}
-			
-			int code = 0;
-			int treeSize = 512;
-			for (int bits = 1; bits <= MAX_BITLEN; bits++) {
-				nextCode[bits] = code;
-				code += blCount[bits] << (16 - bits);
-				if (bits >= 10) {
-					/* We need an extra table for bit lengths >= 10. */
-					int start = nextCode[bits] & 0x1ff80;
-					int end   = code & 0x1ff80;
-					treeSize += (end - start) >> (16 - bits);
-				}
-			}
-			
-/* -jr comment this out! doesnt work for dynamic trees and pkzip 2.04g
-			if (code != 65536) 
-			{
-				throw new SharpZipBaseException("Code lengths don't add up properly.");
-			}
-*/
-			/* Now create and fill the extra tables from longest to shortest
-			* bit len.  This way the sub trees will be aligned.
-			*/
-			tree = new short[treeSize];
-			int treePtr = 512;
-			for (int bits = MAX_BITLEN; bits >= 10; bits--) {
-				int end   = code & 0x1ff80;
-				code -= blCount[bits] << (16 - bits);
-				int start = code & 0x1ff80;
-				for (int i = start; i < end; i += 1 << 7) {
-					tree[DeflaterHuffman.BitReverse(i)] = (short) ((-treePtr << 4) | bits);
-					treePtr += 1 << (bits-9);
-				}
-			}
-			
-			for (int i = 0; i < codeLengths.Length; i++) {
-				int bits = codeLengths[i];
-				if (bits == 0) {
-					continue;
-				}
-				code = nextCode[bits];
-				int revcode = DeflaterHuffman.BitReverse(code);
-				if (bits <= 9) {
-					do {
-						tree[revcode] = (short) ((i << 4) | bits);
-						revcode += 1 << bits;
-					} while (revcode < 512);
-				} else {
-					int subTree = tree[revcode & 511];
-					int treeLen = 1 << (subTree & 15);
-					subTree = -(subTree >> 4);
-					do {
-						tree[subTree | (revcode >> 9)] = (short) ((i << 4) | bits);
-						revcode += 1 << bits;
-					} while (revcode < treeLen);
-				}
-				nextCode[bits] = code + (1 << (16 - bits));
-			}
-			
-		}
-		
-		/// <summary>
-		/// Reads the next symbol from input.  The symbol is encoded using the
-		/// huffman tree.
-		/// </summary>
-		/// <param name="input">
-		/// input the input source.
-		/// </param>
-		/// <returns>
-		/// the next symbol, or -1 if not enough input is available.
-		/// </returns>
-		public int GetSymbol(StreamManipulator input)
-		{
-			int lookahead, symbol;
-			if ((lookahead = input.PeekBits(9)) >= 0) {
-				if ((symbol = tree[lookahead]) >= 0) {
-					input.DropBits(symbol & 15);
-					return symbol >> 4;
-				}
-				int subtree = -(symbol >> 4);
-				int bitlen = symbol & 15;
-				if ((lookahead = input.PeekBits(bitlen)) >= 0) {
-					symbol = tree[subtree | (lookahead >> 9)];
-					input.DropBits(symbol & 15);
-					return symbol >> 4;
-				} else {
-					int bits = input.AvailableBits;
-					lookahead = input.PeekBits(bits);
-					symbol = tree[subtree | (lookahead >> 9)];
-					if ((symbol & 15) <= bits) {
-						input.DropBits(symbol & 15);
-						return symbol >> 4;
-					} else {
-						return -1;
-					}
-				}
-			} else {
-				int bits = input.AvailableBits;
-				lookahead = input.PeekBits(bits);
-				symbol = tree[lookahead];
-				if (symbol >= 0 && (symbol & 15) <= bits) {
-					input.DropBits(symbol & 15);
-					return symbol >> 4;
-				} else {
-					return -1;
-				}
-			}
-		}
-	}
-}
-
+// InflaterHuffmanTree.cs
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	/// <summary>
+	/// Huffman tree used for inflation
+	/// </summary>
+	public class InflaterHuffmanTree 
+	{
+		static int MAX_BITLEN = 15;
+		short[] tree;
+		
+		/// <summary>
+		/// Literal length tree
+		/// </summary>
+		public static InflaterHuffmanTree defLitLenTree;
+		
+		/// <summary>
+		/// Distance tree
+		/// </summary>
+		public static InflaterHuffmanTree defDistTree;
+		
+		static InflaterHuffmanTree()
+		{
+			try {
+				byte[] codeLengths = new byte[288];
+				int i = 0;
+				while (i < 144) {
+					codeLengths[i++] = 8;
+				}
+				while (i < 256) {
+					codeLengths[i++] = 9;
+				}
+				while (i < 280) {
+					codeLengths[i++] = 7;
+				}
+				while (i < 288) {
+					codeLengths[i++] = 8;
+				}
+				defLitLenTree = new InflaterHuffmanTree(codeLengths);
+				
+				codeLengths = new byte[32];
+				i = 0;
+				while (i < 32) {
+					codeLengths[i++] = 5;
+				}
+				defDistTree = new InflaterHuffmanTree(codeLengths);
+			} catch (Exception) {
+				throw new SharpZipBaseException("InflaterHuffmanTree: static tree length illegal");
+			}
+		}
+		
+		/// <summary>
+		/// Constructs a Huffman tree from the array of code lengths.
+		/// </summary>
+		/// <param name = "codeLengths">
+		/// the array of code lengths
+		/// </param>
+		public InflaterHuffmanTree(byte[] codeLengths)
+		{
+			BuildTree(codeLengths);
+		}
+		
+		void BuildTree(byte[] codeLengths)
+		{
+			int[] blCount  = new int[MAX_BITLEN + 1];
+			int[] nextCode = new int[MAX_BITLEN + 1];
+			
+			for (int i = 0; i < codeLengths.Length; i++) {
+				int bits = codeLengths[i];
+				if (bits > 0) {
+					blCount[bits]++;
+				}
+			}
+			
+			int code = 0;
+			int treeSize = 512;
+			for (int bits = 1; bits <= MAX_BITLEN; bits++) {
+				nextCode[bits] = code;
+				code += blCount[bits] << (16 - bits);
+				if (bits >= 10) {
+					/* We need an extra table for bit lengths >= 10. */
+					int start = nextCode[bits] & 0x1ff80;
+					int end   = code & 0x1ff80;
+					treeSize += (end - start) >> (16 - bits);
+				}
+			}
+			
+/* -jr comment this out! doesnt work for dynamic trees and pkzip 2.04g
+			if (code != 65536) 
+			{
+				throw new SharpZipBaseException("Code lengths don't add up properly.");
+			}
+*/
+			/* Now create and fill the extra tables from longest to shortest
+			* bit len.  This way the sub trees will be aligned.
+			*/
+			tree = new short[treeSize];
+			int treePtr = 512;
+			for (int bits = MAX_BITLEN; bits >= 10; bits--) {
+				int end   = code & 0x1ff80;
+				code -= blCount[bits] << (16 - bits);
+				int start = code & 0x1ff80;
+				for (int i = start; i < end; i += 1 << 7) {
+					tree[DeflaterHuffman.BitReverse(i)] = (short) ((-treePtr << 4) | bits);
+					treePtr += 1 << (bits-9);
+				}
+			}
+			
+			for (int i = 0; i < codeLengths.Length; i++) {
+				int bits = codeLengths[i];
+				if (bits == 0) {
+					continue;
+				}
+				code = nextCode[bits];
+				int revcode = DeflaterHuffman.BitReverse(code);
+				if (bits <= 9) {
+					do {
+						tree[revcode] = (short) ((i << 4) | bits);
+						revcode += 1 << bits;
+					} while (revcode < 512);
+				} else {
+					int subTree = tree[revcode & 511];
+					int treeLen = 1 << (subTree & 15);
+					subTree = -(subTree >> 4);
+					do {
+						tree[subTree | (revcode >> 9)] = (short) ((i << 4) | bits);
+						revcode += 1 << bits;
+					} while (revcode < treeLen);
+				}
+				nextCode[bits] = code + (1 << (16 - bits));
+			}
+			
+		}
+		
+		/// <summary>
+		/// Reads the next symbol from input.  The symbol is encoded using the
+		/// huffman tree.
+		/// </summary>
+		/// <param name="input">
+		/// input the input source.
+		/// </param>
+		/// <returns>
+		/// the next symbol, or -1 if not enough input is available.
+		/// </returns>
+		public int GetSymbol(StreamManipulator input)
+		{
+			int lookahead, symbol;
+			if ((lookahead = input.PeekBits(9)) >= 0) {
+				if ((symbol = tree[lookahead]) >= 0) {
+					input.DropBits(symbol & 15);
+					return symbol >> 4;
+				}
+				int subtree = -(symbol >> 4);
+				int bitlen = symbol & 15;
+				if ((lookahead = input.PeekBits(bitlen)) >= 0) {
+					symbol = tree[subtree | (lookahead >> 9)];
+					input.DropBits(symbol & 15);
+					return symbol >> 4;
+				} else {
+					int bits = input.AvailableBits;
+					lookahead = input.PeekBits(bits);
+					symbol = tree[subtree | (lookahead >> 9)];
+					if ((symbol & 15) <= bits) {
+						input.DropBits(symbol & 15);
+						return symbol >> 4;
+					} else {
+						return -1;
+					}
+				}
+			} else {
+				int bits = input.AvailableBits;
+				lookahead = input.PeekBits(bits);
+				symbol = tree[lookahead];
+				if (symbol >= 0 && (symbol & 15) <= bits) {
+					input.DropBits(symbol & 15);
+					return symbol >> 4;
+				} else {
+					return -1;
+				}
+			}
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/PendingBuffer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/PendingBuffer.cs
@@ -1,274 +1,274 @@
-// PendingBuffer.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression 
-{
-	
-	/// <summary>
-	/// This class is general purpose class for writing data to a buffer.
-	/// 
-	/// It allows you to write bits as well as bytes
-	/// Based on DeflaterPending.java
-	/// 
-	/// author of the original java version : Jochen Hoenicke
-	/// </summary>
-	public class PendingBuffer
-	{
-		/// <summary>Internal work buffer
-		/// </summary>
-		protected byte[] buf;
-		
-		int    start;
-		int    end;
-		
-		uint    bits;
-		int    bitCount;
-
-		/// <summary>
-		/// construct instance using default buffer size of 4096
-		/// </summary>
-		public PendingBuffer() : this( 4096 )
-		{
-			
-		}
-		
-		/// <summary>
-		/// construct instance using specified buffer size
-		/// </summary>
-		/// <param name="bufsize">
-		/// size to use for internal buffer
-		/// </param>
-		public PendingBuffer(int bufsize)
-		{
-			buf = new byte[bufsize];
-		}
-
-		/// <summary>
-		/// Clear internal state/buffers
-		/// </summary>
-		public void Reset() 
-		{
-			start = end = bitCount = 0;
-		}
-
-		/// <summary>
-		/// write a byte to buffer
-		/// </summary>
-		/// <param name="b">
-		/// value to write
-		/// </param>
-		public void WriteByte(int b)
-		{
-			if (DeflaterConstants.DEBUGGING && start != 0) {
-				throw new SharpZipBaseException();
-			}
-			buf[end++] = (byte) b;
-		}
-
-		/// <summary>
-		/// Write a short value to buffer LSB first
-		/// </summary>
-		/// <param name="s">
-		/// value to write
-		/// </param>
-		public void WriteShort(int s)
-		{
-			if (DeflaterConstants.DEBUGGING && start != 0) {
-				throw new SharpZipBaseException();
-			}
-			buf[end++] = (byte) s;
-			buf[end++] = (byte) (s >> 8);
-		}
-
-		/// <summary>
-		/// write an integer LSB first
-		/// </summary>
-		/// <param name="s">value to write</param>
-		public void WriteInt(int s)
-		{
-			if (DeflaterConstants.DEBUGGING && start != 0) {
-				throw new SharpZipBaseException();
-			}
-			buf[end++] = (byte) s;
-			buf[end++] = (byte) (s >> 8);
-			buf[end++] = (byte) (s >> 16);
-			buf[end++] = (byte) (s >> 24);
-		}
-		
-		/// <summary>
-		/// Write a block of data to buffer
-		/// </summary>
-		/// <param name="block">data to write</param>
-		/// <param name="offset">offset of first byte to write</param>
-		/// <param name="len">number of bytes to write</param>
-		public void WriteBlock(byte[] block, int offset, int len)
-		{
-			if (DeflaterConstants.DEBUGGING && start != 0) {
-				throw new SharpZipBaseException();
-			}
-			System.Array.Copy(block, offset, buf, end, len);
-			end += len;
-		}
-
-		/// <summary>
-		/// The number of bits written to the buffer
-		/// </summary>
-		public int BitCount {
-			get {
-				return bitCount;
-			}
-		}
-		
-		/// <summary>
-		/// Align internal buffer on a byte boundary
-		/// </summary>
-		public void AlignToByte() 
-		{
-			if (DeflaterConstants.DEBUGGING && start != 0) {
-				throw new SharpZipBaseException();
-			}
-			if (bitCount > 0) {
-				buf[end++] = (byte) bits;
-				if (bitCount > 8) {
-					buf[end++] = (byte) (bits >> 8);
-				}
-			}
-			bits = 0;
-			bitCount = 0;
-		}
-
-		/// <summary>
-		/// Write bits to internal buffer
-		/// </summary>
-		/// <param name="b">source of bits</param>
-		/// <param name="count">number of bits to write</param>
-		public void WriteBits(int b, int count)
-		{
-			if (DeflaterConstants.DEBUGGING && start != 0) {
-				throw new SharpZipBaseException();
-			}
-			//			if (DeflaterConstants.DEBUGGING) {
-			//				//Console.WriteLine("writeBits("+b+","+count+")");
-			//			}
-			bits |= (uint)(b << bitCount);
-			bitCount += count;
-			if (bitCount >= 16) {
-				buf[end++] = (byte) bits;
-				buf[end++] = (byte) (bits >> 8);
-				bits >>= 16;
-				bitCount -= 16;
-			}
-		}
-
-		/// <summary>
-		/// Write a short value to internal buffer most significant byte first
-		/// </summary>
-		/// <param name="s">value to write</param>
-		public void WriteShortMSB(int s) 
-		{
-			if (DeflaterConstants.DEBUGGING && start != 0) {
-				throw new SharpZipBaseException();
-			}
-			buf[end++] = (byte) (s >> 8);
-			buf[end++] = (byte) s;
-		}
-		
-		/// <summary>
-		/// Indicates if buffer has been flushed
-		/// </summary>
-		public bool IsFlushed {
-			get {
-				return end == 0;
-			}
-		}
-		
-		/// <summary>
-		/// Flushes the pending buffer into the given output array.  If the
-		/// output array is to small, only a partial flush is done.
-		/// </summary>
-		/// <param name="output">
-		/// the output array;
-		/// </param>
-		/// <param name="offset">
-		/// the offset into output array;
-		/// </param>
-		/// <param name="length">		
-		/// length the maximum number of bytes to store;
-		/// </param>
-		/// <exception name="ArgumentOutOfRangeException">
-		/// IndexOutOfBoundsException if offset or length are invalid.
-		/// </exception>
-		public int Flush(byte[] output, int offset, int length) 
-		{
-			if (bitCount >= 8) {
-				buf[end++] = (byte) bits;
-				bits >>= 8;
-				bitCount -= 8;
-			}
-			if (length > end - start) {
-				length = end - start;
-				System.Array.Copy(buf, start, output, offset, length);
-				start = 0;
-				end = 0;
-			} else {
-				System.Array.Copy(buf, start, output, offset, length);
-				start += length;
-			}
-			return length;
-		}
-
-		/// <summary>
-		/// Convert internal buffer to byte array.
-		/// Buffer is empty on completion
-		/// </summary>
-		/// <returns>
-		/// converted buffer contents contents
-		/// </returns>
-		public byte[] ToByteArray()
-		{
-			byte[] ret = new byte[end - start];
-			System.Array.Copy(buf, start, ret, 0, ret.Length);
-			start = 0;
-			end = 0;
-			return ret;
-		}
-	}
-}	
+// PendingBuffer.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression 
+{
+	
+	/// <summary>
+	/// This class is general purpose class for writing data to a buffer.
+	/// 
+	/// It allows you to write bits as well as bytes
+	/// Based on DeflaterPending.java
+	/// 
+	/// author of the original java version : Jochen Hoenicke
+	/// </summary>
+	public class PendingBuffer
+	{
+		/// <summary>Internal work buffer
+		/// </summary>
+		protected byte[] buf;
+		
+		int    start;
+		int    end;
+		
+		uint    bits;
+		int    bitCount;
+
+		/// <summary>
+		/// construct instance using default buffer size of 4096
+		/// </summary>
+		public PendingBuffer() : this( 4096 )
+		{
+			
+		}
+		
+		/// <summary>
+		/// construct instance using specified buffer size
+		/// </summary>
+		/// <param name="bufsize">
+		/// size to use for internal buffer
+		/// </param>
+		public PendingBuffer(int bufsize)
+		{
+			buf = new byte[bufsize];
+		}
+
+		/// <summary>
+		/// Clear internal state/buffers
+		/// </summary>
+		public void Reset() 
+		{
+			start = end = bitCount = 0;
+		}
+
+		/// <summary>
+		/// write a byte to buffer
+		/// </summary>
+		/// <param name="b">
+		/// value to write
+		/// </param>
+		public void WriteByte(int b)
+		{
+			if (DeflaterConstants.DEBUGGING && start != 0) {
+				throw new SharpZipBaseException();
+			}
+			buf[end++] = (byte) b;
+		}
+
+		/// <summary>
+		/// Write a short value to buffer LSB first
+		/// </summary>
+		/// <param name="s">
+		/// value to write
+		/// </param>
+		public void WriteShort(int s)
+		{
+			if (DeflaterConstants.DEBUGGING && start != 0) {
+				throw new SharpZipBaseException();
+			}
+			buf[end++] = (byte) s;
+			buf[end++] = (byte) (s >> 8);
+		}
+
+		/// <summary>
+		/// write an integer LSB first
+		/// </summary>
+		/// <param name="s">value to write</param>
+		public void WriteInt(int s)
+		{
+			if (DeflaterConstants.DEBUGGING && start != 0) {
+				throw new SharpZipBaseException();
+			}
+			buf[end++] = (byte) s;
+			buf[end++] = (byte) (s >> 8);
+			buf[end++] = (byte) (s >> 16);
+			buf[end++] = (byte) (s >> 24);
+		}
+		
+		/// <summary>
+		/// Write a block of data to buffer
+		/// </summary>
+		/// <param name="block">data to write</param>
+		/// <param name="offset">offset of first byte to write</param>
+		/// <param name="len">number of bytes to write</param>
+		public void WriteBlock(byte[] block, int offset, int len)
+		{
+			if (DeflaterConstants.DEBUGGING && start != 0) {
+				throw new SharpZipBaseException();
+			}
+			System.Array.Copy(block, offset, buf, end, len);
+			end += len;
+		}
+
+		/// <summary>
+		/// The number of bits written to the buffer
+		/// </summary>
+		public int BitCount {
+			get {
+				return bitCount;
+			}
+		}
+		
+		/// <summary>
+		/// Align internal buffer on a byte boundary
+		/// </summary>
+		public void AlignToByte() 
+		{
+			if (DeflaterConstants.DEBUGGING && start != 0) {
+				throw new SharpZipBaseException();
+			}
+			if (bitCount > 0) {
+				buf[end++] = (byte) bits;
+				if (bitCount > 8) {
+					buf[end++] = (byte) (bits >> 8);
+				}
+			}
+			bits = 0;
+			bitCount = 0;
+		}
+
+		/// <summary>
+		/// Write bits to internal buffer
+		/// </summary>
+		/// <param name="b">source of bits</param>
+		/// <param name="count">number of bits to write</param>
+		public void WriteBits(int b, int count)
+		{
+			if (DeflaterConstants.DEBUGGING && start != 0) {
+				throw new SharpZipBaseException();
+			}
+			//			if (DeflaterConstants.DEBUGGING) {
+			//				//Console.WriteLine("writeBits("+b+","+count+")");
+			//			}
+			bits |= (uint)(b << bitCount);
+			bitCount += count;
+			if (bitCount >= 16) {
+				buf[end++] = (byte) bits;
+				buf[end++] = (byte) (bits >> 8);
+				bits >>= 16;
+				bitCount -= 16;
+			}
+		}
+
+		/// <summary>
+		/// Write a short value to internal buffer most significant byte first
+		/// </summary>
+		/// <param name="s">value to write</param>
+		public void WriteShortMSB(int s) 
+		{
+			if (DeflaterConstants.DEBUGGING && start != 0) {
+				throw new SharpZipBaseException();
+			}
+			buf[end++] = (byte) (s >> 8);
+			buf[end++] = (byte) s;
+		}
+		
+		/// <summary>
+		/// Indicates if buffer has been flushed
+		/// </summary>
+		public bool IsFlushed {
+			get {
+				return end == 0;
+			}
+		}
+		
+		/// <summary>
+		/// Flushes the pending buffer into the given output array.  If the
+		/// output array is to small, only a partial flush is done.
+		/// </summary>
+		/// <param name="output">
+		/// the output array;
+		/// </param>
+		/// <param name="offset">
+		/// the offset into output array;
+		/// </param>
+		/// <param name="length">		
+		/// length the maximum number of bytes to store;
+		/// </param>
+		/// <exception name="ArgumentOutOfRangeException">
+		/// IndexOutOfBoundsException if offset or length are invalid.
+		/// </exception>
+		public int Flush(byte[] output, int offset, int length) 
+		{
+			if (bitCount >= 8) {
+				buf[end++] = (byte) bits;
+				bits >>= 8;
+				bitCount -= 8;
+			}
+			if (length > end - start) {
+				length = end - start;
+				System.Array.Copy(buf, start, output, offset, length);
+				start = 0;
+				end = 0;
+			} else {
+				System.Array.Copy(buf, start, output, offset, length);
+				start += length;
+			}
+			return length;
+		}
+
+		/// <summary>
+		/// Convert internal buffer to byte array.
+		/// Buffer is empty on completion
+		/// </summary>
+		/// <returns>
+		/// converted buffer contents contents
+		/// </returns>
+		public byte[] ToByteArray()
+		{
+			byte[] ret = new byte[end - start];
+			System.Array.Copy(buf, start, ret, 0, ret.Length);
+			start = 0;
+			end = 0;
+			return ret;
+		}
+	}
+}	
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/DeflaterOutputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/DeflaterOutputStream.cs
@@ -1,471 +1,471 @@
-// DeflaterOutputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-using ICSharpCode.SharpZipLib.Checksums;
-using ICSharpCode.SharpZipLib.Zip.Compression;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
-{
-
-	/// <summary>
-	/// A special stream deflating or compressing the bytes that are
-	/// written to it.  It uses a Deflater to perform actual deflating.<br/>
-	/// Authors of the original java version : Tom Tromey, Jochen Hoenicke 
-	/// </summary>
-	public class DeflaterOutputStream : Stream
-	{
-		/// <summary>
-		/// This buffer is used temporarily to retrieve the bytes from the
-		/// deflater and write them to the underlying output stream.
-		/// </summary>
-		protected byte[] buf;
-		
-		/// <summary>
-		/// The deflater which is used to deflate the stream.
-		/// </summary>
-		protected Deflater def;
-		
-		/// <summary>
-		/// Base stream the deflater depends on.
-		/// </summary>
-		protected Stream baseOutputStream;
-
-		bool isClosed = false;
-		bool isStreamOwner = true;
-		
-		/// <summary>
-		/// Get/set flag indicating ownership of underlying stream.
-		/// When the flag is true <see cref="Close"></see> will close the underlying stream also.
-		/// </summary>
-		public bool IsStreamOwner
-		{
-			get { return isStreamOwner; }
-			set { isStreamOwner = value; }
-		}
-		
-		///	<summary>
-		/// Allows client to determine if an entry can be patched after its added
-		/// </summary>
-		public bool CanPatchEntries {
-			get { 
-				return baseOutputStream.CanSeek; 
-			}
-		}
-		
-		/// <summary>
-		/// Gets value indicating stream can be read from
-		/// </summary>
-		public override bool CanRead {
-			get {
-				return baseOutputStream.CanRead;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating if seeking is supported for this stream
-		/// This property always returns false
-		/// </summary>
-		public override bool CanSeek {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Get value indicating if this stream supports writing
-		/// </summary>
-		public override bool CanWrite {
-			get {
-				return baseOutputStream.CanWrite;
-			}
-		}
-		
-		/// <summary>
-		/// Get current length of stream
-		/// </summary>
-		public override long Length {
-			get {
-				return baseOutputStream.Length;
-			}
-		}
-		
-		/// <summary>
-		/// The current position within the stream.
-		/// Always throws a NotSupportedExceptionNotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any attempt to set position</exception>
-		public override long Position {
-			get {
-				return baseOutputStream.Position;
-			}
-			set {
-				throw new NotSupportedException("DefalterOutputStream Position not supported");
-			}
-		}
-		
-		/// <summary>
-		/// Sets the current position of this stream to the given value. Not supported by this class!
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override long Seek(long offset, SeekOrigin origin)
-		{
-			throw new NotSupportedException("DeflaterOutputStream Seek not supported");
-		}
-		
-		/// <summary>
-		/// Sets the length of this stream to the given value. Not supported by this class!
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void SetLength(long val)
-		{
-			throw new NotSupportedException("DeflaterOutputStream SetLength not supported");
-		}
-		
-		/// <summary>
-		/// Read a byte from stream advancing position by one
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override int ReadByte()
-		{
-			throw new NotSupportedException("DeflaterOutputStream ReadByte not supported");
-		}
-		
-		/// <summary>
-		/// Read a block of bytes from stream
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override int Read(byte[] b, int off, int len)
-		{
-			throw new NotSupportedException("DeflaterOutputStream Read not supported");
-		}
-		
-		/// <summary>
-		/// Asynchronous reads are not supported a NotSupportedException is always thrown
-		/// </summary>
-		/// <param name="buffer"></param>
-		/// <param name="offset"></param>
-		/// <param name="count"></param>
-		/// <param name="callback"></param>
-		/// <param name="state"></param>
-		/// <returns></returns>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
-		{
-			throw new NotSupportedException("DeflaterOutputStream BeginRead not currently supported");
-		}
-		
-		/// <summary>
-		/// Asynchronous writes arent supported, a NotSupportedException is always thrown
-		/// </summary>
-		/// <param name="buffer"></param>
-		/// <param name="offset"></param>
-		/// <param name="count"></param>
-		/// <param name="callback"></param>
-		/// <param name="state"></param>
-		/// <returns></returns>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
-		{
-			throw new NotSupportedException("DeflaterOutputStream BeginWrite not currently supported");
-		}
-		
-		/// <summary>
-		/// Deflates everything in the input buffers.  This will call
-		/// <code>def.deflate()</code> until all bytes from the input buffers
-		/// are processed.
-		/// </summary>
-		protected void Deflate()
-		{
-			while (!def.IsNeedingInput) {
-				int len = def.Deflate(buf, 0, buf.Length);
-				
-				if (len <= 0) {
-					break;
-				}
-				
-				if (this.keys != null) {
-					this.EncryptBlock(buf, 0, len);
-				}
-				
-				baseOutputStream.Write(buf, 0, len);
-			}
-			
-			if (!def.IsNeedingInput) {
-				throw new SharpZipBaseException("DeflaterOutputStream can't deflate all input?");
-			}
-		}
-		
-		/// <summary>
-		/// Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
-		/// </summary>
-		/// <param name="baseOutputStream">
-		/// the output stream where deflated output should be written.
-		/// </param>
-		public DeflaterOutputStream(Stream baseOutputStream) : this(baseOutputStream, new Deflater(), 512)
-		{
-		}
-		
-		/// <summary>
-		/// Creates a new DeflaterOutputStream with the given Deflater and
-		/// default buffer size.
-		/// </summary>
-		/// <param name="baseOutputStream">
-		/// the output stream where deflated output should be written.
-		/// </param>
-		/// <param name="defl">
-		/// the underlying deflater.
-		/// </param>
-		public DeflaterOutputStream(Stream baseOutputStream, Deflater defl) : this(baseOutputStream, defl, 512)
-		{
-		}
-		
-		/// <summary>
-		/// Creates a new DeflaterOutputStream with the given Deflater and
-		/// buffer size.
-		/// </summary>
-		/// <param name="baseOutputStream">
-		/// The output stream where deflated output is written.
-		/// </param>
-		/// <param name="deflater">
-		/// The underlying deflater to use
-		/// </param>
-		/// <param name="bufsize">
-		/// The buffer size to use when deflating
-		/// </param>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// bufsize is less than or equal to zero.
-		/// </exception>
-		/// <exception cref="ArgumentException">
-		/// baseOutputStream does not support writing
-		/// </exception>
-		/// <exception cref="ArgumentNullException">
-		/// deflater instance is null
-		/// </exception>
-		public DeflaterOutputStream(Stream baseOutputStream, Deflater deflater, int bufsize)
-		{
-			if (baseOutputStream.CanWrite == false) {
-				throw new ArgumentException("baseOutputStream", "must support writing");
-			}
-
-			if (deflater == null) {
-				throw new ArgumentNullException("deflater");
-			}
-			
-			if (bufsize <= 0) {
-				throw new ArgumentOutOfRangeException("bufsize");
-			}
-			
-			this.baseOutputStream = baseOutputStream;
-			buf = new byte[bufsize];
-			def = deflater;
-		}
-		
-		/// <summary>
-		/// Flushes the stream by calling flush() on the deflater and then
-		/// on the underlying stream.  This ensures that all bytes are
-		/// flushed.
-		/// </summary>
-		public override void Flush()
-		{
-			def.Flush();
-			Deflate();
-			baseOutputStream.Flush();
-		}
-		
-		/// <summary>
-		/// Finishes the stream by calling finish() on the deflater. 
-		/// </summary>
-		/// <exception cref="SharpZipBaseException">
-		/// Not all input is deflated
-		/// </exception>
-		public virtual void Finish()
-		{
-			def.Finish();
-			while (!def.IsFinished)  {
-				int len = def.Deflate(buf, 0, buf.Length);
-				if (len <= 0) {
-					break;
-				}
-				
-				if (this.keys != null) {
-					this.EncryptBlock(buf, 0, len);
-				}
-				
-				baseOutputStream.Write(buf, 0, len);
-			}
-			if (!def.IsFinished) {
-				throw new SharpZipBaseException("Can't deflate all input?");
-			}
-			baseOutputStream.Flush();
-			keys = null;
-		}
-		
-		/// <summary>
-		/// Calls finish() and closes the underlying
-		/// stream when <see cref="IsStreamOwner"></see> is true.
-		/// </summary>
-		public override void Close()
-		{
-			if ( !isClosed ) {
-				isClosed = true;
-				Finish();
-				if ( isStreamOwner ) {
-					baseOutputStream.Close();
-				}
-			}
-		}
-		
-		/// <summary>
-		/// Writes a single byte to the compressed output stream.
-		/// </summary>
-		/// <param name="bval">
-		/// The byte value.
-		/// </param>
-		public override void WriteByte(byte bval)
-		{
-			byte[] b = new byte[1];
-			b[0] = bval;
-			Write(b, 0, 1);
-		}
-		
-		/// <summary>
-		/// Writes bytes from an array to the compressed stream.
-		/// </summary>
-		/// <param name="buf">
-		/// The byte array
-		/// </param>
-		/// <param name="off">
-		/// The offset into the byte array where to start.
-		/// </param>
-		/// <param name="len">
-		/// The number of bytes to write.
-		/// </param>
-		public override void Write(byte[] buf, int off, int len)
-		{
-			def.SetInput(buf, off, len);
-			Deflate();
-		}
-		
-		#region Encryption
-		
-		// TODO:  Refactor this code.  The presence of Zip specific code in this low level class is wrong
-		string password = null;
-		uint[] keys     = null;
-		
-		/// <summary>
-		/// Get/set the password used for encryption.  When null no encryption is performed
-		/// </summary>
-		public string Password {
-			get { 
-				return password; 
-			}
-			set {
-				if ( value != null && value.Length == 0 ) {
-					password = null;
-				} else {
-					password = value; 
-				}
-			}
-		}
-		
-		
-		/// <summary>
-		/// Encrypt a single byte 
-		/// </summary>
-		/// <returns>
-		/// The encrypted value
-		/// </returns>
-		protected byte EncryptByte()
-		{
-			uint temp = ((keys[2] & 0xFFFF) | 2);
-			return (byte)((temp * (temp ^ 1)) >> 8);
-		}
-		
-		
-		/// <summary>
-		/// Encrypt a block of data
-		/// </summary>
-		/// <param name="buffer">
-		/// Data to encrypt.  NOTE the original contents of the buffer are lost
-		/// </param>
-		/// <param name="offset">
-		/// Offset of first byte in buffer to encrypt
-		/// </param>
-		/// <param name="length">
-		/// Number of bytes in buffer to encrypt
-		/// </param>
-		protected void EncryptBlock(byte[] buffer, int offset, int length)
-		{
-			// TODO: refactor to use crypto transform
-			for (int i = offset; i < offset + length; ++i) {
-				byte oldbyte = buffer[i];
-				buffer[i] ^= EncryptByte();
-				UpdateKeys(oldbyte);
-			}
-		}
-		
-		/// <summary>
-		/// Initializes encryption keys based on given password
-		/// </summary>
-		protected void InitializePassword(string password) {
-			keys = new uint[] {
-				0x12345678,
-				0x23456789,
-				0x34567890
-			};
-			
-			for (int i = 0; i < password.Length; ++i) {
-				UpdateKeys((byte)password[i]);
-			}
-		}
-
-		/// <summary>
-		/// Update encryption keys 
-		/// </summary>		
-		protected void UpdateKeys(byte ch)
-		{
-			keys[0] = Crc32.ComputeCrc32(keys[0], ch);
-			keys[1] = keys[1] + (byte)keys[0];
-			keys[1] = keys[1] * 134775813 + 1;
-			keys[2] = Crc32.ComputeCrc32(keys[2], (byte)(keys[1] >> 24));
-		}
-		#endregion
-	}
-}
+// DeflaterOutputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+using ICSharpCode.SharpZipLib.Checksums;
+using ICSharpCode.SharpZipLib.Zip.Compression;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
+{
+
+	/// <summary>
+	/// A special stream deflating or compressing the bytes that are
+	/// written to it.  It uses a Deflater to perform actual deflating.<br/>
+	/// Authors of the original java version : Tom Tromey, Jochen Hoenicke 
+	/// </summary>
+	public class DeflaterOutputStream : Stream
+	{
+		/// <summary>
+		/// This buffer is used temporarily to retrieve the bytes from the
+		/// deflater and write them to the underlying output stream.
+		/// </summary>
+		protected byte[] buf;
+		
+		/// <summary>
+		/// The deflater which is used to deflate the stream.
+		/// </summary>
+		protected Deflater def;
+		
+		/// <summary>
+		/// Base stream the deflater depends on.
+		/// </summary>
+		protected Stream baseOutputStream;
+
+		bool isClosed = false;
+		bool isStreamOwner = true;
+		
+		/// <summary>
+		/// Get/set flag indicating ownership of underlying stream.
+		/// When the flag is true <see cref="Close"></see> will close the underlying stream also.
+		/// </summary>
+		public bool IsStreamOwner
+		{
+			get { return isStreamOwner; }
+			set { isStreamOwner = value; }
+		}
+		
+		///	<summary>
+		/// Allows client to determine if an entry can be patched after its added
+		/// </summary>
+		public bool CanPatchEntries {
+			get { 
+				return baseOutputStream.CanSeek; 
+			}
+		}
+		
+		/// <summary>
+		/// Gets value indicating stream can be read from
+		/// </summary>
+		public override bool CanRead {
+			get {
+				return baseOutputStream.CanRead;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating if seeking is supported for this stream
+		/// This property always returns false
+		/// </summary>
+		public override bool CanSeek {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Get value indicating if this stream supports writing
+		/// </summary>
+		public override bool CanWrite {
+			get {
+				return baseOutputStream.CanWrite;
+			}
+		}
+		
+		/// <summary>
+		/// Get current length of stream
+		/// </summary>
+		public override long Length {
+			get {
+				return baseOutputStream.Length;
+			}
+		}
+		
+		/// <summary>
+		/// The current position within the stream.
+		/// Always throws a NotSupportedExceptionNotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any attempt to set position</exception>
+		public override long Position {
+			get {
+				return baseOutputStream.Position;
+			}
+			set {
+				throw new NotSupportedException("DefalterOutputStream Position not supported");
+			}
+		}
+		
+		/// <summary>
+		/// Sets the current position of this stream to the given value. Not supported by this class!
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override long Seek(long offset, SeekOrigin origin)
+		{
+			throw new NotSupportedException("DeflaterOutputStream Seek not supported");
+		}
+		
+		/// <summary>
+		/// Sets the length of this stream to the given value. Not supported by this class!
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void SetLength(long val)
+		{
+			throw new NotSupportedException("DeflaterOutputStream SetLength not supported");
+		}
+		
+		/// <summary>
+		/// Read a byte from stream advancing position by one
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override int ReadByte()
+		{
+			throw new NotSupportedException("DeflaterOutputStream ReadByte not supported");
+		}
+		
+		/// <summary>
+		/// Read a block of bytes from stream
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override int Read(byte[] b, int off, int len)
+		{
+			throw new NotSupportedException("DeflaterOutputStream Read not supported");
+		}
+		
+		/// <summary>
+		/// Asynchronous reads are not supported a NotSupportedException is always thrown
+		/// </summary>
+		/// <param name="buffer"></param>
+		/// <param name="offset"></param>
+		/// <param name="count"></param>
+		/// <param name="callback"></param>
+		/// <param name="state"></param>
+		/// <returns></returns>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+		{
+			throw new NotSupportedException("DeflaterOutputStream BeginRead not currently supported");
+		}
+		
+		/// <summary>
+		/// Asynchronous writes arent supported, a NotSupportedException is always thrown
+		/// </summary>
+		/// <param name="buffer"></param>
+		/// <param name="offset"></param>
+		/// <param name="count"></param>
+		/// <param name="callback"></param>
+		/// <param name="state"></param>
+		/// <returns></returns>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+		{
+			throw new NotSupportedException("DeflaterOutputStream BeginWrite not currently supported");
+		}
+		
+		/// <summary>
+		/// Deflates everything in the input buffers.  This will call
+		/// <code>def.deflate()</code> until all bytes from the input buffers
+		/// are processed.
+		/// </summary>
+		protected void Deflate()
+		{
+			while (!def.IsNeedingInput) {
+				int len = def.Deflate(buf, 0, buf.Length);
+				
+				if (len <= 0) {
+					break;
+				}
+				
+				if (this.keys != null) {
+					this.EncryptBlock(buf, 0, len);
+				}
+				
+				baseOutputStream.Write(buf, 0, len);
+			}
+			
+			if (!def.IsNeedingInput) {
+				throw new SharpZipBaseException("DeflaterOutputStream can't deflate all input?");
+			}
+		}
+		
+		/// <summary>
+		/// Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
+		/// </summary>
+		/// <param name="baseOutputStream">
+		/// the output stream where deflated output should be written.
+		/// </param>
+		public DeflaterOutputStream(Stream baseOutputStream) : this(baseOutputStream, new Deflater(), 512)
+		{
+		}
+		
+		/// <summary>
+		/// Creates a new DeflaterOutputStream with the given Deflater and
+		/// default buffer size.
+		/// </summary>
+		/// <param name="baseOutputStream">
+		/// the output stream where deflated output should be written.
+		/// </param>
+		/// <param name="defl">
+		/// the underlying deflater.
+		/// </param>
+		public DeflaterOutputStream(Stream baseOutputStream, Deflater defl) : this(baseOutputStream, defl, 512)
+		{
+		}
+		
+		/// <summary>
+		/// Creates a new DeflaterOutputStream with the given Deflater and
+		/// buffer size.
+		/// </summary>
+		/// <param name="baseOutputStream">
+		/// The output stream where deflated output is written.
+		/// </param>
+		/// <param name="deflater">
+		/// The underlying deflater to use
+		/// </param>
+		/// <param name="bufsize">
+		/// The buffer size to use when deflating
+		/// </param>
+		/// <exception cref="ArgumentOutOfRangeException">
+		/// bufsize is less than or equal to zero.
+		/// </exception>
+		/// <exception cref="ArgumentException">
+		/// baseOutputStream does not support writing
+		/// </exception>
+		/// <exception cref="ArgumentNullException">
+		/// deflater instance is null
+		/// </exception>
+		public DeflaterOutputStream(Stream baseOutputStream, Deflater deflater, int bufsize)
+		{
+			if (baseOutputStream.CanWrite == false) {
+				throw new ArgumentException("baseOutputStream", "must support writing");
+			}
+
+			if (deflater == null) {
+				throw new ArgumentNullException("deflater");
+			}
+			
+			if (bufsize <= 0) {
+				throw new ArgumentOutOfRangeException("bufsize");
+			}
+			
+			this.baseOutputStream = baseOutputStream;
+			buf = new byte[bufsize];
+			def = deflater;
+		}
+		
+		/// <summary>
+		/// Flushes the stream by calling flush() on the deflater and then
+		/// on the underlying stream.  This ensures that all bytes are
+		/// flushed.
+		/// </summary>
+		public override void Flush()
+		{
+			def.Flush();
+			Deflate();
+			baseOutputStream.Flush();
+		}
+		
+		/// <summary>
+		/// Finishes the stream by calling finish() on the deflater. 
+		/// </summary>
+		/// <exception cref="SharpZipBaseException">
+		/// Not all input is deflated
+		/// </exception>
+		public virtual void Finish()
+		{
+			def.Finish();
+			while (!def.IsFinished)  {
+				int len = def.Deflate(buf, 0, buf.Length);
+				if (len <= 0) {
+					break;
+				}
+				
+				if (this.keys != null) {
+					this.EncryptBlock(buf, 0, len);
+				}
+				
+				baseOutputStream.Write(buf, 0, len);
+			}
+			if (!def.IsFinished) {
+				throw new SharpZipBaseException("Can't deflate all input?");
+			}
+			baseOutputStream.Flush();
+			keys = null;
+		}
+		
+		/// <summary>
+		/// Calls finish() and closes the underlying
+		/// stream when <see cref="IsStreamOwner"></see> is true.
+		/// </summary>
+		public override void Close()
+		{
+			if ( !isClosed ) {
+				isClosed = true;
+				Finish();
+				if ( isStreamOwner ) {
+					baseOutputStream.Close();
+				}
+			}
+		}
+		
+		/// <summary>
+		/// Writes a single byte to the compressed output stream.
+		/// </summary>
+		/// <param name="bval">
+		/// The byte value.
+		/// </param>
+		public override void WriteByte(byte bval)
+		{
+			byte[] b = new byte[1];
+			b[0] = bval;
+			Write(b, 0, 1);
+		}
+		
+		/// <summary>
+		/// Writes bytes from an array to the compressed stream.
+		/// </summary>
+		/// <param name="buf">
+		/// The byte array
+		/// </param>
+		/// <param name="off">
+		/// The offset into the byte array where to start.
+		/// </param>
+		/// <param name="len">
+		/// The number of bytes to write.
+		/// </param>
+		public override void Write(byte[] buf, int off, int len)
+		{
+			def.SetInput(buf, off, len);
+			Deflate();
+		}
+		
+		#region Encryption
+		
+		// TODO:  Refactor this code.  The presence of Zip specific code in this low level class is wrong
+		string password = null;
+		uint[] keys     = null;
+		
+		/// <summary>
+		/// Get/set the password used for encryption.  When null no encryption is performed
+		/// </summary>
+		public string Password {
+			get { 
+				return password; 
+			}
+			set {
+				if ( value != null && value.Length == 0 ) {
+					password = null;
+				} else {
+					password = value; 
+				}
+			}
+		}
+		
+		
+		/// <summary>
+		/// Encrypt a single byte 
+		/// </summary>
+		/// <returns>
+		/// The encrypted value
+		/// </returns>
+		protected byte EncryptByte()
+		{
+			uint temp = ((keys[2] & 0xFFFF) | 2);
+			return (byte)((temp * (temp ^ 1)) >> 8);
+		}
+		
+		
+		/// <summary>
+		/// Encrypt a block of data
+		/// </summary>
+		/// <param name="buffer">
+		/// Data to encrypt.  NOTE the original contents of the buffer are lost
+		/// </param>
+		/// <param name="offset">
+		/// Offset of first byte in buffer to encrypt
+		/// </param>
+		/// <param name="length">
+		/// Number of bytes in buffer to encrypt
+		/// </param>
+		protected void EncryptBlock(byte[] buffer, int offset, int length)
+		{
+			// TODO: refactor to use crypto transform
+			for (int i = offset; i < offset + length; ++i) {
+				byte oldbyte = buffer[i];
+				buffer[i] ^= EncryptByte();
+				UpdateKeys(oldbyte);
+			}
+		}
+		
+		/// <summary>
+		/// Initializes encryption keys based on given password
+		/// </summary>
+		protected void InitializePassword(string password) {
+			keys = new uint[] {
+				0x12345678,
+				0x23456789,
+				0x34567890
+			};
+			
+			for (int i = 0; i < password.Length; ++i) {
+				UpdateKeys((byte)password[i]);
+			}
+		}
+
+		/// <summary>
+		/// Update encryption keys 
+		/// </summary>		
+		protected void UpdateKeys(byte ch)
+		{
+			keys[0] = Crc32.ComputeCrc32(keys[0], ch);
+			keys[1] = keys[1] + (byte)keys[0];
+			keys[1] = keys[1] * 134775813 + 1;
+			keys[2] = Crc32.ComputeCrc32(keys[2], (byte)(keys[1] >> 24));
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/InflaterInputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/InflaterInputStream.cs
@@ -1,656 +1,656 @@
-// InflaterInputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.Security.Cryptography;
-using System.IO;
-
-using ICSharpCode.SharpZipLib.Zip.Compression;
-using ICSharpCode.SharpZipLib.Checksums;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
-{
-
-   /// <summary>
-   /// An input buffer customised for use by <see cref="InflaterInputStream"/>
-   /// </summary>
-   /// <remarks>
-   /// The buffer supports decryption of incoming data.
-   /// </remarks>
-	public class InflaterInputBuffer
-	{
-		/// <summary>
-		/// Initialise a new instance of <see cref="InflaterInputBuffer"/>
-		/// </summary>
-		/// <param name="stream">The stream to buffer.</param>
-		public InflaterInputBuffer(Stream stream)
-		{
-			inputStream = stream;
-			rawData = new byte[4096];
-			clearText = rawData;
-		}
-		
-		/// <summary>
-		/// Get the length of bytes bytes in the <see cref="RawData"/>
-		/// </summary>
-		public int RawLength
-		{
-			get { 
-				return rawLength; 
-			}
-		}
-		
-		/// <summary>
-		/// Get the contents of the raw data buffer.
-		/// </summary>
-		/// <remarks>This may contain encrypted data.</remarks>
-		public byte[] RawData
-		{
-			get {
-				return rawData;
-			}
-		}
-		
-		/// <summary>
-		/// Get the number of useable bytes in <see cref="ClearText"/>
-		/// </summary>
-		public int ClearTextLength
-		{
-			get {
-				return clearTextLength;
-			}
-		}
-		
-		/// <summary>
-		/// Get the contents of the clear text buffer.
-		/// </summary>
-		public byte[] ClearText
-		{
-			get {
-				return clearText;
-			}
-		}
-		
-		/// <summary>
-		/// Get/set the number of bytes available
-		/// </summary>
-		public int Available
-		{
-			get { return available; }
-			set { available = value; }
-		}
-
-		/// <summary>
-		/// Call <see cref="Inflater.SetInput"/> passing the current clear text buffer contents.
-		/// </summary>
-		/// <param name="inflater">The inflater to set input for.</param>
-		public void SetInflaterInput(Inflater inflater)
-		{
-			if ( available > 0 ) {
-				inflater.SetInput(clearText, clearTextLength - available, available);
-				available = 0;
-			}
-		}
-
-		/// <summary>
-		/// Fill the buffer from the underlying input stream.
-		/// </summary>
-		public void Fill()
-		{
-			rawLength = 0;
-			int toRead = rawData.Length;
-			
-			while (toRead > 0) {
-				int count = inputStream.Read(rawData, rawLength, toRead);
-				if ( count <= 0 ) {
-					if (rawLength == 0) {
-						throw new SharpZipBaseException("Unexpected EOF"); 
-					}
-					break;
-				}
-				rawLength += count;
-				toRead -= count;
-			}
-
-			if ( cryptoTransform != null ) {
-				clearTextLength = cryptoTransform.TransformBlock(rawData, 0, rawLength, clearText, 0);
-			}
-			else {
-				clearTextLength = rawLength;
-			}
-
-			available = clearTextLength;
-		}
-		
-		/// <summary>
-		/// Read a buffer directly from the input stream
-		/// </summary>
-		/// <param name="buffer">The buffer to fill</param>
-		/// <returns>Returns the number of bytes read.</returns>
-		public int ReadRawBuffer(byte[] buffer)
-		{
-			return ReadRawBuffer(buffer, 0, buffer.Length);
-		}
-
-		/// <summary>
-		/// Read a buffer directly from the input stream
-		/// </summary>
-		/// <param name="outBuffer">The buffer to read into</param>
-		/// <param name="offset">The offset to start reading data into.</param>
-		/// <param name="length">The number of bytes to read.</param>
-		/// <returns>Returns the number of bytes read.</returns>
-		public int ReadRawBuffer(byte[] outBuffer, int offset, int length)
-		{
-			if ( length <= 0 ) {
-				throw new ArgumentOutOfRangeException("length");
-			}
-			
-			int currentOffset = offset;
-			int currentLength = length;
-			
-			while ( currentLength > 0 ) {
-				if ( available <= 0 ) {
-					Fill();
-					if (available <= 0) {
-						return 0;
-					}
-				}
-				int toCopy = Math.Min(currentLength, available);
-				System.Array.Copy(rawData, rawLength - (int)available, outBuffer, currentOffset, toCopy);
-            currentOffset += toCopy;
-				currentLength -= toCopy;
-				available -= toCopy;
-			}
-			return length;
-		}
-		
-		/// <summary>
-		/// Read clear text data from the input stream.
-		/// </summary>
-		/// <param name="outBuffer">The buffer to add data to.</param>
-		/// <param name="offset">The offset to start adding data at.</param>
-		/// <param name="length">The number of bytes to read.</param>
-		/// <returns>Returns the number of bytes actually read.</returns>
-		public int ReadClearTextBuffer(byte[] outBuffer, int offset, int length)
-		{
-			if ( length <= 0 ) {
-				throw new ArgumentOutOfRangeException("length");
-			}
-			
-			int currentOffset = offset;
-			int currentLength = length;
-			
-			while ( currentLength > 0 ) {
-				if ( available <= 0 ) {
-					Fill();
-					if (available <= 0) {
-						return 0;
-					}
-				}
-				
-				int toCopy = Math.Min(currentLength, available);
-				System.Array.Copy(clearText, clearTextLength - (int)available, outBuffer, currentOffset, toCopy);
-				currentOffset += toCopy;
-				currentLength -= toCopy;
-				available -= toCopy;
-			}
-			return length;
-		}
-		
-		/// <summary>
-		/// Read a byte from the input stream.
-		/// </summary>
-		/// <returns>Returns the byte read.</returns>
-		public int ReadLeByte()
-		{
-			if (available <= 0) {
-				Fill();
-				if (available <= 0) {
-					throw new ZipException("EOF in header");
-				}
-			}
-			byte result = (byte)(rawData[rawLength - available] & 0xff);
-			available -= 1;
-			return result;
-		}
-		
-		/// <summary>
-		/// Read an unsigned short in little endian byte order.
-		/// </summary>
-		public int ReadLeShort()
-		{
-			return ReadLeByte() | (ReadLeByte() << 8);
-		}
-		
-		/// <summary>
-		/// Read an int in little endian byte order.
-		/// </summary>
-		public int ReadLeInt()
-		{
-			return ReadLeShort() | (ReadLeShort() << 16);
-		}
-		
-		/// <summary>
-		/// Read an int baseInputStream little endian byte order.
-		/// </summary>
-		public long ReadLeLong()
-		{
-			return ReadLeInt() | (ReadLeInt() << 32);
-		}
-
-		/// <summary>
-		/// Get/set the <see cref="ICryptoTransform"/> to apply to any data.
-		/// </summary>
-		/// <remarks>Set this value to null to have no transform applied.</remarks>
-		public ICryptoTransform CryptoTransform
-		{
-			set { 
-				cryptoTransform = value;
-				if ( cryptoTransform != null ) {
-					if ( rawData == clearText ) {
-						if ( internalClearText == null ) {
-							internalClearText = new byte[4096];
-						}
-						clearText = internalClearText;
-					}
-					clearTextLength = rawLength;
-					if ( available > 0 ) {
-						cryptoTransform.TransformBlock(rawData, rawLength - available, available, clearText, rawLength - available);
-					}
-				} else {
-					clearText = rawData;
-					clearTextLength = rawLength;
-				}
-			}
-		}
-
-		#region Instance Fields
-		int rawLength;
-		byte[] rawData;
-		
-		int clearTextLength;
-		byte[] clearText;
-		
-		byte[] internalClearText;
-		
-		int available;
-		
-		ICryptoTransform cryptoTransform;
-		Stream inputStream;
-		#endregion
-	}
-	
-	/// <summary>
-	/// This filter stream is used to decompress data compressed using the "deflate"
-	/// format. The "deflate" format is described in RFC 1951.
-	///
-	/// This stream may form the basis for other decompression filters, such
-	/// as the <see cref="ICSharpCode.SharpZipLib.GZip.GZipInputStream">GZipInputStream</see>.
-	///
-	/// Author of the original java version : John Leuner.
-	/// </summary>
-	public class InflaterInputStream : Stream
-	{
-		/// <summary>
-		/// Decompressor for this stream
-		/// </summary>
-		protected Inflater inf;
-
-		/// <summary>
-		/// <see cref="InflaterInputBuffer">Input buffer</see> for this stream.
-		/// </summary>
-		protected InflaterInputBuffer inputBuffer;
-
-		/// <summary>
-		/// Base stream the inflater reads from.
-		/// </summary>
-		protected Stream baseInputStream;
-		
-		/// <summary>
-		/// The compressed size
-		/// </summary>
-		protected long csize;
-
-		bool isClosed = false;
-		bool isStreamOwner = true;
-		
-		/// <summary>
-		/// Get/set flag indicating ownership of underlying stream.
-		/// When the flag is true <see cref="Close"/> will close the underlying stream also.
-		/// </summary>
-		/// <remarks>
-		/// The default value is true.
-		/// </remarks>
-		public bool IsStreamOwner
-		{
-			get { return isStreamOwner; }
-			set { isStreamOwner = value; }
-		}
-		
-		/// <summary>
-		/// Gets a value indicating whether the current stream supports reading
-		/// </summary>
-		public override bool CanRead {
-			get {
-				return baseInputStream.CanRead;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value of false indicating seeking is not supported for this stream.
-		/// </summary>
-		public override bool CanSeek {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value of false indicating that this stream is not writeable.
-		/// </summary>
-		public override bool CanWrite {
-			get {
-				return false;
-			}
-		}
-		
-		/// <summary>
-		/// A value representing the length of the stream in bytes.
-		/// </summary>
-		public override long Length {
-			get {
-				return inputBuffer.RawLength;
-			}
-		}
-		
-		/// <summary>
-		/// The current position within the stream.
-		/// Throws a NotSupportedException when attempting to set the position
-		/// </summary>
-		/// <exception cref="NotSupportedException">Attempting to set the position</exception>
-		public override long Position {
-			get {
-				return baseInputStream.Position;
-			}
-			set {
-				throw new NotSupportedException("InflaterInputStream Position not supported");
-			}
-		}
-		
-		/// <summary>
-		/// Flushes the baseInputStream
-		/// </summary>
-		public override void Flush()
-		{
-			baseInputStream.Flush();
-		}
-		
-		/// <summary>
-		/// Sets the position within the current stream
-		/// Always throws a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override long Seek(long offset, SeekOrigin origin)
-		{
-			throw new NotSupportedException("Seek not supported");
-		}
-		
-		/// <summary>
-		/// Set the length of the current stream
-		/// Always throws a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void SetLength(long val)
-		{
-			throw new NotSupportedException("InflaterInputStream SetLength not supported");
-		}
-		
-		/// <summary>
-		/// Writes a sequence of bytes to stream and advances the current position
-		/// This method always throws a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void Write(byte[] array, int offset, int count)
-		{
-			throw new NotSupportedException("InflaterInputStream Write not supported");
-		}
-		
-		/// <summary>
-		/// Writes one byte to the current stream and advances the current position
-		/// Always throws a NotSupportedException
-		/// </summary>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override void WriteByte(byte val)
-		{
-			throw new NotSupportedException("InflaterInputStream WriteByte not supported");
-		}
-		
-		/// <summary>
-		/// Entry point to begin an asynchronous write.  Always throws a NotSupportedException.
-		/// </summary>
-		/// <param name="buffer">The buffer to write data from</param>
-		/// <param name="offset">Offset of first byte to write</param>
-		/// <param name="count">The maximum number of bytes to write</param>
-		/// <param name="callback">The method to be called when the asynchronous write operation is completed</param>
-		/// <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests</param>
-		/// <returns>An <see cref="System.IAsyncResult">IAsyncResult</see> that references the asynchronous write</returns>
-		/// <exception cref="NotSupportedException">Any access</exception>
-		public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
-		{
-			throw new NotSupportedException("InflaterInputStream BeginWrite not supported");
-		}
-		
-		/// <summary>
-		/// Create an InflaterInputStream with the default decompressor
-		/// and a default buffer size of 4KB.
-		/// </summary>
-		/// <param name = "baseInputStream">
-		/// The InputStream to read bytes from
-		/// </param>
-		public InflaterInputStream(Stream baseInputStream) : this(baseInputStream, new Inflater(), 4096)
-		{
-		}
-		
-		/// <summary>
-		/// Create an InflaterInputStream with the specified decompressor
-		/// and a default buffer size of 4KB.
-		/// </summary>
-		/// <param name = "baseInputStream">
-		/// The source of input data
-		/// </param>
-		/// <param name = "inf">
-		/// The decompressor used to decompress data read from baseInputStream
-		/// </param>
-		public InflaterInputStream(Stream baseInputStream, Inflater inf) : this(baseInputStream, inf, 4096)
-		{
-		}
-		
-		/// <summary>
-		/// Create an InflaterInputStream with the specified decompressor
-		/// and the specified buffer size.
-		/// </summary>
-		/// <param name = "baseInputStream">
-		/// The InputStream to read bytes from
-		/// </param>
-		/// <param name = "inflater">
-		/// The decompressor to use
-		/// </param>
-		/// <param name = "bufferSize">
-		/// Size of the buffer to use
-		/// </param>
-		public InflaterInputStream(Stream baseInputStream, Inflater inflater, int bufferSize)
-		{
-			if (baseInputStream == null) {
-				throw new ArgumentNullException("InflaterInputStream baseInputStream is null");
-			}
-			
-			if (inflater == null) {
-				throw new ArgumentNullException("InflaterInputStream Inflater is null");
-			}
-			
-			if (bufferSize <= 0) {
-				throw new ArgumentOutOfRangeException("bufferSize");
-			}
-			
-			this.baseInputStream = baseInputStream;
-			this.inf = inflater;
-			
-			inputBuffer = new InflaterInputBuffer(baseInputStream);
-		}
-		
-		/// <summary>
-		/// Returns 0 once the end of the stream (EOF) has been reached.
-		/// Otherwise returns 1.
-		/// </summary>
-		public virtual int Available {
-			get {
-				return inf.IsFinished ? 0 : 1;
-			}
-		}
-		
-		/// <summary>
-		/// Closes the input stream.  When <see cref="IsStreamOwner"></see>
-		/// is true the underlying stream is also closed.
-		/// </summary>
-		public override void Close()
-		{
-			if ( !isClosed ) {
-				isClosed = true;
-				if ( isStreamOwner ) {
-					baseInputStream.Close();
-				}
-			}
-		}
-
-		/// <summary>
-		/// Fills the buffer with more data to decompress.
-		/// </summary>
-		/// <exception cref="SharpZipBaseException">
-		/// Stream ends early
-		/// </exception>
-		protected void Fill()
-		{
-			inputBuffer.Fill();
-			inputBuffer.SetInflaterInput(inf);
-		}
-
-		/// <summary>
-		/// Decompresses data into the byte array
-		/// </summary>
-		/// <param name ="b">
-		/// The array to read and decompress data into
-		/// </param>
-		/// <param name ="off">
-		/// The offset indicating where the data should be placed
-		/// </param>
-		/// <param name ="len">
-		/// The number of bytes to decompress
-		/// </param>
-		/// <returns>The number of bytes read.  Zero signals the end of stream</returns>
-		/// <exception cref="SharpZipBaseException">
-		/// Inflater needs a dictionary
-		/// </exception>
-		public override int Read(byte[] b, int off, int len)
-		{
-			for (;;) {
-				int count;
-				try {
-					count = inf.Inflate(b, off, len);
-				} catch (Exception e) {
-					throw new SharpZipBaseException(e.ToString());
-				}
-				
-				if (count > 0) {
-					return count;
-				}
-				
-				if (inf.IsNeedingDictionary) {
-					throw new SharpZipBaseException("Need a dictionary");
-				} else if (inf.IsFinished) {
-					return 0;
-				} else if (inf.IsNeedingInput) {
-					Fill();
-				} else {
-					throw new InvalidOperationException("Don't know what to do");
-				}
-			}
-		}
-		
-		/// <summary>
-		/// Skip specified number of bytes of uncompressed data
-		/// </summary>
-		/// <param name ="n">
-		/// Number of bytes to skip
-		/// </param>
-		/// <returns>
-		/// The number of bytes skipped, zero if the end of 
-		/// stream has been reached
-		/// </returns>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// Number of bytes to skip is zero or less
-		/// </exception>
-		public long Skip(long n)
-		{
-			if (n <= 0) {
-				throw new ArgumentOutOfRangeException("n");
-			}
-			
-			// v0.80 Skip by seeking if underlying stream supports it...
-			if (baseInputStream.CanSeek) {
-				baseInputStream.Seek(n, SeekOrigin.Current);
-				return n;
-			} else {
-				int len = 2048;
-				if (n < len) {
-					len = (int) n;
-				}
-				byte[] tmp = new byte[len];
-				return (long)baseInputStream.Read(tmp, 0, tmp.Length);
-			}
-		}
-		
-		/// <summary>
-		/// Clear any cryptographic state.
-		/// </summary>		
-		protected void StopDecrypting()
-		{
-			inputBuffer.CryptoTransform = null;
-		}
-	}
-}
+// InflaterInputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.Security.Cryptography;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Zip.Compression;
+using ICSharpCode.SharpZipLib.Checksums;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
+{
+
+   /// <summary>
+   /// An input buffer customised for use by <see cref="InflaterInputStream"/>
+   /// </summary>
+   /// <remarks>
+   /// The buffer supports decryption of incoming data.
+   /// </remarks>
+	public class InflaterInputBuffer
+	{
+		/// <summary>
+		/// Initialise a new instance of <see cref="InflaterInputBuffer"/>
+		/// </summary>
+		/// <param name="stream">The stream to buffer.</param>
+		public InflaterInputBuffer(Stream stream)
+		{
+			inputStream = stream;
+			rawData = new byte[4096];
+			clearText = rawData;
+		}
+		
+		/// <summary>
+		/// Get the length of bytes bytes in the <see cref="RawData"/>
+		/// </summary>
+		public int RawLength
+		{
+			get { 
+				return rawLength; 
+			}
+		}
+		
+		/// <summary>
+		/// Get the contents of the raw data buffer.
+		/// </summary>
+		/// <remarks>This may contain encrypted data.</remarks>
+		public byte[] RawData
+		{
+			get {
+				return rawData;
+			}
+		}
+		
+		/// <summary>
+		/// Get the number of useable bytes in <see cref="ClearText"/>
+		/// </summary>
+		public int ClearTextLength
+		{
+			get {
+				return clearTextLength;
+			}
+		}
+		
+		/// <summary>
+		/// Get the contents of the clear text buffer.
+		/// </summary>
+		public byte[] ClearText
+		{
+			get {
+				return clearText;
+			}
+		}
+		
+		/// <summary>
+		/// Get/set the number of bytes available
+		/// </summary>
+		public int Available
+		{
+			get { return available; }
+			set { available = value; }
+		}
+
+		/// <summary>
+		/// Call <see cref="Inflater.SetInput"/> passing the current clear text buffer contents.
+		/// </summary>
+		/// <param name="inflater">The inflater to set input for.</param>
+		public void SetInflaterInput(Inflater inflater)
+		{
+			if ( available > 0 ) {
+				inflater.SetInput(clearText, clearTextLength - available, available);
+				available = 0;
+			}
+		}
+
+		/// <summary>
+		/// Fill the buffer from the underlying input stream.
+		/// </summary>
+		public void Fill()
+		{
+			rawLength = 0;
+			int toRead = rawData.Length;
+			
+			while (toRead > 0) {
+				int count = inputStream.Read(rawData, rawLength, toRead);
+				if ( count <= 0 ) {
+					if (rawLength == 0) {
+						throw new SharpZipBaseException("Unexpected EOF"); 
+					}
+					break;
+				}
+				rawLength += count;
+				toRead -= count;
+			}
+
+			if ( cryptoTransform != null ) {
+				clearTextLength = cryptoTransform.TransformBlock(rawData, 0, rawLength, clearText, 0);
+			}
+			else {
+				clearTextLength = rawLength;
+			}
+
+			available = clearTextLength;
+		}
+		
+		/// <summary>
+		/// Read a buffer directly from the input stream
+		/// </summary>
+		/// <param name="buffer">The buffer to fill</param>
+		/// <returns>Returns the number of bytes read.</returns>
+		public int ReadRawBuffer(byte[] buffer)
+		{
+			return ReadRawBuffer(buffer, 0, buffer.Length);
+		}
+
+		/// <summary>
+		/// Read a buffer directly from the input stream
+		/// </summary>
+		/// <param name="outBuffer">The buffer to read into</param>
+		/// <param name="offset">The offset to start reading data into.</param>
+		/// <param name="length">The number of bytes to read.</param>
+		/// <returns>Returns the number of bytes read.</returns>
+		public int ReadRawBuffer(byte[] outBuffer, int offset, int length)
+		{
+			if ( length <= 0 ) {
+				throw new ArgumentOutOfRangeException("length");
+			}
+			
+			int currentOffset = offset;
+			int currentLength = length;
+			
+			while ( currentLength > 0 ) {
+				if ( available <= 0 ) {
+					Fill();
+					if (available <= 0) {
+						return 0;
+					}
+				}
+				int toCopy = Math.Min(currentLength, available);
+				System.Array.Copy(rawData, rawLength - (int)available, outBuffer, currentOffset, toCopy);
+            currentOffset += toCopy;
+				currentLength -= toCopy;
+				available -= toCopy;
+			}
+			return length;
+		}
+		
+		/// <summary>
+		/// Read clear text data from the input stream.
+		/// </summary>
+		/// <param name="outBuffer">The buffer to add data to.</param>
+		/// <param name="offset">The offset to start adding data at.</param>
+		/// <param name="length">The number of bytes to read.</param>
+		/// <returns>Returns the number of bytes actually read.</returns>
+		public int ReadClearTextBuffer(byte[] outBuffer, int offset, int length)
+		{
+			if ( length <= 0 ) {
+				throw new ArgumentOutOfRangeException("length");
+			}
+			
+			int currentOffset = offset;
+			int currentLength = length;
+			
+			while ( currentLength > 0 ) {
+				if ( available <= 0 ) {
+					Fill();
+					if (available <= 0) {
+						return 0;
+					}
+				}
+				
+				int toCopy = Math.Min(currentLength, available);
+				System.Array.Copy(clearText, clearTextLength - (int)available, outBuffer, currentOffset, toCopy);
+				currentOffset += toCopy;
+				currentLength -= toCopy;
+				available -= toCopy;
+			}
+			return length;
+		}
+		
+		/// <summary>
+		/// Read a byte from the input stream.
+		/// </summary>
+		/// <returns>Returns the byte read.</returns>
+		public int ReadLeByte()
+		{
+			if (available <= 0) {
+				Fill();
+				if (available <= 0) {
+					throw new ZipException("EOF in header");
+				}
+			}
+			byte result = (byte)(rawData[rawLength - available] & 0xff);
+			available -= 1;
+			return result;
+		}
+		
+		/// <summary>
+		/// Read an unsigned short in little endian byte order.
+		/// </summary>
+		public int ReadLeShort()
+		{
+			return ReadLeByte() | (ReadLeByte() << 8);
+		}
+		
+		/// <summary>
+		/// Read an int in little endian byte order.
+		/// </summary>
+		public int ReadLeInt()
+		{
+			return ReadLeShort() | (ReadLeShort() << 16);
+		}
+		
+		/// <summary>
+		/// Read an int baseInputStream little endian byte order.
+		/// </summary>
+		public long ReadLeLong()
+		{
+			return ReadLeInt() | (ReadLeInt() << 32);
+		}
+
+		/// <summary>
+		/// Get/set the <see cref="ICryptoTransform"/> to apply to any data.
+		/// </summary>
+		/// <remarks>Set this value to null to have no transform applied.</remarks>
+		public ICryptoTransform CryptoTransform
+		{
+			set { 
+				cryptoTransform = value;
+				if ( cryptoTransform != null ) {
+					if ( rawData == clearText ) {
+						if ( internalClearText == null ) {
+							internalClearText = new byte[4096];
+						}
+						clearText = internalClearText;
+					}
+					clearTextLength = rawLength;
+					if ( available > 0 ) {
+						cryptoTransform.TransformBlock(rawData, rawLength - available, available, clearText, rawLength - available);
+					}
+				} else {
+					clearText = rawData;
+					clearTextLength = rawLength;
+				}
+			}
+		}
+
+		#region Instance Fields
+		int rawLength;
+		byte[] rawData;
+		
+		int clearTextLength;
+		byte[] clearText;
+		
+		byte[] internalClearText;
+		
+		int available;
+		
+		ICryptoTransform cryptoTransform;
+		Stream inputStream;
+		#endregion
+	}
+	
+	/// <summary>
+	/// This filter stream is used to decompress data compressed using the "deflate"
+	/// format. The "deflate" format is described in RFC 1951.
+	///
+	/// This stream may form the basis for other decompression filters, such
+	/// as the <see cref="ICSharpCode.SharpZipLib.GZip.GZipInputStream">GZipInputStream</see>.
+	///
+	/// Author of the original java version : John Leuner.
+	/// </summary>
+	public class InflaterInputStream : Stream
+	{
+		/// <summary>
+		/// Decompressor for this stream
+		/// </summary>
+		protected Inflater inf;
+
+		/// <summary>
+		/// <see cref="InflaterInputBuffer">Input buffer</see> for this stream.
+		/// </summary>
+		protected InflaterInputBuffer inputBuffer;
+
+		/// <summary>
+		/// Base stream the inflater reads from.
+		/// </summary>
+		protected Stream baseInputStream;
+		
+		/// <summary>
+		/// The compressed size
+		/// </summary>
+		protected long csize;
+
+		bool isClosed = false;
+		bool isStreamOwner = true;
+		
+		/// <summary>
+		/// Get/set flag indicating ownership of underlying stream.
+		/// When the flag is true <see cref="Close"/> will close the underlying stream also.
+		/// </summary>
+		/// <remarks>
+		/// The default value is true.
+		/// </remarks>
+		public bool IsStreamOwner
+		{
+			get { return isStreamOwner; }
+			set { isStreamOwner = value; }
+		}
+		
+		/// <summary>
+		/// Gets a value indicating whether the current stream supports reading
+		/// </summary>
+		public override bool CanRead {
+			get {
+				return baseInputStream.CanRead;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value of false indicating seeking is not supported for this stream.
+		/// </summary>
+		public override bool CanSeek {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value of false indicating that this stream is not writeable.
+		/// </summary>
+		public override bool CanWrite {
+			get {
+				return false;
+			}
+		}
+		
+		/// <summary>
+		/// A value representing the length of the stream in bytes.
+		/// </summary>
+		public override long Length {
+			get {
+				return inputBuffer.RawLength;
+			}
+		}
+		
+		/// <summary>
+		/// The current position within the stream.
+		/// Throws a NotSupportedException when attempting to set the position
+		/// </summary>
+		/// <exception cref="NotSupportedException">Attempting to set the position</exception>
+		public override long Position {
+			get {
+				return baseInputStream.Position;
+			}
+			set {
+				throw new NotSupportedException("InflaterInputStream Position not supported");
+			}
+		}
+		
+		/// <summary>
+		/// Flushes the baseInputStream
+		/// </summary>
+		public override void Flush()
+		{
+			baseInputStream.Flush();
+		}
+		
+		/// <summary>
+		/// Sets the position within the current stream
+		/// Always throws a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override long Seek(long offset, SeekOrigin origin)
+		{
+			throw new NotSupportedException("Seek not supported");
+		}
+		
+		/// <summary>
+		/// Set the length of the current stream
+		/// Always throws a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void SetLength(long val)
+		{
+			throw new NotSupportedException("InflaterInputStream SetLength not supported");
+		}
+		
+		/// <summary>
+		/// Writes a sequence of bytes to stream and advances the current position
+		/// This method always throws a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void Write(byte[] array, int offset, int count)
+		{
+			throw new NotSupportedException("InflaterInputStream Write not supported");
+		}
+		
+		/// <summary>
+		/// Writes one byte to the current stream and advances the current position
+		/// Always throws a NotSupportedException
+		/// </summary>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override void WriteByte(byte val)
+		{
+			throw new NotSupportedException("InflaterInputStream WriteByte not supported");
+		}
+		
+		/// <summary>
+		/// Entry point to begin an asynchronous write.  Always throws a NotSupportedException.
+		/// </summary>
+		/// <param name="buffer">The buffer to write data from</param>
+		/// <param name="offset">Offset of first byte to write</param>
+		/// <param name="count">The maximum number of bytes to write</param>
+		/// <param name="callback">The method to be called when the asynchronous write operation is completed</param>
+		/// <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests</param>
+		/// <returns>An <see cref="System.IAsyncResult">IAsyncResult</see> that references the asynchronous write</returns>
+		/// <exception cref="NotSupportedException">Any access</exception>
+		public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+		{
+			throw new NotSupportedException("InflaterInputStream BeginWrite not supported");
+		}
+		
+		/// <summary>
+		/// Create an InflaterInputStream with the default decompressor
+		/// and a default buffer size of 4KB.
+		/// </summary>
+		/// <param name = "baseInputStream">
+		/// The InputStream to read bytes from
+		/// </param>
+		public InflaterInputStream(Stream baseInputStream) : this(baseInputStream, new Inflater(), 4096)
+		{
+		}
+		
+		/// <summary>
+		/// Create an InflaterInputStream with the specified decompressor
+		/// and a default buffer size of 4KB.
+		/// </summary>
+		/// <param name = "baseInputStream">
+		/// The source of input data
+		/// </param>
+		/// <param name = "inf">
+		/// The decompressor used to decompress data read from baseInputStream
+		/// </param>
+		public InflaterInputStream(Stream baseInputStream, Inflater inf) : this(baseInputStream, inf, 4096)
+		{
+		}
+		
+		/// <summary>
+		/// Create an InflaterInputStream with the specified decompressor
+		/// and the specified buffer size.
+		/// </summary>
+		/// <param name = "baseInputStream">
+		/// The InputStream to read bytes from
+		/// </param>
+		/// <param name = "inflater">
+		/// The decompressor to use
+		/// </param>
+		/// <param name = "bufferSize">
+		/// Size of the buffer to use
+		/// </param>
+		public InflaterInputStream(Stream baseInputStream, Inflater inflater, int bufferSize)
+		{
+			if (baseInputStream == null) {
+				throw new ArgumentNullException("InflaterInputStream baseInputStream is null");
+			}
+			
+			if (inflater == null) {
+				throw new ArgumentNullException("InflaterInputStream Inflater is null");
+			}
+			
+			if (bufferSize <= 0) {
+				throw new ArgumentOutOfRangeException("bufferSize");
+			}
+			
+			this.baseInputStream = baseInputStream;
+			this.inf = inflater;
+			
+			inputBuffer = new InflaterInputBuffer(baseInputStream);
+		}
+		
+		/// <summary>
+		/// Returns 0 once the end of the stream (EOF) has been reached.
+		/// Otherwise returns 1.
+		/// </summary>
+		public virtual int Available {
+			get {
+				return inf.IsFinished ? 0 : 1;
+			}
+		}
+		
+		/// <summary>
+		/// Closes the input stream.  When <see cref="IsStreamOwner"></see>
+		/// is true the underlying stream is also closed.
+		/// </summary>
+		public override void Close()
+		{
+			if ( !isClosed ) {
+				isClosed = true;
+				if ( isStreamOwner ) {
+					baseInputStream.Close();
+				}
+			}
+		}
+
+		/// <summary>
+		/// Fills the buffer with more data to decompress.
+		/// </summary>
+		/// <exception cref="SharpZipBaseException">
+		/// Stream ends early
+		/// </exception>
+		protected void Fill()
+		{
+			inputBuffer.Fill();
+			inputBuffer.SetInflaterInput(inf);
+		}
+
+		/// <summary>
+		/// Decompresses data into the byte array
+		/// </summary>
+		/// <param name ="b">
+		/// The array to read and decompress data into
+		/// </param>
+		/// <param name ="off">
+		/// The offset indicating where the data should be placed
+		/// </param>
+		/// <param name ="len">
+		/// The number of bytes to decompress
+		/// </param>
+		/// <returns>The number of bytes read.  Zero signals the end of stream</returns>
+		/// <exception cref="SharpZipBaseException">
+		/// Inflater needs a dictionary
+		/// </exception>
+		public override int Read(byte[] b, int off, int len)
+		{
+			for (;;) {
+				int count;
+				try {
+					count = inf.Inflate(b, off, len);
+				} catch (Exception e) {
+					throw new SharpZipBaseException(e.ToString());
+				}
+				
+				if (count > 0) {
+					return count;
+				}
+				
+				if (inf.IsNeedingDictionary) {
+					throw new SharpZipBaseException("Need a dictionary");
+				} else if (inf.IsFinished) {
+					return 0;
+				} else if (inf.IsNeedingInput) {
+					Fill();
+				} else {
+					throw new InvalidOperationException("Don't know what to do");
+				}
+			}
+		}
+		
+		/// <summary>
+		/// Skip specified number of bytes of uncompressed data
+		/// </summary>
+		/// <param name ="n">
+		/// Number of bytes to skip
+		/// </param>
+		/// <returns>
+		/// The number of bytes skipped, zero if the end of 
+		/// stream has been reached
+		/// </returns>
+		/// <exception cref="ArgumentOutOfRangeException">
+		/// Number of bytes to skip is zero or less
+		/// </exception>
+		public long Skip(long n)
+		{
+			if (n <= 0) {
+				throw new ArgumentOutOfRangeException("n");
+			}
+			
+			// v0.80 Skip by seeking if underlying stream supports it...
+			if (baseInputStream.CanSeek) {
+				baseInputStream.Seek(n, SeekOrigin.Current);
+				return n;
+			} else {
+				int len = 2048;
+				if (n < len) {
+					len = (int) n;
+				}
+				byte[] tmp = new byte[len];
+				return (long)baseInputStream.Read(tmp, 0, tmp.Length);
+			}
+		}
+		
+		/// <summary>
+		/// Clear any cryptographic state.
+		/// </summary>		
+		protected void StopDecrypting()
+		{
+			inputBuffer.CryptoTransform = null;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/OutputWindow.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/OutputWindow.cs
@@ -1,226 +1,226 @@
-// OutputWindow.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
-{
-	
-	/// <summary>
-	/// Contains the output from the Inflation process.
-	/// We need to have a window so that we can refer backwards into the output stream
-	/// to repeat stuff.<br/>
-	/// Author of the original java version : John Leuner
-	/// </summary>
-	public class OutputWindow
-	{
-		private static int WINDOW_SIZE = 1 << 15;
-		private static int WINDOW_MASK = WINDOW_SIZE - 1;
-		
-		private byte[] window = new byte[WINDOW_SIZE]; //The window is 2^15 bytes
-		private int windowEnd  = 0;
-		private int windowFilled = 0;
-		
-		/// <summary>
-		/// Write a byte to this output window
-		/// </summary>
-		/// <param name="abyte">value to write</param>
-		/// <exception cref="InvalidOperationException">
-		/// if window is full
-		/// </exception>
-		public void Write(int abyte)
-		{
-			if (windowFilled++ == WINDOW_SIZE) {
-				throw new InvalidOperationException("Window full");
-			}
-			window[windowEnd++] = (byte) abyte;
-			windowEnd &= WINDOW_MASK;
-		}
-		
-		
-		private void SlowRepeat(int repStart, int len, int dist)
-		{
-			while (len-- > 0) {
-				window[windowEnd++] = window[repStart++];
-				windowEnd &= WINDOW_MASK;
-				repStart &= WINDOW_MASK;
-			}
-		}
-		
-		/// <summary>
-		/// Append a byte pattern already in the window itself
-		/// </summary>
-		/// <param name="len">length of pattern to copy</param>
-		/// <param name="dist">distance from end of window pattern occurs</param>
-		/// <exception cref="InvalidOperationException">
-		/// If the repeated data overflows the window
-		/// </exception>
-		public void Repeat(int len, int dist)
-		{
-			if ((windowFilled += len) > WINDOW_SIZE) {
-				throw new InvalidOperationException("Window full");
-			}
-			
-			int rep_start = (windowEnd - dist) & WINDOW_MASK;
-			int border = WINDOW_SIZE - len;
-			if (rep_start <= border && windowEnd < border) {
-				if (len <= dist) {
-					System.Array.Copy(window, rep_start, window, windowEnd, len);
-					windowEnd += len;
-				} else {
-					/* We have to copy manually, since the repeat pattern overlaps. */
-					while (len-- > 0) {
-						window[windowEnd++] = window[rep_start++];
-					}
-				}
-			} else {
-				SlowRepeat(rep_start, len, dist);
-			}
-		}
-		
-		/// <summary>
-		/// Copy from input manipulator to internal window
-		/// </summary>
-		/// <param name="input">source of data</param>
-		/// <param name="len">length of data to copy</param>
-		/// <returns>the number of bytes copied</returns>
-		public int CopyStored(StreamManipulator input, int len)
-		{
-			len = Math.Min(Math.Min(len, WINDOW_SIZE - windowFilled), input.AvailableBytes);
-			int copied;
-			
-			int tailLen = WINDOW_SIZE - windowEnd;
-			if (len > tailLen) {
-				copied = input.CopyBytes(window, windowEnd, tailLen);
-				if (copied == tailLen) {
-					copied += input.CopyBytes(window, 0, len - tailLen);
-				}
-			} else {
-				copied = input.CopyBytes(window, windowEnd, len);
-			}
-			
-			windowEnd = (windowEnd + copied) & WINDOW_MASK;
-			windowFilled += copied;
-			return copied;
-		}
-		
-		/// <summary>
-		/// Copy dictionary to window
-		/// </summary>
-		/// <param name="dict">source dictionary</param>
-		/// <param name="offset">offset of start in source dictionary</param>
-		/// <param name="len">length of dictionary</param>
-		/// <exception cref="InvalidOperationException">
-		/// If window isnt empty
-		/// </exception>
-		public void CopyDict(byte[] dict, int offset, int len)
-		{
-			if (windowFilled > 0) {
-				throw new InvalidOperationException();
-			}
-			
-			if (len > WINDOW_SIZE) {
-				offset += len - WINDOW_SIZE;
-				len = WINDOW_SIZE;
-			}
-			System.Array.Copy(dict, offset, window, 0, len);
-			windowEnd = len & WINDOW_MASK;
-		}
-
-		/// <summary>
-		/// Get remaining unfilled space in window
-		/// </summary>
-		/// <returns>Number of bytes left in window</returns>
-		public int GetFreeSpace()
-		{
-			return WINDOW_SIZE - windowFilled;
-		}
-		
-		/// <summary>
-		/// Get bytes available for output in window
-		/// </summary>
-		/// <returns>Number of bytes filled</returns>
-		public int GetAvailable()
-		{
-			return windowFilled;
-		}
-
-		/// <summary>
-		/// Copy contents of window to output
-		/// </summary>
-		/// <param name="output">buffer to copy to</param>
-		/// <param name="offset">offset to start at</param>
-		/// <param name="len">number of bytes to count</param>
-		/// <returns>The number of bytes copied</returns>
-		/// <exception cref="InvalidOperationException">
-		/// If a window underflow occurs
-		/// </exception>
-		public int CopyOutput(byte[] output, int offset, int len)
-		{
-			int copy_end = windowEnd;
-			if (len > windowFilled) {
-				len = windowFilled;
-			} else {
-				copy_end = (windowEnd - windowFilled + len) & WINDOW_MASK;
-			}
-			
-			int copied = len;
-			int tailLen = len - copy_end;
-			
-			if (tailLen > 0) {
-				System.Array.Copy(window, WINDOW_SIZE - tailLen, output, offset, tailLen);
-				offset += tailLen;
-				len = copy_end;
-			}
-			System.Array.Copy(window, copy_end - len, output, offset, len);
-			windowFilled -= copied;
-			if (windowFilled < 0) {
-				throw new InvalidOperationException();
-			}
-			return copied;
-		}
-
-		/// <summary>
-		/// Reset by clearing window so <see cref="GetAvailable">GetAvailable</see> returns 0
-		/// </summary>
-		public void Reset()
-		{
-			windowFilled = windowEnd = 0;
-		}
-	}
-}
+// OutputWindow.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
+{
+	
+	/// <summary>
+	/// Contains the output from the Inflation process.
+	/// We need to have a window so that we can refer backwards into the output stream
+	/// to repeat stuff.<br/>
+	/// Author of the original java version : John Leuner
+	/// </summary>
+	public class OutputWindow
+	{
+		private static int WINDOW_SIZE = 1 << 15;
+		private static int WINDOW_MASK = WINDOW_SIZE - 1;
+		
+		private byte[] window = new byte[WINDOW_SIZE]; //The window is 2^15 bytes
+		private int windowEnd  = 0;
+		private int windowFilled = 0;
+		
+		/// <summary>
+		/// Write a byte to this output window
+		/// </summary>
+		/// <param name="abyte">value to write</param>
+		/// <exception cref="InvalidOperationException">
+		/// if window is full
+		/// </exception>
+		public void Write(int abyte)
+		{
+			if (windowFilled++ == WINDOW_SIZE) {
+				throw new InvalidOperationException("Window full");
+			}
+			window[windowEnd++] = (byte) abyte;
+			windowEnd &= WINDOW_MASK;
+		}
+		
+		
+		private void SlowRepeat(int repStart, int len, int dist)
+		{
+			while (len-- > 0) {
+				window[windowEnd++] = window[repStart++];
+				windowEnd &= WINDOW_MASK;
+				repStart &= WINDOW_MASK;
+			}
+		}
+		
+		/// <summary>
+		/// Append a byte pattern already in the window itself
+		/// </summary>
+		/// <param name="len">length of pattern to copy</param>
+		/// <param name="dist">distance from end of window pattern occurs</param>
+		/// <exception cref="InvalidOperationException">
+		/// If the repeated data overflows the window
+		/// </exception>
+		public void Repeat(int len, int dist)
+		{
+			if ((windowFilled += len) > WINDOW_SIZE) {
+				throw new InvalidOperationException("Window full");
+			}
+			
+			int rep_start = (windowEnd - dist) & WINDOW_MASK;
+			int border = WINDOW_SIZE - len;
+			if (rep_start <= border && windowEnd < border) {
+				if (len <= dist) {
+					System.Array.Copy(window, rep_start, window, windowEnd, len);
+					windowEnd += len;
+				} else {
+					/* We have to copy manually, since the repeat pattern overlaps. */
+					while (len-- > 0) {
+						window[windowEnd++] = window[rep_start++];
+					}
+				}
+			} else {
+				SlowRepeat(rep_start, len, dist);
+			}
+		}
+		
+		/// <summary>
+		/// Copy from input manipulator to internal window
+		/// </summary>
+		/// <param name="input">source of data</param>
+		/// <param name="len">length of data to copy</param>
+		/// <returns>the number of bytes copied</returns>
+		public int CopyStored(StreamManipulator input, int len)
+		{
+			len = Math.Min(Math.Min(len, WINDOW_SIZE - windowFilled), input.AvailableBytes);
+			int copied;
+			
+			int tailLen = WINDOW_SIZE - windowEnd;
+			if (len > tailLen) {
+				copied = input.CopyBytes(window, windowEnd, tailLen);
+				if (copied == tailLen) {
+					copied += input.CopyBytes(window, 0, len - tailLen);
+				}
+			} else {
+				copied = input.CopyBytes(window, windowEnd, len);
+			}
+			
+			windowEnd = (windowEnd + copied) & WINDOW_MASK;
+			windowFilled += copied;
+			return copied;
+		}
+		
+		/// <summary>
+		/// Copy dictionary to window
+		/// </summary>
+		/// <param name="dict">source dictionary</param>
+		/// <param name="offset">offset of start in source dictionary</param>
+		/// <param name="len">length of dictionary</param>
+		/// <exception cref="InvalidOperationException">
+		/// If window isnt empty
+		/// </exception>
+		public void CopyDict(byte[] dict, int offset, int len)
+		{
+			if (windowFilled > 0) {
+				throw new InvalidOperationException();
+			}
+			
+			if (len > WINDOW_SIZE) {
+				offset += len - WINDOW_SIZE;
+				len = WINDOW_SIZE;
+			}
+			System.Array.Copy(dict, offset, window, 0, len);
+			windowEnd = len & WINDOW_MASK;
+		}
+
+		/// <summary>
+		/// Get remaining unfilled space in window
+		/// </summary>
+		/// <returns>Number of bytes left in window</returns>
+		public int GetFreeSpace()
+		{
+			return WINDOW_SIZE - windowFilled;
+		}
+		
+		/// <summary>
+		/// Get bytes available for output in window
+		/// </summary>
+		/// <returns>Number of bytes filled</returns>
+		public int GetAvailable()
+		{
+			return windowFilled;
+		}
+
+		/// <summary>
+		/// Copy contents of window to output
+		/// </summary>
+		/// <param name="output">buffer to copy to</param>
+		/// <param name="offset">offset to start at</param>
+		/// <param name="len">number of bytes to count</param>
+		/// <returns>The number of bytes copied</returns>
+		/// <exception cref="InvalidOperationException">
+		/// If a window underflow occurs
+		/// </exception>
+		public int CopyOutput(byte[] output, int offset, int len)
+		{
+			int copy_end = windowEnd;
+			if (len > windowFilled) {
+				len = windowFilled;
+			} else {
+				copy_end = (windowEnd - windowFilled + len) & WINDOW_MASK;
+			}
+			
+			int copied = len;
+			int tailLen = len - copy_end;
+			
+			if (tailLen > 0) {
+				System.Array.Copy(window, WINDOW_SIZE - tailLen, output, offset, tailLen);
+				offset += tailLen;
+				len = copy_end;
+			}
+			System.Array.Copy(window, copy_end - len, output, offset, len);
+			windowFilled -= copied;
+			if (windowFilled < 0) {
+				throw new InvalidOperationException();
+			}
+			return copied;
+		}
+
+		/// <summary>
+		/// Reset by clearing window so <see cref="GetAvailable">GetAvailable</see> returns 0
+		/// </summary>
+		public void Reset()
+		{
+			windowFilled = windowEnd = 0;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/StreamManipulator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/Compression/Streams/StreamManipulator.cs
@@ -1,270 +1,270 @@
-// StreamManipulator.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
-{
-	
-	/// <summary>
-	/// This class allows us to retrieve a specified number of bits from
-	/// the input buffer, as well as copy big byte blocks.
-	///
-	/// It uses an int buffer to store up to 31 bits for direct
-	/// manipulation.  This guarantees that we can get at least 16 bits,
-	/// but we only need at most 15, so this is all safe.
-	///
-	/// There are some optimizations in this class, for example, you must
-	/// never peek more than 8 bits more than needed, and you must first
-	/// peek bits before you may drop them.  This is not a general purpose
-	/// class but optimized for the behaviour of the Inflater.
-	///
-	/// authors of the original java version : John Leuner, Jochen Hoenicke
-	/// </summary>
-	public class StreamManipulator
-	{
-		private byte[] window;
-		private int window_start = 0;
-		private int window_end = 0;
-		
-		private uint buffer = 0;
-		private int bits_in_buffer = 0;
-		
-		/// <summary>
-		/// Get the next n bits but don't increase input pointer.  n must be
-		/// less or equal 16 and if this call succeeds, you must drop
-		/// at least n - 8 bits in the next call.
-		/// </summary>
-		/// <returns>
-		/// the value of the bits, or -1 if not enough bits available.  */
-		/// </returns>
-		public int PeekBits(int n)
-		{
-			if (bits_in_buffer < n) {
-				if (window_start == window_end) {
-					return -1; // ok
-				}
-				buffer |= (uint)((window[window_start++] & 0xff |
-				                 (window[window_start++] & 0xff) << 8) << bits_in_buffer);
-				bits_in_buffer += 16;
-			}
-			return (int)(buffer & ((1 << n) - 1));
-		}
-		
-		/// <summary>
-		/// Drops the next n bits from the input.  You should have called PeekBits
-		/// with a bigger or equal n before, to make sure that enough bits are in
-		/// the bit buffer.
-		/// </summary>
-		public void DropBits(int n)
-		{
-			buffer >>= n;
-			bits_in_buffer -= n;
-		}
-		
-		/// <summary>
-		/// Gets the next n bits and increases input pointer.  This is equivalent
-		/// to PeekBits followed by dropBits, except for correct error handling.
-		/// </summary>
-		/// <returns>
-		/// the value of the bits, or -1 if not enough bits available.
-		/// </returns>
-		public int GetBits(int n)
-		{
-			int bits = PeekBits(n);
-			if (bits >= 0) {
-				DropBits(n);
-			}
-			return bits;
-		}
-		
-		/// <summary>
-		/// Gets the number of bits available in the bit buffer.  This must be
-		/// only called when a previous PeekBits() returned -1.
-		/// </summary>
-		/// <returns>
-		/// the number of bits available.
-		/// </returns>
-		public int AvailableBits {
-			get {
-				return bits_in_buffer;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the number of bytes available.
-		/// </summary>
-		/// <returns>
-		/// The number of bytes available.
-		/// </returns>
-		public int AvailableBytes {
-			get {
-				return window_end - window_start + (bits_in_buffer >> 3);
-			}
-		}
-		
-		/// <summary>
-		/// Skips to the next byte boundary.
-		/// </summary>
-		public void SkipToByteBoundary()
-		{
-			buffer >>= (bits_in_buffer & 7);
-			bits_in_buffer &= ~7;
-		}
-
-		/// <summary>
-		/// Returns true when SetInput can be called
-		/// </summary>
-		public bool IsNeedingInput {
-			get {
-				return window_start == window_end;
-			}
-		}
-		
-		/// <summary>
-		/// Copies length bytes from input buffer to output buffer starting
-		/// at output[offset].  You have to make sure, that the buffer is
-		/// byte aligned.  If not enough bytes are available, copies fewer
-		/// bytes.
-		/// </summary>
-		/// <param name="output">
-		/// The buffer to copy bytes to.
-		/// </param>
-		/// <param name="offset">
-		/// The offset in the buffer at which copying starts
-		/// </param>
-		/// <param name="length">
-		/// The length to copy, 0 is allowed.
-		/// </param>
-		/// <returns>
-		/// The number of bytes copied, 0 if no bytes were available.
-		/// </returns>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// Length is less than zero
-		/// </exception>
-		/// <exception cref="InvalidOperationException">
-		/// Bit buffer isnt byte aligned
-		/// </exception>
-		public int CopyBytes(byte[] output, int offset, int length)
-		{
-			if (length < 0) {
-				throw new ArgumentOutOfRangeException("length");
-			}
-			if ((bits_in_buffer & 7) != 0) {
-				/* bits_in_buffer may only be 0 or a multiple of 8 */
-				throw new InvalidOperationException("Bit buffer is not byte aligned!");
-			}
-			
-			int count = 0;
-			while (bits_in_buffer > 0 && length > 0) {
-				output[offset++] = (byte) buffer;
-				buffer >>= 8;
-				bits_in_buffer -= 8;
-				length--;
-				count++;
-			}
-			
-			if (length == 0) {
-				return count;
-			}
-			
-			int avail = window_end - window_start;
-			if (length > avail) {
-				length = avail;
-			}
-			System.Array.Copy(window, window_start, output, offset, length);
-			window_start += length;
-			
-			if (((window_start - window_end) & 1) != 0) {
-				/* We always want an even number of bytes in input, see peekBits */
-				buffer = (uint)(window[window_start++] & 0xff);
-				bits_in_buffer = 8;
-			}
-			return count + length;
-		}
-		
-		/// <summary>
-		/// Constructs a default StreamManipulator with all buffers empty
-		/// </summary>
-		public StreamManipulator()
-		{
-		}
-
-		
-		/// <summary>
-		/// resets state and empties internal buffers
-		/// </summary>
-		public void Reset()
-		{
-			buffer = (uint)(window_start = window_end = bits_in_buffer = 0);
-		}
-
-		/// <summary>
-		/// Add more input for consumption.
-		/// Only call when IsNeedingInput returns true
-		/// </summary>
-		/// <param name="buf">data to be input</param>
-		/// <param name="off">offset of first byte of input</param>
-		/// <param name="len">length of input</param>
-		public void SetInput(byte[] buf, int off, int len)
-		{
-			if (window_start < window_end) {
-				throw new InvalidOperationException("Old input was not completely processed");
-			}
-			
-			int end = off + len;
-			
-			/* We want to throw an ArrayIndexOutOfBoundsException early.  The
-			* check is very tricky: it also handles integer wrap around.
-			*/
-			if (0 > off || off > end || end > buf.Length) {
-				throw new ArgumentOutOfRangeException();
-			}
-			
-			if ((len & 1) != 0) {
-				/* We always want an even number of bytes in input, see peekBits */
-				buffer |= (uint)((buf[off++] & 0xff) << bits_in_buffer);
-				bits_in_buffer += 8;
-			}
-			
-			window = buf;
-			window_start = off;
-			window_end = end;
-		}
-	}
-}
+// StreamManipulator.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Zip.Compression.Streams 
+{
+	
+	/// <summary>
+	/// This class allows us to retrieve a specified number of bits from
+	/// the input buffer, as well as copy big byte blocks.
+	///
+	/// It uses an int buffer to store up to 31 bits for direct
+	/// manipulation.  This guarantees that we can get at least 16 bits,
+	/// but we only need at most 15, so this is all safe.
+	///
+	/// There are some optimizations in this class, for example, you must
+	/// never peek more than 8 bits more than needed, and you must first
+	/// peek bits before you may drop them.  This is not a general purpose
+	/// class but optimized for the behaviour of the Inflater.
+	///
+	/// authors of the original java version : John Leuner, Jochen Hoenicke
+	/// </summary>
+	public class StreamManipulator
+	{
+		private byte[] window;
+		private int window_start = 0;
+		private int window_end = 0;
+		
+		private uint buffer = 0;
+		private int bits_in_buffer = 0;
+		
+		/// <summary>
+		/// Get the next n bits but don't increase input pointer.  n must be
+		/// less or equal 16 and if this call succeeds, you must drop
+		/// at least n - 8 bits in the next call.
+		/// </summary>
+		/// <returns>
+		/// the value of the bits, or -1 if not enough bits available.  */
+		/// </returns>
+		public int PeekBits(int n)
+		{
+			if (bits_in_buffer < n) {
+				if (window_start == window_end) {
+					return -1; // ok
+				}
+				buffer |= (uint)((window[window_start++] & 0xff |
+				                 (window[window_start++] & 0xff) << 8) << bits_in_buffer);
+				bits_in_buffer += 16;
+			}
+			return (int)(buffer & ((1 << n) - 1));
+		}
+		
+		/// <summary>
+		/// Drops the next n bits from the input.  You should have called PeekBits
+		/// with a bigger or equal n before, to make sure that enough bits are in
+		/// the bit buffer.
+		/// </summary>
+		public void DropBits(int n)
+		{
+			buffer >>= n;
+			bits_in_buffer -= n;
+		}
+		
+		/// <summary>
+		/// Gets the next n bits and increases input pointer.  This is equivalent
+		/// to PeekBits followed by dropBits, except for correct error handling.
+		/// </summary>
+		/// <returns>
+		/// the value of the bits, or -1 if not enough bits available.
+		/// </returns>
+		public int GetBits(int n)
+		{
+			int bits = PeekBits(n);
+			if (bits >= 0) {
+				DropBits(n);
+			}
+			return bits;
+		}
+		
+		/// <summary>
+		/// Gets the number of bits available in the bit buffer.  This must be
+		/// only called when a previous PeekBits() returned -1.
+		/// </summary>
+		/// <returns>
+		/// the number of bits available.
+		/// </returns>
+		public int AvailableBits {
+			get {
+				return bits_in_buffer;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the number of bytes available.
+		/// </summary>
+		/// <returns>
+		/// The number of bytes available.
+		/// </returns>
+		public int AvailableBytes {
+			get {
+				return window_end - window_start + (bits_in_buffer >> 3);
+			}
+		}
+		
+		/// <summary>
+		/// Skips to the next byte boundary.
+		/// </summary>
+		public void SkipToByteBoundary()
+		{
+			buffer >>= (bits_in_buffer & 7);
+			bits_in_buffer &= ~7;
+		}
+
+		/// <summary>
+		/// Returns true when SetInput can be called
+		/// </summary>
+		public bool IsNeedingInput {
+			get {
+				return window_start == window_end;
+			}
+		}
+		
+		/// <summary>
+		/// Copies length bytes from input buffer to output buffer starting
+		/// at output[offset].  You have to make sure, that the buffer is
+		/// byte aligned.  If not enough bytes are available, copies fewer
+		/// bytes.
+		/// </summary>
+		/// <param name="output">
+		/// The buffer to copy bytes to.
+		/// </param>
+		/// <param name="offset">
+		/// The offset in the buffer at which copying starts
+		/// </param>
+		/// <param name="length">
+		/// The length to copy, 0 is allowed.
+		/// </param>
+		/// <returns>
+		/// The number of bytes copied, 0 if no bytes were available.
+		/// </returns>
+		/// <exception cref="ArgumentOutOfRangeException">
+		/// Length is less than zero
+		/// </exception>
+		/// <exception cref="InvalidOperationException">
+		/// Bit buffer isnt byte aligned
+		/// </exception>
+		public int CopyBytes(byte[] output, int offset, int length)
+		{
+			if (length < 0) {
+				throw new ArgumentOutOfRangeException("length");
+			}
+			if ((bits_in_buffer & 7) != 0) {
+				/* bits_in_buffer may only be 0 or a multiple of 8 */
+				throw new InvalidOperationException("Bit buffer is not byte aligned!");
+			}
+			
+			int count = 0;
+			while (bits_in_buffer > 0 && length > 0) {
+				output[offset++] = (byte) buffer;
+				buffer >>= 8;
+				bits_in_buffer -= 8;
+				length--;
+				count++;
+			}
+			
+			if (length == 0) {
+				return count;
+			}
+			
+			int avail = window_end - window_start;
+			if (length > avail) {
+				length = avail;
+			}
+			System.Array.Copy(window, window_start, output, offset, length);
+			window_start += length;
+			
+			if (((window_start - window_end) & 1) != 0) {
+				/* We always want an even number of bytes in input, see peekBits */
+				buffer = (uint)(window[window_start++] & 0xff);
+				bits_in_buffer = 8;
+			}
+			return count + length;
+		}
+		
+		/// <summary>
+		/// Constructs a default StreamManipulator with all buffers empty
+		/// </summary>
+		public StreamManipulator()
+		{
+		}
+
+		
+		/// <summary>
+		/// resets state and empties internal buffers
+		/// </summary>
+		public void Reset()
+		{
+			buffer = (uint)(window_start = window_end = bits_in_buffer = 0);
+		}
+
+		/// <summary>
+		/// Add more input for consumption.
+		/// Only call when IsNeedingInput returns true
+		/// </summary>
+		/// <param name="buf">data to be input</param>
+		/// <param name="off">offset of first byte of input</param>
+		/// <param name="len">length of input</param>
+		public void SetInput(byte[] buf, int off, int len)
+		{
+			if (window_start < window_end) {
+				throw new InvalidOperationException("Old input was not completely processed");
+			}
+			
+			int end = off + len;
+			
+			/* We want to throw an ArrayIndexOutOfBoundsException early.  The
+			* check is very tricky: it also handles integer wrap around.
+			*/
+			if (0 > off || off > end || end > buf.Length) {
+				throw new ArgumentOutOfRangeException();
+			}
+			
+			if ((len & 1) != 0) {
+				/* We always want an even number of bytes in input, see peekBits */
+				buffer |= (uint)((buf[off++] & 0xff) << bits_in_buffer);
+				bits_in_buffer += 8;
+			}
+			
+			window = buf;
+			window_start = off;
+			window_end = end;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/FastZip.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/FastZip.cs
@@ -1,430 +1,430 @@
-// SimpleZip.cs
-//
-// Copyright 2005 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-
-using System;
-using System.IO;
-using ICSharpCode.SharpZipLib.Core;
-
-namespace ICSharpCode.SharpZipLib.Zip
-{
-	/// <summary>
-	/// FastZipEvents supports all events applicable to <see cref="FastZip">FastZip</see> operations.
-	/// </summary>
-	public class FastZipEvents
-	{
-		/// <summary>
-		/// Delegate to invoke when processing directories.
-		/// </summary>
-		public ProcessDirectoryDelegate ProcessDirectory;
-		
-		/// <summary>
-		/// Delegate to invoke when processing files.
-		/// </summary>
-		public ProcessFileDelegate ProcessFile;
-
-		/// <summary>
-		/// Delegate to invoke when processing directory failures.
-		/// </summary>
-		public DirectoryFailureDelegate DirectoryFailure;
-		
-		/// <summary>
-		/// Delegate to invoke when processing file failures.
-		/// </summary>
-		public FileFailureDelegate FileFailure;
-		
-		/// <summary>
-		/// Raise the directory failure event.
-		/// </summary>
-		/// <param name="directory">The directory.</param>
-		/// <param name="e">The exception for this event.</param>
-		public void OnDirectoryFailure(string directory, Exception e)
-		{
-			if ( DirectoryFailure != null ) {
-				ScanFailureEventArgs args = new ScanFailureEventArgs(directory, e);
-				DirectoryFailure(this, args);
-			}
-		}
-		
-		/// <summary>
-		/// Raises the file failure event.
-		/// </summary>
-		/// <param name="file">The file for this event.</param>
-		/// <param name="e">The exception for this event.</param>
-		public void OnFileFailure(string file, Exception e)
-		{
-			if ( FileFailure != null ) {
-				ScanFailureEventArgs args = new ScanFailureEventArgs(file, e);
-				FileFailure(this, args);
-			}
-		}
-		
-		/// <summary>
-		/// Raises the ProcessFileEvent.
-		/// </summary>
-		/// <param name="file">The file for this event.</param>
-		public void OnProcessFile(string file)
-		{
-			if ( ProcessFile != null ) {
-				ScanEventArgs args = new ScanEventArgs(file);
-				ProcessFile(this, args);
-			}
-		}
-		
-		/// <summary>
-		/// Raises the ProcessDirectoryEvent.
-		/// </summary>
-		/// <param name="directory">The directory for this event.</param>
-		/// <param name="hasMatchingFiles">Flag indicating if directory has matching files as determined by the current filter.</param>
-		public void OnProcessDirectory(string directory, bool hasMatchingFiles)
-		{
-			if ( ProcessDirectory != null ) {
-				DirectoryEventArgs args = new DirectoryEventArgs(directory, hasMatchingFiles);
-				ProcessDirectory(this, args);
-			}
-		}
-		
-	}
-	
-	/// <summary>
-	/// FastZip provides facilities for creating and extracting zip files.
-	/// Only relative paths are supported.
-	/// </summary>
-	public class FastZip
-	{
-		/// <summary>
-		/// Initialize a default instance of FastZip.
-		/// </summary>
-		public FastZip()
-		{
-			this.events = null;
-		}
-		
-		/// <summary>
-		/// Initialise a new instance of <see cref="FastZip"/>
-		/// </summary>
-		/// <param name="events"></param>
-		public FastZip(FastZipEvents events)
-		{
-			this.events = events;
-		}
-		
-		/// <summary>
-		/// Defines the desired handling when overwriting files.
-		/// </summary>
-		public enum Overwrite {
-			/// <summary>
-			/// Prompt the user to confirm overwriting
-			/// </summary>
-			Prompt,
-			/// <summary>
-			/// Never overwrite files.
-			/// </summary>
-			Never,
-			/// <summary>
-			/// Always overwrite files.
-			/// </summary>
-			Always
-		}
-
-		/// <summary>
-		/// Get/set a value indicating wether empty directories should be created.
-		/// </summary>
-		public bool CreateEmptyDirectories
-		{
-			get { return createEmptyDirectories; }
-			set { createEmptyDirectories = value; }
-		}
-
-		/// <summary>
-		/// Delegate called when confirming overwriting of files.
-		/// </summary>
-		public delegate bool ConfirmOverwriteDelegate(string fileName);
-		
-		/// <summary>
-		/// Create a zip file.
-		/// </summary>
-		/// <param name="zipFileName">The name of the zip file to create.</param>
-		/// <param name="sourceDirectory">The directory to source files from.</param>
-		/// <param name="recurse">True to recurse directories, false for no recursion.</param>
-		/// <param name="fileFilter">The file filter to apply.</param>
-		/// <param name="directoryFilter">The directory filter to apply.</param>
-		public void CreateZip(string zipFileName, string sourceDirectory, bool recurse, string fileFilter, string directoryFilter)
-		{
-			NameTransform = new ZipNameTransform(true, sourceDirectory);
-			this.sourceDirectory = sourceDirectory;
-			
-			outputStream = new ZipOutputStream(File.Create(zipFileName));
-			try {
-				FileSystemScanner scanner = new FileSystemScanner(fileFilter, directoryFilter);
-				scanner.ProcessFile += new ProcessFileDelegate(ProcessFile);
-				if ( this.CreateEmptyDirectories ) {
-					scanner.ProcessDirectory += new ProcessDirectoryDelegate(ProcessDirectory);
-				}
-				scanner.Scan(sourceDirectory, recurse);
-			}
-			finally {
-				outputStream.Close();
-			}
-		}
-
-		/// <summary>
-		/// Create a zip file/archive.
-		/// </summary>
-		/// <param name="zipFileName">The name of the zip file to create.</param>
-		/// <param name="sourceDirectory">The directory to obtain files and directories from.</param>
-		/// <param name="recurse">True to recurse directories, false for no recursion.</param>
-		/// <param name="fileFilter">The file filter to apply.</param>
-		public void CreateZip(string zipFileName, string sourceDirectory, bool recurse, string fileFilter)
-		{
-			CreateZip(zipFileName, sourceDirectory, recurse, fileFilter, null);
-		}
-
-		/// <summary>
-		/// Extract the contents of a zip file.
-		/// </summary>
-		/// <param name="zipFileName">The zip file to extract from.</param>
-		/// <param name="targetDirectory">The directory to save extracted information in.</param>
-		/// <param name="fileFilter">A filter to apply to files.</param>
-		public void ExtractZip(string zipFileName, string targetDirectory, string fileFilter) 
-		{
-			ExtractZip(zipFileName, targetDirectory, Overwrite.Always, null, fileFilter, null);
-		}
-		
-		/// <summary>
-		/// Exatract the contents of a zip file.
-		/// </summary>
-		/// <param name="zipFileName">The zip file to extract from.</param>
-		/// <param name="targetDirectory">The directory to save extracted information in.</param>
-		/// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param>
-		/// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param>
-		/// <param name="fileFilter">A filter to apply to files.</param>
-		/// <param name="directoryFilter">A filter to apply to directories.</param>
-		public void ExtractZip(string zipFileName, string targetDirectory, 
-		                       Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, 
-		                       string fileFilter, string directoryFilter)
-		{
-			if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) {
-				throw new ArgumentNullException("confirmDelegate");
-			}
-			this.overwrite = overwrite;
-			this.confirmDelegate = confirmDelegate;
-			this.targetDirectory = targetDirectory;
-			this.fileFilter = new NameFilter(fileFilter);
-			this.directoryFilter = new NameFilter(directoryFilter);
-			
-			inputStream = new ZipInputStream(File.OpenRead(zipFileName));
-			
-			try {
-				
-				if (password != null) {
-					inputStream.Password = password;
-				}
-
-				ZipEntry entry;
-				while ( (entry = inputStream.GetNextEntry()) != null ) {
-					if ( this.directoryFilter.IsMatch(Path.GetDirectoryName(entry.Name)) && this.fileFilter.IsMatch(entry.Name) ) {
-						ExtractEntry(entry);
-					}
-				}
-			}
-			finally {
-				inputStream.Close();
-			}
-		}
-		
-		void ProcessDirectory(object sender, DirectoryEventArgs e)
-		{
-			if ( !e.HasMatchingFiles && createEmptyDirectories ) {
-				if ( events != null ) {
-					events.OnProcessDirectory(e.Name, e.HasMatchingFiles);
-				}
-				
-				if (e.Name != sourceDirectory) {
-					string cleanedName = nameTransform.TransformDirectory(e.Name);
-					ZipEntry entry = new ZipEntry(cleanedName);
-					outputStream.PutNextEntry(entry);
-				}
-			}
-		}
-		
-		void ProcessFile(object sender, ScanEventArgs e)
-		{
-			if ( events != null ) {
-				events.OnProcessFile(e.Name);
-			}
-			string cleanedName = nameTransform.TransformFile(e.Name);
-			ZipEntry entry = new ZipEntry(cleanedName);
-			outputStream.PutNextEntry(entry);
-			AddFileContents(e.Name);
-		}
-
-		void AddFileContents(string name)
-		{
-			if ( buffer == null ) {
-				buffer = new byte[4096];
-			}
-
-			FileStream stream = File.OpenRead(name);
-			try {
-				int length;
-				do {
-					length = stream.Read(buffer, 0, buffer.Length);
-					outputStream.Write(buffer, 0, length);
-				} while ( length > 0 );
-			}
-			finally {
-				stream.Close();
-			}
-		}
-		
-		void ExtractFileEntry(ZipEntry entry, string targetName)
-		{
-			bool proceed = true;
-			if ((overwrite == Overwrite.Prompt) && (confirmDelegate != null)) {
-				if (File.Exists(targetName) == true) {
-					proceed = confirmDelegate(targetName);
-				}
-			}
-
-			if ( proceed ) {
-				
-				if ( events != null ) {
-					events.OnProcessFile(entry.Name);
-				}
-			
-				FileStream streamWriter = File.Create(targetName);
-			
-				try {
-					if ( buffer == null ) {
-						buffer = new byte[4096];
-					}
-					
-					int size;
-		
-					do {
-						size = inputStream.Read(buffer, 0, buffer.Length);
-						streamWriter.Write(buffer, 0, size);
-					} while (size > 0);
-				}
-				finally {
-					streamWriter.Close();
-				}
-	
-				if (restoreDateTime) {
-					File.SetLastWriteTime(targetName, entry.DateTime);
-				}
-			}
-		}
-
-		bool NameIsValid(string name)
-		{
-			return name != null && name.Length > 0 && name.IndexOfAny(Path.InvalidPathChars) < 0;
-		}
-		
-		void ExtractEntry(ZipEntry entry)
-		{
-			bool doExtraction = NameIsValid(entry.Name);
-			
-			string dirName = null;
-			string targetName = null;
-			
-			if ( doExtraction ) {
-				string entryFileName;
-				if (Path.IsPathRooted(entry.Name)) {
-					string workName = Path.GetPathRoot(entry.Name);
-					workName = entry.Name.Substring(workName.Length);
-					entryFileName = Path.Combine(Path.GetDirectoryName(workName), Path.GetFileName(entry.Name));
-				} else {
-					entryFileName = entry.Name;
-				}
-				
-				targetName = Path.Combine(targetDirectory, entryFileName);
-				dirName = Path.GetDirectoryName(Path.GetFullPath(targetName));
-	
-				doExtraction = doExtraction && (entryFileName.Length > 0);
-			}
-			
-			if ( doExtraction && !Directory.Exists(dirName) )
-			{
-				if ( !entry.IsDirectory || this.CreateEmptyDirectories ) {
-					try {
-						Directory.CreateDirectory(dirName);
-					}
-					catch {
-						doExtraction = false;
-					}
-				}
-			}
-			
-			if ( doExtraction && entry.IsFile ) {
-				ExtractFileEntry(entry, targetName);
-			}
-		}
-		
-		/// <summary>
-		/// Get or set the <see cref="ZipNameTransform"> active when creating Zip files.</see>
-		/// </summary>
-		public ZipNameTransform NameTransform
-		{
-			get { return nameTransform; }
-			set {
-				if ( value == null ) {
-					nameTransform = new ZipNameTransform();
-				}
-				else {
-					nameTransform = value;
-				}
-			}
-		}
-		
-		#region Instance Fields
-		byte[] buffer;
-		ZipOutputStream outputStream;
-		ZipInputStream inputStream;
-		string password = null;
-		string targetDirectory;
-		string sourceDirectory;
-		NameFilter fileFilter;
-		NameFilter directoryFilter;
-		Overwrite overwrite;
-		ConfirmOverwriteDelegate confirmDelegate;
-		bool restoreDateTime = false;
-		bool createEmptyDirectories = false;
-		FastZipEvents events;
-		ZipNameTransform nameTransform;
-		#endregion
-	}
-}
+// SimpleZip.cs
+//
+// Copyright 2005 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+
+using System;
+using System.IO;
+using ICSharpCode.SharpZipLib.Core;
+
+namespace ICSharpCode.SharpZipLib.Zip
+{
+	/// <summary>
+	/// FastZipEvents supports all events applicable to <see cref="FastZip">FastZip</see> operations.
+	/// </summary>
+	public class FastZipEvents
+	{
+		/// <summary>
+		/// Delegate to invoke when processing directories.
+		/// </summary>
+		public ProcessDirectoryDelegate ProcessDirectory;
+		
+		/// <summary>
+		/// Delegate to invoke when processing files.
+		/// </summary>
+		public ProcessFileDelegate ProcessFile;
+
+		/// <summary>
+		/// Delegate to invoke when processing directory failures.
+		/// </summary>
+		public DirectoryFailureDelegate DirectoryFailure;
+		
+		/// <summary>
+		/// Delegate to invoke when processing file failures.
+		/// </summary>
+		public FileFailureDelegate FileFailure;
+		
+		/// <summary>
+		/// Raise the directory failure event.
+		/// </summary>
+		/// <param name="directory">The directory.</param>
+		/// <param name="e">The exception for this event.</param>
+		public void OnDirectoryFailure(string directory, Exception e)
+		{
+			if ( DirectoryFailure != null ) {
+				ScanFailureEventArgs args = new ScanFailureEventArgs(directory, e);
+				DirectoryFailure(this, args);
+			}
+		}
+		
+		/// <summary>
+		/// Raises the file failure event.
+		/// </summary>
+		/// <param name="file">The file for this event.</param>
+		/// <param name="e">The exception for this event.</param>
+		public void OnFileFailure(string file, Exception e)
+		{
+			if ( FileFailure != null ) {
+				ScanFailureEventArgs args = new ScanFailureEventArgs(file, e);
+				FileFailure(this, args);
+			}
+		}
+		
+		/// <summary>
+		/// Raises the ProcessFileEvent.
+		/// </summary>
+		/// <param name="file">The file for this event.</param>
+		public void OnProcessFile(string file)
+		{
+			if ( ProcessFile != null ) {
+				ScanEventArgs args = new ScanEventArgs(file);
+				ProcessFile(this, args);
+			}
+		}
+		
+		/// <summary>
+		/// Raises the ProcessDirectoryEvent.
+		/// </summary>
+		/// <param name="directory">The directory for this event.</param>
+		/// <param name="hasMatchingFiles">Flag indicating if directory has matching files as determined by the current filter.</param>
+		public void OnProcessDirectory(string directory, bool hasMatchingFiles)
+		{
+			if ( ProcessDirectory != null ) {
+				DirectoryEventArgs args = new DirectoryEventArgs(directory, hasMatchingFiles);
+				ProcessDirectory(this, args);
+			}
+		}
+		
+	}
+	
+	/// <summary>
+	/// FastZip provides facilities for creating and extracting zip files.
+	/// Only relative paths are supported.
+	/// </summary>
+	public class FastZip
+	{
+		/// <summary>
+		/// Initialize a default instance of FastZip.
+		/// </summary>
+		public FastZip()
+		{
+			this.events = null;
+		}
+		
+		/// <summary>
+		/// Initialise a new instance of <see cref="FastZip"/>
+		/// </summary>
+		/// <param name="events"></param>
+		public FastZip(FastZipEvents events)
+		{
+			this.events = events;
+		}
+		
+		/// <summary>
+		/// Defines the desired handling when overwriting files.
+		/// </summary>
+		public enum Overwrite {
+			/// <summary>
+			/// Prompt the user to confirm overwriting
+			/// </summary>
+			Prompt,
+			/// <summary>
+			/// Never overwrite files.
+			/// </summary>
+			Never,
+			/// <summary>
+			/// Always overwrite files.
+			/// </summary>
+			Always
+		}
+
+		/// <summary>
+		/// Get/set a value indicating wether empty directories should be created.
+		/// </summary>
+		public bool CreateEmptyDirectories
+		{
+			get { return createEmptyDirectories; }
+			set { createEmptyDirectories = value; }
+		}
+
+		/// <summary>
+		/// Delegate called when confirming overwriting of files.
+		/// </summary>
+		public delegate bool ConfirmOverwriteDelegate(string fileName);
+		
+		/// <summary>
+		/// Create a zip file.
+		/// </summary>
+		/// <param name="zipFileName">The name of the zip file to create.</param>
+		/// <param name="sourceDirectory">The directory to source files from.</param>
+		/// <param name="recurse">True to recurse directories, false for no recursion.</param>
+		/// <param name="fileFilter">The file filter to apply.</param>
+		/// <param name="directoryFilter">The directory filter to apply.</param>
+		public void CreateZip(string zipFileName, string sourceDirectory, bool recurse, string fileFilter, string directoryFilter)
+		{
+			NameTransform = new ZipNameTransform(true, sourceDirectory);
+			this.sourceDirectory = sourceDirectory;
+			
+			outputStream = new ZipOutputStream(File.Create(zipFileName));
+			try {
+				FileSystemScanner scanner = new FileSystemScanner(fileFilter, directoryFilter);
+				scanner.ProcessFile += new ProcessFileDelegate(ProcessFile);
+				if ( this.CreateEmptyDirectories ) {
+					scanner.ProcessDirectory += new ProcessDirectoryDelegate(ProcessDirectory);
+				}
+				scanner.Scan(sourceDirectory, recurse);
+			}
+			finally {
+				outputStream.Close();
+			}
+		}
+
+		/// <summary>
+		/// Create a zip file/archive.
+		/// </summary>
+		/// <param name="zipFileName">The name of the zip file to create.</param>
+		/// <param name="sourceDirectory">The directory to obtain files and directories from.</param>
+		/// <param name="recurse">True to recurse directories, false for no recursion.</param>
+		/// <param name="fileFilter">The file filter to apply.</param>
+		public void CreateZip(string zipFileName, string sourceDirectory, bool recurse, string fileFilter)
+		{
+			CreateZip(zipFileName, sourceDirectory, recurse, fileFilter, null);
+		}
+
+		/// <summary>
+		/// Extract the contents of a zip file.
+		/// </summary>
+		/// <param name="zipFileName">The zip file to extract from.</param>
+		/// <param name="targetDirectory">The directory to save extracted information in.</param>
+		/// <param name="fileFilter">A filter to apply to files.</param>
+		public void ExtractZip(string zipFileName, string targetDirectory, string fileFilter) 
+		{
+			ExtractZip(zipFileName, targetDirectory, Overwrite.Always, null, fileFilter, null);
+		}
+		
+		/// <summary>
+		/// Exatract the contents of a zip file.
+		/// </summary>
+		/// <param name="zipFileName">The zip file to extract from.</param>
+		/// <param name="targetDirectory">The directory to save extracted information in.</param>
+		/// <param name="overwrite">The style of <see cref="Overwrite">overwriting</see> to apply.</param>
+		/// <param name="confirmDelegate">A delegate to invoke when confirming overwriting.</param>
+		/// <param name="fileFilter">A filter to apply to files.</param>
+		/// <param name="directoryFilter">A filter to apply to directories.</param>
+		public void ExtractZip(string zipFileName, string targetDirectory, 
+		                       Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, 
+		                       string fileFilter, string directoryFilter)
+		{
+			if ((overwrite == Overwrite.Prompt) && (confirmDelegate == null)) {
+				throw new ArgumentNullException("confirmDelegate");
+			}
+			this.overwrite = overwrite;
+			this.confirmDelegate = confirmDelegate;
+			this.targetDirectory = targetDirectory;
+			this.fileFilter = new NameFilter(fileFilter);
+			this.directoryFilter = new NameFilter(directoryFilter);
+			
+			inputStream = new ZipInputStream(File.OpenRead(zipFileName));
+			
+			try {
+				
+				if (password != null) {
+					inputStream.Password = password;
+				}
+
+				ZipEntry entry;
+				while ( (entry = inputStream.GetNextEntry()) != null ) {
+					if ( this.directoryFilter.IsMatch(Path.GetDirectoryName(entry.Name)) && this.fileFilter.IsMatch(entry.Name) ) {
+						ExtractEntry(entry);
+					}
+				}
+			}
+			finally {
+				inputStream.Close();
+			}
+		}
+		
+		void ProcessDirectory(object sender, DirectoryEventArgs e)
+		{
+			if ( !e.HasMatchingFiles && createEmptyDirectories ) {
+				if ( events != null ) {
+					events.OnProcessDirectory(e.Name, e.HasMatchingFiles);
+				}
+				
+				if (e.Name != sourceDirectory) {
+					string cleanedName = nameTransform.TransformDirectory(e.Name);
+					ZipEntry entry = new ZipEntry(cleanedName);
+					outputStream.PutNextEntry(entry);
+				}
+			}
+		}
+		
+		void ProcessFile(object sender, ScanEventArgs e)
+		{
+			if ( events != null ) {
+				events.OnProcessFile(e.Name);
+			}
+			string cleanedName = nameTransform.TransformFile(e.Name);
+			ZipEntry entry = new ZipEntry(cleanedName);
+			outputStream.PutNextEntry(entry);
+			AddFileContents(e.Name);
+		}
+
+		void AddFileContents(string name)
+		{
+			if ( buffer == null ) {
+				buffer = new byte[4096];
+			}
+
+			FileStream stream = File.OpenRead(name);
+			try {
+				int length;
+				do {
+					length = stream.Read(buffer, 0, buffer.Length);
+					outputStream.Write(buffer, 0, length);
+				} while ( length > 0 );
+			}
+			finally {
+				stream.Close();
+			}
+		}
+		
+		void ExtractFileEntry(ZipEntry entry, string targetName)
+		{
+			bool proceed = true;
+			if ((overwrite == Overwrite.Prompt) && (confirmDelegate != null)) {
+				if (File.Exists(targetName) == true) {
+					proceed = confirmDelegate(targetName);
+				}
+			}
+
+			if ( proceed ) {
+				
+				if ( events != null ) {
+					events.OnProcessFile(entry.Name);
+				}
+			
+				FileStream streamWriter = File.Create(targetName);
+			
+				try {
+					if ( buffer == null ) {
+						buffer = new byte[4096];
+					}
+					
+					int size;
+		
+					do {
+						size = inputStream.Read(buffer, 0, buffer.Length);
+						streamWriter.Write(buffer, 0, size);
+					} while (size > 0);
+				}
+				finally {
+					streamWriter.Close();
+				}
+	
+				if (restoreDateTime) {
+					File.SetLastWriteTime(targetName, entry.DateTime);
+				}
+			}
+		}
+
+		bool NameIsValid(string name)
+		{
+			return name != null && name.Length > 0 && name.IndexOfAny(Path.InvalidPathChars) < 0;
+		}
+		
+		void ExtractEntry(ZipEntry entry)
+		{
+			bool doExtraction = NameIsValid(entry.Name);
+			
+			string dirName = null;
+			string targetName = null;
+			
+			if ( doExtraction ) {
+				string entryFileName;
+				if (Path.IsPathRooted(entry.Name)) {
+					string workName = Path.GetPathRoot(entry.Name);
+					workName = entry.Name.Substring(workName.Length);
+					entryFileName = Path.Combine(Path.GetDirectoryName(workName), Path.GetFileName(entry.Name));
+				} else {
+					entryFileName = entry.Name;
+				}
+				
+				targetName = Path.Combine(targetDirectory, entryFileName);
+				dirName = Path.GetDirectoryName(Path.GetFullPath(targetName));
+	
+				doExtraction = doExtraction && (entryFileName.Length > 0);
+			}
+			
+			if ( doExtraction && !Directory.Exists(dirName) )
+			{
+				if ( !entry.IsDirectory || this.CreateEmptyDirectories ) {
+					try {
+						Directory.CreateDirectory(dirName);
+					}
+					catch {
+						doExtraction = false;
+					}
+				}
+			}
+			
+			if ( doExtraction && entry.IsFile ) {
+				ExtractFileEntry(entry, targetName);
+			}
+		}
+		
+		/// <summary>
+		/// Get or set the <see cref="ZipNameTransform"> active when creating Zip files.</see>
+		/// </summary>
+		public ZipNameTransform NameTransform
+		{
+			get { return nameTransform; }
+			set {
+				if ( value == null ) {
+					nameTransform = new ZipNameTransform();
+				}
+				else {
+					nameTransform = value;
+				}
+			}
+		}
+		
+		#region Instance Fields
+		byte[] buffer;
+		ZipOutputStream outputStream;
+		ZipInputStream inputStream;
+		string password = null;
+		string targetDirectory;
+		string sourceDirectory;
+		NameFilter fileFilter;
+		NameFilter directoryFilter;
+		Overwrite overwrite;
+		ConfirmOverwriteDelegate confirmDelegate;
+		bool restoreDateTime = false;
+		bool createEmptyDirectories = false;
+		FastZipEvents events;
+		ZipNameTransform nameTransform;
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipConstants.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipConstants.cs
@@ -1,465 +1,465 @@
-// ZipConstants.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.Text;
-
-namespace ICSharpCode.SharpZipLib.Zip 
-{
-	
-	/// <summary>
-	/// The kind of compression used for an entry in an archive
-	/// </summary>
-	public enum CompressionMethod
-	{
-		/// <summary>
-		/// A direct copy of the file contents is held in the archive
-		/// </summary>
-		Stored     = 0,
-		
-		/// <summary>
-		/// Common Zip compression method using a sliding dictionary 
-		/// of up to 32KB and secondary compression from Huffman/Shannon-Fano trees
-		/// </summary>
-		Deflated   = 8,
-		
-		/// <summary>
-		/// An extension to deflate with a 64KB window. Not supported by #Zip
-		/// </summary>
-		Deflate64  = 9,
-		
-		/// <summary>
-		/// Not supported by #Zip
-		/// </summary>
-		BZip2      = 11,
-		
-		/// <summary>
-		/// WinZip special for AES encryption, Not supported by #Zip
-		/// </summary>
-		WinZipAES  = 99,
-		
-	}
-	
-	/// <summary>
-	/// Defines the contents of the general bit flags field for an archive entry.
-	/// </summary>
-	[Flags]
-	enum GeneralBitFlags : int
-	{
-		/// <summary>
-		/// If set indicates that the file is encrypted
-		/// </summary>
-		Encrypted         = 0x0001,
-		/// <summary>
-		/// Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating)
-		/// </summary>
-		Method            = 0x0006,
-		/// <summary>
-		/// If set a trailing data desciptor is appended to the entry data
-		/// </summary>
-		Descriptor        = 0x0008,
-		Reserved          = 0x0010,
-		/// <summary>
-		/// If set indicates the file contains Pkzip compressed patched data.
-		/// </summary>
-		Patched           = 0x0020,
-		/// <summary>
-		/// If set strong encryption has been used for this entry.
-		/// </summary>
-		StrongEncryption  = 0x0040,
-		/// <summary>
-		/// Reserved by PKWare for enhanced compression.
-		/// </summary>
-		EnhancedCompress  = 0x1000,
-		/// <summary>
-		/// If set indicates that values in the local header are masked to hide
-		/// their actual values.
-		/// </summary>
-		/// <remarks>
-		/// Used when encrypting ht ecentral directory contents.
-		/// </remarks>
-		HeaderMasked      = 0x2000
-	}
-	
-	/// <summary>
-	/// This class contains constants used for Zip format files
-	/// </summary>
-	public sealed class ZipConstants
-	{
-		/// <summary>
-		/// The version made by field for entries in the central header when created by this library
-		/// </summary>
-		/// <remarks>
-		/// This is also the Zip version for the library when comparing against the version required to extract
-		/// for an entry.  See <see cref="ZipInputStream.CanDecompressEntry">ZipInputStream.CanDecompressEntry</see>.
-		/// </remarks>
-		public const int VERSION_MADE_BY = 20;
-		
-		/// <summary>
-		/// The minimum version required to support strong encryption
-		/// </summary>
-		public const int VERSION_STRONG_ENCRYPTION = 50;
-		
-		// The local entry header
-		
-		/// <summary>
-		/// Size of local entry header (excluding variable length fields at end)
-		/// </summary>
-		public const int LOCHDR = 30;
-		
-		/// <summary>
-		/// Signature for local entry header
-		/// </summary>
-		public const int LOCSIG = 'P' | ('K' << 8) | (3 << 16) | (4 << 24);
-
-		/// <summary>
-		/// Offset of version to extract in local entry header
-		/// </summary>		
-		public const int LOCVER =  4;
-		
-		/// <summary>
-		/// Offset of general purpose flags in local entry header
-		/// </summary>
-		public const int LOCFLG =  6;
-		
-		/// <summary>
-		/// Offset of compression method in local entry header
-		/// </summary>
-		public const int LOCHOW =  8;
-		
-		/// <summary>
-		/// Offset of last mod file time + date in local entry header
-		/// </summary>
-		public const int LOCTIM = 10;
-		
-		/// <summary>
-		/// Offset of crc-32 in local entry header
-		/// </summary>
-		public const int LOCCRC = 14;
-		
-		/// <summary>
-		/// Offset of compressed size in local entry header
-		/// </summary>
-		public const int LOCSIZ = 18;
-		
-		/// <summary>
-		/// Offset of uncompressed size in local entry header
-		/// </summary>
-		public const int LOCLEN = 22;
-		
-		/// <summary>
-		/// Offset of file name length in local entry header
-		/// </summary>
-		public const int LOCNAM = 26;
-		
-		/// <summary>
-		/// Offset of extra field length in local entry header
-		/// </summary>
-		public const int LOCEXT = 28;
-
-		
-		/// <summary>
-		/// Signature for spanning entry
-		/// </summary>
-		public const int SPANNINGSIG = 'P' | ('K' << 8) | (7 << 16) | (8 << 24);
-		
-		/// <summary>
-		/// Signature for temporary spanning entry
-		/// </summary>
-		public const int SPANTEMPSIG = 'P' | ('K' << 8) | ('0' << 16) | ('0' << 24);
-		
-		/// <summary>
-		/// Signature for data descriptor
-		/// </summary>
-		/// <remarks>
-		/// This is only used where the length, Crc, or compressed size isnt known when the
-		/// entry is created and the output stream doesnt support seeking.
-		/// The local entry cannot be 'patched' with the correct values in this case
-		/// so the values are recorded after the data prefixed by this header, as well as in the central directory.
-		/// </remarks>
-		public const int EXTSIG = 'P' | ('K' << 8) | (7 << 16) | (8 << 24);
-		
-		/// <summary>
-		/// Size of data descriptor
-		/// </summary>
-		public const int EXTHDR = 16;
-		
-		/// <summary>
-		/// Offset of crc-32 in data descriptor
-		/// </summary>
-		public const int EXTCRC =  4;
-		
-		/// <summary>
-		/// Offset of compressed size in data descriptor
-		/// </summary>
-		public const int EXTSIZ =  8;
-		
-		/// <summary>
-		/// Offset of uncompressed length in data descriptor
-		/// </summary>
-		public const int EXTLEN = 12;
-		
-		
-		/// <summary>
-		/// Signature for central header
-		/// </summary>
-		public const int CENSIG = 'P' | ('K' << 8) | (1 << 16) | (2 << 24);
-		
-		/// <summary>
-		/// Size of central header entry
-		/// </summary>
-		public const int CENHDR = 46;
-		
-		/// <summary>
-		/// Offset of version made by in central file header
-		/// </summary>
-		public const int CENVEM =  4;
-		
-		/// <summary>
-		/// Offset of version needed to extract in central file header
-		/// </summary>
-		public const int CENVER =  6;
-		
-		/// <summary>
-		/// Offset of general purpose bit flag in central file header
-		/// </summary>
-		public const int CENFLG =  8;
-		
-		/// <summary>
-		/// Offset of compression method in central file header
-		/// </summary>
-		public const int CENHOW = 10;
-		
-		/// <summary>
-		/// Offset of time/date in central file header
-		/// </summary>
-		public const int CENTIM = 12;
-		
-		/// <summary>
-		/// Offset of crc-32 in central file header
-		/// </summary>
-		public const int CENCRC = 16;
-		
-		/// <summary>
-		/// Offset of compressed size in central file header
-		/// </summary>
-		public const int CENSIZ = 20;
-		
-		/// <summary>
-		/// Offset of uncompressed size in central file header
-		/// </summary>
-		public const int CENLEN = 24;
-		
-		/// <summary>
-		/// Offset of file name length in central file header
-		/// </summary>
-		public const int CENNAM = 28;
-		
-		/// <summary>
-		/// Offset of extra field length in central file header
-		/// </summary>
-		public const int CENEXT = 30;
-		
-		/// <summary>
-		/// Offset of file comment length in central file header
-		/// </summary>
-		public const int CENCOM = 32;
-		
-		/// <summary>
-		/// Offset of disk start number in central file header
-		/// </summary>
-		public const int CENDSK = 34;
-		
-		/// <summary>
-		/// Offset of internal file attributes in central file header
-		/// </summary>
-		public const int CENATT = 36;
-		
-		/// <summary>
-		/// Offset of external file attributes in central file header
-		/// </summary>
-		public const int CENATX = 38;
-		
-		/// <summary>
-		/// Offset of relative offset of local header in central file header
-		/// </summary>
-		public const int CENOFF = 42;
-		
-		
-		/// <summary>
-		/// Signature for Zip64 central file header
-		/// </summary>
-		public const int CENSIG64 = 'P' | ('K' << 8) | (6 << 16) | (6 << 24);
-		
-		
-		
-		/// <summary>
-		/// Central header digitial signature
-		/// </summary>
-		public const int CENDIGITALSIG = 'P' | ('K' << 8) | (5 << 16) | (5 << 24);
-		
-		
-		// The entries at the end of central directory
-		
-		/// <summary>
-		/// End of central directory record signature
-		/// </summary>
-		public const int ENDSIG = 'P' | ('K' << 8) | (5 << 16) | (6 << 24);
-		
-		/// <summary>
-		/// Size of end of central record (excluding variable fields)
-		/// </summary>
-		public const int ENDHDR = 22;
-		
-		// The following two fields are missing in SUN JDK
-		
-		/// <summary>
-		/// Offset of number of this disk
-		/// </summary>
-		public const int ENDNRD =  4;
-		
-		/// <summary>
-		/// Offset of number of disk with start of central directory
-		/// </summary>
-		public const int ENDDCD =  6;
-		
-		/// <summary>
-		/// Offset of number of entries in the central directory of this disk
-		/// </summary>
-		public const int ENDSUB =  8;
-		
-		/// <summary>
-		/// Offset of total number of entries in the central directory
-		/// </summary>
-		public const int ENDTOT = 10;
-		
-		/// <summary>
-		/// Offset of size of central directory
-		/// </summary>
-		public const int ENDSIZ = 12;
-		
-		/// <summary>
-		/// Offset of offset of start of central directory with respect to starting disk number
-		/// </summary>
-		public const int ENDOFF = 16;
-		
-		/// <summary>
-		/// Offset of ZIP file comment length
-		/// </summary>
-		public const int ENDCOM = 20;
-		
-		/// <summary>
-		/// Size of cryptographic header stored before entry data
-		/// </summary>
-		public const int CRYPTO_HEADER_SIZE = 12;
-
-		
-#if !COMPACT_FRAMEWORK
-
-		static int defaultCodePage = 0;
-		
-		/// <summary>
-		/// Default encoding used for string conversion.  0 gives the default system Ansi code page.
-		/// Dont use unicode encodings if you want to be Zip compatible!
-		/// Using the default code page isnt the full solution neccessarily
-		/// there are many variable factors, codepage 850 is often a good choice for
-		/// European users, however be careful about compatability.
-		/// </summary>
-		public static int DefaultCodePage {
-			get {
-				return defaultCodePage; 
-			}
-			set {
-				defaultCodePage = value; 
-			}
-		}
-#endif
-
-		/// <summary>
-		/// Convert a portion of a byte array to a string.
-		/// </summary>		
-		/// <param name="data">
-		/// Data to convert to string
-		/// </param>
-		/// <param name="length">
-		/// Number of bytes to convert starting from index 0
-		/// </param>
-		/// <returns>
-		/// data[0]..data[length - 1] converted to a string
-		/// </returns>
-		public static string ConvertToString(byte[] data, int length)
-		{
-#if COMPACT_FRAMEWORK
-			return Encoding.ASCII.GetString(data, 0, length);
-#else
-			return Encoding.GetEncoding(DefaultCodePage).GetString(data, 0, length);
-#endif
-		}
-	
-		/// <summary>
-		/// Convert byte array to string
-		/// </summary>
-		/// <param name="data">
-		/// Byte array to convert
-		/// </param>
-		/// <returns>
-		/// <paramref name="data">data</paramref>converted to a string
-		/// </returns>
-		public static string ConvertToString(byte[] data)
-		{
-			return ConvertToString(data, data.Length);
-		}
-
-		/// <summary>
-		/// Convert a string to a byte array
-		/// </summary>
-		/// <param name="str">
-		/// String to convert to an array
-		/// </param>
-		/// <returns>Converted array</returns>
-		public static byte[] ConvertToArray(string str)
-		{
-#if COMPACT_FRAMEWORK
-			return Encoding.ASCII.GetBytes(str);
-#else
-			return Encoding.GetEncoding(DefaultCodePage).GetBytes(str);
-#endif
-		}
-	}
-}
+// ZipConstants.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.Text;
+
+namespace ICSharpCode.SharpZipLib.Zip 
+{
+	
+	/// <summary>
+	/// The kind of compression used for an entry in an archive
+	/// </summary>
+	public enum CompressionMethod
+	{
+		/// <summary>
+		/// A direct copy of the file contents is held in the archive
+		/// </summary>
+		Stored     = 0,
+		
+		/// <summary>
+		/// Common Zip compression method using a sliding dictionary 
+		/// of up to 32KB and secondary compression from Huffman/Shannon-Fano trees
+		/// </summary>
+		Deflated   = 8,
+		
+		/// <summary>
+		/// An extension to deflate with a 64KB window. Not supported by #Zip
+		/// </summary>
+		Deflate64  = 9,
+		
+		/// <summary>
+		/// Not supported by #Zip
+		/// </summary>
+		BZip2      = 11,
+		
+		/// <summary>
+		/// WinZip special for AES encryption, Not supported by #Zip
+		/// </summary>
+		WinZipAES  = 99,
+		
+	}
+	
+	/// <summary>
+	/// Defines the contents of the general bit flags field for an archive entry.
+	/// </summary>
+	[Flags]
+	enum GeneralBitFlags : int
+	{
+		/// <summary>
+		/// If set indicates that the file is encrypted
+		/// </summary>
+		Encrypted         = 0x0001,
+		/// <summary>
+		/// Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating)
+		/// </summary>
+		Method            = 0x0006,
+		/// <summary>
+		/// If set a trailing data desciptor is appended to the entry data
+		/// </summary>
+		Descriptor        = 0x0008,
+		Reserved          = 0x0010,
+		/// <summary>
+		/// If set indicates the file contains Pkzip compressed patched data.
+		/// </summary>
+		Patched           = 0x0020,
+		/// <summary>
+		/// If set strong encryption has been used for this entry.
+		/// </summary>
+		StrongEncryption  = 0x0040,
+		/// <summary>
+		/// Reserved by PKWare for enhanced compression.
+		/// </summary>
+		EnhancedCompress  = 0x1000,
+		/// <summary>
+		/// If set indicates that values in the local header are masked to hide
+		/// their actual values.
+		/// </summary>
+		/// <remarks>
+		/// Used when encrypting ht ecentral directory contents.
+		/// </remarks>
+		HeaderMasked      = 0x2000
+	}
+	
+	/// <summary>
+	/// This class contains constants used for Zip format files
+	/// </summary>
+	public sealed class ZipConstants
+	{
+		/// <summary>
+		/// The version made by field for entries in the central header when created by this library
+		/// </summary>
+		/// <remarks>
+		/// This is also the Zip version for the library when comparing against the version required to extract
+		/// for an entry.  See <see cref="ZipInputStream.CanDecompressEntry">ZipInputStream.CanDecompressEntry</see>.
+		/// </remarks>
+		public const int VERSION_MADE_BY = 20;
+		
+		/// <summary>
+		/// The minimum version required to support strong encryption
+		/// </summary>
+		public const int VERSION_STRONG_ENCRYPTION = 50;
+		
+		// The local entry header
+		
+		/// <summary>
+		/// Size of local entry header (excluding variable length fields at end)
+		/// </summary>
+		public const int LOCHDR = 30;
+		
+		/// <summary>
+		/// Signature for local entry header
+		/// </summary>
+		public const int LOCSIG = 'P' | ('K' << 8) | (3 << 16) | (4 << 24);
+
+		/// <summary>
+		/// Offset of version to extract in local entry header
+		/// </summary>		
+		public const int LOCVER =  4;
+		
+		/// <summary>
+		/// Offset of general purpose flags in local entry header
+		/// </summary>
+		public const int LOCFLG =  6;
+		
+		/// <summary>
+		/// Offset of compression method in local entry header
+		/// </summary>
+		public const int LOCHOW =  8;
+		
+		/// <summary>
+		/// Offset of last mod file time + date in local entry header
+		/// </summary>
+		public const int LOCTIM = 10;
+		
+		/// <summary>
+		/// Offset of crc-32 in local entry header
+		/// </summary>
+		public const int LOCCRC = 14;
+		
+		/// <summary>
+		/// Offset of compressed size in local entry header
+		/// </summary>
+		public const int LOCSIZ = 18;
+		
+		/// <summary>
+		/// Offset of uncompressed size in local entry header
+		/// </summary>
+		public const int LOCLEN = 22;
+		
+		/// <summary>
+		/// Offset of file name length in local entry header
+		/// </summary>
+		public const int LOCNAM = 26;
+		
+		/// <summary>
+		/// Offset of extra field length in local entry header
+		/// </summary>
+		public const int LOCEXT = 28;
+
+		
+		/// <summary>
+		/// Signature for spanning entry
+		/// </summary>
+		public const int SPANNINGSIG = 'P' | ('K' << 8) | (7 << 16) | (8 << 24);
+		
+		/// <summary>
+		/// Signature for temporary spanning entry
+		/// </summary>
+		public const int SPANTEMPSIG = 'P' | ('K' << 8) | ('0' << 16) | ('0' << 24);
+		
+		/// <summary>
+		/// Signature for data descriptor
+		/// </summary>
+		/// <remarks>
+		/// This is only used where the length, Crc, or compressed size isnt known when the
+		/// entry is created and the output stream doesnt support seeking.
+		/// The local entry cannot be 'patched' with the correct values in this case
+		/// so the values are recorded after the data prefixed by this header, as well as in the central directory.
+		/// </remarks>
+		public const int EXTSIG = 'P' | ('K' << 8) | (7 << 16) | (8 << 24);
+		
+		/// <summary>
+		/// Size of data descriptor
+		/// </summary>
+		public const int EXTHDR = 16;
+		
+		/// <summary>
+		/// Offset of crc-32 in data descriptor
+		/// </summary>
+		public const int EXTCRC =  4;
+		
+		/// <summary>
+		/// Offset of compressed size in data descriptor
+		/// </summary>
+		public const int EXTSIZ =  8;
+		
+		/// <summary>
+		/// Offset of uncompressed length in data descriptor
+		/// </summary>
+		public const int EXTLEN = 12;
+		
+		
+		/// <summary>
+		/// Signature for central header
+		/// </summary>
+		public const int CENSIG = 'P' | ('K' << 8) | (1 << 16) | (2 << 24);
+		
+		/// <summary>
+		/// Size of central header entry
+		/// </summary>
+		public const int CENHDR = 46;
+		
+		/// <summary>
+		/// Offset of version made by in central file header
+		/// </summary>
+		public const int CENVEM =  4;
+		
+		/// <summary>
+		/// Offset of version needed to extract in central file header
+		/// </summary>
+		public const int CENVER =  6;
+		
+		/// <summary>
+		/// Offset of general purpose bit flag in central file header
+		/// </summary>
+		public const int CENFLG =  8;
+		
+		/// <summary>
+		/// Offset of compression method in central file header
+		/// </summary>
+		public const int CENHOW = 10;
+		
+		/// <summary>
+		/// Offset of time/date in central file header
+		/// </summary>
+		public const int CENTIM = 12;
+		
+		/// <summary>
+		/// Offset of crc-32 in central file header
+		/// </summary>
+		public const int CENCRC = 16;
+		
+		/// <summary>
+		/// Offset of compressed size in central file header
+		/// </summary>
+		public const int CENSIZ = 20;
+		
+		/// <summary>
+		/// Offset of uncompressed size in central file header
+		/// </summary>
+		public const int CENLEN = 24;
+		
+		/// <summary>
+		/// Offset of file name length in central file header
+		/// </summary>
+		public const int CENNAM = 28;
+		
+		/// <summary>
+		/// Offset of extra field length in central file header
+		/// </summary>
+		public const int CENEXT = 30;
+		
+		/// <summary>
+		/// Offset of file comment length in central file header
+		/// </summary>
+		public const int CENCOM = 32;
+		
+		/// <summary>
+		/// Offset of disk start number in central file header
+		/// </summary>
+		public const int CENDSK = 34;
+		
+		/// <summary>
+		/// Offset of internal file attributes in central file header
+		/// </summary>
+		public const int CENATT = 36;
+		
+		/// <summary>
+		/// Offset of external file attributes in central file header
+		/// </summary>
+		public const int CENATX = 38;
+		
+		/// <summary>
+		/// Offset of relative offset of local header in central file header
+		/// </summary>
+		public const int CENOFF = 42;
+		
+		
+		/// <summary>
+		/// Signature for Zip64 central file header
+		/// </summary>
+		public const int CENSIG64 = 'P' | ('K' << 8) | (6 << 16) | (6 << 24);
+		
+		
+		
+		/// <summary>
+		/// Central header digitial signature
+		/// </summary>
+		public const int CENDIGITALSIG = 'P' | ('K' << 8) | (5 << 16) | (5 << 24);
+		
+		
+		// The entries at the end of central directory
+		
+		/// <summary>
+		/// End of central directory record signature
+		/// </summary>
+		public const int ENDSIG = 'P' | ('K' << 8) | (5 << 16) | (6 << 24);
+		
+		/// <summary>
+		/// Size of end of central record (excluding variable fields)
+		/// </summary>
+		public const int ENDHDR = 22;
+		
+		// The following two fields are missing in SUN JDK
+		
+		/// <summary>
+		/// Offset of number of this disk
+		/// </summary>
+		public const int ENDNRD =  4;
+		
+		/// <summary>
+		/// Offset of number of disk with start of central directory
+		/// </summary>
+		public const int ENDDCD =  6;
+		
+		/// <summary>
+		/// Offset of number of entries in the central directory of this disk
+		/// </summary>
+		public const int ENDSUB =  8;
+		
+		/// <summary>
+		/// Offset of total number of entries in the central directory
+		/// </summary>
+		public const int ENDTOT = 10;
+		
+		/// <summary>
+		/// Offset of size of central directory
+		/// </summary>
+		public const int ENDSIZ = 12;
+		
+		/// <summary>
+		/// Offset of offset of start of central directory with respect to starting disk number
+		/// </summary>
+		public const int ENDOFF = 16;
+		
+		/// <summary>
+		/// Offset of ZIP file comment length
+		/// </summary>
+		public const int ENDCOM = 20;
+		
+		/// <summary>
+		/// Size of cryptographic header stored before entry data
+		/// </summary>
+		public const int CRYPTO_HEADER_SIZE = 12;
+
+		
+#if !COMPACT_FRAMEWORK
+
+		static int defaultCodePage = 0;
+		
+		/// <summary>
+		/// Default encoding used for string conversion.  0 gives the default system Ansi code page.
+		/// Dont use unicode encodings if you want to be Zip compatible!
+		/// Using the default code page isnt the full solution neccessarily
+		/// there are many variable factors, codepage 850 is often a good choice for
+		/// European users, however be careful about compatability.
+		/// </summary>
+		public static int DefaultCodePage {
+			get {
+				return defaultCodePage; 
+			}
+			set {
+				defaultCodePage = value; 
+			}
+		}
+#endif
+
+		/// <summary>
+		/// Convert a portion of a byte array to a string.
+		/// </summary>		
+		/// <param name="data">
+		/// Data to convert to string
+		/// </param>
+		/// <param name="length">
+		/// Number of bytes to convert starting from index 0
+		/// </param>
+		/// <returns>
+		/// data[0]..data[length - 1] converted to a string
+		/// </returns>
+		public static string ConvertToString(byte[] data, int length)
+		{
+#if COMPACT_FRAMEWORK
+			return Encoding.ASCII.GetString(data, 0, length);
+#else
+			return Encoding.GetEncoding(DefaultCodePage).GetString(data, 0, length);
+#endif
+		}
+	
+		/// <summary>
+		/// Convert byte array to string
+		/// </summary>
+		/// <param name="data">
+		/// Byte array to convert
+		/// </param>
+		/// <returns>
+		/// <paramref name="data">data</paramref>converted to a string
+		/// </returns>
+		public static string ConvertToString(byte[] data)
+		{
+			return ConvertToString(data, data.Length);
+		}
+
+		/// <summary>
+		/// Convert a string to a byte array
+		/// </summary>
+		/// <param name="str">
+		/// String to convert to an array
+		/// </param>
+		/// <returns>Converted array</returns>
+		public static byte[] ConvertToArray(string str)
+		{
+#if COMPACT_FRAMEWORK
+			return Encoding.ASCII.GetBytes(str);
+#else
+			return Encoding.GetEncoding(DefaultCodePage).GetBytes(str);
+#endif
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipEntry.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipEntry.cs
@@ -1,733 +1,733 @@
-// ZipEntry.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-
-namespace ICSharpCode.SharpZipLib.Zip
-{
-	
-	/// <summary>
-	/// This class represents an entry in a zip archive.  This can be a file
-	/// or a directory
-	/// ZipFile and ZipInputStream will give you instances of this class as 
-	/// information about the members in an archive.  ZipOutputStream
-	/// uses an instance of this class when creating an entry in a Zip file.
-	/// <br/>
-	/// <br/>Author of the original java version : Jochen Hoenicke
-	/// </summary>
-	public class ZipEntry : ICloneable
-	{
-		static int KNOWN_SIZE               = 1;
-		static int KNOWN_CSIZE              = 2;
-		static int KNOWN_CRC                = 4;
-		static int KNOWN_TIME               = 8;
-		static int KNOWN_EXTERN_ATTRIBUTES 	= 16;
-		
-		ushort known = 0;                       // Bit flags made up of above bits
-		int    externalFileAttributes = -1;     // contains external attributes (os dependant)
-		
-		ushort versionMadeBy;                   // Contains host system and version information
-		                                        // only relevant for central header entries
-		
-		string name;
-		ulong  size;
-		ulong  compressedSize;
-		ushort versionToExtract;                // Version required to extract (library handles <= 2.0)
-		uint   crc;
-		uint   dosTime;
-		
-		CompressionMethod  method = CompressionMethod.Deflated;
-		byte[] extra = null;
-		string comment = null;
-		
-		int flags;                             // general purpose bit flags
-
-		int zipFileIndex = -1;                 // used by ZipFile
-		int offset;                            // used by ZipFile and ZipOutputStream
-		
-		/// <summary>
-		/// Get/Set flag indicating if entry is encrypted.
-		/// A simple helper routine to aid interpretation of <see cref="Flags">flags</see>
-		/// </summary>
-		public bool IsCrypted {
-			get {
-				return (flags & 1) != 0; 
-			}
-			set {
-				if (value) {
-					flags |= 1;
-				} else {
-					flags &= ~1;
-				}
-			}
-		}
-		
-		/// <summary>
-		/// Get/Set general purpose bit flag for entry
-		/// </summary>
-		/// <remarks>
-		/// General purpose bit flag<br/>
-		/// Bit 0: If set, indicates the file is encrypted<br/>
-		/// Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating<br/>
-		/// Imploding:<br/>
-		/// Bit 1 if set indicates an 8K sliding dictionary was used.  If clear a 4k dictionary was used<br/>
-		/// Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise<br/>
-		/// <br/>
-		/// Deflating:<br/>
-		///   Bit 2    Bit 1<br/>
-		///     0        0       Normal compression was used<br/>
-		///     0        1       Maximum compression was used<br/>
-		///     1        0       Fast compression was used<br/>
-		///     1        1       Super fast compression was used<br/>
-		/// <br/>
-		/// Bit 3: If set, the fields crc-32, compressed size
-		/// and uncompressed size are were not able to be written during zip file creation
-		/// The correct values are held in a data descriptor immediately following the compressed data. <br/>
-		/// Bit 4: Reserved for use by PKZIP for enhanced deflating<br/>
-		/// Bit 5: If set indicates the file contains compressed patch data<br/>
-		/// Bit 6: If set indicates strong encryption was used.<br/>
-		/// Bit 7-15: Unused or reserved<br/>
-		/// </remarks>
-		public int Flags {
-			get { 
-				return flags; 
-			}
-			set {
-				flags = value; 
-			}
-		}
-
-
-		/// <summary>
-		/// Get/Set index of this entry in Zip file
-		/// </summary>
-		public int ZipFileIndex {
-			get {
-				return zipFileIndex;
-			}
-			set {
-				zipFileIndex = value;
-			}
-		}
-		
-		/// <summary>
-		/// Get/set offset for use in central header
-		/// </summary>
-		public int Offset {
-			get {
-				return offset;
-			}
-			set {
-				if (((ulong)value & 0xFFFFFFFF00000000L) != 0) {
-					throw new ArgumentOutOfRangeException("Offset");
-				}
-				offset = value;
-			}
-		}
-
-
-		/// <summary>
-		/// Get/Set external file attributes as an integer.
-		/// The values of this are operating system dependant see
-		/// <see cref="HostSystem">HostSystem</see> for details
-		/// </summary>
-		public int ExternalFileAttributes {
-			get {
-				if ((known & KNOWN_EXTERN_ATTRIBUTES) == 0) {
-					return -1;
-				} else {
-					return externalFileAttributes;
-				}
-			}
-			
-			set {
-				externalFileAttributes = value;
-				known |= (ushort)KNOWN_EXTERN_ATTRIBUTES;
-			}
-		}
-
-		/// <summary>
-		/// Get the version made by for this entry or zero if unknown.
-		/// The value / 10 indicates the major version number, and 
-		/// the value mod 10 is the minor version number
-		/// </summary>
-		public int VersionMadeBy {
-			get { 
-				return versionMadeBy & 0xff; 
-			}
-		}
-
-		/// <summary>
-		/// Gets the compatability information for the <see cref="ExternalFileAttributes">external file attribute</see>
-		/// If the external file attributes are compatible with MS-DOS and can be read
-		/// by PKZIP for DOS version 2.04g then this value will be zero.  Otherwise the value
-		/// will be non-zero and identify the host system on which the attributes are compatible.
-		/// </summary>
-		/// 		
-		/// <remarks>
-		/// The values for this as defined in the Zip File format and by others are shown below.  The values are somewhat
-		/// misleading in some cases as they are not all used as shown.  You should consult the relevant documentation
-		/// to obtain up to date and correct information.  The modified appnote by the infozip group is
-		/// particularly helpful as it documents a lot of peculiarities.  The document is however a little dated.
-		/// <list type="table">
-		/// <item>0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)</item>
-		/// <item>1 - Amiga</item>
-		/// <item>2 - OpenVMS</item>
-		/// <item>3 - Unix</item>
-		/// <item>4 - VM/CMS</item>
-		/// <item>5 - Atari ST</item>
-		/// <item>6 - OS/2 HPFS</item>
-		/// <item>7 - Macintosh</item>
-		/// <item>8 - Z-System</item>
-		/// <item>9 - CP/M</item>
-		/// <item>10 - Windows NTFS</item>
-		/// <item>11 - MVS (OS/390 - Z/OS)</item>
-		/// <item>12 - VSE</item>
-		/// <item>13 - Acorn Risc</item>
-		/// <item>14 - VFAT</item>
-		/// <item>15 - Alternate MVS</item>
-		/// <item>16 - BeOS</item>
-		/// <item>17 - Tandem</item>
-		/// <item>18 - OS/400</item>
-		/// <item>19 - OS/X (Darwin)</item>
-		/// <item>99 - WinZip AES</item>
-		/// <item>remainder - unused</item>
-		/// </list>
-		/// </remarks>
-
-		public int HostSystem {
-			get { return (versionMadeBy >> 8) & 0xff; }
-		}
-		
-		/// <summary>
-		/// Creates a zip entry with the given name.
-		/// </summary>
-		/// <param name="name">
-		/// The name for this entry. Can include directory components.
-		/// The convention for names is 'unix'  style paths with no device names and 
-		/// path elements separated by '/' characters.  This is not enforced see <see cref="CleanName">CleanName</see>
-		/// on how to ensure names are valid if this is desired.
-		/// </param>
-		/// <exception cref="ArgumentNullException">
-		/// The name passed is null
-		/// </exception>
-		public ZipEntry(string name) : this(name, 0, ZipConstants.VERSION_MADE_BY)
-		{
-		}
-
-		/// <summary>
-		/// Creates a zip entry with the given name and version required to extract
-		/// </summary>
-		/// <param name="name">
-		/// The name for this entry. Can include directory components.
-		/// The convention for names is 'unix'  style paths with no device names and 
-		/// path elements separated by '/' characters.  This is not enforced see <see cref="CleanName">CleanName</see>
-		/// on how to ensure names are valid if this is desired.
-		/// </param>
-		/// <param name="versionRequiredToExtract">
-		/// The minimum 'feature version' required this entry
-		/// </param>
-		/// <exception cref="ArgumentNullException">
-		/// The name passed is null
-		/// </exception>
-		internal ZipEntry(string name, int versionRequiredToExtract) : this(name, versionRequiredToExtract, ZipConstants.VERSION_MADE_BY)
-		{
-		}
-		
-		/// <summary>
-		/// Initializes an entry with the given name and made by information
-		/// </summary>
-		/// <param name="name">Name for this entry</param>
-		/// <param name="madeByInfo">Version and HostSystem Information</param>
-		/// <param name="versionRequiredToExtract">Minimum required zip feature version required to extract this entry</param>
-		/// <exception cref="ArgumentNullException">
-		/// The name passed is null
-		/// </exception>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// versionRequiredToExtract should be 0 (auto-calculate) or > 10
-		/// </exception>
-		/// <remarks>
-		/// This constructor is used by the ZipFile class when reading from the central header
-		/// It is not generally useful, use the constructor specifying the name only.
-		/// </remarks>
-		internal ZipEntry(string name, int versionRequiredToExtract, int madeByInfo)
-		{
-			if (name == null)  {
-				throw new System.ArgumentNullException("ZipEntry name");
-			}
-
-			if ( name.Length == 0 ) {
-				throw new ArgumentException("ZipEntry name is empty");
-			}
-
-			if (versionRequiredToExtract != 0 && versionRequiredToExtract < 10) {
-				throw new ArgumentOutOfRangeException("versionRequiredToExtract");
-			}
-			
-			this.DateTime         = System.DateTime.Now;
-			this.name             = name;
-			this.versionMadeBy    = (ushort)madeByInfo;
-			this.versionToExtract = (ushort)versionRequiredToExtract;
-		}
-		
-		/// <summary>
-		/// Creates a copy of the given zip entry.
-		/// </summary>
-		/// <param name="e">
-		/// The entry to copy.
-		/// </param>
-		public ZipEntry(ZipEntry e)
-		{
-			known                  = e.known;
-			name                   = e.name;
-			size                   = e.size;
-			compressedSize         = e.compressedSize;
-			crc                    = e.crc;
-			dosTime                = e.dosTime;
-			method                 = e.method;
-			ExtraData              = e.ExtraData;     // Note use of property ensuring data is unique
-			comment                = e.comment;
-			versionToExtract       = e.versionToExtract;
-			versionMadeBy          = e.versionMadeBy;
-			externalFileAttributes = e.externalFileAttributes;
-			flags                  = e.flags;
-
-			zipFileIndex           = -1;
-			offset                 = 0;
-		}
-
-		/// <summary>
-		/// Get minimum Zip feature version required to extract this entry
-		/// </summary>		
-		/// <remarks>
-		/// Minimum features are defined as:<br/>
-		/// 1.0 - Default value<br/>
-		/// 1.1 - File is a volume label<br/>
-		/// 2.0 - File is a folder/directory<br/>
-		/// 2.0 - File is compressed using Deflate compression<br/>
-		/// 2.0 - File is encrypted using traditional encryption<br/>
-		/// 2.1 - File is compressed using Deflate64<br/>
-		/// 2.5 - File is compressed using PKWARE DCL Implode<br/>
-		/// 2.7 - File is a patch data set<br/>
-		/// 4.5 - File uses Zip64 format extensions<br/>
-		/// 4.6 - File is compressed using BZIP2 compression<br/>
-		/// 5.0 - File is encrypted using DES<br/>
-		/// 5.0 - File is encrypted using 3DES<br/>
-		/// 5.0 - File is encrypted using original RC2 encryption<br/>
-		/// 5.0 - File is encrypted using RC4 encryption<br/>
-		/// 5.1 - File is encrypted using AES encryption<br/>
-		/// 5.1 - File is encrypted using corrected RC2 encryption<br/>
-		/// 5.1 - File is encrypted using corrected RC2-64 encryption<br/>
-		/// 6.1 - File is encrypted using non-OAEP key wrapping<br/>
-		/// 6.2 - Central directory encryption (not confirmed yet)<br/>
-		/// </remarks>
-		public int Version {
-			get {
-				if (versionToExtract != 0) {
-					return versionToExtract;
-				} else {
-					int result = 10;
-					if (CompressionMethod.Deflated == method) {
-						result = 20;
-					} else if (IsDirectory == true) {
-						result = 20;
-					} else if (IsCrypted == true) {
-						result = 20;
-					} else if ((known & KNOWN_EXTERN_ATTRIBUTES) != 0 && (externalFileAttributes & 0x08) != 0) {
-						result = 11;
-					}
-					return result;
-				}
-			}
-		}
-
-		/// <summary>
-		/// Gets a value indicating if the entry requires Zip64 extensions to be stored
-		/// </summary>
-		public bool RequiresZip64 {
-			get {
-				return (this.size > uint.MaxValue) || (this.compressedSize > uint.MaxValue);
-			}
-		}
-		
-		/// <summary>
-		/// Get/Set DosTime
-		/// </summary>		
-		public long DosTime {
-			get {
-				if ((known & KNOWN_TIME) == 0) {
-					return 0;
-				} else {
-					return dosTime;
-				}
-			}
-			set {
-				this.dosTime = (uint)value;
-				known |= (ushort)KNOWN_TIME;
-			}
-		}
-		
-		
-		/// <summary>
-		/// Gets/Sets the time of last modification of the entry.
-		/// </summary>
-		public DateTime DateTime {
-			get {
-				// Although technically not valid some archives have dates set to zero.
-				// This mimics some archivers handling and is a good a cludge as any probably.
-				if ( dosTime == 0 ) {
-					return DateTime.Now;
-				}
-				else {
-					uint sec  = 2 * (dosTime & 0x1f);
-					uint min  = (dosTime >> 5) & 0x3f;
-					uint hrs  = (dosTime >> 11) & 0x1f;
-					uint day  = (dosTime >> 16) & 0x1f;
-					uint mon  = ((dosTime >> 21) & 0xf);
-					uint year = ((dosTime >> 25) & 0x7f) + 1980;
-					return new System.DateTime((int)year, (int)mon, (int)day, (int)hrs, (int)min, (int)sec);
-				}
-			}
-			set {
-				DosTime = ((uint)value.Year - 1980 & 0x7f) << 25 | 
-				          ((uint)value.Month) << 21 |
-				          ((uint)value.Day) << 16 |
-				          ((uint)value.Hour) << 11 |
-				          ((uint)value.Minute) << 5 |
-				          ((uint)value.Second) >> 1;
-			}
-		}
-		
-		/// <summary>
-		/// Returns the entry name.  The path components in the entry should
-		/// always separated by slashes ('/').  Dos device names like C: should also
-		/// be removed.  See <see cref="CleanName">CleanName</see>.
-		/// </summary>
-		public string Name {
-			get {
-				return name;
-			}
-		}
-		
-		/// <summary>
-		/// Cleans a name making it conform to Zip file conventions.
-		/// Devices names ('c:\') and UNC share names ('\\server\share') are removed
-		/// and forward slashes ('\') are converted to back slashes ('/').
-		/// </summary>
-		/// <param name="name">Name to clean</param>
-		/// <param name="relativePath">Make names relative if true or absolute if false</param>
-		static public string CleanName(string name, bool relativePath)
-		{
-			if (name == null) {
-				return "";
-			}
-			
-			if (Path.IsPathRooted(name) == true) {
-				// NOTE:
-				// for UNC names...  \\machine\share\zoom\beet.txt gives \zoom\beet.txt
-				name = name.Substring(Path.GetPathRoot(name).Length);
-			}
-
-			name = name.Replace(@"\", "/");
-			
-			if (relativePath == true) {
-				if (name.Length > 0 && (name[0] == Path.AltDirectorySeparatorChar || name[0] == Path.DirectorySeparatorChar)) {
-					name = name.Remove(0, 1);
-				}
-			} else {
-				if (name.Length > 0 && name[0] != Path.AltDirectorySeparatorChar && name[0] != Path.DirectorySeparatorChar) {
-					name = name.Insert(0, "/");
-				}
-			}
-			return name;
-		}
-		
-		/// <summary>
-		/// Cleans a name making it conform to Zip file conventions.
-		/// Devices names ('c:\') and UNC share names ('\\server\share') are removed
-		/// and forward slashes ('\') are converted to back slashes ('/').
-		/// Names are made relative by trimming leading slashes which is compatible
-		/// with Windows-XPs built in Zip file handling.
-		/// </summary>
-		/// <param name="name">Name to clean</param>
-		static public string CleanName(string name)
-		{
-			return CleanName(name, true);
-		}
-		
-		/// <summary>
-		/// Gets/Sets the size of the uncompressed data.
-		/// </summary>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// If the size is not in the range 0..0xffffffffL
-		/// </exception>
-		/// <returns>
-		/// The size or -1 if unknown.
-		/// </returns>
-		public long Size {
-			get {
-				return (known & KNOWN_SIZE) != 0 ? (long)size : -1L;
-			}
-			set {
-				if (((ulong)value & 0xFFFFFFFF00000000L) != 0) {
-					throw new ArgumentOutOfRangeException("size");
-				}
-				this.size  = (ulong)value;
-				this.known |= (ushort)KNOWN_SIZE;
-			}
-		}
-		
-		/// <summary>
-		/// Gets/Sets the size of the compressed data.
-		/// </summary>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// Size is not in the range 0..0xffffffff
-		/// </exception>
-		/// <returns>
-		/// The size or -1 if unknown.
-		/// </returns>
-		public long CompressedSize {
-			get {
-				return (known & KNOWN_CSIZE) != 0 ? (long)compressedSize : -1L;
-			}
-			set {
-				if (((ulong)value & 0xffffffff00000000L) != 0) {
-					throw new ArgumentOutOfRangeException();
-				}
-				this.compressedSize = (ulong)value;
-				this.known |= (ushort)KNOWN_CSIZE;
-			}
-		}
-		
-		/// <summary>
-		/// Gets/Sets the crc of the uncompressed data.
-		/// </summary>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// Crc is not in the range 0..0xffffffffL
-		/// </exception>
-		/// <returns>
-		/// The crc value or -1 if unknown.
-		/// </returns>
-		public long Crc {
-			get {
-				return (known & KNOWN_CRC) != 0 ? crc & 0xffffffffL : -1L;
-			}
-			set {
-				if (((ulong)crc & 0xffffffff00000000L) != 0) {
-					throw new ArgumentOutOfRangeException();
-				}
-				this.crc = (uint)value;
-				this.known |= (ushort)KNOWN_CRC;
-			}
-		}
-		
-		/// <summary>
-		/// Gets/Sets the compression method. Only Deflated and Stored are supported.
-		/// </summary>
-		/// <returns>
-		/// The compression method for this entry
-		/// </returns>
-		/// <see cref="ICSharpCode.SharpZipLib.Zip.CompressionMethod.Deflated"/>
-		/// <see cref="ICSharpCode.SharpZipLib.Zip.CompressionMethod.Stored"/>
-		public CompressionMethod CompressionMethod {
-			get {
-				return method;
-			}
-			set {
-				this.method = value;
-			}
-		}
-		
-		/// <summary>
-		/// Gets/Sets the extra data.
-		/// </summary>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// Extra data is longer than 0xffff bytes.
-		/// </exception>
-		/// <returns>
-		/// Extra data or null if not set.
-		/// </returns>
-		public byte[] ExtraData {
-			get {
-				return extra;
-			}
-			set {
-				if (value == null) {
-					this.extra = null;
-					return;
-				}
-				
-				if (value.Length > 0xffff) {
-					throw new System.ArgumentOutOfRangeException();
-				}
-				
-				this.extra = new byte[value.Length];
-				Array.Copy(value, 0, this.extra, 0, value.Length);
-				
-				try {
-					int pos = 0;
-					while (pos < extra.Length) {
-						int sig = (extra[pos++] & 0xff) | (extra[pos++] & 0xff) << 8;
-						int len = (extra[pos++] & 0xff) | (extra[pos++] & 0xff) << 8;
-						
-						if (len < 0 || pos + len > extra.Length) {
-							// This is still lenient but the extra data is corrupt
-							// TODO: drop the extra data? or somehow indicate to user 
-							// there is a problem...
-							break;
-						}
-						
-						if (sig == 0x5455) {
-							// extended time stamp, unix format by Rainer Prem <Rainer@Prem.de>
-							int flags = extra[pos];
-							// Can include other times but these are ignored.  Length of data should
-							// actually be 1 + 4 * no of bits in flags.
-							if ((flags & 1) != 0 && len >= 5) {
-								int iTime = ((extra[pos+1] & 0xff) |
-									(extra[pos + 2] & 0xff) << 8 |
-									(extra[pos + 3] & 0xff) << 16 |
-									(extra[pos + 4] & 0xff) << 24);
-								
-								DateTime = (new DateTime ( 1970, 1, 1, 0, 0, 0 ) + new TimeSpan ( 0, 0, 0, iTime, 0 )).ToLocalTime ();
-								known |= (ushort)KNOWN_TIME;
-							}
-						} else if (sig == 0x0001) { 
-							// ZIP64 extended information extra field
-							// Of variable size depending on which fields in header are too small
-							// fields appear here if the corresponding local or central directory record field
-							// is set to 0xFFFF or 0xFFFFFFFF and the entry is in Zip64 format.
-							//
-							// Original Size          8 bytes
-							// Compressed size        8 bytes
-							// Relative header offset 8 bytes
-							// Disk start number      4 bytes
-						}
-						pos += len;
-					}
-				} catch (Exception) {
-					/* be lenient */
-					return;
-				}
-			}
-		}
-		
-		
-		/// <summary>
-		/// Gets/Sets the entry comment.
-		/// </summary>
-		/// <exception cref="System.ArgumentOutOfRangeException">
-		/// If comment is longer than 0xffff.
-		/// </exception>
-		/// <returns>
-		/// The comment or null if not set.
-		/// </returns>
-		public string Comment {
-			get {
-				return comment;
-			}
-			set {
-				// TODO: this test is strictly incorrect as the length is in characters
-				// While the test is correct in that a comment of this length or greater 
-				// is definitely invalid, shorter comments may also have an invalid length.
-				if (value != null && value.Length > 0xffff) {
-					throw new ArgumentOutOfRangeException();
-				}
-				this.comment = value;
-			}
-		}
-		
-		/// <summary>
-		/// Gets a value indicating of the if the entry is a directory.  A directory is determined by
-		/// an entry name with a trailing slash '/'.  The external file attributes
-		/// can also mark a file as a directory.  The trailing slash convention should always be followed
-		/// however.
-		/// </summary>
-		public bool IsDirectory {
-			get {
-				int nlen = name.Length;
-				bool result = nlen > 0 && name[nlen - 1] == '/';
-				
-				if (result == false && (known & KNOWN_EXTERN_ATTRIBUTES) != 0) {
-					if (HostSystem == 0 && (ExternalFileAttributes & 16) != 0) {
-						result = true;
-					}
-				}
-				return result;
-			}
-		}
-		
-		/// <summary>
-		/// Get a value of true if the entry appears to be a file; false otherwise
-		/// </summary>
-		/// <remarks>
-		/// This only takes account Windows attributes.  Other operating systems are ignored.
-		/// For linux and others the result may be incorrect.
-		/// </remarks>
-		public bool IsFile {
-			get {
-				bool result = !IsDirectory;
-
-				// Exclude volume labels
-				if ( result && (known & KNOWN_EXTERN_ATTRIBUTES) != 0) {
-					if (HostSystem == 0 && (ExternalFileAttributes & 8) != 0) {
-						result = false;
-					}
-				}
-				return result;
-			}
-		}
-		
-		/// <summary>
-		/// Creates a copy of this zip entry.
-		/// </summary>
-		public object Clone()
-		{
-			return this.MemberwiseClone();
-		}
-		
-		/// <summary>
-		/// Gets the string representation of this ZipEntry.
-		/// </summary>
-		public override string ToString()
-		{
-			return name;
-		}
-	}
-}
+// ZipEntry.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+
+namespace ICSharpCode.SharpZipLib.Zip
+{
+	
+	/// <summary>
+	/// This class represents an entry in a zip archive.  This can be a file
+	/// or a directory
+	/// ZipFile and ZipInputStream will give you instances of this class as 
+	/// information about the members in an archive.  ZipOutputStream
+	/// uses an instance of this class when creating an entry in a Zip file.
+	/// <br/>
+	/// <br/>Author of the original java version : Jochen Hoenicke
+	/// </summary>
+	public class ZipEntry : ICloneable
+	{
+		static int KNOWN_SIZE               = 1;
+		static int KNOWN_CSIZE              = 2;
+		static int KNOWN_CRC                = 4;
+		static int KNOWN_TIME               = 8;
+		static int KNOWN_EXTERN_ATTRIBUTES 	= 16;
+		
+		ushort known = 0;                       // Bit flags made up of above bits
+		int    externalFileAttributes = -1;     // contains external attributes (os dependant)
+		
+		ushort versionMadeBy;                   // Contains host system and version information
+		                                        // only relevant for central header entries
+		
+		string name;
+		ulong  size;
+		ulong  compressedSize;
+		ushort versionToExtract;                // Version required to extract (library handles <= 2.0)
+		uint   crc;
+		uint   dosTime;
+		
+		CompressionMethod  method = CompressionMethod.Deflated;
+		byte[] extra = null;
+		string comment = null;
+		
+		int flags;                             // general purpose bit flags
+
+		int zipFileIndex = -1;                 // used by ZipFile
+		int offset;                            // used by ZipFile and ZipOutputStream
+		
+		/// <summary>
+		/// Get/Set flag indicating if entry is encrypted.
+		/// A simple helper routine to aid interpretation of <see cref="Flags">flags</see>
+		/// </summary>
+		public bool IsCrypted {
+			get {
+				return (flags & 1) != 0; 
+			}
+			set {
+				if (value) {
+					flags |= 1;
+				} else {
+					flags &= ~1;
+				}
+			}
+		}
+		
+		/// <summary>
+		/// Get/Set general purpose bit flag for entry
+		/// </summary>
+		/// <remarks>
+		/// General purpose bit flag<br/>
+		/// Bit 0: If set, indicates the file is encrypted<br/>
+		/// Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating<br/>
+		/// Imploding:<br/>
+		/// Bit 1 if set indicates an 8K sliding dictionary was used.  If clear a 4k dictionary was used<br/>
+		/// Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise<br/>
+		/// <br/>
+		/// Deflating:<br/>
+		///   Bit 2    Bit 1<br/>
+		///     0        0       Normal compression was used<br/>
+		///     0        1       Maximum compression was used<br/>
+		///     1        0       Fast compression was used<br/>
+		///     1        1       Super fast compression was used<br/>
+		/// <br/>
+		/// Bit 3: If set, the fields crc-32, compressed size
+		/// and uncompressed size are were not able to be written during zip file creation
+		/// The correct values are held in a data descriptor immediately following the compressed data. <br/>
+		/// Bit 4: Reserved for use by PKZIP for enhanced deflating<br/>
+		/// Bit 5: If set indicates the file contains compressed patch data<br/>
+		/// Bit 6: If set indicates strong encryption was used.<br/>
+		/// Bit 7-15: Unused or reserved<br/>
+		/// </remarks>
+		public int Flags {
+			get { 
+				return flags; 
+			}
+			set {
+				flags = value; 
+			}
+		}
+
+
+		/// <summary>
+		/// Get/Set index of this entry in Zip file
+		/// </summary>
+		public int ZipFileIndex {
+			get {
+				return zipFileIndex;
+			}
+			set {
+				zipFileIndex = value;
+			}
+		}
+		
+		/// <summary>
+		/// Get/set offset for use in central header
+		/// </summary>
+		public int Offset {
+			get {
+				return offset;
+			}
+			set {
+				if (((ulong)value & 0xFFFFFFFF00000000L) != 0) {
+					throw new ArgumentOutOfRangeException("Offset");
+				}
+				offset = value;
+			}
+		}
+
+
+		/// <summary>
+		/// Get/Set external file attributes as an integer.
+		/// The values of this are operating system dependant see
+		/// <see cref="HostSystem">HostSystem</see> for details
+		/// </summary>
+		public int ExternalFileAttributes {
+			get {
+				if ((known & KNOWN_EXTERN_ATTRIBUTES) == 0) {
+					return -1;
+				} else {
+					return externalFileAttributes;
+				}
+			}
+			
+			set {
+				externalFileAttributes = value;
+				known |= (ushort)KNOWN_EXTERN_ATTRIBUTES;
+			}
+		}
+
+		/// <summary>
+		/// Get the version made by for this entry or zero if unknown.
+		/// The value / 10 indicates the major version number, and 
+		/// the value mod 10 is the minor version number
+		/// </summary>
+		public int VersionMadeBy {
+			get { 
+				return versionMadeBy & 0xff; 
+			}
+		}
+
+		/// <summary>
+		/// Gets the compatability information for the <see cref="ExternalFileAttributes">external file attribute</see>
+		/// If the external file attributes are compatible with MS-DOS and can be read
+		/// by PKZIP for DOS version 2.04g then this value will be zero.  Otherwise the value
+		/// will be non-zero and identify the host system on which the attributes are compatible.
+		/// </summary>
+		/// 		
+		/// <remarks>
+		/// The values for this as defined in the Zip File format and by others are shown below.  The values are somewhat
+		/// misleading in some cases as they are not all used as shown.  You should consult the relevant documentation
+		/// to obtain up to date and correct information.  The modified appnote by the infozip group is
+		/// particularly helpful as it documents a lot of peculiarities.  The document is however a little dated.
+		/// <list type="table">
+		/// <item>0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)</item>
+		/// <item>1 - Amiga</item>
+		/// <item>2 - OpenVMS</item>
+		/// <item>3 - Unix</item>
+		/// <item>4 - VM/CMS</item>
+		/// <item>5 - Atari ST</item>
+		/// <item>6 - OS/2 HPFS</item>
+		/// <item>7 - Macintosh</item>
+		/// <item>8 - Z-System</item>
+		/// <item>9 - CP/M</item>
+		/// <item>10 - Windows NTFS</item>
+		/// <item>11 - MVS (OS/390 - Z/OS)</item>
+		/// <item>12 - VSE</item>
+		/// <item>13 - Acorn Risc</item>
+		/// <item>14 - VFAT</item>
+		/// <item>15 - Alternate MVS</item>
+		/// <item>16 - BeOS</item>
+		/// <item>17 - Tandem</item>
+		/// <item>18 - OS/400</item>
+		/// <item>19 - OS/X (Darwin)</item>
+		/// <item>99 - WinZip AES</item>
+		/// <item>remainder - unused</item>
+		/// </list>
+		/// </remarks>
+
+		public int HostSystem {
+			get { return (versionMadeBy >> 8) & 0xff; }
+		}
+		
+		/// <summary>
+		/// Creates a zip entry with the given name.
+		/// </summary>
+		/// <param name="name">
+		/// The name for this entry. Can include directory components.
+		/// The convention for names is 'unix'  style paths with no device names and 
+		/// path elements separated by '/' characters.  This is not enforced see <see cref="CleanName">CleanName</see>
+		/// on how to ensure names are valid if this is desired.
+		/// </param>
+		/// <exception cref="ArgumentNullException">
+		/// The name passed is null
+		/// </exception>
+		public ZipEntry(string name) : this(name, 0, ZipConstants.VERSION_MADE_BY)
+		{
+		}
+
+		/// <summary>
+		/// Creates a zip entry with the given name and version required to extract
+		/// </summary>
+		/// <param name="name">
+		/// The name for this entry. Can include directory components.
+		/// The convention for names is 'unix'  style paths with no device names and 
+		/// path elements separated by '/' characters.  This is not enforced see <see cref="CleanName">CleanName</see>
+		/// on how to ensure names are valid if this is desired.
+		/// </param>
+		/// <param name="versionRequiredToExtract">
+		/// The minimum 'feature version' required this entry
+		/// </param>
+		/// <exception cref="ArgumentNullException">
+		/// The name passed is null
+		/// </exception>
+		internal ZipEntry(string name, int versionRequiredToExtract) : this(name, versionRequiredToExtract, ZipConstants.VERSION_MADE_BY)
+		{
+		}
+		
+		/// <summary>
+		/// Initializes an entry with the given name and made by information
+		/// </summary>
+		/// <param name="name">Name for this entry</param>
+		/// <param name="madeByInfo">Version and HostSystem Information</param>
+		/// <param name="versionRequiredToExtract">Minimum required zip feature version required to extract this entry</param>
+		/// <exception cref="ArgumentNullException">
+		/// The name passed is null
+		/// </exception>
+		/// <exception cref="ArgumentOutOfRangeException">
+		/// versionRequiredToExtract should be 0 (auto-calculate) or > 10
+		/// </exception>
+		/// <remarks>
+		/// This constructor is used by the ZipFile class when reading from the central header
+		/// It is not generally useful, use the constructor specifying the name only.
+		/// </remarks>
+		internal ZipEntry(string name, int versionRequiredToExtract, int madeByInfo)
+		{
+			if (name == null)  {
+				throw new System.ArgumentNullException("ZipEntry name");
+			}
+
+			if ( name.Length == 0 ) {
+				throw new ArgumentException("ZipEntry name is empty");
+			}
+
+			if (versionRequiredToExtract != 0 && versionRequiredToExtract < 10) {
+				throw new ArgumentOutOfRangeException("versionRequiredToExtract");
+			}
+			
+			this.DateTime         = System.DateTime.Now;
+			this.name             = name;
+			this.versionMadeBy    = (ushort)madeByInfo;
+			this.versionToExtract = (ushort)versionRequiredToExtract;
+		}
+		
+		/// <summary>
+		/// Creates a copy of the given zip entry.
+		/// </summary>
+		/// <param name="e">
+		/// The entry to copy.
+		/// </param>
+		public ZipEntry(ZipEntry e)
+		{
+			known                  = e.known;
+			name                   = e.name;
+			size                   = e.size;
+			compressedSize         = e.compressedSize;
+			crc                    = e.crc;
+			dosTime                = e.dosTime;
+			method                 = e.method;
+			ExtraData              = e.ExtraData;     // Note use of property ensuring data is unique
+			comment                = e.comment;
+			versionToExtract       = e.versionToExtract;
+			versionMadeBy          = e.versionMadeBy;
+			externalFileAttributes = e.externalFileAttributes;
+			flags                  = e.flags;
+
+			zipFileIndex           = -1;
+			offset                 = 0;
+		}
+
+		/// <summary>
+		/// Get minimum Zip feature version required to extract this entry
+		/// </summary>		
+		/// <remarks>
+		/// Minimum features are defined as:<br/>
+		/// 1.0 - Default value<br/>
+		/// 1.1 - File is a volume label<br/>
+		/// 2.0 - File is a folder/directory<br/>
+		/// 2.0 - File is compressed using Deflate compression<br/>
+		/// 2.0 - File is encrypted using traditional encryption<br/>
+		/// 2.1 - File is compressed using Deflate64<br/>
+		/// 2.5 - File is compressed using PKWARE DCL Implode<br/>
+		/// 2.7 - File is a patch data set<br/>
+		/// 4.5 - File uses Zip64 format extensions<br/>
+		/// 4.6 - File is compressed using BZIP2 compression<br/>
+		/// 5.0 - File is encrypted using DES<br/>
+		/// 5.0 - File is encrypted using 3DES<br/>
+		/// 5.0 - File is encrypted using original RC2 encryption<br/>
+		/// 5.0 - File is encrypted using RC4 encryption<br/>
+		/// 5.1 - File is encrypted using AES encryption<br/>
+		/// 5.1 - File is encrypted using corrected RC2 encryption<br/>
+		/// 5.1 - File is encrypted using corrected RC2-64 encryption<br/>
+		/// 6.1 - File is encrypted using non-OAEP key wrapping<br/>
+		/// 6.2 - Central directory encryption (not confirmed yet)<br/>
+		/// </remarks>
+		public int Version {
+			get {
+				if (versionToExtract != 0) {
+					return versionToExtract;
+				} else {
+					int result = 10;
+					if (CompressionMethod.Deflated == method) {
+						result = 20;
+					} else if (IsDirectory == true) {
+						result = 20;
+					} else if (IsCrypted == true) {
+						result = 20;
+					} else if ((known & KNOWN_EXTERN_ATTRIBUTES) != 0 && (externalFileAttributes & 0x08) != 0) {
+						result = 11;
+					}
+					return result;
+				}
+			}
+		}
+
+		/// <summary>
+		/// Gets a value indicating if the entry requires Zip64 extensions to be stored
+		/// </summary>
+		public bool RequiresZip64 {
+			get {
+				return (this.size > uint.MaxValue) || (this.compressedSize > uint.MaxValue);
+			}
+		}
+		
+		/// <summary>
+		/// Get/Set DosTime
+		/// </summary>		
+		public long DosTime {
+			get {
+				if ((known & KNOWN_TIME) == 0) {
+					return 0;
+				} else {
+					return dosTime;
+				}
+			}
+			set {
+				this.dosTime = (uint)value;
+				known |= (ushort)KNOWN_TIME;
+			}
+		}
+		
+		
+		/// <summary>
+		/// Gets/Sets the time of last modification of the entry.
+		/// </summary>
+		public DateTime DateTime {
+			get {
+				// Although technically not valid some archives have dates set to zero.
+				// This mimics some archivers handling and is a good a cludge as any probably.
+				if ( dosTime == 0 ) {
+					return DateTime.Now;
+				}
+				else {
+					uint sec  = 2 * (dosTime & 0x1f);
+					uint min  = (dosTime >> 5) & 0x3f;
+					uint hrs  = (dosTime >> 11) & 0x1f;
+					uint day  = (dosTime >> 16) & 0x1f;
+					uint mon  = ((dosTime >> 21) & 0xf);
+					uint year = ((dosTime >> 25) & 0x7f) + 1980;
+					return new System.DateTime((int)year, (int)mon, (int)day, (int)hrs, (int)min, (int)sec);
+				}
+			}
+			set {
+				DosTime = ((uint)value.Year - 1980 & 0x7f) << 25 | 
+				          ((uint)value.Month) << 21 |
+				          ((uint)value.Day) << 16 |
+				          ((uint)value.Hour) << 11 |
+				          ((uint)value.Minute) << 5 |
+				          ((uint)value.Second) >> 1;
+			}
+		}
+		
+		/// <summary>
+		/// Returns the entry name.  The path components in the entry should
+		/// always separated by slashes ('/').  Dos device names like C: should also
+		/// be removed.  See <see cref="CleanName">CleanName</see>.
+		/// </summary>
+		public string Name {
+			get {
+				return name;
+			}
+		}
+		
+		/// <summary>
+		/// Cleans a name making it conform to Zip file conventions.
+		/// Devices names ('c:\') and UNC share names ('\\server\share') are removed
+		/// and forward slashes ('\') are converted to back slashes ('/').
+		/// </summary>
+		/// <param name="name">Name to clean</param>
+		/// <param name="relativePath">Make names relative if true or absolute if false</param>
+		static public string CleanName(string name, bool relativePath)
+		{
+			if (name == null) {
+				return "";
+			}
+			
+			if (Path.IsPathRooted(name) == true) {
+				// NOTE:
+				// for UNC names...  \\machine\share\zoom\beet.txt gives \zoom\beet.txt
+				name = name.Substring(Path.GetPathRoot(name).Length);
+			}
+
+			name = name.Replace(@"\", "/");
+			
+			if (relativePath == true) {
+				if (name.Length > 0 && (name[0] == Path.AltDirectorySeparatorChar || name[0] == Path.DirectorySeparatorChar)) {
+					name = name.Remove(0, 1);
+				}
+			} else {
+				if (name.Length > 0 && name[0] != Path.AltDirectorySeparatorChar && name[0] != Path.DirectorySeparatorChar) {
+					name = name.Insert(0, "/");
+				}
+			}
+			return name;
+		}
+		
+		/// <summary>
+		/// Cleans a name making it conform to Zip file conventions.
+		/// Devices names ('c:\') and UNC share names ('\\server\share') are removed
+		/// and forward slashes ('\') are converted to back slashes ('/').
+		/// Names are made relative by trimming leading slashes which is compatible
+		/// with Windows-XPs built in Zip file handling.
+		/// </summary>
+		/// <param name="name">Name to clean</param>
+		static public string CleanName(string name)
+		{
+			return CleanName(name, true);
+		}
+		
+		/// <summary>
+		/// Gets/Sets the size of the uncompressed data.
+		/// </summary>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// If the size is not in the range 0..0xffffffffL
+		/// </exception>
+		/// <returns>
+		/// The size or -1 if unknown.
+		/// </returns>
+		public long Size {
+			get {
+				return (known & KNOWN_SIZE) != 0 ? (long)size : -1L;
+			}
+			set {
+				if (((ulong)value & 0xFFFFFFFF00000000L) != 0) {
+					throw new ArgumentOutOfRangeException("size");
+				}
+				this.size  = (ulong)value;
+				this.known |= (ushort)KNOWN_SIZE;
+			}
+		}
+		
+		/// <summary>
+		/// Gets/Sets the size of the compressed data.
+		/// </summary>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// Size is not in the range 0..0xffffffff
+		/// </exception>
+		/// <returns>
+		/// The size or -1 if unknown.
+		/// </returns>
+		public long CompressedSize {
+			get {
+				return (known & KNOWN_CSIZE) != 0 ? (long)compressedSize : -1L;
+			}
+			set {
+				if (((ulong)value & 0xffffffff00000000L) != 0) {
+					throw new ArgumentOutOfRangeException();
+				}
+				this.compressedSize = (ulong)value;
+				this.known |= (ushort)KNOWN_CSIZE;
+			}
+		}
+		
+		/// <summary>
+		/// Gets/Sets the crc of the uncompressed data.
+		/// </summary>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// Crc is not in the range 0..0xffffffffL
+		/// </exception>
+		/// <returns>
+		/// The crc value or -1 if unknown.
+		/// </returns>
+		public long Crc {
+			get {
+				return (known & KNOWN_CRC) != 0 ? crc & 0xffffffffL : -1L;
+			}
+			set {
+				if (((ulong)crc & 0xffffffff00000000L) != 0) {
+					throw new ArgumentOutOfRangeException();
+				}
+				this.crc = (uint)value;
+				this.known |= (ushort)KNOWN_CRC;
+			}
+		}
+		
+		/// <summary>
+		/// Gets/Sets the compression method. Only Deflated and Stored are supported.
+		/// </summary>
+		/// <returns>
+		/// The compression method for this entry
+		/// </returns>
+		/// <see cref="ICSharpCode.SharpZipLib.Zip.CompressionMethod.Deflated"/>
+		/// <see cref="ICSharpCode.SharpZipLib.Zip.CompressionMethod.Stored"/>
+		public CompressionMethod CompressionMethod {
+			get {
+				return method;
+			}
+			set {
+				this.method = value;
+			}
+		}
+		
+		/// <summary>
+		/// Gets/Sets the extra data.
+		/// </summary>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// Extra data is longer than 0xffff bytes.
+		/// </exception>
+		/// <returns>
+		/// Extra data or null if not set.
+		/// </returns>
+		public byte[] ExtraData {
+			get {
+				return extra;
+			}
+			set {
+				if (value == null) {
+					this.extra = null;
+					return;
+				}
+				
+				if (value.Length > 0xffff) {
+					throw new System.ArgumentOutOfRangeException();
+				}
+				
+				this.extra = new byte[value.Length];
+				Array.Copy(value, 0, this.extra, 0, value.Length);
+				
+				try {
+					int pos = 0;
+					while (pos < extra.Length) {
+						int sig = (extra[pos++] & 0xff) | (extra[pos++] & 0xff) << 8;
+						int len = (extra[pos++] & 0xff) | (extra[pos++] & 0xff) << 8;
+						
+						if (len < 0 || pos + len > extra.Length) {
+							// This is still lenient but the extra data is corrupt
+							// TODO: drop the extra data? or somehow indicate to user 
+							// there is a problem...
+							break;
+						}
+						
+						if (sig == 0x5455) {
+							// extended time stamp, unix format by Rainer Prem <Rainer@Prem.de>
+							int flags = extra[pos];
+							// Can include other times but these are ignored.  Length of data should
+							// actually be 1 + 4 * no of bits in flags.
+							if ((flags & 1) != 0 && len >= 5) {
+								int iTime = ((extra[pos+1] & 0xff) |
+									(extra[pos + 2] & 0xff) << 8 |
+									(extra[pos + 3] & 0xff) << 16 |
+									(extra[pos + 4] & 0xff) << 24);
+								
+								DateTime = (new DateTime ( 1970, 1, 1, 0, 0, 0 ) + new TimeSpan ( 0, 0, 0, iTime, 0 )).ToLocalTime ();
+								known |= (ushort)KNOWN_TIME;
+							}
+						} else if (sig == 0x0001) { 
+							// ZIP64 extended information extra field
+							// Of variable size depending on which fields in header are too small
+							// fields appear here if the corresponding local or central directory record field
+							// is set to 0xFFFF or 0xFFFFFFFF and the entry is in Zip64 format.
+							//
+							// Original Size          8 bytes
+							// Compressed size        8 bytes
+							// Relative header offset 8 bytes
+							// Disk start number      4 bytes
+						}
+						pos += len;
+					}
+				} catch (Exception) {
+					/* be lenient */
+					return;
+				}
+			}
+		}
+		
+		
+		/// <summary>
+		/// Gets/Sets the entry comment.
+		/// </summary>
+		/// <exception cref="System.ArgumentOutOfRangeException">
+		/// If comment is longer than 0xffff.
+		/// </exception>
+		/// <returns>
+		/// The comment or null if not set.
+		/// </returns>
+		public string Comment {
+			get {
+				return comment;
+			}
+			set {
+				// TODO: this test is strictly incorrect as the length is in characters
+				// While the test is correct in that a comment of this length or greater 
+				// is definitely invalid, shorter comments may also have an invalid length.
+				if (value != null && value.Length > 0xffff) {
+					throw new ArgumentOutOfRangeException();
+				}
+				this.comment = value;
+			}
+		}
+		
+		/// <summary>
+		/// Gets a value indicating of the if the entry is a directory.  A directory is determined by
+		/// an entry name with a trailing slash '/'.  The external file attributes
+		/// can also mark a file as a directory.  The trailing slash convention should always be followed
+		/// however.
+		/// </summary>
+		public bool IsDirectory {
+			get {
+				int nlen = name.Length;
+				bool result = nlen > 0 && name[nlen - 1] == '/';
+				
+				if (result == false && (known & KNOWN_EXTERN_ATTRIBUTES) != 0) {
+					if (HostSystem == 0 && (ExternalFileAttributes & 16) != 0) {
+						result = true;
+					}
+				}
+				return result;
+			}
+		}
+		
+		/// <summary>
+		/// Get a value of true if the entry appears to be a file; false otherwise
+		/// </summary>
+		/// <remarks>
+		/// This only takes account Windows attributes.  Other operating systems are ignored.
+		/// For linux and others the result may be incorrect.
+		/// </remarks>
+		public bool IsFile {
+			get {
+				bool result = !IsDirectory;
+
+				// Exclude volume labels
+				if ( result && (known & KNOWN_EXTERN_ATTRIBUTES) != 0) {
+					if (HostSystem == 0 && (ExternalFileAttributes & 8) != 0) {
+						result = false;
+					}
+				}
+				return result;
+			}
+		}
+		
+		/// <summary>
+		/// Creates a copy of this zip entry.
+		/// </summary>
+		public object Clone()
+		{
+			return this.MemberwiseClone();
+		}
+		
+		/// <summary>
+		/// Gets the string representation of this ZipEntry.
+		/// </summary>
+		public override string ToString()
+		{
+			return name;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipException.cs
@@ -1,63 +1,63 @@
-// ZipException.cs
-//
-// Copyright (C) 2001 Mike Krueger
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-
-namespace ICSharpCode.SharpZipLib.Zip 
-{
-	
-	/// <summary>
-	/// Represents errors specific to Zip file handling
-	/// </summary>
-	public class ZipException : SharpZipBaseException
-	{
-		/// <summary>
-		/// Initializes a new instance of the ZipException class.
-		/// </summary>
-		public ZipException()
-		{
-		}
-		
-		/// <summary>
-		/// Initializes a new instance of the ZipException class with a specified error message.
-		/// </summary>
-		public ZipException(string msg) : base(msg)
-		{
-		}
-	}
-}
+// ZipException.cs
+//
+// Copyright (C) 2001 Mike Krueger
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+
+namespace ICSharpCode.SharpZipLib.Zip 
+{
+	
+	/// <summary>
+	/// Represents errors specific to Zip file handling
+	/// </summary>
+	public class ZipException : SharpZipBaseException
+	{
+		/// <summary>
+		/// Initializes a new instance of the ZipException class.
+		/// </summary>
+		public ZipException()
+		{
+		}
+		
+		/// <summary>
+		/// Initializes a new instance of the ZipException class with a specified error message.
+		/// </summary>
+		public ZipException(string msg) : base(msg)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipFile.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipFile.cs
@@ -1,1012 +1,1012 @@
-// ZipFile.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.Security.Cryptography;
-using System.Collections;
-using System.IO;
-using System.Text;
-
-using ICSharpCode.SharpZipLib.Checksums;
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-using ICSharpCode.SharpZipLib.Zip.Compression;
-using ICSharpCode.SharpZipLib.Encryption;
-
-namespace ICSharpCode.SharpZipLib.Zip 
-{
-
-	/// <summary>
-	/// Arguments used with KeysRequiredEvent
-	/// </summary>
-	public class KeysRequiredEventArgs : EventArgs
-	{
-		string fileName;
-	
-		/// <summary>
-		/// Get the name of the file for which keys are required.
-		/// </summary>
-		public string FileName
-		{
-			get { return fileName; }
-		}
-	
-		byte[] key;
-		
-		/// <summary>
-		/// Get/set the key value
-		/// </summary>
-		public byte[] Key
-		{
-			get { return key; }
-			set { key = value; }
-		}
-	
-		/// <summary>
-		/// Initialise a new instance of <see cref="KeysRequiredEventArgs"></see>
-		/// </summary>
-		/// <param name="name">The name of the file for which keys are required.</param>
-		public KeysRequiredEventArgs(string name)
-		{
-			fileName = name;
-		}
-	
-		/// <summary>
-		/// Initialise a new instance of <see cref="KeysRequiredEventArgs"></see>
-		/// </summary>
-		/// <param name="name">The name of the file for which keys are required.</param>
-		/// <param name="keyValue">The current key value.</param>
-		public KeysRequiredEventArgs(string name, byte[] keyValue)
-		{
-			fileName = name;
-			key = keyValue;
-		}
-	}
-	
-	/// <summary>
-	/// This class represents a Zip archive.  You can ask for the contained
-	/// entries, or get an input stream for a file entry.  The entry is
-	/// automatically decompressed.
-	/// 
-	/// This class is thread safe:  You can open input streams for arbitrary
-	/// entries in different threads.
-	/// <br/>
-	/// <br/>Author of the original java version : Jochen Hoenicke
-	/// </summary>
-	/// <example>
-	/// <code>
-	/// using System;
-	/// using System.Text;
-	/// using System.Collections;
-	/// using System.IO;
-	/// 
-	/// using ICSharpCode.SharpZipLib.Zip;
-	/// 
-	/// class MainClass
-	/// {
-	/// 	static public void Main(string[] args)
-	/// 	{
-	/// 		ZipFile zFile = new ZipFile(args[0]);
-	/// 		Console.WriteLine("Listing of : " + zFile.Name);
-	/// 		Console.WriteLine("");
-	/// 		Console.WriteLine("Raw Size    Size      Date     Time     Name");
-	/// 		Console.WriteLine("--------  --------  --------  ------  ---------");
-	/// 		foreach (ZipEntry e in zFile) {
-	/// 			DateTime d = e.DateTime;
-	/// 			Console.WriteLine("{0, -10}{1, -10}{2}  {3}   {4}", e.Size, e.CompressedSize,
-	/// 			                                                    d.ToString("dd-MM-yy"), d.ToString("t"),
-	/// 			                                                    e.Name);
-	/// 		}
-	/// 	}
-	/// }
-	/// </code>
-	/// </example>
-	public class ZipFile : IEnumerable
-	{
-		string     name;
-		string     comment;
-		Stream     baseStream;
-		bool       isStreamOwner = true;
-		long       offsetOfFirstEntry = 0;
-		ZipEntry[] entries;
-		
-		#region KeyHandling
-		
-		/// <summary>
-		/// Delegate for handling keys/password setting during compresion/decompression.
-		/// </summary>
-		public delegate void KeysRequiredEventHandler(
-			object sender,
-			KeysRequiredEventArgs e
-		);
-
-		/// <summary>
-		/// Event handler for handling encryption keys.
-		/// </summary>
-		public KeysRequiredEventHandler KeysRequired;
-
-		/// <summary>
-		/// Handles getting of encryption keys when required.
-		/// </summary>
-		/// <param name="fileName">The file for which encryptino keys are required.</param>
-		void OnKeysRequired(string fileName)
-		{
-			if (KeysRequired != null) {
-				KeysRequiredEventArgs krea = new KeysRequiredEventArgs(fileName, key);
-				KeysRequired(this, krea);
-				key = krea.Key;
-			}
-		}
-		
-		byte[] key = null;
-		
-		/// <summary>
-		/// Get/set the encryption key value.
-		/// </summary>
-		byte[] Key
-		{
-			get { return key; }
-			set { key = value; }
-		}
-		
-		/// <summary>
-		/// Password to be used for encrypting/decrypting files.
-		/// </summary>
-		/// <remarks>Set to null if no password is required.</remarks>
-		public string Password
-		{
-			set 
-			{
-				if ( (value == null) || (value.Length == 0) ) {
-					key = null;
-				}
-				else {
-					key = PkzipClassic.GenerateKeys(Encoding.ASCII.GetBytes(value));
-				}
-			}
-		}
-		
-		byte[] iv = null;
-		
-		bool HaveKeys
-		{
-		 get { return key != null; }
-		}
-		#endregion
-	
-		/// <summary>
-		/// Opens a Zip file with the given name for reading.
-		/// </summary>
-		/// <exception cref="IOException">
-		/// An i/o error occurs
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// The file doesn't contain a valid zip archive.
-		/// </exception>
-		public ZipFile(string name)
-		{
-			this.name = name;
-			this.baseStream = File.OpenRead(name);
-			try {
-				ReadEntries();
-			}
-			catch {
-				Close();
-				throw;
-			}
-		}
-		
-		/// <summary>
-		/// Opens a Zip file reading the given FileStream
-		/// </summary>
-		/// <exception cref="IOException">
-		/// An i/o error occurs.
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// The file doesn't contain a valid zip archive.
-		/// </exception>
-		public ZipFile(FileStream file)
-		{
-			this.baseStream  = file;
-			this.name = file.Name;
-			try {
-				ReadEntries();
-			}
-			catch {
-				Close();
-				throw;
-			}
-		}
-		
-		/// <summary>
-		/// Opens a Zip file reading the given Stream
-		/// </summary>
-		/// <exception cref="IOException">
-		/// An i/o error occurs
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// The file doesn't contain a valid zip archive.<br/>
-		/// The stream provided cannot seek
-		/// </exception>
-		public ZipFile(Stream baseStream)
-		{
-			this.baseStream  = baseStream;
-			this.name = null;
-			try {
-				ReadEntries();
-			}
-			catch {
-				Close();
-				throw;
-			}
-		}
-		
-		
-		/// <summary>
-		/// Get/set a flag indicating if the underlying stream is owned by the ZipFile instance.
-		/// If the flag is true then the stream will be closed when <see cref="Close">Close</see> is called.
-		/// </summary>
-		/// <remarks>
-		/// The default value is true in all cases.
-		/// </remarks>
-		bool IsStreamOwner
-		{
-			get { return isStreamOwner; }
-			set { isStreamOwner = value; }
-		}
-		
-		/// <summary>
-		/// Read an unsigned short in little endian byte order.
-		/// </summary>
-		/// <returns>Returns the value read.</returns>
-		/// <exception cref="IOException">
-		/// An i/o error occurs.
-		/// </exception>
-		/// <exception cref="EndOfStreamException">
-		/// The file ends prematurely
-		/// </exception>
-		int ReadLeShort()
-		{
-			return baseStream.ReadByte() | baseStream.ReadByte() << 8;
-		}
-		
-		/// <summary>
-		/// Read an int in little endian byte order.
-		/// </summary>
-		/// <returns>Returns the value read.</returns>
-		/// <exception cref="IOException">
-		/// An i/o error occurs.
-		/// </exception>
-		/// <exception cref="System.IO.EndOfStreamException">
-		/// The file ends prematurely
-		/// </exception>
-		int ReadLeInt()
-		{
-			return ReadLeShort() | ReadLeShort() << 16;
-		}
-		
-		// NOTE this returns the offset of the first byte after the signature.
-		long LocateBlockWithSignature(int signature, long endLocation, int minimumBlockSize, int maximumVariableData)
-		{
-			long pos = endLocation - minimumBlockSize;
-			if (pos < 0) {
-				return -1;
-			}
-		
-			long giveUpMarker = Math.Max(pos - maximumVariableData, 0);
-		
-			// TODO: this loop could be optimised for speed.
-			do 
-			{
-				if (pos < giveUpMarker) {
-					return -1;
-				}
-				baseStream.Seek(pos--, SeekOrigin.Begin);
-			} while (ReadLeInt() != signature);
-	
-			return baseStream.Position;
-		}
-		
-		/// <summary>
-		/// Search for and read the central directory of a zip file filling the entries
-		/// array.  This is called exactly once by the constructors.
-		/// </summary>
-		/// <exception cref="System.IO.IOException">
-		/// An i/o error occurs.
-		/// </exception>
-		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
-		/// The central directory is malformed or cannot be found
-		/// </exception>
-		void ReadEntries()
-		{
-			// Search for the End Of Central Directory.  When a zip comment is
-			// present the directory may start earlier.
-			// 
-			// TODO: The search is limited to 64K which is the maximum size of a trailing comment field to aid speed.
-			// This should be compatible with both SFX and ZIP files but has only been tested for Zip files
-			// Need to confirm this is valid in all cases.
-			// Could also speed this up by reading memory in larger blocks.			
-
-			if (baseStream.CanSeek == false) {
-				throw new ZipException("ZipFile stream must be seekable");
-			}
-			
-			long locatedCentralDirOffset = LocateBlockWithSignature(ZipConstants.ENDSIG, baseStream.Length, ZipConstants.ENDHDR, 0xffff);
-			if (locatedCentralDirOffset < 0) {
-				throw new ZipException("Cannot find central directory");
-			}
-
-			int thisDiskNumber            = ReadLeShort();
-			int startCentralDirDisk       = ReadLeShort();
-			int entriesForThisDisk        = ReadLeShort();
-			int entriesForWholeCentralDir = ReadLeShort();
-			int centralDirSize            = ReadLeInt();
-			int offsetOfCentralDir        = ReadLeInt();
-			int commentSize               = ReadLeShort();
-			
-			byte[] zipComment = new byte[commentSize]; 
-			baseStream.Read(zipComment, 0, zipComment.Length); 
-			comment = ZipConstants.ConvertToString(zipComment); 
-			
-/* Its seems possible that this is too strict, more digging required.
-			if (thisDiskNumber != 0 || startCentralDirDisk != 0 || entriesForThisDisk != entriesForWholeCentralDir) {
-				throw new ZipException("Spanned archives are not currently handled");
-			}
-*/
-
-			entries = new ZipEntry[entriesForWholeCentralDir];
-			
-			// SFX support, find the offset of the first entry vis the start of the stream
-			// This applies to Zip files that are appended to the end of the SFX stub.
-			// Zip files created by some archivers have the offsets altered to reflect the true offsets
-			// and so dont require any adjustment here...
-			if (offsetOfCentralDir < locatedCentralDirOffset - (4 + centralDirSize)) {
-				offsetOfFirstEntry = locatedCentralDirOffset - (4 + centralDirSize + offsetOfCentralDir);
-				if (offsetOfFirstEntry <= 0) {
-					throw new ZipException("Invalid SFX file");
-				}
-			}
-
-			baseStream.Seek(offsetOfFirstEntry + offsetOfCentralDir, SeekOrigin.Begin);
-			
-			for (int i = 0; i < entriesForThisDisk; i++) {
-				if (ReadLeInt() != ZipConstants.CENSIG) {
-					throw new ZipException("Wrong Central Directory signature");
-				}
-				
-				int versionMadeBy      = ReadLeShort();
-				int versionToExtract   = ReadLeShort();
-				int bitFlags           = ReadLeShort();
-				int method             = ReadLeShort();
-				int dostime            = ReadLeInt();
-				int crc                = ReadLeInt();
-				int csize              = ReadLeInt();
-				int size               = ReadLeInt();
-				int nameLen            = ReadLeShort();
-				int extraLen           = ReadLeShort();
-				int commentLen         = ReadLeShort();
-				
-				int diskStartNo        = ReadLeShort();  // Not currently used
-				int internalAttributes = ReadLeShort();  // Not currently used
-
-				int externalAttributes = ReadLeInt();
-				int offset             = ReadLeInt();
-				
-				byte[] buffer = new byte[Math.Max(nameLen, commentLen)];
-				
-				baseStream.Read(buffer, 0, nameLen);
-				string name = ZipConstants.ConvertToString(buffer, nameLen);
-				
-				ZipEntry entry = new ZipEntry(name, versionToExtract, versionMadeBy);
-				entry.CompressionMethod = (CompressionMethod)method;
-				entry.Crc = crc & 0xffffffffL;
-				entry.Size = size & 0xffffffffL;
-				entry.CompressedSize = csize & 0xffffffffL;
-				entry.Flags = bitFlags;
-				entry.DosTime = (uint)dostime;
-				
-				if (extraLen > 0) {
-					byte[] extra = new byte[extraLen];
-					baseStream.Read(extra, 0, extraLen);
-					entry.ExtraData = extra;
-				}
-				
-				if (commentLen > 0) {
-					baseStream.Read(buffer, 0, commentLen);
-					entry.Comment = ZipConstants.ConvertToString(buffer, commentLen);
-				}
-				
-				entry.ZipFileIndex           = i;
-				entry.Offset                 = offset;
-				entry.ExternalFileAttributes = externalAttributes;
-				
-				entries[i] = entry;
-			}
-		}
-		
-		/// <summary>
-		/// Closes the ZipFile.  If the stream is <see cref="IsStreamOwner">owned</see> then this also closes the underlying input stream.
-		/// Once closed, no further instance methods should be called.
-		/// </summary>
-		/// <exception cref="System.IO.IOException">
-		/// An i/o error occurs.
-		/// </exception>
-		public void Close()
-		{
-			entries = null;
-			if ( isStreamOwner ) {
-				lock(baseStream) {
-					baseStream.Close();
-				}
-			}
-		}
-		
-		/// <summary>
-		/// Returns an enumerator for the Zip entries in this Zip file.
-		/// </summary>
-		/// <exception cref="InvalidOperationException">
-		/// The Zip file has been closed.
-		/// </exception>
-		public IEnumerator GetEnumerator()
-		{
-			if (entries == null) {
-				throw new InvalidOperationException("ZipFile has closed");
-			}
-			
-			return new ZipEntryEnumeration(entries);
-		}
-		
-		/// <summary>
-		/// Return the index of the entry with a matching name
-		/// </summary>
-		/// <param name="name">Entry name to find</param>
-		/// <param name="ignoreCase">If true the comparison is case insensitive</param>
-		/// <returns>The index position of the matching entry or -1 if not found</returns>
-		/// <exception cref="InvalidOperationException">
-		/// The Zip file has been closed.
-		/// </exception>
-		public int FindEntry(string name, bool ignoreCase)
-		{
-			if (entries == null) {
-				throw new InvalidOperationException("ZipFile has been closed");
-			}
-			
-			for (int i = 0; i < entries.Length; i++) {
-				if (string.Compare(name, entries[i].Name, ignoreCase) == 0) {
-					return i;
-				}
-			}
-			return -1;
-		}
-		
-		/// <summary>
-		/// Indexer property for ZipEntries
-		/// </summary>
-		[System.Runtime.CompilerServices.IndexerNameAttribute("EntryByIndex")]
-		public ZipEntry this[int index] {
-			get {
-				return (ZipEntry) entries[index].Clone();	
-			}
-		}
-		
-		/// <summary>
-		/// Searches for a zip entry in this archive with the given name.
-		/// String comparisons are case insensitive
-		/// </summary>
-		/// <param name="name">
-		/// The name to find. May contain directory components separated by slashes ('/').
-		/// </param>
-		/// <returns>
-		/// The zip entry, or null if no entry with that name exists.
-		/// </returns>
-		/// <exception cref="InvalidOperationException">
-		/// The Zip file has been closed.
-		/// </exception>
-		public ZipEntry GetEntry(string name)
-		{
-			if (entries == null) {
-				throw new InvalidOperationException("ZipFile has been closed");
-			}
-			
-			int index = FindEntry(name, true);
-			return index >= 0 ? (ZipEntry) entries[index].Clone() : null;
-		}
-		/// <summary>
-		/// Test an archive for integrity/validity
-		/// </summary>
-		/// <param name="testData">Perform low level data Crc check</param>
-		/// <returns>true iff the test passes, false otherwise</returns>
-		public bool TestArchive(bool testData)
-		{
-			bool result = true;
-			try {
-				for (int i = 0; i < Size; ++i) {
-					long offset = TestLocalHeader(this[i], true, true);
-					if (testData) {
-						Stream entryStream = this.GetInputStream(this[i]);
-						// TODO: events for updating info, recording errors etc
-						Crc32 crc = new Crc32();
-						byte[] buffer = new byte[4096];
-						int bytesRead;
-						while ((bytesRead = entryStream.Read(buffer, 0, buffer.Length)) > 0) {
-							crc.Update(buffer, 0, bytesRead);
-						}
-	
-						if (this[i].Crc != crc.Value) {
-							result = false;
-							// TODO: Event here....
-							break; // Do all entries giving more info at some point?
-						}
-					}
-				}
-			}
-			catch {
-				result = false;
-			}
-			return result;
-		}
-	
-		/// <summary>
-		/// Test the local header against that provided from the central directory
-		/// </summary>
-		/// <param name="entry">
-		/// The entry to test against
-		/// </param>
-		/// <param name="fullTest">
-		/// If true be extremely picky about the testing, otherwise be relaxed
-		/// </param>
-		/// <param name="extractTest">
-		/// Apply extra testing to see if the entry can be extracted by the library
-		/// </param>
-		/// <returns>The offset of the entries data in the file</returns>
-		long TestLocalHeader(ZipEntry entry, bool fullTest, bool extractTest)
-		{
-			lock(baseStream) 
-			{
-				baseStream.Seek(offsetOfFirstEntry + entry.Offset, SeekOrigin.Begin);
-				if (ReadLeInt() != ZipConstants.LOCSIG) {
-					throw new ZipException("Wrong local header signature");
-				}
-				
-				short shortValue = (short)ReadLeShort();	 // version required to extract
-				if (extractTest == true && shortValue > ZipConstants.VERSION_MADE_BY) {
-					throw new ZipException(string.Format("Version required to extract this entry not supported ({0})", shortValue));
-				}
-
-				short localFlags = (short)ReadLeShort();				  // general purpose bit flags.
-				if (extractTest == true) {
-					if ((localFlags & (int)(GeneralBitFlags.Patched | GeneralBitFlags.StrongEncryption | GeneralBitFlags.EnhancedCompress | GeneralBitFlags.HeaderMasked)) != 0) {
-						throw new ZipException("The library doesnt support the zip version required to extract this entry");
-					}
-				}
-					
-				if (localFlags != entry.Flags) {
-				   throw new ZipException("Central header/local header flags mismatch");
-				}
-
-				if (entry.CompressionMethod != (CompressionMethod)ReadLeShort()) {
-				   throw new ZipException("Central header/local header compression method mismatch");
-				}
-	
-				shortValue = (short)ReadLeShort();  // file time
-				shortValue = (short)ReadLeShort();  // file date
-	
-				int intValue = ReadLeInt();         // Crc
-	
-				if (fullTest) {
-					if ((localFlags & (int)GeneralBitFlags.Descriptor) == 0) {
-						if (intValue != (int)entry.Crc) 
-							throw new ZipException("Central header/local header crc mismatch");
-					}
-				}
-	
-				intValue = ReadLeInt();	   // compressed Size
-				intValue = ReadLeInt();	   // uncompressed size
-	
-				// TODO: make test more correct...  can't compare lengths as was done originally as this can fail for MBCS strings
-				// Assuming a code page at this point is not valid?  Best is to store the name length in the ZipEntry probably
-				int storedNameLength = ReadLeShort();
-				if (entry.Name.Length > storedNameLength) {
-					throw new ZipException("file name length mismatch");
-				}
-					
-				int extraLen = storedNameLength + ReadLeShort();
-				return offsetOfFirstEntry + entry.Offset + ZipConstants.LOCHDR + extraLen;
-			}
-		}
-		
-		/// <summary>
-		/// Checks, if the local header of the entry at index i matches the
-		/// central directory, and returns the offset to the data.
-		/// </summary>
-		/// <returns>
-		/// The start offset of the (compressed) data.
-		/// </returns>
-		/// <exception cref="System.IO.EndOfStreamException">
-		/// The stream ends prematurely
-		/// </exception>
-		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
-		/// The local header signature is invalid, the entry and central header file name lengths are different
-		/// or the local and entry compression methods dont match
-		/// </exception>
-		long CheckLocalHeader(ZipEntry entry)
-		{
-			return TestLocalHeader(entry, false, true);
-		}
-		
-		// Refactor this, its done elsewhere as well
-		void ReadFully(Stream s, byte[] outBuf)
-		{
-			int off = 0;
-			int len = outBuf.Length;
-			while (len > 0) {
-				int count = s.Read(outBuf, off, len);
-				if (count <= 0) {
-					throw new ZipException("Unexpected EOF"); 
-				}
-				off += count;
-				len -= count;
-			}
-		}
-
-		void CheckClassicPassword(CryptoStream classicCryptoStream, ZipEntry entry)
-		{
-			byte[] cryptbuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
-			ReadFully(classicCryptoStream, cryptbuffer);
-
-			if ((entry.Flags & (int)GeneralBitFlags.Descriptor) == 0) {
-				if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)(entry.Crc >> 24)) {
-					throw new ZipException("Invalid password");
-				}
-			}
-			else {
-				if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)((entry.DosTime >> 8) & 0xff)) {
-					throw new ZipException("Invalid password");
-				}
-			}
-		}
-
-		Stream CreateAndInitDecryptionStream(Stream baseStream, ZipEntry entry)
-		{
-			CryptoStream result = null;
-
-			if (entry.Version < ZipConstants.VERSION_STRONG_ENCRYPTION 
-				|| (entry.Flags & (int)GeneralBitFlags.StrongEncryption) == 0) {
-				PkzipClassicManaged classicManaged = new PkzipClassicManaged();
-
-				OnKeysRequired(entry.Name);
-				if (HaveKeys == false) {
-					throw new ZipException("No password available for encrypted stream");
-				}
-
-				result = new CryptoStream(baseStream, classicManaged.CreateDecryptor(key, iv), CryptoStreamMode.Read);
-				CheckClassicPassword(result, entry);
-			}
-			else {
-				throw new ZipException("Decryption method not supported");
-			}
-
-			return result;
-		}
-
-		void WriteEncryptionHeader(Stream stream, long crcValue)
-		{
-			byte[] cryptBuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
-			Random rnd = new Random();
-			rnd.NextBytes(cryptBuffer);
-			cryptBuffer[11] = (byte)(crcValue >> 24);
-			stream.Write(cryptBuffer, 0, cryptBuffer.Length);
-		}
-
-		Stream CreateAndInitEncryptionStream(Stream baseStream, ZipEntry entry)
-		{
-			CryptoStream result = null;
-			if (entry.Version < ZipConstants.VERSION_STRONG_ENCRYPTION 
-			    || (entry.Flags & (int)GeneralBitFlags.StrongEncryption) == 0) {
-				PkzipClassicManaged classicManaged = new PkzipClassicManaged();
-
-				OnKeysRequired(entry.Name);
-				if (HaveKeys == false) {
-					throw new ZipException("No password available for encrypted stream");
-				}
-
-				result = new CryptoStream(baseStream, classicManaged.CreateEncryptor(key, iv), CryptoStreamMode.Write);
-				if (entry.Crc < 0 || (entry.Flags & 8) != 0) {
-					WriteEncryptionHeader(result, entry.DosTime << 16);
-				}
-				else {
-					WriteEncryptionHeader(result, entry.Crc);
-				}
-			}
-			return result;
-		}
-
-		/// <summary>
-		/// Gets an output stream for the specified <see cref="ZipEntry"/>
-		/// </summary>
-		/// <param name="entry">The entry to get an outputstream for.</param>
-		/// <param name="fileName"></param>
-		/// <returns>The output stream obtained for the entry.</returns>
-		Stream GetOutputStream(ZipEntry entry, string fileName)
-		{
-			baseStream.Seek(0, SeekOrigin.End);
-			Stream result = File.OpenWrite(fileName);
-		
-			if (entry.IsCrypted == true)
-			{
-				result = CreateAndInitEncryptionStream(result, entry);
-			}
-		
-			switch (entry.CompressionMethod) 
-			{
-				case CompressionMethod.Stored:
-					break;
-		
-				case CompressionMethod.Deflated:
-					result = new DeflaterOutputStream(result);
-					break;
-					
-				default:
-					throw new ZipException("Unknown compression method " + entry.CompressionMethod);
-			}
-			return result;
-		}
-
-		/// <summary>
-		/// Creates an input stream reading the given zip entry as
-		/// uncompressed data.  Normally zip entry should be an entry
-		/// returned by GetEntry().
-		/// </summary>
-		/// <returns>
-		/// the input stream.
-		/// </returns>
-		/// <exception cref="InvalidOperationException">
-		/// The ZipFile has already been closed
-		/// </exception>
-		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
-		/// The compression method for the entry is unknown
-		/// </exception>
-		/// <exception cref="IndexOutOfRangeException">
-		/// The entry is not found in the ZipFile
-		/// </exception>
-		public Stream GetInputStream(ZipEntry entry)
-		{
-			if (entries == null) {
-				throw new InvalidOperationException("ZipFile has closed");
-			}
-			
-			int index = entry.ZipFileIndex;
-			if (index < 0 || index >= entries.Length || entries[index].Name != entry.Name) {
-				index = FindEntry(entry.Name, true);
-				if (index < 0) {
-					throw new IndexOutOfRangeException();
-				}
-			}
-			return GetInputStream(index);			
-		}
-		
-		/// <summary>
-		/// Creates an input stream reading a zip entry
-		/// </summary>
-		/// <param name="entryIndex">The index of the entry to obtain an input stream for.</param>
-		/// <returns>
-		/// An input stream.
-		/// </returns>
-		/// <exception cref="InvalidOperationException">
-		/// The ZipFile has already been closed
-		/// </exception>
-		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
-		/// The compression method for the entry is unknown
-		/// </exception>
-		/// <exception cref="IndexOutOfRangeException">
-		/// The entry is not found in the ZipFile
-		/// </exception>
-		public Stream GetInputStream(int entryIndex)
-		{
-			if (entries == null) {
-				throw new InvalidOperationException("ZipFile has closed");
-			}
-			
-			long start = CheckLocalHeader(entries[entryIndex]);
-			CompressionMethod method = entries[entryIndex].CompressionMethod;
-			Stream istr = new PartialInputStream(baseStream, start, entries[entryIndex].CompressedSize);
-
-			if (entries[entryIndex].IsCrypted == true) {
-				istr = CreateAndInitDecryptionStream(istr, entries[entryIndex]);
-				if (istr == null) {
-					throw new ZipException("Unable to decrypt this entry");
-				}
-			}
-
-			switch (method) {
-				case CompressionMethod.Stored:
-					return istr;
-				case CompressionMethod.Deflated:
-					return new InflaterInputStream(istr, new Inflater(true));
-				default:
-					throw new ZipException("Unsupported compression method " + method);
-			}
-		}
-
-		
-		/// <summary>
-		/// Gets the comment for the zip file.
-		/// </summary>
-		public string ZipFileComment {
-			get {
-				return comment;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the name of this zip file.
-		/// </summary>
-		public string Name {
-			get {
-				return name;
-			}
-		}
-		
-		/// <summary>
-		/// Gets the number of entries in this zip file.
-		/// </summary>
-		/// <exception cref="InvalidOperationException">
-		/// The Zip file has been closed.
-		/// </exception>
-		public int Size {
-			get {
-				if (entries != null) {
-					return entries.Length;
-				} else {
-					throw new InvalidOperationException("ZipFile is closed");
-				}
-			}
-		}
-		
-		class ZipEntryEnumeration : IEnumerator
-		{
-			ZipEntry[] array;
-			int ptr = -1;
-			
-			public ZipEntryEnumeration(ZipEntry[] arr)
-			{
-				array = arr;
-			}
-			
-			public object Current {
-				get {
-					return array[ptr];
-				}
-			}
-			
-			public void Reset()
-			{
-				ptr = -1;
-			}
-			
-			public bool MoveNext() 
-			{
-				return (++ptr < array.Length);
-			}
-		}
-		
-		class PartialInputStream : InflaterInputStream
-		{
-			Stream baseStream;
-			long filepos, end;
-			
-			public PartialInputStream(Stream baseStream, long start, long len) : base(baseStream)
-			{
-				this.baseStream = baseStream;
-				filepos = start;
-				end = start + len;
-			}
-			
-			public override int Available 
-			{
-				get {
-					long amount = end - filepos;
-					if (amount > Int32.MaxValue) {
-						return Int32.MaxValue;
-					}
-					
-					return (int) amount;
-				}
-			}
-
-			/// <summary>
-			/// Read a byte from this stream.
-			/// </summary>
-			/// <returns>Returns the byte read or -1 on end of stream.</returns>
-			public override int ReadByte()
-			{
-				if (filepos == end) {
-					return -1; //ok
-				}
-				
-				lock(baseStream) {
-					baseStream.Seek(filepos++, SeekOrigin.Begin);
-					return baseStream.ReadByte();
-				}
-			}
-			
-
-			/// <summary>
-			/// Close this partial input stream.
-			/// </summary>
-			/// <remarks>
-			/// The underlying stream is not closed.  Close the parent ZipFile class to do that.
-			/// </remarks>
-			public override void Close()
-			{
-				// Do nothing at all!
-			}
-			
-			public override int Read(byte[] b, int off, int len)
-			{
-				if (len > end - filepos) {
-					len = (int) (end - filepos);
-					if (len == 0) {
-						return 0;
-					}
-				}
-				
-				lock(baseStream) {
-					baseStream.Seek(filepos, SeekOrigin.Begin);
-					int count = baseStream.Read(b, off, len);
-					if (count > 0) {
-						filepos += len;
-					}
-					return count;
-				}
-			}
-			
-			public long SkipBytes(long amount)
-			{
-				if (amount < 0) {
-					throw new ArgumentOutOfRangeException();
-				}
-				if (amount > end - filepos) {
-					amount = end - filepos;
-				}
-				filepos += amount;
-				return amount;
-			}
-		}
-	}
-}
+// ZipFile.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.Security.Cryptography;
+using System.Collections;
+using System.IO;
+using System.Text;
+
+using ICSharpCode.SharpZipLib.Checksums;
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+using ICSharpCode.SharpZipLib.Zip.Compression;
+using ICSharpCode.SharpZipLib.Encryption;
+
+namespace ICSharpCode.SharpZipLib.Zip 
+{
+
+	/// <summary>
+	/// Arguments used with KeysRequiredEvent
+	/// </summary>
+	public class KeysRequiredEventArgs : EventArgs
+	{
+		string fileName;
+	
+		/// <summary>
+		/// Get the name of the file for which keys are required.
+		/// </summary>
+		public string FileName
+		{
+			get { return fileName; }
+		}
+	
+		byte[] key;
+		
+		/// <summary>
+		/// Get/set the key value
+		/// </summary>
+		public byte[] Key
+		{
+			get { return key; }
+			set { key = value; }
+		}
+	
+		/// <summary>
+		/// Initialise a new instance of <see cref="KeysRequiredEventArgs"></see>
+		/// </summary>
+		/// <param name="name">The name of the file for which keys are required.</param>
+		public KeysRequiredEventArgs(string name)
+		{
+			fileName = name;
+		}
+	
+		/// <summary>
+		/// Initialise a new instance of <see cref="KeysRequiredEventArgs"></see>
+		/// </summary>
+		/// <param name="name">The name of the file for which keys are required.</param>
+		/// <param name="keyValue">The current key value.</param>
+		public KeysRequiredEventArgs(string name, byte[] keyValue)
+		{
+			fileName = name;
+			key = keyValue;
+		}
+	}
+	
+	/// <summary>
+	/// This class represents a Zip archive.  You can ask for the contained
+	/// entries, or get an input stream for a file entry.  The entry is
+	/// automatically decompressed.
+	/// 
+	/// This class is thread safe:  You can open input streams for arbitrary
+	/// entries in different threads.
+	/// <br/>
+	/// <br/>Author of the original java version : Jochen Hoenicke
+	/// </summary>
+	/// <example>
+	/// <code>
+	/// using System;
+	/// using System.Text;
+	/// using System.Collections;
+	/// using System.IO;
+	/// 
+	/// using ICSharpCode.SharpZipLib.Zip;
+	/// 
+	/// class MainClass
+	/// {
+	/// 	static public void Main(string[] args)
+	/// 	{
+	/// 		ZipFile zFile = new ZipFile(args[0]);
+	/// 		Console.WriteLine("Listing of : " + zFile.Name);
+	/// 		Console.WriteLine("");
+	/// 		Console.WriteLine("Raw Size    Size      Date     Time     Name");
+	/// 		Console.WriteLine("--------  --------  --------  ------  ---------");
+	/// 		foreach (ZipEntry e in zFile) {
+	/// 			DateTime d = e.DateTime;
+	/// 			Console.WriteLine("{0, -10}{1, -10}{2}  {3}   {4}", e.Size, e.CompressedSize,
+	/// 			                                                    d.ToString("dd-MM-yy"), d.ToString("t"),
+	/// 			                                                    e.Name);
+	/// 		}
+	/// 	}
+	/// }
+	/// </code>
+	/// </example>
+	public class ZipFile : IEnumerable
+	{
+		string     name;
+		string     comment;
+		Stream     baseStream;
+		bool       isStreamOwner = true;
+		long       offsetOfFirstEntry = 0;
+		ZipEntry[] entries;
+		
+		#region KeyHandling
+		
+		/// <summary>
+		/// Delegate for handling keys/password setting during compresion/decompression.
+		/// </summary>
+		public delegate void KeysRequiredEventHandler(
+			object sender,
+			KeysRequiredEventArgs e
+		);
+
+		/// <summary>
+		/// Event handler for handling encryption keys.
+		/// </summary>
+		public KeysRequiredEventHandler KeysRequired;
+
+		/// <summary>
+		/// Handles getting of encryption keys when required.
+		/// </summary>
+		/// <param name="fileName">The file for which encryptino keys are required.</param>
+		void OnKeysRequired(string fileName)
+		{
+			if (KeysRequired != null) {
+				KeysRequiredEventArgs krea = new KeysRequiredEventArgs(fileName, key);
+				KeysRequired(this, krea);
+				key = krea.Key;
+			}
+		}
+		
+		byte[] key = null;
+		
+		/// <summary>
+		/// Get/set the encryption key value.
+		/// </summary>
+		byte[] Key
+		{
+			get { return key; }
+			set { key = value; }
+		}
+		
+		/// <summary>
+		/// Password to be used for encrypting/decrypting files.
+		/// </summary>
+		/// <remarks>Set to null if no password is required.</remarks>
+		public string Password
+		{
+			set 
+			{
+				if ( (value == null) || (value.Length == 0) ) {
+					key = null;
+				}
+				else {
+					key = PkzipClassic.GenerateKeys(Encoding.ASCII.GetBytes(value));
+				}
+			}
+		}
+		
+		byte[] iv = null;
+		
+		bool HaveKeys
+		{
+		 get { return key != null; }
+		}
+		#endregion
+	
+		/// <summary>
+		/// Opens a Zip file with the given name for reading.
+		/// </summary>
+		/// <exception cref="IOException">
+		/// An i/o error occurs
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// The file doesn't contain a valid zip archive.
+		/// </exception>
+		public ZipFile(string name)
+		{
+			this.name = name;
+			this.baseStream = File.OpenRead(name);
+			try {
+				ReadEntries();
+			}
+			catch {
+				Close();
+				throw;
+			}
+		}
+		
+		/// <summary>
+		/// Opens a Zip file reading the given FileStream
+		/// </summary>
+		/// <exception cref="IOException">
+		/// An i/o error occurs.
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// The file doesn't contain a valid zip archive.
+		/// </exception>
+		public ZipFile(FileStream file)
+		{
+			this.baseStream  = file;
+			this.name = file.Name;
+			try {
+				ReadEntries();
+			}
+			catch {
+				Close();
+				throw;
+			}
+		}
+		
+		/// <summary>
+		/// Opens a Zip file reading the given Stream
+		/// </summary>
+		/// <exception cref="IOException">
+		/// An i/o error occurs
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// The file doesn't contain a valid zip archive.<br/>
+		/// The stream provided cannot seek
+		/// </exception>
+		public ZipFile(Stream baseStream)
+		{
+			this.baseStream  = baseStream;
+			this.name = null;
+			try {
+				ReadEntries();
+			}
+			catch {
+				Close();
+				throw;
+			}
+		}
+		
+		
+		/// <summary>
+		/// Get/set a flag indicating if the underlying stream is owned by the ZipFile instance.
+		/// If the flag is true then the stream will be closed when <see cref="Close">Close</see> is called.
+		/// </summary>
+		/// <remarks>
+		/// The default value is true in all cases.
+		/// </remarks>
+		bool IsStreamOwner
+		{
+			get { return isStreamOwner; }
+			set { isStreamOwner = value; }
+		}
+		
+		/// <summary>
+		/// Read an unsigned short in little endian byte order.
+		/// </summary>
+		/// <returns>Returns the value read.</returns>
+		/// <exception cref="IOException">
+		/// An i/o error occurs.
+		/// </exception>
+		/// <exception cref="EndOfStreamException">
+		/// The file ends prematurely
+		/// </exception>
+		int ReadLeShort()
+		{
+			return baseStream.ReadByte() | baseStream.ReadByte() << 8;
+		}
+		
+		/// <summary>
+		/// Read an int in little endian byte order.
+		/// </summary>
+		/// <returns>Returns the value read.</returns>
+		/// <exception cref="IOException">
+		/// An i/o error occurs.
+		/// </exception>
+		/// <exception cref="System.IO.EndOfStreamException">
+		/// The file ends prematurely
+		/// </exception>
+		int ReadLeInt()
+		{
+			return ReadLeShort() | ReadLeShort() << 16;
+		}
+		
+		// NOTE this returns the offset of the first byte after the signature.
+		long LocateBlockWithSignature(int signature, long endLocation, int minimumBlockSize, int maximumVariableData)
+		{
+			long pos = endLocation - minimumBlockSize;
+			if (pos < 0) {
+				return -1;
+			}
+		
+			long giveUpMarker = Math.Max(pos - maximumVariableData, 0);
+		
+			// TODO: this loop could be optimised for speed.
+			do 
+			{
+				if (pos < giveUpMarker) {
+					return -1;
+				}
+				baseStream.Seek(pos--, SeekOrigin.Begin);
+			} while (ReadLeInt() != signature);
+	
+			return baseStream.Position;
+		}
+		
+		/// <summary>
+		/// Search for and read the central directory of a zip file filling the entries
+		/// array.  This is called exactly once by the constructors.
+		/// </summary>
+		/// <exception cref="System.IO.IOException">
+		/// An i/o error occurs.
+		/// </exception>
+		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
+		/// The central directory is malformed or cannot be found
+		/// </exception>
+		void ReadEntries()
+		{
+			// Search for the End Of Central Directory.  When a zip comment is
+			// present the directory may start earlier.
+			// 
+			// TODO: The search is limited to 64K which is the maximum size of a trailing comment field to aid speed.
+			// This should be compatible with both SFX and ZIP files but has only been tested for Zip files
+			// Need to confirm this is valid in all cases.
+			// Could also speed this up by reading memory in larger blocks.			
+
+			if (baseStream.CanSeek == false) {
+				throw new ZipException("ZipFile stream must be seekable");
+			}
+			
+			long locatedCentralDirOffset = LocateBlockWithSignature(ZipConstants.ENDSIG, baseStream.Length, ZipConstants.ENDHDR, 0xffff);
+			if (locatedCentralDirOffset < 0) {
+				throw new ZipException("Cannot find central directory");
+			}
+
+			int thisDiskNumber            = ReadLeShort();
+			int startCentralDirDisk       = ReadLeShort();
+			int entriesForThisDisk        = ReadLeShort();
+			int entriesForWholeCentralDir = ReadLeShort();
+			int centralDirSize            = ReadLeInt();
+			int offsetOfCentralDir        = ReadLeInt();
+			int commentSize               = ReadLeShort();
+			
+			byte[] zipComment = new byte[commentSize]; 
+			baseStream.Read(zipComment, 0, zipComment.Length); 
+			comment = ZipConstants.ConvertToString(zipComment); 
+			
+/* Its seems possible that this is too strict, more digging required.
+			if (thisDiskNumber != 0 || startCentralDirDisk != 0 || entriesForThisDisk != entriesForWholeCentralDir) {
+				throw new ZipException("Spanned archives are not currently handled");
+			}
+*/
+
+			entries = new ZipEntry[entriesForWholeCentralDir];
+			
+			// SFX support, find the offset of the first entry vis the start of the stream
+			// This applies to Zip files that are appended to the end of the SFX stub.
+			// Zip files created by some archivers have the offsets altered to reflect the true offsets
+			// and so dont require any adjustment here...
+			if (offsetOfCentralDir < locatedCentralDirOffset - (4 + centralDirSize)) {
+				offsetOfFirstEntry = locatedCentralDirOffset - (4 + centralDirSize + offsetOfCentralDir);
+				if (offsetOfFirstEntry <= 0) {
+					throw new ZipException("Invalid SFX file");
+				}
+			}
+
+			baseStream.Seek(offsetOfFirstEntry + offsetOfCentralDir, SeekOrigin.Begin);
+			
+			for (int i = 0; i < entriesForThisDisk; i++) {
+				if (ReadLeInt() != ZipConstants.CENSIG) {
+					throw new ZipException("Wrong Central Directory signature");
+				}
+				
+				int versionMadeBy      = ReadLeShort();
+				int versionToExtract   = ReadLeShort();
+				int bitFlags           = ReadLeShort();
+				int method             = ReadLeShort();
+				int dostime            = ReadLeInt();
+				int crc                = ReadLeInt();
+				int csize              = ReadLeInt();
+				int size               = ReadLeInt();
+				int nameLen            = ReadLeShort();
+				int extraLen           = ReadLeShort();
+				int commentLen         = ReadLeShort();
+				
+				int diskStartNo        = ReadLeShort();  // Not currently used
+				int internalAttributes = ReadLeShort();  // Not currently used
+
+				int externalAttributes = ReadLeInt();
+				int offset             = ReadLeInt();
+				
+				byte[] buffer = new byte[Math.Max(nameLen, commentLen)];
+				
+				baseStream.Read(buffer, 0, nameLen);
+				string name = ZipConstants.ConvertToString(buffer, nameLen);
+				
+				ZipEntry entry = new ZipEntry(name, versionToExtract, versionMadeBy);
+				entry.CompressionMethod = (CompressionMethod)method;
+				entry.Crc = crc & 0xffffffffL;
+				entry.Size = size & 0xffffffffL;
+				entry.CompressedSize = csize & 0xffffffffL;
+				entry.Flags = bitFlags;
+				entry.DosTime = (uint)dostime;
+				
+				if (extraLen > 0) {
+					byte[] extra = new byte[extraLen];
+					baseStream.Read(extra, 0, extraLen);
+					entry.ExtraData = extra;
+				}
+				
+				if (commentLen > 0) {
+					baseStream.Read(buffer, 0, commentLen);
+					entry.Comment = ZipConstants.ConvertToString(buffer, commentLen);
+				}
+				
+				entry.ZipFileIndex           = i;
+				entry.Offset                 = offset;
+				entry.ExternalFileAttributes = externalAttributes;
+				
+				entries[i] = entry;
+			}
+		}
+		
+		/// <summary>
+		/// Closes the ZipFile.  If the stream is <see cref="IsStreamOwner">owned</see> then this also closes the underlying input stream.
+		/// Once closed, no further instance methods should be called.
+		/// </summary>
+		/// <exception cref="System.IO.IOException">
+		/// An i/o error occurs.
+		/// </exception>
+		public void Close()
+		{
+			entries = null;
+			if ( isStreamOwner ) {
+				lock(baseStream) {
+					baseStream.Close();
+				}
+			}
+		}
+		
+		/// <summary>
+		/// Returns an enumerator for the Zip entries in this Zip file.
+		/// </summary>
+		/// <exception cref="InvalidOperationException">
+		/// The Zip file has been closed.
+		/// </exception>
+		public IEnumerator GetEnumerator()
+		{
+			if (entries == null) {
+				throw new InvalidOperationException("ZipFile has closed");
+			}
+			
+			return new ZipEntryEnumeration(entries);
+		}
+		
+		/// <summary>
+		/// Return the index of the entry with a matching name
+		/// </summary>
+		/// <param name="name">Entry name to find</param>
+		/// <param name="ignoreCase">If true the comparison is case insensitive</param>
+		/// <returns>The index position of the matching entry or -1 if not found</returns>
+		/// <exception cref="InvalidOperationException">
+		/// The Zip file has been closed.
+		/// </exception>
+		public int FindEntry(string name, bool ignoreCase)
+		{
+			if (entries == null) {
+				throw new InvalidOperationException("ZipFile has been closed");
+			}
+			
+			for (int i = 0; i < entries.Length; i++) {
+				if (string.Compare(name, entries[i].Name, ignoreCase) == 0) {
+					return i;
+				}
+			}
+			return -1;
+		}
+		
+		/// <summary>
+		/// Indexer property for ZipEntries
+		/// </summary>
+		[System.Runtime.CompilerServices.IndexerNameAttribute("EntryByIndex")]
+		public ZipEntry this[int index] {
+			get {
+				return (ZipEntry) entries[index].Clone();	
+			}
+		}
+		
+		/// <summary>
+		/// Searches for a zip entry in this archive with the given name.
+		/// String comparisons are case insensitive
+		/// </summary>
+		/// <param name="name">
+		/// The name to find. May contain directory components separated by slashes ('/').
+		/// </param>
+		/// <returns>
+		/// The zip entry, or null if no entry with that name exists.
+		/// </returns>
+		/// <exception cref="InvalidOperationException">
+		/// The Zip file has been closed.
+		/// </exception>
+		public ZipEntry GetEntry(string name)
+		{
+			if (entries == null) {
+				throw new InvalidOperationException("ZipFile has been closed");
+			}
+			
+			int index = FindEntry(name, true);
+			return index >= 0 ? (ZipEntry) entries[index].Clone() : null;
+		}
+		/// <summary>
+		/// Test an archive for integrity/validity
+		/// </summary>
+		/// <param name="testData">Perform low level data Crc check</param>
+		/// <returns>true iff the test passes, false otherwise</returns>
+		public bool TestArchive(bool testData)
+		{
+			bool result = true;
+			try {
+				for (int i = 0; i < Size; ++i) {
+					long offset = TestLocalHeader(this[i], true, true);
+					if (testData) {
+						Stream entryStream = this.GetInputStream(this[i]);
+						// TODO: events for updating info, recording errors etc
+						Crc32 crc = new Crc32();
+						byte[] buffer = new byte[4096];
+						int bytesRead;
+						while ((bytesRead = entryStream.Read(buffer, 0, buffer.Length)) > 0) {
+							crc.Update(buffer, 0, bytesRead);
+						}
+	
+						if (this[i].Crc != crc.Value) {
+							result = false;
+							// TODO: Event here....
+							break; // Do all entries giving more info at some point?
+						}
+					}
+				}
+			}
+			catch {
+				result = false;
+			}
+			return result;
+		}
+	
+		/// <summary>
+		/// Test the local header against that provided from the central directory
+		/// </summary>
+		/// <param name="entry">
+		/// The entry to test against
+		/// </param>
+		/// <param name="fullTest">
+		/// If true be extremely picky about the testing, otherwise be relaxed
+		/// </param>
+		/// <param name="extractTest">
+		/// Apply extra testing to see if the entry can be extracted by the library
+		/// </param>
+		/// <returns>The offset of the entries data in the file</returns>
+		long TestLocalHeader(ZipEntry entry, bool fullTest, bool extractTest)
+		{
+			lock(baseStream) 
+			{
+				baseStream.Seek(offsetOfFirstEntry + entry.Offset, SeekOrigin.Begin);
+				if (ReadLeInt() != ZipConstants.LOCSIG) {
+					throw new ZipException("Wrong local header signature");
+				}
+				
+				short shortValue = (short)ReadLeShort();	 // version required to extract
+				if (extractTest == true && shortValue > ZipConstants.VERSION_MADE_BY) {
+					throw new ZipException(string.Format("Version required to extract this entry not supported ({0})", shortValue));
+				}
+
+				short localFlags = (short)ReadLeShort();				  // general purpose bit flags.
+				if (extractTest == true) {
+					if ((localFlags & (int)(GeneralBitFlags.Patched | GeneralBitFlags.StrongEncryption | GeneralBitFlags.EnhancedCompress | GeneralBitFlags.HeaderMasked)) != 0) {
+						throw new ZipException("The library doesnt support the zip version required to extract this entry");
+					}
+				}
+					
+				if (localFlags != entry.Flags) {
+				   throw new ZipException("Central header/local header flags mismatch");
+				}
+
+				if (entry.CompressionMethod != (CompressionMethod)ReadLeShort()) {
+				   throw new ZipException("Central header/local header compression method mismatch");
+				}
+	
+				shortValue = (short)ReadLeShort();  // file time
+				shortValue = (short)ReadLeShort();  // file date
+	
+				int intValue = ReadLeInt();         // Crc
+	
+				if (fullTest) {
+					if ((localFlags & (int)GeneralBitFlags.Descriptor) == 0) {
+						if (intValue != (int)entry.Crc) 
+							throw new ZipException("Central header/local header crc mismatch");
+					}
+				}
+	
+				intValue = ReadLeInt();	   // compressed Size
+				intValue = ReadLeInt();	   // uncompressed size
+	
+				// TODO: make test more correct...  can't compare lengths as was done originally as this can fail for MBCS strings
+				// Assuming a code page at this point is not valid?  Best is to store the name length in the ZipEntry probably
+				int storedNameLength = ReadLeShort();
+				if (entry.Name.Length > storedNameLength) {
+					throw new ZipException("file name length mismatch");
+				}
+					
+				int extraLen = storedNameLength + ReadLeShort();
+				return offsetOfFirstEntry + entry.Offset + ZipConstants.LOCHDR + extraLen;
+			}
+		}
+		
+		/// <summary>
+		/// Checks, if the local header of the entry at index i matches the
+		/// central directory, and returns the offset to the data.
+		/// </summary>
+		/// <returns>
+		/// The start offset of the (compressed) data.
+		/// </returns>
+		/// <exception cref="System.IO.EndOfStreamException">
+		/// The stream ends prematurely
+		/// </exception>
+		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
+		/// The local header signature is invalid, the entry and central header file name lengths are different
+		/// or the local and entry compression methods dont match
+		/// </exception>
+		long CheckLocalHeader(ZipEntry entry)
+		{
+			return TestLocalHeader(entry, false, true);
+		}
+		
+		// Refactor this, its done elsewhere as well
+		void ReadFully(Stream s, byte[] outBuf)
+		{
+			int off = 0;
+			int len = outBuf.Length;
+			while (len > 0) {
+				int count = s.Read(outBuf, off, len);
+				if (count <= 0) {
+					throw new ZipException("Unexpected EOF"); 
+				}
+				off += count;
+				len -= count;
+			}
+		}
+
+		void CheckClassicPassword(CryptoStream classicCryptoStream, ZipEntry entry)
+		{
+			byte[] cryptbuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
+			ReadFully(classicCryptoStream, cryptbuffer);
+
+			if ((entry.Flags & (int)GeneralBitFlags.Descriptor) == 0) {
+				if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)(entry.Crc >> 24)) {
+					throw new ZipException("Invalid password");
+				}
+			}
+			else {
+				if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)((entry.DosTime >> 8) & 0xff)) {
+					throw new ZipException("Invalid password");
+				}
+			}
+		}
+
+		Stream CreateAndInitDecryptionStream(Stream baseStream, ZipEntry entry)
+		{
+			CryptoStream result = null;
+
+			if (entry.Version < ZipConstants.VERSION_STRONG_ENCRYPTION 
+				|| (entry.Flags & (int)GeneralBitFlags.StrongEncryption) == 0) {
+				PkzipClassicManaged classicManaged = new PkzipClassicManaged();
+
+				OnKeysRequired(entry.Name);
+				if (HaveKeys == false) {
+					throw new ZipException("No password available for encrypted stream");
+				}
+
+				result = new CryptoStream(baseStream, classicManaged.CreateDecryptor(key, iv), CryptoStreamMode.Read);
+				CheckClassicPassword(result, entry);
+			}
+			else {
+				throw new ZipException("Decryption method not supported");
+			}
+
+			return result;
+		}
+
+		void WriteEncryptionHeader(Stream stream, long crcValue)
+		{
+			byte[] cryptBuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
+			Random rnd = new Random();
+			rnd.NextBytes(cryptBuffer);
+			cryptBuffer[11] = (byte)(crcValue >> 24);
+			stream.Write(cryptBuffer, 0, cryptBuffer.Length);
+		}
+
+		Stream CreateAndInitEncryptionStream(Stream baseStream, ZipEntry entry)
+		{
+			CryptoStream result = null;
+			if (entry.Version < ZipConstants.VERSION_STRONG_ENCRYPTION 
+			    || (entry.Flags & (int)GeneralBitFlags.StrongEncryption) == 0) {
+				PkzipClassicManaged classicManaged = new PkzipClassicManaged();
+
+				OnKeysRequired(entry.Name);
+				if (HaveKeys == false) {
+					throw new ZipException("No password available for encrypted stream");
+				}
+
+				result = new CryptoStream(baseStream, classicManaged.CreateEncryptor(key, iv), CryptoStreamMode.Write);
+				if (entry.Crc < 0 || (entry.Flags & 8) != 0) {
+					WriteEncryptionHeader(result, entry.DosTime << 16);
+				}
+				else {
+					WriteEncryptionHeader(result, entry.Crc);
+				}
+			}
+			return result;
+		}
+
+		/// <summary>
+		/// Gets an output stream for the specified <see cref="ZipEntry"/>
+		/// </summary>
+		/// <param name="entry">The entry to get an outputstream for.</param>
+		/// <param name="fileName"></param>
+		/// <returns>The output stream obtained for the entry.</returns>
+		Stream GetOutputStream(ZipEntry entry, string fileName)
+		{
+			baseStream.Seek(0, SeekOrigin.End);
+			Stream result = File.OpenWrite(fileName);
+		
+			if (entry.IsCrypted == true)
+			{
+				result = CreateAndInitEncryptionStream(result, entry);
+			}
+		
+			switch (entry.CompressionMethod) 
+			{
+				case CompressionMethod.Stored:
+					break;
+		
+				case CompressionMethod.Deflated:
+					result = new DeflaterOutputStream(result);
+					break;
+					
+				default:
+					throw new ZipException("Unknown compression method " + entry.CompressionMethod);
+			}
+			return result;
+		}
+
+		/// <summary>
+		/// Creates an input stream reading the given zip entry as
+		/// uncompressed data.  Normally zip entry should be an entry
+		/// returned by GetEntry().
+		/// </summary>
+		/// <returns>
+		/// the input stream.
+		/// </returns>
+		/// <exception cref="InvalidOperationException">
+		/// The ZipFile has already been closed
+		/// </exception>
+		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
+		/// The compression method for the entry is unknown
+		/// </exception>
+		/// <exception cref="IndexOutOfRangeException">
+		/// The entry is not found in the ZipFile
+		/// </exception>
+		public Stream GetInputStream(ZipEntry entry)
+		{
+			if (entries == null) {
+				throw new InvalidOperationException("ZipFile has closed");
+			}
+			
+			int index = entry.ZipFileIndex;
+			if (index < 0 || index >= entries.Length || entries[index].Name != entry.Name) {
+				index = FindEntry(entry.Name, true);
+				if (index < 0) {
+					throw new IndexOutOfRangeException();
+				}
+			}
+			return GetInputStream(index);			
+		}
+		
+		/// <summary>
+		/// Creates an input stream reading a zip entry
+		/// </summary>
+		/// <param name="entryIndex">The index of the entry to obtain an input stream for.</param>
+		/// <returns>
+		/// An input stream.
+		/// </returns>
+		/// <exception cref="InvalidOperationException">
+		/// The ZipFile has already been closed
+		/// </exception>
+		/// <exception cref="ICSharpCode.SharpZipLib.Zip.ZipException">
+		/// The compression method for the entry is unknown
+		/// </exception>
+		/// <exception cref="IndexOutOfRangeException">
+		/// The entry is not found in the ZipFile
+		/// </exception>
+		public Stream GetInputStream(int entryIndex)
+		{
+			if (entries == null) {
+				throw new InvalidOperationException("ZipFile has closed");
+			}
+			
+			long start = CheckLocalHeader(entries[entryIndex]);
+			CompressionMethod method = entries[entryIndex].CompressionMethod;
+			Stream istr = new PartialInputStream(baseStream, start, entries[entryIndex].CompressedSize);
+
+			if (entries[entryIndex].IsCrypted == true) {
+				istr = CreateAndInitDecryptionStream(istr, entries[entryIndex]);
+				if (istr == null) {
+					throw new ZipException("Unable to decrypt this entry");
+				}
+			}
+
+			switch (method) {
+				case CompressionMethod.Stored:
+					return istr;
+				case CompressionMethod.Deflated:
+					return new InflaterInputStream(istr, new Inflater(true));
+				default:
+					throw new ZipException("Unsupported compression method " + method);
+			}
+		}
+
+		
+		/// <summary>
+		/// Gets the comment for the zip file.
+		/// </summary>
+		public string ZipFileComment {
+			get {
+				return comment;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the name of this zip file.
+		/// </summary>
+		public string Name {
+			get {
+				return name;
+			}
+		}
+		
+		/// <summary>
+		/// Gets the number of entries in this zip file.
+		/// </summary>
+		/// <exception cref="InvalidOperationException">
+		/// The Zip file has been closed.
+		/// </exception>
+		public int Size {
+			get {
+				if (entries != null) {
+					return entries.Length;
+				} else {
+					throw new InvalidOperationException("ZipFile is closed");
+				}
+			}
+		}
+		
+		class ZipEntryEnumeration : IEnumerator
+		{
+			ZipEntry[] array;
+			int ptr = -1;
+			
+			public ZipEntryEnumeration(ZipEntry[] arr)
+			{
+				array = arr;
+			}
+			
+			public object Current {
+				get {
+					return array[ptr];
+				}
+			}
+			
+			public void Reset()
+			{
+				ptr = -1;
+			}
+			
+			public bool MoveNext() 
+			{
+				return (++ptr < array.Length);
+			}
+		}
+		
+		class PartialInputStream : InflaterInputStream
+		{
+			Stream baseStream;
+			long filepos, end;
+			
+			public PartialInputStream(Stream baseStream, long start, long len) : base(baseStream)
+			{
+				this.baseStream = baseStream;
+				filepos = start;
+				end = start + len;
+			}
+			
+			public override int Available 
+			{
+				get {
+					long amount = end - filepos;
+					if (amount > Int32.MaxValue) {
+						return Int32.MaxValue;
+					}
+					
+					return (int) amount;
+				}
+			}
+
+			/// <summary>
+			/// Read a byte from this stream.
+			/// </summary>
+			/// <returns>Returns the byte read or -1 on end of stream.</returns>
+			public override int ReadByte()
+			{
+				if (filepos == end) {
+					return -1; //ok
+				}
+				
+				lock(baseStream) {
+					baseStream.Seek(filepos++, SeekOrigin.Begin);
+					return baseStream.ReadByte();
+				}
+			}
+			
+
+			/// <summary>
+			/// Close this partial input stream.
+			/// </summary>
+			/// <remarks>
+			/// The underlying stream is not closed.  Close the parent ZipFile class to do that.
+			/// </remarks>
+			public override void Close()
+			{
+				// Do nothing at all!
+			}
+			
+			public override int Read(byte[] b, int off, int len)
+			{
+				if (len > end - filepos) {
+					len = (int) (end - filepos);
+					if (len == 0) {
+						return 0;
+					}
+				}
+				
+				lock(baseStream) {
+					baseStream.Seek(filepos, SeekOrigin.Begin);
+					int count = baseStream.Read(b, off, len);
+					if (count > 0) {
+						filepos += len;
+					}
+					return count;
+				}
+			}
+			
+			public long SkipBytes(long amount)
+			{
+				if (amount < 0) {
+					throw new ArgumentOutOfRangeException();
+				}
+				if (amount > end - filepos) {
+					amount = end - filepos;
+				}
+				filepos += amount;
+				return amount;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipInputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipInputStream.cs
@@ -1,522 +1,522 @@
-// ZipInputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.Text;
-using System.IO;
-
-using ICSharpCode.SharpZipLib.Checksums;
-using ICSharpCode.SharpZipLib.Zip.Compression;
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-using ICSharpCode.SharpZipLib.Encryption;
-
-namespace ICSharpCode.SharpZipLib.Zip 
-{
-	/// <summary>
-	/// This is an InflaterInputStream that reads the files baseInputStream an zip archive
-	/// one after another.  It has a special method to get the zip entry of
-	/// the next file.  The zip entry contains information about the file name
-	/// size, compressed size, Crc, etc.
-	/// It includes support for Stored and Deflated entries.
-	/// <br/>
-	/// <br/>Author of the original java version : Jochen Hoenicke
-	/// </summary>
-	/// 
-	/// <example> This sample shows how to read a zip file
-	/// <code lang="C#">
-	/// using System;
-	/// using System.Text;
-	/// using System.IO;
-	/// 
-	/// using ICSharpCode.SharpZipLib.Zip;
-	/// 
-	/// class MainClass
-	/// {
-	/// 	public static void Main(string[] args)
-	/// 	{
-	/// 		ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]));
-	/// 		
-	/// 		ZipEntry theEntry;
-	/// 		while ((theEntry = s.GetNextEntry()) != null) {
-	/// 			int size = 2048;
-	/// 			byte[] data = new byte[2048];
-	/// 			
-	/// 			Console.Write("Show contents (y/n) ?");
-	/// 			if (Console.ReadLine() == "y") {
-	/// 				while (true) {
-	/// 					size = s.Read(data, 0, data.Length);
-	/// 					if (size > 0) {
-	/// 						Console.Write(new ASCIIEncoding().GetString(data, 0, size));
-	/// 					} else {
-	/// 						break;
-	/// 					}
-	/// 				}
-	/// 			}
-	/// 		}
-	/// 		s.Close();
-	/// 	}
-	/// }	
-	/// </code>
-	/// </example>
-	public class ZipInputStream : InflaterInputStream
-	{
-		// Delegate for reading bytes from a stream.
-		delegate int ReaderDelegate(byte[] b, int offset, int length);
-
-		/// <summary>
-		/// The current reader this instance.
-		/// </summary>
-		ReaderDelegate internalReader;
-
-		Crc32 crc = new Crc32();
-		ZipEntry entry = null;
-		
-		long size;
-		int method;
-		int flags;
-		string password = null;
-
-		/// <summary>
-		/// Creates a new Zip input stream, for reading a zip archive.
-		/// </summary>
-		public ZipInputStream(Stream baseInputStream) : base(baseInputStream, new Inflater(true))
-		{
-			internalReader = new ReaderDelegate(InitialRead);
-		}
-
-		
-		/// <summary>
-		/// Optional password used for encryption when non-null
-		/// </summary>
-		public string Password 
-		{
-			get {
-				return password;
-			}
-			set {
-				password = value;
-			}
-		}
-		
-
-		/// <summary>
-		/// Gets a value indicating if the entry can be decompressed
-		/// </summary>
-		/// <remarks>
-		/// The entry can only be decompressed if the library supports the zip features required to extract it.
-		/// See the <see cref="ZipEntry.Version">ZipEntry Version</see> property for more details.
-		/// </remarks>
-		public bool CanDecompressEntry {
-			get {
-				return entry != null && entry.Version <= ZipConstants.VERSION_MADE_BY;
-			}
-		}
-		
-		/// <summary>
-		/// Advances to the next entry in the archive
-		/// </summary>
-		/// <returns>
-		/// The next <see cref="ZipEntry">entry</see> in the archive or null if there are no more entries.
-		/// </returns>
-		/// <remarks>
-		/// If the previous entry is still open <see cref="CloseEntry">CloseEntry</see> is called.
-		/// </remarks>
-		/// <exception cref="InvalidOperationException">
-		/// Input stream is closed
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// Password is not set, password is invalid, compression method is invalid, 
-		/// version required to extract is not supported
-		/// </exception>
-		public ZipEntry GetNextEntry()
-		{
-			if (crc == null) {
-				throw new InvalidOperationException("Closed.");
-			}
-			
-			if (entry != null) {
-				CloseEntry();
-			}
-
-			int header = inputBuffer.ReadLeInt();
-
-			if (header == ZipConstants.CENSIG || 
-			    header == ZipConstants.ENDSIG || 
-			    header == ZipConstants.CENDIGITALSIG || 
-			    header == ZipConstants.CENSIG64) {
-			    // No more individual entries exist
-				Close();
-				return null;
-			}
-
-			// -jr- 07-Dec-2003 Ignore spanning temporary signatures if found
-			// SPANNINGSIG is same as descriptor signature and is untested as yet.
-			if (header == ZipConstants.SPANTEMPSIG || header == ZipConstants.SPANNINGSIG) {
-				header = inputBuffer.ReadLeInt();
-			}
-			
-			if (header != ZipConstants.LOCSIG) {
-				throw new ZipException("Wrong Local header signature: 0x" + String.Format("{0:X}", header));
-			}
-			
-			short versionRequiredToExtract = (short)inputBuffer.ReadLeShort();
-			
-			flags          = inputBuffer.ReadLeShort();
-			method         = inputBuffer.ReadLeShort();
-			uint dostime   = (uint)inputBuffer.ReadLeInt();
-			int crc2       = inputBuffer.ReadLeInt();
-			csize          = inputBuffer.ReadLeInt();
-			size           = inputBuffer.ReadLeInt();
-			int nameLen    = inputBuffer.ReadLeShort();
-			int extraLen   = inputBuffer.ReadLeShort();
-			
-			bool isCrypted = (flags & 1) == 1;
-			
-			byte[] buffer = new byte[nameLen];
-			inputBuffer.ReadRawBuffer(buffer);
-			
-			string name = ZipConstants.ConvertToString(buffer);
-			
-			entry = new ZipEntry(name, versionRequiredToExtract);
-			entry.Flags = flags;
-			
-			if (method == (int)CompressionMethod.Stored && (!isCrypted && csize != size || (isCrypted && csize - ZipConstants.CRYPTO_HEADER_SIZE != size))) {
-				throw new ZipException("Stored, but compressed != uncompressed");
-			}
-			
-			if (method != (int)CompressionMethod.Stored && method != (int)CompressionMethod.Deflated) {
-				throw new ZipException("Unknown compression method " + method);
-			}
-			
-			entry.CompressionMethod = (CompressionMethod)method;
-			
-			if ((flags & 8) == 0) {
-				entry.Crc  = crc2 & 0xFFFFFFFFL;
-				entry.Size = size & 0xFFFFFFFFL;
-				entry.CompressedSize = csize & 0xFFFFFFFFL;
-			} else {
-				
-				// This allows for GNU, WinZip and possibly other archives, the PKZIP spec says these are zero
-				// under these circumstances.
-				if (crc2 != 0) {
-					entry.Crc = crc2 & 0xFFFFFFFFL;
-				}
-				
-				if (size != 0) {
-					entry.Size = size & 0xFFFFFFFFL;
-				}
-				if (csize != 0) {
-					entry.CompressedSize = csize & 0xFFFFFFFFL;
-				}
-			}
-			
-			entry.DosTime = dostime;
-			
-			if (extraLen > 0) {
-				byte[] extra = new byte[extraLen];
-				inputBuffer.ReadRawBuffer(extra);
-				entry.ExtraData = extra;
-			}
-
-			internalReader = new ReaderDelegate(InitialRead);
-			return entry;
-		}
-		
-		// Read data descriptor at the end of compressed data.
-		void ReadDataDescriptor()
-		{
-			if (inputBuffer.ReadLeInt() != ZipConstants.EXTSIG) {
-				throw new ZipException("Data descriptor signature not found");
-			}
-			
-			entry.Crc = inputBuffer.ReadLeInt() & 0xFFFFFFFFL;
-			csize = inputBuffer.ReadLeInt();
-			size = inputBuffer.ReadLeInt();
-			
-			entry.Size = size & 0xFFFFFFFFL;
-			entry.CompressedSize = csize & 0xFFFFFFFFL;
-		}
-		
-		/// <summary>
-		/// Closes the current zip entry and moves to the next one.
-		/// </summary>
-		/// <exception cref="InvalidOperationException">
-		/// The stream is closed
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// The Zip stream ends early
-		/// </exception>
-		public void CloseEntry()
-		{
-			if (crc == null) {
-				throw new InvalidOperationException("Closed.");
-			}
-			
-			if (entry == null) {
-				return;
-			}
-			
-			if (method == (int)CompressionMethod.Deflated) {
-				if ((flags & 8) != 0) {
-					// We don't know how much we must skip, read until end.
-					byte[] tmp = new byte[2048];
-					while (Read(tmp, 0, tmp.Length) > 0)
-						;
-					// read will close this entry
-					return;
-				}
-				csize -= inf.TotalIn;
-				inputBuffer.Available -= inf.RemainingInput;	
-			}
-
-			if (inputBuffer.Available > csize && csize >= 0) {
-				inputBuffer.Available = (int)((long)inputBuffer.Available - csize);
-			} else {
-				csize -= inputBuffer.Available;
-				inputBuffer.Available = 0;
-				while (csize != 0) {
-					int skipped = (int)base.Skip(csize & 0xFFFFFFFFL);
-					
-					if (skipped <= 0) {
-						throw new ZipException("Zip archive ends early.");
-					}
-					
-					csize -= skipped;
-				}
-			}
-			
-			size = 0;
-			crc.Reset();
-			if (method == (int)CompressionMethod.Deflated) {
-				inf.Reset();
-			}
-			entry = null;
-		}
-		
-		/// <summary>
-		/// Returns 1 if there is an entry available
-		/// Otherwise returns 0.
-		/// </summary>
-		public override int Available {
-			get {
-				return entry != null ? 1 : 0;
-			}
-		}
-		
-		/// <summary>
-		/// Reads a byte from the current zip entry.
-		/// </summary>
-		/// <returns>
-		/// The byte or -1 if end of stream is reached.
-		/// </returns>
-		/// <exception name="System.IO.IOException">
-		/// An i/o error occured.
-		/// </exception>
-		/// <exception name="ICSharpCode.SharpZipLib.ZipException">
-		/// The deflated stream is corrupted.
-		/// </exception>
-		public override int ReadByte()
-		{
-			byte[] b = new byte[1];
-			if (Read(b, 0, 1) <= 0) {
-				return -1;
-			}
-			return b[0] & 0xff;
-		}
-
-		// Perform the initial read on an entry which may include 
-		// reading encryption headers and setting up inflation.
-		int InitialRead(byte[] destination, int offset, int count)
-		{
-			if (entry.Version > ZipConstants.VERSION_MADE_BY) {
-				throw new ZipException("Libray cannot extract this entry version required (" + entry.Version.ToString() + ")");
-			}
-			
-			// test for encryption
-			if (entry.IsCrypted) {
-		
-				if (password == null) {
-					throw new ZipException("No password set.");
-				}
-			
-				// Generate and set crypto transform...
-				PkzipClassicManaged managed = new PkzipClassicManaged();
-				byte[] key = PkzipClassic.GenerateKeys(Encoding.ASCII.GetBytes(password));
-					
-				inputBuffer.CryptoTransform = managed.CreateDecryptor(key, null);
-			
-				byte[] cryptbuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
-				inputBuffer.ReadClearTextBuffer(cryptbuffer, 0, ZipConstants.CRYPTO_HEADER_SIZE);
-					
-				if ((flags & 8) == 0) {
-					if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)(entry.Crc >> 24)) {
-						throw new ZipException("Invalid password");
-					}
-				}
-				else {
-					if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)((entry.DosTime >> 8) & 0xff)) {
-						throw new ZipException("Invalid password");
-					}
-				}
-					
-				if (csize >= ZipConstants.CRYPTO_HEADER_SIZE) {
-					csize -= ZipConstants.CRYPTO_HEADER_SIZE;
-				}
-			} 
-			else {
-				inputBuffer.CryptoTransform = null;
-			}
-			
-			if (method == (int)CompressionMethod.Deflated && inputBuffer.Available > 0) {
-				inputBuffer.SetInflaterInput(inf);
-			}
-			
-			internalReader = new ReaderDelegate(BodyRead);
-			return BodyRead(destination, offset, count);
-		}
-		
-
-		/// <summary>
-		/// Read a block of bytes from the stream.
-		/// </summary>
-		/// <param name="destination">The destination for the bytes.</param>
-		/// <param name="index">The index to start storing data.</param>
-		/// <param name="count">The number of bytes to attempt to read.</param>
-		/// <returns>Returns the number of bytes read.</returns>
-		/// <remarks>Zero bytes read means end of stream.</remarks>
-		public override int Read(byte[] destination, int index, int count)
-		{
-			return internalReader(destination, index, count);
-		}
-
-		/// <summary>
-		/// Reads a block of bytes from the current zip entry.
-		/// </summary>
-		/// <returns>
-		/// The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream.
-		/// </returns>
-		/// <exception name="IOException">
-		/// An i/o error occured.
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// The deflated stream is corrupted.
-		/// </exception>
-		/// <exception cref="InvalidOperationException">
-		/// The stream is not open.
-		/// </exception>
-		public int BodyRead(byte[] b, int off, int len)
-		{
-			if (crc == null) {
-				throw new InvalidOperationException("Closed.");
-			}
-			
-			if (entry == null || len <= 0 ) {
-				return 0;
-			}
-			
-			bool finished = false;
-			
-			switch (method) {
-				case (int)CompressionMethod.Deflated:
-					len = base.Read(b, off, len);
-					if (len <= 0) {
-						if (!inf.IsFinished) {
-							throw new ZipException("Inflater not finished!?");
-						}
-						inputBuffer.Available = inf.RemainingInput;
-						
-						if ((flags & 8) == 0 && (inf.TotalIn != csize || inf.TotalOut != size)) {
-							throw new ZipException("size mismatch: " + csize + ";" + size + " <-> " + inf.TotalIn + ";" + inf.TotalOut);
-						}
-						inf.Reset();
-						finished = true;
-					}
-					break;
-				
-				case (int)CompressionMethod.Stored:
-					if (len > csize && csize >= 0) {
-						len = (int)csize;
-					}
-					len = inputBuffer.ReadClearTextBuffer(b, off, len);
-					if (len > 0) {
-						csize -= len;
-						size -= len;
-					}
-					
-					if (csize == 0) {
-						finished = true;
-					} else {
-						if (len < 0) {
-							throw new ZipException("EOF in stored block");
-						}
-					}
-					break;
-			}
-				
-			if (len > 0) {
-				crc.Update(b, off, len);
-			}
-			
-			if (finished) {
-				StopDecrypting();
-				
-				if ((flags & 8) != 0) {
-					ReadDataDescriptor();
-				}
-				
-				if ((crc.Value & 0xFFFFFFFFL) != entry.Crc && entry.Crc != -1) {
-					throw new ZipException("CRC mismatch");
-				}
-				crc.Reset();
-				entry = null;
-			}
-			return len;
-		}
-
-		/// <summary>
-		/// Closes the zip input stream
-		/// </summary>
-		public override void Close()
-		{
-			base.Close();
-			crc = null;
-			entry = null;
-		}
-	}
-}
+// ZipInputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.Text;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Checksums;
+using ICSharpCode.SharpZipLib.Zip.Compression;
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+using ICSharpCode.SharpZipLib.Encryption;
+
+namespace ICSharpCode.SharpZipLib.Zip 
+{
+	/// <summary>
+	/// This is an InflaterInputStream that reads the files baseInputStream an zip archive
+	/// one after another.  It has a special method to get the zip entry of
+	/// the next file.  The zip entry contains information about the file name
+	/// size, compressed size, Crc, etc.
+	/// It includes support for Stored and Deflated entries.
+	/// <br/>
+	/// <br/>Author of the original java version : Jochen Hoenicke
+	/// </summary>
+	/// 
+	/// <example> This sample shows how to read a zip file
+	/// <code lang="C#">
+	/// using System;
+	/// using System.Text;
+	/// using System.IO;
+	/// 
+	/// using ICSharpCode.SharpZipLib.Zip;
+	/// 
+	/// class MainClass
+	/// {
+	/// 	public static void Main(string[] args)
+	/// 	{
+	/// 		ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]));
+	/// 		
+	/// 		ZipEntry theEntry;
+	/// 		while ((theEntry = s.GetNextEntry()) != null) {
+	/// 			int size = 2048;
+	/// 			byte[] data = new byte[2048];
+	/// 			
+	/// 			Console.Write("Show contents (y/n) ?");
+	/// 			if (Console.ReadLine() == "y") {
+	/// 				while (true) {
+	/// 					size = s.Read(data, 0, data.Length);
+	/// 					if (size > 0) {
+	/// 						Console.Write(new ASCIIEncoding().GetString(data, 0, size));
+	/// 					} else {
+	/// 						break;
+	/// 					}
+	/// 				}
+	/// 			}
+	/// 		}
+	/// 		s.Close();
+	/// 	}
+	/// }	
+	/// </code>
+	/// </example>
+	public class ZipInputStream : InflaterInputStream
+	{
+		// Delegate for reading bytes from a stream.
+		delegate int ReaderDelegate(byte[] b, int offset, int length);
+
+		/// <summary>
+		/// The current reader this instance.
+		/// </summary>
+		ReaderDelegate internalReader;
+
+		Crc32 crc = new Crc32();
+		ZipEntry entry = null;
+		
+		long size;
+		int method;
+		int flags;
+		string password = null;
+
+		/// <summary>
+		/// Creates a new Zip input stream, for reading a zip archive.
+		/// </summary>
+		public ZipInputStream(Stream baseInputStream) : base(baseInputStream, new Inflater(true))
+		{
+			internalReader = new ReaderDelegate(InitialRead);
+		}
+
+		
+		/// <summary>
+		/// Optional password used for encryption when non-null
+		/// </summary>
+		public string Password 
+		{
+			get {
+				return password;
+			}
+			set {
+				password = value;
+			}
+		}
+		
+
+		/// <summary>
+		/// Gets a value indicating if the entry can be decompressed
+		/// </summary>
+		/// <remarks>
+		/// The entry can only be decompressed if the library supports the zip features required to extract it.
+		/// See the <see cref="ZipEntry.Version">ZipEntry Version</see> property for more details.
+		/// </remarks>
+		public bool CanDecompressEntry {
+			get {
+				return entry != null && entry.Version <= ZipConstants.VERSION_MADE_BY;
+			}
+		}
+		
+		/// <summary>
+		/// Advances to the next entry in the archive
+		/// </summary>
+		/// <returns>
+		/// The next <see cref="ZipEntry">entry</see> in the archive or null if there are no more entries.
+		/// </returns>
+		/// <remarks>
+		/// If the previous entry is still open <see cref="CloseEntry">CloseEntry</see> is called.
+		/// </remarks>
+		/// <exception cref="InvalidOperationException">
+		/// Input stream is closed
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// Password is not set, password is invalid, compression method is invalid, 
+		/// version required to extract is not supported
+		/// </exception>
+		public ZipEntry GetNextEntry()
+		{
+			if (crc == null) {
+				throw new InvalidOperationException("Closed.");
+			}
+			
+			if (entry != null) {
+				CloseEntry();
+			}
+
+			int header = inputBuffer.ReadLeInt();
+
+			if (header == ZipConstants.CENSIG || 
+			    header == ZipConstants.ENDSIG || 
+			    header == ZipConstants.CENDIGITALSIG || 
+			    header == ZipConstants.CENSIG64) {
+			    // No more individual entries exist
+				Close();
+				return null;
+			}
+
+			// -jr- 07-Dec-2003 Ignore spanning temporary signatures if found
+			// SPANNINGSIG is same as descriptor signature and is untested as yet.
+			if (header == ZipConstants.SPANTEMPSIG || header == ZipConstants.SPANNINGSIG) {
+				header = inputBuffer.ReadLeInt();
+			}
+			
+			if (header != ZipConstants.LOCSIG) {
+				throw new ZipException("Wrong Local header signature: 0x" + String.Format("{0:X}", header));
+			}
+			
+			short versionRequiredToExtract = (short)inputBuffer.ReadLeShort();
+			
+			flags          = inputBuffer.ReadLeShort();
+			method         = inputBuffer.ReadLeShort();
+			uint dostime   = (uint)inputBuffer.ReadLeInt();
+			int crc2       = inputBuffer.ReadLeInt();
+			csize          = inputBuffer.ReadLeInt();
+			size           = inputBuffer.ReadLeInt();
+			int nameLen    = inputBuffer.ReadLeShort();
+			int extraLen   = inputBuffer.ReadLeShort();
+			
+			bool isCrypted = (flags & 1) == 1;
+			
+			byte[] buffer = new byte[nameLen];
+			inputBuffer.ReadRawBuffer(buffer);
+			
+			string name = ZipConstants.ConvertToString(buffer);
+			
+			entry = new ZipEntry(name, versionRequiredToExtract);
+			entry.Flags = flags;
+			
+			if (method == (int)CompressionMethod.Stored && (!isCrypted && csize != size || (isCrypted && csize - ZipConstants.CRYPTO_HEADER_SIZE != size))) {
+				throw new ZipException("Stored, but compressed != uncompressed");
+			}
+			
+			if (method != (int)CompressionMethod.Stored && method != (int)CompressionMethod.Deflated) {
+				throw new ZipException("Unknown compression method " + method);
+			}
+			
+			entry.CompressionMethod = (CompressionMethod)method;
+			
+			if ((flags & 8) == 0) {
+				entry.Crc  = crc2 & 0xFFFFFFFFL;
+				entry.Size = size & 0xFFFFFFFFL;
+				entry.CompressedSize = csize & 0xFFFFFFFFL;
+			} else {
+				
+				// This allows for GNU, WinZip and possibly other archives, the PKZIP spec says these are zero
+				// under these circumstances.
+				if (crc2 != 0) {
+					entry.Crc = crc2 & 0xFFFFFFFFL;
+				}
+				
+				if (size != 0) {
+					entry.Size = size & 0xFFFFFFFFL;
+				}
+				if (csize != 0) {
+					entry.CompressedSize = csize & 0xFFFFFFFFL;
+				}
+			}
+			
+			entry.DosTime = dostime;
+			
+			if (extraLen > 0) {
+				byte[] extra = new byte[extraLen];
+				inputBuffer.ReadRawBuffer(extra);
+				entry.ExtraData = extra;
+			}
+
+			internalReader = new ReaderDelegate(InitialRead);
+			return entry;
+		}
+		
+		// Read data descriptor at the end of compressed data.
+		void ReadDataDescriptor()
+		{
+			if (inputBuffer.ReadLeInt() != ZipConstants.EXTSIG) {
+				throw new ZipException("Data descriptor signature not found");
+			}
+			
+			entry.Crc = inputBuffer.ReadLeInt() & 0xFFFFFFFFL;
+			csize = inputBuffer.ReadLeInt();
+			size = inputBuffer.ReadLeInt();
+			
+			entry.Size = size & 0xFFFFFFFFL;
+			entry.CompressedSize = csize & 0xFFFFFFFFL;
+		}
+		
+		/// <summary>
+		/// Closes the current zip entry and moves to the next one.
+		/// </summary>
+		/// <exception cref="InvalidOperationException">
+		/// The stream is closed
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// The Zip stream ends early
+		/// </exception>
+		public void CloseEntry()
+		{
+			if (crc == null) {
+				throw new InvalidOperationException("Closed.");
+			}
+			
+			if (entry == null) {
+				return;
+			}
+			
+			if (method == (int)CompressionMethod.Deflated) {
+				if ((flags & 8) != 0) {
+					// We don't know how much we must skip, read until end.
+					byte[] tmp = new byte[2048];
+					while (Read(tmp, 0, tmp.Length) > 0)
+						;
+					// read will close this entry
+					return;
+				}
+				csize -= inf.TotalIn;
+				inputBuffer.Available -= inf.RemainingInput;	
+			}
+
+			if (inputBuffer.Available > csize && csize >= 0) {
+				inputBuffer.Available = (int)((long)inputBuffer.Available - csize);
+			} else {
+				csize -= inputBuffer.Available;
+				inputBuffer.Available = 0;
+				while (csize != 0) {
+					int skipped = (int)base.Skip(csize & 0xFFFFFFFFL);
+					
+					if (skipped <= 0) {
+						throw new ZipException("Zip archive ends early.");
+					}
+					
+					csize -= skipped;
+				}
+			}
+			
+			size = 0;
+			crc.Reset();
+			if (method == (int)CompressionMethod.Deflated) {
+				inf.Reset();
+			}
+			entry = null;
+		}
+		
+		/// <summary>
+		/// Returns 1 if there is an entry available
+		/// Otherwise returns 0.
+		/// </summary>
+		public override int Available {
+			get {
+				return entry != null ? 1 : 0;
+			}
+		}
+		
+		/// <summary>
+		/// Reads a byte from the current zip entry.
+		/// </summary>
+		/// <returns>
+		/// The byte or -1 if end of stream is reached.
+		/// </returns>
+		/// <exception name="System.IO.IOException">
+		/// An i/o error occured.
+		/// </exception>
+		/// <exception name="ICSharpCode.SharpZipLib.ZipException">
+		/// The deflated stream is corrupted.
+		/// </exception>
+		public override int ReadByte()
+		{
+			byte[] b = new byte[1];
+			if (Read(b, 0, 1) <= 0) {
+				return -1;
+			}
+			return b[0] & 0xff;
+		}
+
+		// Perform the initial read on an entry which may include 
+		// reading encryption headers and setting up inflation.
+		int InitialRead(byte[] destination, int offset, int count)
+		{
+			if (entry.Version > ZipConstants.VERSION_MADE_BY) {
+				throw new ZipException("Libray cannot extract this entry version required (" + entry.Version.ToString() + ")");
+			}
+			
+			// test for encryption
+			if (entry.IsCrypted) {
+		
+				if (password == null) {
+					throw new ZipException("No password set.");
+				}
+			
+				// Generate and set crypto transform...
+				PkzipClassicManaged managed = new PkzipClassicManaged();
+				byte[] key = PkzipClassic.GenerateKeys(Encoding.ASCII.GetBytes(password));
+					
+				inputBuffer.CryptoTransform = managed.CreateDecryptor(key, null);
+			
+				byte[] cryptbuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
+				inputBuffer.ReadClearTextBuffer(cryptbuffer, 0, ZipConstants.CRYPTO_HEADER_SIZE);
+					
+				if ((flags & 8) == 0) {
+					if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)(entry.Crc >> 24)) {
+						throw new ZipException("Invalid password");
+					}
+				}
+				else {
+					if (cryptbuffer[ZipConstants.CRYPTO_HEADER_SIZE - 1] != (byte)((entry.DosTime >> 8) & 0xff)) {
+						throw new ZipException("Invalid password");
+					}
+				}
+					
+				if (csize >= ZipConstants.CRYPTO_HEADER_SIZE) {
+					csize -= ZipConstants.CRYPTO_HEADER_SIZE;
+				}
+			} 
+			else {
+				inputBuffer.CryptoTransform = null;
+			}
+			
+			if (method == (int)CompressionMethod.Deflated && inputBuffer.Available > 0) {
+				inputBuffer.SetInflaterInput(inf);
+			}
+			
+			internalReader = new ReaderDelegate(BodyRead);
+			return BodyRead(destination, offset, count);
+		}
+		
+
+		/// <summary>
+		/// Read a block of bytes from the stream.
+		/// </summary>
+		/// <param name="destination">The destination for the bytes.</param>
+		/// <param name="index">The index to start storing data.</param>
+		/// <param name="count">The number of bytes to attempt to read.</param>
+		/// <returns>Returns the number of bytes read.</returns>
+		/// <remarks>Zero bytes read means end of stream.</remarks>
+		public override int Read(byte[] destination, int index, int count)
+		{
+			return internalReader(destination, index, count);
+		}
+
+		/// <summary>
+		/// Reads a block of bytes from the current zip entry.
+		/// </summary>
+		/// <returns>
+		/// The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream.
+		/// </returns>
+		/// <exception name="IOException">
+		/// An i/o error occured.
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// The deflated stream is corrupted.
+		/// </exception>
+		/// <exception cref="InvalidOperationException">
+		/// The stream is not open.
+		/// </exception>
+		public int BodyRead(byte[] b, int off, int len)
+		{
+			if (crc == null) {
+				throw new InvalidOperationException("Closed.");
+			}
+			
+			if (entry == null || len <= 0 ) {
+				return 0;
+			}
+			
+			bool finished = false;
+			
+			switch (method) {
+				case (int)CompressionMethod.Deflated:
+					len = base.Read(b, off, len);
+					if (len <= 0) {
+						if (!inf.IsFinished) {
+							throw new ZipException("Inflater not finished!?");
+						}
+						inputBuffer.Available = inf.RemainingInput;
+						
+						if ((flags & 8) == 0 && (inf.TotalIn != csize || inf.TotalOut != size)) {
+							throw new ZipException("size mismatch: " + csize + ";" + size + " <-> " + inf.TotalIn + ";" + inf.TotalOut);
+						}
+						inf.Reset();
+						finished = true;
+					}
+					break;
+				
+				case (int)CompressionMethod.Stored:
+					if (len > csize && csize >= 0) {
+						len = (int)csize;
+					}
+					len = inputBuffer.ReadClearTextBuffer(b, off, len);
+					if (len > 0) {
+						csize -= len;
+						size -= len;
+					}
+					
+					if (csize == 0) {
+						finished = true;
+					} else {
+						if (len < 0) {
+							throw new ZipException("EOF in stored block");
+						}
+					}
+					break;
+			}
+				
+			if (len > 0) {
+				crc.Update(b, off, len);
+			}
+			
+			if (finished) {
+				StopDecrypting();
+				
+				if ((flags & 8) != 0) {
+					ReadDataDescriptor();
+				}
+				
+				if ((crc.Value & 0xFFFFFFFFL) != entry.Crc && entry.Crc != -1) {
+					throw new ZipException("CRC mismatch");
+				}
+				crc.Reset();
+				entry = null;
+			}
+			return len;
+		}
+
+		/// <summary>
+		/// Closes the zip input stream
+		/// </summary>
+		public override void Close()
+		{
+			base.Close();
+			crc = null;
+			entry = null;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipNameTransform.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipNameTransform.cs
@@ -1,147 +1,147 @@
-// ZipNameTransform.cs
-//
-// Copyright 2005 John Reilly
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-
-using System;
-using System.IO;
-
-using ICSharpCode.SharpZipLib.Core;
-
-namespace ICSharpCode.SharpZipLib.Zip
-{
-	/// <summary>
-	/// ZipNameTransform transforms name as per the Zip file convention.
-	/// </summary>
-	public class ZipNameTransform : INameTransform
-	{
-		/// <summary>
-		/// Initialize a new instance of <see cref="ZipNameTransform"></see>
-		/// </summary>
-		/// <remarks>Relative paths default to true with this constructor.</remarks>
-		public ZipNameTransform()
-		{
-			relativePath = true;
-		}
-
-		/// <summary>
-		/// Initialize a new instance of <see cref="ZipNameTransform"></see>
-		/// </summary>
-		/// <param name="useRelativePaths">If true relative paths are created, 
-		/// if false absolute paths are created. </param>
-		public ZipNameTransform(bool useRelativePaths)
-		{
-			relativePath = useRelativePaths;
-		}
-
-		/// <summary>
-		/// Initialize a new instance of <see cref="ZipNameTransform"></see>
-		/// </summary>
-		/// <param name="useRelativePaths">If true relative paths are created, 
-		/// if false absolute paths are created. </param>
-		/// <param name="trimPrefix">The string to trim from front of paths if found.</param>
-		public ZipNameTransform(bool useRelativePaths, string trimPrefix)
-		{
-			this.trimPrefix = trimPrefix;
-			relativePath = useRelativePaths;
-		}
-		
-		/// <summary>
-		/// Transform a directory name according to the Zip file naming conventions.
-		/// </summary>
-		/// <param name="name">The directory name to transform.</param>
-		/// <returns>The transformed name.</returns>
-		public string TransformDirectory(string name)
-		{
-			name = TransformFile(name);
-			if (name.Length > 0) {
-				if ( !name.EndsWith("/") ) {
-					name += "/";
-				}
-			}
-			else {
-				name = "/";
-			}
-			return name;
-		}
-		
-		/// <summary>
-		/// Transform a file name according to the Zip file naming conventions.
-		/// </summary>
-		/// <param name="name">The file name to transform.</param>
-		/// <returns>The transformed name.</returns>
-		public string TransformFile(string name)
-		{
-			if (name != null) {
-				if ( trimPrefix != null && name.IndexOf(trimPrefix) == 0 ) {
-					name = name.Substring(trimPrefix.Length);
-				}
-				
-				if (Path.IsPathRooted(name) == true) {
-					// NOTE:
-					// for UNC names...  \\machine\share\zoom\beet.txt gives \zoom\beet.txt
-					name = name.Substring(Path.GetPathRoot(name).Length);
-				}
-				
-				if (relativePath == true) {
-					if (name.Length > 0 && (name[0] == Path.AltDirectorySeparatorChar || name[0] == Path.DirectorySeparatorChar)) {
-						name = name.Remove(0, 1);
-					}
-				} else {
-					if (name.Length > 0 && name[0] != Path.AltDirectorySeparatorChar && name[0] != Path.DirectorySeparatorChar) {
-						name = name.Insert(0, "/");
-					}
-				}
-				name = name.Replace(@"\", "/");
-			}
-			else {
-				name = "";
-			}
-			return name;
-		}
-
-		string trimPrefix;
-		
-		/// <summary>
-		/// Get/set the path prefix to be trimmed from paths if present.
-		/// </summary>
-		public string TrimPrefix
-		{
-			get { return trimPrefix; }
-			set { trimPrefix = value; }
-		}
-		
-		bool relativePath;
-	}
-}
+// ZipNameTransform.cs
+//
+// Copyright 2005 John Reilly
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+
+using System;
+using System.IO;
+
+using ICSharpCode.SharpZipLib.Core;
+
+namespace ICSharpCode.SharpZipLib.Zip
+{
+	/// <summary>
+	/// ZipNameTransform transforms name as per the Zip file convention.
+	/// </summary>
+	public class ZipNameTransform : INameTransform
+	{
+		/// <summary>
+		/// Initialize a new instance of <see cref="ZipNameTransform"></see>
+		/// </summary>
+		/// <remarks>Relative paths default to true with this constructor.</remarks>
+		public ZipNameTransform()
+		{
+			relativePath = true;
+		}
+
+		/// <summary>
+		/// Initialize a new instance of <see cref="ZipNameTransform"></see>
+		/// </summary>
+		/// <param name="useRelativePaths">If true relative paths are created, 
+		/// if false absolute paths are created. </param>
+		public ZipNameTransform(bool useRelativePaths)
+		{
+			relativePath = useRelativePaths;
+		}
+
+		/// <summary>
+		/// Initialize a new instance of <see cref="ZipNameTransform"></see>
+		/// </summary>
+		/// <param name="useRelativePaths">If true relative paths are created, 
+		/// if false absolute paths are created. </param>
+		/// <param name="trimPrefix">The string to trim from front of paths if found.</param>
+		public ZipNameTransform(bool useRelativePaths, string trimPrefix)
+		{
+			this.trimPrefix = trimPrefix;
+			relativePath = useRelativePaths;
+		}
+		
+		/// <summary>
+		/// Transform a directory name according to the Zip file naming conventions.
+		/// </summary>
+		/// <param name="name">The directory name to transform.</param>
+		/// <returns>The transformed name.</returns>
+		public string TransformDirectory(string name)
+		{
+			name = TransformFile(name);
+			if (name.Length > 0) {
+				if ( !name.EndsWith("/") ) {
+					name += "/";
+				}
+			}
+			else {
+				name = "/";
+			}
+			return name;
+		}
+		
+		/// <summary>
+		/// Transform a file name according to the Zip file naming conventions.
+		/// </summary>
+		/// <param name="name">The file name to transform.</param>
+		/// <returns>The transformed name.</returns>
+		public string TransformFile(string name)
+		{
+			if (name != null) {
+				if ( trimPrefix != null && name.IndexOf(trimPrefix) == 0 ) {
+					name = name.Substring(trimPrefix.Length);
+				}
+				
+				if (Path.IsPathRooted(name) == true) {
+					// NOTE:
+					// for UNC names...  \\machine\share\zoom\beet.txt gives \zoom\beet.txt
+					name = name.Substring(Path.GetPathRoot(name).Length);
+				}
+				
+				if (relativePath == true) {
+					if (name.Length > 0 && (name[0] == Path.AltDirectorySeparatorChar || name[0] == Path.DirectorySeparatorChar)) {
+						name = name.Remove(0, 1);
+					}
+				} else {
+					if (name.Length > 0 && name[0] != Path.AltDirectorySeparatorChar && name[0] != Path.DirectorySeparatorChar) {
+						name = name.Insert(0, "/");
+					}
+				}
+				name = name.Replace(@"\", "/");
+			}
+			else {
+				name = "";
+			}
+			return name;
+		}
+
+		string trimPrefix;
+		
+		/// <summary>
+		/// Get/set the path prefix to be trimmed from paths if present.
+		/// </summary>
+		public string TrimPrefix
+		{
+			get { return trimPrefix; }
+			set { trimPrefix = value; }
+		}
+		
+		bool relativePath;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipOutputStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Zip/ZipOutputStream.cs
@@ -1,592 +1,592 @@
-// ZipOutputStream.cs
-//
-// Copyright (C) 2001 Mike Krueger
-// Copyright (C) 2004 John Reilly
-//
-// This file was translated from java, it was part of the GNU Classpath
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-//
-// Linking this library statically or dynamically with other modules is
-// making a combined work based on this library.  Thus, the terms and
-// conditions of the GNU General Public License cover the whole
-// combination.
-// 
-// As a special exception, the copyright holders of this library give you
-// permission to link this library with independent modules to produce an
-// executable, regardless of the license terms of these independent
-// modules, and to copy and distribute the resulting executable under
-// terms of your choice, provided that you also meet, for each linked
-// independent module, the terms and conditions of the license of that
-// module.  An independent module is a module which is not derived from
-// or based on this library.  If you modify this library, you may extend
-// this exception to your version of the library, but you are not
-// obligated to do so.  If you do not wish to do so, delete this
-// exception statement from your version.
-
-using System;
-using System.IO;
-using System.Collections;
-using System.Text;
-
-using ICSharpCode.SharpZipLib.Checksums;
-using ICSharpCode.SharpZipLib.Zip.Compression;
-using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
-
-namespace ICSharpCode.SharpZipLib.Zip
-{
-	/// <summary>
-	/// This is a DeflaterOutputStream that writes the files into a zip
-	/// archive one after another.  It has a special method to start a new
-	/// zip entry.  The zip entries contains information about the file name
-	/// size, compressed size, CRC, etc.
-	/// 
-	/// It includes support for Stored and Deflated entries.
-	/// This class is not thread safe.
-	/// <br/>
-	/// <br/>Author of the original java version : Jochen Hoenicke
-	/// </summary>
-	/// <example> This sample shows how to create a zip file
-	/// <code>
-	/// using System;
-	/// using System.IO;
-	/// 
-	/// using ICSharpCode.SharpZipLib.Zip;
-	/// 
-	/// class MainClass
-	/// {
-	/// 	public static void Main(string[] args)
-	/// 	{
-	/// 		string[] filenames = Directory.GetFiles(args[0]);
-	/// 		
-	/// 		ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));
-	/// 		
-	/// 		s.SetLevel(5); // 0 - store only to 9 - means best compression
-	/// 		
-	/// 		foreach (string file in filenames) {
-	/// 			FileStream fs = File.OpenRead(file);
-	/// 			
-	/// 			byte[] buffer = new byte[fs.Length];
-	/// 			fs.Read(buffer, 0, buffer.Length);
-	/// 			
-	/// 			ZipEntry entry = new ZipEntry(file);
-	/// 			
-	/// 			s.PutNextEntry(entry);
-	/// 			
-	/// 			s.Write(buffer, 0, buffer.Length);
-	/// 			
-	/// 		}
-	/// 		
-	/// 		s.Finish();
-	/// 		s.Close();
-	/// 	}
-	/// }	
-	/// </code>
-	/// </example>
-	public class ZipOutputStream : DeflaterOutputStream
-	{
-		private ArrayList entries  = new ArrayList();
-		private Crc32     crc      = new Crc32();
-		private ZipEntry  curEntry = null;
-		
-		int defaultCompressionLevel = Deflater.DEFAULT_COMPRESSION;
-		CompressionMethod curMethod = CompressionMethod.Deflated;
-
-		
-		private long size;
-		private long offset = 0;
-		
-		private byte[] zipComment = new byte[0];
-		
-		/// <summary>
-		/// Gets boolean indicating central header has been added for this archive...
-		/// No further entries can be added once this has been done.
-		/// </summary>
-		public bool IsFinished {
-			get {
-				return entries == null;
-			}
-		}
-
-		/// <summary>
-		/// Creates a new Zip output stream, writing a zip archive.
-		/// </summary>
-		/// <param name="baseOutputStream">
-		/// The output stream to which the archive contents are written.
-		/// </param>
-		public ZipOutputStream(Stream baseOutputStream) : base(baseOutputStream, new Deflater(Deflater.DEFAULT_COMPRESSION, true))
-		{
-		}
-		
-		/// <summary>
-		/// Set the zip file comment.
-		/// </summary>
-		/// <param name="comment">
-		/// The comment string
-		/// </param>
-		/// <exception name ="ArgumentOutOfRangeException">
-		/// Encoding of comment is longer than 0xffff bytes.
-		/// </exception>
-		public void SetComment(string comment)
-		{
-			byte[] commentBytes = ZipConstants.ConvertToArray(comment);
-			if (commentBytes.Length > 0xffff) {
-				throw new ArgumentOutOfRangeException("comment");
-			}
-			zipComment = commentBytes;
-		}
-		
-		/// <summary>
-		/// Sets default compression level.  The new level will be activated
-		/// immediately.
-		/// </summary>
-		/// <exception cref="ArgumentOutOfRangeException">
-		/// Level specified is not supported.
-		/// </exception>
-		/// <see cref="Deflater"/>
-		public void SetLevel(int level)
-		{
-			defaultCompressionLevel = level;
-			def.SetLevel(level);
-		}
-		
-		/// <summary>
-		/// Get the current deflate compression level
-		/// </summary>
-		/// <returns>The current compression level</returns>
-		public int GetLevel()
-		{
-			return def.GetLevel();
-		}
-		
-		/// <summary>
-		/// Write an unsigned short in little endian byte order.
-		/// </summary>
-		private  void WriteLeShort(int value)
-		{
-			baseOutputStream.WriteByte((byte)(value & 0xff));
-			baseOutputStream.WriteByte((byte)((value >> 8) & 0xff));
-		}
-		
-		/// <summary>
-		/// Write an int in little endian byte order.
-		/// </summary>
-		private void WriteLeInt(int value)
-		{
-			WriteLeShort(value);
-			WriteLeShort(value >> 16);
-		}
-		
-		/// <summary>
-		/// Write an int in little endian byte order.
-		/// </summary>
-		private void WriteLeLong(long value)
-		{
-			WriteLeInt((int)value);
-			WriteLeInt((int)(value >> 32));
-		}
-		
-		
-		bool patchEntryHeader = false;
-		
-		long headerPatchPos   = -1;
-
-		/// <summary>
-		/// Starts a new Zip entry. It automatically closes the previous
-		/// entry if present.
-		/// All entry elements bar name are optional, but must be correct if present.
-		/// If the compression method is stored and the output is not patchable
-		/// the compression for that entry is automatically changed to deflate level 0
-		/// </summary>
-		/// <param name="entry">
-		/// the entry.
-		/// </param>
-		/// <exception cref="System.IO.IOException">
-		/// if an I/O error occured.
-		/// </exception>
-		/// <exception cref="System.InvalidOperationException">
-		/// if stream was finished
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// Too many entries in the Zip file<br/>
-		/// Entry name is too long<br/>
-		/// Finish has already been called<br/>
-		/// </exception>
-		public void PutNextEntry(ZipEntry entry)
-		{
-			if (entries == null) {
-				throw new InvalidOperationException("ZipOutputStream was finished");
-			}
-			
-			if (curEntry != null) {
-				CloseEntry();
-			}
-
-			if (entries.Count >= 0xffff) {
-				throw new ZipException("Too many entries for Zip file");
-			}
-			
-			CompressionMethod method = entry.CompressionMethod;
-			int compressionLevel = defaultCompressionLevel;
-			
-			entry.Flags = 0;
-			patchEntryHeader = false;
-			bool headerInfoAvailable = true;
-			
-			if (method == CompressionMethod.Stored) {
-				if (entry.CompressedSize >= 0) {
-					if (entry.Size < 0) {
-						entry.Size = entry.CompressedSize;
-					} else if (entry.Size != entry.CompressedSize) {
-						throw new ZipException("Method STORED, but compressed size != size");
-					}
-				} else {
-					if (entry.Size >= 0) {
-						entry.CompressedSize = entry.Size;
-					}
-				}
-					
-				if (entry.Size < 0 || entry.Crc < 0) {
-					if (CanPatchEntries == true) {
-						headerInfoAvailable = false;
-					}
-					else {
-                  // Cant patch entries so storing is not possible.
-						method = CompressionMethod.Deflated;
-						compressionLevel = 0;
-					}
-				}
-			}
-				
-			if (method == CompressionMethod.Deflated) {
-				if (entry.Size == 0) {
-               // No need to compress - no data.
-					entry.CompressedSize = entry.Size;
-					entry.Crc = 0;
-					method = CompressionMethod.Stored;
-				} else if (entry.CompressedSize < 0 || entry.Size < 0 || entry.Crc < 0) {
-					headerInfoAvailable = false;
-				}
-			}
-			
-			if (headerInfoAvailable == false) {
-				if (CanPatchEntries == false) {
-					entry.Flags |= 8;
-				} else {
-					patchEntryHeader = true;
-				}
-			}
-			
-			if (Password != null) {
-				entry.IsCrypted = true;
-				if (entry.Crc < 0) {
-               // Need to append data descriptor as crc is used for encryption and its not known.
-					entry.Flags |= 8;
-				}
-			}
-			entry.Offset = (int)offset;
-			entry.CompressionMethod = (CompressionMethod)method;
-			
-			curMethod    = method;
-			
-			// Write the local file header
-			WriteLeInt(ZipConstants.LOCSIG);
-			
-			WriteLeShort(entry.Version);
-			WriteLeShort(entry.Flags);
-			WriteLeShort((byte)method);
-			WriteLeInt((int)entry.DosTime);
-			if (headerInfoAvailable == true) {
-				WriteLeInt((int)entry.Crc);
-				WriteLeInt(entry.IsCrypted ? (int)entry.CompressedSize + ZipConstants.CRYPTO_HEADER_SIZE : (int)entry.CompressedSize);
-				WriteLeInt((int)entry.Size);
-			} else {
-				if (patchEntryHeader == true) {
-					headerPatchPos = baseOutputStream.Position;
-				}
-				WriteLeInt(0);	// Crc
-				WriteLeInt(0);	// Compressed size
-				WriteLeInt(0);	// Uncompressed size
-			}
-			
-			byte[] name = ZipConstants.ConvertToArray(entry.Name);
-			
-			if (name.Length > 0xFFFF) {
-				throw new ZipException("Entry name too long.");
-			}
-
-			byte[] extra = entry.ExtraData;
-			if (extra == null) {
-				extra = new byte[0];
-			}
-
-			if (extra.Length > 0xFFFF) {
-				throw new ZipException("Extra data too long.");
-			}
-			
-			WriteLeShort(name.Length);
-			WriteLeShort(extra.Length);
-			baseOutputStream.Write(name, 0, name.Length);
-			baseOutputStream.Write(extra, 0, extra.Length);
-			
-			offset += ZipConstants.LOCHDR + name.Length + extra.Length;
-			
-			// Activate the entry.
-			curEntry = entry;
-			crc.Reset();
-			if (method == CompressionMethod.Deflated) {
-				def.Reset();
-				def.SetLevel(compressionLevel);
-			}
-			size = 0;
-			
-			if (entry.IsCrypted == true) {
-				if (entry.Crc < 0) {			// so testing Zip will says its ok
-					WriteEncryptionHeader(entry.DosTime << 16);
-				} else {
-					WriteEncryptionHeader(entry.Crc);
-				}
-			}
-		}
-		
-		/// <summary>
-		/// Closes the current entry, updating header and footer information as required
-		/// </summary>
-		/// <exception cref="System.IO.IOException">
-		/// An I/O error occurs.
-		/// </exception>
-		/// <exception cref="System.InvalidOperationException">
-		/// No entry is active.
-		/// </exception>
-		public void CloseEntry()
-		{
-			if (curEntry == null) {
-				throw new InvalidOperationException("No open entry");
-			}
-			
-			// First finish the deflater, if appropriate
-			if (curMethod == CompressionMethod.Deflated) {
-				base.Finish();
-			}
-			
-			long csize = curMethod == CompressionMethod.Deflated ? def.TotalOut : size;
-			
-			if (curEntry.Size < 0) {
-				curEntry.Size = size;
-			} else if (curEntry.Size != size) {
-				throw new ZipException("size was " + size + ", but I expected " + curEntry.Size);
-			}
-			
-			if (curEntry.CompressedSize < 0) {
-				curEntry.CompressedSize = csize;
-			} else if (curEntry.CompressedSize != csize) {
-				throw new ZipException("compressed size was " + csize + ", but I expected " + curEntry.CompressedSize);
-			}
-			
-			if (curEntry.Crc < 0) {
-				curEntry.Crc = crc.Value;
-			} else if (curEntry.Crc != crc.Value) {
-				throw new ZipException("crc was " + crc.Value +	", but I expected " + curEntry.Crc);
-			}
-			
-			offset += csize;
-
-			if (offset > 0xffffffff) {
-				throw new ZipException("Maximum Zip file size exceeded");
-			}
-				
-			if (curEntry.IsCrypted == true) {
-				curEntry.CompressedSize += ZipConstants.CRYPTO_HEADER_SIZE;
-			}
-				
-			// Patch the header if possible
-			if (patchEntryHeader == true) {
-				long curPos = baseOutputStream.Position;
-				baseOutputStream.Seek(headerPatchPos, SeekOrigin.Begin);
-				WriteLeInt((int)curEntry.Crc);
-				WriteLeInt((int)curEntry.CompressedSize);
-				WriteLeInt((int)curEntry.Size);
-				baseOutputStream.Seek(curPos, SeekOrigin.Begin);
-				patchEntryHeader = false;
-			}
-
-			// Add data descriptor if flagged as required
-			if ((curEntry.Flags & 8) != 0) {
-				WriteLeInt(ZipConstants.EXTSIG);
-				WriteLeInt((int)curEntry.Crc);
-				WriteLeInt((int)curEntry.CompressedSize);
-				WriteLeInt((int)curEntry.Size);
-				offset += ZipConstants.EXTHDR;
-			}
-			
-			entries.Add(curEntry);
-			curEntry = null;
-		}
-		
-		void WriteEncryptionHeader(long crcValue)
-		{
-			offset += ZipConstants.CRYPTO_HEADER_SIZE;
-			
-			InitializePassword(Password);
-			
-			byte[] cryptBuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
-			Random rnd = new Random();
-			rnd.NextBytes(cryptBuffer);
-			cryptBuffer[11] = (byte)(crcValue >> 24);
-			
-			EncryptBlock(cryptBuffer, 0, cryptBuffer.Length);
-			baseOutputStream.Write(cryptBuffer, 0, cryptBuffer.Length);
-		}
-		
-		/// <summary>
-		/// Writes the given buffer to the current entry.
-		/// </summary>
-		/// <exception cref="ZipException">
-		/// Archive size is invalid
-		/// </exception>
-		/// <exception cref="System.InvalidOperationException">
-		/// No entry is active.
-		/// </exception>
-		public override void Write(byte[] b, int off, int len)
-		{
-			if (curEntry == null) {
-				throw new InvalidOperationException("No open entry.");
-			}
-			
-			if (len <= 0)
-				return;
-			
-			crc.Update(b, off, len);
-			size += len;
-			
-			if (size > 0xffffffff || size < 0) {
-				throw new ZipException("Maximum entry size exceeded");
-			}
-				
-
-			switch (curMethod) {
-				case CompressionMethod.Deflated:
-					base.Write(b, off, len);
-					break;
-				
-				case CompressionMethod.Stored:
-					if (Password != null) {
-						byte[] buf = new byte[len];
-						Array.Copy(b, off, buf, 0, len);
-						EncryptBlock(buf, 0, len);
-						baseOutputStream.Write(buf, off, len);
-					} else {
-						baseOutputStream.Write(b, off, len);
-					}
-					break;
-			}
-		}
-		
-		/// <summary>
-		/// Finishes the stream.  This will write the central directory at the
-		/// end of the zip file and flush the stream.
-		/// </summary>
-		/// <remarks>
-		/// This is automatically called when the stream is closed.
-		/// </remarks>
-		/// <exception cref="System.IO.IOException">
-		/// An I/O error occurs.
-		/// </exception>
-		/// <exception cref="ZipException">
-		/// Comment exceeds the maximum length<br/>
-		/// Entry name exceeds the maximum length
-		/// </exception>
-		public override void Finish()
-		{
-			if (entries == null)  {
-				return;
-			}
-			
-			if (curEntry != null) {
-				CloseEntry();
-			}
-			
-			int numEntries = 0;
-			int sizeEntries = 0;
-			
-			foreach (ZipEntry entry in entries) {
-				CompressionMethod method = entry.CompressionMethod;
-				WriteLeInt(ZipConstants.CENSIG); 
-				WriteLeShort(ZipConstants.VERSION_MADE_BY);
-				WriteLeShort(entry.Version);
-				WriteLeShort(entry.Flags);
-				WriteLeShort((short)method);
-				WriteLeInt((int)entry.DosTime);
-				WriteLeInt((int)entry.Crc);
-				WriteLeInt((int)entry.CompressedSize);
-				WriteLeInt((int)entry.Size);
-				
-				byte[] name = ZipConstants.ConvertToArray(entry.Name);
-				
-				if (name.Length > 0xffff) {
-					throw new ZipException("Name too long.");
-				}
-				
-				byte[] extra = entry.ExtraData;
-				if (extra == null) {
-					extra = new byte[0];
-				}
-				
-				byte[] entryComment = entry.Comment != null ? ZipConstants.ConvertToArray(entry.Comment) : new byte[0];
-				if (entryComment.Length > 0xffff) {
-					throw new ZipException("Comment too long.");
-				}
-				
-				WriteLeShort(name.Length);
-				WriteLeShort(extra.Length);
-				WriteLeShort(entryComment.Length);
-				WriteLeShort(0);	// disk number
-				WriteLeShort(0);	// internal file attr
-									// external file attribute
-
-				if (entry.ExternalFileAttributes != -1) {
-					WriteLeInt(entry.ExternalFileAttributes);
-				} else {
-					if (entry.IsDirectory) {                         // mark entry as directory (from nikolam.AT.perfectinfo.com)
-						WriteLeInt(16);
-					} else {
-						WriteLeInt(0);
-					}
-				}
-
-				WriteLeInt(entry.Offset);
-				
-				baseOutputStream.Write(name,    0, name.Length);
-				baseOutputStream.Write(extra,   0, extra.Length);
-				baseOutputStream.Write(entryComment, 0, entryComment.Length);
-				++numEntries;
-				sizeEntries += ZipConstants.CENHDR + name.Length + extra.Length + entryComment.Length;
-			}
-			
-			WriteLeInt(ZipConstants.ENDSIG);
-			WriteLeShort(0);                    // number of this disk
-			WriteLeShort(0);                    // no of disk with start of central dir
-			WriteLeShort(numEntries);           // entries in central dir for this disk
-			WriteLeShort(numEntries);           // total entries in central directory
-			WriteLeInt(sizeEntries);            // size of the central directory
-			WriteLeInt((int)offset);            // offset of start of central dir
-			WriteLeShort(zipComment.Length);
-			baseOutputStream.Write(zipComment, 0, zipComment.Length);
-			baseOutputStream.Flush();
-			entries = null;
-		}
-	}
-}
+// ZipOutputStream.cs
+//
+// Copyright (C) 2001 Mike Krueger
+// Copyright (C) 2004 John Reilly
+//
+// This file was translated from java, it was part of the GNU Classpath
+// Copyright (C) 2001 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+//
+// Linking this library statically or dynamically with other modules is
+// making a combined work based on this library.  Thus, the terms and
+// conditions of the GNU General Public License cover the whole
+// combination.
+// 
+// As a special exception, the copyright holders of this library give you
+// permission to link this library with independent modules to produce an
+// executable, regardless of the license terms of these independent
+// modules, and to copy and distribute the resulting executable under
+// terms of your choice, provided that you also meet, for each linked
+// independent module, the terms and conditions of the license of that
+// module.  An independent module is a module which is not derived from
+// or based on this library.  If you modify this library, you may extend
+// this exception to your version of the library, but you are not
+// obligated to do so.  If you do not wish to do so, delete this
+// exception statement from your version.
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Text;
+
+using ICSharpCode.SharpZipLib.Checksums;
+using ICSharpCode.SharpZipLib.Zip.Compression;
+using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
+
+namespace ICSharpCode.SharpZipLib.Zip
+{
+	/// <summary>
+	/// This is a DeflaterOutputStream that writes the files into a zip
+	/// archive one after another.  It has a special method to start a new
+	/// zip entry.  The zip entries contains information about the file name
+	/// size, compressed size, CRC, etc.
+	/// 
+	/// It includes support for Stored and Deflated entries.
+	/// This class is not thread safe.
+	/// <br/>
+	/// <br/>Author of the original java version : Jochen Hoenicke
+	/// </summary>
+	/// <example> This sample shows how to create a zip file
+	/// <code>
+	/// using System;
+	/// using System.IO;
+	/// 
+	/// using ICSharpCode.SharpZipLib.Zip;
+	/// 
+	/// class MainClass
+	/// {
+	/// 	public static void Main(string[] args)
+	/// 	{
+	/// 		string[] filenames = Directory.GetFiles(args[0]);
+	/// 		
+	/// 		ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));
+	/// 		
+	/// 		s.SetLevel(5); // 0 - store only to 9 - means best compression
+	/// 		
+	/// 		foreach (string file in filenames) {
+	/// 			FileStream fs = File.OpenRead(file);
+	/// 			
+	/// 			byte[] buffer = new byte[fs.Length];
+	/// 			fs.Read(buffer, 0, buffer.Length);
+	/// 			
+	/// 			ZipEntry entry = new ZipEntry(file);
+	/// 			
+	/// 			s.PutNextEntry(entry);
+	/// 			
+	/// 			s.Write(buffer, 0, buffer.Length);
+	/// 			
+	/// 		}
+	/// 		
+	/// 		s.Finish();
+	/// 		s.Close();
+	/// 	}
+	/// }	
+	/// </code>
+	/// </example>
+	public class ZipOutputStream : DeflaterOutputStream
+	{
+		private ArrayList entries  = new ArrayList();
+		private Crc32     crc      = new Crc32();
+		private ZipEntry  curEntry = null;
+		
+		int defaultCompressionLevel = Deflater.DEFAULT_COMPRESSION;
+		CompressionMethod curMethod = CompressionMethod.Deflated;
+
+		
+		private long size;
+		private long offset = 0;
+		
+		private byte[] zipComment = new byte[0];
+		
+		/// <summary>
+		/// Gets boolean indicating central header has been added for this archive...
+		/// No further entries can be added once this has been done.
+		/// </summary>
+		public bool IsFinished {
+			get {
+				return entries == null;
+			}
+		}
+
+		/// <summary>
+		/// Creates a new Zip output stream, writing a zip archive.
+		/// </summary>
+		/// <param name="baseOutputStream">
+		/// The output stream to which the archive contents are written.
+		/// </param>
+		public ZipOutputStream(Stream baseOutputStream) : base(baseOutputStream, new Deflater(Deflater.DEFAULT_COMPRESSION, true))
+		{
+		}
+		
+		/// <summary>
+		/// Set the zip file comment.
+		/// </summary>
+		/// <param name="comment">
+		/// The comment string
+		/// </param>
+		/// <exception name ="ArgumentOutOfRangeException">
+		/// Encoding of comment is longer than 0xffff bytes.
+		/// </exception>
+		public void SetComment(string comment)
+		{
+			byte[] commentBytes = ZipConstants.ConvertToArray(comment);
+			if (commentBytes.Length > 0xffff) {
+				throw new ArgumentOutOfRangeException("comment");
+			}
+			zipComment = commentBytes;
+		}
+		
+		/// <summary>
+		/// Sets default compression level.  The new level will be activated
+		/// immediately.
+		/// </summary>
+		/// <exception cref="ArgumentOutOfRangeException">
+		/// Level specified is not supported.
+		/// </exception>
+		/// <see cref="Deflater"/>
+		public void SetLevel(int level)
+		{
+			defaultCompressionLevel = level;
+			def.SetLevel(level);
+		}
+		
+		/// <summary>
+		/// Get the current deflate compression level
+		/// </summary>
+		/// <returns>The current compression level</returns>
+		public int GetLevel()
+		{
+			return def.GetLevel();
+		}
+		
+		/// <summary>
+		/// Write an unsigned short in little endian byte order.
+		/// </summary>
+		private  void WriteLeShort(int value)
+		{
+			baseOutputStream.WriteByte((byte)(value & 0xff));
+			baseOutputStream.WriteByte((byte)((value >> 8) & 0xff));
+		}
+		
+		/// <summary>
+		/// Write an int in little endian byte order.
+		/// </summary>
+		private void WriteLeInt(int value)
+		{
+			WriteLeShort(value);
+			WriteLeShort(value >> 16);
+		}
+		
+		/// <summary>
+		/// Write an int in little endian byte order.
+		/// </summary>
+		private void WriteLeLong(long value)
+		{
+			WriteLeInt((int)value);
+			WriteLeInt((int)(value >> 32));
+		}
+		
+		
+		bool patchEntryHeader = false;
+		
+		long headerPatchPos   = -1;
+
+		/// <summary>
+		/// Starts a new Zip entry. It automatically closes the previous
+		/// entry if present.
+		/// All entry elements bar name are optional, but must be correct if present.
+		/// If the compression method is stored and the output is not patchable
+		/// the compression for that entry is automatically changed to deflate level 0
+		/// </summary>
+		/// <param name="entry">
+		/// the entry.
+		/// </param>
+		/// <exception cref="System.IO.IOException">
+		/// if an I/O error occured.
+		/// </exception>
+		/// <exception cref="System.InvalidOperationException">
+		/// if stream was finished
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// Too many entries in the Zip file<br/>
+		/// Entry name is too long<br/>
+		/// Finish has already been called<br/>
+		/// </exception>
+		public void PutNextEntry(ZipEntry entry)
+		{
+			if (entries == null) {
+				throw new InvalidOperationException("ZipOutputStream was finished");
+			}
+			
+			if (curEntry != null) {
+				CloseEntry();
+			}
+
+			if (entries.Count >= 0xffff) {
+				throw new ZipException("Too many entries for Zip file");
+			}
+			
+			CompressionMethod method = entry.CompressionMethod;
+			int compressionLevel = defaultCompressionLevel;
+			
+			entry.Flags = 0;
+			patchEntryHeader = false;
+			bool headerInfoAvailable = true;
+			
+			if (method == CompressionMethod.Stored) {
+				if (entry.CompressedSize >= 0) {
+					if (entry.Size < 0) {
+						entry.Size = entry.CompressedSize;
+					} else if (entry.Size != entry.CompressedSize) {
+						throw new ZipException("Method STORED, but compressed size != size");
+					}
+				} else {
+					if (entry.Size >= 0) {
+						entry.CompressedSize = entry.Size;
+					}
+				}
+					
+				if (entry.Size < 0 || entry.Crc < 0) {
+					if (CanPatchEntries == true) {
+						headerInfoAvailable = false;
+					}
+					else {
+                  // Cant patch entries so storing is not possible.
+						method = CompressionMethod.Deflated;
+						compressionLevel = 0;
+					}
+				}
+			}
+				
+			if (method == CompressionMethod.Deflated) {
+				if (entry.Size == 0) {
+               // No need to compress - no data.
+					entry.CompressedSize = entry.Size;
+					entry.Crc = 0;
+					method = CompressionMethod.Stored;
+				} else if (entry.CompressedSize < 0 || entry.Size < 0 || entry.Crc < 0) {
+					headerInfoAvailable = false;
+				}
+			}
+			
+			if (headerInfoAvailable == false) {
+				if (CanPatchEntries == false) {
+					entry.Flags |= 8;
+				} else {
+					patchEntryHeader = true;
+				}
+			}
+			
+			if (Password != null) {
+				entry.IsCrypted = true;
+				if (entry.Crc < 0) {
+               // Need to append data descriptor as crc is used for encryption and its not known.
+					entry.Flags |= 8;
+				}
+			}
+			entry.Offset = (int)offset;
+			entry.CompressionMethod = (CompressionMethod)method;
+			
+			curMethod    = method;
+			
+			// Write the local file header
+			WriteLeInt(ZipConstants.LOCSIG);
+			
+			WriteLeShort(entry.Version);
+			WriteLeShort(entry.Flags);
+			WriteLeShort((byte)method);
+			WriteLeInt((int)entry.DosTime);
+			if (headerInfoAvailable == true) {
+				WriteLeInt((int)entry.Crc);
+				WriteLeInt(entry.IsCrypted ? (int)entry.CompressedSize + ZipConstants.CRYPTO_HEADER_SIZE : (int)entry.CompressedSize);
+				WriteLeInt((int)entry.Size);
+			} else {
+				if (patchEntryHeader == true) {
+					headerPatchPos = baseOutputStream.Position;
+				}
+				WriteLeInt(0);	// Crc
+				WriteLeInt(0);	// Compressed size
+				WriteLeInt(0);	// Uncompressed size
+			}
+			
+			byte[] name = ZipConstants.ConvertToArray(entry.Name);
+			
+			if (name.Length > 0xFFFF) {
+				throw new ZipException("Entry name too long.");
+			}
+
+			byte[] extra = entry.ExtraData;
+			if (extra == null) {
+				extra = new byte[0];
+			}
+
+			if (extra.Length > 0xFFFF) {
+				throw new ZipException("Extra data too long.");
+			}
+			
+			WriteLeShort(name.Length);
+			WriteLeShort(extra.Length);
+			baseOutputStream.Write(name, 0, name.Length);
+			baseOutputStream.Write(extra, 0, extra.Length);
+			
+			offset += ZipConstants.LOCHDR + name.Length + extra.Length;
+			
+			// Activate the entry.
+			curEntry = entry;
+			crc.Reset();
+			if (method == CompressionMethod.Deflated) {
+				def.Reset();
+				def.SetLevel(compressionLevel);
+			}
+			size = 0;
+			
+			if (entry.IsCrypted == true) {
+				if (entry.Crc < 0) {			// so testing Zip will says its ok
+					WriteEncryptionHeader(entry.DosTime << 16);
+				} else {
+					WriteEncryptionHeader(entry.Crc);
+				}
+			}
+		}
+		
+		/// <summary>
+		/// Closes the current entry, updating header and footer information as required
+		/// </summary>
+		/// <exception cref="System.IO.IOException">
+		/// An I/O error occurs.
+		/// </exception>
+		/// <exception cref="System.InvalidOperationException">
+		/// No entry is active.
+		/// </exception>
+		public void CloseEntry()
+		{
+			if (curEntry == null) {
+				throw new InvalidOperationException("No open entry");
+			}
+			
+			// First finish the deflater, if appropriate
+			if (curMethod == CompressionMethod.Deflated) {
+				base.Finish();
+			}
+			
+			long csize = curMethod == CompressionMethod.Deflated ? def.TotalOut : size;
+			
+			if (curEntry.Size < 0) {
+				curEntry.Size = size;
+			} else if (curEntry.Size != size) {
+				throw new ZipException("size was " + size + ", but I expected " + curEntry.Size);
+			}
+			
+			if (curEntry.CompressedSize < 0) {
+				curEntry.CompressedSize = csize;
+			} else if (curEntry.CompressedSize != csize) {
+				throw new ZipException("compressed size was " + csize + ", but I expected " + curEntry.CompressedSize);
+			}
+			
+			if (curEntry.Crc < 0) {
+				curEntry.Crc = crc.Value;
+			} else if (curEntry.Crc != crc.Value) {
+				throw new ZipException("crc was " + crc.Value +	", but I expected " + curEntry.Crc);
+			}
+			
+			offset += csize;
+
+			if (offset > 0xffffffff) {
+				throw new ZipException("Maximum Zip file size exceeded");
+			}
+				
+			if (curEntry.IsCrypted == true) {
+				curEntry.CompressedSize += ZipConstants.CRYPTO_HEADER_SIZE;
+			}
+				
+			// Patch the header if possible
+			if (patchEntryHeader == true) {
+				long curPos = baseOutputStream.Position;
+				baseOutputStream.Seek(headerPatchPos, SeekOrigin.Begin);
+				WriteLeInt((int)curEntry.Crc);
+				WriteLeInt((int)curEntry.CompressedSize);
+				WriteLeInt((int)curEntry.Size);
+				baseOutputStream.Seek(curPos, SeekOrigin.Begin);
+				patchEntryHeader = false;
+			}
+
+			// Add data descriptor if flagged as required
+			if ((curEntry.Flags & 8) != 0) {
+				WriteLeInt(ZipConstants.EXTSIG);
+				WriteLeInt((int)curEntry.Crc);
+				WriteLeInt((int)curEntry.CompressedSize);
+				WriteLeInt((int)curEntry.Size);
+				offset += ZipConstants.EXTHDR;
+			}
+			
+			entries.Add(curEntry);
+			curEntry = null;
+		}
+		
+		void WriteEncryptionHeader(long crcValue)
+		{
+			offset += ZipConstants.CRYPTO_HEADER_SIZE;
+			
+			InitializePassword(Password);
+			
+			byte[] cryptBuffer = new byte[ZipConstants.CRYPTO_HEADER_SIZE];
+			Random rnd = new Random();
+			rnd.NextBytes(cryptBuffer);
+			cryptBuffer[11] = (byte)(crcValue >> 24);
+			
+			EncryptBlock(cryptBuffer, 0, cryptBuffer.Length);
+			baseOutputStream.Write(cryptBuffer, 0, cryptBuffer.Length);
+		}
+		
+		/// <summary>
+		/// Writes the given buffer to the current entry.
+		/// </summary>
+		/// <exception cref="ZipException">
+		/// Archive size is invalid
+		/// </exception>
+		/// <exception cref="System.InvalidOperationException">
+		/// No entry is active.
+		/// </exception>
+		public override void Write(byte[] b, int off, int len)
+		{
+			if (curEntry == null) {
+				throw new InvalidOperationException("No open entry.");
+			}
+			
+			if (len <= 0)
+				return;
+			
+			crc.Update(b, off, len);
+			size += len;
+			
+			if (size > 0xffffffff || size < 0) {
+				throw new ZipException("Maximum entry size exceeded");
+			}
+				
+
+			switch (curMethod) {
+				case CompressionMethod.Deflated:
+					base.Write(b, off, len);
+					break;
+				
+				case CompressionMethod.Stored:
+					if (Password != null) {
+						byte[] buf = new byte[len];
+						Array.Copy(b, off, buf, 0, len);
+						EncryptBlock(buf, 0, len);
+						baseOutputStream.Write(buf, off, len);
+					} else {
+						baseOutputStream.Write(b, off, len);
+					}
+					break;
+			}
+		}
+		
+		/// <summary>
+		/// Finishes the stream.  This will write the central directory at the
+		/// end of the zip file and flush the stream.
+		/// </summary>
+		/// <remarks>
+		/// This is automatically called when the stream is closed.
+		/// </remarks>
+		/// <exception cref="System.IO.IOException">
+		/// An I/O error occurs.
+		/// </exception>
+		/// <exception cref="ZipException">
+		/// Comment exceeds the maximum length<br/>
+		/// Entry name exceeds the maximum length
+		/// </exception>
+		public override void Finish()
+		{
+			if (entries == null)  {
+				return;
+			}
+			
+			if (curEntry != null) {
+				CloseEntry();
+			}
+			
+			int numEntries = 0;
+			int sizeEntries = 0;
+			
+			foreach (ZipEntry entry in entries) {
+				CompressionMethod method = entry.CompressionMethod;
+				WriteLeInt(ZipConstants.CENSIG); 
+				WriteLeShort(ZipConstants.VERSION_MADE_BY);
+				WriteLeShort(entry.Version);
+				WriteLeShort(entry.Flags);
+				WriteLeShort((short)method);
+				WriteLeInt((int)entry.DosTime);
+				WriteLeInt((int)entry.Crc);
+				WriteLeInt((int)entry.CompressedSize);
+				WriteLeInt((int)entry.Size);
+				
+				byte[] name = ZipConstants.ConvertToArray(entry.Name);
+				
+				if (name.Length > 0xffff) {
+					throw new ZipException("Name too long.");
+				}
+				
+				byte[] extra = entry.ExtraData;
+				if (extra == null) {
+					extra = new byte[0];
+				}
+				
+				byte[] entryComment = entry.Comment != null ? ZipConstants.ConvertToArray(entry.Comment) : new byte[0];
+				if (entryComment.Length > 0xffff) {
+					throw new ZipException("Comment too long.");
+				}
+				
+				WriteLeShort(name.Length);
+				WriteLeShort(extra.Length);
+				WriteLeShort(entryComment.Length);
+				WriteLeShort(0);	// disk number
+				WriteLeShort(0);	// internal file attr
+									// external file attribute
+
+				if (entry.ExternalFileAttributes != -1) {
+					WriteLeInt(entry.ExternalFileAttributes);
+				} else {
+					if (entry.IsDirectory) {                         // mark entry as directory (from nikolam.AT.perfectinfo.com)
+						WriteLeInt(16);
+					} else {
+						WriteLeInt(0);
+					}
+				}
+
+				WriteLeInt(entry.Offset);
+				
+				baseOutputStream.Write(name,    0, name.Length);
+				baseOutputStream.Write(extra,   0, extra.Length);
+				baseOutputStream.Write(entryComment, 0, entryComment.Length);
+				++numEntries;
+				sizeEntries += ZipConstants.CENHDR + name.Length + extra.Length + entryComment.Length;
+			}
+			
+			WriteLeInt(ZipConstants.ENDSIG);
+			WriteLeShort(0);                    // number of this disk
+			WriteLeShort(0);                    // no of disk with start of central dir
+			WriteLeShort(numEntries);           // entries in central dir for this disk
+			WriteLeShort(numEntries);           // total entries in central directory
+			WriteLeInt(sizeEntries);            // size of the central directory
+			WriteLeInt((int)offset);            // offset of start of central dir
+			WriteLeShort(zipComment.Length);
+			baseOutputStream.Write(zipComment, 0, zipComment.Length);
+			baseOutputStream.Flush();
+			entries = null;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Microsoft.Build/Test/FunctionalTestReferenceProject.csproj
+++ mono-4.6.2.7+dfsg/mcs/class/Microsoft.Build/Test/FunctionalTestReferenceProject.csproj
@@ -1,58 +1,58 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <AssemblyName>ZigZag</AssemblyName>
-    <ProjectGuid>{362f36b0-b26c-42de-8586-20df66bd05e8}</ProjectGuid>
-    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
-    <CodePage />
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>Full</DebugType>
-    <Optimize>False</Optimize>
-    <Platform>AnyCPU</Platform>
-    <ProjectTypeGuids>{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
-    <WarningLevel>4</WarningLevel>
-    <OutputPath>bin\Debug</OutputPath>
-    <OutputType>winexe</OutputType>
-    <DefineConstants>DEBUG,TRACE</DefineConstants>
-    <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="mscorlib" />
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-    <Reference Include="Test">
-      <Name>Test</Name>
-      <HintPath>Test.dll</HintPath>
-    </Reference>
-    <Reference Include="Test2">
-      <Name>Test2</Name>
-      <HintPath>Test2.dll</HintPath>
-    </Reference>
-    <Reference Include="Test3">
-      <Name>Test3</Name>
-      <HintPath>Test3.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Test.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Test2.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Test3.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <EmbeddedResource Include="Test.resx">
-      <LogicalName>Name.Space.Test</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Test2.resx">
-      <LogicalName>Name.Space.Test</LogicalName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Test3.resx">
-      <LogicalName>Name.Space.Test</LogicalName>
-    </EmbeddedResource>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <AssemblyName>ZigZag</AssemblyName>
+    <ProjectGuid>{362f36b0-b26c-42de-8586-20df66bd05e8}</ProjectGuid>
+    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
+    <CodePage />
+    <DebugSymbols>True</DebugSymbols>
+    <DebugType>Full</DebugType>
+    <Optimize>False</Optimize>
+    <Platform>AnyCPU</Platform>
+    <ProjectTypeGuids>{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
+    <WarningLevel>4</WarningLevel>
+    <OutputPath>bin\Debug</OutputPath>
+    <OutputType>winexe</OutputType>
+    <DefineConstants>DEBUG,TRACE</DefineConstants>
+    <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="mscorlib" />
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+    <Reference Include="Test">
+      <Name>Test</Name>
+      <HintPath>Test.dll</HintPath>
+    </Reference>
+    <Reference Include="Test2">
+      <Name>Test2</Name>
+      <HintPath>Test2.dll</HintPath>
+    </Reference>
+    <Reference Include="Test3">
+      <Name>Test3</Name>
+      <HintPath>Test3.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Test.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Test2.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Test3.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <EmbeddedResource Include="Test.resx">
+      <LogicalName>Name.Space.Test</LogicalName>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Test2.resx">
+      <LogicalName>Name.Space.Test</LogicalName>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Test3.resx">
+      <LogicalName>Name.Space.Test</LogicalName>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Microsoft.Build/Test/FunctionalTestReferenceProject3.csproj
+++ mono-4.6.2.7+dfsg/mcs/class/Microsoft.Build/Test/FunctionalTestReferenceProject3.csproj
@@ -1,124 +1,124 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="..\..\Build\NuGet.Settings.targets" />
-  <PropertyGroup>
-    <ProjectGuid>{793B20A9-E263-4B54-BB31-305B602087CE}</ProjectGuid>
-    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NuGet.Server</RootNamespace>
-    <AssemblyName>NuGet.Server</AssemblyName>
-    <OutputPath>bin</OutputPath>
-    <UseIISExpress>true</UseIISExpress>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Elmah">
-      <HintPath>..\..\packages\elmah.corelibrary.1.2\lib\Elmah.dll</HintPath>
-    </Reference>
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="Ninject">
-      <HintPath>..\..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll</HintPath>
-    </Reference>
-    <Reference Include="RouteMagic">
-      <HintPath>..\..\packages\RouteMagic.1.0\lib\net40\RouteMagic.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Data.Services" />
-    <Reference Include="System.Data.Services.Client" />
-    <Reference Include="System.ServiceModel" />
-    <Reference Include="System.ServiceModel.Activation" />
-    <Reference Include="System.ServiceModel.Web" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Web.Services" />
-    <Reference Include="WebActivator">
-      <HintPath>..\..\packages\WebActivator.1.4.1\lib\net40\WebActivator.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\Common\CommonAssemblyInfo.cs">
-      <Link>Properties\CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="DataServices\Package.cs" />
-    <Compile Include="DataServices\PackageContext.cs" />
-    <Compile Include="Publishing\PackageService.cs" />
-    <Compile Include="Infrastructure\Bindings.cs" />
-    <Compile Include="Infrastructure\Helpers.cs" />
-    <Compile Include="Infrastructure\IPackageAuthenticationService.cs" />
-    <Compile Include="Infrastructure\IServerPackageRepository.cs" />
-    <Compile Include="Infrastructure\PackageAuthenticationService.cs" />
-    <Compile Include="Infrastructure\ServerPackageRepository.cs" />
-    <Compile Include="Infrastructure\NinjectBootstrapper.cs" />
-    <Compile Include="Infrastructure\DerivedPackageData.cs" />
-    <Compile Include="DataServices\Packages.svc.cs">
-      <DependentUpon>Packages.svc</DependentUpon>
-    </Compile>
-    <Compile Include="Infrastructure\PackageUtility.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="Default.aspx" />
-    <Content Include="favicon.ico" />
-    <Content Include="DataServices\Packages.svc" />
-    <Content Include="license.txt" />
-    <Content Include="Packages\Readme.txt" />
-    <Content Include="Web.config">
-      <SubType>Designer</SubType>
-    </Content>
-    <Content Include="Web.Debug.config">
-      <DependentUpon>Web.config</DependentUpon>
-    </Content>
-    <Content Include="Web.Release.config">
-      <DependentUpon>Web.config</DependentUpon>
-    </Content>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="DataServices\Routes.cs" />
-    <None Include="Properties\NuGet.Server.nuspec" />
-    <Content Include="DataServices\Routes.cs.pp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Core\Core.csproj">
-      <Project>{F879F274-EFA0-4157-8404-33A19B4E6AEC}</Project>
-      <Name>Core</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="packages.config">
-      <SubType>Designer</SubType>
-    </Content>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target> -->
-  <Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
-    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
-  </Target>
-  <ProjectExtensions>
-    <VisualStudio>
-      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
-        <WebProjectProperties>
-          <UseIIS>True</UseIIS>
-          <AutoAssignPort>True</AutoAssignPort>
-          <DevelopmentServerPort>18572</DevelopmentServerPort>
-          <DevelopmentServerVPath>/</DevelopmentServerVPath>
-          <IISUrl>http://localhost:18572/</IISUrl>
-          <NTLMAuthentication>False</NTLMAuthentication>
-          <UseCustomServer>False</UseCustomServer>
-          <CustomServerUrl></CustomServerUrl>
-          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
-        </WebProjectProperties>
-      </FlavorProperties>
-    </VisualStudio>
-  </ProjectExtensions>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\..\Build\NuGet.Settings.targets" />
+  <PropertyGroup>
+    <ProjectGuid>{793B20A9-E263-4B54-BB31-305B602087CE}</ProjectGuid>
+    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NuGet.Server</RootNamespace>
+    <AssemblyName>NuGet.Server</AssemblyName>
+    <OutputPath>bin</OutputPath>
+    <UseIISExpress>true</UseIISExpress>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Elmah">
+      <HintPath>..\..\packages\elmah.corelibrary.1.2\lib\Elmah.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="Ninject">
+      <HintPath>..\..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll</HintPath>
+    </Reference>
+    <Reference Include="RouteMagic">
+      <HintPath>..\..\packages\RouteMagic.1.0\lib\net40\RouteMagic.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Data.Services" />
+    <Reference Include="System.Data.Services.Client" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.ServiceModel.Activation" />
+    <Reference Include="System.ServiceModel.Web" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Web" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Configuration" />
+    <Reference Include="System.Web.Services" />
+    <Reference Include="WebActivator">
+      <HintPath>..\..\packages\WebActivator.1.4.1\lib\net40\WebActivator.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\Common\CommonAssemblyInfo.cs">
+      <Link>Properties\CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="DataServices\Package.cs" />
+    <Compile Include="DataServices\PackageContext.cs" />
+    <Compile Include="Publishing\PackageService.cs" />
+    <Compile Include="Infrastructure\Bindings.cs" />
+    <Compile Include="Infrastructure\Helpers.cs" />
+    <Compile Include="Infrastructure\IPackageAuthenticationService.cs" />
+    <Compile Include="Infrastructure\IServerPackageRepository.cs" />
+    <Compile Include="Infrastructure\PackageAuthenticationService.cs" />
+    <Compile Include="Infrastructure\ServerPackageRepository.cs" />
+    <Compile Include="Infrastructure\NinjectBootstrapper.cs" />
+    <Compile Include="Infrastructure\DerivedPackageData.cs" />
+    <Compile Include="DataServices\Packages.svc.cs">
+      <DependentUpon>Packages.svc</DependentUpon>
+    </Compile>
+    <Compile Include="Infrastructure\PackageUtility.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Default.aspx" />
+    <Content Include="favicon.ico" />
+    <Content Include="DataServices\Packages.svc" />
+    <Content Include="license.txt" />
+    <Content Include="Packages\Readme.txt" />
+    <Content Include="Web.config">
+      <SubType>Designer</SubType>
+    </Content>
+    <Content Include="Web.Debug.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </Content>
+    <Content Include="Web.Release.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DataServices\Routes.cs" />
+    <None Include="Properties\NuGet.Server.nuspec" />
+    <Content Include="DataServices\Routes.cs.pp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Core\Core.csproj">
+      <Project>{F879F274-EFA0-4157-8404-33A19B4E6AEC}</Project>
+      <Name>Core</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="packages.config">
+      <SubType>Designer</SubType>
+    </Content>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target> -->
+  <Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
+    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
+  </Target>
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
+        <WebProjectProperties>
+          <UseIIS>True</UseIIS>
+          <AutoAssignPort>True</AutoAssignPort>
+          <DevelopmentServerPort>18572</DevelopmentServerPort>
+          <DevelopmentServerVPath>/</DevelopmentServerVPath>
+          <IISUrl>http://localhost:18572/</IISUrl>
+          <NTLMAuthentication>False</NTLMAuthentication>
+          <UseCustomServer>False</UseCustomServer>
+          <CustomServerUrl></CustomServerUrl>
+          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
+        </WebProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Microsoft.Build/Test/Microsoft.Build.Test.csproj
+++ mono-4.6.2.7+dfsg/mcs/class/Microsoft.Build/Test/Microsoft.Build.Test.csproj
@@ -1,63 +1,63 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{5C1BA631-5120-4930-A112-80783328B72B}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Microsoft.Build.Test</RootNamespace>
-    <AssemblyName>Microsoft.Build.Test</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="nunit.framework">
-      <SpecificVersion>False</SpecificVersion>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="FunctionalTest.cs" />
-    <Compile Include="Microsoft.Build.Internal\CollectionFromEnumerableTest.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Microsoft.Build.Construction\" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Microsoft.Build.csproj">
-      <Project>{B2012E7F-8F8D-4908-8045-413F2BD1022D}</Project>
-      <Name>Microsoft.Build</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5C1BA631-5120-4930-A112-80783328B72B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Microsoft.Build.Test</RootNamespace>
+    <AssemblyName>Microsoft.Build.Test</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="nunit.framework">
+      <SpecificVersion>False</SpecificVersion>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="FunctionalTest.cs" />
+    <Compile Include="Microsoft.Build.Internal\CollectionFromEnumerableTest.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Microsoft.Build.Construction\" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Microsoft.Build.csproj">
+      <Project>{B2012E7F-8F8D-4908-8045-413F2BD1022D}</Project>
+      <Name>Microsoft.Build</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Microsoft.Build/Test/Microsoft.Build.csproj
+++ mono-4.6.2.7+dfsg/mcs/class/Microsoft.Build/Test/Microsoft.Build.csproj
@@ -1,143 +1,143 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{B2012E7F-8F8D-4908-8045-413F2BD1022D}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <RootNamespace>Microsoft.Build</RootNamespace>
-    <AssemblyName>Microsoft.Build</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <FileUpgradeFlags />
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <UpgradeBackupLocation />
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug</OutputPath>
-    <DefineConstants>DEBUG;NET_4_0</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>false</ConsolePause>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>none</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Release</OutputPath>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <ConsolePause>false</ConsolePause>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.Build.Engine" />
-    <Reference Include="Microsoft.Build.Framework" />
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Microsoft.Build.Construction\ProjectExtensionsElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectWhenElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectOtherwiseElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectOutputElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectTaskElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectOnErrorElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskParameterElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskBodyElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\UsingTaskParameterGroupElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectTargetElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectItemDefinitionElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectItemDefinitionGroupElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectChooseElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectElementContainer.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectImportElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectImportGroupElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectItemElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectItemGroupElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectMetadataElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectPropertyElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectPropertyGroupElement.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectRootElement.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ProjectCollection.cs" />
-    <Compile Include="Microsoft.Build.Exceptions\InvalidProjectFileException.cs" />
-    <Compile Include="Microsoft.Build.Internal\CollectionFromEnumerable.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\Project.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ProjectLoadSettings.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ProjectItem.cs" />
-    <Compile Include="Microsoft.Build.Construction\ProjectCommentElement.cs" />
-    <Compile Include="Microsoft.Build.Internal\ReverseEnumerable.cs" />
-    <Compile Include="Microsoft.Build.Internal\FilteredEnumerable.cs" />
-    <Compile Include="Microsoft.Build.Execution\BuildResult.cs" />
-    <Compile Include="Microsoft.Build.Execution\ITargetResult.cs" />
-    <Compile Include="Microsoft.Build.Execution\TargetResultCode.cs" />
-    <Compile Include="Microsoft.Build.Execution\TargetResult.cs" />
-    <Compile Include="Microsoft.Build.Execution\BuildResultCode.cs" />
-    <Compile Include="Microsoft.Build.Logging\FileLogger.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ProjectProperty.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ToolsetDefinitionLocations.cs" />
-    <Compile Include="Microsoft.Build.Logging\ForwardingLoggerRecord.cs" />
-    <Compile Include="Microsoft.Build.Logging\LoggerDescription.cs" />
-    <Compile Include="Microsoft.Build.Execution\BuildRequestData.cs" />
-    <Compile Include="Microsoft.Build.Execution\BuildRequestDataFlags.cs" />
-    <Compile Include="Microsoft.Build.Execution\HostServices.cs" />
-    <Compile Include="Microsoft.Build.Execution\NodeAffinity.cs" />
-    <Compile Include="Microsoft.Build.Execution\ProjectItemInstance.cs" />
-    <Compile Include="Microsoft.Build.Execution\ProjectInstance.cs" />
-    <Compile Include="Microsoft.Build.Execution\ProjectPropertyInstance.cs" />
-    <Compile Include="Microsoft.Build.Execution\ProjectMetadataInstance.cs" />
-    <Compile Include="Microsoft.Build.Execution\BuildParameters.cs" />
-    <Compile Include="Microsoft.Build.Logging\ConsoleLogger.cs" />
-    <Compile Include="Microsoft.Build.Logging\ColorResetter.cs" />
-    <Compile Include="Microsoft.Build.Logging\ColorSetter.cs" />
-    <Compile Include="Microsoft.Build.Logging\WriteHandler.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\Toolset.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ProjectMetadata.cs" />
-    <Compile Include="Microsoft.Build.Execution\ProjectTargetInstance.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ProjectItemDefinition.cs" />
-    <Compile Include="Microsoft.Build.Evaluation\ResolvedImport.cs" />
-    <Compile Include="Microsoft.Build.Execution\BuildManager.cs" />
-    <Compile Include="Microsoft.Build.Execution\BuildSubmission.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <ItemGroup />
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{B2012E7F-8F8D-4908-8045-413F2BD1022D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <RootNamespace>Microsoft.Build</RootNamespace>
+    <AssemblyName>Microsoft.Build</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags />
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;NET_4_0</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>none</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.Build.Engine" />
+    <Reference Include="Microsoft.Build.Framework" />
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Microsoft.Build.Construction\ProjectExtensionsElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectWhenElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectOtherwiseElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectOutputElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectTaskElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectOnErrorElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskParameterElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskBodyElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\UsingTaskParameterGroupElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectUsingTaskElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectTargetElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectItemDefinitionElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectItemDefinitionGroupElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectChooseElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectElementContainer.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectImportElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectImportGroupElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectItemElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectItemGroupElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectMetadataElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectPropertyElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectPropertyGroupElement.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectRootElement.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ProjectCollection.cs" />
+    <Compile Include="Microsoft.Build.Exceptions\InvalidProjectFileException.cs" />
+    <Compile Include="Microsoft.Build.Internal\CollectionFromEnumerable.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\Project.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ProjectLoadSettings.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ProjectItem.cs" />
+    <Compile Include="Microsoft.Build.Construction\ProjectCommentElement.cs" />
+    <Compile Include="Microsoft.Build.Internal\ReverseEnumerable.cs" />
+    <Compile Include="Microsoft.Build.Internal\FilteredEnumerable.cs" />
+    <Compile Include="Microsoft.Build.Execution\BuildResult.cs" />
+    <Compile Include="Microsoft.Build.Execution\ITargetResult.cs" />
+    <Compile Include="Microsoft.Build.Execution\TargetResultCode.cs" />
+    <Compile Include="Microsoft.Build.Execution\TargetResult.cs" />
+    <Compile Include="Microsoft.Build.Execution\BuildResultCode.cs" />
+    <Compile Include="Microsoft.Build.Logging\FileLogger.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ProjectProperty.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ToolsetDefinitionLocations.cs" />
+    <Compile Include="Microsoft.Build.Logging\ForwardingLoggerRecord.cs" />
+    <Compile Include="Microsoft.Build.Logging\LoggerDescription.cs" />
+    <Compile Include="Microsoft.Build.Execution\BuildRequestData.cs" />
+    <Compile Include="Microsoft.Build.Execution\BuildRequestDataFlags.cs" />
+    <Compile Include="Microsoft.Build.Execution\HostServices.cs" />
+    <Compile Include="Microsoft.Build.Execution\NodeAffinity.cs" />
+    <Compile Include="Microsoft.Build.Execution\ProjectItemInstance.cs" />
+    <Compile Include="Microsoft.Build.Execution\ProjectInstance.cs" />
+    <Compile Include="Microsoft.Build.Execution\ProjectPropertyInstance.cs" />
+    <Compile Include="Microsoft.Build.Execution\ProjectMetadataInstance.cs" />
+    <Compile Include="Microsoft.Build.Execution\BuildParameters.cs" />
+    <Compile Include="Microsoft.Build.Logging\ConsoleLogger.cs" />
+    <Compile Include="Microsoft.Build.Logging\ColorResetter.cs" />
+    <Compile Include="Microsoft.Build.Logging\ColorSetter.cs" />
+    <Compile Include="Microsoft.Build.Logging\WriteHandler.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\Toolset.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ProjectMetadata.cs" />
+    <Compile Include="Microsoft.Build.Execution\ProjectTargetInstance.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ProjectItemDefinition.cs" />
+    <Compile Include="Microsoft.Build.Evaluation\ResolvedImport.cs" />
+    <Compile Include="Microsoft.Build.Execution\BuildManager.cs" />
+    <Compile Include="Microsoft.Build.Execution\BuildSubmission.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.debug.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.debug.js
@@ -1,6638 +1,6638 @@
-﻿//-----------------------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------
-// MicrosoftAjax.js
-// Microsoft AJAX Framework.
-
-
-Function.__typeName = 'Function';
-Function.__class = true;
-
-Function.createCallback = function Function$createCallback(method, context) {
-    /// <param name="method" type="Function"></param>
-    /// <param name="context" mayBeNull="true"></param>
-    /// <returns type="Function"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "method", type: Function},
-        {name: "context", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-
-        
-    return function() {
-        var l = arguments.length;
-        if (l > 0) {
-                        var args = [];
-            for (var i = 0; i < l; i++) {
-                args[i] = arguments[i];
-            }
-            args[l] = context;
-            return method.apply(this, args);
-        }
-        return method.call(this, context);
-    }
-}
-
-Function.createDelegate = function Function$createDelegate(instance, method) {
-    /// <param name="instance" mayBeNull="true"></param>
-    /// <param name="method" type="Function"></param>
-    /// <returns type="Function"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance", mayBeNull: true},
-        {name: "method", type: Function}
-    ]);
-    if (e) throw e;
-
-
-        
-    return function() {
-        return method.apply(instance, arguments);
-    }
-}
-
-Function.emptyFunction = Function.emptyMethod = function Function$emptyMethod() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-
-Function._validateParams = function Function$_validateParams(params, expectedParams) {
-                                                                                                                                    
-    var e;
-
-    e = Function._validateParameterCount(params, expectedParams);
-    if (e) {
-        e.popStackFrame();
-        return e;
-    }
-
-    for (var i=0; i < params.length; i++) {
-                                var expectedParam = expectedParams[Math.min(i, expectedParams.length - 1)];
-
-        var paramName = expectedParam.name;
-        if (expectedParam.parameterArray) {
-                        paramName += "[" + (i - expectedParams.length + 1) + "]";
-        }
-
-        e = Function._validateParameter(params[i], expectedParam, paramName);
-        if (e) {
-            e.popStackFrame();
-            return e;
-        }
-    }
-
-
-    return null;
-}
-
-Function._validateParameterCount = function Function$_validateParameterCount(params, expectedParams) {
-    var maxParams = expectedParams.length;
-    var minParams = 0;
-    for (var i=0; i < expectedParams.length; i++) {
-        if (expectedParams[i].parameterArray) {
-            maxParams = Number.MAX_VALUE;
-        }
-        else if (!expectedParams[i].optional) {
-            minParams++;
-        }
-    }
-
-    if (params.length < minParams || params.length > maxParams) {
-        var e = Error.parameterCount();
-        e.popStackFrame();
-        return e;
-    }
-
-    return null;
-}
-
-Function._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) {
-    var e;
-
-    var expectedType = expectedParam.type;
-    var expectedInteger = !!expectedParam.integer;
-    var expectedDomElement = !!expectedParam.domElement;
-    var mayBeNull = !!expectedParam.mayBeNull;
-
-    e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
-    if (e) {
-        e.popStackFrame();
-        return e;
-    }
-
-        var expectedElementType = expectedParam.elementType;
-    var elementMayBeNull = !!expectedParam.elementMayBeNull;
-    if (expectedType === Array && typeof(param) !== "undefined" && param !== null &&
-        (expectedElementType || !elementMayBeNull)) {
-        var expectedElementInteger = !!expectedParam.elementInteger;
-        var expectedElementDomElement = !!expectedParam.elementDomElement;
-        for (var i=0; i < param.length; i++) {
-            var elem = param[i];
-            e = Function._validateParameterType(elem, expectedElementType,
-                expectedElementInteger, expectedElementDomElement, elementMayBeNull,
-                paramName + "[" + i + "]");
-            if (e) {
-                e.popStackFrame();
-                return e;
-            }
-        }
-    }
-
-    return null;
-}
-
-Function._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
-    var e;
-
-    if (typeof(param) === "undefined") {
-        if (mayBeNull) {
-            return null;
-        }
-        else {
-            e = Error.argumentUndefined(paramName);
-            e.popStackFrame();
-            return e;
-        }
-    }
-
-    if (param === null) {
-        if (mayBeNull) {
-            return null;
-        }
-        else {
-            e = Error.argumentNull(paramName);
-            e.popStackFrame();
-            return e;
-        }
-    }
-
-    if (expectedType && expectedType.__enum) {
-        if (typeof(param) !== 'number') {
-            e = Error.argumentType(paramName, Object.getType(param), expectedType);
-            e.popStackFrame();
-            return e;
-        }
-        if ((param % 1) === 0) {
-            var values = expectedType.prototype;
-            if (!expectedType.__flags || (param === 0)) {
-                for (var i in values) {
-                    if (values[i] === param) return null;
-                }
-            }
-            else {
-                var v = param;
-                for (var i in values) {
-                    var vali = values[i];
-                    if (vali === 0) continue;
-                    if ((vali & param) === vali) {
-                        v -= vali;
-                    }
-                    if (v === 0) return null;
-                }
-            }
-        }
-        e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
-        e.popStackFrame();
-        return e;
-    }
-
-                    if (expectedDomElement && (param !== window) && (param !== document) &&
-        !(window.HTMLElement && (param instanceof HTMLElement)) &&
-        (typeof(param.nodeName) !== 'string')) {
-
-        e = Error.argument(paramName, Sys.Res.argumentDomElement);
-        e.popStackFrame();
-        return e;
-    }
-
-        if (expectedType && !expectedType.isInstanceOfType(param)) {
-        e = Error.argumentType(paramName, Object.getType(param), expectedType);
-        e.popStackFrame();
-        return e;
-    }
-
-    if (expectedType === Number && expectedInteger) {
-                        if ((param % 1) !== 0) {
-            e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger);
-            e.popStackFrame();
-            return e;
-        }
-    }
-
-    return null;
-}
-Error.__typeName = 'Error';
-Error.__class = true;
-
-Error.create = function Error$create(message, errorInfo) {
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="errorInfo" optional="true" mayBeNull="true"></param>
-    /// <returns type="Error"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true},
-        {name: "errorInfo", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-
-            var e = new Error(message);
-    e.message = message;
-
-    if (errorInfo) {
-        for (var v in errorInfo) {
-            e[v] = errorInfo[v];
-        }
-    }
-
-    e.popStackFrame();
-    return e;
-}
-
-Error.argument = function Error$argument(paramName, message) {
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-
-    var displayMessage = "Sys.ArgumentException: " + (message ? message : Sys.Res.argument);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-
-    var e = Error.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName });
-    e.popStackFrame();
-    return e;
-}
-
-Error.argumentNull = function Error$argumentNull(paramName, message) {
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-
-    var displayMessage = "Sys.ArgumentNullException: " + (message ? message : Sys.Res.argumentNull);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-
-    var e = Error.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName });
-    e.popStackFrame();
-    return e;
-}
-
-Error.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) {
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="actualValue" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "actualValue", mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-
-    var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : Sys.Res.argumentOutOfRange);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-
-                if (typeof(actualValue) !== "undefined" && actualValue !== null) {
-        displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue);
-    }
-
-    var e = Error.create(displayMessage, {
-        name: "Sys.ArgumentOutOfRangeException",
-        paramName: paramName,
-        actualValue: actualValue
-    });
-    e.popStackFrame();
-    return e;
-}
-
-Error.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) {
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="actualType" type="Type" optional="true" mayBeNull="true"></param>
-    /// <param name="expectedType" type="Type" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "actualType", type: Type, mayBeNull: true, optional: true},
-        {name: "expectedType", type: Type, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-
-    var displayMessage = "Sys.ArgumentTypeException: ";
-    if (message) {
-        displayMessage += message;
-    }
-    else if (actualType && expectedType) {
-        displayMessage +=
-            String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName());
-    }
-    else {
-        displayMessage += Sys.Res.argumentType;
-    }
-
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-
-    var e = Error.create(displayMessage, {
-        name: "Sys.ArgumentTypeException",
-        paramName: paramName,
-        actualType: actualType,
-        expectedType: expectedType
-    });
-    e.popStackFrame();
-    return e;
-}
-
-Error.argumentUndefined = function Error$argumentUndefined(paramName, message) {
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-
-    var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : Sys.Res.argumentUndefined);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-
-    var e = Error.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName });
-    e.popStackFrame();
-    return e;
-}
-
-Error.format = function Error$format(message) {
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    var displayMessage = "Sys.FormatException: " + (message ? message : Sys.Res.format);
-    var e = Error.create(displayMessage, {name: 'Sys.FormatException'});
-    e.popStackFrame();
-    return e;
-}
-
-Error.invalidOperation = function Error$invalidOperation(message) {
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    var displayMessage = "Sys.InvalidOperationException: " + (message ? message : Sys.Res.invalidOperation);
-
-    var e = Error.create(displayMessage, {name: 'Sys.InvalidOperationException'});
-    e.popStackFrame();
-    return e;
-}
-
-Error.notImplemented = function Error$notImplemented(message) {
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    var displayMessage = "Sys.NotImplementedException: " + (message ? message : Sys.Res.notImplemented);
-
-    var e = Error.create(displayMessage, {name: 'Sys.NotImplementedException'});
-    e.popStackFrame();
-    return e;
-}
-
-Error.parameterCount = function Error$parameterCount(message) {
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-
-    var displayMessage = "Sys.ParameterCountException: " + (message ? message : Sys.Res.parameterCount);
-    var e = Error.create(displayMessage, {name: 'Sys.ParameterCountException'});
-    e.popStackFrame();
-    return e;
-}
-
-Error.prototype.popStackFrame = function Error$popStackFrame() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-
-                            
-    if (typeof(this.stack) === "undefined" || this.stack === null ||
-        typeof(this.fileName) === "undefined" || this.fileName === null ||
-        typeof(this.lineNumber) === "undefined" || this.lineNumber === null) {
-        return;
-    }
-
-    var stackFrames = this.stack.split("\n");
-
-                var currentFrame = stackFrames[0];
-    var pattern = this.fileName + ":" + this.lineNumber;
-    while(typeof(currentFrame) !== "undefined" &&
-          currentFrame !== null &&
-          currentFrame.indexOf(pattern) === -1) {
-        stackFrames.shift();
-        currentFrame = stackFrames[0];
-    }
-
-    var nextFrame = stackFrames[1];
-
-        if (typeof(nextFrame) === "undefined" || nextFrame === null) {
-        return;
-    }
-
-        var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
-    if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) {
-        return;
-    }
-
-    this.fileName = nextFrameParts[1];
-
-        this.lineNumber = parseInt(nextFrameParts[2]);
-
-    stackFrames.shift();
-    this.stack = stackFrames.join("\n");
-}
-if (!window) this.window = this;
-
-window.Type = Function;
-
-window.__rootNamespaces = [];
-window.__registeredTypes = {};
-
-Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
-Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");
-
-Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) {
-    /// <param name="instance"></param>
-    /// <param name="name" type="String"></param>
-    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"},
-        {name: "name", type: String},
-        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    var baseMethod = this.getBaseMethod(instance, name);
-    if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
-    if (!baseArguments) {
-        return baseMethod.apply(instance);
-    }
-    else {
-        return baseMethod.apply(instance, baseArguments);
-    }
-}
-
-Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name) {
-    /// <param name="instance"></param>
-    /// <param name="name" type="String"></param>
-    /// <returns type="Function" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"},
-        {name: "name", type: String}
-    ]);
-    if (e) throw e;
-
-    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
-    var baseType = this.getBaseType();
-    if (baseType) {
-        var baseMethod = baseType.prototype[name];
-        return (baseMethod instanceof Function) ? baseMethod : null;
-    }
-
-    return null;
-}
-
-Type.prototype.getBaseType = function Type$getBaseType() {
-    /// <returns type="Type" mayBeNull="true"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
-}
-
-Type.prototype.getInterfaces = function Type$getInterfaces() {
-    /// <returns type="Array" elementType="Type" mayBeNull="false" elementMayBeNull="false"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    var result = [];
-    var type = this;
-    while(type) {
-        var interfaces = type.__interfaces;
-        if (interfaces) {
-            for (var i = 0, l = interfaces.length; i < l; i++) {
-                var interfaceType = interfaces[i];
-                if (!Array.contains(result, interfaceType)) {
-                    result[result.length] = interfaceType;
-                }
-            }
-        }
-        type = type.__baseType;
-    }
-    return result;
-}
-
-Type.prototype.getName = function Type$getName() {
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
-}
-
-Type.prototype.implementsInterface = function Type$implementsInterface(interfaceType) {
-    /// <param name="interfaceType" type="Type"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "interfaceType", type: Type}
-    ]);
-    if (e) throw e;
-
-    this.resolveInheritance();
-
-    var interfaceName = interfaceType.getName();
-    var cache = this.__interfaceCache;
-    if (cache) {
-        var cacheEntry = cache[interfaceName];
-        if (typeof(cacheEntry) !== 'undefined') return cacheEntry;
-    }
-    else {
-        cache = this.__interfaceCache = {};
-    }
-
-    var baseType = this;
-    while (baseType) {
-        var interfaces = baseType.__interfaces;
-        if (interfaces) {
-            if (Array.indexOf(interfaces, interfaceType) !== -1) {
-                return cache[interfaceName] = true;
-            }
-        }
-
-        baseType = baseType.__baseType;
-    }
-
-    return cache[interfaceName] = false;
-}
-
-Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType) {
-    /// <param name="parentType" type="Type"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "parentType", type: Type}
-    ]);
-    if (e) throw e;
-
-    this.resolveInheritance();
-    var baseType = this.__baseType;
-    while (baseType) {
-        if (baseType === parentType) {
-            return true;
-        }
-        baseType = baseType.__baseType;
-    }
-
-    return false;
-}
-
-Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments) {
-    /// <param name="instance"></param>
-    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"},
-        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
-
-    this.resolveInheritance();
-    if (this.__baseType) {
-        if (!baseArguments) {
-            this.__baseType.apply(instance);
-        }
-        else {
-            this.__baseType.apply(instance, baseArguments);
-        }
-    }
-
-    return instance;
-}
-
-Type.prototype.isImplementedBy = function Type$isImplementedBy(instance) {
-    /// <param name="instance" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if (typeof(instance) === "undefined" || instance === null) return false;
-
-    var instanceType = Object.getType(instance);
-    return !!(instanceType.implementsInterface && instanceType.implementsInterface(this));
-}
-
-Type.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {
-    /// <param name="instance" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if (typeof(instance) === "undefined" || instance === null) return false;
-
-    if (instance instanceof this) return true;
-
-    var instanceType = Object.getType(instance);
-    return !!(instanceType === this) ||
-           (instanceType.inheritsFrom && instanceType.inheritsFrom(this)) ||
-           (instanceType.implementsInterface && instanceType.implementsInterface(this));
-}
-
-Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {
-    /// <param name="typeName" type="String"></param>
-    /// <param name="baseType" type="Type" optional="true" mayBeNull="true"></param>
-    /// <param name="interfaceTypes" parameterArray="true" type="Type"></param>
-    /// <returns type="Type"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "typeName", type: String},
-        {name: "baseType", type: Type, mayBeNull: true, optional: true},
-        {name: "interfaceTypes", type: Type, parameterArray: true}
-    ]);
-    if (e) throw e;
-
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
-        var parsedName;
-    try {
-        parsedName = eval(typeName);
-    }
-    catch(e) {
-        throw Error.argument('typeName', Sys.Res.argumentTypeName);
-    }
-    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
-        if (window.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
-
-            if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType');
-    if (baseType && !baseType.__class) throw Error.argument('baseType', Sys.Res.baseNotAClass);
-
-    this.prototype.constructor = this;
-    this.__typeName = typeName;
-    this.__class = true;
-    if (baseType) {
-        this.__baseType = baseType;
-        this.__basePrototypePending = true;
-    }
-        if (!window.__classes) window.__classes = {};
-    window.__classes[typeName.toUpperCase()] = this;
-
-                if (interfaceTypes) {
-        this.__interfaces = [];
-        for (var i = 2; i < arguments.length; i++) {
-            var interfaceType = arguments[i];
-            if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface);
-            this.resolveInheritance();
-            for (var methodName in interfaceType.prototype) {
-                var method = interfaceType.prototype[methodName];
-                if (!this.prototype[methodName]) {
-                    this.prototype[methodName] = method;
-                }
-            }
-            this.__interfaces.push(interfaceType);
-        }
-    }
-    window.__registeredTypes[typeName] = true;
-
-    return this;
-}
-
-Type.prototype.registerInterface = function Type$registerInterface(typeName) {
-    /// <param name="typeName" type="String"></param>
-    /// <returns type="Type"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "typeName", type: String}
-    ]);
-    if (e) throw e;
-
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
-        var parsedName;
-    try {
-        parsedName = eval(typeName);
-    }
-    catch(e) {
-        throw Error.argument('typeName', Sys.Res.argumentTypeName);
-    }
-    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
-        if (window.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
-    this.prototype.constructor = this;
-    this.__typeName = typeName;
-    this.__interface = true;
-    window.__registeredTypes[typeName] = true;
-
-    return this;
-}
-
-Type.prototype.resolveInheritance = function Type$resolveInheritance() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-
-    if (this.__basePrototypePending) {
-        var baseType = this.__baseType;
-
-        baseType.resolveInheritance();
-
-        for (var memberName in baseType.prototype) {
-            var memberValue = baseType.prototype[memberName];
-            if (!this.prototype[memberName]) {
-                this.prototype[memberName] = memberValue;
-            }
-        }
-        delete this.__basePrototypePending;
-    }
-}
-
-Type.getRootNamespaces = function Type$getRootNamespaces() {
-    /// <returns type="Array"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return Array.clone(window.__rootNamespaces);
-}
-
-Type.isClass = function Type$isClass(type) {
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__class;
-}
-
-Type.isInterface = function Type$isInterface(type) {
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__interface;
-}
-
-Type.isNamespace = function Type$isNamespace(object) {
-    /// <param name="object" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "object", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if ((typeof(object) === 'undefined') || (object === null)) return false;
-    return !!object.__namespace;
-}
-
-Type.parse = function Type$parse(typeName, ns) {
-    /// <param name="typeName" type="String" mayBeNull="true"></param>
-    /// <param name="ns" optional="true" mayBeNull="true"></param>
-    /// <returns type="Type" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "typeName", type: String, mayBeNull: true},
-        {name: "ns", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    var fn;
-    if (ns) {
-        if (!window.__classes) return null;
-        fn = window.__classes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()];
-        return fn || null;
-    }
-    if (!typeName) return null;
-    if (!Type.__htClasses) {
-        Type.__htClasses = {};
-    }
-    fn = Type.__htClasses[typeName];
-    if (!fn) {
-        fn = eval(typeName);
-        if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName);
-        Type.__htClasses[typeName] = fn;
-    }
-    return fn;
-}
-
-Type.registerNamespace = function Type$registerNamespace(namespacePath) {
-    /// <param name="namespacePath" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "namespacePath", type: String}
-    ]);
-    if (e) throw e;
-
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
-    var rootObject = window;
-    var namespaceParts = namespacePath.split('.');
-
-    for (var i = 0; i < namespaceParts.length; i++) {
-        var currentPart = namespaceParts[i];
-        var ns = rootObject[currentPart];
-        if (ns && !ns.__namespace) {
-            throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsObject, namespaceParts.splice(0, i + 1).join('.')));
-        }
-        if (!ns) {
-            ns = rootObject[currentPart] = {};
-            if (i === 0) {
-                window.__rootNamespaces[window.__rootNamespaces.length] = ns;
-            }
-            ns.__namespace = true;
-            ns.__typeName = namespaceParts.slice(0, i + 1).join('.');
-            var parsedName;
-            try {
-                parsedName = eval(ns.__typeName);
-            }
-            catch(e) {
-                parsedName = null;
-            }
-            if (parsedName !== ns) {
-                delete rootObject[currentPart];
-                throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
-            }
-            ns.getName = function ns$getName() {return this.__typeName;}
-        }
-        rootObject = ns;
-    }
-}
-Object.__typeName = 'Object';
-Object.__class = true;
-
-Object.getType = function Object$getType(instance) {
-    /// <param name="instance"></param>
-    /// <returns type="Type"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"}
-    ]);
-    if (e) throw e;
-
-    var ctor = instance.constructor;
-    if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) {
-        return Object;
-    }
-    return ctor;
-}
-
-Object.getTypeName = function Object$getTypeName(instance) {
-    /// <param name="instance"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"}
-    ]);
-    if (e) throw e;
-
-    return Object.getType(instance).getName();
-}
-Boolean.__typeName = 'Boolean';
-Boolean.__class = true;
-
-Boolean.parse = function Boolean$parse(value) {
-    /// <param name="value" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String}
-    ]);
-    if (e) throw e;
-
-    var v = value.trim().toLowerCase();
-    if (v === 'false') return false;
-    if (v === 'true') return true;
-    throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse);
-}
-Date.__typeName = 'Date';
-Date.__class = true;
-
-Date._appendPreOrPostMatch = function Date$_appendPreOrPostMatch(preMatch, strBuilder) {
-                var quoteCount = 0;
-    var escaped = false;
-    for (var i = 0, il = preMatch.length; i < il; i++) {
-        var c = preMatch.charAt(i);
-        switch (c) {
-        case '\'':
-            if (escaped) strBuilder.append("'");
-            else quoteCount++;
-            escaped = false;
-            break;
-        case '\\':
-            if (escaped) strBuilder.append("\\");
-            escaped = !escaped;
-            break;
-        default:
-            strBuilder.append(c);
-            escaped = false;
-            break;
-        }
-    }
-    return quoteCount;
-}
-
-Date._expandFormat = function Date$_expandFormat(dtf, format) {
-        if (!format) {
-        format = "F";
-    }
-    if (format.length === 1) {
-        switch (format) {
-        case "d":
-            return dtf.ShortDatePattern;
-        case "D":
-            return dtf.LongDatePattern;
-        case "t":
-            return dtf.ShortTimePattern;
-        case "T":
-            return dtf.LongTimePattern;
-        case "F":
-            return dtf.FullDateTimePattern;
-        case "M": case "m":
-            return dtf.MonthDayPattern;
-        case "s":
-            return dtf.SortableDateTimePattern;
-        case "Y": case "y":
-            return dtf.YearMonthPattern;
-        default:
-            throw Error.format(Sys.Res.formatInvalidString);
-        }
-    }
-    return format;
-}
-
-Date._expandYear = function Date$_expandYear(dtf, year) {
-        if (year < 100) {
-        var curr = new Date().getFullYear();
-        year += curr - (curr % 100);
-        if (year > dtf.Calendar.TwoDigitYearMax) {
-            return year - 100;
-        }
-    }
-    return year;
-}
-
-Date._getParseRegExp = function Date$_getParseRegExp(dtf, format) {
-                if (!dtf._parseRegExp) {
-        dtf._parseRegExp = {};
-    }
-    else if (dtf._parseRegExp[format]) {
-        return dtf._parseRegExp[format];
-    }
-
-        var expFormat = Date._expandFormat(dtf, format);
-    expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1");
-
-    var regexp = new Sys.StringBuilder("^");
-    var groups = [];
-    var index = 0;
-    var quoteCount = 0;
-    var tokenRegExp = Date._getTokenRegExp();
-    var match;
-
-        while ((match = tokenRegExp.exec(expFormat)) !== null) {
-        var preMatch = expFormat.slice(index, match.index);
-        index = tokenRegExp.lastIndex;
-
-                quoteCount += Date._appendPreOrPostMatch(preMatch, regexp);
-        if ((quoteCount%2) === 1) {
-            regexp.append(match[0]);
-            continue;
-        }
-
-                switch (match[0]) {
-            case 'dddd': case 'ddd':
-            case 'MMMM': case 'MMM':
-                regexp.append("(\\D+)");
-                break;
-            case 'tt': case 't':
-                regexp.append("(\\D*)");
-                break;
-            case 'yyyy':
-                regexp.append("(\\d{4})");
-                break;
-            case 'fff':
-                regexp.append("(\\d{3})");
-                break;
-            case 'ff':
-                regexp.append("(\\d{2})");
-                break;
-            case 'f':
-                regexp.append("(\\d)");
-                break;
-            case 'dd': case 'd':
-            case 'MM': case 'M':
-            case 'yy': case 'y':
-            case 'HH': case 'H':
-            case 'hh': case 'h':
-            case 'mm': case 'm':
-            case 'ss': case 's':
-                regexp.append("(\\d\\d?)");
-                break;
-            case 'zzz':
-                regexp.append("([+-]?\\d\\d?:\\d{2})");
-                break;
-            case 'zz': case 'z':
-                regexp.append("([+-]?\\d\\d?)");
-                break;
-        }
-        Array.add(groups, match[0]);
-    }
-    Date._appendPreOrPostMatch(expFormat.slice(index), regexp);
-    regexp.append("$");
-        var regexpStr = regexp.toString().replace(/\s+/g, "\\s+");
-    var parseRegExp = {'regExp': regexpStr, 'groups': groups};
-        dtf._parseRegExp[format] = parseRegExp;
-    return parseRegExp;
-}
-
-Date._getTokenRegExp = function Date$_getTokenRegExp() {
-        return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;
-}
-
-Date.parseLocale = function Date$parseLocale(value, formats) {
-    /// <param name="value" type="String"></param>
-    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
-    /// <returns type="Date"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String},
-        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-
-    return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments);
-}
-
-Date.parseInvariant = function Date$parseInvariant(value, formats) {
-    /// <param name="value" type="String"></param>
-    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
-    /// <returns type="Date"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String},
-        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-
-    return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments);
-}
-
-Date._parse = function Date$_parse(value, cultureInfo, args) {
-            var custom = false;
-    for (var i = 1, il = args.length; i < il; i++) {
-        var format = args[i];
-        if (format) {
-            custom = true;
-            var date = Date._parseExact(value, format, cultureInfo);
-            if (date) return date;
-        }
-    }
-        if (! custom) {
-        var formats = cultureInfo._getDateTimeFormats();
-        for (var i = 0, il = formats.length; i < il; i++) {
-            var date = Date._parseExact(value, formats[i], cultureInfo);
-            if (date) return date;
-        }
-    }
-    return null;
-}
-
-Date._parseExact = function Date$_parseExact(value, format, cultureInfo) {
-            value = value.trim();
-    var dtf = cultureInfo.dateTimeFormat;
-
-            var parseInfo = Date._getParseRegExp(dtf, format);
-    var match = new RegExp(parseInfo.regExp).exec(value);
-        if (match !== null) {
-        var groups = parseInfo.groups;
-        var year = null, month = null, date = null, weekDay = null;
-        var hour = 0, min = 0, sec = 0, msec = 0, tzMinOffset = null;
-        var pmHour = false;
-                for (var j = 0, jl = groups.length; j < jl; j++) {
-            var matchGroup = match[j+1];
-            if (matchGroup) {
-                switch (groups[j]) {
-                    case 'dd': case 'd':
-                                                date = Date._parseInt(matchGroup);
-                                                if ((date < 1) || (date > 31)) return null;
-                        break;
-                    case 'MMMM':
-                                                month = cultureInfo._getMonthIndex(matchGroup);
-                        if ((month < 0) || (month > 11)) return null;
-                        break;
-                    case 'MMM':
-                                                month = cultureInfo._getAbbrMonthIndex(matchGroup);
-                        if ((month < 0) || (month > 11)) return null;
-                        break;
-                    case 'M': case 'MM':
-                                                var month = Date._parseInt(matchGroup) - 1;
-                        if ((month < 0) || (month > 11)) return null;
-                        break;
-                    case 'y': case 'yy':
-                                                year = Date._expandYear(dtf,Date._parseInt(matchGroup));
-                        if ((year < 0) || (year > 9999)) return null;
-                        break;
-                    case 'yyyy':
-                                                year = Date._parseInt(matchGroup);
-                        if ((year < 0) || (year > 9999)) return null;
-                        break;
-                    case 'h': case 'hh':
-                                                hour = Date._parseInt(matchGroup);
-                        if (hour === 12) hour = 0;
-                        if ((hour < 0) || (hour > 11)) return null;
-                        break;
-                    case 'H': case 'HH':
-                                                hour = Date._parseInt(matchGroup);
-                        if ((hour < 0) || (hour > 23)) return null;
-                        break;
-                    case 'm': case 'mm':
-                                                min = Date._parseInt(matchGroup);
-                        if ((min < 0) || (min > 59)) return null;
-                        break;
-                    case 's': case 'ss':
-                                                sec = Date._parseInt(matchGroup);
-                        if ((sec < 0) || (sec > 59)) return null;
-                        break;
-                    case 'tt': case 't':
-                                                var upperToken = matchGroup.toUpperCase();
-                        pmHour = (upperToken === dtf.PMDesignator.toUpperCase());
-                        if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null;
-                        break;
-                    case 'f':
-                                                msec = Date._parseInt(matchGroup) * 100;
-                        if ((msec < 0) || (msec > 999)) return null;
-                        break;
-                    case 'ff':
-                                                msec = Date._parseInt(matchGroup) * 10;
-                        if ((msec < 0) || (msec > 999)) return null;
-                        break;
-                    case 'fff':
-                                                msec = Date._parseInt(matchGroup);
-                        if ((msec < 0) || (msec > 999)) return null;
-                        break;
-                    case 'dddd':
-                                                weekDay = cultureInfo._getDayIndex(matchGroup);
-                        if ((weekDay < 0) || (weekDay > 6)) return null;
-                        break;
-                    case 'ddd':
-                                                weekDay = cultureInfo._getAbbrDayIndex(matchGroup);
-                        if ((weekDay < 0) || (weekDay > 6)) return null;
-                        break;
-                    case 'zzz':
-                                                var offsets = matchGroup.split(/:/);
-                        if (offsets.length !== 2) return null;
-                        var hourOffset = Date._parseInt(offsets[0]);
-                        if ((hourOffset < -12) || (hourOffset > 13)) return null;
-                        var minOffset = Date._parseInt(offsets[1]);
-                        if ((minOffset < 0) || (minOffset > 59)) return null;
-                        tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset);
-                        break;
-                    case 'z': case 'zz':
-                                                var hourOffset = Date._parseInt(matchGroup);
-                        if ((hourOffset < -12) || (hourOffset > 13)) return null;
-                        tzMinOffset = hourOffset * 60;
-                        break;
-                }
-            }
-        }
-        var result = new Date();
-        if (year === null) {
-            year = result.getFullYear();
-        }
-        if (month === null) {
-            month = result.getMonth();
-        }
-        if (date === null) {
-            date = result.getDate();
-        }
-                result.setFullYear(year, month, date);
-                if (result.getDate() !== date) return null;
-                if ((weekDay !== null) && (result.getDay() !== weekDay)) {
-            return null;
-        }
-                if (pmHour && (hour < 12)) {
-            hour += 12;
-        }
-        result.setHours(hour, min, sec, msec);
-        if (tzMinOffset !== null) {
-                        var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset());
-                                                result.setHours(result.getHours() + parseInt(adjustedMin/60), adjustedMin%60);
-        }
-        return result;
-    }
-}
-
-Date._parseInt = function Date$_parseInt(value) {
-        return parseInt(value.replace(/^[\s0]+(\d+)$/,"$1"));
-}
-
-Date.prototype.format = function Date$format(format) {
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-
-    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
-}
-
-Date.prototype.localeFormat = function Date$localeFormat(format) {
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-
-    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
-}
-
-Date.prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) {
-    if (!format || (format.length === 0) || (format === 'i')) {
-        if (cultureInfo && (cultureInfo.name.length > 0)) {
-            return this.toLocaleString();
-        }
-        else {
-            return this.toString();
-        }
-    }
-
-    var dtf = cultureInfo.dateTimeFormat;
-    format = Date._expandFormat(dtf, format);
-
-        var ret = new Sys.StringBuilder();
-    var hour;
-
-    function addLeadingZero(num) {
-        if (num < 10) {
-            return '0' + num;
-        }
-        return num.toString();
-    }
-
-    function addLeadingZeros(num) {
-        if (num < 10) {
-            return '00' + num;
-        }
-        if (num < 100) {
-            return '0' + num;
-        }
-        return num.toString();
-    }
-
-    var quoteCount = 0;
-    var tokenRegExp = Date._getTokenRegExp();
-    for (;;) {
-
-                var index = tokenRegExp.lastIndex;
-
-                var ar = tokenRegExp.exec(format);
-
-                var preMatch = format.slice(index, ar ? ar.index : format.length);
-        quoteCount += Date._appendPreOrPostMatch(preMatch, ret);
-
-        if (!ar) break;
-
-                if ((quoteCount%2) === 1) {
-            ret.append(ar[0]);
-            continue;
-        }
-
-        switch (ar[0]) {
-        case "dddd":
-                        ret.append(dtf.DayNames[this.getDay()]);
-            break;
-        case "ddd":
-                        ret.append(dtf.AbbreviatedDayNames[this.getDay()]);
-            break;
-        case "dd":
-                        ret.append(addLeadingZero(this.getDate()));
-            break;
-        case "d":
-                        ret.append(this.getDate());
-            break;
-        case "MMMM":
-                        ret.append(dtf.MonthNames[this.getMonth()]);
-            break;
-        case "MMM":
-                        ret.append(dtf.AbbreviatedMonthNames[this.getMonth()]);
-            break;
-        case "MM":
-                        ret.append(addLeadingZero(this.getMonth() + 1));
-            break;
-        case "M":
-                        ret.append(this.getMonth() + 1);
-            break;
-        case "yyyy":
-                        ret.append(this.getFullYear());
-            break;
-        case "yy":
-                        ret.append(addLeadingZero(this.getFullYear() % 100));
-            break;
-        case "y":
-                        ret.append(this.getFullYear() % 100);
-            break;
-        case "hh":
-                        hour = this.getHours() % 12;
-            if (hour === 0) hour = 12;
-            ret.append(addLeadingZero(hour));
-            break;
-        case "h":
-                        hour = this.getHours() % 12;
-            if (hour === 0) hour = 12;
-            ret.append(hour);
-            break;
-        case "HH":
-                        ret.append(addLeadingZero(this.getHours()));
-            break;
-        case "H":
-                        ret.append(this.getHours());
-            break;
-        case "mm":
-                        ret.append(addLeadingZero(this.getMinutes()));
-            break;
-        case "m":
-                        ret.append(this.getMinutes());
-            break;
-        case "ss":
-                        ret.append(addLeadingZero(this.getSeconds()));
-            break;
-        case "s":
-                        ret.append(this.getSeconds());
-            break;
-        case "tt":
-                        ret.append((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator);
-            break;
-        case "t":
-                        ret.append(((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0));
-            break;
-        case "f":
-                        ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0));
-            break;
-        case "ff":
-                        ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2));
-            break;
-        case "fff":
-                        ret.append(addLeadingZeros(this.getMilliseconds()));
-            break;
-        case "z":
-                        hour = this.getTimezoneOffset() / 60;
-            ret.append(((hour >= 0) ? '+' : '-') + Math.floor(Math.abs(hour)));
-            break;
-        case "zz":
-                        hour = this.getTimezoneOffset() / 60;
-            ret.append(((hour >= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))));
-            break;
-        case "zzz":
-                        hour = this.getTimezoneOffset() / 60;
-            ret.append(((hour >= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) +
-                dtf.TimeSeparator + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60)));
-            break;
-        }
-    }
-    return ret.toString();
-}
-Number.__typeName = 'Number';
-Number.__class = true;
-
-Number.parseLocale = function Number$parseLocale(value) {
-    /// <param name="value" type="String"></param>
-    /// <returns type="Number"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String}
-    ]);
-    if (e) throw e;
-
-    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
-}
-Number.parseInvariant = function Number$parseInvariant(value) {
-    /// <param name="value" type="String"></param>
-    /// <returns type="Number"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String}
-    ]);
-    if (e) throw e;
-
-    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
-}
-Number._parse = function Number$_parse(value, cultureInfo) {
-            var valueStr = value.trim();
-    if (valueStr.match(/infinity/i) !== null) {
-        return parseFloat(valueStr);
-    }
-    if (valueStr.match(/^0x[a-f0-9]+$/i) !== null) {
-        return parseInt(valueStr);
-    }
-    var numFormat = cultureInfo.numberFormat;
-    var decSeparator = numFormat.NumberDecimalSeparator;
-    var grpSeparator = numFormat.NumberGroupSeparator;
-
-            var numberFormatRegex = new RegExp("^[+-]?[\\d\\" + grpSeparator + "]*\\" + decSeparator + "?\\d*([eE][+-]?\\d+)?$");
-    if (!valueStr.match(numberFormatRegex)) {
-        return Number.NaN;
-    }
-
-        valueStr = valueStr.split(grpSeparator).join("");
-
-        valueStr = valueStr.replace(decSeparator, ".");
-
-    return parseFloat(valueStr);
-}
-
-Number.prototype.format = function Number$format(format) {
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-
-    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
-}
-Number.prototype.localeFormat = function Number$localeFormat(format) {
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-
-    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
-}
-Number.prototype._toFormattedString = function Number$_toFormattedString(format, cultureInfo) {
-    if (!format || (format.length === 0) || (format === 'i')) {
-        if (cultureInfo && (cultureInfo.name.length > 0)) {
-            return this.toLocaleString();
-        }
-        else {
-            return this.toString();
-        }
-    }
-
-        var _percentPositivePattern = ["n %", "n%", "%n" ];
-    var _percentNegativePattern = ["-n %", "-n%", "-%n"];
-    var _numberNegativePattern = ["(n)","-n","- n","n-","n -"];
-    var _currencyPositivePattern = ["$n","n$","$ n","n $"];
-    var _currencyNegativePattern = ["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];
-
-        function expandNumber(number, precision, groupSizes, sep, decimalChar) {
-        
-        var curSize = groupSizes[0];
-        var curGroupIndex = 1;
-
-                var numberString = number.toString();
-        var right = "";
-        var exponent = "";
-                var decimalSplit = numberString.split('.');
-        if (decimalSplit.length > 1) {
-            numberString = decimalSplit[0];
-            right = decimalSplit[1];
-                        var exponentSplit = right.split(/e/i);
-            if (exponentSplit.length > 1) {
-                right = exponentSplit[0];
-                exponent = "e" + exponentSplit[1];
-            }
-        }
-
-                if (precision > 0) {
-                        var rightDifference = right.length - precision;
-            if (rightDifference > 0) {
-                right = right.slice(0, precision);
-            } else if (rightDifference < 0) {
-                for (var i=0; i<Math.abs(rightDifference); i++) {
-                    right += '0';
-                }
-            }
-
-                        right = decimalChar + right;
-        }
-        else {             right = "";
-        }
-        right += exponent;
-
-        var stringIndex = numberString.length-1;
-        var ret = "";
-        while (stringIndex >= 0) {
-
-                        if (curSize === 0 || curSize > stringIndex) {
-                if (ret.length > 0)
-                    return numberString.slice(0, stringIndex + 1) + sep + ret + right;
-                else
-                    return numberString.slice(0, stringIndex + 1) + right;
-            }
-
-            if (ret.length > 0)
-                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1) + sep + ret;
-            else
-                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1);
-
-            stringIndex -= curSize;
-
-            if (curGroupIndex < groupSizes.length) {
-                curSize = groupSizes[curGroupIndex];
-                curGroupIndex++;
-            }
-        }
-        return numberString.slice(0, stringIndex + 1) + sep + ret + right;
-    }
-    var nf = cultureInfo.numberFormat;
-
-        var number = Math.abs(this);
-
-        if (!format)
-        format = "D";
-
-    var precision = -1;
-    if (format.length > 1) precision = parseInt(format.slice(1));
-
-    var pattern;
-    switch (format.charAt(0)) {
-    case "d":
-    case "D":
-        pattern = 'n';
-
-                if (precision !== -1) {
-            var numberStr = ""+number;
-            var zerosToAdd = precision - numberStr.length;
-            if (zerosToAdd > 0) {
-                for (var i=0; i<zerosToAdd; i++) {
-                    numberStr = '0'+numberStr;
-                }
-            }
-            number = numberStr;
-        }
-
-                if (this < 0) number = -number;
-        break;
-    case "c":
-    case "C":
-        if (this < 0) pattern = _currencyNegativePattern[nf.CurrencyNegativePattern];
-        else pattern = _currencyPositivePattern[nf.CurrencyPositivePattern];
-        if (precision === -1) precision = nf.CurrencyDecimalDigits;
-        number = expandNumber(Math.abs(this), precision, nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, nf.CurrencyDecimalSeparator);
-        break;
-    case "n":
-    case "N":
-        if (this < 0) pattern = _numberNegativePattern[nf.NumberNegativePattern];
-        else pattern = 'n';
-        if (precision === -1) precision = nf.NumberDecimalDigits;
-        number = expandNumber(Math.abs(this), precision, nf.NumberGroupSizes, nf.NumberGroupSeparator, nf.NumberDecimalSeparator);
-        break;
-    case "p":
-    case "P":
-        if (this < 0) pattern = _percentNegativePattern[nf.PercentNegativePattern];
-        else pattern = _percentPositivePattern[nf.PercentPositivePattern];
-        if (precision === -1) precision = nf.PercentDecimalDigits;
-        number = expandNumber(Math.abs(this), precision, nf.PercentGroupSizes, nf.PercentGroupSeparator, nf.PercentDecimalSeparator);
-        break;
-    default:
-        throw Error.format(Sys.Res.formatBadFormatSpecifier);
-    }
-
-    var regex = /n|\$|-|%/g;
-
-        var ret = "";
-
-    for (;;) {
-
-                var index = regex.lastIndex;
-
-                var ar = regex.exec(pattern);
-
-                ret += pattern.slice(index, ar ? ar.index : pattern.length);
-
-        if (!ar)
-            break;
-
-        switch (ar[0]) {
-        case "n":
-            ret += number;
-            break;
-        case "$":
-            ret += nf.CurrencySymbol;
-            break;
-        case "-":
-            ret += nf.NegativeSign;
-            break;
-        case "%":
-            ret += nf.PercentSymbol;
-            break;
-        }
-    }
-
-    return ret;
-}
-RegExp.__typeName = 'RegExp';
-RegExp.__class = true;
-Array.__typeName = 'Array';
-Array.__class = true;
-
-Array.add = Array.enqueue = function Array$enqueue(array, item) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-
-        array[array.length] = item;
-}
-
-Array.addRange = function Array$addRange(array, items) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="items" type="Array" elementMayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "items", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-
-
-        array.push.apply(array, items);
-}
-
-Array.clear = function Array$clear(array) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    array.length = 0;
-}
-
-Array.clone = function Array$clone(array) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <returns type="Array" elementMayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if (array.length === 1) {
-        return [array[0]];
-    }
-    else {
-                        return Array.apply(null, array);
-    }
-}
-
-Array.contains = function Array$contains(array, item) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    return (Array.indexOf(array, item) >= 0);
-}
-
-Array.dequeue = function Array$dequeue(array) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <returns mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    return array.shift();
-}
-
-Array.forEach = function Array$forEach(array, method, instance) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="method" type="Function"></param>
-    /// <param name="instance" optional="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "method", type: Function},
-        {name: "instance", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    for (var i = 0, l = array.length; i < l; i++) {
-        var elt = array[i];
-        if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array);
-    }
-}
-
-Array.indexOf = function Array$indexOf(array, item, start) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" optional="true" mayBeNull="true"></param>
-    /// <param name="start" optional="true" mayBeNull="true"></param>
-    /// <returns type="Number"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true, optional: true},
-        {name: "start", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    if (typeof(item) === "undefined") return -1;
-    var length = array.length;
-    if (length !== 0) {
-                start = start - 0;
-                if (isNaN(start)) {
-            start = 0;
-        }
-        else {
-                                    if (isFinite(start)) {
-                                start = start - (start % 1);
-            }
-                        if (start < 0) {
-                start = Math.max(0, length + start);
-            }
-        }
-
-                for (var i = start; i < length; i++) {
-            if ((typeof(array[i]) !== "undefined") && (array[i] === item)) {
-                return i;
-            }
-        }
-    }
-    return -1;
-}
-
-Array.insert = function Array$insert(array, index, item) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="index" mayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "index", mayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    array.splice(index, 0, item);
-}
-
-Array.parse = function Array$parse(value) {
-    /// <param name="value" type="String" mayBeNull="true"></param>
-    /// <returns type="Array" elementMayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String, mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if (!value) return [];
-    var v = eval(value);
-    if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat);
-    return v;
-}
-
-Array.remove = function Array$remove(array, item) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    var index = Array.indexOf(array, item);
-    if (index >= 0) {
-        array.splice(index, 1);
-    }
-    return (index >= 0);
-}
-
-Array.removeAt = function Array$removeAt(array, index) {
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="index" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "index", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    array.splice(index, 1);
-}
-String.__typeName = 'String';
-String.__class = true;
-
-String.prototype.endsWith = function String$endsWith(suffix) {
-    /// <param name="suffix" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "suffix", type: String}
-    ]);
-    if (e) throw e;
-
-    return (this.substr(this.length - suffix.length) === suffix);
-}
-
-String.prototype.startsWith = function String$startsWith(prefix) {
-    /// <param name="prefix" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "prefix", type: String}
-    ]);
-    if (e) throw e;
-
-    return (this.substr(0, prefix.length) === prefix);
-}
-
-String.prototype.trim = function String$trim() {
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return this.replace(/^\s+|\s+$/g, '');
-}
-
-String.prototype.trimEnd = function String$trimEnd() {
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return this.replace(/\s+$/, '');
-}
-
-String.prototype.trimStart = function String$trimStart() {
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return this.replace(/^\s+/, '');
-}
-
-String.format = function String$format(format, args) {
-    /// <param name="format" type="String"></param>
-    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String},
-        {name: "args", mayBeNull: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-
-    return String._toFormattedString(false, arguments);
-}
-
-String.localeFormat = function String$localeFormat(format, args) {
-    /// <param name="format" type="String"></param>
-    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String},
-        {name: "args", mayBeNull: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-
-    return String._toFormattedString(true, arguments);
-}
-
-String._toFormattedString = function String$_toFormattedString(useLocale, args) {
-    var result = '';
-    var format = args[0];
-
-    for (var i=0;;) {
-                var open = format.indexOf('{', i);
-        var close = format.indexOf('}', i);
-        if ((open < 0) && (close < 0)) {
-                        result += format.slice(i);
-            break;
-        }
-        if ((close > 0) && ((close < open) || (open < 0))) {
-                        if (format.charAt(close + 1) !== '}') {
-                throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
-            }
-            result += format.slice(i, close + 1);
-            i = close + 2;
-            continue;
-        }
-
-                result += format.slice(i, open);
-        i = open + 1;
-
-                if (format.charAt(i) === '{') {
-            result += '{';
-            i++;
-            continue;
-        }
-
-                if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
-
-        
-                var brace = format.substring(i, close);
-        var colonIndex = brace.indexOf(':');
-        var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex)) + 1;
-        if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid);
-        var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1);
-
-        var arg = args[argNumber];
-        if (typeof(arg) === "undefined" || arg === null) {
-            arg = '';
-        }
-
-                if (arg.toFormattedString) {
-            result += arg.toFormattedString(argFormat);
-        }
-        else if (useLocale && arg.localeFormat) {
-            result += arg.localeFormat(argFormat);
-        }
-        else if (arg.format) {
-            result += arg.format(argFormat);
-        }
-        else
-            result += arg.toString();
-
-        i = close + 1;
-    }
-
-    return result;
-}
-
-Type.registerNamespace('Sys');
-Sys.IDisposable = function Sys$IDisposable() {
-    throw Error.notImplemented();
-}
-
-    function Sys$IDisposable$dispose() {
-        throw Error.notImplemented();
-    }
-Sys.IDisposable.prototype = {
-    dispose: Sys$IDisposable$dispose
-}
-Sys.IDisposable.registerInterface('Sys.IDisposable');
-Sys.StringBuilder = function Sys$StringBuilder(initialText) {
-    /// <param name="initialText" optional="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "initialText", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ?
-        [initialText.toString()] : [];
-    this._value = {};
-    this._len = 0;
-}
-
-
-    function Sys$StringBuilder$append(text) {
-        /// <param name="text" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "text", mayBeNull: true}
-        ]);
-        if (e) throw e;
-
-        this._parts[this._parts.length] = text;
-    }
-
-    function Sys$StringBuilder$appendLine(text) {
-        /// <param name="text" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "text", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-        this._parts[this._parts.length] =
-            ((typeof(text) === 'undefined') || (text === null) || (text === '')) ?
-            '\r\n' : text + '\r\n';
-    }
-
-    function Sys$StringBuilder$clear() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        this._parts = [];
-        this._value = {};
-        this._len = 0;
-    }
-
-    function Sys$StringBuilder$isEmpty() {
-        /// <returns type="Boolean"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._parts.length === 0) return true;
-        return this.toString() === '';
-    }
-
-
-
-    function Sys$StringBuilder$toString(separator) {
-        /// <param name="separator" type="String" optional="true" mayBeNull="true"></param>
-        /// <returns type="String"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "separator", type: String, mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-        separator = separator || '';
-        var parts = this._parts;
-        if (this._len !== parts.length) {
-            this._value = {};
-            this._len = parts.length;
-        }
-        var val = this._value;
-        if (typeof(val[separator]) === 'undefined') {
-                        if (separator !== '') {
-                for (var i = 0; i < parts.length;) {
-                    if ((typeof(parts[i]) === 'undefined') || (parts[i] === '') || (parts[i] === null)) {
-                        parts.splice(i, 1);
-                    }
-                    else {
-                        i++;
-                    }
-                }
-            }
-            val[separator] = this._parts.join(separator);
-        }
-        return val[separator];
-    }
-Sys.StringBuilder.prototype = {
-    append: Sys$StringBuilder$append,
-
-    appendLine: Sys$StringBuilder$appendLine,
-
-    clear: Sys$StringBuilder$clear,
-
-    isEmpty: Sys$StringBuilder$isEmpty,
-
-            toString: Sys$StringBuilder$toString
-}
-Sys.StringBuilder.registerClass('Sys.StringBuilder');
-if (!window.XMLHttpRequest) {
-    window.XMLHttpRequest = function window$XMLHttpRequest() {
-        var progIDs = [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ];
-	    
-        for (var i = 0; i < progIDs.length; i++) {
-            try {
-                var xmlHttp = new ActiveXObject(progIDs[i]);
-                return xmlHttp;
-            }
-            catch (ex) {
-            }
-        }
-	    
-        return null;
-    }
-}
-
-Sys.Browser = {};
-
-Sys.Browser.InternetExplorer = {};
-Sys.Browser.Firefox = {};
-Sys.Browser.Safari = {};
-Sys.Browser.Opera = {};
-
-Sys.Browser.agent = null;
-Sys.Browser.hasDebuggerStatement = false;
-Sys.Browser.name = navigator.appName;
-Sys.Browser.version = parseFloat(navigator.appVersion);
-
-if (navigator.userAgent.indexOf(' MSIE ') > -1) {
-    Sys.Browser.agent = Sys.Browser.InternetExplorer;
-    Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);
-    Sys.Browser.hasDebuggerStatement = true;
-}
-else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
-    Sys.Browser.agent = Sys.Browser.Firefox;
-    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]);
-    Sys.Browser.name = 'Firefox';
-    Sys.Browser.hasDebuggerStatement = true;
-}
-else if (navigator.userAgent.indexOf(' Safari/') > -1) {
-    Sys.Browser.agent = Sys.Browser.Safari;
-    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d+\.\d+)/)[1]);
-    Sys.Browser.name = 'Safari';
-}
-else if (navigator.userAgent.indexOf('Opera/') > -1) {
-    Sys.Browser.agent = Sys.Browser.Opera;
-}
-
-
-Type.registerNamespace('Sys.UI');
-
-Sys._Debug = function Sys$_Debug() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-
-
-    function Sys$_Debug$_appendConsole(text) {
-                if ((typeof(Debug) !== 'undefined') && Debug.writeln) {
-            Debug.writeln(text);
-        }
-                if (window.console && window.console.log) {
-            window.console.log(text);
-        }
-                if (window.opera) {
-            window.opera.postError(text);
-        }
-                if (window.debugService) {
-            window.debugService.trace(text);
-        }
-    }
-
-    function Sys$_Debug$_appendTrace(text) {
-        var traceElement = document.getElementById('TraceConsole');
-        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
-            traceElement.value += text + '\n';
-        }
-    }
-
-    function Sys$_Debug$assert(condition, message, displayCaller) {
-        /// <param name="condition" type="Boolean"></param>
-        /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="displayCaller" type="Boolean" optional="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "condition", type: Boolean},
-            {name: "message", type: String, mayBeNull: true, optional: true},
-            {name: "displayCaller", type: Boolean, optional: true}
-        ]);
-        if (e) throw e;
-
-        if (!condition) {
-            message = (displayCaller && this.assert.caller) ?
-                String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) :
-                String.format(Sys.Res.assertFailed, message);
-
-            if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) {
-                this.fail(message);
-            }
-        }
-    }
-
-    function Sys$_Debug$clearTrace() {
-        var traceElement = document.getElementById('TraceConsole');
-        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
-            traceElement.value = '';
-        }
-    }
-
-    function Sys$_Debug$fail(message) {
-        /// <param name="message" type="String" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "message", type: String, mayBeNull: true}
-        ]);
-        if (e) throw e;
-
-        this._appendConsole(message);
-
-                if (Sys.Browser.hasDebuggerStatement) {
-            eval('debugger');
-        }
-    }
-
-    function Sys$_Debug$trace(text) {
-        /// <param name="text"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "text"}
-        ]);
-        if (e) throw e;
-
-        this._appendConsole(text);
-        this._appendTrace(text);
-    }
-
-    function Sys$_Debug$traceDump(object, name) {
-        /// <param name="object" mayBeNull="true"></param>
-        /// <param name="name" type="String" mayBeNull="true" optional="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "object", mayBeNull: true},
-            {name: "name", type: String, mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-        var text = this._traceDump(object, name, true);
-    }
-
-    function Sys$_Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) {
-        name = name? name : 'traceDump';
-        indentationPadding = indentationPadding? indentationPadding : '';
-        if (object === null) {
-            this.trace(indentationPadding + name + ': null');
-            return;
-        }
-        switch(typeof(object)) {
-            case 'undefined':
-                this.trace(indentationPadding + name + ': Undefined');
-                break;
-            case 'number': case 'string': case 'boolean':
-                this.trace(indentationPadding + name + ': ' + object);
-                break;
-            default:
-                if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) {
-                    this.trace(indentationPadding + name + ': ' + object.toString());
-                    break;
-                }
-                if (!loopArray) {
-                    loopArray = [];
-                }
-                else if (Array.contains(loopArray, object)) {
-                    this.trace(indentationPadding + name + ': ...');
-                    return;
-                }
-                Array.add(loopArray, object);
-
-                                                                if ((object == window) || (object === document) ||
-                    (window.HTMLElement && (object instanceof HTMLElement)) ||
-                    (typeof(object.nodeName) === 'string')) {
-                    var tag = object.tagName? object.tagName : 'DomElement';
-                    if (object.id) {
-                        tag += ' - ' + object.id;
-                    }
-                    this.trace(indentationPadding + name + ' {' +  tag + '}');
-                }
-                                else {
-                    var typeName = Object.getTypeName(object);
-                    this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : ''));
-                    if ((indentationPadding === '') || recursive) {
-                        indentationPadding += "    ";
-                        var i, length, properties, p, v;
-                        if (Array.isInstanceOfType(object)) {
-                            length = object.length;
-                            for (i = 0; i < length; i++) {
-                                this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray);
-                            }
-                        }
-                        else {
-                            for (p in object) {
-                                v = object[p];
-                                if (!Function.isInstanceOfType(v)) {
-                                    this._traceDump(v, p, recursive, indentationPadding, loopArray);
-                                }
-                            }
-                        }
-                    }
-                }
-                Array.remove(loopArray, object);
-        }
-    }
-Sys._Debug.prototype = {
-
-    _appendConsole: Sys$_Debug$_appendConsole,
-
-    _appendTrace: Sys$_Debug$_appendTrace,
-
-    assert: Sys$_Debug$assert,
-
-    clearTrace: Sys$_Debug$clearTrace,
-
-    fail: Sys$_Debug$fail,
-
-    trace: Sys$_Debug$trace,
-
-    traceDump: Sys$_Debug$traceDump,
-
-    _traceDump: Sys$_Debug$_traceDump
-}
-Sys._Debug.registerClass('Sys._Debug');
-
-Sys.Debug = new Sys._Debug();
-    Sys.Debug.isDebug = true;
-function Sys$Enum$parse(value, ignoreCase) {
-    /// <param name="value" type="String"></param>
-    /// <param name="ignoreCase" type="Boolean" optional="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String},
-        {name: "ignoreCase", type: Boolean, optional: true}
-    ]);
-    if (e) throw e;
-
-    var values, parsed, val;
-    if (ignoreCase) {
-        values = this.__lowerCaseValues;
-        if (!values) {
-            this.__lowerCaseValues = values = {};
-            var prototype = this.prototype;
-            for (var name in prototype) {
-                values[name.toLowerCase()] = prototype[name];
-            }
-        }
-    }
-    else {
-        values = this.prototype;
-    }
-    if (!this.__flags) {
-        val = (ignoreCase ? value.toLowerCase() : value);
-        parsed = values[val.trim()];
-        if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
-        return parsed;
-    }
-    else {
-        var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
-        var v = 0;
-
-        for (var i = parts.length - 1; i >= 0; i--) {
-            var part = parts[i].trim();
-            parsed = values[part];
-            if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName));
-            v |= parsed;
-        }
-        return v;
-    }
-}
-
-function Sys$Enum$toString(value) {
-    /// <param name="value" optional="true" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-            if ((typeof(value) === 'undefined') || (value === null)) return this.__string;
-    if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this);
-    var values = this.prototype;
-    var i;
-    if (!this.__flags || (value === 0)) {
-        for (i in values) {
-            if (values[i] === value) {
-                return i;
-            }
-        }
-    }
-    else {
-        var sorted = this.__sortedValues;
-        if (!sorted) {
-            sorted = [];
-            for (i in values) {
-                sorted[sorted.length] = {key: i, value: values[i]};
-            }
-            sorted.sort(function(a, b) {
-                return a.value - b.value;
-            });
-            this.__sortedValues = sorted;
-        }
-        var parts = [];
-        var v = value;
-        for (i = sorted.length - 1; i >= 0; i--) {
-            var kvp = sorted[i];
-            var vali = kvp.value;
-            if (vali === 0) continue;
-            if ((vali & value) === vali) {
-                parts[parts.length] = kvp.key;
-                v -= vali;
-                if (v === 0) break;
-            }
-        }
-        if (parts.length && v === 0) return parts.reverse().join(', ');
-    }
-    throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
-}
-
-Type.prototype.registerEnum = function Type$registerEnum(name, flags) {
-    /// <param name="name" type="String"></param>
-    /// <param name="flags" type="Boolean" optional="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "name", type: String},
-        {name: "flags", type: Boolean, optional: true}
-    ]);
-    if (e) throw e;
-
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName);
-        var parsedName;
-    try {
-        parsedName = eval(name);
-    }
-    catch(e) {
-        throw Error.argument('name', Sys.Res.argumentTypeName);
-    }
-    if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName);
-    if (window.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name));
-    for (var i in this.prototype) {
-        var val = this.prototype[i];
-        if (!Type.__identifierRegExp.test(i)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, i));
-        if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger);
-        if (typeof(this[i]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, i));
-    }
-    for (var i in this.prototype) {
-        this[i] = this.prototype[i];
-    }
-    this.__typeName = name;
-    this.parse = Sys$Enum$parse;
-    this.__string = this.toString();
-    this.toString = Sys$Enum$toString;
-    this.__flags = flags;
-    this.__enum = true;
-    window.__registeredTypes[name] = true;
-}
-
-Type.isEnum = function Type$isEnum(type) {
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__enum;
-}
-
-Type.isFlags = function Type$isFlags(type) {
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__flags;
-}
-Sys.EventHandlerList = function Sys$EventHandlerList() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    this._list = {};
-}
-
-
-    function Sys$EventHandlerList$addHandler(id, handler) {
-        /// <param name="id" type="String"></param>
-        /// <param name="handler" type="Function"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String},
-            {name: "handler", type: Function}
-        ]);
-        if (e) throw e;
-
-        Array.add(this._getEvent(id, true), handler);
-    }
-    function Sys$EventHandlerList$removeHandler(id, handler) {
-        /// <param name="id" type="String"></param>
-        /// <param name="handler" type="Function"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String},
-            {name: "handler", type: Function}
-        ]);
-        if (e) throw e;
-
-        var evt = this._getEvent(id);
-        if (!evt) return;
-        Array.remove(evt, handler);
-    }
-    function Sys$EventHandlerList$getHandler(id) {
-        /// <param name="id" type="String"></param>
-        /// <returns type="Function"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String}
-        ]);
-        if (e) throw e;
-
-        var evt = this._getEvent(id);
-        if (!evt || (evt.length === 0)) return null;
-        evt = Array.clone(evt);
-        if (!evt._handler) {
-            evt._handler = function(source, args) {
-                for (var i = 0, l = evt.length; i < l; i++) {
-                    evt[i](source, args);
-                }
-            };
-        }
-        return evt._handler;
-    }
-
-    function Sys$EventHandlerList$_getEvent(id, create) {
-        if (!this._list[id]) {
-            if (!create) return null;
-            this._list[id] = [];
-        }
-        return this._list[id];
-    }
-Sys.EventHandlerList.prototype = {
-    addHandler: Sys$EventHandlerList$addHandler,
-    removeHandler: Sys$EventHandlerList$removeHandler,
-    getHandler: Sys$EventHandlerList$getHandler,
-
-    _getEvent: Sys$EventHandlerList$_getEvent
-}
-Sys.EventHandlerList.registerClass('Sys.EventHandlerList');
-Sys.EventArgs = function Sys$EventArgs() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-Sys.EventArgs.registerClass('Sys.EventArgs');
-
-Sys.EventArgs.Empty = new Sys.EventArgs();
-Sys.CancelEventArgs = function Sys$CancelEventArgs() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    Sys.CancelEventArgs.initializeBase(this);
-
-    this._cancel = false;
-}
-
-
-    function Sys$CancelEventArgs$get_cancel() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._cancel;
-    }
-    function Sys$CancelEventArgs$set_cancel(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-
-        this._cancel = value;
-    }
-Sys.CancelEventArgs.prototype = {
-    get_cancel: Sys$CancelEventArgs$get_cancel,
-    set_cancel: Sys$CancelEventArgs$set_cancel
-}
-
-Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
-Sys.INotifyPropertyChange = function Sys$INotifyPropertyChange() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-
-    function Sys$INotifyPropertyChange$add_propertyChanged(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-    function Sys$INotifyPropertyChange$remove_propertyChanged(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-Sys.INotifyPropertyChange.prototype = {
-    add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged,
-    remove_propertyChanged: Sys$INotifyPropertyChange$remove_propertyChanged
-}
-Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange');
-Sys.PropertyChangedEventArgs = function Sys$PropertyChangedEventArgs(propertyName) {
-    /// <param name="propertyName" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "propertyName", type: String}
-    ]);
-    if (e) throw e;
-
-    Sys.PropertyChangedEventArgs.initializeBase(this);
-    this._propertyName = propertyName;
-}
- 
-    function Sys$PropertyChangedEventArgs$get_propertyName() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._propertyName;
-    }
-Sys.PropertyChangedEventArgs.prototype = {
-    get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName
-}
-Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs);
-Sys.INotifyDisposing = function Sys$INotifyDisposing() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-
-    function Sys$INotifyDisposing$add_disposing(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-    function Sys$INotifyDisposing$remove_disposing(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-Sys.INotifyDisposing.prototype = {
-    add_disposing: Sys$INotifyDisposing$add_disposing,
-    remove_disposing: Sys$INotifyDisposing$remove_disposing
-}
-Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");
-Sys.Component = function Sys$Component() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    if (Sys.Application) Sys.Application.registerDisposableObject(this);
-}
-
-
-
-
-
-    function Sys$Component$get_events() {
-        /// <value type="Sys.EventHandlerList"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-    function Sys$Component$get_id() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._id;
-    }
-    function Sys$Component$set_id(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-
-        if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
-        this._idSet = true;
-        var oldId = this.get_id();
-        if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
-        this._id = value;
-    }
-    function Sys$Component$get_isInitialized() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._initialized;
-    }
-    function Sys$Component$get_isUpdating() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._updating;
-    }
-    function Sys$Component$add_disposing(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().addHandler("disposing", handler);
-    }
-    function Sys$Component$remove_disposing(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().removeHandler("disposing", handler);
-    }
-    function Sys$Component$add_propertyChanged(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().addHandler("propertyChanged", handler);
-    }
-    function Sys$Component$remove_propertyChanged(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().removeHandler("propertyChanged", handler);
-    }
-    function Sys$Component$beginUpdate() {
-        this._updating = true;
-    }
-    function Sys$Component$dispose() {
-        if (this._events) {
-            var handler = this._events.getHandler("disposing");
-            if (handler) {
-                handler(this, Sys.EventArgs.Empty);
-            }
-        }
-        delete this._events;
-        Sys.Application.unregisterDisposableObject(this);
-        Sys.Application.removeComponent(this);
-    }
-    function Sys$Component$endUpdate() {
-        this._updating = false;
-        if (!this._initialized) this.initialize();
-        this.updated();
-    }
-    function Sys$Component$initialize() {
-        this._initialized = true;
-    }
-    function Sys$Component$raisePropertyChanged(propertyName) {
-        /// <param name="propertyName" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "propertyName", type: String}
-        ]);
-        if (e) throw e;
-
-        if (!this._events) return;
-        var handler = this._events.getHandler("propertyChanged");
-        if (handler) {
-            handler(this, new Sys.PropertyChangedEventArgs(propertyName));
-        }
-    }
-    function Sys$Component$updated() {
-    }
-Sys.Component.prototype = {
-    _id: null,
-    _idSet: false,
-    _initialized: false,
-    _updating: false,
-    get_events: Sys$Component$get_events,
-    get_id: Sys$Component$get_id,
-    set_id: Sys$Component$set_id,
-    get_isInitialized: Sys$Component$get_isInitialized,
-    get_isUpdating: Sys$Component$get_isUpdating,
-    add_disposing: Sys$Component$add_disposing,
-    remove_disposing: Sys$Component$remove_disposing,
-    add_propertyChanged: Sys$Component$add_propertyChanged,
-    remove_propertyChanged: Sys$Component$remove_propertyChanged,
-    beginUpdate: Sys$Component$beginUpdate,
-    dispose: Sys$Component$dispose,
-    endUpdate: Sys$Component$endUpdate,
-    initialize: Sys$Component$initialize,
-    raisePropertyChanged: Sys$Component$raisePropertyChanged,
-    updated: Sys$Component$updated
-}
-Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing);
-
-function Sys$Component$_setProperties(target, properties) {
-    /// <param name="target"></param>
-    /// <param name="properties"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "target"},
-        {name: "properties"}
-    ]);
-    if (e) throw e;
-
-    var current;
-    var targetType = Object.getType(target);
-    var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement);
-    var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating();
-    if (isComponent) target.beginUpdate();
-    for (var name in properties) {
-        var val = properties[name];
-        var getter = isObject ? null : target["get_" + name];
-        if (isObject || typeof(getter) !== 'function') {
-                        var targetVal = target[name];
-            if (!isObject && typeof(targetVal) === 'undefined') throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, name));
-            if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) {
-                target[name] = val;
-            }
-            else {
-                Sys$Component$_setProperties(targetVal, val);
-            }
-        }
-        else {
-            var setter = target["set_" + name];
-            if (typeof(setter) === 'function') {
-                                setter.apply(target, [val]);
-            }
-            else if (val instanceof Array) {
-                                current = getter.apply(target);
-                if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
-                for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) {
-                    current[j] = val[i];
-                }
-            }
-            else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) {
-                                current = getter.apply(target);
-                if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name));
-                Sys$Component$_setProperties(current, val);
-            }
-            else {
-                                throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
-            }
-        }
-    }
-    if (isComponent) target.endUpdate();
-}
-
-function Sys$Component$_setReferences(component, references) {
-    for (var name in references) {
-        var setter = component["set_" + name];
-        var reference = $find(references[name]);
-        if (typeof(setter) !== 'function') throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
-        if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, references[name]));
-        setter.apply(component, [reference]);
-    }
-}
-
-var $create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) {
-    /// <param name="type" type="Type"></param>
-    /// <param name="properties" optional="true" mayBeNull="true"></param>
-    /// <param name="events" optional="true" mayBeNull="true"></param>
-    /// <param name="references" optional="true" mayBeNull="true"></param>
-    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
-    /// <returns type="Sys.UI.Component"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", type: Type},
-        {name: "properties", mayBeNull: true, optional: true},
-        {name: "events", mayBeNull: true, optional: true},
-        {name: "references", mayBeNull: true, optional: true},
-        {name: "element", mayBeNull: true, domElement: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    if (!type.inheritsFrom(Sys.Component)) {
-        throw Error.argument('type', String.format(Sys.Res.createNotComponent, type.getName()));
-    }
-    if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
-        if (!element) throw Error.argument('element', Sys.Res.createNoDom);
-    }
-    else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom);
-    var component = (element ? new type(element): new type());
-    var app = Sys.Application;
-    var creatingComponents = app.get_isCreatingComponents();
-
-    component.beginUpdate();
-    if (properties) {
-        Sys$Component$_setProperties(component, properties);
-    }
-    if (events) {
-        for (var name in events) {
-            if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name));
-            if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction);
-            component["add_" + name](events[name]);
-        }
-    }
-
-    app._createdComponents[app._createdComponents.length] = component;
-    if (component.get_id()) {
-        app.addComponent(component);
-    }
-    if (creatingComponents) {
-        if (references) {
-            app._addComponentToSecondPass(component, references);
-        }
-        else {
-            component.endUpdate();
-        }
-    }
-    else {
-        if (references) {
-            Sys$Component$_setReferences(component, references);
-        }
-        component.endUpdate();
-    }
-
-    return component;
-}
-Sys.UI.MouseButton = function Sys$UI$MouseButton() {
-    /// <field name="leftButton" type="Number" integer="true" static="true"></field>
-    /// <field name="middleButton" type="Number" integer="true" static="true"></field>
-    /// <field name="rightButton" type="Number" integer="true" static="true"></field>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-
-
-
-
-Sys.UI.MouseButton.prototype = {
-    leftButton: 0,
-    middleButton: 1,
-    rightButton: 2
-}
-Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");
-Sys.UI.Key = function Sys$UI$Key() {
-    /// <field name="backspace" type="Number" integer="true" static="true"></field>
-    /// <field name="tab" type="Number" integer="true" static="true"></field>
-    /// <field name="enter" type="Number" integer="true" static="true"></field>
-    /// <field name="esc" type="Number" integer="true" static="true"></field>
-    /// <field name="space" type="Number" integer="true" static="true"></field>
-    /// <field name="pageUp" type="Number" integer="true" static="true"></field>
-    /// <field name="pageDown" type="Number" integer="true" static="true"></field>
-    /// <field name="end" type="Number" integer="true" static="true"></field>
-    /// <field name="home" type="Number" integer="true" static="true"></field>
-    /// <field name="left" type="Number" integer="true" static="true"></field>
-    /// <field name="up" type="Number" integer="true" static="true"></field>
-    /// <field name="right" type="Number" integer="true" static="true"></field>
-    /// <field name="down" type="Number" integer="true" static="true"></field>
-    /// <field name="del" type="Number" integer="true" static="true"></field>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Sys.UI.Key.prototype = {
-    backspace: 8,
-    tab: 9,
-    enter: 13,
-    esc: 27,
-    space: 32,
-    pageUp: 33,
-    pageDown: 34,
-    end: 35,
-    home: 36,
-    left: 37,
-    up: 38,
-    right: 39,
-    down: 40,
-    del: 127
-}
-Sys.UI.Key.registerEnum("Sys.UI.Key");
-Sys.UI.DomEvent = function Sys$UI$DomEvent(eventObject) {
-    /// <param name="eventObject"></param>
-    /// <field name="altKey" type="Boolean"></field>
-    /// <field name="button" type="Sys.UI.MouseButton"></field>
-    /// <field name="charCode" type="Number" integer="true"></field>
-    /// <field name="clientX" type="Number" integer="true"></field>
-    /// <field name="clientY" type="Number" integer="true"></field>
-    /// <field name="ctrlKey" type="Boolean"></field>
-    /// <field name="keyCode" type="Number" integer="true"></field>
-    /// <field name="offsetX" type="Number" integer="true"></field>
-    /// <field name="offsetY" type="Number" integer="true"></field>
-    /// <field name="screenX" type="Number" integer="true"></field>
-    /// <field name="screenY" type="Number" integer="true"></field>
-    /// <field name="shiftKey" type="Boolean"></field>
-    /// <field name="target" domElement="true"></field>
-    /// <field name="type" type="String"></field>
-    var e = Function._validateParams(arguments, [
-        {name: "eventObject"}
-    ]);
-    if (e) throw e;
-
-    var e = eventObject;
-    this.rawEvent = e;
-    this.altKey = e.altKey;
-    if (typeof(e.button) !== 'undefined') {
-        this.button = (typeof(e.which) !== 'undefined') ? e.button :
-            (e.button === 4) ? Sys.UI.MouseButton.middleButton :
-            (e.button === 2) ? Sys.UI.MouseButton.rightButton :
-            Sys.UI.MouseButton.leftButton;
-    }
-    if (e.type === 'keypress') {
-        this.charCode = e.charCode || e.keyCode;
-    }
-    else if (e.keyCode && (e.keyCode === 46)) {
-        this.keyCode = 127;
-    }
-    else {
-        this.keyCode = e.keyCode;
-    }
-    this.clientX = e.clientX;
-    this.clientY = e.clientY;
-    this.ctrlKey = e.ctrlKey;
-    this.target = e.target ? e.target : e.srcElement;
-    if (this.target) {
-        var loc = Sys.UI.DomElement.getLocation(this.target);
-        this.offsetX = (typeof(e.offsetX) !== 'undefined') ? e.offsetX : window.pageXOffset + (e.clientX || 0) - loc.x;
-        this.offsetY = (typeof(e.offsetY) !== 'undefined') ? e.offsetY : window.pageYOffset + (e.clientY || 0) - loc.y;
-    }
-    this.screenX = e.screenX;
-    this.screenY = e.screenY;
-    this.shiftKey = e.shiftKey;
-    this.type = e.type;
-}
-
-    function Sys$UI$DomEvent$preventDefault() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this.rawEvent.preventDefault) {
-            this.rawEvent.preventDefault();
-        }
-        else if (window.event) {
-            window.event.returnValue = false;
-        }
-    }
-    function Sys$UI$DomEvent$stopPropagation() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this.rawEvent.stopPropagation) {
-            this.rawEvent.stopPropagation();
-        }
-        else if (window.event) {
-            window.event.cancelBubble = true;
-        }
-    }
-Sys.UI.DomEvent.prototype = {
-    preventDefault: Sys$UI$DomEvent$preventDefault,
-    stopPropagation: Sys$UI$DomEvent$stopPropagation
-}
-Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent');
-
-var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="eventName" type="String"></param>
-    /// <param name="handler" type="Function"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "eventName", type: String},
-        {name: "handler", type: Function}
-    ]);
-    if (e) throw e;
-
-    if (!element._events) {
-        element._events = {};
-    }
-    var eventCache = element._events[eventName];
-    if (!eventCache) {
-        element._events[eventName] = eventCache = [];
-    }
-    var browserHandler;
-    if (element.addEventListener) {
-        browserHandler = function(e) {
-            return handler.call(element, new Sys.UI.DomEvent(e));
-        }
-        element.addEventListener(eventName, browserHandler, false);
-    }
-    else if (element.attachEvent) {
-        browserHandler = function() {
-            return handler.call(element, new Sys.UI.DomEvent(window.event));
-        }
-        element.attachEvent('on' + eventName, browserHandler);
-    }
-    eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler};
-}
-
-var $addHandlers = Sys.UI.DomEvent.addHandlers = function Sys$UI$DomEvent$addHandlers(element, events, handlerOwner) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="events" type="Object"></param>
-    /// <param name="handlerOwner" optional="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "events", type: Object},
-        {name: "handlerOwner", optional: true}
-    ]);
-    if (e) throw e;
-
-    for (var name in events) {
-        var handler = events[name];
-        if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
-        if (handlerOwner) {
-            handler = Function.createDelegate(handlerOwner, handler);
-        }
-        $addHandler(element, name, handler);
-    }
-}
-
-var $clearHandlers = Sys.UI.DomEvent.clearHandlers = function Sys$UI$DomEvent$clearHandlers(element) {
-    /// <param name="element" domElement="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-
-    if (element._events) {
-        var cache = element._events;
-        for (var name in cache) {
-            var handlers = cache[name];
-            for (var i = handlers.length - 1; i >= 0; i--) {
-                $removeHandler(element, name, handlers[i].handler);
-            }
-        }
-        element._events = null;
-    }
-}
-
-var $removeHandler = Sys.UI.DomEvent.removeHandler = function Sys$UI$DomEvent$removeHandler(element, eventName, handler) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="eventName" type="String"></param>
-    /// <param name="handler" type="Function"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "eventName", type: String},
-        {name: "handler", type: Function}
-    ]);
-    if (e) throw e;
-
-    var browserHandler = null;
-    if ((typeof(element._events) !== 'object') || (element._events == null)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
-    var cache = element._events[eventName];
-    if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
-    var browserHandler = null;
-    for (var i = 0, l = cache.length; i < l; i++) {
-        if (cache[i].handler === handler) {
-            browserHandler = cache[i].browserHandler;
-            break;
-        }
-    }
-    if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
-    if (element.removeEventListener) {
-        element.removeEventListener(eventName, browserHandler, false);
-    }
-    else if (element.detachEvent) {
-        element.detachEvent('on' + eventName, browserHandler);
-    }
-    cache.splice(i, 1);
-}
-Sys.IContainer = function Sys$IContainer() {
-    throw Error.notImplemented();
-}
-
-    function Sys$IContainer$addComponent(component) {
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-    function Sys$IContainer$removeComponent(component) {
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-    function Sys$IContainer$findComponent(id) {
-        /// <param name="id" type="String"></param>
-        /// <returns type="Sys.Component"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String}
-        ]);
-        if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-    function Sys$IContainer$getComponents() {
-        /// <returns type="Array" elementType="Sys.Component"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-Sys.IContainer.prototype = {
-    addComponent: Sys$IContainer$addComponent,
-    removeComponent: Sys$IContainer$removeComponent,
-    findComponent: Sys$IContainer$findComponent,
-    getComponents: Sys$IContainer$getComponents
-}
-Sys.IContainer.registerInterface("Sys.IContainer");
-
-
-Sys._ScriptLoader = function Sys$_ScriptLoader() {
-    this._scriptsToLoad = null;
-    this._scriptLoadedDelegate = Function.createDelegate(this, this._scriptLoadedHandler);
-}
-
-    function Sys$_ScriptLoader$dispose() {
-        this._stopLoading();
-        if(this._events) {
-            delete this._events;
-        }
-        this._scriptLoadedDelegate = null;        
-    }
-
-    function Sys$_ScriptLoader$loadScripts(scriptTimeout, allScriptsLoadedCallback, scriptLoadFailedCallback, scriptLoadTimeoutCallback) {
-        /// <param name="scriptTimeout" type="Number" integer="true"></param>
-        /// <param name="allScriptsLoadedCallback" type="Function" mayBeNull="true"></param>
-        /// <param name="scriptLoadFailedCallback" type="Function" mayBeNull="true"></param>
-        /// <param name="scriptLoadTimeoutCallback" type="Function" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptTimeout", type: Number, integer: true},
-            {name: "allScriptsLoadedCallback", type: Function, mayBeNull: true},
-            {name: "scriptLoadFailedCallback", type: Function, mayBeNull: true},
-            {name: "scriptLoadTimeoutCallback", type: Function, mayBeNull: true}
-        ]);
-        if (e) throw e;
-
-        if(this._loading) {
-            throw Error.invalidOperation(Sys.Res.scriptLoaderAlreadyLoading);
-        }
-        this._loading = true;
-        this._allScriptsLoadedCallback = allScriptsLoadedCallback;
-        this._scriptLoadFailedCallback = scriptLoadFailedCallback;
-        this._scriptLoadTimeoutCallback = scriptLoadTimeoutCallback;
-        
-        this._loadScriptsInternal();
-    }
-
-    function Sys$_ScriptLoader$notifyScriptLoaded() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        
-                        if(!this._loading) {
-                                    return;
-        }
-
-        this._currentTask._notified++;
-        
-        if(Sys.Browser.agent === Sys.Browser.Safari) {           
-            if(this._currentTask._notified === 1) {
-                                                                                                                window.setTimeout(Function.createDelegate(this, function() {
-                    this._scriptLoadedHandler(this._currentTask.get_scriptElement(), true);
-                }), 0);
-            }
-        }
-
-                            }
-
-    function Sys$_ScriptLoader$queueCustomScriptTag(scriptAttributes) {
-        /// <param name="scriptAttributes" mayBeNull="false"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptAttributes"}
-        ]);
-        if (e) throw e;
-
-        if(!this._scriptsToLoad) {
-            this._scriptsToLoad = [];
-        }
-        Array.add(this._scriptsToLoad, scriptAttributes);
-    }
-
-    function Sys$_ScriptLoader$queueScriptBlock(scriptContent) {
-        /// <param name="scriptContent" type="String" mayBeNull="false"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptContent", type: String}
-        ]);
-        if (e) throw e;
-
-        if(!this._scriptsToLoad) {
-            this._scriptsToLoad = [];
-        }
-        Array.add(this._scriptsToLoad, {text: scriptContent});
-    }
-
-    function Sys$_ScriptLoader$queueScriptReference(scriptUrl) {
-        /// <param name="scriptUrl" type="String" mayBeNull="false"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptUrl", type: String}
-        ]);
-        if (e) throw e;
-
-        if(!this._scriptsToLoad) {
-            this._scriptsToLoad = [];
-        }
-        Array.add(this._scriptsToLoad, {src: scriptUrl});
-    }
-
-    function Sys$_ScriptLoader$_createScriptElement(queuedScript) {
-        var scriptElement = document.createElement('SCRIPT');
-
-                        scriptElement.type = 'text/javascript';
-
-                for (var attr in queuedScript) {
-            scriptElement[attr] = queuedScript[attr];
-        }
-        
-        return scriptElement;
-    }
-
-    function Sys$_ScriptLoader$_loadScriptsInternal() {
-                if (this._scriptsToLoad && this._scriptsToLoad.length > 0) {
-            var nextScript = Array.dequeue(this._scriptsToLoad);
-                        var scriptElement = this._createScriptElement(nextScript);
-            
-            if (scriptElement.text && Sys.Browser.agent === Sys.Browser.Safari) {
-                                scriptElement.innerHTML = scriptElement.text;
-                delete scriptElement.text;
-            }            
-
-                                                            if (typeof(nextScript.src) === "string") {
-                                this._currentTask = new Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
-                                                                                this._currentTask.execute();
-            }
-            else {
-                                                document.getElementsByTagName('HEAD')[0].appendChild(scriptElement);
-                
-                                Sys._ScriptLoader._clearScript(scriptElement);
-
-                                                                this._loadScriptsInternal();
-            }
-        }
-        else {
-                        var callback = this._allScriptsLoadedCallback;
-            this._stopLoading();
-            if(callback) {
-                callback(this);
-            }
-        }
-    }
-
-    function Sys$_ScriptLoader$_raiseError(multipleCallbacks) {
-                var callback = this._scriptLoadFailedCallback;
-        var scriptElement = this._currentTask.get_scriptElement();
-        this._stopLoading();
-        
-        if(callback) {
-            callback(this, scriptElement, multipleCallbacks);
-        }
-        else {
-            throw Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src, multipleCallbacks);
-        }
-    }
-
-    function Sys$_ScriptLoader$_scriptLoadedHandler(scriptElement, loaded) {
-                                if(loaded && this._currentTask._notified) {
-            if(this._currentTask._notified > 1) {
-                                this._raiseError(true);
-            }
-            else {
-                                Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
-                this._currentTask.dispose();
-                this._currentTask = null;
-                this._loadScriptsInternal();
-            }
-        }
-        else {
-                        this._raiseError(false);
-        }
-    }
-
-    function Sys$_ScriptLoader$_scriptLoadTimeoutHandler() {
-        var callback = this._scriptLoadTimeoutCallback;
-        this._stopLoading();
-
-        if(callback) {
-            callback(this);
-        }
-    }
-
-    function Sys$_ScriptLoader$_stopLoading() {
-        if(this._timeoutCookie) {
-            window.clearTimeout(this._timeoutCookie);
-            this._timeoutCookie = null;
-        }
-
-        if(this._currentTask) {
-            this._currentTask.dispose();
-            this._currentTask = null;
-        }
-
-        this._scriptsToLoad = null;
-        this._loading = null;
-        
-        this._allScriptsLoadedCallback = null;
-        this._scriptLoadFailedCallback = null;
-        this._scriptLoadTimeoutCallback = null;
-    }
-Sys._ScriptLoader.prototype = {
-    dispose: Sys$_ScriptLoader$dispose,
-    
-    loadScripts: Sys$_ScriptLoader$loadScripts,
-    
-    notifyScriptLoaded: Sys$_ScriptLoader$notifyScriptLoaded,
-    
-    queueCustomScriptTag: Sys$_ScriptLoader$queueCustomScriptTag,
-
-    queueScriptBlock: Sys$_ScriptLoader$queueScriptBlock,
-
-    queueScriptReference: Sys$_ScriptLoader$queueScriptReference,
-    
-    _createScriptElement: Sys$_ScriptLoader$_createScriptElement,   
-
-    _loadScriptsInternal: Sys$_ScriptLoader$_loadScriptsInternal,
-    
-    _raiseError: Sys$_ScriptLoader$_raiseError,
-    
-    _scriptLoadedHandler: Sys$_ScriptLoader$_scriptLoadedHandler,
-    
-    _scriptLoadTimeoutHandler: Sys$_ScriptLoader$_scriptLoadTimeoutHandler,
-    
-    _stopLoading: Sys$_ScriptLoader$_stopLoading    
-}
-Sys._ScriptLoader.registerClass('Sys._ScriptLoader', null, Sys.IDisposable);
-
-Sys._ScriptLoader.getInstance = function Sys$_ScriptLoader$getInstance() {
-    var sl = Sys._ScriptLoader._activeInstance;
-    if(!sl) {
-        sl = Sys._ScriptLoader._activeInstance = new Sys._ScriptLoader();
-    }
-    return sl;
-}
-
-Sys._ScriptLoader.isScriptLoaded = function Sys$_ScriptLoader$isScriptLoaded(scriptSrc) {
-                    var dummyScript = document.createElement('script');
-    dummyScript.src = scriptSrc;
-    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), dummyScript.src);
-}
-
-Sys._ScriptLoader.readLoadedScripts = function Sys$_ScriptLoader$readLoadedScripts() {
-        if(!Sys._ScriptLoader._referencedScripts) {
-        var referencedScripts = Sys._ScriptLoader._referencedScripts = [];
-
-        var existingScripts = document.getElementsByTagName('SCRIPT');
-        for (i = existingScripts.length - 1; i >= 0; i--) {
-            var scriptNode = existingScripts[i];
-            var scriptSrc = scriptNode.src;
-            if (scriptSrc.length) {
-                if (!Array.contains(referencedScripts, scriptSrc)) {
-                    Array.add(referencedScripts, scriptSrc);
-                }
-            }
-        }
-    }
-}
-
-Sys._ScriptLoader._clearScript = function Sys$_ScriptLoader$_clearScript(scriptElement) {
-    if (!Sys.Debug.isDebug) {
-                        scriptElement.parentNode.removeChild(scriptElement);
-    }
-}
-
-Sys._ScriptLoader._errorScriptLoadFailed = function Sys$_ScriptLoader$_errorScriptLoadFailed(scriptUrl, multipleCallbacks) {
-    var errorMessage;
-    if(multipleCallbacks) {
-        errorMessage = Sys.Res.scriptLoadMultipleCallbacks;
-    }
-    else {
-                errorMessage = Sys.Res.scriptLoadFailedDebug;
-    }
-
-    var displayMessage = "Sys.ScriptLoadFailedException: " + String.format(errorMessage, scriptUrl);
-    var e = Error.create(displayMessage, {name: 'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
-    e.popStackFrame();
-    return e;
-}
-
-Sys._ScriptLoader._getLoadedScripts = function Sys$_ScriptLoader$_getLoadedScripts() {
-    if(!Sys._ScriptLoader._referencedScripts) {
-        Sys._ScriptLoader._referencedScripts = [];
-        Sys._ScriptLoader.readLoadedScripts();
-    }
-    return Sys._ScriptLoader._referencedScripts;
-}
-
-
-Sys._ScriptLoaderTask = function Sys$_ScriptLoaderTask(scriptElement, completedCallback) {
-    /// <param name="scriptElement" domElement="true"></param>
-    /// <param name="completedCallback" type="Function"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "scriptElement", domElement: true},
-        {name: "completedCallback", type: Function}
-    ]);
-    if (e) throw e;
-
-    this._scriptElement = scriptElement;
-    this._completedCallback = completedCallback;
-    this._notified = 0;
-}
-
-    function Sys$_ScriptLoaderTask$get_scriptElement() {
-        /// <value domElement="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._scriptElement;
-    }
-
-    function Sys$_ScriptLoaderTask$dispose() {
-                if(this._disposed) {
-                        return;
-        }
-        this._disposed = true;
-        this._removeScriptElementHandlers();
-                Sys._ScriptLoader._clearScript(this._scriptElement);
-        this._scriptElement = null;
-    }
-
-    function Sys$_ScriptLoaderTask$execute() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        this._addScriptElementHandlers();
-        document.getElementsByTagName('HEAD')[0].appendChild(this._scriptElement);
-    }
-
-    function Sys$_ScriptLoaderTask$_addScriptElementHandlers() {
-                this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler);
-        
-        if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
-            this._scriptElement.readyState = 'loaded';
-            $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate);
-        }
-        else {
-            $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate);
-        }    
-                        this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler);
-        $addHandler(this._scriptElement, 'error', this._scriptErrorDelegate);
-    }
-
-    function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() {
-                if(this._scriptLoadDelegate) {
-            var scriptElement = this.get_scriptElement();
-            if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
-                $removeHandler(scriptElement, 'load', this._scriptLoadDelegate);
-            }
-            else {
-                $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate);
-            }
-            $removeHandler(scriptElement, 'error', this._scriptErrorDelegate);
-            this._scriptErrorDelegate = null;
-            this._scriptLoadDelegate = null;
-        }
-    }
-
-    function Sys$_ScriptLoaderTask$_scriptErrorHandler() {
-                if(this._disposed) {
-            return;
-        }
-        
-                this._completedCallback(this.get_scriptElement(), false);
-    }
-
-    function Sys$_ScriptLoaderTask$_scriptLoadHandler() {
-                if(this._disposed) {
-            return;
-        }
-
-        var scriptElement = this.get_scriptElement();
-        if ((scriptElement.readyState !== 'loaded') &&
-            (scriptElement.readyState !== 'complete')) {
-            return;
-        }
-        
-                                        var _this = this;
-        window.setTimeout(function() {
-            _this._completedCallback(scriptElement, true);
-        }, 0);
-    }
-Sys._ScriptLoaderTask.prototype = {
-    get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement,
-    
-    dispose: Sys$_ScriptLoaderTask$dispose,
-        
-    execute: Sys$_ScriptLoaderTask$execute,
-       
-    _addScriptElementHandlers: Sys$_ScriptLoaderTask$_addScriptElementHandlers,    
-    
-    _removeScriptElementHandlers: Sys$_ScriptLoaderTask$_removeScriptElementHandlers,    
-
-    _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler,
-           
-    _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler  
-}
-Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable);
-Sys.ApplicationLoadEventArgs = function Sys$ApplicationLoadEventArgs(components, isPartialLoad) {
-    /// <param name="components" type="Array" elementType="Sys.Component"></param>
-    /// <param name="isPartialLoad" type="Boolean"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "components", type: Array, elementType: Sys.Component},
-        {name: "isPartialLoad", type: Boolean}
-    ]);
-    if (e) throw e;
-
-    Sys.ApplicationLoadEventArgs.initializeBase(this);
-    this._components = components;
-    this._isPartialLoad = isPartialLoad;
-}
- 
-    function Sys$ApplicationLoadEventArgs$get_components() {
-        /// <value type="Array" elementType="Sys.Component"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._components;
-    }
-    function Sys$ApplicationLoadEventArgs$get_isPartialLoad() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._isPartialLoad;
-    }
-Sys.ApplicationLoadEventArgs.prototype = {
-    get_components: Sys$ApplicationLoadEventArgs$get_components,
-    get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad
-}
-Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs);
-Sys._Application = function Sys$_Application() {
-    Sys._Application.initializeBase(this);
-
-    this._disposableObjects = [];
-    this._components = {};
-    this._createdComponents = [];
-    this._secondPassComponents = [];
-
-    this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler);
-    this._loadHandlerDelegate = Function.createDelegate(this, this._loadHandler);
-
-    Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate);
-    Sys.UI.DomEvent.addHandler(window, "load", this._loadHandlerDelegate);
-}
-
-
-
-
-    function Sys$_Application$get_isCreatingComponents() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._creatingComponents;
-    }
-    function Sys$_Application$add_load(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().addHandler("load", handler);
-    }
-    function Sys$_Application$remove_load(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().removeHandler("load", handler);
-    }
-    function Sys$_Application$add_init(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        if (this._initialized) {
-            handler(this, Sys.EventArgs.Empty);
-        }
-        else {
-            this.get_events().addHandler("init", handler);
-        }
-    }
-    function Sys$_Application$remove_init(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().removeHandler("init", handler);
-    }
-    function Sys$_Application$add_unload(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().addHandler("unload", handler);
-    }
-    function Sys$_Application$remove_unload(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this.get_events().removeHandler("unload", handler);
-    }
-    function Sys$_Application$addComponent(component) {
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-
-        var id = component.get_id();
-        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
-        if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id));
-        this._components[id] = component;
-    }
-    function Sys$_Application$beginCreateComponents() {
-        this._creatingComponents = true;
-    }
-    function Sys$_Application$dispose() {
-        if (!this._disposing) {
-            this._disposing = true;
-            if (window.pageUnload) {
-                window.pageUnload(this, Sys.EventArgs.Empty);
-            }
-            var unloadHandler = this.get_events().getHandler("unload");
-            if (unloadHandler) {
-                unloadHandler(this, Sys.EventArgs.Empty);
-            }
-            var disposableObjects = Array.clone(this._disposableObjects);
-            for (var i = 0, l = disposableObjects.length; i < l; i++) {
-                disposableObjects[i].dispose();
-            }
-            Array.clear(this._disposableObjects);
-
-            Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate);
-            if(this._loadHandlerDelegate) {
-                Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
-                this._loadHandlerDelegate = null;
-            }
-
-            var sl = Sys._ScriptLoader.getInstance();
-            if(sl) {
-                sl.dispose();
-            }
-
-            Sys._Application.callBaseMethod(this, 'dispose');
-        }
-    }
-    function Sys$_Application$endCreateComponents() {
-        var components = this._secondPassComponents;
-        for (var i = 0, l = components.length; i < l; i++) {
-            var component = components[i].component;
-            Sys$Component$_setReferences(component, components[i].references);
-            component.endUpdate();
-        }
-        this._secondPassComponents = [];
-        this._creatingComponents = false;
-    }
-    function Sys$_Application$findComponent(id, parent) {
-        /// <param name="id" type="String"></param>
-        /// <param name="parent" optional="true" mayBeNull="true"></param>
-        /// <returns type="Sys.Component" mayBeNull="true"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String},
-            {name: "parent", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-                        return (parent ?
-            ((Sys.IContainer.isInstanceOfType(parent)) ?
-                parent.findComponent(id) :
-                parent[id] || null) :
-            Sys.Application._components[id] || null);
-    }
-    function Sys$_Application$getComponents() {
-        /// <returns type="Array" elementType="Sys.Component"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        var res = [];
-        var components = this._components;
-        for (var name in components) {
-            res[res.length] = components[name];
-        }
-        return res;
-    }
-    function Sys$_Application$initialize() {
-        if(!this._initialized && !this._initializing) {
-            this._initializing = true;
-                                                window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
-        }
-    }
-    function Sys$_Application$notifyScriptLoaded() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        var sl = Sys._ScriptLoader.getInstance();
-        if(sl) {
-            sl.notifyScriptLoaded();
-        }
-    }
-    function Sys$_Application$registerDisposableObject(object) {
-        /// <param name="object" type="Sys.IDisposable"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "object", type: Sys.IDisposable}
-        ]);
-        if (e) throw e;
-
-        if (!this._disposing) {
-            this._disposableObjects[this._disposableObjects.length] = object;
-        }
-    }
-    function Sys$_Application$raiseLoad() {
-        var h = this.get_events().getHandler("load");
-        var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !this._initializing);
-        if (h) {
-            h(this, args);
-        }
-
-        if (window.pageLoad) {
-            window.pageLoad(this, args);
-        }
-        this._createdComponents = [];
-    }
-    function Sys$_Application$removeComponent(component) {
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-
-        var id = component.get_id();
-        if (id) delete this._components[id];
-    }
-    function Sys$_Application$unregisterDisposableObject(object) {
-        /// <param name="object" type="Sys.IDisposable"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "object", type: Sys.IDisposable}
-        ]);
-        if (e) throw e;
-
-        if (!this._disposing) {
-            Array.remove(this._disposableObjects, object);
-        }
-    }
-    function Sys$_Application$_addComponentToSecondPass(component, references) {
-        this._secondPassComponents[this._secondPassComponents.length] = {component: component, references: references};
-    }
-    function Sys$_Application$_doInitialize() {
-        Sys._Application.callBaseMethod(this, 'initialize');
-
-        var handler = this.get_events().getHandler("init");
-        if (handler) {
-            this.beginCreateComponents();
-            handler(this, Sys.EventArgs.Empty);
-            this.endCreateComponents();
-        }
-        this.raiseLoad();
-        this._initializing = false;
-    }
-    function Sys$_Application$_loadHandler() {
-                        if(this._loadHandlerDelegate) {
-            Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
-            this._loadHandlerDelegate = null;
-        }
-        this.initialize();
-    }
-    function Sys$_Application$_unloadHandler(event) {
-        this.dispose();
-    }
-Sys._Application.prototype = {
-    _creatingComponents: false,
-    _disposing: false,
-
-    get_isCreatingComponents: Sys$_Application$get_isCreatingComponents,
-    add_load: Sys$_Application$add_load,
-    remove_load: Sys$_Application$remove_load,
-    add_init: Sys$_Application$add_init,
-    remove_init: Sys$_Application$remove_init,
-    add_unload: Sys$_Application$add_unload,
-    remove_unload: Sys$_Application$remove_unload,
-    addComponent: Sys$_Application$addComponent,
-    beginCreateComponents: Sys$_Application$beginCreateComponents,
-    dispose: Sys$_Application$dispose,
-    endCreateComponents: Sys$_Application$endCreateComponents,
-    findComponent: Sys$_Application$findComponent,
-    getComponents: Sys$_Application$getComponents,
-    initialize: Sys$_Application$initialize,
-    notifyScriptLoaded: Sys$_Application$notifyScriptLoaded,
-    registerDisposableObject: Sys$_Application$registerDisposableObject,
-    raiseLoad: Sys$_Application$raiseLoad,
-    removeComponent: Sys$_Application$removeComponent,
-    unregisterDisposableObject: Sys$_Application$unregisterDisposableObject,
-    _addComponentToSecondPass: Sys$_Application$_addComponentToSecondPass,
-    _doInitialize: Sys$_Application$_doInitialize,    
-    _loadHandler: Sys$_Application$_loadHandler,
-    _unloadHandler: Sys$_Application$_unloadHandler
-}
-Sys._Application.registerClass('Sys._Application', Sys.Component, Sys.IContainer);
-
-Sys.Application = new Sys._Application();
-
-var $find = Sys.Application.findComponent;
-
-Type.registerNamespace('Sys.Net');
-
-Sys.Net.WebRequestExecutor = function Sys$Net$WebRequestExecutor() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    this._webRequest = null;
-    this._resultObject = null;
-}
-
-
-    function Sys$Net$WebRequestExecutor$get_webRequest() {
-        /// <value type="Sys.Net.WebRequest"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._webRequest;
-    }
-
-    function Sys$Net$WebRequestExecutor$_set_webRequest(value) {
-        if (this.get_started()) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest'));
-        }
-
-        this._webRequest = value;
-    }
-
-
-    function Sys$Net$WebRequestExecutor$get_started() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-
-    function Sys$Net$WebRequestExecutor$get_responseAvailable() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-
-    function Sys$Net$WebRequestExecutor$get_timedOut() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_aborted() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_responseData() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_statusCode() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_statusText() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_xml() {
-        /// <value></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_object() {
-        /// <value></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._resultObject) {
-            this._resultObject = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());
-        }
-        return this._resultObject;
-    }
-
-
-    function Sys$Net$WebRequestExecutor$executeRequest() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$abort() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$getResponseHeader(header) {
-        /// <param name="header" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "header", type: String}
-        ]);
-        if (e) throw e;
-
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$getAllResponseHeaders() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-Sys.Net.WebRequestExecutor.prototype = {
-    get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest,
-
-    _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest,
-
-        get_started: Sys$Net$WebRequestExecutor$get_started,
-
-    get_responseAvailable: Sys$Net$WebRequestExecutor$get_responseAvailable,
-
-    get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut,
-    get_aborted: Sys$Net$WebRequestExecutor$get_aborted,
-    get_responseData: Sys$Net$WebRequestExecutor$get_responseData,
-    get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode,
-    get_statusText: Sys$Net$WebRequestExecutor$get_statusText,
-    get_xml: Sys$Net$WebRequestExecutor$get_xml,
-    get_object: Sys$Net$WebRequestExecutor$get_object,
-
-        executeRequest: Sys$Net$WebRequestExecutor$executeRequest,
-    abort: Sys$Net$WebRequestExecutor$abort,
-    getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader,
-    getAllResponseHeaders: Sys$Net$WebRequestExecutor$getAllResponseHeaders
-}
-Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor');
-window.XMLDOM = function window$XMLDOM(markup) {
-    if (!window.DOMParser) {
-        var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
-        for (var i = 0; i < progIDs.length; i++) {
-            try {
-                var xmlDOM = new ActiveXObject(progIDs[i]);
-                xmlDOM.async = false;
-                xmlDOM.loadXML(markup);
-                xmlDOM.setProperty('SelectionLanguage', 'XPath');
-                return xmlDOM;
-            }
-            catch (ex) {
-            }
-        }
-        return null;
-    }
-        else {
-        try {
-            var domParser = new window.DOMParser();
-            return domParser.parseFromString(markup, 'text/xml');
-        } catch (ex) {
-            return null;
-        }
-    }
-    return null;
-    }
-
-Sys.Net.XMLHttpExecutor = function Sys$Net$XMLHttpExecutor() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-
-    Sys.Net.XMLHttpExecutor.initializeBase(this);
-
-    var _this = this;
-    this._xmlHttpRequest = null;
-    this._webRequest = null;
-    this._responseAvailable = false;
-    this._timedOut = false;
-    this._timer = null;
-    this._aborted = false;
-    this._started = false;
-
-    this._onReadyStateChange = function () {
-        
-        if (_this._xmlHttpRequest.readyState === 4 ) {
-
-            _this._clearTimer();
-            _this._responseAvailable = true;
-            _this._webRequest.completed(Sys.EventArgs.Empty);
-            if (_this._xmlHttpRequest != null) {
-                _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
-                _this._xmlHttpRequest = null;
-            }
-        }
-    }
-
-    this._clearTimer = function this$_clearTimer() {
-        if (_this._timer != null) {
-            window.clearTimeout(_this._timer);
-            _this._timer = null;
-        }
-    }
-
-    this._onTimeout = function this$_onTimeout() {
-        if (!_this._responseAvailable) {
-            _this._clearTimer();
-            _this._timedOut = true;
-            _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
-            _this._xmlHttpRequest.abort();
-            _this._webRequest.completed(Sys.EventArgs.Empty);
-            _this._xmlHttpRequest = null;
-        }
-    }
-
-}
-
-
-
-    function Sys$Net$XMLHttpExecutor$get_timedOut() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timedOut;
-    }
-
-    function Sys$Net$XMLHttpExecutor$get_started() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._started;
-    }
-
-    function Sys$Net$XMLHttpExecutor$get_responseAvailable() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-    return this._responseAvailable;
-    }
-
-    function Sys$Net$XMLHttpExecutor$get_aborted() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._aborted;
-    }
-
-    function Sys$Net$XMLHttpExecutor$executeRequest() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        this._webRequest = this.get_webRequest();
-
-        if (this._started) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest'));
-        }
-        if (this._webRequest === null) {
-            throw Error.invalidOperation(Sys.Res.nullWebRequest);
-        }
-
-        var body = this._webRequest.get_body();
-        var headers = this._webRequest.get_headers();
-        this._xmlHttpRequest = new XMLHttpRequest();
-        this._xmlHttpRequest.onreadystatechange = this._onReadyStateChange;
-        var verb = this._webRequest.get_httpVerb();
-        this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true );
-        if (headers) {
-            for (var header in headers) {
-                var val = headers[header];
-                if (typeof(val) !== "function")
-                    this._xmlHttpRequest.setRequestHeader(header, val);
-            }
-        }
-
-        if (verb.toLowerCase() === "post") {
-                        if ((headers === null) || !headers['Content-Type']) {
-                this._xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-            }
-
-                        if (!body) {
-                body = "";
-            }
-        }
-
-        var timeout = this._webRequest.get_timeout();
-        if (timeout > 0) {
-            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout);
-        }
-        this._xmlHttpRequest.send(body);
-        this._started = true;
-    }
-
-    function Sys$Net$XMLHttpExecutor$getResponseHeader(header) {
-        /// <param name="header" type="String"></param>
-        /// <returns type="String"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "header", type: String}
-        ]);
-        if (e) throw e;
-
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader'));
-        }
-
-        var result;
-        try {
-            result = this._xmlHttpRequest.getResponseHeader(header);
-        } catch (e) {
-        }
-        if (!result) result = "";
-        return result;
-    }
-
-    function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() {
-        /// <returns type="String"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders'));
-        }
-
-        return this._xmlHttpRequest.getAllResponseHeaders();
-    }
-
-    function Sys$Net$XMLHttpExecutor$get_responseData() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
-        }
-
-        return this._xmlHttpRequest.responseText;
-    }
-
-    function Sys$Net$XMLHttpExecutor$get_statusCode() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode'));
-        }
-
-        return this._xmlHttpRequest.status;
-    }
-
-    function Sys$Net$XMLHttpExecutor$get_statusText() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText'));
-        }
-
-        return this._xmlHttpRequest.statusText;
-    }
-
-    function Sys$Net$XMLHttpExecutor$get_xml() {
-        /// <value></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml'));
-        }
-
-        var xml = this._xmlHttpRequest.responseXML;
-        if (!xml || !xml.documentElement) {
-
-                        xml = new XMLDOM(this._xmlHttpRequest.responseText);
-
-                        if (!xml || !xml.documentElement)
-                return null;
-        }
-                else if (navigator.userAgent.indexOf('MSIE') !== -1) {
-            xml.setProperty('SelectionLanguage', 'XPath');
-        }
-
-                if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
-            xml.documentElement.tagName === "parsererror") {
-            return null;
-        }
-        
-                if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") {
-            return null;
-        }
-        
-        return xml;
-    }
-
-    function Sys$Net$XMLHttpExecutor$abort() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._started) {
-            throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
-        }
-
-                if (this._aborted || this._responseAvailable || this._timedOut)
-            return;
-
-        this._aborted = true;
-
-        this._clearTimer();
-
-        if (this._xmlHttpRequest && !this._responseAvailable) {
-
-                        this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
-            this._xmlHttpRequest.abort();
-
-            this._xmlHttpRequest = null;
-            var handler = this._webRequest._get_eventHandlerList().getHandler("completed");
-            if (handler) {
-                handler(this, Sys.EventArgs.Empty);
-            }
-        }
-    }
-Sys.Net.XMLHttpExecutor.prototype = {
-
-    get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut,
-
-    get_started: Sys$Net$XMLHttpExecutor$get_started,
-
-    get_responseAvailable: Sys$Net$XMLHttpExecutor$get_responseAvailable,
-
-    get_aborted: Sys$Net$XMLHttpExecutor$get_aborted,
-
-    executeRequest: Sys$Net$XMLHttpExecutor$executeRequest,
-
-    getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader,
-
-    getAllResponseHeaders: Sys$Net$XMLHttpExecutor$getAllResponseHeaders,
-
-    get_responseData: Sys$Net$XMLHttpExecutor$get_responseData,
-
-    get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode,
-
-    get_statusText: Sys$Net$XMLHttpExecutor$get_statusText,
-
-    get_xml: Sys$Net$XMLHttpExecutor$get_xml,
-
-    abort: Sys$Net$XMLHttpExecutor$abort
-}
-Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor);
-Sys.Net._WebRequestManager = function Sys$Net$_WebRequestManager() {
-    this._this = this;
-    this._defaultTimeout = 0;
-    this._defaultExecutorType = "Sys.Net.XMLHttpExecutor";
-}
-
-
-    function Sys$Net$_WebRequestManager$add_invokingRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("invokingRequest", handler);
-    }
-    function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("invokingRequest", handler);
-    }
-
-    function Sys$Net$_WebRequestManager$add_completedRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("completedRequest", handler);
-    }
-    function Sys$Net$_WebRequestManager$remove_completedRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("completedRequest", handler);
-    }
-
-    function Sys$Net$_WebRequestManager$_get_eventHandlerList() {
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-
-    function Sys$Net$_WebRequestManager$get_defaultTimeout() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultTimeout;
-    }
-    function Sys$Net$_WebRequestManager$set_defaultTimeout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-
-        if (value < 0) {
-            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
-        }
-
-        this._defaultTimeout = value;
-    }
-
-    function Sys$Net$_WebRequestManager$get_defaultExecutorType() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultExecutorType;
-    }
-    function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-
-        this._defaultExecutorType = value;
-    }
-
-    function Sys$Net$_WebRequestManager$executeRequest(webRequest) {
-        /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "webRequest", type: Sys.Net.WebRequest}
-        ]);
-        if (e) throw e;
-
-        var executor = webRequest.get_executor();
-                if (!executor) {
-            
-            var failed = false;
-            try {
-                var executorType = eval(this._defaultExecutorType);
-                executor = new executorType();
-            } catch (e) {
-                failed = true;
-            }
-
-            if (failed  || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) {
-                throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType));
-            }
-
-            webRequest.set_executor(executor);
-        }
-
-                if (executor.get_aborted()) {
-            return;
-        }
-
-        var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest);
-        var handler = this._get_eventHandlerList().getHandler("invokingRequest");
-        if (handler) {
-            handler(this, evArgs);
-        }
-
-        if (!evArgs.get_cancel()) {
-            executor.executeRequest();
-        }
-    }
-Sys.Net._WebRequestManager.prototype = {
-    add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest,
-    remove_invokingRequest: Sys$Net$_WebRequestManager$remove_invokingRequest,
-
-    add_completedRequest: Sys$Net$_WebRequestManager$add_completedRequest,
-    remove_completedRequest: Sys$Net$_WebRequestManager$remove_completedRequest,
-
-    _get_eventHandlerList: Sys$Net$_WebRequestManager$_get_eventHandlerList,
-
-    get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout,
-    set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout,
-
-    get_defaultExecutorType: Sys$Net$_WebRequestManager$get_defaultExecutorType,
-    set_defaultExecutorType: Sys$Net$_WebRequestManager$set_defaultExecutorType,
-
-    executeRequest: Sys$Net$_WebRequestManager$executeRequest
-}
-
-Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager');
-
-Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager();
-Sys.Net.NetworkRequestEventArgs = function Sys$Net$NetworkRequestEventArgs(webRequest) {
-    /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "webRequest", type: Sys.Net.WebRequest}
-    ]);
-    if (e) throw e;
-
-    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
-    this._webRequest = webRequest;
-}
-
-
-    function Sys$Net$NetworkRequestEventArgs$get_webRequest() {
-        /// <value type="Sys.Net.WebRequest"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._webRequest;
-    }
-Sys.Net.NetworkRequestEventArgs.prototype = {
-    get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest
-}
-
-Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs);
-Sys.Net.WebRequest = function Sys$Net$WebRequest() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    this._url = "";
-    this._headers = { };
-    this._body = null;
-    this._userContext = null;
-    this._httpVerb = null;
-    this._executor = null;
-    this._invokeCalled = false;
-    this._timeout = 0;
-}
-
-
-    function Sys$Net$WebRequest$add_completed(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("completed", handler);
-    }
-    function Sys$Net$WebRequest$remove_completed(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("completed", handler);
-    }
-
-    function Sys$Net$WebRequest$completed(eventArgs) {
-        /// <param name="eventArgs" type="Sys.EventArgs"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "eventArgs", type: Sys.EventArgs}
-        ]);
-        if (e) throw e;
-
-        var handler = Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");
-        if (handler) {
-            handler(this._executor, eventArgs);
-        }
-
-        handler = this._get_eventHandlerList().getHandler("completed");
-        if (handler) {
-            handler(this._executor, eventArgs);
-        }
-    }
-
-    function Sys$Net$WebRequest$_get_eventHandlerList() {
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-
-    function Sys$Net$WebRequest$get_url() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._url;
-    }
-    function Sys$Net$WebRequest$set_url(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-
-        this._url = value;
-    }
-
-    function Sys$Net$WebRequest$get_headers() {
-        /// <value></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._headers;
-    }
-
-    function Sys$Net$WebRequest$get_httpVerb() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-                if (this._httpVerb === null) {
-            if (this._body === null) {
-                return "GET";
-            }
-            return "POST";
-        }
-        return this._httpVerb;
-    }
-    function Sys$Net$WebRequest$set_httpVerb(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-
-        if (value.length === 0) {
-            throw Error.argument('value', Sys.Res.invalidHttpVerb);
-        }
-
-        this._httpVerb = value;
-    }
-
-    function Sys$Net$WebRequest$get_body() {
-        /// <value mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._body;
-    }
-    function Sys$Net$WebRequest$set_body(value) {
-        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
-        if (e) throw e;
-
-        this._body = value;
-    }
-
-    function Sys$Net$WebRequest$get_userContext() {
-        /// <value mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._userContext;
-    }
-    function Sys$Net$WebRequest$set_userContext(value) {
-        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
-        if (e) throw e;
-
-        this._userContext = value;
-    }
-
-    function Sys$Net$WebRequest$get_executor() {
-        /// <value type="Sys.Net.WebRequestExecutor"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._executor;
-    }
-    function Sys$Net$WebRequest$set_executor(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]);
-        if (e) throw e;
-
-        if (this._executor !== null && this._executor.get_started()) {
-            throw Error.invalidOperation(Sys.Res.setExecutorAfterActive);
-        }
-
-        this._executor = value;
-        this._executor._set_webRequest(this);
-    }
-
-    function Sys$Net$WebRequest$get_timeout() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._timeout === 0) {
-            return Sys.Net.WebRequestManager.get_defaultTimeout();
-        }
-        return this._timeout;
-    }
-    function Sys$Net$WebRequest$set_timeout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-
-        if (value < 0) {
-            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
-        }
-
-        this._timeout = value;
-    }
-
-    function Sys$Net$WebRequest$getResolvedUrl() {
-        /// <returns type="String"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return Sys.Net.WebRequest._resolveUrl(this._url);
-    }
-
-    function Sys$Net$WebRequest$invoke() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._invokeCalled) {
-            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
-        }
-
-        Sys.Net.WebRequestManager.executeRequest(this);
-        this._invokeCalled = true;
-    }
-Sys.Net.WebRequest.prototype = {
-    add_completed: Sys$Net$WebRequest$add_completed,
-    remove_completed: Sys$Net$WebRequest$remove_completed,
-
-    completed: Sys$Net$WebRequest$completed,
-
-    _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList,
-
-    get_url: Sys$Net$WebRequest$get_url,
-    set_url: Sys$Net$WebRequest$set_url,
-
-    get_headers: Sys$Net$WebRequest$get_headers,
-
-    get_httpVerb: Sys$Net$WebRequest$get_httpVerb,
-    set_httpVerb: Sys$Net$WebRequest$set_httpVerb,
-
-    get_body: Sys$Net$WebRequest$get_body,
-    set_body: Sys$Net$WebRequest$set_body,
-
-    get_userContext: Sys$Net$WebRequest$get_userContext,
-    set_userContext: Sys$Net$WebRequest$set_userContext,
-
-    get_executor: Sys$Net$WebRequest$get_executor,
-    set_executor: Sys$Net$WebRequest$set_executor,
-
-    get_timeout: Sys$Net$WebRequest$get_timeout,
-    set_timeout: Sys$Net$WebRequest$set_timeout,
-
-    getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl,
-
-    invoke: Sys$Net$WebRequest$invoke
-}
-
-Sys.Net.WebRequest._resolveUrl = function Sys$Net$WebRequest$_resolveUrl(url, baseUrl) {
-        if (url && url.indexOf('://') !== -1) {
-        return url;
-    }
-
-        if (!baseUrl || baseUrl.length === 0) {
-        var baseElement = document.getElementsByTagName('base')[0];
-        if (baseElement && baseElement.href && baseElement.href.length > 0) {
-            baseUrl = baseElement.href;
-        }
-        else {
-            baseUrl = document.URL;
-        }
-    }
-
-        var qsStart = baseUrl.indexOf('?');
-    if (qsStart !== -1) {
-        baseUrl = baseUrl.substr(0, qsStart);
-    }
-    baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);
-
-        if (!url || url.length === 0) {
-        return baseUrl;
-    }
-
-        if (url.charAt(0) === '/') {
-        var slashslash = baseUrl.indexOf('://');
-        if (slashslash === -1) {
-            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
-        }
-
-        var nextSlash = baseUrl.indexOf('/', slashslash + 3);
-        if (nextSlash === -1) {
-            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
-        }
-
-        return baseUrl.substr(0, nextSlash) + url;
-    }
-            else {
-        var lastSlash = baseUrl.lastIndexOf('/');
-        if (lastSlash === -1) {
-            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
-        }
-
-        return baseUrl.substr(0, lastSlash+1) + url;
-    }
-}
-
-Sys.Net.WebRequest._createQueryString = function Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod) {
-        if (!encodeMethod)
-        encodeMethod = encodeURIComponent;
-
-    var sb = new Sys.StringBuilder();
-
-    var i = 0;
-    for (var arg in queryString) {
-        var obj = queryString[arg];
-        if (typeof(obj) === "function") continue;
-        var val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
-        if (i !== 0) {
-            sb.append('&');
-        }
-
-        sb.append(arg);
-        sb.append('=');
-        sb.append(encodeMethod(val));
-
-        i++;
-    }
-
-    return sb.toString();
-}
-
-Sys.Net.WebRequest._createUrl = function Sys$Net$WebRequest$_createUrl(url, queryString) {
-    if (!queryString) {
-        return url;
-    }
-
-    var qs = Sys.Net.WebRequest._createQueryString(queryString);
-    if (qs.length > 0) {
-        var sep = '?';
-        if (url && url.indexOf('?') !== -1)
-            sep = '&';
-        return url + sep + qs;
-    } else {
-        return url;
-    }
-}
-
-Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');
-Sys.Net.WebServiceProxy = function Sys$Net$WebServiceProxy() {
-}
-
-
-    function Sys$Net$WebServiceProxy$set_timeout(value) {
-        this._timeout = value;
-    }
-    function Sys$Net$WebServiceProxy$get_timeout() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timeout;
-    }
-    function Sys$Net$WebServiceProxy$set_defaultUserContext(value) {
-        this._userContext = value;
-    }
-    function Sys$Net$WebServiceProxy$get_defaultUserContext() {
-        /// <value></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._userContext;
-    }
-    function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) {
-        this._succeeded = value;
-    }
-    function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() {
-        /// <value type="Function"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._succeeded;
-    }
-    function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) {
-        this._failed = value;
-    }
-    function Sys$Net$WebServiceProxy$get_defaultFailedCallback() {
-        /// <value type="Function"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._failed;
-    }
-    function Sys$Net$WebServiceProxy$set_path(value) {
-        this._path = value;
-    }
-    function Sys$Net$WebServiceProxy$get_path() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._path;
-    }
-
-    function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) {
-        /// <param name="servicePath" type="String"></param>
-        /// <param name="methodName" type="String"></param>
-        /// <param name="useGet" type="Boolean"></param>
-        /// <param name="params"></param>
-        /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
-        /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
-        /// <param name="userContext" mayBeNull="true" optional="true"></param>
-        /// <returns type="Sys.Net.WebRequest"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "servicePath", type: String},
-            {name: "methodName", type: String},
-            {name: "useGet", type: Boolean},
-            {name: "params"},
-            {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
-            {name: "onFailure", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-
-                if (onSuccess === null || typeof onSuccess === 'undefined') onSuccess = this.get_defaultSucceededCallback();
-        if (onFailure === null || typeof onFailure === 'undefined') onFailure = this.get_defaultFailedCallback();
-        if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext();
-        
-        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout());
-    }
-Sys.Net.WebServiceProxy.prototype = {
-    set_timeout: Sys$Net$WebServiceProxy$set_timeout,
-    get_timeout: Sys$Net$WebServiceProxy$get_timeout,
-    set_defaultUserContext: Sys$Net$WebServiceProxy$set_defaultUserContext,
-    get_defaultUserContext: Sys$Net$WebServiceProxy$get_defaultUserContext,
-    set_defaultSucceededCallback: Sys$Net$WebServiceProxy$set_defaultSucceededCallback,
-    get_defaultSucceededCallback: Sys$Net$WebServiceProxy$get_defaultSucceededCallback,
-    set_defaultFailedCallback: Sys$Net$WebServiceProxy$set_defaultFailedCallback,
-    get_defaultFailedCallback: Sys$Net$WebServiceProxy$get_defaultFailedCallback,
-    set_path: Sys$Net$WebServiceProxy$set_path,
-    get_path: Sys$Net$WebServiceProxy$get_path,
-
-    _invoke: Sys$Net$WebServiceProxy$_invoke
-}
-Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy');
-
-Sys.Net.WebServiceProxy.invoke = function Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout) {
-    /// <param name="servicePath" type="String"></param>
-    /// <param name="methodName" type="String"></param>
-    /// <param name="useGet" type="Boolean" optional="true"></param>
-    /// <param name="params" mayBeNull="true" optional="true"></param>
-    /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
-    /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
-    /// <param name="userContext" mayBeNull="true" optional="true"></param>
-    /// <param name="timeout" type="Number" optional="true"></param>
-    /// <returns type="Sys.Net.WebRequest"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "servicePath", type: String},
-        {name: "methodName", type: String},
-        {name: "useGet", type: Boolean, optional: true},
-        {name: "params", mayBeNull: true, optional: true},
-        {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
-        {name: "onFailure", type: Function, mayBeNull: true, optional: true},
-        {name: "userContext", mayBeNull: true, optional: true},
-        {name: "timeout", type: Number, optional: true}
-    ]);
-    if (e) throw e;
-
-
-        var request = new Sys.Net.WebRequest();
-
-if(window.TARGET_J2EE)
-    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8; action='+methodName;
-else
-    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8';
-    if (!params) params = {};
-    var urlParams = params;
-        if (!useGet || !urlParams) urlParams = {};
-if(window.TARGET_J2EE)
-    request.set_url(Sys.Net.WebRequest._createUrl(servicePath, urlParams));
-else
-    request.set_url(Sys.Net.WebRequest._createUrl(servicePath+"/"+methodName, urlParams));
-
-    var body = null;
-        if (!useGet) {
-        body = Sys.Serialization.JavaScriptSerializer.serialize(params);
-
-                if (body === "{}") body = "";
-    }
-
-        request.set_body(body);
-    request.add_completed(onComplete);
-    if (timeout && timeout > 0) request.set_timeout(timeout);
-    request.invoke();
-
-    function onComplete(response, eventArgs) {
-        if (response.get_responseAvailable()) {
-            var statusCode = response.get_statusCode();
-            var result = null;
-
-            try {
-                var contentType = response.getResponseHeader("Content-Type");
-                if (contentType.startsWith("application/json")) {
-                    result = response.get_object();
-                }
-                else if (contentType.startsWith("text/xml")) {
-                    result = response.get_xml();
-                }
-                                else {
-                    result = response.get_responseData();
-                }
-            } catch (ex) {
-            }
-
-            var error = response.getResponseHeader("jsonerror");
-            var errorObj = (error === "true");
-            if (errorObj) {
-                result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType);
-            }
-            if (((statusCode < 200) || (statusCode >= 300)) || errorObj) {
-                if (onFailure) {
-                    if (!result || !errorObj) {
-                        result = new Sys.Net.WebServiceError(false , String.format(Sys.Res.webServiceFailedNoMsg, methodName), "", "");
-                    }
-                    result._statusCode = statusCode;
-                    onFailure(result, userContext, methodName);
-                }
-                else {
-                                        var error;
-                    if (result && errorObj) {
-                                                error = result.get_exceptionType() + "-- " + result.get_message();
-                    }
-                    else {
-                                                                        error = response.get_responseData();
-                    }
-                    alert(String.format(Sys.Res.webServiceFailed, methodName, error));
-                }
-            }
-            else if (onSuccess) {
-                onSuccess(result, userContext, methodName);
-            }
-        }
-        else {
-            var msg;
-            if (response.get_timedOut()) {
-                msg = String.format(Sys.Res.webServiceTimedOut, methodName);
-            }
-            else {
-                msg = String.format(Sys.Res.webServiceFailedNoMsg, methodName)
-            }
-            if (onFailure) {
-                onFailure(new Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), userContext, methodName);
-            }
-            else {
-                                alert(msg);
-            }
-        }
-    }
-
-    return request;
-}
-
-Sys.Net.WebServiceProxy._generateTypedConstructor = function Sys$Net$WebServiceProxy$_generateTypedConstructor(type) {
-    return function(properties) {
-                if (properties) {
-            for (var name in properties) {
-                this[name] = properties[name];
-            }
-        }
-        this.__type = type;
-    }
-}
-Sys.Net.WebServiceError = function Sys$Net$WebServiceError(timedOut, message, stackTrace, exceptionType) {
-    /// <param name="timedOut" type="Boolean"></param>
-    /// <param name="message" type="String" mayBeNull="true"></param>
-    /// <param name="stackTrace" type="String" mayBeNull="true"></param>
-    /// <param name="exceptionType" type="String" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "timedOut", type: Boolean},
-        {name: "message", type: String, mayBeNull: true},
-        {name: "stackTrace", type: String, mayBeNull: true},
-        {name: "exceptionType", type: String, mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    this._timedOut = timedOut;
-    this._message = message;
-    this._stackTrace = stackTrace;
-    this._exceptionType = exceptionType;
-    this._statusCode = -1;
-}
-
-
-    function Sys$Net$WebServiceError$get_timedOut() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timedOut;
-    }
-
-    function Sys$Net$WebServiceError$get_statusCode() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._statusCode;
-    }
-
-    function Sys$Net$WebServiceError$get_message() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._message;
-    }
-
-    function Sys$Net$WebServiceError$get_stackTrace() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._stackTrace;
-    }
-
-    function Sys$Net$WebServiceError$get_exceptionType() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._exceptionType;
-    }
-Sys.Net.WebServiceError.prototype = {
-    get_timedOut: Sys$Net$WebServiceError$get_timedOut,
-
-    get_statusCode: Sys$Net$WebServiceError$get_statusCode,
-
-    get_message: Sys$Net$WebServiceError$get_message,
-
-    get_stackTrace: Sys$Net$WebServiceError$get_stackTrace,
-
-    get_exceptionType: Sys$Net$WebServiceError$get_exceptionType
-}
-Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError');
-
-Type.registerNamespace('Sys.Services');
-
-Sys.Services._ProfileService = function Sys$Services$_ProfileService() {
-    Sys.Services._ProfileService.initializeBase(this);
-    this.properties = {};
-}
-Sys.Services._ProfileService.DefaultWebServicePath = '';
-
-
-
-
-
-
-
-
-    function Sys$Services$_ProfileService$get_defaultFailedCallback() {
-        /// <value type="Function" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultFailedCallback;
-    }
-    function Sys$Services$_ProfileService$set_defaultFailedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-
-        this._defaultFailedCallback = value;
-    }
-
-    function Sys$Services$_ProfileService$get_defaultLoadCompletedCallback() {
-        /// <value type="Function" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultLoadCompletedCallback;
-    }
-    function Sys$Services$_ProfileService$set_defaultLoadCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-
-        this._defaultLoadCompletedCallback = value;
-    }
-
-    function Sys$Services$_ProfileService$get_defaultSaveCompletedCallback() {
-        /// <value type="Function" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultSaveCompletedCallback;
-    }
-    function Sys$Services$_ProfileService$set_defaultSaveCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-
-        this._defaultSaveCompletedCallback = value;
-    }
-
-
-    function Sys$Services$_ProfileService$get_path() {
-        /// <value type="String" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._path;
-    }
-    function Sys$Services$_ProfileService$set_path(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
-        if (e) throw e;
-
-        if((!value) || (!value.length)) {
-            value = '';
-        }
-        this._path = value;
-    }
-
-    function Sys$Services$_ProfileService$get_timeout() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timeout;
-    }
-    function Sys$Services$_ProfileService$set_timeout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-
-        this._timeout = value;
-    }
-
-    function Sys$Services$_ProfileService$load(propertyNames, loadCompletedCallback, failedCallback, userContext) {
-        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
-        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
-            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-        var parameters = {};
-        var methodName;
-        if(!propertyNames) {
-            methodName = "GetAllPropertiesForCurrentUser";
-        }
-        else {
-            methodName = "GetPropertiesForCurrentUser";
-            parameters = { properties: this._clonePropertyNames(propertyNames) };
-        }
-                this._invoke(this._get_path(),
-                                        methodName,
-                                        false,
-                                        parameters,
-                                        Function.createDelegate(this, this._onLoadComplete),
-                                        Function.createDelegate(this, this._onLoadFailed),                                         [loadCompletedCallback, failedCallback, userContext]);
-    }
-
-    function Sys$Services$_ProfileService$save(propertyNames, saveCompletedCallback, failedCallback, userContext) {
-        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
-        /// <param name="saveCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
-            {name: "saveCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-        var flattenedProperties = this._flattenProperties(propertyNames, this.properties);
-                this._invoke(this._get_path(),
-                                        "SetPropertiesForCurrentUser",
-                                        false,
-                                        { values: flattenedProperties },
-                                        Function.createDelegate(this, this._onSaveComplete),
-                                        Function.createDelegate(this, this._onSaveFailed),
-                                        [saveCompletedCallback, failedCallback, userContext]);
-    }
-
-
-    function Sys$Services$_ProfileService$_clonePropertyNames(arr) {
-        var nodups = [];
-        var seen = {};
-        for(var i=0; i < arr.length; i++) {
-            var prop = arr[i];
-            if(!seen[prop]) { Array.add(nodups, prop); seen[prop]=true; };
-        }
-        return nodups;
-    }
-
-
-
-
-
-    function Sys$Services$_ProfileService$_flattenProperties(propertyNames, properties, groupName) {
-        var flattenedProperties = {};
-        var val;
-        var key;
-        if(propertyNames && propertyNames.length === 0) {
-            return flattenedProperties;
-        }
-
-        for (var property in properties) {
-            val = properties[property];
-            key = groupName ? groupName + "." + property : property;
-                        if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
-                var groupProperties = this._flattenProperties(propertyNames, val, key);
-                                                                                                                for(var subKey in groupProperties) {
-                    var subVal = groupProperties[subKey];
-                    flattenedProperties[subKey] = subVal;
-                }
-            }
-            else {
-                                if(!propertyNames || Array.indexOf(propertyNames, key) !== -1) {
-                    flattenedProperties[key] = val;
-                }
-            }
-        }
-        return flattenedProperties;
-    }
-
-    function Sys$Services$_ProfileService$_get_path() {
-        var path = this.get_path();
-        if(!path.length) {
-            path = Sys.Services._ProfileService.DefaultWebServicePath;
-        }
-        if(!path || !path.length) {
-            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
-        }
-        return path;
-    }
-
-    function Sys$Services$_ProfileService$_onLoadComplete(result, context, methodName) {
-        if(typeof(result) !== "object") {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Object"));
-        }
-
-        var unflattened = this._unflattenProperties(result);
-        for(var name in unflattened) {
-            this.properties[name] = unflattened[name];
-        }
-        
-        var userCallback = context[0];
-        var callback = userCallback ? userCallback : this._defaultLoadCompletedCallback;
-        if(callback) {
-            callback(result.length, context[2], "Sys.Services.ProfileService.load");
-        }
-    }
-
-    function Sys$Services$_ProfileService$_onLoadFailed(err, context, methodName) {
-        var userCallback = context[1];
-        var callback = userCallback ? userCallback : this._defaultFailedCallback;
-        if(callback) {
-            callback(err, context[2], "Sys.Services.ProfileService.load");
-        }
-    }
-
-    function Sys$Services$_ProfileService$_onSaveComplete(result, context, methodName) {
-        if(typeof(result) !== "number") {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Number"));
-        }
-        
-        var userCallback = context[0];
-        var userContext = context[2];
-        var callback = userCallback ? userCallback : this._defaultSaveCompletedCallback;
-        if(callback) {
-            callback(result, userContext, "Sys.Services.ProfileService.save");
-        }
-    }
-
-    function Sys$Services$_ProfileService$_onSaveFailed(err, context, methodName) {
-        var userCallback = context[1];
-        var userContext = context[2];
-        var callback = userCallback ? userCallback : this._defaultFailedCallback;
-        if(callback) {
-            callback(err, userContext, "Sys.Services.ProfileService.save");
-        }
-    }
-
-    function Sys$Services$_ProfileService$_unflattenProperties(properties) {
-        var unflattenedProperties = {};
-        var dotIndex;
-        var val;
-        var count = 0;
-        for(var key in properties) {
-            count++;
-            val = properties[key];
-
-            dotIndex = key.indexOf('.');
-            if(dotIndex !== -1) {
-                var groupName = key.substr(0, dotIndex);
-                key = key.substr(dotIndex+1);
-                var group = unflattenedProperties[groupName];
-                if((!group) || (!Sys.Services.ProfileGroup.isInstanceOfType(group))) {
-                    group = new Sys.Services.ProfileGroup();
-                    unflattenedProperties[groupName] = group;
-                }
-                group[key] = val;
-            }
-            else {
-                unflattenedProperties[key] = val;
-            }
-        }
-        properties.length = count;
-        return unflattenedProperties;
-    }
-Sys.Services._ProfileService.prototype = {
-    _defaultFailedCallback: null,
-    _defaultLoadCompletedCallback: null,
-    _defaultSaveCompletedCallback: null,
-    _path: '',
-    _timeout: 0,
-
-    get_defaultFailedCallback: Sys$Services$_ProfileService$get_defaultFailedCallback,
-    set_defaultFailedCallback: Sys$Services$_ProfileService$set_defaultFailedCallback,
-
-    get_defaultLoadCompletedCallback: Sys$Services$_ProfileService$get_defaultLoadCompletedCallback,
-    set_defaultLoadCompletedCallback: Sys$Services$_ProfileService$set_defaultLoadCompletedCallback,
-
-    get_defaultSaveCompletedCallback: Sys$Services$_ProfileService$get_defaultSaveCompletedCallback,
-    set_defaultSaveCompletedCallback: Sys$Services$_ProfileService$set_defaultSaveCompletedCallback,
-    
-    
-    get_path: Sys$Services$_ProfileService$get_path,
-    set_path: Sys$Services$_ProfileService$set_path,
-        
-    get_timeout: Sys$Services$_ProfileService$get_timeout,
-    set_timeout: Sys$Services$_ProfileService$set_timeout,
-        
-    load: Sys$Services$_ProfileService$load,
-
-    save: Sys$Services$_ProfileService$save,
-    
-        _clonePropertyNames: Sys$Services$_ProfileService$_clonePropertyNames,    
-
-                    _flattenProperties: Sys$Services$_ProfileService$_flattenProperties,
-    
-    _get_path: Sys$Services$_ProfileService$_get_path,    
-
-    _onLoadComplete: Sys$Services$_ProfileService$_onLoadComplete,
-    
-    _onLoadFailed: Sys$Services$_ProfileService$_onLoadFailed,
-    
-    _onSaveComplete: Sys$Services$_ProfileService$_onSaveComplete,
-    
-    _onSaveFailed: Sys$Services$_ProfileService$_onSaveFailed,
-    
-    _unflattenProperties: Sys$Services$_ProfileService$_unflattenProperties
-}
-Sys.Services._ProfileService.registerClass('Sys.Services._ProfileService', Sys.Net.WebServiceProxy);
-Sys.Services.ProfileService = new Sys.Services._ProfileService();
-
-Sys.Services.ProfileGroup = function Sys$Services$ProfileGroup(properties) {
-    /// <param name="properties" optional="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "properties", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    if(properties) {
-        for(var property in properties) {
-            this[property] = properties[property];
-        }
-    }
-}
-Sys.Services.ProfileGroup.registerClass('Sys.Services.ProfileGroup');
-
-
-
-
-
-
-
-
-Sys.Services._AuthenticationService = function Sys$Services$_AuthenticationService() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    Sys.Services._AuthenticationService.initializeBase(this);
-}
-Sys.Services._AuthenticationService.DefaultWebServicePath = '';
-
-
-
-
-
-
-
-
-    function Sys$Services$_AuthenticationService$get_defaultFailedCallback() {
-        /// <value type="Function" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultFailedCallback;
-    }
-    function Sys$Services$_AuthenticationService$set_defaultFailedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-
-        this._defaultFailedCallback = value;
-    }
-
-    function Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback() {
-        /// <value type="Function" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultLoginCompletedCallback;
-    }
-    function Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-
-        this._defaultLoginCompletedCallback = value;
-    }
-
-    function Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback() {
-        /// <value type="Function" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultLogoutCompletedCallback;
-    }
-    function Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-
-        this._defaultLogoutCompletedCallback = value;
-    }
-
-    function Sys$Services$_AuthenticationService$get_isLoggedIn() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._authenticated;
-    }
-
-    function Sys$Services$_AuthenticationService$get_path() {
-        /// <value type="String" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._path;
-    }
-    function Sys$Services$_AuthenticationService$set_path(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
-        if (e) throw e;
-
-        if((!value) || (!value.length)) {
-            value = '';
-        }
-        this._path = value;
-    }
-
-    function Sys$Services$_AuthenticationService$get_timeout() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timeout;
-    }
-    function Sys$Services$_AuthenticationService$set_timeout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-
-        this._timeout = value;
-    }
-
-    function Sys$Services$_AuthenticationService$login(username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext) {
-        /// <param name="username" type="String" mayBeNull="false"></param>
-        /// <param name="password" type="String" mayBeNull="true"></param>
-        /// <param name="isPersistent" type="Boolean" optional="true" mayBeNull="true"></param>
-        /// <param name="customInfo" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="loginCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "username", type: String},
-            {name: "password", type: String, mayBeNull: true},
-            {name: "isPersistent", type: Boolean, mayBeNull: true, optional: true},
-            {name: "customInfo", type: String, mayBeNull: true, optional: true},
-            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
-            {name: "loginCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-                this._invoke(this._get_path(), "Login", false,
-                                        { userName: username, password: password, createPersistentCookie: isPersistent },
-                                        Function.createDelegate(this, this._onLoginComplete),
-                                        Function.createDelegate(this, this._onLoginFailed),
-                                        [username, password, isPersistent, redirectUrl, loginCompletedCallback, failedCallback, userContext]);
-    }
-
-    function Sys$Services$_AuthenticationService$logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext) {
-        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="logoutCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
-            {name: "logoutCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-
-                this._invoke(this._get_path(), "Logout", false, {}, 
-                                        Function.createDelegate(this, this._onLogoutComplete),
-                                        Function.createDelegate(this, this._onLogoutFailed),
-                                        [redirectUrl, logoutCompletedCallback, failedCallback, userContext]);
-    }
-
-    function Sys$Services$_AuthenticationService$_get_path() {
-        var path = this.get_path();
-        if(!path.length) {
-            path = Sys.Services._AuthenticationService.DefaultWebServicePath;
-        }
-        if(!path || !path.length) {
-            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
-        }
-        return path;
-    }
-
-    function Sys$Services$_AuthenticationService$_onLoginComplete(result, context, methodName) {
-        if(typeof(result) !== "boolean") {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Boolean"));
-        }
-        
-        var redirectUrl = context[3];
-        var userCallback = context[4];
-        var userContext = context[6];
-        var callback = userCallback ? userCallback : this._defaultLoginCompletedCallback;
-        
-        if(result) {
-            this._authenticated = true;
-
-            if(callback) {
-                callback(true, userContext, "Sys.Services.AuthenticationService.login");
-            }
-            
-            if(typeof(redirectUrl) !== "undefined" && redirectUrl !== null) {
-                                window.location.href = redirectUrl;
-            }
-        }
-        else if (callback) {
-            callback(false, userContext, "Sys.Services.AuthenticationService.login");
-        }
-    }
-
-    function Sys$Services$_AuthenticationService$_onLoginFailed(err, context, methodName) {
-        var userCallback = context[5];
-        var callback = userCallback ? userCallback : this._defaultFailedCallback;
-        if(callback) {
-            callback(err, context[6], "Sys.Services.AuthenticationService.login");
-        }
-    }
-
-    function Sys$Services$_AuthenticationService$_onLogoutComplete(result, context, methodName) {
-        if(result !== null) {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "null"));
-        }
-        
-        var redirectUrl = context[0];
-        var userCallback = context[1];
-        var userContext = context[3];
-        var callback = userCallback ? userCallback : this._defaultLogoutCompletedCallback;
-
-        this._authenticated = false;
-        
-        if (callback) {
-            callback(null, userContext, "Sys.Services.AuthenticationService.logout");
-        }
-        
-                if(!redirectUrl) {
-            window.location.reload();
-        }
-        else {
-            window.location.href = redirectUrl;
-        }
-    }
-
-    function Sys$Services$_AuthenticationService$_onLogoutFailed(err, context, methodName) {
-        var userCallback = context[2];
-        var callback = userCallback ? userCallback : this._defaultFailedCallback;
-        if(callback) {
-            callback(err, context[3], "Sys.Services.AuthenticationService.logout");
-        }
-    }
-
-    function Sys$Services$_AuthenticationService$_setAuthenticated(authenticated) {
-        this._authenticated = authenticated;
-    }
-Sys.Services._AuthenticationService.prototype = {
-    _defaultFailedCallback: null,
-    _defaultLoginCompletedCallback: null,
-    _defaultLogoutCompletedCallback: null,
-    _path: '',
-    _timeout: 0,
-    _authenticated: false,
-    
-    get_defaultFailedCallback: Sys$Services$_AuthenticationService$get_defaultFailedCallback,
-    set_defaultFailedCallback: Sys$Services$_AuthenticationService$set_defaultFailedCallback,
-
-    get_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback,
-    set_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback,
-
-    get_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback,
-    set_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback,
-
-    get_isLoggedIn: Sys$Services$_AuthenticationService$get_isLoggedIn,
-
-    get_path: Sys$Services$_AuthenticationService$get_path,
-    set_path: Sys$Services$_AuthenticationService$set_path,
-    
-    get_timeout: Sys$Services$_AuthenticationService$get_timeout,
-    set_timeout: Sys$Services$_AuthenticationService$set_timeout,    
-    
-    login: Sys$Services$_AuthenticationService$login,
-    
-    logout: Sys$Services$_AuthenticationService$logout,
-    
-    _get_path: Sys$Services$_AuthenticationService$_get_path,
-    
-    _onLoginComplete: Sys$Services$_AuthenticationService$_onLoginComplete,
-    
-    _onLoginFailed: Sys$Services$_AuthenticationService$_onLoginFailed,
-    
-    _onLogoutComplete: Sys$Services$_AuthenticationService$_onLogoutComplete,
-    
-    _onLogoutFailed: Sys$Services$_AuthenticationService$_onLogoutFailed,
-    
-    _setAuthenticated: Sys$Services$_AuthenticationService$_setAuthenticated    
-}
-
-Sys.Services._AuthenticationService.registerClass('Sys.Services._AuthenticationService', Sys.Net.WebServiceProxy);
-Sys.Services.AuthenticationService = new Sys.Services._AuthenticationService();
-
-Type.registerNamespace('Sys.Serialization');
-
-
-Sys.Serialization.JavaScriptSerializer = function Sys$Serialization$JavaScriptSerializer() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.JavaScriptSerializer');
-
-Sys.Serialization.JavaScriptSerializer._stringRegEx = new RegExp('["\b\f\n\r\t\\\\\x00-\x1F]', 'i');
-
-Sys.Serialization.JavaScriptSerializer._serializeWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, stringBuilder, sort) {
-    var i;
-    switch (typeof object) {
-    case 'object':
-        if (object) {
-                        if (Array.isInstanceOfType(object)) {
-                stringBuilder.append('[');
-                for (i = 0; i < object.length; ++i) {
-                    if (i > 0) {
-                        stringBuilder.append(',');
-                    }
-                    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], stringBuilder);
-                }
-                stringBuilder.append(']');
-            }
-            else {
-                                                                if (Date.isInstanceOfType(object)) {
-                    stringBuilder.append('"\\/Date(');
-                    stringBuilder.append(object.getTime());
-                    stringBuilder.append(')\\/"');
-                    break;
-                }
-
-                var properties = [];
-                var propertyCount = 0;
-                for (var name in object) {
-                                        if (name.startsWith('$')) {
-                        continue;
-                    }
-                    properties[propertyCount++] = name;
-                }
-                if (sort) properties.sort();
-
-                stringBuilder.append('{');
-                var needComma = false;
-                for (i=0; i<propertyCount; i++) {
-                    var value = object[properties[i]];
-                    if (typeof value !== 'undefined' && typeof value !== 'function') {
-                        if (needComma) {
-                            stringBuilder.append(',');
-                        }
-                        else {
-                            needComma = true;
-                        }
-
-                                                Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(properties[i], stringBuilder, sort);
-                        stringBuilder.append(':');
-                        Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(value, stringBuilder, sort);
-                    }
-                }
-                stringBuilder.append('}');
-            }
-        }
-        else {
-            stringBuilder.append('null');
-        }
-        break;
-
-    case 'number':
-        if (isFinite(object)) {
-            stringBuilder.append(String(object));
-        }
-        else {
-            throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
-        }
-        break;
-
-    case 'string':
-        stringBuilder.append('"');
-
-                if (Sys.Browser.agent === Sys.Browser.Safari || Sys.Serialization.JavaScriptSerializer._stringRegEx.test(object)) {
-            var length = object.length;
-            for (i = 0; i < length; ++i) {
-                var curChar = object.charAt(i);
-                                if (curChar >= ' ') {
-                                        if (curChar === '\\' || curChar === '"') {
-                        stringBuilder.append('\\');
-                    }
-                    stringBuilder.append(curChar);
-                }
-                else {
-                    switch (curChar) {
-                        case '\b':
-                            stringBuilder.append('\\b');
-                            break;
-                        case '\f':
-                            stringBuilder.append('\\f');
-                            break;
-                        case '\n':
-                            stringBuilder.append('\\n');
-                            break;
-                        case '\r':
-                            stringBuilder.append('\\r');
-                            break;
-                        case '\t':
-                            stringBuilder.append('\\t');
-                            break;
-                        default:
-                                                        stringBuilder.append('\\u00');
-                            if (curChar.charCodeAt() < 16) stringBuilder.append('0');
-                            stringBuilder.append(curChar.charCodeAt().toString(16));
-                    }
-                }
-            }
-        } else {
-            stringBuilder.append(object);
-        }
-        stringBuilder.append('"');
-        break;
-
-    case 'boolean':
-        stringBuilder.append(object.toString());
-        break;
-
-    default:
-        stringBuilder.append('null');
-        break;
-    }
-}
-
-Sys.Serialization.JavaScriptSerializer.serialize = function Sys$Serialization$JavaScriptSerializer$serialize(object) {
-    /// <param name="object" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "object", mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    var stringBuilder = new Sys.StringBuilder();
-    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false);
-    return stringBuilder.toString();
-}
-
-Sys.Serialization.JavaScriptSerializer.deserialize = function Sys$Serialization$JavaScriptSerializer$deserialize(data) {
-    /// <param name="data" type="String"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "data", type: String}
-    ]);
-    if (e) throw e;
-
-    if (data.length === 0) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString);
-                                                            
-    try {    
-        var exp = data.replace(new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)\\)\\\\/\\"', 'g'), "$1new Date($2)");
-        return eval('(' + exp + ')');
-    }
-    catch (e) {
-         throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson);
-    }
-}
-
-Sys.CultureInfo = function Sys$CultureInfo(name, numberFormat, dateTimeFormat) {
-    /// <param name="name" type="String"></param>
-    /// <param name="numberFormat" type="Object"></param>
-    /// <param name="dateTimeFormat" type="Object"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "name", type: String},
-        {name: "numberFormat", type: Object},
-        {name: "dateTimeFormat", type: Object}
-    ]);
-    if (e) throw e;
-
-    this.name = name;
-    this.numberFormat = numberFormat;
-    this.dateTimeFormat = dateTimeFormat;
-}
-
-    function Sys$CultureInfo$_getDateTimeFormats() {
-        if (! this._dateTimeFormats) {
-            var dtf = this.dateTimeFormat;
-            this._dateTimeFormats =
-              [ dtf.MonthDayPattern,
-                dtf.YearMonthPattern,
-                dtf.ShortDatePattern,
-                dtf.ShortTimePattern,
-                dtf.LongDatePattern,
-                dtf.LongTimePattern,
-                dtf.FullDateTimePattern,
-                dtf.RFC1123Pattern,
-                dtf.SortableDateTimePattern,
-                dtf.UniversalSortableDateTimePattern ];
-        }
-        return this._dateTimeFormats;
-    }
-    function Sys$CultureInfo$_getMonthIndex(value) {
-        if (!this._upperMonths) {
-            this._upperMonths = this._toUpperArray(this.dateTimeFormat.MonthNames);
-        }
-        return Array.indexOf(this._upperMonths, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_getAbbrMonthIndex(value) {
-        if (!this._upperAbbrMonths) {
-            this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
-        }
-        return Array.indexOf(this._upperMonths, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_getDayIndex(value) {
-        if (!this._upperDays) {
-            this._upperDays = this._toUpperArray(this.dateTimeFormat.DayNames);
-        }
-        return Array.indexOf(this._upperDays, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_getAbbrDayIndex(value) {
-        if (!this._upperAbbrDays) {
-            this._upperAbbrDays = this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);
-        }
-        return Array.indexOf(this._upperAbbrDays, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_toUpperArray(arr) {
-        var result = [];
-        for (var i = 0, il = arr.length; i < il; i++) {
-            result[i] = this._toUpper(arr[i]);
-        }
-        return result;
-    }
-    function Sys$CultureInfo$_toUpper(value) {
-                        return value.split("\u00A0").join(' ').toUpperCase();
-    }
-Sys.CultureInfo.prototype = {
-    _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats,
-    _getMonthIndex: Sys$CultureInfo$_getMonthIndex,
-    _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex,
-    _getDayIndex: Sys$CultureInfo$_getDayIndex,
-    _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex,
-    _toUpperArray: Sys$CultureInfo$_toUpperArray,
-    _toUpper: Sys$CultureInfo$_toUpper
-}
-Sys.CultureInfo._parse = function Sys$CultureInfo$_parse(value) {
-    var cultureInfo = Sys.Serialization.JavaScriptSerializer.deserialize(value);
-    return new Sys.CultureInfo(cultureInfo.name, cultureInfo.numberFormat, cultureInfo.dateTimeFormat);
-}
-Sys.CultureInfo.registerClass('Sys.CultureInfo');
-
-Sys.CultureInfo.InvariantCulture = Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');
-
-if (typeof(__cultureInfo) === 'undefined') {
-    var __cultureInfo = '{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';
-}
-Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo);
-delete __cultureInfo;
-
-Sys.UI.Point = function Sys$UI$Point(x, y) {
-    /// <param name="x" type="Number" integer="true"></param>
-    /// <param name="y" type="Number" integer="true"></param>
-    /// <field name="x" type="Number" integer="true"></field>
-    /// <field name="y" type="Number" integer="true"></field>
-    var e = Function._validateParams(arguments, [
-        {name: "x", type: Number, integer: true},
-        {name: "y", type: Number, integer: true}
-    ]);
-    if (e) throw e;
-
-    this.x = x;
-    this.y = y;
-}
-Sys.UI.Point.registerClass('Sys.UI.Point');
-Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) {
-    /// <param name="x" type="Number" integer="true"></param>
-    /// <param name="y" type="Number" integer="true"></param>
-    /// <param name="height" type="Number" integer="true"></param>
-    /// <param name="width" type="Number" integer="true"></param>
-    /// <field name="x" type="Number" integer="true"></field>
-    /// <field name="y" type="Number" integer="true"></field>
-    /// <field name="height" type="Number" integer="true"></field>
-    /// <field name="width" type="Number" integer="true"></field>
-    var e = Function._validateParams(arguments, [
-        {name: "x", type: Number, integer: true},
-        {name: "y", type: Number, integer: true},
-        {name: "height", type: Number, integer: true},
-        {name: "width", type: Number, integer: true}
-    ]);
-    if (e) throw e;
-
-    this.x = x;
-    this.y = y;
-    this.height = height;
-    this.width = width;
-}
-Sys.UI.Bounds.registerClass('Sys.UI.Bounds');
-Sys.UI.DomElement = function Sys$UI$DomElement() {
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-Sys.UI.DomElement.registerClass('Sys.UI.DomElement');
-
-Sys.UI.DomElement.addCssClass = function Sys$UI$DomElement$addCssClass(element, className) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-
-    if (!Sys.UI.DomElement.containsCssClass(element, className)) {
-        if (element.className === '') {
-            element.className = className;
-        }
-        else {
-            element.className += ' ' + className;
-        }
-    }
-}
-
-Sys.UI.DomElement.containsCssClass = function Sys$UI$DomElement$containsCssClass(element, className) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-
-    return Array.contains(element.className.split(' '), className);
-}
-
-Sys.UI.DomElement.getBounds = function Sys$UI$DomElement$getBounds(element) {
-    /// <param name="element" domElement="true"></param>
-    /// <returns type="Sys.UI.Bounds"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-
-    var offset = Sys.UI.DomElement.getLocation(element);
-
-    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
-}
-
-var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) {
-    /// <param name="id" type="String"></param>
-    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
-    /// <returns domElement="true" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "id", type: String},
-        {name: "element", mayBeNull: true, domElement: true, optional: true}
-    ]);
-    if (e) throw e;
-
-    if (!element) return document.getElementById(id);
-    if (element.getElementById) return element.getElementById(id);
-
-        var nodeQueue = [];
-    var childNodes = element.childNodes;
-    for (var i = 0; i < childNodes.length; i++) {
-        var node = childNodes[i];
-        if (node.nodeType == 1) {
-            nodeQueue[nodeQueue.length] = node;
-        }
-    }
-
-    while (nodeQueue.length) {
-        node = nodeQueue.shift();
-        if (node.id == id) {
-            return node;
-        }
-        childNodes = node.childNodes;
-        for (i = 0; i < childNodes.length; i++) {
-            node = childNodes[i];
-            if (node.nodeType == 1) {
-                nodeQueue[nodeQueue.length] = node;
-            }
-        }
-    }
-
-    return null;
-}
-
-
-
-switch(Sys.Browser.agent) {
-    case Sys.Browser.InternetExplorer:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-
-                        if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);
-
-                                                var clientRects = element.getClientRects();
-            if (!clientRects || !clientRects.length) {
-                return new Sys.UI.Point(0,0);
-            }
-
-            var w = element.ownerDocument.parentWindow;
-                                                var offsetL = w.screenLeft - top.screenLeft - top.document.documentElement.scrollLeft + 2;
-            var offsetT = w.screenTop - top.screenTop - top.document.documentElement.scrollTop + 2;
-
-                                                                        var f = w.frameElement || null;
-            if (f) {
-                                                                                var fstyle = f.currentStyle;
-                offsetL += (f.frameBorder || 1) * 2 +
-                    (parseInt(fstyle.paddingLeft) || 0) +
-                    (parseInt(fstyle.borderLeftWidth) || 0) -
-                    element.ownerDocument.documentElement.scrollLeft;
-                offsetT += (f.frameBorder || 1) * 2 +
-                    (parseInt(fstyle.paddingTop) || 0) +
-                    (parseInt(fstyle.borderTopWidth) || 0) -
-                    element.ownerDocument.documentElement.scrollTop;
-            }
-
-            var clientRect = clientRects[0];
-
-            return new Sys.UI.Point(
-                clientRect.left - offsetL,
-                clientRect.top - offsetT);
-        }
-        break;
-    case Sys.Browser.Safari:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-
-                        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
-
-                                                var offsetX = 0;
-            var offsetY = 0;
-
-            var previous = null;
-            var previousStyle = null;
-            var currentStyle;
-            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
-                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-                var tagName = parent.tagName;
-
-                                                                                if ((parent.offsetLeft || parent.offsetTop) &&
-                    ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) {
-
-                    offsetX += parent.offsetLeft;
-                    offsetY += parent.offsetTop;
-                }
-            }
-
-            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
-            var elementPosition = currentStyle ? currentStyle.position : null;
-            var elementPositioned = elementPosition && (elementPosition !== "static");
-                        if (!elementPosition || (elementPosition !== "absolute")) {
-                                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
-                    tagName = parent.tagName;
-
-                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
-                        offsetX -= (parent.scrollLeft || 0);
-                        offsetY -= (parent.scrollTop || 0);
-                    }
-                    currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-                    var parentPosition = currentStyle ? currentStyle.position : null;
-
-                                        if (parentPosition && (parentPosition === "absolute")) break;
-                }
-            }
-
-            return new Sys.UI.Point(offsetX, offsetY);
-        }
-        break;
-    case Sys.Browser.Opera:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-
-                        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
-
-                                                var offsetX = 0;
-            var offsetY = 0;
-
-            var previous = null;
-            for (var parent = element; parent; previous = parent, parent = parent.offsetParent) {
-
-                var tagName = parent.tagName;
-
-                offsetX += parent.offsetLeft || 0;
-                offsetY += parent.offsetTop || 0;
-            }
-
-                        var elementPosition = element.style.position;
-            var elementPositioned = elementPosition && (elementPosition !== "static");
-
-                        for (var parent = element.parentNode; parent; parent = parent.parentNode) {
-                tagName = parent.tagName;
-
-                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop) &&
-                    ((elementPositioned &&
-                    ((parent.style.overflow === "scroll") || (parent.style.overflow === "auto"))))) {
-                                        
-                    offsetX -= (parent.scrollLeft || 0);
-                    offsetY -= (parent.scrollTop || 0);
-                }
-                var parentPosition = (parent && parent.style) ? parent.style.position : null;
-
-                                elementPositioned = elementPositioned || (parentPosition && (parentPosition !== "static"));
-            }
-
-
-            return new Sys.UI.Point(offsetX, offsetY);
-        }
-        break;
-    default:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-
-                        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
-
-            var offsetX = 0;
-            var offsetY = 0;
-            var previous = null;
-            var previousStyle = null;
-            var currentStyle = null;
-            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
-                var tagName = parent.tagName;
-                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-
-                                                if ((parent.offsetLeft || parent.offsetTop) &&
-                    !((tagName === "BODY") &&
-                    (!previousStyle || previousStyle.position !== "absolute"))) {
-
-                    offsetX += parent.offsetLeft;
-                    offsetY += parent.offsetTop;
-                }
-
-                                                if (previous !== null && currentStyle) {
-                                                                                                                                            if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) {
-                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
-                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
-                    }
-                    if (tagName === "TABLE" &&
-                        (currentStyle.position === "relative" || currentStyle.position === "absolute")) {
-                        offsetX += parseInt(currentStyle.marginLeft) || 0;
-                        offsetY += parseInt(currentStyle.marginTop) || 0;
-                    }
-                }
-            }
-
-            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
-            var elementPosition = currentStyle ? currentStyle.position : null;
-            var elementPositioned = elementPosition && (elementPosition !== "static");
-                        if (!elementPosition || (elementPosition !== "absolute")) {
-                                                                                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
-                                                                                tagName = parent.tagName;
-
-                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
-
-                        offsetX -= (parent.scrollLeft || 0);
-                        offsetY -= (parent.scrollTop || 0);
-
-                        currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
-                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
-                    }
-                }
-            }
-
-            return new Sys.UI.Point(offsetX, offsetY);
-        }
-        break;
-
-}
-
-
-Sys.UI.DomElement.removeCssClass = function Sys$UI$DomElement$removeCssClass(element, className) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-
-    var currentClassName = ' ' + element.className + ' ';
-    var index = currentClassName.indexOf(' ' + className + ' ');
-    if (index >= 0) {
-        element.className = (currentClassName.substr(0, index) + ' ' +
-            currentClassName.substring(index + className.length + 1, currentClassName.length)).trim();
-    }
-}
-
-Sys.UI.DomElement.setLocation = function Sys$UI$DomElement$setLocation(element, x, y) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="x" type="Number" integer="true"></param>
-    /// <param name="y" type="Number" integer="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "x", type: Number, integer: true},
-        {name: "y", type: Number, integer: true}
-    ]);
-    if (e) throw e;
-
-    var style = element.style;
-    style.position = 'absolute';
-    style.left = x + "px";
-    style.top = y + "px";
-}
-
-Sys.UI.DomElement.toggleCssClass = function Sys$UI$DomElement$toggleCssClass(element, className) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-
-    if (Sys.UI.DomElement.containsCssClass(element, className)) {
-        Sys.UI.DomElement.removeCssClass(element, className);
-    }
-    else {
-        Sys.UI.DomElement.addCssClass(element, className);
-    }
-}
-
-Sys.UI.DomElement._getCurrentStyle = function Sys$UI$DomElement$_getCurrentStyle(element) {
-    var w = (element.ownerDocument ? element.ownerDocument : element.documentElement).defaultView;
-    return ((w && (element !== w) && w.getComputedStyle) ? w.getComputedStyle(element, null) : element.style);
-}
-Sys.UI.Behavior = function Sys$UI$Behavior(element) {
-    /// <param name="element" domElement="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-
-    Sys.UI.Behavior.initializeBase(this);
-
-    this._element = element;
-
-    var behaviors = element._behaviors;
-    if (!behaviors) {
-        element._behaviors = [this];
-    }
-    else {
-        behaviors[behaviors.length] = this;
-    }
-}
-
-
-    function Sys$UI$Behavior$get_element() {
-        /// <value domElement="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._element;
-    }
-    function Sys$UI$Behavior$get_id() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id');
-        if (baseId) return baseId;
-        if (!this._element || !this._element.id) return '';
-        return this._element.id + '$' + this.get_name();
-    }
-    function Sys$UI$Behavior$get_name() {
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._name) return this._name;
-        var name = Object.getTypeName(this);
-        var i = name.lastIndexOf('.');
-        if (i != -1) name = name.substr(i + 1);
-        if (!this.get_isInitialized()) this._name = name;
-        return name;
-    }
-    function Sys$UI$Behavior$set_name(value) {
-        if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' '))
-            throw Error.argument('value', Sys.Res.invalidId);
-        if (typeof(this._element[value]) !== 'undefined')
-            throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value));
-        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
-        this._name = value;
-    }
-    function Sys$UI$Behavior$initialize() {
-        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
-        var name = this.get_name();
-        if (name) this._element[name] = this;
-    }
-    function Sys$UI$Behavior$dispose() {
-        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
-        if (this._element) {
-            var name = this.get_name();
-            if (name) {
-                this._element[name] = null;
-            }
-            Array.remove(this._element._behaviors, this);
-            delete this._element;
-        }
-    }
-Sys.UI.Behavior.prototype = {
-    _name: null,
-    get_element: Sys$UI$Behavior$get_element,
-    get_id: Sys$UI$Behavior$get_id,
-    get_name: Sys$UI$Behavior$get_name,
-    set_name: Sys$UI$Behavior$set_name,
-    initialize: Sys$UI$Behavior$initialize,
-    dispose: Sys$UI$Behavior$dispose
-}
-Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component);
-
-Sys.UI.Behavior.getBehaviorByName = function Sys$UI$Behavior$getBehaviorByName(element, name) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="name" type="String"></param>
-    /// <returns type="Sys.UI.Behavior" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "name", type: String}
-    ]);
-    if (e) throw e;
-
-    var b = element[name];
-    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
-}
-
-Sys.UI.Behavior.getBehaviors = function Sys$UI$Behavior$getBehaviors(element) {
-    /// <param name="element" domElement="true"></param>
-    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-
-    if (!element._behaviors) return [];
-    return Array.clone(element._behaviors);
-}
-
-Sys.UI.Behavior.getBehaviorsByType = function Sys$UI$Behavior$getBehaviorsByType(element, type) {
-    /// <param name="element" domElement="true"></param>
-    /// <param name="type" type="Type"></param>
-    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "type", type: Type}
-    ]);
-    if (e) throw e;
-
-    var behaviors = element._behaviors;
-    var results = [];
-    if (behaviors) {
-        for (var i = 0, l = behaviors.length; i < l; i++) {
-            if (type.isInstanceOfType(behaviors[i])) {
-                results[results.length] = behaviors[i];
-            }
-        }
-    }
-    return results;
-}
-Sys.UI.VisibilityMode = function Sys$UI$VisibilityMode() {
-    /// <field name="hide" type="Number" integer="true" static="true"></field>
-    /// <field name="collapse" type="Number" integer="true" static="true"></field>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-
-
-
-Sys.UI.VisibilityMode.prototype = {
-    hide: 0,
-    collapse: 1
-}
-Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");
-
-Sys.UI.Control = function Sys$UI$Control(element) {
-    /// <param name="element" domElement="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-
-    if (typeof(element.control) != 'undefined') throw Error.invalidOperation(Sys.Res.controlAlreadyDefined);
-    Sys.UI.Control.initializeBase(this);
-
-    this._element = element;
-    element.control = this;
-
-    this._oldDisplayMode = this._element.style.display;
-    if (!this._oldDisplayMode || (this._oldDisplayMode == 'none')) {
-        this._oldDisplayMode = '';
-    }
-}
-
-
-
-
-    function Sys$UI$Control$get_element() {
-        /// <value domElement="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._element;
-    }
-    function Sys$UI$Control$get_id() {
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._element) return '';
-        return this._element.id;
-    }
-    function Sys$UI$Control$set_id(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-
-        throw Error.invalidOperation(Sys.Res.cantSetId);
-    }
-    function Sys$UI$Control$get_parent() {
-        /// <value type="Sys.UI.Control"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._parent) {
-            return this._parent;
-        }
-        else {
-            var parentElement = this._element.parentNode;
-            while (parentElement) {
-                if (parentElement.control) {
-                    return parentElement.control;
-                }
-                parentElement = parentElement.parentNode;
-            }
-            return null;
-        }
-    }
-    function Sys$UI$Control$set_parent(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]);
-        if (e) throw e;
-
-        var parents = [this];
-        var current = value;
-        while (current) {
-            if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain);
-            parents[parents.length] = current;
-            current = current.get_parent();
-        }
-        this._parent = value;
-    }
-    function Sys$UI$Control$get_visibilityMode() {
-        /// <value type="Sys.UI.VisibilityMode"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._visibilityMode;
-    }
-    function Sys$UI$Control$set_visibilityMode(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]);
-        if (e) throw e;
-
-        if (this._visibilityMode !== value) {
-            this._visibilityMode = value;
-            if (this.get_visible() === false) {
-                if (this._visibilityMode === Sys.UI.VisibilityMode.hide) {
-                    this._element.style.display = this._oldDisplayMode;
-                }
-                else {
-                    this._element.style.display = 'none';
-                }
-            }
-        }
-        this._visibilityMode = value;
-    }
-    function Sys$UI$Control$get_visible() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return (this._element.style.visibility != 'hidden');
-    }
-    function Sys$UI$Control$set_visible(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-
-        if (value != this.get_visible()) {
-            this._element.style.visibility = value ? 'visible' : 'hidden';
-            if (value || (this._visibilityMode === Sys.UI.VisibilityMode.hide)) {
-                this._element.style.display = this._oldDisplayMode;
-            }
-            else {
-                this._element.style.display = 'none';
-            }
-        }
-    }
-    function Sys$UI$Control$addCssClass(className) {
-        /// <param name="className" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "className", type: String}
-        ]);
-        if (e) throw e;
-
-        Sys.UI.DomElement.addCssClass(this._element, className);
-    }
-    function Sys$UI$Control$dispose() {
-        Sys.UI.Control.callBaseMethod(this, 'dispose');
-        if (this._element) {
-            this._element.control = undefined;
-            delete this._element;
-        }
-    }
-    function Sys$UI$Control$initialize() {
-        Sys.UI.Control.callBaseMethod(this, 'initialize');
-        var elt = this._element;
-    }
-    function Sys$UI$Control$onBubbleEvent(source, args) {
-        /// <param name="source"></param>
-        /// <param name="args" type="Sys.EventArgs"></param>
-        /// <returns type="Boolean"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "source"},
-            {name: "args", type: Sys.EventArgs}
-        ]);
-        if (e) throw e;
-
-        return false;
-    }
-    function Sys$UI$Control$raiseBubbleEvent(source, args) {
-        /// <param name="source"></param>
-        /// <param name="args" type="Sys.EventArgs"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "source"},
-            {name: "args", type: Sys.EventArgs}
-        ]);
-        if (e) throw e;
-
-        var currentTarget = this.get_parent();
-        while (currentTarget) {
-            if (currentTarget.onBubbleEvent(source, args)) {
-                return;
-            }
-            currentTarget = currentTarget.get_parent();
-        }
-    }
-    function Sys$UI$Control$removeCssClass(className) {
-        /// <param name="className" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "className", type: String}
-        ]);
-        if (e) throw e;
-
-        Sys.UI.DomElement.removeCssClass(this._element, className);
-    }
-    function Sys$UI$Control$toggleCssClass(className) {
-        /// <param name="className" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "className", type: String}
-        ]);
-        if (e) throw e;
-
-        Sys.UI.DomElement.toggleCssClass(this._element, className);
-    }
-Sys.UI.Control.prototype = {
-    _parent: null,
-    _visibilityMode: Sys.UI.VisibilityMode.hide,
-
-    get_element: Sys$UI$Control$get_element,
-    get_id: Sys$UI$Control$get_id,
-    set_id: Sys$UI$Control$set_id,
-    get_parent: Sys$UI$Control$get_parent,
-    set_parent: Sys$UI$Control$set_parent,
-    get_visibilityMode: Sys$UI$Control$get_visibilityMode,
-    set_visibilityMode: Sys$UI$Control$set_visibilityMode,
-    get_visible: Sys$UI$Control$get_visible,
-    set_visible: Sys$UI$Control$set_visible,
-    addCssClass: Sys$UI$Control$addCssClass,
-    dispose: Sys$UI$Control$dispose,
-    initialize: Sys$UI$Control$initialize,
-    onBubbleEvent: Sys$UI$Control$onBubbleEvent,
-    raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent,
-    removeCssClass: Sys$UI$Control$removeCssClass,
-    toggleCssClass: Sys$UI$Control$toggleCssClass
-}
-Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);
-
-Sys.Res={
-'argumentTypeName':'Value is not the name of an existing type.',
-'methodRegisteredTwice':'Method {0} has already been registered.',
-'cantSetIdAfterInit':'The id property can\'t be set on this object after initialization.',
-'componentCantSetIdAfterAddedToApp':'The id property of a component can\'t be set after it\'s been added to the Application object.',
-'behaviorDuplicateName':'A behavior with name \'{0}\' already exists or it is the name of an existing property on the target element.',
-'notATypeName':'Value is not a valid type name.',
-'typeShouldBeTypeOrString':'Value is not a valid type or a valid type name.',
-'boolTrueOrFalse':'Value must be \'true\' or \'false\'.',
-'stringFormatInvalid':'The format string is invalid.',
-'referenceNotFound':'Component \'{0}\' was not found.',
-'enumReservedName':'\'{0}\' is a reserved name that can\'t be used as an enum value name.',
-'eventHandlerNotFound':'Handler not found.',
-'circularParentChain':'The chain of control parents can\'t have circular references.',
-'undefinedEvent':'\'{0}\' is not an event.',
-'notAMethod':'{0} is not a method.',
-'propertyUndefined':'\'{0}\' is not a property or an existing field.',
-'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
-'scriptLoadFailedDebug':'The script \'{0}\' failed to load. Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable \'Display a notification about every script error\' under advanced settings.\r\n Missing call to Sys.Application.notifyScriptLoaded().',
-'propertyNotWritable':'\'{0}\' is not a writable property.',
-'enumInvalidValueName':'\'{0}\' is not a valid name for an enum value.',
-'controlAlreadyDefined':'A control is already associated with the element.',
-'namespaceContainsObject':'Object {0} already exists and is not a namespace.',
-'cantAddNonFunctionhandler':'Can\'t add a handler that is not a function.',
-'scriptLoaderAlreadyLoading':'ScriptLoader.loadScripts cannot be called while the ScriptLoader is already loading scripts.',
-'invalidNameSpace':'Value is not a valid namespace identifier.',
-'notAnInterface':'Value is not a valid interface.',
-'eventHandlerNotFunction':'Handler must be a function.',
-'propertyNotAnArray':'\'{0}\' is not an Array property.',
-'typeRegisteredTwice':'Type {0} has already been registered.',
-'cantSetNameAfterInit':'The name property can\'t be set on this object after initialization.',
-'appDuplicateComponent':'Two components with the same id \'{0}\' can\'t be added to the application.',
-'appComponentMustBeInitialized':'Components must be initialized before they are added to the Application object.',
-'baseNotAClass':'Value is not a class.',
-'methodNotFound':'No method found with name \'{0}\'.',
-'arrayParseBadFormat':'Value must be a valid string representation for an array. It must start with a \'[\' and end with a \']\'.',
-'cantSetId':'The id property can\'t be set on this object.',
-'stringFormatBraceMismatch':'The format string contains an unmatched opening or closing brace.',
-'enumValueNotInteger':'An enumeration definition can only contain integer values.',
-'propertyNullOrUndefined':'Cannot set the properties of \'{0}\' because it returned a null value.',
-'componentCantSetIdTwice':'The id property of a component can\'t be set more than once.',
-'createComponentOnDom':'Value must be null for Components that are not Controls or Behaviors.',
-'createNotComponent':'{0} does not derive from Sys.Component.',
-'createNoDom':'Value must not be null for Controls and Behaviors.',
-'cantAddWithoutId':'Can\'t add a component that doesn\'t have an id.',
-'badTypeName':'Value is not the name of the type being registered or the name is a reserved word.',
-'argumentInteger':'Value must be an integer.',
-'scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.',
-'invokeCalledTwice':'Cannot call invoke more than once.',
-'webServiceFailed':'The server method \'{0}\' failed with the following error: {1}',
-'argumentType':'Object cannot be converted to the required type.',
-'argumentNull':'Value cannot be null.',
-'controlCantSetId':'The id property can\'t be set on a control.',
-'formatBadFormatSpecifier':'Format specifier was invalid.',
-'webServiceFailedNoMsg':'The server method \'{0}\' failed.',
-'argumentDomElement':'Value must be a DOM element.',
-'invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.',
-'cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.',
-'actualValue':'Actual value was {0}.',
-'enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.',
-'scriptLoadFailed':'The script \'{0}\' could not be loaded.',
-'parameterCount':'Parameter count mismatch.',
-'cannotDeserializeEmptyString':'Cannot deserialize empty string.',
-'formatInvalidString':'Input string was not in a correct format.',
-'invalidTimeout':'Value must be greater than or equal to zero.',
-'cannotAbortBeforeStart':'Cannot abort when executor has not started.',
-'argument':'Value does not fall within the expected range.',
-'cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.',
-'invalidHttpVerb':'httpVerb cannot be set to an empty or null string.',
-'nullWebRequest':'Cannot call executeRequest with a null webRequest.',
-'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
-'cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.',
-'argumentUndefined':'Value cannot be undefined.',
-'webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}',
-'servicePathNotSet':'The path to the web service has not been set.',
-'argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.',
-'cannotCallOnceStarted':'Cannot call {0} once started.',
-'badBaseUrl1':'Base URL does not contain ://.',
-'badBaseUrl2':'Base URL does not contain another /.',
-'badBaseUrl3':'Cannot find last / in base URL.',
-'setExecutorAfterActive':'Cannot set executor after it has become active.',
-'paramName':'Parameter name: {0}',
-'cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.',
-'format':'One of the identified items was in an invalid format.',
-'assertFailedCaller':'Assertion Failed: {0}\r\nat {1}',
-'argumentOutOfRange':'Specified argument was out of the range of valid values.',
-'webServiceTimedOut':'The server method \'{0}\' timed out.',
-'notImplemented':'The method or operation is not implemented.',
-'assertFailed':'Assertion Failed: {0}',
-'invalidOperation':'Operation is not valid due to the current state of the object.',
-'breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'
-};
-
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//-----------------------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------
+// MicrosoftAjax.js
+// Microsoft AJAX Framework.
+
+
+Function.__typeName = 'Function';
+Function.__class = true;
+
+Function.createCallback = function Function$createCallback(method, context) {
+    /// <param name="method" type="Function"></param>
+    /// <param name="context" mayBeNull="true"></param>
+    /// <returns type="Function"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "method", type: Function},
+        {name: "context", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+
+        
+    return function() {
+        var l = arguments.length;
+        if (l > 0) {
+                        var args = [];
+            for (var i = 0; i < l; i++) {
+                args[i] = arguments[i];
+            }
+            args[l] = context;
+            return method.apply(this, args);
+        }
+        return method.call(this, context);
+    }
+}
+
+Function.createDelegate = function Function$createDelegate(instance, method) {
+    /// <param name="instance" mayBeNull="true"></param>
+    /// <param name="method" type="Function"></param>
+    /// <returns type="Function"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance", mayBeNull: true},
+        {name: "method", type: Function}
+    ]);
+    if (e) throw e;
+
+
+        
+    return function() {
+        return method.apply(instance, arguments);
+    }
+}
+
+Function.emptyFunction = Function.emptyMethod = function Function$emptyMethod() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+
+Function._validateParams = function Function$_validateParams(params, expectedParams) {
+                                                                                                                                    
+    var e;
+
+    e = Function._validateParameterCount(params, expectedParams);
+    if (e) {
+        e.popStackFrame();
+        return e;
+    }
+
+    for (var i=0; i < params.length; i++) {
+                                var expectedParam = expectedParams[Math.min(i, expectedParams.length - 1)];
+
+        var paramName = expectedParam.name;
+        if (expectedParam.parameterArray) {
+                        paramName += "[" + (i - expectedParams.length + 1) + "]";
+        }
+
+        e = Function._validateParameter(params[i], expectedParam, paramName);
+        if (e) {
+            e.popStackFrame();
+            return e;
+        }
+    }
+
+
+    return null;
+}
+
+Function._validateParameterCount = function Function$_validateParameterCount(params, expectedParams) {
+    var maxParams = expectedParams.length;
+    var minParams = 0;
+    for (var i=0; i < expectedParams.length; i++) {
+        if (expectedParams[i].parameterArray) {
+            maxParams = Number.MAX_VALUE;
+        }
+        else if (!expectedParams[i].optional) {
+            minParams++;
+        }
+    }
+
+    if (params.length < minParams || params.length > maxParams) {
+        var e = Error.parameterCount();
+        e.popStackFrame();
+        return e;
+    }
+
+    return null;
+}
+
+Function._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) {
+    var e;
+
+    var expectedType = expectedParam.type;
+    var expectedInteger = !!expectedParam.integer;
+    var expectedDomElement = !!expectedParam.domElement;
+    var mayBeNull = !!expectedParam.mayBeNull;
+
+    e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
+    if (e) {
+        e.popStackFrame();
+        return e;
+    }
+
+        var expectedElementType = expectedParam.elementType;
+    var elementMayBeNull = !!expectedParam.elementMayBeNull;
+    if (expectedType === Array && typeof(param) !== "undefined" && param !== null &&
+        (expectedElementType || !elementMayBeNull)) {
+        var expectedElementInteger = !!expectedParam.elementInteger;
+        var expectedElementDomElement = !!expectedParam.elementDomElement;
+        for (var i=0; i < param.length; i++) {
+            var elem = param[i];
+            e = Function._validateParameterType(elem, expectedElementType,
+                expectedElementInteger, expectedElementDomElement, elementMayBeNull,
+                paramName + "[" + i + "]");
+            if (e) {
+                e.popStackFrame();
+                return e;
+            }
+        }
+    }
+
+    return null;
+}
+
+Function._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
+    var e;
+
+    if (typeof(param) === "undefined") {
+        if (mayBeNull) {
+            return null;
+        }
+        else {
+            e = Error.argumentUndefined(paramName);
+            e.popStackFrame();
+            return e;
+        }
+    }
+
+    if (param === null) {
+        if (mayBeNull) {
+            return null;
+        }
+        else {
+            e = Error.argumentNull(paramName);
+            e.popStackFrame();
+            return e;
+        }
+    }
+
+    if (expectedType && expectedType.__enum) {
+        if (typeof(param) !== 'number') {
+            e = Error.argumentType(paramName, Object.getType(param), expectedType);
+            e.popStackFrame();
+            return e;
+        }
+        if ((param % 1) === 0) {
+            var values = expectedType.prototype;
+            if (!expectedType.__flags || (param === 0)) {
+                for (var i in values) {
+                    if (values[i] === param) return null;
+                }
+            }
+            else {
+                var v = param;
+                for (var i in values) {
+                    var vali = values[i];
+                    if (vali === 0) continue;
+                    if ((vali & param) === vali) {
+                        v -= vali;
+                    }
+                    if (v === 0) return null;
+                }
+            }
+        }
+        e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
+        e.popStackFrame();
+        return e;
+    }
+
+                    if (expectedDomElement && (param !== window) && (param !== document) &&
+        !(window.HTMLElement && (param instanceof HTMLElement)) &&
+        (typeof(param.nodeName) !== 'string')) {
+
+        e = Error.argument(paramName, Sys.Res.argumentDomElement);
+        e.popStackFrame();
+        return e;
+    }
+
+        if (expectedType && !expectedType.isInstanceOfType(param)) {
+        e = Error.argumentType(paramName, Object.getType(param), expectedType);
+        e.popStackFrame();
+        return e;
+    }
+
+    if (expectedType === Number && expectedInteger) {
+                        if ((param % 1) !== 0) {
+            e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger);
+            e.popStackFrame();
+            return e;
+        }
+    }
+
+    return null;
+}
+Error.__typeName = 'Error';
+Error.__class = true;
+
+Error.create = function Error$create(message, errorInfo) {
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="errorInfo" optional="true" mayBeNull="true"></param>
+    /// <returns type="Error"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true},
+        {name: "errorInfo", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+
+            var e = new Error(message);
+    e.message = message;
+
+    if (errorInfo) {
+        for (var v in errorInfo) {
+            e[v] = errorInfo[v];
+        }
+    }
+
+    e.popStackFrame();
+    return e;
+}
+
+Error.argument = function Error$argument(paramName, message) {
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+
+    var displayMessage = "Sys.ArgumentException: " + (message ? message : Sys.Res.argument);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+
+    var e = Error.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName });
+    e.popStackFrame();
+    return e;
+}
+
+Error.argumentNull = function Error$argumentNull(paramName, message) {
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+
+    var displayMessage = "Sys.ArgumentNullException: " + (message ? message : Sys.Res.argumentNull);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+
+    var e = Error.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName });
+    e.popStackFrame();
+    return e;
+}
+
+Error.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) {
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="actualValue" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "actualValue", mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+
+    var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : Sys.Res.argumentOutOfRange);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+
+                if (typeof(actualValue) !== "undefined" && actualValue !== null) {
+        displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue);
+    }
+
+    var e = Error.create(displayMessage, {
+        name: "Sys.ArgumentOutOfRangeException",
+        paramName: paramName,
+        actualValue: actualValue
+    });
+    e.popStackFrame();
+    return e;
+}
+
+Error.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) {
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="actualType" type="Type" optional="true" mayBeNull="true"></param>
+    /// <param name="expectedType" type="Type" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "actualType", type: Type, mayBeNull: true, optional: true},
+        {name: "expectedType", type: Type, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+
+    var displayMessage = "Sys.ArgumentTypeException: ";
+    if (message) {
+        displayMessage += message;
+    }
+    else if (actualType && expectedType) {
+        displayMessage +=
+            String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName());
+    }
+    else {
+        displayMessage += Sys.Res.argumentType;
+    }
+
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+
+    var e = Error.create(displayMessage, {
+        name: "Sys.ArgumentTypeException",
+        paramName: paramName,
+        actualType: actualType,
+        expectedType: expectedType
+    });
+    e.popStackFrame();
+    return e;
+}
+
+Error.argumentUndefined = function Error$argumentUndefined(paramName, message) {
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+
+    var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : Sys.Res.argumentUndefined);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+
+    var e = Error.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName });
+    e.popStackFrame();
+    return e;
+}
+
+Error.format = function Error$format(message) {
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    var displayMessage = "Sys.FormatException: " + (message ? message : Sys.Res.format);
+    var e = Error.create(displayMessage, {name: 'Sys.FormatException'});
+    e.popStackFrame();
+    return e;
+}
+
+Error.invalidOperation = function Error$invalidOperation(message) {
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    var displayMessage = "Sys.InvalidOperationException: " + (message ? message : Sys.Res.invalidOperation);
+
+    var e = Error.create(displayMessage, {name: 'Sys.InvalidOperationException'});
+    e.popStackFrame();
+    return e;
+}
+
+Error.notImplemented = function Error$notImplemented(message) {
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    var displayMessage = "Sys.NotImplementedException: " + (message ? message : Sys.Res.notImplemented);
+
+    var e = Error.create(displayMessage, {name: 'Sys.NotImplementedException'});
+    e.popStackFrame();
+    return e;
+}
+
+Error.parameterCount = function Error$parameterCount(message) {
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+
+    var displayMessage = "Sys.ParameterCountException: " + (message ? message : Sys.Res.parameterCount);
+    var e = Error.create(displayMessage, {name: 'Sys.ParameterCountException'});
+    e.popStackFrame();
+    return e;
+}
+
+Error.prototype.popStackFrame = function Error$popStackFrame() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+
+                            
+    if (typeof(this.stack) === "undefined" || this.stack === null ||
+        typeof(this.fileName) === "undefined" || this.fileName === null ||
+        typeof(this.lineNumber) === "undefined" || this.lineNumber === null) {
+        return;
+    }
+
+    var stackFrames = this.stack.split("\n");
+
+                var currentFrame = stackFrames[0];
+    var pattern = this.fileName + ":" + this.lineNumber;
+    while(typeof(currentFrame) !== "undefined" &&
+          currentFrame !== null &&
+          currentFrame.indexOf(pattern) === -1) {
+        stackFrames.shift();
+        currentFrame = stackFrames[0];
+    }
+
+    var nextFrame = stackFrames[1];
+
+        if (typeof(nextFrame) === "undefined" || nextFrame === null) {
+        return;
+    }
+
+        var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
+    if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) {
+        return;
+    }
+
+    this.fileName = nextFrameParts[1];
+
+        this.lineNumber = parseInt(nextFrameParts[2]);
+
+    stackFrames.shift();
+    this.stack = stackFrames.join("\n");
+}
+if (!window) this.window = this;
+
+window.Type = Function;
+
+window.__rootNamespaces = [];
+window.__registeredTypes = {};
+
+Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
+Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");
+
+Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) {
+    /// <param name="instance"></param>
+    /// <param name="name" type="String"></param>
+    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"},
+        {name: "name", type: String},
+        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    var baseMethod = this.getBaseMethod(instance, name);
+    if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
+    if (!baseArguments) {
+        return baseMethod.apply(instance);
+    }
+    else {
+        return baseMethod.apply(instance, baseArguments);
+    }
+}
+
+Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name) {
+    /// <param name="instance"></param>
+    /// <param name="name" type="String"></param>
+    /// <returns type="Function" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"},
+        {name: "name", type: String}
+    ]);
+    if (e) throw e;
+
+    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
+    var baseType = this.getBaseType();
+    if (baseType) {
+        var baseMethod = baseType.prototype[name];
+        return (baseMethod instanceof Function) ? baseMethod : null;
+    }
+
+    return null;
+}
+
+Type.prototype.getBaseType = function Type$getBaseType() {
+    /// <returns type="Type" mayBeNull="true"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
+}
+
+Type.prototype.getInterfaces = function Type$getInterfaces() {
+    /// <returns type="Array" elementType="Type" mayBeNull="false" elementMayBeNull="false"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    var result = [];
+    var type = this;
+    while(type) {
+        var interfaces = type.__interfaces;
+        if (interfaces) {
+            for (var i = 0, l = interfaces.length; i < l; i++) {
+                var interfaceType = interfaces[i];
+                if (!Array.contains(result, interfaceType)) {
+                    result[result.length] = interfaceType;
+                }
+            }
+        }
+        type = type.__baseType;
+    }
+    return result;
+}
+
+Type.prototype.getName = function Type$getName() {
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
+}
+
+Type.prototype.implementsInterface = function Type$implementsInterface(interfaceType) {
+    /// <param name="interfaceType" type="Type"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "interfaceType", type: Type}
+    ]);
+    if (e) throw e;
+
+    this.resolveInheritance();
+
+    var interfaceName = interfaceType.getName();
+    var cache = this.__interfaceCache;
+    if (cache) {
+        var cacheEntry = cache[interfaceName];
+        if (typeof(cacheEntry) !== 'undefined') return cacheEntry;
+    }
+    else {
+        cache = this.__interfaceCache = {};
+    }
+
+    var baseType = this;
+    while (baseType) {
+        var interfaces = baseType.__interfaces;
+        if (interfaces) {
+            if (Array.indexOf(interfaces, interfaceType) !== -1) {
+                return cache[interfaceName] = true;
+            }
+        }
+
+        baseType = baseType.__baseType;
+    }
+
+    return cache[interfaceName] = false;
+}
+
+Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType) {
+    /// <param name="parentType" type="Type"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "parentType", type: Type}
+    ]);
+    if (e) throw e;
+
+    this.resolveInheritance();
+    var baseType = this.__baseType;
+    while (baseType) {
+        if (baseType === parentType) {
+            return true;
+        }
+        baseType = baseType.__baseType;
+    }
+
+    return false;
+}
+
+Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments) {
+    /// <param name="instance"></param>
+    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"},
+        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
+
+    this.resolveInheritance();
+    if (this.__baseType) {
+        if (!baseArguments) {
+            this.__baseType.apply(instance);
+        }
+        else {
+            this.__baseType.apply(instance, baseArguments);
+        }
+    }
+
+    return instance;
+}
+
+Type.prototype.isImplementedBy = function Type$isImplementedBy(instance) {
+    /// <param name="instance" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if (typeof(instance) === "undefined" || instance === null) return false;
+
+    var instanceType = Object.getType(instance);
+    return !!(instanceType.implementsInterface && instanceType.implementsInterface(this));
+}
+
+Type.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {
+    /// <param name="instance" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if (typeof(instance) === "undefined" || instance === null) return false;
+
+    if (instance instanceof this) return true;
+
+    var instanceType = Object.getType(instance);
+    return !!(instanceType === this) ||
+           (instanceType.inheritsFrom && instanceType.inheritsFrom(this)) ||
+           (instanceType.implementsInterface && instanceType.implementsInterface(this));
+}
+
+Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {
+    /// <param name="typeName" type="String"></param>
+    /// <param name="baseType" type="Type" optional="true" mayBeNull="true"></param>
+    /// <param name="interfaceTypes" parameterArray="true" type="Type"></param>
+    /// <returns type="Type"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "typeName", type: String},
+        {name: "baseType", type: Type, mayBeNull: true, optional: true},
+        {name: "interfaceTypes", type: Type, parameterArray: true}
+    ]);
+    if (e) throw e;
+
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
+        var parsedName;
+    try {
+        parsedName = eval(typeName);
+    }
+    catch(e) {
+        throw Error.argument('typeName', Sys.Res.argumentTypeName);
+    }
+    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
+        if (window.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
+
+            if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType');
+    if (baseType && !baseType.__class) throw Error.argument('baseType', Sys.Res.baseNotAClass);
+
+    this.prototype.constructor = this;
+    this.__typeName = typeName;
+    this.__class = true;
+    if (baseType) {
+        this.__baseType = baseType;
+        this.__basePrototypePending = true;
+    }
+        if (!window.__classes) window.__classes = {};
+    window.__classes[typeName.toUpperCase()] = this;
+
+                if (interfaceTypes) {
+        this.__interfaces = [];
+        for (var i = 2; i < arguments.length; i++) {
+            var interfaceType = arguments[i];
+            if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface);
+            this.resolveInheritance();
+            for (var methodName in interfaceType.prototype) {
+                var method = interfaceType.prototype[methodName];
+                if (!this.prototype[methodName]) {
+                    this.prototype[methodName] = method;
+                }
+            }
+            this.__interfaces.push(interfaceType);
+        }
+    }
+    window.__registeredTypes[typeName] = true;
+
+    return this;
+}
+
+Type.prototype.registerInterface = function Type$registerInterface(typeName) {
+    /// <param name="typeName" type="String"></param>
+    /// <returns type="Type"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "typeName", type: String}
+    ]);
+    if (e) throw e;
+
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
+        var parsedName;
+    try {
+        parsedName = eval(typeName);
+    }
+    catch(e) {
+        throw Error.argument('typeName', Sys.Res.argumentTypeName);
+    }
+    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
+        if (window.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
+    this.prototype.constructor = this;
+    this.__typeName = typeName;
+    this.__interface = true;
+    window.__registeredTypes[typeName] = true;
+
+    return this;
+}
+
+Type.prototype.resolveInheritance = function Type$resolveInheritance() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+
+    if (this.__basePrototypePending) {
+        var baseType = this.__baseType;
+
+        baseType.resolveInheritance();
+
+        for (var memberName in baseType.prototype) {
+            var memberValue = baseType.prototype[memberName];
+            if (!this.prototype[memberName]) {
+                this.prototype[memberName] = memberValue;
+            }
+        }
+        delete this.__basePrototypePending;
+    }
+}
+
+Type.getRootNamespaces = function Type$getRootNamespaces() {
+    /// <returns type="Array"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return Array.clone(window.__rootNamespaces);
+}
+
+Type.isClass = function Type$isClass(type) {
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__class;
+}
+
+Type.isInterface = function Type$isInterface(type) {
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__interface;
+}
+
+Type.isNamespace = function Type$isNamespace(object) {
+    /// <param name="object" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "object", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if ((typeof(object) === 'undefined') || (object === null)) return false;
+    return !!object.__namespace;
+}
+
+Type.parse = function Type$parse(typeName, ns) {
+    /// <param name="typeName" type="String" mayBeNull="true"></param>
+    /// <param name="ns" optional="true" mayBeNull="true"></param>
+    /// <returns type="Type" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "typeName", type: String, mayBeNull: true},
+        {name: "ns", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    var fn;
+    if (ns) {
+        if (!window.__classes) return null;
+        fn = window.__classes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()];
+        return fn || null;
+    }
+    if (!typeName) return null;
+    if (!Type.__htClasses) {
+        Type.__htClasses = {};
+    }
+    fn = Type.__htClasses[typeName];
+    if (!fn) {
+        fn = eval(typeName);
+        if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName);
+        Type.__htClasses[typeName] = fn;
+    }
+    return fn;
+}
+
+Type.registerNamespace = function Type$registerNamespace(namespacePath) {
+    /// <param name="namespacePath" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "namespacePath", type: String}
+    ]);
+    if (e) throw e;
+
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
+    var rootObject = window;
+    var namespaceParts = namespacePath.split('.');
+
+    for (var i = 0; i < namespaceParts.length; i++) {
+        var currentPart = namespaceParts[i];
+        var ns = rootObject[currentPart];
+        if (ns && !ns.__namespace) {
+            throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsObject, namespaceParts.splice(0, i + 1).join('.')));
+        }
+        if (!ns) {
+            ns = rootObject[currentPart] = {};
+            if (i === 0) {
+                window.__rootNamespaces[window.__rootNamespaces.length] = ns;
+            }
+            ns.__namespace = true;
+            ns.__typeName = namespaceParts.slice(0, i + 1).join('.');
+            var parsedName;
+            try {
+                parsedName = eval(ns.__typeName);
+            }
+            catch(e) {
+                parsedName = null;
+            }
+            if (parsedName !== ns) {
+                delete rootObject[currentPart];
+                throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
+            }
+            ns.getName = function ns$getName() {return this.__typeName;}
+        }
+        rootObject = ns;
+    }
+}
+Object.__typeName = 'Object';
+Object.__class = true;
+
+Object.getType = function Object$getType(instance) {
+    /// <param name="instance"></param>
+    /// <returns type="Type"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"}
+    ]);
+    if (e) throw e;
+
+    var ctor = instance.constructor;
+    if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) {
+        return Object;
+    }
+    return ctor;
+}
+
+Object.getTypeName = function Object$getTypeName(instance) {
+    /// <param name="instance"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"}
+    ]);
+    if (e) throw e;
+
+    return Object.getType(instance).getName();
+}
+Boolean.__typeName = 'Boolean';
+Boolean.__class = true;
+
+Boolean.parse = function Boolean$parse(value) {
+    /// <param name="value" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String}
+    ]);
+    if (e) throw e;
+
+    var v = value.trim().toLowerCase();
+    if (v === 'false') return false;
+    if (v === 'true') return true;
+    throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse);
+}
+Date.__typeName = 'Date';
+Date.__class = true;
+
+Date._appendPreOrPostMatch = function Date$_appendPreOrPostMatch(preMatch, strBuilder) {
+                var quoteCount = 0;
+    var escaped = false;
+    for (var i = 0, il = preMatch.length; i < il; i++) {
+        var c = preMatch.charAt(i);
+        switch (c) {
+        case '\'':
+            if (escaped) strBuilder.append("'");
+            else quoteCount++;
+            escaped = false;
+            break;
+        case '\\':
+            if (escaped) strBuilder.append("\\");
+            escaped = !escaped;
+            break;
+        default:
+            strBuilder.append(c);
+            escaped = false;
+            break;
+        }
+    }
+    return quoteCount;
+}
+
+Date._expandFormat = function Date$_expandFormat(dtf, format) {
+        if (!format) {
+        format = "F";
+    }
+    if (format.length === 1) {
+        switch (format) {
+        case "d":
+            return dtf.ShortDatePattern;
+        case "D":
+            return dtf.LongDatePattern;
+        case "t":
+            return dtf.ShortTimePattern;
+        case "T":
+            return dtf.LongTimePattern;
+        case "F":
+            return dtf.FullDateTimePattern;
+        case "M": case "m":
+            return dtf.MonthDayPattern;
+        case "s":
+            return dtf.SortableDateTimePattern;
+        case "Y": case "y":
+            return dtf.YearMonthPattern;
+        default:
+            throw Error.format(Sys.Res.formatInvalidString);
+        }
+    }
+    return format;
+}
+
+Date._expandYear = function Date$_expandYear(dtf, year) {
+        if (year < 100) {
+        var curr = new Date().getFullYear();
+        year += curr - (curr % 100);
+        if (year > dtf.Calendar.TwoDigitYearMax) {
+            return year - 100;
+        }
+    }
+    return year;
+}
+
+Date._getParseRegExp = function Date$_getParseRegExp(dtf, format) {
+                if (!dtf._parseRegExp) {
+        dtf._parseRegExp = {};
+    }
+    else if (dtf._parseRegExp[format]) {
+        return dtf._parseRegExp[format];
+    }
+
+        var expFormat = Date._expandFormat(dtf, format);
+    expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1");
+
+    var regexp = new Sys.StringBuilder("^");
+    var groups = [];
+    var index = 0;
+    var quoteCount = 0;
+    var tokenRegExp = Date._getTokenRegExp();
+    var match;
+
+        while ((match = tokenRegExp.exec(expFormat)) !== null) {
+        var preMatch = expFormat.slice(index, match.index);
+        index = tokenRegExp.lastIndex;
+
+                quoteCount += Date._appendPreOrPostMatch(preMatch, regexp);
+        if ((quoteCount%2) === 1) {
+            regexp.append(match[0]);
+            continue;
+        }
+
+                switch (match[0]) {
+            case 'dddd': case 'ddd':
+            case 'MMMM': case 'MMM':
+                regexp.append("(\\D+)");
+                break;
+            case 'tt': case 't':
+                regexp.append("(\\D*)");
+                break;
+            case 'yyyy':
+                regexp.append("(\\d{4})");
+                break;
+            case 'fff':
+                regexp.append("(\\d{3})");
+                break;
+            case 'ff':
+                regexp.append("(\\d{2})");
+                break;
+            case 'f':
+                regexp.append("(\\d)");
+                break;
+            case 'dd': case 'd':
+            case 'MM': case 'M':
+            case 'yy': case 'y':
+            case 'HH': case 'H':
+            case 'hh': case 'h':
+            case 'mm': case 'm':
+            case 'ss': case 's':
+                regexp.append("(\\d\\d?)");
+                break;
+            case 'zzz':
+                regexp.append("([+-]?\\d\\d?:\\d{2})");
+                break;
+            case 'zz': case 'z':
+                regexp.append("([+-]?\\d\\d?)");
+                break;
+        }
+        Array.add(groups, match[0]);
+    }
+    Date._appendPreOrPostMatch(expFormat.slice(index), regexp);
+    regexp.append("$");
+        var regexpStr = regexp.toString().replace(/\s+/g, "\\s+");
+    var parseRegExp = {'regExp': regexpStr, 'groups': groups};
+        dtf._parseRegExp[format] = parseRegExp;
+    return parseRegExp;
+}
+
+Date._getTokenRegExp = function Date$_getTokenRegExp() {
+        return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;
+}
+
+Date.parseLocale = function Date$parseLocale(value, formats) {
+    /// <param name="value" type="String"></param>
+    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
+    /// <returns type="Date"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String},
+        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+
+    return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments);
+}
+
+Date.parseInvariant = function Date$parseInvariant(value, formats) {
+    /// <param name="value" type="String"></param>
+    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
+    /// <returns type="Date"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String},
+        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+
+    return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments);
+}
+
+Date._parse = function Date$_parse(value, cultureInfo, args) {
+            var custom = false;
+    for (var i = 1, il = args.length; i < il; i++) {
+        var format = args[i];
+        if (format) {
+            custom = true;
+            var date = Date._parseExact(value, format, cultureInfo);
+            if (date) return date;
+        }
+    }
+        if (! custom) {
+        var formats = cultureInfo._getDateTimeFormats();
+        for (var i = 0, il = formats.length; i < il; i++) {
+            var date = Date._parseExact(value, formats[i], cultureInfo);
+            if (date) return date;
+        }
+    }
+    return null;
+}
+
+Date._parseExact = function Date$_parseExact(value, format, cultureInfo) {
+            value = value.trim();
+    var dtf = cultureInfo.dateTimeFormat;
+
+            var parseInfo = Date._getParseRegExp(dtf, format);
+    var match = new RegExp(parseInfo.regExp).exec(value);
+        if (match !== null) {
+        var groups = parseInfo.groups;
+        var year = null, month = null, date = null, weekDay = null;
+        var hour = 0, min = 0, sec = 0, msec = 0, tzMinOffset = null;
+        var pmHour = false;
+                for (var j = 0, jl = groups.length; j < jl; j++) {
+            var matchGroup = match[j+1];
+            if (matchGroup) {
+                switch (groups[j]) {
+                    case 'dd': case 'd':
+                                                date = Date._parseInt(matchGroup);
+                                                if ((date < 1) || (date > 31)) return null;
+                        break;
+                    case 'MMMM':
+                                                month = cultureInfo._getMonthIndex(matchGroup);
+                        if ((month < 0) || (month > 11)) return null;
+                        break;
+                    case 'MMM':
+                                                month = cultureInfo._getAbbrMonthIndex(matchGroup);
+                        if ((month < 0) || (month > 11)) return null;
+                        break;
+                    case 'M': case 'MM':
+                                                var month = Date._parseInt(matchGroup) - 1;
+                        if ((month < 0) || (month > 11)) return null;
+                        break;
+                    case 'y': case 'yy':
+                                                year = Date._expandYear(dtf,Date._parseInt(matchGroup));
+                        if ((year < 0) || (year > 9999)) return null;
+                        break;
+                    case 'yyyy':
+                                                year = Date._parseInt(matchGroup);
+                        if ((year < 0) || (year > 9999)) return null;
+                        break;
+                    case 'h': case 'hh':
+                                                hour = Date._parseInt(matchGroup);
+                        if (hour === 12) hour = 0;
+                        if ((hour < 0) || (hour > 11)) return null;
+                        break;
+                    case 'H': case 'HH':
+                                                hour = Date._parseInt(matchGroup);
+                        if ((hour < 0) || (hour > 23)) return null;
+                        break;
+                    case 'm': case 'mm':
+                                                min = Date._parseInt(matchGroup);
+                        if ((min < 0) || (min > 59)) return null;
+                        break;
+                    case 's': case 'ss':
+                                                sec = Date._parseInt(matchGroup);
+                        if ((sec < 0) || (sec > 59)) return null;
+                        break;
+                    case 'tt': case 't':
+                                                var upperToken = matchGroup.toUpperCase();
+                        pmHour = (upperToken === dtf.PMDesignator.toUpperCase());
+                        if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null;
+                        break;
+                    case 'f':
+                                                msec = Date._parseInt(matchGroup) * 100;
+                        if ((msec < 0) || (msec > 999)) return null;
+                        break;
+                    case 'ff':
+                                                msec = Date._parseInt(matchGroup) * 10;
+                        if ((msec < 0) || (msec > 999)) return null;
+                        break;
+                    case 'fff':
+                                                msec = Date._parseInt(matchGroup);
+                        if ((msec < 0) || (msec > 999)) return null;
+                        break;
+                    case 'dddd':
+                                                weekDay = cultureInfo._getDayIndex(matchGroup);
+                        if ((weekDay < 0) || (weekDay > 6)) return null;
+                        break;
+                    case 'ddd':
+                                                weekDay = cultureInfo._getAbbrDayIndex(matchGroup);
+                        if ((weekDay < 0) || (weekDay > 6)) return null;
+                        break;
+                    case 'zzz':
+                                                var offsets = matchGroup.split(/:/);
+                        if (offsets.length !== 2) return null;
+                        var hourOffset = Date._parseInt(offsets[0]);
+                        if ((hourOffset < -12) || (hourOffset > 13)) return null;
+                        var minOffset = Date._parseInt(offsets[1]);
+                        if ((minOffset < 0) || (minOffset > 59)) return null;
+                        tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset);
+                        break;
+                    case 'z': case 'zz':
+                                                var hourOffset = Date._parseInt(matchGroup);
+                        if ((hourOffset < -12) || (hourOffset > 13)) return null;
+                        tzMinOffset = hourOffset * 60;
+                        break;
+                }
+            }
+        }
+        var result = new Date();
+        if (year === null) {
+            year = result.getFullYear();
+        }
+        if (month === null) {
+            month = result.getMonth();
+        }
+        if (date === null) {
+            date = result.getDate();
+        }
+                result.setFullYear(year, month, date);
+                if (result.getDate() !== date) return null;
+                if ((weekDay !== null) && (result.getDay() !== weekDay)) {
+            return null;
+        }
+                if (pmHour && (hour < 12)) {
+            hour += 12;
+        }
+        result.setHours(hour, min, sec, msec);
+        if (tzMinOffset !== null) {
+                        var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset());
+                                                result.setHours(result.getHours() + parseInt(adjustedMin/60), adjustedMin%60);
+        }
+        return result;
+    }
+}
+
+Date._parseInt = function Date$_parseInt(value) {
+        return parseInt(value.replace(/^[\s0]+(\d+)$/,"$1"));
+}
+
+Date.prototype.format = function Date$format(format) {
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+
+    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
+}
+
+Date.prototype.localeFormat = function Date$localeFormat(format) {
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+
+    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
+}
+
+Date.prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) {
+    if (!format || (format.length === 0) || (format === 'i')) {
+        if (cultureInfo && (cultureInfo.name.length > 0)) {
+            return this.toLocaleString();
+        }
+        else {
+            return this.toString();
+        }
+    }
+
+    var dtf = cultureInfo.dateTimeFormat;
+    format = Date._expandFormat(dtf, format);
+
+        var ret = new Sys.StringBuilder();
+    var hour;
+
+    function addLeadingZero(num) {
+        if (num < 10) {
+            return '0' + num;
+        }
+        return num.toString();
+    }
+
+    function addLeadingZeros(num) {
+        if (num < 10) {
+            return '00' + num;
+        }
+        if (num < 100) {
+            return '0' + num;
+        }
+        return num.toString();
+    }
+
+    var quoteCount = 0;
+    var tokenRegExp = Date._getTokenRegExp();
+    for (;;) {
+
+                var index = tokenRegExp.lastIndex;
+
+                var ar = tokenRegExp.exec(format);
+
+                var preMatch = format.slice(index, ar ? ar.index : format.length);
+        quoteCount += Date._appendPreOrPostMatch(preMatch, ret);
+
+        if (!ar) break;
+
+                if ((quoteCount%2) === 1) {
+            ret.append(ar[0]);
+            continue;
+        }
+
+        switch (ar[0]) {
+        case "dddd":
+                        ret.append(dtf.DayNames[this.getDay()]);
+            break;
+        case "ddd":
+                        ret.append(dtf.AbbreviatedDayNames[this.getDay()]);
+            break;
+        case "dd":
+                        ret.append(addLeadingZero(this.getDate()));
+            break;
+        case "d":
+                        ret.append(this.getDate());
+            break;
+        case "MMMM":
+                        ret.append(dtf.MonthNames[this.getMonth()]);
+            break;
+        case "MMM":
+                        ret.append(dtf.AbbreviatedMonthNames[this.getMonth()]);
+            break;
+        case "MM":
+                        ret.append(addLeadingZero(this.getMonth() + 1));
+            break;
+        case "M":
+                        ret.append(this.getMonth() + 1);
+            break;
+        case "yyyy":
+                        ret.append(this.getFullYear());
+            break;
+        case "yy":
+                        ret.append(addLeadingZero(this.getFullYear() % 100));
+            break;
+        case "y":
+                        ret.append(this.getFullYear() % 100);
+            break;
+        case "hh":
+                        hour = this.getHours() % 12;
+            if (hour === 0) hour = 12;
+            ret.append(addLeadingZero(hour));
+            break;
+        case "h":
+                        hour = this.getHours() % 12;
+            if (hour === 0) hour = 12;
+            ret.append(hour);
+            break;
+        case "HH":
+                        ret.append(addLeadingZero(this.getHours()));
+            break;
+        case "H":
+                        ret.append(this.getHours());
+            break;
+        case "mm":
+                        ret.append(addLeadingZero(this.getMinutes()));
+            break;
+        case "m":
+                        ret.append(this.getMinutes());
+            break;
+        case "ss":
+                        ret.append(addLeadingZero(this.getSeconds()));
+            break;
+        case "s":
+                        ret.append(this.getSeconds());
+            break;
+        case "tt":
+                        ret.append((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator);
+            break;
+        case "t":
+                        ret.append(((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0));
+            break;
+        case "f":
+                        ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0));
+            break;
+        case "ff":
+                        ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2));
+            break;
+        case "fff":
+                        ret.append(addLeadingZeros(this.getMilliseconds()));
+            break;
+        case "z":
+                        hour = this.getTimezoneOffset() / 60;
+            ret.append(((hour >= 0) ? '+' : '-') + Math.floor(Math.abs(hour)));
+            break;
+        case "zz":
+                        hour = this.getTimezoneOffset() / 60;
+            ret.append(((hour >= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))));
+            break;
+        case "zzz":
+                        hour = this.getTimezoneOffset() / 60;
+            ret.append(((hour >= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) +
+                dtf.TimeSeparator + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60)));
+            break;
+        }
+    }
+    return ret.toString();
+}
+Number.__typeName = 'Number';
+Number.__class = true;
+
+Number.parseLocale = function Number$parseLocale(value) {
+    /// <param name="value" type="String"></param>
+    /// <returns type="Number"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String}
+    ]);
+    if (e) throw e;
+
+    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
+}
+Number.parseInvariant = function Number$parseInvariant(value) {
+    /// <param name="value" type="String"></param>
+    /// <returns type="Number"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String}
+    ]);
+    if (e) throw e;
+
+    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
+}
+Number._parse = function Number$_parse(value, cultureInfo) {
+            var valueStr = value.trim();
+    if (valueStr.match(/infinity/i) !== null) {
+        return parseFloat(valueStr);
+    }
+    if (valueStr.match(/^0x[a-f0-9]+$/i) !== null) {
+        return parseInt(valueStr);
+    }
+    var numFormat = cultureInfo.numberFormat;
+    var decSeparator = numFormat.NumberDecimalSeparator;
+    var grpSeparator = numFormat.NumberGroupSeparator;
+
+            var numberFormatRegex = new RegExp("^[+-]?[\\d\\" + grpSeparator + "]*\\" + decSeparator + "?\\d*([eE][+-]?\\d+)?$");
+    if (!valueStr.match(numberFormatRegex)) {
+        return Number.NaN;
+    }
+
+        valueStr = valueStr.split(grpSeparator).join("");
+
+        valueStr = valueStr.replace(decSeparator, ".");
+
+    return parseFloat(valueStr);
+}
+
+Number.prototype.format = function Number$format(format) {
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+
+    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
+}
+Number.prototype.localeFormat = function Number$localeFormat(format) {
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+
+    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
+}
+Number.prototype._toFormattedString = function Number$_toFormattedString(format, cultureInfo) {
+    if (!format || (format.length === 0) || (format === 'i')) {
+        if (cultureInfo && (cultureInfo.name.length > 0)) {
+            return this.toLocaleString();
+        }
+        else {
+            return this.toString();
+        }
+    }
+
+        var _percentPositivePattern = ["n %", "n%", "%n" ];
+    var _percentNegativePattern = ["-n %", "-n%", "-%n"];
+    var _numberNegativePattern = ["(n)","-n","- n","n-","n -"];
+    var _currencyPositivePattern = ["$n","n$","$ n","n $"];
+    var _currencyNegativePattern = ["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];
+
+        function expandNumber(number, precision, groupSizes, sep, decimalChar) {
+        
+        var curSize = groupSizes[0];
+        var curGroupIndex = 1;
+
+                var numberString = number.toString();
+        var right = "";
+        var exponent = "";
+                var decimalSplit = numberString.split('.');
+        if (decimalSplit.length > 1) {
+            numberString = decimalSplit[0];
+            right = decimalSplit[1];
+                        var exponentSplit = right.split(/e/i);
+            if (exponentSplit.length > 1) {
+                right = exponentSplit[0];
+                exponent = "e" + exponentSplit[1];
+            }
+        }
+
+                if (precision > 0) {
+                        var rightDifference = right.length - precision;
+            if (rightDifference > 0) {
+                right = right.slice(0, precision);
+            } else if (rightDifference < 0) {
+                for (var i=0; i<Math.abs(rightDifference); i++) {
+                    right += '0';
+                }
+            }
+
+                        right = decimalChar + right;
+        }
+        else {             right = "";
+        }
+        right += exponent;
+
+        var stringIndex = numberString.length-1;
+        var ret = "";
+        while (stringIndex >= 0) {
+
+                        if (curSize === 0 || curSize > stringIndex) {
+                if (ret.length > 0)
+                    return numberString.slice(0, stringIndex + 1) + sep + ret + right;
+                else
+                    return numberString.slice(0, stringIndex + 1) + right;
+            }
+
+            if (ret.length > 0)
+                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1) + sep + ret;
+            else
+                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1);
+
+            stringIndex -= curSize;
+
+            if (curGroupIndex < groupSizes.length) {
+                curSize = groupSizes[curGroupIndex];
+                curGroupIndex++;
+            }
+        }
+        return numberString.slice(0, stringIndex + 1) + sep + ret + right;
+    }
+    var nf = cultureInfo.numberFormat;
+
+        var number = Math.abs(this);
+
+        if (!format)
+        format = "D";
+
+    var precision = -1;
+    if (format.length > 1) precision = parseInt(format.slice(1));
+
+    var pattern;
+    switch (format.charAt(0)) {
+    case "d":
+    case "D":
+        pattern = 'n';
+
+                if (precision !== -1) {
+            var numberStr = ""+number;
+            var zerosToAdd = precision - numberStr.length;
+            if (zerosToAdd > 0) {
+                for (var i=0; i<zerosToAdd; i++) {
+                    numberStr = '0'+numberStr;
+                }
+            }
+            number = numberStr;
+        }
+
+                if (this < 0) number = -number;
+        break;
+    case "c":
+    case "C":
+        if (this < 0) pattern = _currencyNegativePattern[nf.CurrencyNegativePattern];
+        else pattern = _currencyPositivePattern[nf.CurrencyPositivePattern];
+        if (precision === -1) precision = nf.CurrencyDecimalDigits;
+        number = expandNumber(Math.abs(this), precision, nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, nf.CurrencyDecimalSeparator);
+        break;
+    case "n":
+    case "N":
+        if (this < 0) pattern = _numberNegativePattern[nf.NumberNegativePattern];
+        else pattern = 'n';
+        if (precision === -1) precision = nf.NumberDecimalDigits;
+        number = expandNumber(Math.abs(this), precision, nf.NumberGroupSizes, nf.NumberGroupSeparator, nf.NumberDecimalSeparator);
+        break;
+    case "p":
+    case "P":
+        if (this < 0) pattern = _percentNegativePattern[nf.PercentNegativePattern];
+        else pattern = _percentPositivePattern[nf.PercentPositivePattern];
+        if (precision === -1) precision = nf.PercentDecimalDigits;
+        number = expandNumber(Math.abs(this), precision, nf.PercentGroupSizes, nf.PercentGroupSeparator, nf.PercentDecimalSeparator);
+        break;
+    default:
+        throw Error.format(Sys.Res.formatBadFormatSpecifier);
+    }
+
+    var regex = /n|\$|-|%/g;
+
+        var ret = "";
+
+    for (;;) {
+
+                var index = regex.lastIndex;
+
+                var ar = regex.exec(pattern);
+
+                ret += pattern.slice(index, ar ? ar.index : pattern.length);
+
+        if (!ar)
+            break;
+
+        switch (ar[0]) {
+        case "n":
+            ret += number;
+            break;
+        case "$":
+            ret += nf.CurrencySymbol;
+            break;
+        case "-":
+            ret += nf.NegativeSign;
+            break;
+        case "%":
+            ret += nf.PercentSymbol;
+            break;
+        }
+    }
+
+    return ret;
+}
+RegExp.__typeName = 'RegExp';
+RegExp.__class = true;
+Array.__typeName = 'Array';
+Array.__class = true;
+
+Array.add = Array.enqueue = function Array$enqueue(array, item) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+
+        array[array.length] = item;
+}
+
+Array.addRange = function Array$addRange(array, items) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="items" type="Array" elementMayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "items", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+
+
+        array.push.apply(array, items);
+}
+
+Array.clear = function Array$clear(array) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    array.length = 0;
+}
+
+Array.clone = function Array$clone(array) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <returns type="Array" elementMayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if (array.length === 1) {
+        return [array[0]];
+    }
+    else {
+                        return Array.apply(null, array);
+    }
+}
+
+Array.contains = function Array$contains(array, item) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    return (Array.indexOf(array, item) >= 0);
+}
+
+Array.dequeue = function Array$dequeue(array) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <returns mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    return array.shift();
+}
+
+Array.forEach = function Array$forEach(array, method, instance) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="method" type="Function"></param>
+    /// <param name="instance" optional="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "method", type: Function},
+        {name: "instance", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    for (var i = 0, l = array.length; i < l; i++) {
+        var elt = array[i];
+        if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array);
+    }
+}
+
+Array.indexOf = function Array$indexOf(array, item, start) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" optional="true" mayBeNull="true"></param>
+    /// <param name="start" optional="true" mayBeNull="true"></param>
+    /// <returns type="Number"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true, optional: true},
+        {name: "start", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    if (typeof(item) === "undefined") return -1;
+    var length = array.length;
+    if (length !== 0) {
+                start = start - 0;
+                if (isNaN(start)) {
+            start = 0;
+        }
+        else {
+                                    if (isFinite(start)) {
+                                start = start - (start % 1);
+            }
+                        if (start < 0) {
+                start = Math.max(0, length + start);
+            }
+        }
+
+                for (var i = start; i < length; i++) {
+            if ((typeof(array[i]) !== "undefined") && (array[i] === item)) {
+                return i;
+            }
+        }
+    }
+    return -1;
+}
+
+Array.insert = function Array$insert(array, index, item) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="index" mayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "index", mayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    array.splice(index, 0, item);
+}
+
+Array.parse = function Array$parse(value) {
+    /// <param name="value" type="String" mayBeNull="true"></param>
+    /// <returns type="Array" elementMayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String, mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if (!value) return [];
+    var v = eval(value);
+    if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat);
+    return v;
+}
+
+Array.remove = function Array$remove(array, item) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    var index = Array.indexOf(array, item);
+    if (index >= 0) {
+        array.splice(index, 1);
+    }
+    return (index >= 0);
+}
+
+Array.removeAt = function Array$removeAt(array, index) {
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="index" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "index", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    array.splice(index, 1);
+}
+String.__typeName = 'String';
+String.__class = true;
+
+String.prototype.endsWith = function String$endsWith(suffix) {
+    /// <param name="suffix" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "suffix", type: String}
+    ]);
+    if (e) throw e;
+
+    return (this.substr(this.length - suffix.length) === suffix);
+}
+
+String.prototype.startsWith = function String$startsWith(prefix) {
+    /// <param name="prefix" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "prefix", type: String}
+    ]);
+    if (e) throw e;
+
+    return (this.substr(0, prefix.length) === prefix);
+}
+
+String.prototype.trim = function String$trim() {
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return this.replace(/^\s+|\s+$/g, '');
+}
+
+String.prototype.trimEnd = function String$trimEnd() {
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return this.replace(/\s+$/, '');
+}
+
+String.prototype.trimStart = function String$trimStart() {
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return this.replace(/^\s+/, '');
+}
+
+String.format = function String$format(format, args) {
+    /// <param name="format" type="String"></param>
+    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String},
+        {name: "args", mayBeNull: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+
+    return String._toFormattedString(false, arguments);
+}
+
+String.localeFormat = function String$localeFormat(format, args) {
+    /// <param name="format" type="String"></param>
+    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String},
+        {name: "args", mayBeNull: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+
+    return String._toFormattedString(true, arguments);
+}
+
+String._toFormattedString = function String$_toFormattedString(useLocale, args) {
+    var result = '';
+    var format = args[0];
+
+    for (var i=0;;) {
+                var open = format.indexOf('{', i);
+        var close = format.indexOf('}', i);
+        if ((open < 0) && (close < 0)) {
+                        result += format.slice(i);
+            break;
+        }
+        if ((close > 0) && ((close < open) || (open < 0))) {
+                        if (format.charAt(close + 1) !== '}') {
+                throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
+            }
+            result += format.slice(i, close + 1);
+            i = close + 2;
+            continue;
+        }
+
+                result += format.slice(i, open);
+        i = open + 1;
+
+                if (format.charAt(i) === '{') {
+            result += '{';
+            i++;
+            continue;
+        }
+
+                if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
+
+        
+                var brace = format.substring(i, close);
+        var colonIndex = brace.indexOf(':');
+        var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex)) + 1;
+        if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid);
+        var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1);
+
+        var arg = args[argNumber];
+        if (typeof(arg) === "undefined" || arg === null) {
+            arg = '';
+        }
+
+                if (arg.toFormattedString) {
+            result += arg.toFormattedString(argFormat);
+        }
+        else if (useLocale && arg.localeFormat) {
+            result += arg.localeFormat(argFormat);
+        }
+        else if (arg.format) {
+            result += arg.format(argFormat);
+        }
+        else
+            result += arg.toString();
+
+        i = close + 1;
+    }
+
+    return result;
+}
+
+Type.registerNamespace('Sys');
+Sys.IDisposable = function Sys$IDisposable() {
+    throw Error.notImplemented();
+}
+
+    function Sys$IDisposable$dispose() {
+        throw Error.notImplemented();
+    }
+Sys.IDisposable.prototype = {
+    dispose: Sys$IDisposable$dispose
+}
+Sys.IDisposable.registerInterface('Sys.IDisposable');
+Sys.StringBuilder = function Sys$StringBuilder(initialText) {
+    /// <param name="initialText" optional="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "initialText", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ?
+        [initialText.toString()] : [];
+    this._value = {};
+    this._len = 0;
+}
+
+
+    function Sys$StringBuilder$append(text) {
+        /// <param name="text" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "text", mayBeNull: true}
+        ]);
+        if (e) throw e;
+
+        this._parts[this._parts.length] = text;
+    }
+
+    function Sys$StringBuilder$appendLine(text) {
+        /// <param name="text" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "text", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+        this._parts[this._parts.length] =
+            ((typeof(text) === 'undefined') || (text === null) || (text === '')) ?
+            '\r\n' : text + '\r\n';
+    }
+
+    function Sys$StringBuilder$clear() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        this._parts = [];
+        this._value = {};
+        this._len = 0;
+    }
+
+    function Sys$StringBuilder$isEmpty() {
+        /// <returns type="Boolean"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._parts.length === 0) return true;
+        return this.toString() === '';
+    }
+
+
+
+    function Sys$StringBuilder$toString(separator) {
+        /// <param name="separator" type="String" optional="true" mayBeNull="true"></param>
+        /// <returns type="String"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "separator", type: String, mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+        separator = separator || '';
+        var parts = this._parts;
+        if (this._len !== parts.length) {
+            this._value = {};
+            this._len = parts.length;
+        }
+        var val = this._value;
+        if (typeof(val[separator]) === 'undefined') {
+                        if (separator !== '') {
+                for (var i = 0; i < parts.length;) {
+                    if ((typeof(parts[i]) === 'undefined') || (parts[i] === '') || (parts[i] === null)) {
+                        parts.splice(i, 1);
+                    }
+                    else {
+                        i++;
+                    }
+                }
+            }
+            val[separator] = this._parts.join(separator);
+        }
+        return val[separator];
+    }
+Sys.StringBuilder.prototype = {
+    append: Sys$StringBuilder$append,
+
+    appendLine: Sys$StringBuilder$appendLine,
+
+    clear: Sys$StringBuilder$clear,
+
+    isEmpty: Sys$StringBuilder$isEmpty,
+
+            toString: Sys$StringBuilder$toString
+}
+Sys.StringBuilder.registerClass('Sys.StringBuilder');
+if (!window.XMLHttpRequest) {
+    window.XMLHttpRequest = function window$XMLHttpRequest() {
+        var progIDs = [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ];
+	    
+        for (var i = 0; i < progIDs.length; i++) {
+            try {
+                var xmlHttp = new ActiveXObject(progIDs[i]);
+                return xmlHttp;
+            }
+            catch (ex) {
+            }
+        }
+	    
+        return null;
+    }
+}
+
+Sys.Browser = {};
+
+Sys.Browser.InternetExplorer = {};
+Sys.Browser.Firefox = {};
+Sys.Browser.Safari = {};
+Sys.Browser.Opera = {};
+
+Sys.Browser.agent = null;
+Sys.Browser.hasDebuggerStatement = false;
+Sys.Browser.name = navigator.appName;
+Sys.Browser.version = parseFloat(navigator.appVersion);
+
+if (navigator.userAgent.indexOf(' MSIE ') > -1) {
+    Sys.Browser.agent = Sys.Browser.InternetExplorer;
+    Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);
+    Sys.Browser.hasDebuggerStatement = true;
+}
+else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
+    Sys.Browser.agent = Sys.Browser.Firefox;
+    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]);
+    Sys.Browser.name = 'Firefox';
+    Sys.Browser.hasDebuggerStatement = true;
+}
+else if (navigator.userAgent.indexOf(' Safari/') > -1) {
+    Sys.Browser.agent = Sys.Browser.Safari;
+    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d+\.\d+)/)[1]);
+    Sys.Browser.name = 'Safari';
+}
+else if (navigator.userAgent.indexOf('Opera/') > -1) {
+    Sys.Browser.agent = Sys.Browser.Opera;
+}
+
+
+Type.registerNamespace('Sys.UI');
+
+Sys._Debug = function Sys$_Debug() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+
+
+    function Sys$_Debug$_appendConsole(text) {
+                if ((typeof(Debug) !== 'undefined') && Debug.writeln) {
+            Debug.writeln(text);
+        }
+                if (window.console && window.console.log) {
+            window.console.log(text);
+        }
+                if (window.opera) {
+            window.opera.postError(text);
+        }
+                if (window.debugService) {
+            window.debugService.trace(text);
+        }
+    }
+
+    function Sys$_Debug$_appendTrace(text) {
+        var traceElement = document.getElementById('TraceConsole');
+        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
+            traceElement.value += text + '\n';
+        }
+    }
+
+    function Sys$_Debug$assert(condition, message, displayCaller) {
+        /// <param name="condition" type="Boolean"></param>
+        /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="displayCaller" type="Boolean" optional="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "condition", type: Boolean},
+            {name: "message", type: String, mayBeNull: true, optional: true},
+            {name: "displayCaller", type: Boolean, optional: true}
+        ]);
+        if (e) throw e;
+
+        if (!condition) {
+            message = (displayCaller && this.assert.caller) ?
+                String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) :
+                String.format(Sys.Res.assertFailed, message);
+
+            if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) {
+                this.fail(message);
+            }
+        }
+    }
+
+    function Sys$_Debug$clearTrace() {
+        var traceElement = document.getElementById('TraceConsole');
+        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
+            traceElement.value = '';
+        }
+    }
+
+    function Sys$_Debug$fail(message) {
+        /// <param name="message" type="String" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "message", type: String, mayBeNull: true}
+        ]);
+        if (e) throw e;
+
+        this._appendConsole(message);
+
+                if (Sys.Browser.hasDebuggerStatement) {
+            eval('debugger');
+        }
+    }
+
+    function Sys$_Debug$trace(text) {
+        /// <param name="text"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "text"}
+        ]);
+        if (e) throw e;
+
+        this._appendConsole(text);
+        this._appendTrace(text);
+    }
+
+    function Sys$_Debug$traceDump(object, name) {
+        /// <param name="object" mayBeNull="true"></param>
+        /// <param name="name" type="String" mayBeNull="true" optional="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "object", mayBeNull: true},
+            {name: "name", type: String, mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+        var text = this._traceDump(object, name, true);
+    }
+
+    function Sys$_Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) {
+        name = name? name : 'traceDump';
+        indentationPadding = indentationPadding? indentationPadding : '';
+        if (object === null) {
+            this.trace(indentationPadding + name + ': null');
+            return;
+        }
+        switch(typeof(object)) {
+            case 'undefined':
+                this.trace(indentationPadding + name + ': Undefined');
+                break;
+            case 'number': case 'string': case 'boolean':
+                this.trace(indentationPadding + name + ': ' + object);
+                break;
+            default:
+                if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) {
+                    this.trace(indentationPadding + name + ': ' + object.toString());
+                    break;
+                }
+                if (!loopArray) {
+                    loopArray = [];
+                }
+                else if (Array.contains(loopArray, object)) {
+                    this.trace(indentationPadding + name + ': ...');
+                    return;
+                }
+                Array.add(loopArray, object);
+
+                                                                if ((object == window) || (object === document) ||
+                    (window.HTMLElement && (object instanceof HTMLElement)) ||
+                    (typeof(object.nodeName) === 'string')) {
+                    var tag = object.tagName? object.tagName : 'DomElement';
+                    if (object.id) {
+                        tag += ' - ' + object.id;
+                    }
+                    this.trace(indentationPadding + name + ' {' +  tag + '}');
+                }
+                                else {
+                    var typeName = Object.getTypeName(object);
+                    this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : ''));
+                    if ((indentationPadding === '') || recursive) {
+                        indentationPadding += "    ";
+                        var i, length, properties, p, v;
+                        if (Array.isInstanceOfType(object)) {
+                            length = object.length;
+                            for (i = 0; i < length; i++) {
+                                this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray);
+                            }
+                        }
+                        else {
+                            for (p in object) {
+                                v = object[p];
+                                if (!Function.isInstanceOfType(v)) {
+                                    this._traceDump(v, p, recursive, indentationPadding, loopArray);
+                                }
+                            }
+                        }
+                    }
+                }
+                Array.remove(loopArray, object);
+        }
+    }
+Sys._Debug.prototype = {
+
+    _appendConsole: Sys$_Debug$_appendConsole,
+
+    _appendTrace: Sys$_Debug$_appendTrace,
+
+    assert: Sys$_Debug$assert,
+
+    clearTrace: Sys$_Debug$clearTrace,
+
+    fail: Sys$_Debug$fail,
+
+    trace: Sys$_Debug$trace,
+
+    traceDump: Sys$_Debug$traceDump,
+
+    _traceDump: Sys$_Debug$_traceDump
+}
+Sys._Debug.registerClass('Sys._Debug');
+
+Sys.Debug = new Sys._Debug();
+    Sys.Debug.isDebug = true;
+function Sys$Enum$parse(value, ignoreCase) {
+    /// <param name="value" type="String"></param>
+    /// <param name="ignoreCase" type="Boolean" optional="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String},
+        {name: "ignoreCase", type: Boolean, optional: true}
+    ]);
+    if (e) throw e;
+
+    var values, parsed, val;
+    if (ignoreCase) {
+        values = this.__lowerCaseValues;
+        if (!values) {
+            this.__lowerCaseValues = values = {};
+            var prototype = this.prototype;
+            for (var name in prototype) {
+                values[name.toLowerCase()] = prototype[name];
+            }
+        }
+    }
+    else {
+        values = this.prototype;
+    }
+    if (!this.__flags) {
+        val = (ignoreCase ? value.toLowerCase() : value);
+        parsed = values[val.trim()];
+        if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
+        return parsed;
+    }
+    else {
+        var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
+        var v = 0;
+
+        for (var i = parts.length - 1; i >= 0; i--) {
+            var part = parts[i].trim();
+            parsed = values[part];
+            if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName));
+            v |= parsed;
+        }
+        return v;
+    }
+}
+
+function Sys$Enum$toString(value) {
+    /// <param name="value" optional="true" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+            if ((typeof(value) === 'undefined') || (value === null)) return this.__string;
+    if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this);
+    var values = this.prototype;
+    var i;
+    if (!this.__flags || (value === 0)) {
+        for (i in values) {
+            if (values[i] === value) {
+                return i;
+            }
+        }
+    }
+    else {
+        var sorted = this.__sortedValues;
+        if (!sorted) {
+            sorted = [];
+            for (i in values) {
+                sorted[sorted.length] = {key: i, value: values[i]};
+            }
+            sorted.sort(function(a, b) {
+                return a.value - b.value;
+            });
+            this.__sortedValues = sorted;
+        }
+        var parts = [];
+        var v = value;
+        for (i = sorted.length - 1; i >= 0; i--) {
+            var kvp = sorted[i];
+            var vali = kvp.value;
+            if (vali === 0) continue;
+            if ((vali & value) === vali) {
+                parts[parts.length] = kvp.key;
+                v -= vali;
+                if (v === 0) break;
+            }
+        }
+        if (parts.length && v === 0) return parts.reverse().join(', ');
+    }
+    throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
+}
+
+Type.prototype.registerEnum = function Type$registerEnum(name, flags) {
+    /// <param name="name" type="String"></param>
+    /// <param name="flags" type="Boolean" optional="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "name", type: String},
+        {name: "flags", type: Boolean, optional: true}
+    ]);
+    if (e) throw e;
+
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName);
+        var parsedName;
+    try {
+        parsedName = eval(name);
+    }
+    catch(e) {
+        throw Error.argument('name', Sys.Res.argumentTypeName);
+    }
+    if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName);
+    if (window.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name));
+    for (var i in this.prototype) {
+        var val = this.prototype[i];
+        if (!Type.__identifierRegExp.test(i)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, i));
+        if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger);
+        if (typeof(this[i]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, i));
+    }
+    for (var i in this.prototype) {
+        this[i] = this.prototype[i];
+    }
+    this.__typeName = name;
+    this.parse = Sys$Enum$parse;
+    this.__string = this.toString();
+    this.toString = Sys$Enum$toString;
+    this.__flags = flags;
+    this.__enum = true;
+    window.__registeredTypes[name] = true;
+}
+
+Type.isEnum = function Type$isEnum(type) {
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__enum;
+}
+
+Type.isFlags = function Type$isFlags(type) {
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__flags;
+}
+Sys.EventHandlerList = function Sys$EventHandlerList() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    this._list = {};
+}
+
+
+    function Sys$EventHandlerList$addHandler(id, handler) {
+        /// <param name="id" type="String"></param>
+        /// <param name="handler" type="Function"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String},
+            {name: "handler", type: Function}
+        ]);
+        if (e) throw e;
+
+        Array.add(this._getEvent(id, true), handler);
+    }
+    function Sys$EventHandlerList$removeHandler(id, handler) {
+        /// <param name="id" type="String"></param>
+        /// <param name="handler" type="Function"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String},
+            {name: "handler", type: Function}
+        ]);
+        if (e) throw e;
+
+        var evt = this._getEvent(id);
+        if (!evt) return;
+        Array.remove(evt, handler);
+    }
+    function Sys$EventHandlerList$getHandler(id) {
+        /// <param name="id" type="String"></param>
+        /// <returns type="Function"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String}
+        ]);
+        if (e) throw e;
+
+        var evt = this._getEvent(id);
+        if (!evt || (evt.length === 0)) return null;
+        evt = Array.clone(evt);
+        if (!evt._handler) {
+            evt._handler = function(source, args) {
+                for (var i = 0, l = evt.length; i < l; i++) {
+                    evt[i](source, args);
+                }
+            };
+        }
+        return evt._handler;
+    }
+
+    function Sys$EventHandlerList$_getEvent(id, create) {
+        if (!this._list[id]) {
+            if (!create) return null;
+            this._list[id] = [];
+        }
+        return this._list[id];
+    }
+Sys.EventHandlerList.prototype = {
+    addHandler: Sys$EventHandlerList$addHandler,
+    removeHandler: Sys$EventHandlerList$removeHandler,
+    getHandler: Sys$EventHandlerList$getHandler,
+
+    _getEvent: Sys$EventHandlerList$_getEvent
+}
+Sys.EventHandlerList.registerClass('Sys.EventHandlerList');
+Sys.EventArgs = function Sys$EventArgs() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+Sys.EventArgs.registerClass('Sys.EventArgs');
+
+Sys.EventArgs.Empty = new Sys.EventArgs();
+Sys.CancelEventArgs = function Sys$CancelEventArgs() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    Sys.CancelEventArgs.initializeBase(this);
+
+    this._cancel = false;
+}
+
+
+    function Sys$CancelEventArgs$get_cancel() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._cancel;
+    }
+    function Sys$CancelEventArgs$set_cancel(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+
+        this._cancel = value;
+    }
+Sys.CancelEventArgs.prototype = {
+    get_cancel: Sys$CancelEventArgs$get_cancel,
+    set_cancel: Sys$CancelEventArgs$set_cancel
+}
+
+Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
+Sys.INotifyPropertyChange = function Sys$INotifyPropertyChange() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+
+    function Sys$INotifyPropertyChange$add_propertyChanged(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+    function Sys$INotifyPropertyChange$remove_propertyChanged(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+Sys.INotifyPropertyChange.prototype = {
+    add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged,
+    remove_propertyChanged: Sys$INotifyPropertyChange$remove_propertyChanged
+}
+Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange');
+Sys.PropertyChangedEventArgs = function Sys$PropertyChangedEventArgs(propertyName) {
+    /// <param name="propertyName" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "propertyName", type: String}
+    ]);
+    if (e) throw e;
+
+    Sys.PropertyChangedEventArgs.initializeBase(this);
+    this._propertyName = propertyName;
+}
+ 
+    function Sys$PropertyChangedEventArgs$get_propertyName() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._propertyName;
+    }
+Sys.PropertyChangedEventArgs.prototype = {
+    get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName
+}
+Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs);
+Sys.INotifyDisposing = function Sys$INotifyDisposing() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+
+    function Sys$INotifyDisposing$add_disposing(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+    function Sys$INotifyDisposing$remove_disposing(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+Sys.INotifyDisposing.prototype = {
+    add_disposing: Sys$INotifyDisposing$add_disposing,
+    remove_disposing: Sys$INotifyDisposing$remove_disposing
+}
+Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");
+Sys.Component = function Sys$Component() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    if (Sys.Application) Sys.Application.registerDisposableObject(this);
+}
+
+
+
+
+
+    function Sys$Component$get_events() {
+        /// <value type="Sys.EventHandlerList"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+    function Sys$Component$get_id() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._id;
+    }
+    function Sys$Component$set_id(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+
+        if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
+        this._idSet = true;
+        var oldId = this.get_id();
+        if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
+        this._id = value;
+    }
+    function Sys$Component$get_isInitialized() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._initialized;
+    }
+    function Sys$Component$get_isUpdating() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._updating;
+    }
+    function Sys$Component$add_disposing(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().addHandler("disposing", handler);
+    }
+    function Sys$Component$remove_disposing(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().removeHandler("disposing", handler);
+    }
+    function Sys$Component$add_propertyChanged(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().addHandler("propertyChanged", handler);
+    }
+    function Sys$Component$remove_propertyChanged(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().removeHandler("propertyChanged", handler);
+    }
+    function Sys$Component$beginUpdate() {
+        this._updating = true;
+    }
+    function Sys$Component$dispose() {
+        if (this._events) {
+            var handler = this._events.getHandler("disposing");
+            if (handler) {
+                handler(this, Sys.EventArgs.Empty);
+            }
+        }
+        delete this._events;
+        Sys.Application.unregisterDisposableObject(this);
+        Sys.Application.removeComponent(this);
+    }
+    function Sys$Component$endUpdate() {
+        this._updating = false;
+        if (!this._initialized) this.initialize();
+        this.updated();
+    }
+    function Sys$Component$initialize() {
+        this._initialized = true;
+    }
+    function Sys$Component$raisePropertyChanged(propertyName) {
+        /// <param name="propertyName" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "propertyName", type: String}
+        ]);
+        if (e) throw e;
+
+        if (!this._events) return;
+        var handler = this._events.getHandler("propertyChanged");
+        if (handler) {
+            handler(this, new Sys.PropertyChangedEventArgs(propertyName));
+        }
+    }
+    function Sys$Component$updated() {
+    }
+Sys.Component.prototype = {
+    _id: null,
+    _idSet: false,
+    _initialized: false,
+    _updating: false,
+    get_events: Sys$Component$get_events,
+    get_id: Sys$Component$get_id,
+    set_id: Sys$Component$set_id,
+    get_isInitialized: Sys$Component$get_isInitialized,
+    get_isUpdating: Sys$Component$get_isUpdating,
+    add_disposing: Sys$Component$add_disposing,
+    remove_disposing: Sys$Component$remove_disposing,
+    add_propertyChanged: Sys$Component$add_propertyChanged,
+    remove_propertyChanged: Sys$Component$remove_propertyChanged,
+    beginUpdate: Sys$Component$beginUpdate,
+    dispose: Sys$Component$dispose,
+    endUpdate: Sys$Component$endUpdate,
+    initialize: Sys$Component$initialize,
+    raisePropertyChanged: Sys$Component$raisePropertyChanged,
+    updated: Sys$Component$updated
+}
+Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing);
+
+function Sys$Component$_setProperties(target, properties) {
+    /// <param name="target"></param>
+    /// <param name="properties"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "target"},
+        {name: "properties"}
+    ]);
+    if (e) throw e;
+
+    var current;
+    var targetType = Object.getType(target);
+    var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement);
+    var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating();
+    if (isComponent) target.beginUpdate();
+    for (var name in properties) {
+        var val = properties[name];
+        var getter = isObject ? null : target["get_" + name];
+        if (isObject || typeof(getter) !== 'function') {
+                        var targetVal = target[name];
+            if (!isObject && typeof(targetVal) === 'undefined') throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, name));
+            if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) {
+                target[name] = val;
+            }
+            else {
+                Sys$Component$_setProperties(targetVal, val);
+            }
+        }
+        else {
+            var setter = target["set_" + name];
+            if (typeof(setter) === 'function') {
+                                setter.apply(target, [val]);
+            }
+            else if (val instanceof Array) {
+                                current = getter.apply(target);
+                if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
+                for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) {
+                    current[j] = val[i];
+                }
+            }
+            else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) {
+                                current = getter.apply(target);
+                if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name));
+                Sys$Component$_setProperties(current, val);
+            }
+            else {
+                                throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
+            }
+        }
+    }
+    if (isComponent) target.endUpdate();
+}
+
+function Sys$Component$_setReferences(component, references) {
+    for (var name in references) {
+        var setter = component["set_" + name];
+        var reference = $find(references[name]);
+        if (typeof(setter) !== 'function') throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
+        if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, references[name]));
+        setter.apply(component, [reference]);
+    }
+}
+
+var $create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) {
+    /// <param name="type" type="Type"></param>
+    /// <param name="properties" optional="true" mayBeNull="true"></param>
+    /// <param name="events" optional="true" mayBeNull="true"></param>
+    /// <param name="references" optional="true" mayBeNull="true"></param>
+    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
+    /// <returns type="Sys.UI.Component"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", type: Type},
+        {name: "properties", mayBeNull: true, optional: true},
+        {name: "events", mayBeNull: true, optional: true},
+        {name: "references", mayBeNull: true, optional: true},
+        {name: "element", mayBeNull: true, domElement: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    if (!type.inheritsFrom(Sys.Component)) {
+        throw Error.argument('type', String.format(Sys.Res.createNotComponent, type.getName()));
+    }
+    if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
+        if (!element) throw Error.argument('element', Sys.Res.createNoDom);
+    }
+    else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom);
+    var component = (element ? new type(element): new type());
+    var app = Sys.Application;
+    var creatingComponents = app.get_isCreatingComponents();
+
+    component.beginUpdate();
+    if (properties) {
+        Sys$Component$_setProperties(component, properties);
+    }
+    if (events) {
+        for (var name in events) {
+            if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name));
+            if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction);
+            component["add_" + name](events[name]);
+        }
+    }
+
+    app._createdComponents[app._createdComponents.length] = component;
+    if (component.get_id()) {
+        app.addComponent(component);
+    }
+    if (creatingComponents) {
+        if (references) {
+            app._addComponentToSecondPass(component, references);
+        }
+        else {
+            component.endUpdate();
+        }
+    }
+    else {
+        if (references) {
+            Sys$Component$_setReferences(component, references);
+        }
+        component.endUpdate();
+    }
+
+    return component;
+}
+Sys.UI.MouseButton = function Sys$UI$MouseButton() {
+    /// <field name="leftButton" type="Number" integer="true" static="true"></field>
+    /// <field name="middleButton" type="Number" integer="true" static="true"></field>
+    /// <field name="rightButton" type="Number" integer="true" static="true"></field>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+
+
+
+
+Sys.UI.MouseButton.prototype = {
+    leftButton: 0,
+    middleButton: 1,
+    rightButton: 2
+}
+Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");
+Sys.UI.Key = function Sys$UI$Key() {
+    /// <field name="backspace" type="Number" integer="true" static="true"></field>
+    /// <field name="tab" type="Number" integer="true" static="true"></field>
+    /// <field name="enter" type="Number" integer="true" static="true"></field>
+    /// <field name="esc" type="Number" integer="true" static="true"></field>
+    /// <field name="space" type="Number" integer="true" static="true"></field>
+    /// <field name="pageUp" type="Number" integer="true" static="true"></field>
+    /// <field name="pageDown" type="Number" integer="true" static="true"></field>
+    /// <field name="end" type="Number" integer="true" static="true"></field>
+    /// <field name="home" type="Number" integer="true" static="true"></field>
+    /// <field name="left" type="Number" integer="true" static="true"></field>
+    /// <field name="up" type="Number" integer="true" static="true"></field>
+    /// <field name="right" type="Number" integer="true" static="true"></field>
+    /// <field name="down" type="Number" integer="true" static="true"></field>
+    /// <field name="del" type="Number" integer="true" static="true"></field>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sys.UI.Key.prototype = {
+    backspace: 8,
+    tab: 9,
+    enter: 13,
+    esc: 27,
+    space: 32,
+    pageUp: 33,
+    pageDown: 34,
+    end: 35,
+    home: 36,
+    left: 37,
+    up: 38,
+    right: 39,
+    down: 40,
+    del: 127
+}
+Sys.UI.Key.registerEnum("Sys.UI.Key");
+Sys.UI.DomEvent = function Sys$UI$DomEvent(eventObject) {
+    /// <param name="eventObject"></param>
+    /// <field name="altKey" type="Boolean"></field>
+    /// <field name="button" type="Sys.UI.MouseButton"></field>
+    /// <field name="charCode" type="Number" integer="true"></field>
+    /// <field name="clientX" type="Number" integer="true"></field>
+    /// <field name="clientY" type="Number" integer="true"></field>
+    /// <field name="ctrlKey" type="Boolean"></field>
+    /// <field name="keyCode" type="Number" integer="true"></field>
+    /// <field name="offsetX" type="Number" integer="true"></field>
+    /// <field name="offsetY" type="Number" integer="true"></field>
+    /// <field name="screenX" type="Number" integer="true"></field>
+    /// <field name="screenY" type="Number" integer="true"></field>
+    /// <field name="shiftKey" type="Boolean"></field>
+    /// <field name="target" domElement="true"></field>
+    /// <field name="type" type="String"></field>
+    var e = Function._validateParams(arguments, [
+        {name: "eventObject"}
+    ]);
+    if (e) throw e;
+
+    var e = eventObject;
+    this.rawEvent = e;
+    this.altKey = e.altKey;
+    if (typeof(e.button) !== 'undefined') {
+        this.button = (typeof(e.which) !== 'undefined') ? e.button :
+            (e.button === 4) ? Sys.UI.MouseButton.middleButton :
+            (e.button === 2) ? Sys.UI.MouseButton.rightButton :
+            Sys.UI.MouseButton.leftButton;
+    }
+    if (e.type === 'keypress') {
+        this.charCode = e.charCode || e.keyCode;
+    }
+    else if (e.keyCode && (e.keyCode === 46)) {
+        this.keyCode = 127;
+    }
+    else {
+        this.keyCode = e.keyCode;
+    }
+    this.clientX = e.clientX;
+    this.clientY = e.clientY;
+    this.ctrlKey = e.ctrlKey;
+    this.target = e.target ? e.target : e.srcElement;
+    if (this.target) {
+        var loc = Sys.UI.DomElement.getLocation(this.target);
+        this.offsetX = (typeof(e.offsetX) !== 'undefined') ? e.offsetX : window.pageXOffset + (e.clientX || 0) - loc.x;
+        this.offsetY = (typeof(e.offsetY) !== 'undefined') ? e.offsetY : window.pageYOffset + (e.clientY || 0) - loc.y;
+    }
+    this.screenX = e.screenX;
+    this.screenY = e.screenY;
+    this.shiftKey = e.shiftKey;
+    this.type = e.type;
+}
+
+    function Sys$UI$DomEvent$preventDefault() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this.rawEvent.preventDefault) {
+            this.rawEvent.preventDefault();
+        }
+        else if (window.event) {
+            window.event.returnValue = false;
+        }
+    }
+    function Sys$UI$DomEvent$stopPropagation() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this.rawEvent.stopPropagation) {
+            this.rawEvent.stopPropagation();
+        }
+        else if (window.event) {
+            window.event.cancelBubble = true;
+        }
+    }
+Sys.UI.DomEvent.prototype = {
+    preventDefault: Sys$UI$DomEvent$preventDefault,
+    stopPropagation: Sys$UI$DomEvent$stopPropagation
+}
+Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent');
+
+var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="eventName" type="String"></param>
+    /// <param name="handler" type="Function"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "eventName", type: String},
+        {name: "handler", type: Function}
+    ]);
+    if (e) throw e;
+
+    if (!element._events) {
+        element._events = {};
+    }
+    var eventCache = element._events[eventName];
+    if (!eventCache) {
+        element._events[eventName] = eventCache = [];
+    }
+    var browserHandler;
+    if (element.addEventListener) {
+        browserHandler = function(e) {
+            return handler.call(element, new Sys.UI.DomEvent(e));
+        }
+        element.addEventListener(eventName, browserHandler, false);
+    }
+    else if (element.attachEvent) {
+        browserHandler = function() {
+            return handler.call(element, new Sys.UI.DomEvent(window.event));
+        }
+        element.attachEvent('on' + eventName, browserHandler);
+    }
+    eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler};
+}
+
+var $addHandlers = Sys.UI.DomEvent.addHandlers = function Sys$UI$DomEvent$addHandlers(element, events, handlerOwner) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="events" type="Object"></param>
+    /// <param name="handlerOwner" optional="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "events", type: Object},
+        {name: "handlerOwner", optional: true}
+    ]);
+    if (e) throw e;
+
+    for (var name in events) {
+        var handler = events[name];
+        if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
+        if (handlerOwner) {
+            handler = Function.createDelegate(handlerOwner, handler);
+        }
+        $addHandler(element, name, handler);
+    }
+}
+
+var $clearHandlers = Sys.UI.DomEvent.clearHandlers = function Sys$UI$DomEvent$clearHandlers(element) {
+    /// <param name="element" domElement="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+
+    if (element._events) {
+        var cache = element._events;
+        for (var name in cache) {
+            var handlers = cache[name];
+            for (var i = handlers.length - 1; i >= 0; i--) {
+                $removeHandler(element, name, handlers[i].handler);
+            }
+        }
+        element._events = null;
+    }
+}
+
+var $removeHandler = Sys.UI.DomEvent.removeHandler = function Sys$UI$DomEvent$removeHandler(element, eventName, handler) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="eventName" type="String"></param>
+    /// <param name="handler" type="Function"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "eventName", type: String},
+        {name: "handler", type: Function}
+    ]);
+    if (e) throw e;
+
+    var browserHandler = null;
+    if ((typeof(element._events) !== 'object') || (element._events == null)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
+    var cache = element._events[eventName];
+    if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
+    var browserHandler = null;
+    for (var i = 0, l = cache.length; i < l; i++) {
+        if (cache[i].handler === handler) {
+            browserHandler = cache[i].browserHandler;
+            break;
+        }
+    }
+    if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
+    if (element.removeEventListener) {
+        element.removeEventListener(eventName, browserHandler, false);
+    }
+    else if (element.detachEvent) {
+        element.detachEvent('on' + eventName, browserHandler);
+    }
+    cache.splice(i, 1);
+}
+Sys.IContainer = function Sys$IContainer() {
+    throw Error.notImplemented();
+}
+
+    function Sys$IContainer$addComponent(component) {
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+    function Sys$IContainer$removeComponent(component) {
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+    function Sys$IContainer$findComponent(id) {
+        /// <param name="id" type="String"></param>
+        /// <returns type="Sys.Component"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String}
+        ]);
+        if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+    function Sys$IContainer$getComponents() {
+        /// <returns type="Array" elementType="Sys.Component"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+Sys.IContainer.prototype = {
+    addComponent: Sys$IContainer$addComponent,
+    removeComponent: Sys$IContainer$removeComponent,
+    findComponent: Sys$IContainer$findComponent,
+    getComponents: Sys$IContainer$getComponents
+}
+Sys.IContainer.registerInterface("Sys.IContainer");
+
+
+Sys._ScriptLoader = function Sys$_ScriptLoader() {
+    this._scriptsToLoad = null;
+    this._scriptLoadedDelegate = Function.createDelegate(this, this._scriptLoadedHandler);
+}
+
+    function Sys$_ScriptLoader$dispose() {
+        this._stopLoading();
+        if(this._events) {
+            delete this._events;
+        }
+        this._scriptLoadedDelegate = null;        
+    }
+
+    function Sys$_ScriptLoader$loadScripts(scriptTimeout, allScriptsLoadedCallback, scriptLoadFailedCallback, scriptLoadTimeoutCallback) {
+        /// <param name="scriptTimeout" type="Number" integer="true"></param>
+        /// <param name="allScriptsLoadedCallback" type="Function" mayBeNull="true"></param>
+        /// <param name="scriptLoadFailedCallback" type="Function" mayBeNull="true"></param>
+        /// <param name="scriptLoadTimeoutCallback" type="Function" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptTimeout", type: Number, integer: true},
+            {name: "allScriptsLoadedCallback", type: Function, mayBeNull: true},
+            {name: "scriptLoadFailedCallback", type: Function, mayBeNull: true},
+            {name: "scriptLoadTimeoutCallback", type: Function, mayBeNull: true}
+        ]);
+        if (e) throw e;
+
+        if(this._loading) {
+            throw Error.invalidOperation(Sys.Res.scriptLoaderAlreadyLoading);
+        }
+        this._loading = true;
+        this._allScriptsLoadedCallback = allScriptsLoadedCallback;
+        this._scriptLoadFailedCallback = scriptLoadFailedCallback;
+        this._scriptLoadTimeoutCallback = scriptLoadTimeoutCallback;
+        
+        this._loadScriptsInternal();
+    }
+
+    function Sys$_ScriptLoader$notifyScriptLoaded() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        
+                        if(!this._loading) {
+                                    return;
+        }
+
+        this._currentTask._notified++;
+        
+        if(Sys.Browser.agent === Sys.Browser.Safari) {           
+            if(this._currentTask._notified === 1) {
+                                                                                                                window.setTimeout(Function.createDelegate(this, function() {
+                    this._scriptLoadedHandler(this._currentTask.get_scriptElement(), true);
+                }), 0);
+            }
+        }
+
+                            }
+
+    function Sys$_ScriptLoader$queueCustomScriptTag(scriptAttributes) {
+        /// <param name="scriptAttributes" mayBeNull="false"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptAttributes"}
+        ]);
+        if (e) throw e;
+
+        if(!this._scriptsToLoad) {
+            this._scriptsToLoad = [];
+        }
+        Array.add(this._scriptsToLoad, scriptAttributes);
+    }
+
+    function Sys$_ScriptLoader$queueScriptBlock(scriptContent) {
+        /// <param name="scriptContent" type="String" mayBeNull="false"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptContent", type: String}
+        ]);
+        if (e) throw e;
+
+        if(!this._scriptsToLoad) {
+            this._scriptsToLoad = [];
+        }
+        Array.add(this._scriptsToLoad, {text: scriptContent});
+    }
+
+    function Sys$_ScriptLoader$queueScriptReference(scriptUrl) {
+        /// <param name="scriptUrl" type="String" mayBeNull="false"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptUrl", type: String}
+        ]);
+        if (e) throw e;
+
+        if(!this._scriptsToLoad) {
+            this._scriptsToLoad = [];
+        }
+        Array.add(this._scriptsToLoad, {src: scriptUrl});
+    }
+
+    function Sys$_ScriptLoader$_createScriptElement(queuedScript) {
+        var scriptElement = document.createElement('SCRIPT');
+
+                        scriptElement.type = 'text/javascript';
+
+                for (var attr in queuedScript) {
+            scriptElement[attr] = queuedScript[attr];
+        }
+        
+        return scriptElement;
+    }
+
+    function Sys$_ScriptLoader$_loadScriptsInternal() {
+                if (this._scriptsToLoad && this._scriptsToLoad.length > 0) {
+            var nextScript = Array.dequeue(this._scriptsToLoad);
+                        var scriptElement = this._createScriptElement(nextScript);
+            
+            if (scriptElement.text && Sys.Browser.agent === Sys.Browser.Safari) {
+                                scriptElement.innerHTML = scriptElement.text;
+                delete scriptElement.text;
+            }            
+
+                                                            if (typeof(nextScript.src) === "string") {
+                                this._currentTask = new Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
+                                                                                this._currentTask.execute();
+            }
+            else {
+                                                document.getElementsByTagName('HEAD')[0].appendChild(scriptElement);
+                
+                                Sys._ScriptLoader._clearScript(scriptElement);
+
+                                                                this._loadScriptsInternal();
+            }
+        }
+        else {
+                        var callback = this._allScriptsLoadedCallback;
+            this._stopLoading();
+            if(callback) {
+                callback(this);
+            }
+        }
+    }
+
+    function Sys$_ScriptLoader$_raiseError(multipleCallbacks) {
+                var callback = this._scriptLoadFailedCallback;
+        var scriptElement = this._currentTask.get_scriptElement();
+        this._stopLoading();
+        
+        if(callback) {
+            callback(this, scriptElement, multipleCallbacks);
+        }
+        else {
+            throw Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src, multipleCallbacks);
+        }
+    }
+
+    function Sys$_ScriptLoader$_scriptLoadedHandler(scriptElement, loaded) {
+                                if(loaded && this._currentTask._notified) {
+            if(this._currentTask._notified > 1) {
+                                this._raiseError(true);
+            }
+            else {
+                                Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
+                this._currentTask.dispose();
+                this._currentTask = null;
+                this._loadScriptsInternal();
+            }
+        }
+        else {
+                        this._raiseError(false);
+        }
+    }
+
+    function Sys$_ScriptLoader$_scriptLoadTimeoutHandler() {
+        var callback = this._scriptLoadTimeoutCallback;
+        this._stopLoading();
+
+        if(callback) {
+            callback(this);
+        }
+    }
+
+    function Sys$_ScriptLoader$_stopLoading() {
+        if(this._timeoutCookie) {
+            window.clearTimeout(this._timeoutCookie);
+            this._timeoutCookie = null;
+        }
+
+        if(this._currentTask) {
+            this._currentTask.dispose();
+            this._currentTask = null;
+        }
+
+        this._scriptsToLoad = null;
+        this._loading = null;
+        
+        this._allScriptsLoadedCallback = null;
+        this._scriptLoadFailedCallback = null;
+        this._scriptLoadTimeoutCallback = null;
+    }
+Sys._ScriptLoader.prototype = {
+    dispose: Sys$_ScriptLoader$dispose,
+    
+    loadScripts: Sys$_ScriptLoader$loadScripts,
+    
+    notifyScriptLoaded: Sys$_ScriptLoader$notifyScriptLoaded,
+    
+    queueCustomScriptTag: Sys$_ScriptLoader$queueCustomScriptTag,
+
+    queueScriptBlock: Sys$_ScriptLoader$queueScriptBlock,
+
+    queueScriptReference: Sys$_ScriptLoader$queueScriptReference,
+    
+    _createScriptElement: Sys$_ScriptLoader$_createScriptElement,   
+
+    _loadScriptsInternal: Sys$_ScriptLoader$_loadScriptsInternal,
+    
+    _raiseError: Sys$_ScriptLoader$_raiseError,
+    
+    _scriptLoadedHandler: Sys$_ScriptLoader$_scriptLoadedHandler,
+    
+    _scriptLoadTimeoutHandler: Sys$_ScriptLoader$_scriptLoadTimeoutHandler,
+    
+    _stopLoading: Sys$_ScriptLoader$_stopLoading    
+}
+Sys._ScriptLoader.registerClass('Sys._ScriptLoader', null, Sys.IDisposable);
+
+Sys._ScriptLoader.getInstance = function Sys$_ScriptLoader$getInstance() {
+    var sl = Sys._ScriptLoader._activeInstance;
+    if(!sl) {
+        sl = Sys._ScriptLoader._activeInstance = new Sys._ScriptLoader();
+    }
+    return sl;
+}
+
+Sys._ScriptLoader.isScriptLoaded = function Sys$_ScriptLoader$isScriptLoaded(scriptSrc) {
+                    var dummyScript = document.createElement('script');
+    dummyScript.src = scriptSrc;
+    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), dummyScript.src);
+}
+
+Sys._ScriptLoader.readLoadedScripts = function Sys$_ScriptLoader$readLoadedScripts() {
+        if(!Sys._ScriptLoader._referencedScripts) {
+        var referencedScripts = Sys._ScriptLoader._referencedScripts = [];
+
+        var existingScripts = document.getElementsByTagName('SCRIPT');
+        for (i = existingScripts.length - 1; i >= 0; i--) {
+            var scriptNode = existingScripts[i];
+            var scriptSrc = scriptNode.src;
+            if (scriptSrc.length) {
+                if (!Array.contains(referencedScripts, scriptSrc)) {
+                    Array.add(referencedScripts, scriptSrc);
+                }
+            }
+        }
+    }
+}
+
+Sys._ScriptLoader._clearScript = function Sys$_ScriptLoader$_clearScript(scriptElement) {
+    if (!Sys.Debug.isDebug) {
+                        scriptElement.parentNode.removeChild(scriptElement);
+    }
+}
+
+Sys._ScriptLoader._errorScriptLoadFailed = function Sys$_ScriptLoader$_errorScriptLoadFailed(scriptUrl, multipleCallbacks) {
+    var errorMessage;
+    if(multipleCallbacks) {
+        errorMessage = Sys.Res.scriptLoadMultipleCallbacks;
+    }
+    else {
+                errorMessage = Sys.Res.scriptLoadFailedDebug;
+    }
+
+    var displayMessage = "Sys.ScriptLoadFailedException: " + String.format(errorMessage, scriptUrl);
+    var e = Error.create(displayMessage, {name: 'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
+    e.popStackFrame();
+    return e;
+}
+
+Sys._ScriptLoader._getLoadedScripts = function Sys$_ScriptLoader$_getLoadedScripts() {
+    if(!Sys._ScriptLoader._referencedScripts) {
+        Sys._ScriptLoader._referencedScripts = [];
+        Sys._ScriptLoader.readLoadedScripts();
+    }
+    return Sys._ScriptLoader._referencedScripts;
+}
+
+
+Sys._ScriptLoaderTask = function Sys$_ScriptLoaderTask(scriptElement, completedCallback) {
+    /// <param name="scriptElement" domElement="true"></param>
+    /// <param name="completedCallback" type="Function"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "scriptElement", domElement: true},
+        {name: "completedCallback", type: Function}
+    ]);
+    if (e) throw e;
+
+    this._scriptElement = scriptElement;
+    this._completedCallback = completedCallback;
+    this._notified = 0;
+}
+
+    function Sys$_ScriptLoaderTask$get_scriptElement() {
+        /// <value domElement="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._scriptElement;
+    }
+
+    function Sys$_ScriptLoaderTask$dispose() {
+                if(this._disposed) {
+                        return;
+        }
+        this._disposed = true;
+        this._removeScriptElementHandlers();
+                Sys._ScriptLoader._clearScript(this._scriptElement);
+        this._scriptElement = null;
+    }
+
+    function Sys$_ScriptLoaderTask$execute() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        this._addScriptElementHandlers();
+        document.getElementsByTagName('HEAD')[0].appendChild(this._scriptElement);
+    }
+
+    function Sys$_ScriptLoaderTask$_addScriptElementHandlers() {
+                this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler);
+        
+        if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
+            this._scriptElement.readyState = 'loaded';
+            $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate);
+        }
+        else {
+            $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate);
+        }    
+                        this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler);
+        $addHandler(this._scriptElement, 'error', this._scriptErrorDelegate);
+    }
+
+    function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() {
+                if(this._scriptLoadDelegate) {
+            var scriptElement = this.get_scriptElement();
+            if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
+                $removeHandler(scriptElement, 'load', this._scriptLoadDelegate);
+            }
+            else {
+                $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate);
+            }
+            $removeHandler(scriptElement, 'error', this._scriptErrorDelegate);
+            this._scriptErrorDelegate = null;
+            this._scriptLoadDelegate = null;
+        }
+    }
+
+    function Sys$_ScriptLoaderTask$_scriptErrorHandler() {
+                if(this._disposed) {
+            return;
+        }
+        
+                this._completedCallback(this.get_scriptElement(), false);
+    }
+
+    function Sys$_ScriptLoaderTask$_scriptLoadHandler() {
+                if(this._disposed) {
+            return;
+        }
+
+        var scriptElement = this.get_scriptElement();
+        if ((scriptElement.readyState !== 'loaded') &&
+            (scriptElement.readyState !== 'complete')) {
+            return;
+        }
+        
+                                        var _this = this;
+        window.setTimeout(function() {
+            _this._completedCallback(scriptElement, true);
+        }, 0);
+    }
+Sys._ScriptLoaderTask.prototype = {
+    get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement,
+    
+    dispose: Sys$_ScriptLoaderTask$dispose,
+        
+    execute: Sys$_ScriptLoaderTask$execute,
+       
+    _addScriptElementHandlers: Sys$_ScriptLoaderTask$_addScriptElementHandlers,    
+    
+    _removeScriptElementHandlers: Sys$_ScriptLoaderTask$_removeScriptElementHandlers,    
+
+    _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler,
+           
+    _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler  
+}
+Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable);
+Sys.ApplicationLoadEventArgs = function Sys$ApplicationLoadEventArgs(components, isPartialLoad) {
+    /// <param name="components" type="Array" elementType="Sys.Component"></param>
+    /// <param name="isPartialLoad" type="Boolean"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "components", type: Array, elementType: Sys.Component},
+        {name: "isPartialLoad", type: Boolean}
+    ]);
+    if (e) throw e;
+
+    Sys.ApplicationLoadEventArgs.initializeBase(this);
+    this._components = components;
+    this._isPartialLoad = isPartialLoad;
+}
+ 
+    function Sys$ApplicationLoadEventArgs$get_components() {
+        /// <value type="Array" elementType="Sys.Component"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._components;
+    }
+    function Sys$ApplicationLoadEventArgs$get_isPartialLoad() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._isPartialLoad;
+    }
+Sys.ApplicationLoadEventArgs.prototype = {
+    get_components: Sys$ApplicationLoadEventArgs$get_components,
+    get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad
+}
+Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs);
+Sys._Application = function Sys$_Application() {
+    Sys._Application.initializeBase(this);
+
+    this._disposableObjects = [];
+    this._components = {};
+    this._createdComponents = [];
+    this._secondPassComponents = [];
+
+    this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler);
+    this._loadHandlerDelegate = Function.createDelegate(this, this._loadHandler);
+
+    Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate);
+    Sys.UI.DomEvent.addHandler(window, "load", this._loadHandlerDelegate);
+}
+
+
+
+
+    function Sys$_Application$get_isCreatingComponents() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._creatingComponents;
+    }
+    function Sys$_Application$add_load(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().addHandler("load", handler);
+    }
+    function Sys$_Application$remove_load(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().removeHandler("load", handler);
+    }
+    function Sys$_Application$add_init(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        if (this._initialized) {
+            handler(this, Sys.EventArgs.Empty);
+        }
+        else {
+            this.get_events().addHandler("init", handler);
+        }
+    }
+    function Sys$_Application$remove_init(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().removeHandler("init", handler);
+    }
+    function Sys$_Application$add_unload(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().addHandler("unload", handler);
+    }
+    function Sys$_Application$remove_unload(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this.get_events().removeHandler("unload", handler);
+    }
+    function Sys$_Application$addComponent(component) {
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+
+        var id = component.get_id();
+        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
+        if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id));
+        this._components[id] = component;
+    }
+    function Sys$_Application$beginCreateComponents() {
+        this._creatingComponents = true;
+    }
+    function Sys$_Application$dispose() {
+        if (!this._disposing) {
+            this._disposing = true;
+            if (window.pageUnload) {
+                window.pageUnload(this, Sys.EventArgs.Empty);
+            }
+            var unloadHandler = this.get_events().getHandler("unload");
+            if (unloadHandler) {
+                unloadHandler(this, Sys.EventArgs.Empty);
+            }
+            var disposableObjects = Array.clone(this._disposableObjects);
+            for (var i = 0, l = disposableObjects.length; i < l; i++) {
+                disposableObjects[i].dispose();
+            }
+            Array.clear(this._disposableObjects);
+
+            Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate);
+            if(this._loadHandlerDelegate) {
+                Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
+                this._loadHandlerDelegate = null;
+            }
+
+            var sl = Sys._ScriptLoader.getInstance();
+            if(sl) {
+                sl.dispose();
+            }
+
+            Sys._Application.callBaseMethod(this, 'dispose');
+        }
+    }
+    function Sys$_Application$endCreateComponents() {
+        var components = this._secondPassComponents;
+        for (var i = 0, l = components.length; i < l; i++) {
+            var component = components[i].component;
+            Sys$Component$_setReferences(component, components[i].references);
+            component.endUpdate();
+        }
+        this._secondPassComponents = [];
+        this._creatingComponents = false;
+    }
+    function Sys$_Application$findComponent(id, parent) {
+        /// <param name="id" type="String"></param>
+        /// <param name="parent" optional="true" mayBeNull="true"></param>
+        /// <returns type="Sys.Component" mayBeNull="true"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String},
+            {name: "parent", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+                        return (parent ?
+            ((Sys.IContainer.isInstanceOfType(parent)) ?
+                parent.findComponent(id) :
+                parent[id] || null) :
+            Sys.Application._components[id] || null);
+    }
+    function Sys$_Application$getComponents() {
+        /// <returns type="Array" elementType="Sys.Component"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        var res = [];
+        var components = this._components;
+        for (var name in components) {
+            res[res.length] = components[name];
+        }
+        return res;
+    }
+    function Sys$_Application$initialize() {
+        if(!this._initialized && !this._initializing) {
+            this._initializing = true;
+                                                window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
+        }
+    }
+    function Sys$_Application$notifyScriptLoaded() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        var sl = Sys._ScriptLoader.getInstance();
+        if(sl) {
+            sl.notifyScriptLoaded();
+        }
+    }
+    function Sys$_Application$registerDisposableObject(object) {
+        /// <param name="object" type="Sys.IDisposable"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "object", type: Sys.IDisposable}
+        ]);
+        if (e) throw e;
+
+        if (!this._disposing) {
+            this._disposableObjects[this._disposableObjects.length] = object;
+        }
+    }
+    function Sys$_Application$raiseLoad() {
+        var h = this.get_events().getHandler("load");
+        var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !this._initializing);
+        if (h) {
+            h(this, args);
+        }
+
+        if (window.pageLoad) {
+            window.pageLoad(this, args);
+        }
+        this._createdComponents = [];
+    }
+    function Sys$_Application$removeComponent(component) {
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+
+        var id = component.get_id();
+        if (id) delete this._components[id];
+    }
+    function Sys$_Application$unregisterDisposableObject(object) {
+        /// <param name="object" type="Sys.IDisposable"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "object", type: Sys.IDisposable}
+        ]);
+        if (e) throw e;
+
+        if (!this._disposing) {
+            Array.remove(this._disposableObjects, object);
+        }
+    }
+    function Sys$_Application$_addComponentToSecondPass(component, references) {
+        this._secondPassComponents[this._secondPassComponents.length] = {component: component, references: references};
+    }
+    function Sys$_Application$_doInitialize() {
+        Sys._Application.callBaseMethod(this, 'initialize');
+
+        var handler = this.get_events().getHandler("init");
+        if (handler) {
+            this.beginCreateComponents();
+            handler(this, Sys.EventArgs.Empty);
+            this.endCreateComponents();
+        }
+        this.raiseLoad();
+        this._initializing = false;
+    }
+    function Sys$_Application$_loadHandler() {
+                        if(this._loadHandlerDelegate) {
+            Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
+            this._loadHandlerDelegate = null;
+        }
+        this.initialize();
+    }
+    function Sys$_Application$_unloadHandler(event) {
+        this.dispose();
+    }
+Sys._Application.prototype = {
+    _creatingComponents: false,
+    _disposing: false,
+
+    get_isCreatingComponents: Sys$_Application$get_isCreatingComponents,
+    add_load: Sys$_Application$add_load,
+    remove_load: Sys$_Application$remove_load,
+    add_init: Sys$_Application$add_init,
+    remove_init: Sys$_Application$remove_init,
+    add_unload: Sys$_Application$add_unload,
+    remove_unload: Sys$_Application$remove_unload,
+    addComponent: Sys$_Application$addComponent,
+    beginCreateComponents: Sys$_Application$beginCreateComponents,
+    dispose: Sys$_Application$dispose,
+    endCreateComponents: Sys$_Application$endCreateComponents,
+    findComponent: Sys$_Application$findComponent,
+    getComponents: Sys$_Application$getComponents,
+    initialize: Sys$_Application$initialize,
+    notifyScriptLoaded: Sys$_Application$notifyScriptLoaded,
+    registerDisposableObject: Sys$_Application$registerDisposableObject,
+    raiseLoad: Sys$_Application$raiseLoad,
+    removeComponent: Sys$_Application$removeComponent,
+    unregisterDisposableObject: Sys$_Application$unregisterDisposableObject,
+    _addComponentToSecondPass: Sys$_Application$_addComponentToSecondPass,
+    _doInitialize: Sys$_Application$_doInitialize,    
+    _loadHandler: Sys$_Application$_loadHandler,
+    _unloadHandler: Sys$_Application$_unloadHandler
+}
+Sys._Application.registerClass('Sys._Application', Sys.Component, Sys.IContainer);
+
+Sys.Application = new Sys._Application();
+
+var $find = Sys.Application.findComponent;
+
+Type.registerNamespace('Sys.Net');
+
+Sys.Net.WebRequestExecutor = function Sys$Net$WebRequestExecutor() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    this._webRequest = null;
+    this._resultObject = null;
+}
+
+
+    function Sys$Net$WebRequestExecutor$get_webRequest() {
+        /// <value type="Sys.Net.WebRequest"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._webRequest;
+    }
+
+    function Sys$Net$WebRequestExecutor$_set_webRequest(value) {
+        if (this.get_started()) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest'));
+        }
+
+        this._webRequest = value;
+    }
+
+
+    function Sys$Net$WebRequestExecutor$get_started() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+
+    function Sys$Net$WebRequestExecutor$get_responseAvailable() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+
+    function Sys$Net$WebRequestExecutor$get_timedOut() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_aborted() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_responseData() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_statusCode() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_statusText() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_xml() {
+        /// <value></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_object() {
+        /// <value></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._resultObject) {
+            this._resultObject = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());
+        }
+        return this._resultObject;
+    }
+
+
+    function Sys$Net$WebRequestExecutor$executeRequest() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$abort() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$getResponseHeader(header) {
+        /// <param name="header" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "header", type: String}
+        ]);
+        if (e) throw e;
+
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$getAllResponseHeaders() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+Sys.Net.WebRequestExecutor.prototype = {
+    get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest,
+
+    _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest,
+
+        get_started: Sys$Net$WebRequestExecutor$get_started,
+
+    get_responseAvailable: Sys$Net$WebRequestExecutor$get_responseAvailable,
+
+    get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut,
+    get_aborted: Sys$Net$WebRequestExecutor$get_aborted,
+    get_responseData: Sys$Net$WebRequestExecutor$get_responseData,
+    get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode,
+    get_statusText: Sys$Net$WebRequestExecutor$get_statusText,
+    get_xml: Sys$Net$WebRequestExecutor$get_xml,
+    get_object: Sys$Net$WebRequestExecutor$get_object,
+
+        executeRequest: Sys$Net$WebRequestExecutor$executeRequest,
+    abort: Sys$Net$WebRequestExecutor$abort,
+    getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader,
+    getAllResponseHeaders: Sys$Net$WebRequestExecutor$getAllResponseHeaders
+}
+Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor');
+window.XMLDOM = function window$XMLDOM(markup) {
+    if (!window.DOMParser) {
+        var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
+        for (var i = 0; i < progIDs.length; i++) {
+            try {
+                var xmlDOM = new ActiveXObject(progIDs[i]);
+                xmlDOM.async = false;
+                xmlDOM.loadXML(markup);
+                xmlDOM.setProperty('SelectionLanguage', 'XPath');
+                return xmlDOM;
+            }
+            catch (ex) {
+            }
+        }
+        return null;
+    }
+        else {
+        try {
+            var domParser = new window.DOMParser();
+            return domParser.parseFromString(markup, 'text/xml');
+        } catch (ex) {
+            return null;
+        }
+    }
+    return null;
+    }
+
+Sys.Net.XMLHttpExecutor = function Sys$Net$XMLHttpExecutor() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+
+    Sys.Net.XMLHttpExecutor.initializeBase(this);
+
+    var _this = this;
+    this._xmlHttpRequest = null;
+    this._webRequest = null;
+    this._responseAvailable = false;
+    this._timedOut = false;
+    this._timer = null;
+    this._aborted = false;
+    this._started = false;
+
+    this._onReadyStateChange = function () {
+        
+        if (_this._xmlHttpRequest.readyState === 4 ) {
+
+            _this._clearTimer();
+            _this._responseAvailable = true;
+            _this._webRequest.completed(Sys.EventArgs.Empty);
+            if (_this._xmlHttpRequest != null) {
+                _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
+                _this._xmlHttpRequest = null;
+            }
+        }
+    }
+
+    this._clearTimer = function this$_clearTimer() {
+        if (_this._timer != null) {
+            window.clearTimeout(_this._timer);
+            _this._timer = null;
+        }
+    }
+
+    this._onTimeout = function this$_onTimeout() {
+        if (!_this._responseAvailable) {
+            _this._clearTimer();
+            _this._timedOut = true;
+            _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
+            _this._xmlHttpRequest.abort();
+            _this._webRequest.completed(Sys.EventArgs.Empty);
+            _this._xmlHttpRequest = null;
+        }
+    }
+
+}
+
+
+
+    function Sys$Net$XMLHttpExecutor$get_timedOut() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timedOut;
+    }
+
+    function Sys$Net$XMLHttpExecutor$get_started() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._started;
+    }
+
+    function Sys$Net$XMLHttpExecutor$get_responseAvailable() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+    return this._responseAvailable;
+    }
+
+    function Sys$Net$XMLHttpExecutor$get_aborted() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._aborted;
+    }
+
+    function Sys$Net$XMLHttpExecutor$executeRequest() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        this._webRequest = this.get_webRequest();
+
+        if (this._started) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest'));
+        }
+        if (this._webRequest === null) {
+            throw Error.invalidOperation(Sys.Res.nullWebRequest);
+        }
+
+        var body = this._webRequest.get_body();
+        var headers = this._webRequest.get_headers();
+        this._xmlHttpRequest = new XMLHttpRequest();
+        this._xmlHttpRequest.onreadystatechange = this._onReadyStateChange;
+        var verb = this._webRequest.get_httpVerb();
+        this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true );
+        if (headers) {
+            for (var header in headers) {
+                var val = headers[header];
+                if (typeof(val) !== "function")
+                    this._xmlHttpRequest.setRequestHeader(header, val);
+            }
+        }
+
+        if (verb.toLowerCase() === "post") {
+                        if ((headers === null) || !headers['Content-Type']) {
+                this._xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+            }
+
+                        if (!body) {
+                body = "";
+            }
+        }
+
+        var timeout = this._webRequest.get_timeout();
+        if (timeout > 0) {
+            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout);
+        }
+        this._xmlHttpRequest.send(body);
+        this._started = true;
+    }
+
+    function Sys$Net$XMLHttpExecutor$getResponseHeader(header) {
+        /// <param name="header" type="String"></param>
+        /// <returns type="String"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "header", type: String}
+        ]);
+        if (e) throw e;
+
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader'));
+        }
+
+        var result;
+        try {
+            result = this._xmlHttpRequest.getResponseHeader(header);
+        } catch (e) {
+        }
+        if (!result) result = "";
+        return result;
+    }
+
+    function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() {
+        /// <returns type="String"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders'));
+        }
+
+        return this._xmlHttpRequest.getAllResponseHeaders();
+    }
+
+    function Sys$Net$XMLHttpExecutor$get_responseData() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
+        }
+
+        return this._xmlHttpRequest.responseText;
+    }
+
+    function Sys$Net$XMLHttpExecutor$get_statusCode() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode'));
+        }
+
+        return this._xmlHttpRequest.status;
+    }
+
+    function Sys$Net$XMLHttpExecutor$get_statusText() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText'));
+        }
+
+        return this._xmlHttpRequest.statusText;
+    }
+
+    function Sys$Net$XMLHttpExecutor$get_xml() {
+        /// <value></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml'));
+        }
+
+        var xml = this._xmlHttpRequest.responseXML;
+        if (!xml || !xml.documentElement) {
+
+                        xml = new XMLDOM(this._xmlHttpRequest.responseText);
+
+                        if (!xml || !xml.documentElement)
+                return null;
+        }
+                else if (navigator.userAgent.indexOf('MSIE') !== -1) {
+            xml.setProperty('SelectionLanguage', 'XPath');
+        }
+
+                if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
+            xml.documentElement.tagName === "parsererror") {
+            return null;
+        }
+        
+                if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") {
+            return null;
+        }
+        
+        return xml;
+    }
+
+    function Sys$Net$XMLHttpExecutor$abort() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._started) {
+            throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
+        }
+
+                if (this._aborted || this._responseAvailable || this._timedOut)
+            return;
+
+        this._aborted = true;
+
+        this._clearTimer();
+
+        if (this._xmlHttpRequest && !this._responseAvailable) {
+
+                        this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
+            this._xmlHttpRequest.abort();
+
+            this._xmlHttpRequest = null;
+            var handler = this._webRequest._get_eventHandlerList().getHandler("completed");
+            if (handler) {
+                handler(this, Sys.EventArgs.Empty);
+            }
+        }
+    }
+Sys.Net.XMLHttpExecutor.prototype = {
+
+    get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut,
+
+    get_started: Sys$Net$XMLHttpExecutor$get_started,
+
+    get_responseAvailable: Sys$Net$XMLHttpExecutor$get_responseAvailable,
+
+    get_aborted: Sys$Net$XMLHttpExecutor$get_aborted,
+
+    executeRequest: Sys$Net$XMLHttpExecutor$executeRequest,
+
+    getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader,
+
+    getAllResponseHeaders: Sys$Net$XMLHttpExecutor$getAllResponseHeaders,
+
+    get_responseData: Sys$Net$XMLHttpExecutor$get_responseData,
+
+    get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode,
+
+    get_statusText: Sys$Net$XMLHttpExecutor$get_statusText,
+
+    get_xml: Sys$Net$XMLHttpExecutor$get_xml,
+
+    abort: Sys$Net$XMLHttpExecutor$abort
+}
+Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor);
+Sys.Net._WebRequestManager = function Sys$Net$_WebRequestManager() {
+    this._this = this;
+    this._defaultTimeout = 0;
+    this._defaultExecutorType = "Sys.Net.XMLHttpExecutor";
+}
+
+
+    function Sys$Net$_WebRequestManager$add_invokingRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("invokingRequest", handler);
+    }
+    function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("invokingRequest", handler);
+    }
+
+    function Sys$Net$_WebRequestManager$add_completedRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("completedRequest", handler);
+    }
+    function Sys$Net$_WebRequestManager$remove_completedRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("completedRequest", handler);
+    }
+
+    function Sys$Net$_WebRequestManager$_get_eventHandlerList() {
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+
+    function Sys$Net$_WebRequestManager$get_defaultTimeout() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultTimeout;
+    }
+    function Sys$Net$_WebRequestManager$set_defaultTimeout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+
+        if (value < 0) {
+            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
+        }
+
+        this._defaultTimeout = value;
+    }
+
+    function Sys$Net$_WebRequestManager$get_defaultExecutorType() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultExecutorType;
+    }
+    function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+
+        this._defaultExecutorType = value;
+    }
+
+    function Sys$Net$_WebRequestManager$executeRequest(webRequest) {
+        /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "webRequest", type: Sys.Net.WebRequest}
+        ]);
+        if (e) throw e;
+
+        var executor = webRequest.get_executor();
+                if (!executor) {
+            
+            var failed = false;
+            try {
+                var executorType = eval(this._defaultExecutorType);
+                executor = new executorType();
+            } catch (e) {
+                failed = true;
+            }
+
+            if (failed  || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) {
+                throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType));
+            }
+
+            webRequest.set_executor(executor);
+        }
+
+                if (executor.get_aborted()) {
+            return;
+        }
+
+        var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest);
+        var handler = this._get_eventHandlerList().getHandler("invokingRequest");
+        if (handler) {
+            handler(this, evArgs);
+        }
+
+        if (!evArgs.get_cancel()) {
+            executor.executeRequest();
+        }
+    }
+Sys.Net._WebRequestManager.prototype = {
+    add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest,
+    remove_invokingRequest: Sys$Net$_WebRequestManager$remove_invokingRequest,
+
+    add_completedRequest: Sys$Net$_WebRequestManager$add_completedRequest,
+    remove_completedRequest: Sys$Net$_WebRequestManager$remove_completedRequest,
+
+    _get_eventHandlerList: Sys$Net$_WebRequestManager$_get_eventHandlerList,
+
+    get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout,
+    set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout,
+
+    get_defaultExecutorType: Sys$Net$_WebRequestManager$get_defaultExecutorType,
+    set_defaultExecutorType: Sys$Net$_WebRequestManager$set_defaultExecutorType,
+
+    executeRequest: Sys$Net$_WebRequestManager$executeRequest
+}
+
+Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager');
+
+Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager();
+Sys.Net.NetworkRequestEventArgs = function Sys$Net$NetworkRequestEventArgs(webRequest) {
+    /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "webRequest", type: Sys.Net.WebRequest}
+    ]);
+    if (e) throw e;
+
+    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
+    this._webRequest = webRequest;
+}
+
+
+    function Sys$Net$NetworkRequestEventArgs$get_webRequest() {
+        /// <value type="Sys.Net.WebRequest"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._webRequest;
+    }
+Sys.Net.NetworkRequestEventArgs.prototype = {
+    get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest
+}
+
+Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs);
+Sys.Net.WebRequest = function Sys$Net$WebRequest() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    this._url = "";
+    this._headers = { };
+    this._body = null;
+    this._userContext = null;
+    this._httpVerb = null;
+    this._executor = null;
+    this._invokeCalled = false;
+    this._timeout = 0;
+}
+
+
+    function Sys$Net$WebRequest$add_completed(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("completed", handler);
+    }
+    function Sys$Net$WebRequest$remove_completed(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("completed", handler);
+    }
+
+    function Sys$Net$WebRequest$completed(eventArgs) {
+        /// <param name="eventArgs" type="Sys.EventArgs"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "eventArgs", type: Sys.EventArgs}
+        ]);
+        if (e) throw e;
+
+        var handler = Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");
+        if (handler) {
+            handler(this._executor, eventArgs);
+        }
+
+        handler = this._get_eventHandlerList().getHandler("completed");
+        if (handler) {
+            handler(this._executor, eventArgs);
+        }
+    }
+
+    function Sys$Net$WebRequest$_get_eventHandlerList() {
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+
+    function Sys$Net$WebRequest$get_url() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._url;
+    }
+    function Sys$Net$WebRequest$set_url(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+
+        this._url = value;
+    }
+
+    function Sys$Net$WebRequest$get_headers() {
+        /// <value></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._headers;
+    }
+
+    function Sys$Net$WebRequest$get_httpVerb() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+                if (this._httpVerb === null) {
+            if (this._body === null) {
+                return "GET";
+            }
+            return "POST";
+        }
+        return this._httpVerb;
+    }
+    function Sys$Net$WebRequest$set_httpVerb(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+
+        if (value.length === 0) {
+            throw Error.argument('value', Sys.Res.invalidHttpVerb);
+        }
+
+        this._httpVerb = value;
+    }
+
+    function Sys$Net$WebRequest$get_body() {
+        /// <value mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._body;
+    }
+    function Sys$Net$WebRequest$set_body(value) {
+        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
+        if (e) throw e;
+
+        this._body = value;
+    }
+
+    function Sys$Net$WebRequest$get_userContext() {
+        /// <value mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._userContext;
+    }
+    function Sys$Net$WebRequest$set_userContext(value) {
+        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
+        if (e) throw e;
+
+        this._userContext = value;
+    }
+
+    function Sys$Net$WebRequest$get_executor() {
+        /// <value type="Sys.Net.WebRequestExecutor"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._executor;
+    }
+    function Sys$Net$WebRequest$set_executor(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]);
+        if (e) throw e;
+
+        if (this._executor !== null && this._executor.get_started()) {
+            throw Error.invalidOperation(Sys.Res.setExecutorAfterActive);
+        }
+
+        this._executor = value;
+        this._executor._set_webRequest(this);
+    }
+
+    function Sys$Net$WebRequest$get_timeout() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._timeout === 0) {
+            return Sys.Net.WebRequestManager.get_defaultTimeout();
+        }
+        return this._timeout;
+    }
+    function Sys$Net$WebRequest$set_timeout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+
+        if (value < 0) {
+            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
+        }
+
+        this._timeout = value;
+    }
+
+    function Sys$Net$WebRequest$getResolvedUrl() {
+        /// <returns type="String"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return Sys.Net.WebRequest._resolveUrl(this._url);
+    }
+
+    function Sys$Net$WebRequest$invoke() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._invokeCalled) {
+            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
+        }
+
+        Sys.Net.WebRequestManager.executeRequest(this);
+        this._invokeCalled = true;
+    }
+Sys.Net.WebRequest.prototype = {
+    add_completed: Sys$Net$WebRequest$add_completed,
+    remove_completed: Sys$Net$WebRequest$remove_completed,
+
+    completed: Sys$Net$WebRequest$completed,
+
+    _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList,
+
+    get_url: Sys$Net$WebRequest$get_url,
+    set_url: Sys$Net$WebRequest$set_url,
+
+    get_headers: Sys$Net$WebRequest$get_headers,
+
+    get_httpVerb: Sys$Net$WebRequest$get_httpVerb,
+    set_httpVerb: Sys$Net$WebRequest$set_httpVerb,
+
+    get_body: Sys$Net$WebRequest$get_body,
+    set_body: Sys$Net$WebRequest$set_body,
+
+    get_userContext: Sys$Net$WebRequest$get_userContext,
+    set_userContext: Sys$Net$WebRequest$set_userContext,
+
+    get_executor: Sys$Net$WebRequest$get_executor,
+    set_executor: Sys$Net$WebRequest$set_executor,
+
+    get_timeout: Sys$Net$WebRequest$get_timeout,
+    set_timeout: Sys$Net$WebRequest$set_timeout,
+
+    getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl,
+
+    invoke: Sys$Net$WebRequest$invoke
+}
+
+Sys.Net.WebRequest._resolveUrl = function Sys$Net$WebRequest$_resolveUrl(url, baseUrl) {
+        if (url && url.indexOf('://') !== -1) {
+        return url;
+    }
+
+        if (!baseUrl || baseUrl.length === 0) {
+        var baseElement = document.getElementsByTagName('base')[0];
+        if (baseElement && baseElement.href && baseElement.href.length > 0) {
+            baseUrl = baseElement.href;
+        }
+        else {
+            baseUrl = document.URL;
+        }
+    }
+
+        var qsStart = baseUrl.indexOf('?');
+    if (qsStart !== -1) {
+        baseUrl = baseUrl.substr(0, qsStart);
+    }
+    baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);
+
+        if (!url || url.length === 0) {
+        return baseUrl;
+    }
+
+        if (url.charAt(0) === '/') {
+        var slashslash = baseUrl.indexOf('://');
+        if (slashslash === -1) {
+            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
+        }
+
+        var nextSlash = baseUrl.indexOf('/', slashslash + 3);
+        if (nextSlash === -1) {
+            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
+        }
+
+        return baseUrl.substr(0, nextSlash) + url;
+    }
+            else {
+        var lastSlash = baseUrl.lastIndexOf('/');
+        if (lastSlash === -1) {
+            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
+        }
+
+        return baseUrl.substr(0, lastSlash+1) + url;
+    }
+}
+
+Sys.Net.WebRequest._createQueryString = function Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod) {
+        if (!encodeMethod)
+        encodeMethod = encodeURIComponent;
+
+    var sb = new Sys.StringBuilder();
+
+    var i = 0;
+    for (var arg in queryString) {
+        var obj = queryString[arg];
+        if (typeof(obj) === "function") continue;
+        var val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
+        if (i !== 0) {
+            sb.append('&');
+        }
+
+        sb.append(arg);
+        sb.append('=');
+        sb.append(encodeMethod(val));
+
+        i++;
+    }
+
+    return sb.toString();
+}
+
+Sys.Net.WebRequest._createUrl = function Sys$Net$WebRequest$_createUrl(url, queryString) {
+    if (!queryString) {
+        return url;
+    }
+
+    var qs = Sys.Net.WebRequest._createQueryString(queryString);
+    if (qs.length > 0) {
+        var sep = '?';
+        if (url && url.indexOf('?') !== -1)
+            sep = '&';
+        return url + sep + qs;
+    } else {
+        return url;
+    }
+}
+
+Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');
+Sys.Net.WebServiceProxy = function Sys$Net$WebServiceProxy() {
+}
+
+
+    function Sys$Net$WebServiceProxy$set_timeout(value) {
+        this._timeout = value;
+    }
+    function Sys$Net$WebServiceProxy$get_timeout() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timeout;
+    }
+    function Sys$Net$WebServiceProxy$set_defaultUserContext(value) {
+        this._userContext = value;
+    }
+    function Sys$Net$WebServiceProxy$get_defaultUserContext() {
+        /// <value></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._userContext;
+    }
+    function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) {
+        this._succeeded = value;
+    }
+    function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() {
+        /// <value type="Function"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._succeeded;
+    }
+    function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) {
+        this._failed = value;
+    }
+    function Sys$Net$WebServiceProxy$get_defaultFailedCallback() {
+        /// <value type="Function"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._failed;
+    }
+    function Sys$Net$WebServiceProxy$set_path(value) {
+        this._path = value;
+    }
+    function Sys$Net$WebServiceProxy$get_path() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._path;
+    }
+
+    function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) {
+        /// <param name="servicePath" type="String"></param>
+        /// <param name="methodName" type="String"></param>
+        /// <param name="useGet" type="Boolean"></param>
+        /// <param name="params"></param>
+        /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
+        /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
+        /// <param name="userContext" mayBeNull="true" optional="true"></param>
+        /// <returns type="Sys.Net.WebRequest"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "servicePath", type: String},
+            {name: "methodName", type: String},
+            {name: "useGet", type: Boolean},
+            {name: "params"},
+            {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
+            {name: "onFailure", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+
+                if (onSuccess === null || typeof onSuccess === 'undefined') onSuccess = this.get_defaultSucceededCallback();
+        if (onFailure === null || typeof onFailure === 'undefined') onFailure = this.get_defaultFailedCallback();
+        if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext();
+        
+        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout());
+    }
+Sys.Net.WebServiceProxy.prototype = {
+    set_timeout: Sys$Net$WebServiceProxy$set_timeout,
+    get_timeout: Sys$Net$WebServiceProxy$get_timeout,
+    set_defaultUserContext: Sys$Net$WebServiceProxy$set_defaultUserContext,
+    get_defaultUserContext: Sys$Net$WebServiceProxy$get_defaultUserContext,
+    set_defaultSucceededCallback: Sys$Net$WebServiceProxy$set_defaultSucceededCallback,
+    get_defaultSucceededCallback: Sys$Net$WebServiceProxy$get_defaultSucceededCallback,
+    set_defaultFailedCallback: Sys$Net$WebServiceProxy$set_defaultFailedCallback,
+    get_defaultFailedCallback: Sys$Net$WebServiceProxy$get_defaultFailedCallback,
+    set_path: Sys$Net$WebServiceProxy$set_path,
+    get_path: Sys$Net$WebServiceProxy$get_path,
+
+    _invoke: Sys$Net$WebServiceProxy$_invoke
+}
+Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy');
+
+Sys.Net.WebServiceProxy.invoke = function Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout) {
+    /// <param name="servicePath" type="String"></param>
+    /// <param name="methodName" type="String"></param>
+    /// <param name="useGet" type="Boolean" optional="true"></param>
+    /// <param name="params" mayBeNull="true" optional="true"></param>
+    /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
+    /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
+    /// <param name="userContext" mayBeNull="true" optional="true"></param>
+    /// <param name="timeout" type="Number" optional="true"></param>
+    /// <returns type="Sys.Net.WebRequest"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "servicePath", type: String},
+        {name: "methodName", type: String},
+        {name: "useGet", type: Boolean, optional: true},
+        {name: "params", mayBeNull: true, optional: true},
+        {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
+        {name: "onFailure", type: Function, mayBeNull: true, optional: true},
+        {name: "userContext", mayBeNull: true, optional: true},
+        {name: "timeout", type: Number, optional: true}
+    ]);
+    if (e) throw e;
+
+
+        var request = new Sys.Net.WebRequest();
+
+if(window.TARGET_J2EE)
+    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8; action='+methodName;
+else
+    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8';
+    if (!params) params = {};
+    var urlParams = params;
+        if (!useGet || !urlParams) urlParams = {};
+if(window.TARGET_J2EE)
+    request.set_url(Sys.Net.WebRequest._createUrl(servicePath, urlParams));
+else
+    request.set_url(Sys.Net.WebRequest._createUrl(servicePath+"/"+methodName, urlParams));
+
+    var body = null;
+        if (!useGet) {
+        body = Sys.Serialization.JavaScriptSerializer.serialize(params);
+
+                if (body === "{}") body = "";
+    }
+
+        request.set_body(body);
+    request.add_completed(onComplete);
+    if (timeout && timeout > 0) request.set_timeout(timeout);
+    request.invoke();
+
+    function onComplete(response, eventArgs) {
+        if (response.get_responseAvailable()) {
+            var statusCode = response.get_statusCode();
+            var result = null;
+
+            try {
+                var contentType = response.getResponseHeader("Content-Type");
+                if (contentType.startsWith("application/json")) {
+                    result = response.get_object();
+                }
+                else if (contentType.startsWith("text/xml")) {
+                    result = response.get_xml();
+                }
+                                else {
+                    result = response.get_responseData();
+                }
+            } catch (ex) {
+            }
+
+            var error = response.getResponseHeader("jsonerror");
+            var errorObj = (error === "true");
+            if (errorObj) {
+                result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType);
+            }
+            if (((statusCode < 200) || (statusCode >= 300)) || errorObj) {
+                if (onFailure) {
+                    if (!result || !errorObj) {
+                        result = new Sys.Net.WebServiceError(false , String.format(Sys.Res.webServiceFailedNoMsg, methodName), "", "");
+                    }
+                    result._statusCode = statusCode;
+                    onFailure(result, userContext, methodName);
+                }
+                else {
+                                        var error;
+                    if (result && errorObj) {
+                                                error = result.get_exceptionType() + "-- " + result.get_message();
+                    }
+                    else {
+                                                                        error = response.get_responseData();
+                    }
+                    alert(String.format(Sys.Res.webServiceFailed, methodName, error));
+                }
+            }
+            else if (onSuccess) {
+                onSuccess(result, userContext, methodName);
+            }
+        }
+        else {
+            var msg;
+            if (response.get_timedOut()) {
+                msg = String.format(Sys.Res.webServiceTimedOut, methodName);
+            }
+            else {
+                msg = String.format(Sys.Res.webServiceFailedNoMsg, methodName)
+            }
+            if (onFailure) {
+                onFailure(new Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), userContext, methodName);
+            }
+            else {
+                                alert(msg);
+            }
+        }
+    }
+
+    return request;
+}
+
+Sys.Net.WebServiceProxy._generateTypedConstructor = function Sys$Net$WebServiceProxy$_generateTypedConstructor(type) {
+    return function(properties) {
+                if (properties) {
+            for (var name in properties) {
+                this[name] = properties[name];
+            }
+        }
+        this.__type = type;
+    }
+}
+Sys.Net.WebServiceError = function Sys$Net$WebServiceError(timedOut, message, stackTrace, exceptionType) {
+    /// <param name="timedOut" type="Boolean"></param>
+    /// <param name="message" type="String" mayBeNull="true"></param>
+    /// <param name="stackTrace" type="String" mayBeNull="true"></param>
+    /// <param name="exceptionType" type="String" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "timedOut", type: Boolean},
+        {name: "message", type: String, mayBeNull: true},
+        {name: "stackTrace", type: String, mayBeNull: true},
+        {name: "exceptionType", type: String, mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    this._timedOut = timedOut;
+    this._message = message;
+    this._stackTrace = stackTrace;
+    this._exceptionType = exceptionType;
+    this._statusCode = -1;
+}
+
+
+    function Sys$Net$WebServiceError$get_timedOut() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timedOut;
+    }
+
+    function Sys$Net$WebServiceError$get_statusCode() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._statusCode;
+    }
+
+    function Sys$Net$WebServiceError$get_message() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._message;
+    }
+
+    function Sys$Net$WebServiceError$get_stackTrace() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._stackTrace;
+    }
+
+    function Sys$Net$WebServiceError$get_exceptionType() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._exceptionType;
+    }
+Sys.Net.WebServiceError.prototype = {
+    get_timedOut: Sys$Net$WebServiceError$get_timedOut,
+
+    get_statusCode: Sys$Net$WebServiceError$get_statusCode,
+
+    get_message: Sys$Net$WebServiceError$get_message,
+
+    get_stackTrace: Sys$Net$WebServiceError$get_stackTrace,
+
+    get_exceptionType: Sys$Net$WebServiceError$get_exceptionType
+}
+Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError');
+
+Type.registerNamespace('Sys.Services');
+
+Sys.Services._ProfileService = function Sys$Services$_ProfileService() {
+    Sys.Services._ProfileService.initializeBase(this);
+    this.properties = {};
+}
+Sys.Services._ProfileService.DefaultWebServicePath = '';
+
+
+
+
+
+
+
+
+    function Sys$Services$_ProfileService$get_defaultFailedCallback() {
+        /// <value type="Function" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultFailedCallback;
+    }
+    function Sys$Services$_ProfileService$set_defaultFailedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+
+        this._defaultFailedCallback = value;
+    }
+
+    function Sys$Services$_ProfileService$get_defaultLoadCompletedCallback() {
+        /// <value type="Function" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultLoadCompletedCallback;
+    }
+    function Sys$Services$_ProfileService$set_defaultLoadCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+
+        this._defaultLoadCompletedCallback = value;
+    }
+
+    function Sys$Services$_ProfileService$get_defaultSaveCompletedCallback() {
+        /// <value type="Function" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultSaveCompletedCallback;
+    }
+    function Sys$Services$_ProfileService$set_defaultSaveCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+
+        this._defaultSaveCompletedCallback = value;
+    }
+
+
+    function Sys$Services$_ProfileService$get_path() {
+        /// <value type="String" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._path;
+    }
+    function Sys$Services$_ProfileService$set_path(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
+        if (e) throw e;
+
+        if((!value) || (!value.length)) {
+            value = '';
+        }
+        this._path = value;
+    }
+
+    function Sys$Services$_ProfileService$get_timeout() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timeout;
+    }
+    function Sys$Services$_ProfileService$set_timeout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+
+        this._timeout = value;
+    }
+
+    function Sys$Services$_ProfileService$load(propertyNames, loadCompletedCallback, failedCallback, userContext) {
+        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
+        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
+            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+        var parameters = {};
+        var methodName;
+        if(!propertyNames) {
+            methodName = "GetAllPropertiesForCurrentUser";
+        }
+        else {
+            methodName = "GetPropertiesForCurrentUser";
+            parameters = { properties: this._clonePropertyNames(propertyNames) };
+        }
+                this._invoke(this._get_path(),
+                                        methodName,
+                                        false,
+                                        parameters,
+                                        Function.createDelegate(this, this._onLoadComplete),
+                                        Function.createDelegate(this, this._onLoadFailed),                                         [loadCompletedCallback, failedCallback, userContext]);
+    }
+
+    function Sys$Services$_ProfileService$save(propertyNames, saveCompletedCallback, failedCallback, userContext) {
+        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
+        /// <param name="saveCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
+            {name: "saveCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+        var flattenedProperties = this._flattenProperties(propertyNames, this.properties);
+                this._invoke(this._get_path(),
+                                        "SetPropertiesForCurrentUser",
+                                        false,
+                                        { values: flattenedProperties },
+                                        Function.createDelegate(this, this._onSaveComplete),
+                                        Function.createDelegate(this, this._onSaveFailed),
+                                        [saveCompletedCallback, failedCallback, userContext]);
+    }
+
+
+    function Sys$Services$_ProfileService$_clonePropertyNames(arr) {
+        var nodups = [];
+        var seen = {};
+        for(var i=0; i < arr.length; i++) {
+            var prop = arr[i];
+            if(!seen[prop]) { Array.add(nodups, prop); seen[prop]=true; };
+        }
+        return nodups;
+    }
+
+
+
+
+
+    function Sys$Services$_ProfileService$_flattenProperties(propertyNames, properties, groupName) {
+        var flattenedProperties = {};
+        var val;
+        var key;
+        if(propertyNames && propertyNames.length === 0) {
+            return flattenedProperties;
+        }
+
+        for (var property in properties) {
+            val = properties[property];
+            key = groupName ? groupName + "." + property : property;
+                        if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
+                var groupProperties = this._flattenProperties(propertyNames, val, key);
+                                                                                                                for(var subKey in groupProperties) {
+                    var subVal = groupProperties[subKey];
+                    flattenedProperties[subKey] = subVal;
+                }
+            }
+            else {
+                                if(!propertyNames || Array.indexOf(propertyNames, key) !== -1) {
+                    flattenedProperties[key] = val;
+                }
+            }
+        }
+        return flattenedProperties;
+    }
+
+    function Sys$Services$_ProfileService$_get_path() {
+        var path = this.get_path();
+        if(!path.length) {
+            path = Sys.Services._ProfileService.DefaultWebServicePath;
+        }
+        if(!path || !path.length) {
+            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
+        }
+        return path;
+    }
+
+    function Sys$Services$_ProfileService$_onLoadComplete(result, context, methodName) {
+        if(typeof(result) !== "object") {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Object"));
+        }
+
+        var unflattened = this._unflattenProperties(result);
+        for(var name in unflattened) {
+            this.properties[name] = unflattened[name];
+        }
+        
+        var userCallback = context[0];
+        var callback = userCallback ? userCallback : this._defaultLoadCompletedCallback;
+        if(callback) {
+            callback(result.length, context[2], "Sys.Services.ProfileService.load");
+        }
+    }
+
+    function Sys$Services$_ProfileService$_onLoadFailed(err, context, methodName) {
+        var userCallback = context[1];
+        var callback = userCallback ? userCallback : this._defaultFailedCallback;
+        if(callback) {
+            callback(err, context[2], "Sys.Services.ProfileService.load");
+        }
+    }
+
+    function Sys$Services$_ProfileService$_onSaveComplete(result, context, methodName) {
+        if(typeof(result) !== "number") {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Number"));
+        }
+        
+        var userCallback = context[0];
+        var userContext = context[2];
+        var callback = userCallback ? userCallback : this._defaultSaveCompletedCallback;
+        if(callback) {
+            callback(result, userContext, "Sys.Services.ProfileService.save");
+        }
+    }
+
+    function Sys$Services$_ProfileService$_onSaveFailed(err, context, methodName) {
+        var userCallback = context[1];
+        var userContext = context[2];
+        var callback = userCallback ? userCallback : this._defaultFailedCallback;
+        if(callback) {
+            callback(err, userContext, "Sys.Services.ProfileService.save");
+        }
+    }
+
+    function Sys$Services$_ProfileService$_unflattenProperties(properties) {
+        var unflattenedProperties = {};
+        var dotIndex;
+        var val;
+        var count = 0;
+        for(var key in properties) {
+            count++;
+            val = properties[key];
+
+            dotIndex = key.indexOf('.');
+            if(dotIndex !== -1) {
+                var groupName = key.substr(0, dotIndex);
+                key = key.substr(dotIndex+1);
+                var group = unflattenedProperties[groupName];
+                if((!group) || (!Sys.Services.ProfileGroup.isInstanceOfType(group))) {
+                    group = new Sys.Services.ProfileGroup();
+                    unflattenedProperties[groupName] = group;
+                }
+                group[key] = val;
+            }
+            else {
+                unflattenedProperties[key] = val;
+            }
+        }
+        properties.length = count;
+        return unflattenedProperties;
+    }
+Sys.Services._ProfileService.prototype = {
+    _defaultFailedCallback: null,
+    _defaultLoadCompletedCallback: null,
+    _defaultSaveCompletedCallback: null,
+    _path: '',
+    _timeout: 0,
+
+    get_defaultFailedCallback: Sys$Services$_ProfileService$get_defaultFailedCallback,
+    set_defaultFailedCallback: Sys$Services$_ProfileService$set_defaultFailedCallback,
+
+    get_defaultLoadCompletedCallback: Sys$Services$_ProfileService$get_defaultLoadCompletedCallback,
+    set_defaultLoadCompletedCallback: Sys$Services$_ProfileService$set_defaultLoadCompletedCallback,
+
+    get_defaultSaveCompletedCallback: Sys$Services$_ProfileService$get_defaultSaveCompletedCallback,
+    set_defaultSaveCompletedCallback: Sys$Services$_ProfileService$set_defaultSaveCompletedCallback,
+    
+    
+    get_path: Sys$Services$_ProfileService$get_path,
+    set_path: Sys$Services$_ProfileService$set_path,
+        
+    get_timeout: Sys$Services$_ProfileService$get_timeout,
+    set_timeout: Sys$Services$_ProfileService$set_timeout,
+        
+    load: Sys$Services$_ProfileService$load,
+
+    save: Sys$Services$_ProfileService$save,
+    
+        _clonePropertyNames: Sys$Services$_ProfileService$_clonePropertyNames,    
+
+                    _flattenProperties: Sys$Services$_ProfileService$_flattenProperties,
+    
+    _get_path: Sys$Services$_ProfileService$_get_path,    
+
+    _onLoadComplete: Sys$Services$_ProfileService$_onLoadComplete,
+    
+    _onLoadFailed: Sys$Services$_ProfileService$_onLoadFailed,
+    
+    _onSaveComplete: Sys$Services$_ProfileService$_onSaveComplete,
+    
+    _onSaveFailed: Sys$Services$_ProfileService$_onSaveFailed,
+    
+    _unflattenProperties: Sys$Services$_ProfileService$_unflattenProperties
+}
+Sys.Services._ProfileService.registerClass('Sys.Services._ProfileService', Sys.Net.WebServiceProxy);
+Sys.Services.ProfileService = new Sys.Services._ProfileService();
+
+Sys.Services.ProfileGroup = function Sys$Services$ProfileGroup(properties) {
+    /// <param name="properties" optional="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "properties", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    if(properties) {
+        for(var property in properties) {
+            this[property] = properties[property];
+        }
+    }
+}
+Sys.Services.ProfileGroup.registerClass('Sys.Services.ProfileGroup');
+
+
+
+
+
+
+
+
+Sys.Services._AuthenticationService = function Sys$Services$_AuthenticationService() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    Sys.Services._AuthenticationService.initializeBase(this);
+}
+Sys.Services._AuthenticationService.DefaultWebServicePath = '';
+
+
+
+
+
+
+
+
+    function Sys$Services$_AuthenticationService$get_defaultFailedCallback() {
+        /// <value type="Function" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultFailedCallback;
+    }
+    function Sys$Services$_AuthenticationService$set_defaultFailedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+
+        this._defaultFailedCallback = value;
+    }
+
+    function Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback() {
+        /// <value type="Function" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultLoginCompletedCallback;
+    }
+    function Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+
+        this._defaultLoginCompletedCallback = value;
+    }
+
+    function Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback() {
+        /// <value type="Function" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultLogoutCompletedCallback;
+    }
+    function Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+
+        this._defaultLogoutCompletedCallback = value;
+    }
+
+    function Sys$Services$_AuthenticationService$get_isLoggedIn() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._authenticated;
+    }
+
+    function Sys$Services$_AuthenticationService$get_path() {
+        /// <value type="String" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._path;
+    }
+    function Sys$Services$_AuthenticationService$set_path(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
+        if (e) throw e;
+
+        if((!value) || (!value.length)) {
+            value = '';
+        }
+        this._path = value;
+    }
+
+    function Sys$Services$_AuthenticationService$get_timeout() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timeout;
+    }
+    function Sys$Services$_AuthenticationService$set_timeout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+
+        this._timeout = value;
+    }
+
+    function Sys$Services$_AuthenticationService$login(username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext) {
+        /// <param name="username" type="String" mayBeNull="false"></param>
+        /// <param name="password" type="String" mayBeNull="true"></param>
+        /// <param name="isPersistent" type="Boolean" optional="true" mayBeNull="true"></param>
+        /// <param name="customInfo" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="loginCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "username", type: String},
+            {name: "password", type: String, mayBeNull: true},
+            {name: "isPersistent", type: Boolean, mayBeNull: true, optional: true},
+            {name: "customInfo", type: String, mayBeNull: true, optional: true},
+            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
+            {name: "loginCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+                this._invoke(this._get_path(), "Login", false,
+                                        { userName: username, password: password, createPersistentCookie: isPersistent },
+                                        Function.createDelegate(this, this._onLoginComplete),
+                                        Function.createDelegate(this, this._onLoginFailed),
+                                        [username, password, isPersistent, redirectUrl, loginCompletedCallback, failedCallback, userContext]);
+    }
+
+    function Sys$Services$_AuthenticationService$logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext) {
+        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="logoutCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
+            {name: "logoutCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+
+                this._invoke(this._get_path(), "Logout", false, {}, 
+                                        Function.createDelegate(this, this._onLogoutComplete),
+                                        Function.createDelegate(this, this._onLogoutFailed),
+                                        [redirectUrl, logoutCompletedCallback, failedCallback, userContext]);
+    }
+
+    function Sys$Services$_AuthenticationService$_get_path() {
+        var path = this.get_path();
+        if(!path.length) {
+            path = Sys.Services._AuthenticationService.DefaultWebServicePath;
+        }
+        if(!path || !path.length) {
+            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
+        }
+        return path;
+    }
+
+    function Sys$Services$_AuthenticationService$_onLoginComplete(result, context, methodName) {
+        if(typeof(result) !== "boolean") {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Boolean"));
+        }
+        
+        var redirectUrl = context[3];
+        var userCallback = context[4];
+        var userContext = context[6];
+        var callback = userCallback ? userCallback : this._defaultLoginCompletedCallback;
+        
+        if(result) {
+            this._authenticated = true;
+
+            if(callback) {
+                callback(true, userContext, "Sys.Services.AuthenticationService.login");
+            }
+            
+            if(typeof(redirectUrl) !== "undefined" && redirectUrl !== null) {
+                                window.location.href = redirectUrl;
+            }
+        }
+        else if (callback) {
+            callback(false, userContext, "Sys.Services.AuthenticationService.login");
+        }
+    }
+
+    function Sys$Services$_AuthenticationService$_onLoginFailed(err, context, methodName) {
+        var userCallback = context[5];
+        var callback = userCallback ? userCallback : this._defaultFailedCallback;
+        if(callback) {
+            callback(err, context[6], "Sys.Services.AuthenticationService.login");
+        }
+    }
+
+    function Sys$Services$_AuthenticationService$_onLogoutComplete(result, context, methodName) {
+        if(result !== null) {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "null"));
+        }
+        
+        var redirectUrl = context[0];
+        var userCallback = context[1];
+        var userContext = context[3];
+        var callback = userCallback ? userCallback : this._defaultLogoutCompletedCallback;
+
+        this._authenticated = false;
+        
+        if (callback) {
+            callback(null, userContext, "Sys.Services.AuthenticationService.logout");
+        }
+        
+                if(!redirectUrl) {
+            window.location.reload();
+        }
+        else {
+            window.location.href = redirectUrl;
+        }
+    }
+
+    function Sys$Services$_AuthenticationService$_onLogoutFailed(err, context, methodName) {
+        var userCallback = context[2];
+        var callback = userCallback ? userCallback : this._defaultFailedCallback;
+        if(callback) {
+            callback(err, context[3], "Sys.Services.AuthenticationService.logout");
+        }
+    }
+
+    function Sys$Services$_AuthenticationService$_setAuthenticated(authenticated) {
+        this._authenticated = authenticated;
+    }
+Sys.Services._AuthenticationService.prototype = {
+    _defaultFailedCallback: null,
+    _defaultLoginCompletedCallback: null,
+    _defaultLogoutCompletedCallback: null,
+    _path: '',
+    _timeout: 0,
+    _authenticated: false,
+    
+    get_defaultFailedCallback: Sys$Services$_AuthenticationService$get_defaultFailedCallback,
+    set_defaultFailedCallback: Sys$Services$_AuthenticationService$set_defaultFailedCallback,
+
+    get_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback,
+    set_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback,
+
+    get_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback,
+    set_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback,
+
+    get_isLoggedIn: Sys$Services$_AuthenticationService$get_isLoggedIn,
+
+    get_path: Sys$Services$_AuthenticationService$get_path,
+    set_path: Sys$Services$_AuthenticationService$set_path,
+    
+    get_timeout: Sys$Services$_AuthenticationService$get_timeout,
+    set_timeout: Sys$Services$_AuthenticationService$set_timeout,    
+    
+    login: Sys$Services$_AuthenticationService$login,
+    
+    logout: Sys$Services$_AuthenticationService$logout,
+    
+    _get_path: Sys$Services$_AuthenticationService$_get_path,
+    
+    _onLoginComplete: Sys$Services$_AuthenticationService$_onLoginComplete,
+    
+    _onLoginFailed: Sys$Services$_AuthenticationService$_onLoginFailed,
+    
+    _onLogoutComplete: Sys$Services$_AuthenticationService$_onLogoutComplete,
+    
+    _onLogoutFailed: Sys$Services$_AuthenticationService$_onLogoutFailed,
+    
+    _setAuthenticated: Sys$Services$_AuthenticationService$_setAuthenticated    
+}
+
+Sys.Services._AuthenticationService.registerClass('Sys.Services._AuthenticationService', Sys.Net.WebServiceProxy);
+Sys.Services.AuthenticationService = new Sys.Services._AuthenticationService();
+
+Type.registerNamespace('Sys.Serialization');
+
+
+Sys.Serialization.JavaScriptSerializer = function Sys$Serialization$JavaScriptSerializer() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.JavaScriptSerializer');
+
+Sys.Serialization.JavaScriptSerializer._stringRegEx = new RegExp('["\b\f\n\r\t\\\\\x00-\x1F]', 'i');
+
+Sys.Serialization.JavaScriptSerializer._serializeWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, stringBuilder, sort) {
+    var i;
+    switch (typeof object) {
+    case 'object':
+        if (object) {
+                        if (Array.isInstanceOfType(object)) {
+                stringBuilder.append('[');
+                for (i = 0; i < object.length; ++i) {
+                    if (i > 0) {
+                        stringBuilder.append(',');
+                    }
+                    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], stringBuilder);
+                }
+                stringBuilder.append(']');
+            }
+            else {
+                                                                if (Date.isInstanceOfType(object)) {
+                    stringBuilder.append('"\\/Date(');
+                    stringBuilder.append(object.getTime());
+                    stringBuilder.append(')\\/"');
+                    break;
+                }
+
+                var properties = [];
+                var propertyCount = 0;
+                for (var name in object) {
+                                        if (name.startsWith('$')) {
+                        continue;
+                    }
+                    properties[propertyCount++] = name;
+                }
+                if (sort) properties.sort();
+
+                stringBuilder.append('{');
+                var needComma = false;
+                for (i=0; i<propertyCount; i++) {
+                    var value = object[properties[i]];
+                    if (typeof value !== 'undefined' && typeof value !== 'function') {
+                        if (needComma) {
+                            stringBuilder.append(',');
+                        }
+                        else {
+                            needComma = true;
+                        }
+
+                                                Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(properties[i], stringBuilder, sort);
+                        stringBuilder.append(':');
+                        Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(value, stringBuilder, sort);
+                    }
+                }
+                stringBuilder.append('}');
+            }
+        }
+        else {
+            stringBuilder.append('null');
+        }
+        break;
+
+    case 'number':
+        if (isFinite(object)) {
+            stringBuilder.append(String(object));
+        }
+        else {
+            throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
+        }
+        break;
+
+    case 'string':
+        stringBuilder.append('"');
+
+                if (Sys.Browser.agent === Sys.Browser.Safari || Sys.Serialization.JavaScriptSerializer._stringRegEx.test(object)) {
+            var length = object.length;
+            for (i = 0; i < length; ++i) {
+                var curChar = object.charAt(i);
+                                if (curChar >= ' ') {
+                                        if (curChar === '\\' || curChar === '"') {
+                        stringBuilder.append('\\');
+                    }
+                    stringBuilder.append(curChar);
+                }
+                else {
+                    switch (curChar) {
+                        case '\b':
+                            stringBuilder.append('\\b');
+                            break;
+                        case '\f':
+                            stringBuilder.append('\\f');
+                            break;
+                        case '\n':
+                            stringBuilder.append('\\n');
+                            break;
+                        case '\r':
+                            stringBuilder.append('\\r');
+                            break;
+                        case '\t':
+                            stringBuilder.append('\\t');
+                            break;
+                        default:
+                                                        stringBuilder.append('\\u00');
+                            if (curChar.charCodeAt() < 16) stringBuilder.append('0');
+                            stringBuilder.append(curChar.charCodeAt().toString(16));
+                    }
+                }
+            }
+        } else {
+            stringBuilder.append(object);
+        }
+        stringBuilder.append('"');
+        break;
+
+    case 'boolean':
+        stringBuilder.append(object.toString());
+        break;
+
+    default:
+        stringBuilder.append('null');
+        break;
+    }
+}
+
+Sys.Serialization.JavaScriptSerializer.serialize = function Sys$Serialization$JavaScriptSerializer$serialize(object) {
+    /// <param name="object" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "object", mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    var stringBuilder = new Sys.StringBuilder();
+    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false);
+    return stringBuilder.toString();
+}
+
+Sys.Serialization.JavaScriptSerializer.deserialize = function Sys$Serialization$JavaScriptSerializer$deserialize(data) {
+    /// <param name="data" type="String"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "data", type: String}
+    ]);
+    if (e) throw e;
+
+    if (data.length === 0) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString);
+                                                            
+    try {    
+        var exp = data.replace(new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)\\)\\\\/\\"', 'g'), "$1new Date($2)");
+        return eval('(' + exp + ')');
+    }
+    catch (e) {
+         throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson);
+    }
+}
+
+Sys.CultureInfo = function Sys$CultureInfo(name, numberFormat, dateTimeFormat) {
+    /// <param name="name" type="String"></param>
+    /// <param name="numberFormat" type="Object"></param>
+    /// <param name="dateTimeFormat" type="Object"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "name", type: String},
+        {name: "numberFormat", type: Object},
+        {name: "dateTimeFormat", type: Object}
+    ]);
+    if (e) throw e;
+
+    this.name = name;
+    this.numberFormat = numberFormat;
+    this.dateTimeFormat = dateTimeFormat;
+}
+
+    function Sys$CultureInfo$_getDateTimeFormats() {
+        if (! this._dateTimeFormats) {
+            var dtf = this.dateTimeFormat;
+            this._dateTimeFormats =
+              [ dtf.MonthDayPattern,
+                dtf.YearMonthPattern,
+                dtf.ShortDatePattern,
+                dtf.ShortTimePattern,
+                dtf.LongDatePattern,
+                dtf.LongTimePattern,
+                dtf.FullDateTimePattern,
+                dtf.RFC1123Pattern,
+                dtf.SortableDateTimePattern,
+                dtf.UniversalSortableDateTimePattern ];
+        }
+        return this._dateTimeFormats;
+    }
+    function Sys$CultureInfo$_getMonthIndex(value) {
+        if (!this._upperMonths) {
+            this._upperMonths = this._toUpperArray(this.dateTimeFormat.MonthNames);
+        }
+        return Array.indexOf(this._upperMonths, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_getAbbrMonthIndex(value) {
+        if (!this._upperAbbrMonths) {
+            this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
+        }
+        return Array.indexOf(this._upperMonths, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_getDayIndex(value) {
+        if (!this._upperDays) {
+            this._upperDays = this._toUpperArray(this.dateTimeFormat.DayNames);
+        }
+        return Array.indexOf(this._upperDays, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_getAbbrDayIndex(value) {
+        if (!this._upperAbbrDays) {
+            this._upperAbbrDays = this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);
+        }
+        return Array.indexOf(this._upperAbbrDays, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_toUpperArray(arr) {
+        var result = [];
+        for (var i = 0, il = arr.length; i < il; i++) {
+            result[i] = this._toUpper(arr[i]);
+        }
+        return result;
+    }
+    function Sys$CultureInfo$_toUpper(value) {
+                        return value.split("\u00A0").join(' ').toUpperCase();
+    }
+Sys.CultureInfo.prototype = {
+    _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats,
+    _getMonthIndex: Sys$CultureInfo$_getMonthIndex,
+    _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex,
+    _getDayIndex: Sys$CultureInfo$_getDayIndex,
+    _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex,
+    _toUpperArray: Sys$CultureInfo$_toUpperArray,
+    _toUpper: Sys$CultureInfo$_toUpper
+}
+Sys.CultureInfo._parse = function Sys$CultureInfo$_parse(value) {
+    var cultureInfo = Sys.Serialization.JavaScriptSerializer.deserialize(value);
+    return new Sys.CultureInfo(cultureInfo.name, cultureInfo.numberFormat, cultureInfo.dateTimeFormat);
+}
+Sys.CultureInfo.registerClass('Sys.CultureInfo');
+
+Sys.CultureInfo.InvariantCulture = Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');
+
+if (typeof(__cultureInfo) === 'undefined') {
+    var __cultureInfo = '{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';
+}
+Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo);
+delete __cultureInfo;
+
+Sys.UI.Point = function Sys$UI$Point(x, y) {
+    /// <param name="x" type="Number" integer="true"></param>
+    /// <param name="y" type="Number" integer="true"></param>
+    /// <field name="x" type="Number" integer="true"></field>
+    /// <field name="y" type="Number" integer="true"></field>
+    var e = Function._validateParams(arguments, [
+        {name: "x", type: Number, integer: true},
+        {name: "y", type: Number, integer: true}
+    ]);
+    if (e) throw e;
+
+    this.x = x;
+    this.y = y;
+}
+Sys.UI.Point.registerClass('Sys.UI.Point');
+Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) {
+    /// <param name="x" type="Number" integer="true"></param>
+    /// <param name="y" type="Number" integer="true"></param>
+    /// <param name="height" type="Number" integer="true"></param>
+    /// <param name="width" type="Number" integer="true"></param>
+    /// <field name="x" type="Number" integer="true"></field>
+    /// <field name="y" type="Number" integer="true"></field>
+    /// <field name="height" type="Number" integer="true"></field>
+    /// <field name="width" type="Number" integer="true"></field>
+    var e = Function._validateParams(arguments, [
+        {name: "x", type: Number, integer: true},
+        {name: "y", type: Number, integer: true},
+        {name: "height", type: Number, integer: true},
+        {name: "width", type: Number, integer: true}
+    ]);
+    if (e) throw e;
+
+    this.x = x;
+    this.y = y;
+    this.height = height;
+    this.width = width;
+}
+Sys.UI.Bounds.registerClass('Sys.UI.Bounds');
+Sys.UI.DomElement = function Sys$UI$DomElement() {
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+Sys.UI.DomElement.registerClass('Sys.UI.DomElement');
+
+Sys.UI.DomElement.addCssClass = function Sys$UI$DomElement$addCssClass(element, className) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+
+    if (!Sys.UI.DomElement.containsCssClass(element, className)) {
+        if (element.className === '') {
+            element.className = className;
+        }
+        else {
+            element.className += ' ' + className;
+        }
+    }
+}
+
+Sys.UI.DomElement.containsCssClass = function Sys$UI$DomElement$containsCssClass(element, className) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+
+    return Array.contains(element.className.split(' '), className);
+}
+
+Sys.UI.DomElement.getBounds = function Sys$UI$DomElement$getBounds(element) {
+    /// <param name="element" domElement="true"></param>
+    /// <returns type="Sys.UI.Bounds"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+
+    var offset = Sys.UI.DomElement.getLocation(element);
+
+    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
+}
+
+var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) {
+    /// <param name="id" type="String"></param>
+    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
+    /// <returns domElement="true" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "id", type: String},
+        {name: "element", mayBeNull: true, domElement: true, optional: true}
+    ]);
+    if (e) throw e;
+
+    if (!element) return document.getElementById(id);
+    if (element.getElementById) return element.getElementById(id);
+
+        var nodeQueue = [];
+    var childNodes = element.childNodes;
+    for (var i = 0; i < childNodes.length; i++) {
+        var node = childNodes[i];
+        if (node.nodeType == 1) {
+            nodeQueue[nodeQueue.length] = node;
+        }
+    }
+
+    while (nodeQueue.length) {
+        node = nodeQueue.shift();
+        if (node.id == id) {
+            return node;
+        }
+        childNodes = node.childNodes;
+        for (i = 0; i < childNodes.length; i++) {
+            node = childNodes[i];
+            if (node.nodeType == 1) {
+                nodeQueue[nodeQueue.length] = node;
+            }
+        }
+    }
+
+    return null;
+}
+
+
+
+switch(Sys.Browser.agent) {
+    case Sys.Browser.InternetExplorer:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+
+                        if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);
+
+                                                var clientRects = element.getClientRects();
+            if (!clientRects || !clientRects.length) {
+                return new Sys.UI.Point(0,0);
+            }
+
+            var w = element.ownerDocument.parentWindow;
+                                                var offsetL = w.screenLeft - top.screenLeft - top.document.documentElement.scrollLeft + 2;
+            var offsetT = w.screenTop - top.screenTop - top.document.documentElement.scrollTop + 2;
+
+                                                                        var f = w.frameElement || null;
+            if (f) {
+                                                                                var fstyle = f.currentStyle;
+                offsetL += (f.frameBorder || 1) * 2 +
+                    (parseInt(fstyle.paddingLeft) || 0) +
+                    (parseInt(fstyle.borderLeftWidth) || 0) -
+                    element.ownerDocument.documentElement.scrollLeft;
+                offsetT += (f.frameBorder || 1) * 2 +
+                    (parseInt(fstyle.paddingTop) || 0) +
+                    (parseInt(fstyle.borderTopWidth) || 0) -
+                    element.ownerDocument.documentElement.scrollTop;
+            }
+
+            var clientRect = clientRects[0];
+
+            return new Sys.UI.Point(
+                clientRect.left - offsetL,
+                clientRect.top - offsetT);
+        }
+        break;
+    case Sys.Browser.Safari:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+
+                        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
+
+                                                var offsetX = 0;
+            var offsetY = 0;
+
+            var previous = null;
+            var previousStyle = null;
+            var currentStyle;
+            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
+                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+                var tagName = parent.tagName;
+
+                                                                                if ((parent.offsetLeft || parent.offsetTop) &&
+                    ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) {
+
+                    offsetX += parent.offsetLeft;
+                    offsetY += parent.offsetTop;
+                }
+            }
+
+            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
+            var elementPosition = currentStyle ? currentStyle.position : null;
+            var elementPositioned = elementPosition && (elementPosition !== "static");
+                        if (!elementPosition || (elementPosition !== "absolute")) {
+                                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
+                    tagName = parent.tagName;
+
+                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
+                        offsetX -= (parent.scrollLeft || 0);
+                        offsetY -= (parent.scrollTop || 0);
+                    }
+                    currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+                    var parentPosition = currentStyle ? currentStyle.position : null;
+
+                                        if (parentPosition && (parentPosition === "absolute")) break;
+                }
+            }
+
+            return new Sys.UI.Point(offsetX, offsetY);
+        }
+        break;
+    case Sys.Browser.Opera:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+
+                        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
+
+                                                var offsetX = 0;
+            var offsetY = 0;
+
+            var previous = null;
+            for (var parent = element; parent; previous = parent, parent = parent.offsetParent) {
+
+                var tagName = parent.tagName;
+
+                offsetX += parent.offsetLeft || 0;
+                offsetY += parent.offsetTop || 0;
+            }
+
+                        var elementPosition = element.style.position;
+            var elementPositioned = elementPosition && (elementPosition !== "static");
+
+                        for (var parent = element.parentNode; parent; parent = parent.parentNode) {
+                tagName = parent.tagName;
+
+                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop) &&
+                    ((elementPositioned &&
+                    ((parent.style.overflow === "scroll") || (parent.style.overflow === "auto"))))) {
+                                        
+                    offsetX -= (parent.scrollLeft || 0);
+                    offsetY -= (parent.scrollTop || 0);
+                }
+                var parentPosition = (parent && parent.style) ? parent.style.position : null;
+
+                                elementPositioned = elementPositioned || (parentPosition && (parentPosition !== "static"));
+            }
+
+
+            return new Sys.UI.Point(offsetX, offsetY);
+        }
+        break;
+    default:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+
+                        if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
+
+            var offsetX = 0;
+            var offsetY = 0;
+            var previous = null;
+            var previousStyle = null;
+            var currentStyle = null;
+            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
+                var tagName = parent.tagName;
+                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+
+                                                if ((parent.offsetLeft || parent.offsetTop) &&
+                    !((tagName === "BODY") &&
+                    (!previousStyle || previousStyle.position !== "absolute"))) {
+
+                    offsetX += parent.offsetLeft;
+                    offsetY += parent.offsetTop;
+                }
+
+                                                if (previous !== null && currentStyle) {
+                                                                                                                                            if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) {
+                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
+                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
+                    }
+                    if (tagName === "TABLE" &&
+                        (currentStyle.position === "relative" || currentStyle.position === "absolute")) {
+                        offsetX += parseInt(currentStyle.marginLeft) || 0;
+                        offsetY += parseInt(currentStyle.marginTop) || 0;
+                    }
+                }
+            }
+
+            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
+            var elementPosition = currentStyle ? currentStyle.position : null;
+            var elementPositioned = elementPosition && (elementPosition !== "static");
+                        if (!elementPosition || (elementPosition !== "absolute")) {
+                                                                                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
+                                                                                tagName = parent.tagName;
+
+                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
+
+                        offsetX -= (parent.scrollLeft || 0);
+                        offsetY -= (parent.scrollTop || 0);
+
+                        currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
+                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
+                    }
+                }
+            }
+
+            return new Sys.UI.Point(offsetX, offsetY);
+        }
+        break;
+
+}
+
+
+Sys.UI.DomElement.removeCssClass = function Sys$UI$DomElement$removeCssClass(element, className) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+
+    var currentClassName = ' ' + element.className + ' ';
+    var index = currentClassName.indexOf(' ' + className + ' ');
+    if (index >= 0) {
+        element.className = (currentClassName.substr(0, index) + ' ' +
+            currentClassName.substring(index + className.length + 1, currentClassName.length)).trim();
+    }
+}
+
+Sys.UI.DomElement.setLocation = function Sys$UI$DomElement$setLocation(element, x, y) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="x" type="Number" integer="true"></param>
+    /// <param name="y" type="Number" integer="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "x", type: Number, integer: true},
+        {name: "y", type: Number, integer: true}
+    ]);
+    if (e) throw e;
+
+    var style = element.style;
+    style.position = 'absolute';
+    style.left = x + "px";
+    style.top = y + "px";
+}
+
+Sys.UI.DomElement.toggleCssClass = function Sys$UI$DomElement$toggleCssClass(element, className) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+
+    if (Sys.UI.DomElement.containsCssClass(element, className)) {
+        Sys.UI.DomElement.removeCssClass(element, className);
+    }
+    else {
+        Sys.UI.DomElement.addCssClass(element, className);
+    }
+}
+
+Sys.UI.DomElement._getCurrentStyle = function Sys$UI$DomElement$_getCurrentStyle(element) {
+    var w = (element.ownerDocument ? element.ownerDocument : element.documentElement).defaultView;
+    return ((w && (element !== w) && w.getComputedStyle) ? w.getComputedStyle(element, null) : element.style);
+}
+Sys.UI.Behavior = function Sys$UI$Behavior(element) {
+    /// <param name="element" domElement="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+
+    Sys.UI.Behavior.initializeBase(this);
+
+    this._element = element;
+
+    var behaviors = element._behaviors;
+    if (!behaviors) {
+        element._behaviors = [this];
+    }
+    else {
+        behaviors[behaviors.length] = this;
+    }
+}
+
+
+    function Sys$UI$Behavior$get_element() {
+        /// <value domElement="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._element;
+    }
+    function Sys$UI$Behavior$get_id() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id');
+        if (baseId) return baseId;
+        if (!this._element || !this._element.id) return '';
+        return this._element.id + '$' + this.get_name();
+    }
+    function Sys$UI$Behavior$get_name() {
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._name) return this._name;
+        var name = Object.getTypeName(this);
+        var i = name.lastIndexOf('.');
+        if (i != -1) name = name.substr(i + 1);
+        if (!this.get_isInitialized()) this._name = name;
+        return name;
+    }
+    function Sys$UI$Behavior$set_name(value) {
+        if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' '))
+            throw Error.argument('value', Sys.Res.invalidId);
+        if (typeof(this._element[value]) !== 'undefined')
+            throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value));
+        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
+        this._name = value;
+    }
+    function Sys$UI$Behavior$initialize() {
+        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
+        var name = this.get_name();
+        if (name) this._element[name] = this;
+    }
+    function Sys$UI$Behavior$dispose() {
+        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
+        if (this._element) {
+            var name = this.get_name();
+            if (name) {
+                this._element[name] = null;
+            }
+            Array.remove(this._element._behaviors, this);
+            delete this._element;
+        }
+    }
+Sys.UI.Behavior.prototype = {
+    _name: null,
+    get_element: Sys$UI$Behavior$get_element,
+    get_id: Sys$UI$Behavior$get_id,
+    get_name: Sys$UI$Behavior$get_name,
+    set_name: Sys$UI$Behavior$set_name,
+    initialize: Sys$UI$Behavior$initialize,
+    dispose: Sys$UI$Behavior$dispose
+}
+Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component);
+
+Sys.UI.Behavior.getBehaviorByName = function Sys$UI$Behavior$getBehaviorByName(element, name) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="name" type="String"></param>
+    /// <returns type="Sys.UI.Behavior" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "name", type: String}
+    ]);
+    if (e) throw e;
+
+    var b = element[name];
+    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
+}
+
+Sys.UI.Behavior.getBehaviors = function Sys$UI$Behavior$getBehaviors(element) {
+    /// <param name="element" domElement="true"></param>
+    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+
+    if (!element._behaviors) return [];
+    return Array.clone(element._behaviors);
+}
+
+Sys.UI.Behavior.getBehaviorsByType = function Sys$UI$Behavior$getBehaviorsByType(element, type) {
+    /// <param name="element" domElement="true"></param>
+    /// <param name="type" type="Type"></param>
+    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "type", type: Type}
+    ]);
+    if (e) throw e;
+
+    var behaviors = element._behaviors;
+    var results = [];
+    if (behaviors) {
+        for (var i = 0, l = behaviors.length; i < l; i++) {
+            if (type.isInstanceOfType(behaviors[i])) {
+                results[results.length] = behaviors[i];
+            }
+        }
+    }
+    return results;
+}
+Sys.UI.VisibilityMode = function Sys$UI$VisibilityMode() {
+    /// <field name="hide" type="Number" integer="true" static="true"></field>
+    /// <field name="collapse" type="Number" integer="true" static="true"></field>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+
+
+
+Sys.UI.VisibilityMode.prototype = {
+    hide: 0,
+    collapse: 1
+}
+Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");
+
+Sys.UI.Control = function Sys$UI$Control(element) {
+    /// <param name="element" domElement="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+
+    if (typeof(element.control) != 'undefined') throw Error.invalidOperation(Sys.Res.controlAlreadyDefined);
+    Sys.UI.Control.initializeBase(this);
+
+    this._element = element;
+    element.control = this;
+
+    this._oldDisplayMode = this._element.style.display;
+    if (!this._oldDisplayMode || (this._oldDisplayMode == 'none')) {
+        this._oldDisplayMode = '';
+    }
+}
+
+
+
+
+    function Sys$UI$Control$get_element() {
+        /// <value domElement="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._element;
+    }
+    function Sys$UI$Control$get_id() {
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._element) return '';
+        return this._element.id;
+    }
+    function Sys$UI$Control$set_id(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+
+        throw Error.invalidOperation(Sys.Res.cantSetId);
+    }
+    function Sys$UI$Control$get_parent() {
+        /// <value type="Sys.UI.Control"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._parent) {
+            return this._parent;
+        }
+        else {
+            var parentElement = this._element.parentNode;
+            while (parentElement) {
+                if (parentElement.control) {
+                    return parentElement.control;
+                }
+                parentElement = parentElement.parentNode;
+            }
+            return null;
+        }
+    }
+    function Sys$UI$Control$set_parent(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]);
+        if (e) throw e;
+
+        var parents = [this];
+        var current = value;
+        while (current) {
+            if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain);
+            parents[parents.length] = current;
+            current = current.get_parent();
+        }
+        this._parent = value;
+    }
+    function Sys$UI$Control$get_visibilityMode() {
+        /// <value type="Sys.UI.VisibilityMode"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._visibilityMode;
+    }
+    function Sys$UI$Control$set_visibilityMode(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]);
+        if (e) throw e;
+
+        if (this._visibilityMode !== value) {
+            this._visibilityMode = value;
+            if (this.get_visible() === false) {
+                if (this._visibilityMode === Sys.UI.VisibilityMode.hide) {
+                    this._element.style.display = this._oldDisplayMode;
+                }
+                else {
+                    this._element.style.display = 'none';
+                }
+            }
+        }
+        this._visibilityMode = value;
+    }
+    function Sys$UI$Control$get_visible() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return (this._element.style.visibility != 'hidden');
+    }
+    function Sys$UI$Control$set_visible(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+
+        if (value != this.get_visible()) {
+            this._element.style.visibility = value ? 'visible' : 'hidden';
+            if (value || (this._visibilityMode === Sys.UI.VisibilityMode.hide)) {
+                this._element.style.display = this._oldDisplayMode;
+            }
+            else {
+                this._element.style.display = 'none';
+            }
+        }
+    }
+    function Sys$UI$Control$addCssClass(className) {
+        /// <param name="className" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "className", type: String}
+        ]);
+        if (e) throw e;
+
+        Sys.UI.DomElement.addCssClass(this._element, className);
+    }
+    function Sys$UI$Control$dispose() {
+        Sys.UI.Control.callBaseMethod(this, 'dispose');
+        if (this._element) {
+            this._element.control = undefined;
+            delete this._element;
+        }
+    }
+    function Sys$UI$Control$initialize() {
+        Sys.UI.Control.callBaseMethod(this, 'initialize');
+        var elt = this._element;
+    }
+    function Sys$UI$Control$onBubbleEvent(source, args) {
+        /// <param name="source"></param>
+        /// <param name="args" type="Sys.EventArgs"></param>
+        /// <returns type="Boolean"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "source"},
+            {name: "args", type: Sys.EventArgs}
+        ]);
+        if (e) throw e;
+
+        return false;
+    }
+    function Sys$UI$Control$raiseBubbleEvent(source, args) {
+        /// <param name="source"></param>
+        /// <param name="args" type="Sys.EventArgs"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "source"},
+            {name: "args", type: Sys.EventArgs}
+        ]);
+        if (e) throw e;
+
+        var currentTarget = this.get_parent();
+        while (currentTarget) {
+            if (currentTarget.onBubbleEvent(source, args)) {
+                return;
+            }
+            currentTarget = currentTarget.get_parent();
+        }
+    }
+    function Sys$UI$Control$removeCssClass(className) {
+        /// <param name="className" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "className", type: String}
+        ]);
+        if (e) throw e;
+
+        Sys.UI.DomElement.removeCssClass(this._element, className);
+    }
+    function Sys$UI$Control$toggleCssClass(className) {
+        /// <param name="className" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "className", type: String}
+        ]);
+        if (e) throw e;
+
+        Sys.UI.DomElement.toggleCssClass(this._element, className);
+    }
+Sys.UI.Control.prototype = {
+    _parent: null,
+    _visibilityMode: Sys.UI.VisibilityMode.hide,
+
+    get_element: Sys$UI$Control$get_element,
+    get_id: Sys$UI$Control$get_id,
+    set_id: Sys$UI$Control$set_id,
+    get_parent: Sys$UI$Control$get_parent,
+    set_parent: Sys$UI$Control$set_parent,
+    get_visibilityMode: Sys$UI$Control$get_visibilityMode,
+    set_visibilityMode: Sys$UI$Control$set_visibilityMode,
+    get_visible: Sys$UI$Control$get_visible,
+    set_visible: Sys$UI$Control$set_visible,
+    addCssClass: Sys$UI$Control$addCssClass,
+    dispose: Sys$UI$Control$dispose,
+    initialize: Sys$UI$Control$initialize,
+    onBubbleEvent: Sys$UI$Control$onBubbleEvent,
+    raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent,
+    removeCssClass: Sys$UI$Control$removeCssClass,
+    toggleCssClass: Sys$UI$Control$toggleCssClass
+}
+Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);
+
+Sys.Res={
+'argumentTypeName':'Value is not the name of an existing type.',
+'methodRegisteredTwice':'Method {0} has already been registered.',
+'cantSetIdAfterInit':'The id property can\'t be set on this object after initialization.',
+'componentCantSetIdAfterAddedToApp':'The id property of a component can\'t be set after it\'s been added to the Application object.',
+'behaviorDuplicateName':'A behavior with name \'{0}\' already exists or it is the name of an existing property on the target element.',
+'notATypeName':'Value is not a valid type name.',
+'typeShouldBeTypeOrString':'Value is not a valid type or a valid type name.',
+'boolTrueOrFalse':'Value must be \'true\' or \'false\'.',
+'stringFormatInvalid':'The format string is invalid.',
+'referenceNotFound':'Component \'{0}\' was not found.',
+'enumReservedName':'\'{0}\' is a reserved name that can\'t be used as an enum value name.',
+'eventHandlerNotFound':'Handler not found.',
+'circularParentChain':'The chain of control parents can\'t have circular references.',
+'undefinedEvent':'\'{0}\' is not an event.',
+'notAMethod':'{0} is not a method.',
+'propertyUndefined':'\'{0}\' is not a property or an existing field.',
+'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
+'scriptLoadFailedDebug':'The script \'{0}\' failed to load. Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable \'Display a notification about every script error\' under advanced settings.\r\n Missing call to Sys.Application.notifyScriptLoaded().',
+'propertyNotWritable':'\'{0}\' is not a writable property.',
+'enumInvalidValueName':'\'{0}\' is not a valid name for an enum value.',
+'controlAlreadyDefined':'A control is already associated with the element.',
+'namespaceContainsObject':'Object {0} already exists and is not a namespace.',
+'cantAddNonFunctionhandler':'Can\'t add a handler that is not a function.',
+'scriptLoaderAlreadyLoading':'ScriptLoader.loadScripts cannot be called while the ScriptLoader is already loading scripts.',
+'invalidNameSpace':'Value is not a valid namespace identifier.',
+'notAnInterface':'Value is not a valid interface.',
+'eventHandlerNotFunction':'Handler must be a function.',
+'propertyNotAnArray':'\'{0}\' is not an Array property.',
+'typeRegisteredTwice':'Type {0} has already been registered.',
+'cantSetNameAfterInit':'The name property can\'t be set on this object after initialization.',
+'appDuplicateComponent':'Two components with the same id \'{0}\' can\'t be added to the application.',
+'appComponentMustBeInitialized':'Components must be initialized before they are added to the Application object.',
+'baseNotAClass':'Value is not a class.',
+'methodNotFound':'No method found with name \'{0}\'.',
+'arrayParseBadFormat':'Value must be a valid string representation for an array. It must start with a \'[\' and end with a \']\'.',
+'cantSetId':'The id property can\'t be set on this object.',
+'stringFormatBraceMismatch':'The format string contains an unmatched opening or closing brace.',
+'enumValueNotInteger':'An enumeration definition can only contain integer values.',
+'propertyNullOrUndefined':'Cannot set the properties of \'{0}\' because it returned a null value.',
+'componentCantSetIdTwice':'The id property of a component can\'t be set more than once.',
+'createComponentOnDom':'Value must be null for Components that are not Controls or Behaviors.',
+'createNotComponent':'{0} does not derive from Sys.Component.',
+'createNoDom':'Value must not be null for Controls and Behaviors.',
+'cantAddWithoutId':'Can\'t add a component that doesn\'t have an id.',
+'badTypeName':'Value is not the name of the type being registered or the name is a reserved word.',
+'argumentInteger':'Value must be an integer.',
+'scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.',
+'invokeCalledTwice':'Cannot call invoke more than once.',
+'webServiceFailed':'The server method \'{0}\' failed with the following error: {1}',
+'argumentType':'Object cannot be converted to the required type.',
+'argumentNull':'Value cannot be null.',
+'controlCantSetId':'The id property can\'t be set on a control.',
+'formatBadFormatSpecifier':'Format specifier was invalid.',
+'webServiceFailedNoMsg':'The server method \'{0}\' failed.',
+'argumentDomElement':'Value must be a DOM element.',
+'invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.',
+'cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.',
+'actualValue':'Actual value was {0}.',
+'enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.',
+'scriptLoadFailed':'The script \'{0}\' could not be loaded.',
+'parameterCount':'Parameter count mismatch.',
+'cannotDeserializeEmptyString':'Cannot deserialize empty string.',
+'formatInvalidString':'Input string was not in a correct format.',
+'invalidTimeout':'Value must be greater than or equal to zero.',
+'cannotAbortBeforeStart':'Cannot abort when executor has not started.',
+'argument':'Value does not fall within the expected range.',
+'cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.',
+'invalidHttpVerb':'httpVerb cannot be set to an empty or null string.',
+'nullWebRequest':'Cannot call executeRequest with a null webRequest.',
+'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
+'cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.',
+'argumentUndefined':'Value cannot be undefined.',
+'webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}',
+'servicePathNotSet':'The path to the web service has not been set.',
+'argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.',
+'cannotCallOnceStarted':'Cannot call {0} once started.',
+'badBaseUrl1':'Base URL does not contain ://.',
+'badBaseUrl2':'Base URL does not contain another /.',
+'badBaseUrl3':'Cannot find last / in base URL.',
+'setExecutorAfterActive':'Cannot set executor after it has become active.',
+'paramName':'Parameter name: {0}',
+'cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.',
+'format':'One of the identified items was in an invalid format.',
+'assertFailedCaller':'Assertion Failed: {0}\r\nat {1}',
+'argumentOutOfRange':'Specified argument was out of the range of valid values.',
+'webServiceTimedOut':'The server method \'{0}\' timed out.',
+'notImplemented':'The method or operation is not implemented.',
+'assertFailed':'Assertion Failed: {0}',
+'invalidOperation':'Operation is not valid due to the current state of the object.',
+'breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'
+};
+
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.js
@@ -1,7 +1,7 @@
-﻿//----------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//----------------------------------------------------------
-// MicrosoftAjax.js
-Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};Function.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};Function.emptyFunction=Function.emptyMethod=function(){};Function._validateParams=function(e,c){var a;a=Function._validateParameterCount(e,c);if(a){a.popStackFrame();return a}for(var b=0;b<e.length;b++){var d=c[Math.min(b,c.length-1)],f=d.name;if(d.parameterArray)f+="["+(b-c.length+1)+"]";a=Function._validateParameter(e[b],d,f);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(e,a){var c=a.length,d=0;for(var b=0;b<a.length;b++)if(a[b].parameterArray)c=Number.MAX_VALUE;else if(!a[b].optional)d++;if(e.length<d||e.length>c){var f=Error.parameterCount();f.popStackFrame();return f}return null};Function._validateParameter=function(c,a,h){var b,g=a.type,l=!!a.integer,k=!!a.domElement,m=!!a.mayBeNull;b=Function._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return b}var e=a.elementType,f=!!a.elementMayBeNull;if(g===Array&&typeof c!=="undefined"&&c!==null&&(e||!f)){var j=!!a.elementInteger,i=!!a.elementDomElement;for(var d=0;d<c.length;d++){var n=c[d];b=Function._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b){b.popStackFrame();return b}}}return null};Function._validateParameterType=function(b,c,k,j,h,d){var a;if(typeof b==="undefined")if(h)return null;else{a=Error.argumentUndefined(d);a.popStackFrame();return a}if(b===null)if(h)return null;else{a=Error.argumentNull(d);a.popStackFrame();return a}if(c&&c.__enum){if(typeof b!=="number"){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(b%1===0){var e=c.prototype;if(!c.__flags||b===0){for(var g in e)if(e[g]===b)return null}else{var i=b;for(var g in e){var f=e[g];if(f===0)continue;if((f&b)===f)i-=f;if(i===0)return null}}}a=Error.argumentOutOfRange(d,b,String.format(Sys.Res.enumInvalidValue,b,c.getName()));a.popStackFrame();return a}if(j&&b!==window&&b!==document&&!(window.HTMLElement&&b instanceof HTMLElement)&&typeof b.nodeName!=="string"){a=Error.argument(d,Sys.Res.argumentDomElement);a.popStackFrame();return a}if(c&&!c.isInstanceOfType(b)){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(c===Number&&k)if(b%1!==0){a=Error.argumentOutOfRange(d,b,Sys.Res.argumentInteger);a.popStackFrame();return a}return null};Error.__typeName="Error";Error.__class=true;Error.create=function(d,b){var a=new Error(d);a.message=d;if(b)for(var c in b)a[c]=b[c];a.popStackFrame();return a};Error.argument=function(a,c){var b="Sys.ArgumentException: "+(c?c:Sys.Res.argument);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStackFrame();return d};Error.argumentNull=function(a,c){var b="Sys.ArgumentNullException: "+(c?c:Sys.Res.argumentNull);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popStackFrame();return d};Error.argumentOutOfRange=function(c,a,d){var b="Sys.ArgumentOutOfRangeException: "+(d?d:Sys.Res.argumentOutOfRange);if(c)b+="\n"+String.format(Sys.Res.paramName,c);if(typeof a!=="undefined"&&a!==null)b+="\n"+String.format(Sys.Res.actualValue,a);var e=Error.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,actualValue:a});e.popStackFrame();return e};Error.argumentType=function(d,c,b,e){var a="Sys.ArgumentTypeException: ";if(e)a+=e;else if(c&&b)a+=String.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.getName());else a+=Sys.Res.argumentType;if(d)a+="\n"+String.format(Sys.Res.paramName,d);var f=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualType:c,expectedType:b});f.popStackFrame();return f};Error.argumentUndefined=function(a,c){var b="Sys.ArgumentUndefinedException: "+(c?c:Sys.Res.argumentUndefined);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d.popStackFrame();return d};Error.format=function(a){var c="Sys.FormatException: "+(a?a:Sys.Res.format),b=Error.create(c,{name:"Sys.FormatException"});b.popStackFrame();return b};Error.invalidOperation=function(a){var c="Sys.InvalidOperationException: "+(a?a:Sys.Res.invalidOperation),b=Error.create(c,{name:"Sys.InvalidOperationException"});b.popStackFrame();return b};Error.notImplemented=function(a){var c="Sys.NotImplementedException: "+(a?a:Sys.Res.notImplemented),b=Error.create(c,{name:"Sys.NotImplementedException"});b.popStackFrame();return b};Error.parameterCount=function(a){var c="Sys.ParameterCountException: "+(a?a:Sys.Res.parameterCount),b=Error.create(c,{name:"Sys.ParameterCountException"});b.popStackFrame();return b};Error.prototype.popStackFrame=function(){if(typeof this.stack==="undefined"||this.stack===null||typeof this.fileName==="undefined"||this.fileName===null||typeof this.lineNumber==="undefined"||this.lineNumber===null)return;var a=this.stack.split("\n"),c=a[0],e=this.fileName+":"+this.lineNumber;while(typeof c!=="undefined"&&c!==null&&c.indexOf(e)===-1){a.shift();c=a[0]}var d=a[1];if(typeof d==="undefined"||d===null)return;var b=d.match(/@(.*):(\d+)$/);if(typeof b==="undefined"||b===null)return;this.fileName=b[1];this.lineNumber=parseInt(b[2]);a.shift();this.stack=a.join("\n")};if(!window)this.window=this;window.Type=Function;window.__rootNamespaces=[];window.__registeredTypes={};Type.prototype.callBaseMethod=function(a,d,b){var c=this.getBaseMethod(a,d);if(!b)return c.apply(a);else return c.apply(a,b)};Type.prototype.getBaseMethod=function(d,c){var b=this.getBaseType();if(b){var a=b.prototype[c];return a instanceof Function?a:null}return null};Type.prototype.getBaseType=function(){return typeof this.__baseType==="undefined"?null:this.__baseType};Type.prototype.getInterfaces=function(){var a=[],b=this;while(b){var c=b.__interfaces;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Array.contains(a,e))a[a.length]=e}b=b.__baseType}return a};Type.prototype.getName=function(){return typeof this.__typeName==="undefined"?"":this.__typeName};Type.prototype.implementsInterface=function(d){this.resolveInheritance();var c=d.getName(),a=this.__interfaceCache;if(a){var e=a[c];if(typeof e!=="undefined")return e}else a=this.__interfaceCache={};var b=this;while(b){var f=b.__interfaces;if(f)if(Array.indexOf(f,d)!==-1)return a[c]=true;b=b.__baseType}return a[c]=false};Type.prototype.inheritsFrom=function(b){this.resolveInheritance();var a=this.__baseType;while(a){if(a===b)return true;a=a.__baseType}return false};Type.prototype.initializeBase=function(a,b){this.resolveInheritance();if(this.__baseType)if(!b)this.__baseType.apply(a);else this.__baseType.apply(a,b);return a};Type.prototype.isImplementedBy=function(a){if(typeof a==="undefined"||a===null)return false;var b=Object.getType(a);return !!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.isInstanceOfType=function(b){if(typeof b==="undefined"||b===null)return false;if(b instanceof this)return true;var a=Object.getType(b);return !!(a===this)||a.inheritsFrom&&a.inheritsFrom(this)||a.implementsInterface&&a.implementsInterface(this)};Type.prototype.registerClass=function(c,b,d){this.prototype.constructor=this;this.__typeName=c;this.__class=true;if(b){this.__baseType=b;this.__basePrototypePending=true}if(!window.__classes)window.__classes={};window.__classes[c.toUpperCase()]=this;if(d){this.__interfaces=[];for(var a=2;a<arguments.length;a++){var e=arguments[a];this.__interfaces.push(e)}}return this};Type.prototype.registerInterface=function(a){this.prototype.constructor=this;this.__typeName=a;this.__interface=true;return this};Type.prototype.resolveInheritance=function(){if(this.__basePrototypePending){var b=this.__baseType;b.resolveInheritance();for(var a in b.prototype){var c=b.prototype[a];if(!this.prototype[a])this.prototype[a]=c}delete this.__basePrototypePending}};Type.getRootNamespaces=function(){return Array.clone(window.__rootNamespaces)};Type.isClass=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__class};Type.isInterface=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__interface};Type.isNamespace=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__namespace};Type.parse=function(typeName,ns){var fn;if(ns){if(!window.__classes)return null;fn=window.__classes[ns.getName().toUpperCase()+"."+typeName.toUpperCase()];return fn||null}if(!typeName)return null;if(!Type.__htClasses)Type.__htClasses={};fn=Type.__htClasses[typeName];if(!fn){fn=eval(typeName);Type.__htClasses[typeName]=fn}return fn};Type.registerNamespace=function(f){var d=window,c=f.split(".");for(var b=0;b<c.length;b++){var e=c[b],a=d[e];if(!a){a=d[e]={};if(b===0)window.__rootNamespaces[window.__rootNamespaces.length]=a;a.__namespace=true;a.__typeName=c.slice(0,b+1).join(".");a.getName=function(){return this.__typeName}}d=a}};Object.__typeName="Object";Object.__class=true;Object.getType=function(b){var a=b.constructor;if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;return a};Object.getTypeName=function(a){return Object.getType(a).getName()};Boolean.__typeName="Boolean";Boolean.__class=true;Boolean.parse=function(b){var a=b.trim().toLowerCase();if(a==="false")return false;if(a==="true")return true};Date.__typeName="Date";Date.__class=true;Date._appendPreOrPostMatch=function(e,b){var d=0,a=false;for(var c=0,g=e.length;c<g;c++){var f=e.charAt(c);switch(f){case "'":if(a)b.append("'");else d++;a=false;break;case "\\":if(a)b.append("\\");a=!a;break;default:b.append(f);a=false;break}}return d};Date._expandFormat=function(a,b){if(!b)b="F";if(b.length===1)switch(b){case "d":return a.ShortDatePattern;case "D":return a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return a.LongTimePattern;case "F":return a.FullDateTimePattern;case "M":case "m":return a.MonthDayPattern;case "s":return a.SortableDateTimePattern;case "Y":case "y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString)}return b};Date._expandYear=function(c,a){if(a<100){var b=(new Date).getFullYear();a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)return a-100}return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(g,c,h){var e=false;for(var a=1,i=h.length;a<i;a++){var f=h[a];if(f){e=true;var b=Date._parseExact(g,f,c);if(b)return b}}if(!e){var d=c._getDateTimeFormats();for(var a=0,i=d.length;a<i;a++){var b=Date._parseExact(g,d[a],c);if(b)return b}}return null};Date._parseExact=function(s,y,j){s=s.trim();var m=j.dateTimeFormat,v=Date._getParseRegExp(m,y),x=(new RegExp(v.regExp)).exec(s);if(x!==null){var w=v.groups,f=null,c=null,h=null,g=null,d=0,n=0,o=0,e=0,k=null,r=false;for(var p=0,z=w.length;p<z;p++){var a=x[p+1];if(a)switch(w[p]){case "dd":case "d":h=Date._parseInt(a);if(h<1||h>31)return null;break;case "MMMM":c=j._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=j._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":var c=Date._parseInt(a)-1;if(c<0||c>11)return null;break;case "y":case "yy":f=Date._expandYear(m,Date._parseInt(a));if(f<0||f>9999)return null;break;case "yyyy":f=Date._parseInt(a);if(f<0||f>9999)return null;break;case "h":case "hh":d=Date._parseInt(a);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=Date._parseInt(a);if(d<0||d>23)return null;break;case "m":case "mm":n=Date._parseInt(a);if(n<0||n>59)return null;break;case "s":case "ss":o=Date._parseInt(a);if(o<0||o>59)return null;break;case "tt":case "t":var u=a.toUpperCase();r=u===m.PMDesignator.toUpperCase();if(!r&&u!==m.AMDesignator.toUpperCase())return null;break;case "f":e=Date._parseInt(a)*100;if(e<0||e>999)return null;break;case "ff":e=Date._parseInt(a)*10;if(e<0||e>999)return null;break;case "fff":e=Date._parseInt(a);if(e<0||e>999)return null;break;case "dddd":g=j._getDayIndex(a);if(g<0||g>6)return null;break;case "ddd":g=j._getAbbrDayIndex(a);if(g<0||g>6)return null;break;case "zzz":var q=a.split(/:/);if(q.length!==2)return null;var i=Date._parseInt(q[0]);if(i<-12||i>13)return null;var l=Date._parseInt(q[1]);if(l<0||l>59)return null;k=i*60+(a.startsWith("-")?-l:l);break;case "z":case "zz":var i=Date._parseInt(a);if(i<-12||i>13)return null;k=i*60;break}}var b=new Date;if(f===null)f=b.getFullYear();if(c===null)c=b.getMonth();if(h===null)h=b.getDate();b.setFullYear(f,c,h);if(b.getDate()!==h)return null;if(g!==null&&b.getDay()!==g)return null;if(r&&d<12)d+=12;b.setHours(d,n,o,e);if(k!==null){var t=b.getMinutes()-(k+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(t/60),t%60)}return b}};Date._parseInt=function(a){return parseInt(a.replace(/^[\s0]+(\d+)$/,"$1"))};Date.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype._toFormattedString=function(e,h){if(!e||e.length===0||e==="i")if(h&&h.name.length>0)return this.toLocaleString();else return this.toString();var d=h.dateTimeFormat;e=Date._expandFormat(d,e);var a=new Sys.StringBuilder,b;function c(a){if(a<10)return "0"+a;return a.toString()}function g(a){if(a<10)return "00"+a;if(a<100)return "0"+a;return a.toString()}var j=0,i=Date._getTokenRegExp();for(;true;){var l=i.lastIndex,f=i.exec(e),k=e.slice(l,f?f.index:e.length);j+=Date._appendPreOrPostMatch(k,a);if(!f)break;if(j%2===1){a.append(f[0]);continue}switch(f[0]){case "dddd":a.append(d.DayNames[this.getDay()]);break;case "ddd":a.append(d.AbbreviatedDayNames[this.getDay()]);break;case "dd":a.append(c(this.getDate()));break;case "d":a.append(this.getDate());break;case "MMMM":a.append(d.MonthNames[this.getMonth()]);break;case "MMM":a.append(d.AbbreviatedMonthNames[this.getMonth()]);break;case "MM":a.append(c(this.getMonth()+1));break;case "M":a.append(this.getMonth()+1);break;case "yyyy":a.append(this.getFullYear());break;case "yy":a.append(c(this.getFullYear()%100));break;case "y":a.append(this.getFullYear()%100);break;case "hh":b=this.getHours()%12;if(b===0)b=12;a.append(c(b));break;case "h":b=this.getHours()%12;if(b===0)b=12;a.append(b);break;case "HH":a.append(c(this.getHours()));break;case "H":a.append(this.getHours());break;case "mm":a.append(c(this.getMinutes()));break;case "m":a.append(this.getMinutes());break;case "ss":a.append(c(this.getSeconds()));break;case "s":a.append(this.getSeconds());break;case "tt":a.append(this.getHours()<12?d.AMDesignator:d.PMDesignator);break;case "t":a.append((this.getHours()<12?d.AMDesignator:d.PMDesignator).charAt(0));break;case "f":a.append(g(this.getMilliseconds()).charAt(0));break;case "ff":a.append(g(this.getMilliseconds()).substr(0,2));break;case "fff":a.append(g(this.getMilliseconds()));break;case "z":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+Math.floor(Math.abs(b)));break;case "zz":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+c(Math.floor(Math.abs(b))));break;case "zzz":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+c(Math.floor(Math.abs(b)))+d.TimeSeparator+c(Math.abs(this.getTimezoneOffset()%60)));break}}return a.toString()};Number.__typeName="Number";Number.__class=true;Number.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=function(g,f){var a=g.trim();if(a.match(/infinity/i)!==null)return parseFloat(a);if(a.match(/^0x[a-f0-9]+$/i)!==null)return parseInt(a);var d=f.numberFormat,b=d.NumberDecimalSeparator,c=d.NumberGroupSeparator,e=new RegExp("^[+-]?[\\d\\"+c+"]*\\"+b+"?\\d*([eE][+-]?\\d+)?$");if(!a.match(e))return Number.NaN;a=a.split(c).join("");a=a.replace(b,".");return parseFloat(a)};Number.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototype._toFormattedString=function(d,j){if(!d||d.length===0||d==="i")if(j&&j.name.length>0)return this.toLocaleString();else return this.toString();var q=["n %","n%","%n"],p=["-n %","-n%","-%n"],r=["(n)","-n","- n","n-","n -"],o=["$n","n$","$ n","n $"],n=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function i(p,k,j,l,o){var e=j[0],g=1,c=p.toString(),a="",m="",i=c.split(".");if(i.length>1){c=i[0];a=i[1];var h=a.split(/e/i);if(h.length>1){a=h[0];m="e"+h[1]}}if(k>0){var f=a.length-k;if(f>0)a=a.slice(0,k);else if(f<0)for(var n=0;n<Math.abs(f);n++)a+="0";a=o+a}else a="";a+=m;var b=c.length-1,d="";while(b>=0){if(e===0||e>b)if(d.length>0)return c.slice(0,b+1)+l+d+a;else return c.slice(0,b+1)+a;if(d.length>0)d=c.slice(b-e+1,b+1)+l+d;else d=c.slice(b-e+1,b+1);b-=e;if(g<j.length){e=j[g];g++}}return c.slice(0,b+1)+l+d+a}var a=j.numberFormat,e=Math.abs(this);if(!d)d="D";var b=-1;if(d.length>1)b=parseInt(d.slice(1));var c;switch(d.charAt(0)){case "d":case "D":c="n";if(b!==-1){var g=""+e,k=b-g.length;if(k>0)for(var m=0;m<k;m++)g="0"+g;e=g}if(this<0)e=-e;break;case "c":case "C":if(this<0)c=n[a.CurrencyNegativePattern];else c=o[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;e=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=r[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;e=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=p[a.PercentNegativePattern];else c=q[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;e=i(Math.abs(this),b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var l=/n|\$|-|%/g,f="";for(;true;){var s=l.lastIndex,h=l.exec(c);f+=c.slice(s,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=e;break;case "$":f+=a.CurrencySymbol;break;case "-":f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol;break}}return f};RegExp.__typeName="RegExp";RegExp.__class=true;Array.__typeName="Array";Array.__class=true;Array.add=Array.enqueue=function(a,b){a[a.length]=b};Array.addRange=function(a,b){a.push.apply(a,b)};Array.clear=function(a){a.length=0};Array.clone=function(a){if(a.length===1)return [a[0]];else return Array.apply(null,a)};Array.contains=function(a,b){return Array.indexOf(a,b)>=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a<f;a++){var c=b[a];if(typeof c!=="undefined")e.call(d,c,a,b)}};Array.indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(typeof d[b]!=="undefined"&&d[b]===e)return b}return -1};Array.insert=function(a,b,c){a.splice(b,0,c)};Array.parse=function(value){if(!value)return [];return eval(value)};Array.remove=function(b,c){var a=Array.indexOf(b,c);if(a>=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};String.__typeName="String";String.__class=true;String.prototype.endsWith=function(a){return this.substr(this.length-a.length)===a};String.prototype.startsWith=function(a){return this.substr(0,a.length)===a};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=function(){return this.replace(/\s+$/,"")};String.prototype.trimStart=function(){return this.replace(/^\s+/,"")};String.format=function(){return String._toFormattedString(false,arguments)};String.localeFormat=function(){return String._toFormattedString(true,arguments)};String._toFormattedString=function(l,j){var c="",e=j[0];for(var a=0;true;){var f=e.indexOf("{",a),d=e.indexOf("}",a);if(f<0&&d<0){c+=e.slice(a);break}if(d>0&&(d<f||f<0)){c+=e.slice(a,d+1);a=d+2;continue}c+=e.slice(a,f);a=f+1;if(e.charAt(a)==="{"){c+="{";a++;continue}if(d<0)break;var h=e.substring(a,d),g=h.indexOf(":"),k=parseInt(g<0?h:h.substring(0,g))+1,i=g<0?"":h.substring(g+1),b=j[k];if(typeof b==="undefined"||b===null)b="";if(b.toFormattedString)c+=b.toFormattedString(i);else if(l&&b.localeFormat)c+=b.localeFormat(i);else if(b.format)c+=b.format(i);else c+=b.toString();a=d+1}return c};Type.registerNamespace("Sys");Sys.IDisposable=function(){};Sys.IDisposable.prototype={};Sys.IDisposable.registerInterface("Sys.IDisposable");Sys.StringBuilder=function(a){this._parts=typeof a!=="undefined"&&a!==null&&a!==""?[a.toString()]:[];this._value={};this._len=0};Sys.StringBuilder.prototype={append:function(a){this._parts[this._parts.length]=a},appendLine:function(a){this._parts[this._parts.length]=typeof a==="undefined"||a===null||a===""?"\r\n":a+"\r\n"},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){if(this._parts.length===0)return true;return this.toString()===""},toString:function(a){a=a||"";var b=this._parts;if(this._len!==b.length){this._value={};this._len=b.length}var d=this._value;if(typeof d[a]==="undefined"){if(a!=="")for(var c=0;c<b.length;)if(typeof b[c]==="undefined"||b[c]===""||b[c]===null)b.splice(c,1);else c++;d[a]=this._parts.join(a)}return d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];for(var a=0;a<b.length;a++)try{var c=new ActiveXObject(b[a]);return c}catch(d){}return null};Sys.Browser={};Sys.Browser.InternetExplorer={};Sys.Browser.Firefox={};Sys.Browser.Safari={};Sys.Browser.Opera={};Sys.Browser.agent=null;Sys.Browser.hasDebuggerStatement=false;Sys.Browser.name=navigator.appName;Sys.Browser.version=parseFloat(navigator.appVersion);if(navigator.userAgent.indexOf(" MSIE ")>-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Safari/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Safari\/(\d+\.\d+)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+="    ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e<j;e++)this._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in a){h=a[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=new Sys._Debug;Sys.Debug.isDebug=false;function Sys$Enum$parse(c,e){var a,b,i;if(e){a=this.__lowerCaseValues;if(!a){this.__lowerCaseValues=a={};var g=this.prototype;for(var f in g)a[f.toLowerCase()]=g[f]}}else a=this.prototype;if(!this.__flags){i=e?c.toLowerCase():c;b=a[i.trim()];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__typeName));return b}else{var h=(e?c.toLowerCase():c).split(","),j=0;for(var d=h.length-1;d>=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(c,b){for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=c;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=b;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);if(!a._handler)a._handler=function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)};return a._handler},_getEvent:function(a,b){if(!this._list[a]){if(!b)return null;this._list[a]=[]}return this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList");Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.INotifyDisposing=function(){};Sys.INotifyDisposing.prototype={};Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");Sys.Component=function(){if(Sys.Application)Sys.Application.registerDisposableObject(this)};Sys.Component.prototype={_id:null,_initialized:false,_updating:false,get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_id:function(){return this._id},set_id:function(a){this._id=a},get_isInitialized:function(){return this._initialized},get_isUpdating:function(){return this._updating},add_disposing:function(a){this.get_events().addHandler("disposing",a)},remove_disposing:function(a){this.get_events().removeHandler("disposing",a)},add_propertyChanged:function(a){this.get_events().addHandler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_events().removeHandler("propertyChanged",a)},beginUpdate:function(){this._updating=true},dispose:function(){if(this._events){var a=this._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)}delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},endUpdate:function(){this._updating=false;if(!this._initialized)this.initialize();this.updated()},initialize:function(){this._initialized=true},raisePropertyChanged:function(b){if(!this._events)return;var a=this._events.getHandler("propertyChanged");if(a)a(this,new Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.registerClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var d,j=Object.getType(a),e=j===Object||j===Sys.UI.DomElement,h=Sys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginUpdate();for(var c in i){var b=i[c],f=e?null:a["get_"+c];if(e||typeof f!=="function"){var k=a[c];if(!b||typeof b!=="object"||e&&!k)a[c]=b;else Sys$Component$_setProperties(k,b)}else{var l=a["set_"+c];if(typeof l==="function")l.apply(a,[b]);else if(b instanceof Array){d=f.apply(a);for(var g=0,m=d.length,n=b.length;g<n;g++,m++)d[m]=b[g]}else if(typeof b==="object"&&Object.getType(b)===Object){d=f.apply(a);Sys$Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function Sys$Component$_setReferences(c,b){for(var a in b){var e=c["set_"+a],d=$find(b[a]);e.apply(c,[d])}}var $create=Sys.Component.create=function(h,f,d,c,g){var a=g?new h(g):new h,b=Sys.Application,i=b.get_isCreatingComponents();a.beginUpdate();if(f)Sys$Component$_setProperties(a,f);if(d)for(var e in d)a["add_"+e](d[e]);b._createdComponents[b._createdComponents.length]=a;if(a.get_id())b.addComponent(a);if(i)if(c)b._addComponentToSecondPass(a,c);else a.endUpdate();else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}return a};Sys.UI.MouseButton=function(){throw Error.notImplemented()};Sys.UI.MouseButton.prototype={leftButton:0,middleButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");Sys.UI.Key=function(){throw Error.notImplemented()};Sys.UI.Key.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.DomEvent=function(c){var a=c;this.rawEvent=a;this.altKey=a.altKey;if(typeof a.button!=="undefined")this.button=typeof a.which!=="undefined"?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(a.type==="keypress")this.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)this.keyCode=127;else this.keyCode=a.keyCode;this.clientX=a.clientX;this.clientY=a.clientY;this.ctrlKey=a.ctrlKey;this.target=a.target?a.target:a.srcElement;if(this.target){var b=Sys.UI.DomElement.getLocation(this.target);this.offsetX=typeof a.offsetX!=="undefined"?a.offsetX:window.pageXOffset+(a.clientX||0)-b.x;this.offsetY=typeof a.offsetY!=="undefined"?a.offsetY:window.pageYOffset+(a.clientY||0)-b.y}this.screenX=a.screenX;this.screenY=a.screenY;this.shiftKey=a.shiftKey;this.type=a.type};Sys.UI.DomEvent.prototype={preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEvent.preventDefault();else if(window.event)window.event.returnValue=false},stopPropagation:function(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();else if(window.event)window.event.cancelBubble=true}};Sys.UI.DomEvent.registerClass("Sys.UI.DomEvent");var $addHandler=Sys.UI.DomEvent.addHandler=function(a,d,e){if(!a._events)a._events={};var c=a._events[d];if(!c)a._events[d]=c=[];var b;if(a.addEventListener){b=function(b){return e.call(a,new Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else if(a.attachEvent){b=function(){return e.call(a,new Sys.UI.DomEvent(window.event))};a.attachEvent("on"+d,b)}c[c.length]={handler:e,browserHandler:b}},$addHandlers=Sys.UI.DomEvent.addHandlers=function(e,d,c){for(var b in d){var a=d[b];if(c)a=Function.createDelegate(c,a);$addHandler(e,b,a)}},$clearHandlers=Sys.UI.DomEvent.clearHandlers=function(a){if(a._events){var e=a._events;for(var b in e){var d=e[b];for(var c=d.length-1;c>=0;c--)$removeHandler(a,b,d[c].handler)}a._events=null}},$removeHandler=Sys.UI.DomEvent.removeHandler=function(a,e,f){var d=null,c=a._events[e],d=null;for(var b=0,g=c.length;b<g;b++)if(c[b].handler===f){d=c[b].browserHandler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys._ScriptLoader=function(){this._scriptsToLoad=null;this._scriptLoadedDelegate=Function.createDelegate(this,this._scriptLoadedHandler)};Sys._ScriptLoader.prototype={dispose:function(){this._stopLoading();if(this._events)delete this._events;this._scriptLoadedDelegate=null},loadScripts:function(a,c,d,b){this._loading=true;this._allScriptsLoadedCallback=c;this._scriptLoadFailedCallback=d;this._scriptLoadTimeoutCallback=b;if(a>0)this._timeoutCookie=window.setTimeout(Function.createDelegate(this,this._scriptLoadTimeoutHandler),a*1000);this._loadScriptsInternal()},notifyScriptLoaded:function(){if(!this._loading)return;this._currentTask._notified++;if(Sys.Browser.agent===Sys.Browser.Safari)if(this._currentTask._notified===1)window.setTimeout(Function.createDelegate(this,function(){this._scriptLoadedHandler(this._currentTask.get_scriptElement(),true)}),0)},queueCustomScriptTag:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{text:a})},queueScriptReference:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(c){var a=document.createElement("SCRIPT");a.type="text/javascript";for(var b in c)a[b]=c[b];return a},_loadScriptsInternal:function(){if(this._scriptsToLoad&&this._scriptsToLoad.length>0){var b=Array.dequeue(this._scriptsToLoad),a=this._createScriptElement(b);if(a.text&&Sys.Browser.agent===Sys.Browser.Safari){a.innerHTML=a.text;delete a.text}if(typeof b.src==="string"){this._currentTask=new Sys._ScriptLoaderTask(a,this._scriptLoadedDelegate);this._currentTask.execute()}else{document.getElementsByTagName("HEAD")[0].appendChild(a);Sys._ScriptLoader._clearScript(a);this._loadScriptsInternal()}}else{var c=this._allScriptsLoadedCallback;this._stopLoading();if(c)c(this)}},_raiseError:function(a){var c=this._scriptLoadFailedCallback,b=this._currentTask.get_scriptElement();this._stopLoading();if(c)c(this,b,a);else throw Sys._ScriptLoader._errorScriptLoadFailed(b.src,a)},_scriptLoadedHandler:function(a,b){if(b&&this._currentTask._notified)if(this._currentTask._notified>1)this._raiseError(true);else{Array.add(Sys._ScriptLoader._getLoadedScripts(),a.src);this._currentTask.dispose();this._currentTask=null;this._loadScriptsInternal()}else this._raiseError(false)},_scriptLoadTimeoutHandler:function(){var a=this._scriptLoadTimeoutCallback;this._stopLoading();if(a)a(this)},_stopLoading:function(){if(this._timeoutCookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=null}if(this._currentTask){this._currentTask.dispose();this._currentTask=null}this._scriptsToLoad=null;this._loading=null;this._allScriptsLoadedCallback=null;this._scriptLoadFailedCallback=null;this._scriptLoadTimeoutCallback=null}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisposable);Sys._ScriptLoader.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};Sys._ScriptLoader.isScriptLoaded=function(b){var a=document.createElement("script");a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptLoader.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){var b=Sys._ScriptLoader._referencedScripts=[],c=document.getElementsByTagName("SCRIPT");for(i=c.length-1;i>=0;i--){var d=c[i],a=d.src;if(a.length)if(!Array.contains(b,a))Array.add(b,a)}}};Sys._ScriptLoader._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Sys._ScriptLoader._errorScriptLoadFailed=function(b,d){var a;if(d)a=Sys.Res.scriptLoadMultipleCallbacks;else a=Sys.Res.scriptLoadFailed;var e="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(e,{name:"Sys.ScriptLoadFailedException","scriptUrl":b});c.popStackFrame();return c};Sys._ScriptLoader._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a;this._notified=0};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoader._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("HEAD")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);$addHandler(this._scriptElement,"error",this._scriptErrorDelegate)},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);$removeHandler(a,"error",this._scriptErrorDelegate);this._scriptErrorDelegate=null;this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;var b=this;window.setTimeout(function(){b._completedCallback(a,true)},0)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);this._loadHandlerDelegate=Function.createDelegate(this,this._loadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);Sys.UI.DomEvent.addHandler(window,"load",this._loadHandlerDelegate)};Sys._Application.prototype={_creatingComponents:false,_disposing:false,get_isCreatingComponents:function(){return this._creatingComponents},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,e=b.length;a<e;a++)b[a].dispose();Array.clear(this._disposableObjects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDelegate);if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}var d=Sys._ScriptLoader.getInstance();if(d)d.dispose();Sys._Application.callBaseMethod(this,"dispose")}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a<d;a++){var c=b[a].component;Sys$Component$_setReferences(c,b[a].references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=false},findComponent:function(b,a){return a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Application._components[b]||null},getComponents:function(){var a=[],b=this._components;for(var c in b)a[a.length]=b[c];return a},initialize:function(){if(!this._initialized&&!this._initializing){this._initializing=true;window.setTimeout(Function.createDelegate(this,this._doInitialize),0)}},notifyScriptLoaded:function(){var a=Sys._ScriptLoader.getInstance();if(a)a.notifyScriptLoaded()},registerDisposableObject:function(a){if(!this._disposing)this._disposableObjects[this._disposableObjects.length]=a},raiseLoad:function(){var b=this.get_events().getHandler("load"),a=new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!this._initializing);if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);this._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){if(!this._disposing)Array.remove(this._disposableObjects,a)},_addComponentToSecondPass:function(b,a){this._secondPassComponents[this._secondPassComponents.length]={component:b,references:a}},_doInitialize:function(){Sys._Application.callBaseMethod(this,"initialize");var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}this.raiseLoad();this._initializing=false},_loadHandler:function(){if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}this.initialize()},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Type.registerNamespace("Sys.Net");Sys.Net.WebRequestExecutor=function(){this._webRequest=null;this._resultObject=null};Sys.Net.WebRequestExecutor.prototype={get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_started:function(){throw Error.notImplemented()},get_responseAvailable:function(){throw Error.notImplemented()},get_timedOut:function(){throw Error.notImplemented()},get_aborted:function(){throw Error.notImplemented()},get_responseData:function(){throw Error.notImplemented()},get_statusCode:function(){throw Error.notImplemented()},get_statusText:function(){throw Error.notImplemented()},get_xml:function(){throw Error.notImplemented()},get_object:function(){if(!this._resultObject)this._resultObject=Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return this._resultObject},executeRequest:function(){throw Error.notImplemented()},abort:function(){throw Error.notImplemented()},getResponseHeader:function(){throw Error.notImplemented()},getAllResponseHeaders:function(){throw Error.notImplemented()}};Sys.Net.WebRequestExecutor.registerClass("Sys.Net.WebRequestExecutor");window.XMLDOM=function(d){if(!window.DOMParser){var c=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"];for(var b=0;b<c.length;b++)try{var a=new ActiveXObject(c[b]);a.async=false;a.loadXML(d);a.setProperty("SelectionLanguage","XPath");return a}catch(f){}return null}else try{var e=new window.DOMParser;return e.parseFromString(d,"text/xml")}catch(f){return null}return null};Sys.Net.XMLHttpExecutor=function(){Sys.Net.XMLHttpExecutor.initializeBase(this);var a=this;this._xmlHttpRequest=null;this._webRequest=null;this._responseAvailable=false;this._timedOut=false;this._timer=null;this._aborted=false;this._started=false;this._onReadyStateChange=function(){if(a._xmlHttpRequest.readyState===4){a._clearTimer();a._responseAvailable=true;a._webRequest.completed(Sys.EventArgs.Empty);if(a._xmlHttpRequest!=null){a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest=null}}};this._clearTimer=function(){if(a._timer!=null){window.clearTimeout(a._timer);a._timer=null}};this._onTimeout=function(){if(!a._responseAvailable){a._clearTimer();a._timedOut=true;a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest.abort();a._webRequest.completed(Sys.EventArgs.Empty);a._xmlHttpRequest=null}}};Sys.Net.XMLHttpExecutor.prototype={get_timedOut:function(){return this._timedOut},get_started:function(){return this._started},get_responseAvailable:function(){return this._responseAvailable},get_aborted:function(){return this._aborted},executeRequest:function(){this._webRequest=this.get_webRequest();var c=this._webRequest.get_body(),a=this._webRequest.get_headers();this._xmlHttpRequest=new XMLHttpRequest;this._xmlHttpRequest.onreadystatechange=this._onReadyStateChange;var e=this._webRequest.get_httpVerb();this._xmlHttpRequest.open(e,this._webRequest.getResolvedUrl(),true);if(a)for(var b in a){var f=a[b];if(typeof f!=="function")this._xmlHttpRequest.setRequestHeader(b,f)}if(e.toLowerCase()==="post"){if(a===null||!a["Content-Type"])this._xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(!c)c=""}var d=this._webRequest.get_timeout();if(d>0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){return this._xmlHttpRequest.status},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=new XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;var a=this._webRequest._get_eventHandlerList().getHandler("completed");if(a)a(this,Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._this=this;this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var c=document.getElementsByTagName("base")[0];if(c&&c.href&&c.href.length>0)a=c.href;else a=document.URL}var d=a.indexOf("?");if(d!==-1)a=a.substr(0,d);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(d,b){if(!b)b=encodeURIComponent;var a=new Sys.StringBuilder,f=0;for(var c in d){var e=d[c];if(typeof e==="function")continue;var g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(f!==0)a.append("&");a.append(c);a.append("=");a.append(b(g));f++}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b){if(!b)return a;var d=Sys.Net.WebRequest._createQueryString(b);if(d.length>0){var c="?";if(a&&a.indexOf("?")!==-1)c="&";return a+c+d}else return a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={set_timeout:function(a){this._timeout=a},get_timeout:function(){return this._timeout},set_defaultUserContext:function(a){this._userContext=a},get_defaultUserContext:function(){return this._userContext},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultSucceededCallback:function(){return this._succeeded},set_defaultFailedCallback:function(a){this._failed=a},get_defaultFailedCallback:function(){return this._failed},set_path:function(a){this._path=a},get_path:function(){return this._path},_invoke:function(d,e,g,f,c,b,a){if(c===null||typeof c==="undefined")c=this.get_defaultSucceededCallback();if(b===null||typeof b==="undefined")b=this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(k,a,j,d,i,c,f,h){var b=new Sys.Net.WebRequest;b.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!d)d={};var g=d;if(!j||!g)g={};b.set_url(Sys.Net.WebRequest._createUrl(k+"/"+a,g));var e=null;if(!j){e=Sys.Serialization.JavaScriptSerializer.serialize(d);if(e==="{}")e=""}b.set_body(e);b.add_completed(l);if(h&&h>0)b.set_timeout(h);b.invoke();function l(d){if(d.get_responseAvailable()){var e=d.get_statusCode(),b=null;try{var j=d.getResponseHeader("Content-Type");if(j.startsWith("application/json"))b=d.get_object();else if(j.startsWith("text/xml"))b=d.get_xml();else b=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),g=k==="true";if(g)b=new Sys.Net.WebServiceError(false,b.Message,b.StackTrace,b.ExceptionType);if(e<200||e>=300||g){if(c){if(!b||!g)b=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a),"","");b._statusCode=e;c(b,f,a)}}else if(i)i(b,f,a)}else{var h;if(d.get_timedOut())h=String.format(Sys.Res.webServiceTimedOut,a);else h=String.format(Sys.Res.webServiceFailedNoMsg,a);if(c)c(new Sys.Net.WebServiceError(d.get_timedOut(),h,"",""),f,a)}}return b};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys.Net.WebServiceError=function(c,d,b,a){this._timedOut=c;this._message=d;this._stackTrace=b;this._exceptionType=a;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace},get_exceptionType:function(){return this._exceptionType}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError");Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultFailedCallback:null,_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultFailedCallback:function(){return this._defaultFailedCallback},set_defaultFailedCallback:function(a){this._defaultFailedCallback=a},get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path},set_path:function(a){if(!a||!a.length)a="";this._path=a},get_timeout:function(){return this._timeout},set_timeout:function(a){this._timeout=a},load:function(b,d,e,f){var c={},a;if(!b)a="GetAllPropertiesForCurrentUser";else{a="GetPropertiesForCurrentUser";c={properties:this._clonePropertyNames(b)}}this._invoke(this._get_path(),a,false,c,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,a,c,e){var b=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:b},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[a,c,e])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b<e.length;b++){var a=e[b];if(!d[a]){Array.add(c,a);d[a]=true}}return c},_flattenProperties:function(a,h,i){var b={},e,d;if(a&&a.length===0)return b;for(var c in h){e=h[c];d=i?i+"."+c:c;if(Sys.Services.ProfileGroup.isInstanceOfType(e)){var g=this._flattenProperties(a,e,d);for(var f in g){var j=g[f];b[f]=j}}else if(!a||Array.indexOf(a,d)!==-1)b[d]=e}return b},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._ProfileService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoadComplete:function(a,f,g){if(typeof a!=="object")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Object"));var d=this._unflattenProperties(a);for(var b in d)this.properties[b]=d[b];var c=f[0],e=c?c:this._defaultLoadCompletedCallback;if(e)e(a.length,f[2],"Sys.Services.ProfileService.load")},_onLoadFailed:function(d,c){var a=c[1],b=a?a:this._defaultFailedCallback;if(b)b(d,c[2],"Sys.Services.ProfileService.load")},_onSaveComplete:function(d,c,f){if(typeof d!=="number")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Number"));var a=c[0],e=c[2],b=a?a:this._defaultSaveCompletedCallback;if(b)b(d,e,"Sys.Services.ProfileService.save")},_onSaveFailed:function(e,c){var a=c[1],d=c[2],b=a?a:this._defaultFailedCallback;if(b)b(e,d,"Sys.Services.ProfileService.save")},_unflattenProperties:function(e){var c={},d,f,h=0;for(var a in e){h++;f=e[a];d=a.indexOf(".");if(d!==-1){var g=a.substr(0,d);a=a.substr(d+1);var b=c[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=new Sys.Services.ProfileGroup;c[g]=b}b[a]=f}else c[a]=f}e.length=h;return c}};Sys.Services._ProfileService.registerClass("Sys.Services._ProfileService",Sys.Net.WebServiceProxy);Sys.Services.ProfileService=new Sys.Services._ProfileService;Sys.Services.ProfileGroup=function(a){if(a)for(var b in a)this[b]=a[b]};Sys.Services.ProfileGroup.registerClass("Sys.Services.ProfileGroup");Sys.Services._AuthenticationService=function(){Sys.Services._AuthenticationService.initializeBase(this)};Sys.Services._AuthenticationService.DefaultWebServicePath="";Sys.Services._AuthenticationService.prototype={_defaultFailedCallback:null,_defaultLoginCompletedCallback:null,_defaultLogoutCompletedCallback:null,_path:"",_timeout:0,_authenticated:false,get_defaultFailedCallback:function(){return this._defaultFailedCallback},set_defaultFailedCallback:function(a){this._defaultFailedCallback=a},get_defaultLoginCompletedCallback:function(){return this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:function(a){this._defaultLoginCompletedCallback=a},get_defaultLogoutCompletedCallback:function(){return this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:function(a){this._defaultLogoutCompletedCallback=a},get_isLoggedIn:function(){return this._authenticated},get_path:function(){return this._path},set_path:function(a){if(!a||!a.length)a="";this._path=a},get_timeout:function(){return this._timeout},set_timeout:function(a){this._timeout=a},login:function(c,b,a,h,f,d,e,g){this._invoke(this._get_path(),"Login",false,{userName:c,password:b,createPersistentCookie:a},Function.createDelegate(this,this._onLoginComplete),Function.createDelegate(this,this._onLoginFailed),[c,b,a,f,d,e,g])},logout:function(c,a,b,d){this._invoke(this._get_path(),"Logout",false,{},Function.createDelegate(this,this._onLogoutComplete),Function.createDelegate(this,this._onLogoutFailed),[c,a,b,d])},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._AuthenticationService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoginComplete:function(f,c,g){if(typeof f!=="boolean")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Boolean"));var b=c[3],d=c[4],e=c[6],a=d?d:this._defaultLoginCompletedCallback;if(f){this._authenticated=true;if(a)a(true,e,"Sys.Services.AuthenticationService.login");if(typeof b!=="undefined"&&b!==null)window.location.href=b}else if(a)a(false,e,"Sys.Services.AuthenticationService.login")},_onLoginFailed:function(d,c){var a=c[5],b=a?a:this._defaultFailedCallback;if(b)b(d,c[6],"Sys.Services.AuthenticationService.login")},_onLogoutComplete:function(g,a,f){if(g!==null)throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"null"));var c=a[0],b=a[1],e=a[3],d=b?b:this._defaultLogoutCompletedCallback;this._authenticated=false;if(d)d(null,e,"Sys.Services.AuthenticationService.logout");if(!c)window.location.reload();else window.location.href=c},_onLogoutFailed:function(d,c){var a=c[2],b=a?a:this._defaultFailedCallback;if(b)b(d,c[3],"Sys.Services.AuthenticationService.logout")},_setAuthenticated:function(a){this._authenticated=a}};Sys.Services._AuthenticationService.registerClass("Sys.Services._AuthenticationService",Sys.Net.WebServiceProxy);Sys.Services.AuthenticationService=new Sys.Services._AuthenticationService;Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._stringRegEx=new RegExp('["\b\f\n\r\t\\\\\x00-\x1F]',"i");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,h){var c;switch(typeof b){case "object":if(b)if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c<b.length;++c){if(c>0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var e=[],i=0;for(var g in b){if(g.startsWith("$"))continue;e[i++]=g}if(h)e.sort();a.append("{");var j=false;for(c=0;c<i;c++){var f=b[e[c]];if(typeof f!=="undefined"&&typeof f!=="function"){if(j)a.append(",");else j=true;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(e[c],a,h);a.append(":");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(f,a,h)}}a.append("}")}else a.append("null");break;case "number":if(isFinite(b))a.append(String(b));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);break;case "string":a.append('"');if(Sys.Browser.agent===Sys.Browser.Safari||Sys.Serialization.JavaScriptSerializer._stringRegEx.test(b)){var k=b.length;for(c=0;c<k;++c){var d=b.charAt(c);if(d>=" "){if(d==="\\"||d==='"')a.append("\\");a.append(d)}else switch(d){case "\b":a.append("\\b");break;case "\f":a.append("\\f");break;case "\n":a.append("\\n");break;case "\r":a.append("\\r");break;case "\t":a.append("\\t");break;default:a.append("\\u00");if(d.charCodeAt()<16)a.append("0");a.append(d.charCodeAt().toString(16))}}}else a.append(b);a.append('"');break;case "boolean":a.append(b.toString());break;default:a.append("null");break}};Sys.Serialization.JavaScriptSerializer.serialize=function(b){var a=new Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b,a,false);return a.toString()};Sys.Serialization.JavaScriptSerializer.deserialize=function(data){if(data.length===0)throw Error.argument("data",Sys.Res.cannotDeserializeEmptyString);try{var exp=data.replace(new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)\\)\\\\/\\"',"g"),"$1new Date($2)");return eval("("+exp+")")}catch(a){throw Error.argument("data",Sys.Res.cannotDeserializeInvalidJson)}};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getMonthIndex:function(a){if(!this._upperMonths)this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths)this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a<d;a++)b[a]=this._toUpper(c[a]);return b},_toUpper:function(a){return a.split("\u00A0").join(" ").toUpperCase()}};Sys.CultureInfo._parse=function(b){var a=Sys.Serialization.JavaScriptSerializer.deserialize(b);return new Sys.CultureInfo(a.name,a.numberFormat,a.dateTimeFormat)};Sys.CultureInfo.registerClass("Sys.CultureInfo");Sys.CultureInfo.InvariantCulture=Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');if(typeof __cultureInfo==="undefined")var __cultureInfo='{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse(__cultureInfo);delete __cultureInfo;Sys.UI.Point=function(a,b){this.x=a;this.y=b};Sys.UI.Point.registerClass("Sys.UI.Point");Sys.UI.Bounds=function(c,d,b,a){this.x=c;this.y=d;this.height=a;this.width=b};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI.DomElement=function(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.UI.DomElement.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=" "+b};Sys.UI.DomElement.containsCssClass=function(b,a){return Array.contains(b.className.split(" "),a)};Sys.UI.DomElement.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var $get=Sys.UI.DomElement.getElementById=function(f,e){if(!e)return document.getElementById(f);if(e.getElementById)return e.getElementById(f);var c=[],d=e.childNodes;for(var b=0;b<d.length;b++){var a=d[b];if(a.nodeType==1)c[c.length]=a}while(c.length){a=c.shift();if(a.id==f)return a;d=a.childNodes;for(b=0;b<d.length;b++){a=d[b];if(a.nodeType==1)c[c.length]=a}}return null};switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:Sys.UI.DomElement.getLocation=function Sys$UI$DomElement$getLocation(a){if(a.self||a.nodeType===9)return new Sys.UI.Point(0,0);var d=a.getClientRects();if(!d||!d.length)return new Sys.UI.Point(0,0);var e=a.ownerDocument.parentWindow,g=e.screenLeft-top.screenLeft-top.document.documentElement.scrollLeft+2,h=e.screenTop-top.screenTop-top.document.documentElement.scrollTop+2,c=e.frameElement||null;if(c){var b=c.currentStyle;g+=(c.frameBorder||1)*2+(parseInt(b.paddingLeft)||0)+(parseInt(b.borderLeftWidth)||0)-a.ownerDocument.documentElement.scrollLeft;h+=(c.frameBorder||1)*2+(parseInt(b.paddingTop)||0)+(parseInt(b.borderTopWidth)||0)-a.ownerDocument.documentElement.scrollTop}var f=d[0];return new Sys.UI.Point(f.left-g,f.top-h)};break;case Sys.Browser.Safari:Sys.UI.DomElement.getLocation=function(c){if(c.window&&c.window===c||c.nodeType===9)return new Sys.UI.Point(0,0);var g=0,h=0,j=null,f=null,b;for(var a=c;a;j=a,(f=b,a=a.offsetParent)){b=Sys.UI.DomElement._getCurrentStyle(a);var e=a.tagName;if((a.offsetLeft||a.offsetTop)&&(e!=="BODY"||(!f||f.position!=="absolute"))){g+=a.offsetLeft;h+=a.offsetTop}}b=Sys.UI.DomElement._getCurrentStyle(c);var d=b?b.position:null,k=d&&d!=="static";if(!d||d!=="absolute")for(var a=c.parentNode;a;a=a.parentNode){e=a.tagName;if(e!=="BODY"&&e!=="HTML"&&(a.scrollLeft||a.scrollTop)){g-=a.scrollLeft||0;h-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(g,h)};break;case Sys.Browser.Opera:Sys.UI.DomElement.getLocation=function(b){if(b.window&&b.window===b||b.nodeType===9)return new Sys.UI.Point(0,0);var d=0,e=0,i=null;for(var a=b;a;i=a,a=a.offsetParent){var f=a.tagName;d+=a.offsetLeft||0;e+=a.offsetTop||0}var g=b.style.position,c=g&&g!=="static";for(var a=b.parentNode;a;a=a.parentNode){f=a.tagName;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)&&(c&&(a.style.overflow==="scroll"||a.style.overflow==="auto"))){d-=a.scrollLeft||0;e-=a.scrollTop||0}var h=a&&a.style?a.style.position:null;c=c||h&&h!=="static"}return new Sys.UI.Point(d,e)};break;default:Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,i=null,h=null,b=null;for(var a=d;a;i=a,(h=b,a=a.offsetParent)){var c=a.tagName;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!h||h.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var g=b?b.position:null,j=g&&g!=="static";if(!g||g!=="absolute")for(var a=d.parentNode;a;a=a.parentNode){c=a.tagName;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}return new Sys.UI.Point(e,f)};break}Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement._getCurrentStyle=function(a){var b=(a.ownerDocument?a.ownerDocument:a.documentElement).defaultView;return b&&a!==b&&b.getComputedStyle?b.getComputedStyle(a,null):a.style};Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!=-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");if(this._element){var a=this.get_name();if(a)this._element[a]=null;Array.remove(this._element._behaviors,this);delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=a[b];return c};Sys.UI.VisibilityMode=function(){throw Error.notImplemented()};Sys.UI.VisibilityMode.prototype={hide:0,collapse:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.Control=function(a){Sys.UI.Control.initializeBase(this);this._element=a;a.control=this;this._oldDisplayMode=this._element.style.display;if(!this._oldDisplayMode||this._oldDisplayMode=="none")this._oldDisplayMode=""};Sys.UI.Control.prototype={_parent:null,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){if(!this._element)return "";return this._element.id},set_id:function(){throw Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this._parent)return this._parent;else{var a=this._element.parentNode;while(a){if(a.control)return a.control;a=a.parentNode}return null}},set_parent:function(a){this._parent=a},get_visibilityMode:function(){return this._visibilityMode},set_visibilityMode:function(a){if(this._visibilityMode!==a){this._visibilityMode=a;if(this.get_visible()===false)if(this._visibilityMode===Sys.UI.VisibilityMode.hide)this._element.style.display=this._oldDisplayMode;else this._element.style.display="none"}this._visibilityMode=a},get_visible:function(){return this._element.style.visibility!="hidden"},set_visible:function(a){if(a!=this.get_visible()){this._element.style.visibility=a?"visible":"hidden";if(a||this._visibilityMode===Sys.UI.VisibilityMode.hide)this._element.style.display=this._oldDisplayMode;else this._element.style.display="none"}},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Control.callBaseMethod(this,"dispose");if(this._element){this._element.control=undefined;delete this._element}},initialize:function(){Sys.UI.Control.callBaseMethod(this,"initialize");var a=this._element},onBubbleEvent:function(){return false},raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Component)
-Sys.Res={'argumentInteger':'Value must be an integer.','scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.','invokeCalledTwice':'Cannot call invoke more than once.','webServiceFailed':'The server method \'{0}\' failed with the following error: {1}','argumentType':'Object cannot be converted to the required type.','argumentNull':'Value cannot be null.','controlCantSetId':'The id property can\'t be set on a control.','formatBadFormatSpecifier':'Format specifier was invalid.','webServiceFailedNoMsg':'The server method \'{0}\' failed.','argumentDomElement':'Value must be a DOM element.','invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.','cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.','actualValue':'Actual value was {0}.','enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.','scriptLoadFailed':'The script \'{0}\' could not be loaded.','parameterCount':'Parameter count mismatch.','cannotDeserializeEmptyString':'Cannot deserialize empty string.','formatInvalidString':'Input string was not in a correct format.','invalidTimeout':'Value must be greater than or equal to zero.','cannotAbortBeforeStart':'Cannot abort when executor has not started.','argument':'Value does not fall within the expected range.','cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.','invalidHttpVerb':'httpVerb cannot be set to an empty or null string.','nullWebRequest':'Cannot call executeRequest with a null webRequest.','eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.','cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.','argumentUndefined':'Value cannot be undefined.','webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}','servicePathNotSet':'The path to the web service has not been set.','argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.','cannotCallOnceStarted':'Cannot call {0} once started.','badBaseUrl1':'Base URL does not contain ://.','badBaseUrl2':'Base URL does not contain another /.','badBaseUrl3':'Cannot find last / in base URL.','setExecutorAfterActive':'Cannot set executor after it has become active.','paramName':'Parameter name: {0}','cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.','format':'One of the identified items was in an invalid format.','assertFailedCaller':'Assertion Failed: {0}\r\nat {1}','argumentOutOfRange':'Specified argument was out of the range of valid values.','webServiceTimedOut':'The server method \'{0}\' timed out.','notImplemented':'The method or operation is not implemented.','assertFailed':'Assertion Failed: {0}','invalidOperation':'Operation is not valid due to the current state of the object.','breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'};
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//----------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//----------------------------------------------------------
+// MicrosoftAjax.js
+Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};Function.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};Function.emptyFunction=Function.emptyMethod=function(){};Function._validateParams=function(e,c){var a;a=Function._validateParameterCount(e,c);if(a){a.popStackFrame();return a}for(var b=0;b<e.length;b++){var d=c[Math.min(b,c.length-1)],f=d.name;if(d.parameterArray)f+="["+(b-c.length+1)+"]";a=Function._validateParameter(e[b],d,f);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(e,a){var c=a.length,d=0;for(var b=0;b<a.length;b++)if(a[b].parameterArray)c=Number.MAX_VALUE;else if(!a[b].optional)d++;if(e.length<d||e.length>c){var f=Error.parameterCount();f.popStackFrame();return f}return null};Function._validateParameter=function(c,a,h){var b,g=a.type,l=!!a.integer,k=!!a.domElement,m=!!a.mayBeNull;b=Function._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return b}var e=a.elementType,f=!!a.elementMayBeNull;if(g===Array&&typeof c!=="undefined"&&c!==null&&(e||!f)){var j=!!a.elementInteger,i=!!a.elementDomElement;for(var d=0;d<c.length;d++){var n=c[d];b=Function._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b){b.popStackFrame();return b}}}return null};Function._validateParameterType=function(b,c,k,j,h,d){var a;if(typeof b==="undefined")if(h)return null;else{a=Error.argumentUndefined(d);a.popStackFrame();return a}if(b===null)if(h)return null;else{a=Error.argumentNull(d);a.popStackFrame();return a}if(c&&c.__enum){if(typeof b!=="number"){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(b%1===0){var e=c.prototype;if(!c.__flags||b===0){for(var g in e)if(e[g]===b)return null}else{var i=b;for(var g in e){var f=e[g];if(f===0)continue;if((f&b)===f)i-=f;if(i===0)return null}}}a=Error.argumentOutOfRange(d,b,String.format(Sys.Res.enumInvalidValue,b,c.getName()));a.popStackFrame();return a}if(j&&b!==window&&b!==document&&!(window.HTMLElement&&b instanceof HTMLElement)&&typeof b.nodeName!=="string"){a=Error.argument(d,Sys.Res.argumentDomElement);a.popStackFrame();return a}if(c&&!c.isInstanceOfType(b)){a=Error.argumentType(d,Object.getType(b),c);a.popStackFrame();return a}if(c===Number&&k)if(b%1!==0){a=Error.argumentOutOfRange(d,b,Sys.Res.argumentInteger);a.popStackFrame();return a}return null};Error.__typeName="Error";Error.__class=true;Error.create=function(d,b){var a=new Error(d);a.message=d;if(b)for(var c in b)a[c]=b[c];a.popStackFrame();return a};Error.argument=function(a,c){var b="Sys.ArgumentException: "+(c?c:Sys.Res.argument);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStackFrame();return d};Error.argumentNull=function(a,c){var b="Sys.ArgumentNullException: "+(c?c:Sys.Res.argumentNull);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popStackFrame();return d};Error.argumentOutOfRange=function(c,a,d){var b="Sys.ArgumentOutOfRangeException: "+(d?d:Sys.Res.argumentOutOfRange);if(c)b+="\n"+String.format(Sys.Res.paramName,c);if(typeof a!=="undefined"&&a!==null)b+="\n"+String.format(Sys.Res.actualValue,a);var e=Error.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,actualValue:a});e.popStackFrame();return e};Error.argumentType=function(d,c,b,e){var a="Sys.ArgumentTypeException: ";if(e)a+=e;else if(c&&b)a+=String.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.getName());else a+=Sys.Res.argumentType;if(d)a+="\n"+String.format(Sys.Res.paramName,d);var f=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualType:c,expectedType:b});f.popStackFrame();return f};Error.argumentUndefined=function(a,c){var b="Sys.ArgumentUndefinedException: "+(c?c:Sys.Res.argumentUndefined);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d.popStackFrame();return d};Error.format=function(a){var c="Sys.FormatException: "+(a?a:Sys.Res.format),b=Error.create(c,{name:"Sys.FormatException"});b.popStackFrame();return b};Error.invalidOperation=function(a){var c="Sys.InvalidOperationException: "+(a?a:Sys.Res.invalidOperation),b=Error.create(c,{name:"Sys.InvalidOperationException"});b.popStackFrame();return b};Error.notImplemented=function(a){var c="Sys.NotImplementedException: "+(a?a:Sys.Res.notImplemented),b=Error.create(c,{name:"Sys.NotImplementedException"});b.popStackFrame();return b};Error.parameterCount=function(a){var c="Sys.ParameterCountException: "+(a?a:Sys.Res.parameterCount),b=Error.create(c,{name:"Sys.ParameterCountException"});b.popStackFrame();return b};Error.prototype.popStackFrame=function(){if(typeof this.stack==="undefined"||this.stack===null||typeof this.fileName==="undefined"||this.fileName===null||typeof this.lineNumber==="undefined"||this.lineNumber===null)return;var a=this.stack.split("\n"),c=a[0],e=this.fileName+":"+this.lineNumber;while(typeof c!=="undefined"&&c!==null&&c.indexOf(e)===-1){a.shift();c=a[0]}var d=a[1];if(typeof d==="undefined"||d===null)return;var b=d.match(/@(.*):(\d+)$/);if(typeof b==="undefined"||b===null)return;this.fileName=b[1];this.lineNumber=parseInt(b[2]);a.shift();this.stack=a.join("\n")};if(!window)this.window=this;window.Type=Function;window.__rootNamespaces=[];window.__registeredTypes={};Type.prototype.callBaseMethod=function(a,d,b){var c=this.getBaseMethod(a,d);if(!b)return c.apply(a);else return c.apply(a,b)};Type.prototype.getBaseMethod=function(d,c){var b=this.getBaseType();if(b){var a=b.prototype[c];return a instanceof Function?a:null}return null};Type.prototype.getBaseType=function(){return typeof this.__baseType==="undefined"?null:this.__baseType};Type.prototype.getInterfaces=function(){var a=[],b=this;while(b){var c=b.__interfaces;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Array.contains(a,e))a[a.length]=e}b=b.__baseType}return a};Type.prototype.getName=function(){return typeof this.__typeName==="undefined"?"":this.__typeName};Type.prototype.implementsInterface=function(d){this.resolveInheritance();var c=d.getName(),a=this.__interfaceCache;if(a){var e=a[c];if(typeof e!=="undefined")return e}else a=this.__interfaceCache={};var b=this;while(b){var f=b.__interfaces;if(f)if(Array.indexOf(f,d)!==-1)return a[c]=true;b=b.__baseType}return a[c]=false};Type.prototype.inheritsFrom=function(b){this.resolveInheritance();var a=this.__baseType;while(a){if(a===b)return true;a=a.__baseType}return false};Type.prototype.initializeBase=function(a,b){this.resolveInheritance();if(this.__baseType)if(!b)this.__baseType.apply(a);else this.__baseType.apply(a,b);return a};Type.prototype.isImplementedBy=function(a){if(typeof a==="undefined"||a===null)return false;var b=Object.getType(a);return !!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.isInstanceOfType=function(b){if(typeof b==="undefined"||b===null)return false;if(b instanceof this)return true;var a=Object.getType(b);return !!(a===this)||a.inheritsFrom&&a.inheritsFrom(this)||a.implementsInterface&&a.implementsInterface(this)};Type.prototype.registerClass=function(c,b,d){this.prototype.constructor=this;this.__typeName=c;this.__class=true;if(b){this.__baseType=b;this.__basePrototypePending=true}if(!window.__classes)window.__classes={};window.__classes[c.toUpperCase()]=this;if(d){this.__interfaces=[];for(var a=2;a<arguments.length;a++){var e=arguments[a];this.__interfaces.push(e)}}return this};Type.prototype.registerInterface=function(a){this.prototype.constructor=this;this.__typeName=a;this.__interface=true;return this};Type.prototype.resolveInheritance=function(){if(this.__basePrototypePending){var b=this.__baseType;b.resolveInheritance();for(var a in b.prototype){var c=b.prototype[a];if(!this.prototype[a])this.prototype[a]=c}delete this.__basePrototypePending}};Type.getRootNamespaces=function(){return Array.clone(window.__rootNamespaces)};Type.isClass=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__class};Type.isInterface=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__interface};Type.isNamespace=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__namespace};Type.parse=function(typeName,ns){var fn;if(ns){if(!window.__classes)return null;fn=window.__classes[ns.getName().toUpperCase()+"."+typeName.toUpperCase()];return fn||null}if(!typeName)return null;if(!Type.__htClasses)Type.__htClasses={};fn=Type.__htClasses[typeName];if(!fn){fn=eval(typeName);Type.__htClasses[typeName]=fn}return fn};Type.registerNamespace=function(f){var d=window,c=f.split(".");for(var b=0;b<c.length;b++){var e=c[b],a=d[e];if(!a){a=d[e]={};if(b===0)window.__rootNamespaces[window.__rootNamespaces.length]=a;a.__namespace=true;a.__typeName=c.slice(0,b+1).join(".");a.getName=function(){return this.__typeName}}d=a}};Object.__typeName="Object";Object.__class=true;Object.getType=function(b){var a=b.constructor;if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;return a};Object.getTypeName=function(a){return Object.getType(a).getName()};Boolean.__typeName="Boolean";Boolean.__class=true;Boolean.parse=function(b){var a=b.trim().toLowerCase();if(a==="false")return false;if(a==="true")return true};Date.__typeName="Date";Date.__class=true;Date._appendPreOrPostMatch=function(e,b){var d=0,a=false;for(var c=0,g=e.length;c<g;c++){var f=e.charAt(c);switch(f){case "'":if(a)b.append("'");else d++;a=false;break;case "\\":if(a)b.append("\\");a=!a;break;default:b.append(f);a=false;break}}return d};Date._expandFormat=function(a,b){if(!b)b="F";if(b.length===1)switch(b){case "d":return a.ShortDatePattern;case "D":return a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return a.LongTimePattern;case "F":return a.FullDateTimePattern;case "M":case "m":return a.MonthDayPattern;case "s":return a.SortableDateTimePattern;case "Y":case "y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString)}return b};Date._expandYear=function(c,a){if(a<100){var b=(new Date).getFullYear();a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)return a-100}return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(g,c,h){var e=false;for(var a=1,i=h.length;a<i;a++){var f=h[a];if(f){e=true;var b=Date._parseExact(g,f,c);if(b)return b}}if(!e){var d=c._getDateTimeFormats();for(var a=0,i=d.length;a<i;a++){var b=Date._parseExact(g,d[a],c);if(b)return b}}return null};Date._parseExact=function(s,y,j){s=s.trim();var m=j.dateTimeFormat,v=Date._getParseRegExp(m,y),x=(new RegExp(v.regExp)).exec(s);if(x!==null){var w=v.groups,f=null,c=null,h=null,g=null,d=0,n=0,o=0,e=0,k=null,r=false;for(var p=0,z=w.length;p<z;p++){var a=x[p+1];if(a)switch(w[p]){case "dd":case "d":h=Date._parseInt(a);if(h<1||h>31)return null;break;case "MMMM":c=j._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=j._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":var c=Date._parseInt(a)-1;if(c<0||c>11)return null;break;case "y":case "yy":f=Date._expandYear(m,Date._parseInt(a));if(f<0||f>9999)return null;break;case "yyyy":f=Date._parseInt(a);if(f<0||f>9999)return null;break;case "h":case "hh":d=Date._parseInt(a);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=Date._parseInt(a);if(d<0||d>23)return null;break;case "m":case "mm":n=Date._parseInt(a);if(n<0||n>59)return null;break;case "s":case "ss":o=Date._parseInt(a);if(o<0||o>59)return null;break;case "tt":case "t":var u=a.toUpperCase();r=u===m.PMDesignator.toUpperCase();if(!r&&u!==m.AMDesignator.toUpperCase())return null;break;case "f":e=Date._parseInt(a)*100;if(e<0||e>999)return null;break;case "ff":e=Date._parseInt(a)*10;if(e<0||e>999)return null;break;case "fff":e=Date._parseInt(a);if(e<0||e>999)return null;break;case "dddd":g=j._getDayIndex(a);if(g<0||g>6)return null;break;case "ddd":g=j._getAbbrDayIndex(a);if(g<0||g>6)return null;break;case "zzz":var q=a.split(/:/);if(q.length!==2)return null;var i=Date._parseInt(q[0]);if(i<-12||i>13)return null;var l=Date._parseInt(q[1]);if(l<0||l>59)return null;k=i*60+(a.startsWith("-")?-l:l);break;case "z":case "zz":var i=Date._parseInt(a);if(i<-12||i>13)return null;k=i*60;break}}var b=new Date;if(f===null)f=b.getFullYear();if(c===null)c=b.getMonth();if(h===null)h=b.getDate();b.setFullYear(f,c,h);if(b.getDate()!==h)return null;if(g!==null&&b.getDay()!==g)return null;if(r&&d<12)d+=12;b.setHours(d,n,o,e);if(k!==null){var t=b.getMinutes()-(k+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(t/60),t%60)}return b}};Date._parseInt=function(a){return parseInt(a.replace(/^[\s0]+(\d+)$/,"$1"))};Date.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype._toFormattedString=function(e,h){if(!e||e.length===0||e==="i")if(h&&h.name.length>0)return this.toLocaleString();else return this.toString();var d=h.dateTimeFormat;e=Date._expandFormat(d,e);var a=new Sys.StringBuilder,b;function c(a){if(a<10)return "0"+a;return a.toString()}function g(a){if(a<10)return "00"+a;if(a<100)return "0"+a;return a.toString()}var j=0,i=Date._getTokenRegExp();for(;true;){var l=i.lastIndex,f=i.exec(e),k=e.slice(l,f?f.index:e.length);j+=Date._appendPreOrPostMatch(k,a);if(!f)break;if(j%2===1){a.append(f[0]);continue}switch(f[0]){case "dddd":a.append(d.DayNames[this.getDay()]);break;case "ddd":a.append(d.AbbreviatedDayNames[this.getDay()]);break;case "dd":a.append(c(this.getDate()));break;case "d":a.append(this.getDate());break;case "MMMM":a.append(d.MonthNames[this.getMonth()]);break;case "MMM":a.append(d.AbbreviatedMonthNames[this.getMonth()]);break;case "MM":a.append(c(this.getMonth()+1));break;case "M":a.append(this.getMonth()+1);break;case "yyyy":a.append(this.getFullYear());break;case "yy":a.append(c(this.getFullYear()%100));break;case "y":a.append(this.getFullYear()%100);break;case "hh":b=this.getHours()%12;if(b===0)b=12;a.append(c(b));break;case "h":b=this.getHours()%12;if(b===0)b=12;a.append(b);break;case "HH":a.append(c(this.getHours()));break;case "H":a.append(this.getHours());break;case "mm":a.append(c(this.getMinutes()));break;case "m":a.append(this.getMinutes());break;case "ss":a.append(c(this.getSeconds()));break;case "s":a.append(this.getSeconds());break;case "tt":a.append(this.getHours()<12?d.AMDesignator:d.PMDesignator);break;case "t":a.append((this.getHours()<12?d.AMDesignator:d.PMDesignator).charAt(0));break;case "f":a.append(g(this.getMilliseconds()).charAt(0));break;case "ff":a.append(g(this.getMilliseconds()).substr(0,2));break;case "fff":a.append(g(this.getMilliseconds()));break;case "z":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+Math.floor(Math.abs(b)));break;case "zz":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+c(Math.floor(Math.abs(b))));break;case "zzz":b=this.getTimezoneOffset()/60;a.append((b>=0?"+":"-")+c(Math.floor(Math.abs(b)))+d.TimeSeparator+c(Math.abs(this.getTimezoneOffset()%60)));break}}return a.toString()};Number.__typeName="Number";Number.__class=true;Number.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=function(g,f){var a=g.trim();if(a.match(/infinity/i)!==null)return parseFloat(a);if(a.match(/^0x[a-f0-9]+$/i)!==null)return parseInt(a);var d=f.numberFormat,b=d.NumberDecimalSeparator,c=d.NumberGroupSeparator,e=new RegExp("^[+-]?[\\d\\"+c+"]*\\"+b+"?\\d*([eE][+-]?\\d+)?$");if(!a.match(e))return Number.NaN;a=a.split(c).join("");a=a.replace(b,".");return parseFloat(a)};Number.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototype._toFormattedString=function(d,j){if(!d||d.length===0||d==="i")if(j&&j.name.length>0)return this.toLocaleString();else return this.toString();var q=["n %","n%","%n"],p=["-n %","-n%","-%n"],r=["(n)","-n","- n","n-","n -"],o=["$n","n$","$ n","n $"],n=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function i(p,k,j,l,o){var e=j[0],g=1,c=p.toString(),a="",m="",i=c.split(".");if(i.length>1){c=i[0];a=i[1];var h=a.split(/e/i);if(h.length>1){a=h[0];m="e"+h[1]}}if(k>0){var f=a.length-k;if(f>0)a=a.slice(0,k);else if(f<0)for(var n=0;n<Math.abs(f);n++)a+="0";a=o+a}else a="";a+=m;var b=c.length-1,d="";while(b>=0){if(e===0||e>b)if(d.length>0)return c.slice(0,b+1)+l+d+a;else return c.slice(0,b+1)+a;if(d.length>0)d=c.slice(b-e+1,b+1)+l+d;else d=c.slice(b-e+1,b+1);b-=e;if(g<j.length){e=j[g];g++}}return c.slice(0,b+1)+l+d+a}var a=j.numberFormat,e=Math.abs(this);if(!d)d="D";var b=-1;if(d.length>1)b=parseInt(d.slice(1));var c;switch(d.charAt(0)){case "d":case "D":c="n";if(b!==-1){var g=""+e,k=b-g.length;if(k>0)for(var m=0;m<k;m++)g="0"+g;e=g}if(this<0)e=-e;break;case "c":case "C":if(this<0)c=n[a.CurrencyNegativePattern];else c=o[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;e=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=r[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;e=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=p[a.PercentNegativePattern];else c=q[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;e=i(Math.abs(this),b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var l=/n|\$|-|%/g,f="";for(;true;){var s=l.lastIndex,h=l.exec(c);f+=c.slice(s,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=e;break;case "$":f+=a.CurrencySymbol;break;case "-":f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol;break}}return f};RegExp.__typeName="RegExp";RegExp.__class=true;Array.__typeName="Array";Array.__class=true;Array.add=Array.enqueue=function(a,b){a[a.length]=b};Array.addRange=function(a,b){a.push.apply(a,b)};Array.clear=function(a){a.length=0};Array.clone=function(a){if(a.length===1)return [a[0]];else return Array.apply(null,a)};Array.contains=function(a,b){return Array.indexOf(a,b)>=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a<f;a++){var c=b[a];if(typeof c!=="undefined")e.call(d,c,a,b)}};Array.indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(typeof d[b]!=="undefined"&&d[b]===e)return b}return -1};Array.insert=function(a,b,c){a.splice(b,0,c)};Array.parse=function(value){if(!value)return [];return eval(value)};Array.remove=function(b,c){var a=Array.indexOf(b,c);if(a>=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};String.__typeName="String";String.__class=true;String.prototype.endsWith=function(a){return this.substr(this.length-a.length)===a};String.prototype.startsWith=function(a){return this.substr(0,a.length)===a};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=function(){return this.replace(/\s+$/,"")};String.prototype.trimStart=function(){return this.replace(/^\s+/,"")};String.format=function(){return String._toFormattedString(false,arguments)};String.localeFormat=function(){return String._toFormattedString(true,arguments)};String._toFormattedString=function(l,j){var c="",e=j[0];for(var a=0;true;){var f=e.indexOf("{",a),d=e.indexOf("}",a);if(f<0&&d<0){c+=e.slice(a);break}if(d>0&&(d<f||f<0)){c+=e.slice(a,d+1);a=d+2;continue}c+=e.slice(a,f);a=f+1;if(e.charAt(a)==="{"){c+="{";a++;continue}if(d<0)break;var h=e.substring(a,d),g=h.indexOf(":"),k=parseInt(g<0?h:h.substring(0,g))+1,i=g<0?"":h.substring(g+1),b=j[k];if(typeof b==="undefined"||b===null)b="";if(b.toFormattedString)c+=b.toFormattedString(i);else if(l&&b.localeFormat)c+=b.localeFormat(i);else if(b.format)c+=b.format(i);else c+=b.toString();a=d+1}return c};Type.registerNamespace("Sys");Sys.IDisposable=function(){};Sys.IDisposable.prototype={};Sys.IDisposable.registerInterface("Sys.IDisposable");Sys.StringBuilder=function(a){this._parts=typeof a!=="undefined"&&a!==null&&a!==""?[a.toString()]:[];this._value={};this._len=0};Sys.StringBuilder.prototype={append:function(a){this._parts[this._parts.length]=a},appendLine:function(a){this._parts[this._parts.length]=typeof a==="undefined"||a===null||a===""?"\r\n":a+"\r\n"},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){if(this._parts.length===0)return true;return this.toString()===""},toString:function(a){a=a||"";var b=this._parts;if(this._len!==b.length){this._value={};this._len=b.length}var d=this._value;if(typeof d[a]==="undefined"){if(a!=="")for(var c=0;c<b.length;)if(typeof b[c]==="undefined"||b[c]===""||b[c]===null)b.splice(c,1);else c++;d[a]=this._parts.join(a)}return d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];for(var a=0;a<b.length;a++)try{var c=new ActiveXObject(b[a]);return c}catch(d){}return null};Sys.Browser={};Sys.Browser.InternetExplorer={};Sys.Browser.Firefox={};Sys.Browser.Safari={};Sys.Browser.Opera={};Sys.Browser.agent=null;Sys.Browser.hasDebuggerStatement=false;Sys.Browser.name=navigator.appName;Sys.Browser.version=parseFloat(navigator.appVersion);if(navigator.userAgent.indexOf(" MSIE ")>-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Safari/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Safari\/(\d+\.\d+)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+="    ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e<j;e++)this._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in a){h=a[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=new Sys._Debug;Sys.Debug.isDebug=false;function Sys$Enum$parse(c,e){var a,b,i;if(e){a=this.__lowerCaseValues;if(!a){this.__lowerCaseValues=a={};var g=this.prototype;for(var f in g)a[f.toLowerCase()]=g[f]}}else a=this.prototype;if(!this.__flags){i=e?c.toLowerCase():c;b=a[i.trim()];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__typeName));return b}else{var h=(e?c.toLowerCase():c).split(","),j=0;for(var d=h.length-1;d>=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(c,b){for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=c;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=b;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);if(!a._handler)a._handler=function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)};return a._handler},_getEvent:function(a,b){if(!this._list[a]){if(!b)return null;this._list[a]=[]}return this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList");Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.INotifyDisposing=function(){};Sys.INotifyDisposing.prototype={};Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");Sys.Component=function(){if(Sys.Application)Sys.Application.registerDisposableObject(this)};Sys.Component.prototype={_id:null,_initialized:false,_updating:false,get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_id:function(){return this._id},set_id:function(a){this._id=a},get_isInitialized:function(){return this._initialized},get_isUpdating:function(){return this._updating},add_disposing:function(a){this.get_events().addHandler("disposing",a)},remove_disposing:function(a){this.get_events().removeHandler("disposing",a)},add_propertyChanged:function(a){this.get_events().addHandler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_events().removeHandler("propertyChanged",a)},beginUpdate:function(){this._updating=true},dispose:function(){if(this._events){var a=this._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)}delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},endUpdate:function(){this._updating=false;if(!this._initialized)this.initialize();this.updated()},initialize:function(){this._initialized=true},raisePropertyChanged:function(b){if(!this._events)return;var a=this._events.getHandler("propertyChanged");if(a)a(this,new Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.registerClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var d,j=Object.getType(a),e=j===Object||j===Sys.UI.DomElement,h=Sys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginUpdate();for(var c in i){var b=i[c],f=e?null:a["get_"+c];if(e||typeof f!=="function"){var k=a[c];if(!b||typeof b!=="object"||e&&!k)a[c]=b;else Sys$Component$_setProperties(k,b)}else{var l=a["set_"+c];if(typeof l==="function")l.apply(a,[b]);else if(b instanceof Array){d=f.apply(a);for(var g=0,m=d.length,n=b.length;g<n;g++,m++)d[m]=b[g]}else if(typeof b==="object"&&Object.getType(b)===Object){d=f.apply(a);Sys$Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function Sys$Component$_setReferences(c,b){for(var a in b){var e=c["set_"+a],d=$find(b[a]);e.apply(c,[d])}}var $create=Sys.Component.create=function(h,f,d,c,g){var a=g?new h(g):new h,b=Sys.Application,i=b.get_isCreatingComponents();a.beginUpdate();if(f)Sys$Component$_setProperties(a,f);if(d)for(var e in d)a["add_"+e](d[e]);b._createdComponents[b._createdComponents.length]=a;if(a.get_id())b.addComponent(a);if(i)if(c)b._addComponentToSecondPass(a,c);else a.endUpdate();else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}return a};Sys.UI.MouseButton=function(){throw Error.notImplemented()};Sys.UI.MouseButton.prototype={leftButton:0,middleButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");Sys.UI.Key=function(){throw Error.notImplemented()};Sys.UI.Key.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.DomEvent=function(c){var a=c;this.rawEvent=a;this.altKey=a.altKey;if(typeof a.button!=="undefined")this.button=typeof a.which!=="undefined"?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(a.type==="keypress")this.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)this.keyCode=127;else this.keyCode=a.keyCode;this.clientX=a.clientX;this.clientY=a.clientY;this.ctrlKey=a.ctrlKey;this.target=a.target?a.target:a.srcElement;if(this.target){var b=Sys.UI.DomElement.getLocation(this.target);this.offsetX=typeof a.offsetX!=="undefined"?a.offsetX:window.pageXOffset+(a.clientX||0)-b.x;this.offsetY=typeof a.offsetY!=="undefined"?a.offsetY:window.pageYOffset+(a.clientY||0)-b.y}this.screenX=a.screenX;this.screenY=a.screenY;this.shiftKey=a.shiftKey;this.type=a.type};Sys.UI.DomEvent.prototype={preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEvent.preventDefault();else if(window.event)window.event.returnValue=false},stopPropagation:function(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();else if(window.event)window.event.cancelBubble=true}};Sys.UI.DomEvent.registerClass("Sys.UI.DomEvent");var $addHandler=Sys.UI.DomEvent.addHandler=function(a,d,e){if(!a._events)a._events={};var c=a._events[d];if(!c)a._events[d]=c=[];var b;if(a.addEventListener){b=function(b){return e.call(a,new Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else if(a.attachEvent){b=function(){return e.call(a,new Sys.UI.DomEvent(window.event))};a.attachEvent("on"+d,b)}c[c.length]={handler:e,browserHandler:b}},$addHandlers=Sys.UI.DomEvent.addHandlers=function(e,d,c){for(var b in d){var a=d[b];if(c)a=Function.createDelegate(c,a);$addHandler(e,b,a)}},$clearHandlers=Sys.UI.DomEvent.clearHandlers=function(a){if(a._events){var e=a._events;for(var b in e){var d=e[b];for(var c=d.length-1;c>=0;c--)$removeHandler(a,b,d[c].handler)}a._events=null}},$removeHandler=Sys.UI.DomEvent.removeHandler=function(a,e,f){var d=null,c=a._events[e],d=null;for(var b=0,g=c.length;b<g;b++)if(c[b].handler===f){d=c[b].browserHandler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys._ScriptLoader=function(){this._scriptsToLoad=null;this._scriptLoadedDelegate=Function.createDelegate(this,this._scriptLoadedHandler)};Sys._ScriptLoader.prototype={dispose:function(){this._stopLoading();if(this._events)delete this._events;this._scriptLoadedDelegate=null},loadScripts:function(a,c,d,b){this._loading=true;this._allScriptsLoadedCallback=c;this._scriptLoadFailedCallback=d;this._scriptLoadTimeoutCallback=b;if(a>0)this._timeoutCookie=window.setTimeout(Function.createDelegate(this,this._scriptLoadTimeoutHandler),a*1000);this._loadScriptsInternal()},notifyScriptLoaded:function(){if(!this._loading)return;this._currentTask._notified++;if(Sys.Browser.agent===Sys.Browser.Safari)if(this._currentTask._notified===1)window.setTimeout(Function.createDelegate(this,function(){this._scriptLoadedHandler(this._currentTask.get_scriptElement(),true)}),0)},queueCustomScriptTag:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{text:a})},queueScriptReference:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(c){var a=document.createElement("SCRIPT");a.type="text/javascript";for(var b in c)a[b]=c[b];return a},_loadScriptsInternal:function(){if(this._scriptsToLoad&&this._scriptsToLoad.length>0){var b=Array.dequeue(this._scriptsToLoad),a=this._createScriptElement(b);if(a.text&&Sys.Browser.agent===Sys.Browser.Safari){a.innerHTML=a.text;delete a.text}if(typeof b.src==="string"){this._currentTask=new Sys._ScriptLoaderTask(a,this._scriptLoadedDelegate);this._currentTask.execute()}else{document.getElementsByTagName("HEAD")[0].appendChild(a);Sys._ScriptLoader._clearScript(a);this._loadScriptsInternal()}}else{var c=this._allScriptsLoadedCallback;this._stopLoading();if(c)c(this)}},_raiseError:function(a){var c=this._scriptLoadFailedCallback,b=this._currentTask.get_scriptElement();this._stopLoading();if(c)c(this,b,a);else throw Sys._ScriptLoader._errorScriptLoadFailed(b.src,a)},_scriptLoadedHandler:function(a,b){if(b&&this._currentTask._notified)if(this._currentTask._notified>1)this._raiseError(true);else{Array.add(Sys._ScriptLoader._getLoadedScripts(),a.src);this._currentTask.dispose();this._currentTask=null;this._loadScriptsInternal()}else this._raiseError(false)},_scriptLoadTimeoutHandler:function(){var a=this._scriptLoadTimeoutCallback;this._stopLoading();if(a)a(this)},_stopLoading:function(){if(this._timeoutCookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=null}if(this._currentTask){this._currentTask.dispose();this._currentTask=null}this._scriptsToLoad=null;this._loading=null;this._allScriptsLoadedCallback=null;this._scriptLoadFailedCallback=null;this._scriptLoadTimeoutCallback=null}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisposable);Sys._ScriptLoader.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};Sys._ScriptLoader.isScriptLoaded=function(b){var a=document.createElement("script");a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptLoader.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){var b=Sys._ScriptLoader._referencedScripts=[],c=document.getElementsByTagName("SCRIPT");for(i=c.length-1;i>=0;i--){var d=c[i],a=d.src;if(a.length)if(!Array.contains(b,a))Array.add(b,a)}}};Sys._ScriptLoader._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Sys._ScriptLoader._errorScriptLoadFailed=function(b,d){var a;if(d)a=Sys.Res.scriptLoadMultipleCallbacks;else a=Sys.Res.scriptLoadFailed;var e="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(e,{name:"Sys.ScriptLoadFailedException","scriptUrl":b});c.popStackFrame();return c};Sys._ScriptLoader._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a;this._notified=0};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoader._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("HEAD")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);$addHandler(this._scriptElement,"error",this._scriptErrorDelegate)},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);$removeHandler(a,"error",this._scriptErrorDelegate);this._scriptErrorDelegate=null;this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;var b=this;window.setTimeout(function(){b._completedCallback(a,true)},0)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);this._loadHandlerDelegate=Function.createDelegate(this,this._loadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);Sys.UI.DomEvent.addHandler(window,"load",this._loadHandlerDelegate)};Sys._Application.prototype={_creatingComponents:false,_disposing:false,get_isCreatingComponents:function(){return this._creatingComponents},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,e=b.length;a<e;a++)b[a].dispose();Array.clear(this._disposableObjects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDelegate);if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}var d=Sys._ScriptLoader.getInstance();if(d)d.dispose();Sys._Application.callBaseMethod(this,"dispose")}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a<d;a++){var c=b[a].component;Sys$Component$_setReferences(c,b[a].references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=false},findComponent:function(b,a){return a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Application._components[b]||null},getComponents:function(){var a=[],b=this._components;for(var c in b)a[a.length]=b[c];return a},initialize:function(){if(!this._initialized&&!this._initializing){this._initializing=true;window.setTimeout(Function.createDelegate(this,this._doInitialize),0)}},notifyScriptLoaded:function(){var a=Sys._ScriptLoader.getInstance();if(a)a.notifyScriptLoaded()},registerDisposableObject:function(a){if(!this._disposing)this._disposableObjects[this._disposableObjects.length]=a},raiseLoad:function(){var b=this.get_events().getHandler("load"),a=new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!this._initializing);if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);this._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){if(!this._disposing)Array.remove(this._disposableObjects,a)},_addComponentToSecondPass:function(b,a){this._secondPassComponents[this._secondPassComponents.length]={component:b,references:a}},_doInitialize:function(){Sys._Application.callBaseMethod(this,"initialize");var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}this.raiseLoad();this._initializing=false},_loadHandler:function(){if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}this.initialize()},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Type.registerNamespace("Sys.Net");Sys.Net.WebRequestExecutor=function(){this._webRequest=null;this._resultObject=null};Sys.Net.WebRequestExecutor.prototype={get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_started:function(){throw Error.notImplemented()},get_responseAvailable:function(){throw Error.notImplemented()},get_timedOut:function(){throw Error.notImplemented()},get_aborted:function(){throw Error.notImplemented()},get_responseData:function(){throw Error.notImplemented()},get_statusCode:function(){throw Error.notImplemented()},get_statusText:function(){throw Error.notImplemented()},get_xml:function(){throw Error.notImplemented()},get_object:function(){if(!this._resultObject)this._resultObject=Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return this._resultObject},executeRequest:function(){throw Error.notImplemented()},abort:function(){throw Error.notImplemented()},getResponseHeader:function(){throw Error.notImplemented()},getAllResponseHeaders:function(){throw Error.notImplemented()}};Sys.Net.WebRequestExecutor.registerClass("Sys.Net.WebRequestExecutor");window.XMLDOM=function(d){if(!window.DOMParser){var c=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"];for(var b=0;b<c.length;b++)try{var a=new ActiveXObject(c[b]);a.async=false;a.loadXML(d);a.setProperty("SelectionLanguage","XPath");return a}catch(f){}return null}else try{var e=new window.DOMParser;return e.parseFromString(d,"text/xml")}catch(f){return null}return null};Sys.Net.XMLHttpExecutor=function(){Sys.Net.XMLHttpExecutor.initializeBase(this);var a=this;this._xmlHttpRequest=null;this._webRequest=null;this._responseAvailable=false;this._timedOut=false;this._timer=null;this._aborted=false;this._started=false;this._onReadyStateChange=function(){if(a._xmlHttpRequest.readyState===4){a._clearTimer();a._responseAvailable=true;a._webRequest.completed(Sys.EventArgs.Empty);if(a._xmlHttpRequest!=null){a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest=null}}};this._clearTimer=function(){if(a._timer!=null){window.clearTimeout(a._timer);a._timer=null}};this._onTimeout=function(){if(!a._responseAvailable){a._clearTimer();a._timedOut=true;a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest.abort();a._webRequest.completed(Sys.EventArgs.Empty);a._xmlHttpRequest=null}}};Sys.Net.XMLHttpExecutor.prototype={get_timedOut:function(){return this._timedOut},get_started:function(){return this._started},get_responseAvailable:function(){return this._responseAvailable},get_aborted:function(){return this._aborted},executeRequest:function(){this._webRequest=this.get_webRequest();var c=this._webRequest.get_body(),a=this._webRequest.get_headers();this._xmlHttpRequest=new XMLHttpRequest;this._xmlHttpRequest.onreadystatechange=this._onReadyStateChange;var e=this._webRequest.get_httpVerb();this._xmlHttpRequest.open(e,this._webRequest.getResolvedUrl(),true);if(a)for(var b in a){var f=a[b];if(typeof f!=="function")this._xmlHttpRequest.setRequestHeader(b,f)}if(e.toLowerCase()==="post"){if(a===null||!a["Content-Type"])this._xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(!c)c=""}var d=this._webRequest.get_timeout();if(d>0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){return this._xmlHttpRequest.status},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=new XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;var a=this._webRequest._get_eventHandlerList().getHandler("completed");if(a)a(this,Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._this=this;this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var c=document.getElementsByTagName("base")[0];if(c&&c.href&&c.href.length>0)a=c.href;else a=document.URL}var d=a.indexOf("?");if(d!==-1)a=a.substr(0,d);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(d,b){if(!b)b=encodeURIComponent;var a=new Sys.StringBuilder,f=0;for(var c in d){var e=d[c];if(typeof e==="function")continue;var g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(f!==0)a.append("&");a.append(c);a.append("=");a.append(b(g));f++}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b){if(!b)return a;var d=Sys.Net.WebRequest._createQueryString(b);if(d.length>0){var c="?";if(a&&a.indexOf("?")!==-1)c="&";return a+c+d}else return a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={set_timeout:function(a){this._timeout=a},get_timeout:function(){return this._timeout},set_defaultUserContext:function(a){this._userContext=a},get_defaultUserContext:function(){return this._userContext},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultSucceededCallback:function(){return this._succeeded},set_defaultFailedCallback:function(a){this._failed=a},get_defaultFailedCallback:function(){return this._failed},set_path:function(a){this._path=a},get_path:function(){return this._path},_invoke:function(d,e,g,f,c,b,a){if(c===null||typeof c==="undefined")c=this.get_defaultSucceededCallback();if(b===null||typeof b==="undefined")b=this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(k,a,j,d,i,c,f,h){var b=new Sys.Net.WebRequest;b.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!d)d={};var g=d;if(!j||!g)g={};b.set_url(Sys.Net.WebRequest._createUrl(k+"/"+a,g));var e=null;if(!j){e=Sys.Serialization.JavaScriptSerializer.serialize(d);if(e==="{}")e=""}b.set_body(e);b.add_completed(l);if(h&&h>0)b.set_timeout(h);b.invoke();function l(d){if(d.get_responseAvailable()){var e=d.get_statusCode(),b=null;try{var j=d.getResponseHeader("Content-Type");if(j.startsWith("application/json"))b=d.get_object();else if(j.startsWith("text/xml"))b=d.get_xml();else b=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),g=k==="true";if(g)b=new Sys.Net.WebServiceError(false,b.Message,b.StackTrace,b.ExceptionType);if(e<200||e>=300||g){if(c){if(!b||!g)b=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a),"","");b._statusCode=e;c(b,f,a)}}else if(i)i(b,f,a)}else{var h;if(d.get_timedOut())h=String.format(Sys.Res.webServiceTimedOut,a);else h=String.format(Sys.Res.webServiceFailedNoMsg,a);if(c)c(new Sys.Net.WebServiceError(d.get_timedOut(),h,"",""),f,a)}}return b};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys.Net.WebServiceError=function(c,d,b,a){this._timedOut=c;this._message=d;this._stackTrace=b;this._exceptionType=a;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace},get_exceptionType:function(){return this._exceptionType}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError");Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultFailedCallback:null,_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultFailedCallback:function(){return this._defaultFailedCallback},set_defaultFailedCallback:function(a){this._defaultFailedCallback=a},get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path},set_path:function(a){if(!a||!a.length)a="";this._path=a},get_timeout:function(){return this._timeout},set_timeout:function(a){this._timeout=a},load:function(b,d,e,f){var c={},a;if(!b)a="GetAllPropertiesForCurrentUser";else{a="GetPropertiesForCurrentUser";c={properties:this._clonePropertyNames(b)}}this._invoke(this._get_path(),a,false,c,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,a,c,e){var b=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:b},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[a,c,e])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b<e.length;b++){var a=e[b];if(!d[a]){Array.add(c,a);d[a]=true}}return c},_flattenProperties:function(a,h,i){var b={},e,d;if(a&&a.length===0)return b;for(var c in h){e=h[c];d=i?i+"."+c:c;if(Sys.Services.ProfileGroup.isInstanceOfType(e)){var g=this._flattenProperties(a,e,d);for(var f in g){var j=g[f];b[f]=j}}else if(!a||Array.indexOf(a,d)!==-1)b[d]=e}return b},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._ProfileService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoadComplete:function(a,f,g){if(typeof a!=="object")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Object"));var d=this._unflattenProperties(a);for(var b in d)this.properties[b]=d[b];var c=f[0],e=c?c:this._defaultLoadCompletedCallback;if(e)e(a.length,f[2],"Sys.Services.ProfileService.load")},_onLoadFailed:function(d,c){var a=c[1],b=a?a:this._defaultFailedCallback;if(b)b(d,c[2],"Sys.Services.ProfileService.load")},_onSaveComplete:function(d,c,f){if(typeof d!=="number")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Number"));var a=c[0],e=c[2],b=a?a:this._defaultSaveCompletedCallback;if(b)b(d,e,"Sys.Services.ProfileService.save")},_onSaveFailed:function(e,c){var a=c[1],d=c[2],b=a?a:this._defaultFailedCallback;if(b)b(e,d,"Sys.Services.ProfileService.save")},_unflattenProperties:function(e){var c={},d,f,h=0;for(var a in e){h++;f=e[a];d=a.indexOf(".");if(d!==-1){var g=a.substr(0,d);a=a.substr(d+1);var b=c[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=new Sys.Services.ProfileGroup;c[g]=b}b[a]=f}else c[a]=f}e.length=h;return c}};Sys.Services._ProfileService.registerClass("Sys.Services._ProfileService",Sys.Net.WebServiceProxy);Sys.Services.ProfileService=new Sys.Services._ProfileService;Sys.Services.ProfileGroup=function(a){if(a)for(var b in a)this[b]=a[b]};Sys.Services.ProfileGroup.registerClass("Sys.Services.ProfileGroup");Sys.Services._AuthenticationService=function(){Sys.Services._AuthenticationService.initializeBase(this)};Sys.Services._AuthenticationService.DefaultWebServicePath="";Sys.Services._AuthenticationService.prototype={_defaultFailedCallback:null,_defaultLoginCompletedCallback:null,_defaultLogoutCompletedCallback:null,_path:"",_timeout:0,_authenticated:false,get_defaultFailedCallback:function(){return this._defaultFailedCallback},set_defaultFailedCallback:function(a){this._defaultFailedCallback=a},get_defaultLoginCompletedCallback:function(){return this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:function(a){this._defaultLoginCompletedCallback=a},get_defaultLogoutCompletedCallback:function(){return this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:function(a){this._defaultLogoutCompletedCallback=a},get_isLoggedIn:function(){return this._authenticated},get_path:function(){return this._path},set_path:function(a){if(!a||!a.length)a="";this._path=a},get_timeout:function(){return this._timeout},set_timeout:function(a){this._timeout=a},login:function(c,b,a,h,f,d,e,g){this._invoke(this._get_path(),"Login",false,{userName:c,password:b,createPersistentCookie:a},Function.createDelegate(this,this._onLoginComplete),Function.createDelegate(this,this._onLoginFailed),[c,b,a,f,d,e,g])},logout:function(c,a,b,d){this._invoke(this._get_path(),"Logout",false,{},Function.createDelegate(this,this._onLogoutComplete),Function.createDelegate(this,this._onLogoutFailed),[c,a,b,d])},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._AuthenticationService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoginComplete:function(f,c,g){if(typeof f!=="boolean")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Boolean"));var b=c[3],d=c[4],e=c[6],a=d?d:this._defaultLoginCompletedCallback;if(f){this._authenticated=true;if(a)a(true,e,"Sys.Services.AuthenticationService.login");if(typeof b!=="undefined"&&b!==null)window.location.href=b}else if(a)a(false,e,"Sys.Services.AuthenticationService.login")},_onLoginFailed:function(d,c){var a=c[5],b=a?a:this._defaultFailedCallback;if(b)b(d,c[6],"Sys.Services.AuthenticationService.login")},_onLogoutComplete:function(g,a,f){if(g!==null)throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"null"));var c=a[0],b=a[1],e=a[3],d=b?b:this._defaultLogoutCompletedCallback;this._authenticated=false;if(d)d(null,e,"Sys.Services.AuthenticationService.logout");if(!c)window.location.reload();else window.location.href=c},_onLogoutFailed:function(d,c){var a=c[2],b=a?a:this._defaultFailedCallback;if(b)b(d,c[3],"Sys.Services.AuthenticationService.logout")},_setAuthenticated:function(a){this._authenticated=a}};Sys.Services._AuthenticationService.registerClass("Sys.Services._AuthenticationService",Sys.Net.WebServiceProxy);Sys.Services.AuthenticationService=new Sys.Services._AuthenticationService;Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._stringRegEx=new RegExp('["\b\f\n\r\t\\\\\x00-\x1F]',"i");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,h){var c;switch(typeof b){case "object":if(b)if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c<b.length;++c){if(c>0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var e=[],i=0;for(var g in b){if(g.startsWith("$"))continue;e[i++]=g}if(h)e.sort();a.append("{");var j=false;for(c=0;c<i;c++){var f=b[e[c]];if(typeof f!=="undefined"&&typeof f!=="function"){if(j)a.append(",");else j=true;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(e[c],a,h);a.append(":");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(f,a,h)}}a.append("}")}else a.append("null");break;case "number":if(isFinite(b))a.append(String(b));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);break;case "string":a.append('"');if(Sys.Browser.agent===Sys.Browser.Safari||Sys.Serialization.JavaScriptSerializer._stringRegEx.test(b)){var k=b.length;for(c=0;c<k;++c){var d=b.charAt(c);if(d>=" "){if(d==="\\"||d==='"')a.append("\\");a.append(d)}else switch(d){case "\b":a.append("\\b");break;case "\f":a.append("\\f");break;case "\n":a.append("\\n");break;case "\r":a.append("\\r");break;case "\t":a.append("\\t");break;default:a.append("\\u00");if(d.charCodeAt()<16)a.append("0");a.append(d.charCodeAt().toString(16))}}}else a.append(b);a.append('"');break;case "boolean":a.append(b.toString());break;default:a.append("null");break}};Sys.Serialization.JavaScriptSerializer.serialize=function(b){var a=new Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b,a,false);return a.toString()};Sys.Serialization.JavaScriptSerializer.deserialize=function(data){if(data.length===0)throw Error.argument("data",Sys.Res.cannotDeserializeEmptyString);try{var exp=data.replace(new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)\\)\\\\/\\"',"g"),"$1new Date($2)");return eval("("+exp+")")}catch(a){throw Error.argument("data",Sys.Res.cannotDeserializeInvalidJson)}};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getMonthIndex:function(a){if(!this._upperMonths)this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths)this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a<d;a++)b[a]=this._toUpper(c[a]);return b},_toUpper:function(a){return a.split("\u00A0").join(" ").toUpperCase()}};Sys.CultureInfo._parse=function(b){var a=Sys.Serialization.JavaScriptSerializer.deserialize(b);return new Sys.CultureInfo(a.name,a.numberFormat,a.dateTimeFormat)};Sys.CultureInfo.registerClass("Sys.CultureInfo");Sys.CultureInfo.InvariantCulture=Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');if(typeof __cultureInfo==="undefined")var __cultureInfo='{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse(__cultureInfo);delete __cultureInfo;Sys.UI.Point=function(a,b){this.x=a;this.y=b};Sys.UI.Point.registerClass("Sys.UI.Point");Sys.UI.Bounds=function(c,d,b,a){this.x=c;this.y=d;this.height=a;this.width=b};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI.DomElement=function(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.UI.DomElement.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=" "+b};Sys.UI.DomElement.containsCssClass=function(b,a){return Array.contains(b.className.split(" "),a)};Sys.UI.DomElement.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var $get=Sys.UI.DomElement.getElementById=function(f,e){if(!e)return document.getElementById(f);if(e.getElementById)return e.getElementById(f);var c=[],d=e.childNodes;for(var b=0;b<d.length;b++){var a=d[b];if(a.nodeType==1)c[c.length]=a}while(c.length){a=c.shift();if(a.id==f)return a;d=a.childNodes;for(b=0;b<d.length;b++){a=d[b];if(a.nodeType==1)c[c.length]=a}}return null};switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:Sys.UI.DomElement.getLocation=function Sys$UI$DomElement$getLocation(a){if(a.self||a.nodeType===9)return new Sys.UI.Point(0,0);var d=a.getClientRects();if(!d||!d.length)return new Sys.UI.Point(0,0);var e=a.ownerDocument.parentWindow,g=e.screenLeft-top.screenLeft-top.document.documentElement.scrollLeft+2,h=e.screenTop-top.screenTop-top.document.documentElement.scrollTop+2,c=e.frameElement||null;if(c){var b=c.currentStyle;g+=(c.frameBorder||1)*2+(parseInt(b.paddingLeft)||0)+(parseInt(b.borderLeftWidth)||0)-a.ownerDocument.documentElement.scrollLeft;h+=(c.frameBorder||1)*2+(parseInt(b.paddingTop)||0)+(parseInt(b.borderTopWidth)||0)-a.ownerDocument.documentElement.scrollTop}var f=d[0];return new Sys.UI.Point(f.left-g,f.top-h)};break;case Sys.Browser.Safari:Sys.UI.DomElement.getLocation=function(c){if(c.window&&c.window===c||c.nodeType===9)return new Sys.UI.Point(0,0);var g=0,h=0,j=null,f=null,b;for(var a=c;a;j=a,(f=b,a=a.offsetParent)){b=Sys.UI.DomElement._getCurrentStyle(a);var e=a.tagName;if((a.offsetLeft||a.offsetTop)&&(e!=="BODY"||(!f||f.position!=="absolute"))){g+=a.offsetLeft;h+=a.offsetTop}}b=Sys.UI.DomElement._getCurrentStyle(c);var d=b?b.position:null,k=d&&d!=="static";if(!d||d!=="absolute")for(var a=c.parentNode;a;a=a.parentNode){e=a.tagName;if(e!=="BODY"&&e!=="HTML"&&(a.scrollLeft||a.scrollTop)){g-=a.scrollLeft||0;h-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(g,h)};break;case Sys.Browser.Opera:Sys.UI.DomElement.getLocation=function(b){if(b.window&&b.window===b||b.nodeType===9)return new Sys.UI.Point(0,0);var d=0,e=0,i=null;for(var a=b;a;i=a,a=a.offsetParent){var f=a.tagName;d+=a.offsetLeft||0;e+=a.offsetTop||0}var g=b.style.position,c=g&&g!=="static";for(var a=b.parentNode;a;a=a.parentNode){f=a.tagName;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)&&(c&&(a.style.overflow==="scroll"||a.style.overflow==="auto"))){d-=a.scrollLeft||0;e-=a.scrollTop||0}var h=a&&a.style?a.style.position:null;c=c||h&&h!=="static"}return new Sys.UI.Point(d,e)};break;default:Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,i=null,h=null,b=null;for(var a=d;a;i=a,(h=b,a=a.offsetParent)){var c=a.tagName;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!h||h.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var g=b?b.position:null,j=g&&g!=="static";if(!g||g!=="absolute")for(var a=d.parentNode;a;a=a.parentNode){c=a.tagName;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}return new Sys.UI.Point(e,f)};break}Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement._getCurrentStyle=function(a){var b=(a.ownerDocument?a.ownerDocument:a.documentElement).defaultView;return b&&a!==b&&b.getComputedStyle?b.getComputedStyle(a,null):a.style};Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!=-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");if(this._element){var a=this.get_name();if(a)this._element[a]=null;Array.remove(this._element._behaviors,this);delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=a[b];return c};Sys.UI.VisibilityMode=function(){throw Error.notImplemented()};Sys.UI.VisibilityMode.prototype={hide:0,collapse:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.Control=function(a){Sys.UI.Control.initializeBase(this);this._element=a;a.control=this;this._oldDisplayMode=this._element.style.display;if(!this._oldDisplayMode||this._oldDisplayMode=="none")this._oldDisplayMode=""};Sys.UI.Control.prototype={_parent:null,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){if(!this._element)return "";return this._element.id},set_id:function(){throw Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this._parent)return this._parent;else{var a=this._element.parentNode;while(a){if(a.control)return a.control;a=a.parentNode}return null}},set_parent:function(a){this._parent=a},get_visibilityMode:function(){return this._visibilityMode},set_visibilityMode:function(a){if(this._visibilityMode!==a){this._visibilityMode=a;if(this.get_visible()===false)if(this._visibilityMode===Sys.UI.VisibilityMode.hide)this._element.style.display=this._oldDisplayMode;else this._element.style.display="none"}this._visibilityMode=a},get_visible:function(){return this._element.style.visibility!="hidden"},set_visible:function(a){if(a!=this.get_visible()){this._element.style.visibility=a?"visible":"hidden";if(a||this._visibilityMode===Sys.UI.VisibilityMode.hide)this._element.style.display=this._oldDisplayMode;else this._element.style.display="none"}},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Control.callBaseMethod(this,"dispose");if(this._element){this._element.control=undefined;delete this._element}},initialize:function(){Sys.UI.Control.callBaseMethod(this,"initialize");var a=this._element},onBubbleEvent:function(){return false},raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Component)
+Sys.Res={'argumentInteger':'Value must be an integer.','scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.','invokeCalledTwice':'Cannot call invoke more than once.','webServiceFailed':'The server method \'{0}\' failed with the following error: {1}','argumentType':'Object cannot be converted to the required type.','argumentNull':'Value cannot be null.','controlCantSetId':'The id property can\'t be set on a control.','formatBadFormatSpecifier':'Format specifier was invalid.','webServiceFailedNoMsg':'The server method \'{0}\' failed.','argumentDomElement':'Value must be a DOM element.','invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.','cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.','actualValue':'Actual value was {0}.','enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.','scriptLoadFailed':'The script \'{0}\' could not be loaded.','parameterCount':'Parameter count mismatch.','cannotDeserializeEmptyString':'Cannot deserialize empty string.','formatInvalidString':'Input string was not in a correct format.','invalidTimeout':'Value must be greater than or equal to zero.','cannotAbortBeforeStart':'Cannot abort when executor has not started.','argument':'Value does not fall within the expected range.','cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.','invalidHttpVerb':'httpVerb cannot be set to an empty or null string.','nullWebRequest':'Cannot call executeRequest with a null webRequest.','eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.','cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.','argumentUndefined':'Value cannot be undefined.','webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}','servicePathNotSet':'The path to the web service has not been set.','argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.','cannotCallOnceStarted':'Cannot call {0} once started.','badBaseUrl1':'Base URL does not contain ://.','badBaseUrl2':'Base URL does not contain another /.','badBaseUrl3':'Cannot find last / in base URL.','setExecutorAfterActive':'Cannot set executor after it has become active.','paramName':'Parameter name: {0}','cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.','format':'One of the identified items was in an invalid format.','assertFailedCaller':'Assertion Failed: {0}\r\nat {1}','argumentOutOfRange':'Specified argument was out of the range of valid values.','webServiceTimedOut':'The server method \'{0}\' timed out.','notImplemented':'The method or operation is not implemented.','assertFailed':'Assertion Failed: {0}','invalidOperation':'Operation is not valid due to the current state of the object.','breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'};
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxTimer.debug.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxTimer.debug.js
@@ -1,141 +1,141 @@
-﻿//-----------------------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------
-// MicrosoftAjaxTimer.js
-// Sys.UI._Timer component
-
-///////////////////////////////////////////////////////////////////////////////
-
-Sys.UI._Timer = function Sys$UI$_Timer(element) {
-    Sys.UI._Timer.initializeBase(this,[element]);
-    this._interval = 60000;
-    this._enabled = true;
-    this._postbackPending = false;
-    this._raiseTickDelegate = null;
-    this._endRequestHandlerDelegate = null;
-    this._timer = null;
-    this._pageRequestManager = null;
-    this._uniqueID = null;
-}
-
-    function Sys$UI$_Timer$get_enabled() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._enabled;
-    }
-    function Sys$UI$_Timer$set_enabled(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-
-        this._enabled = value;
-    }
-    function Sys$UI$_Timer$get_interval() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._interval;
-    }
-    function Sys$UI$_Timer$set_interval(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-
-        this._interval = value;
-    }
-    function Sys$UI$_Timer$get_uniqueID(){
-        /// <value type="String"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._uniqueID;
-    }
-    function Sys$UI$_Timer$set_uniqueID(value){
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-
-        this._uniqueID = value;
-    }
-    function Sys$UI$_Timer$dispose(){
-       this._stopTimer();
-       if(this._pageRequestManager !== null){
-           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
-       }
-       Sys.UI._Timer.callBaseMethod(this,"dispose");
-    }
-    function Sys$UI$_Timer$_doPostback(){
-        __doPostBack(this.get_uniqueID(),'');
-    }
-    function Sys$UI$_Timer$_handleEndRequest(sender, arg){
-        var dataItem = arg.get_dataItems()[this.get_id()];
-	    if (dataItem){
-            this._update(dataItem[0],dataItem[1]);
-	  	}
-	  
-         	    if ((this._postbackPending === true) && (this._pageRequestManager !== null)&&(this._pageRequestManager.get_isInAsyncPostBack() === false)){
-    	   	this._postbackPending = false;
-            this._doPostback();
-        }
-	   
-    }
-    function Sys$UI$_Timer$initialize(){
-        Sys.UI._Timer.callBaseMethod(this, 'initialize');
-    	this._raiseTickDelegate = Function.createDelegate(this,this._raiseTick);
-    	this._endRequestHandlerDelegate = Function.createDelegate(this,this._handleEndRequest);
-    	if (Sys.WebForms && Sys.WebForms.PageRequestManager){
-           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();  
-    	}
-    	if (this._pageRequestManager !== null ){
-    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
-    	}
-        if(this.get_enabled()) {
-            this._startTimer();
-        }
-    }
-    function Sys$UI$_Timer$_raiseTick() {
-                this._startTimer();
-        if ((this._pageRequestManager === null) || (!this._pageRequestManager.get_isInAsyncPostBack())){
-            this._doPostback();
-            this._postbackPending = false;
-        } 
-        else {
-            this._postbackPending = true;
-        }
-    }
-    function Sys$UI$_Timer$_startTimer(){
-                                this._timer = window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval());
-    }
-    function Sys$UI$_Timer$_stopTimer(){
-	    if (this._timer !== null){
-	 	    window.clearTimeout(this._timer);
-		    this._timer = null;
-       } 	
-    }
-    function Sys$UI$_Timer$_update(enabled,interval) {
-        var stopped = !this.get_enabled();
-        var intervalChanged= (this.get_interval() !== interval);
-	    if ((!stopped) && ((!enabled)||(intervalChanged))){
-    	  	this._stopTimer();
-    		stopped = true;
-       	} 
-    	this.set_enabled(enabled);
-    	this.set_interval(interval);
-    	if ((this.get_enabled()) && (stopped)){
-    	    this._startTimer();
-    	}
-    }
-Sys.UI._Timer.prototype = {
-    get_enabled: Sys$UI$_Timer$get_enabled,
-    set_enabled: Sys$UI$_Timer$set_enabled,
-    get_interval: Sys$UI$_Timer$get_interval,
-    set_interval: Sys$UI$_Timer$set_interval,
-    get_uniqueID: Sys$UI$_Timer$get_uniqueID,
-    set_uniqueID: Sys$UI$_Timer$set_uniqueID,
-    dispose: Sys$UI$_Timer$dispose,
-    _doPostback: Sys$UI$_Timer$_doPostback,
-    _handleEndRequest: Sys$UI$_Timer$_handleEndRequest,
-    initialize: Sys$UI$_Timer$initialize,
-    _raiseTick: Sys$UI$_Timer$_raiseTick,
-    _startTimer: Sys$UI$_Timer$_startTimer,
-    _stopTimer: Sys$UI$_Timer$_stopTimer,
-    _update: Sys$UI$_Timer$_update
-}
-Sys.UI._Timer.registerClass('Sys.UI._Timer', Sys.UI.Control);
-
-
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//-----------------------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------
+// MicrosoftAjaxTimer.js
+// Sys.UI._Timer component
+
+///////////////////////////////////////////////////////////////////////////////
+
+Sys.UI._Timer = function Sys$UI$_Timer(element) {
+    Sys.UI._Timer.initializeBase(this,[element]);
+    this._interval = 60000;
+    this._enabled = true;
+    this._postbackPending = false;
+    this._raiseTickDelegate = null;
+    this._endRequestHandlerDelegate = null;
+    this._timer = null;
+    this._pageRequestManager = null;
+    this._uniqueID = null;
+}
+
+    function Sys$UI$_Timer$get_enabled() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._enabled;
+    }
+    function Sys$UI$_Timer$set_enabled(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+
+        this._enabled = value;
+    }
+    function Sys$UI$_Timer$get_interval() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._interval;
+    }
+    function Sys$UI$_Timer$set_interval(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+
+        this._interval = value;
+    }
+    function Sys$UI$_Timer$get_uniqueID(){
+        /// <value type="String"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._uniqueID;
+    }
+    function Sys$UI$_Timer$set_uniqueID(value){
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+
+        this._uniqueID = value;
+    }
+    function Sys$UI$_Timer$dispose(){
+       this._stopTimer();
+       if(this._pageRequestManager !== null){
+           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
+       }
+       Sys.UI._Timer.callBaseMethod(this,"dispose");
+    }
+    function Sys$UI$_Timer$_doPostback(){
+        __doPostBack(this.get_uniqueID(),'');
+    }
+    function Sys$UI$_Timer$_handleEndRequest(sender, arg){
+        var dataItem = arg.get_dataItems()[this.get_id()];
+	    if (dataItem){
+            this._update(dataItem[0],dataItem[1]);
+	  	}
+	  
+         	    if ((this._postbackPending === true) && (this._pageRequestManager !== null)&&(this._pageRequestManager.get_isInAsyncPostBack() === false)){
+    	   	this._postbackPending = false;
+            this._doPostback();
+        }
+	   
+    }
+    function Sys$UI$_Timer$initialize(){
+        Sys.UI._Timer.callBaseMethod(this, 'initialize');
+    	this._raiseTickDelegate = Function.createDelegate(this,this._raiseTick);
+    	this._endRequestHandlerDelegate = Function.createDelegate(this,this._handleEndRequest);
+    	if (Sys.WebForms && Sys.WebForms.PageRequestManager){
+           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();  
+    	}
+    	if (this._pageRequestManager !== null ){
+    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
+    	}
+        if(this.get_enabled()) {
+            this._startTimer();
+        }
+    }
+    function Sys$UI$_Timer$_raiseTick() {
+                this._startTimer();
+        if ((this._pageRequestManager === null) || (!this._pageRequestManager.get_isInAsyncPostBack())){
+            this._doPostback();
+            this._postbackPending = false;
+        } 
+        else {
+            this._postbackPending = true;
+        }
+    }
+    function Sys$UI$_Timer$_startTimer(){
+                                this._timer = window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval());
+    }
+    function Sys$UI$_Timer$_stopTimer(){
+	    if (this._timer !== null){
+	 	    window.clearTimeout(this._timer);
+		    this._timer = null;
+       } 	
+    }
+    function Sys$UI$_Timer$_update(enabled,interval) {
+        var stopped = !this.get_enabled();
+        var intervalChanged= (this.get_interval() !== interval);
+	    if ((!stopped) && ((!enabled)||(intervalChanged))){
+    	  	this._stopTimer();
+    		stopped = true;
+       	} 
+    	this.set_enabled(enabled);
+    	this.set_interval(interval);
+    	if ((this.get_enabled()) && (stopped)){
+    	    this._startTimer();
+    	}
+    }
+Sys.UI._Timer.prototype = {
+    get_enabled: Sys$UI$_Timer$get_enabled,
+    set_enabled: Sys$UI$_Timer$set_enabled,
+    get_interval: Sys$UI$_Timer$get_interval,
+    set_interval: Sys$UI$_Timer$set_interval,
+    get_uniqueID: Sys$UI$_Timer$get_uniqueID,
+    set_uniqueID: Sys$UI$_Timer$set_uniqueID,
+    dispose: Sys$UI$_Timer$dispose,
+    _doPostback: Sys$UI$_Timer$_doPostback,
+    _handleEndRequest: Sys$UI$_Timer$_handleEndRequest,
+    initialize: Sys$UI$_Timer$initialize,
+    _raiseTick: Sys$UI$_Timer$_raiseTick,
+    _startTimer: Sys$UI$_Timer$_startTimer,
+    _stopTimer: Sys$UI$_Timer$_stopTimer,
+    _update: Sys$UI$_Timer$_update
+}
+Sys.UI._Timer.registerClass('Sys.UI._Timer', Sys.UI.Control);
+
+
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxTimer.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxTimer.js
@@ -1,5 +1,5 @@
-﻿//----------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//----------------------------------------------------------
-// MicrosoftAjaxTimer.js
-Sys.UI._Timer=function(a){Sys.UI._Timer.initializeBase(this,[a]);this._interval=60000;this._enabled=true;this._postbackPending=false;this._raiseTickDelegate=null;this._endRequestHandlerDelegate=null;this._timer=null;this._pageRequestManager=null;this._uniqueID=null};Sys.UI._Timer.prototype={get_enabled:function(){return this._enabled},set_enabled:function(a){this._enabled=a},get_interval:function(){return this._interval},set_interval:function(a){this._interval=a},get_uniqueID:function(){return this._uniqueID},set_uniqueID:function(a){this._uniqueID=a},dispose:function(){this._stopTimer();if(this._pageRequestManager!==null)this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);Sys.UI._Timer.callBaseMethod(this,"dispose")},_doPostback:function(){__doPostBack(this.get_uniqueID(),"")},_handleEndRequest:function(c,b){var a=b.get_dataItems()[this.get_id()];if(a)this._update(a[0],a[1]);if(this._postbackPending===true&&this._pageRequestManager!==null&&this._pageRequestManager.get_isInAsyncPostBack()===false){this._postbackPending=false;this._doPostback()}},initialize:function(){Sys.UI._Timer.callBaseMethod(this,"initialize");this._raiseTickDelegate=Function.createDelegate(this,this._raiseTick);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null)this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);if(this.get_enabled())this._startTimer()},_raiseTick:function(){this._startTimer();if(this._pageRequestManager===null||!this._pageRequestManager.get_isInAsyncPostBack()){this._doPostback();this._postbackPending=false}else this._postbackPending=true},_startTimer:function(){this._timer=window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval())},_stopTimer:function(){if(this._timer!==null){window.clearTimeout(this._timer);this._timer=null}},_update:function(c,b){var a=!this.get_enabled(),d=this.get_interval()!==b;if(!a&&(!c||d)){this._stopTimer();a=true}this.set_enabled(c);this.set_interval(b);if(this.get_enabled()&&a)this._startTimer()}};Sys.UI._Timer.registerClass("Sys.UI._Timer",Sys.UI.Control)if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//----------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//----------------------------------------------------------
+// MicrosoftAjaxTimer.js
+Sys.UI._Timer=function(a){Sys.UI._Timer.initializeBase(this,[a]);this._interval=60000;this._enabled=true;this._postbackPending=false;this._raiseTickDelegate=null;this._endRequestHandlerDelegate=null;this._timer=null;this._pageRequestManager=null;this._uniqueID=null};Sys.UI._Timer.prototype={get_enabled:function(){return this._enabled},set_enabled:function(a){this._enabled=a},get_interval:function(){return this._interval},set_interval:function(a){this._interval=a},get_uniqueID:function(){return this._uniqueID},set_uniqueID:function(a){this._uniqueID=a},dispose:function(){this._stopTimer();if(this._pageRequestManager!==null)this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);Sys.UI._Timer.callBaseMethod(this,"dispose")},_doPostback:function(){__doPostBack(this.get_uniqueID(),"")},_handleEndRequest:function(c,b){var a=b.get_dataItems()[this.get_id()];if(a)this._update(a[0],a[1]);if(this._postbackPending===true&&this._pageRequestManager!==null&&this._pageRequestManager.get_isInAsyncPostBack()===false){this._postbackPending=false;this._doPostback()}},initialize:function(){Sys.UI._Timer.callBaseMethod(this,"initialize");this._raiseTickDelegate=Function.createDelegate(this,this._raiseTick);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null)this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);if(this.get_enabled())this._startTimer()},_raiseTick:function(){this._startTimer();if(this._pageRequestManager===null||!this._pageRequestManager.get_isInAsyncPostBack()){this._doPostback();this._postbackPending=false}else this._postbackPending=true},_startTimer:function(){this._timer=window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval())},_stopTimer:function(){if(this._timer!==null){window.clearTimeout(this._timer);this._timer=null}},_update:function(c,b){var a=!this.get_enabled(),d=this.get_interval()!==b;if(!a&&(!c||d)){this._stopTimer();a=true}this.set_enabled(c);this.set_interval(b);if(this.get_enabled()&&a)this._startTimer()}};Sys.UI._Timer.registerClass("Sys.UI._Timer",Sys.UI.Control)if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.debug.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.debug.js
@@ -1,1557 +1,1557 @@
-﻿//-----------------------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------
-// MicrosoftAjaxWebForms.js
-// Microsoft AJAX ASP.NET WebForms Framework.
-
-
-Type.registerNamespace('Sys.WebForms');
-
-
-Sys.WebForms.BeginRequestEventArgs = function Sys$WebForms$BeginRequestEventArgs(request, postBackElement) {
-    /// <param name="request" type="Sys.Net.WebRequest"></param>
-    /// <param name="postBackElement" domElement="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "request", type: Sys.Net.WebRequest},
-        {name: "postBackElement", domElement: true}
-    ]);
-    if (e) throw e;
-
-
-    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
-    this._request = request;
-    this._postBackElement = postBackElement;
-}
-
-
-    function Sys$WebForms$BeginRequestEventArgs$get_postBackElement() {
-        /// <value domElement="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._postBackElement;
-    }
-
-    function Sys$WebForms$BeginRequestEventArgs$get_request() {
-        /// <value type="Sys.Net.WebRequest"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._request;
-    }
-Sys.WebForms.BeginRequestEventArgs.prototype = {
-    get_postBackElement: Sys$WebForms$BeginRequestEventArgs$get_postBackElement,
-
-    get_request: Sys$WebForms$BeginRequestEventArgs$get_request
-}
-
-Sys.WebForms.BeginRequestEventArgs.registerClass('Sys.WebForms.BeginRequestEventArgs', Sys.EventArgs);
-
-Sys.WebForms.EndRequestEventArgs = function Sys$WebForms$EndRequestEventArgs(error, dataItems, response) {
-    /// <param name="error" type="Error" mayBeNull="true"></param>
-    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
-    /// <param name="response" type="Sys.Net.WebRequestExecutor"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "error", type: Error, mayBeNull: true},
-        {name: "dataItems", type: Object, mayBeNull: true},
-        {name: "response", type: Sys.Net.WebRequestExecutor}
-    ]);
-    if (e) throw e;
-
-
-    Sys.WebForms.EndRequestEventArgs.initializeBase(this);
-    this._errorHandled = false;
-    this._error = error;
-        this._dataItems = dataItems || new Object();
-    this._response = response;
-}
-
-
-    function Sys$WebForms$EndRequestEventArgs$get_dataItems() {
-        /// <value type="Object"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dataItems;
-    }
-
-    function Sys$WebForms$EndRequestEventArgs$get_error() {
-        /// <value type="Error"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._error;
-    }
-
-    function Sys$WebForms$EndRequestEventArgs$get_errorHandled() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._errorHandled;
-    }
-    function Sys$WebForms$EndRequestEventArgs$set_errorHandled(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-
-        this._errorHandled = value;
-    }
-
-    function Sys$WebForms$EndRequestEventArgs$get_response() {
-        /// <value type="Sys.Net.WebRequestExecutor"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._response;
-    }
-Sys.WebForms.EndRequestEventArgs.prototype = {
-    get_dataItems: Sys$WebForms$EndRequestEventArgs$get_dataItems,
-
-    get_error: Sys$WebForms$EndRequestEventArgs$get_error,
-
-    get_errorHandled: Sys$WebForms$EndRequestEventArgs$get_errorHandled,
-    set_errorHandled: Sys$WebForms$EndRequestEventArgs$set_errorHandled,
-
-    get_response: Sys$WebForms$EndRequestEventArgs$get_response
-}
-
-Sys.WebForms.EndRequestEventArgs.registerClass('Sys.WebForms.EndRequestEventArgs', Sys.EventArgs);
-
-Sys.WebForms.InitializeRequestEventArgs = function Sys$WebForms$InitializeRequestEventArgs(request, postBackElement) {
-    /// <param name="request" type="Sys.Net.WebRequest"></param>
-    /// <param name="postBackElement" domElement="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "request", type: Sys.Net.WebRequest},
-        {name: "postBackElement", domElement: true}
-    ]);
-    if (e) throw e;
-
-
-    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
-    this._request = request;
-    this._postBackElement = postBackElement;
-}
-
-
-    function Sys$WebForms$InitializeRequestEventArgs$get_postBackElement() {
-        /// <value domElement="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._postBackElement;
-    }
-
-    function Sys$WebForms$InitializeRequestEventArgs$get_request() {
-        /// <value type="Sys.Net.WebRequest"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._request;
-    }
-Sys.WebForms.InitializeRequestEventArgs.prototype = {
-    get_postBackElement: Sys$WebForms$InitializeRequestEventArgs$get_postBackElement,
-
-    get_request: Sys$WebForms$InitializeRequestEventArgs$get_request
-}
-
-Sys.WebForms.InitializeRequestEventArgs.registerClass('Sys.WebForms.InitializeRequestEventArgs', Sys.CancelEventArgs);
-
-Sys.WebForms.PageLoadedEventArgs = function Sys$WebForms$PageLoadedEventArgs(panelsUpdated, panelsCreated, dataItems) {
-    /// <param name="panelsUpdated" type="Array"></param>
-    /// <param name="panelsCreated" type="Array"></param>
-    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "panelsUpdated", type: Array},
-        {name: "panelsCreated", type: Array},
-        {name: "dataItems", type: Object, mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    Sys.WebForms.PageLoadedEventArgs.initializeBase(this);
-
-    this._panelsUpdated = panelsUpdated;
-    this._panelsCreated = panelsCreated;
-        this._dataItems = dataItems || new Object();
-}
-
-
-    function Sys$WebForms$PageLoadedEventArgs$get_dataItems() {
-        /// <value type="Object"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dataItems;
-    }
-
-    function Sys$WebForms$PageLoadedEventArgs$get_panelsCreated() {
-        /// <value type="Array"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsCreated;
-    }
-
-    function Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated() {
-        /// <value type="Array"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsUpdated;
-    }
-Sys.WebForms.PageLoadedEventArgs.prototype = {
-    get_dataItems: Sys$WebForms$PageLoadedEventArgs$get_dataItems,
-
-    get_panelsCreated: Sys$WebForms$PageLoadedEventArgs$get_panelsCreated,
-
-    get_panelsUpdated: Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated
-}
-
-Sys.WebForms.PageLoadedEventArgs.registerClass('Sys.WebForms.PageLoadedEventArgs', Sys.EventArgs);
-
-Sys.WebForms.PageLoadingEventArgs = function Sys$WebForms$PageLoadingEventArgs(panelsUpdating, panelsDeleting, dataItems) {
-    /// <param name="panelsUpdating" type="Array"></param>
-    /// <param name="panelsDeleting" type="Array"></param>
-    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "panelsUpdating", type: Array},
-        {name: "panelsDeleting", type: Array},
-        {name: "dataItems", type: Object, mayBeNull: true}
-    ]);
-    if (e) throw e;
-
-    Sys.WebForms.PageLoadingEventArgs.initializeBase(this);
-
-    this._panelsUpdating = panelsUpdating;
-    this._panelsDeleting = panelsDeleting;
-        this._dataItems = dataItems || new Object();
-}
-
-
-    function Sys$WebForms$PageLoadingEventArgs$get_dataItems() {
-        /// <value type="Object"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dataItems;
-    }
-
-    function Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting() {
-        /// <value type="Array"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsDeleting;
-    }
-
-    function Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating() {
-        /// <value type="Array"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsUpdating;
-    }
-Sys.WebForms.PageLoadingEventArgs.prototype = {
-    get_dataItems: Sys$WebForms$PageLoadingEventArgs$get_dataItems,
-
-    get_panelsDeleting: Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting,
-
-    get_panelsUpdating: Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating
-}
-
-Sys.WebForms.PageLoadingEventArgs.registerClass('Sys.WebForms.PageLoadingEventArgs', Sys.EventArgs);
-Sys.WebForms.PageRequestManager = function Sys$WebForms$PageRequestManager() {
-    this._form = null;
-    this._updatePanelIDs = null;
-    this._updatePanelClientIDs = null;
-    this._oldUpdatePanelIDs = null;
-    this._childUpdatePanelIDs = null;
-    this._panelsToRefreshIDs = null;
-    this._updatePanelHasChildrenAsTriggers = null;
-    this._asyncPostBackControlIDs = null;
-    this._asyncPostBackControlClientIDs = null;
-    this._postBackControlIDs = null;
-    this._postBackControlClientIDs = null;
-    this._scriptManagerID = null;
-    this._pageLoadedHandler = null;
-
-    this._additionalInput = null;
-    this._onsubmit = null;
-    this._onSubmitStatements = [];
-    this._originalDoPostBack = null;
-    this._postBackSettings = null;
-    this._request = null;
-    this._onFormSubmitHandler = null;
-    this._onFormElementClickHandler = null;
-    this._onWindowUnloadHandler = null;
-    this._asyncPostBackTimeout = null;
-
-    this._controlIDToFocus = null;
-    this._scrollPosition = null;
-    this._dataItems = null;
-    this._response = null;
-    this._processingRequest = false;
-    this._scriptDisposes = {};
-}
-
-
-
-    function Sys$WebForms$PageRequestManager$_get_eventHandlerList() {
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-
-    function Sys$WebForms$PageRequestManager$get_isInAsyncPostBack() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._request !== null;
-    }
-
-
-    function Sys$WebForms$PageRequestManager$add_beginRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("beginRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_beginRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("beginRequest", handler);
-    }
-
-    function Sys$WebForms$PageRequestManager$add_endRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("endRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_endRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("endRequest", handler);
-    }
-
-    function Sys$WebForms$PageRequestManager$add_initializeRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("initializeRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_initializeRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("initializeRequest", handler);
-    }
-
-    function Sys$WebForms$PageRequestManager$add_pageLoaded(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("pageLoaded", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_pageLoaded(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("pageLoaded", handler);
-    }
-
-    function Sys$WebForms$PageRequestManager$add_pageLoading(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().addHandler("pageLoading", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_pageLoading(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-
-        this._get_eventHandlerList().removeHandler("pageLoading", handler);
-    }
-
-    function Sys$WebForms$PageRequestManager$abortPostBack() {
-        if (!this._processingRequest && this._request) {
-            this._request.get_executor().abort();
-            this._request = null;
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError() {
-                var displayMessage = "Sys.WebForms.PageRequestManagerTimeoutException: " + Sys.WebForms.Res.PRM_TimeoutError;
-        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerTimeoutException'});
-        e.popStackFrame();
-        return e;
-    }
-
-    function Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError(httpStatusCode, message) {
-                var displayMessage = message || ("Sys.WebForms.PageRequestManagerServerErrorException: " + String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
-        var e = Error.create(displayMessage, {
-            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
-            httpStatusCode: httpStatusCode
-        });
-        e.popStackFrame();
-        return e;
-    }
-
-    function Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError(parserErrorMessage) {
-                var displayMessage = "Sys.WebForms.PageRequestManagerParserErrorException: " + String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
-        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerParserErrorException'});
-        e.popStackFrame();
-        return e;
-    }
-
-    function Sys$WebForms$PageRequestManager$_createPostBackSettings(async, panelID, sourceElement) {
-
-        return { async:async, panelID:panelID, sourceElement:sourceElement };
-    }
-
-    function Sys$WebForms$PageRequestManager$_convertToClientIDs(source, destinationIDs, destinationClientIDs) {
-        if (source) {
-            for (var i = 0; i < source.length; i++) {
-                Array.add(destinationIDs, source[i]);
-                Array.add(destinationClientIDs, this._uniqueIDToClientID(source[i]));
-            }
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_decodeString(encodedValue) {
-        return encodedValue.replace(/\\\u00FF\\/g, "\u0000").replace(/\u00FF\u00FF/g, "\u00FF");
-    }
-
-    function Sys$WebForms$PageRequestManager$_destroyTree(element) {
-                if (element.nodeType === 1) {
-                                    var childNodes = element.childNodes;
-            for (var i = childNodes.length - 1; i >= 0; i--) {
-                var node = childNodes[i];
-                if (node.nodeType === 1) {
-                    if (node.dispose && typeof(node.dispose) === "function") {
-                        node.dispose();
-                    }
-                    else if (node.control && typeof(node.control.dispose) === "function") {
-                        node.control.dispose();
-                    }
-                    var behaviors = Sys.UI.Behavior.getBehaviors(node);
-                    for (var j = behaviors.length - 1; j >= 0; j--) {
-                        behaviors[j].dispose();
-                    }
-                    this._destroyTree(node);
-                }
-            }
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$dispose() {
-        if (this._form) {
-            Sys.UI.DomEvent.removeHandler(this._form, 'submit', this._onFormSubmitHandler);
-            Sys.UI.DomEvent.removeHandler(this._form, 'click', this._onFormElementClickHandler);
-            Sys.UI.DomEvent.removeHandler(window, 'unload', this._onWindowUnloadHandler);
-            Sys.UI.DomEvent.removeHandler(window, 'load', this._pageLoadedHandler);
-        }
-
-        if (this._originalDoPostBack) {
-            window.__doPostBack = this._originalDoPostBack;
-            this._originalDoPostBack = null;
-        }
-
-        this._form = null;
-        this._updatePanelIDs = null;
-        this._oldUpdatePanelIDs = null;
-        this._childUpdatePanelIDs = null;
-        this._updatePanelClientIDs = null;
-        this._asyncPostBackControlIDs = null;
-        this._asyncPostBackControlClientIDs = null;
-        this._postBackControlIDs = null;
-        this._postBackControlClientIDs = null;
-        this._asyncPostBackTimeout = null;
-        this._scrollPosition = null;
-        this._dataItems = null;
-    }
-
-
-    function Sys$WebForms$PageRequestManager$_doPostBack(eventTarget, eventArgument) {
-        this._additionalInput = null;
-
-        var form = this._form;
-        if (form.action !== form._initialAction) {
-                                    this._postBackSettings = this._createPostBackSettings(false, null, null);
-        }
-        else {
-                        var clientID = this._uniqueIDToClientID(eventTarget);
-            var postBackElement = document.getElementById(clientID);
-            if (!postBackElement) {
-                                                                                if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
-                                        this._postBackSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + eventTarget, null);
-                }
-                else {
-                    if (Array.contains(this._postBackControlIDs, eventTarget)) {
-                                                this._postBackSettings = this._createPostBackSettings(false, null, null);
-                    }
-                    else {
-                                                                                                var nearestUniqueIDMatch = this._findNearestElement(eventTarget);
-                        if (nearestUniqueIDMatch) {
-                                                                                    this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
-                        }
-                        else {
-                                                                                    this._postBackSettings = this._createPostBackSettings(false, null, null);
-                        }
-                    }
-                }
-            }
-            else {
-                                                this._postBackSettings = this._getPostBackSettings(postBackElement, eventTarget);
-            }
-        }
-
-        if (!this._postBackSettings.async) {
-                                    form.onsubmit = this._onsubmit;
-            this._originalDoPostBack(eventTarget, eventArgument);
-            form.onsubmit = null;
-            return;
-        }
-
-        form.__EVENTTARGET.value = eventTarget;
-        form.__EVENTARGUMENT.value = eventArgument;
-        this._onFormSubmit();
-    }
-
-    function Sys$WebForms$PageRequestManager$_elementContains(container, element) {
-        while (element) {
-            if (element === container) {
-                return true;
-            }
-            element = element.parentNode;
-        }
-        return false;
-    }
-
-    function Sys$WebForms$PageRequestManager$_endPostBack(error, response) {
-        this._processingRequest = false;
-
-        this._request = null;
-        this._additionalInput = null;
-
-        var handler = this._get_eventHandlerList().getHandler("endRequest");
-        var errorHandled = false;
-        if (handler) {
-            var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
-            handler(this, eventArgs);
-            errorHandled = eventArgs.get_errorHandled();
-        }
-        this._dataItems = null;
-        if (error && !errorHandled) {
-            alert(error.message);
-        }
-    }
-
-
-
-    function Sys$WebForms$PageRequestManager$_findNearestElement(uniqueID) {
-        while (uniqueID.length > 0) {
-            var clientID = this._uniqueIDToClientID(uniqueID);
-            var element = document.getElementById(clientID);
-            if (element) {
-                return element;
-            }
-            var indexOfLastDollar = uniqueID.lastIndexOf('$');
-            if (indexOfLastDollar === -1) {
-                return null;
-            }
-            uniqueID = uniqueID.substring(0, indexOfLastDollar);
-        }
-        return null;
-    }
-
-    function Sys$WebForms$PageRequestManager$_findText(text, location) {
-        var startIndex = Math.max(0, location - 20);
-        var endIndex = Math.min(text.length, location + 20);
-        return text.substring(startIndex, endIndex);
-    }
-
-    function Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs(initialLoad) {
-                                                                                                                                        
-        var updated = [];
-        var created = [];
-
-                var oldIDs = this._oldUpdatePanelIDs || [];         var newIDs = this._updatePanelIDs;         var childIDs = this._childUpdatePanelIDs || [];         var refreshedIDs = this._panelsToRefreshIDs || []; 
-                for (var i = 0; i < refreshedIDs.length; i++) {
-            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
-        }
-
-                        for (var i = 0; i < newIDs.length; i++) {
-            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) !== -1) {
-                Array.add(created, document.getElementById(this._uniqueIDToClientID(newIDs[i])));
-            }
-        }
-
-        return new Sys.WebForms.PageLoadedEventArgs(updated, created, this._dataItems);
-    }
-
-    function Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs() {
-                                                                                                                                        
-        var updated = [];
-        var deleted = [];
-
-        var oldIDs = this._oldUpdatePanelIDs;
-        var newIDs = this._updatePanelIDs;
-        var childIDs = this._childUpdatePanelIDs;
-        var refreshedIDs = this._panelsToRefreshIDs;
-
-                for (var i = 0; i < refreshedIDs.length; i++) {
-            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
-        }
-
-                for (var i = 0; i < oldIDs.length; i++) {
-            if (Array.indexOf(refreshedIDs, oldIDs[i]) === -1 &&
-                (Array.indexOf(newIDs, oldIDs[i]) === -1 || Array.indexOf(childIDs, oldIDs[i]) > -1)) {
-                Array.add(deleted, document.getElementById(this._uniqueIDToClientID(oldIDs[i])));
-            }
-        }
-
-        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, this._dataItems);
-    }
-
-    function Sys$WebForms$PageRequestManager$_getPostBackSettings(element, elementUniqueID) {
-
-
-        var originalElement = element;
-
-                        var proposedSettings = null;
-
-                        while (element) {
-            if (element.id) {
-                                if (!proposedSettings && Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
-                                        proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
-                }
-                else {
-                    if (!proposedSettings && Array.contains(this._postBackControlClientIDs, element.id)) {
-                                                return this._createPostBackSettings(false, null, null);
-                    }
-                    else {
-                        var indexOfPanel = Array.indexOf(this._updatePanelClientIDs, element.id);
-                        if (indexOfPanel !== -1) {
-                                                        if (this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {
-                                                                
-                                                                                                                                return this._createPostBackSettings(true, this._updatePanelIDs[indexOfPanel] + '|' + elementUniqueID, originalElement);
-                            }
-                            else {
-                                                                                                return this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
-                            }
-                        }
-                    }
-                }
-
-                                if (!proposedSettings && this._matchesParentIDInList(element.id, this._asyncPostBackControlClientIDs)) {
-                                        proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
-                }
-                else {
-                    if (!proposedSettings && this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) {
-                                                return this._createPostBackSettings(false, null, null);
-                    }
-                }
-            }
-
-            element = element.parentNode;
-        }
-
-                                                if (!proposedSettings) {
-                        return this._createPostBackSettings(false, null, null);
-        }
-        else {
-            return proposedSettings;
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_getScrollPosition() {
-        var d = document.documentElement;
-        if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
-            return {
-                x: d.scrollLeft,
-                y: d.scrollTop
-            };
-        }
-        else {
-            d = document.body;
-            if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
-                return {
-                    x: d.scrollLeft,
-                    y: d.scrollTop
-                };
-            }
-            else {
-                if (this._validPosition(window.pageXOffset) || this._validPosition(window.pageYOffset)) {
-                    return {
-                        x: window.pageXOffset,
-                        y: window.pageYOffset
-                    };
-                }
-                else {
-                    return {
-                        x: 0,
-                        y: 0
-                    };
-                }
-            }
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_initializeInternal(scriptManagerID, formElement) {
-        this._scriptManagerID = scriptManagerID;
-
-        this._form = formElement;
-
-        
-                this._form._initialAction = this._form.action;
-
-        this._onsubmit = this._form.onsubmit;
-        this._form.onsubmit = null;
-        this._onFormSubmitHandler = Function.createDelegate(this, this._onFormSubmit);
-        this._onFormElementClickHandler = Function.createDelegate(this, this._onFormElementClick);
-        this._onWindowUnloadHandler = Function.createDelegate(this, this._onWindowUnload);
-        Sys.UI.DomEvent.addHandler(this._form, 'submit', this._onFormSubmitHandler);
-        Sys.UI.DomEvent.addHandler(this._form, 'click', this._onFormElementClickHandler);
-        Sys.UI.DomEvent.addHandler(window, 'unload', this._onWindowUnloadHandler);
-
-        this._originalDoPostBack = window.__doPostBack;
-                if (this._originalDoPostBack) {
-            window.__doPostBack = Function.createDelegate(this, this._doPostBack);
-        }
-
-        this._pageLoadedHandler = Function.createDelegate(this, this._pageLoadedInitialLoad);
-        Sys.UI.DomEvent.addHandler(window, 'load', this._pageLoadedHandler);
-    }
-
-    function Sys$WebForms$PageRequestManager$_matchesParentIDInList(clientID, parentIDList) {
-        for (var i = 0; i < parentIDList.length; i++) {
-            if (clientID.startsWith(parentIDList[i] + "_")) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    function Sys$WebForms$PageRequestManager$_onFormElementClick(evt) {
-        var element = evt.target;
-        if (element.disabled) {
-            return;
-        }
-
-                this._postBackSettings = this._getPostBackSettings(element, element.name);
-
-
-        if (element.name) {
-            if (element.tagName === 'INPUT') {
-                var type = element.type;
-                if (type === 'submit') {
-                    this._additionalInput = element.name + '=' + encodeURIComponent(element.value);
-                }
-                else if (type === 'image') {
-                    var x = evt.offsetX;
-                    var y = evt.offsetY;
-                    this._additionalInput = element.name + '.x=' + x + '&' + element.name + '.y=' + y;
-                }
-            }
-            else if ((element.tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
-                this._additionalInput = element.name + '=' + encodeURIComponent(element.value);
-            }
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_onFormSubmit(evt) {
-        var continueSubmit = true;
-
-                if (this._onsubmit) {
-            continueSubmit = this._onsubmit();
-        }
-
-                if (continueSubmit) {
-            for (var i = 0; i < this._onSubmitStatements.length; i++) {
-                if (!this._onSubmitStatements[i]()) {
-                    continueSubmit = false;
-                    break;
-                }
-            }
-        }
-
-        if (!continueSubmit) {
-            if (evt) {
-                evt.preventDefault();
-            }
-            return;
-        }
-
-        var form = this._form;
-        if (form.action !== form._initialAction) {
-                                    return;
-        }
-
-                        if (!this._postBackSettings.async) {
-            return;
-        }
-
-                var formBody = new Sys.StringBuilder();
-        formBody.append(this._scriptManagerID + '=' + this._postBackSettings.panelID + '&');
-
-        var count = form.elements.length;
-        for (var i = 0; i < count; i++) {
-            var element = form.elements[i];
-            var name = element.name;
-            if (typeof(name) === "undefined" || (name === null) || (name.length === 0)) {
-                continue;
-            }
-
-            var tagName = element.tagName;
-
-            if (tagName === 'INPUT') {
-                var type = element.type;
-                if ((type === 'text') ||
-                    (type === 'password') ||
-                    (type === 'hidden') ||
-                    (((type === 'checkbox') || (type === 'radio')) && element.checked)) {
-                    formBody.append(name);
-                    formBody.append('=');
-                    formBody.append(encodeURIComponent(element.value));
-                    formBody.append('&');
-                }
-            }
-            else if (tagName === 'SELECT') {
-                var optionCount = element.options.length;
-                for (var j = 0; j < optionCount; j++) {
-                    var option = element.options[j];
-                    if (option.selected) {
-                        formBody.append(name);
-                        formBody.append('=');
-                        formBody.append(encodeURIComponent(option.value));
-                        formBody.append('&');
-                    }
-                }
-            }
-            else if (tagName === 'TEXTAREA') {
-                formBody.append(name);
-                formBody.append('=');
-                formBody.append(encodeURIComponent(element.value));
-                formBody.append('&');
-            }
-        }
-
-        if (this._additionalInput) {
-            formBody.append(this._additionalInput);
-            this._additionalInput = null;
-        }
-
-        var request = new Sys.Net.WebRequest();
-        request.set_url(form.action);
-        request.get_headers()['X-MicrosoftAjax'] = 'Delta=true';
-        request.get_headers()['Cache-Control'] = 'no-cache';
-        request.set_timeout(this._asyncPostBackTimeout);
-        request.add_completed(Function.createDelegate(this, this._onFormSubmitCompleted));
-        request.set_body(formBody.toString());
-
-        var handler = this._get_eventHandlerList().getHandler("initializeRequest");
-        if (handler) {
-            var eventArgs = new Sys.WebForms.InitializeRequestEventArgs(request, this._postBackSettings.sourceElement);
-            handler(this, eventArgs);
-            continueSubmit = !eventArgs.get_cancel();
-        }
-
-        if (!continueSubmit) {
-            if (evt) {
-                evt.preventDefault();
-            }
-            return;
-        }
-
-                this._scrollPosition = this._getScrollPosition();
-
-
-                                this.abortPostBack();
-
-        handler = this._get_eventHandlerList().getHandler("beginRequest");
-        if (handler) {
-            var eventArgs = new Sys.WebForms.BeginRequestEventArgs(request, this._postBackSettings.sourceElement);
-            handler(this, eventArgs);
-        }
-
-        this._request = request;
-        request.invoke();
-
-                if (evt) {
-            evt.preventDefault();
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_onFormSubmitCompleted(sender, eventArgs) {
-        this._processingRequest = true;
-
-        var delimitByLengthDelimiter = '|';
-        
-        if (sender.get_timedOut()) {
-            this._endPostBack(this._createPageRequestManagerTimeoutError(), sender);
-            return;
-        }
-
-        if (sender.get_aborted()) {
-            this._endPostBack(null, sender);
-            return;
-        }
-
-                if (!this._request || sender.get_webRequest() !== this._request) {
-            return;
-        }
-
-        var errorMessage;
-        var delta = [];
-
-                if (sender.get_statusCode() !== 200) {
-            this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()), sender);
-            return;
-        }
-
-                        var reply = sender.get_responseData();
-        var delimiterIndex, len, type, id, content;
-        var replyIndex = 0;
-        var parserErrorDetails = null;
-
-        while (replyIndex < reply.length) {
-                        delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
-            if (delimiterIndex === -1) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            len = parseInt(reply.substring(replyIndex, delimiterIndex), 10);
-            if ((len % 1) !== 0) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            replyIndex = delimiterIndex + 1;
-
-                        delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
-            if (delimiterIndex === -1) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            type = reply.substring(replyIndex, delimiterIndex);
-            replyIndex = delimiterIndex + 1;
-
-                        delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
-            if (delimiterIndex === -1) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            id = reply.substring(replyIndex, delimiterIndex);
-            replyIndex = delimiterIndex + 1;
-
-                        if ((replyIndex + len) >= reply.length) {
-                parserErrorDetails = this._findText(reply, reply.length);
-                break;
-            }
-            content = this._decodeString(reply.substr(replyIndex, len));
-            replyIndex += len;
-
-                        if (reply.charAt(replyIndex) !== delimitByLengthDelimiter) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-
-            replyIndex++;
-
-            Array.add(delta, {type: type, id: id, content: content});
-        }
-
-                if (parserErrorDetails) {
-            this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails, parserErrorDetails)), sender);
-            return;
-        }
-
-
-        var updatePanelNodes = [];
-        var hiddenFieldNodes = [];
-        var arrayDeclarationNodes = [];
-        var scriptBlockNodes = [];
-        var expandoNodes = [];
-        var onSubmitNodes = [];
-        var dataItemNodes = [];
-        var dataItemJsonNodes = [];
-        var scriptDisposeNodes = [];
-        var asyncPostBackControlIDsNode, postBackControlIDsNode,
-            updatePanelIDsNode, asyncPostBackTimeoutNode,
-            childUpdatePanelIDsNode, panelsToRefreshNode, formActionNode;
-
-                for (var i = 0; i < delta.length; i++) {
-            var deltaNode = delta[i];
-            switch (deltaNode.type) {
-                case "updatePanel":
-                    Array.add(updatePanelNodes, deltaNode);
-                    break;
-                case "hiddenField":
-                    Array.add(hiddenFieldNodes, deltaNode);
-                    break;
-                case "arrayDeclaration":
-                    Array.add(arrayDeclarationNodes, deltaNode);
-                    break;
-                case "scriptBlock":
-                    Array.add(scriptBlockNodes, deltaNode);
-                    break;
-                case "expando":
-                    Array.add(expandoNodes, deltaNode);
-                    break;
-                case "onSubmit":
-                    Array.add(onSubmitNodes, deltaNode);
-                    break;
-                case "asyncPostBackControlIDs":
-                    asyncPostBackControlIDsNode = deltaNode;
-                    break;
-                case "postBackControlIDs":
-                    postBackControlIDsNode = deltaNode;
-                    break;
-                case "updatePanelIDs":
-                    updatePanelIDsNode = deltaNode;
-                    break;
-                case "asyncPostBackTimeout":
-                    asyncPostBackTimeoutNode = deltaNode;
-                    break;
-                case "childUpdatePanelIDs":
-                    childUpdatePanelIDsNode = deltaNode;
-                    break;
-                case "panelsToRefreshIDs":
-                    panelsToRefreshNode = deltaNode;
-                    break;
-                case "formAction":
-                    formActionNode = deltaNode;
-                    break;
-                case "dataItem":
-                    Array.add(dataItemNodes, deltaNode);
-                    break;
-                case "dataItemJson":
-                    Array.add(dataItemJsonNodes, deltaNode);
-                    break;
-                case "scriptDispose":
-                    Array.add(scriptDisposeNodes, deltaNode);
-                    break;
-                case "pageRedirect":
-                    window.location.href = deltaNode.content;
-                    return;
-                case "error":
-                                        this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id), deltaNode.content), sender);
-                    return;
-                case "pageTitle":
-                    document.title = deltaNode.content;
-                    break;
-                case "focus":
-                    this._controlIDToFocus = deltaNode.content;
-                    break;
-                default:
-                                        this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), sender);
-                    return;
-            }
-        }
-
-        var i;
-
-                if (asyncPostBackControlIDsNode && postBackControlIDsNode &&
-            updatePanelIDsNode && panelsToRefreshNode &&
-            asyncPostBackTimeoutNode && childUpdatePanelIDsNode) {
-
-            this._oldUpdatePanelIDs = this._updatePanelIDs;
-            var childUpdatePanelIDsString = childUpdatePanelIDsNode.content;
-            this._childUpdatePanelIDs = childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') : [];
-
-            var asyncPostBackControlIDsArray = this._splitNodeIntoArray(asyncPostBackControlIDsNode);
-            var postBackControlIDsArray = this._splitNodeIntoArray(postBackControlIDsNode);
-            var updatePanelIDsArray = this._splitNodeIntoArray(updatePanelIDsNode);
-            this._panelsToRefreshIDs = this._splitNodeIntoArray(panelsToRefreshNode);
-
-                                                for (i = 0; i < this._panelsToRefreshIDs.length; i++) {
-                var panelClientID = this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);
-                if (!document.getElementById(panelClientID)) {
-                    this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, panelClientID)), sender);
-                    return;
-                }
-            }
-
-            var asyncPostBackTimeout = asyncPostBackTimeoutNode.content;
-            this._updateControls(updatePanelIDsArray, asyncPostBackControlIDsArray, postBackControlIDsArray, asyncPostBackTimeout);
-        }
-
-                this._dataItems = {};
-        for (i = 0; i < dataItemNodes.length; i++) {
-            var dataItemNode = dataItemNodes[i];
-            this._dataItems[dataItemNode.id] = dataItemNode.content;
-        }
-        for (i = 0; i < dataItemJsonNodes.length; i++) {
-            var dataItemJsonNode = dataItemJsonNodes[i];
-            this._dataItems[dataItemJsonNode.id] = eval(dataItemJsonNode.content);
-        }
-
-
-        var handler = this._get_eventHandlerList().getHandler("pageLoading");
-        if (handler) {
-            handler(this, this._getPageLoadingEventArgs());
-        }
-
-
-                if (formActionNode) {
-            this._form.action = formActionNode.content;
-                                                this._form._initialAction = this._form.action;
-        }
-
-                                for (i = 0; i < updatePanelNodes.length; i++) {
-            var deltaUpdatePanel = updatePanelNodes[i];
-
-            var deltaPanelID = deltaUpdatePanel.id;
-            var deltaPanelRendering = deltaUpdatePanel.content;
-
-            var updatePanelElement = document.getElementById(deltaPanelID);
-
-            if (!updatePanelElement) {
-                this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, deltaPanelID)), sender);
-                return;
-            }
-
-            this._updatePanel(updatePanelElement, deltaPanelRendering);
-        }
-
-                                for (i = 0; i < scriptDisposeNodes.length; i++) {
-            var disposePanelId = scriptDisposeNodes[i].id;
-            var disposeScript = scriptDisposeNodes[i].content;
-            this._registerDisposeScript(disposePanelId, disposeScript);
-        }
-
-                for (i = 0; i < hiddenFieldNodes.length; i++) {
-            var id = hiddenFieldNodes[i].id;
-            var value = hiddenFieldNodes[i].content;
-
-            var hiddenFieldElement = document.getElementById(id);
-            if (!hiddenFieldElement) {
-                                hiddenFieldElement = document.createElement('input');
-                hiddenFieldElement.id = id;
-                hiddenFieldElement.name = id;
-                hiddenFieldElement.type = 'hidden';
-                this._form.appendChild(hiddenFieldElement);
-            }
-            hiddenFieldElement.value = value;
-        }
-
-                var arrayScript = '';
-        for (i = 0; i < arrayDeclarationNodes.length; i++) {
-            arrayScript += "Sys.WebForms.PageRequestManager._addArrayElement('" + arrayDeclarationNodes[i].id + "', " + arrayDeclarationNodes[i].content + ");\r\n";
-        }
-
-                var expandoScript = '';
-        for (i = 0; i < expandoNodes.length; i++) {
-            var propertyReference = expandoNodes[i].id;
-            var propertyValue = expandoNodes[i].content;
-            expandoScript += propertyReference + " = " + propertyValue + "\r\n";
-        }
-
-                        Sys._ScriptLoader.readLoadedScripts();
-
-                                Sys.Application.beginCreateComponents();
-
-        var scriptLoader = Sys._ScriptLoader.getInstance();
-
-                                        if (arrayScript.length) {
-            scriptLoader.queueScriptBlock(arrayScript);
-        }
-        if (expandoScript.length) {
-            scriptLoader.queueScriptBlock(expandoScript);
-        }
-
-        for (i = 0; i < scriptBlockNodes.length; i++) {
-            var scriptBlockType = scriptBlockNodes[i].id;
-            switch (scriptBlockType) {
-                case "ScriptContentNoTags":
-                                        scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
-                    break;
-                case "ScriptContentWithTags":
-                                        var scriptTagAttributes;
-                    eval("scriptTagAttributes = " + scriptBlockNodes[i].content);
-
-                                        if (scriptTagAttributes.src && Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
-                        continue;
-                    }
-
-                    scriptLoader.queueCustomScriptTag(scriptTagAttributes);
-                    break;
-                case "ScriptPath":
-                                        if (Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
-                        continue;
-                    }
-
-                                        scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
-                    break;
-            }
-        }
-
-                        var onSubmitStatementScript = '';
-        for (var i = 0; i < onSubmitNodes.length; i++) {
-            if (i === 0) {
-                onSubmitStatementScript = 'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n';
-            }
-
-            onSubmitStatementScript += onSubmitNodes[i].content + "\r\n";
-        }
-        if (onSubmitStatementScript.length) {
-            onSubmitStatementScript += "\r\nreturn true;\r\n});\r\n";
-            scriptLoader.queueScriptBlock(onSubmitStatementScript);
-        }
-
-                this._response = sender;
-
-                        scriptLoader.loadScripts(0, Function.createDelegate(this, this._scriptsLoadComplete), null, null);
-
-                    }
-
-    function Sys$WebForms$PageRequestManager$_onWindowUnload(evt) {
-        this.dispose();
-    }
-
-    function Sys$WebForms$PageRequestManager$_pageLoaded(initialLoad) {
-        var handler = this._get_eventHandlerList().getHandler("pageLoaded");
-        if (handler) {
-            handler(this, this._getPageLoadedEventArgs(initialLoad));
-        }
-        if (!initialLoad) {
-                                    Sys.Application.raiseLoad();
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad(evt) {
-        this._pageLoaded(true);
-    }
-
-    function Sys$WebForms$PageRequestManager$_registerDisposeScript(panelID, disposeScript) {
-        if (!this._scriptDisposes[panelID]) {
-            this._scriptDisposes[panelID] = [disposeScript];
-        }
-        else {
-            Array.add(this._scriptDisposes[panelID], disposeScript);
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_scriptsLoadComplete() {
-                        
-                                                if (window.__theFormPostData) {
-            window.__theFormPostData = "";
-        }
-        if (window.__theFormPostCollection) {
-            window.__theFormPostCollection = [];
-        }
-        if (window.WebForm_InitCallback) {
-            window.WebForm_InitCallback();
-        }
-
-                if (this._scrollPosition) {
-                        if (window.scrollTo) {
-                window.scrollTo(this._scrollPosition.x, this._scrollPosition.y);
-            }
-            this._scrollPosition = null;
-        }
-
-        Sys.Application.endCreateComponents();
-
-                this._pageLoaded(false);
-
-        this._endPostBack(null, this._response);
-        this._response = null;
-
-                if (this._controlIDToFocus) {
-            var focusTarget;
-            var oldContentEditableSetting;
-            if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
-                                                                                var targetControl = $get(this._controlIDToFocus);
-
-                var focusTarget = targetControl;
-                                if (targetControl && (!WebForm_CanFocus(targetControl))) {
-                    focusTarget = WebForm_FindFirstFocusableChild(targetControl);
-                }
-                                                if (focusTarget && (typeof(focusTarget.contentEditable) !== "undefined")) {
-                    oldContentEditableSetting = focusTarget.contentEditable;
-                    focusTarget.contentEditable = false;
-                }
-                else {
-                    focusTarget = null;
-                }
-            }
-            WebForm_AutoFocus(this._controlIDToFocus);
-            if (focusTarget) {
-                                focusTarget.contentEditable = oldContentEditableSetting;
-            }
-            this._controlIDToFocus = null;
-        }
-    }
-
-    function Sys$WebForms$PageRequestManager$_splitNodeIntoArray(node) {
-        var str = node.content;
-        var arr = str.length ? str.split(',') : [];
-        return arr;
-    }
-
-    function Sys$WebForms$PageRequestManager$_uniqueIDToClientID(uniqueID) {
-                return uniqueID.replace(/\$/g, '_');
-    }
-
-    function Sys$WebForms$PageRequestManager$_updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout) {
-        if (updatePanelIDs) {
-                                                this._updatePanelIDs = new Array(updatePanelIDs.length);
-            this._updatePanelClientIDs = new Array(updatePanelIDs.length);
-            this._updatePanelHasChildrenAsTriggers = new Array(updatePanelIDs.length);
-            for (var i = 0; i < updatePanelIDs.length; i++) {
-                var realPanelID = updatePanelIDs[i].substr(1);
-                var childrenAsTriggers = (updatePanelIDs[i].charAt(0) === 't');
-
-                                this._updatePanelHasChildrenAsTriggers[i] = childrenAsTriggers;
-                this._updatePanelIDs[i] = realPanelID;
-                this._updatePanelClientIDs[i] = this._uniqueIDToClientID(realPanelID);
-            }
-            this._asyncPostBackTimeout = asyncPostBackTimeout * 1000;
-        }
-        else {
-            this._updatePanelIDs = [];
-            this._updatePanelClientIDs = [];
-            this._updatePanelHasChildrenAsTriggers = [];
-            this._asyncPostBackTimeout = 0;
-        }
-
-        this._asyncPostBackControlIDs = [];
-        this._asyncPostBackControlClientIDs = [];
-        this._convertToClientIDs(asyncPostBackControlIDs, this._asyncPostBackControlIDs, this._asyncPostBackControlClientIDs);
-
-        this._postBackControlIDs = [];
-        this._postBackControlClientIDs = [];
-        this._convertToClientIDs(postBackControlIDs, this._postBackControlIDs, this._postBackControlClientIDs);
-    }
-
-    function Sys$WebForms$PageRequestManager$_updatePanel(updatePanelElement, rendering) {
-
-        for (var updatePanelID in this._scriptDisposes) {
-            if (this._elementContains(updatePanelElement, document.getElementById(updatePanelID))) {
-                                var disposeScripts = this._scriptDisposes[updatePanelID];
-                for (var i = 0; i < disposeScripts.length; i++) {
-                    eval(disposeScripts[i]);
-                }
-
-                                delete this._scriptDisposes[updatePanelID];
-            }
-        }
-
-        this._destroyTree(updatePanelElement);
-
-                updatePanelElement.innerHTML = rendering;
-    }
-
-    function Sys$WebForms$PageRequestManager$_validPosition(position) {
-        return (typeof(position) !== "undefined") && (position !== null) && (position !== 0);
-    }
-Sys.WebForms.PageRequestManager.prototype = {
-
-    _get_eventHandlerList: Sys$WebForms$PageRequestManager$_get_eventHandlerList,
-
-    get_isInAsyncPostBack: Sys$WebForms$PageRequestManager$get_isInAsyncPostBack,
-
-        add_beginRequest: Sys$WebForms$PageRequestManager$add_beginRequest,
-    remove_beginRequest: Sys$WebForms$PageRequestManager$remove_beginRequest,
-
-    add_endRequest: Sys$WebForms$PageRequestManager$add_endRequest,
-    remove_endRequest: Sys$WebForms$PageRequestManager$remove_endRequest,
-
-    add_initializeRequest: Sys$WebForms$PageRequestManager$add_initializeRequest,
-    remove_initializeRequest: Sys$WebForms$PageRequestManager$remove_initializeRequest,
-
-    add_pageLoaded: Sys$WebForms$PageRequestManager$add_pageLoaded,
-    remove_pageLoaded: Sys$WebForms$PageRequestManager$remove_pageLoaded,
-
-    add_pageLoading: Sys$WebForms$PageRequestManager$add_pageLoading,
-    remove_pageLoading: Sys$WebForms$PageRequestManager$remove_pageLoading,
-
-    abortPostBack: Sys$WebForms$PageRequestManager$abortPostBack,
-
-    _createPageRequestManagerTimeoutError: Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError,
-
-    _createPageRequestManagerServerError: Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError,
-
-    _createPageRequestManagerParserError: Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError,
-
-    _createPostBackSettings: Sys$WebForms$PageRequestManager$_createPostBackSettings,
-
-    _convertToClientIDs: Sys$WebForms$PageRequestManager$_convertToClientIDs,
-
-    _decodeString: Sys$WebForms$PageRequestManager$_decodeString,
-
-    _destroyTree: Sys$WebForms$PageRequestManager$_destroyTree,
-
-    dispose: Sys$WebForms$PageRequestManager$dispose,
-
-        _doPostBack: Sys$WebForms$PageRequestManager$_doPostBack,
-
-    _elementContains: Sys$WebForms$PageRequestManager$_elementContains,
-
-    _endPostBack: Sys$WebForms$PageRequestManager$_endPostBack,
-
-            _findNearestElement: Sys$WebForms$PageRequestManager$_findNearestElement,
-
-    _findText: Sys$WebForms$PageRequestManager$_findText,
-
-    _getPageLoadedEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs,
-
-    _getPageLoadingEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs,
-
-    _getPostBackSettings: Sys$WebForms$PageRequestManager$_getPostBackSettings,
-
-    _getScrollPosition: Sys$WebForms$PageRequestManager$_getScrollPosition,
-
-    _initializeInternal: Sys$WebForms$PageRequestManager$_initializeInternal,
-
-    _matchesParentIDInList: Sys$WebForms$PageRequestManager$_matchesParentIDInList,
-
-    _onFormElementClick: Sys$WebForms$PageRequestManager$_onFormElementClick,
-
-    _onFormSubmit: Sys$WebForms$PageRequestManager$_onFormSubmit,
-
-    _onFormSubmitCompleted: Sys$WebForms$PageRequestManager$_onFormSubmitCompleted,
-
-    _onWindowUnload: Sys$WebForms$PageRequestManager$_onWindowUnload,
-
-    _pageLoaded: Sys$WebForms$PageRequestManager$_pageLoaded,
-
-    _pageLoadedInitialLoad: Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad,
-
-    _registerDisposeScript: Sys$WebForms$PageRequestManager$_registerDisposeScript,
-
-    _scriptsLoadComplete: Sys$WebForms$PageRequestManager$_scriptsLoadComplete,
-
-    _splitNodeIntoArray: Sys$WebForms$PageRequestManager$_splitNodeIntoArray,
-
-    _uniqueIDToClientID: Sys$WebForms$PageRequestManager$_uniqueIDToClientID,
-
-    _updateControls: Sys$WebForms$PageRequestManager$_updateControls,
-
-    _updatePanel: Sys$WebForms$PageRequestManager$_updatePanel,
-
-    _validPosition: Sys$WebForms$PageRequestManager$_validPosition
-}
-
-Sys.WebForms.PageRequestManager.getInstance = function Sys$WebForms$PageRequestManager$getInstance() {
-    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return Sys.WebForms.PageRequestManager._instance || null;
-}
-
-Sys.WebForms.PageRequestManager._addArrayElement = function Sys$WebForms$PageRequestManager$_addArrayElement(arrayName, arrayValue) {
-    if (typeof(window[arrayName]) === "undefined") {
-                window[arrayName] = [ arrayValue ];
-    }
-    else {
-                Array.add(window[arrayName], arrayValue);
-    }
-}
-
-Sys.WebForms.PageRequestManager._initialize = function Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, formElement) {
-    if (Sys.WebForms.PageRequestManager.getInstance()) {
-        throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
-    }
-    Sys.WebForms.PageRequestManager._instance = new Sys.WebForms.PageRequestManager();
-    Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(scriptManagerID, formElement);
-}
-
-Sys.WebForms.PageRequestManager.registerClass('Sys.WebForms.PageRequestManager');
-Sys.UI._UpdateProgress = function Sys$UI$_UpdateProgress(element) {
-    Sys.UI._UpdateProgress.initializeBase(this,[element]);
-    this._displayAfter = 500;
-    this._dynamicLayout = true;
-    this._associatedUpdatePanelId = null;
-    this._beginRequestHandlerDelegate = null;
-    this._startDelegate = null;
-    this._endRequestHandlerDelegate = null;
-    this._pageRequestManager = null;
-    this._timerCookie = null;
-}
-
-    function Sys$UI$_UpdateProgress$get_displayAfter() {
-        /// <value type="Number"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._displayAfter;
-    }
-    function Sys$UI$_UpdateProgress$set_displayAfter(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-
-        this._displayAfter = value;
-    }
-    function Sys$UI$_UpdateProgress$get_dynamicLayout() {
-        /// <value type="Boolean"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dynamicLayout;
-    }
-    function Sys$UI$_UpdateProgress$set_dynamicLayout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-
-        this._dynamicLayout = value;
-    }
-    function Sys$UI$_UpdateProgress$get_associatedUpdatePanelId() {
-        /// <value type="String" mayBeNull="true"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._associatedUpdatePanelId;
-    }
-    function Sys$UI$_UpdateProgress$set_associatedUpdatePanelId(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
-        if (e) throw e;
-
-        this._associatedUpdatePanelId = value;
-    }
-    function Sys$UI$_UpdateProgress$_handleBeginRequest(sender, arg) {
-        var curElem = arg.get_postBackElement();
-        var showProgress = !this._associatedUpdatePanelId; 
-        while (!showProgress && curElem) {
-            if (curElem.id && this._associatedUpdatePanelId === curElem.id) {
-                showProgress = true; 
-            }
-            curElem = curElem.parentNode; 
-        } 
-        if (showProgress) {
-            this._timerCookie = window.setTimeout(this._startDelegate, this._displayAfter);
-        }
-    }
-    function Sys$UI$_UpdateProgress$_startRequest() {
-        if (this._pageRequestManager.get_isInAsyncPostBack()) {
-            if (this._dynamicLayout) this.get_element().style.display = 'block';
-            else this.get_element().style.visibility = 'visible';
-        }
-        this._timerCookie = null;
-    }
-    function Sys$UI$_UpdateProgress$_handleEndRequest(sender, arg) {
-        if (this._dynamicLayout) this.get_element().style.display = 'none';
-        else this.get_element().style.visibility = 'hidden';
-        if (this._timerCookie) {
-            window.clearTimeout(this._timerCookie);
-            this._timerCookie = null;
-        }
-    }
-    function Sys$UI$_UpdateProgress$dispose() {
-       if (this._pageRequestManager !== null) {
-           this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);
-           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
-       }
-       Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
-    }
-    function Sys$UI$_UpdateProgress$initialize() {
-        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
-    	this._beginRequestHandlerDelegate = Function.createDelegate(this, this._handleBeginRequest);
-    	this._endRequestHandlerDelegate = Function.createDelegate(this, this._handleEndRequest);
-    	this._startDelegate = Function.createDelegate(this, this._startRequest);
-    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
-           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
-    	}
-    	if (this._pageRequestManager !== null ) {
-               	    this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
-    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
-    	}
-    }
-Sys.UI._UpdateProgress.prototype = {
-    get_displayAfter: Sys$UI$_UpdateProgress$get_displayAfter,
-    set_displayAfter: Sys$UI$_UpdateProgress$set_displayAfter,
-    get_dynamicLayout: Sys$UI$_UpdateProgress$get_dynamicLayout,
-    set_dynamicLayout: Sys$UI$_UpdateProgress$set_dynamicLayout,
-    get_associatedUpdatePanelId: Sys$UI$_UpdateProgress$get_associatedUpdatePanelId,
-    set_associatedUpdatePanelId: Sys$UI$_UpdateProgress$set_associatedUpdatePanelId,
-    _handleBeginRequest: Sys$UI$_UpdateProgress$_handleBeginRequest,
-    _startRequest: Sys$UI$_UpdateProgress$_startRequest,
-    _handleEndRequest: Sys$UI$_UpdateProgress$_handleEndRequest,
-    dispose: Sys$UI$_UpdateProgress$dispose,
-    initialize: Sys$UI$_UpdateProgress$initialize
-}
-Sys.UI._UpdateProgress.registerClass('Sys.UI._UpdateProgress', Sys.UI.Control);
-
-Sys.WebForms.Res={
-'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
-'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
-'PRM_ParserError':'The message received from the server could not be parsed.',
-'PRM_TimeoutError':'The server request timed out.',
-'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.',
-'PRM_UnknownToken':'Unknown token: \'{0}\'.',
-'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
-'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
-'PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}',
-'PRM_TimeoutError':'The server request timed out.',
-'PRM_ParserErrorDetails':'Error parsing near \'{0}\'.',
-'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'
-};
-
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//-----------------------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------
+// MicrosoftAjaxWebForms.js
+// Microsoft AJAX ASP.NET WebForms Framework.
+
+
+Type.registerNamespace('Sys.WebForms');
+
+
+Sys.WebForms.BeginRequestEventArgs = function Sys$WebForms$BeginRequestEventArgs(request, postBackElement) {
+    /// <param name="request" type="Sys.Net.WebRequest"></param>
+    /// <param name="postBackElement" domElement="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "request", type: Sys.Net.WebRequest},
+        {name: "postBackElement", domElement: true}
+    ]);
+    if (e) throw e;
+
+
+    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
+    this._request = request;
+    this._postBackElement = postBackElement;
+}
+
+
+    function Sys$WebForms$BeginRequestEventArgs$get_postBackElement() {
+        /// <value domElement="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._postBackElement;
+    }
+
+    function Sys$WebForms$BeginRequestEventArgs$get_request() {
+        /// <value type="Sys.Net.WebRequest"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._request;
+    }
+Sys.WebForms.BeginRequestEventArgs.prototype = {
+    get_postBackElement: Sys$WebForms$BeginRequestEventArgs$get_postBackElement,
+
+    get_request: Sys$WebForms$BeginRequestEventArgs$get_request
+}
+
+Sys.WebForms.BeginRequestEventArgs.registerClass('Sys.WebForms.BeginRequestEventArgs', Sys.EventArgs);
+
+Sys.WebForms.EndRequestEventArgs = function Sys$WebForms$EndRequestEventArgs(error, dataItems, response) {
+    /// <param name="error" type="Error" mayBeNull="true"></param>
+    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
+    /// <param name="response" type="Sys.Net.WebRequestExecutor"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "error", type: Error, mayBeNull: true},
+        {name: "dataItems", type: Object, mayBeNull: true},
+        {name: "response", type: Sys.Net.WebRequestExecutor}
+    ]);
+    if (e) throw e;
+
+
+    Sys.WebForms.EndRequestEventArgs.initializeBase(this);
+    this._errorHandled = false;
+    this._error = error;
+        this._dataItems = dataItems || new Object();
+    this._response = response;
+}
+
+
+    function Sys$WebForms$EndRequestEventArgs$get_dataItems() {
+        /// <value type="Object"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dataItems;
+    }
+
+    function Sys$WebForms$EndRequestEventArgs$get_error() {
+        /// <value type="Error"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._error;
+    }
+
+    function Sys$WebForms$EndRequestEventArgs$get_errorHandled() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._errorHandled;
+    }
+    function Sys$WebForms$EndRequestEventArgs$set_errorHandled(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+
+        this._errorHandled = value;
+    }
+
+    function Sys$WebForms$EndRequestEventArgs$get_response() {
+        /// <value type="Sys.Net.WebRequestExecutor"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._response;
+    }
+Sys.WebForms.EndRequestEventArgs.prototype = {
+    get_dataItems: Sys$WebForms$EndRequestEventArgs$get_dataItems,
+
+    get_error: Sys$WebForms$EndRequestEventArgs$get_error,
+
+    get_errorHandled: Sys$WebForms$EndRequestEventArgs$get_errorHandled,
+    set_errorHandled: Sys$WebForms$EndRequestEventArgs$set_errorHandled,
+
+    get_response: Sys$WebForms$EndRequestEventArgs$get_response
+}
+
+Sys.WebForms.EndRequestEventArgs.registerClass('Sys.WebForms.EndRequestEventArgs', Sys.EventArgs);
+
+Sys.WebForms.InitializeRequestEventArgs = function Sys$WebForms$InitializeRequestEventArgs(request, postBackElement) {
+    /// <param name="request" type="Sys.Net.WebRequest"></param>
+    /// <param name="postBackElement" domElement="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "request", type: Sys.Net.WebRequest},
+        {name: "postBackElement", domElement: true}
+    ]);
+    if (e) throw e;
+
+
+    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
+    this._request = request;
+    this._postBackElement = postBackElement;
+}
+
+
+    function Sys$WebForms$InitializeRequestEventArgs$get_postBackElement() {
+        /// <value domElement="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._postBackElement;
+    }
+
+    function Sys$WebForms$InitializeRequestEventArgs$get_request() {
+        /// <value type="Sys.Net.WebRequest"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._request;
+    }
+Sys.WebForms.InitializeRequestEventArgs.prototype = {
+    get_postBackElement: Sys$WebForms$InitializeRequestEventArgs$get_postBackElement,
+
+    get_request: Sys$WebForms$InitializeRequestEventArgs$get_request
+}
+
+Sys.WebForms.InitializeRequestEventArgs.registerClass('Sys.WebForms.InitializeRequestEventArgs', Sys.CancelEventArgs);
+
+Sys.WebForms.PageLoadedEventArgs = function Sys$WebForms$PageLoadedEventArgs(panelsUpdated, panelsCreated, dataItems) {
+    /// <param name="panelsUpdated" type="Array"></param>
+    /// <param name="panelsCreated" type="Array"></param>
+    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "panelsUpdated", type: Array},
+        {name: "panelsCreated", type: Array},
+        {name: "dataItems", type: Object, mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    Sys.WebForms.PageLoadedEventArgs.initializeBase(this);
+
+    this._panelsUpdated = panelsUpdated;
+    this._panelsCreated = panelsCreated;
+        this._dataItems = dataItems || new Object();
+}
+
+
+    function Sys$WebForms$PageLoadedEventArgs$get_dataItems() {
+        /// <value type="Object"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dataItems;
+    }
+
+    function Sys$WebForms$PageLoadedEventArgs$get_panelsCreated() {
+        /// <value type="Array"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsCreated;
+    }
+
+    function Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated() {
+        /// <value type="Array"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsUpdated;
+    }
+Sys.WebForms.PageLoadedEventArgs.prototype = {
+    get_dataItems: Sys$WebForms$PageLoadedEventArgs$get_dataItems,
+
+    get_panelsCreated: Sys$WebForms$PageLoadedEventArgs$get_panelsCreated,
+
+    get_panelsUpdated: Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated
+}
+
+Sys.WebForms.PageLoadedEventArgs.registerClass('Sys.WebForms.PageLoadedEventArgs', Sys.EventArgs);
+
+Sys.WebForms.PageLoadingEventArgs = function Sys$WebForms$PageLoadingEventArgs(panelsUpdating, panelsDeleting, dataItems) {
+    /// <param name="panelsUpdating" type="Array"></param>
+    /// <param name="panelsDeleting" type="Array"></param>
+    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "panelsUpdating", type: Array},
+        {name: "panelsDeleting", type: Array},
+        {name: "dataItems", type: Object, mayBeNull: true}
+    ]);
+    if (e) throw e;
+
+    Sys.WebForms.PageLoadingEventArgs.initializeBase(this);
+
+    this._panelsUpdating = panelsUpdating;
+    this._panelsDeleting = panelsDeleting;
+        this._dataItems = dataItems || new Object();
+}
+
+
+    function Sys$WebForms$PageLoadingEventArgs$get_dataItems() {
+        /// <value type="Object"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dataItems;
+    }
+
+    function Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting() {
+        /// <value type="Array"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsDeleting;
+    }
+
+    function Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating() {
+        /// <value type="Array"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsUpdating;
+    }
+Sys.WebForms.PageLoadingEventArgs.prototype = {
+    get_dataItems: Sys$WebForms$PageLoadingEventArgs$get_dataItems,
+
+    get_panelsDeleting: Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting,
+
+    get_panelsUpdating: Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating
+}
+
+Sys.WebForms.PageLoadingEventArgs.registerClass('Sys.WebForms.PageLoadingEventArgs', Sys.EventArgs);
+Sys.WebForms.PageRequestManager = function Sys$WebForms$PageRequestManager() {
+    this._form = null;
+    this._updatePanelIDs = null;
+    this._updatePanelClientIDs = null;
+    this._oldUpdatePanelIDs = null;
+    this._childUpdatePanelIDs = null;
+    this._panelsToRefreshIDs = null;
+    this._updatePanelHasChildrenAsTriggers = null;
+    this._asyncPostBackControlIDs = null;
+    this._asyncPostBackControlClientIDs = null;
+    this._postBackControlIDs = null;
+    this._postBackControlClientIDs = null;
+    this._scriptManagerID = null;
+    this._pageLoadedHandler = null;
+
+    this._additionalInput = null;
+    this._onsubmit = null;
+    this._onSubmitStatements = [];
+    this._originalDoPostBack = null;
+    this._postBackSettings = null;
+    this._request = null;
+    this._onFormSubmitHandler = null;
+    this._onFormElementClickHandler = null;
+    this._onWindowUnloadHandler = null;
+    this._asyncPostBackTimeout = null;
+
+    this._controlIDToFocus = null;
+    this._scrollPosition = null;
+    this._dataItems = null;
+    this._response = null;
+    this._processingRequest = false;
+    this._scriptDisposes = {};
+}
+
+
+
+    function Sys$WebForms$PageRequestManager$_get_eventHandlerList() {
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+
+    function Sys$WebForms$PageRequestManager$get_isInAsyncPostBack() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._request !== null;
+    }
+
+
+    function Sys$WebForms$PageRequestManager$add_beginRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("beginRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_beginRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("beginRequest", handler);
+    }
+
+    function Sys$WebForms$PageRequestManager$add_endRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("endRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_endRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("endRequest", handler);
+    }
+
+    function Sys$WebForms$PageRequestManager$add_initializeRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("initializeRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_initializeRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("initializeRequest", handler);
+    }
+
+    function Sys$WebForms$PageRequestManager$add_pageLoaded(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("pageLoaded", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_pageLoaded(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("pageLoaded", handler);
+    }
+
+    function Sys$WebForms$PageRequestManager$add_pageLoading(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().addHandler("pageLoading", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_pageLoading(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+
+        this._get_eventHandlerList().removeHandler("pageLoading", handler);
+    }
+
+    function Sys$WebForms$PageRequestManager$abortPostBack() {
+        if (!this._processingRequest && this._request) {
+            this._request.get_executor().abort();
+            this._request = null;
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError() {
+                var displayMessage = "Sys.WebForms.PageRequestManagerTimeoutException: " + Sys.WebForms.Res.PRM_TimeoutError;
+        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerTimeoutException'});
+        e.popStackFrame();
+        return e;
+    }
+
+    function Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError(httpStatusCode, message) {
+                var displayMessage = message || ("Sys.WebForms.PageRequestManagerServerErrorException: " + String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
+        var e = Error.create(displayMessage, {
+            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
+            httpStatusCode: httpStatusCode
+        });
+        e.popStackFrame();
+        return e;
+    }
+
+    function Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError(parserErrorMessage) {
+                var displayMessage = "Sys.WebForms.PageRequestManagerParserErrorException: " + String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
+        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerParserErrorException'});
+        e.popStackFrame();
+        return e;
+    }
+
+    function Sys$WebForms$PageRequestManager$_createPostBackSettings(async, panelID, sourceElement) {
+
+        return { async:async, panelID:panelID, sourceElement:sourceElement };
+    }
+
+    function Sys$WebForms$PageRequestManager$_convertToClientIDs(source, destinationIDs, destinationClientIDs) {
+        if (source) {
+            for (var i = 0; i < source.length; i++) {
+                Array.add(destinationIDs, source[i]);
+                Array.add(destinationClientIDs, this._uniqueIDToClientID(source[i]));
+            }
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_decodeString(encodedValue) {
+        return encodedValue.replace(/\\\u00FF\\/g, "\u0000").replace(/\u00FF\u00FF/g, "\u00FF");
+    }
+
+    function Sys$WebForms$PageRequestManager$_destroyTree(element) {
+                if (element.nodeType === 1) {
+                                    var childNodes = element.childNodes;
+            for (var i = childNodes.length - 1; i >= 0; i--) {
+                var node = childNodes[i];
+                if (node.nodeType === 1) {
+                    if (node.dispose && typeof(node.dispose) === "function") {
+                        node.dispose();
+                    }
+                    else if (node.control && typeof(node.control.dispose) === "function") {
+                        node.control.dispose();
+                    }
+                    var behaviors = Sys.UI.Behavior.getBehaviors(node);
+                    for (var j = behaviors.length - 1; j >= 0; j--) {
+                        behaviors[j].dispose();
+                    }
+                    this._destroyTree(node);
+                }
+            }
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$dispose() {
+        if (this._form) {
+            Sys.UI.DomEvent.removeHandler(this._form, 'submit', this._onFormSubmitHandler);
+            Sys.UI.DomEvent.removeHandler(this._form, 'click', this._onFormElementClickHandler);
+            Sys.UI.DomEvent.removeHandler(window, 'unload', this._onWindowUnloadHandler);
+            Sys.UI.DomEvent.removeHandler(window, 'load', this._pageLoadedHandler);
+        }
+
+        if (this._originalDoPostBack) {
+            window.__doPostBack = this._originalDoPostBack;
+            this._originalDoPostBack = null;
+        }
+
+        this._form = null;
+        this._updatePanelIDs = null;
+        this._oldUpdatePanelIDs = null;
+        this._childUpdatePanelIDs = null;
+        this._updatePanelClientIDs = null;
+        this._asyncPostBackControlIDs = null;
+        this._asyncPostBackControlClientIDs = null;
+        this._postBackControlIDs = null;
+        this._postBackControlClientIDs = null;
+        this._asyncPostBackTimeout = null;
+        this._scrollPosition = null;
+        this._dataItems = null;
+    }
+
+
+    function Sys$WebForms$PageRequestManager$_doPostBack(eventTarget, eventArgument) {
+        this._additionalInput = null;
+
+        var form = this._form;
+        if (form.action !== form._initialAction) {
+                                    this._postBackSettings = this._createPostBackSettings(false, null, null);
+        }
+        else {
+                        var clientID = this._uniqueIDToClientID(eventTarget);
+            var postBackElement = document.getElementById(clientID);
+            if (!postBackElement) {
+                                                                                if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
+                                        this._postBackSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + eventTarget, null);
+                }
+                else {
+                    if (Array.contains(this._postBackControlIDs, eventTarget)) {
+                                                this._postBackSettings = this._createPostBackSettings(false, null, null);
+                    }
+                    else {
+                                                                                                var nearestUniqueIDMatch = this._findNearestElement(eventTarget);
+                        if (nearestUniqueIDMatch) {
+                                                                                    this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
+                        }
+                        else {
+                                                                                    this._postBackSettings = this._createPostBackSettings(false, null, null);
+                        }
+                    }
+                }
+            }
+            else {
+                                                this._postBackSettings = this._getPostBackSettings(postBackElement, eventTarget);
+            }
+        }
+
+        if (!this._postBackSettings.async) {
+                                    form.onsubmit = this._onsubmit;
+            this._originalDoPostBack(eventTarget, eventArgument);
+            form.onsubmit = null;
+            return;
+        }
+
+        form.__EVENTTARGET.value = eventTarget;
+        form.__EVENTARGUMENT.value = eventArgument;
+        this._onFormSubmit();
+    }
+
+    function Sys$WebForms$PageRequestManager$_elementContains(container, element) {
+        while (element) {
+            if (element === container) {
+                return true;
+            }
+            element = element.parentNode;
+        }
+        return false;
+    }
+
+    function Sys$WebForms$PageRequestManager$_endPostBack(error, response) {
+        this._processingRequest = false;
+
+        this._request = null;
+        this._additionalInput = null;
+
+        var handler = this._get_eventHandlerList().getHandler("endRequest");
+        var errorHandled = false;
+        if (handler) {
+            var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
+            handler(this, eventArgs);
+            errorHandled = eventArgs.get_errorHandled();
+        }
+        this._dataItems = null;
+        if (error && !errorHandled) {
+            alert(error.message);
+        }
+    }
+
+
+
+    function Sys$WebForms$PageRequestManager$_findNearestElement(uniqueID) {
+        while (uniqueID.length > 0) {
+            var clientID = this._uniqueIDToClientID(uniqueID);
+            var element = document.getElementById(clientID);
+            if (element) {
+                return element;
+            }
+            var indexOfLastDollar = uniqueID.lastIndexOf('$');
+            if (indexOfLastDollar === -1) {
+                return null;
+            }
+            uniqueID = uniqueID.substring(0, indexOfLastDollar);
+        }
+        return null;
+    }
+
+    function Sys$WebForms$PageRequestManager$_findText(text, location) {
+        var startIndex = Math.max(0, location - 20);
+        var endIndex = Math.min(text.length, location + 20);
+        return text.substring(startIndex, endIndex);
+    }
+
+    function Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs(initialLoad) {
+                                                                                                                                        
+        var updated = [];
+        var created = [];
+
+                var oldIDs = this._oldUpdatePanelIDs || [];         var newIDs = this._updatePanelIDs;         var childIDs = this._childUpdatePanelIDs || [];         var refreshedIDs = this._panelsToRefreshIDs || []; 
+                for (var i = 0; i < refreshedIDs.length; i++) {
+            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
+        }
+
+                        for (var i = 0; i < newIDs.length; i++) {
+            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) !== -1) {
+                Array.add(created, document.getElementById(this._uniqueIDToClientID(newIDs[i])));
+            }
+        }
+
+        return new Sys.WebForms.PageLoadedEventArgs(updated, created, this._dataItems);
+    }
+
+    function Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs() {
+                                                                                                                                        
+        var updated = [];
+        var deleted = [];
+
+        var oldIDs = this._oldUpdatePanelIDs;
+        var newIDs = this._updatePanelIDs;
+        var childIDs = this._childUpdatePanelIDs;
+        var refreshedIDs = this._panelsToRefreshIDs;
+
+                for (var i = 0; i < refreshedIDs.length; i++) {
+            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
+        }
+
+                for (var i = 0; i < oldIDs.length; i++) {
+            if (Array.indexOf(refreshedIDs, oldIDs[i]) === -1 &&
+                (Array.indexOf(newIDs, oldIDs[i]) === -1 || Array.indexOf(childIDs, oldIDs[i]) > -1)) {
+                Array.add(deleted, document.getElementById(this._uniqueIDToClientID(oldIDs[i])));
+            }
+        }
+
+        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, this._dataItems);
+    }
+
+    function Sys$WebForms$PageRequestManager$_getPostBackSettings(element, elementUniqueID) {
+
+
+        var originalElement = element;
+
+                        var proposedSettings = null;
+
+                        while (element) {
+            if (element.id) {
+                                if (!proposedSettings && Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
+                                        proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
+                }
+                else {
+                    if (!proposedSettings && Array.contains(this._postBackControlClientIDs, element.id)) {
+                                                return this._createPostBackSettings(false, null, null);
+                    }
+                    else {
+                        var indexOfPanel = Array.indexOf(this._updatePanelClientIDs, element.id);
+                        if (indexOfPanel !== -1) {
+                                                        if (this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {
+                                                                
+                                                                                                                                return this._createPostBackSettings(true, this._updatePanelIDs[indexOfPanel] + '|' + elementUniqueID, originalElement);
+                            }
+                            else {
+                                                                                                return this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
+                            }
+                        }
+                    }
+                }
+
+                                if (!proposedSettings && this._matchesParentIDInList(element.id, this._asyncPostBackControlClientIDs)) {
+                                        proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
+                }
+                else {
+                    if (!proposedSettings && this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) {
+                                                return this._createPostBackSettings(false, null, null);
+                    }
+                }
+            }
+
+            element = element.parentNode;
+        }
+
+                                                if (!proposedSettings) {
+                        return this._createPostBackSettings(false, null, null);
+        }
+        else {
+            return proposedSettings;
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_getScrollPosition() {
+        var d = document.documentElement;
+        if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
+            return {
+                x: d.scrollLeft,
+                y: d.scrollTop
+            };
+        }
+        else {
+            d = document.body;
+            if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
+                return {
+                    x: d.scrollLeft,
+                    y: d.scrollTop
+                };
+            }
+            else {
+                if (this._validPosition(window.pageXOffset) || this._validPosition(window.pageYOffset)) {
+                    return {
+                        x: window.pageXOffset,
+                        y: window.pageYOffset
+                    };
+                }
+                else {
+                    return {
+                        x: 0,
+                        y: 0
+                    };
+                }
+            }
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_initializeInternal(scriptManagerID, formElement) {
+        this._scriptManagerID = scriptManagerID;
+
+        this._form = formElement;
+
+        
+                this._form._initialAction = this._form.action;
+
+        this._onsubmit = this._form.onsubmit;
+        this._form.onsubmit = null;
+        this._onFormSubmitHandler = Function.createDelegate(this, this._onFormSubmit);
+        this._onFormElementClickHandler = Function.createDelegate(this, this._onFormElementClick);
+        this._onWindowUnloadHandler = Function.createDelegate(this, this._onWindowUnload);
+        Sys.UI.DomEvent.addHandler(this._form, 'submit', this._onFormSubmitHandler);
+        Sys.UI.DomEvent.addHandler(this._form, 'click', this._onFormElementClickHandler);
+        Sys.UI.DomEvent.addHandler(window, 'unload', this._onWindowUnloadHandler);
+
+        this._originalDoPostBack = window.__doPostBack;
+                if (this._originalDoPostBack) {
+            window.__doPostBack = Function.createDelegate(this, this._doPostBack);
+        }
+
+        this._pageLoadedHandler = Function.createDelegate(this, this._pageLoadedInitialLoad);
+        Sys.UI.DomEvent.addHandler(window, 'load', this._pageLoadedHandler);
+    }
+
+    function Sys$WebForms$PageRequestManager$_matchesParentIDInList(clientID, parentIDList) {
+        for (var i = 0; i < parentIDList.length; i++) {
+            if (clientID.startsWith(parentIDList[i] + "_")) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    function Sys$WebForms$PageRequestManager$_onFormElementClick(evt) {
+        var element = evt.target;
+        if (element.disabled) {
+            return;
+        }
+
+                this._postBackSettings = this._getPostBackSettings(element, element.name);
+
+
+        if (element.name) {
+            if (element.tagName === 'INPUT') {
+                var type = element.type;
+                if (type === 'submit') {
+                    this._additionalInput = element.name + '=' + encodeURIComponent(element.value);
+                }
+                else if (type === 'image') {
+                    var x = evt.offsetX;
+                    var y = evt.offsetY;
+                    this._additionalInput = element.name + '.x=' + x + '&' + element.name + '.y=' + y;
+                }
+            }
+            else if ((element.tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
+                this._additionalInput = element.name + '=' + encodeURIComponent(element.value);
+            }
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_onFormSubmit(evt) {
+        var continueSubmit = true;
+
+                if (this._onsubmit) {
+            continueSubmit = this._onsubmit();
+        }
+
+                if (continueSubmit) {
+            for (var i = 0; i < this._onSubmitStatements.length; i++) {
+                if (!this._onSubmitStatements[i]()) {
+                    continueSubmit = false;
+                    break;
+                }
+            }
+        }
+
+        if (!continueSubmit) {
+            if (evt) {
+                evt.preventDefault();
+            }
+            return;
+        }
+
+        var form = this._form;
+        if (form.action !== form._initialAction) {
+                                    return;
+        }
+
+                        if (!this._postBackSettings.async) {
+            return;
+        }
+
+                var formBody = new Sys.StringBuilder();
+        formBody.append(this._scriptManagerID + '=' + this._postBackSettings.panelID + '&');
+
+        var count = form.elements.length;
+        for (var i = 0; i < count; i++) {
+            var element = form.elements[i];
+            var name = element.name;
+            if (typeof(name) === "undefined" || (name === null) || (name.length === 0)) {
+                continue;
+            }
+
+            var tagName = element.tagName;
+
+            if (tagName === 'INPUT') {
+                var type = element.type;
+                if ((type === 'text') ||
+                    (type === 'password') ||
+                    (type === 'hidden') ||
+                    (((type === 'checkbox') || (type === 'radio')) && element.checked)) {
+                    formBody.append(name);
+                    formBody.append('=');
+                    formBody.append(encodeURIComponent(element.value));
+                    formBody.append('&');
+                }
+            }
+            else if (tagName === 'SELECT') {
+                var optionCount = element.options.length;
+                for (var j = 0; j < optionCount; j++) {
+                    var option = element.options[j];
+                    if (option.selected) {
+                        formBody.append(name);
+                        formBody.append('=');
+                        formBody.append(encodeURIComponent(option.value));
+                        formBody.append('&');
+                    }
+                }
+            }
+            else if (tagName === 'TEXTAREA') {
+                formBody.append(name);
+                formBody.append('=');
+                formBody.append(encodeURIComponent(element.value));
+                formBody.append('&');
+            }
+        }
+
+        if (this._additionalInput) {
+            formBody.append(this._additionalInput);
+            this._additionalInput = null;
+        }
+
+        var request = new Sys.Net.WebRequest();
+        request.set_url(form.action);
+        request.get_headers()['X-MicrosoftAjax'] = 'Delta=true';
+        request.get_headers()['Cache-Control'] = 'no-cache';
+        request.set_timeout(this._asyncPostBackTimeout);
+        request.add_completed(Function.createDelegate(this, this._onFormSubmitCompleted));
+        request.set_body(formBody.toString());
+
+        var handler = this._get_eventHandlerList().getHandler("initializeRequest");
+        if (handler) {
+            var eventArgs = new Sys.WebForms.InitializeRequestEventArgs(request, this._postBackSettings.sourceElement);
+            handler(this, eventArgs);
+            continueSubmit = !eventArgs.get_cancel();
+        }
+
+        if (!continueSubmit) {
+            if (evt) {
+                evt.preventDefault();
+            }
+            return;
+        }
+
+                this._scrollPosition = this._getScrollPosition();
+
+
+                                this.abortPostBack();
+
+        handler = this._get_eventHandlerList().getHandler("beginRequest");
+        if (handler) {
+            var eventArgs = new Sys.WebForms.BeginRequestEventArgs(request, this._postBackSettings.sourceElement);
+            handler(this, eventArgs);
+        }
+
+        this._request = request;
+        request.invoke();
+
+                if (evt) {
+            evt.preventDefault();
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_onFormSubmitCompleted(sender, eventArgs) {
+        this._processingRequest = true;
+
+        var delimitByLengthDelimiter = '|';
+        
+        if (sender.get_timedOut()) {
+            this._endPostBack(this._createPageRequestManagerTimeoutError(), sender);
+            return;
+        }
+
+        if (sender.get_aborted()) {
+            this._endPostBack(null, sender);
+            return;
+        }
+
+                if (!this._request || sender.get_webRequest() !== this._request) {
+            return;
+        }
+
+        var errorMessage;
+        var delta = [];
+
+                if (sender.get_statusCode() !== 200) {
+            this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()), sender);
+            return;
+        }
+
+                        var reply = sender.get_responseData();
+        var delimiterIndex, len, type, id, content;
+        var replyIndex = 0;
+        var parserErrorDetails = null;
+
+        while (replyIndex < reply.length) {
+                        delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
+            if (delimiterIndex === -1) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            len = parseInt(reply.substring(replyIndex, delimiterIndex), 10);
+            if ((len % 1) !== 0) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            replyIndex = delimiterIndex + 1;
+
+                        delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
+            if (delimiterIndex === -1) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            type = reply.substring(replyIndex, delimiterIndex);
+            replyIndex = delimiterIndex + 1;
+
+                        delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
+            if (delimiterIndex === -1) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            id = reply.substring(replyIndex, delimiterIndex);
+            replyIndex = delimiterIndex + 1;
+
+                        if ((replyIndex + len) >= reply.length) {
+                parserErrorDetails = this._findText(reply, reply.length);
+                break;
+            }
+            content = this._decodeString(reply.substr(replyIndex, len));
+            replyIndex += len;
+
+                        if (reply.charAt(replyIndex) !== delimitByLengthDelimiter) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+
+            replyIndex++;
+
+            Array.add(delta, {type: type, id: id, content: content});
+        }
+
+                if (parserErrorDetails) {
+            this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails, parserErrorDetails)), sender);
+            return;
+        }
+
+
+        var updatePanelNodes = [];
+        var hiddenFieldNodes = [];
+        var arrayDeclarationNodes = [];
+        var scriptBlockNodes = [];
+        var expandoNodes = [];
+        var onSubmitNodes = [];
+        var dataItemNodes = [];
+        var dataItemJsonNodes = [];
+        var scriptDisposeNodes = [];
+        var asyncPostBackControlIDsNode, postBackControlIDsNode,
+            updatePanelIDsNode, asyncPostBackTimeoutNode,
+            childUpdatePanelIDsNode, panelsToRefreshNode, formActionNode;
+
+                for (var i = 0; i < delta.length; i++) {
+            var deltaNode = delta[i];
+            switch (deltaNode.type) {
+                case "updatePanel":
+                    Array.add(updatePanelNodes, deltaNode);
+                    break;
+                case "hiddenField":
+                    Array.add(hiddenFieldNodes, deltaNode);
+                    break;
+                case "arrayDeclaration":
+                    Array.add(arrayDeclarationNodes, deltaNode);
+                    break;
+                case "scriptBlock":
+                    Array.add(scriptBlockNodes, deltaNode);
+                    break;
+                case "expando":
+                    Array.add(expandoNodes, deltaNode);
+                    break;
+                case "onSubmit":
+                    Array.add(onSubmitNodes, deltaNode);
+                    break;
+                case "asyncPostBackControlIDs":
+                    asyncPostBackControlIDsNode = deltaNode;
+                    break;
+                case "postBackControlIDs":
+                    postBackControlIDsNode = deltaNode;
+                    break;
+                case "updatePanelIDs":
+                    updatePanelIDsNode = deltaNode;
+                    break;
+                case "asyncPostBackTimeout":
+                    asyncPostBackTimeoutNode = deltaNode;
+                    break;
+                case "childUpdatePanelIDs":
+                    childUpdatePanelIDsNode = deltaNode;
+                    break;
+                case "panelsToRefreshIDs":
+                    panelsToRefreshNode = deltaNode;
+                    break;
+                case "formAction":
+                    formActionNode = deltaNode;
+                    break;
+                case "dataItem":
+                    Array.add(dataItemNodes, deltaNode);
+                    break;
+                case "dataItemJson":
+                    Array.add(dataItemJsonNodes, deltaNode);
+                    break;
+                case "scriptDispose":
+                    Array.add(scriptDisposeNodes, deltaNode);
+                    break;
+                case "pageRedirect":
+                    window.location.href = deltaNode.content;
+                    return;
+                case "error":
+                                        this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id), deltaNode.content), sender);
+                    return;
+                case "pageTitle":
+                    document.title = deltaNode.content;
+                    break;
+                case "focus":
+                    this._controlIDToFocus = deltaNode.content;
+                    break;
+                default:
+                                        this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), sender);
+                    return;
+            }
+        }
+
+        var i;
+
+                if (asyncPostBackControlIDsNode && postBackControlIDsNode &&
+            updatePanelIDsNode && panelsToRefreshNode &&
+            asyncPostBackTimeoutNode && childUpdatePanelIDsNode) {
+
+            this._oldUpdatePanelIDs = this._updatePanelIDs;
+            var childUpdatePanelIDsString = childUpdatePanelIDsNode.content;
+            this._childUpdatePanelIDs = childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') : [];
+
+            var asyncPostBackControlIDsArray = this._splitNodeIntoArray(asyncPostBackControlIDsNode);
+            var postBackControlIDsArray = this._splitNodeIntoArray(postBackControlIDsNode);
+            var updatePanelIDsArray = this._splitNodeIntoArray(updatePanelIDsNode);
+            this._panelsToRefreshIDs = this._splitNodeIntoArray(panelsToRefreshNode);
+
+                                                for (i = 0; i < this._panelsToRefreshIDs.length; i++) {
+                var panelClientID = this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);
+                if (!document.getElementById(panelClientID)) {
+                    this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, panelClientID)), sender);
+                    return;
+                }
+            }
+
+            var asyncPostBackTimeout = asyncPostBackTimeoutNode.content;
+            this._updateControls(updatePanelIDsArray, asyncPostBackControlIDsArray, postBackControlIDsArray, asyncPostBackTimeout);
+        }
+
+                this._dataItems = {};
+        for (i = 0; i < dataItemNodes.length; i++) {
+            var dataItemNode = dataItemNodes[i];
+            this._dataItems[dataItemNode.id] = dataItemNode.content;
+        }
+        for (i = 0; i < dataItemJsonNodes.length; i++) {
+            var dataItemJsonNode = dataItemJsonNodes[i];
+            this._dataItems[dataItemJsonNode.id] = eval(dataItemJsonNode.content);
+        }
+
+
+        var handler = this._get_eventHandlerList().getHandler("pageLoading");
+        if (handler) {
+            handler(this, this._getPageLoadingEventArgs());
+        }
+
+
+                if (formActionNode) {
+            this._form.action = formActionNode.content;
+                                                this._form._initialAction = this._form.action;
+        }
+
+                                for (i = 0; i < updatePanelNodes.length; i++) {
+            var deltaUpdatePanel = updatePanelNodes[i];
+
+            var deltaPanelID = deltaUpdatePanel.id;
+            var deltaPanelRendering = deltaUpdatePanel.content;
+
+            var updatePanelElement = document.getElementById(deltaPanelID);
+
+            if (!updatePanelElement) {
+                this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, deltaPanelID)), sender);
+                return;
+            }
+
+            this._updatePanel(updatePanelElement, deltaPanelRendering);
+        }
+
+                                for (i = 0; i < scriptDisposeNodes.length; i++) {
+            var disposePanelId = scriptDisposeNodes[i].id;
+            var disposeScript = scriptDisposeNodes[i].content;
+            this._registerDisposeScript(disposePanelId, disposeScript);
+        }
+
+                for (i = 0; i < hiddenFieldNodes.length; i++) {
+            var id = hiddenFieldNodes[i].id;
+            var value = hiddenFieldNodes[i].content;
+
+            var hiddenFieldElement = document.getElementById(id);
+            if (!hiddenFieldElement) {
+                                hiddenFieldElement = document.createElement('input');
+                hiddenFieldElement.id = id;
+                hiddenFieldElement.name = id;
+                hiddenFieldElement.type = 'hidden';
+                this._form.appendChild(hiddenFieldElement);
+            }
+            hiddenFieldElement.value = value;
+        }
+
+                var arrayScript = '';
+        for (i = 0; i < arrayDeclarationNodes.length; i++) {
+            arrayScript += "Sys.WebForms.PageRequestManager._addArrayElement('" + arrayDeclarationNodes[i].id + "', " + arrayDeclarationNodes[i].content + ");\r\n";
+        }
+
+                var expandoScript = '';
+        for (i = 0; i < expandoNodes.length; i++) {
+            var propertyReference = expandoNodes[i].id;
+            var propertyValue = expandoNodes[i].content;
+            expandoScript += propertyReference + " = " + propertyValue + "\r\n";
+        }
+
+                        Sys._ScriptLoader.readLoadedScripts();
+
+                                Sys.Application.beginCreateComponents();
+
+        var scriptLoader = Sys._ScriptLoader.getInstance();
+
+                                        if (arrayScript.length) {
+            scriptLoader.queueScriptBlock(arrayScript);
+        }
+        if (expandoScript.length) {
+            scriptLoader.queueScriptBlock(expandoScript);
+        }
+
+        for (i = 0; i < scriptBlockNodes.length; i++) {
+            var scriptBlockType = scriptBlockNodes[i].id;
+            switch (scriptBlockType) {
+                case "ScriptContentNoTags":
+                                        scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
+                    break;
+                case "ScriptContentWithTags":
+                                        var scriptTagAttributes;
+                    eval("scriptTagAttributes = " + scriptBlockNodes[i].content);
+
+                                        if (scriptTagAttributes.src && Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
+                        continue;
+                    }
+
+                    scriptLoader.queueCustomScriptTag(scriptTagAttributes);
+                    break;
+                case "ScriptPath":
+                                        if (Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
+                        continue;
+                    }
+
+                                        scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
+                    break;
+            }
+        }
+
+                        var onSubmitStatementScript = '';
+        for (var i = 0; i < onSubmitNodes.length; i++) {
+            if (i === 0) {
+                onSubmitStatementScript = 'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n';
+            }
+
+            onSubmitStatementScript += onSubmitNodes[i].content + "\r\n";
+        }
+        if (onSubmitStatementScript.length) {
+            onSubmitStatementScript += "\r\nreturn true;\r\n});\r\n";
+            scriptLoader.queueScriptBlock(onSubmitStatementScript);
+        }
+
+                this._response = sender;
+
+                        scriptLoader.loadScripts(0, Function.createDelegate(this, this._scriptsLoadComplete), null, null);
+
+                    }
+
+    function Sys$WebForms$PageRequestManager$_onWindowUnload(evt) {
+        this.dispose();
+    }
+
+    function Sys$WebForms$PageRequestManager$_pageLoaded(initialLoad) {
+        var handler = this._get_eventHandlerList().getHandler("pageLoaded");
+        if (handler) {
+            handler(this, this._getPageLoadedEventArgs(initialLoad));
+        }
+        if (!initialLoad) {
+                                    Sys.Application.raiseLoad();
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad(evt) {
+        this._pageLoaded(true);
+    }
+
+    function Sys$WebForms$PageRequestManager$_registerDisposeScript(panelID, disposeScript) {
+        if (!this._scriptDisposes[panelID]) {
+            this._scriptDisposes[panelID] = [disposeScript];
+        }
+        else {
+            Array.add(this._scriptDisposes[panelID], disposeScript);
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_scriptsLoadComplete() {
+                        
+                                                if (window.__theFormPostData) {
+            window.__theFormPostData = "";
+        }
+        if (window.__theFormPostCollection) {
+            window.__theFormPostCollection = [];
+        }
+        if (window.WebForm_InitCallback) {
+            window.WebForm_InitCallback();
+        }
+
+                if (this._scrollPosition) {
+                        if (window.scrollTo) {
+                window.scrollTo(this._scrollPosition.x, this._scrollPosition.y);
+            }
+            this._scrollPosition = null;
+        }
+
+        Sys.Application.endCreateComponents();
+
+                this._pageLoaded(false);
+
+        this._endPostBack(null, this._response);
+        this._response = null;
+
+                if (this._controlIDToFocus) {
+            var focusTarget;
+            var oldContentEditableSetting;
+            if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
+                                                                                var targetControl = $get(this._controlIDToFocus);
+
+                var focusTarget = targetControl;
+                                if (targetControl && (!WebForm_CanFocus(targetControl))) {
+                    focusTarget = WebForm_FindFirstFocusableChild(targetControl);
+                }
+                                                if (focusTarget && (typeof(focusTarget.contentEditable) !== "undefined")) {
+                    oldContentEditableSetting = focusTarget.contentEditable;
+                    focusTarget.contentEditable = false;
+                }
+                else {
+                    focusTarget = null;
+                }
+            }
+            WebForm_AutoFocus(this._controlIDToFocus);
+            if (focusTarget) {
+                                focusTarget.contentEditable = oldContentEditableSetting;
+            }
+            this._controlIDToFocus = null;
+        }
+    }
+
+    function Sys$WebForms$PageRequestManager$_splitNodeIntoArray(node) {
+        var str = node.content;
+        var arr = str.length ? str.split(',') : [];
+        return arr;
+    }
+
+    function Sys$WebForms$PageRequestManager$_uniqueIDToClientID(uniqueID) {
+                return uniqueID.replace(/\$/g, '_');
+    }
+
+    function Sys$WebForms$PageRequestManager$_updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout) {
+        if (updatePanelIDs) {
+                                                this._updatePanelIDs = new Array(updatePanelIDs.length);
+            this._updatePanelClientIDs = new Array(updatePanelIDs.length);
+            this._updatePanelHasChildrenAsTriggers = new Array(updatePanelIDs.length);
+            for (var i = 0; i < updatePanelIDs.length; i++) {
+                var realPanelID = updatePanelIDs[i].substr(1);
+                var childrenAsTriggers = (updatePanelIDs[i].charAt(0) === 't');
+
+                                this._updatePanelHasChildrenAsTriggers[i] = childrenAsTriggers;
+                this._updatePanelIDs[i] = realPanelID;
+                this._updatePanelClientIDs[i] = this._uniqueIDToClientID(realPanelID);
+            }
+            this._asyncPostBackTimeout = asyncPostBackTimeout * 1000;
+        }
+        else {
+            this._updatePanelIDs = [];
+            this._updatePanelClientIDs = [];
+            this._updatePanelHasChildrenAsTriggers = [];
+            this._asyncPostBackTimeout = 0;
+        }
+
+        this._asyncPostBackControlIDs = [];
+        this._asyncPostBackControlClientIDs = [];
+        this._convertToClientIDs(asyncPostBackControlIDs, this._asyncPostBackControlIDs, this._asyncPostBackControlClientIDs);
+
+        this._postBackControlIDs = [];
+        this._postBackControlClientIDs = [];
+        this._convertToClientIDs(postBackControlIDs, this._postBackControlIDs, this._postBackControlClientIDs);
+    }
+
+    function Sys$WebForms$PageRequestManager$_updatePanel(updatePanelElement, rendering) {
+
+        for (var updatePanelID in this._scriptDisposes) {
+            if (this._elementContains(updatePanelElement, document.getElementById(updatePanelID))) {
+                                var disposeScripts = this._scriptDisposes[updatePanelID];
+                for (var i = 0; i < disposeScripts.length; i++) {
+                    eval(disposeScripts[i]);
+                }
+
+                                delete this._scriptDisposes[updatePanelID];
+            }
+        }
+
+        this._destroyTree(updatePanelElement);
+
+                updatePanelElement.innerHTML = rendering;
+    }
+
+    function Sys$WebForms$PageRequestManager$_validPosition(position) {
+        return (typeof(position) !== "undefined") && (position !== null) && (position !== 0);
+    }
+Sys.WebForms.PageRequestManager.prototype = {
+
+    _get_eventHandlerList: Sys$WebForms$PageRequestManager$_get_eventHandlerList,
+
+    get_isInAsyncPostBack: Sys$WebForms$PageRequestManager$get_isInAsyncPostBack,
+
+        add_beginRequest: Sys$WebForms$PageRequestManager$add_beginRequest,
+    remove_beginRequest: Sys$WebForms$PageRequestManager$remove_beginRequest,
+
+    add_endRequest: Sys$WebForms$PageRequestManager$add_endRequest,
+    remove_endRequest: Sys$WebForms$PageRequestManager$remove_endRequest,
+
+    add_initializeRequest: Sys$WebForms$PageRequestManager$add_initializeRequest,
+    remove_initializeRequest: Sys$WebForms$PageRequestManager$remove_initializeRequest,
+
+    add_pageLoaded: Sys$WebForms$PageRequestManager$add_pageLoaded,
+    remove_pageLoaded: Sys$WebForms$PageRequestManager$remove_pageLoaded,
+
+    add_pageLoading: Sys$WebForms$PageRequestManager$add_pageLoading,
+    remove_pageLoading: Sys$WebForms$PageRequestManager$remove_pageLoading,
+
+    abortPostBack: Sys$WebForms$PageRequestManager$abortPostBack,
+
+    _createPageRequestManagerTimeoutError: Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError,
+
+    _createPageRequestManagerServerError: Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError,
+
+    _createPageRequestManagerParserError: Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError,
+
+    _createPostBackSettings: Sys$WebForms$PageRequestManager$_createPostBackSettings,
+
+    _convertToClientIDs: Sys$WebForms$PageRequestManager$_convertToClientIDs,
+
+    _decodeString: Sys$WebForms$PageRequestManager$_decodeString,
+
+    _destroyTree: Sys$WebForms$PageRequestManager$_destroyTree,
+
+    dispose: Sys$WebForms$PageRequestManager$dispose,
+
+        _doPostBack: Sys$WebForms$PageRequestManager$_doPostBack,
+
+    _elementContains: Sys$WebForms$PageRequestManager$_elementContains,
+
+    _endPostBack: Sys$WebForms$PageRequestManager$_endPostBack,
+
+            _findNearestElement: Sys$WebForms$PageRequestManager$_findNearestElement,
+
+    _findText: Sys$WebForms$PageRequestManager$_findText,
+
+    _getPageLoadedEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs,
+
+    _getPageLoadingEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs,
+
+    _getPostBackSettings: Sys$WebForms$PageRequestManager$_getPostBackSettings,
+
+    _getScrollPosition: Sys$WebForms$PageRequestManager$_getScrollPosition,
+
+    _initializeInternal: Sys$WebForms$PageRequestManager$_initializeInternal,
+
+    _matchesParentIDInList: Sys$WebForms$PageRequestManager$_matchesParentIDInList,
+
+    _onFormElementClick: Sys$WebForms$PageRequestManager$_onFormElementClick,
+
+    _onFormSubmit: Sys$WebForms$PageRequestManager$_onFormSubmit,
+
+    _onFormSubmitCompleted: Sys$WebForms$PageRequestManager$_onFormSubmitCompleted,
+
+    _onWindowUnload: Sys$WebForms$PageRequestManager$_onWindowUnload,
+
+    _pageLoaded: Sys$WebForms$PageRequestManager$_pageLoaded,
+
+    _pageLoadedInitialLoad: Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad,
+
+    _registerDisposeScript: Sys$WebForms$PageRequestManager$_registerDisposeScript,
+
+    _scriptsLoadComplete: Sys$WebForms$PageRequestManager$_scriptsLoadComplete,
+
+    _splitNodeIntoArray: Sys$WebForms$PageRequestManager$_splitNodeIntoArray,
+
+    _uniqueIDToClientID: Sys$WebForms$PageRequestManager$_uniqueIDToClientID,
+
+    _updateControls: Sys$WebForms$PageRequestManager$_updateControls,
+
+    _updatePanel: Sys$WebForms$PageRequestManager$_updatePanel,
+
+    _validPosition: Sys$WebForms$PageRequestManager$_validPosition
+}
+
+Sys.WebForms.PageRequestManager.getInstance = function Sys$WebForms$PageRequestManager$getInstance() {
+    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return Sys.WebForms.PageRequestManager._instance || null;
+}
+
+Sys.WebForms.PageRequestManager._addArrayElement = function Sys$WebForms$PageRequestManager$_addArrayElement(arrayName, arrayValue) {
+    if (typeof(window[arrayName]) === "undefined") {
+                window[arrayName] = [ arrayValue ];
+    }
+    else {
+                Array.add(window[arrayName], arrayValue);
+    }
+}
+
+Sys.WebForms.PageRequestManager._initialize = function Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, formElement) {
+    if (Sys.WebForms.PageRequestManager.getInstance()) {
+        throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
+    }
+    Sys.WebForms.PageRequestManager._instance = new Sys.WebForms.PageRequestManager();
+    Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(scriptManagerID, formElement);
+}
+
+Sys.WebForms.PageRequestManager.registerClass('Sys.WebForms.PageRequestManager');
+Sys.UI._UpdateProgress = function Sys$UI$_UpdateProgress(element) {
+    Sys.UI._UpdateProgress.initializeBase(this,[element]);
+    this._displayAfter = 500;
+    this._dynamicLayout = true;
+    this._associatedUpdatePanelId = null;
+    this._beginRequestHandlerDelegate = null;
+    this._startDelegate = null;
+    this._endRequestHandlerDelegate = null;
+    this._pageRequestManager = null;
+    this._timerCookie = null;
+}
+
+    function Sys$UI$_UpdateProgress$get_displayAfter() {
+        /// <value type="Number"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._displayAfter;
+    }
+    function Sys$UI$_UpdateProgress$set_displayAfter(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+
+        this._displayAfter = value;
+    }
+    function Sys$UI$_UpdateProgress$get_dynamicLayout() {
+        /// <value type="Boolean"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dynamicLayout;
+    }
+    function Sys$UI$_UpdateProgress$set_dynamicLayout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+
+        this._dynamicLayout = value;
+    }
+    function Sys$UI$_UpdateProgress$get_associatedUpdatePanelId() {
+        /// <value type="String" mayBeNull="true"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._associatedUpdatePanelId;
+    }
+    function Sys$UI$_UpdateProgress$set_associatedUpdatePanelId(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
+        if (e) throw e;
+
+        this._associatedUpdatePanelId = value;
+    }
+    function Sys$UI$_UpdateProgress$_handleBeginRequest(sender, arg) {
+        var curElem = arg.get_postBackElement();
+        var showProgress = !this._associatedUpdatePanelId; 
+        while (!showProgress && curElem) {
+            if (curElem.id && this._associatedUpdatePanelId === curElem.id) {
+                showProgress = true; 
+            }
+            curElem = curElem.parentNode; 
+        } 
+        if (showProgress) {
+            this._timerCookie = window.setTimeout(this._startDelegate, this._displayAfter);
+        }
+    }
+    function Sys$UI$_UpdateProgress$_startRequest() {
+        if (this._pageRequestManager.get_isInAsyncPostBack()) {
+            if (this._dynamicLayout) this.get_element().style.display = 'block';
+            else this.get_element().style.visibility = 'visible';
+        }
+        this._timerCookie = null;
+    }
+    function Sys$UI$_UpdateProgress$_handleEndRequest(sender, arg) {
+        if (this._dynamicLayout) this.get_element().style.display = 'none';
+        else this.get_element().style.visibility = 'hidden';
+        if (this._timerCookie) {
+            window.clearTimeout(this._timerCookie);
+            this._timerCookie = null;
+        }
+    }
+    function Sys$UI$_UpdateProgress$dispose() {
+       if (this._pageRequestManager !== null) {
+           this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);
+           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
+       }
+       Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
+    }
+    function Sys$UI$_UpdateProgress$initialize() {
+        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
+    	this._beginRequestHandlerDelegate = Function.createDelegate(this, this._handleBeginRequest);
+    	this._endRequestHandlerDelegate = Function.createDelegate(this, this._handleEndRequest);
+    	this._startDelegate = Function.createDelegate(this, this._startRequest);
+    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
+           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
+    	}
+    	if (this._pageRequestManager !== null ) {
+               	    this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
+    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
+    	}
+    }
+Sys.UI._UpdateProgress.prototype = {
+    get_displayAfter: Sys$UI$_UpdateProgress$get_displayAfter,
+    set_displayAfter: Sys$UI$_UpdateProgress$set_displayAfter,
+    get_dynamicLayout: Sys$UI$_UpdateProgress$get_dynamicLayout,
+    set_dynamicLayout: Sys$UI$_UpdateProgress$set_dynamicLayout,
+    get_associatedUpdatePanelId: Sys$UI$_UpdateProgress$get_associatedUpdatePanelId,
+    set_associatedUpdatePanelId: Sys$UI$_UpdateProgress$set_associatedUpdatePanelId,
+    _handleBeginRequest: Sys$UI$_UpdateProgress$_handleBeginRequest,
+    _startRequest: Sys$UI$_UpdateProgress$_startRequest,
+    _handleEndRequest: Sys$UI$_UpdateProgress$_handleEndRequest,
+    dispose: Sys$UI$_UpdateProgress$dispose,
+    initialize: Sys$UI$_UpdateProgress$initialize
+}
+Sys.UI._UpdateProgress.registerClass('Sys.UI._UpdateProgress', Sys.UI.Control);
+
+Sys.WebForms.Res={
+'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
+'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
+'PRM_ParserError':'The message received from the server could not be parsed.',
+'PRM_TimeoutError':'The server request timed out.',
+'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.',
+'PRM_UnknownToken':'Unknown token: \'{0}\'.',
+'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
+'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
+'PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}',
+'PRM_TimeoutError':'The server request timed out.',
+'PRM_ParserErrorDetails':'Error parsing near \'{0}\'.',
+'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'
+};
+
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.js
@@ -1,7 +1,7 @@
-﻿//----------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//----------------------------------------------------------
-// MicrosoftAjaxWebForms.js
-Type.registerNamespace("Sys.WebForms");Sys.WebForms.BeginRequestEventArgs=function(b,a){Sys.WebForms.BeginRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.BeginRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.BeginRequestEventArgs.registerClass("Sys.WebForms.BeginRequestEventArgs",Sys.EventArgs);Sys.WebForms.EndRequestEventArgs=function(c,a,b){Sys.WebForms.EndRequestEventArgs.initializeBase(this);this._errorHandled=false;this._error=c;this._dataItems=a||new Object;this._response=b};Sys.WebForms.EndRequestEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_error:function(){return this._error},get_errorHandled:function(){return this._errorHandled},set_errorHandled:function(a){this._errorHandled=a},get_response:function(){return this._response}};Sys.WebForms.EndRequestEventArgs.registerClass("Sys.WebForms.EndRequestEventArgs",Sys.EventArgs);Sys.WebForms.InitializeRequestEventArgs=function(b,a){Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.InitializeRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.InitializeRequestEventArgs.registerClass("Sys.WebForms.InitializeRequestEventArgs",Sys.CancelEventArgs);Sys.WebForms.PageLoadedEventArgs=function(b,a,c){Sys.WebForms.PageLoadedEventArgs.initializeBase(this);this._panelsUpdated=b;this._panelsCreated=a;this._dataItems=c||new Object};Sys.WebForms.PageLoadedEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsCreated:function(){return this._panelsCreated},get_panelsUpdated:function(){return this._panelsUpdated}};Sys.WebForms.PageLoadedEventArgs.registerClass("Sys.WebForms.PageLoadedEventArgs",Sys.EventArgs);Sys.WebForms.PageLoadingEventArgs=function(b,a,c){Sys.WebForms.PageLoadingEventArgs.initializeBase(this);this._panelsUpdating=b;this._panelsDeleting=a;this._dataItems=c||new Object};Sys.WebForms.PageLoadingEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsDeleting:function(){return this._panelsDeleting},get_panelsUpdating:function(){return this._panelsUpdating}};Sys.WebForms.PageLoadingEventArgs.registerClass("Sys.WebForms.PageLoadingEventArgs",Sys.EventArgs);Sys.WebForms.PageRequestManager=function(){this._form=null;this._updatePanelIDs=null;this._updatePanelClientIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._panelsToRefreshIDs=null;this._updatePanelHasChildrenAsTriggers=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._scriptManagerID=null;this._pageLoadedHandler=null;this._additionalInput=null;this._onsubmit=null;this._onSubmitStatements=[];this._originalDoPostBack=null;this._postBackSettings=null;this._request=null;this._onFormSubmitHandler=null;this._onFormElementClickHandler=null;this._onWindowUnloadHandler=null;this._asyncPostBackTimeout=null;this._controlIDToFocus=null;this._scrollPosition=null;this._dataItems=null;this._response=null;this._processingRequest=false;this._scriptDisposes={}};Sys.WebForms.PageRequestManager.prototype={_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_isInAsyncPostBack:function(){return this._request!==null},add_beginRequest:function(a){this._get_eventHandlerList().addHandler("beginRequest",a)},remove_beginRequest:function(a){this._get_eventHandlerList().removeHandler("beginRequest",a)},add_endRequest:function(a){this._get_eventHandlerList().addHandler("endRequest",a)},remove_endRequest:function(a){this._get_eventHandlerList().removeHandler("endRequest",a)},add_initializeRequest:function(a){this._get_eventHandlerList().addHandler("initializeRequest",a)},remove_initializeRequest:function(a){this._get_eventHandlerList().removeHandler("initializeRequest",a)},add_pageLoaded:function(a){this._get_eventHandlerList().addHandler("pageLoaded",a)},remove_pageLoaded:function(a){this._get_eventHandlerList().removeHandler("pageLoaded",a)},add_pageLoading:function(a){this._get_eventHandlerList().addHandler("pageLoading",a)},remove_pageLoading:function(a){this._get_eventHandlerList().removeHandler("pageLoading",a)},abortPostBack:function(){if(!this._processingRequest&&this._request){this._request.get_executor().abort();this._request=null}},_createPageRequestManagerTimeoutError:function(){var b="Sys.WebForms.PageRequestManagerTimeoutException: "+Sys.WebForms.Res.PRM_TimeoutError,a=Error.create(b,{name:"Sys.WebForms.PageRequestManagerTimeoutException"});a.popStackFrame();return a},_createPageRequestManagerServerError:function(a,d){var c=d||"Sys.WebForms.PageRequestManagerServerErrorException: "+String.format(Sys.WebForms.Res.PRM_ServerError,a),b=Error.create(c,{name:"Sys.WebForms.PageRequestManagerServerErrorException",httpStatusCode:a});b.popStackFrame();return b},_createPageRequestManagerParserError:function(b){var c="Sys.WebForms.PageRequestManagerParserErrorException: "+String.format(Sys.WebForms.Res.PRM_ParserError,b),a=Error.create(c,{name:"Sys.WebForms.PageRequestManagerParserErrorException"});a.popStackFrame();return a},_createPostBackSettings:function(c,b,a){return {async:c,panelID:b,sourceElement:a}},_convertToClientIDs:function(a,d,c){if(a)for(var b=0;b<a.length;b++){Array.add(d,a[b]);Array.add(c,this._uniqueIDToClientID(a[b]))}},_decodeString:function(a){return a.replace(/\\\u00FF\\/g,"\x00").replace(/\u00FF\u00FF/g,"\u00FF")},_destroyTree:function(f){if(f.nodeType===1){var d=f.childNodes;for(var b=d.length-1;b>=0;b--){var a=d[b];if(a.nodeType===1){if(a.dispose&&typeof a.dispose==="function")a.dispose();else if(a.control&&typeof a.control.dispose==="function")a.control.dispose();var e=Sys.UI.Behavior.getBehaviors(a);for(var c=e.length-1;c>=0;c--)e[c].dispose();this._destroyTree(a)}}}},dispose:function(){if(this._form){Sys.UI.DomEvent.removeHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.removeHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.removeHandler(window,"unload",this._onWindowUnloadHandler);Sys.UI.DomEvent.removeHandler(window,"load",this._pageLoadedHandler)}if(this._originalDoPostBack){window.__doPostBack=this._originalDoPostBack;this._originalDoPostBack=null}this._form=null;this._updatePanelIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._updatePanelClientIDs=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._asyncPostBackTimeout=null;this._scrollPosition=null;this._dataItems=null},_doPostBack:function(a,e){this._additionalInput=null;var b=this._form;if(b.action!==b._initialAction)this._postBackSettings=this._createPostBackSettings(false,null,null);else{var f=this._uniqueIDToClientID(a),d=document.getElementById(f);if(!d)if(Array.contains(this._asyncPostBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(true,this._scriptManagerID+"|"+a,null);else if(Array.contains(this._postBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(false,null,null);else{var c=this._findNearestElement(a);if(c)this._postBackSettings=this._getPostBackSettings(c,a);else this._postBackSettings=this._createPostBackSettings(false,null,null)}else this._postBackSettings=this._getPostBackSettings(d,a)}if(!this._postBackSettings.async){b.onsubmit=this._onsubmit;this._originalDoPostBack(a,e);b.onsubmit=null;return}b.__EVENTTARGET.value=a;b.__EVENTARGUMENT.value=e;this._onFormSubmit()},_elementContains:function(b,a){while(a){if(a===b)return true;a=a.parentNode}return false},_endPostBack:function(a,e){this._processingRequest=false;this._request=null;this._additionalInput=null;var d=this._get_eventHandlerList().getHandler("endRequest"),b=false;if(d){var c=new Sys.WebForms.EndRequestEventArgs(a,this._dataItems,e);d(this,c);b=c.get_errorHandled()}this._dataItems=null;if(a&&!b)alert(a.message)},_findNearestElement:function(a){while(a.length>0){var d=this._uniqueIDToClientID(a),c=document.getElementById(d);if(c)return c;var b=a.lastIndexOf("$");if(b===-1)return null;a=a.substring(0,b)}return null},_findText:function(b,a){var c=Math.max(0,a-20),d=Math.min(b.length,a+20);return b.substring(c,d)},_getPageLoadedEventArgs:function(f){var e=[],d=[],h=this._oldUpdatePanelIDs||[],b=this._updatePanelIDs,g=this._childUpdatePanelIDs||[],c=this._panelsToRefreshIDs||[];for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(f||Array.indexOf(g,b[a])!==-1)Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadedEventArgs(e,d,this._dataItems)},_getPageLoadingEventArgs:function(){var e=[],d=[],b=this._oldUpdatePanelIDs,g=this._updatePanelIDs,f=this._childUpdatePanelIDs,c=this._panelsToRefreshIDs;for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(Array.indexOf(c,b[a])===-1&&(Array.indexOf(g,b[a])===-1||Array.indexOf(f,b[a])>-1))Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadingEventArgs(e,d,this._dataItems)},_getPostBackSettings:function(a,c){var d=a,b=null;while(a){if(a.id){if(!b&&Array.contains(this._asyncPostBackControlClientIDs,a.id))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&Array.contains(this._postBackControlClientIDs,a.id))return this._createPostBackSettings(false,null,null);else{var e=Array.indexOf(this._updatePanelClientIDs,a.id);if(e!==-1)if(this._updatePanelHasChildrenAsTriggers[e])return this._createPostBackSettings(true,this._updatePanelIDs[e]+"|"+c,d);else return this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d)}if(!b&&this._matchesParentIDInList(a.id,this._asyncPostBackControlClientIDs))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&this._matchesParentIDInList(a.id,this._postBackControlClientIDs))return this._createPostBackSettings(false,null,null)}a=a.parentNode}if(!b)return this._createPostBackSettings(false,null,null);else return b},_getScrollPosition:function(){var a=document.documentElement;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else{a=document.body;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else if(this._validPosition(window.pageXOffset)||this._validPosition(window.pageYOffset))return {x:window.pageXOffset,y:window.pageYOffset};else return {x:0,y:0}}},_initializeInternal:function(a,b){this._scriptManagerID=a;this._form=b;this._form._initialAction=this._form.action;this._onsubmit=this._form.onsubmit;this._form.onsubmit=null;this._onFormSubmitHandler=Function.createDelegate(this,this._onFormSubmit);this._onFormElementClickHandler=Function.createDelegate(this,this._onFormElementClick);this._onWindowUnloadHandler=Function.createDelegate(this,this._onWindowUnload);Sys.UI.DomEvent.addHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.addHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUnloadHandler);this._originalDoPostBack=window.__doPostBack;if(this._originalDoPostBack)window.__doPostBack=Function.createDelegate(this,this._doPostBack);this._pageLoadedHandler=Function.createDelegate(this,this._pageLoadedInitialLoad);Sys.UI.DomEvent.addHandler(window,"load",this._pageLoadedHandler)},_matchesParentIDInList:function(c,b){for(var a=0;a<b.length;a++)if(c.startsWith(b[a]+"_"))return true;return false},_onFormElementClick:function(b){var a=b.target;if(a.disabled)return;this._postBackSettings=this._getPostBackSettings(a,a.name);if(a.name)if(a.tagName==="INPUT"){var c=a.type;if(c==="submit")this._additionalInput=a.name+"="+encodeURIComponent(a.value);else if(c==="image"){var d=b.offsetX,e=b.offsetY;this._additionalInput=a.name+".x="+d+"&"+a.name+".y="+e}}else if(a.tagName==="BUTTON"&&a.name.length!==0&&a.type==="submit")this._additionalInput=a.name+"="+encodeURIComponent(a.value)},_onFormSubmit:function(f){var d=true;if(this._onsubmit)d=this._onsubmit();if(d)for(var g=0;g<this._onSubmitStatements.length;g++)if(!this._onSubmitStatements[g]()){d=false;break}if(!d){if(f)f.preventDefault();return}var i=this._form;if(i.action!==i._initialAction)return;if(!this._postBackSettings.async)return;var a=new Sys.StringBuilder;a.append(this._scriptManagerID+"="+this._postBackSettings.panelID+"&");var p=i.elements.length;for(var g=0;g<p;g++){var c=i.elements[g],e=c.name;if(typeof e==="undefined"||e===null||e.length===0)continue;var l=c.tagName;if(l==="INPUT"){var j=c.type;if(j==="text"||j==="password"||j==="hidden"||(j==="checkbox"||j==="radio")&&c.checked){a.append(e);a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}else if(l==="SELECT"){var o=c.options.length;for(var m=0;m<o;m++){var n=c.options[m];if(n.selected){a.append(e);a.append("=");a.append(encodeURIComponent(n.value));a.append("&")}}}else if(l==="TEXTAREA"){a.append(e);a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}if(this._additionalInput){a.append(this._additionalInput);this._additionalInput=null}var b=new Sys.Net.WebRequest;b.set_url(i.action);b.get_headers()["X-MicrosoftAjax"]="Delta=true";b.get_headers()["Cache-Control"]="no-cache";b.set_timeout(this._asyncPostBackTimeout);b.add_completed(Function.createDelegate(this,this._onFormSubmitCompleted));b.set_body(a.toString());var h=this._get_eventHandlerList().getHandler("initializeRequest");if(h){var k=new Sys.WebForms.InitializeRequestEventArgs(b,this._postBackSettings.sourceElement);h(this,k);d=!k.get_cancel()}if(!d){if(f)f.preventDefault();return}this._scrollPosition=this._getScrollPosition();this.abortPostBack();h=this._get_eventHandlerList().getHandler("beginRequest");if(h){var k=new Sys.WebForms.BeginRequestEventArgs(b,this._postBackSettings.sourceElement);h(this,k)}this._request=b;b.invoke();if(f)f.preventDefault()},_onFormSubmitCompleted:function(sender,eventArgs){this._processingRequest=true;var delimitByLengthDelimiter="|";if(sender.get_timedOut()){this._endPostBack(this._createPageRequestManagerTimeoutError(),sender);return}if(sender.get_aborted()){this._endPostBack(null,sender);return}if(!this._request||sender.get_webRequest()!==this._request)return;var errorMessage,delta=[];if(sender.get_statusCode()!==200){this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()),sender);return}var reply=sender.get_responseData(),delimiterIndex,len,type,id,content,replyIndex=0,parserErrorDetails=null;while(replyIndex<reply.length){delimiterIndex=reply.indexOf(delimitByLengthDelimiter,replyIndex);if(delimiterIndex===-1){parserErrorDetails=this._findText(reply,replyIndex);break}len=parseInt(reply.substring(replyIndex,delimiterIndex),10);if(len%1!==0){parserErrorDetails=this._findText(reply,replyIndex);break}replyIndex=delimiterIndex+1;delimiterIndex=reply.indexOf(delimitByLengthDelimiter,replyIndex);if(delimiterIndex===-1){parserErrorDetails=this._findText(reply,replyIndex);break}type=reply.substring(replyIndex,delimiterIndex);replyIndex=delimiterIndex+1;delimiterIndex=reply.indexOf(delimitByLengthDelimiter,replyIndex);if(delimiterIndex===-1){parserErrorDetails=this._findText(reply,replyIndex);break}id=reply.substring(replyIndex,delimiterIndex);replyIndex=delimiterIndex+1;if(replyIndex+len>=reply.length){parserErrorDetails=this._findText(reply,reply.length);break}content=this._decodeString(reply.substr(replyIndex,len));replyIndex+=len;if(reply.charAt(replyIndex)!==delimitByLengthDelimiter){parserErrorDetails=this._findText(reply,replyIndex);break}replyIndex++;Array.add(delta,{type:type,id:id,content:content})}if(parserErrorDetails){this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,parserErrorDetails)),sender);return}var updatePanelNodes=[],hiddenFieldNodes=[],arrayDeclarationNodes=[],scriptBlockNodes=[],expandoNodes=[],onSubmitNodes=[],dataItemNodes=[],dataItemJsonNodes=[],scriptDisposeNodes=[],asyncPostBackControlIDsNode,postBackControlIDsNode,updatePanelIDsNode,asyncPostBackTimeoutNode,childUpdatePanelIDsNode,panelsToRefreshNode,formActionNode;for(var i=0;i<delta.length;i++){var deltaNode=delta[i];switch(deltaNode.type){case "updatePanel":Array.add(updatePanelNodes,deltaNode);break;case "hiddenField":Array.add(hiddenFieldNodes,deltaNode);break;case "arrayDeclaration":Array.add(arrayDeclarationNodes,deltaNode);break;case "scriptBlock":Array.add(scriptBlockNodes,deltaNode);break;case "expando":Array.add(expandoNodes,deltaNode);break;case "onSubmit":Array.add(onSubmitNodes,deltaNode);break;case "asyncPostBackControlIDs":asyncPostBackControlIDsNode=deltaNode;break;case "postBackControlIDs":postBackControlIDsNode=deltaNode;break;case "updatePanelIDs":updatePanelIDsNode=deltaNode;break;case "asyncPostBackTimeout":asyncPostBackTimeoutNode=deltaNode;break;case "childUpdatePanelIDs":childUpdatePanelIDsNode=deltaNode;break;case "panelsToRefreshIDs":panelsToRefreshNode=deltaNode;break;case "formAction":formActionNode=deltaNode;break;case "dataItem":Array.add(dataItemNodes,deltaNode);break;case "dataItemJson":Array.add(dataItemJsonNodes,deltaNode);break;case "scriptDispose":Array.add(scriptDisposeNodes,deltaNode);break;case "pageRedirect":window.location.href=deltaNode.content;return;case "error":this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id),deltaNode.content),sender);return;case "pageTitle":document.title=deltaNode.content;break;case "focus":this._controlIDToFocus=deltaNode.content;break;default:this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken,deltaNode.type)),sender);return}}var i;if(asyncPostBackControlIDsNode&&postBackControlIDsNode&&updatePanelIDsNode&&panelsToRefreshNode&&asyncPostBackTimeoutNode&&childUpdatePanelIDsNode){this._oldUpdatePanelIDs=this._updatePanelIDs;var childUpdatePanelIDsString=childUpdatePanelIDsNode.content;this._childUpdatePanelIDs=childUpdatePanelIDsString.length?childUpdatePanelIDsString.split(","):[];var asyncPostBackControlIDsArray=this._splitNodeIntoArray(asyncPostBackControlIDsNode),postBackControlIDsArray=this._splitNodeIntoArray(postBackControlIDsNode),updatePanelIDsArray=this._splitNodeIntoArray(updatePanelIDsNode);this._panelsToRefreshIDs=this._splitNodeIntoArray(panelsToRefreshNode);for(i=0;i<this._panelsToRefreshIDs.length;i++){var panelClientID=this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);if(!document.getElementById(panelClientID)){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,panelClientID)),sender);return}}var asyncPostBackTimeout=asyncPostBackTimeoutNode.content;this._updateControls(updatePanelIDsArray,asyncPostBackControlIDsArray,postBackControlIDsArray,asyncPostBackTimeout)}this._dataItems={};for(i=0;i<dataItemNodes.length;i++){var dataItemNode=dataItemNodes[i];this._dataItems[dataItemNode.id]=dataItemNode.content}for(i=0;i<dataItemJsonNodes.length;i++){var dataItemJsonNode=dataItemJsonNodes[i];this._dataItems[dataItemJsonNode.id]=eval(dataItemJsonNode.content)}var handler=this._get_eventHandlerList().getHandler("pageLoading");if(handler)handler(this,this._getPageLoadingEventArgs());if(formActionNode){this._form.action=formActionNode.content;this._form._initialAction=this._form.action}for(i=0;i<updatePanelNodes.length;i++){var deltaUpdatePanel=updatePanelNodes[i],deltaPanelID=deltaUpdatePanel.id,deltaPanelRendering=deltaUpdatePanel.content,updatePanelElement=document.getElementById(deltaPanelID);if(!updatePanelElement){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,deltaPanelID)),sender);return}this._updatePanel(updatePanelElement,deltaPanelRendering)}for(i=0;i<scriptDisposeNodes.length;i++){var disposePanelId=scriptDisposeNodes[i].id,disposeScript=scriptDisposeNodes[i].content;this._registerDisposeScript(disposePanelId,disposeScript)}for(i=0;i<hiddenFieldNodes.length;i++){var id=hiddenFieldNodes[i].id,value=hiddenFieldNodes[i].content,hiddenFieldElement=document.getElementById(id);if(!hiddenFieldElement){hiddenFieldElement=document.createElement("input");hiddenFieldElement.id=id;hiddenFieldElement.name=id;hiddenFieldElement.type="hidden";this._form.appendChild(hiddenFieldElement)}hiddenFieldElement.value=value}var arrayScript="";for(i=0;i<arrayDeclarationNodes.length;i++)arrayScript+="Sys.WebForms.PageRequestManager._addArrayElement('"+arrayDeclarationNodes[i].id+"', "+arrayDeclarationNodes[i].content+");\r\n";var expandoScript="";for(i=0;i<expandoNodes.length;i++){var propertyReference=expandoNodes[i].id,propertyValue=expandoNodes[i].content;expandoScript+=propertyReference+" = "+propertyValue+"\r\n"}Sys._ScriptLoader.readLoadedScripts();Sys.Application.beginCreateComponents();var scriptLoader=Sys._ScriptLoader.getInstance();if(arrayScript.length)scriptLoader.queueScriptBlock(arrayScript);if(expandoScript.length)scriptLoader.queueScriptBlock(expandoScript);for(i=0;i<scriptBlockNodes.length;i++){var scriptBlockType=scriptBlockNodes[i].id;switch(scriptBlockType){case "ScriptContentNoTags":scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);break;case "ScriptContentWithTags":var scriptTagAttributes;eval("scriptTagAttributes = "+scriptBlockNodes[i].content);if(scriptTagAttributes.src&&Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src))continue;scriptLoader.queueCustomScriptTag(scriptTagAttributes);break;case "ScriptPath":if(Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content))continue;scriptLoader.queueScriptReference(scriptBlockNodes[i].content);break}}var onSubmitStatementScript="";for(var i=0;i<onSubmitNodes.length;i++){if(i===0)onSubmitStatementScript="Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n";onSubmitStatementScript+=onSubmitNodes[i].content+"\r\n"}if(onSubmitStatementScript.length){onSubmitStatementScript+="\r\nreturn true;\r\n});\r\n";scriptLoader.queueScriptBlock(onSubmitStatementScript)}this._response=sender;scriptLoader.loadScripts(0,Function.createDelegate(this,this._scriptsLoadComplete),null,null)},_onWindowUnload:function(){this.dispose()},_pageLoaded:function(a){var b=this._get_eventHandlerList().getHandler("pageLoaded");if(b)b(this,this._getPageLoadedEventArgs(a));if(!a)Sys.Application.raiseLoad()},_pageLoadedInitialLoad:function(){this._pageLoaded(true)},_registerDisposeScript:function(a,b){if(!this._scriptDisposes[a])this._scriptDisposes[a]=[b];else Array.add(this._scriptDisposes[a],b)},_scriptsLoadComplete:function(){if(window.__theFormPostData)window.__theFormPostData="";if(window.__theFormPostCollection)window.__theFormPostCollection=[];if(window.WebForm_InitCallback)window.WebForm_InitCallback();if(this._scrollPosition){if(window.scrollTo)window.scrollTo(this._scrollPosition.x,this._scrollPosition.y);this._scrollPosition=null}Sys.Application.endCreateComponents();this._pageLoaded(false);this._endPostBack(null,this._response);this._response=null;if(this._controlIDToFocus){var a,c;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var b=$get(this._controlIDToFocus),a=b;if(b&&!WebForm_CanFocus(b))a=WebForm_FindFirstFocusableChild(b);if(a&&typeof a.contentEditable!=="undefined"){c=a.contentEditable;a.contentEditable=false}else a=null}WebForm_AutoFocus(this._controlIDToFocus);if(a)a.contentEditable=c;this._controlIDToFocus=null}},_splitNodeIntoArray:function(b){var a=b.content,c=a.length?a.split(","):[];return c},_uniqueIDToClientID:function(a){return a.replace(/\$/g,"_")},_updateControls:function(a,d,g,e){if(a){this._updatePanelIDs=new Array(a.length);this._updatePanelClientIDs=new Array(a.length);this._updatePanelHasChildrenAsTriggers=new Array(a.length);for(var b=0;b<a.length;b++){var c=a[b].substr(1),f=a[b].charAt(0)==="t";this._updatePanelHasChildrenAsTriggers[b]=f;this._updatePanelIDs[b]=c;this._updatePanelClientIDs[b]=this._uniqueIDToClientID(c)}this._asyncPostBackTimeout=e*1000}else{this._updatePanelIDs=[];this._updatePanelClientIDs=[];this._updatePanelHasChildrenAsTriggers=[];this._asyncPostBackTimeout=0}this._asyncPostBackControlIDs=[];this._asyncPostBackControlClientIDs=[];this._convertToClientIDs(d,this._asyncPostBackControlIDs,this._asyncPostBackControlClientIDs);this._postBackControlIDs=[];this._postBackControlClientIDs=[];this._convertToClientIDs(g,this._postBackControlIDs,this._postBackControlClientIDs)},_updatePanel:function(updatePanelElement,rendering){for(var updatePanelID in this._scriptDisposes)if(this._elementContains(updatePanelElement,document.getElementById(updatePanelID))){var disposeScripts=this._scriptDisposes[updatePanelID];for(var i=0;i<disposeScripts.length;i++)eval(disposeScripts[i]);delete this._scriptDisposes[updatePanelID]}this._destroyTree(updatePanelElement);updatePanelElement.innerHTML=rendering},_validPosition:function(a){return typeof a!=="undefined"&&a!==null&&a!==0}};Sys.WebForms.PageRequestManager.getInstance=function(){return Sys.WebForms.PageRequestManager._instance||null};Sys.WebForms.PageRequestManager._addArrayElement=function(a,b){if(typeof window[a]==="undefined")window[a]=[b];else Array.add(window[a],b)};Sys.WebForms.PageRequestManager._initialize=function(a,b){if(Sys.WebForms.PageRequestManager.getInstance())throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);Sys.WebForms.PageRequestManager._instance=new Sys.WebForms.PageRequestManager;Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(a,b)};Sys.WebForms.PageRequestManager.registerClass("Sys.WebForms.PageRequestManager");Sys.UI._UpdateProgress=function(a){Sys.UI._UpdateProgress.initializeBase(this,[a]);this._displayAfter=500;this._dynamicLayout=true;this._associatedUpdatePanelId=null;this._beginRequestHandlerDelegate=null;this._startDelegate=null;this._endRequestHandlerDelegate=null;this._pageRequestManager=null;this._timerCookie=null};Sys.UI._UpdateProgress.prototype={get_displayAfter:function(){return this._displayAfter},set_displayAfter:function(a){this._displayAfter=a},get_dynamicLayout:function(){return this._dynamicLayout},set_dynamicLayout:function(a){this._dynamicLayout=a},get_associatedUpdatePanelId:function(){return this._associatedUpdatePanelId},set_associatedUpdatePanelId:function(a){this._associatedUpdatePanelId=a},_handleBeginRequest:function(d,c){var a=c.get_postBackElement(),b=!this._associatedUpdatePanelId;while(!b&&a){if(a.id&&this._associatedUpdatePanelId===a.id)b=true;a=a.parentNode}if(b)this._timerCookie=window.setTimeout(this._startDelegate,this._displayAfter)},_startRequest:function(){if(this._pageRequestManager.get_isInAsyncPostBack())if(this._dynamicLayout)this.get_element().style.display="block";else this.get_element().style.visibility="visible";this._timerCookie=null},_handleEndRequest:function(){if(this._dynamicLayout)this.get_element().style.display="none";else this.get_element().style.visibility="hidden";if(this._timerCookie){window.clearTimeout(this._timerCookie);this._timerCookie=null}},dispose:function(){if(this._pageRequestManager!==null){this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate)}Sys.UI._UpdateProgress.callBaseMethod(this,"dispose")},initialize:function(){Sys.UI._UpdateProgress.callBaseMethod(this,"initialize");this._beginRequestHandlerDelegate=Function.createDelegate(this,this._handleBeginRequest);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);this._startDelegate=Function.createDelegate(this,this._startRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null){this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate)}}};Sys.UI._UpdateProgress.registerClass("Sys.UI._UpdateProgress",Sys.UI.Control)
-Sys.WebForms.Res={'PRM_UnknownToken':'Unknown token: \'{0}\'.','PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.','PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}','PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}','PRM_TimeoutError':'The server request timed out.','PRM_ParserErrorDetails':'Error parsing near \'{0}\'.','PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'};
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//----------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//----------------------------------------------------------
+// MicrosoftAjaxWebForms.js
+Type.registerNamespace("Sys.WebForms");Sys.WebForms.BeginRequestEventArgs=function(b,a){Sys.WebForms.BeginRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.BeginRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.BeginRequestEventArgs.registerClass("Sys.WebForms.BeginRequestEventArgs",Sys.EventArgs);Sys.WebForms.EndRequestEventArgs=function(c,a,b){Sys.WebForms.EndRequestEventArgs.initializeBase(this);this._errorHandled=false;this._error=c;this._dataItems=a||new Object;this._response=b};Sys.WebForms.EndRequestEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_error:function(){return this._error},get_errorHandled:function(){return this._errorHandled},set_errorHandled:function(a){this._errorHandled=a},get_response:function(){return this._response}};Sys.WebForms.EndRequestEventArgs.registerClass("Sys.WebForms.EndRequestEventArgs",Sys.EventArgs);Sys.WebForms.InitializeRequestEventArgs=function(b,a){Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.InitializeRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.InitializeRequestEventArgs.registerClass("Sys.WebForms.InitializeRequestEventArgs",Sys.CancelEventArgs);Sys.WebForms.PageLoadedEventArgs=function(b,a,c){Sys.WebForms.PageLoadedEventArgs.initializeBase(this);this._panelsUpdated=b;this._panelsCreated=a;this._dataItems=c||new Object};Sys.WebForms.PageLoadedEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsCreated:function(){return this._panelsCreated},get_panelsUpdated:function(){return this._panelsUpdated}};Sys.WebForms.PageLoadedEventArgs.registerClass("Sys.WebForms.PageLoadedEventArgs",Sys.EventArgs);Sys.WebForms.PageLoadingEventArgs=function(b,a,c){Sys.WebForms.PageLoadingEventArgs.initializeBase(this);this._panelsUpdating=b;this._panelsDeleting=a;this._dataItems=c||new Object};Sys.WebForms.PageLoadingEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsDeleting:function(){return this._panelsDeleting},get_panelsUpdating:function(){return this._panelsUpdating}};Sys.WebForms.PageLoadingEventArgs.registerClass("Sys.WebForms.PageLoadingEventArgs",Sys.EventArgs);Sys.WebForms.PageRequestManager=function(){this._form=null;this._updatePanelIDs=null;this._updatePanelClientIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._panelsToRefreshIDs=null;this._updatePanelHasChildrenAsTriggers=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._scriptManagerID=null;this._pageLoadedHandler=null;this._additionalInput=null;this._onsubmit=null;this._onSubmitStatements=[];this._originalDoPostBack=null;this._postBackSettings=null;this._request=null;this._onFormSubmitHandler=null;this._onFormElementClickHandler=null;this._onWindowUnloadHandler=null;this._asyncPostBackTimeout=null;this._controlIDToFocus=null;this._scrollPosition=null;this._dataItems=null;this._response=null;this._processingRequest=false;this._scriptDisposes={}};Sys.WebForms.PageRequestManager.prototype={_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_isInAsyncPostBack:function(){return this._request!==null},add_beginRequest:function(a){this._get_eventHandlerList().addHandler("beginRequest",a)},remove_beginRequest:function(a){this._get_eventHandlerList().removeHandler("beginRequest",a)},add_endRequest:function(a){this._get_eventHandlerList().addHandler("endRequest",a)},remove_endRequest:function(a){this._get_eventHandlerList().removeHandler("endRequest",a)},add_initializeRequest:function(a){this._get_eventHandlerList().addHandler("initializeRequest",a)},remove_initializeRequest:function(a){this._get_eventHandlerList().removeHandler("initializeRequest",a)},add_pageLoaded:function(a){this._get_eventHandlerList().addHandler("pageLoaded",a)},remove_pageLoaded:function(a){this._get_eventHandlerList().removeHandler("pageLoaded",a)},add_pageLoading:function(a){this._get_eventHandlerList().addHandler("pageLoading",a)},remove_pageLoading:function(a){this._get_eventHandlerList().removeHandler("pageLoading",a)},abortPostBack:function(){if(!this._processingRequest&&this._request){this._request.get_executor().abort();this._request=null}},_createPageRequestManagerTimeoutError:function(){var b="Sys.WebForms.PageRequestManagerTimeoutException: "+Sys.WebForms.Res.PRM_TimeoutError,a=Error.create(b,{name:"Sys.WebForms.PageRequestManagerTimeoutException"});a.popStackFrame();return a},_createPageRequestManagerServerError:function(a,d){var c=d||"Sys.WebForms.PageRequestManagerServerErrorException: "+String.format(Sys.WebForms.Res.PRM_ServerError,a),b=Error.create(c,{name:"Sys.WebForms.PageRequestManagerServerErrorException",httpStatusCode:a});b.popStackFrame();return b},_createPageRequestManagerParserError:function(b){var c="Sys.WebForms.PageRequestManagerParserErrorException: "+String.format(Sys.WebForms.Res.PRM_ParserError,b),a=Error.create(c,{name:"Sys.WebForms.PageRequestManagerParserErrorException"});a.popStackFrame();return a},_createPostBackSettings:function(c,b,a){return {async:c,panelID:b,sourceElement:a}},_convertToClientIDs:function(a,d,c){if(a)for(var b=0;b<a.length;b++){Array.add(d,a[b]);Array.add(c,this._uniqueIDToClientID(a[b]))}},_decodeString:function(a){return a.replace(/\\\u00FF\\/g,"\x00").replace(/\u00FF\u00FF/g,"\u00FF")},_destroyTree:function(f){if(f.nodeType===1){var d=f.childNodes;for(var b=d.length-1;b>=0;b--){var a=d[b];if(a.nodeType===1){if(a.dispose&&typeof a.dispose==="function")a.dispose();else if(a.control&&typeof a.control.dispose==="function")a.control.dispose();var e=Sys.UI.Behavior.getBehaviors(a);for(var c=e.length-1;c>=0;c--)e[c].dispose();this._destroyTree(a)}}}},dispose:function(){if(this._form){Sys.UI.DomEvent.removeHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.removeHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.removeHandler(window,"unload",this._onWindowUnloadHandler);Sys.UI.DomEvent.removeHandler(window,"load",this._pageLoadedHandler)}if(this._originalDoPostBack){window.__doPostBack=this._originalDoPostBack;this._originalDoPostBack=null}this._form=null;this._updatePanelIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._updatePanelClientIDs=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._asyncPostBackTimeout=null;this._scrollPosition=null;this._dataItems=null},_doPostBack:function(a,e){this._additionalInput=null;var b=this._form;if(b.action!==b._initialAction)this._postBackSettings=this._createPostBackSettings(false,null,null);else{var f=this._uniqueIDToClientID(a),d=document.getElementById(f);if(!d)if(Array.contains(this._asyncPostBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(true,this._scriptManagerID+"|"+a,null);else if(Array.contains(this._postBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(false,null,null);else{var c=this._findNearestElement(a);if(c)this._postBackSettings=this._getPostBackSettings(c,a);else this._postBackSettings=this._createPostBackSettings(false,null,null)}else this._postBackSettings=this._getPostBackSettings(d,a)}if(!this._postBackSettings.async){b.onsubmit=this._onsubmit;this._originalDoPostBack(a,e);b.onsubmit=null;return}b.__EVENTTARGET.value=a;b.__EVENTARGUMENT.value=e;this._onFormSubmit()},_elementContains:function(b,a){while(a){if(a===b)return true;a=a.parentNode}return false},_endPostBack:function(a,e){this._processingRequest=false;this._request=null;this._additionalInput=null;var d=this._get_eventHandlerList().getHandler("endRequest"),b=false;if(d){var c=new Sys.WebForms.EndRequestEventArgs(a,this._dataItems,e);d(this,c);b=c.get_errorHandled()}this._dataItems=null;if(a&&!b)alert(a.message)},_findNearestElement:function(a){while(a.length>0){var d=this._uniqueIDToClientID(a),c=document.getElementById(d);if(c)return c;var b=a.lastIndexOf("$");if(b===-1)return null;a=a.substring(0,b)}return null},_findText:function(b,a){var c=Math.max(0,a-20),d=Math.min(b.length,a+20);return b.substring(c,d)},_getPageLoadedEventArgs:function(f){var e=[],d=[],h=this._oldUpdatePanelIDs||[],b=this._updatePanelIDs,g=this._childUpdatePanelIDs||[],c=this._panelsToRefreshIDs||[];for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(f||Array.indexOf(g,b[a])!==-1)Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadedEventArgs(e,d,this._dataItems)},_getPageLoadingEventArgs:function(){var e=[],d=[],b=this._oldUpdatePanelIDs,g=this._updatePanelIDs,f=this._childUpdatePanelIDs,c=this._panelsToRefreshIDs;for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(Array.indexOf(c,b[a])===-1&&(Array.indexOf(g,b[a])===-1||Array.indexOf(f,b[a])>-1))Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadingEventArgs(e,d,this._dataItems)},_getPostBackSettings:function(a,c){var d=a,b=null;while(a){if(a.id){if(!b&&Array.contains(this._asyncPostBackControlClientIDs,a.id))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&Array.contains(this._postBackControlClientIDs,a.id))return this._createPostBackSettings(false,null,null);else{var e=Array.indexOf(this._updatePanelClientIDs,a.id);if(e!==-1)if(this._updatePanelHasChildrenAsTriggers[e])return this._createPostBackSettings(true,this._updatePanelIDs[e]+"|"+c,d);else return this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d)}if(!b&&this._matchesParentIDInList(a.id,this._asyncPostBackControlClientIDs))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&this._matchesParentIDInList(a.id,this._postBackControlClientIDs))return this._createPostBackSettings(false,null,null)}a=a.parentNode}if(!b)return this._createPostBackSettings(false,null,null);else return b},_getScrollPosition:function(){var a=document.documentElement;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else{a=document.body;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else if(this._validPosition(window.pageXOffset)||this._validPosition(window.pageYOffset))return {x:window.pageXOffset,y:window.pageYOffset};else return {x:0,y:0}}},_initializeInternal:function(a,b){this._scriptManagerID=a;this._form=b;this._form._initialAction=this._form.action;this._onsubmit=this._form.onsubmit;this._form.onsubmit=null;this._onFormSubmitHandler=Function.createDelegate(this,this._onFormSubmit);this._onFormElementClickHandler=Function.createDelegate(this,this._onFormElementClick);this._onWindowUnloadHandler=Function.createDelegate(this,this._onWindowUnload);Sys.UI.DomEvent.addHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.addHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUnloadHandler);this._originalDoPostBack=window.__doPostBack;if(this._originalDoPostBack)window.__doPostBack=Function.createDelegate(this,this._doPostBack);this._pageLoadedHandler=Function.createDelegate(this,this._pageLoadedInitialLoad);Sys.UI.DomEvent.addHandler(window,"load",this._pageLoadedHandler)},_matchesParentIDInList:function(c,b){for(var a=0;a<b.length;a++)if(c.startsWith(b[a]+"_"))return true;return false},_onFormElementClick:function(b){var a=b.target;if(a.disabled)return;this._postBackSettings=this._getPostBackSettings(a,a.name);if(a.name)if(a.tagName==="INPUT"){var c=a.type;if(c==="submit")this._additionalInput=a.name+"="+encodeURIComponent(a.value);else if(c==="image"){var d=b.offsetX,e=b.offsetY;this._additionalInput=a.name+".x="+d+"&"+a.name+".y="+e}}else if(a.tagName==="BUTTON"&&a.name.length!==0&&a.type==="submit")this._additionalInput=a.name+"="+encodeURIComponent(a.value)},_onFormSubmit:function(f){var d=true;if(this._onsubmit)d=this._onsubmit();if(d)for(var g=0;g<this._onSubmitStatements.length;g++)if(!this._onSubmitStatements[g]()){d=false;break}if(!d){if(f)f.preventDefault();return}var i=this._form;if(i.action!==i._initialAction)return;if(!this._postBackSettings.async)return;var a=new Sys.StringBuilder;a.append(this._scriptManagerID+"="+this._postBackSettings.panelID+"&");var p=i.elements.length;for(var g=0;g<p;g++){var c=i.elements[g],e=c.name;if(typeof e==="undefined"||e===null||e.length===0)continue;var l=c.tagName;if(l==="INPUT"){var j=c.type;if(j==="text"||j==="password"||j==="hidden"||(j==="checkbox"||j==="radio")&&c.checked){a.append(e);a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}else if(l==="SELECT"){var o=c.options.length;for(var m=0;m<o;m++){var n=c.options[m];if(n.selected){a.append(e);a.append("=");a.append(encodeURIComponent(n.value));a.append("&")}}}else if(l==="TEXTAREA"){a.append(e);a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}if(this._additionalInput){a.append(this._additionalInput);this._additionalInput=null}var b=new Sys.Net.WebRequest;b.set_url(i.action);b.get_headers()["X-MicrosoftAjax"]="Delta=true";b.get_headers()["Cache-Control"]="no-cache";b.set_timeout(this._asyncPostBackTimeout);b.add_completed(Function.createDelegate(this,this._onFormSubmitCompleted));b.set_body(a.toString());var h=this._get_eventHandlerList().getHandler("initializeRequest");if(h){var k=new Sys.WebForms.InitializeRequestEventArgs(b,this._postBackSettings.sourceElement);h(this,k);d=!k.get_cancel()}if(!d){if(f)f.preventDefault();return}this._scrollPosition=this._getScrollPosition();this.abortPostBack();h=this._get_eventHandlerList().getHandler("beginRequest");if(h){var k=new Sys.WebForms.BeginRequestEventArgs(b,this._postBackSettings.sourceElement);h(this,k)}this._request=b;b.invoke();if(f)f.preventDefault()},_onFormSubmitCompleted:function(sender,eventArgs){this._processingRequest=true;var delimitByLengthDelimiter="|";if(sender.get_timedOut()){this._endPostBack(this._createPageRequestManagerTimeoutError(),sender);return}if(sender.get_aborted()){this._endPostBack(null,sender);return}if(!this._request||sender.get_webRequest()!==this._request)return;var errorMessage,delta=[];if(sender.get_statusCode()!==200){this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()),sender);return}var reply=sender.get_responseData(),delimiterIndex,len,type,id,content,replyIndex=0,parserErrorDetails=null;while(replyIndex<reply.length){delimiterIndex=reply.indexOf(delimitByLengthDelimiter,replyIndex);if(delimiterIndex===-1){parserErrorDetails=this._findText(reply,replyIndex);break}len=parseInt(reply.substring(replyIndex,delimiterIndex),10);if(len%1!==0){parserErrorDetails=this._findText(reply,replyIndex);break}replyIndex=delimiterIndex+1;delimiterIndex=reply.indexOf(delimitByLengthDelimiter,replyIndex);if(delimiterIndex===-1){parserErrorDetails=this._findText(reply,replyIndex);break}type=reply.substring(replyIndex,delimiterIndex);replyIndex=delimiterIndex+1;delimiterIndex=reply.indexOf(delimitByLengthDelimiter,replyIndex);if(delimiterIndex===-1){parserErrorDetails=this._findText(reply,replyIndex);break}id=reply.substring(replyIndex,delimiterIndex);replyIndex=delimiterIndex+1;if(replyIndex+len>=reply.length){parserErrorDetails=this._findText(reply,reply.length);break}content=this._decodeString(reply.substr(replyIndex,len));replyIndex+=len;if(reply.charAt(replyIndex)!==delimitByLengthDelimiter){parserErrorDetails=this._findText(reply,replyIndex);break}replyIndex++;Array.add(delta,{type:type,id:id,content:content})}if(parserErrorDetails){this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,parserErrorDetails)),sender);return}var updatePanelNodes=[],hiddenFieldNodes=[],arrayDeclarationNodes=[],scriptBlockNodes=[],expandoNodes=[],onSubmitNodes=[],dataItemNodes=[],dataItemJsonNodes=[],scriptDisposeNodes=[],asyncPostBackControlIDsNode,postBackControlIDsNode,updatePanelIDsNode,asyncPostBackTimeoutNode,childUpdatePanelIDsNode,panelsToRefreshNode,formActionNode;for(var i=0;i<delta.length;i++){var deltaNode=delta[i];switch(deltaNode.type){case "updatePanel":Array.add(updatePanelNodes,deltaNode);break;case "hiddenField":Array.add(hiddenFieldNodes,deltaNode);break;case "arrayDeclaration":Array.add(arrayDeclarationNodes,deltaNode);break;case "scriptBlock":Array.add(scriptBlockNodes,deltaNode);break;case "expando":Array.add(expandoNodes,deltaNode);break;case "onSubmit":Array.add(onSubmitNodes,deltaNode);break;case "asyncPostBackControlIDs":asyncPostBackControlIDsNode=deltaNode;break;case "postBackControlIDs":postBackControlIDsNode=deltaNode;break;case "updatePanelIDs":updatePanelIDsNode=deltaNode;break;case "asyncPostBackTimeout":asyncPostBackTimeoutNode=deltaNode;break;case "childUpdatePanelIDs":childUpdatePanelIDsNode=deltaNode;break;case "panelsToRefreshIDs":panelsToRefreshNode=deltaNode;break;case "formAction":formActionNode=deltaNode;break;case "dataItem":Array.add(dataItemNodes,deltaNode);break;case "dataItemJson":Array.add(dataItemJsonNodes,deltaNode);break;case "scriptDispose":Array.add(scriptDisposeNodes,deltaNode);break;case "pageRedirect":window.location.href=deltaNode.content;return;case "error":this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id),deltaNode.content),sender);return;case "pageTitle":document.title=deltaNode.content;break;case "focus":this._controlIDToFocus=deltaNode.content;break;default:this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken,deltaNode.type)),sender);return}}var i;if(asyncPostBackControlIDsNode&&postBackControlIDsNode&&updatePanelIDsNode&&panelsToRefreshNode&&asyncPostBackTimeoutNode&&childUpdatePanelIDsNode){this._oldUpdatePanelIDs=this._updatePanelIDs;var childUpdatePanelIDsString=childUpdatePanelIDsNode.content;this._childUpdatePanelIDs=childUpdatePanelIDsString.length?childUpdatePanelIDsString.split(","):[];var asyncPostBackControlIDsArray=this._splitNodeIntoArray(asyncPostBackControlIDsNode),postBackControlIDsArray=this._splitNodeIntoArray(postBackControlIDsNode),updatePanelIDsArray=this._splitNodeIntoArray(updatePanelIDsNode);this._panelsToRefreshIDs=this._splitNodeIntoArray(panelsToRefreshNode);for(i=0;i<this._panelsToRefreshIDs.length;i++){var panelClientID=this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);if(!document.getElementById(panelClientID)){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,panelClientID)),sender);return}}var asyncPostBackTimeout=asyncPostBackTimeoutNode.content;this._updateControls(updatePanelIDsArray,asyncPostBackControlIDsArray,postBackControlIDsArray,asyncPostBackTimeout)}this._dataItems={};for(i=0;i<dataItemNodes.length;i++){var dataItemNode=dataItemNodes[i];this._dataItems[dataItemNode.id]=dataItemNode.content}for(i=0;i<dataItemJsonNodes.length;i++){var dataItemJsonNode=dataItemJsonNodes[i];this._dataItems[dataItemJsonNode.id]=eval(dataItemJsonNode.content)}var handler=this._get_eventHandlerList().getHandler("pageLoading");if(handler)handler(this,this._getPageLoadingEventArgs());if(formActionNode){this._form.action=formActionNode.content;this._form._initialAction=this._form.action}for(i=0;i<updatePanelNodes.length;i++){var deltaUpdatePanel=updatePanelNodes[i],deltaPanelID=deltaUpdatePanel.id,deltaPanelRendering=deltaUpdatePanel.content,updatePanelElement=document.getElementById(deltaPanelID);if(!updatePanelElement){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,deltaPanelID)),sender);return}this._updatePanel(updatePanelElement,deltaPanelRendering)}for(i=0;i<scriptDisposeNodes.length;i++){var disposePanelId=scriptDisposeNodes[i].id,disposeScript=scriptDisposeNodes[i].content;this._registerDisposeScript(disposePanelId,disposeScript)}for(i=0;i<hiddenFieldNodes.length;i++){var id=hiddenFieldNodes[i].id,value=hiddenFieldNodes[i].content,hiddenFieldElement=document.getElementById(id);if(!hiddenFieldElement){hiddenFieldElement=document.createElement("input");hiddenFieldElement.id=id;hiddenFieldElement.name=id;hiddenFieldElement.type="hidden";this._form.appendChild(hiddenFieldElement)}hiddenFieldElement.value=value}var arrayScript="";for(i=0;i<arrayDeclarationNodes.length;i++)arrayScript+="Sys.WebForms.PageRequestManager._addArrayElement('"+arrayDeclarationNodes[i].id+"', "+arrayDeclarationNodes[i].content+");\r\n";var expandoScript="";for(i=0;i<expandoNodes.length;i++){var propertyReference=expandoNodes[i].id,propertyValue=expandoNodes[i].content;expandoScript+=propertyReference+" = "+propertyValue+"\r\n"}Sys._ScriptLoader.readLoadedScripts();Sys.Application.beginCreateComponents();var scriptLoader=Sys._ScriptLoader.getInstance();if(arrayScript.length)scriptLoader.queueScriptBlock(arrayScript);if(expandoScript.length)scriptLoader.queueScriptBlock(expandoScript);for(i=0;i<scriptBlockNodes.length;i++){var scriptBlockType=scriptBlockNodes[i].id;switch(scriptBlockType){case "ScriptContentNoTags":scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);break;case "ScriptContentWithTags":var scriptTagAttributes;eval("scriptTagAttributes = "+scriptBlockNodes[i].content);if(scriptTagAttributes.src&&Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src))continue;scriptLoader.queueCustomScriptTag(scriptTagAttributes);break;case "ScriptPath":if(Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content))continue;scriptLoader.queueScriptReference(scriptBlockNodes[i].content);break}}var onSubmitStatementScript="";for(var i=0;i<onSubmitNodes.length;i++){if(i===0)onSubmitStatementScript="Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n";onSubmitStatementScript+=onSubmitNodes[i].content+"\r\n"}if(onSubmitStatementScript.length){onSubmitStatementScript+="\r\nreturn true;\r\n});\r\n";scriptLoader.queueScriptBlock(onSubmitStatementScript)}this._response=sender;scriptLoader.loadScripts(0,Function.createDelegate(this,this._scriptsLoadComplete),null,null)},_onWindowUnload:function(){this.dispose()},_pageLoaded:function(a){var b=this._get_eventHandlerList().getHandler("pageLoaded");if(b)b(this,this._getPageLoadedEventArgs(a));if(!a)Sys.Application.raiseLoad()},_pageLoadedInitialLoad:function(){this._pageLoaded(true)},_registerDisposeScript:function(a,b){if(!this._scriptDisposes[a])this._scriptDisposes[a]=[b];else Array.add(this._scriptDisposes[a],b)},_scriptsLoadComplete:function(){if(window.__theFormPostData)window.__theFormPostData="";if(window.__theFormPostCollection)window.__theFormPostCollection=[];if(window.WebForm_InitCallback)window.WebForm_InitCallback();if(this._scrollPosition){if(window.scrollTo)window.scrollTo(this._scrollPosition.x,this._scrollPosition.y);this._scrollPosition=null}Sys.Application.endCreateComponents();this._pageLoaded(false);this._endPostBack(null,this._response);this._response=null;if(this._controlIDToFocus){var a,c;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var b=$get(this._controlIDToFocus),a=b;if(b&&!WebForm_CanFocus(b))a=WebForm_FindFirstFocusableChild(b);if(a&&typeof a.contentEditable!=="undefined"){c=a.contentEditable;a.contentEditable=false}else a=null}WebForm_AutoFocus(this._controlIDToFocus);if(a)a.contentEditable=c;this._controlIDToFocus=null}},_splitNodeIntoArray:function(b){var a=b.content,c=a.length?a.split(","):[];return c},_uniqueIDToClientID:function(a){return a.replace(/\$/g,"_")},_updateControls:function(a,d,g,e){if(a){this._updatePanelIDs=new Array(a.length);this._updatePanelClientIDs=new Array(a.length);this._updatePanelHasChildrenAsTriggers=new Array(a.length);for(var b=0;b<a.length;b++){var c=a[b].substr(1),f=a[b].charAt(0)==="t";this._updatePanelHasChildrenAsTriggers[b]=f;this._updatePanelIDs[b]=c;this._updatePanelClientIDs[b]=this._uniqueIDToClientID(c)}this._asyncPostBackTimeout=e*1000}else{this._updatePanelIDs=[];this._updatePanelClientIDs=[];this._updatePanelHasChildrenAsTriggers=[];this._asyncPostBackTimeout=0}this._asyncPostBackControlIDs=[];this._asyncPostBackControlClientIDs=[];this._convertToClientIDs(d,this._asyncPostBackControlIDs,this._asyncPostBackControlClientIDs);this._postBackControlIDs=[];this._postBackControlClientIDs=[];this._convertToClientIDs(g,this._postBackControlIDs,this._postBackControlClientIDs)},_updatePanel:function(updatePanelElement,rendering){for(var updatePanelID in this._scriptDisposes)if(this._elementContains(updatePanelElement,document.getElementById(updatePanelID))){var disposeScripts=this._scriptDisposes[updatePanelID];for(var i=0;i<disposeScripts.length;i++)eval(disposeScripts[i]);delete this._scriptDisposes[updatePanelID]}this._destroyTree(updatePanelElement);updatePanelElement.innerHTML=rendering},_validPosition:function(a){return typeof a!=="undefined"&&a!==null&&a!==0}};Sys.WebForms.PageRequestManager.getInstance=function(){return Sys.WebForms.PageRequestManager._instance||null};Sys.WebForms.PageRequestManager._addArrayElement=function(a,b){if(typeof window[a]==="undefined")window[a]=[b];else Array.add(window[a],b)};Sys.WebForms.PageRequestManager._initialize=function(a,b){if(Sys.WebForms.PageRequestManager.getInstance())throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);Sys.WebForms.PageRequestManager._instance=new Sys.WebForms.PageRequestManager;Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(a,b)};Sys.WebForms.PageRequestManager.registerClass("Sys.WebForms.PageRequestManager");Sys.UI._UpdateProgress=function(a){Sys.UI._UpdateProgress.initializeBase(this,[a]);this._displayAfter=500;this._dynamicLayout=true;this._associatedUpdatePanelId=null;this._beginRequestHandlerDelegate=null;this._startDelegate=null;this._endRequestHandlerDelegate=null;this._pageRequestManager=null;this._timerCookie=null};Sys.UI._UpdateProgress.prototype={get_displayAfter:function(){return this._displayAfter},set_displayAfter:function(a){this._displayAfter=a},get_dynamicLayout:function(){return this._dynamicLayout},set_dynamicLayout:function(a){this._dynamicLayout=a},get_associatedUpdatePanelId:function(){return this._associatedUpdatePanelId},set_associatedUpdatePanelId:function(a){this._associatedUpdatePanelId=a},_handleBeginRequest:function(d,c){var a=c.get_postBackElement(),b=!this._associatedUpdatePanelId;while(!b&&a){if(a.id&&this._associatedUpdatePanelId===a.id)b=true;a=a.parentNode}if(b)this._timerCookie=window.setTimeout(this._startDelegate,this._displayAfter)},_startRequest:function(){if(this._pageRequestManager.get_isInAsyncPostBack())if(this._dynamicLayout)this.get_element().style.display="block";else this.get_element().style.visibility="visible";this._timerCookie=null},_handleEndRequest:function(){if(this._dynamicLayout)this.get_element().style.display="none";else this.get_element().style.visibility="hidden";if(this._timerCookie){window.clearTimeout(this._timerCookie);this._timerCookie=null}},dispose:function(){if(this._pageRequestManager!==null){this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate)}Sys.UI._UpdateProgress.callBaseMethod(this,"dispose")},initialize:function(){Sys.UI._UpdateProgress.callBaseMethod(this,"initialize");this._beginRequestHandlerDelegate=Function.createDelegate(this,this._handleBeginRequest);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);this._startDelegate=Function.createDelegate(this,this._startRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null){this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate)}}};Sys.UI._UpdateProgress.registerClass("Sys.UI._UpdateProgress",Sys.UI.Control)
+Sys.WebForms.Res={'PRM_UnknownToken':'Unknown token: \'{0}\'.','PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.','PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}','PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}','PRM_TimeoutError':'The server request timed out.','PRM_ParserErrorDetails':'Error parsing near \'{0}\'.','PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'};
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.debug.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.debug.js
@@ -1,6336 +1,6336 @@
-//-----------------------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------
-// MicrosoftAjax.js
-// Microsoft AJAX Framework.
- 
-Function.__typeName = 'Function';
-Function.__class = true;
-Function.createCallback = function Function$createCallback(method, context) {
-    /// <summary locid="M:J#Function.createCallback" />
-    /// <param name="method" type="Function"></param>
-    /// <param name="context" mayBeNull="true"></param>
-    /// <returns type="Function"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "method", type: Function},
-        {name: "context", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    return function() {
-        var l = arguments.length;
-        if (l > 0) {
-            var args = [];
-            for (var i = 0; i < l; i++) {
-                args[i] = arguments[i];
-            }
-            args[l] = context;
-            return method.apply(this, args);
-        }
-        return method.call(this, context);
-    }
-}
-Function.createDelegate = function Function$createDelegate(instance, method) {
-    /// <summary locid="M:J#Function.createDelegate" />
-    /// <param name="instance" mayBeNull="true"></param>
-    /// <param name="method" type="Function"></param>
-    /// <returns type="Function"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance", mayBeNull: true},
-        {name: "method", type: Function}
-    ]);
-    if (e) throw e;
-    return function() {
-        return method.apply(instance, arguments);
-    }
-}
-Function.emptyFunction = Function.emptyMethod = function Function$emptyMethod() {
-    /// <summary locid="M:J#Function.emptyMethod" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-Function._validateParams = function Function$_validateParams(params, expectedParams) {
-    var e;
-    e = Function._validateParameterCount(params, expectedParams);
-    if (e) {
-        e.popStackFrame();
-        return e;
-    }
-    for (var i=0; i < params.length; i++) {
-        var expectedParam = expectedParams[Math.min(i, expectedParams.length - 1)];
-        var paramName = expectedParam.name;
-        if (expectedParam.parameterArray) {
-            paramName += "[" + (i - expectedParams.length + 1) + "]";
-        }
-        e = Function._validateParameter(params[i], expectedParam, paramName);
-        if (e) {
-            e.popStackFrame();
-            return e;
-        }
-    }
-    return null;
-}
-Function._validateParameterCount = function Function$_validateParameterCount(params, expectedParams) {
-    var maxParams = expectedParams.length;
-    var minParams = 0;
-    for (var i=0; i < expectedParams.length; i++) {
-        if (expectedParams[i].parameterArray) {
-            maxParams = Number.MAX_VALUE;
-        }
-        else if (!expectedParams[i].optional) {
-            minParams++;
-        }
-    }
-    if (params.length < minParams || params.length > maxParams) {
-        var e = Error.parameterCount();
-        e.popStackFrame();
-        return e;
-    }
-    return null;
-}
-Function._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) {
-    var e;
-    var expectedType = expectedParam.type;
-    var expectedInteger = !!expectedParam.integer;
-    var expectedDomElement = !!expectedParam.domElement;
-    var mayBeNull = !!expectedParam.mayBeNull;
-    e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
-    if (e) {
-        e.popStackFrame();
-        return e;
-    }
-    var expectedElementType = expectedParam.elementType;
-    var elementMayBeNull = !!expectedParam.elementMayBeNull;
-    if (expectedType === Array && typeof(param) !== "undefined" && param !== null &&
-        (expectedElementType || !elementMayBeNull)) {
-        var expectedElementInteger = !!expectedParam.elementInteger;
-        var expectedElementDomElement = !!expectedParam.elementDomElement;
-        for (var i=0; i < param.length; i++) {
-            var elem = param[i];
-            e = Function._validateParameterType(elem, expectedElementType,
-                expectedElementInteger, expectedElementDomElement, elementMayBeNull,
-                paramName + "[" + i + "]");
-            if (e) {
-                e.popStackFrame();
-                return e;
-            }
-        }
-    }
-    return null;
-}
-Function._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
-    var e;
-    if (typeof(param) === "undefined") {
-        if (mayBeNull) {
-            return null;
-        }
-        else {
-            e = Error.argumentUndefined(paramName);
-            e.popStackFrame();
-            return e;
-        }
-    }
-    if (param === null) {
-        if (mayBeNull) {
-            return null;
-        }
-        else {
-            e = Error.argumentNull(paramName);
-            e.popStackFrame();
-            return e;
-        }
-    }
-    if (expectedType && expectedType.__enum) {
-        if (typeof(param) !== 'number') {
-            e = Error.argumentType(paramName, Object.getType(param), expectedType);
-            e.popStackFrame();
-            return e;
-        }
-        if ((param % 1) === 0) {
-            var values = expectedType.prototype;
-            if (!expectedType.__flags || (param === 0)) {
-                for (var i in values) {
-                    if (values[i] === param) return null;
-                }
-            }
-            else {
-                var v = param;
-                for (var i in values) {
-                    var vali = values[i];
-                    if (vali === 0) continue;
-                    if ((vali & param) === vali) {
-                        v -= vali;
-                    }
-                    if (v === 0) return null;
-                }
-            }
-        }
-        e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
-        e.popStackFrame();
-        return e;
-    }
-    if (expectedDomElement) {
-        var val;
-        if (typeof(param.nodeType) !== 'number') {
-            var doc = param.ownerDocument || param.document || param;
-            if (doc != param) {
-                var w = doc.defaultView || doc.parentWindow;
-                val = (w != param) && !(w.document && param.document && (w.document === param.document));
-            }
-            else {
-                val = (typeof(doc.body) === 'undefined');
-            }
-        }
-        else {
-            val = (param.nodeType === 3);
-        }
-        if (val) {
-            e = Error.argument(paramName, Sys.Res.argumentDomElement);
-            e.popStackFrame();
-            return e;
-        }
-    }
-    if (expectedType && !expectedType.isInstanceOfType(param)) {
-        e = Error.argumentType(paramName, Object.getType(param), expectedType);
-        e.popStackFrame();
-        return e;
-    }
-    if (expectedType === Number && expectedInteger) {
-        if ((param % 1) !== 0) {
-            e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger);
-            e.popStackFrame();
-            return e;
-        }
-    }
-    return null;
-}
- 
-Error.__typeName = 'Error';
-Error.__class = true;
-Error.create = function Error$create(message, errorInfo) {
-    /// <summary locid="M:J#Error.create" />
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="errorInfo" optional="true" mayBeNull="true"></param>
-    /// <returns type="Error"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true},
-        {name: "errorInfo", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var e = new Error(message);
-    e.message = message;
-    if (errorInfo) {
-        for (var v in errorInfo) {
-            e[v] = errorInfo[v];
-        }
-    }
-    e.popStackFrame();
-    return e;
-}
-Error.argument = function Error$argument(paramName, message) {
-    /// <summary locid="M:J#Error.argument" />
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.ArgumentException: " + (message ? message : Sys.Res.argument);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-    var e = Error.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName });
-    e.popStackFrame();
-    return e;
-}
-Error.argumentNull = function Error$argumentNull(paramName, message) {
-    /// <summary locid="M:J#Error.argumentNull" />
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.ArgumentNullException: " + (message ? message : Sys.Res.argumentNull);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-    var e = Error.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName });
-    e.popStackFrame();
-    return e;
-}
-Error.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) {
-    /// <summary locid="M:J#Error.argumentOutOfRange" />
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="actualValue" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "actualValue", mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : Sys.Res.argumentOutOfRange);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-    if (typeof(actualValue) !== "undefined" && actualValue !== null) {
-        displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue);
-    }
-    var e = Error.create(displayMessage, {
-        name: "Sys.ArgumentOutOfRangeException",
-        paramName: paramName,
-        actualValue: actualValue
-    });
-    e.popStackFrame();
-    return e;
-}
-Error.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) {
-    /// <summary locid="M:J#Error.argumentType" />
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="actualType" type="Type" optional="true" mayBeNull="true"></param>
-    /// <param name="expectedType" type="Type" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "actualType", type: Type, mayBeNull: true, optional: true},
-        {name: "expectedType", type: Type, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.ArgumentTypeException: ";
-    if (message) {
-        displayMessage += message;
-    }
-    else if (actualType && expectedType) {
-        displayMessage +=
-            String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName());
-    }
-    else {
-        displayMessage += Sys.Res.argumentType;
-    }
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-    var e = Error.create(displayMessage, {
-        name: "Sys.ArgumentTypeException",
-        paramName: paramName,
-        actualType: actualType,
-        expectedType: expectedType
-    });
-    e.popStackFrame();
-    return e;
-}
-Error.argumentUndefined = function Error$argumentUndefined(paramName, message) {
-    /// <summary locid="M:J#Error.argumentUndefined" />
-    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "paramName", type: String, mayBeNull: true, optional: true},
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : Sys.Res.argumentUndefined);
-    if (paramName) {
-        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
-    }
-    var e = Error.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName });
-    e.popStackFrame();
-    return e;
-}
-Error.format = function Error$format(message) {
-    /// <summary locid="M:J#Error.format" />
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.FormatException: " + (message ? message : Sys.Res.format);
-    var e = Error.create(displayMessage, {name: 'Sys.FormatException'});
-    e.popStackFrame();
-    return e;
-}
-Error.invalidOperation = function Error$invalidOperation(message) {
-    /// <summary locid="M:J#Error.invalidOperation" />
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.InvalidOperationException: " + (message ? message : Sys.Res.invalidOperation);
-    var e = Error.create(displayMessage, {name: 'Sys.InvalidOperationException'});
-    e.popStackFrame();
-    return e;
-}
-Error.notImplemented = function Error$notImplemented(message) {
-    /// <summary locid="M:J#Error.notImplemented" />
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.NotImplementedException: " + (message ? message : Sys.Res.notImplemented);
-    var e = Error.create(displayMessage, {name: 'Sys.NotImplementedException'});
-    e.popStackFrame();
-    return e;
-}
-Error.parameterCount = function Error$parameterCount(message) {
-    /// <summary locid="M:J#Error.parameterCount" />
-    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "message", type: String, mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var displayMessage = "Sys.ParameterCountException: " + (message ? message : Sys.Res.parameterCount);
-    var e = Error.create(displayMessage, {name: 'Sys.ParameterCountException'});
-    e.popStackFrame();
-    return e;
-}
-Error.prototype.popStackFrame = function Error$popStackFrame() {
-    /// <summary locid="M:J#checkParam" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    if (typeof(this.stack) === "undefined" || this.stack === null ||
-        typeof(this.fileName) === "undefined" || this.fileName === null ||
-        typeof(this.lineNumber) === "undefined" || this.lineNumber === null) {
-        return;
-    }
-    var stackFrames = this.stack.split("\n");
-    var currentFrame = stackFrames[0];
-    var pattern = this.fileName + ":" + this.lineNumber;
-    while(typeof(currentFrame) !== "undefined" &&
-          currentFrame !== null &&
-          currentFrame.indexOf(pattern) === -1) {
-        stackFrames.shift();
-        currentFrame = stackFrames[0];
-    }
-    var nextFrame = stackFrames[1];
-    if (typeof(nextFrame) === "undefined" || nextFrame === null) {
-        return;
-    }
-    var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
-    if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) {
-        return;
-    }
-    this.fileName = nextFrameParts[1];
-    this.lineNumber = parseInt(nextFrameParts[2]);
-    stackFrames.shift();
-    this.stack = stackFrames.join("\n");
-}
- 
-Object.__typeName = 'Object';
-Object.__class = true;
-Object.getType = function Object$getType(instance) {
-    /// <summary locid="M:J#Object.getType" />
-    /// <param name="instance"></param>
-    /// <returns type="Type"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"}
-    ]);
-    if (e) throw e;
-    var ctor = instance.constructor;
-    if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) {
-        return Object;
-    }
-    return ctor;
-}
-Object.getTypeName = function Object$getTypeName(instance) {
-    /// <summary locid="M:J#Object.getTypeName" />
-    /// <param name="instance"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"}
-    ]);
-    if (e) throw e;
-    return Object.getType(instance).getName();
-}
- 
-String.__typeName = 'String';
-String.__class = true;
-String.prototype.endsWith = function String$endsWith(suffix) {
-    /// <summary locid="M:J#String.endsWith" />
-    /// <param name="suffix" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "suffix", type: String}
-    ]);
-    if (e) throw e;
-    return (this.substr(this.length - suffix.length) === suffix);
-}
-String.prototype.startsWith = function String$startsWith(prefix) {
-    /// <summary locid="M:J#String.startsWith" />
-    /// <param name="prefix" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "prefix", type: String}
-    ]);
-    if (e) throw e;
-    return (this.substr(0, prefix.length) === prefix);
-}
-String.prototype.trim = function String$trim() {
-    /// <summary locid="M:J#String.trim" />
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return this.replace(/^\s+|\s+$/g, '');
-}
-String.prototype.trimEnd = function String$trimEnd() {
-    /// <summary locid="M:J#String.trimEnd" />
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return this.replace(/\s+$/, '');
-}
-String.prototype.trimStart = function String$trimStart() {
-    /// <summary locid="M:J#String.trimStart" />
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return this.replace(/^\s+/, '');
-}
-String.format = function String$format(format, args) {
-    /// <summary locid="M:J#String.format" />
-    /// <param name="format" type="String"></param>
-    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String},
-        {name: "args", mayBeNull: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-    return String._toFormattedString(false, arguments);
-}
-String.localeFormat = function String$localeFormat(format, args) {
-    /// <summary locid="M:J#String.localeFormat" />
-    /// <param name="format" type="String"></param>
-    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String},
-        {name: "args", mayBeNull: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-    return String._toFormattedString(true, arguments);
-}
-String._toFormattedString = function String$_toFormattedString(useLocale, args) {
-    var result = '';
-    var format = args[0];
-    for (var i=0;;) {
-        var open = format.indexOf('{', i);
-        var close = format.indexOf('}', i);
-        if ((open < 0) && (close < 0)) {
-            result += format.slice(i);
-            break;
-        }
-        if ((close > 0) && ((close < open) || (open < 0))) {
-            if (format.charAt(close + 1) !== '}') {
-                throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
-            }
-            result += format.slice(i, close + 1);
-            i = close + 2;
-            continue;
-        }
-        result += format.slice(i, open);
-        i = open + 1;
-        if (format.charAt(i) === '{') {
-            result += '{';
-            i++;
-            continue;
-        }
-        if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
-        var brace = format.substring(i, close);
-        var colonIndex = brace.indexOf(':');
-        var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex), 10) + 1;
-        if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid);
-        var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1);
-        var arg = args[argNumber];
-        if (typeof(arg) === "undefined" || arg === null) {
-            arg = '';
-        }
-        if (arg.toFormattedString) {
-            result += arg.toFormattedString(argFormat);
-        }
-        else if (useLocale && arg.localeFormat) {
-            result += arg.localeFormat(argFormat);
-        }
-        else if (arg.format) {
-            result += arg.format(argFormat);
-        }
-        else
-            result += arg.toString();
-        i = close + 1;
-    }
-    return result;
-}
- 
-Boolean.__typeName = 'Boolean';
-Boolean.__class = true;
-Boolean.parse = function Boolean$parse(value) {
-    /// <summary locid="M:J#Boolean.parse" />
-    /// <param name="value" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String}
-    ]);
-    if (e) throw e;
-    var v = value.trim().toLowerCase();
-    if (v === 'false') return false;
-    if (v === 'true') return true;
-    throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse);
-}
- 
-Date.__typeName = 'Date';
-Date.__class = true;
-Date._appendPreOrPostMatch = function Date$_appendPreOrPostMatch(preMatch, strBuilder) {
-    var quoteCount = 0;
-    var escaped = false;
-    for (var i = 0, il = preMatch.length; i < il; i++) {
-        var c = preMatch.charAt(i);
-        switch (c) {
-        case '\'':
-            if (escaped) strBuilder.append("'");
-            else quoteCount++;
-            escaped = false;
-            break;
-        case '\\':
-            if (escaped) strBuilder.append("\\");
-            escaped = !escaped;
-            break;
-        default:
-            strBuilder.append(c);
-            escaped = false;
-            break;
-        }
-    }
-    return quoteCount;
-}
-Date._expandFormat = function Date$_expandFormat(dtf, format) {
-    if (!format) {
-        format = "F";
-    }
-    if (format.length === 1) {
-        switch (format) {
-        case "d":
-            return dtf.ShortDatePattern;
-        case "D":
-            return dtf.LongDatePattern;
-        case "t":
-            return dtf.ShortTimePattern;
-        case "T":
-            return dtf.LongTimePattern;
-        case "F":
-            return dtf.FullDateTimePattern;
-        case "M": case "m":
-            return dtf.MonthDayPattern;
-        case "s":
-            return dtf.SortableDateTimePattern;
-        case "Y": case "y":
-            return dtf.YearMonthPattern;
-        default:
-            throw Error.format(Sys.Res.formatInvalidString);
-        }
-    }
-    return format;
-}
-Date._expandYear = function Date$_expandYear(dtf, year) {
-    if (year < 100) {
-        var curr = new Date().getFullYear();
-        year += curr - (curr % 100);
-        if (year > dtf.Calendar.TwoDigitYearMax) {
-            return year - 100;
-        }
-    }
-    return year;
-}
-Date._getParseRegExp = function Date$_getParseRegExp(dtf, format) {
-    if (!dtf._parseRegExp) {
-        dtf._parseRegExp = {};
-    }
-    else if (dtf._parseRegExp[format]) {
-        return dtf._parseRegExp[format];
-    }
-    var expFormat = Date._expandFormat(dtf, format);
-    expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1");
-    var regexp = new Sys.StringBuilder("^");
-    var groups = [];
-    var index = 0;
-    var quoteCount = 0;
-    var tokenRegExp = Date._getTokenRegExp();
-    var match;
-    while ((match = tokenRegExp.exec(expFormat)) !== null) {
-        var preMatch = expFormat.slice(index, match.index);
-        index = tokenRegExp.lastIndex;
-        quoteCount += Date._appendPreOrPostMatch(preMatch, regexp);
-        if ((quoteCount%2) === 1) {
-            regexp.append(match[0]);
-            continue;
-        }
-        switch (match[0]) {
-            case 'dddd': case 'ddd':
-            case 'MMMM': case 'MMM':
-                regexp.append("(\\D+)");
-                break;
-            case 'tt': case 't':
-                regexp.append("(\\D*)");
-                break;
-            case 'yyyy':
-                regexp.append("(\\d{4})");
-                break;
-            case 'fff':
-                regexp.append("(\\d{3})");
-                break;
-            case 'ff':
-                regexp.append("(\\d{2})");
-                break;
-            case 'f':
-                regexp.append("(\\d)");
-                break;
-            case 'dd': case 'd':
-            case 'MM': case 'M':
-            case 'yy': case 'y':
-            case 'HH': case 'H':
-            case 'hh': case 'h':
-            case 'mm': case 'm':
-            case 'ss': case 's':
-                regexp.append("(\\d\\d?)");
-                break;
-            case 'zzz':
-                regexp.append("([+-]?\\d\\d?:\\d{2})");
-                break;
-            case 'zz': case 'z':
-                regexp.append("([+-]?\\d\\d?)");
-                break;
-        }
-        Array.add(groups, match[0]);
-    }
-    Date._appendPreOrPostMatch(expFormat.slice(index), regexp);
-    regexp.append("$");
-    var regexpStr = regexp.toString().replace(/\s+/g, "\\s+");
-    var parseRegExp = {'regExp': regexpStr, 'groups': groups};
-    dtf._parseRegExp[format] = parseRegExp;
-    return parseRegExp;
-}
-Date._getTokenRegExp = function Date$_getTokenRegExp() {
-    return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;
-}
-Date.parseLocale = function Date$parseLocale(value, formats) {
-    /// <summary locid="M:J#Date.parseLocale" />
-    /// <param name="value" type="String"></param>
-    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
-    /// <returns type="Date"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String},
-        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-    return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments);
-}
-Date.parseInvariant = function Date$parseInvariant(value, formats) {
-    /// <summary locid="M:J#Date.parseInvariant" />
-    /// <param name="value" type="String"></param>
-    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
-    /// <returns type="Date"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String},
-        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
-    ]);
-    if (e) throw e;
-    return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments);
-}
-Date._parse = function Date$_parse(value, cultureInfo, args) {
-    var custom = false;
-    for (var i = 1, il = args.length; i < il; i++) {
-        var format = args[i];
-        if (format) {
-            custom = true;
-            var date = Date._parseExact(value, format, cultureInfo);
-            if (date) return date;
-        }
-    }
-    if (! custom) {
-        var formats = cultureInfo._getDateTimeFormats();
-        for (var i = 0, il = formats.length; i < il; i++) {
-            var date = Date._parseExact(value, formats[i], cultureInfo);
-            if (date) return date;
-        }
-    }
-    return null;
-}
-Date._parseExact = function Date$_parseExact(value, format, cultureInfo) {
-    value = value.trim();
-    var dtf = cultureInfo.dateTimeFormat;
-    var parseInfo = Date._getParseRegExp(dtf, format);
-    var match = new RegExp(parseInfo.regExp).exec(value);
-    if (match === null) return null;
-    
-    var groups = parseInfo.groups;
-    var year = null, month = null, date = null, weekDay = null;
-    var hour = 0, min = 0, sec = 0, msec = 0, tzMinOffset = null;
-    var pmHour = false;
-    for (var j = 0, jl = groups.length; j < jl; j++) {
-        var matchGroup = match[j+1];
-        if (matchGroup) {
-            switch (groups[j]) {
-                case 'dd': case 'd':
-                    date = parseInt(matchGroup, 10);
-                    if ((date < 1) || (date > 31)) return null;
-                    break;
-                case 'MMMM':
-                    month = cultureInfo._getMonthIndex(matchGroup);
-                    if ((month < 0) || (month > 11)) return null;
-                    break;
-                case 'MMM':
-                    month = cultureInfo._getAbbrMonthIndex(matchGroup);
-                    if ((month < 0) || (month > 11)) return null;
-                    break;
-                case 'M': case 'MM':
-                    var month = parseInt(matchGroup, 10) - 1;
-                    if ((month < 0) || (month > 11)) return null;
-                    break;
-                case 'y': case 'yy':
-                    year = Date._expandYear(dtf,parseInt(matchGroup, 10));
-                    if ((year < 0) || (year > 9999)) return null;
-                    break;
-                case 'yyyy':
-                    year = parseInt(matchGroup, 10);
-                    if ((year < 0) || (year > 9999)) return null;
-                    break;
-                case 'h': case 'hh':
-                    hour = parseInt(matchGroup, 10);
-                    if (hour === 12) hour = 0;
-                    if ((hour < 0) || (hour > 11)) return null;
-                    break;
-                case 'H': case 'HH':
-                    hour = parseInt(matchGroup, 10);
-                    if ((hour < 0) || (hour > 23)) return null;
-                    break;
-                case 'm': case 'mm':
-                    min = parseInt(matchGroup, 10);
-                    if ((min < 0) || (min > 59)) return null;
-                    break;
-                case 's': case 'ss':
-                    sec = parseInt(matchGroup, 10);
-                    if ((sec < 0) || (sec > 59)) return null;
-                    break;
-                case 'tt': case 't':
-                    var upperToken = matchGroup.toUpperCase();
-                    pmHour = (upperToken === dtf.PMDesignator.toUpperCase());
-                    if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null;
-                    break;
-                case 'f':
-                    msec = parseInt(matchGroup, 10) * 100;
-                    if ((msec < 0) || (msec > 999)) return null;
-                    break;
-                case 'ff':
-                    msec = parseInt(matchGroup, 10) * 10;
-                    if ((msec < 0) || (msec > 999)) return null;
-                    break;
-                case 'fff':
-                    msec = parseInt(matchGroup, 10);
-                    if ((msec < 0) || (msec > 999)) return null;
-                    break;
-                case 'dddd':
-                    weekDay = cultureInfo._getDayIndex(matchGroup);
-                    if ((weekDay < 0) || (weekDay > 6)) return null;
-                    break;
-                case 'ddd':
-                    weekDay = cultureInfo._getAbbrDayIndex(matchGroup);
-                    if ((weekDay < 0) || (weekDay > 6)) return null;
-                    break;
-                case 'zzz':
-                    var offsets = matchGroup.split(/:/);
-                    if (offsets.length !== 2) return null;
-                    var hourOffset = parseInt(offsets[0], 10);
-                    if ((hourOffset < -12) || (hourOffset > 13)) return null;
-                    var minOffset = parseInt(offsets[1], 10);
-                    if ((minOffset < 0) || (minOffset > 59)) return null;
-                    tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset);
-                    break;
-                case 'z': case 'zz':
-                    var hourOffset = parseInt(matchGroup, 10);
-                    if ((hourOffset < -12) || (hourOffset > 13)) return null;
-                    tzMinOffset = hourOffset * 60;
-                    break;
-            }
-        }
-    }
-    var result = new Date();
-    if (year === null) {
-        year = result.getFullYear();
-    }
-    if (month === null) {
-        month = result.getMonth();
-    }
-    if (date === null) {
-        date = result.getDate();
-    }
-    result.setFullYear(year, month, date);
-    if (result.getDate() !== date) return null;
-    if ((weekDay !== null) && (result.getDay() !== weekDay)) {
-        return null;
-    }
-    if (pmHour && (hour < 12)) {
-        hour += 12;
-    }
-    result.setHours(hour, min, sec, msec);
-    if (tzMinOffset !== null) {
-        var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset());
-        result.setHours(result.getHours() + parseInt(adjustedMin/60, 10), adjustedMin%60);
-    }
-    return result;
-}
-Date.prototype.format = function Date$format(format) {
-    /// <summary locid="M:J#Date.format" />
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
-}
-Date.prototype.localeFormat = function Date$localeFormat(format) {
-    /// <summary locid="M:J#Date.localeFormat" />
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
-}
-Date.prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) {
-    if (!format || (format.length === 0) || (format === 'i')) {
-        if (cultureInfo && (cultureInfo.name.length > 0)) {
-            return this.toLocaleString();
-        }
-        else {
-            return this.toString();
-        }
-    }
-    var dtf = cultureInfo.dateTimeFormat;
-    format = Date._expandFormat(dtf, format);
-    var ret = new Sys.StringBuilder();
-    var hour;
-    function addLeadingZero(num) {
-        if (num < 10) {
-            return '0' + num;
-        }
-        return num.toString();
-    }
-    function addLeadingZeros(num) {
-        if (num < 10) {
-            return '00' + num;
-        }
-        if (num < 100) {
-            return '0' + num;
-        }
-        return num.toString();
-    }
-    var quoteCount = 0;
-    var tokenRegExp = Date._getTokenRegExp();
-    for (;;) {
-        var index = tokenRegExp.lastIndex;
-        var ar = tokenRegExp.exec(format);
-        var preMatch = format.slice(index, ar ? ar.index : format.length);
-        quoteCount += Date._appendPreOrPostMatch(preMatch, ret);
-        if (!ar) break;
-        if ((quoteCount%2) === 1) {
-            ret.append(ar[0]);
-            continue;
-        }
-        switch (ar[0]) {
-        case "dddd":
-            ret.append(dtf.DayNames[this.getDay()]);
-            break;
-        case "ddd":
-            ret.append(dtf.AbbreviatedDayNames[this.getDay()]);
-            break;
-        case "dd":
-            ret.append(addLeadingZero(this.getDate()));
-            break;
-        case "d":
-            ret.append(this.getDate());
-            break;
-        case "MMMM":
-            ret.append(dtf.MonthNames[this.getMonth()]);
-            break;
-        case "MMM":
-            ret.append(dtf.AbbreviatedMonthNames[this.getMonth()]);
-            break;
-        case "MM":
-            ret.append(addLeadingZero(this.getMonth() + 1));
-            break;
-        case "M":
-            ret.append(this.getMonth() + 1);
-            break;
-        case "yyyy":
-            ret.append(this.getFullYear());
-            break;
-        case "yy":
-            ret.append(addLeadingZero(this.getFullYear() % 100));
-            break;
-        case "y":
-            ret.append(this.getFullYear() % 100);
-            break;
-        case "hh":
-            hour = this.getHours() % 12;
-            if (hour === 0) hour = 12;
-            ret.append(addLeadingZero(hour));
-            break;
-        case "h":
-            hour = this.getHours() % 12;
-            if (hour === 0) hour = 12;
-            ret.append(hour);
-            break;
-        case "HH":
-            ret.append(addLeadingZero(this.getHours()));
-            break;
-        case "H":
-            ret.append(this.getHours());
-            break;
-        case "mm":
-            ret.append(addLeadingZero(this.getMinutes()));
-            break;
-        case "m":
-            ret.append(this.getMinutes());
-            break;
-        case "ss":
-            ret.append(addLeadingZero(this.getSeconds()));
-            break;
-        case "s":
-            ret.append(this.getSeconds());
-            break;
-        case "tt":
-            ret.append((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator);
-            break;
-        case "t":
-            ret.append(((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0));
-            break;
-        case "f":
-            ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0));
-            break;
-        case "ff":
-            ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2));
-            break;
-        case "fff":
-            ret.append(addLeadingZeros(this.getMilliseconds()));
-            break;
-        case "z":
-            hour = this.getTimezoneOffset() / 60;
-            ret.append(((hour <= 0) ? '+' : '-') + Math.floor(Math.abs(hour)));
-            break;
-        case "zz":
-            hour = this.getTimezoneOffset() / 60;
-            ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))));
-            break;
-        case "zzz":
-            hour = this.getTimezoneOffset() / 60;
-            ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) +
-                dtf.TimeSeparator + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60)));
-            break;
-        }
-    }
-    return ret.toString();
-}
- 
-Number.__typeName = 'Number';
-Number.__class = true;
-Number.parseLocale = function Number$parseLocale(value) {
-    /// <summary locid="M:J#Number.parseLocale" />
-    /// <param name="value" type="String"></param>
-    /// <returns type="Number"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String}
-    ]);
-    if (e) throw e;
-    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
-}
-Number.parseInvariant = function Number$parseInvariant(value) {
-    /// <summary locid="M:J#Number.parseInvariant" />
-    /// <param name="value" type="String"></param>
-    /// <returns type="Number"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String}
-    ]);
-    if (e) throw e;
-    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
-}
-Number._parse = function Number$_parse(value, cultureInfo) {
-    value = value.trim();
-    
-    if (value.match(/^[+-]?infinity$/i)) {
-        return parseFloat(value);
-    }
-    if (value.match(/^0x[a-f0-9]+$/i)) {
-        return parseInt(value);
-    }
-    var numFormat = cultureInfo.numberFormat;
-    var signInfo = Number._parseNumberNegativePattern(value, numFormat, numFormat.NumberNegativePattern);
-    var sign = signInfo[0];
-    var num = signInfo[1];
-    
-    if ((sign === '') && (numFormat.NumberNegativePattern !== 1)) {
-        signInfo = Number._parseNumberNegativePattern(value, numFormat, 1);
-        sign = signInfo[0];
-        num = signInfo[1];
-    }
-    if (sign === '') sign = '+';
-    
-    var exponent;
-    var intAndFraction;
-    var exponentPos = num.indexOf('e');
-    if (exponentPos < 0) exponentPos = num.indexOf('E');
-    if (exponentPos < 0) {
-        intAndFraction = num;
-        exponent = null;
-    }
-    else {
-        intAndFraction = num.substr(0, exponentPos);
-        exponent = num.substr(exponentPos + 1);
-    }
-    
-    var integer;
-    var fraction;
-    var decimalPos = intAndFraction.indexOf(numFormat.NumberDecimalSeparator);
-    if (decimalPos < 0) {
-        integer = intAndFraction;
-        fraction = null;
-    }
-    else {
-        integer = intAndFraction.substr(0, decimalPos);
-        fraction = intAndFraction.substr(decimalPos + numFormat.NumberDecimalSeparator.length);
-    }
-    
-    integer = integer.split(numFormat.NumberGroupSeparator).join('');
-    
-    var p = sign + integer;
-    if (fraction !== null) {
-        p += '.' + fraction;
-    }
-    if (exponent !== null) {
-        var expSignInfo = Number._parseNumberNegativePattern(exponent, numFormat, 1);
-        if (expSignInfo[0] === '') {
-            expSignInfo[0] = '+';
-        }
-        p += 'e' + expSignInfo[0] + expSignInfo[1];
-    }
-    if (p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)) {
-        return parseFloat(p);
-    }
-    return Number.NaN;
-}
-Number._parseNumberNegativePattern = function Number$_parseNumberNegativePattern(value, numFormat, numberNegativePattern) {
-    var neg = numFormat.NegativeSign;
-    var pos = numFormat.PositiveSign;    
-    switch (numberNegativePattern) {
-        case 4: 
-            neg = ' ' + neg;
-            pos = ' ' + pos;
-        case 3: 
-            if (value.endsWith(neg)) {
-                return ['-', value.substr(0, value.length - neg.length)];
-            }
-            else if (value.endsWith(pos)) {
-                return ['+', value.substr(0, value.length - pos.length)];
-            }
-            break;
-        case 2: 
-            neg += ' ';
-            pos += ' ';
-        case 1: 
-            if (value.startsWith(neg)) {
-                return ['-', value.substr(neg.length)];
-            }
-            else if (value.startsWith(pos)) {
-                return ['+', value.substr(pos.length)];
-            }
-            break;
-        case 0: 
-            if (value.startsWith('(') && value.endsWith(')')) {
-                return ['-', value.substr(1, value.length - 2)];
-            }
-            break;
-    }
-    return ['', value];
-}
-Number.prototype.format = function Number$format(format) {
-    /// <summary locid="M:J#Number.format" />
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
-}
-Number.prototype.localeFormat = function Number$localeFormat(format) {
-    /// <summary locid="M:J#Number.localeFormat" />
-    /// <param name="format" type="String"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "format", type: String}
-    ]);
-    if (e) throw e;
-    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
-}
-Number.prototype._toFormattedString = function Number$_toFormattedString(format, cultureInfo) {
-    if (!format || (format.length === 0) || (format === 'i')) {
-        if (cultureInfo && (cultureInfo.name.length > 0)) {
-            return this.toLocaleString();
-        }
-        else {
-            return this.toString();
-        }
-    }
-    var _percentPositivePattern = ["n %", "n%", "%n" ];
-    var _percentNegativePattern = ["-n %", "-n%", "-%n"];
-    var _numberNegativePattern = ["(n)","-n","- n","n-","n -"];
-    var _currencyPositivePattern = ["$n","n$","$ n","n $"];
-    var _currencyNegativePattern = ["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];
-    function expandNumber(number, precision, groupSizes, sep, decimalChar) {
-        
-        var curSize = groupSizes[0];
-        var curGroupIndex = 1;
-        var numberString = number.toString();
-        var right = "";
-        var exponent = "";
-        var decimalSplit = numberString.split('.');
-        if (decimalSplit.length > 1) {
-            numberString = decimalSplit[0];
-            right = decimalSplit[1];
-            var exponentSplit = right.split(/e/i);
-            if (exponentSplit.length > 1) {
-                right = exponentSplit[0];
-                exponent = "e" + exponentSplit[1];
-            }
-        }
-        if (precision > 0) {
-            var rightDifference = right.length - precision;
-            if (rightDifference > 0) {
-                right = right.slice(0, precision);
-            } else if (rightDifference < 0) {
-                for (var i=0; i<Math.abs(rightDifference); i++) {
-                    right += '0';
-                }
-            }
-            right = decimalChar + right;
-        }
-        else { 
-            right = "";
-        }
-        right += exponent;
-        var stringIndex = numberString.length-1;
-        var ret = "";
-        while (stringIndex >= 0) {
-            if (curSize === 0 || curSize > stringIndex) {
-                if (ret.length > 0)
-                    return numberString.slice(0, stringIndex + 1) + sep + ret + right;
-                else
-                    return numberString.slice(0, stringIndex + 1) + right;
-            }
-            if (ret.length > 0)
-                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1) + sep + ret;
-            else
-                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1);
-            stringIndex -= curSize;
-            if (curGroupIndex < groupSizes.length) {
-                curSize = groupSizes[curGroupIndex];
-                curGroupIndex++;
-            }
-        }
-        return numberString.slice(0, stringIndex + 1) + sep + ret + right;
-    }
-    var nf = cultureInfo.numberFormat;
-    var number = Math.abs(this);
-    if (!format)
-        format = "D";
-    var precision = -1;
-    if (format.length > 1) precision = parseInt(format.slice(1), 10);
-    var pattern;
-    switch (format.charAt(0)) {
-    case "d":
-    case "D":
-        pattern = 'n';
-        if (precision !== -1) {
-            var numberStr = ""+number;
-            var zerosToAdd = precision - numberStr.length;
-            if (zerosToAdd > 0) {
-                for (var i=0; i<zerosToAdd; i++) {
-                    numberStr = '0'+numberStr;
-                }
-            }
-            number = numberStr;
-        }
-        if (this < 0) number = -number;
-        break;
-    case "c":
-    case "C":
-        if (this < 0) pattern = _currencyNegativePattern[nf.CurrencyNegativePattern];
-        else pattern = _currencyPositivePattern[nf.CurrencyPositivePattern];
-        if (precision === -1) precision = nf.CurrencyDecimalDigits;
-        number = expandNumber(Math.abs(this), precision, nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, nf.CurrencyDecimalSeparator);
-        break;
-    case "n":
-    case "N":
-        if (this < 0) pattern = _numberNegativePattern[nf.NumberNegativePattern];
-        else pattern = 'n';
-        if (precision === -1) precision = nf.NumberDecimalDigits;
-        number = expandNumber(Math.abs(this), precision, nf.NumberGroupSizes, nf.NumberGroupSeparator, nf.NumberDecimalSeparator);
-        break;
-    case "p":
-    case "P":
-        if (this < 0) pattern = _percentNegativePattern[nf.PercentNegativePattern];
-        else pattern = _percentPositivePattern[nf.PercentPositivePattern];
-        if (precision === -1) precision = nf.PercentDecimalDigits;
-        number = expandNumber(Math.abs(this), precision, nf.PercentGroupSizes, nf.PercentGroupSeparator, nf.PercentDecimalSeparator);
-        break;
-    default:
-        throw Error.format(Sys.Res.formatBadFormatSpecifier);
-    }
-    var regex = /n|\$|-|%/g;
-    var ret = "";
-    for (;;) {
-        var index = regex.lastIndex;
-        var ar = regex.exec(pattern);
-        ret += pattern.slice(index, ar ? ar.index : pattern.length);
-        if (!ar)
-            break;
-        switch (ar[0]) {
-        case "n":
-            ret += number;
-            break;
-        case "$":
-            ret += nf.CurrencySymbol;
-            break;
-        case "-":
-            ret += nf.NegativeSign;
-            break;
-        case "%":
-            ret += nf.PercentSymbol;
-            break;
-        }
-    }
-    return ret;
-}
- 
-RegExp.__typeName = 'RegExp';
-RegExp.__class = true;
- 
-Array.__typeName = 'Array';
-Array.__class = true;
-Array.add = Array.enqueue = function Array$enqueue(array, item) {
-    /// <summary locid="M:J#Array.enqueue" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    array[array.length] = item;
-}
-Array.addRange = function Array$addRange(array, items) {
-    /// <summary locid="M:J#Array.addRange" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="items" type="Array" elementMayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "items", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-    array.push.apply(array, items);
-}
-Array.clear = function Array$clear(array) {
-    /// <summary locid="M:J#Array.clear" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-    array.length = 0;
-}
-Array.clone = function Array$clone(array) {
-    /// <summary locid="M:J#Array.clone" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <returns type="Array" elementMayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-    if (array.length === 1) {
-        return [array[0]];
-    }
-    else {
-        return Array.apply(null, array);
-    }
-}
-Array.contains = function Array$contains(array, item) {
-    /// <summary locid="M:J#Array.contains" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    return (Array.indexOf(array, item) >= 0);
-}
-Array.dequeue = function Array$dequeue(array) {
-    /// <summary locid="M:J#Array.dequeue" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <returns mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-    return array.shift();
-}
-Array.forEach = function Array$forEach(array, method, instance) {
-    /// <summary locid="M:J#Array.forEach" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="method" type="Function"></param>
-    /// <param name="instance" optional="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "method", type: Function},
-        {name: "instance", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    for (var i = 0, l = array.length; i < l; i++) {
-        var elt = array[i];
-        if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array);
-    }
-}
-Array.indexOf = function Array$indexOf(array, item, start) {
-    /// <summary locid="M:J#Array.indexOf" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" optional="true" mayBeNull="true"></param>
-    /// <param name="start" optional="true" mayBeNull="true"></param>
-    /// <returns type="Number"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true, optional: true},
-        {name: "start", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    if (typeof(item) === "undefined") return -1;
-    var length = array.length;
-    if (length !== 0) {
-        start = start - 0;
-        if (isNaN(start)) {
-            start = 0;
-        }
-        else {
-            if (isFinite(start)) {
-                start = start - (start % 1);
-            }
-            if (start < 0) {
-                start = Math.max(0, length + start);
-            }
-        }
-        for (var i = start; i < length; i++) {
-            if ((typeof(array[i]) !== "undefined") && (array[i] === item)) {
-                return i;
-            }
-        }
-    }
-    return -1;
-}
-Array.insert = function Array$insert(array, index, item) {
-    /// <summary locid="M:J#Array.insert" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="index" mayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "index", mayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    array.splice(index, 0, item);
-}
-Array.parse = function Array$parse(value) {
-    /// <summary locid="M:J#Array.parse" />
-    /// <param name="value" type="String" mayBeNull="true"></param>
-    /// <returns type="Array" elementMayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String, mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if (!value) return [];
-    var v = eval(value);
-    if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat);
-    return v;
-}
-Array.remove = function Array$remove(array, item) {
-    /// <summary locid="M:J#Array.remove" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="item" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "item", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    var index = Array.indexOf(array, item);
-    if (index >= 0) {
-        array.splice(index, 1);
-    }
-    return (index >= 0);
-}
-Array.removeAt = function Array$removeAt(array, index) {
-    /// <summary locid="M:J#Array.removeAt" />
-    /// <param name="array" type="Array" elementMayBeNull="true"></param>
-    /// <param name="index" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "array", type: Array, elementMayBeNull: true},
-        {name: "index", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    array.splice(index, 1);
-}
- 
-if (!window) this.window = this;
-window.Type = Function;
-Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
-Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");
-Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) {
-    /// <summary locid="M:J#Type.callBaseMethod" />
-    /// <param name="instance"></param>
-    /// <param name="name" type="String"></param>
-    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"},
-        {name: "name", type: String},
-        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-    var baseMethod = this.getBaseMethod(instance, name);
-    if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
-    if (!baseArguments) {
-        return baseMethod.apply(instance);
-    }
-    else {
-        return baseMethod.apply(instance, baseArguments);
-    }
-}
-Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name) {
-    /// <summary locid="M:J#Type.getBaseMethod" />
-    /// <param name="instance"></param>
-    /// <param name="name" type="String"></param>
-    /// <returns type="Function" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"},
-        {name: "name", type: String}
-    ]);
-    if (e) throw e;
-    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
-    var baseType = this.getBaseType();
-    if (baseType) {
-        var baseMethod = baseType.prototype[name];
-        return (baseMethod instanceof Function) ? baseMethod : null;
-    }
-    return null;
-}
-Type.prototype.getBaseType = function Type$getBaseType() {
-    /// <summary locid="M:J#Type.getBaseType" />
-    /// <returns type="Type" mayBeNull="true"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
-}
-Type.prototype.getInterfaces = function Type$getInterfaces() {
-    /// <summary locid="M:J#Type.getInterfaces" />
-    /// <returns type="Array" elementType="Type" mayBeNull="false" elementMayBeNull="false"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    var result = [];
-    var type = this;
-    while(type) {
-        var interfaces = type.__interfaces;
-        if (interfaces) {
-            for (var i = 0, l = interfaces.length; i < l; i++) {
-                var interfaceType = interfaces[i];
-                if (!Array.contains(result, interfaceType)) {
-                    result[result.length] = interfaceType;
-                }
-            }
-        }
-        type = type.__baseType;
-    }
-    return result;
-}
-Type.prototype.getName = function Type$getName() {
-    /// <summary locid="M:J#Type.getName" />
-    /// <returns type="String"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
-}
-Type.prototype.implementsInterface = function Type$implementsInterface(interfaceType) {
-    /// <summary locid="M:J#Type.implementsInterface" />
-    /// <param name="interfaceType" type="Type"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "interfaceType", type: Type}
-    ]);
-    if (e) throw e;
-    this.resolveInheritance();
-    var interfaceName = interfaceType.getName();
-    var cache = this.__interfaceCache;
-    if (cache) {
-        var cacheEntry = cache[interfaceName];
-        if (typeof(cacheEntry) !== 'undefined') return cacheEntry;
-    }
-    else {
-        cache = this.__interfaceCache = {};
-    }
-    var baseType = this;
-    while (baseType) {
-        var interfaces = baseType.__interfaces;
-        if (interfaces) {
-            if (Array.indexOf(interfaces, interfaceType) !== -1) {
-                return cache[interfaceName] = true;
-            }
-        }
-        baseType = baseType.__baseType;
-    }
-    return cache[interfaceName] = false;
-}
-Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType) {
-    /// <summary locid="M:J#Type.inheritsFrom" />
-    /// <param name="parentType" type="Type"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "parentType", type: Type}
-    ]);
-    if (e) throw e;
-    this.resolveInheritance();
-    var baseType = this.__baseType;
-    while (baseType) {
-        if (baseType === parentType) {
-            return true;
-        }
-        baseType = baseType.__baseType;
-    }
-    return false;
-}
-Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments) {
-    /// <summary locid="M:J#Type.initializeBase" />
-    /// <param name="instance"></param>
-    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance"},
-        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
-    ]);
-    if (e) throw e;
-    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
-    this.resolveInheritance();
-    if (this.__baseType) {
-        if (!baseArguments) {
-            this.__baseType.apply(instance);
-        }
-        else {
-            this.__baseType.apply(instance, baseArguments);
-        }
-    }
-    return instance;
-}
-Type.prototype.isImplementedBy = function Type$isImplementedBy(instance) {
-    /// <summary locid="M:J#Type.isImplementedBy" />
-    /// <param name="instance" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if (typeof(instance) === "undefined" || instance === null) return false;
-    var instanceType = Object.getType(instance);
-    return !!(instanceType.implementsInterface && instanceType.implementsInterface(this));
-}
-Type.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {
-    /// <summary locid="M:J#Type.isInstanceOfType" />
-    /// <param name="instance" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "instance", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if (typeof(instance) === "undefined" || instance === null) return false;
-    if (instance instanceof this) return true;
-    var instanceType = Object.getType(instance);
-    return !!(instanceType === this) ||
-           (instanceType.inheritsFrom && instanceType.inheritsFrom(this)) ||
-           (instanceType.implementsInterface && instanceType.implementsInterface(this));
-}
-Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {
-    /// <summary locid="M:J#Type.registerClass" />
-    /// <param name="typeName" type="String"></param>
-    /// <param name="baseType" type="Type" optional="true" mayBeNull="true"></param>
-    /// <param name="interfaceTypes" parameterArray="true" type="Type"></param>
-    /// <returns type="Type"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "typeName", type: String},
-        {name: "baseType", type: Type, mayBeNull: true, optional: true},
-        {name: "interfaceTypes", type: Type, parameterArray: true}
-    ]);
-    if (e) throw e;
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
-    var parsedName;
-    try {
-        parsedName = eval(typeName);
-    }
-    catch(e) {
-        throw Error.argument('typeName', Sys.Res.argumentTypeName);
-    }
-    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
-    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
-    if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType');
-    if (baseType && !baseType.__class) throw Error.argument('baseType', Sys.Res.baseNotAClass);
-    this.prototype.constructor = this;
-    this.__typeName = typeName;
-    this.__class = true;
-    if (baseType) {
-        this.__baseType = baseType;
-        this.__basePrototypePending = true;
-    }
-    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;
-    if (interfaceTypes) {
-        this.__interfaces = [];
-        this.resolveInheritance();
-        for (var i = 2, l = arguments.length; i < l; i++) {
-            var interfaceType = arguments[i];
-            if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface);
-            for (var methodName in interfaceType.prototype) {
-                var method = interfaceType.prototype[methodName];
-                if (!this.prototype[methodName]) {
-                    this.prototype[methodName] = method;
-                }
-            }
-            this.__interfaces.push(interfaceType);
-        }
-    }
-    Sys.__registeredTypes[typeName] = true;
-    return this;
-}
-Type.prototype.registerInterface = function Type$registerInterface(typeName) {
-    /// <summary locid="M:J#Type.registerInterface" />
-    /// <param name="typeName" type="String"></param>
-    /// <returns type="Type"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "typeName", type: String}
-    ]);
-    if (e) throw e;
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
-    var parsedName;
-    try {
-        parsedName = eval(typeName);
-    }
-    catch(e) {
-        throw Error.argument('typeName', Sys.Res.argumentTypeName);
-    }
-    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
-    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
-    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;
-    this.prototype.constructor = this;
-    this.__typeName = typeName;
-    this.__interface = true;
-    Sys.__registeredTypes[typeName] = true;
-    return this;
-}
-Type.prototype.resolveInheritance = function Type$resolveInheritance() {
-    /// <summary locid="M:J#Type.resolveInheritance" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    if (this.__basePrototypePending) {
-        var baseType = this.__baseType;
-        baseType.resolveInheritance();
-        for (var memberName in baseType.prototype) {
-            var memberValue = baseType.prototype[memberName];
-            if (!this.prototype[memberName]) {
-                this.prototype[memberName] = memberValue;
-            }
-        }
-        delete this.__basePrototypePending;
-    }
-}
-Type.getRootNamespaces = function Type$getRootNamespaces() {
-    /// <summary locid="M:J#Type.getRootNamespaces" />
-    /// <returns type="Array"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    return Array.clone(Sys.__rootNamespaces);
-}
-Type.isClass = function Type$isClass(type) {
-    /// <summary locid="M:J#Type.isClass" />
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__class;
-}
-Type.isInterface = function Type$isInterface(type) {
-    /// <summary locid="M:J#Type.isInterface" />
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__interface;
-}
-Type.isNamespace = function Type$isNamespace(object) {
-    /// <summary locid="M:J#Type.isNamespace" />
-    /// <param name="object" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "object", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if ((typeof(object) === 'undefined') || (object === null)) return false;
-    return !!object.__namespace;
-}
-Type.parse = function Type$parse(typeName, ns) {
-    /// <summary locid="M:J#Type.parse" />
-    /// <param name="typeName" type="String" mayBeNull="true"></param>
-    /// <param name="ns" optional="true" mayBeNull="true"></param>
-    /// <returns type="Type" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "typeName", type: String, mayBeNull: true},
-        {name: "ns", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    var fn;
-    if (ns) {
-        fn = Sys.__upperCaseTypes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()];
-        return fn || null;
-    }
-    if (!typeName) return null;
-    if (!Type.__htClasses) {
-        Type.__htClasses = {};
-    }
-    fn = Type.__htClasses[typeName];
-    if (!fn) {
-        fn = eval(typeName);
-        if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName);
-        Type.__htClasses[typeName] = fn;
-    }
-    return fn;
-}
-Type.registerNamespace = function Type$registerNamespace(namespacePath) {
-    /// <summary locid="M:J#Type.registerNamespace" />
-    /// <param name="namespacePath" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "namespacePath", type: String}
-    ]);
-    if (e) throw e;
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
-    var rootObject = window;
-    var namespaceParts = namespacePath.split('.');
-    for (var i = 0; i < namespaceParts.length; i++) {
-        var currentPart = namespaceParts[i];
-        var ns = rootObject[currentPart];
-        if (ns && !ns.__namespace) {
-            throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsObject, namespaceParts.splice(0, i + 1).join('.')));
-        }
-        if (!ns) {
-            ns = rootObject[currentPart] = {
-                __namespace: true,
-                __typeName: namespaceParts.slice(0, i + 1).join('.')
-            };
-            if (i === 0) {
-                Sys.__rootNamespaces[Sys.__rootNamespaces.length] = ns;
-            }
-            var parsedName;
-            try {
-                parsedName = eval(ns.__typeName);
-            }
-            catch(e) {
-                parsedName = null;
-            }
-            if (parsedName !== ns) {
-                delete rootObject[currentPart];
-                throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
-            }
-            ns.getName = function ns$getName() {return this.__typeName;}
-        }
-        rootObject = ns;
-    }
-}
-window.Sys = {
-    __namespace: true,
-    __typeName: "Sys",
-    getName: function() {return "Sys";},
-    __upperCaseTypes: {}
-};
-Sys.__rootNamespaces = [Sys];
-Sys.__registeredTypes = {};
- 
-Sys.IDisposable = function Sys$IDisposable() {
-    throw Error.notImplemented();
-}
-    function Sys$IDisposable$dispose() {
-        throw Error.notImplemented();
-    }
-Sys.IDisposable.prototype = {
-    dispose: Sys$IDisposable$dispose
-}
-Sys.IDisposable.registerInterface('Sys.IDisposable');
- 
-Sys.StringBuilder = function Sys$StringBuilder(initialText) {
-    /// <summary locid="M:J#Sys.StringBuilder.#ctor" />
-    /// <param name="initialText" optional="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "initialText", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ?
-        [initialText.toString()] : [];
-    this._value = {};
-    this._len = 0;
-}
-    function Sys$StringBuilder$append(text) {
-        /// <summary locid="M:J#Sys.StringBuilder.append" />
-        /// <param name="text" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "text", mayBeNull: true}
-        ]);
-        if (e) throw e;
-        this._parts[this._parts.length] = text;
-    }
-    function Sys$StringBuilder$appendLine(text) {
-        /// <summary locid="M:J#Sys.StringBuilder.appendLine" />
-        /// <param name="text" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "text", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        this._parts[this._parts.length] =
-            ((typeof(text) === 'undefined') || (text === null) || (text === '')) ?
-            '\r\n' : text + '\r\n';
-    }
-    function Sys$StringBuilder$clear() {
-        /// <summary locid="M:J#Sys.StringBuilder.clear" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        this._parts = [];
-        this._value = {};
-        this._len = 0;
-    }
-    function Sys$StringBuilder$isEmpty() {
-        /// <summary locid="M:J#Sys.StringBuilder.isEmpty" />
-        /// <returns type="Boolean"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._parts.length === 0) return true;
-        return this.toString() === '';
-    }
-    function Sys$StringBuilder$toString(separator) {
-        /// <summary locid="M:J#Sys.StringBuilder.toString" />
-        /// <param name="separator" type="String" optional="true" mayBeNull="true"></param>
-        /// <returns type="String"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "separator", type: String, mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        separator = separator || '';
-        var parts = this._parts;
-        if (this._len !== parts.length) {
-            this._value = {};
-            this._len = parts.length;
-        }
-        var val = this._value;
-        if (typeof(val[separator]) === 'undefined') {
-            if (separator !== '') {
-                for (var i = 0; i < parts.length;) {
-                    if ((typeof(parts[i]) === 'undefined') || (parts[i] === '') || (parts[i] === null)) {
-                        parts.splice(i, 1);
-                    }
-                    else {
-                        i++;
-                    }
-                }
-            }
-            val[separator] = this._parts.join(separator);
-        }
-        return val[separator];
-    }
-Sys.StringBuilder.prototype = {
-    append: Sys$StringBuilder$append,
-    appendLine: Sys$StringBuilder$appendLine,
-    clear: Sys$StringBuilder$clear,
-    isEmpty: Sys$StringBuilder$isEmpty,
-    toString: Sys$StringBuilder$toString
-}
-Sys.StringBuilder.registerClass('Sys.StringBuilder');
- 
-if (!window.XMLHttpRequest) {
-    window.XMLHttpRequest = function window$XMLHttpRequest() {
-        var progIDs = [ 'Mxsml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ];
-        for (var i = 0, l = progIDs.length; i < l; i++) {
-            try {
-                return new ActiveXObject(progIDs[i]);
-            }
-            catch (ex) {
-            }
-        }
-        return null;
-    }
-}
- 
-Sys.Browser = {};
-Sys.Browser.InternetExplorer = {};
-Sys.Browser.Firefox = {};
-Sys.Browser.Safari = {};
-Sys.Browser.Opera = {};
-Sys.Browser.agent = null;
-Sys.Browser.hasDebuggerStatement = false;
-Sys.Browser.name = navigator.appName;
-Sys.Browser.version = parseFloat(navigator.appVersion);
-if (navigator.userAgent.indexOf(' MSIE ') > -1) {
-    Sys.Browser.agent = Sys.Browser.InternetExplorer;
-    Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);
-    Sys.Browser.hasDebuggerStatement = true;
-}
-else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
-    Sys.Browser.agent = Sys.Browser.Firefox;
-    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]);
-    Sys.Browser.name = 'Firefox';
-    Sys.Browser.hasDebuggerStatement = true;
-}
-else if (navigator.userAgent.indexOf(' Safari/') > -1) {
-    Sys.Browser.agent = Sys.Browser.Safari;
-    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d+(\.\d+)?)/)[1]);
-    Sys.Browser.name = 'Safari';
-}
-else if (navigator.userAgent.indexOf('Opera/') > -1) {
-    Sys.Browser.agent = Sys.Browser.Opera;
-}
-Type.registerNamespace('Sys.UI');
- 
-Sys._Debug = function Sys$_Debug() {
-    /// <summary locid="M:J#Sys._Debug.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-    function Sys$_Debug$_appendConsole(text) {
-        if ((typeof(Debug) !== 'undefined') && Debug.writeln) {
-            Debug.writeln(text);
-        }
-        if (window.console && window.console.log) {
-            window.console.log(text);
-        }
-        if (window.opera) {
-            window.opera.postError(text);
-        }
-        if (window.debugService) {
-            window.debugService.trace(text);
-        }
-    }
-    function Sys$_Debug$_appendTrace(text) {
-        var traceElement = document.getElementById('TraceConsole');
-        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
-            traceElement.value += text + '\n';
-        }
-    }
-    function Sys$_Debug$assert(condition, message, displayCaller) {
-        /// <summary locid="M:J#Sys._Debug.assert" />
-        /// <param name="condition" type="Boolean"></param>
-        /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="displayCaller" type="Boolean" optional="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "condition", type: Boolean},
-            {name: "message", type: String, mayBeNull: true, optional: true},
-            {name: "displayCaller", type: Boolean, optional: true}
-        ]);
-        if (e) throw e;
-        if (!condition) {
-            message = (displayCaller && this.assert.caller) ?
-                String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) :
-                String.format(Sys.Res.assertFailed, message);
-            if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) {
-                this.fail(message);
-            }
-        }
-    }
-    function Sys$_Debug$clearTrace() {
-        var traceElement = document.getElementById('TraceConsole');
-        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
-            traceElement.value = '';
-        }
-    }
-    function Sys$_Debug$fail(message) {
-        /// <summary locid="M:J#Sys._Debug.fail" />
-        /// <param name="message" type="String" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "message", type: String, mayBeNull: true}
-        ]);
-        if (e) throw e;
-        this._appendConsole(message);
-        if (Sys.Browser.hasDebuggerStatement) {
-            eval('debugger');
-        }
-    }
-    function Sys$_Debug$trace(text) {
-        /// <summary locid="M:J#Sys._Debug.trace" />
-        /// <param name="text"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "text"}
-        ]);
-        if (e) throw e;
-        this._appendConsole(text);
-        this._appendTrace(text);
-    }
-    function Sys$_Debug$traceDump(object, name) {
-        /// <summary locid="M:J#Sys._Debug.traceDump" />
-        /// <param name="object" mayBeNull="true"></param>
-        /// <param name="name" type="String" mayBeNull="true" optional="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "object", mayBeNull: true},
-            {name: "name", type: String, mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        var text = this._traceDump(object, name, true);
-    }
-    function Sys$_Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) {
-        name = name? name : 'traceDump';
-        indentationPadding = indentationPadding? indentationPadding : '';
-        if (object === null) {
-            this.trace(indentationPadding + name + ': null');
-            return;
-        }
-        switch(typeof(object)) {
-            case 'undefined':
-                this.trace(indentationPadding + name + ': Undefined');
-                break;
-            case 'number': case 'string': case 'boolean':
-                this.trace(indentationPadding + name + ': ' + object);
-                break;
-            default:
-                if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) {
-                    this.trace(indentationPadding + name + ': ' + object.toString());
-                    break;
-                }
-                if (!loopArray) {
-                    loopArray = [];
-                }
-                else if (Array.contains(loopArray, object)) {
-                    this.trace(indentationPadding + name + ': ...');
-                    return;
-                }
-                Array.add(loopArray, object);
-                if ((object == window) || (object === document) ||
-                    (window.HTMLElement && (object instanceof HTMLElement)) ||
-                    (typeof(object.nodeName) === 'string')) {
-                    var tag = object.tagName? object.tagName : 'DomElement';
-                    if (object.id) {
-                        tag += ' - ' + object.id;
-                    }
-                    this.trace(indentationPadding + name + ' {' +  tag + '}');
-                }
-                else {
-                    var typeName = Object.getTypeName(object);
-                    this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : ''));
-                    if ((indentationPadding === '') || recursive) {
-                        indentationPadding += "    ";
-                        var i, length, properties, p, v;
-                        if (Array.isInstanceOfType(object)) {
-                            length = object.length;
-                            for (i = 0; i < length; i++) {
-                                this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray);
-                            }
-                        }
-                        else {
-                            for (p in object) {
-                                v = object[p];
-                                if (!Function.isInstanceOfType(v)) {
-                                    this._traceDump(v, p, recursive, indentationPadding, loopArray);
-                                }
-                            }
-                        }
-                    }
-                }
-                Array.remove(loopArray, object);
-        }
-    }
-Sys._Debug.prototype = {
-    _appendConsole: Sys$_Debug$_appendConsole,
-    _appendTrace: Sys$_Debug$_appendTrace,
-    assert: Sys$_Debug$assert,
-    clearTrace: Sys$_Debug$clearTrace,
-    fail: Sys$_Debug$fail,
-    trace: Sys$_Debug$trace,
-    traceDump: Sys$_Debug$traceDump,
-    _traceDump: Sys$_Debug$_traceDump
-}
-Sys._Debug.registerClass('Sys._Debug');
-Sys.Debug = new Sys._Debug();
-    Sys.Debug.isDebug = true;
- 
-function Sys$Enum$parse(value, ignoreCase) {
-    /// <summary locid="M:J#Sys.Enum.parse" />
-    /// <param name="value" type="String"></param>
-    /// <param name="ignoreCase" type="Boolean" optional="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", type: String},
-        {name: "ignoreCase", type: Boolean, optional: true}
-    ]);
-    if (e) throw e;
-    var values, parsed, val;
-    if (ignoreCase) {
-        values = this.__lowerCaseValues;
-        if (!values) {
-            this.__lowerCaseValues = values = {};
-            var prototype = this.prototype;
-            for (var name in prototype) {
-                values[name.toLowerCase()] = prototype[name];
-            }
-        }
-    }
-    else {
-        values = this.prototype;
-    }
-    if (!this.__flags) {
-        val = (ignoreCase ? value.toLowerCase() : value);
-        parsed = values[val.trim()];
-        if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
-        return parsed;
-    }
-    else {
-        var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
-        var v = 0;
-        for (var i = parts.length - 1; i >= 0; i--) {
-            var part = parts[i].trim();
-            parsed = values[part];
-            if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName));
-            v |= parsed;
-        }
-        return v;
-    }
-}
-function Sys$Enum$toString(value) {
-    /// <summary locid="M:J#Sys.Enum.toString" />
-    /// <param name="value" optional="true" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "value", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    if ((typeof(value) === 'undefined') || (value === null)) return this.__string;
-    if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this);
-    var values = this.prototype;
-    var i;
-    if (!this.__flags || (value === 0)) {
-        for (i in values) {
-            if (values[i] === value) {
-                return i;
-            }
-        }
-    }
-    else {
-        var sorted = this.__sortedValues;
-        if (!sorted) {
-            sorted = [];
-            for (i in values) {
-                sorted[sorted.length] = {key: i, value: values[i]};
-            }
-            sorted.sort(function(a, b) {
-                return a.value - b.value;
-            });
-            this.__sortedValues = sorted;
-        }
-        var parts = [];
-        var v = value;
-        for (i = sorted.length - 1; i >= 0; i--) {
-            var kvp = sorted[i];
-            var vali = kvp.value;
-            if (vali === 0) continue;
-            if ((vali & value) === vali) {
-                parts[parts.length] = kvp.key;
-                v -= vali;
-                if (v === 0) break;
-            }
-        }
-        if (parts.length && v === 0) return parts.reverse().join(', ');
-    }
-    throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
-}
-Type.prototype.registerEnum = function Type$registerEnum(name, flags) {
-    /// <summary locid="M:J#Sys.UI.LineType.#ctor" />
-    /// <param name="name" type="String"></param>
-    /// <param name="flags" type="Boolean" optional="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "name", type: String},
-        {name: "flags", type: Boolean, optional: true}
-    ]);
-    if (e) throw e;
-    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName);
-    var parsedName;
-    try {
-        parsedName = eval(name);
-    }
-    catch(e) {
-        throw Error.argument('name', Sys.Res.argumentTypeName);
-    }
-    if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName);
-    if (Sys.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name));
-    for (var i in this.prototype) {
-        var val = this.prototype[i];
-        if (!Type.__identifierRegExp.test(i)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, i));
-        if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger);
-        if (typeof(this[i]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, i));
-    }
-    Sys.__upperCaseTypes[name.toUpperCase()] = this;
-    for (var i in this.prototype) {
-        this[i] = this.prototype[i];
-    }
-    this.__typeName = name;
-    this.parse = Sys$Enum$parse;
-    this.__string = this.toString();
-    this.toString = Sys$Enum$toString;
-    this.__flags = flags;
-    this.__enum = true;
-    Sys.__registeredTypes[name] = true;
-}
-Type.isEnum = function Type$isEnum(type) {
-    /// <summary locid="M:J#Type.isEnum" />
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__enum;
-}
-Type.isFlags = function Type$isFlags(type) {
-    /// <summary locid="M:J#Type.isFlags" />
-    /// <param name="type" mayBeNull="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    if ((typeof(type) === 'undefined') || (type === null)) return false;
-    return !!type.__flags;
-}
- 
-Sys.EventHandlerList = function Sys$EventHandlerList() {
-    /// <summary locid="M:J#Sys.EventHandlerList.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    this._list = {};
-}
-    function Sys$EventHandlerList$addHandler(id, handler) {
-        /// <summary locid="M:J#Sys.EventHandlerList.addHandler" />
-        /// <param name="id" type="String"></param>
-        /// <param name="handler" type="Function"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String},
-            {name: "handler", type: Function}
-        ]);
-        if (e) throw e;
-        Array.add(this._getEvent(id, true), handler);
-    }
-    function Sys$EventHandlerList$removeHandler(id, handler) {
-        /// <summary locid="M:J#Sys.EventHandlerList.removeHandler" />
-        /// <param name="id" type="String"></param>
-        /// <param name="handler" type="Function"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String},
-            {name: "handler", type: Function}
-        ]);
-        if (e) throw e;
-        var evt = this._getEvent(id);
-        if (!evt) return;
-        Array.remove(evt, handler);
-    }
-    function Sys$EventHandlerList$getHandler(id) {
-        /// <summary locid="M:J#Sys.EventHandlerList.getHandler" />
-        /// <param name="id" type="String"></param>
-        /// <returns type="Function"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String}
-        ]);
-        if (e) throw e;
-        var evt = this._getEvent(id);
-        if (!evt || (evt.length === 0)) return null;
-        evt = Array.clone(evt);
-        return function(source, args) {
-            for (var i = 0, l = evt.length; i < l; i++) {
-                evt[i](source, args);
-            }
-        };
-    }
-    function Sys$EventHandlerList$_getEvent(id, create) {
-        if (!this._list[id]) {
-            if (!create) return null;
-            this._list[id] = [];
-        }
-        return this._list[id];
-    }
-Sys.EventHandlerList.prototype = {
-    addHandler: Sys$EventHandlerList$addHandler,
-    removeHandler: Sys$EventHandlerList$removeHandler,
-    getHandler: Sys$EventHandlerList$getHandler,
-    _getEvent: Sys$EventHandlerList$_getEvent
-}
-Sys.EventHandlerList.registerClass('Sys.EventHandlerList');
- 
-Sys.EventArgs = function Sys$EventArgs() {
-    /// <summary locid="M:J#Sys.EventArgs.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-Sys.EventArgs.registerClass('Sys.EventArgs');
-Sys.EventArgs.Empty = new Sys.EventArgs();
- 
-Sys.CancelEventArgs = function Sys$CancelEventArgs() {
-    /// <summary locid="M:J#Sys.CancelEventArgs.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    Sys.CancelEventArgs.initializeBase(this);
-    this._cancel = false;
-}
-    function Sys$CancelEventArgs$get_cancel() {
-        /// <value type="Boolean" locid="P:J#Sys.CancelEventArgs.cancel"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._cancel;
-    }
-    function Sys$CancelEventArgs$set_cancel(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-        this._cancel = value;
-    }
-Sys.CancelEventArgs.prototype = {
-    get_cancel: Sys$CancelEventArgs$get_cancel,
-    set_cancel: Sys$CancelEventArgs$set_cancel
-}
-Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
- 
-Sys.INotifyPropertyChange = function Sys$INotifyPropertyChange() {
-    /// <summary locid="M:J#Sys.INotifyPropertyChange.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-    function Sys$INotifyPropertyChange$add_propertyChanged(handler) {
-    /// <summary locid="E:J#Sys.INotifyPropertyChange.propertyChanged" />
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-        throw Error.notImplemented();
-    }
-    function Sys$INotifyPropertyChange$remove_propertyChanged(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-        throw Error.notImplemented();
-    }
-Sys.INotifyPropertyChange.prototype = {
-    add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged,
-    remove_propertyChanged: Sys$INotifyPropertyChange$remove_propertyChanged
-}
-Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange');
- 
-Sys.PropertyChangedEventArgs = function Sys$PropertyChangedEventArgs(propertyName) {
-    /// <summary locid="M:J#Sys.PropertyChangedEventArgs.#ctor" />
-    /// <param name="propertyName" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "propertyName", type: String}
-    ]);
-    if (e) throw e;
-    Sys.PropertyChangedEventArgs.initializeBase(this);
-    this._propertyName = propertyName;
-}
- 
-    function Sys$PropertyChangedEventArgs$get_propertyName() {
-        /// <value type="String" locid="P:J#Sys.PropertyChangedEventArgs.propertyName"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._propertyName;
-    }
-Sys.PropertyChangedEventArgs.prototype = {
-    get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName
-}
-Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs);
- 
-Sys.INotifyDisposing = function Sys$INotifyDisposing() {
-    /// <summary locid="M:J#Sys.INotifyDisposing.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-    function Sys$INotifyDisposing$add_disposing(handler) {
-    /// <summary locid="E:J#Sys.INotifyDisposing.disposing" />
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-        throw Error.notImplemented();
-    }
-    function Sys$INotifyDisposing$remove_disposing(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-        throw Error.notImplemented();
-    }
-Sys.INotifyDisposing.prototype = {
-    add_disposing: Sys$INotifyDisposing$add_disposing,
-    remove_disposing: Sys$INotifyDisposing$remove_disposing
-}
-Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");
- 
-Sys.Component = function Sys$Component() {
-    /// <summary locid="M:J#Sys.Component.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    if (Sys.Application) Sys.Application.registerDisposableObject(this);
-}
-    function Sys$Component$get_events() {
-        /// <value type="Sys.EventHandlerList" locid="P:J#Sys.Component.events"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-    function Sys$Component$get_id() {
-        /// <value type="String" locid="P:J#Sys.Component.id"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._id;
-    }
-    function Sys$Component$set_id(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
-        this._idSet = true;
-        var oldId = this.get_id();
-        if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
-        this._id = value;
-    }
-    function Sys$Component$get_isInitialized() {
-        /// <value type="Boolean" locid="P:J#Sys.Component.isInitialized"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._initialized;
-    }
-    function Sys$Component$get_isUpdating() {
-        /// <value type="Boolean" locid="P:J#Sys.Component.isUpdating"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._updating;
-    }
-    function Sys$Component$add_disposing(handler) {
-        /// <summary locid="E:J#Sys.Component.disposing" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().addHandler("disposing", handler);
-    }
-    function Sys$Component$remove_disposing(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().removeHandler("disposing", handler);
-    }
-    function Sys$Component$add_propertyChanged(handler) {
-        /// <summary locid="E:J#Sys.Component.propertyChanged" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().addHandler("propertyChanged", handler);
-    }
-    function Sys$Component$remove_propertyChanged(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().removeHandler("propertyChanged", handler);
-    }
-    function Sys$Component$beginUpdate() {
-        this._updating = true;
-    }
-    function Sys$Component$dispose() {
-        if (this._events) {
-            var handler = this._events.getHandler("disposing");
-            if (handler) {
-                handler(this, Sys.EventArgs.Empty);
-            }
-        }
-        delete this._events;
-        Sys.Application.unregisterDisposableObject(this);
-        Sys.Application.removeComponent(this);
-    }
-    function Sys$Component$endUpdate() {
-        this._updating = false;
-        if (!this._initialized) this.initialize();
-        this.updated();
-    }
-    function Sys$Component$initialize() {
-        this._initialized = true;
-    }
-    function Sys$Component$raisePropertyChanged(propertyName) {
-        /// <summary locid="M:J#Sys.Component.raisePropertyChanged" />
-        /// <param name="propertyName" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "propertyName", type: String}
-        ]);
-        if (e) throw e;
-        if (!this._events) return;
-        var handler = this._events.getHandler("propertyChanged");
-        if (handler) {
-            handler(this, new Sys.PropertyChangedEventArgs(propertyName));
-        }
-    }
-    function Sys$Component$updated() {
-    }
-Sys.Component.prototype = {
-    _id: null,
-    _idSet: false,
-    _initialized: false,
-    _updating: false,
-    get_events: Sys$Component$get_events,
-    get_id: Sys$Component$get_id,
-    set_id: Sys$Component$set_id,
-    get_isInitialized: Sys$Component$get_isInitialized,
-    get_isUpdating: Sys$Component$get_isUpdating,
-    add_disposing: Sys$Component$add_disposing,
-    remove_disposing: Sys$Component$remove_disposing,
-    add_propertyChanged: Sys$Component$add_propertyChanged,
-    remove_propertyChanged: Sys$Component$remove_propertyChanged,
-    beginUpdate: Sys$Component$beginUpdate,
-    dispose: Sys$Component$dispose,
-    endUpdate: Sys$Component$endUpdate,
-    initialize: Sys$Component$initialize,
-    raisePropertyChanged: Sys$Component$raisePropertyChanged,
-    updated: Sys$Component$updated
-}
-Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing);
-function Sys$Component$_setProperties(target, properties) {
-    /// <summary locid="M:J#Sys.Component._setProperties" />
-    /// <param name="target"></param>
-    /// <param name="properties"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "target"},
-        {name: "properties"}
-    ]);
-    if (e) throw e;
-    var current;
-    var targetType = Object.getType(target);
-    var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement);
-    var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating();
-    if (isComponent) target.beginUpdate();
-    for (var name in properties) {
-        var val = properties[name];
-        var getter = isObject ? null : target["get_" + name];
-        if (isObject || typeof(getter) !== 'function') {
-            var targetVal = target[name];
-            if (!isObject && typeof(targetVal) === 'undefined') throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, name));
-            if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) {
-                target[name] = val;
-            }
-            else {
-                Sys$Component$_setProperties(targetVal, val);
-            }
-        }
-        else {
-            var setter = target["set_" + name];
-            if (typeof(setter) === 'function') {
-                setter.apply(target, [val]);
-            }
-            else if (val instanceof Array) {
-                current = getter.apply(target);
-                if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
-                for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) {
-                    current[j] = val[i];
-                }
-            }
-            else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) {
-                current = getter.apply(target);
-                if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name));
-                Sys$Component$_setProperties(current, val);
-            }
-            else {
-                throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
-            }
-        }
-    }
-    if (isComponent) target.endUpdate();
-}
-function Sys$Component$_setReferences(component, references) {
-    for (var name in references) {
-        var setter = component["set_" + name];
-        var reference = $find(references[name]);
-        if (typeof(setter) !== 'function') throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
-        if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, references[name]));
-        setter.apply(component, [reference]);
-    }
-}
-var $create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) {
-    /// <summary locid="M:J#Sys.Component.create" />
-    /// <param name="type" type="Type"></param>
-    /// <param name="properties" optional="true" mayBeNull="true"></param>
-    /// <param name="events" optional="true" mayBeNull="true"></param>
-    /// <param name="references" optional="true" mayBeNull="true"></param>
-    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
-    /// <returns type="Sys.UI.Component"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "type", type: Type},
-        {name: "properties", mayBeNull: true, optional: true},
-        {name: "events", mayBeNull: true, optional: true},
-        {name: "references", mayBeNull: true, optional: true},
-        {name: "element", mayBeNull: true, domElement: true, optional: true}
-    ]);
-    if (e) throw e;
-    if (!type.inheritsFrom(Sys.Component)) {
-        throw Error.argument('type', String.format(Sys.Res.createNotComponent, type.getName()));
-    }
-    if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
-        if (!element) throw Error.argument('element', Sys.Res.createNoDom);
-    }
-    else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom);
-    var component = (element ? new type(element): new type());
-    var app = Sys.Application;
-    var creatingComponents = app.get_isCreatingComponents();
-    component.beginUpdate();
-    if (properties) {
-        Sys$Component$_setProperties(component, properties);
-    }
-    if (events) {
-        for (var name in events) {
-            if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name));
-            if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction);
-            component["add_" + name](events[name]);
-        }
-    }
-    if (component.get_id()) {
-        app.addComponent(component);
-    }
-    if (creatingComponents) {
-        app._createdComponents[app._createdComponents.length] = component;
-        if (references) {
-            app._addComponentToSecondPass(component, references);
-        }
-        else {
-            component.endUpdate();
-        }
-    }
-    else {
-        if (references) {
-            Sys$Component$_setReferences(component, references);
-        }
-        component.endUpdate();
-    }
-    return component;
-}
- 
-Sys.UI.MouseButton = function Sys$UI$MouseButton() {
-    /// <summary locid="M:J#Sys.UI.MouseButton.#ctor" />
-    /// <field name="leftButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.leftButton"></field>
-    /// <field name="middleButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.middleButton"></field>
-    /// <field name="rightButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.rightButton"></field>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-Sys.UI.MouseButton.prototype = {
-    leftButton: 0,
-    middleButton: 1,
-    rightButton: 2
-}
-Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");
- 
-Sys.UI.Key = function Sys$UI$Key() {
-    /// <summary locid="M:J#Sys.UI.Key.#ctor" />
-    /// <field name="backspace" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.backspace"></field>
-    /// <field name="tab" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.tab"></field>
-    /// <field name="enter" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.enter"></field>
-    /// <field name="esc" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.esc"></field>
-    /// <field name="space" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.space"></field>
-    /// <field name="pageUp" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageUp"></field>
-    /// <field name="pageDown" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageDown"></field>
-    /// <field name="end" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.end"></field>
-    /// <field name="home" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.home"></field>
-    /// <field name="left" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.left"></field>
-    /// <field name="up" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.up"></field>
-    /// <field name="right" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.right"></field>
-    /// <field name="down" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.down"></field>
-    /// <field name="del" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.del"></field>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-Sys.UI.Key.prototype = {
-    backspace: 8,
-    tab: 9,
-    enter: 13,
-    esc: 27,
-    space: 32,
-    pageUp: 33,
-    pageDown: 34,
-    end: 35,
-    home: 36,
-    left: 37,
-    up: 38,
-    right: 39,
-    down: 40,
-    del: 127
-}
-Sys.UI.Key.registerEnum("Sys.UI.Key");
- 
-Sys.UI.Point = function Sys$UI$Point(x, y) {
-    /// <summary locid="M:J#Sys.UI.Point.#ctor" />
-    /// <param name="x" type="Number" integer="true"></param>
-    /// <param name="y" type="Number" integer="true"></param>
-    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Point.x"></field>
-    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Point.y"></field>
-    var e = Function._validateParams(arguments, [
-        {name: "x", type: Number, integer: true},
-        {name: "y", type: Number, integer: true}
-    ]);
-    if (e) throw e;
-    this.x = x;
-    this.y = y;
-}
-Sys.UI.Point.registerClass('Sys.UI.Point');
- 
-Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) {
-    /// <summary locid="M:J#Sys.UI.Bounds.#ctor" />
-    /// <param name="x" type="Number" integer="true"></param>
-    /// <param name="y" type="Number" integer="true"></param>
-    /// <param name="height" type="Number" integer="true"></param>
-    /// <param name="width" type="Number" integer="true"></param>
-    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.x"></field>
-    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.y"></field>
-    /// <field name="height" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.height"></field>
-    /// <field name="width" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.width"></field>
-    var e = Function._validateParams(arguments, [
-        {name: "x", type: Number, integer: true},
-        {name: "y", type: Number, integer: true},
-        {name: "height", type: Number, integer: true},
-        {name: "width", type: Number, integer: true}
-    ]);
-    if (e) throw e;
-    this.x = x;
-    this.y = y;
-    this.height = height;
-    this.width = width;
-}
-Sys.UI.Bounds.registerClass('Sys.UI.Bounds');
- 
-Sys.UI.DomEvent = function Sys$UI$DomEvent(eventObject) {
-    /// <summary locid="M:J#Sys.UI.DomEvent.#ctor" />
-    /// <param name="eventObject"></param>
-    /// <field name="altKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.altKey"></field>
-    /// <field name="button" type="Sys.UI.MouseButton" locid="F:J#Sys.UI.DomEvent.button"></field>
-    /// <field name="charCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.charCode"></field>
-    /// <field name="clientX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientX"></field>
-    /// <field name="clientY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientY"></field>
-    /// <field name="ctrlKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.ctrlKey"></field>
-    /// <field name="keyCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.keyCode"></field>
-    /// <field name="offsetX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetX"></field>
-    /// <field name="offsetY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetY"></field>
-    /// <field name="screenX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenX"></field>
-    /// <field name="screenY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenY"></field>
-    /// <field name="shiftKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.shiftKey"></field>
-    /// <field name="target" locid="F:J#Sys.UI.DomEvent.target"></field>
-    /// <field name="type" type="String" locid="F:J#Sys.UI.DomEvent.type"></field>
-    var e = Function._validateParams(arguments, [
-        {name: "eventObject"}
-    ]);
-    if (e) throw e;
-    var e = eventObject;
-    this.rawEvent = e;
-    this.altKey = e.altKey;
-    if (typeof(e.button) !== 'undefined') {
-        this.button = (typeof(e.which) !== 'undefined') ? e.button :
-            (e.button === 4) ? Sys.UI.MouseButton.middleButton :
-            (e.button === 2) ? Sys.UI.MouseButton.rightButton :
-            Sys.UI.MouseButton.leftButton;
-    }
-    if (e.type === 'keypress') {
-        this.charCode = e.charCode || e.keyCode;
-    }
-    else if (e.keyCode && (e.keyCode === 46)) {
-        this.keyCode = 127;
-    }
-    else {
-        this.keyCode = e.keyCode;
-    }
-    this.clientX = e.clientX;
-    this.clientY = e.clientY;
-    this.ctrlKey = e.ctrlKey;
-    this.target = e.target ? e.target : e.srcElement;
-    if ((typeof(e.offsetX) !== 'undefined') && (typeof(e.offsetY) !== 'undefined')) {
-        this.offsetX = e.offsetX;
-        this.offsetY = e.offsetY;
-    }
-    else if (this.target && (this.target.nodeType !== 3) && (typeof(e.clientX) === 'number')) {
-        var loc = Sys.UI.DomElement.getLocation(this.target);
-        var w = Sys.UI.DomElement._getWindow(this.target);
-        this.offsetX = (w.pageXOffset || 0) + e.clientX - loc.x;
-        this.offsetY = (w.pageYOffset || 0) + e.clientY - loc.y;
-    }
-    this.screenX = e.screenX;
-    this.screenY = e.screenY;
-    this.shiftKey = e.shiftKey;
-    this.type = e.type;
-}
-    function Sys$UI$DomEvent$preventDefault() {
-        /// <summary locid="M:J#Sys.UI.DomEvent.preventDefault" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this.rawEvent.preventDefault) {
-            this.rawEvent.preventDefault();
-        }
-        else if (window.event) {
-            this.rawEvent.returnValue = false;
-        }
-    }
-    function Sys$UI$DomEvent$stopPropagation() {
-        /// <summary locid="M:J#Sys.UI.DomEvent.stopPropagation" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this.rawEvent.stopPropagation) {
-            this.rawEvent.stopPropagation();
-        }
-        else if (window.event) {
-            this.rawEvent.cancelBubble = true;
-        }
-    }
-Sys.UI.DomEvent.prototype = {
-    preventDefault: Sys$UI$DomEvent$preventDefault,
-    stopPropagation: Sys$UI$DomEvent$stopPropagation
-}
-Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent');
-var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
-    /// <summary locid="M:J#Sys.UI.DomEvent.addHandler" />
-    /// <param name="element"></param>
-    /// <param name="eventName" type="String"></param>
-    /// <param name="handler" type="Function"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element"},
-        {name: "eventName", type: String},
-        {name: "handler", type: Function}
-    ]);
-    if (e) throw e;
-    Sys.UI.DomEvent._ensureDomNode(element);
-    if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError);
-    if (!element._events) {
-        element._events = {};
-    }
-    var eventCache = element._events[eventName];
-    if (!eventCache) {
-        element._events[eventName] = eventCache = [];
-    }
-    var browserHandler;
-    if (element.addEventListener) {
-        browserHandler = function(e) {
-            return handler.call(element, new Sys.UI.DomEvent(e));
-        }
-        element.addEventListener(eventName, browserHandler, false);
-    }
-    else if (element.attachEvent) {
-        browserHandler = function() {
-            var e = {};
-            try {e = Sys.UI.DomElement._getWindow(element).event} catch(ex) {}
-            return handler.call(element, new Sys.UI.DomEvent(e));
-        }
-        element.attachEvent('on' + eventName, browserHandler);
-    }
-    eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler};
-}
-var $addHandlers = Sys.UI.DomEvent.addHandlers = function Sys$UI$DomEvent$addHandlers(element, events, handlerOwner) {
-    /// <summary locid="M:J#Sys.UI.DomEvent.addHandlers" />
-    /// <param name="element"></param>
-    /// <param name="events" type="Object"></param>
-    /// <param name="handlerOwner" optional="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element"},
-        {name: "events", type: Object},
-        {name: "handlerOwner", optional: true}
-    ]);
-    if (e) throw e;
-    Sys.UI.DomEvent._ensureDomNode(element);
-    for (var name in events) {
-        var handler = events[name];
-        if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
-        if (handlerOwner) {
-            handler = Function.createDelegate(handlerOwner, handler);
-        }
-        $addHandler(element, name, handler);
-    }
-}
-var $clearHandlers = Sys.UI.DomEvent.clearHandlers = function Sys$UI$DomEvent$clearHandlers(element) {
-    /// <summary locid="M:J#Sys.UI.DomEvent.clearHandlers" />
-    /// <param name="element"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element"}
-    ]);
-    if (e) throw e;
-    Sys.UI.DomEvent._ensureDomNode(element);
-    if (element._events) {
-        var cache = element._events;
-        for (var name in cache) {
-            var handlers = cache[name];
-            for (var i = handlers.length - 1; i >= 0; i--) {
-                $removeHandler(element, name, handlers[i].handler);
-            }
-        }
-        element._events = null;
-    }
-}
-var $removeHandler = Sys.UI.DomEvent.removeHandler = function Sys$UI$DomEvent$removeHandler(element, eventName, handler) {
-    /// <summary locid="M:J#Sys.UI.DomEvent.removeHandler" />
-    /// <param name="element"></param>
-    /// <param name="eventName" type="String"></param>
-    /// <param name="handler" type="Function"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element"},
-        {name: "eventName", type: String},
-        {name: "handler", type: Function}
-    ]);
-    if (e) throw e;
-    Sys.UI.DomEvent._ensureDomNode(element);
-    var browserHandler = null;
-    if ((typeof(element._events) !== 'object') || (element._events == null)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
-    var cache = element._events[eventName];
-    if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
-    for (var i = 0, l = cache.length; i < l; i++) {
-        if (cache[i].handler === handler) {
-            browserHandler = cache[i].browserHandler;
-            break;
-        }
-    }
-    if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
-    if (element.removeEventListener) {
-        element.removeEventListener(eventName, browserHandler, false);
-    }
-    else if (element.detachEvent) {
-        element.detachEvent('on' + eventName, browserHandler);
-    }
-    cache.splice(i, 1);
-}
-Sys.UI.DomEvent._ensureDomNode = function Sys$UI$DomEvent$_ensureDomNode(element) {
-    if (element.tagName && (element.tagName === "SCRIPT")) return;
-    
-    var doc = element.ownerDocument || element.document || element;
-    if ((typeof(element.document) !== 'object') && (element != doc) && (typeof(element.nodeType) !== 'number')) {
-        throw Error.argument("element", Sys.Res.argumentDomNode);
-    }
-}
- 
-Sys.UI.DomElement = function Sys$UI$DomElement() {
-    /// <summary locid="M:J#Sys.UI.DomElement.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-Sys.UI.DomElement.registerClass('Sys.UI.DomElement');
-Sys.UI.DomElement.addCssClass = function Sys$UI$DomElement$addCssClass(element, className) {
-    /// <summary locid="M:J#Sys.UI.DomElement.addCssClass" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-    if (!Sys.UI.DomElement.containsCssClass(element, className)) {
-        if (element.className === '') {
-            element.className = className;
-        }
-        else {
-            element.className += ' ' + className;
-        }
-    }
-}
-Sys.UI.DomElement.containsCssClass = function Sys$UI$DomElement$containsCssClass(element, className) {
-    /// <summary locid="M:J#Sys.UI.DomElement.containsCssClass" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-    return Array.contains(element.className.split(' '), className);
-}
-Sys.UI.DomElement.getBounds = function Sys$UI$DomElement$getBounds(element) {
-    /// <summary locid="M:J#Sys.UI.DomElement.getBounds" />
-    /// <param name="element" domElement="true"></param>
-    /// <returns type="Sys.UI.Bounds"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-    var offset = Sys.UI.DomElement.getLocation(element);
-    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
-}
-var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) {
-    /// <summary locid="M:J#Sys.UI.DomElement.getElementById" />
-    /// <param name="id" type="String"></param>
-    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
-    /// <returns domElement="true" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "id", type: String},
-        {name: "element", mayBeNull: true, domElement: true, optional: true}
-    ]);
-    if (e) throw e;
-    if (!element) return document.getElementById(id);
-    if (element.getElementById) return element.getElementById(id);
-    var nodeQueue = [];
-    var childNodes = element.childNodes;
-    for (var i = 0; i < childNodes.length; i++) {
-        var node = childNodes[i];
-        if (node.nodeType == 1) {
-            nodeQueue[nodeQueue.length] = node;
-        }
-    }
-    while (nodeQueue.length) {
-        node = nodeQueue.shift();
-        if (node.id == id) {
-            return node;
-        }
-        childNodes = node.childNodes;
-        for (i = 0; i < childNodes.length; i++) {
-            node = childNodes[i];
-            if (node.nodeType == 1) {
-                nodeQueue[nodeQueue.length] = node;
-            }
-        }
-    }
-    return null;
-}
-switch(Sys.Browser.agent) {
-    case Sys.Browser.InternetExplorer:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-            if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);
-            var clientRect = element.getBoundingClientRect();
-            if (!clientRect) {
-                return new Sys.UI.Point(0,0);
-            }
-            var documentElement = element.ownerDocument.documentElement;
-            var offsetX = clientRect.left - 2 + documentElement.scrollLeft,
-                offsetY = clientRect.top - 2 + documentElement.scrollTop;
-            
-            try {
-                var f = element.ownerDocument.parentWindow.frameElement || null;
-                if (f) {
-                    var offset = (f.frameBorder === "0" || f.frameBorder === "no") ? 2 : 0;
-                    offsetX += offset;
-                    offsetY += offset;
-                }
-            }
-            catch(ex) {
-            }    
-            
-            return new Sys.UI.Point(offsetX, offsetY);
-        }
-        break;
-    case Sys.Browser.Safari:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
-            var offsetX = 0;
-            var offsetY = 0;
-            var previous = null;
-            var previousStyle = null;
-            var currentStyle;
-            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
-                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-                var tagName = parent.tagName;
-                if ((parent.offsetLeft || parent.offsetTop) &&
-                    ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) {
-                    offsetX += parent.offsetLeft;
-                    offsetY += parent.offsetTop;
-                }
-            }
-            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
-            var elementPosition = currentStyle ? currentStyle.position : null;
-            if (!elementPosition || (elementPosition !== "absolute")) {
-                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
-                    tagName = parent.tagName;
-                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
-                        offsetX -= (parent.scrollLeft || 0);
-                        offsetY -= (parent.scrollTop || 0);
-                    }
-                    currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-                    var parentPosition = currentStyle ? currentStyle.position : null;
-                    if (parentPosition && (parentPosition === "absolute")) break;
-                }
-            }
-            return new Sys.UI.Point(offsetX, offsetY);
-        }
-        break;
-    case Sys.Browser.Opera:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
-            var offsetX = 0;
-            var offsetY = 0;
-            var previous = null;
-            for (var parent = element; parent; previous = parent, parent = parent.offsetParent) {
-                var tagName = parent.tagName;
-                offsetX += parent.offsetLeft || 0;
-                offsetY += parent.offsetTop || 0;
-            }
-            var elementPosition = element.style.position;
-            var elementPositioned = elementPosition && (elementPosition !== "static");
-            for (var parent = element.parentNode; parent; parent = parent.parentNode) {
-                tagName = parent.tagName;
-                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop) &&
-                    ((elementPositioned &&
-                    ((parent.style.overflow === "scroll") || (parent.style.overflow === "auto"))))) {
-                    offsetX -= (parent.scrollLeft || 0);
-                    offsetY -= (parent.scrollTop || 0);
-                }
-                var parentPosition = (parent && parent.style) ? parent.style.position : null;
-                elementPositioned = elementPositioned || (parentPosition && (parentPosition !== "static"));
-            }
-            return new Sys.UI.Point(offsetX, offsetY);
-        }
-        break;
-    default:
-        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
-            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
-            /// <param name="element" domElement="true"></param>
-            /// <returns type="Sys.UI.Point"></returns>
-            var e = Function._validateParams(arguments, [
-                {name: "element", domElement: true}
-            ]);
-            if (e) throw e;
-            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
-            var offsetX = 0;
-            var offsetY = 0;
-            var previous = null;
-            var previousStyle = null;
-            var currentStyle = null;
-            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
-                var tagName = parent.tagName;
-                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-                if ((parent.offsetLeft || parent.offsetTop) &&
-                    !((tagName === "BODY") &&
-                    (!previousStyle || previousStyle.position !== "absolute"))) {
-                    offsetX += parent.offsetLeft;
-                    offsetY += parent.offsetTop;
-                }
-                if (previous !== null && currentStyle) {
-                    if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) {
-                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
-                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
-                    }
-                    if (tagName === "TABLE" &&
-                        (currentStyle.position === "relative" || currentStyle.position === "absolute")) {
-                        offsetX += parseInt(currentStyle.marginLeft) || 0;
-                        offsetY += parseInt(currentStyle.marginTop) || 0;
-                    }
-                }
-            }
-            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
-            var elementPosition = currentStyle ? currentStyle.position : null;
-            if (!elementPosition || (elementPosition !== "absolute")) {
-                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
-                    tagName = parent.tagName;
-                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
-                        offsetX -= (parent.scrollLeft || 0);
-                        offsetY -= (parent.scrollTop || 0);
-                        currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
-                        if (currentStyle) {
-                            offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
-                            offsetY += parseInt(currentStyle.borderTopWidth) || 0;
-                        }
-                    }
-                }
-            }
-            return new Sys.UI.Point(offsetX, offsetY);
-        }
-        break;
-}
-Sys.UI.DomElement.removeCssClass = function Sys$UI$DomElement$removeCssClass(element, className) {
-    /// <summary locid="M:J#Sys.UI.DomElement.removeCssClass" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-    var currentClassName = ' ' + element.className + ' ';
-    var index = currentClassName.indexOf(' ' + className + ' ');
-    if (index >= 0) {
-        element.className = (currentClassName.substr(0, index) + ' ' +
-            currentClassName.substring(index + className.length + 1, currentClassName.length)).trim();
-    }
-}
-Sys.UI.DomElement.setLocation = function Sys$UI$DomElement$setLocation(element, x, y) {
-    /// <summary locid="M:J#Sys.UI.DomElement.setLocation" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="x" type="Number" integer="true"></param>
-    /// <param name="y" type="Number" integer="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "x", type: Number, integer: true},
-        {name: "y", type: Number, integer: true}
-    ]);
-    if (e) throw e;
-    var style = element.style;
-    style.position = 'absolute';
-    style.left = x + "px";
-    style.top = y + "px";
-}
-Sys.UI.DomElement.toggleCssClass = function Sys$UI$DomElement$toggleCssClass(element, className) {
-    /// <summary locid="M:J#Sys.UI.DomElement.toggleCssClass" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="className" type="String"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "className", type: String}
-    ]);
-    if (e) throw e;
-    if (Sys.UI.DomElement.containsCssClass(element, className)) {
-        Sys.UI.DomElement.removeCssClass(element, className);
-    }
-    else {
-        Sys.UI.DomElement.addCssClass(element, className);
-    }
-}
-Sys.UI.DomElement.getVisibilityMode = function Sys$UI$DomElement$getVisibilityMode(element) {
-    /// <summary locid="M:J#Sys.UI.DomElement.getVisibilityMode" />
-    /// <param name="element" domElement="true"></param>
-    /// <returns type="Sys.UI.VisibilityMode"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-    return (element._visibilityMode === Sys.UI.VisibilityMode.hide) ?
-        Sys.UI.VisibilityMode.hide :
-        Sys.UI.VisibilityMode.collapse;
-}
-Sys.UI.DomElement.setVisibilityMode = function Sys$UI$DomElement$setVisibilityMode(element, value) {
-    /// <summary locid="M:J#Sys.UI.DomElement.setVisibilityMode" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="value" type="Sys.UI.VisibilityMode"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "value", type: Sys.UI.VisibilityMode}
-    ]);
-    if (e) throw e;
-    Sys.UI.DomElement._ensureOldDisplayMode(element);
-    if (element._visibilityMode !== value) {
-        element._visibilityMode = value;
-        if (Sys.UI.DomElement.getVisible(element) === false) {
-            if (element._visibilityMode === Sys.UI.VisibilityMode.hide) {
-                element.style.display = element._oldDisplayMode;
-            }
-            else {
-                element.style.display = 'none';
-            }
-        }
-        element._visibilityMode = value;
-    }
-}
-Sys.UI.DomElement.getVisible = function Sys$UI$DomElement$getVisible(element) {
-    /// <summary locid="M:J#Sys.UI.DomElement.getVisible" />
-    /// <param name="element" domElement="true"></param>
-    /// <returns type="Boolean"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-    var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
-    if (!style) return true;
-    return (style.visibility !== 'hidden') && (style.display !== 'none');
-}
-Sys.UI.DomElement.setVisible = function Sys$UI$DomElement$setVisible(element, value) {
-    /// <summary locid="M:J#Sys.UI.DomElement.setVisible" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="value" type="Boolean"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "value", type: Boolean}
-    ]);
-    if (e) throw e;
-    if (value !== Sys.UI.DomElement.getVisible(element)) {
-        Sys.UI.DomElement._ensureOldDisplayMode(element);
-        element.style.visibility = value ? 'visible' : 'hidden';
-        if (value || (element._visibilityMode === Sys.UI.VisibilityMode.hide)) {
-            element.style.display = element._oldDisplayMode;
-        }
-        else {
-            element.style.display = 'none';
-        }
-    }
-}
-Sys.UI.DomElement._ensureOldDisplayMode = function Sys$UI$DomElement$_ensureOldDisplayMode(element) {
-    if (!element._oldDisplayMode) {
-        var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
-        element._oldDisplayMode = style ? style.display : null;
-        if (!element._oldDisplayMode || element._oldDisplayMode === 'none') {
-            switch(element.tagName.toUpperCase()) {
-                case 'DIV': case 'P': case 'ADDRESS': case 'BLOCKQUOTE': case 'BODY': case 'COL':
-                case 'COLGROUP': case 'DD': case 'DL': case 'DT': case 'FIELDSET': case 'FORM':
-                case 'H1': case 'H2': case 'H3': case 'H4': case 'H5': case 'H6': case 'HR':
-                case 'IFRAME': case 'LEGEND': case 'OL': case 'PRE': case 'TABLE': case 'TD':
-                case 'TH': case 'TR': case 'UL':
-                    element._oldDisplayMode = 'block';
-                    break;
-                case 'LI':
-                    element._oldDisplayMode = 'list-item';
-                    break;
-                default:
-                    element._oldDisplayMode = 'inline';
-            }
-        }
-    }
-}
-Sys.UI.DomElement._getWindow = function Sys$UI$DomElement$_getWindow(element) {
-    var doc = element.ownerDocument || element.document || element;
-    return doc.defaultView || doc.parentWindow;
-}
-Sys.UI.DomElement._getCurrentStyle = function Sys$UI$DomElement$_getCurrentStyle(element) {
-    if (element.nodeType === 3) return null;
-    var w = Sys.UI.DomElement._getWindow(element);
-    if (element.documentElement) element = element.documentElement;
-    var computedStyle = (w && (element !== w) && w.getComputedStyle) ?
-        w.getComputedStyle(element, null) :
-        element.currentStyle || element.style;
-    if (!computedStyle && (Sys.Browser.agent === Sys.Browser.Safari) && element.style) {
-        var oldDisplay = element.style.display;
-        var oldPosition = element.style.position;
-        element.style.position = 'absolute';
-        element.style.display = 'block';
-        var style = w.getComputedStyle(element, null);
-        element.style.display = oldDisplay;
-        element.style.position = oldPosition;
-        computedStyle = {};
-        for (var n in style) {
-            computedStyle[n] = style[n];
-        }
-        computedStyle.display = 'none';
-    }
-    return computedStyle;
-}
- 
-Sys.IContainer = function Sys$IContainer() {
-    throw Error.notImplemented();
-}
-    function Sys$IContainer$addComponent(component) {
-        /// <summary locid="M:J#Sys.IContainer.addComponent" />
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-        throw Error.notImplemented();
-    }
-    function Sys$IContainer$removeComponent(component) {
-        /// <summary locid="M:J#Sys.IContainer.removeComponent" />
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-        throw Error.notImplemented();
-    }
-    function Sys$IContainer$findComponent(id) {
-        /// <summary locid="M:J#Sys.IContainer.findComponent" />
-        /// <param name="id" type="String"></param>
-        /// <returns type="Sys.Component"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String}
-        ]);
-        if (e) throw e;
-        throw Error.notImplemented();
-    }
-    function Sys$IContainer$getComponents() {
-        /// <summary locid="M:J#Sys.IContainer.getComponents" />
-        /// <returns type="Array" elementType="Sys.Component"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-Sys.IContainer.prototype = {
-    addComponent: Sys$IContainer$addComponent,
-    removeComponent: Sys$IContainer$removeComponent,
-    findComponent: Sys$IContainer$findComponent,
-    getComponents: Sys$IContainer$getComponents
-}
-Sys.IContainer.registerInterface("Sys.IContainer");
- 
-Sys._ScriptLoader = function Sys$_ScriptLoader() {
-    this._scriptsToLoad = null;
-    this._scriptLoadedDelegate = Function.createDelegate(this, this._scriptLoadedHandler);
-}
-    function Sys$_ScriptLoader$dispose() {
-        this._stopLoading();
-        if(this._events) {
-            delete this._events;
-        }
-        this._scriptLoadedDelegate = null;        
-    }
-    function Sys$_ScriptLoader$loadScripts(scriptTimeout, allScriptsLoadedCallback, scriptLoadFailedCallback, scriptLoadTimeoutCallback) {
-        /// <summary locid="M:J#Sys._ScriptLoader.loadScripts" />
-        /// <param name="scriptTimeout" type="Number" integer="true"></param>
-        /// <param name="allScriptsLoadedCallback" type="Function" mayBeNull="true"></param>
-        /// <param name="scriptLoadFailedCallback" type="Function" mayBeNull="true"></param>
-        /// <param name="scriptLoadTimeoutCallback" type="Function" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptTimeout", type: Number, integer: true},
-            {name: "allScriptsLoadedCallback", type: Function, mayBeNull: true},
-            {name: "scriptLoadFailedCallback", type: Function, mayBeNull: true},
-            {name: "scriptLoadTimeoutCallback", type: Function, mayBeNull: true}
-        ]);
-        if (e) throw e;
-        if(this._loading) {
-            throw Error.invalidOperation(Sys.Res.scriptLoaderAlreadyLoading);
-        }
-        this._loading = true;
-        this._allScriptsLoadedCallback = allScriptsLoadedCallback;
-        this._scriptLoadFailedCallback = scriptLoadFailedCallback;
-        this._scriptLoadTimeoutCallback = scriptLoadTimeoutCallback;
-        
-        this._loadScriptsInternal();
-    }
-    function Sys$_ScriptLoader$notifyScriptLoaded() {
-        /// <summary locid="M:J#Sys._ScriptLoader.notifyScriptLoaded" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        
-        if(!this._loading) {
-            return;
-        }
-        this._currentTask._notified++;
-        
-        if(Sys.Browser.agent === Sys.Browser.Safari) {           
-            if(this._currentTask._notified === 1) {
-                window.setTimeout(Function.createDelegate(this, function() {
-                    this._scriptLoadedHandler(this._currentTask.get_scriptElement(), true);
-                }), 0);
-            }
-        }
-    }
-    function Sys$_ScriptLoader$queueCustomScriptTag(scriptAttributes) {
-        /// <summary locid="M:J#Sys._ScriptLoader.queueCustomScriptTag" />
-        /// <param name="scriptAttributes" mayBeNull="false"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptAttributes"}
-        ]);
-        if (e) throw e;
-        if(!this._scriptsToLoad) {
-            this._scriptsToLoad = [];
-        }
-        Array.add(this._scriptsToLoad, scriptAttributes);
-    }
-    function Sys$_ScriptLoader$queueScriptBlock(scriptContent) {
-        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptBlock" />
-        /// <param name="scriptContent" type="String" mayBeNull="false"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptContent", type: String}
-        ]);
-        if (e) throw e;
-        if(!this._scriptsToLoad) {
-            this._scriptsToLoad = [];
-        }
-        Array.add(this._scriptsToLoad, {text: scriptContent});
-    }
-    function Sys$_ScriptLoader$queueScriptReference(scriptUrl) {
-        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptReference" />
-        /// <param name="scriptUrl" type="String" mayBeNull="false"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "scriptUrl", type: String}
-        ]);
-        if (e) throw e;
-        if(!this._scriptsToLoad) {
-            this._scriptsToLoad = [];
-        }
-        Array.add(this._scriptsToLoad, {src: scriptUrl});
-    }
-    function Sys$_ScriptLoader$_createScriptElement(queuedScript) {
-        var scriptElement = document.createElement('SCRIPT');
-        scriptElement.type = 'text/javascript';
-        for (var attr in queuedScript) {
-            scriptElement[attr] = queuedScript[attr];
-        }
-        
-        return scriptElement;
-    }
-    function Sys$_ScriptLoader$_loadScriptsInternal() {
-        if (this._scriptsToLoad && this._scriptsToLoad.length > 0) {
-            var nextScript = Array.dequeue(this._scriptsToLoad);
-            var scriptElement = this._createScriptElement(nextScript);
-            
-            if (scriptElement.text && Sys.Browser.agent === Sys.Browser.Safari) {
-                scriptElement.innerHTML = scriptElement.text;
-                delete scriptElement.text;
-            }            
-            if (typeof(nextScript.src) === "string") {
-                this._currentTask = new Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
-                this._currentTask.execute();
-            }
-            else {
-                document.getElementsByTagName('HEAD')[0].appendChild(scriptElement);
-                
-                var scriptLoader = this; 
-                window.setTimeout(function() {
-                    Sys._ScriptLoader._clearScript(scriptElement);
-                    scriptLoader._loadScriptsInternal();
-                }, 0);
-            }
-        }
-        else {
-            var callback = this._allScriptsLoadedCallback;
-            this._stopLoading();
-            if(callback) {
-                callback(this);
-            }
-        }
-    }
-    function Sys$_ScriptLoader$_raiseError(multipleCallbacks) {
-        var callback = this._scriptLoadFailedCallback;
-        var scriptElement = this._currentTask.get_scriptElement();
-        this._stopLoading();
-        
-        if(callback) {
-            callback(this, scriptElement, multipleCallbacks);
-        }
-        else {
-            throw Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src, multipleCallbacks);
-        }
-    }
-    function Sys$_ScriptLoader$_scriptLoadedHandler(scriptElement, loaded) {
-        if(loaded && this._currentTask._notified) {
-            if(this._currentTask._notified > 1) {
-                this._raiseError(true);
-            }
-            else {
-                Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
-                this._currentTask.dispose();
-                this._currentTask = null;
-                this._loadScriptsInternal();
-            }
-        }
-        else {
-            this._raiseError(false);
-        }
-    }
-    function Sys$_ScriptLoader$_scriptLoadTimeoutHandler() {
-        var callback = this._scriptLoadTimeoutCallback;
-        this._stopLoading();
-        if(callback) {
-            callback(this);
-        }
-    }
-    function Sys$_ScriptLoader$_stopLoading() {
-        if(this._timeoutCookie) {
-            window.clearTimeout(this._timeoutCookie);
-            this._timeoutCookie = null;
-        }
-        if(this._currentTask) {
-            this._currentTask.dispose();
-            this._currentTask = null;
-        }
-        this._scriptsToLoad = null;
-        this._loading = null;
-        
-        this._allScriptsLoadedCallback = null;
-        this._scriptLoadFailedCallback = null;
-        this._scriptLoadTimeoutCallback = null;
-    }
-Sys._ScriptLoader.prototype = {
-    dispose: Sys$_ScriptLoader$dispose,
-    loadScripts: Sys$_ScriptLoader$loadScripts,
-    notifyScriptLoaded: Sys$_ScriptLoader$notifyScriptLoaded,
-    queueCustomScriptTag: Sys$_ScriptLoader$queueCustomScriptTag,
-    queueScriptBlock: Sys$_ScriptLoader$queueScriptBlock,
-    queueScriptReference: Sys$_ScriptLoader$queueScriptReference,
-    _createScriptElement: Sys$_ScriptLoader$_createScriptElement,   
-    _loadScriptsInternal: Sys$_ScriptLoader$_loadScriptsInternal,
-    _raiseError: Sys$_ScriptLoader$_raiseError,
-    _scriptLoadedHandler: Sys$_ScriptLoader$_scriptLoadedHandler,
-    _scriptLoadTimeoutHandler: Sys$_ScriptLoader$_scriptLoadTimeoutHandler,
-    _stopLoading: Sys$_ScriptLoader$_stopLoading    
-}
-Sys._ScriptLoader.registerClass('Sys._ScriptLoader', null, Sys.IDisposable);
-Sys._ScriptLoader.getInstance = function Sys$_ScriptLoader$getInstance() {
-    var sl = Sys._ScriptLoader._activeInstance;
-    if(!sl) {
-        sl = Sys._ScriptLoader._activeInstance = new Sys._ScriptLoader();
-    }
-    return sl;
-}
-Sys._ScriptLoader.isScriptLoaded = function Sys$_ScriptLoader$isScriptLoaded(scriptSrc) {
-    var dummyScript = document.createElement('script');
-    dummyScript.src = scriptSrc;
-    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), dummyScript.src);
-}
-Sys._ScriptLoader.readLoadedScripts = function Sys$_ScriptLoader$readLoadedScripts() {
-    if(!Sys._ScriptLoader._referencedScripts) {
-        var referencedScripts = Sys._ScriptLoader._referencedScripts = [];
-        var existingScripts = document.getElementsByTagName('SCRIPT');
-        for (i = existingScripts.length - 1; i >= 0; i--) {
-            var scriptNode = existingScripts[i];
-            var scriptSrc = scriptNode.src;
-            if (scriptSrc.length) {
-                if (!Array.contains(referencedScripts, scriptSrc)) {
-                    Array.add(referencedScripts, scriptSrc);
-                }
-            }
-        }
-    }
-}
-Sys._ScriptLoader._clearScript = function Sys$_ScriptLoader$_clearScript(scriptElement) {
-    if (!Sys.Debug.isDebug) {
-        scriptElement.parentNode.removeChild(scriptElement);
-    }
-}
-Sys._ScriptLoader._errorScriptLoadFailed = function Sys$_ScriptLoader$_errorScriptLoadFailed(scriptUrl, multipleCallbacks) {
-    var errorMessage;
-    if(multipleCallbacks) {
-        errorMessage = Sys.Res.scriptLoadMultipleCallbacks;
-    }
-    else {
-        errorMessage = Sys.Res.scriptLoadFailedDebug;
-    }
-    var displayMessage = "Sys.ScriptLoadFailedException: " + String.format(errorMessage, scriptUrl);
-    var e = Error.create(displayMessage, {name: 'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
-    e.popStackFrame();
-    return e;
-}
-Sys._ScriptLoader._getLoadedScripts = function Sys$_ScriptLoader$_getLoadedScripts() {
-    if(!Sys._ScriptLoader._referencedScripts) {
-        Sys._ScriptLoader._referencedScripts = [];
-        Sys._ScriptLoader.readLoadedScripts();
-    }
-    return Sys._ScriptLoader._referencedScripts;
-}
- 
-Sys._ScriptLoaderTask = function Sys$_ScriptLoaderTask(scriptElement, completedCallback) {
-    /// <summary locid="M:J#Sys._ScriptLoaderTask.#ctor" />
-    /// <param name="scriptElement" domElement="true"></param>
-    /// <param name="completedCallback" type="Function"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "scriptElement", domElement: true},
-        {name: "completedCallback", type: Function}
-    ]);
-    if (e) throw e;
-    this._scriptElement = scriptElement;
-    this._completedCallback = completedCallback;
-    this._notified = 0;
-}
-    function Sys$_ScriptLoaderTask$get_scriptElement() {
-        /// <value domElement="true" locid="P:J#Sys._ScriptLoaderTask.scriptElement"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._scriptElement;
-    }
-    function Sys$_ScriptLoaderTask$dispose() {
-        if(this._disposed) {
-            return;
-        }
-        this._disposed = true;
-        this._removeScriptElementHandlers();
-        Sys._ScriptLoader._clearScript(this._scriptElement);
-        this._scriptElement = null;
-    }
-    function Sys$_ScriptLoaderTask$execute() {
-        /// <summary locid="M:J#Sys._ScriptLoaderTask.execute" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        this._addScriptElementHandlers();
-        document.getElementsByTagName('HEAD')[0].appendChild(this._scriptElement);
-    }
-    function Sys$_ScriptLoaderTask$_addScriptElementHandlers() {
-        this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler);
-        
-        if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
-            this._scriptElement.readyState = 'loaded';
-            $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate);
-        }
-        else {
-            $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate);
-        }    
-        if (this._scriptElement.addEventListener) {
-            this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler);
-            this._scriptElement.addEventListener('error', this._scriptErrorDelegate, false);
-        }
-    }
-    function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() {
-        if(this._scriptLoadDelegate) {
-            var scriptElement = this.get_scriptElement();
-            if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
-                $removeHandler(scriptElement, 'load', this._scriptLoadDelegate);
-            }
-            else {
-                $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate);
-            }
-            if (this._scriptErrorDelegate) {
-                this._scriptElement.removeEventListener('error', this._scriptErrorDelegate, false);
-                this._scriptErrorDelegate = null;
-            }
-            this._scriptLoadDelegate = null;
-        }
-    }
-    function Sys$_ScriptLoaderTask$_scriptErrorHandler() {
-        if(this._disposed) {
-            return;
-        }
-        
-        this._completedCallback(this.get_scriptElement(), false);
-    }
-    function Sys$_ScriptLoaderTask$_scriptLoadHandler() {
-        if(this._disposed) {
-            return;
-        }
-        var scriptElement = this.get_scriptElement();
-        if ((scriptElement.readyState !== 'loaded') &&
-            (scriptElement.readyState !== 'complete')) {
-            return;
-        }
-        
-        var _this = this;
-        window.setTimeout(function() {
-            _this._completedCallback(scriptElement, true);
-        }, 0);
-    }
-Sys._ScriptLoaderTask.prototype = {
-    get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement,
-    dispose: Sys$_ScriptLoaderTask$dispose,
-    execute: Sys$_ScriptLoaderTask$execute,
-    _addScriptElementHandlers: Sys$_ScriptLoaderTask$_addScriptElementHandlers,    
-    _removeScriptElementHandlers: Sys$_ScriptLoaderTask$_removeScriptElementHandlers,    
-    _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler,
-    _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler  
-}
-Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable);
- 
-Sys.ApplicationLoadEventArgs = function Sys$ApplicationLoadEventArgs(components, isPartialLoad) {
-    /// <summary locid="M:J#Sys.ApplicationLoadEventArgs.#ctor" />
-    /// <param name="components" type="Array" elementType="Sys.Component"></param>
-    /// <param name="isPartialLoad" type="Boolean"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "components", type: Array, elementType: Sys.Component},
-        {name: "isPartialLoad", type: Boolean}
-    ]);
-    if (e) throw e;
-    Sys.ApplicationLoadEventArgs.initializeBase(this);
-    this._components = components;
-    this._isPartialLoad = isPartialLoad;
-}
- 
-    function Sys$ApplicationLoadEventArgs$get_components() {
-        /// <value type="Array" elementType="Sys.Component" locid="P:J#Sys.ApplicationLoadEventArgs.components"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._components;
-    }
-    function Sys$ApplicationLoadEventArgs$get_isPartialLoad() {
-        /// <value type="Boolean" locid="P:J#Sys.ApplicationLoadEventArgs.isPartialLoad"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._isPartialLoad;
-    }
-Sys.ApplicationLoadEventArgs.prototype = {
-    get_components: Sys$ApplicationLoadEventArgs$get_components,
-    get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad
-}
-Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs);
- 
-Sys._Application = function Sys$_Application() {
-    Sys._Application.initializeBase(this);
-    this._disposableObjects = [];
-    this._components = {};
-    this._createdComponents = [];
-    this._secondPassComponents = [];
-    this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler);
-    this._loadHandlerDelegate = Function.createDelegate(this, this._loadHandler);
-    Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate);
-    Sys.UI.DomEvent.addHandler(window, "load", this._loadHandlerDelegate);
-}
-    function Sys$_Application$get_isCreatingComponents() {
-        /// <value type="Boolean" locid="P:J#Sys._Application.isCreatingComponents"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._creatingComponents;
-    }
-    function Sys$_Application$add_load(handler) {
-        /// <summary locid="E:J#Sys._Application.load" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().addHandler("load", handler);
-    }
-    function Sys$_Application$remove_load(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().removeHandler("load", handler);
-    }
-    function Sys$_Application$add_init(handler) {
-        /// <summary locid="E:J#Sys._Application.init" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        if (this._initialized) {
-            handler(this, Sys.EventArgs.Empty);
-        }
-        else {
-            this.get_events().addHandler("init", handler);
-        }
-    }
-    function Sys$_Application$remove_init(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().removeHandler("init", handler);
-    }
-    function Sys$_Application$add_unload(handler) {
-        /// <summary locid="E:J#Sys._Application.unload" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().addHandler("unload", handler);
-    }
-    function Sys$_Application$remove_unload(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this.get_events().removeHandler("unload", handler);
-    }
-    function Sys$_Application$addComponent(component) {
-        /// <summary locid="M:J#Sys._Application.addComponent" />
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-        var id = component.get_id();
-        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
-        if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id));
-        this._components[id] = component;
-    }
-    function Sys$_Application$beginCreateComponents() {
-        this._creatingComponents = true;
-    }
-    function Sys$_Application$dispose() {
-        if (!this._disposing) {
-            this._disposing = true;
-            if (window.pageUnload) {
-                window.pageUnload(this, Sys.EventArgs.Empty);
-            }
-            var unloadHandler = this.get_events().getHandler("unload");
-            if (unloadHandler) {
-                unloadHandler(this, Sys.EventArgs.Empty);
-            }
-            var disposableObjects = Array.clone(this._disposableObjects);
-            for (var i = 0, l = disposableObjects.length; i < l; i++) {
-                disposableObjects[i].dispose();
-            }
-            Array.clear(this._disposableObjects);
-            Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate);
-            if(this._loadHandlerDelegate) {
-                Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
-                this._loadHandlerDelegate = null;
-            }
-            var sl = Sys._ScriptLoader.getInstance();
-            if(sl) {
-                sl.dispose();
-            }
-            Sys._Application.callBaseMethod(this, 'dispose');
-        }
-    }
-    function Sys$_Application$endCreateComponents() {
-        var components = this._secondPassComponents;
-        for (var i = 0, l = components.length; i < l; i++) {
-            var component = components[i].component;
-            Sys$Component$_setReferences(component, components[i].references);
-            component.endUpdate();
-        }
-        this._secondPassComponents = [];
-        this._creatingComponents = false;
-    }
-    function Sys$_Application$findComponent(id, parent) {
-        /// <summary locid="M:J#Sys._Application.findComponent" />
-        /// <param name="id" type="String"></param>
-        /// <param name="parent" optional="true" mayBeNull="true"></param>
-        /// <returns type="Sys.Component" mayBeNull="true"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "id", type: String},
-            {name: "parent", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        return (parent ?
-            ((Sys.IContainer.isInstanceOfType(parent)) ?
-                parent.findComponent(id) :
-                parent[id] || null) :
-            Sys.Application._components[id] || null);
-    }
-    function Sys$_Application$getComponents() {
-        /// <summary locid="M:J#Sys._Application.getComponents" />
-        /// <returns type="Array" elementType="Sys.Component"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        var res = [];
-        var components = this._components;
-        for (var name in components) {
-            res[res.length] = components[name];
-        }
-        return res;
-    }
-    function Sys$_Application$initialize() {
-        if(!this._initialized && !this._initializing) {
-            this._initializing = true;
-            window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
-        }
-    }
-    function Sys$_Application$notifyScriptLoaded() {
-        /// <summary locid="M:J#Sys._Application.notifyScriptLoaded" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        var sl = Sys._ScriptLoader.getInstance();
-        if(sl) {
-            sl.notifyScriptLoaded();
-        }
-    }
-    function Sys$_Application$registerDisposableObject(object) {
-        /// <summary locid="M:J#Sys._Application.registerDisposableObject" />
-        /// <param name="object" type="Sys.IDisposable"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "object", type: Sys.IDisposable}
-        ]);
-        if (e) throw e;
-        if (!this._disposing) {
-            this._disposableObjects[this._disposableObjects.length] = object;
-        }
-    }
-    function Sys$_Application$raiseLoad() {
-        var h = this.get_events().getHandler("load");
-        var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !this._initializing);
-        if (h) {
-            h(this, args);
-        }
-        if (window.pageLoad) {
-            window.pageLoad(this, args);
-        }
-        this._createdComponents = [];
-    }
-    function Sys$_Application$removeComponent(component) {
-        /// <summary locid="M:J#Sys._Application.removeComponent" />
-        /// <param name="component" type="Sys.Component"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "component", type: Sys.Component}
-        ]);
-        if (e) throw e;
-        var id = component.get_id();
-        if (id) delete this._components[id];
-    }
-    function Sys$_Application$unregisterDisposableObject(object) {
-        /// <summary locid="M:J#Sys._Application.unregisterDisposableObject" />
-        /// <param name="object" type="Sys.IDisposable"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "object", type: Sys.IDisposable}
-        ]);
-        if (e) throw e;
-        if (!this._disposing) {
-            Array.remove(this._disposableObjects, object);
-        }
-    }
-    function Sys$_Application$_addComponentToSecondPass(component, references) {
-        this._secondPassComponents[this._secondPassComponents.length] = {component: component, references: references};
-    }
-    function Sys$_Application$_doInitialize() {
-        Sys._Application.callBaseMethod(this, 'initialize');
-        var handler = this.get_events().getHandler("init");
-        if (handler) {
-            this.beginCreateComponents();
-            handler(this, Sys.EventArgs.Empty);
-            this.endCreateComponents();
-        }
-        this.raiseLoad();
-        this._initializing = false;
-    }
-    function Sys$_Application$_loadHandler() {
-        if(this._loadHandlerDelegate) {
-            Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
-            this._loadHandlerDelegate = null;
-        }
-        this.initialize();
-    }
-    function Sys$_Application$_unloadHandler(event) {
-        this.dispose();
-    }
-Sys._Application.prototype = {
-    _creatingComponents: false,
-    _disposing: false,
-    get_isCreatingComponents: Sys$_Application$get_isCreatingComponents,
-    add_load: Sys$_Application$add_load,
-    remove_load: Sys$_Application$remove_load,
-    add_init: Sys$_Application$add_init,
-    remove_init: Sys$_Application$remove_init,
-    add_unload: Sys$_Application$add_unload,
-    remove_unload: Sys$_Application$remove_unload,
-    addComponent: Sys$_Application$addComponent,
-    beginCreateComponents: Sys$_Application$beginCreateComponents,
-    dispose: Sys$_Application$dispose,
-    endCreateComponents: Sys$_Application$endCreateComponents,
-    findComponent: Sys$_Application$findComponent,
-    getComponents: Sys$_Application$getComponents,
-    initialize: Sys$_Application$initialize,
-    notifyScriptLoaded: Sys$_Application$notifyScriptLoaded,
-    registerDisposableObject: Sys$_Application$registerDisposableObject,
-    raiseLoad: Sys$_Application$raiseLoad,
-    removeComponent: Sys$_Application$removeComponent,
-    unregisterDisposableObject: Sys$_Application$unregisterDisposableObject,
-    _addComponentToSecondPass: Sys$_Application$_addComponentToSecondPass,
-    _doInitialize: Sys$_Application$_doInitialize,    
-    _loadHandler: Sys$_Application$_loadHandler,
-    _unloadHandler: Sys$_Application$_unloadHandler
-}
-Sys._Application.registerClass('Sys._Application', Sys.Component, Sys.IContainer);
-Sys.Application = new Sys._Application();
-var $find = Sys.Application.findComponent;
-Type.registerNamespace('Sys.Net');
- 
-Sys.Net.WebRequestExecutor = function Sys$Net$WebRequestExecutor() {
-    /// <summary locid="M:J#Sys.Net.WebRequestExecutor.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    this._webRequest = null;
-    this._resultObject = null;
-}
-    function Sys$Net$WebRequestExecutor$get_webRequest() {
-        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.WebRequestExecutor.webRequest"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._webRequest;
-    }
-    function Sys$Net$WebRequestExecutor$_set_webRequest(value) {
-        if (this.get_started()) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest'));
-        }
-        this._webRequest = value;
-    }
-    function Sys$Net$WebRequestExecutor$get_started() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.started"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_responseAvailable() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.responseAvailable"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_timedOut() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.timedOut"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_aborted() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.aborted"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_responseData() {
-        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.responseData"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_statusCode() {
-        /// <value type="Number" locid="P:J#Sys.Net.WebRequestExecutor.statusCode"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_statusText() {
-        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.statusText"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_xml() {
-        /// <value locid="P:J#Sys.Net.WebRequestExecutor.xml"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$get_object() {
-        /// <value locid="P:J#Sys.Net.WebRequestExecutor.object"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._resultObject) {
-            this._resultObject = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());
-        }
-        return this._resultObject;
-    }
-    function Sys$Net$WebRequestExecutor$executeRequest() {
-        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.executeRequest" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$abort() {
-        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.abort" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$getResponseHeader(header) {
-        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getResponseHeader" />
-        /// <param name="header" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "header", type: String}
-        ]);
-        if (e) throw e;
-        throw Error.notImplemented();
-    }
-    function Sys$Net$WebRequestExecutor$getAllResponseHeaders() {
-        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getAllResponseHeaders" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        throw Error.notImplemented();
-    }
-Sys.Net.WebRequestExecutor.prototype = {
-    get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest,
-    _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest,
-    get_started: Sys$Net$WebRequestExecutor$get_started,
-    get_responseAvailable: Sys$Net$WebRequestExecutor$get_responseAvailable,
-    get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut,
-    get_aborted: Sys$Net$WebRequestExecutor$get_aborted,
-    get_responseData: Sys$Net$WebRequestExecutor$get_responseData,
-    get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode,
-    get_statusText: Sys$Net$WebRequestExecutor$get_statusText,
-    get_xml: Sys$Net$WebRequestExecutor$get_xml,
-    get_object: Sys$Net$WebRequestExecutor$get_object,
-    executeRequest: Sys$Net$WebRequestExecutor$executeRequest,
-    abort: Sys$Net$WebRequestExecutor$abort,
-    getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader,
-    getAllResponseHeaders: Sys$Net$WebRequestExecutor$getAllResponseHeaders
-}
-Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor');
- 
-Sys.Net.XMLDOM = function Sys$Net$XMLDOM(markup) {
-    if (!window.DOMParser) {
-        var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
-        for (var i = 0, l = progIDs.length; i < l; i++) {
-            try {
-                var xmlDOM = new ActiveXObject(progIDs[i]);
-                xmlDOM.async = false;
-                xmlDOM.loadXML(markup);
-                xmlDOM.setProperty('SelectionLanguage', 'XPath');
-                return xmlDOM;
-            }
-            catch (ex) {
-            }
-        }
-    }
-    else {
-        try {
-            var domParser = new window.DOMParser();
-            return domParser.parseFromString(markup, 'text/xml');
-        }
-        catch (ex) {
-        }
-    }
-    return null;
-}
-Sys.Net.XMLHttpExecutor = function Sys$Net$XMLHttpExecutor() {
-    /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    Sys.Net.XMLHttpExecutor.initializeBase(this);
-    var _this = this;
-    this._xmlHttpRequest = null;
-    this._webRequest = null;
-    this._responseAvailable = false;
-    this._timedOut = false;
-    this._timer = null;
-    this._aborted = false;
-    this._started = false;
-    this._onReadyStateChange = function this$_onReadyStateChange() {
-        
-        if (_this._xmlHttpRequest.readyState === 4 ) {
-            try {
-                if (typeof(_this._xmlHttpRequest.status) === "undefined") {
-                    return;
-                }
-            }
-            catch(ex) {
-                return;
-            }
-            
-            _this._clearTimer();
-            _this._responseAvailable = true;
-            _this._webRequest.completed(Sys.EventArgs.Empty);
-            if (_this._xmlHttpRequest != null) {
-                _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
-                _this._xmlHttpRequest = null;
-            }
-        }
-    }
-    this._clearTimer = function this$_clearTimer() {
-        if (_this._timer != null) {
-            window.clearTimeout(_this._timer);
-            _this._timer = null;
-        }
-    }
-    this._onTimeout = function this$_onTimeout() {
-        if (!_this._responseAvailable) {
-            _this._clearTimer();
-            _this._timedOut = true;
-            _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
-            _this._xmlHttpRequest.abort();
-            _this._webRequest.completed(Sys.EventArgs.Empty);
-            _this._xmlHttpRequest = null;
-        }
-    }
-}
-    function Sys$Net$XMLHttpExecutor$get_timedOut() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.timedOut"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timedOut;
-    }
-    function Sys$Net$XMLHttpExecutor$get_started() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.started"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._started;
-    }
-    function Sys$Net$XMLHttpExecutor$get_responseAvailable() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.responseAvailable"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._responseAvailable;
-    }
-    function Sys$Net$XMLHttpExecutor$get_aborted() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.aborted"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._aborted;
-    }
-    function Sys$Net$XMLHttpExecutor$executeRequest() {
-        /// <summary locid="M:J#this._onTimeout" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        this._webRequest = this.get_webRequest();
-        if (this._started) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest'));
-        }
-        if (this._webRequest === null) {
-            throw Error.invalidOperation(Sys.Res.nullWebRequest);
-        }
-        var body = this._webRequest.get_body();
-        var headers = this._webRequest.get_headers();
-        this._xmlHttpRequest = new XMLHttpRequest();
-        this._xmlHttpRequest.onreadystatechange = this._onReadyStateChange;
-        var verb = this._webRequest.get_httpVerb();
-        this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true );
-        if (headers) {
-            for (var header in headers) {
-                var val = headers[header];
-                if (typeof(val) !== "function")
-                    this._xmlHttpRequest.setRequestHeader(header, val);
-            }
-        }
-        if (verb.toLowerCase() === "post") {
-            if ((headers === null) || !headers['Content-Type']) {
-                this._xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
-            }
-            if (!body) {
-                body = "";
-            }
-        }
-        var timeout = this._webRequest.get_timeout();
-        if (timeout > 0) {
-            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout);
-        }
-        this._xmlHttpRequest.send(body);
-        this._started = true;
-    }
-    function Sys$Net$XMLHttpExecutor$getResponseHeader(header) {
-        /// <summary locid="M:J#this._onTimeout" />
-        /// <param name="header" type="String"></param>
-        /// <returns type="String"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "header", type: String}
-        ]);
-        if (e) throw e;
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader'));
-        }
-        var result;
-        try {
-            result = this._xmlHttpRequest.getResponseHeader(header);
-        } catch (e) {
-        }
-        if (!result) result = "";
-        return result;
-    }
-    function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() {
-        /// <summary locid="M:J#this._onTimeout" />
-        /// <returns type="String"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders'));
-        }
-        return this._xmlHttpRequest.getAllResponseHeaders();
-    }
-    function Sys$Net$XMLHttpExecutor$get_responseData() {
-        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.responseData"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
-        }
-        return this._xmlHttpRequest.responseText;
-    }
-    function Sys$Net$XMLHttpExecutor$get_statusCode() {
-        /// <value type="Number" locid="P:J#Sys.Net.XMLHttpExecutor.statusCode"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode'));
-        }
-        var result = 0;
-        try {
-            result = this._xmlHttpRequest.status;
-        }
-        catch(ex) {
-        }
-        return result;
-    }
-    function Sys$Net$XMLHttpExecutor$get_statusText() {
-        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.statusText"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText'));
-        }
-        return this._xmlHttpRequest.statusText;
-    }
-    function Sys$Net$XMLHttpExecutor$get_xml() {
-        /// <value locid="P:J#Sys.Net.XMLHttpExecutor.xml"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._responseAvailable) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml'));
-        }
-        if (!this._xmlHttpRequest) {
-            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml'));
-        }
-        var xml = this._xmlHttpRequest.responseXML;
-        if (!xml || !xml.documentElement) {
-            xml = Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);
-            if (!xml || !xml.documentElement)
-                return null;
-        }
-        else if (navigator.userAgent.indexOf('MSIE') !== -1) {
-            xml.setProperty('SelectionLanguage', 'XPath');
-        }
-        if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
-            xml.documentElement.tagName === "parsererror") {
-            return null;
-        }
-        
-        if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") {
-            return null;
-        }
-        
-        return xml;
-    }
-    function Sys$Net$XMLHttpExecutor$abort() {
-        /// <summary locid="M:J#this._onTimeout" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._started) {
-            throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
-        }
-        if (this._aborted || this._responseAvailable || this._timedOut)
-            return;
-        this._aborted = true;
-        this._clearTimer();
-        if (this._xmlHttpRequest && !this._responseAvailable) {
-            this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
-            this._xmlHttpRequest.abort();
-            
-            this._xmlHttpRequest = null;            
-            this._webRequest.completed(Sys.EventArgs.Empty);
-        }
-    }
-Sys.Net.XMLHttpExecutor.prototype = {
-    get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut,
-    get_started: Sys$Net$XMLHttpExecutor$get_started,
-    get_responseAvailable: Sys$Net$XMLHttpExecutor$get_responseAvailable,
-    get_aborted: Sys$Net$XMLHttpExecutor$get_aborted,
-    executeRequest: Sys$Net$XMLHttpExecutor$executeRequest,
-    getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader,
-    getAllResponseHeaders: Sys$Net$XMLHttpExecutor$getAllResponseHeaders,
-    get_responseData: Sys$Net$XMLHttpExecutor$get_responseData,
-    get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode,
-    get_statusText: Sys$Net$XMLHttpExecutor$get_statusText,
-    get_xml: Sys$Net$XMLHttpExecutor$get_xml,
-    abort: Sys$Net$XMLHttpExecutor$abort
-}
-Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor);
- 
-Sys.Net._WebRequestManager = function Sys$Net$_WebRequestManager() {
-    this._this = this;
-    this._defaultTimeout = 0;
-    this._defaultExecutorType = "Sys.Net.XMLHttpExecutor";
-}
-    function Sys$Net$_WebRequestManager$add_invokingRequest(handler) {
-        /// <summary locid="E:J#Sys.Net._WebRequestManager.invokingRequest" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().addHandler("invokingRequest", handler);
-    }
-    function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().removeHandler("invokingRequest", handler);
-    }
-    function Sys$Net$_WebRequestManager$add_completedRequest(handler) {
-        /// <summary locid="E:J#Sys.Net._WebRequestManager.completedRequest" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().addHandler("completedRequest", handler);
-    }
-    function Sys$Net$_WebRequestManager$remove_completedRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().removeHandler("completedRequest", handler);
-    }
-    function Sys$Net$_WebRequestManager$_get_eventHandlerList() {
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-    function Sys$Net$_WebRequestManager$get_defaultTimeout() {
-        /// <value type="Number" locid="P:J#Sys.Net._WebRequestManager.defaultTimeout"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultTimeout;
-    }
-    function Sys$Net$_WebRequestManager$set_defaultTimeout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-        if (value < 0) {
-            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
-        }
-        this._defaultTimeout = value;
-    }
-    function Sys$Net$_WebRequestManager$get_defaultExecutorType() {
-        /// <value type="String" locid="P:J#Sys.Net._WebRequestManager.defaultExecutorType"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultExecutorType;
-    }
-    function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        this._defaultExecutorType = value;
-    }
-    function Sys$Net$_WebRequestManager$executeRequest(webRequest) {
-        /// <summary locid="M:J#Sys.Net._WebRequestManager.executeRequest" />
-        /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "webRequest", type: Sys.Net.WebRequest}
-        ]);
-        if (e) throw e;
-        var executor = webRequest.get_executor();
-        if (!executor) {
-            var failed = false;
-            try {
-                var executorType = eval(this._defaultExecutorType);
-                executor = new executorType();
-            } catch (e) {
-                failed = true;
-            }
-            if (failed  || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) {
-                throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType));
-            }
-            webRequest.set_executor(executor);
-        }
-        if (executor.get_aborted()) {
-            return;
-        }
-        var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest);
-        var handler = this._get_eventHandlerList().getHandler("invokingRequest");
-        if (handler) {
-            handler(this, evArgs);
-        }
-        if (!evArgs.get_cancel()) {
-            executor.executeRequest();
-        }
-    }
-Sys.Net._WebRequestManager.prototype = {
-    add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest,
-    remove_invokingRequest: Sys$Net$_WebRequestManager$remove_invokingRequest,
-    add_completedRequest: Sys$Net$_WebRequestManager$add_completedRequest,
-    remove_completedRequest: Sys$Net$_WebRequestManager$remove_completedRequest,
-    _get_eventHandlerList: Sys$Net$_WebRequestManager$_get_eventHandlerList,
-    get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout,
-    set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout,
-    get_defaultExecutorType: Sys$Net$_WebRequestManager$get_defaultExecutorType,
-    set_defaultExecutorType: Sys$Net$_WebRequestManager$set_defaultExecutorType,
-    executeRequest: Sys$Net$_WebRequestManager$executeRequest
-}
-Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager');
-Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager();
- 
-Sys.Net.NetworkRequestEventArgs = function Sys$Net$NetworkRequestEventArgs(webRequest) {
-    /// <summary locid="M:J#Sys.Net.NetworkRequestEventArgs.#ctor" />
-    /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "webRequest", type: Sys.Net.WebRequest}
-    ]);
-    if (e) throw e;
-    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
-    this._webRequest = webRequest;
-}
-    function Sys$Net$NetworkRequestEventArgs$get_webRequest() {
-        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.NetworkRequestEventArgs.webRequest"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._webRequest;
-    }
-Sys.Net.NetworkRequestEventArgs.prototype = {
-    get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest
-}
-Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs);
- 
-Sys.Net.WebRequest = function Sys$Net$WebRequest() {
-    /// <summary locid="M:J#Sys.Net.WebRequest.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    this._url = "";
-    this._headers = { };
-    this._body = null;
-    this._userContext = null;
-    this._httpVerb = null;
-    this._executor = null;
-    this._invokeCalled = false;
-    this._timeout = 0;
-}
-    function Sys$Net$WebRequest$add_completed(handler) {
-    /// <summary locid="E:J#Sys.Net.WebRequest.completed" />
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-        this._get_eventHandlerList().addHandler("completed", handler);
-    }
-    function Sys$Net$WebRequest$remove_completed(handler) {
-    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-    if (e) throw e;
-        this._get_eventHandlerList().removeHandler("completed", handler);
-    }
-    function Sys$Net$WebRequest$completed(eventArgs) {
-        /// <summary locid="M:J#Sys.Net.WebRequest.completed" />
-        /// <param name="eventArgs" type="Sys.EventArgs"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "eventArgs", type: Sys.EventArgs}
-        ]);
-        if (e) throw e;
-        var handler = Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");
-        if (handler) {
-            handler(this._executor, eventArgs);
-        }
-        handler = this._get_eventHandlerList().getHandler("completed");
-        if (handler) {
-            handler(this._executor, eventArgs);
-        }
-    }
-    function Sys$Net$WebRequest$_get_eventHandlerList() {
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-    function Sys$Net$WebRequest$get_url() {
-        /// <value type="String" locid="P:J#Sys.Net.WebRequest.url"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._url;
-    }
-    function Sys$Net$WebRequest$set_url(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        this._url = value;
-    }
-    function Sys$Net$WebRequest$get_headers() {
-        /// <value locid="P:J#Sys.Net.WebRequest.headers"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._headers;
-    }
-    function Sys$Net$WebRequest$get_httpVerb() {
-        /// <value type="String" locid="P:J#Sys.Net.WebRequest.httpVerb"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._httpVerb === null) {
-            if (this._body === null) {
-                return "GET";
-            }
-            return "POST";
-        }
-        return this._httpVerb;
-    }
-    function Sys$Net$WebRequest$set_httpVerb(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        if (value.length === 0) {
-            throw Error.argument('value', Sys.Res.invalidHttpVerb);
-        }
-        this._httpVerb = value;
-    }
-    function Sys$Net$WebRequest$get_body() {
-        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.body"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._body;
-    }
-    function Sys$Net$WebRequest$set_body(value) {
-        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
-        if (e) throw e;
-        this._body = value;
-    }
-    function Sys$Net$WebRequest$get_userContext() {
-        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.userContext"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._userContext;
-    }
-    function Sys$Net$WebRequest$set_userContext(value) {
-        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
-        if (e) throw e;
-        this._userContext = value;
-    }
-    function Sys$Net$WebRequest$get_executor() {
-        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.Net.WebRequest.executor"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._executor;
-    }
-    function Sys$Net$WebRequest$set_executor(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]);
-        if (e) throw e;
-        if (this._executor !== null && this._executor.get_started()) {
-            throw Error.invalidOperation(Sys.Res.setExecutorAfterActive);
-        }
-        this._executor = value;
-        this._executor._set_webRequest(this);
-    }
-    function Sys$Net$WebRequest$get_timeout() {
-        /// <value type="Number" locid="P:J#Sys.Net.WebRequest.timeout"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._timeout === 0) {
-            return Sys.Net.WebRequestManager.get_defaultTimeout();
-        }
-        return this._timeout;
-    }
-    function Sys$Net$WebRequest$set_timeout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-        if (value < 0) {
-            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
-        }
-        this._timeout = value;
-    }
-    function Sys$Net$WebRequest$getResolvedUrl() {
-        /// <summary locid="M:J#Sys.Net.WebRequest.getResolvedUrl" />
-        /// <returns type="String"></returns>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return Sys.Net.WebRequest._resolveUrl(this._url);
-    }
-    function Sys$Net$WebRequest$invoke() {
-        /// <summary locid="M:J#Sys.Net.WebRequest.invoke" />
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._invokeCalled) {
-            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
-        }
-        Sys.Net.WebRequestManager.executeRequest(this);
-        this._invokeCalled = true;
-    }
-Sys.Net.WebRequest.prototype = {
-    add_completed: Sys$Net$WebRequest$add_completed,
-    remove_completed: Sys$Net$WebRequest$remove_completed,
-    completed: Sys$Net$WebRequest$completed,
-    _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList,
-    get_url: Sys$Net$WebRequest$get_url,
-    set_url: Sys$Net$WebRequest$set_url,
-    get_headers: Sys$Net$WebRequest$get_headers,
-    get_httpVerb: Sys$Net$WebRequest$get_httpVerb,
-    set_httpVerb: Sys$Net$WebRequest$set_httpVerb,
-    get_body: Sys$Net$WebRequest$get_body,
-    set_body: Sys$Net$WebRequest$set_body,
-    get_userContext: Sys$Net$WebRequest$get_userContext,
-    set_userContext: Sys$Net$WebRequest$set_userContext,
-    get_executor: Sys$Net$WebRequest$get_executor,
-    set_executor: Sys$Net$WebRequest$set_executor,
-    get_timeout: Sys$Net$WebRequest$get_timeout,
-    set_timeout: Sys$Net$WebRequest$set_timeout,
-    getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl,
-    invoke: Sys$Net$WebRequest$invoke
-}
-Sys.Net.WebRequest._resolveUrl = function Sys$Net$WebRequest$_resolveUrl(url, baseUrl) {
-    if (url && url.indexOf('://') !== -1) {
-        return url;
-    }
-    if (!baseUrl || baseUrl.length === 0) {
-        var baseElement = document.getElementsByTagName('base')[0];
-        if (baseElement && baseElement.href && baseElement.href.length > 0) {
-            baseUrl = baseElement.href;
-        }
-        else {
-            baseUrl = document.URL;
-        }
-    }
-    var qsStart = baseUrl.indexOf('?');
-    if (qsStart !== -1) {
-        baseUrl = baseUrl.substr(0, qsStart);
-    }
-    baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);
-    if (!url || url.length === 0) {
-        return baseUrl;
-    }
-    if (url.charAt(0) === '/') {
-        var slashslash = baseUrl.indexOf('://');
-        if (slashslash === -1) {
-            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
-        }
-        var nextSlash = baseUrl.indexOf('/', slashslash + 3);
-        if (nextSlash === -1) {
-            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
-        }
-        return baseUrl.substr(0, nextSlash) + url;
-    }
-    else {
-        var lastSlash = baseUrl.lastIndexOf('/');
-        if (lastSlash === -1) {
-            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
-        }
-        return baseUrl.substr(0, lastSlash+1) + url;
-    }
-}
-Sys.Net.WebRequest._createQueryString = function Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod) {
-    if (!encodeMethod)
-        encodeMethod = encodeURIComponent;
-    var sb = new Sys.StringBuilder();
-    var i = 0;
-    for (var arg in queryString) {
-        var obj = queryString[arg];
-        if (typeof(obj) === "function") continue;
-        var val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
-        if (i !== 0) {
-            sb.append('&');
-        }
-        sb.append(arg);
-        sb.append('=');
-        sb.append(encodeMethod(val));
-        i++;
-    }
-    return sb.toString();
-}
-Sys.Net.WebRequest._createUrl = function Sys$Net$WebRequest$_createUrl(url, queryString) {
-    if (!queryString) {
-        return url;
-    }
-    var qs = Sys.Net.WebRequest._createQueryString(queryString);
-    if (qs.length > 0) {
-        var sep = '?';
-        if (url && url.indexOf('?') !== -1)
-            sep = '&';
-        return url + sep + qs;
-    } else {
-        return url;
-    }
-}
-Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');
- 
-Sys.Net.WebServiceProxy = function Sys$Net$WebServiceProxy() {
-}
-    function Sys$Net$WebServiceProxy$get_timeout() {
-        /// <value type="Number" locid="P:J#Sys.Net.WebServiceProxy.timeout"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timeout;
-    }
-    function Sys$Net$WebServiceProxy$set_timeout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-        if (value < 0) { throw Error.argumentOutOfRange('value', value, Sys.Res.invalidTimeout); }
-        this._timeout = value;
-    }
-    function Sys$Net$WebServiceProxy$get_defaultUserContext() {
-        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultUserContext"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._userContext;
-    }
-    function Sys$Net$WebServiceProxy$set_defaultUserContext(value) {
-        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
-        if (e) throw e;
-        this._userContext = value;
-    }
-    function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() {
-        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultSucceededCallback"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._succeeded;
-    }
-    function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-        this._succeeded = value;
-    }
-    function Sys$Net$WebServiceProxy$get_defaultFailedCallback() {
-        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultFailedCallback"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._failed;
-    }
-    function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-        this._failed = value;
-    }
-    function Sys$Net$WebServiceProxy$get_path() {
-        /// <value type="String" locid="P:J#Sys.Net.WebServiceProxy.path"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._path;
-    }
-    function Sys$Net$WebServiceProxy$set_path(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        this._path = value;
-    }
-    function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) {
-        /// <summary locid="M:J#Sys.Net.WebServiceProxy._invoke" />
-        /// <param name="servicePath" type="String"></param>
-        /// <param name="methodName" type="String"></param>
-        /// <param name="useGet" type="Boolean"></param>
-        /// <param name="params"></param>
-        /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
-        /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
-        /// <param name="userContext" mayBeNull="true" optional="true"></param>
-        /// <returns type="Sys.Net.WebRequest"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "servicePath", type: String},
-            {name: "methodName", type: String},
-            {name: "useGet", type: Boolean},
-            {name: "params"},
-            {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
-            {name: "onFailure", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        if (onSuccess === null || typeof onSuccess === 'undefined') onSuccess = this.get_defaultSucceededCallback();
-        if (onFailure === null || typeof onFailure === 'undefined') onFailure = this.get_defaultFailedCallback();
-        if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext();
-        
-        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout());
-    }
-Sys.Net.WebServiceProxy.prototype = {
-    get_timeout: Sys$Net$WebServiceProxy$get_timeout,
-    set_timeout: Sys$Net$WebServiceProxy$set_timeout,
-    get_defaultUserContext: Sys$Net$WebServiceProxy$get_defaultUserContext,
-    set_defaultUserContext: Sys$Net$WebServiceProxy$set_defaultUserContext,
-    get_defaultSucceededCallback: Sys$Net$WebServiceProxy$get_defaultSucceededCallback,
-    set_defaultSucceededCallback: Sys$Net$WebServiceProxy$set_defaultSucceededCallback,
-    get_defaultFailedCallback: Sys$Net$WebServiceProxy$get_defaultFailedCallback,
-    set_defaultFailedCallback: Sys$Net$WebServiceProxy$set_defaultFailedCallback,
-    get_path: Sys$Net$WebServiceProxy$get_path,
-    set_path: Sys$Net$WebServiceProxy$set_path,
-    _invoke: Sys$Net$WebServiceProxy$_invoke
-}
-Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy');
-Sys.Net.WebServiceProxy.invoke = function Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout) {
-    /// <summary locid="M:J#Sys.Net.WebServiceProxy.invoke" />
-    /// <param name="servicePath" type="String"></param>
-    /// <param name="methodName" type="String"></param>
-    /// <param name="useGet" type="Boolean" optional="true"></param>
-    /// <param name="params" mayBeNull="true" optional="true"></param>
-    /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
-    /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
-    /// <param name="userContext" mayBeNull="true" optional="true"></param>
-    /// <param name="timeout" type="Number" optional="true"></param>
-    /// <returns type="Sys.Net.WebRequest"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "servicePath", type: String},
-        {name: "methodName", type: String},
-        {name: "useGet", type: Boolean, optional: true},
-        {name: "params", mayBeNull: true, optional: true},
-        {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
-        {name: "onFailure", type: Function, mayBeNull: true, optional: true},
-        {name: "userContext", mayBeNull: true, optional: true},
-        {name: "timeout", type: Number, optional: true}
-    ]);
-    if (e) throw e;
-    var request = new Sys.Net.WebRequest();
-    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8';
-    if (!params) params = {};
-    var urlParams = params;
-    if (!useGet || !urlParams) urlParams = {};
-    request.set_url(Sys.Net.WebRequest._createUrl(servicePath+"/"+encodeURIComponent(methodName), urlParams));
-    var body = null;
-    if (!useGet) {
-        body = Sys.Serialization.JavaScriptSerializer.serialize(params);
-        if (body === "{}") body = "";
-    }
-    request.set_body(body);
-    request.add_completed(onComplete);
-    if (timeout && timeout > 0) request.set_timeout(timeout);
-    request.invoke();
-    function onComplete(response, eventArgs) {
-        if (response.get_responseAvailable()) {
-            var statusCode = response.get_statusCode();
-            var result = null;
-           
-            try {
-                var contentType = response.getResponseHeader("Content-Type");
-                if (contentType.startsWith("application/json")) {
-                    result = response.get_object();
-                }
-                else if (contentType.startsWith("text/xml")) {
-                    result = response.get_xml();
-                }
-                else {
-                    result = response.get_responseData();
-                }
-            } catch (ex) {
-            }
-            var error = response.getResponseHeader("jsonerror");
-            var errorObj = (error === "true");
-            if (errorObj) {
-                if (result) {
-                    result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType);
-                }
-            }
-            else if (contentType.startsWith("application/json")) {
-                if (!result || typeof(result.d) === "undefined") {
-                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceInvalidJsonWrapper, methodName));
-                }
-                result = result.d;
-            }
-            if (((statusCode < 200) || (statusCode >= 300)) || errorObj) {
-                if (onFailure) {
-                    if (!result || !errorObj) {
-                        result = new Sys.Net.WebServiceError(false , String.format(Sys.Res.webServiceFailedNoMsg, methodName), "", "");
-                    }
-                    result._statusCode = statusCode;
-                    onFailure(result, userContext, methodName);
-                }
-                else {
-                    var error;
-                    if (result && errorObj) {
-                        error = result.get_exceptionType() + "-- " + result.get_message();
-                    }
-                    else {
-                        error = response.get_responseData();
-                    }
-                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
-                }
-            }
-            else if (onSuccess) {
-                onSuccess(result, userContext, methodName);
-            }
-        }
-        else {
-            var msg;
-            if (response.get_timedOut()) {
-                msg = String.format(Sys.Res.webServiceTimedOut, methodName);
-            }
-            else {
-                msg = String.format(Sys.Res.webServiceFailedNoMsg, methodName)
-            }
-            if (onFailure) {
-                onFailure(new Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), userContext, methodName);
-            }
-            else {
-                throw Sys.Net.WebServiceProxy._createFailedError(methodName, msg);
-            }
-        }
-    }
-    return request;
-}
-Sys.Net.WebServiceProxy._createFailedError = function Sys$Net$WebServiceProxy$_createFailedError(methodName, errorMessage) {
-    var displayMessage = "Sys.Net.WebServiceFailedException: " + errorMessage;
-    var e = Error.create(displayMessage, { 'name': 'Sys.Net.WebServiceFailedException', 'methodName': methodName });
-    e.popStackFrame();
-    return e;
-}
-Sys.Net.WebServiceProxy._defaultFailedCallback = function Sys$Net$WebServiceProxy$_defaultFailedCallback(err, methodName) {
-    var error = err.get_exceptionType() + "-- " + err.get_message();
-    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
-}
-Sys.Net.WebServiceProxy._generateTypedConstructor = function Sys$Net$WebServiceProxy$_generateTypedConstructor(type) {
-    return function(properties) {
-        if (properties) {
-            for (var name in properties) {
-                this[name] = properties[name];
-            }
-        }
-        this.__type = type;
-    }
-}
- 
-Sys.Net.WebServiceError = function Sys$Net$WebServiceError(timedOut, message, stackTrace, exceptionType) {
-    /// <summary locid="M:J#Sys.Net.WebServiceError.#ctor" />
-    /// <param name="timedOut" type="Boolean"></param>
-    /// <param name="message" type="String" mayBeNull="true"></param>
-    /// <param name="stackTrace" type="String" mayBeNull="true"></param>
-    /// <param name="exceptionType" type="String" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "timedOut", type: Boolean},
-        {name: "message", type: String, mayBeNull: true},
-        {name: "stackTrace", type: String, mayBeNull: true},
-        {name: "exceptionType", type: String, mayBeNull: true}
-    ]);
-    if (e) throw e;
-    this._timedOut = timedOut;
-    this._message = message;
-    this._stackTrace = stackTrace;
-    this._exceptionType = exceptionType;
-    this._statusCode = -1;
-}
-    function Sys$Net$WebServiceError$get_timedOut() {
-        /// <value type="Boolean" locid="P:J#Sys.Net.WebServiceError.timedOut"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._timedOut;
-    }
-    function Sys$Net$WebServiceError$get_statusCode() {
-        /// <value type="Number" locid="P:J#Sys.Net.WebServiceError.statusCode"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._statusCode;
-    }
-    function Sys$Net$WebServiceError$get_message() {
-        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.message"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._message;
-    }
-    function Sys$Net$WebServiceError$get_stackTrace() {
-        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.stackTrace"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._stackTrace;
-    }
-    function Sys$Net$WebServiceError$get_exceptionType() {
-        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.exceptionType"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._exceptionType;
-    }
-Sys.Net.WebServiceError.prototype = {
-    get_timedOut: Sys$Net$WebServiceError$get_timedOut,
-    get_statusCode: Sys$Net$WebServiceError$get_statusCode,
-    get_message: Sys$Net$WebServiceError$get_message,
-    get_stackTrace: Sys$Net$WebServiceError$get_stackTrace,
-    get_exceptionType: Sys$Net$WebServiceError$get_exceptionType
-}
-Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError');
-Type.registerNamespace('Sys.Services');
-Sys.Services._ProfileService = function Sys$Services$_ProfileService() {
-    Sys.Services._ProfileService.initializeBase(this);
-    this.properties = {};
-}
-Sys.Services._ProfileService.DefaultWebServicePath = '';
-    function Sys$Services$_ProfileService$get_defaultLoadCompletedCallback() {
-        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._ProfileService.defaultLoadCompletedCallback"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultLoadCompletedCallback;
-    }
-    function Sys$Services$_ProfileService$set_defaultLoadCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-        this._defaultLoadCompletedCallback = value;
-    }
-    function Sys$Services$_ProfileService$get_defaultSaveCompletedCallback() {
-        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._ProfileService.defaultSaveCompletedCallback"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultSaveCompletedCallback;
-    }
-    function Sys$Services$_ProfileService$set_defaultSaveCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-        this._defaultSaveCompletedCallback = value;
-    }
-    function Sys$Services$_ProfileService$get_path() {
-        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services._ProfileService.path"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._path || '';
-    }
-    function Sys$Services$_ProfileService$load(propertyNames, loadCompletedCallback, failedCallback, userContext) {
-        /// <summary locid="M:J#Sys.Services._ProfileService.load" />
-        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
-        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
-            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        var parameters;
-        var methodName;
-        if (!propertyNames) {
-            methodName = "GetAllPropertiesForCurrentUser";
-            parameters = { authenticatedUserOnly: false };
-        }
-        else {
-            methodName = "GetPropertiesForCurrentUser";
-            parameters = { properties: this._clonePropertyNames(propertyNames), authenticatedUserOnly: false };
-        }
-        this._invoke(this._get_path(),
-                                        methodName,
-                                        false,
-                                        parameters,
-                                        Function.createDelegate(this, this._onLoadComplete),
-                                        Function.createDelegate(this, this._onLoadFailed),
-                                        [loadCompletedCallback, failedCallback, userContext]);
-    }
-    function Sys$Services$_ProfileService$save(propertyNames, saveCompletedCallback, failedCallback, userContext) {
-        /// <summary locid="M:J#Sys.Services._ProfileService.save" />
-        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
-        /// <param name="saveCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
-            {name: "saveCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        var flattenedProperties = this._flattenProperties(propertyNames, this.properties);
-        this._invoke(this._get_path(),
-                                        "SetPropertiesForCurrentUser",
-                                        false,
-                                        { values: flattenedProperties.value, authenticatedUserOnly: false },
-                                        Function.createDelegate(this, this._onSaveComplete),
-                                        Function.createDelegate(this, this._onSaveFailed),
-                                        [saveCompletedCallback, failedCallback, userContext, flattenedProperties.count]);
-    }
-    function Sys$Services$_ProfileService$_clonePropertyNames(arr) {
-        var nodups = [];
-        var seen = {};
-        for (var i=0; i < arr.length; i++) {
-            var prop = arr[i];
-            if(!seen[prop]) { Array.add(nodups, prop); seen[prop]=true; };
-        }
-        return nodups;
-    }
-    function Sys$Services$_ProfileService$_flattenProperties(propertyNames, properties, groupName) {
-        var flattenedProperties = {};
-        var val;
-        var key;
-        var count = 0;
-        if (propertyNames && propertyNames.length === 0) {
-            return { value: flattenedProperties, count: 0 };
-        }
-        for (var property in properties) {
-            val = properties[property];
-            key = groupName ? groupName + "." + property : property;
-            if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
-                var obj = this._flattenProperties(propertyNames, val, key);
-                var groupProperties = obj.value;
-                count += obj.count; 
-                for(var subKey in groupProperties) {
-                    var subVal = groupProperties[subKey];
-                    flattenedProperties[subKey] = subVal;
-                }
-            }
-            else {
-                if(!propertyNames || Array.indexOf(propertyNames, key) !== -1) {
-                    flattenedProperties[key] = val;
-                    count++; 
-                }
-            }
-        }
-        return { value: flattenedProperties, count: count };
-    }
-    function Sys$Services$_ProfileService$_get_path() {
-        var path = this.get_path();
-        if (!path.length) {
-            path = Sys.Services._ProfileService.DefaultWebServicePath;
-        }
-        if (!path || !path.length) {
-            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
-        }
-        return path;
-    }
-    function Sys$Services$_ProfileService$_onLoadComplete(result, context, methodName) {
-        if (typeof(result) !== "object") {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Object"));
-        }
-        var unflattened = this._unflattenProperties(result);
-        for (var name in unflattened) {
-            this.properties[name] = unflattened[name];
-        }
-        
-        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
-        if (callback) {
-            var userContext = context[2] || this.get_defaultUserContext();        
-            callback(result.length, userContext, "Sys.Services.ProfileService.load");
-        }
-    }
-    function Sys$Services$_ProfileService$_onLoadFailed(err, context, methodName) {
-        var callback = context[1] || this.get_defaultFailedCallback();
-        if (callback) {
-            var userContext = context[2] || this.get_defaultUserContext();        
-            callback(err, userContext, "Sys.Services.ProfileService.load");
-        }
-        else {
-            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
-        }
-    }
-    function Sys$Services$_ProfileService$_onSaveComplete(result, context, methodName) {
-        var count = context[3];
-        if (result !== null) { 
-            if (result instanceof Array) {
-                count -= result.length;
-            }
-            else if (typeof(result) === 'number') {
-                count = result;
-            }
-            else {
-                throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
-            }
-        }
-        
-        var callback = context[0] || this.get_defaultSaveCompletedCallback() || this.get_defaultSucceededCallback();
-        if (callback) {
-            var userContext = context[2] || this.get_defaultUserContext();
-            callback(count, userContext, "Sys.Services.ProfileService.save");
-        }
-    }
-    function Sys$Services$_ProfileService$_onSaveFailed(err, context, methodName) {
-        var callback = context[1] || this.get_defaultFailedCallback();
-        if (callback) {
-            var userContext = context[2] || this.get_defaultUserContext();
-            callback(err, userContext, "Sys.Services.ProfileService.save");
-        }
-        else {
-            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
-        }
-    }
-    function Sys$Services$_ProfileService$_unflattenProperties(properties) {
-        var unflattenedProperties = {};
-        var dotIndex;
-        var val;
-        var count = 0;
-        for (var key in properties) {
-            count++;
-            val = properties[key];
-            dotIndex = key.indexOf('.');
-            if (dotIndex !== -1) {
-                var groupName = key.substr(0, dotIndex);
-                key = key.substr(dotIndex+1);
-                var group = unflattenedProperties[groupName];
-                if (!group || !Sys.Services.ProfileGroup.isInstanceOfType(group)) {
-                    group = new Sys.Services.ProfileGroup();
-                    unflattenedProperties[groupName] = group;
-                }
-                group[key] = val;
-            }
-            else {
-                unflattenedProperties[key] = val;
-            }
-        }
-        properties.length = count;
-        return unflattenedProperties;
-    }
-Sys.Services._ProfileService.prototype = {
-    _defaultLoadCompletedCallback: null,
-    _defaultSaveCompletedCallback: null,
-    _path: '',
-    _timeout: 0,
-    get_defaultLoadCompletedCallback: Sys$Services$_ProfileService$get_defaultLoadCompletedCallback,
-    set_defaultLoadCompletedCallback: Sys$Services$_ProfileService$set_defaultLoadCompletedCallback,
-    get_defaultSaveCompletedCallback: Sys$Services$_ProfileService$get_defaultSaveCompletedCallback,
-    set_defaultSaveCompletedCallback: Sys$Services$_ProfileService$set_defaultSaveCompletedCallback,
-    get_path: Sys$Services$_ProfileService$get_path,
-    load: Sys$Services$_ProfileService$load,
-    save: Sys$Services$_ProfileService$save,
-    _clonePropertyNames: Sys$Services$_ProfileService$_clonePropertyNames,    
-    _flattenProperties: Sys$Services$_ProfileService$_flattenProperties,
-    _get_path: Sys$Services$_ProfileService$_get_path,    
-    _onLoadComplete: Sys$Services$_ProfileService$_onLoadComplete,
-    _onLoadFailed: Sys$Services$_ProfileService$_onLoadFailed,
-    _onSaveComplete: Sys$Services$_ProfileService$_onSaveComplete,
-    _onSaveFailed: Sys$Services$_ProfileService$_onSaveFailed,
-    _unflattenProperties: Sys$Services$_ProfileService$_unflattenProperties
-}
-Sys.Services._ProfileService.registerClass('Sys.Services._ProfileService', Sys.Net.WebServiceProxy);
-Sys.Services.ProfileService = new Sys.Services._ProfileService();
-Sys.Services.ProfileGroup = function Sys$Services$ProfileGroup(properties) {
-    /// <summary locid="M:J#Sys.Services.ProfileGroup.#ctor" />
-    /// <param name="properties" optional="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "properties", mayBeNull: true, optional: true}
-    ]);
-    if (e) throw e;
-    if (properties) {
-        for (var property in properties) {
-            this[property] = properties[property];
-        }
-    }
-}
-Sys.Services.ProfileGroup.registerClass('Sys.Services.ProfileGroup');
-Sys.Services._AuthenticationService = function Sys$Services$_AuthenticationService() {
-    /// <summary locid="M:J#Sys.Services._AuthenticationService.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-    Sys.Services._AuthenticationService.initializeBase(this);
-}
-Sys.Services._AuthenticationService.DefaultWebServicePath = '';
-    function Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback() {
-        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._AuthenticationService.defaultLoginCompletedCallback"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultLoginCompletedCallback;
-    }
-    function Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-        this._defaultLoginCompletedCallback = value;
-    }
-    function Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback() {
-        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._AuthenticationService.defaultLogoutCompletedCallback"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultLogoutCompletedCallback;
-    }
-    function Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-        this._defaultLogoutCompletedCallback = value;
-    }
-    function Sys$Services$_AuthenticationService$get_isLoggedIn() {
-        /// <value type="Boolean" locid="P:J#Sys.Services._AuthenticationService.isLoggedIn"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._authenticated;
-    }
-    function Sys$Services$_AuthenticationService$get_path() {
-        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services._AuthenticationService.path"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._path || '';
-    }
-    function Sys$Services$_AuthenticationService$login(username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext) {
-        /// <summary locid="M:J#Sys.Services._AuthenticationService.login" />
-        /// <param name="username" type="String" mayBeNull="false"></param>
-        /// <param name="password" type="String" mayBeNull="true"></param>
-        /// <param name="isPersistent" type="Boolean" optional="true" mayBeNull="true"></param>
-        /// <param name="customInfo" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="loginCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "username", type: String},
-            {name: "password", type: String, mayBeNull: true},
-            {name: "isPersistent", type: Boolean, mayBeNull: true, optional: true},
-            {name: "customInfo", type: String, mayBeNull: true, optional: true},
-            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
-            {name: "loginCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        this._invoke(this._get_path(), "Login", false,
-                                        { userName: username, password: password, createPersistentCookie: isPersistent },
-                                        Function.createDelegate(this, this._onLoginComplete),
-                                        Function.createDelegate(this, this._onLoginFailed),
-                                        [username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext]);
-    }
-    function Sys$Services$_AuthenticationService$logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext) {
-        /// <summary locid="M:J#Sys.Services._AuthenticationService.logout" />
-        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
-        /// <param name="logoutCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
-            {name: "logoutCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        this._invoke(this._get_path(), "Logout", false, {}, 
-                                        Function.createDelegate(this, this._onLogoutComplete),
-                                        Function.createDelegate(this, this._onLogoutFailed),
-                                        [redirectUrl, logoutCompletedCallback, failedCallback, userContext]);
-    }
-    function Sys$Services$_AuthenticationService$_get_path() {
-        var path = this.get_path();
-        if(!path.length) {
-            path = Sys.Services._AuthenticationService.DefaultWebServicePath;
-        }
-        if(!path || !path.length) {
-            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
-        }
-        return path;
-    }
-    function Sys$Services$_AuthenticationService$_onLoginComplete(result, context, methodName) {
-        if(typeof(result) !== "boolean") {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Boolean"));
-        }
-        
-        var redirectUrl = context[4];
-        var userContext = context[7] || this.get_defaultUserContext();
-        var callback = context[5] || this.get_defaultLoginCompletedCallback() || this.get_defaultSucceededCallback();
-        
-        if(result) {
-            this._authenticated = true;
-            if (callback) {
-                callback(true, userContext, "Sys.Services.AuthenticationService.login");
-            }
-            
-            if (typeof(redirectUrl) !== "undefined" && redirectUrl !== null) {
-                window.location.href = redirectUrl;
-            }
-        }
-        else if (callback) {
-            callback(false, userContext, "Sys.Services.AuthenticationService.login");
-        }
-    }
-    function Sys$Services$_AuthenticationService$_onLoginFailed(err, context, methodName) {
-        var callback = context[6] || this.get_defaultFailedCallback();
-        if (callback) {
-            var userContext = context[7] || this.get_defaultUserContext();
-            callback(err, userContext, "Sys.Services.AuthenticationService.login");
-        }
-        else {
-            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
-        }
-    }
-    function Sys$Services$_AuthenticationService$_onLogoutComplete(result, context, methodName) {
-        if(result !== null) {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "null"));
-        }
-        
-        var redirectUrl = context[0];
-        var userContext = context[3] || this.get_defaultUserContext();
-        var callback = context[1] || this.get_defaultLogoutCompletedCallback() || this.get_defaultSucceededCallback();
-        this._authenticated = false;
-        
-        if (callback) {
-            callback(null, userContext, "Sys.Services.AuthenticationService.logout");
-        }
-        
-        if(!redirectUrl) {
-            window.location.reload();
-        }
-        else {
-            window.location.href = redirectUrl;
-        }
-    }
-    function Sys$Services$_AuthenticationService$_onLogoutFailed(err, context, methodName) {
-        var callback = context[2] || this.get_defaultFailedCallback();
-        if (callback) {
-            callback(err, context[3], "Sys.Services.AuthenticationService.logout");
-        }
-        else {
-            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
-        }
-    }
-    function Sys$Services$_AuthenticationService$_setAuthenticated(authenticated) {
-        this._authenticated = authenticated;
-    }
-Sys.Services._AuthenticationService.prototype = {
-    _defaultLoginCompletedCallback: null,
-    _defaultLogoutCompletedCallback: null,
-    _path: '',
-    _timeout: 0,
-    _authenticated: false,
-    get_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback,
-    set_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback,
-    get_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback,
-    set_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback,
-    get_isLoggedIn: Sys$Services$_AuthenticationService$get_isLoggedIn,
-    get_path: Sys$Services$_AuthenticationService$get_path,  
-    login: Sys$Services$_AuthenticationService$login,
-    logout: Sys$Services$_AuthenticationService$logout,
-    _get_path: Sys$Services$_AuthenticationService$_get_path,
-    _onLoginComplete: Sys$Services$_AuthenticationService$_onLoginComplete,
-    _onLoginFailed: Sys$Services$_AuthenticationService$_onLoginFailed,
-    _onLogoutComplete: Sys$Services$_AuthenticationService$_onLogoutComplete,
-    _onLogoutFailed: Sys$Services$_AuthenticationService$_onLogoutFailed,
-    _setAuthenticated: Sys$Services$_AuthenticationService$_setAuthenticated    
-}
-Sys.Services._AuthenticationService.registerClass('Sys.Services._AuthenticationService', Sys.Net.WebServiceProxy);
-Sys.Services.AuthenticationService = new Sys.Services._AuthenticationService();
-Sys.Services._RoleService = function Sys$Services$_RoleService() {
-    Sys.Services._RoleService.initializeBase(this);
-    this._roles = [];
-}
-Sys.Services._RoleService.DefaultWebServicePath = '';
-    function Sys$Services$_RoleService$get_defaultLoadCompletedCallback() {
-        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._RoleService.defaultLoadCompletedCallback"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._defaultLoadCompletedCallback;
-    }
-    function Sys$Services$_RoleService$set_defaultLoadCompletedCallback(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
-        if (e) throw e;
-        this._defaultLoadCompletedCallback = value;
-    }
-    function Sys$Services$_RoleService$get_path() {
-        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services._RoleService.path"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._path || '';
-    }
-    function Sys$Services$_RoleService$get_roles() {
-        /// <value type="Array" elementType="String" mayBeNull="false" locid="P:J#Sys.Services._RoleService.roles"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return Array.clone(this._roles);
-    }
-    function Sys$Services$_RoleService$isUserInRole(role) {
-        /// <summary locid="M:J#Sys.Services._RoleService.isUserInRole" />
-        /// <param name="role" type="String" mayBeNull="false"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "role", type: String}
-        ]);
-        if (e) throw e;
-        var v = this._get_rolesIndex()[role.trim().toLowerCase()];
-        return !!v;
-    }
-    function Sys$Services$_RoleService$load(loadCompletedCallback, failedCallback, userContext) {
-        /// <summary locid="M:J#Sys.Services._RoleService.load" />
-        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
-        /// <param name="userContext" optional="true" mayBeNull="true"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
-            {name: "userContext", mayBeNull: true, optional: true}
-        ]);
-        if (e) throw e;
-        Sys.Net.WebServiceProxy.invoke(
-                    this._get_path(),
-                    "GetRolesForCurrentUser",
-                    false,
-                    {} ,
-                    Function.createDelegate(this, this._onLoadComplete),
-                    Function.createDelegate(this, this._onLoadFailed),
-                    [loadCompletedCallback, failedCallback, userContext],
-                    this.get_timeout());
-    }
-    function Sys$Services$_RoleService$_get_path() {
-        var path = this.get_path();
-        if(!path || !path.length) {
-            path = Sys.Services._RoleService.DefaultWebServicePath;
-        }
-        if(!path || !path.length) {
-            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
-        }
-        return path;
-    }
-    function Sys$Services$_RoleService$_get_rolesIndex() {
-        if (!this._rolesIndex) {
-            var index = {};
-            for(var i=0; i < this._roles.length; i++) {
-                index[this._roles[i].toLowerCase()] = true;
-            }
-            this._rolesIndex = index;
-        }
-        return this._rolesIndex;
-    }
-    function Sys$Services$_RoleService$_onLoadComplete(result, context, methodName) {
-        if(result && !(result instanceof Array)) {
-            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
-        }
-        this._roles = result;
-        this._rolesIndex = null;
-        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
-        if (callback) {
-            var userContext = context[2] || this.get_defaultUserContext();
-            var clonedResult = Array.clone(result);
-            callback(clonedResult, userContext, "Sys.Services.RoleService.load");
-        }
-    }
-    function Sys$Services$_RoleService$_onLoadFailed(err, context, methodName) {
-        var callback = context[1] || this.get_defaultFailedCallback();
-        if (callback) {
-            var userContext = context[2] || this.get_defaultUserContext();
-            callback(err, userContext, "Sys.Services.RoleService.load");
-        }
-        else {
-            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
-        }
-    }
-Sys.Services._RoleService.prototype = {
-    _defaultLoadCompletedCallback: null,
-    _rolesIndex: null,
-    _timeout: 0,
-    _path: '',
-    get_defaultLoadCompletedCallback: Sys$Services$_RoleService$get_defaultLoadCompletedCallback,
-    set_defaultLoadCompletedCallback: Sys$Services$_RoleService$set_defaultLoadCompletedCallback,
-    get_path: Sys$Services$_RoleService$get_path,
-    get_roles: Sys$Services$_RoleService$get_roles,
-    isUserInRole: Sys$Services$_RoleService$isUserInRole,
-    load: Sys$Services$_RoleService$load,
-    _get_path: Sys$Services$_RoleService$_get_path,  
-    _get_rolesIndex: Sys$Services$_RoleService$_get_rolesIndex,
-    _onLoadComplete: Sys$Services$_RoleService$_onLoadComplete,
-    _onLoadFailed: Sys$Services$_RoleService$_onLoadFailed
-}
-Sys.Services._RoleService.registerClass('Sys.Services._RoleService', Sys.Net.WebServiceProxy);
-Sys.Services.RoleService = new Sys.Services._RoleService();
-Type.registerNamespace('Sys.Serialization');
-Sys.Serialization.JavaScriptSerializer = function Sys$Serialization$JavaScriptSerializer() {
-    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.#ctor" />
-    if (arguments.length !== 0) throw Error.parameterCount();
-}
-Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.JavaScriptSerializer');
-Sys.Serialization.JavaScriptSerializer._serverTypeFieldName = '__type';
-Sys.Serialization.JavaScriptSerializer._stringRegEx = new RegExp('["\\b\\f\\n\\r\\t\\\\\\x00-\\x1F]', 'i');
-Sys.Serialization.JavaScriptSerializer._dateRegEx = new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"', 'g');
-Sys.Serialization.JavaScriptSerializer._jsonRegEx = new RegExp('[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]', 'g');
-Sys.Serialization.JavaScriptSerializer._jsonStringRegEx = new RegExp('"(\\\\.|[^"\\\\])*"', 'g');
-Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeBooleanWithBuilder(object, stringBuilder) {
-    stringBuilder.append(object.toString());
-}
-Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeNumberWithBuilder(object, stringBuilder) {
-    if (isFinite(object)) {
-        stringBuilder.append(String(object));
-    }
-    else {
-        throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
-    }
-}
-Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeStringWithBuilder(object, stringBuilder) {
-    stringBuilder.append('"');
-    if (Sys.Serialization.JavaScriptSerializer._stringRegEx.test(object)) {
-        var length = object.length;
-        for (i = 0; i < length; ++i) {
-            var curChar = object.charAt(i);
-            if (curChar >= ' ') {
-                if (curChar === '\\' || curChar === '"') {
-                    stringBuilder.append('\\');
-                }
-                stringBuilder.append(curChar);
-            }
-            else {
-                switch (curChar) {
-                    case '\b':
-                        stringBuilder.append('\\b');
-                        break;
-                    case '\f':
-                        stringBuilder.append('\\f');
-                        break;
-                    case '\n':
-                        stringBuilder.append('\\n');
-                        break;
-                    case '\r':
-                        stringBuilder.append('\\r');
-                        break;
-                    case '\t':
-                        stringBuilder.append('\\t');
-                        break;
-                    default:
-                        stringBuilder.append('\\u00');
-                        if (curChar.charCodeAt() < 16) stringBuilder.append('0');
-                        stringBuilder.append(curChar.charCodeAt().toString(16));
-                }
-            }
-        }
-    } else {
-        stringBuilder.append(object);
-    }
-    stringBuilder.append('"');    
-}
-Sys.Serialization.JavaScriptSerializer._serializeWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, stringBuilder, sort, prevObjects) {
-    var i;
-    switch (typeof object) {
-    case 'object':
-        if (object) {
-            if (prevObjects){
-                for( var j = 0; j < prevObjects.length; j++) {
-                    if (prevObjects[j] === object) {
-                        throw Error.invalidOperation(Sys.Res.cannotSerializeObjectWithCycle);
-                    }
-                }
-            }
-            else {
-                prevObjects = new Array();
-            }
-            try {
-                Array.add(prevObjects, object);
-                
-                if (Number.isInstanceOfType(object)){
-                    Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder);
-                }
-                else if (Boolean.isInstanceOfType(object)){
-                    Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder);
-                }
-                else if (String.isInstanceOfType(object)){
-                    Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder);
-                }
-            
-                else if (Array.isInstanceOfType(object)) {
-                    stringBuilder.append('[');
-                   
-                    for (i = 0; i < object.length; ++i) {
-                        if (i > 0) {
-                            stringBuilder.append(',');
-                        }
-                        Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], stringBuilder,false,prevObjects);
-                    }
-                    stringBuilder.append(']');
-                }
-                else {
-                    if (Date.isInstanceOfType(object)) {
-                        stringBuilder.append('"\\/Date(');
-                        stringBuilder.append(object.getTime());
-                        stringBuilder.append(')\\/"');
-                        break;
-                    }
-                    var properties = [];
-                    var propertyCount = 0;
-                    for (var name in object) {
-                        if (name.startsWith('$')) {
-                            continue;
-                        }
-                        if (name === Sys.Serialization.JavaScriptSerializer._serverTypeFieldName && propertyCount !== 0){
-                            properties[propertyCount++] = properties[0];
-                            properties[0] = name;
-                        }
-                        else{
-                            properties[propertyCount++] = name;
-                        }
-                    }
-                    if (sort) properties.sort();
-                    stringBuilder.append('{');
-                    var needComma = false;
-                     
-                    for (i=0; i<propertyCount; i++) {
-                        var value = object[properties[i]];
-                        if (typeof value !== 'undefined' && typeof value !== 'function') {
-                            if (needComma) {
-                                stringBuilder.append(',');
-                            }
-                            else {
-                                needComma = true;
-                            }
-                           
-                            Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(properties[i], stringBuilder, sort, prevObjects);
-                            stringBuilder.append(':');
-                            Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(value, stringBuilder, sort, prevObjects);
-                          
-                        }
-                    }
-                stringBuilder.append('}');
-                }
-            }
-            finally {
-                Array.removeAt(prevObjects, prevObjects.length - 1);
-            }
-        }
-        else {
-            stringBuilder.append('null');
-        }
-        break;
-    case 'number':
-        Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder);
-        break;
-    case 'string':
-        Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder);
-        break;
-    case 'boolean':
-        Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder);
-        break;
-    default:
-        stringBuilder.append('null');
-        break;
-    }
-}
-Sys.Serialization.JavaScriptSerializer.serialize = function Sys$Serialization$JavaScriptSerializer$serialize(object) {
-    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.serialize" />
-    /// <param name="object" mayBeNull="true"></param>
-    /// <returns type="String"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "object", mayBeNull: true}
-    ]);
-    if (e) throw e;
-    var stringBuilder = new Sys.StringBuilder();
-    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false);
-    return stringBuilder.toString();
-}
-Sys.Serialization.JavaScriptSerializer.deserialize = function Sys$Serialization$JavaScriptSerializer$deserialize(data, secure) {
-    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.deserialize" />
-    /// <param name="data" type="String"></param>
-    /// <param name="secure" type="Boolean" optional="true"></param>
-    /// <returns></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "data", type: String},
-        {name: "secure", type: Boolean, optional: true}
-    ]);
-    if (e) throw e;
-    
-    if (data.length === 0) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString);
-    try {    
-        var exp = data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx, "$1new Date($2)");
-        
-        if (secure && Sys.Serialization.JavaScriptSerializer._jsonRegEx.test(
-             exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx, ''))) throw null;
-        return eval('(' + exp + ')');
-    }
-    catch (e) {
-         throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson);
-    }
-}
- 
-Sys.CultureInfo = function Sys$CultureInfo(name, numberFormat, dateTimeFormat) {
-    /// <summary locid="M:J#Sys.CultureInfo.#ctor" />
-    /// <param name="name" type="String"></param>
-    /// <param name="numberFormat" type="Object"></param>
-    /// <param name="dateTimeFormat" type="Object"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "name", type: String},
-        {name: "numberFormat", type: Object},
-        {name: "dateTimeFormat", type: Object}
-    ]);
-    if (e) throw e;
-    this.name = name;
-    this.numberFormat = numberFormat;
-    this.dateTimeFormat = dateTimeFormat;
-}
-    function Sys$CultureInfo$_getDateTimeFormats() {
-        if (! this._dateTimeFormats) {
-            var dtf = this.dateTimeFormat;
-            this._dateTimeFormats =
-              [ dtf.MonthDayPattern,
-                dtf.YearMonthPattern,
-                dtf.ShortDatePattern,
-                dtf.ShortTimePattern,
-                dtf.LongDatePattern,
-                dtf.LongTimePattern,
-                dtf.FullDateTimePattern,
-                dtf.RFC1123Pattern,
-                dtf.SortableDateTimePattern,
-                dtf.UniversalSortableDateTimePattern ];
-        }
-        return this._dateTimeFormats;
-    }
-    function Sys$CultureInfo$_getMonthIndex(value) {
-        if (!this._upperMonths) {
-            this._upperMonths = this._toUpperArray(this.dateTimeFormat.MonthNames);
-        }
-        return Array.indexOf(this._upperMonths, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_getAbbrMonthIndex(value) {
-        if (!this._upperAbbrMonths) {
-            this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
-        }
-        return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_getDayIndex(value) {
-        if (!this._upperDays) {
-            this._upperDays = this._toUpperArray(this.dateTimeFormat.DayNames);
-        }
-        return Array.indexOf(this._upperDays, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_getAbbrDayIndex(value) {
-        if (!this._upperAbbrDays) {
-            this._upperAbbrDays = this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);
-        }
-        return Array.indexOf(this._upperAbbrDays, this._toUpper(value));
-    }
-    function Sys$CultureInfo$_toUpperArray(arr) {
-        var result = [];
-        for (var i = 0, il = arr.length; i < il; i++) {
-            result[i] = this._toUpper(arr[i]);
-        }
-        return result;
-    }
-    function Sys$CultureInfo$_toUpper(value) {
-        return value.split("\u00A0").join(' ').toUpperCase();
-    }
-Sys.CultureInfo.prototype = {
-    _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats,
-    _getMonthIndex: Sys$CultureInfo$_getMonthIndex,
-    _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex,
-    _getDayIndex: Sys$CultureInfo$_getDayIndex,
-    _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex,
-    _toUpperArray: Sys$CultureInfo$_toUpperArray,
-    _toUpper: Sys$CultureInfo$_toUpper
-}
-Sys.CultureInfo._parse = function Sys$CultureInfo$_parse(value) {
-    var cultureInfo = Sys.Serialization.JavaScriptSerializer.deserialize(value);
-    return new Sys.CultureInfo(cultureInfo.name, cultureInfo.numberFormat, cultureInfo.dateTimeFormat);
-}
-Sys.CultureInfo.registerClass('Sys.CultureInfo');
-Sys.CultureInfo.InvariantCulture = Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');
-if (typeof(__cultureInfo) === 'undefined') {
-    var __cultureInfo = '{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';
-}
-Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo);
-delete __cultureInfo;
- 
-Sys.UI.Behavior = function Sys$UI$Behavior(element) {
-    /// <summary locid="M:J#Sys.UI.Behavior.#ctor" />
-    /// <param name="element" domElement="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-    Sys.UI.Behavior.initializeBase(this);
-    this._element = element;
-    var behaviors = element._behaviors;
-    if (!behaviors) {
-        element._behaviors = [this];
-    }
-    else {
-        behaviors[behaviors.length] = this;
-    }
-}
-    function Sys$UI$Behavior$get_element() {
-        /// <value domElement="true" locid="P:J#Sys.UI.Behavior.element"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._element;
-    }
-    function Sys$UI$Behavior$get_id() {
-        /// <value type="String" locid="P:J#Sys.UI.Behavior.id"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id');
-        if (baseId) return baseId;
-        if (!this._element || !this._element.id) return '';
-        return this._element.id + '$' + this.get_name();
-    }
-    function Sys$UI$Behavior$get_name() {
-        /// <value type="String" locid="P:J#Sys.UI.Behavior.name"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._name) return this._name;
-        var name = Object.getTypeName(this);
-        var i = name.lastIndexOf('.');
-        if (i != -1) name = name.substr(i + 1);
-        if (!this.get_isInitialized()) this._name = name;
-        return name;
-    }
-    function Sys$UI$Behavior$set_name(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' '))
-            throw Error.argument('value', Sys.Res.invalidId);
-        if (typeof(this._element[value]) !== 'undefined')
-            throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value));
-        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
-        this._name = value;
-    }
-    function Sys$UI$Behavior$initialize() {
-        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
-        var name = this.get_name();
-        if (name) this._element[name] = this;
-    }
-    function Sys$UI$Behavior$dispose() {
-        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
-        if (this._element) {
-            var name = this.get_name();
-            if (name) {
-                this._element[name] = null;
-            }
-            Array.remove(this._element._behaviors, this);
-            delete this._element;
-        }
-    }
-Sys.UI.Behavior.prototype = {
-    _name: null,
-    get_element: Sys$UI$Behavior$get_element,
-    get_id: Sys$UI$Behavior$get_id,
-    get_name: Sys$UI$Behavior$get_name,
-    set_name: Sys$UI$Behavior$set_name,
-    initialize: Sys$UI$Behavior$initialize,
-    dispose: Sys$UI$Behavior$dispose
-}
-Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component);
-Sys.UI.Behavior.getBehaviorByName = function Sys$UI$Behavior$getBehaviorByName(element, name) {
-    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorByName" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="name" type="String"></param>
-    /// <returns type="Sys.UI.Behavior" mayBeNull="true"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "name", type: String}
-    ]);
-    if (e) throw e;
-    var b = element[name];
-    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
-}
-Sys.UI.Behavior.getBehaviors = function Sys$UI$Behavior$getBehaviors(element) {
-    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviors" />
-    /// <param name="element" domElement="true"></param>
-    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-    if (!element._behaviors) return [];
-    return Array.clone(element._behaviors);
-}
-Sys.UI.Behavior.getBehaviorsByType = function Sys$UI$Behavior$getBehaviorsByType(element, type) {
-    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorsByType" />
-    /// <param name="element" domElement="true"></param>
-    /// <param name="type" type="Type"></param>
-    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true},
-        {name: "type", type: Type}
-    ]);
-    if (e) throw e;
-    var behaviors = element._behaviors;
-    var results = [];
-    if (behaviors) {
-        for (var i = 0, l = behaviors.length; i < l; i++) {
-            if (type.isInstanceOfType(behaviors[i])) {
-                results[results.length] = behaviors[i];
-            }
-        }
-    }
-    return results;
-}
- 
-Sys.UI.VisibilityMode = function Sys$UI$VisibilityMode() {
-    /// <summary locid="M:J#Sys.UI.VisibilityMode.#ctor" />
-    /// <field name="hide" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.hide"></field>
-    /// <field name="collapse" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.collapse"></field>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    throw Error.notImplemented();
-}
-Sys.UI.VisibilityMode.prototype = {
-    hide: 0,
-    collapse: 1
-}
-Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");
- 
-Sys.UI.Control = function Sys$UI$Control(element) {
-    /// <summary locid="M:J#Sys.UI.Control.#ctor" />
-    /// <param name="element" domElement="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "element", domElement: true}
-    ]);
-    if (e) throw e;
-    if (typeof(element.control) != 'undefined') throw Error.invalidOperation(Sys.Res.controlAlreadyDefined);
-    Sys.UI.Control.initializeBase(this);
-    this._element = element;
-    element.control = this;
-}
-    function Sys$UI$Control$get_element() {
-        /// <value domElement="true" locid="P:J#Sys.UI.Control.element"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._element;
-    }
-    function Sys$UI$Control$get_id() {
-        /// <value type="String" locid="P:J#Sys.UI.Control.id"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._element) return '';
-        return this._element.id;
-    }
-    function Sys$UI$Control$set_id(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        throw Error.invalidOperation(Sys.Res.cantSetId);
-    }
-    function Sys$UI$Control$get_parent() {
-        /// <value type="Sys.UI.Control" locid="P:J#Sys.UI.Control.parent"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (this._parent) return this._parent;
-        if (!this._element) return null;
-        
-        var parentElement = this._element.parentNode;
-        while (parentElement) {
-            if (parentElement.control) {
-                return parentElement.control;
-            }
-            parentElement = parentElement.parentNode;
-        }
-        return null;
-    }
-    function Sys$UI$Control$set_parent(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]);
-        if (e) throw e;
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        var parents = [this];
-        var current = value;
-        while (current) {
-            if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain);
-            parents[parents.length] = current;
-            current = current.get_parent();
-        }
-        this._parent = value;
-    }
-    function Sys$UI$Control$get_visibilityMode() {
-        /// <value type="Sys.UI.VisibilityMode" locid="P:J#Sys.UI.Control.visibilityMode"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        return Sys.UI.DomElement.getVisibilityMode(this._element);
-    }
-    function Sys$UI$Control$set_visibilityMode(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]);
-        if (e) throw e;
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        Sys.UI.DomElement.setVisibilityMode(this._element, value);
-    }
-    function Sys$UI$Control$get_visible() {
-        /// <value type="Boolean" locid="P:J#Sys.UI.Control.visible"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        return Sys.UI.DomElement.getVisible(this._element);
-    }
-    function Sys$UI$Control$set_visible(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        Sys.UI.DomElement.setVisible(this._element, value)
-    }
-    function Sys$UI$Control$addCssClass(className) {
-        /// <summary locid="M:J#Sys.UI.Control.addCssClass" />
-        /// <param name="className" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "className", type: String}
-        ]);
-        if (e) throw e;
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        Sys.UI.DomElement.addCssClass(this._element, className);
-    }
-    function Sys$UI$Control$dispose() {
-        Sys.UI.Control.callBaseMethod(this, 'dispose');
-        if (this._element) {
-            this._element.control = undefined;
-            delete this._element;
-        }
-        if (this._parent) delete this._parent;
-    }
-    function Sys$UI$Control$onBubbleEvent(source, args) {
-        /// <summary locid="M:J#Sys.UI.Control.onBubbleEvent" />
-        /// <param name="source"></param>
-        /// <param name="args" type="Sys.EventArgs"></param>
-        /// <returns type="Boolean"></returns>
-        var e = Function._validateParams(arguments, [
-            {name: "source"},
-            {name: "args", type: Sys.EventArgs}
-        ]);
-        if (e) throw e;
-        return false;
-    }
-    function Sys$UI$Control$raiseBubbleEvent(source, args) {
-        /// <summary locid="M:J#Sys.UI.Control.raiseBubbleEvent" />
-        /// <param name="source"></param>
-        /// <param name="args" type="Sys.EventArgs"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "source"},
-            {name: "args", type: Sys.EventArgs}
-        ]);
-        if (e) throw e;
-        var currentTarget = this.get_parent();
-        while (currentTarget) {
-            if (currentTarget.onBubbleEvent(source, args)) {
-                return;
-            }
-            currentTarget = currentTarget.get_parent();
-        }
-    }
-    function Sys$UI$Control$removeCssClass(className) {
-        /// <summary locid="M:J#Sys.UI.Control.removeCssClass" />
-        /// <param name="className" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "className", type: String}
-        ]);
-        if (e) throw e;
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        Sys.UI.DomElement.removeCssClass(this._element, className);
-    }
-    function Sys$UI$Control$toggleCssClass(className) {
-        /// <summary locid="M:J#Sys.UI.Control.toggleCssClass" />
-        /// <param name="className" type="String"></param>
-        var e = Function._validateParams(arguments, [
-            {name: "className", type: String}
-        ]);
-        if (e) throw e;
-        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
-        Sys.UI.DomElement.toggleCssClass(this._element, className);
-    }
-Sys.UI.Control.prototype = {
-    _parent: null,
-    _visibilityMode: Sys.UI.VisibilityMode.hide,
-    get_element: Sys$UI$Control$get_element,
-    get_id: Sys$UI$Control$get_id,
-    set_id: Sys$UI$Control$set_id,
-    get_parent: Sys$UI$Control$get_parent,
-    set_parent: Sys$UI$Control$set_parent,
-    get_visibilityMode: Sys$UI$Control$get_visibilityMode,
-    set_visibilityMode: Sys$UI$Control$set_visibilityMode,
-    get_visible: Sys$UI$Control$get_visible,
-    set_visible: Sys$UI$Control$set_visible,
-    addCssClass: Sys$UI$Control$addCssClass,
-    dispose: Sys$UI$Control$dispose,
-    onBubbleEvent: Sys$UI$Control$onBubbleEvent,
-    raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent,
-    removeCssClass: Sys$UI$Control$removeCssClass,
-    toggleCssClass: Sys$UI$Control$toggleCssClass
-}
-Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);
-Type.registerNamespace('Sys');
-Sys.Res={
-'argumentTypeName':'Value is not the name of an existing type.',
-'methodRegisteredTwice':'Method {0} has already been registered.',
-'cantSetIdAfterInit':'The id property can\'t be set on this object after initialization.',
-'cantBeCalledAfterDispose':'Can\'t be called after dispose.',
-'componentCantSetIdAfterAddedToApp':'The id property of a component can\'t be set after it\'s been added to the Application object.',
-'behaviorDuplicateName':'A behavior with name \'{0}\' already exists or it is the name of an existing property on the target element.',
-'notATypeName':'Value is not a valid type name.',
-'typeShouldBeTypeOrString':'Value is not a valid type or a valid type name.',
-'boolTrueOrFalse':'Value must be \'true\' or \'false\'.',
-'stringFormatInvalid':'The format string is invalid.',
-'referenceNotFound':'Component \'{0}\' was not found.',
-'enumReservedName':'\'{0}\' is a reserved name that can\'t be used as an enum value name.',
-'eventHandlerNotFound':'Handler not found.',
-'circularParentChain':'The chain of control parents can\'t have circular references.',
-'undefinedEvent':'\'{0}\' is not an event.',
-'notAMethod':'{0} is not a method.',
-'propertyUndefined':'\'{0}\' is not a property or an existing field.',
-'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
-'scriptLoadFailedDebug':'The script \'{0}\' failed to load. Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable \'Display a notification about every script error\' under advanced settings.\r\n Missing call to Sys.Application.notifyScriptLoaded().',
-'propertyNotWritable':'\'{0}\' is not a writable property.',
-'enumInvalidValueName':'\'{0}\' is not a valid name for an enum value.',
-'controlAlreadyDefined':'A control is already associated with the element.',
-'addHandlerCantBeUsedForError':'Can\'t add a handler for the error event using this method. Please set the window.onerror property instead.',
-'namespaceContainsObject':'Object {0} already exists and is not a namespace.',
-'cantAddNonFunctionhandler':'Can\'t add a handler that is not a function.',
-'scriptLoaderAlreadyLoading':'ScriptLoader.loadScripts cannot be called while the ScriptLoader is already loading scripts.',
-'invalidNameSpace':'Value is not a valid namespace identifier.',
-'notAnInterface':'Value is not a valid interface.',
-'eventHandlerNotFunction':'Handler must be a function.',
-'propertyNotAnArray':'\'{0}\' is not an Array property.',
-'typeRegisteredTwice':'Type {0} has already been registered. The type may be defined multiple times or the script file that defines it may have already been loaded. A possible cause is a change of settings during a partial update.',
-'cantSetNameAfterInit':'The name property can\'t be set on this object after initialization.',
-'appDuplicateComponent':'Two components with the same id \'{0}\' can\'t be added to the application.',
-'appComponentMustBeInitialized':'Components must be initialized before they are added to the Application object.',
-'baseNotAClass':'Value is not a class.',
-'methodNotFound':'No method found with name \'{0}\'.',
-'arrayParseBadFormat':'Value must be a valid string representation for an array. It must start with a \'[\' and end with a \']\'.',
-'cantSetId':'The id property can\'t be set on this object.',
-'stringFormatBraceMismatch':'The format string contains an unmatched opening or closing brace.',
-'enumValueNotInteger':'An enumeration definition can only contain integer values.',
-'propertyNullOrUndefined':'Cannot set the properties of \'{0}\' because it returned a null value.',
-'argumentDomNode':'Value must be a DOM element or a text node.',
-'componentCantSetIdTwice':'The id property of a component can\'t be set more than once.',
-'createComponentOnDom':'Value must be null for Components that are not Controls or Behaviors.',
-'createNotComponent':'{0} does not derive from Sys.Component.',
-'createNoDom':'Value must not be null for Controls and Behaviors.',
-'cantAddWithoutId':'Can\'t add a component that doesn\'t have an id.',
-'badTypeName':'Value is not the name of the type being registered or the name is a reserved word.',
-'argumentInteger':'Value must be an integer.',
-'scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.',
-'invokeCalledTwice':'Cannot call invoke more than once.',
-'webServiceFailed':'The server method \'{0}\' failed with the following error: {1}',
-'webServiceInvalidJsonWrapper':'The server method \'{0}\' returned invalid data. The \'d\' property is missing from the JSON wrapper.',
-'argumentType':'Object cannot be converted to the required type.',
-'argumentNull':'Value cannot be null.',
-'controlCantSetId':'The id property can\'t be set on a control.',
-'formatBadFormatSpecifier':'Format specifier was invalid.',
-'webServiceFailedNoMsg':'The server method \'{0}\' failed.',
-'argumentDomElement':'Value must be a DOM element.',
-'invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.',
-'cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.',
-'actualValue':'Actual value was {0}.',
-'enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.',
-'scriptLoadFailed':'The script \'{0}\' could not be loaded.',
-'parameterCount':'Parameter count mismatch.',
-'cannotDeserializeEmptyString':'Cannot deserialize empty string.',
-'formatInvalidString':'Input string was not in a correct format.',
-'invalidTimeout':'Value must be greater than or equal to zero.',
-'cannotAbortBeforeStart':'Cannot abort when executor has not started.',
-'argument':'Value does not fall within the expected range.',
-'cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.',
-'invalidHttpVerb':'httpVerb cannot be set to an empty or null string.',
-'nullWebRequest':'Cannot call executeRequest with a null webRequest.',
-'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
-'cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.',
-'argumentUndefined':'Value cannot be undefined.',
-'webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}',
-'servicePathNotSet':'The path to the web service has not been set.',
-'argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.',
-'cannotCallOnceStarted':'Cannot call {0} once started.',
-'badBaseUrl1':'Base URL does not contain ://.',
-'badBaseUrl2':'Base URL does not contain another /.',
-'badBaseUrl3':'Cannot find last / in base URL.',
-'setExecutorAfterActive':'Cannot set executor after it has become active.',
-'paramName':'Parameter name: {0}',
-'cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.',
-'cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.',
-'format':'One of the identified items was in an invalid format.',
-'assertFailedCaller':'Assertion Failed: {0}\r\nat {1}',
-'argumentOutOfRange':'Specified argument was out of the range of valid values.',
-'webServiceTimedOut':'The server method \'{0}\' timed out.',
-'notImplemented':'The method or operation is not implemented.',
-'assertFailed':'Assertion Failed: {0}',
-'invalidOperation':'Operation is not valid due to the current state of the object.',
-'breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'
-};
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+//-----------------------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------
+// MicrosoftAjax.js
+// Microsoft AJAX Framework.
+ 
+Function.__typeName = 'Function';
+Function.__class = true;
+Function.createCallback = function Function$createCallback(method, context) {
+    /// <summary locid="M:J#Function.createCallback" />
+    /// <param name="method" type="Function"></param>
+    /// <param name="context" mayBeNull="true"></param>
+    /// <returns type="Function"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "method", type: Function},
+        {name: "context", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    return function() {
+        var l = arguments.length;
+        if (l > 0) {
+            var args = [];
+            for (var i = 0; i < l; i++) {
+                args[i] = arguments[i];
+            }
+            args[l] = context;
+            return method.apply(this, args);
+        }
+        return method.call(this, context);
+    }
+}
+Function.createDelegate = function Function$createDelegate(instance, method) {
+    /// <summary locid="M:J#Function.createDelegate" />
+    /// <param name="instance" mayBeNull="true"></param>
+    /// <param name="method" type="Function"></param>
+    /// <returns type="Function"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance", mayBeNull: true},
+        {name: "method", type: Function}
+    ]);
+    if (e) throw e;
+    return function() {
+        return method.apply(instance, arguments);
+    }
+}
+Function.emptyFunction = Function.emptyMethod = function Function$emptyMethod() {
+    /// <summary locid="M:J#Function.emptyMethod" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+Function._validateParams = function Function$_validateParams(params, expectedParams) {
+    var e;
+    e = Function._validateParameterCount(params, expectedParams);
+    if (e) {
+        e.popStackFrame();
+        return e;
+    }
+    for (var i=0; i < params.length; i++) {
+        var expectedParam = expectedParams[Math.min(i, expectedParams.length - 1)];
+        var paramName = expectedParam.name;
+        if (expectedParam.parameterArray) {
+            paramName += "[" + (i - expectedParams.length + 1) + "]";
+        }
+        e = Function._validateParameter(params[i], expectedParam, paramName);
+        if (e) {
+            e.popStackFrame();
+            return e;
+        }
+    }
+    return null;
+}
+Function._validateParameterCount = function Function$_validateParameterCount(params, expectedParams) {
+    var maxParams = expectedParams.length;
+    var minParams = 0;
+    for (var i=0; i < expectedParams.length; i++) {
+        if (expectedParams[i].parameterArray) {
+            maxParams = Number.MAX_VALUE;
+        }
+        else if (!expectedParams[i].optional) {
+            minParams++;
+        }
+    }
+    if (params.length < minParams || params.length > maxParams) {
+        var e = Error.parameterCount();
+        e.popStackFrame();
+        return e;
+    }
+    return null;
+}
+Function._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) {
+    var e;
+    var expectedType = expectedParam.type;
+    var expectedInteger = !!expectedParam.integer;
+    var expectedDomElement = !!expectedParam.domElement;
+    var mayBeNull = !!expectedParam.mayBeNull;
+    e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName);
+    if (e) {
+        e.popStackFrame();
+        return e;
+    }
+    var expectedElementType = expectedParam.elementType;
+    var elementMayBeNull = !!expectedParam.elementMayBeNull;
+    if (expectedType === Array && typeof(param) !== "undefined" && param !== null &&
+        (expectedElementType || !elementMayBeNull)) {
+        var expectedElementInteger = !!expectedParam.elementInteger;
+        var expectedElementDomElement = !!expectedParam.elementDomElement;
+        for (var i=0; i < param.length; i++) {
+            var elem = param[i];
+            e = Function._validateParameterType(elem, expectedElementType,
+                expectedElementInteger, expectedElementDomElement, elementMayBeNull,
+                paramName + "[" + i + "]");
+            if (e) {
+                e.popStackFrame();
+                return e;
+            }
+        }
+    }
+    return null;
+}
+Function._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) {
+    var e;
+    if (typeof(param) === "undefined") {
+        if (mayBeNull) {
+            return null;
+        }
+        else {
+            e = Error.argumentUndefined(paramName);
+            e.popStackFrame();
+            return e;
+        }
+    }
+    if (param === null) {
+        if (mayBeNull) {
+            return null;
+        }
+        else {
+            e = Error.argumentNull(paramName);
+            e.popStackFrame();
+            return e;
+        }
+    }
+    if (expectedType && expectedType.__enum) {
+        if (typeof(param) !== 'number') {
+            e = Error.argumentType(paramName, Object.getType(param), expectedType);
+            e.popStackFrame();
+            return e;
+        }
+        if ((param % 1) === 0) {
+            var values = expectedType.prototype;
+            if (!expectedType.__flags || (param === 0)) {
+                for (var i in values) {
+                    if (values[i] === param) return null;
+                }
+            }
+            else {
+                var v = param;
+                for (var i in values) {
+                    var vali = values[i];
+                    if (vali === 0) continue;
+                    if ((vali & param) === vali) {
+                        v -= vali;
+                    }
+                    if (v === 0) return null;
+                }
+            }
+        }
+        e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
+        e.popStackFrame();
+        return e;
+    }
+    if (expectedDomElement) {
+        var val;
+        if (typeof(param.nodeType) !== 'number') {
+            var doc = param.ownerDocument || param.document || param;
+            if (doc != param) {
+                var w = doc.defaultView || doc.parentWindow;
+                val = (w != param) && !(w.document && param.document && (w.document === param.document));
+            }
+            else {
+                val = (typeof(doc.body) === 'undefined');
+            }
+        }
+        else {
+            val = (param.nodeType === 3);
+        }
+        if (val) {
+            e = Error.argument(paramName, Sys.Res.argumentDomElement);
+            e.popStackFrame();
+            return e;
+        }
+    }
+    if (expectedType && !expectedType.isInstanceOfType(param)) {
+        e = Error.argumentType(paramName, Object.getType(param), expectedType);
+        e.popStackFrame();
+        return e;
+    }
+    if (expectedType === Number && expectedInteger) {
+        if ((param % 1) !== 0) {
+            e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger);
+            e.popStackFrame();
+            return e;
+        }
+    }
+    return null;
+}
+ 
+Error.__typeName = 'Error';
+Error.__class = true;
+Error.create = function Error$create(message, errorInfo) {
+    /// <summary locid="M:J#Error.create" />
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="errorInfo" optional="true" mayBeNull="true"></param>
+    /// <returns type="Error"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true},
+        {name: "errorInfo", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var e = new Error(message);
+    e.message = message;
+    if (errorInfo) {
+        for (var v in errorInfo) {
+            e[v] = errorInfo[v];
+        }
+    }
+    e.popStackFrame();
+    return e;
+}
+Error.argument = function Error$argument(paramName, message) {
+    /// <summary locid="M:J#Error.argument" />
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.ArgumentException: " + (message ? message : Sys.Res.argument);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+    var e = Error.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName });
+    e.popStackFrame();
+    return e;
+}
+Error.argumentNull = function Error$argumentNull(paramName, message) {
+    /// <summary locid="M:J#Error.argumentNull" />
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.ArgumentNullException: " + (message ? message : Sys.Res.argumentNull);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+    var e = Error.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName });
+    e.popStackFrame();
+    return e;
+}
+Error.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) {
+    /// <summary locid="M:J#Error.argumentOutOfRange" />
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="actualValue" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "actualValue", mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : Sys.Res.argumentOutOfRange);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+    if (typeof(actualValue) !== "undefined" && actualValue !== null) {
+        displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue);
+    }
+    var e = Error.create(displayMessage, {
+        name: "Sys.ArgumentOutOfRangeException",
+        paramName: paramName,
+        actualValue: actualValue
+    });
+    e.popStackFrame();
+    return e;
+}
+Error.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) {
+    /// <summary locid="M:J#Error.argumentType" />
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="actualType" type="Type" optional="true" mayBeNull="true"></param>
+    /// <param name="expectedType" type="Type" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "actualType", type: Type, mayBeNull: true, optional: true},
+        {name: "expectedType", type: Type, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.ArgumentTypeException: ";
+    if (message) {
+        displayMessage += message;
+    }
+    else if (actualType && expectedType) {
+        displayMessage +=
+            String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName());
+    }
+    else {
+        displayMessage += Sys.Res.argumentType;
+    }
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+    var e = Error.create(displayMessage, {
+        name: "Sys.ArgumentTypeException",
+        paramName: paramName,
+        actualType: actualType,
+        expectedType: expectedType
+    });
+    e.popStackFrame();
+    return e;
+}
+Error.argumentUndefined = function Error$argumentUndefined(paramName, message) {
+    /// <summary locid="M:J#Error.argumentUndefined" />
+    /// <param name="paramName" type="String" optional="true" mayBeNull="true"></param>
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "paramName", type: String, mayBeNull: true, optional: true},
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : Sys.Res.argumentUndefined);
+    if (paramName) {
+        displayMessage += "\n" + String.format(Sys.Res.paramName, paramName);
+    }
+    var e = Error.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName });
+    e.popStackFrame();
+    return e;
+}
+Error.format = function Error$format(message) {
+    /// <summary locid="M:J#Error.format" />
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.FormatException: " + (message ? message : Sys.Res.format);
+    var e = Error.create(displayMessage, {name: 'Sys.FormatException'});
+    e.popStackFrame();
+    return e;
+}
+Error.invalidOperation = function Error$invalidOperation(message) {
+    /// <summary locid="M:J#Error.invalidOperation" />
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.InvalidOperationException: " + (message ? message : Sys.Res.invalidOperation);
+    var e = Error.create(displayMessage, {name: 'Sys.InvalidOperationException'});
+    e.popStackFrame();
+    return e;
+}
+Error.notImplemented = function Error$notImplemented(message) {
+    /// <summary locid="M:J#Error.notImplemented" />
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.NotImplementedException: " + (message ? message : Sys.Res.notImplemented);
+    var e = Error.create(displayMessage, {name: 'Sys.NotImplementedException'});
+    e.popStackFrame();
+    return e;
+}
+Error.parameterCount = function Error$parameterCount(message) {
+    /// <summary locid="M:J#Error.parameterCount" />
+    /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "message", type: String, mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var displayMessage = "Sys.ParameterCountException: " + (message ? message : Sys.Res.parameterCount);
+    var e = Error.create(displayMessage, {name: 'Sys.ParameterCountException'});
+    e.popStackFrame();
+    return e;
+}
+Error.prototype.popStackFrame = function Error$popStackFrame() {
+    /// <summary locid="M:J#checkParam" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    if (typeof(this.stack) === "undefined" || this.stack === null ||
+        typeof(this.fileName) === "undefined" || this.fileName === null ||
+        typeof(this.lineNumber) === "undefined" || this.lineNumber === null) {
+        return;
+    }
+    var stackFrames = this.stack.split("\n");
+    var currentFrame = stackFrames[0];
+    var pattern = this.fileName + ":" + this.lineNumber;
+    while(typeof(currentFrame) !== "undefined" &&
+          currentFrame !== null &&
+          currentFrame.indexOf(pattern) === -1) {
+        stackFrames.shift();
+        currentFrame = stackFrames[0];
+    }
+    var nextFrame = stackFrames[1];
+    if (typeof(nextFrame) === "undefined" || nextFrame === null) {
+        return;
+    }
+    var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/);
+    if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) {
+        return;
+    }
+    this.fileName = nextFrameParts[1];
+    this.lineNumber = parseInt(nextFrameParts[2]);
+    stackFrames.shift();
+    this.stack = stackFrames.join("\n");
+}
+ 
+Object.__typeName = 'Object';
+Object.__class = true;
+Object.getType = function Object$getType(instance) {
+    /// <summary locid="M:J#Object.getType" />
+    /// <param name="instance"></param>
+    /// <returns type="Type"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"}
+    ]);
+    if (e) throw e;
+    var ctor = instance.constructor;
+    if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) {
+        return Object;
+    }
+    return ctor;
+}
+Object.getTypeName = function Object$getTypeName(instance) {
+    /// <summary locid="M:J#Object.getTypeName" />
+    /// <param name="instance"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"}
+    ]);
+    if (e) throw e;
+    return Object.getType(instance).getName();
+}
+ 
+String.__typeName = 'String';
+String.__class = true;
+String.prototype.endsWith = function String$endsWith(suffix) {
+    /// <summary locid="M:J#String.endsWith" />
+    /// <param name="suffix" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "suffix", type: String}
+    ]);
+    if (e) throw e;
+    return (this.substr(this.length - suffix.length) === suffix);
+}
+String.prototype.startsWith = function String$startsWith(prefix) {
+    /// <summary locid="M:J#String.startsWith" />
+    /// <param name="prefix" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "prefix", type: String}
+    ]);
+    if (e) throw e;
+    return (this.substr(0, prefix.length) === prefix);
+}
+String.prototype.trim = function String$trim() {
+    /// <summary locid="M:J#String.trim" />
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return this.replace(/^\s+|\s+$/g, '');
+}
+String.prototype.trimEnd = function String$trimEnd() {
+    /// <summary locid="M:J#String.trimEnd" />
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return this.replace(/\s+$/, '');
+}
+String.prototype.trimStart = function String$trimStart() {
+    /// <summary locid="M:J#String.trimStart" />
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return this.replace(/^\s+/, '');
+}
+String.format = function String$format(format, args) {
+    /// <summary locid="M:J#String.format" />
+    /// <param name="format" type="String"></param>
+    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String},
+        {name: "args", mayBeNull: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+    return String._toFormattedString(false, arguments);
+}
+String.localeFormat = function String$localeFormat(format, args) {
+    /// <summary locid="M:J#String.localeFormat" />
+    /// <param name="format" type="String"></param>
+    /// <param name="args" parameterArray="true" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String},
+        {name: "args", mayBeNull: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+    return String._toFormattedString(true, arguments);
+}
+String._toFormattedString = function String$_toFormattedString(useLocale, args) {
+    var result = '';
+    var format = args[0];
+    for (var i=0;;) {
+        var open = format.indexOf('{', i);
+        var close = format.indexOf('}', i);
+        if ((open < 0) && (close < 0)) {
+            result += format.slice(i);
+            break;
+        }
+        if ((close > 0) && ((close < open) || (open < 0))) {
+            if (format.charAt(close + 1) !== '}') {
+                throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
+            }
+            result += format.slice(i, close + 1);
+            i = close + 2;
+            continue;
+        }
+        result += format.slice(i, open);
+        i = open + 1;
+        if (format.charAt(i) === '{') {
+            result += '{';
+            i++;
+            continue;
+        }
+        if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch);
+        var brace = format.substring(i, close);
+        var colonIndex = brace.indexOf(':');
+        var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex), 10) + 1;
+        if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid);
+        var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1);
+        var arg = args[argNumber];
+        if (typeof(arg) === "undefined" || arg === null) {
+            arg = '';
+        }
+        if (arg.toFormattedString) {
+            result += arg.toFormattedString(argFormat);
+        }
+        else if (useLocale && arg.localeFormat) {
+            result += arg.localeFormat(argFormat);
+        }
+        else if (arg.format) {
+            result += arg.format(argFormat);
+        }
+        else
+            result += arg.toString();
+        i = close + 1;
+    }
+    return result;
+}
+ 
+Boolean.__typeName = 'Boolean';
+Boolean.__class = true;
+Boolean.parse = function Boolean$parse(value) {
+    /// <summary locid="M:J#Boolean.parse" />
+    /// <param name="value" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String}
+    ]);
+    if (e) throw e;
+    var v = value.trim().toLowerCase();
+    if (v === 'false') return false;
+    if (v === 'true') return true;
+    throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse);
+}
+ 
+Date.__typeName = 'Date';
+Date.__class = true;
+Date._appendPreOrPostMatch = function Date$_appendPreOrPostMatch(preMatch, strBuilder) {
+    var quoteCount = 0;
+    var escaped = false;
+    for (var i = 0, il = preMatch.length; i < il; i++) {
+        var c = preMatch.charAt(i);
+        switch (c) {
+        case '\'':
+            if (escaped) strBuilder.append("'");
+            else quoteCount++;
+            escaped = false;
+            break;
+        case '\\':
+            if (escaped) strBuilder.append("\\");
+            escaped = !escaped;
+            break;
+        default:
+            strBuilder.append(c);
+            escaped = false;
+            break;
+        }
+    }
+    return quoteCount;
+}
+Date._expandFormat = function Date$_expandFormat(dtf, format) {
+    if (!format) {
+        format = "F";
+    }
+    if (format.length === 1) {
+        switch (format) {
+        case "d":
+            return dtf.ShortDatePattern;
+        case "D":
+            return dtf.LongDatePattern;
+        case "t":
+            return dtf.ShortTimePattern;
+        case "T":
+            return dtf.LongTimePattern;
+        case "F":
+            return dtf.FullDateTimePattern;
+        case "M": case "m":
+            return dtf.MonthDayPattern;
+        case "s":
+            return dtf.SortableDateTimePattern;
+        case "Y": case "y":
+            return dtf.YearMonthPattern;
+        default:
+            throw Error.format(Sys.Res.formatInvalidString);
+        }
+    }
+    return format;
+}
+Date._expandYear = function Date$_expandYear(dtf, year) {
+    if (year < 100) {
+        var curr = new Date().getFullYear();
+        year += curr - (curr % 100);
+        if (year > dtf.Calendar.TwoDigitYearMax) {
+            return year - 100;
+        }
+    }
+    return year;
+}
+Date._getParseRegExp = function Date$_getParseRegExp(dtf, format) {
+    if (!dtf._parseRegExp) {
+        dtf._parseRegExp = {};
+    }
+    else if (dtf._parseRegExp[format]) {
+        return dtf._parseRegExp[format];
+    }
+    var expFormat = Date._expandFormat(dtf, format);
+    expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1");
+    var regexp = new Sys.StringBuilder("^");
+    var groups = [];
+    var index = 0;
+    var quoteCount = 0;
+    var tokenRegExp = Date._getTokenRegExp();
+    var match;
+    while ((match = tokenRegExp.exec(expFormat)) !== null) {
+        var preMatch = expFormat.slice(index, match.index);
+        index = tokenRegExp.lastIndex;
+        quoteCount += Date._appendPreOrPostMatch(preMatch, regexp);
+        if ((quoteCount%2) === 1) {
+            regexp.append(match[0]);
+            continue;
+        }
+        switch (match[0]) {
+            case 'dddd': case 'ddd':
+            case 'MMMM': case 'MMM':
+                regexp.append("(\\D+)");
+                break;
+            case 'tt': case 't':
+                regexp.append("(\\D*)");
+                break;
+            case 'yyyy':
+                regexp.append("(\\d{4})");
+                break;
+            case 'fff':
+                regexp.append("(\\d{3})");
+                break;
+            case 'ff':
+                regexp.append("(\\d{2})");
+                break;
+            case 'f':
+                regexp.append("(\\d)");
+                break;
+            case 'dd': case 'd':
+            case 'MM': case 'M':
+            case 'yy': case 'y':
+            case 'HH': case 'H':
+            case 'hh': case 'h':
+            case 'mm': case 'm':
+            case 'ss': case 's':
+                regexp.append("(\\d\\d?)");
+                break;
+            case 'zzz':
+                regexp.append("([+-]?\\d\\d?:\\d{2})");
+                break;
+            case 'zz': case 'z':
+                regexp.append("([+-]?\\d\\d?)");
+                break;
+        }
+        Array.add(groups, match[0]);
+    }
+    Date._appendPreOrPostMatch(expFormat.slice(index), regexp);
+    regexp.append("$");
+    var regexpStr = regexp.toString().replace(/\s+/g, "\\s+");
+    var parseRegExp = {'regExp': regexpStr, 'groups': groups};
+    dtf._parseRegExp[format] = parseRegExp;
+    return parseRegExp;
+}
+Date._getTokenRegExp = function Date$_getTokenRegExp() {
+    return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;
+}
+Date.parseLocale = function Date$parseLocale(value, formats) {
+    /// <summary locid="M:J#Date.parseLocale" />
+    /// <param name="value" type="String"></param>
+    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
+    /// <returns type="Date"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String},
+        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+    return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments);
+}
+Date.parseInvariant = function Date$parseInvariant(value, formats) {
+    /// <summary locid="M:J#Date.parseInvariant" />
+    /// <param name="value" type="String"></param>
+    /// <param name="formats" parameterArray="true" optional="true" mayBeNull="true"></param>
+    /// <returns type="Date"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String},
+        {name: "formats", mayBeNull: true, optional: true, parameterArray: true}
+    ]);
+    if (e) throw e;
+    return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments);
+}
+Date._parse = function Date$_parse(value, cultureInfo, args) {
+    var custom = false;
+    for (var i = 1, il = args.length; i < il; i++) {
+        var format = args[i];
+        if (format) {
+            custom = true;
+            var date = Date._parseExact(value, format, cultureInfo);
+            if (date) return date;
+        }
+    }
+    if (! custom) {
+        var formats = cultureInfo._getDateTimeFormats();
+        for (var i = 0, il = formats.length; i < il; i++) {
+            var date = Date._parseExact(value, formats[i], cultureInfo);
+            if (date) return date;
+        }
+    }
+    return null;
+}
+Date._parseExact = function Date$_parseExact(value, format, cultureInfo) {
+    value = value.trim();
+    var dtf = cultureInfo.dateTimeFormat;
+    var parseInfo = Date._getParseRegExp(dtf, format);
+    var match = new RegExp(parseInfo.regExp).exec(value);
+    if (match === null) return null;
+    
+    var groups = parseInfo.groups;
+    var year = null, month = null, date = null, weekDay = null;
+    var hour = 0, min = 0, sec = 0, msec = 0, tzMinOffset = null;
+    var pmHour = false;
+    for (var j = 0, jl = groups.length; j < jl; j++) {
+        var matchGroup = match[j+1];
+        if (matchGroup) {
+            switch (groups[j]) {
+                case 'dd': case 'd':
+                    date = parseInt(matchGroup, 10);
+                    if ((date < 1) || (date > 31)) return null;
+                    break;
+                case 'MMMM':
+                    month = cultureInfo._getMonthIndex(matchGroup);
+                    if ((month < 0) || (month > 11)) return null;
+                    break;
+                case 'MMM':
+                    month = cultureInfo._getAbbrMonthIndex(matchGroup);
+                    if ((month < 0) || (month > 11)) return null;
+                    break;
+                case 'M': case 'MM':
+                    var month = parseInt(matchGroup, 10) - 1;
+                    if ((month < 0) || (month > 11)) return null;
+                    break;
+                case 'y': case 'yy':
+                    year = Date._expandYear(dtf,parseInt(matchGroup, 10));
+                    if ((year < 0) || (year > 9999)) return null;
+                    break;
+                case 'yyyy':
+                    year = parseInt(matchGroup, 10);
+                    if ((year < 0) || (year > 9999)) return null;
+                    break;
+                case 'h': case 'hh':
+                    hour = parseInt(matchGroup, 10);
+                    if (hour === 12) hour = 0;
+                    if ((hour < 0) || (hour > 11)) return null;
+                    break;
+                case 'H': case 'HH':
+                    hour = parseInt(matchGroup, 10);
+                    if ((hour < 0) || (hour > 23)) return null;
+                    break;
+                case 'm': case 'mm':
+                    min = parseInt(matchGroup, 10);
+                    if ((min < 0) || (min > 59)) return null;
+                    break;
+                case 's': case 'ss':
+                    sec = parseInt(matchGroup, 10);
+                    if ((sec < 0) || (sec > 59)) return null;
+                    break;
+                case 'tt': case 't':
+                    var upperToken = matchGroup.toUpperCase();
+                    pmHour = (upperToken === dtf.PMDesignator.toUpperCase());
+                    if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null;
+                    break;
+                case 'f':
+                    msec = parseInt(matchGroup, 10) * 100;
+                    if ((msec < 0) || (msec > 999)) return null;
+                    break;
+                case 'ff':
+                    msec = parseInt(matchGroup, 10) * 10;
+                    if ((msec < 0) || (msec > 999)) return null;
+                    break;
+                case 'fff':
+                    msec = parseInt(matchGroup, 10);
+                    if ((msec < 0) || (msec > 999)) return null;
+                    break;
+                case 'dddd':
+                    weekDay = cultureInfo._getDayIndex(matchGroup);
+                    if ((weekDay < 0) || (weekDay > 6)) return null;
+                    break;
+                case 'ddd':
+                    weekDay = cultureInfo._getAbbrDayIndex(matchGroup);
+                    if ((weekDay < 0) || (weekDay > 6)) return null;
+                    break;
+                case 'zzz':
+                    var offsets = matchGroup.split(/:/);
+                    if (offsets.length !== 2) return null;
+                    var hourOffset = parseInt(offsets[0], 10);
+                    if ((hourOffset < -12) || (hourOffset > 13)) return null;
+                    var minOffset = parseInt(offsets[1], 10);
+                    if ((minOffset < 0) || (minOffset > 59)) return null;
+                    tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset);
+                    break;
+                case 'z': case 'zz':
+                    var hourOffset = parseInt(matchGroup, 10);
+                    if ((hourOffset < -12) || (hourOffset > 13)) return null;
+                    tzMinOffset = hourOffset * 60;
+                    break;
+            }
+        }
+    }
+    var result = new Date();
+    if (year === null) {
+        year = result.getFullYear();
+    }
+    if (month === null) {
+        month = result.getMonth();
+    }
+    if (date === null) {
+        date = result.getDate();
+    }
+    result.setFullYear(year, month, date);
+    if (result.getDate() !== date) return null;
+    if ((weekDay !== null) && (result.getDay() !== weekDay)) {
+        return null;
+    }
+    if (pmHour && (hour < 12)) {
+        hour += 12;
+    }
+    result.setHours(hour, min, sec, msec);
+    if (tzMinOffset !== null) {
+        var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset());
+        result.setHours(result.getHours() + parseInt(adjustedMin/60, 10), adjustedMin%60);
+    }
+    return result;
+}
+Date.prototype.format = function Date$format(format) {
+    /// <summary locid="M:J#Date.format" />
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
+}
+Date.prototype.localeFormat = function Date$localeFormat(format) {
+    /// <summary locid="M:J#Date.localeFormat" />
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
+}
+Date.prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) {
+    if (!format || (format.length === 0) || (format === 'i')) {
+        if (cultureInfo && (cultureInfo.name.length > 0)) {
+            return this.toLocaleString();
+        }
+        else {
+            return this.toString();
+        }
+    }
+    var dtf = cultureInfo.dateTimeFormat;
+    format = Date._expandFormat(dtf, format);
+    var ret = new Sys.StringBuilder();
+    var hour;
+    function addLeadingZero(num) {
+        if (num < 10) {
+            return '0' + num;
+        }
+        return num.toString();
+    }
+    function addLeadingZeros(num) {
+        if (num < 10) {
+            return '00' + num;
+        }
+        if (num < 100) {
+            return '0' + num;
+        }
+        return num.toString();
+    }
+    var quoteCount = 0;
+    var tokenRegExp = Date._getTokenRegExp();
+    for (;;) {
+        var index = tokenRegExp.lastIndex;
+        var ar = tokenRegExp.exec(format);
+        var preMatch = format.slice(index, ar ? ar.index : format.length);
+        quoteCount += Date._appendPreOrPostMatch(preMatch, ret);
+        if (!ar) break;
+        if ((quoteCount%2) === 1) {
+            ret.append(ar[0]);
+            continue;
+        }
+        switch (ar[0]) {
+        case "dddd":
+            ret.append(dtf.DayNames[this.getDay()]);
+            break;
+        case "ddd":
+            ret.append(dtf.AbbreviatedDayNames[this.getDay()]);
+            break;
+        case "dd":
+            ret.append(addLeadingZero(this.getDate()));
+            break;
+        case "d":
+            ret.append(this.getDate());
+            break;
+        case "MMMM":
+            ret.append(dtf.MonthNames[this.getMonth()]);
+            break;
+        case "MMM":
+            ret.append(dtf.AbbreviatedMonthNames[this.getMonth()]);
+            break;
+        case "MM":
+            ret.append(addLeadingZero(this.getMonth() + 1));
+            break;
+        case "M":
+            ret.append(this.getMonth() + 1);
+            break;
+        case "yyyy":
+            ret.append(this.getFullYear());
+            break;
+        case "yy":
+            ret.append(addLeadingZero(this.getFullYear() % 100));
+            break;
+        case "y":
+            ret.append(this.getFullYear() % 100);
+            break;
+        case "hh":
+            hour = this.getHours() % 12;
+            if (hour === 0) hour = 12;
+            ret.append(addLeadingZero(hour));
+            break;
+        case "h":
+            hour = this.getHours() % 12;
+            if (hour === 0) hour = 12;
+            ret.append(hour);
+            break;
+        case "HH":
+            ret.append(addLeadingZero(this.getHours()));
+            break;
+        case "H":
+            ret.append(this.getHours());
+            break;
+        case "mm":
+            ret.append(addLeadingZero(this.getMinutes()));
+            break;
+        case "m":
+            ret.append(this.getMinutes());
+            break;
+        case "ss":
+            ret.append(addLeadingZero(this.getSeconds()));
+            break;
+        case "s":
+            ret.append(this.getSeconds());
+            break;
+        case "tt":
+            ret.append((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator);
+            break;
+        case "t":
+            ret.append(((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0));
+            break;
+        case "f":
+            ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0));
+            break;
+        case "ff":
+            ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2));
+            break;
+        case "fff":
+            ret.append(addLeadingZeros(this.getMilliseconds()));
+            break;
+        case "z":
+            hour = this.getTimezoneOffset() / 60;
+            ret.append(((hour <= 0) ? '+' : '-') + Math.floor(Math.abs(hour)));
+            break;
+        case "zz":
+            hour = this.getTimezoneOffset() / 60;
+            ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))));
+            break;
+        case "zzz":
+            hour = this.getTimezoneOffset() / 60;
+            ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) +
+                dtf.TimeSeparator + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60)));
+            break;
+        }
+    }
+    return ret.toString();
+}
+ 
+Number.__typeName = 'Number';
+Number.__class = true;
+Number.parseLocale = function Number$parseLocale(value) {
+    /// <summary locid="M:J#Number.parseLocale" />
+    /// <param name="value" type="String"></param>
+    /// <returns type="Number"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String}
+    ]);
+    if (e) throw e;
+    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
+}
+Number.parseInvariant = function Number$parseInvariant(value) {
+    /// <summary locid="M:J#Number.parseInvariant" />
+    /// <param name="value" type="String"></param>
+    /// <returns type="Number"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String}
+    ]);
+    if (e) throw e;
+    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
+}
+Number._parse = function Number$_parse(value, cultureInfo) {
+    value = value.trim();
+    
+    if (value.match(/^[+-]?infinity$/i)) {
+        return parseFloat(value);
+    }
+    if (value.match(/^0x[a-f0-9]+$/i)) {
+        return parseInt(value);
+    }
+    var numFormat = cultureInfo.numberFormat;
+    var signInfo = Number._parseNumberNegativePattern(value, numFormat, numFormat.NumberNegativePattern);
+    var sign = signInfo[0];
+    var num = signInfo[1];
+    
+    if ((sign === '') && (numFormat.NumberNegativePattern !== 1)) {
+        signInfo = Number._parseNumberNegativePattern(value, numFormat, 1);
+        sign = signInfo[0];
+        num = signInfo[1];
+    }
+    if (sign === '') sign = '+';
+    
+    var exponent;
+    var intAndFraction;
+    var exponentPos = num.indexOf('e');
+    if (exponentPos < 0) exponentPos = num.indexOf('E');
+    if (exponentPos < 0) {
+        intAndFraction = num;
+        exponent = null;
+    }
+    else {
+        intAndFraction = num.substr(0, exponentPos);
+        exponent = num.substr(exponentPos + 1);
+    }
+    
+    var integer;
+    var fraction;
+    var decimalPos = intAndFraction.indexOf(numFormat.NumberDecimalSeparator);
+    if (decimalPos < 0) {
+        integer = intAndFraction;
+        fraction = null;
+    }
+    else {
+        integer = intAndFraction.substr(0, decimalPos);
+        fraction = intAndFraction.substr(decimalPos + numFormat.NumberDecimalSeparator.length);
+    }
+    
+    integer = integer.split(numFormat.NumberGroupSeparator).join('');
+    
+    var p = sign + integer;
+    if (fraction !== null) {
+        p += '.' + fraction;
+    }
+    if (exponent !== null) {
+        var expSignInfo = Number._parseNumberNegativePattern(exponent, numFormat, 1);
+        if (expSignInfo[0] === '') {
+            expSignInfo[0] = '+';
+        }
+        p += 'e' + expSignInfo[0] + expSignInfo[1];
+    }
+    if (p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)) {
+        return parseFloat(p);
+    }
+    return Number.NaN;
+}
+Number._parseNumberNegativePattern = function Number$_parseNumberNegativePattern(value, numFormat, numberNegativePattern) {
+    var neg = numFormat.NegativeSign;
+    var pos = numFormat.PositiveSign;    
+    switch (numberNegativePattern) {
+        case 4: 
+            neg = ' ' + neg;
+            pos = ' ' + pos;
+        case 3: 
+            if (value.endsWith(neg)) {
+                return ['-', value.substr(0, value.length - neg.length)];
+            }
+            else if (value.endsWith(pos)) {
+                return ['+', value.substr(0, value.length - pos.length)];
+            }
+            break;
+        case 2: 
+            neg += ' ';
+            pos += ' ';
+        case 1: 
+            if (value.startsWith(neg)) {
+                return ['-', value.substr(neg.length)];
+            }
+            else if (value.startsWith(pos)) {
+                return ['+', value.substr(pos.length)];
+            }
+            break;
+        case 0: 
+            if (value.startsWith('(') && value.endsWith(')')) {
+                return ['-', value.substr(1, value.length - 2)];
+            }
+            break;
+    }
+    return ['', value];
+}
+Number.prototype.format = function Number$format(format) {
+    /// <summary locid="M:J#Number.format" />
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+    return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture);
+}
+Number.prototype.localeFormat = function Number$localeFormat(format) {
+    /// <summary locid="M:J#Number.localeFormat" />
+    /// <param name="format" type="String"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "format", type: String}
+    ]);
+    if (e) throw e;
+    return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture);
+}
+Number.prototype._toFormattedString = function Number$_toFormattedString(format, cultureInfo) {
+    if (!format || (format.length === 0) || (format === 'i')) {
+        if (cultureInfo && (cultureInfo.name.length > 0)) {
+            return this.toLocaleString();
+        }
+        else {
+            return this.toString();
+        }
+    }
+    var _percentPositivePattern = ["n %", "n%", "%n" ];
+    var _percentNegativePattern = ["-n %", "-n%", "-%n"];
+    var _numberNegativePattern = ["(n)","-n","- n","n-","n -"];
+    var _currencyPositivePattern = ["$n","n$","$ n","n $"];
+    var _currencyNegativePattern = ["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];
+    function expandNumber(number, precision, groupSizes, sep, decimalChar) {
+        
+        var curSize = groupSizes[0];
+        var curGroupIndex = 1;
+        var numberString = number.toString();
+        var right = "";
+        var exponent = "";
+        var decimalSplit = numberString.split('.');
+        if (decimalSplit.length > 1) {
+            numberString = decimalSplit[0];
+            right = decimalSplit[1];
+            var exponentSplit = right.split(/e/i);
+            if (exponentSplit.length > 1) {
+                right = exponentSplit[0];
+                exponent = "e" + exponentSplit[1];
+            }
+        }
+        if (precision > 0) {
+            var rightDifference = right.length - precision;
+            if (rightDifference > 0) {
+                right = right.slice(0, precision);
+            } else if (rightDifference < 0) {
+                for (var i=0; i<Math.abs(rightDifference); i++) {
+                    right += '0';
+                }
+            }
+            right = decimalChar + right;
+        }
+        else { 
+            right = "";
+        }
+        right += exponent;
+        var stringIndex = numberString.length-1;
+        var ret = "";
+        while (stringIndex >= 0) {
+            if (curSize === 0 || curSize > stringIndex) {
+                if (ret.length > 0)
+                    return numberString.slice(0, stringIndex + 1) + sep + ret + right;
+                else
+                    return numberString.slice(0, stringIndex + 1) + right;
+            }
+            if (ret.length > 0)
+                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1) + sep + ret;
+            else
+                ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1);
+            stringIndex -= curSize;
+            if (curGroupIndex < groupSizes.length) {
+                curSize = groupSizes[curGroupIndex];
+                curGroupIndex++;
+            }
+        }
+        return numberString.slice(0, stringIndex + 1) + sep + ret + right;
+    }
+    var nf = cultureInfo.numberFormat;
+    var number = Math.abs(this);
+    if (!format)
+        format = "D";
+    var precision = -1;
+    if (format.length > 1) precision = parseInt(format.slice(1), 10);
+    var pattern;
+    switch (format.charAt(0)) {
+    case "d":
+    case "D":
+        pattern = 'n';
+        if (precision !== -1) {
+            var numberStr = ""+number;
+            var zerosToAdd = precision - numberStr.length;
+            if (zerosToAdd > 0) {
+                for (var i=0; i<zerosToAdd; i++) {
+                    numberStr = '0'+numberStr;
+                }
+            }
+            number = numberStr;
+        }
+        if (this < 0) number = -number;
+        break;
+    case "c":
+    case "C":
+        if (this < 0) pattern = _currencyNegativePattern[nf.CurrencyNegativePattern];
+        else pattern = _currencyPositivePattern[nf.CurrencyPositivePattern];
+        if (precision === -1) precision = nf.CurrencyDecimalDigits;
+        number = expandNumber(Math.abs(this), precision, nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, nf.CurrencyDecimalSeparator);
+        break;
+    case "n":
+    case "N":
+        if (this < 0) pattern = _numberNegativePattern[nf.NumberNegativePattern];
+        else pattern = 'n';
+        if (precision === -1) precision = nf.NumberDecimalDigits;
+        number = expandNumber(Math.abs(this), precision, nf.NumberGroupSizes, nf.NumberGroupSeparator, nf.NumberDecimalSeparator);
+        break;
+    case "p":
+    case "P":
+        if (this < 0) pattern = _percentNegativePattern[nf.PercentNegativePattern];
+        else pattern = _percentPositivePattern[nf.PercentPositivePattern];
+        if (precision === -1) precision = nf.PercentDecimalDigits;
+        number = expandNumber(Math.abs(this), precision, nf.PercentGroupSizes, nf.PercentGroupSeparator, nf.PercentDecimalSeparator);
+        break;
+    default:
+        throw Error.format(Sys.Res.formatBadFormatSpecifier);
+    }
+    var regex = /n|\$|-|%/g;
+    var ret = "";
+    for (;;) {
+        var index = regex.lastIndex;
+        var ar = regex.exec(pattern);
+        ret += pattern.slice(index, ar ? ar.index : pattern.length);
+        if (!ar)
+            break;
+        switch (ar[0]) {
+        case "n":
+            ret += number;
+            break;
+        case "$":
+            ret += nf.CurrencySymbol;
+            break;
+        case "-":
+            ret += nf.NegativeSign;
+            break;
+        case "%":
+            ret += nf.PercentSymbol;
+            break;
+        }
+    }
+    return ret;
+}
+ 
+RegExp.__typeName = 'RegExp';
+RegExp.__class = true;
+ 
+Array.__typeName = 'Array';
+Array.__class = true;
+Array.add = Array.enqueue = function Array$enqueue(array, item) {
+    /// <summary locid="M:J#Array.enqueue" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    array[array.length] = item;
+}
+Array.addRange = function Array$addRange(array, items) {
+    /// <summary locid="M:J#Array.addRange" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="items" type="Array" elementMayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "items", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+    array.push.apply(array, items);
+}
+Array.clear = function Array$clear(array) {
+    /// <summary locid="M:J#Array.clear" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+    array.length = 0;
+}
+Array.clone = function Array$clone(array) {
+    /// <summary locid="M:J#Array.clone" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <returns type="Array" elementMayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+    if (array.length === 1) {
+        return [array[0]];
+    }
+    else {
+        return Array.apply(null, array);
+    }
+}
+Array.contains = function Array$contains(array, item) {
+    /// <summary locid="M:J#Array.contains" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    return (Array.indexOf(array, item) >= 0);
+}
+Array.dequeue = function Array$dequeue(array) {
+    /// <summary locid="M:J#Array.dequeue" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <returns mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+    return array.shift();
+}
+Array.forEach = function Array$forEach(array, method, instance) {
+    /// <summary locid="M:J#Array.forEach" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="method" type="Function"></param>
+    /// <param name="instance" optional="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "method", type: Function},
+        {name: "instance", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    for (var i = 0, l = array.length; i < l; i++) {
+        var elt = array[i];
+        if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array);
+    }
+}
+Array.indexOf = function Array$indexOf(array, item, start) {
+    /// <summary locid="M:J#Array.indexOf" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" optional="true" mayBeNull="true"></param>
+    /// <param name="start" optional="true" mayBeNull="true"></param>
+    /// <returns type="Number"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true, optional: true},
+        {name: "start", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    if (typeof(item) === "undefined") return -1;
+    var length = array.length;
+    if (length !== 0) {
+        start = start - 0;
+        if (isNaN(start)) {
+            start = 0;
+        }
+        else {
+            if (isFinite(start)) {
+                start = start - (start % 1);
+            }
+            if (start < 0) {
+                start = Math.max(0, length + start);
+            }
+        }
+        for (var i = start; i < length; i++) {
+            if ((typeof(array[i]) !== "undefined") && (array[i] === item)) {
+                return i;
+            }
+        }
+    }
+    return -1;
+}
+Array.insert = function Array$insert(array, index, item) {
+    /// <summary locid="M:J#Array.insert" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="index" mayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "index", mayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    array.splice(index, 0, item);
+}
+Array.parse = function Array$parse(value) {
+    /// <summary locid="M:J#Array.parse" />
+    /// <param name="value" type="String" mayBeNull="true"></param>
+    /// <returns type="Array" elementMayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String, mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if (!value) return [];
+    var v = eval(value);
+    if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat);
+    return v;
+}
+Array.remove = function Array$remove(array, item) {
+    /// <summary locid="M:J#Array.remove" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="item" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "item", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    var index = Array.indexOf(array, item);
+    if (index >= 0) {
+        array.splice(index, 1);
+    }
+    return (index >= 0);
+}
+Array.removeAt = function Array$removeAt(array, index) {
+    /// <summary locid="M:J#Array.removeAt" />
+    /// <param name="array" type="Array" elementMayBeNull="true"></param>
+    /// <param name="index" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "array", type: Array, elementMayBeNull: true},
+        {name: "index", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    array.splice(index, 1);
+}
+ 
+if (!window) this.window = this;
+window.Type = Function;
+Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
+Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");
+Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) {
+    /// <summary locid="M:J#Type.callBaseMethod" />
+    /// <param name="instance"></param>
+    /// <param name="name" type="String"></param>
+    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"},
+        {name: "name", type: String},
+        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+    var baseMethod = this.getBaseMethod(instance, name);
+    if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
+    if (!baseArguments) {
+        return baseMethod.apply(instance);
+    }
+    else {
+        return baseMethod.apply(instance, baseArguments);
+    }
+}
+Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name) {
+    /// <summary locid="M:J#Type.getBaseMethod" />
+    /// <param name="instance"></param>
+    /// <param name="name" type="String"></param>
+    /// <returns type="Function" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"},
+        {name: "name", type: String}
+    ]);
+    if (e) throw e;
+    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
+    var baseType = this.getBaseType();
+    if (baseType) {
+        var baseMethod = baseType.prototype[name];
+        return (baseMethod instanceof Function) ? baseMethod : null;
+    }
+    return null;
+}
+Type.prototype.getBaseType = function Type$getBaseType() {
+    /// <summary locid="M:J#Type.getBaseType" />
+    /// <returns type="Type" mayBeNull="true"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
+}
+Type.prototype.getInterfaces = function Type$getInterfaces() {
+    /// <summary locid="M:J#Type.getInterfaces" />
+    /// <returns type="Array" elementType="Type" mayBeNull="false" elementMayBeNull="false"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    var result = [];
+    var type = this;
+    while(type) {
+        var interfaces = type.__interfaces;
+        if (interfaces) {
+            for (var i = 0, l = interfaces.length; i < l; i++) {
+                var interfaceType = interfaces[i];
+                if (!Array.contains(result, interfaceType)) {
+                    result[result.length] = interfaceType;
+                }
+            }
+        }
+        type = type.__baseType;
+    }
+    return result;
+}
+Type.prototype.getName = function Type$getName() {
+    /// <summary locid="M:J#Type.getName" />
+    /// <returns type="String"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
+}
+Type.prototype.implementsInterface = function Type$implementsInterface(interfaceType) {
+    /// <summary locid="M:J#Type.implementsInterface" />
+    /// <param name="interfaceType" type="Type"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "interfaceType", type: Type}
+    ]);
+    if (e) throw e;
+    this.resolveInheritance();
+    var interfaceName = interfaceType.getName();
+    var cache = this.__interfaceCache;
+    if (cache) {
+        var cacheEntry = cache[interfaceName];
+        if (typeof(cacheEntry) !== 'undefined') return cacheEntry;
+    }
+    else {
+        cache = this.__interfaceCache = {};
+    }
+    var baseType = this;
+    while (baseType) {
+        var interfaces = baseType.__interfaces;
+        if (interfaces) {
+            if (Array.indexOf(interfaces, interfaceType) !== -1) {
+                return cache[interfaceName] = true;
+            }
+        }
+        baseType = baseType.__baseType;
+    }
+    return cache[interfaceName] = false;
+}
+Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType) {
+    /// <summary locid="M:J#Type.inheritsFrom" />
+    /// <param name="parentType" type="Type"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "parentType", type: Type}
+    ]);
+    if (e) throw e;
+    this.resolveInheritance();
+    var baseType = this.__baseType;
+    while (baseType) {
+        if (baseType === parentType) {
+            return true;
+        }
+        baseType = baseType.__baseType;
+    }
+    return false;
+}
+Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments) {
+    /// <summary locid="M:J#Type.initializeBase" />
+    /// <param name="instance"></param>
+    /// <param name="baseArguments" type="Array" optional="true" mayBeNull="true" elementMayBeNull="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance"},
+        {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true}
+    ]);
+    if (e) throw e;
+    if (!this.isInstanceOfType(instance)) throw Error.argumentType('instance', Object.getType(instance), this);
+    this.resolveInheritance();
+    if (this.__baseType) {
+        if (!baseArguments) {
+            this.__baseType.apply(instance);
+        }
+        else {
+            this.__baseType.apply(instance, baseArguments);
+        }
+    }
+    return instance;
+}
+Type.prototype.isImplementedBy = function Type$isImplementedBy(instance) {
+    /// <summary locid="M:J#Type.isImplementedBy" />
+    /// <param name="instance" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if (typeof(instance) === "undefined" || instance === null) return false;
+    var instanceType = Object.getType(instance);
+    return !!(instanceType.implementsInterface && instanceType.implementsInterface(this));
+}
+Type.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {
+    /// <summary locid="M:J#Type.isInstanceOfType" />
+    /// <param name="instance" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "instance", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if (typeof(instance) === "undefined" || instance === null) return false;
+    if (instance instanceof this) return true;
+    var instanceType = Object.getType(instance);
+    return !!(instanceType === this) ||
+           (instanceType.inheritsFrom && instanceType.inheritsFrom(this)) ||
+           (instanceType.implementsInterface && instanceType.implementsInterface(this));
+}
+Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {
+    /// <summary locid="M:J#Type.registerClass" />
+    /// <param name="typeName" type="String"></param>
+    /// <param name="baseType" type="Type" optional="true" mayBeNull="true"></param>
+    /// <param name="interfaceTypes" parameterArray="true" type="Type"></param>
+    /// <returns type="Type"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "typeName", type: String},
+        {name: "baseType", type: Type, mayBeNull: true, optional: true},
+        {name: "interfaceTypes", type: Type, parameterArray: true}
+    ]);
+    if (e) throw e;
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
+    var parsedName;
+    try {
+        parsedName = eval(typeName);
+    }
+    catch(e) {
+        throw Error.argument('typeName', Sys.Res.argumentTypeName);
+    }
+    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
+    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
+    if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType');
+    if (baseType && !baseType.__class) throw Error.argument('baseType', Sys.Res.baseNotAClass);
+    this.prototype.constructor = this;
+    this.__typeName = typeName;
+    this.__class = true;
+    if (baseType) {
+        this.__baseType = baseType;
+        this.__basePrototypePending = true;
+    }
+    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;
+    if (interfaceTypes) {
+        this.__interfaces = [];
+        this.resolveInheritance();
+        for (var i = 2, l = arguments.length; i < l; i++) {
+            var interfaceType = arguments[i];
+            if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface);
+            for (var methodName in interfaceType.prototype) {
+                var method = interfaceType.prototype[methodName];
+                if (!this.prototype[methodName]) {
+                    this.prototype[methodName] = method;
+                }
+            }
+            this.__interfaces.push(interfaceType);
+        }
+    }
+    Sys.__registeredTypes[typeName] = true;
+    return this;
+}
+Type.prototype.registerInterface = function Type$registerInterface(typeName) {
+    /// <summary locid="M:J#Type.registerInterface" />
+    /// <param name="typeName" type="String"></param>
+    /// <returns type="Type"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "typeName", type: String}
+    ]);
+    if (e) throw e;
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName);
+    var parsedName;
+    try {
+        parsedName = eval(typeName);
+    }
+    catch(e) {
+        throw Error.argument('typeName', Sys.Res.argumentTypeName);
+    }
+    if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName);
+    if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName));
+    Sys.__upperCaseTypes[typeName.toUpperCase()] = this;
+    this.prototype.constructor = this;
+    this.__typeName = typeName;
+    this.__interface = true;
+    Sys.__registeredTypes[typeName] = true;
+    return this;
+}
+Type.prototype.resolveInheritance = function Type$resolveInheritance() {
+    /// <summary locid="M:J#Type.resolveInheritance" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    if (this.__basePrototypePending) {
+        var baseType = this.__baseType;
+        baseType.resolveInheritance();
+        for (var memberName in baseType.prototype) {
+            var memberValue = baseType.prototype[memberName];
+            if (!this.prototype[memberName]) {
+                this.prototype[memberName] = memberValue;
+            }
+        }
+        delete this.__basePrototypePending;
+    }
+}
+Type.getRootNamespaces = function Type$getRootNamespaces() {
+    /// <summary locid="M:J#Type.getRootNamespaces" />
+    /// <returns type="Array"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    return Array.clone(Sys.__rootNamespaces);
+}
+Type.isClass = function Type$isClass(type) {
+    /// <summary locid="M:J#Type.isClass" />
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__class;
+}
+Type.isInterface = function Type$isInterface(type) {
+    /// <summary locid="M:J#Type.isInterface" />
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__interface;
+}
+Type.isNamespace = function Type$isNamespace(object) {
+    /// <summary locid="M:J#Type.isNamespace" />
+    /// <param name="object" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "object", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if ((typeof(object) === 'undefined') || (object === null)) return false;
+    return !!object.__namespace;
+}
+Type.parse = function Type$parse(typeName, ns) {
+    /// <summary locid="M:J#Type.parse" />
+    /// <param name="typeName" type="String" mayBeNull="true"></param>
+    /// <param name="ns" optional="true" mayBeNull="true"></param>
+    /// <returns type="Type" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "typeName", type: String, mayBeNull: true},
+        {name: "ns", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    var fn;
+    if (ns) {
+        fn = Sys.__upperCaseTypes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()];
+        return fn || null;
+    }
+    if (!typeName) return null;
+    if (!Type.__htClasses) {
+        Type.__htClasses = {};
+    }
+    fn = Type.__htClasses[typeName];
+    if (!fn) {
+        fn = eval(typeName);
+        if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName);
+        Type.__htClasses[typeName] = fn;
+    }
+    return fn;
+}
+Type.registerNamespace = function Type$registerNamespace(namespacePath) {
+    /// <summary locid="M:J#Type.registerNamespace" />
+    /// <param name="namespacePath" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "namespacePath", type: String}
+    ]);
+    if (e) throw e;
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
+    var rootObject = window;
+    var namespaceParts = namespacePath.split('.');
+    for (var i = 0; i < namespaceParts.length; i++) {
+        var currentPart = namespaceParts[i];
+        var ns = rootObject[currentPart];
+        if (ns && !ns.__namespace) {
+            throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsObject, namespaceParts.splice(0, i + 1).join('.')));
+        }
+        if (!ns) {
+            ns = rootObject[currentPart] = {
+                __namespace: true,
+                __typeName: namespaceParts.slice(0, i + 1).join('.')
+            };
+            if (i === 0) {
+                Sys.__rootNamespaces[Sys.__rootNamespaces.length] = ns;
+            }
+            var parsedName;
+            try {
+                parsedName = eval(ns.__typeName);
+            }
+            catch(e) {
+                parsedName = null;
+            }
+            if (parsedName !== ns) {
+                delete rootObject[currentPart];
+                throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
+            }
+            ns.getName = function ns$getName() {return this.__typeName;}
+        }
+        rootObject = ns;
+    }
+}
+window.Sys = {
+    __namespace: true,
+    __typeName: "Sys",
+    getName: function() {return "Sys";},
+    __upperCaseTypes: {}
+};
+Sys.__rootNamespaces = [Sys];
+Sys.__registeredTypes = {};
+ 
+Sys.IDisposable = function Sys$IDisposable() {
+    throw Error.notImplemented();
+}
+    function Sys$IDisposable$dispose() {
+        throw Error.notImplemented();
+    }
+Sys.IDisposable.prototype = {
+    dispose: Sys$IDisposable$dispose
+}
+Sys.IDisposable.registerInterface('Sys.IDisposable');
+ 
+Sys.StringBuilder = function Sys$StringBuilder(initialText) {
+    /// <summary locid="M:J#Sys.StringBuilder.#ctor" />
+    /// <param name="initialText" optional="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "initialText", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ?
+        [initialText.toString()] : [];
+    this._value = {};
+    this._len = 0;
+}
+    function Sys$StringBuilder$append(text) {
+        /// <summary locid="M:J#Sys.StringBuilder.append" />
+        /// <param name="text" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "text", mayBeNull: true}
+        ]);
+        if (e) throw e;
+        this._parts[this._parts.length] = text;
+    }
+    function Sys$StringBuilder$appendLine(text) {
+        /// <summary locid="M:J#Sys.StringBuilder.appendLine" />
+        /// <param name="text" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "text", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        this._parts[this._parts.length] =
+            ((typeof(text) === 'undefined') || (text === null) || (text === '')) ?
+            '\r\n' : text + '\r\n';
+    }
+    function Sys$StringBuilder$clear() {
+        /// <summary locid="M:J#Sys.StringBuilder.clear" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        this._parts = [];
+        this._value = {};
+        this._len = 0;
+    }
+    function Sys$StringBuilder$isEmpty() {
+        /// <summary locid="M:J#Sys.StringBuilder.isEmpty" />
+        /// <returns type="Boolean"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._parts.length === 0) return true;
+        return this.toString() === '';
+    }
+    function Sys$StringBuilder$toString(separator) {
+        /// <summary locid="M:J#Sys.StringBuilder.toString" />
+        /// <param name="separator" type="String" optional="true" mayBeNull="true"></param>
+        /// <returns type="String"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "separator", type: String, mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        separator = separator || '';
+        var parts = this._parts;
+        if (this._len !== parts.length) {
+            this._value = {};
+            this._len = parts.length;
+        }
+        var val = this._value;
+        if (typeof(val[separator]) === 'undefined') {
+            if (separator !== '') {
+                for (var i = 0; i < parts.length;) {
+                    if ((typeof(parts[i]) === 'undefined') || (parts[i] === '') || (parts[i] === null)) {
+                        parts.splice(i, 1);
+                    }
+                    else {
+                        i++;
+                    }
+                }
+            }
+            val[separator] = this._parts.join(separator);
+        }
+        return val[separator];
+    }
+Sys.StringBuilder.prototype = {
+    append: Sys$StringBuilder$append,
+    appendLine: Sys$StringBuilder$appendLine,
+    clear: Sys$StringBuilder$clear,
+    isEmpty: Sys$StringBuilder$isEmpty,
+    toString: Sys$StringBuilder$toString
+}
+Sys.StringBuilder.registerClass('Sys.StringBuilder');
+ 
+if (!window.XMLHttpRequest) {
+    window.XMLHttpRequest = function window$XMLHttpRequest() {
+        var progIDs = [ 'Mxsml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ];
+        for (var i = 0, l = progIDs.length; i < l; i++) {
+            try {
+                return new ActiveXObject(progIDs[i]);
+            }
+            catch (ex) {
+            }
+        }
+        return null;
+    }
+}
+ 
+Sys.Browser = {};
+Sys.Browser.InternetExplorer = {};
+Sys.Browser.Firefox = {};
+Sys.Browser.Safari = {};
+Sys.Browser.Opera = {};
+Sys.Browser.agent = null;
+Sys.Browser.hasDebuggerStatement = false;
+Sys.Browser.name = navigator.appName;
+Sys.Browser.version = parseFloat(navigator.appVersion);
+if (navigator.userAgent.indexOf(' MSIE ') > -1) {
+    Sys.Browser.agent = Sys.Browser.InternetExplorer;
+    Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);
+    Sys.Browser.hasDebuggerStatement = true;
+}
+else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
+    Sys.Browser.agent = Sys.Browser.Firefox;
+    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]);
+    Sys.Browser.name = 'Firefox';
+    Sys.Browser.hasDebuggerStatement = true;
+}
+else if (navigator.userAgent.indexOf(' Safari/') > -1) {
+    Sys.Browser.agent = Sys.Browser.Safari;
+    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d+(\.\d+)?)/)[1]);
+    Sys.Browser.name = 'Safari';
+}
+else if (navigator.userAgent.indexOf('Opera/') > -1) {
+    Sys.Browser.agent = Sys.Browser.Opera;
+}
+Type.registerNamespace('Sys.UI');
+ 
+Sys._Debug = function Sys$_Debug() {
+    /// <summary locid="M:J#Sys._Debug.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+    function Sys$_Debug$_appendConsole(text) {
+        if ((typeof(Debug) !== 'undefined') && Debug.writeln) {
+            Debug.writeln(text);
+        }
+        if (window.console && window.console.log) {
+            window.console.log(text);
+        }
+        if (window.opera) {
+            window.opera.postError(text);
+        }
+        if (window.debugService) {
+            window.debugService.trace(text);
+        }
+    }
+    function Sys$_Debug$_appendTrace(text) {
+        var traceElement = document.getElementById('TraceConsole');
+        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
+            traceElement.value += text + '\n';
+        }
+    }
+    function Sys$_Debug$assert(condition, message, displayCaller) {
+        /// <summary locid="M:J#Sys._Debug.assert" />
+        /// <param name="condition" type="Boolean"></param>
+        /// <param name="message" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="displayCaller" type="Boolean" optional="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "condition", type: Boolean},
+            {name: "message", type: String, mayBeNull: true, optional: true},
+            {name: "displayCaller", type: Boolean, optional: true}
+        ]);
+        if (e) throw e;
+        if (!condition) {
+            message = (displayCaller && this.assert.caller) ?
+                String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) :
+                String.format(Sys.Res.assertFailed, message);
+            if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) {
+                this.fail(message);
+            }
+        }
+    }
+    function Sys$_Debug$clearTrace() {
+        var traceElement = document.getElementById('TraceConsole');
+        if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) {
+            traceElement.value = '';
+        }
+    }
+    function Sys$_Debug$fail(message) {
+        /// <summary locid="M:J#Sys._Debug.fail" />
+        /// <param name="message" type="String" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "message", type: String, mayBeNull: true}
+        ]);
+        if (e) throw e;
+        this._appendConsole(message);
+        if (Sys.Browser.hasDebuggerStatement) {
+            eval('debugger');
+        }
+    }
+    function Sys$_Debug$trace(text) {
+        /// <summary locid="M:J#Sys._Debug.trace" />
+        /// <param name="text"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "text"}
+        ]);
+        if (e) throw e;
+        this._appendConsole(text);
+        this._appendTrace(text);
+    }
+    function Sys$_Debug$traceDump(object, name) {
+        /// <summary locid="M:J#Sys._Debug.traceDump" />
+        /// <param name="object" mayBeNull="true"></param>
+        /// <param name="name" type="String" mayBeNull="true" optional="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "object", mayBeNull: true},
+            {name: "name", type: String, mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        var text = this._traceDump(object, name, true);
+    }
+    function Sys$_Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) {
+        name = name? name : 'traceDump';
+        indentationPadding = indentationPadding? indentationPadding : '';
+        if (object === null) {
+            this.trace(indentationPadding + name + ': null');
+            return;
+        }
+        switch(typeof(object)) {
+            case 'undefined':
+                this.trace(indentationPadding + name + ': Undefined');
+                break;
+            case 'number': case 'string': case 'boolean':
+                this.trace(indentationPadding + name + ': ' + object);
+                break;
+            default:
+                if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) {
+                    this.trace(indentationPadding + name + ': ' + object.toString());
+                    break;
+                }
+                if (!loopArray) {
+                    loopArray = [];
+                }
+                else if (Array.contains(loopArray, object)) {
+                    this.trace(indentationPadding + name + ': ...');
+                    return;
+                }
+                Array.add(loopArray, object);
+                if ((object == window) || (object === document) ||
+                    (window.HTMLElement && (object instanceof HTMLElement)) ||
+                    (typeof(object.nodeName) === 'string')) {
+                    var tag = object.tagName? object.tagName : 'DomElement';
+                    if (object.id) {
+                        tag += ' - ' + object.id;
+                    }
+                    this.trace(indentationPadding + name + ' {' +  tag + '}');
+                }
+                else {
+                    var typeName = Object.getTypeName(object);
+                    this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : ''));
+                    if ((indentationPadding === '') || recursive) {
+                        indentationPadding += "    ";
+                        var i, length, properties, p, v;
+                        if (Array.isInstanceOfType(object)) {
+                            length = object.length;
+                            for (i = 0; i < length; i++) {
+                                this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray);
+                            }
+                        }
+                        else {
+                            for (p in object) {
+                                v = object[p];
+                                if (!Function.isInstanceOfType(v)) {
+                                    this._traceDump(v, p, recursive, indentationPadding, loopArray);
+                                }
+                            }
+                        }
+                    }
+                }
+                Array.remove(loopArray, object);
+        }
+    }
+Sys._Debug.prototype = {
+    _appendConsole: Sys$_Debug$_appendConsole,
+    _appendTrace: Sys$_Debug$_appendTrace,
+    assert: Sys$_Debug$assert,
+    clearTrace: Sys$_Debug$clearTrace,
+    fail: Sys$_Debug$fail,
+    trace: Sys$_Debug$trace,
+    traceDump: Sys$_Debug$traceDump,
+    _traceDump: Sys$_Debug$_traceDump
+}
+Sys._Debug.registerClass('Sys._Debug');
+Sys.Debug = new Sys._Debug();
+    Sys.Debug.isDebug = true;
+ 
+function Sys$Enum$parse(value, ignoreCase) {
+    /// <summary locid="M:J#Sys.Enum.parse" />
+    /// <param name="value" type="String"></param>
+    /// <param name="ignoreCase" type="Boolean" optional="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", type: String},
+        {name: "ignoreCase", type: Boolean, optional: true}
+    ]);
+    if (e) throw e;
+    var values, parsed, val;
+    if (ignoreCase) {
+        values = this.__lowerCaseValues;
+        if (!values) {
+            this.__lowerCaseValues = values = {};
+            var prototype = this.prototype;
+            for (var name in prototype) {
+                values[name.toLowerCase()] = prototype[name];
+            }
+        }
+    }
+    else {
+        values = this.prototype;
+    }
+    if (!this.__flags) {
+        val = (ignoreCase ? value.toLowerCase() : value);
+        parsed = values[val.trim()];
+        if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
+        return parsed;
+    }
+    else {
+        var parts = (ignoreCase ? value.toLowerCase() : value).split(',');
+        var v = 0;
+        for (var i = parts.length - 1; i >= 0; i--) {
+            var part = parts[i].trim();
+            parsed = values[part];
+            if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName));
+            v |= parsed;
+        }
+        return v;
+    }
+}
+function Sys$Enum$toString(value) {
+    /// <summary locid="M:J#Sys.Enum.toString" />
+    /// <param name="value" optional="true" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "value", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    if ((typeof(value) === 'undefined') || (value === null)) return this.__string;
+    if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this);
+    var values = this.prototype;
+    var i;
+    if (!this.__flags || (value === 0)) {
+        for (i in values) {
+            if (values[i] === value) {
+                return i;
+            }
+        }
+    }
+    else {
+        var sorted = this.__sortedValues;
+        if (!sorted) {
+            sorted = [];
+            for (i in values) {
+                sorted[sorted.length] = {key: i, value: values[i]};
+            }
+            sorted.sort(function(a, b) {
+                return a.value - b.value;
+            });
+            this.__sortedValues = sorted;
+        }
+        var parts = [];
+        var v = value;
+        for (i = sorted.length - 1; i >= 0; i--) {
+            var kvp = sorted[i];
+            var vali = kvp.value;
+            if (vali === 0) continue;
+            if ((vali & value) === vali) {
+                parts[parts.length] = kvp.key;
+                v -= vali;
+                if (v === 0) break;
+            }
+        }
+        if (parts.length && v === 0) return parts.reverse().join(', ');
+    }
+    throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
+}
+Type.prototype.registerEnum = function Type$registerEnum(name, flags) {
+    /// <summary locid="M:J#Sys.UI.LineType.#ctor" />
+    /// <param name="name" type="String"></param>
+    /// <param name="flags" type="Boolean" optional="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "name", type: String},
+        {name: "flags", type: Boolean, optional: true}
+    ]);
+    if (e) throw e;
+    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName);
+    var parsedName;
+    try {
+        parsedName = eval(name);
+    }
+    catch(e) {
+        throw Error.argument('name', Sys.Res.argumentTypeName);
+    }
+    if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName);
+    if (Sys.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name));
+    for (var i in this.prototype) {
+        var val = this.prototype[i];
+        if (!Type.__identifierRegExp.test(i)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, i));
+        if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger);
+        if (typeof(this[i]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, i));
+    }
+    Sys.__upperCaseTypes[name.toUpperCase()] = this;
+    for (var i in this.prototype) {
+        this[i] = this.prototype[i];
+    }
+    this.__typeName = name;
+    this.parse = Sys$Enum$parse;
+    this.__string = this.toString();
+    this.toString = Sys$Enum$toString;
+    this.__flags = flags;
+    this.__enum = true;
+    Sys.__registeredTypes[name] = true;
+}
+Type.isEnum = function Type$isEnum(type) {
+    /// <summary locid="M:J#Type.isEnum" />
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__enum;
+}
+Type.isFlags = function Type$isFlags(type) {
+    /// <summary locid="M:J#Type.isFlags" />
+    /// <param name="type" mayBeNull="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    if ((typeof(type) === 'undefined') || (type === null)) return false;
+    return !!type.__flags;
+}
+ 
+Sys.EventHandlerList = function Sys$EventHandlerList() {
+    /// <summary locid="M:J#Sys.EventHandlerList.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    this._list = {};
+}
+    function Sys$EventHandlerList$addHandler(id, handler) {
+        /// <summary locid="M:J#Sys.EventHandlerList.addHandler" />
+        /// <param name="id" type="String"></param>
+        /// <param name="handler" type="Function"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String},
+            {name: "handler", type: Function}
+        ]);
+        if (e) throw e;
+        Array.add(this._getEvent(id, true), handler);
+    }
+    function Sys$EventHandlerList$removeHandler(id, handler) {
+        /// <summary locid="M:J#Sys.EventHandlerList.removeHandler" />
+        /// <param name="id" type="String"></param>
+        /// <param name="handler" type="Function"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String},
+            {name: "handler", type: Function}
+        ]);
+        if (e) throw e;
+        var evt = this._getEvent(id);
+        if (!evt) return;
+        Array.remove(evt, handler);
+    }
+    function Sys$EventHandlerList$getHandler(id) {
+        /// <summary locid="M:J#Sys.EventHandlerList.getHandler" />
+        /// <param name="id" type="String"></param>
+        /// <returns type="Function"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String}
+        ]);
+        if (e) throw e;
+        var evt = this._getEvent(id);
+        if (!evt || (evt.length === 0)) return null;
+        evt = Array.clone(evt);
+        return function(source, args) {
+            for (var i = 0, l = evt.length; i < l; i++) {
+                evt[i](source, args);
+            }
+        };
+    }
+    function Sys$EventHandlerList$_getEvent(id, create) {
+        if (!this._list[id]) {
+            if (!create) return null;
+            this._list[id] = [];
+        }
+        return this._list[id];
+    }
+Sys.EventHandlerList.prototype = {
+    addHandler: Sys$EventHandlerList$addHandler,
+    removeHandler: Sys$EventHandlerList$removeHandler,
+    getHandler: Sys$EventHandlerList$getHandler,
+    _getEvent: Sys$EventHandlerList$_getEvent
+}
+Sys.EventHandlerList.registerClass('Sys.EventHandlerList');
+ 
+Sys.EventArgs = function Sys$EventArgs() {
+    /// <summary locid="M:J#Sys.EventArgs.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+Sys.EventArgs.registerClass('Sys.EventArgs');
+Sys.EventArgs.Empty = new Sys.EventArgs();
+ 
+Sys.CancelEventArgs = function Sys$CancelEventArgs() {
+    /// <summary locid="M:J#Sys.CancelEventArgs.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    Sys.CancelEventArgs.initializeBase(this);
+    this._cancel = false;
+}
+    function Sys$CancelEventArgs$get_cancel() {
+        /// <value type="Boolean" locid="P:J#Sys.CancelEventArgs.cancel"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._cancel;
+    }
+    function Sys$CancelEventArgs$set_cancel(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+        this._cancel = value;
+    }
+Sys.CancelEventArgs.prototype = {
+    get_cancel: Sys$CancelEventArgs$get_cancel,
+    set_cancel: Sys$CancelEventArgs$set_cancel
+}
+Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
+ 
+Sys.INotifyPropertyChange = function Sys$INotifyPropertyChange() {
+    /// <summary locid="M:J#Sys.INotifyPropertyChange.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+    function Sys$INotifyPropertyChange$add_propertyChanged(handler) {
+    /// <summary locid="E:J#Sys.INotifyPropertyChange.propertyChanged" />
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+        throw Error.notImplemented();
+    }
+    function Sys$INotifyPropertyChange$remove_propertyChanged(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+        throw Error.notImplemented();
+    }
+Sys.INotifyPropertyChange.prototype = {
+    add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged,
+    remove_propertyChanged: Sys$INotifyPropertyChange$remove_propertyChanged
+}
+Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange');
+ 
+Sys.PropertyChangedEventArgs = function Sys$PropertyChangedEventArgs(propertyName) {
+    /// <summary locid="M:J#Sys.PropertyChangedEventArgs.#ctor" />
+    /// <param name="propertyName" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "propertyName", type: String}
+    ]);
+    if (e) throw e;
+    Sys.PropertyChangedEventArgs.initializeBase(this);
+    this._propertyName = propertyName;
+}
+ 
+    function Sys$PropertyChangedEventArgs$get_propertyName() {
+        /// <value type="String" locid="P:J#Sys.PropertyChangedEventArgs.propertyName"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._propertyName;
+    }
+Sys.PropertyChangedEventArgs.prototype = {
+    get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName
+}
+Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs);
+ 
+Sys.INotifyDisposing = function Sys$INotifyDisposing() {
+    /// <summary locid="M:J#Sys.INotifyDisposing.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+    function Sys$INotifyDisposing$add_disposing(handler) {
+    /// <summary locid="E:J#Sys.INotifyDisposing.disposing" />
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+        throw Error.notImplemented();
+    }
+    function Sys$INotifyDisposing$remove_disposing(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+        throw Error.notImplemented();
+    }
+Sys.INotifyDisposing.prototype = {
+    add_disposing: Sys$INotifyDisposing$add_disposing,
+    remove_disposing: Sys$INotifyDisposing$remove_disposing
+}
+Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");
+ 
+Sys.Component = function Sys$Component() {
+    /// <summary locid="M:J#Sys.Component.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    if (Sys.Application) Sys.Application.registerDisposableObject(this);
+}
+    function Sys$Component$get_events() {
+        /// <value type="Sys.EventHandlerList" locid="P:J#Sys.Component.events"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+    function Sys$Component$get_id() {
+        /// <value type="String" locid="P:J#Sys.Component.id"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._id;
+    }
+    function Sys$Component$set_id(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
+        this._idSet = true;
+        var oldId = this.get_id();
+        if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
+        this._id = value;
+    }
+    function Sys$Component$get_isInitialized() {
+        /// <value type="Boolean" locid="P:J#Sys.Component.isInitialized"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._initialized;
+    }
+    function Sys$Component$get_isUpdating() {
+        /// <value type="Boolean" locid="P:J#Sys.Component.isUpdating"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._updating;
+    }
+    function Sys$Component$add_disposing(handler) {
+        /// <summary locid="E:J#Sys.Component.disposing" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().addHandler("disposing", handler);
+    }
+    function Sys$Component$remove_disposing(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().removeHandler("disposing", handler);
+    }
+    function Sys$Component$add_propertyChanged(handler) {
+        /// <summary locid="E:J#Sys.Component.propertyChanged" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().addHandler("propertyChanged", handler);
+    }
+    function Sys$Component$remove_propertyChanged(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().removeHandler("propertyChanged", handler);
+    }
+    function Sys$Component$beginUpdate() {
+        this._updating = true;
+    }
+    function Sys$Component$dispose() {
+        if (this._events) {
+            var handler = this._events.getHandler("disposing");
+            if (handler) {
+                handler(this, Sys.EventArgs.Empty);
+            }
+        }
+        delete this._events;
+        Sys.Application.unregisterDisposableObject(this);
+        Sys.Application.removeComponent(this);
+    }
+    function Sys$Component$endUpdate() {
+        this._updating = false;
+        if (!this._initialized) this.initialize();
+        this.updated();
+    }
+    function Sys$Component$initialize() {
+        this._initialized = true;
+    }
+    function Sys$Component$raisePropertyChanged(propertyName) {
+        /// <summary locid="M:J#Sys.Component.raisePropertyChanged" />
+        /// <param name="propertyName" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "propertyName", type: String}
+        ]);
+        if (e) throw e;
+        if (!this._events) return;
+        var handler = this._events.getHandler("propertyChanged");
+        if (handler) {
+            handler(this, new Sys.PropertyChangedEventArgs(propertyName));
+        }
+    }
+    function Sys$Component$updated() {
+    }
+Sys.Component.prototype = {
+    _id: null,
+    _idSet: false,
+    _initialized: false,
+    _updating: false,
+    get_events: Sys$Component$get_events,
+    get_id: Sys$Component$get_id,
+    set_id: Sys$Component$set_id,
+    get_isInitialized: Sys$Component$get_isInitialized,
+    get_isUpdating: Sys$Component$get_isUpdating,
+    add_disposing: Sys$Component$add_disposing,
+    remove_disposing: Sys$Component$remove_disposing,
+    add_propertyChanged: Sys$Component$add_propertyChanged,
+    remove_propertyChanged: Sys$Component$remove_propertyChanged,
+    beginUpdate: Sys$Component$beginUpdate,
+    dispose: Sys$Component$dispose,
+    endUpdate: Sys$Component$endUpdate,
+    initialize: Sys$Component$initialize,
+    raisePropertyChanged: Sys$Component$raisePropertyChanged,
+    updated: Sys$Component$updated
+}
+Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing);
+function Sys$Component$_setProperties(target, properties) {
+    /// <summary locid="M:J#Sys.Component._setProperties" />
+    /// <param name="target"></param>
+    /// <param name="properties"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "target"},
+        {name: "properties"}
+    ]);
+    if (e) throw e;
+    var current;
+    var targetType = Object.getType(target);
+    var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement);
+    var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating();
+    if (isComponent) target.beginUpdate();
+    for (var name in properties) {
+        var val = properties[name];
+        var getter = isObject ? null : target["get_" + name];
+        if (isObject || typeof(getter) !== 'function') {
+            var targetVal = target[name];
+            if (!isObject && typeof(targetVal) === 'undefined') throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, name));
+            if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) {
+                target[name] = val;
+            }
+            else {
+                Sys$Component$_setProperties(targetVal, val);
+            }
+        }
+        else {
+            var setter = target["set_" + name];
+            if (typeof(setter) === 'function') {
+                setter.apply(target, [val]);
+            }
+            else if (val instanceof Array) {
+                current = getter.apply(target);
+                if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
+                for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) {
+                    current[j] = val[i];
+                }
+            }
+            else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) {
+                current = getter.apply(target);
+                if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name));
+                Sys$Component$_setProperties(current, val);
+            }
+            else {
+                throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
+            }
+        }
+    }
+    if (isComponent) target.endUpdate();
+}
+function Sys$Component$_setReferences(component, references) {
+    for (var name in references) {
+        var setter = component["set_" + name];
+        var reference = $find(references[name]);
+        if (typeof(setter) !== 'function') throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name));
+        if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, references[name]));
+        setter.apply(component, [reference]);
+    }
+}
+var $create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) {
+    /// <summary locid="M:J#Sys.Component.create" />
+    /// <param name="type" type="Type"></param>
+    /// <param name="properties" optional="true" mayBeNull="true"></param>
+    /// <param name="events" optional="true" mayBeNull="true"></param>
+    /// <param name="references" optional="true" mayBeNull="true"></param>
+    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
+    /// <returns type="Sys.UI.Component"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "type", type: Type},
+        {name: "properties", mayBeNull: true, optional: true},
+        {name: "events", mayBeNull: true, optional: true},
+        {name: "references", mayBeNull: true, optional: true},
+        {name: "element", mayBeNull: true, domElement: true, optional: true}
+    ]);
+    if (e) throw e;
+    if (!type.inheritsFrom(Sys.Component)) {
+        throw Error.argument('type', String.format(Sys.Res.createNotComponent, type.getName()));
+    }
+    if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
+        if (!element) throw Error.argument('element', Sys.Res.createNoDom);
+    }
+    else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom);
+    var component = (element ? new type(element): new type());
+    var app = Sys.Application;
+    var creatingComponents = app.get_isCreatingComponents();
+    component.beginUpdate();
+    if (properties) {
+        Sys$Component$_setProperties(component, properties);
+    }
+    if (events) {
+        for (var name in events) {
+            if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name));
+            if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction);
+            component["add_" + name](events[name]);
+        }
+    }
+    if (component.get_id()) {
+        app.addComponent(component);
+    }
+    if (creatingComponents) {
+        app._createdComponents[app._createdComponents.length] = component;
+        if (references) {
+            app._addComponentToSecondPass(component, references);
+        }
+        else {
+            component.endUpdate();
+        }
+    }
+    else {
+        if (references) {
+            Sys$Component$_setReferences(component, references);
+        }
+        component.endUpdate();
+    }
+    return component;
+}
+ 
+Sys.UI.MouseButton = function Sys$UI$MouseButton() {
+    /// <summary locid="M:J#Sys.UI.MouseButton.#ctor" />
+    /// <field name="leftButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.leftButton"></field>
+    /// <field name="middleButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.middleButton"></field>
+    /// <field name="rightButton" type="Number" integer="true" static="true" locid="F:J#Sys.UI.MouseButton.rightButton"></field>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+Sys.UI.MouseButton.prototype = {
+    leftButton: 0,
+    middleButton: 1,
+    rightButton: 2
+}
+Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");
+ 
+Sys.UI.Key = function Sys$UI$Key() {
+    /// <summary locid="M:J#Sys.UI.Key.#ctor" />
+    /// <field name="backspace" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.backspace"></field>
+    /// <field name="tab" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.tab"></field>
+    /// <field name="enter" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.enter"></field>
+    /// <field name="esc" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.esc"></field>
+    /// <field name="space" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.space"></field>
+    /// <field name="pageUp" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageUp"></field>
+    /// <field name="pageDown" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.pageDown"></field>
+    /// <field name="end" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.end"></field>
+    /// <field name="home" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.home"></field>
+    /// <field name="left" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.left"></field>
+    /// <field name="up" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.up"></field>
+    /// <field name="right" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.right"></field>
+    /// <field name="down" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.down"></field>
+    /// <field name="del" type="Number" integer="true" static="true" locid="F:J#Sys.UI.Key.del"></field>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+Sys.UI.Key.prototype = {
+    backspace: 8,
+    tab: 9,
+    enter: 13,
+    esc: 27,
+    space: 32,
+    pageUp: 33,
+    pageDown: 34,
+    end: 35,
+    home: 36,
+    left: 37,
+    up: 38,
+    right: 39,
+    down: 40,
+    del: 127
+}
+Sys.UI.Key.registerEnum("Sys.UI.Key");
+ 
+Sys.UI.Point = function Sys$UI$Point(x, y) {
+    /// <summary locid="M:J#Sys.UI.Point.#ctor" />
+    /// <param name="x" type="Number" integer="true"></param>
+    /// <param name="y" type="Number" integer="true"></param>
+    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Point.x"></field>
+    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Point.y"></field>
+    var e = Function._validateParams(arguments, [
+        {name: "x", type: Number, integer: true},
+        {name: "y", type: Number, integer: true}
+    ]);
+    if (e) throw e;
+    this.x = x;
+    this.y = y;
+}
+Sys.UI.Point.registerClass('Sys.UI.Point');
+ 
+Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) {
+    /// <summary locid="M:J#Sys.UI.Bounds.#ctor" />
+    /// <param name="x" type="Number" integer="true"></param>
+    /// <param name="y" type="Number" integer="true"></param>
+    /// <param name="height" type="Number" integer="true"></param>
+    /// <param name="width" type="Number" integer="true"></param>
+    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.x"></field>
+    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.y"></field>
+    /// <field name="height" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.height"></field>
+    /// <field name="width" type="Number" integer="true" locid="F:J#Sys.UI.Bounds.width"></field>
+    var e = Function._validateParams(arguments, [
+        {name: "x", type: Number, integer: true},
+        {name: "y", type: Number, integer: true},
+        {name: "height", type: Number, integer: true},
+        {name: "width", type: Number, integer: true}
+    ]);
+    if (e) throw e;
+    this.x = x;
+    this.y = y;
+    this.height = height;
+    this.width = width;
+}
+Sys.UI.Bounds.registerClass('Sys.UI.Bounds');
+ 
+Sys.UI.DomEvent = function Sys$UI$DomEvent(eventObject) {
+    /// <summary locid="M:J#Sys.UI.DomEvent.#ctor" />
+    /// <param name="eventObject"></param>
+    /// <field name="altKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.altKey"></field>
+    /// <field name="button" type="Sys.UI.MouseButton" locid="F:J#Sys.UI.DomEvent.button"></field>
+    /// <field name="charCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.charCode"></field>
+    /// <field name="clientX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientX"></field>
+    /// <field name="clientY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.clientY"></field>
+    /// <field name="ctrlKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.ctrlKey"></field>
+    /// <field name="keyCode" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.keyCode"></field>
+    /// <field name="offsetX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetX"></field>
+    /// <field name="offsetY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.offsetY"></field>
+    /// <field name="screenX" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenX"></field>
+    /// <field name="screenY" type="Number" integer="true" locid="F:J#Sys.UI.DomEvent.screenY"></field>
+    /// <field name="shiftKey" type="Boolean" locid="F:J#Sys.UI.DomEvent.shiftKey"></field>
+    /// <field name="target" locid="F:J#Sys.UI.DomEvent.target"></field>
+    /// <field name="type" type="String" locid="F:J#Sys.UI.DomEvent.type"></field>
+    var e = Function._validateParams(arguments, [
+        {name: "eventObject"}
+    ]);
+    if (e) throw e;
+    var e = eventObject;
+    this.rawEvent = e;
+    this.altKey = e.altKey;
+    if (typeof(e.button) !== 'undefined') {
+        this.button = (typeof(e.which) !== 'undefined') ? e.button :
+            (e.button === 4) ? Sys.UI.MouseButton.middleButton :
+            (e.button === 2) ? Sys.UI.MouseButton.rightButton :
+            Sys.UI.MouseButton.leftButton;
+    }
+    if (e.type === 'keypress') {
+        this.charCode = e.charCode || e.keyCode;
+    }
+    else if (e.keyCode && (e.keyCode === 46)) {
+        this.keyCode = 127;
+    }
+    else {
+        this.keyCode = e.keyCode;
+    }
+    this.clientX = e.clientX;
+    this.clientY = e.clientY;
+    this.ctrlKey = e.ctrlKey;
+    this.target = e.target ? e.target : e.srcElement;
+    if ((typeof(e.offsetX) !== 'undefined') && (typeof(e.offsetY) !== 'undefined')) {
+        this.offsetX = e.offsetX;
+        this.offsetY = e.offsetY;
+    }
+    else if (this.target && (this.target.nodeType !== 3) && (typeof(e.clientX) === 'number')) {
+        var loc = Sys.UI.DomElement.getLocation(this.target);
+        var w = Sys.UI.DomElement._getWindow(this.target);
+        this.offsetX = (w.pageXOffset || 0) + e.clientX - loc.x;
+        this.offsetY = (w.pageYOffset || 0) + e.clientY - loc.y;
+    }
+    this.screenX = e.screenX;
+    this.screenY = e.screenY;
+    this.shiftKey = e.shiftKey;
+    this.type = e.type;
+}
+    function Sys$UI$DomEvent$preventDefault() {
+        /// <summary locid="M:J#Sys.UI.DomEvent.preventDefault" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this.rawEvent.preventDefault) {
+            this.rawEvent.preventDefault();
+        }
+        else if (window.event) {
+            this.rawEvent.returnValue = false;
+        }
+    }
+    function Sys$UI$DomEvent$stopPropagation() {
+        /// <summary locid="M:J#Sys.UI.DomEvent.stopPropagation" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this.rawEvent.stopPropagation) {
+            this.rawEvent.stopPropagation();
+        }
+        else if (window.event) {
+            this.rawEvent.cancelBubble = true;
+        }
+    }
+Sys.UI.DomEvent.prototype = {
+    preventDefault: Sys$UI$DomEvent$preventDefault,
+    stopPropagation: Sys$UI$DomEvent$stopPropagation
+}
+Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent');
+var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler) {
+    /// <summary locid="M:J#Sys.UI.DomEvent.addHandler" />
+    /// <param name="element"></param>
+    /// <param name="eventName" type="String"></param>
+    /// <param name="handler" type="Function"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element"},
+        {name: "eventName", type: String},
+        {name: "handler", type: Function}
+    ]);
+    if (e) throw e;
+    Sys.UI.DomEvent._ensureDomNode(element);
+    if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError);
+    if (!element._events) {
+        element._events = {};
+    }
+    var eventCache = element._events[eventName];
+    if (!eventCache) {
+        element._events[eventName] = eventCache = [];
+    }
+    var browserHandler;
+    if (element.addEventListener) {
+        browserHandler = function(e) {
+            return handler.call(element, new Sys.UI.DomEvent(e));
+        }
+        element.addEventListener(eventName, browserHandler, false);
+    }
+    else if (element.attachEvent) {
+        browserHandler = function() {
+            var e = {};
+            try {e = Sys.UI.DomElement._getWindow(element).event} catch(ex) {}
+            return handler.call(element, new Sys.UI.DomEvent(e));
+        }
+        element.attachEvent('on' + eventName, browserHandler);
+    }
+    eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler};
+}
+var $addHandlers = Sys.UI.DomEvent.addHandlers = function Sys$UI$DomEvent$addHandlers(element, events, handlerOwner) {
+    /// <summary locid="M:J#Sys.UI.DomEvent.addHandlers" />
+    /// <param name="element"></param>
+    /// <param name="events" type="Object"></param>
+    /// <param name="handlerOwner" optional="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element"},
+        {name: "events", type: Object},
+        {name: "handlerOwner", optional: true}
+    ]);
+    if (e) throw e;
+    Sys.UI.DomEvent._ensureDomNode(element);
+    for (var name in events) {
+        var handler = events[name];
+        if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
+        if (handlerOwner) {
+            handler = Function.createDelegate(handlerOwner, handler);
+        }
+        $addHandler(element, name, handler);
+    }
+}
+var $clearHandlers = Sys.UI.DomEvent.clearHandlers = function Sys$UI$DomEvent$clearHandlers(element) {
+    /// <summary locid="M:J#Sys.UI.DomEvent.clearHandlers" />
+    /// <param name="element"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element"}
+    ]);
+    if (e) throw e;
+    Sys.UI.DomEvent._ensureDomNode(element);
+    if (element._events) {
+        var cache = element._events;
+        for (var name in cache) {
+            var handlers = cache[name];
+            for (var i = handlers.length - 1; i >= 0; i--) {
+                $removeHandler(element, name, handlers[i].handler);
+            }
+        }
+        element._events = null;
+    }
+}
+var $removeHandler = Sys.UI.DomEvent.removeHandler = function Sys$UI$DomEvent$removeHandler(element, eventName, handler) {
+    /// <summary locid="M:J#Sys.UI.DomEvent.removeHandler" />
+    /// <param name="element"></param>
+    /// <param name="eventName" type="String"></param>
+    /// <param name="handler" type="Function"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element"},
+        {name: "eventName", type: String},
+        {name: "handler", type: Function}
+    ]);
+    if (e) throw e;
+    Sys.UI.DomEvent._ensureDomNode(element);
+    var browserHandler = null;
+    if ((typeof(element._events) !== 'object') || (element._events == null)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
+    var cache = element._events[eventName];
+    if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
+    for (var i = 0, l = cache.length; i < l; i++) {
+        if (cache[i].handler === handler) {
+            browserHandler = cache[i].browserHandler;
+            break;
+        }
+    }
+    if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
+    if (element.removeEventListener) {
+        element.removeEventListener(eventName, browserHandler, false);
+    }
+    else if (element.detachEvent) {
+        element.detachEvent('on' + eventName, browserHandler);
+    }
+    cache.splice(i, 1);
+}
+Sys.UI.DomEvent._ensureDomNode = function Sys$UI$DomEvent$_ensureDomNode(element) {
+    if (element.tagName && (element.tagName === "SCRIPT")) return;
+    
+    var doc = element.ownerDocument || element.document || element;
+    if ((typeof(element.document) !== 'object') && (element != doc) && (typeof(element.nodeType) !== 'number')) {
+        throw Error.argument("element", Sys.Res.argumentDomNode);
+    }
+}
+ 
+Sys.UI.DomElement = function Sys$UI$DomElement() {
+    /// <summary locid="M:J#Sys.UI.DomElement.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+Sys.UI.DomElement.registerClass('Sys.UI.DomElement');
+Sys.UI.DomElement.addCssClass = function Sys$UI$DomElement$addCssClass(element, className) {
+    /// <summary locid="M:J#Sys.UI.DomElement.addCssClass" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+    if (!Sys.UI.DomElement.containsCssClass(element, className)) {
+        if (element.className === '') {
+            element.className = className;
+        }
+        else {
+            element.className += ' ' + className;
+        }
+    }
+}
+Sys.UI.DomElement.containsCssClass = function Sys$UI$DomElement$containsCssClass(element, className) {
+    /// <summary locid="M:J#Sys.UI.DomElement.containsCssClass" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+    return Array.contains(element.className.split(' '), className);
+}
+Sys.UI.DomElement.getBounds = function Sys$UI$DomElement$getBounds(element) {
+    /// <summary locid="M:J#Sys.UI.DomElement.getBounds" />
+    /// <param name="element" domElement="true"></param>
+    /// <returns type="Sys.UI.Bounds"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+    var offset = Sys.UI.DomElement.getLocation(element);
+    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
+}
+var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) {
+    /// <summary locid="M:J#Sys.UI.DomElement.getElementById" />
+    /// <param name="id" type="String"></param>
+    /// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
+    /// <returns domElement="true" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "id", type: String},
+        {name: "element", mayBeNull: true, domElement: true, optional: true}
+    ]);
+    if (e) throw e;
+    if (!element) return document.getElementById(id);
+    if (element.getElementById) return element.getElementById(id);
+    var nodeQueue = [];
+    var childNodes = element.childNodes;
+    for (var i = 0; i < childNodes.length; i++) {
+        var node = childNodes[i];
+        if (node.nodeType == 1) {
+            nodeQueue[nodeQueue.length] = node;
+        }
+    }
+    while (nodeQueue.length) {
+        node = nodeQueue.shift();
+        if (node.id == id) {
+            return node;
+        }
+        childNodes = node.childNodes;
+        for (i = 0; i < childNodes.length; i++) {
+            node = childNodes[i];
+            if (node.nodeType == 1) {
+                nodeQueue[nodeQueue.length] = node;
+            }
+        }
+    }
+    return null;
+}
+switch(Sys.Browser.agent) {
+    case Sys.Browser.InternetExplorer:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+            if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);
+            var clientRect = element.getBoundingClientRect();
+            if (!clientRect) {
+                return new Sys.UI.Point(0,0);
+            }
+            var documentElement = element.ownerDocument.documentElement;
+            var offsetX = clientRect.left - 2 + documentElement.scrollLeft,
+                offsetY = clientRect.top - 2 + documentElement.scrollTop;
+            
+            try {
+                var f = element.ownerDocument.parentWindow.frameElement || null;
+                if (f) {
+                    var offset = (f.frameBorder === "0" || f.frameBorder === "no") ? 2 : 0;
+                    offsetX += offset;
+                    offsetY += offset;
+                }
+            }
+            catch(ex) {
+            }    
+            
+            return new Sys.UI.Point(offsetX, offsetY);
+        }
+        break;
+    case Sys.Browser.Safari:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
+            var offsetX = 0;
+            var offsetY = 0;
+            var previous = null;
+            var previousStyle = null;
+            var currentStyle;
+            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
+                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+                var tagName = parent.tagName;
+                if ((parent.offsetLeft || parent.offsetTop) &&
+                    ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) {
+                    offsetX += parent.offsetLeft;
+                    offsetY += parent.offsetTop;
+                }
+            }
+            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
+            var elementPosition = currentStyle ? currentStyle.position : null;
+            if (!elementPosition || (elementPosition !== "absolute")) {
+                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
+                    tagName = parent.tagName;
+                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
+                        offsetX -= (parent.scrollLeft || 0);
+                        offsetY -= (parent.scrollTop || 0);
+                    }
+                    currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+                    var parentPosition = currentStyle ? currentStyle.position : null;
+                    if (parentPosition && (parentPosition === "absolute")) break;
+                }
+            }
+            return new Sys.UI.Point(offsetX, offsetY);
+        }
+        break;
+    case Sys.Browser.Opera:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
+            var offsetX = 0;
+            var offsetY = 0;
+            var previous = null;
+            for (var parent = element; parent; previous = parent, parent = parent.offsetParent) {
+                var tagName = parent.tagName;
+                offsetX += parent.offsetLeft || 0;
+                offsetY += parent.offsetTop || 0;
+            }
+            var elementPosition = element.style.position;
+            var elementPositioned = elementPosition && (elementPosition !== "static");
+            for (var parent = element.parentNode; parent; parent = parent.parentNode) {
+                tagName = parent.tagName;
+                if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop) &&
+                    ((elementPositioned &&
+                    ((parent.style.overflow === "scroll") || (parent.style.overflow === "auto"))))) {
+                    offsetX -= (parent.scrollLeft || 0);
+                    offsetY -= (parent.scrollTop || 0);
+                }
+                var parentPosition = (parent && parent.style) ? parent.style.position : null;
+                elementPositioned = elementPositioned || (parentPosition && (parentPosition !== "static"));
+            }
+            return new Sys.UI.Point(offsetX, offsetY);
+        }
+        break;
+    default:
+        Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
+            /// <summary locid="M:J#Sys.UI.DomElement.getLocation" />
+            /// <param name="element" domElement="true"></param>
+            /// <returns type="Sys.UI.Point"></returns>
+            var e = Function._validateParams(arguments, [
+                {name: "element", domElement: true}
+            ]);
+            if (e) throw e;
+            if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0);
+            var offsetX = 0;
+            var offsetY = 0;
+            var previous = null;
+            var previousStyle = null;
+            var currentStyle = null;
+            for (var parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) {
+                var tagName = parent.tagName;
+                currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+                if ((parent.offsetLeft || parent.offsetTop) &&
+                    !((tagName === "BODY") &&
+                    (!previousStyle || previousStyle.position !== "absolute"))) {
+                    offsetX += parent.offsetLeft;
+                    offsetY += parent.offsetTop;
+                }
+                if (previous !== null && currentStyle) {
+                    if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) {
+                        offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
+                        offsetY += parseInt(currentStyle.borderTopWidth) || 0;
+                    }
+                    if (tagName === "TABLE" &&
+                        (currentStyle.position === "relative" || currentStyle.position === "absolute")) {
+                        offsetX += parseInt(currentStyle.marginLeft) || 0;
+                        offsetY += parseInt(currentStyle.marginTop) || 0;
+                    }
+                }
+            }
+            currentStyle = Sys.UI.DomElement._getCurrentStyle(element);
+            var elementPosition = currentStyle ? currentStyle.position : null;
+            if (!elementPosition || (elementPosition !== "absolute")) {
+                for (var parent = element.parentNode; parent; parent = parent.parentNode) {
+                    tagName = parent.tagName;
+                    if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) {
+                        offsetX -= (parent.scrollLeft || 0);
+                        offsetY -= (parent.scrollTop || 0);
+                        currentStyle = Sys.UI.DomElement._getCurrentStyle(parent);
+                        if (currentStyle) {
+                            offsetX += parseInt(currentStyle.borderLeftWidth) || 0;
+                            offsetY += parseInt(currentStyle.borderTopWidth) || 0;
+                        }
+                    }
+                }
+            }
+            return new Sys.UI.Point(offsetX, offsetY);
+        }
+        break;
+}
+Sys.UI.DomElement.removeCssClass = function Sys$UI$DomElement$removeCssClass(element, className) {
+    /// <summary locid="M:J#Sys.UI.DomElement.removeCssClass" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+    var currentClassName = ' ' + element.className + ' ';
+    var index = currentClassName.indexOf(' ' + className + ' ');
+    if (index >= 0) {
+        element.className = (currentClassName.substr(0, index) + ' ' +
+            currentClassName.substring(index + className.length + 1, currentClassName.length)).trim();
+    }
+}
+Sys.UI.DomElement.setLocation = function Sys$UI$DomElement$setLocation(element, x, y) {
+    /// <summary locid="M:J#Sys.UI.DomElement.setLocation" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="x" type="Number" integer="true"></param>
+    /// <param name="y" type="Number" integer="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "x", type: Number, integer: true},
+        {name: "y", type: Number, integer: true}
+    ]);
+    if (e) throw e;
+    var style = element.style;
+    style.position = 'absolute';
+    style.left = x + "px";
+    style.top = y + "px";
+}
+Sys.UI.DomElement.toggleCssClass = function Sys$UI$DomElement$toggleCssClass(element, className) {
+    /// <summary locid="M:J#Sys.UI.DomElement.toggleCssClass" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="className" type="String"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "className", type: String}
+    ]);
+    if (e) throw e;
+    if (Sys.UI.DomElement.containsCssClass(element, className)) {
+        Sys.UI.DomElement.removeCssClass(element, className);
+    }
+    else {
+        Sys.UI.DomElement.addCssClass(element, className);
+    }
+}
+Sys.UI.DomElement.getVisibilityMode = function Sys$UI$DomElement$getVisibilityMode(element) {
+    /// <summary locid="M:J#Sys.UI.DomElement.getVisibilityMode" />
+    /// <param name="element" domElement="true"></param>
+    /// <returns type="Sys.UI.VisibilityMode"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+    return (element._visibilityMode === Sys.UI.VisibilityMode.hide) ?
+        Sys.UI.VisibilityMode.hide :
+        Sys.UI.VisibilityMode.collapse;
+}
+Sys.UI.DomElement.setVisibilityMode = function Sys$UI$DomElement$setVisibilityMode(element, value) {
+    /// <summary locid="M:J#Sys.UI.DomElement.setVisibilityMode" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="value" type="Sys.UI.VisibilityMode"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "value", type: Sys.UI.VisibilityMode}
+    ]);
+    if (e) throw e;
+    Sys.UI.DomElement._ensureOldDisplayMode(element);
+    if (element._visibilityMode !== value) {
+        element._visibilityMode = value;
+        if (Sys.UI.DomElement.getVisible(element) === false) {
+            if (element._visibilityMode === Sys.UI.VisibilityMode.hide) {
+                element.style.display = element._oldDisplayMode;
+            }
+            else {
+                element.style.display = 'none';
+            }
+        }
+        element._visibilityMode = value;
+    }
+}
+Sys.UI.DomElement.getVisible = function Sys$UI$DomElement$getVisible(element) {
+    /// <summary locid="M:J#Sys.UI.DomElement.getVisible" />
+    /// <param name="element" domElement="true"></param>
+    /// <returns type="Boolean"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+    var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
+    if (!style) return true;
+    return (style.visibility !== 'hidden') && (style.display !== 'none');
+}
+Sys.UI.DomElement.setVisible = function Sys$UI$DomElement$setVisible(element, value) {
+    /// <summary locid="M:J#Sys.UI.DomElement.setVisible" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="value" type="Boolean"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "value", type: Boolean}
+    ]);
+    if (e) throw e;
+    if (value !== Sys.UI.DomElement.getVisible(element)) {
+        Sys.UI.DomElement._ensureOldDisplayMode(element);
+        element.style.visibility = value ? 'visible' : 'hidden';
+        if (value || (element._visibilityMode === Sys.UI.VisibilityMode.hide)) {
+            element.style.display = element._oldDisplayMode;
+        }
+        else {
+            element.style.display = 'none';
+        }
+    }
+}
+Sys.UI.DomElement._ensureOldDisplayMode = function Sys$UI$DomElement$_ensureOldDisplayMode(element) {
+    if (!element._oldDisplayMode) {
+        var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element);
+        element._oldDisplayMode = style ? style.display : null;
+        if (!element._oldDisplayMode || element._oldDisplayMode === 'none') {
+            switch(element.tagName.toUpperCase()) {
+                case 'DIV': case 'P': case 'ADDRESS': case 'BLOCKQUOTE': case 'BODY': case 'COL':
+                case 'COLGROUP': case 'DD': case 'DL': case 'DT': case 'FIELDSET': case 'FORM':
+                case 'H1': case 'H2': case 'H3': case 'H4': case 'H5': case 'H6': case 'HR':
+                case 'IFRAME': case 'LEGEND': case 'OL': case 'PRE': case 'TABLE': case 'TD':
+                case 'TH': case 'TR': case 'UL':
+                    element._oldDisplayMode = 'block';
+                    break;
+                case 'LI':
+                    element._oldDisplayMode = 'list-item';
+                    break;
+                default:
+                    element._oldDisplayMode = 'inline';
+            }
+        }
+    }
+}
+Sys.UI.DomElement._getWindow = function Sys$UI$DomElement$_getWindow(element) {
+    var doc = element.ownerDocument || element.document || element;
+    return doc.defaultView || doc.parentWindow;
+}
+Sys.UI.DomElement._getCurrentStyle = function Sys$UI$DomElement$_getCurrentStyle(element) {
+    if (element.nodeType === 3) return null;
+    var w = Sys.UI.DomElement._getWindow(element);
+    if (element.documentElement) element = element.documentElement;
+    var computedStyle = (w && (element !== w) && w.getComputedStyle) ?
+        w.getComputedStyle(element, null) :
+        element.currentStyle || element.style;
+    if (!computedStyle && (Sys.Browser.agent === Sys.Browser.Safari) && element.style) {
+        var oldDisplay = element.style.display;
+        var oldPosition = element.style.position;
+        element.style.position = 'absolute';
+        element.style.display = 'block';
+        var style = w.getComputedStyle(element, null);
+        element.style.display = oldDisplay;
+        element.style.position = oldPosition;
+        computedStyle = {};
+        for (var n in style) {
+            computedStyle[n] = style[n];
+        }
+        computedStyle.display = 'none';
+    }
+    return computedStyle;
+}
+ 
+Sys.IContainer = function Sys$IContainer() {
+    throw Error.notImplemented();
+}
+    function Sys$IContainer$addComponent(component) {
+        /// <summary locid="M:J#Sys.IContainer.addComponent" />
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+        throw Error.notImplemented();
+    }
+    function Sys$IContainer$removeComponent(component) {
+        /// <summary locid="M:J#Sys.IContainer.removeComponent" />
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+        throw Error.notImplemented();
+    }
+    function Sys$IContainer$findComponent(id) {
+        /// <summary locid="M:J#Sys.IContainer.findComponent" />
+        /// <param name="id" type="String"></param>
+        /// <returns type="Sys.Component"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String}
+        ]);
+        if (e) throw e;
+        throw Error.notImplemented();
+    }
+    function Sys$IContainer$getComponents() {
+        /// <summary locid="M:J#Sys.IContainer.getComponents" />
+        /// <returns type="Array" elementType="Sys.Component"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+Sys.IContainer.prototype = {
+    addComponent: Sys$IContainer$addComponent,
+    removeComponent: Sys$IContainer$removeComponent,
+    findComponent: Sys$IContainer$findComponent,
+    getComponents: Sys$IContainer$getComponents
+}
+Sys.IContainer.registerInterface("Sys.IContainer");
+ 
+Sys._ScriptLoader = function Sys$_ScriptLoader() {
+    this._scriptsToLoad = null;
+    this._scriptLoadedDelegate = Function.createDelegate(this, this._scriptLoadedHandler);
+}
+    function Sys$_ScriptLoader$dispose() {
+        this._stopLoading();
+        if(this._events) {
+            delete this._events;
+        }
+        this._scriptLoadedDelegate = null;        
+    }
+    function Sys$_ScriptLoader$loadScripts(scriptTimeout, allScriptsLoadedCallback, scriptLoadFailedCallback, scriptLoadTimeoutCallback) {
+        /// <summary locid="M:J#Sys._ScriptLoader.loadScripts" />
+        /// <param name="scriptTimeout" type="Number" integer="true"></param>
+        /// <param name="allScriptsLoadedCallback" type="Function" mayBeNull="true"></param>
+        /// <param name="scriptLoadFailedCallback" type="Function" mayBeNull="true"></param>
+        /// <param name="scriptLoadTimeoutCallback" type="Function" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptTimeout", type: Number, integer: true},
+            {name: "allScriptsLoadedCallback", type: Function, mayBeNull: true},
+            {name: "scriptLoadFailedCallback", type: Function, mayBeNull: true},
+            {name: "scriptLoadTimeoutCallback", type: Function, mayBeNull: true}
+        ]);
+        if (e) throw e;
+        if(this._loading) {
+            throw Error.invalidOperation(Sys.Res.scriptLoaderAlreadyLoading);
+        }
+        this._loading = true;
+        this._allScriptsLoadedCallback = allScriptsLoadedCallback;
+        this._scriptLoadFailedCallback = scriptLoadFailedCallback;
+        this._scriptLoadTimeoutCallback = scriptLoadTimeoutCallback;
+        
+        this._loadScriptsInternal();
+    }
+    function Sys$_ScriptLoader$notifyScriptLoaded() {
+        /// <summary locid="M:J#Sys._ScriptLoader.notifyScriptLoaded" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        
+        if(!this._loading) {
+            return;
+        }
+        this._currentTask._notified++;
+        
+        if(Sys.Browser.agent === Sys.Browser.Safari) {           
+            if(this._currentTask._notified === 1) {
+                window.setTimeout(Function.createDelegate(this, function() {
+                    this._scriptLoadedHandler(this._currentTask.get_scriptElement(), true);
+                }), 0);
+            }
+        }
+    }
+    function Sys$_ScriptLoader$queueCustomScriptTag(scriptAttributes) {
+        /// <summary locid="M:J#Sys._ScriptLoader.queueCustomScriptTag" />
+        /// <param name="scriptAttributes" mayBeNull="false"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptAttributes"}
+        ]);
+        if (e) throw e;
+        if(!this._scriptsToLoad) {
+            this._scriptsToLoad = [];
+        }
+        Array.add(this._scriptsToLoad, scriptAttributes);
+    }
+    function Sys$_ScriptLoader$queueScriptBlock(scriptContent) {
+        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptBlock" />
+        /// <param name="scriptContent" type="String" mayBeNull="false"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptContent", type: String}
+        ]);
+        if (e) throw e;
+        if(!this._scriptsToLoad) {
+            this._scriptsToLoad = [];
+        }
+        Array.add(this._scriptsToLoad, {text: scriptContent});
+    }
+    function Sys$_ScriptLoader$queueScriptReference(scriptUrl) {
+        /// <summary locid="M:J#Sys._ScriptLoader.queueScriptReference" />
+        /// <param name="scriptUrl" type="String" mayBeNull="false"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "scriptUrl", type: String}
+        ]);
+        if (e) throw e;
+        if(!this._scriptsToLoad) {
+            this._scriptsToLoad = [];
+        }
+        Array.add(this._scriptsToLoad, {src: scriptUrl});
+    }
+    function Sys$_ScriptLoader$_createScriptElement(queuedScript) {
+        var scriptElement = document.createElement('SCRIPT');
+        scriptElement.type = 'text/javascript';
+        for (var attr in queuedScript) {
+            scriptElement[attr] = queuedScript[attr];
+        }
+        
+        return scriptElement;
+    }
+    function Sys$_ScriptLoader$_loadScriptsInternal() {
+        if (this._scriptsToLoad && this._scriptsToLoad.length > 0) {
+            var nextScript = Array.dequeue(this._scriptsToLoad);
+            var scriptElement = this._createScriptElement(nextScript);
+            
+            if (scriptElement.text && Sys.Browser.agent === Sys.Browser.Safari) {
+                scriptElement.innerHTML = scriptElement.text;
+                delete scriptElement.text;
+            }            
+            if (typeof(nextScript.src) === "string") {
+                this._currentTask = new Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
+                this._currentTask.execute();
+            }
+            else {
+                document.getElementsByTagName('HEAD')[0].appendChild(scriptElement);
+                
+                var scriptLoader = this; 
+                window.setTimeout(function() {
+                    Sys._ScriptLoader._clearScript(scriptElement);
+                    scriptLoader._loadScriptsInternal();
+                }, 0);
+            }
+        }
+        else {
+            var callback = this._allScriptsLoadedCallback;
+            this._stopLoading();
+            if(callback) {
+                callback(this);
+            }
+        }
+    }
+    function Sys$_ScriptLoader$_raiseError(multipleCallbacks) {
+        var callback = this._scriptLoadFailedCallback;
+        var scriptElement = this._currentTask.get_scriptElement();
+        this._stopLoading();
+        
+        if(callback) {
+            callback(this, scriptElement, multipleCallbacks);
+        }
+        else {
+            throw Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src, multipleCallbacks);
+        }
+    }
+    function Sys$_ScriptLoader$_scriptLoadedHandler(scriptElement, loaded) {
+        if(loaded && this._currentTask._notified) {
+            if(this._currentTask._notified > 1) {
+                this._raiseError(true);
+            }
+            else {
+                Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
+                this._currentTask.dispose();
+                this._currentTask = null;
+                this._loadScriptsInternal();
+            }
+        }
+        else {
+            this._raiseError(false);
+        }
+    }
+    function Sys$_ScriptLoader$_scriptLoadTimeoutHandler() {
+        var callback = this._scriptLoadTimeoutCallback;
+        this._stopLoading();
+        if(callback) {
+            callback(this);
+        }
+    }
+    function Sys$_ScriptLoader$_stopLoading() {
+        if(this._timeoutCookie) {
+            window.clearTimeout(this._timeoutCookie);
+            this._timeoutCookie = null;
+        }
+        if(this._currentTask) {
+            this._currentTask.dispose();
+            this._currentTask = null;
+        }
+        this._scriptsToLoad = null;
+        this._loading = null;
+        
+        this._allScriptsLoadedCallback = null;
+        this._scriptLoadFailedCallback = null;
+        this._scriptLoadTimeoutCallback = null;
+    }
+Sys._ScriptLoader.prototype = {
+    dispose: Sys$_ScriptLoader$dispose,
+    loadScripts: Sys$_ScriptLoader$loadScripts,
+    notifyScriptLoaded: Sys$_ScriptLoader$notifyScriptLoaded,
+    queueCustomScriptTag: Sys$_ScriptLoader$queueCustomScriptTag,
+    queueScriptBlock: Sys$_ScriptLoader$queueScriptBlock,
+    queueScriptReference: Sys$_ScriptLoader$queueScriptReference,
+    _createScriptElement: Sys$_ScriptLoader$_createScriptElement,   
+    _loadScriptsInternal: Sys$_ScriptLoader$_loadScriptsInternal,
+    _raiseError: Sys$_ScriptLoader$_raiseError,
+    _scriptLoadedHandler: Sys$_ScriptLoader$_scriptLoadedHandler,
+    _scriptLoadTimeoutHandler: Sys$_ScriptLoader$_scriptLoadTimeoutHandler,
+    _stopLoading: Sys$_ScriptLoader$_stopLoading    
+}
+Sys._ScriptLoader.registerClass('Sys._ScriptLoader', null, Sys.IDisposable);
+Sys._ScriptLoader.getInstance = function Sys$_ScriptLoader$getInstance() {
+    var sl = Sys._ScriptLoader._activeInstance;
+    if(!sl) {
+        sl = Sys._ScriptLoader._activeInstance = new Sys._ScriptLoader();
+    }
+    return sl;
+}
+Sys._ScriptLoader.isScriptLoaded = function Sys$_ScriptLoader$isScriptLoaded(scriptSrc) {
+    var dummyScript = document.createElement('script');
+    dummyScript.src = scriptSrc;
+    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), dummyScript.src);
+}
+Sys._ScriptLoader.readLoadedScripts = function Sys$_ScriptLoader$readLoadedScripts() {
+    if(!Sys._ScriptLoader._referencedScripts) {
+        var referencedScripts = Sys._ScriptLoader._referencedScripts = [];
+        var existingScripts = document.getElementsByTagName('SCRIPT');
+        for (i = existingScripts.length - 1; i >= 0; i--) {
+            var scriptNode = existingScripts[i];
+            var scriptSrc = scriptNode.src;
+            if (scriptSrc.length) {
+                if (!Array.contains(referencedScripts, scriptSrc)) {
+                    Array.add(referencedScripts, scriptSrc);
+                }
+            }
+        }
+    }
+}
+Sys._ScriptLoader._clearScript = function Sys$_ScriptLoader$_clearScript(scriptElement) {
+    if (!Sys.Debug.isDebug) {
+        scriptElement.parentNode.removeChild(scriptElement);
+    }
+}
+Sys._ScriptLoader._errorScriptLoadFailed = function Sys$_ScriptLoader$_errorScriptLoadFailed(scriptUrl, multipleCallbacks) {
+    var errorMessage;
+    if(multipleCallbacks) {
+        errorMessage = Sys.Res.scriptLoadMultipleCallbacks;
+    }
+    else {
+        errorMessage = Sys.Res.scriptLoadFailedDebug;
+    }
+    var displayMessage = "Sys.ScriptLoadFailedException: " + String.format(errorMessage, scriptUrl);
+    var e = Error.create(displayMessage, {name: 'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
+    e.popStackFrame();
+    return e;
+}
+Sys._ScriptLoader._getLoadedScripts = function Sys$_ScriptLoader$_getLoadedScripts() {
+    if(!Sys._ScriptLoader._referencedScripts) {
+        Sys._ScriptLoader._referencedScripts = [];
+        Sys._ScriptLoader.readLoadedScripts();
+    }
+    return Sys._ScriptLoader._referencedScripts;
+}
+ 
+Sys._ScriptLoaderTask = function Sys$_ScriptLoaderTask(scriptElement, completedCallback) {
+    /// <summary locid="M:J#Sys._ScriptLoaderTask.#ctor" />
+    /// <param name="scriptElement" domElement="true"></param>
+    /// <param name="completedCallback" type="Function"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "scriptElement", domElement: true},
+        {name: "completedCallback", type: Function}
+    ]);
+    if (e) throw e;
+    this._scriptElement = scriptElement;
+    this._completedCallback = completedCallback;
+    this._notified = 0;
+}
+    function Sys$_ScriptLoaderTask$get_scriptElement() {
+        /// <value domElement="true" locid="P:J#Sys._ScriptLoaderTask.scriptElement"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._scriptElement;
+    }
+    function Sys$_ScriptLoaderTask$dispose() {
+        if(this._disposed) {
+            return;
+        }
+        this._disposed = true;
+        this._removeScriptElementHandlers();
+        Sys._ScriptLoader._clearScript(this._scriptElement);
+        this._scriptElement = null;
+    }
+    function Sys$_ScriptLoaderTask$execute() {
+        /// <summary locid="M:J#Sys._ScriptLoaderTask.execute" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        this._addScriptElementHandlers();
+        document.getElementsByTagName('HEAD')[0].appendChild(this._scriptElement);
+    }
+    function Sys$_ScriptLoaderTask$_addScriptElementHandlers() {
+        this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler);
+        
+        if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
+            this._scriptElement.readyState = 'loaded';
+            $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate);
+        }
+        else {
+            $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate);
+        }    
+        if (this._scriptElement.addEventListener) {
+            this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler);
+            this._scriptElement.addEventListener('error', this._scriptErrorDelegate, false);
+        }
+    }
+    function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() {
+        if(this._scriptLoadDelegate) {
+            var scriptElement = this.get_scriptElement();
+            if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) {
+                $removeHandler(scriptElement, 'load', this._scriptLoadDelegate);
+            }
+            else {
+                $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate);
+            }
+            if (this._scriptErrorDelegate) {
+                this._scriptElement.removeEventListener('error', this._scriptErrorDelegate, false);
+                this._scriptErrorDelegate = null;
+            }
+            this._scriptLoadDelegate = null;
+        }
+    }
+    function Sys$_ScriptLoaderTask$_scriptErrorHandler() {
+        if(this._disposed) {
+            return;
+        }
+        
+        this._completedCallback(this.get_scriptElement(), false);
+    }
+    function Sys$_ScriptLoaderTask$_scriptLoadHandler() {
+        if(this._disposed) {
+            return;
+        }
+        var scriptElement = this.get_scriptElement();
+        if ((scriptElement.readyState !== 'loaded') &&
+            (scriptElement.readyState !== 'complete')) {
+            return;
+        }
+        
+        var _this = this;
+        window.setTimeout(function() {
+            _this._completedCallback(scriptElement, true);
+        }, 0);
+    }
+Sys._ScriptLoaderTask.prototype = {
+    get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement,
+    dispose: Sys$_ScriptLoaderTask$dispose,
+    execute: Sys$_ScriptLoaderTask$execute,
+    _addScriptElementHandlers: Sys$_ScriptLoaderTask$_addScriptElementHandlers,    
+    _removeScriptElementHandlers: Sys$_ScriptLoaderTask$_removeScriptElementHandlers,    
+    _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler,
+    _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler  
+}
+Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable);
+ 
+Sys.ApplicationLoadEventArgs = function Sys$ApplicationLoadEventArgs(components, isPartialLoad) {
+    /// <summary locid="M:J#Sys.ApplicationLoadEventArgs.#ctor" />
+    /// <param name="components" type="Array" elementType="Sys.Component"></param>
+    /// <param name="isPartialLoad" type="Boolean"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "components", type: Array, elementType: Sys.Component},
+        {name: "isPartialLoad", type: Boolean}
+    ]);
+    if (e) throw e;
+    Sys.ApplicationLoadEventArgs.initializeBase(this);
+    this._components = components;
+    this._isPartialLoad = isPartialLoad;
+}
+ 
+    function Sys$ApplicationLoadEventArgs$get_components() {
+        /// <value type="Array" elementType="Sys.Component" locid="P:J#Sys.ApplicationLoadEventArgs.components"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._components;
+    }
+    function Sys$ApplicationLoadEventArgs$get_isPartialLoad() {
+        /// <value type="Boolean" locid="P:J#Sys.ApplicationLoadEventArgs.isPartialLoad"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._isPartialLoad;
+    }
+Sys.ApplicationLoadEventArgs.prototype = {
+    get_components: Sys$ApplicationLoadEventArgs$get_components,
+    get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad
+}
+Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs);
+ 
+Sys._Application = function Sys$_Application() {
+    Sys._Application.initializeBase(this);
+    this._disposableObjects = [];
+    this._components = {};
+    this._createdComponents = [];
+    this._secondPassComponents = [];
+    this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler);
+    this._loadHandlerDelegate = Function.createDelegate(this, this._loadHandler);
+    Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate);
+    Sys.UI.DomEvent.addHandler(window, "load", this._loadHandlerDelegate);
+}
+    function Sys$_Application$get_isCreatingComponents() {
+        /// <value type="Boolean" locid="P:J#Sys._Application.isCreatingComponents"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._creatingComponents;
+    }
+    function Sys$_Application$add_load(handler) {
+        /// <summary locid="E:J#Sys._Application.load" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().addHandler("load", handler);
+    }
+    function Sys$_Application$remove_load(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().removeHandler("load", handler);
+    }
+    function Sys$_Application$add_init(handler) {
+        /// <summary locid="E:J#Sys._Application.init" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        if (this._initialized) {
+            handler(this, Sys.EventArgs.Empty);
+        }
+        else {
+            this.get_events().addHandler("init", handler);
+        }
+    }
+    function Sys$_Application$remove_init(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().removeHandler("init", handler);
+    }
+    function Sys$_Application$add_unload(handler) {
+        /// <summary locid="E:J#Sys._Application.unload" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().addHandler("unload", handler);
+    }
+    function Sys$_Application$remove_unload(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this.get_events().removeHandler("unload", handler);
+    }
+    function Sys$_Application$addComponent(component) {
+        /// <summary locid="M:J#Sys._Application.addComponent" />
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+        var id = component.get_id();
+        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
+        if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id));
+        this._components[id] = component;
+    }
+    function Sys$_Application$beginCreateComponents() {
+        this._creatingComponents = true;
+    }
+    function Sys$_Application$dispose() {
+        if (!this._disposing) {
+            this._disposing = true;
+            if (window.pageUnload) {
+                window.pageUnload(this, Sys.EventArgs.Empty);
+            }
+            var unloadHandler = this.get_events().getHandler("unload");
+            if (unloadHandler) {
+                unloadHandler(this, Sys.EventArgs.Empty);
+            }
+            var disposableObjects = Array.clone(this._disposableObjects);
+            for (var i = 0, l = disposableObjects.length; i < l; i++) {
+                disposableObjects[i].dispose();
+            }
+            Array.clear(this._disposableObjects);
+            Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate);
+            if(this._loadHandlerDelegate) {
+                Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
+                this._loadHandlerDelegate = null;
+            }
+            var sl = Sys._ScriptLoader.getInstance();
+            if(sl) {
+                sl.dispose();
+            }
+            Sys._Application.callBaseMethod(this, 'dispose');
+        }
+    }
+    function Sys$_Application$endCreateComponents() {
+        var components = this._secondPassComponents;
+        for (var i = 0, l = components.length; i < l; i++) {
+            var component = components[i].component;
+            Sys$Component$_setReferences(component, components[i].references);
+            component.endUpdate();
+        }
+        this._secondPassComponents = [];
+        this._creatingComponents = false;
+    }
+    function Sys$_Application$findComponent(id, parent) {
+        /// <summary locid="M:J#Sys._Application.findComponent" />
+        /// <param name="id" type="String"></param>
+        /// <param name="parent" optional="true" mayBeNull="true"></param>
+        /// <returns type="Sys.Component" mayBeNull="true"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "id", type: String},
+            {name: "parent", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        return (parent ?
+            ((Sys.IContainer.isInstanceOfType(parent)) ?
+                parent.findComponent(id) :
+                parent[id] || null) :
+            Sys.Application._components[id] || null);
+    }
+    function Sys$_Application$getComponents() {
+        /// <summary locid="M:J#Sys._Application.getComponents" />
+        /// <returns type="Array" elementType="Sys.Component"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        var res = [];
+        var components = this._components;
+        for (var name in components) {
+            res[res.length] = components[name];
+        }
+        return res;
+    }
+    function Sys$_Application$initialize() {
+        if(!this._initialized && !this._initializing) {
+            this._initializing = true;
+            window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
+        }
+    }
+    function Sys$_Application$notifyScriptLoaded() {
+        /// <summary locid="M:J#Sys._Application.notifyScriptLoaded" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        var sl = Sys._ScriptLoader.getInstance();
+        if(sl) {
+            sl.notifyScriptLoaded();
+        }
+    }
+    function Sys$_Application$registerDisposableObject(object) {
+        /// <summary locid="M:J#Sys._Application.registerDisposableObject" />
+        /// <param name="object" type="Sys.IDisposable"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "object", type: Sys.IDisposable}
+        ]);
+        if (e) throw e;
+        if (!this._disposing) {
+            this._disposableObjects[this._disposableObjects.length] = object;
+        }
+    }
+    function Sys$_Application$raiseLoad() {
+        var h = this.get_events().getHandler("load");
+        var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !this._initializing);
+        if (h) {
+            h(this, args);
+        }
+        if (window.pageLoad) {
+            window.pageLoad(this, args);
+        }
+        this._createdComponents = [];
+    }
+    function Sys$_Application$removeComponent(component) {
+        /// <summary locid="M:J#Sys._Application.removeComponent" />
+        /// <param name="component" type="Sys.Component"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "component", type: Sys.Component}
+        ]);
+        if (e) throw e;
+        var id = component.get_id();
+        if (id) delete this._components[id];
+    }
+    function Sys$_Application$unregisterDisposableObject(object) {
+        /// <summary locid="M:J#Sys._Application.unregisterDisposableObject" />
+        /// <param name="object" type="Sys.IDisposable"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "object", type: Sys.IDisposable}
+        ]);
+        if (e) throw e;
+        if (!this._disposing) {
+            Array.remove(this._disposableObjects, object);
+        }
+    }
+    function Sys$_Application$_addComponentToSecondPass(component, references) {
+        this._secondPassComponents[this._secondPassComponents.length] = {component: component, references: references};
+    }
+    function Sys$_Application$_doInitialize() {
+        Sys._Application.callBaseMethod(this, 'initialize');
+        var handler = this.get_events().getHandler("init");
+        if (handler) {
+            this.beginCreateComponents();
+            handler(this, Sys.EventArgs.Empty);
+            this.endCreateComponents();
+        }
+        this.raiseLoad();
+        this._initializing = false;
+    }
+    function Sys$_Application$_loadHandler() {
+        if(this._loadHandlerDelegate) {
+            Sys.UI.DomEvent.removeHandler(window, "load", this._loadHandlerDelegate);
+            this._loadHandlerDelegate = null;
+        }
+        this.initialize();
+    }
+    function Sys$_Application$_unloadHandler(event) {
+        this.dispose();
+    }
+Sys._Application.prototype = {
+    _creatingComponents: false,
+    _disposing: false,
+    get_isCreatingComponents: Sys$_Application$get_isCreatingComponents,
+    add_load: Sys$_Application$add_load,
+    remove_load: Sys$_Application$remove_load,
+    add_init: Sys$_Application$add_init,
+    remove_init: Sys$_Application$remove_init,
+    add_unload: Sys$_Application$add_unload,
+    remove_unload: Sys$_Application$remove_unload,
+    addComponent: Sys$_Application$addComponent,
+    beginCreateComponents: Sys$_Application$beginCreateComponents,
+    dispose: Sys$_Application$dispose,
+    endCreateComponents: Sys$_Application$endCreateComponents,
+    findComponent: Sys$_Application$findComponent,
+    getComponents: Sys$_Application$getComponents,
+    initialize: Sys$_Application$initialize,
+    notifyScriptLoaded: Sys$_Application$notifyScriptLoaded,
+    registerDisposableObject: Sys$_Application$registerDisposableObject,
+    raiseLoad: Sys$_Application$raiseLoad,
+    removeComponent: Sys$_Application$removeComponent,
+    unregisterDisposableObject: Sys$_Application$unregisterDisposableObject,
+    _addComponentToSecondPass: Sys$_Application$_addComponentToSecondPass,
+    _doInitialize: Sys$_Application$_doInitialize,    
+    _loadHandler: Sys$_Application$_loadHandler,
+    _unloadHandler: Sys$_Application$_unloadHandler
+}
+Sys._Application.registerClass('Sys._Application', Sys.Component, Sys.IContainer);
+Sys.Application = new Sys._Application();
+var $find = Sys.Application.findComponent;
+Type.registerNamespace('Sys.Net');
+ 
+Sys.Net.WebRequestExecutor = function Sys$Net$WebRequestExecutor() {
+    /// <summary locid="M:J#Sys.Net.WebRequestExecutor.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    this._webRequest = null;
+    this._resultObject = null;
+}
+    function Sys$Net$WebRequestExecutor$get_webRequest() {
+        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.WebRequestExecutor.webRequest"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._webRequest;
+    }
+    function Sys$Net$WebRequestExecutor$_set_webRequest(value) {
+        if (this.get_started()) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest'));
+        }
+        this._webRequest = value;
+    }
+    function Sys$Net$WebRequestExecutor$get_started() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.started"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_responseAvailable() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.responseAvailable"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_timedOut() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.timedOut"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_aborted() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.WebRequestExecutor.aborted"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_responseData() {
+        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.responseData"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_statusCode() {
+        /// <value type="Number" locid="P:J#Sys.Net.WebRequestExecutor.statusCode"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_statusText() {
+        /// <value type="String" locid="P:J#Sys.Net.WebRequestExecutor.statusText"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_xml() {
+        /// <value locid="P:J#Sys.Net.WebRequestExecutor.xml"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$get_object() {
+        /// <value locid="P:J#Sys.Net.WebRequestExecutor.object"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._resultObject) {
+            this._resultObject = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());
+        }
+        return this._resultObject;
+    }
+    function Sys$Net$WebRequestExecutor$executeRequest() {
+        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.executeRequest" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$abort() {
+        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.abort" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$getResponseHeader(header) {
+        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getResponseHeader" />
+        /// <param name="header" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "header", type: String}
+        ]);
+        if (e) throw e;
+        throw Error.notImplemented();
+    }
+    function Sys$Net$WebRequestExecutor$getAllResponseHeaders() {
+        /// <summary locid="M:J#Sys.Net.WebRequestExecutor.getAllResponseHeaders" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        throw Error.notImplemented();
+    }
+Sys.Net.WebRequestExecutor.prototype = {
+    get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest,
+    _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest,
+    get_started: Sys$Net$WebRequestExecutor$get_started,
+    get_responseAvailable: Sys$Net$WebRequestExecutor$get_responseAvailable,
+    get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut,
+    get_aborted: Sys$Net$WebRequestExecutor$get_aborted,
+    get_responseData: Sys$Net$WebRequestExecutor$get_responseData,
+    get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode,
+    get_statusText: Sys$Net$WebRequestExecutor$get_statusText,
+    get_xml: Sys$Net$WebRequestExecutor$get_xml,
+    get_object: Sys$Net$WebRequestExecutor$get_object,
+    executeRequest: Sys$Net$WebRequestExecutor$executeRequest,
+    abort: Sys$Net$WebRequestExecutor$abort,
+    getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader,
+    getAllResponseHeaders: Sys$Net$WebRequestExecutor$getAllResponseHeaders
+}
+Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor');
+ 
+Sys.Net.XMLDOM = function Sys$Net$XMLDOM(markup) {
+    if (!window.DOMParser) {
+        var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
+        for (var i = 0, l = progIDs.length; i < l; i++) {
+            try {
+                var xmlDOM = new ActiveXObject(progIDs[i]);
+                xmlDOM.async = false;
+                xmlDOM.loadXML(markup);
+                xmlDOM.setProperty('SelectionLanguage', 'XPath');
+                return xmlDOM;
+            }
+            catch (ex) {
+            }
+        }
+    }
+    else {
+        try {
+            var domParser = new window.DOMParser();
+            return domParser.parseFromString(markup, 'text/xml');
+        }
+        catch (ex) {
+        }
+    }
+    return null;
+}
+Sys.Net.XMLHttpExecutor = function Sys$Net$XMLHttpExecutor() {
+    /// <summary locid="M:J#Sys.Net.XMLHttpExecutor.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    Sys.Net.XMLHttpExecutor.initializeBase(this);
+    var _this = this;
+    this._xmlHttpRequest = null;
+    this._webRequest = null;
+    this._responseAvailable = false;
+    this._timedOut = false;
+    this._timer = null;
+    this._aborted = false;
+    this._started = false;
+    this._onReadyStateChange = function this$_onReadyStateChange() {
+        
+        if (_this._xmlHttpRequest.readyState === 4 ) {
+            try {
+                if (typeof(_this._xmlHttpRequest.status) === "undefined") {
+                    return;
+                }
+            }
+            catch(ex) {
+                return;
+            }
+            
+            _this._clearTimer();
+            _this._responseAvailable = true;
+            _this._webRequest.completed(Sys.EventArgs.Empty);
+            if (_this._xmlHttpRequest != null) {
+                _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
+                _this._xmlHttpRequest = null;
+            }
+        }
+    }
+    this._clearTimer = function this$_clearTimer() {
+        if (_this._timer != null) {
+            window.clearTimeout(_this._timer);
+            _this._timer = null;
+        }
+    }
+    this._onTimeout = function this$_onTimeout() {
+        if (!_this._responseAvailable) {
+            _this._clearTimer();
+            _this._timedOut = true;
+            _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
+            _this._xmlHttpRequest.abort();
+            _this._webRequest.completed(Sys.EventArgs.Empty);
+            _this._xmlHttpRequest = null;
+        }
+    }
+}
+    function Sys$Net$XMLHttpExecutor$get_timedOut() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.timedOut"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timedOut;
+    }
+    function Sys$Net$XMLHttpExecutor$get_started() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.started"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._started;
+    }
+    function Sys$Net$XMLHttpExecutor$get_responseAvailable() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.responseAvailable"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._responseAvailable;
+    }
+    function Sys$Net$XMLHttpExecutor$get_aborted() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.XMLHttpExecutor.aborted"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._aborted;
+    }
+    function Sys$Net$XMLHttpExecutor$executeRequest() {
+        /// <summary locid="M:J#this._onTimeout" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        this._webRequest = this.get_webRequest();
+        if (this._started) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest'));
+        }
+        if (this._webRequest === null) {
+            throw Error.invalidOperation(Sys.Res.nullWebRequest);
+        }
+        var body = this._webRequest.get_body();
+        var headers = this._webRequest.get_headers();
+        this._xmlHttpRequest = new XMLHttpRequest();
+        this._xmlHttpRequest.onreadystatechange = this._onReadyStateChange;
+        var verb = this._webRequest.get_httpVerb();
+        this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true );
+        if (headers) {
+            for (var header in headers) {
+                var val = headers[header];
+                if (typeof(val) !== "function")
+                    this._xmlHttpRequest.setRequestHeader(header, val);
+            }
+        }
+        if (verb.toLowerCase() === "post") {
+            if ((headers === null) || !headers['Content-Type']) {
+                this._xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
+            }
+            if (!body) {
+                body = "";
+            }
+        }
+        var timeout = this._webRequest.get_timeout();
+        if (timeout > 0) {
+            this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout);
+        }
+        this._xmlHttpRequest.send(body);
+        this._started = true;
+    }
+    function Sys$Net$XMLHttpExecutor$getResponseHeader(header) {
+        /// <summary locid="M:J#this._onTimeout" />
+        /// <param name="header" type="String"></param>
+        /// <returns type="String"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "header", type: String}
+        ]);
+        if (e) throw e;
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader'));
+        }
+        var result;
+        try {
+            result = this._xmlHttpRequest.getResponseHeader(header);
+        } catch (e) {
+        }
+        if (!result) result = "";
+        return result;
+    }
+    function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() {
+        /// <summary locid="M:J#this._onTimeout" />
+        /// <returns type="String"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders'));
+        }
+        return this._xmlHttpRequest.getAllResponseHeaders();
+    }
+    function Sys$Net$XMLHttpExecutor$get_responseData() {
+        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.responseData"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
+        }
+        return this._xmlHttpRequest.responseText;
+    }
+    function Sys$Net$XMLHttpExecutor$get_statusCode() {
+        /// <value type="Number" locid="P:J#Sys.Net.XMLHttpExecutor.statusCode"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode'));
+        }
+        var result = 0;
+        try {
+            result = this._xmlHttpRequest.status;
+        }
+        catch(ex) {
+        }
+        return result;
+    }
+    function Sys$Net$XMLHttpExecutor$get_statusText() {
+        /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.statusText"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText'));
+        }
+        return this._xmlHttpRequest.statusText;
+    }
+    function Sys$Net$XMLHttpExecutor$get_xml() {
+        /// <value locid="P:J#Sys.Net.XMLHttpExecutor.xml"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._responseAvailable) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml'));
+        }
+        if (!this._xmlHttpRequest) {
+            throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml'));
+        }
+        var xml = this._xmlHttpRequest.responseXML;
+        if (!xml || !xml.documentElement) {
+            xml = Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);
+            if (!xml || !xml.documentElement)
+                return null;
+        }
+        else if (navigator.userAgent.indexOf('MSIE') !== -1) {
+            xml.setProperty('SelectionLanguage', 'XPath');
+        }
+        if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
+            xml.documentElement.tagName === "parsererror") {
+            return null;
+        }
+        
+        if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") {
+            return null;
+        }
+        
+        return xml;
+    }
+    function Sys$Net$XMLHttpExecutor$abort() {
+        /// <summary locid="M:J#this._onTimeout" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._started) {
+            throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
+        }
+        if (this._aborted || this._responseAvailable || this._timedOut)
+            return;
+        this._aborted = true;
+        this._clearTimer();
+        if (this._xmlHttpRequest && !this._responseAvailable) {
+            this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
+            this._xmlHttpRequest.abort();
+            
+            this._xmlHttpRequest = null;            
+            this._webRequest.completed(Sys.EventArgs.Empty);
+        }
+    }
+Sys.Net.XMLHttpExecutor.prototype = {
+    get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut,
+    get_started: Sys$Net$XMLHttpExecutor$get_started,
+    get_responseAvailable: Sys$Net$XMLHttpExecutor$get_responseAvailable,
+    get_aborted: Sys$Net$XMLHttpExecutor$get_aborted,
+    executeRequest: Sys$Net$XMLHttpExecutor$executeRequest,
+    getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader,
+    getAllResponseHeaders: Sys$Net$XMLHttpExecutor$getAllResponseHeaders,
+    get_responseData: Sys$Net$XMLHttpExecutor$get_responseData,
+    get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode,
+    get_statusText: Sys$Net$XMLHttpExecutor$get_statusText,
+    get_xml: Sys$Net$XMLHttpExecutor$get_xml,
+    abort: Sys$Net$XMLHttpExecutor$abort
+}
+Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor);
+ 
+Sys.Net._WebRequestManager = function Sys$Net$_WebRequestManager() {
+    this._this = this;
+    this._defaultTimeout = 0;
+    this._defaultExecutorType = "Sys.Net.XMLHttpExecutor";
+}
+    function Sys$Net$_WebRequestManager$add_invokingRequest(handler) {
+        /// <summary locid="E:J#Sys.Net._WebRequestManager.invokingRequest" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().addHandler("invokingRequest", handler);
+    }
+    function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().removeHandler("invokingRequest", handler);
+    }
+    function Sys$Net$_WebRequestManager$add_completedRequest(handler) {
+        /// <summary locid="E:J#Sys.Net._WebRequestManager.completedRequest" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().addHandler("completedRequest", handler);
+    }
+    function Sys$Net$_WebRequestManager$remove_completedRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().removeHandler("completedRequest", handler);
+    }
+    function Sys$Net$_WebRequestManager$_get_eventHandlerList() {
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+    function Sys$Net$_WebRequestManager$get_defaultTimeout() {
+        /// <value type="Number" locid="P:J#Sys.Net._WebRequestManager.defaultTimeout"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultTimeout;
+    }
+    function Sys$Net$_WebRequestManager$set_defaultTimeout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+        if (value < 0) {
+            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
+        }
+        this._defaultTimeout = value;
+    }
+    function Sys$Net$_WebRequestManager$get_defaultExecutorType() {
+        /// <value type="String" locid="P:J#Sys.Net._WebRequestManager.defaultExecutorType"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultExecutorType;
+    }
+    function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        this._defaultExecutorType = value;
+    }
+    function Sys$Net$_WebRequestManager$executeRequest(webRequest) {
+        /// <summary locid="M:J#Sys.Net._WebRequestManager.executeRequest" />
+        /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "webRequest", type: Sys.Net.WebRequest}
+        ]);
+        if (e) throw e;
+        var executor = webRequest.get_executor();
+        if (!executor) {
+            var failed = false;
+            try {
+                var executorType = eval(this._defaultExecutorType);
+                executor = new executorType();
+            } catch (e) {
+                failed = true;
+            }
+            if (failed  || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) {
+                throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType));
+            }
+            webRequest.set_executor(executor);
+        }
+        if (executor.get_aborted()) {
+            return;
+        }
+        var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest);
+        var handler = this._get_eventHandlerList().getHandler("invokingRequest");
+        if (handler) {
+            handler(this, evArgs);
+        }
+        if (!evArgs.get_cancel()) {
+            executor.executeRequest();
+        }
+    }
+Sys.Net._WebRequestManager.prototype = {
+    add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest,
+    remove_invokingRequest: Sys$Net$_WebRequestManager$remove_invokingRequest,
+    add_completedRequest: Sys$Net$_WebRequestManager$add_completedRequest,
+    remove_completedRequest: Sys$Net$_WebRequestManager$remove_completedRequest,
+    _get_eventHandlerList: Sys$Net$_WebRequestManager$_get_eventHandlerList,
+    get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout,
+    set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout,
+    get_defaultExecutorType: Sys$Net$_WebRequestManager$get_defaultExecutorType,
+    set_defaultExecutorType: Sys$Net$_WebRequestManager$set_defaultExecutorType,
+    executeRequest: Sys$Net$_WebRequestManager$executeRequest
+}
+Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager');
+Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager();
+ 
+Sys.Net.NetworkRequestEventArgs = function Sys$Net$NetworkRequestEventArgs(webRequest) {
+    /// <summary locid="M:J#Sys.Net.NetworkRequestEventArgs.#ctor" />
+    /// <param name="webRequest" type="Sys.Net.WebRequest"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "webRequest", type: Sys.Net.WebRequest}
+    ]);
+    if (e) throw e;
+    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
+    this._webRequest = webRequest;
+}
+    function Sys$Net$NetworkRequestEventArgs$get_webRequest() {
+        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.Net.NetworkRequestEventArgs.webRequest"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._webRequest;
+    }
+Sys.Net.NetworkRequestEventArgs.prototype = {
+    get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest
+}
+Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs);
+ 
+Sys.Net.WebRequest = function Sys$Net$WebRequest() {
+    /// <summary locid="M:J#Sys.Net.WebRequest.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    this._url = "";
+    this._headers = { };
+    this._body = null;
+    this._userContext = null;
+    this._httpVerb = null;
+    this._executor = null;
+    this._invokeCalled = false;
+    this._timeout = 0;
+}
+    function Sys$Net$WebRequest$add_completed(handler) {
+    /// <summary locid="E:J#Sys.Net.WebRequest.completed" />
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+        this._get_eventHandlerList().addHandler("completed", handler);
+    }
+    function Sys$Net$WebRequest$remove_completed(handler) {
+    var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+    if (e) throw e;
+        this._get_eventHandlerList().removeHandler("completed", handler);
+    }
+    function Sys$Net$WebRequest$completed(eventArgs) {
+        /// <summary locid="M:J#Sys.Net.WebRequest.completed" />
+        /// <param name="eventArgs" type="Sys.EventArgs"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "eventArgs", type: Sys.EventArgs}
+        ]);
+        if (e) throw e;
+        var handler = Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");
+        if (handler) {
+            handler(this._executor, eventArgs);
+        }
+        handler = this._get_eventHandlerList().getHandler("completed");
+        if (handler) {
+            handler(this._executor, eventArgs);
+        }
+    }
+    function Sys$Net$WebRequest$_get_eventHandlerList() {
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+    function Sys$Net$WebRequest$get_url() {
+        /// <value type="String" locid="P:J#Sys.Net.WebRequest.url"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._url;
+    }
+    function Sys$Net$WebRequest$set_url(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        this._url = value;
+    }
+    function Sys$Net$WebRequest$get_headers() {
+        /// <value locid="P:J#Sys.Net.WebRequest.headers"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._headers;
+    }
+    function Sys$Net$WebRequest$get_httpVerb() {
+        /// <value type="String" locid="P:J#Sys.Net.WebRequest.httpVerb"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._httpVerb === null) {
+            if (this._body === null) {
+                return "GET";
+            }
+            return "POST";
+        }
+        return this._httpVerb;
+    }
+    function Sys$Net$WebRequest$set_httpVerb(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        if (value.length === 0) {
+            throw Error.argument('value', Sys.Res.invalidHttpVerb);
+        }
+        this._httpVerb = value;
+    }
+    function Sys$Net$WebRequest$get_body() {
+        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.body"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._body;
+    }
+    function Sys$Net$WebRequest$set_body(value) {
+        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
+        if (e) throw e;
+        this._body = value;
+    }
+    function Sys$Net$WebRequest$get_userContext() {
+        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebRequest.userContext"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._userContext;
+    }
+    function Sys$Net$WebRequest$set_userContext(value) {
+        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
+        if (e) throw e;
+        this._userContext = value;
+    }
+    function Sys$Net$WebRequest$get_executor() {
+        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.Net.WebRequest.executor"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._executor;
+    }
+    function Sys$Net$WebRequest$set_executor(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]);
+        if (e) throw e;
+        if (this._executor !== null && this._executor.get_started()) {
+            throw Error.invalidOperation(Sys.Res.setExecutorAfterActive);
+        }
+        this._executor = value;
+        this._executor._set_webRequest(this);
+    }
+    function Sys$Net$WebRequest$get_timeout() {
+        /// <value type="Number" locid="P:J#Sys.Net.WebRequest.timeout"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._timeout === 0) {
+            return Sys.Net.WebRequestManager.get_defaultTimeout();
+        }
+        return this._timeout;
+    }
+    function Sys$Net$WebRequest$set_timeout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+        if (value < 0) {
+            throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout);
+        }
+        this._timeout = value;
+    }
+    function Sys$Net$WebRequest$getResolvedUrl() {
+        /// <summary locid="M:J#Sys.Net.WebRequest.getResolvedUrl" />
+        /// <returns type="String"></returns>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return Sys.Net.WebRequest._resolveUrl(this._url);
+    }
+    function Sys$Net$WebRequest$invoke() {
+        /// <summary locid="M:J#Sys.Net.WebRequest.invoke" />
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._invokeCalled) {
+            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
+        }
+        Sys.Net.WebRequestManager.executeRequest(this);
+        this._invokeCalled = true;
+    }
+Sys.Net.WebRequest.prototype = {
+    add_completed: Sys$Net$WebRequest$add_completed,
+    remove_completed: Sys$Net$WebRequest$remove_completed,
+    completed: Sys$Net$WebRequest$completed,
+    _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList,
+    get_url: Sys$Net$WebRequest$get_url,
+    set_url: Sys$Net$WebRequest$set_url,
+    get_headers: Sys$Net$WebRequest$get_headers,
+    get_httpVerb: Sys$Net$WebRequest$get_httpVerb,
+    set_httpVerb: Sys$Net$WebRequest$set_httpVerb,
+    get_body: Sys$Net$WebRequest$get_body,
+    set_body: Sys$Net$WebRequest$set_body,
+    get_userContext: Sys$Net$WebRequest$get_userContext,
+    set_userContext: Sys$Net$WebRequest$set_userContext,
+    get_executor: Sys$Net$WebRequest$get_executor,
+    set_executor: Sys$Net$WebRequest$set_executor,
+    get_timeout: Sys$Net$WebRequest$get_timeout,
+    set_timeout: Sys$Net$WebRequest$set_timeout,
+    getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl,
+    invoke: Sys$Net$WebRequest$invoke
+}
+Sys.Net.WebRequest._resolveUrl = function Sys$Net$WebRequest$_resolveUrl(url, baseUrl) {
+    if (url && url.indexOf('://') !== -1) {
+        return url;
+    }
+    if (!baseUrl || baseUrl.length === 0) {
+        var baseElement = document.getElementsByTagName('base')[0];
+        if (baseElement && baseElement.href && baseElement.href.length > 0) {
+            baseUrl = baseElement.href;
+        }
+        else {
+            baseUrl = document.URL;
+        }
+    }
+    var qsStart = baseUrl.indexOf('?');
+    if (qsStart !== -1) {
+        baseUrl = baseUrl.substr(0, qsStart);
+    }
+    baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);
+    if (!url || url.length === 0) {
+        return baseUrl;
+    }
+    if (url.charAt(0) === '/') {
+        var slashslash = baseUrl.indexOf('://');
+        if (slashslash === -1) {
+            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
+        }
+        var nextSlash = baseUrl.indexOf('/', slashslash + 3);
+        if (nextSlash === -1) {
+            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
+        }
+        return baseUrl.substr(0, nextSlash) + url;
+    }
+    else {
+        var lastSlash = baseUrl.lastIndexOf('/');
+        if (lastSlash === -1) {
+            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
+        }
+        return baseUrl.substr(0, lastSlash+1) + url;
+    }
+}
+Sys.Net.WebRequest._createQueryString = function Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod) {
+    if (!encodeMethod)
+        encodeMethod = encodeURIComponent;
+    var sb = new Sys.StringBuilder();
+    var i = 0;
+    for (var arg in queryString) {
+        var obj = queryString[arg];
+        if (typeof(obj) === "function") continue;
+        var val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
+        if (i !== 0) {
+            sb.append('&');
+        }
+        sb.append(arg);
+        sb.append('=');
+        sb.append(encodeMethod(val));
+        i++;
+    }
+    return sb.toString();
+}
+Sys.Net.WebRequest._createUrl = function Sys$Net$WebRequest$_createUrl(url, queryString) {
+    if (!queryString) {
+        return url;
+    }
+    var qs = Sys.Net.WebRequest._createQueryString(queryString);
+    if (qs.length > 0) {
+        var sep = '?';
+        if (url && url.indexOf('?') !== -1)
+            sep = '&';
+        return url + sep + qs;
+    } else {
+        return url;
+    }
+}
+Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');
+ 
+Sys.Net.WebServiceProxy = function Sys$Net$WebServiceProxy() {
+}
+    function Sys$Net$WebServiceProxy$get_timeout() {
+        /// <value type="Number" locid="P:J#Sys.Net.WebServiceProxy.timeout"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timeout;
+    }
+    function Sys$Net$WebServiceProxy$set_timeout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+        if (value < 0) { throw Error.argumentOutOfRange('value', value, Sys.Res.invalidTimeout); }
+        this._timeout = value;
+    }
+    function Sys$Net$WebServiceProxy$get_defaultUserContext() {
+        /// <value mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultUserContext"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._userContext;
+    }
+    function Sys$Net$WebServiceProxy$set_defaultUserContext(value) {
+        var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]);
+        if (e) throw e;
+        this._userContext = value;
+    }
+    function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() {
+        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultSucceededCallback"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._succeeded;
+    }
+    function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+        this._succeeded = value;
+    }
+    function Sys$Net$WebServiceProxy$get_defaultFailedCallback() {
+        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Net.WebServiceProxy.defaultFailedCallback"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._failed;
+    }
+    function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+        this._failed = value;
+    }
+    function Sys$Net$WebServiceProxy$get_path() {
+        /// <value type="String" locid="P:J#Sys.Net.WebServiceProxy.path"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._path;
+    }
+    function Sys$Net$WebServiceProxy$set_path(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        this._path = value;
+    }
+    function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) {
+        /// <summary locid="M:J#Sys.Net.WebServiceProxy._invoke" />
+        /// <param name="servicePath" type="String"></param>
+        /// <param name="methodName" type="String"></param>
+        /// <param name="useGet" type="Boolean"></param>
+        /// <param name="params"></param>
+        /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
+        /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
+        /// <param name="userContext" mayBeNull="true" optional="true"></param>
+        /// <returns type="Sys.Net.WebRequest"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "servicePath", type: String},
+            {name: "methodName", type: String},
+            {name: "useGet", type: Boolean},
+            {name: "params"},
+            {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
+            {name: "onFailure", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        if (onSuccess === null || typeof onSuccess === 'undefined') onSuccess = this.get_defaultSucceededCallback();
+        if (onFailure === null || typeof onFailure === 'undefined') onFailure = this.get_defaultFailedCallback();
+        if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext();
+        
+        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout());
+    }
+Sys.Net.WebServiceProxy.prototype = {
+    get_timeout: Sys$Net$WebServiceProxy$get_timeout,
+    set_timeout: Sys$Net$WebServiceProxy$set_timeout,
+    get_defaultUserContext: Sys$Net$WebServiceProxy$get_defaultUserContext,
+    set_defaultUserContext: Sys$Net$WebServiceProxy$set_defaultUserContext,
+    get_defaultSucceededCallback: Sys$Net$WebServiceProxy$get_defaultSucceededCallback,
+    set_defaultSucceededCallback: Sys$Net$WebServiceProxy$set_defaultSucceededCallback,
+    get_defaultFailedCallback: Sys$Net$WebServiceProxy$get_defaultFailedCallback,
+    set_defaultFailedCallback: Sys$Net$WebServiceProxy$set_defaultFailedCallback,
+    get_path: Sys$Net$WebServiceProxy$get_path,
+    set_path: Sys$Net$WebServiceProxy$set_path,
+    _invoke: Sys$Net$WebServiceProxy$_invoke
+}
+Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy');
+Sys.Net.WebServiceProxy.invoke = function Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout) {
+    /// <summary locid="M:J#Sys.Net.WebServiceProxy.invoke" />
+    /// <param name="servicePath" type="String"></param>
+    /// <param name="methodName" type="String"></param>
+    /// <param name="useGet" type="Boolean" optional="true"></param>
+    /// <param name="params" mayBeNull="true" optional="true"></param>
+    /// <param name="onSuccess" type="Function" mayBeNull="true" optional="true"></param>
+    /// <param name="onFailure" type="Function" mayBeNull="true" optional="true"></param>
+    /// <param name="userContext" mayBeNull="true" optional="true"></param>
+    /// <param name="timeout" type="Number" optional="true"></param>
+    /// <returns type="Sys.Net.WebRequest"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "servicePath", type: String},
+        {name: "methodName", type: String},
+        {name: "useGet", type: Boolean, optional: true},
+        {name: "params", mayBeNull: true, optional: true},
+        {name: "onSuccess", type: Function, mayBeNull: true, optional: true},
+        {name: "onFailure", type: Function, mayBeNull: true, optional: true},
+        {name: "userContext", mayBeNull: true, optional: true},
+        {name: "timeout", type: Number, optional: true}
+    ]);
+    if (e) throw e;
+    var request = new Sys.Net.WebRequest();
+    request.get_headers()['Content-Type'] = 'application/json; charset=utf-8';
+    if (!params) params = {};
+    var urlParams = params;
+    if (!useGet || !urlParams) urlParams = {};
+    request.set_url(Sys.Net.WebRequest._createUrl(servicePath+"/"+encodeURIComponent(methodName), urlParams));
+    var body = null;
+    if (!useGet) {
+        body = Sys.Serialization.JavaScriptSerializer.serialize(params);
+        if (body === "{}") body = "";
+    }
+    request.set_body(body);
+    request.add_completed(onComplete);
+    if (timeout && timeout > 0) request.set_timeout(timeout);
+    request.invoke();
+    function onComplete(response, eventArgs) {
+        if (response.get_responseAvailable()) {
+            var statusCode = response.get_statusCode();
+            var result = null;
+           
+            try {
+                var contentType = response.getResponseHeader("Content-Type");
+                if (contentType.startsWith("application/json")) {
+                    result = response.get_object();
+                }
+                else if (contentType.startsWith("text/xml")) {
+                    result = response.get_xml();
+                }
+                else {
+                    result = response.get_responseData();
+                }
+            } catch (ex) {
+            }
+            var error = response.getResponseHeader("jsonerror");
+            var errorObj = (error === "true");
+            if (errorObj) {
+                if (result) {
+                    result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType);
+                }
+            }
+            else if (contentType.startsWith("application/json")) {
+                if (!result || typeof(result.d) === "undefined") {
+                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceInvalidJsonWrapper, methodName));
+                }
+                result = result.d;
+            }
+            if (((statusCode < 200) || (statusCode >= 300)) || errorObj) {
+                if (onFailure) {
+                    if (!result || !errorObj) {
+                        result = new Sys.Net.WebServiceError(false , String.format(Sys.Res.webServiceFailedNoMsg, methodName), "", "");
+                    }
+                    result._statusCode = statusCode;
+                    onFailure(result, userContext, methodName);
+                }
+                else {
+                    var error;
+                    if (result && errorObj) {
+                        error = result.get_exceptionType() + "-- " + result.get_message();
+                    }
+                    else {
+                        error = response.get_responseData();
+                    }
+                    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
+                }
+            }
+            else if (onSuccess) {
+                onSuccess(result, userContext, methodName);
+            }
+        }
+        else {
+            var msg;
+            if (response.get_timedOut()) {
+                msg = String.format(Sys.Res.webServiceTimedOut, methodName);
+            }
+            else {
+                msg = String.format(Sys.Res.webServiceFailedNoMsg, methodName)
+            }
+            if (onFailure) {
+                onFailure(new Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), userContext, methodName);
+            }
+            else {
+                throw Sys.Net.WebServiceProxy._createFailedError(methodName, msg);
+            }
+        }
+    }
+    return request;
+}
+Sys.Net.WebServiceProxy._createFailedError = function Sys$Net$WebServiceProxy$_createFailedError(methodName, errorMessage) {
+    var displayMessage = "Sys.Net.WebServiceFailedException: " + errorMessage;
+    var e = Error.create(displayMessage, { 'name': 'Sys.Net.WebServiceFailedException', 'methodName': methodName });
+    e.popStackFrame();
+    return e;
+}
+Sys.Net.WebServiceProxy._defaultFailedCallback = function Sys$Net$WebServiceProxy$_defaultFailedCallback(err, methodName) {
+    var error = err.get_exceptionType() + "-- " + err.get_message();
+    throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
+}
+Sys.Net.WebServiceProxy._generateTypedConstructor = function Sys$Net$WebServiceProxy$_generateTypedConstructor(type) {
+    return function(properties) {
+        if (properties) {
+            for (var name in properties) {
+                this[name] = properties[name];
+            }
+        }
+        this.__type = type;
+    }
+}
+ 
+Sys.Net.WebServiceError = function Sys$Net$WebServiceError(timedOut, message, stackTrace, exceptionType) {
+    /// <summary locid="M:J#Sys.Net.WebServiceError.#ctor" />
+    /// <param name="timedOut" type="Boolean"></param>
+    /// <param name="message" type="String" mayBeNull="true"></param>
+    /// <param name="stackTrace" type="String" mayBeNull="true"></param>
+    /// <param name="exceptionType" type="String" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "timedOut", type: Boolean},
+        {name: "message", type: String, mayBeNull: true},
+        {name: "stackTrace", type: String, mayBeNull: true},
+        {name: "exceptionType", type: String, mayBeNull: true}
+    ]);
+    if (e) throw e;
+    this._timedOut = timedOut;
+    this._message = message;
+    this._stackTrace = stackTrace;
+    this._exceptionType = exceptionType;
+    this._statusCode = -1;
+}
+    function Sys$Net$WebServiceError$get_timedOut() {
+        /// <value type="Boolean" locid="P:J#Sys.Net.WebServiceError.timedOut"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._timedOut;
+    }
+    function Sys$Net$WebServiceError$get_statusCode() {
+        /// <value type="Number" locid="P:J#Sys.Net.WebServiceError.statusCode"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._statusCode;
+    }
+    function Sys$Net$WebServiceError$get_message() {
+        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.message"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._message;
+    }
+    function Sys$Net$WebServiceError$get_stackTrace() {
+        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.stackTrace"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._stackTrace;
+    }
+    function Sys$Net$WebServiceError$get_exceptionType() {
+        /// <value type="String" locid="P:J#Sys.Net.WebServiceError.exceptionType"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._exceptionType;
+    }
+Sys.Net.WebServiceError.prototype = {
+    get_timedOut: Sys$Net$WebServiceError$get_timedOut,
+    get_statusCode: Sys$Net$WebServiceError$get_statusCode,
+    get_message: Sys$Net$WebServiceError$get_message,
+    get_stackTrace: Sys$Net$WebServiceError$get_stackTrace,
+    get_exceptionType: Sys$Net$WebServiceError$get_exceptionType
+}
+Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError');
+Type.registerNamespace('Sys.Services');
+Sys.Services._ProfileService = function Sys$Services$_ProfileService() {
+    Sys.Services._ProfileService.initializeBase(this);
+    this.properties = {};
+}
+Sys.Services._ProfileService.DefaultWebServicePath = '';
+    function Sys$Services$_ProfileService$get_defaultLoadCompletedCallback() {
+        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._ProfileService.defaultLoadCompletedCallback"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultLoadCompletedCallback;
+    }
+    function Sys$Services$_ProfileService$set_defaultLoadCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+        this._defaultLoadCompletedCallback = value;
+    }
+    function Sys$Services$_ProfileService$get_defaultSaveCompletedCallback() {
+        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._ProfileService.defaultSaveCompletedCallback"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultSaveCompletedCallback;
+    }
+    function Sys$Services$_ProfileService$set_defaultSaveCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+        this._defaultSaveCompletedCallback = value;
+    }
+    function Sys$Services$_ProfileService$get_path() {
+        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services._ProfileService.path"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._path || '';
+    }
+    function Sys$Services$_ProfileService$load(propertyNames, loadCompletedCallback, failedCallback, userContext) {
+        /// <summary locid="M:J#Sys.Services._ProfileService.load" />
+        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
+        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
+            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        var parameters;
+        var methodName;
+        if (!propertyNames) {
+            methodName = "GetAllPropertiesForCurrentUser";
+            parameters = { authenticatedUserOnly: false };
+        }
+        else {
+            methodName = "GetPropertiesForCurrentUser";
+            parameters = { properties: this._clonePropertyNames(propertyNames), authenticatedUserOnly: false };
+        }
+        this._invoke(this._get_path(),
+                                        methodName,
+                                        false,
+                                        parameters,
+                                        Function.createDelegate(this, this._onLoadComplete),
+                                        Function.createDelegate(this, this._onLoadFailed),
+                                        [loadCompletedCallback, failedCallback, userContext]);
+    }
+    function Sys$Services$_ProfileService$save(propertyNames, saveCompletedCallback, failedCallback, userContext) {
+        /// <summary locid="M:J#Sys.Services._ProfileService.save" />
+        /// <param name="propertyNames" type="Array" elementType="String" optional="true" elementMayBeNull="false" mayBeNull="true"></param>
+        /// <param name="saveCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "propertyNames", type: Array, mayBeNull: true, optional: true, elementType: String},
+            {name: "saveCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        var flattenedProperties = this._flattenProperties(propertyNames, this.properties);
+        this._invoke(this._get_path(),
+                                        "SetPropertiesForCurrentUser",
+                                        false,
+                                        { values: flattenedProperties.value, authenticatedUserOnly: false },
+                                        Function.createDelegate(this, this._onSaveComplete),
+                                        Function.createDelegate(this, this._onSaveFailed),
+                                        [saveCompletedCallback, failedCallback, userContext, flattenedProperties.count]);
+    }
+    function Sys$Services$_ProfileService$_clonePropertyNames(arr) {
+        var nodups = [];
+        var seen = {};
+        for (var i=0; i < arr.length; i++) {
+            var prop = arr[i];
+            if(!seen[prop]) { Array.add(nodups, prop); seen[prop]=true; };
+        }
+        return nodups;
+    }
+    function Sys$Services$_ProfileService$_flattenProperties(propertyNames, properties, groupName) {
+        var flattenedProperties = {};
+        var val;
+        var key;
+        var count = 0;
+        if (propertyNames && propertyNames.length === 0) {
+            return { value: flattenedProperties, count: 0 };
+        }
+        for (var property in properties) {
+            val = properties[property];
+            key = groupName ? groupName + "." + property : property;
+            if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
+                var obj = this._flattenProperties(propertyNames, val, key);
+                var groupProperties = obj.value;
+                count += obj.count; 
+                for(var subKey in groupProperties) {
+                    var subVal = groupProperties[subKey];
+                    flattenedProperties[subKey] = subVal;
+                }
+            }
+            else {
+                if(!propertyNames || Array.indexOf(propertyNames, key) !== -1) {
+                    flattenedProperties[key] = val;
+                    count++; 
+                }
+            }
+        }
+        return { value: flattenedProperties, count: count };
+    }
+    function Sys$Services$_ProfileService$_get_path() {
+        var path = this.get_path();
+        if (!path.length) {
+            path = Sys.Services._ProfileService.DefaultWebServicePath;
+        }
+        if (!path || !path.length) {
+            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
+        }
+        return path;
+    }
+    function Sys$Services$_ProfileService$_onLoadComplete(result, context, methodName) {
+        if (typeof(result) !== "object") {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Object"));
+        }
+        var unflattened = this._unflattenProperties(result);
+        for (var name in unflattened) {
+            this.properties[name] = unflattened[name];
+        }
+        
+        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
+        if (callback) {
+            var userContext = context[2] || this.get_defaultUserContext();        
+            callback(result.length, userContext, "Sys.Services.ProfileService.load");
+        }
+    }
+    function Sys$Services$_ProfileService$_onLoadFailed(err, context, methodName) {
+        var callback = context[1] || this.get_defaultFailedCallback();
+        if (callback) {
+            var userContext = context[2] || this.get_defaultUserContext();        
+            callback(err, userContext, "Sys.Services.ProfileService.load");
+        }
+        else {
+            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
+        }
+    }
+    function Sys$Services$_ProfileService$_onSaveComplete(result, context, methodName) {
+        var count = context[3];
+        if (result !== null) { 
+            if (result instanceof Array) {
+                count -= result.length;
+            }
+            else if (typeof(result) === 'number') {
+                count = result;
+            }
+            else {
+                throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
+            }
+        }
+        
+        var callback = context[0] || this.get_defaultSaveCompletedCallback() || this.get_defaultSucceededCallback();
+        if (callback) {
+            var userContext = context[2] || this.get_defaultUserContext();
+            callback(count, userContext, "Sys.Services.ProfileService.save");
+        }
+    }
+    function Sys$Services$_ProfileService$_onSaveFailed(err, context, methodName) {
+        var callback = context[1] || this.get_defaultFailedCallback();
+        if (callback) {
+            var userContext = context[2] || this.get_defaultUserContext();
+            callback(err, userContext, "Sys.Services.ProfileService.save");
+        }
+        else {
+            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
+        }
+    }
+    function Sys$Services$_ProfileService$_unflattenProperties(properties) {
+        var unflattenedProperties = {};
+        var dotIndex;
+        var val;
+        var count = 0;
+        for (var key in properties) {
+            count++;
+            val = properties[key];
+            dotIndex = key.indexOf('.');
+            if (dotIndex !== -1) {
+                var groupName = key.substr(0, dotIndex);
+                key = key.substr(dotIndex+1);
+                var group = unflattenedProperties[groupName];
+                if (!group || !Sys.Services.ProfileGroup.isInstanceOfType(group)) {
+                    group = new Sys.Services.ProfileGroup();
+                    unflattenedProperties[groupName] = group;
+                }
+                group[key] = val;
+            }
+            else {
+                unflattenedProperties[key] = val;
+            }
+        }
+        properties.length = count;
+        return unflattenedProperties;
+    }
+Sys.Services._ProfileService.prototype = {
+    _defaultLoadCompletedCallback: null,
+    _defaultSaveCompletedCallback: null,
+    _path: '',
+    _timeout: 0,
+    get_defaultLoadCompletedCallback: Sys$Services$_ProfileService$get_defaultLoadCompletedCallback,
+    set_defaultLoadCompletedCallback: Sys$Services$_ProfileService$set_defaultLoadCompletedCallback,
+    get_defaultSaveCompletedCallback: Sys$Services$_ProfileService$get_defaultSaveCompletedCallback,
+    set_defaultSaveCompletedCallback: Sys$Services$_ProfileService$set_defaultSaveCompletedCallback,
+    get_path: Sys$Services$_ProfileService$get_path,
+    load: Sys$Services$_ProfileService$load,
+    save: Sys$Services$_ProfileService$save,
+    _clonePropertyNames: Sys$Services$_ProfileService$_clonePropertyNames,    
+    _flattenProperties: Sys$Services$_ProfileService$_flattenProperties,
+    _get_path: Sys$Services$_ProfileService$_get_path,    
+    _onLoadComplete: Sys$Services$_ProfileService$_onLoadComplete,
+    _onLoadFailed: Sys$Services$_ProfileService$_onLoadFailed,
+    _onSaveComplete: Sys$Services$_ProfileService$_onSaveComplete,
+    _onSaveFailed: Sys$Services$_ProfileService$_onSaveFailed,
+    _unflattenProperties: Sys$Services$_ProfileService$_unflattenProperties
+}
+Sys.Services._ProfileService.registerClass('Sys.Services._ProfileService', Sys.Net.WebServiceProxy);
+Sys.Services.ProfileService = new Sys.Services._ProfileService();
+Sys.Services.ProfileGroup = function Sys$Services$ProfileGroup(properties) {
+    /// <summary locid="M:J#Sys.Services.ProfileGroup.#ctor" />
+    /// <param name="properties" optional="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "properties", mayBeNull: true, optional: true}
+    ]);
+    if (e) throw e;
+    if (properties) {
+        for (var property in properties) {
+            this[property] = properties[property];
+        }
+    }
+}
+Sys.Services.ProfileGroup.registerClass('Sys.Services.ProfileGroup');
+Sys.Services._AuthenticationService = function Sys$Services$_AuthenticationService() {
+    /// <summary locid="M:J#Sys.Services._AuthenticationService.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+    Sys.Services._AuthenticationService.initializeBase(this);
+}
+Sys.Services._AuthenticationService.DefaultWebServicePath = '';
+    function Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback() {
+        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._AuthenticationService.defaultLoginCompletedCallback"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultLoginCompletedCallback;
+    }
+    function Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+        this._defaultLoginCompletedCallback = value;
+    }
+    function Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback() {
+        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._AuthenticationService.defaultLogoutCompletedCallback"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultLogoutCompletedCallback;
+    }
+    function Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+        this._defaultLogoutCompletedCallback = value;
+    }
+    function Sys$Services$_AuthenticationService$get_isLoggedIn() {
+        /// <value type="Boolean" locid="P:J#Sys.Services._AuthenticationService.isLoggedIn"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._authenticated;
+    }
+    function Sys$Services$_AuthenticationService$get_path() {
+        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services._AuthenticationService.path"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._path || '';
+    }
+    function Sys$Services$_AuthenticationService$login(username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext) {
+        /// <summary locid="M:J#Sys.Services._AuthenticationService.login" />
+        /// <param name="username" type="String" mayBeNull="false"></param>
+        /// <param name="password" type="String" mayBeNull="true"></param>
+        /// <param name="isPersistent" type="Boolean" optional="true" mayBeNull="true"></param>
+        /// <param name="customInfo" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="loginCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "username", type: String},
+            {name: "password", type: String, mayBeNull: true},
+            {name: "isPersistent", type: Boolean, mayBeNull: true, optional: true},
+            {name: "customInfo", type: String, mayBeNull: true, optional: true},
+            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
+            {name: "loginCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        this._invoke(this._get_path(), "Login", false,
+                                        { userName: username, password: password, createPersistentCookie: isPersistent },
+                                        Function.createDelegate(this, this._onLoginComplete),
+                                        Function.createDelegate(this, this._onLoginFailed),
+                                        [username, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext]);
+    }
+    function Sys$Services$_AuthenticationService$logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext) {
+        /// <summary locid="M:J#Sys.Services._AuthenticationService.logout" />
+        /// <param name="redirectUrl" type="String" optional="true" mayBeNull="true"></param>
+        /// <param name="logoutCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "redirectUrl", type: String, mayBeNull: true, optional: true},
+            {name: "logoutCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        this._invoke(this._get_path(), "Logout", false, {}, 
+                                        Function.createDelegate(this, this._onLogoutComplete),
+                                        Function.createDelegate(this, this._onLogoutFailed),
+                                        [redirectUrl, logoutCompletedCallback, failedCallback, userContext]);
+    }
+    function Sys$Services$_AuthenticationService$_get_path() {
+        var path = this.get_path();
+        if(!path.length) {
+            path = Sys.Services._AuthenticationService.DefaultWebServicePath;
+        }
+        if(!path || !path.length) {
+            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
+        }
+        return path;
+    }
+    function Sys$Services$_AuthenticationService$_onLoginComplete(result, context, methodName) {
+        if(typeof(result) !== "boolean") {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Boolean"));
+        }
+        
+        var redirectUrl = context[4];
+        var userContext = context[7] || this.get_defaultUserContext();
+        var callback = context[5] || this.get_defaultLoginCompletedCallback() || this.get_defaultSucceededCallback();
+        
+        if(result) {
+            this._authenticated = true;
+            if (callback) {
+                callback(true, userContext, "Sys.Services.AuthenticationService.login");
+            }
+            
+            if (typeof(redirectUrl) !== "undefined" && redirectUrl !== null) {
+                window.location.href = redirectUrl;
+            }
+        }
+        else if (callback) {
+            callback(false, userContext, "Sys.Services.AuthenticationService.login");
+        }
+    }
+    function Sys$Services$_AuthenticationService$_onLoginFailed(err, context, methodName) {
+        var callback = context[6] || this.get_defaultFailedCallback();
+        if (callback) {
+            var userContext = context[7] || this.get_defaultUserContext();
+            callback(err, userContext, "Sys.Services.AuthenticationService.login");
+        }
+        else {
+            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
+        }
+    }
+    function Sys$Services$_AuthenticationService$_onLogoutComplete(result, context, methodName) {
+        if(result !== null) {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "null"));
+        }
+        
+        var redirectUrl = context[0];
+        var userContext = context[3] || this.get_defaultUserContext();
+        var callback = context[1] || this.get_defaultLogoutCompletedCallback() || this.get_defaultSucceededCallback();
+        this._authenticated = false;
+        
+        if (callback) {
+            callback(null, userContext, "Sys.Services.AuthenticationService.logout");
+        }
+        
+        if(!redirectUrl) {
+            window.location.reload();
+        }
+        else {
+            window.location.href = redirectUrl;
+        }
+    }
+    function Sys$Services$_AuthenticationService$_onLogoutFailed(err, context, methodName) {
+        var callback = context[2] || this.get_defaultFailedCallback();
+        if (callback) {
+            callback(err, context[3], "Sys.Services.AuthenticationService.logout");
+        }
+        else {
+            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
+        }
+    }
+    function Sys$Services$_AuthenticationService$_setAuthenticated(authenticated) {
+        this._authenticated = authenticated;
+    }
+Sys.Services._AuthenticationService.prototype = {
+    _defaultLoginCompletedCallback: null,
+    _defaultLogoutCompletedCallback: null,
+    _path: '',
+    _timeout: 0,
+    _authenticated: false,
+    get_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback,
+    set_defaultLoginCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback,
+    get_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback,
+    set_defaultLogoutCompletedCallback: Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback,
+    get_isLoggedIn: Sys$Services$_AuthenticationService$get_isLoggedIn,
+    get_path: Sys$Services$_AuthenticationService$get_path,  
+    login: Sys$Services$_AuthenticationService$login,
+    logout: Sys$Services$_AuthenticationService$logout,
+    _get_path: Sys$Services$_AuthenticationService$_get_path,
+    _onLoginComplete: Sys$Services$_AuthenticationService$_onLoginComplete,
+    _onLoginFailed: Sys$Services$_AuthenticationService$_onLoginFailed,
+    _onLogoutComplete: Sys$Services$_AuthenticationService$_onLogoutComplete,
+    _onLogoutFailed: Sys$Services$_AuthenticationService$_onLogoutFailed,
+    _setAuthenticated: Sys$Services$_AuthenticationService$_setAuthenticated    
+}
+Sys.Services._AuthenticationService.registerClass('Sys.Services._AuthenticationService', Sys.Net.WebServiceProxy);
+Sys.Services.AuthenticationService = new Sys.Services._AuthenticationService();
+Sys.Services._RoleService = function Sys$Services$_RoleService() {
+    Sys.Services._RoleService.initializeBase(this);
+    this._roles = [];
+}
+Sys.Services._RoleService.DefaultWebServicePath = '';
+    function Sys$Services$_RoleService$get_defaultLoadCompletedCallback() {
+        /// <value type="Function" mayBeNull="true" locid="P:J#Sys.Services._RoleService.defaultLoadCompletedCallback"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._defaultLoadCompletedCallback;
+    }
+    function Sys$Services$_RoleService$set_defaultLoadCompletedCallback(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]);
+        if (e) throw e;
+        this._defaultLoadCompletedCallback = value;
+    }
+    function Sys$Services$_RoleService$get_path() {
+        /// <value type="String" mayBeNull="true" locid="P:J#Sys.Services._RoleService.path"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._path || '';
+    }
+    function Sys$Services$_RoleService$get_roles() {
+        /// <value type="Array" elementType="String" mayBeNull="false" locid="P:J#Sys.Services._RoleService.roles"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return Array.clone(this._roles);
+    }
+    function Sys$Services$_RoleService$isUserInRole(role) {
+        /// <summary locid="M:J#Sys.Services._RoleService.isUserInRole" />
+        /// <param name="role" type="String" mayBeNull="false"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "role", type: String}
+        ]);
+        if (e) throw e;
+        var v = this._get_rolesIndex()[role.trim().toLowerCase()];
+        return !!v;
+    }
+    function Sys$Services$_RoleService$load(loadCompletedCallback, failedCallback, userContext) {
+        /// <summary locid="M:J#Sys.Services._RoleService.load" />
+        /// <param name="loadCompletedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="failedCallback" type="Function" optional="true" mayBeNull="true"></param>
+        /// <param name="userContext" optional="true" mayBeNull="true"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "loadCompletedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "failedCallback", type: Function, mayBeNull: true, optional: true},
+            {name: "userContext", mayBeNull: true, optional: true}
+        ]);
+        if (e) throw e;
+        Sys.Net.WebServiceProxy.invoke(
+                    this._get_path(),
+                    "GetRolesForCurrentUser",
+                    false,
+                    {} ,
+                    Function.createDelegate(this, this._onLoadComplete),
+                    Function.createDelegate(this, this._onLoadFailed),
+                    [loadCompletedCallback, failedCallback, userContext],
+                    this.get_timeout());
+    }
+    function Sys$Services$_RoleService$_get_path() {
+        var path = this.get_path();
+        if(!path || !path.length) {
+            path = Sys.Services._RoleService.DefaultWebServicePath;
+        }
+        if(!path || !path.length) {
+            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
+        }
+        return path;
+    }
+    function Sys$Services$_RoleService$_get_rolesIndex() {
+        if (!this._rolesIndex) {
+            var index = {};
+            for(var i=0; i < this._roles.length; i++) {
+                index[this._roles[i].toLowerCase()] = true;
+            }
+            this._rolesIndex = index;
+        }
+        return this._rolesIndex;
+    }
+    function Sys$Services$_RoleService$_onLoadComplete(result, context, methodName) {
+        if(result && !(result instanceof Array)) {
+            throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType, methodName, "Array"));
+        }
+        this._roles = result;
+        this._rolesIndex = null;
+        var callback = context[0] || this.get_defaultLoadCompletedCallback() || this.get_defaultSucceededCallback();
+        if (callback) {
+            var userContext = context[2] || this.get_defaultUserContext();
+            var clonedResult = Array.clone(result);
+            callback(clonedResult, userContext, "Sys.Services.RoleService.load");
+        }
+    }
+    function Sys$Services$_RoleService$_onLoadFailed(err, context, methodName) {
+        var callback = context[1] || this.get_defaultFailedCallback();
+        if (callback) {
+            var userContext = context[2] || this.get_defaultUserContext();
+            callback(err, userContext, "Sys.Services.RoleService.load");
+        }
+        else {
+            Sys.Net.WebServiceProxy._defaultFailedCallback(err, methodName);
+        }
+    }
+Sys.Services._RoleService.prototype = {
+    _defaultLoadCompletedCallback: null,
+    _rolesIndex: null,
+    _timeout: 0,
+    _path: '',
+    get_defaultLoadCompletedCallback: Sys$Services$_RoleService$get_defaultLoadCompletedCallback,
+    set_defaultLoadCompletedCallback: Sys$Services$_RoleService$set_defaultLoadCompletedCallback,
+    get_path: Sys$Services$_RoleService$get_path,
+    get_roles: Sys$Services$_RoleService$get_roles,
+    isUserInRole: Sys$Services$_RoleService$isUserInRole,
+    load: Sys$Services$_RoleService$load,
+    _get_path: Sys$Services$_RoleService$_get_path,  
+    _get_rolesIndex: Sys$Services$_RoleService$_get_rolesIndex,
+    _onLoadComplete: Sys$Services$_RoleService$_onLoadComplete,
+    _onLoadFailed: Sys$Services$_RoleService$_onLoadFailed
+}
+Sys.Services._RoleService.registerClass('Sys.Services._RoleService', Sys.Net.WebServiceProxy);
+Sys.Services.RoleService = new Sys.Services._RoleService();
+Type.registerNamespace('Sys.Serialization');
+Sys.Serialization.JavaScriptSerializer = function Sys$Serialization$JavaScriptSerializer() {
+    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.#ctor" />
+    if (arguments.length !== 0) throw Error.parameterCount();
+}
+Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.JavaScriptSerializer');
+Sys.Serialization.JavaScriptSerializer._serverTypeFieldName = '__type';
+Sys.Serialization.JavaScriptSerializer._stringRegEx = new RegExp('["\\b\\f\\n\\r\\t\\\\\\x00-\\x1F]', 'i');
+Sys.Serialization.JavaScriptSerializer._dateRegEx = new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"', 'g');
+Sys.Serialization.JavaScriptSerializer._jsonRegEx = new RegExp('[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]', 'g');
+Sys.Serialization.JavaScriptSerializer._jsonStringRegEx = new RegExp('"(\\\\.|[^"\\\\])*"', 'g');
+Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeBooleanWithBuilder(object, stringBuilder) {
+    stringBuilder.append(object.toString());
+}
+Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeNumberWithBuilder(object, stringBuilder) {
+    if (isFinite(object)) {
+        stringBuilder.append(String(object));
+    }
+    else {
+        throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
+    }
+}
+Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeStringWithBuilder(object, stringBuilder) {
+    stringBuilder.append('"');
+    if (Sys.Serialization.JavaScriptSerializer._stringRegEx.test(object)) {
+        var length = object.length;
+        for (i = 0; i < length; ++i) {
+            var curChar = object.charAt(i);
+            if (curChar >= ' ') {
+                if (curChar === '\\' || curChar === '"') {
+                    stringBuilder.append('\\');
+                }
+                stringBuilder.append(curChar);
+            }
+            else {
+                switch (curChar) {
+                    case '\b':
+                        stringBuilder.append('\\b');
+                        break;
+                    case '\f':
+                        stringBuilder.append('\\f');
+                        break;
+                    case '\n':
+                        stringBuilder.append('\\n');
+                        break;
+                    case '\r':
+                        stringBuilder.append('\\r');
+                        break;
+                    case '\t':
+                        stringBuilder.append('\\t');
+                        break;
+                    default:
+                        stringBuilder.append('\\u00');
+                        if (curChar.charCodeAt() < 16) stringBuilder.append('0');
+                        stringBuilder.append(curChar.charCodeAt().toString(16));
+                }
+            }
+        }
+    } else {
+        stringBuilder.append(object);
+    }
+    stringBuilder.append('"');    
+}
+Sys.Serialization.JavaScriptSerializer._serializeWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, stringBuilder, sort, prevObjects) {
+    var i;
+    switch (typeof object) {
+    case 'object':
+        if (object) {
+            if (prevObjects){
+                for( var j = 0; j < prevObjects.length; j++) {
+                    if (prevObjects[j] === object) {
+                        throw Error.invalidOperation(Sys.Res.cannotSerializeObjectWithCycle);
+                    }
+                }
+            }
+            else {
+                prevObjects = new Array();
+            }
+            try {
+                Array.add(prevObjects, object);
+                
+                if (Number.isInstanceOfType(object)){
+                    Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder);
+                }
+                else if (Boolean.isInstanceOfType(object)){
+                    Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder);
+                }
+                else if (String.isInstanceOfType(object)){
+                    Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder);
+                }
+            
+                else if (Array.isInstanceOfType(object)) {
+                    stringBuilder.append('[');
+                   
+                    for (i = 0; i < object.length; ++i) {
+                        if (i > 0) {
+                            stringBuilder.append(',');
+                        }
+                        Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], stringBuilder,false,prevObjects);
+                    }
+                    stringBuilder.append(']');
+                }
+                else {
+                    if (Date.isInstanceOfType(object)) {
+                        stringBuilder.append('"\\/Date(');
+                        stringBuilder.append(object.getTime());
+                        stringBuilder.append(')\\/"');
+                        break;
+                    }
+                    var properties = [];
+                    var propertyCount = 0;
+                    for (var name in object) {
+                        if (name.startsWith('$')) {
+                            continue;
+                        }
+                        if (name === Sys.Serialization.JavaScriptSerializer._serverTypeFieldName && propertyCount !== 0){
+                            properties[propertyCount++] = properties[0];
+                            properties[0] = name;
+                        }
+                        else{
+                            properties[propertyCount++] = name;
+                        }
+                    }
+                    if (sort) properties.sort();
+                    stringBuilder.append('{');
+                    var needComma = false;
+                     
+                    for (i=0; i<propertyCount; i++) {
+                        var value = object[properties[i]];
+                        if (typeof value !== 'undefined' && typeof value !== 'function') {
+                            if (needComma) {
+                                stringBuilder.append(',');
+                            }
+                            else {
+                                needComma = true;
+                            }
+                           
+                            Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(properties[i], stringBuilder, sort, prevObjects);
+                            stringBuilder.append(':');
+                            Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(value, stringBuilder, sort, prevObjects);
+                          
+                        }
+                    }
+                stringBuilder.append('}');
+                }
+            }
+            finally {
+                Array.removeAt(prevObjects, prevObjects.length - 1);
+            }
+        }
+        else {
+            stringBuilder.append('null');
+        }
+        break;
+    case 'number':
+        Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder);
+        break;
+    case 'string':
+        Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder);
+        break;
+    case 'boolean':
+        Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder);
+        break;
+    default:
+        stringBuilder.append('null');
+        break;
+    }
+}
+Sys.Serialization.JavaScriptSerializer.serialize = function Sys$Serialization$JavaScriptSerializer$serialize(object) {
+    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.serialize" />
+    /// <param name="object" mayBeNull="true"></param>
+    /// <returns type="String"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "object", mayBeNull: true}
+    ]);
+    if (e) throw e;
+    var stringBuilder = new Sys.StringBuilder();
+    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false);
+    return stringBuilder.toString();
+}
+Sys.Serialization.JavaScriptSerializer.deserialize = function Sys$Serialization$JavaScriptSerializer$deserialize(data, secure) {
+    /// <summary locid="M:J#Sys.Serialization.JavaScriptSerializer.deserialize" />
+    /// <param name="data" type="String"></param>
+    /// <param name="secure" type="Boolean" optional="true"></param>
+    /// <returns></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "data", type: String},
+        {name: "secure", type: Boolean, optional: true}
+    ]);
+    if (e) throw e;
+    
+    if (data.length === 0) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString);
+    try {    
+        var exp = data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx, "$1new Date($2)");
+        
+        if (secure && Sys.Serialization.JavaScriptSerializer._jsonRegEx.test(
+             exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx, ''))) throw null;
+        return eval('(' + exp + ')');
+    }
+    catch (e) {
+         throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson);
+    }
+}
+ 
+Sys.CultureInfo = function Sys$CultureInfo(name, numberFormat, dateTimeFormat) {
+    /// <summary locid="M:J#Sys.CultureInfo.#ctor" />
+    /// <param name="name" type="String"></param>
+    /// <param name="numberFormat" type="Object"></param>
+    /// <param name="dateTimeFormat" type="Object"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "name", type: String},
+        {name: "numberFormat", type: Object},
+        {name: "dateTimeFormat", type: Object}
+    ]);
+    if (e) throw e;
+    this.name = name;
+    this.numberFormat = numberFormat;
+    this.dateTimeFormat = dateTimeFormat;
+}
+    function Sys$CultureInfo$_getDateTimeFormats() {
+        if (! this._dateTimeFormats) {
+            var dtf = this.dateTimeFormat;
+            this._dateTimeFormats =
+              [ dtf.MonthDayPattern,
+                dtf.YearMonthPattern,
+                dtf.ShortDatePattern,
+                dtf.ShortTimePattern,
+                dtf.LongDatePattern,
+                dtf.LongTimePattern,
+                dtf.FullDateTimePattern,
+                dtf.RFC1123Pattern,
+                dtf.SortableDateTimePattern,
+                dtf.UniversalSortableDateTimePattern ];
+        }
+        return this._dateTimeFormats;
+    }
+    function Sys$CultureInfo$_getMonthIndex(value) {
+        if (!this._upperMonths) {
+            this._upperMonths = this._toUpperArray(this.dateTimeFormat.MonthNames);
+        }
+        return Array.indexOf(this._upperMonths, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_getAbbrMonthIndex(value) {
+        if (!this._upperAbbrMonths) {
+            this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
+        }
+        return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_getDayIndex(value) {
+        if (!this._upperDays) {
+            this._upperDays = this._toUpperArray(this.dateTimeFormat.DayNames);
+        }
+        return Array.indexOf(this._upperDays, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_getAbbrDayIndex(value) {
+        if (!this._upperAbbrDays) {
+            this._upperAbbrDays = this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);
+        }
+        return Array.indexOf(this._upperAbbrDays, this._toUpper(value));
+    }
+    function Sys$CultureInfo$_toUpperArray(arr) {
+        var result = [];
+        for (var i = 0, il = arr.length; i < il; i++) {
+            result[i] = this._toUpper(arr[i]);
+        }
+        return result;
+    }
+    function Sys$CultureInfo$_toUpper(value) {
+        return value.split("\u00A0").join(' ').toUpperCase();
+    }
+Sys.CultureInfo.prototype = {
+    _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats,
+    _getMonthIndex: Sys$CultureInfo$_getMonthIndex,
+    _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex,
+    _getDayIndex: Sys$CultureInfo$_getDayIndex,
+    _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex,
+    _toUpperArray: Sys$CultureInfo$_toUpperArray,
+    _toUpper: Sys$CultureInfo$_toUpper
+}
+Sys.CultureInfo._parse = function Sys$CultureInfo$_parse(value) {
+    var cultureInfo = Sys.Serialization.JavaScriptSerializer.deserialize(value);
+    return new Sys.CultureInfo(cultureInfo.name, cultureInfo.numberFormat, cultureInfo.dateTimeFormat);
+}
+Sys.CultureInfo.registerClass('Sys.CultureInfo');
+Sys.CultureInfo.InvariantCulture = Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');
+if (typeof(__cultureInfo) === 'undefined') {
+    var __cultureInfo = '{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';
+}
+Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo);
+delete __cultureInfo;
+ 
+Sys.UI.Behavior = function Sys$UI$Behavior(element) {
+    /// <summary locid="M:J#Sys.UI.Behavior.#ctor" />
+    /// <param name="element" domElement="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+    Sys.UI.Behavior.initializeBase(this);
+    this._element = element;
+    var behaviors = element._behaviors;
+    if (!behaviors) {
+        element._behaviors = [this];
+    }
+    else {
+        behaviors[behaviors.length] = this;
+    }
+}
+    function Sys$UI$Behavior$get_element() {
+        /// <value domElement="true" locid="P:J#Sys.UI.Behavior.element"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._element;
+    }
+    function Sys$UI$Behavior$get_id() {
+        /// <value type="String" locid="P:J#Sys.UI.Behavior.id"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id');
+        if (baseId) return baseId;
+        if (!this._element || !this._element.id) return '';
+        return this._element.id + '$' + this.get_name();
+    }
+    function Sys$UI$Behavior$get_name() {
+        /// <value type="String" locid="P:J#Sys.UI.Behavior.name"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._name) return this._name;
+        var name = Object.getTypeName(this);
+        var i = name.lastIndexOf('.');
+        if (i != -1) name = name.substr(i + 1);
+        if (!this.get_isInitialized()) this._name = name;
+        return name;
+    }
+    function Sys$UI$Behavior$set_name(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' '))
+            throw Error.argument('value', Sys.Res.invalidId);
+        if (typeof(this._element[value]) !== 'undefined')
+            throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value));
+        if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
+        this._name = value;
+    }
+    function Sys$UI$Behavior$initialize() {
+        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
+        var name = this.get_name();
+        if (name) this._element[name] = this;
+    }
+    function Sys$UI$Behavior$dispose() {
+        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
+        if (this._element) {
+            var name = this.get_name();
+            if (name) {
+                this._element[name] = null;
+            }
+            Array.remove(this._element._behaviors, this);
+            delete this._element;
+        }
+    }
+Sys.UI.Behavior.prototype = {
+    _name: null,
+    get_element: Sys$UI$Behavior$get_element,
+    get_id: Sys$UI$Behavior$get_id,
+    get_name: Sys$UI$Behavior$get_name,
+    set_name: Sys$UI$Behavior$set_name,
+    initialize: Sys$UI$Behavior$initialize,
+    dispose: Sys$UI$Behavior$dispose
+}
+Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component);
+Sys.UI.Behavior.getBehaviorByName = function Sys$UI$Behavior$getBehaviorByName(element, name) {
+    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorByName" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="name" type="String"></param>
+    /// <returns type="Sys.UI.Behavior" mayBeNull="true"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "name", type: String}
+    ]);
+    if (e) throw e;
+    var b = element[name];
+    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
+}
+Sys.UI.Behavior.getBehaviors = function Sys$UI$Behavior$getBehaviors(element) {
+    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviors" />
+    /// <param name="element" domElement="true"></param>
+    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+    if (!element._behaviors) return [];
+    return Array.clone(element._behaviors);
+}
+Sys.UI.Behavior.getBehaviorsByType = function Sys$UI$Behavior$getBehaviorsByType(element, type) {
+    /// <summary locid="M:J#Sys.UI.Behavior.getBehaviorsByType" />
+    /// <param name="element" domElement="true"></param>
+    /// <param name="type" type="Type"></param>
+    /// <returns type="Array" elementType="Sys.UI.Behavior"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true},
+        {name: "type", type: Type}
+    ]);
+    if (e) throw e;
+    var behaviors = element._behaviors;
+    var results = [];
+    if (behaviors) {
+        for (var i = 0, l = behaviors.length; i < l; i++) {
+            if (type.isInstanceOfType(behaviors[i])) {
+                results[results.length] = behaviors[i];
+            }
+        }
+    }
+    return results;
+}
+ 
+Sys.UI.VisibilityMode = function Sys$UI$VisibilityMode() {
+    /// <summary locid="M:J#Sys.UI.VisibilityMode.#ctor" />
+    /// <field name="hide" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.hide"></field>
+    /// <field name="collapse" type="Number" integer="true" static="true" locid="F:J#Sys.UI.VisibilityMode.collapse"></field>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    throw Error.notImplemented();
+}
+Sys.UI.VisibilityMode.prototype = {
+    hide: 0,
+    collapse: 1
+}
+Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");
+ 
+Sys.UI.Control = function Sys$UI$Control(element) {
+    /// <summary locid="M:J#Sys.UI.Control.#ctor" />
+    /// <param name="element" domElement="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "element", domElement: true}
+    ]);
+    if (e) throw e;
+    if (typeof(element.control) != 'undefined') throw Error.invalidOperation(Sys.Res.controlAlreadyDefined);
+    Sys.UI.Control.initializeBase(this);
+    this._element = element;
+    element.control = this;
+}
+    function Sys$UI$Control$get_element() {
+        /// <value domElement="true" locid="P:J#Sys.UI.Control.element"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._element;
+    }
+    function Sys$UI$Control$get_id() {
+        /// <value type="String" locid="P:J#Sys.UI.Control.id"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._element) return '';
+        return this._element.id;
+    }
+    function Sys$UI$Control$set_id(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        throw Error.invalidOperation(Sys.Res.cantSetId);
+    }
+    function Sys$UI$Control$get_parent() {
+        /// <value type="Sys.UI.Control" locid="P:J#Sys.UI.Control.parent"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (this._parent) return this._parent;
+        if (!this._element) return null;
+        
+        var parentElement = this._element.parentNode;
+        while (parentElement) {
+            if (parentElement.control) {
+                return parentElement.control;
+            }
+            parentElement = parentElement.parentNode;
+        }
+        return null;
+    }
+    function Sys$UI$Control$set_parent(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]);
+        if (e) throw e;
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        var parents = [this];
+        var current = value;
+        while (current) {
+            if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain);
+            parents[parents.length] = current;
+            current = current.get_parent();
+        }
+        this._parent = value;
+    }
+    function Sys$UI$Control$get_visibilityMode() {
+        /// <value type="Sys.UI.VisibilityMode" locid="P:J#Sys.UI.Control.visibilityMode"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        return Sys.UI.DomElement.getVisibilityMode(this._element);
+    }
+    function Sys$UI$Control$set_visibilityMode(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]);
+        if (e) throw e;
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        Sys.UI.DomElement.setVisibilityMode(this._element, value);
+    }
+    function Sys$UI$Control$get_visible() {
+        /// <value type="Boolean" locid="P:J#Sys.UI.Control.visible"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        return Sys.UI.DomElement.getVisible(this._element);
+    }
+    function Sys$UI$Control$set_visible(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        Sys.UI.DomElement.setVisible(this._element, value)
+    }
+    function Sys$UI$Control$addCssClass(className) {
+        /// <summary locid="M:J#Sys.UI.Control.addCssClass" />
+        /// <param name="className" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "className", type: String}
+        ]);
+        if (e) throw e;
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        Sys.UI.DomElement.addCssClass(this._element, className);
+    }
+    function Sys$UI$Control$dispose() {
+        Sys.UI.Control.callBaseMethod(this, 'dispose');
+        if (this._element) {
+            this._element.control = undefined;
+            delete this._element;
+        }
+        if (this._parent) delete this._parent;
+    }
+    function Sys$UI$Control$onBubbleEvent(source, args) {
+        /// <summary locid="M:J#Sys.UI.Control.onBubbleEvent" />
+        /// <param name="source"></param>
+        /// <param name="args" type="Sys.EventArgs"></param>
+        /// <returns type="Boolean"></returns>
+        var e = Function._validateParams(arguments, [
+            {name: "source"},
+            {name: "args", type: Sys.EventArgs}
+        ]);
+        if (e) throw e;
+        return false;
+    }
+    function Sys$UI$Control$raiseBubbleEvent(source, args) {
+        /// <summary locid="M:J#Sys.UI.Control.raiseBubbleEvent" />
+        /// <param name="source"></param>
+        /// <param name="args" type="Sys.EventArgs"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "source"},
+            {name: "args", type: Sys.EventArgs}
+        ]);
+        if (e) throw e;
+        var currentTarget = this.get_parent();
+        while (currentTarget) {
+            if (currentTarget.onBubbleEvent(source, args)) {
+                return;
+            }
+            currentTarget = currentTarget.get_parent();
+        }
+    }
+    function Sys$UI$Control$removeCssClass(className) {
+        /// <summary locid="M:J#Sys.UI.Control.removeCssClass" />
+        /// <param name="className" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "className", type: String}
+        ]);
+        if (e) throw e;
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        Sys.UI.DomElement.removeCssClass(this._element, className);
+    }
+    function Sys$UI$Control$toggleCssClass(className) {
+        /// <summary locid="M:J#Sys.UI.Control.toggleCssClass" />
+        /// <param name="className" type="String"></param>
+        var e = Function._validateParams(arguments, [
+            {name: "className", type: String}
+        ]);
+        if (e) throw e;
+        if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose);
+        Sys.UI.DomElement.toggleCssClass(this._element, className);
+    }
+Sys.UI.Control.prototype = {
+    _parent: null,
+    _visibilityMode: Sys.UI.VisibilityMode.hide,
+    get_element: Sys$UI$Control$get_element,
+    get_id: Sys$UI$Control$get_id,
+    set_id: Sys$UI$Control$set_id,
+    get_parent: Sys$UI$Control$get_parent,
+    set_parent: Sys$UI$Control$set_parent,
+    get_visibilityMode: Sys$UI$Control$get_visibilityMode,
+    set_visibilityMode: Sys$UI$Control$set_visibilityMode,
+    get_visible: Sys$UI$Control$get_visible,
+    set_visible: Sys$UI$Control$set_visible,
+    addCssClass: Sys$UI$Control$addCssClass,
+    dispose: Sys$UI$Control$dispose,
+    onBubbleEvent: Sys$UI$Control$onBubbleEvent,
+    raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent,
+    removeCssClass: Sys$UI$Control$removeCssClass,
+    toggleCssClass: Sys$UI$Control$toggleCssClass
+}
+Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);
+Type.registerNamespace('Sys');
+Sys.Res={
+'argumentTypeName':'Value is not the name of an existing type.',
+'methodRegisteredTwice':'Method {0} has already been registered.',
+'cantSetIdAfterInit':'The id property can\'t be set on this object after initialization.',
+'cantBeCalledAfterDispose':'Can\'t be called after dispose.',
+'componentCantSetIdAfterAddedToApp':'The id property of a component can\'t be set after it\'s been added to the Application object.',
+'behaviorDuplicateName':'A behavior with name \'{0}\' already exists or it is the name of an existing property on the target element.',
+'notATypeName':'Value is not a valid type name.',
+'typeShouldBeTypeOrString':'Value is not a valid type or a valid type name.',
+'boolTrueOrFalse':'Value must be \'true\' or \'false\'.',
+'stringFormatInvalid':'The format string is invalid.',
+'referenceNotFound':'Component \'{0}\' was not found.',
+'enumReservedName':'\'{0}\' is a reserved name that can\'t be used as an enum value name.',
+'eventHandlerNotFound':'Handler not found.',
+'circularParentChain':'The chain of control parents can\'t have circular references.',
+'undefinedEvent':'\'{0}\' is not an event.',
+'notAMethod':'{0} is not a method.',
+'propertyUndefined':'\'{0}\' is not a property or an existing field.',
+'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
+'scriptLoadFailedDebug':'The script \'{0}\' failed to load. Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable \'Display a notification about every script error\' under advanced settings.\r\n Missing call to Sys.Application.notifyScriptLoaded().',
+'propertyNotWritable':'\'{0}\' is not a writable property.',
+'enumInvalidValueName':'\'{0}\' is not a valid name for an enum value.',
+'controlAlreadyDefined':'A control is already associated with the element.',
+'addHandlerCantBeUsedForError':'Can\'t add a handler for the error event using this method. Please set the window.onerror property instead.',
+'namespaceContainsObject':'Object {0} already exists and is not a namespace.',
+'cantAddNonFunctionhandler':'Can\'t add a handler that is not a function.',
+'scriptLoaderAlreadyLoading':'ScriptLoader.loadScripts cannot be called while the ScriptLoader is already loading scripts.',
+'invalidNameSpace':'Value is not a valid namespace identifier.',
+'notAnInterface':'Value is not a valid interface.',
+'eventHandlerNotFunction':'Handler must be a function.',
+'propertyNotAnArray':'\'{0}\' is not an Array property.',
+'typeRegisteredTwice':'Type {0} has already been registered. The type may be defined multiple times or the script file that defines it may have already been loaded. A possible cause is a change of settings during a partial update.',
+'cantSetNameAfterInit':'The name property can\'t be set on this object after initialization.',
+'appDuplicateComponent':'Two components with the same id \'{0}\' can\'t be added to the application.',
+'appComponentMustBeInitialized':'Components must be initialized before they are added to the Application object.',
+'baseNotAClass':'Value is not a class.',
+'methodNotFound':'No method found with name \'{0}\'.',
+'arrayParseBadFormat':'Value must be a valid string representation for an array. It must start with a \'[\' and end with a \']\'.',
+'cantSetId':'The id property can\'t be set on this object.',
+'stringFormatBraceMismatch':'The format string contains an unmatched opening or closing brace.',
+'enumValueNotInteger':'An enumeration definition can only contain integer values.',
+'propertyNullOrUndefined':'Cannot set the properties of \'{0}\' because it returned a null value.',
+'argumentDomNode':'Value must be a DOM element or a text node.',
+'componentCantSetIdTwice':'The id property of a component can\'t be set more than once.',
+'createComponentOnDom':'Value must be null for Components that are not Controls or Behaviors.',
+'createNotComponent':'{0} does not derive from Sys.Component.',
+'createNoDom':'Value must not be null for Controls and Behaviors.',
+'cantAddWithoutId':'Can\'t add a component that doesn\'t have an id.',
+'badTypeName':'Value is not the name of the type being registered or the name is a reserved word.',
+'argumentInteger':'Value must be an integer.',
+'scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.',
+'invokeCalledTwice':'Cannot call invoke more than once.',
+'webServiceFailed':'The server method \'{0}\' failed with the following error: {1}',
+'webServiceInvalidJsonWrapper':'The server method \'{0}\' returned invalid data. The \'d\' property is missing from the JSON wrapper.',
+'argumentType':'Object cannot be converted to the required type.',
+'argumentNull':'Value cannot be null.',
+'controlCantSetId':'The id property can\'t be set on a control.',
+'formatBadFormatSpecifier':'Format specifier was invalid.',
+'webServiceFailedNoMsg':'The server method \'{0}\' failed.',
+'argumentDomElement':'Value must be a DOM element.',
+'invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.',
+'cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.',
+'actualValue':'Actual value was {0}.',
+'enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.',
+'scriptLoadFailed':'The script \'{0}\' could not be loaded.',
+'parameterCount':'Parameter count mismatch.',
+'cannotDeserializeEmptyString':'Cannot deserialize empty string.',
+'formatInvalidString':'Input string was not in a correct format.',
+'invalidTimeout':'Value must be greater than or equal to zero.',
+'cannotAbortBeforeStart':'Cannot abort when executor has not started.',
+'argument':'Value does not fall within the expected range.',
+'cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.',
+'invalidHttpVerb':'httpVerb cannot be set to an empty or null string.',
+'nullWebRequest':'Cannot call executeRequest with a null webRequest.',
+'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.',
+'cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.',
+'argumentUndefined':'Value cannot be undefined.',
+'webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}',
+'servicePathNotSet':'The path to the web service has not been set.',
+'argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.',
+'cannotCallOnceStarted':'Cannot call {0} once started.',
+'badBaseUrl1':'Base URL does not contain ://.',
+'badBaseUrl2':'Base URL does not contain another /.',
+'badBaseUrl3':'Cannot find last / in base URL.',
+'setExecutorAfterActive':'Cannot set executor after it has become active.',
+'paramName':'Parameter name: {0}',
+'cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.',
+'cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.',
+'format':'One of the identified items was in an invalid format.',
+'assertFailedCaller':'Assertion Failed: {0}\r\nat {1}',
+'argumentOutOfRange':'Specified argument was out of the range of valid values.',
+'webServiceTimedOut':'The server method \'{0}\' timed out.',
+'notImplemented':'The method or operation is not implemented.',
+'assertFailed':'Assertion Failed: {0}',
+'invalidOperation':'Operation is not valid due to the current state of the object.',
+'breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'
+};
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjax.js
@@ -1,7 +1,7 @@
-﻿//----------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//----------------------------------------------------------
-// MicrosoftAjax.js
-Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};Function.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};Function.emptyFunction=Function.emptyMethod=function(){};Function._validateParams=function(e,c){var a;a=Function._validateParameterCount(e,c);if(a){a.popStackFrame();return a}for(var b=0;b<e.length;b++){var d=c[Math.min(b,c.length-1)],f=d.name;if(d.parameterArray)f+="["+(b-c.length+1)+"]";a=Function._validateParameter(e[b],d,f);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(e,a){var c=a.length,d=0;for(var b=0;b<a.length;b++)if(a[b].parameterArray)c=Number.MAX_VALUE;else if(!a[b].optional)d++;if(e.length<d||e.length>c){var f=Error.parameterCount();f.popStackFrame();return f}return null};Function._validateParameter=function(c,a,h){var b,g=a.type,l=!!a.integer,k=!!a.domElement,m=!!a.mayBeNull;b=Function._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return b}var e=a.elementType,f=!!a.elementMayBeNull;if(g===Array&&typeof c!=="undefined"&&c!==null&&(e||!f)){var j=!!a.elementInteger,i=!!a.elementDomElement;for(var d=0;d<c.length;d++){var n=c[d];b=Function._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b){b.popStackFrame();return b}}}return null};Function._validateParameterType=function(a,c,n,m,k,d){var b;if(typeof a==="undefined")if(k)return null;else{b=Error.argumentUndefined(d);b.popStackFrame();return b}if(a===null)if(k)return null;else{b=Error.argumentNull(d);b.popStackFrame();return b}if(c&&c.__enum){if(typeof a!=="number"){b=Error.argumentType(d,Object.getType(a),c);b.popStackFrame();return b}if(a%1===0){var e=c.prototype;if(!c.__flags||a===0){for(var i in e)if(e[i]===a)return null}else{var l=a;for(var i in e){var f=e[i];if(f===0)continue;if((f&a)===f)l-=f;if(l===0)return null}}}b=Error.argumentOutOfRange(d,a,String.format(Sys.Res.enumInvalidValue,a,c.getName()));b.popStackFrame();return b}if(m){var h;if(typeof a.nodeType!=="number"){var g=a.ownerDocument||a.document||a;if(g!=a){var j=g.defaultView||g.parentWindow;h=j!=a&&!(j.document&&a.document&&j.document===a.document)}else h=typeof g.body==="undefined"}else h=a.nodeType===3;if(h){b=Error.argument(d,Sys.Res.argumentDomElement);b.popStackFrame();return b}}if(c&&!c.isInstanceOfType(a)){b=Error.argumentType(d,Object.getType(a),c);b.popStackFrame();return b}if(c===Number&&n)if(a%1!==0){b=Error.argumentOutOfRange(d,a,Sys.Res.argumentInteger);b.popStackFrame();return b}return null};Error.__typeName="Error";Error.__class=true;Error.create=function(d,b){var a=new Error(d);a.message=d;if(b)for(var c in b)a[c]=b[c];a.popStackFrame();return a};Error.argument=function(a,c){var b="Sys.ArgumentException: "+(c?c:Sys.Res.argument);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStackFrame();return d};Error.argumentNull=function(a,c){var b="Sys.ArgumentNullException: "+(c?c:Sys.Res.argumentNull);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popStackFrame();return d};Error.argumentOutOfRange=function(c,a,d){var b="Sys.ArgumentOutOfRangeException: "+(d?d:Sys.Res.argumentOutOfRange);if(c)b+="\n"+String.format(Sys.Res.paramName,c);if(typeof a!=="undefined"&&a!==null)b+="\n"+String.format(Sys.Res.actualValue,a);var e=Error.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,actualValue:a});e.popStackFrame();return e};Error.argumentType=function(d,c,b,e){var a="Sys.ArgumentTypeException: ";if(e)a+=e;else if(c&&b)a+=String.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.getName());else a+=Sys.Res.argumentType;if(d)a+="\n"+String.format(Sys.Res.paramName,d);var f=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualType:c,expectedType:b});f.popStackFrame();return f};Error.argumentUndefined=function(a,c){var b="Sys.ArgumentUndefinedException: "+(c?c:Sys.Res.argumentUndefined);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d.popStackFrame();return d};Error.format=function(a){var c="Sys.FormatException: "+(a?a:Sys.Res.format),b=Error.create(c,{name:"Sys.FormatException"});b.popStackFrame();return b};Error.invalidOperation=function(a){var c="Sys.InvalidOperationException: "+(a?a:Sys.Res.invalidOperation),b=Error.create(c,{name:"Sys.InvalidOperationException"});b.popStackFrame();return b};Error.notImplemented=function(a){var c="Sys.NotImplementedException: "+(a?a:Sys.Res.notImplemented),b=Error.create(c,{name:"Sys.NotImplementedException"});b.popStackFrame();return b};Error.parameterCount=function(a){var c="Sys.ParameterCountException: "+(a?a:Sys.Res.parameterCount),b=Error.create(c,{name:"Sys.ParameterCountException"});b.popStackFrame();return b};Error.prototype.popStackFrame=function(){if(typeof this.stack==="undefined"||this.stack===null||typeof this.fileName==="undefined"||this.fileName===null||typeof this.lineNumber==="undefined"||this.lineNumber===null)return;var a=this.stack.split("\n"),c=a[0],e=this.fileName+":"+this.lineNumber;while(typeof c!=="undefined"&&c!==null&&c.indexOf(e)===-1){a.shift();c=a[0]}var d=a[1];if(typeof d==="undefined"||d===null)return;var b=d.match(/@(.*):(\d+)$/);if(typeof b==="undefined"||b===null)return;this.fileName=b[1];this.lineNumber=parseInt(b[2]);a.shift();this.stack=a.join("\n")};Object.__typeName="Object";Object.__class=true;Object.getType=function(b){var a=b.constructor;if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;return a};Object.getTypeName=function(a){return Object.getType(a).getName()};String.__typeName="String";String.__class=true;String.prototype.endsWith=function(a){return this.substr(this.length-a.length)===a};String.prototype.startsWith=function(a){return this.substr(0,a.length)===a};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=function(){return this.replace(/\s+$/,"")};String.prototype.trimStart=function(){return this.replace(/^\s+/,"")};String.format=function(){return String._toFormattedString(false,arguments)};String.localeFormat=function(){return String._toFormattedString(true,arguments)};String._toFormattedString=function(l,j){var c="",e=j[0];for(var a=0;true;){var f=e.indexOf("{",a),d=e.indexOf("}",a);if(f<0&&d<0){c+=e.slice(a);break}if(d>0&&(d<f||f<0)){c+=e.slice(a,d+1);a=d+2;continue}c+=e.slice(a,f);a=f+1;if(e.charAt(a)==="{"){c+="{";a++;continue}if(d<0)break;var h=e.substring(a,d),g=h.indexOf(":"),k=parseInt(g<0?h:h.substring(0,g),10)+1,i=g<0?"":h.substring(g+1),b=j[k];if(typeof b==="undefined"||b===null)b="";if(b.toFormattedString)c+=b.toFormattedString(i);else if(l&&b.localeFormat)c+=b.localeFormat(i);else if(b.format)c+=b.format(i);else c+=b.toString();a=d+1}return c};Boolean.__typeName="Boolean";Boolean.__class=true;Boolean.parse=function(b){var a=b.trim().toLowerCase();if(a==="false")return false;if(a==="true")return true};Date.__typeName="Date";Date.__class=true;Date._appendPreOrPostMatch=function(e,b){var d=0,a=false;for(var c=0,g=e.length;c<g;c++){var f=e.charAt(c);switch(f){case "'":if(a)b.append("'");else d++;a=false;break;case "\\":if(a)b.append("\\");a=!a;break;default:b.append(f);a=false}}return d};Date._expandFormat=function(a,b){if(!b)b="F";if(b.length===1)switch(b){case "d":return a.ShortDatePattern;case "D":return a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return a.LongTimePattern;case "F":return a.FullDateTimePattern;case "M":case "m":return a.MonthDayPattern;case "s":return a.SortableDateTimePattern;case "Y":case "y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString)}return b};Date._expandYear=function(c,a){if(a<100){var b=(new Date).getFullYear();a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)return a-100}return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(g,c,h){var e=false;for(var a=1,i=h.length;a<i;a++){var f=h[a];if(f){e=true;var b=Date._parseExact(g,f,c);if(b)return b}}if(!e){var d=c._getDateTimeFormats();for(var a=0,i=d.length;a<i;a++){var b=Date._parseExact(g,d[a],c);if(b)return b}}return null};Date._parseExact=function(s,y,j){s=s.trim();var m=j.dateTimeFormat,v=Date._getParseRegExp(m,y),x=(new RegExp(v.regExp)).exec(s);if(x===null)return null;var w=v.groups,f=null,c=null,h=null,g=null,d=0,n=0,o=0,e=0,k=null,r=false;for(var p=0,z=w.length;p<z;p++){var a=x[p+1];if(a)switch(w[p]){case "dd":case "d":h=parseInt(a,10);if(h<1||h>31)return null;break;case "MMMM":c=j._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=j._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":var c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":f=Date._expandYear(m,parseInt(a,10));if(f<0||f>9999)return null;break;case "yyyy":f=parseInt(a,10);if(f<0||f>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":n=parseInt(a,10);if(n<0||n>59)return null;break;case "s":case "ss":o=parseInt(a,10);if(o<0||o>59)return null;break;case "tt":case "t":var u=a.toUpperCase();r=u===m.PMDesignator.toUpperCase();if(!r&&u!==m.AMDesignator.toUpperCase())return null;break;case "f":e=parseInt(a,10)*100;if(e<0||e>999)return null;break;case "ff":e=parseInt(a,10)*10;if(e<0||e>999)return null;break;case "fff":e=parseInt(a,10);if(e<0||e>999)return null;break;case "dddd":g=j._getDayIndex(a);if(g<0||g>6)return null;break;case "ddd":g=j._getAbbrDayIndex(a);if(g<0||g>6)return null;break;case "zzz":var q=a.split(/:/);if(q.length!==2)return null;var i=parseInt(q[0],10);if(i<-12||i>13)return null;var l=parseInt(q[1],10);if(l<0||l>59)return null;k=i*60+(a.startsWith("-")?-l:l);break;case "z":case "zz":var i=parseInt(a,10);if(i<-12||i>13)return null;k=i*60}}var b=new Date;if(f===null)f=b.getFullYear();if(c===null)c=b.getMonth();if(h===null)h=b.getDate();b.setFullYear(f,c,h);if(b.getDate()!==h)return null;if(g!==null&&b.getDay()!==g)return null;if(r&&d<12)d+=12;b.setHours(d,n,o,e);if(k!==null){var t=b.getMinutes()-(k+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(t/60,10),t%60)}return b};Date.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype._toFormattedString=function(e,h){if(!e||e.length===0||e==="i")if(h&&h.name.length>0)return this.toLocaleString();else return this.toString();var d=h.dateTimeFormat;e=Date._expandFormat(d,e);var a=new Sys.StringBuilder,b;function c(a){if(a<10)return "0"+a;return a.toString()}function g(a){if(a<10)return "00"+a;if(a<100)return "0"+a;return a.toString()}var j=0,i=Date._getTokenRegExp();for(;true;){var l=i.lastIndex,f=i.exec(e),k=e.slice(l,f?f.index:e.length);j+=Date._appendPreOrPostMatch(k,a);if(!f)break;if(j%2===1){a.append(f[0]);continue}switch(f[0]){case "dddd":a.append(d.DayNames[this.getDay()]);break;case "ddd":a.append(d.AbbreviatedDayNames[this.getDay()]);break;case "dd":a.append(c(this.getDate()));break;case "d":a.append(this.getDate());break;case "MMMM":a.append(d.MonthNames[this.getMonth()]);break;case "MMM":a.append(d.AbbreviatedMonthNames[this.getMonth()]);break;case "MM":a.append(c(this.getMonth()+1));break;case "M":a.append(this.getMonth()+1);break;case "yyyy":a.append(this.getFullYear());break;case "yy":a.append(c(this.getFullYear()%100));break;case "y":a.append(this.getFullYear()%100);break;case "hh":b=this.getHours()%12;if(b===0)b=12;a.append(c(b));break;case "h":b=this.getHours()%12;if(b===0)b=12;a.append(b);break;case "HH":a.append(c(this.getHours()));break;case "H":a.append(this.getHours());break;case "mm":a.append(c(this.getMinutes()));break;case "m":a.append(this.getMinutes());break;case "ss":a.append(c(this.getSeconds()));break;case "s":a.append(this.getSeconds());break;case "tt":a.append(this.getHours()<12?d.AMDesignator:d.PMDesignator);break;case "t":a.append((this.getHours()<12?d.AMDesignator:d.PMDesignator).charAt(0));break;case "f":a.append(g(this.getMilliseconds()).charAt(0));break;case "ff":a.append(g(this.getMilliseconds()).substr(0,2));break;case "fff":a.append(g(this.getMilliseconds()));break;case "z":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+Math.floor(Math.abs(b)));break;case "zz":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+c(Math.floor(Math.abs(b))));break;case "zzz":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+c(Math.floor(Math.abs(b)))+d.TimeSeparator+c(Math.abs(this.getTimezoneOffset()%60)))}}return a.toString()};Number.__typeName="Number";Number.__class=true;Number.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=function(b,n){b=b.trim();if(b.match(/^[+-]?infinity$/i))return parseFloat(b);if(b.match(/^0x[a-f0-9]+$/i))return parseInt(b);var a=n.numberFormat,f=Number._parseNumberNegativePattern(b,a,a.NumberNegativePattern),h=f[0],d=f[1];if(h===""&&a.NumberNegativePattern!==1){f=Number._parseNumberNegativePattern(b,a,1);h=f[0];d=f[1]}if(h==="")h="+";var j,c,e=d.indexOf("e");if(e<0)e=d.indexOf("E");if(e<0){c=d;j=null}else{c=d.substr(0,e);j=d.substr(e+1)}var g,k,m=c.indexOf(a.NumberDecimalSeparator);if(m<0){g=c;k=null}else{g=c.substr(0,m);k=c.substr(m+a.NumberDecimalSeparator.length)}g=g.split(a.NumberGroupSeparator).join("");var l=h+g;if(k!==null)l+="."+k;if(j!==null){var i=Number._parseNumberNegativePattern(j,a,1);if(i[0]==="")i[0]="+";l+="e"+i[0]+i[1]}if(l.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/))return parseFloat(l);return Number.NaN};Number._parseNumberNegativePattern=function(a,d,e){var b=d.NegativeSign,c=d.PositiveSign;switch(e){case 4:b=" "+b;c=" "+c;case 3:if(a.endsWith(b))return ["-",a.substr(0,a.length-b.length)];else if(a.endsWith(c))return ["+",a.substr(0,a.length-c.length)];break;case 2:b+=" ";c+=" ";case 1:if(a.startsWith(b))return ["-",a.substr(b.length)];else if(a.startsWith(c))return ["+",a.substr(c.length)];break;case 0:if(a.startsWith("(")&&a.endsWith(")"))return ["-",a.substr(1,a.length-2)]}return ["",a]};Number.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototype._toFormattedString=function(d,j){if(!d||d.length===0||d==="i")if(j&&j.name.length>0)return this.toLocaleString();else return this.toString();var q=["n %","n%","%n"],p=["-n %","-n%","-%n"],r=["(n)","-n","- n","n-","n -"],o=["$n","n$","$ n","n $"],n=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function i(p,k,j,l,o){var e=j[0],g=1,c=p.toString(),a="",m="",i=c.split(".");if(i.length>1){c=i[0];a=i[1];var h=a.split(/e/i);if(h.length>1){a=h[0];m="e"+h[1]}}if(k>0){var f=a.length-k;if(f>0)a=a.slice(0,k);else if(f<0)for(var n=0;n<Math.abs(f);n++)a+="0";a=o+a}else a="";a+=m;var b=c.length-1,d="";while(b>=0){if(e===0||e>b)if(d.length>0)return c.slice(0,b+1)+l+d+a;else return c.slice(0,b+1)+a;if(d.length>0)d=c.slice(b-e+1,b+1)+l+d;else d=c.slice(b-e+1,b+1);b-=e;if(g<j.length){e=j[g];g++}}return c.slice(0,b+1)+l+d+a}var a=j.numberFormat,e=Math.abs(this);if(!d)d="D";var b=-1;if(d.length>1)b=parseInt(d.slice(1),10);var c;switch(d.charAt(0)){case "d":case "D":c="n";if(b!==-1){var g=""+e,k=b-g.length;if(k>0)for(var m=0;m<k;m++)g="0"+g;e=g}if(this<0)e=-e;break;case "c":case "C":if(this<0)c=n[a.CurrencyNegativePattern];else c=o[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;e=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=r[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;e=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=p[a.PercentNegativePattern];else c=q[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;e=i(Math.abs(this),b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var l=/n|\$|-|%/g,f="";for(;true;){var s=l.lastIndex,h=l.exec(c);f+=c.slice(s,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=e;break;case "$":f+=a.CurrencySymbol;break;case "-":f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};RegExp.__typeName="RegExp";RegExp.__class=true;Array.__typeName="Array";Array.__class=true;Array.add=Array.enqueue=function(a,b){a[a.length]=b};Array.addRange=function(a,b){a.push.apply(a,b)};Array.clear=function(a){a.length=0};Array.clone=function(a){if(a.length===1)return [a[0]];else return Array.apply(null,a)};Array.contains=function(a,b){return Array.indexOf(a,b)>=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a<f;a++){var c=b[a];if(typeof c!=="undefined")e.call(d,c,a,b)}};Array.indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(typeof d[b]!=="undefined"&&d[b]===e)return b}return -1};Array.insert=function(a,b,c){a.splice(b,0,c)};Array.parse=function(value){if(!value)return [];return eval(value)};Array.remove=function(b,c){var a=Array.indexOf(b,c);if(a>=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};if(!window)this.window=this;window.Type=Function;Type.prototype.callBaseMethod=function(a,d,b){var c=this.getBaseMethod(a,d);if(!b)return c.apply(a);else return c.apply(a,b)};Type.prototype.getBaseMethod=function(d,c){var b=this.getBaseType();if(b){var a=b.prototype[c];return a instanceof Function?a:null}return null};Type.prototype.getBaseType=function(){return typeof this.__baseType==="undefined"?null:this.__baseType};Type.prototype.getInterfaces=function(){var a=[],b=this;while(b){var c=b.__interfaces;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Array.contains(a,e))a[a.length]=e}b=b.__baseType}return a};Type.prototype.getName=function(){return typeof this.__typeName==="undefined"?"":this.__typeName};Type.prototype.implementsInterface=function(d){this.resolveInheritance();var c=d.getName(),a=this.__interfaceCache;if(a){var e=a[c];if(typeof e!=="undefined")return e}else a=this.__interfaceCache={};var b=this;while(b){var f=b.__interfaces;if(f)if(Array.indexOf(f,d)!==-1)return a[c]=true;b=b.__baseType}return a[c]=false};Type.prototype.inheritsFrom=function(b){this.resolveInheritance();var a=this.__baseType;while(a){if(a===b)return true;a=a.__baseType}return false};Type.prototype.initializeBase=function(a,b){this.resolveInheritance();if(this.__baseType)if(!b)this.__baseType.apply(a);else this.__baseType.apply(a,b);return a};Type.prototype.isImplementedBy=function(a){if(typeof a==="undefined"||a===null)return false;var b=Object.getType(a);return !!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.isInstanceOfType=function(b){if(typeof b==="undefined"||b===null)return false;if(b instanceof this)return true;var a=Object.getType(b);return !!(a===this)||a.inheritsFrom&&a.inheritsFrom(this)||a.implementsInterface&&a.implementsInterface(this)};Type.prototype.registerClass=function(c,b,d){this.prototype.constructor=this;this.__typeName=c;this.__class=true;if(b){this.__baseType=b;this.__basePrototypePending=true}Sys.__upperCaseTypes[c.toUpperCase()]=this;if(d){this.__interfaces=[];for(var a=2,f=arguments.length;a<f;a++){var e=arguments[a];this.__interfaces.push(e)}}return this};Type.prototype.registerInterface=function(a){Sys.__upperCaseTypes[a.toUpperCase()]=this;this.prototype.constructor=this;this.__typeName=a;this.__interface=true;return this};Type.prototype.resolveInheritance=function(){if(this.__basePrototypePending){var b=this.__baseType;b.resolveInheritance();for(var a in b.prototype){var c=b.prototype[a];if(!this.prototype[a])this.prototype[a]=c}delete this.__basePrototypePending}};Type.getRootNamespaces=function(){return Array.clone(Sys.__rootNamespaces)};Type.isClass=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__class};Type.isInterface=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__interface};Type.isNamespace=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__namespace};Type.parse=function(typeName,ns){var fn;if(ns){fn=Sys.__upperCaseTypes[ns.getName().toUpperCase()+"."+typeName.toUpperCase()];return fn||null}if(!typeName)return null;if(!Type.__htClasses)Type.__htClasses={};fn=Type.__htClasses[typeName];if(!fn){fn=eval(typeName);Type.__htClasses[typeName]=fn}return fn};Type.registerNamespace=function(f){var d=window,c=f.split(".");for(var b=0;b<c.length;b++){var e=c[b],a=d[e];if(!a){a=d[e]={__namespace:true,__typeName:c.slice(0,b+1).join(".")};if(b===0)Sys.__rootNamespaces[Sys.__rootNamespaces.length]=a;a.getName=function(){return this.__typeName}}d=a}};window.Sys={__namespace:true,__typeName:"Sys",getName:function(){return "Sys"},__upperCaseTypes:{}};Sys.__rootNamespaces=[Sys];Sys.IDisposable=function(){};Sys.IDisposable.prototype={};Sys.IDisposable.registerInterface("Sys.IDisposable");Sys.StringBuilder=function(a){this._parts=typeof a!=="undefined"&&a!==null&&a!==""?[a.toString()]:[];this._value={};this._len=0};Sys.StringBuilder.prototype={append:function(a){this._parts[this._parts.length]=a},appendLine:function(a){this._parts[this._parts.length]=typeof a==="undefined"||a===null||a===""?"\r\n":a+"\r\n"},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){if(this._parts.length===0)return true;return this.toString()===""},toString:function(a){a=a||"";var b=this._parts;if(this._len!==b.length){this._value={};this._len=b.length}var d=this._value;if(typeof d[a]==="undefined"){if(a!=="")for(var c=0;c<b.length;)if(typeof b[c]==="undefined"||b[c]===""||b[c]===null)b.splice(c,1);else c++;d[a]=this._parts.join(a)}return d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Mxsml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var a=0,c=b.length;a<c;a++)try{return new ActiveXObject(b[a])}catch(d){}return null};Sys.Browser={};Sys.Browser.InternetExplorer={};Sys.Browser.Firefox={};Sys.Browser.Safari={};Sys.Browser.Opera={};Sys.Browser.agent=null;Sys.Browser.hasDebuggerStatement=false;Sys.Browser.name=navigator.appName;Sys.Browser.version=parseFloat(navigator.appVersion);if(navigator.userAgent.indexOf(" MSIE ")>-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Safari/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Safari\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+="    ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e<j;e++)this._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in a){h=a[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=new Sys._Debug;Sys.Debug.isDebug=false;function Sys$Enum$parse(c,e){var a,b,i;if(e){a=this.__lowerCaseValues;if(!a){this.__lowerCaseValues=a={};var g=this.prototype;for(var f in g)a[f.toLowerCase()]=g[f]}}else a=this.prototype;if(!this.__flags){i=e?c.toLowerCase():c;b=a[i.trim()];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__typeName));return b}else{var h=(e?c.toLowerCase():c).split(","),j=0;for(var d=h.length-1;d>=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);return function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)}},_getEvent:function(a,b){if(!this._list[a]){if(!b)return null;this._list[a]=[]}return this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList");Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.INotifyDisposing=function(){};Sys.INotifyDisposing.prototype={};Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");Sys.Component=function(){if(Sys.Application)Sys.Application.registerDisposableObject(this)};Sys.Component.prototype={_id:null,_initialized:false,_updating:false,get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_id:function(){return this._id},set_id:function(a){this._id=a},get_isInitialized:function(){return this._initialized},get_isUpdating:function(){return this._updating},add_disposing:function(a){this.get_events().addHandler("disposing",a)},remove_disposing:function(a){this.get_events().removeHandler("disposing",a)},add_propertyChanged:function(a){this.get_events().addHandler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_events().removeHandler("propertyChanged",a)},beginUpdate:function(){this._updating=true},dispose:function(){if(this._events){var a=this._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)}delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},endUpdate:function(){this._updating=false;if(!this._initialized)this.initialize();this.updated()},initialize:function(){this._initialized=true},raisePropertyChanged:function(b){if(!this._events)return;var a=this._events.getHandler("propertyChanged");if(a)a(this,new Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.registerClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var d,j=Object.getType(a),e=j===Object||j===Sys.UI.DomElement,h=Sys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginUpdate();for(var c in i){var b=i[c],f=e?null:a["get_"+c];if(e||typeof f!=="function"){var k=a[c];if(!b||typeof b!=="object"||e&&!k)a[c]=b;else Sys$Component$_setProperties(k,b)}else{var l=a["set_"+c];if(typeof l==="function")l.apply(a,[b]);else if(b instanceof Array){d=f.apply(a);for(var g=0,m=d.length,n=b.length;g<n;g++,m++)d[m]=b[g]}else if(typeof b==="object"&&Object.getType(b)===Object){d=f.apply(a);Sys$Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function Sys$Component$_setReferences(c,b){for(var a in b){var e=c["set_"+a],d=$find(b[a]);e.apply(c,[d])}}var $create=Sys.Component.create=function(h,f,d,c,g){var a=g?new h(g):new h,b=Sys.Application,i=b.get_isCreatingComponents();a.beginUpdate();if(f)Sys$Component$_setProperties(a,f);if(d)for(var e in d)a["add_"+e](d[e]);if(a.get_id())b.addComponent(a);if(i){b._createdComponents[b._createdComponents.length]=a;if(c)b._addComponentToSecondPass(a,c);else a.endUpdate()}else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}return a};Sys.UI.MouseButton=function(){throw Error.notImplemented()};Sys.UI.MouseButton.prototype={leftButton:0,middleButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");Sys.UI.Key=function(){throw Error.notImplemented()};Sys.UI.Key.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.Point=function(a,b){this.x=a;this.y=b};Sys.UI.Point.registerClass("Sys.UI.Point");Sys.UI.Bounds=function(c,d,b,a){this.x=c;this.y=d;this.height=a;this.width=b};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI.DomEvent=function(d){var a=d;this.rawEvent=a;this.altKey=a.altKey;if(typeof a.button!=="undefined")this.button=typeof a.which!=="undefined"?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(a.type==="keypress")this.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)this.keyCode=127;else this.keyCode=a.keyCode;this.clientX=a.clientX;this.clientY=a.clientY;this.ctrlKey=a.ctrlKey;this.target=a.target?a.target:a.srcElement;if(typeof a.offsetX!=="undefined"&&typeof a.offsetY!=="undefined"){this.offsetX=a.offsetX;this.offsetY=a.offsetY}else if(this.target&&this.target.nodeType!==3&&typeof a.clientX==="number"){var b=Sys.UI.DomElement.getLocation(this.target),c=Sys.UI.DomElement._getWindow(this.target);this.offsetX=(c.pageXOffset||0)+a.clientX-b.x;this.offsetY=(c.pageYOffset||0)+a.clientY-b.y}this.screenX=a.screenX;this.screenY=a.screenY;this.shiftKey=a.shiftKey;this.type=a.type};Sys.UI.DomEvent.prototype={preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEvent.preventDefault();else if(window.event)this.rawEvent.returnValue=false},stopPropagation:function(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();else if(window.event)this.rawEvent.cancelBubble=true}};Sys.UI.DomEvent.registerClass("Sys.UI.DomEvent");var $addHandler=Sys.UI.DomEvent.addHandler=function(a,d,e){if(!a._events)a._events={};var c=a._events[d];if(!c)a._events[d]=c=[];var b;if(a.addEventListener){b=function(b){return e.call(a,new Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else if(a.attachEvent){b=function(){var b={};try{b=Sys.UI.DomElement._getWindow(a).event}catch(c){}return e.call(a,new Sys.UI.DomEvent(b))};a.attachEvent("on"+d,b)}c[c.length]={handler:e,browserHandler:b}},$addHandlers=Sys.UI.DomEvent.addHandlers=function(e,d,c){for(var b in d){var a=d[b];if(c)a=Function.createDelegate(c,a);$addHandler(e,b,a)}},$clearHandlers=Sys.UI.DomEvent.clearHandlers=function(a){if(a._events){var e=a._events;for(var b in e){var d=e[b];for(var c=d.length-1;c>=0;c--)$removeHandler(a,b,d[c].handler)}a._events=null}},$removeHandler=Sys.UI.DomEvent.removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b<g;b++)if(c[b].handler===f){d=c[b].browserHandler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.UI.DomElement=function(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.UI.DomElement.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=" "+b};Sys.UI.DomElement.containsCssClass=function(b,a){return Array.contains(b.className.split(" "),a)};Sys.UI.DomElement.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var $get=Sys.UI.DomElement.getElementById=function(f,e){if(!e)return document.getElementById(f);if(e.getElementById)return e.getElementById(f);var c=[],d=e.childNodes;for(var b=0;b<d.length;b++){var a=d[b];if(a.nodeType==1)c[c.length]=a}while(c.length){a=c.shift();if(a.id==f)return a;d=a.childNodes;for(b=0;b<d.length;b++){a=d[b];if(a.nodeType==1)c[c.length]=a}}return null};switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:Sys.UI.DomElement.getLocation=function(a){if(a.self||a.nodeType===9)return new Sys.UI.Point(0,0);var b=a.getBoundingClientRect();if(!b)return new Sys.UI.Point(0,0);var d=a.ownerDocument.documentElement,e=b.left-2+d.scrollLeft,f=b.top-2+d.scrollTop;try{var c=a.ownerDocument.parentWindow.frameElement||null;if(c){var g=c.frameBorder==="0"||c.frameBorder==="no"?2:0;e+=g;f+=g}}catch(h){}return new Sys.UI.Point(e,f)};break;case Sys.Browser.Safari:Sys.UI.DomElement.getLocation=function(c){if(c.window&&c.window===c||c.nodeType===9)return new Sys.UI.Point(0,0);var f=0,g=0,j=null,e=null,b;for(var a=c;a;j=a,(e=b,a=a.offsetParent)){b=Sys.UI.DomElement._getCurrentStyle(a);var d=a.tagName;if((a.offsetLeft||a.offsetTop)&&(d!=="BODY"||(!e||e.position!=="absolute"))){f+=a.offsetLeft;g+=a.offsetTop}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(var a=c.parentNode;a;a=a.parentNode){d=a.tagName;if(d!=="BODY"&&d!=="HTML"&&(a.scrollLeft||a.scrollTop)){f-=a.scrollLeft||0;g-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(f,g)};break;case Sys.Browser.Opera:Sys.UI.DomElement.getLocation=function(b){if(b.window&&b.window===b||b.nodeType===9)return new Sys.UI.Point(0,0);var d=0,e=0,i=null;for(var a=b;a;i=a,a=a.offsetParent){var f=a.tagName;d+=a.offsetLeft||0;e+=a.offsetTop||0}var g=b.style.position,c=g&&g!=="static";for(var a=b.parentNode;a;a=a.parentNode){f=a.tagName;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)&&(c&&(a.style.overflow==="scroll"||a.style.overflow==="auto"))){d-=a.scrollLeft||0;e-=a.scrollTop||0}var h=a&&a.style?a.style.position:null;c=c||h&&h!=="static"}return new Sys.UI.Point(d,e)};break;default:Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,i=null,g=null,b=null;for(var a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(var a=d.parentNode;a;a=a.parentNode){c=a.tagName;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)}}Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys._ScriptLoader=function(){this._scriptsToLoad=null;this._scriptLoadedDelegate=Function.createDelegate(this,this._scriptLoadedHandler)};Sys._ScriptLoader.prototype={dispose:function(){this._stopLoading();if(this._events)delete this._events;this._scriptLoadedDelegate=null},loadScripts:function(a,c,d,b){this._loading=true;this._allScriptsLoadedCallback=c;this._scriptLoadFailedCallback=d;this._scriptLoadTimeoutCallback=b;if(a>0)this._timeoutCookie=window.setTimeout(Function.createDelegate(this,this._scriptLoadTimeoutHandler),a*1000);this._loadScriptsInternal()},notifyScriptLoaded:function(){if(!this._loading)return;this._currentTask._notified++;if(Sys.Browser.agent===Sys.Browser.Safari)if(this._currentTask._notified===1)window.setTimeout(Function.createDelegate(this,function(){this._scriptLoadedHandler(this._currentTask.get_scriptElement(),true)}),0)},queueCustomScriptTag:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{text:a})},queueScriptReference:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(c){var a=document.createElement("SCRIPT");a.type="text/javascript";for(var b in c)a[b]=c[b];return a},_loadScriptsInternal:function(){if(this._scriptsToLoad&&this._scriptsToLoad.length>0){var b=Array.dequeue(this._scriptsToLoad),a=this._createScriptElement(b);if(a.text&&Sys.Browser.agent===Sys.Browser.Safari){a.innerHTML=a.text;delete a.text}if(typeof b.src==="string"){this._currentTask=new Sys._ScriptLoaderTask(a,this._scriptLoadedDelegate);this._currentTask.execute()}else{document.getElementsByTagName("HEAD")[0].appendChild(a);var d=this;window.setTimeout(function(){Sys._ScriptLoader._clearScript(a);d._loadScriptsInternal()},0)}}else{var c=this._allScriptsLoadedCallback;this._stopLoading();if(c)c(this)}},_raiseError:function(a){var c=this._scriptLoadFailedCallback,b=this._currentTask.get_scriptElement();this._stopLoading();if(c)c(this,b,a);else throw Sys._ScriptLoader._errorScriptLoadFailed(b.src,a)},_scriptLoadedHandler:function(a,b){if(b&&this._currentTask._notified)if(this._currentTask._notified>1)this._raiseError(true);else{Array.add(Sys._ScriptLoader._getLoadedScripts(),a.src);this._currentTask.dispose();this._currentTask=null;this._loadScriptsInternal()}else this._raiseError(false)},_scriptLoadTimeoutHandler:function(){var a=this._scriptLoadTimeoutCallback;this._stopLoading();if(a)a(this)},_stopLoading:function(){if(this._timeoutCookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=null}if(this._currentTask){this._currentTask.dispose();this._currentTask=null}this._scriptsToLoad=null;this._loading=null;this._allScriptsLoadedCallback=null;this._scriptLoadFailedCallback=null;this._scriptLoadTimeoutCallback=null}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisposable);Sys._ScriptLoader.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};Sys._ScriptLoader.isScriptLoaded=function(b){var a=document.createElement("script");a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptLoader.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){var b=Sys._ScriptLoader._referencedScripts=[],c=document.getElementsByTagName("SCRIPT");for(i=c.length-1;i>=0;i--){var d=c[i],a=d.src;if(a.length)if(!Array.contains(b,a))Array.add(b,a)}}};Sys._ScriptLoader._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Sys._ScriptLoader._errorScriptLoadFailed=function(b,d){var a;if(d)a=Sys.Res.scriptLoadMultipleCallbacks;else a=Sys.Res.scriptLoadFailed;var e="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(e,{name:"Sys.ScriptLoadFailedException","scriptUrl":b});c.popStackFrame();return c};Sys._ScriptLoader._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a;this._notified=0};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoader._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("HEAD")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);this._scriptElement.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);if(this._scriptErrorDelegate){this._scriptElement.removeEventListener("error",this._scriptErrorDelegate,false);this._scriptErrorDelegate=null}this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;var b=this;window.setTimeout(function(){b._completedCallback(a,true)},0)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);this._loadHandlerDelegate=Function.createDelegate(this,this._loadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);Sys.UI.DomEvent.addHandler(window,"load",this._loadHandlerDelegate)};Sys._Application.prototype={_creatingComponents:false,_disposing:false,get_isCreatingComponents:function(){return this._creatingComponents},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,e=b.length;a<e;a++)b[a].dispose();Array.clear(this._disposableObjects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDelegate);if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}var d=Sys._ScriptLoader.getInstance();if(d)d.dispose();Sys._Application.callBaseMethod(this,"dispose")}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a<d;a++){var c=b[a].component;Sys$Component$_setReferences(c,b[a].references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=false},findComponent:function(b,a){return a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Application._components[b]||null},getComponents:function(){var a=[],b=this._components;for(var c in b)a[a.length]=b[c];return a},initialize:function(){if(!this._initialized&&!this._initializing){this._initializing=true;window.setTimeout(Function.createDelegate(this,this._doInitialize),0)}},notifyScriptLoaded:function(){var a=Sys._ScriptLoader.getInstance();if(a)a.notifyScriptLoaded()},registerDisposableObject:function(a){if(!this._disposing)this._disposableObjects[this._disposableObjects.length]=a},raiseLoad:function(){var b=this.get_events().getHandler("load"),a=new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!this._initializing);if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);this._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){if(!this._disposing)Array.remove(this._disposableObjects,a)},_addComponentToSecondPass:function(b,a){this._secondPassComponents[this._secondPassComponents.length]={component:b,references:a}},_doInitialize:function(){Sys._Application.callBaseMethod(this,"initialize");var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}this.raiseLoad();this._initializing=false},_loadHandler:function(){if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}this.initialize()},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Type.registerNamespace("Sys.Net");Sys.Net.WebRequestExecutor=function(){this._webRequest=null;this._resultObject=null};Sys.Net.WebRequestExecutor.prototype={get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_started:function(){throw Error.notImplemented()},get_responseAvailable:function(){throw Error.notImplemented()},get_timedOut:function(){throw Error.notImplemented()},get_aborted:function(){throw Error.notImplemented()},get_responseData:function(){throw Error.notImplemented()},get_statusCode:function(){throw Error.notImplemented()},get_statusText:function(){throw Error.notImplemented()},get_xml:function(){throw Error.notImplemented()},get_object:function(){if(!this._resultObject)this._resultObject=Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return this._resultObject},executeRequest:function(){throw Error.notImplemented()},abort:function(){throw Error.notImplemented()},getResponseHeader:function(){throw Error.notImplemented()},getAllResponseHeaders:function(){throw Error.notImplemented()}};Sys.Net.WebRequestExecutor.registerClass("Sys.Net.WebRequestExecutor");Sys.Net.XMLDOM=function(d){if(!window.DOMParser){var c=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"];for(var b=0,f=c.length;b<f;b++)try{var a=new ActiveXObject(c[b]);a.async=false;a.loadXML(d);a.setProperty("SelectionLanguage","XPath");return a}catch(g){}}else try{var e=new window.DOMParser;return e.parseFromString(d,"text/xml")}catch(g){}return null};Sys.Net.XMLHttpExecutor=function(){Sys.Net.XMLHttpExecutor.initializeBase(this);var a=this;this._xmlHttpRequest=null;this._webRequest=null;this._responseAvailable=false;this._timedOut=false;this._timer=null;this._aborted=false;this._started=false;this._onReadyStateChange=function(){if(a._xmlHttpRequest.readyState===4){try{if(typeof a._xmlHttpRequest.status==="undefined")return}catch(b){return}a._clearTimer();a._responseAvailable=true;a._webRequest.completed(Sys.EventArgs.Empty);if(a._xmlHttpRequest!=null){a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest=null}}};this._clearTimer=function(){if(a._timer!=null){window.clearTimeout(a._timer);a._timer=null}};this._onTimeout=function(){if(!a._responseAvailable){a._clearTimer();a._timedOut=true;a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest.abort();a._webRequest.completed(Sys.EventArgs.Empty);a._xmlHttpRequest=null}}};Sys.Net.XMLHttpExecutor.prototype={get_timedOut:function(){return this._timedOut},get_started:function(){return this._started},get_responseAvailable:function(){return this._responseAvailable},get_aborted:function(){return this._aborted},executeRequest:function(){this._webRequest=this.get_webRequest();var c=this._webRequest.get_body(),a=this._webRequest.get_headers();this._xmlHttpRequest=new XMLHttpRequest;this._xmlHttpRequest.onreadystatechange=this._onReadyStateChange;var e=this._webRequest.get_httpVerb();this._xmlHttpRequest.open(e,this._webRequest.getResolvedUrl(),true);if(a)for(var b in a){var f=a[b];if(typeof f!=="function")this._xmlHttpRequest.setRequestHeader(b,f)}if(e.toLowerCase()==="post"){if(a===null||!a["Content-Type"])this._xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");if(!c)c=""}var d=this._webRequest.get_timeout();if(d>0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._this=this;this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var c=document.getElementsByTagName("base")[0];if(c&&c.href&&c.href.length>0)a=c.href;else a=document.URL}var d=a.indexOf("?");if(d!==-1)a=a.substr(0,d);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(d,b){if(!b)b=encodeURIComponent;var a=new Sys.StringBuilder,f=0;for(var c in d){var e=d[c];if(typeof e==="function")continue;var g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(f!==0)a.append("&");a.append(c);a.append("=");a.append(b(g));f++}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b){if(!b)return a;var d=Sys.Net.WebRequest._createQueryString(b);if(d.length>0){var c="?";if(a&&a.indexOf("?")!==-1)c="&";return a+c+d}else return a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={get_timeout:function(){return this._timeout},set_timeout:function(a){if(a<0)throw Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=a},get_defaultUserContext:function(){return this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed},set_defaultFailedCallback:function(a){this._failed=a},get_path:function(){return this._path},set_path:function(a){this._path=a},_invoke:function(d,e,g,f,c,b,a){if(c===null||typeof c==="undefined")c=this.get_defaultSucceededCallback();if(b===null||typeof b==="undefined")b=this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(k,a,j,d,i,c,f,h){var b=new Sys.Net.WebRequest;b.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!d)d={};var g=d;if(!j||!g)g={};b.set_url(Sys.Net.WebRequest._createUrl(k+"/"+encodeURIComponent(a),g));var e=null;if(!j){e=Sys.Serialization.JavaScriptSerializer.serialize(d);if(e==="{}")e=""}b.set_body(e);b.add_completed(l);if(h&&h>0)b.set_timeout(h);b.invoke();function l(d){if(d.get_responseAvailable()){var g=d.get_statusCode(),b=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))b=d.get_object();else if(e.startsWith("text/xml"))b=d.get_xml();else b=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(b)b=new Sys.Net.WebServiceError(false,b.Message,b.StackTrace,b.ExceptionType)}else if(e.startsWith("application/json"))b=b.d;if(g<200||g>=300||h){if(c){if(!b||!h)b=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a),"","");b._statusCode=g;c(b,f,a)}}else if(i)i(b,f,a)}else{var j;if(d.get_timedOut())j=String.format(Sys.Res.webServiceTimedOut,a);else j=String.format(Sys.Res.webServiceFailedNoMsg,a);if(c)c(new Sys.Net.WebServiceError(d.get_timedOut(),j,"",""),f,a)}}return b};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys.Net.WebServiceError=function(c,d,b,a){this._timedOut=c;this._message=d;this._stackTrace=b;this._exceptionType=a;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace},get_exceptionType:function(){return this._exceptionType}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError");Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path||""},load:function(c,d,e,f){var b,a;if(!c){a="GetAllPropertiesForCurrentUser";b={authenticatedUserOnly:false}}else{a="GetPropertiesForCurrentUser";b={properties:this._clonePropertyNames(c),authenticatedUserOnly:false}}this._invoke(this._get_path(),a,false,b,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,b,c,e){var a=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:a.value,authenticatedUserOnly:false},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[b,c,e,a.count])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b<e.length;b++){var a=e[b];if(!d[a]){Array.add(c,a);d[a]=true}}return c},_flattenProperties:function(a,i,j){var b={},e,d,g=0;if(a&&a.length===0)return {value:b,count:0};for(var c in i){e=i[c];d=j?j+"."+c:c;if(Sys.Services.ProfileGroup.isInstanceOfType(e)){var k=this._flattenProperties(a,e,d),h=k.value;g+=k.count;for(var f in h){var l=h[f];b[f]=l}}else if(!a||Array.indexOf(a,d)!==-1){b[d]=e;g++}}return {value:b,count:g}},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._ProfileService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoadComplete:function(a,e,g){if(typeof a!=="object")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Object"));var c=this._unflattenProperties(a);for(var b in c)this.properties[b]=c[b];var d=e[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSucceededCallback();if(d){var f=e[2]||this.get_defaultUserContext();d(a.length,f,"Sys.Services.ProfileService.load")}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileService.load")}},_onSaveComplete:function(a,b,f){var c=b[3];if(a!==null)if(a instanceof Array)c-=a.length;else if(typeof a==="number")c=a;else throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Array"));var d=b[0]||this.get_defaultSaveCompletedCallback()||this.get_defaultSucceededCallback();if(d){var e=b[2]||this.get_defaultUserContext();d(c,e,"Sys.Services.ProfileService.save")}},_onSaveFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileService.save")}},_unflattenProperties:function(e){var c={},d,f,h=0;for(var a in e){h++;f=e[a];d=a.indexOf(".");if(d!==-1){var g=a.substr(0,d);a=a.substr(d+1);var b=c[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=new Sys.Services.ProfileGroup;c[g]=b}b[a]=f}else c[a]=f}e.length=h;return c}};Sys.Services._ProfileService.registerClass("Sys.Services._ProfileService",Sys.Net.WebServiceProxy);Sys.Services.ProfileService=new Sys.Services._ProfileService;Sys.Services.ProfileGroup=function(a){if(a)for(var b in a)this[b]=a[b]};Sys.Services.ProfileGroup.registerClass("Sys.Services.ProfileGroup");Sys.Services._AuthenticationService=function(){Sys.Services._AuthenticationService.initializeBase(this)};Sys.Services._AuthenticationService.DefaultWebServicePath="";Sys.Services._AuthenticationService.prototype={_defaultLoginCompletedCallback:null,_defaultLogoutCompletedCallback:null,_path:"",_timeout:0,_authenticated:false,get_defaultLoginCompletedCallback:function(){return this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:function(a){this._defaultLoginCompletedCallback=a},get_defaultLogoutCompletedCallback:function(){return this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:function(a){this._defaultLogoutCompletedCallback=a},get_isLoggedIn:function(){return this._authenticated},get_path:function(){return this._path||""},login:function(c,b,a,h,f,d,e,g){this._invoke(this._get_path(),"Login",false,{userName:c,password:b,createPersistentCookie:a},Function.createDelegate(this,this._onLoginComplete),Function.createDelegate(this,this._onLoginFailed),[c,b,a,h,f,d,e,g])},logout:function(c,a,b,d){this._invoke(this._get_path(),"Logout",false,{},Function.createDelegate(this,this._onLogoutComplete),Function.createDelegate(this,this._onLogoutFailed),[c,a,b,d])},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._AuthenticationService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoginComplete:function(e,c,f){if(typeof e!=="boolean")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Boolean"));var b=c[4],d=c[7]||this.get_defaultUserContext(),a=c[5]||this.get_defaultLoginCompletedCallback()||this.get_defaultSucceededCallback();if(e){this._authenticated=true;if(a)a(true,d,"Sys.Services.AuthenticationService.login");if(typeof b!=="undefined"&&b!==null)window.location.href=b}else if(a)a(false,d,"Sys.Services.AuthenticationService.login")},_onLoginFailed:function(d,b){var a=b[6]||this.get_defaultFailedCallback();if(a){var c=b[7]||this.get_defaultUserContext();a(d,c,"Sys.Services.AuthenticationService.login")}},_onLogoutComplete:function(f,a,e){if(f!==null)throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,e,"null"));var b=a[0],d=a[3]||this.get_defaultUserContext(),c=a[1]||this.get_defaultLogoutCompletedCallback()||this.get_defaultSucceededCallback();this._authenticated=false;if(c)c(null,d,"Sys.Services.AuthenticationService.logout");if(!b)window.location.reload();else window.location.href=b},_onLogoutFailed:function(c,b){var a=b[2]||this.get_defaultFailedCallback();if(a)a(c,b[3],"Sys.Services.AuthenticationService.logout")},_setAuthenticated:function(a){this._authenticated=a}};Sys.Services._AuthenticationService.registerClass("Sys.Services._AuthenticationService",Sys.Net.WebServiceProxy);Sys.Services.AuthenticationService=new Sys.Services._AuthenticationService;Sys.Services._RoleService=function(){Sys.Services._RoleService.initializeBase(this);this._roles=[]};Sys.Services._RoleService.DefaultWebServicePath="";Sys.Services._RoleService.prototype={_defaultLoadCompletedCallback:null,_rolesIndex:null,_timeout:0,_path:"",get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_path:function(){return this._path||""},get_roles:function(){return Array.clone(this._roles)},isUserInRole:function(a){var b=this._get_rolesIndex()[a.trim().toLowerCase()];return !!b},load:function(a,b,c){Sys.Net.WebServiceProxy.invoke(this._get_path(),"GetRolesForCurrentUser",false,{},Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[a,b,c],this.get_timeout())},_get_path:function(){var a=this.get_path();if(!a||!a.length)a=Sys.Services._RoleService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_get_rolesIndex:function(){if(!this._rolesIndex){var b={};for(var a=0;a<this._roles.length;a++)b[this._roles[a].toLowerCase()]=true;this._rolesIndex=b}return this._rolesIndex},_onLoadComplete:function(a,c,f){if(a&&!(a instanceof Array))throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Array"));this._roles=a;this._rolesIndex=null;var b=c[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSucceededCallback();if(b){var e=c[2]||this.get_defaultUserContext(),d=Array.clone(a);b(d,e,"Sys.Services.RoleService.load")}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.RoleService.load")}}};Sys.Services._RoleService.registerClass("Sys.Services._RoleService",Sys.Net.WebServiceProxy);Sys.Services.RoleService=new Sys.Services._RoleService;Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._serverTypeFieldName="__type";Sys.Serialization.JavaScriptSerializer._stringRegEx=new RegExp('["\\b\\f\\n\\r\\t\\\\\\x00-\\x1F]',"i");Sys.Serialization.JavaScriptSerializer._dateRegEx=new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"',"g");Sys.Serialization.JavaScriptSerializer._jsonRegEx=new RegExp("[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]","g");Sys.Serialization.JavaScriptSerializer._jsonStringRegEx=new RegExp('"(\\\\.|[^"\\\\])*"',"g");Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder=function(b,a){a.append(b.toString())};Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder=function(a,b){if(isFinite(a))b.append(String(a));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers)};Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder=function(c,a){a.append('"');if(Sys.Serialization.JavaScriptSerializer._stringRegEx.test(c)){var d=c.length;for(i=0;i<d;++i){var b=c.charAt(i);if(b>=" "){if(b==="\\"||b==='"')a.append("\\");a.append(b)}else switch(b){case "\b":a.append("\\b");break;case "\f":a.append("\\f");break;case "\n":a.append("\\n");break;case "\r":a.append("\\r");break;case "\t":a.append("\\t");break;default:a.append("\\u00");if(b.charCodeAt()<16)a.append("0");a.append(b.charCodeAt().toString(16))}}}else a.append(c);a.append('"')};Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,i,g){var c;switch(typeof b){case "object":if(b)if(Number.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);else if(Boolean.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);else if(String.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);else if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c<b.length;++c){if(c>0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c<f;c++){var h=b[d[c]];if(typeof h!=="undefined"&&typeof h!=="function"){if(j)a.append(",");else j=true;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(d[c],a,i,g);a.append(":");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(h,a,i,g)}}a.append("}")}else a.append("null");break;case "number":Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);break;case "string":Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);break;case "boolean":Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);break;default:a.append("null")}};Sys.Serialization.JavaScriptSerializer.serialize=function(b){var a=new Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b,a,false);return a.toString()};Sys.Serialization.JavaScriptSerializer.deserialize=function(data,secure){if(data.length===0)throw Error.argument("data",Sys.Res.cannotDeserializeEmptyString);try{var exp=data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx,"$1new Date($2)");if(secure&&Sys.Serialization.JavaScriptSerializer._jsonRegEx.test(exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx,"")))throw null;return eval("("+exp+")")}catch(a){throw Error.argument("data",Sys.Res.cannotDeserializeInvalidJson)}};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getMonthIndex:function(a){if(!this._upperMonths)this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths)this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);return Array.indexOf(this._upperAbbrMonths,this._toUpper(a))},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a<d;a++)b[a]=this._toUpper(c[a]);return b},_toUpper:function(a){return a.split("\u00a0").join(" ").toUpperCase()}};Sys.CultureInfo._parse=function(b){var a=Sys.Serialization.JavaScriptSerializer.deserialize(b);return new Sys.CultureInfo(a.name,a.numberFormat,a.dateTimeFormat)};Sys.CultureInfo.registerClass("Sys.CultureInfo");Sys.CultureInfo.InvariantCulture=Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00a4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');if(typeof __cultureInfo==="undefined")var __cultureInfo='{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse(__cultureInfo);delete __cultureInfo;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!=-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");if(this._element){var a=this.get_name();if(a)this._element[a]=null;Array.remove(this._element._behaviors,this);delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=a[b];return c};Sys.UI.VisibilityMode=function(){throw Error.notImplemented()};Sys.UI.VisibilityMode.prototype={hide:0,collapse:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.Control=function(a){Sys.UI.Control.initializeBase(this);this._element=a;a.control=this};Sys.UI.Control.prototype={_parent:null,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){if(!this._element)return "";return this._element.id},set_id:function(){throw Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this._parent)return this._parent;if(!this._element)return null;var a=this._element.parentNode;while(a){if(a.control)return a.control;a=a.parentNode}return null},set_parent:function(a){this._parent=a},get_visibilityMode:function(){return Sys.UI.DomElement.getVisibilityMode(this._element)},set_visibilityMode:function(a){Sys.UI.DomElement.setVisibilityMode(this._element,a)},get_visible:function(){return Sys.UI.DomElement.getVisible(this._element)},set_visible:function(a){Sys.UI.DomElement.setVisible(this._element,a)},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Control.callBaseMethod(this,"dispose");if(this._element){this._element.control=undefined;delete this._element}if(this._parent)delete this._parent},onBubbleEvent:function(){return false},raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Component);
-Type.registerNamespace('Sys');Sys.Res={'argumentInteger':'Value must be an integer.','scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.','invokeCalledTwice':'Cannot call invoke more than once.','webServiceFailed':'The server method \'{0}\' failed with the following error: {1}','webServiceInvalidJsonWrapper':'The server method \'{0}\' returned invalid data. The \'d\' property is missing from the JSON wrapper.','argumentType':'Object cannot be converted to the required type.','argumentNull':'Value cannot be null.','controlCantSetId':'The id property can\'t be set on a control.','formatBadFormatSpecifier':'Format specifier was invalid.','webServiceFailedNoMsg':'The server method \'{0}\' failed.','argumentDomElement':'Value must be a DOM element.','invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.','cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.','actualValue':'Actual value was {0}.','enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.','scriptLoadFailed':'The script \'{0}\' could not be loaded.','parameterCount':'Parameter count mismatch.','cannotDeserializeEmptyString':'Cannot deserialize empty string.','formatInvalidString':'Input string was not in a correct format.','invalidTimeout':'Value must be greater than or equal to zero.','cannotAbortBeforeStart':'Cannot abort when executor has not started.','argument':'Value does not fall within the expected range.','cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.','invalidHttpVerb':'httpVerb cannot be set to an empty or null string.','nullWebRequest':'Cannot call executeRequest with a null webRequest.','eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.','cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.','argumentUndefined':'Value cannot be undefined.','webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}','servicePathNotSet':'The path to the web service has not been set.','argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.','cannotCallOnceStarted':'Cannot call {0} once started.','badBaseUrl1':'Base URL does not contain ://.','badBaseUrl2':'Base URL does not contain another /.','badBaseUrl3':'Cannot find last / in base URL.','setExecutorAfterActive':'Cannot set executor after it has become active.','paramName':'Parameter name: {0}','cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.','cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.','format':'One of the identified items was in an invalid format.','assertFailedCaller':'Assertion Failed: {0}\r\nat {1}','argumentOutOfRange':'Specified argument was out of the range of valid values.','webServiceTimedOut':'The server method \'{0}\' timed out.','notImplemented':'The method or operation is not implemented.','assertFailed':'Assertion Failed: {0}','invalidOperation':'Operation is not valid due to the current state of the object.','breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'};
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//----------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//----------------------------------------------------------
+// MicrosoftAjax.js
+Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};Function.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};Function.emptyFunction=Function.emptyMethod=function(){};Function._validateParams=function(e,c){var a;a=Function._validateParameterCount(e,c);if(a){a.popStackFrame();return a}for(var b=0;b<e.length;b++){var d=c[Math.min(b,c.length-1)],f=d.name;if(d.parameterArray)f+="["+(b-c.length+1)+"]";a=Function._validateParameter(e[b],d,f);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(e,a){var c=a.length,d=0;for(var b=0;b<a.length;b++)if(a[b].parameterArray)c=Number.MAX_VALUE;else if(!a[b].optional)d++;if(e.length<d||e.length>c){var f=Error.parameterCount();f.popStackFrame();return f}return null};Function._validateParameter=function(c,a,h){var b,g=a.type,l=!!a.integer,k=!!a.domElement,m=!!a.mayBeNull;b=Function._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return b}var e=a.elementType,f=!!a.elementMayBeNull;if(g===Array&&typeof c!=="undefined"&&c!==null&&(e||!f)){var j=!!a.elementInteger,i=!!a.elementDomElement;for(var d=0;d<c.length;d++){var n=c[d];b=Function._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b){b.popStackFrame();return b}}}return null};Function._validateParameterType=function(a,c,n,m,k,d){var b;if(typeof a==="undefined")if(k)return null;else{b=Error.argumentUndefined(d);b.popStackFrame();return b}if(a===null)if(k)return null;else{b=Error.argumentNull(d);b.popStackFrame();return b}if(c&&c.__enum){if(typeof a!=="number"){b=Error.argumentType(d,Object.getType(a),c);b.popStackFrame();return b}if(a%1===0){var e=c.prototype;if(!c.__flags||a===0){for(var i in e)if(e[i]===a)return null}else{var l=a;for(var i in e){var f=e[i];if(f===0)continue;if((f&a)===f)l-=f;if(l===0)return null}}}b=Error.argumentOutOfRange(d,a,String.format(Sys.Res.enumInvalidValue,a,c.getName()));b.popStackFrame();return b}if(m){var h;if(typeof a.nodeType!=="number"){var g=a.ownerDocument||a.document||a;if(g!=a){var j=g.defaultView||g.parentWindow;h=j!=a&&!(j.document&&a.document&&j.document===a.document)}else h=typeof g.body==="undefined"}else h=a.nodeType===3;if(h){b=Error.argument(d,Sys.Res.argumentDomElement);b.popStackFrame();return b}}if(c&&!c.isInstanceOfType(a)){b=Error.argumentType(d,Object.getType(a),c);b.popStackFrame();return b}if(c===Number&&n)if(a%1!==0){b=Error.argumentOutOfRange(d,a,Sys.Res.argumentInteger);b.popStackFrame();return b}return null};Error.__typeName="Error";Error.__class=true;Error.create=function(d,b){var a=new Error(d);a.message=d;if(b)for(var c in b)a[c]=b[c];a.popStackFrame();return a};Error.argument=function(a,c){var b="Sys.ArgumentException: "+(c?c:Sys.Res.argument);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStackFrame();return d};Error.argumentNull=function(a,c){var b="Sys.ArgumentNullException: "+(c?c:Sys.Res.argumentNull);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popStackFrame();return d};Error.argumentOutOfRange=function(c,a,d){var b="Sys.ArgumentOutOfRangeException: "+(d?d:Sys.Res.argumentOutOfRange);if(c)b+="\n"+String.format(Sys.Res.paramName,c);if(typeof a!=="undefined"&&a!==null)b+="\n"+String.format(Sys.Res.actualValue,a);var e=Error.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,actualValue:a});e.popStackFrame();return e};Error.argumentType=function(d,c,b,e){var a="Sys.ArgumentTypeException: ";if(e)a+=e;else if(c&&b)a+=String.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.getName());else a+=Sys.Res.argumentType;if(d)a+="\n"+String.format(Sys.Res.paramName,d);var f=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualType:c,expectedType:b});f.popStackFrame();return f};Error.argumentUndefined=function(a,c){var b="Sys.ArgumentUndefinedException: "+(c?c:Sys.Res.argumentUndefined);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d.popStackFrame();return d};Error.format=function(a){var c="Sys.FormatException: "+(a?a:Sys.Res.format),b=Error.create(c,{name:"Sys.FormatException"});b.popStackFrame();return b};Error.invalidOperation=function(a){var c="Sys.InvalidOperationException: "+(a?a:Sys.Res.invalidOperation),b=Error.create(c,{name:"Sys.InvalidOperationException"});b.popStackFrame();return b};Error.notImplemented=function(a){var c="Sys.NotImplementedException: "+(a?a:Sys.Res.notImplemented),b=Error.create(c,{name:"Sys.NotImplementedException"});b.popStackFrame();return b};Error.parameterCount=function(a){var c="Sys.ParameterCountException: "+(a?a:Sys.Res.parameterCount),b=Error.create(c,{name:"Sys.ParameterCountException"});b.popStackFrame();return b};Error.prototype.popStackFrame=function(){if(typeof this.stack==="undefined"||this.stack===null||typeof this.fileName==="undefined"||this.fileName===null||typeof this.lineNumber==="undefined"||this.lineNumber===null)return;var a=this.stack.split("\n"),c=a[0],e=this.fileName+":"+this.lineNumber;while(typeof c!=="undefined"&&c!==null&&c.indexOf(e)===-1){a.shift();c=a[0]}var d=a[1];if(typeof d==="undefined"||d===null)return;var b=d.match(/@(.*):(\d+)$/);if(typeof b==="undefined"||b===null)return;this.fileName=b[1];this.lineNumber=parseInt(b[2]);a.shift();this.stack=a.join("\n")};Object.__typeName="Object";Object.__class=true;Object.getType=function(b){var a=b.constructor;if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;return a};Object.getTypeName=function(a){return Object.getType(a).getName()};String.__typeName="String";String.__class=true;String.prototype.endsWith=function(a){return this.substr(this.length-a.length)===a};String.prototype.startsWith=function(a){return this.substr(0,a.length)===a};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=function(){return this.replace(/\s+$/,"")};String.prototype.trimStart=function(){return this.replace(/^\s+/,"")};String.format=function(){return String._toFormattedString(false,arguments)};String.localeFormat=function(){return String._toFormattedString(true,arguments)};String._toFormattedString=function(l,j){var c="",e=j[0];for(var a=0;true;){var f=e.indexOf("{",a),d=e.indexOf("}",a);if(f<0&&d<0){c+=e.slice(a);break}if(d>0&&(d<f||f<0)){c+=e.slice(a,d+1);a=d+2;continue}c+=e.slice(a,f);a=f+1;if(e.charAt(a)==="{"){c+="{";a++;continue}if(d<0)break;var h=e.substring(a,d),g=h.indexOf(":"),k=parseInt(g<0?h:h.substring(0,g),10)+1,i=g<0?"":h.substring(g+1),b=j[k];if(typeof b==="undefined"||b===null)b="";if(b.toFormattedString)c+=b.toFormattedString(i);else if(l&&b.localeFormat)c+=b.localeFormat(i);else if(b.format)c+=b.format(i);else c+=b.toString();a=d+1}return c};Boolean.__typeName="Boolean";Boolean.__class=true;Boolean.parse=function(b){var a=b.trim().toLowerCase();if(a==="false")return false;if(a==="true")return true};Date.__typeName="Date";Date.__class=true;Date._appendPreOrPostMatch=function(e,b){var d=0,a=false;for(var c=0,g=e.length;c<g;c++){var f=e.charAt(c);switch(f){case "'":if(a)b.append("'");else d++;a=false;break;case "\\":if(a)b.append("\\");a=!a;break;default:b.append(f);a=false}}return d};Date._expandFormat=function(a,b){if(!b)b="F";if(b.length===1)switch(b){case "d":return a.ShortDatePattern;case "D":return a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return a.LongTimePattern;case "F":return a.FullDateTimePattern;case "M":case "m":return a.MonthDayPattern;case "s":return a.SortableDateTimePattern;case "Y":case "y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString)}return b};Date._expandYear=function(c,a){if(a<100){var b=(new Date).getFullYear();a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)return a-100}return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(g,c,h){var e=false;for(var a=1,i=h.length;a<i;a++){var f=h[a];if(f){e=true;var b=Date._parseExact(g,f,c);if(b)return b}}if(!e){var d=c._getDateTimeFormats();for(var a=0,i=d.length;a<i;a++){var b=Date._parseExact(g,d[a],c);if(b)return b}}return null};Date._parseExact=function(s,y,j){s=s.trim();var m=j.dateTimeFormat,v=Date._getParseRegExp(m,y),x=(new RegExp(v.regExp)).exec(s);if(x===null)return null;var w=v.groups,f=null,c=null,h=null,g=null,d=0,n=0,o=0,e=0,k=null,r=false;for(var p=0,z=w.length;p<z;p++){var a=x[p+1];if(a)switch(w[p]){case "dd":case "d":h=parseInt(a,10);if(h<1||h>31)return null;break;case "MMMM":c=j._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=j._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":var c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":f=Date._expandYear(m,parseInt(a,10));if(f<0||f>9999)return null;break;case "yyyy":f=parseInt(a,10);if(f<0||f>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":n=parseInt(a,10);if(n<0||n>59)return null;break;case "s":case "ss":o=parseInt(a,10);if(o<0||o>59)return null;break;case "tt":case "t":var u=a.toUpperCase();r=u===m.PMDesignator.toUpperCase();if(!r&&u!==m.AMDesignator.toUpperCase())return null;break;case "f":e=parseInt(a,10)*100;if(e<0||e>999)return null;break;case "ff":e=parseInt(a,10)*10;if(e<0||e>999)return null;break;case "fff":e=parseInt(a,10);if(e<0||e>999)return null;break;case "dddd":g=j._getDayIndex(a);if(g<0||g>6)return null;break;case "ddd":g=j._getAbbrDayIndex(a);if(g<0||g>6)return null;break;case "zzz":var q=a.split(/:/);if(q.length!==2)return null;var i=parseInt(q[0],10);if(i<-12||i>13)return null;var l=parseInt(q[1],10);if(l<0||l>59)return null;k=i*60+(a.startsWith("-")?-l:l);break;case "z":case "zz":var i=parseInt(a,10);if(i<-12||i>13)return null;k=i*60}}var b=new Date;if(f===null)f=b.getFullYear();if(c===null)c=b.getMonth();if(h===null)h=b.getDate();b.setFullYear(f,c,h);if(b.getDate()!==h)return null;if(g!==null&&b.getDay()!==g)return null;if(r&&d<12)d+=12;b.setHours(d,n,o,e);if(k!==null){var t=b.getMinutes()-(k+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(t/60,10),t%60)}return b};Date.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype._toFormattedString=function(e,h){if(!e||e.length===0||e==="i")if(h&&h.name.length>0)return this.toLocaleString();else return this.toString();var d=h.dateTimeFormat;e=Date._expandFormat(d,e);var a=new Sys.StringBuilder,b;function c(a){if(a<10)return "0"+a;return a.toString()}function g(a){if(a<10)return "00"+a;if(a<100)return "0"+a;return a.toString()}var j=0,i=Date._getTokenRegExp();for(;true;){var l=i.lastIndex,f=i.exec(e),k=e.slice(l,f?f.index:e.length);j+=Date._appendPreOrPostMatch(k,a);if(!f)break;if(j%2===1){a.append(f[0]);continue}switch(f[0]){case "dddd":a.append(d.DayNames[this.getDay()]);break;case "ddd":a.append(d.AbbreviatedDayNames[this.getDay()]);break;case "dd":a.append(c(this.getDate()));break;case "d":a.append(this.getDate());break;case "MMMM":a.append(d.MonthNames[this.getMonth()]);break;case "MMM":a.append(d.AbbreviatedMonthNames[this.getMonth()]);break;case "MM":a.append(c(this.getMonth()+1));break;case "M":a.append(this.getMonth()+1);break;case "yyyy":a.append(this.getFullYear());break;case "yy":a.append(c(this.getFullYear()%100));break;case "y":a.append(this.getFullYear()%100);break;case "hh":b=this.getHours()%12;if(b===0)b=12;a.append(c(b));break;case "h":b=this.getHours()%12;if(b===0)b=12;a.append(b);break;case "HH":a.append(c(this.getHours()));break;case "H":a.append(this.getHours());break;case "mm":a.append(c(this.getMinutes()));break;case "m":a.append(this.getMinutes());break;case "ss":a.append(c(this.getSeconds()));break;case "s":a.append(this.getSeconds());break;case "tt":a.append(this.getHours()<12?d.AMDesignator:d.PMDesignator);break;case "t":a.append((this.getHours()<12?d.AMDesignator:d.PMDesignator).charAt(0));break;case "f":a.append(g(this.getMilliseconds()).charAt(0));break;case "ff":a.append(g(this.getMilliseconds()).substr(0,2));break;case "fff":a.append(g(this.getMilliseconds()));break;case "z":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+Math.floor(Math.abs(b)));break;case "zz":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+c(Math.floor(Math.abs(b))));break;case "zzz":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+c(Math.floor(Math.abs(b)))+d.TimeSeparator+c(Math.abs(this.getTimezoneOffset()%60)))}}return a.toString()};Number.__typeName="Number";Number.__class=true;Number.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=function(b,n){b=b.trim();if(b.match(/^[+-]?infinity$/i))return parseFloat(b);if(b.match(/^0x[a-f0-9]+$/i))return parseInt(b);var a=n.numberFormat,f=Number._parseNumberNegativePattern(b,a,a.NumberNegativePattern),h=f[0],d=f[1];if(h===""&&a.NumberNegativePattern!==1){f=Number._parseNumberNegativePattern(b,a,1);h=f[0];d=f[1]}if(h==="")h="+";var j,c,e=d.indexOf("e");if(e<0)e=d.indexOf("E");if(e<0){c=d;j=null}else{c=d.substr(0,e);j=d.substr(e+1)}var g,k,m=c.indexOf(a.NumberDecimalSeparator);if(m<0){g=c;k=null}else{g=c.substr(0,m);k=c.substr(m+a.NumberDecimalSeparator.length)}g=g.split(a.NumberGroupSeparator).join("");var l=h+g;if(k!==null)l+="."+k;if(j!==null){var i=Number._parseNumberNegativePattern(j,a,1);if(i[0]==="")i[0]="+";l+="e"+i[0]+i[1]}if(l.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/))return parseFloat(l);return Number.NaN};Number._parseNumberNegativePattern=function(a,d,e){var b=d.NegativeSign,c=d.PositiveSign;switch(e){case 4:b=" "+b;c=" "+c;case 3:if(a.endsWith(b))return ["-",a.substr(0,a.length-b.length)];else if(a.endsWith(c))return ["+",a.substr(0,a.length-c.length)];break;case 2:b+=" ";c+=" ";case 1:if(a.startsWith(b))return ["-",a.substr(b.length)];else if(a.startsWith(c))return ["+",a.substr(c.length)];break;case 0:if(a.startsWith("(")&&a.endsWith(")"))return ["-",a.substr(1,a.length-2)]}return ["",a]};Number.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototype._toFormattedString=function(d,j){if(!d||d.length===0||d==="i")if(j&&j.name.length>0)return this.toLocaleString();else return this.toString();var q=["n %","n%","%n"],p=["-n %","-n%","-%n"],r=["(n)","-n","- n","n-","n -"],o=["$n","n$","$ n","n $"],n=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function i(p,k,j,l,o){var e=j[0],g=1,c=p.toString(),a="",m="",i=c.split(".");if(i.length>1){c=i[0];a=i[1];var h=a.split(/e/i);if(h.length>1){a=h[0];m="e"+h[1]}}if(k>0){var f=a.length-k;if(f>0)a=a.slice(0,k);else if(f<0)for(var n=0;n<Math.abs(f);n++)a+="0";a=o+a}else a="";a+=m;var b=c.length-1,d="";while(b>=0){if(e===0||e>b)if(d.length>0)return c.slice(0,b+1)+l+d+a;else return c.slice(0,b+1)+a;if(d.length>0)d=c.slice(b-e+1,b+1)+l+d;else d=c.slice(b-e+1,b+1);b-=e;if(g<j.length){e=j[g];g++}}return c.slice(0,b+1)+l+d+a}var a=j.numberFormat,e=Math.abs(this);if(!d)d="D";var b=-1;if(d.length>1)b=parseInt(d.slice(1),10);var c;switch(d.charAt(0)){case "d":case "D":c="n";if(b!==-1){var g=""+e,k=b-g.length;if(k>0)for(var m=0;m<k;m++)g="0"+g;e=g}if(this<0)e=-e;break;case "c":case "C":if(this<0)c=n[a.CurrencyNegativePattern];else c=o[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;e=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=r[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;e=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=p[a.PercentNegativePattern];else c=q[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;e=i(Math.abs(this),b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var l=/n|\$|-|%/g,f="";for(;true;){var s=l.lastIndex,h=l.exec(c);f+=c.slice(s,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=e;break;case "$":f+=a.CurrencySymbol;break;case "-":f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};RegExp.__typeName="RegExp";RegExp.__class=true;Array.__typeName="Array";Array.__class=true;Array.add=Array.enqueue=function(a,b){a[a.length]=b};Array.addRange=function(a,b){a.push.apply(a,b)};Array.clear=function(a){a.length=0};Array.clone=function(a){if(a.length===1)return [a[0]];else return Array.apply(null,a)};Array.contains=function(a,b){return Array.indexOf(a,b)>=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a<f;a++){var c=b[a];if(typeof c!=="undefined")e.call(d,c,a,b)}};Array.indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(typeof d[b]!=="undefined"&&d[b]===e)return b}return -1};Array.insert=function(a,b,c){a.splice(b,0,c)};Array.parse=function(value){if(!value)return [];return eval(value)};Array.remove=function(b,c){var a=Array.indexOf(b,c);if(a>=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};if(!window)this.window=this;window.Type=Function;Type.prototype.callBaseMethod=function(a,d,b){var c=this.getBaseMethod(a,d);if(!b)return c.apply(a);else return c.apply(a,b)};Type.prototype.getBaseMethod=function(d,c){var b=this.getBaseType();if(b){var a=b.prototype[c];return a instanceof Function?a:null}return null};Type.prototype.getBaseType=function(){return typeof this.__baseType==="undefined"?null:this.__baseType};Type.prototype.getInterfaces=function(){var a=[],b=this;while(b){var c=b.__interfaces;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Array.contains(a,e))a[a.length]=e}b=b.__baseType}return a};Type.prototype.getName=function(){return typeof this.__typeName==="undefined"?"":this.__typeName};Type.prototype.implementsInterface=function(d){this.resolveInheritance();var c=d.getName(),a=this.__interfaceCache;if(a){var e=a[c];if(typeof e!=="undefined")return e}else a=this.__interfaceCache={};var b=this;while(b){var f=b.__interfaces;if(f)if(Array.indexOf(f,d)!==-1)return a[c]=true;b=b.__baseType}return a[c]=false};Type.prototype.inheritsFrom=function(b){this.resolveInheritance();var a=this.__baseType;while(a){if(a===b)return true;a=a.__baseType}return false};Type.prototype.initializeBase=function(a,b){this.resolveInheritance();if(this.__baseType)if(!b)this.__baseType.apply(a);else this.__baseType.apply(a,b);return a};Type.prototype.isImplementedBy=function(a){if(typeof a==="undefined"||a===null)return false;var b=Object.getType(a);return !!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.isInstanceOfType=function(b){if(typeof b==="undefined"||b===null)return false;if(b instanceof this)return true;var a=Object.getType(b);return !!(a===this)||a.inheritsFrom&&a.inheritsFrom(this)||a.implementsInterface&&a.implementsInterface(this)};Type.prototype.registerClass=function(c,b,d){this.prototype.constructor=this;this.__typeName=c;this.__class=true;if(b){this.__baseType=b;this.__basePrototypePending=true}Sys.__upperCaseTypes[c.toUpperCase()]=this;if(d){this.__interfaces=[];for(var a=2,f=arguments.length;a<f;a++){var e=arguments[a];this.__interfaces.push(e)}}return this};Type.prototype.registerInterface=function(a){Sys.__upperCaseTypes[a.toUpperCase()]=this;this.prototype.constructor=this;this.__typeName=a;this.__interface=true;return this};Type.prototype.resolveInheritance=function(){if(this.__basePrototypePending){var b=this.__baseType;b.resolveInheritance();for(var a in b.prototype){var c=b.prototype[a];if(!this.prototype[a])this.prototype[a]=c}delete this.__basePrototypePending}};Type.getRootNamespaces=function(){return Array.clone(Sys.__rootNamespaces)};Type.isClass=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__class};Type.isInterface=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__interface};Type.isNamespace=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__namespace};Type.parse=function(typeName,ns){var fn;if(ns){fn=Sys.__upperCaseTypes[ns.getName().toUpperCase()+"."+typeName.toUpperCase()];return fn||null}if(!typeName)return null;if(!Type.__htClasses)Type.__htClasses={};fn=Type.__htClasses[typeName];if(!fn){fn=eval(typeName);Type.__htClasses[typeName]=fn}return fn};Type.registerNamespace=function(f){var d=window,c=f.split(".");for(var b=0;b<c.length;b++){var e=c[b],a=d[e];if(!a){a=d[e]={__namespace:true,__typeName:c.slice(0,b+1).join(".")};if(b===0)Sys.__rootNamespaces[Sys.__rootNamespaces.length]=a;a.getName=function(){return this.__typeName}}d=a}};window.Sys={__namespace:true,__typeName:"Sys",getName:function(){return "Sys"},__upperCaseTypes:{}};Sys.__rootNamespaces=[Sys];Sys.IDisposable=function(){};Sys.IDisposable.prototype={};Sys.IDisposable.registerInterface("Sys.IDisposable");Sys.StringBuilder=function(a){this._parts=typeof a!=="undefined"&&a!==null&&a!==""?[a.toString()]:[];this._value={};this._len=0};Sys.StringBuilder.prototype={append:function(a){this._parts[this._parts.length]=a},appendLine:function(a){this._parts[this._parts.length]=typeof a==="undefined"||a===null||a===""?"\r\n":a+"\r\n"},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){if(this._parts.length===0)return true;return this.toString()===""},toString:function(a){a=a||"";var b=this._parts;if(this._len!==b.length){this._value={};this._len=b.length}var d=this._value;if(typeof d[a]==="undefined"){if(a!=="")for(var c=0;c<b.length;)if(typeof b[c]==="undefined"||b[c]===""||b[c]===null)b.splice(c,1);else c++;d[a]=this._parts.join(a)}return d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Mxsml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var a=0,c=b.length;a<c;a++)try{return new ActiveXObject(b[a])}catch(d){}return null};Sys.Browser={};Sys.Browser.InternetExplorer={};Sys.Browser.Firefox={};Sys.Browser.Safari={};Sys.Browser.Opera={};Sys.Browser.agent=null;Sys.Browser.hasDebuggerStatement=false;Sys.Browser.name=navigator.appName;Sys.Browser.version=parseFloat(navigator.appVersion);if(navigator.userAgent.indexOf(" MSIE ")>-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Safari/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Safari\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+="    ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e<j;e++)this._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in a){h=a[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=new Sys._Debug;Sys.Debug.isDebug=false;function Sys$Enum$parse(c,e){var a,b,i;if(e){a=this.__lowerCaseValues;if(!a){this.__lowerCaseValues=a={};var g=this.prototype;for(var f in g)a[f.toLowerCase()]=g[f]}}else a=this.prototype;if(!this.__flags){i=e?c.toLowerCase():c;b=a[i.trim()];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__typeName));return b}else{var h=(e?c.toLowerCase():c).split(","),j=0;for(var d=h.length-1;d>=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);return function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)}},_getEvent:function(a,b){if(!this._list[a]){if(!b)return null;this._list[a]=[]}return this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList");Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.INotifyDisposing=function(){};Sys.INotifyDisposing.prototype={};Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");Sys.Component=function(){if(Sys.Application)Sys.Application.registerDisposableObject(this)};Sys.Component.prototype={_id:null,_initialized:false,_updating:false,get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_id:function(){return this._id},set_id:function(a){this._id=a},get_isInitialized:function(){return this._initialized},get_isUpdating:function(){return this._updating},add_disposing:function(a){this.get_events().addHandler("disposing",a)},remove_disposing:function(a){this.get_events().removeHandler("disposing",a)},add_propertyChanged:function(a){this.get_events().addHandler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_events().removeHandler("propertyChanged",a)},beginUpdate:function(){this._updating=true},dispose:function(){if(this._events){var a=this._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)}delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},endUpdate:function(){this._updating=false;if(!this._initialized)this.initialize();this.updated()},initialize:function(){this._initialized=true},raisePropertyChanged:function(b){if(!this._events)return;var a=this._events.getHandler("propertyChanged");if(a)a(this,new Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.registerClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var d,j=Object.getType(a),e=j===Object||j===Sys.UI.DomElement,h=Sys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginUpdate();for(var c in i){var b=i[c],f=e?null:a["get_"+c];if(e||typeof f!=="function"){var k=a[c];if(!b||typeof b!=="object"||e&&!k)a[c]=b;else Sys$Component$_setProperties(k,b)}else{var l=a["set_"+c];if(typeof l==="function")l.apply(a,[b]);else if(b instanceof Array){d=f.apply(a);for(var g=0,m=d.length,n=b.length;g<n;g++,m++)d[m]=b[g]}else if(typeof b==="object"&&Object.getType(b)===Object){d=f.apply(a);Sys$Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function Sys$Component$_setReferences(c,b){for(var a in b){var e=c["set_"+a],d=$find(b[a]);e.apply(c,[d])}}var $create=Sys.Component.create=function(h,f,d,c,g){var a=g?new h(g):new h,b=Sys.Application,i=b.get_isCreatingComponents();a.beginUpdate();if(f)Sys$Component$_setProperties(a,f);if(d)for(var e in d)a["add_"+e](d[e]);if(a.get_id())b.addComponent(a);if(i){b._createdComponents[b._createdComponents.length]=a;if(c)b._addComponentToSecondPass(a,c);else a.endUpdate()}else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}return a};Sys.UI.MouseButton=function(){throw Error.notImplemented()};Sys.UI.MouseButton.prototype={leftButton:0,middleButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");Sys.UI.Key=function(){throw Error.notImplemented()};Sys.UI.Key.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.Point=function(a,b){this.x=a;this.y=b};Sys.UI.Point.registerClass("Sys.UI.Point");Sys.UI.Bounds=function(c,d,b,a){this.x=c;this.y=d;this.height=a;this.width=b};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI.DomEvent=function(d){var a=d;this.rawEvent=a;this.altKey=a.altKey;if(typeof a.button!=="undefined")this.button=typeof a.which!=="undefined"?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(a.type==="keypress")this.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)this.keyCode=127;else this.keyCode=a.keyCode;this.clientX=a.clientX;this.clientY=a.clientY;this.ctrlKey=a.ctrlKey;this.target=a.target?a.target:a.srcElement;if(typeof a.offsetX!=="undefined"&&typeof a.offsetY!=="undefined"){this.offsetX=a.offsetX;this.offsetY=a.offsetY}else if(this.target&&this.target.nodeType!==3&&typeof a.clientX==="number"){var b=Sys.UI.DomElement.getLocation(this.target),c=Sys.UI.DomElement._getWindow(this.target);this.offsetX=(c.pageXOffset||0)+a.clientX-b.x;this.offsetY=(c.pageYOffset||0)+a.clientY-b.y}this.screenX=a.screenX;this.screenY=a.screenY;this.shiftKey=a.shiftKey;this.type=a.type};Sys.UI.DomEvent.prototype={preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEvent.preventDefault();else if(window.event)this.rawEvent.returnValue=false},stopPropagation:function(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();else if(window.event)this.rawEvent.cancelBubble=true}};Sys.UI.DomEvent.registerClass("Sys.UI.DomEvent");var $addHandler=Sys.UI.DomEvent.addHandler=function(a,d,e){if(!a._events)a._events={};var c=a._events[d];if(!c)a._events[d]=c=[];var b;if(a.addEventListener){b=function(b){return e.call(a,new Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else if(a.attachEvent){b=function(){var b={};try{b=Sys.UI.DomElement._getWindow(a).event}catch(c){}return e.call(a,new Sys.UI.DomEvent(b))};a.attachEvent("on"+d,b)}c[c.length]={handler:e,browserHandler:b}},$addHandlers=Sys.UI.DomEvent.addHandlers=function(e,d,c){for(var b in d){var a=d[b];if(c)a=Function.createDelegate(c,a);$addHandler(e,b,a)}},$clearHandlers=Sys.UI.DomEvent.clearHandlers=function(a){if(a._events){var e=a._events;for(var b in e){var d=e[b];for(var c=d.length-1;c>=0;c--)$removeHandler(a,b,d[c].handler)}a._events=null}},$removeHandler=Sys.UI.DomEvent.removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b<g;b++)if(c[b].handler===f){d=c[b].browserHandler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.UI.DomElement=function(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.UI.DomElement.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=" "+b};Sys.UI.DomElement.containsCssClass=function(b,a){return Array.contains(b.className.split(" "),a)};Sys.UI.DomElement.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var $get=Sys.UI.DomElement.getElementById=function(f,e){if(!e)return document.getElementById(f);if(e.getElementById)return e.getElementById(f);var c=[],d=e.childNodes;for(var b=0;b<d.length;b++){var a=d[b];if(a.nodeType==1)c[c.length]=a}while(c.length){a=c.shift();if(a.id==f)return a;d=a.childNodes;for(b=0;b<d.length;b++){a=d[b];if(a.nodeType==1)c[c.length]=a}}return null};switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:Sys.UI.DomElement.getLocation=function(a){if(a.self||a.nodeType===9)return new Sys.UI.Point(0,0);var b=a.getBoundingClientRect();if(!b)return new Sys.UI.Point(0,0);var d=a.ownerDocument.documentElement,e=b.left-2+d.scrollLeft,f=b.top-2+d.scrollTop;try{var c=a.ownerDocument.parentWindow.frameElement||null;if(c){var g=c.frameBorder==="0"||c.frameBorder==="no"?2:0;e+=g;f+=g}}catch(h){}return new Sys.UI.Point(e,f)};break;case Sys.Browser.Safari:Sys.UI.DomElement.getLocation=function(c){if(c.window&&c.window===c||c.nodeType===9)return new Sys.UI.Point(0,0);var f=0,g=0,j=null,e=null,b;for(var a=c;a;j=a,(e=b,a=a.offsetParent)){b=Sys.UI.DomElement._getCurrentStyle(a);var d=a.tagName;if((a.offsetLeft||a.offsetTop)&&(d!=="BODY"||(!e||e.position!=="absolute"))){f+=a.offsetLeft;g+=a.offsetTop}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(var a=c.parentNode;a;a=a.parentNode){d=a.tagName;if(d!=="BODY"&&d!=="HTML"&&(a.scrollLeft||a.scrollTop)){f-=a.scrollLeft||0;g-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(f,g)};break;case Sys.Browser.Opera:Sys.UI.DomElement.getLocation=function(b){if(b.window&&b.window===b||b.nodeType===9)return new Sys.UI.Point(0,0);var d=0,e=0,i=null;for(var a=b;a;i=a,a=a.offsetParent){var f=a.tagName;d+=a.offsetLeft||0;e+=a.offsetTop||0}var g=b.style.position,c=g&&g!=="static";for(var a=b.parentNode;a;a=a.parentNode){f=a.tagName;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)&&(c&&(a.style.overflow==="scroll"||a.style.overflow==="auto"))){d-=a.scrollLeft||0;e-=a.scrollTop||0}var h=a&&a.style?a.style.position:null;c=c||h&&h!=="static"}return new Sys.UI.Point(d,e)};break;default:Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,i=null,g=null,b=null;for(var a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(var a=d.parentNode;a;a=a.parentNode){c=a.tagName;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)}}Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys._ScriptLoader=function(){this._scriptsToLoad=null;this._scriptLoadedDelegate=Function.createDelegate(this,this._scriptLoadedHandler)};Sys._ScriptLoader.prototype={dispose:function(){this._stopLoading();if(this._events)delete this._events;this._scriptLoadedDelegate=null},loadScripts:function(a,c,d,b){this._loading=true;this._allScriptsLoadedCallback=c;this._scriptLoadFailedCallback=d;this._scriptLoadTimeoutCallback=b;if(a>0)this._timeoutCookie=window.setTimeout(Function.createDelegate(this,this._scriptLoadTimeoutHandler),a*1000);this._loadScriptsInternal()},notifyScriptLoaded:function(){if(!this._loading)return;this._currentTask._notified++;if(Sys.Browser.agent===Sys.Browser.Safari)if(this._currentTask._notified===1)window.setTimeout(Function.createDelegate(this,function(){this._scriptLoadedHandler(this._currentTask.get_scriptElement(),true)}),0)},queueCustomScriptTag:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{text:a})},queueScriptReference:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(c){var a=document.createElement("SCRIPT");a.type="text/javascript";for(var b in c)a[b]=c[b];return a},_loadScriptsInternal:function(){if(this._scriptsToLoad&&this._scriptsToLoad.length>0){var b=Array.dequeue(this._scriptsToLoad),a=this._createScriptElement(b);if(a.text&&Sys.Browser.agent===Sys.Browser.Safari){a.innerHTML=a.text;delete a.text}if(typeof b.src==="string"){this._currentTask=new Sys._ScriptLoaderTask(a,this._scriptLoadedDelegate);this._currentTask.execute()}else{document.getElementsByTagName("HEAD")[0].appendChild(a);var d=this;window.setTimeout(function(){Sys._ScriptLoader._clearScript(a);d._loadScriptsInternal()},0)}}else{var c=this._allScriptsLoadedCallback;this._stopLoading();if(c)c(this)}},_raiseError:function(a){var c=this._scriptLoadFailedCallback,b=this._currentTask.get_scriptElement();this._stopLoading();if(c)c(this,b,a);else throw Sys._ScriptLoader._errorScriptLoadFailed(b.src,a)},_scriptLoadedHandler:function(a,b){if(b&&this._currentTask._notified)if(this._currentTask._notified>1)this._raiseError(true);else{Array.add(Sys._ScriptLoader._getLoadedScripts(),a.src);this._currentTask.dispose();this._currentTask=null;this._loadScriptsInternal()}else this._raiseError(false)},_scriptLoadTimeoutHandler:function(){var a=this._scriptLoadTimeoutCallback;this._stopLoading();if(a)a(this)},_stopLoading:function(){if(this._timeoutCookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=null}if(this._currentTask){this._currentTask.dispose();this._currentTask=null}this._scriptsToLoad=null;this._loading=null;this._allScriptsLoadedCallback=null;this._scriptLoadFailedCallback=null;this._scriptLoadTimeoutCallback=null}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisposable);Sys._ScriptLoader.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};Sys._ScriptLoader.isScriptLoaded=function(b){var a=document.createElement("script");a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptLoader.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){var b=Sys._ScriptLoader._referencedScripts=[],c=document.getElementsByTagName("SCRIPT");for(i=c.length-1;i>=0;i--){var d=c[i],a=d.src;if(a.length)if(!Array.contains(b,a))Array.add(b,a)}}};Sys._ScriptLoader._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Sys._ScriptLoader._errorScriptLoadFailed=function(b,d){var a;if(d)a=Sys.Res.scriptLoadMultipleCallbacks;else a=Sys.Res.scriptLoadFailed;var e="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(e,{name:"Sys.ScriptLoadFailedException","scriptUrl":b});c.popStackFrame();return c};Sys._ScriptLoader._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a;this._notified=0};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoader._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("HEAD")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);this._scriptElement.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);if(this._scriptErrorDelegate){this._scriptElement.removeEventListener("error",this._scriptErrorDelegate,false);this._scriptErrorDelegate=null}this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;var b=this;window.setTimeout(function(){b._completedCallback(a,true)},0)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);this._loadHandlerDelegate=Function.createDelegate(this,this._loadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);Sys.UI.DomEvent.addHandler(window,"load",this._loadHandlerDelegate)};Sys._Application.prototype={_creatingComponents:false,_disposing:false,get_isCreatingComponents:function(){return this._creatingComponents},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,e=b.length;a<e;a++)b[a].dispose();Array.clear(this._disposableObjects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDelegate);if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}var d=Sys._ScriptLoader.getInstance();if(d)d.dispose();Sys._Application.callBaseMethod(this,"dispose")}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a<d;a++){var c=b[a].component;Sys$Component$_setReferences(c,b[a].references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=false},findComponent:function(b,a){return a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Application._components[b]||null},getComponents:function(){var a=[],b=this._components;for(var c in b)a[a.length]=b[c];return a},initialize:function(){if(!this._initialized&&!this._initializing){this._initializing=true;window.setTimeout(Function.createDelegate(this,this._doInitialize),0)}},notifyScriptLoaded:function(){var a=Sys._ScriptLoader.getInstance();if(a)a.notifyScriptLoaded()},registerDisposableObject:function(a){if(!this._disposing)this._disposableObjects[this._disposableObjects.length]=a},raiseLoad:function(){var b=this.get_events().getHandler("load"),a=new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!this._initializing);if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);this._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},unregisterDisposableObject:function(a){if(!this._disposing)Array.remove(this._disposableObjects,a)},_addComponentToSecondPass:function(b,a){this._secondPassComponents[this._secondPassComponents.length]={component:b,references:a}},_doInitialize:function(){Sys._Application.callBaseMethod(this,"initialize");var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}this.raiseLoad();this._initializing=false},_loadHandler:function(){if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}this.initialize()},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Type.registerNamespace("Sys.Net");Sys.Net.WebRequestExecutor=function(){this._webRequest=null;this._resultObject=null};Sys.Net.WebRequestExecutor.prototype={get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_started:function(){throw Error.notImplemented()},get_responseAvailable:function(){throw Error.notImplemented()},get_timedOut:function(){throw Error.notImplemented()},get_aborted:function(){throw Error.notImplemented()},get_responseData:function(){throw Error.notImplemented()},get_statusCode:function(){throw Error.notImplemented()},get_statusText:function(){throw Error.notImplemented()},get_xml:function(){throw Error.notImplemented()},get_object:function(){if(!this._resultObject)this._resultObject=Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return this._resultObject},executeRequest:function(){throw Error.notImplemented()},abort:function(){throw Error.notImplemented()},getResponseHeader:function(){throw Error.notImplemented()},getAllResponseHeaders:function(){throw Error.notImplemented()}};Sys.Net.WebRequestExecutor.registerClass("Sys.Net.WebRequestExecutor");Sys.Net.XMLDOM=function(d){if(!window.DOMParser){var c=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"];for(var b=0,f=c.length;b<f;b++)try{var a=new ActiveXObject(c[b]);a.async=false;a.loadXML(d);a.setProperty("SelectionLanguage","XPath");return a}catch(g){}}else try{var e=new window.DOMParser;return e.parseFromString(d,"text/xml")}catch(g){}return null};Sys.Net.XMLHttpExecutor=function(){Sys.Net.XMLHttpExecutor.initializeBase(this);var a=this;this._xmlHttpRequest=null;this._webRequest=null;this._responseAvailable=false;this._timedOut=false;this._timer=null;this._aborted=false;this._started=false;this._onReadyStateChange=function(){if(a._xmlHttpRequest.readyState===4){try{if(typeof a._xmlHttpRequest.status==="undefined")return}catch(b){return}a._clearTimer();a._responseAvailable=true;a._webRequest.completed(Sys.EventArgs.Empty);if(a._xmlHttpRequest!=null){a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest=null}}};this._clearTimer=function(){if(a._timer!=null){window.clearTimeout(a._timer);a._timer=null}};this._onTimeout=function(){if(!a._responseAvailable){a._clearTimer();a._timedOut=true;a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest.abort();a._webRequest.completed(Sys.EventArgs.Empty);a._xmlHttpRequest=null}}};Sys.Net.XMLHttpExecutor.prototype={get_timedOut:function(){return this._timedOut},get_started:function(){return this._started},get_responseAvailable:function(){return this._responseAvailable},get_aborted:function(){return this._aborted},executeRequest:function(){this._webRequest=this.get_webRequest();var c=this._webRequest.get_body(),a=this._webRequest.get_headers();this._xmlHttpRequest=new XMLHttpRequest;this._xmlHttpRequest.onreadystatechange=this._onReadyStateChange;var e=this._webRequest.get_httpVerb();this._xmlHttpRequest.open(e,this._webRequest.getResolvedUrl(),true);if(a)for(var b in a){var f=a[b];if(typeof f!=="function")this._xmlHttpRequest.setRequestHeader(b,f)}if(e.toLowerCase()==="post"){if(a===null||!a["Content-Type"])this._xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");if(!c)c=""}var d=this._webRequest.get_timeout();if(d>0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._this=this;this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var c=document.getElementsByTagName("base")[0];if(c&&c.href&&c.href.length>0)a=c.href;else a=document.URL}var d=a.indexOf("?");if(d!==-1)a=a.substr(0,d);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(d,b){if(!b)b=encodeURIComponent;var a=new Sys.StringBuilder,f=0;for(var c in d){var e=d[c];if(typeof e==="function")continue;var g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(f!==0)a.append("&");a.append(c);a.append("=");a.append(b(g));f++}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b){if(!b)return a;var d=Sys.Net.WebRequest._createQueryString(b);if(d.length>0){var c="?";if(a&&a.indexOf("?")!==-1)c="&";return a+c+d}else return a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={get_timeout:function(){return this._timeout},set_timeout:function(a){if(a<0)throw Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=a},get_defaultUserContext:function(){return this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed},set_defaultFailedCallback:function(a){this._failed=a},get_path:function(){return this._path},set_path:function(a){this._path=a},_invoke:function(d,e,g,f,c,b,a){if(c===null||typeof c==="undefined")c=this.get_defaultSucceededCallback();if(b===null||typeof b==="undefined")b=this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(k,a,j,d,i,c,f,h){var b=new Sys.Net.WebRequest;b.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!d)d={};var g=d;if(!j||!g)g={};b.set_url(Sys.Net.WebRequest._createUrl(k+"/"+encodeURIComponent(a),g));var e=null;if(!j){e=Sys.Serialization.JavaScriptSerializer.serialize(d);if(e==="{}")e=""}b.set_body(e);b.add_completed(l);if(h&&h>0)b.set_timeout(h);b.invoke();function l(d){if(d.get_responseAvailable()){var g=d.get_statusCode(),b=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))b=d.get_object();else if(e.startsWith("text/xml"))b=d.get_xml();else b=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(b)b=new Sys.Net.WebServiceError(false,b.Message,b.StackTrace,b.ExceptionType)}else if(e.startsWith("application/json"))b=b.d;if(g<200||g>=300||h){if(c){if(!b||!h)b=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a),"","");b._statusCode=g;c(b,f,a)}}else if(i)i(b,f,a)}else{var j;if(d.get_timedOut())j=String.format(Sys.Res.webServiceTimedOut,a);else j=String.format(Sys.Res.webServiceFailedNoMsg,a);if(c)c(new Sys.Net.WebServiceError(d.get_timedOut(),j,"",""),f,a)}}return b};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys.Net.WebServiceError=function(c,d,b,a){this._timedOut=c;this._message=d;this._stackTrace=b;this._exceptionType=a;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace},get_exceptionType:function(){return this._exceptionType}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError");Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path||""},load:function(c,d,e,f){var b,a;if(!c){a="GetAllPropertiesForCurrentUser";b={authenticatedUserOnly:false}}else{a="GetPropertiesForCurrentUser";b={properties:this._clonePropertyNames(c),authenticatedUserOnly:false}}this._invoke(this._get_path(),a,false,b,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,b,c,e){var a=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:a.value,authenticatedUserOnly:false},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[b,c,e,a.count])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b<e.length;b++){var a=e[b];if(!d[a]){Array.add(c,a);d[a]=true}}return c},_flattenProperties:function(a,i,j){var b={},e,d,g=0;if(a&&a.length===0)return {value:b,count:0};for(var c in i){e=i[c];d=j?j+"."+c:c;if(Sys.Services.ProfileGroup.isInstanceOfType(e)){var k=this._flattenProperties(a,e,d),h=k.value;g+=k.count;for(var f in h){var l=h[f];b[f]=l}}else if(!a||Array.indexOf(a,d)!==-1){b[d]=e;g++}}return {value:b,count:g}},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._ProfileService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoadComplete:function(a,e,g){if(typeof a!=="object")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Object"));var c=this._unflattenProperties(a);for(var b in c)this.properties[b]=c[b];var d=e[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSucceededCallback();if(d){var f=e[2]||this.get_defaultUserContext();d(a.length,f,"Sys.Services.ProfileService.load")}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileService.load")}},_onSaveComplete:function(a,b,f){var c=b[3];if(a!==null)if(a instanceof Array)c-=a.length;else if(typeof a==="number")c=a;else throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Array"));var d=b[0]||this.get_defaultSaveCompletedCallback()||this.get_defaultSucceededCallback();if(d){var e=b[2]||this.get_defaultUserContext();d(c,e,"Sys.Services.ProfileService.save")}},_onSaveFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileService.save")}},_unflattenProperties:function(e){var c={},d,f,h=0;for(var a in e){h++;f=e[a];d=a.indexOf(".");if(d!==-1){var g=a.substr(0,d);a=a.substr(d+1);var b=c[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=new Sys.Services.ProfileGroup;c[g]=b}b[a]=f}else c[a]=f}e.length=h;return c}};Sys.Services._ProfileService.registerClass("Sys.Services._ProfileService",Sys.Net.WebServiceProxy);Sys.Services.ProfileService=new Sys.Services._ProfileService;Sys.Services.ProfileGroup=function(a){if(a)for(var b in a)this[b]=a[b]};Sys.Services.ProfileGroup.registerClass("Sys.Services.ProfileGroup");Sys.Services._AuthenticationService=function(){Sys.Services._AuthenticationService.initializeBase(this)};Sys.Services._AuthenticationService.DefaultWebServicePath="";Sys.Services._AuthenticationService.prototype={_defaultLoginCompletedCallback:null,_defaultLogoutCompletedCallback:null,_path:"",_timeout:0,_authenticated:false,get_defaultLoginCompletedCallback:function(){return this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:function(a){this._defaultLoginCompletedCallback=a},get_defaultLogoutCompletedCallback:function(){return this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:function(a){this._defaultLogoutCompletedCallback=a},get_isLoggedIn:function(){return this._authenticated},get_path:function(){return this._path||""},login:function(c,b,a,h,f,d,e,g){this._invoke(this._get_path(),"Login",false,{userName:c,password:b,createPersistentCookie:a},Function.createDelegate(this,this._onLoginComplete),Function.createDelegate(this,this._onLoginFailed),[c,b,a,h,f,d,e,g])},logout:function(c,a,b,d){this._invoke(this._get_path(),"Logout",false,{},Function.createDelegate(this,this._onLogoutComplete),Function.createDelegate(this,this._onLogoutFailed),[c,a,b,d])},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._AuthenticationService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoginComplete:function(e,c,f){if(typeof e!=="boolean")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Boolean"));var b=c[4],d=c[7]||this.get_defaultUserContext(),a=c[5]||this.get_defaultLoginCompletedCallback()||this.get_defaultSucceededCallback();if(e){this._authenticated=true;if(a)a(true,d,"Sys.Services.AuthenticationService.login");if(typeof b!=="undefined"&&b!==null)window.location.href=b}else if(a)a(false,d,"Sys.Services.AuthenticationService.login")},_onLoginFailed:function(d,b){var a=b[6]||this.get_defaultFailedCallback();if(a){var c=b[7]||this.get_defaultUserContext();a(d,c,"Sys.Services.AuthenticationService.login")}},_onLogoutComplete:function(f,a,e){if(f!==null)throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,e,"null"));var b=a[0],d=a[3]||this.get_defaultUserContext(),c=a[1]||this.get_defaultLogoutCompletedCallback()||this.get_defaultSucceededCallback();this._authenticated=false;if(c)c(null,d,"Sys.Services.AuthenticationService.logout");if(!b)window.location.reload();else window.location.href=b},_onLogoutFailed:function(c,b){var a=b[2]||this.get_defaultFailedCallback();if(a)a(c,b[3],"Sys.Services.AuthenticationService.logout")},_setAuthenticated:function(a){this._authenticated=a}};Sys.Services._AuthenticationService.registerClass("Sys.Services._AuthenticationService",Sys.Net.WebServiceProxy);Sys.Services.AuthenticationService=new Sys.Services._AuthenticationService;Sys.Services._RoleService=function(){Sys.Services._RoleService.initializeBase(this);this._roles=[]};Sys.Services._RoleService.DefaultWebServicePath="";Sys.Services._RoleService.prototype={_defaultLoadCompletedCallback:null,_rolesIndex:null,_timeout:0,_path:"",get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_path:function(){return this._path||""},get_roles:function(){return Array.clone(this._roles)},isUserInRole:function(a){var b=this._get_rolesIndex()[a.trim().toLowerCase()];return !!b},load:function(a,b,c){Sys.Net.WebServiceProxy.invoke(this._get_path(),"GetRolesForCurrentUser",false,{},Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[a,b,c],this.get_timeout())},_get_path:function(){var a=this.get_path();if(!a||!a.length)a=Sys.Services._RoleService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_get_rolesIndex:function(){if(!this._rolesIndex){var b={};for(var a=0;a<this._roles.length;a++)b[this._roles[a].toLowerCase()]=true;this._rolesIndex=b}return this._rolesIndex},_onLoadComplete:function(a,c,f){if(a&&!(a instanceof Array))throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Array"));this._roles=a;this._rolesIndex=null;var b=c[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSucceededCallback();if(b){var e=c[2]||this.get_defaultUserContext(),d=Array.clone(a);b(d,e,"Sys.Services.RoleService.load")}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.RoleService.load")}}};Sys.Services._RoleService.registerClass("Sys.Services._RoleService",Sys.Net.WebServiceProxy);Sys.Services.RoleService=new Sys.Services._RoleService;Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._serverTypeFieldName="__type";Sys.Serialization.JavaScriptSerializer._stringRegEx=new RegExp('["\\b\\f\\n\\r\\t\\\\\\x00-\\x1F]',"i");Sys.Serialization.JavaScriptSerializer._dateRegEx=new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"',"g");Sys.Serialization.JavaScriptSerializer._jsonRegEx=new RegExp("[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]","g");Sys.Serialization.JavaScriptSerializer._jsonStringRegEx=new RegExp('"(\\\\.|[^"\\\\])*"',"g");Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder=function(b,a){a.append(b.toString())};Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder=function(a,b){if(isFinite(a))b.append(String(a));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers)};Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder=function(c,a){a.append('"');if(Sys.Serialization.JavaScriptSerializer._stringRegEx.test(c)){var d=c.length;for(i=0;i<d;++i){var b=c.charAt(i);if(b>=" "){if(b==="\\"||b==='"')a.append("\\");a.append(b)}else switch(b){case "\b":a.append("\\b");break;case "\f":a.append("\\f");break;case "\n":a.append("\\n");break;case "\r":a.append("\\r");break;case "\t":a.append("\\t");break;default:a.append("\\u00");if(b.charCodeAt()<16)a.append("0");a.append(b.charCodeAt().toString(16))}}}else a.append(c);a.append('"')};Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,i,g){var c;switch(typeof b){case "object":if(b)if(Number.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);else if(Boolean.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);else if(String.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);else if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c<b.length;++c){if(c>0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c<f;c++){var h=b[d[c]];if(typeof h!=="undefined"&&typeof h!=="function"){if(j)a.append(",");else j=true;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(d[c],a,i,g);a.append(":");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(h,a,i,g)}}a.append("}")}else a.append("null");break;case "number":Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);break;case "string":Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);break;case "boolean":Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);break;default:a.append("null")}};Sys.Serialization.JavaScriptSerializer.serialize=function(b){var a=new Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b,a,false);return a.toString()};Sys.Serialization.JavaScriptSerializer.deserialize=function(data,secure){if(data.length===0)throw Error.argument("data",Sys.Res.cannotDeserializeEmptyString);try{var exp=data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx,"$1new Date($2)");if(secure&&Sys.Serialization.JavaScriptSerializer._jsonRegEx.test(exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx,"")))throw null;return eval("("+exp+")")}catch(a){throw Error.argument("data",Sys.Res.cannotDeserializeInvalidJson)}};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getMonthIndex:function(a){if(!this._upperMonths)this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths)this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);return Array.indexOf(this._upperAbbrMonths,this._toUpper(a))},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a<d;a++)b[a]=this._toUpper(c[a]);return b},_toUpper:function(a){return a.split("\u00a0").join(" ").toUpperCase()}};Sys.CultureInfo._parse=function(b){var a=Sys.Serialization.JavaScriptSerializer.deserialize(b);return new Sys.CultureInfo(a.name,a.numberFormat,a.dateTimeFormat)};Sys.CultureInfo.registerClass("Sys.CultureInfo");Sys.CultureInfo.InvariantCulture=Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00a4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');if(typeof __cultureInfo==="undefined")var __cultureInfo='{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse(__cultureInfo);delete __cultureInfo;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!=-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");if(this._element){var a=this.get_name();if(a)this._element[a]=null;Array.remove(this._element._behaviors,this);delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=a[b];return c};Sys.UI.VisibilityMode=function(){throw Error.notImplemented()};Sys.UI.VisibilityMode.prototype={hide:0,collapse:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.Control=function(a){Sys.UI.Control.initializeBase(this);this._element=a;a.control=this};Sys.UI.Control.prototype={_parent:null,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){if(!this._element)return "";return this._element.id},set_id:function(){throw Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this._parent)return this._parent;if(!this._element)return null;var a=this._element.parentNode;while(a){if(a.control)return a.control;a=a.parentNode}return null},set_parent:function(a){this._parent=a},get_visibilityMode:function(){return Sys.UI.DomElement.getVisibilityMode(this._element)},set_visibilityMode:function(a){Sys.UI.DomElement.setVisibilityMode(this._element,a)},get_visible:function(){return Sys.UI.DomElement.getVisible(this._element)},set_visible:function(a){Sys.UI.DomElement.setVisible(this._element,a)},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Control.callBaseMethod(this,"dispose");if(this._element){this._element.control=undefined;delete this._element}if(this._parent)delete this._parent},onBubbleEvent:function(){return false},raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Component);
+Type.registerNamespace('Sys');Sys.Res={'argumentInteger':'Value must be an integer.','scriptLoadMultipleCallbacks':'The script \'{0}\' contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.','invokeCalledTwice':'Cannot call invoke more than once.','webServiceFailed':'The server method \'{0}\' failed with the following error: {1}','webServiceInvalidJsonWrapper':'The server method \'{0}\' returned invalid data. The \'d\' property is missing from the JSON wrapper.','argumentType':'Object cannot be converted to the required type.','argumentNull':'Value cannot be null.','controlCantSetId':'The id property can\'t be set on a control.','formatBadFormatSpecifier':'Format specifier was invalid.','webServiceFailedNoMsg':'The server method \'{0}\' failed.','argumentDomElement':'Value must be a DOM element.','invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.','cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.','actualValue':'Actual value was {0}.','enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.','scriptLoadFailed':'The script \'{0}\' could not be loaded.','parameterCount':'Parameter count mismatch.','cannotDeserializeEmptyString':'Cannot deserialize empty string.','formatInvalidString':'Input string was not in a correct format.','invalidTimeout':'Value must be greater than or equal to zero.','cannotAbortBeforeStart':'Cannot abort when executor has not started.','argument':'Value does not fall within the expected range.','cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.','invalidHttpVerb':'httpVerb cannot be set to an empty or null string.','nullWebRequest':'Cannot call executeRequest with a null webRequest.','eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.','cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.','argumentUndefined':'Value cannot be undefined.','webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}','servicePathNotSet':'The path to the web service has not been set.','argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.','cannotCallOnceStarted':'Cannot call {0} once started.','badBaseUrl1':'Base URL does not contain ://.','badBaseUrl2':'Base URL does not contain another /.','badBaseUrl3':'Cannot find last / in base URL.','setExecutorAfterActive':'Cannot set executor after it has become active.','paramName':'Parameter name: {0}','cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.','cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.','format':'One of the identified items was in an invalid format.','assertFailedCaller':'Assertion Failed: {0}\r\nat {1}','argumentOutOfRange':'Specified argument was out of the range of valid values.','webServiceTimedOut':'The server method \'{0}\' timed out.','notImplemented':'The method or operation is not implemented.','assertFailed':'Assertion Failed: {0}','invalidOperation':'Operation is not valid due to the current state of the object.','breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'};
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.debug.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.debug.js
@@ -1,132 +1,132 @@
-//-----------------------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------
-// MicrosoftAjaxTimer.js
-// Sys.UI._Timer component
-Sys.UI._Timer = function Sys$UI$_Timer(element) {
-    Sys.UI._Timer.initializeBase(this,[element]);
-    this._interval = 60000;
-    this._enabled = true;
-    this._postbackPending = false;
-    this._raiseTickDelegate = null;
-    this._endRequestHandlerDelegate = null;
-    this._timer = null;
-    this._pageRequestManager = null;
-    this._uniqueID = null;
-}
-    function Sys$UI$_Timer$get_enabled() {
-        /// <value type="Boolean" locid="P:J#Sys.UI._Timer.enabled"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._enabled;
-    }
-    function Sys$UI$_Timer$set_enabled(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-        this._enabled = value;
-    }
-    function Sys$UI$_Timer$get_interval() {
-        /// <value type="Number" locid="P:J#Sys.UI._Timer.interval"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._interval;
-    }
-    function Sys$UI$_Timer$set_interval(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-        this._interval = value;
-    }
-    function Sys$UI$_Timer$get_uniqueID(){
-        /// <value type="String" locid="P:J#Sys.UI._Timer.uniqueID"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._uniqueID;
-    }
-    function Sys$UI$_Timer$set_uniqueID(value){
-        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
-        if (e) throw e;
-        this._uniqueID = value;
-    }
-    function Sys$UI$_Timer$dispose(){
-       this._stopTimer();
-       if(this._pageRequestManager !== null){
-           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
-       }
-       Sys.UI._Timer.callBaseMethod(this,"dispose");
-    }
-    function Sys$UI$_Timer$_doPostback(){
-        __doPostBack(this.get_uniqueID(),'');
-    }
-    function Sys$UI$_Timer$_handleEndRequest(sender, arg){
-        var dataItem = arg.get_dataItems()[this.get_id()];
-	    if (dataItem){
-            this._update(dataItem[0],dataItem[1]);
-	  	}
-	  
-	    if ((this._postbackPending === true) && (this._pageRequestManager !== null)&&(this._pageRequestManager.get_isInAsyncPostBack() === false)){
-    	   	this._postbackPending = false;
-            this._doPostback();
-        }
-	   
-    }
-    function Sys$UI$_Timer$initialize(){
-        Sys.UI._Timer.callBaseMethod(this, 'initialize');
-    	this._raiseTickDelegate = Function.createDelegate(this,this._raiseTick);
-    	this._endRequestHandlerDelegate = Function.createDelegate(this,this._handleEndRequest);
-    	if (Sys.WebForms && Sys.WebForms.PageRequestManager){
-           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();  
-    	}
-    	if (this._pageRequestManager !== null ){
-    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
-    	}
-        if(this.get_enabled()) {
-            this._startTimer();
-        }
-    }
-    function Sys$UI$_Timer$_raiseTick() {
-        this._startTimer();
-        if ((this._pageRequestManager === null) || (!this._pageRequestManager.get_isInAsyncPostBack())){
-            this._doPostback();
-            this._postbackPending = false;
-        } 
-        else {
-            this._postbackPending = true;
-        }
-    }
-    function Sys$UI$_Timer$_startTimer(){
-        this._timer = window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval());
-    }
-    function Sys$UI$_Timer$_stopTimer(){
-	    if (this._timer !== null){
-	 	    window.clearTimeout(this._timer);
-		    this._timer = null;
-       } 	
-    }
-    function Sys$UI$_Timer$_update(enabled,interval) {
-        var stopped = !this.get_enabled();
-        var intervalChanged= (this.get_interval() !== interval);
-	    if ((!stopped) && ((!enabled)||(intervalChanged))){
-    	  	this._stopTimer();
-    		stopped = true;
-       	} 
-    	this.set_enabled(enabled);
-    	this.set_interval(interval);
-    	if ((this.get_enabled()) && (stopped)){
-    	    this._startTimer();
-    	}
-    }
-Sys.UI._Timer.prototype = {
-    get_enabled: Sys$UI$_Timer$get_enabled,
-    set_enabled: Sys$UI$_Timer$set_enabled,
-    get_interval: Sys$UI$_Timer$get_interval,
-    set_interval: Sys$UI$_Timer$set_interval,
-    get_uniqueID: Sys$UI$_Timer$get_uniqueID,
-    set_uniqueID: Sys$UI$_Timer$set_uniqueID,
-    dispose: Sys$UI$_Timer$dispose,
-    _doPostback: Sys$UI$_Timer$_doPostback,
-    _handleEndRequest: Sys$UI$_Timer$_handleEndRequest,
-    initialize: Sys$UI$_Timer$initialize,
-    _raiseTick: Sys$UI$_Timer$_raiseTick,
-    _startTimer: Sys$UI$_Timer$_startTimer,
-    _stopTimer: Sys$UI$_Timer$_stopTimer,
-    _update: Sys$UI$_Timer$_update
-}
-Sys.UI._Timer.registerClass('Sys.UI._Timer', Sys.UI.Control);
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+//-----------------------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------
+// MicrosoftAjaxTimer.js
+// Sys.UI._Timer component
+Sys.UI._Timer = function Sys$UI$_Timer(element) {
+    Sys.UI._Timer.initializeBase(this,[element]);
+    this._interval = 60000;
+    this._enabled = true;
+    this._postbackPending = false;
+    this._raiseTickDelegate = null;
+    this._endRequestHandlerDelegate = null;
+    this._timer = null;
+    this._pageRequestManager = null;
+    this._uniqueID = null;
+}
+    function Sys$UI$_Timer$get_enabled() {
+        /// <value type="Boolean" locid="P:J#Sys.UI._Timer.enabled"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._enabled;
+    }
+    function Sys$UI$_Timer$set_enabled(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+        this._enabled = value;
+    }
+    function Sys$UI$_Timer$get_interval() {
+        /// <value type="Number" locid="P:J#Sys.UI._Timer.interval"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._interval;
+    }
+    function Sys$UI$_Timer$set_interval(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+        this._interval = value;
+    }
+    function Sys$UI$_Timer$get_uniqueID(){
+        /// <value type="String" locid="P:J#Sys.UI._Timer.uniqueID"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._uniqueID;
+    }
+    function Sys$UI$_Timer$set_uniqueID(value){
+        var e = Function._validateParams(arguments, [{name: "value", type: String}]);
+        if (e) throw e;
+        this._uniqueID = value;
+    }
+    function Sys$UI$_Timer$dispose(){
+       this._stopTimer();
+       if(this._pageRequestManager !== null){
+           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
+       }
+       Sys.UI._Timer.callBaseMethod(this,"dispose");
+    }
+    function Sys$UI$_Timer$_doPostback(){
+        __doPostBack(this.get_uniqueID(),'');
+    }
+    function Sys$UI$_Timer$_handleEndRequest(sender, arg){
+        var dataItem = arg.get_dataItems()[this.get_id()];
+	    if (dataItem){
+            this._update(dataItem[0],dataItem[1]);
+	  	}
+	  
+	    if ((this._postbackPending === true) && (this._pageRequestManager !== null)&&(this._pageRequestManager.get_isInAsyncPostBack() === false)){
+    	   	this._postbackPending = false;
+            this._doPostback();
+        }
+	   
+    }
+    function Sys$UI$_Timer$initialize(){
+        Sys.UI._Timer.callBaseMethod(this, 'initialize');
+    	this._raiseTickDelegate = Function.createDelegate(this,this._raiseTick);
+    	this._endRequestHandlerDelegate = Function.createDelegate(this,this._handleEndRequest);
+    	if (Sys.WebForms && Sys.WebForms.PageRequestManager){
+           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();  
+    	}
+    	if (this._pageRequestManager !== null ){
+    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
+    	}
+        if(this.get_enabled()) {
+            this._startTimer();
+        }
+    }
+    function Sys$UI$_Timer$_raiseTick() {
+        this._startTimer();
+        if ((this._pageRequestManager === null) || (!this._pageRequestManager.get_isInAsyncPostBack())){
+            this._doPostback();
+            this._postbackPending = false;
+        } 
+        else {
+            this._postbackPending = true;
+        }
+    }
+    function Sys$UI$_Timer$_startTimer(){
+        this._timer = window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval());
+    }
+    function Sys$UI$_Timer$_stopTimer(){
+	    if (this._timer !== null){
+	 	    window.clearTimeout(this._timer);
+		    this._timer = null;
+       } 	
+    }
+    function Sys$UI$_Timer$_update(enabled,interval) {
+        var stopped = !this.get_enabled();
+        var intervalChanged= (this.get_interval() !== interval);
+	    if ((!stopped) && ((!enabled)||(intervalChanged))){
+    	  	this._stopTimer();
+    		stopped = true;
+       	} 
+    	this.set_enabled(enabled);
+    	this.set_interval(interval);
+    	if ((this.get_enabled()) && (stopped)){
+    	    this._startTimer();
+    	}
+    }
+Sys.UI._Timer.prototype = {
+    get_enabled: Sys$UI$_Timer$get_enabled,
+    set_enabled: Sys$UI$_Timer$set_enabled,
+    get_interval: Sys$UI$_Timer$get_interval,
+    set_interval: Sys$UI$_Timer$set_interval,
+    get_uniqueID: Sys$UI$_Timer$get_uniqueID,
+    set_uniqueID: Sys$UI$_Timer$set_uniqueID,
+    dispose: Sys$UI$_Timer$dispose,
+    _doPostback: Sys$UI$_Timer$_doPostback,
+    _handleEndRequest: Sys$UI$_Timer$_handleEndRequest,
+    initialize: Sys$UI$_Timer$initialize,
+    _raiseTick: Sys$UI$_Timer$_raiseTick,
+    _startTimer: Sys$UI$_Timer$_startTimer,
+    _stopTimer: Sys$UI$_Timer$_stopTimer,
+    _update: Sys$UI$_Timer$_update
+}
+Sys.UI._Timer.registerClass('Sys.UI._Timer', Sys.UI.Control);
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxTimer.js
@@ -1,6 +1,6 @@
-﻿//----------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//----------------------------------------------------------
-// MicrosoftAjaxTimer.js
-Sys.UI._Timer=function(a){Sys.UI._Timer.initializeBase(this,[a]);this._interval=60000;this._enabled=true;this._postbackPending=false;this._raiseTickDelegate=null;this._endRequestHandlerDelegate=null;this._timer=null;this._pageRequestManager=null;this._uniqueID=null};Sys.UI._Timer.prototype={get_enabled:function(){return this._enabled},set_enabled:function(a){this._enabled=a},get_interval:function(){return this._interval},set_interval:function(a){this._interval=a},get_uniqueID:function(){return this._uniqueID},set_uniqueID:function(a){this._uniqueID=a},dispose:function(){this._stopTimer();if(this._pageRequestManager!==null)this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);Sys.UI._Timer.callBaseMethod(this,"dispose")},_doPostback:function(){__doPostBack(this.get_uniqueID(),"")},_handleEndRequest:function(c,b){var a=b.get_dataItems()[this.get_id()];if(a)this._update(a[0],a[1]);if(this._postbackPending===true&&this._pageRequestManager!==null&&this._pageRequestManager.get_isInAsyncPostBack()===false){this._postbackPending=false;this._doPostback()}},initialize:function(){Sys.UI._Timer.callBaseMethod(this,"initialize");this._raiseTickDelegate=Function.createDelegate(this,this._raiseTick);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null)this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);if(this.get_enabled())this._startTimer()},_raiseTick:function(){this._startTimer();if(this._pageRequestManager===null||!this._pageRequestManager.get_isInAsyncPostBack()){this._doPostback();this._postbackPending=false}else this._postbackPending=true},_startTimer:function(){this._timer=window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval())},_stopTimer:function(){if(this._timer!==null){window.clearTimeout(this._timer);this._timer=null}},_update:function(c,b){var a=!this.get_enabled(),d=this.get_interval()!==b;if(!a&&(!c||d)){this._stopTimer();a=true}this.set_enabled(c);this.set_interval(b);if(this.get_enabled()&&a)this._startTimer()}};Sys.UI._Timer.registerClass("Sys.UI._Timer",Sys.UI.Control);
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//----------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//----------------------------------------------------------
+// MicrosoftAjaxTimer.js
+Sys.UI._Timer=function(a){Sys.UI._Timer.initializeBase(this,[a]);this._interval=60000;this._enabled=true;this._postbackPending=false;this._raiseTickDelegate=null;this._endRequestHandlerDelegate=null;this._timer=null;this._pageRequestManager=null;this._uniqueID=null};Sys.UI._Timer.prototype={get_enabled:function(){return this._enabled},set_enabled:function(a){this._enabled=a},get_interval:function(){return this._interval},set_interval:function(a){this._interval=a},get_uniqueID:function(){return this._uniqueID},set_uniqueID:function(a){this._uniqueID=a},dispose:function(){this._stopTimer();if(this._pageRequestManager!==null)this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);Sys.UI._Timer.callBaseMethod(this,"dispose")},_doPostback:function(){__doPostBack(this.get_uniqueID(),"")},_handleEndRequest:function(c,b){var a=b.get_dataItems()[this.get_id()];if(a)this._update(a[0],a[1]);if(this._postbackPending===true&&this._pageRequestManager!==null&&this._pageRequestManager.get_isInAsyncPostBack()===false){this._postbackPending=false;this._doPostback()}},initialize:function(){Sys.UI._Timer.callBaseMethod(this,"initialize");this._raiseTickDelegate=Function.createDelegate(this,this._raiseTick);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null)this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);if(this.get_enabled())this._startTimer()},_raiseTick:function(){this._startTimer();if(this._pageRequestManager===null||!this._pageRequestManager.get_isInAsyncPostBack()){this._doPostback();this._postbackPending=false}else this._postbackPending=true},_startTimer:function(){this._timer=window.setTimeout(Function.createDelegate(this,this._raiseTick),this.get_interval())},_stopTimer:function(){if(this._timer!==null){window.clearTimeout(this._timer);this._timer=null}},_update:function(c,b){var a=!this.get_enabled(),d=this.get_interval()!==b;if(!a&&(!c||d)){this._stopTimer();a=true}this.set_enabled(c);this.set_interval(b);if(this.get_enabled()&&a)this._startTimer()}};Sys.UI._Timer.registerClass("Sys.UI._Timer",Sys.UI.Control);
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.debug.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.debug.js
@@ -1,1491 +1,1491 @@
-//-----------------------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//-----------------------------------------------------------------------
-// MicrosoftAjaxWebForms.js
-// Microsoft AJAX ASP.NET WebForms Framework.
-Type.registerNamespace('Sys.WebForms');
-Sys.WebForms.BeginRequestEventArgs = function Sys$WebForms$BeginRequestEventArgs(request, postBackElement) {
-    /// <summary locid="M:J#Sys.WebForms.BeginRequestEventArgs.#ctor" />
-    /// <param name="request" type="Sys.Net.WebRequest"></param>
-    /// <param name="postBackElement" domElement="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "request", type: Sys.Net.WebRequest},
-        {name: "postBackElement", mayBeNull: true, domElement: true}
-    ]);
-    if (e) throw e;
-    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
-    this._request = request;
-    this._postBackElement = postBackElement;
-}
-    function Sys$WebForms$BeginRequestEventArgs$get_postBackElement() {
-        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.BeginRequestEventArgs.postBackElement"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._postBackElement;
-    }
-    function Sys$WebForms$BeginRequestEventArgs$get_request() {
-        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.BeginRequestEventArgs.request"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._request;
-    }
-Sys.WebForms.BeginRequestEventArgs.prototype = {
-    get_postBackElement: Sys$WebForms$BeginRequestEventArgs$get_postBackElement,
-    get_request: Sys$WebForms$BeginRequestEventArgs$get_request
-}
-Sys.WebForms.BeginRequestEventArgs.registerClass('Sys.WebForms.BeginRequestEventArgs', Sys.EventArgs);
- 
-Sys.WebForms.EndRequestEventArgs = function Sys$WebForms$EndRequestEventArgs(error, dataItems, response) {
-    /// <summary locid="M:J#Sys.WebForms.EndRequestEventArgs.#ctor" />
-    /// <param name="error" type="Error" mayBeNull="true"></param>
-    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
-    /// <param name="response" type="Sys.Net.WebRequestExecutor"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "error", type: Error, mayBeNull: true},
-        {name: "dataItems", type: Object, mayBeNull: true},
-        {name: "response", type: Sys.Net.WebRequestExecutor}
-    ]);
-    if (e) throw e;
-    Sys.WebForms.EndRequestEventArgs.initializeBase(this);
-    this._errorHandled = false;
-    this._error = error;
-    this._dataItems = dataItems || new Object();
-    this._response = response;
-}
-    function Sys$WebForms$EndRequestEventArgs$get_dataItems() {
-        /// <value type="Object" locid="P:J#Sys.WebForms.EndRequestEventArgs.dataItems"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dataItems;
-    }
-    function Sys$WebForms$EndRequestEventArgs$get_error() {
-        /// <value type="Error" locid="P:J#Sys.WebForms.EndRequestEventArgs.error"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._error;
-    }
-    function Sys$WebForms$EndRequestEventArgs$get_errorHandled() {
-        /// <value type="Boolean" locid="P:J#Sys.WebForms.EndRequestEventArgs.errorHandled"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._errorHandled;
-    }
-    function Sys$WebForms$EndRequestEventArgs$set_errorHandled(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-        this._errorHandled = value;
-    }
-    function Sys$WebForms$EndRequestEventArgs$get_response() {
-        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.WebForms.EndRequestEventArgs.response"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._response;
-    }
-Sys.WebForms.EndRequestEventArgs.prototype = {
-    get_dataItems: Sys$WebForms$EndRequestEventArgs$get_dataItems,
-    get_error: Sys$WebForms$EndRequestEventArgs$get_error,
-    get_errorHandled: Sys$WebForms$EndRequestEventArgs$get_errorHandled,
-    set_errorHandled: Sys$WebForms$EndRequestEventArgs$set_errorHandled,
-    get_response: Sys$WebForms$EndRequestEventArgs$get_response
-}
-Sys.WebForms.EndRequestEventArgs.registerClass('Sys.WebForms.EndRequestEventArgs', Sys.EventArgs);
-Sys.WebForms.InitializeRequestEventArgs = function Sys$WebForms$InitializeRequestEventArgs(request, postBackElement) {
-    /// <summary locid="M:J#Sys.WebForms.InitializeRequestEventArgs.#ctor" />
-    /// <param name="request" type="Sys.Net.WebRequest"></param>
-    /// <param name="postBackElement" domElement="true" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "request", type: Sys.Net.WebRequest},
-        {name: "postBackElement", mayBeNull: true, domElement: true}
-    ]);
-    if (e) throw e;
-    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
-    this._request = request;
-    this._postBackElement = postBackElement;
-}
-    function Sys$WebForms$InitializeRequestEventArgs$get_postBackElement() {
-        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.postBackElement"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._postBackElement;
-    }
-    function Sys$WebForms$InitializeRequestEventArgs$get_request() {
-        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.request"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._request;
-    }
-Sys.WebForms.InitializeRequestEventArgs.prototype = {
-    get_postBackElement: Sys$WebForms$InitializeRequestEventArgs$get_postBackElement,
-    get_request: Sys$WebForms$InitializeRequestEventArgs$get_request
-}
-Sys.WebForms.InitializeRequestEventArgs.registerClass('Sys.WebForms.InitializeRequestEventArgs', Sys.CancelEventArgs);
- 
-Sys.WebForms.PageLoadedEventArgs = function Sys$WebForms$PageLoadedEventArgs(panelsUpdated, panelsCreated, dataItems) {
-    /// <summary locid="M:J#Sys.WebForms.PageLoadedEventArgs.#ctor" />
-    /// <param name="panelsUpdated" type="Array"></param>
-    /// <param name="panelsCreated" type="Array"></param>
-    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "panelsUpdated", type: Array},
-        {name: "panelsCreated", type: Array},
-        {name: "dataItems", type: Object, mayBeNull: true}
-    ]);
-    if (e) throw e;
-    Sys.WebForms.PageLoadedEventArgs.initializeBase(this);
-    this._panelsUpdated = panelsUpdated;
-    this._panelsCreated = panelsCreated;
-    this._dataItems = dataItems || new Object();
-}
-    function Sys$WebForms$PageLoadedEventArgs$get_dataItems() {
-        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadedEventArgs.dataItems"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dataItems;
-    }
-    function Sys$WebForms$PageLoadedEventArgs$get_panelsCreated() {
-        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsCreated"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsCreated;
-    }
-    function Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated() {
-        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsUpdated"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsUpdated;
-    }
-Sys.WebForms.PageLoadedEventArgs.prototype = {
-    get_dataItems: Sys$WebForms$PageLoadedEventArgs$get_dataItems,
-    get_panelsCreated: Sys$WebForms$PageLoadedEventArgs$get_panelsCreated,
-    get_panelsUpdated: Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated
-}
-Sys.WebForms.PageLoadedEventArgs.registerClass('Sys.WebForms.PageLoadedEventArgs', Sys.EventArgs);
-Sys.WebForms.PageLoadingEventArgs = function Sys$WebForms$PageLoadingEventArgs(panelsUpdating, panelsDeleting, dataItems) {
-    /// <summary locid="M:J#Sys.WebForms.PageLoadingEventArgs.#ctor" />
-    /// <param name="panelsUpdating" type="Array"></param>
-    /// <param name="panelsDeleting" type="Array"></param>
-    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
-    var e = Function._validateParams(arguments, [
-        {name: "panelsUpdating", type: Array},
-        {name: "panelsDeleting", type: Array},
-        {name: "dataItems", type: Object, mayBeNull: true}
-    ]);
-    if (e) throw e;
-    Sys.WebForms.PageLoadingEventArgs.initializeBase(this);
-    this._panelsUpdating = panelsUpdating;
-    this._panelsDeleting = panelsDeleting;
-    this._dataItems = dataItems || new Object();
-}
-    function Sys$WebForms$PageLoadingEventArgs$get_dataItems() {
-        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadingEventArgs.dataItems"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dataItems;
-    }
-    function Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting() {
-        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsDeleting"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsDeleting;
-    }
-    function Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating() {
-        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsUpdating"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._panelsUpdating;
-    }
-Sys.WebForms.PageLoadingEventArgs.prototype = {
-    get_dataItems: Sys$WebForms$PageLoadingEventArgs$get_dataItems,
-    get_panelsDeleting: Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting,
-    get_panelsUpdating: Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating
-}
-Sys.WebForms.PageLoadingEventArgs.registerClass('Sys.WebForms.PageLoadingEventArgs', Sys.EventArgs);
- 
-Sys.WebForms.PageRequestManager = function Sys$WebForms$PageRequestManager() {
-    this._form = null;
-    this._activeDefaultButton = null;
-    this._activeDefaultButtonClicked = false;
-    this._updatePanelIDs = null;
-    this._updatePanelClientIDs = null;
-    this._oldUpdatePanelIDs = null;
-    this._childUpdatePanelIDs = null;
-    this._panelsToRefreshIDs = null;
-    this._updatePanelHasChildrenAsTriggers = null;
-    this._asyncPostBackControlIDs = null;
-    this._asyncPostBackControlClientIDs = null;
-    this._postBackControlIDs = null;
-    this._postBackControlClientIDs = null;
-    this._scriptManagerID = null;
-    this._pageLoadedHandler = null;
-    this._additionalInput = null;
-    this._onsubmit = null;
-    this._onSubmitStatements = [];
-    this._originalDoPostBack = null;
-    this._originalDoPostBackWithOptions = null;
-    this._originalFireDefaultButton = null;
-    this._originalDoCallback = null;
-    this._isCrossPost = false;
-    this._postBackSettings = null;
-    this._request = null;
-    this._onFormSubmitHandler = null;
-    this._onFormElementClickHandler = null;
-    this._onWindowUnloadHandler = null;
-    this._asyncPostBackTimeout = null;
-    this._controlIDToFocus = null;
-    this._scrollPosition = null;
-    this._dataItems = null;
-    this._updateContext = null;
-    this._processingRequest = false;
-    this._scriptDisposes = {};
-}
-    function Sys$WebForms$PageRequestManager$_get_eventHandlerList() {
-        if (!this._events) {
-            this._events = new Sys.EventHandlerList();
-        }
-        return this._events;
-    }
-    function Sys$WebForms$PageRequestManager$get_isInAsyncPostBack() {
-        /// <value type="Boolean" locid="P:J#Sys.WebForms.PageRequestManager.isInAsyncPostBack"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._request !== null;
-    }
-    function Sys$WebForms$PageRequestManager$add_beginRequest(handler) {
-        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.beginRequest" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().addHandler("beginRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_beginRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().removeHandler("beginRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$add_endRequest(handler) {
-        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.endRequest" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().addHandler("endRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_endRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().removeHandler("endRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$add_initializeRequest(handler) {
-        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.initializeRequest" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().addHandler("initializeRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_initializeRequest(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().removeHandler("initializeRequest", handler);
-    }
-    function Sys$WebForms$PageRequestManager$add_pageLoaded(handler) {
-        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoaded" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().addHandler("pageLoaded", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_pageLoaded(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().removeHandler("pageLoaded", handler);
-    }
-    function Sys$WebForms$PageRequestManager$add_pageLoading(handler) {
-        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoading" />
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().addHandler("pageLoading", handler);
-    }
-    function Sys$WebForms$PageRequestManager$remove_pageLoading(handler) {
-        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
-        if (e) throw e;
-        this._get_eventHandlerList().removeHandler("pageLoading", handler);
-    }
-    function Sys$WebForms$PageRequestManager$abortPostBack() {
-        if (!this._processingRequest && this._request) {
-            this._request.get_executor().abort();
-            this._request = null;
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_cancelPendingCallbacks() {
-        for (var i = 0, l = window.__pendingCallbacks.length; i < l; i++) {
-            var callback = window.__pendingCallbacks[i];
-            if (callback) {
-                if (!callback.async) {
-                    window.__synchronousCallBackIndex = -1;
-                }
-                window.__pendingCallbacks[i] = null;
-                var callbackFrameID = "__CALLBACKFRAME" + i;
-                var xmlRequestFrame = document.getElementById(callbackFrameID);
-                if (xmlRequestFrame) {
-                    xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
-                }
-            }
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError() {
-        var displayMessage = "Sys.WebForms.PageRequestManagerTimeoutException: " + Sys.WebForms.Res.PRM_TimeoutError;
-        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerTimeoutException'});
-        e.popStackFrame();
-        return e;
-    }
-    function Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError(httpStatusCode, message) {
-        var displayMessage = "Sys.WebForms.PageRequestManagerServerErrorException: " +
-            (message || String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
-        var e = Error.create(displayMessage, {
-            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
-            httpStatusCode: httpStatusCode
-        });
-        e.popStackFrame();
-        return e;
-    }
-    function Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError(parserErrorMessage) {
-        var displayMessage = "Sys.WebForms.PageRequestManagerParserErrorException: " + String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
-        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerParserErrorException'});
-        e.popStackFrame();
-        return e;
-    }
-    function Sys$WebForms$PageRequestManager$_createPostBackSettings(async, panelID, sourceElement) {
-        return { async:async, panelID:panelID, sourceElement:sourceElement };
-    }
-    function Sys$WebForms$PageRequestManager$_convertToClientIDs(source, destinationIDs, destinationClientIDs) {
-        if (source) {
-            for (var i = 0; i < source.length; i++) {
-                Array.add(destinationIDs, source[i]);
-                Array.add(destinationClientIDs, this._uniqueIDToClientID(source[i]));
-            }
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_destroyTree(element) {
-        if (element.nodeType === 1) {
-            var childNodes = element.childNodes;
-            for (var i = childNodes.length - 1; i >= 0; i--) {
-                var node = childNodes[i];
-                if (node.nodeType === 1) {
-                    if (node.dispose && typeof(node.dispose) === "function") {
-                        node.dispose();
-                    }
-                    else if (node.control && typeof(node.control.dispose) === "function") {
-                        node.control.dispose();
-                    }
-                    var behaviors = Sys.UI.Behavior.getBehaviors(node);
-                    for (var j = behaviors.length - 1; j >= 0; j--) {
-                        behaviors[j].dispose();
-                    }
-                    this._destroyTree(node);
-                }
-            }
-        }
-    }
-    function Sys$WebForms$PageRequestManager$dispose() {
-        if (this._form) {
-            Sys.UI.DomEvent.removeHandler(this._form, 'submit', this._onFormSubmitHandler);
-            Sys.UI.DomEvent.removeHandler(this._form, 'click', this._onFormElementClickHandler);
-            Sys.UI.DomEvent.removeHandler(window, 'unload', this._onWindowUnloadHandler);
-            Sys.UI.DomEvent.removeHandler(window, 'load', this._pageLoadedHandler);
-        }
-        if (this._originalDoPostBack) {
-            window.__doPostBack = this._originalDoPostBack;
-            this._originalDoPostBack = null;
-        }
-        if (this._originalDoPostBackWithOptions) {
-            window.WebForm_DoPostBackWithOptions = this._originalDoPostBackWithOptions;
-            this._originalDoPostBackWithOptions = null;
-        }
-        if (this._originalFireDefaultButton) {
-            window.WebForm_FireDefaultButton = this._originalFireDefaultButton;
-            this._originalFireDefaultButton = null;
-        }
-        if (this._originalDoCallback) {
-            window.WebForm_DoCallback = this._originalDoCallback;
-            this._originalDoCallback = null;
-        }
-        this._form = null;
-        this._updatePanelIDs = null;
-        this._oldUpdatePanelIDs = null;
-        this._childUpdatePanelIDs = null;
-        this._updatePanelClientIDs = null;
-        this._asyncPostBackControlIDs = null;
-        this._asyncPostBackControlClientIDs = null;
-        this._postBackControlIDs = null;
-        this._postBackControlClientIDs = null;
-        this._asyncPostBackTimeout = null;
-        this._scrollPosition = null;
-        this._dataItems = null;
-    }
-    function Sys$WebForms$PageRequestManager$_doCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) {
-        if (!this.get_isInAsyncPostBack()) {
-            this._originalDoCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync);
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_doPostBack(eventTarget, eventArgument) {
-        this._additionalInput = null;
-        var form = this._form;
-        if ((eventTarget === null) || (typeof(eventTarget) === "undefined") || (this._isCrossPost)) {
-            this._postBackSettings = this._createPostBackSettings(false, null, null);
-            this._isCrossPost = false;
-        }
-        else {
-            var clientID = this._uniqueIDToClientID(eventTarget);
-            var postBackElement = document.getElementById(clientID);
-            if (!postBackElement) {
-                if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
-                    this._postBackSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + eventTarget, null);
-                }
-                else {
-                    if (Array.contains(this._postBackControlIDs, eventTarget)) {
-                        this._postBackSettings = this._createPostBackSettings(false, null, null);
-                    }
-                    else {
-                        var nearestUniqueIDMatch = this._findNearestElement(eventTarget);
-                        if (nearestUniqueIDMatch) {
-                            this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
-                        }
-                        else {
-                            this._postBackSettings = this._createPostBackSettings(false, null, null);
-                        }
-                    }
-                }
-            }
-            else {
-                this._postBackSettings = this._getPostBackSettings(postBackElement, eventTarget);
-            }
-        }
-        if (!this._postBackSettings.async) {
-            form.onsubmit = this._onsubmit;
-            this._originalDoPostBack(eventTarget, eventArgument);
-            form.onsubmit = null;
-            return;
-        }
-        form.__EVENTTARGET.value = eventTarget;
-        form.__EVENTARGUMENT.value = eventArgument;
-        this._onFormSubmit();
-    }
-    function Sys$WebForms$PageRequestManager$_doPostBackWithOptions(options) {
-        this._isCrossPost = options && options.actionUrl;
-        this._originalDoPostBackWithOptions(options);
-    }
-    function Sys$WebForms$PageRequestManager$_elementContains(container, element) {
-        while (element) {
-            if (element === container) {
-                return true;
-            }
-            element = element.parentNode;
-        }
-        return false;
-    }
-    function Sys$WebForms$PageRequestManager$_endPostBack(error, response) {
-        if (this._request === response.get_webRequest()) {
-            this._processingRequest = false;
-            this._additionalInput = null;
-            this._request = null;
-        }
-        var handler = this._get_eventHandlerList().getHandler("endRequest");
-        var errorHandled = false;
-        if (handler) {
-            var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
-            handler(this, eventArgs);
-            errorHandled = eventArgs.get_errorHandled();
-        }
-        if (!this._processingRequest) {
-            this._dataItems = null;
-        }
-        if (error && !errorHandled) {
-            throw error;
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_findNearestElement(uniqueID) {
-        while (uniqueID.length > 0) {
-            var clientID = this._uniqueIDToClientID(uniqueID);
-            var element = document.getElementById(clientID);
-            if (element) {
-                return element;
-            }
-            var indexOfLastDollar = uniqueID.lastIndexOf('$');
-            if (indexOfLastDollar === -1) {
-                return null;
-            }
-            uniqueID = uniqueID.substring(0, indexOfLastDollar);
-        }
-        return null;
-    }
-    function Sys$WebForms$PageRequestManager$_findText(text, location) {
-        var startIndex = Math.max(0, location - 20);
-        var endIndex = Math.min(text.length, location + 20);
-        return text.substring(startIndex, endIndex);
-    }
-    function Sys$WebForms$PageRequestManager$_fireDefaultButton(event, target) {
-        if ((event.keyCode === 13) && !(event.srcElement && (event.srcElement.tagName.toLowerCase() === "textarea"))) {
-            var defaultButton = document.getElementById(target);
-            if (defaultButton && (typeof(defaultButton.click) !== "undefined")) {
-                
-                
-                this._activeDefaultButton = defaultButton;
-                this._activeDefaultButtonClicked = false;
-                try {
-                    defaultButton.click();
-                }
-                finally {
-                    this._activeDefaultButton = null;
-                }
-                
-                
-                event.cancelBubble = true;
-                if (typeof(event.stopPropagation) === "function") {
-                    event.stopPropagation();
-                }
-                return false;
-            }
-        }
-        return true;
-    }
-    function Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs(initialLoad) {
-        var updated = [];
-        var created = [];
-        var oldIDs = this._oldUpdatePanelIDs || []; 
-        var newIDs = this._updatePanelIDs; 
-        var childIDs = this._childUpdatePanelIDs || []; 
-        var refreshedIDs = this._panelsToRefreshIDs || []; 
-        for (var i = 0; i < refreshedIDs.length; i++) {
-            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
-        }
-        for (var i = 0; i < newIDs.length; i++) {
-            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) !== -1) {
-                Array.add(created, document.getElementById(this._uniqueIDToClientID(newIDs[i])));
-            }
-        }
-        return new Sys.WebForms.PageLoadedEventArgs(updated, created, this._dataItems);
-    }
-    function Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs() {
-        var updated = [];
-        var deleted = [];
-        var oldIDs = this._oldUpdatePanelIDs;
-        var newIDs = this._updatePanelIDs;
-        var childIDs = this._childUpdatePanelIDs;
-        var refreshedIDs = this._panelsToRefreshIDs;
-        for (var i = 0; i < refreshedIDs.length; i++) {
-            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
-        }
-        for (var i = 0; i < oldIDs.length; i++) {
-            if (Array.indexOf(refreshedIDs, oldIDs[i]) === -1 &&
-                (Array.indexOf(newIDs, oldIDs[i]) === -1 || Array.indexOf(childIDs, oldIDs[i]) > -1)) {
-                Array.add(deleted, document.getElementById(this._uniqueIDToClientID(oldIDs[i])));
-            }
-        }
-        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, this._dataItems);
-    }
-    function Sys$WebForms$PageRequestManager$_getPostBackSettings(element, elementUniqueID) {
-        var originalElement = element;
-        var proposedSettings = null;
-        while (element) {
-            if (element.id) {
-                if (!proposedSettings && Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
-                    proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
-                }
-                else {
-                    if (!proposedSettings && Array.contains(this._postBackControlClientIDs, element.id)) {
-                        return this._createPostBackSettings(false, null, null);
-                    }
-                    else {
-                        var indexOfPanel = Array.indexOf(this._updatePanelClientIDs, element.id);
-                        if (indexOfPanel !== -1) {
-                            if (this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {
-                                return this._createPostBackSettings(true, this._updatePanelIDs[indexOfPanel] + '|' + elementUniqueID, originalElement);
-                            }
-                            else {
-                                return this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
-                            }
-                        }
-                    }
-                }
-                if (!proposedSettings && this._matchesParentIDInList(element.id, this._asyncPostBackControlClientIDs)) {
-                    proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
-                }
-                else {
-                    if (!proposedSettings && this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) {
-                        return this._createPostBackSettings(false, null, null);
-                    }
-                }
-            }
-            element = element.parentNode;
-        }
-        if (!proposedSettings) {
-            return this._createPostBackSettings(false, null, null);
-        }
-        else {
-            return proposedSettings;
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_getScrollPosition() {
-        var d = document.documentElement;
-        if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
-            return {
-                x: d.scrollLeft,
-                y: d.scrollTop
-            };
-        }
-        else {
-            d = document.body;
-            if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
-                return {
-                    x: d.scrollLeft,
-                    y: d.scrollTop
-                };
-            }
-            else {
-                if (this._validPosition(window.pageXOffset) || this._validPosition(window.pageYOffset)) {
-                    return {
-                        x: window.pageXOffset,
-                        y: window.pageYOffset
-                    };
-                }
-                else {
-                    return {
-                        x: 0,
-                        y: 0
-                    };
-                }
-            }
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_initializeInternal(scriptManagerID, formElement) {
-        if (this._prmInitialized) {
-            throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
-        }
-        this._prmInitialized = true;
-        this._scriptManagerID = scriptManagerID;
-        this._form = formElement;
-        this._onsubmit = this._form.onsubmit;
-        this._form.onsubmit = null;
-        this._onFormSubmitHandler = Function.createDelegate(this, this._onFormSubmit);
-        this._onFormElementClickHandler = Function.createDelegate(this, this._onFormElementClick);
-        this._onWindowUnloadHandler = Function.createDelegate(this, this._onWindowUnload);
-        Sys.UI.DomEvent.addHandler(this._form, 'submit', this._onFormSubmitHandler);
-        Sys.UI.DomEvent.addHandler(this._form, 'click', this._onFormElementClickHandler);
-        Sys.UI.DomEvent.addHandler(window, 'unload', this._onWindowUnloadHandler);
-        this._originalDoPostBack = window.__doPostBack;
-        if (this._originalDoPostBack) {
-            window.__doPostBack = Function.createDelegate(this, this._doPostBack);
-        }
-        this._originalDoPostBackWithOptions = window.WebForm_DoPostBackWithOptions;
-        if (this._originalDoPostBackWithOptions) {
-            window.WebForm_DoPostBackWithOptions = Function.createDelegate(this, this._doPostBackWithOptions);
-        }
-        this._originalFireDefaultButton = window.WebForm_FireDefaultButton;
-        if (this._originalFireDefaultButton) {
-            window.WebForm_FireDefaultButton = Function.createDelegate(this, this._fireDefaultButton);
-        }
-        this._originalDoCallback = window.WebForm_DoCallback;
-        if (this._originalDoCallback) {
-            window.WebForm_DoCallback = Function.createDelegate(this, this._doCallback);
-        }
-        this._pageLoadedHandler = Function.createDelegate(this, this._pageLoadedInitialLoad);
-        Sys.UI.DomEvent.addHandler(window, 'load', this._pageLoadedHandler);
-    }
-    function Sys$WebForms$PageRequestManager$_matchesParentIDInList(clientID, parentIDList) {
-        for (var i = 0; i < parentIDList.length; i++) {
-            if (clientID.startsWith(parentIDList[i] + "_")) {
-                return true;
-            }
-        }
-        return false;
-    }
-    function Sys$WebForms$PageRequestManager$_onFormElementActive(element, offsetX, offsetY) {
-        if (element.disabled) {
-            return;
-        }
-        this._postBackSettings = this._getPostBackSettings(element, element.name);
-        if (element.name) {
-            if (element.tagName === 'INPUT') {
-                var type = element.type;
-                if (type === 'submit') {
-                    this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
-                }
-                else if (type === 'image') {
-                    this._additionalInput = encodeURIComponent(element.name) + '.x=' + offsetX + '&' + encodeURIComponent(element.name) + '.y=' + offsetY;
-                }
-            }
-            else if ((element.tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
-                this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
-            }
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_onFormElementClick(evt) {
-        this._activeDefaultButtonClicked = (evt.target === this._activeDefaultButton);
-        this._onFormElementActive(evt.target, evt.offsetX, evt.offsetY);
-    }
-    function Sys$WebForms$PageRequestManager$_onFormSubmit(evt) {
-        var continueSubmit = true;
-        var isCrossPost = this._isCrossPost;
-        this._isCrossPost = false;
-        if (this._onsubmit) {
-            continueSubmit = this._onsubmit();
-        }
-        if (continueSubmit) {
-            for (var i = 0; i < this._onSubmitStatements.length; i++) {
-                if (!this._onSubmitStatements[i]()) {
-                    continueSubmit = false;
-                    break;
-                }
-            }
-        }
-        if (!continueSubmit) {
-            if (evt) {
-                evt.preventDefault();
-            }
-            return;
-        }
-        var form = this._form;
-        if (isCrossPost) {
-            return;
-        }
-        if (this._activeDefaultButton && !this._activeDefaultButtonClicked) {
-            this._onFormElementActive(this._activeDefaultButton, 0, 0);
-        }
-        if (!this._postBackSettings.async) {
-            return;
-        }
-        var formBody = new Sys.StringBuilder();
-        formBody.append(encodeURIComponent(this._scriptManagerID) + '=' + encodeURIComponent(this._postBackSettings.panelID) + '&');
-        var count = form.elements.length;
-        for (var i = 0; i < count; i++) {
-            var element = form.elements[i];
-            var name = element.name;
-            if (typeof(name) === "undefined" || (name === null) || (name.length === 0)) {
-                continue;
-            }
-            var tagName = element.tagName;
-            if (tagName === 'INPUT') {
-                var type = element.type;
-                if ((type === 'text') ||
-                    (type === 'password') ||
-                    (type === 'hidden') ||
-                    (((type === 'checkbox') || (type === 'radio')) && element.checked)) {
-                    formBody.append(encodeURIComponent(name));
-                    formBody.append('=');
-                    formBody.append(encodeURIComponent(element.value));
-                    formBody.append('&');
-                }
-            }
-            else if (tagName === 'SELECT') {
-                var optionCount = element.options.length;
-                for (var j = 0; j < optionCount; j++) {
-                    var option = element.options[j];
-                    if (option.selected) {
-                        formBody.append(encodeURIComponent(name));
-                        formBody.append('=');
-                        formBody.append(encodeURIComponent(option.value));
-                        formBody.append('&');
-                    }
-                }
-            }
-            else if (tagName === 'TEXTAREA') {
-                formBody.append(encodeURIComponent(name));
-                formBody.append('=');
-                formBody.append(encodeURIComponent(element.value));
-                formBody.append('&');
-            }
-        }
-        if (this._additionalInput) {
-            formBody.append(this._additionalInput);
-            this._additionalInput = null;
-        }
-        
-        var request = new Sys.Net.WebRequest();
-        var action = form.action;
-        if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
-            var queryIndex = action.indexOf('?');
-            if (queryIndex !== -1) {
-                var path = action.substr(0, queryIndex);
-                if (path.indexOf("%") === -1) {
-                    action = encodeURI(path) + action.substr(queryIndex);
-                }
-            }
-            else if (action.indexOf("%") === -1) {
-                action = encodeURI(action);
-            }
-        }
-        request.set_url(action);
-        request.get_headers()['X-MicrosoftAjax'] = 'Delta=true';
-        request.get_headers()['Cache-Control'] = 'no-cache';
-        request.set_timeout(this._asyncPostBackTimeout);
-        request.add_completed(Function.createDelegate(this, this._onFormSubmitCompleted));
-        request.set_body(formBody.toString());
-        var handler = this._get_eventHandlerList().getHandler("initializeRequest");
-        if (handler) {
-            var eventArgs = new Sys.WebForms.InitializeRequestEventArgs(request, this._postBackSettings.sourceElement);
-            handler(this, eventArgs);
-            continueSubmit = !eventArgs.get_cancel();
-        }
-        if (!continueSubmit) {
-            if (evt) {
-                evt.preventDefault();
-            }
-            return;
-        }
-        this._scrollPosition = this._getScrollPosition();
-        this.abortPostBack();
-        handler = this._get_eventHandlerList().getHandler("beginRequest");
-        if (handler) {
-            var eventArgs = new Sys.WebForms.BeginRequestEventArgs(request, this._postBackSettings.sourceElement);
-            handler(this, eventArgs);
-        }
-        
-        if (this._originalDoCallback) {
-            this._cancelPendingCallbacks();
-        }
-        this._request = request;
-        request.invoke();
-        if (evt) {
-            evt.preventDefault();
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_onFormSubmitCompleted(sender, eventArgs) {
-        this._processingRequest = true;
-        var delimitByLengthDelimiter = '|';
-        if (sender.get_timedOut()) {
-            this._endPostBack(this._createPageRequestManagerTimeoutError(), sender);
-            return;
-        }
-        if (sender.get_aborted()) {
-            this._endPostBack(null, sender);
-            return;
-        }
-        if (!this._request || sender.get_webRequest() !== this._request) {
-            return;
-        }
-        var errorMessage;
-        var delta = [];
-        if (sender.get_statusCode() !== 200) {
-            this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()), sender);
-            return;
-        }
-        var reply = sender.get_responseData();
-        var delimiterIndex, len, type, id, content;
-        var replyIndex = 0;
-        var parserErrorDetails = null;
-        while (replyIndex < reply.length) {
-            delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
-            if (delimiterIndex === -1) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            len = parseInt(reply.substring(replyIndex, delimiterIndex), 10);
-            if ((len % 1) !== 0) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            replyIndex = delimiterIndex + 1;
-            delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
-            if (delimiterIndex === -1) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            type = reply.substring(replyIndex, delimiterIndex);
-            replyIndex = delimiterIndex + 1;
-            delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
-            if (delimiterIndex === -1) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            id = reply.substring(replyIndex, delimiterIndex);
-            replyIndex = delimiterIndex + 1;
-            if ((replyIndex + len) >= reply.length) {
-                parserErrorDetails = this._findText(reply, reply.length);
-                break;
-            }
-            content = reply.substr(replyIndex, len);
-            replyIndex += len;
-            if (reply.charAt(replyIndex) !== delimitByLengthDelimiter) {
-                parserErrorDetails = this._findText(reply, replyIndex);
-                break;
-            }
-            replyIndex++;
-            Array.add(delta, {type: type, id: id, content: content});
-        }
-        if (parserErrorDetails) {
-            this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails, parserErrorDetails)), sender);
-            return;
-        }
-        var updatePanelNodes = [];
-        var hiddenFieldNodes = [];
-        var arrayDeclarationNodes = [];
-        var scriptBlockNodes = [];
-        var scriptStartupNodes = [];
-        var expandoNodes = [];
-        var onSubmitNodes = [];
-        var dataItemNodes = [];
-        var dataItemJsonNodes = [];
-        var scriptDisposeNodes = [];
-        var asyncPostBackControlIDsNode, postBackControlIDsNode,
-            updatePanelIDsNode, asyncPostBackTimeoutNode,
-            childUpdatePanelIDsNode, panelsToRefreshNode, formActionNode;
-        for (var i = 0; i < delta.length; i++) {
-            var deltaNode = delta[i];
-            switch (deltaNode.type) {
-                case "updatePanel":
-                    Array.add(updatePanelNodes, deltaNode);
-                    break;
-                case "hiddenField":
-                    Array.add(hiddenFieldNodes, deltaNode);
-                    break;
-                case "arrayDeclaration":
-                    Array.add(arrayDeclarationNodes, deltaNode);
-                    break;
-                case "scriptBlock":
-                    Array.add(scriptBlockNodes, deltaNode);
-                    break;
-                case "scriptStartupBlock":
-                    Array.add(scriptStartupNodes, deltaNode);
-                    break;
-                case "expando":
-                    Array.add(expandoNodes, deltaNode);
-                    break;
-                case "onSubmit":
-                    Array.add(onSubmitNodes, deltaNode);
-                    break;
-                case "asyncPostBackControlIDs":
-                    asyncPostBackControlIDsNode = deltaNode;
-                    break;
-                case "postBackControlIDs":
-                    postBackControlIDsNode = deltaNode;
-                    break;
-                case "updatePanelIDs":
-                    updatePanelIDsNode = deltaNode;
-                    break;
-                case "asyncPostBackTimeout":
-                    asyncPostBackTimeoutNode = deltaNode;
-                    break;
-                case "childUpdatePanelIDs":
-                    childUpdatePanelIDsNode = deltaNode;
-                    break;
-                case "panelsToRefreshIDs":
-                    panelsToRefreshNode = deltaNode;
-                    break;
-                case "formAction":
-                    formActionNode = deltaNode;
-                    break;
-                case "dataItem":
-                    Array.add(dataItemNodes, deltaNode);
-                    break;
-                case "dataItemJson":
-                    Array.add(dataItemJsonNodes, deltaNode);
-                    break;
-                case "scriptDispose":
-                    Array.add(scriptDisposeNodes, deltaNode);
-                    break;
-                case "pageRedirect":
-                    if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
-                        var anchor = document.createElement("a");
-                        anchor.style.display = 'none';
-                        anchor.attachEvent("onclick", cancelBubble);
-                        anchor.href = deltaNode.content;
-                        document.body.appendChild(anchor);
-                        anchor.click();
-                        anchor.detachEvent("onclick", cancelBubble);
-                        document.body.removeChild(anchor);
-                        
-                        function cancelBubble(e) {
-                            e.cancelBubble = true;
-                        }
-                    }
-                    else {
-                        window.location.href = deltaNode.content;
-                    }
-                    return;
-                case "error":
-                    this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id), deltaNode.content), sender);
-                    return;
-                case "pageTitle":
-                    document.title = deltaNode.content;
-                    break;
-                case "focus":
-                    this._controlIDToFocus = deltaNode.content;
-                    break;
-                default:
-                    this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), sender);
-                    return;
-            }
-        }
-        var i;
-        if (asyncPostBackControlIDsNode && postBackControlIDsNode &&
-            updatePanelIDsNode && panelsToRefreshNode &&
-            asyncPostBackTimeoutNode && childUpdatePanelIDsNode) {
-            this._oldUpdatePanelIDs = this._updatePanelIDs;
-            var childUpdatePanelIDsString = childUpdatePanelIDsNode.content;
-            this._childUpdatePanelIDs = childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') : [];
-            var asyncPostBackControlIDsArray = this._splitNodeIntoArray(asyncPostBackControlIDsNode);
-            var postBackControlIDsArray = this._splitNodeIntoArray(postBackControlIDsNode);
-            var updatePanelIDsArray = this._splitNodeIntoArray(updatePanelIDsNode);
-            this._panelsToRefreshIDs = this._splitNodeIntoArray(panelsToRefreshNode);
-            for (i = 0; i < this._panelsToRefreshIDs.length; i++) {
-                var panelClientID = this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);
-                if (!document.getElementById(panelClientID)) {
-                    this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, panelClientID)), sender);
-                    return;
-                }
-            }
-            var asyncPostBackTimeout = asyncPostBackTimeoutNode.content;
-            this._updateControls(updatePanelIDsArray, asyncPostBackControlIDsArray, postBackControlIDsArray, asyncPostBackTimeout);
-        }
-        this._dataItems = {};
-        for (i = 0; i < dataItemNodes.length; i++) {
-            var dataItemNode = dataItemNodes[i];
-            this._dataItems[dataItemNode.id] = dataItemNode.content;
-        }
-        for (i = 0; i < dataItemJsonNodes.length; i++) {
-            var dataItemJsonNode = dataItemJsonNodes[i];
-            this._dataItems[dataItemJsonNode.id] = Sys.Serialization.JavaScriptSerializer.deserialize(dataItemJsonNode.content);
-        }
-        var handler = this._get_eventHandlerList().getHandler("pageLoading");
-        if (handler) {
-            handler(this, this._getPageLoadingEventArgs());
-        }
-        if (formActionNode) {
-            this._form.action = formActionNode.content;
-        }
-        
-        
-        Sys._ScriptLoader.readLoadedScripts();
-        Sys.Application.beginCreateComponents();
-        var scriptLoader = Sys._ScriptLoader.getInstance();
-        this._queueScripts(scriptLoader, scriptBlockNodes, true, false);
-        
-        this._updateContext = {
-            response: sender,
-            updatePanelNodes: updatePanelNodes,
-            scriptBlockNodes: scriptBlockNodes,
-            scriptDisposeNodes: scriptDisposeNodes,
-            hiddenFieldNodes: hiddenFieldNodes,
-            arrayDeclarationNodes: arrayDeclarationNodes,
-            expandoNodes: expandoNodes,
-            scriptStartupNodes: scriptStartupNodes,
-            onSubmitNodes: onSubmitNodes
-        };
-        scriptLoader.loadScripts(0,
-            Function.createDelegate(this, this._scriptIncludesLoadComplete),
-            Function.createDelegate(this, this._scriptIncludesLoadFailed),
-            null);
-    }
-    function Sys$WebForms$PageRequestManager$_onWindowUnload(evt) {
-        this.dispose();
-    }
-    function Sys$WebForms$PageRequestManager$_pageLoaded(initialLoad) {
-        var handler = this._get_eventHandlerList().getHandler("pageLoaded");
-        if (handler) {
-            handler(this, this._getPageLoadedEventArgs(initialLoad));
-        }
-        if (!initialLoad) {
-            Sys.Application.raiseLoad();
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad(evt) {
-        this._pageLoaded(true);
-    }
-    function Sys$WebForms$PageRequestManager$_queueScripts(scriptLoader, scriptBlockNodes, queueIncludes, queueBlocks) {
-        
-        for (i = 0; i < scriptBlockNodes.length; i++) {
-            var scriptBlockType = scriptBlockNodes[i].id;
-            switch (scriptBlockType) {
-                case "ScriptContentNoTags":
-                    if (!queueBlocks) {
-                        continue;
-                    }
-                    scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
-                    break;
-                case "ScriptContentWithTags":
-                    var scriptTagAttributes;
-                    eval("scriptTagAttributes = " + scriptBlockNodes[i].content);
-                    if (scriptTagAttributes.src) {
-                        if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
-                            continue;
-                        }
-                    }
-                    else if (!queueBlocks) {
-                        continue;
-                    }
-                    scriptLoader.queueCustomScriptTag(scriptTagAttributes);
-                    break;
-                case "ScriptPath":
-                    if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
-                        continue;
-                    }
-                    scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
-                    break;
-            }
-        }        
-    }
-    function Sys$WebForms$PageRequestManager$_registerDisposeScript(panelID, disposeScript) {
-        if (!this._scriptDisposes[panelID]) {
-            this._scriptDisposes[panelID] = [disposeScript];
-        }
-        else {
-            Array.add(this._scriptDisposes[panelID], disposeScript);
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_scriptIncludesLoadComplete() {
-        var ctx = this._updateContext;
-        for (i = 0; i < ctx.updatePanelNodes.length; i++) {
-            var deltaUpdatePanel = ctx.updatePanelNodes[i];
-            var deltaPanelID = deltaUpdatePanel.id;
-            var deltaPanelRendering = deltaUpdatePanel.content;
-            var updatePanelElement = document.getElementById(deltaPanelID);
-            if (!updatePanelElement) {
-                this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, deltaPanelID)), ctx.response);
-                return;
-            }
-            this._updatePanel(updatePanelElement, deltaPanelRendering);
-        }
-        for (i = 0; i < ctx.scriptDisposeNodes.length; i++) {
-            var disposePanelId = ctx.scriptDisposeNodes[i].id;
-            var disposeScript = ctx.scriptDisposeNodes[i].content;
-            this._registerDisposeScript(disposePanelId, disposeScript);
-        }
-        var viewStateEncrypted = false;
-        for (i = 0; i < ctx.hiddenFieldNodes.length; i++) {
-            var id = ctx.hiddenFieldNodes[i].id;
-            var value = ctx.hiddenFieldNodes[i].content;
-            
-            if (id === "__VIEWSTATEENCRYPTED") {
-                viewStateEncrypted = true;
-            }
-            var hiddenFieldElement = document.getElementById(id);
-            if (!hiddenFieldElement) {
-                hiddenFieldElement = document.createElement('input');
-                hiddenFieldElement.id = id;
-                hiddenFieldElement.name = id;
-                hiddenFieldElement.type = 'hidden';
-                this._form.appendChild(hiddenFieldElement);
-            }
-            hiddenFieldElement.value = value;
-        }
-        
-        if (!viewStateEncrypted) {
-            var viewStateEncryptedField = document.getElementById("__VIEWSTATEENCRYPTED");
-            if (viewStateEncryptedField) {
-                viewStateEncryptedField.parentNode.removeChild(viewStateEncryptedField);
-            }
-        }
-        if (ctx.scriptsFailed) {
-            throw Sys._ScriptLoader._errorScriptLoadFailed(ctx.scriptsFailed.src, ctx.scriptsFailed.multipleCallbacks);
-        }
-        
-        var scriptLoader = Sys._ScriptLoader.getInstance();
-        
-        this._queueScripts(scriptLoader, ctx.scriptBlockNodes, false, true);
-        var arrayScript = '';
-        for (i = 0; i < ctx.arrayDeclarationNodes.length; i++) {
-            arrayScript += "Sys.WebForms.PageRequestManager._addArrayElement('" + ctx.arrayDeclarationNodes[i].id + "', " + ctx.arrayDeclarationNodes[i].content + ");\r\n";
-        }
-        var expandoScript = '';
-        for (i = 0; i < ctx.expandoNodes.length; i++) {
-            var propertyReference = ctx.expandoNodes[i].id;
-            var propertyValue = ctx.expandoNodes[i].content;
-            expandoScript += propertyReference + " = " + propertyValue + "\r\n";
-        }
-        if (arrayScript.length) {
-            scriptLoader.queueScriptBlock(arrayScript);
-        }
-        if (expandoScript.length) {
-            scriptLoader.queueScriptBlock(expandoScript);
-        }
-        
-        this._queueScripts(scriptLoader, ctx.scriptStartupNodes, true, true);
-        var onSubmitStatementScript = '';
-        for (var i = 0; i < ctx.onSubmitNodes.length; i++) {
-            if (i === 0) {
-                onSubmitStatementScript = 'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n';
-            }
-            onSubmitStatementScript += ctx.onSubmitNodes[i].content + "\r\n";
-        }
-        if (onSubmitStatementScript.length) {
-            onSubmitStatementScript += "\r\nreturn true;\r\n});\r\n";
-            scriptLoader.queueScriptBlock(onSubmitStatementScript);
-        }
-        scriptLoader.loadScripts(0, Function.createDelegate(this, this._scriptsLoadComplete), null, null);
-    }
-    function Sys$WebForms$PageRequestManager$_scriptIncludesLoadFailed(scriptLoader, scriptElement, multipleCallbacks) {
-        this._updateContext.scriptsFailed = { src: scriptElement.src, multipleCallbacks: multipleCallbacks };
-        this._scriptIncludesLoadComplete();
-    }
-    function Sys$WebForms$PageRequestManager$_scriptsLoadComplete() {
-        var response = this._updateContext.response;
-        this._updateContext = null;
-        if (window.__theFormPostData) {
-            window.__theFormPostData = "";
-        }
-        if (window.__theFormPostCollection) {
-            window.__theFormPostCollection = [];
-        }
-        if (window.WebForm_InitCallback) {
-            window.WebForm_InitCallback();
-        }
-        if (this._scrollPosition) {
-            if (window.scrollTo) {
-                window.scrollTo(this._scrollPosition.x, this._scrollPosition.y);
-            }
-            this._scrollPosition = null;
-        }
-        Sys.Application.endCreateComponents();
-        this._pageLoaded(false);
-        this._endPostBack(null, response);
-        if (this._controlIDToFocus) {
-            var focusTarget;
-            var oldContentEditableSetting;
-            if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
-                var targetControl = $get(this._controlIDToFocus);
-                focusTarget = targetControl;
-                if (targetControl && (!WebForm_CanFocus(targetControl))) {
-                    focusTarget = WebForm_FindFirstFocusableChild(targetControl);
-                }
-                if (focusTarget && (typeof(focusTarget.contentEditable) !== "undefined")) {
-                    oldContentEditableSetting = focusTarget.contentEditable;
-                    focusTarget.contentEditable = false;
-                }
-                else {
-                    focusTarget = null;
-                }
-            }
-            WebForm_AutoFocus(this._controlIDToFocus);
-            if (focusTarget) {
-                focusTarget.contentEditable = oldContentEditableSetting;
-            }
-            this._controlIDToFocus = null;
-        }
-    }
-    function Sys$WebForms$PageRequestManager$_splitNodeIntoArray(node) {
-        var str = node.content;
-        var arr = str.length ? str.split(',') : [];
-        return arr;
-    }
-    function Sys$WebForms$PageRequestManager$_uniqueIDToClientID(uniqueID) {
-        return uniqueID.replace(/\$/g, '_');
-    }
-    function Sys$WebForms$PageRequestManager$_updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout) {
-        if (updatePanelIDs) {
-            this._updatePanelIDs = new Array(updatePanelIDs.length);
-            this._updatePanelClientIDs = new Array(updatePanelIDs.length);
-            this._updatePanelHasChildrenAsTriggers = new Array(updatePanelIDs.length);
-            for (var i = 0; i < updatePanelIDs.length; i++) {
-                var realPanelID = updatePanelIDs[i].substr(1);
-                var childrenAsTriggers = (updatePanelIDs[i].charAt(0) === 't');
-                this._updatePanelHasChildrenAsTriggers[i] = childrenAsTriggers;
-                this._updatePanelIDs[i] = realPanelID;
-                this._updatePanelClientIDs[i] = this._uniqueIDToClientID(realPanelID);
-            }
-            this._asyncPostBackTimeout = asyncPostBackTimeout * 1000;
-        }
-        else {
-            this._updatePanelIDs = [];
-            this._updatePanelClientIDs = [];
-            this._updatePanelHasChildrenAsTriggers = [];
-            this._asyncPostBackTimeout = 0;
-        }
-        this._asyncPostBackControlIDs = [];
-        this._asyncPostBackControlClientIDs = [];
-        this._convertToClientIDs(asyncPostBackControlIDs, this._asyncPostBackControlIDs, this._asyncPostBackControlClientIDs);
-        this._postBackControlIDs = [];
-        this._postBackControlClientIDs = [];
-        this._convertToClientIDs(postBackControlIDs, this._postBackControlIDs, this._postBackControlClientIDs);
-    }
-    function Sys$WebForms$PageRequestManager$_updatePanel(updatePanelElement, rendering) {
-        for (var updatePanelID in this._scriptDisposes) {
-            if (this._elementContains(updatePanelElement, document.getElementById(updatePanelID))) {
-                var disposeScripts = this._scriptDisposes[updatePanelID];
-                for (var i = 0; i < disposeScripts.length; i++) {
-                    eval(disposeScripts[i]);
-                }
-                delete this._scriptDisposes[updatePanelID];
-            }
-        }
-        this._destroyTree(updatePanelElement);
-        updatePanelElement.innerHTML = rendering;
-    }
-    function Sys$WebForms$PageRequestManager$_validPosition(position) {
-        return (typeof(position) !== "undefined") && (position !== null) && (position !== 0);
-    }
-Sys.WebForms.PageRequestManager.prototype = {
-    _get_eventHandlerList: Sys$WebForms$PageRequestManager$_get_eventHandlerList,
-    get_isInAsyncPostBack: Sys$WebForms$PageRequestManager$get_isInAsyncPostBack,
-    add_beginRequest: Sys$WebForms$PageRequestManager$add_beginRequest,
-    remove_beginRequest: Sys$WebForms$PageRequestManager$remove_beginRequest,
-    add_endRequest: Sys$WebForms$PageRequestManager$add_endRequest,
-    remove_endRequest: Sys$WebForms$PageRequestManager$remove_endRequest,
-    add_initializeRequest: Sys$WebForms$PageRequestManager$add_initializeRequest,
-    remove_initializeRequest: Sys$WebForms$PageRequestManager$remove_initializeRequest,
-    add_pageLoaded: Sys$WebForms$PageRequestManager$add_pageLoaded,
-    remove_pageLoaded: Sys$WebForms$PageRequestManager$remove_pageLoaded,
-    add_pageLoading: Sys$WebForms$PageRequestManager$add_pageLoading,
-    remove_pageLoading: Sys$WebForms$PageRequestManager$remove_pageLoading,
-    abortPostBack: Sys$WebForms$PageRequestManager$abortPostBack,
-    _cancelPendingCallbacks: Sys$WebForms$PageRequestManager$_cancelPendingCallbacks,
-    _createPageRequestManagerTimeoutError: Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError,
-    _createPageRequestManagerServerError: Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError,
-    _createPageRequestManagerParserError: Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError,
-    _createPostBackSettings: Sys$WebForms$PageRequestManager$_createPostBackSettings,
-    _convertToClientIDs: Sys$WebForms$PageRequestManager$_convertToClientIDs,
-    _destroyTree: Sys$WebForms$PageRequestManager$_destroyTree,
-    dispose: Sys$WebForms$PageRequestManager$dispose,
-    _doCallback: Sys$WebForms$PageRequestManager$_doCallback,
-    _doPostBack: Sys$WebForms$PageRequestManager$_doPostBack,
-    _doPostBackWithOptions: Sys$WebForms$PageRequestManager$_doPostBackWithOptions,
-    _elementContains: Sys$WebForms$PageRequestManager$_elementContains,
-    _endPostBack: Sys$WebForms$PageRequestManager$_endPostBack,
-    _findNearestElement: Sys$WebForms$PageRequestManager$_findNearestElement,
-    _findText: Sys$WebForms$PageRequestManager$_findText,
-    _fireDefaultButton: Sys$WebForms$PageRequestManager$_fireDefaultButton,
-    _getPageLoadedEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs,
-    _getPageLoadingEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs,
-    _getPostBackSettings: Sys$WebForms$PageRequestManager$_getPostBackSettings,
-    _getScrollPosition: Sys$WebForms$PageRequestManager$_getScrollPosition,
-    _initializeInternal: Sys$WebForms$PageRequestManager$_initializeInternal,
-    _matchesParentIDInList: Sys$WebForms$PageRequestManager$_matchesParentIDInList,
-    _onFormElementActive: Sys$WebForms$PageRequestManager$_onFormElementActive,
-    _onFormElementClick: Sys$WebForms$PageRequestManager$_onFormElementClick,
-    _onFormSubmit: Sys$WebForms$PageRequestManager$_onFormSubmit,
-    _onFormSubmitCompleted: Sys$WebForms$PageRequestManager$_onFormSubmitCompleted,
-    _onWindowUnload: Sys$WebForms$PageRequestManager$_onWindowUnload,
-    _pageLoaded: Sys$WebForms$PageRequestManager$_pageLoaded,
-    _pageLoadedInitialLoad: Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad,
-    _queueScripts: Sys$WebForms$PageRequestManager$_queueScripts,
-    _registerDisposeScript: Sys$WebForms$PageRequestManager$_registerDisposeScript,
-    _scriptIncludesLoadComplete: Sys$WebForms$PageRequestManager$_scriptIncludesLoadComplete,
-    _scriptIncludesLoadFailed: Sys$WebForms$PageRequestManager$_scriptIncludesLoadFailed,
-    _scriptsLoadComplete: Sys$WebForms$PageRequestManager$_scriptsLoadComplete,
-    _splitNodeIntoArray: Sys$WebForms$PageRequestManager$_splitNodeIntoArray,
-    _uniqueIDToClientID: Sys$WebForms$PageRequestManager$_uniqueIDToClientID,
-    _updateControls: Sys$WebForms$PageRequestManager$_updateControls,
-    _updatePanel: Sys$WebForms$PageRequestManager$_updatePanel,
-    _validPosition: Sys$WebForms$PageRequestManager$_validPosition
-}
-Sys.WebForms.PageRequestManager.getInstance = function Sys$WebForms$PageRequestManager$getInstance() {
-    /// <summary locid="M:J#Sys.WebForms.PageRequestManager.getInstance" />
-    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
-    if (arguments.length !== 0) throw Error.parameterCount();
-    var prm = Sys.WebForms.PageRequestManager._instance;
-    if (!prm) {
-        prm = Sys.WebForms.PageRequestManager._instance = new Sys.WebForms.PageRequestManager();
-    }
-    return prm;
-}
-Sys.WebForms.PageRequestManager._addArrayElement = function Sys$WebForms$PageRequestManager$_addArrayElement(arrayName) {
-    if (!window[arrayName]) {
-        window[arrayName] = new Array();
-    }
-    for (var i = 1, l = arguments.length; i < l; i++) {
-        Array.add(window[arrayName], arguments[i]);
-    }
-}
-Sys.WebForms.PageRequestManager._initialize = function Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, formElement) {
-    Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(scriptManagerID, formElement);
-}
-Sys.WebForms.PageRequestManager.registerClass('Sys.WebForms.PageRequestManager');
- 
-Sys.UI._UpdateProgress = function Sys$UI$_UpdateProgress(element) {
-    Sys.UI._UpdateProgress.initializeBase(this,[element]);
-    this._displayAfter = 500;
-    this._dynamicLayout = true;
-    this._associatedUpdatePanelId = null;
-    this._beginRequestHandlerDelegate = null;
-    this._startDelegate = null;
-    this._endRequestHandlerDelegate = null;
-    this._pageRequestManager = null;
-    this._timerCookie = null;
-}
-    function Sys$UI$_UpdateProgress$get_displayAfter() {
-        /// <value type="Number" locid="P:J#Sys.UI._UpdateProgress.displayAfter"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._displayAfter;
-    }
-    function Sys$UI$_UpdateProgress$set_displayAfter(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
-        if (e) throw e;
-        this._displayAfter = value;
-    }
-    function Sys$UI$_UpdateProgress$get_dynamicLayout() {
-        /// <value type="Boolean" locid="P:J#Sys.UI._UpdateProgress.dynamicLayout"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._dynamicLayout;
-    }
-    function Sys$UI$_UpdateProgress$set_dynamicLayout(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
-        if (e) throw e;
-        this._dynamicLayout = value;
-    }
-    function Sys$UI$_UpdateProgress$get_associatedUpdatePanelId() {
-        /// <value type="String" mayBeNull="true" locid="P:J#Sys.UI._UpdateProgress.associatedUpdatePanelId"></value>
-        if (arguments.length !== 0) throw Error.parameterCount();
-        return this._associatedUpdatePanelId;
-    }
-    function Sys$UI$_UpdateProgress$set_associatedUpdatePanelId(value) {
-        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
-        if (e) throw e;
-        this._associatedUpdatePanelId = value;
-    }
-    function Sys$UI$_UpdateProgress$_handleBeginRequest(sender, arg) {
-        var curElem = arg.get_postBackElement();
-        var showProgress = !this._associatedUpdatePanelId; 
-        while (!showProgress && curElem) {
-            if (curElem.id && this._associatedUpdatePanelId === curElem.id) {
-                showProgress = true; 
-            }
-            curElem = curElem.parentNode; 
-        } 
-        if (showProgress) {
-            this._timerCookie = window.setTimeout(this._startDelegate, this._displayAfter);
-        }
-    }
-    function Sys$UI$_UpdateProgress$_startRequest() {
-        if (this._pageRequestManager.get_isInAsyncPostBack()) {
-            if (this._dynamicLayout) this.get_element().style.display = 'block';
-            else this.get_element().style.visibility = 'visible';
-        }
-        this._timerCookie = null;
-    }
-    function Sys$UI$_UpdateProgress$_handleEndRequest(sender, arg) {
-        if (this._dynamicLayout) this.get_element().style.display = 'none';
-        else this.get_element().style.visibility = 'hidden';
-        if (this._timerCookie) {
-            window.clearTimeout(this._timerCookie);
-            this._timerCookie = null;
-        }
-    }
-    function Sys$UI$_UpdateProgress$dispose() {
-       if (this._pageRequestManager !== null) {
-           this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);
-           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
-       }
-       Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
-    }
-    function Sys$UI$_UpdateProgress$initialize() {
-        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
-    	this._beginRequestHandlerDelegate = Function.createDelegate(this, this._handleBeginRequest);
-    	this._endRequestHandlerDelegate = Function.createDelegate(this, this._handleEndRequest);
-    	this._startDelegate = Function.createDelegate(this, this._startRequest);
-    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
-           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
-    	}
-    	if (this._pageRequestManager !== null ) {
-    	    this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
-    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
-    	}
-    }
-Sys.UI._UpdateProgress.prototype = {
-    get_displayAfter: Sys$UI$_UpdateProgress$get_displayAfter,
-    set_displayAfter: Sys$UI$_UpdateProgress$set_displayAfter,
-    get_dynamicLayout: Sys$UI$_UpdateProgress$get_dynamicLayout,
-    set_dynamicLayout: Sys$UI$_UpdateProgress$set_dynamicLayout,
-    get_associatedUpdatePanelId: Sys$UI$_UpdateProgress$get_associatedUpdatePanelId,
-    set_associatedUpdatePanelId: Sys$UI$_UpdateProgress$set_associatedUpdatePanelId,
-    _handleBeginRequest: Sys$UI$_UpdateProgress$_handleBeginRequest,
-    _startRequest: Sys$UI$_UpdateProgress$_startRequest,
-    _handleEndRequest: Sys$UI$_UpdateProgress$_handleEndRequest,
-    dispose: Sys$UI$_UpdateProgress$dispose,
-    initialize: Sys$UI$_UpdateProgress$initialize
-}
-Sys.UI._UpdateProgress.registerClass('Sys.UI._UpdateProgress', Sys.UI.Control);
-Type.registerNamespace('Sys.WebForms');
-Sys.WebForms.Res={
-'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
-'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
-'PRM_ParserError':'The message received from the server could not be parsed.',
-'PRM_TimeoutError':'The server request timed out.',
-'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.',
-'PRM_UnknownToken':'Unknown token: \'{0}\'.',
-'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
-'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
-'PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}',
-'PRM_TimeoutError':'The server request timed out.',
-'PRM_ParserErrorDetails':'Error parsing near \'{0}\'.',
-'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'
-};
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+//-----------------------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------
+// MicrosoftAjaxWebForms.js
+// Microsoft AJAX ASP.NET WebForms Framework.
+Type.registerNamespace('Sys.WebForms');
+Sys.WebForms.BeginRequestEventArgs = function Sys$WebForms$BeginRequestEventArgs(request, postBackElement) {
+    /// <summary locid="M:J#Sys.WebForms.BeginRequestEventArgs.#ctor" />
+    /// <param name="request" type="Sys.Net.WebRequest"></param>
+    /// <param name="postBackElement" domElement="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "request", type: Sys.Net.WebRequest},
+        {name: "postBackElement", mayBeNull: true, domElement: true}
+    ]);
+    if (e) throw e;
+    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
+    this._request = request;
+    this._postBackElement = postBackElement;
+}
+    function Sys$WebForms$BeginRequestEventArgs$get_postBackElement() {
+        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.BeginRequestEventArgs.postBackElement"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._postBackElement;
+    }
+    function Sys$WebForms$BeginRequestEventArgs$get_request() {
+        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.BeginRequestEventArgs.request"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._request;
+    }
+Sys.WebForms.BeginRequestEventArgs.prototype = {
+    get_postBackElement: Sys$WebForms$BeginRequestEventArgs$get_postBackElement,
+    get_request: Sys$WebForms$BeginRequestEventArgs$get_request
+}
+Sys.WebForms.BeginRequestEventArgs.registerClass('Sys.WebForms.BeginRequestEventArgs', Sys.EventArgs);
+ 
+Sys.WebForms.EndRequestEventArgs = function Sys$WebForms$EndRequestEventArgs(error, dataItems, response) {
+    /// <summary locid="M:J#Sys.WebForms.EndRequestEventArgs.#ctor" />
+    /// <param name="error" type="Error" mayBeNull="true"></param>
+    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
+    /// <param name="response" type="Sys.Net.WebRequestExecutor"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "error", type: Error, mayBeNull: true},
+        {name: "dataItems", type: Object, mayBeNull: true},
+        {name: "response", type: Sys.Net.WebRequestExecutor}
+    ]);
+    if (e) throw e;
+    Sys.WebForms.EndRequestEventArgs.initializeBase(this);
+    this._errorHandled = false;
+    this._error = error;
+    this._dataItems = dataItems || new Object();
+    this._response = response;
+}
+    function Sys$WebForms$EndRequestEventArgs$get_dataItems() {
+        /// <value type="Object" locid="P:J#Sys.WebForms.EndRequestEventArgs.dataItems"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dataItems;
+    }
+    function Sys$WebForms$EndRequestEventArgs$get_error() {
+        /// <value type="Error" locid="P:J#Sys.WebForms.EndRequestEventArgs.error"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._error;
+    }
+    function Sys$WebForms$EndRequestEventArgs$get_errorHandled() {
+        /// <value type="Boolean" locid="P:J#Sys.WebForms.EndRequestEventArgs.errorHandled"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._errorHandled;
+    }
+    function Sys$WebForms$EndRequestEventArgs$set_errorHandled(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+        this._errorHandled = value;
+    }
+    function Sys$WebForms$EndRequestEventArgs$get_response() {
+        /// <value type="Sys.Net.WebRequestExecutor" locid="P:J#Sys.WebForms.EndRequestEventArgs.response"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._response;
+    }
+Sys.WebForms.EndRequestEventArgs.prototype = {
+    get_dataItems: Sys$WebForms$EndRequestEventArgs$get_dataItems,
+    get_error: Sys$WebForms$EndRequestEventArgs$get_error,
+    get_errorHandled: Sys$WebForms$EndRequestEventArgs$get_errorHandled,
+    set_errorHandled: Sys$WebForms$EndRequestEventArgs$set_errorHandled,
+    get_response: Sys$WebForms$EndRequestEventArgs$get_response
+}
+Sys.WebForms.EndRequestEventArgs.registerClass('Sys.WebForms.EndRequestEventArgs', Sys.EventArgs);
+Sys.WebForms.InitializeRequestEventArgs = function Sys$WebForms$InitializeRequestEventArgs(request, postBackElement) {
+    /// <summary locid="M:J#Sys.WebForms.InitializeRequestEventArgs.#ctor" />
+    /// <param name="request" type="Sys.Net.WebRequest"></param>
+    /// <param name="postBackElement" domElement="true" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "request", type: Sys.Net.WebRequest},
+        {name: "postBackElement", mayBeNull: true, domElement: true}
+    ]);
+    if (e) throw e;
+    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
+    this._request = request;
+    this._postBackElement = postBackElement;
+}
+    function Sys$WebForms$InitializeRequestEventArgs$get_postBackElement() {
+        /// <value domElement="true" mayBeNull="true" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.postBackElement"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._postBackElement;
+    }
+    function Sys$WebForms$InitializeRequestEventArgs$get_request() {
+        /// <value type="Sys.Net.WebRequest" locid="P:J#Sys.WebForms.InitializeRequestEventArgs.request"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._request;
+    }
+Sys.WebForms.InitializeRequestEventArgs.prototype = {
+    get_postBackElement: Sys$WebForms$InitializeRequestEventArgs$get_postBackElement,
+    get_request: Sys$WebForms$InitializeRequestEventArgs$get_request
+}
+Sys.WebForms.InitializeRequestEventArgs.registerClass('Sys.WebForms.InitializeRequestEventArgs', Sys.CancelEventArgs);
+ 
+Sys.WebForms.PageLoadedEventArgs = function Sys$WebForms$PageLoadedEventArgs(panelsUpdated, panelsCreated, dataItems) {
+    /// <summary locid="M:J#Sys.WebForms.PageLoadedEventArgs.#ctor" />
+    /// <param name="panelsUpdated" type="Array"></param>
+    /// <param name="panelsCreated" type="Array"></param>
+    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "panelsUpdated", type: Array},
+        {name: "panelsCreated", type: Array},
+        {name: "dataItems", type: Object, mayBeNull: true}
+    ]);
+    if (e) throw e;
+    Sys.WebForms.PageLoadedEventArgs.initializeBase(this);
+    this._panelsUpdated = panelsUpdated;
+    this._panelsCreated = panelsCreated;
+    this._dataItems = dataItems || new Object();
+}
+    function Sys$WebForms$PageLoadedEventArgs$get_dataItems() {
+        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadedEventArgs.dataItems"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dataItems;
+    }
+    function Sys$WebForms$PageLoadedEventArgs$get_panelsCreated() {
+        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsCreated"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsCreated;
+    }
+    function Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated() {
+        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadedEventArgs.panelsUpdated"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsUpdated;
+    }
+Sys.WebForms.PageLoadedEventArgs.prototype = {
+    get_dataItems: Sys$WebForms$PageLoadedEventArgs$get_dataItems,
+    get_panelsCreated: Sys$WebForms$PageLoadedEventArgs$get_panelsCreated,
+    get_panelsUpdated: Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated
+}
+Sys.WebForms.PageLoadedEventArgs.registerClass('Sys.WebForms.PageLoadedEventArgs', Sys.EventArgs);
+Sys.WebForms.PageLoadingEventArgs = function Sys$WebForms$PageLoadingEventArgs(panelsUpdating, panelsDeleting, dataItems) {
+    /// <summary locid="M:J#Sys.WebForms.PageLoadingEventArgs.#ctor" />
+    /// <param name="panelsUpdating" type="Array"></param>
+    /// <param name="panelsDeleting" type="Array"></param>
+    /// <param name="dataItems" type="Object" mayBeNull="true"></param>
+    var e = Function._validateParams(arguments, [
+        {name: "panelsUpdating", type: Array},
+        {name: "panelsDeleting", type: Array},
+        {name: "dataItems", type: Object, mayBeNull: true}
+    ]);
+    if (e) throw e;
+    Sys.WebForms.PageLoadingEventArgs.initializeBase(this);
+    this._panelsUpdating = panelsUpdating;
+    this._panelsDeleting = panelsDeleting;
+    this._dataItems = dataItems || new Object();
+}
+    function Sys$WebForms$PageLoadingEventArgs$get_dataItems() {
+        /// <value type="Object" locid="P:J#Sys.WebForms.PageLoadingEventArgs.dataItems"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dataItems;
+    }
+    function Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting() {
+        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsDeleting"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsDeleting;
+    }
+    function Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating() {
+        /// <value type="Array" locid="P:J#Sys.WebForms.PageLoadingEventArgs.panelsUpdating"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._panelsUpdating;
+    }
+Sys.WebForms.PageLoadingEventArgs.prototype = {
+    get_dataItems: Sys$WebForms$PageLoadingEventArgs$get_dataItems,
+    get_panelsDeleting: Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting,
+    get_panelsUpdating: Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating
+}
+Sys.WebForms.PageLoadingEventArgs.registerClass('Sys.WebForms.PageLoadingEventArgs', Sys.EventArgs);
+ 
+Sys.WebForms.PageRequestManager = function Sys$WebForms$PageRequestManager() {
+    this._form = null;
+    this._activeDefaultButton = null;
+    this._activeDefaultButtonClicked = false;
+    this._updatePanelIDs = null;
+    this._updatePanelClientIDs = null;
+    this._oldUpdatePanelIDs = null;
+    this._childUpdatePanelIDs = null;
+    this._panelsToRefreshIDs = null;
+    this._updatePanelHasChildrenAsTriggers = null;
+    this._asyncPostBackControlIDs = null;
+    this._asyncPostBackControlClientIDs = null;
+    this._postBackControlIDs = null;
+    this._postBackControlClientIDs = null;
+    this._scriptManagerID = null;
+    this._pageLoadedHandler = null;
+    this._additionalInput = null;
+    this._onsubmit = null;
+    this._onSubmitStatements = [];
+    this._originalDoPostBack = null;
+    this._originalDoPostBackWithOptions = null;
+    this._originalFireDefaultButton = null;
+    this._originalDoCallback = null;
+    this._isCrossPost = false;
+    this._postBackSettings = null;
+    this._request = null;
+    this._onFormSubmitHandler = null;
+    this._onFormElementClickHandler = null;
+    this._onWindowUnloadHandler = null;
+    this._asyncPostBackTimeout = null;
+    this._controlIDToFocus = null;
+    this._scrollPosition = null;
+    this._dataItems = null;
+    this._updateContext = null;
+    this._processingRequest = false;
+    this._scriptDisposes = {};
+}
+    function Sys$WebForms$PageRequestManager$_get_eventHandlerList() {
+        if (!this._events) {
+            this._events = new Sys.EventHandlerList();
+        }
+        return this._events;
+    }
+    function Sys$WebForms$PageRequestManager$get_isInAsyncPostBack() {
+        /// <value type="Boolean" locid="P:J#Sys.WebForms.PageRequestManager.isInAsyncPostBack"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._request !== null;
+    }
+    function Sys$WebForms$PageRequestManager$add_beginRequest(handler) {
+        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.beginRequest" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().addHandler("beginRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_beginRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().removeHandler("beginRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$add_endRequest(handler) {
+        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.endRequest" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().addHandler("endRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_endRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().removeHandler("endRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$add_initializeRequest(handler) {
+        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.initializeRequest" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().addHandler("initializeRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_initializeRequest(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().removeHandler("initializeRequest", handler);
+    }
+    function Sys$WebForms$PageRequestManager$add_pageLoaded(handler) {
+        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoaded" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().addHandler("pageLoaded", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_pageLoaded(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().removeHandler("pageLoaded", handler);
+    }
+    function Sys$WebForms$PageRequestManager$add_pageLoading(handler) {
+        /// <summary locid="E:J#Sys.WebForms.PageRequestManager.pageLoading" />
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().addHandler("pageLoading", handler);
+    }
+    function Sys$WebForms$PageRequestManager$remove_pageLoading(handler) {
+        var e = Function._validateParams(arguments, [{name: "handler", type: Function}]);
+        if (e) throw e;
+        this._get_eventHandlerList().removeHandler("pageLoading", handler);
+    }
+    function Sys$WebForms$PageRequestManager$abortPostBack() {
+        if (!this._processingRequest && this._request) {
+            this._request.get_executor().abort();
+            this._request = null;
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_cancelPendingCallbacks() {
+        for (var i = 0, l = window.__pendingCallbacks.length; i < l; i++) {
+            var callback = window.__pendingCallbacks[i];
+            if (callback) {
+                if (!callback.async) {
+                    window.__synchronousCallBackIndex = -1;
+                }
+                window.__pendingCallbacks[i] = null;
+                var callbackFrameID = "__CALLBACKFRAME" + i;
+                var xmlRequestFrame = document.getElementById(callbackFrameID);
+                if (xmlRequestFrame) {
+                    xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
+                }
+            }
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError() {
+        var displayMessage = "Sys.WebForms.PageRequestManagerTimeoutException: " + Sys.WebForms.Res.PRM_TimeoutError;
+        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerTimeoutException'});
+        e.popStackFrame();
+        return e;
+    }
+    function Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError(httpStatusCode, message) {
+        var displayMessage = "Sys.WebForms.PageRequestManagerServerErrorException: " +
+            (message || String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
+        var e = Error.create(displayMessage, {
+            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
+            httpStatusCode: httpStatusCode
+        });
+        e.popStackFrame();
+        return e;
+    }
+    function Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError(parserErrorMessage) {
+        var displayMessage = "Sys.WebForms.PageRequestManagerParserErrorException: " + String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
+        var e = Error.create(displayMessage, {name: 'Sys.WebForms.PageRequestManagerParserErrorException'});
+        e.popStackFrame();
+        return e;
+    }
+    function Sys$WebForms$PageRequestManager$_createPostBackSettings(async, panelID, sourceElement) {
+        return { async:async, panelID:panelID, sourceElement:sourceElement };
+    }
+    function Sys$WebForms$PageRequestManager$_convertToClientIDs(source, destinationIDs, destinationClientIDs) {
+        if (source) {
+            for (var i = 0; i < source.length; i++) {
+                Array.add(destinationIDs, source[i]);
+                Array.add(destinationClientIDs, this._uniqueIDToClientID(source[i]));
+            }
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_destroyTree(element) {
+        if (element.nodeType === 1) {
+            var childNodes = element.childNodes;
+            for (var i = childNodes.length - 1; i >= 0; i--) {
+                var node = childNodes[i];
+                if (node.nodeType === 1) {
+                    if (node.dispose && typeof(node.dispose) === "function") {
+                        node.dispose();
+                    }
+                    else if (node.control && typeof(node.control.dispose) === "function") {
+                        node.control.dispose();
+                    }
+                    var behaviors = Sys.UI.Behavior.getBehaviors(node);
+                    for (var j = behaviors.length - 1; j >= 0; j--) {
+                        behaviors[j].dispose();
+                    }
+                    this._destroyTree(node);
+                }
+            }
+        }
+    }
+    function Sys$WebForms$PageRequestManager$dispose() {
+        if (this._form) {
+            Sys.UI.DomEvent.removeHandler(this._form, 'submit', this._onFormSubmitHandler);
+            Sys.UI.DomEvent.removeHandler(this._form, 'click', this._onFormElementClickHandler);
+            Sys.UI.DomEvent.removeHandler(window, 'unload', this._onWindowUnloadHandler);
+            Sys.UI.DomEvent.removeHandler(window, 'load', this._pageLoadedHandler);
+        }
+        if (this._originalDoPostBack) {
+            window.__doPostBack = this._originalDoPostBack;
+            this._originalDoPostBack = null;
+        }
+        if (this._originalDoPostBackWithOptions) {
+            window.WebForm_DoPostBackWithOptions = this._originalDoPostBackWithOptions;
+            this._originalDoPostBackWithOptions = null;
+        }
+        if (this._originalFireDefaultButton) {
+            window.WebForm_FireDefaultButton = this._originalFireDefaultButton;
+            this._originalFireDefaultButton = null;
+        }
+        if (this._originalDoCallback) {
+            window.WebForm_DoCallback = this._originalDoCallback;
+            this._originalDoCallback = null;
+        }
+        this._form = null;
+        this._updatePanelIDs = null;
+        this._oldUpdatePanelIDs = null;
+        this._childUpdatePanelIDs = null;
+        this._updatePanelClientIDs = null;
+        this._asyncPostBackControlIDs = null;
+        this._asyncPostBackControlClientIDs = null;
+        this._postBackControlIDs = null;
+        this._postBackControlClientIDs = null;
+        this._asyncPostBackTimeout = null;
+        this._scrollPosition = null;
+        this._dataItems = null;
+    }
+    function Sys$WebForms$PageRequestManager$_doCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) {
+        if (!this.get_isInAsyncPostBack()) {
+            this._originalDoCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync);
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_doPostBack(eventTarget, eventArgument) {
+        this._additionalInput = null;
+        var form = this._form;
+        if ((eventTarget === null) || (typeof(eventTarget) === "undefined") || (this._isCrossPost)) {
+            this._postBackSettings = this._createPostBackSettings(false, null, null);
+            this._isCrossPost = false;
+        }
+        else {
+            var clientID = this._uniqueIDToClientID(eventTarget);
+            var postBackElement = document.getElementById(clientID);
+            if (!postBackElement) {
+                if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
+                    this._postBackSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + eventTarget, null);
+                }
+                else {
+                    if (Array.contains(this._postBackControlIDs, eventTarget)) {
+                        this._postBackSettings = this._createPostBackSettings(false, null, null);
+                    }
+                    else {
+                        var nearestUniqueIDMatch = this._findNearestElement(eventTarget);
+                        if (nearestUniqueIDMatch) {
+                            this._postBackSettings = this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
+                        }
+                        else {
+                            this._postBackSettings = this._createPostBackSettings(false, null, null);
+                        }
+                    }
+                }
+            }
+            else {
+                this._postBackSettings = this._getPostBackSettings(postBackElement, eventTarget);
+            }
+        }
+        if (!this._postBackSettings.async) {
+            form.onsubmit = this._onsubmit;
+            this._originalDoPostBack(eventTarget, eventArgument);
+            form.onsubmit = null;
+            return;
+        }
+        form.__EVENTTARGET.value = eventTarget;
+        form.__EVENTARGUMENT.value = eventArgument;
+        this._onFormSubmit();
+    }
+    function Sys$WebForms$PageRequestManager$_doPostBackWithOptions(options) {
+        this._isCrossPost = options && options.actionUrl;
+        this._originalDoPostBackWithOptions(options);
+    }
+    function Sys$WebForms$PageRequestManager$_elementContains(container, element) {
+        while (element) {
+            if (element === container) {
+                return true;
+            }
+            element = element.parentNode;
+        }
+        return false;
+    }
+    function Sys$WebForms$PageRequestManager$_endPostBack(error, response) {
+        if (this._request === response.get_webRequest()) {
+            this._processingRequest = false;
+            this._additionalInput = null;
+            this._request = null;
+        }
+        var handler = this._get_eventHandlerList().getHandler("endRequest");
+        var errorHandled = false;
+        if (handler) {
+            var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
+            handler(this, eventArgs);
+            errorHandled = eventArgs.get_errorHandled();
+        }
+        if (!this._processingRequest) {
+            this._dataItems = null;
+        }
+        if (error && !errorHandled) {
+            throw error;
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_findNearestElement(uniqueID) {
+        while (uniqueID.length > 0) {
+            var clientID = this._uniqueIDToClientID(uniqueID);
+            var element = document.getElementById(clientID);
+            if (element) {
+                return element;
+            }
+            var indexOfLastDollar = uniqueID.lastIndexOf('$');
+            if (indexOfLastDollar === -1) {
+                return null;
+            }
+            uniqueID = uniqueID.substring(0, indexOfLastDollar);
+        }
+        return null;
+    }
+    function Sys$WebForms$PageRequestManager$_findText(text, location) {
+        var startIndex = Math.max(0, location - 20);
+        var endIndex = Math.min(text.length, location + 20);
+        return text.substring(startIndex, endIndex);
+    }
+    function Sys$WebForms$PageRequestManager$_fireDefaultButton(event, target) {
+        if ((event.keyCode === 13) && !(event.srcElement && (event.srcElement.tagName.toLowerCase() === "textarea"))) {
+            var defaultButton = document.getElementById(target);
+            if (defaultButton && (typeof(defaultButton.click) !== "undefined")) {
+                
+                
+                this._activeDefaultButton = defaultButton;
+                this._activeDefaultButtonClicked = false;
+                try {
+                    defaultButton.click();
+                }
+                finally {
+                    this._activeDefaultButton = null;
+                }
+                
+                
+                event.cancelBubble = true;
+                if (typeof(event.stopPropagation) === "function") {
+                    event.stopPropagation();
+                }
+                return false;
+            }
+        }
+        return true;
+    }
+    function Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs(initialLoad) {
+        var updated = [];
+        var created = [];
+        var oldIDs = this._oldUpdatePanelIDs || []; 
+        var newIDs = this._updatePanelIDs; 
+        var childIDs = this._childUpdatePanelIDs || []; 
+        var refreshedIDs = this._panelsToRefreshIDs || []; 
+        for (var i = 0; i < refreshedIDs.length; i++) {
+            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
+        }
+        for (var i = 0; i < newIDs.length; i++) {
+            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) !== -1) {
+                Array.add(created, document.getElementById(this._uniqueIDToClientID(newIDs[i])));
+            }
+        }
+        return new Sys.WebForms.PageLoadedEventArgs(updated, created, this._dataItems);
+    }
+    function Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs() {
+        var updated = [];
+        var deleted = [];
+        var oldIDs = this._oldUpdatePanelIDs;
+        var newIDs = this._updatePanelIDs;
+        var childIDs = this._childUpdatePanelIDs;
+        var refreshedIDs = this._panelsToRefreshIDs;
+        for (var i = 0; i < refreshedIDs.length; i++) {
+            Array.add(updated, document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
+        }
+        for (var i = 0; i < oldIDs.length; i++) {
+            if (Array.indexOf(refreshedIDs, oldIDs[i]) === -1 &&
+                (Array.indexOf(newIDs, oldIDs[i]) === -1 || Array.indexOf(childIDs, oldIDs[i]) > -1)) {
+                Array.add(deleted, document.getElementById(this._uniqueIDToClientID(oldIDs[i])));
+            }
+        }
+        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, this._dataItems);
+    }
+    function Sys$WebForms$PageRequestManager$_getPostBackSettings(element, elementUniqueID) {
+        var originalElement = element;
+        var proposedSettings = null;
+        while (element) {
+            if (element.id) {
+                if (!proposedSettings && Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
+                    proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
+                }
+                else {
+                    if (!proposedSettings && Array.contains(this._postBackControlClientIDs, element.id)) {
+                        return this._createPostBackSettings(false, null, null);
+                    }
+                    else {
+                        var indexOfPanel = Array.indexOf(this._updatePanelClientIDs, element.id);
+                        if (indexOfPanel !== -1) {
+                            if (this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {
+                                return this._createPostBackSettings(true, this._updatePanelIDs[indexOfPanel] + '|' + elementUniqueID, originalElement);
+                            }
+                            else {
+                                return this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
+                            }
+                        }
+                    }
+                }
+                if (!proposedSettings && this._matchesParentIDInList(element.id, this._asyncPostBackControlClientIDs)) {
+                    proposedSettings = this._createPostBackSettings(true, this._scriptManagerID + '|' + elementUniqueID, originalElement);
+                }
+                else {
+                    if (!proposedSettings && this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) {
+                        return this._createPostBackSettings(false, null, null);
+                    }
+                }
+            }
+            element = element.parentNode;
+        }
+        if (!proposedSettings) {
+            return this._createPostBackSettings(false, null, null);
+        }
+        else {
+            return proposedSettings;
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_getScrollPosition() {
+        var d = document.documentElement;
+        if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
+            return {
+                x: d.scrollLeft,
+                y: d.scrollTop
+            };
+        }
+        else {
+            d = document.body;
+            if (d && (this._validPosition(d.scrollLeft) || this._validPosition(d.scrollTop))) {
+                return {
+                    x: d.scrollLeft,
+                    y: d.scrollTop
+                };
+            }
+            else {
+                if (this._validPosition(window.pageXOffset) || this._validPosition(window.pageYOffset)) {
+                    return {
+                        x: window.pageXOffset,
+                        y: window.pageYOffset
+                    };
+                }
+                else {
+                    return {
+                        x: 0,
+                        y: 0
+                    };
+                }
+            }
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_initializeInternal(scriptManagerID, formElement) {
+        if (this._prmInitialized) {
+            throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
+        }
+        this._prmInitialized = true;
+        this._scriptManagerID = scriptManagerID;
+        this._form = formElement;
+        this._onsubmit = this._form.onsubmit;
+        this._form.onsubmit = null;
+        this._onFormSubmitHandler = Function.createDelegate(this, this._onFormSubmit);
+        this._onFormElementClickHandler = Function.createDelegate(this, this._onFormElementClick);
+        this._onWindowUnloadHandler = Function.createDelegate(this, this._onWindowUnload);
+        Sys.UI.DomEvent.addHandler(this._form, 'submit', this._onFormSubmitHandler);
+        Sys.UI.DomEvent.addHandler(this._form, 'click', this._onFormElementClickHandler);
+        Sys.UI.DomEvent.addHandler(window, 'unload', this._onWindowUnloadHandler);
+        this._originalDoPostBack = window.__doPostBack;
+        if (this._originalDoPostBack) {
+            window.__doPostBack = Function.createDelegate(this, this._doPostBack);
+        }
+        this._originalDoPostBackWithOptions = window.WebForm_DoPostBackWithOptions;
+        if (this._originalDoPostBackWithOptions) {
+            window.WebForm_DoPostBackWithOptions = Function.createDelegate(this, this._doPostBackWithOptions);
+        }
+        this._originalFireDefaultButton = window.WebForm_FireDefaultButton;
+        if (this._originalFireDefaultButton) {
+            window.WebForm_FireDefaultButton = Function.createDelegate(this, this._fireDefaultButton);
+        }
+        this._originalDoCallback = window.WebForm_DoCallback;
+        if (this._originalDoCallback) {
+            window.WebForm_DoCallback = Function.createDelegate(this, this._doCallback);
+        }
+        this._pageLoadedHandler = Function.createDelegate(this, this._pageLoadedInitialLoad);
+        Sys.UI.DomEvent.addHandler(window, 'load', this._pageLoadedHandler);
+    }
+    function Sys$WebForms$PageRequestManager$_matchesParentIDInList(clientID, parentIDList) {
+        for (var i = 0; i < parentIDList.length; i++) {
+            if (clientID.startsWith(parentIDList[i] + "_")) {
+                return true;
+            }
+        }
+        return false;
+    }
+    function Sys$WebForms$PageRequestManager$_onFormElementActive(element, offsetX, offsetY) {
+        if (element.disabled) {
+            return;
+        }
+        this._postBackSettings = this._getPostBackSettings(element, element.name);
+        if (element.name) {
+            if (element.tagName === 'INPUT') {
+                var type = element.type;
+                if (type === 'submit') {
+                    this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
+                }
+                else if (type === 'image') {
+                    this._additionalInput = encodeURIComponent(element.name) + '.x=' + offsetX + '&' + encodeURIComponent(element.name) + '.y=' + offsetY;
+                }
+            }
+            else if ((element.tagName === 'BUTTON') && (element.name.length !== 0) && (element.type === 'submit')) {
+                this._additionalInput = encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);
+            }
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_onFormElementClick(evt) {
+        this._activeDefaultButtonClicked = (evt.target === this._activeDefaultButton);
+        this._onFormElementActive(evt.target, evt.offsetX, evt.offsetY);
+    }
+    function Sys$WebForms$PageRequestManager$_onFormSubmit(evt) {
+        var continueSubmit = true;
+        var isCrossPost = this._isCrossPost;
+        this._isCrossPost = false;
+        if (this._onsubmit) {
+            continueSubmit = this._onsubmit();
+        }
+        if (continueSubmit) {
+            for (var i = 0; i < this._onSubmitStatements.length; i++) {
+                if (!this._onSubmitStatements[i]()) {
+                    continueSubmit = false;
+                    break;
+                }
+            }
+        }
+        if (!continueSubmit) {
+            if (evt) {
+                evt.preventDefault();
+            }
+            return;
+        }
+        var form = this._form;
+        if (isCrossPost) {
+            return;
+        }
+        if (this._activeDefaultButton && !this._activeDefaultButtonClicked) {
+            this._onFormElementActive(this._activeDefaultButton, 0, 0);
+        }
+        if (!this._postBackSettings.async) {
+            return;
+        }
+        var formBody = new Sys.StringBuilder();
+        formBody.append(encodeURIComponent(this._scriptManagerID) + '=' + encodeURIComponent(this._postBackSettings.panelID) + '&');
+        var count = form.elements.length;
+        for (var i = 0; i < count; i++) {
+            var element = form.elements[i];
+            var name = element.name;
+            if (typeof(name) === "undefined" || (name === null) || (name.length === 0)) {
+                continue;
+            }
+            var tagName = element.tagName;
+            if (tagName === 'INPUT') {
+                var type = element.type;
+                if ((type === 'text') ||
+                    (type === 'password') ||
+                    (type === 'hidden') ||
+                    (((type === 'checkbox') || (type === 'radio')) && element.checked)) {
+                    formBody.append(encodeURIComponent(name));
+                    formBody.append('=');
+                    formBody.append(encodeURIComponent(element.value));
+                    formBody.append('&');
+                }
+            }
+            else if (tagName === 'SELECT') {
+                var optionCount = element.options.length;
+                for (var j = 0; j < optionCount; j++) {
+                    var option = element.options[j];
+                    if (option.selected) {
+                        formBody.append(encodeURIComponent(name));
+                        formBody.append('=');
+                        formBody.append(encodeURIComponent(option.value));
+                        formBody.append('&');
+                    }
+                }
+            }
+            else if (tagName === 'TEXTAREA') {
+                formBody.append(encodeURIComponent(name));
+                formBody.append('=');
+                formBody.append(encodeURIComponent(element.value));
+                formBody.append('&');
+            }
+        }
+        if (this._additionalInput) {
+            formBody.append(this._additionalInput);
+            this._additionalInput = null;
+        }
+        
+        var request = new Sys.Net.WebRequest();
+        var action = form.action;
+        if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
+            var queryIndex = action.indexOf('?');
+            if (queryIndex !== -1) {
+                var path = action.substr(0, queryIndex);
+                if (path.indexOf("%") === -1) {
+                    action = encodeURI(path) + action.substr(queryIndex);
+                }
+            }
+            else if (action.indexOf("%") === -1) {
+                action = encodeURI(action);
+            }
+        }
+        request.set_url(action);
+        request.get_headers()['X-MicrosoftAjax'] = 'Delta=true';
+        request.get_headers()['Cache-Control'] = 'no-cache';
+        request.set_timeout(this._asyncPostBackTimeout);
+        request.add_completed(Function.createDelegate(this, this._onFormSubmitCompleted));
+        request.set_body(formBody.toString());
+        var handler = this._get_eventHandlerList().getHandler("initializeRequest");
+        if (handler) {
+            var eventArgs = new Sys.WebForms.InitializeRequestEventArgs(request, this._postBackSettings.sourceElement);
+            handler(this, eventArgs);
+            continueSubmit = !eventArgs.get_cancel();
+        }
+        if (!continueSubmit) {
+            if (evt) {
+                evt.preventDefault();
+            }
+            return;
+        }
+        this._scrollPosition = this._getScrollPosition();
+        this.abortPostBack();
+        handler = this._get_eventHandlerList().getHandler("beginRequest");
+        if (handler) {
+            var eventArgs = new Sys.WebForms.BeginRequestEventArgs(request, this._postBackSettings.sourceElement);
+            handler(this, eventArgs);
+        }
+        
+        if (this._originalDoCallback) {
+            this._cancelPendingCallbacks();
+        }
+        this._request = request;
+        request.invoke();
+        if (evt) {
+            evt.preventDefault();
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_onFormSubmitCompleted(sender, eventArgs) {
+        this._processingRequest = true;
+        var delimitByLengthDelimiter = '|';
+        if (sender.get_timedOut()) {
+            this._endPostBack(this._createPageRequestManagerTimeoutError(), sender);
+            return;
+        }
+        if (sender.get_aborted()) {
+            this._endPostBack(null, sender);
+            return;
+        }
+        if (!this._request || sender.get_webRequest() !== this._request) {
+            return;
+        }
+        var errorMessage;
+        var delta = [];
+        if (sender.get_statusCode() !== 200) {
+            this._endPostBack(this._createPageRequestManagerServerError(sender.get_statusCode()), sender);
+            return;
+        }
+        var reply = sender.get_responseData();
+        var delimiterIndex, len, type, id, content;
+        var replyIndex = 0;
+        var parserErrorDetails = null;
+        while (replyIndex < reply.length) {
+            delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
+            if (delimiterIndex === -1) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            len = parseInt(reply.substring(replyIndex, delimiterIndex), 10);
+            if ((len % 1) !== 0) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            replyIndex = delimiterIndex + 1;
+            delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
+            if (delimiterIndex === -1) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            type = reply.substring(replyIndex, delimiterIndex);
+            replyIndex = delimiterIndex + 1;
+            delimiterIndex = reply.indexOf(delimitByLengthDelimiter, replyIndex);
+            if (delimiterIndex === -1) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            id = reply.substring(replyIndex, delimiterIndex);
+            replyIndex = delimiterIndex + 1;
+            if ((replyIndex + len) >= reply.length) {
+                parserErrorDetails = this._findText(reply, reply.length);
+                break;
+            }
+            content = reply.substr(replyIndex, len);
+            replyIndex += len;
+            if (reply.charAt(replyIndex) !== delimitByLengthDelimiter) {
+                parserErrorDetails = this._findText(reply, replyIndex);
+                break;
+            }
+            replyIndex++;
+            Array.add(delta, {type: type, id: id, content: content});
+        }
+        if (parserErrorDetails) {
+            this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails, parserErrorDetails)), sender);
+            return;
+        }
+        var updatePanelNodes = [];
+        var hiddenFieldNodes = [];
+        var arrayDeclarationNodes = [];
+        var scriptBlockNodes = [];
+        var scriptStartupNodes = [];
+        var expandoNodes = [];
+        var onSubmitNodes = [];
+        var dataItemNodes = [];
+        var dataItemJsonNodes = [];
+        var scriptDisposeNodes = [];
+        var asyncPostBackControlIDsNode, postBackControlIDsNode,
+            updatePanelIDsNode, asyncPostBackTimeoutNode,
+            childUpdatePanelIDsNode, panelsToRefreshNode, formActionNode;
+        for (var i = 0; i < delta.length; i++) {
+            var deltaNode = delta[i];
+            switch (deltaNode.type) {
+                case "updatePanel":
+                    Array.add(updatePanelNodes, deltaNode);
+                    break;
+                case "hiddenField":
+                    Array.add(hiddenFieldNodes, deltaNode);
+                    break;
+                case "arrayDeclaration":
+                    Array.add(arrayDeclarationNodes, deltaNode);
+                    break;
+                case "scriptBlock":
+                    Array.add(scriptBlockNodes, deltaNode);
+                    break;
+                case "scriptStartupBlock":
+                    Array.add(scriptStartupNodes, deltaNode);
+                    break;
+                case "expando":
+                    Array.add(expandoNodes, deltaNode);
+                    break;
+                case "onSubmit":
+                    Array.add(onSubmitNodes, deltaNode);
+                    break;
+                case "asyncPostBackControlIDs":
+                    asyncPostBackControlIDsNode = deltaNode;
+                    break;
+                case "postBackControlIDs":
+                    postBackControlIDsNode = deltaNode;
+                    break;
+                case "updatePanelIDs":
+                    updatePanelIDsNode = deltaNode;
+                    break;
+                case "asyncPostBackTimeout":
+                    asyncPostBackTimeoutNode = deltaNode;
+                    break;
+                case "childUpdatePanelIDs":
+                    childUpdatePanelIDsNode = deltaNode;
+                    break;
+                case "panelsToRefreshIDs":
+                    panelsToRefreshNode = deltaNode;
+                    break;
+                case "formAction":
+                    formActionNode = deltaNode;
+                    break;
+                case "dataItem":
+                    Array.add(dataItemNodes, deltaNode);
+                    break;
+                case "dataItemJson":
+                    Array.add(dataItemJsonNodes, deltaNode);
+                    break;
+                case "scriptDispose":
+                    Array.add(scriptDisposeNodes, deltaNode);
+                    break;
+                case "pageRedirect":
+                    if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
+                        var anchor = document.createElement("a");
+                        anchor.style.display = 'none';
+                        anchor.attachEvent("onclick", cancelBubble);
+                        anchor.href = deltaNode.content;
+                        document.body.appendChild(anchor);
+                        anchor.click();
+                        anchor.detachEvent("onclick", cancelBubble);
+                        document.body.removeChild(anchor);
+                        
+                        function cancelBubble(e) {
+                            e.cancelBubble = true;
+                        }
+                    }
+                    else {
+                        window.location.href = deltaNode.content;
+                    }
+                    return;
+                case "error":
+                    this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(deltaNode.id), deltaNode.content), sender);
+                    return;
+                case "pageTitle":
+                    document.title = deltaNode.content;
+                    break;
+                case "focus":
+                    this._controlIDToFocus = deltaNode.content;
+                    break;
+                default:
+                    this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), sender);
+                    return;
+            }
+        }
+        var i;
+        if (asyncPostBackControlIDsNode && postBackControlIDsNode &&
+            updatePanelIDsNode && panelsToRefreshNode &&
+            asyncPostBackTimeoutNode && childUpdatePanelIDsNode) {
+            this._oldUpdatePanelIDs = this._updatePanelIDs;
+            var childUpdatePanelIDsString = childUpdatePanelIDsNode.content;
+            this._childUpdatePanelIDs = childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') : [];
+            var asyncPostBackControlIDsArray = this._splitNodeIntoArray(asyncPostBackControlIDsNode);
+            var postBackControlIDsArray = this._splitNodeIntoArray(postBackControlIDsNode);
+            var updatePanelIDsArray = this._splitNodeIntoArray(updatePanelIDsNode);
+            this._panelsToRefreshIDs = this._splitNodeIntoArray(panelsToRefreshNode);
+            for (i = 0; i < this._panelsToRefreshIDs.length; i++) {
+                var panelClientID = this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);
+                if (!document.getElementById(panelClientID)) {
+                    this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, panelClientID)), sender);
+                    return;
+                }
+            }
+            var asyncPostBackTimeout = asyncPostBackTimeoutNode.content;
+            this._updateControls(updatePanelIDsArray, asyncPostBackControlIDsArray, postBackControlIDsArray, asyncPostBackTimeout);
+        }
+        this._dataItems = {};
+        for (i = 0; i < dataItemNodes.length; i++) {
+            var dataItemNode = dataItemNodes[i];
+            this._dataItems[dataItemNode.id] = dataItemNode.content;
+        }
+        for (i = 0; i < dataItemJsonNodes.length; i++) {
+            var dataItemJsonNode = dataItemJsonNodes[i];
+            this._dataItems[dataItemJsonNode.id] = Sys.Serialization.JavaScriptSerializer.deserialize(dataItemJsonNode.content);
+        }
+        var handler = this._get_eventHandlerList().getHandler("pageLoading");
+        if (handler) {
+            handler(this, this._getPageLoadingEventArgs());
+        }
+        if (formActionNode) {
+            this._form.action = formActionNode.content;
+        }
+        
+        
+        Sys._ScriptLoader.readLoadedScripts();
+        Sys.Application.beginCreateComponents();
+        var scriptLoader = Sys._ScriptLoader.getInstance();
+        this._queueScripts(scriptLoader, scriptBlockNodes, true, false);
+        
+        this._updateContext = {
+            response: sender,
+            updatePanelNodes: updatePanelNodes,
+            scriptBlockNodes: scriptBlockNodes,
+            scriptDisposeNodes: scriptDisposeNodes,
+            hiddenFieldNodes: hiddenFieldNodes,
+            arrayDeclarationNodes: arrayDeclarationNodes,
+            expandoNodes: expandoNodes,
+            scriptStartupNodes: scriptStartupNodes,
+            onSubmitNodes: onSubmitNodes
+        };
+        scriptLoader.loadScripts(0,
+            Function.createDelegate(this, this._scriptIncludesLoadComplete),
+            Function.createDelegate(this, this._scriptIncludesLoadFailed),
+            null);
+    }
+    function Sys$WebForms$PageRequestManager$_onWindowUnload(evt) {
+        this.dispose();
+    }
+    function Sys$WebForms$PageRequestManager$_pageLoaded(initialLoad) {
+        var handler = this._get_eventHandlerList().getHandler("pageLoaded");
+        if (handler) {
+            handler(this, this._getPageLoadedEventArgs(initialLoad));
+        }
+        if (!initialLoad) {
+            Sys.Application.raiseLoad();
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad(evt) {
+        this._pageLoaded(true);
+    }
+    function Sys$WebForms$PageRequestManager$_queueScripts(scriptLoader, scriptBlockNodes, queueIncludes, queueBlocks) {
+        
+        for (i = 0; i < scriptBlockNodes.length; i++) {
+            var scriptBlockType = scriptBlockNodes[i].id;
+            switch (scriptBlockType) {
+                case "ScriptContentNoTags":
+                    if (!queueBlocks) {
+                        continue;
+                    }
+                    scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
+                    break;
+                case "ScriptContentWithTags":
+                    var scriptTagAttributes;
+                    eval("scriptTagAttributes = " + scriptBlockNodes[i].content);
+                    if (scriptTagAttributes.src) {
+                        if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
+                            continue;
+                        }
+                    }
+                    else if (!queueBlocks) {
+                        continue;
+                    }
+                    scriptLoader.queueCustomScriptTag(scriptTagAttributes);
+                    break;
+                case "ScriptPath":
+                    if (!queueIncludes || Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
+                        continue;
+                    }
+                    scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
+                    break;
+            }
+        }        
+    }
+    function Sys$WebForms$PageRequestManager$_registerDisposeScript(panelID, disposeScript) {
+        if (!this._scriptDisposes[panelID]) {
+            this._scriptDisposes[panelID] = [disposeScript];
+        }
+        else {
+            Array.add(this._scriptDisposes[panelID], disposeScript);
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_scriptIncludesLoadComplete() {
+        var ctx = this._updateContext;
+        for (i = 0; i < ctx.updatePanelNodes.length; i++) {
+            var deltaUpdatePanel = ctx.updatePanelNodes[i];
+            var deltaPanelID = deltaUpdatePanel.id;
+            var deltaPanelRendering = deltaUpdatePanel.content;
+            var updatePanelElement = document.getElementById(deltaPanelID);
+            if (!updatePanelElement) {
+                this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel, deltaPanelID)), ctx.response);
+                return;
+            }
+            this._updatePanel(updatePanelElement, deltaPanelRendering);
+        }
+        for (i = 0; i < ctx.scriptDisposeNodes.length; i++) {
+            var disposePanelId = ctx.scriptDisposeNodes[i].id;
+            var disposeScript = ctx.scriptDisposeNodes[i].content;
+            this._registerDisposeScript(disposePanelId, disposeScript);
+        }
+        var viewStateEncrypted = false;
+        for (i = 0; i < ctx.hiddenFieldNodes.length; i++) {
+            var id = ctx.hiddenFieldNodes[i].id;
+            var value = ctx.hiddenFieldNodes[i].content;
+            
+            if (id === "__VIEWSTATEENCRYPTED") {
+                viewStateEncrypted = true;
+            }
+            var hiddenFieldElement = document.getElementById(id);
+            if (!hiddenFieldElement) {
+                hiddenFieldElement = document.createElement('input');
+                hiddenFieldElement.id = id;
+                hiddenFieldElement.name = id;
+                hiddenFieldElement.type = 'hidden';
+                this._form.appendChild(hiddenFieldElement);
+            }
+            hiddenFieldElement.value = value;
+        }
+        
+        if (!viewStateEncrypted) {
+            var viewStateEncryptedField = document.getElementById("__VIEWSTATEENCRYPTED");
+            if (viewStateEncryptedField) {
+                viewStateEncryptedField.parentNode.removeChild(viewStateEncryptedField);
+            }
+        }
+        if (ctx.scriptsFailed) {
+            throw Sys._ScriptLoader._errorScriptLoadFailed(ctx.scriptsFailed.src, ctx.scriptsFailed.multipleCallbacks);
+        }
+        
+        var scriptLoader = Sys._ScriptLoader.getInstance();
+        
+        this._queueScripts(scriptLoader, ctx.scriptBlockNodes, false, true);
+        var arrayScript = '';
+        for (i = 0; i < ctx.arrayDeclarationNodes.length; i++) {
+            arrayScript += "Sys.WebForms.PageRequestManager._addArrayElement('" + ctx.arrayDeclarationNodes[i].id + "', " + ctx.arrayDeclarationNodes[i].content + ");\r\n";
+        }
+        var expandoScript = '';
+        for (i = 0; i < ctx.expandoNodes.length; i++) {
+            var propertyReference = ctx.expandoNodes[i].id;
+            var propertyValue = ctx.expandoNodes[i].content;
+            expandoScript += propertyReference + " = " + propertyValue + "\r\n";
+        }
+        if (arrayScript.length) {
+            scriptLoader.queueScriptBlock(arrayScript);
+        }
+        if (expandoScript.length) {
+            scriptLoader.queueScriptBlock(expandoScript);
+        }
+        
+        this._queueScripts(scriptLoader, ctx.scriptStartupNodes, true, true);
+        var onSubmitStatementScript = '';
+        for (var i = 0; i < ctx.onSubmitNodes.length; i++) {
+            if (i === 0) {
+                onSubmitStatementScript = 'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n';
+            }
+            onSubmitStatementScript += ctx.onSubmitNodes[i].content + "\r\n";
+        }
+        if (onSubmitStatementScript.length) {
+            onSubmitStatementScript += "\r\nreturn true;\r\n});\r\n";
+            scriptLoader.queueScriptBlock(onSubmitStatementScript);
+        }
+        scriptLoader.loadScripts(0, Function.createDelegate(this, this._scriptsLoadComplete), null, null);
+    }
+    function Sys$WebForms$PageRequestManager$_scriptIncludesLoadFailed(scriptLoader, scriptElement, multipleCallbacks) {
+        this._updateContext.scriptsFailed = { src: scriptElement.src, multipleCallbacks: multipleCallbacks };
+        this._scriptIncludesLoadComplete();
+    }
+    function Sys$WebForms$PageRequestManager$_scriptsLoadComplete() {
+        var response = this._updateContext.response;
+        this._updateContext = null;
+        if (window.__theFormPostData) {
+            window.__theFormPostData = "";
+        }
+        if (window.__theFormPostCollection) {
+            window.__theFormPostCollection = [];
+        }
+        if (window.WebForm_InitCallback) {
+            window.WebForm_InitCallback();
+        }
+        if (this._scrollPosition) {
+            if (window.scrollTo) {
+                window.scrollTo(this._scrollPosition.x, this._scrollPosition.y);
+            }
+            this._scrollPosition = null;
+        }
+        Sys.Application.endCreateComponents();
+        this._pageLoaded(false);
+        this._endPostBack(null, response);
+        if (this._controlIDToFocus) {
+            var focusTarget;
+            var oldContentEditableSetting;
+            if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
+                var targetControl = $get(this._controlIDToFocus);
+                focusTarget = targetControl;
+                if (targetControl && (!WebForm_CanFocus(targetControl))) {
+                    focusTarget = WebForm_FindFirstFocusableChild(targetControl);
+                }
+                if (focusTarget && (typeof(focusTarget.contentEditable) !== "undefined")) {
+                    oldContentEditableSetting = focusTarget.contentEditable;
+                    focusTarget.contentEditable = false;
+                }
+                else {
+                    focusTarget = null;
+                }
+            }
+            WebForm_AutoFocus(this._controlIDToFocus);
+            if (focusTarget) {
+                focusTarget.contentEditable = oldContentEditableSetting;
+            }
+            this._controlIDToFocus = null;
+        }
+    }
+    function Sys$WebForms$PageRequestManager$_splitNodeIntoArray(node) {
+        var str = node.content;
+        var arr = str.length ? str.split(',') : [];
+        return arr;
+    }
+    function Sys$WebForms$PageRequestManager$_uniqueIDToClientID(uniqueID) {
+        return uniqueID.replace(/\$/g, '_');
+    }
+    function Sys$WebForms$PageRequestManager$_updateControls(updatePanelIDs, asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout) {
+        if (updatePanelIDs) {
+            this._updatePanelIDs = new Array(updatePanelIDs.length);
+            this._updatePanelClientIDs = new Array(updatePanelIDs.length);
+            this._updatePanelHasChildrenAsTriggers = new Array(updatePanelIDs.length);
+            for (var i = 0; i < updatePanelIDs.length; i++) {
+                var realPanelID = updatePanelIDs[i].substr(1);
+                var childrenAsTriggers = (updatePanelIDs[i].charAt(0) === 't');
+                this._updatePanelHasChildrenAsTriggers[i] = childrenAsTriggers;
+                this._updatePanelIDs[i] = realPanelID;
+                this._updatePanelClientIDs[i] = this._uniqueIDToClientID(realPanelID);
+            }
+            this._asyncPostBackTimeout = asyncPostBackTimeout * 1000;
+        }
+        else {
+            this._updatePanelIDs = [];
+            this._updatePanelClientIDs = [];
+            this._updatePanelHasChildrenAsTriggers = [];
+            this._asyncPostBackTimeout = 0;
+        }
+        this._asyncPostBackControlIDs = [];
+        this._asyncPostBackControlClientIDs = [];
+        this._convertToClientIDs(asyncPostBackControlIDs, this._asyncPostBackControlIDs, this._asyncPostBackControlClientIDs);
+        this._postBackControlIDs = [];
+        this._postBackControlClientIDs = [];
+        this._convertToClientIDs(postBackControlIDs, this._postBackControlIDs, this._postBackControlClientIDs);
+    }
+    function Sys$WebForms$PageRequestManager$_updatePanel(updatePanelElement, rendering) {
+        for (var updatePanelID in this._scriptDisposes) {
+            if (this._elementContains(updatePanelElement, document.getElementById(updatePanelID))) {
+                var disposeScripts = this._scriptDisposes[updatePanelID];
+                for (var i = 0; i < disposeScripts.length; i++) {
+                    eval(disposeScripts[i]);
+                }
+                delete this._scriptDisposes[updatePanelID];
+            }
+        }
+        this._destroyTree(updatePanelElement);
+        updatePanelElement.innerHTML = rendering;
+    }
+    function Sys$WebForms$PageRequestManager$_validPosition(position) {
+        return (typeof(position) !== "undefined") && (position !== null) && (position !== 0);
+    }
+Sys.WebForms.PageRequestManager.prototype = {
+    _get_eventHandlerList: Sys$WebForms$PageRequestManager$_get_eventHandlerList,
+    get_isInAsyncPostBack: Sys$WebForms$PageRequestManager$get_isInAsyncPostBack,
+    add_beginRequest: Sys$WebForms$PageRequestManager$add_beginRequest,
+    remove_beginRequest: Sys$WebForms$PageRequestManager$remove_beginRequest,
+    add_endRequest: Sys$WebForms$PageRequestManager$add_endRequest,
+    remove_endRequest: Sys$WebForms$PageRequestManager$remove_endRequest,
+    add_initializeRequest: Sys$WebForms$PageRequestManager$add_initializeRequest,
+    remove_initializeRequest: Sys$WebForms$PageRequestManager$remove_initializeRequest,
+    add_pageLoaded: Sys$WebForms$PageRequestManager$add_pageLoaded,
+    remove_pageLoaded: Sys$WebForms$PageRequestManager$remove_pageLoaded,
+    add_pageLoading: Sys$WebForms$PageRequestManager$add_pageLoading,
+    remove_pageLoading: Sys$WebForms$PageRequestManager$remove_pageLoading,
+    abortPostBack: Sys$WebForms$PageRequestManager$abortPostBack,
+    _cancelPendingCallbacks: Sys$WebForms$PageRequestManager$_cancelPendingCallbacks,
+    _createPageRequestManagerTimeoutError: Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError,
+    _createPageRequestManagerServerError: Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError,
+    _createPageRequestManagerParserError: Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError,
+    _createPostBackSettings: Sys$WebForms$PageRequestManager$_createPostBackSettings,
+    _convertToClientIDs: Sys$WebForms$PageRequestManager$_convertToClientIDs,
+    _destroyTree: Sys$WebForms$PageRequestManager$_destroyTree,
+    dispose: Sys$WebForms$PageRequestManager$dispose,
+    _doCallback: Sys$WebForms$PageRequestManager$_doCallback,
+    _doPostBack: Sys$WebForms$PageRequestManager$_doPostBack,
+    _doPostBackWithOptions: Sys$WebForms$PageRequestManager$_doPostBackWithOptions,
+    _elementContains: Sys$WebForms$PageRequestManager$_elementContains,
+    _endPostBack: Sys$WebForms$PageRequestManager$_endPostBack,
+    _findNearestElement: Sys$WebForms$PageRequestManager$_findNearestElement,
+    _findText: Sys$WebForms$PageRequestManager$_findText,
+    _fireDefaultButton: Sys$WebForms$PageRequestManager$_fireDefaultButton,
+    _getPageLoadedEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs,
+    _getPageLoadingEventArgs: Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs,
+    _getPostBackSettings: Sys$WebForms$PageRequestManager$_getPostBackSettings,
+    _getScrollPosition: Sys$WebForms$PageRequestManager$_getScrollPosition,
+    _initializeInternal: Sys$WebForms$PageRequestManager$_initializeInternal,
+    _matchesParentIDInList: Sys$WebForms$PageRequestManager$_matchesParentIDInList,
+    _onFormElementActive: Sys$WebForms$PageRequestManager$_onFormElementActive,
+    _onFormElementClick: Sys$WebForms$PageRequestManager$_onFormElementClick,
+    _onFormSubmit: Sys$WebForms$PageRequestManager$_onFormSubmit,
+    _onFormSubmitCompleted: Sys$WebForms$PageRequestManager$_onFormSubmitCompleted,
+    _onWindowUnload: Sys$WebForms$PageRequestManager$_onWindowUnload,
+    _pageLoaded: Sys$WebForms$PageRequestManager$_pageLoaded,
+    _pageLoadedInitialLoad: Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad,
+    _queueScripts: Sys$WebForms$PageRequestManager$_queueScripts,
+    _registerDisposeScript: Sys$WebForms$PageRequestManager$_registerDisposeScript,
+    _scriptIncludesLoadComplete: Sys$WebForms$PageRequestManager$_scriptIncludesLoadComplete,
+    _scriptIncludesLoadFailed: Sys$WebForms$PageRequestManager$_scriptIncludesLoadFailed,
+    _scriptsLoadComplete: Sys$WebForms$PageRequestManager$_scriptsLoadComplete,
+    _splitNodeIntoArray: Sys$WebForms$PageRequestManager$_splitNodeIntoArray,
+    _uniqueIDToClientID: Sys$WebForms$PageRequestManager$_uniqueIDToClientID,
+    _updateControls: Sys$WebForms$PageRequestManager$_updateControls,
+    _updatePanel: Sys$WebForms$PageRequestManager$_updatePanel,
+    _validPosition: Sys$WebForms$PageRequestManager$_validPosition
+}
+Sys.WebForms.PageRequestManager.getInstance = function Sys$WebForms$PageRequestManager$getInstance() {
+    /// <summary locid="M:J#Sys.WebForms.PageRequestManager.getInstance" />
+    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
+    if (arguments.length !== 0) throw Error.parameterCount();
+    var prm = Sys.WebForms.PageRequestManager._instance;
+    if (!prm) {
+        prm = Sys.WebForms.PageRequestManager._instance = new Sys.WebForms.PageRequestManager();
+    }
+    return prm;
+}
+Sys.WebForms.PageRequestManager._addArrayElement = function Sys$WebForms$PageRequestManager$_addArrayElement(arrayName) {
+    if (!window[arrayName]) {
+        window[arrayName] = new Array();
+    }
+    for (var i = 1, l = arguments.length; i < l; i++) {
+        Array.add(window[arrayName], arguments[i]);
+    }
+}
+Sys.WebForms.PageRequestManager._initialize = function Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, formElement) {
+    Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(scriptManagerID, formElement);
+}
+Sys.WebForms.PageRequestManager.registerClass('Sys.WebForms.PageRequestManager');
+ 
+Sys.UI._UpdateProgress = function Sys$UI$_UpdateProgress(element) {
+    Sys.UI._UpdateProgress.initializeBase(this,[element]);
+    this._displayAfter = 500;
+    this._dynamicLayout = true;
+    this._associatedUpdatePanelId = null;
+    this._beginRequestHandlerDelegate = null;
+    this._startDelegate = null;
+    this._endRequestHandlerDelegate = null;
+    this._pageRequestManager = null;
+    this._timerCookie = null;
+}
+    function Sys$UI$_UpdateProgress$get_displayAfter() {
+        /// <value type="Number" locid="P:J#Sys.UI._UpdateProgress.displayAfter"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._displayAfter;
+    }
+    function Sys$UI$_UpdateProgress$set_displayAfter(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Number}]);
+        if (e) throw e;
+        this._displayAfter = value;
+    }
+    function Sys$UI$_UpdateProgress$get_dynamicLayout() {
+        /// <value type="Boolean" locid="P:J#Sys.UI._UpdateProgress.dynamicLayout"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._dynamicLayout;
+    }
+    function Sys$UI$_UpdateProgress$set_dynamicLayout(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]);
+        if (e) throw e;
+        this._dynamicLayout = value;
+    }
+    function Sys$UI$_UpdateProgress$get_associatedUpdatePanelId() {
+        /// <value type="String" mayBeNull="true" locid="P:J#Sys.UI._UpdateProgress.associatedUpdatePanelId"></value>
+        if (arguments.length !== 0) throw Error.parameterCount();
+        return this._associatedUpdatePanelId;
+    }
+    function Sys$UI$_UpdateProgress$set_associatedUpdatePanelId(value) {
+        var e = Function._validateParams(arguments, [{name: "value", type: String, mayBeNull: true}]);
+        if (e) throw e;
+        this._associatedUpdatePanelId = value;
+    }
+    function Sys$UI$_UpdateProgress$_handleBeginRequest(sender, arg) {
+        var curElem = arg.get_postBackElement();
+        var showProgress = !this._associatedUpdatePanelId; 
+        while (!showProgress && curElem) {
+            if (curElem.id && this._associatedUpdatePanelId === curElem.id) {
+                showProgress = true; 
+            }
+            curElem = curElem.parentNode; 
+        } 
+        if (showProgress) {
+            this._timerCookie = window.setTimeout(this._startDelegate, this._displayAfter);
+        }
+    }
+    function Sys$UI$_UpdateProgress$_startRequest() {
+        if (this._pageRequestManager.get_isInAsyncPostBack()) {
+            if (this._dynamicLayout) this.get_element().style.display = 'block';
+            else this.get_element().style.visibility = 'visible';
+        }
+        this._timerCookie = null;
+    }
+    function Sys$UI$_UpdateProgress$_handleEndRequest(sender, arg) {
+        if (this._dynamicLayout) this.get_element().style.display = 'none';
+        else this.get_element().style.visibility = 'hidden';
+        if (this._timerCookie) {
+            window.clearTimeout(this._timerCookie);
+            this._timerCookie = null;
+        }
+    }
+    function Sys$UI$_UpdateProgress$dispose() {
+       if (this._pageRequestManager !== null) {
+           this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);
+           this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
+       }
+       Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
+    }
+    function Sys$UI$_UpdateProgress$initialize() {
+        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
+    	this._beginRequestHandlerDelegate = Function.createDelegate(this, this._handleBeginRequest);
+    	this._endRequestHandlerDelegate = Function.createDelegate(this, this._handleEndRequest);
+    	this._startDelegate = Function.createDelegate(this, this._startRequest);
+    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
+           this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
+    	}
+    	if (this._pageRequestManager !== null ) {
+    	    this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
+    	    this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
+    	}
+    }
+Sys.UI._UpdateProgress.prototype = {
+    get_displayAfter: Sys$UI$_UpdateProgress$get_displayAfter,
+    set_displayAfter: Sys$UI$_UpdateProgress$set_displayAfter,
+    get_dynamicLayout: Sys$UI$_UpdateProgress$get_dynamicLayout,
+    set_dynamicLayout: Sys$UI$_UpdateProgress$set_dynamicLayout,
+    get_associatedUpdatePanelId: Sys$UI$_UpdateProgress$get_associatedUpdatePanelId,
+    set_associatedUpdatePanelId: Sys$UI$_UpdateProgress$set_associatedUpdatePanelId,
+    _handleBeginRequest: Sys$UI$_UpdateProgress$_handleBeginRequest,
+    _startRequest: Sys$UI$_UpdateProgress$_startRequest,
+    _handleEndRequest: Sys$UI$_UpdateProgress$_handleEndRequest,
+    dispose: Sys$UI$_UpdateProgress$dispose,
+    initialize: Sys$UI$_UpdateProgress$initialize
+}
+Sys.UI._UpdateProgress.registerClass('Sys.UI._UpdateProgress', Sys.UI.Control);
+Type.registerNamespace('Sys.WebForms');
+Sys.WebForms.Res={
+'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
+'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
+'PRM_ParserError':'The message received from the server could not be parsed.',
+'PRM_TimeoutError':'The server request timed out.',
+'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.',
+'PRM_UnknownToken':'Unknown token: \'{0}\'.',
+'PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.',
+'PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}',
+'PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}',
+'PRM_TimeoutError':'The server request timed out.',
+'PRM_ParserErrorDetails':'Error parsing near \'{0}\'.',
+'PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'
+};
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.js
+++ mono-4.6.2.7+dfsg/mcs/class/MicrosoftAjaxLibrary/System.Web.Extensions/3.5.0.0/3.5.21022.8/MicrosoftAjaxWebForms.js
@@ -1,7 +1,7 @@
-﻿//----------------------------------------------------------
-// Copyright (C) Microsoft Corporation. All rights reserved.
-//----------------------------------------------------------
-// MicrosoftAjaxWebForms.js
-Type.registerNamespace("Sys.WebForms");Sys.WebForms.BeginRequestEventArgs=function(b,a){Sys.WebForms.BeginRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.BeginRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.BeginRequestEventArgs.registerClass("Sys.WebForms.BeginRequestEventArgs",Sys.EventArgs);Sys.WebForms.EndRequestEventArgs=function(c,a,b){Sys.WebForms.EndRequestEventArgs.initializeBase(this);this._errorHandled=false;this._error=c;this._dataItems=a||{};this._response=b};Sys.WebForms.EndRequestEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_error:function(){return this._error},get_errorHandled:function(){return this._errorHandled},set_errorHandled:function(a){this._errorHandled=a},get_response:function(){return this._response}};Sys.WebForms.EndRequestEventArgs.registerClass("Sys.WebForms.EndRequestEventArgs",Sys.EventArgs);Sys.WebForms.InitializeRequestEventArgs=function(b,a){Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.InitializeRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.InitializeRequestEventArgs.registerClass("Sys.WebForms.InitializeRequestEventArgs",Sys.CancelEventArgs);Sys.WebForms.PageLoadedEventArgs=function(b,a,c){Sys.WebForms.PageLoadedEventArgs.initializeBase(this);this._panelsUpdated=b;this._panelsCreated=a;this._dataItems=c||{}};Sys.WebForms.PageLoadedEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsCreated:function(){return this._panelsCreated},get_panelsUpdated:function(){return this._panelsUpdated}};Sys.WebForms.PageLoadedEventArgs.registerClass("Sys.WebForms.PageLoadedEventArgs",Sys.EventArgs);Sys.WebForms.PageLoadingEventArgs=function(b,a,c){Sys.WebForms.PageLoadingEventArgs.initializeBase(this);this._panelsUpdating=b;this._panelsDeleting=a;this._dataItems=c||{}};Sys.WebForms.PageLoadingEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsDeleting:function(){return this._panelsDeleting},get_panelsUpdating:function(){return this._panelsUpdating}};Sys.WebForms.PageLoadingEventArgs.registerClass("Sys.WebForms.PageLoadingEventArgs",Sys.EventArgs);Sys.WebForms.PageRequestManager=function(){this._form=null;this._activeDefaultButton=null;this._activeDefaultButtonClicked=false;this._updatePanelIDs=null;this._updatePanelClientIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._panelsToRefreshIDs=null;this._updatePanelHasChildrenAsTriggers=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._scriptManagerID=null;this._pageLoadedHandler=null;this._additionalInput=null;this._onsubmit=null;this._onSubmitStatements=[];this._originalDoPostBack=null;this._originalDoPostBackWithOptions=null;this._originalFireDefaultButton=null;this._originalDoCallback=null;this._isCrossPost=false;this._postBackSettings=null;this._request=null;this._onFormSubmitHandler=null;this._onFormElementClickHandler=null;this._onWindowUnloadHandler=null;this._asyncPostBackTimeout=null;this._controlIDToFocus=null;this._scrollPosition=null;this._dataItems=null;this._updateContext=null;this._processingRequest=false;this._scriptDisposes={}};Sys.WebForms.PageRequestManager.prototype={_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_isInAsyncPostBack:function(){return this._request!==null},add_beginRequest:function(a){this._get_eventHandlerList().addHandler("beginRequest",a)},remove_beginRequest:function(a){this._get_eventHandlerList().removeHandler("beginRequest",a)},add_endRequest:function(a){this._get_eventHandlerList().addHandler("endRequest",a)},remove_endRequest:function(a){this._get_eventHandlerList().removeHandler("endRequest",a)},add_initializeRequest:function(a){this._get_eventHandlerList().addHandler("initializeRequest",a)},remove_initializeRequest:function(a){this._get_eventHandlerList().removeHandler("initializeRequest",a)},add_pageLoaded:function(a){this._get_eventHandlerList().addHandler("pageLoaded",a)},remove_pageLoaded:function(a){this._get_eventHandlerList().removeHandler("pageLoaded",a)},add_pageLoading:function(a){this._get_eventHandlerList().addHandler("pageLoading",a)},remove_pageLoading:function(a){this._get_eventHandlerList().removeHandler("pageLoading",a)},abortPostBack:function(){if(!this._processingRequest&&this._request){this._request.get_executor().abort();this._request=null}},_cancelPendingCallbacks:function(){for(var a=0,e=window.__pendingCallbacks.length;a<e;a++){var c=window.__pendingCallbacks[a];if(c){if(!c.async)window.__synchronousCallBackIndex=-1;window.__pendingCallbacks[a]=null;var d="__CALLBACKFRAME"+a,b=document.getElementById(d);if(b)b.parentNode.removeChild(b)}}},_createPageRequestManagerTimeoutError:function(){var b="Sys.WebForms.PageRequestManagerTimeoutException: "+Sys.WebForms.Res.PRM_TimeoutError,a=Error.create(b,{name:"Sys.WebForms.PageRequestManagerTimeoutException"});a.popStackFrame();return a},_createPageRequestManagerServerError:function(a,d){var c="Sys.WebForms.PageRequestManagerServerErrorException: "+(d||String.format(Sys.WebForms.Res.PRM_ServerError,a)),b=Error.create(c,{name:"Sys.WebForms.PageRequestManagerServerErrorException",httpStatusCode:a});b.popStackFrame();return b},_createPageRequestManagerParserError:function(b){var c="Sys.WebForms.PageRequestManagerParserErrorException: "+String.format(Sys.WebForms.Res.PRM_ParserError,b),a=Error.create(c,{name:"Sys.WebForms.PageRequestManagerParserErrorException"});a.popStackFrame();return a},_createPostBackSettings:function(c,b,a){return {async:c,panelID:b,sourceElement:a}},_convertToClientIDs:function(a,d,c){if(a)for(var b=0;b<a.length;b++){Array.add(d,a[b]);Array.add(c,this._uniqueIDToClientID(a[b]))}},_destroyTree:function(f){if(f.nodeType===1){var d=f.childNodes;for(var b=d.length-1;b>=0;b--){var a=d[b];if(a.nodeType===1){if(a.dispose&&typeof a.dispose==="function")a.dispose();else if(a.control&&typeof a.control.dispose==="function")a.control.dispose();var e=Sys.UI.Behavior.getBehaviors(a);for(var c=e.length-1;c>=0;c--)e[c].dispose();this._destroyTree(a)}}}},dispose:function(){if(this._form){Sys.UI.DomEvent.removeHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.removeHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.removeHandler(window,"unload",this._onWindowUnloadHandler);Sys.UI.DomEvent.removeHandler(window,"load",this._pageLoadedHandler)}if(this._originalDoPostBack){window.__doPostBack=this._originalDoPostBack;this._originalDoPostBack=null}if(this._originalDoPostBackWithOptions){window.WebForm_DoPostBackWithOptions=this._originalDoPostBackWithOptions;this._originalDoPostBackWithOptions=null}if(this._originalFireDefaultButton){window.WebForm_FireDefaultButton=this._originalFireDefaultButton;this._originalFireDefaultButton=null}if(this._originalDoCallback){window.WebForm_DoCallback=this._originalDoCallback;this._originalDoCallback=null}this._form=null;this._updatePanelIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._updatePanelClientIDs=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._asyncPostBackTimeout=null;this._scrollPosition=null;this._dataItems=null},_doCallback:function(d,b,c,f,a,e){if(!this.get_isInAsyncPostBack())this._originalDoCallback(d,b,c,f,a,e)},_doPostBack:function(a,e){this._additionalInput=null;var b=this._form;if(a===null||typeof a==="undefined"||this._isCrossPost){this._postBackSettings=this._createPostBackSettings(false,null,null);this._isCrossPost=false}else{var f=this._uniqueIDToClientID(a),d=document.getElementById(f);if(!d)if(Array.contains(this._asyncPostBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(true,this._scriptManagerID+"|"+a,null);else if(Array.contains(this._postBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(false,null,null);else{var c=this._findNearestElement(a);if(c)this._postBackSettings=this._getPostBackSettings(c,a);else this._postBackSettings=this._createPostBackSettings(false,null,null)}else this._postBackSettings=this._getPostBackSettings(d,a)}if(!this._postBackSettings.async){b.onsubmit=this._onsubmit;this._originalDoPostBack(a,e);b.onsubmit=null;return}b.__EVENTTARGET.value=a;b.__EVENTARGUMENT.value=e;this._onFormSubmit()},_doPostBackWithOptions:function(a){this._isCrossPost=a&&a.actionUrl;this._originalDoPostBackWithOptions(a)},_elementContains:function(b,a){while(a){if(a===b)return true;a=a.parentNode}return false},_endPostBack:function(a,d){if(this._request===d.get_webRequest()){this._processingRequest=false;this._additionalInput=null;this._request=null}var e=this._get_eventHandlerList().getHandler("endRequest"),b=false;if(e){var c=new Sys.WebForms.EndRequestEventArgs(a,this._dataItems,d);e(this,c);b=c.get_errorHandled()}if(!this._processingRequest)this._dataItems=null;if(a&&!b)throw a},_findNearestElement:function(a){while(a.length>0){var d=this._uniqueIDToClientID(a),c=document.getElementById(d);if(c)return c;var b=a.lastIndexOf("$");if(b===-1)return null;a=a.substring(0,b)}return null},_findText:function(b,a){var c=Math.max(0,a-20),d=Math.min(b.length,a+20);return b.substring(c,d)},_fireDefaultButton:function(a,c){if(a.keyCode===13&&!(a.srcElement&&a.srcElement.tagName.toLowerCase()==="textarea")){var b=document.getElementById(c);if(b&&typeof b.click!=="undefined"){this._activeDefaultButton=b;this._activeDefaultButtonClicked=false;try{b.click()}finally{this._activeDefaultButton=null}a.cancelBubble=true;if(typeof a.stopPropagation==="function")a.stopPropagation();return false}}return true},_getPageLoadedEventArgs:function(f){var e=[],d=[],h=this._oldUpdatePanelIDs||[],b=this._updatePanelIDs,g=this._childUpdatePanelIDs||[],c=this._panelsToRefreshIDs||[];for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(f||Array.indexOf(g,b[a])!==-1)Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadedEventArgs(e,d,this._dataItems)},_getPageLoadingEventArgs:function(){var e=[],d=[],b=this._oldUpdatePanelIDs,g=this._updatePanelIDs,f=this._childUpdatePanelIDs,c=this._panelsToRefreshIDs;for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(Array.indexOf(c,b[a])===-1&&(Array.indexOf(g,b[a])===-1||Array.indexOf(f,b[a])>-1))Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadingEventArgs(e,d,this._dataItems)},_getPostBackSettings:function(a,c){var d=a,b=null;while(a){if(a.id){if(!b&&Array.contains(this._asyncPostBackControlClientIDs,a.id))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&Array.contains(this._postBackControlClientIDs,a.id))return this._createPostBackSettings(false,null,null);else{var e=Array.indexOf(this._updatePanelClientIDs,a.id);if(e!==-1)if(this._updatePanelHasChildrenAsTriggers[e])return this._createPostBackSettings(true,this._updatePanelIDs[e]+"|"+c,d);else return this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d)}if(!b&&this._matchesParentIDInList(a.id,this._asyncPostBackControlClientIDs))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&this._matchesParentIDInList(a.id,this._postBackControlClientIDs))return this._createPostBackSettings(false,null,null)}a=a.parentNode}if(!b)return this._createPostBackSettings(false,null,null);else return b},_getScrollPosition:function(){var a=document.documentElement;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else{a=document.body;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else if(this._validPosition(window.pageXOffset)||this._validPosition(window.pageYOffset))return {x:window.pageXOffset,y:window.pageYOffset};else return {x:0,y:0}}},_initializeInternal:function(a,b){if(this._prmInitialized)throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);this._prmInitialized=true;this._scriptManagerID=a;this._form=b;this._onsubmit=this._form.onsubmit;this._form.onsubmit=null;this._onFormSubmitHandler=Function.createDelegate(this,this._onFormSubmit);this._onFormElementClickHandler=Function.createDelegate(this,this._onFormElementClick);this._onWindowUnloadHandler=Function.createDelegate(this,this._onWindowUnload);Sys.UI.DomEvent.addHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.addHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUnloadHandler);this._originalDoPostBack=window.__doPostBack;if(this._originalDoPostBack)window.__doPostBack=Function.createDelegate(this,this._doPostBack);this._originalDoPostBackWithOptions=window.WebForm_DoPostBackWithOptions;if(this._originalDoPostBackWithOptions)window.WebForm_DoPostBackWithOptions=Function.createDelegate(this,this._doPostBackWithOptions);this._originalFireDefaultButton=window.WebForm_FireDefaultButton;if(this._originalFireDefaultButton)window.WebForm_FireDefaultButton=Function.createDelegate(this,this._fireDefaultButton);this._originalDoCallback=window.WebForm_DoCallback;if(this._originalDoCallback)window.WebForm_DoCallback=Function.createDelegate(this,this._doCallback);this._pageLoadedHandler=Function.createDelegate(this,this._pageLoadedInitialLoad);Sys.UI.DomEvent.addHandler(window,"load",this._pageLoadedHandler)},_matchesParentIDInList:function(c,b){for(var a=0;a<b.length;a++)if(c.startsWith(b[a]+"_"))return true;return false},_onFormElementActive:function(a,c,d){if(a.disabled)return;this._postBackSettings=this._getPostBackSettings(a,a.name);if(a.name)if(a.tagName==="INPUT"){var b=a.type;if(b==="submit")this._additionalInput=encodeURIComponent(a.name)+"="+encodeURIComponent(a.value);else if(b==="image")this._additionalInput=encodeURIComponent(a.name)+".x="+c+"&"+encodeURIComponent(a.name)+".y="+d}else if(a.tagName==="BUTTON"&&a.name.length!==0&&a.type==="submit")this._additionalInput=encodeURIComponent(a.name)+"="+encodeURIComponent(a.value)},_onFormElementClick:function(a){this._activeDefaultButtonClicked=a.target===this._activeDefaultButton;this._onFormElementActive(a.target,a.offsetX,a.offsetY)},_onFormSubmit:function(g){var e=true,r=this._isCrossPost;this._isCrossPost=false;if(this._onsubmit)e=this._onsubmit();if(e)for(var h=0;h<this._onSubmitStatements.length;h++)if(!this._onSubmitStatements[h]()){e=false;break}if(!e){if(g)g.preventDefault();return}var n=this._form;if(r)return;if(this._activeDefaultButton&&!this._activeDefaultButtonClicked)this._onFormElementActive(this._activeDefaultButton,0,0);if(!this._postBackSettings.async)return;var a=new Sys.StringBuilder;a.append(encodeURIComponent(this._scriptManagerID)+"="+encodeURIComponent(this._postBackSettings.panelID)+"&");var t=n.elements.length;for(var h=0;h<t;h++){var c=n.elements[h],f=c.name;if(typeof f==="undefined"||f===null||f.length===0)continue;var m=c.tagName;if(m==="INPUT"){var j=c.type;if(j==="text"||j==="password"||j==="hidden"||(j==="checkbox"||j==="radio")&&c.checked){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}else if(m==="SELECT"){var s=c.options.length;for(var o=0;o<s;o++){var p=c.options[o];if(p.selected){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(p.value));a.append("&")}}}else if(m==="TEXTAREA"){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}if(this._additionalInput){a.append(this._additionalInput);this._additionalInput=null}var b=new Sys.Net.WebRequest,d=n.action;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var k=d.indexOf("?");if(k!==-1){var q=d.substr(0,k);if(q.indexOf("%")===-1)d=encodeURI(q)+d.substr(k)}else if(d.indexOf("%")===-1)d=encodeURI(d)}b.set_url(d);b.get_headers()["X-MicrosoftAjax"]="Delta=true";b.get_headers()["Cache-Control"]="no-cache";b.set_timeout(this._asyncPostBackTimeout);b.add_completed(Function.createDelegate(this,this._onFormSubmitCompleted));b.set_body(a.toString());var i=this._get_eventHandlerList().getHandler("initializeRequest");if(i){var l=new Sys.WebForms.InitializeRequestEventArgs(b,this._postBackSettings.sourceElement);i(this,l);e=!l.get_cancel()}if(!e){if(g)g.preventDefault();return}this._scrollPosition=this._getScrollPosition();this.abortPostBack();i=this._get_eventHandlerList().getHandler("beginRequest");if(i){var l=new Sys.WebForms.BeginRequestEventArgs(b,this._postBackSettings.sourceElement);i(this,l)}if(this._originalDoCallback)this._cancelPendingCallbacks();this._request=b;b.invoke();if(g)g.preventDefault()},_onFormSubmitCompleted:function(e){this._processingRequest=true;var j="|";if(e.get_timedOut()){this._endPostBack(this._createPageRequestManagerTimeoutError(),e);return}if(e.get_aborted()){this._endPostBack(null,e);return}if(!this._request||e.get_webRequest()!==this._request)return;var Q,u=[];if(e.get_statusCode()!==200){this._endPostBack(this._createPageRequestManagerServerError(e.get_statusCode()),e);return}var c=e.get_responseData(),f,i,K,L,I,b=0,g=null;while(b<c.length){f=c.indexOf(j,b);if(f===-1){g=this._findText(c,b);break}i=parseInt(c.substring(b,f),10);if(i%1!==0){g=this._findText(c,b);break}b=f+1;f=c.indexOf(j,b);if(f===-1){g=this._findText(c,b);break}K=c.substring(b,f);b=f+1;f=c.indexOf(j,b);if(f===-1){g=this._findText(c,b);break}L=c.substring(b,f);b=f+1;if(b+i>=c.length){g=this._findText(c,c.length);break}I=c.substr(b,i);b+=i;if(c.charAt(b)!==j){g=this._findText(c,b);break}b++;Array.add(u,{type:K,id:L,content:I})}if(g){this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,g)),e);return}var B=[],A=[],w=[],r=[],y=[],G=[],C=[],t=[],q=[],x=[],k,n,p,l,m,o,s;for(var d=0;d<u.length;d++){var a=u[d];switch(a.type){case "updatePanel":Array.add(B,a);break;case "hiddenField":Array.add(A,a);break;case "arrayDeclaration":Array.add(w,a);break;case "scriptBlock":Array.add(r,a);break;case "scriptStartupBlock":Array.add(y,a);break;case "expando":Array.add(G,a);break;case "onSubmit":Array.add(C,a);break;case "asyncPostBackControlIDs":k=a;break;case "postBackControlIDs":n=a;break;case "updatePanelIDs":p=a;break;case "asyncPostBackTimeout":l=a;break;case "childUpdatePanelIDs":m=a;break;case "panelsToRefreshIDs":o=a;break;case "formAction":s=a;break;case "dataItem":Array.add(t,a);break;case "dataItemJson":Array.add(q,a);break;case "scriptDispose":Array.add(x,a);break;case "pageRedirect":if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var h=document.createElement("a");h.style.display="none";h.attachEvent("onclick",E);h.href=a.content;document.body.appendChild(h);h.click();h.detachEvent("onclick",E);document.body.removeChild(h);function E(a){a.cancelBubble=true}}else window.location.href=a.content;return;case "error":this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(a.id),a.content),e);return;case "pageTitle":document.title=a.content;break;case "focus":this._controlIDToFocus=a.content;break;default:this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken,a.type)),e);return}}var d;if(k&&n&&p&&o&&l&&m){this._oldUpdatePanelIDs=this._updatePanelIDs;var v=m.content;this._childUpdatePanelIDs=v.length?v.split(","):[];var M=this._splitNodeIntoArray(k),N=this._splitNodeIntoArray(n),P=this._splitNodeIntoArray(p);this._panelsToRefreshIDs=this._splitNodeIntoArray(o);for(d=0;d<this._panelsToRefreshIDs.length;d++){var D=this._uniqueIDToClientID(this._panelsToRefreshIDs[d]);if(!document.getElementById(D)){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,D)),e);return}}var O=l.content;this._updateControls(P,M,N,O)}this._dataItems={};for(d=0;d<t.length;d++){var F=t[d];this._dataItems[F.id]=F.content}for(d=0;d<q.length;d++){var z=q[d];this._dataItems[z.id]=Sys.Serialization.JavaScriptSerializer.deserialize(z.content)}var J=this._get_eventHandlerList().getHandler("pageLoading");if(J)J(this,this._getPageLoadingEventArgs());if(s)this._form.action=s.content;Sys._ScriptLoader.readLoadedScripts();Sys.Application.beginCreateComponents();var H=Sys._ScriptLoader.getInstance();this._queueScripts(H,r,true,false);this._updateContext={response:e,updatePanelNodes:B,scriptBlockNodes:r,scriptDisposeNodes:x,hiddenFieldNodes:A,arrayDeclarationNodes:w,expandoNodes:G,scriptStartupNodes:y,onSubmitNodes:C};H.loadScripts(0,Function.createDelegate(this,this._scriptIncludesLoadComplete),Function.createDelegate(this,this._scriptIncludesLoadFailed),null)},_onWindowUnload:function(){this.dispose()},_pageLoaded:function(a){var b=this._get_eventHandlerList().getHandler("pageLoaded");if(b)b(this,this._getPageLoadedEventArgs(a));if(!a)Sys.Application.raiseLoad()},_pageLoadedInitialLoad:function(){this._pageLoaded(true)},_queueScripts:function(scriptLoader,scriptBlockNodes,queueIncludes,queueBlocks){for(i=0;i<scriptBlockNodes.length;i++){var scriptBlockType=scriptBlockNodes[i].id;switch(scriptBlockType){case "ScriptContentNoTags":if(!queueBlocks)continue;scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);break;case "ScriptContentWithTags":var scriptTagAttributes;eval("scriptTagAttributes = "+scriptBlockNodes[i].content);if(scriptTagAttributes.src){if(!queueIncludes||Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src))continue}else if(!queueBlocks)continue;scriptLoader.queueCustomScriptTag(scriptTagAttributes);break;case "ScriptPath":if(!queueIncludes||Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content))continue;scriptLoader.queueScriptReference(scriptBlockNodes[i].content)}}},_registerDisposeScript:function(a,b){if(!this._scriptDisposes[a])this._scriptDisposes[a]=[b];else Array.add(this._scriptDisposes[a],b)},_scriptIncludesLoadComplete:function(){var b=this._updateContext;for(a=0;a<b.updatePanelNodes.length;a++){var l=b.updatePanelNodes[a],m=l.id,n=l.content,j=document.getElementById(m);if(!j){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,m)),b.response);return}this._updatePanel(j,n)}for(a=0;a<b.scriptDisposeNodes.length;a++){var p=b.scriptDisposeNodes[a].id,q=b.scriptDisposeNodes[a].content;this._registerDisposeScript(p,q)}var k=false;for(a=0;a<b.hiddenFieldNodes.length;a++){var f=b.hiddenFieldNodes[a].id,s=b.hiddenFieldNodes[a].content;if(f==="__VIEWSTATEENCRYPTED")k=true;var c=document.getElementById(f);if(!c){c=document.createElement("input");c.id=f;c.name=f;c.type="hidden";this._form.appendChild(c)}c.value=s}if(!k){var g=document.getElementById("__VIEWSTATEENCRYPTED");if(g)g.parentNode.removeChild(g)}if(b.scriptsFailed)throw Sys._ScriptLoader._errorScriptLoadFailed(b.scriptsFailed.src,b.scriptsFailed.multipleCallbacks);var d=Sys._ScriptLoader.getInstance();this._queueScripts(d,b.scriptBlockNodes,false,true);var i="";for(a=0;a<b.arrayDeclarationNodes.length;a++)i+="Sys.WebForms.PageRequestManager._addArrayElement('"+b.arrayDeclarationNodes[a].id+"', "+b.arrayDeclarationNodes[a].content+");\r\n";var h="";for(a=0;a<b.expandoNodes.length;a++){var o=b.expandoNodes[a].id,r=b.expandoNodes[a].content;h+=o+" = "+r+"\r\n"}if(i.length)d.queueScriptBlock(i);if(h.length)d.queueScriptBlock(h);this._queueScripts(d,b.scriptStartupNodes,true,true);var e="";for(var a=0;a<b.onSubmitNodes.length;a++){if(a===0)e="Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n";e+=b.onSubmitNodes[a].content+"\r\n"}if(e.length){e+="\r\nreturn true;\r\n});\r\n";d.queueScriptBlock(e)}d.loadScripts(0,Function.createDelegate(this,this._scriptsLoadComplete),null,null)},_scriptIncludesLoadFailed:function(c,b,a){this._updateContext.scriptsFailed={src:b.src,multipleCallbacks:a};this._scriptIncludesLoadComplete()},_scriptsLoadComplete:function(){var d=this._updateContext.response;this._updateContext=null;if(window.__theFormPostData)window.__theFormPostData="";if(window.__theFormPostCollection)window.__theFormPostCollection=[];if(window.WebForm_InitCallback)window.WebForm_InitCallback();if(this._scrollPosition){if(window.scrollTo)window.scrollTo(this._scrollPosition.x,this._scrollPosition.y);this._scrollPosition=null}Sys.Application.endCreateComponents();this._pageLoaded(false);this._endPostBack(null,d);if(this._controlIDToFocus){var a,c;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var b=$get(this._controlIDToFocus);a=b;if(b&&!WebForm_CanFocus(b))a=WebForm_FindFirstFocusableChild(b);if(a&&typeof a.contentEditable!=="undefined"){c=a.contentEditable;a.contentEditable=false}else a=null}WebForm_AutoFocus(this._controlIDToFocus);if(a)a.contentEditable=c;this._controlIDToFocus=null}},_splitNodeIntoArray:function(b){var a=b.content,c=a.length?a.split(","):[];return c},_uniqueIDToClientID:function(a){return a.replace(/\$/g,"_")},_updateControls:function(a,d,g,e){if(a){this._updatePanelIDs=new Array(a.length);this._updatePanelClientIDs=new Array(a.length);this._updatePanelHasChildrenAsTriggers=new Array(a.length);for(var b=0;b<a.length;b++){var c=a[b].substr(1),f=a[b].charAt(0)==="t";this._updatePanelHasChildrenAsTriggers[b]=f;this._updatePanelIDs[b]=c;this._updatePanelClientIDs[b]=this._uniqueIDToClientID(c)}this._asyncPostBackTimeout=e*1000}else{this._updatePanelIDs=[];this._updatePanelClientIDs=[];this._updatePanelHasChildrenAsTriggers=[];this._asyncPostBackTimeout=0}this._asyncPostBackControlIDs=[];this._asyncPostBackControlClientIDs=[];this._convertToClientIDs(d,this._asyncPostBackControlIDs,this._asyncPostBackControlClientIDs);this._postBackControlIDs=[];this._postBackControlClientIDs=[];this._convertToClientIDs(g,this._postBackControlIDs,this._postBackControlClientIDs)},_updatePanel:function(updatePanelElement,rendering){for(var updatePanelID in this._scriptDisposes)if(this._elementContains(updatePanelElement,document.getElementById(updatePanelID))){var disposeScripts=this._scriptDisposes[updatePanelID];for(var i=0;i<disposeScripts.length;i++)eval(disposeScripts[i]);delete this._scriptDisposes[updatePanelID]}this._destroyTree(updatePanelElement);updatePanelElement.innerHTML=rendering},_validPosition:function(a){return typeof a!=="undefined"&&a!==null&&a!==0}};Sys.WebForms.PageRequestManager.getInstance=function(){var a=Sys.WebForms.PageRequestManager._instance;if(!a)a=Sys.WebForms.PageRequestManager._instance=new Sys.WebForms.PageRequestManager;return a};Sys.WebForms.PageRequestManager._addArrayElement=function(a){if(!window[a])window[a]=[];for(var b=1,c=arguments.length;b<c;b++)Array.add(window[a],arguments[b])};Sys.WebForms.PageRequestManager._initialize=function(a,b){Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(a,b)};Sys.WebForms.PageRequestManager.registerClass("Sys.WebForms.PageRequestManager");Sys.UI._UpdateProgress=function(a){Sys.UI._UpdateProgress.initializeBase(this,[a]);this._displayAfter=500;this._dynamicLayout=true;this._associatedUpdatePanelId=null;this._beginRequestHandlerDelegate=null;this._startDelegate=null;this._endRequestHandlerDelegate=null;this._pageRequestManager=null;this._timerCookie=null};Sys.UI._UpdateProgress.prototype={get_displayAfter:function(){return this._displayAfter},set_displayAfter:function(a){this._displayAfter=a},get_dynamicLayout:function(){return this._dynamicLayout},set_dynamicLayout:function(a){this._dynamicLayout=a},get_associatedUpdatePanelId:function(){return this._associatedUpdatePanelId},set_associatedUpdatePanelId:function(a){this._associatedUpdatePanelId=a},_handleBeginRequest:function(d,c){var a=c.get_postBackElement(),b=!this._associatedUpdatePanelId;while(!b&&a){if(a.id&&this._associatedUpdatePanelId===a.id)b=true;a=a.parentNode}if(b)this._timerCookie=window.setTimeout(this._startDelegate,this._displayAfter)},_startRequest:function(){if(this._pageRequestManager.get_isInAsyncPostBack())if(this._dynamicLayout)this.get_element().style.display="block";else this.get_element().style.visibility="visible";this._timerCookie=null},_handleEndRequest:function(){if(this._dynamicLayout)this.get_element().style.display="none";else this.get_element().style.visibility="hidden";if(this._timerCookie){window.clearTimeout(this._timerCookie);this._timerCookie=null}},dispose:function(){if(this._pageRequestManager!==null){this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate)}Sys.UI._UpdateProgress.callBaseMethod(this,"dispose")},initialize:function(){Sys.UI._UpdateProgress.callBaseMethod(this,"initialize");this._beginRequestHandlerDelegate=Function.createDelegate(this,this._handleBeginRequest);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);this._startDelegate=Function.createDelegate(this,this._startRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null){this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate)}}};Sys.UI._UpdateProgress.registerClass("Sys.UI._UpdateProgress",Sys.UI.Control);
-Type.registerNamespace('Sys.WebForms');Sys.WebForms.Res={'PRM_UnknownToken':'Unknown token: \'{0}\'.','PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.','PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}','PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}','PRM_TimeoutError':'The server request timed out.','PRM_ParserErrorDetails':'Error parsing near \'{0}\'.','PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'};
-if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
+﻿//----------------------------------------------------------
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//----------------------------------------------------------
+// MicrosoftAjaxWebForms.js
+Type.registerNamespace("Sys.WebForms");Sys.WebForms.BeginRequestEventArgs=function(b,a){Sys.WebForms.BeginRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.BeginRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.BeginRequestEventArgs.registerClass("Sys.WebForms.BeginRequestEventArgs",Sys.EventArgs);Sys.WebForms.EndRequestEventArgs=function(c,a,b){Sys.WebForms.EndRequestEventArgs.initializeBase(this);this._errorHandled=false;this._error=c;this._dataItems=a||{};this._response=b};Sys.WebForms.EndRequestEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_error:function(){return this._error},get_errorHandled:function(){return this._errorHandled},set_errorHandled:function(a){this._errorHandled=a},get_response:function(){return this._response}};Sys.WebForms.EndRequestEventArgs.registerClass("Sys.WebForms.EndRequestEventArgs",Sys.EventArgs);Sys.WebForms.InitializeRequestEventArgs=function(b,a){Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.InitializeRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.InitializeRequestEventArgs.registerClass("Sys.WebForms.InitializeRequestEventArgs",Sys.CancelEventArgs);Sys.WebForms.PageLoadedEventArgs=function(b,a,c){Sys.WebForms.PageLoadedEventArgs.initializeBase(this);this._panelsUpdated=b;this._panelsCreated=a;this._dataItems=c||{}};Sys.WebForms.PageLoadedEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsCreated:function(){return this._panelsCreated},get_panelsUpdated:function(){return this._panelsUpdated}};Sys.WebForms.PageLoadedEventArgs.registerClass("Sys.WebForms.PageLoadedEventArgs",Sys.EventArgs);Sys.WebForms.PageLoadingEventArgs=function(b,a,c){Sys.WebForms.PageLoadingEventArgs.initializeBase(this);this._panelsUpdating=b;this._panelsDeleting=a;this._dataItems=c||{}};Sys.WebForms.PageLoadingEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsDeleting:function(){return this._panelsDeleting},get_panelsUpdating:function(){return this._panelsUpdating}};Sys.WebForms.PageLoadingEventArgs.registerClass("Sys.WebForms.PageLoadingEventArgs",Sys.EventArgs);Sys.WebForms.PageRequestManager=function(){this._form=null;this._activeDefaultButton=null;this._activeDefaultButtonClicked=false;this._updatePanelIDs=null;this._updatePanelClientIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._panelsToRefreshIDs=null;this._updatePanelHasChildrenAsTriggers=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._scriptManagerID=null;this._pageLoadedHandler=null;this._additionalInput=null;this._onsubmit=null;this._onSubmitStatements=[];this._originalDoPostBack=null;this._originalDoPostBackWithOptions=null;this._originalFireDefaultButton=null;this._originalDoCallback=null;this._isCrossPost=false;this._postBackSettings=null;this._request=null;this._onFormSubmitHandler=null;this._onFormElementClickHandler=null;this._onWindowUnloadHandler=null;this._asyncPostBackTimeout=null;this._controlIDToFocus=null;this._scrollPosition=null;this._dataItems=null;this._updateContext=null;this._processingRequest=false;this._scriptDisposes={}};Sys.WebForms.PageRequestManager.prototype={_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_isInAsyncPostBack:function(){return this._request!==null},add_beginRequest:function(a){this._get_eventHandlerList().addHandler("beginRequest",a)},remove_beginRequest:function(a){this._get_eventHandlerList().removeHandler("beginRequest",a)},add_endRequest:function(a){this._get_eventHandlerList().addHandler("endRequest",a)},remove_endRequest:function(a){this._get_eventHandlerList().removeHandler("endRequest",a)},add_initializeRequest:function(a){this._get_eventHandlerList().addHandler("initializeRequest",a)},remove_initializeRequest:function(a){this._get_eventHandlerList().removeHandler("initializeRequest",a)},add_pageLoaded:function(a){this._get_eventHandlerList().addHandler("pageLoaded",a)},remove_pageLoaded:function(a){this._get_eventHandlerList().removeHandler("pageLoaded",a)},add_pageLoading:function(a){this._get_eventHandlerList().addHandler("pageLoading",a)},remove_pageLoading:function(a){this._get_eventHandlerList().removeHandler("pageLoading",a)},abortPostBack:function(){if(!this._processingRequest&&this._request){this._request.get_executor().abort();this._request=null}},_cancelPendingCallbacks:function(){for(var a=0,e=window.__pendingCallbacks.length;a<e;a++){var c=window.__pendingCallbacks[a];if(c){if(!c.async)window.__synchronousCallBackIndex=-1;window.__pendingCallbacks[a]=null;var d="__CALLBACKFRAME"+a,b=document.getElementById(d);if(b)b.parentNode.removeChild(b)}}},_createPageRequestManagerTimeoutError:function(){var b="Sys.WebForms.PageRequestManagerTimeoutException: "+Sys.WebForms.Res.PRM_TimeoutError,a=Error.create(b,{name:"Sys.WebForms.PageRequestManagerTimeoutException"});a.popStackFrame();return a},_createPageRequestManagerServerError:function(a,d){var c="Sys.WebForms.PageRequestManagerServerErrorException: "+(d||String.format(Sys.WebForms.Res.PRM_ServerError,a)),b=Error.create(c,{name:"Sys.WebForms.PageRequestManagerServerErrorException",httpStatusCode:a});b.popStackFrame();return b},_createPageRequestManagerParserError:function(b){var c="Sys.WebForms.PageRequestManagerParserErrorException: "+String.format(Sys.WebForms.Res.PRM_ParserError,b),a=Error.create(c,{name:"Sys.WebForms.PageRequestManagerParserErrorException"});a.popStackFrame();return a},_createPostBackSettings:function(c,b,a){return {async:c,panelID:b,sourceElement:a}},_convertToClientIDs:function(a,d,c){if(a)for(var b=0;b<a.length;b++){Array.add(d,a[b]);Array.add(c,this._uniqueIDToClientID(a[b]))}},_destroyTree:function(f){if(f.nodeType===1){var d=f.childNodes;for(var b=d.length-1;b>=0;b--){var a=d[b];if(a.nodeType===1){if(a.dispose&&typeof a.dispose==="function")a.dispose();else if(a.control&&typeof a.control.dispose==="function")a.control.dispose();var e=Sys.UI.Behavior.getBehaviors(a);for(var c=e.length-1;c>=0;c--)e[c].dispose();this._destroyTree(a)}}}},dispose:function(){if(this._form){Sys.UI.DomEvent.removeHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.removeHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.removeHandler(window,"unload",this._onWindowUnloadHandler);Sys.UI.DomEvent.removeHandler(window,"load",this._pageLoadedHandler)}if(this._originalDoPostBack){window.__doPostBack=this._originalDoPostBack;this._originalDoPostBack=null}if(this._originalDoPostBackWithOptions){window.WebForm_DoPostBackWithOptions=this._originalDoPostBackWithOptions;this._originalDoPostBackWithOptions=null}if(this._originalFireDefaultButton){window.WebForm_FireDefaultButton=this._originalFireDefaultButton;this._originalFireDefaultButton=null}if(this._originalDoCallback){window.WebForm_DoCallback=this._originalDoCallback;this._originalDoCallback=null}this._form=null;this._updatePanelIDs=null;this._oldUpdatePanelIDs=null;this._childUpdatePanelIDs=null;this._updatePanelClientIDs=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._asyncPostBackTimeout=null;this._scrollPosition=null;this._dataItems=null},_doCallback:function(d,b,c,f,a,e){if(!this.get_isInAsyncPostBack())this._originalDoCallback(d,b,c,f,a,e)},_doPostBack:function(a,e){this._additionalInput=null;var b=this._form;if(a===null||typeof a==="undefined"||this._isCrossPost){this._postBackSettings=this._createPostBackSettings(false,null,null);this._isCrossPost=false}else{var f=this._uniqueIDToClientID(a),d=document.getElementById(f);if(!d)if(Array.contains(this._asyncPostBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(true,this._scriptManagerID+"|"+a,null);else if(Array.contains(this._postBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(false,null,null);else{var c=this._findNearestElement(a);if(c)this._postBackSettings=this._getPostBackSettings(c,a);else this._postBackSettings=this._createPostBackSettings(false,null,null)}else this._postBackSettings=this._getPostBackSettings(d,a)}if(!this._postBackSettings.async){b.onsubmit=this._onsubmit;this._originalDoPostBack(a,e);b.onsubmit=null;return}b.__EVENTTARGET.value=a;b.__EVENTARGUMENT.value=e;this._onFormSubmit()},_doPostBackWithOptions:function(a){this._isCrossPost=a&&a.actionUrl;this._originalDoPostBackWithOptions(a)},_elementContains:function(b,a){while(a){if(a===b)return true;a=a.parentNode}return false},_endPostBack:function(a,d){if(this._request===d.get_webRequest()){this._processingRequest=false;this._additionalInput=null;this._request=null}var e=this._get_eventHandlerList().getHandler("endRequest"),b=false;if(e){var c=new Sys.WebForms.EndRequestEventArgs(a,this._dataItems,d);e(this,c);b=c.get_errorHandled()}if(!this._processingRequest)this._dataItems=null;if(a&&!b)throw a},_findNearestElement:function(a){while(a.length>0){var d=this._uniqueIDToClientID(a),c=document.getElementById(d);if(c)return c;var b=a.lastIndexOf("$");if(b===-1)return null;a=a.substring(0,b)}return null},_findText:function(b,a){var c=Math.max(0,a-20),d=Math.min(b.length,a+20);return b.substring(c,d)},_fireDefaultButton:function(a,c){if(a.keyCode===13&&!(a.srcElement&&a.srcElement.tagName.toLowerCase()==="textarea")){var b=document.getElementById(c);if(b&&typeof b.click!=="undefined"){this._activeDefaultButton=b;this._activeDefaultButtonClicked=false;try{b.click()}finally{this._activeDefaultButton=null}a.cancelBubble=true;if(typeof a.stopPropagation==="function")a.stopPropagation();return false}}return true},_getPageLoadedEventArgs:function(f){var e=[],d=[],h=this._oldUpdatePanelIDs||[],b=this._updatePanelIDs,g=this._childUpdatePanelIDs||[],c=this._panelsToRefreshIDs||[];for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(f||Array.indexOf(g,b[a])!==-1)Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadedEventArgs(e,d,this._dataItems)},_getPageLoadingEventArgs:function(){var e=[],d=[],b=this._oldUpdatePanelIDs,g=this._updatePanelIDs,f=this._childUpdatePanelIDs,c=this._panelsToRefreshIDs;for(var a=0;a<c.length;a++)Array.add(e,document.getElementById(this._uniqueIDToClientID(c[a])));for(var a=0;a<b.length;a++)if(Array.indexOf(c,b[a])===-1&&(Array.indexOf(g,b[a])===-1||Array.indexOf(f,b[a])>-1))Array.add(d,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadingEventArgs(e,d,this._dataItems)},_getPostBackSettings:function(a,c){var d=a,b=null;while(a){if(a.id){if(!b&&Array.contains(this._asyncPostBackControlClientIDs,a.id))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&Array.contains(this._postBackControlClientIDs,a.id))return this._createPostBackSettings(false,null,null);else{var e=Array.indexOf(this._updatePanelClientIDs,a.id);if(e!==-1)if(this._updatePanelHasChildrenAsTriggers[e])return this._createPostBackSettings(true,this._updatePanelIDs[e]+"|"+c,d);else return this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d)}if(!b&&this._matchesParentIDInList(a.id,this._asyncPostBackControlClientIDs))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&this._matchesParentIDInList(a.id,this._postBackControlClientIDs))return this._createPostBackSettings(false,null,null)}a=a.parentNode}if(!b)return this._createPostBackSettings(false,null,null);else return b},_getScrollPosition:function(){var a=document.documentElement;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else{a=document.body;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else if(this._validPosition(window.pageXOffset)||this._validPosition(window.pageYOffset))return {x:window.pageXOffset,y:window.pageYOffset};else return {x:0,y:0}}},_initializeInternal:function(a,b){if(this._prmInitialized)throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);this._prmInitialized=true;this._scriptManagerID=a;this._form=b;this._onsubmit=this._form.onsubmit;this._form.onsubmit=null;this._onFormSubmitHandler=Function.createDelegate(this,this._onFormSubmit);this._onFormElementClickHandler=Function.createDelegate(this,this._onFormElementClick);this._onWindowUnloadHandler=Function.createDelegate(this,this._onWindowUnload);Sys.UI.DomEvent.addHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.addHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUnloadHandler);this._originalDoPostBack=window.__doPostBack;if(this._originalDoPostBack)window.__doPostBack=Function.createDelegate(this,this._doPostBack);this._originalDoPostBackWithOptions=window.WebForm_DoPostBackWithOptions;if(this._originalDoPostBackWithOptions)window.WebForm_DoPostBackWithOptions=Function.createDelegate(this,this._doPostBackWithOptions);this._originalFireDefaultButton=window.WebForm_FireDefaultButton;if(this._originalFireDefaultButton)window.WebForm_FireDefaultButton=Function.createDelegate(this,this._fireDefaultButton);this._originalDoCallback=window.WebForm_DoCallback;if(this._originalDoCallback)window.WebForm_DoCallback=Function.createDelegate(this,this._doCallback);this._pageLoadedHandler=Function.createDelegate(this,this._pageLoadedInitialLoad);Sys.UI.DomEvent.addHandler(window,"load",this._pageLoadedHandler)},_matchesParentIDInList:function(c,b){for(var a=0;a<b.length;a++)if(c.startsWith(b[a]+"_"))return true;return false},_onFormElementActive:function(a,c,d){if(a.disabled)return;this._postBackSettings=this._getPostBackSettings(a,a.name);if(a.name)if(a.tagName==="INPUT"){var b=a.type;if(b==="submit")this._additionalInput=encodeURIComponent(a.name)+"="+encodeURIComponent(a.value);else if(b==="image")this._additionalInput=encodeURIComponent(a.name)+".x="+c+"&"+encodeURIComponent(a.name)+".y="+d}else if(a.tagName==="BUTTON"&&a.name.length!==0&&a.type==="submit")this._additionalInput=encodeURIComponent(a.name)+"="+encodeURIComponent(a.value)},_onFormElementClick:function(a){this._activeDefaultButtonClicked=a.target===this._activeDefaultButton;this._onFormElementActive(a.target,a.offsetX,a.offsetY)},_onFormSubmit:function(g){var e=true,r=this._isCrossPost;this._isCrossPost=false;if(this._onsubmit)e=this._onsubmit();if(e)for(var h=0;h<this._onSubmitStatements.length;h++)if(!this._onSubmitStatements[h]()){e=false;break}if(!e){if(g)g.preventDefault();return}var n=this._form;if(r)return;if(this._activeDefaultButton&&!this._activeDefaultButtonClicked)this._onFormElementActive(this._activeDefaultButton,0,0);if(!this._postBackSettings.async)return;var a=new Sys.StringBuilder;a.append(encodeURIComponent(this._scriptManagerID)+"="+encodeURIComponent(this._postBackSettings.panelID)+"&");var t=n.elements.length;for(var h=0;h<t;h++){var c=n.elements[h],f=c.name;if(typeof f==="undefined"||f===null||f.length===0)continue;var m=c.tagName;if(m==="INPUT"){var j=c.type;if(j==="text"||j==="password"||j==="hidden"||(j==="checkbox"||j==="radio")&&c.checked){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}else if(m==="SELECT"){var s=c.options.length;for(var o=0;o<s;o++){var p=c.options[o];if(p.selected){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(p.value));a.append("&")}}}else if(m==="TEXTAREA"){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(c.value));a.append("&")}}if(this._additionalInput){a.append(this._additionalInput);this._additionalInput=null}var b=new Sys.Net.WebRequest,d=n.action;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var k=d.indexOf("?");if(k!==-1){var q=d.substr(0,k);if(q.indexOf("%")===-1)d=encodeURI(q)+d.substr(k)}else if(d.indexOf("%")===-1)d=encodeURI(d)}b.set_url(d);b.get_headers()["X-MicrosoftAjax"]="Delta=true";b.get_headers()["Cache-Control"]="no-cache";b.set_timeout(this._asyncPostBackTimeout);b.add_completed(Function.createDelegate(this,this._onFormSubmitCompleted));b.set_body(a.toString());var i=this._get_eventHandlerList().getHandler("initializeRequest");if(i){var l=new Sys.WebForms.InitializeRequestEventArgs(b,this._postBackSettings.sourceElement);i(this,l);e=!l.get_cancel()}if(!e){if(g)g.preventDefault();return}this._scrollPosition=this._getScrollPosition();this.abortPostBack();i=this._get_eventHandlerList().getHandler("beginRequest");if(i){var l=new Sys.WebForms.BeginRequestEventArgs(b,this._postBackSettings.sourceElement);i(this,l)}if(this._originalDoCallback)this._cancelPendingCallbacks();this._request=b;b.invoke();if(g)g.preventDefault()},_onFormSubmitCompleted:function(e){this._processingRequest=true;var j="|";if(e.get_timedOut()){this._endPostBack(this._createPageRequestManagerTimeoutError(),e);return}if(e.get_aborted()){this._endPostBack(null,e);return}if(!this._request||e.get_webRequest()!==this._request)return;var Q,u=[];if(e.get_statusCode()!==200){this._endPostBack(this._createPageRequestManagerServerError(e.get_statusCode()),e);return}var c=e.get_responseData(),f,i,K,L,I,b=0,g=null;while(b<c.length){f=c.indexOf(j,b);if(f===-1){g=this._findText(c,b);break}i=parseInt(c.substring(b,f),10);if(i%1!==0){g=this._findText(c,b);break}b=f+1;f=c.indexOf(j,b);if(f===-1){g=this._findText(c,b);break}K=c.substring(b,f);b=f+1;f=c.indexOf(j,b);if(f===-1){g=this._findText(c,b);break}L=c.substring(b,f);b=f+1;if(b+i>=c.length){g=this._findText(c,c.length);break}I=c.substr(b,i);b+=i;if(c.charAt(b)!==j){g=this._findText(c,b);break}b++;Array.add(u,{type:K,id:L,content:I})}if(g){this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,g)),e);return}var B=[],A=[],w=[],r=[],y=[],G=[],C=[],t=[],q=[],x=[],k,n,p,l,m,o,s;for(var d=0;d<u.length;d++){var a=u[d];switch(a.type){case "updatePanel":Array.add(B,a);break;case "hiddenField":Array.add(A,a);break;case "arrayDeclaration":Array.add(w,a);break;case "scriptBlock":Array.add(r,a);break;case "scriptStartupBlock":Array.add(y,a);break;case "expando":Array.add(G,a);break;case "onSubmit":Array.add(C,a);break;case "asyncPostBackControlIDs":k=a;break;case "postBackControlIDs":n=a;break;case "updatePanelIDs":p=a;break;case "asyncPostBackTimeout":l=a;break;case "childUpdatePanelIDs":m=a;break;case "panelsToRefreshIDs":o=a;break;case "formAction":s=a;break;case "dataItem":Array.add(t,a);break;case "dataItemJson":Array.add(q,a);break;case "scriptDispose":Array.add(x,a);break;case "pageRedirect":if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var h=document.createElement("a");h.style.display="none";h.attachEvent("onclick",E);h.href=a.content;document.body.appendChild(h);h.click();h.detachEvent("onclick",E);document.body.removeChild(h);function E(a){a.cancelBubble=true}}else window.location.href=a.content;return;case "error":this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(a.id),a.content),e);return;case "pageTitle":document.title=a.content;break;case "focus":this._controlIDToFocus=a.content;break;default:this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken,a.type)),e);return}}var d;if(k&&n&&p&&o&&l&&m){this._oldUpdatePanelIDs=this._updatePanelIDs;var v=m.content;this._childUpdatePanelIDs=v.length?v.split(","):[];var M=this._splitNodeIntoArray(k),N=this._splitNodeIntoArray(n),P=this._splitNodeIntoArray(p);this._panelsToRefreshIDs=this._splitNodeIntoArray(o);for(d=0;d<this._panelsToRefreshIDs.length;d++){var D=this._uniqueIDToClientID(this._panelsToRefreshIDs[d]);if(!document.getElementById(D)){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,D)),e);return}}var O=l.content;this._updateControls(P,M,N,O)}this._dataItems={};for(d=0;d<t.length;d++){var F=t[d];this._dataItems[F.id]=F.content}for(d=0;d<q.length;d++){var z=q[d];this._dataItems[z.id]=Sys.Serialization.JavaScriptSerializer.deserialize(z.content)}var J=this._get_eventHandlerList().getHandler("pageLoading");if(J)J(this,this._getPageLoadingEventArgs());if(s)this._form.action=s.content;Sys._ScriptLoader.readLoadedScripts();Sys.Application.beginCreateComponents();var H=Sys._ScriptLoader.getInstance();this._queueScripts(H,r,true,false);this._updateContext={response:e,updatePanelNodes:B,scriptBlockNodes:r,scriptDisposeNodes:x,hiddenFieldNodes:A,arrayDeclarationNodes:w,expandoNodes:G,scriptStartupNodes:y,onSubmitNodes:C};H.loadScripts(0,Function.createDelegate(this,this._scriptIncludesLoadComplete),Function.createDelegate(this,this._scriptIncludesLoadFailed),null)},_onWindowUnload:function(){this.dispose()},_pageLoaded:function(a){var b=this._get_eventHandlerList().getHandler("pageLoaded");if(b)b(this,this._getPageLoadedEventArgs(a));if(!a)Sys.Application.raiseLoad()},_pageLoadedInitialLoad:function(){this._pageLoaded(true)},_queueScripts:function(scriptLoader,scriptBlockNodes,queueIncludes,queueBlocks){for(i=0;i<scriptBlockNodes.length;i++){var scriptBlockType=scriptBlockNodes[i].id;switch(scriptBlockType){case "ScriptContentNoTags":if(!queueBlocks)continue;scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);break;case "ScriptContentWithTags":var scriptTagAttributes;eval("scriptTagAttributes = "+scriptBlockNodes[i].content);if(scriptTagAttributes.src){if(!queueIncludes||Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src))continue}else if(!queueBlocks)continue;scriptLoader.queueCustomScriptTag(scriptTagAttributes);break;case "ScriptPath":if(!queueIncludes||Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content))continue;scriptLoader.queueScriptReference(scriptBlockNodes[i].content)}}},_registerDisposeScript:function(a,b){if(!this._scriptDisposes[a])this._scriptDisposes[a]=[b];else Array.add(this._scriptDisposes[a],b)},_scriptIncludesLoadComplete:function(){var b=this._updateContext;for(a=0;a<b.updatePanelNodes.length;a++){var l=b.updatePanelNodes[a],m=l.id,n=l.content,j=document.getElementById(m);if(!j){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,m)),b.response);return}this._updatePanel(j,n)}for(a=0;a<b.scriptDisposeNodes.length;a++){var p=b.scriptDisposeNodes[a].id,q=b.scriptDisposeNodes[a].content;this._registerDisposeScript(p,q)}var k=false;for(a=0;a<b.hiddenFieldNodes.length;a++){var f=b.hiddenFieldNodes[a].id,s=b.hiddenFieldNodes[a].content;if(f==="__VIEWSTATEENCRYPTED")k=true;var c=document.getElementById(f);if(!c){c=document.createElement("input");c.id=f;c.name=f;c.type="hidden";this._form.appendChild(c)}c.value=s}if(!k){var g=document.getElementById("__VIEWSTATEENCRYPTED");if(g)g.parentNode.removeChild(g)}if(b.scriptsFailed)throw Sys._ScriptLoader._errorScriptLoadFailed(b.scriptsFailed.src,b.scriptsFailed.multipleCallbacks);var d=Sys._ScriptLoader.getInstance();this._queueScripts(d,b.scriptBlockNodes,false,true);var i="";for(a=0;a<b.arrayDeclarationNodes.length;a++)i+="Sys.WebForms.PageRequestManager._addArrayElement('"+b.arrayDeclarationNodes[a].id+"', "+b.arrayDeclarationNodes[a].content+");\r\n";var h="";for(a=0;a<b.expandoNodes.length;a++){var o=b.expandoNodes[a].id,r=b.expandoNodes[a].content;h+=o+" = "+r+"\r\n"}if(i.length)d.queueScriptBlock(i);if(h.length)d.queueScriptBlock(h);this._queueScripts(d,b.scriptStartupNodes,true,true);var e="";for(var a=0;a<b.onSubmitNodes.length;a++){if(a===0)e="Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n";e+=b.onSubmitNodes[a].content+"\r\n"}if(e.length){e+="\r\nreturn true;\r\n});\r\n";d.queueScriptBlock(e)}d.loadScripts(0,Function.createDelegate(this,this._scriptsLoadComplete),null,null)},_scriptIncludesLoadFailed:function(c,b,a){this._updateContext.scriptsFailed={src:b.src,multipleCallbacks:a};this._scriptIncludesLoadComplete()},_scriptsLoadComplete:function(){var d=this._updateContext.response;this._updateContext=null;if(window.__theFormPostData)window.__theFormPostData="";if(window.__theFormPostCollection)window.__theFormPostCollection=[];if(window.WebForm_InitCallback)window.WebForm_InitCallback();if(this._scrollPosition){if(window.scrollTo)window.scrollTo(this._scrollPosition.x,this._scrollPosition.y);this._scrollPosition=null}Sys.Application.endCreateComponents();this._pageLoaded(false);this._endPostBack(null,d);if(this._controlIDToFocus){var a,c;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var b=$get(this._controlIDToFocus);a=b;if(b&&!WebForm_CanFocus(b))a=WebForm_FindFirstFocusableChild(b);if(a&&typeof a.contentEditable!=="undefined"){c=a.contentEditable;a.contentEditable=false}else a=null}WebForm_AutoFocus(this._controlIDToFocus);if(a)a.contentEditable=c;this._controlIDToFocus=null}},_splitNodeIntoArray:function(b){var a=b.content,c=a.length?a.split(","):[];return c},_uniqueIDToClientID:function(a){return a.replace(/\$/g,"_")},_updateControls:function(a,d,g,e){if(a){this._updatePanelIDs=new Array(a.length);this._updatePanelClientIDs=new Array(a.length);this._updatePanelHasChildrenAsTriggers=new Array(a.length);for(var b=0;b<a.length;b++){var c=a[b].substr(1),f=a[b].charAt(0)==="t";this._updatePanelHasChildrenAsTriggers[b]=f;this._updatePanelIDs[b]=c;this._updatePanelClientIDs[b]=this._uniqueIDToClientID(c)}this._asyncPostBackTimeout=e*1000}else{this._updatePanelIDs=[];this._updatePanelClientIDs=[];this._updatePanelHasChildrenAsTriggers=[];this._asyncPostBackTimeout=0}this._asyncPostBackControlIDs=[];this._asyncPostBackControlClientIDs=[];this._convertToClientIDs(d,this._asyncPostBackControlIDs,this._asyncPostBackControlClientIDs);this._postBackControlIDs=[];this._postBackControlClientIDs=[];this._convertToClientIDs(g,this._postBackControlIDs,this._postBackControlClientIDs)},_updatePanel:function(updatePanelElement,rendering){for(var updatePanelID in this._scriptDisposes)if(this._elementContains(updatePanelElement,document.getElementById(updatePanelID))){var disposeScripts=this._scriptDisposes[updatePanelID];for(var i=0;i<disposeScripts.length;i++)eval(disposeScripts[i]);delete this._scriptDisposes[updatePanelID]}this._destroyTree(updatePanelElement);updatePanelElement.innerHTML=rendering},_validPosition:function(a){return typeof a!=="undefined"&&a!==null&&a!==0}};Sys.WebForms.PageRequestManager.getInstance=function(){var a=Sys.WebForms.PageRequestManager._instance;if(!a)a=Sys.WebForms.PageRequestManager._instance=new Sys.WebForms.PageRequestManager;return a};Sys.WebForms.PageRequestManager._addArrayElement=function(a){if(!window[a])window[a]=[];for(var b=1,c=arguments.length;b<c;b++)Array.add(window[a],arguments[b])};Sys.WebForms.PageRequestManager._initialize=function(a,b){Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(a,b)};Sys.WebForms.PageRequestManager.registerClass("Sys.WebForms.PageRequestManager");Sys.UI._UpdateProgress=function(a){Sys.UI._UpdateProgress.initializeBase(this,[a]);this._displayAfter=500;this._dynamicLayout=true;this._associatedUpdatePanelId=null;this._beginRequestHandlerDelegate=null;this._startDelegate=null;this._endRequestHandlerDelegate=null;this._pageRequestManager=null;this._timerCookie=null};Sys.UI._UpdateProgress.prototype={get_displayAfter:function(){return this._displayAfter},set_displayAfter:function(a){this._displayAfter=a},get_dynamicLayout:function(){return this._dynamicLayout},set_dynamicLayout:function(a){this._dynamicLayout=a},get_associatedUpdatePanelId:function(){return this._associatedUpdatePanelId},set_associatedUpdatePanelId:function(a){this._associatedUpdatePanelId=a},_handleBeginRequest:function(d,c){var a=c.get_postBackElement(),b=!this._associatedUpdatePanelId;while(!b&&a){if(a.id&&this._associatedUpdatePanelId===a.id)b=true;a=a.parentNode}if(b)this._timerCookie=window.setTimeout(this._startDelegate,this._displayAfter)},_startRequest:function(){if(this._pageRequestManager.get_isInAsyncPostBack())if(this._dynamicLayout)this.get_element().style.display="block";else this.get_element().style.visibility="visible";this._timerCookie=null},_handleEndRequest:function(){if(this._dynamicLayout)this.get_element().style.display="none";else this.get_element().style.visibility="hidden";if(this._timerCookie){window.clearTimeout(this._timerCookie);this._timerCookie=null}},dispose:function(){if(this._pageRequestManager!==null){this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate)}Sys.UI._UpdateProgress.callBaseMethod(this,"dispose")},initialize:function(){Sys.UI._UpdateProgress.callBaseMethod(this,"initialize");this._beginRequestHandlerDelegate=Function.createDelegate(this,this._handleBeginRequest);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);this._startDelegate=Function.createDelegate(this,this._startRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null){this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate)}}};Sys.UI._UpdateProgress.registerClass("Sys.UI._UpdateProgress",Sys.UI.Control);
+Type.registerNamespace('Sys.WebForms');Sys.WebForms.Res={'PRM_UnknownToken':'Unknown token: \'{0}\'.','PRM_MissingPanel':'Could not find UpdatePanel with ID \'{0}\'. If it is being updated dynamically then it must be inside another UpdatePanel.','PRM_ServerError':'An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}','PRM_ParserError':'The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}','PRM_TimeoutError':'The server request timed out.','PRM_ParserErrorDetails':'Error parsing near \'{0}\'.','PRM_CannotRegisterTwice':'The PageRequestManager cannot be initialized more than once.'};
+if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/LINQ/SQLiteConnection_Linq.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/LINQ/SQLiteConnection_Linq.cs
@@ -1,28 +1,28 @@
-/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Collections.Generic;
-  using System.Globalization;
-  using System.ComponentModel;
-
-  public sealed partial class SqliteConnection
-  {
-    /// <summary>
-    /// Returns a SQLiteProviderFactory object.
-    /// </summary>
-    protected override DbProviderFactory DbProviderFactory
-    {
-      get { return SqliteFactory.Instance; }
-    }
-  }
-}
-
+/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Collections.Generic;
+  using System.Globalization;
+  using System.ComponentModel;
+
+  public sealed partial class SqliteConnection
+  {
+    /// <summary>
+    /// Returns a SQLiteProviderFactory object.
+    /// </summary>
+    protected override DbProviderFactory DbProviderFactory
+    {
+      get { return SqliteFactory.Instance; }
+    }
+  }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/LINQ/SQLiteFactory_Linq.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/LINQ/SQLiteFactory_Linq.cs
@@ -1,58 +1,58 @@
-/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data.Common;
-  using System.Reflection;
-  using System.Security.Permissions;
-
-  /// <summary>
-  /// SQLite implementation of DbProviderFactory.
-  /// </summary>
-  public sealed partial class SqliteFactory : IServiceProvider
-  {
-    private static Type _dbProviderServicesType;
-    private static object _sqliteServices;
-
-    static SqliteFactory()
-    {
-      _dbProviderServicesType = Type.GetType("System.Data.Common.DbProviderServices, System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", false);
-    }
-
-    /// <summary>
-    /// Will provide a DbProviderServices object in .NET 3.5
-    /// </summary>
-    /// <param name="serviceType">The class or interface type to query for</param>
-    /// <returns></returns>
-    object IServiceProvider.GetService(Type serviceType)
-    {
-      if (serviceType == typeof(ISQLiteSchemaExtensions) ||
-        (_dbProviderServicesType != null && serviceType == _dbProviderServicesType))
-      {
-        return GetSQLiteProviderServicesInstance();
-      }
-      return null;
-    }
-
-    [ReflectionPermission(SecurityAction.Assert, MemberAccess = true)]
-    private object GetSQLiteProviderServicesInstance()
-    {
-      if (_sqliteServices == null)
-      {
-        Type type = Type.GetType("Mono.Data.Sqlite.SQLiteProviderServices, Mono.Data.Sqlite.Linq, Version=2.0.38.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139", false);
-        if (type != null)
-        {
-          FieldInfo field = type.GetField("Instance", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
-          _sqliteServices = field.GetValue(null);
-        }
-      }
-      return _sqliteServices;
-    }
-  }
-}
+/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data.Common;
+  using System.Reflection;
+  using System.Security.Permissions;
+
+  /// <summary>
+  /// SQLite implementation of DbProviderFactory.
+  /// </summary>
+  public sealed partial class SqliteFactory : IServiceProvider
+  {
+    private static Type _dbProviderServicesType;
+    private static object _sqliteServices;
+
+    static SqliteFactory()
+    {
+      _dbProviderServicesType = Type.GetType("System.Data.Common.DbProviderServices, System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", false);
+    }
+
+    /// <summary>
+    /// Will provide a DbProviderServices object in .NET 3.5
+    /// </summary>
+    /// <param name="serviceType">The class or interface type to query for</param>
+    /// <returns></returns>
+    object IServiceProvider.GetService(Type serviceType)
+    {
+      if (serviceType == typeof(ISQLiteSchemaExtensions) ||
+        (_dbProviderServicesType != null && serviceType == _dbProviderServicesType))
+      {
+        return GetSQLiteProviderServicesInstance();
+      }
+      return null;
+    }
+
+    [ReflectionPermission(SecurityAction.Assert, MemberAccess = true)]
+    private object GetSQLiteProviderServicesInstance()
+    {
+      if (_sqliteServices == null)
+      {
+        Type type = Type.GetType("Mono.Data.Sqlite.SQLiteProviderServices, Mono.Data.Sqlite.Linq, Version=2.0.38.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139", false);
+        if (type != null)
+        {
+          FieldInfo field = type.GetField("Instance", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
+          _sqliteServices = field.GetValue(null);
+        }
+      }
+      return _sqliteServices;
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs
@@ -1,1112 +1,1112 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Runtime.InteropServices;
-  using System.Collections.Generic;
-  using System.Globalization;
-
-  /// <summary>
-  /// This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET
-  /// </summary>
-  internal class SQLite3 : SQLiteBase
-  {
-    /// <summary>
-    /// The opaque pointer returned to us by the sqlite provider
-    /// </summary>
-    protected SqliteConnectionHandle _sql;
-    protected string _fileName;
-    protected bool _usePool;
-    protected int _poolVersion = 0;
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    private bool _buildingSchema = false;
-#endif
-#if MONOTOUCH
-    GCHandle gch;
-#endif
-    /// <summary>
-    /// The user-defined functions registered on this connection
-    /// </summary>
-    protected SqliteFunction[] _functionsArray;
-
-    internal SQLite3(SQLiteDateFormats fmt)
-      : base(fmt)
-    {
-#if MONOTOUCH
-      gch = GCHandle.Alloc (this);
-#endif
-    }
-
-    protected override void Dispose(bool bDisposing)
-    {
-      if (bDisposing)
-        Close();
-    }
-
-    // It isn't necessary to cleanup any functions we've registered.  If the connection
-    // goes to the pool and is resurrected later, re-registered functions will overwrite the
-    // previous functions.  The SqliteFunctionCookieHandle will take care of freeing unmanaged
-    // resources belonging to the previously-registered functions.
-    internal override void Close()
-    {
-      if (_sql != null)
-      {
-        if (_usePool)
-        {
-          SQLiteBase.ResetConnection(_sql);
-          SqliteConnectionPool.Add(_fileName, _sql, _poolVersion);
-        }
-        else
-          _sql.Dispose();
-      }
-
-      _sql = null;
-#if MONOTOUCH
-      if (gch.IsAllocated)
-        gch.Free ();
-#endif
-    }
-
-    internal override void Cancel()
-    {
-      UnsafeNativeMethods.sqlite3_interrupt(_sql);
-    }
-
-    internal override string Version
-    {
-      get
-      {
-        return SQLite3.SQLiteVersion;
-      }
-    }
-
-    internal static string SQLiteVersion
-    {
-      get
-      {
-        return UTF8ToString(UnsafeNativeMethods.sqlite3_libversion(), -1);
-      }
-    }
-
-    internal override int Changes
-    {
-      get
-      {
-        return UnsafeNativeMethods.sqlite3_changes(_sql);
-      }
-    }
-
-    internal override void Open(string strFilename, SQLiteOpenFlagsEnum flags, int maxPoolSize, bool usePool)
-    {
-      if (_sql != null) return;
-
-      _usePool = usePool;
-      if (usePool)
-      {
-        _fileName = strFilename;
-        _sql = SqliteConnectionPool.Remove(strFilename, maxPoolSize, out _poolVersion);
-      }
-
-      if (_sql == null)
-      {
-        IntPtr db;
-
-#if !SQLITE_STANDARD
-        int n = UnsafeNativeMethods.sqlite3_open_interop(ToUTF8(strFilename), (int)flags, out db);
-#else
-	// Compatibility with versions < 3.5.0
-        int n;
-
-	if (UnsafeNativeMethods.use_sqlite3_open_v2) {
-		n = UnsafeNativeMethods.sqlite3_open_v2(ToUTF8(strFilename), out db, (int)flags, IntPtr.Zero);
-	} else {
-		Console.WriteLine ("Your sqlite3 version is old - please upgrade to at least v3.5.0!");
-		n = UnsafeNativeMethods.sqlite3_open (ToUTF8 (strFilename), out db);
-	}
-	
-#endif
-        if (n > 0) throw new SqliteException(n, null);
-
-        _sql = db;
-      }
-      // Bind functions to this connection.  If any previous functions of the same name
-      // were already bound, then the new bindings replace the old.
-      _functionsArray = SqliteFunction.BindFunctions(this);
-      SetTimeout(0);
-    }
-
-    internal override void ClearPool()
-    {
-      SqliteConnectionPool.ClearPool(_fileName);
-    }
-
-    internal override void SetTimeout(int nTimeoutMS)
-    {
-      int n = UnsafeNativeMethods.sqlite3_busy_timeout(_sql, nTimeoutMS);
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override bool Step(SqliteStatement stmt)
-    {
-      int n;
-      Random rnd = null;
-      uint starttick = (uint)Environment.TickCount;
-      uint timeout = (uint)(stmt._command._commandTimeout * 1000);
-
-      while (true)
-      {
-        n = UnsafeNativeMethods.sqlite3_step(stmt._sqlite_stmt);
-
-        if (n == 100) return true;
-        if (n == 101) return false;
-
-        if (n > 0)
-        {
-          int r;
-
-          // An error occurred, attempt to reset the statement.  If the reset worked because the
-          // schema has changed, re-try the step again.  If it errored our because the database
-          // is locked, then keep retrying until the command timeout occurs.
-          r = Reset(stmt);
-
-          if (r == 0)
-            throw new SqliteException(n, SQLiteLastError());
-
-          else if ((r == 6 || r == 5) && stmt._command != null) // SQLITE_LOCKED || SQLITE_BUSY
-          {
-            // Keep trying
-            if (rnd == null) // First time we've encountered the lock
-              rnd = new Random();
-
-            // If we've exceeded the command's timeout, give up and throw an error
-            if ((uint)Environment.TickCount - starttick > timeout)
-            {
-              throw new SqliteException(r, SQLiteLastError());
-            }
-            else
-            {
-              // Otherwise sleep for a random amount of time up to 150ms
-              System.Threading.Thread.CurrentThread.Join(rnd.Next(1, 150));
-            }
-          }
-        }
-      }
-    }
-
-    internal override int Reset(SqliteStatement stmt)
-    {
-      int n;
-
-#if !SQLITE_STANDARD
-      n = UnsafeNativeMethods.sqlite3_reset_interop(stmt._sqlite_stmt);
-#else
-      n = UnsafeNativeMethods.sqlite3_reset(stmt._sqlite_stmt);
-#endif
-
-      // If the schema changed, try and re-prepare it
-      if (n == 17) // SQLITE_SCHEMA
-      {
-        // Recreate a dummy statement
-        string str;
-        using (SqliteStatement tmp = Prepare(null, stmt._sqlStatement, null, (uint)(stmt._command._commandTimeout * 1000), out str))
-        {
-          // Finalize the existing statement
-          stmt._sqlite_stmt.Dispose();
-          // Reassign a new statement pointer to the old statement and clear the temporary one
-          stmt._sqlite_stmt = tmp._sqlite_stmt;
-          tmp._sqlite_stmt = null;
-
-          // Reapply parameters
-          stmt.BindParameters();
-        }
-        return -1; // Reset was OK, with schema change
-      }
-      else if (n == 6 || n == 5) // SQLITE_LOCKED || SQLITE_BUSY
-        return n;
-
-      if (n > 0)
-        throw new SqliteException(n, SQLiteLastError());
-
-      return 0; // We reset OK, no schema changes
-    }
-
-    internal override string SQLiteLastError()
-    {
-      return SQLiteBase.SQLiteLastError(_sql);
-    }
-
-    internal override SqliteStatement Prepare(SqliteConnection cnn, string strSql, SqliteStatement previous, uint timeoutMS, out string strRemain)
-    {
-      IntPtr stmt = IntPtr.Zero;
-      IntPtr ptr = IntPtr.Zero;
-      int len = 0;
-      int n = 17;
-      int retries = 0;
-      byte[] b = ToUTF8(strSql);
-      string typedefs = null;
-      SqliteStatement cmd = null;
-      Random rnd = null;
-      uint starttick = (uint)Environment.TickCount;
-
-      GCHandle handle = GCHandle.Alloc(b, GCHandleType.Pinned);
-      IntPtr psql = handle.AddrOfPinnedObject();
-      try
-      {
-        while ((n == 17 || n == 6 || n == 5) && retries < 3)
-        {
-#if !SQLITE_STANDARD
-          n = UnsafeNativeMethods.sqlite3_prepare_interop(_sql, psql, b.Length - 1, out stmt, out ptr, out len);
-#else
-          n = UnsafeNativeMethods.sqlite3_prepare(_sql, psql, b.Length - 1, out stmt, out ptr);
-          len = -1;
-#endif
-
-          if (n == 17)
-            retries++;
-          else if (n == 1)
-          {
-            if (String.Compare(SQLiteLastError(), "near \"TYPES\": syntax error", StringComparison.OrdinalIgnoreCase) == 0)
-            {
-              int pos = strSql.IndexOf(';');
-              if (pos == -1) pos = strSql.Length - 1;
-
-              typedefs = strSql.Substring(0, pos + 1);
-              strSql = strSql.Substring(pos + 1);
-
-              strRemain = "";
-
-              while (cmd == null && strSql.Length > 0)
-              {
-                cmd = Prepare(cnn, strSql, previous, timeoutMS, out strRemain);
-                strSql = strRemain;
-              }
-
-              if (cmd != null)
-                cmd.SetTypes(typedefs);
-
-              return cmd;
-            }
-#if !PLATFORM_COMPACTFRAMEWORK
-            else if (_buildingSchema == false && String.Compare(SQLiteLastError(), 0, "no such table: TEMP.SCHEMA", 0, 26, StringComparison.OrdinalIgnoreCase) == 0)
-            {
-              strRemain = "";
-              _buildingSchema = true;
-              try
-              {
-                ISQLiteSchemaExtensions ext = ((IServiceProvider)SqliteFactory.Instance).GetService(typeof(ISQLiteSchemaExtensions)) as ISQLiteSchemaExtensions;
-
-                if (ext != null)
-                  ext.BuildTempSchema(cnn);
-
-                while (cmd == null && strSql.Length > 0)
-                {
-                  cmd = Prepare(cnn, strSql, previous, timeoutMS, out strRemain);
-                  strSql = strRemain;
-                }
-
-                return cmd;
-              }
-              finally
-              {
-                _buildingSchema = false;
-              }
-            }
-#endif
-          }
-          else if (n == 6 || n == 5) // Locked -- delay a small amount before retrying
-          {
-            // Keep trying
-            if (rnd == null) // First time we've encountered the lock
-              rnd = new Random();
-
-            // If we've exceeded the command's timeout, give up and throw an error
-            if ((uint)Environment.TickCount - starttick > timeoutMS)
-            {
-              throw new SqliteException(n, SQLiteLastError());
-            }
-            else
-            {
-              // Otherwise sleep for a random amount of time up to 150ms
-              System.Threading.Thread.CurrentThread.Join(rnd.Next(1, 150));
-            }
-          }
-        }
-
-        if (n > 0) throw new SqliteException(n, SQLiteLastError());
-
-        strRemain = UTF8ToString(ptr, len);
-
-        if (stmt != IntPtr.Zero) cmd = new SqliteStatement(this, stmt, strSql.Substring(0, strSql.Length - strRemain.Length), previous);
-
-        return cmd;
-      }
-      finally
-      {
-        handle.Free();
-      }
-    }
-
-    internal override void Bind_Double(SqliteStatement stmt, int index, double value)
-    {
-#if !PLATFORM_COMPACTFRAMEWORK
-      int n = UnsafeNativeMethods.sqlite3_bind_double(stmt._sqlite_stmt, index, value);
-#else
-      int n = UnsafeNativeMethods.sqlite3_bind_double_interop(stmt._sqlite_stmt, index, ref value);
-#endif
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void Bind_Int32(SqliteStatement stmt, int index, int value)
-    {
-      int n = UnsafeNativeMethods.sqlite3_bind_int(stmt._sqlite_stmt, index, value);
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void Bind_Int64(SqliteStatement stmt, int index, long value)
-    {
-#if !PLATFORM_COMPACTFRAMEWORK
-      int n = UnsafeNativeMethods.sqlite3_bind_int64(stmt._sqlite_stmt, index, value);
-#else
-      int n = UnsafeNativeMethods.sqlite3_bind_int64_interop(stmt._sqlite_stmt, index, ref value);
-#endif
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void Bind_Text(SqliteStatement stmt, int index, string value)
-    {
-      byte[] b = ToUTF8(value);
-      int n = UnsafeNativeMethods.sqlite3_bind_text(stmt._sqlite_stmt, index, b, b.Length - 1, (IntPtr)(-1));
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void Bind_DateTime(SqliteStatement stmt, int index, DateTime dt)
-    {
-      byte[] b = ToUTF8(dt);
-      int n = UnsafeNativeMethods.sqlite3_bind_text(stmt._sqlite_stmt, index, b, b.Length - 1, (IntPtr)(-1));
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void Bind_Blob(SqliteStatement stmt, int index, byte[] blobData)
-    {
-      int n = UnsafeNativeMethods.sqlite3_bind_blob(stmt._sqlite_stmt, index, blobData, blobData.Length, (IntPtr)(-1));
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void Bind_Null(SqliteStatement stmt, int index)
-    {
-      int n = UnsafeNativeMethods.sqlite3_bind_null(stmt._sqlite_stmt, index);
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override int Bind_ParamCount(SqliteStatement stmt)
-    {
-      return UnsafeNativeMethods.sqlite3_bind_parameter_count(stmt._sqlite_stmt);
-    }
-
-    internal override string Bind_ParamName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_bind_parameter_name_interop(stmt._sqlite_stmt, index, out len), len);
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_bind_parameter_name(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override int Bind_ParamIndex(SqliteStatement stmt, string paramName)
-    {
-      return UnsafeNativeMethods.sqlite3_bind_parameter_index(stmt._sqlite_stmt, ToUTF8(paramName));
-    }
-
-    internal override int ColumnCount(SqliteStatement stmt)
-    {
-      return UnsafeNativeMethods.sqlite3_column_count(stmt._sqlite_stmt);
-    }
-
-    internal override string ColumnName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_name_interop(stmt._sqlite_stmt, index, out len), len);
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_name(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override TypeAffinity ColumnAffinity(SqliteStatement stmt, int index)
-    {
-      return UnsafeNativeMethods.sqlite3_column_type(stmt._sqlite_stmt, index);
-    }
-
-    internal override string ColumnType(SqliteStatement stmt, int index, out TypeAffinity nAffinity)
-    {
-      int len;
-#if !SQLITE_STANDARD
-      IntPtr p = UnsafeNativeMethods.sqlite3_column_decltype_interop(stmt._sqlite_stmt, index, out len);
-#else
-      len = -1;
-      IntPtr p = UnsafeNativeMethods.sqlite3_column_decltype(stmt._sqlite_stmt, index);
-#endif
-      nAffinity = ColumnAffinity(stmt, index);
-
-      if (p != IntPtr.Zero) return UTF8ToString(p, len);
-      else
-      {
-        string[] ar = stmt.TypeDefinitions;
-        if (ar != null)
-        {
-          if (index < ar.Length && ar[index] != null)
-            return ar[index];
-        }
-        return String.Empty;
-
-        //switch (nAffinity)
-        //{
-        //  case TypeAffinity.Int64:
-        //    return "BIGINT";
-        //  case TypeAffinity.Double:
-        //    return "DOUBLE";
-        //  case TypeAffinity.Blob:
-        //    return "BLOB";
-        //  default:
-        //    return "TEXT";
-        //}
-      }
-    }
-
-    internal override int ColumnIndex(SqliteStatement stmt, string columnName)
-    {
-      int x = ColumnCount(stmt);
-
-      for (int n = 0; n < x; n++)
-      {
-        if (String.Compare(columnName, ColumnName(stmt, n), true, CultureInfo.InvariantCulture) == 0)
-          return n;
-      }
-      return -1;
-    }
-
-    internal override string ColumnOriginalName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_origin_name_interop(stmt._sqlite_stmt, index, out len), len);
-#elif MONOTOUCH
-      throw new NotImplementedException ();
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_origin_name(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override string ColumnDatabaseName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_database_name_interop(stmt._sqlite_stmt, index, out len), len);
-#elif MONOTOUCH
-      throw new NotImplementedException ();
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_database_name(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override string ColumnTableName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_table_name_interop(stmt._sqlite_stmt, index, out len), len);
-#elif MONOTOUCH
-      throw new NotImplementedException ();
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_table_name(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override void ColumnMetaData(string dataBase, string table, string column, out string dataType, out string collateSequence, out bool notNull, out bool primaryKey, out bool autoIncrement)
-    {
-      IntPtr dataTypePtr;
-      IntPtr collSeqPtr;
-      int nnotNull;
-      int nprimaryKey;
-      int nautoInc;
-      int n;
-      int dtLen;
-      int csLen;
-
-#if !SQLITE_STANDARD
-      n = UnsafeNativeMethods.sqlite3_table_column_metadata_interop(_sql, ToUTF8(dataBase), ToUTF8(table), ToUTF8(column), out dataTypePtr, out collSeqPtr, out nnotNull, out nprimaryKey, out nautoInc, out dtLen, out csLen);
-#else
-      dtLen = -1;
-      csLen = -1;
-      n = UnsafeNativeMethods.sqlite3_table_column_metadata(_sql, ToUTF8(dataBase), ToUTF8(table), ToUTF8(column), out dataTypePtr, out collSeqPtr, out nnotNull, out nprimaryKey, out nautoInc);
-#endif
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-
-      dataType = UTF8ToString(dataTypePtr, dtLen);
-      collateSequence = UTF8ToString(collSeqPtr, csLen);
-
-      notNull = (nnotNull == 1);
-      primaryKey = (nprimaryKey == 1);
-      autoIncrement = (nautoInc == 1);
-    }
-
-    internal override double GetDouble(SqliteStatement stmt, int index)
-    {
-      double value;
-#if !PLATFORM_COMPACTFRAMEWORK
-      value = UnsafeNativeMethods.sqlite3_column_double(stmt._sqlite_stmt, index);
-#else
-      UnsafeNativeMethods.sqlite3_column_double_interop(stmt._sqlite_stmt, index, out value);
-#endif
-      return value;
-    }
-
-    internal override int GetInt32(SqliteStatement stmt, int index)
-    {
-      return UnsafeNativeMethods.sqlite3_column_int(stmt._sqlite_stmt, index);
-    }
-
-    internal override long GetInt64(SqliteStatement stmt, int index)
-    {
-      long value;
-#if !PLATFORM_COMPACTFRAMEWORK
-      value = UnsafeNativeMethods.sqlite3_column_int64(stmt._sqlite_stmt, index);
-#else
-      UnsafeNativeMethods.sqlite3_column_int64_interop(stmt._sqlite_stmt, index, out value);
-#endif
-      return value;
-    }
-
-    internal override string GetText(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_text_interop(stmt._sqlite_stmt, index, out len), len);
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_text(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override DateTime GetDateTime(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return ToDateTime(UnsafeNativeMethods.sqlite3_column_text_interop(stmt._sqlite_stmt, index, out len), len);
-#else
-      return ToDateTime(UnsafeNativeMethods.sqlite3_column_text(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override long GetBytes(SqliteStatement stmt, int index, int nDataOffset, byte[] bDest, int nStart, int nLength)
-    {
-      IntPtr ptr;
-      int nlen;
-      int nCopied = nLength;
-
-      nlen = UnsafeNativeMethods.sqlite3_column_bytes(stmt._sqlite_stmt, index);
-      ptr = UnsafeNativeMethods.sqlite3_column_blob(stmt._sqlite_stmt, index);
-
-      if (bDest == null) return nlen;
-
-      if (nCopied + nStart > bDest.Length) nCopied = bDest.Length - nStart;
-      if (nCopied + nDataOffset > nlen) nCopied = nlen - nDataOffset;
-
-      unsafe {
-	      if (nCopied > 0)
-		      Marshal.Copy((IntPtr)((byte*)ptr + nDataOffset), bDest, nStart, nCopied);
-	      else nCopied = 0;
-      }
-
-      return nCopied;
-    }
-
-    internal override long GetChars(SqliteStatement stmt, int index, int nDataOffset, char[] bDest, int nStart, int nLength)
-    {
-      int nlen;
-      int nCopied = nLength;
-
-      string str = GetText(stmt, index);
-      nlen = str.Length;
-
-      if (bDest == null) return nlen;
-
-      if (nCopied + nStart > bDest.Length) nCopied = bDest.Length - nStart;
-      if (nCopied + nDataOffset > nlen) nCopied = nlen - nDataOffset;
-
-      if (nCopied > 0)
-        str.CopyTo(nDataOffset, bDest, nStart, nCopied);
-      else nCopied = 0;
-
-      return nCopied;
-    }
-
-    internal override bool IsNull(SqliteStatement stmt, int index)
-    {
-      return (ColumnAffinity(stmt, index) == TypeAffinity.Null);
-    }
-
-    internal override int AggregateCount(IntPtr context)
-    {
-      return UnsafeNativeMethods.sqlite3_aggregate_count(context);
-    }
-
-#if MONOTOUCH
-    class FunctionData {
-      public SQLiteCallback Func;
-      public SQLiteCallback FuncStep;
-      public SQLiteFinalCallback FuncFinal;
-    }
-#endif
-
-    internal override void CreateFunction(string strFunction, int nArgs, bool needCollSeq, SQLiteCallback func, SQLiteCallback funcstep, SQLiteFinalCallback funcfinal)
-    {
-      int n;
-
-#if MONOTOUCH
-      var data = new FunctionData();
-      data.Func = func;
-      data.FuncStep = funcstep;
-      data.FuncFinal = funcfinal;
-      SQLiteCallback func_callback = func == null ? null : new SQLiteCallback(scalar_callback);
-      SQLiteCallback funcstep_callback = funcstep == null ? null : new SQLiteCallback(step_callback);
-      SQLiteFinalCallback funcfinal_callback = funcfinal == null ? null : new SQLiteFinalCallback(final_callback);
-
-      IntPtr user_data;
-      user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data));
-      n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 4, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback);
-
-      if (n == 0) {
-        // sqlite3_create_function_v2 will call 'destroy_callback' if it fails, so we need to recreate the gchandle here.
-        user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data));
-        n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 1, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback);
-      }
-#elif !SQLITE_STANDARD
-      n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 4, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0);
-      if (n == 0) n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 1, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0);
-#else
-      n = UnsafeNativeMethods.sqlite3_create_function(_sql, ToUTF8(strFunction), nArgs, 4, IntPtr.Zero, func, funcstep, funcfinal);
-      if (n == 0) n = UnsafeNativeMethods.sqlite3_create_function(_sql, ToUTF8(strFunction), nArgs, 1, IntPtr.Zero, func, funcstep, funcfinal);
-#endif
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void CreateCollation(string strCollation, SQLiteCollation func, SQLiteCollation func16, IntPtr user_data)
-    {
-      int n = UnsafeNativeMethods.sqlite3_create_collation(_sql, ToUTF8(strCollation), 2, user_data, func16);
-      if (n == 0) UnsafeNativeMethods.sqlite3_create_collation(_sql, ToUTF8(strCollation), 1, user_data, func);
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-#if MONOTOUCH
-    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))]
-    internal static void scalar_callback(IntPtr context, int nArgs, IntPtr argsptr)
-    {
-      var handle = GCHandle.FromIntPtr (UnsafeNativeMethods.sqlite3_user_data(context));
-      var func = (FunctionData)handle.Target;
-      func.Func(context, nArgs, argsptr);
-    }
-
-    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))]
-    internal static void step_callback(IntPtr context, int nArgs, IntPtr argsptr)
-    {
-      var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context));
-      var func = (FunctionData)handle.Target;
-      func.FuncStep(context, nArgs, argsptr);
-    }
-
-    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))]
-    internal static void final_callback(IntPtr context)
-    {
-      var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context));
-      var func = (FunctionData)handle.Target;
-      func.FuncFinal(context);
-    }
-
-    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))]
-    internal static void destroy_callback(IntPtr context)
-    {
-      GCHandle.FromIntPtr(context).Free();
-    }
-#endif
-
-    internal override int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, string s1, string s2)
-    {
-#if !SQLITE_STANDARD
-      byte[] b1;
-      byte[] b2;
-      System.Text.Encoding converter = null;
-
-      switch (enc)
-      {
-        case CollationEncodingEnum.UTF8:
-          converter = System.Text.Encoding.UTF8;
-          break;
-        case CollationEncodingEnum.UTF16LE:
-          converter = System.Text.Encoding.Unicode;
-          break;
-        case CollationEncodingEnum.UTF16BE:
-          converter = System.Text.Encoding.BigEndianUnicode;
-          break;
-      }
-
-      b1 = converter.GetBytes(s1);
-      b2 = converter.GetBytes(s2);
-
-      return UnsafeNativeMethods.sqlite3_context_collcompare(context, b1, b1.Length, b2, b2.Length);
-#else
-      throw new NotImplementedException();
-#endif
-    }
-
-    internal override int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, char[] c1, char[] c2)
-    {
-#if !SQLITE_STANDARD
-      byte[] b1;
-      byte[] b2;
-      System.Text.Encoding converter = null;
-
-      switch (enc)
-      {
-        case CollationEncodingEnum.UTF8:
-          converter = System.Text.Encoding.UTF8;
-          break;
-        case CollationEncodingEnum.UTF16LE:
-          converter = System.Text.Encoding.Unicode;
-          break;
-        case CollationEncodingEnum.UTF16BE:
-          converter = System.Text.Encoding.BigEndianUnicode;
-          break;
-      }
-
-      b1 = converter.GetBytes(c1);
-      b2 = converter.GetBytes(c2);
-
-      return UnsafeNativeMethods.sqlite3_context_collcompare(context, b1, b1.Length, b2, b2.Length);
-#else
-      throw new NotImplementedException();
-#endif
-    }
-
-    internal override CollationSequence GetCollationSequence(SqliteFunction func, IntPtr context)
-    {
-#if !SQLITE_STANDARD
-      CollationSequence seq = new CollationSequence();
-      int len;
-      int type;
-      int enc;
-      IntPtr p = UnsafeNativeMethods.sqlite3_context_collseq(context, out type, out enc, out len);
-
-      if (p != null) seq.Name = UTF8ToString(p, len);
-      seq.Type = (CollationTypeEnum)type;
-      seq._func = func;
-      seq.Encoding = (CollationEncodingEnum)enc;
-
-      return seq;
-#else
-      throw new NotImplementedException();
-#endif
-    }
-
-    internal override long GetParamValueBytes(IntPtr p, int nDataOffset, byte[] bDest, int nStart, int nLength)
-    {
-      IntPtr ptr;
-      int nlen;
-      int nCopied = nLength;
-
-      nlen = UnsafeNativeMethods.sqlite3_value_bytes(p);
-      ptr = UnsafeNativeMethods.sqlite3_value_blob(p);
-
-      if (bDest == null) return nlen;
-
-      if (nCopied + nStart > bDest.Length) nCopied = bDest.Length - nStart;
-      if (nCopied + nDataOffset > nlen) nCopied = nlen - nDataOffset;
-
-      unsafe {
-	      if (nCopied > 0)
-		      Marshal.Copy((IntPtr)((byte*)ptr + nDataOffset), bDest, nStart, nCopied);
-	      else nCopied = 0;
-      }
-
-      return nCopied;
-    }
-
-    internal override double GetParamValueDouble(IntPtr ptr)
-    {
-      double value;
-#if !PLATFORM_COMPACTFRAMEWORK
-      value = UnsafeNativeMethods.sqlite3_value_double(ptr);
-#else
-      UnsafeNativeMethods.sqlite3_value_double_interop(ptr, out value);
-#endif
-      return value;
-    }
-
-    internal override int GetParamValueInt32(IntPtr ptr)
-    {
-      return UnsafeNativeMethods.sqlite3_value_int(ptr);
-    }
-
-    internal override long GetParamValueInt64(IntPtr ptr)
-    {
-      Int64 value;
-#if !PLATFORM_COMPACTFRAMEWORK
-      value = UnsafeNativeMethods.sqlite3_value_int64(ptr);
-#else
-      UnsafeNativeMethods.sqlite3_value_int64_interop(ptr, out value);
-#endif
-      return value;
-    }
-
-    internal override string GetParamValueText(IntPtr ptr)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_value_text_interop(ptr, out len), len);
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_value_text(ptr), -1);
-#endif
-    }
-
-    internal override TypeAffinity GetParamValueType(IntPtr ptr)
-    {
-      return UnsafeNativeMethods.sqlite3_value_type(ptr);
-    }
-
-    internal override void ReturnBlob(IntPtr context, byte[] value)
-    {
-      UnsafeNativeMethods.sqlite3_result_blob(context, value, value.Length, (IntPtr)(-1));
-    }
-
-    internal override void ReturnDouble(IntPtr context, double value)
-    {
-#if !PLATFORM_COMPACTFRAMEWORK
-      UnsafeNativeMethods.sqlite3_result_double(context, value);
-#else
-      UnsafeNativeMethods.sqlite3_result_double_interop(context, ref value);
-#endif
-    }
-
-    internal override void ReturnError(IntPtr context, string value)
-    {
-      UnsafeNativeMethods.sqlite3_result_error(context, ToUTF8(value), value.Length);
-    }
-
-    internal override void ReturnInt32(IntPtr context, int value)
-    {
-      UnsafeNativeMethods.sqlite3_result_int(context, value);
-    }
-
-    internal override void ReturnInt64(IntPtr context, long value)
-    {
-#if !PLATFORM_COMPACTFRAMEWORK
-      UnsafeNativeMethods.sqlite3_result_int64(context, value);
-#else
-      UnsafeNativeMethods.sqlite3_result_int64_interop(context, ref value);
-#endif
-    }
-
-    internal override void ReturnNull(IntPtr context)
-    {
-      UnsafeNativeMethods.sqlite3_result_null(context);
-    }
-
-    internal override void ReturnText(IntPtr context, string value)
-    {
-      byte[] b = ToUTF8(value);
-      UnsafeNativeMethods.sqlite3_result_text(context, ToUTF8(value), b.Length - 1, (IntPtr)(-1));
-    }
-
-    internal override IntPtr AggregateContext(IntPtr context)
-    {
-      return UnsafeNativeMethods.sqlite3_aggregate_context(context, 1);
-    }
-
-#if MONOTOUCH
-	internal override void SetPassword(byte[] passwordBytes)
-	{
-		throw new NotImplementedException ();
-	}
-
-	internal override void ChangePassword(byte[] newPasswordBytes)
-	{
-		throw new NotImplementedException ();
-	}
-#else
-    internal override void SetPassword(byte[] passwordBytes)
-    {
-      int n = UnsafeNativeMethods.sqlite3_key(_sql, passwordBytes, passwordBytes.Length);
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override void ChangePassword(byte[] newPasswordBytes)
-    {
-      int n = UnsafeNativeMethods.sqlite3_rekey(_sql, newPasswordBytes, (newPasswordBytes == null) ? 0 : newPasswordBytes.Length);
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-#endif
-		
-#if MONOTOUCH
-    SQLiteUpdateCallback update_callback;
-    SQLiteCommitCallback commit_callback;
-    SQLiteRollbackCallback rollback_callback;
-		
-    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteUpdateCallback))]
-    static void update (IntPtr puser, int type, IntPtr database, IntPtr table, Int64 rowid)
-    {
-      SQLite3 instance = GCHandle.FromIntPtr (puser).Target as SQLite3;
-      instance.update_callback (puser, type, database, table, rowid);
-    }
-			
-    internal override void SetUpdateHook (SQLiteUpdateCallback func)
-    {
-      update_callback = func;
-      if (func == null)
-        UnsafeNativeMethods.sqlite3_update_hook (_sql, null, IntPtr.Zero);
-      else
-        UnsafeNativeMethods.sqlite3_update_hook (_sql, update, GCHandle.ToIntPtr (gch));
-    }
-
-    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteCommitCallback))]
-    static int commit (IntPtr puser)
-    {
-      SQLite3 instance = GCHandle.FromIntPtr (puser).Target as SQLite3;
-      return instance.commit_callback (puser);
-    }
-		
-    internal override void SetCommitHook (SQLiteCommitCallback func)
-    {
-      commit_callback = func;
-      if (func == null)
-        UnsafeNativeMethods.sqlite3_commit_hook (_sql, null, IntPtr.Zero);
-      else
-        UnsafeNativeMethods.sqlite3_commit_hook (_sql, commit, GCHandle.ToIntPtr (gch));
-    }
-
-    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteRollbackCallback))]
-    static void rollback (IntPtr puser)
-    {
-      SQLite3 instance = GCHandle.FromIntPtr (puser).Target as SQLite3;
-      instance.rollback_callback (puser);
-    }
-
-    internal override void SetRollbackHook (SQLiteRollbackCallback func)
-    {
-      rollback_callback = func;
-      if (func == null)
-        UnsafeNativeMethods.sqlite3_rollback_hook (_sql, null, IntPtr.Zero);
-      else
-        UnsafeNativeMethods.sqlite3_rollback_hook (_sql, rollback, GCHandle.ToIntPtr (gch));
-    }
-#else
-    internal override void SetUpdateHook(SQLiteUpdateCallback func)
-    {
-      UnsafeNativeMethods.sqlite3_update_hook(_sql, func, IntPtr.Zero);
-    }
-
-    internal override void SetCommitHook(SQLiteCommitCallback func)
-    {
-      UnsafeNativeMethods.sqlite3_commit_hook(_sql, func, IntPtr.Zero);
-    }
-
-    internal override void SetRollbackHook(SQLiteRollbackCallback func)
-    {
-      UnsafeNativeMethods.sqlite3_rollback_hook(_sql, func, IntPtr.Zero);
-    }
-#endif
-    /// <summary>
-    /// Helper function to retrieve a column of data from an active statement.
-    /// </summary>
-    /// <param name="stmt">The statement being step()'d through</param>
-    /// <param name="index">The column index to retrieve</param>
-    /// <param name="typ">The type of data contained in the column.  If Uninitialized, this function will retrieve the datatype information.</param>
-    /// <returns>Returns the data in the column</returns>
-    internal override object GetValue(SqliteStatement stmt, int index, SQLiteType typ)
-    {
-      if (IsNull(stmt, index)) return DBNull.Value;
-      TypeAffinity aff = typ.Affinity;
-      Type t = null;
-
-      if (typ.Type != DbType.Object)
-      {
-        t = SqliteConvert.SQLiteTypeToType(typ);
-        aff = TypeToAffinity(t);
-      }
-
-      switch (aff)
-      {
-        case TypeAffinity.Blob:
-          if (typ.Type == DbType.Guid && typ.Affinity == TypeAffinity.Text)
-            return new Guid(GetText(stmt, index));
-
-          int n = (int)GetBytes(stmt, index, 0, null, 0, 0);
-          byte[] b = new byte[n];
-          GetBytes(stmt, index, 0, b, 0, n);
-
-          if (typ.Type == DbType.Guid && n == 16)
-            return new Guid(b);
-
-          return b;
-        case TypeAffinity.DateTime:
-          return GetDateTime(stmt, index);
-        case TypeAffinity.Double:
-          if (t == null) return GetDouble(stmt, index);
-          else
-            return Convert.ChangeType(GetDouble(stmt, index), t, null);
-        case TypeAffinity.Int64:
-          if (t == null) return GetInt64(stmt, index);
-          else
-            return Convert.ChangeType(GetInt64(stmt, index), t, null);
-        default:
-          return GetText(stmt, index);
-      }
-    }
-
-    internal override int GetCursorForTable(SqliteStatement stmt, int db, int rootPage)
-    {
-#if !SQLITE_STANDARD
-      return UnsafeNativeMethods.sqlite3_table_cursor(stmt._sqlite_stmt, db, rootPage);
-#else
-      return -1;
-#endif
-    }
-
-    internal override long GetRowIdForCursor(SqliteStatement stmt, int cursor)
-    {
-#if !SQLITE_STANDARD
-      long rowid;
-      int rc = UnsafeNativeMethods.sqlite3_cursor_rowid(stmt._sqlite_stmt, cursor, out rowid);
-      if (rc == 0) return rowid;
-
-      return 0;
-#else
-      return 0;
-#endif
-    }
-
-    internal override void GetIndexColumnExtendedInfo(string database, string index, string column, out int sortMode, out int onError, out string collationSequence)
-    {
-#if !SQLITE_STANDARD
-      IntPtr coll;
-      int colllen;
-      int rc;
-
-      rc = UnsafeNativeMethods.sqlite3_index_column_info_interop(_sql, ToUTF8(database), ToUTF8(index), ToUTF8(column), out sortMode, out onError, out coll, out colllen);
-      if (rc != 0) throw new SqliteException(rc, "");
-
-      collationSequence = UTF8ToString(coll, colllen);
-#else
-      sortMode = 0;
-      onError = 2;
-      collationSequence = "BINARY";
-#endif
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Runtime.InteropServices;
+  using System.Collections.Generic;
+  using System.Globalization;
+
+  /// <summary>
+  /// This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET
+  /// </summary>
+  internal class SQLite3 : SQLiteBase
+  {
+    /// <summary>
+    /// The opaque pointer returned to us by the sqlite provider
+    /// </summary>
+    protected SqliteConnectionHandle _sql;
+    protected string _fileName;
+    protected bool _usePool;
+    protected int _poolVersion = 0;
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    private bool _buildingSchema = false;
+#endif
+#if MONOTOUCH
+    GCHandle gch;
+#endif
+    /// <summary>
+    /// The user-defined functions registered on this connection
+    /// </summary>
+    protected SqliteFunction[] _functionsArray;
+
+    internal SQLite3(SQLiteDateFormats fmt)
+      : base(fmt)
+    {
+#if MONOTOUCH
+      gch = GCHandle.Alloc (this);
+#endif
+    }
+
+    protected override void Dispose(bool bDisposing)
+    {
+      if (bDisposing)
+        Close();
+    }
+
+    // It isn't necessary to cleanup any functions we've registered.  If the connection
+    // goes to the pool and is resurrected later, re-registered functions will overwrite the
+    // previous functions.  The SqliteFunctionCookieHandle will take care of freeing unmanaged
+    // resources belonging to the previously-registered functions.
+    internal override void Close()
+    {
+      if (_sql != null)
+      {
+        if (_usePool)
+        {
+          SQLiteBase.ResetConnection(_sql);
+          SqliteConnectionPool.Add(_fileName, _sql, _poolVersion);
+        }
+        else
+          _sql.Dispose();
+      }
+
+      _sql = null;
+#if MONOTOUCH
+      if (gch.IsAllocated)
+        gch.Free ();
+#endif
+    }
+
+    internal override void Cancel()
+    {
+      UnsafeNativeMethods.sqlite3_interrupt(_sql);
+    }
+
+    internal override string Version
+    {
+      get
+      {
+        return SQLite3.SQLiteVersion;
+      }
+    }
+
+    internal static string SQLiteVersion
+    {
+      get
+      {
+        return UTF8ToString(UnsafeNativeMethods.sqlite3_libversion(), -1);
+      }
+    }
+
+    internal override int Changes
+    {
+      get
+      {
+        return UnsafeNativeMethods.sqlite3_changes(_sql);
+      }
+    }
+
+    internal override void Open(string strFilename, SQLiteOpenFlagsEnum flags, int maxPoolSize, bool usePool)
+    {
+      if (_sql != null) return;
+
+      _usePool = usePool;
+      if (usePool)
+      {
+        _fileName = strFilename;
+        _sql = SqliteConnectionPool.Remove(strFilename, maxPoolSize, out _poolVersion);
+      }
+
+      if (_sql == null)
+      {
+        IntPtr db;
+
+#if !SQLITE_STANDARD
+        int n = UnsafeNativeMethods.sqlite3_open_interop(ToUTF8(strFilename), (int)flags, out db);
+#else
+	// Compatibility with versions < 3.5.0
+        int n;
+
+	if (UnsafeNativeMethods.use_sqlite3_open_v2) {
+		n = UnsafeNativeMethods.sqlite3_open_v2(ToUTF8(strFilename), out db, (int)flags, IntPtr.Zero);
+	} else {
+		Console.WriteLine ("Your sqlite3 version is old - please upgrade to at least v3.5.0!");
+		n = UnsafeNativeMethods.sqlite3_open (ToUTF8 (strFilename), out db);
+	}
+	
+#endif
+        if (n > 0) throw new SqliteException(n, null);
+
+        _sql = db;
+      }
+      // Bind functions to this connection.  If any previous functions of the same name
+      // were already bound, then the new bindings replace the old.
+      _functionsArray = SqliteFunction.BindFunctions(this);
+      SetTimeout(0);
+    }
+
+    internal override void ClearPool()
+    {
+      SqliteConnectionPool.ClearPool(_fileName);
+    }
+
+    internal override void SetTimeout(int nTimeoutMS)
+    {
+      int n = UnsafeNativeMethods.sqlite3_busy_timeout(_sql, nTimeoutMS);
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override bool Step(SqliteStatement stmt)
+    {
+      int n;
+      Random rnd = null;
+      uint starttick = (uint)Environment.TickCount;
+      uint timeout = (uint)(stmt._command._commandTimeout * 1000);
+
+      while (true)
+      {
+        n = UnsafeNativeMethods.sqlite3_step(stmt._sqlite_stmt);
+
+        if (n == 100) return true;
+        if (n == 101) return false;
+
+        if (n > 0)
+        {
+          int r;
+
+          // An error occurred, attempt to reset the statement.  If the reset worked because the
+          // schema has changed, re-try the step again.  If it errored our because the database
+          // is locked, then keep retrying until the command timeout occurs.
+          r = Reset(stmt);
+
+          if (r == 0)
+            throw new SqliteException(n, SQLiteLastError());
+
+          else if ((r == 6 || r == 5) && stmt._command != null) // SQLITE_LOCKED || SQLITE_BUSY
+          {
+            // Keep trying
+            if (rnd == null) // First time we've encountered the lock
+              rnd = new Random();
+
+            // If we've exceeded the command's timeout, give up and throw an error
+            if ((uint)Environment.TickCount - starttick > timeout)
+            {
+              throw new SqliteException(r, SQLiteLastError());
+            }
+            else
+            {
+              // Otherwise sleep for a random amount of time up to 150ms
+              System.Threading.Thread.CurrentThread.Join(rnd.Next(1, 150));
+            }
+          }
+        }
+      }
+    }
+
+    internal override int Reset(SqliteStatement stmt)
+    {
+      int n;
+
+#if !SQLITE_STANDARD
+      n = UnsafeNativeMethods.sqlite3_reset_interop(stmt._sqlite_stmt);
+#else
+      n = UnsafeNativeMethods.sqlite3_reset(stmt._sqlite_stmt);
+#endif
+
+      // If the schema changed, try and re-prepare it
+      if (n == 17) // SQLITE_SCHEMA
+      {
+        // Recreate a dummy statement
+        string str;
+        using (SqliteStatement tmp = Prepare(null, stmt._sqlStatement, null, (uint)(stmt._command._commandTimeout * 1000), out str))
+        {
+          // Finalize the existing statement
+          stmt._sqlite_stmt.Dispose();
+          // Reassign a new statement pointer to the old statement and clear the temporary one
+          stmt._sqlite_stmt = tmp._sqlite_stmt;
+          tmp._sqlite_stmt = null;
+
+          // Reapply parameters
+          stmt.BindParameters();
+        }
+        return -1; // Reset was OK, with schema change
+      }
+      else if (n == 6 || n == 5) // SQLITE_LOCKED || SQLITE_BUSY
+        return n;
+
+      if (n > 0)
+        throw new SqliteException(n, SQLiteLastError());
+
+      return 0; // We reset OK, no schema changes
+    }
+
+    internal override string SQLiteLastError()
+    {
+      return SQLiteBase.SQLiteLastError(_sql);
+    }
+
+    internal override SqliteStatement Prepare(SqliteConnection cnn, string strSql, SqliteStatement previous, uint timeoutMS, out string strRemain)
+    {
+      IntPtr stmt = IntPtr.Zero;
+      IntPtr ptr = IntPtr.Zero;
+      int len = 0;
+      int n = 17;
+      int retries = 0;
+      byte[] b = ToUTF8(strSql);
+      string typedefs = null;
+      SqliteStatement cmd = null;
+      Random rnd = null;
+      uint starttick = (uint)Environment.TickCount;
+
+      GCHandle handle = GCHandle.Alloc(b, GCHandleType.Pinned);
+      IntPtr psql = handle.AddrOfPinnedObject();
+      try
+      {
+        while ((n == 17 || n == 6 || n == 5) && retries < 3)
+        {
+#if !SQLITE_STANDARD
+          n = UnsafeNativeMethods.sqlite3_prepare_interop(_sql, psql, b.Length - 1, out stmt, out ptr, out len);
+#else
+          n = UnsafeNativeMethods.sqlite3_prepare(_sql, psql, b.Length - 1, out stmt, out ptr);
+          len = -1;
+#endif
+
+          if (n == 17)
+            retries++;
+          else if (n == 1)
+          {
+            if (String.Compare(SQLiteLastError(), "near \"TYPES\": syntax error", StringComparison.OrdinalIgnoreCase) == 0)
+            {
+              int pos = strSql.IndexOf(';');
+              if (pos == -1) pos = strSql.Length - 1;
+
+              typedefs = strSql.Substring(0, pos + 1);
+              strSql = strSql.Substring(pos + 1);
+
+              strRemain = "";
+
+              while (cmd == null && strSql.Length > 0)
+              {
+                cmd = Prepare(cnn, strSql, previous, timeoutMS, out strRemain);
+                strSql = strRemain;
+              }
+
+              if (cmd != null)
+                cmd.SetTypes(typedefs);
+
+              return cmd;
+            }
+#if !PLATFORM_COMPACTFRAMEWORK
+            else if (_buildingSchema == false && String.Compare(SQLiteLastError(), 0, "no such table: TEMP.SCHEMA", 0, 26, StringComparison.OrdinalIgnoreCase) == 0)
+            {
+              strRemain = "";
+              _buildingSchema = true;
+              try
+              {
+                ISQLiteSchemaExtensions ext = ((IServiceProvider)SqliteFactory.Instance).GetService(typeof(ISQLiteSchemaExtensions)) as ISQLiteSchemaExtensions;
+
+                if (ext != null)
+                  ext.BuildTempSchema(cnn);
+
+                while (cmd == null && strSql.Length > 0)
+                {
+                  cmd = Prepare(cnn, strSql, previous, timeoutMS, out strRemain);
+                  strSql = strRemain;
+                }
+
+                return cmd;
+              }
+              finally
+              {
+                _buildingSchema = false;
+              }
+            }
+#endif
+          }
+          else if (n == 6 || n == 5) // Locked -- delay a small amount before retrying
+          {
+            // Keep trying
+            if (rnd == null) // First time we've encountered the lock
+              rnd = new Random();
+
+            // If we've exceeded the command's timeout, give up and throw an error
+            if ((uint)Environment.TickCount - starttick > timeoutMS)
+            {
+              throw new SqliteException(n, SQLiteLastError());
+            }
+            else
+            {
+              // Otherwise sleep for a random amount of time up to 150ms
+              System.Threading.Thread.CurrentThread.Join(rnd.Next(1, 150));
+            }
+          }
+        }
+
+        if (n > 0) throw new SqliteException(n, SQLiteLastError());
+
+        strRemain = UTF8ToString(ptr, len);
+
+        if (stmt != IntPtr.Zero) cmd = new SqliteStatement(this, stmt, strSql.Substring(0, strSql.Length - strRemain.Length), previous);
+
+        return cmd;
+      }
+      finally
+      {
+        handle.Free();
+      }
+    }
+
+    internal override void Bind_Double(SqliteStatement stmt, int index, double value)
+    {
+#if !PLATFORM_COMPACTFRAMEWORK
+      int n = UnsafeNativeMethods.sqlite3_bind_double(stmt._sqlite_stmt, index, value);
+#else
+      int n = UnsafeNativeMethods.sqlite3_bind_double_interop(stmt._sqlite_stmt, index, ref value);
+#endif
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void Bind_Int32(SqliteStatement stmt, int index, int value)
+    {
+      int n = UnsafeNativeMethods.sqlite3_bind_int(stmt._sqlite_stmt, index, value);
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void Bind_Int64(SqliteStatement stmt, int index, long value)
+    {
+#if !PLATFORM_COMPACTFRAMEWORK
+      int n = UnsafeNativeMethods.sqlite3_bind_int64(stmt._sqlite_stmt, index, value);
+#else
+      int n = UnsafeNativeMethods.sqlite3_bind_int64_interop(stmt._sqlite_stmt, index, ref value);
+#endif
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void Bind_Text(SqliteStatement stmt, int index, string value)
+    {
+      byte[] b = ToUTF8(value);
+      int n = UnsafeNativeMethods.sqlite3_bind_text(stmt._sqlite_stmt, index, b, b.Length - 1, (IntPtr)(-1));
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void Bind_DateTime(SqliteStatement stmt, int index, DateTime dt)
+    {
+      byte[] b = ToUTF8(dt);
+      int n = UnsafeNativeMethods.sqlite3_bind_text(stmt._sqlite_stmt, index, b, b.Length - 1, (IntPtr)(-1));
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void Bind_Blob(SqliteStatement stmt, int index, byte[] blobData)
+    {
+      int n = UnsafeNativeMethods.sqlite3_bind_blob(stmt._sqlite_stmt, index, blobData, blobData.Length, (IntPtr)(-1));
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void Bind_Null(SqliteStatement stmt, int index)
+    {
+      int n = UnsafeNativeMethods.sqlite3_bind_null(stmt._sqlite_stmt, index);
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override int Bind_ParamCount(SqliteStatement stmt)
+    {
+      return UnsafeNativeMethods.sqlite3_bind_parameter_count(stmt._sqlite_stmt);
+    }
+
+    internal override string Bind_ParamName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_bind_parameter_name_interop(stmt._sqlite_stmt, index, out len), len);
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_bind_parameter_name(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override int Bind_ParamIndex(SqliteStatement stmt, string paramName)
+    {
+      return UnsafeNativeMethods.sqlite3_bind_parameter_index(stmt._sqlite_stmt, ToUTF8(paramName));
+    }
+
+    internal override int ColumnCount(SqliteStatement stmt)
+    {
+      return UnsafeNativeMethods.sqlite3_column_count(stmt._sqlite_stmt);
+    }
+
+    internal override string ColumnName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_name_interop(stmt._sqlite_stmt, index, out len), len);
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_name(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override TypeAffinity ColumnAffinity(SqliteStatement stmt, int index)
+    {
+      return UnsafeNativeMethods.sqlite3_column_type(stmt._sqlite_stmt, index);
+    }
+
+    internal override string ColumnType(SqliteStatement stmt, int index, out TypeAffinity nAffinity)
+    {
+      int len;
+#if !SQLITE_STANDARD
+      IntPtr p = UnsafeNativeMethods.sqlite3_column_decltype_interop(stmt._sqlite_stmt, index, out len);
+#else
+      len = -1;
+      IntPtr p = UnsafeNativeMethods.sqlite3_column_decltype(stmt._sqlite_stmt, index);
+#endif
+      nAffinity = ColumnAffinity(stmt, index);
+
+      if (p != IntPtr.Zero) return UTF8ToString(p, len);
+      else
+      {
+        string[] ar = stmt.TypeDefinitions;
+        if (ar != null)
+        {
+          if (index < ar.Length && ar[index] != null)
+            return ar[index];
+        }
+        return String.Empty;
+
+        //switch (nAffinity)
+        //{
+        //  case TypeAffinity.Int64:
+        //    return "BIGINT";
+        //  case TypeAffinity.Double:
+        //    return "DOUBLE";
+        //  case TypeAffinity.Blob:
+        //    return "BLOB";
+        //  default:
+        //    return "TEXT";
+        //}
+      }
+    }
+
+    internal override int ColumnIndex(SqliteStatement stmt, string columnName)
+    {
+      int x = ColumnCount(stmt);
+
+      for (int n = 0; n < x; n++)
+      {
+        if (String.Compare(columnName, ColumnName(stmt, n), true, CultureInfo.InvariantCulture) == 0)
+          return n;
+      }
+      return -1;
+    }
+
+    internal override string ColumnOriginalName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_origin_name_interop(stmt._sqlite_stmt, index, out len), len);
+#elif MONOTOUCH
+      throw new NotImplementedException ();
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_origin_name(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override string ColumnDatabaseName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_database_name_interop(stmt._sqlite_stmt, index, out len), len);
+#elif MONOTOUCH
+      throw new NotImplementedException ();
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_database_name(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override string ColumnTableName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_table_name_interop(stmt._sqlite_stmt, index, out len), len);
+#elif MONOTOUCH
+      throw new NotImplementedException ();
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_table_name(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override void ColumnMetaData(string dataBase, string table, string column, out string dataType, out string collateSequence, out bool notNull, out bool primaryKey, out bool autoIncrement)
+    {
+      IntPtr dataTypePtr;
+      IntPtr collSeqPtr;
+      int nnotNull;
+      int nprimaryKey;
+      int nautoInc;
+      int n;
+      int dtLen;
+      int csLen;
+
+#if !SQLITE_STANDARD
+      n = UnsafeNativeMethods.sqlite3_table_column_metadata_interop(_sql, ToUTF8(dataBase), ToUTF8(table), ToUTF8(column), out dataTypePtr, out collSeqPtr, out nnotNull, out nprimaryKey, out nautoInc, out dtLen, out csLen);
+#else
+      dtLen = -1;
+      csLen = -1;
+      n = UnsafeNativeMethods.sqlite3_table_column_metadata(_sql, ToUTF8(dataBase), ToUTF8(table), ToUTF8(column), out dataTypePtr, out collSeqPtr, out nnotNull, out nprimaryKey, out nautoInc);
+#endif
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+
+      dataType = UTF8ToString(dataTypePtr, dtLen);
+      collateSequence = UTF8ToString(collSeqPtr, csLen);
+
+      notNull = (nnotNull == 1);
+      primaryKey = (nprimaryKey == 1);
+      autoIncrement = (nautoInc == 1);
+    }
+
+    internal override double GetDouble(SqliteStatement stmt, int index)
+    {
+      double value;
+#if !PLATFORM_COMPACTFRAMEWORK
+      value = UnsafeNativeMethods.sqlite3_column_double(stmt._sqlite_stmt, index);
+#else
+      UnsafeNativeMethods.sqlite3_column_double_interop(stmt._sqlite_stmt, index, out value);
+#endif
+      return value;
+    }
+
+    internal override int GetInt32(SqliteStatement stmt, int index)
+    {
+      return UnsafeNativeMethods.sqlite3_column_int(stmt._sqlite_stmt, index);
+    }
+
+    internal override long GetInt64(SqliteStatement stmt, int index)
+    {
+      long value;
+#if !PLATFORM_COMPACTFRAMEWORK
+      value = UnsafeNativeMethods.sqlite3_column_int64(stmt._sqlite_stmt, index);
+#else
+      UnsafeNativeMethods.sqlite3_column_int64_interop(stmt._sqlite_stmt, index, out value);
+#endif
+      return value;
+    }
+
+    internal override string GetText(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_text_interop(stmt._sqlite_stmt, index, out len), len);
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_column_text(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override DateTime GetDateTime(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return ToDateTime(UnsafeNativeMethods.sqlite3_column_text_interop(stmt._sqlite_stmt, index, out len), len);
+#else
+      return ToDateTime(UnsafeNativeMethods.sqlite3_column_text(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override long GetBytes(SqliteStatement stmt, int index, int nDataOffset, byte[] bDest, int nStart, int nLength)
+    {
+      IntPtr ptr;
+      int nlen;
+      int nCopied = nLength;
+
+      nlen = UnsafeNativeMethods.sqlite3_column_bytes(stmt._sqlite_stmt, index);
+      ptr = UnsafeNativeMethods.sqlite3_column_blob(stmt._sqlite_stmt, index);
+
+      if (bDest == null) return nlen;
+
+      if (nCopied + nStart > bDest.Length) nCopied = bDest.Length - nStart;
+      if (nCopied + nDataOffset > nlen) nCopied = nlen - nDataOffset;
+
+      unsafe {
+	      if (nCopied > 0)
+		      Marshal.Copy((IntPtr)((byte*)ptr + nDataOffset), bDest, nStart, nCopied);
+	      else nCopied = 0;
+      }
+
+      return nCopied;
+    }
+
+    internal override long GetChars(SqliteStatement stmt, int index, int nDataOffset, char[] bDest, int nStart, int nLength)
+    {
+      int nlen;
+      int nCopied = nLength;
+
+      string str = GetText(stmt, index);
+      nlen = str.Length;
+
+      if (bDest == null) return nlen;
+
+      if (nCopied + nStart > bDest.Length) nCopied = bDest.Length - nStart;
+      if (nCopied + nDataOffset > nlen) nCopied = nlen - nDataOffset;
+
+      if (nCopied > 0)
+        str.CopyTo(nDataOffset, bDest, nStart, nCopied);
+      else nCopied = 0;
+
+      return nCopied;
+    }
+
+    internal override bool IsNull(SqliteStatement stmt, int index)
+    {
+      return (ColumnAffinity(stmt, index) == TypeAffinity.Null);
+    }
+
+    internal override int AggregateCount(IntPtr context)
+    {
+      return UnsafeNativeMethods.sqlite3_aggregate_count(context);
+    }
+
+#if MONOTOUCH
+    class FunctionData {
+      public SQLiteCallback Func;
+      public SQLiteCallback FuncStep;
+      public SQLiteFinalCallback FuncFinal;
+    }
+#endif
+
+    internal override void CreateFunction(string strFunction, int nArgs, bool needCollSeq, SQLiteCallback func, SQLiteCallback funcstep, SQLiteFinalCallback funcfinal)
+    {
+      int n;
+
+#if MONOTOUCH
+      var data = new FunctionData();
+      data.Func = func;
+      data.FuncStep = funcstep;
+      data.FuncFinal = funcfinal;
+      SQLiteCallback func_callback = func == null ? null : new SQLiteCallback(scalar_callback);
+      SQLiteCallback funcstep_callback = funcstep == null ? null : new SQLiteCallback(step_callback);
+      SQLiteFinalCallback funcfinal_callback = funcfinal == null ? null : new SQLiteFinalCallback(final_callback);
+
+      IntPtr user_data;
+      user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data));
+      n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 4, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback);
+
+      if (n == 0) {
+        // sqlite3_create_function_v2 will call 'destroy_callback' if it fails, so we need to recreate the gchandle here.
+        user_data = GCHandle.ToIntPtr(GCHandle.Alloc(data));
+        n = UnsafeNativeMethods.sqlite3_create_function_v2(_sql, ToUTF8(strFunction), nArgs, 1, user_data, func_callback, funcstep_callback, funcfinal_callback, destroy_callback);
+      }
+#elif !SQLITE_STANDARD
+      n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 4, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0);
+      if (n == 0) n = UnsafeNativeMethods.sqlite3_create_function_interop(_sql, ToUTF8(strFunction), nArgs, 1, IntPtr.Zero, func, funcstep, funcfinal, (needCollSeq == true) ? 1 : 0);
+#else
+      n = UnsafeNativeMethods.sqlite3_create_function(_sql, ToUTF8(strFunction), nArgs, 4, IntPtr.Zero, func, funcstep, funcfinal);
+      if (n == 0) n = UnsafeNativeMethods.sqlite3_create_function(_sql, ToUTF8(strFunction), nArgs, 1, IntPtr.Zero, func, funcstep, funcfinal);
+#endif
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void CreateCollation(string strCollation, SQLiteCollation func, SQLiteCollation func16, IntPtr user_data)
+    {
+      int n = UnsafeNativeMethods.sqlite3_create_collation(_sql, ToUTF8(strCollation), 2, user_data, func16);
+      if (n == 0) UnsafeNativeMethods.sqlite3_create_collation(_sql, ToUTF8(strCollation), 1, user_data, func);
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+#if MONOTOUCH
+    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))]
+    internal static void scalar_callback(IntPtr context, int nArgs, IntPtr argsptr)
+    {
+      var handle = GCHandle.FromIntPtr (UnsafeNativeMethods.sqlite3_user_data(context));
+      var func = (FunctionData)handle.Target;
+      func.Func(context, nArgs, argsptr);
+    }
+
+    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteCallback))]
+    internal static void step_callback(IntPtr context, int nArgs, IntPtr argsptr)
+    {
+      var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context));
+      var func = (FunctionData)handle.Target;
+      func.FuncStep(context, nArgs, argsptr);
+    }
+
+    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))]
+    internal static void final_callback(IntPtr context)
+    {
+      var handle = GCHandle.FromIntPtr(UnsafeNativeMethods.sqlite3_user_data(context));
+      var func = (FunctionData)handle.Target;
+      func.FuncFinal(context);
+    }
+
+    [MonoTouch.MonoPInvokeCallback(typeof(SQLiteFinalCallback))]
+    internal static void destroy_callback(IntPtr context)
+    {
+      GCHandle.FromIntPtr(context).Free();
+    }
+#endif
+
+    internal override int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, string s1, string s2)
+    {
+#if !SQLITE_STANDARD
+      byte[] b1;
+      byte[] b2;
+      System.Text.Encoding converter = null;
+
+      switch (enc)
+      {
+        case CollationEncodingEnum.UTF8:
+          converter = System.Text.Encoding.UTF8;
+          break;
+        case CollationEncodingEnum.UTF16LE:
+          converter = System.Text.Encoding.Unicode;
+          break;
+        case CollationEncodingEnum.UTF16BE:
+          converter = System.Text.Encoding.BigEndianUnicode;
+          break;
+      }
+
+      b1 = converter.GetBytes(s1);
+      b2 = converter.GetBytes(s2);
+
+      return UnsafeNativeMethods.sqlite3_context_collcompare(context, b1, b1.Length, b2, b2.Length);
+#else
+      throw new NotImplementedException();
+#endif
+    }
+
+    internal override int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, char[] c1, char[] c2)
+    {
+#if !SQLITE_STANDARD
+      byte[] b1;
+      byte[] b2;
+      System.Text.Encoding converter = null;
+
+      switch (enc)
+      {
+        case CollationEncodingEnum.UTF8:
+          converter = System.Text.Encoding.UTF8;
+          break;
+        case CollationEncodingEnum.UTF16LE:
+          converter = System.Text.Encoding.Unicode;
+          break;
+        case CollationEncodingEnum.UTF16BE:
+          converter = System.Text.Encoding.BigEndianUnicode;
+          break;
+      }
+
+      b1 = converter.GetBytes(c1);
+      b2 = converter.GetBytes(c2);
+
+      return UnsafeNativeMethods.sqlite3_context_collcompare(context, b1, b1.Length, b2, b2.Length);
+#else
+      throw new NotImplementedException();
+#endif
+    }
+
+    internal override CollationSequence GetCollationSequence(SqliteFunction func, IntPtr context)
+    {
+#if !SQLITE_STANDARD
+      CollationSequence seq = new CollationSequence();
+      int len;
+      int type;
+      int enc;
+      IntPtr p = UnsafeNativeMethods.sqlite3_context_collseq(context, out type, out enc, out len);
+
+      if (p != null) seq.Name = UTF8ToString(p, len);
+      seq.Type = (CollationTypeEnum)type;
+      seq._func = func;
+      seq.Encoding = (CollationEncodingEnum)enc;
+
+      return seq;
+#else
+      throw new NotImplementedException();
+#endif
+    }
+
+    internal override long GetParamValueBytes(IntPtr p, int nDataOffset, byte[] bDest, int nStart, int nLength)
+    {
+      IntPtr ptr;
+      int nlen;
+      int nCopied = nLength;
+
+      nlen = UnsafeNativeMethods.sqlite3_value_bytes(p);
+      ptr = UnsafeNativeMethods.sqlite3_value_blob(p);
+
+      if (bDest == null) return nlen;
+
+      if (nCopied + nStart > bDest.Length) nCopied = bDest.Length - nStart;
+      if (nCopied + nDataOffset > nlen) nCopied = nlen - nDataOffset;
+
+      unsafe {
+	      if (nCopied > 0)
+		      Marshal.Copy((IntPtr)((byte*)ptr + nDataOffset), bDest, nStart, nCopied);
+	      else nCopied = 0;
+      }
+
+      return nCopied;
+    }
+
+    internal override double GetParamValueDouble(IntPtr ptr)
+    {
+      double value;
+#if !PLATFORM_COMPACTFRAMEWORK
+      value = UnsafeNativeMethods.sqlite3_value_double(ptr);
+#else
+      UnsafeNativeMethods.sqlite3_value_double_interop(ptr, out value);
+#endif
+      return value;
+    }
+
+    internal override int GetParamValueInt32(IntPtr ptr)
+    {
+      return UnsafeNativeMethods.sqlite3_value_int(ptr);
+    }
+
+    internal override long GetParamValueInt64(IntPtr ptr)
+    {
+      Int64 value;
+#if !PLATFORM_COMPACTFRAMEWORK
+      value = UnsafeNativeMethods.sqlite3_value_int64(ptr);
+#else
+      UnsafeNativeMethods.sqlite3_value_int64_interop(ptr, out value);
+#endif
+      return value;
+    }
+
+    internal override string GetParamValueText(IntPtr ptr)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_value_text_interop(ptr, out len), len);
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_value_text(ptr), -1);
+#endif
+    }
+
+    internal override TypeAffinity GetParamValueType(IntPtr ptr)
+    {
+      return UnsafeNativeMethods.sqlite3_value_type(ptr);
+    }
+
+    internal override void ReturnBlob(IntPtr context, byte[] value)
+    {
+      UnsafeNativeMethods.sqlite3_result_blob(context, value, value.Length, (IntPtr)(-1));
+    }
+
+    internal override void ReturnDouble(IntPtr context, double value)
+    {
+#if !PLATFORM_COMPACTFRAMEWORK
+      UnsafeNativeMethods.sqlite3_result_double(context, value);
+#else
+      UnsafeNativeMethods.sqlite3_result_double_interop(context, ref value);
+#endif
+    }
+
+    internal override void ReturnError(IntPtr context, string value)
+    {
+      UnsafeNativeMethods.sqlite3_result_error(context, ToUTF8(value), value.Length);
+    }
+
+    internal override void ReturnInt32(IntPtr context, int value)
+    {
+      UnsafeNativeMethods.sqlite3_result_int(context, value);
+    }
+
+    internal override void ReturnInt64(IntPtr context, long value)
+    {
+#if !PLATFORM_COMPACTFRAMEWORK
+      UnsafeNativeMethods.sqlite3_result_int64(context, value);
+#else
+      UnsafeNativeMethods.sqlite3_result_int64_interop(context, ref value);
+#endif
+    }
+
+    internal override void ReturnNull(IntPtr context)
+    {
+      UnsafeNativeMethods.sqlite3_result_null(context);
+    }
+
+    internal override void ReturnText(IntPtr context, string value)
+    {
+      byte[] b = ToUTF8(value);
+      UnsafeNativeMethods.sqlite3_result_text(context, ToUTF8(value), b.Length - 1, (IntPtr)(-1));
+    }
+
+    internal override IntPtr AggregateContext(IntPtr context)
+    {
+      return UnsafeNativeMethods.sqlite3_aggregate_context(context, 1);
+    }
+
+#if MONOTOUCH
+	internal override void SetPassword(byte[] passwordBytes)
+	{
+		throw new NotImplementedException ();
+	}
+
+	internal override void ChangePassword(byte[] newPasswordBytes)
+	{
+		throw new NotImplementedException ();
+	}
+#else
+    internal override void SetPassword(byte[] passwordBytes)
+    {
+      int n = UnsafeNativeMethods.sqlite3_key(_sql, passwordBytes, passwordBytes.Length);
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override void ChangePassword(byte[] newPasswordBytes)
+    {
+      int n = UnsafeNativeMethods.sqlite3_rekey(_sql, newPasswordBytes, (newPasswordBytes == null) ? 0 : newPasswordBytes.Length);
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+#endif
+		
+#if MONOTOUCH
+    SQLiteUpdateCallback update_callback;
+    SQLiteCommitCallback commit_callback;
+    SQLiteRollbackCallback rollback_callback;
+		
+    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteUpdateCallback))]
+    static void update (IntPtr puser, int type, IntPtr database, IntPtr table, Int64 rowid)
+    {
+      SQLite3 instance = GCHandle.FromIntPtr (puser).Target as SQLite3;
+      instance.update_callback (puser, type, database, table, rowid);
+    }
+			
+    internal override void SetUpdateHook (SQLiteUpdateCallback func)
+    {
+      update_callback = func;
+      if (func == null)
+        UnsafeNativeMethods.sqlite3_update_hook (_sql, null, IntPtr.Zero);
+      else
+        UnsafeNativeMethods.sqlite3_update_hook (_sql, update, GCHandle.ToIntPtr (gch));
+    }
+
+    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteCommitCallback))]
+    static int commit (IntPtr puser)
+    {
+      SQLite3 instance = GCHandle.FromIntPtr (puser).Target as SQLite3;
+      return instance.commit_callback (puser);
+    }
+		
+    internal override void SetCommitHook (SQLiteCommitCallback func)
+    {
+      commit_callback = func;
+      if (func == null)
+        UnsafeNativeMethods.sqlite3_commit_hook (_sql, null, IntPtr.Zero);
+      else
+        UnsafeNativeMethods.sqlite3_commit_hook (_sql, commit, GCHandle.ToIntPtr (gch));
+    }
+
+    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteRollbackCallback))]
+    static void rollback (IntPtr puser)
+    {
+      SQLite3 instance = GCHandle.FromIntPtr (puser).Target as SQLite3;
+      instance.rollback_callback (puser);
+    }
+
+    internal override void SetRollbackHook (SQLiteRollbackCallback func)
+    {
+      rollback_callback = func;
+      if (func == null)
+        UnsafeNativeMethods.sqlite3_rollback_hook (_sql, null, IntPtr.Zero);
+      else
+        UnsafeNativeMethods.sqlite3_rollback_hook (_sql, rollback, GCHandle.ToIntPtr (gch));
+    }
+#else
+    internal override void SetUpdateHook(SQLiteUpdateCallback func)
+    {
+      UnsafeNativeMethods.sqlite3_update_hook(_sql, func, IntPtr.Zero);
+    }
+
+    internal override void SetCommitHook(SQLiteCommitCallback func)
+    {
+      UnsafeNativeMethods.sqlite3_commit_hook(_sql, func, IntPtr.Zero);
+    }
+
+    internal override void SetRollbackHook(SQLiteRollbackCallback func)
+    {
+      UnsafeNativeMethods.sqlite3_rollback_hook(_sql, func, IntPtr.Zero);
+    }
+#endif
+    /// <summary>
+    /// Helper function to retrieve a column of data from an active statement.
+    /// </summary>
+    /// <param name="stmt">The statement being step()'d through</param>
+    /// <param name="index">The column index to retrieve</param>
+    /// <param name="typ">The type of data contained in the column.  If Uninitialized, this function will retrieve the datatype information.</param>
+    /// <returns>Returns the data in the column</returns>
+    internal override object GetValue(SqliteStatement stmt, int index, SQLiteType typ)
+    {
+      if (IsNull(stmt, index)) return DBNull.Value;
+      TypeAffinity aff = typ.Affinity;
+      Type t = null;
+
+      if (typ.Type != DbType.Object)
+      {
+        t = SqliteConvert.SQLiteTypeToType(typ);
+        aff = TypeToAffinity(t);
+      }
+
+      switch (aff)
+      {
+        case TypeAffinity.Blob:
+          if (typ.Type == DbType.Guid && typ.Affinity == TypeAffinity.Text)
+            return new Guid(GetText(stmt, index));
+
+          int n = (int)GetBytes(stmt, index, 0, null, 0, 0);
+          byte[] b = new byte[n];
+          GetBytes(stmt, index, 0, b, 0, n);
+
+          if (typ.Type == DbType.Guid && n == 16)
+            return new Guid(b);
+
+          return b;
+        case TypeAffinity.DateTime:
+          return GetDateTime(stmt, index);
+        case TypeAffinity.Double:
+          if (t == null) return GetDouble(stmt, index);
+          else
+            return Convert.ChangeType(GetDouble(stmt, index), t, null);
+        case TypeAffinity.Int64:
+          if (t == null) return GetInt64(stmt, index);
+          else
+            return Convert.ChangeType(GetInt64(stmt, index), t, null);
+        default:
+          return GetText(stmt, index);
+      }
+    }
+
+    internal override int GetCursorForTable(SqliteStatement stmt, int db, int rootPage)
+    {
+#if !SQLITE_STANDARD
+      return UnsafeNativeMethods.sqlite3_table_cursor(stmt._sqlite_stmt, db, rootPage);
+#else
+      return -1;
+#endif
+    }
+
+    internal override long GetRowIdForCursor(SqliteStatement stmt, int cursor)
+    {
+#if !SQLITE_STANDARD
+      long rowid;
+      int rc = UnsafeNativeMethods.sqlite3_cursor_rowid(stmt._sqlite_stmt, cursor, out rowid);
+      if (rc == 0) return rowid;
+
+      return 0;
+#else
+      return 0;
+#endif
+    }
+
+    internal override void GetIndexColumnExtendedInfo(string database, string index, string column, out int sortMode, out int onError, out string collationSequence)
+    {
+#if !SQLITE_STANDARD
+      IntPtr coll;
+      int colllen;
+      int rc;
+
+      rc = UnsafeNativeMethods.sqlite3_index_column_info_interop(_sql, ToUTF8(database), ToUTF8(index), ToUTF8(column), out sortMode, out onError, out coll, out colllen);
+      if (rc != 0) throw new SqliteException(rc, "");
+
+      collationSequence = UTF8ToString(coll, colllen);
+#else
+      sortMode = 0;
+      onError = 2;
+      collationSequence = "BINARY";
+#endif
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3_UTF16.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3_UTF16.cs
@@ -1,166 +1,166 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Runtime.InteropServices;
-
-  /// <summary>
-  /// Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode)
-  /// </summary>
-  internal class SQLite3_UTF16 : SQLite3
-  {
-    internal SQLite3_UTF16(SQLiteDateFormats fmt)
-      : base(fmt)
-    {
-    }
-
-    /// <summary>
-    /// Overrides SqliteConvert.ToString() to marshal UTF-16 strings instead of UTF-8
-    /// </summary>
-    /// <param name="b">A pointer to a UTF-16 string</param>
-    /// <param name="nbytelen">The length (IN BYTES) of the string</param>
-    /// <returns>A .NET string</returns>
-    public override string ToString(IntPtr b, int nbytelen)
-    {
-      return UTF16ToString(b, nbytelen);
-    }
-
-    public static string UTF16ToString(IntPtr b, int nbytelen)
-    {
-      if (nbytelen == 0 || b == IntPtr.Zero) return "";
-
-      if (nbytelen == -1)
-        return Marshal.PtrToStringUni(b);
-      else
-        return Marshal.PtrToStringUni(b, nbytelen / 2);
-    }
-
-    internal override void Open(string strFilename, SQLiteOpenFlagsEnum flags, int maxPoolSize, bool usePool)
-    {
-      if (_sql != null) return;
-
-      _usePool = usePool;
-      if (usePool)
-      {
-        _fileName = strFilename;
-        _sql = SqliteConnectionPool.Remove(strFilename, maxPoolSize, out _poolVersion);
-      }
-
-      if (_sql == null)
-      {
-        IntPtr db;
-
-#if !SQLITE_STANDARD
-        int n = UnsafeNativeMethods.sqlite3_open16_interop(ToUTF8(strFilename), (int)flags, out db);
-#else
-        if ((flags & SQLiteOpenFlagsEnum.Create) == 0 && System.IO.File.Exists(strFilename) == false)
-          throw new SqliteException((int)SQLiteErrorCode.CantOpen, strFilename);
-
-        int n = UnsafeNativeMethods.sqlite3_open16(strFilename, out db);
-#endif
-        if (n > 0) throw new SqliteException(n, null);
-
-        _sql = db;
-      }
-      _functionsArray = SqliteFunction.BindFunctions(this);
-    }
-
-    internal override void Bind_DateTime(SqliteStatement stmt, int index, DateTime dt)
-    {
-      Bind_Text(stmt, index, ToString(dt));
-    }
-
-    internal override void Bind_Text(SqliteStatement stmt, int index, string value)
-    {
-      int n = UnsafeNativeMethods.sqlite3_bind_text16(stmt._sqlite_stmt, index, value, value.Length * 2, (IntPtr)(-1));
-      if (n > 0) throw new SqliteException(n, SQLiteLastError());
-    }
-
-    internal override DateTime GetDateTime(SqliteStatement stmt, int index)
-    {
-      return ToDateTime(GetText(stmt, index));
-    }
-
-    internal override string ColumnName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_name16_interop(stmt._sqlite_stmt, index, out len), len);
-#else
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_name16(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override string GetText(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_text16_interop(stmt._sqlite_stmt, index, out len), len);
-#else
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_text16(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override string ColumnOriginalName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_origin_name16_interop(stmt._sqlite_stmt, index, out len), len);
-#elif MONOTOUCH
-      throw new NotImplementedException ();
-#else
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_origin_name16(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override string ColumnDatabaseName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_database_name16_interop(stmt._sqlite_stmt, index, out len), len);
-#elif MONOTOUCH
-      throw new NotImplementedException ();
-#else
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_database_name16(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override string ColumnTableName(SqliteStatement stmt, int index)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_table_name16_interop(stmt._sqlite_stmt, index, out len), len);
-#elif MONOTOUCH
-      throw new NotImplementedException ();
-#else
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_table_name16(stmt._sqlite_stmt, index), -1);
-#endif
-    }
-
-    internal override string GetParamValueText(IntPtr ptr)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_value_text16_interop(ptr, out len), len);
-#else
-      return UTF16ToString(UnsafeNativeMethods.sqlite3_value_text16(ptr), -1);
-#endif
-    }
-
-    internal override void ReturnError(IntPtr context, string value)
-    {
-      UnsafeNativeMethods.sqlite3_result_error16(context, value, value.Length * 2);
-    }
-
-    internal override void ReturnText(IntPtr context, string value)
-    {
-      UnsafeNativeMethods.sqlite3_result_text16(context, value, value.Length * 2, (IntPtr)(-1));
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Runtime.InteropServices;
+
+  /// <summary>
+  /// Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode)
+  /// </summary>
+  internal class SQLite3_UTF16 : SQLite3
+  {
+    internal SQLite3_UTF16(SQLiteDateFormats fmt)
+      : base(fmt)
+    {
+    }
+
+    /// <summary>
+    /// Overrides SqliteConvert.ToString() to marshal UTF-16 strings instead of UTF-8
+    /// </summary>
+    /// <param name="b">A pointer to a UTF-16 string</param>
+    /// <param name="nbytelen">The length (IN BYTES) of the string</param>
+    /// <returns>A .NET string</returns>
+    public override string ToString(IntPtr b, int nbytelen)
+    {
+      return UTF16ToString(b, nbytelen);
+    }
+
+    public static string UTF16ToString(IntPtr b, int nbytelen)
+    {
+      if (nbytelen == 0 || b == IntPtr.Zero) return "";
+
+      if (nbytelen == -1)
+        return Marshal.PtrToStringUni(b);
+      else
+        return Marshal.PtrToStringUni(b, nbytelen / 2);
+    }
+
+    internal override void Open(string strFilename, SQLiteOpenFlagsEnum flags, int maxPoolSize, bool usePool)
+    {
+      if (_sql != null) return;
+
+      _usePool = usePool;
+      if (usePool)
+      {
+        _fileName = strFilename;
+        _sql = SqliteConnectionPool.Remove(strFilename, maxPoolSize, out _poolVersion);
+      }
+
+      if (_sql == null)
+      {
+        IntPtr db;
+
+#if !SQLITE_STANDARD
+        int n = UnsafeNativeMethods.sqlite3_open16_interop(ToUTF8(strFilename), (int)flags, out db);
+#else
+        if ((flags & SQLiteOpenFlagsEnum.Create) == 0 && System.IO.File.Exists(strFilename) == false)
+          throw new SqliteException((int)SQLiteErrorCode.CantOpen, strFilename);
+
+        int n = UnsafeNativeMethods.sqlite3_open16(strFilename, out db);
+#endif
+        if (n > 0) throw new SqliteException(n, null);
+
+        _sql = db;
+      }
+      _functionsArray = SqliteFunction.BindFunctions(this);
+    }
+
+    internal override void Bind_DateTime(SqliteStatement stmt, int index, DateTime dt)
+    {
+      Bind_Text(stmt, index, ToString(dt));
+    }
+
+    internal override void Bind_Text(SqliteStatement stmt, int index, string value)
+    {
+      int n = UnsafeNativeMethods.sqlite3_bind_text16(stmt._sqlite_stmt, index, value, value.Length * 2, (IntPtr)(-1));
+      if (n > 0) throw new SqliteException(n, SQLiteLastError());
+    }
+
+    internal override DateTime GetDateTime(SqliteStatement stmt, int index)
+    {
+      return ToDateTime(GetText(stmt, index));
+    }
+
+    internal override string ColumnName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_name16_interop(stmt._sqlite_stmt, index, out len), len);
+#else
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_name16(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override string GetText(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_text16_interop(stmt._sqlite_stmt, index, out len), len);
+#else
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_text16(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override string ColumnOriginalName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_origin_name16_interop(stmt._sqlite_stmt, index, out len), len);
+#elif MONOTOUCH
+      throw new NotImplementedException ();
+#else
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_origin_name16(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override string ColumnDatabaseName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_database_name16_interop(stmt._sqlite_stmt, index, out len), len);
+#elif MONOTOUCH
+      throw new NotImplementedException ();
+#else
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_database_name16(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override string ColumnTableName(SqliteStatement stmt, int index)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_table_name16_interop(stmt._sqlite_stmt, index, out len), len);
+#elif MONOTOUCH
+      throw new NotImplementedException ();
+#else
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_column_table_name16(stmt._sqlite_stmt, index), -1);
+#endif
+    }
+
+    internal override string GetParamValueText(IntPtr ptr)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_value_text16_interop(ptr, out len), len);
+#else
+      return UTF16ToString(UnsafeNativeMethods.sqlite3_value_text16(ptr), -1);
+#endif
+    }
+
+    internal override void ReturnError(IntPtr context, string value)
+    {
+      UnsafeNativeMethods.sqlite3_result_error16(context, value, value.Length * 2);
+    }
+
+    internal override void ReturnText(IntPtr context, string value)
+    {
+      UnsafeNativeMethods.sqlite3_result_text16(context, value, value.Length * 2, (IntPtr)(-1));
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteBase.cs
@@ -1,277 +1,277 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Runtime.InteropServices;
-  using System.Collections.Generic;
-
-  /// <summary>
-  /// This internal class provides the foundation of SQLite support.  It defines all the abstract members needed to implement
-  /// a SQLite data provider, and inherits from SqliteConvert which allows for simple translations of string to and from SQLite.
-  /// </summary>
-  internal abstract class SQLiteBase : SqliteConvert, IDisposable
-  {
-    internal SQLiteBase(SQLiteDateFormats fmt)
-      : base(fmt) { }
-
-    static internal object _lock = new object();
-
-    /// <summary>
-    /// Returns a string representing the active version of SQLite
-    /// </summary>
-    internal abstract string Version { get; }
-    /// <summary>
-    /// Returns the number of changes the last executing insert/update caused.
-    /// </summary>
-    internal abstract int Changes { get; }
-    /// <summary>
-    /// Opens a database.
-    /// </summary>
-    /// <remarks>
-    /// Implementers should call SqliteFunction.BindFunctions() and save the array after opening a connection
-    /// to bind all attributed user-defined functions and collating sequences to the new connection.
-    /// </remarks>
-    /// <param name="strFilename">The filename of the database to open.  SQLite automatically creates it if it doesn't exist.</param>
-    /// <param name="flags">The open flags to use when creating the connection</param>
-    /// <param name="maxPoolSize">The maximum size of the pool for the given filename</param>
-    /// <param name="usePool">If true, the connection can be pulled from the connection pool</param>
-    internal abstract void Open(string strFilename, SQLiteOpenFlagsEnum flags, int maxPoolSize, bool usePool);
-    /// <summary>
-    /// Closes the currently-open database.
-    /// </summary>
-    /// <remarks>
-    /// After the database has been closed implemeters should call SqliteFunction.UnbindFunctions() to deallocate all interop allocated
-    /// memory associated with the user-defined functions and collating sequences tied to the closed connection.
-    /// </remarks>
-    internal abstract void Close();
-    /// <summary>
-    /// Sets the busy timeout on the connection.  SqliteCommand will call this before executing any command.
-    /// </summary>
-    /// <param name="nTimeoutMS">The number of milliseconds to wait before returning SQLITE_BUSY</param>
-    internal abstract void SetTimeout(int nTimeoutMS);
-    /// <summary>
-    /// Returns the text of the last error issued by SQLite
-    /// </summary>
-    /// <returns></returns>
-    internal abstract string SQLiteLastError();
-
-    /// <summary>
-    /// When pooling is enabled, force this connection to be disposed rather than returned to the pool
-    /// </summary>
-    internal abstract void ClearPool();
-
-    /// <summary>
-    /// Prepares a SQL statement for execution.
-    /// </summary>
-    /// <param name="cnn">The source connection preparing the command.  Can be null for any caller except LINQ</param>
-    /// <param name="strSql">The SQL command text to prepare</param>
-    /// <param name="previous">The previous statement in a multi-statement command, or null if no previous statement exists</param>
-    /// <param name="timeoutMS">The timeout to wait before aborting the prepare</param>
-    /// <param name="strRemain">The remainder of the statement that was not processed.  Each call to prepare parses the
-    /// SQL up to to either the end of the text or to the first semi-colon delimiter.  The remaining text is returned
-    /// here for a subsequent call to Prepare() until all the text has been processed.</param>
-    /// <returns>Returns an initialized SqliteStatement.</returns>
-    internal abstract SqliteStatement Prepare(SqliteConnection cnn, string strSql, SqliteStatement previous, uint timeoutMS, out string strRemain);
-    /// <summary>
-    /// Steps through a prepared statement.
-    /// </summary>
-    /// <param name="stmt">The SqliteStatement to step through</param>
-    /// <returns>True if a row was returned, False if not.</returns>
-    internal abstract bool Step(SqliteStatement stmt);
-    /// <summary>
-    /// Resets a prepared statement so it can be executed again.  If the error returned is SQLITE_SCHEMA, 
-    /// transparently attempt to rebuild the SQL statement and throw an error if that was not possible.
-    /// </summary>
-    /// <param name="stmt">The statement to reset</param>
-    /// <returns>Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock</returns>
-    internal abstract int Reset(SqliteStatement stmt);
-    internal abstract void Cancel();
-
-    internal abstract void Bind_Double(SqliteStatement stmt, int index, double value);
-    internal abstract void Bind_Int32(SqliteStatement stmt, int index, Int32 value);
-    internal abstract void Bind_Int64(SqliteStatement stmt, int index, Int64 value);
-    internal abstract void Bind_Text(SqliteStatement stmt, int index, string value);
-    internal abstract void Bind_Blob(SqliteStatement stmt, int index, byte[] blobData);
-    internal abstract void Bind_DateTime(SqliteStatement stmt, int index, DateTime dt);
-    internal abstract void Bind_Null(SqliteStatement stmt, int index);
-
-    internal abstract int Bind_ParamCount(SqliteStatement stmt);
-    internal abstract string Bind_ParamName(SqliteStatement stmt, int index);
-    internal abstract int Bind_ParamIndex(SqliteStatement stmt, string paramName);
-
-    internal abstract int ColumnCount(SqliteStatement stmt);
-    internal abstract string ColumnName(SqliteStatement stmt, int index);
-    internal abstract TypeAffinity ColumnAffinity(SqliteStatement stmt, int index);
-    internal abstract string ColumnType(SqliteStatement stmt, int index, out TypeAffinity nAffinity);
-    internal abstract int ColumnIndex(SqliteStatement stmt, string columnName);
-    internal abstract string ColumnOriginalName(SqliteStatement stmt, int index);
-    internal abstract string ColumnDatabaseName(SqliteStatement stmt, int index);
-    internal abstract string ColumnTableName(SqliteStatement stmt, int index);
-    internal abstract void ColumnMetaData(string dataBase, string table, string column, out string dataType, out string collateSequence, out bool notNull, out bool primaryKey, out bool autoIncrement);
-    internal abstract void GetIndexColumnExtendedInfo(string database, string index, string column, out int sortMode, out int onError, out string collationSequence);
-
-    internal abstract double GetDouble(SqliteStatement stmt, int index);
-    internal abstract Int32 GetInt32(SqliteStatement stmt, int index);
-    internal abstract Int64 GetInt64(SqliteStatement stmt, int index);
-    internal abstract string GetText(SqliteStatement stmt, int index);
-    internal abstract long GetBytes(SqliteStatement stmt, int index, int nDataoffset, byte[] bDest, int nStart, int nLength);
-    internal abstract long GetChars(SqliteStatement stmt, int index, int nDataoffset, char[] bDest, int nStart, int nLength);
-    internal abstract DateTime GetDateTime(SqliteStatement stmt, int index);
-    internal abstract bool IsNull(SqliteStatement stmt, int index);
-
-    internal abstract void CreateCollation(string strCollation, SQLiteCollation func, SQLiteCollation func16, IntPtr user_data);
-    internal abstract void CreateFunction(string strFunction, int nArgs, bool needCollSeq, SQLiteCallback func, SQLiteCallback funcstep, SQLiteFinalCallback funcfinal);
-    internal abstract CollationSequence GetCollationSequence(SqliteFunction func, IntPtr context);
-    internal abstract int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, string s1, string s2);
-    internal abstract int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, char[] c1, char[] c2);
-
-    internal abstract int AggregateCount(IntPtr context);
-    internal abstract IntPtr AggregateContext(IntPtr context);
-
-    internal abstract long GetParamValueBytes(IntPtr ptr, int nDataOffset, byte[] bDest, int nStart, int nLength);
-    internal abstract double GetParamValueDouble(IntPtr ptr);
-    internal abstract int GetParamValueInt32(IntPtr ptr);
-    internal abstract Int64 GetParamValueInt64(IntPtr ptr);
-    internal abstract string GetParamValueText(IntPtr ptr);
-    internal abstract TypeAffinity GetParamValueType(IntPtr ptr);
-
-    internal abstract void ReturnBlob(IntPtr context, byte[] value);
-    internal abstract void ReturnDouble(IntPtr context, double value);
-    internal abstract void ReturnError(IntPtr context, string value);
-    internal abstract void ReturnInt32(IntPtr context, Int32 value);
-    internal abstract void ReturnInt64(IntPtr context, Int64 value);
-    internal abstract void ReturnNull(IntPtr context);
-    internal abstract void ReturnText(IntPtr context, string value);
-
-    internal abstract void SetPassword(byte[] passwordBytes);
-    internal abstract void ChangePassword(byte[] newPasswordBytes);
-
-    internal abstract void SetUpdateHook(SQLiteUpdateCallback func);
-    internal abstract void SetCommitHook(SQLiteCommitCallback func);
-    internal abstract void SetRollbackHook(SQLiteRollbackCallback func);
-
-    internal abstract int GetCursorForTable(SqliteStatement stmt, int database, int rootPage);
-    internal abstract long GetRowIdForCursor(SqliteStatement stmt, int cursor);
-
-    internal abstract object GetValue(SqliteStatement stmt, int index, SQLiteType typ);
-
-    protected virtual void Dispose(bool bDisposing)
-    {
-    }
-
-    public void Dispose()
-    {
-      Dispose(true);
-    }
-
-    // These statics are here for lack of a better place to put them.
-    // They exist here because they are called during the finalization of
-    // a SqliteStatementHandle, SqliteConnectionHandle, and SqliteFunctionCookieHandle.
-    // Therefore these functions have to be static, and have to be low-level.
-
-    internal static string SQLiteLastError(SqliteConnectionHandle db)
-    {
-#if !SQLITE_STANDARD
-      int len;
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_errmsg_interop(db, out len), len);
-#else
-      return UTF8ToString(UnsafeNativeMethods.sqlite3_errmsg(db), -1);
-#endif
-    }
-
-    internal static void FinalizeStatement(SqliteStatementHandle stmt)
-    {
-      lock (_lock)
-      {
-#if !SQLITE_STANDARD
-        int n = UnsafeNativeMethods.sqlite3_finalize_interop(stmt);
-#else
-      int n = UnsafeNativeMethods.sqlite3_finalize(stmt);
-#endif
-        if (n > 0) throw new SqliteException(n, null);
-      }
-    }
-
-    internal static void CloseConnection(SqliteConnectionHandle db)
-    {
-      lock (_lock)
-      {
-#if !SQLITE_STANDARD
-        int n = UnsafeNativeMethods.sqlite3_close_interop(db);
-#else
-        ResetConnection(db);
-        int n;
-        if (UnsafeNativeMethods.use_sqlite3_close_v2) {
-          n = UnsafeNativeMethods.sqlite3_close_v2(db);
-        } else {
-          n = UnsafeNativeMethods.sqlite3_close(db);
-        }
-#endif
-        if (n > 0) throw new SqliteException(n, SQLiteLastError(db));
-      }
-    }
-
-    internal static void ResetConnection(SqliteConnectionHandle db)
-    {
-      lock (_lock)
-      {
-        IntPtr stmt = IntPtr.Zero;
-
-        do
-        {
-          stmt = UnsafeNativeMethods.sqlite3_next_stmt(db, stmt);
-          if (stmt != IntPtr.Zero)
-          {
-#if !SQLITE_STANDARD
-            UnsafeNativeMethods.sqlite3_reset_interop(stmt);
-#else
-          UnsafeNativeMethods.sqlite3_reset(stmt);
-#endif
-          }
-        } while (stmt != IntPtr.Zero);
-
-        // Not overly concerned with the return value from a rollback.
-        UnsafeNativeMethods.sqlite3_exec(db, ToUTF8("ROLLBACK"), IntPtr.Zero, IntPtr.Zero, out stmt);
-        // but free the error message if any!
-        if (stmt != IntPtr.Zero)
-          UnsafeNativeMethods.sqlite3_free (stmt);
-      }
-    }
-  }
-
-  internal interface ISQLiteSchemaExtensions
-  {
-    void BuildTempSchema(SqliteConnection cnn);
-  }
-
-  [Flags]
-  internal enum SQLiteOpenFlagsEnum
-  {
-    None = 0,
-    ReadOnly = 0x01,
-    ReadWrite = 0x02,
-    Create = 0x04,
-    //SharedCache = 0x01000000,
-    Default = 0x06,
-
-    // iOS Specific
-    FileProtectionComplete = 0x00100000,
-    FileProtectionCompleteUnlessOpen = 0x00200000,
-    FileProtectionCompleteUntilFirstUserAuthentication = 0x00300000,
-    FileProtectionNone = 0x00400000
-  }
-
-  // subset of the options available in http://www.sqlite.org/c3ref/c_config_getmalloc.html
-  public enum SQLiteConfig {
-    SingleThread = 1,
-    MultiThread = 2,
-    Serialized = 3,
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Runtime.InteropServices;
+  using System.Collections.Generic;
+
+  /// <summary>
+  /// This internal class provides the foundation of SQLite support.  It defines all the abstract members needed to implement
+  /// a SQLite data provider, and inherits from SqliteConvert which allows for simple translations of string to and from SQLite.
+  /// </summary>
+  internal abstract class SQLiteBase : SqliteConvert, IDisposable
+  {
+    internal SQLiteBase(SQLiteDateFormats fmt)
+      : base(fmt) { }
+
+    static internal object _lock = new object();
+
+    /// <summary>
+    /// Returns a string representing the active version of SQLite
+    /// </summary>
+    internal abstract string Version { get; }
+    /// <summary>
+    /// Returns the number of changes the last executing insert/update caused.
+    /// </summary>
+    internal abstract int Changes { get; }
+    /// <summary>
+    /// Opens a database.
+    /// </summary>
+    /// <remarks>
+    /// Implementers should call SqliteFunction.BindFunctions() and save the array after opening a connection
+    /// to bind all attributed user-defined functions and collating sequences to the new connection.
+    /// </remarks>
+    /// <param name="strFilename">The filename of the database to open.  SQLite automatically creates it if it doesn't exist.</param>
+    /// <param name="flags">The open flags to use when creating the connection</param>
+    /// <param name="maxPoolSize">The maximum size of the pool for the given filename</param>
+    /// <param name="usePool">If true, the connection can be pulled from the connection pool</param>
+    internal abstract void Open(string strFilename, SQLiteOpenFlagsEnum flags, int maxPoolSize, bool usePool);
+    /// <summary>
+    /// Closes the currently-open database.
+    /// </summary>
+    /// <remarks>
+    /// After the database has been closed implemeters should call SqliteFunction.UnbindFunctions() to deallocate all interop allocated
+    /// memory associated with the user-defined functions and collating sequences tied to the closed connection.
+    /// </remarks>
+    internal abstract void Close();
+    /// <summary>
+    /// Sets the busy timeout on the connection.  SqliteCommand will call this before executing any command.
+    /// </summary>
+    /// <param name="nTimeoutMS">The number of milliseconds to wait before returning SQLITE_BUSY</param>
+    internal abstract void SetTimeout(int nTimeoutMS);
+    /// <summary>
+    /// Returns the text of the last error issued by SQLite
+    /// </summary>
+    /// <returns></returns>
+    internal abstract string SQLiteLastError();
+
+    /// <summary>
+    /// When pooling is enabled, force this connection to be disposed rather than returned to the pool
+    /// </summary>
+    internal abstract void ClearPool();
+
+    /// <summary>
+    /// Prepares a SQL statement for execution.
+    /// </summary>
+    /// <param name="cnn">The source connection preparing the command.  Can be null for any caller except LINQ</param>
+    /// <param name="strSql">The SQL command text to prepare</param>
+    /// <param name="previous">The previous statement in a multi-statement command, or null if no previous statement exists</param>
+    /// <param name="timeoutMS">The timeout to wait before aborting the prepare</param>
+    /// <param name="strRemain">The remainder of the statement that was not processed.  Each call to prepare parses the
+    /// SQL up to to either the end of the text or to the first semi-colon delimiter.  The remaining text is returned
+    /// here for a subsequent call to Prepare() until all the text has been processed.</param>
+    /// <returns>Returns an initialized SqliteStatement.</returns>
+    internal abstract SqliteStatement Prepare(SqliteConnection cnn, string strSql, SqliteStatement previous, uint timeoutMS, out string strRemain);
+    /// <summary>
+    /// Steps through a prepared statement.
+    /// </summary>
+    /// <param name="stmt">The SqliteStatement to step through</param>
+    /// <returns>True if a row was returned, False if not.</returns>
+    internal abstract bool Step(SqliteStatement stmt);
+    /// <summary>
+    /// Resets a prepared statement so it can be executed again.  If the error returned is SQLITE_SCHEMA, 
+    /// transparently attempt to rebuild the SQL statement and throw an error if that was not possible.
+    /// </summary>
+    /// <param name="stmt">The statement to reset</param>
+    /// <returns>Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock</returns>
+    internal abstract int Reset(SqliteStatement stmt);
+    internal abstract void Cancel();
+
+    internal abstract void Bind_Double(SqliteStatement stmt, int index, double value);
+    internal abstract void Bind_Int32(SqliteStatement stmt, int index, Int32 value);
+    internal abstract void Bind_Int64(SqliteStatement stmt, int index, Int64 value);
+    internal abstract void Bind_Text(SqliteStatement stmt, int index, string value);
+    internal abstract void Bind_Blob(SqliteStatement stmt, int index, byte[] blobData);
+    internal abstract void Bind_DateTime(SqliteStatement stmt, int index, DateTime dt);
+    internal abstract void Bind_Null(SqliteStatement stmt, int index);
+
+    internal abstract int Bind_ParamCount(SqliteStatement stmt);
+    internal abstract string Bind_ParamName(SqliteStatement stmt, int index);
+    internal abstract int Bind_ParamIndex(SqliteStatement stmt, string paramName);
+
+    internal abstract int ColumnCount(SqliteStatement stmt);
+    internal abstract string ColumnName(SqliteStatement stmt, int index);
+    internal abstract TypeAffinity ColumnAffinity(SqliteStatement stmt, int index);
+    internal abstract string ColumnType(SqliteStatement stmt, int index, out TypeAffinity nAffinity);
+    internal abstract int ColumnIndex(SqliteStatement stmt, string columnName);
+    internal abstract string ColumnOriginalName(SqliteStatement stmt, int index);
+    internal abstract string ColumnDatabaseName(SqliteStatement stmt, int index);
+    internal abstract string ColumnTableName(SqliteStatement stmt, int index);
+    internal abstract void ColumnMetaData(string dataBase, string table, string column, out string dataType, out string collateSequence, out bool notNull, out bool primaryKey, out bool autoIncrement);
+    internal abstract void GetIndexColumnExtendedInfo(string database, string index, string column, out int sortMode, out int onError, out string collationSequence);
+
+    internal abstract double GetDouble(SqliteStatement stmt, int index);
+    internal abstract Int32 GetInt32(SqliteStatement stmt, int index);
+    internal abstract Int64 GetInt64(SqliteStatement stmt, int index);
+    internal abstract string GetText(SqliteStatement stmt, int index);
+    internal abstract long GetBytes(SqliteStatement stmt, int index, int nDataoffset, byte[] bDest, int nStart, int nLength);
+    internal abstract long GetChars(SqliteStatement stmt, int index, int nDataoffset, char[] bDest, int nStart, int nLength);
+    internal abstract DateTime GetDateTime(SqliteStatement stmt, int index);
+    internal abstract bool IsNull(SqliteStatement stmt, int index);
+
+    internal abstract void CreateCollation(string strCollation, SQLiteCollation func, SQLiteCollation func16, IntPtr user_data);
+    internal abstract void CreateFunction(string strFunction, int nArgs, bool needCollSeq, SQLiteCallback func, SQLiteCallback funcstep, SQLiteFinalCallback funcfinal);
+    internal abstract CollationSequence GetCollationSequence(SqliteFunction func, IntPtr context);
+    internal abstract int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, string s1, string s2);
+    internal abstract int ContextCollateCompare(CollationEncodingEnum enc, IntPtr context, char[] c1, char[] c2);
+
+    internal abstract int AggregateCount(IntPtr context);
+    internal abstract IntPtr AggregateContext(IntPtr context);
+
+    internal abstract long GetParamValueBytes(IntPtr ptr, int nDataOffset, byte[] bDest, int nStart, int nLength);
+    internal abstract double GetParamValueDouble(IntPtr ptr);
+    internal abstract int GetParamValueInt32(IntPtr ptr);
+    internal abstract Int64 GetParamValueInt64(IntPtr ptr);
+    internal abstract string GetParamValueText(IntPtr ptr);
+    internal abstract TypeAffinity GetParamValueType(IntPtr ptr);
+
+    internal abstract void ReturnBlob(IntPtr context, byte[] value);
+    internal abstract void ReturnDouble(IntPtr context, double value);
+    internal abstract void ReturnError(IntPtr context, string value);
+    internal abstract void ReturnInt32(IntPtr context, Int32 value);
+    internal abstract void ReturnInt64(IntPtr context, Int64 value);
+    internal abstract void ReturnNull(IntPtr context);
+    internal abstract void ReturnText(IntPtr context, string value);
+
+    internal abstract void SetPassword(byte[] passwordBytes);
+    internal abstract void ChangePassword(byte[] newPasswordBytes);
+
+    internal abstract void SetUpdateHook(SQLiteUpdateCallback func);
+    internal abstract void SetCommitHook(SQLiteCommitCallback func);
+    internal abstract void SetRollbackHook(SQLiteRollbackCallback func);
+
+    internal abstract int GetCursorForTable(SqliteStatement stmt, int database, int rootPage);
+    internal abstract long GetRowIdForCursor(SqliteStatement stmt, int cursor);
+
+    internal abstract object GetValue(SqliteStatement stmt, int index, SQLiteType typ);
+
+    protected virtual void Dispose(bool bDisposing)
+    {
+    }
+
+    public void Dispose()
+    {
+      Dispose(true);
+    }
+
+    // These statics are here for lack of a better place to put them.
+    // They exist here because they are called during the finalization of
+    // a SqliteStatementHandle, SqliteConnectionHandle, and SqliteFunctionCookieHandle.
+    // Therefore these functions have to be static, and have to be low-level.
+
+    internal static string SQLiteLastError(SqliteConnectionHandle db)
+    {
+#if !SQLITE_STANDARD
+      int len;
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_errmsg_interop(db, out len), len);
+#else
+      return UTF8ToString(UnsafeNativeMethods.sqlite3_errmsg(db), -1);
+#endif
+    }
+
+    internal static void FinalizeStatement(SqliteStatementHandle stmt)
+    {
+      lock (_lock)
+      {
+#if !SQLITE_STANDARD
+        int n = UnsafeNativeMethods.sqlite3_finalize_interop(stmt);
+#else
+      int n = UnsafeNativeMethods.sqlite3_finalize(stmt);
+#endif
+        if (n > 0) throw new SqliteException(n, null);
+      }
+    }
+
+    internal static void CloseConnection(SqliteConnectionHandle db)
+    {
+      lock (_lock)
+      {
+#if !SQLITE_STANDARD
+        int n = UnsafeNativeMethods.sqlite3_close_interop(db);
+#else
+        ResetConnection(db);
+        int n;
+        if (UnsafeNativeMethods.use_sqlite3_close_v2) {
+          n = UnsafeNativeMethods.sqlite3_close_v2(db);
+        } else {
+          n = UnsafeNativeMethods.sqlite3_close(db);
+        }
+#endif
+        if (n > 0) throw new SqliteException(n, SQLiteLastError(db));
+      }
+    }
+
+    internal static void ResetConnection(SqliteConnectionHandle db)
+    {
+      lock (_lock)
+      {
+        IntPtr stmt = IntPtr.Zero;
+
+        do
+        {
+          stmt = UnsafeNativeMethods.sqlite3_next_stmt(db, stmt);
+          if (stmt != IntPtr.Zero)
+          {
+#if !SQLITE_STANDARD
+            UnsafeNativeMethods.sqlite3_reset_interop(stmt);
+#else
+          UnsafeNativeMethods.sqlite3_reset(stmt);
+#endif
+          }
+        } while (stmt != IntPtr.Zero);
+
+        // Not overly concerned with the return value from a rollback.
+        UnsafeNativeMethods.sqlite3_exec(db, ToUTF8("ROLLBACK"), IntPtr.Zero, IntPtr.Zero, out stmt);
+        // but free the error message if any!
+        if (stmt != IntPtr.Zero)
+          UnsafeNativeMethods.sqlite3_free (stmt);
+      }
+    }
+  }
+
+  internal interface ISQLiteSchemaExtensions
+  {
+    void BuildTempSchema(SqliteConnection cnn);
+  }
+
+  [Flags]
+  internal enum SQLiteOpenFlagsEnum
+  {
+    None = 0,
+    ReadOnly = 0x01,
+    ReadWrite = 0x02,
+    Create = 0x04,
+    //SharedCache = 0x01000000,
+    Default = 0x06,
+
+    // iOS Specific
+    FileProtectionComplete = 0x00100000,
+    FileProtectionCompleteUnlessOpen = 0x00200000,
+    FileProtectionCompleteUntilFirstUserAuthentication = 0x00300000,
+    FileProtectionNone = 0x00400000
+  }
+
+  // subset of the options available in http://www.sqlite.org/c3ref/c_config_getmalloc.html
+  public enum SQLiteConfig {
+    SingleThread = 1,
+    MultiThread = 2,
+    Serialized = 3,
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteCommand.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteCommand.cs
@@ -1,643 +1,643 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Collections.Generic;
-  using System.ComponentModel;
-
-  /// <summary>
-  /// SQLite implementation of DbCommand.
-  /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-  [Designer("SQLite.Designer.SqliteCommandDesigner, SQLite.Designer, Version=1.0.36.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"), ToolboxItem(true)]
-#endif
-  public sealed class SqliteCommand : DbCommand, ICloneable
-  {
-    /// <summary>
-    /// The command text this command is based on
-    /// </summary>
-    private string _commandText;
-    /// <summary>
-    /// The connection the command is associated with
-    /// </summary>
-    private SqliteConnection _cnn;
-    /// <summary>
-    /// The version of the connection the command is associated with
-    /// </summary>
-    private long _version;
-    /// <summary>
-    /// Indicates whether or not a DataReader is active on the command.
-    /// </summary>
-    private WeakReference _activeReader;
-    /// <summary>
-    /// The timeout for the command, kludged because SQLite doesn't support per-command timeout values
-    /// </summary>
-    internal int _commandTimeout;
-    /// <summary>
-    /// Designer support
-    /// </summary>
-    private bool _designTimeVisible;
-    /// <summary>
-    /// Used by DbDataAdapter to determine updating behavior
-    /// </summary>
-    private UpdateRowSource _updateRowSource;
-    /// <summary>
-    /// The collection of parameters for the command
-    /// </summary>
-    private SqliteParameterCollection _parameterCollection;
-    /// <summary>
-    /// The SQL command text, broken into individual SQL statements as they are executed
-    /// </summary>
-    internal List<SqliteStatement> _statementList;
-    /// <summary>
-    /// Unprocessed SQL text that has not been executed
-    /// </summary>
-    internal string _remainingText;
-    /// <summary>
-    /// Transaction associated with this command
-    /// </summary>
-    private SqliteTransaction _transaction;
-
-    ///<overloads>
-    /// Constructs a new SqliteCommand
-    /// </overloads>
-    /// <summary>
-    /// Default constructor
-    /// </summary>
-    public SqliteCommand() :this(null, null)
-    {
-    }
-
-    /// <summary>
-    /// Initializes the command with the given command text
-    /// </summary>
-    /// <param name="commandText">The SQL command text</param>
-    public SqliteCommand(string commandText) 
-      : this(commandText, null, null)
-    {
-    }
-
-    /// <summary>
-    /// Initializes the command with the given SQL command text and attach the command to the specified
-    /// connection.
-    /// </summary>
-    /// <param name="commandText">The SQL command text</param>
-    /// <param name="connection">The connection to associate with the command</param>
-    public SqliteCommand(string commandText, SqliteConnection connection)
-      : this(commandText, connection, null)
-    {
-    }
-
-    /// <summary>
-    /// Initializes the command and associates it with the specified connection.
-    /// </summary>
-    /// <param name="connection">The connection to associate with the command</param>
-    public SqliteCommand(SqliteConnection connection) 
-      : this(null, connection, null)
-    {
-    }
-
-    private SqliteCommand(SqliteCommand source) : this(source.CommandText, source.Connection, source.Transaction)
-    {
-      CommandTimeout = source.CommandTimeout;
-      DesignTimeVisible = source.DesignTimeVisible;
-      UpdatedRowSource = source.UpdatedRowSource;
-
-      foreach (SqliteParameter param in source._parameterCollection)
-      {
-        Parameters.Add(param.Clone());
-      }
-    }
-
-    /// <summary>
-    /// Initializes a command with the given SQL, connection and transaction
-    /// </summary>
-    /// <param name="commandText">The SQL command text</param>
-    /// <param name="connection">The connection to associate with the command</param>
-    /// <param name="transaction">The transaction the command should be associated with</param>
-    public SqliteCommand(string commandText, SqliteConnection connection, SqliteTransaction transaction)
-    {
-      _statementList = null;
-      _activeReader = null;
-      _commandTimeout = 30;
-      _parameterCollection = new SqliteParameterCollection(this);
-      _designTimeVisible = true;
-      _updateRowSource = UpdateRowSource.None;
-      _transaction = null;
-
-      if (commandText != null)
-        CommandText = commandText;
-
-      if (connection != null)
-      {
-        DbConnection = connection;
-        _commandTimeout = connection.DefaultTimeout;
-      }
-
-      if (transaction != null)
-        Transaction = transaction;
-    }
-
-    /// <summary>
-    /// Disposes of the command and clears all member variables
-    /// </summary>
-    /// <param name="disposing">Whether or not the class is being explicitly or implicitly disposed</param>
-    protected override void Dispose(bool disposing)
-    {
-      base.Dispose(disposing);
-
-      if (disposing)
-      {
-        // If a reader is active on this command, don't destroy the command, instead let the reader do it
-        SqliteDataReader reader = null;
-        if (_activeReader != null)
-        {
-          try
-          {
-            reader = _activeReader.Target as SqliteDataReader;
-          }
-          catch
-          {
-          }
-        }
-
-        if (reader != null)
-        {
-          reader._disposeCommand = true;
-          _activeReader = null;
-          return;
-        }
-
-        Connection = null;
-        _parameterCollection.Clear();
-        _commandText = null;
-      }
-    }
-
-    /// <summary>
-    /// Clears and destroys all statements currently prepared
-    /// </summary>
-    internal void ClearCommands()
-    {
-      if (_activeReader != null)
-      {
-        SqliteDataReader reader = null;
-        try
-        {
-          reader = _activeReader.Target as SqliteDataReader;
-        }
-        catch
-        {
-        }
-
-        if (reader != null)
-          reader.Close();
-
-        _activeReader = null;
-      }
-
-      if (_statementList == null) return;
-
-      int x = _statementList.Count;
-      for (int n = 0; n < x; n++)
-        _statementList[n].Dispose();
-
-      _statementList = null;
-
-      _parameterCollection.Unbind();
-    }
-
-    /// <summary>
-    /// Builds an array of prepared statements for each complete SQL statement in the command text
-    /// </summary>
-    internal SqliteStatement BuildNextCommand()
-    {
-      SqliteStatement stmt = null;
-
-      try
-      {
-        if (_statementList == null)
-          _remainingText = _commandText;
-
-        stmt = _cnn._sql.Prepare(_cnn, _remainingText, (_statementList == null) ? null : _statementList[_statementList.Count - 1], (uint)(_commandTimeout * 1000), out _remainingText);
-        if (stmt != null)
-        {
-          stmt._command = this;
-          if (_statementList == null)
-            _statementList = new List<SqliteStatement>();
-
-          _statementList.Add(stmt);
-
-          _parameterCollection.MapParameters(stmt);
-          stmt.BindParameters();
-        }        
-        return stmt;
-      }
-      catch (Exception)
-      {
-        if (stmt != null)
-        {
-          if (_statementList.Contains(stmt))
-            _statementList.Remove(stmt);
-
-          stmt.Dispose();
-        }
-
-        // If we threw an error compiling the statement, we cannot continue on so set the remaining text to null.
-        _remainingText = null;
-
-        throw;
-      }
-    }
-
-    internal SqliteStatement GetStatement(int index)
-    {
-      // Haven't built any statements yet
-      if (_statementList == null) return BuildNextCommand();
-
-      // If we're at the last built statement and want the next unbuilt statement, then build it
-      if (index == _statementList.Count)
-      {
-        if (String.IsNullOrEmpty(_remainingText) == false) return BuildNextCommand();
-        else return null; // No more commands
-      }
-
-      SqliteStatement stmt = _statementList[index];
-      stmt.BindParameters();
-
-      return stmt;
-    }
-
-    /// <summary>
-    /// Not implemented
-    /// </summary>
-    public override void Cancel()
-    {
-      if (_activeReader != null)
-      {
-        SqliteDataReader reader = _activeReader.Target as SqliteDataReader;
-        if (reader != null)
-          reader.Cancel();
-      }
-    }
-
-    /// <summary>
-    /// The SQL command text associated with the command
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue(""), RefreshProperties(RefreshProperties.All), Editor("Microsoft.VSDesigner.Data.SQL.Design.SqlCommandTextEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-    public override string CommandText
-    {
-      get
-      {
-        return _commandText;
-      }
-      set
-      {
-        if (_commandText == value) return;
-
-        if (_activeReader != null && _activeReader.IsAlive)
-        {
-          throw new InvalidOperationException("Cannot set CommandText while a DataReader is active");
-        }
-
-        ClearCommands();
-        _commandText = value;
-
-        if (_cnn == null) return;
-      }
-    }
-
-    /// <summary>
-    /// The amount of time to wait for the connection to become available before erroring out
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue((int)30)]
-#endif
-    public override int CommandTimeout
-    {
-      get
-      {
-        return _commandTimeout;
-      }
-      set
-      {
-        _commandTimeout = value;
-      }
-    }
-
-    /// <summary>
-    /// The type of the command.  SQLite only supports CommandType.Text
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [RefreshProperties(RefreshProperties.All), DefaultValue(CommandType.Text)]
-#endif
-    public override CommandType CommandType
-    {
-      get
-      {
-        return CommandType.Text;
-      }
-      set
-      {
-        if (value != CommandType.Text)
-        {
-          throw new NotSupportedException();
-        }
-      }
-    }
-
-    /// <summary>
-    /// Forwards to the local CreateParameter() function
-    /// </summary>
-    /// <returns></returns>
-    protected override DbParameter CreateDbParameter()
-    {
-      return CreateParameter();
-    }
-
-    /// <summary>
-    /// Create a new parameter
-    /// </summary>
-    /// <returns></returns>
-    public new SqliteParameter CreateParameter()
-    {
-      return new SqliteParameter();
-    }
-
-    /// <summary>
-    /// The connection associated with this command
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-    public new SqliteConnection Connection
-    {
-      get { return _cnn; }
-      set
-      {
-        if (_activeReader != null && _activeReader.IsAlive)
-          throw new InvalidOperationException("Cannot set Connection while a DataReader is active");
-
-        if (_cnn != null)
-        {
-          ClearCommands();
-          //_cnn.RemoveCommand(this);
-        }
-
-        _cnn = value;
-        if (_cnn != null)
-          _version = _cnn._version;
-
-        //if (_cnn != null)
-        //  _cnn.AddCommand(this);
-      }
-    }
-
-    /// <summary>
-    /// Forwards to the local Connection property
-    /// </summary>
-    protected override DbConnection DbConnection
-    {
-      get
-      {
-        return Connection;
-      }
-      set
-      {
-        Connection = (SqliteConnection)value;
-      }
-    }
-
-    /// <summary>
-    /// Returns the SqliteParameterCollection for the given command
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
-#endif
-    public new SqliteParameterCollection Parameters
-    {
-      get { return _parameterCollection; }
-    }
-
-    /// <summary>
-    /// Forwards to the local Parameters property
-    /// </summary>
-    protected override DbParameterCollection DbParameterCollection
-    {
-      get
-      {
-        return Parameters;
-      }
-    }
-
-    /// <summary>
-    /// The transaction associated with this command.  SQLite only supports one transaction per connection, so this property forwards to the
-    /// command's underlying connection.
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-#endif
-    public new SqliteTransaction Transaction
-    {
-      get { return _transaction; }
-      set
-      {
-        if (_cnn != null)
-        {
-          if (_activeReader != null && _activeReader.IsAlive)
-            throw new InvalidOperationException("Cannot set Transaction while a DataReader is active");
-
-          if (value != null)
-          {
-            if (value._cnn != _cnn)
-              throw new ArgumentException("Transaction is not associated with the command's connection");
-          }
-          _transaction = value;
-        }
-        else
-        {
-          Connection = value.Connection;
-          _transaction = value;
-        }
-      }
-    }
-
-    /// <summary>
-    /// Forwards to the local Transaction property
-    /// </summary>
-    protected override DbTransaction DbTransaction
-    {
-      get
-      {
-        return Transaction;
-      }
-      set
-      {
-        Transaction = (SqliteTransaction)value;
-      }
-    }
-
-    /// <summary>
-    /// This function ensures there are no active readers, that we have a valid connection,
-    /// that the connection is open, that all statements are prepared and all parameters are assigned
-    /// in preparation for allocating a data reader.
-    /// </summary>
-    private void InitializeForReader()
-    {
-      if (_activeReader != null && _activeReader.IsAlive)
-        throw new InvalidOperationException("DataReader already active on this command");
-
-      if (_cnn == null)
-        throw new InvalidOperationException("No connection associated with this command");
-
-      if (_cnn.State != ConnectionState.Open)
-        throw new InvalidOperationException("Database is not open");
-
-      // If the version of the connection has changed, clear out any previous commands before starting
-      if (_cnn._version != _version)
-      {
-        _version = _cnn._version;
-        ClearCommands();
-      }
-
-      // Map all parameters for statements already built
-      _parameterCollection.MapParameters(null);
-
-      //// Set the default command timeout
-      //_cnn._sql.SetTimeout(_commandTimeout * 1000);
-    }
-
-    /// <summary>
-    /// Creates a new SqliteDataReader to execute/iterate the array of SQLite prepared statements
-    /// </summary>
-    /// <param name="behavior">The behavior the data reader should adopt</param>
-    /// <returns>Returns a SqliteDataReader object</returns>
-    protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
-    {
-      return ExecuteReader(behavior);
-    }
-
-    /// <summary>
-    /// Overrides the default behavior to return a SqliteDataReader specialization class
-    /// </summary>
-    /// <param name="behavior">The flags to be associated with the reader</param>
-    /// <returns>A SqliteDataReader</returns>
-    public new SqliteDataReader ExecuteReader(CommandBehavior behavior)
-    {
-      InitializeForReader();
-
-      SqliteDataReader rd = new SqliteDataReader(this, behavior);
-      _activeReader = new WeakReference(rd, false);
-
-      return rd;
-    }
-
-    /// <summary>
-    /// Overrides the default behavior of DbDataReader to return a specialized SqliteDataReader class
-    /// </summary>
-    /// <returns>A SqliteDataReader</returns>
-    public new SqliteDataReader ExecuteReader()
-    {
-      return ExecuteReader(CommandBehavior.Default);
-    }
-
-    /// <summary>
-    /// Called by the SqliteDataReader when the data reader is closed.
-    /// </summary>
-    internal void ClearDataReader()
-    {
-      _activeReader = null;
-    }
-
-    /// <summary>
-    /// Execute the command and return the number of rows inserted/updated affected by it.
-    /// </summary>
-    /// <returns></returns>
-    public override int ExecuteNonQuery()
-    {
-      using (SqliteDataReader reader = ExecuteReader(CommandBehavior.SingleRow | CommandBehavior.SingleResult))
-      {
-        while (reader.NextResult()) ;
-        return reader.RecordsAffected;
-      }
-    }
-
-    /// <summary>
-    /// Execute the command and return the first column of the first row of the resultset
-    /// (if present), or null if no resultset was returned.
-    /// </summary>
-    /// <returns>The first column of the first row of the first resultset from the query</returns>
-    public override object ExecuteScalar()
-    {
-      using (SqliteDataReader reader = ExecuteReader(CommandBehavior.SingleRow | CommandBehavior.SingleResult))
-      {
-        if (reader.Read())
-          return reader[0];
-      }
-      return null;
-    }
-
-    /// <summary>
-    /// Does nothing.  Commands are prepared as they are executed the first time, and kept in prepared state afterwards.
-    /// </summary>
-    public override void Prepare()
-    {
-    }
-
-    /// <summary>
-    /// Sets the method the SqliteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable.
-    /// </summary>
-    [DefaultValue(UpdateRowSource.None)]
-    public override UpdateRowSource UpdatedRowSource
-    {
-      get
-      {
-        return _updateRowSource;
-      }
-      set
-      {
-        _updateRowSource = value;
-      }
-    }
-
-    /// <summary>
-    /// Determines if the command is visible at design time.  Defaults to True.
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DesignOnly(true), Browsable(false), DefaultValue(true), EditorBrowsable(EditorBrowsableState.Never)]
-#endif
-    public override bool DesignTimeVisible
-    {
-      get
-      {
-        return _designTimeVisible;
-      }
-      set
-      {
-        _designTimeVisible = value;
-#if !PLATFORM_COMPACTFRAMEWORK
-        TypeDescriptor.Refresh(this);
-#endif
-      }
-    }
-
-    /// <summary>
-    /// Clones a command, including all its parameters
-    /// </summary>
-    /// <returns>A new SqliteCommand with the same commandtext, connection and parameters</returns>
-    public object Clone()
-    {
-      return new SqliteCommand(this);
-    }
-  }
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Collections.Generic;
+  using System.ComponentModel;
+
+  /// <summary>
+  /// SQLite implementation of DbCommand.
+  /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+  [Designer("SQLite.Designer.SqliteCommandDesigner, SQLite.Designer, Version=1.0.36.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"), ToolboxItem(true)]
+#endif
+  public sealed class SqliteCommand : DbCommand, ICloneable
+  {
+    /// <summary>
+    /// The command text this command is based on
+    /// </summary>
+    private string _commandText;
+    /// <summary>
+    /// The connection the command is associated with
+    /// </summary>
+    private SqliteConnection _cnn;
+    /// <summary>
+    /// The version of the connection the command is associated with
+    /// </summary>
+    private long _version;
+    /// <summary>
+    /// Indicates whether or not a DataReader is active on the command.
+    /// </summary>
+    private WeakReference _activeReader;
+    /// <summary>
+    /// The timeout for the command, kludged because SQLite doesn't support per-command timeout values
+    /// </summary>
+    internal int _commandTimeout;
+    /// <summary>
+    /// Designer support
+    /// </summary>
+    private bool _designTimeVisible;
+    /// <summary>
+    /// Used by DbDataAdapter to determine updating behavior
+    /// </summary>
+    private UpdateRowSource _updateRowSource;
+    /// <summary>
+    /// The collection of parameters for the command
+    /// </summary>
+    private SqliteParameterCollection _parameterCollection;
+    /// <summary>
+    /// The SQL command text, broken into individual SQL statements as they are executed
+    /// </summary>
+    internal List<SqliteStatement> _statementList;
+    /// <summary>
+    /// Unprocessed SQL text that has not been executed
+    /// </summary>
+    internal string _remainingText;
+    /// <summary>
+    /// Transaction associated with this command
+    /// </summary>
+    private SqliteTransaction _transaction;
+
+    ///<overloads>
+    /// Constructs a new SqliteCommand
+    /// </overloads>
+    /// <summary>
+    /// Default constructor
+    /// </summary>
+    public SqliteCommand() :this(null, null)
+    {
+    }
+
+    /// <summary>
+    /// Initializes the command with the given command text
+    /// </summary>
+    /// <param name="commandText">The SQL command text</param>
+    public SqliteCommand(string commandText) 
+      : this(commandText, null, null)
+    {
+    }
+
+    /// <summary>
+    /// Initializes the command with the given SQL command text and attach the command to the specified
+    /// connection.
+    /// </summary>
+    /// <param name="commandText">The SQL command text</param>
+    /// <param name="connection">The connection to associate with the command</param>
+    public SqliteCommand(string commandText, SqliteConnection connection)
+      : this(commandText, connection, null)
+    {
+    }
+
+    /// <summary>
+    /// Initializes the command and associates it with the specified connection.
+    /// </summary>
+    /// <param name="connection">The connection to associate with the command</param>
+    public SqliteCommand(SqliteConnection connection) 
+      : this(null, connection, null)
+    {
+    }
+
+    private SqliteCommand(SqliteCommand source) : this(source.CommandText, source.Connection, source.Transaction)
+    {
+      CommandTimeout = source.CommandTimeout;
+      DesignTimeVisible = source.DesignTimeVisible;
+      UpdatedRowSource = source.UpdatedRowSource;
+
+      foreach (SqliteParameter param in source._parameterCollection)
+      {
+        Parameters.Add(param.Clone());
+      }
+    }
+
+    /// <summary>
+    /// Initializes a command with the given SQL, connection and transaction
+    /// </summary>
+    /// <param name="commandText">The SQL command text</param>
+    /// <param name="connection">The connection to associate with the command</param>
+    /// <param name="transaction">The transaction the command should be associated with</param>
+    public SqliteCommand(string commandText, SqliteConnection connection, SqliteTransaction transaction)
+    {
+      _statementList = null;
+      _activeReader = null;
+      _commandTimeout = 30;
+      _parameterCollection = new SqliteParameterCollection(this);
+      _designTimeVisible = true;
+      _updateRowSource = UpdateRowSource.None;
+      _transaction = null;
+
+      if (commandText != null)
+        CommandText = commandText;
+
+      if (connection != null)
+      {
+        DbConnection = connection;
+        _commandTimeout = connection.DefaultTimeout;
+      }
+
+      if (transaction != null)
+        Transaction = transaction;
+    }
+
+    /// <summary>
+    /// Disposes of the command and clears all member variables
+    /// </summary>
+    /// <param name="disposing">Whether or not the class is being explicitly or implicitly disposed</param>
+    protected override void Dispose(bool disposing)
+    {
+      base.Dispose(disposing);
+
+      if (disposing)
+      {
+        // If a reader is active on this command, don't destroy the command, instead let the reader do it
+        SqliteDataReader reader = null;
+        if (_activeReader != null)
+        {
+          try
+          {
+            reader = _activeReader.Target as SqliteDataReader;
+          }
+          catch
+          {
+          }
+        }
+
+        if (reader != null)
+        {
+          reader._disposeCommand = true;
+          _activeReader = null;
+          return;
+        }
+
+        Connection = null;
+        _parameterCollection.Clear();
+        _commandText = null;
+      }
+    }
+
+    /// <summary>
+    /// Clears and destroys all statements currently prepared
+    /// </summary>
+    internal void ClearCommands()
+    {
+      if (_activeReader != null)
+      {
+        SqliteDataReader reader = null;
+        try
+        {
+          reader = _activeReader.Target as SqliteDataReader;
+        }
+        catch
+        {
+        }
+
+        if (reader != null)
+          reader.Close();
+
+        _activeReader = null;
+      }
+
+      if (_statementList == null) return;
+
+      int x = _statementList.Count;
+      for (int n = 0; n < x; n++)
+        _statementList[n].Dispose();
+
+      _statementList = null;
+
+      _parameterCollection.Unbind();
+    }
+
+    /// <summary>
+    /// Builds an array of prepared statements for each complete SQL statement in the command text
+    /// </summary>
+    internal SqliteStatement BuildNextCommand()
+    {
+      SqliteStatement stmt = null;
+
+      try
+      {
+        if (_statementList == null)
+          _remainingText = _commandText;
+
+        stmt = _cnn._sql.Prepare(_cnn, _remainingText, (_statementList == null) ? null : _statementList[_statementList.Count - 1], (uint)(_commandTimeout * 1000), out _remainingText);
+        if (stmt != null)
+        {
+          stmt._command = this;
+          if (_statementList == null)
+            _statementList = new List<SqliteStatement>();
+
+          _statementList.Add(stmt);
+
+          _parameterCollection.MapParameters(stmt);
+          stmt.BindParameters();
+        }        
+        return stmt;
+      }
+      catch (Exception)
+      {
+        if (stmt != null)
+        {
+          if (_statementList.Contains(stmt))
+            _statementList.Remove(stmt);
+
+          stmt.Dispose();
+        }
+
+        // If we threw an error compiling the statement, we cannot continue on so set the remaining text to null.
+        _remainingText = null;
+
+        throw;
+      }
+    }
+
+    internal SqliteStatement GetStatement(int index)
+    {
+      // Haven't built any statements yet
+      if (_statementList == null) return BuildNextCommand();
+
+      // If we're at the last built statement and want the next unbuilt statement, then build it
+      if (index == _statementList.Count)
+      {
+        if (String.IsNullOrEmpty(_remainingText) == false) return BuildNextCommand();
+        else return null; // No more commands
+      }
+
+      SqliteStatement stmt = _statementList[index];
+      stmt.BindParameters();
+
+      return stmt;
+    }
+
+    /// <summary>
+    /// Not implemented
+    /// </summary>
+    public override void Cancel()
+    {
+      if (_activeReader != null)
+      {
+        SqliteDataReader reader = _activeReader.Target as SqliteDataReader;
+        if (reader != null)
+          reader.Cancel();
+      }
+    }
+
+    /// <summary>
+    /// The SQL command text associated with the command
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue(""), RefreshProperties(RefreshProperties.All), Editor("Microsoft.VSDesigner.Data.SQL.Design.SqlCommandTextEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+    public override string CommandText
+    {
+      get
+      {
+        return _commandText;
+      }
+      set
+      {
+        if (_commandText == value) return;
+
+        if (_activeReader != null && _activeReader.IsAlive)
+        {
+          throw new InvalidOperationException("Cannot set CommandText while a DataReader is active");
+        }
+
+        ClearCommands();
+        _commandText = value;
+
+        if (_cnn == null) return;
+      }
+    }
+
+    /// <summary>
+    /// The amount of time to wait for the connection to become available before erroring out
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue((int)30)]
+#endif
+    public override int CommandTimeout
+    {
+      get
+      {
+        return _commandTimeout;
+      }
+      set
+      {
+        _commandTimeout = value;
+      }
+    }
+
+    /// <summary>
+    /// The type of the command.  SQLite only supports CommandType.Text
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [RefreshProperties(RefreshProperties.All), DefaultValue(CommandType.Text)]
+#endif
+    public override CommandType CommandType
+    {
+      get
+      {
+        return CommandType.Text;
+      }
+      set
+      {
+        if (value != CommandType.Text)
+        {
+          throw new NotSupportedException();
+        }
+      }
+    }
+
+    /// <summary>
+    /// Forwards to the local CreateParameter() function
+    /// </summary>
+    /// <returns></returns>
+    protected override DbParameter CreateDbParameter()
+    {
+      return CreateParameter();
+    }
+
+    /// <summary>
+    /// Create a new parameter
+    /// </summary>
+    /// <returns></returns>
+    public new SqliteParameter CreateParameter()
+    {
+      return new SqliteParameter();
+    }
+
+    /// <summary>
+    /// The connection associated with this command
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+    public new SqliteConnection Connection
+    {
+      get { return _cnn; }
+      set
+      {
+        if (_activeReader != null && _activeReader.IsAlive)
+          throw new InvalidOperationException("Cannot set Connection while a DataReader is active");
+
+        if (_cnn != null)
+        {
+          ClearCommands();
+          //_cnn.RemoveCommand(this);
+        }
+
+        _cnn = value;
+        if (_cnn != null)
+          _version = _cnn._version;
+
+        //if (_cnn != null)
+        //  _cnn.AddCommand(this);
+      }
+    }
+
+    /// <summary>
+    /// Forwards to the local Connection property
+    /// </summary>
+    protected override DbConnection DbConnection
+    {
+      get
+      {
+        return Connection;
+      }
+      set
+      {
+        Connection = (SqliteConnection)value;
+      }
+    }
+
+    /// <summary>
+    /// Returns the SqliteParameterCollection for the given command
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
+#endif
+    public new SqliteParameterCollection Parameters
+    {
+      get { return _parameterCollection; }
+    }
+
+    /// <summary>
+    /// Forwards to the local Parameters property
+    /// </summary>
+    protected override DbParameterCollection DbParameterCollection
+    {
+      get
+      {
+        return Parameters;
+      }
+    }
+
+    /// <summary>
+    /// The transaction associated with this command.  SQLite only supports one transaction per connection, so this property forwards to the
+    /// command's underlying connection.
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+#endif
+    public new SqliteTransaction Transaction
+    {
+      get { return _transaction; }
+      set
+      {
+        if (_cnn != null)
+        {
+          if (_activeReader != null && _activeReader.IsAlive)
+            throw new InvalidOperationException("Cannot set Transaction while a DataReader is active");
+
+          if (value != null)
+          {
+            if (value._cnn != _cnn)
+              throw new ArgumentException("Transaction is not associated with the command's connection");
+          }
+          _transaction = value;
+        }
+        else
+        {
+          Connection = value.Connection;
+          _transaction = value;
+        }
+      }
+    }
+
+    /// <summary>
+    /// Forwards to the local Transaction property
+    /// </summary>
+    protected override DbTransaction DbTransaction
+    {
+      get
+      {
+        return Transaction;
+      }
+      set
+      {
+        Transaction = (SqliteTransaction)value;
+      }
+    }
+
+    /// <summary>
+    /// This function ensures there are no active readers, that we have a valid connection,
+    /// that the connection is open, that all statements are prepared and all parameters are assigned
+    /// in preparation for allocating a data reader.
+    /// </summary>
+    private void InitializeForReader()
+    {
+      if (_activeReader != null && _activeReader.IsAlive)
+        throw new InvalidOperationException("DataReader already active on this command");
+
+      if (_cnn == null)
+        throw new InvalidOperationException("No connection associated with this command");
+
+      if (_cnn.State != ConnectionState.Open)
+        throw new InvalidOperationException("Database is not open");
+
+      // If the version of the connection has changed, clear out any previous commands before starting
+      if (_cnn._version != _version)
+      {
+        _version = _cnn._version;
+        ClearCommands();
+      }
+
+      // Map all parameters for statements already built
+      _parameterCollection.MapParameters(null);
+
+      //// Set the default command timeout
+      //_cnn._sql.SetTimeout(_commandTimeout * 1000);
+    }
+
+    /// <summary>
+    /// Creates a new SqliteDataReader to execute/iterate the array of SQLite prepared statements
+    /// </summary>
+    /// <param name="behavior">The behavior the data reader should adopt</param>
+    /// <returns>Returns a SqliteDataReader object</returns>
+    protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
+    {
+      return ExecuteReader(behavior);
+    }
+
+    /// <summary>
+    /// Overrides the default behavior to return a SqliteDataReader specialization class
+    /// </summary>
+    /// <param name="behavior">The flags to be associated with the reader</param>
+    /// <returns>A SqliteDataReader</returns>
+    public new SqliteDataReader ExecuteReader(CommandBehavior behavior)
+    {
+      InitializeForReader();
+
+      SqliteDataReader rd = new SqliteDataReader(this, behavior);
+      _activeReader = new WeakReference(rd, false);
+
+      return rd;
+    }
+
+    /// <summary>
+    /// Overrides the default behavior of DbDataReader to return a specialized SqliteDataReader class
+    /// </summary>
+    /// <returns>A SqliteDataReader</returns>
+    public new SqliteDataReader ExecuteReader()
+    {
+      return ExecuteReader(CommandBehavior.Default);
+    }
+
+    /// <summary>
+    /// Called by the SqliteDataReader when the data reader is closed.
+    /// </summary>
+    internal void ClearDataReader()
+    {
+      _activeReader = null;
+    }
+
+    /// <summary>
+    /// Execute the command and return the number of rows inserted/updated affected by it.
+    /// </summary>
+    /// <returns></returns>
+    public override int ExecuteNonQuery()
+    {
+      using (SqliteDataReader reader = ExecuteReader(CommandBehavior.SingleRow | CommandBehavior.SingleResult))
+      {
+        while (reader.NextResult()) ;
+        return reader.RecordsAffected;
+      }
+    }
+
+    /// <summary>
+    /// Execute the command and return the first column of the first row of the resultset
+    /// (if present), or null if no resultset was returned.
+    /// </summary>
+    /// <returns>The first column of the first row of the first resultset from the query</returns>
+    public override object ExecuteScalar()
+    {
+      using (SqliteDataReader reader = ExecuteReader(CommandBehavior.SingleRow | CommandBehavior.SingleResult))
+      {
+        if (reader.Read())
+          return reader[0];
+      }
+      return null;
+    }
+
+    /// <summary>
+    /// Does nothing.  Commands are prepared as they are executed the first time, and kept in prepared state afterwards.
+    /// </summary>
+    public override void Prepare()
+    {
+    }
+
+    /// <summary>
+    /// Sets the method the SqliteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable.
+    /// </summary>
+    [DefaultValue(UpdateRowSource.None)]
+    public override UpdateRowSource UpdatedRowSource
+    {
+      get
+      {
+        return _updateRowSource;
+      }
+      set
+      {
+        _updateRowSource = value;
+      }
+    }
+
+    /// <summary>
+    /// Determines if the command is visible at design time.  Defaults to True.
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DesignOnly(true), Browsable(false), DefaultValue(true), EditorBrowsable(EditorBrowsableState.Never)]
+#endif
+    public override bool DesignTimeVisible
+    {
+      get
+      {
+        return _designTimeVisible;
+      }
+      set
+      {
+        _designTimeVisible = value;
+#if !PLATFORM_COMPACTFRAMEWORK
+        TypeDescriptor.Refresh(this);
+#endif
+      }
+    }
+
+    /// <summary>
+    /// Clones a command, including all its parameters
+    /// </summary>
+    /// <returns>A new SqliteCommand with the same commandtext, connection and parameters</returns>
+    public object Clone()
+    {
+      return new SqliteCommand(this);
+    }
+  }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteCommandBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteCommandBuilder.cs
@@ -1,343 +1,343 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Globalization;
-  using System.ComponentModel;
-
-  /// <summary>
-  /// SQLite implementation of DbCommandBuilder.
-  /// </summary>
-  public sealed class SqliteCommandBuilder : DbCommandBuilder
-  {
-    /// <summary>
-    /// Default constructor
-    /// </summary>
-    public SqliteCommandBuilder() : this(null)
-    {
-    }
-
-    /// <summary>
-    /// Initializes the command builder and associates it with the specified data adapter.
-    /// </summary>
-    /// <param name="adp"></param>
-    public SqliteCommandBuilder(SqliteDataAdapter adp)
-    {
-      QuotePrefix = "[";
-      QuoteSuffix = "]";
-      DataAdapter = adp;
-    }
-
-    /// <summary>
-    /// Minimal amount of parameter processing.  Primarily sets the DbType for the parameter equal to the provider type in the schema
-    /// </summary>
-    /// <param name="parameter">The parameter to use in applying custom behaviors to a row</param>
-    /// <param name="row">The row to apply the parameter to</param>
-    /// <param name="statementType">The type of statement</param>
-    /// <param name="whereClause">Whether the application of the parameter is part of a WHERE clause</param>
-    protected override void ApplyParameterInfo(DbParameter parameter, DataRow row, StatementType statementType, bool whereClause)
-    {
-      SqliteParameter param = (SqliteParameter)parameter;
-      param.DbType = (DbType)row[SchemaTableColumn.ProviderType];
-    }
-
-    /// <summary>
-    /// Returns a valid named parameter
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter</param>
-    /// <returns>Error</returns>
-    protected override string GetParameterName(string parameterName)
-    {
-      return String.Format(CultureInfo.InvariantCulture, "@{0}", parameterName);
-    }
-
-    /// <summary>
-    /// Returns a named parameter for the given ordinal
-    /// </summary>
-    /// <param name="parameterOrdinal">The i of the parameter</param>
-    /// <returns>Error</returns>
-    protected override string GetParameterName(int parameterOrdinal)
-    {
-      return String.Format(CultureInfo.InvariantCulture, "@param{0}", parameterOrdinal);
-    }
-
-    /// <summary>
-    /// Returns a placeholder character for the specified parameter i.
-    /// </summary>
-    /// <param name="parameterOrdinal">The index of the parameter to provide a placeholder for</param>
-    /// <returns>Returns a named parameter</returns>
-    protected override string GetParameterPlaceholder(int parameterOrdinal)
-    {
-      return GetParameterName(parameterOrdinal);
-    }
-
-    /// <summary>
-    /// Sets the handler for receiving row updating events.  Used by the DbCommandBuilder to autogenerate SQL
-    /// statements that may not have previously been generated.
-    /// </summary>
-    /// <param name="adapter">A data adapter to receive events on.</param>
-    protected override void SetRowUpdatingHandler(DbDataAdapter adapter)
-    {
-      if (adapter == base.DataAdapter)
-      {
-        ((SqliteDataAdapter)adapter).RowUpdating -= new EventHandler<RowUpdatingEventArgs>(RowUpdatingEventHandler);
-      }
-      else
-      {
-        ((SqliteDataAdapter)adapter).RowUpdating += new EventHandler<RowUpdatingEventArgs>(RowUpdatingEventHandler);
-      }
-    }
-
-    private void RowUpdatingEventHandler(object sender, RowUpdatingEventArgs e)
-    {
-      base.RowUpdatingHandler(e);
-    }
-
-    /// <summary>
-    /// Gets/sets the DataAdapter for this CommandBuilder
-    /// </summary>
-    public new SqliteDataAdapter DataAdapter
-    {
-      get { return (SqliteDataAdapter)base.DataAdapter; }
-      set { base.DataAdapter = value; }
-    }
-
-    /// <summary>
-    /// Returns the automatically-generated SQLite command to delete rows from the database
-    /// </summary>
-    /// <returns></returns>
-    public new SqliteCommand GetDeleteCommand()
-    {
-      return (SqliteCommand)base.GetDeleteCommand();
-    }
-
-    /// <summary>
-    /// Returns the automatically-generated SQLite command to delete rows from the database
-    /// </summary>
-    /// <param name="useColumnsForParameterNames"></param>
-    /// <returns></returns>
-    public new SqliteCommand GetDeleteCommand(bool useColumnsForParameterNames)
-    {
-      return (SqliteCommand)base.GetDeleteCommand(useColumnsForParameterNames);
-    }
-
-    /// <summary>
-    /// Returns the automatically-generated SQLite command to update rows in the database
-    /// </summary>
-    /// <returns></returns>
-    public new SqliteCommand GetUpdateCommand()
-    {
-      return (SqliteCommand)base.GetUpdateCommand();
-    }
-
-    /// <summary>
-    /// Returns the automatically-generated SQLite command to update rows in the database
-    /// </summary>
-    /// <param name="useColumnsForParameterNames"></param>
-    /// <returns></returns>
-    public new SqliteCommand GetUpdateCommand(bool useColumnsForParameterNames)
-    {
-      return (SqliteCommand)base.GetUpdateCommand(useColumnsForParameterNames);
-    }
-
-    /// <summary>
-    /// Returns the automatically-generated SQLite command to insert rows into the database
-    /// </summary>
-    /// <returns></returns>
-    public new SqliteCommand GetInsertCommand()
-    {
-      return (SqliteCommand)base.GetInsertCommand();
-    }
-
-    /// <summary>
-    /// Returns the automatically-generated SQLite command to insert rows into the database
-    /// </summary>
-    /// <param name="useColumnsForParameterNames"></param>
-    /// <returns></returns>
-    public new SqliteCommand GetInsertCommand(bool useColumnsForParameterNames)
-    {
-      return (SqliteCommand)base.GetInsertCommand(useColumnsForParameterNames);
-    }
-
-    /// <summary>
-    /// Overridden to hide its property from the designer
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false)]
-#endif
-    public override CatalogLocation CatalogLocation
-    {
-      get
-      {
-        return base.CatalogLocation;
-      }
-      set
-      {
-        base.CatalogLocation = value;
-      }
-    }
-
-    /// <summary>
-    /// Overridden to hide its property from the designer
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false)]
-#endif
-    public override string CatalogSeparator
-    {
-      get
-      {
-        return base.CatalogSeparator;
-      }
-      set
-      {
-        base.CatalogSeparator = value;
-      }
-    }
-
-    /// <summary>
-    /// Overridden to hide its property from the designer
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false)]
-#endif
-    [DefaultValue("[")]
-    public override string QuotePrefix
-    {
-      get
-      {
-        return base.QuotePrefix;
-      }
-      set
-      {
-        base.QuotePrefix = value;
-      }
-    }
-
-    /// <summary>
-    /// Overridden to hide its property from the designer
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false)]
-#endif
-    public override string QuoteSuffix
-    {
-      get
-      {
-        return base.QuoteSuffix;
-      }
-      set
-      {
-        base.QuoteSuffix = value;
-      }
-    }
-
-    /// <summary>
-    /// Places brackets around an identifier
-    /// </summary>
-    /// <param name="unquotedIdentifier">The identifier to quote</param>
-    /// <returns>The bracketed identifier</returns>
-    public override string QuoteIdentifier(string unquotedIdentifier)
-    {
-      if (String.IsNullOrEmpty(QuotePrefix)
-        || String.IsNullOrEmpty(QuoteSuffix)
-        || String.IsNullOrEmpty(unquotedIdentifier))
-        return unquotedIdentifier;
-
-      return QuotePrefix + unquotedIdentifier.Replace(QuoteSuffix, QuoteSuffix + QuoteSuffix) + QuoteSuffix;
-    }
-
-    /// <summary>
-    /// Removes brackets around an identifier
-    /// </summary>
-    /// <param name="quotedIdentifier">The quoted (bracketed) identifier</param>
-    /// <returns>The undecorated identifier</returns>
-    public override string UnquoteIdentifier(string quotedIdentifier)
-    {
-      if (String.IsNullOrEmpty(QuotePrefix)
-        || String.IsNullOrEmpty(QuoteSuffix)
-        || String.IsNullOrEmpty(quotedIdentifier))
-        return quotedIdentifier;
-
-      if (quotedIdentifier.StartsWith(QuotePrefix, StringComparison.InvariantCultureIgnoreCase) == false
-        || quotedIdentifier.EndsWith(QuoteSuffix, StringComparison.InvariantCultureIgnoreCase) == false)
-        return quotedIdentifier;
-
-      return quotedIdentifier.Substring(QuotePrefix.Length, quotedIdentifier.Length - (QuotePrefix.Length + QuoteSuffix.Length)).Replace(QuoteSuffix + QuoteSuffix, QuoteSuffix);
-    }
-
-    /// <summary>
-    /// Overridden to hide its property from the designer
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false)]
-#endif
-    public override string SchemaSeparator
-    {
-      get
-      {
-        return base.SchemaSeparator;
-      }
-      set
-      {
-        base.SchemaSeparator = value;
-      }
-    }
-
-    /// <summary>
-    /// Override helper, which can help the base command builder choose the right keys for the given query
-    /// </summary>
-    /// <param name="sourceCommand"></param>
-    /// <returns></returns>
-    protected override DataTable GetSchemaTable(DbCommand sourceCommand)
-    {
-      using (IDataReader reader = sourceCommand.ExecuteReader(CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly))
-      {
-        DataTable schema = reader.GetSchemaTable();
-
-        // If the query contains a primary key, turn off the IsUnique property
-        // for all the non-key columns
-        if (HasSchemaPrimaryKey(schema))
-          ResetIsUniqueSchemaColumn(schema);
-
-        // if table has no primary key we use unique columns as a fall back
-        return schema;
-      }
-    }
-
-    private bool HasSchemaPrimaryKey(DataTable schema)
-    {
-      DataColumn IsKeyColumn = schema.Columns[SchemaTableColumn.IsKey];
-      
-      foreach (DataRow schemaRow in schema.Rows)
-      {
-        if ((bool)schemaRow[IsKeyColumn] == true)
-          return true;
-      }
-
-      return false;
-    }
-
-    private void ResetIsUniqueSchemaColumn(DataTable schema)
-    {
-      DataColumn IsUniqueColumn = schema.Columns[SchemaTableColumn.IsUnique];
-      DataColumn IsKeyColumn = schema.Columns[SchemaTableColumn.IsKey];
-
-      foreach (DataRow schemaRow in schema.Rows)
-      {
-        if ((bool)schemaRow[IsKeyColumn] == false)
-          schemaRow[IsUniqueColumn] = false;
-      }
-
-      schema.AcceptChanges();
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Globalization;
+  using System.ComponentModel;
+
+  /// <summary>
+  /// SQLite implementation of DbCommandBuilder.
+  /// </summary>
+  public sealed class SqliteCommandBuilder : DbCommandBuilder
+  {
+    /// <summary>
+    /// Default constructor
+    /// </summary>
+    public SqliteCommandBuilder() : this(null)
+    {
+    }
+
+    /// <summary>
+    /// Initializes the command builder and associates it with the specified data adapter.
+    /// </summary>
+    /// <param name="adp"></param>
+    public SqliteCommandBuilder(SqliteDataAdapter adp)
+    {
+      QuotePrefix = "[";
+      QuoteSuffix = "]";
+      DataAdapter = adp;
+    }
+
+    /// <summary>
+    /// Minimal amount of parameter processing.  Primarily sets the DbType for the parameter equal to the provider type in the schema
+    /// </summary>
+    /// <param name="parameter">The parameter to use in applying custom behaviors to a row</param>
+    /// <param name="row">The row to apply the parameter to</param>
+    /// <param name="statementType">The type of statement</param>
+    /// <param name="whereClause">Whether the application of the parameter is part of a WHERE clause</param>
+    protected override void ApplyParameterInfo(DbParameter parameter, DataRow row, StatementType statementType, bool whereClause)
+    {
+      SqliteParameter param = (SqliteParameter)parameter;
+      param.DbType = (DbType)row[SchemaTableColumn.ProviderType];
+    }
+
+    /// <summary>
+    /// Returns a valid named parameter
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter</param>
+    /// <returns>Error</returns>
+    protected override string GetParameterName(string parameterName)
+    {
+      return String.Format(CultureInfo.InvariantCulture, "@{0}", parameterName);
+    }
+
+    /// <summary>
+    /// Returns a named parameter for the given ordinal
+    /// </summary>
+    /// <param name="parameterOrdinal">The i of the parameter</param>
+    /// <returns>Error</returns>
+    protected override string GetParameterName(int parameterOrdinal)
+    {
+      return String.Format(CultureInfo.InvariantCulture, "@param{0}", parameterOrdinal);
+    }
+
+    /// <summary>
+    /// Returns a placeholder character for the specified parameter i.
+    /// </summary>
+    /// <param name="parameterOrdinal">The index of the parameter to provide a placeholder for</param>
+    /// <returns>Returns a named parameter</returns>
+    protected override string GetParameterPlaceholder(int parameterOrdinal)
+    {
+      return GetParameterName(parameterOrdinal);
+    }
+
+    /// <summary>
+    /// Sets the handler for receiving row updating events.  Used by the DbCommandBuilder to autogenerate SQL
+    /// statements that may not have previously been generated.
+    /// </summary>
+    /// <param name="adapter">A data adapter to receive events on.</param>
+    protected override void SetRowUpdatingHandler(DbDataAdapter adapter)
+    {
+      if (adapter == base.DataAdapter)
+      {
+        ((SqliteDataAdapter)adapter).RowUpdating -= new EventHandler<RowUpdatingEventArgs>(RowUpdatingEventHandler);
+      }
+      else
+      {
+        ((SqliteDataAdapter)adapter).RowUpdating += new EventHandler<RowUpdatingEventArgs>(RowUpdatingEventHandler);
+      }
+    }
+
+    private void RowUpdatingEventHandler(object sender, RowUpdatingEventArgs e)
+    {
+      base.RowUpdatingHandler(e);
+    }
+
+    /// <summary>
+    /// Gets/sets the DataAdapter for this CommandBuilder
+    /// </summary>
+    public new SqliteDataAdapter DataAdapter
+    {
+      get { return (SqliteDataAdapter)base.DataAdapter; }
+      set { base.DataAdapter = value; }
+    }
+
+    /// <summary>
+    /// Returns the automatically-generated SQLite command to delete rows from the database
+    /// </summary>
+    /// <returns></returns>
+    public new SqliteCommand GetDeleteCommand()
+    {
+      return (SqliteCommand)base.GetDeleteCommand();
+    }
+
+    /// <summary>
+    /// Returns the automatically-generated SQLite command to delete rows from the database
+    /// </summary>
+    /// <param name="useColumnsForParameterNames"></param>
+    /// <returns></returns>
+    public new SqliteCommand GetDeleteCommand(bool useColumnsForParameterNames)
+    {
+      return (SqliteCommand)base.GetDeleteCommand(useColumnsForParameterNames);
+    }
+
+    /// <summary>
+    /// Returns the automatically-generated SQLite command to update rows in the database
+    /// </summary>
+    /// <returns></returns>
+    public new SqliteCommand GetUpdateCommand()
+    {
+      return (SqliteCommand)base.GetUpdateCommand();
+    }
+
+    /// <summary>
+    /// Returns the automatically-generated SQLite command to update rows in the database
+    /// </summary>
+    /// <param name="useColumnsForParameterNames"></param>
+    /// <returns></returns>
+    public new SqliteCommand GetUpdateCommand(bool useColumnsForParameterNames)
+    {
+      return (SqliteCommand)base.GetUpdateCommand(useColumnsForParameterNames);
+    }
+
+    /// <summary>
+    /// Returns the automatically-generated SQLite command to insert rows into the database
+    /// </summary>
+    /// <returns></returns>
+    public new SqliteCommand GetInsertCommand()
+    {
+      return (SqliteCommand)base.GetInsertCommand();
+    }
+
+    /// <summary>
+    /// Returns the automatically-generated SQLite command to insert rows into the database
+    /// </summary>
+    /// <param name="useColumnsForParameterNames"></param>
+    /// <returns></returns>
+    public new SqliteCommand GetInsertCommand(bool useColumnsForParameterNames)
+    {
+      return (SqliteCommand)base.GetInsertCommand(useColumnsForParameterNames);
+    }
+
+    /// <summary>
+    /// Overridden to hide its property from the designer
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false)]
+#endif
+    public override CatalogLocation CatalogLocation
+    {
+      get
+      {
+        return base.CatalogLocation;
+      }
+      set
+      {
+        base.CatalogLocation = value;
+      }
+    }
+
+    /// <summary>
+    /// Overridden to hide its property from the designer
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false)]
+#endif
+    public override string CatalogSeparator
+    {
+      get
+      {
+        return base.CatalogSeparator;
+      }
+      set
+      {
+        base.CatalogSeparator = value;
+      }
+    }
+
+    /// <summary>
+    /// Overridden to hide its property from the designer
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false)]
+#endif
+    [DefaultValue("[")]
+    public override string QuotePrefix
+    {
+      get
+      {
+        return base.QuotePrefix;
+      }
+      set
+      {
+        base.QuotePrefix = value;
+      }
+    }
+
+    /// <summary>
+    /// Overridden to hide its property from the designer
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false)]
+#endif
+    public override string QuoteSuffix
+    {
+      get
+      {
+        return base.QuoteSuffix;
+      }
+      set
+      {
+        base.QuoteSuffix = value;
+      }
+    }
+
+    /// <summary>
+    /// Places brackets around an identifier
+    /// </summary>
+    /// <param name="unquotedIdentifier">The identifier to quote</param>
+    /// <returns>The bracketed identifier</returns>
+    public override string QuoteIdentifier(string unquotedIdentifier)
+    {
+      if (String.IsNullOrEmpty(QuotePrefix)
+        || String.IsNullOrEmpty(QuoteSuffix)
+        || String.IsNullOrEmpty(unquotedIdentifier))
+        return unquotedIdentifier;
+
+      return QuotePrefix + unquotedIdentifier.Replace(QuoteSuffix, QuoteSuffix + QuoteSuffix) + QuoteSuffix;
+    }
+
+    /// <summary>
+    /// Removes brackets around an identifier
+    /// </summary>
+    /// <param name="quotedIdentifier">The quoted (bracketed) identifier</param>
+    /// <returns>The undecorated identifier</returns>
+    public override string UnquoteIdentifier(string quotedIdentifier)
+    {
+      if (String.IsNullOrEmpty(QuotePrefix)
+        || String.IsNullOrEmpty(QuoteSuffix)
+        || String.IsNullOrEmpty(quotedIdentifier))
+        return quotedIdentifier;
+
+      if (quotedIdentifier.StartsWith(QuotePrefix, StringComparison.InvariantCultureIgnoreCase) == false
+        || quotedIdentifier.EndsWith(QuoteSuffix, StringComparison.InvariantCultureIgnoreCase) == false)
+        return quotedIdentifier;
+
+      return quotedIdentifier.Substring(QuotePrefix.Length, quotedIdentifier.Length - (QuotePrefix.Length + QuoteSuffix.Length)).Replace(QuoteSuffix + QuoteSuffix, QuoteSuffix);
+    }
+
+    /// <summary>
+    /// Overridden to hide its property from the designer
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false)]
+#endif
+    public override string SchemaSeparator
+    {
+      get
+      {
+        return base.SchemaSeparator;
+      }
+      set
+      {
+        base.SchemaSeparator = value;
+      }
+    }
+
+    /// <summary>
+    /// Override helper, which can help the base command builder choose the right keys for the given query
+    /// </summary>
+    /// <param name="sourceCommand"></param>
+    /// <returns></returns>
+    protected override DataTable GetSchemaTable(DbCommand sourceCommand)
+    {
+      using (IDataReader reader = sourceCommand.ExecuteReader(CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly))
+      {
+        DataTable schema = reader.GetSchemaTable();
+
+        // If the query contains a primary key, turn off the IsUnique property
+        // for all the non-key columns
+        if (HasSchemaPrimaryKey(schema))
+          ResetIsUniqueSchemaColumn(schema);
+
+        // if table has no primary key we use unique columns as a fall back
+        return schema;
+      }
+    }
+
+    private bool HasSchemaPrimaryKey(DataTable schema)
+    {
+      DataColumn IsKeyColumn = schema.Columns[SchemaTableColumn.IsKey];
+      
+      foreach (DataRow schemaRow in schema.Rows)
+      {
+        if ((bool)schemaRow[IsKeyColumn] == true)
+          return true;
+      }
+
+      return false;
+    }
+
+    private void ResetIsUniqueSchemaColumn(DataTable schema)
+    {
+      DataColumn IsUniqueColumn = schema.Columns[SchemaTableColumn.IsUnique];
+      DataColumn IsKeyColumn = schema.Columns[SchemaTableColumn.IsKey];
+
+      foreach (DataRow schemaRow in schema.Rows)
+      {
+        if ((bool)schemaRow[IsKeyColumn] == false)
+          schemaRow[IsUniqueColumn] = false;
+      }
+
+      schema.AcceptChanges();
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConnection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConnection.cs
@@ -1,2428 +1,2428 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Collections.Generic;
-  using System.Globalization;
-  using System.ComponentModel;
-  using System.Text;
-  using System.Runtime.InteropServices;
-  using System.IO;
-
-  /// <summary>
-  /// SQLite implentation of DbConnection.
-  /// </summary>
-  /// <remarks>
-  /// The <see cref="ConnectionString">ConnectionString</see> property of the SqliteConnection class can contain the following parameter(s), delimited with a semi-colon:
-  /// <list type="table">
-  /// <listheader>
-  /// <term>Parameter</term>
-  /// <term>Values</term>
-  /// <term>Required</term>
-  /// <term>Default</term>
-  /// </listheader>
-  /// <item>
-  /// <description>Data Source</description>
-  /// <description>{filename}</description>
-  /// <description>Y</description>
-  /// <description></description>
-  /// </item>
-  /// <item>
-  /// <description>Version</description>
-  /// <description>3</description>
-  /// <description>N</description>
-  /// <description>3</description>
-  /// </item>
-  /// <item>
-  /// <description>UseUTF16Encoding</description>
-  /// <description><b>True</b><br/><b>False</b></description>
-  /// <description>N</description>
-  /// <description>False</description>
-  /// </item>
-  /// <item>
-  /// <description>DateTimeFormat</description>
-  /// <description><b>Ticks</b> - Use DateTime.Ticks<br/><b>ISO8601</b> - Use ISO8601 DateTime format</description>
-  /// <description>N</description>
-  /// <description>ISO8601</description>
-  /// </item>
-  /// <item>
-  /// <description>BinaryGUID</description>
-  /// <description><b>True</b> - Store GUID columns in binary form<br/><b>False</b> - Store GUID columns as text</description>
-  /// <description>N</description>
-  /// <description>True</description>
-  /// </item>
-  /// <item>
-  /// <description>Cache Size</description>
-  /// <description>{size in bytes}</description>
-  /// <description>N</description>
-  /// <description>2000</description>
-  /// </item>
-  /// <item>
-  /// <description>Synchronous</description>
-  /// <description><b>Normal</b> - Normal file flushing behavior<br/><b>Full</b> - Full flushing after all writes<br/><b>Off</b> - Underlying OS flushes I/O's</description>
-  /// <description>N</description>
-  /// <description>Normal</description>
-  /// </item>
-  /// <item>
-  /// <description>Page Size</description>
-  /// <description>{size in bytes}</description>
-  /// <description>N</description>
-  /// <description>1024</description>
-  /// </item>
-  /// <item>
-  /// <description>Password</description>
-  /// <description>{password}</description>
-  /// <description>N</description>
-  /// <description></description>
-  /// </item>
-  /// <item>
-  /// <description>Enlist</description>
-  /// <description><b>Y</b> - Automatically enlist in distributed transactions<br/><b>N</b> - No automatic enlistment</description>
-  /// <description>N</description>
-  /// <description>Y</description>
-  /// </item>
-  /// <item>
-  /// <description>Pooling</description>
-  /// <description><b>True</b> - Use connection pooling<br/><b>False</b> - Do not use connection pooling</description>
-  /// <description>N</description>
-  /// <description>False</description>
-  /// </item>
-  /// <item>
-  /// <description>FailIfMissing</description>
-  /// <description><b>True</b> - Don't create the database if it does not exist, throw an error instead<br/><b>False</b> - Automatically create the database if it does not exist</description>
-  /// <description>N</description>
-  /// <description>False</description>
-  /// </item>
-  /// <item>
-  /// <description>Max Page Count</description>
-  /// <description>{size in pages} - Limits the maximum number of pages (limits the size) of the database</description>
-  /// <description>N</description>
-  /// <description>0</description>
-  /// </item>
-  /// <item>
-  /// <description>Legacy Format</description>
-  /// <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
-  /// <description>N</description>
-  /// <description>False</description>
-  /// </item>
-  /// <item>
-  /// <description>Default Timeout</description>
-  /// <description>{time in seconds}<br/>The default command timeout</description>
-  /// <description>N</description>
-  /// <description>30</description>
-  /// </item>
-  /// <item>
-  /// <description>Journal Mode</description>
-  /// <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
-  /// <description>N</description>
-  /// <description>Delete</description>
-  /// </item>
-  /// <item>
-  /// <description>Read Only</description>
-  /// <description><b>True</b> - Open the database for read only access<br/><b>False</b> - Open the database for normal read/write access</description>
-  /// <description>N</description>
-  /// <description>False</description>
-  /// </item>
-  /// <item>
-  /// <description>Max Pool Size</description>
-  /// <description>The maximum number of connections for the given connection string that can be in the connection pool</description>
-  /// <description>N</description>
-  /// <description>100</description>
-  /// </item>
-  /// <item>
-  /// <description>Default IsolationLevel</description>
-  /// <description>The default transaciton isolation level</description>
-  /// <description>N</description>
-  /// <description>Serializable</description>
-  /// </item>
-  /// </list>
-  /// </remarks>
-  public sealed partial class SqliteConnection : DbConnection, ICloneable
-  {
-    private const string _dataDirectory = "|DataDirectory|";
-    private const string _masterdb = "sqlite_master";
-    private const string _tempmasterdb = "sqlite_temp_master";
-
-    /// <summary>
-    /// State of the current connection
-    /// </summary>
-    private ConnectionState _connectionState;
-    /// <summary>
-    /// The connection string
-    /// </summary>
-    private string _connectionString;
-    /// <summary>
-    /// Nesting level of the transactions open on the connection
-    /// </summary>
-    internal int _transactionLevel;
-
-    /// <summary>
-    /// The default isolation level for new transactions
-    /// </summary>
-    private IsolationLevel _defaultIsolation;
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    /// <summary>
-    /// Whether or not the connection is enlisted in a distrubuted transaction
-    /// </summary>
-    internal SQLiteEnlistment _enlistment;
-#endif
-    /// <summary>
-    /// The base SQLite object to interop with
-    /// </summary>
-    internal SQLiteBase _sql;
-    /// <summary>
-    /// The database filename minus path and extension
-    /// </summary>
-    private string _dataSource;
-    /// <summary>
-    /// Temporary password storage, emptied after the database has been opened
-    /// </summary>
-    private byte[] _password;
-
-    /// <summary>
-    /// Default command timeout
-    /// </summary>
-    private int _defaultTimeout = 30;
-
-    internal bool _binaryGuid;
-
-    internal long _version;
-
-    private event SQLiteUpdateEventHandler _updateHandler;
-    private event SQLiteCommitHandler _commitHandler;
-    private event EventHandler _rollbackHandler;
-
-    private SQLiteUpdateCallback _updateCallback;
-    private SQLiteCommitCallback _commitCallback;
-    private SQLiteRollbackCallback _rollbackCallback;
-
-    /// <summary>
-    /// This event is raised whenever the database is opened or closed.
-    /// </summary>
-    public override event StateChangeEventHandler StateChange;
-
-    ///<overloads>
-    /// Constructs a new SqliteConnection object
-    /// </overloads>
-    /// <summary>
-    /// Default constructor
-    /// </summary>
-    public SqliteConnection()
-      : this("")
-    {
-    }
-
-    /// <summary>
-    /// Initializes the connection with the specified connection string
-    /// </summary>
-    /// <param name="connectionString">The connection string to use on the connection</param>
-    public SqliteConnection(string connectionString)
-    {
-      _sql = null;
-      _connectionState = ConnectionState.Closed;
-      _connectionString = "";
-      _transactionLevel = 0;
-      _version = 0;
-      //_commandList = new List<WeakReference>();
-
-      if (connectionString != null)
-        ConnectionString = connectionString;
-    }
-
-    /// <summary>
-    /// Clones the settings and connection string from an existing connection.  If the existing connection is already open, this
-    /// function will open its own connection, enumerate any attached databases of the original connection, and automatically
-    /// attach to them.
-    /// </summary>
-    /// <param name="connection"></param>
-    public SqliteConnection(SqliteConnection connection)
-      : this(connection.ConnectionString)
-    {
-      string str;
-
-      if (connection.State == ConnectionState.Open)
-      {
-        Open();
-
-        // Reattach all attached databases from the existing connection
-        using (DataTable tbl = connection.GetSchema("Catalogs"))
-        {
-          foreach (DataRow row in tbl.Rows)
-          {
-            str = row[0].ToString();
-            if (String.Compare(str, "main", true, CultureInfo.InvariantCulture) != 0
-              && String.Compare(str, "temp", true, CultureInfo.InvariantCulture) != 0)
-            {
-              using (SqliteCommand cmd = CreateCommand())
-              {
-                cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "ATTACH DATABASE '{0}' AS [{1}]", row[1], row[0]);
-                cmd.ExecuteNonQuery();
-              }
-            }
-          }
-        }
-      }
-    }
-
-#if PLATFORM_COMPACTFRAMEWORK
-    /// <summary>
-    /// Obsolete
-    /// </summary>
-    public override int ConnectionTimeout
-    {
-      get
-      {
-        return 30;
-      }
-    }
-#endif
-
-    /// <summary>
-    /// Creates a clone of the connection.  All attached databases and user-defined functions are cloned.  If the existing connection is open, the cloned connection 
-    /// will also be opened.
-    /// </summary>
-    /// <returns></returns>
-    public object Clone()
-    {
-      return new SqliteConnection(this);
-    }
-
-    /// <summary>
-    /// Disposes of the SqliteConnection, closing it if it is active.
-    /// </summary>
-    /// <param name="disposing">True if the connection is being explicitly closed.</param>
-    protected override void Dispose(bool disposing)
-    {
-      base.Dispose(disposing);
-
-      if (_sql != null)
-        _sql.Dispose ();
-
-      if (disposing)
-        Close();
-    }
-
-    /// <summary>
-    /// Creates a database file.  This just creates a zero-byte file which SQLite
-    /// will turn into a database when the file is opened properly.
-    /// </summary>
-    /// <param name="databaseFileName">The file to create</param>
-    static public void CreateFile(string databaseFileName)
-    {
-      FileStream fs = File.Create(databaseFileName);
-      fs.Close();
-    }
-
-#if !SQLITE_STANDARD
-    /// <summary>
-    /// On NTFS volumes, this function turns on the compression attribute for the given file.
-    /// It must not be open or referenced at the time of the function call.
-    /// </summary>
-    /// <param name="databaseFileName">The file to compress</param>
-    [Obsolete("This functionality is being removed from a future version of the SQLite provider")]
-    static public void CompressFile(string databaseFileName)
-    {
-      UnsafeNativeMethods.sqlite3_compressfile(databaseFileName);
-    }
-#endif
-
-#if !SQLITE_STANDARD
-    /// <summary>
-    /// On NTFS volumes, this function removes the compression attribute for the given file.
-    /// It must not be open or referenced at the time of the function call.
-    /// </summary>
-    /// <param name="databaseFileName">The file to decompress</param>
-    [Obsolete("This functionality is being removed from a future version of the SQLite provider")]
-    static public void DecompressFile(string databaseFileName)
-    {
-      UnsafeNativeMethods.sqlite3_decompressfile(databaseFileName);
-    }
-#endif
-
-    /// <summary>
-    /// Raises the state change event when the state of the connection changes
-    /// </summary>
-    /// <param name="newState">The new state.  If it is different from the previous state, an event is raised.</param>
-    internal void OnStateChange(ConnectionState newState)
-    {
-      ConnectionState oldState = _connectionState;
-      _connectionState = newState;
-
-      if (StateChange != null && oldState != newState)
-      {
-        StateChangeEventArgs e = new StateChangeEventArgs(oldState, newState);
-        StateChange(this, e);
-      }
-    }
-
-    /// <summary>
-    /// OBSOLETE.  Creates a new SqliteTransaction if one isn't already active on the connection.
-    /// </summary>
-    /// <param name="isolationLevel">This parameter is ignored.</param>
-    /// <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
-    /// When FALSE, a writelock is obtained immediately.  The default is TRUE, but in a multi-threaded multi-writer 
-    /// environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
-    /// <returns>Returns a SqliteTransaction object.</returns>
-    [Obsolete("Use one of the standard BeginTransaction methods, this one will be removed soon")]
-    public SqliteTransaction BeginTransaction(IsolationLevel isolationLevel, bool deferredLock)
-    {
-      return (SqliteTransaction)BeginDbTransaction(deferredLock == false ? IsolationLevel.Serializable : IsolationLevel.ReadCommitted);
-    }
-
-    /// <summary>
-    /// OBSOLETE.  Creates a new SqliteTransaction if one isn't already active on the connection.
-    /// </summary>
-    /// <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
-    /// When FALSE, a writelock is obtained immediately.  The default is false, but in a multi-threaded multi-writer 
-    /// environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
-    /// <returns>Returns a SqliteTransaction object.</returns>
-    [Obsolete("Use one of the standard BeginTransaction methods, this one will be removed soon")]
-    public SqliteTransaction BeginTransaction(bool deferredLock)
-    {
-      return (SqliteTransaction)BeginDbTransaction(deferredLock == false ? IsolationLevel.Serializable : IsolationLevel.ReadCommitted);
-    }
-
-    /// <summary>
-    /// Creates a new SqliteTransaction if one isn't already active on the connection.
-    /// </summary>
-    /// <param name="isolationLevel">Supported isolation levels are Serializable, ReadCommitted and Unspecified.</param>
-    /// <remarks>
-    /// Unspecified will use the default isolation level specified in the connection string.  If no isolation level is specified in the 
-    /// connection string, Serializable is used.
-    /// Serializable transactions are the default.  In this mode, the engine gets an immediate lock on the database, and no other threads
-    /// may begin a transaction.  Other threads may read from the database, but not write.
-    /// With a ReadCommitted isolation level, locks are deferred and elevated as needed.  It is possible for multiple threads to start
-    /// a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread
-    /// has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached.
-    /// </remarks>
-    /// <returns>Returns a SqliteTransaction object.</returns>
-    public new SqliteTransaction BeginTransaction(IsolationLevel isolationLevel)
-    {
-      return (SqliteTransaction)BeginDbTransaction(isolationLevel);
-    }
-
-    /// <summary>
-    /// Creates a new SqliteTransaction if one isn't already active on the connection.
-    /// </summary>
-    /// <returns>Returns a SqliteTransaction object.</returns>
-    public new SqliteTransaction BeginTransaction()
-    {
-      return (SqliteTransaction)BeginDbTransaction(_defaultIsolation);
-    }
-
-    /// <summary>
-    /// Forwards to the local BeginTransaction() function
-    /// </summary>
-    /// <param name="isolationLevel">Supported isolation levels are Unspecified, Serializable, and ReadCommitted</param>
-    /// <returns></returns>
-    protected override DbTransaction BeginDbTransaction(IsolationLevel isolationLevel)
-    {
-      if (_connectionState != ConnectionState.Open)
-        throw new InvalidOperationException();
-
-      if (isolationLevel == IsolationLevel.Unspecified) isolationLevel = _defaultIsolation;
-
-      if (isolationLevel != IsolationLevel.Serializable && isolationLevel != IsolationLevel.ReadCommitted)
-        throw new ArgumentException("isolationLevel");
-
-      return new SqliteTransaction(this, isolationLevel != IsolationLevel.Serializable);
-    }
-
-    /// <summary>
-    /// Not implemented
-    /// </summary>
-    /// <param name="databaseName"></param>
-    public override void ChangeDatabase(string databaseName)
-    {
-      throw new NotImplementedException();
-    }
-
-    /// <summary>
-    /// When the database connection is closed, all commands linked to this connection are automatically reset.
-    /// </summary>
-    public override void Close()
-    {
-      if (_sql != null)
-      {
-#if !PLATFORM_COMPACTFRAMEWORK
-        if (_enlistment != null)
-        {
-          // If the connection is enlisted in a transaction scope and the scope is still active,
-          // we cannot truly shut down this connection until the scope has completed.  Therefore make a 
-          // hidden connection temporarily to hold open the connection until the scope has completed.
-          SqliteConnection cnn = new SqliteConnection();
-          cnn._sql = _sql;
-          cnn._transactionLevel = _transactionLevel;
-          cnn._enlistment = _enlistment;
-          cnn._connectionState = _connectionState;
-          cnn._version = _version;
-
-          cnn._enlistment._transaction._cnn = cnn;
-          cnn._enlistment._disposeConnection = true;
-          _sql = null;
-          _enlistment = null;
-        }
-#endif
-        if (_sql != null)
-        {
-          _sql.Close();
-        }
-        _sql = null;
-        _transactionLevel = 0;
-      }
-      OnStateChange(ConnectionState.Closed);
-    }
-
-    /// <summary>
-    /// Clears the connection pool associated with the connection.  Any other active connections using the same database file
-    /// will be discarded instead of returned to the pool when they are closed.
-    /// </summary>
-    /// <param name="connection"></param>
-    public static void ClearPool(SqliteConnection connection)
-    {
-      if (connection._sql == null) return;
-      connection._sql.ClearPool();
-    }
-
-    /// <summary>
-    /// Clears all connection pools.  Any active connections will be discarded instead of sent to the pool when they are closed.
-    /// </summary>
-    public static void ClearAllPools()
-    {
-      SqliteConnectionPool.ClearAllPools();
-    }
-
-    /// <summary>
-    /// The connection string containing the parameters for the connection
-    /// </summary>
-    /// <remarks>
-    /// <list type="table">
-    /// <listheader>
-    /// <term>Parameter</term>
-    /// <term>Values</term>
-    /// <term>Required</term>
-    /// <term>Default</term>
-    /// </listheader>
-    /// <item>
-    /// <description>Data Source</description>
-    /// <description>{filename}</description>
-    /// <description>Y</description>
-    /// <description></description>
-    /// </item>
-    /// <item>
-    /// <description>Version</description>
-    /// <description>3</description>
-    /// <description>N</description>
-    /// <description>3</description>
-    /// </item>
-    /// <item>
-    /// <description>UseUTF16Encoding</description>
-    /// <description><b>True</b><br/><b>False</b></description>
-    /// <description>N</description>
-    /// <description>False</description>
-    /// </item>
-    /// <item>
-    /// <description>DateTimeFormat</description>
-    /// <description><b>Ticks</b> - Use DateTime.Ticks<br/><b>ISO8601</b> - Use ISO8601 DateTime format<br/><b>JulianDay</b> - Use JulianDay format</description>
-    /// <description>N</description>
-    /// <description>ISO8601</description>
-    /// </item>
-    /// <item>
-    /// <description>BinaryGUID</description>
-    /// <description><b>Yes/On/1</b> - Store GUID columns in binary form<br/><b>No/Off/0</b> - Store GUID columns as text</description>
-    /// <description>N</description>
-    /// <description>On</description>
-    /// </item>
-    /// <item>
-    /// <description>Cache Size</description>
-    /// <description>{size in bytes}</description>
-    /// <description>N</description>
-    /// <description>2000</description>
-    /// </item>
-    /// <item>
-    /// <description>Synchronous</description>
-    /// <description><b>Normal</b> - Normal file flushing behavior<br/><b>Full</b> - Full flushing after all writes<br/><b>Off</b> - Underlying OS flushes I/O's</description>
-    /// <description>N</description>
-    /// <description>Normal</description>
-    /// </item>
-    /// <item>
-    /// <description>Page Size</description>
-    /// <description>{size in bytes}</description>
-    /// <description>N</description>
-    /// <description>1024</description>
-    /// </item>
-    /// <item>
-    /// <description>Password</description>
-    /// <description>{password}</description>
-    /// <description>N</description>
-    /// <description></description>
-    /// </item>
-    /// <item>
-    /// <description>Enlist</description>
-    /// <description><B>Y</B> - Automatically enlist in distributed transactions<br/><b>N</b> - No automatic enlistment</description>
-    /// <description>N</description>
-    /// <description>Y</description>
-    /// </item>
-    /// <item>
-    /// <description>Pooling</description>
-    /// <description><b>True</b> - Use connection pooling<br/><b>False</b> - Do not use connection pooling</description>
-    /// <description>N</description>
-    /// <description>False</description>
-    /// </item>
-    /// <item>
-    /// <description>FailIfMissing</description>
-    /// <description><b>True</b> - Don't create the database if it does not exist, throw an error instead<br/><b>False</b> - Automatically create the database if it does not exist</description>
-    /// <description>N</description>
-    /// <description>False</description>
-    /// </item>
-    /// <item>
-    /// <description>Max Page Count</description>
-    /// <description>{size in pages} - Limits the maximum number of pages (limits the size) of the database</description>
-    /// <description>N</description>
-    /// <description>0</description>
-    /// </item>
-    /// <item>
-    /// <description>Legacy Format</description>
-    /// <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
-    /// <description>N</description>
-    /// <description>False</description>
-    /// </item>
-    /// <item>
-    /// <description>Default Timeout</description>
-    /// <description>{time in seconds}<br/>The default command timeout</description>
-    /// <description>N</description>
-    /// <description>30</description>
-    /// </item>
-    /// <item>
-    /// <description>Journal Mode</description>
-    /// <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
-    /// <description>N</description>
-    /// <description>Delete</description>
-    /// </item>
-    /// <item>
-    /// <description>Read Only</description>
-    /// <description><b>True</b> - Open the database for read only access<br/><b>False</b> - Open the database for normal read/write access</description>
-    /// <description>N</description>
-    /// <description>False</description>
-    /// </item>
-    /// <item>
-    /// <description>Max Pool Size</description>
-    /// <description>The maximum number of connections for the given connection string that can be in the connection pool</description>
-    /// <description>N</description>
-    /// <description>100</description>
-    /// </item>
-    /// <item>
-    /// <description>Default IsolationLevel</description>
-    /// <description>The default transaciton isolation level</description>
-    /// <description>N</description>
-    /// <description>Serializable</description>
-    /// </item>
-    /// </list>
-    /// </remarks>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [RefreshProperties(RefreshProperties.All), DefaultValue("")]
-    [Editor("SQLite.Designer.SqliteConnectionStringEditor, SQLite.Designer, Version=1.0.36.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-    public override string ConnectionString
-    {
-      get
-      {
-        return _connectionString;
-      }
-      set
-      {
-        if (value == null)
-          throw new ArgumentNullException();
-
-        else if (_connectionState != ConnectionState.Closed)
-          throw new InvalidOperationException();
-
-        _connectionString = value;
-      }
-    }
-
-    /// <summary>
-    /// Create a new SqliteCommand and associate it with this connection.
-    /// </summary>
-    /// <returns>Returns an instantiated SqliteCommand object already assigned to this connection.</returns>
-    public new SqliteCommand CreateCommand()
-    {
-      return new SqliteCommand(this);
-    }
-
-    /// <summary>
-    /// Forwards to the local CreateCommand() function
-    /// </summary>
-    /// <returns></returns>
-    protected override DbCommand CreateDbCommand()
-    {
-      return CreateCommand();
-    }
-
-    /// <summary>
-    /// Returns the filename without extension or path
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-#endif
-    public override string DataSource
-    {
-      get
-      {
-        return _dataSource;
-      }
-    }
-
-    /// <summary>
-    /// Returns an empty string
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-#endif
-    public override string Database
-    {
-      get
-      {
-        return "main";
-      }
-    }
-
-    /// <summary>
-    /// Maps mono-specific connection string keywords to the standard ones
-    /// </summary>
-    /// <returns>The mapped keyword name</returns>
-    internal static void MapMonoKeyword (string[] arPiece, SortedList<string, string> ls)
-    {
-            string keyword, value;
-            
-            switch (arPiece[0].ToLower (CultureInfo.InvariantCulture)) {
-                    case "uri":
-                            keyword = "Data Source";
-                            value = MapMonoUriPath (arPiece[1]);
-                            break;
-                            
-                    default:
-                            keyword = arPiece[0];
-                            value = arPiece[1];
-                            break;
-            }
-
-            ls.Add(keyword, value);
-    }
-
-    internal static string MapMonoUriPath (string path)
-    {
-            if (path.StartsWith ("file://")) {
-                    return path.Substring (7);
-            } else if (path.StartsWith ("file:")) {
-                    return path.Substring (5);
-            } else if (path.StartsWith ("/")) {
-                    return path;
-            } else {
-                    throw new InvalidOperationException ("Invalid connection string: invalid URI");
-            }
-    }
-
-    internal static string MapUriPath(string path)
-    {
-	    if (path.StartsWith ("file://"))
-		    return path.Substring (7);
-      else if (path.StartsWith ("file:"))
-		    return path.Substring (5);
-      else if (path.StartsWith ("/"))
-		    return path;
-      else
-		    throw new InvalidOperationException ("Invalid connection string: invalid URI");
-    }
-    
-    /// <summary>
-    /// Parses the connection string into component parts
-    /// </summary>
-    /// <param name="connectionString">The connection string to parse</param>
-    /// <returns>An array of key-value pairs representing each parameter of the connection string</returns>
-    internal static SortedList<string, string> ParseConnectionString(string connectionString)
-    {
-      string s = connectionString.Replace (',', ';'); // Mono compatibility
-      int n;
-      SortedList<string, string> ls = new SortedList<string, string>(StringComparer.OrdinalIgnoreCase);
-
-      // First split into semi-colon delimited values.  The Split() function of SQLiteBase accounts for and properly
-      // skips semi-colons in quoted strings
-      string[] arParts = SqliteConvert.Split(s, ';');
-      string[] arPiece;
-
-      int x = arParts.Length;
-      // For each semi-colon piece, split into key and value pairs by the presence of the = sign
-      for (n = 0; n < x; n++)
-      {
-        arPiece = SqliteConvert.Split(arParts[n], '=');
-        if (arPiece.Length == 2)
-        {
-	  MapMonoKeyword (arPiece, ls);
-        }
-        else throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, "Invalid ConnectionString format for parameter \"{0}\"", (arPiece.Length > 0) ? arPiece[0] : "null"));
-      }
-      return ls;
-    }
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    /// <summary>
-    /// Manual distributed transaction enlistment support
-    /// </summary>
-    /// <param name="transaction">The distributed transaction to enlist in</param>
-    public override void EnlistTransaction(System.Transactions.Transaction transaction)
-    {
-      if (_transactionLevel > 0 && transaction != null)
-        throw new ArgumentException("Unable to enlist in transaction, a local transaction already exists");
-
-      if (_enlistment != null && transaction != _enlistment._scope)
-        throw new ArgumentException("Already enlisted in a transaction");
-
-      _enlistment = new SQLiteEnlistment(this, transaction);
-    }
-#endif
-
-    /// <summary>
-    /// Looks for a key in the array of key/values of the parameter string.  If not found, return the specified default value
-    /// </summary>
-    /// <param name="items">The list to look in</param>
-    /// <param name="key">The key to find</param>
-    /// <param name="defValue">The default value to return if the key is not found</param>
-    /// <returns>The value corresponding to the specified key, or the default value if not found.</returns>
-    static internal string FindKey(SortedList<string, string> items, string key, string defValue)
-    {
-      string ret;
-
-      if (items.TryGetValue(key, out ret)) return ret;
-
-      return defValue;
-    }
-
-    /// <summary>
-    /// Opens the connection using the parameters found in the <see cref="ConnectionString">ConnectionString</see>
-    /// </summary>
-    public override void Open()
-    {
-      if (_connectionState != ConnectionState.Closed)
-        throw new InvalidOperationException();
-
-      Close();
-
-      SortedList<string, string> opts = ParseConnectionString(_connectionString);
-      string fileName;
-
-      if (Convert.ToInt32(FindKey(opts, "Version", "3"), CultureInfo.InvariantCulture) != 3)
-        throw new NotSupportedException("Only SQLite Version 3 is supported at this time");
-
-      fileName = FindKey(opts, "Data Source", "");
-
-      if (String.IsNullOrEmpty(fileName))
-      {
-        fileName = FindKey(opts, "Uri", "");
-        if (String.IsNullOrEmpty(fileName))
-          throw new ArgumentException("Data Source cannot be empty.  Use :memory: to open an in-memory database");
-        else
-          fileName = MapUriPath(fileName);
-      }
-
-      if (String.Compare(fileName, ":MEMORY:", true, CultureInfo.InvariantCulture) == 0)
-        fileName = ":memory:";
-      else
-      {
-#if PLATFORM_COMPACTFRAMEWORK
-       if (fileName.StartsWith(".\\"))
-         fileName = Path.GetDirectoryName(System.Reflection.Assembly.GetCallingAssembly().GetName().CodeBase) + fileName.Substring(1);
-#endif
-       fileName = ExpandFileName(fileName);
-      }
-      try
-      {
-        bool usePooling = (SqliteConvert.ToBoolean(FindKey(opts, "Pooling", Boolean.FalseString)) == true);
-        bool bUTF16 = (SqliteConvert.ToBoolean(FindKey(opts, "UseUTF16Encoding", Boolean.FalseString)) == true);
-        int maxPoolSize = Convert.ToInt32(FindKey(opts, "Max Pool Size", "100"));
-
-        _defaultTimeout = Convert.ToInt32(FindKey(opts, "Default Timeout", "30"), CultureInfo.CurrentCulture);
-
-        _defaultIsolation = (IsolationLevel)Enum.Parse(typeof(IsolationLevel), FindKey(opts, "Default IsolationLevel", "Serializable"), true);
-        if (_defaultIsolation != IsolationLevel.Serializable && _defaultIsolation != IsolationLevel.ReadCommitted)
-          throw new NotSupportedException("Invalid Default IsolationLevel specified");
-
-        SQLiteDateFormats dateFormat = (SQLiteDateFormats)Enum.Parse(typeof(SQLiteDateFormats), FindKey(opts, "DateTimeFormat", "ISO8601"), true);
-        //string temp = FindKey(opts, "DateTimeFormat", "ISO8601");
-        //if (String.Compare(temp, "ticks", true, CultureInfo.InvariantCulture) == 0) dateFormat = SQLiteDateFormats.Ticks;
-        //else if (String.Compare(temp, "julianday", true, CultureInfo.InvariantCulture) == 0) dateFormat = SQLiteDateFormats.JulianDay;
-
-        if (bUTF16) // SQLite automatically sets the encoding of the database to UTF16 if called from sqlite3_open16()
-          _sql = new SQLite3_UTF16(dateFormat);
-        else
-          _sql = new SQLite3(dateFormat);
-
-        SQLiteOpenFlagsEnum flags = SQLiteOpenFlagsEnum.None;
-
-        if (SqliteConvert.ToBoolean(FindKey(opts, "Read Only", Boolean.FalseString)) == true)
-          flags |= SQLiteOpenFlagsEnum.ReadOnly;
-        else {
-          flags |= SQLiteOpenFlagsEnum.ReadWrite;
-          if (SqliteConvert.ToBoolean(FindKey(opts, "FailIfMissing", Boolean.FalseString)) == false)
-            flags |= SQLiteOpenFlagsEnum.Create;
-        }
-	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionComplete", Boolean.FalseString)))
-		flags |= SQLiteOpenFlagsEnum.FileProtectionComplete;
-	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionCompleteUnlessOpen", Boolean.FalseString)))
-		flags |= SQLiteOpenFlagsEnum.FileProtectionCompleteUnlessOpen;
-	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionCompleteUntilFirstUserAuthentication", Boolean.FalseString)))
-		flags |= SQLiteOpenFlagsEnum.FileProtectionCompleteUntilFirstUserAuthentication;
-	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionNone", Boolean.FalseString)))
-		flags |= SQLiteOpenFlagsEnum.FileProtectionNone;
-	
-				
-        _sql.Open(fileName, flags, maxPoolSize, usePooling);
-
-        _binaryGuid = (SqliteConvert.ToBoolean(FindKey(opts, "BinaryGUID", Boolean.TrueString)) == true);
-
-        string password = FindKey(opts, "Password", null);
-
-        if (String.IsNullOrEmpty(password) == false)
-          _sql.SetPassword(System.Text.UTF8Encoding.UTF8.GetBytes(password));
-        else if (_password != null)
-          _sql.SetPassword(_password);
-        _password = null;
-
-        _dataSource = Path.GetFileNameWithoutExtension(fileName);
-
-        OnStateChange(ConnectionState.Open);
-        _version++;
-
-        using (SqliteCommand cmd = CreateCommand())
-        {
-          string defValue;
-
-          if (fileName != ":memory:")
-          {
-            defValue = FindKey(opts, "Page Size", "1024");
-            if (Convert.ToInt32(defValue, CultureInfo.InvariantCulture) != 1024)
-            {
-              cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA page_size={0}", defValue);
-              cmd.ExecuteNonQuery();
-            }
-          }
-
-          defValue = FindKey(opts, "Max Page Count", "0");
-          if (Convert.ToInt32(defValue, CultureInfo.InvariantCulture) != 0)
-          {
-            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA max_page_count={0}", defValue);
-            cmd.ExecuteNonQuery();
-          }
-
-          defValue = FindKey(opts, "Legacy Format", Boolean.FalseString);
-          cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA legacy_file_format={0}", SqliteConvert.ToBoolean(defValue) == true ? "ON" : "OFF");
-          cmd.ExecuteNonQuery();
-
-          defValue = FindKey(opts, "Synchronous", "Normal");
-          if (String.Compare(defValue, "Full", StringComparison.OrdinalIgnoreCase) != 0)
-          {
-            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA synchronous={0}", defValue);
-            cmd.ExecuteNonQuery();
-          }
-
-          defValue = FindKey(opts, "Cache Size", "2000");
-          if (Convert.ToInt32(defValue, CultureInfo.InvariantCulture) != 2000)
-          {
-            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA cache_size={0}", defValue);
-            cmd.ExecuteNonQuery();
-          }
-
-          defValue = FindKey(opts, "Journal Mode", "Delete");
-          if (String.Compare(defValue, "Default", StringComparison.OrdinalIgnoreCase) != 0)
-          {
-            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA journal_mode={0}", defValue);
-            cmd.ExecuteNonQuery();
-          }
-        }
-
-        if (_commitHandler != null)
-          _sql.SetCommitHook(_commitCallback);
-
-        if (_updateHandler != null)
-          _sql.SetUpdateHook(_updateCallback);
-
-        if (_rollbackHandler != null)
-          _sql.SetRollbackHook(_rollbackCallback);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-        if (global::System.Transactions.Transaction.Current != null && SqliteConvert.ToBoolean(FindKey(opts, "Enlist", Boolean.TrueString)) == true)
-		EnlistTransaction(global::System.Transactions.Transaction.Current);
-#endif
-      }
-      catch (SqliteException)
-      {
-        Close();
-        throw;
-      }
-    }
-
-    /// <summary>
-    /// Gets/sets the default command timeout for newly-created commands.  This is especially useful for 
-    /// commands used internally such as inside a SqliteTransaction, where setting the timeout is not possible.
-    /// This can also be set in the ConnectionString with "Default Timeout"
-    /// </summary>
-    public int DefaultTimeout
-    {
-      get { return _defaultTimeout; }
-      set { _defaultTimeout = value; }
-    }
-
-    /// <summary>
-    /// Returns the version of the underlying SQLite database engine
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-#endif
-    public override string ServerVersion
-    {
-      get
-      {
-        if (_connectionState != ConnectionState.Open)
-          throw new InvalidOperationException();
-
-        return _sql.Version;
-      }
-    }
-
-    /// <summary>
-    /// Returns the version of the underlying SQLite database engine
-    /// </summary>
-    public static string SQLiteVersion
-    {
-      get { return SQLite3.SQLiteVersion; }
-    }
-
-    /// <summary>
-    /// Returns the state of the connection.
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
-#endif
-    public override ConnectionState State
-    {
-      get
-      {
-        return _connectionState;
-      }
-    }
-
-    /// <summary>
-    /// Change the password (or assign a password) to an open database.
-    /// </summary>
-    /// <remarks>
-    /// No readers or writers may be active for this process.  The database must already be open
-    /// and if it already was password protected, the existing password must already have been supplied.
-    /// </remarks>
-    /// <param name="newPassword">The new password to assign to the database</param>
-    public void ChangePassword(string newPassword)
-    {
-      ChangePassword(String.IsNullOrEmpty(newPassword) ? null : System.Text.UTF8Encoding.UTF8.GetBytes(newPassword));
-    }
-
-    /// <summary>
-    /// Change the password (or assign a password) to an open database.
-    /// </summary>
-    /// <remarks>
-    /// No readers or writers may be active for this process.  The database must already be open
-    /// and if it already was password protected, the existing password must already have been supplied.
-    /// </remarks>
-    /// <param name="newPassword">The new password to assign to the database</param>
-    public void ChangePassword(byte[] newPassword)
-    {
-      if (_connectionState != ConnectionState.Open)
-        throw new InvalidOperationException("Database must be opened before changing the password.");
-
-      _sql.ChangePassword(newPassword);
-    }
-
-    /// <summary>
-    /// Sets the password for a password-protected database.  A password-protected database is
-    /// unusable for any operation until the password has been set.
-    /// </summary>
-    /// <param name="databasePassword">The password for the database</param>
-    public void SetPassword(string databasePassword)
-    {
-      SetPassword(String.IsNullOrEmpty(databasePassword) ? null : System.Text.UTF8Encoding.UTF8.GetBytes(databasePassword));
-    }
-
-    /// <summary>
-    /// Sets the password for a password-protected database.  A password-protected database is
-    /// unusable for any operation until the password has been set.
-    /// </summary>
-    /// <param name="databasePassword">The password for the database</param>
-    public void SetPassword(byte[] databasePassword)
-    {
-      if (_connectionState != ConnectionState.Closed)
-        throw new InvalidOperationException("Password can only be set before the database is opened.");
-
-      if (databasePassword != null)
-        if (databasePassword.Length == 0) databasePassword = null;
-
-      _password = databasePassword;
-    }
-
-    /// <summary>
-    /// Expand the filename of the data source, resolving the |DataDirectory| macro as appropriate.
-    /// </summary>
-    /// <param name="sourceFile">The database filename to expand</param>
-    /// <returns>The expanded path and filename of the filename</returns>
-    private string ExpandFileName(string sourceFile)
-    {
-      if (String.IsNullOrEmpty(sourceFile)) return sourceFile;
-
-      if (sourceFile.StartsWith(_dataDirectory, StringComparison.OrdinalIgnoreCase))
-      {
-        string dataDirectory;
-
-#if PLATFORM_COMPACTFRAMEWORK
-        dataDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetCallingAssembly().GetName().CodeBase);
-#else
-        dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory") as string;
-        if (String.IsNullOrEmpty(dataDirectory))
-          dataDirectory = AppDomain.CurrentDomain.BaseDirectory;
-#endif
-
-        if (sourceFile.Length > _dataDirectory.Length)
-        {
-          if (sourceFile[_dataDirectory.Length] == Path.DirectorySeparatorChar ||
-              sourceFile[_dataDirectory.Length] == Path.AltDirectorySeparatorChar)
-            sourceFile = sourceFile.Remove(_dataDirectory.Length, 1);
-        }
-        sourceFile = Path.Combine(dataDirectory, sourceFile.Substring(_dataDirectory.Length));
-      }
-
-#if !PLATFORM_COMPACTFRAMEWORK
-      sourceFile = Path.GetFullPath(sourceFile);
-#endif
-
-      return sourceFile;
-    }
-
-    ///<overloads>
-    /// The following commands are used to extract schema information out of the database.  Valid schema types are:
-    /// <list type="bullet">
-    /// <item>
-    /// <description>MetaDataCollections</description>
-    /// </item>
-    /// <item>
-    /// <description>DataSourceInformation</description>
-    /// </item>
-    /// <item>
-    /// <description>Catalogs</description>
-    /// </item>
-    /// <item>
-    /// <description>Columns</description>
-    /// </item>
-    /// <item>
-    /// <description>ForeignKeys</description>
-    /// </item>
-    /// <item>
-    /// <description>Indexes</description>
-    /// </item>
-    /// <item>
-    /// <description>IndexColumns</description>
-    /// </item>
-    /// <item>
-    /// <description>Tables</description>
-    /// </item>
-    /// <item>
-    /// <description>Views</description>
-    /// </item>
-    /// <item>
-    /// <description>ViewColumns</description>
-    /// </item>
-    /// </list>
-    /// </overloads>
-    /// <summary>
-    /// Returns the MetaDataCollections schema
-    /// </summary>
-    /// <returns>A DataTable of the MetaDataCollections schema</returns>
-    public override DataTable GetSchema()
-    {
-      return GetSchema("MetaDataCollections", null);
-    }
-
-    /// <summary>
-    /// Returns schema information of the specified collection
-    /// </summary>
-    /// <param name="collectionName">The schema collection to retrieve</param>
-    /// <returns>A DataTable of the specified collection</returns>
-    public override DataTable GetSchema(string collectionName)
-    {
-      return GetSchema(collectionName, new string[0]);
-    }
-
-    /// <summary>
-    /// Retrieves schema information using the specified constraint(s) for the specified collection
-    /// </summary>
-    /// <param name="collectionName">The collection to retrieve</param>
-    /// <param name="restrictionValues">The restrictions to impose</param>
-    /// <returns>A DataTable of the specified collection</returns>
-    public override DataTable GetSchema(string collectionName, string[] restrictionValues)
-    {
-      if (_connectionState != ConnectionState.Open)
-        throw new InvalidOperationException();
-
-      string[] parms = new string[5];
-
-      if (restrictionValues == null) restrictionValues = new string[0];
-      restrictionValues.CopyTo(parms, 0);
-
-      switch (collectionName.ToUpper(CultureInfo.InvariantCulture))
-      {
-        case "METADATACOLLECTIONS":
-          return Schema_MetaDataCollections();
-        case "DATASOURCEINFORMATION":
-          return Schema_DataSourceInformation();
-        case "DATATYPES":
-          return Schema_DataTypes();
-        case "COLUMNS":
-        case "TABLECOLUMNS":
-          return Schema_Columns(parms[0], parms[2], parms[3]);
-        case "INDEXES":
-          return Schema_Indexes(parms[0], parms[2], parms[3]);
-        case "TRIGGERS":
-          return Schema_Triggers(parms[0], parms[2], parms[3]);
-        case "INDEXCOLUMNS":
-          return Schema_IndexColumns(parms[0], parms[2], parms[3], parms[4]);
-        case "TABLES":
-          return Schema_Tables(parms[0], parms[2], parms[3]);
-        case "VIEWS":
-          return Schema_Views(parms[0], parms[2]);
-        case "VIEWCOLUMNS":
-          return Schema_ViewColumns(parms[0], parms[2], parms[3]);
-        case "FOREIGNKEYS":
-          return Schema_ForeignKeys(parms[0], parms[2], parms[3]);
-        case "CATALOGS":
-          return Schema_Catalogs(parms[0]);
-        case "RESERVEDWORDS":
-          return Schema_ReservedWords();
-      }
-      throw new NotSupportedException();
-    }
-
-    private static DataTable Schema_ReservedWords()
-    {
-      DataTable tbl = new DataTable("MetaDataCollections");
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("ReservedWord", typeof(string));
-      tbl.Columns.Add("MaximumVersion", typeof(string));
-      tbl.Columns.Add("MinimumVersion", typeof(string));
-
-      tbl.BeginLoadData();
-      DataRow row;
-      foreach (string word in SR.Keywords.Split(new char[] { ',' }))
-      {
-        row = tbl.NewRow();
-        row[0] = word;
-        tbl.Rows.Add(row);
-      }
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Builds a MetaDataCollections schema datatable
-    /// </summary>
-    /// <returns>DataTable</returns>
-    private static DataTable Schema_MetaDataCollections()
-    {
-      DataTable tbl = new DataTable("MetaDataCollections");
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("CollectionName", typeof(string));
-      tbl.Columns.Add("NumberOfRestrictions", typeof(int));
-      tbl.Columns.Add("NumberOfIdentifierParts", typeof(int));
-
-      tbl.BeginLoadData();
-
-      StringReader reader = new StringReader(SR.MetaDataCollections);
-      tbl.ReadXml(reader);
-      reader.Close();
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Builds a DataSourceInformation datatable
-    /// </summary>
-    /// <returns>DataTable</returns>
-    private DataTable Schema_DataSourceInformation()
-    {
-      DataTable tbl = new DataTable("DataSourceInformation");
-      DataRow row;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add(DbMetaDataColumnNames.CompositeIdentifierSeparatorPattern, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.DataSourceProductName, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.DataSourceProductVersion, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.DataSourceProductVersionNormalized, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.GroupByBehavior, typeof(int));
-      tbl.Columns.Add(DbMetaDataColumnNames.IdentifierPattern, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.IdentifierCase, typeof(int));
-      tbl.Columns.Add(DbMetaDataColumnNames.OrderByColumnsInSelect, typeof(bool));
-      tbl.Columns.Add(DbMetaDataColumnNames.ParameterMarkerFormat, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.ParameterMarkerPattern, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.ParameterNameMaxLength, typeof(int));
-      tbl.Columns.Add(DbMetaDataColumnNames.ParameterNamePattern, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.QuotedIdentifierPattern, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.QuotedIdentifierCase, typeof(int));
-      tbl.Columns.Add(DbMetaDataColumnNames.StatementSeparatorPattern, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.StringLiteralPattern, typeof(string));
-      tbl.Columns.Add(DbMetaDataColumnNames.SupportedJoinOperators, typeof(int));
-
-      tbl.BeginLoadData();
-
-      row = tbl.NewRow();
-      row.ItemArray = new object[] {
-        null,
-        "SQLite",
-        _sql.Version,
-        _sql.Version,
-        3,
-        @"(^\[\p{Lo}\p{Lu}\p{Ll}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Nd}@$#_]*$)|(^\[[^\]\0]|\]\]+\]$)|(^\""[^\""\0]|\""\""+\""$)",
-        1,
-        false,
-        "{0}",
-        @"@[\p{Lo}\p{Lu}\p{Ll}\p{Lm}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Lm}\p{Nd}\uff3f_@#\$]*(?=\s+|$)",
-        255,
-        @"^[\p{Lo}\p{Lu}\p{Ll}\p{Lm}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Lm}\p{Nd}\uff3f_@#\$]*(?=\s+|$)",
-        @"(([^\[]|\]\])*)",
-        1,
-        ";",
-        @"'(([^']|'')*)'",
-        15
-      };
-      tbl.Rows.Add(row);
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Build a Columns schema
-    /// </summary>
-    /// <param name="strCatalog">The catalog (attached database) to query, can be null</param>
-    /// <param name="strTable">The table to retrieve schema information for, must not be null</param>
-    /// <param name="strColumn">The column to retrieve schema information for, can be null</param>
-    /// <returns>DataTable</returns>
-    private DataTable Schema_Columns(string strCatalog, string strTable, string strColumn)
-    {
-      DataTable tbl = new DataTable("Columns");
-      DataRow row;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("COLUMN_NAME", typeof(string));
-      tbl.Columns.Add("COLUMN_GUID", typeof(Guid));
-      tbl.Columns.Add("COLUMN_PROPID", typeof(long));
-      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
-      tbl.Columns.Add("COLUMN_HASDEFAULT", typeof(bool));
-      tbl.Columns.Add("COLUMN_DEFAULT", typeof(string));
-      tbl.Columns.Add("COLUMN_FLAGS", typeof(long));
-      tbl.Columns.Add("IS_NULLABLE", typeof(bool));
-      tbl.Columns.Add("DATA_TYPE", typeof(string));
-      tbl.Columns.Add("TYPE_GUID", typeof(Guid));
-      tbl.Columns.Add("CHARACTER_MAXIMUM_LENGTH", typeof(int));
-      tbl.Columns.Add("CHARACTER_OCTET_LENGTH", typeof(int));
-      tbl.Columns.Add("NUMERIC_PRECISION", typeof(int));
-      tbl.Columns.Add("NUMERIC_SCALE", typeof(int));
-      tbl.Columns.Add("DATETIME_PRECISION", typeof(long));
-      tbl.Columns.Add("CHARACTER_SET_CATALOG", typeof(string));
-      tbl.Columns.Add("CHARACTER_SET_SCHEMA", typeof(string));
-      tbl.Columns.Add("CHARACTER_SET_NAME", typeof(string));
-      tbl.Columns.Add("COLLATION_CATALOG", typeof(string));
-      tbl.Columns.Add("COLLATION_SCHEMA", typeof(string));
-      tbl.Columns.Add("COLLATION_NAME", typeof(string));
-      tbl.Columns.Add("DOMAIN_CATALOG", typeof(string));
-      tbl.Columns.Add("DOMAIN_NAME", typeof(string));
-      tbl.Columns.Add("DESCRIPTION", typeof(string));
-      tbl.Columns.Add("PRIMARY_KEY", typeof(bool));
-      tbl.Columns.Add("EDM_TYPE", typeof(string));
-      tbl.Columns.Add("AUTOINCREMENT", typeof(bool));
-      tbl.Columns.Add("UNIQUE", typeof(bool));
-
-      tbl.BeginLoadData();
-
-      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
-
-      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-
-      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table' OR [type] LIKE 'view'", strCatalog, master), this))
-      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
-      {
-        while (rdTables.Read())
-        {
-          if (String.IsNullOrEmpty(strTable) || String.Compare(strTable, rdTables.GetString(2), true, CultureInfo.InvariantCulture) == 0)
-          {
-            try
-            {
-              using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}]", strCatalog, rdTables.GetString(2)), this))
-              using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader(CommandBehavior.SchemaOnly))
-              using (DataTable tblSchema = rd.GetSchemaTable(true, true))
-              {
-                foreach (DataRow schemaRow in tblSchema.Rows)
-                {
-                  if (String.Compare(schemaRow[SchemaTableColumn.ColumnName].ToString(), strColumn, true, CultureInfo.InvariantCulture) == 0
-                    || strColumn == null)
-                  {
-                    row = tbl.NewRow();
-
-                    row["NUMERIC_PRECISION"] = schemaRow[SchemaTableColumn.NumericPrecision];
-                    row["NUMERIC_SCALE"] = schemaRow[SchemaTableColumn.NumericScale];
-                    row["TABLE_NAME"] = rdTables.GetString(2);
-                    row["COLUMN_NAME"] = schemaRow[SchemaTableColumn.ColumnName];
-                    row["TABLE_CATALOG"] = strCatalog;
-                    row["ORDINAL_POSITION"] = schemaRow[SchemaTableColumn.ColumnOrdinal];
-                    row["COLUMN_HASDEFAULT"] = (schemaRow[SchemaTableOptionalColumn.DefaultValue] != DBNull.Value);
-                    row["COLUMN_DEFAULT"] = schemaRow[SchemaTableOptionalColumn.DefaultValue];
-                    row["IS_NULLABLE"] = schemaRow[SchemaTableColumn.AllowDBNull];
-                    row["DATA_TYPE"] = schemaRow["DataTypeName"].ToString().ToLower(CultureInfo.InvariantCulture);
-                    row["EDM_TYPE"] = SqliteConvert.DbTypeToTypeName((DbType)schemaRow[SchemaTableColumn.ProviderType]).ToString().ToLower(CultureInfo.InvariantCulture);
-                    row["CHARACTER_MAXIMUM_LENGTH"] = schemaRow[SchemaTableColumn.ColumnSize];
-                    row["TABLE_SCHEMA"] = schemaRow[SchemaTableColumn.BaseSchemaName];
-                    row["PRIMARY_KEY"] = schemaRow[SchemaTableColumn.IsKey];
-                    row["AUTOINCREMENT"] = schemaRow[SchemaTableOptionalColumn.IsAutoIncrement];
-                    row["COLLATION_NAME"] = schemaRow["CollationType"];
-                    row["UNIQUE"] = schemaRow[SchemaTableColumn.IsUnique];
-                    tbl.Rows.Add(row);
-                  }
-                }
-              }
-            }
-            catch(SqliteException)
-            {
-            }
-          }
-        }
-      }
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Returns index information for the given database and catalog
-    /// </summary>
-    /// <param name="strCatalog">The catalog (attached database) to query, can be null</param>
-    /// <param name="strIndex">The name of the index to retrieve information for, can be null</param>
-    /// <param name="strTable">The table to retrieve index information for, can be null</param>
-    /// <returns>DataTable</returns>
-    private DataTable Schema_Indexes(string strCatalog, string strTable, string strIndex)
-    {
-      DataTable tbl = new DataTable("Indexes");
-      DataRow row;
-      List<int> primaryKeys = new List<int>();
-      bool maybeRowId;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("INDEX_CATALOG", typeof(string));
-      tbl.Columns.Add("INDEX_SCHEMA", typeof(string));
-      tbl.Columns.Add("INDEX_NAME", typeof(string));
-      tbl.Columns.Add("PRIMARY_KEY", typeof(bool));
-      tbl.Columns.Add("UNIQUE", typeof(bool));
-      tbl.Columns.Add("CLUSTERED", typeof(bool));
-      tbl.Columns.Add("TYPE", typeof(int));
-      tbl.Columns.Add("FILL_FACTOR", typeof(int));
-      tbl.Columns.Add("INITIAL_SIZE", typeof(int));
-      tbl.Columns.Add("NULLS", typeof(int));
-      tbl.Columns.Add("SORT_BOOKMARKS", typeof(bool));
-      tbl.Columns.Add("AUTO_UPDATE", typeof(bool));
-      tbl.Columns.Add("NULL_COLLATION", typeof(int));
-      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
-      tbl.Columns.Add("COLUMN_NAME", typeof(string));
-      tbl.Columns.Add("COLUMN_GUID", typeof(Guid));
-      tbl.Columns.Add("COLUMN_PROPID", typeof(long));
-      tbl.Columns.Add("COLLATION", typeof(short));
-      tbl.Columns.Add("CARDINALITY", typeof(Decimal));
-      tbl.Columns.Add("PAGES", typeof(int));
-      tbl.Columns.Add("FILTER_CONDITION", typeof(string));
-      tbl.Columns.Add("INTEGRATED", typeof(bool));
-      tbl.Columns.Add("INDEX_DEFINITION", typeof(string));
-
-      tbl.BeginLoadData();
-
-      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
-
-      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-      
-      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
-      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
-      {
-        while (rdTables.Read())
-        {
-          maybeRowId = false;
-          primaryKeys.Clear();
-          if (String.IsNullOrEmpty(strTable) || String.Compare(rdTables.GetString(2), strTable, true, CultureInfo.InvariantCulture) == 0)
-          {
-            // First, look for any rowid indexes -- which sqlite defines are INTEGER PRIMARY KEY columns.
-            // Such indexes are not listed in the indexes list but count as indexes just the same.
-            try
-            {
-              using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].table_info([{1}])", strCatalog, rdTables.GetString(2)), this))
-              using (SqliteDataReader rdTable = cmdTable.ExecuteReader())
-              {
-                while (rdTable.Read())
-                {
-                  if (rdTable.GetInt32(5) == 1)
-                  {
-                    primaryKeys.Add(rdTable.GetInt32(0));
-
-                    // If the primary key is of type INTEGER, then its a rowid and we need to make a fake index entry for it.
-                    if (String.Compare(rdTable.GetString(2), "INTEGER", true, CultureInfo.InvariantCulture) == 0)
-                      maybeRowId = true;
-                  }
-                }
-              }
-            }
-            catch (SqliteException)
-            {
-            }
-            if (primaryKeys.Count == 1 && maybeRowId == true)
-            {
-              row = tbl.NewRow();
-
-              row["TABLE_CATALOG"] = strCatalog;
-              row["TABLE_NAME"] = rdTables.GetString(2);
-              row["INDEX_CATALOG"] = strCatalog;
-              row["PRIMARY_KEY"] = true;
-              row["INDEX_NAME"] = String.Format(CultureInfo.InvariantCulture, "{1}_PK_{0}", rdTables.GetString(2), master);
-              row["UNIQUE"] = true;
-
-              if (String.Compare((string)row["INDEX_NAME"], strIndex, true, CultureInfo.InvariantCulture) == 0
-              || strIndex == null)
-              {
-                tbl.Rows.Add(row);
-              }
-
-              primaryKeys.Clear();
-            }
-
-            // Now fetch all the rest of the indexes.
-            try
-            {
-              using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].index_list([{1}])", strCatalog, rdTables.GetString(2)), this))
-              using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
-              {
-                while (rd.Read())
-                {
-                  if (String.Compare(rd.GetString(1), strIndex, true, CultureInfo.InvariantCulture) == 0
-                  || strIndex == null)
-                  {
-                    row = tbl.NewRow();
-
-                    row["TABLE_CATALOG"] = strCatalog;
-                    row["TABLE_NAME"] = rdTables.GetString(2);
-                    row["INDEX_CATALOG"] = strCatalog;
-                    row["INDEX_NAME"] = rd.GetString(1);
-                    row["UNIQUE"] = rd.GetBoolean(2);
-                    row["PRIMARY_KEY"] = false;
-
-                    // get the index definition
-                    using (SqliteCommand cmdIndexes = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{2}] WHERE [type] LIKE 'index' AND [name] LIKE '{1}'", strCatalog, rd.GetString(1).Replace("'", "''"), master), this))
-                    using (SqliteDataReader rdIndexes = cmdIndexes.ExecuteReader())
-                    {
-                      while (rdIndexes.Read())
-                      {
-                        if (rdIndexes.IsDBNull(4) == false)
-                          row["INDEX_DEFINITION"] = rdIndexes.GetString(4);
-                        break;
-                      }
-                    }
-
-                    // Now for the really hard work.  Figure out which index is the primary key index.
-                    // The only way to figure it out is to check if the index was an autoindex and if we have a non-rowid
-                    // primary key, and all the columns in the given index match the primary key columns
-                    if (primaryKeys.Count > 0 && rd.GetString(1).StartsWith("sqlite_autoindex_" + rdTables.GetString(2), StringComparison.InvariantCultureIgnoreCase) == true)
-                    {
-                      using (SqliteCommand cmdDetails = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].index_info([{1}])", strCatalog, rd.GetString(1)), this))
-                      using (SqliteDataReader rdDetails = cmdDetails.ExecuteReader())
-                      {
-                        int nMatches = 0;
-                        while (rdDetails.Read())
-                        {
-                          if (primaryKeys.Contains(rdDetails.GetInt32(1)) == false)
-                          {
-                            nMatches = 0;
-                            break;
-                          }
-                          nMatches++;
-                        }
-                        if (nMatches == primaryKeys.Count)
-                        {
-                          row["PRIMARY_KEY"] = true;
-                          primaryKeys.Clear();
-                        }
-                      }
-                    }
-
-                    tbl.Rows.Add(row);
-                  }
-                }
-              }
-            }
-            catch (SqliteException)
-            {
-            }
-          }
-        }
-      }
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    private DataTable Schema_Triggers(string catalog, string table, string triggerName)
-    {
-      DataTable tbl = new DataTable("Triggers");
-      DataRow row;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("TRIGGER_NAME", typeof(string));
-      tbl.Columns.Add("TRIGGER_DEFINITION", typeof(string));
-
-      tbl.BeginLoadData();
-
-      if (String.IsNullOrEmpty(table)) table = null;
-      if (String.IsNullOrEmpty(catalog)) catalog = "main";
-      string master = (String.Compare(catalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-
-      using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT [type], [name], [tbl_name], [rootpage], [sql], [rowid] FROM [{0}].[{1}] WHERE [type] LIKE 'trigger'", catalog, master), this))
-      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
-      {
-        while (rd.Read())
-        {
-          if (String.Compare(rd.GetString(1), triggerName, true, CultureInfo.InvariantCulture) == 0
-            || triggerName == null)
-          {
-            if (table == null || String.Compare(table, rd.GetString(2), true, CultureInfo.InvariantCulture) == 0)
-            {
-              row = tbl.NewRow();
-
-              row["TABLE_CATALOG"] = catalog;
-              row["TABLE_NAME"] = rd.GetString(2);
-              row["TRIGGER_NAME"] = rd.GetString(1);
-              row["TRIGGER_DEFINITION"] = rd.GetString(4);
-
-              tbl.Rows.Add(row);
-            }
-          }
-        }
-      }
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Retrieves table schema information for the database and catalog
-    /// </summary>
-    /// <param name="strCatalog">The catalog (attached database) to retrieve tables on</param>
-    /// <param name="strTable">The table to retrieve, can be null</param>
-    /// <param name="strType">The table type, can be null</param>
-    /// <returns>DataTable</returns>
-    private DataTable Schema_Tables(string strCatalog, string strTable, string strType)
-    {
-      DataTable tbl = new DataTable("Tables");
-      DataRow row;
-      string strItem;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("TABLE_TYPE", typeof(string));
-      tbl.Columns.Add("TABLE_ID", typeof(long));
-      tbl.Columns.Add("TABLE_ROOTPAGE", typeof(int));
-      tbl.Columns.Add("TABLE_DEFINITION", typeof(string));
-      tbl.BeginLoadData();
-
-      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
-
-      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-
-      using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT [type], [name], [tbl_name], [rootpage], [sql], [rowid] FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
-      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
-      {
-        while (rd.Read())
-        {
-          strItem = rd.GetString(0);
-          if (String.Compare(rd.GetString(2), 0, "SQLITE_", 0, 7, true, CultureInfo.InvariantCulture) == 0)
-            strItem = "SYSTEM_TABLE";
-
-          if (String.Compare(strType, strItem, true, CultureInfo.InvariantCulture) == 0
-            || strType == null)
-          {
-            if (String.Compare(rd.GetString(2), strTable, true, CultureInfo.InvariantCulture) == 0
-              || strTable == null)
-            {
-              row = tbl.NewRow();
-
-              row["TABLE_CATALOG"] = strCatalog;
-              row["TABLE_NAME"] = rd.GetString(2);
-              row["TABLE_TYPE"] = strItem;
-              row["TABLE_ID"] = rd.GetInt64(5);
-              row["TABLE_ROOTPAGE"] = rd.GetInt32(3);
-              row["TABLE_DEFINITION"] = rd.GetString(4);
-
-              tbl.Rows.Add(row);
-            }
-          }
-        }
-      }
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Retrieves view schema information for the database
-    /// </summary>
-    /// <param name="strCatalog">The catalog (attached database) to retrieve views on</param>
-    /// <param name="strView">The view name, can be null</param>
-    /// <returns>DataTable</returns>
-    private DataTable Schema_Views(string strCatalog, string strView)
-    {
-      DataTable tbl = new DataTable("Views");
-      DataRow row;
-      string strItem;
-      int nPos;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("VIEW_DEFINITION", typeof(string));
-      tbl.Columns.Add("CHECK_OPTION", typeof(bool));
-      tbl.Columns.Add("IS_UPDATABLE", typeof(bool));
-      tbl.Columns.Add("DESCRIPTION", typeof(string));
-      tbl.Columns.Add("DATE_CREATED", typeof(DateTime));
-      tbl.Columns.Add("DATE_MODIFIED", typeof(DateTime));
-
-      tbl.BeginLoadData();
-
-      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
-
-      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-
-      using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'view'", strCatalog, master), this))
-      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
-      {
-        while (rd.Read())
-        {
-          if (String.Compare(rd.GetString(1), strView, true, CultureInfo.InvariantCulture) == 0
-            || String.IsNullOrEmpty(strView))
-          {
-            strItem = rd.GetString(4).Replace('\r', ' ').Replace('\n', ' ').Replace('\t', ' ');
-            nPos = CultureInfo.InvariantCulture.CompareInfo.IndexOf(strItem, " AS ", CompareOptions.IgnoreCase);
-            if (nPos > -1)
-            {
-              strItem = strItem.Substring(nPos + 4).Trim();
-              row = tbl.NewRow();
-
-              row["TABLE_CATALOG"] = strCatalog;
-              row["TABLE_NAME"] = rd.GetString(2);
-              row["IS_UPDATABLE"] = false;
-              row["VIEW_DEFINITION"] = strItem;
-
-              tbl.Rows.Add(row);
-            }
-          }
-        }
-      }
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Retrieves catalog (attached databases) schema information for the database
-    /// </summary>
-    /// <param name="strCatalog">The catalog to retrieve, can be null</param>
-    /// <returns>DataTable</returns>
-    private DataTable Schema_Catalogs(string strCatalog)
-    {
-      DataTable tbl = new DataTable("Catalogs");
-      DataRow row;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("CATALOG_NAME", typeof(string));
-      tbl.Columns.Add("DESCRIPTION", typeof(string));
-      tbl.Columns.Add("ID", typeof(long));
-
-      tbl.BeginLoadData();
-
-      using (SqliteCommand cmd = new SqliteCommand("PRAGMA database_list", this))
-      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
-      {
-        while (rd.Read())
-        {
-          if (String.Compare(rd.GetString(1), strCatalog, true, CultureInfo.InvariantCulture) == 0
-            || strCatalog == null)
-          {
-            row = tbl.NewRow();
-
-            row["CATALOG_NAME"] = rd.GetString(1);
-            row["DESCRIPTION"] = rd.GetString(2);
-            row["ID"] = rd.GetInt64(0);
-
-            tbl.Rows.Add(row);
-          }
-        }
-      }
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    private DataTable Schema_DataTypes()
-    {
-      DataTable tbl = new DataTable("DataTypes");
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("TypeName", typeof(String));
-      tbl.Columns.Add("ProviderDbType", typeof(int));
-      tbl.Columns.Add("ColumnSize", typeof(long));
-      tbl.Columns.Add("CreateFormat", typeof(String));
-      tbl.Columns.Add("CreateParameters", typeof(String));
-      tbl.Columns.Add("DataType", typeof(String));
-      tbl.Columns.Add("IsAutoIncrementable", typeof(bool));
-      tbl.Columns.Add("IsBestMatch", typeof(bool));
-      tbl.Columns.Add("IsCaseSensitive", typeof(bool));
-      tbl.Columns.Add("IsFixedLength", typeof(bool));
-      tbl.Columns.Add("IsFixedPrecisionScale", typeof(bool));
-      tbl.Columns.Add("IsLong", typeof(bool));
-      tbl.Columns.Add("IsNullable", typeof(bool));
-      tbl.Columns.Add("IsSearchable", typeof(bool));
-      tbl.Columns.Add("IsSearchableWithLike", typeof(bool));
-      tbl.Columns.Add("IsLiteralSupported", typeof(bool));
-      tbl.Columns.Add("LiteralPrefix", typeof(String));
-      tbl.Columns.Add("LiteralSuffix", typeof(String));
-      tbl.Columns.Add("IsUnsigned", typeof(bool));
-      tbl.Columns.Add("MaximumScale", typeof(short));
-      tbl.Columns.Add("MinimumScale", typeof(short));
-      tbl.Columns.Add("IsConcurrencyType", typeof(bool));
-
-      tbl.BeginLoadData();
-
-      StringReader reader = new StringReader(SR.DataTypes);
-      tbl.ReadXml(reader);
-      reader.Close();
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Returns the base column information for indexes in a database
-    /// </summary>
-    /// <param name="strCatalog">The catalog to retrieve indexes for (can be null)</param>
-    /// <param name="strTable">The table to restrict index information by (can be null)</param>
-    /// <param name="strIndex">The index to restrict index information by (can be null)</param>
-    /// <param name="strColumn">The source column to restrict index information by (can be null)</param>
-    /// <returns>A DataTable containing the results</returns>
-    private DataTable Schema_IndexColumns(string strCatalog, string strTable, string strIndex, string strColumn)
-    {
-      DataTable tbl = new DataTable("IndexColumns");
-      DataRow row;
-      List<KeyValuePair<int, string>> primaryKeys = new List<KeyValuePair<int, string>>();
-      bool maybeRowId;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("CONSTRAINT_CATALOG", typeof(string));
-      tbl.Columns.Add("CONSTRAINT_SCHEMA", typeof(string));
-      tbl.Columns.Add("CONSTRAINT_NAME", typeof(string));
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("COLUMN_NAME", typeof(string));
-      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
-      tbl.Columns.Add("INDEX_NAME", typeof(string));
-      tbl.Columns.Add("COLLATION_NAME", typeof(string));
-      tbl.Columns.Add("SORT_MODE", typeof(string));
-      tbl.Columns.Add("CONFLICT_OPTION", typeof(int));
-
-      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
-
-      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-
-      tbl.BeginLoadData();
-
-      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
-      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
-      {
-        while (rdTables.Read())
-        {
-          maybeRowId = false;
-          primaryKeys.Clear();
-          if (String.IsNullOrEmpty(strTable) || String.Compare(rdTables.GetString(2), strTable, true, CultureInfo.InvariantCulture) == 0)
-          {
-            try
-            {
-              using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].table_info([{1}])", strCatalog, rdTables.GetString(2)), this))
-              using (SqliteDataReader rdTable = cmdTable.ExecuteReader())
-              {
-                while (rdTable.Read())
-                {
-                  if (rdTable.GetInt32(5) == 1) // is a primary key
-                  {
-                    primaryKeys.Add(new KeyValuePair<int, string>(rdTable.GetInt32(0), rdTable.GetString(1)));
-                    // Is an integer -- could be a rowid if no other primary keys exist in the table
-                    if (String.Compare(rdTable.GetString(2), "INTEGER", true, CultureInfo.InvariantCulture) == 0)
-                      maybeRowId = true;
-                  }
-                }
-              }
-            }
-            catch (SqliteException)
-            {
-            }
-            // This is a rowid row
-            if (primaryKeys.Count == 1 && maybeRowId == true)
-            {
-              row = tbl.NewRow();
-              row["CONSTRAINT_CATALOG"] = strCatalog;
-              row["CONSTRAINT_NAME"] = String.Format(CultureInfo.InvariantCulture, "{1}_PK_{0}", rdTables.GetString(2), master);
-              row["TABLE_CATALOG"] = strCatalog;
-              row["TABLE_NAME"] = rdTables.GetString(2);
-              row["COLUMN_NAME"] = primaryKeys[0].Value;
-              row["INDEX_NAME"] = row["CONSTRAINT_NAME"];
-              row["ORDINAL_POSITION"] = 0; // primaryKeys[0].Key;
-              row["COLLATION_NAME"] = "BINARY";
-              row["SORT_MODE"] = "ASC";
-              row["CONFLICT_OPTION"] = 2;
-
-              if (String.IsNullOrEmpty(strIndex) || String.Compare(strIndex, (string)row["INDEX_NAME"], true, CultureInfo.InvariantCulture) == 0)
-                tbl.Rows.Add(row);
-            }
-
-            using (SqliteCommand cmdIndexes = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{2}] WHERE [type] LIKE 'index' AND [tbl_name] LIKE '{1}'", strCatalog, rdTables.GetString(2).Replace("'", "''"), master), this))
-            using (SqliteDataReader rdIndexes = cmdIndexes.ExecuteReader())
-            {
-              while (rdIndexes.Read())
-              {
-                int ordinal = 0;
-                if (String.IsNullOrEmpty(strIndex) || String.Compare(strIndex, rdIndexes.GetString(1), true, CultureInfo.InvariantCulture) == 0)
-                {
-                  try
-                  {
-                    using (SqliteCommand cmdIndex = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].index_info([{1}])", strCatalog, rdIndexes.GetString(1)), this))
-                    using (SqliteDataReader rdIndex = cmdIndex.ExecuteReader())
-                    {
-                      while (rdIndex.Read())
-                      {
-                        row = tbl.NewRow();
-                        row["CONSTRAINT_CATALOG"] = strCatalog;
-                        row["CONSTRAINT_NAME"] = rdIndexes.GetString(1);
-                        row["TABLE_CATALOG"] = strCatalog;
-                        row["TABLE_NAME"] = rdIndexes.GetString(2);
-                        row["COLUMN_NAME"] = rdIndex.GetString(2);
-                        row["INDEX_NAME"] = rdIndexes.GetString(1);
-                        row["ORDINAL_POSITION"] = ordinal; // rdIndex.GetInt32(1);
-
-                        string collationSequence;
-                        int sortMode;
-                        int onError;
-                        _sql.GetIndexColumnExtendedInfo(strCatalog, rdIndexes.GetString(1), rdIndex.GetString(2), out sortMode, out onError, out collationSequence);
-
-                        if (String.IsNullOrEmpty(collationSequence) == false)
-                          row["COLLATION_NAME"] = collationSequence;
-
-                        row["SORT_MODE"] = (sortMode == 0) ? "ASC" : "DESC";
-                        row["CONFLICT_OPTION"] = onError;
-
-                        ordinal++;
-
-                        if (String.IsNullOrEmpty(strColumn) || String.Compare(strColumn, row["COLUMN_NAME"].ToString(), true, CultureInfo.InvariantCulture) == 0)
-                          tbl.Rows.Add(row);
-                      }
-                    }
-                  }
-                  catch (SqliteException)
-                  {
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-
-      tbl.EndLoadData();
-      tbl.AcceptChanges();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Returns detailed column information for a specified view
-    /// </summary>
-    /// <param name="strCatalog">The catalog to retrieve columns for (can be null)</param>
-    /// <param name="strView">The view to restrict column information by (can be null)</param>
-    /// <param name="strColumn">The source column to restrict column information by (can be null)</param>
-    /// <returns>A DataTable containing the results</returns>
-    private DataTable Schema_ViewColumns(string strCatalog, string strView, string strColumn)
-    {
-      DataTable tbl = new DataTable("ViewColumns");
-      DataRow row;
-      string strSql;
-      int n;
-      DataRow schemaRow;
-      DataRow viewRow;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("VIEW_CATALOG", typeof(string));
-      tbl.Columns.Add("VIEW_SCHEMA", typeof(string));
-      tbl.Columns.Add("VIEW_NAME", typeof(string));
-      tbl.Columns.Add("VIEW_COLUMN_NAME", typeof(String));
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("COLUMN_NAME", typeof(string));
-      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
-      tbl.Columns.Add("COLUMN_HASDEFAULT", typeof(bool));
-      tbl.Columns.Add("COLUMN_DEFAULT", typeof(string));
-      tbl.Columns.Add("COLUMN_FLAGS", typeof(long));
-      tbl.Columns.Add("IS_NULLABLE", typeof(bool));
-      tbl.Columns.Add("DATA_TYPE", typeof(string));
-      tbl.Columns.Add("CHARACTER_MAXIMUM_LENGTH", typeof(int));
-      tbl.Columns.Add("NUMERIC_PRECISION", typeof(int));
-      tbl.Columns.Add("NUMERIC_SCALE", typeof(int));
-      tbl.Columns.Add("DATETIME_PRECISION", typeof(long));
-      tbl.Columns.Add("CHARACTER_SET_CATALOG", typeof(string));
-      tbl.Columns.Add("CHARACTER_SET_SCHEMA", typeof(string));
-      tbl.Columns.Add("CHARACTER_SET_NAME", typeof(string));
-      tbl.Columns.Add("COLLATION_CATALOG", typeof(string));
-      tbl.Columns.Add("COLLATION_SCHEMA", typeof(string));
-      tbl.Columns.Add("COLLATION_NAME", typeof(string));
-      tbl.Columns.Add("PRIMARY_KEY", typeof(bool));
-      tbl.Columns.Add("EDM_TYPE", typeof(string));
-      tbl.Columns.Add("AUTOINCREMENT", typeof(bool));
-      tbl.Columns.Add("UNIQUE", typeof(bool));
-
-      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
-
-      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-      
-      tbl.BeginLoadData();
-
-      using (SqliteCommand cmdViews = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'view'", strCatalog, master), this))
-      using (SqliteDataReader rdViews = cmdViews.ExecuteReader())
-      {
-        while (rdViews.Read())
-        {
-          if (String.IsNullOrEmpty(strView) || String.Compare(strView, rdViews.GetString(2), true, CultureInfo.InvariantCulture) == 0)
-          {
-            using (SqliteCommand cmdViewSelect = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}]", strCatalog, rdViews.GetString(2)), this))
-            {
-              strSql = rdViews.GetString(4).Replace('\r', ' ').Replace('\n', ' ').Replace('\t', ' ');
-              n = CultureInfo.InvariantCulture.CompareInfo.IndexOf(strSql, " AS ", CompareOptions.IgnoreCase);
-              if (n < 0)
-                continue;
-
-              strSql = strSql.Substring(n + 4);
-
-              using (SqliteCommand cmd = new SqliteCommand(strSql, this))
-              using (SqliteDataReader rdViewSelect = cmdViewSelect.ExecuteReader(CommandBehavior.SchemaOnly))
-              using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader(CommandBehavior.SchemaOnly))
-              using (DataTable tblSchemaView = rdViewSelect.GetSchemaTable(false, false))
-              using (DataTable tblSchema = rd.GetSchemaTable(false, false))
-              {
-                for (n = 0; n < tblSchema.Rows.Count; n++)
-                {
-                  viewRow = tblSchemaView.Rows[n];
-                  schemaRow = tblSchema.Rows[n];
-
-                  if (String.Compare(viewRow[SchemaTableColumn.ColumnName].ToString(), strColumn, true, CultureInfo.InvariantCulture) == 0
-                    || strColumn == null)
-                  {
-                    row = tbl.NewRow();
-
-                    row["VIEW_CATALOG"] = strCatalog;
-                    row["VIEW_NAME"] = rdViews.GetString(2);
-                    row["TABLE_CATALOG"] = strCatalog;
-                    row["TABLE_SCHEMA"] = schemaRow[SchemaTableColumn.BaseSchemaName];
-                    row["TABLE_NAME"] = schemaRow[SchemaTableColumn.BaseTableName];
-                    row["COLUMN_NAME"] = schemaRow[SchemaTableColumn.BaseColumnName];
-                    row["VIEW_COLUMN_NAME"] = viewRow[SchemaTableColumn.ColumnName];
-                    row["COLUMN_HASDEFAULT"] = (viewRow[SchemaTableOptionalColumn.DefaultValue] != DBNull.Value);
-                    row["COLUMN_DEFAULT"] = viewRow[SchemaTableOptionalColumn.DefaultValue];
-                    row["ORDINAL_POSITION"] = viewRow[SchemaTableColumn.ColumnOrdinal];
-                    row["IS_NULLABLE"] = viewRow[SchemaTableColumn.AllowDBNull];
-                    row["DATA_TYPE"] = viewRow["DataTypeName"]; // SqliteConvert.DbTypeToType((DbType)viewRow[SchemaTableColumn.ProviderType]).ToString();
-                    row["EDM_TYPE"] = SqliteConvert.DbTypeToTypeName((DbType)viewRow[SchemaTableColumn.ProviderType]).ToString().ToLower(CultureInfo.InvariantCulture);
-                    row["CHARACTER_MAXIMUM_LENGTH"] = viewRow[SchemaTableColumn.ColumnSize];
-                    row["TABLE_SCHEMA"] = viewRow[SchemaTableColumn.BaseSchemaName];
-                    row["PRIMARY_KEY"] = viewRow[SchemaTableColumn.IsKey];
-                    row["AUTOINCREMENT"] = viewRow[SchemaTableOptionalColumn.IsAutoIncrement];
-                    row["COLLATION_NAME"] = viewRow["CollationType"];
-                    row["UNIQUE"] = viewRow[SchemaTableColumn.IsUnique];
-                    tbl.Rows.Add(row);
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-
-      tbl.EndLoadData();
-      tbl.AcceptChanges();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Retrieves foreign key information from the specified set of filters
-    /// </summary>
-    /// <param name="strCatalog">An optional catalog to restrict results on</param>
-    /// <param name="strTable">An optional table to restrict results on</param>
-    /// <param name="strKeyName">An optional foreign key name to restrict results on</param>
-    /// <returns>A DataTable with the results of the query</returns>
-    private DataTable Schema_ForeignKeys(string strCatalog, string strTable, string strKeyName)
-    {
-      DataTable tbl = new DataTable("ForeignKeys");
-      DataRow row;
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add("CONSTRAINT_CATALOG", typeof(string));
-      tbl.Columns.Add("CONSTRAINT_SCHEMA", typeof(string));
-      tbl.Columns.Add("CONSTRAINT_NAME", typeof(string));
-      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
-      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
-      tbl.Columns.Add("TABLE_NAME", typeof(string));
-      tbl.Columns.Add("CONSTRAINT_TYPE", typeof(string));
-      tbl.Columns.Add("IS_DEFERRABLE", typeof(bool));
-      tbl.Columns.Add("INITIALLY_DEFERRED", typeof(bool));
-      tbl.Columns.Add("FKEY_FROM_COLUMN", typeof(string));
-      tbl.Columns.Add("FKEY_FROM_ORDINAL_POSITION", typeof(int));
-      tbl.Columns.Add("FKEY_TO_CATALOG", typeof(string));
-      tbl.Columns.Add("FKEY_TO_SCHEMA", typeof(string));
-      tbl.Columns.Add("FKEY_TO_TABLE", typeof(string));
-      tbl.Columns.Add("FKEY_TO_COLUMN", typeof(string));
-
-      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
-
-      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
-
-      tbl.BeginLoadData();
-
-      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
-      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
-      {
-        while (rdTables.Read())
-        {
-          if (String.IsNullOrEmpty(strTable) || String.Compare(strTable, rdTables.GetString(2), true, CultureInfo.InvariantCulture) == 0)
-          {
-            try
-            {
-              using (SqliteCommandBuilder builder = new SqliteCommandBuilder())
-              //using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}]", strCatalog, rdTables.GetString(2)), this))
-              //using (SqliteDataReader rdTable = cmdTable.ExecuteReader(CommandBehavior.SchemaOnly))
-              using (SqliteCommand cmdKey = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].foreign_key_list([{1}])", strCatalog, rdTables.GetString(2)), this))
-              using (SqliteDataReader rdKey = cmdKey.ExecuteReader())
-              {
-                while (rdKey.Read())
-                {
-                  row = tbl.NewRow();
-                  row["CONSTRAINT_CATALOG"] = strCatalog;
-                  row["CONSTRAINT_NAME"] = String.Format(CultureInfo.InvariantCulture, "FK_{0}_{1}", rdTables[2], rdKey.GetInt32(0));
-                  row["TABLE_CATALOG"] = strCatalog;
-                  row["TABLE_NAME"] = builder.UnquoteIdentifier(rdTables.GetString(2));
-                  row["CONSTRAINT_TYPE"] = "FOREIGN KEY";
-                  row["IS_DEFERRABLE"] = false;
-                  row["INITIALLY_DEFERRED"] = false;
-                  row["FKEY_FROM_COLUMN"] = builder.UnquoteIdentifier(rdKey[3].ToString());
-                  row["FKEY_TO_CATALOG"] = strCatalog;
-                  row["FKEY_TO_TABLE"] = builder.UnquoteIdentifier(rdKey[2].ToString());
-                  row["FKEY_TO_COLUMN"] = builder.UnquoteIdentifier(rdKey[4].ToString());
-                  row["FKEY_FROM_ORDINAL_POSITION"] = rdKey[1];
-
-                  if (String.IsNullOrEmpty(strKeyName) || String.Compare(strKeyName, row["CONSTRAINT_NAME"].ToString(), true, CultureInfo.InvariantCulture) == 0)
-                    tbl.Rows.Add(row);
-                }
-              }
-            }
-            catch (SqliteException)
-            {
-            }
-          }
-        }
-      }
-
-      tbl.EndLoadData();
-      tbl.AcceptChanges();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// This event is raised whenever SQLite makes an update/delete/insert into the database on
-    /// this connection.  It only applies to the given connection.
-    /// </summary>
-    public event SQLiteUpdateEventHandler Update
-    {
-      add
-      {
-        if (_updateHandler == null)
-        {
-          _updateCallback = new SQLiteUpdateCallback(UpdateCallback);
-          if (_sql != null) _sql.SetUpdateHook(_updateCallback);
-        }
-        _updateHandler += value;
-      }
-      remove
-      {
-        _updateHandler -= value;
-        if (_updateHandler == null)
-        {
-          if (_sql != null) _sql.SetUpdateHook(null);
-          _updateCallback = null;
-        }
-      }
-    }
-
-    private void UpdateCallback(IntPtr puser, int type, IntPtr database, IntPtr table, Int64 rowid)
-    {
-      _updateHandler(this, new UpdateEventArgs(
-        SQLiteBase.UTF8ToString(database, -1),
-        SQLiteBase.UTF8ToString(table, -1),
-        (UpdateEventType)type,
-        rowid));
-    }
-
-    /// <summary>
-    /// This event is raised whenever SQLite is committing a transaction.
-    /// Return non-zero to trigger a rollback
-    /// </summary>
-    public event SQLiteCommitHandler Commit
-    {
-      add
-      {
-        if (_commitHandler == null)
-        {
-          _commitCallback = new SQLiteCommitCallback(CommitCallback);
-          if (_sql != null) _sql.SetCommitHook(_commitCallback);
-        }
-        _commitHandler += value;
-      }
-      remove
-      {
-        _commitHandler -= value;
-        if (_commitHandler == null)
-        {
-          if (_sql != null) _sql.SetCommitHook(null);
-          _commitCallback = null;
-        }
-      }
-    }
-
-    /// <summary>
-    /// This event is raised whenever SQLite is committing a transaction.
-    /// Return non-zero to trigger a rollback
-    /// </summary>
-    public event EventHandler RollBack
-    {
-      add
-      {
-        if (_rollbackHandler == null)
-        {
-          _rollbackCallback = new SQLiteRollbackCallback(RollbackCallback);
-          if (_sql != null) _sql.SetRollbackHook(_rollbackCallback);
-        }
-        _rollbackHandler += value;
-      }
-      remove
-      {
-        _rollbackHandler -= value;
-        if (_rollbackHandler == null)
-        {
-          if (_sql != null) _sql.SetRollbackHook(null);
-          _rollbackCallback = null;
-        }
-      }
-    }
-
-
-    private int CommitCallback(IntPtr parg)
-    {
-      CommitEventArgs e = new CommitEventArgs();
-      _commitHandler(this, e);
-      return (e.AbortTransaction == true) ? 1 : 0;
-    }
-
-    private void RollbackCallback(IntPtr parg)
-    {
-      _rollbackHandler(this, EventArgs.Empty);
-    }
-
-    // http://www.sqlite.org/c3ref/config.html
-    public static void SetConfig (SQLiteConfig config)
-    {
-      int n = UnsafeNativeMethods.sqlite3_config (config);
-      if (n > 0) throw new SqliteException (n, null);
-    }
-  }
-
-  /// <summary>
-  /// The I/O file cache flushing behavior for the connection
-  /// </summary>
-  public enum SynchronizationModes
-  {
-    /// <summary>
-    /// Normal file flushing at critical sections of the code
-    /// </summary>
-    Normal = 0,
-    /// <summary>
-    /// Full file flushing after every write operation
-    /// </summary>
-    Full = 1,
-    /// <summary>
-    /// Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing
-    /// </summary>
-    Off = 2,
-  }
-
-#if !PLATFORM_COMPACTFRAMEWORK
-  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-#endif
-  internal delegate void SQLiteUpdateCallback(IntPtr puser, int type, IntPtr database, IntPtr table, Int64 rowid);
-#if !PLATFORM_COMPACTFRAMEWORK
-  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-#endif
-  internal delegate int SQLiteCommitCallback(IntPtr puser);
-#if !PLATFORM_COMPACTFRAMEWORK
-  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-#endif
-  internal delegate void SQLiteRollbackCallback(IntPtr puser);
-
-  /// <summary>
-  /// Raised when a transaction is about to be committed.  To roll back a transaction, set the 
-  /// rollbackTrans boolean value to true.
-  /// </summary>
-  /// <param name="sender">The connection committing the transaction</param>
-  /// <param name="e">Event arguments on the transaction</param>
-  public delegate void SQLiteCommitHandler(object sender, CommitEventArgs e);
-
-  /// <summary>
-  /// Raised when data is inserted, updated and deleted on a given connection
-  /// </summary>
-  /// <param name="sender">The connection committing the transaction</param>
-  /// <param name="e">The event parameters which triggered the event</param>
-  public delegate void SQLiteUpdateEventHandler(object sender, UpdateEventArgs e);
-
-  /// <summary>
-  /// Whenever an update event is triggered on a connection, this enum will indicate
-  /// exactly what type of operation is being performed.
-  /// </summary>
-  public enum UpdateEventType
-  {
-    /// <summary>
-    /// A row is being deleted from the given database and table
-    /// </summary>
-    Delete = 9,
-    /// <summary>
-    /// A row is being inserted into the table.
-    /// </summary>
-    Insert = 18,
-    /// <summary>
-    /// A row is being updated in the table.
-    /// </summary>
-    Update = 23,
-  }
-
-  /// <summary>
-  /// Passed during an Update callback, these event arguments detail the type of update operation being performed
-  /// on the given connection.
-  /// </summary>
-  public class UpdateEventArgs : EventArgs
-  {
-    /// <summary>
-    /// The name of the database being updated (usually "main" but can be any attached or temporary database)
-    /// </summary>
-    public readonly string Database;
-
-    /// <summary>
-    /// The name of the table being updated
-    /// </summary>
-    public readonly string Table;
-
-    /// <summary>
-    /// The type of update being performed (insert/update/delete)
-    /// </summary>
-    public readonly UpdateEventType Event;
-
-    /// <summary>
-    /// The RowId affected by this update.
-    /// </summary>
-    public readonly Int64 RowId;
-
-    internal UpdateEventArgs(string database, string table, UpdateEventType eventType, Int64 rowid)
-    {
-      Database = database;
-      Table = table;
-      Event = eventType;
-      RowId = rowid;
-    }
-  }
-
-  /// <summary>
-  /// Event arguments raised when a transaction is being committed
-  /// </summary>
-  public class CommitEventArgs : EventArgs
-  {
-    internal CommitEventArgs()
-    {
-    }
-
-    /// <summary>
-    /// Set to true to abort the transaction and trigger a rollback
-    /// </summary>
-    public bool AbortTransaction;
-  }
-
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Collections.Generic;
+  using System.Globalization;
+  using System.ComponentModel;
+  using System.Text;
+  using System.Runtime.InteropServices;
+  using System.IO;
+
+  /// <summary>
+  /// SQLite implentation of DbConnection.
+  /// </summary>
+  /// <remarks>
+  /// The <see cref="ConnectionString">ConnectionString</see> property of the SqliteConnection class can contain the following parameter(s), delimited with a semi-colon:
+  /// <list type="table">
+  /// <listheader>
+  /// <term>Parameter</term>
+  /// <term>Values</term>
+  /// <term>Required</term>
+  /// <term>Default</term>
+  /// </listheader>
+  /// <item>
+  /// <description>Data Source</description>
+  /// <description>{filename}</description>
+  /// <description>Y</description>
+  /// <description></description>
+  /// </item>
+  /// <item>
+  /// <description>Version</description>
+  /// <description>3</description>
+  /// <description>N</description>
+  /// <description>3</description>
+  /// </item>
+  /// <item>
+  /// <description>UseUTF16Encoding</description>
+  /// <description><b>True</b><br/><b>False</b></description>
+  /// <description>N</description>
+  /// <description>False</description>
+  /// </item>
+  /// <item>
+  /// <description>DateTimeFormat</description>
+  /// <description><b>Ticks</b> - Use DateTime.Ticks<br/><b>ISO8601</b> - Use ISO8601 DateTime format</description>
+  /// <description>N</description>
+  /// <description>ISO8601</description>
+  /// </item>
+  /// <item>
+  /// <description>BinaryGUID</description>
+  /// <description><b>True</b> - Store GUID columns in binary form<br/><b>False</b> - Store GUID columns as text</description>
+  /// <description>N</description>
+  /// <description>True</description>
+  /// </item>
+  /// <item>
+  /// <description>Cache Size</description>
+  /// <description>{size in bytes}</description>
+  /// <description>N</description>
+  /// <description>2000</description>
+  /// </item>
+  /// <item>
+  /// <description>Synchronous</description>
+  /// <description><b>Normal</b> - Normal file flushing behavior<br/><b>Full</b> - Full flushing after all writes<br/><b>Off</b> - Underlying OS flushes I/O's</description>
+  /// <description>N</description>
+  /// <description>Normal</description>
+  /// </item>
+  /// <item>
+  /// <description>Page Size</description>
+  /// <description>{size in bytes}</description>
+  /// <description>N</description>
+  /// <description>1024</description>
+  /// </item>
+  /// <item>
+  /// <description>Password</description>
+  /// <description>{password}</description>
+  /// <description>N</description>
+  /// <description></description>
+  /// </item>
+  /// <item>
+  /// <description>Enlist</description>
+  /// <description><b>Y</b> - Automatically enlist in distributed transactions<br/><b>N</b> - No automatic enlistment</description>
+  /// <description>N</description>
+  /// <description>Y</description>
+  /// </item>
+  /// <item>
+  /// <description>Pooling</description>
+  /// <description><b>True</b> - Use connection pooling<br/><b>False</b> - Do not use connection pooling</description>
+  /// <description>N</description>
+  /// <description>False</description>
+  /// </item>
+  /// <item>
+  /// <description>FailIfMissing</description>
+  /// <description><b>True</b> - Don't create the database if it does not exist, throw an error instead<br/><b>False</b> - Automatically create the database if it does not exist</description>
+  /// <description>N</description>
+  /// <description>False</description>
+  /// </item>
+  /// <item>
+  /// <description>Max Page Count</description>
+  /// <description>{size in pages} - Limits the maximum number of pages (limits the size) of the database</description>
+  /// <description>N</description>
+  /// <description>0</description>
+  /// </item>
+  /// <item>
+  /// <description>Legacy Format</description>
+  /// <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
+  /// <description>N</description>
+  /// <description>False</description>
+  /// </item>
+  /// <item>
+  /// <description>Default Timeout</description>
+  /// <description>{time in seconds}<br/>The default command timeout</description>
+  /// <description>N</description>
+  /// <description>30</description>
+  /// </item>
+  /// <item>
+  /// <description>Journal Mode</description>
+  /// <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
+  /// <description>N</description>
+  /// <description>Delete</description>
+  /// </item>
+  /// <item>
+  /// <description>Read Only</description>
+  /// <description><b>True</b> - Open the database for read only access<br/><b>False</b> - Open the database for normal read/write access</description>
+  /// <description>N</description>
+  /// <description>False</description>
+  /// </item>
+  /// <item>
+  /// <description>Max Pool Size</description>
+  /// <description>The maximum number of connections for the given connection string that can be in the connection pool</description>
+  /// <description>N</description>
+  /// <description>100</description>
+  /// </item>
+  /// <item>
+  /// <description>Default IsolationLevel</description>
+  /// <description>The default transaciton isolation level</description>
+  /// <description>N</description>
+  /// <description>Serializable</description>
+  /// </item>
+  /// </list>
+  /// </remarks>
+  public sealed partial class SqliteConnection : DbConnection, ICloneable
+  {
+    private const string _dataDirectory = "|DataDirectory|";
+    private const string _masterdb = "sqlite_master";
+    private const string _tempmasterdb = "sqlite_temp_master";
+
+    /// <summary>
+    /// State of the current connection
+    /// </summary>
+    private ConnectionState _connectionState;
+    /// <summary>
+    /// The connection string
+    /// </summary>
+    private string _connectionString;
+    /// <summary>
+    /// Nesting level of the transactions open on the connection
+    /// </summary>
+    internal int _transactionLevel;
+
+    /// <summary>
+    /// The default isolation level for new transactions
+    /// </summary>
+    private IsolationLevel _defaultIsolation;
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    /// <summary>
+    /// Whether or not the connection is enlisted in a distrubuted transaction
+    /// </summary>
+    internal SQLiteEnlistment _enlistment;
+#endif
+    /// <summary>
+    /// The base SQLite object to interop with
+    /// </summary>
+    internal SQLiteBase _sql;
+    /// <summary>
+    /// The database filename minus path and extension
+    /// </summary>
+    private string _dataSource;
+    /// <summary>
+    /// Temporary password storage, emptied after the database has been opened
+    /// </summary>
+    private byte[] _password;
+
+    /// <summary>
+    /// Default command timeout
+    /// </summary>
+    private int _defaultTimeout = 30;
+
+    internal bool _binaryGuid;
+
+    internal long _version;
+
+    private event SQLiteUpdateEventHandler _updateHandler;
+    private event SQLiteCommitHandler _commitHandler;
+    private event EventHandler _rollbackHandler;
+
+    private SQLiteUpdateCallback _updateCallback;
+    private SQLiteCommitCallback _commitCallback;
+    private SQLiteRollbackCallback _rollbackCallback;
+
+    /// <summary>
+    /// This event is raised whenever the database is opened or closed.
+    /// </summary>
+    public override event StateChangeEventHandler StateChange;
+
+    ///<overloads>
+    /// Constructs a new SqliteConnection object
+    /// </overloads>
+    /// <summary>
+    /// Default constructor
+    /// </summary>
+    public SqliteConnection()
+      : this("")
+    {
+    }
+
+    /// <summary>
+    /// Initializes the connection with the specified connection string
+    /// </summary>
+    /// <param name="connectionString">The connection string to use on the connection</param>
+    public SqliteConnection(string connectionString)
+    {
+      _sql = null;
+      _connectionState = ConnectionState.Closed;
+      _connectionString = "";
+      _transactionLevel = 0;
+      _version = 0;
+      //_commandList = new List<WeakReference>();
+
+      if (connectionString != null)
+        ConnectionString = connectionString;
+    }
+
+    /// <summary>
+    /// Clones the settings and connection string from an existing connection.  If the existing connection is already open, this
+    /// function will open its own connection, enumerate any attached databases of the original connection, and automatically
+    /// attach to them.
+    /// </summary>
+    /// <param name="connection"></param>
+    public SqliteConnection(SqliteConnection connection)
+      : this(connection.ConnectionString)
+    {
+      string str;
+
+      if (connection.State == ConnectionState.Open)
+      {
+        Open();
+
+        // Reattach all attached databases from the existing connection
+        using (DataTable tbl = connection.GetSchema("Catalogs"))
+        {
+          foreach (DataRow row in tbl.Rows)
+          {
+            str = row[0].ToString();
+            if (String.Compare(str, "main", true, CultureInfo.InvariantCulture) != 0
+              && String.Compare(str, "temp", true, CultureInfo.InvariantCulture) != 0)
+            {
+              using (SqliteCommand cmd = CreateCommand())
+              {
+                cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "ATTACH DATABASE '{0}' AS [{1}]", row[1], row[0]);
+                cmd.ExecuteNonQuery();
+              }
+            }
+          }
+        }
+      }
+    }
+
+#if PLATFORM_COMPACTFRAMEWORK
+    /// <summary>
+    /// Obsolete
+    /// </summary>
+    public override int ConnectionTimeout
+    {
+      get
+      {
+        return 30;
+      }
+    }
+#endif
+
+    /// <summary>
+    /// Creates a clone of the connection.  All attached databases and user-defined functions are cloned.  If the existing connection is open, the cloned connection 
+    /// will also be opened.
+    /// </summary>
+    /// <returns></returns>
+    public object Clone()
+    {
+      return new SqliteConnection(this);
+    }
+
+    /// <summary>
+    /// Disposes of the SqliteConnection, closing it if it is active.
+    /// </summary>
+    /// <param name="disposing">True if the connection is being explicitly closed.</param>
+    protected override void Dispose(bool disposing)
+    {
+      base.Dispose(disposing);
+
+      if (_sql != null)
+        _sql.Dispose ();
+
+      if (disposing)
+        Close();
+    }
+
+    /// <summary>
+    /// Creates a database file.  This just creates a zero-byte file which SQLite
+    /// will turn into a database when the file is opened properly.
+    /// </summary>
+    /// <param name="databaseFileName">The file to create</param>
+    static public void CreateFile(string databaseFileName)
+    {
+      FileStream fs = File.Create(databaseFileName);
+      fs.Close();
+    }
+
+#if !SQLITE_STANDARD
+    /// <summary>
+    /// On NTFS volumes, this function turns on the compression attribute for the given file.
+    /// It must not be open or referenced at the time of the function call.
+    /// </summary>
+    /// <param name="databaseFileName">The file to compress</param>
+    [Obsolete("This functionality is being removed from a future version of the SQLite provider")]
+    static public void CompressFile(string databaseFileName)
+    {
+      UnsafeNativeMethods.sqlite3_compressfile(databaseFileName);
+    }
+#endif
+
+#if !SQLITE_STANDARD
+    /// <summary>
+    /// On NTFS volumes, this function removes the compression attribute for the given file.
+    /// It must not be open or referenced at the time of the function call.
+    /// </summary>
+    /// <param name="databaseFileName">The file to decompress</param>
+    [Obsolete("This functionality is being removed from a future version of the SQLite provider")]
+    static public void DecompressFile(string databaseFileName)
+    {
+      UnsafeNativeMethods.sqlite3_decompressfile(databaseFileName);
+    }
+#endif
+
+    /// <summary>
+    /// Raises the state change event when the state of the connection changes
+    /// </summary>
+    /// <param name="newState">The new state.  If it is different from the previous state, an event is raised.</param>
+    internal void OnStateChange(ConnectionState newState)
+    {
+      ConnectionState oldState = _connectionState;
+      _connectionState = newState;
+
+      if (StateChange != null && oldState != newState)
+      {
+        StateChangeEventArgs e = new StateChangeEventArgs(oldState, newState);
+        StateChange(this, e);
+      }
+    }
+
+    /// <summary>
+    /// OBSOLETE.  Creates a new SqliteTransaction if one isn't already active on the connection.
+    /// </summary>
+    /// <param name="isolationLevel">This parameter is ignored.</param>
+    /// <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
+    /// When FALSE, a writelock is obtained immediately.  The default is TRUE, but in a multi-threaded multi-writer 
+    /// environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
+    /// <returns>Returns a SqliteTransaction object.</returns>
+    [Obsolete("Use one of the standard BeginTransaction methods, this one will be removed soon")]
+    public SqliteTransaction BeginTransaction(IsolationLevel isolationLevel, bool deferredLock)
+    {
+      return (SqliteTransaction)BeginDbTransaction(deferredLock == false ? IsolationLevel.Serializable : IsolationLevel.ReadCommitted);
+    }
+
+    /// <summary>
+    /// OBSOLETE.  Creates a new SqliteTransaction if one isn't already active on the connection.
+    /// </summary>
+    /// <param name="deferredLock">When TRUE, SQLite defers obtaining a write lock until a write operation is requested.
+    /// When FALSE, a writelock is obtained immediately.  The default is false, but in a multi-threaded multi-writer 
+    /// environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock.</param>
+    /// <returns>Returns a SqliteTransaction object.</returns>
+    [Obsolete("Use one of the standard BeginTransaction methods, this one will be removed soon")]
+    public SqliteTransaction BeginTransaction(bool deferredLock)
+    {
+      return (SqliteTransaction)BeginDbTransaction(deferredLock == false ? IsolationLevel.Serializable : IsolationLevel.ReadCommitted);
+    }
+
+    /// <summary>
+    /// Creates a new SqliteTransaction if one isn't already active on the connection.
+    /// </summary>
+    /// <param name="isolationLevel">Supported isolation levels are Serializable, ReadCommitted and Unspecified.</param>
+    /// <remarks>
+    /// Unspecified will use the default isolation level specified in the connection string.  If no isolation level is specified in the 
+    /// connection string, Serializable is used.
+    /// Serializable transactions are the default.  In this mode, the engine gets an immediate lock on the database, and no other threads
+    /// may begin a transaction.  Other threads may read from the database, but not write.
+    /// With a ReadCommitted isolation level, locks are deferred and elevated as needed.  It is possible for multiple threads to start
+    /// a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread
+    /// has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached.
+    /// </remarks>
+    /// <returns>Returns a SqliteTransaction object.</returns>
+    public new SqliteTransaction BeginTransaction(IsolationLevel isolationLevel)
+    {
+      return (SqliteTransaction)BeginDbTransaction(isolationLevel);
+    }
+
+    /// <summary>
+    /// Creates a new SqliteTransaction if one isn't already active on the connection.
+    /// </summary>
+    /// <returns>Returns a SqliteTransaction object.</returns>
+    public new SqliteTransaction BeginTransaction()
+    {
+      return (SqliteTransaction)BeginDbTransaction(_defaultIsolation);
+    }
+
+    /// <summary>
+    /// Forwards to the local BeginTransaction() function
+    /// </summary>
+    /// <param name="isolationLevel">Supported isolation levels are Unspecified, Serializable, and ReadCommitted</param>
+    /// <returns></returns>
+    protected override DbTransaction BeginDbTransaction(IsolationLevel isolationLevel)
+    {
+      if (_connectionState != ConnectionState.Open)
+        throw new InvalidOperationException();
+
+      if (isolationLevel == IsolationLevel.Unspecified) isolationLevel = _defaultIsolation;
+
+      if (isolationLevel != IsolationLevel.Serializable && isolationLevel != IsolationLevel.ReadCommitted)
+        throw new ArgumentException("isolationLevel");
+
+      return new SqliteTransaction(this, isolationLevel != IsolationLevel.Serializable);
+    }
+
+    /// <summary>
+    /// Not implemented
+    /// </summary>
+    /// <param name="databaseName"></param>
+    public override void ChangeDatabase(string databaseName)
+    {
+      throw new NotImplementedException();
+    }
+
+    /// <summary>
+    /// When the database connection is closed, all commands linked to this connection are automatically reset.
+    /// </summary>
+    public override void Close()
+    {
+      if (_sql != null)
+      {
+#if !PLATFORM_COMPACTFRAMEWORK
+        if (_enlistment != null)
+        {
+          // If the connection is enlisted in a transaction scope and the scope is still active,
+          // we cannot truly shut down this connection until the scope has completed.  Therefore make a 
+          // hidden connection temporarily to hold open the connection until the scope has completed.
+          SqliteConnection cnn = new SqliteConnection();
+          cnn._sql = _sql;
+          cnn._transactionLevel = _transactionLevel;
+          cnn._enlistment = _enlistment;
+          cnn._connectionState = _connectionState;
+          cnn._version = _version;
+
+          cnn._enlistment._transaction._cnn = cnn;
+          cnn._enlistment._disposeConnection = true;
+          _sql = null;
+          _enlistment = null;
+        }
+#endif
+        if (_sql != null)
+        {
+          _sql.Close();
+        }
+        _sql = null;
+        _transactionLevel = 0;
+      }
+      OnStateChange(ConnectionState.Closed);
+    }
+
+    /// <summary>
+    /// Clears the connection pool associated with the connection.  Any other active connections using the same database file
+    /// will be discarded instead of returned to the pool when they are closed.
+    /// </summary>
+    /// <param name="connection"></param>
+    public static void ClearPool(SqliteConnection connection)
+    {
+      if (connection._sql == null) return;
+      connection._sql.ClearPool();
+    }
+
+    /// <summary>
+    /// Clears all connection pools.  Any active connections will be discarded instead of sent to the pool when they are closed.
+    /// </summary>
+    public static void ClearAllPools()
+    {
+      SqliteConnectionPool.ClearAllPools();
+    }
+
+    /// <summary>
+    /// The connection string containing the parameters for the connection
+    /// </summary>
+    /// <remarks>
+    /// <list type="table">
+    /// <listheader>
+    /// <term>Parameter</term>
+    /// <term>Values</term>
+    /// <term>Required</term>
+    /// <term>Default</term>
+    /// </listheader>
+    /// <item>
+    /// <description>Data Source</description>
+    /// <description>{filename}</description>
+    /// <description>Y</description>
+    /// <description></description>
+    /// </item>
+    /// <item>
+    /// <description>Version</description>
+    /// <description>3</description>
+    /// <description>N</description>
+    /// <description>3</description>
+    /// </item>
+    /// <item>
+    /// <description>UseUTF16Encoding</description>
+    /// <description><b>True</b><br/><b>False</b></description>
+    /// <description>N</description>
+    /// <description>False</description>
+    /// </item>
+    /// <item>
+    /// <description>DateTimeFormat</description>
+    /// <description><b>Ticks</b> - Use DateTime.Ticks<br/><b>ISO8601</b> - Use ISO8601 DateTime format<br/><b>JulianDay</b> - Use JulianDay format</description>
+    /// <description>N</description>
+    /// <description>ISO8601</description>
+    /// </item>
+    /// <item>
+    /// <description>BinaryGUID</description>
+    /// <description><b>Yes/On/1</b> - Store GUID columns in binary form<br/><b>No/Off/0</b> - Store GUID columns as text</description>
+    /// <description>N</description>
+    /// <description>On</description>
+    /// </item>
+    /// <item>
+    /// <description>Cache Size</description>
+    /// <description>{size in bytes}</description>
+    /// <description>N</description>
+    /// <description>2000</description>
+    /// </item>
+    /// <item>
+    /// <description>Synchronous</description>
+    /// <description><b>Normal</b> - Normal file flushing behavior<br/><b>Full</b> - Full flushing after all writes<br/><b>Off</b> - Underlying OS flushes I/O's</description>
+    /// <description>N</description>
+    /// <description>Normal</description>
+    /// </item>
+    /// <item>
+    /// <description>Page Size</description>
+    /// <description>{size in bytes}</description>
+    /// <description>N</description>
+    /// <description>1024</description>
+    /// </item>
+    /// <item>
+    /// <description>Password</description>
+    /// <description>{password}</description>
+    /// <description>N</description>
+    /// <description></description>
+    /// </item>
+    /// <item>
+    /// <description>Enlist</description>
+    /// <description><B>Y</B> - Automatically enlist in distributed transactions<br/><b>N</b> - No automatic enlistment</description>
+    /// <description>N</description>
+    /// <description>Y</description>
+    /// </item>
+    /// <item>
+    /// <description>Pooling</description>
+    /// <description><b>True</b> - Use connection pooling<br/><b>False</b> - Do not use connection pooling</description>
+    /// <description>N</description>
+    /// <description>False</description>
+    /// </item>
+    /// <item>
+    /// <description>FailIfMissing</description>
+    /// <description><b>True</b> - Don't create the database if it does not exist, throw an error instead<br/><b>False</b> - Automatically create the database if it does not exist</description>
+    /// <description>N</description>
+    /// <description>False</description>
+    /// </item>
+    /// <item>
+    /// <description>Max Page Count</description>
+    /// <description>{size in pages} - Limits the maximum number of pages (limits the size) of the database</description>
+    /// <description>N</description>
+    /// <description>0</description>
+    /// </item>
+    /// <item>
+    /// <description>Legacy Format</description>
+    /// <description><b>True</b> - Use the more compatible legacy 3.x database format<br/><b>False</b> - Use the newer 3.3x database format which compresses numbers more effectively</description>
+    /// <description>N</description>
+    /// <description>False</description>
+    /// </item>
+    /// <item>
+    /// <description>Default Timeout</description>
+    /// <description>{time in seconds}<br/>The default command timeout</description>
+    /// <description>N</description>
+    /// <description>30</description>
+    /// </item>
+    /// <item>
+    /// <description>Journal Mode</description>
+    /// <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
+    /// <description>N</description>
+    /// <description>Delete</description>
+    /// </item>
+    /// <item>
+    /// <description>Read Only</description>
+    /// <description><b>True</b> - Open the database for read only access<br/><b>False</b> - Open the database for normal read/write access</description>
+    /// <description>N</description>
+    /// <description>False</description>
+    /// </item>
+    /// <item>
+    /// <description>Max Pool Size</description>
+    /// <description>The maximum number of connections for the given connection string that can be in the connection pool</description>
+    /// <description>N</description>
+    /// <description>100</description>
+    /// </item>
+    /// <item>
+    /// <description>Default IsolationLevel</description>
+    /// <description>The default transaciton isolation level</description>
+    /// <description>N</description>
+    /// <description>Serializable</description>
+    /// </item>
+    /// </list>
+    /// </remarks>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [RefreshProperties(RefreshProperties.All), DefaultValue("")]
+    [Editor("SQLite.Designer.SqliteConnectionStringEditor, SQLite.Designer, Version=1.0.36.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+    public override string ConnectionString
+    {
+      get
+      {
+        return _connectionString;
+      }
+      set
+      {
+        if (value == null)
+          throw new ArgumentNullException();
+
+        else if (_connectionState != ConnectionState.Closed)
+          throw new InvalidOperationException();
+
+        _connectionString = value;
+      }
+    }
+
+    /// <summary>
+    /// Create a new SqliteCommand and associate it with this connection.
+    /// </summary>
+    /// <returns>Returns an instantiated SqliteCommand object already assigned to this connection.</returns>
+    public new SqliteCommand CreateCommand()
+    {
+      return new SqliteCommand(this);
+    }
+
+    /// <summary>
+    /// Forwards to the local CreateCommand() function
+    /// </summary>
+    /// <returns></returns>
+    protected override DbCommand CreateDbCommand()
+    {
+      return CreateCommand();
+    }
+
+    /// <summary>
+    /// Returns the filename without extension or path
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+#endif
+    public override string DataSource
+    {
+      get
+      {
+        return _dataSource;
+      }
+    }
+
+    /// <summary>
+    /// Returns an empty string
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+#endif
+    public override string Database
+    {
+      get
+      {
+        return "main";
+      }
+    }
+
+    /// <summary>
+    /// Maps mono-specific connection string keywords to the standard ones
+    /// </summary>
+    /// <returns>The mapped keyword name</returns>
+    internal static void MapMonoKeyword (string[] arPiece, SortedList<string, string> ls)
+    {
+            string keyword, value;
+            
+            switch (arPiece[0].ToLower (CultureInfo.InvariantCulture)) {
+                    case "uri":
+                            keyword = "Data Source";
+                            value = MapMonoUriPath (arPiece[1]);
+                            break;
+                            
+                    default:
+                            keyword = arPiece[0];
+                            value = arPiece[1];
+                            break;
+            }
+
+            ls.Add(keyword, value);
+    }
+
+    internal static string MapMonoUriPath (string path)
+    {
+            if (path.StartsWith ("file://")) {
+                    return path.Substring (7);
+            } else if (path.StartsWith ("file:")) {
+                    return path.Substring (5);
+            } else if (path.StartsWith ("/")) {
+                    return path;
+            } else {
+                    throw new InvalidOperationException ("Invalid connection string: invalid URI");
+            }
+    }
+
+    internal static string MapUriPath(string path)
+    {
+	    if (path.StartsWith ("file://"))
+		    return path.Substring (7);
+      else if (path.StartsWith ("file:"))
+		    return path.Substring (5);
+      else if (path.StartsWith ("/"))
+		    return path;
+      else
+		    throw new InvalidOperationException ("Invalid connection string: invalid URI");
+    }
+    
+    /// <summary>
+    /// Parses the connection string into component parts
+    /// </summary>
+    /// <param name="connectionString">The connection string to parse</param>
+    /// <returns>An array of key-value pairs representing each parameter of the connection string</returns>
+    internal static SortedList<string, string> ParseConnectionString(string connectionString)
+    {
+      string s = connectionString.Replace (',', ';'); // Mono compatibility
+      int n;
+      SortedList<string, string> ls = new SortedList<string, string>(StringComparer.OrdinalIgnoreCase);
+
+      // First split into semi-colon delimited values.  The Split() function of SQLiteBase accounts for and properly
+      // skips semi-colons in quoted strings
+      string[] arParts = SqliteConvert.Split(s, ';');
+      string[] arPiece;
+
+      int x = arParts.Length;
+      // For each semi-colon piece, split into key and value pairs by the presence of the = sign
+      for (n = 0; n < x; n++)
+      {
+        arPiece = SqliteConvert.Split(arParts[n], '=');
+        if (arPiece.Length == 2)
+        {
+	  MapMonoKeyword (arPiece, ls);
+        }
+        else throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, "Invalid ConnectionString format for parameter \"{0}\"", (arPiece.Length > 0) ? arPiece[0] : "null"));
+      }
+      return ls;
+    }
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    /// <summary>
+    /// Manual distributed transaction enlistment support
+    /// </summary>
+    /// <param name="transaction">The distributed transaction to enlist in</param>
+    public override void EnlistTransaction(System.Transactions.Transaction transaction)
+    {
+      if (_transactionLevel > 0 && transaction != null)
+        throw new ArgumentException("Unable to enlist in transaction, a local transaction already exists");
+
+      if (_enlistment != null && transaction != _enlistment._scope)
+        throw new ArgumentException("Already enlisted in a transaction");
+
+      _enlistment = new SQLiteEnlistment(this, transaction);
+    }
+#endif
+
+    /// <summary>
+    /// Looks for a key in the array of key/values of the parameter string.  If not found, return the specified default value
+    /// </summary>
+    /// <param name="items">The list to look in</param>
+    /// <param name="key">The key to find</param>
+    /// <param name="defValue">The default value to return if the key is not found</param>
+    /// <returns>The value corresponding to the specified key, or the default value if not found.</returns>
+    static internal string FindKey(SortedList<string, string> items, string key, string defValue)
+    {
+      string ret;
+
+      if (items.TryGetValue(key, out ret)) return ret;
+
+      return defValue;
+    }
+
+    /// <summary>
+    /// Opens the connection using the parameters found in the <see cref="ConnectionString">ConnectionString</see>
+    /// </summary>
+    public override void Open()
+    {
+      if (_connectionState != ConnectionState.Closed)
+        throw new InvalidOperationException();
+
+      Close();
+
+      SortedList<string, string> opts = ParseConnectionString(_connectionString);
+      string fileName;
+
+      if (Convert.ToInt32(FindKey(opts, "Version", "3"), CultureInfo.InvariantCulture) != 3)
+        throw new NotSupportedException("Only SQLite Version 3 is supported at this time");
+
+      fileName = FindKey(opts, "Data Source", "");
+
+      if (String.IsNullOrEmpty(fileName))
+      {
+        fileName = FindKey(opts, "Uri", "");
+        if (String.IsNullOrEmpty(fileName))
+          throw new ArgumentException("Data Source cannot be empty.  Use :memory: to open an in-memory database");
+        else
+          fileName = MapUriPath(fileName);
+      }
+
+      if (String.Compare(fileName, ":MEMORY:", true, CultureInfo.InvariantCulture) == 0)
+        fileName = ":memory:";
+      else
+      {
+#if PLATFORM_COMPACTFRAMEWORK
+       if (fileName.StartsWith(".\\"))
+         fileName = Path.GetDirectoryName(System.Reflection.Assembly.GetCallingAssembly().GetName().CodeBase) + fileName.Substring(1);
+#endif
+       fileName = ExpandFileName(fileName);
+      }
+      try
+      {
+        bool usePooling = (SqliteConvert.ToBoolean(FindKey(opts, "Pooling", Boolean.FalseString)) == true);
+        bool bUTF16 = (SqliteConvert.ToBoolean(FindKey(opts, "UseUTF16Encoding", Boolean.FalseString)) == true);
+        int maxPoolSize = Convert.ToInt32(FindKey(opts, "Max Pool Size", "100"));
+
+        _defaultTimeout = Convert.ToInt32(FindKey(opts, "Default Timeout", "30"), CultureInfo.CurrentCulture);
+
+        _defaultIsolation = (IsolationLevel)Enum.Parse(typeof(IsolationLevel), FindKey(opts, "Default IsolationLevel", "Serializable"), true);
+        if (_defaultIsolation != IsolationLevel.Serializable && _defaultIsolation != IsolationLevel.ReadCommitted)
+          throw new NotSupportedException("Invalid Default IsolationLevel specified");
+
+        SQLiteDateFormats dateFormat = (SQLiteDateFormats)Enum.Parse(typeof(SQLiteDateFormats), FindKey(opts, "DateTimeFormat", "ISO8601"), true);
+        //string temp = FindKey(opts, "DateTimeFormat", "ISO8601");
+        //if (String.Compare(temp, "ticks", true, CultureInfo.InvariantCulture) == 0) dateFormat = SQLiteDateFormats.Ticks;
+        //else if (String.Compare(temp, "julianday", true, CultureInfo.InvariantCulture) == 0) dateFormat = SQLiteDateFormats.JulianDay;
+
+        if (bUTF16) // SQLite automatically sets the encoding of the database to UTF16 if called from sqlite3_open16()
+          _sql = new SQLite3_UTF16(dateFormat);
+        else
+          _sql = new SQLite3(dateFormat);
+
+        SQLiteOpenFlagsEnum flags = SQLiteOpenFlagsEnum.None;
+
+        if (SqliteConvert.ToBoolean(FindKey(opts, "Read Only", Boolean.FalseString)) == true)
+          flags |= SQLiteOpenFlagsEnum.ReadOnly;
+        else {
+          flags |= SQLiteOpenFlagsEnum.ReadWrite;
+          if (SqliteConvert.ToBoolean(FindKey(opts, "FailIfMissing", Boolean.FalseString)) == false)
+            flags |= SQLiteOpenFlagsEnum.Create;
+        }
+	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionComplete", Boolean.FalseString)))
+		flags |= SQLiteOpenFlagsEnum.FileProtectionComplete;
+	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionCompleteUnlessOpen", Boolean.FalseString)))
+		flags |= SQLiteOpenFlagsEnum.FileProtectionCompleteUnlessOpen;
+	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionCompleteUntilFirstUserAuthentication", Boolean.FalseString)))
+		flags |= SQLiteOpenFlagsEnum.FileProtectionCompleteUntilFirstUserAuthentication;
+	if (SqliteConvert.ToBoolean (FindKey (opts, "FileProtectionNone", Boolean.FalseString)))
+		flags |= SQLiteOpenFlagsEnum.FileProtectionNone;
+	
+				
+        _sql.Open(fileName, flags, maxPoolSize, usePooling);
+
+        _binaryGuid = (SqliteConvert.ToBoolean(FindKey(opts, "BinaryGUID", Boolean.TrueString)) == true);
+
+        string password = FindKey(opts, "Password", null);
+
+        if (String.IsNullOrEmpty(password) == false)
+          _sql.SetPassword(System.Text.UTF8Encoding.UTF8.GetBytes(password));
+        else if (_password != null)
+          _sql.SetPassword(_password);
+        _password = null;
+
+        _dataSource = Path.GetFileNameWithoutExtension(fileName);
+
+        OnStateChange(ConnectionState.Open);
+        _version++;
+
+        using (SqliteCommand cmd = CreateCommand())
+        {
+          string defValue;
+
+          if (fileName != ":memory:")
+          {
+            defValue = FindKey(opts, "Page Size", "1024");
+            if (Convert.ToInt32(defValue, CultureInfo.InvariantCulture) != 1024)
+            {
+              cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA page_size={0}", defValue);
+              cmd.ExecuteNonQuery();
+            }
+          }
+
+          defValue = FindKey(opts, "Max Page Count", "0");
+          if (Convert.ToInt32(defValue, CultureInfo.InvariantCulture) != 0)
+          {
+            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA max_page_count={0}", defValue);
+            cmd.ExecuteNonQuery();
+          }
+
+          defValue = FindKey(opts, "Legacy Format", Boolean.FalseString);
+          cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA legacy_file_format={0}", SqliteConvert.ToBoolean(defValue) == true ? "ON" : "OFF");
+          cmd.ExecuteNonQuery();
+
+          defValue = FindKey(opts, "Synchronous", "Normal");
+          if (String.Compare(defValue, "Full", StringComparison.OrdinalIgnoreCase) != 0)
+          {
+            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA synchronous={0}", defValue);
+            cmd.ExecuteNonQuery();
+          }
+
+          defValue = FindKey(opts, "Cache Size", "2000");
+          if (Convert.ToInt32(defValue, CultureInfo.InvariantCulture) != 2000)
+          {
+            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA cache_size={0}", defValue);
+            cmd.ExecuteNonQuery();
+          }
+
+          defValue = FindKey(opts, "Journal Mode", "Delete");
+          if (String.Compare(defValue, "Default", StringComparison.OrdinalIgnoreCase) != 0)
+          {
+            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA journal_mode={0}", defValue);
+            cmd.ExecuteNonQuery();
+          }
+        }
+
+        if (_commitHandler != null)
+          _sql.SetCommitHook(_commitCallback);
+
+        if (_updateHandler != null)
+          _sql.SetUpdateHook(_updateCallback);
+
+        if (_rollbackHandler != null)
+          _sql.SetRollbackHook(_rollbackCallback);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+        if (global::System.Transactions.Transaction.Current != null && SqliteConvert.ToBoolean(FindKey(opts, "Enlist", Boolean.TrueString)) == true)
+		EnlistTransaction(global::System.Transactions.Transaction.Current);
+#endif
+      }
+      catch (SqliteException)
+      {
+        Close();
+        throw;
+      }
+    }
+
+    /// <summary>
+    /// Gets/sets the default command timeout for newly-created commands.  This is especially useful for 
+    /// commands used internally such as inside a SqliteTransaction, where setting the timeout is not possible.
+    /// This can also be set in the ConnectionString with "Default Timeout"
+    /// </summary>
+    public int DefaultTimeout
+    {
+      get { return _defaultTimeout; }
+      set { _defaultTimeout = value; }
+    }
+
+    /// <summary>
+    /// Returns the version of the underlying SQLite database engine
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+#endif
+    public override string ServerVersion
+    {
+      get
+      {
+        if (_connectionState != ConnectionState.Open)
+          throw new InvalidOperationException();
+
+        return _sql.Version;
+      }
+    }
+
+    /// <summary>
+    /// Returns the version of the underlying SQLite database engine
+    /// </summary>
+    public static string SQLiteVersion
+    {
+      get { return SQLite3.SQLiteVersion; }
+    }
+
+    /// <summary>
+    /// Returns the state of the connection.
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+#endif
+    public override ConnectionState State
+    {
+      get
+      {
+        return _connectionState;
+      }
+    }
+
+    /// <summary>
+    /// Change the password (or assign a password) to an open database.
+    /// </summary>
+    /// <remarks>
+    /// No readers or writers may be active for this process.  The database must already be open
+    /// and if it already was password protected, the existing password must already have been supplied.
+    /// </remarks>
+    /// <param name="newPassword">The new password to assign to the database</param>
+    public void ChangePassword(string newPassword)
+    {
+      ChangePassword(String.IsNullOrEmpty(newPassword) ? null : System.Text.UTF8Encoding.UTF8.GetBytes(newPassword));
+    }
+
+    /// <summary>
+    /// Change the password (or assign a password) to an open database.
+    /// </summary>
+    /// <remarks>
+    /// No readers or writers may be active for this process.  The database must already be open
+    /// and if it already was password protected, the existing password must already have been supplied.
+    /// </remarks>
+    /// <param name="newPassword">The new password to assign to the database</param>
+    public void ChangePassword(byte[] newPassword)
+    {
+      if (_connectionState != ConnectionState.Open)
+        throw new InvalidOperationException("Database must be opened before changing the password.");
+
+      _sql.ChangePassword(newPassword);
+    }
+
+    /// <summary>
+    /// Sets the password for a password-protected database.  A password-protected database is
+    /// unusable for any operation until the password has been set.
+    /// </summary>
+    /// <param name="databasePassword">The password for the database</param>
+    public void SetPassword(string databasePassword)
+    {
+      SetPassword(String.IsNullOrEmpty(databasePassword) ? null : System.Text.UTF8Encoding.UTF8.GetBytes(databasePassword));
+    }
+
+    /// <summary>
+    /// Sets the password for a password-protected database.  A password-protected database is
+    /// unusable for any operation until the password has been set.
+    /// </summary>
+    /// <param name="databasePassword">The password for the database</param>
+    public void SetPassword(byte[] databasePassword)
+    {
+      if (_connectionState != ConnectionState.Closed)
+        throw new InvalidOperationException("Password can only be set before the database is opened.");
+
+      if (databasePassword != null)
+        if (databasePassword.Length == 0) databasePassword = null;
+
+      _password = databasePassword;
+    }
+
+    /// <summary>
+    /// Expand the filename of the data source, resolving the |DataDirectory| macro as appropriate.
+    /// </summary>
+    /// <param name="sourceFile">The database filename to expand</param>
+    /// <returns>The expanded path and filename of the filename</returns>
+    private string ExpandFileName(string sourceFile)
+    {
+      if (String.IsNullOrEmpty(sourceFile)) return sourceFile;
+
+      if (sourceFile.StartsWith(_dataDirectory, StringComparison.OrdinalIgnoreCase))
+      {
+        string dataDirectory;
+
+#if PLATFORM_COMPACTFRAMEWORK
+        dataDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetCallingAssembly().GetName().CodeBase);
+#else
+        dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory") as string;
+        if (String.IsNullOrEmpty(dataDirectory))
+          dataDirectory = AppDomain.CurrentDomain.BaseDirectory;
+#endif
+
+        if (sourceFile.Length > _dataDirectory.Length)
+        {
+          if (sourceFile[_dataDirectory.Length] == Path.DirectorySeparatorChar ||
+              sourceFile[_dataDirectory.Length] == Path.AltDirectorySeparatorChar)
+            sourceFile = sourceFile.Remove(_dataDirectory.Length, 1);
+        }
+        sourceFile = Path.Combine(dataDirectory, sourceFile.Substring(_dataDirectory.Length));
+      }
+
+#if !PLATFORM_COMPACTFRAMEWORK
+      sourceFile = Path.GetFullPath(sourceFile);
+#endif
+
+      return sourceFile;
+    }
+
+    ///<overloads>
+    /// The following commands are used to extract schema information out of the database.  Valid schema types are:
+    /// <list type="bullet">
+    /// <item>
+    /// <description>MetaDataCollections</description>
+    /// </item>
+    /// <item>
+    /// <description>DataSourceInformation</description>
+    /// </item>
+    /// <item>
+    /// <description>Catalogs</description>
+    /// </item>
+    /// <item>
+    /// <description>Columns</description>
+    /// </item>
+    /// <item>
+    /// <description>ForeignKeys</description>
+    /// </item>
+    /// <item>
+    /// <description>Indexes</description>
+    /// </item>
+    /// <item>
+    /// <description>IndexColumns</description>
+    /// </item>
+    /// <item>
+    /// <description>Tables</description>
+    /// </item>
+    /// <item>
+    /// <description>Views</description>
+    /// </item>
+    /// <item>
+    /// <description>ViewColumns</description>
+    /// </item>
+    /// </list>
+    /// </overloads>
+    /// <summary>
+    /// Returns the MetaDataCollections schema
+    /// </summary>
+    /// <returns>A DataTable of the MetaDataCollections schema</returns>
+    public override DataTable GetSchema()
+    {
+      return GetSchema("MetaDataCollections", null);
+    }
+
+    /// <summary>
+    /// Returns schema information of the specified collection
+    /// </summary>
+    /// <param name="collectionName">The schema collection to retrieve</param>
+    /// <returns>A DataTable of the specified collection</returns>
+    public override DataTable GetSchema(string collectionName)
+    {
+      return GetSchema(collectionName, new string[0]);
+    }
+
+    /// <summary>
+    /// Retrieves schema information using the specified constraint(s) for the specified collection
+    /// </summary>
+    /// <param name="collectionName">The collection to retrieve</param>
+    /// <param name="restrictionValues">The restrictions to impose</param>
+    /// <returns>A DataTable of the specified collection</returns>
+    public override DataTable GetSchema(string collectionName, string[] restrictionValues)
+    {
+      if (_connectionState != ConnectionState.Open)
+        throw new InvalidOperationException();
+
+      string[] parms = new string[5];
+
+      if (restrictionValues == null) restrictionValues = new string[0];
+      restrictionValues.CopyTo(parms, 0);
+
+      switch (collectionName.ToUpper(CultureInfo.InvariantCulture))
+      {
+        case "METADATACOLLECTIONS":
+          return Schema_MetaDataCollections();
+        case "DATASOURCEINFORMATION":
+          return Schema_DataSourceInformation();
+        case "DATATYPES":
+          return Schema_DataTypes();
+        case "COLUMNS":
+        case "TABLECOLUMNS":
+          return Schema_Columns(parms[0], parms[2], parms[3]);
+        case "INDEXES":
+          return Schema_Indexes(parms[0], parms[2], parms[3]);
+        case "TRIGGERS":
+          return Schema_Triggers(parms[0], parms[2], parms[3]);
+        case "INDEXCOLUMNS":
+          return Schema_IndexColumns(parms[0], parms[2], parms[3], parms[4]);
+        case "TABLES":
+          return Schema_Tables(parms[0], parms[2], parms[3]);
+        case "VIEWS":
+          return Schema_Views(parms[0], parms[2]);
+        case "VIEWCOLUMNS":
+          return Schema_ViewColumns(parms[0], parms[2], parms[3]);
+        case "FOREIGNKEYS":
+          return Schema_ForeignKeys(parms[0], parms[2], parms[3]);
+        case "CATALOGS":
+          return Schema_Catalogs(parms[0]);
+        case "RESERVEDWORDS":
+          return Schema_ReservedWords();
+      }
+      throw new NotSupportedException();
+    }
+
+    private static DataTable Schema_ReservedWords()
+    {
+      DataTable tbl = new DataTable("MetaDataCollections");
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("ReservedWord", typeof(string));
+      tbl.Columns.Add("MaximumVersion", typeof(string));
+      tbl.Columns.Add("MinimumVersion", typeof(string));
+
+      tbl.BeginLoadData();
+      DataRow row;
+      foreach (string word in SR.Keywords.Split(new char[] { ',' }))
+      {
+        row = tbl.NewRow();
+        row[0] = word;
+        tbl.Rows.Add(row);
+      }
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Builds a MetaDataCollections schema datatable
+    /// </summary>
+    /// <returns>DataTable</returns>
+    private static DataTable Schema_MetaDataCollections()
+    {
+      DataTable tbl = new DataTable("MetaDataCollections");
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("CollectionName", typeof(string));
+      tbl.Columns.Add("NumberOfRestrictions", typeof(int));
+      tbl.Columns.Add("NumberOfIdentifierParts", typeof(int));
+
+      tbl.BeginLoadData();
+
+      StringReader reader = new StringReader(SR.MetaDataCollections);
+      tbl.ReadXml(reader);
+      reader.Close();
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Builds a DataSourceInformation datatable
+    /// </summary>
+    /// <returns>DataTable</returns>
+    private DataTable Schema_DataSourceInformation()
+    {
+      DataTable tbl = new DataTable("DataSourceInformation");
+      DataRow row;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add(DbMetaDataColumnNames.CompositeIdentifierSeparatorPattern, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.DataSourceProductName, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.DataSourceProductVersion, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.DataSourceProductVersionNormalized, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.GroupByBehavior, typeof(int));
+      tbl.Columns.Add(DbMetaDataColumnNames.IdentifierPattern, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.IdentifierCase, typeof(int));
+      tbl.Columns.Add(DbMetaDataColumnNames.OrderByColumnsInSelect, typeof(bool));
+      tbl.Columns.Add(DbMetaDataColumnNames.ParameterMarkerFormat, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.ParameterMarkerPattern, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.ParameterNameMaxLength, typeof(int));
+      tbl.Columns.Add(DbMetaDataColumnNames.ParameterNamePattern, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.QuotedIdentifierPattern, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.QuotedIdentifierCase, typeof(int));
+      tbl.Columns.Add(DbMetaDataColumnNames.StatementSeparatorPattern, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.StringLiteralPattern, typeof(string));
+      tbl.Columns.Add(DbMetaDataColumnNames.SupportedJoinOperators, typeof(int));
+
+      tbl.BeginLoadData();
+
+      row = tbl.NewRow();
+      row.ItemArray = new object[] {
+        null,
+        "SQLite",
+        _sql.Version,
+        _sql.Version,
+        3,
+        @"(^\[\p{Lo}\p{Lu}\p{Ll}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Nd}@$#_]*$)|(^\[[^\]\0]|\]\]+\]$)|(^\""[^\""\0]|\""\""+\""$)",
+        1,
+        false,
+        "{0}",
+        @"@[\p{Lo}\p{Lu}\p{Ll}\p{Lm}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Lm}\p{Nd}\uff3f_@#\$]*(?=\s+|$)",
+        255,
+        @"^[\p{Lo}\p{Lu}\p{Ll}\p{Lm}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Lm}\p{Nd}\uff3f_@#\$]*(?=\s+|$)",
+        @"(([^\[]|\]\])*)",
+        1,
+        ";",
+        @"'(([^']|'')*)'",
+        15
+      };
+      tbl.Rows.Add(row);
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Build a Columns schema
+    /// </summary>
+    /// <param name="strCatalog">The catalog (attached database) to query, can be null</param>
+    /// <param name="strTable">The table to retrieve schema information for, must not be null</param>
+    /// <param name="strColumn">The column to retrieve schema information for, can be null</param>
+    /// <returns>DataTable</returns>
+    private DataTable Schema_Columns(string strCatalog, string strTable, string strColumn)
+    {
+      DataTable tbl = new DataTable("Columns");
+      DataRow row;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("COLUMN_NAME", typeof(string));
+      tbl.Columns.Add("COLUMN_GUID", typeof(Guid));
+      tbl.Columns.Add("COLUMN_PROPID", typeof(long));
+      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
+      tbl.Columns.Add("COLUMN_HASDEFAULT", typeof(bool));
+      tbl.Columns.Add("COLUMN_DEFAULT", typeof(string));
+      tbl.Columns.Add("COLUMN_FLAGS", typeof(long));
+      tbl.Columns.Add("IS_NULLABLE", typeof(bool));
+      tbl.Columns.Add("DATA_TYPE", typeof(string));
+      tbl.Columns.Add("TYPE_GUID", typeof(Guid));
+      tbl.Columns.Add("CHARACTER_MAXIMUM_LENGTH", typeof(int));
+      tbl.Columns.Add("CHARACTER_OCTET_LENGTH", typeof(int));
+      tbl.Columns.Add("NUMERIC_PRECISION", typeof(int));
+      tbl.Columns.Add("NUMERIC_SCALE", typeof(int));
+      tbl.Columns.Add("DATETIME_PRECISION", typeof(long));
+      tbl.Columns.Add("CHARACTER_SET_CATALOG", typeof(string));
+      tbl.Columns.Add("CHARACTER_SET_SCHEMA", typeof(string));
+      tbl.Columns.Add("CHARACTER_SET_NAME", typeof(string));
+      tbl.Columns.Add("COLLATION_CATALOG", typeof(string));
+      tbl.Columns.Add("COLLATION_SCHEMA", typeof(string));
+      tbl.Columns.Add("COLLATION_NAME", typeof(string));
+      tbl.Columns.Add("DOMAIN_CATALOG", typeof(string));
+      tbl.Columns.Add("DOMAIN_NAME", typeof(string));
+      tbl.Columns.Add("DESCRIPTION", typeof(string));
+      tbl.Columns.Add("PRIMARY_KEY", typeof(bool));
+      tbl.Columns.Add("EDM_TYPE", typeof(string));
+      tbl.Columns.Add("AUTOINCREMENT", typeof(bool));
+      tbl.Columns.Add("UNIQUE", typeof(bool));
+
+      tbl.BeginLoadData();
+
+      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
+
+      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+
+      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table' OR [type] LIKE 'view'", strCatalog, master), this))
+      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
+      {
+        while (rdTables.Read())
+        {
+          if (String.IsNullOrEmpty(strTable) || String.Compare(strTable, rdTables.GetString(2), true, CultureInfo.InvariantCulture) == 0)
+          {
+            try
+            {
+              using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}]", strCatalog, rdTables.GetString(2)), this))
+              using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader(CommandBehavior.SchemaOnly))
+              using (DataTable tblSchema = rd.GetSchemaTable(true, true))
+              {
+                foreach (DataRow schemaRow in tblSchema.Rows)
+                {
+                  if (String.Compare(schemaRow[SchemaTableColumn.ColumnName].ToString(), strColumn, true, CultureInfo.InvariantCulture) == 0
+                    || strColumn == null)
+                  {
+                    row = tbl.NewRow();
+
+                    row["NUMERIC_PRECISION"] = schemaRow[SchemaTableColumn.NumericPrecision];
+                    row["NUMERIC_SCALE"] = schemaRow[SchemaTableColumn.NumericScale];
+                    row["TABLE_NAME"] = rdTables.GetString(2);
+                    row["COLUMN_NAME"] = schemaRow[SchemaTableColumn.ColumnName];
+                    row["TABLE_CATALOG"] = strCatalog;
+                    row["ORDINAL_POSITION"] = schemaRow[SchemaTableColumn.ColumnOrdinal];
+                    row["COLUMN_HASDEFAULT"] = (schemaRow[SchemaTableOptionalColumn.DefaultValue] != DBNull.Value);
+                    row["COLUMN_DEFAULT"] = schemaRow[SchemaTableOptionalColumn.DefaultValue];
+                    row["IS_NULLABLE"] = schemaRow[SchemaTableColumn.AllowDBNull];
+                    row["DATA_TYPE"] = schemaRow["DataTypeName"].ToString().ToLower(CultureInfo.InvariantCulture);
+                    row["EDM_TYPE"] = SqliteConvert.DbTypeToTypeName((DbType)schemaRow[SchemaTableColumn.ProviderType]).ToString().ToLower(CultureInfo.InvariantCulture);
+                    row["CHARACTER_MAXIMUM_LENGTH"] = schemaRow[SchemaTableColumn.ColumnSize];
+                    row["TABLE_SCHEMA"] = schemaRow[SchemaTableColumn.BaseSchemaName];
+                    row["PRIMARY_KEY"] = schemaRow[SchemaTableColumn.IsKey];
+                    row["AUTOINCREMENT"] = schemaRow[SchemaTableOptionalColumn.IsAutoIncrement];
+                    row["COLLATION_NAME"] = schemaRow["CollationType"];
+                    row["UNIQUE"] = schemaRow[SchemaTableColumn.IsUnique];
+                    tbl.Rows.Add(row);
+                  }
+                }
+              }
+            }
+            catch(SqliteException)
+            {
+            }
+          }
+        }
+      }
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Returns index information for the given database and catalog
+    /// </summary>
+    /// <param name="strCatalog">The catalog (attached database) to query, can be null</param>
+    /// <param name="strIndex">The name of the index to retrieve information for, can be null</param>
+    /// <param name="strTable">The table to retrieve index information for, can be null</param>
+    /// <returns>DataTable</returns>
+    private DataTable Schema_Indexes(string strCatalog, string strTable, string strIndex)
+    {
+      DataTable tbl = new DataTable("Indexes");
+      DataRow row;
+      List<int> primaryKeys = new List<int>();
+      bool maybeRowId;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("INDEX_CATALOG", typeof(string));
+      tbl.Columns.Add("INDEX_SCHEMA", typeof(string));
+      tbl.Columns.Add("INDEX_NAME", typeof(string));
+      tbl.Columns.Add("PRIMARY_KEY", typeof(bool));
+      tbl.Columns.Add("UNIQUE", typeof(bool));
+      tbl.Columns.Add("CLUSTERED", typeof(bool));
+      tbl.Columns.Add("TYPE", typeof(int));
+      tbl.Columns.Add("FILL_FACTOR", typeof(int));
+      tbl.Columns.Add("INITIAL_SIZE", typeof(int));
+      tbl.Columns.Add("NULLS", typeof(int));
+      tbl.Columns.Add("SORT_BOOKMARKS", typeof(bool));
+      tbl.Columns.Add("AUTO_UPDATE", typeof(bool));
+      tbl.Columns.Add("NULL_COLLATION", typeof(int));
+      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
+      tbl.Columns.Add("COLUMN_NAME", typeof(string));
+      tbl.Columns.Add("COLUMN_GUID", typeof(Guid));
+      tbl.Columns.Add("COLUMN_PROPID", typeof(long));
+      tbl.Columns.Add("COLLATION", typeof(short));
+      tbl.Columns.Add("CARDINALITY", typeof(Decimal));
+      tbl.Columns.Add("PAGES", typeof(int));
+      tbl.Columns.Add("FILTER_CONDITION", typeof(string));
+      tbl.Columns.Add("INTEGRATED", typeof(bool));
+      tbl.Columns.Add("INDEX_DEFINITION", typeof(string));
+
+      tbl.BeginLoadData();
+
+      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
+
+      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+      
+      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
+      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
+      {
+        while (rdTables.Read())
+        {
+          maybeRowId = false;
+          primaryKeys.Clear();
+          if (String.IsNullOrEmpty(strTable) || String.Compare(rdTables.GetString(2), strTable, true, CultureInfo.InvariantCulture) == 0)
+          {
+            // First, look for any rowid indexes -- which sqlite defines are INTEGER PRIMARY KEY columns.
+            // Such indexes are not listed in the indexes list but count as indexes just the same.
+            try
+            {
+              using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].table_info([{1}])", strCatalog, rdTables.GetString(2)), this))
+              using (SqliteDataReader rdTable = cmdTable.ExecuteReader())
+              {
+                while (rdTable.Read())
+                {
+                  if (rdTable.GetInt32(5) == 1)
+                  {
+                    primaryKeys.Add(rdTable.GetInt32(0));
+
+                    // If the primary key is of type INTEGER, then its a rowid and we need to make a fake index entry for it.
+                    if (String.Compare(rdTable.GetString(2), "INTEGER", true, CultureInfo.InvariantCulture) == 0)
+                      maybeRowId = true;
+                  }
+                }
+              }
+            }
+            catch (SqliteException)
+            {
+            }
+            if (primaryKeys.Count == 1 && maybeRowId == true)
+            {
+              row = tbl.NewRow();
+
+              row["TABLE_CATALOG"] = strCatalog;
+              row["TABLE_NAME"] = rdTables.GetString(2);
+              row["INDEX_CATALOG"] = strCatalog;
+              row["PRIMARY_KEY"] = true;
+              row["INDEX_NAME"] = String.Format(CultureInfo.InvariantCulture, "{1}_PK_{0}", rdTables.GetString(2), master);
+              row["UNIQUE"] = true;
+
+              if (String.Compare((string)row["INDEX_NAME"], strIndex, true, CultureInfo.InvariantCulture) == 0
+              || strIndex == null)
+              {
+                tbl.Rows.Add(row);
+              }
+
+              primaryKeys.Clear();
+            }
+
+            // Now fetch all the rest of the indexes.
+            try
+            {
+              using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].index_list([{1}])", strCatalog, rdTables.GetString(2)), this))
+              using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
+              {
+                while (rd.Read())
+                {
+                  if (String.Compare(rd.GetString(1), strIndex, true, CultureInfo.InvariantCulture) == 0
+                  || strIndex == null)
+                  {
+                    row = tbl.NewRow();
+
+                    row["TABLE_CATALOG"] = strCatalog;
+                    row["TABLE_NAME"] = rdTables.GetString(2);
+                    row["INDEX_CATALOG"] = strCatalog;
+                    row["INDEX_NAME"] = rd.GetString(1);
+                    row["UNIQUE"] = rd.GetBoolean(2);
+                    row["PRIMARY_KEY"] = false;
+
+                    // get the index definition
+                    using (SqliteCommand cmdIndexes = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{2}] WHERE [type] LIKE 'index' AND [name] LIKE '{1}'", strCatalog, rd.GetString(1).Replace("'", "''"), master), this))
+                    using (SqliteDataReader rdIndexes = cmdIndexes.ExecuteReader())
+                    {
+                      while (rdIndexes.Read())
+                      {
+                        if (rdIndexes.IsDBNull(4) == false)
+                          row["INDEX_DEFINITION"] = rdIndexes.GetString(4);
+                        break;
+                      }
+                    }
+
+                    // Now for the really hard work.  Figure out which index is the primary key index.
+                    // The only way to figure it out is to check if the index was an autoindex and if we have a non-rowid
+                    // primary key, and all the columns in the given index match the primary key columns
+                    if (primaryKeys.Count > 0 && rd.GetString(1).StartsWith("sqlite_autoindex_" + rdTables.GetString(2), StringComparison.InvariantCultureIgnoreCase) == true)
+                    {
+                      using (SqliteCommand cmdDetails = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].index_info([{1}])", strCatalog, rd.GetString(1)), this))
+                      using (SqliteDataReader rdDetails = cmdDetails.ExecuteReader())
+                      {
+                        int nMatches = 0;
+                        while (rdDetails.Read())
+                        {
+                          if (primaryKeys.Contains(rdDetails.GetInt32(1)) == false)
+                          {
+                            nMatches = 0;
+                            break;
+                          }
+                          nMatches++;
+                        }
+                        if (nMatches == primaryKeys.Count)
+                        {
+                          row["PRIMARY_KEY"] = true;
+                          primaryKeys.Clear();
+                        }
+                      }
+                    }
+
+                    tbl.Rows.Add(row);
+                  }
+                }
+              }
+            }
+            catch (SqliteException)
+            {
+            }
+          }
+        }
+      }
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    private DataTable Schema_Triggers(string catalog, string table, string triggerName)
+    {
+      DataTable tbl = new DataTable("Triggers");
+      DataRow row;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("TRIGGER_NAME", typeof(string));
+      tbl.Columns.Add("TRIGGER_DEFINITION", typeof(string));
+
+      tbl.BeginLoadData();
+
+      if (String.IsNullOrEmpty(table)) table = null;
+      if (String.IsNullOrEmpty(catalog)) catalog = "main";
+      string master = (String.Compare(catalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+
+      using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT [type], [name], [tbl_name], [rootpage], [sql], [rowid] FROM [{0}].[{1}] WHERE [type] LIKE 'trigger'", catalog, master), this))
+      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
+      {
+        while (rd.Read())
+        {
+          if (String.Compare(rd.GetString(1), triggerName, true, CultureInfo.InvariantCulture) == 0
+            || triggerName == null)
+          {
+            if (table == null || String.Compare(table, rd.GetString(2), true, CultureInfo.InvariantCulture) == 0)
+            {
+              row = tbl.NewRow();
+
+              row["TABLE_CATALOG"] = catalog;
+              row["TABLE_NAME"] = rd.GetString(2);
+              row["TRIGGER_NAME"] = rd.GetString(1);
+              row["TRIGGER_DEFINITION"] = rd.GetString(4);
+
+              tbl.Rows.Add(row);
+            }
+          }
+        }
+      }
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Retrieves table schema information for the database and catalog
+    /// </summary>
+    /// <param name="strCatalog">The catalog (attached database) to retrieve tables on</param>
+    /// <param name="strTable">The table to retrieve, can be null</param>
+    /// <param name="strType">The table type, can be null</param>
+    /// <returns>DataTable</returns>
+    private DataTable Schema_Tables(string strCatalog, string strTable, string strType)
+    {
+      DataTable tbl = new DataTable("Tables");
+      DataRow row;
+      string strItem;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("TABLE_TYPE", typeof(string));
+      tbl.Columns.Add("TABLE_ID", typeof(long));
+      tbl.Columns.Add("TABLE_ROOTPAGE", typeof(int));
+      tbl.Columns.Add("TABLE_DEFINITION", typeof(string));
+      tbl.BeginLoadData();
+
+      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
+
+      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+
+      using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT [type], [name], [tbl_name], [rootpage], [sql], [rowid] FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
+      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
+      {
+        while (rd.Read())
+        {
+          strItem = rd.GetString(0);
+          if (String.Compare(rd.GetString(2), 0, "SQLITE_", 0, 7, true, CultureInfo.InvariantCulture) == 0)
+            strItem = "SYSTEM_TABLE";
+
+          if (String.Compare(strType, strItem, true, CultureInfo.InvariantCulture) == 0
+            || strType == null)
+          {
+            if (String.Compare(rd.GetString(2), strTable, true, CultureInfo.InvariantCulture) == 0
+              || strTable == null)
+            {
+              row = tbl.NewRow();
+
+              row["TABLE_CATALOG"] = strCatalog;
+              row["TABLE_NAME"] = rd.GetString(2);
+              row["TABLE_TYPE"] = strItem;
+              row["TABLE_ID"] = rd.GetInt64(5);
+              row["TABLE_ROOTPAGE"] = rd.GetInt32(3);
+              row["TABLE_DEFINITION"] = rd.GetString(4);
+
+              tbl.Rows.Add(row);
+            }
+          }
+        }
+      }
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Retrieves view schema information for the database
+    /// </summary>
+    /// <param name="strCatalog">The catalog (attached database) to retrieve views on</param>
+    /// <param name="strView">The view name, can be null</param>
+    /// <returns>DataTable</returns>
+    private DataTable Schema_Views(string strCatalog, string strView)
+    {
+      DataTable tbl = new DataTable("Views");
+      DataRow row;
+      string strItem;
+      int nPos;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("VIEW_DEFINITION", typeof(string));
+      tbl.Columns.Add("CHECK_OPTION", typeof(bool));
+      tbl.Columns.Add("IS_UPDATABLE", typeof(bool));
+      tbl.Columns.Add("DESCRIPTION", typeof(string));
+      tbl.Columns.Add("DATE_CREATED", typeof(DateTime));
+      tbl.Columns.Add("DATE_MODIFIED", typeof(DateTime));
+
+      tbl.BeginLoadData();
+
+      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
+
+      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+
+      using (SqliteCommand cmd = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'view'", strCatalog, master), this))
+      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
+      {
+        while (rd.Read())
+        {
+          if (String.Compare(rd.GetString(1), strView, true, CultureInfo.InvariantCulture) == 0
+            || String.IsNullOrEmpty(strView))
+          {
+            strItem = rd.GetString(4).Replace('\r', ' ').Replace('\n', ' ').Replace('\t', ' ');
+            nPos = CultureInfo.InvariantCulture.CompareInfo.IndexOf(strItem, " AS ", CompareOptions.IgnoreCase);
+            if (nPos > -1)
+            {
+              strItem = strItem.Substring(nPos + 4).Trim();
+              row = tbl.NewRow();
+
+              row["TABLE_CATALOG"] = strCatalog;
+              row["TABLE_NAME"] = rd.GetString(2);
+              row["IS_UPDATABLE"] = false;
+              row["VIEW_DEFINITION"] = strItem;
+
+              tbl.Rows.Add(row);
+            }
+          }
+        }
+      }
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Retrieves catalog (attached databases) schema information for the database
+    /// </summary>
+    /// <param name="strCatalog">The catalog to retrieve, can be null</param>
+    /// <returns>DataTable</returns>
+    private DataTable Schema_Catalogs(string strCatalog)
+    {
+      DataTable tbl = new DataTable("Catalogs");
+      DataRow row;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("CATALOG_NAME", typeof(string));
+      tbl.Columns.Add("DESCRIPTION", typeof(string));
+      tbl.Columns.Add("ID", typeof(long));
+
+      tbl.BeginLoadData();
+
+      using (SqliteCommand cmd = new SqliteCommand("PRAGMA database_list", this))
+      using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader())
+      {
+        while (rd.Read())
+        {
+          if (String.Compare(rd.GetString(1), strCatalog, true, CultureInfo.InvariantCulture) == 0
+            || strCatalog == null)
+          {
+            row = tbl.NewRow();
+
+            row["CATALOG_NAME"] = rd.GetString(1);
+            row["DESCRIPTION"] = rd.GetString(2);
+            row["ID"] = rd.GetInt64(0);
+
+            tbl.Rows.Add(row);
+          }
+        }
+      }
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    private DataTable Schema_DataTypes()
+    {
+      DataTable tbl = new DataTable("DataTypes");
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("TypeName", typeof(String));
+      tbl.Columns.Add("ProviderDbType", typeof(int));
+      tbl.Columns.Add("ColumnSize", typeof(long));
+      tbl.Columns.Add("CreateFormat", typeof(String));
+      tbl.Columns.Add("CreateParameters", typeof(String));
+      tbl.Columns.Add("DataType", typeof(String));
+      tbl.Columns.Add("IsAutoIncrementable", typeof(bool));
+      tbl.Columns.Add("IsBestMatch", typeof(bool));
+      tbl.Columns.Add("IsCaseSensitive", typeof(bool));
+      tbl.Columns.Add("IsFixedLength", typeof(bool));
+      tbl.Columns.Add("IsFixedPrecisionScale", typeof(bool));
+      tbl.Columns.Add("IsLong", typeof(bool));
+      tbl.Columns.Add("IsNullable", typeof(bool));
+      tbl.Columns.Add("IsSearchable", typeof(bool));
+      tbl.Columns.Add("IsSearchableWithLike", typeof(bool));
+      tbl.Columns.Add("IsLiteralSupported", typeof(bool));
+      tbl.Columns.Add("LiteralPrefix", typeof(String));
+      tbl.Columns.Add("LiteralSuffix", typeof(String));
+      tbl.Columns.Add("IsUnsigned", typeof(bool));
+      tbl.Columns.Add("MaximumScale", typeof(short));
+      tbl.Columns.Add("MinimumScale", typeof(short));
+      tbl.Columns.Add("IsConcurrencyType", typeof(bool));
+
+      tbl.BeginLoadData();
+
+      StringReader reader = new StringReader(SR.DataTypes);
+      tbl.ReadXml(reader);
+      reader.Close();
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Returns the base column information for indexes in a database
+    /// </summary>
+    /// <param name="strCatalog">The catalog to retrieve indexes for (can be null)</param>
+    /// <param name="strTable">The table to restrict index information by (can be null)</param>
+    /// <param name="strIndex">The index to restrict index information by (can be null)</param>
+    /// <param name="strColumn">The source column to restrict index information by (can be null)</param>
+    /// <returns>A DataTable containing the results</returns>
+    private DataTable Schema_IndexColumns(string strCatalog, string strTable, string strIndex, string strColumn)
+    {
+      DataTable tbl = new DataTable("IndexColumns");
+      DataRow row;
+      List<KeyValuePair<int, string>> primaryKeys = new List<KeyValuePair<int, string>>();
+      bool maybeRowId;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("CONSTRAINT_CATALOG", typeof(string));
+      tbl.Columns.Add("CONSTRAINT_SCHEMA", typeof(string));
+      tbl.Columns.Add("CONSTRAINT_NAME", typeof(string));
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("COLUMN_NAME", typeof(string));
+      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
+      tbl.Columns.Add("INDEX_NAME", typeof(string));
+      tbl.Columns.Add("COLLATION_NAME", typeof(string));
+      tbl.Columns.Add("SORT_MODE", typeof(string));
+      tbl.Columns.Add("CONFLICT_OPTION", typeof(int));
+
+      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
+
+      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+
+      tbl.BeginLoadData();
+
+      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
+      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
+      {
+        while (rdTables.Read())
+        {
+          maybeRowId = false;
+          primaryKeys.Clear();
+          if (String.IsNullOrEmpty(strTable) || String.Compare(rdTables.GetString(2), strTable, true, CultureInfo.InvariantCulture) == 0)
+          {
+            try
+            {
+              using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].table_info([{1}])", strCatalog, rdTables.GetString(2)), this))
+              using (SqliteDataReader rdTable = cmdTable.ExecuteReader())
+              {
+                while (rdTable.Read())
+                {
+                  if (rdTable.GetInt32(5) == 1) // is a primary key
+                  {
+                    primaryKeys.Add(new KeyValuePair<int, string>(rdTable.GetInt32(0), rdTable.GetString(1)));
+                    // Is an integer -- could be a rowid if no other primary keys exist in the table
+                    if (String.Compare(rdTable.GetString(2), "INTEGER", true, CultureInfo.InvariantCulture) == 0)
+                      maybeRowId = true;
+                  }
+                }
+              }
+            }
+            catch (SqliteException)
+            {
+            }
+            // This is a rowid row
+            if (primaryKeys.Count == 1 && maybeRowId == true)
+            {
+              row = tbl.NewRow();
+              row["CONSTRAINT_CATALOG"] = strCatalog;
+              row["CONSTRAINT_NAME"] = String.Format(CultureInfo.InvariantCulture, "{1}_PK_{0}", rdTables.GetString(2), master);
+              row["TABLE_CATALOG"] = strCatalog;
+              row["TABLE_NAME"] = rdTables.GetString(2);
+              row["COLUMN_NAME"] = primaryKeys[0].Value;
+              row["INDEX_NAME"] = row["CONSTRAINT_NAME"];
+              row["ORDINAL_POSITION"] = 0; // primaryKeys[0].Key;
+              row["COLLATION_NAME"] = "BINARY";
+              row["SORT_MODE"] = "ASC";
+              row["CONFLICT_OPTION"] = 2;
+
+              if (String.IsNullOrEmpty(strIndex) || String.Compare(strIndex, (string)row["INDEX_NAME"], true, CultureInfo.InvariantCulture) == 0)
+                tbl.Rows.Add(row);
+            }
+
+            using (SqliteCommand cmdIndexes = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{2}] WHERE [type] LIKE 'index' AND [tbl_name] LIKE '{1}'", strCatalog, rdTables.GetString(2).Replace("'", "''"), master), this))
+            using (SqliteDataReader rdIndexes = cmdIndexes.ExecuteReader())
+            {
+              while (rdIndexes.Read())
+              {
+                int ordinal = 0;
+                if (String.IsNullOrEmpty(strIndex) || String.Compare(strIndex, rdIndexes.GetString(1), true, CultureInfo.InvariantCulture) == 0)
+                {
+                  try
+                  {
+                    using (SqliteCommand cmdIndex = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].index_info([{1}])", strCatalog, rdIndexes.GetString(1)), this))
+                    using (SqliteDataReader rdIndex = cmdIndex.ExecuteReader())
+                    {
+                      while (rdIndex.Read())
+                      {
+                        row = tbl.NewRow();
+                        row["CONSTRAINT_CATALOG"] = strCatalog;
+                        row["CONSTRAINT_NAME"] = rdIndexes.GetString(1);
+                        row["TABLE_CATALOG"] = strCatalog;
+                        row["TABLE_NAME"] = rdIndexes.GetString(2);
+                        row["COLUMN_NAME"] = rdIndex.GetString(2);
+                        row["INDEX_NAME"] = rdIndexes.GetString(1);
+                        row["ORDINAL_POSITION"] = ordinal; // rdIndex.GetInt32(1);
+
+                        string collationSequence;
+                        int sortMode;
+                        int onError;
+                        _sql.GetIndexColumnExtendedInfo(strCatalog, rdIndexes.GetString(1), rdIndex.GetString(2), out sortMode, out onError, out collationSequence);
+
+                        if (String.IsNullOrEmpty(collationSequence) == false)
+                          row["COLLATION_NAME"] = collationSequence;
+
+                        row["SORT_MODE"] = (sortMode == 0) ? "ASC" : "DESC";
+                        row["CONFLICT_OPTION"] = onError;
+
+                        ordinal++;
+
+                        if (String.IsNullOrEmpty(strColumn) || String.Compare(strColumn, row["COLUMN_NAME"].ToString(), true, CultureInfo.InvariantCulture) == 0)
+                          tbl.Rows.Add(row);
+                      }
+                    }
+                  }
+                  catch (SqliteException)
+                  {
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+
+      tbl.EndLoadData();
+      tbl.AcceptChanges();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Returns detailed column information for a specified view
+    /// </summary>
+    /// <param name="strCatalog">The catalog to retrieve columns for (can be null)</param>
+    /// <param name="strView">The view to restrict column information by (can be null)</param>
+    /// <param name="strColumn">The source column to restrict column information by (can be null)</param>
+    /// <returns>A DataTable containing the results</returns>
+    private DataTable Schema_ViewColumns(string strCatalog, string strView, string strColumn)
+    {
+      DataTable tbl = new DataTable("ViewColumns");
+      DataRow row;
+      string strSql;
+      int n;
+      DataRow schemaRow;
+      DataRow viewRow;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("VIEW_CATALOG", typeof(string));
+      tbl.Columns.Add("VIEW_SCHEMA", typeof(string));
+      tbl.Columns.Add("VIEW_NAME", typeof(string));
+      tbl.Columns.Add("VIEW_COLUMN_NAME", typeof(String));
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("COLUMN_NAME", typeof(string));
+      tbl.Columns.Add("ORDINAL_POSITION", typeof(int));
+      tbl.Columns.Add("COLUMN_HASDEFAULT", typeof(bool));
+      tbl.Columns.Add("COLUMN_DEFAULT", typeof(string));
+      tbl.Columns.Add("COLUMN_FLAGS", typeof(long));
+      tbl.Columns.Add("IS_NULLABLE", typeof(bool));
+      tbl.Columns.Add("DATA_TYPE", typeof(string));
+      tbl.Columns.Add("CHARACTER_MAXIMUM_LENGTH", typeof(int));
+      tbl.Columns.Add("NUMERIC_PRECISION", typeof(int));
+      tbl.Columns.Add("NUMERIC_SCALE", typeof(int));
+      tbl.Columns.Add("DATETIME_PRECISION", typeof(long));
+      tbl.Columns.Add("CHARACTER_SET_CATALOG", typeof(string));
+      tbl.Columns.Add("CHARACTER_SET_SCHEMA", typeof(string));
+      tbl.Columns.Add("CHARACTER_SET_NAME", typeof(string));
+      tbl.Columns.Add("COLLATION_CATALOG", typeof(string));
+      tbl.Columns.Add("COLLATION_SCHEMA", typeof(string));
+      tbl.Columns.Add("COLLATION_NAME", typeof(string));
+      tbl.Columns.Add("PRIMARY_KEY", typeof(bool));
+      tbl.Columns.Add("EDM_TYPE", typeof(string));
+      tbl.Columns.Add("AUTOINCREMENT", typeof(bool));
+      tbl.Columns.Add("UNIQUE", typeof(bool));
+
+      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
+
+      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+      
+      tbl.BeginLoadData();
+
+      using (SqliteCommand cmdViews = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'view'", strCatalog, master), this))
+      using (SqliteDataReader rdViews = cmdViews.ExecuteReader())
+      {
+        while (rdViews.Read())
+        {
+          if (String.IsNullOrEmpty(strView) || String.Compare(strView, rdViews.GetString(2), true, CultureInfo.InvariantCulture) == 0)
+          {
+            using (SqliteCommand cmdViewSelect = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}]", strCatalog, rdViews.GetString(2)), this))
+            {
+              strSql = rdViews.GetString(4).Replace('\r', ' ').Replace('\n', ' ').Replace('\t', ' ');
+              n = CultureInfo.InvariantCulture.CompareInfo.IndexOf(strSql, " AS ", CompareOptions.IgnoreCase);
+              if (n < 0)
+                continue;
+
+              strSql = strSql.Substring(n + 4);
+
+              using (SqliteCommand cmd = new SqliteCommand(strSql, this))
+              using (SqliteDataReader rdViewSelect = cmdViewSelect.ExecuteReader(CommandBehavior.SchemaOnly))
+              using (SqliteDataReader rd = (SqliteDataReader)cmd.ExecuteReader(CommandBehavior.SchemaOnly))
+              using (DataTable tblSchemaView = rdViewSelect.GetSchemaTable(false, false))
+              using (DataTable tblSchema = rd.GetSchemaTable(false, false))
+              {
+                for (n = 0; n < tblSchema.Rows.Count; n++)
+                {
+                  viewRow = tblSchemaView.Rows[n];
+                  schemaRow = tblSchema.Rows[n];
+
+                  if (String.Compare(viewRow[SchemaTableColumn.ColumnName].ToString(), strColumn, true, CultureInfo.InvariantCulture) == 0
+                    || strColumn == null)
+                  {
+                    row = tbl.NewRow();
+
+                    row["VIEW_CATALOG"] = strCatalog;
+                    row["VIEW_NAME"] = rdViews.GetString(2);
+                    row["TABLE_CATALOG"] = strCatalog;
+                    row["TABLE_SCHEMA"] = schemaRow[SchemaTableColumn.BaseSchemaName];
+                    row["TABLE_NAME"] = schemaRow[SchemaTableColumn.BaseTableName];
+                    row["COLUMN_NAME"] = schemaRow[SchemaTableColumn.BaseColumnName];
+                    row["VIEW_COLUMN_NAME"] = viewRow[SchemaTableColumn.ColumnName];
+                    row["COLUMN_HASDEFAULT"] = (viewRow[SchemaTableOptionalColumn.DefaultValue] != DBNull.Value);
+                    row["COLUMN_DEFAULT"] = viewRow[SchemaTableOptionalColumn.DefaultValue];
+                    row["ORDINAL_POSITION"] = viewRow[SchemaTableColumn.ColumnOrdinal];
+                    row["IS_NULLABLE"] = viewRow[SchemaTableColumn.AllowDBNull];
+                    row["DATA_TYPE"] = viewRow["DataTypeName"]; // SqliteConvert.DbTypeToType((DbType)viewRow[SchemaTableColumn.ProviderType]).ToString();
+                    row["EDM_TYPE"] = SqliteConvert.DbTypeToTypeName((DbType)viewRow[SchemaTableColumn.ProviderType]).ToString().ToLower(CultureInfo.InvariantCulture);
+                    row["CHARACTER_MAXIMUM_LENGTH"] = viewRow[SchemaTableColumn.ColumnSize];
+                    row["TABLE_SCHEMA"] = viewRow[SchemaTableColumn.BaseSchemaName];
+                    row["PRIMARY_KEY"] = viewRow[SchemaTableColumn.IsKey];
+                    row["AUTOINCREMENT"] = viewRow[SchemaTableOptionalColumn.IsAutoIncrement];
+                    row["COLLATION_NAME"] = viewRow["CollationType"];
+                    row["UNIQUE"] = viewRow[SchemaTableColumn.IsUnique];
+                    tbl.Rows.Add(row);
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+
+      tbl.EndLoadData();
+      tbl.AcceptChanges();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Retrieves foreign key information from the specified set of filters
+    /// </summary>
+    /// <param name="strCatalog">An optional catalog to restrict results on</param>
+    /// <param name="strTable">An optional table to restrict results on</param>
+    /// <param name="strKeyName">An optional foreign key name to restrict results on</param>
+    /// <returns>A DataTable with the results of the query</returns>
+    private DataTable Schema_ForeignKeys(string strCatalog, string strTable, string strKeyName)
+    {
+      DataTable tbl = new DataTable("ForeignKeys");
+      DataRow row;
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add("CONSTRAINT_CATALOG", typeof(string));
+      tbl.Columns.Add("CONSTRAINT_SCHEMA", typeof(string));
+      tbl.Columns.Add("CONSTRAINT_NAME", typeof(string));
+      tbl.Columns.Add("TABLE_CATALOG", typeof(string));
+      tbl.Columns.Add("TABLE_SCHEMA", typeof(string));
+      tbl.Columns.Add("TABLE_NAME", typeof(string));
+      tbl.Columns.Add("CONSTRAINT_TYPE", typeof(string));
+      tbl.Columns.Add("IS_DEFERRABLE", typeof(bool));
+      tbl.Columns.Add("INITIALLY_DEFERRED", typeof(bool));
+      tbl.Columns.Add("FKEY_FROM_COLUMN", typeof(string));
+      tbl.Columns.Add("FKEY_FROM_ORDINAL_POSITION", typeof(int));
+      tbl.Columns.Add("FKEY_TO_CATALOG", typeof(string));
+      tbl.Columns.Add("FKEY_TO_SCHEMA", typeof(string));
+      tbl.Columns.Add("FKEY_TO_TABLE", typeof(string));
+      tbl.Columns.Add("FKEY_TO_COLUMN", typeof(string));
+
+      if (String.IsNullOrEmpty(strCatalog)) strCatalog = "main";
+
+      string master = (String.Compare(strCatalog, "temp", true, CultureInfo.InvariantCulture) == 0) ? _tempmasterdb : _masterdb;
+
+      tbl.BeginLoadData();
+
+      using (SqliteCommand cmdTables = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}] WHERE [type] LIKE 'table'", strCatalog, master), this))
+      using (SqliteDataReader rdTables = cmdTables.ExecuteReader())
+      {
+        while (rdTables.Read())
+        {
+          if (String.IsNullOrEmpty(strTable) || String.Compare(strTable, rdTables.GetString(2), true, CultureInfo.InvariantCulture) == 0)
+          {
+            try
+            {
+              using (SqliteCommandBuilder builder = new SqliteCommandBuilder())
+              //using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "SELECT * FROM [{0}].[{1}]", strCatalog, rdTables.GetString(2)), this))
+              //using (SqliteDataReader rdTable = cmdTable.ExecuteReader(CommandBehavior.SchemaOnly))
+              using (SqliteCommand cmdKey = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].foreign_key_list([{1}])", strCatalog, rdTables.GetString(2)), this))
+              using (SqliteDataReader rdKey = cmdKey.ExecuteReader())
+              {
+                while (rdKey.Read())
+                {
+                  row = tbl.NewRow();
+                  row["CONSTRAINT_CATALOG"] = strCatalog;
+                  row["CONSTRAINT_NAME"] = String.Format(CultureInfo.InvariantCulture, "FK_{0}_{1}", rdTables[2], rdKey.GetInt32(0));
+                  row["TABLE_CATALOG"] = strCatalog;
+                  row["TABLE_NAME"] = builder.UnquoteIdentifier(rdTables.GetString(2));
+                  row["CONSTRAINT_TYPE"] = "FOREIGN KEY";
+                  row["IS_DEFERRABLE"] = false;
+                  row["INITIALLY_DEFERRED"] = false;
+                  row["FKEY_FROM_COLUMN"] = builder.UnquoteIdentifier(rdKey[3].ToString());
+                  row["FKEY_TO_CATALOG"] = strCatalog;
+                  row["FKEY_TO_TABLE"] = builder.UnquoteIdentifier(rdKey[2].ToString());
+                  row["FKEY_TO_COLUMN"] = builder.UnquoteIdentifier(rdKey[4].ToString());
+                  row["FKEY_FROM_ORDINAL_POSITION"] = rdKey[1];
+
+                  if (String.IsNullOrEmpty(strKeyName) || String.Compare(strKeyName, row["CONSTRAINT_NAME"].ToString(), true, CultureInfo.InvariantCulture) == 0)
+                    tbl.Rows.Add(row);
+                }
+              }
+            }
+            catch (SqliteException)
+            {
+            }
+          }
+        }
+      }
+
+      tbl.EndLoadData();
+      tbl.AcceptChanges();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// This event is raised whenever SQLite makes an update/delete/insert into the database on
+    /// this connection.  It only applies to the given connection.
+    /// </summary>
+    public event SQLiteUpdateEventHandler Update
+    {
+      add
+      {
+        if (_updateHandler == null)
+        {
+          _updateCallback = new SQLiteUpdateCallback(UpdateCallback);
+          if (_sql != null) _sql.SetUpdateHook(_updateCallback);
+        }
+        _updateHandler += value;
+      }
+      remove
+      {
+        _updateHandler -= value;
+        if (_updateHandler == null)
+        {
+          if (_sql != null) _sql.SetUpdateHook(null);
+          _updateCallback = null;
+        }
+      }
+    }
+
+    private void UpdateCallback(IntPtr puser, int type, IntPtr database, IntPtr table, Int64 rowid)
+    {
+      _updateHandler(this, new UpdateEventArgs(
+        SQLiteBase.UTF8ToString(database, -1),
+        SQLiteBase.UTF8ToString(table, -1),
+        (UpdateEventType)type,
+        rowid));
+    }
+
+    /// <summary>
+    /// This event is raised whenever SQLite is committing a transaction.
+    /// Return non-zero to trigger a rollback
+    /// </summary>
+    public event SQLiteCommitHandler Commit
+    {
+      add
+      {
+        if (_commitHandler == null)
+        {
+          _commitCallback = new SQLiteCommitCallback(CommitCallback);
+          if (_sql != null) _sql.SetCommitHook(_commitCallback);
+        }
+        _commitHandler += value;
+      }
+      remove
+      {
+        _commitHandler -= value;
+        if (_commitHandler == null)
+        {
+          if (_sql != null) _sql.SetCommitHook(null);
+          _commitCallback = null;
+        }
+      }
+    }
+
+    /// <summary>
+    /// This event is raised whenever SQLite is committing a transaction.
+    /// Return non-zero to trigger a rollback
+    /// </summary>
+    public event EventHandler RollBack
+    {
+      add
+      {
+        if (_rollbackHandler == null)
+        {
+          _rollbackCallback = new SQLiteRollbackCallback(RollbackCallback);
+          if (_sql != null) _sql.SetRollbackHook(_rollbackCallback);
+        }
+        _rollbackHandler += value;
+      }
+      remove
+      {
+        _rollbackHandler -= value;
+        if (_rollbackHandler == null)
+        {
+          if (_sql != null) _sql.SetRollbackHook(null);
+          _rollbackCallback = null;
+        }
+      }
+    }
+
+
+    private int CommitCallback(IntPtr parg)
+    {
+      CommitEventArgs e = new CommitEventArgs();
+      _commitHandler(this, e);
+      return (e.AbortTransaction == true) ? 1 : 0;
+    }
+
+    private void RollbackCallback(IntPtr parg)
+    {
+      _rollbackHandler(this, EventArgs.Empty);
+    }
+
+    // http://www.sqlite.org/c3ref/config.html
+    public static void SetConfig (SQLiteConfig config)
+    {
+      int n = UnsafeNativeMethods.sqlite3_config (config);
+      if (n > 0) throw new SqliteException (n, null);
+    }
+  }
+
+  /// <summary>
+  /// The I/O file cache flushing behavior for the connection
+  /// </summary>
+  public enum SynchronizationModes
+  {
+    /// <summary>
+    /// Normal file flushing at critical sections of the code
+    /// </summary>
+    Normal = 0,
+    /// <summary>
+    /// Full file flushing after every write operation
+    /// </summary>
+    Full = 1,
+    /// <summary>
+    /// Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing
+    /// </summary>
+    Off = 2,
+  }
+
+#if !PLATFORM_COMPACTFRAMEWORK
+  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+#endif
+  internal delegate void SQLiteUpdateCallback(IntPtr puser, int type, IntPtr database, IntPtr table, Int64 rowid);
+#if !PLATFORM_COMPACTFRAMEWORK
+  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+#endif
+  internal delegate int SQLiteCommitCallback(IntPtr puser);
+#if !PLATFORM_COMPACTFRAMEWORK
+  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+#endif
+  internal delegate void SQLiteRollbackCallback(IntPtr puser);
+
+  /// <summary>
+  /// Raised when a transaction is about to be committed.  To roll back a transaction, set the 
+  /// rollbackTrans boolean value to true.
+  /// </summary>
+  /// <param name="sender">The connection committing the transaction</param>
+  /// <param name="e">Event arguments on the transaction</param>
+  public delegate void SQLiteCommitHandler(object sender, CommitEventArgs e);
+
+  /// <summary>
+  /// Raised when data is inserted, updated and deleted on a given connection
+  /// </summary>
+  /// <param name="sender">The connection committing the transaction</param>
+  /// <param name="e">The event parameters which triggered the event</param>
+  public delegate void SQLiteUpdateEventHandler(object sender, UpdateEventArgs e);
+
+  /// <summary>
+  /// Whenever an update event is triggered on a connection, this enum will indicate
+  /// exactly what type of operation is being performed.
+  /// </summary>
+  public enum UpdateEventType
+  {
+    /// <summary>
+    /// A row is being deleted from the given database and table
+    /// </summary>
+    Delete = 9,
+    /// <summary>
+    /// A row is being inserted into the table.
+    /// </summary>
+    Insert = 18,
+    /// <summary>
+    /// A row is being updated in the table.
+    /// </summary>
+    Update = 23,
+  }
+
+  /// <summary>
+  /// Passed during an Update callback, these event arguments detail the type of update operation being performed
+  /// on the given connection.
+  /// </summary>
+  public class UpdateEventArgs : EventArgs
+  {
+    /// <summary>
+    /// The name of the database being updated (usually "main" but can be any attached or temporary database)
+    /// </summary>
+    public readonly string Database;
+
+    /// <summary>
+    /// The name of the table being updated
+    /// </summary>
+    public readonly string Table;
+
+    /// <summary>
+    /// The type of update being performed (insert/update/delete)
+    /// </summary>
+    public readonly UpdateEventType Event;
+
+    /// <summary>
+    /// The RowId affected by this update.
+    /// </summary>
+    public readonly Int64 RowId;
+
+    internal UpdateEventArgs(string database, string table, UpdateEventType eventType, Int64 rowid)
+    {
+      Database = database;
+      Table = table;
+      Event = eventType;
+      RowId = rowid;
+    }
+  }
+
+  /// <summary>
+  /// Event arguments raised when a transaction is being committed
+  /// </summary>
+  public class CommitEventArgs : EventArgs
+  {
+    internal CommitEventArgs()
+    {
+    }
+
+    /// <summary>
+    /// Set to true to abort the transaction and trigger a rollback
+    /// </summary>
+    public bool AbortTransaction;
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConnectionPool.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConnectionPool.cs
@@ -1,192 +1,192 @@
-/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Collections.Generic;
-
-  internal static class SqliteConnectionPool
-  {
-    /// <summary>
-    /// Keeps track of connections made on a specified file.  The PoolVersion dictates whether old objects get
-    /// returned to the pool or discarded when no longer in use.
-    /// </summary>
-    internal class Pool
-    {
-      internal readonly Queue<WeakReference> Queue = new Queue<WeakReference>();
-      internal int PoolVersion;
-      internal int MaxPoolSize;
-
-      internal Pool(int version, int maxSize)
-      {
-        PoolVersion = version;
-        MaxPoolSize = maxSize;
-      }
-    }
-
-    /// <summary>
-    /// The connection pool object
-    /// </summary>
-    private static SortedList<string, Pool> _connections = new SortedList<string, Pool>(StringComparer.OrdinalIgnoreCase);
-
-    /// <summary>
-    /// The default version number new pools will get
-    /// </summary>
-    private static int _poolVersion = 1;
-
-    /// <summary>
-    /// Attempt to pull a pooled connection out of the queue for active duty
-    /// </summary>
-    /// <param name="fileName">The filename for a desired connection</param>
-    /// <param name="maxPoolSize">The maximum size the connection pool for the filename can be</param>
-    /// <param name="version">The pool version the returned connection will belong to</param>
-    /// <returns>Returns NULL if no connections were available.  Even if none are, the poolversion will still be a valid pool version</returns>
-    internal static SqliteConnectionHandle Remove(string fileName, int maxPoolSize, out int version)
-    {
-      lock (_connections)
-      {
-        Pool queue;
-
-        // Default to the highest pool version
-        version = _poolVersion;
-
-        // If we didn't find a pool for this file, create one even though it will be empty.
-        // We have to do this here because otherwise calling ClearPool() on the file will not work for active connections
-        // that have never seen the pool yet.
-        if (_connections.TryGetValue(fileName, out queue) == false)
-        {
-          queue = new Pool(_poolVersion, maxPoolSize);
-          _connections.Add(fileName, queue);
-
-          return null;
-        }
-
-        // We found a pool for this file, so use its version number
-        version = queue.PoolVersion;
-        queue.MaxPoolSize = maxPoolSize;
-
-        ResizePool(queue, false);
-
-        // Try and get a pooled connection from the queue
-        while (queue.Queue.Count > 0)
-        {
-          WeakReference cnn = queue.Queue.Dequeue();
-          SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
-          if (hdl != null)
-          {
-            return hdl;
-          }
-        }
-        return null;
-      }
-    }
-
-    /// <summary>
-    /// Clears out all pooled connections and rev's up the default pool version to force all old active objects
-    /// not in the pool to get discarded rather than returned to their pools.
-    /// </summary>
-    internal static void ClearAllPools()
-    {
-      lock (_connections)
-      {
-        foreach (KeyValuePair<string, Pool> pair in _connections)
-        {
-          while (pair.Value.Queue.Count > 0)
-          {
-            WeakReference cnn = pair.Value.Queue.Dequeue();
-            SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
-            if (hdl != null)
-            {
-              hdl.Dispose();
-            }
-          }
-          
-          // Keep track of the highest revision so we can go one higher when we're finished
-          if (_poolVersion <= pair.Value.PoolVersion)
-            _poolVersion = pair.Value.PoolVersion + 1;
-        }
-        // All pools are cleared and we have a new highest version number to force all old version active items to get discarded
-        // instead of going back to the queue when they are closed.
-        // We can get away with this because we're pumped up the _poolVersion out of range of all active connections, so they
-        // will all get discarded when they try to put themselves back in their pool.
-        _connections.Clear();
-      }
-    }
-
-    /// <summary>
-    /// Clear a given pool for a given filename.  Discards anything in the pool for the given file, and revs the pool
-    /// version so current active objects on the old version of the pool will get discarded rather than be returned to the pool.
-    /// </summary>
-    /// <param name="fileName">The filename of the pool to clear</param>
-    internal static void ClearPool(string fileName)
-    {
-      lock (_connections)
-      {
-        Pool queue;
-        if (_connections.TryGetValue(fileName, out queue) == true)
-        {
-          queue.PoolVersion++;
-          while (queue.Queue.Count > 0)
-          {
-            WeakReference cnn = queue.Queue.Dequeue();
-            SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
-            if (hdl != null)
-            {
-              hdl.Dispose();
-            }
-          }
-        }
-      }
-    }
-
-    /// <summary>
-    /// Return a connection to the pool for someone else to use.
-    /// </summary>
-    /// <param name="fileName">The filename of the pool to use</param>
-    /// <param name="hdl">The connection handle to pool</param>
-    /// <param name="version">The pool version the handle was created under</param>
-    /// <remarks>
-    /// If the version numbers don't match between the connection and the pool, then the handle is discarded.
-    /// </remarks>
-    internal static void Add(string fileName, SqliteConnectionHandle hdl, int version)
-    {
-      lock (_connections)
-      {
-        // If the queue doesn't exist in the pool, then it must've been cleared sometime after the connection was created.
-        Pool queue;
-        if (_connections.TryGetValue(fileName, out queue) == true && version == queue.PoolVersion)
-        {
-          ResizePool(queue, true);
-          queue.Queue.Enqueue(new WeakReference(hdl, false));
-          GC.KeepAlive(hdl);
-        }
-        else
-        {
-          hdl.Close();
-        }
-      }
-    }
-
-    private static void ResizePool(Pool queue, bool forAdding)
-    {
-      int target = queue.MaxPoolSize;
-
-      if (forAdding && target > 0) target--;
-
-      while (queue.Queue.Count > target)
-      {
-        WeakReference cnn = queue.Queue.Dequeue();
-        SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
-        if (hdl != null)
-        {
-          hdl.Dispose();
-        }
-      }
-    }
-  }
-}
+/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Collections.Generic;
+
+  internal static class SqliteConnectionPool
+  {
+    /// <summary>
+    /// Keeps track of connections made on a specified file.  The PoolVersion dictates whether old objects get
+    /// returned to the pool or discarded when no longer in use.
+    /// </summary>
+    internal class Pool
+    {
+      internal readonly Queue<WeakReference> Queue = new Queue<WeakReference>();
+      internal int PoolVersion;
+      internal int MaxPoolSize;
+
+      internal Pool(int version, int maxSize)
+      {
+        PoolVersion = version;
+        MaxPoolSize = maxSize;
+      }
+    }
+
+    /// <summary>
+    /// The connection pool object
+    /// </summary>
+    private static SortedList<string, Pool> _connections = new SortedList<string, Pool>(StringComparer.OrdinalIgnoreCase);
+
+    /// <summary>
+    /// The default version number new pools will get
+    /// </summary>
+    private static int _poolVersion = 1;
+
+    /// <summary>
+    /// Attempt to pull a pooled connection out of the queue for active duty
+    /// </summary>
+    /// <param name="fileName">The filename for a desired connection</param>
+    /// <param name="maxPoolSize">The maximum size the connection pool for the filename can be</param>
+    /// <param name="version">The pool version the returned connection will belong to</param>
+    /// <returns>Returns NULL if no connections were available.  Even if none are, the poolversion will still be a valid pool version</returns>
+    internal static SqliteConnectionHandle Remove(string fileName, int maxPoolSize, out int version)
+    {
+      lock (_connections)
+      {
+        Pool queue;
+
+        // Default to the highest pool version
+        version = _poolVersion;
+
+        // If we didn't find a pool for this file, create one even though it will be empty.
+        // We have to do this here because otherwise calling ClearPool() on the file will not work for active connections
+        // that have never seen the pool yet.
+        if (_connections.TryGetValue(fileName, out queue) == false)
+        {
+          queue = new Pool(_poolVersion, maxPoolSize);
+          _connections.Add(fileName, queue);
+
+          return null;
+        }
+
+        // We found a pool for this file, so use its version number
+        version = queue.PoolVersion;
+        queue.MaxPoolSize = maxPoolSize;
+
+        ResizePool(queue, false);
+
+        // Try and get a pooled connection from the queue
+        while (queue.Queue.Count > 0)
+        {
+          WeakReference cnn = queue.Queue.Dequeue();
+          SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
+          if (hdl != null)
+          {
+            return hdl;
+          }
+        }
+        return null;
+      }
+    }
+
+    /// <summary>
+    /// Clears out all pooled connections and rev's up the default pool version to force all old active objects
+    /// not in the pool to get discarded rather than returned to their pools.
+    /// </summary>
+    internal static void ClearAllPools()
+    {
+      lock (_connections)
+      {
+        foreach (KeyValuePair<string, Pool> pair in _connections)
+        {
+          while (pair.Value.Queue.Count > 0)
+          {
+            WeakReference cnn = pair.Value.Queue.Dequeue();
+            SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
+            if (hdl != null)
+            {
+              hdl.Dispose();
+            }
+          }
+          
+          // Keep track of the highest revision so we can go one higher when we're finished
+          if (_poolVersion <= pair.Value.PoolVersion)
+            _poolVersion = pair.Value.PoolVersion + 1;
+        }
+        // All pools are cleared and we have a new highest version number to force all old version active items to get discarded
+        // instead of going back to the queue when they are closed.
+        // We can get away with this because we're pumped up the _poolVersion out of range of all active connections, so they
+        // will all get discarded when they try to put themselves back in their pool.
+        _connections.Clear();
+      }
+    }
+
+    /// <summary>
+    /// Clear a given pool for a given filename.  Discards anything in the pool for the given file, and revs the pool
+    /// version so current active objects on the old version of the pool will get discarded rather than be returned to the pool.
+    /// </summary>
+    /// <param name="fileName">The filename of the pool to clear</param>
+    internal static void ClearPool(string fileName)
+    {
+      lock (_connections)
+      {
+        Pool queue;
+        if (_connections.TryGetValue(fileName, out queue) == true)
+        {
+          queue.PoolVersion++;
+          while (queue.Queue.Count > 0)
+          {
+            WeakReference cnn = queue.Queue.Dequeue();
+            SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
+            if (hdl != null)
+            {
+              hdl.Dispose();
+            }
+          }
+        }
+      }
+    }
+
+    /// <summary>
+    /// Return a connection to the pool for someone else to use.
+    /// </summary>
+    /// <param name="fileName">The filename of the pool to use</param>
+    /// <param name="hdl">The connection handle to pool</param>
+    /// <param name="version">The pool version the handle was created under</param>
+    /// <remarks>
+    /// If the version numbers don't match between the connection and the pool, then the handle is discarded.
+    /// </remarks>
+    internal static void Add(string fileName, SqliteConnectionHandle hdl, int version)
+    {
+      lock (_connections)
+      {
+        // If the queue doesn't exist in the pool, then it must've been cleared sometime after the connection was created.
+        Pool queue;
+        if (_connections.TryGetValue(fileName, out queue) == true && version == queue.PoolVersion)
+        {
+          ResizePool(queue, true);
+          queue.Queue.Enqueue(new WeakReference(hdl, false));
+          GC.KeepAlive(hdl);
+        }
+        else
+        {
+          hdl.Close();
+        }
+      }
+    }
+
+    private static void ResizePool(Pool queue, bool forAdding)
+    {
+      int target = queue.MaxPoolSize;
+
+      if (forAdding && target > 0) target--;
+
+      while (queue.Queue.Count > target)
+      {
+        WeakReference cnn = queue.Queue.Dequeue();
+        SqliteConnectionHandle hdl = cnn.Target as SqliteConnectionHandle;
+        if (hdl != null)
+        {
+          hdl.Dispose();
+        }
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConnectionStringBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConnectionStringBuilder.cs
@@ -1,514 +1,514 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.ComponentModel;
-  using System.Collections;
-  using System.Globalization;
-  using System.Reflection;
-
-#if !PLATFORM_COMPACTFRAMEWORK
-  using System.ComponentModel.Design;
-
-  /// <summary>
-  /// SQLite implementation of DbConnectionStringBuilder.
-  /// </summary>
-  [DefaultProperty("DataSource")]
-  [DefaultMember("Item")]
-  public sealed class SqliteConnectionStringBuilder : DbConnectionStringBuilder
-  {
-    /// <summary>
-    /// Properties of this class
-    /// </summary>
-    private Hashtable _properties;
-
-    /// <overloads>
-    /// Constructs a new instance of the class
-    /// </overloads>
-    /// <summary>
-    /// Default constructor
-    /// </summary>
-    public SqliteConnectionStringBuilder()
-    {
-      Initialize(null);
-    }
-
-    /// <summary>
-    /// Constructs a new instance of the class using the specified connection string.
-    /// </summary>
-    /// <param name="connectionString">The connection string to parse</param>
-    public SqliteConnectionStringBuilder(string connectionString)
-    {
-      Initialize(connectionString);
-    }
-
-    /// <summary>
-    /// Private initializer, which assigns the connection string and resets the builder
-    /// </summary>
-    /// <param name="cnnString">The connection string to assign</param>
-    private void Initialize(string cnnString)
-    {
-      _properties = new Hashtable(StringComparer.InvariantCultureIgnoreCase);
-      try
-      {
-        base.GetProperties(_properties);
-      }
-      catch(NotImplementedException)
-      {
-        FallbackGetProperties(_properties);
-      }
-
-      if (String.IsNullOrEmpty(cnnString) == false)
-        ConnectionString = cnnString;
-    }
-
-    /// <summary>
-    /// Gets/Sets the default version of the SQLite engine to instantiate.  Currently the only valid value is 3, indicating version 3 of the sqlite library.
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(3)]
-    public int Version
-    {
-      get
-      {
-        object value;
-        TryGetValue("version", out value);
-        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
-      }
-      set
-      {
-        if (value != 3)
-          throw new NotSupportedException();
-
-        this["version"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets the synchronization mode (file flushing) of the connection string.  Default is "Normal".
-    /// </summary>
-    [DisplayName("Synchronous")]
-    [Browsable(true)]
-    [DefaultValue(SynchronizationModes.Normal)]
-    public SynchronizationModes SyncMode
-    {
-      get
-      {
-        object value;
-        TryGetValue("synchronous", out value);
-        if (value is string)
-          return (SynchronizationModes)TypeDescriptor.GetConverter(typeof(SynchronizationModes)).ConvertFrom(value);
-        else return (SynchronizationModes)value;
-      }
-      set
-      {
-        this["synchronous"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets the encoding for the connection string.  The default is "False" which indicates UTF-8 encoding.
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(false)]
-    public bool UseUTF16Encoding
-    {
-      get
-      {
-        object value;
-        TryGetValue("useutf16encoding", out value);
-        return SqliteConvert.ToBoolean(value);
-      }
-      set
-      {
-        this["useutf16encoding"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets whether or not to use connection pooling.  The default is "False"
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(false)]
-    public bool Pooling
-    {
-      get
-      {
-        object value;
-        TryGetValue("pooling", out value);
-        return SqliteConvert.ToBoolean(value);
-      }
-      set
-      {
-        this["pooling"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets whethor not to store GUID's in binary format.  The default is True
-    /// which saves space in the database.
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(true)]
-    public bool BinaryGUID
-    {
-      get
-      {
-        object value;
-        TryGetValue("binaryguid", out value);
-        return SqliteConvert.ToBoolean(value);
-      }
-      set
-      {
-        this["binaryguid"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets the filename to open on the connection string.
-    /// </summary>
-    [DisplayName("Data Source")]
-    [Browsable(true)]
-    [DefaultValue("")]
-    public string DataSource
-    {
-      get
-      {
-        object value;
-        TryGetValue("data source", out value);
-        return value.ToString();
-      }
-      set
-      {
-        this["data source"] = value;
-      }
-    }
-
-    /// <summary>
-    /// An alternate to the data source property
-    /// </summary>
-    [Browsable(false)]
-    public string Uri
-    {
-      get
-      {
-        object value;
-        TryGetValue("uri", out value);
-        return value.ToString();
-      }
-      set
-      {
-        this["uri"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/sets the default command timeout for newly-created commands.  This is especially useful for 
-    /// commands used internally such as inside a SqliteTransaction, where setting the timeout is not possible.
-    /// </summary>
-    [DisplayName("Default Timeout")]
-    [Browsable(true)]
-    [DefaultValue(30)]
-    public int DefaultTimeout
-    {
-      get
-      {
-        object value;
-        TryGetValue("default timeout", out value);
-        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
-      }
-      set
-      {
-        this["default timeout"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Determines whether or not the connection will automatically participate
-    /// in the current distributed transaction (if one exists)
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(true)]
-    public bool Enlist
-    {
-      get
-      {
-        object value;
-        TryGetValue("enlist", out value);
-        return SqliteConvert.ToBoolean(value);
-      }
-      set
-      {
-        this["enlist"] = value;
-      }
-    }
-
-    /// <summary>
-    /// If set to true, will throw an exception if the database specified in the connection
-    /// string does not exist.  If false, the database will be created automatically.
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(false)]
-    public bool FailIfMissing
-    {
-      get
-      {
-        object value;
-        TryGetValue("failifmissing", out value);
-        return SqliteConvert.ToBoolean(value);
-      }
-      set
-      {
-        this["failifmissing"] = value;
-      }
-    }
-
-    /// <summary>
-    /// If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger
-    /// database sizes.
-    /// </summary>
-    [DisplayName("Legacy Format")]
-    [Browsable(true)]
-    [DefaultValue(false)]
-    public bool LegacyFormat
-    {
-      get
-      {
-        object value;
-        TryGetValue("legacy format", out value);
-        return SqliteConvert.ToBoolean(value);
-      }
-      set
-      {
-        this["legacy format"] = value;
-      }
-    }
-
-    /// <summary>
-    /// When enabled, the database will be opened for read-only access and writing will be disabled.
-    /// </summary>
-    [DisplayName("Read Only")]
-    [Browsable(true)]
-    [DefaultValue(false)]
-    public bool ReadOnly
-    {
-      get
-      {
-        object value;
-        TryGetValue("read only", out value);
-        return SqliteConvert.ToBoolean(value);
-      }
-      set
-      {
-        this["read only"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/sets the database encryption password
-    /// </summary>
-    [Browsable(true)]
-    [PasswordPropertyText(true)]
-    [DefaultValue("")]
-    public string Password
-    {
-      get
-      {
-        object value;
-        TryGetValue("password", out value);
-        return value.ToString();
-      }
-      set
-      {
-        this["password"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets the page size for the connection.
-    /// </summary>
-    [DisplayName("Page Size")]
-    [Browsable(true)]
-    [DefaultValue(1024)]
-    public int PageSize
-    {
-      get
-      {
-        object value;
-        TryGetValue("page size", out value);
-        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
-      }
-      set
-      {
-        this["page size"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets the maximum number of pages the database may hold
-    /// </summary>
-    [DisplayName("Max Page Count")]
-    [Browsable(true)]
-    [DefaultValue(0)]
-    public int MaxPageCount
-    {
-      get
-      {
-        object value;
-        TryGetValue("max page count", out value);
-        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
-      }
-      set
-      {
-        this["max page count"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets the cache size for the connection.
-    /// </summary>
-    [DisplayName("Cache Size")]
-    [Browsable(true)]
-    [DefaultValue(2000)]
-    public int CacheSize
-    {
-      get
-      {
-        object value;
-        TryGetValue("cache size", out value);
-        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
-      }
-      set
-      {
-        this["cache size"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/Sets the datetime format for the connection.
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(SQLiteDateFormats.ISO8601)]
-    public SQLiteDateFormats DateTimeFormat
-    {
-      get
-      {
-        object value;
-        TryGetValue("datetimeformat", out value);
-        if (value is string)
-          return (SQLiteDateFormats)TypeDescriptor.GetConverter(typeof(SQLiteDateFormats)).ConvertFrom(value);
-        else return (SQLiteDateFormats)value;
-      }
-      set
-      {
-        this["datetimeformat"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Determines how SQLite handles the transaction journal file.
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(SQLiteJournalModeEnum.Delete)]
-    [DisplayName("Journal Mode")]
-    public SQLiteJournalModeEnum JournalMode
-    {
-      get
-      {
-        object value;
-        TryGetValue("journal mode", out value);
-        if (value is string)
-          return (SQLiteJournalModeEnum)TypeDescriptor.GetConverter(typeof(SQLiteJournalModeEnum)).ConvertFrom(value);
-        else
-          return (SQLiteJournalModeEnum)value;
-      }
-      set
-      {
-        this["journal mode"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Sets the default isolation level for transactions on the connection.
-    /// </summary>
-    [Browsable(true)]
-    [DefaultValue(IsolationLevel.Serializable)]
-    [DisplayName("Default Isolation Level")]
-    public IsolationLevel DefaultIsolationLevel
-    {
-      get
-      {
-        object value;
-        TryGetValue("default isolationlevel", out value);
-        if (value is string)
-          return (IsolationLevel)TypeDescriptor.GetConverter(typeof(IsolationLevel)).ConvertFrom(value);
-        else
-          return (IsolationLevel)value;
-      }
-      set
-      {
-        this["default isolationlevel"] = value;
-      }
-    }
-
-    /// <summary>
-    /// Helper function for retrieving values from the connectionstring
-    /// </summary>
-    /// <param name="keyword">The keyword to retrieve settings for</param>
-    /// <param name="value">The resulting parameter value</param>
-    /// <returns>Returns true if the value was found and returned</returns>
-    public override bool TryGetValue(string keyword, out object value)
-    {
-      bool b = base.TryGetValue(keyword, out value);
-
-      if (!_properties.ContainsKey(keyword)) return b;
-
-      PropertyDescriptor pd = _properties[keyword] as PropertyDescriptor;
-
-      if (pd == null) return b;
-
-      // Attempt to coerce the value into something more solid
-      if (b)
-      {
-        if (pd.PropertyType == typeof(Boolean))
-          value = SqliteConvert.ToBoolean(value);
-        else
-          value = TypeDescriptor.GetConverter(pd.PropertyType).ConvertFrom(value);
-      }
-      else
-      {
-        DefaultValueAttribute att = pd.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
-        if (att != null)
-        {
-          value = att.Value;
-          b = true;
-        }
-      }
-      return b;
-    }
-
-    /// <summary>
-    /// Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties()
-    /// </summary>
-    /// <param name="propertyList">The hashtable to fill with property descriptors</param>
-    private void FallbackGetProperties(Hashtable propertyList)
-    {
-      foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(this, true))
-      {
-        if (descriptor.Name != "ConnectionString" && propertyList.ContainsKey(descriptor.DisplayName) == false)
-        {
-          propertyList.Add(descriptor.DisplayName, descriptor);
-        }
-      }
-    }
-  }
-#endif
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.ComponentModel;
+  using System.Collections;
+  using System.Globalization;
+  using System.Reflection;
+
+#if !PLATFORM_COMPACTFRAMEWORK
+  using System.ComponentModel.Design;
+
+  /// <summary>
+  /// SQLite implementation of DbConnectionStringBuilder.
+  /// </summary>
+  [DefaultProperty("DataSource")]
+  [DefaultMember("Item")]
+  public sealed class SqliteConnectionStringBuilder : DbConnectionStringBuilder
+  {
+    /// <summary>
+    /// Properties of this class
+    /// </summary>
+    private Hashtable _properties;
+
+    /// <overloads>
+    /// Constructs a new instance of the class
+    /// </overloads>
+    /// <summary>
+    /// Default constructor
+    /// </summary>
+    public SqliteConnectionStringBuilder()
+    {
+      Initialize(null);
+    }
+
+    /// <summary>
+    /// Constructs a new instance of the class using the specified connection string.
+    /// </summary>
+    /// <param name="connectionString">The connection string to parse</param>
+    public SqliteConnectionStringBuilder(string connectionString)
+    {
+      Initialize(connectionString);
+    }
+
+    /// <summary>
+    /// Private initializer, which assigns the connection string and resets the builder
+    /// </summary>
+    /// <param name="cnnString">The connection string to assign</param>
+    private void Initialize(string cnnString)
+    {
+      _properties = new Hashtable(StringComparer.InvariantCultureIgnoreCase);
+      try
+      {
+        base.GetProperties(_properties);
+      }
+      catch(NotImplementedException)
+      {
+        FallbackGetProperties(_properties);
+      }
+
+      if (String.IsNullOrEmpty(cnnString) == false)
+        ConnectionString = cnnString;
+    }
+
+    /// <summary>
+    /// Gets/Sets the default version of the SQLite engine to instantiate.  Currently the only valid value is 3, indicating version 3 of the sqlite library.
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(3)]
+    public int Version
+    {
+      get
+      {
+        object value;
+        TryGetValue("version", out value);
+        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
+      }
+      set
+      {
+        if (value != 3)
+          throw new NotSupportedException();
+
+        this["version"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets the synchronization mode (file flushing) of the connection string.  Default is "Normal".
+    /// </summary>
+    [DisplayName("Synchronous")]
+    [Browsable(true)]
+    [DefaultValue(SynchronizationModes.Normal)]
+    public SynchronizationModes SyncMode
+    {
+      get
+      {
+        object value;
+        TryGetValue("synchronous", out value);
+        if (value is string)
+          return (SynchronizationModes)TypeDescriptor.GetConverter(typeof(SynchronizationModes)).ConvertFrom(value);
+        else return (SynchronizationModes)value;
+      }
+      set
+      {
+        this["synchronous"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets the encoding for the connection string.  The default is "False" which indicates UTF-8 encoding.
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(false)]
+    public bool UseUTF16Encoding
+    {
+      get
+      {
+        object value;
+        TryGetValue("useutf16encoding", out value);
+        return SqliteConvert.ToBoolean(value);
+      }
+      set
+      {
+        this["useutf16encoding"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets whether or not to use connection pooling.  The default is "False"
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(false)]
+    public bool Pooling
+    {
+      get
+      {
+        object value;
+        TryGetValue("pooling", out value);
+        return SqliteConvert.ToBoolean(value);
+      }
+      set
+      {
+        this["pooling"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets whethor not to store GUID's in binary format.  The default is True
+    /// which saves space in the database.
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(true)]
+    public bool BinaryGUID
+    {
+      get
+      {
+        object value;
+        TryGetValue("binaryguid", out value);
+        return SqliteConvert.ToBoolean(value);
+      }
+      set
+      {
+        this["binaryguid"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets the filename to open on the connection string.
+    /// </summary>
+    [DisplayName("Data Source")]
+    [Browsable(true)]
+    [DefaultValue("")]
+    public string DataSource
+    {
+      get
+      {
+        object value;
+        TryGetValue("data source", out value);
+        return value.ToString();
+      }
+      set
+      {
+        this["data source"] = value;
+      }
+    }
+
+    /// <summary>
+    /// An alternate to the data source property
+    /// </summary>
+    [Browsable(false)]
+    public string Uri
+    {
+      get
+      {
+        object value;
+        TryGetValue("uri", out value);
+        return value.ToString();
+      }
+      set
+      {
+        this["uri"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/sets the default command timeout for newly-created commands.  This is especially useful for 
+    /// commands used internally such as inside a SqliteTransaction, where setting the timeout is not possible.
+    /// </summary>
+    [DisplayName("Default Timeout")]
+    [Browsable(true)]
+    [DefaultValue(30)]
+    public int DefaultTimeout
+    {
+      get
+      {
+        object value;
+        TryGetValue("default timeout", out value);
+        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
+      }
+      set
+      {
+        this["default timeout"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Determines whether or not the connection will automatically participate
+    /// in the current distributed transaction (if one exists)
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(true)]
+    public bool Enlist
+    {
+      get
+      {
+        object value;
+        TryGetValue("enlist", out value);
+        return SqliteConvert.ToBoolean(value);
+      }
+      set
+      {
+        this["enlist"] = value;
+      }
+    }
+
+    /// <summary>
+    /// If set to true, will throw an exception if the database specified in the connection
+    /// string does not exist.  If false, the database will be created automatically.
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(false)]
+    public bool FailIfMissing
+    {
+      get
+      {
+        object value;
+        TryGetValue("failifmissing", out value);
+        return SqliteConvert.ToBoolean(value);
+      }
+      set
+      {
+        this["failifmissing"] = value;
+      }
+    }
+
+    /// <summary>
+    /// If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger
+    /// database sizes.
+    /// </summary>
+    [DisplayName("Legacy Format")]
+    [Browsable(true)]
+    [DefaultValue(false)]
+    public bool LegacyFormat
+    {
+      get
+      {
+        object value;
+        TryGetValue("legacy format", out value);
+        return SqliteConvert.ToBoolean(value);
+      }
+      set
+      {
+        this["legacy format"] = value;
+      }
+    }
+
+    /// <summary>
+    /// When enabled, the database will be opened for read-only access and writing will be disabled.
+    /// </summary>
+    [DisplayName("Read Only")]
+    [Browsable(true)]
+    [DefaultValue(false)]
+    public bool ReadOnly
+    {
+      get
+      {
+        object value;
+        TryGetValue("read only", out value);
+        return SqliteConvert.ToBoolean(value);
+      }
+      set
+      {
+        this["read only"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/sets the database encryption password
+    /// </summary>
+    [Browsable(true)]
+    [PasswordPropertyText(true)]
+    [DefaultValue("")]
+    public string Password
+    {
+      get
+      {
+        object value;
+        TryGetValue("password", out value);
+        return value.ToString();
+      }
+      set
+      {
+        this["password"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets the page size for the connection.
+    /// </summary>
+    [DisplayName("Page Size")]
+    [Browsable(true)]
+    [DefaultValue(1024)]
+    public int PageSize
+    {
+      get
+      {
+        object value;
+        TryGetValue("page size", out value);
+        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
+      }
+      set
+      {
+        this["page size"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets the maximum number of pages the database may hold
+    /// </summary>
+    [DisplayName("Max Page Count")]
+    [Browsable(true)]
+    [DefaultValue(0)]
+    public int MaxPageCount
+    {
+      get
+      {
+        object value;
+        TryGetValue("max page count", out value);
+        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
+      }
+      set
+      {
+        this["max page count"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets the cache size for the connection.
+    /// </summary>
+    [DisplayName("Cache Size")]
+    [Browsable(true)]
+    [DefaultValue(2000)]
+    public int CacheSize
+    {
+      get
+      {
+        object value;
+        TryGetValue("cache size", out value);
+        return Convert.ToInt32(value, CultureInfo.CurrentCulture);
+      }
+      set
+      {
+        this["cache size"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/Sets the datetime format for the connection.
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(SQLiteDateFormats.ISO8601)]
+    public SQLiteDateFormats DateTimeFormat
+    {
+      get
+      {
+        object value;
+        TryGetValue("datetimeformat", out value);
+        if (value is string)
+          return (SQLiteDateFormats)TypeDescriptor.GetConverter(typeof(SQLiteDateFormats)).ConvertFrom(value);
+        else return (SQLiteDateFormats)value;
+      }
+      set
+      {
+        this["datetimeformat"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Determines how SQLite handles the transaction journal file.
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(SQLiteJournalModeEnum.Delete)]
+    [DisplayName("Journal Mode")]
+    public SQLiteJournalModeEnum JournalMode
+    {
+      get
+      {
+        object value;
+        TryGetValue("journal mode", out value);
+        if (value is string)
+          return (SQLiteJournalModeEnum)TypeDescriptor.GetConverter(typeof(SQLiteJournalModeEnum)).ConvertFrom(value);
+        else
+          return (SQLiteJournalModeEnum)value;
+      }
+      set
+      {
+        this["journal mode"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Sets the default isolation level for transactions on the connection.
+    /// </summary>
+    [Browsable(true)]
+    [DefaultValue(IsolationLevel.Serializable)]
+    [DisplayName("Default Isolation Level")]
+    public IsolationLevel DefaultIsolationLevel
+    {
+      get
+      {
+        object value;
+        TryGetValue("default isolationlevel", out value);
+        if (value is string)
+          return (IsolationLevel)TypeDescriptor.GetConverter(typeof(IsolationLevel)).ConvertFrom(value);
+        else
+          return (IsolationLevel)value;
+      }
+      set
+      {
+        this["default isolationlevel"] = value;
+      }
+    }
+
+    /// <summary>
+    /// Helper function for retrieving values from the connectionstring
+    /// </summary>
+    /// <param name="keyword">The keyword to retrieve settings for</param>
+    /// <param name="value">The resulting parameter value</param>
+    /// <returns>Returns true if the value was found and returned</returns>
+    public override bool TryGetValue(string keyword, out object value)
+    {
+      bool b = base.TryGetValue(keyword, out value);
+
+      if (!_properties.ContainsKey(keyword)) return b;
+
+      PropertyDescriptor pd = _properties[keyword] as PropertyDescriptor;
+
+      if (pd == null) return b;
+
+      // Attempt to coerce the value into something more solid
+      if (b)
+      {
+        if (pd.PropertyType == typeof(Boolean))
+          value = SqliteConvert.ToBoolean(value);
+        else
+          value = TypeDescriptor.GetConverter(pd.PropertyType).ConvertFrom(value);
+      }
+      else
+      {
+        DefaultValueAttribute att = pd.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
+        if (att != null)
+        {
+          value = att.Value;
+          b = true;
+        }
+      }
+      return b;
+    }
+
+    /// <summary>
+    /// Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties()
+    /// </summary>
+    /// <param name="propertyList">The hashtable to fill with property descriptors</param>
+    private void FallbackGetProperties(Hashtable propertyList)
+    {
+      foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(this, true))
+      {
+        if (descriptor.Name != "ConnectionString" && propertyList.ContainsKey(descriptor.DisplayName) == false)
+        {
+          propertyList.Add(descriptor.DisplayName, descriptor);
+        }
+      }
+    }
+  }
+#endif
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConvert.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConvert.cs
@@ -1,875 +1,875 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Runtime.InteropServices;
-  using System.Collections.Generic;
-  using System.ComponentModel;
-  using System.Globalization;
-  using System.Text;
-
-#if !PLATFORM_COMPACTFRAMEWORK 
-  using System.ComponentModel.Design;
-#endif
-
-  /// <summary>
-  /// This base class provides datatype conversion services for the SQLite provider.
-  /// </summary>
-  public abstract class SqliteConvert
-  {
-    /// <summary>
-    /// The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC).
-    /// </summary>
-    protected static readonly DateTime UnixEpoch =
-        new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-    /// <summary>
-    /// An array of ISO8601 datetime formats we support conversion from
-    /// </summary>
-    private static string[] _datetimeFormats = new string[] {
-      "THHmmssK",
-      "THHmmK",
-      "HH:mm:ss.FFFFFFFK",
-      "HH:mm:ssK",
-      "HH:mmK",
-      "yyyy-MM-dd HH:mm:ss.FFFFFFFK", /* NOTE: UTC default (5). */
-      "yyyy-MM-dd HH:mm:ssK",
-      "yyyy-MM-dd HH:mmK",
-      "yyyy-MM-ddTHH:mm:ss.FFFFFFFK",
-      "yyyy-MM-ddTHH:mmK",
-      "yyyy-MM-ddTHH:mm:ssK",
-      "yyyyMMddHHmmssK",
-      "yyyyMMddHHmmK",
-      "yyyyMMddTHHmmssFFFFFFFK",
-      "THHmmss",
-      "THHmm",
-      "HH:mm:ss.FFFFFFF",
-      "HH:mm:ss",
-      "HH:mm",
-      "yyyy-MM-dd HH:mm:ss.FFFFFFF", /* NOTE: Non-UTC default (19). */
-      "yyyy-MM-dd HH:mm:ss",
-      "yyyy-MM-dd HH:mm",
-      "yyyy-MM-ddTHH:mm:ss.FFFFFFF",
-      "yyyy-MM-ddTHH:mm",
-      "yyyy-MM-ddTHH:mm:ss",
-      "yyyyMMddHHmmss",
-      "yyyyMMddHHmm",
-      "yyyyMMddTHHmmssFFFFFFF",
-      "yyyy-MM-dd",
-      "yyyyMMdd",
-      "yy-MM-dd"
-    };
-
-    /// <summary>
-    /// An UTF-8 Encoding instance, so we can convert strings to and from UTF-8
-    /// </summary>
-    private static Encoding _utf8 = new UTF8Encoding();
-    /// <summary>
-    /// The default DateTime format for this instance
-    /// </summary>
-    internal SQLiteDateFormats _datetimeFormat;
-    /// <summary>
-    /// Initializes the conversion class
-    /// </summary>
-    /// <param name="fmt">The default date/time format to use for this instance</param>
-    internal SqliteConvert(SQLiteDateFormats fmt)
-    {
-      _datetimeFormat = fmt;
-    }
-
-    #region UTF-8 Conversion Functions
-    /// <summary>
-    /// Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character.
-    /// </summary>
-    /// <param name="sourceText">The string to convert to UTF-8</param>
-    /// <returns>A byte array containing the converted string plus an extra 0 terminating byte at the end of the array.</returns>
-    public static byte[] ToUTF8(string sourceText)
-    {
-      Byte[] byteArray;
-      int nlen = _utf8.GetByteCount(sourceText) + 1;
-
-      byteArray = new byte[nlen];
-      nlen = _utf8.GetBytes(sourceText, 0, sourceText.Length, byteArray, 0);
-      byteArray[nlen] = 0;
-
-      return byteArray;
-    }
-
-    /// <summary>
-    /// Convert a DateTime to a UTF-8 encoded, zero-terminated byte array.
-    /// </summary>
-    /// <remarks>
-    /// This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the
-    /// string result.
-    /// </remarks>
-    /// <param name="dateTimeValue">The DateTime to convert.</param>
-    /// <returns>The UTF-8 encoded string, including a 0 terminating byte at the end of the array.</returns>
-    public byte[] ToUTF8(DateTime dateTimeValue)
-    {
-      return ToUTF8(ToString(dateTimeValue));
-    }
-
-    /// <summary>
-    /// Converts a UTF-8 encoded IntPtr of the specified length into a .NET string
-    /// </summary>
-    /// <param name="nativestring">The pointer to the memory where the UTF-8 string is encoded</param>
-    /// <param name="nativestringlen">The number of bytes to decode</param>
-    /// <returns>A string containing the translated character(s)</returns>
-    public virtual string ToString(IntPtr nativestring, int nativestringlen)
-    {
-      return UTF8ToString(nativestring, nativestringlen);
-    }
-
-    /// <summary>
-    /// Converts a UTF-8 encoded IntPtr of the specified length into a .NET string
-    /// </summary>
-    /// <param name="nativestring">The pointer to the memory where the UTF-8 string is encoded</param>
-    /// <param name="nativestringlen">The number of bytes to decode</param>
-    /// <returns>A string containing the translated character(s)</returns>
-    public static string UTF8ToString(IntPtr nativestring, int nativestringlen)
-    {
-      if (nativestringlen == 0 || nativestring == IntPtr.Zero) return "";
-      if (nativestringlen == -1)
-      {
-        do
-        {
-          nativestringlen++;
-        } while (Marshal.ReadByte(nativestring, nativestringlen) != 0);
-      }
-
-      byte[] byteArray = new byte[nativestringlen];
-      
-      Marshal.Copy(nativestring, byteArray, 0, nativestringlen);
-
-      return _utf8.GetString(byteArray, 0, nativestringlen);
-    }
-
-
-    #endregion
-
-    #region DateTime Conversion Functions
-    /// <summary>
-    /// Converts a string into a DateTime, using the current DateTimeFormat specified for the connection when it was opened.
-    /// </summary>
-    /// <remarks>
-    /// Acceptable ISO8601 DateTime formats are:
-    ///   yyyy-MM-dd HH:mm:ss
-    ///   yyyyMMddHHmmss
-    ///   yyyyMMddTHHmmssfffffff
-    ///   yyyy-MM-dd
-    ///   yy-MM-dd
-    ///   yyyyMMdd
-    ///   HH:mm:ss
-    ///   THHmmss
-    /// </remarks>
-    /// <param name="dateText">The string containing either a Tick value, a JulianDay double, or an ISO8601-format string</param>
-    /// <returns>A DateTime value</returns>
-    public DateTime ToDateTime(string dateText)
-    {
-      switch (_datetimeFormat)
-      {
-        case SQLiteDateFormats.Ticks:
-          return new DateTime(Convert.ToInt64(dateText, CultureInfo.InvariantCulture));
-        case SQLiteDateFormats.JulianDay:
-          return ToDateTime(Convert.ToDouble(dateText, CultureInfo.InvariantCulture));
-        case SQLiteDateFormats.UnixEpoch:
-          return UnixEpoch.AddSeconds(Convert.ToInt32(dateText, CultureInfo.InvariantCulture));
-        default:
-          return DateTime.ParseExact(dateText, _datetimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);
-      }
-    }
-
-    /// <summary>
-    /// Converts a julianday value into a DateTime
-    /// </summary>
-    /// <param name="julianDay">The value to convert</param>
-    /// <returns>A .NET DateTime</returns>
-    public DateTime ToDateTime(double julianDay)
-    {
-      return DateTime.FromOADate(julianDay - 2415018.5);
-    }
-
-    /// <summary>
-    /// Converts a DateTime struct to a JulianDay double
-    /// </summary>
-    /// <param name="value">The DateTime to convert</param>
-    /// <returns>The JulianDay value the Datetime represents</returns>
-    public double ToJulianDay(DateTime value)
-    {
-      return value.ToOADate() + 2415018.5;
-    }
-
-    /// <summary>
-    /// Converts a DateTime to a string value, using the current DateTimeFormat specified for the connection when it was opened.
-    /// </summary>
-    /// <param name="dateValue">The DateTime value to convert</param>
-    /// <returns>Either a string consisting of the tick count for DateTimeFormat.Ticks, a JulianDay double, or a date/time in ISO8601 format.</returns>
-    public string ToString(DateTime dateValue)
-    {
-      switch (_datetimeFormat)
-      {
-        case SQLiteDateFormats.Ticks:
-          return dateValue.Ticks.ToString(CultureInfo.InvariantCulture);
-        case SQLiteDateFormats.JulianDay:
-          return ToJulianDay(dateValue).ToString(CultureInfo.InvariantCulture);
-        case SQLiteDateFormats.UnixEpoch:
-          return ((long)(dateValue.Subtract(UnixEpoch).Ticks / TimeSpan.TicksPerSecond)).ToString();
-        default:
-          return dateValue.ToString(_datetimeFormats[5], CultureInfo.InvariantCulture);
-      }
-    }
-
-    /// <summary>
-    /// Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime.
-    /// </summary>
-    /// <remarks>
-    /// This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls
-    /// ToDateTime() on the string to return a DateTime.
-    /// </remarks>
-    /// <param name="ptr">A pointer to the UTF-8 encoded string</param>
-    /// <param name="len">The length in bytes of the string</param>
-    /// <returns>The parsed DateTime value</returns>
-    internal DateTime ToDateTime(IntPtr ptr, int len)
-    {
-      return ToDateTime(ToString(ptr, len));
-    }
-
-    #endregion
-
-    /// <summary>
-    /// Smart method of splitting a string.  Skips quoted elements, removes the quotes.
-    /// </summary>
-    /// <remarks>
-    /// This split function works somewhat like the String.Split() function in that it breaks apart a string into
-    /// pieces and returns the pieces as an array.  The primary differences are:
-    /// <list type="bullet">
-    /// <item><description>Only one character can be provided as a separator character</description></item>
-    /// <item><description>Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed.</description></item>
-    /// </list>
-    /// Thus, if splitting the following string looking for a comma:<br/>
-    /// One,Two, "Three, Four", Five<br/>
-    /// <br/>
-    /// The resulting array would contain<br/>
-    /// [0] One<br/>
-    /// [1] Two<br/>
-    /// [2] Three, Four<br/>
-    /// [3] Five<br/>
-    /// <br/>
-    /// Note that the leading and trailing spaces were removed from each item during the split.
-    /// </remarks>
-    /// <param name="source">Source string to split apart</param>
-    /// <param name="separator">Separator character</param>
-    /// <returns>A string array of the split up elements</returns>
-    public static string[] Split(string source, char separator)
-    {
-      char[] toks = new char[2] { '\"', separator };
-      char[] quot = new char[1] { '\"' };
-      int n = 0;
-      List<string> ls = new List<string>();
-      string s;
-
-      while (source.Length > 0)
-      {
-        n = source.IndexOfAny(toks, n);
-        if (n == -1) break;
-        if (source[n] == toks[0])
-        {
-          //source = source.Remove(n, 1);
-          n = source.IndexOfAny(quot, n + 1);
-          if (n == -1)
-          {
-            //source = "\"" + source;
-            break;
-          }
-          n++;
-          //source = source.Remove(n, 1);
-        }
-        else
-        {
-          s = source.Substring(0, n).Trim();
-          if (s.Length > 1 && s[0] == quot[0] && s[s.Length - 1] == s[0])
-            s = s.Substring(1, s.Length - 2);
-
-          source = source.Substring(n + 1).Trim();
-          if (s.Length > 0) ls.Add(s);
-          n = 0;
-        }
-      }
-      if (source.Length > 0)
-      {
-        s = source.Trim();
-        if (s.Length > 1 && s[0] == quot[0] && s[s.Length - 1] == s[0])
-          s = s.Substring(1, s.Length - 2);
-        ls.Add(s);
-      }
-
-      string[] ar = new string[ls.Count];
-      ls.CopyTo(ar, 0);
-
-      return ar;
-    }
-
-    /// <summary>
-    /// Convert a value to true or false.
-    /// </summary>
-    /// <param name="source">A string or number representing true or false</param>
-    /// <returns></returns>
-    public static bool ToBoolean(object source)
-    {
-      if (source is bool) return (bool)source;
-
-      return ToBoolean(source.ToString());
-    }
-
-    /// <summary>
-    /// Convert a string to true or false.
-    /// </summary>
-    /// <param name="source">A string representing true or false</param>
-    /// <returns></returns>
-    /// <remarks>
-    /// "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be
-    /// converted to a proper boolean value.
-    /// </remarks>
-    public static bool ToBoolean(string source)
-    {
-      if (String.Compare(source, bool.TrueString, StringComparison.OrdinalIgnoreCase) == 0) return true;
-      else if (String.Compare(source, bool.FalseString, StringComparison.OrdinalIgnoreCase) == 0) return false;
-
-      switch(source.ToLower())
-      {
-        case "yes":
-        case "y":
-        case "1":
-        case "on":
-          return true;
-        case "no":
-        case "n":
-        case "0":
-        case "off":
-          return false;
-        default:
-          throw new ArgumentException("source");
-      }
-    }
-
-    #region Type Conversions
-    /// <summary>
-    /// Determines the data type of a column in a statement
-    /// </summary>
-    /// <param name="stmt">The statement to retrieve information for</param>
-    /// <param name="i">The column to retrieve type information on</param>
-    /// <param name="typ">The SQLiteType to receive the affinity for the given column</param>
-    internal static void ColumnToType(SqliteStatement stmt, int i, SQLiteType typ)
-    {
-      typ.Type = TypeNameToDbType(stmt._sql.ColumnType(stmt, i, out typ.Affinity));
-    }
-
-    /// <summary>
-    /// Converts a SQLiteType to a .NET Type object
-    /// </summary>
-    /// <param name="t">The SQLiteType to convert</param>
-    /// <returns>Returns a .NET Type object</returns>
-    internal static Type SQLiteTypeToType(SQLiteType t)
-    {
-      if (t.Type == DbType.Object)
-        return _affinitytotype[(int)t.Affinity];
-      else
-        return SqliteConvert.DbTypeToType(t.Type);
-    }
-
-    private static Type[] _affinitytotype = {
-      typeof(object),
-      typeof(Int64),
-      typeof(Double),
-      typeof(string),
-      typeof(byte[]),
-      typeof(object),
-      typeof(DateTime),
-      typeof(object)
-    };
-
-    /// <summary>
-    /// For a given intrinsic type, return a DbType
-    /// </summary>
-    /// <param name="typ">The native type to convert</param>
-    /// <returns>The corresponding (closest match) DbType</returns>
-    internal static DbType TypeToDbType(Type typ)
-    {
-      TypeCode tc = Type.GetTypeCode(typ);
-      if (tc == TypeCode.Object)
-      {
-        if (typ == typeof(byte[])) return DbType.Binary;
-        if (typ == typeof(Guid)) return DbType.Guid;
-        return DbType.String;
-      }
-      return _typetodbtype[(int)tc];
-    }
-
-    private static DbType[] _typetodbtype = {
-      DbType.Object,
-      DbType.Binary,
-      DbType.Object,
-      DbType.Boolean,
-      DbType.SByte,
-      DbType.SByte,
-      DbType.Byte,
-      DbType.Int16, // 7
-      DbType.UInt16,
-      DbType.Int32,
-      DbType.UInt32,
-      DbType.Int64, // 11
-      DbType.UInt64,
-      DbType.Single,
-      DbType.Double,
-      DbType.Decimal,
-      DbType.DateTime,
-      DbType.Object,
-      DbType.String,
-    };
-
-    /// <summary>
-    /// Returns the ColumnSize for the given DbType
-    /// </summary>
-    /// <param name="typ">The DbType to get the size of</param>
-    /// <returns></returns>
-    internal static int DbTypeToColumnSize(DbType typ)
-    {
-      return _dbtypetocolumnsize[(int)typ];
-    }
-
-    private static int[] _dbtypetocolumnsize = {
-      2147483647,   // 0
-      2147483647,   // 1
-      1,     // 2
-      1,     // 3
-      8,  // 4
-      8, // 5
-      8, // 6
-      8,  // 7
-      8,   // 8
-      16,     // 9
-      2,
-      4,
-      8,
-      2147483647,
-      1,
-      4,
-      2147483647,
-      8,
-      2,
-      4,
-      8,
-      8,
-      2147483647,
-      2147483647,
-      2147483647,
-      2147483647,   // 25 (Xml)
-    };
-
-    internal static object DbTypeToNumericPrecision(DbType typ)
-    {
-      return _dbtypetonumericprecision[(int)typ];
-    }
-
-    private static object[] _dbtypetonumericprecision = {
-      DBNull.Value, // 0
-      DBNull.Value, // 1
-      3,
-      DBNull.Value,
-      19,
-      DBNull.Value, // 5
-      DBNull.Value, // 6
-      53,
-      53,
-      DBNull.Value,
-      5,
-      10,
-      19,
-      DBNull.Value,
-      3,
-      24,
-      DBNull.Value,
-      DBNull.Value,
-      5,
-      10,
-      19,
-      53,
-      DBNull.Value,
-      DBNull.Value,
-      DBNull.Value
-    };
-
-    internal static object DbTypeToNumericScale(DbType typ)
-    {
-      return _dbtypetonumericscale[(int)typ];
-    }
-
-    private static object[] _dbtypetonumericscale = {
-      DBNull.Value, // 0
-      DBNull.Value, // 1
-      0,
-      DBNull.Value,
-      4,
-      DBNull.Value, // 5
-      DBNull.Value, // 6
-      DBNull.Value,
-      DBNull.Value,
-      DBNull.Value,
-      0,
-      0,
-      0,
-      DBNull.Value,
-      0,
-      DBNull.Value,
-      DBNull.Value,
-      DBNull.Value,
-      0,
-      0,
-      0,
-      0,
-      DBNull.Value,
-      DBNull.Value,
-      DBNull.Value
-    };
-
-    internal static string DbTypeToTypeName(DbType typ)
-    {
-      for (int n = 0; n < _dbtypeNames.Length; n++)
-      {
-        if (_dbtypeNames[n].dataType == typ)
-          return _dbtypeNames[n].typeName;
-      }
-
-      return String.Empty;
-    }
-
-    private static SQLiteTypeNames[] _dbtypeNames = {
-      new SQLiteTypeNames("INTEGER", DbType.Int64),
-      new SQLiteTypeNames("TINYINT", DbType.Byte),
-      new SQLiteTypeNames("INT", DbType.Int32),
-      new SQLiteTypeNames("VARCHAR", DbType.AnsiString),
-      new SQLiteTypeNames("NVARCHAR", DbType.String),
-      new SQLiteTypeNames("CHAR", DbType.AnsiStringFixedLength),
-      new SQLiteTypeNames("NCHAR", DbType.StringFixedLength),
-      new SQLiteTypeNames("FLOAT", DbType.Double),
-      new SQLiteTypeNames("REAL", DbType.Single),          
-      new SQLiteTypeNames("BIT", DbType.Boolean),
-      new SQLiteTypeNames("DECIMAL", DbType.Decimal),
-      new SQLiteTypeNames("DATETIME", DbType.DateTime),
-      new SQLiteTypeNames("BLOB", DbType.Binary),
-      new SQLiteTypeNames("UNIQUEIDENTIFIER", DbType.Guid),
-      new SQLiteTypeNames("SMALLINT", DbType.Int16),
-    };
-    /// <summary>
-    /// Convert a DbType to a Type
-    /// </summary>
-    /// <param name="typ">The DbType to convert from</param>
-    /// <returns>The closest-match .NET type</returns>
-    internal static Type DbTypeToType(DbType typ)
-    {
-      return _dbtypeToType[(int)typ];
-    }
-
-    private static Type[] _dbtypeToType = {
-      typeof(string),   // 0
-      typeof(byte[]),   // 1
-      typeof(byte),     // 2
-      typeof(bool),     // 3
-      typeof(decimal),  // 4
-      typeof(DateTime), // 5
-      typeof(DateTime), // 6
-      typeof(decimal),  // 7
-      typeof(double),   // 8
-      typeof(Guid),     // 9
-      typeof(Int16),
-      typeof(Int32),
-      typeof(Int64),
-      typeof(object),
-      typeof(sbyte),
-      typeof(float),
-      typeof(string),
-      typeof(DateTime),
-      typeof(UInt16),
-      typeof(UInt32),
-      typeof(UInt64),
-      typeof(double),
-      typeof(string),
-      typeof(string),
-      typeof(string),
-      typeof(string),   // 25 (Xml)
-    };
-
-    /// <summary>
-    /// For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types.
-    /// </summary>
-    /// <param name="typ">The type to evaluate</param>
-    /// <returns>The SQLite type affinity for that type.</returns>
-    internal static TypeAffinity TypeToAffinity(Type typ)
-    {
-      TypeCode tc = Type.GetTypeCode(typ);
-      if (tc == TypeCode.Object)
-      {
-        if (typ == typeof(byte[]) || typ == typeof(Guid))
-          return TypeAffinity.Blob;
-        else
-          return TypeAffinity.Text;
-      }
-      return _typecodeAffinities[(int)tc];
-    }
-
-    private static TypeAffinity[] _typecodeAffinities = {
-      TypeAffinity.Null,
-      TypeAffinity.Blob,
-      TypeAffinity.Null,
-      TypeAffinity.Int64,
-      TypeAffinity.Int64,
-      TypeAffinity.Int64,
-      TypeAffinity.Int64,
-      TypeAffinity.Int64, // 7
-      TypeAffinity.Int64,
-      TypeAffinity.Int64,
-      TypeAffinity.Int64,
-      TypeAffinity.Int64, // 11
-      TypeAffinity.Int64,
-      TypeAffinity.Double,
-      TypeAffinity.Double,
-      TypeAffinity.Double,
-      TypeAffinity.DateTime,
-      TypeAffinity.Null,
-      TypeAffinity.Text,
-    };
-
-    /// <summary>
-    /// For a given type name, return a closest-match .NET type
-    /// </summary>
-    /// <param name="Name">The name of the type to match</param>
-    /// <returns>The .NET DBType the text evaluates to.</returns>
-    internal static DbType TypeNameToDbType(string Name)
-    {
-      if (String.IsNullOrEmpty(Name)) return DbType.Object;
-
-      string nameToCompare = Name;
-      int parenthesis = nameToCompare.IndexOf ('(');
-      if (parenthesis > 0)
-        nameToCompare = nameToCompare.Substring (0, parenthesis);
-        
-      for (int n = 0; n < _typeNames.Length; n++)
-      {
-        if (string.Compare(nameToCompare, _typeNames[n].typeName, true, CultureInfo.InvariantCulture) == 0)
-          return _typeNames[n].dataType; 
-      }
-      
-      /* http://www.sqlite.org/datatype3.html
-       * 2.1 Determination Of Column Affinity
-       * The affinity of a column is determined by the declared type of the column, according to the following rules in the order shown:
-       *   1. If the declared type contains the string "INT" then it is assigned INTEGER affinity.
-       *   2. If the declared type of the column contains any of the strings "CHAR", "CLOB", or "TEXT" then that column has TEXT affinity. Notice that the type VARCHAR contains the string "CHAR" and is thus assigned TEXT affinity.
-       *   3. If the declared type for a column contains the string "BLOB" or if no type is specified then the column has affinity NONE.
-       *   4. If the declared type for a column contains any of the strings "REAL", "FLOA", or "DOUB" then the column has REAL affinity.
-       *   5. Otherwise, the affinity is NUMERIC.
-       */
-      
-      if (Name.IndexOf ("INT", StringComparison.OrdinalIgnoreCase) >= 0) {
-        return DbType.Int64;
-      } else if (Name.IndexOf ("CHAR", StringComparison.OrdinalIgnoreCase) >= 0
-              || Name.IndexOf ("CLOB", StringComparison.OrdinalIgnoreCase) >= 0
-              || Name.IndexOf ("TEXT", StringComparison.OrdinalIgnoreCase) >= 0) {
-        return DbType.String;
-      } else if (Name.IndexOf ("BLOB", StringComparison.OrdinalIgnoreCase) >= 0 /* || Name == string.Empty // handled at the top of this functin */) {
-        return DbType.Object;
-      } else if (Name.IndexOf ("REAL", StringComparison.OrdinalIgnoreCase) >= 0
-              || Name.IndexOf ("FLOA", StringComparison.OrdinalIgnoreCase) >= 0
-              || Name.IndexOf ("DOUB", StringComparison.OrdinalIgnoreCase) >= 0) {
-        return DbType.Double;
-      } else {
-        return DbType.Object; // This can be anything, so use Object instead of Decimal (which we use otherwise where the type affinity is NUMERIC)
-      }
-    }
-    #endregion
-
-    private static SQLiteTypeNames[] _typeNames = {
-      new SQLiteTypeNames("COUNTER", DbType.Int64),
-      new SQLiteTypeNames("AUTOINCREMENT", DbType.Int64),
-      new SQLiteTypeNames("IDENTITY", DbType.Int64),
-      new SQLiteTypeNames("LONGTEXT", DbType.String),
-      new SQLiteTypeNames("LONGCHAR", DbType.String),
-      new SQLiteTypeNames("LONGVARCHAR", DbType.String),
-      new SQLiteTypeNames("LONG", DbType.Int64),
-      new SQLiteTypeNames("TINYINT", DbType.Byte),
-      new SQLiteTypeNames("INTEGER", DbType.Int64),
-      new SQLiteTypeNames("INT", DbType.Int32),
-      new SQLiteTypeNames("VARCHAR", DbType.String),
-      new SQLiteTypeNames("NVARCHAR", DbType.String),
-      new SQLiteTypeNames("CHAR", DbType.String),
-      new SQLiteTypeNames("NCHAR", DbType.String),
-      new SQLiteTypeNames("TEXT", DbType.String),
-      new SQLiteTypeNames("NTEXT", DbType.String),
-      new SQLiteTypeNames("STRING", DbType.String),
-      new SQLiteTypeNames("DOUBLE", DbType.Double),
-      new SQLiteTypeNames("FLOAT", DbType.Double),
-      new SQLiteTypeNames("REAL", DbType.Single),          
-      new SQLiteTypeNames("BIT", DbType.Boolean),
-      new SQLiteTypeNames("YESNO", DbType.Boolean),
-      new SQLiteTypeNames("LOGICAL", DbType.Boolean),
-      new SQLiteTypeNames("BOOL", DbType.Boolean),
-      new SQLiteTypeNames("BOOLEAN", DbType.Boolean),
-      new SQLiteTypeNames("NUMERIC", DbType.Decimal),
-      new SQLiteTypeNames("DECIMAL", DbType.Decimal),
-      new SQLiteTypeNames("MONEY", DbType.Decimal),
-      new SQLiteTypeNames("CURRENCY", DbType.Decimal),
-      new SQLiteTypeNames("TIME", DbType.DateTime),
-      new SQLiteTypeNames("DATE", DbType.DateTime),
-      new SQLiteTypeNames("SMALLDATE", DbType.DateTime),
-      new SQLiteTypeNames("BLOB", DbType.Binary),
-      new SQLiteTypeNames("BINARY", DbType.Binary),
-      new SQLiteTypeNames("VARBINARY", DbType.Binary),
-      new SQLiteTypeNames("IMAGE", DbType.Binary),
-      new SQLiteTypeNames("GENERAL", DbType.Binary),
-      new SQLiteTypeNames("OLEOBJECT", DbType.Binary),
-      new SQLiteTypeNames("GUID", DbType.Guid),
-      new SQLiteTypeNames("GUIDBLOB", DbType.Guid),
-      new SQLiteTypeNames("UNIQUEIDENTIFIER", DbType.Guid),
-      new SQLiteTypeNames("MEMO", DbType.String),
-      new SQLiteTypeNames("NOTE", DbType.String),
-      new SQLiteTypeNames("SMALLINT", DbType.Int16),
-      new SQLiteTypeNames("BIGINT", DbType.Int64),
-      new SQLiteTypeNames("TIMESTAMP", DbType.DateTime),
-      new SQLiteTypeNames("DATETIME", DbType.DateTime),
-    };
-  }
-
-  /// <summary>
-  /// SQLite has very limited types, and is inherently text-based.  The first 5 types below represent the sum of all types SQLite
-  /// understands.  The DateTime extension to the spec is for internal use only.
-  /// </summary>
-  public enum TypeAffinity
-  {
-    /// <summary>
-    /// Not used
-    /// </summary>
-    Uninitialized = 0,
-    /// <summary>
-    /// All integers in SQLite default to Int64
-    /// </summary>
-    Int64 = 1,
-    /// <summary>
-    /// All floating point numbers in SQLite default to double
-    /// </summary>
-    Double = 2,
-    /// <summary>
-    /// The default data type of SQLite is text
-    /// </summary>
-    Text = 3,
-    /// <summary>
-    /// Typically blob types are only seen when returned from a function
-    /// </summary>
-    Blob = 4,
-    /// <summary>
-    /// Null types can be returned from functions
-    /// </summary>
-    Null = 5,
-    /// <summary>
-    /// Used internally by this provider
-    /// </summary>
-    DateTime = 10,
-    /// <summary>
-    /// Used internally
-    /// </summary>
-    None = 11,
-  }
-
-  /// <summary>
-  /// This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats.  Ticks, ISO8601
-  /// and JulianDay.
-  /// </summary>
-  /// <remarks>
-  /// ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second.
-  /// JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools.  It is
-  /// not readable as text without post-processing.
-  /// Ticks less compatible with 3rd party tools that query the database, and renders the DateTime field unreadable as text without post-processing.
-  /// 
-  /// The preferred order of choosing a datetime format is JulianDay, ISO8601, and then Ticks.  Ticks is mainly present for legacy 
-  /// code support.
-  /// </remarks>
-  public enum SQLiteDateFormats
-  {
-    /// <summary>
-    /// Using ticks is not recommended and is not well supported with LINQ.
-    /// </summary>
-    Ticks = 0,
-    /// <summary>
-    /// The default format for this provider.
-    /// </summary>
-    ISO8601 = 1,
-    /// <summary>
-    /// JulianDay format, which is what SQLite uses internally
-    /// </summary>
-    JulianDay = 2,
-    /// <summary>
-    /// The whole number of seconds since the Unix epoch (January 1, 1970).
-    /// </summary>
-    UnixEpoch = 3,
-  }
-
-  /// <summary>
-  /// This enum determines how SQLite treats its journal file.
-  /// </summary>
-  /// <remarks>
-  /// By default SQLite will create and delete the journal file when needed during a transaction.
-  /// However, for some computers running certain filesystem monitoring tools, the rapid
-  /// creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite.
-  /// 
-  /// If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file"
-  /// when starting a transaction.  If this is happening, you may want to change the default journal mode to Persist.
-  /// </remarks>
-  public enum SQLiteJournalModeEnum
-  {
-    /// <summary>
-    /// The default mode, this causes SQLite to create and destroy the journal file as-needed.
-    /// </summary>
-    Delete = 0,
-    /// <summary>
-    /// When this is set, SQLite will keep the journal file even after a transaction has completed.  It's contents will be erased,
-    /// and the journal re-used as often as needed.  If it is deleted, it will be recreated the next time it is needed.
-    /// </summary>
-    Persist = 1,
-    /// <summary>
-    /// This option disables the rollback journal entirely.  Interrupted transactions or a program crash can cause database
-    /// corruption in this mode!
-    /// </summary>
-    Off = 2
-  }
-
-  /// <summary>
-  /// Struct used internally to determine the datatype of a column in a resultset
-  /// </summary>
-  internal class SQLiteType
-  {
-    /// <summary>
-    /// The DbType of the column, or DbType.Object if it cannot be determined
-    /// </summary>
-    internal DbType Type;
-    /// <summary>
-    /// The affinity of a column, used for expressions or when Type is DbType.Object
-    /// </summary>
-    internal TypeAffinity Affinity;
-  }
-
-  internal struct SQLiteTypeNames
-  {
-    internal SQLiteTypeNames(string newtypeName, DbType newdataType)
-    {
-      typeName = newtypeName;
-      dataType = newdataType;
-    }
-
-    internal string typeName;
-    internal DbType dataType;
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Runtime.InteropServices;
+  using System.Collections.Generic;
+  using System.ComponentModel;
+  using System.Globalization;
+  using System.Text;
+
+#if !PLATFORM_COMPACTFRAMEWORK 
+  using System.ComponentModel.Design;
+#endif
+
+  /// <summary>
+  /// This base class provides datatype conversion services for the SQLite provider.
+  /// </summary>
+  public abstract class SqliteConvert
+  {
+    /// <summary>
+    /// The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC).
+    /// </summary>
+    protected static readonly DateTime UnixEpoch =
+        new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+    /// <summary>
+    /// An array of ISO8601 datetime formats we support conversion from
+    /// </summary>
+    private static string[] _datetimeFormats = new string[] {
+      "THHmmssK",
+      "THHmmK",
+      "HH:mm:ss.FFFFFFFK",
+      "HH:mm:ssK",
+      "HH:mmK",
+      "yyyy-MM-dd HH:mm:ss.FFFFFFFK", /* NOTE: UTC default (5). */
+      "yyyy-MM-dd HH:mm:ssK",
+      "yyyy-MM-dd HH:mmK",
+      "yyyy-MM-ddTHH:mm:ss.FFFFFFFK",
+      "yyyy-MM-ddTHH:mmK",
+      "yyyy-MM-ddTHH:mm:ssK",
+      "yyyyMMddHHmmssK",
+      "yyyyMMddHHmmK",
+      "yyyyMMddTHHmmssFFFFFFFK",
+      "THHmmss",
+      "THHmm",
+      "HH:mm:ss.FFFFFFF",
+      "HH:mm:ss",
+      "HH:mm",
+      "yyyy-MM-dd HH:mm:ss.FFFFFFF", /* NOTE: Non-UTC default (19). */
+      "yyyy-MM-dd HH:mm:ss",
+      "yyyy-MM-dd HH:mm",
+      "yyyy-MM-ddTHH:mm:ss.FFFFFFF",
+      "yyyy-MM-ddTHH:mm",
+      "yyyy-MM-ddTHH:mm:ss",
+      "yyyyMMddHHmmss",
+      "yyyyMMddHHmm",
+      "yyyyMMddTHHmmssFFFFFFF",
+      "yyyy-MM-dd",
+      "yyyyMMdd",
+      "yy-MM-dd"
+    };
+
+    /// <summary>
+    /// An UTF-8 Encoding instance, so we can convert strings to and from UTF-8
+    /// </summary>
+    private static Encoding _utf8 = new UTF8Encoding();
+    /// <summary>
+    /// The default DateTime format for this instance
+    /// </summary>
+    internal SQLiteDateFormats _datetimeFormat;
+    /// <summary>
+    /// Initializes the conversion class
+    /// </summary>
+    /// <param name="fmt">The default date/time format to use for this instance</param>
+    internal SqliteConvert(SQLiteDateFormats fmt)
+    {
+      _datetimeFormat = fmt;
+    }
+
+    #region UTF-8 Conversion Functions
+    /// <summary>
+    /// Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character.
+    /// </summary>
+    /// <param name="sourceText">The string to convert to UTF-8</param>
+    /// <returns>A byte array containing the converted string plus an extra 0 terminating byte at the end of the array.</returns>
+    public static byte[] ToUTF8(string sourceText)
+    {
+      Byte[] byteArray;
+      int nlen = _utf8.GetByteCount(sourceText) + 1;
+
+      byteArray = new byte[nlen];
+      nlen = _utf8.GetBytes(sourceText, 0, sourceText.Length, byteArray, 0);
+      byteArray[nlen] = 0;
+
+      return byteArray;
+    }
+
+    /// <summary>
+    /// Convert a DateTime to a UTF-8 encoded, zero-terminated byte array.
+    /// </summary>
+    /// <remarks>
+    /// This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the
+    /// string result.
+    /// </remarks>
+    /// <param name="dateTimeValue">The DateTime to convert.</param>
+    /// <returns>The UTF-8 encoded string, including a 0 terminating byte at the end of the array.</returns>
+    public byte[] ToUTF8(DateTime dateTimeValue)
+    {
+      return ToUTF8(ToString(dateTimeValue));
+    }
+
+    /// <summary>
+    /// Converts a UTF-8 encoded IntPtr of the specified length into a .NET string
+    /// </summary>
+    /// <param name="nativestring">The pointer to the memory where the UTF-8 string is encoded</param>
+    /// <param name="nativestringlen">The number of bytes to decode</param>
+    /// <returns>A string containing the translated character(s)</returns>
+    public virtual string ToString(IntPtr nativestring, int nativestringlen)
+    {
+      return UTF8ToString(nativestring, nativestringlen);
+    }
+
+    /// <summary>
+    /// Converts a UTF-8 encoded IntPtr of the specified length into a .NET string
+    /// </summary>
+    /// <param name="nativestring">The pointer to the memory where the UTF-8 string is encoded</param>
+    /// <param name="nativestringlen">The number of bytes to decode</param>
+    /// <returns>A string containing the translated character(s)</returns>
+    public static string UTF8ToString(IntPtr nativestring, int nativestringlen)
+    {
+      if (nativestringlen == 0 || nativestring == IntPtr.Zero) return "";
+      if (nativestringlen == -1)
+      {
+        do
+        {
+          nativestringlen++;
+        } while (Marshal.ReadByte(nativestring, nativestringlen) != 0);
+      }
+
+      byte[] byteArray = new byte[nativestringlen];
+      
+      Marshal.Copy(nativestring, byteArray, 0, nativestringlen);
+
+      return _utf8.GetString(byteArray, 0, nativestringlen);
+    }
+
+
+    #endregion
+
+    #region DateTime Conversion Functions
+    /// <summary>
+    /// Converts a string into a DateTime, using the current DateTimeFormat specified for the connection when it was opened.
+    /// </summary>
+    /// <remarks>
+    /// Acceptable ISO8601 DateTime formats are:
+    ///   yyyy-MM-dd HH:mm:ss
+    ///   yyyyMMddHHmmss
+    ///   yyyyMMddTHHmmssfffffff
+    ///   yyyy-MM-dd
+    ///   yy-MM-dd
+    ///   yyyyMMdd
+    ///   HH:mm:ss
+    ///   THHmmss
+    /// </remarks>
+    /// <param name="dateText">The string containing either a Tick value, a JulianDay double, or an ISO8601-format string</param>
+    /// <returns>A DateTime value</returns>
+    public DateTime ToDateTime(string dateText)
+    {
+      switch (_datetimeFormat)
+      {
+        case SQLiteDateFormats.Ticks:
+          return new DateTime(Convert.ToInt64(dateText, CultureInfo.InvariantCulture));
+        case SQLiteDateFormats.JulianDay:
+          return ToDateTime(Convert.ToDouble(dateText, CultureInfo.InvariantCulture));
+        case SQLiteDateFormats.UnixEpoch:
+          return UnixEpoch.AddSeconds(Convert.ToInt32(dateText, CultureInfo.InvariantCulture));
+        default:
+          return DateTime.ParseExact(dateText, _datetimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);
+      }
+    }
+
+    /// <summary>
+    /// Converts a julianday value into a DateTime
+    /// </summary>
+    /// <param name="julianDay">The value to convert</param>
+    /// <returns>A .NET DateTime</returns>
+    public DateTime ToDateTime(double julianDay)
+    {
+      return DateTime.FromOADate(julianDay - 2415018.5);
+    }
+
+    /// <summary>
+    /// Converts a DateTime struct to a JulianDay double
+    /// </summary>
+    /// <param name="value">The DateTime to convert</param>
+    /// <returns>The JulianDay value the Datetime represents</returns>
+    public double ToJulianDay(DateTime value)
+    {
+      return value.ToOADate() + 2415018.5;
+    }
+
+    /// <summary>
+    /// Converts a DateTime to a string value, using the current DateTimeFormat specified for the connection when it was opened.
+    /// </summary>
+    /// <param name="dateValue">The DateTime value to convert</param>
+    /// <returns>Either a string consisting of the tick count for DateTimeFormat.Ticks, a JulianDay double, or a date/time in ISO8601 format.</returns>
+    public string ToString(DateTime dateValue)
+    {
+      switch (_datetimeFormat)
+      {
+        case SQLiteDateFormats.Ticks:
+          return dateValue.Ticks.ToString(CultureInfo.InvariantCulture);
+        case SQLiteDateFormats.JulianDay:
+          return ToJulianDay(dateValue).ToString(CultureInfo.InvariantCulture);
+        case SQLiteDateFormats.UnixEpoch:
+          return ((long)(dateValue.Subtract(UnixEpoch).Ticks / TimeSpan.TicksPerSecond)).ToString();
+        default:
+          return dateValue.ToString(_datetimeFormats[5], CultureInfo.InvariantCulture);
+      }
+    }
+
+    /// <summary>
+    /// Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime.
+    /// </summary>
+    /// <remarks>
+    /// This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls
+    /// ToDateTime() on the string to return a DateTime.
+    /// </remarks>
+    /// <param name="ptr">A pointer to the UTF-8 encoded string</param>
+    /// <param name="len">The length in bytes of the string</param>
+    /// <returns>The parsed DateTime value</returns>
+    internal DateTime ToDateTime(IntPtr ptr, int len)
+    {
+      return ToDateTime(ToString(ptr, len));
+    }
+
+    #endregion
+
+    /// <summary>
+    /// Smart method of splitting a string.  Skips quoted elements, removes the quotes.
+    /// </summary>
+    /// <remarks>
+    /// This split function works somewhat like the String.Split() function in that it breaks apart a string into
+    /// pieces and returns the pieces as an array.  The primary differences are:
+    /// <list type="bullet">
+    /// <item><description>Only one character can be provided as a separator character</description></item>
+    /// <item><description>Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed.</description></item>
+    /// </list>
+    /// Thus, if splitting the following string looking for a comma:<br/>
+    /// One,Two, "Three, Four", Five<br/>
+    /// <br/>
+    /// The resulting array would contain<br/>
+    /// [0] One<br/>
+    /// [1] Two<br/>
+    /// [2] Three, Four<br/>
+    /// [3] Five<br/>
+    /// <br/>
+    /// Note that the leading and trailing spaces were removed from each item during the split.
+    /// </remarks>
+    /// <param name="source">Source string to split apart</param>
+    /// <param name="separator">Separator character</param>
+    /// <returns>A string array of the split up elements</returns>
+    public static string[] Split(string source, char separator)
+    {
+      char[] toks = new char[2] { '\"', separator };
+      char[] quot = new char[1] { '\"' };
+      int n = 0;
+      List<string> ls = new List<string>();
+      string s;
+
+      while (source.Length > 0)
+      {
+        n = source.IndexOfAny(toks, n);
+        if (n == -1) break;
+        if (source[n] == toks[0])
+        {
+          //source = source.Remove(n, 1);
+          n = source.IndexOfAny(quot, n + 1);
+          if (n == -1)
+          {
+            //source = "\"" + source;
+            break;
+          }
+          n++;
+          //source = source.Remove(n, 1);
+        }
+        else
+        {
+          s = source.Substring(0, n).Trim();
+          if (s.Length > 1 && s[0] == quot[0] && s[s.Length - 1] == s[0])
+            s = s.Substring(1, s.Length - 2);
+
+          source = source.Substring(n + 1).Trim();
+          if (s.Length > 0) ls.Add(s);
+          n = 0;
+        }
+      }
+      if (source.Length > 0)
+      {
+        s = source.Trim();
+        if (s.Length > 1 && s[0] == quot[0] && s[s.Length - 1] == s[0])
+          s = s.Substring(1, s.Length - 2);
+        ls.Add(s);
+      }
+
+      string[] ar = new string[ls.Count];
+      ls.CopyTo(ar, 0);
+
+      return ar;
+    }
+
+    /// <summary>
+    /// Convert a value to true or false.
+    /// </summary>
+    /// <param name="source">A string or number representing true or false</param>
+    /// <returns></returns>
+    public static bool ToBoolean(object source)
+    {
+      if (source is bool) return (bool)source;
+
+      return ToBoolean(source.ToString());
+    }
+
+    /// <summary>
+    /// Convert a string to true or false.
+    /// </summary>
+    /// <param name="source">A string representing true or false</param>
+    /// <returns></returns>
+    /// <remarks>
+    /// "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be
+    /// converted to a proper boolean value.
+    /// </remarks>
+    public static bool ToBoolean(string source)
+    {
+      if (String.Compare(source, bool.TrueString, StringComparison.OrdinalIgnoreCase) == 0) return true;
+      else if (String.Compare(source, bool.FalseString, StringComparison.OrdinalIgnoreCase) == 0) return false;
+
+      switch(source.ToLower())
+      {
+        case "yes":
+        case "y":
+        case "1":
+        case "on":
+          return true;
+        case "no":
+        case "n":
+        case "0":
+        case "off":
+          return false;
+        default:
+          throw new ArgumentException("source");
+      }
+    }
+
+    #region Type Conversions
+    /// <summary>
+    /// Determines the data type of a column in a statement
+    /// </summary>
+    /// <param name="stmt">The statement to retrieve information for</param>
+    /// <param name="i">The column to retrieve type information on</param>
+    /// <param name="typ">The SQLiteType to receive the affinity for the given column</param>
+    internal static void ColumnToType(SqliteStatement stmt, int i, SQLiteType typ)
+    {
+      typ.Type = TypeNameToDbType(stmt._sql.ColumnType(stmt, i, out typ.Affinity));
+    }
+
+    /// <summary>
+    /// Converts a SQLiteType to a .NET Type object
+    /// </summary>
+    /// <param name="t">The SQLiteType to convert</param>
+    /// <returns>Returns a .NET Type object</returns>
+    internal static Type SQLiteTypeToType(SQLiteType t)
+    {
+      if (t.Type == DbType.Object)
+        return _affinitytotype[(int)t.Affinity];
+      else
+        return SqliteConvert.DbTypeToType(t.Type);
+    }
+
+    private static Type[] _affinitytotype = {
+      typeof(object),
+      typeof(Int64),
+      typeof(Double),
+      typeof(string),
+      typeof(byte[]),
+      typeof(object),
+      typeof(DateTime),
+      typeof(object)
+    };
+
+    /// <summary>
+    /// For a given intrinsic type, return a DbType
+    /// </summary>
+    /// <param name="typ">The native type to convert</param>
+    /// <returns>The corresponding (closest match) DbType</returns>
+    internal static DbType TypeToDbType(Type typ)
+    {
+      TypeCode tc = Type.GetTypeCode(typ);
+      if (tc == TypeCode.Object)
+      {
+        if (typ == typeof(byte[])) return DbType.Binary;
+        if (typ == typeof(Guid)) return DbType.Guid;
+        return DbType.String;
+      }
+      return _typetodbtype[(int)tc];
+    }
+
+    private static DbType[] _typetodbtype = {
+      DbType.Object,
+      DbType.Binary,
+      DbType.Object,
+      DbType.Boolean,
+      DbType.SByte,
+      DbType.SByte,
+      DbType.Byte,
+      DbType.Int16, // 7
+      DbType.UInt16,
+      DbType.Int32,
+      DbType.UInt32,
+      DbType.Int64, // 11
+      DbType.UInt64,
+      DbType.Single,
+      DbType.Double,
+      DbType.Decimal,
+      DbType.DateTime,
+      DbType.Object,
+      DbType.String,
+    };
+
+    /// <summary>
+    /// Returns the ColumnSize for the given DbType
+    /// </summary>
+    /// <param name="typ">The DbType to get the size of</param>
+    /// <returns></returns>
+    internal static int DbTypeToColumnSize(DbType typ)
+    {
+      return _dbtypetocolumnsize[(int)typ];
+    }
+
+    private static int[] _dbtypetocolumnsize = {
+      2147483647,   // 0
+      2147483647,   // 1
+      1,     // 2
+      1,     // 3
+      8,  // 4
+      8, // 5
+      8, // 6
+      8,  // 7
+      8,   // 8
+      16,     // 9
+      2,
+      4,
+      8,
+      2147483647,
+      1,
+      4,
+      2147483647,
+      8,
+      2,
+      4,
+      8,
+      8,
+      2147483647,
+      2147483647,
+      2147483647,
+      2147483647,   // 25 (Xml)
+    };
+
+    internal static object DbTypeToNumericPrecision(DbType typ)
+    {
+      return _dbtypetonumericprecision[(int)typ];
+    }
+
+    private static object[] _dbtypetonumericprecision = {
+      DBNull.Value, // 0
+      DBNull.Value, // 1
+      3,
+      DBNull.Value,
+      19,
+      DBNull.Value, // 5
+      DBNull.Value, // 6
+      53,
+      53,
+      DBNull.Value,
+      5,
+      10,
+      19,
+      DBNull.Value,
+      3,
+      24,
+      DBNull.Value,
+      DBNull.Value,
+      5,
+      10,
+      19,
+      53,
+      DBNull.Value,
+      DBNull.Value,
+      DBNull.Value
+    };
+
+    internal static object DbTypeToNumericScale(DbType typ)
+    {
+      return _dbtypetonumericscale[(int)typ];
+    }
+
+    private static object[] _dbtypetonumericscale = {
+      DBNull.Value, // 0
+      DBNull.Value, // 1
+      0,
+      DBNull.Value,
+      4,
+      DBNull.Value, // 5
+      DBNull.Value, // 6
+      DBNull.Value,
+      DBNull.Value,
+      DBNull.Value,
+      0,
+      0,
+      0,
+      DBNull.Value,
+      0,
+      DBNull.Value,
+      DBNull.Value,
+      DBNull.Value,
+      0,
+      0,
+      0,
+      0,
+      DBNull.Value,
+      DBNull.Value,
+      DBNull.Value
+    };
+
+    internal static string DbTypeToTypeName(DbType typ)
+    {
+      for (int n = 0; n < _dbtypeNames.Length; n++)
+      {
+        if (_dbtypeNames[n].dataType == typ)
+          return _dbtypeNames[n].typeName;
+      }
+
+      return String.Empty;
+    }
+
+    private static SQLiteTypeNames[] _dbtypeNames = {
+      new SQLiteTypeNames("INTEGER", DbType.Int64),
+      new SQLiteTypeNames("TINYINT", DbType.Byte),
+      new SQLiteTypeNames("INT", DbType.Int32),
+      new SQLiteTypeNames("VARCHAR", DbType.AnsiString),
+      new SQLiteTypeNames("NVARCHAR", DbType.String),
+      new SQLiteTypeNames("CHAR", DbType.AnsiStringFixedLength),
+      new SQLiteTypeNames("NCHAR", DbType.StringFixedLength),
+      new SQLiteTypeNames("FLOAT", DbType.Double),
+      new SQLiteTypeNames("REAL", DbType.Single),          
+      new SQLiteTypeNames("BIT", DbType.Boolean),
+      new SQLiteTypeNames("DECIMAL", DbType.Decimal),
+      new SQLiteTypeNames("DATETIME", DbType.DateTime),
+      new SQLiteTypeNames("BLOB", DbType.Binary),
+      new SQLiteTypeNames("UNIQUEIDENTIFIER", DbType.Guid),
+      new SQLiteTypeNames("SMALLINT", DbType.Int16),
+    };
+    /// <summary>
+    /// Convert a DbType to a Type
+    /// </summary>
+    /// <param name="typ">The DbType to convert from</param>
+    /// <returns>The closest-match .NET type</returns>
+    internal static Type DbTypeToType(DbType typ)
+    {
+      return _dbtypeToType[(int)typ];
+    }
+
+    private static Type[] _dbtypeToType = {
+      typeof(string),   // 0
+      typeof(byte[]),   // 1
+      typeof(byte),     // 2
+      typeof(bool),     // 3
+      typeof(decimal),  // 4
+      typeof(DateTime), // 5
+      typeof(DateTime), // 6
+      typeof(decimal),  // 7
+      typeof(double),   // 8
+      typeof(Guid),     // 9
+      typeof(Int16),
+      typeof(Int32),
+      typeof(Int64),
+      typeof(object),
+      typeof(sbyte),
+      typeof(float),
+      typeof(string),
+      typeof(DateTime),
+      typeof(UInt16),
+      typeof(UInt32),
+      typeof(UInt64),
+      typeof(double),
+      typeof(string),
+      typeof(string),
+      typeof(string),
+      typeof(string),   // 25 (Xml)
+    };
+
+    /// <summary>
+    /// For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types.
+    /// </summary>
+    /// <param name="typ">The type to evaluate</param>
+    /// <returns>The SQLite type affinity for that type.</returns>
+    internal static TypeAffinity TypeToAffinity(Type typ)
+    {
+      TypeCode tc = Type.GetTypeCode(typ);
+      if (tc == TypeCode.Object)
+      {
+        if (typ == typeof(byte[]) || typ == typeof(Guid))
+          return TypeAffinity.Blob;
+        else
+          return TypeAffinity.Text;
+      }
+      return _typecodeAffinities[(int)tc];
+    }
+
+    private static TypeAffinity[] _typecodeAffinities = {
+      TypeAffinity.Null,
+      TypeAffinity.Blob,
+      TypeAffinity.Null,
+      TypeAffinity.Int64,
+      TypeAffinity.Int64,
+      TypeAffinity.Int64,
+      TypeAffinity.Int64,
+      TypeAffinity.Int64, // 7
+      TypeAffinity.Int64,
+      TypeAffinity.Int64,
+      TypeAffinity.Int64,
+      TypeAffinity.Int64, // 11
+      TypeAffinity.Int64,
+      TypeAffinity.Double,
+      TypeAffinity.Double,
+      TypeAffinity.Double,
+      TypeAffinity.DateTime,
+      TypeAffinity.Null,
+      TypeAffinity.Text,
+    };
+
+    /// <summary>
+    /// For a given type name, return a closest-match .NET type
+    /// </summary>
+    /// <param name="Name">The name of the type to match</param>
+    /// <returns>The .NET DBType the text evaluates to.</returns>
+    internal static DbType TypeNameToDbType(string Name)
+    {
+      if (String.IsNullOrEmpty(Name)) return DbType.Object;
+
+      string nameToCompare = Name;
+      int parenthesis = nameToCompare.IndexOf ('(');
+      if (parenthesis > 0)
+        nameToCompare = nameToCompare.Substring (0, parenthesis);
+        
+      for (int n = 0; n < _typeNames.Length; n++)
+      {
+        if (string.Compare(nameToCompare, _typeNames[n].typeName, true, CultureInfo.InvariantCulture) == 0)
+          return _typeNames[n].dataType; 
+      }
+      
+      /* http://www.sqlite.org/datatype3.html
+       * 2.1 Determination Of Column Affinity
+       * The affinity of a column is determined by the declared type of the column, according to the following rules in the order shown:
+       *   1. If the declared type contains the string "INT" then it is assigned INTEGER affinity.
+       *   2. If the declared type of the column contains any of the strings "CHAR", "CLOB", or "TEXT" then that column has TEXT affinity. Notice that the type VARCHAR contains the string "CHAR" and is thus assigned TEXT affinity.
+       *   3. If the declared type for a column contains the string "BLOB" or if no type is specified then the column has affinity NONE.
+       *   4. If the declared type for a column contains any of the strings "REAL", "FLOA", or "DOUB" then the column has REAL affinity.
+       *   5. Otherwise, the affinity is NUMERIC.
+       */
+      
+      if (Name.IndexOf ("INT", StringComparison.OrdinalIgnoreCase) >= 0) {
+        return DbType.Int64;
+      } else if (Name.IndexOf ("CHAR", StringComparison.OrdinalIgnoreCase) >= 0
+              || Name.IndexOf ("CLOB", StringComparison.OrdinalIgnoreCase) >= 0
+              || Name.IndexOf ("TEXT", StringComparison.OrdinalIgnoreCase) >= 0) {
+        return DbType.String;
+      } else if (Name.IndexOf ("BLOB", StringComparison.OrdinalIgnoreCase) >= 0 /* || Name == string.Empty // handled at the top of this functin */) {
+        return DbType.Object;
+      } else if (Name.IndexOf ("REAL", StringComparison.OrdinalIgnoreCase) >= 0
+              || Name.IndexOf ("FLOA", StringComparison.OrdinalIgnoreCase) >= 0
+              || Name.IndexOf ("DOUB", StringComparison.OrdinalIgnoreCase) >= 0) {
+        return DbType.Double;
+      } else {
+        return DbType.Object; // This can be anything, so use Object instead of Decimal (which we use otherwise where the type affinity is NUMERIC)
+      }
+    }
+    #endregion
+
+    private static SQLiteTypeNames[] _typeNames = {
+      new SQLiteTypeNames("COUNTER", DbType.Int64),
+      new SQLiteTypeNames("AUTOINCREMENT", DbType.Int64),
+      new SQLiteTypeNames("IDENTITY", DbType.Int64),
+      new SQLiteTypeNames("LONGTEXT", DbType.String),
+      new SQLiteTypeNames("LONGCHAR", DbType.String),
+      new SQLiteTypeNames("LONGVARCHAR", DbType.String),
+      new SQLiteTypeNames("LONG", DbType.Int64),
+      new SQLiteTypeNames("TINYINT", DbType.Byte),
+      new SQLiteTypeNames("INTEGER", DbType.Int64),
+      new SQLiteTypeNames("INT", DbType.Int32),
+      new SQLiteTypeNames("VARCHAR", DbType.String),
+      new SQLiteTypeNames("NVARCHAR", DbType.String),
+      new SQLiteTypeNames("CHAR", DbType.String),
+      new SQLiteTypeNames("NCHAR", DbType.String),
+      new SQLiteTypeNames("TEXT", DbType.String),
+      new SQLiteTypeNames("NTEXT", DbType.String),
+      new SQLiteTypeNames("STRING", DbType.String),
+      new SQLiteTypeNames("DOUBLE", DbType.Double),
+      new SQLiteTypeNames("FLOAT", DbType.Double),
+      new SQLiteTypeNames("REAL", DbType.Single),          
+      new SQLiteTypeNames("BIT", DbType.Boolean),
+      new SQLiteTypeNames("YESNO", DbType.Boolean),
+      new SQLiteTypeNames("LOGICAL", DbType.Boolean),
+      new SQLiteTypeNames("BOOL", DbType.Boolean),
+      new SQLiteTypeNames("BOOLEAN", DbType.Boolean),
+      new SQLiteTypeNames("NUMERIC", DbType.Decimal),
+      new SQLiteTypeNames("DECIMAL", DbType.Decimal),
+      new SQLiteTypeNames("MONEY", DbType.Decimal),
+      new SQLiteTypeNames("CURRENCY", DbType.Decimal),
+      new SQLiteTypeNames("TIME", DbType.DateTime),
+      new SQLiteTypeNames("DATE", DbType.DateTime),
+      new SQLiteTypeNames("SMALLDATE", DbType.DateTime),
+      new SQLiteTypeNames("BLOB", DbType.Binary),
+      new SQLiteTypeNames("BINARY", DbType.Binary),
+      new SQLiteTypeNames("VARBINARY", DbType.Binary),
+      new SQLiteTypeNames("IMAGE", DbType.Binary),
+      new SQLiteTypeNames("GENERAL", DbType.Binary),
+      new SQLiteTypeNames("OLEOBJECT", DbType.Binary),
+      new SQLiteTypeNames("GUID", DbType.Guid),
+      new SQLiteTypeNames("GUIDBLOB", DbType.Guid),
+      new SQLiteTypeNames("UNIQUEIDENTIFIER", DbType.Guid),
+      new SQLiteTypeNames("MEMO", DbType.String),
+      new SQLiteTypeNames("NOTE", DbType.String),
+      new SQLiteTypeNames("SMALLINT", DbType.Int16),
+      new SQLiteTypeNames("BIGINT", DbType.Int64),
+      new SQLiteTypeNames("TIMESTAMP", DbType.DateTime),
+      new SQLiteTypeNames("DATETIME", DbType.DateTime),
+    };
+  }
+
+  /// <summary>
+  /// SQLite has very limited types, and is inherently text-based.  The first 5 types below represent the sum of all types SQLite
+  /// understands.  The DateTime extension to the spec is for internal use only.
+  /// </summary>
+  public enum TypeAffinity
+  {
+    /// <summary>
+    /// Not used
+    /// </summary>
+    Uninitialized = 0,
+    /// <summary>
+    /// All integers in SQLite default to Int64
+    /// </summary>
+    Int64 = 1,
+    /// <summary>
+    /// All floating point numbers in SQLite default to double
+    /// </summary>
+    Double = 2,
+    /// <summary>
+    /// The default data type of SQLite is text
+    /// </summary>
+    Text = 3,
+    /// <summary>
+    /// Typically blob types are only seen when returned from a function
+    /// </summary>
+    Blob = 4,
+    /// <summary>
+    /// Null types can be returned from functions
+    /// </summary>
+    Null = 5,
+    /// <summary>
+    /// Used internally by this provider
+    /// </summary>
+    DateTime = 10,
+    /// <summary>
+    /// Used internally
+    /// </summary>
+    None = 11,
+  }
+
+  /// <summary>
+  /// This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats.  Ticks, ISO8601
+  /// and JulianDay.
+  /// </summary>
+  /// <remarks>
+  /// ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second.
+  /// JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools.  It is
+  /// not readable as text without post-processing.
+  /// Ticks less compatible with 3rd party tools that query the database, and renders the DateTime field unreadable as text without post-processing.
+  /// 
+  /// The preferred order of choosing a datetime format is JulianDay, ISO8601, and then Ticks.  Ticks is mainly present for legacy 
+  /// code support.
+  /// </remarks>
+  public enum SQLiteDateFormats
+  {
+    /// <summary>
+    /// Using ticks is not recommended and is not well supported with LINQ.
+    /// </summary>
+    Ticks = 0,
+    /// <summary>
+    /// The default format for this provider.
+    /// </summary>
+    ISO8601 = 1,
+    /// <summary>
+    /// JulianDay format, which is what SQLite uses internally
+    /// </summary>
+    JulianDay = 2,
+    /// <summary>
+    /// The whole number of seconds since the Unix epoch (January 1, 1970).
+    /// </summary>
+    UnixEpoch = 3,
+  }
+
+  /// <summary>
+  /// This enum determines how SQLite treats its journal file.
+  /// </summary>
+  /// <remarks>
+  /// By default SQLite will create and delete the journal file when needed during a transaction.
+  /// However, for some computers running certain filesystem monitoring tools, the rapid
+  /// creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite.
+  /// 
+  /// If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file"
+  /// when starting a transaction.  If this is happening, you may want to change the default journal mode to Persist.
+  /// </remarks>
+  public enum SQLiteJournalModeEnum
+  {
+    /// <summary>
+    /// The default mode, this causes SQLite to create and destroy the journal file as-needed.
+    /// </summary>
+    Delete = 0,
+    /// <summary>
+    /// When this is set, SQLite will keep the journal file even after a transaction has completed.  It's contents will be erased,
+    /// and the journal re-used as often as needed.  If it is deleted, it will be recreated the next time it is needed.
+    /// </summary>
+    Persist = 1,
+    /// <summary>
+    /// This option disables the rollback journal entirely.  Interrupted transactions or a program crash can cause database
+    /// corruption in this mode!
+    /// </summary>
+    Off = 2
+  }
+
+  /// <summary>
+  /// Struct used internally to determine the datatype of a column in a resultset
+  /// </summary>
+  internal class SQLiteType
+  {
+    /// <summary>
+    /// The DbType of the column, or DbType.Object if it cannot be determined
+    /// </summary>
+    internal DbType Type;
+    /// <summary>
+    /// The affinity of a column, used for expressions or when Type is DbType.Object
+    /// </summary>
+    internal TypeAffinity Affinity;
+  }
+
+  internal struct SQLiteTypeNames
+  {
+    internal SQLiteTypeNames(string newtypeName, DbType newdataType)
+    {
+      typeName = newtypeName;
+      dataType = newdataType;
+    }
+
+    internal string typeName;
+    internal DbType dataType;
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataAdapter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataAdapter.cs
@@ -1,190 +1,190 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.ComponentModel;
-
-  /// <summary>
-  /// SQLite implementation of DbDataAdapter.
-  /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-  [DefaultEvent("RowUpdated")]
-  [ToolboxItem("SQLite.Designer.SqliteDataAdapterToolboxItem, SQLite.Designer, Version=1.0.36.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139")]
-  [Designer("Microsoft.VSDesigner.Data.VS.SqlDataAdapterDesigner, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-  public sealed class SqliteDataAdapter : DbDataAdapter
-  {
-    private static object _updatingEventPH = new object();
-    private static object _updatedEventPH = new object();
-
-    /// <overloads>
-    /// This class is just a shell around the DbDataAdapter.  Nothing from DbDataAdapter is overridden here, just a few constructors are defined.
-    /// </overloads>
-    /// <summary>
-    /// Default constructor.
-    /// </summary>
-    public SqliteDataAdapter()
-    {
-    }
-
-    /// <summary>
-    /// Constructs a data adapter using the specified select command.
-    /// </summary>
-    /// <param name="cmd">The select command to associate with the adapter.</param>
-    public SqliteDataAdapter(SqliteCommand cmd)
-    {
-      SelectCommand = cmd;
-    }
-
-    /// <summary>
-    /// Constructs a data adapter with the supplied select command text and associated with the specified connection.
-    /// </summary>
-    /// <param name="commandText">The select command text to associate with the data adapter.</param>
-    /// <param name="connection">The connection to associate with the select command.</param>
-    public SqliteDataAdapter(string commandText, SqliteConnection connection)
-    {
-      SelectCommand = new SqliteCommand(commandText, connection);
-    }
-
-    /// <summary>
-    /// Constructs a data adapter with the specified select command text, and using the specified database connection string.
-    /// </summary>
-    /// <param name="commandText">The select command text to use to construct a select command.</param>
-    /// <param name="connectionString">A connection string suitable for passing to a new SqliteConnection, which is associated with the select command.</param>
-    public SqliteDataAdapter(string commandText, string connectionString)
-    {
-      SqliteConnection cnn = new SqliteConnection(connectionString);
-      SelectCommand = new SqliteCommand(commandText, cnn);
-    }
-
-    /// <summary>
-    /// Row updating event handler
-    /// </summary>
-    public event EventHandler<RowUpdatingEventArgs> RowUpdating
-    {
-      add
-      {
-#if !PLATFORM_COMPACTFRAMEWORK
-        EventHandler<RowUpdatingEventArgs> previous = (EventHandler<RowUpdatingEventArgs>)base.Events[_updatingEventPH];
-        if ((previous != null) && (value.Target is DbCommandBuilder))
-        {
-          EventHandler<RowUpdatingEventArgs> handler = (EventHandler<RowUpdatingEventArgs>)FindBuilder(previous);
-          if (handler != null)
-          {
-            base.Events.RemoveHandler(_updatingEventPH, handler);
-          }
-        }
-#endif
-        base.Events.AddHandler(_updatingEventPH, value); 
-      }
-      remove { base.Events.RemoveHandler(_updatingEventPH, value); }
-    }
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    internal static Delegate FindBuilder(MulticastDelegate mcd)
-    {
-      if (mcd != null)
-      {
-        Delegate[] invocationList = mcd.GetInvocationList();
-        for (int i = 0; i < invocationList.Length; i++)
-        {
-          if (invocationList[i].Target is DbCommandBuilder)
-          {
-            return invocationList[i];
-          }
-        }
-      }
-      return null;
-    }
-#endif
-
-    /// <summary>
-    /// Row updated event handler
-    /// </summary>
-    public event EventHandler<RowUpdatedEventArgs> RowUpdated
-    {
-      add { base.Events.AddHandler(_updatedEventPH, value); }
-      remove { base.Events.RemoveHandler(_updatedEventPH, value); }
-    }
-
-    /// <summary>
-    /// Raised by the underlying DbDataAdapter when a row is being updated
-    /// </summary>
-    /// <param name="value">The event's specifics</param>
-    protected override void OnRowUpdating(RowUpdatingEventArgs value)
-    {
-      EventHandler<RowUpdatingEventArgs> handler = base.Events[_updatingEventPH] as EventHandler<RowUpdatingEventArgs>;
-
-      if (handler != null)
-        handler(this, value);
-    }
-
-    /// <summary>
-    /// Raised by DbDataAdapter after a row is updated
-    /// </summary>
-    /// <param name="value">The event's specifics</param>
-    protected override void OnRowUpdated(RowUpdatedEventArgs value)
-    {
-      EventHandler<RowUpdatedEventArgs> handler = base.Events[_updatedEventPH] as EventHandler<RowUpdatedEventArgs>;
-
-      if (handler != null)
-        handler(this, value);
-    }
-
-    /// <summary>
-    /// Gets/sets the select command for this DataAdapter
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-    public new SqliteCommand SelectCommand
-    {
-      get { return (SqliteCommand)base.SelectCommand; }
-      set { base.SelectCommand = value; }
-    }
-
-    /// <summary>
-    /// Gets/sets the insert command for this DataAdapter
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-    public new SqliteCommand InsertCommand
-    {
-      get { return (SqliteCommand)base.InsertCommand; }
-      set { base.InsertCommand = value; }
-    }
-
-    /// <summary>
-    /// Gets/sets the update command for this DataAdapter
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-    public new SqliteCommand UpdateCommand
-    {
-      get { return (SqliteCommand)base.UpdateCommand; }
-      set { base.UpdateCommand = value; }
-    }
-
-    /// <summary>
-    /// Gets/sets the delete command for this DataAdapter
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
-#endif
-    public new SqliteCommand DeleteCommand
-    {
-      get { return (SqliteCommand)base.DeleteCommand; }
-      set { base.DeleteCommand = value; }
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.ComponentModel;
+
+  /// <summary>
+  /// SQLite implementation of DbDataAdapter.
+  /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+  [DefaultEvent("RowUpdated")]
+  [ToolboxItem("SQLite.Designer.SqliteDataAdapterToolboxItem, SQLite.Designer, Version=1.0.36.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139")]
+  [Designer("Microsoft.VSDesigner.Data.VS.SqlDataAdapterDesigner, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+  public sealed class SqliteDataAdapter : DbDataAdapter
+  {
+    private static object _updatingEventPH = new object();
+    private static object _updatedEventPH = new object();
+
+    /// <overloads>
+    /// This class is just a shell around the DbDataAdapter.  Nothing from DbDataAdapter is overridden here, just a few constructors are defined.
+    /// </overloads>
+    /// <summary>
+    /// Default constructor.
+    /// </summary>
+    public SqliteDataAdapter()
+    {
+    }
+
+    /// <summary>
+    /// Constructs a data adapter using the specified select command.
+    /// </summary>
+    /// <param name="cmd">The select command to associate with the adapter.</param>
+    public SqliteDataAdapter(SqliteCommand cmd)
+    {
+      SelectCommand = cmd;
+    }
+
+    /// <summary>
+    /// Constructs a data adapter with the supplied select command text and associated with the specified connection.
+    /// </summary>
+    /// <param name="commandText">The select command text to associate with the data adapter.</param>
+    /// <param name="connection">The connection to associate with the select command.</param>
+    public SqliteDataAdapter(string commandText, SqliteConnection connection)
+    {
+      SelectCommand = new SqliteCommand(commandText, connection);
+    }
+
+    /// <summary>
+    /// Constructs a data adapter with the specified select command text, and using the specified database connection string.
+    /// </summary>
+    /// <param name="commandText">The select command text to use to construct a select command.</param>
+    /// <param name="connectionString">A connection string suitable for passing to a new SqliteConnection, which is associated with the select command.</param>
+    public SqliteDataAdapter(string commandText, string connectionString)
+    {
+      SqliteConnection cnn = new SqliteConnection(connectionString);
+      SelectCommand = new SqliteCommand(commandText, cnn);
+    }
+
+    /// <summary>
+    /// Row updating event handler
+    /// </summary>
+    public event EventHandler<RowUpdatingEventArgs> RowUpdating
+    {
+      add
+      {
+#if !PLATFORM_COMPACTFRAMEWORK
+        EventHandler<RowUpdatingEventArgs> previous = (EventHandler<RowUpdatingEventArgs>)base.Events[_updatingEventPH];
+        if ((previous != null) && (value.Target is DbCommandBuilder))
+        {
+          EventHandler<RowUpdatingEventArgs> handler = (EventHandler<RowUpdatingEventArgs>)FindBuilder(previous);
+          if (handler != null)
+          {
+            base.Events.RemoveHandler(_updatingEventPH, handler);
+          }
+        }
+#endif
+        base.Events.AddHandler(_updatingEventPH, value); 
+      }
+      remove { base.Events.RemoveHandler(_updatingEventPH, value); }
+    }
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    internal static Delegate FindBuilder(MulticastDelegate mcd)
+    {
+      if (mcd != null)
+      {
+        Delegate[] invocationList = mcd.GetInvocationList();
+        for (int i = 0; i < invocationList.Length; i++)
+        {
+          if (invocationList[i].Target is DbCommandBuilder)
+          {
+            return invocationList[i];
+          }
+        }
+      }
+      return null;
+    }
+#endif
+
+    /// <summary>
+    /// Row updated event handler
+    /// </summary>
+    public event EventHandler<RowUpdatedEventArgs> RowUpdated
+    {
+      add { base.Events.AddHandler(_updatedEventPH, value); }
+      remove { base.Events.RemoveHandler(_updatedEventPH, value); }
+    }
+
+    /// <summary>
+    /// Raised by the underlying DbDataAdapter when a row is being updated
+    /// </summary>
+    /// <param name="value">The event's specifics</param>
+    protected override void OnRowUpdating(RowUpdatingEventArgs value)
+    {
+      EventHandler<RowUpdatingEventArgs> handler = base.Events[_updatingEventPH] as EventHandler<RowUpdatingEventArgs>;
+
+      if (handler != null)
+        handler(this, value);
+    }
+
+    /// <summary>
+    /// Raised by DbDataAdapter after a row is updated
+    /// </summary>
+    /// <param name="value">The event's specifics</param>
+    protected override void OnRowUpdated(RowUpdatedEventArgs value)
+    {
+      EventHandler<RowUpdatedEventArgs> handler = base.Events[_updatedEventPH] as EventHandler<RowUpdatedEventArgs>;
+
+      if (handler != null)
+        handler(this, value);
+    }
+
+    /// <summary>
+    /// Gets/sets the select command for this DataAdapter
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+    public new SqliteCommand SelectCommand
+    {
+      get { return (SqliteCommand)base.SelectCommand; }
+      set { base.SelectCommand = value; }
+    }
+
+    /// <summary>
+    /// Gets/sets the insert command for this DataAdapter
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+    public new SqliteCommand InsertCommand
+    {
+      get { return (SqliteCommand)base.InsertCommand; }
+      set { base.InsertCommand = value; }
+    }
+
+    /// <summary>
+    /// Gets/sets the update command for this DataAdapter
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+    public new SqliteCommand UpdateCommand
+    {
+      get { return (SqliteCommand)base.UpdateCommand; }
+      set { base.UpdateCommand = value; }
+    }
+
+    /// <summary>
+    /// Gets/sets the delete command for this DataAdapter
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
+    public new SqliteCommand DeleteCommand
+    {
+      get { return (SqliteCommand)base.DeleteCommand; }
+      set { base.DeleteCommand = value; }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataReader.cs
@@ -1,627 +1,627 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Collections.Generic;
-  using System.Globalization;
-  using System.Reflection;
-
-  /// <summary>
-  /// SQLite implementation of DbDataReader.
-  /// </summary>
-  public sealed class SqliteDataReader : DbDataReader
-  {
-    /// <summary>
-    /// Underlying command this reader is attached to
-    /// </summary>
-    private SqliteCommand _command;
-    /// <summary>
-    /// Index of the current statement in the command being processed
-    /// </summary>
-    private int _activeStatementIndex;
-    /// <summary>
-    /// Current statement being Read()
-    /// </summary>
-    private SqliteStatement _activeStatement;
-    /// <summary>
-    /// State of the current statement being processed.
-    /// -1 = First Step() executed, so the first Read() will be ignored
-    ///  0 = Actively reading
-    ///  1 = Finished reading
-    ///  2 = Non-row-returning statement, no records
-    /// </summary>
-    private int _readingState;
-    /// <summary>
-    /// Number of records affected by the insert/update statements executed on the command
-    /// </summary>
-    private int _rowsAffected;
-    /// <summary>
-    /// Count of fields (columns) in the row-returning statement currently being processed
-    /// </summary>
-    private int _fieldCount;
-    /// <summary>
-    /// Datatypes of active fields (columns) in the current statement, used for type-restricting data
-    /// </summary>
-    private SQLiteType[] _fieldTypeArray;
-
-    /// <summary>
-    /// The behavior of the datareader
-    /// </summary>
-    private CommandBehavior _commandBehavior;
-
-    /// <summary>
-    /// If set, then dispose of the command object when the reader is finished
-    /// </summary>
-    internal bool _disposeCommand;
-
-    /// <summary>
-    /// An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified
-    /// </summary>
-    private SqliteKeyReader _keyInfo;
-
-    internal long _version; // Matches the version of the connection
-
-    /// <summary>
-    /// Internal constructor, initializes the datareader and sets up to begin executing statements
-    /// </summary>
-    /// <param name="cmd">The SqliteCommand this data reader is for</param>
-    /// <param name="behave">The expected behavior of the data reader</param>
-    internal SqliteDataReader(SqliteCommand cmd, CommandBehavior behave)
-    {
-      _command = cmd;
-      _version = _command.Connection._version;
-
-      _commandBehavior = behave;
-      _activeStatementIndex = -1;
-      _activeStatement = null;
-      _rowsAffected = -1;
-      _fieldCount = 0;
-
-      if (_command != null)
-        NextResult();
-    }
-
-    internal void Cancel()
-    {
-      _version = 0;
-    }
-
-    /// <summary>
-    /// Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified.
-    /// </summary>
-    public override void Close()
-    {
-      try
-      {
-        if (_command != null)
-        {
-          try
-          {
-            try
-            {
-              // Make sure we've not been canceled
-              if (_version != 0)
-              {
-                try
-                {
-                  while (NextResult())
-                  {
-                  }
-                }
-                catch
-                {
-                }
-              }
-              _command.ClearDataReader();
-            }
-            finally
-            {
-              // If the datareader's behavior includes closing the connection, then do so here.
-              if ((_commandBehavior & CommandBehavior.CloseConnection) != 0 && _command.Connection != null) {
-                // We need to call Dispose on the command before we call Dispose on the Connection,
-                // otherwise we'll get a SQLITE_LOCKED exception.
-                var conn = _command.Connection;
-                _command.Dispose ();
-                conn.Close();
-                _disposeCommand = false;
-              }
-            }
-          }
-          finally
-          {
-            if (_disposeCommand)
-              _command.Dispose();
-          }
-        }
-
-        _command = null;
-        _activeStatement = null;
-        _fieldTypeArray = null;
-      }
-      finally
-      {
-        if (_keyInfo != null)
-        {
-          _keyInfo.Dispose();
-          _keyInfo = null;
-        }
-      }
-    }
-
-    /// <summary>
-    /// Throw an error if the datareader is closed
-    /// </summary>
-    private void CheckClosed()
-    {
-      if (_command == null)
-        throw new InvalidOperationException("DataReader has been closed");
-
-      if (_version == 0)
-        throw new SqliteException((int)SQLiteErrorCode.Abort, "Execution was aborted by the user");
-
-      if (_command.Connection.State != ConnectionState.Open || _command.Connection._version != _version)
-        throw new InvalidOperationException("Connection was closed, statement was terminated");
-    }
-
-    /// <summary>
-    /// Throw an error if a row is not loaded
-    /// </summary>
-    private void CheckValidRow()
-    {
-      if (_readingState != 0)
-        throw new InvalidOperationException("No current row");
-    }
-
-    /// <summary>
-    /// Enumerator support
-    /// </summary>
-    /// <returns>Returns a DbEnumerator object.</returns>
-    public override global::System.Collections.IEnumerator GetEnumerator()
-    {
-      return new DbEnumerator(this, ((_commandBehavior & CommandBehavior.CloseConnection) == CommandBehavior.CloseConnection));
-    }
-
-    /// <summary>
-    /// Not implemented.  Returns 0
-    /// </summary>
-    public override int Depth
-    {
-      get
-      {
-        CheckClosed();
-        return 0;
-      }
-    }
-
-    /// <summary>
-    /// Returns the number of columns in the current resultset
-    /// </summary>
-    public override int FieldCount
-    {
-      get
-      {
-        CheckClosed();
-        if (_keyInfo == null)
-          return _fieldCount;
-
-        return _fieldCount + _keyInfo.Count;
-      }
-    }
-
-    /// <summary>
-    /// Returns the number of visible fielsd in the current resultset
-    /// </summary>
-    public override int VisibleFieldCount
-    {
-      get
-      {
-        CheckClosed();
-        return _fieldCount;
-      }
-    }
-
-    /// <summary>
-    /// SQLite is inherently un-typed.  All datatypes in SQLite are natively strings.  The definition of the columns of a table
-    /// and the affinity of returned types are all we have to go on to type-restrict data in the reader.
-    /// 
-    /// This function attempts to verify that the type of data being requested of a column matches the datatype of the column.  In
-    /// the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob)
-    /// to a set of known types that closely match that affinity.  It's not an exact science, but its the best we can do.
-    /// </summary>
-    /// <returns>
-    /// This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity.
-    /// </returns>
-    /// <param name="i">The index of the column to type-check</param>
-    /// <param name="typ">The type we want to get out of the column</param>
-    private TypeAffinity VerifyType(int i, DbType typ)
-    {
-      CheckClosed();
-      CheckValidRow();
-      TypeAffinity affinity = GetSQLiteType(i).Affinity;
-
-      switch (affinity)
-      {
-        case TypeAffinity.Int64:
-          if (typ == DbType.Int16) return affinity;
-          if (typ == DbType.Int32) return affinity;
-          if (typ == DbType.Int64) return affinity;
-          if (typ == DbType.Boolean) return affinity;
-          if (typ == DbType.Byte) return affinity;
-          if (typ == DbType.DateTime) return affinity;
-          if (typ == DbType.Single) return affinity;
-          if (typ == DbType.Double) return affinity;
-          if (typ == DbType.Decimal) return affinity;
-          break;
-        case TypeAffinity.Double:
-          if (typ == DbType.Single) return affinity;
-          if (typ == DbType.Double) return affinity;
-          if (typ == DbType.Decimal) return affinity;
-          if (typ == DbType.DateTime) return affinity;
-          break;
-        case TypeAffinity.Text:
-          if (typ == DbType.SByte) return affinity;
-          if (typ == DbType.String) return affinity;
-          if (typ == DbType.SByte) return affinity;
-          if (typ == DbType.Guid) return affinity;
-          if (typ == DbType.DateTime) return affinity;
-          if (typ == DbType.Decimal) return affinity;
-          break;
-        case TypeAffinity.Blob:
-          if (typ == DbType.Guid) return affinity;
-          if (typ == DbType.String) return affinity;
-          if (typ == DbType.Binary) return affinity;
-          break;
-      }
-
-      throw new InvalidCastException();
-    }
-
-    /// <summary>
-    /// Retrieves the column as a boolean value
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>bool</returns>
-    public override bool GetBoolean(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetBoolean(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Boolean);
-      return Convert.ToBoolean(GetValue(i), CultureInfo.CurrentCulture);
-    }
-
-    /// <summary>
-    /// Retrieves the column as a single byte value
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>byte</returns>
-    public override byte GetByte(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetByte(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Byte);
-      return Convert.ToByte(_activeStatement._sql.GetInt32(_activeStatement, i));
-    }
-
-    /// <summary>
-    /// Retrieves a column as an array of bytes (blob)
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <param name="fieldOffset">The zero-based index of where to begin reading the data</param>
-    /// <param name="buffer">The buffer to write the bytes into</param>
-    /// <param name="bufferoffset">The zero-based index of where to begin writing into the array</param>
-    /// <param name="length">The number of bytes to retrieve</param>
-    /// <returns>The actual number of bytes written into the array</returns>
-    /// <remarks>
-    /// To determine the number of bytes in the column, pass a null value for the buffer.  The total length will be returned.
-    /// </remarks>
-    public override long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetBytes(i - VisibleFieldCount, fieldOffset, buffer, bufferoffset, length);
-
-      VerifyType(i, DbType.Binary);
-      return _activeStatement._sql.GetBytes(_activeStatement, i, (int)fieldOffset, buffer, bufferoffset, length);
-    }
-
-    /// <summary>
-    /// Returns the column as a single character
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>char</returns>
-    public override char GetChar(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetChar(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.SByte);
-      return Convert.ToChar(_activeStatement._sql.GetInt32(_activeStatement, i));
-    }
-
-    /// <summary>
-    /// Retrieves a column as an array of chars (blob)
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <param name="fieldoffset">The zero-based index of where to begin reading the data</param>
-    /// <param name="buffer">The buffer to write the characters into</param>
-    /// <param name="bufferoffset">The zero-based index of where to begin writing into the array</param>
-    /// <param name="length">The number of bytes to retrieve</param>
-    /// <returns>The actual number of characters written into the array</returns>
-    /// <remarks>
-    /// To determine the number of characters in the column, pass a null value for the buffer.  The total length will be returned.
-    /// </remarks>
-    public override long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetChars(i - VisibleFieldCount, fieldoffset, buffer, bufferoffset, length);
-
-      VerifyType(i, DbType.String);
-      return _activeStatement._sql.GetChars(_activeStatement, i, (int)fieldoffset, buffer, bufferoffset, length);
-    }
-
-    /// <summary>
-    /// Retrieves the name of the back-end datatype of the column
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>string</returns>
-    public override string GetDataTypeName(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetDataTypeName(i - VisibleFieldCount);
-
-      SQLiteType typ = GetSQLiteType(i);
-      return _activeStatement._sql.ColumnType(_activeStatement, i, out typ.Affinity);
-    }
-
-    /// <summary>
-    /// Retrieve the column as a date/time value
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>DateTime</returns>
-    public override DateTime GetDateTime(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetDateTime(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.DateTime);
-      return _activeStatement._sql.GetDateTime(_activeStatement, i);
-    }
-
-    /// <summary>
-    /// Retrieve the column as a decimal value
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>decimal</returns>
-    public override decimal GetDecimal(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetDecimal(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Decimal);
-      return Decimal.Parse(_activeStatement._sql.GetText(_activeStatement, i), NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent  | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture);
-    }
-
-    /// <summary>
-    /// Returns the column as a double
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>double</returns>
-    public override double GetDouble(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetDouble(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Double);
-      return _activeStatement._sql.GetDouble(_activeStatement, i);
-    }
-
-    /// <summary>
-    /// Returns the .NET type of a given column
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>Type</returns>
-    public override Type GetFieldType(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetFieldType(i - VisibleFieldCount);
-
-      return SqliteConvert.SQLiteTypeToType(GetSQLiteType(i));
-    }
-
-    /// <summary>
-    /// Returns a column as a float value
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>float</returns>
-    public override float GetFloat(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetFloat(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Single);
-      return Convert.ToSingle(_activeStatement._sql.GetDouble(_activeStatement, i));
-    }
-
-    /// <summary>
-    /// Returns the column as a Guid
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>Guid</returns>
-    public override Guid GetGuid(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetGuid(i - VisibleFieldCount);
-
-      TypeAffinity affinity = VerifyType(i, DbType.Guid);
-      if (affinity == TypeAffinity.Blob)
-      {
-        byte[] buffer = new byte[16];
-        _activeStatement._sql.GetBytes(_activeStatement, i, 0, buffer, 0, 16);
-        return new Guid(buffer);
-      }
-      else
-        return new Guid(_activeStatement._sql.GetText(_activeStatement, i));
-    }
-
-    /// <summary>
-    /// Returns the column as a short
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>Int16</returns>
-    public override Int16 GetInt16(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetInt16(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Int16);
-      return Convert.ToInt16(_activeStatement._sql.GetInt32(_activeStatement, i));
-    }
-
-    /// <summary>
-    /// Retrieves the column as an int
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>Int32</returns>
-    public override Int32 GetInt32(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetInt32(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Int32);
-      return _activeStatement._sql.GetInt32(_activeStatement, i);
-    }
-
-    /// <summary>
-    /// Retrieves the column as a long
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>Int64</returns>
-    public override Int64 GetInt64(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetInt64(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.Int64);
-      return _activeStatement._sql.GetInt64(_activeStatement, i);
-    }
-
-    /// <summary>
-    /// Retrieves the name of the column
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>string</returns>
-    public override string GetName(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetName(i - VisibleFieldCount);
-
-      return _activeStatement._sql.ColumnName(_activeStatement, i);
-    }
-
-    /// <summary>
-    /// Retrieves the i of a column, given its name
-    /// </summary>
-    /// <param name="name">The name of the column to retrieve</param>
-    /// <returns>The int i of the column</returns>
-    public override int GetOrdinal(string name)
-    {
-      CheckClosed();
-      int r = _activeStatement._sql.ColumnIndex(_activeStatement, name);
-      if (r == -1 && _keyInfo != null)
-      {
-        r = _keyInfo.GetOrdinal(name);
-        if (r > -1) r += VisibleFieldCount;
-      }
-
-      return r;
-    }
-
-    /// <summary>
-    /// Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done
-    /// to gather the necessary information so it can be represented in an ADO.NET manner.
-    /// </summary>
-    /// <returns>Returns a DataTable containing the schema information for the active SELECT statement being processed.</returns>
-    public override DataTable GetSchemaTable()
-    {
-      return GetSchemaTable(true, false);
-    }
-
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Collections.Generic;
+  using System.Globalization;
+  using System.Reflection;
+
+  /// <summary>
+  /// SQLite implementation of DbDataReader.
+  /// </summary>
+  public sealed class SqliteDataReader : DbDataReader
+  {
+    /// <summary>
+    /// Underlying command this reader is attached to
+    /// </summary>
+    private SqliteCommand _command;
+    /// <summary>
+    /// Index of the current statement in the command being processed
+    /// </summary>
+    private int _activeStatementIndex;
+    /// <summary>
+    /// Current statement being Read()
+    /// </summary>
+    private SqliteStatement _activeStatement;
+    /// <summary>
+    /// State of the current statement being processed.
+    /// -1 = First Step() executed, so the first Read() will be ignored
+    ///  0 = Actively reading
+    ///  1 = Finished reading
+    ///  2 = Non-row-returning statement, no records
+    /// </summary>
+    private int _readingState;
+    /// <summary>
+    /// Number of records affected by the insert/update statements executed on the command
+    /// </summary>
+    private int _rowsAffected;
+    /// <summary>
+    /// Count of fields (columns) in the row-returning statement currently being processed
+    /// </summary>
+    private int _fieldCount;
+    /// <summary>
+    /// Datatypes of active fields (columns) in the current statement, used for type-restricting data
+    /// </summary>
+    private SQLiteType[] _fieldTypeArray;
+
+    /// <summary>
+    /// The behavior of the datareader
+    /// </summary>
+    private CommandBehavior _commandBehavior;
+
+    /// <summary>
+    /// If set, then dispose of the command object when the reader is finished
+    /// </summary>
+    internal bool _disposeCommand;
+
+    /// <summary>
+    /// An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified
+    /// </summary>
+    private SqliteKeyReader _keyInfo;
+
+    internal long _version; // Matches the version of the connection
+
+    /// <summary>
+    /// Internal constructor, initializes the datareader and sets up to begin executing statements
+    /// </summary>
+    /// <param name="cmd">The SqliteCommand this data reader is for</param>
+    /// <param name="behave">The expected behavior of the data reader</param>
+    internal SqliteDataReader(SqliteCommand cmd, CommandBehavior behave)
+    {
+      _command = cmd;
+      _version = _command.Connection._version;
+
+      _commandBehavior = behave;
+      _activeStatementIndex = -1;
+      _activeStatement = null;
+      _rowsAffected = -1;
+      _fieldCount = 0;
+
+      if (_command != null)
+        NextResult();
+    }
+
+    internal void Cancel()
+    {
+      _version = 0;
+    }
+
+    /// <summary>
+    /// Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified.
+    /// </summary>
+    public override void Close()
+    {
+      try
+      {
+        if (_command != null)
+        {
+          try
+          {
+            try
+            {
+              // Make sure we've not been canceled
+              if (_version != 0)
+              {
+                try
+                {
+                  while (NextResult())
+                  {
+                  }
+                }
+                catch
+                {
+                }
+              }
+              _command.ClearDataReader();
+            }
+            finally
+            {
+              // If the datareader's behavior includes closing the connection, then do so here.
+              if ((_commandBehavior & CommandBehavior.CloseConnection) != 0 && _command.Connection != null) {
+                // We need to call Dispose on the command before we call Dispose on the Connection,
+                // otherwise we'll get a SQLITE_LOCKED exception.
+                var conn = _command.Connection;
+                _command.Dispose ();
+                conn.Close();
+                _disposeCommand = false;
+              }
+            }
+          }
+          finally
+          {
+            if (_disposeCommand)
+              _command.Dispose();
+          }
+        }
+
+        _command = null;
+        _activeStatement = null;
+        _fieldTypeArray = null;
+      }
+      finally
+      {
+        if (_keyInfo != null)
+        {
+          _keyInfo.Dispose();
+          _keyInfo = null;
+        }
+      }
+    }
+
+    /// <summary>
+    /// Throw an error if the datareader is closed
+    /// </summary>
+    private void CheckClosed()
+    {
+      if (_command == null)
+        throw new InvalidOperationException("DataReader has been closed");
+
+      if (_version == 0)
+        throw new SqliteException((int)SQLiteErrorCode.Abort, "Execution was aborted by the user");
+
+      if (_command.Connection.State != ConnectionState.Open || _command.Connection._version != _version)
+        throw new InvalidOperationException("Connection was closed, statement was terminated");
+    }
+
+    /// <summary>
+    /// Throw an error if a row is not loaded
+    /// </summary>
+    private void CheckValidRow()
+    {
+      if (_readingState != 0)
+        throw new InvalidOperationException("No current row");
+    }
+
+    /// <summary>
+    /// Enumerator support
+    /// </summary>
+    /// <returns>Returns a DbEnumerator object.</returns>
+    public override global::System.Collections.IEnumerator GetEnumerator()
+    {
+      return new DbEnumerator(this, ((_commandBehavior & CommandBehavior.CloseConnection) == CommandBehavior.CloseConnection));
+    }
+
+    /// <summary>
+    /// Not implemented.  Returns 0
+    /// </summary>
+    public override int Depth
+    {
+      get
+      {
+        CheckClosed();
+        return 0;
+      }
+    }
+
+    /// <summary>
+    /// Returns the number of columns in the current resultset
+    /// </summary>
+    public override int FieldCount
+    {
+      get
+      {
+        CheckClosed();
+        if (_keyInfo == null)
+          return _fieldCount;
+
+        return _fieldCount + _keyInfo.Count;
+      }
+    }
+
+    /// <summary>
+    /// Returns the number of visible fielsd in the current resultset
+    /// </summary>
+    public override int VisibleFieldCount
+    {
+      get
+      {
+        CheckClosed();
+        return _fieldCount;
+      }
+    }
+
+    /// <summary>
+    /// SQLite is inherently un-typed.  All datatypes in SQLite are natively strings.  The definition of the columns of a table
+    /// and the affinity of returned types are all we have to go on to type-restrict data in the reader.
+    /// 
+    /// This function attempts to verify that the type of data being requested of a column matches the datatype of the column.  In
+    /// the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob)
+    /// to a set of known types that closely match that affinity.  It's not an exact science, but its the best we can do.
+    /// </summary>
+    /// <returns>
+    /// This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity.
+    /// </returns>
+    /// <param name="i">The index of the column to type-check</param>
+    /// <param name="typ">The type we want to get out of the column</param>
+    private TypeAffinity VerifyType(int i, DbType typ)
+    {
+      CheckClosed();
+      CheckValidRow();
+      TypeAffinity affinity = GetSQLiteType(i).Affinity;
+
+      switch (affinity)
+      {
+        case TypeAffinity.Int64:
+          if (typ == DbType.Int16) return affinity;
+          if (typ == DbType.Int32) return affinity;
+          if (typ == DbType.Int64) return affinity;
+          if (typ == DbType.Boolean) return affinity;
+          if (typ == DbType.Byte) return affinity;
+          if (typ == DbType.DateTime) return affinity;
+          if (typ == DbType.Single) return affinity;
+          if (typ == DbType.Double) return affinity;
+          if (typ == DbType.Decimal) return affinity;
+          break;
+        case TypeAffinity.Double:
+          if (typ == DbType.Single) return affinity;
+          if (typ == DbType.Double) return affinity;
+          if (typ == DbType.Decimal) return affinity;
+          if (typ == DbType.DateTime) return affinity;
+          break;
+        case TypeAffinity.Text:
+          if (typ == DbType.SByte) return affinity;
+          if (typ == DbType.String) return affinity;
+          if (typ == DbType.SByte) return affinity;
+          if (typ == DbType.Guid) return affinity;
+          if (typ == DbType.DateTime) return affinity;
+          if (typ == DbType.Decimal) return affinity;
+          break;
+        case TypeAffinity.Blob:
+          if (typ == DbType.Guid) return affinity;
+          if (typ == DbType.String) return affinity;
+          if (typ == DbType.Binary) return affinity;
+          break;
+      }
+
+      throw new InvalidCastException();
+    }
+
+    /// <summary>
+    /// Retrieves the column as a boolean value
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>bool</returns>
+    public override bool GetBoolean(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetBoolean(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Boolean);
+      return Convert.ToBoolean(GetValue(i), CultureInfo.CurrentCulture);
+    }
+
+    /// <summary>
+    /// Retrieves the column as a single byte value
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>byte</returns>
+    public override byte GetByte(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetByte(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Byte);
+      return Convert.ToByte(_activeStatement._sql.GetInt32(_activeStatement, i));
+    }
+
+    /// <summary>
+    /// Retrieves a column as an array of bytes (blob)
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <param name="fieldOffset">The zero-based index of where to begin reading the data</param>
+    /// <param name="buffer">The buffer to write the bytes into</param>
+    /// <param name="bufferoffset">The zero-based index of where to begin writing into the array</param>
+    /// <param name="length">The number of bytes to retrieve</param>
+    /// <returns>The actual number of bytes written into the array</returns>
+    /// <remarks>
+    /// To determine the number of bytes in the column, pass a null value for the buffer.  The total length will be returned.
+    /// </remarks>
+    public override long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetBytes(i - VisibleFieldCount, fieldOffset, buffer, bufferoffset, length);
+
+      VerifyType(i, DbType.Binary);
+      return _activeStatement._sql.GetBytes(_activeStatement, i, (int)fieldOffset, buffer, bufferoffset, length);
+    }
+
+    /// <summary>
+    /// Returns the column as a single character
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>char</returns>
+    public override char GetChar(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetChar(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.SByte);
+      return Convert.ToChar(_activeStatement._sql.GetInt32(_activeStatement, i));
+    }
+
+    /// <summary>
+    /// Retrieves a column as an array of chars (blob)
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <param name="fieldoffset">The zero-based index of where to begin reading the data</param>
+    /// <param name="buffer">The buffer to write the characters into</param>
+    /// <param name="bufferoffset">The zero-based index of where to begin writing into the array</param>
+    /// <param name="length">The number of bytes to retrieve</param>
+    /// <returns>The actual number of characters written into the array</returns>
+    /// <remarks>
+    /// To determine the number of characters in the column, pass a null value for the buffer.  The total length will be returned.
+    /// </remarks>
+    public override long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetChars(i - VisibleFieldCount, fieldoffset, buffer, bufferoffset, length);
+
+      VerifyType(i, DbType.String);
+      return _activeStatement._sql.GetChars(_activeStatement, i, (int)fieldoffset, buffer, bufferoffset, length);
+    }
+
+    /// <summary>
+    /// Retrieves the name of the back-end datatype of the column
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>string</returns>
+    public override string GetDataTypeName(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetDataTypeName(i - VisibleFieldCount);
+
+      SQLiteType typ = GetSQLiteType(i);
+      return _activeStatement._sql.ColumnType(_activeStatement, i, out typ.Affinity);
+    }
+
+    /// <summary>
+    /// Retrieve the column as a date/time value
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>DateTime</returns>
+    public override DateTime GetDateTime(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetDateTime(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.DateTime);
+      return _activeStatement._sql.GetDateTime(_activeStatement, i);
+    }
+
+    /// <summary>
+    /// Retrieve the column as a decimal value
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>decimal</returns>
+    public override decimal GetDecimal(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetDecimal(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Decimal);
+      return Decimal.Parse(_activeStatement._sql.GetText(_activeStatement, i), NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent  | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture);
+    }
+
+    /// <summary>
+    /// Returns the column as a double
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>double</returns>
+    public override double GetDouble(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetDouble(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Double);
+      return _activeStatement._sql.GetDouble(_activeStatement, i);
+    }
+
+    /// <summary>
+    /// Returns the .NET type of a given column
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>Type</returns>
+    public override Type GetFieldType(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetFieldType(i - VisibleFieldCount);
+
+      return SqliteConvert.SQLiteTypeToType(GetSQLiteType(i));
+    }
+
+    /// <summary>
+    /// Returns a column as a float value
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>float</returns>
+    public override float GetFloat(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetFloat(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Single);
+      return Convert.ToSingle(_activeStatement._sql.GetDouble(_activeStatement, i));
+    }
+
+    /// <summary>
+    /// Returns the column as a Guid
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>Guid</returns>
+    public override Guid GetGuid(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetGuid(i - VisibleFieldCount);
+
+      TypeAffinity affinity = VerifyType(i, DbType.Guid);
+      if (affinity == TypeAffinity.Blob)
+      {
+        byte[] buffer = new byte[16];
+        _activeStatement._sql.GetBytes(_activeStatement, i, 0, buffer, 0, 16);
+        return new Guid(buffer);
+      }
+      else
+        return new Guid(_activeStatement._sql.GetText(_activeStatement, i));
+    }
+
+    /// <summary>
+    /// Returns the column as a short
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>Int16</returns>
+    public override Int16 GetInt16(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetInt16(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Int16);
+      return Convert.ToInt16(_activeStatement._sql.GetInt32(_activeStatement, i));
+    }
+
+    /// <summary>
+    /// Retrieves the column as an int
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>Int32</returns>
+    public override Int32 GetInt32(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetInt32(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Int32);
+      return _activeStatement._sql.GetInt32(_activeStatement, i);
+    }
+
+    /// <summary>
+    /// Retrieves the column as a long
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>Int64</returns>
+    public override Int64 GetInt64(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetInt64(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.Int64);
+      return _activeStatement._sql.GetInt64(_activeStatement, i);
+    }
+
+    /// <summary>
+    /// Retrieves the name of the column
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>string</returns>
+    public override string GetName(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetName(i - VisibleFieldCount);
+
+      return _activeStatement._sql.ColumnName(_activeStatement, i);
+    }
+
+    /// <summary>
+    /// Retrieves the i of a column, given its name
+    /// </summary>
+    /// <param name="name">The name of the column to retrieve</param>
+    /// <returns>The int i of the column</returns>
+    public override int GetOrdinal(string name)
+    {
+      CheckClosed();
+      int r = _activeStatement._sql.ColumnIndex(_activeStatement, name);
+      if (r == -1 && _keyInfo != null)
+      {
+        r = _keyInfo.GetOrdinal(name);
+        if (r > -1) r += VisibleFieldCount;
+      }
+
+      return r;
+    }
+
+    /// <summary>
+    /// Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done
+    /// to gather the necessary information so it can be represented in an ADO.NET manner.
+    /// </summary>
+    /// <returns>Returns a DataTable containing the schema information for the active SELECT statement being processed.</returns>
+    public override DataTable GetSchemaTable()
+    {
+      return GetSchemaTable(true, false);
+    }
+
     static bool hasColumnMetadataSupport = true;
 
-    internal DataTable GetSchemaTable(bool wantUniqueInfo, bool wantDefaultValue)
-    {
-      CheckClosed();
-
-      DataTable tbl = new DataTable("SchemaTable");
-      DataTable tblIndexes = null;
-      DataTable tblIndexColumns;
-      DataRow row;
-      string temp;
-      string strCatalog = "";
-      string strTable = "";
-      string strColumn = "";
-
-      tbl.Locale = CultureInfo.InvariantCulture;
-      tbl.Columns.Add(SchemaTableColumn.ColumnName, typeof(String));
-      tbl.Columns.Add(SchemaTableColumn.ColumnOrdinal, typeof(int));
-      tbl.Columns.Add(SchemaTableColumn.ColumnSize, typeof(int));
-      tbl.Columns.Add(SchemaTableColumn.NumericPrecision, typeof(short));
-      tbl.Columns.Add(SchemaTableColumn.NumericScale, typeof(short));
-      tbl.Columns.Add(SchemaTableColumn.IsUnique, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableColumn.IsKey, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableOptionalColumn.BaseServerName, typeof(string));
-      tbl.Columns.Add(SchemaTableOptionalColumn.BaseCatalogName, typeof(String));
-      tbl.Columns.Add(SchemaTableColumn.BaseColumnName, typeof(String));
-      tbl.Columns.Add(SchemaTableColumn.BaseSchemaName, typeof(String));
-      tbl.Columns.Add(SchemaTableColumn.BaseTableName, typeof(String));
-      tbl.Columns.Add(SchemaTableColumn.DataType, typeof(Type));
-      tbl.Columns.Add(SchemaTableColumn.AllowDBNull, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableColumn.ProviderType, typeof(int));
-      tbl.Columns.Add(SchemaTableColumn.IsAliased, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableColumn.IsExpression, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableOptionalColumn.IsAutoIncrement, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableOptionalColumn.IsRowVersion, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableOptionalColumn.IsHidden, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableColumn.IsLong, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableOptionalColumn.IsReadOnly, typeof(Boolean));
-      tbl.Columns.Add(SchemaTableOptionalColumn.ProviderSpecificDataType, typeof(Type));
-      tbl.Columns.Add(SchemaTableOptionalColumn.DefaultValue, typeof(object));
-      tbl.Columns.Add("DataTypeName", typeof(string));
-      tbl.Columns.Add("CollationType", typeof(string));
-      tbl.BeginLoadData();
-
-      for (int n = 0; n < _fieldCount; n++)
-      {
-        row = tbl.NewRow();
-
-        DbType typ = GetSQLiteType(n).Type;
-
-        // Default settings for the column
-        row[SchemaTableColumn.ColumnName] = GetName(n);
-        row[SchemaTableColumn.ColumnOrdinal] = n;
-        row[SchemaTableColumn.ColumnSize] = SqliteConvert.DbTypeToColumnSize(typ);
-        row[SchemaTableColumn.NumericPrecision] = SqliteConvert.DbTypeToNumericPrecision(typ);
-        row[SchemaTableColumn.NumericScale] = SqliteConvert.DbTypeToNumericScale(typ);
-        row[SchemaTableColumn.ProviderType] = GetSQLiteType(n).Type;
-        row[SchemaTableColumn.IsLong] = false;
-        row[SchemaTableColumn.AllowDBNull] = true;
-        row[SchemaTableOptionalColumn.IsReadOnly] = false;
-        row[SchemaTableOptionalColumn.IsRowVersion] = false;
-        row[SchemaTableColumn.IsUnique] = false;
-        row[SchemaTableColumn.IsKey] = false;
-        row[SchemaTableOptionalColumn.IsAutoIncrement] = false;
-        row[SchemaTableColumn.DataType] = GetFieldType(n);
-        row[SchemaTableOptionalColumn.IsHidden] = false;
-
+    internal DataTable GetSchemaTable(bool wantUniqueInfo, bool wantDefaultValue)
+    {
+      CheckClosed();
+
+      DataTable tbl = new DataTable("SchemaTable");
+      DataTable tblIndexes = null;
+      DataTable tblIndexColumns;
+      DataRow row;
+      string temp;
+      string strCatalog = "";
+      string strTable = "";
+      string strColumn = "";
+
+      tbl.Locale = CultureInfo.InvariantCulture;
+      tbl.Columns.Add(SchemaTableColumn.ColumnName, typeof(String));
+      tbl.Columns.Add(SchemaTableColumn.ColumnOrdinal, typeof(int));
+      tbl.Columns.Add(SchemaTableColumn.ColumnSize, typeof(int));
+      tbl.Columns.Add(SchemaTableColumn.NumericPrecision, typeof(short));
+      tbl.Columns.Add(SchemaTableColumn.NumericScale, typeof(short));
+      tbl.Columns.Add(SchemaTableColumn.IsUnique, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableColumn.IsKey, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableOptionalColumn.BaseServerName, typeof(string));
+      tbl.Columns.Add(SchemaTableOptionalColumn.BaseCatalogName, typeof(String));
+      tbl.Columns.Add(SchemaTableColumn.BaseColumnName, typeof(String));
+      tbl.Columns.Add(SchemaTableColumn.BaseSchemaName, typeof(String));
+      tbl.Columns.Add(SchemaTableColumn.BaseTableName, typeof(String));
+      tbl.Columns.Add(SchemaTableColumn.DataType, typeof(Type));
+      tbl.Columns.Add(SchemaTableColumn.AllowDBNull, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableColumn.ProviderType, typeof(int));
+      tbl.Columns.Add(SchemaTableColumn.IsAliased, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableColumn.IsExpression, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableOptionalColumn.IsAutoIncrement, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableOptionalColumn.IsRowVersion, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableOptionalColumn.IsHidden, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableColumn.IsLong, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableOptionalColumn.IsReadOnly, typeof(Boolean));
+      tbl.Columns.Add(SchemaTableOptionalColumn.ProviderSpecificDataType, typeof(Type));
+      tbl.Columns.Add(SchemaTableOptionalColumn.DefaultValue, typeof(object));
+      tbl.Columns.Add("DataTypeName", typeof(string));
+      tbl.Columns.Add("CollationType", typeof(string));
+      tbl.BeginLoadData();
+
+      for (int n = 0; n < _fieldCount; n++)
+      {
+        row = tbl.NewRow();
+
+        DbType typ = GetSQLiteType(n).Type;
+
+        // Default settings for the column
+        row[SchemaTableColumn.ColumnName] = GetName(n);
+        row[SchemaTableColumn.ColumnOrdinal] = n;
+        row[SchemaTableColumn.ColumnSize] = SqliteConvert.DbTypeToColumnSize(typ);
+        row[SchemaTableColumn.NumericPrecision] = SqliteConvert.DbTypeToNumericPrecision(typ);
+        row[SchemaTableColumn.NumericScale] = SqliteConvert.DbTypeToNumericScale(typ);
+        row[SchemaTableColumn.ProviderType] = GetSQLiteType(n).Type;
+        row[SchemaTableColumn.IsLong] = false;
+        row[SchemaTableColumn.AllowDBNull] = true;
+        row[SchemaTableOptionalColumn.IsReadOnly] = false;
+        row[SchemaTableOptionalColumn.IsRowVersion] = false;
+        row[SchemaTableColumn.IsUnique] = false;
+        row[SchemaTableColumn.IsKey] = false;
+        row[SchemaTableOptionalColumn.IsAutoIncrement] = false;
+        row[SchemaTableColumn.DataType] = GetFieldType(n);
+        row[SchemaTableOptionalColumn.IsHidden] = false;
+
         // HACK: Prevent exploding if Sqlite was built without the SQLITE_ENABLE_COLUMN_METADATA option.
         //
         // This code depends on sqlite3_column_origin_name, which only exists if Sqlite was built with
@@ -650,408 +650,408 @@ namespace Mono.Data.Sqlite
                 hasColumnMetadataSupport = false;
             }
         }
-#endif
-
-        string dataType = null;
-        // If we have a table-bound column, extract the extra information from it
-        if (String.IsNullOrEmpty(strColumn) == false)
-        {
-          string collSeq;
-          bool bNotNull;
-          bool bPrimaryKey;
-          bool bAutoIncrement;
-          string[] arSize;
-
-          // Get the column meta data
-          _command.Connection._sql.ColumnMetaData(
-            (string)row[SchemaTableOptionalColumn.BaseCatalogName],
-            (string)row[SchemaTableColumn.BaseTableName],
-            strColumn,
-            out dataType, out collSeq, out bNotNull, out bPrimaryKey, out bAutoIncrement);
-
-          if (bNotNull || bPrimaryKey) row[SchemaTableColumn.AllowDBNull] = false;
-
-          row[SchemaTableColumn.IsKey] = bPrimaryKey;
-          row[SchemaTableOptionalColumn.IsAutoIncrement] = bAutoIncrement;
-          row["CollationType"] = collSeq;
-
-          // For types like varchar(50) and such, extract the size
-          arSize = dataType.Split('(');
-          if (arSize.Length > 1)
-          {
-            dataType = arSize[0];
-            arSize = arSize[1].Split(')');
-            if (arSize.Length > 1)
-            {
-              arSize = arSize[0].Split(',', '.');
-              if (GetSQLiteType(n).Type == DbType.String || GetSQLiteType(n).Type == DbType.Binary)
-              {
-                row[SchemaTableColumn.ColumnSize] = Convert.ToInt32(arSize[0], CultureInfo.InvariantCulture);
-              }
-              else
-              {
-                row[SchemaTableColumn.NumericPrecision] = Convert.ToInt32(arSize[0], CultureInfo.InvariantCulture);
-                if (arSize.Length > 1)
-                  row[SchemaTableColumn.NumericScale] = Convert.ToInt32(arSize[1], CultureInfo.InvariantCulture);
-              }
-            }
-          }
-
-          if (wantDefaultValue)
-          {
-            // Determine the default value for the column, which sucks because we have to query the schema for each column
-            using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].TABLE_INFO([{1}])",
-              row[SchemaTableOptionalColumn.BaseCatalogName],
-              row[SchemaTableColumn.BaseTableName]
-              ), _command.Connection))
-            using (DbDataReader rdTable = cmdTable.ExecuteReader())
-            {
-              // Find the matching column
-              while (rdTable.Read())
-              {
-                if (String.Compare((string)row[SchemaTableColumn.BaseColumnName], rdTable.GetString(1), true, CultureInfo.InvariantCulture) == 0)
-                {
-                  if (rdTable.IsDBNull(4) == false)
-                    row[SchemaTableOptionalColumn.DefaultValue] = rdTable[4];
-
-                  break;
-                }
-              }
-            }
-          }
-
-          // Determine IsUnique properly, which is a pain in the butt!
-          if (wantUniqueInfo)
-          {
-            if ((string)row[SchemaTableOptionalColumn.BaseCatalogName] != strCatalog
-              || (string)row[SchemaTableColumn.BaseTableName] != strTable)
-            {
-              strCatalog = (string)row[SchemaTableOptionalColumn.BaseCatalogName];
-              strTable = (string)row[SchemaTableColumn.BaseTableName];
-
-              tblIndexes = _command.Connection.GetSchema("Indexes", new string[] {
-                (string)row[SchemaTableOptionalColumn.BaseCatalogName],
-                null,
-                (string)row[SchemaTableColumn.BaseTableName],
-                null });
-            }
-
-            foreach (DataRow rowIndexes in tblIndexes.Rows)
-            {
-              tblIndexColumns = _command.Connection.GetSchema("IndexColumns", new string[] {
-                (string)row[SchemaTableOptionalColumn.BaseCatalogName],
-                null,
-                (string)row[SchemaTableColumn.BaseTableName],
-                (string)rowIndexes["INDEX_NAME"],
-                null
-                });
-              foreach (DataRow rowColumnIndex in tblIndexColumns.Rows)
-              {
-                if (String.Compare((string)rowColumnIndex["COLUMN_NAME"], strColumn, true, CultureInfo.InvariantCulture) == 0)
-                {
-                  if (tblIndexColumns.Rows.Count == 1 && (bool)row[SchemaTableColumn.AllowDBNull] == false)
-                    row[SchemaTableColumn.IsUnique] = rowIndexes["UNIQUE"];
-
-                  // If its an integer primary key and the only primary key in the table, then its a rowid alias and is autoincrement
-                  // NOTE:  Currently commented out because this is not always the desired behavior.  For example, a 1:1 relationship with
-                  //        another table, where the other table is autoincrement, but this one is not, and uses the rowid from the other.
-                  //        It is safer to only set Autoincrement on tables where we're SURE the user specified AUTOINCREMENT, even if its a rowid column.
-
-                  if (tblIndexColumns.Rows.Count == 1 && (bool)rowIndexes["PRIMARY_KEY"] == true && String.IsNullOrEmpty(dataType) == false &&
-                    String.Compare(dataType, "integer", true, CultureInfo.InvariantCulture) == 0)
-                  {
-                    //  row[SchemaTableOptionalColumn.IsAutoIncrement] = true;
-                  }
-
-                  break;
-                }
-              }
-            }
-          }
-
-          if (String.IsNullOrEmpty(dataType))
-          {
-            TypeAffinity affin;
-            dataType = _activeStatement._sql.ColumnType(_activeStatement, n, out affin);
-          }
-
-          if (String.IsNullOrEmpty(dataType) == false)
-            row["DataTypeName"] = dataType;
-        }
-        tbl.Rows.Add(row);
-      }
-
-      if (_keyInfo != null)
-        _keyInfo.AppendSchemaTable(tbl);
-
-      tbl.AcceptChanges();
-      tbl.EndLoadData();
-
-      return tbl;
-    }
-
-    /// <summary>
-    /// Retrieves the column as a string
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>string</returns>
-    public override string GetString(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetString(i - VisibleFieldCount);
-
-      VerifyType(i, DbType.String);
-      return _activeStatement._sql.GetText(_activeStatement, i);
-    }
-
-    /// <summary>
-    /// Retrieves the column as an object corresponding to the underlying datatype of the column
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>object</returns>
-    public override object GetValue(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.GetValue(i - VisibleFieldCount);
-
-      SQLiteType typ = GetSQLiteType(i);
-
-      return _activeStatement._sql.GetValue(_activeStatement, i, typ);
-    }
-
-    /// <summary>
-    /// Retreives the values of multiple columns, up to the size of the supplied array
-    /// </summary>
-    /// <param name="values">The array to fill with values from the columns in the current resultset</param>
-    /// <returns>The number of columns retrieved</returns>
-    public override int GetValues(object[] values)
-    {
-      int nMax = FieldCount;
-      if (values.Length < nMax) nMax = values.Length;
-
-      for (int n = 0; n < nMax; n++)
-      {
-        values[n] = GetValue(n);
-      }
-
-      return nMax;
-    }
-
-    /// <summary>
-    /// Returns True if the resultset has rows that can be fetched
-    /// </summary>
-    public override bool HasRows
-    {
-      get
-      {
-        CheckClosed();
-        return (_readingState != 1);
-      }
-    }
-
-    /// <summary>
-    /// Returns True if the data reader is closed
-    /// </summary>
-    public override bool IsClosed
-    {
-      get { return (_command == null); }
-    }
-
-    /// <summary>
-    /// Returns True if the specified column is null
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>True or False</returns>
-    public override bool IsDBNull(int i)
-    {
-      if (i >= VisibleFieldCount && _keyInfo != null)
-        return _keyInfo.IsDBNull(i - VisibleFieldCount);
-
-      return _activeStatement._sql.IsNull(_activeStatement, i);
-    }
-
-    /// <summary>
-    /// Moves to the next resultset in multiple row-returning SQL command.
-    /// </summary>
-    /// <returns>True if the command was successful and a new resultset is available, False otherwise.</returns>
-    public override bool NextResult()
-    {
-      CheckClosed();
-
-      SqliteStatement stmt = null;
-      int fieldCount;
-
-      while (true)
-      {
-        if (_activeStatement != null && stmt == null)
-        {
-          // Reset the previously-executed statement
-          _activeStatement._sql.Reset(_activeStatement);
-
-          // If we're only supposed to return a single rowset, step through all remaining statements once until
-          // they are all done and return false to indicate no more resultsets exist.
-          if ((_commandBehavior & CommandBehavior.SingleResult) != 0)
-          {
-            for (; ; )
-            {
-              stmt = _command.GetStatement(_activeStatementIndex + 1);
-              if (stmt == null) break;
-              _activeStatementIndex++;
-
-              stmt._sql.Step(stmt);
-              if (stmt._sql.ColumnCount(stmt) == 0)
-              {
-                if (_rowsAffected == -1) _rowsAffected = 0;
-                _rowsAffected += stmt._sql.Changes;
-              }
-              stmt._sql.Reset(stmt); // Gotta reset after every step to release any locks and such!
-            }
-            return false;
-          }
-        }
-
-        // Get the next statement to execute
-        stmt = _command.GetStatement(_activeStatementIndex + 1);
-
-        // If we've reached the end of the statements, return false, no more resultsets
-        if (stmt == null)
-          return false;
-
-        // If we were on a current resultset, set the state to "done reading" for it
-        if (_readingState < 1)
-          _readingState = 1;
-
-        _activeStatementIndex++;
-
-        fieldCount = stmt._sql.ColumnCount(stmt);
-
-        // If the statement is not a select statement or we're not retrieving schema only, then perform the initial step
-        if ((_commandBehavior & CommandBehavior.SchemaOnly) == 0 || fieldCount == 0)
-        {
-          if (stmt._sql.Step(stmt))
-          {
-            _readingState = -1;
-          }
-          else if (fieldCount == 0) // No rows returned, if fieldCount is zero, skip to the next statement
-          {
-            if (_rowsAffected == -1) _rowsAffected = 0;
-            _rowsAffected += stmt._sql.Changes;
-            stmt._sql.Reset(stmt);
-            continue; // Skip this command and move to the next, it was not a row-returning resultset
-          }
-          else // No rows, fieldCount is non-zero so stop here
-          {
-            _readingState = 1; // This command returned columns but no rows, so return true, but HasRows = false and Read() returns false
-          }
-        }
-
-        // Ahh, we found a row-returning resultset eligible to be returned!
-        _activeStatement = stmt;
-        _fieldCount = fieldCount;
-        _fieldTypeArray = null;
-
-        if ((_commandBehavior & CommandBehavior.KeyInfo) != 0)
-          LoadKeyInfo();
-
-        return true;
-      }
-    }
-
-    /// <summary>
-    /// Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls.
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>A SQLiteType structure</returns>
-    private SQLiteType GetSQLiteType(int i)
-    {
-      SQLiteType typ;
-
-      // Initialize the field types array if not already initialized
-      if (_fieldTypeArray == null)
-        _fieldTypeArray = new SQLiteType[VisibleFieldCount];
-
-      // Initialize this column's field type instance
-      if (_fieldTypeArray[i] == null) _fieldTypeArray[i] = new SQLiteType();
-
-      typ = _fieldTypeArray[i];
-
-      // If not initialized, then fetch the declared column datatype and attempt to convert it 
-      // to a known DbType.
-      if (typ.Affinity == TypeAffinity.Uninitialized)
-        typ.Type = SqliteConvert.TypeNameToDbType(_activeStatement._sql.ColumnType(_activeStatement, i, out typ.Affinity));
-      else
-        typ.Affinity = _activeStatement._sql.ColumnAffinity(_activeStatement, i);
-
-      return typ;
-    }
-
-    /// <summary>
-    /// Reads the next row from the resultset
-    /// </summary>
-    /// <returns>True if a new row was successfully loaded and is ready for processing</returns>
-    public override bool Read()
-    {
-      CheckClosed();
-
-      if (_readingState == -1) // First step was already done at the NextResult() level, so don't step again, just return true.
-      {
-        _readingState = 0;
-        return true;
-      }
-      else if (_readingState == 0) // Actively reading rows
-      {
-        // Don't read a new row if the command behavior dictates SingleRow.  We've already read the first row.
-        if ((_commandBehavior & CommandBehavior.SingleRow) == 0)
-        {
-          if (_activeStatement._sql.Step(_activeStatement) == true)
-          {
-            if (_keyInfo != null)
-              _keyInfo.Reset();
-
-            return true;
-          }
-        }
-
-        _readingState = 1; // Finished reading rows
-      }
-
-      return false;
-    }
-
-    /// <summary>
-    /// Retrieve the count of records affected by an update/insert command.  Only valid once the data reader is closed!
-    /// </summary>
-    public override int RecordsAffected
-    {
-      get { return (_rowsAffected < 0) ? 0 : _rowsAffected; }
-    }
-
-    /// <summary>
-    /// Indexer to retrieve data from a column given its name
-    /// </summary>
-    /// <param name="name">The name of the column to retrieve data for</param>
-    /// <returns>The value contained in the column</returns>
-    public override object this[string name]
-    {
-      get { return GetValue(GetOrdinal(name)); }
-    }
-
-    /// <summary>
-    /// Indexer to retrieve data from a column given its i
-    /// </summary>
-    /// <param name="i">The index of the column to retrieve</param>
-    /// <returns>The value contained in the column</returns>
-    public override object this[int i]
-    {
-      get { return GetValue(i); }
-    }
-
-    private void LoadKeyInfo()
-    {
-      if (_keyInfo != null)
-        _keyInfo.Dispose();
-
-      _keyInfo = new SqliteKeyReader(_command.Connection, this, _activeStatement);
-    }
-  }
-}
+#endif
+
+        string dataType = null;
+        // If we have a table-bound column, extract the extra information from it
+        if (String.IsNullOrEmpty(strColumn) == false)
+        {
+          string collSeq;
+          bool bNotNull;
+          bool bPrimaryKey;
+          bool bAutoIncrement;
+          string[] arSize;
+
+          // Get the column meta data
+          _command.Connection._sql.ColumnMetaData(
+            (string)row[SchemaTableOptionalColumn.BaseCatalogName],
+            (string)row[SchemaTableColumn.BaseTableName],
+            strColumn,
+            out dataType, out collSeq, out bNotNull, out bPrimaryKey, out bAutoIncrement);
+
+          if (bNotNull || bPrimaryKey) row[SchemaTableColumn.AllowDBNull] = false;
+
+          row[SchemaTableColumn.IsKey] = bPrimaryKey;
+          row[SchemaTableOptionalColumn.IsAutoIncrement] = bAutoIncrement;
+          row["CollationType"] = collSeq;
+
+          // For types like varchar(50) and such, extract the size
+          arSize = dataType.Split('(');
+          if (arSize.Length > 1)
+          {
+            dataType = arSize[0];
+            arSize = arSize[1].Split(')');
+            if (arSize.Length > 1)
+            {
+              arSize = arSize[0].Split(',', '.');
+              if (GetSQLiteType(n).Type == DbType.String || GetSQLiteType(n).Type == DbType.Binary)
+              {
+                row[SchemaTableColumn.ColumnSize] = Convert.ToInt32(arSize[0], CultureInfo.InvariantCulture);
+              }
+              else
+              {
+                row[SchemaTableColumn.NumericPrecision] = Convert.ToInt32(arSize[0], CultureInfo.InvariantCulture);
+                if (arSize.Length > 1)
+                  row[SchemaTableColumn.NumericScale] = Convert.ToInt32(arSize[1], CultureInfo.InvariantCulture);
+              }
+            }
+          }
+
+          if (wantDefaultValue)
+          {
+            // Determine the default value for the column, which sucks because we have to query the schema for each column
+            using (SqliteCommand cmdTable = new SqliteCommand(String.Format(CultureInfo.InvariantCulture, "PRAGMA [{0}].TABLE_INFO([{1}])",
+              row[SchemaTableOptionalColumn.BaseCatalogName],
+              row[SchemaTableColumn.BaseTableName]
+              ), _command.Connection))
+            using (DbDataReader rdTable = cmdTable.ExecuteReader())
+            {
+              // Find the matching column
+              while (rdTable.Read())
+              {
+                if (String.Compare((string)row[SchemaTableColumn.BaseColumnName], rdTable.GetString(1), true, CultureInfo.InvariantCulture) == 0)
+                {
+                  if (rdTable.IsDBNull(4) == false)
+                    row[SchemaTableOptionalColumn.DefaultValue] = rdTable[4];
+
+                  break;
+                }
+              }
+            }
+          }
+
+          // Determine IsUnique properly, which is a pain in the butt!
+          if (wantUniqueInfo)
+          {
+            if ((string)row[SchemaTableOptionalColumn.BaseCatalogName] != strCatalog
+              || (string)row[SchemaTableColumn.BaseTableName] != strTable)
+            {
+              strCatalog = (string)row[SchemaTableOptionalColumn.BaseCatalogName];
+              strTable = (string)row[SchemaTableColumn.BaseTableName];
+
+              tblIndexes = _command.Connection.GetSchema("Indexes", new string[] {
+                (string)row[SchemaTableOptionalColumn.BaseCatalogName],
+                null,
+                (string)row[SchemaTableColumn.BaseTableName],
+                null });
+            }
+
+            foreach (DataRow rowIndexes in tblIndexes.Rows)
+            {
+              tblIndexColumns = _command.Connection.GetSchema("IndexColumns", new string[] {
+                (string)row[SchemaTableOptionalColumn.BaseCatalogName],
+                null,
+                (string)row[SchemaTableColumn.BaseTableName],
+                (string)rowIndexes["INDEX_NAME"],
+                null
+                });
+              foreach (DataRow rowColumnIndex in tblIndexColumns.Rows)
+              {
+                if (String.Compare((string)rowColumnIndex["COLUMN_NAME"], strColumn, true, CultureInfo.InvariantCulture) == 0)
+                {
+                  if (tblIndexColumns.Rows.Count == 1 && (bool)row[SchemaTableColumn.AllowDBNull] == false)
+                    row[SchemaTableColumn.IsUnique] = rowIndexes["UNIQUE"];
+
+                  // If its an integer primary key and the only primary key in the table, then its a rowid alias and is autoincrement
+                  // NOTE:  Currently commented out because this is not always the desired behavior.  For example, a 1:1 relationship with
+                  //        another table, where the other table is autoincrement, but this one is not, and uses the rowid from the other.
+                  //        It is safer to only set Autoincrement on tables where we're SURE the user specified AUTOINCREMENT, even if its a rowid column.
+
+                  if (tblIndexColumns.Rows.Count == 1 && (bool)rowIndexes["PRIMARY_KEY"] == true && String.IsNullOrEmpty(dataType) == false &&
+                    String.Compare(dataType, "integer", true, CultureInfo.InvariantCulture) == 0)
+                  {
+                    //  row[SchemaTableOptionalColumn.IsAutoIncrement] = true;
+                  }
+
+                  break;
+                }
+              }
+            }
+          }
+
+          if (String.IsNullOrEmpty(dataType))
+          {
+            TypeAffinity affin;
+            dataType = _activeStatement._sql.ColumnType(_activeStatement, n, out affin);
+          }
+
+          if (String.IsNullOrEmpty(dataType) == false)
+            row["DataTypeName"] = dataType;
+        }
+        tbl.Rows.Add(row);
+      }
+
+      if (_keyInfo != null)
+        _keyInfo.AppendSchemaTable(tbl);
+
+      tbl.AcceptChanges();
+      tbl.EndLoadData();
+
+      return tbl;
+    }
+
+    /// <summary>
+    /// Retrieves the column as a string
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>string</returns>
+    public override string GetString(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetString(i - VisibleFieldCount);
+
+      VerifyType(i, DbType.String);
+      return _activeStatement._sql.GetText(_activeStatement, i);
+    }
+
+    /// <summary>
+    /// Retrieves the column as an object corresponding to the underlying datatype of the column
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>object</returns>
+    public override object GetValue(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.GetValue(i - VisibleFieldCount);
+
+      SQLiteType typ = GetSQLiteType(i);
+
+      return _activeStatement._sql.GetValue(_activeStatement, i, typ);
+    }
+
+    /// <summary>
+    /// Retreives the values of multiple columns, up to the size of the supplied array
+    /// </summary>
+    /// <param name="values">The array to fill with values from the columns in the current resultset</param>
+    /// <returns>The number of columns retrieved</returns>
+    public override int GetValues(object[] values)
+    {
+      int nMax = FieldCount;
+      if (values.Length < nMax) nMax = values.Length;
+
+      for (int n = 0; n < nMax; n++)
+      {
+        values[n] = GetValue(n);
+      }
+
+      return nMax;
+    }
+
+    /// <summary>
+    /// Returns True if the resultset has rows that can be fetched
+    /// </summary>
+    public override bool HasRows
+    {
+      get
+      {
+        CheckClosed();
+        return (_readingState != 1);
+      }
+    }
+
+    /// <summary>
+    /// Returns True if the data reader is closed
+    /// </summary>
+    public override bool IsClosed
+    {
+      get { return (_command == null); }
+    }
+
+    /// <summary>
+    /// Returns True if the specified column is null
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>True or False</returns>
+    public override bool IsDBNull(int i)
+    {
+      if (i >= VisibleFieldCount && _keyInfo != null)
+        return _keyInfo.IsDBNull(i - VisibleFieldCount);
+
+      return _activeStatement._sql.IsNull(_activeStatement, i);
+    }
+
+    /// <summary>
+    /// Moves to the next resultset in multiple row-returning SQL command.
+    /// </summary>
+    /// <returns>True if the command was successful and a new resultset is available, False otherwise.</returns>
+    public override bool NextResult()
+    {
+      CheckClosed();
+
+      SqliteStatement stmt = null;
+      int fieldCount;
+
+      while (true)
+      {
+        if (_activeStatement != null && stmt == null)
+        {
+          // Reset the previously-executed statement
+          _activeStatement._sql.Reset(_activeStatement);
+
+          // If we're only supposed to return a single rowset, step through all remaining statements once until
+          // they are all done and return false to indicate no more resultsets exist.
+          if ((_commandBehavior & CommandBehavior.SingleResult) != 0)
+          {
+            for (; ; )
+            {
+              stmt = _command.GetStatement(_activeStatementIndex + 1);
+              if (stmt == null) break;
+              _activeStatementIndex++;
+
+              stmt._sql.Step(stmt);
+              if (stmt._sql.ColumnCount(stmt) == 0)
+              {
+                if (_rowsAffected == -1) _rowsAffected = 0;
+                _rowsAffected += stmt._sql.Changes;
+              }
+              stmt._sql.Reset(stmt); // Gotta reset after every step to release any locks and such!
+            }
+            return false;
+          }
+        }
+
+        // Get the next statement to execute
+        stmt = _command.GetStatement(_activeStatementIndex + 1);
+
+        // If we've reached the end of the statements, return false, no more resultsets
+        if (stmt == null)
+          return false;
+
+        // If we were on a current resultset, set the state to "done reading" for it
+        if (_readingState < 1)
+          _readingState = 1;
+
+        _activeStatementIndex++;
+
+        fieldCount = stmt._sql.ColumnCount(stmt);
+
+        // If the statement is not a select statement or we're not retrieving schema only, then perform the initial step
+        if ((_commandBehavior & CommandBehavior.SchemaOnly) == 0 || fieldCount == 0)
+        {
+          if (stmt._sql.Step(stmt))
+          {
+            _readingState = -1;
+          }
+          else if (fieldCount == 0) // No rows returned, if fieldCount is zero, skip to the next statement
+          {
+            if (_rowsAffected == -1) _rowsAffected = 0;
+            _rowsAffected += stmt._sql.Changes;
+            stmt._sql.Reset(stmt);
+            continue; // Skip this command and move to the next, it was not a row-returning resultset
+          }
+          else // No rows, fieldCount is non-zero so stop here
+          {
+            _readingState = 1; // This command returned columns but no rows, so return true, but HasRows = false and Read() returns false
+          }
+        }
+
+        // Ahh, we found a row-returning resultset eligible to be returned!
+        _activeStatement = stmt;
+        _fieldCount = fieldCount;
+        _fieldTypeArray = null;
+
+        if ((_commandBehavior & CommandBehavior.KeyInfo) != 0)
+          LoadKeyInfo();
+
+        return true;
+      }
+    }
+
+    /// <summary>
+    /// Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls.
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>A SQLiteType structure</returns>
+    private SQLiteType GetSQLiteType(int i)
+    {
+      SQLiteType typ;
+
+      // Initialize the field types array if not already initialized
+      if (_fieldTypeArray == null)
+        _fieldTypeArray = new SQLiteType[VisibleFieldCount];
+
+      // Initialize this column's field type instance
+      if (_fieldTypeArray[i] == null) _fieldTypeArray[i] = new SQLiteType();
+
+      typ = _fieldTypeArray[i];
+
+      // If not initialized, then fetch the declared column datatype and attempt to convert it 
+      // to a known DbType.
+      if (typ.Affinity == TypeAffinity.Uninitialized)
+        typ.Type = SqliteConvert.TypeNameToDbType(_activeStatement._sql.ColumnType(_activeStatement, i, out typ.Affinity));
+      else
+        typ.Affinity = _activeStatement._sql.ColumnAffinity(_activeStatement, i);
+
+      return typ;
+    }
+
+    /// <summary>
+    /// Reads the next row from the resultset
+    /// </summary>
+    /// <returns>True if a new row was successfully loaded and is ready for processing</returns>
+    public override bool Read()
+    {
+      CheckClosed();
+
+      if (_readingState == -1) // First step was already done at the NextResult() level, so don't step again, just return true.
+      {
+        _readingState = 0;
+        return true;
+      }
+      else if (_readingState == 0) // Actively reading rows
+      {
+        // Don't read a new row if the command behavior dictates SingleRow.  We've already read the first row.
+        if ((_commandBehavior & CommandBehavior.SingleRow) == 0)
+        {
+          if (_activeStatement._sql.Step(_activeStatement) == true)
+          {
+            if (_keyInfo != null)
+              _keyInfo.Reset();
+
+            return true;
+          }
+        }
+
+        _readingState = 1; // Finished reading rows
+      }
+
+      return false;
+    }
+
+    /// <summary>
+    /// Retrieve the count of records affected by an update/insert command.  Only valid once the data reader is closed!
+    /// </summary>
+    public override int RecordsAffected
+    {
+      get { return (_rowsAffected < 0) ? 0 : _rowsAffected; }
+    }
+
+    /// <summary>
+    /// Indexer to retrieve data from a column given its name
+    /// </summary>
+    /// <param name="name">The name of the column to retrieve data for</param>
+    /// <returns>The value contained in the column</returns>
+    public override object this[string name]
+    {
+      get { return GetValue(GetOrdinal(name)); }
+    }
+
+    /// <summary>
+    /// Indexer to retrieve data from a column given its i
+    /// </summary>
+    /// <param name="i">The index of the column to retrieve</param>
+    /// <returns>The value contained in the column</returns>
+    public override object this[int i]
+    {
+      get { return GetValue(i); }
+    }
+
+    private void LoadKeyInfo()
+    {
+      if (_keyInfo != null)
+        _keyInfo.Dispose();
+
+      _keyInfo = new SqliteKeyReader(_command.Connection, this, _activeStatement);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteEnlistment.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteEnlistment.cs
@@ -1,93 +1,93 @@
-/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-#if !PLATFORM_COMPACTFRAMEWORK
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Transactions;
-
-  internal class SQLiteEnlistment : IEnlistmentNotification
-  {
-    internal SqliteTransaction _transaction;
-    internal Transaction _scope;
-    internal bool _disposeConnection;
-
-    internal SQLiteEnlistment(SqliteConnection cnn, Transaction scope)
-    {
-      _transaction = cnn.BeginTransaction();
-      _scope = scope;
-      _disposeConnection = false;
-
-      _scope.EnlistVolatile(this, System.Transactions.EnlistmentOptions.None);
-    }
-
-    private void Cleanup(SqliteConnection cnn)
-    {
-      if (_disposeConnection)
-        cnn.Dispose();
-
-      _transaction = null;
-      _scope = null;
-    }
-
-    #region IEnlistmentNotification Members
-
-    public void Commit(Enlistment enlistment)
-    {
-      SqliteConnection cnn = _transaction.Connection;
-      cnn._enlistment = null;
-
-      try
-      {
-        _transaction.IsValid(true);
-        _transaction.Connection._transactionLevel = 1;
-        _transaction.Commit();
-
-        enlistment.Done();
-      }
-      finally
-      {
-        Cleanup(cnn);
-      }
-    }
-
-    public void InDoubt(Enlistment enlistment)
-    {
-      enlistment.Done();
-    }
-
-    public void Prepare(PreparingEnlistment preparingEnlistment)
-    {
-      if (_transaction.IsValid(false) == false)
-        preparingEnlistment.ForceRollback();
-      else
-        preparingEnlistment.Prepared();
-    }
-
-    public void Rollback(Enlistment enlistment)
-    {
-      SqliteConnection cnn = _transaction.Connection;
-      cnn._enlistment = null;
-
-      try
-      {
-        _transaction.Rollback();
-        enlistment.Done();
-      }
-      finally
-      {
-        Cleanup(cnn);
-      }
-    }
-
-    #endregion
-  }
-}
+/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+#if !PLATFORM_COMPACTFRAMEWORK
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Transactions;
+
+  internal class SQLiteEnlistment : IEnlistmentNotification
+  {
+    internal SqliteTransaction _transaction;
+    internal Transaction _scope;
+    internal bool _disposeConnection;
+
+    internal SQLiteEnlistment(SqliteConnection cnn, Transaction scope)
+    {
+      _transaction = cnn.BeginTransaction();
+      _scope = scope;
+      _disposeConnection = false;
+
+      _scope.EnlistVolatile(this, System.Transactions.EnlistmentOptions.None);
+    }
+
+    private void Cleanup(SqliteConnection cnn)
+    {
+      if (_disposeConnection)
+        cnn.Dispose();
+
+      _transaction = null;
+      _scope = null;
+    }
+
+    #region IEnlistmentNotification Members
+
+    public void Commit(Enlistment enlistment)
+    {
+      SqliteConnection cnn = _transaction.Connection;
+      cnn._enlistment = null;
+
+      try
+      {
+        _transaction.IsValid(true);
+        _transaction.Connection._transactionLevel = 1;
+        _transaction.Commit();
+
+        enlistment.Done();
+      }
+      finally
+      {
+        Cleanup(cnn);
+      }
+    }
+
+    public void InDoubt(Enlistment enlistment)
+    {
+      enlistment.Done();
+    }
+
+    public void Prepare(PreparingEnlistment preparingEnlistment)
+    {
+      if (_transaction.IsValid(false) == false)
+        preparingEnlistment.ForceRollback();
+      else
+        preparingEnlistment.Prepared();
+    }
+
+    public void Rollback(Enlistment enlistment)
+    {
+      SqliteConnection cnn = _transaction.Connection;
+      cnn._enlistment = null;
+
+      try
+      {
+        _transaction.Rollback();
+        enlistment.Done();
+      }
+      finally
+      {
+        Cleanup(cnn);
+      }
+    }
+
+    #endregion
+  }
+}
 #endif // !PLATFORM_COMPACT_FRAMEWORK
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteException.cs
@@ -1,259 +1,259 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Collections.Generic;
-  using System.Text;
-  using System.Data.Common;
-
-#if !PLATFORM_COMPACTFRAMEWORK
-  using System.Runtime.Serialization;
-#endif
-
-  /// <summary>
-  /// SQLite exception class.
-  /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-  [Serializable]
-  public sealed class SqliteException : DbException
-#else
-  public sealed class SqliteException : Exception
-#endif
-  {
-    private SQLiteErrorCode _errorCode;
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    private SqliteException(SerializationInfo info, StreamingContext context)
-      : base(info, context)
-    {
-    }
-#endif
-
-    /// <summary>
-    /// Public constructor for generating a SQLite error given the base error code
-    /// </summary>
-    /// <param name="errorCode">The SQLite error code to report</param>
-    /// <param name="extendedInformation">Extra text to go along with the error message text</param>
-    public SqliteException(int errorCode, string extendedInformation)
-      : base(GetStockErrorMessage(errorCode, extendedInformation))
-    {
-      _errorCode = (SQLiteErrorCode)errorCode;
-    }
-
-    /// <summary>
-    /// Various public constructors that just pass along to the base Exception
-    /// </summary>
-    /// <param name="message">Passed verbatim to Exception</param>
-    public SqliteException(string message)
-      : base(message)
-    {
-    }
-
-    /// <summary>
-    /// Various public constructors that just pass along to the base Exception
-    /// </summary>
-    public SqliteException()
-    {
-    }
-
-    /// <summary>
-    /// Various public constructors that just pass along to the base Exception
-    /// <param name="message">Passed to Exception</param>
-    /// <param name="innerException">Passed to Exception</param>
-    /// </summary>
-    public SqliteException(string message, Exception innerException)
-      : base(message, innerException)
-    {
-    }
-
-    /// <summary>
-    /// Retrieves the underlying SQLite error code for this exception
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    public new SQLiteErrorCode ErrorCode
-#else
-    public SQLiteErrorCode ErrorCode
-#endif
-    {
-      get { return _errorCode; }
-    }
-
-    /// <summary>
-    /// Initializes the exception class with the SQLite error code.
-    /// </summary>
-    /// <param name="errorCode">The SQLite error code</param>
-    /// <param name="errorMessage">A detailed error message</param>
-    /// <returns>An error message string</returns>
-    private static string GetStockErrorMessage(int errorCode, string errorMessage)
-    {
-      if (errorMessage == null) errorMessage = "";
-
-      if (errorMessage.Length > 0)
-        errorMessage = "\r\n" + errorMessage;
-
-      if (errorCode < 0 || errorCode >= _errorMessages.Length)
-        errorCode = 1;
-
-      return _errorMessages[errorCode] + errorMessage;
-    }
-
-    private static string[] _errorMessages = {
-      "SQLite OK",
-      "SQLite error",
-      "An internal logic error in SQLite",
-      "Access permission denied",
-      "Callback routine requested an abort",
-      "The database file is locked",
-      "A table in the database is locked",
-      "malloc() failed",
-      "Attempt to write a read-only database",
-      "Operation terminated by sqlite3_interrupt()",
-      "Some kind of disk I/O error occurred",
-      "The database disk image is malformed",
-      "Table or record not found",
-      "Insertion failed because the database is full",
-      "Unable to open the database file",
-      "Database lock protocol error",
-      "Database is empty",
-      "The database schema changed",
-      "Too much data for one row of a table",
-      "Abort due to constraint violation",
-      "Data type mismatch",
-      "Library used incorrectly",
-      "Uses OS features not supported on host",
-      "Authorization denied",
-      "Auxiliary database format error",
-      "2nd parameter to sqlite3_bind() out of range",
-      "File opened that is not a database file",
-    };
-  }
-
-  /// <summary>
-  /// SQLite error codes
-  /// </summary>
-  public enum SQLiteErrorCode
-  {
-    /// <summary>
-    /// Success
-    /// </summary>
-    Ok = 0,
-    /// <summary>
-    /// SQL error or missing database
-    /// </summary>
-    Error,
-    /// <summary>
-    /// Internal logic error in SQLite
-    /// </summary>
-    Internal,
-    /// <summary>
-    /// Access permission denied
-    /// </summary>
-    Perm,
-    /// <summary>
-    /// Callback routine requested an abort
-    /// </summary>
-    Abort,
-    /// <summary>
-    /// The database file is locked
-    /// </summary>
-    Busy,
-    /// <summary>
-    /// A table in the database is locked
-    /// </summary>
-    Locked,
-    /// <summary>
-    /// malloc() failed
-    /// </summary>
-    NoMem,
-    /// <summary>
-    /// Attempt to write a read-only database
-    /// </summary>
-    ReadOnly,
-    /// <summary>
-    /// Operation terminated by sqlite3_interrupt()
-    /// </summary>
-    Interrupt,
-    /// <summary>
-    /// Some kind of disk I/O error occurred
-    /// </summary>
-    IOErr,
-    /// <summary>
-    /// The database disk image is malformed
-    /// </summary>
-    Corrupt,
-    /// <summary>
-    /// Table or record not found
-    /// </summary>
-    NotFound,
-    /// <summary>
-    /// Insertion failed because database is full
-    /// </summary>
-    Full,
-    /// <summary>
-    /// Unable to open the database file
-    /// </summary>
-    CantOpen,
-    /// <summary>
-    /// Database lock protocol error
-    /// </summary>
-    Protocol,
-    /// <summary>
-    /// Database is empty
-    /// </summary>
-    Empty,
-    /// <summary>
-    /// The database schema changed
-    /// </summary>
-    Schema,
-    /// <summary>
-    /// Too much data for one row of a table
-    /// </summary>
-    TooBig,
-    /// <summary>
-    /// Abort due to constraint violation
-    /// </summary>
-    Constraint,
-    /// <summary>
-    /// Data type mismatch
-    /// </summary>
-    Mismatch,
-    /// <summary>
-    /// Library used incorrectly
-    /// </summary>
-    Misuse,
-    /// <summary>
-    /// Uses OS features not supported on host
-    /// </summary>
-    NOLFS,
-    /// <summary>
-    /// Authorization denied
-    /// </summary>
-    Auth,
-    /// <summary>
-    /// Auxiliary database format error
-    /// </summary>
-    Format,
-    /// <summary>
-    /// 2nd parameter to sqlite3_bind out of range
-    /// </summary>
-    Range,
-    /// <summary>
-    /// File opened that is not a database file
-    /// </summary>
-    NotADatabase,
-    /// <summary>
-    /// sqlite3_step() has another row ready
-    /// </summary>
-    Row = 100,
-    /// <summary>
-    /// sqlite3_step() has finished executing
-    /// </summary>
-    Done = 101,
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Collections.Generic;
+  using System.Text;
+  using System.Data.Common;
+
+#if !PLATFORM_COMPACTFRAMEWORK
+  using System.Runtime.Serialization;
+#endif
+
+  /// <summary>
+  /// SQLite exception class.
+  /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+  [Serializable]
+  public sealed class SqliteException : DbException
+#else
+  public sealed class SqliteException : Exception
+#endif
+  {
+    private SQLiteErrorCode _errorCode;
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    private SqliteException(SerializationInfo info, StreamingContext context)
+      : base(info, context)
+    {
+    }
+#endif
+
+    /// <summary>
+    /// Public constructor for generating a SQLite error given the base error code
+    /// </summary>
+    /// <param name="errorCode">The SQLite error code to report</param>
+    /// <param name="extendedInformation">Extra text to go along with the error message text</param>
+    public SqliteException(int errorCode, string extendedInformation)
+      : base(GetStockErrorMessage(errorCode, extendedInformation))
+    {
+      _errorCode = (SQLiteErrorCode)errorCode;
+    }
+
+    /// <summary>
+    /// Various public constructors that just pass along to the base Exception
+    /// </summary>
+    /// <param name="message">Passed verbatim to Exception</param>
+    public SqliteException(string message)
+      : base(message)
+    {
+    }
+
+    /// <summary>
+    /// Various public constructors that just pass along to the base Exception
+    /// </summary>
+    public SqliteException()
+    {
+    }
+
+    /// <summary>
+    /// Various public constructors that just pass along to the base Exception
+    /// <param name="message">Passed to Exception</param>
+    /// <param name="innerException">Passed to Exception</param>
+    /// </summary>
+    public SqliteException(string message, Exception innerException)
+      : base(message, innerException)
+    {
+    }
+
+    /// <summary>
+    /// Retrieves the underlying SQLite error code for this exception
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    public new SQLiteErrorCode ErrorCode
+#else
+    public SQLiteErrorCode ErrorCode
+#endif
+    {
+      get { return _errorCode; }
+    }
+
+    /// <summary>
+    /// Initializes the exception class with the SQLite error code.
+    /// </summary>
+    /// <param name="errorCode">The SQLite error code</param>
+    /// <param name="errorMessage">A detailed error message</param>
+    /// <returns>An error message string</returns>
+    private static string GetStockErrorMessage(int errorCode, string errorMessage)
+    {
+      if (errorMessage == null) errorMessage = "";
+
+      if (errorMessage.Length > 0)
+        errorMessage = "\r\n" + errorMessage;
+
+      if (errorCode < 0 || errorCode >= _errorMessages.Length)
+        errorCode = 1;
+
+      return _errorMessages[errorCode] + errorMessage;
+    }
+
+    private static string[] _errorMessages = {
+      "SQLite OK",
+      "SQLite error",
+      "An internal logic error in SQLite",
+      "Access permission denied",
+      "Callback routine requested an abort",
+      "The database file is locked",
+      "A table in the database is locked",
+      "malloc() failed",
+      "Attempt to write a read-only database",
+      "Operation terminated by sqlite3_interrupt()",
+      "Some kind of disk I/O error occurred",
+      "The database disk image is malformed",
+      "Table or record not found",
+      "Insertion failed because the database is full",
+      "Unable to open the database file",
+      "Database lock protocol error",
+      "Database is empty",
+      "The database schema changed",
+      "Too much data for one row of a table",
+      "Abort due to constraint violation",
+      "Data type mismatch",
+      "Library used incorrectly",
+      "Uses OS features not supported on host",
+      "Authorization denied",
+      "Auxiliary database format error",
+      "2nd parameter to sqlite3_bind() out of range",
+      "File opened that is not a database file",
+    };
+  }
+
+  /// <summary>
+  /// SQLite error codes
+  /// </summary>
+  public enum SQLiteErrorCode
+  {
+    /// <summary>
+    /// Success
+    /// </summary>
+    Ok = 0,
+    /// <summary>
+    /// SQL error or missing database
+    /// </summary>
+    Error,
+    /// <summary>
+    /// Internal logic error in SQLite
+    /// </summary>
+    Internal,
+    /// <summary>
+    /// Access permission denied
+    /// </summary>
+    Perm,
+    /// <summary>
+    /// Callback routine requested an abort
+    /// </summary>
+    Abort,
+    /// <summary>
+    /// The database file is locked
+    /// </summary>
+    Busy,
+    /// <summary>
+    /// A table in the database is locked
+    /// </summary>
+    Locked,
+    /// <summary>
+    /// malloc() failed
+    /// </summary>
+    NoMem,
+    /// <summary>
+    /// Attempt to write a read-only database
+    /// </summary>
+    ReadOnly,
+    /// <summary>
+    /// Operation terminated by sqlite3_interrupt()
+    /// </summary>
+    Interrupt,
+    /// <summary>
+    /// Some kind of disk I/O error occurred
+    /// </summary>
+    IOErr,
+    /// <summary>
+    /// The database disk image is malformed
+    /// </summary>
+    Corrupt,
+    /// <summary>
+    /// Table or record not found
+    /// </summary>
+    NotFound,
+    /// <summary>
+    /// Insertion failed because database is full
+    /// </summary>
+    Full,
+    /// <summary>
+    /// Unable to open the database file
+    /// </summary>
+    CantOpen,
+    /// <summary>
+    /// Database lock protocol error
+    /// </summary>
+    Protocol,
+    /// <summary>
+    /// Database is empty
+    /// </summary>
+    Empty,
+    /// <summary>
+    /// The database schema changed
+    /// </summary>
+    Schema,
+    /// <summary>
+    /// Too much data for one row of a table
+    /// </summary>
+    TooBig,
+    /// <summary>
+    /// Abort due to constraint violation
+    /// </summary>
+    Constraint,
+    /// <summary>
+    /// Data type mismatch
+    /// </summary>
+    Mismatch,
+    /// <summary>
+    /// Library used incorrectly
+    /// </summary>
+    Misuse,
+    /// <summary>
+    /// Uses OS features not supported on host
+    /// </summary>
+    NOLFS,
+    /// <summary>
+    /// Authorization denied
+    /// </summary>
+    Auth,
+    /// <summary>
+    /// Auxiliary database format error
+    /// </summary>
+    Format,
+    /// <summary>
+    /// 2nd parameter to sqlite3_bind out of range
+    /// </summary>
+    Range,
+    /// <summary>
+    /// File opened that is not a database file
+    /// </summary>
+    NotADatabase,
+    /// <summary>
+    /// sqlite3_step() has another row ready
+    /// </summary>
+    Row = 100,
+    /// <summary>
+    /// sqlite3_step() has finished executing
+    /// </summary>
+    Done = 101,
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteFactory.cs
@@ -1,79 +1,79 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data.Common;
-
-#if !PLATFORM_COMPACTFRAMEWORK
-  /// <summary>
-  /// SQLite implementation of DbProviderFactory.
-  /// </summary>
-  public sealed partial class SqliteFactory : DbProviderFactory
-  {
-    /// <summary>
-    /// Static instance member which returns an instanced SqliteFactory class.
-    /// </summary>
-    public static readonly SqliteFactory Instance = new SqliteFactory();
-
-    /// <summary>
-    /// Returns a new SqliteCommand object.
-    /// </summary>
-    /// <returns>A SqliteCommand object.</returns>
-    public override DbCommand CreateCommand()
-    {
-      return new SqliteCommand();
-    }
-
-    /// <summary>
-    /// Returns a new SqliteCommandBuilder object.
-    /// </summary>
-    /// <returns>A SqliteCommandBuilder object.</returns>
-    public override DbCommandBuilder CreateCommandBuilder()
-    {
-      return new SqliteCommandBuilder();
-    }
-
-    /// <summary>
-    /// Creates a new SqliteConnection.
-    /// </summary>
-    /// <returns>A SqliteConnection object.</returns>
-    public override DbConnection CreateConnection()
-    {
-      return new SqliteConnection();
-    }
-
-    /// <summary>
-    /// Creates a new SqliteConnectionStringBuilder.
-    /// </summary>
-    /// <returns>A SqliteConnectionStringBuilder object.</returns>
-    public override DbConnectionStringBuilder CreateConnectionStringBuilder()
-    {
-      return new SqliteConnectionStringBuilder();
-    }
-
-    /// <summary>
-    /// Creates a new SqliteDataAdapter.
-    /// </summary>
-    /// <returns>A SqliteDataAdapter object.</returns>
-    public override DbDataAdapter CreateDataAdapter()
-    {
-      return new SqliteDataAdapter();
-    }
-
-    /// <summary>
-    /// Creates a new SqliteParameter.
-    /// </summary>
-    /// <returns>A SqliteParameter object.</returns>
-    public override DbParameter CreateParameter()
-    {
-      return new SqliteParameter();
-    }
-  }
-#endif
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data.Common;
+
+#if !PLATFORM_COMPACTFRAMEWORK
+  /// <summary>
+  /// SQLite implementation of DbProviderFactory.
+  /// </summary>
+  public sealed partial class SqliteFactory : DbProviderFactory
+  {
+    /// <summary>
+    /// Static instance member which returns an instanced SqliteFactory class.
+    /// </summary>
+    public static readonly SqliteFactory Instance = new SqliteFactory();
+
+    /// <summary>
+    /// Returns a new SqliteCommand object.
+    /// </summary>
+    /// <returns>A SqliteCommand object.</returns>
+    public override DbCommand CreateCommand()
+    {
+      return new SqliteCommand();
+    }
+
+    /// <summary>
+    /// Returns a new SqliteCommandBuilder object.
+    /// </summary>
+    /// <returns>A SqliteCommandBuilder object.</returns>
+    public override DbCommandBuilder CreateCommandBuilder()
+    {
+      return new SqliteCommandBuilder();
+    }
+
+    /// <summary>
+    /// Creates a new SqliteConnection.
+    /// </summary>
+    /// <returns>A SqliteConnection object.</returns>
+    public override DbConnection CreateConnection()
+    {
+      return new SqliteConnection();
+    }
+
+    /// <summary>
+    /// Creates a new SqliteConnectionStringBuilder.
+    /// </summary>
+    /// <returns>A SqliteConnectionStringBuilder object.</returns>
+    public override DbConnectionStringBuilder CreateConnectionStringBuilder()
+    {
+      return new SqliteConnectionStringBuilder();
+    }
+
+    /// <summary>
+    /// Creates a new SqliteDataAdapter.
+    /// </summary>
+    /// <returns>A SqliteDataAdapter object.</returns>
+    public override DbDataAdapter CreateDataAdapter()
+    {
+      return new SqliteDataAdapter();
+    }
+
+    /// <summary>
+    /// Creates a new SqliteParameter.
+    /// </summary>
+    /// <returns>A SqliteParameter object.</returns>
+    public override DbParameter CreateParameter()
+    {
+      return new SqliteParameter();
+    }
+  }
+#endif
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteFunction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteFunction.cs
@@ -1,710 +1,710 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Collections;
-  using System.Collections.Generic;
-  using System.Runtime.InteropServices;
-  using System.Globalization;
-
-  /// <summary>
-  /// This abstract class is designed to handle user-defined functions easily.  An instance of the derived class is made for each
-  /// connection to the database.
-  /// </summary>
-  /// <remarks>
-  /// Although there is one instance of a class derived from SqliteFunction per database connection, the derived class has no access
-  /// to the underlying connection.  This is necessary to deter implementers from thinking it would be a good idea to make database
-  /// calls during processing.
-  /// 
-  /// It is important to distinguish between a per-connection instance, and a per-SQL statement context.  One instance of this class
-  /// services all SQL statements being stepped through on that connection, and there can be many.  One should never store per-statement
-  /// information in member variables of user-defined function classes.
-  /// 
-  /// For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step.  This data will
-  /// be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes.
-  /// </remarks>
-  public abstract class SqliteFunction : IDisposable
-  {
-    private class AggregateData
-    {
-      internal int _count = 1;
-      internal object _data = null;
-    }
-
-    /// <summary>
-    /// The base connection this function is attached to
-    /// </summary>
-    internal SQLiteBase              _base;
-
-    /// <summary>
-    /// Internal array used to keep track of aggregate function context data
-    /// </summary>
-    private Dictionary<long, AggregateData> _contextDataList;
-
-    /// <summary>
-    /// Holds a reference to the callback function for user functions
-    /// </summary>
-    private SQLiteCallback  _InvokeFunc;
-    /// <summary>
-    /// Holds a reference to the callbakc function for stepping in an aggregate function
-    /// </summary>
-    private SQLiteCallback  _StepFunc;
-    /// <summary>
-    /// Holds a reference to the callback function for finalizing an aggregate function
-    /// </summary>
-    private SQLiteFinalCallback  _FinalFunc;
-    /// <summary>
-    /// Holds a reference to the callback function for collation sequences
-    /// </summary>
-    private SQLiteCollation _CompareFunc;
-
-    private SQLiteCollation _CompareFunc16;
-
-    /// <summary>
-    /// Current context of the current callback.  Only valid during a callback
-    /// </summary>
-    internal IntPtr _context;
-
-    /// <summary>
-    /// This static list contains all the user-defined functions declared using the proper attributes.
-    /// </summary>
-    private static List<SqliteFunctionAttribute> _registeredFunctions = new List<SqliteFunctionAttribute>();
-
-    /// <summary>
-    /// Internal constructor, initializes the function's internal variables.
-    /// </summary>
-    protected SqliteFunction()
-    {
-      _contextDataList = new Dictionary<long, AggregateData>();
-    }
-
-    /// <summary>
-    /// Returns a reference to the underlying connection's SqliteConvert class, which can be used to convert
-    /// strings and DateTime's into the current connection's encoding schema.
-    /// </summary>
-    public SqliteConvert SqliteConvert
-    {
-      get
-      {
-        return _base;
-      }
-    }
-
-    /// <summary>
-    /// Scalar functions override this method to do their magic.
-    /// </summary>
-    /// <remarks>
-    /// Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available
-    /// to force them into a certain type.  Therefore the only types you will ever see as parameters are
-    /// DBNull.Value, Int64, Double, String or byte[] array.
-    /// </remarks>
-    /// <param name="args">The arguments for the command to process</param>
-    /// <returns>You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or
-    /// you may return an Exception-derived class if you wish to return an error to SQLite.  Do not actually throw the error,
-    /// just return it!</returns>
-    public virtual object Invoke(object[] args)
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// Aggregate functions override this method to do their magic.
-    /// </summary>
-    /// <remarks>
-    /// Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible.
-    /// </remarks>
-    /// <param name="args">The arguments for the command to process</param>
-    /// <param name="stepNumber">The 1-based step number.  This is incrememted each time the step method is called.</param>
-    /// <param name="contextData">A placeholder for implementers to store contextual data pertaining to the current context.</param>
-    public virtual void Step(object[] args, int stepNumber, ref object contextData)
-    {
-    }
-
-    /// <summary>
-    /// Aggregate functions override this method to finish their aggregate processing.
-    /// </summary>
-    /// <remarks>
-    /// If you implemented your aggregate function properly,
-    /// you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have
-    /// all the information you need in there to figure out what to return.
-    /// NOTE:  It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will
-    /// be null.  This can happen when no rows were returned.  You can either return null, or 0 or some other custom return value
-    /// if that is the case.
-    /// </remarks>
-    /// <param name="contextData">Your own assigned contextData, provided for you so you can return your final results.</param>
-    /// <returns>You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or
-    /// you may return an Exception-derived class if you wish to return an error to SQLite.  Do not actually throw the error,
-    /// just return it!
-    /// </returns>
-    public virtual object Final(object contextData)
-    {
-      return null;
-    }
-
-    /// <summary>
-    /// User-defined collation sequences override this method to provide a custom string sorting algorithm.
-    /// </summary>
-    /// <param name="param1">The first string to compare</param>
-    /// <param name="param2">The second strnig to compare</param>
-    /// <returns>1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2</returns>
-    public virtual int Compare(string param1, string param2)
-    {
-      return 0;
-    }
-
-    /// <summary>
-    /// Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to.
-    /// </summary>
-    /// <remarks>
-    /// Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available
-    /// to force them into a certain type.  Therefore the only types you will ever see as parameters are
-    /// DBNull.Value, Int64, Double, String or byte[] array.
-    /// </remarks>
-    /// <param name="nArgs">The number of arguments</param>
-    /// <param name="argsptr">A pointer to the array of arguments</param>
-    /// <returns>An object array of the arguments once they've been converted to .NET values</returns>
-    internal object[] ConvertParams(int nArgs, IntPtr argsptr)
-    {
-      object[] parms = new object[nArgs];
-#if !PLATFORM_COMPACTFRAMEWORK
-      IntPtr[] argint = new IntPtr[nArgs];
-#else
-      int[] argint = new int[nArgs];
-#endif
-      Marshal.Copy(argsptr, argint, 0, nArgs);
-
-      for (int n = 0; n < nArgs; n++)
-      {
-        switch (_base.GetParamValueType((IntPtr)argint[n]))
-        {
-          case TypeAffinity.Null:
-            parms[n] = DBNull.Value;
-            break;
-          case TypeAffinity.Int64:
-            parms[n] = _base.GetParamValueInt64((IntPtr)argint[n]);
-            break;
-          case TypeAffinity.Double:
-            parms[n] = _base.GetParamValueDouble((IntPtr)argint[n]);
-            break;
-          case TypeAffinity.Text:
-            parms[n] = _base.GetParamValueText((IntPtr)argint[n]);
-            break;
-          case TypeAffinity.Blob:
-            {
-              int x;
-              byte[] blob;
-
-              x = (int)_base.GetParamValueBytes((IntPtr)argint[n], 0, null, 0, 0);
-              blob = new byte[x];
-              _base.GetParamValueBytes((IntPtr)argint[n], 0, blob, 0, x);
-              parms[n] = blob;
-            }
-            break;
-          case TypeAffinity.DateTime: // Never happens here but what the heck, maybe it will one day.
-            parms[n] = _base.ToDateTime(_base.GetParamValueText((IntPtr)argint[n]));
-            break;
-        }
-      }
-      return parms;
-    }
-
-    /// <summary>
-    /// Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context.
-    /// </summary>
-    /// <param name="context">The context the return value applies to</param>
-    /// <param name="returnValue">The parameter to return to SQLite</param>
-    void SetReturnValue(IntPtr context, object returnValue)
-    {
-      if (returnValue == null || returnValue == DBNull.Value)
-      {
-        _base.ReturnNull(context);
-        return;
-      }
-
-      Type t = returnValue.GetType();
-      if (t == typeof(DateTime))
-      {
-        _base.ReturnText(context, _base.ToString((DateTime)returnValue));
-        return;
-      }
-      else
-      {
-        Exception r = returnValue as Exception;
-
-        if (r != null)
-        {
-          _base.ReturnError(context, r.Message);
-          return;
-        }
-      }
-
-      switch (SqliteConvert.TypeToAffinity(t))
-      {
-        case TypeAffinity.Null:
-          _base.ReturnNull(context);
-          return;
-        case TypeAffinity.Int64:
-          _base.ReturnInt64(context, Convert.ToInt64(returnValue, CultureInfo.CurrentCulture));
-          return;
-        case TypeAffinity.Double:
-          _base.ReturnDouble(context, Convert.ToDouble(returnValue, CultureInfo.CurrentCulture));
-          return;
-        case TypeAffinity.Text:
-          _base.ReturnText(context, returnValue.ToString());
-          return;
-        case TypeAffinity.Blob:
-          _base.ReturnBlob(context, (byte[])returnValue);
-          return;
-      }
-    }
-
-    /// <summary>
-    /// Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method.
-    /// </summary>
-    /// <param name="context">A raw context pointer</param>
-    /// <param name="nArgs">Number of arguments passed in</param>
-    /// <param name="argsptr">A pointer to the array of arguments</param>
-    internal void ScalarCallback(IntPtr context, int nArgs, IntPtr argsptr)
-    {
-      _context = context;
-      SetReturnValue(context, Invoke(ConvertParams(nArgs, argsptr)));
-    }
-
-    /// <summary>
-    /// Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function.
-    /// </summary>
-    /// <param name="ptr">Not used</param>
-    /// <param name="len1">Length of the string pv1</param>
-    /// <param name="ptr1">Pointer to the first string to compare</param>
-    /// <param name="len2">Length of the string pv2</param>
-    /// <param name="ptr2">Pointer to the second string to compare</param>
-    /// <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
-    /// than the second.</returns>
-    internal int CompareCallback(IntPtr ptr, int len1, IntPtr ptr1, int len2, IntPtr ptr2)
-    {
-      return Compare(SqliteConvert.UTF8ToString(ptr1, len1), SqliteConvert.UTF8ToString(ptr2, len2));
-    }
-
-    internal int CompareCallback16(IntPtr ptr, int len1, IntPtr ptr1, int len2, IntPtr ptr2)
-    {
-      return Compare(SQLite3_UTF16.UTF16ToString(ptr1, len1), SQLite3_UTF16.UTF16ToString(ptr2, len2));
-    }
-
-    /// <summary>
-    /// The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method.
-    /// </summary>
-    /// <remarks>
-    /// This function takes care of doing the lookups and getting the important information put together to call the Step() function.
-    /// That includes pulling out the user's contextData and updating it after the call is made.  We use a sorted list for this so
-    /// binary searches can be done to find the data.
-    /// </remarks>
-    /// <param name="context">A raw context pointer</param>
-    /// <param name="nArgs">Number of arguments passed in</param>
-    /// <param name="argsptr">A pointer to the array of arguments</param>
-    internal void StepCallback(IntPtr context, int nArgs, IntPtr argsptr)
-    {
-      long nAux;
-      AggregateData data;
-
-      nAux = (long)_base.AggregateContext(context);
-      if (_contextDataList.TryGetValue(nAux, out data) == false)
-      {
-        data = new AggregateData();
-        _contextDataList[nAux] = data;
-      }
-
-      try
-      {
-        _context = context;
-        Step(ConvertParams(nArgs, argsptr), data._count, ref data._data);
-      }
-      finally
-      {
-        data._count++;
-      }
-    }
-
-    /// <summary>
-    /// An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method.
-    /// </summary>
-    /// <param name="context">A raw context pointer</param>
-    internal void FinalCallback(IntPtr context)
-    {
-      long n = (long)_base.AggregateContext(context);
-      object obj = null;
-
-      if (_contextDataList.ContainsKey(n))
-      {
-        obj = _contextDataList[n]._data;
-        _contextDataList.Remove(n);
-      }
-
-      _context = context;
-      SetReturnValue(context, Final(obj));
-
-      IDisposable disp = obj as IDisposable;
-      if (disp != null) disp.Dispose();
-    }
-
-    /// <summary>
-    /// Placeholder for a user-defined disposal routine
-    /// </summary>
-    /// <param name="disposing">True if the object is being disposed explicitly</param>
-    protected virtual void Dispose(bool disposing)
-    {
-      if (disposing)
-      {
-        IDisposable disp;
-
-        foreach (KeyValuePair<long, AggregateData> kv in _contextDataList)
-        {
-          disp = kv.Value._data as IDisposable;
-          if (disp != null)
-            disp.Dispose();
-        }
-        _contextDataList.Clear();
-
-        _InvokeFunc = null;
-        _StepFunc = null;
-        _FinalFunc = null;
-        _CompareFunc = null;
-        _base = null;
-        _contextDataList = null;
-      }
-    }
-
-    /// <summary>
-    /// Disposes of any active contextData variables that were not automatically cleaned up.  Sometimes this can happen if
-    /// someone closes the connection while a DataReader is open.
-    /// </summary>
-    public void Dispose()
-    {
-      Dispose(true);
-    }
-
-    /// <summary>
-    /// Using reflection, enumerate all assemblies in the current appdomain looking for classes that
-    /// have a SqliteFunctionAttribute attribute, and registering them accordingly.
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [global::System.Security.Permissions.FileIOPermission(global::System.Security.Permissions.SecurityAction.Assert, AllFiles = global::System.Security.Permissions.FileIOPermissionAccess.PathDiscovery)]
-#endif
-    static SqliteFunction()
-    {
-      try
-      {
-#if !PLATFORM_COMPACTFRAMEWORK
-        SqliteFunctionAttribute at;
-        System.Reflection.Assembly[] arAssemblies = System.AppDomain.CurrentDomain.GetAssemblies();
-        int w = arAssemblies.Length;
-        System.Reflection.AssemblyName sqlite = System.Reflection.Assembly.GetCallingAssembly().GetName();
-
-        for (int n = 0; n < w; n++)
-        {
-          Type[] arTypes;
-          bool found = false;
-          System.Reflection.AssemblyName[] references;
-          try
-          {
-            // Inspect only assemblies that reference SQLite
-            references = arAssemblies[n].GetReferencedAssemblies();
-            int t = references.Length;
-            for (int z = 0; z < t; z++)
-            {
-              if (references[z].Name == sqlite.Name)
-              {
-                found = true;
-                break;
-              }
-            }
-
-            if (found == false)
-              continue;
-
-            arTypes = arAssemblies[n].GetTypes();
-          }
-          catch (global::System.Reflection.ReflectionTypeLoadException e)
-          {
-            arTypes = e.Types;
-          }
-
-          int v = arTypes.Length;
-          for (int x = 0; x < v; x++)
-          {
-            if (arTypes[x] == null) continue;
-
-            object[] arAtt = arTypes[x].GetCustomAttributes(typeof(SqliteFunctionAttribute), false);
-            int u = arAtt.Length;
-            for (int y = 0; y < u; y++)
-            {
-              at = arAtt[y] as SqliteFunctionAttribute;
-              if (at != null)
-              {
-                at._instanceType = arTypes[x];
-                _registeredFunctions.Add(at);
-              }
-            }
-          }
-        }
-#endif
-      }
-      catch // SQLite provider can continue without being able to find built-in functions
-      {
-      }
-    }
-    /// <summary>
-    /// Manual method of registering a function.  The type must still have the SqliteFunctionAttributes in order to work
-    /// properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported.
-    /// </summary>
-    /// <param name="typ">The type of the function to register</param>
-    public static void RegisterFunction(Type typ)
-    {
-      object[] arAtt = typ.GetCustomAttributes(typeof(SqliteFunctionAttribute), false);
-      int u = arAtt.Length;
-      SqliteFunctionAttribute at;
-
-      for (int y = 0; y < u; y++)
-      {
-        at = arAtt[y] as SqliteFunctionAttribute;
-        if (at != null)
-        {
-          at._instanceType = typ;
-          _registeredFunctions.Add(at);
-        }
-      }
-    }
-
-    /// <summary>
-    /// Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection.
-    /// It is done this way so that all user-defined functions will access the database using the same encoding scheme
-    /// as the connection (UTF-8 or UTF-16).
-    /// </summary>
-    /// <remarks>
-    /// The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to
-    /// all the wrapped callback functions.  The interop function uses it to map CDecl callbacks to StdCall callbacks.
-    /// </remarks>
-    /// <param name="sqlbase">The base object on which the functions are to bind</param>
-    /// <returns>Returns an array of functions which the connection object should retain until the connection is closed.</returns>
-    internal static SqliteFunction[] BindFunctions(SQLiteBase sqlbase)
-    {
-      SqliteFunction f;
-      List<SqliteFunction> lFunctions = new List<SqliteFunction>();
-
-      foreach (SqliteFunctionAttribute pr in _registeredFunctions)
-      {
-        f = (SqliteFunction)Activator.CreateInstance(pr._instanceType);
-        f._base = sqlbase;
-        f._InvokeFunc = (pr.FuncType == FunctionType.Scalar) ? new SQLiteCallback(f.ScalarCallback) : null;
-        f._StepFunc = (pr.FuncType == FunctionType.Aggregate) ? new SQLiteCallback(f.StepCallback) : null;
-        f._FinalFunc = (pr.FuncType == FunctionType.Aggregate) ? new SQLiteFinalCallback(f.FinalCallback) : null;
-        f._CompareFunc = (pr.FuncType == FunctionType.Collation) ? new SQLiteCollation(f.CompareCallback) : null;
-        f._CompareFunc16 = (pr.FuncType == FunctionType.Collation) ? new SQLiteCollation(f.CompareCallback16) : null;
-
-        if (pr.FuncType != FunctionType.Collation)
-          sqlbase.CreateFunction(pr.Name, pr.Arguments, (f is SqliteFunctionEx), f._InvokeFunc, f._StepFunc, f._FinalFunc);
-        else {
-#if MONOTOUCH
-          GCHandle handle = GCHandle.Alloc (f);
-          sqlbase.CreateCollation(pr.Name, collation_callback, collation_callback16, GCHandle.ToIntPtr (handle));
-#else
-          sqlbase.CreateCollation(pr.Name, f._CompareFunc, f._CompareFunc16, IntPtr.Zero);
-#endif
-        }
-
-
-        lFunctions.Add(f);
-      }
-
-      SqliteFunction[] arFunctions = new SqliteFunction[lFunctions.Count];
-      lFunctions.CopyTo(arFunctions, 0);
-
-      return arFunctions;
-    }
-
-#if MONOTOUCH
-    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteCollation))]
-    internal static int collation_callback (IntPtr puser, int len1, IntPtr pv1, int len2, IntPtr pv2)
-    {
-      var handle = GCHandle.FromIntPtr (puser);
-      var func = (SqliteFunction) handle.Target;
-      return func._CompareFunc (IntPtr.Zero, len1, pv1, len2, pv2);
-    }
-
-    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteCollation))]
-    internal static int collation_callback16 (IntPtr puser, int len1, IntPtr pv1, int len2, IntPtr pv2)
-    {
-      var handle = GCHandle.FromIntPtr (puser);
-      var func = (SqliteFunction) handle.Target;
-      return func._CompareFunc16 (IntPtr.Zero, len1, pv1, len2, pv2);
-    }
-#endif
-  }
-
-  /// <summary>
-  /// Extends SqliteFunction and allows an inherited class to obtain the collating sequence associated with a function call.
-  /// </summary>
-  /// <remarks>
-  /// User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays.
-  /// </remarks>
-  public class SqliteFunctionEx : SqliteFunction
-  {
-    /// <summary>
-    /// Obtains the collating sequence in effect for the given function.
-    /// </summary>
-    /// <returns></returns>
-    protected CollationSequence GetCollationSequence()
-    {
-      return _base.GetCollationSequence(this, _context);
-    }
-  }
-
-  /// <summary>
-  /// The type of user-defined function to declare
-  /// </summary>
-  public enum FunctionType
-  {
-    /// <summary>
-    /// Scalar functions are designed to be called and return a result immediately.  Examples include ABS(), Upper(), Lower(), etc.
-    /// </summary>
-    Scalar = 0,
-    /// <summary>
-    /// Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data.
-    /// Examples include SUM(), COUNT(), AVG(), etc.
-    /// </summary>
-    Aggregate = 1,
-    /// <summary>
-    /// Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause.  Typically text in an ORDER BY is
-    /// sorted using a straight case-insensitive comparison function.  Custom collating sequences can be used to alter the behavior of text sorting
-    /// in a user-defined manner.
-    /// </summary>
-    Collation = 2,
-  }
-
-  /// <summary>
-  /// An internal callback delegate declaration.
-  /// </summary>
-  /// <param name="context">Raw context pointer for the user function</param>
-  /// <param name="nArgs">Count of arguments to the function</param>
-  /// <param name="argsptr">A pointer to the array of argument pointers</param>
-#if !PLATFORM_COMPACTFRAMEWORK
-  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-#endif
-  internal delegate void SQLiteCallback(IntPtr context, int nArgs, IntPtr argsptr);
-  /// <summary>
-  /// An internal final callback delegate declaration.
-  /// </summary>
-  /// <param name="context">Raw context pointer for the user function</param>
-#if !PLATFORM_COMPACTFRAMEWORK
-  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-#endif
-  internal delegate void SQLiteFinalCallback(IntPtr context);
-  /// <summary>
-  /// Internal callback delegate for implementing collation sequences
-  /// </summary>
-  /// <param name="puser">Not used</param>
-  /// <param name="len1">Length of the string pv1</param>
-  /// <param name="pv1">Pointer to the first string to compare</param>
-  /// <param name="len2">Length of the string pv2</param>
-  /// <param name="pv2">Pointer to the second string to compare</param>
-  /// <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
-  /// than the second.</returns>
-#if !PLATFORM_COMPACTFRAMEWORK
-  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-#endif
-  internal delegate int SQLiteCollation(IntPtr puser, int len1, IntPtr pv1, int len2, IntPtr pv2);
-
-  /// <summary>
-  /// The type of collating sequence
-  /// </summary>
-  public enum CollationTypeEnum
-  {
-    /// <summary>
-    /// The built-in BINARY collating sequence
-    /// </summary>
-    Binary = 1,
-    /// <summary>
-    /// The built-in NOCASE collating sequence
-    /// </summary>
-    NoCase = 2,
-    /// <summary>
-    /// The built-in REVERSE collating sequence
-    /// </summary>
-    Reverse = 3,
-    /// <summary>
-    /// A custom user-defined collating sequence
-    /// </summary>
-    Custom = 0,
-  }
-
-  /// <summary>
-  /// The encoding type the collation sequence uses
-  /// </summary>
-  public enum CollationEncodingEnum
-  {
-    /// <summary>
-    /// The collation sequence is UTF8
-    /// </summary>
-    UTF8 = 1,
-    /// <summary>
-    /// The collation sequence is UTF16 little-endian
-    /// </summary>
-    UTF16LE = 2,
-    /// <summary>
-    /// The collation sequence is UTF16 big-endian
-    /// </summary>
-    UTF16BE = 3,
-  }
-
-  /// <summary>
-  /// A struct describing the collating sequence a function is executing in
-  /// </summary>
-  public struct CollationSequence
-  {
-    /// <summary>
-    /// The name of the collating sequence
-    /// </summary>
-    public string Name;
-    /// <summary>
-    /// The type of collating sequence
-    /// </summary>
-    public CollationTypeEnum Type;
-
-    /// <summary>
-    /// The text encoding of the collation sequence
-    /// </summary>
-    public CollationEncodingEnum Encoding;
-
-    /// <summary>
-    /// Context of the function that requested the collating sequence
-    /// </summary>
-    internal SqliteFunction _func;
-
-    /// <summary>
-    /// Calls the base collating sequence to compare two strings
-    /// </summary>
-    /// <param name="s1">The first string to compare</param>
-    /// <param name="s2">The second string to compare</param>
-    /// <returns>-1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2</returns>
-    public int Compare(string s1, string s2)
-    {
-      return _func._base.ContextCollateCompare(Encoding, _func._context, s1, s2);
-    }
-
-    /// <summary>
-    /// Calls the base collating sequence to compare two character arrays
-    /// </summary>
-    /// <param name="c1">The first array to compare</param>
-    /// <param name="c2">The second array to compare</param>
-    /// <returns>-1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2</returns>
-    public int Compare(char[] c1, char[] c2)
-    {
-      return _func._base.ContextCollateCompare(Encoding, _func._context, c1, c2);
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Collections;
+  using System.Collections.Generic;
+  using System.Runtime.InteropServices;
+  using System.Globalization;
+
+  /// <summary>
+  /// This abstract class is designed to handle user-defined functions easily.  An instance of the derived class is made for each
+  /// connection to the database.
+  /// </summary>
+  /// <remarks>
+  /// Although there is one instance of a class derived from SqliteFunction per database connection, the derived class has no access
+  /// to the underlying connection.  This is necessary to deter implementers from thinking it would be a good idea to make database
+  /// calls during processing.
+  /// 
+  /// It is important to distinguish between a per-connection instance, and a per-SQL statement context.  One instance of this class
+  /// services all SQL statements being stepped through on that connection, and there can be many.  One should never store per-statement
+  /// information in member variables of user-defined function classes.
+  /// 
+  /// For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step.  This data will
+  /// be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes.
+  /// </remarks>
+  public abstract class SqliteFunction : IDisposable
+  {
+    private class AggregateData
+    {
+      internal int _count = 1;
+      internal object _data = null;
+    }
+
+    /// <summary>
+    /// The base connection this function is attached to
+    /// </summary>
+    internal SQLiteBase              _base;
+
+    /// <summary>
+    /// Internal array used to keep track of aggregate function context data
+    /// </summary>
+    private Dictionary<long, AggregateData> _contextDataList;
+
+    /// <summary>
+    /// Holds a reference to the callback function for user functions
+    /// </summary>
+    private SQLiteCallback  _InvokeFunc;
+    /// <summary>
+    /// Holds a reference to the callbakc function for stepping in an aggregate function
+    /// </summary>
+    private SQLiteCallback  _StepFunc;
+    /// <summary>
+    /// Holds a reference to the callback function for finalizing an aggregate function
+    /// </summary>
+    private SQLiteFinalCallback  _FinalFunc;
+    /// <summary>
+    /// Holds a reference to the callback function for collation sequences
+    /// </summary>
+    private SQLiteCollation _CompareFunc;
+
+    private SQLiteCollation _CompareFunc16;
+
+    /// <summary>
+    /// Current context of the current callback.  Only valid during a callback
+    /// </summary>
+    internal IntPtr _context;
+
+    /// <summary>
+    /// This static list contains all the user-defined functions declared using the proper attributes.
+    /// </summary>
+    private static List<SqliteFunctionAttribute> _registeredFunctions = new List<SqliteFunctionAttribute>();
+
+    /// <summary>
+    /// Internal constructor, initializes the function's internal variables.
+    /// </summary>
+    protected SqliteFunction()
+    {
+      _contextDataList = new Dictionary<long, AggregateData>();
+    }
+
+    /// <summary>
+    /// Returns a reference to the underlying connection's SqliteConvert class, which can be used to convert
+    /// strings and DateTime's into the current connection's encoding schema.
+    /// </summary>
+    public SqliteConvert SqliteConvert
+    {
+      get
+      {
+        return _base;
+      }
+    }
+
+    /// <summary>
+    /// Scalar functions override this method to do their magic.
+    /// </summary>
+    /// <remarks>
+    /// Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available
+    /// to force them into a certain type.  Therefore the only types you will ever see as parameters are
+    /// DBNull.Value, Int64, Double, String or byte[] array.
+    /// </remarks>
+    /// <param name="args">The arguments for the command to process</param>
+    /// <returns>You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or
+    /// you may return an Exception-derived class if you wish to return an error to SQLite.  Do not actually throw the error,
+    /// just return it!</returns>
+    public virtual object Invoke(object[] args)
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// Aggregate functions override this method to do their magic.
+    /// </summary>
+    /// <remarks>
+    /// Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible.
+    /// </remarks>
+    /// <param name="args">The arguments for the command to process</param>
+    /// <param name="stepNumber">The 1-based step number.  This is incrememted each time the step method is called.</param>
+    /// <param name="contextData">A placeholder for implementers to store contextual data pertaining to the current context.</param>
+    public virtual void Step(object[] args, int stepNumber, ref object contextData)
+    {
+    }
+
+    /// <summary>
+    /// Aggregate functions override this method to finish their aggregate processing.
+    /// </summary>
+    /// <remarks>
+    /// If you implemented your aggregate function properly,
+    /// you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have
+    /// all the information you need in there to figure out what to return.
+    /// NOTE:  It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will
+    /// be null.  This can happen when no rows were returned.  You can either return null, or 0 or some other custom return value
+    /// if that is the case.
+    /// </remarks>
+    /// <param name="contextData">Your own assigned contextData, provided for you so you can return your final results.</param>
+    /// <returns>You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or
+    /// you may return an Exception-derived class if you wish to return an error to SQLite.  Do not actually throw the error,
+    /// just return it!
+    /// </returns>
+    public virtual object Final(object contextData)
+    {
+      return null;
+    }
+
+    /// <summary>
+    /// User-defined collation sequences override this method to provide a custom string sorting algorithm.
+    /// </summary>
+    /// <param name="param1">The first string to compare</param>
+    /// <param name="param2">The second strnig to compare</param>
+    /// <returns>1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2</returns>
+    public virtual int Compare(string param1, string param2)
+    {
+      return 0;
+    }
+
+    /// <summary>
+    /// Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to.
+    /// </summary>
+    /// <remarks>
+    /// Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available
+    /// to force them into a certain type.  Therefore the only types you will ever see as parameters are
+    /// DBNull.Value, Int64, Double, String or byte[] array.
+    /// </remarks>
+    /// <param name="nArgs">The number of arguments</param>
+    /// <param name="argsptr">A pointer to the array of arguments</param>
+    /// <returns>An object array of the arguments once they've been converted to .NET values</returns>
+    internal object[] ConvertParams(int nArgs, IntPtr argsptr)
+    {
+      object[] parms = new object[nArgs];
+#if !PLATFORM_COMPACTFRAMEWORK
+      IntPtr[] argint = new IntPtr[nArgs];
+#else
+      int[] argint = new int[nArgs];
+#endif
+      Marshal.Copy(argsptr, argint, 0, nArgs);
+
+      for (int n = 0; n < nArgs; n++)
+      {
+        switch (_base.GetParamValueType((IntPtr)argint[n]))
+        {
+          case TypeAffinity.Null:
+            parms[n] = DBNull.Value;
+            break;
+          case TypeAffinity.Int64:
+            parms[n] = _base.GetParamValueInt64((IntPtr)argint[n]);
+            break;
+          case TypeAffinity.Double:
+            parms[n] = _base.GetParamValueDouble((IntPtr)argint[n]);
+            break;
+          case TypeAffinity.Text:
+            parms[n] = _base.GetParamValueText((IntPtr)argint[n]);
+            break;
+          case TypeAffinity.Blob:
+            {
+              int x;
+              byte[] blob;
+
+              x = (int)_base.GetParamValueBytes((IntPtr)argint[n], 0, null, 0, 0);
+              blob = new byte[x];
+              _base.GetParamValueBytes((IntPtr)argint[n], 0, blob, 0, x);
+              parms[n] = blob;
+            }
+            break;
+          case TypeAffinity.DateTime: // Never happens here but what the heck, maybe it will one day.
+            parms[n] = _base.ToDateTime(_base.GetParamValueText((IntPtr)argint[n]));
+            break;
+        }
+      }
+      return parms;
+    }
+
+    /// <summary>
+    /// Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context.
+    /// </summary>
+    /// <param name="context">The context the return value applies to</param>
+    /// <param name="returnValue">The parameter to return to SQLite</param>
+    void SetReturnValue(IntPtr context, object returnValue)
+    {
+      if (returnValue == null || returnValue == DBNull.Value)
+      {
+        _base.ReturnNull(context);
+        return;
+      }
+
+      Type t = returnValue.GetType();
+      if (t == typeof(DateTime))
+      {
+        _base.ReturnText(context, _base.ToString((DateTime)returnValue));
+        return;
+      }
+      else
+      {
+        Exception r = returnValue as Exception;
+
+        if (r != null)
+        {
+          _base.ReturnError(context, r.Message);
+          return;
+        }
+      }
+
+      switch (SqliteConvert.TypeToAffinity(t))
+      {
+        case TypeAffinity.Null:
+          _base.ReturnNull(context);
+          return;
+        case TypeAffinity.Int64:
+          _base.ReturnInt64(context, Convert.ToInt64(returnValue, CultureInfo.CurrentCulture));
+          return;
+        case TypeAffinity.Double:
+          _base.ReturnDouble(context, Convert.ToDouble(returnValue, CultureInfo.CurrentCulture));
+          return;
+        case TypeAffinity.Text:
+          _base.ReturnText(context, returnValue.ToString());
+          return;
+        case TypeAffinity.Blob:
+          _base.ReturnBlob(context, (byte[])returnValue);
+          return;
+      }
+    }
+
+    /// <summary>
+    /// Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method.
+    /// </summary>
+    /// <param name="context">A raw context pointer</param>
+    /// <param name="nArgs">Number of arguments passed in</param>
+    /// <param name="argsptr">A pointer to the array of arguments</param>
+    internal void ScalarCallback(IntPtr context, int nArgs, IntPtr argsptr)
+    {
+      _context = context;
+      SetReturnValue(context, Invoke(ConvertParams(nArgs, argsptr)));
+    }
+
+    /// <summary>
+    /// Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function.
+    /// </summary>
+    /// <param name="ptr">Not used</param>
+    /// <param name="len1">Length of the string pv1</param>
+    /// <param name="ptr1">Pointer to the first string to compare</param>
+    /// <param name="len2">Length of the string pv2</param>
+    /// <param name="ptr2">Pointer to the second string to compare</param>
+    /// <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
+    /// than the second.</returns>
+    internal int CompareCallback(IntPtr ptr, int len1, IntPtr ptr1, int len2, IntPtr ptr2)
+    {
+      return Compare(SqliteConvert.UTF8ToString(ptr1, len1), SqliteConvert.UTF8ToString(ptr2, len2));
+    }
+
+    internal int CompareCallback16(IntPtr ptr, int len1, IntPtr ptr1, int len2, IntPtr ptr2)
+    {
+      return Compare(SQLite3_UTF16.UTF16ToString(ptr1, len1), SQLite3_UTF16.UTF16ToString(ptr2, len2));
+    }
+
+    /// <summary>
+    /// The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method.
+    /// </summary>
+    /// <remarks>
+    /// This function takes care of doing the lookups and getting the important information put together to call the Step() function.
+    /// That includes pulling out the user's contextData and updating it after the call is made.  We use a sorted list for this so
+    /// binary searches can be done to find the data.
+    /// </remarks>
+    /// <param name="context">A raw context pointer</param>
+    /// <param name="nArgs">Number of arguments passed in</param>
+    /// <param name="argsptr">A pointer to the array of arguments</param>
+    internal void StepCallback(IntPtr context, int nArgs, IntPtr argsptr)
+    {
+      long nAux;
+      AggregateData data;
+
+      nAux = (long)_base.AggregateContext(context);
+      if (_contextDataList.TryGetValue(nAux, out data) == false)
+      {
+        data = new AggregateData();
+        _contextDataList[nAux] = data;
+      }
+
+      try
+      {
+        _context = context;
+        Step(ConvertParams(nArgs, argsptr), data._count, ref data._data);
+      }
+      finally
+      {
+        data._count++;
+      }
+    }
+
+    /// <summary>
+    /// An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method.
+    /// </summary>
+    /// <param name="context">A raw context pointer</param>
+    internal void FinalCallback(IntPtr context)
+    {
+      long n = (long)_base.AggregateContext(context);
+      object obj = null;
+
+      if (_contextDataList.ContainsKey(n))
+      {
+        obj = _contextDataList[n]._data;
+        _contextDataList.Remove(n);
+      }
+
+      _context = context;
+      SetReturnValue(context, Final(obj));
+
+      IDisposable disp = obj as IDisposable;
+      if (disp != null) disp.Dispose();
+    }
+
+    /// <summary>
+    /// Placeholder for a user-defined disposal routine
+    /// </summary>
+    /// <param name="disposing">True if the object is being disposed explicitly</param>
+    protected virtual void Dispose(bool disposing)
+    {
+      if (disposing)
+      {
+        IDisposable disp;
+
+        foreach (KeyValuePair<long, AggregateData> kv in _contextDataList)
+        {
+          disp = kv.Value._data as IDisposable;
+          if (disp != null)
+            disp.Dispose();
+        }
+        _contextDataList.Clear();
+
+        _InvokeFunc = null;
+        _StepFunc = null;
+        _FinalFunc = null;
+        _CompareFunc = null;
+        _base = null;
+        _contextDataList = null;
+      }
+    }
+
+    /// <summary>
+    /// Disposes of any active contextData variables that were not automatically cleaned up.  Sometimes this can happen if
+    /// someone closes the connection while a DataReader is open.
+    /// </summary>
+    public void Dispose()
+    {
+      Dispose(true);
+    }
+
+    /// <summary>
+    /// Using reflection, enumerate all assemblies in the current appdomain looking for classes that
+    /// have a SqliteFunctionAttribute attribute, and registering them accordingly.
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [global::System.Security.Permissions.FileIOPermission(global::System.Security.Permissions.SecurityAction.Assert, AllFiles = global::System.Security.Permissions.FileIOPermissionAccess.PathDiscovery)]
+#endif
+    static SqliteFunction()
+    {
+      try
+      {
+#if !PLATFORM_COMPACTFRAMEWORK
+        SqliteFunctionAttribute at;
+        System.Reflection.Assembly[] arAssemblies = System.AppDomain.CurrentDomain.GetAssemblies();
+        int w = arAssemblies.Length;
+        System.Reflection.AssemblyName sqlite = System.Reflection.Assembly.GetCallingAssembly().GetName();
+
+        for (int n = 0; n < w; n++)
+        {
+          Type[] arTypes;
+          bool found = false;
+          System.Reflection.AssemblyName[] references;
+          try
+          {
+            // Inspect only assemblies that reference SQLite
+            references = arAssemblies[n].GetReferencedAssemblies();
+            int t = references.Length;
+            for (int z = 0; z < t; z++)
+            {
+              if (references[z].Name == sqlite.Name)
+              {
+                found = true;
+                break;
+              }
+            }
+
+            if (found == false)
+              continue;
+
+            arTypes = arAssemblies[n].GetTypes();
+          }
+          catch (global::System.Reflection.ReflectionTypeLoadException e)
+          {
+            arTypes = e.Types;
+          }
+
+          int v = arTypes.Length;
+          for (int x = 0; x < v; x++)
+          {
+            if (arTypes[x] == null) continue;
+
+            object[] arAtt = arTypes[x].GetCustomAttributes(typeof(SqliteFunctionAttribute), false);
+            int u = arAtt.Length;
+            for (int y = 0; y < u; y++)
+            {
+              at = arAtt[y] as SqliteFunctionAttribute;
+              if (at != null)
+              {
+                at._instanceType = arTypes[x];
+                _registeredFunctions.Add(at);
+              }
+            }
+          }
+        }
+#endif
+      }
+      catch // SQLite provider can continue without being able to find built-in functions
+      {
+      }
+    }
+    /// <summary>
+    /// Manual method of registering a function.  The type must still have the SqliteFunctionAttributes in order to work
+    /// properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported.
+    /// </summary>
+    /// <param name="typ">The type of the function to register</param>
+    public static void RegisterFunction(Type typ)
+    {
+      object[] arAtt = typ.GetCustomAttributes(typeof(SqliteFunctionAttribute), false);
+      int u = arAtt.Length;
+      SqliteFunctionAttribute at;
+
+      for (int y = 0; y < u; y++)
+      {
+        at = arAtt[y] as SqliteFunctionAttribute;
+        if (at != null)
+        {
+          at._instanceType = typ;
+          _registeredFunctions.Add(at);
+        }
+      }
+    }
+
+    /// <summary>
+    /// Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection.
+    /// It is done this way so that all user-defined functions will access the database using the same encoding scheme
+    /// as the connection (UTF-8 or UTF-16).
+    /// </summary>
+    /// <remarks>
+    /// The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to
+    /// all the wrapped callback functions.  The interop function uses it to map CDecl callbacks to StdCall callbacks.
+    /// </remarks>
+    /// <param name="sqlbase">The base object on which the functions are to bind</param>
+    /// <returns>Returns an array of functions which the connection object should retain until the connection is closed.</returns>
+    internal static SqliteFunction[] BindFunctions(SQLiteBase sqlbase)
+    {
+      SqliteFunction f;
+      List<SqliteFunction> lFunctions = new List<SqliteFunction>();
+
+      foreach (SqliteFunctionAttribute pr in _registeredFunctions)
+      {
+        f = (SqliteFunction)Activator.CreateInstance(pr._instanceType);
+        f._base = sqlbase;
+        f._InvokeFunc = (pr.FuncType == FunctionType.Scalar) ? new SQLiteCallback(f.ScalarCallback) : null;
+        f._StepFunc = (pr.FuncType == FunctionType.Aggregate) ? new SQLiteCallback(f.StepCallback) : null;
+        f._FinalFunc = (pr.FuncType == FunctionType.Aggregate) ? new SQLiteFinalCallback(f.FinalCallback) : null;
+        f._CompareFunc = (pr.FuncType == FunctionType.Collation) ? new SQLiteCollation(f.CompareCallback) : null;
+        f._CompareFunc16 = (pr.FuncType == FunctionType.Collation) ? new SQLiteCollation(f.CompareCallback16) : null;
+
+        if (pr.FuncType != FunctionType.Collation)
+          sqlbase.CreateFunction(pr.Name, pr.Arguments, (f is SqliteFunctionEx), f._InvokeFunc, f._StepFunc, f._FinalFunc);
+        else {
+#if MONOTOUCH
+          GCHandle handle = GCHandle.Alloc (f);
+          sqlbase.CreateCollation(pr.Name, collation_callback, collation_callback16, GCHandle.ToIntPtr (handle));
+#else
+          sqlbase.CreateCollation(pr.Name, f._CompareFunc, f._CompareFunc16, IntPtr.Zero);
+#endif
+        }
+
+
+        lFunctions.Add(f);
+      }
+
+      SqliteFunction[] arFunctions = new SqliteFunction[lFunctions.Count];
+      lFunctions.CopyTo(arFunctions, 0);
+
+      return arFunctions;
+    }
+
+#if MONOTOUCH
+    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteCollation))]
+    internal static int collation_callback (IntPtr puser, int len1, IntPtr pv1, int len2, IntPtr pv2)
+    {
+      var handle = GCHandle.FromIntPtr (puser);
+      var func = (SqliteFunction) handle.Target;
+      return func._CompareFunc (IntPtr.Zero, len1, pv1, len2, pv2);
+    }
+
+    [MonoTouch.MonoPInvokeCallback (typeof (SQLiteCollation))]
+    internal static int collation_callback16 (IntPtr puser, int len1, IntPtr pv1, int len2, IntPtr pv2)
+    {
+      var handle = GCHandle.FromIntPtr (puser);
+      var func = (SqliteFunction) handle.Target;
+      return func._CompareFunc16 (IntPtr.Zero, len1, pv1, len2, pv2);
+    }
+#endif
+  }
+
+  /// <summary>
+  /// Extends SqliteFunction and allows an inherited class to obtain the collating sequence associated with a function call.
+  /// </summary>
+  /// <remarks>
+  /// User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays.
+  /// </remarks>
+  public class SqliteFunctionEx : SqliteFunction
+  {
+    /// <summary>
+    /// Obtains the collating sequence in effect for the given function.
+    /// </summary>
+    /// <returns></returns>
+    protected CollationSequence GetCollationSequence()
+    {
+      return _base.GetCollationSequence(this, _context);
+    }
+  }
+
+  /// <summary>
+  /// The type of user-defined function to declare
+  /// </summary>
+  public enum FunctionType
+  {
+    /// <summary>
+    /// Scalar functions are designed to be called and return a result immediately.  Examples include ABS(), Upper(), Lower(), etc.
+    /// </summary>
+    Scalar = 0,
+    /// <summary>
+    /// Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data.
+    /// Examples include SUM(), COUNT(), AVG(), etc.
+    /// </summary>
+    Aggregate = 1,
+    /// <summary>
+    /// Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause.  Typically text in an ORDER BY is
+    /// sorted using a straight case-insensitive comparison function.  Custom collating sequences can be used to alter the behavior of text sorting
+    /// in a user-defined manner.
+    /// </summary>
+    Collation = 2,
+  }
+
+  /// <summary>
+  /// An internal callback delegate declaration.
+  /// </summary>
+  /// <param name="context">Raw context pointer for the user function</param>
+  /// <param name="nArgs">Count of arguments to the function</param>
+  /// <param name="argsptr">A pointer to the array of argument pointers</param>
+#if !PLATFORM_COMPACTFRAMEWORK
+  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+#endif
+  internal delegate void SQLiteCallback(IntPtr context, int nArgs, IntPtr argsptr);
+  /// <summary>
+  /// An internal final callback delegate declaration.
+  /// </summary>
+  /// <param name="context">Raw context pointer for the user function</param>
+#if !PLATFORM_COMPACTFRAMEWORK
+  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+#endif
+  internal delegate void SQLiteFinalCallback(IntPtr context);
+  /// <summary>
+  /// Internal callback delegate for implementing collation sequences
+  /// </summary>
+  /// <param name="puser">Not used</param>
+  /// <param name="len1">Length of the string pv1</param>
+  /// <param name="pv1">Pointer to the first string to compare</param>
+  /// <param name="len2">Length of the string pv2</param>
+  /// <param name="pv2">Pointer to the second string to compare</param>
+  /// <returns>Returns -1 if the first string is less than the second.  0 if they are equal, or 1 if the first string is greater
+  /// than the second.</returns>
+#if !PLATFORM_COMPACTFRAMEWORK
+  [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+#endif
+  internal delegate int SQLiteCollation(IntPtr puser, int len1, IntPtr pv1, int len2, IntPtr pv2);
+
+  /// <summary>
+  /// The type of collating sequence
+  /// </summary>
+  public enum CollationTypeEnum
+  {
+    /// <summary>
+    /// The built-in BINARY collating sequence
+    /// </summary>
+    Binary = 1,
+    /// <summary>
+    /// The built-in NOCASE collating sequence
+    /// </summary>
+    NoCase = 2,
+    /// <summary>
+    /// The built-in REVERSE collating sequence
+    /// </summary>
+    Reverse = 3,
+    /// <summary>
+    /// A custom user-defined collating sequence
+    /// </summary>
+    Custom = 0,
+  }
+
+  /// <summary>
+  /// The encoding type the collation sequence uses
+  /// </summary>
+  public enum CollationEncodingEnum
+  {
+    /// <summary>
+    /// The collation sequence is UTF8
+    /// </summary>
+    UTF8 = 1,
+    /// <summary>
+    /// The collation sequence is UTF16 little-endian
+    /// </summary>
+    UTF16LE = 2,
+    /// <summary>
+    /// The collation sequence is UTF16 big-endian
+    /// </summary>
+    UTF16BE = 3,
+  }
+
+  /// <summary>
+  /// A struct describing the collating sequence a function is executing in
+  /// </summary>
+  public struct CollationSequence
+  {
+    /// <summary>
+    /// The name of the collating sequence
+    /// </summary>
+    public string Name;
+    /// <summary>
+    /// The type of collating sequence
+    /// </summary>
+    public CollationTypeEnum Type;
+
+    /// <summary>
+    /// The text encoding of the collation sequence
+    /// </summary>
+    public CollationEncodingEnum Encoding;
+
+    /// <summary>
+    /// Context of the function that requested the collating sequence
+    /// </summary>
+    internal SqliteFunction _func;
+
+    /// <summary>
+    /// Calls the base collating sequence to compare two strings
+    /// </summary>
+    /// <param name="s1">The first string to compare</param>
+    /// <param name="s2">The second string to compare</param>
+    /// <returns>-1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2</returns>
+    public int Compare(string s1, string s2)
+    {
+      return _func._base.ContextCollateCompare(Encoding, _func._context, s1, s2);
+    }
+
+    /// <summary>
+    /// Calls the base collating sequence to compare two character arrays
+    /// </summary>
+    /// <param name="c1">The first array to compare</param>
+    /// <param name="c2">The second array to compare</param>
+    /// <returns>-1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2</returns>
+    public int Compare(char[] c1, char[] c2)
+    {
+      return _func._base.ContextCollateCompare(Encoding, _func._context, c1, c2);
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteFunctionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteFunctionAttribute.cs
@@ -1,62 +1,62 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Runtime.InteropServices;
-
-  /// <summary>
-  /// A simple custom attribute to enable us to easily find user-defined functions in
-  /// the loaded assemblies and initialize them in SQLite as connections are made.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
-  public sealed class SqliteFunctionAttribute : Attribute
-  {
-    private string       _name;
-    private int          _arguments;
-    private FunctionType _functionType;
-    internal Type        _instanceType;
-
-    /// <summary>
-    /// Default constructor, initializes the internal variables for the function.
-    /// </summary>
-    public SqliteFunctionAttribute()
-    {
-      Name = "";
-      Arguments = -1;
-      FuncType = FunctionType.Scalar;
-    }
-
-    /// <summary>
-    /// The function's name as it will be used in SQLite command text.
-    /// </summary>
-    public string Name
-    {
-      get { return _name; }
-      set { _name = value; }
-    }
-
-    /// <summary>
-    /// The number of arguments this function expects.  -1 if the number of arguments is variable.
-    /// </summary>
-    public int Arguments
-    {
-      get { return _arguments; }
-      set { _arguments = value; }
-    }
-
-    /// <summary>
-    /// The type of function this implementation will be.
-    /// </summary>
-    public FunctionType FuncType
-    {
-      get { return _functionType; }
-      set { _functionType = value; }
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Runtime.InteropServices;
+
+  /// <summary>
+  /// A simple custom attribute to enable us to easily find user-defined functions in
+  /// the loaded assemblies and initialize them in SQLite as connections are made.
+  /// </summary>
+  [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
+  public sealed class SqliteFunctionAttribute : Attribute
+  {
+    private string       _name;
+    private int          _arguments;
+    private FunctionType _functionType;
+    internal Type        _instanceType;
+
+    /// <summary>
+    /// Default constructor, initializes the internal variables for the function.
+    /// </summary>
+    public SqliteFunctionAttribute()
+    {
+      Name = "";
+      Arguments = -1;
+      FuncType = FunctionType.Scalar;
+    }
+
+    /// <summary>
+    /// The function's name as it will be used in SQLite command text.
+    /// </summary>
+    public string Name
+    {
+      get { return _name; }
+      set { _name = value; }
+    }
+
+    /// <summary>
+    /// The number of arguments this function expects.  -1 if the number of arguments is variable.
+    /// </summary>
+    public int Arguments
+    {
+      get { return _arguments; }
+      set { _arguments = value; }
+    }
+
+    /// <summary>
+    /// The type of function this implementation will be.
+    /// </summary>
+    public FunctionType FuncType
+    {
+      get { return _functionType; }
+      set { _functionType = value; }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteKeyReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteKeyReader.cs
@@ -1,552 +1,552 @@
-/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Collections.Generic;
-
-  /// <summary>
-  /// This class provides key info for a given SQLite statement.
-  /// <remarks>
-  /// Providing key information for a given statement is non-trivial :(
-  /// </remarks>
-  /// </summary>
-  internal sealed class SqliteKeyReader : IDisposable
-  {
-    private KeyInfo[] _keyInfo;
-    private SqliteStatement _stmt;
-    private bool _isValid;
-
-    /// <summary>
-    /// Used to support CommandBehavior.KeyInfo
-    /// </summary>
-    private struct KeyInfo
-    {
-      internal string databaseName;
-      internal string tableName;
-      internal string columnName;
-      internal int database;
-      internal int rootPage;
-      internal int cursor;
-      internal KeyQuery query;
-      internal int column;
-    }
-
-    /// <summary>
-    /// A single sub-query for a given table/database.
-    /// </summary>
-    private sealed class KeyQuery : IDisposable
-    {
-      private SqliteCommand _command;
-      internal SqliteDataReader _reader;
-
-      internal KeyQuery(SqliteConnection cnn, string database, string table, params string[] columns)
-      {
-        using (SqliteCommandBuilder builder = new SqliteCommandBuilder())
-        {
-          _command = cnn.CreateCommand();
-          for (int n = 0; n < columns.Length; n++)
-          {
-            columns[n] = builder.QuoteIdentifier(columns[n]);
-          }
-        }
-        _command.CommandText = String.Format("SELECT {0} FROM [{1}].[{2}] WHERE ROWID = ?", String.Join(",", columns), database, table);
-        _command.Parameters.AddWithValue(null, (long)0);
-      }
-
-      internal bool IsValid
-      {
-        get { return (_reader != null); }
-        set
-        {
-          if (value != false) throw new ArgumentException();
-          if (_reader != null)
-          {
-            _reader.Dispose();
-            _reader = null;
-          }
-        }
-      }
-
-      internal void Sync(long rowid)
-      {
-        IsValid = false;
-        _command.Parameters[0].Value = rowid;
-        _reader = _command.ExecuteReader();
-        _reader.Read();
-      }
-
-      public void Dispose()
-      {
-        IsValid = false;
-
-        if (_command != null) _command.Dispose();
-        _command = null;
-      }
-    }
-
-    /// <summary>
-    /// This function does all the nasty work at determining what keys need to be returned for
-    /// a given statement.
-    /// </summary>
-    /// <param name="cnn"></param>
-    /// <param name="reader"></param>
-    /// <param name="stmt"></param>
-    internal SqliteKeyReader(SqliteConnection cnn, SqliteDataReader reader, SqliteStatement stmt)
-    {
-      Dictionary<string, int> catalogs = new Dictionary<string, int>();
-      Dictionary<string, List<string>> tables = new Dictionary<string, List<string>>();
-      List<string> list;
-      List<KeyInfo> keys = new List<KeyInfo>();
-
-      // Record the statement so we can use it later for sync'ing
-      _stmt = stmt;
-
-      // Fetch all the attached databases on this connection
-      using (DataTable tbl = cnn.GetSchema("Catalogs"))
-      {
-        foreach (DataRow row in tbl.Rows)
-        {
-          catalogs.Add((string)row["CATALOG_NAME"], Convert.ToInt32(row["ID"]));
-        }
-      }
-
-      // Fetch all the unique tables and catalogs used by the current statement
-      using (DataTable schema = reader.GetSchemaTable(false, false))
-      {
-        foreach (DataRow row in schema.Rows)
-        {
-          // Check if column is backed to a table
-          if (row[SchemaTableOptionalColumn.BaseCatalogName] == DBNull.Value)
-            continue;
-
-          // Record the unique table so we can look up its keys
-          string catalog = (string)row[SchemaTableOptionalColumn.BaseCatalogName];
-          string table = (string)row[SchemaTableColumn.BaseTableName];
-
-          if (tables.ContainsKey(catalog) == false)
-          {
-            list = new List<string>();
-            tables.Add(catalog, list);
-          }
-          else
-            list = tables[catalog];
-
-          if (list.Contains(table) == false)
-            list.Add(table);
-        }
-
-        // For each catalog and each table, query the indexes for the table.
-        // Find a primary key index if there is one.  If not, find a unique index instead
-        foreach (KeyValuePair<string, List<string>> pair in tables)
-        {
-          for (int i = 0; i < pair.Value.Count; i++)
-          {
-            string table = pair.Value[i];
-            DataRow preferredRow = null;
-            using (DataTable tbl = cnn.GetSchema("Indexes", new string[] { pair.Key, null, table }))
-            {
-              // Loop twice.  The first time looking for a primary key index, 
-              // the second time looking for a unique index
-              for (int n = 0; n < 2 && preferredRow == null; n++)
-              {
-                foreach (DataRow row in tbl.Rows)
-                {
-                  if (n == 0 && (bool)row["PRIMARY_KEY"] == true)
-                  {
-                    preferredRow = row;
-                    break;
-                  }
-                  else if (n == 1 && (bool)row["UNIQUE"] == true)
-                  {
-                    preferredRow = row;
-                    break;
-                  }
-                }
-              }
-              if (preferredRow == null) // Unable to find any suitable index for this table so remove it
-              {
-                pair.Value.RemoveAt(i);
-                i--;
-              }
-              else // We found a usable index, so fetch the necessary table details
-              {
-                using (DataTable tblTables = cnn.GetSchema("Tables", new string[] { pair.Key, null, table }))
-                {
-                  // Find the root page of the table in the current statement and get the cursor that's iterating it
-                  int database = catalogs[pair.Key];
-                  int rootPage = Convert.ToInt32(tblTables.Rows[0]["TABLE_ROOTPAGE"]);
-                  int cursor = stmt._sql.GetCursorForTable(stmt, database, rootPage);
-
-                  // Now enumerate the members of the index we're going to use
-                  using (DataTable indexColumns = cnn.GetSchema("IndexColumns", new string[] { pair.Key, null, table, (string)preferredRow["INDEX_NAME"] }))
-                  {
-                    KeyQuery query = null;
-
-                    List<string> cols = new List<string>();
-                    for (int x = 0; x < indexColumns.Rows.Count; x++)
-                    {
-                      bool addKey = true;
-                      // If the column in the index already appears in the query, skip it
-                      foreach (DataRow row in schema.Rows)
-                      {
-                        if (row.IsNull(SchemaTableColumn.BaseColumnName))
-                          continue;
-
-                        if ((string)row[SchemaTableColumn.BaseColumnName] == (string)indexColumns.Rows[x]["COLUMN_NAME"] &&
-                            (string)row[SchemaTableColumn.BaseTableName] == table &&
-                            (string)row[SchemaTableOptionalColumn.BaseCatalogName] == pair.Key)
-                        {
-                          indexColumns.Rows.RemoveAt(x);
-                          x--;
-                          addKey = false;
-                          break;
-                        }
-                      }
-                      if (addKey == true)
-                        cols.Add((string)indexColumns.Rows[x]["COLUMN_NAME"]);
-                    }
-
-                    // If the index is not a rowid alias, record all the columns
-                    // needed to make up the unique index and construct a SQL query for it
-                    if ((string)preferredRow["INDEX_NAME"] != "sqlite_master_PK_" + table)
-                    {
-                      // Whatever remains of the columns we need that make up the index that are not
-                      // already in the query need to be queried separately, so construct a subquery
-                      if (cols.Count > 0)
-                      {
-                        string[] querycols = new string[cols.Count];
-                        cols.CopyTo(querycols);
-                        query = new KeyQuery(cnn, pair.Key, table, querycols);
-                      }
-                    }
-
-                    // Create a KeyInfo struct for each column of the index
-                    for (int x = 0; x < indexColumns.Rows.Count; x++)
-                    {
-                      string columnName = (string)indexColumns.Rows[x]["COLUMN_NAME"];
-                      KeyInfo key = new KeyInfo();
-
-                      key.rootPage = rootPage;
-                      key.cursor = cursor;
-                      key.database = database;
-                      key.databaseName = pair.Key;
-                      key.tableName = table;
-                      key.columnName = columnName;
-                      key.query = query;
-                      key.column = x;
-
-                      keys.Add(key);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-
-      // Now we have all the additional columns we have to return in order to support
-      // CommandBehavior.KeyInfo
-      _keyInfo = new KeyInfo[keys.Count];
-      keys.CopyTo(_keyInfo);
-    }
-
-    /// <summary>
-    /// How many additional columns of keyinfo we're holding
-    /// </summary>
-    internal int Count
-    {
-      get { return (_keyInfo == null) ? 0 : _keyInfo.Length; }
-    }
-
-    internal void Sync(int i)
-    {
-      Sync();
-      if (_keyInfo[i].cursor == -1)
-        throw new InvalidCastException();
-    }
-
-    /// <summary>
-    /// Make sure all the subqueries are open and ready and sync'd with the current rowid
-    /// of the table they're supporting
-    /// </summary>
-    internal void Sync()
-    {
-      if (_isValid == true) return;
-
-      KeyQuery last = null;
-
-      for (int n = 0; n < _keyInfo.Length; n++)
-      {
-        if (_keyInfo[n].query == null || _keyInfo[n].query != last)
-        {
-          last = _keyInfo[n].query;
-
-          if (last != null)
-          {
-            last.Sync(_stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[n].cursor));
-          }
-        }
-      }
-      _isValid = true;
-    }
-
-    /// <summary>
-    /// Release any readers on any subqueries
-    /// </summary>
-    internal void Reset()
-    {
-      _isValid = false;
-      if (_keyInfo == null) return;
-
-      for (int n = 0; n < _keyInfo.Length; n++)
-      {
-        if (_keyInfo[n].query != null)
-          _keyInfo[n].query.IsValid = false;
-      }
-    }
-
-    public void Dispose()
-    {
-      _stmt = null;
-
-      if (_keyInfo == null) return;
-
-      for (int n = 0; n < _keyInfo.Length; n++)
-      {
-        if (_keyInfo[n].query != null)
-          _keyInfo[n].query.Dispose();
-      }
-      _keyInfo = null;
-    }
-
-    internal string GetDataTypeName(int i)
-    {
-      Sync();
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDataTypeName(_keyInfo[i].column);
-      else return "integer";
-    }
-
-    internal Type GetFieldType(int i)
-    {
-      Sync();
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetFieldType(_keyInfo[i].column);
-      else return typeof(Int64);
-    }
-
-    internal string GetName(int i)
-    {
-      return _keyInfo[i].columnName;
-    }
-
-    internal int GetOrdinal(string name)
-    {
-      for (int n = 0; n < _keyInfo.Length; n++)
-      {
-        if (String.Compare(name, _keyInfo[n].columnName, StringComparison.OrdinalIgnoreCase) == 0) return n;
-      }
-      return -1;
-    }
-
-    internal bool GetBoolean(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetBoolean(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal byte GetByte(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetByte(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetBytes(_keyInfo[i].column, fieldOffset, buffer, bufferoffset, length);
-      else throw new InvalidCastException();
-    }
-
-    internal char GetChar(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetChar(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal long GetChars(int i, long fieldOffset, char[] buffer, int bufferoffset, int length)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetChars(_keyInfo[i].column, fieldOffset, buffer, bufferoffset, length);
-      else throw new InvalidCastException();
-    }
-
-    internal DateTime GetDateTime(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDateTime(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal decimal GetDecimal(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDecimal(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal double GetDouble(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDouble(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal float GetFloat(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetFloat(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal Guid GetGuid(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetGuid(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal Int16 GetInt16(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetInt16(_keyInfo[i].column);
-      else
-      {
-        long rowid = _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor);
-        if (rowid == 0) throw new InvalidCastException();
-        return Convert.ToInt16(rowid);
-      }
-    }
-
-    internal Int32 GetInt32(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetInt32(_keyInfo[i].column);
-      else
-      {
-        long rowid = _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor);
-        if (rowid == 0) throw new InvalidCastException();
-        return Convert.ToInt32(rowid);
-      }
-    }
-
-    internal Int64 GetInt64(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetInt64(_keyInfo[i].column);
-      else
-      {
-        long rowid = _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor);
-        if (rowid == 0) throw new InvalidCastException();
-        return Convert.ToInt64(rowid);
-      }
-    }
-
-    internal string GetString(int i)
-    {
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetString(_keyInfo[i].column);
-      else throw new InvalidCastException();
-    }
-
-    internal object GetValue(int i)
-    {
-      if (_keyInfo[i].cursor == -1) return DBNull.Value;
-
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetValue(_keyInfo[i].column);
-
-      if (IsDBNull(i) == true)
-        return DBNull.Value;
-      else return GetInt64(i);
-    }
-
-    internal bool IsDBNull(int i)
-    {
-      if (_keyInfo[i].cursor == -1) return true;
-
-      Sync(i);
-      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.IsDBNull(_keyInfo[i].column);
-      else return _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor) == 0;
-    }
-
-    /// <summary>
-    /// Append all the columns we've added to the original query to the schema
-    /// </summary>
-    /// <param name="tbl"></param>
-    internal void AppendSchemaTable(DataTable tbl)
-    {
-      KeyQuery last = null;
-
-      for (int n = 0; n < _keyInfo.Length; n++)
-      {
-        if (_keyInfo[n].query == null || _keyInfo[n].query != last)
-        {
-          last = _keyInfo[n].query;
-
-          if (last == null) // ROWID aliases are treated special
-          {
-            DataRow row = tbl.NewRow();
-            row[SchemaTableColumn.ColumnName] = _keyInfo[n].columnName;
-            row[SchemaTableColumn.ColumnOrdinal] = tbl.Rows.Count;
-            row[SchemaTableColumn.ColumnSize] = 8;
-            row[SchemaTableColumn.NumericPrecision] = 255;
-            row[SchemaTableColumn.NumericScale] = 255;
-            row[SchemaTableColumn.ProviderType] = DbType.Int64;
-            row[SchemaTableColumn.IsLong] = false;
-            row[SchemaTableColumn.AllowDBNull] = false;
-            row[SchemaTableOptionalColumn.IsReadOnly] = false;
-            row[SchemaTableOptionalColumn.IsRowVersion] = false;
-            row[SchemaTableColumn.IsUnique] = false;
-            row[SchemaTableColumn.IsKey] = true;
-            row[SchemaTableColumn.DataType] = typeof(Int64);
-            row[SchemaTableOptionalColumn.IsHidden] = true;
-            row[SchemaTableColumn.BaseColumnName] = _keyInfo[n].columnName;
-            row[SchemaTableColumn.IsExpression] = false;
-            row[SchemaTableColumn.IsAliased] = false;
-            row[SchemaTableColumn.BaseTableName] = _keyInfo[n].tableName;
-            row[SchemaTableOptionalColumn.BaseCatalogName] = _keyInfo[n].databaseName;
-            row[SchemaTableOptionalColumn.IsAutoIncrement] = true;
-            row["DataTypeName"] = "integer";
-
-            tbl.Rows.Add(row);
-          }
-          else
-          {
-            last.Sync(0);
-            using (DataTable tblSub = last._reader.GetSchemaTable())
-            {
-              foreach (DataRow row in tblSub.Rows)
-              {
-                object[] o = row.ItemArray;
-                DataRow newrow = tbl.Rows.Add(o);
-                newrow[SchemaTableOptionalColumn.IsHidden] = true;
-                newrow[SchemaTableColumn.ColumnOrdinal] = tbl.Rows.Count - 1;
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
+/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Collections.Generic;
+
+  /// <summary>
+  /// This class provides key info for a given SQLite statement.
+  /// <remarks>
+  /// Providing key information for a given statement is non-trivial :(
+  /// </remarks>
+  /// </summary>
+  internal sealed class SqliteKeyReader : IDisposable
+  {
+    private KeyInfo[] _keyInfo;
+    private SqliteStatement _stmt;
+    private bool _isValid;
+
+    /// <summary>
+    /// Used to support CommandBehavior.KeyInfo
+    /// </summary>
+    private struct KeyInfo
+    {
+      internal string databaseName;
+      internal string tableName;
+      internal string columnName;
+      internal int database;
+      internal int rootPage;
+      internal int cursor;
+      internal KeyQuery query;
+      internal int column;
+    }
+
+    /// <summary>
+    /// A single sub-query for a given table/database.
+    /// </summary>
+    private sealed class KeyQuery : IDisposable
+    {
+      private SqliteCommand _command;
+      internal SqliteDataReader _reader;
+
+      internal KeyQuery(SqliteConnection cnn, string database, string table, params string[] columns)
+      {
+        using (SqliteCommandBuilder builder = new SqliteCommandBuilder())
+        {
+          _command = cnn.CreateCommand();
+          for (int n = 0; n < columns.Length; n++)
+          {
+            columns[n] = builder.QuoteIdentifier(columns[n]);
+          }
+        }
+        _command.CommandText = String.Format("SELECT {0} FROM [{1}].[{2}] WHERE ROWID = ?", String.Join(",", columns), database, table);
+        _command.Parameters.AddWithValue(null, (long)0);
+      }
+
+      internal bool IsValid
+      {
+        get { return (_reader != null); }
+        set
+        {
+          if (value != false) throw new ArgumentException();
+          if (_reader != null)
+          {
+            _reader.Dispose();
+            _reader = null;
+          }
+        }
+      }
+
+      internal void Sync(long rowid)
+      {
+        IsValid = false;
+        _command.Parameters[0].Value = rowid;
+        _reader = _command.ExecuteReader();
+        _reader.Read();
+      }
+
+      public void Dispose()
+      {
+        IsValid = false;
+
+        if (_command != null) _command.Dispose();
+        _command = null;
+      }
+    }
+
+    /// <summary>
+    /// This function does all the nasty work at determining what keys need to be returned for
+    /// a given statement.
+    /// </summary>
+    /// <param name="cnn"></param>
+    /// <param name="reader"></param>
+    /// <param name="stmt"></param>
+    internal SqliteKeyReader(SqliteConnection cnn, SqliteDataReader reader, SqliteStatement stmt)
+    {
+      Dictionary<string, int> catalogs = new Dictionary<string, int>();
+      Dictionary<string, List<string>> tables = new Dictionary<string, List<string>>();
+      List<string> list;
+      List<KeyInfo> keys = new List<KeyInfo>();
+
+      // Record the statement so we can use it later for sync'ing
+      _stmt = stmt;
+
+      // Fetch all the attached databases on this connection
+      using (DataTable tbl = cnn.GetSchema("Catalogs"))
+      {
+        foreach (DataRow row in tbl.Rows)
+        {
+          catalogs.Add((string)row["CATALOG_NAME"], Convert.ToInt32(row["ID"]));
+        }
+      }
+
+      // Fetch all the unique tables and catalogs used by the current statement
+      using (DataTable schema = reader.GetSchemaTable(false, false))
+      {
+        foreach (DataRow row in schema.Rows)
+        {
+          // Check if column is backed to a table
+          if (row[SchemaTableOptionalColumn.BaseCatalogName] == DBNull.Value)
+            continue;
+
+          // Record the unique table so we can look up its keys
+          string catalog = (string)row[SchemaTableOptionalColumn.BaseCatalogName];
+          string table = (string)row[SchemaTableColumn.BaseTableName];
+
+          if (tables.ContainsKey(catalog) == false)
+          {
+            list = new List<string>();
+            tables.Add(catalog, list);
+          }
+          else
+            list = tables[catalog];
+
+          if (list.Contains(table) == false)
+            list.Add(table);
+        }
+
+        // For each catalog and each table, query the indexes for the table.
+        // Find a primary key index if there is one.  If not, find a unique index instead
+        foreach (KeyValuePair<string, List<string>> pair in tables)
+        {
+          for (int i = 0; i < pair.Value.Count; i++)
+          {
+            string table = pair.Value[i];
+            DataRow preferredRow = null;
+            using (DataTable tbl = cnn.GetSchema("Indexes", new string[] { pair.Key, null, table }))
+            {
+              // Loop twice.  The first time looking for a primary key index, 
+              // the second time looking for a unique index
+              for (int n = 0; n < 2 && preferredRow == null; n++)
+              {
+                foreach (DataRow row in tbl.Rows)
+                {
+                  if (n == 0 && (bool)row["PRIMARY_KEY"] == true)
+                  {
+                    preferredRow = row;
+                    break;
+                  }
+                  else if (n == 1 && (bool)row["UNIQUE"] == true)
+                  {
+                    preferredRow = row;
+                    break;
+                  }
+                }
+              }
+              if (preferredRow == null) // Unable to find any suitable index for this table so remove it
+              {
+                pair.Value.RemoveAt(i);
+                i--;
+              }
+              else // We found a usable index, so fetch the necessary table details
+              {
+                using (DataTable tblTables = cnn.GetSchema("Tables", new string[] { pair.Key, null, table }))
+                {
+                  // Find the root page of the table in the current statement and get the cursor that's iterating it
+                  int database = catalogs[pair.Key];
+                  int rootPage = Convert.ToInt32(tblTables.Rows[0]["TABLE_ROOTPAGE"]);
+                  int cursor = stmt._sql.GetCursorForTable(stmt, database, rootPage);
+
+                  // Now enumerate the members of the index we're going to use
+                  using (DataTable indexColumns = cnn.GetSchema("IndexColumns", new string[] { pair.Key, null, table, (string)preferredRow["INDEX_NAME"] }))
+                  {
+                    KeyQuery query = null;
+
+                    List<string> cols = new List<string>();
+                    for (int x = 0; x < indexColumns.Rows.Count; x++)
+                    {
+                      bool addKey = true;
+                      // If the column in the index already appears in the query, skip it
+                      foreach (DataRow row in schema.Rows)
+                      {
+                        if (row.IsNull(SchemaTableColumn.BaseColumnName))
+                          continue;
+
+                        if ((string)row[SchemaTableColumn.BaseColumnName] == (string)indexColumns.Rows[x]["COLUMN_NAME"] &&
+                            (string)row[SchemaTableColumn.BaseTableName] == table &&
+                            (string)row[SchemaTableOptionalColumn.BaseCatalogName] == pair.Key)
+                        {
+                          indexColumns.Rows.RemoveAt(x);
+                          x--;
+                          addKey = false;
+                          break;
+                        }
+                      }
+                      if (addKey == true)
+                        cols.Add((string)indexColumns.Rows[x]["COLUMN_NAME"]);
+                    }
+
+                    // If the index is not a rowid alias, record all the columns
+                    // needed to make up the unique index and construct a SQL query for it
+                    if ((string)preferredRow["INDEX_NAME"] != "sqlite_master_PK_" + table)
+                    {
+                      // Whatever remains of the columns we need that make up the index that are not
+                      // already in the query need to be queried separately, so construct a subquery
+                      if (cols.Count > 0)
+                      {
+                        string[] querycols = new string[cols.Count];
+                        cols.CopyTo(querycols);
+                        query = new KeyQuery(cnn, pair.Key, table, querycols);
+                      }
+                    }
+
+                    // Create a KeyInfo struct for each column of the index
+                    for (int x = 0; x < indexColumns.Rows.Count; x++)
+                    {
+                      string columnName = (string)indexColumns.Rows[x]["COLUMN_NAME"];
+                      KeyInfo key = new KeyInfo();
+
+                      key.rootPage = rootPage;
+                      key.cursor = cursor;
+                      key.database = database;
+                      key.databaseName = pair.Key;
+                      key.tableName = table;
+                      key.columnName = columnName;
+                      key.query = query;
+                      key.column = x;
+
+                      keys.Add(key);
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+
+      // Now we have all the additional columns we have to return in order to support
+      // CommandBehavior.KeyInfo
+      _keyInfo = new KeyInfo[keys.Count];
+      keys.CopyTo(_keyInfo);
+    }
+
+    /// <summary>
+    /// How many additional columns of keyinfo we're holding
+    /// </summary>
+    internal int Count
+    {
+      get { return (_keyInfo == null) ? 0 : _keyInfo.Length; }
+    }
+
+    internal void Sync(int i)
+    {
+      Sync();
+      if (_keyInfo[i].cursor == -1)
+        throw new InvalidCastException();
+    }
+
+    /// <summary>
+    /// Make sure all the subqueries are open and ready and sync'd with the current rowid
+    /// of the table they're supporting
+    /// </summary>
+    internal void Sync()
+    {
+      if (_isValid == true) return;
+
+      KeyQuery last = null;
+
+      for (int n = 0; n < _keyInfo.Length; n++)
+      {
+        if (_keyInfo[n].query == null || _keyInfo[n].query != last)
+        {
+          last = _keyInfo[n].query;
+
+          if (last != null)
+          {
+            last.Sync(_stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[n].cursor));
+          }
+        }
+      }
+      _isValid = true;
+    }
+
+    /// <summary>
+    /// Release any readers on any subqueries
+    /// </summary>
+    internal void Reset()
+    {
+      _isValid = false;
+      if (_keyInfo == null) return;
+
+      for (int n = 0; n < _keyInfo.Length; n++)
+      {
+        if (_keyInfo[n].query != null)
+          _keyInfo[n].query.IsValid = false;
+      }
+    }
+
+    public void Dispose()
+    {
+      _stmt = null;
+
+      if (_keyInfo == null) return;
+
+      for (int n = 0; n < _keyInfo.Length; n++)
+      {
+        if (_keyInfo[n].query != null)
+          _keyInfo[n].query.Dispose();
+      }
+      _keyInfo = null;
+    }
+
+    internal string GetDataTypeName(int i)
+    {
+      Sync();
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDataTypeName(_keyInfo[i].column);
+      else return "integer";
+    }
+
+    internal Type GetFieldType(int i)
+    {
+      Sync();
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetFieldType(_keyInfo[i].column);
+      else return typeof(Int64);
+    }
+
+    internal string GetName(int i)
+    {
+      return _keyInfo[i].columnName;
+    }
+
+    internal int GetOrdinal(string name)
+    {
+      for (int n = 0; n < _keyInfo.Length; n++)
+      {
+        if (String.Compare(name, _keyInfo[n].columnName, StringComparison.OrdinalIgnoreCase) == 0) return n;
+      }
+      return -1;
+    }
+
+    internal bool GetBoolean(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetBoolean(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal byte GetByte(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetByte(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetBytes(_keyInfo[i].column, fieldOffset, buffer, bufferoffset, length);
+      else throw new InvalidCastException();
+    }
+
+    internal char GetChar(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetChar(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal long GetChars(int i, long fieldOffset, char[] buffer, int bufferoffset, int length)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetChars(_keyInfo[i].column, fieldOffset, buffer, bufferoffset, length);
+      else throw new InvalidCastException();
+    }
+
+    internal DateTime GetDateTime(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDateTime(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal decimal GetDecimal(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDecimal(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal double GetDouble(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetDouble(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal float GetFloat(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetFloat(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal Guid GetGuid(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetGuid(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal Int16 GetInt16(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetInt16(_keyInfo[i].column);
+      else
+      {
+        long rowid = _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor);
+        if (rowid == 0) throw new InvalidCastException();
+        return Convert.ToInt16(rowid);
+      }
+    }
+
+    internal Int32 GetInt32(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetInt32(_keyInfo[i].column);
+      else
+      {
+        long rowid = _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor);
+        if (rowid == 0) throw new InvalidCastException();
+        return Convert.ToInt32(rowid);
+      }
+    }
+
+    internal Int64 GetInt64(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetInt64(_keyInfo[i].column);
+      else
+      {
+        long rowid = _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor);
+        if (rowid == 0) throw new InvalidCastException();
+        return Convert.ToInt64(rowid);
+      }
+    }
+
+    internal string GetString(int i)
+    {
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetString(_keyInfo[i].column);
+      else throw new InvalidCastException();
+    }
+
+    internal object GetValue(int i)
+    {
+      if (_keyInfo[i].cursor == -1) return DBNull.Value;
+
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.GetValue(_keyInfo[i].column);
+
+      if (IsDBNull(i) == true)
+        return DBNull.Value;
+      else return GetInt64(i);
+    }
+
+    internal bool IsDBNull(int i)
+    {
+      if (_keyInfo[i].cursor == -1) return true;
+
+      Sync(i);
+      if (_keyInfo[i].query != null) return _keyInfo[i].query._reader.IsDBNull(_keyInfo[i].column);
+      else return _stmt._sql.GetRowIdForCursor(_stmt, _keyInfo[i].cursor) == 0;
+    }
+
+    /// <summary>
+    /// Append all the columns we've added to the original query to the schema
+    /// </summary>
+    /// <param name="tbl"></param>
+    internal void AppendSchemaTable(DataTable tbl)
+    {
+      KeyQuery last = null;
+
+      for (int n = 0; n < _keyInfo.Length; n++)
+      {
+        if (_keyInfo[n].query == null || _keyInfo[n].query != last)
+        {
+          last = _keyInfo[n].query;
+
+          if (last == null) // ROWID aliases are treated special
+          {
+            DataRow row = tbl.NewRow();
+            row[SchemaTableColumn.ColumnName] = _keyInfo[n].columnName;
+            row[SchemaTableColumn.ColumnOrdinal] = tbl.Rows.Count;
+            row[SchemaTableColumn.ColumnSize] = 8;
+            row[SchemaTableColumn.NumericPrecision] = 255;
+            row[SchemaTableColumn.NumericScale] = 255;
+            row[SchemaTableColumn.ProviderType] = DbType.Int64;
+            row[SchemaTableColumn.IsLong] = false;
+            row[SchemaTableColumn.AllowDBNull] = false;
+            row[SchemaTableOptionalColumn.IsReadOnly] = false;
+            row[SchemaTableOptionalColumn.IsRowVersion] = false;
+            row[SchemaTableColumn.IsUnique] = false;
+            row[SchemaTableColumn.IsKey] = true;
+            row[SchemaTableColumn.DataType] = typeof(Int64);
+            row[SchemaTableOptionalColumn.IsHidden] = true;
+            row[SchemaTableColumn.BaseColumnName] = _keyInfo[n].columnName;
+            row[SchemaTableColumn.IsExpression] = false;
+            row[SchemaTableColumn.IsAliased] = false;
+            row[SchemaTableColumn.BaseTableName] = _keyInfo[n].tableName;
+            row[SchemaTableOptionalColumn.BaseCatalogName] = _keyInfo[n].databaseName;
+            row[SchemaTableOptionalColumn.IsAutoIncrement] = true;
+            row["DataTypeName"] = "integer";
+
+            tbl.Rows.Add(row);
+          }
+          else
+          {
+            last.Sync(0);
+            using (DataTable tblSub = last._reader.GetSchemaTable())
+            {
+              foreach (DataRow row in tblSub.Rows)
+              {
+                object[] o = row.ItemArray;
+                DataRow newrow = tbl.Rows.Add(o);
+                newrow[SchemaTableOptionalColumn.IsHidden] = true;
+                newrow[SchemaTableColumn.ColumnOrdinal] = tbl.Rows.Count - 1;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteMetaDataCollectionNames.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteMetaDataCollectionNames.cs
@@ -1,54 +1,54 @@
-/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-
-  /// <summary>
-  /// MetaDataCollections specific to SQLite
-  /// </summary>
-  public static class SqliteMetaDataCollectionNames
-  {
-    /// <summary>
-    /// Returns a list of databases attached to the connection
-    /// </summary>
-    public static readonly string Catalogs = "Catalogs";
-    /// <summary>
-    /// Returns column information for the specified table
-    /// </summary>
-    public static readonly string Columns = "Columns";
-    /// <summary>
-    /// Returns index information for the optionally-specified table
-    /// </summary>
-    public static readonly string Indexes = "Indexes";
-    /// <summary>
-    /// Returns base columns for the given index
-    /// </summary>
-    public static readonly string IndexColumns = "IndexColumns";
-    /// <summary>
-    /// Returns the tables in the given catalog
-    /// </summary>
-    public static readonly string Tables = "Tables";
-    /// <summary>
-    /// Returns user-defined views in the given catalog
-    /// </summary>
-    public static readonly string Views = "Views";
-    /// <summary>
-    /// Returns underlying column information on the given view
-    /// </summary>
-    public static readonly string ViewColumns = "ViewColumns";
-    /// <summary>
-    /// Returns foreign key information for the given catalog
-    /// </summary>
-    public static readonly string ForeignKeys = "ForeignKeys";
-    /// <summary>
-    /// Returns the triggers on the database
-    /// </summary>
-    public static readonly string Triggers = "Triggers";
-  }
-}
+/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+
+  /// <summary>
+  /// MetaDataCollections specific to SQLite
+  /// </summary>
+  public static class SqliteMetaDataCollectionNames
+  {
+    /// <summary>
+    /// Returns a list of databases attached to the connection
+    /// </summary>
+    public static readonly string Catalogs = "Catalogs";
+    /// <summary>
+    /// Returns column information for the specified table
+    /// </summary>
+    public static readonly string Columns = "Columns";
+    /// <summary>
+    /// Returns index information for the optionally-specified table
+    /// </summary>
+    public static readonly string Indexes = "Indexes";
+    /// <summary>
+    /// Returns base columns for the given index
+    /// </summary>
+    public static readonly string IndexColumns = "IndexColumns";
+    /// <summary>
+    /// Returns the tables in the given catalog
+    /// </summary>
+    public static readonly string Tables = "Tables";
+    /// <summary>
+    /// Returns user-defined views in the given catalog
+    /// </summary>
+    public static readonly string Views = "Views";
+    /// <summary>
+    /// Returns underlying column information on the given view
+    /// </summary>
+    public static readonly string ViewColumns = "ViewColumns";
+    /// <summary>
+    /// Returns foreign key information for the given catalog
+    /// </summary>
+    public static readonly string ForeignKeys = "ForeignKeys";
+    /// <summary>
+    /// Returns the triggers on the database
+    /// </summary>
+    public static readonly string Triggers = "Triggers";
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteParameter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteParameter.cs
@@ -1,455 +1,455 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.ComponentModel;
-
-  /// <summary>
-  /// SQLite implementation of DbParameter.
-  /// </summary>
-  public sealed class SqliteParameter : DbParameter, ICloneable
-  {
-    /// <summary>
-    /// The data type of the parameter
-    /// </summary>
-    internal int            _dbType;
-    /// <summary>
-    /// The version information for mapping the parameter
-    /// </summary>
-    private DataRowVersion _rowVersion;
-    /// <summary>
-    /// The value of the data in the parameter
-    /// </summary>
-    private Object         _objValue;
-    /// <summary>
-    /// The source column for the parameter
-    /// </summary>
-    private string         _sourceColumn;
-    /// <summary>
-    /// The column name
-    /// </summary>
-    private string         _parameterName;
-    /// <summary>
-    /// The data size, unused by SQLite
-    /// </summary>
-    private int            _dataSize;
-
-    private bool           _nullable;
-    private bool           _nullMapping;
-
-    /// <summary>
-    /// Default constructor
-    /// </summary>
-    public SqliteParameter() 
-      : this(null, (DbType)(-1), 0, null, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs a named parameter given the specified parameter name
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    public SqliteParameter(string parameterName)
-      : this(parameterName, (DbType)(-1), 0, null, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs a named parameter given the specified parameter name and initial value
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="value">The initial value of the parameter</param>
-    public SqliteParameter(string parameterName, object value)
-      : this(parameterName, (DbType)(-1), 0, null, DataRowVersion.Current)
-    {
-      Value = value;
-    }
-
-    /// <summary>
-    /// Constructs a named parameter of the specified type
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="dbType">The datatype of the parameter</param>
-    public SqliteParameter(string parameterName, DbType dbType)
-      : this(parameterName, dbType, 0, null, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs a named parameter of the specified type and source column reference
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="dbType">The data type</param>
-    /// <param name="sourceColumn">The source column</param>
-    public SqliteParameter(string parameterName, DbType dbType, string sourceColumn)
-      : this(parameterName, dbType, 0, sourceColumn, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs a named parameter of the specified type, source column and row version
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="dbType">The data type</param>
-    /// <param name="sourceColumn">The source column</param>
-    /// <param name="rowVersion">The row version information</param>
-    public SqliteParameter(string parameterName, DbType dbType, string sourceColumn, DataRowVersion rowVersion)
-      : this(parameterName, dbType, 0, sourceColumn, rowVersion)
-    {
-    }
-
-    /// <summary>
-    /// Constructs an unnamed parameter of the specified data type
-    /// </summary>
-    /// <param name="dbType">The datatype of the parameter</param>
-    public SqliteParameter(DbType dbType)
-      : this(null, dbType, 0, null, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs an unnamed parameter of the specified data type and sets the initial value
-    /// </summary>
-    /// <param name="dbType">The datatype of the parameter</param>
-    /// <param name="value">The initial value of the parameter</param>
-    public SqliteParameter(DbType dbType, object value)
-      : this(null, dbType, 0, null, DataRowVersion.Current)
-    {
-      Value = value;
-    }
-
-    /// <summary>
-    /// Constructs an unnamed parameter of the specified data type and source column
-    /// </summary>
-    /// <param name="dbType">The datatype of the parameter</param>
-    /// <param name="sourceColumn">The source column</param>
-    public SqliteParameter(DbType dbType, string sourceColumn)
-      : this(null, dbType, 0, sourceColumn, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs an unnamed parameter of the specified data type, source column and row version
-    /// </summary>
-    /// <param name="dbType">The data type</param>
-    /// <param name="sourceColumn">The source column</param>
-    /// <param name="rowVersion">The row version information</param>
-    public SqliteParameter(DbType dbType, string sourceColumn, DataRowVersion rowVersion)
-      : this(null, dbType, 0, sourceColumn, rowVersion)
-    {
-    }
-
-    /// <summary>
-    /// Constructs a named parameter of the specified type and size
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize)
-      : this(parameterName, parameterType, parameterSize, null, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs a named parameter of the specified type, size and source column
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter</param>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    /// <param name="sourceColumn">The source column</param>
-    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, string sourceColumn)
-      : this(parameterName, parameterType, parameterSize, sourceColumn, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs a named parameter of the specified type, size, source column and row version
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter</param>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    /// <param name="sourceColumn">The source column</param>
-    /// <param name="rowVersion">The row version information</param>
-    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, string sourceColumn, DataRowVersion rowVersion)      
-    {
-      _parameterName = parameterName;
-      _dbType = (int)parameterType;
-      _sourceColumn = sourceColumn;
-      _rowVersion = rowVersion;
-      _objValue = null;
-      _dataSize = parameterSize;
-      _nullMapping = false;
-      _nullable = true;
-    }
-
-    private SqliteParameter(SqliteParameter source)
-      : this(source.ParameterName, (DbType)source._dbType, 0, source.Direction, source.IsNullable, 0, 0, source.SourceColumn, source.SourceVersion, source.Value)
-    {
-      _nullMapping = source._nullMapping;
-    }
-
-    /// <summary>
-    /// Constructs a named parameter of the specified type, size, source column and row version
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter</param>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    /// <param name="direction">Only input parameters are supported in SQLite</param>
-    /// <param name="isNullable">Ignored</param>
-    /// <param name="precision">Ignored</param>
-    /// <param name="scale">Ignored</param>
-    /// <param name="sourceColumn">The source column</param>
-    /// <param name="rowVersion">The row version information</param>
-    /// <param name="value">The initial value to assign the parameter</param>   
-#if !PLATFORM_COMPACTFRAMEWORK
-    [EditorBrowsable(EditorBrowsableState.Advanced)]
-#endif
-    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion rowVersion, object value)
-      : this(parameterName, parameterType, parameterSize, sourceColumn, rowVersion)
-    {
-      Direction = direction;
-      IsNullable = isNullable;
-      Value = value;
-    }
-
-    /// <summary>
-    /// Constructs a named parameter, yet another flavor
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter</param>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    /// <param name="direction">Only input parameters are supported in SQLite</param>
-    /// <param name="precision">Ignored</param>
-    /// <param name="scale">Ignored</param>
-    /// <param name="sourceColumn">The source column</param>
-    /// <param name="rowVersion">The row version information</param>
-    /// <param name="sourceColumnNullMapping">Whether or not this parameter is for comparing NULL's</param>
-    /// <param name="value">The intial value to assign the parameter</param>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [EditorBrowsable(EditorBrowsableState.Advanced)]
-#endif
-    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, ParameterDirection direction, byte precision, byte scale, string sourceColumn, DataRowVersion rowVersion, bool sourceColumnNullMapping, object value)
-      : this(parameterName, parameterType, parameterSize, sourceColumn, rowVersion)
-    {
-      Direction = direction;
-      SourceColumnNullMapping = sourceColumnNullMapping;
-      Value = value;
-    }
-
-    /// <summary>
-    /// Constructs an unnamed parameter of the specified type and size
-    /// </summary>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    public SqliteParameter(DbType parameterType, int parameterSize)
-      : this(null, parameterType, parameterSize, null, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs an unnamed parameter of the specified type, size, and source column
-    /// </summary>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    /// <param name="sourceColumn">The source column</param>
-    public SqliteParameter(DbType parameterType, int parameterSize, string sourceColumn)
-      : this(null, parameterType, parameterSize, sourceColumn, DataRowVersion.Current)
-    {
-    }
-
-    /// <summary>
-    /// Constructs an unnamed parameter of the specified type, size, source column and row version
-    /// </summary>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the parameter</param>
-    /// <param name="sourceColumn">The source column</param>
-    /// <param name="rowVersion">The row version information</param>
-    public SqliteParameter(DbType parameterType, int parameterSize, string sourceColumn, DataRowVersion rowVersion)
-      : this(null, parameterType, parameterSize, sourceColumn, rowVersion)
-    {
-    }
-
-    /// <summary>
-    /// Whether or not the parameter can contain a null value
-    /// </summary>
-    public override bool IsNullable
-    {
-      get
-      {
-        return _nullable;
-      }
-      set 
-      {
-        _nullable = value;
-      }
-    }
-
-    /// <summary>
-    /// Returns the datatype of the parameter
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DbProviderSpecificTypeProperty(true)]
-    [RefreshProperties(RefreshProperties.All)]
-#endif
-    public override DbType DbType
-    {
-      get
-      {
-        if (_dbType == -1)
-        {
-          if (_objValue != null && _objValue != DBNull.Value)
-          {
-            return SqliteConvert.TypeToDbType(_objValue.GetType());
-          }
-          return DbType.String; // Unassigned default value is String
-        }
-        return (DbType)_dbType;
-      }
-      set
-      {
-        _dbType = (int)value;
-      }
-    }
-
-    /// <summary>
-    /// Supports only input parameters
-    /// </summary>
-    public override ParameterDirection Direction
-    {
-      get
-      {
-        return ParameterDirection.Input;
-      }
-      set
-      {
-        if (value != ParameterDirection.Input)
-          throw new NotSupportedException();
-      }
-    }
-
-    /// <summary>
-    /// Returns the parameter name
-    /// </summary>
-    public override string ParameterName
-    {
-      get
-      {
-        return _parameterName;
-      }
-      set
-      {
-        _parameterName = value;
-      }
-    }
-
-    /// <summary>
-    /// Resets the DbType of the parameter so it can be inferred from the value
-    /// </summary>
-    public override void ResetDbType()
-    {
-      _dbType = -1;
-    }
-
-    /// <summary>
-    /// Returns the size of the parameter
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DefaultValue((int)0)]
-#endif
-    public override int Size
-    {
-      get
-      {
-        return _dataSize;
-      }
-      set
-      {
-        _dataSize = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets/sets the source column
-    /// </summary>
-    public override string SourceColumn
-    {
-      get
-      {
-        return _sourceColumn;
-      }
-      set
-      {
-        _sourceColumn = value;
-      }
-    }
-
-    /// <summary>
-    /// Used by DbCommandBuilder to determine the mapping for nullable fields
-    /// </summary>
-    public override bool SourceColumnNullMapping
-    {
-      get
-      {
-        return _nullMapping;
-      }
-      set
-      {
-        _nullMapping = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets and sets the row version
-    /// </summary>
-    public override DataRowVersion SourceVersion
-    {
-      get
-      {
-        return _rowVersion;
-      }
-      set
-      {
-        _rowVersion = value;
-      }
-    }
-
-    /// <summary>
-    /// Gets and sets the parameter value.  If no datatype was specified, the datatype will assume the type from the value given.
-    /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [TypeConverter(typeof(StringConverter)), RefreshProperties(RefreshProperties.All)]
-#endif
-    public override object Value
-    {
-      get
-      {
-        return _objValue;
-      }
-      set
-      {
-        _objValue = value;
-        if (_dbType == -1 && _objValue != null && _objValue != DBNull.Value) // If the DbType has never been assigned, try to glean one from the value's datatype 
-          _dbType = (int)SqliteConvert.TypeToDbType(_objValue.GetType());
-      }
-    }
-
-    /// <summary>
-    /// Clones a parameter
-    /// </summary>
-    /// <returns>A new, unassociated SqliteParameter</returns>
-    public object Clone()
-    {
-      SqliteParameter newparam = new SqliteParameter(this);
-
-      return newparam;
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.ComponentModel;
+
+  /// <summary>
+  /// SQLite implementation of DbParameter.
+  /// </summary>
+  public sealed class SqliteParameter : DbParameter, ICloneable
+  {
+    /// <summary>
+    /// The data type of the parameter
+    /// </summary>
+    internal int            _dbType;
+    /// <summary>
+    /// The version information for mapping the parameter
+    /// </summary>
+    private DataRowVersion _rowVersion;
+    /// <summary>
+    /// The value of the data in the parameter
+    /// </summary>
+    private Object         _objValue;
+    /// <summary>
+    /// The source column for the parameter
+    /// </summary>
+    private string         _sourceColumn;
+    /// <summary>
+    /// The column name
+    /// </summary>
+    private string         _parameterName;
+    /// <summary>
+    /// The data size, unused by SQLite
+    /// </summary>
+    private int            _dataSize;
+
+    private bool           _nullable;
+    private bool           _nullMapping;
+
+    /// <summary>
+    /// Default constructor
+    /// </summary>
+    public SqliteParameter() 
+      : this(null, (DbType)(-1), 0, null, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs a named parameter given the specified parameter name
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    public SqliteParameter(string parameterName)
+      : this(parameterName, (DbType)(-1), 0, null, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs a named parameter given the specified parameter name and initial value
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="value">The initial value of the parameter</param>
+    public SqliteParameter(string parameterName, object value)
+      : this(parameterName, (DbType)(-1), 0, null, DataRowVersion.Current)
+    {
+      Value = value;
+    }
+
+    /// <summary>
+    /// Constructs a named parameter of the specified type
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="dbType">The datatype of the parameter</param>
+    public SqliteParameter(string parameterName, DbType dbType)
+      : this(parameterName, dbType, 0, null, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs a named parameter of the specified type and source column reference
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="dbType">The data type</param>
+    /// <param name="sourceColumn">The source column</param>
+    public SqliteParameter(string parameterName, DbType dbType, string sourceColumn)
+      : this(parameterName, dbType, 0, sourceColumn, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs a named parameter of the specified type, source column and row version
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="dbType">The data type</param>
+    /// <param name="sourceColumn">The source column</param>
+    /// <param name="rowVersion">The row version information</param>
+    public SqliteParameter(string parameterName, DbType dbType, string sourceColumn, DataRowVersion rowVersion)
+      : this(parameterName, dbType, 0, sourceColumn, rowVersion)
+    {
+    }
+
+    /// <summary>
+    /// Constructs an unnamed parameter of the specified data type
+    /// </summary>
+    /// <param name="dbType">The datatype of the parameter</param>
+    public SqliteParameter(DbType dbType)
+      : this(null, dbType, 0, null, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs an unnamed parameter of the specified data type and sets the initial value
+    /// </summary>
+    /// <param name="dbType">The datatype of the parameter</param>
+    /// <param name="value">The initial value of the parameter</param>
+    public SqliteParameter(DbType dbType, object value)
+      : this(null, dbType, 0, null, DataRowVersion.Current)
+    {
+      Value = value;
+    }
+
+    /// <summary>
+    /// Constructs an unnamed parameter of the specified data type and source column
+    /// </summary>
+    /// <param name="dbType">The datatype of the parameter</param>
+    /// <param name="sourceColumn">The source column</param>
+    public SqliteParameter(DbType dbType, string sourceColumn)
+      : this(null, dbType, 0, sourceColumn, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs an unnamed parameter of the specified data type, source column and row version
+    /// </summary>
+    /// <param name="dbType">The data type</param>
+    /// <param name="sourceColumn">The source column</param>
+    /// <param name="rowVersion">The row version information</param>
+    public SqliteParameter(DbType dbType, string sourceColumn, DataRowVersion rowVersion)
+      : this(null, dbType, 0, sourceColumn, rowVersion)
+    {
+    }
+
+    /// <summary>
+    /// Constructs a named parameter of the specified type and size
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize)
+      : this(parameterName, parameterType, parameterSize, null, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs a named parameter of the specified type, size and source column
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter</param>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    /// <param name="sourceColumn">The source column</param>
+    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, string sourceColumn)
+      : this(parameterName, parameterType, parameterSize, sourceColumn, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs a named parameter of the specified type, size, source column and row version
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter</param>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    /// <param name="sourceColumn">The source column</param>
+    /// <param name="rowVersion">The row version information</param>
+    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, string sourceColumn, DataRowVersion rowVersion)      
+    {
+      _parameterName = parameterName;
+      _dbType = (int)parameterType;
+      _sourceColumn = sourceColumn;
+      _rowVersion = rowVersion;
+      _objValue = null;
+      _dataSize = parameterSize;
+      _nullMapping = false;
+      _nullable = true;
+    }
+
+    private SqliteParameter(SqliteParameter source)
+      : this(source.ParameterName, (DbType)source._dbType, 0, source.Direction, source.IsNullable, 0, 0, source.SourceColumn, source.SourceVersion, source.Value)
+    {
+      _nullMapping = source._nullMapping;
+    }
+
+    /// <summary>
+    /// Constructs a named parameter of the specified type, size, source column and row version
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter</param>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    /// <param name="direction">Only input parameters are supported in SQLite</param>
+    /// <param name="isNullable">Ignored</param>
+    /// <param name="precision">Ignored</param>
+    /// <param name="scale">Ignored</param>
+    /// <param name="sourceColumn">The source column</param>
+    /// <param name="rowVersion">The row version information</param>
+    /// <param name="value">The initial value to assign the parameter</param>   
+#if !PLATFORM_COMPACTFRAMEWORK
+    [EditorBrowsable(EditorBrowsableState.Advanced)]
+#endif
+    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion rowVersion, object value)
+      : this(parameterName, parameterType, parameterSize, sourceColumn, rowVersion)
+    {
+      Direction = direction;
+      IsNullable = isNullable;
+      Value = value;
+    }
+
+    /// <summary>
+    /// Constructs a named parameter, yet another flavor
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter</param>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    /// <param name="direction">Only input parameters are supported in SQLite</param>
+    /// <param name="precision">Ignored</param>
+    /// <param name="scale">Ignored</param>
+    /// <param name="sourceColumn">The source column</param>
+    /// <param name="rowVersion">The row version information</param>
+    /// <param name="sourceColumnNullMapping">Whether or not this parameter is for comparing NULL's</param>
+    /// <param name="value">The intial value to assign the parameter</param>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [EditorBrowsable(EditorBrowsableState.Advanced)]
+#endif
+    public SqliteParameter(string parameterName, DbType parameterType, int parameterSize, ParameterDirection direction, byte precision, byte scale, string sourceColumn, DataRowVersion rowVersion, bool sourceColumnNullMapping, object value)
+      : this(parameterName, parameterType, parameterSize, sourceColumn, rowVersion)
+    {
+      Direction = direction;
+      SourceColumnNullMapping = sourceColumnNullMapping;
+      Value = value;
+    }
+
+    /// <summary>
+    /// Constructs an unnamed parameter of the specified type and size
+    /// </summary>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    public SqliteParameter(DbType parameterType, int parameterSize)
+      : this(null, parameterType, parameterSize, null, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs an unnamed parameter of the specified type, size, and source column
+    /// </summary>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    /// <param name="sourceColumn">The source column</param>
+    public SqliteParameter(DbType parameterType, int parameterSize, string sourceColumn)
+      : this(null, parameterType, parameterSize, sourceColumn, DataRowVersion.Current)
+    {
+    }
+
+    /// <summary>
+    /// Constructs an unnamed parameter of the specified type, size, source column and row version
+    /// </summary>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the parameter</param>
+    /// <param name="sourceColumn">The source column</param>
+    /// <param name="rowVersion">The row version information</param>
+    public SqliteParameter(DbType parameterType, int parameterSize, string sourceColumn, DataRowVersion rowVersion)
+      : this(null, parameterType, parameterSize, sourceColumn, rowVersion)
+    {
+    }
+
+    /// <summary>
+    /// Whether or not the parameter can contain a null value
+    /// </summary>
+    public override bool IsNullable
+    {
+      get
+      {
+        return _nullable;
+      }
+      set 
+      {
+        _nullable = value;
+      }
+    }
+
+    /// <summary>
+    /// Returns the datatype of the parameter
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DbProviderSpecificTypeProperty(true)]
+    [RefreshProperties(RefreshProperties.All)]
+#endif
+    public override DbType DbType
+    {
+      get
+      {
+        if (_dbType == -1)
+        {
+          if (_objValue != null && _objValue != DBNull.Value)
+          {
+            return SqliteConvert.TypeToDbType(_objValue.GetType());
+          }
+          return DbType.String; // Unassigned default value is String
+        }
+        return (DbType)_dbType;
+      }
+      set
+      {
+        _dbType = (int)value;
+      }
+    }
+
+    /// <summary>
+    /// Supports only input parameters
+    /// </summary>
+    public override ParameterDirection Direction
+    {
+      get
+      {
+        return ParameterDirection.Input;
+      }
+      set
+      {
+        if (value != ParameterDirection.Input)
+          throw new NotSupportedException();
+      }
+    }
+
+    /// <summary>
+    /// Returns the parameter name
+    /// </summary>
+    public override string ParameterName
+    {
+      get
+      {
+        return _parameterName;
+      }
+      set
+      {
+        _parameterName = value;
+      }
+    }
+
+    /// <summary>
+    /// Resets the DbType of the parameter so it can be inferred from the value
+    /// </summary>
+    public override void ResetDbType()
+    {
+      _dbType = -1;
+    }
+
+    /// <summary>
+    /// Returns the size of the parameter
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DefaultValue((int)0)]
+#endif
+    public override int Size
+    {
+      get
+      {
+        return _dataSize;
+      }
+      set
+      {
+        _dataSize = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets/sets the source column
+    /// </summary>
+    public override string SourceColumn
+    {
+      get
+      {
+        return _sourceColumn;
+      }
+      set
+      {
+        _sourceColumn = value;
+      }
+    }
+
+    /// <summary>
+    /// Used by DbCommandBuilder to determine the mapping for nullable fields
+    /// </summary>
+    public override bool SourceColumnNullMapping
+    {
+      get
+      {
+        return _nullMapping;
+      }
+      set
+      {
+        _nullMapping = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets and sets the row version
+    /// </summary>
+    public override DataRowVersion SourceVersion
+    {
+      get
+      {
+        return _rowVersion;
+      }
+      set
+      {
+        _rowVersion = value;
+      }
+    }
+
+    /// <summary>
+    /// Gets and sets the parameter value.  If no datatype was specified, the datatype will assume the type from the value given.
+    /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [TypeConverter(typeof(StringConverter)), RefreshProperties(RefreshProperties.All)]
+#endif
+    public override object Value
+    {
+      get
+      {
+        return _objValue;
+      }
+      set
+      {
+        _objValue = value;
+        if (_dbType == -1 && _objValue != null && _objValue != DBNull.Value) // If the DbType has never been assigned, try to glean one from the value's datatype 
+          _dbType = (int)SqliteConvert.TypeToDbType(_objValue.GetType());
+      }
+    }
+
+    /// <summary>
+    /// Clones a parameter
+    /// </summary>
+    /// <returns>A new, unassociated SqliteParameter</returns>
+    public object Clone()
+    {
+      SqliteParameter newparam = new SqliteParameter(this);
+
+      return newparam;
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteParameterCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteParameterCollection.cs
@@ -1,473 +1,473 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-  using System.Collections.Generic;
-  using System.Globalization;
-  using System.ComponentModel;
-  using System.Reflection;
-
-  /// <summary>
-  /// SQLite implementation of DbParameterCollection.
-  /// </summary>
-#if !PLATFORM_COMPACTFRAMEWORK
-  [Editor("Microsoft.VSDesigner.Data.Design.DBParametersEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), ListBindable(false)]
-#endif
-  public sealed class SqliteParameterCollection : DbParameterCollection
-  {
-    /// <summary>
-    /// The underlying command to which this collection belongs
-    /// </summary>
-    private SqliteCommand         _command;
-    /// <summary>
-    /// The internal array of parameters in this collection
-    /// </summary>
-    private List<SqliteParameter> _parameterList;
-    /// <summary>
-    /// Determines whether or not all parameters have been bound to their statement(s)
-    /// </summary>
-    private bool                  _unboundFlag;
-
-    /// <summary>
-    /// Initializes the collection
-    /// </summary>
-    /// <param name="cmd">The command to which the collection belongs</param>
-    internal SqliteParameterCollection(SqliteCommand cmd)
-    {
-      _command = cmd;
-      _parameterList = new List<SqliteParameter>();
-      _unboundFlag = true;
-    }
-
-    /// <summary>
-    /// Returns true
-    /// </summary>
-    public override bool IsSynchronized
-    {
-      get { return true; }
-    }
-
-    /// <summary>
-    /// Returns false
-    /// </summary>
-    public override bool IsFixedSize
-    {
-      get { return false; }
-    }
-
-    /// <summary>
-    /// Returns false
-    /// </summary>
-    public override bool IsReadOnly
-    {
-      get { return false; }
-    }
-
-    /// <summary>
-    /// Returns null
-    /// </summary>
-    public override object SyncRoot
-    {
-      get { return null; }
-    }
-
-    /// <summary>
-    /// Retrieves an enumerator for the collection
-    /// </summary>
-    /// <returns>An enumerator for the underlying array</returns>
-    public override System.Collections.IEnumerator GetEnumerator()
-    {
-      return _parameterList.GetEnumerator();
-    }
-
-    /// <summary>
-    /// Adds a parameter to the collection
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the value</param>
-    /// <param name="sourceColumn">The source column</param>
-    /// <returns>A SqliteParameter object</returns>
-    public SqliteParameter Add(string parameterName, DbType parameterType, int parameterSize, string sourceColumn)
-    {
-      SqliteParameter param = new SqliteParameter(parameterName, parameterType, parameterSize, sourceColumn);
-      Add(param);
-
-      return param;
-    }
-
-    /// <summary>
-    /// Adds a parameter to the collection
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="parameterType">The data type</param>
-    /// <param name="parameterSize">The size of the value</param>
-    /// <returns>A SqliteParameter object</returns>
-    public SqliteParameter Add(string parameterName, DbType parameterType, int parameterSize)
-    {
-      SqliteParameter param = new SqliteParameter(parameterName, parameterType, parameterSize);
-      Add(param);
-
-      return param;
-    }
-
-    /// <summary>
-    /// Adds a parameter to the collection
-    /// </summary>
-    /// <param name="parameterName">The parameter name</param>
-    /// <param name="parameterType">The data type</param>
-    /// <returns>A SqliteParameter object</returns>
-    public SqliteParameter Add(string parameterName, DbType parameterType)
-    {
-      SqliteParameter param = new SqliteParameter(parameterName, parameterType);
-      Add(param);
-
-      return param;
-    }
-
-    /// <summary>
-    /// Adds a parameter to the collection
-    /// </summary>
-    /// <param name="parameter">The parameter to add</param>
-    /// <returns>A zero-based index of where the parameter is located in the array</returns>
-    public int Add(SqliteParameter parameter)
-    {
-      int n = -1;
-
-      if (String.IsNullOrEmpty(parameter.ParameterName) == false)
-      {
-        n = IndexOf(parameter.ParameterName);
-      }
-
-      if (n == -1)
-      {
-        n = _parameterList.Count;
-        _parameterList.Add((SqliteParameter)parameter);
-      }
-
-      SetParameter(n, parameter);
-
-      return n;
-    }
-
-    /// <summary>
-    /// Adds a parameter to the collection
-    /// </summary>
-    /// <param name="value">The parameter to add</param>
-    /// <returns>A zero-based index of where the parameter is located in the array</returns>
-#if !PLATFORM_COMPACTFRAMEWORK
-    [EditorBrowsable(EditorBrowsableState.Never)]
-#endif
-    public override int Add(object value)
-    {
-      return Add((SqliteParameter)value);
-    }
-
-    /// <summary>
-    /// Adds a named/unnamed parameter and its value to the parameter collection.
-    /// </summary>
-    /// <param name="parameterName">Name of the parameter, or null to indicate an unnamed parameter</param>
-    /// <param name="value">The initial value of the parameter</param>
-    /// <returns>Returns the SqliteParameter object created during the call.</returns>
-    public SqliteParameter AddWithValue(string parameterName, object value)
-    {
-      SqliteParameter param = new SqliteParameter(parameterName, value);
-      Add(param);
-
-      return param;
-    }
-
-    /// <summary>
-    /// Adds an array of parameters to the collection
-    /// </summary>
-    /// <param name="values">The array of parameters to add</param>
-    public void AddRange(SqliteParameter[] values)
-    {
-      int x = values.Length;
-      for (int n = 0; n < x; n++)
-        Add(values[n]);
-    }
-
-    /// <summary>
-    /// Adds an array of parameters to the collection
-    /// </summary>
-    /// <param name="values">The array of parameters to add</param>
-    public override void AddRange(Array values)
-    {
-      int x = values.Length;
-      for (int n = 0; n < x; n++)
-        Add((SqliteParameter)(values.GetValue(n)));
-    }
-
-    /// <summary>
-    /// Clears the array and resets the collection
-    /// </summary>
-    public override void Clear()
-    {
-      _unboundFlag = true;
-      _parameterList.Clear();
-    }
-
-    /// <summary>
-    /// Determines if the named parameter exists in the collection
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter to check</param>
-    /// <returns>True if the parameter is in the collection</returns>
-    public override bool Contains(string parameterName)
-    {
-      return (IndexOf(parameterName) != -1);
-    }
-
-    /// <summary>
-    /// Determines if the parameter exists in the collection
-    /// </summary>
-    /// <param name="value">The SqliteParameter to check</param>
-    /// <returns>True if the parameter is in the collection</returns>
-    public override bool Contains(object value)
-    {
-      return _parameterList.Contains((SqliteParameter)value);
-    }
-
-    /// <summary>
-    /// Not implemented
-    /// </summary>
-    /// <param name="array"></param>
-    /// <param name="index"></param>
-    public override void CopyTo(Array array, int index)
-    {
-      throw new NotImplementedException();
-    }
-
-    /// <summary>
-    /// Returns a count of parameters in the collection
-    /// </summary>
-    public override int Count
-    {
-      get { return _parameterList.Count; }
-    }
-
-    /// <summary>
-    /// Overloaded to specialize the return value of the default indexer
-    /// </summary>
-    /// <param name="parameterName">Name of the parameter to get/set</param>
-    /// <returns>The specified named SQLite parameter</returns>
-    public new SqliteParameter this[string parameterName]
-    {
-      get
-      {
-        return (SqliteParameter)GetParameter(parameterName);
-      }
-      set
-      {
-        SetParameter(parameterName, value);
-      }
-    }
-
-    /// <summary>
-    /// Overloaded to specialize the return value of the default indexer
-    /// </summary>
-    /// <param name="index">The index of the parameter to get/set</param>
-    /// <returns>The specified SQLite parameter</returns>
-    public new SqliteParameter this[int index]
-    {
-      get
-      {
-        return (SqliteParameter)GetParameter(index);
-      }
-      set
-      {
-        SetParameter(index, value);
-      }
-    }
-    /// <summary>
-    /// Retrieve a parameter by name from the collection
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter to fetch</param>
-    /// <returns>A DbParameter object</returns>
-    protected override DbParameter GetParameter(string parameterName)
-    {
-      return GetParameter(IndexOf(parameterName));
-    }
-
-    /// <summary>
-    /// Retrieves a parameter by its index in the collection
-    /// </summary>
-    /// <param name="index">The index of the parameter to retrieve</param>
-    /// <returns>A DbParameter object</returns>
-    protected override DbParameter GetParameter(int index)
-    {
-      return _parameterList[index];
-    }
-
-    /// <summary>
-    /// Returns the index of a parameter given its name
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter to find</param>
-    /// <returns>-1 if not found, otherwise a zero-based index of the parameter</returns>
-    public override int IndexOf(string parameterName)
-    {
-      int x = _parameterList.Count;
-      for (int n = 0; n < x; n++)
-      {
-        if (String.Compare(parameterName, _parameterList[n].ParameterName, true, CultureInfo.InvariantCulture) == 0)
-          return n;
-      }
-      return -1;
-    }
-
-    /// <summary>
-    /// Returns the index of a parameter
-    /// </summary>
-    /// <param name="value">The parameter to find</param>
-    /// <returns>-1 if not found, otherwise a zero-based index of the parameter</returns>
-    public override int IndexOf(object value)
-    {
-      return _parameterList.IndexOf((SqliteParameter)value);
-    }
-
-    /// <summary>
-    /// Inserts a parameter into the array at the specified location
-    /// </summary>
-    /// <param name="index">The zero-based index to insert the parameter at</param>
-    /// <param name="value">The parameter to insert</param>
-    public override void Insert(int index, object value)
-    {
-      _unboundFlag = true;
-      _parameterList.Insert(index, (SqliteParameter)value);
-    }
-
-    /// <summary>
-    /// Removes a parameter from the collection
-    /// </summary>
-    /// <param name="value">The parameter to remove</param>
-    public override void Remove(object value)
-    {
-      _unboundFlag = true;
-      _parameterList.Remove((SqliteParameter)value);
-    }
-
-    /// <summary>
-    /// Removes a parameter from the collection given its name
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter to remove</param>
-    public override void RemoveAt(string parameterName)
-    {
-      RemoveAt(IndexOf(parameterName));
-    }
-
-    /// <summary>
-    /// Removes a parameter from the collection given its index
-    /// </summary>
-    /// <param name="index">The zero-based parameter index to remove</param>
-    public override void RemoveAt(int index)
-    {
-      _unboundFlag = true;
-      _parameterList.RemoveAt(index);
-    }
-
-    /// <summary>
-    /// Re-assign the named parameter to a new parameter object
-    /// </summary>
-    /// <param name="parameterName">The name of the parameter to replace</param>
-    /// <param name="value">The new parameter</param>
-    protected override void SetParameter(string parameterName, DbParameter value)
-    {
-      SetParameter(IndexOf(parameterName), value);
-    }
-
-    /// <summary>
-    /// Re-assign a parameter at the specified index
-    /// </summary>
-    /// <param name="index">The zero-based index of the parameter to replace</param>
-    /// <param name="value">The new parameter</param>
-    protected override void SetParameter(int index, DbParameter value)
-    {
-      _unboundFlag = true;
-      _parameterList[index] = (SqliteParameter)value;
-    }
-
-    /// <summary>
-    /// Un-binds all parameters from their statements
-    /// </summary>
-    internal void Unbind()
-    {
-      _unboundFlag = true;
-    }
-
-    /// <summary>
-    /// This function attempts to map all parameters in the collection to all statements in a Command.
-    /// Since named parameters may span multiple statements, this function makes sure all statements are bound
-    /// to the same named parameter.  Unnamed parameters are bound in sequence.
-    /// </summary>
-    internal void MapParameters(SqliteStatement activeStatement)
-    {
-      if (_unboundFlag == false || _parameterList.Count == 0 || _command._statementList == null) return;
-
-      int nUnnamed = 0;
-      string s;
-      int n;
-      int y = -1;
-      SqliteStatement stmt;
-
-      foreach(SqliteParameter p in _parameterList)
-      {
-        y ++;
-        s = p.ParameterName;
-        if (s == null)
-        {
-          s = String.Format(CultureInfo.InvariantCulture, ";{0}", nUnnamed);
-          nUnnamed++;
-        }
-
-        int x;
-        bool isMapped = false;
-
-        if (activeStatement == null)
-          x = _command._statementList.Count;
-        else
-          x = 1;
-
-        stmt = activeStatement;
-        for (n = 0; n < x; n++)
-        {
-          isMapped = false;
-          if (stmt == null) stmt = _command._statementList[n];
-          if (stmt._paramNames != null)
-          {
-            if (stmt.MapParameter(s, p) == true)
-              isMapped = true;
-          }
-          stmt = null;
-        }
-
-        // If the parameter has a name, but the SQL statement uses unnamed references, this can happen -- attempt to map
-        // the parameter by its index in the collection
-        if (isMapped == false)
-        {
-          s = String.Format(CultureInfo.InvariantCulture, ";{0}", y);
-
-          stmt = activeStatement;
-          for (n = 0; n < x; n++)
-          {
-            if (stmt == null) stmt = _command._statementList[n];
-            if (stmt._paramNames != null)
-            {
-              if (stmt.MapParameter(s, p) == true)
-                isMapped = true;
-            }
-            stmt = null;
-          }
-        }
-      }
-      if (activeStatement == null) _unboundFlag = false;
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+  using System.Collections.Generic;
+  using System.Globalization;
+  using System.ComponentModel;
+  using System.Reflection;
+
+  /// <summary>
+  /// SQLite implementation of DbParameterCollection.
+  /// </summary>
+#if !PLATFORM_COMPACTFRAMEWORK
+  [Editor("Microsoft.VSDesigner.Data.Design.DBParametersEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), ListBindable(false)]
+#endif
+  public sealed class SqliteParameterCollection : DbParameterCollection
+  {
+    /// <summary>
+    /// The underlying command to which this collection belongs
+    /// </summary>
+    private SqliteCommand         _command;
+    /// <summary>
+    /// The internal array of parameters in this collection
+    /// </summary>
+    private List<SqliteParameter> _parameterList;
+    /// <summary>
+    /// Determines whether or not all parameters have been bound to their statement(s)
+    /// </summary>
+    private bool                  _unboundFlag;
+
+    /// <summary>
+    /// Initializes the collection
+    /// </summary>
+    /// <param name="cmd">The command to which the collection belongs</param>
+    internal SqliteParameterCollection(SqliteCommand cmd)
+    {
+      _command = cmd;
+      _parameterList = new List<SqliteParameter>();
+      _unboundFlag = true;
+    }
+
+    /// <summary>
+    /// Returns true
+    /// </summary>
+    public override bool IsSynchronized
+    {
+      get { return true; }
+    }
+
+    /// <summary>
+    /// Returns false
+    /// </summary>
+    public override bool IsFixedSize
+    {
+      get { return false; }
+    }
+
+    /// <summary>
+    /// Returns false
+    /// </summary>
+    public override bool IsReadOnly
+    {
+      get { return false; }
+    }
+
+    /// <summary>
+    /// Returns null
+    /// </summary>
+    public override object SyncRoot
+    {
+      get { return null; }
+    }
+
+    /// <summary>
+    /// Retrieves an enumerator for the collection
+    /// </summary>
+    /// <returns>An enumerator for the underlying array</returns>
+    public override System.Collections.IEnumerator GetEnumerator()
+    {
+      return _parameterList.GetEnumerator();
+    }
+
+    /// <summary>
+    /// Adds a parameter to the collection
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the value</param>
+    /// <param name="sourceColumn">The source column</param>
+    /// <returns>A SqliteParameter object</returns>
+    public SqliteParameter Add(string parameterName, DbType parameterType, int parameterSize, string sourceColumn)
+    {
+      SqliteParameter param = new SqliteParameter(parameterName, parameterType, parameterSize, sourceColumn);
+      Add(param);
+
+      return param;
+    }
+
+    /// <summary>
+    /// Adds a parameter to the collection
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="parameterType">The data type</param>
+    /// <param name="parameterSize">The size of the value</param>
+    /// <returns>A SqliteParameter object</returns>
+    public SqliteParameter Add(string parameterName, DbType parameterType, int parameterSize)
+    {
+      SqliteParameter param = new SqliteParameter(parameterName, parameterType, parameterSize);
+      Add(param);
+
+      return param;
+    }
+
+    /// <summary>
+    /// Adds a parameter to the collection
+    /// </summary>
+    /// <param name="parameterName">The parameter name</param>
+    /// <param name="parameterType">The data type</param>
+    /// <returns>A SqliteParameter object</returns>
+    public SqliteParameter Add(string parameterName, DbType parameterType)
+    {
+      SqliteParameter param = new SqliteParameter(parameterName, parameterType);
+      Add(param);
+
+      return param;
+    }
+
+    /// <summary>
+    /// Adds a parameter to the collection
+    /// </summary>
+    /// <param name="parameter">The parameter to add</param>
+    /// <returns>A zero-based index of where the parameter is located in the array</returns>
+    public int Add(SqliteParameter parameter)
+    {
+      int n = -1;
+
+      if (String.IsNullOrEmpty(parameter.ParameterName) == false)
+      {
+        n = IndexOf(parameter.ParameterName);
+      }
+
+      if (n == -1)
+      {
+        n = _parameterList.Count;
+        _parameterList.Add((SqliteParameter)parameter);
+      }
+
+      SetParameter(n, parameter);
+
+      return n;
+    }
+
+    /// <summary>
+    /// Adds a parameter to the collection
+    /// </summary>
+    /// <param name="value">The parameter to add</param>
+    /// <returns>A zero-based index of where the parameter is located in the array</returns>
+#if !PLATFORM_COMPACTFRAMEWORK
+    [EditorBrowsable(EditorBrowsableState.Never)]
+#endif
+    public override int Add(object value)
+    {
+      return Add((SqliteParameter)value);
+    }
+
+    /// <summary>
+    /// Adds a named/unnamed parameter and its value to the parameter collection.
+    /// </summary>
+    /// <param name="parameterName">Name of the parameter, or null to indicate an unnamed parameter</param>
+    /// <param name="value">The initial value of the parameter</param>
+    /// <returns>Returns the SqliteParameter object created during the call.</returns>
+    public SqliteParameter AddWithValue(string parameterName, object value)
+    {
+      SqliteParameter param = new SqliteParameter(parameterName, value);
+      Add(param);
+
+      return param;
+    }
+
+    /// <summary>
+    /// Adds an array of parameters to the collection
+    /// </summary>
+    /// <param name="values">The array of parameters to add</param>
+    public void AddRange(SqliteParameter[] values)
+    {
+      int x = values.Length;
+      for (int n = 0; n < x; n++)
+        Add(values[n]);
+    }
+
+    /// <summary>
+    /// Adds an array of parameters to the collection
+    /// </summary>
+    /// <param name="values">The array of parameters to add</param>
+    public override void AddRange(Array values)
+    {
+      int x = values.Length;
+      for (int n = 0; n < x; n++)
+        Add((SqliteParameter)(values.GetValue(n)));
+    }
+
+    /// <summary>
+    /// Clears the array and resets the collection
+    /// </summary>
+    public override void Clear()
+    {
+      _unboundFlag = true;
+      _parameterList.Clear();
+    }
+
+    /// <summary>
+    /// Determines if the named parameter exists in the collection
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter to check</param>
+    /// <returns>True if the parameter is in the collection</returns>
+    public override bool Contains(string parameterName)
+    {
+      return (IndexOf(parameterName) != -1);
+    }
+
+    /// <summary>
+    /// Determines if the parameter exists in the collection
+    /// </summary>
+    /// <param name="value">The SqliteParameter to check</param>
+    /// <returns>True if the parameter is in the collection</returns>
+    public override bool Contains(object value)
+    {
+      return _parameterList.Contains((SqliteParameter)value);
+    }
+
+    /// <summary>
+    /// Not implemented
+    /// </summary>
+    /// <param name="array"></param>
+    /// <param name="index"></param>
+    public override void CopyTo(Array array, int index)
+    {
+      throw new NotImplementedException();
+    }
+
+    /// <summary>
+    /// Returns a count of parameters in the collection
+    /// </summary>
+    public override int Count
+    {
+      get { return _parameterList.Count; }
+    }
+
+    /// <summary>
+    /// Overloaded to specialize the return value of the default indexer
+    /// </summary>
+    /// <param name="parameterName">Name of the parameter to get/set</param>
+    /// <returns>The specified named SQLite parameter</returns>
+    public new SqliteParameter this[string parameterName]
+    {
+      get
+      {
+        return (SqliteParameter)GetParameter(parameterName);
+      }
+      set
+      {
+        SetParameter(parameterName, value);
+      }
+    }
+
+    /// <summary>
+    /// Overloaded to specialize the return value of the default indexer
+    /// </summary>
+    /// <param name="index">The index of the parameter to get/set</param>
+    /// <returns>The specified SQLite parameter</returns>
+    public new SqliteParameter this[int index]
+    {
+      get
+      {
+        return (SqliteParameter)GetParameter(index);
+      }
+      set
+      {
+        SetParameter(index, value);
+      }
+    }
+    /// <summary>
+    /// Retrieve a parameter by name from the collection
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter to fetch</param>
+    /// <returns>A DbParameter object</returns>
+    protected override DbParameter GetParameter(string parameterName)
+    {
+      return GetParameter(IndexOf(parameterName));
+    }
+
+    /// <summary>
+    /// Retrieves a parameter by its index in the collection
+    /// </summary>
+    /// <param name="index">The index of the parameter to retrieve</param>
+    /// <returns>A DbParameter object</returns>
+    protected override DbParameter GetParameter(int index)
+    {
+      return _parameterList[index];
+    }
+
+    /// <summary>
+    /// Returns the index of a parameter given its name
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter to find</param>
+    /// <returns>-1 if not found, otherwise a zero-based index of the parameter</returns>
+    public override int IndexOf(string parameterName)
+    {
+      int x = _parameterList.Count;
+      for (int n = 0; n < x; n++)
+      {
+        if (String.Compare(parameterName, _parameterList[n].ParameterName, true, CultureInfo.InvariantCulture) == 0)
+          return n;
+      }
+      return -1;
+    }
+
+    /// <summary>
+    /// Returns the index of a parameter
+    /// </summary>
+    /// <param name="value">The parameter to find</param>
+    /// <returns>-1 if not found, otherwise a zero-based index of the parameter</returns>
+    public override int IndexOf(object value)
+    {
+      return _parameterList.IndexOf((SqliteParameter)value);
+    }
+
+    /// <summary>
+    /// Inserts a parameter into the array at the specified location
+    /// </summary>
+    /// <param name="index">The zero-based index to insert the parameter at</param>
+    /// <param name="value">The parameter to insert</param>
+    public override void Insert(int index, object value)
+    {
+      _unboundFlag = true;
+      _parameterList.Insert(index, (SqliteParameter)value);
+    }
+
+    /// <summary>
+    /// Removes a parameter from the collection
+    /// </summary>
+    /// <param name="value">The parameter to remove</param>
+    public override void Remove(object value)
+    {
+      _unboundFlag = true;
+      _parameterList.Remove((SqliteParameter)value);
+    }
+
+    /// <summary>
+    /// Removes a parameter from the collection given its name
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter to remove</param>
+    public override void RemoveAt(string parameterName)
+    {
+      RemoveAt(IndexOf(parameterName));
+    }
+
+    /// <summary>
+    /// Removes a parameter from the collection given its index
+    /// </summary>
+    /// <param name="index">The zero-based parameter index to remove</param>
+    public override void RemoveAt(int index)
+    {
+      _unboundFlag = true;
+      _parameterList.RemoveAt(index);
+    }
+
+    /// <summary>
+    /// Re-assign the named parameter to a new parameter object
+    /// </summary>
+    /// <param name="parameterName">The name of the parameter to replace</param>
+    /// <param name="value">The new parameter</param>
+    protected override void SetParameter(string parameterName, DbParameter value)
+    {
+      SetParameter(IndexOf(parameterName), value);
+    }
+
+    /// <summary>
+    /// Re-assign a parameter at the specified index
+    /// </summary>
+    /// <param name="index">The zero-based index of the parameter to replace</param>
+    /// <param name="value">The new parameter</param>
+    protected override void SetParameter(int index, DbParameter value)
+    {
+      _unboundFlag = true;
+      _parameterList[index] = (SqliteParameter)value;
+    }
+
+    /// <summary>
+    /// Un-binds all parameters from their statements
+    /// </summary>
+    internal void Unbind()
+    {
+      _unboundFlag = true;
+    }
+
+    /// <summary>
+    /// This function attempts to map all parameters in the collection to all statements in a Command.
+    /// Since named parameters may span multiple statements, this function makes sure all statements are bound
+    /// to the same named parameter.  Unnamed parameters are bound in sequence.
+    /// </summary>
+    internal void MapParameters(SqliteStatement activeStatement)
+    {
+      if (_unboundFlag == false || _parameterList.Count == 0 || _command._statementList == null) return;
+
+      int nUnnamed = 0;
+      string s;
+      int n;
+      int y = -1;
+      SqliteStatement stmt;
+
+      foreach(SqliteParameter p in _parameterList)
+      {
+        y ++;
+        s = p.ParameterName;
+        if (s == null)
+        {
+          s = String.Format(CultureInfo.InvariantCulture, ";{0}", nUnnamed);
+          nUnnamed++;
+        }
+
+        int x;
+        bool isMapped = false;
+
+        if (activeStatement == null)
+          x = _command._statementList.Count;
+        else
+          x = 1;
+
+        stmt = activeStatement;
+        for (n = 0; n < x; n++)
+        {
+          isMapped = false;
+          if (stmt == null) stmt = _command._statementList[n];
+          if (stmt._paramNames != null)
+          {
+            if (stmt.MapParameter(s, p) == true)
+              isMapped = true;
+          }
+          stmt = null;
+        }
+
+        // If the parameter has a name, but the SQL statement uses unnamed references, this can happen -- attempt to map
+        // the parameter by its index in the collection
+        if (isMapped == false)
+        {
+          s = String.Format(CultureInfo.InvariantCulture, ";{0}", y);
+
+          stmt = activeStatement;
+          for (n = 0; n < x; n++)
+          {
+            if (stmt == null) stmt = _command._statementList[n];
+            if (stmt._paramNames != null)
+            {
+              if (stmt.MapParameter(s, p) == true)
+                isMapped = true;
+            }
+            stmt = null;
+          }
+        }
+      }
+      if (activeStatement == null) _unboundFlag = false;
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteStatement.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteStatement.cs
@@ -1,243 +1,243 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Collections.Generic;
-  using System.Globalization;
-
-  /// <summary>
-  /// Represents a single SQL statement in SQLite.
-  /// </summary>
-  internal sealed class SqliteStatement : IDisposable
-  {
-    /// <summary>
-    /// The underlying SQLite object this statement is bound to
-    /// </summary>
-    internal SQLiteBase        _sql;
-    /// <summary>
-    /// The command text of this SQL statement
-    /// </summary>
-    internal string            _sqlStatement;
-    /// <summary>
-    /// The actual statement pointer
-    /// </summary>
-    internal SqliteStatementHandle  _sqlite_stmt;
-    /// <summary>
-    /// An index from which unnamed parameters begin
-    /// </summary>
-    internal int               _unnamedParameters;
-    /// <summary>
-    /// Names of the parameters as SQLite understands them to be
-    /// </summary>
-    internal string[]          _paramNames;
-    /// <summary>
-    /// Parameters for this statement
-    /// </summary>
-    internal SqliteParameter[] _paramValues;
-    /// <summary>
-    /// Command this statement belongs to (if any)
-    /// </summary>
-    internal SqliteCommand     _command;
-
-    private string[] _types;
-
-    /// <summary>
-    /// Initializes the statement and attempts to get all information about parameters in the statement
-    /// </summary>
-    /// <param name="sqlbase">The base SQLite object</param>
-    /// <param name="stmt">The statement</param>
-    /// <param name="strCommand">The command text for this statement</param>
-    /// <param name="previous">The previous command in a multi-statement command</param>
-    internal SqliteStatement(SQLiteBase sqlbase, SqliteStatementHandle stmt, string strCommand, SqliteStatement previous)
-    {
-      _sql     = sqlbase;
-      _sqlite_stmt = stmt;
-      _sqlStatement  = strCommand;
-
-      // Determine parameters for this statement (if any) and prepare space for them.
-      int nCmdStart = 0;
-      int n = _sql.Bind_ParamCount(this);
-      int x;
-      string s;
-
-      if (n > 0)
-      {
-        if (previous != null)
-          nCmdStart = previous._unnamedParameters;
-
-        _paramNames = new string[n];
-        _paramValues = new SqliteParameter[n];
-
-        for (x = 0; x < n; x++)
-        {
-          s = _sql.Bind_ParamName(this, x + 1);
-          if (String.IsNullOrEmpty(s))
-          {
-            s = String.Format(CultureInfo.InvariantCulture, ";{0}", nCmdStart);
-            nCmdStart++;
-            _unnamedParameters++;
-          }
-          _paramNames[x] = s;
-          _paramValues[x] = null;
-        }
-      }
-    }
-
-    /// <summary>
-    /// Called by SqliteParameterCollection, this function determines if the specified parameter name belongs to
-    /// this statement, and if so, keeps a reference to the parameter so it can be bound later.
-    /// </summary>
-    /// <param name="s">The parameter name to map</param>
-    /// <param name="p">The parameter to assign it</param>
-    internal bool MapParameter(string s, SqliteParameter p)
-    {
-      if (_paramNames == null) return false;
-      
-      int startAt = 0;
-      if (s.Length > 0)
-      {
-        if (":$@;".IndexOf(s[0]) == -1)
-          startAt = 1;
-      }
-
-      int x = _paramNames.Length;
-      for (int n = 0; n < x; n++)
-      {
-        if (String.Compare(_paramNames[n], startAt, s, 0, Math.Max(_paramNames[n].Length - startAt, s.Length), true, CultureInfo.InvariantCulture) == 0)
-        {
-          _paramValues[n] = p;
-          return true;
-        }
-      }
-      return false;
-    }
-
-    #region IDisposable Members
-    /// <summary>
-    /// Disposes and finalizes the statement
-    /// </summary>
-    public void Dispose()
-    {
-      if (_sqlite_stmt != null)
-      {
-        _sqlite_stmt.Dispose();
-      }
-      _sqlite_stmt = null;
-      
-      _paramNames = null;
-      _paramValues = null;
-      _sql = null;
-      _sqlStatement = null;
-    }
-    #endregion
-    
-    /// <summary>
-    ///  Bind all parameters, making sure the caller didn't miss any
-    /// </summary>
-    internal void BindParameters()
-    {
-      if (_paramNames == null) return;
-
-      int x = _paramNames.Length;
-      for (int n = 0; n < x; n++)
-      {
-        BindParameter(n + 1, _paramValues[n]);
-      }
-    }
-
-    /// <summary>
-    /// Perform the bind operation for an individual parameter
-    /// </summary>
-    /// <param name="index">The index of the parameter to bind</param>
-    /// <param name="param">The parameter we're binding</param>
-    private void BindParameter(int index, SqliteParameter param)
-    {
-      if (param == null)
-        throw new SqliteException((int)SQLiteErrorCode.Error, "Insufficient parameters supplied to the command");
-
-      object obj = param.Value;
-      DbType objType = param.DbType;
-
-      if (Convert.IsDBNull(obj) || obj == null)
-      {
-        _sql.Bind_Null(this, index);
-        return;
-      }
-
-      if (objType == DbType.Object)
-        objType = SqliteConvert.TypeToDbType(obj.GetType());
-
-      switch (objType)
-      {
-        case DbType.Date:
-        case DbType.Time:
-        case DbType.DateTime:
-          _sql.Bind_DateTime(this, index, Convert.ToDateTime(obj, CultureInfo.CurrentCulture));
-          break;
-        case DbType.UInt32:
-        case DbType.Int64:
-        case DbType.UInt64:
-          _sql.Bind_Int64(this, index, Convert.ToInt64(obj, CultureInfo.CurrentCulture));
-          break;
-        case DbType.Boolean:
-        case DbType.Int16:
-        case DbType.Int32:
-        case DbType.UInt16:
-        case DbType.SByte:
-        case DbType.Byte:
-          _sql.Bind_Int32(this, index, Convert.ToInt32(obj, CultureInfo.CurrentCulture));
-          break;
-        case DbType.Single:
-        case DbType.Double:
-        case DbType.Currency:
-        //case DbType.Decimal: // Dont store decimal as double ... loses precision
-          _sql.Bind_Double(this, index, Convert.ToDouble(obj, CultureInfo.CurrentCulture));
-          break;
-        case DbType.Binary:
-          _sql.Bind_Blob(this, index, (byte[])obj);
-          break;
-        case DbType.Guid:
-          if (_command.Connection._binaryGuid == true)
-            _sql.Bind_Blob(this, index, ((Guid)obj).ToByteArray());
-          else
-            _sql.Bind_Text(this, index, obj.ToString());
-
-          break;
-        case DbType.Decimal: // Dont store decimal as double ... loses precision
-          _sql.Bind_Text(this, index, Convert.ToDecimal(obj, CultureInfo.CurrentCulture).ToString(CultureInfo.InvariantCulture));
-          break;
-        default:
-          _sql.Bind_Text(this, index, obj.ToString());
-          break;
-      }
-    }
-
-    internal string[] TypeDefinitions
-    {
-      get { return _types; }
-    }
-
-    internal void SetTypes(string typedefs)
-    {
-      int pos = typedefs.IndexOf("TYPES", 0, StringComparison.OrdinalIgnoreCase);
-      if (pos == -1) throw new ArgumentOutOfRangeException();
-
-      string[] types = typedefs.Substring(pos + 6).Replace(" ", "").Replace(";", "").Replace("\"", "").Replace("[", "").Replace("]", "").Replace("`","").Split(',', '\r', '\n', '\t');
-
-      int n;
-      for (n = 0; n < types.Length; n++)
-      {
-        if (String.IsNullOrEmpty(types[n]) == true)
-          types[n] = null;
-      }
-      _types = types;
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Collections.Generic;
+  using System.Globalization;
+
+  /// <summary>
+  /// Represents a single SQL statement in SQLite.
+  /// </summary>
+  internal sealed class SqliteStatement : IDisposable
+  {
+    /// <summary>
+    /// The underlying SQLite object this statement is bound to
+    /// </summary>
+    internal SQLiteBase        _sql;
+    /// <summary>
+    /// The command text of this SQL statement
+    /// </summary>
+    internal string            _sqlStatement;
+    /// <summary>
+    /// The actual statement pointer
+    /// </summary>
+    internal SqliteStatementHandle  _sqlite_stmt;
+    /// <summary>
+    /// An index from which unnamed parameters begin
+    /// </summary>
+    internal int               _unnamedParameters;
+    /// <summary>
+    /// Names of the parameters as SQLite understands them to be
+    /// </summary>
+    internal string[]          _paramNames;
+    /// <summary>
+    /// Parameters for this statement
+    /// </summary>
+    internal SqliteParameter[] _paramValues;
+    /// <summary>
+    /// Command this statement belongs to (if any)
+    /// </summary>
+    internal SqliteCommand     _command;
+
+    private string[] _types;
+
+    /// <summary>
+    /// Initializes the statement and attempts to get all information about parameters in the statement
+    /// </summary>
+    /// <param name="sqlbase">The base SQLite object</param>
+    /// <param name="stmt">The statement</param>
+    /// <param name="strCommand">The command text for this statement</param>
+    /// <param name="previous">The previous command in a multi-statement command</param>
+    internal SqliteStatement(SQLiteBase sqlbase, SqliteStatementHandle stmt, string strCommand, SqliteStatement previous)
+    {
+      _sql     = sqlbase;
+      _sqlite_stmt = stmt;
+      _sqlStatement  = strCommand;
+
+      // Determine parameters for this statement (if any) and prepare space for them.
+      int nCmdStart = 0;
+      int n = _sql.Bind_ParamCount(this);
+      int x;
+      string s;
+
+      if (n > 0)
+      {
+        if (previous != null)
+          nCmdStart = previous._unnamedParameters;
+
+        _paramNames = new string[n];
+        _paramValues = new SqliteParameter[n];
+
+        for (x = 0; x < n; x++)
+        {
+          s = _sql.Bind_ParamName(this, x + 1);
+          if (String.IsNullOrEmpty(s))
+          {
+            s = String.Format(CultureInfo.InvariantCulture, ";{0}", nCmdStart);
+            nCmdStart++;
+            _unnamedParameters++;
+          }
+          _paramNames[x] = s;
+          _paramValues[x] = null;
+        }
+      }
+    }
+
+    /// <summary>
+    /// Called by SqliteParameterCollection, this function determines if the specified parameter name belongs to
+    /// this statement, and if so, keeps a reference to the parameter so it can be bound later.
+    /// </summary>
+    /// <param name="s">The parameter name to map</param>
+    /// <param name="p">The parameter to assign it</param>
+    internal bool MapParameter(string s, SqliteParameter p)
+    {
+      if (_paramNames == null) return false;
+      
+      int startAt = 0;
+      if (s.Length > 0)
+      {
+        if (":$@;".IndexOf(s[0]) == -1)
+          startAt = 1;
+      }
+
+      int x = _paramNames.Length;
+      for (int n = 0; n < x; n++)
+      {
+        if (String.Compare(_paramNames[n], startAt, s, 0, Math.Max(_paramNames[n].Length - startAt, s.Length), true, CultureInfo.InvariantCulture) == 0)
+        {
+          _paramValues[n] = p;
+          return true;
+        }
+      }
+      return false;
+    }
+
+    #region IDisposable Members
+    /// <summary>
+    /// Disposes and finalizes the statement
+    /// </summary>
+    public void Dispose()
+    {
+      if (_sqlite_stmt != null)
+      {
+        _sqlite_stmt.Dispose();
+      }
+      _sqlite_stmt = null;
+      
+      _paramNames = null;
+      _paramValues = null;
+      _sql = null;
+      _sqlStatement = null;
+    }
+    #endregion
+    
+    /// <summary>
+    ///  Bind all parameters, making sure the caller didn't miss any
+    /// </summary>
+    internal void BindParameters()
+    {
+      if (_paramNames == null) return;
+
+      int x = _paramNames.Length;
+      for (int n = 0; n < x; n++)
+      {
+        BindParameter(n + 1, _paramValues[n]);
+      }
+    }
+
+    /// <summary>
+    /// Perform the bind operation for an individual parameter
+    /// </summary>
+    /// <param name="index">The index of the parameter to bind</param>
+    /// <param name="param">The parameter we're binding</param>
+    private void BindParameter(int index, SqliteParameter param)
+    {
+      if (param == null)
+        throw new SqliteException((int)SQLiteErrorCode.Error, "Insufficient parameters supplied to the command");
+
+      object obj = param.Value;
+      DbType objType = param.DbType;
+
+      if (Convert.IsDBNull(obj) || obj == null)
+      {
+        _sql.Bind_Null(this, index);
+        return;
+      }
+
+      if (objType == DbType.Object)
+        objType = SqliteConvert.TypeToDbType(obj.GetType());
+
+      switch (objType)
+      {
+        case DbType.Date:
+        case DbType.Time:
+        case DbType.DateTime:
+          _sql.Bind_DateTime(this, index, Convert.ToDateTime(obj, CultureInfo.CurrentCulture));
+          break;
+        case DbType.UInt32:
+        case DbType.Int64:
+        case DbType.UInt64:
+          _sql.Bind_Int64(this, index, Convert.ToInt64(obj, CultureInfo.CurrentCulture));
+          break;
+        case DbType.Boolean:
+        case DbType.Int16:
+        case DbType.Int32:
+        case DbType.UInt16:
+        case DbType.SByte:
+        case DbType.Byte:
+          _sql.Bind_Int32(this, index, Convert.ToInt32(obj, CultureInfo.CurrentCulture));
+          break;
+        case DbType.Single:
+        case DbType.Double:
+        case DbType.Currency:
+        //case DbType.Decimal: // Dont store decimal as double ... loses precision
+          _sql.Bind_Double(this, index, Convert.ToDouble(obj, CultureInfo.CurrentCulture));
+          break;
+        case DbType.Binary:
+          _sql.Bind_Blob(this, index, (byte[])obj);
+          break;
+        case DbType.Guid:
+          if (_command.Connection._binaryGuid == true)
+            _sql.Bind_Blob(this, index, ((Guid)obj).ToByteArray());
+          else
+            _sql.Bind_Text(this, index, obj.ToString());
+
+          break;
+        case DbType.Decimal: // Dont store decimal as double ... loses precision
+          _sql.Bind_Text(this, index, Convert.ToDecimal(obj, CultureInfo.CurrentCulture).ToString(CultureInfo.InvariantCulture));
+          break;
+        default:
+          _sql.Bind_Text(this, index, obj.ToString());
+          break;
+      }
+    }
+
+    internal string[] TypeDefinitions
+    {
+      get { return _types; }
+    }
+
+    internal void SetTypes(string typedefs)
+    {
+      int pos = typedefs.IndexOf("TYPES", 0, StringComparison.OrdinalIgnoreCase);
+      if (pos == -1) throw new ArgumentOutOfRangeException();
+
+      string[] types = typedefs.Substring(pos + 6).Replace(" ", "").Replace(";", "").Replace("\"", "").Replace("[", "").Replace("]", "").Replace("`","").Split(',', '\r', '\n', '\t');
+
+      int n;
+      for (n = 0; n < types.Length; n++)
+      {
+        if (String.IsNullOrEmpty(types[n]) == true)
+          types[n] = null;
+      }
+      _types = types;
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteTransaction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteTransaction.cs
@@ -1,171 +1,171 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Data;
-  using System.Data.Common;
-
-  /// <summary>
-  /// SQLite implementation of DbTransaction.
-  /// </summary>
-  public sealed class SqliteTransaction : DbTransaction
-  {
-    /// <summary>
-    /// The connection to which this transaction is bound
-    /// </summary>
-    internal SqliteConnection _cnn;
-    internal long _version; // Matches the version of the connection
-    private IsolationLevel _level;
-
-    /// <summary>
-    /// Constructs the transaction object, binding it to the supplied connection
-    /// </summary>
-    /// <param name="connection">The connection to open a transaction on</param>
-    /// <param name="deferredLock">TRUE to defer the writelock, or FALSE to lock immediately</param>
-    internal SqliteTransaction(SqliteConnection connection, bool deferredLock)
-    {
-      _cnn = connection;
-      _version = _cnn._version;
-
-      _level = (deferredLock == true) ? IsolationLevel.ReadCommitted : IsolationLevel.Serializable;
-
-      if (_cnn._transactionLevel++ == 0)
-      {
-        try
-        {
-          using (SqliteCommand cmd = _cnn.CreateCommand())
-          {
-            if (!deferredLock)
-              cmd.CommandText = "BEGIN IMMEDIATE";
-            else
-              cmd.CommandText = "BEGIN";
-
-            cmd.ExecuteNonQuery();
-          }
-        }
-        catch (SqliteException)
-        {
-          _cnn._transactionLevel--;
-          _cnn = null;
-          throw;
-        }
-      }
-    }
-
-    /// <summary>
-    /// Commits the current transaction.
-    /// </summary>
-    public override void Commit()
-    {
-      IsValid(true);
-
-      if (_cnn._transactionLevel - 1 == 0)
-      {
-        using (SqliteCommand cmd = _cnn.CreateCommand())
-        {
-          cmd.CommandText = "COMMIT";
-          cmd.ExecuteNonQuery();
-        }
-      }
-      _cnn._transactionLevel--;
-      _cnn = null;
-    }
-
-    /// <summary>
-    /// Returns the underlying connection to which this transaction applies.
-    /// </summary>
-    public new SqliteConnection Connection
-    {
-      get { return _cnn; }
-    }
-
-    /// <summary>
-    /// Forwards to the local Connection property
-    /// </summary>
-    protected override DbConnection DbConnection
-    {
-      get { return Connection; }
-    }
-
-    /// <summary>
-    /// Disposes the transaction.  If it is currently active, any changes are rolled back.
-    /// </summary>
-    protected override void Dispose(bool disposing)
-    {
-      if (disposing)
-      {
-        lock (this)
-        {
-          if (IsValid(false))
-            Rollback();
-
-          _cnn = null;
-        }
-      }
-      base.Dispose(disposing);
-    }
-
-    /// <summary>
-    /// Gets the isolation level of the transaction.  SQLite only supports Serializable transactions.
-    /// </summary>
-    public override IsolationLevel IsolationLevel
-    {
-      get { return _level; }
-    }
-
-    /// <summary>
-    /// Rolls back the active transaction.
-    /// </summary>
-    public override void Rollback()
-    {
-      IsValid(true);
-
-      IssueRollback(_cnn);
-
-      _cnn._transactionLevel = 0;
-      _cnn = null;
-    }
-
-    internal static void IssueRollback(SqliteConnection cnn)
-    {
-      using (SqliteCommand cmd = cnn.CreateCommand())
-      {
-        cmd.CommandText = "ROLLBACK";
-        cmd.ExecuteNonQuery();
-      }
-    }
-
-    internal bool IsValid(bool throwError)
-    {
-      if (_cnn == null)
-      {
-        if (throwError == true) throw new ArgumentNullException("No connection associated with this transaction");
-        else return false;
-      }
-
-      if (_cnn._transactionLevel == 0)
-      {
-        if (throwError == true) throw new SqliteException((int)SQLiteErrorCode.Misuse, "No transaction is active on this connection");
-        else return false;
-      }
-      if (_cnn._version != _version)
-      {
-        if (throwError == true) throw new SqliteException((int)SQLiteErrorCode.Misuse, "The connection was closed and re-opened, changes were rolled back");
-        else return false;
-      }
-      if (_cnn.State != ConnectionState.Open)
-      {
-        if (throwError == true) throw new SqliteException((int)SQLiteErrorCode.Misuse, "Connection was closed");
-        else return false;
-      }
-
-      return true;
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Data;
+  using System.Data.Common;
+
+  /// <summary>
+  /// SQLite implementation of DbTransaction.
+  /// </summary>
+  public sealed class SqliteTransaction : DbTransaction
+  {
+    /// <summary>
+    /// The connection to which this transaction is bound
+    /// </summary>
+    internal SqliteConnection _cnn;
+    internal long _version; // Matches the version of the connection
+    private IsolationLevel _level;
+
+    /// <summary>
+    /// Constructs the transaction object, binding it to the supplied connection
+    /// </summary>
+    /// <param name="connection">The connection to open a transaction on</param>
+    /// <param name="deferredLock">TRUE to defer the writelock, or FALSE to lock immediately</param>
+    internal SqliteTransaction(SqliteConnection connection, bool deferredLock)
+    {
+      _cnn = connection;
+      _version = _cnn._version;
+
+      _level = (deferredLock == true) ? IsolationLevel.ReadCommitted : IsolationLevel.Serializable;
+
+      if (_cnn._transactionLevel++ == 0)
+      {
+        try
+        {
+          using (SqliteCommand cmd = _cnn.CreateCommand())
+          {
+            if (!deferredLock)
+              cmd.CommandText = "BEGIN IMMEDIATE";
+            else
+              cmd.CommandText = "BEGIN";
+
+            cmd.ExecuteNonQuery();
+          }
+        }
+        catch (SqliteException)
+        {
+          _cnn._transactionLevel--;
+          _cnn = null;
+          throw;
+        }
+      }
+    }
+
+    /// <summary>
+    /// Commits the current transaction.
+    /// </summary>
+    public override void Commit()
+    {
+      IsValid(true);
+
+      if (_cnn._transactionLevel - 1 == 0)
+      {
+        using (SqliteCommand cmd = _cnn.CreateCommand())
+        {
+          cmd.CommandText = "COMMIT";
+          cmd.ExecuteNonQuery();
+        }
+      }
+      _cnn._transactionLevel--;
+      _cnn = null;
+    }
+
+    /// <summary>
+    /// Returns the underlying connection to which this transaction applies.
+    /// </summary>
+    public new SqliteConnection Connection
+    {
+      get { return _cnn; }
+    }
+
+    /// <summary>
+    /// Forwards to the local Connection property
+    /// </summary>
+    protected override DbConnection DbConnection
+    {
+      get { return Connection; }
+    }
+
+    /// <summary>
+    /// Disposes the transaction.  If it is currently active, any changes are rolled back.
+    /// </summary>
+    protected override void Dispose(bool disposing)
+    {
+      if (disposing)
+      {
+        lock (this)
+        {
+          if (IsValid(false))
+            Rollback();
+
+          _cnn = null;
+        }
+      }
+      base.Dispose(disposing);
+    }
+
+    /// <summary>
+    /// Gets the isolation level of the transaction.  SQLite only supports Serializable transactions.
+    /// </summary>
+    public override IsolationLevel IsolationLevel
+    {
+      get { return _level; }
+    }
+
+    /// <summary>
+    /// Rolls back the active transaction.
+    /// </summary>
+    public override void Rollback()
+    {
+      IsValid(true);
+
+      IssueRollback(_cnn);
+
+      _cnn._transactionLevel = 0;
+      _cnn = null;
+    }
+
+    internal static void IssueRollback(SqliteConnection cnn)
+    {
+      using (SqliteCommand cmd = cnn.CreateCommand())
+      {
+        cmd.CommandText = "ROLLBACK";
+        cmd.ExecuteNonQuery();
+      }
+    }
+
+    internal bool IsValid(bool throwError)
+    {
+      if (_cnn == null)
+      {
+        if (throwError == true) throw new ArgumentNullException("No connection associated with this transaction");
+        else return false;
+      }
+
+      if (_cnn._transactionLevel == 0)
+      {
+        if (throwError == true) throw new SqliteException((int)SQLiteErrorCode.Misuse, "No transaction is active on this connection");
+        else return false;
+      }
+      if (_cnn._version != _version)
+      {
+        if (throwError == true) throw new SqliteException((int)SQLiteErrorCode.Misuse, "The connection was closed and re-opened, changes were rolled back");
+        else return false;
+      }
+      if (_cnn.State != ConnectionState.Open)
+      {
+        if (throwError == true) throw new SqliteException((int)SQLiteErrorCode.Misuse, "Connection was closed");
+        else return false;
+      }
+
+      return true;
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SR.Designer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SR.Designer.cs
@@ -1,112 +1,112 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3053
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Mono.Data.Sqlite {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    internal class SR {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        internal SR() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SR", typeof(SR).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; standalone=&quot;yes&quot;?&gt;
-        ///&lt;DocumentElement&gt;
-        ///  &lt;DataTypes&gt;
-        ///    &lt;TypeName&gt;smallint&lt;/TypeName&gt;
-        ///    &lt;ProviderDbType&gt;10&lt;/ProviderDbType&gt;
-        ///    &lt;ColumnSize&gt;5&lt;/ColumnSize&gt;
-        ///    &lt;DataType&gt;System.Int16&lt;/DataType&gt;
-        ///    &lt;CreateFormat&gt;smallint&lt;/CreateFormat&gt;
-        ///    &lt;IsAutoIncrementable&gt;false&lt;/IsAutoIncrementable&gt;
-        ///    &lt;IsCaseSensitive&gt;false&lt;/IsCaseSensitive&gt;
-        ///    &lt;IsFixedLength&gt;true&lt;/IsFixedLength&gt;
-        ///    &lt;IsFixedPrecisionScale&gt;true&lt;/IsFixedPrecisionScale&gt;
-        ///    &lt;IsLong&gt;false&lt;/IsLong&gt;
-        ///    &lt;IsNullable&gt;true&lt;/ [rest of string was truncated]&quot;;.
-        /// </summary>
-        internal static string DataTypes {
-            get {
-                return ResourceManager.GetString("DataTypes", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE.
-        /// </summary>
-        internal static string Keywords {
-            get {
-                return ResourceManager.GetString("Keywords", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
-        ///&lt;DocumentElement&gt;
-        ///  &lt;MetaDataCollections&gt;
-        ///    &lt;CollectionName&gt;MetaDataCollections&lt;/CollectionName&gt;
-        ///    &lt;NumberOfRestrictions&gt;0&lt;/NumberOfRestrictions&gt;
-        ///    &lt;NumberOfIdentifierParts&gt;0&lt;/NumberOfIdentifierParts&gt;
-        ///  &lt;/MetaDataCollections&gt;
-        ///  &lt;MetaDataCollections&gt;
-        ///    &lt;CollectionName&gt;DataSourceInformation&lt;/CollectionName&gt;
-        ///    &lt;NumberOfRestrictions&gt;0&lt;/NumberOfRestrictions&gt;
-        ///    &lt;NumberOfIdentifierParts&gt;0&lt;/NumberOfIdentifierParts&gt;
-        ///  &lt;/MetaDataCollections&gt;
-        ///  &lt;MetaDataC [rest of string was truncated]&quot;;.
-        /// </summary>
-        internal static string MetaDataCollections {
-            get {
-                return ResourceManager.GetString("MetaDataCollections", resourceCulture);
-            }
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3053
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Mono.Data.Sqlite {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    internal class SR {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        internal SR() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SR", typeof(SR).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; standalone=&quot;yes&quot;?&gt;
+        ///&lt;DocumentElement&gt;
+        ///  &lt;DataTypes&gt;
+        ///    &lt;TypeName&gt;smallint&lt;/TypeName&gt;
+        ///    &lt;ProviderDbType&gt;10&lt;/ProviderDbType&gt;
+        ///    &lt;ColumnSize&gt;5&lt;/ColumnSize&gt;
+        ///    &lt;DataType&gt;System.Int16&lt;/DataType&gt;
+        ///    &lt;CreateFormat&gt;smallint&lt;/CreateFormat&gt;
+        ///    &lt;IsAutoIncrementable&gt;false&lt;/IsAutoIncrementable&gt;
+        ///    &lt;IsCaseSensitive&gt;false&lt;/IsCaseSensitive&gt;
+        ///    &lt;IsFixedLength&gt;true&lt;/IsFixedLength&gt;
+        ///    &lt;IsFixedPrecisionScale&gt;true&lt;/IsFixedPrecisionScale&gt;
+        ///    &lt;IsLong&gt;false&lt;/IsLong&gt;
+        ///    &lt;IsNullable&gt;true&lt;/ [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string DataTypes {
+            get {
+                return ResourceManager.GetString("DataTypes", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE.
+        /// </summary>
+        internal static string Keywords {
+            get {
+                return ResourceManager.GetString("Keywords", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
+        ///&lt;DocumentElement&gt;
+        ///  &lt;MetaDataCollections&gt;
+        ///    &lt;CollectionName&gt;MetaDataCollections&lt;/CollectionName&gt;
+        ///    &lt;NumberOfRestrictions&gt;0&lt;/NumberOfRestrictions&gt;
+        ///    &lt;NumberOfIdentifierParts&gt;0&lt;/NumberOfIdentifierParts&gt;
+        ///  &lt;/MetaDataCollections&gt;
+        ///  &lt;MetaDataCollections&gt;
+        ///    &lt;CollectionName&gt;DataSourceInformation&lt;/CollectionName&gt;
+        ///    &lt;NumberOfRestrictions&gt;0&lt;/NumberOfRestrictions&gt;
+        ///    &lt;NumberOfIdentifierParts&gt;0&lt;/NumberOfIdentifierParts&gt;
+        ///  &lt;/MetaDataCollections&gt;
+        ///  &lt;MetaDataC [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string MetaDataCollections {
+            get {
+                return ResourceManager.GetString("MetaDataCollections", resourceCulture);
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/UnsafeNativeMethods.cs
@@ -1,919 +1,919 @@
-﻿/********************************************************
- * ADO.NET 2.0 Data Provider for SQLite Version 3.X
- * Written by Robert Simpson (robert@blackcastlesoft.com)
- * 
- * Released to the public domain, use at your own risk!
- ********************************************************/
-
-namespace Mono.Data.Sqlite
-{
-  using System;
-  using System.Security;
-  using System.Runtime.InteropServices;
-
-#if !PLATFORM_COMPACTFRAMEWORK
-  [SuppressUnmanagedCodeSecurity]
-#endif
-  internal static class UnsafeNativeMethods
-  {
-    internal static readonly bool use_sqlite3_close_v2 = false;
-    internal static readonly bool use_sqlite3_open_v2 = false;
-    internal static readonly bool use_sqlite3_create_function_v2 = false;
-    static UnsafeNativeMethods()
-    {
-      // calculate the version number parts
-      // https://www.sqlite.org/c3ref/c_source_id.html
-      // (<major> * 1000000) + (<minor> * 1000) + (<release>)
-      int versionNumber = sqlite3_libversion_number();
-      int release = versionNumber % 1000;
-      int minor = (versionNumber / 1000) % 1000;
-      int major = versionNumber / 1000000;
-      Version version = new Version(major, minor, release);
-
-      // set the various versions
-      // https://sqlite.org/changes.html
-      use_sqlite3_open_v2 = version >= new Version(3, 5, 0);
-      use_sqlite3_close_v2 = version >= new Version(3, 7, 14);
-      use_sqlite3_create_function_v2 = version >= new Version(3, 7, 3);
-    }
-
-#if !SQLITE_STANDARD
-
-#if !USE_INTEROP_DLL
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    private const string SQLITE_DLL = "Mono.Data.Sqlite.DLL";
-#else
-    internal const string SQLITE_DLL = "SQLite.Interop.061.DLL";
-#endif // PLATFORM_COMPACTFRAMEWORK
-
-#else
-    private const string SQLITE_DLL = "SQLite.Interop.DLL";
-#endif // USE_INTEROP_DLL
-
-#elif MONOTOUCH
-	private const string SQLITE_DLL = "/usr/lib/libsqlite3.dylib";
-#else
-    private const string SQLITE_DLL = "sqlite3";
-#endif
-
-    // This section uses interop calls that also fetch text length to optimize conversion.  
-    // When using the standard dll, we can replace these calls with normal sqlite calls and do unoptimized conversions instead afterwards
-    #region interop added textlength calls
-
-#if !SQLITE_STANDARD
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_bind_parameter_name_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_database_name_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_database_name16_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_decltype_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_decltype16_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_name_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_name16_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_origin_name_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_origin_name16_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_table_name_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_table_name16_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_text_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_column_text16_interop(IntPtr stmt, int index, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_errmsg_interop(IntPtr db, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_prepare_interop(IntPtr db, IntPtr pSql, int nBytes, out IntPtr stmt, out IntPtr ptrRemain, out int nRemain);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_table_column_metadata_interop(IntPtr db, byte[] dbName, byte[] tblName, byte[] colName, out IntPtr ptrDataType, out IntPtr ptrCollSeq, out int notNull, out int primaryKey, out int autoInc, out int dtLen, out int csLen);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_value_text_interop(IntPtr p, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_value_text16_interop(IntPtr p, out int len);
-#endif
-
-    #endregion
-
-    // These functions add existing functionality on top of SQLite and require a little effort to
-    // get working when using the standard SQLite library.
-    #region interop added functionality
-
-#if !SQLITE_STANDARD
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_close_interop(IntPtr db);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_create_function_interop(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal, int needCollSeq);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_finalize_interop(IntPtr stmt);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_open_interop(byte[] utf8Filename, int flags, out IntPtr db);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_open16_interop(byte[] utf8Filename, int flags, out IntPtr db);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_reset_interop(IntPtr stmt);
-
-#endif
-
-    #endregion
-
-    // The standard api call equivalents of the above interop calls
-    #region standard versions of interop functions
-
-#if SQLITE_STANDARD
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_close(IntPtr db);
-		
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_close_v2(IntPtr db);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_create_function(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-		[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-		[DllImport(SQLITE_DLL)]
-#endif
-		internal static extern int sqlite3_create_function_v2(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal, SQLiteFinalCallback fdestroy);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_finalize(IntPtr stmt);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_open_v2(byte[] utf8Filename, out IntPtr db, int flags, IntPtr vfs);
-
-    // Compatibility with versions < 3.5.0
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_open(byte[] utf8Filename, out IntPtr db);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
-#else
-    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
-#endif
-    internal static extern int sqlite3_open16(string fileName, out IntPtr db);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_reset(IntPtr stmt);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_bind_parameter_name(IntPtr stmt, int index);
-
-// Apple does not include those symbols in it's libsqlite3
-#if !MONOTOUCH
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_database_name(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_database_name16(IntPtr stmt, int index);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_decltype(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_decltype16(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_name(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_name16(IntPtr stmt, int index);
-
-#if !MONOTOUCH
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_origin_name(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_origin_name16(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_table_name(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_table_name16(IntPtr stmt, int index);
-#endif // !MONOTOUCH
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_text(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_text16(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_errmsg(IntPtr db);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_prepare(IntPtr db, IntPtr pSql, int nBytes, out IntPtr stmt, out IntPtr ptrRemain);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_table_column_metadata(IntPtr db, byte[] dbName, byte[] tblName, byte[] colName, out IntPtr ptrDataType, out IntPtr ptrCollSeq, out int notNull, out int primaryKey, out int autoInc);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_value_text(IntPtr p);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_value_text16(IntPtr p);
-#endif
-
-    #endregion
-
-    // These functions are custom and have no equivalent standard library method.
-    // All of them are "nice to haves" and not necessarily "need to haves".
-    #region no equivalent standard method
-
-#if !SQLITE_STANDARD
-    [DllImport(SQLITE_DLL)]
-    internal static extern IntPtr sqlite3_context_collseq(IntPtr context, out int type, out int enc, out int len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_context_collcompare(IntPtr context, byte[] p1, int p1len, byte[] p2, int p2len);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_cursor_rowid(IntPtr stmt, int cursor, out long rowid);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_index_column_info_interop(IntPtr db, byte[] catalog, byte[] IndexName, byte[] ColumnName, out int sortOrder, out int onError, out IntPtr Collation, out int colllen);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern void sqlite3_resetall_interop(IntPtr db);
-
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_table_cursor(IntPtr stmt, int db, int tableRootPage);
-#endif
-
-    #endregion
-
-    // These are obsolete and will be removed in the future 
-    #region windows ntfs filesystem only
-
-#if !SQLITE_STANDARD
-    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode, SetLastError = true)]
-    internal static extern int sqlite3_compressfile(string fileName);
-
-    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode, SetLastError = true)]
-    internal static extern int sqlite3_decompressfile(string fileName);
-#endif
-
-    #endregion
-
-    // Standard API calls global across versions.  There are a few instances of interop calls
-    // scattered in here, but they are only active when PLATFORM_COMPACTFRAMEWORK is declared.
-    #region standard sqlite api calls
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_libversion();
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern void sqlite3_interrupt(IntPtr db);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_changes(IntPtr db);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_busy_timeout(IntPtr db, int ms);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_bind_blob(IntPtr stmt, int index, Byte[] value, int nSize, IntPtr nTransient);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern int sqlite3_bind_double(IntPtr stmt, int index, double value);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_bind_double_interop(IntPtr stmt, int index, ref double value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_bind_int(IntPtr stmt, int index, int value);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern int sqlite3_bind_int64(IntPtr stmt, int index, long value);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern int sqlite3_bind_int64_interop(IntPtr stmt, int index, ref long value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_bind_null(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_bind_text(IntPtr stmt, int index, byte[] value, int nlen, IntPtr pvReserved);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_bind_parameter_count(IntPtr stmt);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_bind_parameter_index(IntPtr stmt, byte[] strName);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_column_count(IntPtr stmt);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_step(IntPtr stmt);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern double sqlite3_column_double(IntPtr stmt, int index);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern void sqlite3_column_double_interop(IntPtr stmt, int index, out double value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_column_int(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern long sqlite3_column_int64(IntPtr stmt, int index);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern void sqlite3_column_int64_interop(IntPtr stmt, int index, out long value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_column_blob(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_column_bytes(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern TypeAffinity sqlite3_column_type(IntPtr stmt, int index);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_create_collation(IntPtr db, byte[] strName, int nType, IntPtr pvUser, SQLiteCollation func);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_aggregate_count(IntPtr context);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_value_blob(IntPtr p);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_value_bytes(IntPtr p);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern double sqlite3_value_double(IntPtr p);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern void sqlite3_value_double_interop(IntPtr p, out double value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_value_int(IntPtr p);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern long sqlite3_value_int64(IntPtr p);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern void sqlite3_value_int64_interop(IntPtr p, out Int64 value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern TypeAffinity sqlite3_value_type(IntPtr p);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern void sqlite3_result_blob(IntPtr context, byte[] value, int nSize, IntPtr pvReserved);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern void sqlite3_result_double(IntPtr context, double value);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern void sqlite3_result_double_interop(IntPtr context, ref double value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern void sqlite3_result_error(IntPtr context, byte[] strErr, int nLen);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern void sqlite3_result_int(IntPtr context, int value);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-    internal static extern void sqlite3_result_int64(IntPtr context, long value);
-#else
-    [DllImport(SQLITE_DLL)]
-    internal static extern void sqlite3_result_int64_interop(IntPtr context, ref Int64 value);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern void sqlite3_result_null(IntPtr context);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern void sqlite3_result_text(IntPtr context, byte[] value, int nLen, IntPtr pvReserved);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_aggregate_context(IntPtr context, int nBytes);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
-#else
-    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
-#endif
-    internal static extern int sqlite3_bind_text16(IntPtr stmt, int index, string value, int nlen, IntPtr pvReserved);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
-#else
-    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
-#endif
-    internal static extern void sqlite3_result_error16(IntPtr context, string strName, int nLen);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
-#else
-    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
-#endif
-    internal static extern void sqlite3_result_text16(IntPtr context, string strName, int nLen, IntPtr pvReserved);
-
-#if !MONOTOUCH
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_key(IntPtr db, byte[] key, int keylen);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_rekey(IntPtr db, byte[] key, int keylen);
-#endif
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_update_hook(IntPtr db, SQLiteUpdateCallback func, IntPtr pvUser);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_commit_hook(IntPtr db, SQLiteCommitCallback func, IntPtr pvUser);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_rollback_hook(IntPtr db, SQLiteRollbackCallback func, IntPtr pvUser);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_db_handle(IntPtr stmt);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern IntPtr sqlite3_next_stmt(IntPtr db, IntPtr stmt);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_exec(IntPtr db, byte[] strSql, IntPtr pvCallback, IntPtr pvParam, out IntPtr errMsg);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_config (SQLiteConfig config);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-		[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-		[DllImport(SQLITE_DLL)]
-#endif
-		internal static extern IntPtr sqlite3_user_data (IntPtr context);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_free (IntPtr ptr);
-
-#if !PLATFORM_COMPACTFRAMEWORK
-    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
-#else
-    [DllImport(SQLITE_DLL)]
-#endif
-    internal static extern int sqlite3_libversion_number();
-
-    #endregion
-  }
-
-#if PLATFORM_COMPACTFRAMEWORK
-  internal abstract class CriticalHandle : IDisposable
-  {
-    private bool _isClosed;
-    protected IntPtr handle;
-    
-    protected CriticalHandle(IntPtr invalidHandleValue)
-    {
-      handle = invalidHandleValue;
-      _isClosed = false;
-    }
-
-    ~CriticalHandle()
-    {
-      Dispose(false);
-    }
-
-    private void Cleanup()
-    {
-      if (!IsClosed)
-      {
-        this._isClosed = true;
-        if (!IsInvalid)
-        {
-          ReleaseHandle();
-          GC.SuppressFinalize(this);
-        }
-      }
-    }
-
-    public void Close()
-    {
-      Dispose(true);
-    }
-
-    public void Dispose()
-    {
-      Dispose(true);
-    }
-
-    protected virtual void Dispose(bool disposing)
-    {
-      Cleanup();
-    }
-
-    protected abstract bool ReleaseHandle();
-
-    protected void SetHandle(IntPtr value)
-    {
-      handle = value;
-    }
-
-    public void SetHandleAsInvalid()
-    {
-      _isClosed = true;
-      GC.SuppressFinalize(this);
-    }
-
-    public bool IsClosed
-    {
-      get { return _isClosed; }
-    }
-
-    public abstract bool IsInvalid
-    {
-      get;
-    }
-
-  }
-
-#endif
-
-  // Handles the unmanaged database pointer, and provides finalization support for it.
-  internal class SqliteConnectionHandle : CriticalHandle
-  {
-    public static implicit operator IntPtr(SqliteConnectionHandle db)
-    {
-      return db.handle;
-    }
-
-    public static implicit operator SqliteConnectionHandle(IntPtr db)
-    {
-      return new SqliteConnectionHandle(db);
-    }
-
-    private SqliteConnectionHandle(IntPtr db)
-      : this()
-    {
-      SetHandle(db);
-    }
-
-    internal SqliteConnectionHandle()
-      : base(IntPtr.Zero)
-    {
-    }
-
-    protected override bool ReleaseHandle()
-    {
-      try
-      {
-        SQLiteBase.CloseConnection(this);
-      }
-      catch (SqliteException)
-      {
-      }
-      return true;
-    }
-
-    public override bool IsInvalid
-    {
-      get { return (handle == IntPtr.Zero); }
-    }
-  }
-
-  // Provides finalization support for unmanaged SQLite statements.
-  internal class SqliteStatementHandle : CriticalHandle
-  {
-    public static implicit operator IntPtr(SqliteStatementHandle stmt)
-    {
-      return stmt.handle;
-    }
-
-    public static implicit operator SqliteStatementHandle(IntPtr stmt)
-    {
-      return new SqliteStatementHandle(stmt);
-    }
-
-    private SqliteStatementHandle(IntPtr stmt)
-      : this()
-    {
-      SetHandle(stmt);
-    }
-
-    internal SqliteStatementHandle()
-      : base(IntPtr.Zero)
-    {
-    }
-
-    protected override bool ReleaseHandle()
-    {
-      try
-      {
-        SQLiteBase.FinalizeStatement(this);
-      }
-      catch (SqliteException)
-      {
-      }
-      return true;
-    }
-
-    public override bool IsInvalid
-    {
-      get { return (handle == IntPtr.Zero); }
-    }
-  }
-}
+﻿/********************************************************
+ * ADO.NET 2.0 Data Provider for SQLite Version 3.X
+ * Written by Robert Simpson (robert@blackcastlesoft.com)
+ * 
+ * Released to the public domain, use at your own risk!
+ ********************************************************/
+
+namespace Mono.Data.Sqlite
+{
+  using System;
+  using System.Security;
+  using System.Runtime.InteropServices;
+
+#if !PLATFORM_COMPACTFRAMEWORK
+  [SuppressUnmanagedCodeSecurity]
+#endif
+  internal static class UnsafeNativeMethods
+  {
+    internal static readonly bool use_sqlite3_close_v2 = false;
+    internal static readonly bool use_sqlite3_open_v2 = false;
+    internal static readonly bool use_sqlite3_create_function_v2 = false;
+    static UnsafeNativeMethods()
+    {
+      // calculate the version number parts
+      // https://www.sqlite.org/c3ref/c_source_id.html
+      // (<major> * 1000000) + (<minor> * 1000) + (<release>)
+      int versionNumber = sqlite3_libversion_number();
+      int release = versionNumber % 1000;
+      int minor = (versionNumber / 1000) % 1000;
+      int major = versionNumber / 1000000;
+      Version version = new Version(major, minor, release);
+
+      // set the various versions
+      // https://sqlite.org/changes.html
+      use_sqlite3_open_v2 = version >= new Version(3, 5, 0);
+      use_sqlite3_close_v2 = version >= new Version(3, 7, 14);
+      use_sqlite3_create_function_v2 = version >= new Version(3, 7, 3);
+    }
+
+#if !SQLITE_STANDARD
+
+#if !USE_INTEROP_DLL
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    private const string SQLITE_DLL = "Mono.Data.Sqlite.DLL";
+#else
+    internal const string SQLITE_DLL = "SQLite.Interop.061.DLL";
+#endif // PLATFORM_COMPACTFRAMEWORK
+
+#else
+    private const string SQLITE_DLL = "SQLite.Interop.DLL";
+#endif // USE_INTEROP_DLL
+
+#elif MONOTOUCH
+	private const string SQLITE_DLL = "/usr/lib/libsqlite3.dylib";
+#else
+    private const string SQLITE_DLL = "sqlite3";
+#endif
+
+    // This section uses interop calls that also fetch text length to optimize conversion.  
+    // When using the standard dll, we can replace these calls with normal sqlite calls and do unoptimized conversions instead afterwards
+    #region interop added textlength calls
+
+#if !SQLITE_STANDARD
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_bind_parameter_name_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_database_name_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_database_name16_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_decltype_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_decltype16_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_name_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_name16_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_origin_name_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_origin_name16_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_table_name_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_table_name16_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_text_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_column_text16_interop(IntPtr stmt, int index, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_errmsg_interop(IntPtr db, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_prepare_interop(IntPtr db, IntPtr pSql, int nBytes, out IntPtr stmt, out IntPtr ptrRemain, out int nRemain);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_table_column_metadata_interop(IntPtr db, byte[] dbName, byte[] tblName, byte[] colName, out IntPtr ptrDataType, out IntPtr ptrCollSeq, out int notNull, out int primaryKey, out int autoInc, out int dtLen, out int csLen);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_value_text_interop(IntPtr p, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_value_text16_interop(IntPtr p, out int len);
+#endif
+
+    #endregion
+
+    // These functions add existing functionality on top of SQLite and require a little effort to
+    // get working when using the standard SQLite library.
+    #region interop added functionality
+
+#if !SQLITE_STANDARD
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_close_interop(IntPtr db);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_create_function_interop(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal, int needCollSeq);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_finalize_interop(IntPtr stmt);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_open_interop(byte[] utf8Filename, int flags, out IntPtr db);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_open16_interop(byte[] utf8Filename, int flags, out IntPtr db);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_reset_interop(IntPtr stmt);
+
+#endif
+
+    #endregion
+
+    // The standard api call equivalents of the above interop calls
+    #region standard versions of interop functions
+
+#if SQLITE_STANDARD
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_close(IntPtr db);
+		
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_close_v2(IntPtr db);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_create_function(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+		[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+		[DllImport(SQLITE_DLL)]
+#endif
+		internal static extern int sqlite3_create_function_v2(IntPtr db, byte[] strName, int nArgs, int nType, IntPtr pvUser, SQLiteCallback func, SQLiteCallback fstep, SQLiteFinalCallback ffinal, SQLiteFinalCallback fdestroy);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_finalize(IntPtr stmt);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_open_v2(byte[] utf8Filename, out IntPtr db, int flags, IntPtr vfs);
+
+    // Compatibility with versions < 3.5.0
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_open(byte[] utf8Filename, out IntPtr db);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
+#else
+    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
+#endif
+    internal static extern int sqlite3_open16(string fileName, out IntPtr db);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_reset(IntPtr stmt);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_bind_parameter_name(IntPtr stmt, int index);
+
+// Apple does not include those symbols in it's libsqlite3
+#if !MONOTOUCH
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_database_name(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_database_name16(IntPtr stmt, int index);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_decltype(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_decltype16(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_name(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_name16(IntPtr stmt, int index);
+
+#if !MONOTOUCH
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_origin_name(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_origin_name16(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_table_name(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_table_name16(IntPtr stmt, int index);
+#endif // !MONOTOUCH
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_text(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_text16(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_errmsg(IntPtr db);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_prepare(IntPtr db, IntPtr pSql, int nBytes, out IntPtr stmt, out IntPtr ptrRemain);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_table_column_metadata(IntPtr db, byte[] dbName, byte[] tblName, byte[] colName, out IntPtr ptrDataType, out IntPtr ptrCollSeq, out int notNull, out int primaryKey, out int autoInc);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_value_text(IntPtr p);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_value_text16(IntPtr p);
+#endif
+
+    #endregion
+
+    // These functions are custom and have no equivalent standard library method.
+    // All of them are "nice to haves" and not necessarily "need to haves".
+    #region no equivalent standard method
+
+#if !SQLITE_STANDARD
+    [DllImport(SQLITE_DLL)]
+    internal static extern IntPtr sqlite3_context_collseq(IntPtr context, out int type, out int enc, out int len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_context_collcompare(IntPtr context, byte[] p1, int p1len, byte[] p2, int p2len);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_cursor_rowid(IntPtr stmt, int cursor, out long rowid);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_index_column_info_interop(IntPtr db, byte[] catalog, byte[] IndexName, byte[] ColumnName, out int sortOrder, out int onError, out IntPtr Collation, out int colllen);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern void sqlite3_resetall_interop(IntPtr db);
+
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_table_cursor(IntPtr stmt, int db, int tableRootPage);
+#endif
+
+    #endregion
+
+    // These are obsolete and will be removed in the future 
+    #region windows ntfs filesystem only
+
+#if !SQLITE_STANDARD
+    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode, SetLastError = true)]
+    internal static extern int sqlite3_compressfile(string fileName);
+
+    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode, SetLastError = true)]
+    internal static extern int sqlite3_decompressfile(string fileName);
+#endif
+
+    #endregion
+
+    // Standard API calls global across versions.  There are a few instances of interop calls
+    // scattered in here, but they are only active when PLATFORM_COMPACTFRAMEWORK is declared.
+    #region standard sqlite api calls
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_libversion();
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern void sqlite3_interrupt(IntPtr db);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_changes(IntPtr db);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_busy_timeout(IntPtr db, int ms);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_bind_blob(IntPtr stmt, int index, Byte[] value, int nSize, IntPtr nTransient);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern int sqlite3_bind_double(IntPtr stmt, int index, double value);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_bind_double_interop(IntPtr stmt, int index, ref double value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_bind_int(IntPtr stmt, int index, int value);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern int sqlite3_bind_int64(IntPtr stmt, int index, long value);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern int sqlite3_bind_int64_interop(IntPtr stmt, int index, ref long value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_bind_null(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_bind_text(IntPtr stmt, int index, byte[] value, int nlen, IntPtr pvReserved);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_bind_parameter_count(IntPtr stmt);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_bind_parameter_index(IntPtr stmt, byte[] strName);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_column_count(IntPtr stmt);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_step(IntPtr stmt);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern double sqlite3_column_double(IntPtr stmt, int index);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern void sqlite3_column_double_interop(IntPtr stmt, int index, out double value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_column_int(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern long sqlite3_column_int64(IntPtr stmt, int index);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern void sqlite3_column_int64_interop(IntPtr stmt, int index, out long value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_column_blob(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_column_bytes(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern TypeAffinity sqlite3_column_type(IntPtr stmt, int index);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_create_collation(IntPtr db, byte[] strName, int nType, IntPtr pvUser, SQLiteCollation func);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_aggregate_count(IntPtr context);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_value_blob(IntPtr p);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_value_bytes(IntPtr p);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern double sqlite3_value_double(IntPtr p);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern void sqlite3_value_double_interop(IntPtr p, out double value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_value_int(IntPtr p);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern long sqlite3_value_int64(IntPtr p);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern void sqlite3_value_int64_interop(IntPtr p, out Int64 value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern TypeAffinity sqlite3_value_type(IntPtr p);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern void sqlite3_result_blob(IntPtr context, byte[] value, int nSize, IntPtr pvReserved);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern void sqlite3_result_double(IntPtr context, double value);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern void sqlite3_result_double_interop(IntPtr context, ref double value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern void sqlite3_result_error(IntPtr context, byte[] strErr, int nLen);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern void sqlite3_result_int(IntPtr context, int value);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+    internal static extern void sqlite3_result_int64(IntPtr context, long value);
+#else
+    [DllImport(SQLITE_DLL)]
+    internal static extern void sqlite3_result_int64_interop(IntPtr context, ref Int64 value);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern void sqlite3_result_null(IntPtr context);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern void sqlite3_result_text(IntPtr context, byte[] value, int nLen, IntPtr pvReserved);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_aggregate_context(IntPtr context, int nBytes);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
+#else
+    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
+#endif
+    internal static extern int sqlite3_bind_text16(IntPtr stmt, int index, string value, int nlen, IntPtr pvReserved);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
+#else
+    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
+#endif
+    internal static extern void sqlite3_result_error16(IntPtr context, string strName, int nLen);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
+#else
+    [DllImport(SQLITE_DLL, CharSet = CharSet.Unicode)]
+#endif
+    internal static extern void sqlite3_result_text16(IntPtr context, string strName, int nLen, IntPtr pvReserved);
+
+#if !MONOTOUCH
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_key(IntPtr db, byte[] key, int keylen);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_rekey(IntPtr db, byte[] key, int keylen);
+#endif
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_update_hook(IntPtr db, SQLiteUpdateCallback func, IntPtr pvUser);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_commit_hook(IntPtr db, SQLiteCommitCallback func, IntPtr pvUser);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_rollback_hook(IntPtr db, SQLiteRollbackCallback func, IntPtr pvUser);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_db_handle(IntPtr stmt);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern IntPtr sqlite3_next_stmt(IntPtr db, IntPtr stmt);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_exec(IntPtr db, byte[] strSql, IntPtr pvCallback, IntPtr pvParam, out IntPtr errMsg);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_config (SQLiteConfig config);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+		[DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+		[DllImport(SQLITE_DLL)]
+#endif
+		internal static extern IntPtr sqlite3_user_data (IntPtr context);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_free (IntPtr ptr);
+
+#if !PLATFORM_COMPACTFRAMEWORK
+    [DllImport(SQLITE_DLL, CallingConvention = CallingConvention.Cdecl)]
+#else
+    [DllImport(SQLITE_DLL)]
+#endif
+    internal static extern int sqlite3_libversion_number();
+
+    #endregion
+  }
+
+#if PLATFORM_COMPACTFRAMEWORK
+  internal abstract class CriticalHandle : IDisposable
+  {
+    private bool _isClosed;
+    protected IntPtr handle;
+    
+    protected CriticalHandle(IntPtr invalidHandleValue)
+    {
+      handle = invalidHandleValue;
+      _isClosed = false;
+    }
+
+    ~CriticalHandle()
+    {
+      Dispose(false);
+    }
+
+    private void Cleanup()
+    {
+      if (!IsClosed)
+      {
+        this._isClosed = true;
+        if (!IsInvalid)
+        {
+          ReleaseHandle();
+          GC.SuppressFinalize(this);
+        }
+      }
+    }
+
+    public void Close()
+    {
+      Dispose(true);
+    }
+
+    public void Dispose()
+    {
+      Dispose(true);
+    }
+
+    protected virtual void Dispose(bool disposing)
+    {
+      Cleanup();
+    }
+
+    protected abstract bool ReleaseHandle();
+
+    protected void SetHandle(IntPtr value)
+    {
+      handle = value;
+    }
+
+    public void SetHandleAsInvalid()
+    {
+      _isClosed = true;
+      GC.SuppressFinalize(this);
+    }
+
+    public bool IsClosed
+    {
+      get { return _isClosed; }
+    }
+
+    public abstract bool IsInvalid
+    {
+      get;
+    }
+
+  }
+
+#endif
+
+  // Handles the unmanaged database pointer, and provides finalization support for it.
+  internal class SqliteConnectionHandle : CriticalHandle
+  {
+    public static implicit operator IntPtr(SqliteConnectionHandle db)
+    {
+      return db.handle;
+    }
+
+    public static implicit operator SqliteConnectionHandle(IntPtr db)
+    {
+      return new SqliteConnectionHandle(db);
+    }
+
+    private SqliteConnectionHandle(IntPtr db)
+      : this()
+    {
+      SetHandle(db);
+    }
+
+    internal SqliteConnectionHandle()
+      : base(IntPtr.Zero)
+    {
+    }
+
+    protected override bool ReleaseHandle()
+    {
+      try
+      {
+        SQLiteBase.CloseConnection(this);
+      }
+      catch (SqliteException)
+      {
+      }
+      return true;
+    }
+
+    public override bool IsInvalid
+    {
+      get { return (handle == IntPtr.Zero); }
+    }
+  }
+
+  // Provides finalization support for unmanaged SQLite statements.
+  internal class SqliteStatementHandle : CriticalHandle
+  {
+    public static implicit operator IntPtr(SqliteStatementHandle stmt)
+    {
+      return stmt.handle;
+    }
+
+    public static implicit operator SqliteStatementHandle(IntPtr stmt)
+    {
+      return new SqliteStatementHandle(stmt);
+    }
+
+    private SqliteStatementHandle(IntPtr stmt)
+      : this()
+    {
+      SetHandle(stmt);
+    }
+
+    internal SqliteStatementHandle()
+      : base(IntPtr.Zero)
+    {
+    }
+
+    protected override bool ReleaseHandle()
+    {
+      try
+      {
+        SQLiteBase.FinalizeStatement(this);
+      }
+      catch (SqliteException)
+      {
+      }
+      return true;
+    }
+
+    public override bool IsInvalid
+    {
+      get { return (handle == IntPtr.Zero); }
+    }
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/Test/SqliteTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/Test/SqliteTest.cs
@@ -1,176 +1,176 @@
-//
-// SqliteTest.cs - Test for the Sqlite ADO.NET Provider in Mono.Data.Sqlite
-//                 This provider works on Linux and Windows and uses the native
-//                 sqlite.dll or sqlite.so library.
-//
-// Modify or add to this test as needed...
-//
-// SQL Lite can be downloaded from
-// http://www.hwaci.com/sw/sqlite/download.html
-//
-// There are binaries for Windows and Linux.
-//
-// To compile:
-//  mcs SqliteTest.cs -r System.Data.dll -r Mono.Data.Sqlite.dll
-//
-// Author:
-//     Daniel Morgan <danmorg@sc.rr.com>
-//
-
-using System;
-using System.Data;
-using Mono.Data.Sqlite;
-
-namespace Test.Mono.Data.Sqlite
-{
-	class SqliteTest
-	{
-		[STAThread]
-		static void Main(string[] args)
-		{
-			Test(false, null);
-			Console.WriteLine();
-			Test(false, "ISO-8859-1");
-			Console.WriteLine();
-			Test(true, null);
-		}
-		
-		static void Test(bool v3, string encoding) {
-			if (!v3)
-				Console.WriteLine("Testing Version 2" + (encoding != null ? " with " + encoding + " encoding" : ""));
-			else
-				Console.WriteLine("Testing Version 3");
-				
-			System.IO.File.Delete("SqliteTest.db");
-		
-			SqliteConnection dbcon = new SqliteConnection();
-			
-			// the connection string is a URL that points
-			// to a file.  If the file does not exist, a 
-			// file is created.
-
-			// "URI=file:some/path"
-			string connectionString =
-				"URI=file:SqliteTest.db";
-			if (v3)
-				connectionString += ",Version=3";
-			if (encoding != null)
-				connectionString += ",encoding=" + encoding;
-			dbcon.ConnectionString = connectionString;
-				
-			dbcon.Open();
-
-			SqliteCommand dbcmd = new SqliteCommand();
-			dbcmd.Connection = dbcon;
-			
-			dbcmd.CommandText = 
-				"CREATE TABLE MONO_TEST ( " +
-				"NID INT, " +
-				"NDESC TEXT, " +
-				"NTIME DATETIME); " +
-				"INSERT INTO MONO_TEST  " +
-				"(NID, NDESC, NTIME) " +
-				"VALUES(1,'One (unicode test: \u05D0)', '2006-01-01')";
-			Console.WriteLine("Create & insert modified rows = 1: " + dbcmd.ExecuteNonQuery());
-
-			dbcmd.CommandText =
-				"INSERT INTO MONO_TEST  " +
-				"(NID, NDESC, NTIME) " +
-				"VALUES(:NID,:NDESC,:NTIME)";
-			dbcmd.Parameters.Add( new SqliteParameter("NID", 2) );
-			dbcmd.Parameters.Add( new SqliteParameter(":NDESC", "Two (unicode test: \u05D1)") );
-			dbcmd.Parameters.Add( new SqliteParameter(":NTIME", DateTime.Now) );
-			Console.WriteLine("Insert modified rows with parameters = 1, 2: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
-
-			dbcmd.CommandText =
-				"INSERT INTO MONO_TEST  " +
-				"(NID, NDESC, NTIME) " +
-				"VALUES(3,'Three, quoted parameter test, and next is null; :NTIME', NULL)";
-			Console.WriteLine("Insert with null modified rows and ID = 1, 3: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
-
-			dbcmd.CommandText =
-				"INSERT INTO MONO_TEST  " +
-				"(NID, NDESC, NTIME) " +
-				"VALUES(4,'Four with ANSI char: ü', NULL)";
-			Console.WriteLine("Insert with ANSI char ü = 1, 4: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
-
-			dbcmd.CommandText =
-				"INSERT INTO MONO_TEST  " +
-				"(NID, NDESC, NTIME) " +
-				"VALUES(?,?,?)";
-			dbcmd.Parameters.Clear();
-			IDbDataParameter param1 = dbcmd.CreateParameter();
-			param1.DbType = DbType.DateTime;
-			param1.Value = 5;
-			dbcmd.Parameters.Add(param1);			
-			IDbDataParameter param2 = dbcmd.CreateParameter();
-			param2.Value = "Using unnamed parameters";
-			dbcmd.Parameters.Add(param2);
-			IDbDataParameter param3 = dbcmd.CreateParameter();
-			param3.DbType = DbType.DateTime;
-			param3.Value = DateTime.Parse("2006-05-11 11:45:00");
-			dbcmd.Parameters.Add(param3);
-			Console.WriteLine("Insert with unnamed parameters = 1, 5: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
-
-			dbcmd.CommandText =
-				"SELECT * FROM MONO_TEST";
-			SqliteDataReader reader;
-			reader = dbcmd.ExecuteReader();
-
-			Console.WriteLine("read and display data...");
-			while(reader.Read())
-				for (int i = 0; i < reader.FieldCount; i++)
-					Console.WriteLine(" Col {0}: {1} (type: {2}, data type: {3})",
-						i, reader[i] == null ? "(null)" : reader[i].ToString(), reader[i] == null ? "(null)" : reader[i].GetType().FullName, reader.GetDataTypeName(i));
-
-			dbcmd.CommandText = "SELECT NDESC FROM MONO_TEST WHERE NID=2";
-			Console.WriteLine("read and display a scalar = 'Two': " + dbcmd.ExecuteScalar());
-
-			dbcmd.CommandText = "SELECT count(*) FROM MONO_TEST";
-			Console.WriteLine("read and display a non-column scalar = 3: " + dbcmd.ExecuteScalar());
-
-			Console.WriteLine("read and display data using DataAdapter/DataSet...");
-			SqliteDataAdapter adapter = new SqliteDataAdapter("SELECT * FROM MONO_TEST", connectionString);
-			DataSet dataset = new DataSet();
-			adapter.Fill(dataset);
-			foreach(DataTable myTable in dataset.Tables){
-				foreach(DataRow myRow in myTable.Rows){
-					foreach (DataColumn myColumn in myTable.Columns){
-						Console.WriteLine(" " + myRow[myColumn]);
-					}
-				}
-			}
-
-			/*Console.WriteLine("read and display data using DataAdapter/DataTable...");
-			DataTable dt = new DataTable();
-			adapter.Fill(dt);
-			DataView dv = new DataView(dt);
-			foreach (DataRowView myRow in dv) {
-				foreach (DataColumn myColumn in myRow.Row.Table.Columns) {
-					Console.WriteLine(" " + myRow[myColumn.ColumnName]);
-				}
-			}*/
-       		       		            
-			try {
-				dbcmd.CommandText = "SELECT NDESC INVALID SYNTAX FROM MONO_TEST WHERE NID=2";
-				dbcmd.ExecuteNonQuery();
-				Console.WriteLine("Should not reach here.");
-			} catch (Exception e) {
-				Console.WriteLine("Testing a syntax error: " + e.GetType().Name + ": " + e.Message);
-			}
-
-			/*try {
-				dbcmd.CommandText = "SELECT 0/0 FROM MONO_TEST WHERE NID=2";
-				Console.WriteLine("Should not reach here: " + dbcmd.ExecuteScalar());
-			} catch (Exception e) {
-				Console.WriteLine("Testing an execution error: " + e.GetType().Name + ": " + e.Message);
-			}*/
-
-			dataset.Dispose();
-			adapter.Dispose();
-			reader.Close();
-			dbcmd.Dispose();
-			dbcon.Close();
-		}
-	}
-}
+//
+// SqliteTest.cs - Test for the Sqlite ADO.NET Provider in Mono.Data.Sqlite
+//                 This provider works on Linux and Windows and uses the native
+//                 sqlite.dll or sqlite.so library.
+//
+// Modify or add to this test as needed...
+//
+// SQL Lite can be downloaded from
+// http://www.hwaci.com/sw/sqlite/download.html
+//
+// There are binaries for Windows and Linux.
+//
+// To compile:
+//  mcs SqliteTest.cs -r System.Data.dll -r Mono.Data.Sqlite.dll
+//
+// Author:
+//     Daniel Morgan <danmorg@sc.rr.com>
+//
+
+using System;
+using System.Data;
+using Mono.Data.Sqlite;
+
+namespace Test.Mono.Data.Sqlite
+{
+	class SqliteTest
+	{
+		[STAThread]
+		static void Main(string[] args)
+		{
+			Test(false, null);
+			Console.WriteLine();
+			Test(false, "ISO-8859-1");
+			Console.WriteLine();
+			Test(true, null);
+		}
+		
+		static void Test(bool v3, string encoding) {
+			if (!v3)
+				Console.WriteLine("Testing Version 2" + (encoding != null ? " with " + encoding + " encoding" : ""));
+			else
+				Console.WriteLine("Testing Version 3");
+				
+			System.IO.File.Delete("SqliteTest.db");
+		
+			SqliteConnection dbcon = new SqliteConnection();
+			
+			// the connection string is a URL that points
+			// to a file.  If the file does not exist, a 
+			// file is created.
+
+			// "URI=file:some/path"
+			string connectionString =
+				"URI=file:SqliteTest.db";
+			if (v3)
+				connectionString += ",Version=3";
+			if (encoding != null)
+				connectionString += ",encoding=" + encoding;
+			dbcon.ConnectionString = connectionString;
+				
+			dbcon.Open();
+
+			SqliteCommand dbcmd = new SqliteCommand();
+			dbcmd.Connection = dbcon;
+			
+			dbcmd.CommandText = 
+				"CREATE TABLE MONO_TEST ( " +
+				"NID INT, " +
+				"NDESC TEXT, " +
+				"NTIME DATETIME); " +
+				"INSERT INTO MONO_TEST  " +
+				"(NID, NDESC, NTIME) " +
+				"VALUES(1,'One (unicode test: \u05D0)', '2006-01-01')";
+			Console.WriteLine("Create & insert modified rows = 1: " + dbcmd.ExecuteNonQuery());
+
+			dbcmd.CommandText =
+				"INSERT INTO MONO_TEST  " +
+				"(NID, NDESC, NTIME) " +
+				"VALUES(:NID,:NDESC,:NTIME)";
+			dbcmd.Parameters.Add( new SqliteParameter("NID", 2) );
+			dbcmd.Parameters.Add( new SqliteParameter(":NDESC", "Two (unicode test: \u05D1)") );
+			dbcmd.Parameters.Add( new SqliteParameter(":NTIME", DateTime.Now) );
+			Console.WriteLine("Insert modified rows with parameters = 1, 2: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
+
+			dbcmd.CommandText =
+				"INSERT INTO MONO_TEST  " +
+				"(NID, NDESC, NTIME) " +
+				"VALUES(3,'Three, quoted parameter test, and next is null; :NTIME', NULL)";
+			Console.WriteLine("Insert with null modified rows and ID = 1, 3: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
+
+			dbcmd.CommandText =
+				"INSERT INTO MONO_TEST  " +
+				"(NID, NDESC, NTIME) " +
+				"VALUES(4,'Four with ANSI char: ü', NULL)";
+			Console.WriteLine("Insert with ANSI char ü = 1, 4: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
+
+			dbcmd.CommandText =
+				"INSERT INTO MONO_TEST  " +
+				"(NID, NDESC, NTIME) " +
+				"VALUES(?,?,?)";
+			dbcmd.Parameters.Clear();
+			IDbDataParameter param1 = dbcmd.CreateParameter();
+			param1.DbType = DbType.DateTime;
+			param1.Value = 5;
+			dbcmd.Parameters.Add(param1);			
+			IDbDataParameter param2 = dbcmd.CreateParameter();
+			param2.Value = "Using unnamed parameters";
+			dbcmd.Parameters.Add(param2);
+			IDbDataParameter param3 = dbcmd.CreateParameter();
+			param3.DbType = DbType.DateTime;
+			param3.Value = DateTime.Parse("2006-05-11 11:45:00");
+			dbcmd.Parameters.Add(param3);
+			Console.WriteLine("Insert with unnamed parameters = 1, 5: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
+
+			dbcmd.CommandText =
+				"SELECT * FROM MONO_TEST";
+			SqliteDataReader reader;
+			reader = dbcmd.ExecuteReader();
+
+			Console.WriteLine("read and display data...");
+			while(reader.Read())
+				for (int i = 0; i < reader.FieldCount; i++)
+					Console.WriteLine(" Col {0}: {1} (type: {2}, data type: {3})",
+						i, reader[i] == null ? "(null)" : reader[i].ToString(), reader[i] == null ? "(null)" : reader[i].GetType().FullName, reader.GetDataTypeName(i));
+
+			dbcmd.CommandText = "SELECT NDESC FROM MONO_TEST WHERE NID=2";
+			Console.WriteLine("read and display a scalar = 'Two': " + dbcmd.ExecuteScalar());
+
+			dbcmd.CommandText = "SELECT count(*) FROM MONO_TEST";
+			Console.WriteLine("read and display a non-column scalar = 3: " + dbcmd.ExecuteScalar());
+
+			Console.WriteLine("read and display data using DataAdapter/DataSet...");
+			SqliteDataAdapter adapter = new SqliteDataAdapter("SELECT * FROM MONO_TEST", connectionString);
+			DataSet dataset = new DataSet();
+			adapter.Fill(dataset);
+			foreach(DataTable myTable in dataset.Tables){
+				foreach(DataRow myRow in myTable.Rows){
+					foreach (DataColumn myColumn in myTable.Columns){
+						Console.WriteLine(" " + myRow[myColumn]);
+					}
+				}
+			}
+
+			/*Console.WriteLine("read and display data using DataAdapter/DataTable...");
+			DataTable dt = new DataTable();
+			adapter.Fill(dt);
+			DataView dv = new DataView(dt);
+			foreach (DataRowView myRow in dv) {
+				foreach (DataColumn myColumn in myRow.Row.Table.Columns) {
+					Console.WriteLine(" " + myRow[myColumn.ColumnName]);
+				}
+			}*/
+       		       		            
+			try {
+				dbcmd.CommandText = "SELECT NDESC INVALID SYNTAX FROM MONO_TEST WHERE NID=2";
+				dbcmd.ExecuteNonQuery();
+				Console.WriteLine("Should not reach here.");
+			} catch (Exception e) {
+				Console.WriteLine("Testing a syntax error: " + e.GetType().Name + ": " + e.Message);
+			}
+
+			/*try {
+				dbcmd.CommandText = "SELECT 0/0 FROM MONO_TEST WHERE NID=2";
+				Console.WriteLine("Should not reach here: " + dbcmd.ExecuteScalar());
+			} catch (Exception e) {
+				Console.WriteLine("Testing an execution error: " + e.GetType().Name + ": " + e.Message);
+			}*/
+
+			dataset.Dispose();
+			adapter.Dispose();
+			reader.Close();
+			dbcmd.Dispose();
+			dbcon.Close();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/resources/DataTypes.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/resources/DataTypes.xml
@@ -1,779 +1,779 @@
-﻿<?xml version="1.0" standalone="yes"?>
-<DocumentElement>
-  <DataTypes>
-    <TypeName>smallint</TypeName>
-    <ProviderDbType>10</ProviderDbType>
-    <ColumnSize>5</ColumnSize>
-    <DataType>System.Int16</DataType>
-    <CreateFormat>smallint</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>int</TypeName>
-    <ProviderDbType>11</ProviderDbType>
-    <ColumnSize>10</ColumnSize>
-    <DataType>System.Int32</DataType>
-    <CreateFormat>int</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>real</TypeName>
-    <ProviderDbType>15</ProviderDbType>
-    <ColumnSize>7</ColumnSize>
-    <DataType>System.Single</DataType>
-    <CreateFormat>real</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>float</TypeName>
-    <ProviderDbType>8</ProviderDbType>
-    <ColumnSize>6</ColumnSize>
-    <DataType>System.Double</DataType>
-    <CreateFormat>float</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>double</TypeName>
-    <ProviderDbType>8</ProviderDbType>
-    <ColumnSize>6</ColumnSize>
-    <DataType>System.Double</DataType>
-    <CreateFormat>double</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>money</TypeName>
-    <ProviderDbType>7</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Decimal</DataType>
-    <CreateFormat>money</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>currency</TypeName>
-    <ProviderDbType>7</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Decimal</DataType>
-    <CreateFormat>currency</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>decimal</TypeName>
-    <ProviderDbType>7</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Decimal</DataType>
-    <CreateFormat>decimal</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>numeric</TypeName>
-    <ProviderDbType>7</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Decimal</DataType>
-    <CreateFormat>numeric</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>bit</TypeName>
-    <ProviderDbType>3</ProviderDbType>
-    <ColumnSize>1</ColumnSize>
-    <DataType>System.Boolean</DataType>
-    <CreateFormat>bit</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>yesno</TypeName>
-    <ProviderDbType>3</ProviderDbType>
-    <ColumnSize>1</ColumnSize>
-    <DataType>System.Boolean</DataType>
-    <CreateFormat>yesno</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>logical</TypeName>
-    <ProviderDbType>3</ProviderDbType>
-    <ColumnSize>1</ColumnSize>
-    <DataType>System.Boolean</DataType>
-    <CreateFormat>logical</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>bool</TypeName>
-    <ProviderDbType>3</ProviderDbType>
-    <ColumnSize>1</ColumnSize>
-    <DataType>System.Boolean</DataType>
-    <CreateFormat>bool</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>boolean</TypeName>
-    <ProviderDbType>3</ProviderDbType>
-    <ColumnSize>1</ColumnSize>
-    <DataType>System.Boolean</DataType>
-    <CreateFormat>boolean</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>tinyint</TypeName>
-    <ProviderDbType>2</ProviderDbType>
-    <ColumnSize>3</ColumnSize>
-    <DataType>System.Byte</DataType>
-    <CreateFormat>tinyint</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>true</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>integer</TypeName>
-    <ProviderDbType>12</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Int64</DataType>
-    <CreateFormat>integer</CreateFormat>
-    <IsAutoIncrementable>true</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>counter</TypeName>
-    <ProviderDbType>12</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Int64</DataType>
-    <CreateFormat>counter</CreateFormat>
-    <IsAutoIncrementable>true</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>autoincrement</TypeName>
-    <ProviderDbType>12</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Int64</DataType>
-    <CreateFormat>autoincrement</CreateFormat>
-    <IsAutoIncrementable>true</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>identity</TypeName>
-    <ProviderDbType>12</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Int64</DataType>
-    <CreateFormat>identity</CreateFormat>
-    <IsAutoIncrementable>true</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>long</TypeName>
-    <ProviderDbType>12</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Int64</DataType>
-    <CreateFormat>long</CreateFormat>
-    <IsAutoIncrementable>true</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>bigint</TypeName>
-    <ProviderDbType>12</ProviderDbType>
-    <ColumnSize>19</ColumnSize>
-    <DataType>System.Int64</DataType>
-    <CreateFormat>bigint</CreateFormat>
-    <IsAutoIncrementable>true</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <IsUnsigned>false</IsUnsigned>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>binary</TypeName>
-    <ProviderDbType>1</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <DataType>System.Byte[]</DataType>
-    <CreateFormat>binary</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>false</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>X'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>varbinary</TypeName>
-    <ProviderDbType>1</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <DataType>System.Byte[]</DataType>
-    <CreateFormat>varbinary</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>false</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>X'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>blob</TypeName>
-    <ProviderDbType>1</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <DataType>System.Byte[]</DataType>
-    <CreateFormat>blob</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>false</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>X'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>image</TypeName>
-    <ProviderDbType>1</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <DataType>System.Byte[]</DataType>
-    <CreateFormat>image</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>false</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>X'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>general</TypeName>
-    <ProviderDbType>1</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <DataType>System.Byte[]</DataType>
-    <CreateFormat>general</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>false</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>X'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>oleobject</TypeName>
-    <ProviderDbType>1</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <DataType>System.Byte[]</DataType>
-    <CreateFormat>oleobject</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>false</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>X'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>varchar</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>varchar({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>nvarchar</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>nvarchar({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>memo</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>memo({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>longtext</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>longtext({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>note</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>note({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>text</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>text({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>ntext</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>ntext({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>string</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>string({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>char</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>char({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>nchar</TypeName>
-    <ProviderDbType>16</ProviderDbType>
-    <ColumnSize>2147483647</ColumnSize>
-    <CreateParameters>max length</CreateParameters>
-    <DataType>System.String</DataType>
-    <CreateFormat>char({0})</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>false</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>datetime</TypeName>
-    <ProviderDbType>6</ProviderDbType>
-    <ColumnSize>23</ColumnSize>
-    <DataType>System.DateTime</DataType>
-    <CreateFormat>datetime</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>smalldate</TypeName>
-    <ProviderDbType>6</ProviderDbType>
-    <ColumnSize>23</ColumnSize>
-    <DataType>System.DateTime</DataType>
-    <CreateFormat>smalldate</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>timestamp</TypeName>
-    <ProviderDbType>6</ProviderDbType>
-    <ColumnSize>23</ColumnSize>
-    <DataType>System.DateTime</DataType>
-    <CreateFormat>timestamp</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>date</TypeName>
-    <ProviderDbType>6</ProviderDbType>
-    <ColumnSize>23</ColumnSize>
-    <DataType>System.DateTime</DataType>
-    <CreateFormat>date</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>time</TypeName>
-    <ProviderDbType>6</ProviderDbType>
-    <ColumnSize>23</ColumnSize>
-    <DataType>System.DateTime</DataType>
-    <CreateFormat>time</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>true</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>uniqueidentifier</TypeName>
-    <ProviderDbType>4</ProviderDbType>
-    <ColumnSize>16</ColumnSize>
-    <DataType>System.Guid</DataType>
-    <CreateFormat>uniqueidentifier</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>true</IsBestMatch>
-  </DataTypes>
-  <DataTypes>
-    <TypeName>guid</TypeName>
-    <ProviderDbType>4</ProviderDbType>
-    <ColumnSize>16</ColumnSize>
-    <DataType>System.Guid</DataType>
-    <CreateFormat>guid</CreateFormat>
-    <IsAutoIncrementable>false</IsAutoIncrementable>
-    <IsCaseSensitive>false</IsCaseSensitive>
-    <IsFixedLength>true</IsFixedLength>
-    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
-    <IsLong>false</IsLong>
-    <IsNullable>true</IsNullable>
-    <IsSearchable>true</IsSearchable>
-    <IsSearchableWithLike>false</IsSearchableWithLike>
-    <LiteralPrefix>'</LiteralPrefix>
-    <LiteralSuffix>'</LiteralSuffix>
-    <IsBestMatch>false</IsBestMatch>
-  </DataTypes>
-</DocumentElement>
+﻿<?xml version="1.0" standalone="yes"?>
+<DocumentElement>
+  <DataTypes>
+    <TypeName>smallint</TypeName>
+    <ProviderDbType>10</ProviderDbType>
+    <ColumnSize>5</ColumnSize>
+    <DataType>System.Int16</DataType>
+    <CreateFormat>smallint</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>int</TypeName>
+    <ProviderDbType>11</ProviderDbType>
+    <ColumnSize>10</ColumnSize>
+    <DataType>System.Int32</DataType>
+    <CreateFormat>int</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>real</TypeName>
+    <ProviderDbType>15</ProviderDbType>
+    <ColumnSize>7</ColumnSize>
+    <DataType>System.Single</DataType>
+    <CreateFormat>real</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>float</TypeName>
+    <ProviderDbType>8</ProviderDbType>
+    <ColumnSize>6</ColumnSize>
+    <DataType>System.Double</DataType>
+    <CreateFormat>float</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>double</TypeName>
+    <ProviderDbType>8</ProviderDbType>
+    <ColumnSize>6</ColumnSize>
+    <DataType>System.Double</DataType>
+    <CreateFormat>double</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>money</TypeName>
+    <ProviderDbType>7</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Decimal</DataType>
+    <CreateFormat>money</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>currency</TypeName>
+    <ProviderDbType>7</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Decimal</DataType>
+    <CreateFormat>currency</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>decimal</TypeName>
+    <ProviderDbType>7</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Decimal</DataType>
+    <CreateFormat>decimal</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>numeric</TypeName>
+    <ProviderDbType>7</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Decimal</DataType>
+    <CreateFormat>numeric</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>bit</TypeName>
+    <ProviderDbType>3</ProviderDbType>
+    <ColumnSize>1</ColumnSize>
+    <DataType>System.Boolean</DataType>
+    <CreateFormat>bit</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>yesno</TypeName>
+    <ProviderDbType>3</ProviderDbType>
+    <ColumnSize>1</ColumnSize>
+    <DataType>System.Boolean</DataType>
+    <CreateFormat>yesno</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>logical</TypeName>
+    <ProviderDbType>3</ProviderDbType>
+    <ColumnSize>1</ColumnSize>
+    <DataType>System.Boolean</DataType>
+    <CreateFormat>logical</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>bool</TypeName>
+    <ProviderDbType>3</ProviderDbType>
+    <ColumnSize>1</ColumnSize>
+    <DataType>System.Boolean</DataType>
+    <CreateFormat>bool</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>boolean</TypeName>
+    <ProviderDbType>3</ProviderDbType>
+    <ColumnSize>1</ColumnSize>
+    <DataType>System.Boolean</DataType>
+    <CreateFormat>boolean</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>tinyint</TypeName>
+    <ProviderDbType>2</ProviderDbType>
+    <ColumnSize>3</ColumnSize>
+    <DataType>System.Byte</DataType>
+    <CreateFormat>tinyint</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>true</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>integer</TypeName>
+    <ProviderDbType>12</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Int64</DataType>
+    <CreateFormat>integer</CreateFormat>
+    <IsAutoIncrementable>true</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>counter</TypeName>
+    <ProviderDbType>12</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Int64</DataType>
+    <CreateFormat>counter</CreateFormat>
+    <IsAutoIncrementable>true</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>autoincrement</TypeName>
+    <ProviderDbType>12</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Int64</DataType>
+    <CreateFormat>autoincrement</CreateFormat>
+    <IsAutoIncrementable>true</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>identity</TypeName>
+    <ProviderDbType>12</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Int64</DataType>
+    <CreateFormat>identity</CreateFormat>
+    <IsAutoIncrementable>true</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>long</TypeName>
+    <ProviderDbType>12</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Int64</DataType>
+    <CreateFormat>long</CreateFormat>
+    <IsAutoIncrementable>true</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>bigint</TypeName>
+    <ProviderDbType>12</ProviderDbType>
+    <ColumnSize>19</ColumnSize>
+    <DataType>System.Int64</DataType>
+    <CreateFormat>bigint</CreateFormat>
+    <IsAutoIncrementable>true</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>true</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <IsUnsigned>false</IsUnsigned>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>binary</TypeName>
+    <ProviderDbType>1</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <DataType>System.Byte[]</DataType>
+    <CreateFormat>binary</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>false</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>X'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>varbinary</TypeName>
+    <ProviderDbType>1</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <DataType>System.Byte[]</DataType>
+    <CreateFormat>varbinary</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>false</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>X'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>blob</TypeName>
+    <ProviderDbType>1</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <DataType>System.Byte[]</DataType>
+    <CreateFormat>blob</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>false</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>X'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>image</TypeName>
+    <ProviderDbType>1</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <DataType>System.Byte[]</DataType>
+    <CreateFormat>image</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>false</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>X'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>general</TypeName>
+    <ProviderDbType>1</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <DataType>System.Byte[]</DataType>
+    <CreateFormat>general</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>false</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>X'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>oleobject</TypeName>
+    <ProviderDbType>1</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <DataType>System.Byte[]</DataType>
+    <CreateFormat>oleobject</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>false</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>X'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>varchar</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>varchar({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>nvarchar</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>nvarchar({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>memo</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>memo({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>longtext</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>longtext({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>note</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>note({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>text</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>text({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>ntext</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>ntext({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>string</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>string({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>char</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>char({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>nchar</TypeName>
+    <ProviderDbType>16</ProviderDbType>
+    <ColumnSize>2147483647</ColumnSize>
+    <CreateParameters>max length</CreateParameters>
+    <DataType>System.String</DataType>
+    <CreateFormat>char({0})</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>false</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>datetime</TypeName>
+    <ProviderDbType>6</ProviderDbType>
+    <ColumnSize>23</ColumnSize>
+    <DataType>System.DateTime</DataType>
+    <CreateFormat>datetime</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>smalldate</TypeName>
+    <ProviderDbType>6</ProviderDbType>
+    <ColumnSize>23</ColumnSize>
+    <DataType>System.DateTime</DataType>
+    <CreateFormat>smalldate</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>timestamp</TypeName>
+    <ProviderDbType>6</ProviderDbType>
+    <ColumnSize>23</ColumnSize>
+    <DataType>System.DateTime</DataType>
+    <CreateFormat>timestamp</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>date</TypeName>
+    <ProviderDbType>6</ProviderDbType>
+    <ColumnSize>23</ColumnSize>
+    <DataType>System.DateTime</DataType>
+    <CreateFormat>date</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>time</TypeName>
+    <ProviderDbType>6</ProviderDbType>
+    <ColumnSize>23</ColumnSize>
+    <DataType>System.DateTime</DataType>
+    <CreateFormat>time</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>true</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>uniqueidentifier</TypeName>
+    <ProviderDbType>4</ProviderDbType>
+    <ColumnSize>16</ColumnSize>
+    <DataType>System.Guid</DataType>
+    <CreateFormat>uniqueidentifier</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>true</IsBestMatch>
+  </DataTypes>
+  <DataTypes>
+    <TypeName>guid</TypeName>
+    <ProviderDbType>4</ProviderDbType>
+    <ColumnSize>16</ColumnSize>
+    <DataType>System.Guid</DataType>
+    <CreateFormat>guid</CreateFormat>
+    <IsAutoIncrementable>false</IsAutoIncrementable>
+    <IsCaseSensitive>false</IsCaseSensitive>
+    <IsFixedLength>true</IsFixedLength>
+    <IsFixedPrecisionScale>false</IsFixedPrecisionScale>
+    <IsLong>false</IsLong>
+    <IsNullable>true</IsNullable>
+    <IsSearchable>true</IsSearchable>
+    <IsSearchableWithLike>false</IsSearchableWithLike>
+    <LiteralPrefix>'</LiteralPrefix>
+    <LiteralSuffix>'</LiteralSuffix>
+    <IsBestMatch>false</IsBestMatch>
+  </DataTypes>
+</DocumentElement>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/resources/MetaDataCollections.xml
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/resources/MetaDataCollections.xml
@@ -1,68 +1,68 @@
-﻿<?xml version="1.0" encoding="utf-8" ?>
-<DocumentElement>
-  <MetaDataCollections>
-    <CollectionName>MetaDataCollections</CollectionName>
-    <NumberOfRestrictions>0</NumberOfRestrictions>
-    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>DataSourceInformation</CollectionName>
-    <NumberOfRestrictions>0</NumberOfRestrictions>
-    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>DataTypes</CollectionName>
-    <NumberOfRestrictions>0</NumberOfRestrictions>
-    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>ReservedWords</CollectionName>
-    <NumberOfRestrictions>0</NumberOfRestrictions>
-    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>Catalogs</CollectionName>
-    <NumberOfRestrictions>1</NumberOfRestrictions>
-    <NumberOfIdentifierParts>1</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>Columns</CollectionName>
-    <NumberOfRestrictions>4</NumberOfRestrictions>
-    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>Indexes</CollectionName>
-    <NumberOfRestrictions>4</NumberOfRestrictions>
-    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>IndexColumns</CollectionName>
-    <NumberOfRestrictions>5</NumberOfRestrictions>
-    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>Tables</CollectionName>
-    <NumberOfRestrictions>4</NumberOfRestrictions>
-    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>Views</CollectionName>
-    <NumberOfRestrictions>3</NumberOfRestrictions>
-    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>ViewColumns</CollectionName>
-    <NumberOfRestrictions>4</NumberOfRestrictions>
-    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>ForeignKeys</CollectionName>
-    <NumberOfRestrictions>4</NumberOfRestrictions>
-    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
-  </MetaDataCollections>
-  <MetaDataCollections>
-    <CollectionName>Triggers</CollectionName>
-    <NumberOfRestrictions>4</NumberOfRestrictions>
-    <NumberOfIndentifierParts>3</NumberOfIndentifierParts>
-  </MetaDataCollections>
-</DocumentElement>
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<DocumentElement>
+  <MetaDataCollections>
+    <CollectionName>MetaDataCollections</CollectionName>
+    <NumberOfRestrictions>0</NumberOfRestrictions>
+    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>DataSourceInformation</CollectionName>
+    <NumberOfRestrictions>0</NumberOfRestrictions>
+    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>DataTypes</CollectionName>
+    <NumberOfRestrictions>0</NumberOfRestrictions>
+    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>ReservedWords</CollectionName>
+    <NumberOfRestrictions>0</NumberOfRestrictions>
+    <NumberOfIdentifierParts>0</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>Catalogs</CollectionName>
+    <NumberOfRestrictions>1</NumberOfRestrictions>
+    <NumberOfIdentifierParts>1</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>Columns</CollectionName>
+    <NumberOfRestrictions>4</NumberOfRestrictions>
+    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>Indexes</CollectionName>
+    <NumberOfRestrictions>4</NumberOfRestrictions>
+    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>IndexColumns</CollectionName>
+    <NumberOfRestrictions>5</NumberOfRestrictions>
+    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>Tables</CollectionName>
+    <NumberOfRestrictions>4</NumberOfRestrictions>
+    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>Views</CollectionName>
+    <NumberOfRestrictions>3</NumberOfRestrictions>
+    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>ViewColumns</CollectionName>
+    <NumberOfRestrictions>4</NumberOfRestrictions>
+    <NumberOfIdentifierParts>4</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>ForeignKeys</CollectionName>
+    <NumberOfRestrictions>4</NumberOfRestrictions>
+    <NumberOfIdentifierParts>3</NumberOfIdentifierParts>
+  </MetaDataCollections>
+  <MetaDataCollections>
+    <CollectionName>Triggers</CollectionName>
+    <NumberOfRestrictions>4</NumberOfRestrictions>
+    <NumberOfIndentifierParts>3</NumberOfIndentifierParts>
+  </MetaDataCollections>
+</DocumentElement>
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Data.Sqlite/resources/SR.resx
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Data.Sqlite/resources/SR.resx
@@ -1,130 +1,130 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="DataTypes" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>resources/DataTypes.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
-  </data>
-  <data name="Keywords" xml:space="preserve">
-    <value>ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE</value>
-  </data>
-  <data name="MetaDataCollections" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>resources/MetaDataCollections.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
-  </data>
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="DataTypes" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>resources/DataTypes.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
+  <data name="Keywords" xml:space="preserve">
+    <value>ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE</value>
+  </data>
+  <data name="MetaDataCollections" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>resources/MetaDataCollections.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Messaging.RabbitMQ/Test/Mono.Messaging.RabbitMQ/MessageEnumeratorExceptionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Messaging.RabbitMQ/Test/Mono.Messaging.RabbitMQ/MessageEnumeratorExceptionTest.cs
@@ -1,33 +1,33 @@
-//
-// MessageEnumeratorTest.cs -
-//	NUnit Test Cases for MessageEnumerator
-//
-// Author:
-//	Michael Barker  <mike@middlesoft.co.uk>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Security;
+//
+// MessageEnumeratorTest.cs -
+//	NUnit Test Cases for MessageEnumerator
+//
+// Author:
+//	Michael Barker  <mike@middlesoft.co.uk>
+//
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Security;
 using System.Security.Permissions;
 using System.Reflection;
 
@@ -38,12 +38,12 @@ using SystemMessageQueueException = Syst
 using SystemIMessageFormatter = System.Messaging.IMessageFormatter;
 
 using NUnit.Framework;
-using NUnit.Mocks;
-
-
-namespace MonoTests.Mono.Messaging {
+using NUnit.Mocks;
+
+
+namespace MonoTests.Mono.Messaging {
 	
-	[TestFixture]
+	[TestFixture]
 	public class MessageEnumeratorExceptionTest
 	{
 		private DynamicMock mockME;
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Messaging/Mono.Messaging/CompletedEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Messaging/Mono.Messaging/CompletedEventArgs.cs
@@ -32,19 +32,19 @@ using System;
 
 namespace Mono.Messaging
 {
-	public class CompletedEventArgs : EventArgs 
-	{
-		private IAsyncResult _result;
-
-		public CompletedEventArgs(IAsyncResult result)
-		{
-			_result = result;
-		}
-
-		public IAsyncResult AsyncResult
-		{
-			get { return _result; }
-			set { _result = value; }
-		}
-	}
+	public class CompletedEventArgs : EventArgs 
+	{
+		private IAsyncResult _result;
+
+		public CompletedEventArgs(IAsyncResult result)
+		{
+			_result = result;
+		}
+
+		public IAsyncResult AsyncResult
+		{
+			get { return _result; }
+			set { _result = value; }
+		}
+	}
 }
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.Posix/Mono.Remoting.Channels.Unix/UnixConnectionPool.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.Posix/Mono.Remoting.Channels.Unix/UnixConnectionPool.cs
@@ -1,311 +1,311 @@
-//
-// Mono.Remoting.Channels.Unix.UnixConnectionPool.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ideary.com)
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Threading;
-using System.IO;
-using System.Net.Sockets;
-using System.Runtime.Remoting;
-using Mono.Unix;
-
-namespace Mono.Remoting.Channels.Unix
-{
-	// This is a pool of Unix connections. Connections requested
-	// by the TCP channel are pooled after their use, and can
-	// be reused later. Connections are automaticaly closed
-	// if not used after some time, specified in KeepAliveSeconds.
-	// The number of allowed open connections can also be specified
-	// in MaxOpenConnections. The limit is per host.
-	// If a thread requests a connection and the limit has been 
-	// reached, the thread is suspended until one is released.
-
-	internal class UnixConnectionPool
-	{
-		// Table of pools. There is a HostConnectionPool 
-		// instance for each host
-		static Hashtable _pools = new Hashtable();
-
-		static int _maxOpenConnections = int.MaxValue;
-		static int _keepAliveSeconds = 15;
-
-		static Thread _poolThread;
-
-		static UnixConnectionPool()
-		{
-			// This thread will close unused connections
-			_poolThread = new Thread (new ThreadStart (ConnectionCollector));
-			_poolThread.Start();
-			_poolThread.IsBackground = true;
-		}
-
-		public static void Shutdown ()
-		{
-			if (_poolThread != null)
-				_poolThread.Abort();
-		}
-
-		public static int MaxOpenConnections
-		{
-			get { return _maxOpenConnections; }
-			set 
-			{ 
-				if (value < 1) throw new RemotingException ("MaxOpenConnections must be greater than zero");
-				_maxOpenConnections = value; 
-			}
-		}
-
-		public static int KeepAliveSeconds
-		{
-			get { return _keepAliveSeconds; }
-			set { _keepAliveSeconds = value; }
-		}
-
-		public static UnixConnection GetConnection (string path)
-		{
-			HostConnectionPool hostPool;
-
-			lock (_pools)
-			{
-				hostPool = (HostConnectionPool) _pools[path];
-				if (hostPool == null)
-				{
-					hostPool = new HostConnectionPool(path);
-					_pools[path] = hostPool;
-				}
-			}
-
-			return hostPool.GetConnection();
-		}
-
-		private static void ConnectionCollector ()
-		{
-			while (true)
-			{
-				Thread.Sleep(3000);
-				lock (_pools)
-				{
-					ICollection values = _pools.Values;
-					foreach (HostConnectionPool pool in values)
-						pool.PurgeConnections();
-				}
-			}
-		}
-	}
-
-	internal class ReusableUnixClient : UnixClient
-	{
-		public ReusableUnixClient (string path): base (path)
-		{
-		}
-		
-		public bool IsAlive
-		{
-			get
-			{
-				// This Poll will return true if there is data pending to
-				// be read. It prob. means that a client object using this
-				// connection got an exception and did not finish to read
-				// the data. It can also mean that the connection has been
-				// closed in the server. In both cases, the connection cannot
-				// be reused.
-				return !Client.Poll (0, SelectMode.SelectRead);
-			}
-		}
-	}
-
-	internal class UnixConnection
-	{
-		DateTime _controlTime;
-		Stream _stream;
-		ReusableUnixClient _client;
-		HostConnectionPool _pool;
-		byte[] _buffer;
-
-		public UnixConnection (HostConnectionPool pool, ReusableUnixClient client)
-		{
-			_pool = pool;
-			_client = client;
-			_stream = new BufferedStream (client.GetStream());
-			_controlTime = DateTime.Now;
-			_buffer = new byte[UnixMessageIO.DefaultStreamBufferSize];
-		}
-
-		public Stream Stream
-		{
-			get { return _stream; }
-		}
-
-		public DateTime ControlTime
-		{
-			get { return _controlTime; }
-			set { _controlTime = value; }
-		}
-
-		public bool IsAlive
-		{
-			get { return _client.IsAlive; }
-		}
-
-		// This is a "thread safe" buffer that can be used by 
-		// UnixClientTransportSink to read or send data to the stream.
-		// The buffer is "thread safe" since only one thread can
-		// use a connection at a given time.
-		public byte[] Buffer
-		{
-			get { return _buffer; }
-		}
-
-		// Returns the connection to the pool
-		public void Release()
-		{
-			_pool.ReleaseConnection (this);
-		}
-
-		public void Close()
-		{
-			_client.Close();
-		}
-	}
-
-	internal class HostConnectionPool
-	{
-		ArrayList _pool = new ArrayList();
-		int _activeConnections = 0;
-
-		string _path;
-
-		public HostConnectionPool (string path)
-		{
-			_path = path;
-		}
-
-		public UnixConnection GetConnection ()
-		{
-			UnixConnection connection = null;
-			lock (_pool)
-			{
-				do
-				{
-					if (_pool.Count > 0) 
-					{
-						// There are available connections
-
-						connection = (UnixConnection)_pool[_pool.Count - 1];
-						_pool.RemoveAt(_pool.Count - 1);
-						if (!connection.IsAlive) {
-							CancelConnection (connection);
-							connection = null;
-							continue;
-						}
-					}
-
-					if (connection == null && _activeConnections < UnixConnectionPool.MaxOpenConnections)
-					{
-						// No connections available, but the max connections
-						// has not been reached yet, so a new one can be created
-						// Create the connection outside the lock
-						break;
-					}
-
-					// No available connections in the pool
-					// Wait for somewone to release one.
-
-					if (connection == null)
-					{
-						Monitor.Wait(_pool);
-					}
-				} 
-				while (connection == null);
-			}
-
-			if (connection == null)
-				return CreateConnection ();
-			else
-				return connection;
-		}
-
-		private UnixConnection CreateConnection()
-		{
-			try
-			{
-				ReusableUnixClient client = new ReusableUnixClient (_path);
-				UnixConnection entry = new UnixConnection(this, client);
-				_activeConnections++;
-				return entry;
-			}
-			catch (Exception ex)
-			{
-				throw new RemotingException (ex.Message);
-			}
-		}
-
-		public void ReleaseConnection (UnixConnection entry)
-		{
-			lock (_pool)
-			{
-				entry.ControlTime = DateTime.Now;	// Initialize timeout
-				_pool.Add (entry);
-				Monitor.Pulse (_pool);
-			}
-		}
-
-		private void CancelConnection(UnixConnection entry)
-		{
-			try
-			{
-				entry.Stream.Close();
-				_activeConnections--;
-			}
-			catch
-			{
-			}
-		}
-
-		public void PurgeConnections()
-		{
-			lock (_pool)
-			{
-				for (int n=0; n < _pool.Count; n++)
-				{
-					UnixConnection entry = (UnixConnection)_pool[n];
-					if ( (DateTime.Now - entry.ControlTime).TotalSeconds > UnixConnectionPool.KeepAliveSeconds)
-					{
-						CancelConnection (entry);
-						_pool.RemoveAt(n);
-						n--;
-					}
-				}
-			}
-		}
-
-	}
-
-
-}
+//
+// Mono.Remoting.Channels.Unix.UnixConnectionPool.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ideary.com)
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Threading;
+using System.IO;
+using System.Net.Sockets;
+using System.Runtime.Remoting;
+using Mono.Unix;
+
+namespace Mono.Remoting.Channels.Unix
+{
+	// This is a pool of Unix connections. Connections requested
+	// by the TCP channel are pooled after their use, and can
+	// be reused later. Connections are automaticaly closed
+	// if not used after some time, specified in KeepAliveSeconds.
+	// The number of allowed open connections can also be specified
+	// in MaxOpenConnections. The limit is per host.
+	// If a thread requests a connection and the limit has been 
+	// reached, the thread is suspended until one is released.
+
+	internal class UnixConnectionPool
+	{
+		// Table of pools. There is a HostConnectionPool 
+		// instance for each host
+		static Hashtable _pools = new Hashtable();
+
+		static int _maxOpenConnections = int.MaxValue;
+		static int _keepAliveSeconds = 15;
+
+		static Thread _poolThread;
+
+		static UnixConnectionPool()
+		{
+			// This thread will close unused connections
+			_poolThread = new Thread (new ThreadStart (ConnectionCollector));
+			_poolThread.Start();
+			_poolThread.IsBackground = true;
+		}
+
+		public static void Shutdown ()
+		{
+			if (_poolThread != null)
+				_poolThread.Abort();
+		}
+
+		public static int MaxOpenConnections
+		{
+			get { return _maxOpenConnections; }
+			set 
+			{ 
+				if (value < 1) throw new RemotingException ("MaxOpenConnections must be greater than zero");
+				_maxOpenConnections = value; 
+			}
+		}
+
+		public static int KeepAliveSeconds
+		{
+			get { return _keepAliveSeconds; }
+			set { _keepAliveSeconds = value; }
+		}
+
+		public static UnixConnection GetConnection (string path)
+		{
+			HostConnectionPool hostPool;
+
+			lock (_pools)
+			{
+				hostPool = (HostConnectionPool) _pools[path];
+				if (hostPool == null)
+				{
+					hostPool = new HostConnectionPool(path);
+					_pools[path] = hostPool;
+				}
+			}
+
+			return hostPool.GetConnection();
+		}
+
+		private static void ConnectionCollector ()
+		{
+			while (true)
+			{
+				Thread.Sleep(3000);
+				lock (_pools)
+				{
+					ICollection values = _pools.Values;
+					foreach (HostConnectionPool pool in values)
+						pool.PurgeConnections();
+				}
+			}
+		}
+	}
+
+	internal class ReusableUnixClient : UnixClient
+	{
+		public ReusableUnixClient (string path): base (path)
+		{
+		}
+		
+		public bool IsAlive
+		{
+			get
+			{
+				// This Poll will return true if there is data pending to
+				// be read. It prob. means that a client object using this
+				// connection got an exception and did not finish to read
+				// the data. It can also mean that the connection has been
+				// closed in the server. In both cases, the connection cannot
+				// be reused.
+				return !Client.Poll (0, SelectMode.SelectRead);
+			}
+		}
+	}
+
+	internal class UnixConnection
+	{
+		DateTime _controlTime;
+		Stream _stream;
+		ReusableUnixClient _client;
+		HostConnectionPool _pool;
+		byte[] _buffer;
+
+		public UnixConnection (HostConnectionPool pool, ReusableUnixClient client)
+		{
+			_pool = pool;
+			_client = client;
+			_stream = new BufferedStream (client.GetStream());
+			_controlTime = DateTime.Now;
+			_buffer = new byte[UnixMessageIO.DefaultStreamBufferSize];
+		}
+
+		public Stream Stream
+		{
+			get { return _stream; }
+		}
+
+		public DateTime ControlTime
+		{
+			get { return _controlTime; }
+			set { _controlTime = value; }
+		}
+
+		public bool IsAlive
+		{
+			get { return _client.IsAlive; }
+		}
+
+		// This is a "thread safe" buffer that can be used by 
+		// UnixClientTransportSink to read or send data to the stream.
+		// The buffer is "thread safe" since only one thread can
+		// use a connection at a given time.
+		public byte[] Buffer
+		{
+			get { return _buffer; }
+		}
+
+		// Returns the connection to the pool
+		public void Release()
+		{
+			_pool.ReleaseConnection (this);
+		}
+
+		public void Close()
+		{
+			_client.Close();
+		}
+	}
+
+	internal class HostConnectionPool
+	{
+		ArrayList _pool = new ArrayList();
+		int _activeConnections = 0;
+
+		string _path;
+
+		public HostConnectionPool (string path)
+		{
+			_path = path;
+		}
+
+		public UnixConnection GetConnection ()
+		{
+			UnixConnection connection = null;
+			lock (_pool)
+			{
+				do
+				{
+					if (_pool.Count > 0) 
+					{
+						// There are available connections
+
+						connection = (UnixConnection)_pool[_pool.Count - 1];
+						_pool.RemoveAt(_pool.Count - 1);
+						if (!connection.IsAlive) {
+							CancelConnection (connection);
+							connection = null;
+							continue;
+						}
+					}
+
+					if (connection == null && _activeConnections < UnixConnectionPool.MaxOpenConnections)
+					{
+						// No connections available, but the max connections
+						// has not been reached yet, so a new one can be created
+						// Create the connection outside the lock
+						break;
+					}
+
+					// No available connections in the pool
+					// Wait for somewone to release one.
+
+					if (connection == null)
+					{
+						Monitor.Wait(_pool);
+					}
+				} 
+				while (connection == null);
+			}
+
+			if (connection == null)
+				return CreateConnection ();
+			else
+				return connection;
+		}
+
+		private UnixConnection CreateConnection()
+		{
+			try
+			{
+				ReusableUnixClient client = new ReusableUnixClient (_path);
+				UnixConnection entry = new UnixConnection(this, client);
+				_activeConnections++;
+				return entry;
+			}
+			catch (Exception ex)
+			{
+				throw new RemotingException (ex.Message);
+			}
+		}
+
+		public void ReleaseConnection (UnixConnection entry)
+		{
+			lock (_pool)
+			{
+				entry.ControlTime = DateTime.Now;	// Initialize timeout
+				_pool.Add (entry);
+				Monitor.Pulse (_pool);
+			}
+		}
+
+		private void CancelConnection(UnixConnection entry)
+		{
+			try
+			{
+				entry.Stream.Close();
+				_activeConnections--;
+			}
+			catch
+			{
+			}
+		}
+
+		public void PurgeConnections()
+		{
+			lock (_pool)
+			{
+				for (int n=0; n < _pool.Count; n++)
+				{
+					UnixConnection entry = (UnixConnection)_pool[n];
+					if ( (DateTime.Now - entry.ControlTime).TotalSeconds > UnixConnectionPool.KeepAliveSeconds)
+					{
+						CancelConnection (entry);
+						_pool.RemoveAt(n);
+						n--;
+					}
+				}
+			}
+		}
+
+	}
+
+
+}
--- /dev/null
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.WebBrowser/Mono.NullBrowser/Base.cs
@@ -0,0 +1,174 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+//
+
+using System;
+using System.Text;
+using System.Collections;
+using System.Runtime.InteropServices;
+using System.Diagnostics;
+using Mono.WebBrowser;
+
+namespace Mono.NullBrowser
+{
+	internal class Base
+	{
+		private static Hashtable boundControls;
+		private static bool initialized;
+		private static object initLock = new object ();
+		private static string monoMozDir;
+
+		private static bool isInitialized ()
+		{
+			if (!initialized)
+				return false;
+			return true;
+		}
+
+		static Base ()
+		{
+			boundControls = new Hashtable ();
+		}
+
+		public Base () { }
+
+		public static bool Init (WebBrowser control, Platform platform)
+		{
+			lock (initLock) {
+				if (!initialized) {
+				
+					initialized = true;
+				}
+			}
+			return initialized;
+		}
+
+		public static bool Bind (WebBrowser control, IntPtr handle, int width, int height)
+		{
+			if (!isInitialized ())
+				return false;
+
+			
+			return true;
+		}
+
+		public static bool Create (IWebBrowser control) {
+			if (!isInitialized ())
+				return false;
+
+			return true;
+		}
+
+		public static void Shutdown (IWebBrowser control)
+		{
+			lock (initLock) {
+				if (!initialized)
+					return;
+					
+				
+				boundControls.Remove (control);
+				if (boundControls.Count == 0) {
+					initialized = false;
+				}
+			}
+		}
+
+		// layout
+		public static void Focus (IWebBrowser control, FocusOption focus)
+		{
+			if (!isInitialized ())
+				return;
+
+		}
+
+
+		public static void Blur (IWebBrowser control)
+		{
+			if (!isInitialized ())
+				return;
+
+		}
+
+		public static void Activate (IWebBrowser control)
+		{
+			if (!isInitialized ())
+				return;
+
+		}
+
+		public static void Deactivate (IWebBrowser control)
+		{
+			if (!isInitialized ())
+				return;
+
+		}
+
+		public static void Resize (IWebBrowser control, int width, int height)
+		{
+			if (!isInitialized ())
+				return;
+
+		}
+
+		// navigation
+		public static void Home (IWebBrowser control)
+		{
+			if (!isInitialized ())
+				return;
+
+		}
+
+
+		public static IntPtr StringInit ()
+		{
+			return IntPtr.Zero;
+		}
+
+		public static void StringFinish (HandleRef str)
+		{
+		}
+
+		public static string StringGet (HandleRef str)
+		{
+			return String.Empty;
+		}
+
+		public static void StringSet (HandleRef str, string text)
+		{
+		}
+
+
+		public static object GetProxyForObject (IWebBrowser control, Guid iid, object obj)
+		{
+			return null;
+		}
+
+		public static string EvalScript (IWebBrowser control, string script)
+		{
+			return null;
+		}
+
+
+	}
+}
--- /dev/null
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.WebBrowser/Mono.NullBrowser/DOM/Navigation.cs
@@ -0,0 +1,127 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+//
+
+using System;
+using System.Runtime.InteropServices;
+using System.Text;
+using Mono.WebBrowser;
+using Mono.WebBrowser.DOM;
+
+namespace Mono.NullBrowser.DOM
+{
+	internal class Navigation: INavigation
+	{
+
+
+		#region INavigation Members
+
+		public bool CanGoBack {
+			get {
+				return false;
+			}
+		}
+
+		public bool CanGoForward {
+			get {
+				return false;
+			}
+		}
+
+		public bool Back ()
+		{
+			return false;
+		}
+
+		public bool Forward ()
+		{
+			return false;
+		}
+
+		public void Home ()
+		{
+		}
+
+		public void Reload ()
+		{
+		}
+
+		public void Reload (ReloadOption option)
+		{
+		}
+
+		public void Stop ()
+		{
+		}
+		
+		
+		/// <summary>
+		/// Navigate to the page in the history, by index.
+		/// </summary>
+		/// <param name="index">
+		/// A <see cref="System.Int32"/> representing an absolute index in the 
+		/// history (that is, > -1 and < history length
+		/// </param>
+		public void Go (int index)
+		{
+		}
+
+		/// <summary>
+		/// 
+		/// </summary>
+		/// <param name="index">
+		/// A <see cref="System.Int32"/> representing an index in the 
+		/// history, that can be relative or absolute depending on the relative argument
+		/// </param>
+		/// <param name="relative">
+		/// A <see cref="System.Boolean"/> indicating whether the index is relative to 
+		/// the current place in history or not (i.e., if relative = true, index can be
+		/// positive or negative, and index=-1 means load the previous page in the history.
+		/// if relative = false, index must be > -1, and index = 0 means load the first
+		/// page of the history.
+		/// </param>
+		public void Go (int index, bool relative) {
+		}
+		
+		public void Go (string url)
+		{
+		}
+
+		public void Go (string url, LoadFlags flags) 
+		{
+		}
+
+		public int HistoryCount {
+			get {
+				return 0;
+			}
+		}
+
+		#endregion
+
+		public override int GetHashCode () {
+			return 0;
+		}		
+	}
+}
--- /dev/null
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.WebBrowser/Mono.NullBrowser/WebBrowser.cs
@@ -0,0 +1,414 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+// Copyright (c) 2013 Jo Shields
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+//	Jo Shields (directhex@apebox.org)
+//
+
+#undef debug
+
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Diagnostics;
+using Mono.WebBrowser;
+using Mono.WebBrowser.DOM;
+
+namespace Mono.NullBrowser
+{
+	internal class WebBrowser : IWebBrowser
+	{
+		bool loaded;
+		internal bool created = false;
+		bool creating = false;
+
+                internal DOM.Navigation navigation;
+
+		internal Platform platform;
+		internal Platform enginePlatform;
+		System.ComponentModel.EventHandlerList events;
+		System.ComponentModel.EventHandlerList domEvents;
+
+		string statusText;
+
+		bool streamingMode;
+		
+		internal Hashtable documents;
+
+		int width;
+		int height;
+		bool isDirty;
+		
+		public WebBrowser (Platform platform)
+		{
+			this.platform = platform;
+			loaded = Base.Init (this, platform);
+			documents = new Hashtable ();
+		}
+
+		public bool Load (IntPtr handle, int width, int height)
+		{
+			loaded = Base.Bind (this, handle, width, height);
+			return loaded;
+		}
+
+		bool Created {
+			get {
+				if (!creating && !created) {
+					creating = true;
+					created = Base.Create (this);
+					if (created && isDirty) {
+						isDirty = false;
+						Base.Resize (this, width, height);
+					}
+				}
+				return created;
+			}
+		}
+
+		public void Shutdown ()
+		{
+			Base.Shutdown (this);
+		}
+		
+		internal void Reset ()
+		{
+			this.DomEvents.Dispose ();
+			this.domEvents = null;
+			this.documents.Clear ();
+		}
+
+		public bool Initialized {
+			get { return this.loaded; }
+		}
+		
+		public IWindow Window {
+			get {
+				return null;
+			}
+		}
+
+		public IDocument Document {
+			get {
+				return null;
+			}
+		}
+
+		public INavigation Navigation {
+			get {
+                                if (!Created) return null;
+
+                                if (navigation == null) {
+
+                                        navigation = new DOM.Navigation ();
+                                }
+                                return navigation as INavigation;
+			}
+		}
+		
+		public string StatusText {
+			get { return statusText; }
+		}
+		
+		public bool Offline {
+			get {
+				return false;
+			}
+			set {
+			}
+		}
+		
+		internal System.ComponentModel.EventHandlerList DomEvents {
+			get {
+				if (domEvents == null)
+					domEvents = new System.ComponentModel.EventHandlerList();
+
+				return domEvents;
+			}
+		}
+
+		internal System.ComponentModel.EventHandlerList Events {
+			get {
+				if (events == null)
+					events = new System.ComponentModel.EventHandlerList();
+
+				return events;
+			}
+		}
+		
+		#region Layout
+		public void FocusIn (FocusOption focus)
+		{
+			if (!created) return;
+			Base.Focus (this, focus);
+		}
+		public void FocusOut ()
+		{
+			if (!created) return;
+			Base.Blur (this);
+		}
+		
+		public void Activate ()
+		{
+			if (!Created) return;
+			Base.Activate (this);
+		}
+		public void Deactivate ()
+		{
+			if (!created) return;
+			Base.Deactivate (this);
+		}
+
+		public void Resize (int width, int height)
+		{
+			this.width = width;
+			this.height = height;
+			isDirty = true;
+			if (!created) return;
+			Base.Resize (this, width, height);			
+		}
+
+		public void Render (byte[] data)
+		{
+			if (!Created) return;
+			if (data == null)
+				throw new ArgumentNullException ("data");
+			string html = System.Text.ASCIIEncoding.UTF8.GetString (data);
+			Render (html);
+		}
+
+		public void Render (string html)
+		{
+			if (!Created) return;
+			Render (html, "file:///", "text/html");
+		}
+
+				
+		public void Render (string html, string uri, string contentType)
+		{
+			if (!Created) return;
+			throw new Mono.WebBrowser.Exception (Mono.WebBrowser.Exception.ErrorCodes.Navigation);
+
+			IntPtr native_html = Marshal.StringToHGlobalAnsi (html);
+			Marshal.FreeHGlobal (native_html);
+
+
+		}
+		
+		public void ExecuteScript (string script) {
+			if (!Created) return;
+			Base.EvalScript (this, script);
+		}
+				
+		internal void AttachEvent (INode node, string eve, EventHandler handler) {
+			string key = String.Intern (node.GetHashCode() + ":" + eve);
+#if debug
+			Console.Error.WriteLine ("Event Attached: " + key);
+#endif
+			DomEvents.AddHandler (key, handler);
+		}
+
+		internal void DetachEvent (INode node, string eve, EventHandler handler) {
+			string key = String.Intern (node.GetHashCode() + ":" + eve);
+#if debug			
+			Console.Error.WriteLine ("Event Detached: " + key);
+#endif			
+			DomEvents.RemoveHandler (key, handler);
+		}
+		
+		#endregion
+
+		#region Events
+		internal static object KeyDownEvent = new object ();
+		internal static object KeyPressEvent = new object ();
+		internal static object KeyUpEvent = new object ();
+		internal static object MouseClickEvent = new object ();
+		internal static object MouseDoubleClickEvent = new object ();
+		internal static object MouseDownEvent = new object ();
+		internal static object MouseEnterEvent = new object ();
+		internal static object MouseLeaveEvent = new object ();
+		internal static object MouseMoveEvent = new object ();
+		internal static object MouseUpEvent = new object ();
+		internal static object FocusEvent = new object ();
+		internal static object BlurEvent = new object ();
+		internal static object CreateNewWindowEvent = new object ();
+		internal static object AlertEvent = new object ();
+			
+		internal static object LoadStartedEvent = new object ();
+		internal static object LoadCommitedEvent = new object ();
+		internal static object ProgressChangedEvent = new object ();
+		internal static object LoadFinishedEvent = new object ();	
+		
+		internal static object LoadEvent = new object ();
+		internal static object UnloadEvent = new object ();
+		internal static object StatusChangedEvent = new object ();
+		internal static object SecurityChangedEvent = new object ();
+		internal static object ProgressEvent = new object ();
+		internal static object ContextMenuEvent = new object ();
+		
+		internal static object NavigationRequestedEvent = new object ();
+		
+		public event NodeEventHandler KeyDown
+		{
+			add { Events.AddHandler (KeyDownEvent, value); }
+			remove { Events.RemoveHandler (KeyDownEvent, value); }
+		}
+
+		public event NodeEventHandler KeyPress
+		{
+			add { Events.AddHandler (KeyPressEvent, value); }
+			remove { Events.RemoveHandler (KeyPressEvent, value); }
+		}
+		public event NodeEventHandler KeyUp
+		{
+			add { Events.AddHandler (KeyUpEvent, value); }
+			remove { Events.RemoveHandler (KeyUpEvent, value); }
+		}
+		public event NodeEventHandler MouseClick
+		{
+			add { Events.AddHandler (MouseClickEvent, value); }
+			remove { Events.RemoveHandler (MouseClickEvent, value); }
+		}
+		public event NodeEventHandler MouseDoubleClick
+		{
+			add { Events.AddHandler (MouseDoubleClickEvent, value); }
+			remove { Events.RemoveHandler (MouseDoubleClickEvent, value); }
+		}
+		public event NodeEventHandler MouseDown
+		{
+			add { Events.AddHandler (MouseDownEvent, value); }
+			remove { Events.RemoveHandler (MouseDownEvent, value); }
+		}
+		public event NodeEventHandler MouseEnter
+		{
+			add { Events.AddHandler (MouseEnterEvent, value); }
+			remove { Events.RemoveHandler (MouseEnterEvent, value); }
+		}
+		public event NodeEventHandler MouseLeave
+		{
+			add { Events.AddHandler (MouseLeaveEvent, value); }
+			remove { Events.RemoveHandler (MouseLeaveEvent, value); }
+		}
+		public event NodeEventHandler MouseMove
+		{
+			add { Events.AddHandler (MouseMoveEvent, value); }
+			remove { Events.RemoveHandler (MouseMoveEvent, value); }
+		}
+		public event NodeEventHandler MouseUp
+		{
+			add { Events.AddHandler (MouseUpEvent, value); }
+			remove { Events.RemoveHandler (MouseUpEvent, value); }
+		}
+		public event EventHandler Focus
+		{
+			add { Events.AddHandler (FocusEvent, value); }
+			remove { Events.RemoveHandler (FocusEvent, value); }
+		}
+		public event EventHandler Blur
+		{
+			add { Events.AddHandler (BlurEvent, value); }
+			remove { Events.RemoveHandler (BlurEvent, value); }
+		}
+		public event CreateNewWindowEventHandler CreateNewWindow
+		{
+			add { Events.AddHandler (CreateNewWindowEvent, value); }
+			remove { Events.RemoveHandler (CreateNewWindowEvent, value); }
+		}
+		public event AlertEventHandler Alert
+		{
+			add { Events.AddHandler (AlertEvent, value); }
+			remove { Events.RemoveHandler (AlertEvent, value); }
+		}
+		public event EventHandler Loaded
+		{
+			add { Events.AddHandler (LoadEvent, value); }
+			remove { Events.RemoveHandler (LoadEvent, value); }
+		}
+		public event EventHandler Unloaded
+		{
+			add { Events.AddHandler (UnloadEvent, value); }
+			remove { Events.RemoveHandler (UnloadEvent, value); }
+		}
+
+ 		public event StatusChangedEventHandler StatusChanged
+		{
+			add { Events.AddHandler (StatusChangedEvent, value); }
+			remove { Events.RemoveHandler (StatusChangedEvent, value); }
+		}
+		
+ 		public event SecurityChangedEventHandler SecurityChanged
+		{
+			add { Events.AddHandler (SecurityChangedEvent, value); }
+			remove { Events.RemoveHandler (SecurityChangedEvent, value); }
+		}
+
+		public event LoadStartedEventHandler LoadStarted
+		{
+			add { Events.AddHandler (LoadStartedEvent, value); }
+			remove { Events.RemoveHandler (LoadStartedEvent, value); }
+		}
+		
+		public event LoadCommitedEventHandler LoadCommited
+		{
+			add { Events.AddHandler (LoadCommitedEvent, value); }
+			remove { Events.RemoveHandler (LoadCommitedEvent, value); }
+		}		
+		
+		public event ProgressChangedEventHandler ProgressChanged
+		{
+			add { Events.AddHandler (ProgressChangedEvent, value); }
+			remove { Events.RemoveHandler (ProgressChangedEvent, value); }
+		}
+		
+		public event LoadFinishedEventHandler LoadFinished
+		{
+			add { Events.AddHandler (LoadFinishedEvent, value); }
+			remove { Events.RemoveHandler (LoadFinishedEvent, value); }
+		}
+
+		public event ContextMenuEventHandler ContextMenuShown
+		{
+			add { Events.AddHandler (ContextMenuEvent, value); }
+			remove { Events.RemoveHandler (ContextMenuEvent, value); }
+		}
+
+		public event NavigationRequestedEventHandler NavigationRequested
+		{
+			add { }
+			remove { }
+		}
+
+		internal static object GenericEvent = new object ();
+		internal event EventHandler Generic
+		{
+			add { Events.AddHandler (GenericEvent, value); }
+			remove { Events.RemoveHandler (GenericEvent, value); }
+		}
+
+		#endregion
+
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.WebBrowser/Mono.WebBrowser.dll.sources
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.WebBrowser/Mono.WebBrowser.dll.sources
@@ -133,6 +133,9 @@ Mono.Mozilla/interfaces/nsIWebNavigation
 Mono.Mozilla/interfaces/extras/NodeType.cs
 Mono.Mozilla/interfaces/extras/nsIWriteSegmentFun.cs
 Mono.Mozilla/interfaces/extras/Options.cs
+Mono.NullBrowser/Base.cs
+Mono.NullBrowser/WebBrowser.cs
+Mono.NullBrowser/DOM/Navigation.cs
 Mono.WebBrowser/DOM/IDocumentType.cs
 Mono.WebBrowser/DOM/IDOMImplementation.cs
 Mono.WebBrowser/DOM/IMediaList.cs
--- mono-4.6.2.7+dfsg.orig/mcs/class/Mono.WebBrowser/Mono.WebBrowser/Manager.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Mono.WebBrowser/Mono.WebBrowser/Manager.cs
@@ -50,8 +50,15 @@ namespace Mono.WebBrowser
 					browserEngine = null;
 				}
 			}
-			if (browserEngine == null || browserEngine == "mozilla")
-				return new Mono.Mozilla.WebBrowser (platform);
+			if (browserEngine == "mozilla") {
+				try {
+					return new Mono.Mozilla.WebBrowser (platform);
+				} catch {
+					browserEngine = null;
+				}
+			}
+			if (browserEngine == null)
+				return new Mono.NullBrowser.WebBrowser (platform);
 			throw new Exception (Mono.WebBrowser.Exception.ErrorCodes.EngineNotSupported, browserEngine);
 		}
 
--- mono-4.6.2.7+dfsg.orig/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Rfc2251/RfcLdapSuperDN.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Rfc2251/RfcLdapSuperDN.cs
@@ -8,50 +8,50 @@
 using System;
 using Novell.Directory.Ldap.Asn1;
 
-namespace Novell.Directory.Ldap.Rfc2251
-{
-	///<summary>Represents an [0] LDAP DN OPTIONAL used as newSuperior attribute of
-	/// ModifyDNRequest (For more detail on this Syntax refer to rfc2251).
-	/// </summary>
-	public class RfcLdapSuperDN : Asn1Tagged
-	{
-		private sbyte[] content;
-	
-		/// <summary>
-		/// ASN.1 [0] LDAP DN OPTIONAL tag definition.
-		/// </summary>
-		public static readonly int TAG = 0x00;
-
-		/// <summary> ID is added for Optimization.
-		/// Id needs only be one Value for every instance, thus we create it only once.
-		/// </summary>
-		protected static readonly Asn1Identifier ID = new Asn1Identifier(Asn1Identifier.CONTEXT, false, TAG);
-	   
-		/// <summary> Constructs an RfcLDAPSuperDN object from a String object.
-		/// </summary>
-		/// <param name="content"> A string value that will be contained in the this RfcLDAPSuperDN object </param>
-		public RfcLdapSuperDN(String s) : base(ID, new Asn1OctetString(s), false) //type is encoded IMPLICITLY 
-		{			
-			try {
+namespace Novell.Directory.Ldap.Rfc2251
+{
+	///<summary>Represents an [0] LDAP DN OPTIONAL used as newSuperior attribute of
+	/// ModifyDNRequest (For more detail on this Syntax refer to rfc2251).
+	/// </summary>
+	public class RfcLdapSuperDN : Asn1Tagged
+	{
+		private sbyte[] content;
+	
+		/// <summary>
+		/// ASN.1 [0] LDAP DN OPTIONAL tag definition.
+		/// </summary>
+		public static readonly int TAG = 0x00;
+
+		/// <summary> ID is added for Optimization.
+		/// Id needs only be one Value for every instance, thus we create it only once.
+		/// </summary>
+		protected static readonly Asn1Identifier ID = new Asn1Identifier(Asn1Identifier.CONTEXT, false, TAG);
+	   
+		/// <summary> Constructs an RfcLDAPSuperDN object from a String object.
+		/// </summary>
+		/// <param name="content"> A string value that will be contained in the this RfcLDAPSuperDN object </param>
+		public RfcLdapSuperDN(String s) : base(ID, new Asn1OctetString(s), false) //type is encoded IMPLICITLY 
+		{			
+			try {
 				System.Text.Encoding encoder = System.Text.Encoding.GetEncoding("utf-8"); 
 				byte[] ibytes = encoder.GetBytes(s);
 				sbyte[] sbytes=SupportClass.ToSByteArray(ibytes);
 
-				this.content = sbytes;
-			} 
-			catch(System.IO.IOException uee) {
-				throw new System.SystemException(uee.ToString());
-			}
-		}
-		
-		/// <summary> Constructs an RfcLDAPSuperDN object from a byte array. </summary>
-		/// <param name="content"> A byte array representing the string that will be contained in the this RfcLDAPSuperDN object </param>
-		[CLSCompliantAttribute(false)]
-		public RfcLdapSuperDN(sbyte[] ba) : base(ID, new Asn1OctetString(ba), false) //type is encoded IMPLICITLY 
-		{			
-			this.content = ba;
-		}
-	
+				this.content = sbytes;
+			} 
+			catch(System.IO.IOException uee) {
+				throw new System.SystemException(uee.ToString());
+			}
+		}
+		
+		/// <summary> Constructs an RfcLDAPSuperDN object from a byte array. </summary>
+		/// <param name="content"> A byte array representing the string that will be contained in the this RfcLDAPSuperDN object </param>
+		[CLSCompliantAttribute(false)]
+		public RfcLdapSuperDN(sbyte[] ba) : base(ID, new Asn1OctetString(ba), false) //type is encoded IMPLICITLY 
+		{			
+			this.content = ba;
+		}
+	
 		/// <summary> Encodes the current instance into the
 		/// specified output stream using the specified encoder object.
 		/// 
@@ -66,8 +66,8 @@ namespace Novell.Directory.Ldap.Rfc2251
 		{
 			enc.encode(this, out_Renamed);
 			return ;
-		}
-
+		}
+
 		/// <summary> Returns the content of this RfcLdapSuperDN as a byte array.</summary>
 		[CLSCompliantAttribute(false)]
 		public sbyte[] byteValue()
@@ -96,7 +96,7 @@ namespace Novell.Directory.Ldap.Rfc2251
 		public override System.String ToString()
 		{
 			return base.ToString() + " " + stringValue();
-		}
-
-	}
-}
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ExceptionMessages.resx
+++ mono-4.6.2.7+dfsg/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ExceptionMessages.resx
@@ -1,289 +1,289 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 1.3
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">1.3</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1">this is my long string</data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        [base64 mime encoded serialized .NET Framework object]
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        [base64 mime encoded string representing a byte array form of the .NET Framework object]
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used forserialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>1.3</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="TOSTRING">
-    <value>{0}: {1} ({2}) {3}</value>
-  </data>
-  <data name="SERVER_MSG">
-    <value>{0}: Server Message: {1}</value>
-  </data>
-  <data name="MATCHED_DN">
-    <value>{0}: Matched DN: {1}</value>
-  </data>
-  <data name="FAILED_REFERRAL">
-    <value>{0}: Failed Referral: {1}</value>
-  </data>
-  <data name="REFERRAL_ITEM">
-    <value>{0}: Referral: {1}</value>
-  </data>
-  <data name="CONNECTION_ERROR">
-    <value>Unable to connect to server {0}:{1}</value>
-  </data>
-  <data name="CONNECTION_IMPOSSIBLE">
-    <value>Unable to reconnect to server, application has never called connect()</value>
-  </data>
-  <data name="CONNECTION_WAIT">
-    <value>Connection lost waiting for results from {0}:{1}</value>
-  </data>
-  <data name="CONNECTION_FINALIZED">
-    <value>Connection closed by the application finalizing the object</value>
-  </data>
-  <data name="CONNECTION_CLOSED">
-    <value>Connection closed by the application disconnecting</value>
-  </data>
-  <data name="CONNECTION_READER">
-    <value>Reader thread terminated</value>
-  </data>
-  <data name="DUP_ERROR">
-    <value>RfcLdapMessage: Cannot duplicate message built from the input stream</value>
-  </data>
-  <data name="REFERENCE_ERROR">
-    <value>Error attempting to follow a search continuation reference</value>
-  </data>
-  <data name="REFERRAL_ERROR">
-    <value>Error attempting to follow a referral</value>
-  </data>
-  <data name="REFERRAL_LOCAL">
-    <value>LdapSearchResults.{0}(): No entry found &amp; request is not complete</value>
-  </data>
-  <data name="REFERRAL_SEND">
-    <value>Error sending request to referred server</value>
-  </data>
-  <data name="REFERENCE_NOFOLLOW">
-    <value>Search result reference received, and referral following is off</value>
-  </data>
-  <data name="REFERRAL_BIND">
-    <value>LdapBind.bind() function returned null</value>
-  </data>
-  <data name="REFERRAL_BIND_MATCH">
-    <value>Could not match LdapBind.bind() connection with Server Referral URL list</value>
-  </data>
-  <data name="NO_DUP_REQUEST">
-    <value>Cannot duplicate message to follow referral for {0} request, not allowed</value>
-  </data>
-  <data name="SERVER_CONNECT_ERROR">
-    <value>Error connecting to server {0} while attempting to follow a referral</value>
-  </data>
-  <data name="NO_SUP_PROPERTY">
-    <value>Requested property is not supported.</value>
-  </data>
-  <data name="ENTRY_PARAM_ERROR">
-    <value>Invalid Entry parameter</value>
-  </data>
-  <data name="DN_PARAM_ERROR">
-    <value>Invalid DN parameter</value>
-  </data>
-  <data name="RDN_PARAM_ERROR">
-    <value>Invalid DN or RDN parameter</value>
-  </data>
-  <data name="OP_PARAM_ERROR">
-    <value>Invalid extended operation parameter, no OID specified</value>
-  </data>
-  <data name="PARAM_ERROR">
-    <value>Invalid parameter</value>
-  </data>
-  <data name="DECODING_ERROR">
-    <value>Error Decoding responseValue</value>
-  </data>
-  <data name="ENCODING_ERROR">
-    <value>Encoding Error</value>
-  </data>
-  <data name="IO_EXCEPTION">
-    <value>I/O Exception on host {0}, port {1}</value>
-  </data>
-  <data name="INVALID_ESCAPE">
-    <value>Invalid value in escape sequence "{0}"</value>
-  </data>
-  <data name="SHORT_ESCAPE">
-    <value>Incomplete escape sequence</value>
-  </data>
-  <data name="UNEXPECTED_END">
-    <value>Unexpected end of filter</value>
-  </data>
-  <data name="MISSING_LEFT_PAREN">
-    <value>Unmatched parentheses, left parenthesis missing</value>
-  </data>
-  <data name="NO_OPTION">
-    <value>Semicolon present, but no option specified</value>
-  </data>
-  <data name="MISSING_RIGHT_PAREN">
-    <value>Unmatched parentheses, right parenthesis missing</value>
-  </data>
-  <data name="EXPECTING_RIGHT_PAREN">
-    <value>Expecting right parenthesis, found "{0}"</value>
-  </data>
-  <data name="EXPECTING_LEFT_PAREN">
-    <value>Expecting left parenthesis, found "{0}"</value>
-  </data>
-  <data name="NO_ATTRIBUTE_NAME">
-    <value>Missing attribute description</value>
-  </data>
-  <data name="NO_DN_NOR_MATCHING_RULE">
-    <value>DN and matching rule not specified</value>
-  </data>
-  <data name="NO_MATCHING_RULE">
-    <value>Missing matching rule</value>
-  </data>
-  <data name="INVALID_FILTER_COMPARISON">
-    <value>Invalid comparison operator</value>
-  </data>
-  <data name="INVALID_CHAR_IN_FILTER">
-    <value>The invalid character "{0}" needs to be escaped as "{1}"</value>
-  </data>
-  <data name="INVALID_ESC_IN_DESCR">
-    <value>Escape sequence not allowed in attribute description</value>
-  </data>
-  <data name="INVALID_CHAR_IN_DESCR">
-    <value>Invalid character "{0}" in attribute description</value>
-  </data>
-  <data name="NOT_AN_ATTRIBUTE">
-    <value>Schema element is not an LdapAttributeSchema object</value>
-  </data>
-  <data name="UNEQUAL_LENGTHS">
-    <value>Length of attribute Name array does not equal length of Flags array</value>
-  </data>
-  <data name="IMPROPER_REFERRAL">
-    <value>Referral not supported for command {0}</value>
-  </data>
-  <data name="NOT_IMPLEMENTED">
-    <value>Method LdapConnection.startTLS not implemented</value>
-  </data>
-  <data name="NO_MEMORY">
-    <value>All results could not be stored in memory, sort failed</value>
-  </data>
-  <data name="SERVER_SHUTDOWN_REQ">
-    <value>Received unsolicited notification from server {0}:{1} to shutdown</value>
-  </data>
-  <data name="INVALID_ADDRESS">
-    <value>Invalid syntax for address with port; {0}</value>
-  </data>
-  <data name="UNKNOWN_RESULT">
-    <value>Unknown Ldap result code {0}</value>
-  </data>
-  <data name="OUTSTANDING_OPERATIONS">
-    <value>Cannot start or stop TLS because outstanding Ldap operations exist on this connection</value>
-  </data>
-  <data name="WRONG_FACTORY">
-    <value>StartTLS cannot use the set socket factory because it does not implement LdapTLSSocketFactory</value>
-  </data>
-  <data name="NO_TLS_FACTORY">
-    <value>StartTLS failed because no LdapTLSSocketFactory has been set for this Connection</value>
-  </data>
-  <data name="NO_STARTTLS">
-    <value>An attempt to stopTLS on a connection where startTLS had not been called</value>
-  </data>
-  <data name="STOPTLS_ERROR">
-    <value>Error stopping TLS: Error getting input &amp; output streams from the original socket</value>
-  </data>
-  <data name="MULTIPLE_SCHEMA">
-    <value>Multiple schema found when reading the subschemaSubentry for {0}</value>
-  </data>
-  <data name="NO_SCHEMA">
-    <value>No schema found when reading the subschemaSubentry for {0}</value>
-  </data>
-  <data name="READ_MULTIPLE">
-    <value>Read response is ambiguous, multiple entries returned</value>
-  </data>
-  <data name="CANNOT_BIND">
-    <value>Cannot bind. Use PoolManager.getBoundConnection()</value>
-  </data>
-  <data name="SSL_PROVIDER_MISSING">
-    <value>Please ensure that SSL Provider is properly installed.</value>
-  </data>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 1.3
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">1.3</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1">this is my long string</data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        [base64 mime encoded serialized .NET Framework object]
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        [base64 mime encoded string representing a byte array form of the .NET Framework object]
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used forserialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>1.3</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="TOSTRING">
+    <value>{0}: {1} ({2}) {3}</value>
+  </data>
+  <data name="SERVER_MSG">
+    <value>{0}: Server Message: {1}</value>
+  </data>
+  <data name="MATCHED_DN">
+    <value>{0}: Matched DN: {1}</value>
+  </data>
+  <data name="FAILED_REFERRAL">
+    <value>{0}: Failed Referral: {1}</value>
+  </data>
+  <data name="REFERRAL_ITEM">
+    <value>{0}: Referral: {1}</value>
+  </data>
+  <data name="CONNECTION_ERROR">
+    <value>Unable to connect to server {0}:{1}</value>
+  </data>
+  <data name="CONNECTION_IMPOSSIBLE">
+    <value>Unable to reconnect to server, application has never called connect()</value>
+  </data>
+  <data name="CONNECTION_WAIT">
+    <value>Connection lost waiting for results from {0}:{1}</value>
+  </data>
+  <data name="CONNECTION_FINALIZED">
+    <value>Connection closed by the application finalizing the object</value>
+  </data>
+  <data name="CONNECTION_CLOSED">
+    <value>Connection closed by the application disconnecting</value>
+  </data>
+  <data name="CONNECTION_READER">
+    <value>Reader thread terminated</value>
+  </data>
+  <data name="DUP_ERROR">
+    <value>RfcLdapMessage: Cannot duplicate message built from the input stream</value>
+  </data>
+  <data name="REFERENCE_ERROR">
+    <value>Error attempting to follow a search continuation reference</value>
+  </data>
+  <data name="REFERRAL_ERROR">
+    <value>Error attempting to follow a referral</value>
+  </data>
+  <data name="REFERRAL_LOCAL">
+    <value>LdapSearchResults.{0}(): No entry found &amp; request is not complete</value>
+  </data>
+  <data name="REFERRAL_SEND">
+    <value>Error sending request to referred server</value>
+  </data>
+  <data name="REFERENCE_NOFOLLOW">
+    <value>Search result reference received, and referral following is off</value>
+  </data>
+  <data name="REFERRAL_BIND">
+    <value>LdapBind.bind() function returned null</value>
+  </data>
+  <data name="REFERRAL_BIND_MATCH">
+    <value>Could not match LdapBind.bind() connection with Server Referral URL list</value>
+  </data>
+  <data name="NO_DUP_REQUEST">
+    <value>Cannot duplicate message to follow referral for {0} request, not allowed</value>
+  </data>
+  <data name="SERVER_CONNECT_ERROR">
+    <value>Error connecting to server {0} while attempting to follow a referral</value>
+  </data>
+  <data name="NO_SUP_PROPERTY">
+    <value>Requested property is not supported.</value>
+  </data>
+  <data name="ENTRY_PARAM_ERROR">
+    <value>Invalid Entry parameter</value>
+  </data>
+  <data name="DN_PARAM_ERROR">
+    <value>Invalid DN parameter</value>
+  </data>
+  <data name="RDN_PARAM_ERROR">
+    <value>Invalid DN or RDN parameter</value>
+  </data>
+  <data name="OP_PARAM_ERROR">
+    <value>Invalid extended operation parameter, no OID specified</value>
+  </data>
+  <data name="PARAM_ERROR">
+    <value>Invalid parameter</value>
+  </data>
+  <data name="DECODING_ERROR">
+    <value>Error Decoding responseValue</value>
+  </data>
+  <data name="ENCODING_ERROR">
+    <value>Encoding Error</value>
+  </data>
+  <data name="IO_EXCEPTION">
+    <value>I/O Exception on host {0}, port {1}</value>
+  </data>
+  <data name="INVALID_ESCAPE">
+    <value>Invalid value in escape sequence "{0}"</value>
+  </data>
+  <data name="SHORT_ESCAPE">
+    <value>Incomplete escape sequence</value>
+  </data>
+  <data name="UNEXPECTED_END">
+    <value>Unexpected end of filter</value>
+  </data>
+  <data name="MISSING_LEFT_PAREN">
+    <value>Unmatched parentheses, left parenthesis missing</value>
+  </data>
+  <data name="NO_OPTION">
+    <value>Semicolon present, but no option specified</value>
+  </data>
+  <data name="MISSING_RIGHT_PAREN">
+    <value>Unmatched parentheses, right parenthesis missing</value>
+  </data>
+  <data name="EXPECTING_RIGHT_PAREN">
+    <value>Expecting right parenthesis, found "{0}"</value>
+  </data>
+  <data name="EXPECTING_LEFT_PAREN">
+    <value>Expecting left parenthesis, found "{0}"</value>
+  </data>
+  <data name="NO_ATTRIBUTE_NAME">
+    <value>Missing attribute description</value>
+  </data>
+  <data name="NO_DN_NOR_MATCHING_RULE">
+    <value>DN and matching rule not specified</value>
+  </data>
+  <data name="NO_MATCHING_RULE">
+    <value>Missing matching rule</value>
+  </data>
+  <data name="INVALID_FILTER_COMPARISON">
+    <value>Invalid comparison operator</value>
+  </data>
+  <data name="INVALID_CHAR_IN_FILTER">
+    <value>The invalid character "{0}" needs to be escaped as "{1}"</value>
+  </data>
+  <data name="INVALID_ESC_IN_DESCR">
+    <value>Escape sequence not allowed in attribute description</value>
+  </data>
+  <data name="INVALID_CHAR_IN_DESCR">
+    <value>Invalid character "{0}" in attribute description</value>
+  </data>
+  <data name="NOT_AN_ATTRIBUTE">
+    <value>Schema element is not an LdapAttributeSchema object</value>
+  </data>
+  <data name="UNEQUAL_LENGTHS">
+    <value>Length of attribute Name array does not equal length of Flags array</value>
+  </data>
+  <data name="IMPROPER_REFERRAL">
+    <value>Referral not supported for command {0}</value>
+  </data>
+  <data name="NOT_IMPLEMENTED">
+    <value>Method LdapConnection.startTLS not implemented</value>
+  </data>
+  <data name="NO_MEMORY">
+    <value>All results could not be stored in memory, sort failed</value>
+  </data>
+  <data name="SERVER_SHUTDOWN_REQ">
+    <value>Received unsolicited notification from server {0}:{1} to shutdown</value>
+  </data>
+  <data name="INVALID_ADDRESS">
+    <value>Invalid syntax for address with port; {0}</value>
+  </data>
+  <data name="UNKNOWN_RESULT">
+    <value>Unknown Ldap result code {0}</value>
+  </data>
+  <data name="OUTSTANDING_OPERATIONS">
+    <value>Cannot start or stop TLS because outstanding Ldap operations exist on this connection</value>
+  </data>
+  <data name="WRONG_FACTORY">
+    <value>StartTLS cannot use the set socket factory because it does not implement LdapTLSSocketFactory</value>
+  </data>
+  <data name="NO_TLS_FACTORY">
+    <value>StartTLS failed because no LdapTLSSocketFactory has been set for this Connection</value>
+  </data>
+  <data name="NO_STARTTLS">
+    <value>An attempt to stopTLS on a connection where startTLS had not been called</value>
+  </data>
+  <data name="STOPTLS_ERROR">
+    <value>Error stopping TLS: Error getting input &amp; output streams from the original socket</value>
+  </data>
+  <data name="MULTIPLE_SCHEMA">
+    <value>Multiple schema found when reading the subschemaSubentry for {0}</value>
+  </data>
+  <data name="NO_SCHEMA">
+    <value>No schema found when reading the subschemaSubentry for {0}</value>
+  </data>
+  <data name="READ_MULTIPLE">
+    <value>Read response is ambiguous, multiple entries returned</value>
+  </data>
+  <data name="CANNOT_BIND">
+    <value>Cannot bind. Use PoolManager.getBoundConnection()</value>
+  </data>
+  <data name="SSL_PROVIDER_MISSING">
+    <value>Please ensure that SSL Provider is properly installed.</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ExceptionMessages.txt
+++ mono-4.6.2.7+dfsg/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ExceptionMessages.txt
@@ -1,63 +1,63 @@
-TOSTRING={0}: {1} ({2}) {3}
-SERVER_MSG={0}: Server Message: {1}
-MATCHED_DN={0}: Matched DN: {1}
-FAILED_REFERRAL={0}: Failed Referral: {1}
-REFERRAL_ITEM={0}: Referral: {1}
-CONNECTION_ERROR=Unable to connect to server {0}:{1}
-CONNECTION_IMPOSSIBLE=Unable to reconnect to server, application has never called connect()
-CONNECTION_WAIT=Connection lost waiting for results from {0}:{1}
-CONNECTION_FINALIZED=Connection closed by the application finalizing the object
-CONNECTION_CLOSED=Connection closed by the application disconnecting
-CONNECTION_READER=Reader thread terminated
-DUP_ERROR=RfcLdapMessage: Cannot duplicate message built from the input stream
-REFERENCE_ERROR=Error attempting to follow a search continuation reference
-REFERRAL_ERROR=Error attempting to follow a referral
-REFERRAL_LOCAL=LdapSearchResults.{0}(): No entry found & request is not complete
-REFERRAL_SEND=Error sending request to referred server
-REFERENCE_NOFOLLOW=Search result reference received, and referral following is off
-REFERRAL_BIND=LdapBind.bind() function returned null
-REFERRAL_BIND_MATCH=Could not match LdapBind.bind() connection with Server Referral URL list
-NO_DUP_REQUEST=Cannot duplicate message to follow referral for {0} request, not allowed
-SERVER_CONNECT_ERROR=Error connecting to server {0} while attempting to follow a referral
-NO_SUP_PROPERTY=Requested property is not supported.
-ENTRY_PARAM_ERROR=Invalid Entry parameter
-DN_PARAM_ERROR=Invalid DN parameter
-RDN_PARAM_ERROR=Invalid DN or RDN parameter
-OP_PARAM_ERROR=Invalid extended operation parameter, no OID specified
-PARAM_ERROR=Invalid parameter
-DECODING_ERROR=Error Decoding responseValue
-ENCODING_ERROR=Encoding Error
-IO_EXCEPTION=I/O Exception on host {0}, port {1}
-INVALID_ESCAPE=Invalid value in escape sequence \"{0}\"
-SHORT_ESCAPE=Incomplete escape sequence
-UNEXPECTED_END=Unexpected end of filter
-MISSING_LEFT_PAREN=Unmatched parentheses, left parenthesis missing
-NO_OPTION=Semicolon present, but no option specified
-MISSING_RIGHT_PAREN=Unmatched parentheses, right parenthesis missing
-EXPECTING_RIGHT_PAREN=Expecting right parenthesis, found \"{0}\"
-EXPECTING_LEFT_PAREN=Expecting left parenthesis, found \"{0}\"
-NO_ATTRIBUTE_NAME=Missing attribute description
-NO_DN_NOR_MATCHING_RULE=DN and matching rule not specified
-NO_MATCHING_RULE=Missing matching rule
-INVALID_FILTER_COMPARISON=Invalid comparison operator
-INVALID_CHAR_IN_FILTER=The invalid character \"{0}\" needs to be escaped as \"{1}\"
-INVALID_ESC_IN_DESCR=Escape sequence not allowed in attribute description
-INVALID_CHAR_IN_DESCR=Invalid character \"{0}\" in attribute description
-NOT_AN_ATTRIBUTE=Schema element is not an LdapAttributeSchema object
-UNEQUAL_LENGTHS=Length of attribute Name array does not equal length of Flags array
-IMPROPER_REFERRAL=Referral not supported for command {0}
-NOT_IMPLEMENTED=Method LdapConnection.startTLS not implemented
-NO_MEMORY=All results could not be stored in memory, sort failed
-SERVER_SHUTDOWN_REQ=Received unsolicited notification from server {0}:{1} to shutdown
-INVALID_ADDRESS=Invalid syntax for address with port; {0}
-UNKNOWN_RESULT=Unknown Ldap result code {0}
-OUTSTANDING_OPERATIONS=Cannot start or stop TLS because outstanding Ldap operations exist on this connection
-WRONG_FACTORY=StartTLS cannot use the set socket factory because it does not implement LdapTLSSocketFactory
-NO_TLS_FACTORY=StartTLS failed because no LdapTLSSocketFactory has been set for this Connection
-NO_STARTTLS=An attempt to stopTLS on a connection where startTLS had not been called
-STOPTLS_ERROR=Error stopping TLS: Error getting input & output streams from the original socket
-MULTIPLE_SCHEMA=Multiple schema found when reading the subschemaSubentry for {0}
-NO_SCHEMA=No schema found when reading the subschemaSubentry for {0}
-READ_MULTIPLE=Read response is ambiguous, multiple entries returned
-CANNOT_BIND=Cannot bind. Use PoolManager.getBoundConnection()
-SSL_PROVIDER_MISSING=Please ensure that SSL Provider is properly installed.
+TOSTRING={0}: {1} ({2}) {3}
+SERVER_MSG={0}: Server Message: {1}
+MATCHED_DN={0}: Matched DN: {1}
+FAILED_REFERRAL={0}: Failed Referral: {1}
+REFERRAL_ITEM={0}: Referral: {1}
+CONNECTION_ERROR=Unable to connect to server {0}:{1}
+CONNECTION_IMPOSSIBLE=Unable to reconnect to server, application has never called connect()
+CONNECTION_WAIT=Connection lost waiting for results from {0}:{1}
+CONNECTION_FINALIZED=Connection closed by the application finalizing the object
+CONNECTION_CLOSED=Connection closed by the application disconnecting
+CONNECTION_READER=Reader thread terminated
+DUP_ERROR=RfcLdapMessage: Cannot duplicate message built from the input stream
+REFERENCE_ERROR=Error attempting to follow a search continuation reference
+REFERRAL_ERROR=Error attempting to follow a referral
+REFERRAL_LOCAL=LdapSearchResults.{0}(): No entry found & request is not complete
+REFERRAL_SEND=Error sending request to referred server
+REFERENCE_NOFOLLOW=Search result reference received, and referral following is off
+REFERRAL_BIND=LdapBind.bind() function returned null
+REFERRAL_BIND_MATCH=Could not match LdapBind.bind() connection with Server Referral URL list
+NO_DUP_REQUEST=Cannot duplicate message to follow referral for {0} request, not allowed
+SERVER_CONNECT_ERROR=Error connecting to server {0} while attempting to follow a referral
+NO_SUP_PROPERTY=Requested property is not supported.
+ENTRY_PARAM_ERROR=Invalid Entry parameter
+DN_PARAM_ERROR=Invalid DN parameter
+RDN_PARAM_ERROR=Invalid DN or RDN parameter
+OP_PARAM_ERROR=Invalid extended operation parameter, no OID specified
+PARAM_ERROR=Invalid parameter
+DECODING_ERROR=Error Decoding responseValue
+ENCODING_ERROR=Encoding Error
+IO_EXCEPTION=I/O Exception on host {0}, port {1}
+INVALID_ESCAPE=Invalid value in escape sequence \"{0}\"
+SHORT_ESCAPE=Incomplete escape sequence
+UNEXPECTED_END=Unexpected end of filter
+MISSING_LEFT_PAREN=Unmatched parentheses, left parenthesis missing
+NO_OPTION=Semicolon present, but no option specified
+MISSING_RIGHT_PAREN=Unmatched parentheses, right parenthesis missing
+EXPECTING_RIGHT_PAREN=Expecting right parenthesis, found \"{0}\"
+EXPECTING_LEFT_PAREN=Expecting left parenthesis, found \"{0}\"
+NO_ATTRIBUTE_NAME=Missing attribute description
+NO_DN_NOR_MATCHING_RULE=DN and matching rule not specified
+NO_MATCHING_RULE=Missing matching rule
+INVALID_FILTER_COMPARISON=Invalid comparison operator
+INVALID_CHAR_IN_FILTER=The invalid character \"{0}\" needs to be escaped as \"{1}\"
+INVALID_ESC_IN_DESCR=Escape sequence not allowed in attribute description
+INVALID_CHAR_IN_DESCR=Invalid character \"{0}\" in attribute description
+NOT_AN_ATTRIBUTE=Schema element is not an LdapAttributeSchema object
+UNEQUAL_LENGTHS=Length of attribute Name array does not equal length of Flags array
+IMPROPER_REFERRAL=Referral not supported for command {0}
+NOT_IMPLEMENTED=Method LdapConnection.startTLS not implemented
+NO_MEMORY=All results could not be stored in memory, sort failed
+SERVER_SHUTDOWN_REQ=Received unsolicited notification from server {0}:{1} to shutdown
+INVALID_ADDRESS=Invalid syntax for address with port; {0}
+UNKNOWN_RESULT=Unknown Ldap result code {0}
+OUTSTANDING_OPERATIONS=Cannot start or stop TLS because outstanding Ldap operations exist on this connection
+WRONG_FACTORY=StartTLS cannot use the set socket factory because it does not implement LdapTLSSocketFactory
+NO_TLS_FACTORY=StartTLS failed because no LdapTLSSocketFactory has been set for this Connection
+NO_STARTTLS=An attempt to stopTLS on a connection where startTLS had not been called
+STOPTLS_ERROR=Error stopping TLS: Error getting input & output streams from the original socket
+MULTIPLE_SCHEMA=Multiple schema found when reading the subschemaSubentry for {0}
+NO_SCHEMA=No schema found when reading the subschemaSubentry for {0}
+READ_MULTIPLE=Read response is ambiguous, multiple entries returned
+CANNOT_BIND=Cannot bind. Use PoolManager.getBoundConnection()
+SSL_PROVIDER_MISSING=Please ensure that SSL Provider is properly installed.
--- mono-4.6.2.7+dfsg.orig/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ResultCodeMessages.resx
+++ mono-4.6.2.7+dfsg/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ResultCodeMessages.resx
@@ -1,283 +1,283 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 1.3
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">1.3</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1">this is my long string</data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        [base64 mime encoded serialized .NET Framework object]
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        [base64 mime encoded string representing a byte array form of the .NET Framework object]
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used forserialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>1.3</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="0">
-    <value>Success</value>
-  </data>
-  <data name="1">
-    <value>Operations Error</value>
-  </data>
-  <data name="2">
-    <value>Protocol Error</value>
-  </data>
-  <data name="3">
-    <value>Timelimit Exceeded</value>
-  </data>
-  <data name="4">
-    <value>Sizelimit Exceeded</value>
-  </data>
-  <data name="5">
-    <value>Compare False</value>
-  </data>
-  <data name="6">
-    <value>Compare True</value>
-  </data>
-  <data name="7">
-    <value>Authentication Method Not Supported</value>
-  </data>
-  <data name="8">
-    <value>Strong Authentication Required</value>
-  </data>
-  <data name="9">
-    <value>Partial Results</value>
-  </data>
-  <data name="10">
-    <value>Referral</value>
-  </data>
-  <data name="11">
-    <value>Administrative Limit Exceeded</value>
-  </data>
-  <data name="12">
-    <value>Unavailable Critical Extension</value>
-  </data>
-  <data name="13">
-    <value>Confidentiality Required</value>
-  </data>
-  <data name="14">
-    <value>SASL Bind In Progress</value>
-  </data>
-  <data name="16">
-    <value>No Such Attribute</value>
-  </data>
-  <data name="17">
-    <value>Undefined Attribute Type</value>
-  </data>
-  <data name="18">
-    <value>Inappropriate Matching</value>
-  </data>
-  <data name="19">
-    <value>Constraint Violation</value>
-  </data>
-  <data name="20">
-    <value>Attribute Or Value Exists</value>
-  </data>
-  <data name="21">
-    <value>Invalid Attribute Syntax</value>
-  </data>
-  <data name="32">
-    <value>No Such Object</value>
-  </data>
-  <data name="33">
-    <value>Alias Problem</value>
-  </data>
-  <data name="34">
-    <value>Invalid DN Syntax</value>
-  </data>
-  <data name="35">
-    <value>Is Leaf</value>
-  </data>
-  <data name="36">
-    <value>Alias Dereferencing Problem</value>
-  </data>
-  <data name="48">
-    <value>Inappropriate Authentication</value>
-  </data>
-  <data name="49">
-    <value>Invalid Credentials</value>
-  </data>
-  <data name="50">
-    <value>Insufficient Access Rights</value>
-  </data>
-  <data name="51">
-    <value>Busy</value>
-  </data>
-  <data name="52">
-    <value>Unavailable</value>
-  </data>
-  <data name="53">
-    <value>Unwilling To Perform</value>
-  </data>
-  <data name="54">
-    <value>Loop Detect</value>
-  </data>
-  <data name="64">
-    <value>Naming Violation</value>
-  </data>
-  <data name="65">
-    <value>Object Class Violation</value>
-  </data>
-  <data name="66">
-    <value>Not Allowed On Non-leaf</value>
-  </data>
-  <data name="67">
-    <value>Not Allowed On RDN</value>
-  </data>
-  <data name="68">
-    <value>Entry Already Exists</value>
-  </data>
-  <data name="69">
-    <value>Object Class Modifications Prohibited</value>
-  </data>
-  <data name="71">
-    <value>Affects Multiple DSAs</value>
-  </data>
-  <data name="80">
-    <value>Other</value>
-  </data>
-  <data name="81">
-    <value>Server Down</value>
-  </data>
-  <data name="82">
-    <value>Local Error</value>
-  </data>
-  <data name="83">
-    <value>Encoding Error</value>
-  </data>
-  <data name="84">
-    <value>Decoding Error</value>
-  </data>
-  <data name="85">
-    <value>Ldap Timeout</value>
-  </data>
-  <data name="86">
-    <value>Authentication Unknown</value>
-  </data>
-  <data name="87">
-    <value>Filter Error</value>
-  </data>
-  <data name="88">
-    <value>User Cancelled</value>
-  </data>
-  <data name="89">
-    <value>Parameter Error</value>
-  </data>
-  <data name="90">
-    <value>No Memory</value>
-  </data>
-  <data name="91">
-    <value>Connect Error</value>
-  </data>
-  <data name="92">
-    <value>Ldap Not Supported</value>
-  </data>
-  <data name="93">
-    <value>Control Not Found</value>
-  </data>
-  <data name="94">
-    <value>No Results Returned</value>
-  </data>
-  <data name="95">
-    <value>More Results To Return</value>
-  </data>
-  <data name="96">
-    <value>Client Loop</value>
-  </data>
-  <data name="97">
-    <value>Referral Limit Exceeded</value>
-  </data>
-  <data name="112">
-    <value>TLS not supported</value>
-  </data>
-  <data name="113">
-    <value>SSL handshake failed</value>
-  </data>
-  <data name="114">
-    <value>SSL Provider not found</value>
-  </data>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 1.3
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">1.3</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1">this is my long string</data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        [base64 mime encoded serialized .NET Framework object]
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        [base64 mime encoded string representing a byte array form of the .NET Framework object]
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used forserialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>1.3</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="0">
+    <value>Success</value>
+  </data>
+  <data name="1">
+    <value>Operations Error</value>
+  </data>
+  <data name="2">
+    <value>Protocol Error</value>
+  </data>
+  <data name="3">
+    <value>Timelimit Exceeded</value>
+  </data>
+  <data name="4">
+    <value>Sizelimit Exceeded</value>
+  </data>
+  <data name="5">
+    <value>Compare False</value>
+  </data>
+  <data name="6">
+    <value>Compare True</value>
+  </data>
+  <data name="7">
+    <value>Authentication Method Not Supported</value>
+  </data>
+  <data name="8">
+    <value>Strong Authentication Required</value>
+  </data>
+  <data name="9">
+    <value>Partial Results</value>
+  </data>
+  <data name="10">
+    <value>Referral</value>
+  </data>
+  <data name="11">
+    <value>Administrative Limit Exceeded</value>
+  </data>
+  <data name="12">
+    <value>Unavailable Critical Extension</value>
+  </data>
+  <data name="13">
+    <value>Confidentiality Required</value>
+  </data>
+  <data name="14">
+    <value>SASL Bind In Progress</value>
+  </data>
+  <data name="16">
+    <value>No Such Attribute</value>
+  </data>
+  <data name="17">
+    <value>Undefined Attribute Type</value>
+  </data>
+  <data name="18">
+    <value>Inappropriate Matching</value>
+  </data>
+  <data name="19">
+    <value>Constraint Violation</value>
+  </data>
+  <data name="20">
+    <value>Attribute Or Value Exists</value>
+  </data>
+  <data name="21">
+    <value>Invalid Attribute Syntax</value>
+  </data>
+  <data name="32">
+    <value>No Such Object</value>
+  </data>
+  <data name="33">
+    <value>Alias Problem</value>
+  </data>
+  <data name="34">
+    <value>Invalid DN Syntax</value>
+  </data>
+  <data name="35">
+    <value>Is Leaf</value>
+  </data>
+  <data name="36">
+    <value>Alias Dereferencing Problem</value>
+  </data>
+  <data name="48">
+    <value>Inappropriate Authentication</value>
+  </data>
+  <data name="49">
+    <value>Invalid Credentials</value>
+  </data>
+  <data name="50">
+    <value>Insufficient Access Rights</value>
+  </data>
+  <data name="51">
+    <value>Busy</value>
+  </data>
+  <data name="52">
+    <value>Unavailable</value>
+  </data>
+  <data name="53">
+    <value>Unwilling To Perform</value>
+  </data>
+  <data name="54">
+    <value>Loop Detect</value>
+  </data>
+  <data name="64">
+    <value>Naming Violation</value>
+  </data>
+  <data name="65">
+    <value>Object Class Violation</value>
+  </data>
+  <data name="66">
+    <value>Not Allowed On Non-leaf</value>
+  </data>
+  <data name="67">
+    <value>Not Allowed On RDN</value>
+  </data>
+  <data name="68">
+    <value>Entry Already Exists</value>
+  </data>
+  <data name="69">
+    <value>Object Class Modifications Prohibited</value>
+  </data>
+  <data name="71">
+    <value>Affects Multiple DSAs</value>
+  </data>
+  <data name="80">
+    <value>Other</value>
+  </data>
+  <data name="81">
+    <value>Server Down</value>
+  </data>
+  <data name="82">
+    <value>Local Error</value>
+  </data>
+  <data name="83">
+    <value>Encoding Error</value>
+  </data>
+  <data name="84">
+    <value>Decoding Error</value>
+  </data>
+  <data name="85">
+    <value>Ldap Timeout</value>
+  </data>
+  <data name="86">
+    <value>Authentication Unknown</value>
+  </data>
+  <data name="87">
+    <value>Filter Error</value>
+  </data>
+  <data name="88">
+    <value>User Cancelled</value>
+  </data>
+  <data name="89">
+    <value>Parameter Error</value>
+  </data>
+  <data name="90">
+    <value>No Memory</value>
+  </data>
+  <data name="91">
+    <value>Connect Error</value>
+  </data>
+  <data name="92">
+    <value>Ldap Not Supported</value>
+  </data>
+  <data name="93">
+    <value>Control Not Found</value>
+  </data>
+  <data name="94">
+    <value>No Results Returned</value>
+  </data>
+  <data name="95">
+    <value>More Results To Return</value>
+  </data>
+  <data name="96">
+    <value>Client Loop</value>
+  </data>
+  <data name="97">
+    <value>Referral Limit Exceeded</value>
+  </data>
+  <data name="112">
+    <value>TLS not supported</value>
+  </data>
+  <data name="113">
+    <value>SSL handshake failed</value>
+  </data>
+  <data name="114">
+    <value>SSL Provider not found</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap/AuthenticationTypes.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap/AuthenticationTypes.cs
@@ -1,6 +1,6 @@
-using System;
-
-namespace Novell.Directory.Ldap
+using System;
+
+namespace Novell.Directory.Ldap
 {
 	public enum AuthenticationTypes
 	{
@@ -16,4 +16,4 @@ namespace Novell.Directory.Ldap
 	    ServerBind = 512,
 	    Signing = 64
 	}
-}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap/MessageVector.cs
+++ mono-4.6.2.7+dfsg/mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap/MessageVector.cs
@@ -103,105 +103,105 @@ namespace Novell.Directory.Ldap
 			}
 		}
 
-		#region ArrayList members
-		public object[] ToArray()
-		{
-			return _innerList.ToArray();
-		}
-		#endregion
-
-		#region IList Members
-
-		public int Add(object value)
-		{
-			return _innerList.Add(value);
-		}
-
-		public void Clear()
-		{
-			_innerList.Clear();
-		}
-
-		public bool Contains(object value)
-		{
-			return _innerList.Contains(value);
-		}
-
-		public int IndexOf(object value)
-		{
-			return _innerList.IndexOf(value);
-		}
-
-		public void Insert(int index, object value)
-		{
-			_innerList.Insert(index, value);
-		}
-
-		public bool IsFixedSize
-		{
-			get { return _innerList.IsFixedSize; }
-		}
-
-		public bool IsReadOnly
-		{
-			get { return _innerList.IsReadOnly; }
-		}
-
-		public void Remove(object value)
-		{
-			_innerList.Remove(value);
-		}
-
-		public void RemoveAt(int index)
-		{
-			_innerList.RemoveAt(index);
-		}
-
-		public object this[int index]
-		{
-			get
-			{
-				return _innerList[index];
-			}
-			set
-			{
-				_innerList[index] = value;
-			}
-		}
-
-		#endregion
-
-		#region ICollection Members
-
-		public void CopyTo(Array array, int index)
-		{
-			_innerList.CopyTo(array, index);
-		}
-
-		public int Count
-		{
-			get { return _innerList.Count; }
-		}
-
-		public bool IsSynchronized
-		{
-			get { return _innerList.IsSynchronized; }
-		}
-
-		public object SyncRoot
-		{
-			get { return _innerList.SyncRoot; }
-		}
-
-		#endregion
-
-		#region IEnumerable Members
-
-		public System.Collections.IEnumerator GetEnumerator()
-		{
-			return _innerList.GetEnumerator();
-		}
-
+		#region ArrayList members
+		public object[] ToArray()
+		{
+			return _innerList.ToArray();
+		}
+		#endregion
+
+		#region IList Members
+
+		public int Add(object value)
+		{
+			return _innerList.Add(value);
+		}
+
+		public void Clear()
+		{
+			_innerList.Clear();
+		}
+
+		public bool Contains(object value)
+		{
+			return _innerList.Contains(value);
+		}
+
+		public int IndexOf(object value)
+		{
+			return _innerList.IndexOf(value);
+		}
+
+		public void Insert(int index, object value)
+		{
+			_innerList.Insert(index, value);
+		}
+
+		public bool IsFixedSize
+		{
+			get { return _innerList.IsFixedSize; }
+		}
+
+		public bool IsReadOnly
+		{
+			get { return _innerList.IsReadOnly; }
+		}
+
+		public void Remove(object value)
+		{
+			_innerList.Remove(value);
+		}
+
+		public void RemoveAt(int index)
+		{
+			_innerList.RemoveAt(index);
+		}
+
+		public object this[int index]
+		{
+			get
+			{
+				return _innerList[index];
+			}
+			set
+			{
+				_innerList[index] = value;
+			}
+		}
+
+		#endregion
+
+		#region ICollection Members
+
+		public void CopyTo(Array array, int index)
+		{
+			_innerList.CopyTo(array, index);
+		}
+
+		public int Count
+		{
+			get { return _innerList.Count; }
+		}
+
+		public bool IsSynchronized
+		{
+			get { return _innerList.IsSynchronized; }
+		}
+
+		public object SyncRoot
+		{
+			get { return _innerList.SyncRoot; }
+		}
+
+		#endregion
+
+		#region IEnumerable Members
+
+		public System.Collections.IEnumerator GetEnumerator()
+		{
+			return _innerList.GetEnumerator();
+		}
+
 		#endregion
 	}
 }
--- mono-4.6.2.7+dfsg.orig/mcs/class/PEAPI/README.txt
+++ mono-4.6.2.7+dfsg/mcs/class/PEAPI/README.txt
@@ -1,34 +1,34 @@
-PEAPI
------
-
-This is a preliminary version of our PE writer component.  It is a managed 
-component which presents on the client side an API and constructs program 
-executable files.  
-
-We have tested this component as an alternative backend for Gardens Point 
-Component Pascal .NET.  Our previous versions of gpcp produced textual CIL and
-invoked ilasm.  The new backend can create a program executable file in almost
-exactly the same length of time as it takes to write the equivalent CIL text 
-file.  
-
-PEAPI is written in C# and is released as open source under a FreeBSD-like 
-licence.  Included in this release is pdf documentation and both html and 
-chm documentation.  The main documentation is written as if it was a new 
-Appendix to John Gough's book Compiling for the .NET Common Language Runtime, 
-Prentice-Hall 2002.
-
-The current release implements most of the facilities of the API however, 
-some final features not required for component pascal have yet to be added.  
-We expect to update the component incrementally as additional features are 
-added.  Currently the component does not produce debugger information (pdb 
-files).  We are considering possible ways of doing this or alternatively 
-producing rotor-format debugging information.
-
-The team has a committment to maintain and update the component into the 
-foreseeable future, as several other projects here depend on it.  Users are 
-encouraged to send feedback on missing features, bug reports etc. to assist 
-in this quest.
-
-Update (18th Apr 2005)
-
-Some portions of the code have been taken from PERWAPI (http://www.plas.fit.qut.edu.au/perwapi/Default.aspx), which extends PEAPI. It is developed by Diane Corney.
+PEAPI
+-----
+
+This is a preliminary version of our PE writer component.  It is a managed 
+component which presents on the client side an API and constructs program 
+executable files.  
+
+We have tested this component as an alternative backend for Gardens Point 
+Component Pascal .NET.  Our previous versions of gpcp produced textual CIL and
+invoked ilasm.  The new backend can create a program executable file in almost
+exactly the same length of time as it takes to write the equivalent CIL text 
+file.  
+
+PEAPI is written in C# and is released as open source under a FreeBSD-like 
+licence.  Included in this release is pdf documentation and both html and 
+chm documentation.  The main documentation is written as if it was a new 
+Appendix to John Gough's book Compiling for the .NET Common Language Runtime, 
+Prentice-Hall 2002.
+
+The current release implements most of the facilities of the API however, 
+some final features not required for component pascal have yet to be added.  
+We expect to update the component incrementally as additional features are 
+added.  Currently the component does not produce debugger information (pdb 
+files).  We are considering possible ways of doing this or alternatively 
+producing rotor-format debugging information.
+
+The team has a committment to maintain and update the component into the 
+foreseeable future, as several other projects here depend on it.  Users are 
+encouraged to send feedback on missing features, bug reports etc. to assist 
+in this quest.
+
+Update (18th Apr 2005)
+
+Some portions of the code have been taken from PERWAPI (http://www.plas.fit.qut.edu.au/perwapi/Default.aspx), which extends PEAPI. It is developed by Diane Corney.
--- mono-4.6.2.7+dfsg.orig/mcs/class/RabbitMQ.Client/src/client/exceptions/PossibleAuthenticationFailureException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/RabbitMQ.Client/src/client/exceptions/PossibleAuthenticationFailureException.cs
@@ -1,70 +1,70 @@
-﻿// This source code is dual-licensed under the Apache License, version
-// 2.0, and the Mozilla Public License, version 1.1.
-//
-// The APL v2.0:
-//
-//---------------------------------------------------------------------------
-//   Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial
-//   Technologies LLC., and Rabbit Technologies Ltd.
-//
-//   Licensed under the Apache License, Version 2.0 (the "License");
-//   you may not use this file except in compliance with the License.
-//   You may obtain a copy of the License at
-//
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//   Unless required by applicable law or agreed to in writing, software
-//   distributed under the License is distributed on an "AS IS" BASIS,
-//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//   See the License for the specific language governing permissions and
-//   limitations under the License.
-//---------------------------------------------------------------------------
-//
-// The MPL v1.1:
-//
-//---------------------------------------------------------------------------
-//   The contents of this file are subject to the Mozilla Public License
-//   Version 1.1 (the "License"); you may not use this file except in
-//   compliance with the License. You may obtain a copy of the License at
-//   http://www.rabbitmq.com/mpl.html
-//
-//   Software distributed under the License is distributed on an "AS IS"
-//   basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-//   License for the specific language governing rights and limitations
-//   under the License.
-//
-//   The Original Code is The RabbitMQ .NET Client.
-//
-//   The Initial Developers of the Original Code are LShift Ltd,
-//   Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd.
-//
-//   Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd,
-//   Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd
-//   are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial
-//   Technologies LLC, and Rabbit Technologies Ltd.
-//
-//   Portions created by LShift Ltd are Copyright (C) 2007-2010 LShift
-//   Ltd. Portions created by Cohesive Financial Technologies LLC are
-//   Copyright (C) 2007-2010 Cohesive Financial Technologies
-//   LLC. Portions created by Rabbit Technologies Ltd are Copyright
-//   (C) 2007-2010 Rabbit Technologies Ltd.
-//
-//   All Rights Reserved.
-//
-//   Contributor(s): ______________________________________.
-//
-//---------------------------------------------------------------------------
-using System;
-
-namespace RabbitMQ.Client.Exceptions
-{
-    /// <summary> Thrown when the likely cause is  an 
-    /// authentication failure. </summary>
-    public class PossibleAuthenticationFailureException : Exception
-    {
-        public PossibleAuthenticationFailureException(String msg, Exception inner) 
-            : base(msg, inner)
-        {
-        }
-    }
-}
+﻿// This source code is dual-licensed under the Apache License, version
+// 2.0, and the Mozilla Public License, version 1.1.
+//
+// The APL v2.0:
+//
+//---------------------------------------------------------------------------
+//   Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial
+//   Technologies LLC., and Rabbit Technologies Ltd.
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+//---------------------------------------------------------------------------
+//
+// The MPL v1.1:
+//
+//---------------------------------------------------------------------------
+//   The contents of this file are subject to the Mozilla Public License
+//   Version 1.1 (the "License"); you may not use this file except in
+//   compliance with the License. You may obtain a copy of the License at
+//   http://www.rabbitmq.com/mpl.html
+//
+//   Software distributed under the License is distributed on an "AS IS"
+//   basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+//   License for the specific language governing rights and limitations
+//   under the License.
+//
+//   The Original Code is The RabbitMQ .NET Client.
+//
+//   The Initial Developers of the Original Code are LShift Ltd,
+//   Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd.
+//
+//   Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd,
+//   Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd
+//   are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial
+//   Technologies LLC, and Rabbit Technologies Ltd.
+//
+//   Portions created by LShift Ltd are Copyright (C) 2007-2010 LShift
+//   Ltd. Portions created by Cohesive Financial Technologies LLC are
+//   Copyright (C) 2007-2010 Cohesive Financial Technologies
+//   LLC. Portions created by Rabbit Technologies Ltd are Copyright
+//   (C) 2007-2010 Rabbit Technologies Ltd.
+//
+//   All Rights Reserved.
+//
+//   Contributor(s): ______________________________________.
+//
+//---------------------------------------------------------------------------
+using System;
+
+namespace RabbitMQ.Client.Exceptions
+{
+    /// <summary> Thrown when the likely cause is  an 
+    /// authentication failure. </summary>
+    public class PossibleAuthenticationFailureException : Exception
+    {
+        public PossibleAuthenticationFailureException(String msg, Exception inner) 
+            : base(msg, inner)
+        {
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Configuration.Install/Documentation/System.Configuration.Install.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Configuration.Install/Documentation/System.Configuration.Install.xml
@@ -1,415 +1,415 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Configuration.Install">
-    <class name="Installer" namespace="System.Configuration.Install">
-        <constructor name="Installer" argnames="" />
-        <property name="Context" propertytype="System.Configuration.Install.InstallContext" />
-        <property name="HelpText" propertytype="System.String" />
-        <property name="Installers" propertytype="System.Configuration.Install.InstallerCollection" />
-        <property name="Parent" propertytype="System.Configuration.Install.Installer" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" returntype="System.Void" />
-        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Committed" />
-        <event name="AfterInstall" />
-        <event name="AfterRollback" />
-        <event name="AfterUninstall" />
-        <event name="Committing" />
-        <event name="BeforeInstall" />
-        <event name="BeforeRollback" />
-        <event name="BeforeUninstall" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="AssemblyInstaller" namespace="System.Configuration.Install">
-        <constructor name="AssemblyInstaller" argnames="" />
-        <constructor name="AssemblyInstaller(System.String, System.String[])" argnames="filename, commandLine" />
-        <constructor name="AssemblyInstaller(System.Reflection.Assembly, System.String[])" argnames="assembly, commandLine" />
-        <property name="Assembly" propertytype="System.Reflection.Assembly" />
-        <property name="CommandLine" propertytype="System.String[]" />
-        <property name="HelpText" propertytype="System.String" />
-        <property name="Path" propertytype="System.String" />
-        <property name="UseNewContext" propertytype="System.Boolean" />
-        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
-        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
-        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Install(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="CheckIfInstallable(System.String)" argnames="assemblyName" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Committed" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Committing" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ComponentInstaller" namespace="System.Configuration.Install">
-        <constructor name="ComponentInstaller" argnames="" />
-        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
-        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
-        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
-        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="IsEquivalentInstaller(System.Configuration.Install.ComponentInstaller)" argnames="otherInstaller" returntype="System.Boolean" />
-        <method name="CopyFromComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Committed" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Committing" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="InstallContext" namespace="System.Configuration.Install">
-        <constructor name="InstallContext" argnames="" />
-        <constructor name="InstallContext(System.String, System.String[])" argnames="logFilePath, commandLine" />
-        <property name="Parameters" propertytype="System.Collections.Specialized.StringDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IsParameterTrue(System.String)" argnames="paramName" returntype="System.Boolean" />
-        <method name="LogMessage(System.String)" argnames="message" returntype="System.Void" />
-        <method name="ParseCommandLine(System.String[])" argnames="args" returntype="System.Collections.Specialized.StringDictionary" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstallerCollection" namespace="System.Configuration.Install">
-        <property name="Item" propertytype="System.Configuration.Install.Installer" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Configuration.Install.Installer)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.Configuration.Install.InstallerCollection)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Configuration.Install.Installer[])" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.Configuration.Install.Installer)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.Configuration.Install.Installer[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.Configuration.Install.Installer)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Configuration.Install.Installer)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.Configuration.Install.Installer)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstallEventArgs" namespace="System.Configuration.Install">
-        <constructor name="InstallEventArgs" argnames="" />
-        <constructor name="InstallEventArgs(System.Collections.IDictionary)" argnames="savedState" />
-        <property name="SavedState" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstallException" namespace="System.Configuration.Install">
-        <constructor name="InstallException" argnames="" />
-        <constructor name="InstallException(System.String)" argnames="message" />
-        <constructor name="InstallException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="InstallException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ManagedInstallerClass" namespace="System.Configuration.Install">
-        <constructor name="ManagedInstallerClass" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InstallHelper(System.String[])" argnames="args" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TransactedInstaller" namespace="System.Configuration.Install">
-        <constructor name="TransactedInstaller" argnames="" />
-        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
-        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
-        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
-        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Install(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Committed" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Committing" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <interface name="IManagedInstaller" namespace="System.Configuration.Install">
-        <method name="ManagedInstall(System.String, System.Int32)" argnames="commandLine, hInstall" returntype="System.Int32" />
-    </interface>
-    <delegate name="InstallEventHandler" namespace="System.Configuration.Install">
-        <constructor name="InstallEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Configuration.Install.InstallEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Configuration.Install.InstallEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="UninstallAction" namespace="System.Configuration.Install">
-        <field name="Remove" />
-        <field name="NoAction" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="EventLogInstaller" namespace="System.Diagnostics">
-        <constructor name="EventLogInstaller" argnames="" />
-        <property name="Log" propertytype="System.String" />
-        <property name="Source" propertytype="System.String" />
-        <property name="UninstallAction" propertytype="System.Configuration.Install.UninstallAction" />
-        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
-        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
-        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
-        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="IsEquivalentInstaller(System.Configuration.Install.ComponentInstaller)" argnames="otherInstaller" returntype="System.Boolean" />
-        <method name="CopyFromComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" returntype="System.Void" />
-        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Committed" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Committing" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PerformanceCounterInstaller" namespace="System.Diagnostics">
-        <constructor name="PerformanceCounterInstaller" argnames="" />
-        <property name="CategoryName" propertytype="System.String" />
-        <property name="CategoryHelp" propertytype="System.String" />
-        <property name="Counters" propertytype="System.Diagnostics.CounterCreationDataCollection" />
-        <property name="UninstallAction" propertytype="System.Configuration.Install.UninstallAction" />
-        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
-        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
-        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
-        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="IsEquivalentInstaller(System.Configuration.Install.ComponentInstaller)" argnames="otherInstaller" inherited="System.Configuration.Install.ComponentInstaller" returntype="System.Boolean" />
-        <method name="CopyFromComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
-        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" returntype="System.Void" />
-        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Committed" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Committing" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
-        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Configuration.Install">
+    <class name="Installer" namespace="System.Configuration.Install">
+        <constructor name="Installer" argnames="" />
+        <property name="Context" propertytype="System.Configuration.Install.InstallContext" />
+        <property name="HelpText" propertytype="System.String" />
+        <property name="Installers" propertytype="System.Configuration.Install.InstallerCollection" />
+        <property name="Parent" propertytype="System.Configuration.Install.Installer" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" returntype="System.Void" />
+        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Committed" />
+        <event name="AfterInstall" />
+        <event name="AfterRollback" />
+        <event name="AfterUninstall" />
+        <event name="Committing" />
+        <event name="BeforeInstall" />
+        <event name="BeforeRollback" />
+        <event name="BeforeUninstall" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="AssemblyInstaller" namespace="System.Configuration.Install">
+        <constructor name="AssemblyInstaller" argnames="" />
+        <constructor name="AssemblyInstaller(System.String, System.String[])" argnames="filename, commandLine" />
+        <constructor name="AssemblyInstaller(System.Reflection.Assembly, System.String[])" argnames="assembly, commandLine" />
+        <property name="Assembly" propertytype="System.Reflection.Assembly" />
+        <property name="CommandLine" propertytype="System.String[]" />
+        <property name="HelpText" propertytype="System.String" />
+        <property name="Path" propertytype="System.String" />
+        <property name="UseNewContext" propertytype="System.Boolean" />
+        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
+        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
+        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Install(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="CheckIfInstallable(System.String)" argnames="assemblyName" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Committed" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Committing" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ComponentInstaller" namespace="System.Configuration.Install">
+        <constructor name="ComponentInstaller" argnames="" />
+        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
+        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
+        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
+        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="IsEquivalentInstaller(System.Configuration.Install.ComponentInstaller)" argnames="otherInstaller" returntype="System.Boolean" />
+        <method name="CopyFromComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Committed" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Committing" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="InstallContext" namespace="System.Configuration.Install">
+        <constructor name="InstallContext" argnames="" />
+        <constructor name="InstallContext(System.String, System.String[])" argnames="logFilePath, commandLine" />
+        <property name="Parameters" propertytype="System.Collections.Specialized.StringDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IsParameterTrue(System.String)" argnames="paramName" returntype="System.Boolean" />
+        <method name="LogMessage(System.String)" argnames="message" returntype="System.Void" />
+        <method name="ParseCommandLine(System.String[])" argnames="args" returntype="System.Collections.Specialized.StringDictionary" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstallerCollection" namespace="System.Configuration.Install">
+        <property name="Item" propertytype="System.Configuration.Install.Installer" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Configuration.Install.Installer)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.Configuration.Install.InstallerCollection)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Configuration.Install.Installer[])" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.Configuration.Install.Installer)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.Configuration.Install.Installer[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.Configuration.Install.Installer)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Configuration.Install.Installer)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.Configuration.Install.Installer)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstallEventArgs" namespace="System.Configuration.Install">
+        <constructor name="InstallEventArgs" argnames="" />
+        <constructor name="InstallEventArgs(System.Collections.IDictionary)" argnames="savedState" />
+        <property name="SavedState" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstallException" namespace="System.Configuration.Install">
+        <constructor name="InstallException" argnames="" />
+        <constructor name="InstallException(System.String)" argnames="message" />
+        <constructor name="InstallException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="InstallException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ManagedInstallerClass" namespace="System.Configuration.Install">
+        <constructor name="ManagedInstallerClass" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InstallHelper(System.String[])" argnames="args" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TransactedInstaller" namespace="System.Configuration.Install">
+        <constructor name="TransactedInstaller" argnames="" />
+        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
+        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
+        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
+        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Install(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Committed" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Committing" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <interface name="IManagedInstaller" namespace="System.Configuration.Install">
+        <method name="ManagedInstall(System.String, System.Int32)" argnames="commandLine, hInstall" returntype="System.Int32" />
+    </interface>
+    <delegate name="InstallEventHandler" namespace="System.Configuration.Install">
+        <constructor name="InstallEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Configuration.Install.InstallEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Configuration.Install.InstallEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="UninstallAction" namespace="System.Configuration.Install">
+        <field name="Remove" />
+        <field name="NoAction" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="EventLogInstaller" namespace="System.Diagnostics">
+        <constructor name="EventLogInstaller" argnames="" />
+        <property name="Log" propertytype="System.String" />
+        <property name="Source" propertytype="System.String" />
+        <property name="UninstallAction" propertytype="System.Configuration.Install.UninstallAction" />
+        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
+        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
+        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
+        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="IsEquivalentInstaller(System.Configuration.Install.ComponentInstaller)" argnames="otherInstaller" returntype="System.Boolean" />
+        <method name="CopyFromComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" returntype="System.Void" />
+        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Committed" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Committing" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PerformanceCounterInstaller" namespace="System.Diagnostics">
+        <constructor name="PerformanceCounterInstaller" argnames="" />
+        <property name="CategoryName" propertytype="System.String" />
+        <property name="CategoryHelp" propertytype="System.String" />
+        <property name="Counters" propertytype="System.Diagnostics.CounterCreationDataCollection" />
+        <property name="UninstallAction" propertytype="System.Configuration.Install.UninstallAction" />
+        <property name="Context" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallContext" />
+        <property name="HelpText" inherited="System.Configuration.Install.Installer" propertytype="System.String" />
+        <property name="Installers" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.InstallerCollection" />
+        <property name="Parent" inherited="System.Configuration.Install.Installer" propertytype="System.Configuration.Install.Installer" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="IsEquivalentInstaller(System.Configuration.Install.ComponentInstaller)" argnames="otherInstaller" inherited="System.Configuration.Install.ComponentInstaller" returntype="System.Boolean" />
+        <method name="CopyFromComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="Uninstall(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="Rollback(System.Collections.IDictionary)" argnames="savedState" returntype="System.Void" />
+        <method name="OnBeforeUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnBeforeInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitting(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterUninstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterRollback(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnAfterInstall(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="OnCommitted(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Install(System.Collections.IDictionary)" argnames="stateSaver" returntype="System.Void" />
+        <method name="Commit(System.Collections.IDictionary)" argnames="savedState" inherited="System.Configuration.Install.Installer" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Committed" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="AfterUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Committing" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeInstall" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeRollback" inherited="System.Configuration.Install.Installer" />
+        <event name="BeforeUninstall" inherited="System.Configuration.Install.Installer" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationPropertyTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Configuration/Test/System.Configuration/ConfigurationPropertyTest.cs
@@ -1,65 +1,65 @@
-//
-// System.Configuration.ConfigurationElementTest.cs - Unit tests
-// for System.Configuration.ConfigurationElement.
-//
-// Author:
-//	Konstantin Triger <kostat@mainsoft.com>
-//
-// Copyright (C) 2006 Mainsoft, Inc (http://www.mainsoft.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Configuration;
-using NUnit.Framework;
-
-namespace MonoTests.System.Configuration {
-	[TestFixture]
-	public class ConfigurationPropertyTest
-	{
-		[Test]
-		[ExpectedException(typeof(ConfigurationErrorsException))]
-		public void CostructorTest () {
-			ConfigurationProperty poker = new ConfigurationProperty("Name", typeof(char), 5);
-		}
-		
-		[Test]
-		public void CostructorTest1 () {
-			ConfigurationProperty poker = new ConfigurationProperty("Name", typeof(String));
-			Assert.IsNotNull (poker.Validator, "A1");
-			Assert.IsNotNull (poker.Converter, "A2");
-		}
-
-		[Test]
-		public void DefaultValueTest () {
-			ConfigurationProperty poker = new ConfigurationProperty("Name", typeof(char));
-			Assert.AreEqual (typeof (char), poker.DefaultValue.GetType(), "A1");
-			
-			ConfigurationProperty poker1 = new ConfigurationProperty("Name", typeof(ConfigurationProperty));
-			Assert.AreEqual (null, poker1.DefaultValue, "A2");
-			
-			ConfigurationProperty poker2 = new ConfigurationProperty("Name", typeof(String));
-			Assert.AreEqual (String.Empty, poker2.DefaultValue, "A1");
-		}
-	}
-}
-
+//
+// System.Configuration.ConfigurationElementTest.cs - Unit tests
+// for System.Configuration.ConfigurationElement.
+//
+// Author:
+//	Konstantin Triger <kostat@mainsoft.com>
+//
+// Copyright (C) 2006 Mainsoft, Inc (http://www.mainsoft.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Configuration;
+using NUnit.Framework;
+
+namespace MonoTests.System.Configuration {
+	[TestFixture]
+	public class ConfigurationPropertyTest
+	{
+		[Test]
+		[ExpectedException(typeof(ConfigurationErrorsException))]
+		public void CostructorTest () {
+			ConfigurationProperty poker = new ConfigurationProperty("Name", typeof(char), 5);
+		}
+		
+		[Test]
+		public void CostructorTest1 () {
+			ConfigurationProperty poker = new ConfigurationProperty("Name", typeof(String));
+			Assert.IsNotNull (poker.Validator, "A1");
+			Assert.IsNotNull (poker.Converter, "A2");
+		}
+
+		[Test]
+		public void DefaultValueTest () {
+			ConfigurationProperty poker = new ConfigurationProperty("Name", typeof(char));
+			Assert.AreEqual (typeof (char), poker.DefaultValue.GetType(), "A1");
+			
+			ConfigurationProperty poker1 = new ConfigurationProperty("Name", typeof(ConfigurationProperty));
+			Assert.AreEqual (null, poker1.DefaultValue, "A2");
+			
+			ConfigurationProperty poker2 = new ConfigurationProperty("Name", typeof(String));
+			Assert.AreEqual (String.Empty, poker2.DefaultValue, "A1");
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/Build Northwind parameters.txt	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/Build Northwind parameters.txt	
@@ -1,7 +1,7 @@
-# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
-#/code=..\examples\DbLinq.FbSql.Example\nwind\Northwind.cs  /provider=Firebird   /database="c:\program files\Firebird\Firebird_2_1\examples\nwind\Northwind.FDB"
-/code=..\examples\DbLinq.SQLite.Example\nwind\Northwind.cs /provider=Sqlite     /conn="data source=Northwind.db3"
-/code=..\examples\DbLinq.Ora.Example\nwind\Northwind.cs    /provider=Oracle     /user=Northwind
-/code=..\examples\DbLinq.Pgsql.Example\nwind\Northwind.cs  /provider=PostgreSQL
-#/code=..\examples\DbLinq.Ingres.Example\nwind\Northwind.cs /provider=Ingres     
-/code=..\examples\DbLinq.MySql.Example\nwind\Northwind.cs  /provider=MySQL 
+# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
+#/code=..\examples\DbLinq.FbSql.Example\nwind\Northwind.cs  /provider=Firebird   /database="c:\program files\Firebird\Firebird_2_1\examples\nwind\Northwind.FDB"
+/code=..\examples\DbLinq.SQLite.Example\nwind\Northwind.cs /provider=Sqlite     /conn="data source=Northwind.db3"
+/code=..\examples\DbLinq.Ora.Example\nwind\Northwind.cs    /provider=Oracle     /user=Northwind
+/code=..\examples\DbLinq.Pgsql.Example\nwind\Northwind.cs  /provider=PostgreSQL
+#/code=..\examples\DbLinq.Ingres.Example\nwind\Northwind.cs /provider=Ingres     
+/code=..\examples\DbLinq.MySql.Example\nwind\Northwind.cs  /provider=MySQL 
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdDataContext.cs
@@ -1,57 +1,57 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Firebird
-{
-#if !MONO_STRICT
-    public
-#endif
-    class FirebirdDataContext : DataContext
-    {
-#if FIREBIRDSQL_IS_REFERENCED
-        public FbDataContext(string connStr)
-            : base(new global::FirebirdSql.Data.FirebirdClient.FbConnection(connStr), new FbVendor())
-        {
-        }
-#endif
-        public FirebirdDataContext(IDbConnection conn)
-#if MONO_STRICT
-            : base(conn)
-#else
-            : base(conn, new FirebirdVendor())
-#endif
-        {
-        }
-
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Firebird
+{
+#if !MONO_STRICT
+    public
+#endif
+    class FirebirdDataContext : DataContext
+    {
+#if FIREBIRDSQL_IS_REFERENCED
+        public FbDataContext(string connStr)
+            : base(new global::FirebirdSql.Data.FirebirdClient.FbConnection(connStr), new FbVendor())
+        {
+        }
+#endif
+        public FirebirdDataContext(IDbConnection conn)
+#if MONO_STRICT
+            : base(conn)
+#else
+            : base(conn, new FirebirdVendor())
+#endif
+        {
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdExpressionTranslator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdExpressionTranslator.cs
@@ -1,26 +1,26 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Firebird
-{
-    class FirebirdExpressionTranslator : ExpressionTranslator
-    {
-        public override SelectExpression OuterExpression(SelectExpression e)
-        {
-            // Check for (from f in foo orderby f.Field select f).Count() trees
-            // Firebird doesn't support 'ORDER BY' for 'SELECT COUNT(*)'.
-            if (e.Operands.Select(o => o as SpecialExpression)
-                    .Where(o => o != null)
-                    .Where(s => s.SpecialNodeType == SpecialExpressionType.Count)
-                    .Any())
-            {
-                e.OrderBy.Clear();
-            }
-            return e;
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Firebird
+{
+    class FirebirdExpressionTranslator : ExpressionTranslator
+    {
+        public override SelectExpression OuterExpression(SelectExpression e)
+        {
+            // Check for (from f in foo orderby f.Field select f).Count() trees
+            // Firebird doesn't support 'ORDER BY' for 'SELECT COUNT(*)'.
+            if (e.Operands.Select(o => o as SpecialExpression)
+                    .Where(o => o != null)
+                    .Where(s => s.SpecialNodeType == SpecialExpressionType.Count)
+                    .Any())
+            {
+                e.OrderBy.Clear();
+            }
+            return e;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.Columns.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.Columns.cs
@@ -1,91 +1,91 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Firebird
-{
-    partial class FirebirdSchemaLoader
-    {
-        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
-        {
-            var column = new DataTableColumn();
-            int field = 0;
-            column.TableSchema = rdr.GetAsString(field++);
-            column.TableName = rdr.GetAsString(field++).Trim();
-            column.ColumnName = rdr.GetAsString(field++).Trim();
-            column.Nullable = rdr.GetAsBool(field++);
-            column.SqlType = rdr.GetAsString(field++).Trim();
-            column.Generated = rdr.GetAsBool(field++);
-            //column.Unsigned = column.FullType.Contains("unsigned");
-            column.PrimaryKey = rdr.GetAsBool(field++);
-            column.Length = rdr.GetAsNullableNumeric<long>(field++);
-            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
-            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
-            column.DefaultValue = rdr.GetAsString(field++);
-            FormatFullType(column);
-            return column;
-        }
-
-        private void FormatFullType(DataTableColumn column)
-        {
-            // TODO: Implement.
-        }
-
-        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
-        {
-            const string sql = @"
-select 'Foo' ""TableSchema""
-        , rf.RDB$RELATION_NAME ""TableName""
-        , rf.RDB$FIELD_NAME ""ColumnName""
-        , case when rf.RDB$NULL_FLAG is null then 1 else 0 end ""Nullable""
-        , t.RDB$TYPE_NAME ""Type""
-        , case when f.RDB$COMPUTED_SOURCE is null then 0 else 1 end ""Generated""
-        , case when exists(select *
-            from RDB$RELATION_CONSTRAINTS rc
-                inner join RDB$INDEX_SEGMENTS xs on xs.RDB$INDEX_NAME = rc.RDB$INDEX_NAME
-            where rc.RDB$RELATION_NAME = rf.RDB$RELATION_NAME and xs.RDB$FIELD_NAME = rf.RDB$FIELD_NAME
-                and rc.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') then 1 else 0 end ""PrimaryKey""
-        , f.RDB$FIELD_LENGTH ""Length""
-        , f.RDB$FIELD_PRECISION ""Precision""
-        , f.RDB$FIELD_SCALE ""Scale""
-        , rf.RDB$DEFAULT_VALUE ""DefaultValue""
-    from RDB$RELATION_FIELDS rf
-        inner join RDB$FIELDS f on f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE
-        inner join RDB$TYPES t on t.RDB$TYPE = f.RDB$FIELD_TYPE and t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
-    where rf.RDB$SYSTEM_FLAG = 0
-    order by rf.RDB$RELATION_NAME, rf.RDB$FIELD_POSITION
-";
-
-            return DataCommand.Find<IDataTableColumn>(connectionString, sql, "@db", databaseName, ReadColumn);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Firebird
+{
+    partial class FirebirdSchemaLoader
+    {
+        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
+        {
+            var column = new DataTableColumn();
+            int field = 0;
+            column.TableSchema = rdr.GetAsString(field++);
+            column.TableName = rdr.GetAsString(field++).Trim();
+            column.ColumnName = rdr.GetAsString(field++).Trim();
+            column.Nullable = rdr.GetAsBool(field++);
+            column.SqlType = rdr.GetAsString(field++).Trim();
+            column.Generated = rdr.GetAsBool(field++);
+            //column.Unsigned = column.FullType.Contains("unsigned");
+            column.PrimaryKey = rdr.GetAsBool(field++);
+            column.Length = rdr.GetAsNullableNumeric<long>(field++);
+            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
+            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
+            column.DefaultValue = rdr.GetAsString(field++);
+            FormatFullType(column);
+            return column;
+        }
+
+        private void FormatFullType(DataTableColumn column)
+        {
+            // TODO: Implement.
+        }
+
+        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
+        {
+            const string sql = @"
+select 'Foo' ""TableSchema""
+        , rf.RDB$RELATION_NAME ""TableName""
+        , rf.RDB$FIELD_NAME ""ColumnName""
+        , case when rf.RDB$NULL_FLAG is null then 1 else 0 end ""Nullable""
+        , t.RDB$TYPE_NAME ""Type""
+        , case when f.RDB$COMPUTED_SOURCE is null then 0 else 1 end ""Generated""
+        , case when exists(select *
+            from RDB$RELATION_CONSTRAINTS rc
+                inner join RDB$INDEX_SEGMENTS xs on xs.RDB$INDEX_NAME = rc.RDB$INDEX_NAME
+            where rc.RDB$RELATION_NAME = rf.RDB$RELATION_NAME and xs.RDB$FIELD_NAME = rf.RDB$FIELD_NAME
+                and rc.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') then 1 else 0 end ""PrimaryKey""
+        , f.RDB$FIELD_LENGTH ""Length""
+        , f.RDB$FIELD_PRECISION ""Precision""
+        , f.RDB$FIELD_SCALE ""Scale""
+        , rf.RDB$DEFAULT_VALUE ""DefaultValue""
+    from RDB$RELATION_FIELDS rf
+        inner join RDB$FIELDS f on f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE
+        inner join RDB$TYPES t on t.RDB$TYPE = f.RDB$FIELD_TYPE and t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
+    where rf.RDB$SYSTEM_FLAG = 0
+    order by rf.RDB$RELATION_NAME, rf.RDB$FIELD_POSITION
+";
+
+            return DataCommand.Find<IDataTableColumn>(connectionString, sql, "@db", databaseName, ReadColumn);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.Constraints.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.Constraints.cs
@@ -1,91 +1,91 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-
-namespace DbLinq.Firebird
-{
-    partial class FirebirdSchemaLoader
-    {
-        protected class DataConstraint
-        {
-            public string ConstraintName;
-            public string TableSchema;
-            public string TableName;
-            public string ColumnName;
-            public string ReferencedTableSchema;
-            public string ReferencedTableName;
-            public string ReferencedColumnName;
-
-            public override string ToString()
-            {
-                string detail = ConstraintName == "PRIMARY"
-                                    ? TableName + " PK"
-                                    : ConstraintName;
-                return "KeyColUsage " + detail;
-            }
-        }
-
-        protected virtual DataConstraint ReadConstraint(IDataReader rdr)
-        {
-            DataConstraint constraint = new DataConstraint();
-            int field = 0;
-            constraint.ConstraintName = rdr.GetAsString(field++);
-            constraint.TableSchema = rdr.GetAsString(field++);
-            constraint.TableName = rdr.GetAsString(field++).Trim();
-            constraint.ColumnName = rdr.GetAsString(field++).Trim();
-            constraint.ReferencedTableSchema = rdr.GetAsString(field++);
-            constraint.ReferencedTableName = rdr.GetAsString(field++).Trim();
-            constraint.ReferencedColumnName = rdr.GetAsString(field++).Trim();
-            return constraint;
-        }
-
-        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
-        {
-            // TODO: Only supports constrains where the columns have the same name.
-            string sql = @"
-select tbl.RDB$CONSTRAINT_NAME ""ConstraintName""
-       , 'Foo' ""TableSchema""
-       , tbl.RDB$RELATION_NAME ""TableName""
-       , col.RDB$FIELD_NAME ""ColumnName""
-       , 'Foo'  ""ReferencedTableSchema""
-       , rtbl.RDB$RELATION_NAME ""ReferencedTableName""
-       , rcol.RDB$FIELD_NAME ""ReferencedColumnName""
-    from RDB$RELATION_CONSTRAINTS tbl
-        inner join RDB$INDEX_SEGMENTS col on col.RDB$INDEX_NAME = tbl.RDB$INDEX_NAME
-        inner join RDB$REF_CONSTRAINTS ref on ref.RDB$CONSTRAINT_NAME = tbl.RDB$CONSTRAINT_NAME
-        inner join RDB$RELATION_CONSTRAINTS rtbl on rtbl.RDB$CONSTRAINT_NAME = ref.RDB$CONST_NAME_UQ
-        inner join RDB$INDEX_SEGMENTS rcol on rcol.RDB$INDEX_NAME = rtbl.RDB$INDEX_NAME
-    where tbl.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY' and col.RDB$FIELD_NAME = rcol.RDB$FIELD_NAME
-    order by tbl.RDB$RELATION_NAME
-";
-
-            return DataCommand.Find<DataConstraint>(conn, sql, "@db", db, ReadConstraint);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+
+namespace DbLinq.Firebird
+{
+    partial class FirebirdSchemaLoader
+    {
+        protected class DataConstraint
+        {
+            public string ConstraintName;
+            public string TableSchema;
+            public string TableName;
+            public string ColumnName;
+            public string ReferencedTableSchema;
+            public string ReferencedTableName;
+            public string ReferencedColumnName;
+
+            public override string ToString()
+            {
+                string detail = ConstraintName == "PRIMARY"
+                                    ? TableName + " PK"
+                                    : ConstraintName;
+                return "KeyColUsage " + detail;
+            }
+        }
+
+        protected virtual DataConstraint ReadConstraint(IDataReader rdr)
+        {
+            DataConstraint constraint = new DataConstraint();
+            int field = 0;
+            constraint.ConstraintName = rdr.GetAsString(field++);
+            constraint.TableSchema = rdr.GetAsString(field++);
+            constraint.TableName = rdr.GetAsString(field++).Trim();
+            constraint.ColumnName = rdr.GetAsString(field++).Trim();
+            constraint.ReferencedTableSchema = rdr.GetAsString(field++);
+            constraint.ReferencedTableName = rdr.GetAsString(field++).Trim();
+            constraint.ReferencedColumnName = rdr.GetAsString(field++).Trim();
+            return constraint;
+        }
+
+        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
+        {
+            // TODO: Only supports constrains where the columns have the same name.
+            string sql = @"
+select tbl.RDB$CONSTRAINT_NAME ""ConstraintName""
+       , 'Foo' ""TableSchema""
+       , tbl.RDB$RELATION_NAME ""TableName""
+       , col.RDB$FIELD_NAME ""ColumnName""
+       , 'Foo'  ""ReferencedTableSchema""
+       , rtbl.RDB$RELATION_NAME ""ReferencedTableName""
+       , rcol.RDB$FIELD_NAME ""ReferencedColumnName""
+    from RDB$RELATION_CONSTRAINTS tbl
+        inner join RDB$INDEX_SEGMENTS col on col.RDB$INDEX_NAME = tbl.RDB$INDEX_NAME
+        inner join RDB$REF_CONSTRAINTS ref on ref.RDB$CONSTRAINT_NAME = tbl.RDB$CONSTRAINT_NAME
+        inner join RDB$RELATION_CONSTRAINTS rtbl on rtbl.RDB$CONSTRAINT_NAME = ref.RDB$CONST_NAME_UQ
+        inner join RDB$INDEX_SEGMENTS rcol on rcol.RDB$INDEX_NAME = rtbl.RDB$INDEX_NAME
+    where tbl.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY' and col.RDB$FIELD_NAME = rcol.RDB$FIELD_NAME
+    order by tbl.RDB$RELATION_NAME
+";
+
+            return DataCommand.Find<DataConstraint>(conn, sql, "@db", db, ReadConstraint);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.StoredProcedures.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.StoredProcedures.cs
@@ -1,112 +1,112 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-
-namespace DbLinq.Firebird
-{
-    partial class FirebirdSchemaLoader
-    {
-        public class DataStoredProcedure
-        {
-            public string TableSchema;
-            public string Name;
-            public string Type;
-            public string ParameterName;
-            public bool IsOutputParameter;
-            public string ParameterType;
-            public long? Length;
-            public int? Precision;
-            public int? Scale;
-            public string DefaultValue;
-            public bool BodyContainsSelectStatement;
-
-            public override string ToString()
-            {
-                return "ProcRow " + Name;
-            }
-        }
-
-        DataStoredProcedure ReadProcedure(IDataReader rdr)
-        {
-            DataStoredProcedure procedure = new DataStoredProcedure();
-            int field = 0;
-            procedure.TableSchema = rdr.GetAsString(field++);
-            procedure.Name = rdr.GetAsString(field++).Trim();
-            procedure.Type = rdr.GetAsString(field++);
-            procedure.ParameterName = rdr.GetAsString(field++).Trim();
-            procedure.IsOutputParameter = rdr.GetAsBool(field++);
-            procedure.ParameterType = rdr.GetAsString(field++).Trim();
-            procedure.Length = rdr.GetAsNullableNumeric<long>(field++);
-            procedure.Precision = rdr.GetAsNullableNumeric<int>(field++);
-            procedure.Scale = rdr.GetAsNullableNumeric<int>(field++);
-            procedure.DefaultValue = rdr.GetAsString(field++);
-            procedure.BodyContainsSelectStatement = rdr.GetAsBool(field++);
-            return procedure;
-        }
-
-        public List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
-        {
-            string sql = @"
-select 'Foo' ""TableSchema""
-        , p.RDB$PROCEDURE_NAME ""Name""
-        , 'PROCEDURE' ""Type""
-        , pp.RDB$PARAMETER_NAME ""ParameterName""
-        , pp.RDB$PARAMETER_TYPE ""IsOutputParameter""
-        , t.RDB$TYPE_NAME ""ParameterType""
-        , f.RDB$FIELD_LENGTH ""Length""
-        , f.RDB$FIELD_PRECISION ""Precision""
-        , f.RDB$FIELD_SCALE ""Scale""
-        , pp.RDB$DEFAULT_VALUE ""DefaultValue""
-        , case when p.RDB$PROCEDURE_OUTPUTS is null then 0 else 1 end ""BodyContainsSelectStatement""
-    from RDB$PROCEDURES p
-        inner join RDB$PROCEDURE_PARAMETERS pp on pp.RDB$PROCEDURE_NAME = p.RDB$PROCEDURE_NAME
-        inner join RDB$FIELDS f on f.RDB$FIELD_NAME = pp.RDB$FIELD_SOURCE
-        inner join RDB$TYPES t on t.RDB$TYPE = f.RDB$FIELD_TYPE and t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
-    where p.RDB$SYSTEM_FLAG = 0
-union
-select @db ""TableSchema""
-        , p.RDB$FUNCTION_NAME ""Name""
-        , 'FUNCTION' ""Type""
-        , pp.RDB$FUNCTION_NAME ""ParameterName""
-        , case when pp.rdb$mechanism = 5 then 1 else 0 end ""IsOutputParameter""
-        , t.RDB$TYPE_NAME ""ParameterType""
-        , pp.RDB$FIELD_LENGTH ""Length""
-        , pp.RDB$FIELD_PRECISION ""Precision""
-        , pp.RDB$FIELD_SCALE ""Scale""
-        , null ""DefaultValue""
-        , 0 ""BodyContainsSelectStatement""
-    from RDB$FUNCTIONS p
-        inner join RDB$FUNCTION_ARGUMENTS pp on pp.RDB$FUNCTION_NAME = p.RDB$FUNCTION_NAME
-        inner join RDB$TYPES t on t.RDB$TYPE = pp.RDB$FIELD_TYPE and t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
-    where p.RDB$SYSTEM_FLAG = 0
-";
-
-            return DataCommand.Find<DataStoredProcedure>(conn, sql, "@db", db.ToLower(), ReadProcedure);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+
+namespace DbLinq.Firebird
+{
+    partial class FirebirdSchemaLoader
+    {
+        public class DataStoredProcedure
+        {
+            public string TableSchema;
+            public string Name;
+            public string Type;
+            public string ParameterName;
+            public bool IsOutputParameter;
+            public string ParameterType;
+            public long? Length;
+            public int? Precision;
+            public int? Scale;
+            public string DefaultValue;
+            public bool BodyContainsSelectStatement;
+
+            public override string ToString()
+            {
+                return "ProcRow " + Name;
+            }
+        }
+
+        DataStoredProcedure ReadProcedure(IDataReader rdr)
+        {
+            DataStoredProcedure procedure = new DataStoredProcedure();
+            int field = 0;
+            procedure.TableSchema = rdr.GetAsString(field++);
+            procedure.Name = rdr.GetAsString(field++).Trim();
+            procedure.Type = rdr.GetAsString(field++);
+            procedure.ParameterName = rdr.GetAsString(field++).Trim();
+            procedure.IsOutputParameter = rdr.GetAsBool(field++);
+            procedure.ParameterType = rdr.GetAsString(field++).Trim();
+            procedure.Length = rdr.GetAsNullableNumeric<long>(field++);
+            procedure.Precision = rdr.GetAsNullableNumeric<int>(field++);
+            procedure.Scale = rdr.GetAsNullableNumeric<int>(field++);
+            procedure.DefaultValue = rdr.GetAsString(field++);
+            procedure.BodyContainsSelectStatement = rdr.GetAsBool(field++);
+            return procedure;
+        }
+
+        public List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
+        {
+            string sql = @"
+select 'Foo' ""TableSchema""
+        , p.RDB$PROCEDURE_NAME ""Name""
+        , 'PROCEDURE' ""Type""
+        , pp.RDB$PARAMETER_NAME ""ParameterName""
+        , pp.RDB$PARAMETER_TYPE ""IsOutputParameter""
+        , t.RDB$TYPE_NAME ""ParameterType""
+        , f.RDB$FIELD_LENGTH ""Length""
+        , f.RDB$FIELD_PRECISION ""Precision""
+        , f.RDB$FIELD_SCALE ""Scale""
+        , pp.RDB$DEFAULT_VALUE ""DefaultValue""
+        , case when p.RDB$PROCEDURE_OUTPUTS is null then 0 else 1 end ""BodyContainsSelectStatement""
+    from RDB$PROCEDURES p
+        inner join RDB$PROCEDURE_PARAMETERS pp on pp.RDB$PROCEDURE_NAME = p.RDB$PROCEDURE_NAME
+        inner join RDB$FIELDS f on f.RDB$FIELD_NAME = pp.RDB$FIELD_SOURCE
+        inner join RDB$TYPES t on t.RDB$TYPE = f.RDB$FIELD_TYPE and t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
+    where p.RDB$SYSTEM_FLAG = 0
+union
+select @db ""TableSchema""
+        , p.RDB$FUNCTION_NAME ""Name""
+        , 'FUNCTION' ""Type""
+        , pp.RDB$FUNCTION_NAME ""ParameterName""
+        , case when pp.rdb$mechanism = 5 then 1 else 0 end ""IsOutputParameter""
+        , t.RDB$TYPE_NAME ""ParameterType""
+        , pp.RDB$FIELD_LENGTH ""Length""
+        , pp.RDB$FIELD_PRECISION ""Precision""
+        , pp.RDB$FIELD_SCALE ""Scale""
+        , null ""DefaultValue""
+        , 0 ""BodyContainsSelectStatement""
+    from RDB$FUNCTIONS p
+        inner join RDB$FUNCTION_ARGUMENTS pp on pp.RDB$FUNCTION_NAME = p.RDB$FUNCTION_NAME
+        inner join RDB$TYPES t on t.RDB$TYPE = pp.RDB$FIELD_TYPE and t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
+    where p.RDB$SYSTEM_FLAG = 0
+";
+
+            return DataCommand.Find<DataStoredProcedure>(conn, sql, "@db", db.ToLower(), ReadProcedure);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.Tables.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.Tables.cs
@@ -1,56 +1,56 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Firebird
-{
-#if !MONO_STRICT
-    public
-#endif
-    partial class FirebirdSchemaLoader
-    {
-        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
-        {
-            // note: the ReadDataNameAndSchema relies on information order
-            const string sql = @"
-select RDB$RELATION_NAME ""TableName""
-        , 'Foo' ""TableSchema""
-    from RDB$RELATIONS
-    where RDB$SYSTEM_FLAG = 0
-    order by RDB$RELATION_NAME
-";
-            return DataCommand.Find<IDataName>(connectionString, sql, "@db", databaseName, ReadDataNameAndSchema)
-                .ConvertAll(delegate(IDataName dn) {
-                    dn.Name = dn.Name.Trim();
-                    return dn;
-                });
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Firebird
+{
+#if !MONO_STRICT
+    public
+#endif
+    partial class FirebirdSchemaLoader
+    {
+        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
+        {
+            // note: the ReadDataNameAndSchema relies on information order
+            const string sql = @"
+select RDB$RELATION_NAME ""TableName""
+        , 'Foo' ""TableSchema""
+    from RDB$RELATIONS
+    where RDB$SYSTEM_FLAG = 0
+    order by RDB$RELATION_NAME
+";
+            return DataCommand.Find<IDataName>(connectionString, sql, "@db", databaseName, ReadDataNameAndSchema)
+                .ConvertAll(delegate(IDataName dn) {
+                    dn.Name = dn.Name.Trim();
+                    return dn;
+                });
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSchemaLoader.cs
@@ -1,267 +1,267 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.IO;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Firebird
-{
-    partial class FirebirdSchemaLoader : SchemaLoader
-    {
-        private readonly IVendor vendor = new FirebirdVendor();
-        public override IVendor Vendor { get { return vendor; } set { } }
-
-        protected override TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
-        {
-            return CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat, WordsExtraction.FromDictionary);
-        }
-
-        /// <summary>
-        /// Gets a usable name for the database.
-        /// </summary>
-        /// <param name="databaseName">Name of the database.</param>
-        /// <returns></returns>
-        protected override string GetDatabaseName(string databaseName)
-        {
-            return Path.GetFileNameWithoutExtension(databaseName);
-        }
-
-        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
-        {
-            // TODO: debug stored procedures support
-            return;
-
-            var procs = ReadProcedures(conn, schemaName.DbName);
-
-            foreach (DataStoredProcedure proc in procs)
-            {
-                var procedureName = CreateProcedureName(proc.Name, proc.TableSchema, nameFormat);
-
-                var func = new Function();
-
-                func.Name = procedureName.DbName;
-                func.Method = procedureName.MethodName;
-                func.IsComposable = string.Compare(proc.Type, "FUNCTION") == 0;
-                func.BodyContainsSelectStatement = proc.BodyContainsSelectStatement;
-                ParseProcParams(proc, func);
-
-                schema.Functions.Add(func);
-            }
-        }
-
-        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
-        {
-            var constraints = ReadConstraints(conn, schemaName.DbName);
-
-            //sort tables - parents first (this is moving to SchemaPostprocess)
-            //TableSorter.Sort(tables, constraints); 
-
-            foreach (DataConstraint keyColRow in constraints)
-            {
-                //find my table:
-                string fullKeyDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
-                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => fullKeyDbName == t.Name);
-                if (table == null)
-                {
-                    bool ignoreCase = true;
-                    table = schema.Tables.FirstOrDefault(t => 0 == string.Compare(fullKeyDbName, t.Name, ignoreCase));
-                    if (table == null)
-                    {
-                        WriteErrorLine("ERROR L46: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
-                        continue;
-                    }
-                }
-
-                bool isForeignKey = keyColRow.ConstraintName != "PRIMARY"
-                                    && keyColRow.ReferencedTableName != null;
-
-                if (isForeignKey)
-                {
-                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
-                                   keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName, keyColRow.ReferencedTableSchema,
-                                   keyColRow.ConstraintName, nameFormat, names);
-                }
-
-            }
-        }
-
-        protected void ParseProcParams(DataStoredProcedure inputData, Function outputFunc)
-        {
-            //string paramString = inputData.ParamList;
-            //if (string.IsNullOrEmpty(paramString))
-            //{
-            //    //nothing to parse
-            //}
-            //else
-            //{
-            //    string[] parts = paramString.Split(',');
-
-            //    foreach (string part in parts) //part='OUT param1 int'
-            //    {
-            //        DbLinq.Schema.Dbml.Parameter paramObj = ParseParameterString(part);
-            //        if (paramObj != null)
-            //            outputFunc.Parameters.Add(paramObj);
-            //    }
-            //}
-
-            //if (!string.IsNullOrEmpty(inputData.Returns))
-            //{
-            //    var paramRet = new Return();
-            //    paramRet.DbType = inputData.Returns;
-            //    paramRet.Type = ParseDbType(null, inputData.Returns);
-            //    outputFunc.Return = paramRet;
-            //}
-        }
-
-        /// <summary>
-        /// parse strings such as 'INOUT param2 INT' or 'param4 varchar ( 32 )'
-        /// </summary>
-        /// <param name="paramStr"></param>
-        /// <returns></returns>
-        protected DbLinq.Schema.Dbml.Parameter ParseParameterString(string param)
-        {
-            param = param.Trim();
-            var inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
-
-            if (param.StartsWith("IN", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
-                param = param.Substring(2).Trim();
-            }
-            if (param.StartsWith("INOUT", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.InOut;
-                param = param.Substring(5).Trim();
-            }
-            if (param.StartsWith("OUT", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.Out;
-                param = param.Substring(3).Trim();
-            }
-
-            int indxSpace = param.IndexOfAny(new char[] { ' ', '\t' });
-            if (indxSpace == -1)
-                return null; //cannot find space between varName and varType
-
-            string varName = param.Substring(0, indxSpace);
-            string varType = param.Substring(indxSpace + 1);
-
-            var paramObj = new Parameter();
-            paramObj.Direction = inOut;
-            paramObj.Name = varName;
-            paramObj.DbType = varType;
-            paramObj.Type = ParseDbType(varName, varType);
-
-            return paramObj;
-        }
-
-        static System.Text.RegularExpressions.Regex re_CHARSET = new System.Text.RegularExpressions.Regex(@" CHARSET \w+$");
-        /// <summary>
-        /// given 'CHAR(30)', return 'string'
-        /// </summary>
-        protected string ParseDbType(string columnName, string dbType1)
-        {
-            //strip 'CHARSET latin1' from the end
-            string dbType2 = re_CHARSET.Replace(dbType1, "");
-            var dataType = new DataType();
-            dataType.UnpackRawDbType(dbType2);
-            return MapDbType(columnName, dataType).ToString();
-        }
-
-        /// <summary>
-        /// This is a hack while I figure out a way to produce Dialect 3 types.
-        /// </summary>
-        /// <param name="columnName"></param>
-        /// <param name="dataType"></param>
-        /// <returns></returns>
-        protected override System.Type MapDbType(string columnName, IDataType dataType)
-        {
-            switch (dataType.SqlType)
-            {
-            // string
-            case "CSTRING":
-            case "TEXT":
-            case "VARYING":
-                return typeof(String);
-
-            // int16
-            case "SHORT":
-                if (dataType.Unsigned ?? false)
-                    return typeof(UInt16);
-                return typeof(Int16);
-
-            // int32
-            case "LONG":
-                if (dataType.Unsigned ?? false)
-                    return typeof(UInt32);
-                return typeof(Int32);
-
-            // int64
-            case "INT64":
-                return typeof(Int64);
-
-            // single
-            case "FLOAT":
-                return typeof(Single);
-
-            // double
-            case "DOUBLE":
-                return typeof(Double);
-
-            // decimal
-            case "QUAD":
-                return typeof(Decimal);
-
-            // time interval
-            case "TIME":
-                return typeof(TimeSpan);
-
-            // date
-            case "TIMESTAMP":
-            case "DATE":
-                return typeof(DateTime);
-
-            // byte[]
-            case "BLOB":
-            case "BLOB_ID":
-                return typeof(Byte[]);
-
-            // if we fall to this case, we must handle the type
-            default:
-                return null;
-            }
-
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Firebird
+{
+    partial class FirebirdSchemaLoader : SchemaLoader
+    {
+        private readonly IVendor vendor = new FirebirdVendor();
+        public override IVendor Vendor { get { return vendor; } set { } }
+
+        protected override TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
+        {
+            return CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat, WordsExtraction.FromDictionary);
+        }
+
+        /// <summary>
+        /// Gets a usable name for the database.
+        /// </summary>
+        /// <param name="databaseName">Name of the database.</param>
+        /// <returns></returns>
+        protected override string GetDatabaseName(string databaseName)
+        {
+            return Path.GetFileNameWithoutExtension(databaseName);
+        }
+
+        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
+        {
+            // TODO: debug stored procedures support
+            return;
+
+            var procs = ReadProcedures(conn, schemaName.DbName);
+
+            foreach (DataStoredProcedure proc in procs)
+            {
+                var procedureName = CreateProcedureName(proc.Name, proc.TableSchema, nameFormat);
+
+                var func = new Function();
+
+                func.Name = procedureName.DbName;
+                func.Method = procedureName.MethodName;
+                func.IsComposable = string.Compare(proc.Type, "FUNCTION") == 0;
+                func.BodyContainsSelectStatement = proc.BodyContainsSelectStatement;
+                ParseProcParams(proc, func);
+
+                schema.Functions.Add(func);
+            }
+        }
+
+        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
+        {
+            var constraints = ReadConstraints(conn, schemaName.DbName);
+
+            //sort tables - parents first (this is moving to SchemaPostprocess)
+            //TableSorter.Sort(tables, constraints); 
+
+            foreach (DataConstraint keyColRow in constraints)
+            {
+                //find my table:
+                string fullKeyDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
+                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => fullKeyDbName == t.Name);
+                if (table == null)
+                {
+                    bool ignoreCase = true;
+                    table = schema.Tables.FirstOrDefault(t => 0 == string.Compare(fullKeyDbName, t.Name, ignoreCase));
+                    if (table == null)
+                    {
+                        WriteErrorLine("ERROR L46: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
+                        continue;
+                    }
+                }
+
+                bool isForeignKey = keyColRow.ConstraintName != "PRIMARY"
+                                    && keyColRow.ReferencedTableName != null;
+
+                if (isForeignKey)
+                {
+                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
+                                   keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName, keyColRow.ReferencedTableSchema,
+                                   keyColRow.ConstraintName, nameFormat, names);
+                }
+
+            }
+        }
+
+        protected void ParseProcParams(DataStoredProcedure inputData, Function outputFunc)
+        {
+            //string paramString = inputData.ParamList;
+            //if (string.IsNullOrEmpty(paramString))
+            //{
+            //    //nothing to parse
+            //}
+            //else
+            //{
+            //    string[] parts = paramString.Split(',');
+
+            //    foreach (string part in parts) //part='OUT param1 int'
+            //    {
+            //        DbLinq.Schema.Dbml.Parameter paramObj = ParseParameterString(part);
+            //        if (paramObj != null)
+            //            outputFunc.Parameters.Add(paramObj);
+            //    }
+            //}
+
+            //if (!string.IsNullOrEmpty(inputData.Returns))
+            //{
+            //    var paramRet = new Return();
+            //    paramRet.DbType = inputData.Returns;
+            //    paramRet.Type = ParseDbType(null, inputData.Returns);
+            //    outputFunc.Return = paramRet;
+            //}
+        }
+
+        /// <summary>
+        /// parse strings such as 'INOUT param2 INT' or 'param4 varchar ( 32 )'
+        /// </summary>
+        /// <param name="paramStr"></param>
+        /// <returns></returns>
+        protected DbLinq.Schema.Dbml.Parameter ParseParameterString(string param)
+        {
+            param = param.Trim();
+            var inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
+
+            if (param.StartsWith("IN", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
+                param = param.Substring(2).Trim();
+            }
+            if (param.StartsWith("INOUT", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.InOut;
+                param = param.Substring(5).Trim();
+            }
+            if (param.StartsWith("OUT", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.Out;
+                param = param.Substring(3).Trim();
+            }
+
+            int indxSpace = param.IndexOfAny(new char[] { ' ', '\t' });
+            if (indxSpace == -1)
+                return null; //cannot find space between varName and varType
+
+            string varName = param.Substring(0, indxSpace);
+            string varType = param.Substring(indxSpace + 1);
+
+            var paramObj = new Parameter();
+            paramObj.Direction = inOut;
+            paramObj.Name = varName;
+            paramObj.DbType = varType;
+            paramObj.Type = ParseDbType(varName, varType);
+
+            return paramObj;
+        }
+
+        static System.Text.RegularExpressions.Regex re_CHARSET = new System.Text.RegularExpressions.Regex(@" CHARSET \w+$");
+        /// <summary>
+        /// given 'CHAR(30)', return 'string'
+        /// </summary>
+        protected string ParseDbType(string columnName, string dbType1)
+        {
+            //strip 'CHARSET latin1' from the end
+            string dbType2 = re_CHARSET.Replace(dbType1, "");
+            var dataType = new DataType();
+            dataType.UnpackRawDbType(dbType2);
+            return MapDbType(columnName, dataType).ToString();
+        }
+
+        /// <summary>
+        /// This is a hack while I figure out a way to produce Dialect 3 types.
+        /// </summary>
+        /// <param name="columnName"></param>
+        /// <param name="dataType"></param>
+        /// <returns></returns>
+        protected override System.Type MapDbType(string columnName, IDataType dataType)
+        {
+            switch (dataType.SqlType)
+            {
+            // string
+            case "CSTRING":
+            case "TEXT":
+            case "VARYING":
+                return typeof(String);
+
+            // int16
+            case "SHORT":
+                if (dataType.Unsigned ?? false)
+                    return typeof(UInt16);
+                return typeof(Int16);
+
+            // int32
+            case "LONG":
+                if (dataType.Unsigned ?? false)
+                    return typeof(UInt32);
+                return typeof(Int32);
+
+            // int64
+            case "INT64":
+                return typeof(Int64);
+
+            // single
+            case "FLOAT":
+                return typeof(Single);
+
+            // double
+            case "DOUBLE":
+                return typeof(Double);
+
+            // decimal
+            case "QUAD":
+                return typeof(Decimal);
+
+            // time interval
+            case "TIME":
+                return typeof(TimeSpan);
+
+            // date
+            case "TIMESTAMP":
+            case "DATE":
+                return typeof(DateTime);
+
+            // byte[]
+            case "BLOB":
+            case "BLOB_ID":
+                return typeof(Byte[]);
+
+            // if we fall to this case, we must handle the type
+            default:
+                return null;
+            }
+
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdSqlProvider.cs
@@ -1,126 +1,126 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq;
-using System.Collections.Generic;
-
-using DbLinq.Vendor.Implementation;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-
-namespace DbLinq.Firebird
-{
-#if !MONO_STRICT
-    public
-#endif
-
-    class FirebirdSqlProvider : SqlProvider
-    {
-        public override ExpressionTranslator GetTranslator()
-        {
-            return new FirebirdExpressionTranslator();
-        }
-
-        public override string GetParameterName(string nameBase)
-        {
-            return "@" + nameBase;
-        }
-
-        protected override SqlStatement GetLiteralCount(SqlStatement a)
-        {
-            return "COUNT(*)";
-        }
-
-        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} || {1}", a, b);
-        }
-
-        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
-        {
-            return string.Format("LOWER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
-        {
-            return string.Format("UPPER({0})", a);
-        }
-
-        protected override char SafeNameStartQuote { get { return ' '; } }
-        protected override char SafeNameEndQuote { get { return ' '; } }
-
-
-        /// <summary>
-        /// Returns a table alias
-        /// </summary>
-        /// <param name="table"></param>
-        /// <returns></returns>
-        public override string GetTable(string table)
-        {
-            var parts = table.Split('.');
-            return GetSafeName(parts[parts.Length - 1]);
-        }
-
-        /// <summary>
-        /// Returns a LIMIT clause around a SELECT clause
-        /// </summary>
-        /// <param name="select">SELECT clause</param>
-        /// <param name="limit">limit value (number of columns to be returned)</param>
-        /// <returns></returns>
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
-        {
-            string stmt = limit.Count == 2
-                ? string.Format("SELECT FIRST {0}, LAST {1}", limit[0].Sql, limit[1].Sql)
-                : string.Format("SELECT FIRST {0}", limit[0].Sql);
-            return select.Replace("SELECT", stmt, true);
-        }
-
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
-        {
-            string stmt = (limit.Count == 2
-                ? string.Format("SELECT FIRST {0}, LAST {1} SKIP {2}", limit[0].Sql, limit[1].Sql, offset)
-                : string.Format("SELECT FIRST {0} SKIP {1}", limit[0].Sql, offset));
-           //string stmt = string.Format("SELECT FIRST {0} SKIP {1}", limit, offset);
-           
-            return select.Replace("SELECT", stmt, true);
-        }
-
-
-        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
-        {
-            // no parameters? no need to get them back
-            if (outputParameters.Count == 0)
-                return "";
-            // otherwise we keep track of the new values
-            return SqlStatement.Format("SELECT {0} INTO {1} FROM DUAL",
-                SqlStatement.Join(", ", (from outputExpression in outputExpressions select outputExpression.Replace(".NextVal", ".CurrVal", true)).ToArray()),
-                SqlStatement.Join(", ", outputParameters.ToArray()));
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq;
+using System.Collections.Generic;
+
+using DbLinq.Vendor.Implementation;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+
+namespace DbLinq.Firebird
+{
+#if !MONO_STRICT
+    public
+#endif
+
+    class FirebirdSqlProvider : SqlProvider
+    {
+        public override ExpressionTranslator GetTranslator()
+        {
+            return new FirebirdExpressionTranslator();
+        }
+
+        public override string GetParameterName(string nameBase)
+        {
+            return "@" + nameBase;
+        }
+
+        protected override SqlStatement GetLiteralCount(SqlStatement a)
+        {
+            return "COUNT(*)";
+        }
+
+        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} || {1}", a, b);
+        }
+
+        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
+        {
+            return string.Format("LOWER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
+        {
+            return string.Format("UPPER({0})", a);
+        }
+
+        protected override char SafeNameStartQuote { get { return ' '; } }
+        protected override char SafeNameEndQuote { get { return ' '; } }
+
+
+        /// <summary>
+        /// Returns a table alias
+        /// </summary>
+        /// <param name="table"></param>
+        /// <returns></returns>
+        public override string GetTable(string table)
+        {
+            var parts = table.Split('.');
+            return GetSafeName(parts[parts.Length - 1]);
+        }
+
+        /// <summary>
+        /// Returns a LIMIT clause around a SELECT clause
+        /// </summary>
+        /// <param name="select">SELECT clause</param>
+        /// <param name="limit">limit value (number of columns to be returned)</param>
+        /// <returns></returns>
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
+        {
+            string stmt = limit.Count == 2
+                ? string.Format("SELECT FIRST {0}, LAST {1}", limit[0].Sql, limit[1].Sql)
+                : string.Format("SELECT FIRST {0}", limit[0].Sql);
+            return select.Replace("SELECT", stmt, true);
+        }
+
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
+        {
+            string stmt = (limit.Count == 2
+                ? string.Format("SELECT FIRST {0}, LAST {1} SKIP {2}", limit[0].Sql, limit[1].Sql, offset)
+                : string.Format("SELECT FIRST {0} SKIP {1}", limit[0].Sql, offset));
+           //string stmt = string.Format("SELECT FIRST {0} SKIP {1}", limit, offset);
+           
+            return select.Replace("SELECT", stmt, true);
+        }
+
+
+        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
+        {
+            // no parameters? no need to get them back
+            if (outputParameters.Count == 0)
+                return "";
+            // otherwise we keep track of the new values
+            return SqlStatement.Format("SELECT {0} INTO {1} FROM DUAL",
+                SqlStatement.Join(", ", (from outputExpression in outputExpressions select outputExpression.Replace(".NextVal", ".CurrVal", true)).ToArray()),
+                SqlStatement.Join(", ", outputParameters.ToArray()));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/FirebirdVendor.cs
@@ -1,204 +1,204 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Data.Common;
-using System.Linq;
-using System.Collections.Generic;
-using System.Text;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using DbLinq.Data.Linq.SqlClient;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Firebird
-{
-    [Vendor(typeof(FirebirdProvider))]
-#if !MONO_STRICT
-    public
-#endif
-    class FirebirdVendor : Vendor.Implementation.Vendor
-    {
-        public override string VendorName { get { return "FirebirdSql"; } }
-
-        protected readonly FirebirdSqlProvider sqlProvider = new FirebirdSqlProvider();
-        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
-
-        /// <summary>
-        /// call mysql stored proc or stored function, 
-        /// optionally return DataSet, and collect return params.
-        /// </summary>
-        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
-                                                                 , params object[] inputValues)
-        {
-            if (method == null)
-                throw new ArgumentNullException("L56 Null 'method' parameter");
-
-            //check to make sure there is exactly one [FunctionEx]? that's below.
-            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
-            var functionAttrib = context.Mapping.GetFunction(method);
-
-            ParameterInfo[] paramInfos = method.GetParameters();
-            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
-            //if (numRequiredParams != inputValues.Length)
-            //    throw new ArgumentException("L161 Argument count mismatch");
-
-            string sp_name = functionAttrib.MappedName;
-
-            // picrap: is there any way to abstract some part of this?
-            using (IDbCommand command = context.Connection.CreateCommand())
-            {
-                command.CommandText = sp_name;
-                //FbSqlCommand command = new FbSqlCommand("select * from hello0()");
-                int currInputIndex = 0;
-
-                List<string> paramNames = new List<string>();
-                for (int i = 0; i < paramInfos.Length; i++)
-                {
-                    ParameterInfo paramInfo = paramInfos[i];
-
-                    //TODO: check to make sure there is exactly one [Parameter]?
-                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
-
-                    string paramName = "@" + paramAttrib.Name; //eg. '@param1'
-                    paramNames.Add(paramName);
-
-                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
-                    //FbDbType dbType = FbSqlTypeConversions.ParseType(paramAttrib.DbType);
-                    IDbDataParameter cmdParam = command.CreateParameter();
-                    cmdParam.ParameterName = paramName;
-                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
-                    if (direction == System.Data.ParameterDirection.Input || direction == System.Data.ParameterDirection.InputOutput)
-                    {
-                        object inputValue = inputValues[currInputIndex++];
-                        cmdParam.Value = inputValue;
-                    }
-                    else
-                    {
-                        cmdParam.Value = null;
-                    }
-                    cmdParam.Direction = direction;
-                    command.Parameters.Add(cmdParam);
-                }
-
-                if (!functionAttrib.IsComposable) // IsCompsable is false when we have a procedure
-                {
-                    //procedures: under the hood, this seems to prepend 'CALL '
-                    command.CommandType = System.Data.CommandType.StoredProcedure;
-                }
-                else
-                {
-                    //functions: 'SELECT * FROM myFunction()' or 'SELECT * FROM hello(?s)'
-                    command.CommandText = "SELECT * FROM " + command.CommandText + "("
-                        + string.Join(",", paramNames.ToArray()) + ")";
-                }
-
-                if (method.ReturnType == typeof(DataSet))
-                {
-                    //unknown shape of resultset:
-                    System.Data.DataSet dataSet = new DataSet();
-                    //IDataAdapter adapter = new FbDataAdapter((FbCommand)command);
-                    IDbDataAdapter adapter = CreateDataAdapter(context);
-                    adapter.SelectCommand = command;
-                    adapter.Fill(dataSet);
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(dataSet, outParamValues.ToArray());
-                }
-                else
-                {
-                    object obj = command.ExecuteScalar();
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(obj, outParamValues.ToArray());
-                }
-            }
-        }
-
-        static System.Data.ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
-        {
-            //strange hack to determine what's a ref, out parameter:
-            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
-            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
-            if (paramInfo.IsOut)
-                return System.Data.ParameterDirection.Output;
-            if (hasAmpersand)
-                return System.Data.ParameterDirection.InputOutput;
-            return System.Data.ParameterDirection.Input;
-        }
-
-        /// <summary>
-        /// Collect all Out or InOut param values, casting them to the correct .net type.
-        /// </summary>
-        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
-        {
-            List<object> outParamValues = new List<object>();
-            //Type type_t = typeof(T);
-            int i = -1;
-            foreach (IDbDataParameter param in paramSet)
-            {
-                i++;
-                if (param.Direction == System.Data.ParameterDirection.Input)
-                {
-                    outParamValues.Add("unused");
-                    continue;
-                }
-
-                object val = param.Value;
-                Type desired_type = paramInfos[i].ParameterType;
-
-                if (desired_type.Name.EndsWith("&"))
-                {
-                    //for ref and out parameters, we need to tweak ref types, e.g.
-                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                    string fullName1 = desired_type.AssemblyQualifiedName;
-                    string fullName2 = fullName1.Replace("&", "");
-                    desired_type = Type.GetType(fullName2);
-                }
-                try
-                {
-                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
-                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
-                    //object val2 = FieldUtils.CastValue(val, desired_type);
-                    object val2 = TypeConvert.To(val, desired_type);
-                    outParamValues.Add(val2);
-                }
-                catch (Exception)
-                {
-                    //fails with 'System.Decimal cannot be converted to Int32'
-                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
-                }
-            }
-            return outParamValues;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Data.Common;
+using System.Linq;
+using System.Collections.Generic;
+using System.Text;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using DbLinq.Data.Linq.SqlClient;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Firebird
+{
+    [Vendor(typeof(FirebirdProvider))]
+#if !MONO_STRICT
+    public
+#endif
+    class FirebirdVendor : Vendor.Implementation.Vendor
+    {
+        public override string VendorName { get { return "FirebirdSql"; } }
+
+        protected readonly FirebirdSqlProvider sqlProvider = new FirebirdSqlProvider();
+        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
+
+        /// <summary>
+        /// call mysql stored proc or stored function, 
+        /// optionally return DataSet, and collect return params.
+        /// </summary>
+        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
+                                                                 , params object[] inputValues)
+        {
+            if (method == null)
+                throw new ArgumentNullException("L56 Null 'method' parameter");
+
+            //check to make sure there is exactly one [FunctionEx]? that's below.
+            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
+            var functionAttrib = context.Mapping.GetFunction(method);
+
+            ParameterInfo[] paramInfos = method.GetParameters();
+            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
+            //if (numRequiredParams != inputValues.Length)
+            //    throw new ArgumentException("L161 Argument count mismatch");
+
+            string sp_name = functionAttrib.MappedName;
+
+            // picrap: is there any way to abstract some part of this?
+            using (IDbCommand command = context.Connection.CreateCommand())
+            {
+                command.CommandText = sp_name;
+                //FbSqlCommand command = new FbSqlCommand("select * from hello0()");
+                int currInputIndex = 0;
+
+                List<string> paramNames = new List<string>();
+                for (int i = 0; i < paramInfos.Length; i++)
+                {
+                    ParameterInfo paramInfo = paramInfos[i];
+
+                    //TODO: check to make sure there is exactly one [Parameter]?
+                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
+
+                    string paramName = "@" + paramAttrib.Name; //eg. '@param1'
+                    paramNames.Add(paramName);
+
+                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
+                    //FbDbType dbType = FbSqlTypeConversions.ParseType(paramAttrib.DbType);
+                    IDbDataParameter cmdParam = command.CreateParameter();
+                    cmdParam.ParameterName = paramName;
+                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
+                    if (direction == System.Data.ParameterDirection.Input || direction == System.Data.ParameterDirection.InputOutput)
+                    {
+                        object inputValue = inputValues[currInputIndex++];
+                        cmdParam.Value = inputValue;
+                    }
+                    else
+                    {
+                        cmdParam.Value = null;
+                    }
+                    cmdParam.Direction = direction;
+                    command.Parameters.Add(cmdParam);
+                }
+
+                if (!functionAttrib.IsComposable) // IsCompsable is false when we have a procedure
+                {
+                    //procedures: under the hood, this seems to prepend 'CALL '
+                    command.CommandType = System.Data.CommandType.StoredProcedure;
+                }
+                else
+                {
+                    //functions: 'SELECT * FROM myFunction()' or 'SELECT * FROM hello(?s)'
+                    command.CommandText = "SELECT * FROM " + command.CommandText + "("
+                        + string.Join(",", paramNames.ToArray()) + ")";
+                }
+
+                if (method.ReturnType == typeof(DataSet))
+                {
+                    //unknown shape of resultset:
+                    System.Data.DataSet dataSet = new DataSet();
+                    //IDataAdapter adapter = new FbDataAdapter((FbCommand)command);
+                    IDbDataAdapter adapter = CreateDataAdapter(context);
+                    adapter.SelectCommand = command;
+                    adapter.Fill(dataSet);
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(dataSet, outParamValues.ToArray());
+                }
+                else
+                {
+                    object obj = command.ExecuteScalar();
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(obj, outParamValues.ToArray());
+                }
+            }
+        }
+
+        static System.Data.ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
+        {
+            //strange hack to determine what's a ref, out parameter:
+            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
+            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
+            if (paramInfo.IsOut)
+                return System.Data.ParameterDirection.Output;
+            if (hasAmpersand)
+                return System.Data.ParameterDirection.InputOutput;
+            return System.Data.ParameterDirection.Input;
+        }
+
+        /// <summary>
+        /// Collect all Out or InOut param values, casting them to the correct .net type.
+        /// </summary>
+        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
+        {
+            List<object> outParamValues = new List<object>();
+            //Type type_t = typeof(T);
+            int i = -1;
+            foreach (IDbDataParameter param in paramSet)
+            {
+                i++;
+                if (param.Direction == System.Data.ParameterDirection.Input)
+                {
+                    outParamValues.Add("unused");
+                    continue;
+                }
+
+                object val = param.Value;
+                Type desired_type = paramInfos[i].ParameterType;
+
+                if (desired_type.Name.EndsWith("&"))
+                {
+                    //for ref and out parameters, we need to tweak ref types, e.g.
+                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+                    string fullName1 = desired_type.AssemblyQualifiedName;
+                    string fullName2 = fullName1.Replace("&", "");
+                    desired_type = Type.GetType(fullName2);
+                }
+                try
+                {
+                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
+                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
+                    //object val2 = FieldUtils.CastValue(val, desired_type);
+                    object val2 = TypeConvert.To(val, desired_type);
+                    outParamValues.Add(val2);
+                }
+                catch (Exception)
+                {
+                    //fails with 'System.Decimal cannot be converted to Int32'
+                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
+                }
+            }
+            return outParamValues;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/Properties/AssemblyInfo.cs
@@ -1,45 +1,45 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq.Firebird")]
-[assembly: AssemblyDescription("DbLinq Firebird SQL vendor implementation")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("7ad419fa-9b5c-46d6-8567-ac33f6b69833")]
-
-[assembly: DbLinq]
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq.Firebird")]
+[assembly: AssemblyDescription("DbLinq Firebird SQL vendor implementation")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7ad419fa-9b5c-46d6-8567-ac33f6b69833")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Firebird/Test/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Firebird/Test/TestBase.cs
@@ -1,52 +1,52 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        public const StringComparison stringComparisonType = StringComparison.InvariantCulture;
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new FirebirdSql.Data.FirebirdClient.FbCommand(sql, (FirebirdSql.Data.FirebirdClient.FbConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new FirebirdSql.Data.FirebirdClient.FbConnection(connectionString);
-        }
-
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.Firebird.FirebirdVendor();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        public const StringComparison stringComparisonType = StringComparison.InvariantCulture;
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new FirebirdSql.Data.FirebirdClient.FbCommand(sql, (FirebirdSql.Data.FirebirdClient.FbConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new FirebirdSql.Data.FirebirdClient.FbConnection(connectionString);
+        }
+
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.Firebird.FirebirdVendor();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresDataContext.cs
@@ -1,54 +1,54 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Ingres
-{
-    /// <summary>
-    /// PgsqlDataContext allows easier one-parameter creation of a data context.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class IngresDataContext : DataContext
-    {
-        public IngresDataContext(IDbConnection conn)
-#if MONO_STRICT
-            : base(conn)
-#else
-            : base(conn, new IngresVendor())
-#endif
-        {
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Ingres
+{
+    /// <summary>
+    /// PgsqlDataContext allows easier one-parameter creation of a data context.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class IngresDataContext : DataContext
+    {
+        public IngresDataContext(IDbConnection conn)
+#if MONO_STRICT
+            : base(conn)
+#else
+            : base(conn, new IngresVendor())
+#endif
+        {
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.Columns.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.Columns.cs
@@ -1,90 +1,90 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Ingres
-{
-    partial class IngresSchemaLoader
-    {
-        protected virtual string GetFullType(IDataTableColumn column)
-        {
-            switch (column.SqlType.ToLower())
-            {
-            case "c":
-            case "char":
-            case "nchar":
-            case "varchar":
-            case "nvarchar":
-            case "long varchar":
-            case "text":
-            case "integer":
-                return column.SqlType + "(" + column.Length + ")";
-
-            case "decimal":
-                return column.SqlType + "(" + column.Length + ", " + column.Scale + ")";
-
-            default:
-                return column.SqlType;
-            }
-        }
-
-        protected virtual IDataTableColumn ReadColumn(IDataRecord rdr)
-        {
-            var column = new DataTableColumn();
-            int field = 0;
-            column.TableSchema = rdr.GetAsString(field++).Trim();
-            column.TableName = rdr.GetAsString(field++).Trim();
-            column.ColumnName = rdr.GetAsString(field++).Trim();
-            string nullableStr = rdr.GetAsString(field++);
-            column.Nullable = nullableStr == "Y";
-            column.SqlType = rdr.GetAsString(field++).Trim();
-            column.DefaultValue = rdr.GetAsString(field++);
-            column.Generated = column.DefaultValue != null && column.DefaultValue.StartsWith("next value for");
-
-            column.Length = rdr.GetAsNullableNumeric<long>(field++);
-            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
-            column.FullType = GetFullType(column);
-            return column;
-        }
-
-        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
-        {
-            const string sql = @"SELECT t.table_owner, t.table_name, column_name, " + 
-                "column_nulls, column_datatype, column_default_val, " + 
-                "column_length, column_scale " + 
-                "FROM iicolumns c join iitables t on " + 
-                "(c.table_name=t.table_name and c.table_owner=t.table_owner) " + 
-                "WHERE t.table_owner <> '$ingres' and t.table_type in ('T', 'V') " + 
-                "AND t.table_name NOT LIKE 'ii%' " + 
-                "ORDER BY column_sequence";
-
-            return DataCommand.Find<IDataTableColumn>(connectionString, sql, ReadColumn);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Ingres
+{
+    partial class IngresSchemaLoader
+    {
+        protected virtual string GetFullType(IDataTableColumn column)
+        {
+            switch (column.SqlType.ToLower())
+            {
+            case "c":
+            case "char":
+            case "nchar":
+            case "varchar":
+            case "nvarchar":
+            case "long varchar":
+            case "text":
+            case "integer":
+                return column.SqlType + "(" + column.Length + ")";
+
+            case "decimal":
+                return column.SqlType + "(" + column.Length + ", " + column.Scale + ")";
+
+            default:
+                return column.SqlType;
+            }
+        }
+
+        protected virtual IDataTableColumn ReadColumn(IDataRecord rdr)
+        {
+            var column = new DataTableColumn();
+            int field = 0;
+            column.TableSchema = rdr.GetAsString(field++).Trim();
+            column.TableName = rdr.GetAsString(field++).Trim();
+            column.ColumnName = rdr.GetAsString(field++).Trim();
+            string nullableStr = rdr.GetAsString(field++);
+            column.Nullable = nullableStr == "Y";
+            column.SqlType = rdr.GetAsString(field++).Trim();
+            column.DefaultValue = rdr.GetAsString(field++);
+            column.Generated = column.DefaultValue != null && column.DefaultValue.StartsWith("next value for");
+
+            column.Length = rdr.GetAsNullableNumeric<long>(field++);
+            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
+            column.FullType = GetFullType(column);
+            return column;
+        }
+
+        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
+        {
+            const string sql = @"SELECT t.table_owner, t.table_name, column_name, " + 
+                "column_nulls, column_datatype, column_default_val, " + 
+                "column_length, column_scale " + 
+                "FROM iicolumns c join iitables t on " + 
+                "(c.table_name=t.table_name and c.table_owner=t.table_owner) " + 
+                "WHERE t.table_owner <> '$ingres' and t.table_type in ('T', 'V') " + 
+                "AND t.table_name NOT LIKE 'ii%' " + 
+                "ORDER BY column_sequence";
+
+            return DataCommand.Find<IDataTableColumn>(connectionString, sql, ReadColumn);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.Constraints.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.Constraints.cs
@@ -1,151 +1,151 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-
-namespace DbLinq.Ingres
-{
-    partial class IngresSchemaLoader
-    {
-        /// <summary>
-        /// row data from tables table_constraints, constraint_column_usage
-        /// </summary>
-        protected class DataConstraint
-        {
-            public string TableSchema;
-            public string TableName;
-
-            /// <summary>
-            /// P = PRIMARY KEY; R = FOREIGN KEY
-            /// </summary>
-            public string ConstraintType;
-
-            public override string ToString()
-            {
-
-                return (ConstraintType == "P" ?
-                    "PK(" + TableName + "." + ColumnName + ")"
-                        :
-                    "FK(" + TableName + "." + ColumnName + " => " + ReferencedTableName + "." + ReferencedColumnName + ")");
-            }
-
-            public string ConstraintName;
-
-            /*
-            public string[] column_name_primaries
-            {
-                get
-                {
-                    string[] tmp = TextSegment
-                        .Replace("PRIMARY KEY(", "")
-                        .Replace(")", "")
-                        .Split(',');
-                    for (int i = 0; i < tmp.Length; i++)
-                    {
-                        tmp[i] = tmp[i].Trim();
-                        tmp[i] = tmp[i].Replace("\"", "");
-                    }
-                    return tmp;
-                }
-            }
-             */
-
-            //public string[] column_name_primaries = new string[] { "", "" };
-
-            public string ColumnName;
-
-            public string ReferencedColumnName;
-
-            public string ReferencedTableSchema;
-
-            public string ReferencedTableName;
-
-        }
-
-        protected virtual DataConstraint ReadContraint(IDataReader rdr)
-        {
-            var constraint = new DataConstraint();
-            int field = 0;
-            constraint.ConstraintType = rdr.GetString(field++).Trim();
-            constraint.ConstraintName = rdr.GetString(field++).Trim();
-            constraint.TableSchema = rdr.GetString(field++).Trim();
-            constraint.TableName = rdr.GetString(field++).Trim();
-            constraint.ColumnName = rdr.GetString(field++).Trim();
-            constraint.ReferencedTableSchema = rdr.GetString(field++).Trim();
-            constraint.ReferencedTableName = rdr.GetString(field++).Trim();
-            constraint.ReferencedColumnName = rdr.GetString(field++).Trim();
-            return constraint;
-        }
-
-        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
-        {
-            // picrap -> Thomas: I switched the FK orders without really understanding why
-            //                   because relations were inversed
-            string sql = @"
-                SELECT DISTINCT 
-		                c.constraint_type as constraint_type,
-		                c.constraint_name as constraint_name, 
-                        k.schema_name as schema_name,
-                        k.table_name as table_name,
-		                k.column_name AS column_name,
-                        '' as referenced_schema_name,
-                        '' as referenced_table_name,
-                        '' as referenced_column_name
-                FROM 
-		                iiconstraints c, 
-		                iikeys k 
-                WHERE 
-		                k.constraint_name = c.constraint_name AND 
-		                c.constraint_type = 'P'
-                UNION
-                SELECT DISTINCT
-		                c.constraint_type as constraint_type,
-                        squeeze(f.table_name) || '_' || p.constraint_name as constraint_name,
-                        f.schema_name as referenced_schema_name,
-                        f.table_name as referenced_table_name,
-                        f.column_name as referenced_column_name,
-                        p.schema_name as schema_name,
-                        p.table_name as table_name,
-                        p.column_name as column_name
-                FROM
-                        iikeys p,
-                        iiconstraints c,
-                        iiref_constraints rc,
-                        iikeys f
-                WHERE
-                        c.constraint_type = 'R' and
-                        c.constraint_name = rc.ref_constraint_name AND
-                        p.constraint_name = rc.unique_constraint_name AND
-                        f.constraint_name = rc.ref_constraint_name AND
-                        p.key_position = f.key_position
-                ";
-
-            return DataCommand.Find<DataConstraint>(conn, sql, ReadContraint);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+
+namespace DbLinq.Ingres
+{
+    partial class IngresSchemaLoader
+    {
+        /// <summary>
+        /// row data from tables table_constraints, constraint_column_usage
+        /// </summary>
+        protected class DataConstraint
+        {
+            public string TableSchema;
+            public string TableName;
+
+            /// <summary>
+            /// P = PRIMARY KEY; R = FOREIGN KEY
+            /// </summary>
+            public string ConstraintType;
+
+            public override string ToString()
+            {
+
+                return (ConstraintType == "P" ?
+                    "PK(" + TableName + "." + ColumnName + ")"
+                        :
+                    "FK(" + TableName + "." + ColumnName + " => " + ReferencedTableName + "." + ReferencedColumnName + ")");
+            }
+
+            public string ConstraintName;
+
+            /*
+            public string[] column_name_primaries
+            {
+                get
+                {
+                    string[] tmp = TextSegment
+                        .Replace("PRIMARY KEY(", "")
+                        .Replace(")", "")
+                        .Split(',');
+                    for (int i = 0; i < tmp.Length; i++)
+                    {
+                        tmp[i] = tmp[i].Trim();
+                        tmp[i] = tmp[i].Replace("\"", "");
+                    }
+                    return tmp;
+                }
+            }
+             */
+
+            //public string[] column_name_primaries = new string[] { "", "" };
+
+            public string ColumnName;
+
+            public string ReferencedColumnName;
+
+            public string ReferencedTableSchema;
+
+            public string ReferencedTableName;
+
+        }
+
+        protected virtual DataConstraint ReadContraint(IDataReader rdr)
+        {
+            var constraint = new DataConstraint();
+            int field = 0;
+            constraint.ConstraintType = rdr.GetString(field++).Trim();
+            constraint.ConstraintName = rdr.GetString(field++).Trim();
+            constraint.TableSchema = rdr.GetString(field++).Trim();
+            constraint.TableName = rdr.GetString(field++).Trim();
+            constraint.ColumnName = rdr.GetString(field++).Trim();
+            constraint.ReferencedTableSchema = rdr.GetString(field++).Trim();
+            constraint.ReferencedTableName = rdr.GetString(field++).Trim();
+            constraint.ReferencedColumnName = rdr.GetString(field++).Trim();
+            return constraint;
+        }
+
+        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
+        {
+            // picrap -> Thomas: I switched the FK orders without really understanding why
+            //                   because relations were inversed
+            string sql = @"
+                SELECT DISTINCT 
+		                c.constraint_type as constraint_type,
+		                c.constraint_name as constraint_name, 
+                        k.schema_name as schema_name,
+                        k.table_name as table_name,
+		                k.column_name AS column_name,
+                        '' as referenced_schema_name,
+                        '' as referenced_table_name,
+                        '' as referenced_column_name
+                FROM 
+		                iiconstraints c, 
+		                iikeys k 
+                WHERE 
+		                k.constraint_name = c.constraint_name AND 
+		                c.constraint_type = 'P'
+                UNION
+                SELECT DISTINCT
+		                c.constraint_type as constraint_type,
+                        squeeze(f.table_name) || '_' || p.constraint_name as constraint_name,
+                        f.schema_name as referenced_schema_name,
+                        f.table_name as referenced_table_name,
+                        f.column_name as referenced_column_name,
+                        p.schema_name as schema_name,
+                        p.table_name as table_name,
+                        p.column_name as column_name
+                FROM
+                        iikeys p,
+                        iiconstraints c,
+                        iiref_constraints rc,
+                        iikeys f
+                WHERE
+                        c.constraint_type = 'R' and
+                        c.constraint_name = rc.ref_constraint_name AND
+                        p.constraint_name = rc.unique_constraint_name AND
+                        f.constraint_name = rc.ref_constraint_name AND
+                        p.key_position = f.key_position
+                ";
+
+            return DataCommand.Find<DataConstraint>(conn, sql, ReadContraint);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.StoredProcedures.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.StoredProcedures.cs
@@ -1,68 +1,68 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using DbLinq.Util;
-
-namespace DbLinq.Ingres
-{
-    partial class IngresSchemaLoader
-    {
-        /// <summary>
-        /// represents one row from pg_proc table
-        /// </summary>
-        protected class DataStoredProcedure
-        {
-            public string procedure_name;
-            public string procedure_owner;
-            public string text_segment;
-
-            public override string ToString() { return "Ing_Proc " + procedure_name; }
-        }
-
-        protected virtual DataStoredProcedure ReadProcedure(IDataReader rdr)
-        {
-            DataStoredProcedure procedure = new DataStoredProcedure();
-            int field = 0;
-            procedure.procedure_name = rdr.GetAsString(field++);
-            procedure.procedure_owner = rdr.GetAsString(field++);
-            procedure.text_segment = rdr.GetAsString(field++);
-            return procedure;
-        }
-
-        protected virtual List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
-        {
-            string sql = @"select procedure_name, procedure_owner, text_segment " +
-                "from iiprocedures where system_use='U' and " +
-                "procedure_owner!='$ingres' and text_sequence=1";
-
-            return DataCommand.Find<DataStoredProcedure>(conn, sql, ":db", db, ReadProcedure);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using DbLinq.Util;
+
+namespace DbLinq.Ingres
+{
+    partial class IngresSchemaLoader
+    {
+        /// <summary>
+        /// represents one row from pg_proc table
+        /// </summary>
+        protected class DataStoredProcedure
+        {
+            public string procedure_name;
+            public string procedure_owner;
+            public string text_segment;
+
+            public override string ToString() { return "Ing_Proc " + procedure_name; }
+        }
+
+        protected virtual DataStoredProcedure ReadProcedure(IDataReader rdr)
+        {
+            DataStoredProcedure procedure = new DataStoredProcedure();
+            int field = 0;
+            procedure.procedure_name = rdr.GetAsString(field++);
+            procedure.procedure_owner = rdr.GetAsString(field++);
+            procedure.text_segment = rdr.GetAsString(field++);
+            return procedure;
+        }
+
+        protected virtual List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
+        {
+            string sql = @"select procedure_name, procedure_owner, text_segment " +
+                "from iiprocedures where system_use='U' and " +
+                "procedure_owner!='$ingres' and text_sequence=1";
+
+            return DataCommand.Find<DataStoredProcedure>(conn, sql, ":db", db, ReadProcedure);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.Tables.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.Tables.cs
@@ -1,55 +1,55 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Ingres
-{
-#if !MONO_STRICT
-    public
-#endif
-    partial class IngresSchemaLoader
-    {
-        protected override IDataName ReadDataNameAndSchema(IDataRecord dataRecord)
-        {
-            var dataName = new DataName { Name = dataRecord.GetAsString(0).TrimEnd(), Schema = dataRecord.GetAsString(1).TrimEnd() };
-            return dataName;
-        }
-
-        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
-        {
-            // note: the ReadDataNameAndSchema relies on information order
-            const string sql = @"SELECT table_name, table_owner FROM iitables " + 
-                "WHERE table_owner <> '$ingres' " + 
-                "AND table_type in ('T', 'V') " + 
-                "AND table_name NOT LIKE 'ii%'";
-
-            return DataCommand.Find<IDataName>(connectionString, sql, ReadDataNameAndSchema);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Ingres
+{
+#if !MONO_STRICT
+    public
+#endif
+    partial class IngresSchemaLoader
+    {
+        protected override IDataName ReadDataNameAndSchema(IDataRecord dataRecord)
+        {
+            var dataName = new DataName { Name = dataRecord.GetAsString(0).TrimEnd(), Schema = dataRecord.GetAsString(1).TrimEnd() };
+            return dataName;
+        }
+
+        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
+        {
+            // note: the ReadDataNameAndSchema relies on information order
+            const string sql = @"SELECT table_name, table_owner FROM iitables " + 
+                "WHERE table_owner <> '$ingres' " + 
+                "AND table_type in ('T', 'V') " + 
+                "AND table_name NOT LIKE 'ii%'";
+
+            return DataCommand.Find<IDataName>(connectionString, sql, ReadDataNameAndSchema);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSchemaLoader.cs
@@ -1,117 +1,117 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Ingres
-{
-#if !MONO_STRICT
-    public
-#endif
-    partial class IngresSchemaLoader : SchemaLoader
-    {
-        private readonly Vendor.IVendor vendor = new IngresVendor();
-        public override Vendor.IVendor Vendor { get { return vendor; } set { } }
-
-        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
-        {
-            //TableSorter.Sort(tables, constraints); //sort tables - parents first
-
-            var foreignKeys = ReadConstraints(conn, schemaName.DbName);
-
-            foreach (DataConstraint keyColRow in foreignKeys)
-            {
-                //find my table:
-                string constraintFullDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
-                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => constraintFullDbName == t.Name);
-                if (table == null)
-                {
-                    WriteErrorLine("ERROR L138: Table '"
-                                              + keyColRow.TableName
-                                              + "' not found for column "
-                                              + keyColRow.ColumnName);
-                    continue;
-                }
-
-                if (keyColRow.ConstraintType.Equals("P")) //'PRIMARY KEY'
-                {
-                    //foreach (string pk_name in keyColRow.column_name_primaries)
-                    //{
-                    DbLinq.Schema.Dbml.Column primaryKeyCol = table.Type.Columns.First(c => c.Name == keyColRow.ColumnName);
-                    primaryKeyCol.IsPrimaryKey = true;
-                    //}
-                    continue;
-                }
-
-                if (keyColRow.ConstraintType.Equals("R")) //'FOREIGN KEY'
-                {
-                    // This is very bad...
-                    if (!names.ColumnsNames[keyColRow.ReferencedTableName].ContainsKey(keyColRow.ReferencedColumnName))
-                        continue;
-
-                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName,
-                                   keyColRow.TableSchema,
-                                   keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName,
-                                   keyColRow.ReferencedTableSchema,
-                                   keyColRow.ConstraintName, nameFormat, names);
-
-                }
-
-            }
-        }
-
-        protected override System.Type MapDbType(string columnName, IDataType dataType)
-        {
-            switch (dataType.SqlType.ToLower())
-            {
-            case "float":
-                return typeof(Double);
-            case "integer":
-                switch (dataType.Length)
-                {
-                case 1:
-                    return typeof(Byte);
-                case 2:
-                    return typeof(Int16);
-                case 4:
-                    return typeof(Int32);
-                case 8:
-                    return typeof(Int64);
-                }
-                return MapDbType(columnName, null);
-            default:
-                return base.MapDbType(columnName, dataType);
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Ingres
+{
+#if !MONO_STRICT
+    public
+#endif
+    partial class IngresSchemaLoader : SchemaLoader
+    {
+        private readonly Vendor.IVendor vendor = new IngresVendor();
+        public override Vendor.IVendor Vendor { get { return vendor; } set { } }
+
+        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
+        {
+            //TableSorter.Sort(tables, constraints); //sort tables - parents first
+
+            var foreignKeys = ReadConstraints(conn, schemaName.DbName);
+
+            foreach (DataConstraint keyColRow in foreignKeys)
+            {
+                //find my table:
+                string constraintFullDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
+                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => constraintFullDbName == t.Name);
+                if (table == null)
+                {
+                    WriteErrorLine("ERROR L138: Table '"
+                                              + keyColRow.TableName
+                                              + "' not found for column "
+                                              + keyColRow.ColumnName);
+                    continue;
+                }
+
+                if (keyColRow.ConstraintType.Equals("P")) //'PRIMARY KEY'
+                {
+                    //foreach (string pk_name in keyColRow.column_name_primaries)
+                    //{
+                    DbLinq.Schema.Dbml.Column primaryKeyCol = table.Type.Columns.First(c => c.Name == keyColRow.ColumnName);
+                    primaryKeyCol.IsPrimaryKey = true;
+                    //}
+                    continue;
+                }
+
+                if (keyColRow.ConstraintType.Equals("R")) //'FOREIGN KEY'
+                {
+                    // This is very bad...
+                    if (!names.ColumnsNames[keyColRow.ReferencedTableName].ContainsKey(keyColRow.ReferencedColumnName))
+                        continue;
+
+                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName,
+                                   keyColRow.TableSchema,
+                                   keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName,
+                                   keyColRow.ReferencedTableSchema,
+                                   keyColRow.ConstraintName, nameFormat, names);
+
+                }
+
+            }
+        }
+
+        protected override System.Type MapDbType(string columnName, IDataType dataType)
+        {
+            switch (dataType.SqlType.ToLower())
+            {
+            case "float":
+                return typeof(Double);
+            case "integer":
+                switch (dataType.Length)
+                {
+                case 1:
+                    return typeof(Byte);
+                case 2:
+                    return typeof(Int16);
+                case 4:
+                    return typeof(Int32);
+                case 8:
+                    return typeof(Int64);
+                }
+                return MapDbType(columnName, null);
+            default:
+                return base.MapDbType(columnName, dataType);
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresSqlProvider.cs
@@ -1,109 +1,109 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Ingres
-{
-#if !MONO_STRICT
-    public
-#endif
-    class IngresSqlProvider : SqlProvider
-    {
-        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
-        {
-            // no parameters? no need to get them back
-            if (outputParameters.Count == 0)
-                return "";
-            // otherwise we keep track of the new values
-            return SqlStatement.Format("SELECT {0}",
-                SqlStatement.Join(", ", (from outputExpression in outputExpressions
-                                         select outputExpression.Replace("next value", "current value", true)).ToArray())
-                );
-        }
-		
-		public override string GetTableAlias (string nameBase)
-		{
-			return nameBase + "$";
-		}
-		
-		public override SqlStatement GetLiteral (bool literal)
-		{
-			return literal == true ? "'Y'" : "'N'";
-		}
-
-		
-        protected override SqlStatement GetLiteralCount(SqlStatement a)
-        {
-            return "COUNT(*)";
-        }
-
-        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
-        {
-            return string.Format("LOWER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
-        {
-            return string.Format("UPPER({0})", a);
-        }
-
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
-        {
-            // return string.Format("SELECT FIRST {0} FROM ({1})", limit, select);
-            var trimSelect = "SELECT ";
-            if (select.Count > 0 && select[0].Sql.StartsWith(trimSelect))
-            {
-                var selectBuilder = new SqlStatementBuilder(select);
-                var remaining = select[0].Sql.Substring(trimSelect.Length);
-                selectBuilder.Parts[0] = new SqlLiteralPart(remaining);
-                return SqlStatement.Format("SELECT FIRST {0} {1}", limit, selectBuilder.ToSqlStatement());
-            }
-            throw new ArgumentException("Invalid SELECT format");
-        }
-
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
-        {
-            // Ingres 9.2 and above support offset clauses now
-            return SqlStatement.Format("{0} OFFSET {1}", GetLiteralLimit(select, limit), offset);
-        }
-
-        public override string GetParameterName(string nameBase)
-        {
-            return (":" + nameBase).ToLower();
-        }
-
-        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
-        {
-            // This needs to be bracketed in case subsequent functions are called upon it
-            return SqlStatement.Format("({0} || {1})", a, b);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Ingres
+{
+#if !MONO_STRICT
+    public
+#endif
+    class IngresSqlProvider : SqlProvider
+    {
+        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
+        {
+            // no parameters? no need to get them back
+            if (outputParameters.Count == 0)
+                return "";
+            // otherwise we keep track of the new values
+            return SqlStatement.Format("SELECT {0}",
+                SqlStatement.Join(", ", (from outputExpression in outputExpressions
+                                         select outputExpression.Replace("next value", "current value", true)).ToArray())
+                );
+        }
+		
+		public override string GetTableAlias (string nameBase)
+		{
+			return nameBase + "$";
+		}
+		
+		public override SqlStatement GetLiteral (bool literal)
+		{
+			return literal == true ? "'Y'" : "'N'";
+		}
+
+		
+        protected override SqlStatement GetLiteralCount(SqlStatement a)
+        {
+            return "COUNT(*)";
+        }
+
+        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
+        {
+            return string.Format("LOWER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
+        {
+            return string.Format("UPPER({0})", a);
+        }
+
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
+        {
+            // return string.Format("SELECT FIRST {0} FROM ({1})", limit, select);
+            var trimSelect = "SELECT ";
+            if (select.Count > 0 && select[0].Sql.StartsWith(trimSelect))
+            {
+                var selectBuilder = new SqlStatementBuilder(select);
+                var remaining = select[0].Sql.Substring(trimSelect.Length);
+                selectBuilder.Parts[0] = new SqlLiteralPart(remaining);
+                return SqlStatement.Format("SELECT FIRST {0} {1}", limit, selectBuilder.ToSqlStatement());
+            }
+            throw new ArgumentException("Invalid SELECT format");
+        }
+
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
+        {
+            // Ingres 9.2 and above support offset clauses now
+            return SqlStatement.Format("{0} OFFSET {1}", GetLiteralLimit(select, limit), offset);
+        }
+
+        public override string GetParameterName(string nameBase)
+        {
+            return (":" + nameBase).ToLower();
+        }
+
+        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
+        {
+            // This needs to be bracketed in case subsequent functions are called upon it
+            return SqlStatement.Format("({0} || {1})", a, b);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/IngresVendor.cs
@@ -1,248 +1,248 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Linq;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Text;
-using DbLinq.Data.Linq.SqlClient;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-#if MONO_STRICT
-using DataContext = System.Data.Linq.DataContext;
-#else
-using DataContext = DbLinq.Data.Linq.DataContext;
-#endif
-
-namespace DbLinq.Ingres
-{
-    /// <summary>
-    /// Ingres - specific code.
-    /// </summary>
-    [Vendor(typeof(IngresProvider))]
-#if !MONO_STRICT
-    public
-#endif
-    class IngresVendor : Vendor.Implementation.Vendor
-    {
-        public override string VendorName { get { return "Ingres"; } }
-
-        protected readonly IngresSqlProvider sqlProvider = new IngresSqlProvider();
-        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
-
-        //private string lastIdExpression = null;
-
-        private bool isReplaceable(IDbDataParameter param)
-        {
-            switch (param.DbType)
-            {
-            case DbType.String:
-            case DbType.Int16:
-            case DbType.Int32:
-            case DbType.Int64:
-            case DbType.Double:
-                return true;
-            }
-            return false;
-        }
-
-        private string getParamValueAsString(IDbDataParameter param)
-        {
-            switch (param.DbType)
-            {
-            case DbType.String:
-                return " '" + param.Value.ToString() + "' ";
-            case DbType.Int16:
-            case DbType.Int32:
-            case DbType.Int64:
-            case DbType.Double:
-                return param.Value.ToString();
-            }
-            throw new Exception("Not prepared to convert " + param.DbType.ToString());
-        }
-
-        protected void SetParameterType(IDbDataParameter parameter, PropertyInfo property, string literal)
-        {
-            object dbType = Enum.Parse(property.PropertyType, literal);
-            property.GetSetMethod().Invoke(parameter, new object[] { dbType });
-        }
-
-        protected void SetParameterType(IDbDataParameter parameter, string literal)
-        {
-            SetParameterType(parameter, parameter.GetType().GetProperty("IngresDbType"), literal);
-        }
-
-        /// <summary>
-        /// call mysql stored proc or stored function, 
-        /// optionally return DataSet, and collect return params.
-        /// </summary>
-        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
-                                                                 , params object[] inputValues)
-        {
-            if (method == null)
-                throw new ArgumentNullException("L56 Null 'method' parameter");
-
-            //check to make sure there is exactly one [FunctionEx]? that's below.
-            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
-            var functionAttrib = context.Mapping.GetFunction(method);
-
-            ParameterInfo[] paramInfos = method.GetParameters();
-            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
-            //if (numRequiredParams != inputValues.Length)
-            //    throw new ArgumentException("L161 Argument count mismatch");
-
-            string sp_name = functionAttrib.MappedName;
-
-            using (IDbCommand command = context.Connection.CreateCommand())
-            {
-                command.CommandText = sp_name;
-                //MySqlCommand command = new MySqlCommand("select hello0()");
-                int currInputIndex = 0;
-
-                List<string> paramNames = new List<string>();
-                for (int i = 0; i < paramInfos.Length; i++)
-                {
-                    ParameterInfo paramInfo = paramInfos[i];
-
-                    //TODO: check to make sure there is exactly one [Parameter]?
-                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
-
-                    //string paramName = "?" + paramAttrib.Name; //eg. '?param1' MYSQL
-                    string paramName = ":" + paramAttrib.Name; //eg. '?param1' PostgreSQL
-                    paramNames.Add(paramName);
-
-                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
-                    //MySqlDbType dbType = MySqlTypeConversions.ParseType(paramAttrib.DbType);
-                    IDbDataParameter cmdParam = command.CreateParameter();
-                    cmdParam.ParameterName = paramName;
-                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
-                    if (direction == ParameterDirection.Input || direction == ParameterDirection.InputOutput)
-                    {
-                        object inputValue = inputValues[currInputIndex++];
-                        cmdParam.Value = inputValue;
-                    }
-                    else
-                    {
-                        cmdParam.Value = null;
-                    }
-                    cmdParam.Direction = direction;
-                    command.Parameters.Add(cmdParam);
-                }
-
-                if (!functionAttrib.IsComposable)
-                {
-                    //procedures: under the hood, this seems to prepend 'CALL '
-                    command.CommandType = System.Data.CommandType.StoredProcedure;
-                }
-                else
-                {
-                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
-                    string cmdText = "SELECT " + command.CommandText + "($args)";
-                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
-                    command.CommandText = cmdText;
-                }
-
-                if (method.ReturnType == typeof(DataSet))
-                {
-                    //unknown shape of resultset:
-                    System.Data.DataSet dataSet = new DataSet();
-                    IDbDataAdapter adapter = CreateDataAdapter(context);
-                    adapter.SelectCommand = command;
-                    adapter.Fill(dataSet);
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(dataSet, outParamValues.ToArray());
-                }
-                else
-                {
-                    object obj = command.ExecuteScalar();
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(obj, outParamValues.ToArray());
-                }
-            }
-        }
-
-        static ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
-        {
-            //strange hack to determine what's a ref, out parameter:
-            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
-            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
-            if (paramInfo.IsOut)
-                return ParameterDirection.Output;
-            if (hasAmpersand)
-                return ParameterDirection.InputOutput;
-            return ParameterDirection.Input;
-        }
-
-        /// <summary>
-        /// Collect all Out or InOut param values, casting them to the correct .net type.
-        /// </summary>
-        static List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
-        {
-            List<object> outParamValues = new List<object>();
-            //Type type_t = typeof(T);
-            int i = -1;
-            foreach (IDbDataParameter param in paramSet)
-            {
-                i++;
-                if (param.Direction == ParameterDirection.Input)
-                {
-                    outParamValues.Add("unused");
-                    continue;
-                }
-
-                object val = param.Value;
-                Type desired_type = paramInfos[i].ParameterType;
-
-                if (desired_type.Name.EndsWith("&"))
-                {
-                    //for ref and out parameters, we need to tweak ref types, e.g.
-                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                    string fullName1 = desired_type.AssemblyQualifiedName;
-                    string fullName2 = fullName1.Replace("&", "");
-                    desired_type = Type.GetType(fullName2);
-                }
-                try
-                {
-                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
-                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
-                    //object val2 = DbLinq.Util.FieldUtils.CastValue(val, desired_type);
-                    object val2 = TypeConvert.To(val, desired_type);
-                    outParamValues.Add(val2);
-                }
-                catch (Exception ex)
-                {
-                    //fails with 'System.Decimal cannot be converted to Int32'
-                    Console.WriteLine("CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
-                }
-            }
-            return outParamValues;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Linq;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Text;
+using DbLinq.Data.Linq.SqlClient;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+#if MONO_STRICT
+using DataContext = System.Data.Linq.DataContext;
+#else
+using DataContext = DbLinq.Data.Linq.DataContext;
+#endif
+
+namespace DbLinq.Ingres
+{
+    /// <summary>
+    /// Ingres - specific code.
+    /// </summary>
+    [Vendor(typeof(IngresProvider))]
+#if !MONO_STRICT
+    public
+#endif
+    class IngresVendor : Vendor.Implementation.Vendor
+    {
+        public override string VendorName { get { return "Ingres"; } }
+
+        protected readonly IngresSqlProvider sqlProvider = new IngresSqlProvider();
+        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
+
+        //private string lastIdExpression = null;
+
+        private bool isReplaceable(IDbDataParameter param)
+        {
+            switch (param.DbType)
+            {
+            case DbType.String:
+            case DbType.Int16:
+            case DbType.Int32:
+            case DbType.Int64:
+            case DbType.Double:
+                return true;
+            }
+            return false;
+        }
+
+        private string getParamValueAsString(IDbDataParameter param)
+        {
+            switch (param.DbType)
+            {
+            case DbType.String:
+                return " '" + param.Value.ToString() + "' ";
+            case DbType.Int16:
+            case DbType.Int32:
+            case DbType.Int64:
+            case DbType.Double:
+                return param.Value.ToString();
+            }
+            throw new Exception("Not prepared to convert " + param.DbType.ToString());
+        }
+
+        protected void SetParameterType(IDbDataParameter parameter, PropertyInfo property, string literal)
+        {
+            object dbType = Enum.Parse(property.PropertyType, literal);
+            property.GetSetMethod().Invoke(parameter, new object[] { dbType });
+        }
+
+        protected void SetParameterType(IDbDataParameter parameter, string literal)
+        {
+            SetParameterType(parameter, parameter.GetType().GetProperty("IngresDbType"), literal);
+        }
+
+        /// <summary>
+        /// call mysql stored proc or stored function, 
+        /// optionally return DataSet, and collect return params.
+        /// </summary>
+        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
+                                                                 , params object[] inputValues)
+        {
+            if (method == null)
+                throw new ArgumentNullException("L56 Null 'method' parameter");
+
+            //check to make sure there is exactly one [FunctionEx]? that's below.
+            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
+            var functionAttrib = context.Mapping.GetFunction(method);
+
+            ParameterInfo[] paramInfos = method.GetParameters();
+            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
+            //if (numRequiredParams != inputValues.Length)
+            //    throw new ArgumentException("L161 Argument count mismatch");
+
+            string sp_name = functionAttrib.MappedName;
+
+            using (IDbCommand command = context.Connection.CreateCommand())
+            {
+                command.CommandText = sp_name;
+                //MySqlCommand command = new MySqlCommand("select hello0()");
+                int currInputIndex = 0;
+
+                List<string> paramNames = new List<string>();
+                for (int i = 0; i < paramInfos.Length; i++)
+                {
+                    ParameterInfo paramInfo = paramInfos[i];
+
+                    //TODO: check to make sure there is exactly one [Parameter]?
+                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
+
+                    //string paramName = "?" + paramAttrib.Name; //eg. '?param1' MYSQL
+                    string paramName = ":" + paramAttrib.Name; //eg. '?param1' PostgreSQL
+                    paramNames.Add(paramName);
+
+                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
+                    //MySqlDbType dbType = MySqlTypeConversions.ParseType(paramAttrib.DbType);
+                    IDbDataParameter cmdParam = command.CreateParameter();
+                    cmdParam.ParameterName = paramName;
+                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
+                    if (direction == ParameterDirection.Input || direction == ParameterDirection.InputOutput)
+                    {
+                        object inputValue = inputValues[currInputIndex++];
+                        cmdParam.Value = inputValue;
+                    }
+                    else
+                    {
+                        cmdParam.Value = null;
+                    }
+                    cmdParam.Direction = direction;
+                    command.Parameters.Add(cmdParam);
+                }
+
+                if (!functionAttrib.IsComposable)
+                {
+                    //procedures: under the hood, this seems to prepend 'CALL '
+                    command.CommandType = System.Data.CommandType.StoredProcedure;
+                }
+                else
+                {
+                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
+                    string cmdText = "SELECT " + command.CommandText + "($args)";
+                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
+                    command.CommandText = cmdText;
+                }
+
+                if (method.ReturnType == typeof(DataSet))
+                {
+                    //unknown shape of resultset:
+                    System.Data.DataSet dataSet = new DataSet();
+                    IDbDataAdapter adapter = CreateDataAdapter(context);
+                    adapter.SelectCommand = command;
+                    adapter.Fill(dataSet);
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(dataSet, outParamValues.ToArray());
+                }
+                else
+                {
+                    object obj = command.ExecuteScalar();
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(obj, outParamValues.ToArray());
+                }
+            }
+        }
+
+        static ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
+        {
+            //strange hack to determine what's a ref, out parameter:
+            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
+            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
+            if (paramInfo.IsOut)
+                return ParameterDirection.Output;
+            if (hasAmpersand)
+                return ParameterDirection.InputOutput;
+            return ParameterDirection.Input;
+        }
+
+        /// <summary>
+        /// Collect all Out or InOut param values, casting them to the correct .net type.
+        /// </summary>
+        static List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
+        {
+            List<object> outParamValues = new List<object>();
+            //Type type_t = typeof(T);
+            int i = -1;
+            foreach (IDbDataParameter param in paramSet)
+            {
+                i++;
+                if (param.Direction == ParameterDirection.Input)
+                {
+                    outParamValues.Add("unused");
+                    continue;
+                }
+
+                object val = param.Value;
+                Type desired_type = paramInfos[i].ParameterType;
+
+                if (desired_type.Name.EndsWith("&"))
+                {
+                    //for ref and out parameters, we need to tweak ref types, e.g.
+                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+                    string fullName1 = desired_type.AssemblyQualifiedName;
+                    string fullName2 = fullName1.Replace("&", "");
+                    desired_type = Type.GetType(fullName2);
+                }
+                try
+                {
+                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
+                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
+                    //object val2 = DbLinq.Util.FieldUtils.CastValue(val, desired_type);
+                    object val2 = TypeConvert.To(val, desired_type);
+                    outParamValues.Add(val2);
+                }
+                catch (Exception ex)
+                {
+                    //fails with 'System.Decimal cannot be converted to Int32'
+                    Console.WriteLine("CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
+                }
+            }
+            return outParamValues;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/Properties/AssemblyInfo.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq.PostgreSql")]
-[assembly: AssemblyDescription("DbLinq PostgreSQL vendor implementation")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("d393f4ff-9bb6-42ad-bb84-d207115f48b1")]
-
-[assembly: DbLinq]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq.PostgreSql")]
+[assembly: AssemblyDescription("DbLinq PostgreSQL vendor implementation")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d393f4ff-9bb6-42ad-bb84-d207115f48b1")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Ingres/Test/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Ingres/Test/TestBase.cs
@@ -1,52 +1,52 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        public const StringComparison stringComparisonType = StringComparison.Ordinal;
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new Ingres.Client.IngresCommand(sql, (Ingres.Client.IngresConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new Ingres.Client.IngresConnection(connectionString);
-        }
-
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.Ingres.IngresVendor();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        public const StringComparison stringComparisonType = StringComparison.Ordinal;
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new Ingres.Client.IngresCommand(sql, (Ingres.Client.IngresConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new Ingres.Client.IngresConnection(connectionString);
+        }
+
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.Ingres.IngresVendor();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlDataContext.cs
@@ -1,56 +1,56 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.MySql
-{
-#if !MONO_STRICT
-    public
-#endif
-    class MySqlDataContext : DataContext
-    {
-#if MYSQL_IS_REFERENCED
-        public MySqlDataContext(string connStr)
-            : base(new MySql.Data.MySqlClient.MySqlConnection(connStr), new MySqlVendor())
-        {
-        }
-#endif
-        public MySqlDataContext(IDbConnection conn)
-#if MONO_STRICT
-            : base(conn)
-#else
-            : base(conn, new MySqlVendor())
-#endif
-        {
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.MySql
+{
+#if !MONO_STRICT
+    public
+#endif
+    class MySqlDataContext : DataContext
+    {
+#if MYSQL_IS_REFERENCED
+        public MySqlDataContext(string connStr)
+            : base(new MySql.Data.MySqlClient.MySqlConnection(connStr), new MySqlVendor())
+        {
+        }
+#endif
+        public MySqlDataContext(IDbConnection conn)
+#if MONO_STRICT
+            : base(conn)
+#else
+            : base(conn, new MySqlVendor())
+#endif
+        {
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.Columns.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.Columns.cs
@@ -1,84 +1,84 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.MySql
-{
-    partial class MySqlSchemaLoader
-    {
-        protected virtual string FormatFullType(string fullType)
-        {
-            fullType = fullType.Replace("int(11)", "int") //remove some default sizes
-                .Replace("int(10) unsigned", "int unsigned")
-                .Replace("mediumint(8) unsigned", "mediumint unsigned")
-                .Replace("decimal(10,0)", "decimal")
-                ;
-            return fullType;
-        }
-
-        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
-        {
-            var column = new DataTableColumn();
-            int field = 0;
-            column.TableSchema = rdr.GetAsString(field++);
-            column.TableName = rdr.GetAsString(field++);
-            column.ColumnName = rdr.GetAsString(field++);
-            string nullableStr = rdr.GetAsString(field++);
-            column.Nullable = nullableStr == "YES";
-            column.SqlType = rdr.GetAsString(field++);
-            var extra = rdr.GetAsString(field++); 
-            column.Generated = extra == "auto_increment";
-            column.FullType = FormatFullType(rdr.GetAsString(field++));
-            column.Unsigned = column.FullType.Contains("unsigned");
-            string columnKey = rdr.GetAsString(field++);
-            column.PrimaryKey = columnKey == "PRI";
-            column.Length = rdr.GetAsNullableNumeric<long>(field++);
-            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
-            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
-            column.DefaultValue = rdr.GetAsString(field++);
-            return column;
-        }
-
-        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
-        {
-            const string sql = @"
-SELECT table_schema,table_name,column_name
-    ,is_nullable,data_type,extra,column_type
-    ,column_key,character_maximum_length,numeric_precision,numeric_scale,
-    column_default
-FROM information_schema.`COLUMNS`
-WHERE table_schema=?db";
-
-            return DataCommand.Find<IDataTableColumn>(connectionString, sql, "?db", databaseName, ReadColumn);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.MySql
+{
+    partial class MySqlSchemaLoader
+    {
+        protected virtual string FormatFullType(string fullType)
+        {
+            fullType = fullType.Replace("int(11)", "int") //remove some default sizes
+                .Replace("int(10) unsigned", "int unsigned")
+                .Replace("mediumint(8) unsigned", "mediumint unsigned")
+                .Replace("decimal(10,0)", "decimal")
+                ;
+            return fullType;
+        }
+
+        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
+        {
+            var column = new DataTableColumn();
+            int field = 0;
+            column.TableSchema = rdr.GetAsString(field++);
+            column.TableName = rdr.GetAsString(field++);
+            column.ColumnName = rdr.GetAsString(field++);
+            string nullableStr = rdr.GetAsString(field++);
+            column.Nullable = nullableStr == "YES";
+            column.SqlType = rdr.GetAsString(field++);
+            var extra = rdr.GetAsString(field++); 
+            column.Generated = extra == "auto_increment";
+            column.FullType = FormatFullType(rdr.GetAsString(field++));
+            column.Unsigned = column.FullType.Contains("unsigned");
+            string columnKey = rdr.GetAsString(field++);
+            column.PrimaryKey = columnKey == "PRI";
+            column.Length = rdr.GetAsNullableNumeric<long>(field++);
+            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
+            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
+            column.DefaultValue = rdr.GetAsString(field++);
+            return column;
+        }
+
+        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
+        {
+            const string sql = @"
+SELECT table_schema,table_name,column_name
+    ,is_nullable,data_type,extra,column_type
+    ,column_key,character_maximum_length,numeric_precision,numeric_scale,
+    column_default
+FROM information_schema.`COLUMNS`
+WHERE table_schema=?db";
+
+            return DataCommand.Find<IDataTableColumn>(connectionString, sql, "?db", databaseName, ReadColumn);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.Constraints.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.Constraints.cs
@@ -1,82 +1,82 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-
-namespace DbLinq.MySql
-{
-    partial class MySqlSchemaLoader
-    {
-        /// <summary>
-        /// represents one row from MySQL's information_schema.`Key_Column_Usage` table
-        /// </summary>
-        protected class DataConstraint
-        {
-            public string ConstraintName;
-            public string TableSchema;
-            public string TableName;
-            public string ColumnName;
-            public string ReferencedTableSchema;
-            public string ReferencedTableName;
-            public string ReferencedColumnName;
-
-            public override string ToString()
-            {
-                string detail = ConstraintName == "PRIMARY"
-                                    ? TableName + " PK"
-                                    : ConstraintName;
-                return "KeyColUsage " + detail;
-            }
-        }
-
-        protected virtual DataConstraint ReadConstraint(IDataReader rdr)
-        {
-            DataConstraint constraint = new DataConstraint();
-            int field = 0;
-            constraint.ConstraintName = rdr.GetAsString(field++);
-            constraint.TableSchema = rdr.GetAsString(field++);
-            constraint.TableName = rdr.GetAsString(field++);
-            constraint.ColumnName = rdr.GetAsString(field++);
-            constraint.ReferencedTableSchema = rdr.GetAsString(field++);
-            constraint.ReferencedTableName = rdr.GetAsString(field++);
-            constraint.ReferencedColumnName = rdr.GetAsString(field++);
-            return constraint;
-        }
-
-        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
-        {
-            string sql = @"
-SELECT constraint_name,table_schema,table_name
-    ,GROUP_CONCAT(column_name SEPARATOR ',') AS column_name,referenced_table_schema,referenced_table_name,GROUP_CONCAT(referenced_column_name SEPARATOR ',') AS referenced_column_name
-FROM information_schema.`KEY_COLUMN_USAGE`
-WHERE table_schema=?db GROUP BY constraint_name,table_schema,table_name,referenced_table_name";
-
-            return DataCommand.Find<DataConstraint>(conn, sql, "?db", db, ReadConstraint);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+
+namespace DbLinq.MySql
+{
+    partial class MySqlSchemaLoader
+    {
+        /// <summary>
+        /// represents one row from MySQL's information_schema.`Key_Column_Usage` table
+        /// </summary>
+        protected class DataConstraint
+        {
+            public string ConstraintName;
+            public string TableSchema;
+            public string TableName;
+            public string ColumnName;
+            public string ReferencedTableSchema;
+            public string ReferencedTableName;
+            public string ReferencedColumnName;
+
+            public override string ToString()
+            {
+                string detail = ConstraintName == "PRIMARY"
+                                    ? TableName + " PK"
+                                    : ConstraintName;
+                return "KeyColUsage " + detail;
+            }
+        }
+
+        protected virtual DataConstraint ReadConstraint(IDataReader rdr)
+        {
+            DataConstraint constraint = new DataConstraint();
+            int field = 0;
+            constraint.ConstraintName = rdr.GetAsString(field++);
+            constraint.TableSchema = rdr.GetAsString(field++);
+            constraint.TableName = rdr.GetAsString(field++);
+            constraint.ColumnName = rdr.GetAsString(field++);
+            constraint.ReferencedTableSchema = rdr.GetAsString(field++);
+            constraint.ReferencedTableName = rdr.GetAsString(field++);
+            constraint.ReferencedColumnName = rdr.GetAsString(field++);
+            return constraint;
+        }
+
+        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
+        {
+            string sql = @"
+SELECT constraint_name,table_schema,table_name
+    ,GROUP_CONCAT(column_name SEPARATOR ',') AS column_name,referenced_table_schema,referenced_table_name,GROUP_CONCAT(referenced_column_name SEPARATOR ',') AS referenced_column_name
+FROM information_schema.`KEY_COLUMN_USAGE`
+WHERE table_schema=?db GROUP BY constraint_name,table_schema,table_name,referenced_table_name";
+
+            return DataCommand.Find<DataConstraint>(conn, sql, "?db", db, ReadConstraint);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.StoredProcedures.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.StoredProcedures.cs
@@ -1,80 +1,80 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-
-namespace DbLinq.MySql
-{
-    partial class MySqlSchemaLoader
-    {
-        /// <summary>
-        /// represents one row from MySQL's MYSQL.PROC table
-        /// </summary>
-        public class DataStoredProcedure
-        {
-            public string db;
-            public string name;
-            public string type;
-            public string specific_name;
-            public string param_list;
-            public string returns;
-            public string body;
-
-            public override string ToString()
-            {
-                return "ProcRow " + name;
-            }
-        }
-
-        DataStoredProcedure ReadProcedure(IDataReader rdr)
-        {
-            DataStoredProcedure procedure = new DataStoredProcedure();
-            int field = 0;
-            procedure.db = rdr.GetAsString(field++);
-            procedure.name = rdr.GetAsString(field++);
-            procedure.type = rdr.GetAsString(field++);
-            procedure.specific_name = rdr.GetAsString(field++);
-
-            procedure.param_list = rdr.GetString(field++); // for some obscure reasons, GetAsString() doesn't work
-            procedure.returns = rdr.GetAsString(field++);
-            procedure.body = rdr.GetString(field++);
-            return procedure;
-        }
-
-        // We use mysql.PROC instead of information_schema.ROUTINES, because it saves us parsing of parameters.
-        // Note: higher permissions are required to access mysql.PROC.
-        public List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
-        {
-            string sql = @"
-SELECT db, name, type, specific_name, param_list, returns, body
-FROM mysql.proc
-WHERE db=?db AND type IN ('FUNCTION','PROCEDURE')";
-
-            return DataCommand.Find<DataStoredProcedure>(conn, sql, "?db", db.ToLower(), ReadProcedure);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+
+namespace DbLinq.MySql
+{
+    partial class MySqlSchemaLoader
+    {
+        /// <summary>
+        /// represents one row from MySQL's MYSQL.PROC table
+        /// </summary>
+        public class DataStoredProcedure
+        {
+            public string db;
+            public string name;
+            public string type;
+            public string specific_name;
+            public string param_list;
+            public string returns;
+            public string body;
+
+            public override string ToString()
+            {
+                return "ProcRow " + name;
+            }
+        }
+
+        DataStoredProcedure ReadProcedure(IDataReader rdr)
+        {
+            DataStoredProcedure procedure = new DataStoredProcedure();
+            int field = 0;
+            procedure.db = rdr.GetAsString(field++);
+            procedure.name = rdr.GetAsString(field++);
+            procedure.type = rdr.GetAsString(field++);
+            procedure.specific_name = rdr.GetAsString(field++);
+
+            procedure.param_list = rdr.GetString(field++); // for some obscure reasons, GetAsString() doesn't work
+            procedure.returns = rdr.GetAsString(field++);
+            procedure.body = rdr.GetString(field++);
+            return procedure;
+        }
+
+        // We use mysql.PROC instead of information_schema.ROUTINES, because it saves us parsing of parameters.
+        // Note: higher permissions are required to access mysql.PROC.
+        public List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
+        {
+            string sql = @"
+SELECT db, name, type, specific_name, param_list, returns, body
+FROM mysql.proc
+WHERE db=?db AND type IN ('FUNCTION','PROCEDURE')";
+
+            return DataCommand.Find<DataStoredProcedure>(conn, sql, "?db", db.ToLower(), ReadProcedure);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.Tables.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.Tables.cs
@@ -1,50 +1,50 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.MySql
-{
-#if !MONO_STRICT
-    public
-#endif
-    partial class MySqlSchemaLoader
-    {
-        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
-        {
-            // note: the ReadDataNameAndSchema relies on information order
-            const string sql = @"
-SELECT table_name, table_schema
-FROM information_schema.`TABLES`
-WHERE table_schema=?db";
-
-            return DataCommand.Find<IDataName>(connectionString, sql, "?db", databaseName, ReadDataNameAndSchema);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.MySql
+{
+#if !MONO_STRICT
+    public
+#endif
+    partial class MySqlSchemaLoader
+    {
+        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
+        {
+            // note: the ReadDataNameAndSchema relies on information order
+            const string sql = @"
+SELECT table_name, table_schema
+FROM information_schema.`TABLES`
+WHERE table_schema=?db";
+
+            return DataCommand.Find<IDataName>(connectionString, sql, "?db", databaseName, ReadDataNameAndSchema);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSchemaLoader.cs
@@ -1,188 +1,188 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.MySql
-{
-    partial class MySqlSchemaLoader : SchemaLoader
-    {
-        private readonly IVendor vendor = new MySqlVendor();
-        public override IVendor Vendor { get { return vendor; } set { } }
-
-        protected override TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
-        {
-            return CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat, WordsExtraction.FromDictionary);
-        }
-
-        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
-        {
-            var procs = ReadProcedures(conn, schemaName.DbName);
-
-            foreach (DataStoredProcedure proc in procs)
-            {
-                var procedureName = CreateProcedureName(proc.specific_name, proc.db, nameFormat);
-
-                var func = new Function();
-                func.Name = procedureName.DbName;
-                func.Method = procedureName.MethodName;
-                func.IsComposable = string.Compare(proc.type, "FUNCTION") == 0;
-                func.BodyContainsSelectStatement = proc.body != null
-                                                   && proc.body.IndexOf("select", StringComparison.OrdinalIgnoreCase) > -1;
-                ParseProcParams(proc, func);
-
-                schema.Functions.Add(func);
-            }
-        }
-
-        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
-        {
-            var constraints = ReadConstraints(conn, schemaName.DbName);
-
-            //sort tables - parents first (this is moving to SchemaPostprocess)
-            //TableSorter.Sort(tables, constraints); 
-
-            foreach (DataConstraint keyColRow in constraints)
-            {
-                //find my table:
-                string fullKeyDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
-                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => fullKeyDbName == t.Name);
-                if (table == null)
-                {
-                    bool ignoreCase = true;
-                    table = schema.Tables.FirstOrDefault(t => 0 == string.Compare(fullKeyDbName, t.Name, ignoreCase));
-                    if (table == null)
-                    {
-                        WriteErrorLine("ERROR L46: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
-                        continue;
-                    }
-                }
-
-                bool isForeignKey = keyColRow.ConstraintName != "PRIMARY"
-                                    && keyColRow.ReferencedTableName != null;
-
-                if (isForeignKey)
-                {
-                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
-                                   keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName, keyColRow.ReferencedTableSchema,
-                                   keyColRow.ConstraintName, nameFormat, names);
-                }
-
-            }
-        }
-
-        protected void ParseProcParams(DataStoredProcedure inputData, Function outputFunc)
-        {
-            string paramString = inputData.param_list;
-            if (string.IsNullOrEmpty(paramString))
-            {
-                //nothing to parse
-            }
-            else
-            {
-                string[] parts = paramString.Split(',');
-
-                foreach (string part in parts) //part='OUT param1 int'
-                {
-                    DbLinq.Schema.Dbml.Parameter paramObj = ParseParameterString(part);
-                    if (paramObj != null)
-                        outputFunc.Parameters.Add(paramObj);
-                }
-            }
-
-            if (!string.IsNullOrEmpty(inputData.returns))
-            {
-                var paramRet = new Return();
-                paramRet.DbType = inputData.returns;
-                paramRet.Type = ParseDbType(null, inputData.returns);
-                outputFunc.Return = paramRet;
-            }
-        }
-
-        /// <summary>
-        /// parse strings such as 'INOUT param2 INT' or 'param4 varchar ( 32 )'
-        /// </summary>
-        /// <param name="paramStr"></param>
-        /// <returns></returns>
-        protected DbLinq.Schema.Dbml.Parameter ParseParameterString(string param)
-        {
-            param = param.Trim();
-            var inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
-
-            if (param.StartsWith("IN", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
-                param = param.Substring(2).Trim();
-            }
-            if (param.StartsWith("INOUT", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.InOut;
-                param = param.Substring(5).Trim();
-            }
-            if (param.StartsWith("OUT", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.Out;
-                param = param.Substring(3).Trim();
-            }
-
-            int indxSpace = param.IndexOfAny(new char[] { ' ', '\t' });
-            if (indxSpace == -1)
-                return null; //cannot find space between varName and varType
-
-            string varName = param.Substring(0, indxSpace);
-            string varType = param.Substring(indxSpace + 1);
-
-            var paramObj = new Parameter();
-            paramObj.Direction = inOut;
-            paramObj.Name = varName;
-            paramObj.DbType = varType;
-            paramObj.Type = ParseDbType(varName, varType);
-
-            return paramObj;
-        }
-
-        static System.Text.RegularExpressions.Regex re_CHARSET = new System.Text.RegularExpressions.Regex(@" CHARSET \w+$");
-        /// <summary>
-        /// given 'CHAR(30)', return 'string'
-        /// </summary>
-        protected string ParseDbType(string columnName, string dbType1)
-        {
-            //strip 'CHARSET latin1' from the end
-            string dbType2 = re_CHARSET.Replace(dbType1, "");
-            var dataType = new DataType();
-            dataType.UnpackRawDbType(dbType2);
-            return MapDbType(columnName, dataType).ToString();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.MySql
+{
+    partial class MySqlSchemaLoader : SchemaLoader
+    {
+        private readonly IVendor vendor = new MySqlVendor();
+        public override IVendor Vendor { get { return vendor; } set { } }
+
+        protected override TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
+        {
+            return CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat, WordsExtraction.FromDictionary);
+        }
+
+        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
+        {
+            var procs = ReadProcedures(conn, schemaName.DbName);
+
+            foreach (DataStoredProcedure proc in procs)
+            {
+                var procedureName = CreateProcedureName(proc.specific_name, proc.db, nameFormat);
+
+                var func = new Function();
+                func.Name = procedureName.DbName;
+                func.Method = procedureName.MethodName;
+                func.IsComposable = string.Compare(proc.type, "FUNCTION") == 0;
+                func.BodyContainsSelectStatement = proc.body != null
+                                                   && proc.body.IndexOf("select", StringComparison.OrdinalIgnoreCase) > -1;
+                ParseProcParams(proc, func);
+
+                schema.Functions.Add(func);
+            }
+        }
+
+        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
+        {
+            var constraints = ReadConstraints(conn, schemaName.DbName);
+
+            //sort tables - parents first (this is moving to SchemaPostprocess)
+            //TableSorter.Sort(tables, constraints); 
+
+            foreach (DataConstraint keyColRow in constraints)
+            {
+                //find my table:
+                string fullKeyDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
+                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => fullKeyDbName == t.Name);
+                if (table == null)
+                {
+                    bool ignoreCase = true;
+                    table = schema.Tables.FirstOrDefault(t => 0 == string.Compare(fullKeyDbName, t.Name, ignoreCase));
+                    if (table == null)
+                    {
+                        WriteErrorLine("ERROR L46: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
+                        continue;
+                    }
+                }
+
+                bool isForeignKey = keyColRow.ConstraintName != "PRIMARY"
+                                    && keyColRow.ReferencedTableName != null;
+
+                if (isForeignKey)
+                {
+                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
+                                   keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName, keyColRow.ReferencedTableSchema,
+                                   keyColRow.ConstraintName, nameFormat, names);
+                }
+
+            }
+        }
+
+        protected void ParseProcParams(DataStoredProcedure inputData, Function outputFunc)
+        {
+            string paramString = inputData.param_list;
+            if (string.IsNullOrEmpty(paramString))
+            {
+                //nothing to parse
+            }
+            else
+            {
+                string[] parts = paramString.Split(',');
+
+                foreach (string part in parts) //part='OUT param1 int'
+                {
+                    DbLinq.Schema.Dbml.Parameter paramObj = ParseParameterString(part);
+                    if (paramObj != null)
+                        outputFunc.Parameters.Add(paramObj);
+                }
+            }
+
+            if (!string.IsNullOrEmpty(inputData.returns))
+            {
+                var paramRet = new Return();
+                paramRet.DbType = inputData.returns;
+                paramRet.Type = ParseDbType(null, inputData.returns);
+                outputFunc.Return = paramRet;
+            }
+        }
+
+        /// <summary>
+        /// parse strings such as 'INOUT param2 INT' or 'param4 varchar ( 32 )'
+        /// </summary>
+        /// <param name="paramStr"></param>
+        /// <returns></returns>
+        protected DbLinq.Schema.Dbml.Parameter ParseParameterString(string param)
+        {
+            param = param.Trim();
+            var inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
+
+            if (param.StartsWith("IN", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
+                param = param.Substring(2).Trim();
+            }
+            if (param.StartsWith("INOUT", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.InOut;
+                param = param.Substring(5).Trim();
+            }
+            if (param.StartsWith("OUT", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.Out;
+                param = param.Substring(3).Trim();
+            }
+
+            int indxSpace = param.IndexOfAny(new char[] { ' ', '\t' });
+            if (indxSpace == -1)
+                return null; //cannot find space between varName and varType
+
+            string varName = param.Substring(0, indxSpace);
+            string varType = param.Substring(indxSpace + 1);
+
+            var paramObj = new Parameter();
+            paramObj.Direction = inOut;
+            paramObj.Name = varName;
+            paramObj.DbType = varType;
+            paramObj.Type = ParseDbType(varName, varType);
+
+            return paramObj;
+        }
+
+        static System.Text.RegularExpressions.Regex re_CHARSET = new System.Text.RegularExpressions.Regex(@" CHARSET \w+$");
+        /// <summary>
+        /// given 'CHAR(30)', return 'string'
+        /// </summary>
+        protected string ParseDbType(string columnName, string dbType1)
+        {
+            //strip 'CHARSET latin1' from the end
+            string dbType2 = re_CHARSET.Replace(dbType1, "");
+            var dataType = new DataType();
+            dataType.UnpackRawDbType(dbType2);
+            return MapDbType(columnName, dataType).ToString();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlSqlProvider.cs
@@ -1,76 +1,76 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Util;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.MySql
-{
-#if !MONO_STRICT
-    public
-#endif
-    class MySqlSqlProvider : SqlProvider
-    {
-        public override string GetParameterName(string nameBase)
-        {
-            return string.Format("?{0}", nameBase);
-        }
-
-        protected override SqlStatement GetLiteralCount(SqlStatement a)
-        {
-            return "COUNT(*)";
-        }
-
-        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("CONCAT({0}, {1})", a, b);
-        }
-
-        public virtual string GetBulkInsert(string table, IList<string> columns, IList<IList<string>> valuesLists)
-        {
-            if (columns.Count == 0)
-                return string.Empty;
-
-            var insertBuilder = new StringBuilder("INSERT INTO ");
-            insertBuilder.Append(table);
-            insertBuilder.AppendFormat(" ({0})", string.Join(", ", columns.ToArray()));
-            insertBuilder.Append(" VALUES ");
-            var literalValuesLists = new List<string>();
-            foreach (var values in valuesLists)
-                literalValuesLists.Add(string.Format("({0})", string.Join(", ", values.ToArray())));
-            insertBuilder.Append(string.Join(", ", literalValuesLists.ToArray()));
-            return insertBuilder.ToString();
-        }
-
-        protected override char SafeNameStartQuote { get { return '`'; } }
-        protected override char SafeNameEndQuote { get { return '`'; } }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Util;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.MySql
+{
+#if !MONO_STRICT
+    public
+#endif
+    class MySqlSqlProvider : SqlProvider
+    {
+        public override string GetParameterName(string nameBase)
+        {
+            return string.Format("?{0}", nameBase);
+        }
+
+        protected override SqlStatement GetLiteralCount(SqlStatement a)
+        {
+            return "COUNT(*)";
+        }
+
+        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("CONCAT({0}, {1})", a, b);
+        }
+
+        public virtual string GetBulkInsert(string table, IList<string> columns, IList<IList<string>> valuesLists)
+        {
+            if (columns.Count == 0)
+                return string.Empty;
+
+            var insertBuilder = new StringBuilder("INSERT INTO ");
+            insertBuilder.Append(table);
+            insertBuilder.AppendFormat(" ({0})", string.Join(", ", columns.ToArray()));
+            insertBuilder.Append(" VALUES ");
+            var literalValuesLists = new List<string>();
+            foreach (var values in valuesLists)
+                literalValuesLists.Add(string.Format("({0})", string.Join(", ", values.ToArray())));
+            insertBuilder.Append(string.Join(", ", literalValuesLists.ToArray()));
+            return insertBuilder.ToString();
+        }
+
+        protected override char SafeNameStartQuote { get { return '`'; } }
+        protected override char SafeNameEndQuote { get { return '`'; } }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/MySqlVendor.cs
@@ -1,291 +1,291 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Data.Common;
-using System.Linq;
-using System.Collections.Generic;
-using System.Text;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using System.Data;
-using DbLinq.Data.Linq;
-using DbLinq.Data.Linq.SqlClient;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.MySql
-{
-    [Vendor(typeof(MySqlProvider))]
-#if !MONO_STRICT
-    public
-#endif
-    class MySqlVendor : Vendor.Implementation.Vendor
-    {
-        public override string VendorName { get { return "MySQL"; } }
-
-        protected readonly MySqlSqlProvider sqlProvider = new MySqlSqlProvider();
-        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
-
-        /// <summary>
-        /// for large number of rows, we want to use BULK INSERT, 
-        /// because it does not fill up the translation log.
-        /// This is enabled for tables where Vendor.UserBulkInsert[db.Table] is true.
-        /// </summary>
-        public override void BulkInsert<T>(Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction)
-        {
-            // name parameters we're going to insert
-            var members = new Dictionary<string, MemberInfo>();
-            var tableName = table.Context.Mapping.GetTable(typeof(T)).TableName;
-            foreach (var dataMember in table.Context.Mapping.GetTable(typeof(T)).RowType.PersistentDataMembers)
-            {
-                members[dataMember.MappedName.Trim('"')] = dataMember.Member;
-            }
-            var columns = new List<string>(members.Keys);
-
-            //PC: this is a test: when no page size specified, we manage to use less than 100 parameters
-            if (pageSize == 0)
-                pageSize = 99 / columns.Count;
-
-            // performes INSERTs
-            int lineIndex = 1;
-            foreach (var page in Page.Paginate(rows, pageSize))
-            {
-                var valuesLists = new List<IList<string>>();
-                using (var command = transaction.Connection.CreateCommand())
-                {
-                    foreach (T row in page)
-                    {
-                        var values = new List<string>();
-                        foreach (var keyValue in members)
-                        {
-                            var parameter = command.CreateParameter();
-                            parameter.ParameterName = SqlProvider.GetParameterName(string.Format("{0}_{1}", keyValue.Key, lineIndex));
-                            parameter.SetValue(keyValue.Value.GetMemberValue(row));
-                            values.Add(parameter.ParameterName);
-                            command.Parameters.Add(parameter);
-                        }
-                        lineIndex++;
-                        valuesLists.Add(values);
-                    }
-                    command.CommandText = sqlProvider.GetBulkInsert(SqlProvider.GetTable(tableName), columns,
-                                                                    valuesLists);
-                    var result = command.ExecuteNonQuery();
-                }
-            }
-        }
-
-#if OBSOLETE
-        public override void DoBulkInsert<T>(Table<T> table, List<T> rows, IDbConnection connection)
-        {
-            int pageSize = UseBulkInsert[table];
-            //ProjectionData projData = ProjectionData.FromReflectedType(typeof(T));
-            ProjectionData projData = AttribHelper.GetProjectionData(typeof(T));
-            TableAttribute tableAttrib = typeof(T).GetCustomAttributes(false).OfType<TableAttribute>().Single();
-
-            //build "INSERT INTO products (ProductName, SupplierID, CategoryID, QuantityPerUnit)"
-            string header = "INSERT INTO " + tableAttrib.Name + " " + InsertClauseBuilder.InsertRowHeader(projData);
-
-            foreach (List<T> page in Page.Paginate(rows, pageSize))
-            {
-                int numFieldsAdded = 0;
-                StringBuilder sbValues = new StringBuilder(" VALUES ");
-                List<IDbDataParameter> paramList = new List<IDbDataParameter>();
-
-                IDbCommand cmd = connection.CreateCommand();
-
-                //package up all fields in N rows:
-                string separator = "";
-                foreach (T row in page)
-                {
-                    //prepare values = "(?P1, ?P2, ?P3, ?P4)"
-                    string values =
-                        InsertClauseBuilder.InsertRowFields(this, cmd, row, projData, paramList, ref numFieldsAdded);
-                    sbValues.Append(separator).Append(values);
-                    separator = ", ";
-                }
-
-                string sql = header + sbValues; //'INSET t1 (field1) VALUES (11),(12)'
-                cmd.CommandText = sql;
-                paramList.ForEach(param => cmd.Parameters.Add(param));
-
-                int result = cmd.ExecuteNonQuery();
-            }
-        }
-#endif
-        /// <summary>
-        /// call mysql stored proc or stored function, 
-        /// optionally return DataSet, and collect return params.
-        /// </summary>
-        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
-                                                                 , params object[] inputValues)
-        {
-            if (method == null)
-                throw new ArgumentNullException("L56 Null 'method' parameter");
-
-            //check to make sure there is exactly one [FunctionEx]? that's below.
-            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
-            var functionAttrib = context.Mapping.GetFunction(method);
-
-            ParameterInfo[] paramInfos = method.GetParameters();
-            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
-            //if (numRequiredParams != inputValues.Length)
-            //    throw new ArgumentException("L161 Argument count mismatch");
-
-            string sp_name = functionAttrib.MappedName;
-
-            // picrap: is there any way to abstract some part of this?
-            using (IDbCommand command = context.Connection.CreateCommand())
-            {
-                command.CommandText = sp_name;
-                //MySqlCommand command = new MySqlCommand("select hello0()");
-                int currInputIndex = 0;
-
-                List<string> paramNames = new List<string>();
-                for (int i = 0; i < paramInfos.Length; i++)
-                {
-                    ParameterInfo paramInfo = paramInfos[i];
-
-                    //TODO: check to make sure there is exactly one [Parameter]?
-                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
-
-                    string paramName = "?" + paramAttrib.Name; //eg. '?param1'
-                    paramNames.Add(paramName);
-
-                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
-                    //MySqlDbType dbType = MySqlTypeConversions.ParseType(paramAttrib.DbType);
-                    IDbDataParameter cmdParam = command.CreateParameter();
-                    cmdParam.ParameterName = paramName;
-                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
-                    if (direction == System.Data.ParameterDirection.Input || direction == System.Data.ParameterDirection.InputOutput)
-                    {
-                        object inputValue = inputValues[currInputIndex++];
-                        cmdParam.Value = inputValue;
-                    }
-                    else
-                    {
-                        cmdParam.Value = null;
-                    }
-                    cmdParam.Direction = direction;
-                    command.Parameters.Add(cmdParam);
-                }
-
-                if (!functionAttrib.IsComposable) // IsCompsable is false when we have a procedure
-                {
-                    //procedures: under the hood, this seems to prepend 'CALL '
-                    command.CommandType = System.Data.CommandType.StoredProcedure;
-                }
-                else
-                {
-                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
-                    string cmdText = "SELECT " + command.CommandText + "($args)";
-                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
-                    command.CommandText = cmdText;
-                }
-
-                if (method.ReturnType == typeof(DataSet))
-                {
-                    //unknown shape of resultset:
-                    System.Data.DataSet dataSet = new DataSet();
-                    //IDataAdapter adapter = new MySqlDataAdapter((MySqlCommand)command);
-                    IDbDataAdapter adapter = CreateDataAdapter(context);
-                    adapter.SelectCommand = command;
-                    adapter.Fill(dataSet);
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(dataSet, outParamValues.ToArray());
-                }
-                else
-                {
-                    object obj = command.ExecuteScalar();
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(obj, outParamValues.ToArray());
-                }
-            }
-        }
-
-        static System.Data.ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
-        {
-            //strange hack to determine what's a ref, out parameter:
-            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
-            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
-            if (paramInfo.IsOut)
-                return System.Data.ParameterDirection.Output;
-            if (hasAmpersand)
-                return System.Data.ParameterDirection.InputOutput;
-            return System.Data.ParameterDirection.Input;
-        }
-
-        /// <summary>
-        /// Collect all Out or InOut param values, casting them to the correct .net type.
-        /// </summary>
-        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
-        {
-            List<object> outParamValues = new List<object>();
-            //Type type_t = typeof(T);
-            int i = -1;
-            foreach (IDbDataParameter param in paramSet)
-            {
-                i++;
-                if (param.Direction == System.Data.ParameterDirection.Input)
-                {
-                    outParamValues.Add("unused");
-                    continue;
-                }
-
-                object val = param.Value;
-                Type desired_type = paramInfos[i].ParameterType;
-
-                if (desired_type.Name.EndsWith("&"))
-                {
-                    //for ref and out parameters, we need to tweak ref types, e.g.
-                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                    string fullName1 = desired_type.AssemblyQualifiedName;
-                    string fullName2 = fullName1.Replace("&", "");
-                    desired_type = Type.GetType(fullName2);
-                }
-                try
-                {
-                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
-                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
-                    //object val2 = FieldUtils.CastValue(val, desired_type);
-                    object val2 = TypeConvert.To(val, desired_type);
-                    outParamValues.Add(val2);
-                }
-                catch (Exception)
-                {
-                    //fails with 'System.Decimal cannot be converted to Int32'
-                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
-                }
-            }
-            return outParamValues;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Data.Common;
+using System.Linq;
+using System.Collections.Generic;
+using System.Text;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using System.Data;
+using DbLinq.Data.Linq;
+using DbLinq.Data.Linq.SqlClient;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.MySql
+{
+    [Vendor(typeof(MySqlProvider))]
+#if !MONO_STRICT
+    public
+#endif
+    class MySqlVendor : Vendor.Implementation.Vendor
+    {
+        public override string VendorName { get { return "MySQL"; } }
+
+        protected readonly MySqlSqlProvider sqlProvider = new MySqlSqlProvider();
+        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
+
+        /// <summary>
+        /// for large number of rows, we want to use BULK INSERT, 
+        /// because it does not fill up the translation log.
+        /// This is enabled for tables where Vendor.UserBulkInsert[db.Table] is true.
+        /// </summary>
+        public override void BulkInsert<T>(Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction)
+        {
+            // name parameters we're going to insert
+            var members = new Dictionary<string, MemberInfo>();
+            var tableName = table.Context.Mapping.GetTable(typeof(T)).TableName;
+            foreach (var dataMember in table.Context.Mapping.GetTable(typeof(T)).RowType.PersistentDataMembers)
+            {
+                members[dataMember.MappedName.Trim('"')] = dataMember.Member;
+            }
+            var columns = new List<string>(members.Keys);
+
+            //PC: this is a test: when no page size specified, we manage to use less than 100 parameters
+            if (pageSize == 0)
+                pageSize = 99 / columns.Count;
+
+            // performes INSERTs
+            int lineIndex = 1;
+            foreach (var page in Page.Paginate(rows, pageSize))
+            {
+                var valuesLists = new List<IList<string>>();
+                using (var command = transaction.Connection.CreateCommand())
+                {
+                    foreach (T row in page)
+                    {
+                        var values = new List<string>();
+                        foreach (var keyValue in members)
+                        {
+                            var parameter = command.CreateParameter();
+                            parameter.ParameterName = SqlProvider.GetParameterName(string.Format("{0}_{1}", keyValue.Key, lineIndex));
+                            parameter.SetValue(keyValue.Value.GetMemberValue(row));
+                            values.Add(parameter.ParameterName);
+                            command.Parameters.Add(parameter);
+                        }
+                        lineIndex++;
+                        valuesLists.Add(values);
+                    }
+                    command.CommandText = sqlProvider.GetBulkInsert(SqlProvider.GetTable(tableName), columns,
+                                                                    valuesLists);
+                    var result = command.ExecuteNonQuery();
+                }
+            }
+        }
+
+#if OBSOLETE
+        public override void DoBulkInsert<T>(Table<T> table, List<T> rows, IDbConnection connection)
+        {
+            int pageSize = UseBulkInsert[table];
+            //ProjectionData projData = ProjectionData.FromReflectedType(typeof(T));
+            ProjectionData projData = AttribHelper.GetProjectionData(typeof(T));
+            TableAttribute tableAttrib = typeof(T).GetCustomAttributes(false).OfType<TableAttribute>().Single();
+
+            //build "INSERT INTO products (ProductName, SupplierID, CategoryID, QuantityPerUnit)"
+            string header = "INSERT INTO " + tableAttrib.Name + " " + InsertClauseBuilder.InsertRowHeader(projData);
+
+            foreach (List<T> page in Page.Paginate(rows, pageSize))
+            {
+                int numFieldsAdded = 0;
+                StringBuilder sbValues = new StringBuilder(" VALUES ");
+                List<IDbDataParameter> paramList = new List<IDbDataParameter>();
+
+                IDbCommand cmd = connection.CreateCommand();
+
+                //package up all fields in N rows:
+                string separator = "";
+                foreach (T row in page)
+                {
+                    //prepare values = "(?P1, ?P2, ?P3, ?P4)"
+                    string values =
+                        InsertClauseBuilder.InsertRowFields(this, cmd, row, projData, paramList, ref numFieldsAdded);
+                    sbValues.Append(separator).Append(values);
+                    separator = ", ";
+                }
+
+                string sql = header + sbValues; //'INSET t1 (field1) VALUES (11),(12)'
+                cmd.CommandText = sql;
+                paramList.ForEach(param => cmd.Parameters.Add(param));
+
+                int result = cmd.ExecuteNonQuery();
+            }
+        }
+#endif
+        /// <summary>
+        /// call mysql stored proc or stored function, 
+        /// optionally return DataSet, and collect return params.
+        /// </summary>
+        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
+                                                                 , params object[] inputValues)
+        {
+            if (method == null)
+                throw new ArgumentNullException("L56 Null 'method' parameter");
+
+            //check to make sure there is exactly one [FunctionEx]? that's below.
+            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
+            var functionAttrib = context.Mapping.GetFunction(method);
+
+            ParameterInfo[] paramInfos = method.GetParameters();
+            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
+            //if (numRequiredParams != inputValues.Length)
+            //    throw new ArgumentException("L161 Argument count mismatch");
+
+            string sp_name = functionAttrib.MappedName;
+
+            // picrap: is there any way to abstract some part of this?
+            using (IDbCommand command = context.Connection.CreateCommand())
+            {
+                command.CommandText = sp_name;
+                //MySqlCommand command = new MySqlCommand("select hello0()");
+                int currInputIndex = 0;
+
+                List<string> paramNames = new List<string>();
+                for (int i = 0; i < paramInfos.Length; i++)
+                {
+                    ParameterInfo paramInfo = paramInfos[i];
+
+                    //TODO: check to make sure there is exactly one [Parameter]?
+                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
+
+                    string paramName = "?" + paramAttrib.Name; //eg. '?param1'
+                    paramNames.Add(paramName);
+
+                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
+                    //MySqlDbType dbType = MySqlTypeConversions.ParseType(paramAttrib.DbType);
+                    IDbDataParameter cmdParam = command.CreateParameter();
+                    cmdParam.ParameterName = paramName;
+                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
+                    if (direction == System.Data.ParameterDirection.Input || direction == System.Data.ParameterDirection.InputOutput)
+                    {
+                        object inputValue = inputValues[currInputIndex++];
+                        cmdParam.Value = inputValue;
+                    }
+                    else
+                    {
+                        cmdParam.Value = null;
+                    }
+                    cmdParam.Direction = direction;
+                    command.Parameters.Add(cmdParam);
+                }
+
+                if (!functionAttrib.IsComposable) // IsCompsable is false when we have a procedure
+                {
+                    //procedures: under the hood, this seems to prepend 'CALL '
+                    command.CommandType = System.Data.CommandType.StoredProcedure;
+                }
+                else
+                {
+                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
+                    string cmdText = "SELECT " + command.CommandText + "($args)";
+                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
+                    command.CommandText = cmdText;
+                }
+
+                if (method.ReturnType == typeof(DataSet))
+                {
+                    //unknown shape of resultset:
+                    System.Data.DataSet dataSet = new DataSet();
+                    //IDataAdapter adapter = new MySqlDataAdapter((MySqlCommand)command);
+                    IDbDataAdapter adapter = CreateDataAdapter(context);
+                    adapter.SelectCommand = command;
+                    adapter.Fill(dataSet);
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(dataSet, outParamValues.ToArray());
+                }
+                else
+                {
+                    object obj = command.ExecuteScalar();
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(obj, outParamValues.ToArray());
+                }
+            }
+        }
+
+        static System.Data.ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
+        {
+            //strange hack to determine what's a ref, out parameter:
+            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
+            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
+            if (paramInfo.IsOut)
+                return System.Data.ParameterDirection.Output;
+            if (hasAmpersand)
+                return System.Data.ParameterDirection.InputOutput;
+            return System.Data.ParameterDirection.Input;
+        }
+
+        /// <summary>
+        /// Collect all Out or InOut param values, casting them to the correct .net type.
+        /// </summary>
+        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
+        {
+            List<object> outParamValues = new List<object>();
+            //Type type_t = typeof(T);
+            int i = -1;
+            foreach (IDbDataParameter param in paramSet)
+            {
+                i++;
+                if (param.Direction == System.Data.ParameterDirection.Input)
+                {
+                    outParamValues.Add("unused");
+                    continue;
+                }
+
+                object val = param.Value;
+                Type desired_type = paramInfos[i].ParameterType;
+
+                if (desired_type.Name.EndsWith("&"))
+                {
+                    //for ref and out parameters, we need to tweak ref types, e.g.
+                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+                    string fullName1 = desired_type.AssemblyQualifiedName;
+                    string fullName2 = fullName1.Replace("&", "");
+                    desired_type = Type.GetType(fullName2);
+                }
+                try
+                {
+                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
+                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
+                    //object val2 = FieldUtils.CastValue(val, desired_type);
+                    object val2 = TypeConvert.To(val, desired_type);
+                    outParamValues.Add(val2);
+                }
+                catch (Exception)
+                {
+                    //fails with 'System.Decimal cannot be converted to Int32'
+                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
+                }
+            }
+            return outParamValues;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/Properties/AssemblyInfo.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq.MySql")]
-[assembly: AssemblyDescription("DbLinq MySQL vendor implementation")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("c8c37bc2-84ee-41b0-893e-02b4375eabbe")]
-
-[assembly: DbLinq]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq.MySql")]
+[assembly: AssemblyDescription("DbLinq MySQL vendor implementation")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c8c37bc2-84ee-41b0-893e-02b4375eabbe")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.MySql/Test/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.MySql/Test/TestBase.cs
@@ -1,52 +1,52 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        public const StringComparison stringComparisonType = StringComparison.InvariantCulture;
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new MySql.Data.MySqlClient.MySqlCommand(sql, (MySql.Data.MySqlClient.MySqlConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new MySql.Data.MySqlClient.MySqlConnection(connectionString);
-        }
-
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.MySql.MySqlVendor();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        public const StringComparison stringComparisonType = StringComparison.InvariantCulture;
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new MySql.Data.MySqlClient.MySqlCommand(sql, (MySql.Data.MySqlClient.MySqlConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new MySql.Data.MySqlClient.MySqlConnection(connectionString);
+        }
+
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.MySql.MySqlVendor();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleDataContext.cs
@@ -1,64 +1,64 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Oracle
-{
-#if !MONO_STRICT
-    public
-#endif
-    class OracleDataContext : DataContext
-    {
-#if ORACLE_IS_REFERENCED
-        public OracleDataContext(string connStr)
-            : base(
-#if ODP
-            new Oracle.DataAccess.Client.OracleConnection(connStr) 
-#else
-            new System.Data.OracleClient.OracleConnection(connStr)
-#endif
-            ,new OracleVendor())
-        {
-        }
-#endif
-
-        public OracleDataContext(IDbConnection conn)
-#if MONO_STRICT
-            : base(conn)
-#else
-            : base(conn, new OracleVendor())
-#endif
-        {
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Oracle
+{
+#if !MONO_STRICT
+    public
+#endif
+    class OracleDataContext : DataContext
+    {
+#if ORACLE_IS_REFERENCED
+        public OracleDataContext(string connStr)
+            : base(
+#if ODP
+            new Oracle.DataAccess.Client.OracleConnection(connStr) 
+#else
+            new System.Data.OracleClient.OracleConnection(connStr)
+#endif
+            ,new OracleVendor())
+        {
+        }
+#endif
+
+        public OracleDataContext(IDbConnection conn)
+#if MONO_STRICT
+            : base(conn)
+#else
+            : base(conn, new OracleVendor())
+#endif
+        {
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.Columns.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.Columns.cs
@@ -1,74 +1,74 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Oracle
-{
-    partial class OracleSchemaLoader
-    {
-        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
-        {
-            var column = new DataTableColumn();
-            int field = 0;
-            column.TableSchema = rdr.GetString(field++);
-            column.TableName = rdr.GetString(field++);
-            column.ColumnName = rdr.GetString(field++);
-            column.SqlType = rdr.GetString(field++);
-            column.Length = rdr.GetAsNullableNumeric<long>(field++);
-            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
-            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
-            string nullableStr = rdr.GetString(field++);
-            column.Nullable = nullableStr == "Y";
-            column.FullType = column.SqlType;
-            return column;
-        }
-
-        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
-        {
-            const string sql = @"
-SELECT owner, table_name, column_name, 
-  case when data_type like 'TIMESTAMP%' then 'TIMESTAMP'
-       when data_type like 'INTERVAL%' then 'INTERVAL'
-  else data_type
-  end data_type , 
-    data_length, data_precision, data_scale, nullable
-FROM all_tab_columns
-WHERE table_name NOT LIKE '%$%' 
-    AND table_name NOT LIKE 'LOGMNR%' 
-    AND table_name NOT LIKE 'MVIEW%' 
-    AND table_name NOT IN ('SQLPLUS_PRODUCT_PROFILE','HELP', 'PRODUCT_PRIVS')
-    -- skip nested table columns
-    AND data_type_owner is null
-    AND lower(owner) = :owner
-ORDER BY table_name, column_id";
-
-            return DataCommand.Find<IDataTableColumn>(connectionString, sql, ":owner", databaseName.ToLower(), ReadColumn);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Oracle
+{
+    partial class OracleSchemaLoader
+    {
+        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
+        {
+            var column = new DataTableColumn();
+            int field = 0;
+            column.TableSchema = rdr.GetString(field++);
+            column.TableName = rdr.GetString(field++);
+            column.ColumnName = rdr.GetString(field++);
+            column.SqlType = rdr.GetString(field++);
+            column.Length = rdr.GetAsNullableNumeric<long>(field++);
+            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
+            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
+            string nullableStr = rdr.GetString(field++);
+            column.Nullable = nullableStr == "Y";
+            column.FullType = column.SqlType;
+            return column;
+        }
+
+        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
+        {
+            const string sql = @"
+SELECT owner, table_name, column_name, 
+  case when data_type like 'TIMESTAMP%' then 'TIMESTAMP'
+       when data_type like 'INTERVAL%' then 'INTERVAL'
+  else data_type
+  end data_type , 
+    data_length, data_precision, data_scale, nullable
+FROM all_tab_columns
+WHERE table_name NOT LIKE '%$%' 
+    AND table_name NOT LIKE 'LOGMNR%' 
+    AND table_name NOT LIKE 'MVIEW%' 
+    AND table_name NOT IN ('SQLPLUS_PRODUCT_PROFILE','HELP', 'PRODUCT_PRIVS')
+    -- skip nested table columns
+    AND data_type_owner is null
+    AND lower(owner) = :owner
+ORDER BY table_name, column_id";
+
+            return DataCommand.Find<IDataTableColumn>(connectionString, sql, ":owner", databaseName.ToLower(), ReadColumn);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.Constraints.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.Constraints.cs
@@ -1,148 +1,148 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using DbLinq.Util;
-
-namespace DbLinq.Oracle
-{
-    partial class OracleSchemaLoader
-    {
-        protected class DataConstraint
-        {
-            public string TableSchema;
-            public string ConstraintName;
-            public string TableName;
-            public List<string> ColumnNames = new List<string>();
-            public string ColumnNameList { get { return string.Join(",", ColumnNames.ToArray()); } }
-            public string ConstraintType;
-            public string ReverseConstraintName;
-            public string Expression;
-
-            public override string ToString()
-            {
-                return "User_Constraint  " + TableName + "." + ColumnNameList;
-            }
-        }
-
-        private static Regex TriggerMatch1 = new Regex(@".*SELECT\s+(?<exp>\S+.*)\s+INTO\s+\:new.(?<col>\S+)\s+FROM\s+DUAL.*",
-            RegexOptions.Compiled | RegexOptions.IgnoreCase);
-
-        protected bool MatchTrigger(Regex regex, string fullText, out string expression, out string column)
-        {
-            var match = regex.Match(fullText);
-            if (match.Success)
-            {
-                expression = match.Groups["exp"].Value;
-                column = match.Groups["col"].Value;
-                return true;
-            }
-            expression = null;
-            column = null;
-            return false;
-        }
-
-        protected virtual DataConstraint ReadTrigger(IDataReader rdr)
-        {
-            var constraint = new DataConstraint();
-            int field = 0;
-            constraint.ConstraintName = rdr.GetAsString(field++);
-            constraint.TableSchema = rdr.GetAsString(field++);
-            constraint.TableName = rdr.GetAsString(field++);
-            constraint.ConstraintType = "T";
-            string body = rdr.GetAsString(field++);
-            //BEGIN
-            //   IF (:new."EmployeeID" IS NULL) THEN
-            //        SELECT Employees_seq.NEXTVAL INTO :new."EmployeeID" FROM DUAL;
-            //   END IF;
-            //END;
-            string expression, column;
-            if (MatchTrigger(TriggerMatch1, body, out expression, out column))
-            {
-                constraint.ColumnNames.Add(column.Trim('"'));
-                constraint.Expression = expression;
-            }
-            return constraint;
-        }
-
-        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
-        {
-            var constraints = new List<DataConstraint>();
-
-            string sql = @"
-SELECT UCC.owner, UCC.constraint_name, UCC.table_name, UC.constraint_type, UC.R_constraint_name, UCC.column_name, UCC.position
-FROM all_cons_columns UCC, all_constraints UC
-WHERE UCC.constraint_name=UC.constraint_name
-AND UCC.table_name=UC.table_name
-AND UCC.owner=UC.owner
-AND UCC.TABLE_NAME NOT LIKE '%$%' AND UCC.TABLE_NAME NOT LIKE 'LOGMNR%' AND UCC.TABLE_NAME NOT IN ('HELP','SQLPLUS_PRODUCT_PROFILE')
-AND UC.CONSTRAINT_TYPE!='C'
-and lower(UCC.owner) = :owner";
-
-            constraints.AddRange(DataCommand.Find(conn, sql, ":owner", db.ToLower(),
-                    r => new
-                    {
-                        Key = new
-                        {
-                            Owner = r.GetString(0),
-                            ConName = r.GetString(1),
-                            TableName = r.GetString(2),
-                            ConType = r.GetString(3),
-                            RevCconName = r.GetAsString(4)
-                        },
-                        Value = new
-                        {
-                            ColName = r.GetString(5),
-                            ColPos = r.GetInt32(6)
-                        }
-                    })
-                .GroupBy(r => r.Key, r => r.Value, (r, rs) => new DataConstraint
-                {
-                    TableSchema = r.Owner,
-                    ConstraintName = r.ConName,
-                    TableName = r.TableName,
-                    ConstraintType = r.ConType,
-                    ReverseConstraintName = r.RevCconName,
-                    ColumnNames = rs.OrderBy(t => t.ColPos).Select(t => t.ColName).ToList()
-                }));
-
-            string sql2 =
-                @"
-select t.TRIGGER_NAME, t.TABLE_OWNER, t.TABLE_NAME, t.TRIGGER_BODY from ALL_TRIGGERS t
-where t.status = 'ENABLED'
- and t.TRIGGERING_EVENT = 'INSERT'
- and t.TRIGGER_TYPE='BEFORE EACH ROW'
- and lower(t.owner) = :owner";
-
-            constraints.AddRange(DataCommand.Find<DataConstraint>(conn, sql2, ":owner", db.ToLower(), ReadTrigger));
-            return constraints;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using DbLinq.Util;
+
+namespace DbLinq.Oracle
+{
+    partial class OracleSchemaLoader
+    {
+        protected class DataConstraint
+        {
+            public string TableSchema;
+            public string ConstraintName;
+            public string TableName;
+            public List<string> ColumnNames = new List<string>();
+            public string ColumnNameList { get { return string.Join(",", ColumnNames.ToArray()); } }
+            public string ConstraintType;
+            public string ReverseConstraintName;
+            public string Expression;
+
+            public override string ToString()
+            {
+                return "User_Constraint  " + TableName + "." + ColumnNameList;
+            }
+        }
+
+        private static Regex TriggerMatch1 = new Regex(@".*SELECT\s+(?<exp>\S+.*)\s+INTO\s+\:new.(?<col>\S+)\s+FROM\s+DUAL.*",
+            RegexOptions.Compiled | RegexOptions.IgnoreCase);
+
+        protected bool MatchTrigger(Regex regex, string fullText, out string expression, out string column)
+        {
+            var match = regex.Match(fullText);
+            if (match.Success)
+            {
+                expression = match.Groups["exp"].Value;
+                column = match.Groups["col"].Value;
+                return true;
+            }
+            expression = null;
+            column = null;
+            return false;
+        }
+
+        protected virtual DataConstraint ReadTrigger(IDataReader rdr)
+        {
+            var constraint = new DataConstraint();
+            int field = 0;
+            constraint.ConstraintName = rdr.GetAsString(field++);
+            constraint.TableSchema = rdr.GetAsString(field++);
+            constraint.TableName = rdr.GetAsString(field++);
+            constraint.ConstraintType = "T";
+            string body = rdr.GetAsString(field++);
+            //BEGIN
+            //   IF (:new."EmployeeID" IS NULL) THEN
+            //        SELECT Employees_seq.NEXTVAL INTO :new."EmployeeID" FROM DUAL;
+            //   END IF;
+            //END;
+            string expression, column;
+            if (MatchTrigger(TriggerMatch1, body, out expression, out column))
+            {
+                constraint.ColumnNames.Add(column.Trim('"'));
+                constraint.Expression = expression;
+            }
+            return constraint;
+        }
+
+        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
+        {
+            var constraints = new List<DataConstraint>();
+
+            string sql = @"
+SELECT UCC.owner, UCC.constraint_name, UCC.table_name, UC.constraint_type, UC.R_constraint_name, UCC.column_name, UCC.position
+FROM all_cons_columns UCC, all_constraints UC
+WHERE UCC.constraint_name=UC.constraint_name
+AND UCC.table_name=UC.table_name
+AND UCC.owner=UC.owner
+AND UCC.TABLE_NAME NOT LIKE '%$%' AND UCC.TABLE_NAME NOT LIKE 'LOGMNR%' AND UCC.TABLE_NAME NOT IN ('HELP','SQLPLUS_PRODUCT_PROFILE')
+AND UC.CONSTRAINT_TYPE!='C'
+and lower(UCC.owner) = :owner";
+
+            constraints.AddRange(DataCommand.Find(conn, sql, ":owner", db.ToLower(),
+                    r => new
+                    {
+                        Key = new
+                        {
+                            Owner = r.GetString(0),
+                            ConName = r.GetString(1),
+                            TableName = r.GetString(2),
+                            ConType = r.GetString(3),
+                            RevCconName = r.GetAsString(4)
+                        },
+                        Value = new
+                        {
+                            ColName = r.GetString(5),
+                            ColPos = r.GetInt32(6)
+                        }
+                    })
+                .GroupBy(r => r.Key, r => r.Value, (r, rs) => new DataConstraint
+                {
+                    TableSchema = r.Owner,
+                    ConstraintName = r.ConName,
+                    TableName = r.TableName,
+                    ConstraintType = r.ConType,
+                    ReverseConstraintName = r.RevCconName,
+                    ColumnNames = rs.OrderBy(t => t.ColPos).Select(t => t.ColName).ToList()
+                }));
+
+            string sql2 =
+                @"
+select t.TRIGGER_NAME, t.TABLE_OWNER, t.TABLE_NAME, t.TRIGGER_BODY from ALL_TRIGGERS t
+where t.status = 'ENABLED'
+ and t.TRIGGERING_EVENT = 'INSERT'
+ and t.TRIGGER_TYPE='BEFORE EACH ROW'
+ and lower(t.owner) = :owner";
+
+            constraints.AddRange(DataCommand.Find<DataConstraint>(conn, sql2, ":owner", db.ToLower(), ReadTrigger));
+            return constraints;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.StoredProcedures.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.StoredProcedures.cs
@@ -1,120 +1,120 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-
-namespace DbLinq.Oracle
-{
-    partial class OracleSchemaLoader
-    {
-        protected class StoredProcedureParameter
-        {
-            public string ProcedureName { get; set; }
-            public string Name { get; set; }
-            public string Schema { get; set; }
-            public DataType Type { get; set; }
-            public bool In { get; set; }
-            public bool Out { get; set; }
-        }
-
-        protected virtual StoredProcedureParameter ReadParameter(IDataRecord dataRecord)
-        {
-            var parameter = new StoredProcedureParameter();
-            int field = 0;
-            parameter.ProcedureName = dataRecord.GetAsString(field++);
-            parameter.Name = dataRecord.GetAsString(field++);
-            parameter.Schema = dataRecord.GetAsString(field++);
-            parameter.Type = new DataType();
-            parameter.Type.SqlType = dataRecord.GetAsString(field++);
-            parameter.Type.Length = dataRecord.GetAsNullableNumeric<long>(field++);
-            parameter.Type.Precision = dataRecord.GetAsNullableNumeric<int>(field++);
-            parameter.Type.Scale = dataRecord.GetAsNullableNumeric<int>(field++);
-            string inOut = dataRecord.GetAsString(field++).ToLower();
-            parameter.In = inOut.Contains("in");
-            parameter.Out = inOut.Contains("out");
-            return parameter;
-        }
-
-        protected virtual IList<StoredProcedureParameter> ReadParameters(IDbConnection connection, string databaseName)
-        {
-            const string sql = @"select object_name, argument_name, owner, data_type, data_length, data_precision, data_scale, in_out
-from all_arguments where lower(owner) = :db order by object_id, position";
-
-            return DataCommand.Find<StoredProcedureParameter>(connection, sql, ":db", databaseName.ToLower(), ReadParameter);
-        }
-
-        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
-        {
-            var parameters = ReadParameters(conn, schemaName.DbName);
-            foreach (var parameter in parameters)
-            {
-                var procedureName = CreateProcedureName(parameter.ProcedureName, parameter.Schema, nameFormat);
-
-                Function function = schema.Functions.SingleOrDefault(f => f.Method == procedureName.MethodName);
-                if (function == null)
-                {
-                    function = new Function { Name = procedureName.DbName, Method = procedureName.MethodName };
-                    schema.Functions.Add(function);
-                }
-
-                if (parameter.Name == null)
-                {
-                    var returnParameter = new Return();
-                    returnParameter.DbType = parameter.Type.SqlType;
-                    returnParameter.Type = MapDbType(parameter.Name, parameter.Type).ToString();
-
-                    function.IsComposable = true;
-                    function.Return = returnParameter;
-                }
-                else
-                {
-                    var functionParameter = new Parameter();
-                    functionParameter.DbType = parameter.Type.SqlType;
-                    functionParameter.Type = MapDbType(parameter.Name, parameter.Type).ToString();
-                    if (parameter.In)
-                    {
-                        if (parameter.Out)
-                            functionParameter.Direction = DbLinq.Schema.Dbml.ParameterDirection.InOut;
-                        else
-                            functionParameter.Direction = DbLinq.Schema.Dbml.ParameterDirection.In;
-                    }
-                    else
-                        functionParameter.Direction = DbLinq.Schema.Dbml.ParameterDirection.Out;
-
-                    var parameterName = CreateParameterName(parameter.Name, nameFormat);
-                    functionParameter.Name = parameterName.CallName;
-
-                    function.Parameters.Add(functionParameter);
-                }
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+
+namespace DbLinq.Oracle
+{
+    partial class OracleSchemaLoader
+    {
+        protected class StoredProcedureParameter
+        {
+            public string ProcedureName { get; set; }
+            public string Name { get; set; }
+            public string Schema { get; set; }
+            public DataType Type { get; set; }
+            public bool In { get; set; }
+            public bool Out { get; set; }
+        }
+
+        protected virtual StoredProcedureParameter ReadParameter(IDataRecord dataRecord)
+        {
+            var parameter = new StoredProcedureParameter();
+            int field = 0;
+            parameter.ProcedureName = dataRecord.GetAsString(field++);
+            parameter.Name = dataRecord.GetAsString(field++);
+            parameter.Schema = dataRecord.GetAsString(field++);
+            parameter.Type = new DataType();
+            parameter.Type.SqlType = dataRecord.GetAsString(field++);
+            parameter.Type.Length = dataRecord.GetAsNullableNumeric<long>(field++);
+            parameter.Type.Precision = dataRecord.GetAsNullableNumeric<int>(field++);
+            parameter.Type.Scale = dataRecord.GetAsNullableNumeric<int>(field++);
+            string inOut = dataRecord.GetAsString(field++).ToLower();
+            parameter.In = inOut.Contains("in");
+            parameter.Out = inOut.Contains("out");
+            return parameter;
+        }
+
+        protected virtual IList<StoredProcedureParameter> ReadParameters(IDbConnection connection, string databaseName)
+        {
+            const string sql = @"select object_name, argument_name, owner, data_type, data_length, data_precision, data_scale, in_out
+from all_arguments where lower(owner) = :db order by object_id, position";
+
+            return DataCommand.Find<StoredProcedureParameter>(connection, sql, ":db", databaseName.ToLower(), ReadParameter);
+        }
+
+        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
+        {
+            var parameters = ReadParameters(conn, schemaName.DbName);
+            foreach (var parameter in parameters)
+            {
+                var procedureName = CreateProcedureName(parameter.ProcedureName, parameter.Schema, nameFormat);
+
+                Function function = schema.Functions.SingleOrDefault(f => f.Method == procedureName.MethodName);
+                if (function == null)
+                {
+                    function = new Function { Name = procedureName.DbName, Method = procedureName.MethodName };
+                    schema.Functions.Add(function);
+                }
+
+                if (parameter.Name == null)
+                {
+                    var returnParameter = new Return();
+                    returnParameter.DbType = parameter.Type.SqlType;
+                    returnParameter.Type = MapDbType(parameter.Name, parameter.Type).ToString();
+
+                    function.IsComposable = true;
+                    function.Return = returnParameter;
+                }
+                else
+                {
+                    var functionParameter = new Parameter();
+                    functionParameter.DbType = parameter.Type.SqlType;
+                    functionParameter.Type = MapDbType(parameter.Name, parameter.Type).ToString();
+                    if (parameter.In)
+                    {
+                        if (parameter.Out)
+                            functionParameter.Direction = DbLinq.Schema.Dbml.ParameterDirection.InOut;
+                        else
+                            functionParameter.Direction = DbLinq.Schema.Dbml.ParameterDirection.In;
+                    }
+                    else
+                        functionParameter.Direction = DbLinq.Schema.Dbml.ParameterDirection.Out;
+
+                    var parameterName = CreateParameterName(parameter.Name, nameFormat);
+                    functionParameter.Name = parameterName.CallName;
+
+                    function.Parameters.Add(functionParameter);
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.Tables.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.Tables.cs
@@ -1,57 +1,57 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Oracle
-{
-#if !MONO_STRICT
-    public
-#endif
-    partial class OracleSchemaLoader
-    {
-        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
-        {
-            // note: the ReadDataNameAndSchema relies on information order
-            const string sql = @"
-SELECT table_name, owner
-FROM all_tables 
-WHERE table_name NOT LIKE '%$%' 
-AND table_name NOT LIKE 'LOGMNR%' 
-AND table_name NOT IN ('SQLPLUS_PRODUCT_PROFILE','HELP')
-and lower(owner) = :owner
-UNION
-SELECT view_name, owner
-FROM all_views
-WHERE lower(owner) = :owner
-";
-
-            return DataCommand.Find<IDataName>(connectionString, sql, ":owner", databaseName.ToLower(), ReadDataNameAndSchema);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Oracle
+{
+#if !MONO_STRICT
+    public
+#endif
+    partial class OracleSchemaLoader
+    {
+        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
+        {
+            // note: the ReadDataNameAndSchema relies on information order
+            const string sql = @"
+SELECT table_name, owner
+FROM all_tables 
+WHERE table_name NOT LIKE '%$%' 
+AND table_name NOT LIKE 'LOGMNR%' 
+AND table_name NOT IN ('SQLPLUS_PRODUCT_PROFILE','HELP')
+and lower(owner) = :owner
+UNION
+SELECT view_name, owner
+FROM all_views
+WHERE lower(owner) = :owner
+";
+
+            return DataCommand.Find<IDataName>(connectionString, sql, ":owner", databaseName.ToLower(), ReadDataNameAndSchema);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSchemaLoader.cs
@@ -1,122 +1,122 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Oracle
-{
-    partial class OracleSchemaLoader : SchemaLoader
-    {
-        private readonly Vendor.IVendor vendor = new OracleVendor();
-        public override IVendor Vendor { get { return vendor; } set { } }
-
-        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
-        {
-            var constraints = ReadConstraints(conn, schemaName.DbName);
-
-            foreach (DataConstraint constraint in constraints)
-            {
-                //find my table:
-                string constraintFullDbName = GetFullDbName(constraint.TableName, constraint.TableSchema);
-                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => constraintFullDbName == t.Name);
-                if (table == null)
-                {
-                    WriteErrorLine("ERROR L100: Table '" + constraint.TableName + "' not found for column " + constraint.ColumnNameList);
-                    continue;
-                }
-
-                //if (table.Name.StartsWith("E"))
-                //    Logger.Write("---Dbg");
-
-                if (constraint.ConstraintType == "P")
-                {
-                    //A) add primary key
-                    DbLinq.Schema.Dbml.Column pkColumn = table.Type.Columns.Where(c => constraint.ColumnNames.Contains(c.Name)).First();
-                    pkColumn.IsPrimaryKey = true;
-                }
-                else if (constraint.ConstraintType == "R")
-                {
-                    //if not PRIMARY, it's a foreign key. (constraint_type=="R")
-                    //both parent and child table get an [Association]
-                    DataConstraint referencedConstraint = constraints.FirstOrDefault(c => c.ConstraintName == constraint.ReverseConstraintName);
-                    if (constraint.ReverseConstraintName == null || referencedConstraint == null)
-                    {
-                        WriteErrorLine("ERROR L127: given R_contraint_name='" + constraint.ReverseConstraintName + "', unable to find parent constraint");
-                        continue;
-                    }
-
-                    LoadForeignKey(schema, table, constraint.ColumnNameList, constraint.TableName, constraint.TableSchema,
-                                   referencedConstraint.ColumnNameList, referencedConstraint.TableName,
-                                   referencedConstraint.TableSchema,
-                                   constraint.ConstraintName, nameFormat, names);
-
-                }
-                // custom type, this is a trigger
-                else if (constraint.ConstraintType == "T" && constraint.ColumnNames.Count == 1)
-                {
-                    var column = table.Type.Columns.Where(c => c.Name == constraint.ColumnNames[0]).First();
-                    column.Expression = constraint.Expression;
-                    column.IsDbGenerated = true;
-                }
-            }
-
-            //GuessSequencePopulatedFields(schema);
-        }
-
-        /// <summary>
-        /// guess which fields are populated by sequences.
-        /// Mark them with [AutoGenId].
-        /// </summary>
-        public static void GuessSequencePopulatedFields(DbLinq.Schema.Dbml.Database schema)
-        {
-            if (schema == null)
-                return;
-            foreach (DbLinq.Schema.Dbml.Table tbl in schema.Tables)
-            {
-                var q = from col in tbl.Type.Columns
-                        where col.IsPrimaryKey
-                        select col;
-                List<DbLinq.Schema.Dbml.Column> cols = q.ToList();
-                bool canBeFromSequence = cols.Count == 1
-                    && (!cols[0].CanBeNull)
-                    && (cols[0].DbType == "NUMBER" || cols[0].DbType == "INTEGER");
-                if (canBeFromSequence)
-                {
-                    //TODO: query sequences, store sequence name.
-                    //in the meantime, assume naming convention similar to 'Products_seq'
-                    cols[0].IsDbGenerated = true;
-                }
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Oracle
+{
+    partial class OracleSchemaLoader : SchemaLoader
+    {
+        private readonly Vendor.IVendor vendor = new OracleVendor();
+        public override IVendor Vendor { get { return vendor; } set { } }
+
+        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
+        {
+            var constraints = ReadConstraints(conn, schemaName.DbName);
+
+            foreach (DataConstraint constraint in constraints)
+            {
+                //find my table:
+                string constraintFullDbName = GetFullDbName(constraint.TableName, constraint.TableSchema);
+                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => constraintFullDbName == t.Name);
+                if (table == null)
+                {
+                    WriteErrorLine("ERROR L100: Table '" + constraint.TableName + "' not found for column " + constraint.ColumnNameList);
+                    continue;
+                }
+
+                //if (table.Name.StartsWith("E"))
+                //    Logger.Write("---Dbg");
+
+                if (constraint.ConstraintType == "P")
+                {
+                    //A) add primary key
+                    DbLinq.Schema.Dbml.Column pkColumn = table.Type.Columns.Where(c => constraint.ColumnNames.Contains(c.Name)).First();
+                    pkColumn.IsPrimaryKey = true;
+                }
+                else if (constraint.ConstraintType == "R")
+                {
+                    //if not PRIMARY, it's a foreign key. (constraint_type=="R")
+                    //both parent and child table get an [Association]
+                    DataConstraint referencedConstraint = constraints.FirstOrDefault(c => c.ConstraintName == constraint.ReverseConstraintName);
+                    if (constraint.ReverseConstraintName == null || referencedConstraint == null)
+                    {
+                        WriteErrorLine("ERROR L127: given R_contraint_name='" + constraint.ReverseConstraintName + "', unable to find parent constraint");
+                        continue;
+                    }
+
+                    LoadForeignKey(schema, table, constraint.ColumnNameList, constraint.TableName, constraint.TableSchema,
+                                   referencedConstraint.ColumnNameList, referencedConstraint.TableName,
+                                   referencedConstraint.TableSchema,
+                                   constraint.ConstraintName, nameFormat, names);
+
+                }
+                // custom type, this is a trigger
+                else if (constraint.ConstraintType == "T" && constraint.ColumnNames.Count == 1)
+                {
+                    var column = table.Type.Columns.Where(c => c.Name == constraint.ColumnNames[0]).First();
+                    column.Expression = constraint.Expression;
+                    column.IsDbGenerated = true;
+                }
+            }
+
+            //GuessSequencePopulatedFields(schema);
+        }
+
+        /// <summary>
+        /// guess which fields are populated by sequences.
+        /// Mark them with [AutoGenId].
+        /// </summary>
+        public static void GuessSequencePopulatedFields(DbLinq.Schema.Dbml.Database schema)
+        {
+            if (schema == null)
+                return;
+            foreach (DbLinq.Schema.Dbml.Table tbl in schema.Tables)
+            {
+                var q = from col in tbl.Type.Columns
+                        where col.IsPrimaryKey
+                        select col;
+                List<DbLinq.Schema.Dbml.Column> cols = q.ToList();
+                bool canBeFromSequence = cols.Count == 1
+                    && (!cols[0].CanBeNull)
+                    && (cols[0].DbType == "NUMBER" || cols[0].DbType == "INTEGER");
+                if (canBeFromSequence)
+                {
+                    //TODO: query sequences, store sequence name.
+                    //in the meantime, assume naming convention similar to 'Products_seq'
+                    cols[0].IsDbGenerated = true;
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleSqlProvider.cs
@@ -1,129 +1,129 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Util;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Oracle
-{
-#if !MONO_STRICT
-    public
-#endif
-    class OracleSqlProvider : SqlProvider
-    {
-        //public override string  GetInsert(string table, IList<string> inputColumns, IList<string> inputValues)
-        //{
-        //     return "BEGIN " + base.GetInsert(table, inputColumns, inputValues);
-        //}
-
-        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
-        {
-            // no parameters? no need to get them back
-            if (outputParameters.Count == 0)
-                return "";
-            // otherwise we keep track of the new values
-            return SqlStatement.Format("SELECT {0} INTO {1} FROM DUAL",
-                SqlStatement.Join(", ", (from outputExpression in outputExpressions select outputExpression.Replace(".NextVal", ".CurrVal", true)).ToArray()),
-                SqlStatement.Join(", ", outputParameters.ToArray()));
-        }
-
-        protected override SqlStatement GetLiteralModulo(SqlStatement a, SqlStatement b)
-        {
-            return string.Format("MOD({0}, {1})", a, b);
-        }
-
-        protected override SqlStatement GetLiteralCount(SqlStatement a)
-        {
-            return "COUNT(*)";
-        }
-
-        protected override SqlStatement GetLiteralStringLength(SqlStatement a)
-        {
-            return SqlStatement.Format("LENGTH({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
-        {
-            return SqlStatement.Format("LOWER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
-        {
-            return SqlStatement.Format("UPPER({0})", a);
-        }
-
-        //          SELECT * FROM (
-        //          SELECT a.*, rownum RN FROM (
-        //          select c$.CustomerID, c$.CompanyName from [Customers] c$ order by c$.CUSTOMERID
-        //          ) a  WHERE rownum <=5
-        //          ) WHERE rn >2
-
-        protected const string LimitedTableName = "LimitedTable___";
-        protected const string LimitedRownum = "Limit___";
-
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
-        {
-            return SqlStatement.Format(
-                @"SELECT {2}.*, rownum {3} FROM ({4}{0}{4}) {2} WHERE rownum <= {1}",
-                select, limit, LimitedTableName, LimitedRownum, NewLine);
-        }
-
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
-        {
-            return SqlStatement.Format(
-                @"SELECT * FROM ({3}{0}{3}) WHERE {2} > {1}",
-                GetLiteralLimit(select, offsetAndLimit), offset, LimitedRownum, NewLine);
-        }
-
-        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex, SqlStatement count)
-        {
-            // SUBSTR(baseString, StartIndex)
-            var substring = GetLiteralSubString(baseString, startIndex, count);
-
-            // INSTR(SUBSTR(baseString, StartIndex), searchString) ---> range 1:n , 0 => doesn't exist
-            return SqlStatement.Format("INSTR({0},{1})", substring, searchString);
-        }
-
-        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex)
-        {
-            // SUBSTR(baseString,StartIndex)
-            var substring = GetLiteralSubString(baseString, startIndex);
-
-            // INSTR(SUBSTR(baseString, StartIndex), searchString) ---> range 1:n , 0 => doesn't exist
-            return SqlStatement.Format("INSTR({0},{1})", substring, searchString);
-        }
-
-        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString)
-        {
-            return GetLiteralSubtract(SqlStatement.Format("INSTR({0},{1})", baseString, searchString), "1");
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Util;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Oracle
+{
+#if !MONO_STRICT
+    public
+#endif
+    class OracleSqlProvider : SqlProvider
+    {
+        //public override string  GetInsert(string table, IList<string> inputColumns, IList<string> inputValues)
+        //{
+        //     return "BEGIN " + base.GetInsert(table, inputColumns, inputValues);
+        //}
+
+        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
+        {
+            // no parameters? no need to get them back
+            if (outputParameters.Count == 0)
+                return "";
+            // otherwise we keep track of the new values
+            return SqlStatement.Format("SELECT {0} INTO {1} FROM DUAL",
+                SqlStatement.Join(", ", (from outputExpression in outputExpressions select outputExpression.Replace(".NextVal", ".CurrVal", true)).ToArray()),
+                SqlStatement.Join(", ", outputParameters.ToArray()));
+        }
+
+        protected override SqlStatement GetLiteralModulo(SqlStatement a, SqlStatement b)
+        {
+            return string.Format("MOD({0}, {1})", a, b);
+        }
+
+        protected override SqlStatement GetLiteralCount(SqlStatement a)
+        {
+            return "COUNT(*)";
+        }
+
+        protected override SqlStatement GetLiteralStringLength(SqlStatement a)
+        {
+            return SqlStatement.Format("LENGTH({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
+        {
+            return SqlStatement.Format("LOWER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
+        {
+            return SqlStatement.Format("UPPER({0})", a);
+        }
+
+        //          SELECT * FROM (
+        //          SELECT a.*, rownum RN FROM (
+        //          select c$.CustomerID, c$.CompanyName from [Customers] c$ order by c$.CUSTOMERID
+        //          ) a  WHERE rownum <=5
+        //          ) WHERE rn >2
+
+        protected const string LimitedTableName = "LimitedTable___";
+        protected const string LimitedRownum = "Limit___";
+
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
+        {
+            return SqlStatement.Format(
+                @"SELECT {2}.*, rownum {3} FROM ({4}{0}{4}) {2} WHERE rownum <= {1}",
+                select, limit, LimitedTableName, LimitedRownum, NewLine);
+        }
+
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
+        {
+            return SqlStatement.Format(
+                @"SELECT * FROM ({3}{0}{3}) WHERE {2} > {1}",
+                GetLiteralLimit(select, offsetAndLimit), offset, LimitedRownum, NewLine);
+        }
+
+        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex, SqlStatement count)
+        {
+            // SUBSTR(baseString, StartIndex)
+            var substring = GetLiteralSubString(baseString, startIndex, count);
+
+            // INSTR(SUBSTR(baseString, StartIndex), searchString) ---> range 1:n , 0 => doesn't exist
+            return SqlStatement.Format("INSTR({0},{1})", substring, searchString);
+        }
+
+        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex)
+        {
+            // SUBSTR(baseString,StartIndex)
+            var substring = GetLiteralSubString(baseString, startIndex);
+
+            // INSTR(SUBSTR(baseString, StartIndex), searchString) ---> range 1:n , 0 => doesn't exist
+            return SqlStatement.Format("INSTR({0},{1})", substring, searchString);
+        }
+
+        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString)
+        {
+            return GetLiteralSubtract(SqlStatement.Format("INSTR({0},{1})", baseString, searchString), "1");
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/OracleVendor.cs
@@ -1,85 +1,85 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Data;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Text;
-using System.Data.Linq;
-using System.Data.Linq.Mapping;
-using DbLinq.Data.Linq.SqlClient;
-using DbLinq.Vendor;
-
-#if MONO_STRICT
-using DataContext = System.Data.Linq.DataContext;
-#else
-using DataContext = DbLinq.Data.Linq.DataContext;
-#endif
-
-namespace DbLinq.Oracle
-{
-    [Vendor(typeof(OracleProvider))]
-#if !MONO_STRICT
-    public
-#endif
-    class OracleVendor : Vendor.Implementation.Vendor
-    {
-        public override string VendorName { get { return "Oracle"; } }
-
-        protected readonly OracleSqlProvider sqlProvider = new OracleSqlProvider();
-        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
-
-        public override bool Ping(DataContext dataContext)
-        {
-            return dataContext.ExecuteCommand("SELECT 11 FROM DUAL") == 11;
-        }
-
-        public override IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
-                                                                 , params object[] inputValues)
-        {
-            throw new NotImplementedException();
-        }
-
-        // This method workds much better on various environment. But why? Thanks Oracle guys for dry documentation.
-        public override string BuildConnectionString(string host, string databaseName, string userName, string password)
-        {
-            var connectionStringBuilder = new StringBuilder();
-            connectionStringBuilder.AppendFormat(
-                "Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)))",
-                host);
-            if (!string.IsNullOrEmpty(userName))
-            {
-                connectionStringBuilder.AppendFormat("; User Id = {0}", userName);
-                if (!string.IsNullOrEmpty(password))
-                    connectionStringBuilder.AppendFormat("; Password = {0}", password);
-            }
-            return connectionStringBuilder.ToString();
-        }
-
-        protected override string ConnectionStringDatabase { get { return null; } }
-        protected override string ConnectionStringServer { get { return "data source"; } }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Data;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Text;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using DbLinq.Data.Linq.SqlClient;
+using DbLinq.Vendor;
+
+#if MONO_STRICT
+using DataContext = System.Data.Linq.DataContext;
+#else
+using DataContext = DbLinq.Data.Linq.DataContext;
+#endif
+
+namespace DbLinq.Oracle
+{
+    [Vendor(typeof(OracleProvider))]
+#if !MONO_STRICT
+    public
+#endif
+    class OracleVendor : Vendor.Implementation.Vendor
+    {
+        public override string VendorName { get { return "Oracle"; } }
+
+        protected readonly OracleSqlProvider sqlProvider = new OracleSqlProvider();
+        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
+
+        public override bool Ping(DataContext dataContext)
+        {
+            return dataContext.ExecuteCommand("SELECT 11 FROM DUAL") == 11;
+        }
+
+        public override IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
+                                                                 , params object[] inputValues)
+        {
+            throw new NotImplementedException();
+        }
+
+        // This method workds much better on various environment. But why? Thanks Oracle guys for dry documentation.
+        public override string BuildConnectionString(string host, string databaseName, string userName, string password)
+        {
+            var connectionStringBuilder = new StringBuilder();
+            connectionStringBuilder.AppendFormat(
+                "Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = {0})(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)))",
+                host);
+            if (!string.IsNullOrEmpty(userName))
+            {
+                connectionStringBuilder.AppendFormat("; User Id = {0}", userName);
+                if (!string.IsNullOrEmpty(password))
+                    connectionStringBuilder.AppendFormat("; Password = {0}", password);
+            }
+            return connectionStringBuilder.ToString();
+        }
+
+        protected override string ConnectionStringDatabase { get { return null; } }
+        protected override string ConnectionStringServer { get { return "data source"; } }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/Properties/AssemblyInfo.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq.Oracle")]
-[assembly: AssemblyDescription("DbLinq Oracle vendor implementation")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e1f0992f-a414-4479-905e-96c5d51b8cb6")]
-
-[assembly: DbLinq]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq.Oracle")]
+[assembly: AssemblyDescription("DbLinq Oracle vendor implementation")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e1f0992f-a414-4479-905e-96c5d51b8cb6")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/Test/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/Test/TestBase.cs
@@ -1,52 +1,52 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        public const StringComparison stringComparisonType = StringComparison.Ordinal;
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new System.Data.OracleClient.OracleCommand(sql, (System.Data.OracleClient.OracleConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new System.Data.OracleClient.OracleConnection(connectionString);
-        }
-
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.Oracle.OracleVendor();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        public const StringComparison stringComparisonType = StringComparison.Ordinal;
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new System.Data.OracleClient.OracleCommand(sql, (System.Data.OracleClient.OracleConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new System.Data.OracleClient.OracleConnection(connectionString);
+        }
+
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.Oracle.OracleVendor();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Oracle/Test/TestBase_odp.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Oracle/Test/TestBase_odp.cs
@@ -1,52 +1,52 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        public const StringComparison stringComparisonType = StringComparison.Ordinal;
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new Oracle.DataAccess.Client.OracleCommand(sql, (Oracle.DataAccess.Client.OracleConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new Oracle.DataAccess.Client.OracleConnection(connectionString);
-        }
-
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.Oracle.OracleVendor();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        public const StringComparison stringComparisonType = StringComparison.Ordinal;
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new Oracle.DataAccess.Client.OracleCommand(sql, (Oracle.DataAccess.Client.OracleConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new Oracle.DataAccess.Client.OracleConnection(connectionString);
+        }
+
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.Oracle.OracleVendor();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlDataContext.cs
@@ -1,60 +1,60 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.PostgreSql
-{
-    /// <summary>
-    /// PgsqlDataContext allows easier one-parameter creation of a data context.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class PgsqlDataContext : DataContext
-    {
-#if POSTGRESQL_IS_REFERENCED
-        public PgsqlDataContext(string connStr)
-            : base(new Npgsql.NpgsqlConnection(connStr), new PgsqlVendor())
-        {
-        }
-#endif
-        public PgsqlDataContext(IDbConnection conn)
-#if MONO_STRICT
-            : base(conn)
-#else
-            : base(conn, new PgsqlVendor())
-#endif
-        {
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.PostgreSql
+{
+    /// <summary>
+    /// PgsqlDataContext allows easier one-parameter creation of a data context.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class PgsqlDataContext : DataContext
+    {
+#if POSTGRESQL_IS_REFERENCED
+        public PgsqlDataContext(string connStr)
+            : base(new Npgsql.NpgsqlConnection(connStr), new PgsqlVendor())
+        {
+        }
+#endif
+        public PgsqlDataContext(IDbConnection conn)
+#if MONO_STRICT
+            : base(conn)
+#else
+            : base(conn, new PgsqlVendor())
+#endif
+        {
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.Columns.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.Columns.cs
@@ -1,95 +1,95 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.PostgreSql
-{
-    partial class PgsqlSchemaLoader
-    {
-        protected virtual string GetColumnFullType(string domain_name, string domain_schema, IDataTableColumn column)
-        {
-            // TODO: uncomment
-            if (/* mmConfig.useDomainTypes && */domain_name != null)
-                return domain_schema + "." + domain_name; //without precision - precision is already defined in CREATE DOMAIN
-
-            if (column.Length != null)
-                return column.SqlType + "(" + column.Length + ")";
-            if (column.Precision != null && column.Scale != null)
-                return column.SqlType + "(" + column.Precision + "," + column.Scale + ")";
-            return column.SqlType;
-        }
-
-        protected virtual string GetColumnDefaultValue(string defaultValue)
-        {
-            if (defaultValue == null)
-                return defaultValue;
-            // nextval('suppliers_supplierid_seq'::regclass)
-            return defaultValue.Replace("::regclass)", ")");
-        }
-
-        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
-        {
-            var column = new DataTableColumn();
-            int field = 0;
-            column.TableSchema = rdr.GetAsString(field++);
-            column.TableName = rdr.GetAsString(field++);
-            column.ColumnName = rdr.GetAsString(field++);
-            string nullableStr = rdr.GetAsString(field++);
-            column.Nullable = nullableStr == "YES";
-            column.SqlType = rdr.GetAsString(field++);
-            var domain_schema = rdr.GetAsString(field++);
-            var domain_name = rdr.GetAsString(field++);
-            column.DefaultValue = GetColumnDefaultValue(rdr.GetAsString(field++));
-            column.Generated = column.DefaultValue != null && column.DefaultValue.StartsWith("nextval(");
-
-            column.Length = rdr.GetAsNullableNumeric<long>(field++);
-            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
-            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
-
-            column.FullType = GetColumnFullType(domain_name, domain_schema, column);
-
-            return column;
-        }
-
-        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
-        {
-            const string sql = @"
-SELECT table_schema, table_name, column_name
-    ,is_nullable, data_type, domain_schema, domain_name, column_default
-    ,character_maximum_length, numeric_precision, numeric_scale
-FROM information_schema.COLUMNS
-WHERE table_catalog=:db
-    AND table_schema NOT IN ('pg_catalog','information_schema')
-ORDER BY ordinal_position
-";
-
-            return DataCommand.Find<IDataTableColumn>(connectionString, sql, ":db", databaseName, ReadColumn);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.PostgreSql
+{
+    partial class PgsqlSchemaLoader
+    {
+        protected virtual string GetColumnFullType(string domain_name, string domain_schema, IDataTableColumn column)
+        {
+            // TODO: uncomment
+            if (/* mmConfig.useDomainTypes && */domain_name != null)
+                return domain_schema + "." + domain_name; //without precision - precision is already defined in CREATE DOMAIN
+
+            if (column.Length != null)
+                return column.SqlType + "(" + column.Length + ")";
+            if (column.Precision != null && column.Scale != null)
+                return column.SqlType + "(" + column.Precision + "," + column.Scale + ")";
+            return column.SqlType;
+        }
+
+        protected virtual string GetColumnDefaultValue(string defaultValue)
+        {
+            if (defaultValue == null)
+                return defaultValue;
+            // nextval('suppliers_supplierid_seq'::regclass)
+            return defaultValue.Replace("::regclass)", ")");
+        }
+
+        protected virtual IDataTableColumn ReadColumn(IDataReader rdr)
+        {
+            var column = new DataTableColumn();
+            int field = 0;
+            column.TableSchema = rdr.GetAsString(field++);
+            column.TableName = rdr.GetAsString(field++);
+            column.ColumnName = rdr.GetAsString(field++);
+            string nullableStr = rdr.GetAsString(field++);
+            column.Nullable = nullableStr == "YES";
+            column.SqlType = rdr.GetAsString(field++);
+            var domain_schema = rdr.GetAsString(field++);
+            var domain_name = rdr.GetAsString(field++);
+            column.DefaultValue = GetColumnDefaultValue(rdr.GetAsString(field++));
+            column.Generated = column.DefaultValue != null && column.DefaultValue.StartsWith("nextval(");
+
+            column.Length = rdr.GetAsNullableNumeric<long>(field++);
+            column.Precision = rdr.GetAsNullableNumeric<int>(field++);
+            column.Scale = rdr.GetAsNullableNumeric<int>(field++);
+
+            column.FullType = GetColumnFullType(domain_name, domain_schema, column);
+
+            return column;
+        }
+
+        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
+        {
+            const string sql = @"
+SELECT table_schema, table_name, column_name
+    ,is_nullable, data_type, domain_schema, domain_name, column_default
+    ,character_maximum_length, numeric_precision, numeric_scale
+FROM information_schema.COLUMNS
+WHERE table_catalog=:db
+    AND table_schema NOT IN ('pg_catalog','information_schema')
+ORDER BY ordinal_position
+";
+
+            return DataCommand.Find<IDataTableColumn>(connectionString, sql, ":db", databaseName, ReadColumn);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.Constraints.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.Constraints.cs
@@ -1,119 +1,119 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-
-namespace DbLinq.PostgreSql
-{
-    partial class PgsqlSchemaLoader
-    {
-        /// <summary>
-        /// row data from tables table_constraints, constraint_column_usage
-        /// </summary>
-        protected class DataForeignConstraint
-        {
-            public string ConstraintName;
-            public string TableName;
-            public string ConstraintType;
-            public string ReferencedTableSchema;
-            public string ReferencedTableName;
-            public string ColumnName;
-
-            public override string ToString()
-            {
-                return "ForKeyXR " + ConstraintName + ": " + ConstraintType + "  " + TableName + "->" + ReferencedTableName;
-            }
-        }
-
-        protected virtual DataForeignConstraint ReadForeignConstraint(IDataReader rdr)
-        {
-            var t = new DataForeignConstraint();
-            int field = 0;
-            t.ConstraintName = rdr.GetAsString(field++);
-            t.TableName = rdr.GetAsString(field++);
-            t.ConstraintType = rdr.GetAsString(field++);
-            t.ReferencedTableSchema = rdr.GetAsString(field++);
-            t.ReferencedTableName = rdr.GetAsString(field++);
-            t.ColumnName = rdr.GetAsString(field++);
-            return t;
-        }
-
-        protected virtual List<DataForeignConstraint> ReadForeignConstraints(IDbConnection conn, string db)
-        {
-            string sql = @"
-SELECT t.constraint_name, t.table_name, t.constraint_type,
-    c.table_schema, c.table_name, c.column_name
-FROM information_schema.table_constraints t,
-    information_schema.constraint_column_usage c
-WHERE t.constraint_name = c.constraint_name
-    and t.constraint_type IN  ('FOREIGN KEY','PRIMARY KEY')";
-
-            return DataCommand.Find<DataForeignConstraint>(conn, sql, ":db", db, ReadForeignConstraint);
-        }
-
-
-        /// <summary>
-        /// represents one row from Postgres' information_schema.`Key_Column_Usage` table
-        /// </summary>
-        protected class DataConstraint
-        {
-            public string ConstraintName;
-            public string TableSchema;
-            public string TableName;
-            public string ColumnName;
-
-            public override string ToString()
-            {
-                return "KeyColUsage " + ConstraintName + ":  " + TableName + "." + ColumnName;
-            }
-        }
-
-        protected virtual DataConstraint ReadConstraint(IDataReader rdr)
-        {
-            DataConstraint t = new DataConstraint();
-            int field = 0;
-            t.ConstraintName = rdr.GetAsString(field++);
-            t.TableSchema = rdr.GetAsString(field++);
-            t.TableName = rdr.GetAsString(field++);
-            t.ColumnName = rdr.GetAsString(field++);
-            return t;
-        }
-
-        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
-        {
-            string sql = @"
-SELECT constraint_name,table_schema,table_name
-    ,column_name
-FROM information_schema.KEY_COLUMN_USAGE
-WHERE constraint_catalog=:db";
-
-            return DataCommand.Find<DataConstraint>(conn, sql, ":db", db, ReadConstraint);
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+
+namespace DbLinq.PostgreSql
+{
+    partial class PgsqlSchemaLoader
+    {
+        /// <summary>
+        /// row data from tables table_constraints, constraint_column_usage
+        /// </summary>
+        protected class DataForeignConstraint
+        {
+            public string ConstraintName;
+            public string TableName;
+            public string ConstraintType;
+            public string ReferencedTableSchema;
+            public string ReferencedTableName;
+            public string ColumnName;
+
+            public override string ToString()
+            {
+                return "ForKeyXR " + ConstraintName + ": " + ConstraintType + "  " + TableName + "->" + ReferencedTableName;
+            }
+        }
+
+        protected virtual DataForeignConstraint ReadForeignConstraint(IDataReader rdr)
+        {
+            var t = new DataForeignConstraint();
+            int field = 0;
+            t.ConstraintName = rdr.GetAsString(field++);
+            t.TableName = rdr.GetAsString(field++);
+            t.ConstraintType = rdr.GetAsString(field++);
+            t.ReferencedTableSchema = rdr.GetAsString(field++);
+            t.ReferencedTableName = rdr.GetAsString(field++);
+            t.ColumnName = rdr.GetAsString(field++);
+            return t;
+        }
+
+        protected virtual List<DataForeignConstraint> ReadForeignConstraints(IDbConnection conn, string db)
+        {
+            string sql = @"
+SELECT t.constraint_name, t.table_name, t.constraint_type,
+    c.table_schema, c.table_name, c.column_name
+FROM information_schema.table_constraints t,
+    information_schema.constraint_column_usage c
+WHERE t.constraint_name = c.constraint_name
+    and t.constraint_type IN  ('FOREIGN KEY','PRIMARY KEY')";
+
+            return DataCommand.Find<DataForeignConstraint>(conn, sql, ":db", db, ReadForeignConstraint);
+        }
+
+
+        /// <summary>
+        /// represents one row from Postgres' information_schema.`Key_Column_Usage` table
+        /// </summary>
+        protected class DataConstraint
+        {
+            public string ConstraintName;
+            public string TableSchema;
+            public string TableName;
+            public string ColumnName;
+
+            public override string ToString()
+            {
+                return "KeyColUsage " + ConstraintName + ":  " + TableName + "." + ColumnName;
+            }
+        }
+
+        protected virtual DataConstraint ReadConstraint(IDataReader rdr)
+        {
+            DataConstraint t = new DataConstraint();
+            int field = 0;
+            t.ConstraintName = rdr.GetAsString(field++);
+            t.TableSchema = rdr.GetAsString(field++);
+            t.TableName = rdr.GetAsString(field++);
+            t.ColumnName = rdr.GetAsString(field++);
+            return t;
+        }
+
+        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
+        {
+            string sql = @"
+SELECT constraint_name,table_schema,table_name
+    ,column_name
+FROM information_schema.KEY_COLUMN_USAGE
+WHERE constraint_catalog=:db";
+
+            return DataCommand.Find<DataConstraint>(conn, sql, ":db", db, ReadConstraint);
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.StoredProcedures.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.StoredProcedures.cs
@@ -1,137 +1,137 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using DbLinq.Util;
-
-namespace DbLinq.PostgreSql
-{
-    partial class PgsqlSchemaLoader
-    {
-        /// <summary>
-        /// represents one row from pg_proc table
-        /// </summary>
-        protected class DataStoredProcedure
-        {
-            public long proowner;
-            public string proname;
-            public bool proretset;
-            public long prorettype;
-            public string formatted_prorettype;
-
-            /// <summary>
-            /// species types of in-args, eg. '23 1043'
-            /// </summary>
-            public string proargtypes;
-
-            /// <summary>
-            /// species types of in,out args, eg. '{23,1043,1043}'
-            /// </summary>
-            public string proallargtypes;
-
-            /// <summary>
-            /// param names, eg {i1,i2,o2}
-            /// </summary>
-            public string proargnames;
-
-            /// <summary>
-            /// specifies in/out modes - eg. '{i,i,o}'
-            /// </summary>
-            public string proargmodes;
-
-            public override string ToString() { return "Pg_Proc " + proname; }
-        }
-
-        protected virtual DataStoredProcedure ReadProcedure(IDataReader rdr)
-        {
-            DataStoredProcedure procedure = new DataStoredProcedure();
-            int field = 0;
-            procedure.proowner = rdr.GetAsNumeric<long>(field++);
-            procedure.proname = rdr.GetAsString(field++);
-            procedure.proretset = rdr.GetAsBool(field++);
-            procedure.prorettype = rdr.GetAsNumeric<long>(field++);
-            procedure.formatted_prorettype = rdr.GetAsString(field++);
-            procedure.proargtypes = rdr.GetAsString(field++);
-            procedure.proallargtypes = rdr.GetAsString( field++);
-            procedure.proargnames = rdr.GetAsString(field++);
-            procedure.proargmodes = rdr.GetAsString(field++);
-            return procedure;
-        }
-
-        protected virtual List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
-        {
-            string sql = @"
-SELECT pr.proowner, pr.proname, pr.proretset, pr.prorettype, pg_catalog.format_type(pr.prorettype, NULL) 
-  ,pr.proargtypes, pr.proallargtypes, pr.proargnames, pr.proargmodes
-FROM pg_proc pr, pg_type tp 
-WHERE tp.oid = pr.prorettype AND pr.proisagg = FALSE 
-AND tp.typname <> 'trigger' 
-AND pr.pronamespace IN ( SELECT oid FROM pg_namespace 
-WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema' ); 
-
-";
-
-            return DataCommand.Find<DataStoredProcedure>(conn, sql, ":db", db, ReadProcedure);
-        }
-
-        protected virtual int GetTypeNames(IDbConnection conn, string db, Dictionary<long, string> oid_to_name_map)
-        {
-            string sql = @"
-SELECT pg_catalog.format_type(:typeOid, NULL)
-";
-            int numDone = 0;
-
-            //clone to prevent 'collection was modified' exception
-            Dictionary<long, string> oid_to_name_map2 = new Dictionary<long, string>(oid_to_name_map);
-
-            foreach (var kv in oid_to_name_map2)
-            {
-                using (IDbCommand cmd = conn.CreateCommand())
-                {
-                    cmd.CommandText = sql;
-                    if (kv.Value != null)
-                        continue; //value already known
-
-                    long typeOid = kv.Key;
-                    IDbDataParameter parameter = cmd.CreateParameter();
-                    parameter.ParameterName = ":typeOid";
-                    parameter.Value = typeOid;
-                    cmd.Parameters.Add(parameter);
-                    //cmd.CommandText = sql.Replace(":typeOid", typeOid.ToString());
-                    numDone++;
-                    object typeName1 = cmd.ExecuteScalar();
-                    string typeName2 = typeName1 as string;
-                    oid_to_name_map[typeOid] = typeName2; //eg. dic[23] = "integer"
-                }
-            }
-            return numDone;
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using DbLinq.Util;
+
+namespace DbLinq.PostgreSql
+{
+    partial class PgsqlSchemaLoader
+    {
+        /// <summary>
+        /// represents one row from pg_proc table
+        /// </summary>
+        protected class DataStoredProcedure
+        {
+            public long proowner;
+            public string proname;
+            public bool proretset;
+            public long prorettype;
+            public string formatted_prorettype;
+
+            /// <summary>
+            /// species types of in-args, eg. '23 1043'
+            /// </summary>
+            public string proargtypes;
+
+            /// <summary>
+            /// species types of in,out args, eg. '{23,1043,1043}'
+            /// </summary>
+            public string proallargtypes;
+
+            /// <summary>
+            /// param names, eg {i1,i2,o2}
+            /// </summary>
+            public string proargnames;
+
+            /// <summary>
+            /// specifies in/out modes - eg. '{i,i,o}'
+            /// </summary>
+            public string proargmodes;
+
+            public override string ToString() { return "Pg_Proc " + proname; }
+        }
+
+        protected virtual DataStoredProcedure ReadProcedure(IDataReader rdr)
+        {
+            DataStoredProcedure procedure = new DataStoredProcedure();
+            int field = 0;
+            procedure.proowner = rdr.GetAsNumeric<long>(field++);
+            procedure.proname = rdr.GetAsString(field++);
+            procedure.proretset = rdr.GetAsBool(field++);
+            procedure.prorettype = rdr.GetAsNumeric<long>(field++);
+            procedure.formatted_prorettype = rdr.GetAsString(field++);
+            procedure.proargtypes = rdr.GetAsString(field++);
+            procedure.proallargtypes = rdr.GetAsString( field++);
+            procedure.proargnames = rdr.GetAsString(field++);
+            procedure.proargmodes = rdr.GetAsString(field++);
+            return procedure;
+        }
+
+        protected virtual List<DataStoredProcedure> ReadProcedures(IDbConnection conn, string db)
+        {
+            string sql = @"
+SELECT pr.proowner, pr.proname, pr.proretset, pr.prorettype, pg_catalog.format_type(pr.prorettype, NULL) 
+  ,pr.proargtypes, pr.proallargtypes, pr.proargnames, pr.proargmodes
+FROM pg_proc pr, pg_type tp 
+WHERE tp.oid = pr.prorettype AND pr.proisagg = FALSE 
+AND tp.typname <> 'trigger' 
+AND pr.pronamespace IN ( SELECT oid FROM pg_namespace 
+WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema' ); 
+
+";
+
+            return DataCommand.Find<DataStoredProcedure>(conn, sql, ":db", db, ReadProcedure);
+        }
+
+        protected virtual int GetTypeNames(IDbConnection conn, string db, Dictionary<long, string> oid_to_name_map)
+        {
+            string sql = @"
+SELECT pg_catalog.format_type(:typeOid, NULL)
+";
+            int numDone = 0;
+
+            //clone to prevent 'collection was modified' exception
+            Dictionary<long, string> oid_to_name_map2 = new Dictionary<long, string>(oid_to_name_map);
+
+            foreach (var kv in oid_to_name_map2)
+            {
+                using (IDbCommand cmd = conn.CreateCommand())
+                {
+                    cmd.CommandText = sql;
+                    if (kv.Value != null)
+                        continue; //value already known
+
+                    long typeOid = kv.Key;
+                    IDbDataParameter parameter = cmd.CreateParameter();
+                    parameter.ParameterName = ":typeOid";
+                    parameter.Value = typeOid;
+                    cmd.Parameters.Add(parameter);
+                    //cmd.CommandText = sql.Replace(":typeOid", typeOid.ToString());
+                    numDone++;
+                    object typeName1 = cmd.ExecuteScalar();
+                    string typeName2 = typeName1 as string;
+                    oid_to_name_map[typeOid] = typeName2; //eg. dic[23] = "integer"
+                }
+            }
+            return numDone;
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.Tables.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.Tables.cs
@@ -1,47 +1,47 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.PostgreSql
-{
-    partial class PgsqlSchemaLoader
-    {
-        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
-        {
-            // note: the ReadDataNameAndSchema relies on information order
-            const string sql = @"
-SELECT table_name, table_schema
-FROM information_schema.TABLES
-WHERE table_catalog=:db
-AND table_schema NOT IN ('pg_catalog','information_schema')";
-
-            return DataCommand.Find<IDataName>(connectionString, sql, ":db", databaseName, ReadDataNameAndSchema);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.PostgreSql
+{
+    partial class PgsqlSchemaLoader
+    {
+        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
+        {
+            // note: the ReadDataNameAndSchema relies on information order
+            const string sql = @"
+SELECT table_name, table_schema
+FROM information_schema.TABLES
+WHERE table_catalog=:db
+AND table_schema NOT IN ('pg_catalog','information_schema')";
+
+            return DataCommand.Find<IDataName>(connectionString, sql, ":db", databaseName, ReadDataNameAndSchema);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSchemaLoader.cs
@@ -1,235 +1,235 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.PostgreSql
-{
-    partial class PgsqlSchemaLoader : SchemaLoader
-    {
-        private readonly Vendor.IVendor vendor = new PgsqlVendor();
-        public override Vendor.IVendor Vendor { get { return vendor; } set { } }
-
-        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
-        {
-            var procs = ReadProcedures(conn, schemaName.DbName);
-
-            //4a. determine unknown types
-            Dictionary<long, string> typeOidToName = new Dictionary<long, string>();
-
-            foreach (DataStoredProcedure proc in procs)
-            {
-                if (proc.proallargtypes == null && !string.IsNullOrEmpty(proc.proargtypes))
-                    proc.proallargtypes = "{" + proc.proargtypes.Replace(' ', ',') + "}"; //work around pgsql weirdness?
-            }
-
-            foreach (DataStoredProcedure proc in procs)
-            {
-                typeOidToName[proc.prorettype] = proc.formatted_prorettype;
-                if (proc.proallargtypes == null)
-                    continue; //no args, no Oids to resolve, skip
-
-                string[] argTypes1 = parseCsvString(proc.proallargtypes); //eg. {23,24,1043}
-                var argTypes2 = from t in argTypes1 select long.Parse(t);
-
-                foreach (long argType in argTypes2)
-                {
-                    if (!typeOidToName.ContainsKey(argType))
-                        typeOidToName[argType] = null;
-                }
-            }
-
-            //4b. get names for unknown types
-            GetTypeNames(conn, schemaName.DbName, typeOidToName);
-
-            //4c. generate dbml objects
-            foreach (DataStoredProcedure proc in procs)
-            {
-                DbLinq.Schema.Dbml.Function dbml_fct = ParseFunction(proc, typeOidToName, nameFormat);
-                if (!SkipProc(dbml_fct.Name))
-                    schema.Functions.Add(dbml_fct);
-            }
-        }
-
-        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
-        {
-            //TableSorter.Sort(tables, constraints); //sort tables - parents first
-
-            var constraints = ReadConstraints(conn, schemaName.DbName);
-
-            var allKeys2 = ReadForeignConstraints(conn, schemaName.DbName);
-            var foreignKeys = allKeys2.Where(k => k.ConstraintType == "FOREIGN KEY").ToList();
-            var primaryKeys = allKeys2.Where(k => k.ConstraintType == "PRIMARY KEY").ToList();
-
-
-            foreach (DataConstraint keyColRow in constraints)
-            {
-                //find my table:
-                string constraintFullDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
-                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => constraintFullDbName == t.Name);
-                if (table == null)
-                {
-                    WriteErrorLine("ERROR L138: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
-                    continue;
-                }
-
-                //todo: must understand better how PKEYs are encoded.
-                //In Sasha's DB, they don't end with "_pkey", you need to rely on ReadForeignConstraints().
-                //In Northwind, they do end with "_pkey".
-                bool isPrimaryKey = keyColRow.ConstraintName.EndsWith("_pkey")
-                    || primaryKeys.Count(k => k.ConstraintName == keyColRow.ConstraintName) > 0;
-
-                if (isPrimaryKey)
-                {
-                    //A) add primary key
-                    DbLinq.Schema.Dbml.Column primaryKeyCol = table.Type.Columns.First(c => c.Name == keyColRow.ColumnName);
-                    primaryKeyCol.IsPrimaryKey = true;
-                }
-                else
-                {
-                    DataForeignConstraint dataForeignConstraint = foreignKeys.FirstOrDefault(f => f.ConstraintName == keyColRow.ConstraintName);
-
-                    if (dataForeignConstraint == null)
-                    {
-                        string msg = "Missing data from 'constraint_column_usage' for foreign key " + keyColRow.ConstraintName;
-                        WriteErrorLine(msg);
-                        //throw new ApplicationException(msg);
-                        continue; //as per Andrus, do not throw. //putting together an Adnrus_DB test case.
-                    }
-
-                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
-                                   dataForeignConstraint.ColumnName, dataForeignConstraint.ReferencedTableName,
-                                   dataForeignConstraint.ReferencedTableSchema,
-                                   keyColRow.ConstraintName, nameFormat, names);
-
-                }
-
-            }
-        }
-
-        #region function parsing
-
-        /// <summary>
-        /// parse pg param modes string such as '{i,i,o}'
-        /// </summary>
-        static string[] parseCsvString(string csvString)
-        {
-            if (csvString == null || (!csvString.StartsWith("{")) || (!csvString.EndsWith("}")))
-                return null;
-            string middle = csvString.Substring(1, csvString.Length - 2);
-            string[] parts = middle.Split(',');
-            return parts;
-        }
-
-        Function ParseFunction(DataStoredProcedure pg_proc, Dictionary<long, string> typeOidToName, NameFormat nameFormat)
-        {
-            var procedureName = CreateProcedureName(pg_proc.proname, null, nameFormat);
-
-            DbLinq.Schema.Dbml.Function dbml_func = new Function();
-            dbml_func.Name = procedureName.DbName;
-            dbml_func.Method = procedureName.MethodName;
-
-            if (pg_proc.formatted_prorettype != null && string.Compare(pg_proc.formatted_prorettype, "void") != 0)
-            {
-                var dbml_param = new Return();
-                dbml_param.DbType = pg_proc.formatted_prorettype;
-                dbml_param.Type = MapDbType(null, new DataType { SqlType = pg_proc.formatted_prorettype }).ToString();
-                dbml_func.Return = dbml_param;
-                dbml_func.IsComposable = true;
-            }
-
-            if (pg_proc.proallargtypes != null)
-            {
-                string[] argModes = parseCsvString(pg_proc.proargmodes);
-                string[] argNames = parseCsvString(pg_proc.proargnames);
-                string[] argTypes1 = parseCsvString(pg_proc.proallargtypes); //eg. {23,24,1043}
-                List<long> argTypes2 = (from t in argTypes1 select long.Parse(t)).ToList();
-
-                if (argNames == null)
-                {
-                    //proc was specified as 'FUNCTION doverlaps(IN date)' - names not specified
-                    argNames = new string[argTypes1.Length];
-                    for (int i = 0; i < argNames.Length; i++) { argNames[i] = ((char)('a' + i)).ToString(); }
-                }
-
-                bool doLengthsMatch = (argTypes2.Count != argNames.Length
-                    || (argModes != null && argModes.Length != argNames.Length));
-                if (doLengthsMatch)
-                {
-                    WriteErrorLine("L238 Mistmatch between modesArr, typeArr and nameArr for func " + pg_proc.proname);
-                    return null;
-                }
-
-                for (int i = 0; i < argNames.Length; i++)
-                {
-                    DbLinq.Schema.Dbml.Parameter dbml_param = new Parameter();
-                    long argTypeOid = argTypes2[i];
-                    dbml_param.DbType = typeOidToName[argTypeOid];
-                    dbml_param.Name = argNames[i];
-                    dbml_param.Type = MapDbType(argNames[i], new DataType { SqlType = dbml_param.DbType }).ToString();
-                    string inOut = argModes == null ? "i" : argModes[i];
-                    dbml_param.Direction = ParseInOut(inOut);
-                    dbml_func.Parameters.Add(dbml_param);
-                }
-            }
-
-            return dbml_func;
-        }
-
-        static DbLinq.Schema.Dbml.ParameterDirection ParseInOut(string inOut)
-        {
-            switch (inOut)
-            {
-            case "i": return DbLinq.Schema.Dbml.ParameterDirection.In;
-            case "o": return DbLinq.Schema.Dbml.ParameterDirection.Out;
-            case "b": return DbLinq.Schema.Dbml.ParameterDirection.InOut;
-            default: return DbLinq.Schema.Dbml.ParameterDirection.InOut;
-            }
-        }
-
-        #endregion
-
-        private bool SkipProc(string name)
-        {
-            //string[] prefixes = System.Configuration.ConfigurationManager.AppSettings["postgresqlSkipProcPrefixes"].Split(',');
-            string[] prefixes = { "pldbg", "gbtreekey", "gbt_", "pg_buffercache", "plpgsql_", "plpgsql_call_handler" };
-
-            foreach (string s in prefixes)
-            {
-                if (name.StartsWith(s))
-                    return true;
-            }
-            return false;
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.PostgreSql
+{
+    partial class PgsqlSchemaLoader : SchemaLoader
+    {
+        private readonly Vendor.IVendor vendor = new PgsqlVendor();
+        public override Vendor.IVendor Vendor { get { return vendor; } set { } }
+
+        protected override void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
+        {
+            var procs = ReadProcedures(conn, schemaName.DbName);
+
+            //4a. determine unknown types
+            Dictionary<long, string> typeOidToName = new Dictionary<long, string>();
+
+            foreach (DataStoredProcedure proc in procs)
+            {
+                if (proc.proallargtypes == null && !string.IsNullOrEmpty(proc.proargtypes))
+                    proc.proallargtypes = "{" + proc.proargtypes.Replace(' ', ',') + "}"; //work around pgsql weirdness?
+            }
+
+            foreach (DataStoredProcedure proc in procs)
+            {
+                typeOidToName[proc.prorettype] = proc.formatted_prorettype;
+                if (proc.proallargtypes == null)
+                    continue; //no args, no Oids to resolve, skip
+
+                string[] argTypes1 = parseCsvString(proc.proallargtypes); //eg. {23,24,1043}
+                var argTypes2 = from t in argTypes1 select long.Parse(t);
+
+                foreach (long argType in argTypes2)
+                {
+                    if (!typeOidToName.ContainsKey(argType))
+                        typeOidToName[argType] = null;
+                }
+            }
+
+            //4b. get names for unknown types
+            GetTypeNames(conn, schemaName.DbName, typeOidToName);
+
+            //4c. generate dbml objects
+            foreach (DataStoredProcedure proc in procs)
+            {
+                DbLinq.Schema.Dbml.Function dbml_fct = ParseFunction(proc, typeOidToName, nameFormat);
+                if (!SkipProc(dbml_fct.Name))
+                    schema.Functions.Add(dbml_fct);
+            }
+        }
+
+        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
+        {
+            //TableSorter.Sort(tables, constraints); //sort tables - parents first
+
+            var constraints = ReadConstraints(conn, schemaName.DbName);
+
+            var allKeys2 = ReadForeignConstraints(conn, schemaName.DbName);
+            var foreignKeys = allKeys2.Where(k => k.ConstraintType == "FOREIGN KEY").ToList();
+            var primaryKeys = allKeys2.Where(k => k.ConstraintType == "PRIMARY KEY").ToList();
+
+
+            foreach (DataConstraint keyColRow in constraints)
+            {
+                //find my table:
+                string constraintFullDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
+                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => constraintFullDbName == t.Name);
+                if (table == null)
+                {
+                    WriteErrorLine("ERROR L138: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
+                    continue;
+                }
+
+                //todo: must understand better how PKEYs are encoded.
+                //In Sasha's DB, they don't end with "_pkey", you need to rely on ReadForeignConstraints().
+                //In Northwind, they do end with "_pkey".
+                bool isPrimaryKey = keyColRow.ConstraintName.EndsWith("_pkey")
+                    || primaryKeys.Count(k => k.ConstraintName == keyColRow.ConstraintName) > 0;
+
+                if (isPrimaryKey)
+                {
+                    //A) add primary key
+                    DbLinq.Schema.Dbml.Column primaryKeyCol = table.Type.Columns.First(c => c.Name == keyColRow.ColumnName);
+                    primaryKeyCol.IsPrimaryKey = true;
+                }
+                else
+                {
+                    DataForeignConstraint dataForeignConstraint = foreignKeys.FirstOrDefault(f => f.ConstraintName == keyColRow.ConstraintName);
+
+                    if (dataForeignConstraint == null)
+                    {
+                        string msg = "Missing data from 'constraint_column_usage' for foreign key " + keyColRow.ConstraintName;
+                        WriteErrorLine(msg);
+                        //throw new ApplicationException(msg);
+                        continue; //as per Andrus, do not throw. //putting together an Adnrus_DB test case.
+                    }
+
+                    LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
+                                   dataForeignConstraint.ColumnName, dataForeignConstraint.ReferencedTableName,
+                                   dataForeignConstraint.ReferencedTableSchema,
+                                   keyColRow.ConstraintName, nameFormat, names);
+
+                }
+
+            }
+        }
+
+        #region function parsing
+
+        /// <summary>
+        /// parse pg param modes string such as '{i,i,o}'
+        /// </summary>
+        static string[] parseCsvString(string csvString)
+        {
+            if (csvString == null || (!csvString.StartsWith("{")) || (!csvString.EndsWith("}")))
+                return null;
+            string middle = csvString.Substring(1, csvString.Length - 2);
+            string[] parts = middle.Split(',');
+            return parts;
+        }
+
+        Function ParseFunction(DataStoredProcedure pg_proc, Dictionary<long, string> typeOidToName, NameFormat nameFormat)
+        {
+            var procedureName = CreateProcedureName(pg_proc.proname, null, nameFormat);
+
+            DbLinq.Schema.Dbml.Function dbml_func = new Function();
+            dbml_func.Name = procedureName.DbName;
+            dbml_func.Method = procedureName.MethodName;
+
+            if (pg_proc.formatted_prorettype != null && string.Compare(pg_proc.formatted_prorettype, "void") != 0)
+            {
+                var dbml_param = new Return();
+                dbml_param.DbType = pg_proc.formatted_prorettype;
+                dbml_param.Type = MapDbType(null, new DataType { SqlType = pg_proc.formatted_prorettype }).ToString();
+                dbml_func.Return = dbml_param;
+                dbml_func.IsComposable = true;
+            }
+
+            if (pg_proc.proallargtypes != null)
+            {
+                string[] argModes = parseCsvString(pg_proc.proargmodes);
+                string[] argNames = parseCsvString(pg_proc.proargnames);
+                string[] argTypes1 = parseCsvString(pg_proc.proallargtypes); //eg. {23,24,1043}
+                List<long> argTypes2 = (from t in argTypes1 select long.Parse(t)).ToList();
+
+                if (argNames == null)
+                {
+                    //proc was specified as 'FUNCTION doverlaps(IN date)' - names not specified
+                    argNames = new string[argTypes1.Length];
+                    for (int i = 0; i < argNames.Length; i++) { argNames[i] = ((char)('a' + i)).ToString(); }
+                }
+
+                bool doLengthsMatch = (argTypes2.Count != argNames.Length
+                    || (argModes != null && argModes.Length != argNames.Length));
+                if (doLengthsMatch)
+                {
+                    WriteErrorLine("L238 Mistmatch between modesArr, typeArr and nameArr for func " + pg_proc.proname);
+                    return null;
+                }
+
+                for (int i = 0; i < argNames.Length; i++)
+                {
+                    DbLinq.Schema.Dbml.Parameter dbml_param = new Parameter();
+                    long argTypeOid = argTypes2[i];
+                    dbml_param.DbType = typeOidToName[argTypeOid];
+                    dbml_param.Name = argNames[i];
+                    dbml_param.Type = MapDbType(argNames[i], new DataType { SqlType = dbml_param.DbType }).ToString();
+                    string inOut = argModes == null ? "i" : argModes[i];
+                    dbml_param.Direction = ParseInOut(inOut);
+                    dbml_func.Parameters.Add(dbml_param);
+                }
+            }
+
+            return dbml_func;
+        }
+
+        static DbLinq.Schema.Dbml.ParameterDirection ParseInOut(string inOut)
+        {
+            switch (inOut)
+            {
+            case "i": return DbLinq.Schema.Dbml.ParameterDirection.In;
+            case "o": return DbLinq.Schema.Dbml.ParameterDirection.Out;
+            case "b": return DbLinq.Schema.Dbml.ParameterDirection.InOut;
+            default: return DbLinq.Schema.Dbml.ParameterDirection.InOut;
+            }
+        }
+
+        #endregion
+
+        private bool SkipProc(string name)
+        {
+            //string[] prefixes = System.Configuration.ConfigurationManager.AppSettings["postgresqlSkipProcPrefixes"].Split(',');
+            string[] prefixes = { "pldbg", "gbtreekey", "gbt_", "pg_buffercache", "plpgsql_", "plpgsql_call_handler" };
+
+            foreach (string s in prefixes)
+            {
+                if (name.StartsWith(s))
+                    return true;
+            }
+            return false;
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlSqlProvider.cs
@@ -1,149 +1,149 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.PostgreSql
-{
-#if !MONO_STRICT
-    public
-#endif
-    class PgsqlSqlProvider : SqlProvider
-    {
-        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
-        {
-            // No parameters? no need to get them back.
-            
-            if (outputParameters.Count == 0)
-                return SqlStatement.Empty;
-            
-            // Otherwise we keep track of the new values. Note that we avoid null expressions
-            // that can be present in the passed list (is this a bug above us?)
-            
-            IList<SqlStatement> ids = new List<SqlStatement>();           
-            foreach (SqlStatement outputExpression in outputExpressions) {
-                if (outputExpression != null)
-                    ids.Add(outputExpression.Replace("nextval(", "currval(", true));
-            }
-            return SqlStatement.Format("SELECT {0}", SqlStatement.Join(", ", ids.ToArray()));
-        }
-
-        public override SqlStatement GetLiteral(DateTime literal)
-        {
-            return "'" + literal.ToString("o") + "'::timestamp";
-        }        
-        
-        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
-        {
-            return string.Format("UPPER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
-        {
-            return string.Format("LOWER({0})", a);
-        }
-        
-        protected override SqlStatement GetLiteralDateDiff(SqlStatement dateA, SqlStatement dateB)
-        {
-            return string.Format("(EXTRACT(EPOCH FROM ({0})::timestamp)-EXTRACT(EPOCH FROM ({1})::timestamp))*1000", dateA, dateB);
-        }
-                 
-        protected override SqlStatement GetLiteralEqual(SqlStatement a, SqlStatement b)
-        {
-            // PostgreSQL return NULL (and not a boolean) for every comparaison involving
-            // a NULL value, unless the operator used is "IS" (or "IS NOT"). Also,
-            // using those two operators when the right-hand value is not a literal
-            // NULL is an error. The only possibility is to explicitly check for NULL
-            // literals and even swap the operands to make sure NULL gets to the
-            // right place.
-            
-            if (b.Count == 1 && b[0].Sql == "NULL")
-                return SqlStatement.Format("{0} IS {1}", a, b);
-            else if (a.Count == 1 && a[0].Sql == "NULL")
-                return SqlStatement.Format("{0} IS {1}", b, a);
-            else
-                return SqlStatement.Format("{0} = {1}", a, b);
-        }
-        
-        protected override SqlStatement GetLiteralNotEqual(SqlStatement a, SqlStatement b)
-        {
-            // See comment above, in GetLiteralEqual().
-            
-            if (b.Count == 1 && b[0].Sql == "NULL")
-                return SqlStatement.Format("{0} IS NOT {1}", a, b);
-            else if (a.Count == 1 && a[0].Sql == "NULL")
-                return SqlStatement.Format("{0} IS NOT {1}", b, a);
-            else
-                return SqlStatement.Format("{0} <> {1}", a, b);
-        }        
-
-        public static readonly Dictionary<Type, string> typeMapping = new Dictionary<Type, string>
-                                                                          {
-            {typeof(int),"integer"},
-            {typeof(uint),"integer"},
-
-            {typeof(long),"bigint"},
-            {typeof(ulong),"bigint"},
-
-            {typeof(float),"real"}, //TODO: could be float or real. check ranges.
-            {typeof(double),"double precision"}, //TODO: could be float or real. check ranges.
-            
-            {typeof(decimal),"decimal"},
-
-            {typeof(short),"smallint"},
-            {typeof(ushort),"smallint"},
-
-            {typeof(bool),"boolean"},
-
-            {typeof(string),"text"}, 
-            {typeof(char[]),"text"},
-
-            {typeof(char),"char"},
-
-            {typeof(DateTime),"timestamp"},
-            //{typeof(Guid),"uniqueidentifier"}
-            {typeof(byte[]),"bytea"},
-        };
-
-        public override SqlStatement GetLiteralConvert(SqlStatement a, Type type)
-        {
-            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
-                type = type.GetGenericArguments().First();
-
-            string sqlTypeName;
-            if (typeMapping.ContainsKey(type))
-                sqlTypeName = typeMapping[type];
-            else
-                sqlTypeName = type.Name;
-
-            return string.Format("({0})::{1}", a, sqlTypeName);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.PostgreSql
+{
+#if !MONO_STRICT
+    public
+#endif
+    class PgsqlSqlProvider : SqlProvider
+    {
+        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
+        {
+            // No parameters? no need to get them back.
+            
+            if (outputParameters.Count == 0)
+                return SqlStatement.Empty;
+            
+            // Otherwise we keep track of the new values. Note that we avoid null expressions
+            // that can be present in the passed list (is this a bug above us?)
+            
+            IList<SqlStatement> ids = new List<SqlStatement>();           
+            foreach (SqlStatement outputExpression in outputExpressions) {
+                if (outputExpression != null)
+                    ids.Add(outputExpression.Replace("nextval(", "currval(", true));
+            }
+            return SqlStatement.Format("SELECT {0}", SqlStatement.Join(", ", ids.ToArray()));
+        }
+
+        public override SqlStatement GetLiteral(DateTime literal)
+        {
+            return "'" + literal.ToString("o") + "'::timestamp";
+        }        
+        
+        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
+        {
+            return string.Format("UPPER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
+        {
+            return string.Format("LOWER({0})", a);
+        }
+        
+        protected override SqlStatement GetLiteralDateDiff(SqlStatement dateA, SqlStatement dateB)
+        {
+            return string.Format("(EXTRACT(EPOCH FROM ({0})::timestamp)-EXTRACT(EPOCH FROM ({1})::timestamp))*1000", dateA, dateB);
+        }
+                 
+        protected override SqlStatement GetLiteralEqual(SqlStatement a, SqlStatement b)
+        {
+            // PostgreSQL return NULL (and not a boolean) for every comparaison involving
+            // a NULL value, unless the operator used is "IS" (or "IS NOT"). Also,
+            // using those two operators when the right-hand value is not a literal
+            // NULL is an error. The only possibility is to explicitly check for NULL
+            // literals and even swap the operands to make sure NULL gets to the
+            // right place.
+            
+            if (b.Count == 1 && b[0].Sql == "NULL")
+                return SqlStatement.Format("{0} IS {1}", a, b);
+            else if (a.Count == 1 && a[0].Sql == "NULL")
+                return SqlStatement.Format("{0} IS {1}", b, a);
+            else
+                return SqlStatement.Format("{0} = {1}", a, b);
+        }
+        
+        protected override SqlStatement GetLiteralNotEqual(SqlStatement a, SqlStatement b)
+        {
+            // See comment above, in GetLiteralEqual().
+            
+            if (b.Count == 1 && b[0].Sql == "NULL")
+                return SqlStatement.Format("{0} IS NOT {1}", a, b);
+            else if (a.Count == 1 && a[0].Sql == "NULL")
+                return SqlStatement.Format("{0} IS NOT {1}", b, a);
+            else
+                return SqlStatement.Format("{0} <> {1}", a, b);
+        }        
+
+        public static readonly Dictionary<Type, string> typeMapping = new Dictionary<Type, string>
+                                                                          {
+            {typeof(int),"integer"},
+            {typeof(uint),"integer"},
+
+            {typeof(long),"bigint"},
+            {typeof(ulong),"bigint"},
+
+            {typeof(float),"real"}, //TODO: could be float or real. check ranges.
+            {typeof(double),"double precision"}, //TODO: could be float or real. check ranges.
+            
+            {typeof(decimal),"decimal"},
+
+            {typeof(short),"smallint"},
+            {typeof(ushort),"smallint"},
+
+            {typeof(bool),"boolean"},
+
+            {typeof(string),"text"}, 
+            {typeof(char[]),"text"},
+
+            {typeof(char),"char"},
+
+            {typeof(DateTime),"timestamp"},
+            //{typeof(Guid),"uniqueidentifier"}
+            {typeof(byte[]),"bytea"},
+        };
+
+        public override SqlStatement GetLiteralConvert(SqlStatement a, Type type)
+        {
+            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
+                type = type.GetGenericArguments().First();
+
+            string sqlTypeName;
+            if (typeMapping.ContainsKey(type))
+                sqlTypeName = typeMapping[type];
+            else
+                sqlTypeName = type.Name;
+
+            return string.Format("({0})::{1}", a, sqlTypeName);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/PgsqlVendor.cs
@@ -1,236 +1,236 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Linq;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using System.Collections.Generic;
-using DbLinq.Data.Linq.SqlClient;
-using DbLinq.PostgreSql;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-#if MONO_STRICT
-using DataContext=System.Data.Linq.DataContext;
-#else
-using DataContext=DbLinq.Data.Linq.DataContext;
-#endif
-
-namespace DbLinq.PostgreSql
-{
-#if !MONO_STRICT
-    public
-#endif
-    class PgsqlVendor : PostgreSqlVendor
-    {
-        // This is a compatibility class. It will go away after the
-        // big PostgreSql rename.
-    }
-    
-    /// <summary>
-    /// PostgreSQL - specific code.
-    /// </summary>
-    [Vendor(typeof(PostgreSqlProvider))]
-#if !MONO_STRICT
-    public
-#endif
-    class PostgreSqlVendor : Vendor.Implementation.Vendor
-    {
-        public override string VendorName { get { return "PostgreSQL"; } }
-
-        protected readonly PgsqlSqlProvider sqlProvider = new PgsqlSqlProvider();
-        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
-
-        protected void SetParameterType(IDbDataParameter parameter, PropertyInfo property, string literal)
-        {
-            object dbType = Enum.Parse(property.PropertyType, literal);
-            property.GetSetMethod().Invoke(parameter, new object[] { dbType });
-        }
-
-        protected void SetParameterType(IDbDataParameter parameter, string literal)
-        {
-            SetParameterType(parameter, parameter.GetType().GetProperty("NpgsqlDbType"), literal);
-        }
-
-        /*
-                public override IDbDataParameter CreateSqlParameter(IDbCommand cmd, string dbTypeName, string paramName)
-                {
-                    //System.Data.SqlDbType dbType = DbLinq.util.SqlTypeConversions.ParseType(dbTypeName);
-                    //SqlParameter param = new SqlParameter(paramName, dbType);
-                    NpgsqlTypes.NpgsqlDbType dbType = PgsqlTypeConversions.ParseType(dbTypeName);
-                    NpgsqlParameter param = new NpgsqlParameter(paramName, dbType);
-                    return param;
-                }
-        */
-        /// <summary>
-        /// call mysql stored proc or stored function, 
-        /// optionally return DataSet, and collect return params.
-        /// </summary>
-        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
-                                                                 , params object[] inputValues)
-        {
-            if (method == null)
-                throw new ArgumentNullException("L56 Null 'method' parameter");
-
-            //check to make sure there is exactly one [FunctionEx]? that's below.
-            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
-            var functionAttrib = context.Mapping.GetFunction(method);
-
-            ParameterInfo[] paramInfos = method.GetParameters();
-            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
-            //if (numRequiredParams != inputValues.Length)
-            //    throw new ArgumentException("L161 Argument count mismatch");
-
-            string sp_name = functionAttrib.MappedName;
-
-            using (IDbCommand command = context.Connection.CreateCommand())
-            {
-                command.CommandText = sp_name;
-                //MySqlCommand command = new MySqlCommand("select hello0()");
-                int currInputIndex = 0;
-
-                List<string> paramNames = new List<string>();
-                for (int i = 0; i < paramInfos.Length; i++)
-                {
-                    ParameterInfo paramInfo = paramInfos[i];
-
-                    //TODO: check to make sure there is exactly one [Parameter]?
-                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
-
-                    //string paramName = "?" + paramAttrib.Name; //eg. '?param1' MYSQL
-                    string paramName = ":" + paramAttrib.Name; //eg. '?param1' PostgreSQL
-                    paramNames.Add(paramName);
-
-                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
-                    //MySqlDbType dbType = MySqlTypeConversions.ParseType(paramAttrib.DbType);
-                    IDbDataParameter cmdParam = command.CreateParameter();
-                    cmdParam.ParameterName = paramName;
-                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
-                    if (direction == ParameterDirection.Input || direction == ParameterDirection.InputOutput)
-                    {
-                        object inputValue = inputValues[currInputIndex++];
-                        cmdParam.Value = inputValue;
-                    }
-                    else
-                    {
-                        cmdParam.Value = null;
-                    }
-                    cmdParam.Direction = direction;
-                    command.Parameters.Add(cmdParam);
-                }
-
-                if (!functionAttrib.IsComposable)
-                {
-                    //procedures: under the hood, this seems to prepend 'CALL '
-                    command.CommandType = System.Data.CommandType.StoredProcedure;
-                }
-                else
-                {
-                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
-                    string cmdText = "SELECT " + command.CommandText + "($args)";
-                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
-                    command.CommandText = cmdText;
-                }
-
-                if (method.ReturnType == typeof(DataSet))
-                {
-                    //unknown shape of resultset:
-                    System.Data.DataSet dataSet = new DataSet();
-                    IDbDataAdapter adapter = CreateDataAdapter(context);
-                    adapter.SelectCommand = command;
-                    adapter.Fill(dataSet);
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(dataSet, outParamValues.ToArray());
-                }
-                else
-                {
-                    object obj = command.ExecuteScalar();
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(obj, outParamValues.ToArray());
-                }
-            }
-        }
-
-        static ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
-        {
-            //strange hack to determine what's a ref, out parameter:
-            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
-            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
-            if (paramInfo.IsOut)
-                return ParameterDirection.Output;
-            if (hasAmpersand)
-                return ParameterDirection.InputOutput;
-            return ParameterDirection.Input;
-        }
-
-        /// <summary>
-        /// Collect all Out or InOut param values, casting them to the correct .net type.
-        /// </summary>
-        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
-        {
-            List<object> outParamValues = new List<object>();
-            //Type type_t = typeof(T);
-            int i = -1;
-            foreach (IDbDataParameter param in paramSet)
-            {
-                i++;
-                if (param.Direction == ParameterDirection.Input)
-                {
-                    outParamValues.Add("unused");
-                    continue;
-                }
-
-                object val = param.Value;
-                Type desired_type = paramInfos[i].ParameterType;
-
-                if (desired_type.Name.EndsWith("&"))
-                {
-                    //for ref and out parameters, we need to tweak ref types, e.g.
-                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                    string fullName1 = desired_type.AssemblyQualifiedName;
-                    string fullName2 = fullName1.Replace("&", "");
-                    desired_type = Type.GetType(fullName2);
-                }
-                try
-                {
-                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
-                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
-                    //object val2 = DbLinq.Util.FieldUtils.CastValue(val, desired_type);
-                    object val2 = TypeConvert.To(val, desired_type);
-                    outParamValues.Add(val2);
-                }
-                catch (Exception)
-                {
-                    //fails with 'System.Decimal cannot be converted to Int32'
-                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
-                }
-            }
-            return outParamValues;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Linq;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using System.Collections.Generic;
+using DbLinq.Data.Linq.SqlClient;
+using DbLinq.PostgreSql;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+#if MONO_STRICT
+using DataContext=System.Data.Linq.DataContext;
+#else
+using DataContext=DbLinq.Data.Linq.DataContext;
+#endif
+
+namespace DbLinq.PostgreSql
+{
+#if !MONO_STRICT
+    public
+#endif
+    class PgsqlVendor : PostgreSqlVendor
+    {
+        // This is a compatibility class. It will go away after the
+        // big PostgreSql rename.
+    }
+    
+    /// <summary>
+    /// PostgreSQL - specific code.
+    /// </summary>
+    [Vendor(typeof(PostgreSqlProvider))]
+#if !MONO_STRICT
+    public
+#endif
+    class PostgreSqlVendor : Vendor.Implementation.Vendor
+    {
+        public override string VendorName { get { return "PostgreSQL"; } }
+
+        protected readonly PgsqlSqlProvider sqlProvider = new PgsqlSqlProvider();
+        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
+
+        protected void SetParameterType(IDbDataParameter parameter, PropertyInfo property, string literal)
+        {
+            object dbType = Enum.Parse(property.PropertyType, literal);
+            property.GetSetMethod().Invoke(parameter, new object[] { dbType });
+        }
+
+        protected void SetParameterType(IDbDataParameter parameter, string literal)
+        {
+            SetParameterType(parameter, parameter.GetType().GetProperty("NpgsqlDbType"), literal);
+        }
+
+        /*
+                public override IDbDataParameter CreateSqlParameter(IDbCommand cmd, string dbTypeName, string paramName)
+                {
+                    //System.Data.SqlDbType dbType = DbLinq.util.SqlTypeConversions.ParseType(dbTypeName);
+                    //SqlParameter param = new SqlParameter(paramName, dbType);
+                    NpgsqlTypes.NpgsqlDbType dbType = PgsqlTypeConversions.ParseType(dbTypeName);
+                    NpgsqlParameter param = new NpgsqlParameter(paramName, dbType);
+                    return param;
+                }
+        */
+        /// <summary>
+        /// call mysql stored proc or stored function, 
+        /// optionally return DataSet, and collect return params.
+        /// </summary>
+        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
+                                                                 , params object[] inputValues)
+        {
+            if (method == null)
+                throw new ArgumentNullException("L56 Null 'method' parameter");
+
+            //check to make sure there is exactly one [FunctionEx]? that's below.
+            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
+            var functionAttrib = context.Mapping.GetFunction(method);
+
+            ParameterInfo[] paramInfos = method.GetParameters();
+            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
+            //if (numRequiredParams != inputValues.Length)
+            //    throw new ArgumentException("L161 Argument count mismatch");
+
+            string sp_name = functionAttrib.MappedName;
+
+            using (IDbCommand command = context.Connection.CreateCommand())
+            {
+                command.CommandText = sp_name;
+                //MySqlCommand command = new MySqlCommand("select hello0()");
+                int currInputIndex = 0;
+
+                List<string> paramNames = new List<string>();
+                for (int i = 0; i < paramInfos.Length; i++)
+                {
+                    ParameterInfo paramInfo = paramInfos[i];
+
+                    //TODO: check to make sure there is exactly one [Parameter]?
+                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
+
+                    //string paramName = "?" + paramAttrib.Name; //eg. '?param1' MYSQL
+                    string paramName = ":" + paramAttrib.Name; //eg. '?param1' PostgreSQL
+                    paramNames.Add(paramName);
+
+                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
+                    //MySqlDbType dbType = MySqlTypeConversions.ParseType(paramAttrib.DbType);
+                    IDbDataParameter cmdParam = command.CreateParameter();
+                    cmdParam.ParameterName = paramName;
+                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
+                    if (direction == ParameterDirection.Input || direction == ParameterDirection.InputOutput)
+                    {
+                        object inputValue = inputValues[currInputIndex++];
+                        cmdParam.Value = inputValue;
+                    }
+                    else
+                    {
+                        cmdParam.Value = null;
+                    }
+                    cmdParam.Direction = direction;
+                    command.Parameters.Add(cmdParam);
+                }
+
+                if (!functionAttrib.IsComposable)
+                {
+                    //procedures: under the hood, this seems to prepend 'CALL '
+                    command.CommandType = System.Data.CommandType.StoredProcedure;
+                }
+                else
+                {
+                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
+                    string cmdText = "SELECT " + command.CommandText + "($args)";
+                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
+                    command.CommandText = cmdText;
+                }
+
+                if (method.ReturnType == typeof(DataSet))
+                {
+                    //unknown shape of resultset:
+                    System.Data.DataSet dataSet = new DataSet();
+                    IDbDataAdapter adapter = CreateDataAdapter(context);
+                    adapter.SelectCommand = command;
+                    adapter.Fill(dataSet);
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(dataSet, outParamValues.ToArray());
+                }
+                else
+                {
+                    object obj = command.ExecuteScalar();
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(obj, outParamValues.ToArray());
+                }
+            }
+        }
+
+        static ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
+        {
+            //strange hack to determine what's a ref, out parameter:
+            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
+            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
+            if (paramInfo.IsOut)
+                return ParameterDirection.Output;
+            if (hasAmpersand)
+                return ParameterDirection.InputOutput;
+            return ParameterDirection.Input;
+        }
+
+        /// <summary>
+        /// Collect all Out or InOut param values, casting them to the correct .net type.
+        /// </summary>
+        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
+        {
+            List<object> outParamValues = new List<object>();
+            //Type type_t = typeof(T);
+            int i = -1;
+            foreach (IDbDataParameter param in paramSet)
+            {
+                i++;
+                if (param.Direction == ParameterDirection.Input)
+                {
+                    outParamValues.Add("unused");
+                    continue;
+                }
+
+                object val = param.Value;
+                Type desired_type = paramInfos[i].ParameterType;
+
+                if (desired_type.Name.EndsWith("&"))
+                {
+                    //for ref and out parameters, we need to tweak ref types, e.g.
+                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+                    string fullName1 = desired_type.AssemblyQualifiedName;
+                    string fullName2 = fullName1.Replace("&", "");
+                    desired_type = Type.GetType(fullName2);
+                }
+                try
+                {
+                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
+                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
+                    //object val2 = DbLinq.Util.FieldUtils.CastValue(val, desired_type);
+                    object val2 = TypeConvert.To(val, desired_type);
+                    outParamValues.Add(val2);
+                }
+                catch (Exception)
+                {
+                    //fails with 'System.Decimal cannot be converted to Int32'
+                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
+                }
+            }
+            return outParamValues;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/Properties/AssemblyInfo.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq.PostgreSql")]
-[assembly: AssemblyDescription("DbLinq PostgreSQL vendor implementation")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("d393f4ff-9bb6-42ad-bb84-d207115f48b1")]
-
-[assembly: DbLinq]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq.PostgreSql")]
+[assembly: AssemblyDescription("DbLinq PostgreSQL vendor implementation")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d393f4ff-9bb6-42ad-bb84-d207115f48b1")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/Test/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.PostgreSql/Test/TestBase.cs
@@ -1,52 +1,52 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        public const StringComparison stringComparisonType = StringComparison.Ordinal;
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new Npgsql.NpgsqlCommand(sql, (Npgsql.NpgsqlConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new Npgsql.NpgsqlConnection(connectionString);
-        }
-
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.PostgreSql.PgsqlVendor();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        public const StringComparison stringComparisonType = StringComparison.Ordinal;
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new Npgsql.NpgsqlCommand(sql, (Npgsql.NpgsqlConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new Npgsql.NpgsqlConnection(connectionString);
+        }
+
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.PostgreSql.PgsqlVendor();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.ProductInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.ProductInfo.cs
@@ -1,49 +1,49 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Jiri George Moudry")]
-[assembly: AssemblyProduct("DbLinq")]
-[assembly: AssemblyCopyright("Copyright \u00A9 Jiri George Moudry 2005-2008")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyFileVersion("0.20")]
-[assembly: AssemblyVersion("0.20")]
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Jiri George Moudry")]
+[assembly: AssemblyProduct("DbLinq")]
+[assembly: AssemblyCopyright("Copyright \u00A9 Jiri George Moudry 2005-2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyFileVersion("0.20")]
+[assembly: AssemblyVersion("0.20")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/Properties/AssemblyInfo.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq.SqlServer")]
-[assembly: AssemblyDescription("DbLinq SQL server vendor implementation")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("55bd884f-8aa6-4dbb-8d29-2d8e879e5f0b")]
-
-[assembly: DbLinq]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq.SqlServer")]
+[assembly: AssemblyDescription("DbLinq SQL server vendor implementation")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("55bd884f-8aa6-4dbb-8d29-2d8e879e5f0b")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerDataContext.cs
@@ -1,65 +1,65 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Data;
-using System.Data.SqlClient;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.SqlServer
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SqlServerDataContext : DataContext
-    {
-        public SqlServerDataContext(string connStr)
-            : base(new SqlConnection(connStr)
-#if !MONO_STRICT
-                , new SqlServerVendor()
-#endif
-              )
-        {
-        }
-
-        public SqlServerDataContext(IDbConnection conn)
-            : base((SqlConnection)conn
-#if !MONO_STRICT
-                , new SqlServerVendor()
-#endif
-              )
-        {
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data;
+using System.Data.SqlClient;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.SqlServer
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SqlServerDataContext : DataContext
+    {
+        public SqlServerDataContext(string connStr)
+            : base(new SqlConnection(connStr)
+#if !MONO_STRICT
+                , new SqlServerVendor()
+#endif
+              )
+        {
+        }
+
+        public SqlServerDataContext(IDbConnection conn)
+            : base((SqlConnection)conn
+#if !MONO_STRICT
+                , new SqlServerVendor()
+#endif
+              )
+        {
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerExpressionTranslator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerExpressionTranslator.cs
@@ -1,26 +1,26 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.SqlServer
-{
-    class SqlServerExpressionTranslator : ExpressionTranslator
-    {
-        public override SelectExpression OuterExpression(SelectExpression e)
-        {
-            // Check for (from f in foo orderby f.Field select f).Count() trees
-            // SQL Server doesn't support 'ORDER BY' for 'SELECT COUNT(*)'.
-            if (e.Operands.Select(o => o as SpecialExpression)
-                    .Where(o => o != null)
-                    .Where(s => s.SpecialNodeType == SpecialExpressionType.Count)
-                    .Any())
-            {
-                e.OrderBy.Clear();
-            }
-            return e;
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.SqlServer
+{
+    class SqlServerExpressionTranslator : ExpressionTranslator
+    {
+        public override SelectExpression OuterExpression(SelectExpression e)
+        {
+            // Check for (from f in foo orderby f.Field select f).Count() trees
+            // SQL Server doesn't support 'ORDER BY' for 'SELECT COUNT(*)'.
+            if (e.Operands.Select(o => o as SpecialExpression)
+                    .Where(o => o != null)
+                    .Where(s => s.SpecialNodeType == SpecialExpressionType.Count)
+                    .Any())
+            {
+                e.OrderBy.Clear();
+            }
+            return e;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerSchemaLoader.cs
@@ -1,130 +1,130 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Linq;
-
-using DbLinq.Vendor;
-
-namespace DbLinq.SqlServer
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SqlServerSchemaLoader : DbSchemaLoader
-    {
-        readonly IVendor vendor = new SqlServerVendor();
-        public override IVendor Vendor {
-            get {return vendor;}
-            set {}
-        }
-
-        protected override DataTable GetForeignKeys(DbConnection connection)
-        {
-            var t = new DataTable("ForeignKeys");
-            using (var c = connection.CreateCommand())
-            {
-                c.CommandText = @"
-SELECT
-    rc.CONSTRAINT_NAME      AS 'CONSTRAINT_NAME', 
-    'FOREIGN KEY'           AS 'CONSTRAINT_TYPE',
-    rcu_from.TABLE_NAME     AS 'TABLE_NAME', 
-    rcu_from.TABLE_SCHEMA   AS 'TABLE_SCHEMA',
-    rcu_from.COLUMN_NAME    AS 'FKEY_FROM_COLUMN', 
-    rcu_to.TABLE_SCHEMA     AS 'FKEY_TO_SCHEMA',
-    rcu_to.TABLE_NAME       AS 'FKEY_TO_TABLE', 
-    rcu_to.COLUMN_NAME      AS 'FKEY_TO_COLUMN'
-FROM
-    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
-INNER JOIN
-    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu_from ON
-        rc.CONSTRAINT_CATALOG   = rcu_from.CONSTRAINT_CATALOG AND
-        rc.CONSTRAINT_NAME      = rcu_from.CONSTRAINT_NAME
-INNER JOIN
-    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu_to ON
-        rc.UNIQUE_CONSTRAINT_CATALOG  = rcu_to.CONSTRAINT_CATALOG AND
-        rc.UNIQUE_CONSTRAINT_NAME     = rcu_to.CONSTRAINT_NAME
-";
-                using (var r = c.ExecuteReader())
-                    t.Load(r);
-            }
-            return t;
-        }
-
-        protected override DataTable GetColumns(DbConnection connection)
-        {
-            var t = new DataTable("Columns");
-            using (var c = connection.CreateCommand())
-            {
-                c.CommandText = @"
-SELECT
-    columns.TABLE_CATALOG,
-    columns.TABLE_SCHEMA,
-    columns.TABLE_NAME,
-    columns.COLUMN_NAME,
-    columns.ORDINAL_POSITION,
-    columns.COLUMN_DEFAULT,
-    (SELECT CAST (COUNT(*) AS BIT)
-     FROM
-        INFORMATION_SCHEMA.TABLE_CONSTRAINTS rc
-     INNER JOIN
-        INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu ON
-            rc.CONSTRAINT_CATALOG   = rcu.CONSTRAINT_CATALOG AND
-            rc.CONSTRAINT_NAME      = rcu.CONSTRAINT_NAME
-     WHERE
-		rc.CONSTRAINT_TYPE  = 'PRIMARY KEY' AND
-		rc.TABLE_CATALOG    = columns.TABLE_CATALOG AND
-		rc.TABLE_SCHEMA     = columns.TABLE_SCHEMA AND
-		rc.TABLE_NAME       = columns.TABLE_NAME AND
-		rcu.COLUMN_NAME     = columns.COLUMN_NAME
-    ) AS 'PRIMARY_KEY',
-    columns.IS_NULLABLE,
-    columns.DATA_TYPE,
-    columns.CHARACTER_MAXIMUM_LENGTH,
-    columns.CHARACTER_OCTET_LENGTH,
-    CAST(columns.NUMERIC_PRECISION AS INT) AS 'NUMERIC_PRECISION',
-    columns.NUMERIC_PRECISION_RADIX,
-    columns.NUMERIC_SCALE,
-    columns.DATETIME_PRECISION,
-    columns.CHARACTER_SET_CATALOG,
-    columns.CHARACTER_SET_SCHEMA,
-    columns.CHARACTER_SET_NAME,
-    columns.COLLATION_CATALOG
-FROM
-    INFORMATION_SCHEMA.COLUMNS columns
-ORDER BY
-    columns.TABLE_CATALOG, columns.TABLE_SCHEMA, 
-    columns.TABLE_NAME, columns.COLUMN_NAME
-";
-                using (var r = c.ExecuteReader())
-                    t.Load(r);
-            }
-            return t;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Linq;
+
+using DbLinq.Vendor;
+
+namespace DbLinq.SqlServer
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SqlServerSchemaLoader : DbSchemaLoader
+    {
+        readonly IVendor vendor = new SqlServerVendor();
+        public override IVendor Vendor {
+            get {return vendor;}
+            set {}
+        }
+
+        protected override DataTable GetForeignKeys(DbConnection connection)
+        {
+            var t = new DataTable("ForeignKeys");
+            using (var c = connection.CreateCommand())
+            {
+                c.CommandText = @"
+SELECT
+    rc.CONSTRAINT_NAME      AS 'CONSTRAINT_NAME', 
+    'FOREIGN KEY'           AS 'CONSTRAINT_TYPE',
+    rcu_from.TABLE_NAME     AS 'TABLE_NAME', 
+    rcu_from.TABLE_SCHEMA   AS 'TABLE_SCHEMA',
+    rcu_from.COLUMN_NAME    AS 'FKEY_FROM_COLUMN', 
+    rcu_to.TABLE_SCHEMA     AS 'FKEY_TO_SCHEMA',
+    rcu_to.TABLE_NAME       AS 'FKEY_TO_TABLE', 
+    rcu_to.COLUMN_NAME      AS 'FKEY_TO_COLUMN'
+FROM
+    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
+INNER JOIN
+    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu_from ON
+        rc.CONSTRAINT_CATALOG   = rcu_from.CONSTRAINT_CATALOG AND
+        rc.CONSTRAINT_NAME      = rcu_from.CONSTRAINT_NAME
+INNER JOIN
+    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu_to ON
+        rc.UNIQUE_CONSTRAINT_CATALOG  = rcu_to.CONSTRAINT_CATALOG AND
+        rc.UNIQUE_CONSTRAINT_NAME     = rcu_to.CONSTRAINT_NAME
+";
+                using (var r = c.ExecuteReader())
+                    t.Load(r);
+            }
+            return t;
+        }
+
+        protected override DataTable GetColumns(DbConnection connection)
+        {
+            var t = new DataTable("Columns");
+            using (var c = connection.CreateCommand())
+            {
+                c.CommandText = @"
+SELECT
+    columns.TABLE_CATALOG,
+    columns.TABLE_SCHEMA,
+    columns.TABLE_NAME,
+    columns.COLUMN_NAME,
+    columns.ORDINAL_POSITION,
+    columns.COLUMN_DEFAULT,
+    (SELECT CAST (COUNT(*) AS BIT)
+     FROM
+        INFORMATION_SCHEMA.TABLE_CONSTRAINTS rc
+     INNER JOIN
+        INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu ON
+            rc.CONSTRAINT_CATALOG   = rcu.CONSTRAINT_CATALOG AND
+            rc.CONSTRAINT_NAME      = rcu.CONSTRAINT_NAME
+     WHERE
+		rc.CONSTRAINT_TYPE  = 'PRIMARY KEY' AND
+		rc.TABLE_CATALOG    = columns.TABLE_CATALOG AND
+		rc.TABLE_SCHEMA     = columns.TABLE_SCHEMA AND
+		rc.TABLE_NAME       = columns.TABLE_NAME AND
+		rcu.COLUMN_NAME     = columns.COLUMN_NAME
+    ) AS 'PRIMARY_KEY',
+    columns.IS_NULLABLE,
+    columns.DATA_TYPE,
+    columns.CHARACTER_MAXIMUM_LENGTH,
+    columns.CHARACTER_OCTET_LENGTH,
+    CAST(columns.NUMERIC_PRECISION AS INT) AS 'NUMERIC_PRECISION',
+    columns.NUMERIC_PRECISION_RADIX,
+    columns.NUMERIC_SCALE,
+    columns.DATETIME_PRECISION,
+    columns.CHARACTER_SET_CATALOG,
+    columns.CHARACTER_SET_SCHEMA,
+    columns.CHARACTER_SET_NAME,
+    columns.COLLATION_CATALOG
+FROM
+    INFORMATION_SCHEMA.COLUMNS columns
+ORDER BY
+    columns.TABLE_CATALOG, columns.TABLE_SCHEMA, 
+    columns.TABLE_NAME, columns.COLUMN_NAME
+";
+                using (var r = c.ExecuteReader())
+                    t.Load(r);
+            }
+            return t;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerSqlProvider.cs
@@ -1,285 +1,285 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq;
-using System.Collections.Generic;
-
-using DbLinq.Vendor.Implementation;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.SqlServer
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SqlServerSqlProvider : SqlProvider
-    {
-        public override ExpressionTranslator GetTranslator()
-        {
-            return new SqlServerExpressionTranslator();
-        }
-
-        protected override char SafeNameStartQuote { get { return '['; } }
-        protected override char SafeNameEndQuote { get { return ']'; } }
-
-        /// <summary>
-        /// Returns a table alias
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="alias"></param>
-        /// <returns></returns>
-        public override string GetTableAsAlias(string table, string alias)
-        {
-            return string.Format("{0} AS {1}", GetTable(table), GetTableAlias(alias));
-        }
-
-        /// <summary>
-        /// Returns a table alias
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="alias"></param>
-        /// <returns></returns>
-        public override string GetSubQueryAsAlias(string subquery, string alias)
-        {
-            return string.Format("({0}) AS {1}", subquery, GetTableAlias(alias));
-        }
-
-        public override SqlStatement GetLiteral(bool literal)
-        {
-            if (literal)
-                return "1";
-            return "0";
-        }
-
-        public override SqlStatement GetLiteral(DateTime literal)
-        {
-            return "'" + literal.ToString("o").Substring(0,23) + "'";
-        }
-
-        public override string GetParameterName(string nameBase)
-        {
-            return string.Format("@{0}", nameBase);
-        }
-
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
-        {
-            var trimSelect = "SELECT ";
-            if (select.Count > 0 && select[0].Sql.StartsWith(trimSelect))
-            {
-                var selectBuilder = new SqlStatementBuilder(select);
-                var remaining = select[0].Sql.Substring(trimSelect.Length);
-                selectBuilder.Parts[0] = new SqlLiteralPart(remaining);
-                return SqlStatement.Format("SELECT TOP ({0}) {1}", limit, selectBuilder.ToSqlStatement());
-            }
-            throw new ArgumentException("S0051: Unknown select format");
-        }
-
-        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
-        {
-            var from    = "FROM ";
-            var orderBy = "ORDER BY ";
-            var selectK = "SELECT ";
-            int fromIdx     = select[0].Sql.IndexOf(from);
-            int orderByIdx  = select[0].Sql.IndexOf(orderBy);
-
-            if (fromIdx < 0)
-                throw new ArgumentException("S0051: Unknown select format: " + select[0].Sql);
-
-            string orderByClause = null;
-            string sourceClause = null;
-            if (orderByIdx >= 0)
-            {
-                orderByClause = select[0].Sql.Substring(orderByIdx);
-                sourceClause = select[0].Sql.Substring(fromIdx, orderByIdx - fromIdx);
-            }
-            else
-            {
-                orderByClause = "ORDER BY " + select[0].Sql.Substring(selectK.Length, fromIdx - selectK.Length);
-                sourceClause = select[0].Sql.Substring(fromIdx);
-            }
-
-            var selectFieldsClause = select[0].Sql.Substring(0, fromIdx);
-
-            return SqlStatement.Format(
-                "SELECT *{0}" +
-                "FROM ({0}" +
-                "    {1},{0}" +
-                "    ROW_NUMBER() OVER({2}) AS [__ROW_NUMBER]{0}" +
-                "    {3}" +
-                "    ) AS [t0]{0}" +
-                "WHERE [__ROW_NUMBER] BETWEEN {4}+1 AND {4}+{5}{0}" +
-                "ORDER BY [__ROW_NUMBER]",
-                NewLine, selectFieldsClause, orderByClause, sourceClause, offset, limit);
-        }
-
-        protected override SqlStatement GetLiteralDateDiff(SqlStatement dateA, SqlStatement dateB)
-        {
-            return SqlStatement.Format("(CONVERT(BigInt,DATEDIFF(DAY, {0}, {1}))) * 86400000 +" //diffierence in milliseconds regards days
-                     + "DATEDIFF(MILLISECOND, "
-
-                                // (DateA-DateB) in days +DateB = difference in time
-                                + @"DATEADD(DAY, 
-                                      DATEDIFF(DAY, {0}, {1})
-                                      ,{0})"
-
-                                + ",{1})", dateB, dateA);
-
-            //this trick is needed in sqlserver since DATEDIFF(MILLISECONDS,{0},{1}) usually crhases in the database engine due an overflow:
-            //System.Data.SqlClient.SqlException : Difference of two datetime columns caused overflow at runtime.
-        }
-
-        protected override SqlStatement GetLiteralDateTimePart(SqlStatement dateExpression, SpecialExpressionType operationType)
-        {
-            return SqlStatement.Format("DATEPART({0},{1})", operationType.ToString().ToUpper(), dateExpression);
-        }
-
-        protected override SqlStatement GetLiteralMathPow(SqlStatement p, SqlStatement p_2)
-        {
-            return SqlStatement.Format("POWER({0},{1})", p, p_2);
-        }
-
-        protected override SqlStatement GetLiteralMathLog(SqlStatement p, SqlStatement p_2)
-        {
-            return SqlStatement.Format("(LOG({0})/LOG({1}))", p, p_2);
-        }
-
-        protected override SqlStatement GetLiteralMathLn(SqlStatement p)
-        {
-            return GetLiteralMathLog(p, string.Format("{0}", Math.E));
-        }
-
-        protected override SqlStatement GetLiteralStringLength(SqlStatement a)
-        {
-            return SqlStatement.Format("LEN({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex, SqlStatement count)
-        {
-            //in standard sql base string index is 1 instead 0
-            return SqlStatement.Format("SUBSTRING({0}, {1}, {2})", baseString, startIndex, count);
-        }
-
-        protected override SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex)
-        {
-            return GetLiteralSubString(baseString, startIndex, GetLiteralStringLength(baseString));
-        }
-
-        protected override SqlStatement GetLiteralTrim(SqlStatement a)
-        {
-            return SqlStatement.Format("RTRIM(LTRIM({0}))", a);
-        }
-
-        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} + {1}", a.Replace("sql_variant", "varchar", false), b.Replace("sql_variant", "varchar", false));
-        }
-
-        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
-        {
-            return SqlStatement.Format("LOWER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
-        {
-            return SqlStatement.Format("UPPER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString)
-        {
-            return GetLiteralSubtract(SqlStatement.Format("CHARINDEX({0},{1})", searchString, baseString), "1");
-        }
-
-        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex)
-        {
-            return GetLiteralSubtract(SqlStatement.Format("CHARINDEX({0},{1},{2})", searchString, baseString, startIndex), "1");
-        }
-
-        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex, SqlStatement count)
-        {
-            return GetLiteralSubtract(SqlStatement.Format("CHARINDEX({0},{1},{2})", searchString, GetLiteralSubString(baseString, "1", GetLiteralStringConcat(count, startIndex)), startIndex), "1");
-        }
-
-        //http://msdn.microsoft.com/en-us/library/4e5xt97a(VS.71).aspx
-        public static readonly Dictionary<Type, string> typeMapping = new Dictionary<Type, string>
-        {
-            {typeof(int),"int"},
-            {typeof(uint),"int"},
-
-            {typeof(long),"bigint"},
-            {typeof(ulong),"bigint"},
-
-            {typeof(float),"float"}, //TODO: could be float or real. check ranges.
-            {typeof(double),"float"}, //TODO: could be float or real. check ranges.
-            
-            {typeof(decimal),"numeric"},
-
-            {typeof(short),"tinyint"},
-            {typeof(ushort),"tinyint"},
-
-            {typeof(bool),"bit"},
-
-            // trunk? They could be: varchar, char,nchar, ntext,text... it should be the most flexible string type. TODO: check wich of them is better.
-            {typeof(string),"varchar"}, 
-            {typeof(char[]),"varchar"},
-
-            {typeof(char),"char"},
-
-            {typeof(DateTime),"datetime"},
-            {typeof(Guid),"uniqueidentifier"}
-
-            // there are more types: timestamps, images ... TODO: check what is the official behaviour
-        };
-
-        public override SqlStatement GetLiteralConvert(SqlStatement a, Type type)
-        {
-            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
-                type = type.GetGenericArguments().First();
-
-            if (type.IsValueType && a[0].Sql.StartsWith("@"))
-                return a;
-
-            SqlStatement sqlTypeName;
-            if (typeMapping.ContainsKey(type))
-                sqlTypeName = typeMapping[type];
-            else
-                sqlTypeName = "sql_variant";
-
-            return SqlStatement.Format("CONVERT({0},{1})", sqlTypeName, a);
-        }
-
-        public override string GetColumn(string table, string column)
-        {
-            if (column != "*")
-                return base.GetColumn(table, column);
-            return "*";
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq;
+using System.Collections.Generic;
+
+using DbLinq.Vendor.Implementation;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.SqlServer
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SqlServerSqlProvider : SqlProvider
+    {
+        public override ExpressionTranslator GetTranslator()
+        {
+            return new SqlServerExpressionTranslator();
+        }
+
+        protected override char SafeNameStartQuote { get { return '['; } }
+        protected override char SafeNameEndQuote { get { return ']'; } }
+
+        /// <summary>
+        /// Returns a table alias
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="alias"></param>
+        /// <returns></returns>
+        public override string GetTableAsAlias(string table, string alias)
+        {
+            return string.Format("{0} AS {1}", GetTable(table), GetTableAlias(alias));
+        }
+
+        /// <summary>
+        /// Returns a table alias
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="alias"></param>
+        /// <returns></returns>
+        public override string GetSubQueryAsAlias(string subquery, string alias)
+        {
+            return string.Format("({0}) AS {1}", subquery, GetTableAlias(alias));
+        }
+
+        public override SqlStatement GetLiteral(bool literal)
+        {
+            if (literal)
+                return "1";
+            return "0";
+        }
+
+        public override SqlStatement GetLiteral(DateTime literal)
+        {
+            return "'" + literal.ToString("o").Substring(0,23) + "'";
+        }
+
+        public override string GetParameterName(string nameBase)
+        {
+            return string.Format("@{0}", nameBase);
+        }
+
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
+        {
+            var trimSelect = "SELECT ";
+            if (select.Count > 0 && select[0].Sql.StartsWith(trimSelect))
+            {
+                var selectBuilder = new SqlStatementBuilder(select);
+                var remaining = select[0].Sql.Substring(trimSelect.Length);
+                selectBuilder.Parts[0] = new SqlLiteralPart(remaining);
+                return SqlStatement.Format("SELECT TOP ({0}) {1}", limit, selectBuilder.ToSqlStatement());
+            }
+            throw new ArgumentException("S0051: Unknown select format");
+        }
+
+        public override SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
+        {
+            var from    = "FROM ";
+            var orderBy = "ORDER BY ";
+            var selectK = "SELECT ";
+            int fromIdx     = select[0].Sql.IndexOf(from);
+            int orderByIdx  = select[0].Sql.IndexOf(orderBy);
+
+            if (fromIdx < 0)
+                throw new ArgumentException("S0051: Unknown select format: " + select[0].Sql);
+
+            string orderByClause = null;
+            string sourceClause = null;
+            if (orderByIdx >= 0)
+            {
+                orderByClause = select[0].Sql.Substring(orderByIdx);
+                sourceClause = select[0].Sql.Substring(fromIdx, orderByIdx - fromIdx);
+            }
+            else
+            {
+                orderByClause = "ORDER BY " + select[0].Sql.Substring(selectK.Length, fromIdx - selectK.Length);
+                sourceClause = select[0].Sql.Substring(fromIdx);
+            }
+
+            var selectFieldsClause = select[0].Sql.Substring(0, fromIdx);
+
+            return SqlStatement.Format(
+                "SELECT *{0}" +
+                "FROM ({0}" +
+                "    {1},{0}" +
+                "    ROW_NUMBER() OVER({2}) AS [__ROW_NUMBER]{0}" +
+                "    {3}" +
+                "    ) AS [t0]{0}" +
+                "WHERE [__ROW_NUMBER] BETWEEN {4}+1 AND {4}+{5}{0}" +
+                "ORDER BY [__ROW_NUMBER]",
+                NewLine, selectFieldsClause, orderByClause, sourceClause, offset, limit);
+        }
+
+        protected override SqlStatement GetLiteralDateDiff(SqlStatement dateA, SqlStatement dateB)
+        {
+            return SqlStatement.Format("(CONVERT(BigInt,DATEDIFF(DAY, {0}, {1}))) * 86400000 +" //diffierence in milliseconds regards days
+                     + "DATEDIFF(MILLISECOND, "
+
+                                // (DateA-DateB) in days +DateB = difference in time
+                                + @"DATEADD(DAY, 
+                                      DATEDIFF(DAY, {0}, {1})
+                                      ,{0})"
+
+                                + ",{1})", dateB, dateA);
+
+            //this trick is needed in sqlserver since DATEDIFF(MILLISECONDS,{0},{1}) usually crhases in the database engine due an overflow:
+            //System.Data.SqlClient.SqlException : Difference of two datetime columns caused overflow at runtime.
+        }
+
+        protected override SqlStatement GetLiteralDateTimePart(SqlStatement dateExpression, SpecialExpressionType operationType)
+        {
+            return SqlStatement.Format("DATEPART({0},{1})", operationType.ToString().ToUpper(), dateExpression);
+        }
+
+        protected override SqlStatement GetLiteralMathPow(SqlStatement p, SqlStatement p_2)
+        {
+            return SqlStatement.Format("POWER({0},{1})", p, p_2);
+        }
+
+        protected override SqlStatement GetLiteralMathLog(SqlStatement p, SqlStatement p_2)
+        {
+            return SqlStatement.Format("(LOG({0})/LOG({1}))", p, p_2);
+        }
+
+        protected override SqlStatement GetLiteralMathLn(SqlStatement p)
+        {
+            return GetLiteralMathLog(p, string.Format("{0}", Math.E));
+        }
+
+        protected override SqlStatement GetLiteralStringLength(SqlStatement a)
+        {
+            return SqlStatement.Format("LEN({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex, SqlStatement count)
+        {
+            //in standard sql base string index is 1 instead 0
+            return SqlStatement.Format("SUBSTRING({0}, {1}, {2})", baseString, startIndex, count);
+        }
+
+        protected override SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex)
+        {
+            return GetLiteralSubString(baseString, startIndex, GetLiteralStringLength(baseString));
+        }
+
+        protected override SqlStatement GetLiteralTrim(SqlStatement a)
+        {
+            return SqlStatement.Format("RTRIM(LTRIM({0}))", a);
+        }
+
+        protected override SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} + {1}", a.Replace("sql_variant", "varchar", false), b.Replace("sql_variant", "varchar", false));
+        }
+
+        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
+        {
+            return SqlStatement.Format("LOWER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
+        {
+            return SqlStatement.Format("UPPER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString)
+        {
+            return GetLiteralSubtract(SqlStatement.Format("CHARINDEX({0},{1})", searchString, baseString), "1");
+        }
+
+        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex)
+        {
+            return GetLiteralSubtract(SqlStatement.Format("CHARINDEX({0},{1},{2})", searchString, baseString, startIndex), "1");
+        }
+
+        protected override SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex, SqlStatement count)
+        {
+            return GetLiteralSubtract(SqlStatement.Format("CHARINDEX({0},{1},{2})", searchString, GetLiteralSubString(baseString, "1", GetLiteralStringConcat(count, startIndex)), startIndex), "1");
+        }
+
+        //http://msdn.microsoft.com/en-us/library/4e5xt97a(VS.71).aspx
+        public static readonly Dictionary<Type, string> typeMapping = new Dictionary<Type, string>
+        {
+            {typeof(int),"int"},
+            {typeof(uint),"int"},
+
+            {typeof(long),"bigint"},
+            {typeof(ulong),"bigint"},
+
+            {typeof(float),"float"}, //TODO: could be float or real. check ranges.
+            {typeof(double),"float"}, //TODO: could be float or real. check ranges.
+            
+            {typeof(decimal),"numeric"},
+
+            {typeof(short),"tinyint"},
+            {typeof(ushort),"tinyint"},
+
+            {typeof(bool),"bit"},
+
+            // trunk? They could be: varchar, char,nchar, ntext,text... it should be the most flexible string type. TODO: check wich of them is better.
+            {typeof(string),"varchar"}, 
+            {typeof(char[]),"varchar"},
+
+            {typeof(char),"char"},
+
+            {typeof(DateTime),"datetime"},
+            {typeof(Guid),"uniqueidentifier"}
+
+            // there are more types: timestamps, images ... TODO: check what is the official behaviour
+        };
+
+        public override SqlStatement GetLiteralConvert(SqlStatement a, Type type)
+        {
+            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
+                type = type.GetGenericArguments().First();
+
+            if (type.IsValueType && a[0].Sql.StartsWith("@"))
+                return a;
+
+            SqlStatement sqlTypeName;
+            if (typeMapping.ContainsKey(type))
+                sqlTypeName = typeMapping[type];
+            else
+                sqlTypeName = "sql_variant";
+
+            return SqlStatement.Format("CONVERT({0},{1})", sqlTypeName, a);
+        }
+
+        public override string GetColumn(string table, string column)
+        {
+            if (column != "*")
+                return base.GetColumn(table, column);
+            return "*";
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerTypeConversions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerTypeConversions.cs
@@ -1,87 +1,87 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Data.SqlClient;
-using System.Data;
-
-namespace DbLinq.SqlServer
-{
-    /// <summary>
-    /// helper class which help to convert Microsoft Sql's types to SqlClient .NET types,
-    /// eg. 'smalldatetime' to SqlDbType.Date.
-    /// </summary>
-#if MONO_STRICT
-    internal
-#else
-    public
-#endif
-    static class SqlServerTypeConversions
-    {
-        static Dictionary<string, SqlDbType> s_typeMap = new Dictionary<string, SqlDbType>();
-
-        static SqlServerTypeConversions()
-        {
-            foreach (SqlDbType dbType in Enum.GetValues(typeof(SqlDbType)))
-            {
-                s_typeMap[dbType.ToString().ToLower()] = dbType;
-            }
-        }
-
-        /// <summary>
-        /// given name of MySqlType, return it's MySqlDbType enum.
-        /// </summary>
-        public static SqlDbType ParseType(string typeStr)
-        {
-            string typeStrL = typeStr.ToLower();
-
-            //convert "DateTime NOT NULL" to "DateTime"
-            if (typeStrL.EndsWith(" not null"))
-                typeStrL = typeStrL.Substring(0, typeStrL.Length - " NOT NULL".Length);
-            
-            //shorten "VarChar(50)" to "VarChar"
-            int bracket = typeStrL.IndexOf("(");
-            if (bracket > 0)
-                typeStrL = typeStrL.Substring(0, bracket);
-
-
-            if(!s_typeMap.ContainsKey(typeStrL))
-            {
-                switch(typeStrL){
-                    case "tinyint":
-                        return SqlDbType.Int;
-                    case "int":
-                        return SqlDbType.Int;
-                }
-                string msg = "TODO L24: add parsing of type "+typeStr;
-                Console.WriteLine(msg);
-                throw new ApplicationException(msg);
-            }
-            return s_typeMap[typeStrL];
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Data.SqlClient;
+using System.Data;
+
+namespace DbLinq.SqlServer
+{
+    /// <summary>
+    /// helper class which help to convert Microsoft Sql's types to SqlClient .NET types,
+    /// eg. 'smalldatetime' to SqlDbType.Date.
+    /// </summary>
+#if MONO_STRICT
+    internal
+#else
+    public
+#endif
+    static class SqlServerTypeConversions
+    {
+        static Dictionary<string, SqlDbType> s_typeMap = new Dictionary<string, SqlDbType>();
+
+        static SqlServerTypeConversions()
+        {
+            foreach (SqlDbType dbType in Enum.GetValues(typeof(SqlDbType)))
+            {
+                s_typeMap[dbType.ToString().ToLower()] = dbType;
+            }
+        }
+
+        /// <summary>
+        /// given name of MySqlType, return it's MySqlDbType enum.
+        /// </summary>
+        public static SqlDbType ParseType(string typeStr)
+        {
+            string typeStrL = typeStr.ToLower();
+
+            //convert "DateTime NOT NULL" to "DateTime"
+            if (typeStrL.EndsWith(" not null"))
+                typeStrL = typeStrL.Substring(0, typeStrL.Length - " NOT NULL".Length);
+            
+            //shorten "VarChar(50)" to "VarChar"
+            int bracket = typeStrL.IndexOf("(");
+            if (bracket > 0)
+                typeStrL = typeStrL.Substring(0, bracket);
+
+
+            if(!s_typeMap.ContainsKey(typeStrL))
+            {
+                switch(typeStrL){
+                    case "tinyint":
+                        return SqlDbType.Int;
+                    case "int":
+                        return SqlDbType.Int;
+                }
+                string msg = "TODO L24: add parsing of type "+typeStr;
+                Console.WriteLine(msg);
+                throw new ApplicationException(msg);
+            }
+            return s_typeMap[typeStrL];
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/SqlServerVendor.cs
@@ -1,134 +1,134 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Linq;
-using System.Reflection;
-using System.Data.SqlClient;
-using System.Collections.Generic;
-using System.Text;
-using System.Data;
-using System.Data.Linq.Mapping;
-
-using DbLinq.Data.Linq;
-using DbLinq.Data.Linq.SqlClient;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-#if MONO_STRICT
-using DataContext = System.Data.Linq.DataContext;
-using DataLinq    = System.Data.Linq;
-using ITable      = System.Data.Linq.ITable;
-using System.Data.Linq.SqlClient;
-#else
-using DataContext = DbLinq.Data.Linq.DataContext;
-using DataLinq    = DbLinq.Data.Linq;
-using ITable      = DbLinq.Data.Linq.ITable;
-using DbLinq.Data.Linq.SqlClient;
-#endif
-
-namespace DbLinq.SqlServer
-{
-    [Vendor(typeof(SqlServerProvider), typeof(Sql2000Provider), typeof(Sql2005Provider))]
-#if !MONO_STRICT
-    public 
-#endif
-    class SqlServerVendor : Vendor.Implementation.Vendor
-    {
-        public override string VendorName { get { return "SqlServer"; } }
-
-        protected readonly SqlServerSqlProvider sqlProvider = new SqlServerSqlProvider();
-        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
-
-        protected override void AppendServer(StringBuilder connectionString, string host)
-        {
-            // As per http://www.connectionstrings.com/sql-server, 
-            // port numbers are separated from host names via comma
-            AppendConnectionString(connectionString, ConnectionStringServer, host.Replace(':', ','));
-        }
-
-        //NOTE: for Oracle, we want to consider 'Array Binding'
-        //http://download-west.oracle.com/docs/html/A96160_01/features.htm#1049674
-
-        /// <summary>
-        /// for large number of rows, we want to use BULK INSERT, 
-        /// because it does not fill up the translation log.
-        /// This is enabled for tables where Vendor.UserBulkInsert[db.Table] is true.
-        /// </summary>
-        public override void BulkInsert<T>(DataLinq.Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction)
-        {
-            //use TableLock for speed:
-            var bulkCopy = new SqlBulkCopy((SqlConnection)transaction.Connection, SqlBulkCopyOptions.TableLock, null);
-
-            bulkCopy.DestinationTableName = table.Context.Mapping.GetTable(typeof(T)).TableName;
-            //bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(bulkCopy_SqlRowsCopied);
-
-            var dt = new DataTable();
-
-            //KeyValuePair<PropertyInfo, ColumnAttribute>[] columns = AttribHelper.GetColumnAttribs2(typeof(T));
-            var columns = table.Context.Mapping.GetTable(typeof(T)).RowType.PersistentDataMembers;
-
-            foreach (var column in columns)
-            {
-                //if (pair.Value.IsDbGenerated)
-                //    continue; //don't skip - all fields would be shifted
-
-                var dc = new DataColumn();
-                dc.ColumnName = column.MappedName;
-                dc.DataType = column.Member.GetMemberType();
-                if (dc.DataType.IsNullable())
-                {
-                    dc.AllowDBNull  = true;
-                    dc.DataType     = dc.DataType.GetNullableType();
-                }
-                dt.Columns.Add(dc);
-            }
-
-            //TODO: cross-check null values against CanBeNull specifier
-            //object[] indices = new object[] { };
-            foreach (T row in rows)
-            {
-                DataRow dr = dt.NewRow();
-                //use reflection to retrieve object's fields (TODO: optimize this later)
-                foreach (var pair in columns)
-                {
-                    //if (pair.Value.IsDbGenerated)
-                    //    continue; //don't assign IDENTITY col
-                    object value = pair.Member.GetMemberValue(row);
-                    dr[pair.MappedName] = value ?? DBNull.Value;
-                }
-                //dr[1
-                dt.Rows.Add(dr);
-            }
-            bulkCopy.WriteToServer(dt);
-
-        }
-
-        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, System.Reflection.MethodInfo method, params object[] sqlParams)
-        {
-            throw new NotImplementedException();
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Linq;
+using System.Reflection;
+using System.Data.SqlClient;
+using System.Collections.Generic;
+using System.Text;
+using System.Data;
+using System.Data.Linq.Mapping;
+
+using DbLinq.Data.Linq;
+using DbLinq.Data.Linq.SqlClient;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+#if MONO_STRICT
+using DataContext = System.Data.Linq.DataContext;
+using DataLinq    = System.Data.Linq;
+using ITable      = System.Data.Linq.ITable;
+using System.Data.Linq.SqlClient;
+#else
+using DataContext = DbLinq.Data.Linq.DataContext;
+using DataLinq    = DbLinq.Data.Linq;
+using ITable      = DbLinq.Data.Linq.ITable;
+using DbLinq.Data.Linq.SqlClient;
+#endif
+
+namespace DbLinq.SqlServer
+{
+    [Vendor(typeof(SqlServerProvider), typeof(Sql2000Provider), typeof(Sql2005Provider))]
+#if !MONO_STRICT
+    public 
+#endif
+    class SqlServerVendor : Vendor.Implementation.Vendor
+    {
+        public override string VendorName { get { return "SqlServer"; } }
+
+        protected readonly SqlServerSqlProvider sqlProvider = new SqlServerSqlProvider();
+        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
+
+        protected override void AppendServer(StringBuilder connectionString, string host)
+        {
+            // As per http://www.connectionstrings.com/sql-server, 
+            // port numbers are separated from host names via comma
+            AppendConnectionString(connectionString, ConnectionStringServer, host.Replace(':', ','));
+        }
+
+        //NOTE: for Oracle, we want to consider 'Array Binding'
+        //http://download-west.oracle.com/docs/html/A96160_01/features.htm#1049674
+
+        /// <summary>
+        /// for large number of rows, we want to use BULK INSERT, 
+        /// because it does not fill up the translation log.
+        /// This is enabled for tables where Vendor.UserBulkInsert[db.Table] is true.
+        /// </summary>
+        public override void BulkInsert<T>(DataLinq.Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction)
+        {
+            //use TableLock for speed:
+            var bulkCopy = new SqlBulkCopy((SqlConnection)transaction.Connection, SqlBulkCopyOptions.TableLock, null);
+
+            bulkCopy.DestinationTableName = table.Context.Mapping.GetTable(typeof(T)).TableName;
+            //bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(bulkCopy_SqlRowsCopied);
+
+            var dt = new DataTable();
+
+            //KeyValuePair<PropertyInfo, ColumnAttribute>[] columns = AttribHelper.GetColumnAttribs2(typeof(T));
+            var columns = table.Context.Mapping.GetTable(typeof(T)).RowType.PersistentDataMembers;
+
+            foreach (var column in columns)
+            {
+                //if (pair.Value.IsDbGenerated)
+                //    continue; //don't skip - all fields would be shifted
+
+                var dc = new DataColumn();
+                dc.ColumnName = column.MappedName;
+                dc.DataType = column.Member.GetMemberType();
+                if (dc.DataType.IsNullable())
+                {
+                    dc.AllowDBNull  = true;
+                    dc.DataType     = dc.DataType.GetNullableType();
+                }
+                dt.Columns.Add(dc);
+            }
+
+            //TODO: cross-check null values against CanBeNull specifier
+            //object[] indices = new object[] { };
+            foreach (T row in rows)
+            {
+                DataRow dr = dt.NewRow();
+                //use reflection to retrieve object's fields (TODO: optimize this later)
+                foreach (var pair in columns)
+                {
+                    //if (pair.Value.IsDbGenerated)
+                    //    continue; //don't assign IDENTITY col
+                    object value = pair.Member.GetMemberValue(row);
+                    dr[pair.MappedName] = value ?? DBNull.Value;
+                }
+                //dr[1
+                dt.Rows.Add(dr);
+            }
+            bulkCopy.WriteToServer(dt);
+
+        }
+
+        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, System.Reflection.MethodInfo method, params object[] sqlParams)
+        {
+            throw new NotImplementedException();
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/Test/MsSqlDataContextTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/Test/MsSqlDataContextTest.cs
@@ -1,126 +1,126 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-
-#if MONO_STRICT
-using System.Data.Linq;
-using System.Data.Linq.Mapping;
-#else
-using DbLinq.Data.Linq;
-using DbLinq.Data.Linq.Mapping;
-#endif
-
-using DbLinq.Null;
-using NUnit.Framework;
-
-namespace DbLinqTest {
-
-    [TestFixture]
-    public class MsSqlDataContextTest : DataContextTestBase
-    {
-        static MsSqlDataContextTest()
-        {
-#if !MONO_STRICT
-            // Make sure this assembly has a ref to DbLinq.SqlServer.dll.
-            var dummy = new DbLinq.SqlServer.SqlServerSqlProvider();
-#endif
-        }
-
-        protected override DataContext CreateDataContext()
-        {
-            return new DataContext (new NullConnection (), new AttributeMappingSource ());
-        }
-
-        protected override string People(string firstName)
-        {
-            return string.Format(
-                "SELECT [first_name], [last_name]{0}" + 
-                "FROM [people]{0}" +
-                "WHERE ([first_name] = '" + firstName + "')", 
-                Environment.NewLine); ;
-        }
-
-        protected override string People(string firstName, string lastName)
-        {
-            return People(firstName) + " AND ([last_name] = '" + lastName + "')";
-        }
-
-        protected override string People(string firstName, string lastName, int skip, int take)
-        {
-            return string.Format("SELECT *{0}" +
-                "FROM ({0}" +
-                "    SELECT [first_name], [last_name]{0}" +
-                ",{0}" +
-                "    ROW_NUMBER() OVER(ORDER BY [first_name], [last_name]{0}" +
-                ") AS [__ROW_NUMBER]{0}" +
-                "    FROM [people]{0}" +
-                "WHERE ([first_name] = '{1}') AND ([last_name] = '{2}')    ) AS [t0]{0}" +
-                "WHERE [__ROW_NUMBER] BETWEEN {3}+1 AND {3}+{4}{0}" +
-                "ORDER BY [__ROW_NUMBER]",
-                Environment.NewLine, firstName, lastName, skip, take);
-        }
-
-        [Test]
-        public void Count()
-        {
-            var oldLog = Context.Log;
-            var log = new StringWriter();
-            try
-            {
-                Context.Log = log;
-                (from p in Context.GetTable<Person>()
-                     orderby p.LastName
-                     select p)
-                    .Count();
-            }
-            catch (NotSupportedException)
-            {
-                Console.WriteLine("# logfile=\n{0}", log.ToString());
-                var expected = string.Format("SELECT COUNT(*){0}" +
-                    "FROM [people]{0}" +
-                    "--",
-                    Environment.NewLine);
-                Assert.IsTrue(log.ToString().Contains(expected));
-            }
-            catch (Exception e)
-            {
-                Assert.Fail("# ExecuteCommand: Got exception {0}", e.ToString());
-            }
-            finally
-            {
-                Context.Log = oldLog;
-            }
-        }
-    }
-}
-
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+
+#if MONO_STRICT
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+#else
+using DbLinq.Data.Linq;
+using DbLinq.Data.Linq.Mapping;
+#endif
+
+using DbLinq.Null;
+using NUnit.Framework;
+
+namespace DbLinqTest {
+
+    [TestFixture]
+    public class MsSqlDataContextTest : DataContextTestBase
+    {
+        static MsSqlDataContextTest()
+        {
+#if !MONO_STRICT
+            // Make sure this assembly has a ref to DbLinq.SqlServer.dll.
+            var dummy = new DbLinq.SqlServer.SqlServerSqlProvider();
+#endif
+        }
+
+        protected override DataContext CreateDataContext()
+        {
+            return new DataContext (new NullConnection (), new AttributeMappingSource ());
+        }
+
+        protected override string People(string firstName)
+        {
+            return string.Format(
+                "SELECT [first_name], [last_name]{0}" + 
+                "FROM [people]{0}" +
+                "WHERE ([first_name] = '" + firstName + "')", 
+                Environment.NewLine); ;
+        }
+
+        protected override string People(string firstName, string lastName)
+        {
+            return People(firstName) + " AND ([last_name] = '" + lastName + "')";
+        }
+
+        protected override string People(string firstName, string lastName, int skip, int take)
+        {
+            return string.Format("SELECT *{0}" +
+                "FROM ({0}" +
+                "    SELECT [first_name], [last_name]{0}" +
+                ",{0}" +
+                "    ROW_NUMBER() OVER(ORDER BY [first_name], [last_name]{0}" +
+                ") AS [__ROW_NUMBER]{0}" +
+                "    FROM [people]{0}" +
+                "WHERE ([first_name] = '{1}') AND ([last_name] = '{2}')    ) AS [t0]{0}" +
+                "WHERE [__ROW_NUMBER] BETWEEN {3}+1 AND {3}+{4}{0}" +
+                "ORDER BY [__ROW_NUMBER]",
+                Environment.NewLine, firstName, lastName, skip, take);
+        }
+
+        [Test]
+        public void Count()
+        {
+            var oldLog = Context.Log;
+            var log = new StringWriter();
+            try
+            {
+                Context.Log = log;
+                (from p in Context.GetTable<Person>()
+                     orderby p.LastName
+                     select p)
+                    .Count();
+            }
+            catch (NotSupportedException)
+            {
+                Console.WriteLine("# logfile=\n{0}", log.ToString());
+                var expected = string.Format("SELECT COUNT(*){0}" +
+                    "FROM [people]{0}" +
+                    "--",
+                    Environment.NewLine);
+                Assert.IsTrue(log.ToString().Contains(expected));
+            }
+            catch (Exception e)
+            {
+                Assert.Fail("# ExecuteCommand: Got exception {0}", e.ToString());
+            }
+            finally
+            {
+                Context.Log = oldLog;
+            }
+        }
+    }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/Test/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.SqlServer/Test/TestBase.cs
@@ -1,54 +1,54 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        public const StringComparison stringComparisonType = StringComparison.InvariantCulture;
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new System.Data.SqlClient.SqlCommand(sql, (System.Data.SqlClient.SqlConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new System.Data.SqlClient.SqlConnection(connectionString);
-        }
-
-#if !MONO_STRICT
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.SqlServer.SqlServerVendor();
-        }
-#endif
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        public const StringComparison stringComparisonType = StringComparison.InvariantCulture;
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new System.Data.SqlClient.SqlCommand(sql, (System.Data.SqlClient.SqlConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new System.Data.SqlClient.SqlConnection(connectionString);
+        }
+
+#if !MONO_STRICT
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.SqlServer.SqlServerVendor();
+        }
+#endif
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Properties/AssemblyInfo.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq.Sqlite")]
-[assembly: AssemblyDescription("DbLinq SQLite vendor implementation")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("9a57ce12-ad10-479f-b181-eb267c8e6c19")]
-
-[assembly: DbLinq]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq.Sqlite")]
+[assembly: AssemblyDescription("DbLinq SQLite vendor implementation")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9a57ce12-ad10-479f-b181-eb267c8e6c19")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Schema/DataCommand.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Schema/DataCommand.cs
@@ -1,73 +1,73 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-
-namespace DbLinq.Sqlite.Schema
-{
-#if !MONO_STRICT
-    public
-#endif
-    static class DataCommand
-    {
-        public delegate T ReadDelegate<T>(IDataReader reader, string table);
-
-        public static List<T> Find<T>(IDbConnection connection, string sql, string pragma, ReadDelegate<T> readDelegate)
-        {
-            using (IDbCommand cmd = connection.CreateCommand())
-            {
-                cmd.CommandText = sql;
-                using (IDataReader rdr = cmd.ExecuteReader())
-                {
-                    List<T> list = new List<T>();
-
-                    while (rdr.Read())
-                    {
-                        string table = rdr.GetString(0);
-                        //string sqlPragma = @"PRAGMA foreign_key_list('" + table + "');";
-                        string sqlPragma = string.Format(pragma, table);
-                        using (IDbCommand cmdPragma = connection.CreateCommand())
-                        {
-                            cmdPragma.CommandText = sqlPragma;
-                            using (IDataReader rdrPragma = cmdPragma.ExecuteReader())
-                            {
-                                while (rdrPragma.Read())
-                                {
-                                    list.Add(readDelegate(rdrPragma, table));
-                                }
-
-                            }
-                        }
-                    }
-                    return list;
-                }
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+
+namespace DbLinq.Sqlite.Schema
+{
+#if !MONO_STRICT
+    public
+#endif
+    static class DataCommand
+    {
+        public delegate T ReadDelegate<T>(IDataReader reader, string table);
+
+        public static List<T> Find<T>(IDbConnection connection, string sql, string pragma, ReadDelegate<T> readDelegate)
+        {
+            using (IDbCommand cmd = connection.CreateCommand())
+            {
+                cmd.CommandText = sql;
+                using (IDataReader rdr = cmd.ExecuteReader())
+                {
+                    List<T> list = new List<T>();
+
+                    while (rdr.Read())
+                    {
+                        string table = rdr.GetString(0);
+                        //string sqlPragma = @"PRAGMA foreign_key_list('" + table + "');";
+                        string sqlPragma = string.Format(pragma, table);
+                        using (IDbCommand cmdPragma = connection.CreateCommand())
+                        {
+                            cmdPragma.CommandText = sqlPragma;
+                            using (IDataReader rdrPragma = cmdPragma.ExecuteReader())
+                            {
+                                while (rdrPragma.Read())
+                                {
+                                    list.Add(readDelegate(rdrPragma, table));
+                                }
+
+                            }
+                        }
+                    }
+                    return list;
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteDataContext.cs
@@ -1,57 +1,57 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Sqlite
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SqliteDataContext : DataContext
-    {
-#if SQLITE_IS_REFERENCED
-        public SqliteDataContext(string connStr)
-            : base(new System.Data.SQLite.SQLiteConnection(connStr), new SqliteVendor())
-        {
-        }
-#endif
-        public SqliteDataContext(IDbConnection conn)
-#if MONO_STRICT
-            : base(conn)
-#else
-            : base(conn, new SqliteVendor())
-#endif
-        {
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Sqlite
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SqliteDataContext : DataContext
+    {
+#if SQLITE_IS_REFERENCED
+        public SqliteDataContext(string connStr)
+            : base(new System.Data.SQLite.SQLiteConnection(connStr), new SqliteVendor())
+        {
+        }
+#endif
+        public SqliteDataContext(IDbConnection conn)
+#if MONO_STRICT
+            : base(conn)
+#else
+            : base(conn, new SqliteVendor())
+#endif
+        {
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.Columns.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.Columns.cs
@@ -1,58 +1,58 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Sqlite
-{
-    partial class SqliteSchemaLoader
-    {
-        protected virtual IDataTableColumn ReadColumn(IDataReader dataReader, string table)
-        {
-            var column = new DataTableColumn();
-            column.TableSchema = "main";
-            column.TableName = table;
-            column.ColumnName = dataReader.GetString(1);
-            column.UnpackRawDbType(dataReader.GetString(2));
-            column.FullType = dataReader.GetString(2);
-            column.Nullable = dataReader.GetInt64(3) == 0;
-            column.PrimaryKey = dataReader.GetInt64(5) == 1;
-            // SQLite says: if it is a primary key of integer type, then it is automatically generated
-            column.Generated = column.PrimaryKey.Value && MapDbType(column.ColumnName, column) == typeof(int);
-            return column;
-        }
-
-        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
-        {
-            var sql = string.Format(SelectTablesFormat, "");
-            const string pragma = @"PRAGMA table_info('{0}');";
-
-            return Schema.DataCommand.Find<IDataTableColumn>(connectionString, sql, pragma, ReadColumn);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Sqlite
+{
+    partial class SqliteSchemaLoader
+    {
+        protected virtual IDataTableColumn ReadColumn(IDataReader dataReader, string table)
+        {
+            var column = new DataTableColumn();
+            column.TableSchema = "main";
+            column.TableName = table;
+            column.ColumnName = dataReader.GetString(1);
+            column.UnpackRawDbType(dataReader.GetString(2));
+            column.FullType = dataReader.GetString(2);
+            column.Nullable = dataReader.GetInt64(3) == 0;
+            column.PrimaryKey = dataReader.GetInt64(5) == 1;
+            // SQLite says: if it is a primary key of integer type, then it is automatically generated
+            column.Generated = column.PrimaryKey.Value && MapDbType(column.ColumnName, column) == typeof(int);
+            return column;
+        }
+
+        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName)
+        {
+            var sql = string.Format(SelectTablesFormat, "");
+            const string pragma = @"PRAGMA table_info('{0}');";
+
+            return Schema.DataCommand.Find<IDataTableColumn>(connectionString, sql, pragma, ReadColumn);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.Constraints.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.Constraints.cs
@@ -1,93 +1,93 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Text;
-using DbLinq.Sqlite.Schema;
-using DbLinq.Util;
-using DataCommand = DbLinq.Sqlite.Schema.DataCommand;
-
-namespace DbLinq.Sqlite
-{
-    partial class SqliteSchemaLoader
-    {
-        /// <summary>
-        /// represents one row from MySQL's information_schema.`Key_Column_Usage` table
-        /// </summary>
-        public class DataConstraint
-        {
-            public string ConstraintName;
-            public string TableSchema;
-            public string TableName;
-            public string ColumnName;
-            public string ReferencedTableSchema;
-            public string ReferencedTableName;
-            public string ReferencedColumnName;
-
-            public override string ToString()
-            {
-                string detail = ConstraintName == "PRIMARY"
-                                    ? TableName + " PK"
-                                    : ConstraintName;
-                return "KeyColUsage " + detail;
-            }
-        }
-
-        protected virtual DataConstraint ReadConstraint(IDataReader rdr, string table)
-        {
-            DataConstraint t = new DataConstraint();
-            const int K_ID = 0;
-            //const int K_SEQ = 1;
-            const int K_TABLE = 2;
-            const int K_FROM = 3;
-            const int K_TO = 4;
-
-            t.TableSchema = "main";
-            t.ReferencedTableSchema = "main";
-
-            t.ConstraintName = "fk_" + table + "_" + rdr.GetAsNumeric<int>(K_ID).ToString();
-            t.TableName = table;
-            t.ColumnName = rdr.GetAsString(K_FROM);
-
-            t.ReferencedTableName = UnquoteSqlName(rdr.GetAsString(K_TABLE));
-            t.ReferencedColumnName = rdr.GetAsString(K_TO);
-            return t;
-
-        }
-
-        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
-        {
-            //Could perhaps use conn.GetSchema() instead 
-            //Warning... Sqlite doesnt enforce constraints unless you define some triggers
-
-            string sql = @" SELECT tbl_name FROM sqlite_master WHERE type='table' order by tbl_name";
-            string sqlPragma = @"PRAGMA foreign_key_list('{0}');";
-
-            return DataCommand.Find<DataConstraint>(conn, sql, sqlPragma, ReadConstraint);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Text;
+using DbLinq.Sqlite.Schema;
+using DbLinq.Util;
+using DataCommand = DbLinq.Sqlite.Schema.DataCommand;
+
+namespace DbLinq.Sqlite
+{
+    partial class SqliteSchemaLoader
+    {
+        /// <summary>
+        /// represents one row from MySQL's information_schema.`Key_Column_Usage` table
+        /// </summary>
+        public class DataConstraint
+        {
+            public string ConstraintName;
+            public string TableSchema;
+            public string TableName;
+            public string ColumnName;
+            public string ReferencedTableSchema;
+            public string ReferencedTableName;
+            public string ReferencedColumnName;
+
+            public override string ToString()
+            {
+                string detail = ConstraintName == "PRIMARY"
+                                    ? TableName + " PK"
+                                    : ConstraintName;
+                return "KeyColUsage " + detail;
+            }
+        }
+
+        protected virtual DataConstraint ReadConstraint(IDataReader rdr, string table)
+        {
+            DataConstraint t = new DataConstraint();
+            const int K_ID = 0;
+            //const int K_SEQ = 1;
+            const int K_TABLE = 2;
+            const int K_FROM = 3;
+            const int K_TO = 4;
+
+            t.TableSchema = "main";
+            t.ReferencedTableSchema = "main";
+
+            t.ConstraintName = "fk_" + table + "_" + rdr.GetAsNumeric<int>(K_ID).ToString();
+            t.TableName = table;
+            t.ColumnName = rdr.GetAsString(K_FROM);
+
+            t.ReferencedTableName = UnquoteSqlName(rdr.GetAsString(K_TABLE));
+            t.ReferencedColumnName = rdr.GetAsString(K_TO);
+            return t;
+
+        }
+
+        protected virtual List<DataConstraint> ReadConstraints(IDbConnection conn, string db)
+        {
+            //Could perhaps use conn.GetSchema() instead 
+            //Warning... Sqlite doesnt enforce constraints unless you define some triggers
+
+            string sql = @" SELECT tbl_name FROM sqlite_master WHERE type='table' order by tbl_name";
+            string sqlPragma = @"PRAGMA foreign_key_list('{0}');";
+
+            return DataCommand.Find<DataConstraint>(conn, sql, sqlPragma, ReadConstraint);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.Tables.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.Tables.cs
@@ -1,40 +1,40 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Vendor;
-
-namespace DbLinq.Sqlite
-{
-    partial class SqliteSchemaLoader
-    {
-        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
-        {
-            string sql = string.Format(SelectTablesFormat, ", 'main'");
-            return Util.DataCommand.Find<IDataName>(connectionString, sql, ReadDataNameAndSchema);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Vendor;
+
+namespace DbLinq.Sqlite
+{
+    partial class SqliteSchemaLoader
+    {
+        public override IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName)
+        {
+            string sql = string.Format(SelectTablesFormat, ", 'main'");
+            return Util.DataCommand.Find<IDataName>(connectionString, sql, ReadDataNameAndSchema);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSchemaLoader.cs
@@ -1,174 +1,174 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.IO;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Sqlite;
-using DbLinq.Sqlite.Schema;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Sqlite
-{
-    partial class SqliteSchemaLoader : SchemaLoader
-    {
-        private readonly IVendor vendor = new SqliteVendor();
-        public override IVendor Vendor { get { return vendor; } set { } }
-
-        protected string UnquoteSqlName(string name)
-        {
-            var quotes = new[]{
-                new { Start = "[",  End = "]" },
-                new { Start = "`",  End = "`" },
-                new { Start = "\"", End = "\"" },
-            };
-            foreach (var q in quotes)
-            {
-                if (name.StartsWith(q.Start) && name.EndsWith(q.End))
-                    return name.Substring(q.Start.Length, name.Length - q.Start.Length - q.End.Length);
-            }
-            return name;
-        }
-
-        // note: the ReadDataNameAndSchema relies on information order;
-        // tbl_name MUST be first
-        const string SelectTablesFormat = 
-@"   SELECT tbl_name{0}
-       FROM sqlite_master
-      WHERE type='table' AND
-            tbl_name NOT LIKE 'sqlite_%'
-   ORDER BY tbl_name";
-
-
-        /// <summary>
-        /// Gets a usable name for the database.
-        /// </summary>
-        /// <param name="databaseName">Name of the database.</param>
-        /// <returns></returns>
-        protected override string GetDatabaseName(string databaseName)
-        {
-            return Path.GetFileNameWithoutExtension(databaseName);
-        }
-
-        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
-        {
-            var constraints = ReadConstraints(conn, schemaName.DbName);
-
-            //sort tables - parents first (this is moving to SchemaPostprocess)
-            //TableSorter.Sort(tables, constraints); 
-
-            // Deal with non existing foreign key database
-            if (constraints != null)
-            {
-                foreach (DataConstraint keyColRow in constraints)
-                {
-                    //find my table:
-                    string tableFullDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
-                    DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => tableFullDbName == t.Name);
-                    if (table == null)
-                    {
-                        WriteErrorLine("ERROR L46: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
-                        continue;
-                    }
-
-                    bool isForeignKey = keyColRow.ConstraintName != "PRIMARY"
-                                        && keyColRow.ReferencedTableName != null;
-
-                    if (isForeignKey)
-                    {
-                        LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
-                                       keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName,
-                                       keyColRow.ReferencedTableSchema,
-                                       keyColRow.ConstraintName, nameFormat, names);
-
-                    }
-
-                }
-            }
-        }
-
-        /// <summary>
-        /// parse strings such as 'INOUT param2 INT' or 'param4 varchar ( 32 )'
-        /// </summary>
-        /// <param name="param"></param>
-        /// <returns></returns>
-        protected DbLinq.Schema.Dbml.Parameter ParseParameterString(string param)
-        {
-            param = param.Trim();
-            var inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
-
-            if (param.StartsWith("IN", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
-                param = param.Substring(2).Trim();
-            }
-            if (param.StartsWith("INOUT", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.InOut;
-                param = param.Substring(5).Trim();
-            }
-            if (param.StartsWith("OUT", StringComparison.CurrentCultureIgnoreCase))
-            {
-                inOut = DbLinq.Schema.Dbml.ParameterDirection.Out;
-                param = param.Substring(3).Trim();
-            }
-
-            int indxSpace = param.IndexOfAny(new char[] { ' ', '\t' });
-            if (indxSpace == -1)
-                return null; //cannot find space between varName and varType
-
-            string varName = param.Substring(0, indxSpace);
-            string varType = param.Substring(indxSpace + 1);
-
-            DbLinq.Schema.Dbml.Parameter paramObj = new DbLinq.Schema.Dbml.Parameter();
-            paramObj.Direction = inOut;
-            paramObj.Name = varName;
-            paramObj.DbType = varType;
-            paramObj.Type = ParseDbType(varType);
-
-            return paramObj;
-        }
-
-        static System.Text.RegularExpressions.Regex re_CHARSET = new System.Text.RegularExpressions.Regex(@" CHARSET \w+$");
-        /// <summary>
-        /// given 'CHAR(30)', return 'string'
-        /// </summary>
-        protected string ParseDbType(string dbType1)
-        {
-            //strip 'CHARSET latin1' from the end
-            string dbType2 = re_CHARSET.Replace(dbType1, "");
-
-            var dataType = new DataType();
-            dataType.UnpackRawDbType(dbType2);
-            return MapDbType(null, dataType).ToString();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Sqlite;
+using DbLinq.Sqlite.Schema;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Sqlite
+{
+    partial class SqliteSchemaLoader : SchemaLoader
+    {
+        private readonly IVendor vendor = new SqliteVendor();
+        public override IVendor Vendor { get { return vendor; } set { } }
+
+        protected string UnquoteSqlName(string name)
+        {
+            var quotes = new[]{
+                new { Start = "[",  End = "]" },
+                new { Start = "`",  End = "`" },
+                new { Start = "\"", End = "\"" },
+            };
+            foreach (var q in quotes)
+            {
+                if (name.StartsWith(q.Start) && name.EndsWith(q.End))
+                    return name.Substring(q.Start.Length, name.Length - q.Start.Length - q.End.Length);
+            }
+            return name;
+        }
+
+        // note: the ReadDataNameAndSchema relies on information order;
+        // tbl_name MUST be first
+        const string SelectTablesFormat = 
+@"   SELECT tbl_name{0}
+       FROM sqlite_master
+      WHERE type='table' AND
+            tbl_name NOT LIKE 'sqlite_%'
+   ORDER BY tbl_name";
+
+
+        /// <summary>
+        /// Gets a usable name for the database.
+        /// </summary>
+        /// <param name="databaseName">Name of the database.</param>
+        /// <returns></returns>
+        protected override string GetDatabaseName(string databaseName)
+        {
+            return Path.GetFileNameWithoutExtension(databaseName);
+        }
+
+        protected override void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names)
+        {
+            var constraints = ReadConstraints(conn, schemaName.DbName);
+
+            //sort tables - parents first (this is moving to SchemaPostprocess)
+            //TableSorter.Sort(tables, constraints); 
+
+            // Deal with non existing foreign key database
+            if (constraints != null)
+            {
+                foreach (DataConstraint keyColRow in constraints)
+                {
+                    //find my table:
+                    string tableFullDbName = GetFullDbName(keyColRow.TableName, keyColRow.TableSchema);
+                    DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => tableFullDbName == t.Name);
+                    if (table == null)
+                    {
+                        WriteErrorLine("ERROR L46: Table '" + keyColRow.TableName + "' not found for column " + keyColRow.ColumnName);
+                        continue;
+                    }
+
+                    bool isForeignKey = keyColRow.ConstraintName != "PRIMARY"
+                                        && keyColRow.ReferencedTableName != null;
+
+                    if (isForeignKey)
+                    {
+                        LoadForeignKey(schema, table, keyColRow.ColumnName, keyColRow.TableName, keyColRow.TableSchema,
+                                       keyColRow.ReferencedColumnName, keyColRow.ReferencedTableName,
+                                       keyColRow.ReferencedTableSchema,
+                                       keyColRow.ConstraintName, nameFormat, names);
+
+                    }
+
+                }
+            }
+        }
+
+        /// <summary>
+        /// parse strings such as 'INOUT param2 INT' or 'param4 varchar ( 32 )'
+        /// </summary>
+        /// <param name="param"></param>
+        /// <returns></returns>
+        protected DbLinq.Schema.Dbml.Parameter ParseParameterString(string param)
+        {
+            param = param.Trim();
+            var inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
+
+            if (param.StartsWith("IN", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.In;
+                param = param.Substring(2).Trim();
+            }
+            if (param.StartsWith("INOUT", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.InOut;
+                param = param.Substring(5).Trim();
+            }
+            if (param.StartsWith("OUT", StringComparison.CurrentCultureIgnoreCase))
+            {
+                inOut = DbLinq.Schema.Dbml.ParameterDirection.Out;
+                param = param.Substring(3).Trim();
+            }
+
+            int indxSpace = param.IndexOfAny(new char[] { ' ', '\t' });
+            if (indxSpace == -1)
+                return null; //cannot find space between varName and varType
+
+            string varName = param.Substring(0, indxSpace);
+            string varType = param.Substring(indxSpace + 1);
+
+            DbLinq.Schema.Dbml.Parameter paramObj = new DbLinq.Schema.Dbml.Parameter();
+            paramObj.Direction = inOut;
+            paramObj.Name = varName;
+            paramObj.DbType = varType;
+            paramObj.Type = ParseDbType(varType);
+
+            return paramObj;
+        }
+
+        static System.Text.RegularExpressions.Regex re_CHARSET = new System.Text.RegularExpressions.Regex(@" CHARSET \w+$");
+        /// <summary>
+        /// given 'CHAR(30)', return 'string'
+        /// </summary>
+        protected string ParseDbType(string dbType1)
+        {
+            //strip 'CHARSET latin1' from the end
+            string dbType2 = re_CHARSET.Replace(dbType1, "");
+
+            var dataType = new DataType();
+            dataType.UnpackRawDbType(dbType2);
+            return MapDbType(null, dataType).ToString();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteSqlProvider.cs
@@ -1,70 +1,70 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Sqlite
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SqliteSqlProvider : SqlProvider
-    {
-        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
-        {
-            return "SELECT last_insert_rowid()";
-        }
-
-        protected override SqlStatement GetLiteralStringLength(SqlStatement a)
-        {
-            return SqlStatement.Format("LENGTH({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
-        {
-            return SqlStatement.Format("UPPER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
-        {
-            return string.Format("LOWER({0})", a);
-        }
-
-        protected override SqlStatement GetLiteralCount(SqlStatement a)
-        {
-            return "COUNT(*)";
-        }
-
-        public override SqlStatement GetLiteral(bool literal)
-        {
-            if (literal)
-                return "1";
-            return "0";
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Sqlite
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SqliteSqlProvider : SqlProvider
+    {
+        public override SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
+        {
+            return "SELECT last_insert_rowid()";
+        }
+
+        protected override SqlStatement GetLiteralStringLength(SqlStatement a)
+        {
+            return SqlStatement.Format("LENGTH({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToUpper(SqlStatement a)
+        {
+            return SqlStatement.Format("UPPER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralStringToLower(SqlStatement a)
+        {
+            return string.Format("LOWER({0})", a);
+        }
+
+        protected override SqlStatement GetLiteralCount(SqlStatement a)
+        {
+            return "COUNT(*)";
+        }
+
+        public override SqlStatement GetLiteral(bool literal)
+        {
+            if (literal)
+                return "1";
+            return "0";
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/SqliteVendor.cs
@@ -1,206 +1,206 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Linq;
-using System.Collections.Generic;
-using System.Text;
-using System.Data;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using DbLinq.Data.Linq;
-using DbLinq.Data.Linq.SqlClient;
-using DbLinq.Sqlite;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-#if MONO_STRICT
-using DataContext = System.Data.Linq.DataContext;
-#else
-using DataContext = DbLinq.Data.Linq.DataContext;
-#endif
-
-namespace DbLinq.Sqlite
-{
-    /// <summary>
-    /// SQLite - specific code.
-    /// </summary>
-    [Vendor(typeof(SqliteProvider))]
-#if !MONO_STRICT
-    public
-#endif
-    class SqliteVendor : Vendor.Implementation.Vendor
-    {
-        public override string VendorName { get { return "SQLite"; } }
-
-        protected readonly SqliteSqlProvider sqlProvider = new SqliteSqlProvider();
-        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
-
-        /// <summary>
-        /// call SQLite stored proc or stored function, 
-        /// optionally return DataSet, and collect return params.
-        /// </summary>
-        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
-                                                                 , params object[] inputValues)
-        {
-            if (method == null)
-                throw new ArgumentNullException("L56 Null 'method' parameter");
-
-            //check to make sure there is exactly one [FunctionEx]? that's below.
-            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
-            var functionAttrib = context.Mapping.GetFunction(method);
-
-            ParameterInfo[] paramInfos = method.GetParameters();
-            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
-            //if (numRequiredParams != inputValues.Length)
-            //    throw new ArgumentException("L161 Argument count mismatch");
-
-            string sp_name = functionAttrib.MappedName;
-
-            using (IDbCommand command = context.Connection.CreateCommand())
-            {
-                command.CommandText = sp_name;
-                //SQLiteCommand command = new SQLiteCommand("select hello0()");
-                int currInputIndex = 0;
-
-                List<string> paramNames = new List<string>();
-                for (int i = 0; i < paramInfos.Length; i++)
-                {
-                    ParameterInfo paramInfo = paramInfos[i];
-
-                    //TODO: check to make sure there is exactly one [Parameter]?
-                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
-
-                    string paramName = "?" + paramAttrib.Name; //eg. '?param1'
-                    paramNames.Add(paramName);
-
-                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
-                    //SQLiteDbType dbType = SQLiteTypeConversions.ParseType(paramAttrib.DbType);
-                    IDataParameter cmdParam = command.CreateParameter();
-                    cmdParam.ParameterName = paramName;
-                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
-                    if (direction == ParameterDirection.Input || direction == ParameterDirection.InputOutput)
-                    {
-                        object inputValue = inputValues[currInputIndex++];
-                        cmdParam.Value = inputValue;
-                    }
-                    else
-                    {
-                        cmdParam.Value = null;
-                    }
-                    cmdParam.Direction = direction;
-                    command.Parameters.Add(cmdParam);
-                }
-
-                if (!functionAttrib.IsComposable)
-                {
-                    //procedures: under the hood, this seems to prepend 'CALL '
-                    command.CommandType = System.Data.CommandType.StoredProcedure;
-                }
-                else
-                {
-                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
-                    string cmdText = "SELECT " + command.CommandText + "($args)";
-                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
-                    command.CommandText = cmdText;
-                }
-
-                if (method.ReturnType == typeof(DataSet))
-                {
-                    //unknown shape of resultset:
-                    System.Data.DataSet dataSet = new DataSet();
-                    IDbDataAdapter adapter = CreateDataAdapter(context);
-                    adapter.SelectCommand = command;
-                    adapter.Fill(dataSet);
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(dataSet, outParamValues.ToArray());
-                }
-                else
-                {
-                    object obj = command.ExecuteScalar();
-                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
-                    return new ProcedureResult(obj, outParamValues.ToArray());
-                }
-            }
-        }
-
-        static System.Data.ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
-        {
-            //strange hack to determine what's a ref, out parameter:
-            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
-            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
-            if (paramInfo.IsOut)
-                return System.Data.ParameterDirection.Output;
-            if (hasAmpersand)
-                return System.Data.ParameterDirection.InputOutput;
-            return System.Data.ParameterDirection.Input;
-        }
-
-        /// <summary>
-        /// Collect all Out or InOut param values, casting them to the correct .net type.
-        /// </summary>
-        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
-        {
-            List<object> outParamValues = new List<object>();
-            //Type type_t = typeof(T);
-            int i = -1;
-            foreach (IDataParameter param in paramSet)
-            {
-                i++;
-                if (param.Direction == System.Data.ParameterDirection.Input)
-                {
-                    outParamValues.Add("unused");
-                    continue;
-                }
-
-                object val = param.Value;
-                Type desired_type = paramInfos[i].ParameterType;
-
-                if (desired_type.Name.EndsWith("&"))
-                {
-                    //for ref and out parameters, we need to tweak ref types, e.g.
-                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-                    string fullName1 = desired_type.AssemblyQualifiedName;
-                    string fullName2 = fullName1.Replace("&", "");
-                    desired_type = Type.GetType(fullName2);
-                }
-                try
-                {
-                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
-                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
-                    //object val2 = DbLinq.Util.FieldUtils.CastValue(val, desired_type);
-                    object val2 = TypeConvert.To(val, desired_type);
-                    outParamValues.Add(val2);
-                }
-                catch (Exception)
-                {
-                    //fails with 'System.Decimal cannot be converted to Int32'
-                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
-                }
-            }
-            return outParamValues;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.Text;
+using System.Data;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using DbLinq.Data.Linq;
+using DbLinq.Data.Linq.SqlClient;
+using DbLinq.Sqlite;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+#if MONO_STRICT
+using DataContext = System.Data.Linq.DataContext;
+#else
+using DataContext = DbLinq.Data.Linq.DataContext;
+#endif
+
+namespace DbLinq.Sqlite
+{
+    /// <summary>
+    /// SQLite - specific code.
+    /// </summary>
+    [Vendor(typeof(SqliteProvider))]
+#if !MONO_STRICT
+    public
+#endif
+    class SqliteVendor : Vendor.Implementation.Vendor
+    {
+        public override string VendorName { get { return "SQLite"; } }
+
+        protected readonly SqliteSqlProvider sqlProvider = new SqliteSqlProvider();
+        public override ISqlProvider SqlProvider { get { return sqlProvider; } }
+
+        /// <summary>
+        /// call SQLite stored proc or stored function, 
+        /// optionally return DataSet, and collect return params.
+        /// </summary>
+        public override System.Data.Linq.IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method
+                                                                 , params object[] inputValues)
+        {
+            if (method == null)
+                throw new ArgumentNullException("L56 Null 'method' parameter");
+
+            //check to make sure there is exactly one [FunctionEx]? that's below.
+            //FunctionAttribute functionAttrib = GetFunctionAttribute(method);
+            var functionAttrib = context.Mapping.GetFunction(method);
+
+            ParameterInfo[] paramInfos = method.GetParameters();
+            //int numRequiredParams = paramInfos.Count(p => p.IsIn || p.IsRetval);
+            //if (numRequiredParams != inputValues.Length)
+            //    throw new ArgumentException("L161 Argument count mismatch");
+
+            string sp_name = functionAttrib.MappedName;
+
+            using (IDbCommand command = context.Connection.CreateCommand())
+            {
+                command.CommandText = sp_name;
+                //SQLiteCommand command = new SQLiteCommand("select hello0()");
+                int currInputIndex = 0;
+
+                List<string> paramNames = new List<string>();
+                for (int i = 0; i < paramInfos.Length; i++)
+                {
+                    ParameterInfo paramInfo = paramInfos[i];
+
+                    //TODO: check to make sure there is exactly one [Parameter]?
+                    ParameterAttribute paramAttrib = paramInfo.GetCustomAttributes(false).OfType<ParameterAttribute>().Single();
+
+                    string paramName = "?" + paramAttrib.Name; //eg. '?param1'
+                    paramNames.Add(paramName);
+
+                    System.Data.ParameterDirection direction = GetDirection(paramInfo, paramAttrib);
+                    //SQLiteDbType dbType = SQLiteTypeConversions.ParseType(paramAttrib.DbType);
+                    IDataParameter cmdParam = command.CreateParameter();
+                    cmdParam.ParameterName = paramName;
+                    //cmdParam.Direction = System.Data.ParameterDirection.Input;
+                    if (direction == ParameterDirection.Input || direction == ParameterDirection.InputOutput)
+                    {
+                        object inputValue = inputValues[currInputIndex++];
+                        cmdParam.Value = inputValue;
+                    }
+                    else
+                    {
+                        cmdParam.Value = null;
+                    }
+                    cmdParam.Direction = direction;
+                    command.Parameters.Add(cmdParam);
+                }
+
+                if (!functionAttrib.IsComposable)
+                {
+                    //procedures: under the hood, this seems to prepend 'CALL '
+                    command.CommandType = System.Data.CommandType.StoredProcedure;
+                }
+                else
+                {
+                    //functions: 'SELECT myFunction()' or 'SELECT hello(?s)'
+                    string cmdText = "SELECT " + command.CommandText + "($args)";
+                    cmdText = cmdText.Replace("$args", string.Join(",", paramNames.ToArray()));
+                    command.CommandText = cmdText;
+                }
+
+                if (method.ReturnType == typeof(DataSet))
+                {
+                    //unknown shape of resultset:
+                    System.Data.DataSet dataSet = new DataSet();
+                    IDbDataAdapter adapter = CreateDataAdapter(context);
+                    adapter.SelectCommand = command;
+                    adapter.Fill(dataSet);
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(dataSet, outParamValues.ToArray());
+                }
+                else
+                {
+                    object obj = command.ExecuteScalar();
+                    List<object> outParamValues = CopyOutParams(paramInfos, command.Parameters);
+                    return new ProcedureResult(obj, outParamValues.ToArray());
+                }
+            }
+        }
+
+        static System.Data.ParameterDirection GetDirection(ParameterInfo paramInfo, ParameterAttribute paramAttrib)
+        {
+            //strange hack to determine what's a ref, out parameter:
+            //http://lists.ximian.com/pipermain/mono-list/2003-March/012751.html
+            bool hasAmpersand = paramInfo.ParameterType.FullName.Contains('&');
+            if (paramInfo.IsOut)
+                return System.Data.ParameterDirection.Output;
+            if (hasAmpersand)
+                return System.Data.ParameterDirection.InputOutput;
+            return System.Data.ParameterDirection.Input;
+        }
+
+        /// <summary>
+        /// Collect all Out or InOut param values, casting them to the correct .net type.
+        /// </summary>
+        private List<object> CopyOutParams(ParameterInfo[] paramInfos, IDataParameterCollection paramSet)
+        {
+            List<object> outParamValues = new List<object>();
+            //Type type_t = typeof(T);
+            int i = -1;
+            foreach (IDataParameter param in paramSet)
+            {
+                i++;
+                if (param.Direction == System.Data.ParameterDirection.Input)
+                {
+                    outParamValues.Add("unused");
+                    continue;
+                }
+
+                object val = param.Value;
+                Type desired_type = paramInfos[i].ParameterType;
+
+                if (desired_type.Name.EndsWith("&"))
+                {
+                    //for ref and out parameters, we need to tweak ref types, e.g.
+                    // "System.Int32&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+                    string fullName1 = desired_type.AssemblyQualifiedName;
+                    string fullName2 = fullName1.Replace("&", "");
+                    desired_type = Type.GetType(fullName2);
+                }
+                try
+                {
+                    //fi.SetValue(t, val); //fails with 'System.Decimal cannot be converted to Int32'
+                    //DbLinq.util.FieldUtils.SetObjectIdField(t, fi, val);
+                    //object val2 = DbLinq.Util.FieldUtils.CastValue(val, desired_type);
+                    object val2 = TypeConvert.To(val, desired_type);
+                    outParamValues.Add(val2);
+                }
+                catch (Exception)
+                {
+                    //fails with 'System.Decimal cannot be converted to Int32'
+                    //Logger.Write(Level.Error, "CopyOutParams ERROR L245: failed on CastValue(): " + ex.Message);
+                }
+            }
+            return outParamValues;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Test/DirectDataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Test/DirectDataContext.cs
@@ -1,62 +1,62 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq;
-
-using Mono.Data.Sqlite;
-
-using nwind;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using NUnit.Framework;
-
-namespace Test_NUnit_Sqlite
-{
-    [TestFixture]
-    public class DirectDataContextTest
-    {
-        [Test]
-        public void CreateDataContext()
-        {
-            string connectionString = "DbLinqProvider=Sqlite;" + 
-                "DbLinqConnectionType=Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite;" + 
-                "Data Source=Northwind.db3";
-            var dc = new DataContext(connectionString);
-            Assert.AreEqual(typeof(SqliteConnection), dc.Connection.GetType());
-
-            var dcq = from p in dc.GetTable<Product>() where p.ProductName == "Chai" select p.ProductID;
-            var cmd = dc.GetCommand(dcq);
-            var dcc = dcq.ToList().Count;
-            Assert.AreEqual(dcc, 1);
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq;
+
+using Mono.Data.Sqlite;
+
+using nwind;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using NUnit.Framework;
+
+namespace Test_NUnit_Sqlite
+{
+    [TestFixture]
+    public class DirectDataContextTest
+    {
+        [Test]
+        public void CreateDataContext()
+        {
+            string connectionString = "DbLinqProvider=Sqlite;" + 
+                "DbLinqConnectionType=Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite;" + 
+                "Data Source=Northwind.db3";
+            var dc = new DataContext(connectionString);
+            Assert.AreEqual(typeof(SqliteConnection), dc.Connection.GetType());
+
+            var dcq = from p in dc.GetTable<Product>() where p.ProductName == "Chai" select p.ProductID;
+            var cmd = dc.GetCommand(dcq);
+            var dcc = dcq.ToList().Count;
+            Assert.AreEqual(dcc, 1);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Test/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Test/TestBase.cs
@@ -1,63 +1,63 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.SQLite;
-using System.IO;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        static bool doRecreate = true;
-        public const StringComparison stringComparisonType = StringComparison.Ordinal;
-
-        static partial void CheckRecreateSqlite ()
-        {
-            if (doRecreate) {
-                File.Copy ("../tests/Northwind.db3", "Northwind.db3", true);
-                doRecreate = false;
-            }
-        }
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new SQLiteCommand(sql, (SQLiteConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new SQLiteConnection(connectionString);
-        }
-
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.Sqlite.SqliteVendor();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.SQLite;
+using System.IO;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        static bool doRecreate = true;
+        public const StringComparison stringComparisonType = StringComparison.Ordinal;
+
+        static partial void CheckRecreateSqlite ()
+        {
+            if (doRecreate) {
+                File.Copy ("../tests/Northwind.db3", "Northwind.db3", true);
+                doRecreate = false;
+            }
+        }
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new SQLiteCommand(sql, (SQLiteConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new SQLiteConnection(connectionString);
+        }
+
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.Sqlite.SqliteVendor();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Test/TestBase_mono.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq.Sqlite/Test/TestBase_mono.cs
@@ -1,65 +1,65 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using Mono.Data.Sqlite;
-using System.IO;
-
-namespace Test_NUnit
-{
-    public abstract partial class TestBase
-    {
-        static bool doRecreate = true;
-        public const StringComparison stringComparisonType = StringComparison.Ordinal;
-
-        static partial void CheckRecreateSqlite ()
-        {
-            if (doRecreate) {
-                File.Copy ("../tests/Northwind.db3", "Northwind.db3", true);
-                doRecreate = false;
-            }
-        }
-
-        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
-        {
-            return new SqliteCommand(sql, (SqliteConnection) conn);
-        }
-
-        public static IDbConnection CreateConnection (string connectionString)
-        {
-            return new SqliteConnection(connectionString);
-        }
-
-#if !MONO_STRICT
-        public DbLinq.Vendor.IVendor CreateVendor()
-        {
-            return new DbLinq.Sqlite.SqliteVendor();
-        }
-#endif
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne, Pascal Craponne
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using Mono.Data.Sqlite;
+using System.IO;
+
+namespace Test_NUnit
+{
+    public abstract partial class TestBase
+    {
+        static bool doRecreate = true;
+        public const StringComparison stringComparisonType = StringComparison.Ordinal;
+
+        static partial void CheckRecreateSqlite ()
+        {
+            if (doRecreate) {
+                File.Copy ("../tests/Northwind.db3", "Northwind.db3", true);
+                doRecreate = false;
+            }
+        }
+
+        public static IDbCommand CreateCommand (string sql, IDbConnection conn)
+        {
+            return new SqliteCommand(sql, (SqliteConnection) conn);
+        }
+
+        public static IDbConnection CreateConnection (string connectionString)
+        {
+            return new SqliteConnection(connectionString);
+        }
+
+#if !MONO_STRICT
+        public DbLinq.Vendor.IVendor CreateVendor()
+        {
+            return new DbLinq.Sqlite.SqliteVendor();
+        }
+#endif
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ChangeAction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ChangeAction.cs
@@ -1,36 +1,36 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace System.Data.Linq
-{
-    public enum ChangeAction
-    {
-        None, 
-        Delete, 
-        Insert, 
-        Update
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace System.Data.Linq
+{
+    public enum ChangeAction
+    {
+        None, 
+        Delete, 
+        Insert, 
+        Update
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ChangeSet.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ChangeSet.cs
@@ -1,77 +1,77 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-
-#if MONO_STRICT
-namespace System.Data.Linq
-#else
-namespace DbLinq.Data.Linq
-#endif
-{
-    /// <summary>
-    /// Contains list of datacontext entities to be deleted, inserted and updated.
-    /// Merges table separate lists into single one.
-    /// Standard DLinq class defined in MSDN.
-    /// Important: this is immutable and reflects a snapshot of the DataContext when calling GetChangeSet
-    /// </summary>
-    public sealed class ChangeSet
-    {
-        /// <summary>
-        /// All items to be inserted
-        /// </summary>
-        public IList<object> Inserts { get; private set; }
-
-        /// <summary>
-        /// All items to be updated
-        /// </summary>
-        public IList<object> Updates { get; private set; }
-
-        /// <summary>
-        /// All items to be deleted
-        /// </summary>
-        public IList<object> Deletes { get; private set; }
-
-        public override string ToString()
-        {
-            return string.Format("Total changes: {{Added: {0}, Removed: {1}, Modified: {2}}}",
-                                 Inserts.Count, Deletes.Count, Updates.Count);
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="ChangeSet"/> class.
-        /// </summary>
-        /// <param name="inserts">The inserts.</param>
-        /// <param name="updates">The updates.</param>
-        /// <param name="deletes">The deletes.</param>
-        internal ChangeSet(List<object> inserts, List<object> updates, List<object> deletes)
-        {
-            Inserts = inserts.AsReadOnly();
-            Updates = updates.AsReadOnly();
-            Deletes = deletes.AsReadOnly();
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+
+#if MONO_STRICT
+namespace System.Data.Linq
+#else
+namespace DbLinq.Data.Linq
+#endif
+{
+    /// <summary>
+    /// Contains list of datacontext entities to be deleted, inserted and updated.
+    /// Merges table separate lists into single one.
+    /// Standard DLinq class defined in MSDN.
+    /// Important: this is immutable and reflects a snapshot of the DataContext when calling GetChangeSet
+    /// </summary>
+    public sealed class ChangeSet
+    {
+        /// <summary>
+        /// All items to be inserted
+        /// </summary>
+        public IList<object> Inserts { get; private set; }
+
+        /// <summary>
+        /// All items to be updated
+        /// </summary>
+        public IList<object> Updates { get; private set; }
+
+        /// <summary>
+        /// All items to be deleted
+        /// </summary>
+        public IList<object> Deletes { get; private set; }
+
+        public override string ToString()
+        {
+            return string.Format("Total changes: {{Added: {0}, Removed: {1}, Modified: {2}}}",
+                                 Inserts.Count, Deletes.Count, Updates.Count);
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ChangeSet"/> class.
+        /// </summary>
+        /// <param name="inserts">The inserts.</param>
+        /// <param name="updates">The updates.</param>
+        /// <param name="deletes">The deletes.</param>
+        internal ChangeSet(List<object> inserts, List<object> updates, List<object> deletes)
+        {
+            Inserts = inserts.AsReadOnly();
+            Updates = updates.AsReadOnly();
+            Deletes = deletes.AsReadOnly();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DBLinqExtendedAttributte.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DBLinqExtendedAttributte.cs
@@ -1,20 +1,20 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-#if MONO_STRICT
-namespace System.Data.Linq
-#else
-namespace DbLinq.Data.Linq
-#endif
-{
-    [global::System.AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
-    sealed class DBLinqExtendedAttribute : Attribute
-    {
-        public DBLinqExtendedAttribute()
-        {
-
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#if MONO_STRICT
+namespace System.Data.Linq
+#else
+namespace DbLinq.Data.Linq
+#endif
+{
+    [global::System.AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
+    sealed class DBLinqExtendedAttribute : Attribute
+    {
+        public DBLinqExtendedAttribute()
+        {
+
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DataContext.Extended.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DataContext.Extended.cs
@@ -1,84 +1,84 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Diagnostics;
-using DbLinq.Data.Linq.Database;
-using DbLinq.Data.Linq.Mapping;
-using System.Data.Linq.Mapping;
-using System.Data;
-using DbLinq.Vendor;
-using System.Data.Linq;
-using DbLinq.Data.Linq.Database.Implementation;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq
-{
-    partial class DataContext
-    {
-        public virtual MappingContext MappingContext { get { return _MappingContext; } set { _MappingContext = value; } }
-
-        public DataContext(IDatabaseContext databaseContext, MappingSource mappingSource, IVendor vendor)
-        {
-            Profiler.At("START DataContext(IDatabaseContext, MappingSource, IVendor)");
-            Init(databaseContext, mappingSource, vendor);
-            Profiler.At("END DataContext(IDatabaseContext, MappingSource, IVendor)");
-        }
-
-        public DataContext(IDbConnection dbConnection, MappingSource mappingSource, IVendor vendor)
-            : this(new DatabaseContext(dbConnection), mappingSource, vendor)
-        {
-        }
-
-        public DataContext(IDatabaseContext databaseContext, IVendor vendor)
-            : this(databaseContext, null, vendor)
-        {
-        }
-
-        public DataContext(IDbConnection dbConnection, IVendor vendor)
-            : this(new DatabaseContext(dbConnection), vendor)
-        {
-        }
-
-        [Obsolete("Please use the other GetTable() methods")]
-        public Table<T> GetTable<T>(string tableName) where T : class
-        {
-            return GetTable(typeof(T)) as Table<T>;
-        }
-
-        /// <summary>
-        /// Calls method.
-        /// </summary>
-        /// <param name="context">The context.</param>
-        /// <param name="method">The method.</param>
-        /// <param name="sqlParams">The SQL params.</param>
-        /// <returns></returns>
-        protected IExecuteResult ExecuteMethodCall(DataContext context, System.Reflection.MethodInfo method, params object[] sqlParams)
-        {
-            return _ExecuteMethodCall(context, method, sqlParams);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Diagnostics;
+using DbLinq.Data.Linq.Database;
+using DbLinq.Data.Linq.Mapping;
+using System.Data.Linq.Mapping;
+using System.Data;
+using DbLinq.Vendor;
+using System.Data.Linq;
+using DbLinq.Data.Linq.Database.Implementation;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq
+{
+    partial class DataContext
+    {
+        public virtual MappingContext MappingContext { get { return _MappingContext; } set { _MappingContext = value; } }
+
+        public DataContext(IDatabaseContext databaseContext, MappingSource mappingSource, IVendor vendor)
+        {
+            Profiler.At("START DataContext(IDatabaseContext, MappingSource, IVendor)");
+            Init(databaseContext, mappingSource, vendor);
+            Profiler.At("END DataContext(IDatabaseContext, MappingSource, IVendor)");
+        }
+
+        public DataContext(IDbConnection dbConnection, MappingSource mappingSource, IVendor vendor)
+            : this(new DatabaseContext(dbConnection), mappingSource, vendor)
+        {
+        }
+
+        public DataContext(IDatabaseContext databaseContext, IVendor vendor)
+            : this(databaseContext, null, vendor)
+        {
+        }
+
+        public DataContext(IDbConnection dbConnection, IVendor vendor)
+            : this(new DatabaseContext(dbConnection), vendor)
+        {
+        }
+
+        [Obsolete("Please use the other GetTable() methods")]
+        public Table<T> GetTable<T>(string tableName) where T : class
+        {
+            return GetTable(typeof(T)) as Table<T>;
+        }
+
+        /// <summary>
+        /// Calls method.
+        /// </summary>
+        /// <param name="context">The context.</param>
+        /// <param name="method">The method.</param>
+        /// <param name="sqlParams">The SQL params.</param>
+        /// <returns></returns>
+        protected IExecuteResult ExecuteMethodCall(DataContext context, System.Reflection.MethodInfo method, params object[] sqlParams)
+        {
+            return _ExecuteMethodCall(context, method, sqlParams);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DataContext.cs
@@ -1,1282 +1,1282 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Data;
-using System.Data.Common;
-using System.Data.Linq;
-using System.Data.Linq.Mapping;
-using System.Linq.Expressions;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Reflection.Emit;
-
-#if MONO_STRICT
-using AttributeMappingSource  = System.Data.Linq.Mapping.AttributeMappingSource;
-#else
-using AttributeMappingSource  = DbLinq.Data.Linq.Mapping.AttributeMappingSource;
-#endif
-
-using DbLinq;
-using DbLinq.Data.Linq;
-using DbLinq.Data.Linq.Database;
-using DbLinq.Data.Linq.Database.Implementation;
-using DbLinq.Data.Linq.Identity;
-using DbLinq.Data.Linq.Implementation;
-using DbLinq.Data.Linq.Mapping;
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Factory;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-#if MONO_STRICT
-namespace System.Data.Linq
-#else
-namespace DbLinq.Data.Linq
-#endif
-{
-    public partial class DataContext : IDisposable
-    {
-        //private readonly Dictionary<string, ITable> _tableMap = new Dictionary<string, ITable>();
-        private readonly Dictionary<Type, ITable> _tableMap = new Dictionary<Type, ITable>();
-
-        public MetaModel Mapping { get; private set; }
-        // PC question: at ctor, we get a IDbConnection and the Connection property exposes a DbConnection
-        //              WTF?
-        public DbConnection Connection { get { return DatabaseContext.Connection as DbConnection; } }
-
-        // all properties below are set public to optionally be injected
-        internal IVendor Vendor { get; set; }
-        internal IQueryBuilder QueryBuilder { get; set; }
-        internal IQueryRunner QueryRunner { get; set; }
-        internal IMemberModificationHandler MemberModificationHandler { get; set; }
-        internal IDatabaseContext DatabaseContext { get; private set; }
-        // /all properties...
-
-        private bool objectTrackingEnabled = true;
-        private bool deferredLoadingEnabled = true;
-
-        private bool queryCacheEnabled = false;
-
-        /// <summary>
-        /// Disable the QueryCache: this is surely good for rarely used Select, since preparing
-        /// the SelectQuery to be cached could require more time than build the sql from scratch.
-        /// </summary>
-        [DBLinqExtended]
-        public bool QueryCacheEnabled 
-        {
-            get { return queryCacheEnabled; }
-            set { queryCacheEnabled = value; }
-        }
-
-        private IEntityTracker currentTransactionEntities;
-        private IEntityTracker CurrentTransactionEntities
-        {
-            get
-            {
-                if (this.currentTransactionEntities == null)
-                {
-                    if (this.ObjectTrackingEnabled)
-                        this.currentTransactionEntities = new EntityTracker();
-                    else
-                        this.currentTransactionEntities = new DisabledEntityTracker();
-                }
-                return this.currentTransactionEntities;
-            }
-        }
-
-        private IEntityTracker allTrackedEntities;
-        private IEntityTracker AllTrackedEntities
-        {
-            get
-            {
-                if (this.allTrackedEntities == null)
-                {
-                    allTrackedEntities = ObjectTrackingEnabled
-                        ? (IEntityTracker) new EntityTracker()
-                        : (IEntityTracker) new DisabledEntityTracker();
-                }
-                return this.allTrackedEntities;
-            }
-        }
-
-        private IIdentityReaderFactory identityReaderFactory;
-        private readonly IDictionary<Type, IIdentityReader> identityReaders = new Dictionary<Type, IIdentityReader>();
-
-        /// <summary>
-        /// The default behavior creates one MappingContext.
-        /// </summary>
-        [DBLinqExtended]
-        internal virtual MappingContext _MappingContext { get; set; }
-
-        [DBLinqExtended]
-        internal IVendorProvider _VendorProvider { get; set; }
-
-        public DataContext(IDbConnection connection, MappingSource mapping)
-        {
-            Profiler.At("START DataContext(IDbConnection, MappingSource)");
-            Init(new DatabaseContext(connection), mapping, null);
-            Profiler.At("END DataContext(IDbConnection, MappingSource)");
-        }
-
-        public DataContext(IDbConnection connection)
-        {
-            Profiler.At("START DataContext(IDbConnection)");
-            if (connection == null)
-                throw new ArgumentNullException("connection");
-
-            Init(new DatabaseContext(connection), null, null);
-            Profiler.At("END DataContext(IDbConnection)");
-        }
-
-        [DbLinqToDo]
-        public DataContext(string fileOrServerOrConnection, MappingSource mapping)
-        {
-            Profiler.At("START DataContext(string, MappingSource)");
-            if (fileOrServerOrConnection == null)
-                throw new ArgumentNullException("fileOrServerOrConnection");
-            if (mapping == null)
-                throw new ArgumentNullException("mapping");
-
-            if (File.Exists(fileOrServerOrConnection))
-                throw new NotImplementedException("File names not supported.");
-
-            // Is this a decent server name check?
-            // It assumes that the connection string will have at least 2
-            // parameters (separated by ';')
-            if (!fileOrServerOrConnection.Contains(";"))
-                throw new NotImplementedException("Server name not supported.");
-
-            // Assume it's a connection string...
-            IVendor ivendor = GetVendor(ref fileOrServerOrConnection);
-
-            IDbConnection dbConnection = ivendor.CreateDbConnection(fileOrServerOrConnection);
-            Init(new DatabaseContext(dbConnection), mapping, ivendor);
-            Profiler.At("END DataContext(string, MappingSource)");
-        }
-
-        /// <summary>
-        /// Construct DataContext, given a connectionString.
-        /// To determine which DB type to go against, we look for 'DbLinqProvider=xxx' substring.
-        /// If not found, we assume that we are dealing with MS Sql Server.
-        /// 
-        /// Valid values are names of provider DLLs (or any other DLL containing an IVendor implementation)
-        /// DbLinqProvider=Mysql
-        /// DbLinqProvider=Oracle etc.
-        /// </summary>
-        /// <param name="connectionString">specifies file or server connection</param>
-        [DbLinqToDo]
-        public DataContext(string connectionString)
-        {
-            Profiler.At("START DataContext(string)");
-            IVendor ivendor = GetVendor(ref connectionString);
-
-            IDbConnection dbConnection = ivendor.CreateDbConnection(connectionString);
-            Init(new DatabaseContext(dbConnection), null, ivendor);
-
-            Profiler.At("END DataContext(string)");
-        }
-
-        private IVendor GetVendor(ref string connectionString)
-        {
-            if (connectionString == null)
-                throw new ArgumentNullException("connectionString");
-
-            Assembly assy;
-            string vendorClassToLoad;
-            GetVendorInfo(ref connectionString, out assy, out vendorClassToLoad);
-
-            var types =
-                from type in assy.GetTypes()
-                where type.Name.ToLowerInvariant() == vendorClassToLoad.ToLowerInvariant() &&
-                    type.GetInterfaces().Contains(typeof(IVendor)) &&
-                    type.GetConstructor(Type.EmptyTypes) != null
-                select type;
-            if (!types.Any())
-            {
-                throw new ArgumentException(string.Format("Found no IVendor class in assembly `{0}' named `{1}' having a default constructor.",
-                    assy.GetName().Name, vendorClassToLoad));
-            }
-            else if (types.Count() > 1)
-            {
-                throw new ArgumentException(string.Format("Found too many IVendor classes in assembly `{0}' named `{1}' having a default constructor.",
-                    assy.GetName().Name, vendorClassToLoad));
-            }
-            return (IVendor) Activator.CreateInstance(types.First());
-        }
-
-        private void GetVendorInfo(ref string connectionString, out Assembly assembly, out string typeName)
-        {
-            System.Text.RegularExpressions.Regex reProvider
-                = new System.Text.RegularExpressions.Regex(@"DbLinqProvider=([\w\.]+);?");
-
-            string assemblyName = null;
-            string vendor;
-            if (!reProvider.IsMatch(connectionString))
-            {
-                vendor       = "SqlServer";
-                assemblyName = "DbLinq.SqlServer";
-            }
-            else
-            {
-                var match    = reProvider.Match(connectionString);
-                vendor       = match.Groups[1].Value;
-                assemblyName = "DbLinq." + vendor;
-
-                //plain DbLinq - non MONO: 
-                //IVendor classes are in DLLs such as "DbLinq.MySql.dll"
-                if (vendor.Contains("."))
-                {
-                    //already fully qualified DLL name?
-                    throw new ArgumentException("Please provide a short name, such as 'MySql', not '" + vendor + "'");
-                }
-
-                //shorten: "DbLinqProvider=X;Server=Y" -> ";Server=Y"
-                connectionString = reProvider.Replace(connectionString, "");
-            }
-
-            typeName = vendor + "Vendor";
-
-            try
-            {
-#if MONO_STRICT
-                assembly = typeof (DataContext).Assembly; // System.Data.Linq.dll
-#else
-                assembly = Assembly.Load(assemblyName);
-#endif
-            }
-            catch (Exception e)
-            {
-                throw new ArgumentException(
-                        string.Format(
-                            "Unable to load the `{0}' DbLinq vendor within assembly '{1}.dll'.",
-                            assemblyName, vendor),
-                        "connectionString", e);
-            }
-        }
-
-        private void Init(IDatabaseContext databaseContext, MappingSource mappingSource, IVendor vendor)
-        {
-            if (databaseContext == null)
-                throw new ArgumentNullException("databaseContext");
-
-            // Yes, .NET throws an NRE for this.  Why it's not ArgumentNullException, I couldn't tell you.
-            if (databaseContext.Connection.ConnectionString == null)
-                throw new NullReferenceException();
-
-            string connectionString = databaseContext.Connection.ConnectionString;
-            _VendorProvider = ObjectFactory.Get<IVendorProvider>();
-            Vendor = vendor ?? 
-                (connectionString != null ? GetVendor(ref connectionString) : null) ??
-#if MOBILE
-                _VendorProvider.FindVendorByProviderType(typeof(DbLinq.Sqlite.SqliteSqlProvider));
-#else
-                _VendorProvider.FindVendorByProviderType(typeof(SqlClient.Sql2005Provider));
-#endif
-            
-            DatabaseContext = databaseContext;
-
-            MemberModificationHandler = ObjectFactory.Create<IMemberModificationHandler>(); // not a singleton: object is stateful
-            QueryBuilder = ObjectFactory.Get<IQueryBuilder>();
-            QueryRunner = ObjectFactory.Get<IQueryRunner>();
-
-            //EntityMap = ObjectFactory.Create<IEntityMap>();
-            identityReaderFactory = ObjectFactory.Get<IIdentityReaderFactory>();
-
-            _MappingContext = new MappingContext();
-
-            // initialize the mapping information
-            if (mappingSource == null)
-                mappingSource = new AttributeMappingSource();
-            Mapping = mappingSource.GetModel(GetType());
-        }
-
-        /// <summary>
-        /// Checks if the table is allready mapped or maps it if not.
-        /// </summary>
-        /// <param name="tableType">Type of the table.</param>
-        /// <exception cref="InvalidOperationException">Thrown if the table is not mappable.</exception>
-        private void CheckTableMapping(Type tableType)
-        {
-            //This will throw an exception if the table is not found
-            if(Mapping.GetTable(tableType) == null)
-            {
-                throw new InvalidOperationException("The type '" + tableType.Name + "' is not mapped as a Table.");
-            }
-        }
-
-        /// <summary>
-        /// Returns a Table for the type TEntity.
-        /// </summary>
-        /// <exception cref="InvalidOperationException">If the type TEntity is not mappable as a Table.</exception>
-        /// <typeparam name="TEntity">The table type.</typeparam>
-        public Table<TEntity> GetTable<TEntity>() where TEntity : class
-        {
-            return (Table<TEntity>)GetTable(typeof(TEntity));
-        }
-
-        /// <summary>
-        /// Returns a Table for the given type.
-        /// </summary>
-        /// <param name="type">The table type.</param>
-        /// <exception cref="InvalidOperationException">If the type is not mappable as a Table.</exception>
-        public ITable GetTable(Type type)
-        {
-            Profiler.At("DataContext.GetTable(typeof({0}))", type != null ? type.Name : null);
-            ITable tableExisting;
-            if (_tableMap.TryGetValue(type, out tableExisting))
-                return tableExisting;
-
-            //Check for table mapping
-            CheckTableMapping(type);
-
-            var tableNew = Activator.CreateInstance(
-                              typeof(Table<>).MakeGenericType(type)
-                              , BindingFlags.NonPublic | BindingFlags.Instance
-                              , null
-                              , new object[] { this }
-                              , System.Globalization.CultureInfo.CurrentCulture) as ITable;
-
-            _tableMap[type] = tableNew;
-            return tableNew;
-        }
-
-        public void SubmitChanges()
-        {
-            SubmitChanges(ConflictMode.FailOnFirstConflict);
-        }
-
-        /// <summary>
-        /// Pings database
-        /// </summary>
-        /// <returns></returns>
-        public bool DatabaseExists()
-        {
-            try
-            {
-                return Vendor.Ping(this);
-            }
-            catch (Exception)
-            {
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// Commits all pending changes to database 
-        /// </summary>
-        /// <param name="failureMode"></param>
-        public virtual void SubmitChanges(ConflictMode failureMode)
-        {
-            if (this.objectTrackingEnabled == false)
-                throw new InvalidOperationException("Object tracking is not enabled for the current data context instance.");
-            using (DatabaseContext.OpenConnection()) //ConnMgr will close connection for us
-            {
-                if (Transaction != null)
-                    SubmitChangesImpl(failureMode);
-                else
-                {
-                    using (IDbTransaction transaction = DatabaseContext.CreateTransaction())
-                    {
-                        try
-                        {
-                            Transaction = (DbTransaction) transaction;
-                            SubmitChangesImpl(failureMode);
-                            // TODO: handle conflicts (which can only occur when concurrency mode is implemented)
-                            transaction.Commit();
-                        }
-                        finally
-                        {
-                            Transaction = null;
-                        }
-                    }
-                }
-            }
-        }
-
-        void SubmitChangesImpl(ConflictMode failureMode)
-        {
-            var queryContext = new QueryContext(this);
-
-            // There's no sense in updating an entity when it's going to 
-            // be deleted in the current transaction, so do deletes first.
-            foreach (var entityTrack in CurrentTransactionEntities.EnumerateAll().ToList())
-            {
-                switch (entityTrack.EntityState)
-                {
-                    case EntityState.ToDelete:
-                        var deleteQuery = QueryBuilder.GetDeleteQuery(entityTrack.Entity, queryContext);
-                        QueryRunner.Delete(entityTrack.Entity, deleteQuery);
-
-                        UnregisterDelete(entityTrack.Entity);
-                        AllTrackedEntities.RegisterToDelete(entityTrack.Entity);
-                        AllTrackedEntities.RegisterDeleted(entityTrack.Entity);
-                        break;
-                    default:
-                        // ignore.
-                        break;
-                }
-            }
-            foreach (var entityTrack in CurrentTransactionEntities.EnumerateAll()
-                    .Concat(AllTrackedEntities.EnumerateAll())
-                    .ToList())
-            {
-                switch (entityTrack.EntityState)
-                {
-                    case EntityState.ToInsert:
-                        foreach (var toInsert in GetReferencedObjects(entityTrack.Entity))
-                        {
-                            InsertEntity(toInsert, queryContext);
-                        }
-                        break;
-                    case EntityState.ToWatch:
-                        foreach (var toUpdate in GetReferencedObjects(entityTrack.Entity))
-                        {
-                            UpdateEntity(toUpdate, queryContext);
-                        }
-                        break;
-                    default:
-                        throw new ArgumentOutOfRangeException();
-                }
-            }
-        }
-
-        private IEnumerable<object> GetReferencedObjects(object value)
-        {
-            var values = new EntitySet<object>();
-            FillReferencedObjects(value, values);
-            return values;
-        }
-
-        // Breadth-first traversal of an object graph
-        private void FillReferencedObjects(object parent, EntitySet<object> values)
-        {
-            if (parent == null)
-                return;
-            var children = new Queue<object>();
-			children.Enqueue(parent);
-			while (children.Count > 0)
-			{
-                object value = children.Dequeue();
-                values.Add(value);
-                IEnumerable<MetaAssociation> associationList = Mapping.GetMetaType(value.GetType()).Associations.Where(a => !a.IsForeignKey);
-                if (associationList.Any())
-			    {
-				    foreach (MetaAssociation association in associationList)
-                    {
-                        var memberData = association.ThisMember;
-                        var entitySetValue = memberData.Member.GetMemberValue(value);
-
-                        if (entitySetValue != null)
-                        {
-						    var hasLoadedOrAssignedValues = entitySetValue.GetType().GetProperty("HasLoadedOrAssignedValues");
-						    if (!((bool)hasLoadedOrAssignedValues.GetValue(entitySetValue, null)))
-							    continue;   // execution deferred; ignore.
-						    foreach (var o in ((IEnumerable)entitySetValue))
-							    children.Enqueue(o);
-					    }
-                    }
-                }
-			}
-        }
-
-        private void InsertEntity(object entity, QueryContext queryContext)
-        {
-            var insertQuery = QueryBuilder.GetInsertQuery(entity, queryContext);
-            QueryRunner.Insert(entity, insertQuery);
-            Register(entity);
-            UpdateReferencedObjects(entity);
-            MoveToAllTrackedEntities(entity, true);
-        }
-
-        private void UpdateEntity(object entity, QueryContext queryContext)
-        {
-            if (!AllTrackedEntities.ContainsReference(entity))
-                InsertEntity(entity, queryContext);
-            else if (MemberModificationHandler.IsModified(entity, Mapping))
-            {
-                var modifiedMembers = MemberModificationHandler.GetModifiedProperties(entity, Mapping);
-                var updateQuery = QueryBuilder.GetUpdateQuery(entity, modifiedMembers, queryContext);
-                QueryRunner.Update(entity, updateQuery, modifiedMembers);
-
-                RegisterUpdateAgain(entity);
-                UpdateReferencedObjects(entity);
-                MoveToAllTrackedEntities(entity, false);
-            }
-        }
-
-        private void UpdateReferencedObjects(object root)
-        {
-            var metaType = Mapping.GetMetaType(root.GetType());
-            foreach (var assoc in metaType.Associations)
-            {
-                var memberData = assoc.ThisMember;
-				//This is not correct - AutoSyncing applies to auto-updating columns, such as a TimeStamp, not to foreign key associations, which is always automatically synched
-				//Confirmed against default .NET l2sql - association columns are always set, even if AutoSync==AutoSync.Never
-				//if (memberData.Association.ThisKey.Any(m => (m.AutoSync != AutoSync.Always) && (m.AutoSync != sync)))
-                //    continue;
-                var oks = memberData.Association.OtherKey.Select(m => m.StorageMember).ToList();
-                if (oks.Count == 0)
-                    continue;
-                var pks = memberData.Association.ThisKey
-                    .Select(m => m.StorageMember.GetMemberValue(root))
-                    .ToList();
-                if (pks.Count != oks.Count)
-                    throw new InvalidOperationException(
-                        string.Format("Count of primary keys ({0}) doesn't match count of other keys ({1}).",
-                            pks.Count, oks.Count));
-                var members = memberData.Member.GetMemberValue(root) as IEnumerable;
-                if (members == null)
-                    continue;
-                foreach (var member in members)
-                {
-                    for (int i = 0; i < pks.Count; ++i)
-                    {
-                        oks[i].SetMemberValue(member, pks[i]);
-                    }
-                }
-            }
-        }
-
-        private void MoveToAllTrackedEntities(object entity, bool insert)
-        {
-            if (!ObjectTrackingEnabled)
-                return;
-            if (CurrentTransactionEntities.ContainsReference(entity))
-            {
-                CurrentTransactionEntities.RegisterToDelete(entity);
-                if (!insert)
-                    CurrentTransactionEntities.RegisterDeleted(entity);
-            }
-            if (!AllTrackedEntities.ContainsReference(entity))
-            {
-                var identityReader = _GetIdentityReader(entity.GetType());
-                AllTrackedEntities.RegisterToWatch(entity, identityReader.GetIdentityKey(entity));
-            }
-        }
-
-        /// <summary>
-        /// TODO - allow generated methods to call into stored procedures
-        /// </summary>
-        [DBLinqExtended]
-        internal IExecuteResult _ExecuteMethodCall(DataContext context, System.Reflection.MethodInfo method, params object[] sqlParams)
-        {
-            using (DatabaseContext.OpenConnection())
-            {
-                System.Data.Linq.IExecuteResult result = Vendor.ExecuteMethodCall(context, method, sqlParams);
-                return result;
-            }
-        }
-
-        [DbLinqToDo]
-        protected IExecuteResult ExecuteMethodCall(object instance, System.Reflection.MethodInfo methodInfo, params object[] parameters)
-        {
-            throw new NotImplementedException();
-        }
-
-        #region Identity management
-
-        [DBLinqExtended]
-        internal IIdentityReader _GetIdentityReader(Type t)
-        {
-            IIdentityReader identityReader;
-            if (!identityReaders.TryGetValue(t, out identityReader))
-            {
-                identityReader = identityReaderFactory.GetReader(t, this);
-                identityReaders[t] = identityReader;
-            }
-            return identityReader;
-        }
-
-        [DBLinqExtended]
-        internal object _GetRegisteredEntity(object entity)
-        {
-            // TODO: check what is faster: by identity or by ref
-            var identityReader = _GetIdentityReader(entity.GetType());
-            var identityKey = identityReader.GetIdentityKey(entity);
-            if (identityKey == null) // if we don't have an entitykey here, it means that the entity has no PK
-                return entity;
-            // even 
-            var registeredEntityTrack = 
-                CurrentTransactionEntities.FindByIdentity(identityKey) ??
-                AllTrackedEntities.FindByIdentity(identityKey);
-            if (registeredEntityTrack != null)
-                return registeredEntityTrack.Entity;
-            return null;
-        }
-
-        //internal object GetRegisteredEntityByKey(IdentityKey identityKey)
-        //{
-        //    return EntityMap[identityKey];
-        //}
-
-        /// <summary>
-        /// Registers an entity in a watch state
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        [DBLinqExtended]
-        internal object _GetOrRegisterEntity(object entity)
-        {
-            var identityReader = _GetIdentityReader(entity.GetType());
-            var identityKey = identityReader.GetIdentityKey(entity);
-            SetEntitySetsQueries(entity);
-            SetEntityRefQueries(entity);
-
-            // if we have no identity, we can't track it
-            if (identityKey == null)
-                return entity;
-
-            // try to find an already registered entity and return it
-            var registeredEntityTrack = 
-                CurrentTransactionEntities.FindByIdentity(identityKey) ??
-                AllTrackedEntities.FindByIdentity(identityKey);
-            if (registeredEntityTrack != null)
-                return registeredEntityTrack.Entity;
-
-            // otherwise, register and return
-            AllTrackedEntities.RegisterToWatch(entity, identityKey);
-            return entity;
-        }
-
-        readonly IDataMapper DataMapper = ObjectFactory.Get<IDataMapper>();
-		private void SetEntityRefQueries(object entity)
-		{
-            if (!this.deferredLoadingEnabled)
-                return;
-
-            // BUG: This is ignoring External Mappings from XmlMappingSource.
-
-			Type thisType = entity.GetType();
-			IEnumerable<MetaAssociation> associationList = Mapping.GetMetaType(entity.GetType()).Associations.Where(a => a.IsForeignKey);
-			foreach (MetaAssociation association in associationList)
-			{
-				//example of entityRef:Order.Employee
-				var memberData = association.ThisMember;
-				Type otherTableType = association.OtherType.Type;
-				ParameterExpression p = Expression.Parameter(otherTableType, "other");
-
-				var otherTable = GetTable(otherTableType);
-
-				//ie:EmployeeTerritories.EmployeeID
-				var foreignKeys = memberData.Association.ThisKey;
-				BinaryExpression predicate = null;
-				var otherPKs = memberData.Association.OtherKey;
-				IEnumerator<MetaDataMember> otherPKEnumerator = otherPKs.GetEnumerator();
-
-				if (otherPKs.Count != foreignKeys.Count)
-					throw new InvalidOperationException("Foreign keys don't match ThisKey");
-				foreach (MetaDataMember key in foreignKeys)
-				{
-					otherPKEnumerator.MoveNext();
-
-					var thisForeignKeyProperty = (PropertyInfo)key.Member;
-					object thisForeignKeyValue = thisForeignKeyProperty.GetValue(entity, null);
-
-					if (thisForeignKeyValue != null)
-					{
-						BinaryExpression keyPredicate;
-						if (!(thisForeignKeyProperty.PropertyType.IsNullable()))
-						{
-							keyPredicate = Expression.Equal(Expression.MakeMemberAccess(p, otherPKEnumerator.Current.Member),
-																		Expression.Constant(thisForeignKeyValue));
-						}
-						else
-						{
-							var ValueProperty = thisForeignKeyProperty.PropertyType.GetProperty("Value");
-							keyPredicate = Expression.Equal(Expression.MakeMemberAccess(p, otherPKEnumerator.Current.Member),
-																	 Expression.Constant(ValueProperty.GetValue(thisForeignKeyValue, null)));
-						}
-
-						if (predicate == null)
-							predicate = keyPredicate;
-						else
-							predicate = Expression.And(predicate, keyPredicate);
-					}
-				}
-				IEnumerable query = null;
-				if (predicate != null)
-				{
-					query = GetOtherTableQuery(predicate, p, otherTableType, otherTable) as IEnumerable;
-					//it would be interesting surround the above query with a .Take(1) expression for performance.
-				}
-
-				// If no separate Storage is specified, use the member directly
-				MemberInfo storage = memberData.StorageMember;
-				if (storage == null)
-					storage = memberData.Member;
-
-				 // Check that the storage is a field or a writable property
-				if (!(storage is FieldInfo) && !(storage is PropertyInfo && ((PropertyInfo)storage).CanWrite)) {
-					throw new InvalidOperationException(String.Format(
-						"Member {0}.{1} is not a field nor a writable property",
-						storage.DeclaringType, storage.Name));
-				}
-
-				Type storageType = storage.GetMemberType();
-
-				object entityRefValue = null;
-				if (query != null)
-					entityRefValue = Activator.CreateInstance(storageType, query);
-				else
-					entityRefValue = Activator.CreateInstance(storageType);
-
-				storage.SetMemberValue(entity, entityRefValue);
-			}
-		}
-
-        /// <summary>
-        /// This method is executed when the entity is being registered. Each EntitySet property has a internal query that can be set using the EntitySet.SetSource method.
-        /// Here we set the query source of each EntitySetProperty
-        /// </summary>
-        /// <param name="entity"></param>
-        private void SetEntitySetsQueries(object entity)
-        {
-            if (!this.deferredLoadingEnabled)
-                return;
-
-            // BUG: This is ignoring External Mappings from XmlMappingSource.
-
-			IEnumerable<MetaAssociation> associationList = Mapping.GetMetaType(entity.GetType()).Associations.Where(a => !a.IsForeignKey);
-
-			if (associationList.Any())
-			{
-				foreach (MetaAssociation association in associationList)
-                {
-					//example of entitySet: Employee.EmployeeTerritories
-					var memberData = association.ThisMember;
-					Type otherTableType = association.OtherType.Type;
-                    ParameterExpression p = Expression.Parameter(otherTableType, "other");
-
-                    //other table:EmployeeTerritories
-                    var otherTable = GetTable(otherTableType);
-
-					var otherKeys = memberData.Association.OtherKey;
-					var thisKeys = memberData.Association.ThisKey;
-                    if (otherKeys.Count != thisKeys.Count)
-                        throw new InvalidOperationException("This keys don't match OtherKey");
-                    BinaryExpression predicate = null;
-                    IEnumerator<MetaDataMember> thisKeyEnumerator = thisKeys.GetEnumerator();
-					foreach (MetaDataMember otherKey in otherKeys)
-                    {
-                        thisKeyEnumerator.MoveNext();
-                        //other table member:EmployeeTerritories.EmployeeID
-						var otherTableMember = (PropertyInfo)otherKey.Member;
-
-                        BinaryExpression keyPredicate;
-                        if (!(otherTableMember.PropertyType.IsNullable()))
-                        {
-                            keyPredicate = Expression.Equal(Expression.MakeMemberAccess(p, otherTableMember),
-                                                                        Expression.Constant(thisKeyEnumerator.Current.Member.GetMemberValue(entity)));
-                        }
-                        else
-                        {
-                            var ValueProperty = otherTableMember.PropertyType.GetProperty("Value");
-                            keyPredicate = Expression.Equal(Expression.MakeMemberAccess(
-                                                                        Expression.MakeMemberAccess(p, otherTableMember),
-                                                                        ValueProperty),
-                                                                     Expression.Constant(thisKeyEnumerator.Current.Member.GetMemberValue(entity)));
-                        }
-                        if (predicate == null)
-                            predicate = keyPredicate;
-                        else
-                            predicate = Expression.And(predicate, keyPredicate);
-                    }
-
-                    var query = GetOtherTableQuery(predicate, p, otherTableType, otherTable);
-
-					var entitySetValue = memberData.Member.GetMemberValue(entity);
-
-                    if (entitySetValue == null)
-                    {
-						entitySetValue = Activator.CreateInstance(memberData.Member.GetMemberType());
-						memberData.Member.SetMemberValue(entity, entitySetValue);
-                    }
-
-                    var hasLoadedOrAssignedValues = entitySetValue.GetType().GetProperty("HasLoadedOrAssignedValues");
-                    if ((bool)hasLoadedOrAssignedValues.GetValue(entitySetValue, null))
-                        continue;
-
-                    var setSourceMethod = entitySetValue.GetType().GetMethod("SetSource");
-                    setSourceMethod.Invoke(entitySetValue, new[] { query });
-                    //employee.EmployeeTerritories.SetSource(Table[EmployeesTerritories].Where(other=>other.employeeID="WARTH"))
-                }
-            }
-        }
-
-		private static MethodInfo _WhereMethod;
-        internal object GetOtherTableQuery(Expression predicate, ParameterExpression parameter, Type otherTableType, IQueryable otherTable)
-        {
-            if (_WhereMethod == null)
-                System.Threading.Interlocked.CompareExchange (ref _WhereMethod, typeof(Queryable).GetMethods().First(m => m.Name == "Where"), null);
-
-            //predicate: other.EmployeeID== "WARTH"
-            Expression lambdaPredicate = Expression.Lambda(predicate, parameter);
-            //lambdaPredicate: other=>other.EmployeeID== "WARTH"
-
-			Expression call = Expression.Call(_WhereMethod.MakeGenericMethod(otherTableType), otherTable.Expression, lambdaPredicate);
-            //Table[EmployeesTerritories].Where(other=>other.employeeID="WARTH")
-
-            return otherTable.Provider.CreateQuery(call);
-        }
-
-        #endregion
-
-        #region Insert/Update/Delete management
-
-        /// <summary>
-        /// Registers an entity for insert
-        /// </summary>
-        /// <param name="entity"></param>
-        internal void RegisterInsert(object entity)
-        {
-            CurrentTransactionEntities.RegisterToInsert(entity);
-        }
-
-        private void DoRegisterUpdate(object entity)
-        {
-            if (entity == null)
-                throw new ArgumentNullException("entity");
-
-            if (!this.objectTrackingEnabled)
-                return;
-
-            var identityReader = _GetIdentityReader(entity.GetType());
-            var identityKey = identityReader.GetIdentityKey(entity);
-            // if we have no key, we can not watch
-            if (identityKey == null || identityKey.Keys.Count == 0)
-                return;
-            // register entity
-            AllTrackedEntities.RegisterToWatch(entity, identityKey);
-        }
-
-        /// <summary>
-        /// Registers an entity for update
-        /// The entity will be updated only if some of its members have changed after the registration
-        /// </summary>
-        /// <param name="entity"></param>
-        internal void RegisterUpdate(object entity)
-        {
-            DoRegisterUpdate(entity);
-			MemberModificationHandler.Register(entity, Mapping);
-        }
-
-        /// <summary>
-        /// Registers or re-registers an entity and clears its state
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        internal object Register(object entity)
-        {
-            if (! this.objectTrackingEnabled)
-                return entity;
-            var registeredEntity = _GetOrRegisterEntity(entity);
-            // the fact of registering again clears the modified state, so we're... clear with that
-            MemberModificationHandler.Register(registeredEntity, Mapping);
-            return registeredEntity;
-        }
-
-        /// <summary>
-        /// Registers an entity for update
-        /// The entity will be updated only if some of its members have changed after the registration
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="entityOriginalState"></param>
-        internal void RegisterUpdate(object entity, object entityOriginalState)
-        {
-            if (!this.objectTrackingEnabled)
-                return;
-            DoRegisterUpdate(entity);
-            MemberModificationHandler.Register(entity, entityOriginalState, Mapping);
-        }
-
-        /// <summary>
-        /// Clears the current state, and marks the object as clean
-        /// </summary>
-        /// <param name="entity"></param>
-        internal void RegisterUpdateAgain(object entity)
-        {
-            if (!this.objectTrackingEnabled)
-                return;
-            MemberModificationHandler.ClearModified(entity, Mapping);
-        }
-
-        /// <summary>
-        /// Registers an entity for delete
-        /// </summary>
-        /// <param name="entity"></param>
-        internal void RegisterDelete(object entity)
-        {
-            if (!this.objectTrackingEnabled)
-                return;
-            CurrentTransactionEntities.RegisterToDelete(entity);
-        }
-
-        /// <summary>
-        /// Unregisters entity after deletion
-        /// </summary>
-        /// <param name="entity"></param>
-        internal void UnregisterDelete(object entity)
-        {
-            if (!this.objectTrackingEnabled)
-                return;
-            CurrentTransactionEntities.RegisterDeleted(entity);
-        }
-
-        #endregion
-
-        /// <summary>
-        /// Changed object determine 
-        /// </summary>
-        /// <returns>Lists of inserted, updated, deleted objects</returns>
-        public ChangeSet GetChangeSet()
-        {
-            var inserts = new List<object>();
-            var updates = new List<object>();
-            var deletes = new List<object>();
-            foreach (var entityTrack in CurrentTransactionEntities.EnumerateAll()
-                    .Concat(AllTrackedEntities.EnumerateAll()))
-            {
-                switch (entityTrack.EntityState)
-                {
-                    case EntityState.ToInsert:
-                        inserts.Add(entityTrack.Entity);
-                        break;
-                    case EntityState.ToWatch:
-                        if (MemberModificationHandler.IsModified(entityTrack.Entity, Mapping))
-                            updates.Add(entityTrack.Entity);
-                        break;
-                    case EntityState.ToDelete:
-                        deletes.Add(entityTrack.Entity);
-                        break;
-                    default:
-                        throw new ArgumentOutOfRangeException();
-                }
-            }
-            return new ChangeSet(inserts, updates, deletes);
-        }
-
-        /// <summary>
-        /// use ExecuteCommand to call raw SQL
-        /// </summary>
-        public int ExecuteCommand(string command, params object[] parameters)
-        {
-            var directQuery = QueryBuilder.GetDirectQuery(command, new QueryContext(this));
-            return QueryRunner.Execute(directQuery, parameters);
-        }
-
-        /// <summary>
-        /// Execute raw SQL query and return object
-        /// </summary>
-        public IEnumerable<TResult> ExecuteQuery<TResult>(string query, params object[] parameters) where TResult : new()
-        {
-            if (query == null)
-                throw new ArgumentNullException("query");
-
-            return CreateExecuteQueryEnumerable<TResult>(query, parameters);
-        }
-
-        private IEnumerable<TResult> CreateExecuteQueryEnumerable<TResult>(string query, object[] parameters)
-            where TResult : new()
-        {
-            foreach (TResult result in ExecuteQuery(typeof(TResult), query, parameters))
-                yield return result;
-        }
-
-        public IEnumerable ExecuteQuery(Type elementType, string query, params object[] parameters)
-        {
-            if (elementType == null)
-                throw new ArgumentNullException("elementType");
-            if (query == null)
-                throw new ArgumentNullException("query");
-
-            var queryContext = new QueryContext(this);
-            var directQuery = QueryBuilder.GetDirectQuery(query, queryContext);
-            return QueryRunner.ExecuteSelect(elementType, directQuery, parameters);
-        }
-
-        /// <summary>
-        /// Gets or sets the load options
-        /// </summary>
-        [DbLinqToDo]
-		public DataLoadOptions LoadOptions
-		{
-			get { throw new NotImplementedException(); }
-			set { throw new NotImplementedException(); }
-		}
-
-        public DbTransaction Transaction {
-            get { return (DbTransaction) DatabaseContext.CurrentTransaction; }
-            set { DatabaseContext.CurrentTransaction = value; }
-        }
-
-        /// <summary>
-        /// Runs the given reader and returns columns.
-        /// </summary>
-        /// <typeparam name="TResult">The type of the result.</typeparam>
-        /// <param name="reader">The reader.</param>
-        /// <returns></returns>
-        public IEnumerable<TResult> Translate<TResult>(DbDataReader reader)
-        {
-            if (reader == null)
-                throw new ArgumentNullException("reader");
-            return CreateTranslateIterator<TResult>(reader);
-        }
-
-        IEnumerable<TResult> CreateTranslateIterator<TResult>(DbDataReader reader)
-        {
-            foreach (TResult result in Translate(typeof(TResult), reader))
-                yield return result;
-        }
-
-        public IMultipleResults Translate(DbDataReader reader)
-        {
-            throw new NotImplementedException();
-        }
-
-        public IEnumerable Translate(Type elementType, DbDataReader reader)
-        {
-            if (elementType == null)
-                throw new ArgumentNullException("elementType");
-            if (reader == null)
-                throw new ArgumentNullException("reader");
-
-            return QueryRunner.EnumerateResult(elementType, reader, this);
-        }
-
-        public void Dispose()
-        {
-            //connection closing should not be done here.
-            //read: http://msdn2.microsoft.com/en-us/library/bb292288.aspx
-
-			//We own the instance of MemberModificationHandler - we must unregister listeners of entities we attached to
-			MemberModificationHandler.UnregisterAll();
-        }
-
-        [DbLinqToDo]
-        protected virtual void Dispose(bool disposing)
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Creates a IDbDataAdapter. Used internally by Vendors
-        /// </summary>
-        /// <returns></returns>
-        internal IDbDataAdapter CreateDataAdapter()
-        {
-            return DatabaseContext.CreateDataAdapter();
-        }
-
-        /// <summary>
-        /// Sets a TextWriter where generated SQL commands are written
-        /// </summary>
-        public TextWriter Log { get; set; }
-
-        /// <summary>
-        /// Writes text on Log (if not null)
-        /// Internal helper
-        /// </summary>
-        /// <param name="text"></param>
-        internal void WriteLog(string text)
-        {
-            if (Log != null)
-                Log.WriteLine(text);
-        }
-
-        /// <summary>
-        /// Write an IDbCommand to Log (if non null)
-        /// </summary>
-        /// <param name="command"></param>
-        internal void WriteLog(IDbCommand command)
-        {
-            if (Log != null)
-            {
-                Log.WriteLine(command.CommandText);
-                foreach (IDbDataParameter parameter in command.Parameters)
-                    WriteLog(parameter);
-                Log.Write("--");
-                Log.Write(" Context: {0}", Vendor.VendorName);
-                Log.Write(" Model: {0}", Mapping.GetType().Name);
-                Log.Write(" Build: {0}", Assembly.GetExecutingAssembly().GetName().Version);
-                Log.WriteLine();
-            }
-        }
-
-        /// <summary>
-        /// Writes and IDbDataParameter to Log (if non null)
-        /// </summary>
-        /// <param name="parameter"></param>
-        internal void WriteLog(IDbDataParameter parameter)
-        {
-            if (Log != null)
-            {
-                // -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [2]
-                // -- <name>: <direction> <type> (...) [<value>]
-                Log.WriteLine("-- {0}: {1} {2} (Size = {3}; Prec = {4}; Scale = {5}) [{6}]",
-                    parameter.ParameterName, parameter.Direction, parameter.DbType,
-                    parameter.Size, parameter.Precision, parameter.Scale, parameter.Value);
-            }
-        }
-
-        public bool ObjectTrackingEnabled
-        {
-            get { return this.objectTrackingEnabled; }
-            set 
-            {
-                if (this.currentTransactionEntities != null && value != this.objectTrackingEnabled)
-                    throw new InvalidOperationException("Data context options cannot be modified after results have been returned from a query.");
-                this.objectTrackingEnabled = value;
-            }
-        }
-
-        [DbLinqToDo]
-        public int CommandTimeout
-        {
-            get { throw new NotImplementedException(); }
-            set { throw new NotImplementedException(); }
-        }
-
-        public bool DeferredLoadingEnabled
-        {
-            get { return this.deferredLoadingEnabled; }
-            set
-            {
-                if (this.currentTransactionEntities != null && value != this.deferredLoadingEnabled)
-                    throw new InvalidOperationException("Data context options cannot be modified after results have been returned from a query.");
-                this.deferredLoadingEnabled = value;
-            }
-        }
-
-        [DbLinqToDo]
-        public ChangeConflictCollection ChangeConflicts
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        [DbLinqToDo]
-        public DbCommand GetCommand(IQueryable query)
-        {
-            DbCommand dbCommand = GetIDbCommand(query) as DbCommand;
-            if (dbCommand == null)
-                throw new InvalidOperationException();
-
-            return dbCommand;
-        }
-
-        [DBLinqExtended]
-        public IDbCommand GetIDbCommand(IQueryable query)
-        {
-            if (query == null)
-                throw new ArgumentNullException("query");
-
-            var qp = query.Provider as QueryProvider;
-            if (qp == null)
-                throw new InvalidOperationException();
-
-            if (qp.ExpressionChain.Expressions.Count == 0)
-                qp.ExpressionChain.Expressions.Add(CreateDefaultQuery(query));
-
-            return qp.GetQuery(null).GetCommand().Command;
-        }
-
-        private Expression CreateDefaultQuery(IQueryable query)
-        {
-            // Manually create the expression tree for: IQueryable<TableType>.Select(e => e)
-            var identityParameter = Expression.Parameter(query.ElementType, "e");
-            var identityBody = Expression.Lambda(
-                typeof(Func<,>).MakeGenericType(query.ElementType, query.ElementType),
-                identityParameter,
-                new[] { identityParameter }
-            );
-
-            return Expression.Call(
-                typeof(Queryable),
-                "Select",
-                new[] { query.ElementType, query.ElementType },
-                query.Expression,
-                Expression.Quote(identityBody)
-            );
-        }
-
-        [DbLinqToDo]
-        public void Refresh(RefreshMode mode, IEnumerable entities)
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        public void Refresh(RefreshMode mode, params object[] entities)
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        public void Refresh(RefreshMode mode, object entity)
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        public void DeleteDatabase()
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        public void CreateDatabase()
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        protected internal IQueryable<TResult> CreateMethodCallQuery<TResult>(object instance, MethodInfo methodInfo, params object[] parameters)
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        protected internal void ExecuteDynamicDelete(object entity)
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        protected internal void ExecuteDynamicInsert(object entity)
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        protected internal void ExecuteDynamicUpdate(object entity)
-        {
-            throw new NotImplementedException();
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Data;
+using System.Data.Common;
+using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Linq.Expressions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Reflection.Emit;
+
+#if MONO_STRICT
+using AttributeMappingSource  = System.Data.Linq.Mapping.AttributeMappingSource;
+#else
+using AttributeMappingSource  = DbLinq.Data.Linq.Mapping.AttributeMappingSource;
+#endif
+
+using DbLinq;
+using DbLinq.Data.Linq;
+using DbLinq.Data.Linq.Database;
+using DbLinq.Data.Linq.Database.Implementation;
+using DbLinq.Data.Linq.Identity;
+using DbLinq.Data.Linq.Implementation;
+using DbLinq.Data.Linq.Mapping;
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Factory;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+#if MONO_STRICT
+namespace System.Data.Linq
+#else
+namespace DbLinq.Data.Linq
+#endif
+{
+    public partial class DataContext : IDisposable
+    {
+        //private readonly Dictionary<string, ITable> _tableMap = new Dictionary<string, ITable>();
+        private readonly Dictionary<Type, ITable> _tableMap = new Dictionary<Type, ITable>();
+
+        public MetaModel Mapping { get; private set; }
+        // PC question: at ctor, we get a IDbConnection and the Connection property exposes a DbConnection
+        //              WTF?
+        public DbConnection Connection { get { return DatabaseContext.Connection as DbConnection; } }
+
+        // all properties below are set public to optionally be injected
+        internal IVendor Vendor { get; set; }
+        internal IQueryBuilder QueryBuilder { get; set; }
+        internal IQueryRunner QueryRunner { get; set; }
+        internal IMemberModificationHandler MemberModificationHandler { get; set; }
+        internal IDatabaseContext DatabaseContext { get; private set; }
+        // /all properties...
+
+        private bool objectTrackingEnabled = true;
+        private bool deferredLoadingEnabled = true;
+
+        private bool queryCacheEnabled = false;
+
+        /// <summary>
+        /// Disable the QueryCache: this is surely good for rarely used Select, since preparing
+        /// the SelectQuery to be cached could require more time than build the sql from scratch.
+        /// </summary>
+        [DBLinqExtended]
+        public bool QueryCacheEnabled 
+        {
+            get { return queryCacheEnabled; }
+            set { queryCacheEnabled = value; }
+        }
+
+        private IEntityTracker currentTransactionEntities;
+        private IEntityTracker CurrentTransactionEntities
+        {
+            get
+            {
+                if (this.currentTransactionEntities == null)
+                {
+                    if (this.ObjectTrackingEnabled)
+                        this.currentTransactionEntities = new EntityTracker();
+                    else
+                        this.currentTransactionEntities = new DisabledEntityTracker();
+                }
+                return this.currentTransactionEntities;
+            }
+        }
+
+        private IEntityTracker allTrackedEntities;
+        private IEntityTracker AllTrackedEntities
+        {
+            get
+            {
+                if (this.allTrackedEntities == null)
+                {
+                    allTrackedEntities = ObjectTrackingEnabled
+                        ? (IEntityTracker) new EntityTracker()
+                        : (IEntityTracker) new DisabledEntityTracker();
+                }
+                return this.allTrackedEntities;
+            }
+        }
+
+        private IIdentityReaderFactory identityReaderFactory;
+        private readonly IDictionary<Type, IIdentityReader> identityReaders = new Dictionary<Type, IIdentityReader>();
+
+        /// <summary>
+        /// The default behavior creates one MappingContext.
+        /// </summary>
+        [DBLinqExtended]
+        internal virtual MappingContext _MappingContext { get; set; }
+
+        [DBLinqExtended]
+        internal IVendorProvider _VendorProvider { get; set; }
+
+        public DataContext(IDbConnection connection, MappingSource mapping)
+        {
+            Profiler.At("START DataContext(IDbConnection, MappingSource)");
+            Init(new DatabaseContext(connection), mapping, null);
+            Profiler.At("END DataContext(IDbConnection, MappingSource)");
+        }
+
+        public DataContext(IDbConnection connection)
+        {
+            Profiler.At("START DataContext(IDbConnection)");
+            if (connection == null)
+                throw new ArgumentNullException("connection");
+
+            Init(new DatabaseContext(connection), null, null);
+            Profiler.At("END DataContext(IDbConnection)");
+        }
+
+        [DbLinqToDo]
+        public DataContext(string fileOrServerOrConnection, MappingSource mapping)
+        {
+            Profiler.At("START DataContext(string, MappingSource)");
+            if (fileOrServerOrConnection == null)
+                throw new ArgumentNullException("fileOrServerOrConnection");
+            if (mapping == null)
+                throw new ArgumentNullException("mapping");
+
+            if (File.Exists(fileOrServerOrConnection))
+                throw new NotImplementedException("File names not supported.");
+
+            // Is this a decent server name check?
+            // It assumes that the connection string will have at least 2
+            // parameters (separated by ';')
+            if (!fileOrServerOrConnection.Contains(";"))
+                throw new NotImplementedException("Server name not supported.");
+
+            // Assume it's a connection string...
+            IVendor ivendor = GetVendor(ref fileOrServerOrConnection);
+
+            IDbConnection dbConnection = ivendor.CreateDbConnection(fileOrServerOrConnection);
+            Init(new DatabaseContext(dbConnection), mapping, ivendor);
+            Profiler.At("END DataContext(string, MappingSource)");
+        }
+
+        /// <summary>
+        /// Construct DataContext, given a connectionString.
+        /// To determine which DB type to go against, we look for 'DbLinqProvider=xxx' substring.
+        /// If not found, we assume that we are dealing with MS Sql Server.
+        /// 
+        /// Valid values are names of provider DLLs (or any other DLL containing an IVendor implementation)
+        /// DbLinqProvider=Mysql
+        /// DbLinqProvider=Oracle etc.
+        /// </summary>
+        /// <param name="connectionString">specifies file or server connection</param>
+        [DbLinqToDo]
+        public DataContext(string connectionString)
+        {
+            Profiler.At("START DataContext(string)");
+            IVendor ivendor = GetVendor(ref connectionString);
+
+            IDbConnection dbConnection = ivendor.CreateDbConnection(connectionString);
+            Init(new DatabaseContext(dbConnection), null, ivendor);
+
+            Profiler.At("END DataContext(string)");
+        }
+
+        private IVendor GetVendor(ref string connectionString)
+        {
+            if (connectionString == null)
+                throw new ArgumentNullException("connectionString");
+
+            Assembly assy;
+            string vendorClassToLoad;
+            GetVendorInfo(ref connectionString, out assy, out vendorClassToLoad);
+
+            var types =
+                from type in assy.GetTypes()
+                where type.Name.ToLowerInvariant() == vendorClassToLoad.ToLowerInvariant() &&
+                    type.GetInterfaces().Contains(typeof(IVendor)) &&
+                    type.GetConstructor(Type.EmptyTypes) != null
+                select type;
+            if (!types.Any())
+            {
+                throw new ArgumentException(string.Format("Found no IVendor class in assembly `{0}' named `{1}' having a default constructor.",
+                    assy.GetName().Name, vendorClassToLoad));
+            }
+            else if (types.Count() > 1)
+            {
+                throw new ArgumentException(string.Format("Found too many IVendor classes in assembly `{0}' named `{1}' having a default constructor.",
+                    assy.GetName().Name, vendorClassToLoad));
+            }
+            return (IVendor) Activator.CreateInstance(types.First());
+        }
+
+        private void GetVendorInfo(ref string connectionString, out Assembly assembly, out string typeName)
+        {
+            System.Text.RegularExpressions.Regex reProvider
+                = new System.Text.RegularExpressions.Regex(@"DbLinqProvider=([\w\.]+);?");
+
+            string assemblyName = null;
+            string vendor;
+            if (!reProvider.IsMatch(connectionString))
+            {
+                vendor       = "SqlServer";
+                assemblyName = "DbLinq.SqlServer";
+            }
+            else
+            {
+                var match    = reProvider.Match(connectionString);
+                vendor       = match.Groups[1].Value;
+                assemblyName = "DbLinq." + vendor;
+
+                //plain DbLinq - non MONO: 
+                //IVendor classes are in DLLs such as "DbLinq.MySql.dll"
+                if (vendor.Contains("."))
+                {
+                    //already fully qualified DLL name?
+                    throw new ArgumentException("Please provide a short name, such as 'MySql', not '" + vendor + "'");
+                }
+
+                //shorten: "DbLinqProvider=X;Server=Y" -> ";Server=Y"
+                connectionString = reProvider.Replace(connectionString, "");
+            }
+
+            typeName = vendor + "Vendor";
+
+            try
+            {
+#if MONO_STRICT
+                assembly = typeof (DataContext).Assembly; // System.Data.Linq.dll
+#else
+                assembly = Assembly.Load(assemblyName);
+#endif
+            }
+            catch (Exception e)
+            {
+                throw new ArgumentException(
+                        string.Format(
+                            "Unable to load the `{0}' DbLinq vendor within assembly '{1}.dll'.",
+                            assemblyName, vendor),
+                        "connectionString", e);
+            }
+        }
+
+        private void Init(IDatabaseContext databaseContext, MappingSource mappingSource, IVendor vendor)
+        {
+            if (databaseContext == null)
+                throw new ArgumentNullException("databaseContext");
+
+            // Yes, .NET throws an NRE for this.  Why it's not ArgumentNullException, I couldn't tell you.
+            if (databaseContext.Connection.ConnectionString == null)
+                throw new NullReferenceException();
+
+            string connectionString = databaseContext.Connection.ConnectionString;
+            _VendorProvider = ObjectFactory.Get<IVendorProvider>();
+            Vendor = vendor ?? 
+                (connectionString != null ? GetVendor(ref connectionString) : null) ??
+#if MOBILE
+                _VendorProvider.FindVendorByProviderType(typeof(DbLinq.Sqlite.SqliteSqlProvider));
+#else
+                _VendorProvider.FindVendorByProviderType(typeof(SqlClient.Sql2005Provider));
+#endif
+            
+            DatabaseContext = databaseContext;
+
+            MemberModificationHandler = ObjectFactory.Create<IMemberModificationHandler>(); // not a singleton: object is stateful
+            QueryBuilder = ObjectFactory.Get<IQueryBuilder>();
+            QueryRunner = ObjectFactory.Get<IQueryRunner>();
+
+            //EntityMap = ObjectFactory.Create<IEntityMap>();
+            identityReaderFactory = ObjectFactory.Get<IIdentityReaderFactory>();
+
+            _MappingContext = new MappingContext();
+
+            // initialize the mapping information
+            if (mappingSource == null)
+                mappingSource = new AttributeMappingSource();
+            Mapping = mappingSource.GetModel(GetType());
+        }
+
+        /// <summary>
+        /// Checks if the table is allready mapped or maps it if not.
+        /// </summary>
+        /// <param name="tableType">Type of the table.</param>
+        /// <exception cref="InvalidOperationException">Thrown if the table is not mappable.</exception>
+        private void CheckTableMapping(Type tableType)
+        {
+            //This will throw an exception if the table is not found
+            if(Mapping.GetTable(tableType) == null)
+            {
+                throw new InvalidOperationException("The type '" + tableType.Name + "' is not mapped as a Table.");
+            }
+        }
+
+        /// <summary>
+        /// Returns a Table for the type TEntity.
+        /// </summary>
+        /// <exception cref="InvalidOperationException">If the type TEntity is not mappable as a Table.</exception>
+        /// <typeparam name="TEntity">The table type.</typeparam>
+        public Table<TEntity> GetTable<TEntity>() where TEntity : class
+        {
+            return (Table<TEntity>)GetTable(typeof(TEntity));
+        }
+
+        /// <summary>
+        /// Returns a Table for the given type.
+        /// </summary>
+        /// <param name="type">The table type.</param>
+        /// <exception cref="InvalidOperationException">If the type is not mappable as a Table.</exception>
+        public ITable GetTable(Type type)
+        {
+            Profiler.At("DataContext.GetTable(typeof({0}))", type != null ? type.Name : null);
+            ITable tableExisting;
+            if (_tableMap.TryGetValue(type, out tableExisting))
+                return tableExisting;
+
+            //Check for table mapping
+            CheckTableMapping(type);
+
+            var tableNew = Activator.CreateInstance(
+                              typeof(Table<>).MakeGenericType(type)
+                              , BindingFlags.NonPublic | BindingFlags.Instance
+                              , null
+                              , new object[] { this }
+                              , System.Globalization.CultureInfo.CurrentCulture) as ITable;
+
+            _tableMap[type] = tableNew;
+            return tableNew;
+        }
+
+        public void SubmitChanges()
+        {
+            SubmitChanges(ConflictMode.FailOnFirstConflict);
+        }
+
+        /// <summary>
+        /// Pings database
+        /// </summary>
+        /// <returns></returns>
+        public bool DatabaseExists()
+        {
+            try
+            {
+                return Vendor.Ping(this);
+            }
+            catch (Exception)
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// Commits all pending changes to database 
+        /// </summary>
+        /// <param name="failureMode"></param>
+        public virtual void SubmitChanges(ConflictMode failureMode)
+        {
+            if (this.objectTrackingEnabled == false)
+                throw new InvalidOperationException("Object tracking is not enabled for the current data context instance.");
+            using (DatabaseContext.OpenConnection()) //ConnMgr will close connection for us
+            {
+                if (Transaction != null)
+                    SubmitChangesImpl(failureMode);
+                else
+                {
+                    using (IDbTransaction transaction = DatabaseContext.CreateTransaction())
+                    {
+                        try
+                        {
+                            Transaction = (DbTransaction) transaction;
+                            SubmitChangesImpl(failureMode);
+                            // TODO: handle conflicts (which can only occur when concurrency mode is implemented)
+                            transaction.Commit();
+                        }
+                        finally
+                        {
+                            Transaction = null;
+                        }
+                    }
+                }
+            }
+        }
+
+        void SubmitChangesImpl(ConflictMode failureMode)
+        {
+            var queryContext = new QueryContext(this);
+
+            // There's no sense in updating an entity when it's going to 
+            // be deleted in the current transaction, so do deletes first.
+            foreach (var entityTrack in CurrentTransactionEntities.EnumerateAll().ToList())
+            {
+                switch (entityTrack.EntityState)
+                {
+                    case EntityState.ToDelete:
+                        var deleteQuery = QueryBuilder.GetDeleteQuery(entityTrack.Entity, queryContext);
+                        QueryRunner.Delete(entityTrack.Entity, deleteQuery);
+
+                        UnregisterDelete(entityTrack.Entity);
+                        AllTrackedEntities.RegisterToDelete(entityTrack.Entity);
+                        AllTrackedEntities.RegisterDeleted(entityTrack.Entity);
+                        break;
+                    default:
+                        // ignore.
+                        break;
+                }
+            }
+            foreach (var entityTrack in CurrentTransactionEntities.EnumerateAll()
+                    .Concat(AllTrackedEntities.EnumerateAll())
+                    .ToList())
+            {
+                switch (entityTrack.EntityState)
+                {
+                    case EntityState.ToInsert:
+                        foreach (var toInsert in GetReferencedObjects(entityTrack.Entity))
+                        {
+                            InsertEntity(toInsert, queryContext);
+                        }
+                        break;
+                    case EntityState.ToWatch:
+                        foreach (var toUpdate in GetReferencedObjects(entityTrack.Entity))
+                        {
+                            UpdateEntity(toUpdate, queryContext);
+                        }
+                        break;
+                    default:
+                        throw new ArgumentOutOfRangeException();
+                }
+            }
+        }
+
+        private IEnumerable<object> GetReferencedObjects(object value)
+        {
+            var values = new EntitySet<object>();
+            FillReferencedObjects(value, values);
+            return values;
+        }
+
+        // Breadth-first traversal of an object graph
+        private void FillReferencedObjects(object parent, EntitySet<object> values)
+        {
+            if (parent == null)
+                return;
+            var children = new Queue<object>();
+			children.Enqueue(parent);
+			while (children.Count > 0)
+			{
+                object value = children.Dequeue();
+                values.Add(value);
+                IEnumerable<MetaAssociation> associationList = Mapping.GetMetaType(value.GetType()).Associations.Where(a => !a.IsForeignKey);
+                if (associationList.Any())
+			    {
+				    foreach (MetaAssociation association in associationList)
+                    {
+                        var memberData = association.ThisMember;
+                        var entitySetValue = memberData.Member.GetMemberValue(value);
+
+                        if (entitySetValue != null)
+                        {
+						    var hasLoadedOrAssignedValues = entitySetValue.GetType().GetProperty("HasLoadedOrAssignedValues");
+						    if (!((bool)hasLoadedOrAssignedValues.GetValue(entitySetValue, null)))
+							    continue;   // execution deferred; ignore.
+						    foreach (var o in ((IEnumerable)entitySetValue))
+							    children.Enqueue(o);
+					    }
+                    }
+                }
+			}
+        }
+
+        private void InsertEntity(object entity, QueryContext queryContext)
+        {
+            var insertQuery = QueryBuilder.GetInsertQuery(entity, queryContext);
+            QueryRunner.Insert(entity, insertQuery);
+            Register(entity);
+            UpdateReferencedObjects(entity);
+            MoveToAllTrackedEntities(entity, true);
+        }
+
+        private void UpdateEntity(object entity, QueryContext queryContext)
+        {
+            if (!AllTrackedEntities.ContainsReference(entity))
+                InsertEntity(entity, queryContext);
+            else if (MemberModificationHandler.IsModified(entity, Mapping))
+            {
+                var modifiedMembers = MemberModificationHandler.GetModifiedProperties(entity, Mapping);
+                var updateQuery = QueryBuilder.GetUpdateQuery(entity, modifiedMembers, queryContext);
+                QueryRunner.Update(entity, updateQuery, modifiedMembers);
+
+                RegisterUpdateAgain(entity);
+                UpdateReferencedObjects(entity);
+                MoveToAllTrackedEntities(entity, false);
+            }
+        }
+
+        private void UpdateReferencedObjects(object root)
+        {
+            var metaType = Mapping.GetMetaType(root.GetType());
+            foreach (var assoc in metaType.Associations)
+            {
+                var memberData = assoc.ThisMember;
+				//This is not correct - AutoSyncing applies to auto-updating columns, such as a TimeStamp, not to foreign key associations, which is always automatically synched
+				//Confirmed against default .NET l2sql - association columns are always set, even if AutoSync==AutoSync.Never
+				//if (memberData.Association.ThisKey.Any(m => (m.AutoSync != AutoSync.Always) && (m.AutoSync != sync)))
+                //    continue;
+                var oks = memberData.Association.OtherKey.Select(m => m.StorageMember).ToList();
+                if (oks.Count == 0)
+                    continue;
+                var pks = memberData.Association.ThisKey
+                    .Select(m => m.StorageMember.GetMemberValue(root))
+                    .ToList();
+                if (pks.Count != oks.Count)
+                    throw new InvalidOperationException(
+                        string.Format("Count of primary keys ({0}) doesn't match count of other keys ({1}).",
+                            pks.Count, oks.Count));
+                var members = memberData.Member.GetMemberValue(root) as IEnumerable;
+                if (members == null)
+                    continue;
+                foreach (var member in members)
+                {
+                    for (int i = 0; i < pks.Count; ++i)
+                    {
+                        oks[i].SetMemberValue(member, pks[i]);
+                    }
+                }
+            }
+        }
+
+        private void MoveToAllTrackedEntities(object entity, bool insert)
+        {
+            if (!ObjectTrackingEnabled)
+                return;
+            if (CurrentTransactionEntities.ContainsReference(entity))
+            {
+                CurrentTransactionEntities.RegisterToDelete(entity);
+                if (!insert)
+                    CurrentTransactionEntities.RegisterDeleted(entity);
+            }
+            if (!AllTrackedEntities.ContainsReference(entity))
+            {
+                var identityReader = _GetIdentityReader(entity.GetType());
+                AllTrackedEntities.RegisterToWatch(entity, identityReader.GetIdentityKey(entity));
+            }
+        }
+
+        /// <summary>
+        /// TODO - allow generated methods to call into stored procedures
+        /// </summary>
+        [DBLinqExtended]
+        internal IExecuteResult _ExecuteMethodCall(DataContext context, System.Reflection.MethodInfo method, params object[] sqlParams)
+        {
+            using (DatabaseContext.OpenConnection())
+            {
+                System.Data.Linq.IExecuteResult result = Vendor.ExecuteMethodCall(context, method, sqlParams);
+                return result;
+            }
+        }
+
+        [DbLinqToDo]
+        protected IExecuteResult ExecuteMethodCall(object instance, System.Reflection.MethodInfo methodInfo, params object[] parameters)
+        {
+            throw new NotImplementedException();
+        }
+
+        #region Identity management
+
+        [DBLinqExtended]
+        internal IIdentityReader _GetIdentityReader(Type t)
+        {
+            IIdentityReader identityReader;
+            if (!identityReaders.TryGetValue(t, out identityReader))
+            {
+                identityReader = identityReaderFactory.GetReader(t, this);
+                identityReaders[t] = identityReader;
+            }
+            return identityReader;
+        }
+
+        [DBLinqExtended]
+        internal object _GetRegisteredEntity(object entity)
+        {
+            // TODO: check what is faster: by identity or by ref
+            var identityReader = _GetIdentityReader(entity.GetType());
+            var identityKey = identityReader.GetIdentityKey(entity);
+            if (identityKey == null) // if we don't have an entitykey here, it means that the entity has no PK
+                return entity;
+            // even 
+            var registeredEntityTrack = 
+                CurrentTransactionEntities.FindByIdentity(identityKey) ??
+                AllTrackedEntities.FindByIdentity(identityKey);
+            if (registeredEntityTrack != null)
+                return registeredEntityTrack.Entity;
+            return null;
+        }
+
+        //internal object GetRegisteredEntityByKey(IdentityKey identityKey)
+        //{
+        //    return EntityMap[identityKey];
+        //}
+
+        /// <summary>
+        /// Registers an entity in a watch state
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        [DBLinqExtended]
+        internal object _GetOrRegisterEntity(object entity)
+        {
+            var identityReader = _GetIdentityReader(entity.GetType());
+            var identityKey = identityReader.GetIdentityKey(entity);
+            SetEntitySetsQueries(entity);
+            SetEntityRefQueries(entity);
+
+            // if we have no identity, we can't track it
+            if (identityKey == null)
+                return entity;
+
+            // try to find an already registered entity and return it
+            var registeredEntityTrack = 
+                CurrentTransactionEntities.FindByIdentity(identityKey) ??
+                AllTrackedEntities.FindByIdentity(identityKey);
+            if (registeredEntityTrack != null)
+                return registeredEntityTrack.Entity;
+
+            // otherwise, register and return
+            AllTrackedEntities.RegisterToWatch(entity, identityKey);
+            return entity;
+        }
+
+        readonly IDataMapper DataMapper = ObjectFactory.Get<IDataMapper>();
+		private void SetEntityRefQueries(object entity)
+		{
+            if (!this.deferredLoadingEnabled)
+                return;
+
+            // BUG: This is ignoring External Mappings from XmlMappingSource.
+
+			Type thisType = entity.GetType();
+			IEnumerable<MetaAssociation> associationList = Mapping.GetMetaType(entity.GetType()).Associations.Where(a => a.IsForeignKey);
+			foreach (MetaAssociation association in associationList)
+			{
+				//example of entityRef:Order.Employee
+				var memberData = association.ThisMember;
+				Type otherTableType = association.OtherType.Type;
+				ParameterExpression p = Expression.Parameter(otherTableType, "other");
+
+				var otherTable = GetTable(otherTableType);
+
+				//ie:EmployeeTerritories.EmployeeID
+				var foreignKeys = memberData.Association.ThisKey;
+				BinaryExpression predicate = null;
+				var otherPKs = memberData.Association.OtherKey;
+				IEnumerator<MetaDataMember> otherPKEnumerator = otherPKs.GetEnumerator();
+
+				if (otherPKs.Count != foreignKeys.Count)
+					throw new InvalidOperationException("Foreign keys don't match ThisKey");
+				foreach (MetaDataMember key in foreignKeys)
+				{
+					otherPKEnumerator.MoveNext();
+
+					var thisForeignKeyProperty = (PropertyInfo)key.Member;
+					object thisForeignKeyValue = thisForeignKeyProperty.GetValue(entity, null);
+
+					if (thisForeignKeyValue != null)
+					{
+						BinaryExpression keyPredicate;
+						if (!(thisForeignKeyProperty.PropertyType.IsNullable()))
+						{
+							keyPredicate = Expression.Equal(Expression.MakeMemberAccess(p, otherPKEnumerator.Current.Member),
+																		Expression.Constant(thisForeignKeyValue));
+						}
+						else
+						{
+							var ValueProperty = thisForeignKeyProperty.PropertyType.GetProperty("Value");
+							keyPredicate = Expression.Equal(Expression.MakeMemberAccess(p, otherPKEnumerator.Current.Member),
+																	 Expression.Constant(ValueProperty.GetValue(thisForeignKeyValue, null)));
+						}
+
+						if (predicate == null)
+							predicate = keyPredicate;
+						else
+							predicate = Expression.And(predicate, keyPredicate);
+					}
+				}
+				IEnumerable query = null;
+				if (predicate != null)
+				{
+					query = GetOtherTableQuery(predicate, p, otherTableType, otherTable) as IEnumerable;
+					//it would be interesting surround the above query with a .Take(1) expression for performance.
+				}
+
+				// If no separate Storage is specified, use the member directly
+				MemberInfo storage = memberData.StorageMember;
+				if (storage == null)
+					storage = memberData.Member;
+
+				 // Check that the storage is a field or a writable property
+				if (!(storage is FieldInfo) && !(storage is PropertyInfo && ((PropertyInfo)storage).CanWrite)) {
+					throw new InvalidOperationException(String.Format(
+						"Member {0}.{1} is not a field nor a writable property",
+						storage.DeclaringType, storage.Name));
+				}
+
+				Type storageType = storage.GetMemberType();
+
+				object entityRefValue = null;
+				if (query != null)
+					entityRefValue = Activator.CreateInstance(storageType, query);
+				else
+					entityRefValue = Activator.CreateInstance(storageType);
+
+				storage.SetMemberValue(entity, entityRefValue);
+			}
+		}
+
+        /// <summary>
+        /// This method is executed when the entity is being registered. Each EntitySet property has a internal query that can be set using the EntitySet.SetSource method.
+        /// Here we set the query source of each EntitySetProperty
+        /// </summary>
+        /// <param name="entity"></param>
+        private void SetEntitySetsQueries(object entity)
+        {
+            if (!this.deferredLoadingEnabled)
+                return;
+
+            // BUG: This is ignoring External Mappings from XmlMappingSource.
+
+			IEnumerable<MetaAssociation> associationList = Mapping.GetMetaType(entity.GetType()).Associations.Where(a => !a.IsForeignKey);
+
+			if (associationList.Any())
+			{
+				foreach (MetaAssociation association in associationList)
+                {
+					//example of entitySet: Employee.EmployeeTerritories
+					var memberData = association.ThisMember;
+					Type otherTableType = association.OtherType.Type;
+                    ParameterExpression p = Expression.Parameter(otherTableType, "other");
+
+                    //other table:EmployeeTerritories
+                    var otherTable = GetTable(otherTableType);
+
+					var otherKeys = memberData.Association.OtherKey;
+					var thisKeys = memberData.Association.ThisKey;
+                    if (otherKeys.Count != thisKeys.Count)
+                        throw new InvalidOperationException("This keys don't match OtherKey");
+                    BinaryExpression predicate = null;
+                    IEnumerator<MetaDataMember> thisKeyEnumerator = thisKeys.GetEnumerator();
+					foreach (MetaDataMember otherKey in otherKeys)
+                    {
+                        thisKeyEnumerator.MoveNext();
+                        //other table member:EmployeeTerritories.EmployeeID
+						var otherTableMember = (PropertyInfo)otherKey.Member;
+
+                        BinaryExpression keyPredicate;
+                        if (!(otherTableMember.PropertyType.IsNullable()))
+                        {
+                            keyPredicate = Expression.Equal(Expression.MakeMemberAccess(p, otherTableMember),
+                                                                        Expression.Constant(thisKeyEnumerator.Current.Member.GetMemberValue(entity)));
+                        }
+                        else
+                        {
+                            var ValueProperty = otherTableMember.PropertyType.GetProperty("Value");
+                            keyPredicate = Expression.Equal(Expression.MakeMemberAccess(
+                                                                        Expression.MakeMemberAccess(p, otherTableMember),
+                                                                        ValueProperty),
+                                                                     Expression.Constant(thisKeyEnumerator.Current.Member.GetMemberValue(entity)));
+                        }
+                        if (predicate == null)
+                            predicate = keyPredicate;
+                        else
+                            predicate = Expression.And(predicate, keyPredicate);
+                    }
+
+                    var query = GetOtherTableQuery(predicate, p, otherTableType, otherTable);
+
+					var entitySetValue = memberData.Member.GetMemberValue(entity);
+
+                    if (entitySetValue == null)
+                    {
+						entitySetValue = Activator.CreateInstance(memberData.Member.GetMemberType());
+						memberData.Member.SetMemberValue(entity, entitySetValue);
+                    }
+
+                    var hasLoadedOrAssignedValues = entitySetValue.GetType().GetProperty("HasLoadedOrAssignedValues");
+                    if ((bool)hasLoadedOrAssignedValues.GetValue(entitySetValue, null))
+                        continue;
+
+                    var setSourceMethod = entitySetValue.GetType().GetMethod("SetSource");
+                    setSourceMethod.Invoke(entitySetValue, new[] { query });
+                    //employee.EmployeeTerritories.SetSource(Table[EmployeesTerritories].Where(other=>other.employeeID="WARTH"))
+                }
+            }
+        }
+
+		private static MethodInfo _WhereMethod;
+        internal object GetOtherTableQuery(Expression predicate, ParameterExpression parameter, Type otherTableType, IQueryable otherTable)
+        {
+            if (_WhereMethod == null)
+                System.Threading.Interlocked.CompareExchange (ref _WhereMethod, typeof(Queryable).GetMethods().First(m => m.Name == "Where"), null);
+
+            //predicate: other.EmployeeID== "WARTH"
+            Expression lambdaPredicate = Expression.Lambda(predicate, parameter);
+            //lambdaPredicate: other=>other.EmployeeID== "WARTH"
+
+			Expression call = Expression.Call(_WhereMethod.MakeGenericMethod(otherTableType), otherTable.Expression, lambdaPredicate);
+            //Table[EmployeesTerritories].Where(other=>other.employeeID="WARTH")
+
+            return otherTable.Provider.CreateQuery(call);
+        }
+
+        #endregion
+
+        #region Insert/Update/Delete management
+
+        /// <summary>
+        /// Registers an entity for insert
+        /// </summary>
+        /// <param name="entity"></param>
+        internal void RegisterInsert(object entity)
+        {
+            CurrentTransactionEntities.RegisterToInsert(entity);
+        }
+
+        private void DoRegisterUpdate(object entity)
+        {
+            if (entity == null)
+                throw new ArgumentNullException("entity");
+
+            if (!this.objectTrackingEnabled)
+                return;
+
+            var identityReader = _GetIdentityReader(entity.GetType());
+            var identityKey = identityReader.GetIdentityKey(entity);
+            // if we have no key, we can not watch
+            if (identityKey == null || identityKey.Keys.Count == 0)
+                return;
+            // register entity
+            AllTrackedEntities.RegisterToWatch(entity, identityKey);
+        }
+
+        /// <summary>
+        /// Registers an entity for update
+        /// The entity will be updated only if some of its members have changed after the registration
+        /// </summary>
+        /// <param name="entity"></param>
+        internal void RegisterUpdate(object entity)
+        {
+            DoRegisterUpdate(entity);
+			MemberModificationHandler.Register(entity, Mapping);
+        }
+
+        /// <summary>
+        /// Registers or re-registers an entity and clears its state
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        internal object Register(object entity)
+        {
+            if (! this.objectTrackingEnabled)
+                return entity;
+            var registeredEntity = _GetOrRegisterEntity(entity);
+            // the fact of registering again clears the modified state, so we're... clear with that
+            MemberModificationHandler.Register(registeredEntity, Mapping);
+            return registeredEntity;
+        }
+
+        /// <summary>
+        /// Registers an entity for update
+        /// The entity will be updated only if some of its members have changed after the registration
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="entityOriginalState"></param>
+        internal void RegisterUpdate(object entity, object entityOriginalState)
+        {
+            if (!this.objectTrackingEnabled)
+                return;
+            DoRegisterUpdate(entity);
+            MemberModificationHandler.Register(entity, entityOriginalState, Mapping);
+        }
+
+        /// <summary>
+        /// Clears the current state, and marks the object as clean
+        /// </summary>
+        /// <param name="entity"></param>
+        internal void RegisterUpdateAgain(object entity)
+        {
+            if (!this.objectTrackingEnabled)
+                return;
+            MemberModificationHandler.ClearModified(entity, Mapping);
+        }
+
+        /// <summary>
+        /// Registers an entity for delete
+        /// </summary>
+        /// <param name="entity"></param>
+        internal void RegisterDelete(object entity)
+        {
+            if (!this.objectTrackingEnabled)
+                return;
+            CurrentTransactionEntities.RegisterToDelete(entity);
+        }
+
+        /// <summary>
+        /// Unregisters entity after deletion
+        /// </summary>
+        /// <param name="entity"></param>
+        internal void UnregisterDelete(object entity)
+        {
+            if (!this.objectTrackingEnabled)
+                return;
+            CurrentTransactionEntities.RegisterDeleted(entity);
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Changed object determine 
+        /// </summary>
+        /// <returns>Lists of inserted, updated, deleted objects</returns>
+        public ChangeSet GetChangeSet()
+        {
+            var inserts = new List<object>();
+            var updates = new List<object>();
+            var deletes = new List<object>();
+            foreach (var entityTrack in CurrentTransactionEntities.EnumerateAll()
+                    .Concat(AllTrackedEntities.EnumerateAll()))
+            {
+                switch (entityTrack.EntityState)
+                {
+                    case EntityState.ToInsert:
+                        inserts.Add(entityTrack.Entity);
+                        break;
+                    case EntityState.ToWatch:
+                        if (MemberModificationHandler.IsModified(entityTrack.Entity, Mapping))
+                            updates.Add(entityTrack.Entity);
+                        break;
+                    case EntityState.ToDelete:
+                        deletes.Add(entityTrack.Entity);
+                        break;
+                    default:
+                        throw new ArgumentOutOfRangeException();
+                }
+            }
+            return new ChangeSet(inserts, updates, deletes);
+        }
+
+        /// <summary>
+        /// use ExecuteCommand to call raw SQL
+        /// </summary>
+        public int ExecuteCommand(string command, params object[] parameters)
+        {
+            var directQuery = QueryBuilder.GetDirectQuery(command, new QueryContext(this));
+            return QueryRunner.Execute(directQuery, parameters);
+        }
+
+        /// <summary>
+        /// Execute raw SQL query and return object
+        /// </summary>
+        public IEnumerable<TResult> ExecuteQuery<TResult>(string query, params object[] parameters) where TResult : new()
+        {
+            if (query == null)
+                throw new ArgumentNullException("query");
+
+            return CreateExecuteQueryEnumerable<TResult>(query, parameters);
+        }
+
+        private IEnumerable<TResult> CreateExecuteQueryEnumerable<TResult>(string query, object[] parameters)
+            where TResult : new()
+        {
+            foreach (TResult result in ExecuteQuery(typeof(TResult), query, parameters))
+                yield return result;
+        }
+
+        public IEnumerable ExecuteQuery(Type elementType, string query, params object[] parameters)
+        {
+            if (elementType == null)
+                throw new ArgumentNullException("elementType");
+            if (query == null)
+                throw new ArgumentNullException("query");
+
+            var queryContext = new QueryContext(this);
+            var directQuery = QueryBuilder.GetDirectQuery(query, queryContext);
+            return QueryRunner.ExecuteSelect(elementType, directQuery, parameters);
+        }
+
+        /// <summary>
+        /// Gets or sets the load options
+        /// </summary>
+        [DbLinqToDo]
+		public DataLoadOptions LoadOptions
+		{
+			get { throw new NotImplementedException(); }
+			set { throw new NotImplementedException(); }
+		}
+
+        public DbTransaction Transaction {
+            get { return (DbTransaction) DatabaseContext.CurrentTransaction; }
+            set { DatabaseContext.CurrentTransaction = value; }
+        }
+
+        /// <summary>
+        /// Runs the given reader and returns columns.
+        /// </summary>
+        /// <typeparam name="TResult">The type of the result.</typeparam>
+        /// <param name="reader">The reader.</param>
+        /// <returns></returns>
+        public IEnumerable<TResult> Translate<TResult>(DbDataReader reader)
+        {
+            if (reader == null)
+                throw new ArgumentNullException("reader");
+            return CreateTranslateIterator<TResult>(reader);
+        }
+
+        IEnumerable<TResult> CreateTranslateIterator<TResult>(DbDataReader reader)
+        {
+            foreach (TResult result in Translate(typeof(TResult), reader))
+                yield return result;
+        }
+
+        public IMultipleResults Translate(DbDataReader reader)
+        {
+            throw new NotImplementedException();
+        }
+
+        public IEnumerable Translate(Type elementType, DbDataReader reader)
+        {
+            if (elementType == null)
+                throw new ArgumentNullException("elementType");
+            if (reader == null)
+                throw new ArgumentNullException("reader");
+
+            return QueryRunner.EnumerateResult(elementType, reader, this);
+        }
+
+        public void Dispose()
+        {
+            //connection closing should not be done here.
+            //read: http://msdn2.microsoft.com/en-us/library/bb292288.aspx
+
+			//We own the instance of MemberModificationHandler - we must unregister listeners of entities we attached to
+			MemberModificationHandler.UnregisterAll();
+        }
+
+        [DbLinqToDo]
+        protected virtual void Dispose(bool disposing)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Creates a IDbDataAdapter. Used internally by Vendors
+        /// </summary>
+        /// <returns></returns>
+        internal IDbDataAdapter CreateDataAdapter()
+        {
+            return DatabaseContext.CreateDataAdapter();
+        }
+
+        /// <summary>
+        /// Sets a TextWriter where generated SQL commands are written
+        /// </summary>
+        public TextWriter Log { get; set; }
+
+        /// <summary>
+        /// Writes text on Log (if not null)
+        /// Internal helper
+        /// </summary>
+        /// <param name="text"></param>
+        internal void WriteLog(string text)
+        {
+            if (Log != null)
+                Log.WriteLine(text);
+        }
+
+        /// <summary>
+        /// Write an IDbCommand to Log (if non null)
+        /// </summary>
+        /// <param name="command"></param>
+        internal void WriteLog(IDbCommand command)
+        {
+            if (Log != null)
+            {
+                Log.WriteLine(command.CommandText);
+                foreach (IDbDataParameter parameter in command.Parameters)
+                    WriteLog(parameter);
+                Log.Write("--");
+                Log.Write(" Context: {0}", Vendor.VendorName);
+                Log.Write(" Model: {0}", Mapping.GetType().Name);
+                Log.Write(" Build: {0}", Assembly.GetExecutingAssembly().GetName().Version);
+                Log.WriteLine();
+            }
+        }
+
+        /// <summary>
+        /// Writes and IDbDataParameter to Log (if non null)
+        /// </summary>
+        /// <param name="parameter"></param>
+        internal void WriteLog(IDbDataParameter parameter)
+        {
+            if (Log != null)
+            {
+                // -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [2]
+                // -- <name>: <direction> <type> (...) [<value>]
+                Log.WriteLine("-- {0}: {1} {2} (Size = {3}; Prec = {4}; Scale = {5}) [{6}]",
+                    parameter.ParameterName, parameter.Direction, parameter.DbType,
+                    parameter.Size, parameter.Precision, parameter.Scale, parameter.Value);
+            }
+        }
+
+        public bool ObjectTrackingEnabled
+        {
+            get { return this.objectTrackingEnabled; }
+            set 
+            {
+                if (this.currentTransactionEntities != null && value != this.objectTrackingEnabled)
+                    throw new InvalidOperationException("Data context options cannot be modified after results have been returned from a query.");
+                this.objectTrackingEnabled = value;
+            }
+        }
+
+        [DbLinqToDo]
+        public int CommandTimeout
+        {
+            get { throw new NotImplementedException(); }
+            set { throw new NotImplementedException(); }
+        }
+
+        public bool DeferredLoadingEnabled
+        {
+            get { return this.deferredLoadingEnabled; }
+            set
+            {
+                if (this.currentTransactionEntities != null && value != this.deferredLoadingEnabled)
+                    throw new InvalidOperationException("Data context options cannot be modified after results have been returned from a query.");
+                this.deferredLoadingEnabled = value;
+            }
+        }
+
+        [DbLinqToDo]
+        public ChangeConflictCollection ChangeConflicts
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        [DbLinqToDo]
+        public DbCommand GetCommand(IQueryable query)
+        {
+            DbCommand dbCommand = GetIDbCommand(query) as DbCommand;
+            if (dbCommand == null)
+                throw new InvalidOperationException();
+
+            return dbCommand;
+        }
+
+        [DBLinqExtended]
+        public IDbCommand GetIDbCommand(IQueryable query)
+        {
+            if (query == null)
+                throw new ArgumentNullException("query");
+
+            var qp = query.Provider as QueryProvider;
+            if (qp == null)
+                throw new InvalidOperationException();
+
+            if (qp.ExpressionChain.Expressions.Count == 0)
+                qp.ExpressionChain.Expressions.Add(CreateDefaultQuery(query));
+
+            return qp.GetQuery(null).GetCommand().Command;
+        }
+
+        private Expression CreateDefaultQuery(IQueryable query)
+        {
+            // Manually create the expression tree for: IQueryable<TableType>.Select(e => e)
+            var identityParameter = Expression.Parameter(query.ElementType, "e");
+            var identityBody = Expression.Lambda(
+                typeof(Func<,>).MakeGenericType(query.ElementType, query.ElementType),
+                identityParameter,
+                new[] { identityParameter }
+            );
+
+            return Expression.Call(
+                typeof(Queryable),
+                "Select",
+                new[] { query.ElementType, query.ElementType },
+                query.Expression,
+                Expression.Quote(identityBody)
+            );
+        }
+
+        [DbLinqToDo]
+        public void Refresh(RefreshMode mode, IEnumerable entities)
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        public void Refresh(RefreshMode mode, params object[] entities)
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        public void Refresh(RefreshMode mode, object entity)
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        public void DeleteDatabase()
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        public void CreateDatabase()
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        protected internal IQueryable<TResult> CreateMethodCallQuery<TResult>(object instance, MethodInfo methodInfo, params object[] parameters)
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        protected internal void ExecuteDynamicDelete(object entity)
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        protected internal void ExecuteDynamicInsert(object entity)
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        protected internal void ExecuteDynamicUpdate(object entity)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DataLoadOptions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/DataLoadOptions.cs
@@ -1,148 +1,148 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using System.Reflection;
-using DbLinq.Util;
-
-#if MONO_STRICT
-    namespace System.Data.Linq
-#else
-    namespace DbLinq.Data.Linq
-#endif
-{
-    /// <summary>
-    /// Allows to specify 
-    /// </summary>
-    public sealed class DataLoadOptions
-    {
-        /// <summary>
-        /// Criteria to restrict associations
-        /// </summary>
-        private readonly Dictionary<MemberInfo, bool> eagerLoading = new Dictionary<MemberInfo, bool>();
-        private readonly Dictionary<MemberInfo, LambdaExpression> criteria = new Dictionary<MemberInfo, LambdaExpression>();
-
-        /// <summary>
-        /// Filters objects retrieved for a particular relationship. 
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="expression"></param>
-        public void AssociateWith<T>(Expression<Func<T, object>> expression)
-        {
-            AssociateWith((LambdaExpression)expression);
-        }
-
-        /// <summary>
-        /// Filters the objects retrieved for a particular relationship.
-        /// </summary>
-        /// <param name="expression"></param>
-        public void AssociateWith(LambdaExpression expression)
-        {
-            // TODO: ensure we have an EntitySet<>
-            var memberInfo = ReflectionUtility.GetMemberCallInfo(expression);
-            if (memberInfo == null)
-                throw new InvalidOperationException("The argument expression must be a property access or a field access where the target object is the parameter");
-            if (!criteria.ContainsKey(memberInfo))
-            {
-                VerifyMemberAccessCycles(memberInfo);
-                criteria.Add(memberInfo, expression);
-            }
-        }
-
-        /// <summary>
-        /// Gets the restrictive criteria related to an association
-        /// </summary>
-        /// <param name="memberInfo"></param>
-        /// <returns></returns>
-        public bool GetAssociationCriteria(MemberInfo memberInfo, out LambdaExpression associationCriteria)
-        {
-            return criteria.TryGetValue(memberInfo, out associationCriteria);
-        }
-
-        /// <summary>
-        /// Specifies which sub-objects to retrieve when a query is submitted for an object of type T.
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="expression"></param>
-        public void LoadWith<T>(Expression<Func<T, Object>> expression)
-        {
-            LoadWith((LambdaExpression)expression);
-        }
-
-        /// <summary>
-        /// Retrieves specified data related to the main target by using a lambda expression.
-        /// </summary>
-        /// <param name="expression"></param>
-        public void LoadWith(LambdaExpression expression)
-        {
-            // TODO: ensure we have an EntitySet<>
-            var memberInfo = ReflectionUtility.GetMemberInfo(expression);
-            if (memberInfo == null)
-                throw new InvalidOperationException("The argument expression must be a property access or a field access where the target object is the parameter");
-            if (!eagerLoading.ContainsKey(memberInfo))
-            {
-                VerifyMemberAccessCycles(memberInfo);
-                eagerLoading.Add(memberInfo, true);
-            }
-        }
-
-        private void VerifyMemberAccessCycles(MemberInfo member)
-        {
-            var mt = GetMemberEntityType (member);
-            var d = member.DeclaringType;
-            foreach (KeyValuePair<MemberInfo, bool> m in eagerLoading)
-            {
-                if (m.Key.DeclaringType == mt && GetMemberEntityType (m.Key) == d)
-                    throw new InvalidOperationException("Illegal cycles are detected in the argument expression among other eager-loading expressions");
-            }
-        }
-
-        private Type GetMemberEntityType(MemberInfo member)
-        {
-            var mt = member.GetMemberType();
-            if (mt.IsGenericType)
-            {
-                if (mt.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntitySet<>))
-                    mt = mt.GetGenericArguments()[0];
-                else if (mt.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntityRef<>))
-                    mt = mt.GetGenericArguments()[0];
-            }
-            return mt;
-        }
-
-        /// <summary>
-        /// Tells if we do eager or lazy loading
-        /// </summary>
-        /// <param name="memberInfo"></param>
-        /// <returns>True on eager (immediate) logging</returns>
-        public bool IsImmediate(MemberInfo memberInfo)
-        {
-            return eagerLoading.ContainsKey(memberInfo);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using System.Reflection;
+using DbLinq.Util;
+
+#if MONO_STRICT
+    namespace System.Data.Linq
+#else
+    namespace DbLinq.Data.Linq
+#endif
+{
+    /// <summary>
+    /// Allows to specify 
+    /// </summary>
+    public sealed class DataLoadOptions
+    {
+        /// <summary>
+        /// Criteria to restrict associations
+        /// </summary>
+        private readonly Dictionary<MemberInfo, bool> eagerLoading = new Dictionary<MemberInfo, bool>();
+        private readonly Dictionary<MemberInfo, LambdaExpression> criteria = new Dictionary<MemberInfo, LambdaExpression>();
+
+        /// <summary>
+        /// Filters objects retrieved for a particular relationship. 
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="expression"></param>
+        public void AssociateWith<T>(Expression<Func<T, object>> expression)
+        {
+            AssociateWith((LambdaExpression)expression);
+        }
+
+        /// <summary>
+        /// Filters the objects retrieved for a particular relationship.
+        /// </summary>
+        /// <param name="expression"></param>
+        public void AssociateWith(LambdaExpression expression)
+        {
+            // TODO: ensure we have an EntitySet<>
+            var memberInfo = ReflectionUtility.GetMemberCallInfo(expression);
+            if (memberInfo == null)
+                throw new InvalidOperationException("The argument expression must be a property access or a field access where the target object is the parameter");
+            if (!criteria.ContainsKey(memberInfo))
+            {
+                VerifyMemberAccessCycles(memberInfo);
+                criteria.Add(memberInfo, expression);
+            }
+        }
+
+        /// <summary>
+        /// Gets the restrictive criteria related to an association
+        /// </summary>
+        /// <param name="memberInfo"></param>
+        /// <returns></returns>
+        public bool GetAssociationCriteria(MemberInfo memberInfo, out LambdaExpression associationCriteria)
+        {
+            return criteria.TryGetValue(memberInfo, out associationCriteria);
+        }
+
+        /// <summary>
+        /// Specifies which sub-objects to retrieve when a query is submitted for an object of type T.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="expression"></param>
+        public void LoadWith<T>(Expression<Func<T, Object>> expression)
+        {
+            LoadWith((LambdaExpression)expression);
+        }
+
+        /// <summary>
+        /// Retrieves specified data related to the main target by using a lambda expression.
+        /// </summary>
+        /// <param name="expression"></param>
+        public void LoadWith(LambdaExpression expression)
+        {
+            // TODO: ensure we have an EntitySet<>
+            var memberInfo = ReflectionUtility.GetMemberInfo(expression);
+            if (memberInfo == null)
+                throw new InvalidOperationException("The argument expression must be a property access or a field access where the target object is the parameter");
+            if (!eagerLoading.ContainsKey(memberInfo))
+            {
+                VerifyMemberAccessCycles(memberInfo);
+                eagerLoading.Add(memberInfo, true);
+            }
+        }
+
+        private void VerifyMemberAccessCycles(MemberInfo member)
+        {
+            var mt = GetMemberEntityType (member);
+            var d = member.DeclaringType;
+            foreach (KeyValuePair<MemberInfo, bool> m in eagerLoading)
+            {
+                if (m.Key.DeclaringType == mt && GetMemberEntityType (m.Key) == d)
+                    throw new InvalidOperationException("Illegal cycles are detected in the argument expression among other eager-loading expressions");
+            }
+        }
+
+        private Type GetMemberEntityType(MemberInfo member)
+        {
+            var mt = member.GetMemberType();
+            if (mt.IsGenericType)
+            {
+                if (mt.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntitySet<>))
+                    mt = mt.GetGenericArguments()[0];
+                else if (mt.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntityRef<>))
+                    mt = mt.GetGenericArguments()[0];
+            }
+            return mt;
+        }
+
+        /// <summary>
+        /// Tells if we do eager or lazy loading
+        /// </summary>
+        /// <param name="memberInfo"></param>
+        /// <returns>True on eager (immediate) logging</returns>
+        public bool IsImmediate(MemberInfo memberInfo)
+        {
+            return eagerLoading.ContainsKey(memberInfo);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/IDatabaseContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/IDatabaseContext.cs
@@ -1,88 +1,88 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace DbLinq.Data.Linq.Database
-{
-    /// <summary>
-    /// IDatabaseContext contains all database related information:
-    /// - connection
-    /// - creates or manage a transaction
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IDatabaseContext : IDisposable
-    {
-        // there are two ways to specify a connection:
-        // 1. use a provided IDbConnection
-        /// <summary>
-        /// Gets or sets the connection.
-        /// </summary>
-        /// <value>The connection.</value>
-        IDbConnection Connection { set; get; }
-        // 2. create our own
-        /// <summary>
-        /// Connects with the specified connection string.
-        /// Alters Connection property
-        /// </summary>
-        /// <param name="connectionString">The connection string.</param>
-        void Connect(string connectionString);
-        /// <summary>
-        /// Disconnects this instance.
-        /// </summary>
-        void Disconnect();
-
-        // connection and transactions
-        /// <summary>
-        /// Creates a transaction.
-        /// </summary>
-        /// <returns></returns>
-        IDbTransaction CreateTransaction();
-
-        IDbTransaction CurrentTransaction { get; set; }
-
-        /// <summary>
-        /// Opens a connection.
-        /// </summary>
-        /// <returns></returns>
-        IDisposable OpenConnection();
-
-        // factory
-        /// <summary>
-        /// Creates a command.
-        /// </summary>
-        /// <returns></returns>
-        IDbCommand CreateCommand();
-        /// <summary>
-        /// Creates a DataAdapter.
-        /// </summary>
-        /// <returns></returns>
-        IDbDataAdapter CreateDataAdapter();
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace DbLinq.Data.Linq.Database
+{
+    /// <summary>
+    /// IDatabaseContext contains all database related information:
+    /// - connection
+    /// - creates or manage a transaction
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IDatabaseContext : IDisposable
+    {
+        // there are two ways to specify a connection:
+        // 1. use a provided IDbConnection
+        /// <summary>
+        /// Gets or sets the connection.
+        /// </summary>
+        /// <value>The connection.</value>
+        IDbConnection Connection { set; get; }
+        // 2. create our own
+        /// <summary>
+        /// Connects with the specified connection string.
+        /// Alters Connection property
+        /// </summary>
+        /// <param name="connectionString">The connection string.</param>
+        void Connect(string connectionString);
+        /// <summary>
+        /// Disconnects this instance.
+        /// </summary>
+        void Disconnect();
+
+        // connection and transactions
+        /// <summary>
+        /// Creates a transaction.
+        /// </summary>
+        /// <returns></returns>
+        IDbTransaction CreateTransaction();
+
+        IDbTransaction CurrentTransaction { get; set; }
+
+        /// <summary>
+        /// Opens a connection.
+        /// </summary>
+        /// <returns></returns>
+        IDisposable OpenConnection();
+
+        // factory
+        /// <summary>
+        /// Creates a command.
+        /// </summary>
+        /// <returns></returns>
+        IDbCommand CreateCommand();
+        /// <summary>
+        /// Creates a DataAdapter.
+        /// </summary>
+        /// <returns></returns>
+        IDbDataAdapter CreateDataAdapter();
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/IDatabaseTransaction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/IDatabaseTransaction.cs
@@ -1,51 +1,51 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace DbLinq.Data.Linq.Database
-{
-    /// <summary>
-    /// Transaction block.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IDatabaseTransaction : IDisposable
-    {
-        /// <summary>
-        /// Call Commit() before Dispose() to save changes.
-        /// All unCommit()ed changes will be rolled back
-        /// </summary>
-        void Commit();
-
-        /// <summary>
-        /// Returns current transaction (if any)
-        /// </summary>
-        IDbTransaction Transaction { get; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace DbLinq.Data.Linq.Database
+{
+    /// <summary>
+    /// Transaction block.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IDatabaseTransaction : IDisposable
+    {
+        /// <summary>
+        /// Call Commit() before Dispose() to save changes.
+        /// All unCommit()ed changes will be rolled back
+        /// </summary>
+        void Commit();
+
+        /// <summary>
+        /// Returns current transaction (if any)
+        /// </summary>
+        IDbTransaction Transaction { get; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/ITransactionalCommand.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/ITransactionalCommand.cs
@@ -1,51 +1,51 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace DbLinq.Data.Linq.Database
-{
-    /// <summary>
-    /// Transaction-aware command
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface ITransactionalCommand : IDisposable
-    {
-        /// <summary>
-        /// Gets the command.
-        /// </summary>
-        /// <value>The command.</value>
-        IDbCommand Command { get; }
-        /// <summary>
-        /// Commits the current transaction.
-        /// throws NRE if _transaction is null. Behavior is intentional.
-        /// </summary>
-        void Commit();
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace DbLinq.Data.Linq.Database
+{
+    /// <summary>
+    /// Transaction-aware command
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface ITransactionalCommand : IDisposable
+    {
+        /// <summary>
+        /// Gets the command.
+        /// </summary>
+        /// <value>The command.</value>
+        IDbCommand Command { get; }
+        /// <summary>
+        /// Commits the current transaction.
+        /// throws NRE if _transaction is null. Behavior is intentional.
+        /// </summary>
+        void Commit();
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/DatabaseConnection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/DatabaseConnection.cs
@@ -1,71 +1,71 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-namespace DbLinq.Data.Linq.Database.Implementation
-{
-    /// <summary>
-    /// Database connection allows to open a connection if none available
-    /// </summary>
-    internal class DatabaseConnection: IDisposable
-    {
-        private readonly IDbConnection _connection;
-        private readonly bool _mustClose;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="DatabaseConnection"/> class.
-        /// </summary>
-        /// <param name="connection">The connection.</param>
-        public DatabaseConnection(IDbConnection connection)
-        {
-            _connection = connection;
-            switch (_connection.State)
-            {
-            case ConnectionState.Open:
-                _mustClose = false;
-                break;
-            case ConnectionState.Closed:
-                _mustClose = true;
-                break;
-            default:
-                throw new ApplicationException("L33: Can only handle Open or Closed connection states, not " + _connection.State);
-            }
-            if (_mustClose)
-                _connection.Open();
-        }
-
-        /// <summary>
-        /// Disposes current connection, if owned.
-        /// </summary>
-        public void Dispose()
-        {
-            if (_mustClose)
-                _connection.Close();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+namespace DbLinq.Data.Linq.Database.Implementation
+{
+    /// <summary>
+    /// Database connection allows to open a connection if none available
+    /// </summary>
+    internal class DatabaseConnection: IDisposable
+    {
+        private readonly IDbConnection _connection;
+        private readonly bool _mustClose;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="DatabaseConnection"/> class.
+        /// </summary>
+        /// <param name="connection">The connection.</param>
+        public DatabaseConnection(IDbConnection connection)
+        {
+            _connection = connection;
+            switch (_connection.State)
+            {
+            case ConnectionState.Open:
+                _mustClose = false;
+                break;
+            case ConnectionState.Closed:
+                _mustClose = true;
+                break;
+            default:
+                throw new ApplicationException("L33: Can only handle Open or Closed connection states, not " + _connection.State);
+            }
+            if (_mustClose)
+                _connection.Open();
+        }
+
+        /// <summary>
+        /// Disposes current connection, if owned.
+        /// </summary>
+        public void Dispose()
+        {
+            if (_mustClose)
+                _connection.Close();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/DatabaseContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/DatabaseContext.cs
@@ -1,225 +1,225 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Reflection;
-
-namespace DbLinq.Data.Linq.Database.Implementation
-{
-    /// <summary>
-    /// Default database context implementation
-    /// </summary>
-    internal class DatabaseContext : IDatabaseContext
-    {
-        private bool _connectionOwner;
-        private IDbConnection _connection;
-        public IDbConnection Connection
-        {
-            get { return _connection; }
-            set { ChangeConnection(value, false); }
-        }
-
-        public IDbTransaction CurrentTransaction { get; set; }
-
-        private readonly DbProviderFactory _providerFactory;
-        /// <summary>
-        /// Gets the provider factory.
-        /// </summary>
-        /// <value>The provider factory.</value>
-        protected DbProviderFactory ProviderFactory
-        {
-            get
-            {
-                if (_providerFactory == null)
-                    throw new Exception("In order to use this method, a DbProviderFactory must be provided");
-                return _providerFactory;
-            }
-        }
-
-        /// <summary>
-        /// Connects with the specified connection string.
-        /// Alters Connection property
-        /// </summary>
-        /// <param name="connectionString">The connection string.</param>
-        public void Connect(string connectionString)
-        {
-            IDbConnection connection = null;
-            if (connectionString != null)
-            {
-                connection = ProviderFactory.CreateConnection();
-                connection.ConnectionString = connectionString;
-            }
-            ChangeConnection(connection, true);
-        }
-
-        /// <summary>
-        /// Disconnects this instance.
-        /// </summary>
-        public void Disconnect()
-        {
-            if (Connection != null && _connectionOwner)
-                Connection.Close();
-        }
-
-        /// <summary>
-        /// Opens a connection.
-        /// </summary>
-        /// <returns></returns>
-        public IDisposable OpenConnection()
-        {
-            // if we don't own the connection, then it is not our business
-            if (_connectionOwner)
-                return null;
-
-            return new DatabaseConnection(_connection);
-        }
-
-        /// <summary>
-        /// Creates a transaction.
-        /// </summary>
-        /// <returns></returns>
-        public IDbTransaction CreateTransaction()
-        {
-            if (CurrentTransaction != null)
-                throw new InvalidOperationException("Attempting to create a transaction while within a transaction.");
-            return CurrentTransaction = Connection.BeginTransaction();
-        }
-
-        /// <summary>
-        /// Creates a command.
-        /// </summary>
-        /// <returns></returns>
-        public IDbCommand CreateCommand()
-        {
-            IDbCommand command = Connection.CreateCommand();
-            if (command.Transaction == null)
-                command.Transaction = CurrentTransaction;
-            return command;
-        }
-
-        /// <summary>
-        /// Creates a DataAdapter.
-        /// </summary>
-        /// <returns></returns>
-        public IDbDataAdapter CreateDataAdapter()
-        {
-            return ProviderFactory.CreateDataAdapter();
-        }
-
-        /// <summary>
-        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
-        /// </summary>
-        public void Dispose()
-        {
-            ClearConnection();
-        }
-
-        /// <summary>
-        /// Sets the connection.
-        /// </summary>
-        /// <param name="connection">The connection.</param>
-        /// <param name="owner">if set to <c>true</c> [owner].</param>
-        protected void SetConnection(IDbConnection connection, bool owner)
-        {
-            if (connection == null)
-                return;
-
-            _connectionOwner = owner;
-            _connection = connection;
-            if (owner)
-                _connection.Open();
-        }
-
-        /// <summary>
-        /// Clears the connection.
-        /// </summary>
-        protected void ClearConnection()
-        {
-            if (_connectionOwner && _connection != null)
-                _connection.Dispose();
-        }
-
-        /// <summary>
-        /// Changes the connection.
-        /// </summary>
-        /// <param name="connection">The connection.</param>
-        /// <param name="owner">if set to <c>true</c> [owner].</param>
-        protected void ChangeConnection(IDbConnection connection, bool owner)
-        {
-            ClearConnection();
-            SetConnection(connection, owner);
-        }
-
-        /// <summary>
-        /// Finds a DbProviderFactory, if possible, by AppDomain scan.
-        /// </summary>
-        /// <param name="connection">The connection.</param>
-        /// <returns></returns>
-        protected static DbProviderFactory FindFactory(IDbConnection connection)
-        {
-            // we start from connection assembly
-            var connectionAssembly = connection.GetType().Assembly;
-            // then look for all types present in assembly
-            foreach (var testType in connectionAssembly.GetExportedTypes())
-            {
-                if (typeof(DbProviderFactory).IsAssignableFrom(testType))
-                {
-                    var bindingFlags = BindingFlags.Static | BindingFlags.Public;
-                    FieldInfo instanceFieldInfo = testType.GetField("Instance", bindingFlags);
-                    if (instanceFieldInfo != null)
-                    {
-                        return (DbProviderFactory)instanceFieldInfo.GetValue(null);
-                    }
-                    PropertyInfo instancePropertyInfo = testType.GetProperty("Instance", bindingFlags);
-                    if (instancePropertyInfo != null)
-                    {
-                        return (DbProviderFactory)instancePropertyInfo.GetGetMethod().Invoke(null, new object[0]);
-                    }
-                }
-            }
-            return null;
-        }
-
-        public DatabaseContext(DbProviderFactory providerFactory)
-            : this(providerFactory, null)
-        {
-        }
-
-        public DatabaseContext(DbProviderFactory providerFactory, string connectionString)
-        {
-            _providerFactory = providerFactory;
-            Connect(connectionString);
-        }
-
-        public DatabaseContext(IDbConnection connection)
-        {
-            _providerFactory = FindFactory(connection);
-            Connection = connection;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Reflection;
+
+namespace DbLinq.Data.Linq.Database.Implementation
+{
+    /// <summary>
+    /// Default database context implementation
+    /// </summary>
+    internal class DatabaseContext : IDatabaseContext
+    {
+        private bool _connectionOwner;
+        private IDbConnection _connection;
+        public IDbConnection Connection
+        {
+            get { return _connection; }
+            set { ChangeConnection(value, false); }
+        }
+
+        public IDbTransaction CurrentTransaction { get; set; }
+
+        private readonly DbProviderFactory _providerFactory;
+        /// <summary>
+        /// Gets the provider factory.
+        /// </summary>
+        /// <value>The provider factory.</value>
+        protected DbProviderFactory ProviderFactory
+        {
+            get
+            {
+                if (_providerFactory == null)
+                    throw new Exception("In order to use this method, a DbProviderFactory must be provided");
+                return _providerFactory;
+            }
+        }
+
+        /// <summary>
+        /// Connects with the specified connection string.
+        /// Alters Connection property
+        /// </summary>
+        /// <param name="connectionString">The connection string.</param>
+        public void Connect(string connectionString)
+        {
+            IDbConnection connection = null;
+            if (connectionString != null)
+            {
+                connection = ProviderFactory.CreateConnection();
+                connection.ConnectionString = connectionString;
+            }
+            ChangeConnection(connection, true);
+        }
+
+        /// <summary>
+        /// Disconnects this instance.
+        /// </summary>
+        public void Disconnect()
+        {
+            if (Connection != null && _connectionOwner)
+                Connection.Close();
+        }
+
+        /// <summary>
+        /// Opens a connection.
+        /// </summary>
+        /// <returns></returns>
+        public IDisposable OpenConnection()
+        {
+            // if we don't own the connection, then it is not our business
+            if (_connectionOwner)
+                return null;
+
+            return new DatabaseConnection(_connection);
+        }
+
+        /// <summary>
+        /// Creates a transaction.
+        /// </summary>
+        /// <returns></returns>
+        public IDbTransaction CreateTransaction()
+        {
+            if (CurrentTransaction != null)
+                throw new InvalidOperationException("Attempting to create a transaction while within a transaction.");
+            return CurrentTransaction = Connection.BeginTransaction();
+        }
+
+        /// <summary>
+        /// Creates a command.
+        /// </summary>
+        /// <returns></returns>
+        public IDbCommand CreateCommand()
+        {
+            IDbCommand command = Connection.CreateCommand();
+            if (command.Transaction == null)
+                command.Transaction = CurrentTransaction;
+            return command;
+        }
+
+        /// <summary>
+        /// Creates a DataAdapter.
+        /// </summary>
+        /// <returns></returns>
+        public IDbDataAdapter CreateDataAdapter()
+        {
+            return ProviderFactory.CreateDataAdapter();
+        }
+
+        /// <summary>
+        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+        /// </summary>
+        public void Dispose()
+        {
+            ClearConnection();
+        }
+
+        /// <summary>
+        /// Sets the connection.
+        /// </summary>
+        /// <param name="connection">The connection.</param>
+        /// <param name="owner">if set to <c>true</c> [owner].</param>
+        protected void SetConnection(IDbConnection connection, bool owner)
+        {
+            if (connection == null)
+                return;
+
+            _connectionOwner = owner;
+            _connection = connection;
+            if (owner)
+                _connection.Open();
+        }
+
+        /// <summary>
+        /// Clears the connection.
+        /// </summary>
+        protected void ClearConnection()
+        {
+            if (_connectionOwner && _connection != null)
+                _connection.Dispose();
+        }
+
+        /// <summary>
+        /// Changes the connection.
+        /// </summary>
+        /// <param name="connection">The connection.</param>
+        /// <param name="owner">if set to <c>true</c> [owner].</param>
+        protected void ChangeConnection(IDbConnection connection, bool owner)
+        {
+            ClearConnection();
+            SetConnection(connection, owner);
+        }
+
+        /// <summary>
+        /// Finds a DbProviderFactory, if possible, by AppDomain scan.
+        /// </summary>
+        /// <param name="connection">The connection.</param>
+        /// <returns></returns>
+        protected static DbProviderFactory FindFactory(IDbConnection connection)
+        {
+            // we start from connection assembly
+            var connectionAssembly = connection.GetType().Assembly;
+            // then look for all types present in assembly
+            foreach (var testType in connectionAssembly.GetExportedTypes())
+            {
+                if (typeof(DbProviderFactory).IsAssignableFrom(testType))
+                {
+                    var bindingFlags = BindingFlags.Static | BindingFlags.Public;
+                    FieldInfo instanceFieldInfo = testType.GetField("Instance", bindingFlags);
+                    if (instanceFieldInfo != null)
+                    {
+                        return (DbProviderFactory)instanceFieldInfo.GetValue(null);
+                    }
+                    PropertyInfo instancePropertyInfo = testType.GetProperty("Instance", bindingFlags);
+                    if (instancePropertyInfo != null)
+                    {
+                        return (DbProviderFactory)instancePropertyInfo.GetGetMethod().Invoke(null, new object[0]);
+                    }
+                }
+            }
+            return null;
+        }
+
+        public DatabaseContext(DbProviderFactory providerFactory)
+            : this(providerFactory, null)
+        {
+        }
+
+        public DatabaseContext(DbProviderFactory providerFactory, string connectionString)
+        {
+            _providerFactory = providerFactory;
+            Connect(connectionString);
+        }
+
+        public DatabaseContext(IDbConnection connection)
+        {
+            _providerFactory = FindFactory(connection);
+            Connection = connection;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/DatabaseTransaction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/DatabaseTransaction.cs
@@ -1,101 +1,101 @@
-﻿
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Data;
-
-namespace DbLinq.Data.Linq.Database.Implementation
-{
-    /// <summary>
-    /// Default database transaction implementation
-    /// </summary>
-    internal class DatabaseTransaction : IDatabaseTransaction
-    {
-        [ThreadStatic]
-        private static DatabaseTransaction _currentTransaction;
-
-        private IDbTransaction _transaction;
-
-        /// <summary>
-        /// Gets the current db transaction.
-        /// </summary>
-        /// <value>The current db transaction.</value>
-        public static IDbTransaction currentTransaction
-        {
-            get
-            {
-                if (_currentTransaction != null)
-                    return _currentTransaction._transaction;
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns current transaction (if any)
-        /// </summary>
-        /// <value></value>
-        public IDbTransaction Transaction { get { return currentTransaction; } }
-
-        public DatabaseTransaction(IDbConnection connection)
-        {
-            if (_currentTransaction != null)
-                return;
-
-            _transaction = connection.BeginTransaction();
-            _currentTransaction = this;
-        }
-
-        /// <summary>
-        /// Call Commit() before Dispose() to save changes.
-        /// All unCommit()ed changes will be rolled back
-        /// </summary>
-        public void Commit()
-        {
-            if (_transaction != null)
-            {
-                _transaction.Commit();
-                // once the transaction committed, dispose it
-                _transaction.Dispose();
-                _transaction = null;
-            }
-        }
-
-        /// <summary>
-        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
-        /// </summary>
-        public void Dispose()
-        {
-            if (_transaction != null)
-            {
-                // if we are here, the Commit() was not called
-                _transaction.Rollback();
-                _transaction.Dispose();
-            }
-            if (_currentTransaction == this)
-                _currentTransaction = null;
-        }
-    }
-}
+﻿
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Data;
+
+namespace DbLinq.Data.Linq.Database.Implementation
+{
+    /// <summary>
+    /// Default database transaction implementation
+    /// </summary>
+    internal class DatabaseTransaction : IDatabaseTransaction
+    {
+        [ThreadStatic]
+        private static DatabaseTransaction _currentTransaction;
+
+        private IDbTransaction _transaction;
+
+        /// <summary>
+        /// Gets the current db transaction.
+        /// </summary>
+        /// <value>The current db transaction.</value>
+        public static IDbTransaction currentTransaction
+        {
+            get
+            {
+                if (_currentTransaction != null)
+                    return _currentTransaction._transaction;
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns current transaction (if any)
+        /// </summary>
+        /// <value></value>
+        public IDbTransaction Transaction { get { return currentTransaction; } }
+
+        public DatabaseTransaction(IDbConnection connection)
+        {
+            if (_currentTransaction != null)
+                return;
+
+            _transaction = connection.BeginTransaction();
+            _currentTransaction = this;
+        }
+
+        /// <summary>
+        /// Call Commit() before Dispose() to save changes.
+        /// All unCommit()ed changes will be rolled back
+        /// </summary>
+        public void Commit()
+        {
+            if (_transaction != null)
+            {
+                _transaction.Commit();
+                // once the transaction committed, dispose it
+                _transaction.Dispose();
+                _transaction = null;
+            }
+        }
+
+        /// <summary>
+        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+        /// </summary>
+        public void Dispose()
+        {
+            if (_transaction != null)
+            {
+                // if we are here, the Commit() was not called
+                _transaction.Rollback();
+                _transaction.Dispose();
+            }
+            if (_currentTransaction == this)
+                _currentTransaction = null;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/TransactionalCommand.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Database/Implementation/TransactionalCommand.cs
@@ -1,112 +1,112 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#endif
-
-using DbLinq.Data.Linq.Sql;
-
-namespace DbLinq.Data.Linq.Database.Implementation
-{
-    /// <summary>
-    /// Transactional command
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class TransactionalCommand : ITransactionalCommand
-    {
-        private readonly IDisposable _connection;
-        /// <summary>
-        /// Ambient transaction
-        /// </summary>
-        private readonly IDbTransaction _transaction;
-
-        private readonly IDbCommand _command;
-
-        private readonly bool haveHigherTransaction;
-
-        /// <summary>
-        /// Gets the command.
-        /// </summary>
-        /// <value>The command.</value>
-        public IDbCommand Command
-        {
-            get
-            {
-                return _command;
-            }
-        }
-
-
-        /// <summary>
-        /// Commits current transaction.
-        /// </summary>
-        public virtual void Dispose()
-        {
-            Command.Dispose();
-            if (_transaction != null)
-                _transaction.Dispose();
-            _connection.Dispose();
-        }
-
-        /// <summary>
-        /// Commits the current transaction.
-        /// throws NRE if _transaction is null. Behavior is intentional.
-        /// </summary>
-        public void Commit()
-        {
-            // TODO: do not commit if participating in a higher transaction
-            if (!haveHigherTransaction)
-                _transaction.Commit();
-        }
-
-        public TransactionalCommand(string commandText, bool createTransaction, DataContext dataContext)
-        {
-            // TODO: check if all this stuff is necessary
-            // the OpenConnection() checks that the connection is already open
-            // TODO: see if we can move this here (in theory the final DataContext shouldn't use)
-            _connection = dataContext.DatabaseContext.OpenConnection();
-                
-            _command = dataContext.DatabaseContext.CreateCommand();
-            haveHigherTransaction = dataContext.Transaction != null;
-            // the transaction is optional
-            if (createTransaction && !haveHigherTransaction)
-            {
-                _transaction = dataContext.DatabaseContext.CreateTransaction();
-                _command.Transaction = _transaction;
-            }
-            else
-                _command.Transaction = dataContext.Transaction;
-            Command.CommandText = commandText;
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#endif
+
+using DbLinq.Data.Linq.Sql;
+
+namespace DbLinq.Data.Linq.Database.Implementation
+{
+    /// <summary>
+    /// Transactional command
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class TransactionalCommand : ITransactionalCommand
+    {
+        private readonly IDisposable _connection;
+        /// <summary>
+        /// Ambient transaction
+        /// </summary>
+        private readonly IDbTransaction _transaction;
+
+        private readonly IDbCommand _command;
+
+        private readonly bool haveHigherTransaction;
+
+        /// <summary>
+        /// Gets the command.
+        /// </summary>
+        /// <value>The command.</value>
+        public IDbCommand Command
+        {
+            get
+            {
+                return _command;
+            }
+        }
+
+
+        /// <summary>
+        /// Commits current transaction.
+        /// </summary>
+        public virtual void Dispose()
+        {
+            Command.Dispose();
+            if (_transaction != null)
+                _transaction.Dispose();
+            _connection.Dispose();
+        }
+
+        /// <summary>
+        /// Commits the current transaction.
+        /// throws NRE if _transaction is null. Behavior is intentional.
+        /// </summary>
+        public void Commit()
+        {
+            // TODO: do not commit if participating in a higher transaction
+            if (!haveHigherTransaction)
+                _transaction.Commit();
+        }
+
+        public TransactionalCommand(string commandText, bool createTransaction, DataContext dataContext)
+        {
+            // TODO: check if all this stuff is necessary
+            // the OpenConnection() checks that the connection is already open
+            // TODO: see if we can move this here (in theory the final DataContext shouldn't use)
+            _connection = dataContext.DatabaseContext.OpenConnection();
+                
+            _command = dataContext.DatabaseContext.CreateCommand();
+            haveHigherTransaction = dataContext.Transaction != null;
+            // the transaction is optional
+            if (createTransaction && !haveHigherTransaction)
+            {
+                _transaction = dataContext.DatabaseContext.CreateTransaction();
+                _command.Transaction = _transaction;
+            }
+            else
+                _command.Transaction = dataContext.Transaction;
+            Command.CommandText = commandText;
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/EntityRef.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/EntityRef.cs
@@ -1,106 +1,106 @@
-#region MIT license
-//
-// EntityRef.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//   Pablo igo Blasco <pibgeus@gmail.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#endregion
-
-using System;
-using System.Collections.Generic;
-using DbLinq;
-
-#if MONO_STRICT
-namespace System.Data.Linq
-#else
-namespace DbLinq.Data.Linq
-#endif
-{
-    public struct EntityRef<TEntity> where TEntity : class
-    {
-        private TEntity entity;
-        private bool hasLoadedOrAssignedValue;
-        private IEnumerable<TEntity> source;
-
-        public EntityRef(TEntity entity)
-        {
-            this.source = null;
-            this.entity = entity;
-            hasLoadedOrAssignedValue = true;
-        }
-
-        public EntityRef(IEnumerable<TEntity> source)
-        {
-            this.source = source;
-            hasLoadedOrAssignedValue = false;
-            entity = null;
-        }
-
-        public EntityRef(EntityRef<TEntity> entityRef)
-        {
-            this.entity = entityRef.entity;
-            if (entityRef.entity == null && entityRef.source is ICloneable)
-            {
-                source = (IEnumerable<TEntity>)((ICloneable)entityRef.source).Clone();
-            }
-            else
-                source = null;
-            hasLoadedOrAssignedValue = entityRef.hasLoadedOrAssignedValue;
-        }
-
-        public TEntity Entity
-        {
-            get 
-            { 
-                if (source != null) {
-                    foreach (var s in source) {
-                        if (entity != null)
-                            throw new InvalidOperationException ("Sequence contains more than one element");
-                        entity = s;
-                        hasLoadedOrAssignedValue = true;
-                    }
-                    source = null;
-                }
-                return entity; 
-            }
-            set
-            {
-                entity = value;
-                hasLoadedOrAssignedValue = true;
-            }
-        }
-
-        public bool HasLoadedOrAssignedValue
-        {
-            get
-            {
-                return hasLoadedOrAssignedValue;
-            }
-        }
-    }
-}
+#region MIT license
+//
+// EntityRef.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//   Pablo igo Blasco <pibgeus@gmail.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#endregion
+
+using System;
+using System.Collections.Generic;
+using DbLinq;
+
+#if MONO_STRICT
+namespace System.Data.Linq
+#else
+namespace DbLinq.Data.Linq
+#endif
+{
+    public struct EntityRef<TEntity> where TEntity : class
+    {
+        private TEntity entity;
+        private bool hasLoadedOrAssignedValue;
+        private IEnumerable<TEntity> source;
+
+        public EntityRef(TEntity entity)
+        {
+            this.source = null;
+            this.entity = entity;
+            hasLoadedOrAssignedValue = true;
+        }
+
+        public EntityRef(IEnumerable<TEntity> source)
+        {
+            this.source = source;
+            hasLoadedOrAssignedValue = false;
+            entity = null;
+        }
+
+        public EntityRef(EntityRef<TEntity> entityRef)
+        {
+            this.entity = entityRef.entity;
+            if (entityRef.entity == null && entityRef.source is ICloneable)
+            {
+                source = (IEnumerable<TEntity>)((ICloneable)entityRef.source).Clone();
+            }
+            else
+                source = null;
+            hasLoadedOrAssignedValue = entityRef.hasLoadedOrAssignedValue;
+        }
+
+        public TEntity Entity
+        {
+            get 
+            { 
+                if (source != null) {
+                    foreach (var s in source) {
+                        if (entity != null)
+                            throw new InvalidOperationException ("Sequence contains more than one element");
+                        entity = s;
+                        hasLoadedOrAssignedValue = true;
+                    }
+                    source = null;
+                }
+                return entity; 
+            }
+            set
+            {
+                entity = value;
+                hasLoadedOrAssignedValue = true;
+            }
+        }
+
+        public bool HasLoadedOrAssignedValue
+        {
+            get
+            {
+                return hasLoadedOrAssignedValue;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/EntitySet.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/EntitySet.cs
@@ -1,576 +1,576 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using System.ComponentModel;
-using System.Reflection;
-using DbLinq;
-using DbLinq.Util;
-
-#if MONO_STRICT
-namespace System.Data.Linq
-#else
-namespace DbLinq.Data.Linq
-#endif
-{
-    public sealed class EntitySet<TEntity> : ICollection, ICollection<TEntity>, IEnumerable, IEnumerable<TEntity>, IList, IList<TEntity>, IListSource
-        where TEntity : class
-    {
-        private readonly Action<TEntity> onAdd;
-        private readonly Action<TEntity> onRemove;
-
-        private IEnumerable<TEntity> deferredSource;
-        private bool deferred;
-		private bool assignedValues;
-        private List<TEntity> source;
-        private List<TEntity> Source
-        {
-            get
-            {
-                if (source != null)
-                    return source;
-                if (deferredSource != null)
-                    return source = deferredSource.ToList();
-                if (nestedQueryPredicate != null && context != null)
-                {
-                    var otherTable = context.GetTable(typeof(TEntity));
-                    var query = (IQueryable<TEntity>) context.GetOtherTableQuery(nestedQueryPredicate, nestedQueryParam, typeof(TEntity), otherTable);
-                    return source = query.ToList();
-                }
-                return source = new List<TEntity>();
-            }
-        }
-
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance has loaded or assigned values.
-        /// </summary>
-        /// <value>
-        ///     <c>true</c> if this instance has loaded or assigned values; otherwise, <c>false</c>.
-        /// </value>
-        public bool HasAssignedValues
-        {
-			get { return assignedValues; }
-        }
-
-        public bool HasLoadedValues
-        {
-            get { return source != null; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether this instance has loaded or assigned values.
-        /// </summary>
-        /// <value>
-        ///     <c>true</c> if this instance has loaded or assigned values; otherwise, <c>false</c>.
-        /// </value>
-        public bool HasLoadedOrAssignedValues
-        {
-            get { return HasLoadedValues || HasAssignedValues; }
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="EntitySet&lt;TEntity&gt;"/> class.
-        /// </summary>
-        /// <param name="onAdd">The on add.</param>
-        /// <param name="onRemove">The on remove.</param>
-        [DbLinqToDo]
-        public EntitySet(Action<TEntity> onAdd, Action<TEntity> onRemove)
-            : this()
-        {
-            this.onAdd = onAdd;
-            this.onRemove = onRemove;
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="EntitySet&lt;TEntity&gt;"/> class.
-        /// </summary>
-        public EntitySet()
-        {
-        }
-
-        DataContext context;
-        internal EntitySet(DataContext context)
-            : this()
-        {
-            this.context = context;
-        }
-
-        /// <summary>
-        /// entry point for 'foreach' statement.
-        /// </summary>
-        public IEnumerator<TEntity> GetEnumerator()
-        {
-            deferred = false;
-            return Source.GetEnumerator();
-        }
-
-        /// <summary>
-        /// Enumerates all entities
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return GetEnumerator();
-        }
-
-        /// <summary>
-        /// Gets the source expression (used to nest queries)
-        /// </summary>
-        /// <value>The expression.</value>
-        internal Expression Expression
-        {
-            get
-            {
-                if (deferred && this.deferredSource is IQueryable<TEntity>)
-                    return (deferredSource as IQueryable<TEntity>).Expression;
-                else
-                    return Expression.Constant(this);
-            }
-        }
-
-        /// <summary>
-        /// Adds a row
-        /// </summary>
-        public void Add(TEntity entity)
-        {
-            if (entity == null)
-                throw new ArgumentNullException("entity");
-
-            if (Source.Contains (entity))
-                return;
-            Source.Add(entity);
-            OnAdd(entity);
-            ListChangedEventHandler handler = ListChanged;
-            if (!deferred && deferredSource != null && handler != null)
-                handler(this, new ListChangedEventArgs(ListChangedType.ItemAdded, Source.Count - 1));
-        }
-
-        ParameterExpression nestedQueryParam;
-        BinaryExpression nestedQueryPredicate;
-        internal void Add(KeyValuePair<object, MemberInfo> info)
-        {
-            var value = info.Key;
-            var member = info.Value;
-            if (nestedQueryParam == null)
-                nestedQueryParam = Expression.Parameter(typeof(TEntity), "other");
-            var propType = member.GetMemberType();
-            BinaryExpression comp;
-            if (!propType.IsNullable())
-            {
-                comp = Expression.Equal(Expression.Constant(value),
-                        Expression.MakeMemberAccess(nestedQueryParam, member));
-            }
-            else
-            {
-                var valueProp = propType.GetProperty("Value");
-                comp = Expression.Equal(Expression.Constant(value),
-                        Expression.MakeMemberAccess(
-                            Expression.MakeMemberAccess(nestedQueryParam, member),
-                            valueProp));
-            }
-            nestedQueryPredicate = nestedQueryPredicate == null
-                ? comp
-                : Expression.And(nestedQueryPredicate, comp);
-        }
-
-        [DbLinqToDo]
-        bool IListSource.ContainsListCollection
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        IList IListSource.GetList()
-        {
-			//It seems that Microsoft is doing a similar thing in L2SQL, matter of fact, after doing a GetList().Add(new TEntity()), HasAssignedValues continues to be false
-			//This seems like a bug on their end, but we'll do the same for consistency
-            return this;
-        }
-
-        #region IList<TEntity> Members
-
-        /// <summary>
-        /// Returns entity's index
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <returns></returns>
-        public int IndexOf(TEntity entity)
-        {
-            deferred = false;
-            return Source.IndexOf(entity);
-        }
-
-        /// <summary>
-        /// Inserts entity at specified index.
-        /// </summary>
-        /// <param name="index">The index.</param>
-        /// <param name="entity">The entity.</param>
-        public void Insert(int index, TEntity entity)
-        {
-            if (Source.Contains(entity))
-                throw new ArgumentOutOfRangeException();
-            OnAdd(entity);
-            deferred = false;
-            Source.Insert(index, entity);
-            ListChangedEventHandler handler = ListChanged;
-            if (handler != null)
-                handler(this, new ListChangedEventArgs(ListChangedType.ItemAdded, index));
-        }
-
-        /// <summary>
-        /// Removes entity at specified index
-        /// </summary>
-        /// <param name="index"></param>
-        public void RemoveAt(int index)
-        {
-            deferred = false;
-            var item = Source[index];
-            Source.RemoveAt(index);
-            OnRemove(item);
-            ListChangedEventHandler handler = ListChanged;
-            if (handler != null)
-                handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
-        }
-
-        /// <summary>
-        /// Gets or sets the <see cref="TEntity"/> at the specified index.
-        /// </summary>
-        /// <value></value>
-        public TEntity this[int index]
-        {
-            get
-            {
-                deferred = false;
-                return Source[index];
-            }
-            set
-            {
-                OnRemove(Source[index]);
-                OnAdd(value);
-                deferred = false;
-                var handler = ListChanged;
-                if (handler != null)
-                {
-                    handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
-                    handler(this, new ListChangedEventArgs(ListChangedType.ItemAdded, index));
-                }
-                Source[index] = value;
-            }
-        }
-
-        #endregion
-
-        #region ICollection<TEntity> Members
-
-        /// <summary>
-        /// Removes all items in collection
-        /// </summary>
-        public void Clear()
-        {
-            ListChangedEventHandler handler = ListChanged;
-            deferred = false;
-			assignedValues = true;
-            if (deferredSource != null && handler != null)
-            {
-                foreach (var item in Source)
-                    handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, 0));
-            }
-            if (handler != null)
-                handler(this, new ListChangedEventArgs(ListChangedType.Reset, 0));
-            Source.Clear();
-        }
-
-        /// <summary>
-        /// Determines whether [contains] [the specified entity].
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <returns>
-        ///     <c>true</c> if [contains] [the specified entity]; otherwise, <c>false</c>.
-        /// </returns>
-        [DbLinqToDo]
-        public bool Contains(TEntity entity)
-        {
-            deferred = false;
-            return Source.Contains(entity);
-        }
-
-        /// <summary>
-        /// Copies items to target array
-        /// </summary>
-        /// <param name="array"></param>
-        /// <param name="arrayIndex"></param>
-        public void CopyTo(TEntity[] array, int arrayIndex)
-        {
-            deferred = false;
-            Source.CopyTo(array, arrayIndex);
-        }
-
-        /// <summary>
-        /// Returns entities count
-        /// </summary>
-        public int Count
-        {
-            get
-            {
-                deferred = false;
-                return Source.Count;
-            }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether the <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.
-        /// </summary>
-        /// <value></value>
-        /// <returns>true if the <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only; otherwise, false.
-        /// </returns>
-        bool ICollection<TEntity>.IsReadOnly
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        /// <summary>
-        /// Removes the specified entity.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <returns></returns>
-        public bool Remove(TEntity entity)
-        {
-            int i = Source.IndexOf(entity);
-            if(i < 0)
-                return false;
-            deferred = false;
-            Source.Remove(entity);
-            OnRemove(entity);
-            ListChangedEventHandler handler = ListChanged;
-            if (deferredSource != null && handler != null)
-                handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, i));
-            return true;
-        }
-
-        #endregion
-
-        #region IList Members
-
-        int IList.Add(object value)
-        {
-            var v = value as TEntity;
-            if (v != null && !Contains(v))
-            {
-                Add(v);
-                return Count - 1;
-            }
-            throw new ArgumentOutOfRangeException("value");
-        }
-
-        void IList.Clear()
-        {
-            this.Clear();
-        }
-
-        bool IList.Contains(object value)
-        {
-            var v = value as TEntity;
-            if (v != null)
-                return Contains(v);
-            return false;
-        }
-
-        int IList.IndexOf(object value)
-        {
-            return this.IndexOf(value as TEntity);
-        }
-
-        void IList.Insert(int index, object value)
-        {
-            this.Insert(index, value as TEntity);
-        }
-
-        bool IList.IsFixedSize
-        {
-            get { return false; }
-        }
-
-        bool IList.IsReadOnly
-        {
-            get { return false; }
-        }
-
-        void IList.Remove(object value)
-        {
-            this.Remove(value as TEntity);
-        }
-
-        void IList.RemoveAt(int index)
-        {
-            this.RemoveAt(index);
-        }
-
-        object IList.this[int index]
-        {
-            get
-            {
-                return this[index];
-            }
-            set
-            {
-                this[index] = value as TEntity;
-            }
-        }
-
-        #endregion
-
-        #region ICollection Members
-
-        void ICollection.CopyTo(Array array, int index)
-        {
-            for (int i = 0; i < Source.Count; ++i)
-            {
-                array.SetValue(this[i], index + i);
-            }
-        }
-
-        int ICollection.Count
-        {
-            get { return this.Count; }
-        }
-
-        [DbLinqToDo]
-        bool ICollection.IsSynchronized
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        [DbLinqToDo]
-        object ICollection.SyncRoot
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        #endregion
-
-        /// <summary>
-        /// Gets a value indicating whether this instance is deferred.
-        /// </summary>
-        /// <value>
-        ///     <c>true</c> if this instance is deferred; otherwise, <c>false</c>.
-        /// </value>
-        public bool IsDeferred
-        {
-            get { return deferred; }
-        }
-
-        /// <summary>
-        /// Adds the range.
-        /// </summary>
-        /// <param name="collection">The collection.</param>
-        public void AddRange(IEnumerable<TEntity> collection)
-        {
-            foreach (var entity in collection)
-            {
-                Add(entity);
-            }
-        }
-
-        /// <summary>
-        /// Assigns the specified entity source.
-        /// </summary>
-        /// <param name="entitySource">The entity source.</param>
-        public void Assign(IEnumerable<TEntity> entitySource)
-        {
-            // notifies removals and adds
-            Clear();
-            foreach (var entity in entitySource)
-            {
-                OnAdd(entity);
-            }
-            this.source = entitySource.ToList();
-            // this.SourceInUse = sourceAsList;
-        }
-
-        /// <summary>
-        /// Sets the entity source.
-        /// </summary>
-        /// <param name="entitySource">The entity source.</param>
-        public void SetSource(IEnumerable<TEntity> entitySource)
-        {
-#if false
-            Console.WriteLine("# EntitySet<{0}>.SetSource: HashCode={1}; Stack={2}", typeof(TEntity).Name,
-                GetHashCode(), new System.Diagnostics.StackTrace());
-#endif
-            if(HasLoadedOrAssignedValues)
-                throw new InvalidOperationException("The EntitySet is already loaded and the source cannot be changed.");
-            deferred = true;
-            deferredSource = entitySource;
-        }
-
-        /// <summary>
-        /// Loads all entities.
-        /// </summary>
-        public void Load()
-        {
-            deferred = false;
-            var _ = Source;
-        }
-
-        /// <summary>
-        /// Gets a new binding list.
-        /// </summary>
-        /// <returns></returns>
-        public IBindingList GetNewBindingList()
-        {
-            return new BindingList<TEntity>(Source.ToList());
-        }
-
-        // TODO: implement handler call
-        public event ListChangedEventHandler ListChanged;
-
-        /// <summary>
-        /// Called when entity is added.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        private void OnAdd(TEntity entity)
-        {
-			assignedValues = true;
-            if (onAdd != null)
-                onAdd(entity);
-        }
-        /// <summary>
-        /// Called when entity is removed
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        private void OnRemove(TEntity entity)
-        {
-			assignedValues = true;
-            if (onRemove != null)
-                onRemove(entity);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using System.ComponentModel;
+using System.Reflection;
+using DbLinq;
+using DbLinq.Util;
+
+#if MONO_STRICT
+namespace System.Data.Linq
+#else
+namespace DbLinq.Data.Linq
+#endif
+{
+    public sealed class EntitySet<TEntity> : ICollection, ICollection<TEntity>, IEnumerable, IEnumerable<TEntity>, IList, IList<TEntity>, IListSource
+        where TEntity : class
+    {
+        private readonly Action<TEntity> onAdd;
+        private readonly Action<TEntity> onRemove;
+
+        private IEnumerable<TEntity> deferredSource;
+        private bool deferred;
+		private bool assignedValues;
+        private List<TEntity> source;
+        private List<TEntity> Source
+        {
+            get
+            {
+                if (source != null)
+                    return source;
+                if (deferredSource != null)
+                    return source = deferredSource.ToList();
+                if (nestedQueryPredicate != null && context != null)
+                {
+                    var otherTable = context.GetTable(typeof(TEntity));
+                    var query = (IQueryable<TEntity>) context.GetOtherTableQuery(nestedQueryPredicate, nestedQueryParam, typeof(TEntity), otherTable);
+                    return source = query.ToList();
+                }
+                return source = new List<TEntity>();
+            }
+        }
+
+
+        /// <summary>
+        /// Gets or sets a value indicating whether this instance has loaded or assigned values.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance has loaded or assigned values; otherwise, <c>false</c>.
+        /// </value>
+        public bool HasAssignedValues
+        {
+			get { return assignedValues; }
+        }
+
+        public bool HasLoadedValues
+        {
+            get { return source != null; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this instance has loaded or assigned values.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance has loaded or assigned values; otherwise, <c>false</c>.
+        /// </value>
+        public bool HasLoadedOrAssignedValues
+        {
+            get { return HasLoadedValues || HasAssignedValues; }
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="EntitySet&lt;TEntity&gt;"/> class.
+        /// </summary>
+        /// <param name="onAdd">The on add.</param>
+        /// <param name="onRemove">The on remove.</param>
+        [DbLinqToDo]
+        public EntitySet(Action<TEntity> onAdd, Action<TEntity> onRemove)
+            : this()
+        {
+            this.onAdd = onAdd;
+            this.onRemove = onRemove;
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="EntitySet&lt;TEntity&gt;"/> class.
+        /// </summary>
+        public EntitySet()
+        {
+        }
+
+        DataContext context;
+        internal EntitySet(DataContext context)
+            : this()
+        {
+            this.context = context;
+        }
+
+        /// <summary>
+        /// entry point for 'foreach' statement.
+        /// </summary>
+        public IEnumerator<TEntity> GetEnumerator()
+        {
+            deferred = false;
+            return Source.GetEnumerator();
+        }
+
+        /// <summary>
+        /// Enumerates all entities
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+
+        /// <summary>
+        /// Gets the source expression (used to nest queries)
+        /// </summary>
+        /// <value>The expression.</value>
+        internal Expression Expression
+        {
+            get
+            {
+                if (deferred && this.deferredSource is IQueryable<TEntity>)
+                    return (deferredSource as IQueryable<TEntity>).Expression;
+                else
+                    return Expression.Constant(this);
+            }
+        }
+
+        /// <summary>
+        /// Adds a row
+        /// </summary>
+        public void Add(TEntity entity)
+        {
+            if (entity == null)
+                throw new ArgumentNullException("entity");
+
+            if (Source.Contains (entity))
+                return;
+            Source.Add(entity);
+            OnAdd(entity);
+            ListChangedEventHandler handler = ListChanged;
+            if (!deferred && deferredSource != null && handler != null)
+                handler(this, new ListChangedEventArgs(ListChangedType.ItemAdded, Source.Count - 1));
+        }
+
+        ParameterExpression nestedQueryParam;
+        BinaryExpression nestedQueryPredicate;
+        internal void Add(KeyValuePair<object, MemberInfo> info)
+        {
+            var value = info.Key;
+            var member = info.Value;
+            if (nestedQueryParam == null)
+                nestedQueryParam = Expression.Parameter(typeof(TEntity), "other");
+            var propType = member.GetMemberType();
+            BinaryExpression comp;
+            if (!propType.IsNullable())
+            {
+                comp = Expression.Equal(Expression.Constant(value),
+                        Expression.MakeMemberAccess(nestedQueryParam, member));
+            }
+            else
+            {
+                var valueProp = propType.GetProperty("Value");
+                comp = Expression.Equal(Expression.Constant(value),
+                        Expression.MakeMemberAccess(
+                            Expression.MakeMemberAccess(nestedQueryParam, member),
+                            valueProp));
+            }
+            nestedQueryPredicate = nestedQueryPredicate == null
+                ? comp
+                : Expression.And(nestedQueryPredicate, comp);
+        }
+
+        [DbLinqToDo]
+        bool IListSource.ContainsListCollection
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        IList IListSource.GetList()
+        {
+			//It seems that Microsoft is doing a similar thing in L2SQL, matter of fact, after doing a GetList().Add(new TEntity()), HasAssignedValues continues to be false
+			//This seems like a bug on their end, but we'll do the same for consistency
+            return this;
+        }
+
+        #region IList<TEntity> Members
+
+        /// <summary>
+        /// Returns entity's index
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <returns></returns>
+        public int IndexOf(TEntity entity)
+        {
+            deferred = false;
+            return Source.IndexOf(entity);
+        }
+
+        /// <summary>
+        /// Inserts entity at specified index.
+        /// </summary>
+        /// <param name="index">The index.</param>
+        /// <param name="entity">The entity.</param>
+        public void Insert(int index, TEntity entity)
+        {
+            if (Source.Contains(entity))
+                throw new ArgumentOutOfRangeException();
+            OnAdd(entity);
+            deferred = false;
+            Source.Insert(index, entity);
+            ListChangedEventHandler handler = ListChanged;
+            if (handler != null)
+                handler(this, new ListChangedEventArgs(ListChangedType.ItemAdded, index));
+        }
+
+        /// <summary>
+        /// Removes entity at specified index
+        /// </summary>
+        /// <param name="index"></param>
+        public void RemoveAt(int index)
+        {
+            deferred = false;
+            var item = Source[index];
+            Source.RemoveAt(index);
+            OnRemove(item);
+            ListChangedEventHandler handler = ListChanged;
+            if (handler != null)
+                handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
+        }
+
+        /// <summary>
+        /// Gets or sets the <see cref="TEntity"/> at the specified index.
+        /// </summary>
+        /// <value></value>
+        public TEntity this[int index]
+        {
+            get
+            {
+                deferred = false;
+                return Source[index];
+            }
+            set
+            {
+                OnRemove(Source[index]);
+                OnAdd(value);
+                deferred = false;
+                var handler = ListChanged;
+                if (handler != null)
+                {
+                    handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
+                    handler(this, new ListChangedEventArgs(ListChangedType.ItemAdded, index));
+                }
+                Source[index] = value;
+            }
+        }
+
+        #endregion
+
+        #region ICollection<TEntity> Members
+
+        /// <summary>
+        /// Removes all items in collection
+        /// </summary>
+        public void Clear()
+        {
+            ListChangedEventHandler handler = ListChanged;
+            deferred = false;
+			assignedValues = true;
+            if (deferredSource != null && handler != null)
+            {
+                foreach (var item in Source)
+                    handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, 0));
+            }
+            if (handler != null)
+                handler(this, new ListChangedEventArgs(ListChangedType.Reset, 0));
+            Source.Clear();
+        }
+
+        /// <summary>
+        /// Determines whether [contains] [the specified entity].
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <returns>
+        ///     <c>true</c> if [contains] [the specified entity]; otherwise, <c>false</c>.
+        /// </returns>
+        [DbLinqToDo]
+        public bool Contains(TEntity entity)
+        {
+            deferred = false;
+            return Source.Contains(entity);
+        }
+
+        /// <summary>
+        /// Copies items to target array
+        /// </summary>
+        /// <param name="array"></param>
+        /// <param name="arrayIndex"></param>
+        public void CopyTo(TEntity[] array, int arrayIndex)
+        {
+            deferred = false;
+            Source.CopyTo(array, arrayIndex);
+        }
+
+        /// <summary>
+        /// Returns entities count
+        /// </summary>
+        public int Count
+        {
+            get
+            {
+                deferred = false;
+                return Source.Count;
+            }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether the <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.
+        /// </summary>
+        /// <value></value>
+        /// <returns>true if the <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only; otherwise, false.
+        /// </returns>
+        bool ICollection<TEntity>.IsReadOnly
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        /// <summary>
+        /// Removes the specified entity.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <returns></returns>
+        public bool Remove(TEntity entity)
+        {
+            int i = Source.IndexOf(entity);
+            if(i < 0)
+                return false;
+            deferred = false;
+            Source.Remove(entity);
+            OnRemove(entity);
+            ListChangedEventHandler handler = ListChanged;
+            if (deferredSource != null && handler != null)
+                handler(this, new ListChangedEventArgs(ListChangedType.ItemDeleted, i));
+            return true;
+        }
+
+        #endregion
+
+        #region IList Members
+
+        int IList.Add(object value)
+        {
+            var v = value as TEntity;
+            if (v != null && !Contains(v))
+            {
+                Add(v);
+                return Count - 1;
+            }
+            throw new ArgumentOutOfRangeException("value");
+        }
+
+        void IList.Clear()
+        {
+            this.Clear();
+        }
+
+        bool IList.Contains(object value)
+        {
+            var v = value as TEntity;
+            if (v != null)
+                return Contains(v);
+            return false;
+        }
+
+        int IList.IndexOf(object value)
+        {
+            return this.IndexOf(value as TEntity);
+        }
+
+        void IList.Insert(int index, object value)
+        {
+            this.Insert(index, value as TEntity);
+        }
+
+        bool IList.IsFixedSize
+        {
+            get { return false; }
+        }
+
+        bool IList.IsReadOnly
+        {
+            get { return false; }
+        }
+
+        void IList.Remove(object value)
+        {
+            this.Remove(value as TEntity);
+        }
+
+        void IList.RemoveAt(int index)
+        {
+            this.RemoveAt(index);
+        }
+
+        object IList.this[int index]
+        {
+            get
+            {
+                return this[index];
+            }
+            set
+            {
+                this[index] = value as TEntity;
+            }
+        }
+
+        #endregion
+
+        #region ICollection Members
+
+        void ICollection.CopyTo(Array array, int index)
+        {
+            for (int i = 0; i < Source.Count; ++i)
+            {
+                array.SetValue(this[i], index + i);
+            }
+        }
+
+        int ICollection.Count
+        {
+            get { return this.Count; }
+        }
+
+        [DbLinqToDo]
+        bool ICollection.IsSynchronized
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        [DbLinqToDo]
+        object ICollection.SyncRoot
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is deferred.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance is deferred; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsDeferred
+        {
+            get { return deferred; }
+        }
+
+        /// <summary>
+        /// Adds the range.
+        /// </summary>
+        /// <param name="collection">The collection.</param>
+        public void AddRange(IEnumerable<TEntity> collection)
+        {
+            foreach (var entity in collection)
+            {
+                Add(entity);
+            }
+        }
+
+        /// <summary>
+        /// Assigns the specified entity source.
+        /// </summary>
+        /// <param name="entitySource">The entity source.</param>
+        public void Assign(IEnumerable<TEntity> entitySource)
+        {
+            // notifies removals and adds
+            Clear();
+            foreach (var entity in entitySource)
+            {
+                OnAdd(entity);
+            }
+            this.source = entitySource.ToList();
+            // this.SourceInUse = sourceAsList;
+        }
+
+        /// <summary>
+        /// Sets the entity source.
+        /// </summary>
+        /// <param name="entitySource">The entity source.</param>
+        public void SetSource(IEnumerable<TEntity> entitySource)
+        {
+#if false
+            Console.WriteLine("# EntitySet<{0}>.SetSource: HashCode={1}; Stack={2}", typeof(TEntity).Name,
+                GetHashCode(), new System.Diagnostics.StackTrace());
+#endif
+            if(HasLoadedOrAssignedValues)
+                throw new InvalidOperationException("The EntitySet is already loaded and the source cannot be changed.");
+            deferred = true;
+            deferredSource = entitySource;
+        }
+
+        /// <summary>
+        /// Loads all entities.
+        /// </summary>
+        public void Load()
+        {
+            deferred = false;
+            var _ = Source;
+        }
+
+        /// <summary>
+        /// Gets a new binding list.
+        /// </summary>
+        /// <returns></returns>
+        public IBindingList GetNewBindingList()
+        {
+            return new BindingList<TEntity>(Source.ToList());
+        }
+
+        // TODO: implement handler call
+        public event ListChangedEventHandler ListChanged;
+
+        /// <summary>
+        /// Called when entity is added.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        private void OnAdd(TEntity entity)
+        {
+			assignedValues = true;
+            if (onAdd != null)
+                onAdd(entity);
+        }
+        /// <summary>
+        /// Called when entity is removed
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        private void OnRemove(TEntity entity)
+        {
+			assignedValues = true;
+            if (onRemove != null)
+                onRemove(entity);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/IExecuteResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/IExecuteResult.cs
@@ -1,36 +1,36 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace System.Data.Linq
-{
-    public interface IExecuteResult : IDisposable
-    {
-        object GetParameterValue(int parameterIndex);
-        object ReturnValue { get; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace System.Data.Linq
+{
+    public interface IExecuteResult : IDisposable
+    {
+        object GetParameterValue(int parameterIndex);
+        object ReturnValue { get; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/IMemberModificationHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/IMemberModificationHandler.cs
@@ -1,94 +1,94 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-
-namespace DbLinq.Data.Linq
-{
-    /// <summary>
-    /// Interface to watch modifications on registered entities
-    /// Currently supports:
-    /// - IModified (kept for compatibility, not recommended since it does not allow partial updates)
-    /// - INotifyPropertyChanging and INotifyPropertyChanged (best choice)
-    /// - raw objects (keeps a copy of all entity data)
-    /// </summary>
-    internal interface IMemberModificationHandler
-    {
-        /// <summary>
-        /// Start to watch an entity. From here, changes will make IsModified() return true
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="metaModel"></param>
-        void Register(object entity, MetaModel metaModel);
-
-        /// <summary>
-        /// Start to watch an entity. From here, changes will make IsModified() return true
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="entityOriginalState"></param>
-        /// <param name="metaModel"></param>
-        void Register(object entity, object entityOriginalState, MetaModel metaModel);
-
-        /// <summary>
-        /// Returns if the entity was modified since it has been Register()ed for the first time
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        /// <param name="metaModel"></param>
-        bool IsModified(object entity, MetaModel metaModel);
-
-        /// <summary>
-        /// Marks the entity as not dirty.
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="metaModel"></param>
-        void ClearModified(object entity, MetaModel metaModel);
-
-        /// <summary>
-        /// Returns a list of all modified properties since last Register/ClearModified
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        /// <param name="metaModel"></param>
-        IList<MemberInfo> GetModifiedProperties(object entity, MetaModel metaModel);
-
-        /// <summary>
-        /// Unregisters an entity.
-        /// This is useful when it is switched from update to delete list
-        /// </summary>
-        /// <param name="entity"></param>
-        void Unregister(object entity);
-
-		/// <summary>
-		/// Unregisters an entity.
-		/// This is useful when the DataContext has been disposed
-		/// </summary>
-		/// <param name="entity"></param>
-		void UnregisterAll();
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+
+namespace DbLinq.Data.Linq
+{
+    /// <summary>
+    /// Interface to watch modifications on registered entities
+    /// Currently supports:
+    /// - IModified (kept for compatibility, not recommended since it does not allow partial updates)
+    /// - INotifyPropertyChanging and INotifyPropertyChanged (best choice)
+    /// - raw objects (keeps a copy of all entity data)
+    /// </summary>
+    internal interface IMemberModificationHandler
+    {
+        /// <summary>
+        /// Start to watch an entity. From here, changes will make IsModified() return true
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="metaModel"></param>
+        void Register(object entity, MetaModel metaModel);
+
+        /// <summary>
+        /// Start to watch an entity. From here, changes will make IsModified() return true
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="entityOriginalState"></param>
+        /// <param name="metaModel"></param>
+        void Register(object entity, object entityOriginalState, MetaModel metaModel);
+
+        /// <summary>
+        /// Returns if the entity was modified since it has been Register()ed for the first time
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        /// <param name="metaModel"></param>
+        bool IsModified(object entity, MetaModel metaModel);
+
+        /// <summary>
+        /// Marks the entity as not dirty.
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="metaModel"></param>
+        void ClearModified(object entity, MetaModel metaModel);
+
+        /// <summary>
+        /// Returns a list of all modified properties since last Register/ClearModified
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        /// <param name="metaModel"></param>
+        IList<MemberInfo> GetModifiedProperties(object entity, MetaModel metaModel);
+
+        /// <summary>
+        /// Unregisters an entity.
+        /// This is useful when it is switched from update to delete list
+        /// </summary>
+        /// <param name="entity"></param>
+        void Unregister(object entity);
+
+		/// <summary>
+		/// Unregisters an entity.
+		/// This is useful when the DataContext has been disposed
+		/// </summary>
+		/// <param name="entity"></param>
+		void UnregisterAll();
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ITable.Extended.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ITable.Extended.cs
@@ -1,37 +1,37 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq
-{
-    partial interface ITable
-    {
-        /// <summary>
-        /// Cancels the delete on submit.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        void CancelDeleteOnSubmit(object entity);
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq
+{
+    partial interface ITable
+    {
+        /// <summary>
+        /// Cancels the delete on submit.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        void CancelDeleteOnSubmit(object entity);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ITable.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ITable.cs
@@ -1,112 +1,112 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections;
-using System.Data.Linq;
-using System.Linq;
-
-#if MONO_STRICT
-namespace System.Data.Linq
-#else
-namespace DbLinq.Data.Linq
-#endif
-{
-    public partial interface ITable : IEnumerable, IQueryable
-    {
-        /// <summary>
-        /// Gets the context.
-        /// </summary>
-        /// <value>The context.</value>
-        DataContext Context { get; }
-        /// <summary>
-        /// Gets a value indicating whether this instance is read only.
-        /// </summary>
-        /// <value>
-        /// 	<c>true</c> if this instance is read only; otherwise, <c>false</c>.
-        /// </value>
-        bool IsReadOnly { get; }
-        /// <summary>
-        /// Attaches the specified entity.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        void Attach(object entity);
-        /// <summary>
-        /// Attaches the specified entity.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="asModified">if set to <c>true</c> [as modified].</param>
-        void Attach(object entity, bool asModified);
-        /// <summary>
-        /// Attaches the specified entity.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="original">The original.</param>
-        void Attach(object entity, object original);
-        /// <summary>
-        /// Attaches all entities.
-        /// </summary>
-        /// <param name="entities">The entities.</param>
-        void AttachAll(IEnumerable entities);
-        /// <summary>
-        /// Attaches all entites.
-        /// </summary>
-        /// <param name="entities">The entities.</param>
-        /// <param name="asModified">if set to <c>true</c> [as modified].</param>
-        void AttachAll(IEnumerable entities, bool asModified);
-        /// <summary>
-        /// Marks entities as to be deleted.
-        /// </summary>
-        /// <param name="entities">The entities.</param>
-        void DeleteAllOnSubmit(IEnumerable entities);
-        /// <summary>
-        /// Marks entity as to be deleted.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        void DeleteOnSubmit(object entity);
-        /// <summary>
-        /// Gets the modified members.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <returns></returns>
-        ModifiedMemberInfo[] GetModifiedMembers(object entity);
-        /// <summary>
-        /// Gets the state of the original entity.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <returns></returns>
-        object GetOriginalEntityState(object entity);
-        /// <summary>
-        /// Marks all entities to be inserted.
-        /// </summary>
-        /// <param name="entities">The entities.</param>
-        void InsertAllOnSubmit(IEnumerable entities);
-        /// <summary>
-        /// Marks entity to be inserted.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        void InsertOnSubmit(object entity);
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections;
+using System.Data.Linq;
+using System.Linq;
+
+#if MONO_STRICT
+namespace System.Data.Linq
+#else
+namespace DbLinq.Data.Linq
+#endif
+{
+    public partial interface ITable : IEnumerable, IQueryable
+    {
+        /// <summary>
+        /// Gets the context.
+        /// </summary>
+        /// <value>The context.</value>
+        DataContext Context { get; }
+        /// <summary>
+        /// Gets a value indicating whether this instance is read only.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if this instance is read only; otherwise, <c>false</c>.
+        /// </value>
+        bool IsReadOnly { get; }
+        /// <summary>
+        /// Attaches the specified entity.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        void Attach(object entity);
+        /// <summary>
+        /// Attaches the specified entity.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="asModified">if set to <c>true</c> [as modified].</param>
+        void Attach(object entity, bool asModified);
+        /// <summary>
+        /// Attaches the specified entity.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="original">The original.</param>
+        void Attach(object entity, object original);
+        /// <summary>
+        /// Attaches all entities.
+        /// </summary>
+        /// <param name="entities">The entities.</param>
+        void AttachAll(IEnumerable entities);
+        /// <summary>
+        /// Attaches all entites.
+        /// </summary>
+        /// <param name="entities">The entities.</param>
+        /// <param name="asModified">if set to <c>true</c> [as modified].</param>
+        void AttachAll(IEnumerable entities, bool asModified);
+        /// <summary>
+        /// Marks entities as to be deleted.
+        /// </summary>
+        /// <param name="entities">The entities.</param>
+        void DeleteAllOnSubmit(IEnumerable entities);
+        /// <summary>
+        /// Marks entity as to be deleted.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        void DeleteOnSubmit(object entity);
+        /// <summary>
+        /// Gets the modified members.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <returns></returns>
+        ModifiedMemberInfo[] GetModifiedMembers(object entity);
+        /// <summary>
+        /// Gets the state of the original entity.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <returns></returns>
+        object GetOriginalEntityState(object entity);
+        /// <summary>
+        /// Marks all entities to be inserted.
+        /// </summary>
+        /// <param name="entities">The entities.</param>
+        void InsertAllOnSubmit(IEnumerable entities);
+        /// <summary>
+        /// Marks entity to be inserted.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        void InsertOnSubmit(object entity);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/IVendorProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/IVendorProvider.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using DbLinq.Vendor;
-
-namespace DbLinq.Data.Linq
-{
-#if !MONO_STRICT
-    public
-#endif
-    interface IVendorProvider
-    {
-        /// <summary>
-        /// Finds a IVendor implementation instance by provider type
-        /// </summary>
-        /// <param name="providerType"></param>
-        /// <returns></returns>
-        IVendor FindVendorByProviderType(Type providerType);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using DbLinq.Vendor;
+
+namespace DbLinq.Data.Linq
+{
+#if !MONO_STRICT
+    public
+#endif
+    interface IVendorProvider
+    {
+        /// <summary>
+        /// Finds a IVendor implementation instance by provider type
+        /// </summary>
+        /// <param name="providerType"></param>
+        /// <returns></returns>
+        IVendor FindVendorByProviderType(Type providerType);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IIdentityProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IIdentityProvider.cs
@@ -1,40 +1,40 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Identity
-{
-    /// <summary>
-    /// This interface may be used by identities to provide a quick access to keys
-    /// </summary>
-    internal interface IIdentityProvider
-    {
-        /// <summary>
-        /// The object provides its own identity.
-        /// </summary>
-        /// <returns></returns>
-        IdentityKey GetIdentity();
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Identity
+{
+    /// <summary>
+    /// This interface may be used by identities to provide a quick access to keys
+    /// </summary>
+    internal interface IIdentityProvider
+    {
+        /// <summary>
+        /// The object provides its own identity.
+        /// </summary>
+        /// <returns></returns>
+        IdentityKey GetIdentity();
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IIdentityReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IIdentityReader.cs
@@ -1,44 +1,44 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Identity
-{
-    /// <summary>
-    /// Allows to read identity from entity
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IIdentityReader
-    {
-        /// <summary>
-        /// Gets an object identity
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        IdentityKey GetIdentityKey(object entity);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Identity
+{
+    /// <summary>
+    /// Allows to read identity from entity
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IIdentityReader
+    {
+        /// <summary>
+        /// Gets an object identity
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        IdentityKey GetIdentityKey(object entity);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IIdentityReaderFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IIdentityReaderFactory.cs
@@ -1,50 +1,50 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Identity
-{
-    /// <summary>
-    /// Provides a factory that creates IIdentityReaders
-    /// </summary>
-    internal interface IIdentityReaderFactory
-    {
-        /// <summary>
-        /// Returns an IIdentityReader specific to the requested type
-        /// (this allows to precompile the reader)
-        /// </summary>
-        /// <param name="t"></param>
-        /// <returns></returns>
-        IIdentityReader GetReader(Type t, DataContext dataContext);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Identity
+{
+    /// <summary>
+    /// Provides a factory that creates IIdentityReaders
+    /// </summary>
+    internal interface IIdentityReaderFactory
+    {
+        /// <summary>
+        /// Returns an IIdentityReader specific to the requested type
+        /// (this allows to precompile the reader)
+        /// </summary>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        IIdentityReader GetReader(Type t, DataContext dataContext);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IdentityKey.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/IdentityKey.cs
@@ -1,122 +1,122 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace DbLinq.Data.Linq.Identity
-{
-    /// <summary>
-    /// Identifies an object in a unique way (think Primay Keys in a database table)
-    /// Identity is:
-    /// - A type
-    /// - A collection 
-    /// 
-    /// Example: to store Product with ProductID=1, we use the following IdentityKey:
-    ///  IdentityKey{Type=Product, Keys={1}}
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    sealed class IdentityKey
-    {
-        /// <summary>
-        /// Entity type
-        /// </summary>
-        public Type Type { get; private set; }
-        /// <summary>
-        /// Entity keys
-        /// </summary>
-        public IList<object> Keys { get; private set; }
-
-        private readonly int hashCode;
-
-        /// <summary>
-        /// Determines equality between two refs
-        /// </summary>
-        /// <param name="obj"></param>
-        /// <returns></returns>
-        public override bool Equals(object obj)
-        {
-            var other = (IdentityKey)obj;
-            if (Type != other.Type)
-                return false;
-            if (Keys.Count != other.Keys.Count)
-                return false;
-            for (int keyIndex = 0; keyIndex < Keys.Count; keyIndex++)
-            {
-                if (!Equals(Keys[keyIndex], other.Keys[keyIndex]))
-                    return false;
-            }
-            return true;
-        }
-
-        /// <summary>
-        /// Computes hash code
-        /// </summary>
-        /// <returns></returns>
-        public override int GetHashCode()
-        {
-            return hashCode;
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="IdentityKey"/> class.
-        /// </summary>
-        /// <param name="type">The type.</param>
-        /// <param name="keys">The keys.</param>
-        public IdentityKey(Type type, IEnumerable<object> keys)
-        {
-            Type = type;
-            Keys = new List<object>(keys);
-
-            // Done here becouse IdentityKeys exists to be keys in dictionaries...
-            hashCode = type.GetHashCode();
-            foreach (object key in keys)
-            {
-                hashCode ^= key.GetHashCode();
-            }
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="IdentityKey"/> class.
-        /// </summary>
-        /// <param name="type">The type.</param>
-        /// <param name="keys">The keys.</param>
-        public IdentityKey(Type type, params object[] keys)
-        {
-            Type = type;
-            Keys = new List<object>(keys);
-
-            // Done here becouse IdentityKeys exists to be keys in dictionaries...
-            hashCode = Type.GetHashCode();
-            foreach (object key in Keys)
-            {
-                hashCode ^= key.GetHashCode();
-            }
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace DbLinq.Data.Linq.Identity
+{
+    /// <summary>
+    /// Identifies an object in a unique way (think Primay Keys in a database table)
+    /// Identity is:
+    /// - A type
+    /// - A collection 
+    /// 
+    /// Example: to store Product with ProductID=1, we use the following IdentityKey:
+    ///  IdentityKey{Type=Product, Keys={1}}
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    sealed class IdentityKey
+    {
+        /// <summary>
+        /// Entity type
+        /// </summary>
+        public Type Type { get; private set; }
+        /// <summary>
+        /// Entity keys
+        /// </summary>
+        public IList<object> Keys { get; private set; }
+
+        private readonly int hashCode;
+
+        /// <summary>
+        /// Determines equality between two refs
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public override bool Equals(object obj)
+        {
+            var other = (IdentityKey)obj;
+            if (Type != other.Type)
+                return false;
+            if (Keys.Count != other.Keys.Count)
+                return false;
+            for (int keyIndex = 0; keyIndex < Keys.Count; keyIndex++)
+            {
+                if (!Equals(Keys[keyIndex], other.Keys[keyIndex]))
+                    return false;
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// Computes hash code
+        /// </summary>
+        /// <returns></returns>
+        public override int GetHashCode()
+        {
+            return hashCode;
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="IdentityKey"/> class.
+        /// </summary>
+        /// <param name="type">The type.</param>
+        /// <param name="keys">The keys.</param>
+        public IdentityKey(Type type, IEnumerable<object> keys)
+        {
+            Type = type;
+            Keys = new List<object>(keys);
+
+            // Done here becouse IdentityKeys exists to be keys in dictionaries...
+            hashCode = type.GetHashCode();
+            foreach (object key in keys)
+            {
+                hashCode ^= key.GetHashCode();
+            }
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="IdentityKey"/> class.
+        /// </summary>
+        /// <param name="type">The type.</param>
+        /// <param name="keys">The keys.</param>
+        public IdentityKey(Type type, params object[] keys)
+        {
+            Type = type;
+            Keys = new List<object>(keys);
+
+            // Done here becouse IdentityKeys exists to be keys in dictionaries...
+            hashCode = Type.GetHashCode();
+            foreach (object key in Keys)
+            {
+                hashCode ^= key.GetHashCode();
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/Implementation/IdentityProviderReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/Implementation/IdentityProviderReader.cs
@@ -1,46 +1,46 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using DbLinq.Data.Linq.Identity;
-
-namespace DbLinq.Data.Linq.Identity.Implementation
-{
-    /// <summary>
-    /// Returns an Identity from an IdentityKey self-provider (an entity implementing IIdentityProvider)
-    /// </summary>
-    class IdentityProviderReader : IIdentityReader
-    {
-        /// <summary>
-        /// Gets an object identity, where entity is an IIdentityProvider
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        public IdentityKey GetIdentityKey(object entity)
-        {
-            return ((IIdentityProvider)entity).GetIdentity();
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using DbLinq.Data.Linq.Identity;
+
+namespace DbLinq.Data.Linq.Identity.Implementation
+{
+    /// <summary>
+    /// Returns an Identity from an IdentityKey self-provider (an entity implementing IIdentityProvider)
+    /// </summary>
+    class IdentityProviderReader : IIdentityReader
+    {
+        /// <summary>
+        /// Gets an object identity, where entity is an IIdentityProvider
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        public IdentityKey GetIdentityKey(object entity)
+        {
+            return ((IIdentityProvider)entity).GetIdentity();
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/Implementation/IdentityReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/Implementation/IdentityReader.cs
@@ -1,83 +1,83 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Reflection;
-using System.Collections.Generic;
-using DbLinq.Data.Linq.Identity;
-using DbLinq.Util;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Identity.Implementation
-{
-    /// <summary>
-    /// IIdentityReader default implementation
-    /// Currently uses reflection
-    /// TODO: use compilation
-    /// </summary>
-    internal class IdentityReader : IIdentityReader
-    {
-        private readonly Type type;
-        private readonly IList<MemberInfo> keyMembers = new List<MemberInfo>();
-
-        /// <summary>
-        /// Gets an object identity
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        public IdentityKey GetIdentityKey(object entity)
-        {
-            // no PK? --> null as identity (==we can not collect it)
-            if (keyMembers.Count == 0)
-                return null;
-            var keys = new List<object>();
-            foreach (var keyMember in keyMembers)
-            {
-                var key = keyMember.GetMemberValue(entity);
-                if(key != null)
-                    keys.Add(key);
-            }
-            return new IdentityKey(type, keys);
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="IdentityReader"/> class.
-        /// </summary>
-        /// <param name="t">The t.</param>
-        /// <param name="dataContext">The data context.</param>
-        public IdentityReader(Type t, DataContext dataContext)
-        {
-            foreach (var member in dataContext.Mapping.GetTable(t).RowType.IdentityMembers)
-                keyMembers.Add(member.Member);
-            type = t;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Reflection;
+using System.Collections.Generic;
+using DbLinq.Data.Linq.Identity;
+using DbLinq.Util;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Identity.Implementation
+{
+    /// <summary>
+    /// IIdentityReader default implementation
+    /// Currently uses reflection
+    /// TODO: use compilation
+    /// </summary>
+    internal class IdentityReader : IIdentityReader
+    {
+        private readonly Type type;
+        private readonly IList<MemberInfo> keyMembers = new List<MemberInfo>();
+
+        /// <summary>
+        /// Gets an object identity
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        public IdentityKey GetIdentityKey(object entity)
+        {
+            // no PK? --> null as identity (==we can not collect it)
+            if (keyMembers.Count == 0)
+                return null;
+            var keys = new List<object>();
+            foreach (var keyMember in keyMembers)
+            {
+                var key = keyMember.GetMemberValue(entity);
+                if(key != null)
+                    keys.Add(key);
+            }
+            return new IdentityKey(type, keys);
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="IdentityReader"/> class.
+        /// </summary>
+        /// <param name="t">The t.</param>
+        /// <param name="dataContext">The data context.</param>
+        public IdentityReader(Type t, DataContext dataContext)
+        {
+            foreach (var member in dataContext.Mapping.GetTable(t).RowType.IdentityMembers)
+                keyMembers.Add(member.Member);
+            type = t;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/Implementation/IdentityReaderFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Identity/Implementation/IdentityReaderFactory.cs
@@ -1,58 +1,58 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using DbLinq.Data.Linq.Identity;
-using DbLinq.Data.Linq.Identity.Implementation;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Identity.Implementation
-{
-    /// <summary>
-    /// IIdentityReaderFactory default implementation
-    /// </summary>
-    internal class IdentityReaderFactory : IIdentityReaderFactory
-    {
-        /// <summary>
-        /// Returns an IIdentityReader specific to the requested type
-        /// (this allows to precompile the reader)
-        /// </summary>
-        /// <param name="t"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        public IIdentityReader GetReader(Type t, DataContext dataContext)
-        {
-            if (typeof(IIdentityProvider).IsAssignableFrom(t))
-                return new IdentityProviderReader();
-            return new IdentityReader(t, dataContext);
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using DbLinq.Data.Linq.Identity;
+using DbLinq.Data.Linq.Identity.Implementation;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Identity.Implementation
+{
+    /// <summary>
+    /// IIdentityReaderFactory default implementation
+    /// </summary>
+    internal class IdentityReaderFactory : IIdentityReaderFactory
+    {
+        /// <summary>
+        /// Returns an IIdentityReader specific to the requested type
+        /// (this allows to precompile the reader)
+        /// </summary>
+        /// <param name="t"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        public IIdentityReader GetReader(Type t, DataContext dataContext)
+        {
+            if (typeof(IIdentityProvider).IsAssignableFrom(t))
+                return new IdentityProviderReader();
+            return new IdentityReader(t, dataContext);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/DisabledEntityTracker.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/DisabledEntityTracker.cs
@@ -1,104 +1,104 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-using DbLinq.Data.Linq.Identity;
-
-namespace DbLinq.Data.Linq.Implementation
-{
-    /// <summary>
-    /// List of entities, with their corresponding state (to insert, to watch, to delete)
-    /// </summary>
-    internal class DisabledEntityTracker : IEntityTracker
-    {
-        private static IEnumerable<EntityTrack> trackedEntities = new EntityTrack[] { };
-
-        /// <summary>
-        /// Finds entity by key (PK)
-        /// </summary>
-        /// <param name="identityKey"></param>
-        /// <returns></returns>
-        public EntityTrack FindByIdentity(IdentityKey identityKey)
-        {
-            return null;
-        }
-
-        /// <summary>
-        /// Returns true if the list contains the entity
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        public bool ContainsReference(object entity)
-        {
-            return false;
-        }
-
-        /// <summary>
-        /// Registers an entity to be inserted
-        /// </summary>
-        /// <param name="entity"></param>
-        public void RegisterToInsert(object entity)
-        {
-        }
-
-        /// <summary>
-        /// Registers an entity to be watched
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="identityKey"></param>
-        public void RegisterToWatch(object entity, IdentityKey identityKey)
-        {
-        }
-
-        /// <summary>
-        /// Registers entity to be deleted
-        /// </summary>
-        /// <param name="entity"></param>
-        public void RegisterToDelete(object entity)
-        {
-        }
-
-        /// <summary>
-        /// Unregisters the entity after deletion
-        /// </summary>
-        /// <param name="entity"></param>
-        public void RegisterDeleted(object entity)
-        {
-        }
-
-        /// <summary>
-        /// Enumerates all registered entities
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<EntityTrack> EnumerateAll()
-        {
-            return trackedEntities;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using DbLinq.Data.Linq.Identity;
+
+namespace DbLinq.Data.Linq.Implementation
+{
+    /// <summary>
+    /// List of entities, with their corresponding state (to insert, to watch, to delete)
+    /// </summary>
+    internal class DisabledEntityTracker : IEntityTracker
+    {
+        private static IEnumerable<EntityTrack> trackedEntities = new EntityTrack[] { };
+
+        /// <summary>
+        /// Finds entity by key (PK)
+        /// </summary>
+        /// <param name="identityKey"></param>
+        /// <returns></returns>
+        public EntityTrack FindByIdentity(IdentityKey identityKey)
+        {
+            return null;
+        }
+
+        /// <summary>
+        /// Returns true if the list contains the entity
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        public bool ContainsReference(object entity)
+        {
+            return false;
+        }
+
+        /// <summary>
+        /// Registers an entity to be inserted
+        /// </summary>
+        /// <param name="entity"></param>
+        public void RegisterToInsert(object entity)
+        {
+        }
+
+        /// <summary>
+        /// Registers an entity to be watched
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="identityKey"></param>
+        public void RegisterToWatch(object entity, IdentityKey identityKey)
+        {
+        }
+
+        /// <summary>
+        /// Registers entity to be deleted
+        /// </summary>
+        /// <param name="entity"></param>
+        public void RegisterToDelete(object entity)
+        {
+        }
+
+        /// <summary>
+        /// Unregisters the entity after deletion
+        /// </summary>
+        /// <param name="entity"></param>
+        public void RegisterDeleted(object entity)
+        {
+        }
+
+        /// <summary>
+        /// Enumerates all registered entities
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<EntityTrack> EnumerateAll()
+        {
+            return trackedEntities;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/EntityState.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/EntityState.cs
@@ -1,47 +1,47 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Implementation
-{
-    /// <summary>
-    /// Represents entity state in data context
-    /// </summary>
-    internal enum EntityState
-    {
-        /// <summary>
-        /// Object is new, it will be inserted next
-        /// </summary>
-        ToInsert,
-        /// <summary>
-        /// Object is being watched, we need to know if it was changed
-        /// </summary>
-        ToWatch,
-        /// <summary>
-        /// Object is to be deleted
-        /// </summary>
-        ToDelete,
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Implementation
+{
+    /// <summary>
+    /// Represents entity state in data context
+    /// </summary>
+    internal enum EntityState
+    {
+        /// <summary>
+        /// Object is new, it will be inserted next
+        /// </summary>
+        ToInsert,
+        /// <summary>
+        /// Object is being watched, we need to know if it was changed
+        /// </summary>
+        ToWatch,
+        /// <summary>
+        /// Object is to be deleted
+        /// </summary>
+        ToDelete,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/EntityTrack.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/EntityTrack.cs
@@ -1,62 +1,62 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using DbLinq.Data.Linq.Identity;
-
-namespace DbLinq.Data.Linq.Implementation
-{
-    /// <summary>
-    /// Keeps track of a referenced entity
-    /// </summary>
-    internal class EntityTrack
-    {
-        /// <summary>
-        /// Current state of the entity
-        /// </summary>
-        public EntityState EntityState { get; set; }
-
-        /// <summary>
-        /// Entity being watched
-        /// </summary>
-        public object Entity { get; private set; }
-
-        /// <summary>
-        /// Current entity key
-        /// </summary>
-        public IdentityKey IdentityKey { get; set; }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="EntityTrack"/> class.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="entityState">State of the entity.</param>
-        public EntityTrack(object entity, EntityState entityState)
-        {
-            Entity = entity;
-            EntityState = entityState;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using DbLinq.Data.Linq.Identity;
+
+namespace DbLinq.Data.Linq.Implementation
+{
+    /// <summary>
+    /// Keeps track of a referenced entity
+    /// </summary>
+    internal class EntityTrack
+    {
+        /// <summary>
+        /// Current state of the entity
+        /// </summary>
+        public EntityState EntityState { get; set; }
+
+        /// <summary>
+        /// Entity being watched
+        /// </summary>
+        public object Entity { get; private set; }
+
+        /// <summary>
+        /// Current entity key
+        /// </summary>
+        public IdentityKey IdentityKey { get; set; }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="EntityTrack"/> class.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="entityState">State of the entity.</param>
+        public EntityTrack(object entity, EntityState entityState)
+        {
+            Entity = entity;
+            EntityState = entityState;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/EntityTracker.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/EntityTracker.cs
@@ -1,228 +1,228 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-using DbLinq.Data.Linq.Identity;
-
-namespace DbLinq.Data.Linq.Implementation
-{
-    /// <summary>
-    /// List of entities, with their corresponding state (to insert, to watch, to delete)
-    /// </summary>
-    internal class EntityTracker : IEntityTracker
-    {
-        /// <summary>
-        /// Entities being watched
-        /// </summary>
-        private readonly List<EntityTrack> entities = new List<EntityTrack>();
-
-        /// <summary>
-        /// Entities currently being watched and to be updated
-        /// </summary>
-        private readonly IDictionary<IdentityKey, EntityTrack> entitiesByKey = new Dictionary<IdentityKey, EntityTrack>();
-
-        /// <summary>
-        /// Finds an entity tracking info by object reference
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        private EntityTrack FindByReference(object entity)
-        {
-            //    return (from e in entities where e.Entity == entity select e).FirstOrDefault();
-            return this.entities.Find(e => object.ReferenceEquals(entity, e.Entity));
-        }
-
-        /// <summary>
-        /// Finds entity by key (PK)
-        /// </summary>
-        /// <param name="identityKey"></param>
-        /// <returns></returns>
-        public EntityTrack FindByIdentity(IdentityKey identityKey)
-        {
-            EntityTrack entityTrack;
-            entitiesByKey.TryGetValue(identityKey, out entityTrack);
-            return entityTrack;
-        }
-
-        /// <summary>
-        /// Returns true if the list contains the entity
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        public bool ContainsReference(object entity)
-        {
-            return FindByReference(entity) != null;
-        }
-
-        /// <summary>
-        /// Registers an entity to be inserted
-        /// </summary>
-        /// <param name="entity"></param>
-        public void RegisterToInsert(object entity)
-        {
-            if (entity == null)
-                throw new ArgumentNullException("entity");
-
-            var entityTrack = FindByReference(entity);
-            if (entityTrack == null)
-            {
-                entityTrack = new EntityTrack(entity, EntityState.ToInsert);
-                entities.Add(entityTrack);
-            }
-            else
-            {
-                switch (entityTrack.EntityState)
-                {
-                // if already registered for insert/update, then this is an error
-                case EntityState.ToInsert:
-                case EntityState.ToWatch:
-                    throw new InvalidOperationException();
-                // whenever the object is registered for deletion, the fact of
-                // registering it for insertion sets it back to watch
-                case EntityState.ToDelete:
-                    entityTrack.EntityState = EntityState.ToWatch;
-                    entitiesByKey[entityTrack.IdentityKey] = entityTrack;
-                    break;
-                default:
-                    throw new ArgumentOutOfRangeException();
-                }
-            }
-        }
-
-        /// <summary>
-        /// Registers an entity to be watched
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="identityKey"></param>
-        public void RegisterToWatch(object entity, IdentityKey identityKey)
-        {
-            var entityTrack = FindByReference(entity);
-            if (entityTrack == null)
-            {
-                entityTrack = FindByIdentity(identityKey);
-                if (entityTrack != null)
-                    throw new System.Data.Linq.DuplicateKeyException(entity);
-                entityTrack = new EntityTrack(entity, EntityState.ToWatch) { IdentityKey = identityKey };
-                entities.Add(entityTrack);
-                entitiesByKey[identityKey] = entityTrack;
-            }
-            else
-            {
-                // changes the state of the current entity
-                switch (entityTrack.EntityState)
-                {
-                case EntityState.ToInsert:
-                    entityTrack.EntityState = EntityState.ToWatch;
-                    entityTrack.IdentityKey = identityKey;
-                    entitiesByKey[identityKey] = entityTrack;
-                    break;
-                // watched entities should not be registered again
-                case EntityState.ToWatch:
-                case EntityState.ToDelete:
-                    throw new InvalidOperationException();
-                default:
-                    throw new ArgumentOutOfRangeException();
-                }
-            }
-        }
-
-        /// <summary>
-        /// Registers entity to be deleted
-        /// </summary>
-        /// <param name="entity"></param>
-        public void RegisterToDelete(object entity)
-        {
-            if (entity == null)
-                throw new ArgumentNullException("entity");
-
-            var entityTrack = FindByReference(entity);
-            if (entityTrack == null)
-            {
-                entityTrack = new EntityTrack(entity, EntityState.ToDelete);
-                entities.Add(entityTrack);
-            }
-            else
-            {
-                // changes the state of the current entity
-                switch (entityTrack.EntityState)
-                {
-                // if entity was to be inserted, we just remove it from the list
-                // as if it never came here
-                case EntityState.ToInsert:
-                    entities.Remove(entityTrack);
-                    break;
-                // watched entities are registered to be removed
-                case EntityState.ToWatch:
-                    entityTrack.EntityState = EntityState.ToDelete;
-                    entitiesByKey.Remove(entityTrack.IdentityKey);
-                    break;
-                case EntityState.ToDelete:
-                    throw new InvalidOperationException();
-                default:
-                    throw new ArgumentOutOfRangeException();
-                }
-            }
-        }
-
-        /// <summary>
-        /// Unregisters the entity after deletion
-        /// </summary>
-        /// <param name="entity"></param>
-        public void RegisterDeleted(object entity)
-        {
-            // TODO: we could require an index
-            var entityTrack = FindByReference(entity);
-            if (entityTrack == null)
-            {
-                throw new ArgumentException("entity");
-            }
-            // changes the state of the current entity
-            switch (entityTrack.EntityState)
-            {
-            case EntityState.ToDelete:
-                entities.Remove(entityTrack);
-                break;
-            case EntityState.ToInsert:
-            case EntityState.ToWatch:
-                throw new InvalidOperationException();
-            default:
-                throw new ArgumentOutOfRangeException();
-            }
-        }
-
-        /// <summary>
-        /// Enumerates all registered entities
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<EntityTrack> EnumerateAll()
-        {
-            return entities;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using DbLinq.Data.Linq.Identity;
+
+namespace DbLinq.Data.Linq.Implementation
+{
+    /// <summary>
+    /// List of entities, with their corresponding state (to insert, to watch, to delete)
+    /// </summary>
+    internal class EntityTracker : IEntityTracker
+    {
+        /// <summary>
+        /// Entities being watched
+        /// </summary>
+        private readonly List<EntityTrack> entities = new List<EntityTrack>();
+
+        /// <summary>
+        /// Entities currently being watched and to be updated
+        /// </summary>
+        private readonly IDictionary<IdentityKey, EntityTrack> entitiesByKey = new Dictionary<IdentityKey, EntityTrack>();
+
+        /// <summary>
+        /// Finds an entity tracking info by object reference
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        private EntityTrack FindByReference(object entity)
+        {
+            //    return (from e in entities where e.Entity == entity select e).FirstOrDefault();
+            return this.entities.Find(e => object.ReferenceEquals(entity, e.Entity));
+        }
+
+        /// <summary>
+        /// Finds entity by key (PK)
+        /// </summary>
+        /// <param name="identityKey"></param>
+        /// <returns></returns>
+        public EntityTrack FindByIdentity(IdentityKey identityKey)
+        {
+            EntityTrack entityTrack;
+            entitiesByKey.TryGetValue(identityKey, out entityTrack);
+            return entityTrack;
+        }
+
+        /// <summary>
+        /// Returns true if the list contains the entity
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        public bool ContainsReference(object entity)
+        {
+            return FindByReference(entity) != null;
+        }
+
+        /// <summary>
+        /// Registers an entity to be inserted
+        /// </summary>
+        /// <param name="entity"></param>
+        public void RegisterToInsert(object entity)
+        {
+            if (entity == null)
+                throw new ArgumentNullException("entity");
+
+            var entityTrack = FindByReference(entity);
+            if (entityTrack == null)
+            {
+                entityTrack = new EntityTrack(entity, EntityState.ToInsert);
+                entities.Add(entityTrack);
+            }
+            else
+            {
+                switch (entityTrack.EntityState)
+                {
+                // if already registered for insert/update, then this is an error
+                case EntityState.ToInsert:
+                case EntityState.ToWatch:
+                    throw new InvalidOperationException();
+                // whenever the object is registered for deletion, the fact of
+                // registering it for insertion sets it back to watch
+                case EntityState.ToDelete:
+                    entityTrack.EntityState = EntityState.ToWatch;
+                    entitiesByKey[entityTrack.IdentityKey] = entityTrack;
+                    break;
+                default:
+                    throw new ArgumentOutOfRangeException();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Registers an entity to be watched
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="identityKey"></param>
+        public void RegisterToWatch(object entity, IdentityKey identityKey)
+        {
+            var entityTrack = FindByReference(entity);
+            if (entityTrack == null)
+            {
+                entityTrack = FindByIdentity(identityKey);
+                if (entityTrack != null)
+                    throw new System.Data.Linq.DuplicateKeyException(entity);
+                entityTrack = new EntityTrack(entity, EntityState.ToWatch) { IdentityKey = identityKey };
+                entities.Add(entityTrack);
+                entitiesByKey[identityKey] = entityTrack;
+            }
+            else
+            {
+                // changes the state of the current entity
+                switch (entityTrack.EntityState)
+                {
+                case EntityState.ToInsert:
+                    entityTrack.EntityState = EntityState.ToWatch;
+                    entityTrack.IdentityKey = identityKey;
+                    entitiesByKey[identityKey] = entityTrack;
+                    break;
+                // watched entities should not be registered again
+                case EntityState.ToWatch:
+                case EntityState.ToDelete:
+                    throw new InvalidOperationException();
+                default:
+                    throw new ArgumentOutOfRangeException();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Registers entity to be deleted
+        /// </summary>
+        /// <param name="entity"></param>
+        public void RegisterToDelete(object entity)
+        {
+            if (entity == null)
+                throw new ArgumentNullException("entity");
+
+            var entityTrack = FindByReference(entity);
+            if (entityTrack == null)
+            {
+                entityTrack = new EntityTrack(entity, EntityState.ToDelete);
+                entities.Add(entityTrack);
+            }
+            else
+            {
+                // changes the state of the current entity
+                switch (entityTrack.EntityState)
+                {
+                // if entity was to be inserted, we just remove it from the list
+                // as if it never came here
+                case EntityState.ToInsert:
+                    entities.Remove(entityTrack);
+                    break;
+                // watched entities are registered to be removed
+                case EntityState.ToWatch:
+                    entityTrack.EntityState = EntityState.ToDelete;
+                    entitiesByKey.Remove(entityTrack.IdentityKey);
+                    break;
+                case EntityState.ToDelete:
+                    throw new InvalidOperationException();
+                default:
+                    throw new ArgumentOutOfRangeException();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Unregisters the entity after deletion
+        /// </summary>
+        /// <param name="entity"></param>
+        public void RegisterDeleted(object entity)
+        {
+            // TODO: we could require an index
+            var entityTrack = FindByReference(entity);
+            if (entityTrack == null)
+            {
+                throw new ArgumentException("entity");
+            }
+            // changes the state of the current entity
+            switch (entityTrack.EntityState)
+            {
+            case EntityState.ToDelete:
+                entities.Remove(entityTrack);
+                break;
+            case EntityState.ToInsert:
+            case EntityState.ToWatch:
+                throw new InvalidOperationException();
+            default:
+                throw new ArgumentOutOfRangeException();
+            }
+        }
+
+        /// <summary>
+        /// Enumerates all registered entities
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<EntityTrack> EnumerateAll()
+        {
+            return entities;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/IEntityTracker.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/IEntityTracker.cs
@@ -1,85 +1,85 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-using DbLinq.Data.Linq.Identity;
-
-namespace DbLinq.Data.Linq.Implementation
-{
-    /// <summary>
-    /// Interface of Entity Trackers
-    /// </summary>
-    internal interface IEntityTracker
-    {
-        /// <summary>
-        /// Finds entity by key (PK)
-        /// </summary>
-        /// <param name="identityKey"></param>
-        /// <returns></returns>
-        EntityTrack FindByIdentity(IdentityKey identityKey);
-
-        /// <summary>
-        /// Returns true if the list contains the entity
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        bool ContainsReference(object entity);
-
-        /// <summary>
-        /// Registers an entity to be inserted
-        /// </summary>
-        /// <param name="entity"></param>
-        void RegisterToInsert(object entity);
-
-        /// <summary>
-        /// Registers an entity to be watched
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="identityKey"></param>
-        void RegisterToWatch(object entity, IdentityKey identityKey);
-
-        /// <summary>
-        /// Registers entity to be deleted
-        /// </summary>
-        /// <param name="entity"></param>
-        void RegisterToDelete(object entity);
-
-        /// <summary>
-        /// Unregisters the entity after deletion
-        /// </summary>
-        /// <param name="entity"></param>
-        void RegisterDeleted(object entity);
-
-        /// <summary>
-        /// Enumerates all registered entities
-        /// </summary>
-        /// <returns></returns>
-        IEnumerable<EntityTrack> EnumerateAll();
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using DbLinq.Data.Linq.Identity;
+
+namespace DbLinq.Data.Linq.Implementation
+{
+    /// <summary>
+    /// Interface of Entity Trackers
+    /// </summary>
+    internal interface IEntityTracker
+    {
+        /// <summary>
+        /// Finds entity by key (PK)
+        /// </summary>
+        /// <param name="identityKey"></param>
+        /// <returns></returns>
+        EntityTrack FindByIdentity(IdentityKey identityKey);
+
+        /// <summary>
+        /// Returns true if the list contains the entity
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        bool ContainsReference(object entity);
+
+        /// <summary>
+        /// Registers an entity to be inserted
+        /// </summary>
+        /// <param name="entity"></param>
+        void RegisterToInsert(object entity);
+
+        /// <summary>
+        /// Registers an entity to be watched
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="identityKey"></param>
+        void RegisterToWatch(object entity, IdentityKey identityKey);
+
+        /// <summary>
+        /// Registers entity to be deleted
+        /// </summary>
+        /// <param name="entity"></param>
+        void RegisterToDelete(object entity);
+
+        /// <summary>
+        /// Unregisters the entity after deletion
+        /// </summary>
+        /// <param name="entity"></param>
+        void RegisterDeleted(object entity);
+
+        /// <summary>
+        /// Enumerates all registered entities
+        /// </summary>
+        /// <returns></returns>
+        IEnumerable<EntityTrack> EnumerateAll();
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/MemberModificationHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/MemberModificationHandler.cs
@@ -1,490 +1,490 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Implementation
-{
-    /// <summary>
-    /// ModificationHandler class handles entities in two ways:
-    /// 1. if entity implements IModifed, uses the interface and its IsModifed flag property
-    /// 2. otherwise, the handler keeps a dictionary of raw data per entity
-    /// </summary>
-    internal class MemberModificationHandler : IMemberModificationHandler
-    {
-        private readonly IDictionary<object, IDictionary<string, object>> rawDataEntities = new Dictionary<object, IDictionary<string, object>>(new ReferenceEqualityComparer<object>());
-        private readonly IDictionary<object, IDictionary<string, MemberInfo>> modifiedProperties = new Dictionary<object, IDictionary<string, MemberInfo>>(new ReferenceEqualityComparer<object>());
-
-        private static readonly IDictionary<string, MemberInfo> propertyChangingSentinal = new Dictionary<string, MemberInfo>();
-
-        /// <summary>
-        /// Gets the column members.
-        /// </summary>
-        /// <param name="entityType">Type of the entity.</param>
-        /// <param name="metaModel">The meta model.</param>
-        /// <returns></returns>
-        protected virtual IEnumerable<MemberInfo> GetColumnMembers(Type entityType, MetaModel metaModel)
-        {
-            foreach (var dataMember in metaModel.GetTable(entityType).RowType.PersistentDataMembers)
-            {
-                yield return dataMember.Member;
-            }
-        }
-
-        /// <summary>
-        /// Determines whether the specified type is primitive type.
-        /// </summary>
-        /// <param name="type">The type.</param>
-        /// <returns>
-        /// 	<c>true</c> if the specified type is primitive type; otherwise, <c>false</c>.
-        /// </returns>
-        protected static bool IsPrimitiveType(Type type)
-        {
-            if (type.IsValueType)
-                return true;
-            if (type == typeof(string))
-                return true;
-            return false;
-        }
-
-        /// <summary>
-        /// Adds simple (value) properties of an object to a given dictionary
-        /// and recurses if a property contains complex data
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="rawData"></param>
-        /// <param name="prefix"></param>
-        /// <param name="metaModel"></param>
-        protected void AddRawData(object entity, IDictionary<string, object> rawData, string prefix, MetaModel metaModel)
-        {
-            if (entity == null)
-                return;
-            foreach (var memberInfo in GetColumnMembers(entity.GetType(), metaModel))
-            {
-                var propertyValue = memberInfo.GetMemberValue(entity);
-                // if it is a value, it can be stored directly
-                var memberType = memberInfo.GetMemberType();
-                if (IsPrimitiveType(memberType))
-                {
-                    rawData[prefix + memberInfo.Name] = propertyValue;
-                }
-                else if (memberType.IsArray)
-                {
-                    if (propertyValue != null)
-                    {
-                        var arrayValue = (Array) propertyValue;
-                        for (int arrayIndex = 0; arrayIndex < arrayValue.Length; arrayIndex++)
-                        {
-                            rawData[string.Format("{0}[{1}]", memberInfo.Name, arrayIndex)] =
-                                arrayValue.GetValue(arrayIndex);
-                        }
-                    }
-                }
-                else // otherwise, we recurse, and prefix the current property name to sub properties to avoid conflicts
-                {
-                    AddRawData(propertyValue, rawData, memberInfo.Name + ".", metaModel);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Creates a "flat view" from a composite object
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="metaModel"></param>
-        /// <returns>a pair of {property name, property value}</returns>
-        protected IDictionary<string, object> GetEntityRawData(object entity, MetaModel metaModel)
-        {
-            var rawData = new Dictionary<string, object>();
-            AddRawData(entity, rawData, string.Empty, metaModel);
-            return rawData;
-        }
-
-        /// <summary>
-        /// Tells if the object notifies a change
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <returns></returns>
-        private static bool IsNotifying(object entity)
-        {
-            return entity is INotifyPropertyChanged
-                   || entity is INotifyPropertyChanging;
-        }
-
-        /// <summary>
-        /// Start to watch an entity. From here, changes will make IsModified() return true
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="metaModel"></param>
-        public void Register(object entity, MetaModel metaModel)
-        {
-            Register(entity, entity, metaModel);
-        }
-
-        /// <summary>
-        /// Start to watch an entity. From here, changes will make IsModified() return true if the entity has changed
-        /// If the entity is already registered, there's no error, but the entity is reset to its original state
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="entityOriginalState"></param>
-        /// <param name="metaModel"></param>
-        public void Register(object entity, object entityOriginalState, MetaModel metaModel)
-        {
-            // notifying, we need to wait for changes
-            if (IsNotifying(entity))
-            {
-                RegisterNotification(entity, entityOriginalState, metaModel);
-            }
-            // raw data, we keep a snapshot of the current state
-            else
-            {
-                if (!rawDataEntities.ContainsKey(entity) && entityOriginalState != null)
-                    rawDataEntities[entity] = GetEntityRawData(entityOriginalState, metaModel);
-            }
-        }
-
-        private void RegisterNotification(object entity, object entityOriginalState, MetaModel metaModel)
-        {
-            if (modifiedProperties.ContainsKey(entity))
-                return;
-            modifiedProperties[entity] = null;
-
-            var entityChanged = entity as INotifyPropertyChanged;
-            if (entityChanged != null)
-            {
-                entityChanged.PropertyChanged += OnPropertyChangedEvent;
-            }
-
-            var entityChanging = entity as INotifyPropertyChanging;
-            if (entityChanging != null)
-            {
-                entityChanging.PropertyChanging += OnPropertyChangingEvent;
-            }
-
-            // then check all properties, and note them as changed if they already did
-            if (!ReferenceEquals(entity, entityOriginalState)) // only if we specified another original entity
-            {
-                foreach (var dataMember in metaModel.GetTable(entity.GetType()).RowType.PersistentDataMembers)
-                {
-                    var memberInfo = dataMember.Member;
-                    if (entityOriginalState == null ||
-                        IsPropertyModified(memberInfo.GetMemberValue(entity),
-                                           memberInfo.GetMemberValue(entityOriginalState)))
-                    {
-                        SetPropertyChanged(entity, memberInfo.Name);
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Occurs on INotifyPropertyChanged.PropertyChanged
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void OnPropertyChangedEvent(object sender, PropertyChangedEventArgs e)
-        {
-            SetPropertyChanged(sender, e.PropertyName);
-        }
-
-        private void OnPropertyChangingEvent(object entity, PropertyChangingEventArgs e)
-        {
-            if (modifiedProperties[entity] == null)
-                modifiedProperties[entity] = propertyChangingSentinal;
-        }
-
-        /// <summary>
-        /// Unregisters an entity.
-        /// This is useful when it is switched from update to delete list
-        /// </summary>
-        /// <param name="entity"></param>
-        public void Unregister(object entity)
-        {
-            if (IsNotifying(entity))
-                UnregisterNotification(entity);
-            else
-            {
-                if (rawDataEntities.ContainsKey(entity))
-                    rawDataEntities.Remove(entity);
-            }
-        }
-
-		/// <summary>
-		/// Unregisters an entity.
-		/// This is useful when the DataContext has been disposed
-		/// </summary>
-		/// <param name="entity"></param>
-		public void UnregisterAll()
-		{
-			//Duplicate the list to not modify modifiedEntities
-			var modifiedEntities = new List<object>(modifiedProperties.Keys);
-			foreach (var entity in modifiedEntities)
-			{
-				if (IsNotifying(entity))
-					UnregisterNotification(entity);
-			}
-		}
-
-        private void UnregisterNotification(object entity)
-        {
-            if (!modifiedProperties.ContainsKey(entity))
-                return;
-            modifiedProperties.Remove(entity);
-            INotifyPropertyChanged npc = entity as INotifyPropertyChanged;
-            if (npc != null)
-            {
-                npc.PropertyChanged -= OnPropertyChangedEvent;
-            }
-            var changing = entity as INotifyPropertyChanging;
-            if (changing != null)
-            {
-                changing.PropertyChanging -= OnPropertyChangingEvent;
-            }
-        }
-
-        /// <summary>
-        /// This method is called when a notifying object sends an event because of a property change
-        /// We may keep track of the precise change in the future
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="propertyName"></param>
-        private void SetPropertyChanged(object entity, string propertyName)
-        {
-            PropertyInfo pi = GetProperty(entity, propertyName);
-            if (pi == null)
-                throw new ArgumentException("Incorrect property changed");
-
-            if (modifiedProperties[entity] == null || 
-                    ReferenceEquals(propertyChangingSentinal, modifiedProperties[entity]))
-            {
-                modifiedProperties[entity] = new Dictionary<string, MemberInfo>();
-            }
-            modifiedProperties[entity][propertyName] = pi;
-        }
-
-        /// <summary>
-        /// Returns if the entity was modified since it has been Register()ed for the first time
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="metaModel"></param>
-        /// <returns></returns>
-        public bool IsModified(object entity, MetaModel metaModel)
-        {
-            // 1. event notifying case (INotify*)
-            if (IsNotifying(entity))
-                return IsNotifyingModified(entity);
-
-            // 2. raw data
-            return IsRawModified(entity, metaModel);
-        }
-
-        /// <summary>
-        /// Determines whether the specified notifiying entity is modified.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <returns>
-        /// 	<c>true</c> if the specified notifiying entity is modified; otherwise, <c>false</c>.
-        /// </returns>
-        private bool IsNotifyingModified(object entity)
-        {
-            if (!modifiedProperties.ContainsKey(entity) || modifiedProperties[entity] == null)
-                return false;
-            return ReferenceEquals(propertyChangingSentinal, modifiedProperties[entity]) ||
-                modifiedProperties[entity].Count > 0;
-        }
-
-        /// <summary>
-        /// Determines whether the specified property has changed, by comparing its current and previous value.
-        /// </summary>
-        /// <param name="p1">The p1.</param>
-        /// <param name="p2">The p2.</param>
-        /// <returns>
-        /// 	<c>true</c> if the specified property has changed; otherwise, <c>false</c>.
-        /// </returns>
-        private static bool IsPropertyModified(object p1, object p2)
-        {
-            return !Equals(p1, p2);
-        }
-
-        /// <summary>
-        /// Determines whether the specified raw entity has changed.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="metaModel">The meta model.</param>
-        /// <returns>
-        /// 	<c>true</c> if the specified raw entity has changed; otherwise, <c>false</c>.
-        /// </returns>
-        private bool IsRawModified(object entity, MetaModel metaModel)
-        {
-            // if not present, maybe it was inserted (or set to dirty)
-            // TODO: this will be useless when we will support the differential properties
-            if (!rawDataEntities.ContainsKey(entity))
-                return true;
-
-            IDictionary<string, object> originalData = rawDataEntities[entity];
-            IDictionary<string, object> currentData = GetEntityRawData(entity, metaModel);
-
-            foreach (string key in originalData.Keys)
-            {
-                object originalValue = originalData[key];
-                object currentValue = currentData[key];
-                if (IsPropertyModified(originalValue, currentValue))
-                    return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Returns a list of all modified properties since last Register/ClearModified
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="metaModel"></param>
-        /// <returns></returns>
-        public IList<MemberInfo> GetModifiedProperties(object entity, MetaModel metaModel)
-        {
-            if (IsNotifying(entity))
-                return GetNotifyingModifiedProperties(entity, metaModel);
-
-            return GetRawModifiedProperties(entity, metaModel);
-        }
-
-        /// <summary>
-        /// Gets all column properties.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="metaModel">The meta model.</param>
-        /// <returns></returns>
-        protected IList<MemberInfo> GetAllColumnProperties(object entity, MetaModel metaModel)
-        {
-            if (entity == null)
-                throw new ArgumentNullException("entity");
-            var properties = new List<MemberInfo>(GetColumnMembers(entity.GetType(), metaModel));
-            return properties;
-        }
-
-        /// <summary>
-        /// Gets the self declaring entity modified properties.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="metaModel">The meta model.</param>
-        /// <returns></returns>
-        protected IList<MemberInfo> GetSelfDeclaringModifiedProperties(object entity, MetaModel metaModel)
-        {
-            return GetAllColumnProperties(entity, metaModel);
-        }
-
-        /// <summary>
-        /// Gets the notifying entity modified properties.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="metaModel">The meta model.</param>
-        /// <returns></returns>
-        protected IList<MemberInfo> GetNotifyingModifiedProperties(object entity, MetaModel metaModel)
-        {
-            IDictionary<string, MemberInfo> properties;
-            // if we don't have it, it is fully dirty
-            if (!modifiedProperties.TryGetValue(entity, out properties) || 
-                    ReferenceEquals(propertyChangingSentinal, modifiedProperties[entity]))
-                return GetAllColumnProperties(entity, metaModel);
-            return new List<MemberInfo>(properties.Values);
-        }
-
-        /// <summary>
-        /// Gets modified properties for entity, by using raw compare method.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="metaModel">The meta model.</param>
-        /// <returns></returns>
-        protected IList<MemberInfo> GetRawModifiedProperties(object entity, MetaModel metaModel)
-        {
-            var properties = new List<MemberInfo>();
-
-            IDictionary<string, object> originalData;
-            // if we don't have this entity we consider all its properties as having been modified
-            if (!rawDataEntities.TryGetValue(entity, out originalData))
-                return GetAllColumnProperties(entity, metaModel);
-            var currentData = GetEntityRawData(entity, metaModel);
-
-            // otherwise, we iterate and find what's changed
-            foreach (string key in currentData.Keys)
-            {
-                var currentValue = currentData[key];
-                var originalValue = originalData[key];
-                if (IsPropertyModified(originalValue, currentValue))
-                    properties.Add(GetProperty(entity, key));
-            }
-
-            return properties;
-        }
-
-        /// <summary>
-        /// Marks the entity as not dirty.
-        /// </summary>
-        /// <param name="entity"></param>
-        /// <param name="metaModel"></param>
-        public void ClearModified(object entity, MetaModel metaModel)
-        {
-            if (IsNotifying(entity))
-                ClearNotifyingModified(entity);
-            else
-                ClearRawModified(entity, metaModel);
-        }
-
-        /// <summary>
-        /// Sets the notifying entity as unmodified.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        private void ClearNotifyingModified(object entity)
-        {
-            modifiedProperties[entity] = null;
-        }
-
-        /// <summary>
-        /// Sets the raw entity as unmodified.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="metaModel">The meta model.</param>
-        private void ClearRawModified(object entity, MetaModel metaModel)
-        {
-            rawDataEntities[entity] = GetEntityRawData(entity, metaModel);
-        }
-
-        /// <summary>
-        /// Gets the property, given a property name.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        /// <param name="propertyName">Name of the property.</param>
-        /// <returns></returns>
-        private static PropertyInfo GetProperty(object entity, string propertyName)
-        {
-            return entity.GetType().GetProperty(propertyName);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Implementation
+{
+    /// <summary>
+    /// ModificationHandler class handles entities in two ways:
+    /// 1. if entity implements IModifed, uses the interface and its IsModifed flag property
+    /// 2. otherwise, the handler keeps a dictionary of raw data per entity
+    /// </summary>
+    internal class MemberModificationHandler : IMemberModificationHandler
+    {
+        private readonly IDictionary<object, IDictionary<string, object>> rawDataEntities = new Dictionary<object, IDictionary<string, object>>(new ReferenceEqualityComparer<object>());
+        private readonly IDictionary<object, IDictionary<string, MemberInfo>> modifiedProperties = new Dictionary<object, IDictionary<string, MemberInfo>>(new ReferenceEqualityComparer<object>());
+
+        private static readonly IDictionary<string, MemberInfo> propertyChangingSentinal = new Dictionary<string, MemberInfo>();
+
+        /// <summary>
+        /// Gets the column members.
+        /// </summary>
+        /// <param name="entityType">Type of the entity.</param>
+        /// <param name="metaModel">The meta model.</param>
+        /// <returns></returns>
+        protected virtual IEnumerable<MemberInfo> GetColumnMembers(Type entityType, MetaModel metaModel)
+        {
+            foreach (var dataMember in metaModel.GetTable(entityType).RowType.PersistentDataMembers)
+            {
+                yield return dataMember.Member;
+            }
+        }
+
+        /// <summary>
+        /// Determines whether the specified type is primitive type.
+        /// </summary>
+        /// <param name="type">The type.</param>
+        /// <returns>
+        /// 	<c>true</c> if the specified type is primitive type; otherwise, <c>false</c>.
+        /// </returns>
+        protected static bool IsPrimitiveType(Type type)
+        {
+            if (type.IsValueType)
+                return true;
+            if (type == typeof(string))
+                return true;
+            return false;
+        }
+
+        /// <summary>
+        /// Adds simple (value) properties of an object to a given dictionary
+        /// and recurses if a property contains complex data
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="rawData"></param>
+        /// <param name="prefix"></param>
+        /// <param name="metaModel"></param>
+        protected void AddRawData(object entity, IDictionary<string, object> rawData, string prefix, MetaModel metaModel)
+        {
+            if (entity == null)
+                return;
+            foreach (var memberInfo in GetColumnMembers(entity.GetType(), metaModel))
+            {
+                var propertyValue = memberInfo.GetMemberValue(entity);
+                // if it is a value, it can be stored directly
+                var memberType = memberInfo.GetMemberType();
+                if (IsPrimitiveType(memberType))
+                {
+                    rawData[prefix + memberInfo.Name] = propertyValue;
+                }
+                else if (memberType.IsArray)
+                {
+                    if (propertyValue != null)
+                    {
+                        var arrayValue = (Array) propertyValue;
+                        for (int arrayIndex = 0; arrayIndex < arrayValue.Length; arrayIndex++)
+                        {
+                            rawData[string.Format("{0}[{1}]", memberInfo.Name, arrayIndex)] =
+                                arrayValue.GetValue(arrayIndex);
+                        }
+                    }
+                }
+                else // otherwise, we recurse, and prefix the current property name to sub properties to avoid conflicts
+                {
+                    AddRawData(propertyValue, rawData, memberInfo.Name + ".", metaModel);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Creates a "flat view" from a composite object
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="metaModel"></param>
+        /// <returns>a pair of {property name, property value}</returns>
+        protected IDictionary<string, object> GetEntityRawData(object entity, MetaModel metaModel)
+        {
+            var rawData = new Dictionary<string, object>();
+            AddRawData(entity, rawData, string.Empty, metaModel);
+            return rawData;
+        }
+
+        /// <summary>
+        /// Tells if the object notifies a change
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        private static bool IsNotifying(object entity)
+        {
+            return entity is INotifyPropertyChanged
+                   || entity is INotifyPropertyChanging;
+        }
+
+        /// <summary>
+        /// Start to watch an entity. From here, changes will make IsModified() return true
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="metaModel"></param>
+        public void Register(object entity, MetaModel metaModel)
+        {
+            Register(entity, entity, metaModel);
+        }
+
+        /// <summary>
+        /// Start to watch an entity. From here, changes will make IsModified() return true if the entity has changed
+        /// If the entity is already registered, there's no error, but the entity is reset to its original state
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="entityOriginalState"></param>
+        /// <param name="metaModel"></param>
+        public void Register(object entity, object entityOriginalState, MetaModel metaModel)
+        {
+            // notifying, we need to wait for changes
+            if (IsNotifying(entity))
+            {
+                RegisterNotification(entity, entityOriginalState, metaModel);
+            }
+            // raw data, we keep a snapshot of the current state
+            else
+            {
+                if (!rawDataEntities.ContainsKey(entity) && entityOriginalState != null)
+                    rawDataEntities[entity] = GetEntityRawData(entityOriginalState, metaModel);
+            }
+        }
+
+        private void RegisterNotification(object entity, object entityOriginalState, MetaModel metaModel)
+        {
+            if (modifiedProperties.ContainsKey(entity))
+                return;
+            modifiedProperties[entity] = null;
+
+            var entityChanged = entity as INotifyPropertyChanged;
+            if (entityChanged != null)
+            {
+                entityChanged.PropertyChanged += OnPropertyChangedEvent;
+            }
+
+            var entityChanging = entity as INotifyPropertyChanging;
+            if (entityChanging != null)
+            {
+                entityChanging.PropertyChanging += OnPropertyChangingEvent;
+            }
+
+            // then check all properties, and note them as changed if they already did
+            if (!ReferenceEquals(entity, entityOriginalState)) // only if we specified another original entity
+            {
+                foreach (var dataMember in metaModel.GetTable(entity.GetType()).RowType.PersistentDataMembers)
+                {
+                    var memberInfo = dataMember.Member;
+                    if (entityOriginalState == null ||
+                        IsPropertyModified(memberInfo.GetMemberValue(entity),
+                                           memberInfo.GetMemberValue(entityOriginalState)))
+                    {
+                        SetPropertyChanged(entity, memberInfo.Name);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Occurs on INotifyPropertyChanged.PropertyChanged
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void OnPropertyChangedEvent(object sender, PropertyChangedEventArgs e)
+        {
+            SetPropertyChanged(sender, e.PropertyName);
+        }
+
+        private void OnPropertyChangingEvent(object entity, PropertyChangingEventArgs e)
+        {
+            if (modifiedProperties[entity] == null)
+                modifiedProperties[entity] = propertyChangingSentinal;
+        }
+
+        /// <summary>
+        /// Unregisters an entity.
+        /// This is useful when it is switched from update to delete list
+        /// </summary>
+        /// <param name="entity"></param>
+        public void Unregister(object entity)
+        {
+            if (IsNotifying(entity))
+                UnregisterNotification(entity);
+            else
+            {
+                if (rawDataEntities.ContainsKey(entity))
+                    rawDataEntities.Remove(entity);
+            }
+        }
+
+		/// <summary>
+		/// Unregisters an entity.
+		/// This is useful when the DataContext has been disposed
+		/// </summary>
+		/// <param name="entity"></param>
+		public void UnregisterAll()
+		{
+			//Duplicate the list to not modify modifiedEntities
+			var modifiedEntities = new List<object>(modifiedProperties.Keys);
+			foreach (var entity in modifiedEntities)
+			{
+				if (IsNotifying(entity))
+					UnregisterNotification(entity);
+			}
+		}
+
+        private void UnregisterNotification(object entity)
+        {
+            if (!modifiedProperties.ContainsKey(entity))
+                return;
+            modifiedProperties.Remove(entity);
+            INotifyPropertyChanged npc = entity as INotifyPropertyChanged;
+            if (npc != null)
+            {
+                npc.PropertyChanged -= OnPropertyChangedEvent;
+            }
+            var changing = entity as INotifyPropertyChanging;
+            if (changing != null)
+            {
+                changing.PropertyChanging -= OnPropertyChangingEvent;
+            }
+        }
+
+        /// <summary>
+        /// This method is called when a notifying object sends an event because of a property change
+        /// We may keep track of the precise change in the future
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="propertyName"></param>
+        private void SetPropertyChanged(object entity, string propertyName)
+        {
+            PropertyInfo pi = GetProperty(entity, propertyName);
+            if (pi == null)
+                throw new ArgumentException("Incorrect property changed");
+
+            if (modifiedProperties[entity] == null || 
+                    ReferenceEquals(propertyChangingSentinal, modifiedProperties[entity]))
+            {
+                modifiedProperties[entity] = new Dictionary<string, MemberInfo>();
+            }
+            modifiedProperties[entity][propertyName] = pi;
+        }
+
+        /// <summary>
+        /// Returns if the entity was modified since it has been Register()ed for the first time
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="metaModel"></param>
+        /// <returns></returns>
+        public bool IsModified(object entity, MetaModel metaModel)
+        {
+            // 1. event notifying case (INotify*)
+            if (IsNotifying(entity))
+                return IsNotifyingModified(entity);
+
+            // 2. raw data
+            return IsRawModified(entity, metaModel);
+        }
+
+        /// <summary>
+        /// Determines whether the specified notifiying entity is modified.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <returns>
+        /// 	<c>true</c> if the specified notifiying entity is modified; otherwise, <c>false</c>.
+        /// </returns>
+        private bool IsNotifyingModified(object entity)
+        {
+            if (!modifiedProperties.ContainsKey(entity) || modifiedProperties[entity] == null)
+                return false;
+            return ReferenceEquals(propertyChangingSentinal, modifiedProperties[entity]) ||
+                modifiedProperties[entity].Count > 0;
+        }
+
+        /// <summary>
+        /// Determines whether the specified property has changed, by comparing its current and previous value.
+        /// </summary>
+        /// <param name="p1">The p1.</param>
+        /// <param name="p2">The p2.</param>
+        /// <returns>
+        /// 	<c>true</c> if the specified property has changed; otherwise, <c>false</c>.
+        /// </returns>
+        private static bool IsPropertyModified(object p1, object p2)
+        {
+            return !Equals(p1, p2);
+        }
+
+        /// <summary>
+        /// Determines whether the specified raw entity has changed.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="metaModel">The meta model.</param>
+        /// <returns>
+        /// 	<c>true</c> if the specified raw entity has changed; otherwise, <c>false</c>.
+        /// </returns>
+        private bool IsRawModified(object entity, MetaModel metaModel)
+        {
+            // if not present, maybe it was inserted (or set to dirty)
+            // TODO: this will be useless when we will support the differential properties
+            if (!rawDataEntities.ContainsKey(entity))
+                return true;
+
+            IDictionary<string, object> originalData = rawDataEntities[entity];
+            IDictionary<string, object> currentData = GetEntityRawData(entity, metaModel);
+
+            foreach (string key in originalData.Keys)
+            {
+                object originalValue = originalData[key];
+                object currentValue = currentData[key];
+                if (IsPropertyModified(originalValue, currentValue))
+                    return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// Returns a list of all modified properties since last Register/ClearModified
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="metaModel"></param>
+        /// <returns></returns>
+        public IList<MemberInfo> GetModifiedProperties(object entity, MetaModel metaModel)
+        {
+            if (IsNotifying(entity))
+                return GetNotifyingModifiedProperties(entity, metaModel);
+
+            return GetRawModifiedProperties(entity, metaModel);
+        }
+
+        /// <summary>
+        /// Gets all column properties.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="metaModel">The meta model.</param>
+        /// <returns></returns>
+        protected IList<MemberInfo> GetAllColumnProperties(object entity, MetaModel metaModel)
+        {
+            if (entity == null)
+                throw new ArgumentNullException("entity");
+            var properties = new List<MemberInfo>(GetColumnMembers(entity.GetType(), metaModel));
+            return properties;
+        }
+
+        /// <summary>
+        /// Gets the self declaring entity modified properties.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="metaModel">The meta model.</param>
+        /// <returns></returns>
+        protected IList<MemberInfo> GetSelfDeclaringModifiedProperties(object entity, MetaModel metaModel)
+        {
+            return GetAllColumnProperties(entity, metaModel);
+        }
+
+        /// <summary>
+        /// Gets the notifying entity modified properties.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="metaModel">The meta model.</param>
+        /// <returns></returns>
+        protected IList<MemberInfo> GetNotifyingModifiedProperties(object entity, MetaModel metaModel)
+        {
+            IDictionary<string, MemberInfo> properties;
+            // if we don't have it, it is fully dirty
+            if (!modifiedProperties.TryGetValue(entity, out properties) || 
+                    ReferenceEquals(propertyChangingSentinal, modifiedProperties[entity]))
+                return GetAllColumnProperties(entity, metaModel);
+            return new List<MemberInfo>(properties.Values);
+        }
+
+        /// <summary>
+        /// Gets modified properties for entity, by using raw compare method.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="metaModel">The meta model.</param>
+        /// <returns></returns>
+        protected IList<MemberInfo> GetRawModifiedProperties(object entity, MetaModel metaModel)
+        {
+            var properties = new List<MemberInfo>();
+
+            IDictionary<string, object> originalData;
+            // if we don't have this entity we consider all its properties as having been modified
+            if (!rawDataEntities.TryGetValue(entity, out originalData))
+                return GetAllColumnProperties(entity, metaModel);
+            var currentData = GetEntityRawData(entity, metaModel);
+
+            // otherwise, we iterate and find what's changed
+            foreach (string key in currentData.Keys)
+            {
+                var currentValue = currentData[key];
+                var originalValue = originalData[key];
+                if (IsPropertyModified(originalValue, currentValue))
+                    properties.Add(GetProperty(entity, key));
+            }
+
+            return properties;
+        }
+
+        /// <summary>
+        /// Marks the entity as not dirty.
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="metaModel"></param>
+        public void ClearModified(object entity, MetaModel metaModel)
+        {
+            if (IsNotifying(entity))
+                ClearNotifyingModified(entity);
+            else
+                ClearRawModified(entity, metaModel);
+        }
+
+        /// <summary>
+        /// Sets the notifying entity as unmodified.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        private void ClearNotifyingModified(object entity)
+        {
+            modifiedProperties[entity] = null;
+        }
+
+        /// <summary>
+        /// Sets the raw entity as unmodified.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="metaModel">The meta model.</param>
+        private void ClearRawModified(object entity, MetaModel metaModel)
+        {
+            rawDataEntities[entity] = GetEntityRawData(entity, metaModel);
+        }
+
+        /// <summary>
+        /// Gets the property, given a property name.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        /// <param name="propertyName">Name of the property.</param>
+        /// <returns></returns>
+        private static PropertyInfo GetProperty(object entity, string propertyName)
+        {
+            return entity.GetType().GetProperty(propertyName);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/QueryProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/QueryProvider.cs
@@ -1,239 +1,239 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Util;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Implementation
-{
-    /// <summary>
-    /// QueryProvider is used by both DataContext and Table
-    /// to build queries
-    /// It is split is two parts (non-generic and generic) for copy reasons
-    /// </summary>
-    internal abstract class QueryProvider
-    {
-        /// <summary>
-        /// Gets or sets the expression chain.
-        /// </summary>
-        /// <value>The expression chain.</value>
-        public ExpressionChain ExpressionChain { get; set; }
-        /// <summary>
-        /// Gets or sets the type of the table.
-        /// </summary>
-        /// <value>The type of the table.</value>
-        public Type TableType { get; set; }
-        /// <summary>
-        /// Gets the query.
-        /// </summary>
-        /// <param name="expression">The expression.</param>
-        /// <returns></returns>
-        public abstract SelectQuery GetQuery(Expression expression);
-    }
-
-    /// <summary>
-    /// QueryProvider, generic version
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    internal class QueryProvider<T> : QueryProvider, IQueryProvider, IQueryable<T>, IOrderedQueryable<T>
-    {
-        /// <summary>
-        /// Holder current datancontext
-        /// </summary>
-        protected readonly DataContext _dataContext;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="QueryProvider&lt;T&gt;"/> class.
-        /// </summary>
-        /// <param name="dataContext">The data context.</param>
-        public QueryProvider(DataContext dataContext)
-        {
-            _dataContext = dataContext;
-            TableType = typeof(T);
-            ExpressionChain = new ExpressionChain();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="QueryProvider&lt;T&gt;"/> class.
-        /// </summary>
-        /// <param name="tableType">Type of the table.</param>
-        /// <param name="dataContext">The data context.</param>
-        /// <param name="expressionChain">The expression chain.</param>
-        /// <param name="expression">The expression.</param>
-        public QueryProvider(Type tableType, DataContext dataContext, ExpressionChain expressionChain, Expression expression)
-        {
-            _dataContext = dataContext;
-            TableType = tableType;
-            ExpressionChain = new ExpressionChain(expressionChain, expression);
-        }
-
-        /// <summary>
-        /// Creates the query.
-        /// </summary>
-        /// <typeparam name="S"></typeparam>
-        /// <param name="t">The t.</param>
-        /// <param name="tableType">Type of the table.</param>
-        /// <param name="dataContext">The data context.</param>
-        /// <param name="expressionChain">The expression chain.</param>
-        /// <param name="expression">The expression.</param>
-        /// <returns></returns>
-        protected S CreateQuery<S>(Type t, Type tableType, DataContext dataContext, ExpressionChain expressionChain, Expression expression)
-        {
-            // no way to work differently
-            var typedQueryProviderType = typeof(QueryProvider<>).MakeGenericType(t);
-            var queryProvider = (S)Activator.CreateInstance(typedQueryProviderType, tableType, dataContext,
-                                                             expressionChain, expression);
-            return queryProvider;
-        }
-
-        /// <summary>
-        /// Builds the query, given a LINQ expression
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public IQueryable CreateQuery(Expression expression)
-        {
-            var type = expression.Type;
-            if (!type.IsGenericType)
-                throw Error.BadArgument("S0066: Don't know how to handle non-generic type '{0}'", type);
-            var genericType = type.GetGenericTypeDefinition();
-            if (genericType == typeof(IQueryable<>) || genericType == typeof(IOrderedQueryable<>))
-                type = type.GetGenericArguments()[0];
-            else
-                Error.BadArgument("S0068: Don't know how to handle type '{0}'", type);
-            return CreateQuery<IQueryable>(type, TableType, _dataContext, ExpressionChain, expression);
-        }
-
-        /// <summary>
-        /// Creates the query.
-        /// </summary>
-        /// <typeparam name="TElement">The type of the element.</typeparam>
-        /// <param name="expression">The expression.</param>
-        /// <returns></returns>
-        public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
-        {
-            Profiler.At("START QueryProvider.CreateQuery<{0}>({1})", typeof(TElement).Name, expression.ToString());
-            var query = new QueryProvider<TElement>(TableType, _dataContext, ExpressionChain, expression);
-            Profiler.At("END QueryProvider.CreateQuery<{0}>(...)", typeof(TElement).Name);
-            return query;
-        }
-
-        /// <summary>
-        /// Gets the query.
-        /// </summary>
-        /// <param name="expression">The expression.</param>
-        /// <returns></returns>
-        public override SelectQuery GetQuery(Expression expression)
-        {
-            var expressionChain = ExpressionChain;
-            if (expression != null)
-                expressionChain = new ExpressionChain(expressionChain, expression);
-            return _dataContext.QueryBuilder.GetSelectQuery(expressionChain, new QueryContext(_dataContext));
-        }
-
-        /// <summary>
-        /// Runs query
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public object Execute(Expression expression)
-        {
-            return this.GetType()
-                .GetMethods()
-                .Where(m => m.Name == "Execute" && m.IsGenericMethod)
-                .Single()
-                .MakeGenericMethod(new Type[] { expression.Type })
-                .Invoke(this, new object[] { expression });
-        }
-
-        /// <summary>
-        /// Runs query
-        /// </summary>
-        /// <typeparam name="TResult"></typeparam>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public TResult Execute<TResult>(Expression expression)
-        {
-            Profiler.At("START QueryProvider.Execute<{0}>(): Executing expression...", typeof(TResult).Name);
-            var query = GetQuery(expression);
-            var result = _dataContext.QueryRunner.SelectScalar<TResult>(query);
-            Profiler.At("END QueryProvider.Execute<{0}>(): Executing expression...", typeof(TResult).Name);
-            return result;
-        }
-
-        /// <summary>
-        /// Enumerates all query items
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            var enumerator = GetEnumerator();
-            return enumerator;
-        }
-
-        /// <summary>
-        /// Enumerates all query items
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerator<T> GetEnumerator()
-        {
-            Profiler.At("START QueryProvider.GetEnumerator<{0}>(): Executing expression...", typeof(T).Name);
-            var query = GetQuery(null);
-            var enumerator = _dataContext.QueryRunner.Select<T>(query).GetEnumerator();
-            Profiler.At("END QueryProvider.GetEnumerator<{0}>(): Executing expression...", typeof(T).Name);
-            return enumerator;
-        }
-
-        /// <summary>
-        /// Returns this QueryProvider as an exception
-        /// </summary>
-        public Expression Expression
-        {
-            get { return Expression.Constant(this); }
-        }
-
-        public Type ElementType
-        {
-            get { return (typeof(T)); }
-        }
-
-        public IQueryProvider Provider
-        {
-            get { return this; }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Util;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Implementation
+{
+    /// <summary>
+    /// QueryProvider is used by both DataContext and Table
+    /// to build queries
+    /// It is split is two parts (non-generic and generic) for copy reasons
+    /// </summary>
+    internal abstract class QueryProvider
+    {
+        /// <summary>
+        /// Gets or sets the expression chain.
+        /// </summary>
+        /// <value>The expression chain.</value>
+        public ExpressionChain ExpressionChain { get; set; }
+        /// <summary>
+        /// Gets or sets the type of the table.
+        /// </summary>
+        /// <value>The type of the table.</value>
+        public Type TableType { get; set; }
+        /// <summary>
+        /// Gets the query.
+        /// </summary>
+        /// <param name="expression">The expression.</param>
+        /// <returns></returns>
+        public abstract SelectQuery GetQuery(Expression expression);
+    }
+
+    /// <summary>
+    /// QueryProvider, generic version
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    internal class QueryProvider<T> : QueryProvider, IQueryProvider, IQueryable<T>, IOrderedQueryable<T>
+    {
+        /// <summary>
+        /// Holder current datancontext
+        /// </summary>
+        protected readonly DataContext _dataContext;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="QueryProvider&lt;T&gt;"/> class.
+        /// </summary>
+        /// <param name="dataContext">The data context.</param>
+        public QueryProvider(DataContext dataContext)
+        {
+            _dataContext = dataContext;
+            TableType = typeof(T);
+            ExpressionChain = new ExpressionChain();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="QueryProvider&lt;T&gt;"/> class.
+        /// </summary>
+        /// <param name="tableType">Type of the table.</param>
+        /// <param name="dataContext">The data context.</param>
+        /// <param name="expressionChain">The expression chain.</param>
+        /// <param name="expression">The expression.</param>
+        public QueryProvider(Type tableType, DataContext dataContext, ExpressionChain expressionChain, Expression expression)
+        {
+            _dataContext = dataContext;
+            TableType = tableType;
+            ExpressionChain = new ExpressionChain(expressionChain, expression);
+        }
+
+        /// <summary>
+        /// Creates the query.
+        /// </summary>
+        /// <typeparam name="S"></typeparam>
+        /// <param name="t">The t.</param>
+        /// <param name="tableType">Type of the table.</param>
+        /// <param name="dataContext">The data context.</param>
+        /// <param name="expressionChain">The expression chain.</param>
+        /// <param name="expression">The expression.</param>
+        /// <returns></returns>
+        protected S CreateQuery<S>(Type t, Type tableType, DataContext dataContext, ExpressionChain expressionChain, Expression expression)
+        {
+            // no way to work differently
+            var typedQueryProviderType = typeof(QueryProvider<>).MakeGenericType(t);
+            var queryProvider = (S)Activator.CreateInstance(typedQueryProviderType, tableType, dataContext,
+                                                             expressionChain, expression);
+            return queryProvider;
+        }
+
+        /// <summary>
+        /// Builds the query, given a LINQ expression
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public IQueryable CreateQuery(Expression expression)
+        {
+            var type = expression.Type;
+            if (!type.IsGenericType)
+                throw Error.BadArgument("S0066: Don't know how to handle non-generic type '{0}'", type);
+            var genericType = type.GetGenericTypeDefinition();
+            if (genericType == typeof(IQueryable<>) || genericType == typeof(IOrderedQueryable<>))
+                type = type.GetGenericArguments()[0];
+            else
+                Error.BadArgument("S0068: Don't know how to handle type '{0}'", type);
+            return CreateQuery<IQueryable>(type, TableType, _dataContext, ExpressionChain, expression);
+        }
+
+        /// <summary>
+        /// Creates the query.
+        /// </summary>
+        /// <typeparam name="TElement">The type of the element.</typeparam>
+        /// <param name="expression">The expression.</param>
+        /// <returns></returns>
+        public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
+        {
+            Profiler.At("START QueryProvider.CreateQuery<{0}>({1})", typeof(TElement).Name, expression.ToString());
+            var query = new QueryProvider<TElement>(TableType, _dataContext, ExpressionChain, expression);
+            Profiler.At("END QueryProvider.CreateQuery<{0}>(...)", typeof(TElement).Name);
+            return query;
+        }
+
+        /// <summary>
+        /// Gets the query.
+        /// </summary>
+        /// <param name="expression">The expression.</param>
+        /// <returns></returns>
+        public override SelectQuery GetQuery(Expression expression)
+        {
+            var expressionChain = ExpressionChain;
+            if (expression != null)
+                expressionChain = new ExpressionChain(expressionChain, expression);
+            return _dataContext.QueryBuilder.GetSelectQuery(expressionChain, new QueryContext(_dataContext));
+        }
+
+        /// <summary>
+        /// Runs query
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public object Execute(Expression expression)
+        {
+            return this.GetType()
+                .GetMethods()
+                .Where(m => m.Name == "Execute" && m.IsGenericMethod)
+                .Single()
+                .MakeGenericMethod(new Type[] { expression.Type })
+                .Invoke(this, new object[] { expression });
+        }
+
+        /// <summary>
+        /// Runs query
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public TResult Execute<TResult>(Expression expression)
+        {
+            Profiler.At("START QueryProvider.Execute<{0}>(): Executing expression...", typeof(TResult).Name);
+            var query = GetQuery(expression);
+            var result = _dataContext.QueryRunner.SelectScalar<TResult>(query);
+            Profiler.At("END QueryProvider.Execute<{0}>(): Executing expression...", typeof(TResult).Name);
+            return result;
+        }
+
+        /// <summary>
+        /// Enumerates all query items
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            var enumerator = GetEnumerator();
+            return enumerator;
+        }
+
+        /// <summary>
+        /// Enumerates all query items
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerator<T> GetEnumerator()
+        {
+            Profiler.At("START QueryProvider.GetEnumerator<{0}>(): Executing expression...", typeof(T).Name);
+            var query = GetQuery(null);
+            var enumerator = _dataContext.QueryRunner.Select<T>(query).GetEnumerator();
+            Profiler.At("END QueryProvider.GetEnumerator<{0}>(): Executing expression...", typeof(T).Name);
+            return enumerator;
+        }
+
+        /// <summary>
+        /// Returns this QueryProvider as an exception
+        /// </summary>
+        public Expression Expression
+        {
+            get { return Expression.Constant(this); }
+        }
+
+        public Type ElementType
+        {
+            get { return (typeof(T)); }
+        }
+
+        public IQueryProvider Provider
+        {
+            get { return this; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/VendorProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Implementation/VendorProvider.cs
@@ -1,82 +1,82 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using DbLinq.Util;
-using DbLinq.Vendor;
-
-namespace DbLinq.Data.Linq.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    class VendorProvider : IVendorProvider
-    {
-        private readonly IDictionary<Type, Type> _vendorByType = new Dictionary<Type, Type>();
-
-        /// <summary>
-        /// Finds a IVendor implementation instance by provider type
-        /// </summary>
-        /// <param name="providerType"></param>
-        /// <returns></returns>
-        public IVendor FindVendorByProviderType(Type providerType)
-        {
-            Type vendorType;
-            lock (_vendorByType)
-            {
-                if (!_vendorByType.TryGetValue(providerType, out vendorType))
-                {
-                    // the strategy is:
-                    // we parse the current AppDomain...
-                    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
-                    {
-                        foreach (var type in assembly.GetTypes())
-                        {
-                            // ... then look for an IVendor implementation ...
-                            if (typeof(IVendor).IsAssignableFrom(type))
-                            {
-                                // then see if the attribute matches the request
-                                var vendorAttribute = type.GetAttribute<VendorAttribute>();
-                                if (vendorAttribute != null)
-                                {
-                                    foreach (var vendorProviderType in vendorAttribute.ProviderTypes)
-                                        _vendorByType[vendorProviderType] = type;
-                                }
-                            }
-                        }
-                    }
-                    _vendorByType.TryGetValue(providerType, out vendorType);
-                }
-            }
-            if (vendorType != null)
-                return (IVendor)Activator.CreateInstance(vendorType);
-            return null;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using DbLinq.Util;
+using DbLinq.Vendor;
+
+namespace DbLinq.Data.Linq.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    class VendorProvider : IVendorProvider
+    {
+        private readonly IDictionary<Type, Type> _vendorByType = new Dictionary<Type, Type>();
+
+        /// <summary>
+        /// Finds a IVendor implementation instance by provider type
+        /// </summary>
+        /// <param name="providerType"></param>
+        /// <returns></returns>
+        public IVendor FindVendorByProviderType(Type providerType)
+        {
+            Type vendorType;
+            lock (_vendorByType)
+            {
+                if (!_vendorByType.TryGetValue(providerType, out vendorType))
+                {
+                    // the strategy is:
+                    // we parse the current AppDomain...
+                    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
+                    {
+                        foreach (var type in assembly.GetTypes())
+                        {
+                            // ... then look for an IVendor implementation ...
+                            if (typeof(IVendor).IsAssignableFrom(type))
+                            {
+                                // then see if the attribute matches the request
+                                var vendorAttribute = type.GetAttribute<VendorAttribute>();
+                                if (vendorAttribute != null)
+                                {
+                                    foreach (var vendorProviderType in vendorAttribute.ProviderTypes)
+                                        _vendorByType[vendorProviderType] = type;
+                                }
+                            }
+                        }
+                    }
+                    _vendorByType.TryGetValue(providerType, out vendorType);
+                }
+            }
+            if (vendorType != null)
+                return (IVendor)Activator.CreateInstance(vendorType);
+            return null;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributeMappingSource.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributeMappingSource.cs
@@ -1,46 +1,46 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data.Linq.Mapping;
-
-using DbLinq.Data.Linq.Mapping;
-
-#if MONO_STRICT
-namespace System.Data.Linq.Mapping
-#else
-namespace DbLinq.Data.Linq.Mapping
-#endif
-{
-    public sealed class AttributeMappingSource : MappingSource
-    {
-        protected override MetaModel CreateModel(Type dataContextType)
-        {
-            var metaModel = new AttributedMetaModel(dataContextType, this);
-            return metaModel;
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data.Linq.Mapping;
+
+using DbLinq.Data.Linq.Mapping;
+
+#if MONO_STRICT
+namespace System.Data.Linq.Mapping
+#else
+namespace DbLinq.Data.Linq.Mapping
+#endif
+{
+    public sealed class AttributeMappingSource : MappingSource
+    {
+        protected override MetaModel CreateModel(Type dataContextType)
+        {
+            var metaModel = new AttributedMetaModel(dataContextType, this);
+            return metaModel;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedAbstractMetaDataMember.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedAbstractMetaDataMember.cs
@@ -1,132 +1,132 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    internal abstract class AttributedAbstractMetaDataMember : MetaDataMember
-    {
-		protected AttributedAbstractMetaDataMember(MemberInfo member, MetaType declaringType, DataAttribute attribute)
-		{
-			memberInfo = member;
-			memberAccessor = LambdaMetaAccessor.Create(member, declaringType.Type);
-			this.declaringType = declaringType;
-			
-			if(attribute.Storage != null)
-			{
-				storageMember = member.DeclaringType.GetSingleMember(attribute.Storage);
-				if (storageMember != null)
-					storageAccessor = LambdaMetaAccessor.Create(storageMember, declaringType.Type);
-			}
-		}
-
-        protected MemberInfo memberInfo;
-        protected MetaType declaringType;
-		protected MetaAccessor memberAccessor;
-		protected MetaAccessor storageAccessor;
-
-        public override MetaType DeclaringType
-        {
-            get { return declaringType; }
-        }
-
-        public override MetaAccessor DeferredSourceAccessor
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaAccessor DeferredValueAccessor
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool IsDeferred
-        {
-            get { return false; }
-        }
-
-        public override bool IsPersistent
-        {
-            get { return true; }
-        }
-
-        public override MethodInfo LoadMethod
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MemberInfo Member
-        {
-            get { return memberInfo; }
-        }
-
-        public override MetaAccessor MemberAccessor
-        {
-            get { return memberAccessor; }
-        }
-
-        public override string Name
-        {
-            get { return memberInfo.Name; }
-        }
-
-        public override int Ordinal
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaAccessor StorageAccessor
-        {
-            get { return storageAccessor; }
-        }
-
-        public override Type Type
-        {
-            get { return memberInfo.GetMemberType(); }
-        }
-
-        public override UpdateCheck UpdateCheck
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool IsDeclaredBy(MetaType type)
-        {
-            return type == declaringType;
-        }
-
-        protected MemberInfo storageMember;
-        public override MemberInfo StorageMember
-        {
-            get { return storageMember; }
-        }
-
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    internal abstract class AttributedAbstractMetaDataMember : MetaDataMember
+    {
+		protected AttributedAbstractMetaDataMember(MemberInfo member, MetaType declaringType, DataAttribute attribute)
+		{
+			memberInfo = member;
+			memberAccessor = LambdaMetaAccessor.Create(member, declaringType.Type);
+			this.declaringType = declaringType;
+			
+			if(attribute.Storage != null)
+			{
+				storageMember = member.DeclaringType.GetSingleMember(attribute.Storage);
+				if (storageMember != null)
+					storageAccessor = LambdaMetaAccessor.Create(storageMember, declaringType.Type);
+			}
+		}
+
+        protected MemberInfo memberInfo;
+        protected MetaType declaringType;
+		protected MetaAccessor memberAccessor;
+		protected MetaAccessor storageAccessor;
+
+        public override MetaType DeclaringType
+        {
+            get { return declaringType; }
+        }
+
+        public override MetaAccessor DeferredSourceAccessor
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaAccessor DeferredValueAccessor
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool IsDeferred
+        {
+            get { return false; }
+        }
+
+        public override bool IsPersistent
+        {
+            get { return true; }
+        }
+
+        public override MethodInfo LoadMethod
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MemberInfo Member
+        {
+            get { return memberInfo; }
+        }
+
+        public override MetaAccessor MemberAccessor
+        {
+            get { return memberAccessor; }
+        }
+
+        public override string Name
+        {
+            get { return memberInfo.Name; }
+        }
+
+        public override int Ordinal
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaAccessor StorageAccessor
+        {
+            get { return storageAccessor; }
+        }
+
+        public override Type Type
+        {
+            get { return memberInfo.GetMemberType(); }
+        }
+
+        public override UpdateCheck UpdateCheck
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool IsDeclaredBy(MetaType type)
+        {
+            return type == declaringType;
+        }
+
+        protected MemberInfo storageMember;
+        public override MemberInfo StorageMember
+        {
+            get { return storageMember; }
+        }
+
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedAssociationMetaDataMember.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedAssociationMetaDataMember.cs
@@ -1,106 +1,106 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    internal class AttributedAssociationMetaDataMember : AttributedAbstractMetaDataMember
-    {
-        public AttributedAssociationMetaDataMember(MemberInfo member, AssociationAttribute attribute, MetaType declaringType)
-            : base(member, declaringType, attribute)
-        {
-            associationAttribute = attribute;
-        }
-
-        public void SetAssociation(MetaAssociation association)
-        {
-            metaAssociation = association;
-        }
-
-        private AssociationAttribute associationAttribute;
-        private MetaAssociation metaAssociation;
-
-        public override MetaAssociation Association
-        {
-            get { return metaAssociation; }
-        }
-
-        public override AutoSync AutoSync
-        {
-            // TODO: check this is the right value
-            get { return AutoSync.Never; }
-        }
-
-        public override bool CanBeNull
-        {
-            get { return false; }
-        }
-
-        public override string DbType
-        {
-            get { return string.Empty; }
-        }
-
-        public override string Expression
-        {
-            get { return string.Empty; }
-        }
-
-        public override bool IsAssociation
-        {
-            get { return true; }
-        }
-
-        public override bool IsDbGenerated
-        {
-            get { return false; }
-        }
-
-        public override bool IsDiscriminator
-        {
-            get { return false; }
-        }
-
-        public override bool IsPrimaryKey
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool IsVersion
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override string MappedName
-        {
-            get { return associationAttribute.Name ?? Member.Name; }
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    internal class AttributedAssociationMetaDataMember : AttributedAbstractMetaDataMember
+    {
+        public AttributedAssociationMetaDataMember(MemberInfo member, AssociationAttribute attribute, MetaType declaringType)
+            : base(member, declaringType, attribute)
+        {
+            associationAttribute = attribute;
+        }
+
+        public void SetAssociation(MetaAssociation association)
+        {
+            metaAssociation = association;
+        }
+
+        private AssociationAttribute associationAttribute;
+        private MetaAssociation metaAssociation;
+
+        public override MetaAssociation Association
+        {
+            get { return metaAssociation; }
+        }
+
+        public override AutoSync AutoSync
+        {
+            // TODO: check this is the right value
+            get { return AutoSync.Never; }
+        }
+
+        public override bool CanBeNull
+        {
+            get { return false; }
+        }
+
+        public override string DbType
+        {
+            get { return string.Empty; }
+        }
+
+        public override string Expression
+        {
+            get { return string.Empty; }
+        }
+
+        public override bool IsAssociation
+        {
+            get { return true; }
+        }
+
+        public override bool IsDbGenerated
+        {
+            get { return false; }
+        }
+
+        public override bool IsDiscriminator
+        {
+            get { return false; }
+        }
+
+        public override bool IsPrimaryKey
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool IsVersion
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override string MappedName
+        {
+            get { return associationAttribute.Name ?? Member.Name; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedColumnMetaDataMember.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedColumnMetaDataMember.cs
@@ -1,102 +1,102 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data.Linq.Mapping;
-using System.Diagnostics;
-using System.Reflection;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    [DebuggerDisplay("MetaDataMember for {MappedName}")]
-    internal class AttributedColumnMetaDataMember : AttributedAbstractMetaDataMember
-    {
-		public AttributedColumnMetaDataMember(MemberInfo member, ColumnAttribute attribute, MetaType declaringType)
-            : base(member, declaringType, attribute)
-        {
-            columnAttribute = attribute;
-            if (columnAttribute.Name == null)
-                columnAttribute.Name = memberInfo.Name;
-        }
-
-        private ColumnAttribute columnAttribute;
-
-        public override MetaAssociation Association
-        {
-            get { return null; }
-        }
-
-        public override AutoSync AutoSync
-        {
-            get { return columnAttribute.AutoSync; }
-        }
-
-        public override bool CanBeNull
-        {
-            get { return columnAttribute.CanBeNull; }
-        }
-
-        public override string DbType
-        {
-            get { return columnAttribute.DbType; }
-        }
-
-        public override string Expression
-        {
-            get { return columnAttribute.Expression; }
-        }
-
-        public override bool IsAssociation
-        {
-            get { return false; }
-        }
-
-        public override bool IsDbGenerated
-        {
-            get { return columnAttribute.IsDbGenerated; }
-        }
-
-        public override bool IsDiscriminator
-        {
-            get { return columnAttribute.IsDiscriminator; }
-        }
-
-        public override bool IsPrimaryKey
-        {
-            get { return columnAttribute.IsPrimaryKey; }
-        }
-
-        public override bool IsVersion
-        {
-            get { return columnAttribute.IsVersion; }
-        }
-
-        public override string MappedName
-        {
-            get { return columnAttribute.Name ?? Member.Name; }
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data.Linq.Mapping;
+using System.Diagnostics;
+using System.Reflection;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    [DebuggerDisplay("MetaDataMember for {MappedName}")]
+    internal class AttributedColumnMetaDataMember : AttributedAbstractMetaDataMember
+    {
+		public AttributedColumnMetaDataMember(MemberInfo member, ColumnAttribute attribute, MetaType declaringType)
+            : base(member, declaringType, attribute)
+        {
+            columnAttribute = attribute;
+            if (columnAttribute.Name == null)
+                columnAttribute.Name = memberInfo.Name;
+        }
+
+        private ColumnAttribute columnAttribute;
+
+        public override MetaAssociation Association
+        {
+            get { return null; }
+        }
+
+        public override AutoSync AutoSync
+        {
+            get { return columnAttribute.AutoSync; }
+        }
+
+        public override bool CanBeNull
+        {
+            get { return columnAttribute.CanBeNull; }
+        }
+
+        public override string DbType
+        {
+            get { return columnAttribute.DbType; }
+        }
+
+        public override string Expression
+        {
+            get { return columnAttribute.Expression; }
+        }
+
+        public override bool IsAssociation
+        {
+            get { return false; }
+        }
+
+        public override bool IsDbGenerated
+        {
+            get { return columnAttribute.IsDbGenerated; }
+        }
+
+        public override bool IsDiscriminator
+        {
+            get { return columnAttribute.IsDiscriminator; }
+        }
+
+        public override bool IsPrimaryKey
+        {
+            get { return columnAttribute.IsPrimaryKey; }
+        }
+
+        public override bool IsVersion
+        {
+            get { return columnAttribute.IsVersion; }
+        }
+
+        public override string MappedName
+        {
+            get { return columnAttribute.Name ?? Member.Name; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaAssociation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaAssociation.cs
@@ -1,218 +1,218 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.ObjectModel;
-using System.Data.Linq.Mapping;
-using System.Linq;
-using System.Reflection;
-using DbLinq.Util;
-using System.Collections.Generic;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    internal class AttributedMetaAssociation : MetaAssociation
-    {
-		//Seperator used for key lists
-		private static readonly char[] STRING_SEPERATOR =  new[] { ',' };
-
-		private static string AttributeNameNullCheck (AssociationAttribute attribute)
-		{
-			if ( attribute == null )
-				return null;
-			else
-				return attribute.Name;
-		}
-
-        public AttributedMetaAssociation(MemberInfo member, AssociationAttribute attribute, MetaDataMember metaDataMember)
-        {
-            _memberInfo = member;
-            _associationAttribute = attribute;
-            _thisMember = metaDataMember;
-			// The bug described here:
-			// https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=376669
-			// says that under certain conditions, there's a bug where _otherMember == _thisMember
-			// Not only is there no point in reproducing a MS bug, it's not as simple as simply setting _otherMember = metaDataMember
-			Type otherType = _memberInfo.GetFirstInnerReturnType();
-			string associationName = member.GetAttribute<AssociationAttribute>().Name;
-			AttributedMetaType ownedMetaType = metaDataMember.DeclaringType.Model.GetMetaType(otherType) as AttributedMetaType;
-
-			if ( ownedMetaType == null )
-				throw new InvalidOperationException("Key in referenced table is of a different SQL MetaData provider");
-
-			_otherMember = ownedMetaType.AssociationsLookup[otherType.GetMembers().Where(m => (AttributeNameNullCheck(m.GetAttribute<AssociationAttribute>()) == associationName) && (m != member)).Single()];
-        }
-
-		/// <summary>
-		/// Returns a list of keys from the given meta type based on the key list string.
-		/// </summary>
-		/// <param name="keyListString">The key list string.</param>
-		/// <param name="parentType">Type of the parent.</param>
-		/// <returns></returns>
-		private static ReadOnlyCollection<MetaDataMember> GetKeys(string keyListString, MetaType parentType)
-		{
-			if(keyListString != null)
-			{
-				var thisKeyList = new List<MetaDataMember>();
-
-				string[] keyNames = keyListString.Split(STRING_SEPERATOR, StringSplitOptions.RemoveEmptyEntries);
-
-				foreach (string rawKeyName in keyNames)
-				{
-					string keyName = rawKeyName.Trim();
-
-					//TODO: maybe speed the lookup up
-					MetaDataMember key = (from dataMember in parentType.PersistentDataMembers
-					             where dataMember.Name == keyName
-					             select dataMember).SingleOrDefault();
-
-					if(key == null)
-					{
-						string errorMessage = string.Format("Could not find key member '{0}' of key '{1}' on type '{2}'. The key may be wrong or the field or property on '{2}' has changed names.",
-							keyName, keyListString, parentType.Type.Name);
-
-						throw new InvalidOperationException(errorMessage);
-					}
-
-					thisKeyList.Add(key);
-				}
-
-				return new ReadOnlyCollection<MetaDataMember>(thisKeyList);
-			}
-			else //Key is the primary key of this table
-			{
-				return parentType.IdentityMembers;
-			}
-		}
-
-        private AssociationAttribute _associationAttribute;
-        private MemberInfo _memberInfo;
-
-        public override bool DeleteOnNull
-        {
-            get { return _associationAttribute.DeleteOnNull; }
-        }
-
-        public override string DeleteRule
-        {
-            get { return _associationAttribute.DeleteRule; }
-        }
-
-        public override bool IsForeignKey
-        {
-            get { return _associationAttribute.IsForeignKey; }
-        }
-
-        public override bool IsMany
-        {
-            get
-            {
-                throw new System.NotImplementedException();
-            }
-        }
-
-        public override bool IsNullable
-        {
-            get { return _memberInfo.GetMemberType().CanBeNull(); }
-        }
-
-        public override bool IsUnique
-        {
-            get { return _associationAttribute.IsUnique; }
-        }
-
-        private ReadOnlyCollection<MetaDataMember> _otherKeys;
-        public override ReadOnlyCollection<MetaDataMember> OtherKey
-        {
-            get {
-                if (_otherKeys == null)
-                {
-                    //Get the association target type
-                    var targetType = _memberInfo.GetFirstInnerReturnType();
-
-                    var otherTable = ThisMember.DeclaringType.Model.GetTable(targetType);
-
-                    //Setup other key
-                    _otherKeys = GetKeys(_associationAttribute.OtherKey, otherTable.RowType);
-                }
-                return _otherKeys;
-            }
-        }
-
-        public override bool OtherKeyIsPrimaryKey
-        {
-            get
-            {
-                foreach (var otherKey in OtherKey)
-                {
-                    if (!otherKey.IsPrimaryKey)
-                        return false;
-                }
-                return true;
-            }
-        }
-
-        private MetaDataMember _otherMember;
-        public override MetaDataMember OtherMember
-        {
-            get { return _otherMember; }
-        }
-
-        public override MetaType OtherType
-        {
-            get { return _otherMember.DeclaringType; }
-        }
-
-        private ReadOnlyCollection<MetaDataMember> _thisKey;
-        public override ReadOnlyCollection<MetaDataMember> ThisKey
-        {
-            get {
-                if (_thisKey == null)
-                    _thisKey = GetKeys(_associationAttribute.ThisKey, ThisMember.DeclaringType);
-                return _thisKey;
-            }
-        }
-
-        public override bool ThisKeyIsPrimaryKey
-        {
-            get
-            {
-                foreach (var thisKey in _thisKey)
-                {
-                    if (!thisKey.IsPrimaryKey)
-                        return false;
-                }
-                return true;
-            }
-        }
-
-        private MetaDataMember _thisMember;
-        public override MetaDataMember ThisMember
-        {
-            get { return _thisMember; }
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.ObjectModel;
+using System.Data.Linq.Mapping;
+using System.Linq;
+using System.Reflection;
+using DbLinq.Util;
+using System.Collections.Generic;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    internal class AttributedMetaAssociation : MetaAssociation
+    {
+		//Seperator used for key lists
+		private static readonly char[] STRING_SEPERATOR =  new[] { ',' };
+
+		private static string AttributeNameNullCheck (AssociationAttribute attribute)
+		{
+			if ( attribute == null )
+				return null;
+			else
+				return attribute.Name;
+		}
+
+        public AttributedMetaAssociation(MemberInfo member, AssociationAttribute attribute, MetaDataMember metaDataMember)
+        {
+            _memberInfo = member;
+            _associationAttribute = attribute;
+            _thisMember = metaDataMember;
+			// The bug described here:
+			// https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=376669
+			// says that under certain conditions, there's a bug where _otherMember == _thisMember
+			// Not only is there no point in reproducing a MS bug, it's not as simple as simply setting _otherMember = metaDataMember
+			Type otherType = _memberInfo.GetFirstInnerReturnType();
+			string associationName = member.GetAttribute<AssociationAttribute>().Name;
+			AttributedMetaType ownedMetaType = metaDataMember.DeclaringType.Model.GetMetaType(otherType) as AttributedMetaType;
+
+			if ( ownedMetaType == null )
+				throw new InvalidOperationException("Key in referenced table is of a different SQL MetaData provider");
+
+			_otherMember = ownedMetaType.AssociationsLookup[otherType.GetMembers().Where(m => (AttributeNameNullCheck(m.GetAttribute<AssociationAttribute>()) == associationName) && (m != member)).Single()];
+        }
+
+		/// <summary>
+		/// Returns a list of keys from the given meta type based on the key list string.
+		/// </summary>
+		/// <param name="keyListString">The key list string.</param>
+		/// <param name="parentType">Type of the parent.</param>
+		/// <returns></returns>
+		private static ReadOnlyCollection<MetaDataMember> GetKeys(string keyListString, MetaType parentType)
+		{
+			if(keyListString != null)
+			{
+				var thisKeyList = new List<MetaDataMember>();
+
+				string[] keyNames = keyListString.Split(STRING_SEPERATOR, StringSplitOptions.RemoveEmptyEntries);
+
+				foreach (string rawKeyName in keyNames)
+				{
+					string keyName = rawKeyName.Trim();
+
+					//TODO: maybe speed the lookup up
+					MetaDataMember key = (from dataMember in parentType.PersistentDataMembers
+					             where dataMember.Name == keyName
+					             select dataMember).SingleOrDefault();
+
+					if(key == null)
+					{
+						string errorMessage = string.Format("Could not find key member '{0}' of key '{1}' on type '{2}'. The key may be wrong or the field or property on '{2}' has changed names.",
+							keyName, keyListString, parentType.Type.Name);
+
+						throw new InvalidOperationException(errorMessage);
+					}
+
+					thisKeyList.Add(key);
+				}
+
+				return new ReadOnlyCollection<MetaDataMember>(thisKeyList);
+			}
+			else //Key is the primary key of this table
+			{
+				return parentType.IdentityMembers;
+			}
+		}
+
+        private AssociationAttribute _associationAttribute;
+        private MemberInfo _memberInfo;
+
+        public override bool DeleteOnNull
+        {
+            get { return _associationAttribute.DeleteOnNull; }
+        }
+
+        public override string DeleteRule
+        {
+            get { return _associationAttribute.DeleteRule; }
+        }
+
+        public override bool IsForeignKey
+        {
+            get { return _associationAttribute.IsForeignKey; }
+        }
+
+        public override bool IsMany
+        {
+            get
+            {
+                throw new System.NotImplementedException();
+            }
+        }
+
+        public override bool IsNullable
+        {
+            get { return _memberInfo.GetMemberType().CanBeNull(); }
+        }
+
+        public override bool IsUnique
+        {
+            get { return _associationAttribute.IsUnique; }
+        }
+
+        private ReadOnlyCollection<MetaDataMember> _otherKeys;
+        public override ReadOnlyCollection<MetaDataMember> OtherKey
+        {
+            get {
+                if (_otherKeys == null)
+                {
+                    //Get the association target type
+                    var targetType = _memberInfo.GetFirstInnerReturnType();
+
+                    var otherTable = ThisMember.DeclaringType.Model.GetTable(targetType);
+
+                    //Setup other key
+                    _otherKeys = GetKeys(_associationAttribute.OtherKey, otherTable.RowType);
+                }
+                return _otherKeys;
+            }
+        }
+
+        public override bool OtherKeyIsPrimaryKey
+        {
+            get
+            {
+                foreach (var otherKey in OtherKey)
+                {
+                    if (!otherKey.IsPrimaryKey)
+                        return false;
+                }
+                return true;
+            }
+        }
+
+        private MetaDataMember _otherMember;
+        public override MetaDataMember OtherMember
+        {
+            get { return _otherMember; }
+        }
+
+        public override MetaType OtherType
+        {
+            get { return _otherMember.DeclaringType; }
+        }
+
+        private ReadOnlyCollection<MetaDataMember> _thisKey;
+        public override ReadOnlyCollection<MetaDataMember> ThisKey
+        {
+            get {
+                if (_thisKey == null)
+                    _thisKey = GetKeys(_associationAttribute.ThisKey, ThisMember.DeclaringType);
+                return _thisKey;
+            }
+        }
+
+        public override bool ThisKeyIsPrimaryKey
+        {
+            get
+            {
+                foreach (var thisKey in _thisKey)
+                {
+                    if (!thisKey.IsPrimaryKey)
+                        return false;
+                }
+                return true;
+            }
+        }
+
+        private MetaDataMember _thisMember;
+        public override MetaDataMember ThisMember
+        {
+            get { return _thisMember; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaFunction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaFunction.cs
@@ -1,91 +1,91 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.ObjectModel;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    internal class AttributedMetaFunction : MetaFunction
-    {
-        public AttributedMetaFunction(MethodInfo method, FunctionAttribute attribute)
-        {
-            functionAttribute = attribute;
-            methodInfo = method;
-        }
-
-        private MethodInfo methodInfo;
-        private readonly FunctionAttribute functionAttribute;
-
-        //private bool hasMultipleResults;
-        public override bool HasMultipleResults
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool IsComposable
-        {
-            get { return functionAttribute.IsComposable; }
-        }
-
-        public override string MappedName
-        {
-            get { return functionAttribute.Name; }
-        }
-
-        public override MethodInfo Method
-        {
-            get { return methodInfo; }
-        }
-
-        public override MetaModel Model
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override string Name
-        {
-            get { return methodInfo.Name; }
-        }
-
-        public override ReadOnlyCollection<MetaParameter> Parameters
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override ReadOnlyCollection<MetaType> ResultRowTypes
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaParameter ReturnParameter
-        {
-            get { throw new NotImplementedException(); }
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.ObjectModel;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    internal class AttributedMetaFunction : MetaFunction
+    {
+        public AttributedMetaFunction(MethodInfo method, FunctionAttribute attribute)
+        {
+            functionAttribute = attribute;
+            methodInfo = method;
+        }
+
+        private MethodInfo methodInfo;
+        private readonly FunctionAttribute functionAttribute;
+
+        //private bool hasMultipleResults;
+        public override bool HasMultipleResults
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool IsComposable
+        {
+            get { return functionAttribute.IsComposable; }
+        }
+
+        public override string MappedName
+        {
+            get { return functionAttribute.Name; }
+        }
+
+        public override MethodInfo Method
+        {
+            get { return methodInfo; }
+        }
+
+        public override MetaModel Model
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override string Name
+        {
+            get { return methodInfo.Name; }
+        }
+
+        public override ReadOnlyCollection<MetaParameter> Parameters
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override ReadOnlyCollection<MetaType> ResultRowTypes
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaParameter ReturnParameter
+        {
+            get { throw new NotImplementedException(); }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaModel.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaModel.cs
@@ -1,259 +1,259 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data.Linq.Mapping;
-using System.Diagnostics;
-using System.Linq;
-using System.Reflection;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using DbLinq.Data.Linq.Mapping;
-using DbLinq.Util;
-
-//Change notes:
-//removed virtual init call from constructor
-//renamed member variables to be better distinguishable from local variables
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    /// <summary>
-    /// This class is a stateless attribute meta model (it does not depend on any provider)
-    /// So the MappingSource can use singletons
-    /// </summary>
-    [DebuggerDisplay("MetaModel for {DatabaseName}")]
-    internal class AttributedMetaModel : MetaModel
-	{
-		private readonly Type _ContextType;
-
-		/// <summary>
-		/// The DataContext (or a derived type) that is used for this model.
-		/// </summary>
-		public override Type ContextType
-		{
-			get { return _ContextType; }
-		}
-
-
-		// just because of this, the whole model can not be cached efficiently, since we can not guarantee
-		// that another mapping source instance will not use the same model
-		private MappingSource _MappingSource;
-
-		/// <summary>
-		/// The mapping source used for that model.
-		/// </summary>
-		public override MappingSource MappingSource
-		{
-			get { return _MappingSource; }
-		}
-
-
-		private string _DatabaseName;
-
-		/// <summary>
-		/// Name of the database.
-		/// </summary>
-		/// <remarks>
-		/// The name of the database is the type name of the DataContext inheriting class.
-		/// If a plain DataContext is used, the database name is "DataContext".
-		/// </remarks>
-		public override string DatabaseName
-		{
-			get {
-                if (_DatabaseName == null)
-                    DiscoverDatabaseName();
-                return _DatabaseName;
-            }
-		}
-
-
-		//Currently not implemented Properties
-		public override Type ProviderType
-		{
-			get { throw new NotImplementedException(); }
-		}
-
-		//This function will try to add unknown table types
-		private IDictionary<Type, MetaTable> _Tables = new Dictionary<Type, MetaTable>();
-
-		/// <summary>
-		/// Initializes a new instance of the <see cref="AttributedMetaModel"/> class.
-		/// </summary>
-		/// <param name="contextType">DataContext type used.</param>
-		/// <param name="mappingSource">The mapping source.</param>
-        public AttributedMetaModel(Type contextType, MappingSource mappingSource)
-        {
-            _ContextType = contextType;
-            _MappingSource = mappingSource;
-        }
-
-		/// <summary>
-		/// Gets the <see cref="MetaFunction"/> for the given MethodInfo.
-		/// </summary>
-		/// <param name="method">The method info for which the <see cref="MetaFunction"/> should be returned.</param>
-        public override MetaFunction GetFunction(MethodInfo method)
-        {
-            return GetFunctions().SingleOrDefault(m => m.Method == method);
-        }
-
-		/// <summary>
-		/// Returns an enumeration of all mapped functions.
-		/// </summary>
-        public override IEnumerable<MetaFunction> GetFunctions()
-        {
-            const BindingFlags scope = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
-            foreach (var methodInfo in _ContextType.GetMethods(scope))
-            {
-                var function = methodInfo.GetAttribute<FunctionAttribute>();
-                if (function != null)
-                    yield return new AttributedMetaFunction(methodInfo, function);
-            }
-        }
-
-        public override MetaType GetMetaType(Type type)
-        {
-            var metaTable = GetTable(type);
-            if (metaTable == null)
-                return null;
-            return metaTable.RowType;
-        }
-
-		/// <summary>
-		/// Returns the <see cref="MetaTable"/> for the given table type.
-		/// </summary>
-		/// <remarks>
-		/// If the given type is not allready mapped it tries to map it.
-		/// </remarks>
-		/// <param name="tableType"><see cref="MetaTable"/> for the table type or null if not mappable.</param>
-		public override MetaTable GetTable(Type tableType)
-		{
-			MetaTable metaTable;
-			_Tables.TryGetValue(tableType, out metaTable);
-			if (metaTable != null)
-			{
-				return metaTable;
-			}
-			return GetTables().FirstOrDefault(t => t.RowType.Type == tableType)
-				?? AddTableType(tableType);
-		}
-
-		/// <summary>
-		/// Returns an enumeration of all mapped tables.
-		/// </summary>
-        //Discover all the tables used with this context, used for the GetTable/GetTables function
-        //Behaviour of GetTables in the Framework: STRANGE
-        //If the DataContext was a strong typed one (derived with fields for the tables),
-        //it returns a list of MetaTables for all this tables.
-        //But if you call GetTable<T> with an additional table - the table doesn't get added to this list.
-        //If you use a vanilla DataContext the list is empty at the beginning (ok no surprise here),
-        //if you call GetTable<T> here the table is added to the list.
-        //
-        //If you add to properties with the same T of Table<T> only the first gets into the list.
-        public override IEnumerable<MetaTable> GetTables()
-        {
-            const BindingFlags scope = BindingFlags.GetField |
-                BindingFlags.GetProperty | BindingFlags.Static |
-                BindingFlags.Instance | BindingFlags.NonPublic |
-                BindingFlags.Public;
-            var seen = new HashSet<Type>();
-            foreach (var info in _ContextType.GetMembers(scope))
-            {
-                // Only look for Fields & Properties.
-                if (info.MemberType != MemberTypes.Field && info.MemberType != MemberTypes.Property)
-                    continue;
-                Type memberType = info.GetMemberType();
-
-                if (memberType == null || !memberType.IsGenericType ||
-                        memberType.GetGenericTypeDefinition() != typeof(Table<>))
-                    continue;
-                var tableType = memberType.GetGenericArguments()[0];
-                if (tableType.IsGenericParameter)
-                    continue;
-                if (seen.Contains(tableType))
-                    continue;
-                seen.Add(tableType);
-
-                MetaTable metaTable;
-                if (_Tables.TryGetValue(tableType, out metaTable))
-                  yield return metaTable;
-                else
-                  yield return AddTableType(tableType);
-            }
-        }
-
-		/// <summary>
-		/// Tries to discover the name of the database.
-		/// Database name == class name of the DataContext's most derived class used for this MetaModel.
-		/// </summary>
-		private void DiscoverDatabaseName()
-		{
-			var databaseAttribute = _ContextType.GetAttribute<DatabaseAttribute>();
-			if (databaseAttribute != null)
-			{
-				_DatabaseName = databaseAttribute.Name;
-			}
-			else //Found no DatabaseAttribute get the class name
-			{
-				_DatabaseName = _ContextType.Name;
-			}
-		}
-
-		/// <summary>
-		/// Adds the table of the given type to the mappings.
-		/// </summary>
-		/// <remarks>
-		/// The given type must have a <see cref="TableAttribute" /> to be mappable.
-		/// </remarks>
-		/// <param name="tableType">Type of the table.</param>
-		/// <returns>
-		/// Returns the <see cref="MetaTable"/> for the given table type or null if it is not mappable.
-		/// </returns>
-		private MetaTable AddTableType(Type tableType)
-		{
-			//No need to check base types because framework implementation doesn't do this either
-			var tableAttribute = tableType.GetAttribute<TableAttribute>();
-
-			if (tableAttribute == null)
-			{
-				return null;
-			}
-
-			//First set up the table without associations
-			var metaType = new AttributedMetaType(tableType);
-			var metaTable = new AttributedMetaTable(tableAttribute, metaType, this);
-			metaType.SetMetaTable(metaTable);
-			_Tables[tableType] = metaTable;
-
-			return metaTable;
-		}
-	}
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data.Linq.Mapping;
+using System.Diagnostics;
+using System.Linq;
+using System.Reflection;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using DbLinq.Data.Linq.Mapping;
+using DbLinq.Util;
+
+//Change notes:
+//removed virtual init call from constructor
+//renamed member variables to be better distinguishable from local variables
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    /// <summary>
+    /// This class is a stateless attribute meta model (it does not depend on any provider)
+    /// So the MappingSource can use singletons
+    /// </summary>
+    [DebuggerDisplay("MetaModel for {DatabaseName}")]
+    internal class AttributedMetaModel : MetaModel
+	{
+		private readonly Type _ContextType;
+
+		/// <summary>
+		/// The DataContext (or a derived type) that is used for this model.
+		/// </summary>
+		public override Type ContextType
+		{
+			get { return _ContextType; }
+		}
+
+
+		// just because of this, the whole model can not be cached efficiently, since we can not guarantee
+		// that another mapping source instance will not use the same model
+		private MappingSource _MappingSource;
+
+		/// <summary>
+		/// The mapping source used for that model.
+		/// </summary>
+		public override MappingSource MappingSource
+		{
+			get { return _MappingSource; }
+		}
+
+
+		private string _DatabaseName;
+
+		/// <summary>
+		/// Name of the database.
+		/// </summary>
+		/// <remarks>
+		/// The name of the database is the type name of the DataContext inheriting class.
+		/// If a plain DataContext is used, the database name is "DataContext".
+		/// </remarks>
+		public override string DatabaseName
+		{
+			get {
+                if (_DatabaseName == null)
+                    DiscoverDatabaseName();
+                return _DatabaseName;
+            }
+		}
+
+
+		//Currently not implemented Properties
+		public override Type ProviderType
+		{
+			get { throw new NotImplementedException(); }
+		}
+
+		//This function will try to add unknown table types
+		private IDictionary<Type, MetaTable> _Tables = new Dictionary<Type, MetaTable>();
+
+		/// <summary>
+		/// Initializes a new instance of the <see cref="AttributedMetaModel"/> class.
+		/// </summary>
+		/// <param name="contextType">DataContext type used.</param>
+		/// <param name="mappingSource">The mapping source.</param>
+        public AttributedMetaModel(Type contextType, MappingSource mappingSource)
+        {
+            _ContextType = contextType;
+            _MappingSource = mappingSource;
+        }
+
+		/// <summary>
+		/// Gets the <see cref="MetaFunction"/> for the given MethodInfo.
+		/// </summary>
+		/// <param name="method">The method info for which the <see cref="MetaFunction"/> should be returned.</param>
+        public override MetaFunction GetFunction(MethodInfo method)
+        {
+            return GetFunctions().SingleOrDefault(m => m.Method == method);
+        }
+
+		/// <summary>
+		/// Returns an enumeration of all mapped functions.
+		/// </summary>
+        public override IEnumerable<MetaFunction> GetFunctions()
+        {
+            const BindingFlags scope = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
+            foreach (var methodInfo in _ContextType.GetMethods(scope))
+            {
+                var function = methodInfo.GetAttribute<FunctionAttribute>();
+                if (function != null)
+                    yield return new AttributedMetaFunction(methodInfo, function);
+            }
+        }
+
+        public override MetaType GetMetaType(Type type)
+        {
+            var metaTable = GetTable(type);
+            if (metaTable == null)
+                return null;
+            return metaTable.RowType;
+        }
+
+		/// <summary>
+		/// Returns the <see cref="MetaTable"/> for the given table type.
+		/// </summary>
+		/// <remarks>
+		/// If the given type is not allready mapped it tries to map it.
+		/// </remarks>
+		/// <param name="tableType"><see cref="MetaTable"/> for the table type or null if not mappable.</param>
+		public override MetaTable GetTable(Type tableType)
+		{
+			MetaTable metaTable;
+			_Tables.TryGetValue(tableType, out metaTable);
+			if (metaTable != null)
+			{
+				return metaTable;
+			}
+			return GetTables().FirstOrDefault(t => t.RowType.Type == tableType)
+				?? AddTableType(tableType);
+		}
+
+		/// <summary>
+		/// Returns an enumeration of all mapped tables.
+		/// </summary>
+        //Discover all the tables used with this context, used for the GetTable/GetTables function
+        //Behaviour of GetTables in the Framework: STRANGE
+        //If the DataContext was a strong typed one (derived with fields for the tables),
+        //it returns a list of MetaTables for all this tables.
+        //But if you call GetTable<T> with an additional table - the table doesn't get added to this list.
+        //If you use a vanilla DataContext the list is empty at the beginning (ok no surprise here),
+        //if you call GetTable<T> here the table is added to the list.
+        //
+        //If you add to properties with the same T of Table<T> only the first gets into the list.
+        public override IEnumerable<MetaTable> GetTables()
+        {
+            const BindingFlags scope = BindingFlags.GetField |
+                BindingFlags.GetProperty | BindingFlags.Static |
+                BindingFlags.Instance | BindingFlags.NonPublic |
+                BindingFlags.Public;
+            var seen = new HashSet<Type>();
+            foreach (var info in _ContextType.GetMembers(scope))
+            {
+                // Only look for Fields & Properties.
+                if (info.MemberType != MemberTypes.Field && info.MemberType != MemberTypes.Property)
+                    continue;
+                Type memberType = info.GetMemberType();
+
+                if (memberType == null || !memberType.IsGenericType ||
+                        memberType.GetGenericTypeDefinition() != typeof(Table<>))
+                    continue;
+                var tableType = memberType.GetGenericArguments()[0];
+                if (tableType.IsGenericParameter)
+                    continue;
+                if (seen.Contains(tableType))
+                    continue;
+                seen.Add(tableType);
+
+                MetaTable metaTable;
+                if (_Tables.TryGetValue(tableType, out metaTable))
+                  yield return metaTable;
+                else
+                  yield return AddTableType(tableType);
+            }
+        }
+
+		/// <summary>
+		/// Tries to discover the name of the database.
+		/// Database name == class name of the DataContext's most derived class used for this MetaModel.
+		/// </summary>
+		private void DiscoverDatabaseName()
+		{
+			var databaseAttribute = _ContextType.GetAttribute<DatabaseAttribute>();
+			if (databaseAttribute != null)
+			{
+				_DatabaseName = databaseAttribute.Name;
+			}
+			else //Found no DatabaseAttribute get the class name
+			{
+				_DatabaseName = _ContextType.Name;
+			}
+		}
+
+		/// <summary>
+		/// Adds the table of the given type to the mappings.
+		/// </summary>
+		/// <remarks>
+		/// The given type must have a <see cref="TableAttribute" /> to be mappable.
+		/// </remarks>
+		/// <param name="tableType">Type of the table.</param>
+		/// <returns>
+		/// Returns the <see cref="MetaTable"/> for the given table type or null if it is not mappable.
+		/// </returns>
+		private MetaTable AddTableType(Type tableType)
+		{
+			//No need to check base types because framework implementation doesn't do this either
+			var tableAttribute = tableType.GetAttribute<TableAttribute>();
+
+			if (tableAttribute == null)
+			{
+				return null;
+			}
+
+			//First set up the table without associations
+			var metaType = new AttributedMetaType(tableType);
+			var metaTable = new AttributedMetaTable(tableAttribute, metaType, this);
+			metaType.SetMetaTable(metaTable);
+			_Tables[tableType] = metaTable;
+
+			return metaTable;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaTable.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaTable.cs
@@ -1,88 +1,88 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data.Linq.Mapping;
-using System.Diagnostics;
-using System.Reflection;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    [DebuggerDisplay("MetaTable for {TableName}")]
-    internal class AttributedMetaTable : MetaTable
-    {
-        public AttributedMetaTable(TableAttribute attribute, MetaType type, MetaModel model)
-        {
-            _tableAttribute = attribute;
-            _metaType = type;
-        	_containingModel = model;
-
-			//If the attribute doesn't specify a table name the name of the table class is used
-			if(attribute.Name != null)
-			{
-				_tableName = attribute.Name;
-			}
-			else
-			{
-				_tableName = type.Name;
-			}
-        }
-
-        private TableAttribute _tableAttribute;
-        private MetaType _metaType;
-    	private MetaModel _containingModel;
-    	private readonly string _tableName;
-
-        public override MethodInfo DeleteMethod
-        {
-            get { throw new System.NotImplementedException(); }
-        }
-
-        public override MethodInfo InsertMethod
-        {
-            get { throw new System.NotImplementedException(); }
-        }
-
-        public override MetaModel Model
-        {
-            get { return _containingModel; }
-        }
-
-        public override MetaType RowType
-        {
-            get { return _metaType; }
-        }
-
-        public override string TableName
-        {
-            get { return _tableName; }
-        }
-
-        public override MethodInfo UpdateMethod
-        {
-            get { throw new System.NotImplementedException(); }
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data.Linq.Mapping;
+using System.Diagnostics;
+using System.Reflection;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    [DebuggerDisplay("MetaTable for {TableName}")]
+    internal class AttributedMetaTable : MetaTable
+    {
+        public AttributedMetaTable(TableAttribute attribute, MetaType type, MetaModel model)
+        {
+            _tableAttribute = attribute;
+            _metaType = type;
+        	_containingModel = model;
+
+			//If the attribute doesn't specify a table name the name of the table class is used
+			if(attribute.Name != null)
+			{
+				_tableName = attribute.Name;
+			}
+			else
+			{
+				_tableName = type.Name;
+			}
+        }
+
+        private TableAttribute _tableAttribute;
+        private MetaType _metaType;
+    	private MetaModel _containingModel;
+    	private readonly string _tableName;
+
+        public override MethodInfo DeleteMethod
+        {
+            get { throw new System.NotImplementedException(); }
+        }
+
+        public override MethodInfo InsertMethod
+        {
+            get { throw new System.NotImplementedException(); }
+        }
+
+        public override MetaModel Model
+        {
+            get { return _containingModel; }
+        }
+
+        public override MetaType RowType
+        {
+            get { return _metaType; }
+        }
+
+        public override string TableName
+        {
+            get { return _tableName; }
+        }
+
+        public override MethodInfo UpdateMethod
+        {
+            get { throw new System.NotImplementedException(); }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/AttributedMetaType.cs
@@ -1,276 +1,276 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.ObjectModel;
-using System.Data.Linq.Mapping;
-using System.Diagnostics;
-using System.Linq;
-using System.Reflection;
-using DbLinq.Util;
-using System.Collections.Generic;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    [DebuggerDisplay("MetaType for {Name}")]
-    internal class AttributedMetaType : MetaType
-    {
-        internal AttributedMetaType(Type classType)
-        {
-            type = classType;
-
-			AssociationsLookup = new Dictionary<MemberInfo, MetaDataMember>();
-			_AssociationFixupList = new List<AssociationData>();
-
-			//First add the member to the AssociationsLookup table, because creation of the Association will cause both meta classes to look each other up, or possibly a self lookup
-			//We'll also cache the association data in _AssociationFixupList to be used by GetAssociations
-			foreach (var memberInfo in type.GetMembers())
-			{
-				var association = memberInfo.GetAttribute<AssociationAttribute>();
-				if (association == null)
-					continue;
-				var dataMember = new AttributedAssociationMetaDataMember(memberInfo, association, this);
-				AssociationsLookup[memberInfo] = dataMember;
-				_AssociationFixupList.Add(new AssociationData() { Association = association, Member = memberInfo, DataMember = dataMember });
-			}
-        }
-
-        internal void SetMetaTable(MetaTable metaTable)
-        {
-            table = metaTable;
-        }
-
-        private ReadOnlyCollection<MetaAssociation> _associations;
-        public override ReadOnlyCollection<MetaAssociation> Associations
-        {
-            get {
-                if (_associations == null)
-                {
-                    _associations = GetAssociations().ToList().AsReadOnly();
-                }
-                return _associations;
-            }
-        }
-
-		private class AssociationData
-		{
-			public AssociationAttribute Association;
-			public MemberInfo Member;
-			public AttributedAssociationMetaDataMember DataMember;
-		}
-
-        private IEnumerable<MetaAssociation> GetAssociations()
-        {
-			//We can clear our fixup list as we're now going to convert it to the association list
-			var associationFixupList = _AssociationFixupList;
-			_AssociationFixupList = null;
-
-			foreach (AssociationData data in associationFixupList)
-			{
-				var metaAssociation = new AttributedMetaAssociation(data.Member, data.Association, data.DataMember);
-				data.DataMember.SetAssociation(metaAssociation);
-                yield return metaAssociation;
-			}
-        }
-
-        public override bool CanInstantiate
-        {
-            // TODO: shall we expect something else?
-            get { return true; }
-        }
-
-        private ReadOnlyCollection<MetaDataMember> dataMembers;
-        public override ReadOnlyCollection<MetaDataMember> DataMembers
-        {
-            get {
-                if (dataMembers == null)
-                {
-                    dataMembers =
-                        (from m in type.GetMembers()
-                         let c = m.GetAttribute<ColumnAttribute>()
-                         where c != null
-                         select (MetaDataMember) new AttributedColumnMetaDataMember(m, c, this))
-                        .ToList().AsReadOnly();
-                }
-                return dataMembers;
-            }
-        }
-
-        public override MetaDataMember DBGeneratedIdentityMember
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override ReadOnlyCollection<MetaType> DerivedTypes
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaDataMember Discriminator
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaDataMember GetDataMember(MemberInfo member)
-        {
-            // TODO: optimize?
-            // A tip to know the MemberInfo for the same member is not the same when declared from a class and its inheritor
-            return (from m in PersistentDataMembers where m.Member.Name == member.Name select m).SingleOrDefault();
-        }
-
-        public override MetaType GetInheritanceType(Type baseType)
-        {
-            throw new NotImplementedException();
-        }
-
-        public override MetaType GetTypeForInheritanceCode(object code)
-        {
-            throw new NotImplementedException();
-        }
-
-        public override bool HasAnyLoadMethod
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool HasAnyValidateMethod
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool HasInheritance
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool HasInheritanceCode
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool HasUpdateCheck
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        private ReadOnlyCollection<MetaDataMember> identityMembers;
-        public override ReadOnlyCollection<MetaDataMember> IdentityMembers
-        {
-            get {
-                if (identityMembers == null)
-                    identityMembers =
-                        DataMembers.Where(m => m.IsPrimaryKey).ToList().AsReadOnly();
-                return identityMembers; 
-            }
-        }
-
-        public override MetaType InheritanceBase
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override object InheritanceCode
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaType InheritanceDefault
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaType InheritanceRoot
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override ReadOnlyCollection<MetaType> InheritanceTypes
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override bool IsEntity
-        {
-            get { return true; }
-        }
-
-        public override bool IsInheritanceDefault
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MetaModel Model
-        {
-            get { return Table.Model; }
-        }
-
-        public override string Name
-        {
-            get { return type.Name; }
-        }
-
-        public override MethodInfo OnLoadedMethod
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public override MethodInfo OnValidateMethod
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-    	private ReadOnlyCollection<MetaDataMember> _persistentDataMembers;
-        public override ReadOnlyCollection<MetaDataMember> PersistentDataMembers
-        {
-            get {
-                if (_persistentDataMembers == null)
-                    _persistentDataMembers =
-                        DataMembers.Where(m => m.IsPersistent).ToList().AsReadOnly();
-                return _persistentDataMembers;
-            }
-        }
-
-        private MetaTable table;
-        public override MetaTable Table
-        {
-            get { return table; }
-        }
-
-        private readonly Type type;
-        public override Type Type
-        {
-            get { return type; }
-        }
-
-        public override MetaDataMember VersionMember
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-		internal Dictionary<MemberInfo, MetaDataMember> AssociationsLookup;
-		private List<AssociationData> _AssociationFixupList;
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.ObjectModel;
+using System.Data.Linq.Mapping;
+using System.Diagnostics;
+using System.Linq;
+using System.Reflection;
+using DbLinq.Util;
+using System.Collections.Generic;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    [DebuggerDisplay("MetaType for {Name}")]
+    internal class AttributedMetaType : MetaType
+    {
+        internal AttributedMetaType(Type classType)
+        {
+            type = classType;
+
+			AssociationsLookup = new Dictionary<MemberInfo, MetaDataMember>();
+			_AssociationFixupList = new List<AssociationData>();
+
+			//First add the member to the AssociationsLookup table, because creation of the Association will cause both meta classes to look each other up, or possibly a self lookup
+			//We'll also cache the association data in _AssociationFixupList to be used by GetAssociations
+			foreach (var memberInfo in type.GetMembers())
+			{
+				var association = memberInfo.GetAttribute<AssociationAttribute>();
+				if (association == null)
+					continue;
+				var dataMember = new AttributedAssociationMetaDataMember(memberInfo, association, this);
+				AssociationsLookup[memberInfo] = dataMember;
+				_AssociationFixupList.Add(new AssociationData() { Association = association, Member = memberInfo, DataMember = dataMember });
+			}
+        }
+
+        internal void SetMetaTable(MetaTable metaTable)
+        {
+            table = metaTable;
+        }
+
+        private ReadOnlyCollection<MetaAssociation> _associations;
+        public override ReadOnlyCollection<MetaAssociation> Associations
+        {
+            get {
+                if (_associations == null)
+                {
+                    _associations = GetAssociations().ToList().AsReadOnly();
+                }
+                return _associations;
+            }
+        }
+
+		private class AssociationData
+		{
+			public AssociationAttribute Association;
+			public MemberInfo Member;
+			public AttributedAssociationMetaDataMember DataMember;
+		}
+
+        private IEnumerable<MetaAssociation> GetAssociations()
+        {
+			//We can clear our fixup list as we're now going to convert it to the association list
+			var associationFixupList = _AssociationFixupList;
+			_AssociationFixupList = null;
+
+			foreach (AssociationData data in associationFixupList)
+			{
+				var metaAssociation = new AttributedMetaAssociation(data.Member, data.Association, data.DataMember);
+				data.DataMember.SetAssociation(metaAssociation);
+                yield return metaAssociation;
+			}
+        }
+
+        public override bool CanInstantiate
+        {
+            // TODO: shall we expect something else?
+            get { return true; }
+        }
+
+        private ReadOnlyCollection<MetaDataMember> dataMembers;
+        public override ReadOnlyCollection<MetaDataMember> DataMembers
+        {
+            get {
+                if (dataMembers == null)
+                {
+                    dataMembers =
+                        (from m in type.GetMembers()
+                         let c = m.GetAttribute<ColumnAttribute>()
+                         where c != null
+                         select (MetaDataMember) new AttributedColumnMetaDataMember(m, c, this))
+                        .ToList().AsReadOnly();
+                }
+                return dataMembers;
+            }
+        }
+
+        public override MetaDataMember DBGeneratedIdentityMember
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override ReadOnlyCollection<MetaType> DerivedTypes
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaDataMember Discriminator
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaDataMember GetDataMember(MemberInfo member)
+        {
+            // TODO: optimize?
+            // A tip to know the MemberInfo for the same member is not the same when declared from a class and its inheritor
+            return (from m in PersistentDataMembers where m.Member.Name == member.Name select m).SingleOrDefault();
+        }
+
+        public override MetaType GetInheritanceType(Type baseType)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override MetaType GetTypeForInheritanceCode(object code)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override bool HasAnyLoadMethod
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool HasAnyValidateMethod
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool HasInheritance
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool HasInheritanceCode
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool HasUpdateCheck
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        private ReadOnlyCollection<MetaDataMember> identityMembers;
+        public override ReadOnlyCollection<MetaDataMember> IdentityMembers
+        {
+            get {
+                if (identityMembers == null)
+                    identityMembers =
+                        DataMembers.Where(m => m.IsPrimaryKey).ToList().AsReadOnly();
+                return identityMembers; 
+            }
+        }
+
+        public override MetaType InheritanceBase
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override object InheritanceCode
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaType InheritanceDefault
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaType InheritanceRoot
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override ReadOnlyCollection<MetaType> InheritanceTypes
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override bool IsEntity
+        {
+            get { return true; }
+        }
+
+        public override bool IsInheritanceDefault
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MetaModel Model
+        {
+            get { return Table.Model; }
+        }
+
+        public override string Name
+        {
+            get { return type.Name; }
+        }
+
+        public override MethodInfo OnLoadedMethod
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+        public override MethodInfo OnValidateMethod
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+    	private ReadOnlyCollection<MetaDataMember> _persistentDataMembers;
+        public override ReadOnlyCollection<MetaDataMember> PersistentDataMembers
+        {
+            get {
+                if (_persistentDataMembers == null)
+                    _persistentDataMembers =
+                        DataMembers.Where(m => m.IsPersistent).ToList().AsReadOnly();
+                return _persistentDataMembers;
+            }
+        }
+
+        private MetaTable table;
+        public override MetaTable Table
+        {
+            get { return table; }
+        }
+
+        private readonly Type type;
+        public override Type Type
+        {
+            get { return type; }
+        }
+
+        public override MetaDataMember VersionMember
+        {
+            get { throw new NotImplementedException(); }
+        }
+
+		internal Dictionary<MemberInfo, MetaDataMember> AssociationsLookup;
+		private List<AssociationData> _AssociationFixupList;
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/LambdaMetaAccessor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/LambdaMetaAccessor.cs
@@ -1,118 +1,118 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Text;
-using System.Reflection;
-using System.Data.Linq.Mapping;
-using System.Reflection.Emit;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-	static class LambdaMetaAccessor
-	{
-		//This will go away with C# 4.0 ActionExpression
-		static Delegate MakeSetter(MemberInfo member, Type memberType, Type declaringType)
-		{
-			Type delegateType = typeof(Action<,>).MakeGenericType(declaringType, memberType);
-
-			switch (member.MemberType)
-			{
-				case MemberTypes.Property: {
-                    MethodInfo method = ((PropertyInfo)member).GetSetMethod();
-                    if (method != null)
-                        return Delegate.CreateDelegate(delegateType, method);
-                    var ca = member.GetCustomAttributes(typeof(ColumnAttribute), true)[0] as ColumnAttribute;
-                    member = declaringType.GetField(ca.Storage,
-                        BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
-                    goto case MemberTypes.Field;
-                }
-				case MemberTypes.Field:
-					{
-						DynamicMethod m = new DynamicMethod("setter", 
-                            typeof(void), 
-                            new Type[] { declaringType, memberType },
-                            true);
-						ILGenerator cg = m.GetILGenerator();
-					
-						// arg0.<field> = arg1
-						cg.Emit(OpCodes.Ldarg_0);
-						cg.Emit(OpCodes.Ldarg_1);
-						cg.Emit(OpCodes.Stfld, (FieldInfo)member);
-						cg.Emit(OpCodes.Ret);
-					
-						return m.CreateDelegate(delegateType);
-					}
-				case MemberTypes.Method:
-					 return Delegate.CreateDelegate(delegateType, (MethodInfo)member);
-				default:
-					throw new InvalidOperationException();
-			}
-		}
-
-		public static MetaAccessor Create(MemberInfo member, Type declaringType)
-		{
-			Type memberType;
-			switch (member.MemberType)
-			{
-				case MemberTypes.Property:
-					memberType = ((PropertyInfo)member).PropertyType;
-					break;
-				case MemberTypes.Field:
-					memberType = ((FieldInfo)member).FieldType;
-					break;
-				case MemberTypes.Method:
-					memberType = ((MethodInfo)member).ReturnType;
-					break;
-				default:
-					throw new InvalidOperationException();
-			}
-			Type accessorType = typeof(LambdaMetaAccessor<,>).MakeGenericType(declaringType, memberType);
-			
-			ParameterExpression p = Expression.Parameter(declaringType, "e");
-			return (MetaAccessor)Activator.CreateInstance(accessorType, new object[]{ 
-				Expression.Lambda(Expression.MakeMemberAccess(p, member), p).Compile(),
-				MakeSetter(member, memberType, declaringType) }
-			);
-		}
-	}
-
-	class LambdaMetaAccessor<TEntity, TMember> : MetaAccessor<TEntity, TMember>
-	{
-		Func<TEntity, TMember> _Accessor;
-		Action<TEntity, TMember> _Setter;
-
-		public LambdaMetaAccessor(Func<TEntity, TMember> accessor, Action<TEntity, TMember> setter)
-		{
-			_Accessor = accessor;
-			_Setter = setter;
-		}
-
-		//
-		// Summary:
-		//     Specifies the strongly typed value.
-		//
-		// Parameters:
-		//   instance:
-		//     The instance from which to get the value.
-		public override TMember GetValue(TEntity instance)
-		{
-			return _Accessor(instance);
-		}
-
-		//
-		// Summary:
-		//     Specifies an instance on which to set the strongly typed value.
-		//
-		// Parameters:
-		//   instance:
-		//     The instance into which to set the value.
-		//
-		//   value:
-		//     The strongly typed value to set.
-		public override void SetValue(ref TEntity instance, TMember value)
-		{
-			_Setter(instance, value);
-		}
-	}
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Reflection;
+using System.Data.Linq.Mapping;
+using System.Reflection.Emit;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+	static class LambdaMetaAccessor
+	{
+		//This will go away with C# 4.0 ActionExpression
+		static Delegate MakeSetter(MemberInfo member, Type memberType, Type declaringType)
+		{
+			Type delegateType = typeof(Action<,>).MakeGenericType(declaringType, memberType);
+
+			switch (member.MemberType)
+			{
+				case MemberTypes.Property: {
+                    MethodInfo method = ((PropertyInfo)member).GetSetMethod();
+                    if (method != null)
+                        return Delegate.CreateDelegate(delegateType, method);
+                    var ca = member.GetCustomAttributes(typeof(ColumnAttribute), true)[0] as ColumnAttribute;
+                    member = declaringType.GetField(ca.Storage,
+                        BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+                    goto case MemberTypes.Field;
+                }
+				case MemberTypes.Field:
+					{
+						DynamicMethod m = new DynamicMethod("setter", 
+                            typeof(void), 
+                            new Type[] { declaringType, memberType },
+                            true);
+						ILGenerator cg = m.GetILGenerator();
+					
+						// arg0.<field> = arg1
+						cg.Emit(OpCodes.Ldarg_0);
+						cg.Emit(OpCodes.Ldarg_1);
+						cg.Emit(OpCodes.Stfld, (FieldInfo)member);
+						cg.Emit(OpCodes.Ret);
+					
+						return m.CreateDelegate(delegateType);
+					}
+				case MemberTypes.Method:
+					 return Delegate.CreateDelegate(delegateType, (MethodInfo)member);
+				default:
+					throw new InvalidOperationException();
+			}
+		}
+
+		public static MetaAccessor Create(MemberInfo member, Type declaringType)
+		{
+			Type memberType;
+			switch (member.MemberType)
+			{
+				case MemberTypes.Property:
+					memberType = ((PropertyInfo)member).PropertyType;
+					break;
+				case MemberTypes.Field:
+					memberType = ((FieldInfo)member).FieldType;
+					break;
+				case MemberTypes.Method:
+					memberType = ((MethodInfo)member).ReturnType;
+					break;
+				default:
+					throw new InvalidOperationException();
+			}
+			Type accessorType = typeof(LambdaMetaAccessor<,>).MakeGenericType(declaringType, memberType);
+			
+			ParameterExpression p = Expression.Parameter(declaringType, "e");
+			return (MetaAccessor)Activator.CreateInstance(accessorType, new object[]{ 
+				Expression.Lambda(Expression.MakeMemberAccess(p, member), p).Compile(),
+				MakeSetter(member, memberType, declaringType) }
+			);
+		}
+	}
+
+	class LambdaMetaAccessor<TEntity, TMember> : MetaAccessor<TEntity, TMember>
+	{
+		Func<TEntity, TMember> _Accessor;
+		Action<TEntity, TMember> _Setter;
+
+		public LambdaMetaAccessor(Func<TEntity, TMember> accessor, Action<TEntity, TMember> setter)
+		{
+			_Accessor = accessor;
+			_Setter = setter;
+		}
+
+		//
+		// Summary:
+		//     Specifies the strongly typed value.
+		//
+		// Parameters:
+		//   instance:
+		//     The instance from which to get the value.
+		public override TMember GetValue(TEntity instance)
+		{
+			return _Accessor(instance);
+		}
+
+		//
+		// Summary:
+		//     Specifies an instance on which to set the strongly typed value.
+		//
+		// Parameters:
+		//   instance:
+		//     The instance into which to set the value.
+		//
+		//   value:
+		//     The strongly typed value to set.
+		public override void SetValue(ref TEntity instance, TMember value)
+		{
+			_Setter(instance, value);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/MappingContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/MappingContext.cs
@@ -1,91 +1,91 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace DbLinq.Data.Linq.Mapping
-{
-    /// <summary>
-    /// MappingContext is used during the mapping process
-    /// it contains events and properties give to mapper.
-    /// There is one default instance in DataContext.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class MappingContext
-    {
-#if MONO_STRICT
-    internal
-#else
-        public
-#endif
-        delegate void GenerateSqlDelegate(object sender, ref string sql);
-#if MONO_STRICT
-    internal
-#else
-        public
-#endif
-        delegate void GetAsDelegate<T>(object sender, ref T value, Type tableType, int columnIndex);
-
-        /// <summary>
-        /// Called when a genereated SQL command is about to be executed
-        /// </summary>
-        public event GenerateSqlDelegate GenerateSql;
-
-        /// <summary>
-        /// Called when the target field is a string
-        /// </summary>
-        public event GetAsDelegate<string> GetAsString;
-
-        /// <summary>
-        /// Called when the target field is an object
-        /// </summary>
-        public event GetAsDelegate<object> GetAsObject;
-
-        #region event senders
-
-        public void OnGenerateSql(object sender, ref string sql)
-        {
-            if (GenerateSql != null)
-                GenerateSql(sender, ref sql);
-        }
-
-        public void OnGetAsString(object sender, ref string value, Type tableType, int columnIndex)
-        {
-            if (GetAsString != null)
-                GetAsString(sender, ref value, tableType, columnIndex);
-        }
-
-        public void OnGetAsObject(object sender, ref object value, Type tableType, int columnIndex)
-        {
-            if (GetAsObject != null)
-                GetAsObject(sender, ref value, tableType, columnIndex);
-        }
-
-        #endregion
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace DbLinq.Data.Linq.Mapping
+{
+    /// <summary>
+    /// MappingContext is used during the mapping process
+    /// it contains events and properties give to mapper.
+    /// There is one default instance in DataContext.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class MappingContext
+    {
+#if MONO_STRICT
+    internal
+#else
+        public
+#endif
+        delegate void GenerateSqlDelegate(object sender, ref string sql);
+#if MONO_STRICT
+    internal
+#else
+        public
+#endif
+        delegate void GetAsDelegate<T>(object sender, ref T value, Type tableType, int columnIndex);
+
+        /// <summary>
+        /// Called when a genereated SQL command is about to be executed
+        /// </summary>
+        public event GenerateSqlDelegate GenerateSql;
+
+        /// <summary>
+        /// Called when the target field is a string
+        /// </summary>
+        public event GetAsDelegate<string> GetAsString;
+
+        /// <summary>
+        /// Called when the target field is an object
+        /// </summary>
+        public event GetAsDelegate<object> GetAsObject;
+
+        #region event senders
+
+        public void OnGenerateSql(object sender, ref string sql)
+        {
+            if (GenerateSql != null)
+                GenerateSql(sender, ref sql);
+        }
+
+        public void OnGetAsString(object sender, ref string value, Type tableType, int columnIndex)
+        {
+            if (GetAsString != null)
+                GetAsString(sender, ref value, tableType, columnIndex);
+        }
+
+        public void OnGetAsObject(object sender, ref object value, Type tableType, int columnIndex)
+        {
+            if (GetAsObject != null)
+                GetAsObject(sender, ref value, tableType, columnIndex);
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/XmlMappingSource.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Mapping/XmlMappingSource.cs
@@ -1,1190 +1,1190 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-#region grammar
-/* ----------------
-default namespace = "http://schemas.microsoft.com/linqtosql/mapping/2007"
-grammar {
-
-start = element Database { Database }
-
-Database = {
-  element Table { Table }*,
-  element Function { Function }*,
-  attribute Name { text }?,
-  attribute Provider { text }?
-}
-
-Table = {
-  element Type { Type },
-  attribute Name { text }?,
-  attribute Member { text }?
-}
-
-Type = {
-  {
-    element Column { Column }* |
-    element Association { Association }*
-  }*,
-  element Type { Type }*,
-  attribute Name { text },
-  attribute InheritanceCode { text }?,
-  attribute IsInheritanceDefault { boolean }?
-}
-
-Column = {
-  attribute Name { text }?,
-  attribute Member { text },
-  attribute Storage { text }?,
-  attribute DbType { text }?,
-  attribute IsPrimaryKey { boolean }?,
-  attribute IsDbGenerated { boolean }?,
-  attribute CanBeNull { boolean }?,
-  attribute UpdateCheck { UpdateCheck }?,
-  attribute IsDiscriminator { boolean }?,
-  attribute Expression { text }?,
-  attribute IsVersion { boolean }?,
-  attribute AutoSync { AutoSync}?
-}
-
-Association = {
-  attribute Name { text }?,
-  attribute Member { text },
-  attribute Storage { text }?,
-  attribute ThisKey { text }?,
-  attribute OtherKey { text }?,
-  attribute IsForeignKey { boolean }?,
-  attribute IsUnique { boolean }?,
-  attribute DeleteRule { text }?,
-  attribute DeleteOnNull { boolean }?
-}
-
-Function = {
-  element Parameter { Parameter }*,
-  {
-    element ElementType { Type }* |
-    element Return { Return }
-  },
-  attribute Name { text }?,
-  attribute Method { text },
-  attribute IsComposable { boolean }?
-}
-
-Parameter = {
-  attribute Name { text }?,
-  attribute Parameter { text },
-  attribute DbType { text }?,
-  attribute Direction { ParameterDirection }?
-}
-
-Return = attribute DbType { text}?
-
-UpdateCheck = "Always" | "Never" | "WhenChanged"
-ParameterDirection = "In" | "Out" | "InOut"
-AutoSync = "Never" | "OnInsert" | "OnUpdate" | "Always" | "Default"
-
-}
----------------- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Xml;
-using DbLinq;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-
-#if MONO_STRICT
-namespace System.Data.Linq.Mapping
-#else
-namespace DbLinq.Data.Linq.Mapping
-#endif
-{
-    public sealed class XmlMappingSource : System.Data.Linq.Mapping.MappingSource
-    {
-        DbmlDatabase db;
-
-        XmlMappingSource(XmlReader reader)
-        {
-            db = new DbmlDatabase(reader);
-        }
-
-        public static XmlMappingSource FromReader(XmlReader reader)
-        {
-            return new XmlMappingSource(reader);
-        }
-
-        public static XmlMappingSource FromStream(Stream stream)
-        {
-            return FromReader(XmlReader.Create(stream));
-        }
-
-        public static XmlMappingSource FromUrl(string url)
-        {
-            return FromReader(XmlReader.Create(url));
-        }
-
-        public static XmlMappingSource FromXml(string xml)
-        {
-            return FromReader(XmlReader.Create(new StringReader(xml)));
-        }
-
-        protected override System.Data.Linq.Mapping.MetaModel CreateModel(System.Type dataContextType)
-        {
-            return new XmlMetaModel(this, db, dataContextType);
-        }
-
-
-        abstract class DbmlItem
-        {
-            public const string DbmlNamespace = "http://schemas.microsoft.com/linqtosql/mapping/2007";
-
-            public void ReadEmptyContent(XmlReader r, string name)
-            {
-                if (r.IsEmptyElement)
-                    r.ReadStartElement(name, DbmlNamespace);
-                else
-                {
-                    r.ReadStartElement(name, DbmlNamespace);
-                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
-                    {
-                        if (r.NamespaceURI != DbmlNamespace)
-                            r.Skip();
-                        throw UnexpectedItemError(r);
-                    }
-                    r.ReadEndElement();
-                }
-            }
-            public bool GetBooleanAttribute(XmlReader r, string attributeName)
-            {
-                return string.Compare(r.GetAttribute(attributeName), "true", StringComparison.OrdinalIgnoreCase) == 0;
-            }
-            public UpdateCheck GetUpdateCheckAttribute(XmlReader r, string attributeName)
-            {
-                var s = r.GetAttribute(attributeName);
-                return s != null ? (UpdateCheck)Enum.Parse(typeof(UpdateCheck), s) : default(UpdateCheck);
-            }
-            public AutoSync GetAutoSyncAttribute(XmlReader r, string attributeName)
-            {
-                var s = r.GetAttribute(attributeName);
-                return s != null ? (AutoSync)Enum.Parse(typeof(AutoSync), s) : default(AutoSync);
-            }
-            public T GetEnumAttribute<T>(XmlReader r, string attributeName)
-            {
-                var s = r.GetAttribute(attributeName);
-                return s != null ? (T)Enum.Parse(typeof(T), s) : default(T);
-            }
-            public XmlException UnexpectedItemError(XmlReader r)
-            {
-                return new XmlException(String.Format("Unexpected dbml element '{0}'", r.LocalName));
-            }
-        }
-        class DbmlDatabase : DbmlItem
-        {
-            public string Name;
-            public string Provider;
-            public List<DbmlTable> Tables = new List<DbmlTable>();
-            public List<DbmlFunction> Functions = new List<DbmlFunction>();
-
-            public DbmlDatabase(XmlReader r)
-            {
-                r.MoveToContent();
-                Name = r.GetAttribute("Name");
-                Provider = r.GetAttribute("Provider");
-                if (r.IsEmptyElement)
-                    r.ReadStartElement("Database", DbmlNamespace);
-                else
-                {
-                    r.ReadStartElement("Database", DbmlNamespace);
-                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
-                    {
-                        if (r.NamespaceURI != DbmlNamespace)
-                            r.Skip();
-                        else
-                        {
-                            switch (r.LocalName)
-                            {
-                                case "Table":
-                                    Tables.Add(new DbmlTable(r));
-                                    break;
-                                case "Function":
-                                    Functions.Add(new DbmlFunction(r));
-                                    break;
-                                default:
-                                    throw UnexpectedItemError(r);
-                            }
-                        }
-                    }
-                    r.ReadEndElement();
-                }
-            }
-        }
-        class DbmlTable : DbmlItem
-        {
-            public DbmlType Type;
-            public string Name;
-            public string Member;
-
-            public DbmlTable(XmlReader r)
-            {
-                Name = r.GetAttribute("Name");
-                Member = r.GetAttribute("Member");
-                if (r.IsEmptyElement)
-                    r.ReadStartElement("Table", DbmlNamespace);
-                else
-                {
-                    r.ReadStartElement("Table", DbmlNamespace);
-                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
-                    {
-                        if (r.NamespaceURI != DbmlNamespace)
-                            r.Skip();
-                        else
-                        {
-                            switch (r.LocalName)
-                            {
-                                case "Type":
-                                    Type = new DbmlType(r);
-                                    break;
-                                default:
-                                    throw UnexpectedItemError(r);
-                            }
-                        }
-                    }
-                    r.ReadEndElement();
-                }
-            }
-        }
-        class DbmlType : DbmlItem
-        {
-            public List<DbmlColumn> Columns = new List<DbmlColumn>();
-            public List<DbmlAssociation> Associations = new List<DbmlAssociation>();
-            public List<DbmlType> Types = new List<DbmlType>();
-            public string Name;
-            public string InheritanceCode;
-            public bool IsInheritanceDefault;
-
-            public DbmlType(XmlReader r)
-            {
-                Name = r.GetAttribute("Name");
-                InheritanceCode = r.GetAttribute("InheritanceCode");
-                IsInheritanceDefault = GetBooleanAttribute(r, "IsInheritanceDefault");
-                if (r.IsEmptyElement)
-                    r.ReadStartElement("Type", DbmlNamespace);
-                else
-                {
-                    r.ReadStartElement("Type", DbmlNamespace);
-                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
-                    {
-                        if (r.NamespaceURI != DbmlNamespace)
-                            r.Skip();
-                        else
-                        {
-                            switch (r.LocalName)
-                            {
-                                case "Column":
-                                    Columns.Add(new DbmlColumn(r));
-                                    break;
-                                case "Association":
-                                    Associations.Add(new DbmlAssociation(r));
-                                    break;
-                                case "Type":
-                                    Types.Add(new DbmlType(r));
-                                    break;
-                                default:
-                                    throw UnexpectedItemError(r);
-                            }
-                        }
-                    }
-                    r.ReadEndElement();
-                }
-            }
-        }
-
-        class DbmlMemberBase : DbmlItem
-        {
-            public string Name;
-            public string Member;
-            public string Storage;
-        }
-
-        class DbmlColumn : DbmlMemberBase
-        {
-            public string DbType;
-            public bool IsPrimaryKey;
-            public bool IsDbGenerated;
-            public bool CanBeNull;
-            public System.Data.Linq.Mapping.UpdateCheck UpdateCheck;
-            public bool IsDiscriminator;
-            public string Expression;
-            public bool IsVersion;
-            public System.Data.Linq.Mapping.AutoSync AutoSync;
-
-            public DbmlColumn(XmlReader r)
-            {
-                Member = r.GetAttribute("Member");
-                Name = r.GetAttribute("Name") ?? Member;
-                Storage = r.GetAttribute("Storage");
-                DbType = r.GetAttribute("DbType");
-                IsPrimaryKey = GetBooleanAttribute(r, "IsPrimaryKey");
-                IsDbGenerated = GetBooleanAttribute(r, "IsDbGenerated");
-                CanBeNull = GetBooleanAttribute(r, "CanBeNull");
-                UpdateCheck = GetEnumAttribute<System.Data.Linq.Mapping.UpdateCheck>(r, "UpdateCheck");
-                IsDiscriminator = GetBooleanAttribute(r, "IsDiscriminator");
-                Expression = r.GetAttribute("Expression");
-                IsVersion = GetBooleanAttribute(r, "IsVersion");
-                AutoSync = GetEnumAttribute<System.Data.Linq.Mapping.AutoSync>(r, "AutoSync");
-                ReadEmptyContent(r, "Column");
-            }
-        }
-        class DbmlAssociation : DbmlMemberBase
-        {
-            public string ThisKey;
-            public string OtherKey;
-            public bool IsForeignKey;
-            public bool IsUnique;
-            public string DeleteRule;
-            public bool DeleteOnNull;
-
-            public DbmlAssociation(XmlReader r)
-            {
-                Name = r.GetAttribute("Name");
-                Member = r.GetAttribute("Member");
-                Storage = r.GetAttribute("Storage");
-                ThisKey = r.GetAttribute("ThisKey");
-                OtherKey = r.GetAttribute("OtherKey");
-                IsForeignKey = GetBooleanAttribute(r, "IsForeignKey");
-                IsUnique = GetBooleanAttribute(r, "IsUnique");
-                DeleteRule = r.GetAttribute("DeleteRule");
-                DeleteOnNull = GetBooleanAttribute(r, "DeleteOnNull");
-                ReadEmptyContent(r, "Association");
-            }
-        }
-        class DbmlFunction : DbmlItem
-        {
-            public string Name;
-            public string Method;
-            public bool IsComposable;
-            public List<DbmlParameter> Parameters = new List<DbmlParameter>();
-            public List<DbmlType> ElementTypes = new List<DbmlType>();
-            public DbmlReturn Return;
-
-            public DbmlFunction(XmlReader r)
-            {
-                Name = r.GetAttribute("Name");
-                Method = r.GetAttribute("Method");
-                IsComposable = GetBooleanAttribute(r, "IsComposable");
-                if (r.IsEmptyElement)
-                    r.ReadStartElement("Function", DbmlNamespace);
-                else
-                {
-                    r.ReadStartElement("Function", DbmlNamespace);
-                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
-                    {
-                        if (r.NamespaceURI != DbmlNamespace)
-                            r.Skip();
-                        else
-                        {
-                            switch (r.LocalName)
-                            {
-                                case "Parameter":
-                                    Parameters.Add(new DbmlParameter(r));
-                                    break;
-                                case "ElementType":
-                                    ElementTypes.Add(new DbmlType(r));
-                                    break;
-                                case "Return":
-                                    Return = new DbmlReturn(r);
-                                    break;
-                                default:
-                                    throw UnexpectedItemError(r);
-                            }
-                        }
-                    }
-                    r.ReadEndElement();
-                }
-            }
-        }
-        class DbmlParameter : DbmlItem
-        {
-            public string Name;
-            public string Parameter;
-            public string DbType;
-            public ParameterDirection Direction;
-
-            public DbmlParameter(XmlReader r)
-            {
-                Name = r.GetAttribute("Name");
-                Parameter = r.GetAttribute("Parameter");
-                DbType = r.GetAttribute("DbType");
-                Direction = GetEnumAttribute<ParameterDirection>(r, "Direction");
-                ReadEmptyContent(r, "Parameter");
-            }
-        }
-        class DbmlReturn : DbmlItem
-        {
-            public string DbType;
-
-            public DbmlReturn(XmlReader r)
-            {
-                DbType = r.GetAttribute("DbType");
-                ReadEmptyContent(r, "Return");
-            }
-        }
-
-        class XmlMetaModel : System.Data.Linq.Mapping.MetaModel
-        {
-            System.Data.Linq.Mapping.MappingSource source;
-            DbmlDatabase d;
-            System.Type context_type;
-            System.Data.Linq.Mapping.MetaFunction[] functions;
-            System.Data.Linq.Mapping.MetaTable[] tables;
-            Dictionary<System.Type, XmlMetaType> types;
-
-            public XmlMetaModel(System.Data.Linq.Mapping.MappingSource source, DbmlDatabase database, System.Type contextType)
-            {
-                this.source = source;
-                this.d = database;
-                this.context_type = contextType;
-                RegisterTypes();
-            }
-
-            void RegisterTypes()
-            {
-                types = new Dictionary<System.Type, XmlMetaType>();
-                foreach (var t in d.Tables)
-                    RegisterTypeAndDescendants(t.Type);
-            }
-
-            void RegisterTypeAndDescendants(DbmlType dt)
-            {
-
-                System.Type t = GetTypeFromName(dt.Name);
-                if (t == null)
-                    throw new ArgumentException(String.Format("type '{0}' not found", dt.Name));
-                if (types.ContainsKey(t))
-                    return;
-                types.Add(t, new XmlMetaType(this, dt));
-                foreach (var cdt in dt.Types)
-                    RegisterTypeAndDescendants(cdt);
-            }
-
-            public override System.Type ContextType
-            {
-                get { return context_type; }
-            }
-
-            public override string DatabaseName
-            {
-                get { return d.Name; }
-            }
-
-            public override System.Data.Linq.Mapping.MappingSource MappingSource
-            {
-                get { return source; }
-            }
-
-            public override System.Type ProviderType
-            {
-                get { return GetTypeFromName(d.Provider); }
-            }
-
-            public override System.Data.Linq.Mapping.MetaFunction GetFunction(MethodInfo method)
-            {
-                foreach (var f in GetFunctions())
-                    if (f.Method == method)
-                        return f;
-                throw new ArgumentException(String.Format("Corresponding MetaFunction for method '{0}' was not found", method));
-            }
-
-            public override IEnumerable<System.Data.Linq.Mapping.MetaFunction> GetFunctions()
-            {
-                if (functions == null)
-                {
-                    var l = new List<System.Data.Linq.Mapping.MetaFunction>();
-                    foreach (var f in d.Functions)
-                        l.Add(new XmlMetaFunction(this, f));
-                    functions = l.ToArray();
-                }
-                return functions;
-            }
-
-            public System.Type GetTypeFromName(string name)
-            {
-                string ns = context_type.Namespace;
-                string full = !name.Contains('.') && !String.IsNullOrEmpty(ns) ? String.Concat(ns, ".", name) : name;
-                var t = this.context_type.Assembly.GetType(full) ?? System.Type.GetType(full);
-                if (t == null)
-                    throw new ArgumentException(String.Format("Type '{0}' was not found", full));
-                return t;
-            }
-
-            public override System.Data.Linq.Mapping.MetaType GetMetaType(System.Type type)
-            {
-                if (!types.ContainsKey(type))
-                    throw new ArgumentException(String.Format("Type '{0}' is not found in the mapping", type));
-                return types[type];
-            }
-
-            public override System.Data.Linq.Mapping.MetaTable GetTable(System.Type rowType)
-            {
-                foreach (var t in GetTables())
-                    if (t.RowType.Type == rowType)
-                        return t;
-                //throw new ArgumentException(String.Format("Corresponding MetaTable for row type '{0}' was not found", rowType));
-                return null;
-            }
-
-            public override IEnumerable<System.Data.Linq.Mapping.MetaTable> GetTables()
-            {
-                if (tables == null)
-                {
-                    var l = new List<System.Data.Linq.Mapping.MetaTable>();
-                    foreach (var t in d.Tables)
-                        l.Add(new XmlMetaTable(this, t));
-                    tables = l.ToArray();
-                }
-                return tables;
-            }
-        }
-
-        class XmlMetaParameter : System.Data.Linq.Mapping.MetaParameter
-        {
-            string dbtype, mapped_name;
-            ParameterInfo pi;
-
-            public XmlMetaParameter(DbmlParameter p, ParameterInfo parameterInfo)
-                : this(p.DbType, p.Parameter, parameterInfo)
-            {
-            }
-
-            public XmlMetaParameter(string dbType, string mappedName, ParameterInfo parameterInfo)
-            {
-                this.dbtype = dbType;
-                this.mapped_name = mappedName;
-                this.pi = parameterInfo;
-            }
-
-            public override string DbType { get { return dbtype; } }
-            public override string MappedName { get { return mapped_name; } }
-            public override string Name { get { return Parameter.Name; } }
-            public override ParameterInfo Parameter { get { return pi; } }
-            public override System.Type ParameterType { get { return pi.ParameterType; } }
-        }
-
-        class XmlMetaTable : System.Data.Linq.Mapping.MetaTable
-        {
-            public XmlMetaTable(XmlMetaModel model, DbmlTable table)
-            {
-                this.model = model;
-                this.t = table;
-                System.Type rt;
-                if (t.Member != null)
-                {
-                    foreach (var member in model.ContextType.GetMember(t.Member))
-                    {
-                        if (table_member != null)
-                            throw new ArgumentException(String.Format("The context type '{0}' contains non-identical member '{1}'", model.ContextType, t.Member));
-                        table_member = member;
-                    }
-                    if (table_member == null)
-                        table_member = GetFieldsAndProperties(model.ContextType).First(pi => pi.GetMemberType().IsGenericType &&
-                            pi.GetMemberType().GetGenericTypeDefinition() == typeof(Table<>) &&
-                            pi.GetMemberType().GetGenericArguments()[0] == model.GetTypeFromName(t.Type.Name));
-                    if (table_member == null)
-                        throw new ArgumentException(String.Format("The context type '{0}' does not contain member '{1}' which is specified in dbml", model.ContextType, t.Member));
-                    member_type = table_member.GetMemberType();
-                    if (member_type.GetGenericTypeDefinition() != typeof(Table<>))
-                        throw new ArgumentException(String.Format("The table member type was unexpected: '{0}'", member_type));
-                    rt = member_type.GetGenericArguments()[0];
-                }
-                else
-                {
-                    rt = System.Type.GetType(t.Type.Name);
-                }
-                row_type = model.GetMetaType(rt);
-                if (row_type == null)
-                    throw new ArgumentException(String.Format("MetaType for '{0}' was not found", rt));
-            }
-            static IEnumerable<MemberInfo> GetFieldsAndProperties(System.Type type)
-            {
-                foreach (var f in type.GetFields())
-                    yield return f;
-                foreach (var p in type.GetProperties())
-                    yield return p;
-            }
-
-            XmlMetaModel model;
-            DbmlTable t;
-            MemberInfo table_member;
-            System.Type member_type;
-            System.Data.Linq.Mapping.MetaType row_type;
-
-            [DbLinqToDo]
-            public override MethodInfo DeleteMethod
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override MethodInfo InsertMethod
-            {
-                get { throw new NotImplementedException(); }
-            }
-            public override System.Data.Linq.Mapping.MetaModel Model { get { return model; } }
-            public override System.Data.Linq.Mapping.MetaType RowType { get { return row_type; } }
-            System.Type MemberType { get { return member_type; } }
-            public override string TableName { get { return t.Name; } }
-            [DbLinqToDo]
-            public override MethodInfo UpdateMethod
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            // not used yet
-            MethodInfo GetMethod(TableFunction f)
-            {
-                if (f == null)
-                    return null;
-                foreach (var mf in model.GetFunctions())
-                    if (mf.Name == f.FunctionId)
-                        return mf.Method;
-                return null;
-            }
-        }
-
-        class XmlMetaType : System.Data.Linq.Mapping.MetaType
-        {
-            XmlMetaModel model;
-            DbmlType t;
-            ReadOnlyCollection<System.Data.Linq.Mapping.MetaAssociation> associations;
-            System.Type runtime_type;
-            ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> members, identity_members, persistent_members;
-
-            public XmlMetaType(XmlMetaModel model, DbmlType type)
-            {
-                this.model = model;
-                this.t = type;
-                runtime_type = model.GetTypeFromName(t.Name);
-                int i = 0;
-                var l = new List<System.Data.Linq.Mapping.MetaDataMember>();
-                l.AddRange(Array.ConvertAll<DbmlColumn, System.Data.Linq.Mapping.MetaDataMember>(
-                    t.Columns.ToArray(), c => new XmlColumnMetaDataMember(model, this, c, i++)));
-                members = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(l);
-            }
-
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaAssociation> Associations
-            {
-                get
-                {
-                    if (associations == null)
-                    {
-                        var l = new List<System.Data.Linq.Mapping.MetaAssociation>();
-                        // FIXME: Ordinal?
-                        foreach (var a in t.Associations)
-                            l.Add(new XmlMetaAssociation(this, new XmlAssociationMetaDataMember(model, this, a, -1), a));
-                        associations = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaAssociation>(l.ToArray());
-                    }
-                    return associations;
-                }
-            }
-            public override bool CanInstantiate { get { return !runtime_type.IsAbstract; } }
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> DataMembers { get { return members; } }
-            public override System.Data.Linq.Mapping.MetaDataMember DBGeneratedIdentityMember
-            {
-                get { return members.First(m => m.IsDbGenerated && m.IsPrimaryKey); }
-            }
-            [DbLinqToDo]
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> DerivedTypes
-            {
-                get { throw new NotImplementedException(); }
-            }
-            public override System.Data.Linq.Mapping.MetaDataMember Discriminator
-            {
-                get { return members.First(m => m.IsDiscriminator); }
-            }
-            public override bool HasAnyLoadMethod
-            {
-                get { return members.Any(m => m.LoadMethod != null); }
-            }
-            [DbLinqToDo]
-            public override bool HasAnyValidateMethod
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override bool HasInheritance
-            {
-                get { throw new NotImplementedException(); }
-            }
-            public override bool HasInheritanceCode
-            {
-                get { return t.InheritanceCode != null; }
-            }
-            public override bool HasUpdateCheck { get { return members.Any(m => m.UpdateCheck != System.Data.Linq.Mapping.UpdateCheck.Never); } }
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> IdentityMembers
-            {
-                get
-                {
-                    if (identity_members == null)
-                    {
-                        identity_members = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(
-                            members.TakeWhile(m => m.IsPrimaryKey).ToArray());
-                    }
-                    return identity_members;
-                }
-            }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaType InheritanceBase
-            {
-                get { throw new NotImplementedException(); }
-            }
-            public override Object InheritanceCode { get { return t.InheritanceCode; } }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaType InheritanceDefault
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaType InheritanceRoot
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> InheritanceTypes
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override bool IsEntity { get { return true; } }
-            public override bool IsInheritanceDefault { get { return t.IsInheritanceDefault; } }
-            public override System.Data.Linq.Mapping.MetaModel Model { get { return model; } }
-            public override string Name { get { return t.Name; } }
-            [DbLinqToDo]
-            public override MethodInfo OnLoadedMethod
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override MethodInfo OnValidateMethod
-            {
-                get { throw new NotImplementedException(); }
-            }
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> PersistentDataMembers
-            {
-                get
-                {
-                    if (persistent_members == null)
-                    {
-                        persistent_members = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(
-                            members.TakeWhile(m => m.IsPersistent).ToArray());
-                    }
-                    return persistent_members;
-                }
-            }
-            public override System.Data.Linq.Mapping.MetaTable Table { get { return model.GetTable(runtime_type); } }
-            public override System.Type Type { get { return runtime_type; } }
-            public override System.Data.Linq.Mapping.MetaDataMember VersionMember { get { return members.First(m => m.IsVersion); } }
-
-            public override System.Data.Linq.Mapping.MetaDataMember GetDataMember(MemberInfo member)
-            {
-                //return members.First(m => m.Member == member);
-                foreach (var m in members) 
-                    if (m.Member == member || (m.Member.ToString() == member.ToString() && member.DeclaringType.IsAssignableFrom(m.Member.DeclaringType))) 
-                        return m;
-                throw new ArgumentException(String.Format("No corresponding metadata member for '{0}'", member));
-            }
-
-            public override System.Data.Linq.Mapping.MetaType GetInheritanceType(System.Type type)
-            {
-                return InheritanceTypes.First(t => t.Type == type);
-            }
-
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaType GetTypeForInheritanceCode(object code)
-            {
-                throw new NotImplementedException();
-            }
-        }
-
-        class XmlMetaAssociation : System.Data.Linq.Mapping.MetaAssociation
-        {
-            //XmlMetaType owner;
-            DbmlAssociation a;
-            ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> these_keys, other_keys;
-            System.Data.Linq.Mapping.MetaDataMember member;
-
-            public XmlMetaAssociation(XmlMetaType owner, XmlMetaDataMember member, DbmlAssociation a)
-            {
-                //this.owner = owner;
-                this.member = member;
-                this.a = a;
-                SetupRelationship();
-            }
-
-            /// <summary>
-            /// This function sets up the relationship information based on the attribute <see cref="XmlMetaModel"/>.
-            /// </summary>
-            private void SetupRelationship()
-            {
-                //Get the association target type
-                System.Type targetType = member.Member.GetFirstInnerReturnType();
-
-                var metaModel = ThisMember.DeclaringType.Model as XmlMetaModel;
-                if (metaModel == null)
-                {
-                    throw new InvalidOperationException("Internal Error: MetaModel is not a XmlMetaModel");
-                }
-
-                System.Data.Linq.Mapping.MetaTable otherTable = metaModel.GetTable(targetType);
-
-                //Setup "this key"
-                these_keys = GetKeys(a.ThisKey ?? String.Empty, ThisMember.DeclaringType);
-
-                //Setup other key
-                other_keys = GetKeys(a.OtherKey ?? String.Empty, otherTable.RowType);
-            }
-
-            //Seperator used for key lists
-            private static readonly char[] STRING_SEPERATOR = new[] { ',' };
-
-            /// <summary>
-            /// Returns a list of keys from the given meta type based on the key list string.
-            /// </summary>
-            /// <param name="keyListString">The key list string.</param>
-            /// <param name="parentType">Type of the parent.</param>
-            /// <returns></returns>
-            private static ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> GetKeys(string keyListString, System.Data.Linq.Mapping.MetaType parentType)
-            {
-                if (keyListString != null)
-                {
-                    var thisKeyList = new List<System.Data.Linq.Mapping.MetaDataMember>();
-
-                    string[] keyNames = keyListString.Split(STRING_SEPERATOR, StringSplitOptions.RemoveEmptyEntries);
-
-                    foreach (string rawKeyName in keyNames)
-                    {
-                        string keyName = rawKeyName.Trim();
-
-                        //TODO: maybe speed the lookup up
-                        System.Data.Linq.Mapping.MetaDataMember key = (from dataMember in parentType.PersistentDataMembers
-                                              where dataMember.Name == keyName
-                                              select dataMember).SingleOrDefault();
-
-                        if (key == null)
-                        {
-                            string errorMessage = string.Format("Could not find key member '{0}' of key '{1}' on type '{2}'. The key may be wrong or the field or property on '{2}' has changed names.",
-                                keyName, keyListString, parentType.Type.Name);
-
-                            throw new InvalidOperationException(errorMessage);
-                        }
-
-                        thisKeyList.Add(key);
-                    }
-
-                    return new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(thisKeyList);
-                }
-                else //Key is the primary key of this table
-                {
-                    return parentType.IdentityMembers;
-                }
-            }
-
-            public override bool DeleteOnNull { get { return a.DeleteOnNull; } }
-            public override string DeleteRule { get { return a.DeleteRule; } }
-            public override bool IsForeignKey { get { return a.IsForeignKey; } }
-            [DbLinqToDo]
-            public override bool IsMany
-            {
-                get { throw new NotImplementedException(); }
-            }
-            public override bool IsNullable { get { return member.Member.GetMemberType().IsNullable(); } }
-            public override bool IsUnique { get { return a.IsUnique; } }
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> OtherKey { get { return other_keys; } }
-            public override bool OtherKeyIsPrimaryKey { get { return OtherKey.All(m => m.IsPrimaryKey); } }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaDataMember OtherMember
-            {
-                get { throw new NotImplementedException(); }
-            }
-            public override System.Data.Linq.Mapping.MetaType OtherType { get { return OtherMember.DeclaringType; } }
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> ThisKey { get { return these_keys; } }
-            public override bool ThisKeyIsPrimaryKey { get { return ThisKey.All(m => m.IsPrimaryKey); } }
-            public override System.Data.Linq.Mapping.MetaDataMember ThisMember { get { return member; } }
-        }
-
-        abstract class XmlMetaDataMember : System.Data.Linq.Mapping.MetaDataMember
-        {
-            internal XmlMetaModel model;
-            internal XmlMetaType type;
-            internal MemberInfo member, storage;
-            System.Data.Linq.Mapping.MetaAccessor member_accessor, storage_accessor;
-            int ordinal;
-
-            protected XmlMetaDataMember(XmlMetaModel model, XmlMetaType type, string memberName, string storageName, int ordinal)
-            {
-                this.model = model;
-                this.type = type;
-                BindingFlags bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
-                if (type.Type.GetMember(memberName, bf).Length == 0)
-                    throw new ArgumentException(String.Format("Specified member '{0}' was not found in type '{1}'", memberName, type.Name));
-                if (type.Type.GetMember(storageName, bf).Length == 0)
-                    throw new ArgumentException(String.Format("Specified member '{0}' was not found in type '{1}'", storageName, type.Name));
-                this.member = type.Type.GetMember(memberName, bf)[0];
-                this.storage = type.Type.GetMember(storageName, bf)[0];
-                this.ordinal = ordinal;
-            }
-
-            public override bool CanBeNull { get { return member.GetMemberType().IsNullable(); } }
-            public override System.Data.Linq.Mapping.MetaType DeclaringType { get { return type; } }
-            public override bool IsDeferred { get { return false; } }
-            public override bool IsPersistent { get { return true; } }
-            public override MemberInfo Member { get { return member; } }
-            public override System.Data.Linq.Mapping.MetaAccessor MemberAccessor
-            {
-                get
-                {
-                    if (member_accessor == null)
-                        member_accessor = new XmlMetaAccessor(this, Member);
-                    return member_accessor;
-                }
-            }
-            public override int Ordinal { get { return ordinal; } }
-            public override System.Data.Linq.Mapping.MetaAccessor StorageAccessor
-            {
-                get
-                {
-                    if (storage_accessor == null)
-                        storage_accessor = new XmlMetaAccessor(this, StorageMember);
-                    return storage_accessor;
-                }
-            }
-            public override MemberInfo StorageMember { get { return storage; } }
-            public override System.Type Type { get { return member.GetMemberType(); } }
-
-            public override bool IsDeclaredBy(System.Data.Linq.Mapping.MetaType type)
-            {
-                return this.type == type;
-            }
-        }
-
-        class XmlColumnMetaDataMember : XmlMetaDataMember
-        {
-            DbmlColumn c;
-
-            public XmlColumnMetaDataMember(XmlMetaModel model, XmlMetaType type, DbmlColumn column, int ordinal)
-                : base(model, type, column.Member, column.Storage, ordinal)
-            {
-                this.c = column;
-            }
-
-            public override System.Data.Linq.Mapping.MetaAssociation Association { get { return null; } }
-            public override System.Data.Linq.Mapping.AutoSync AutoSync { get { return (System.Data.Linq.Mapping.AutoSync)c.AutoSync; } }
-            public override string DbType { get { return c.DbType; } }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaAccessor DeferredSourceAccessor
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaAccessor DeferredValueAccessor
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            public override string Expression { get { return c.Expression; } }
-            public override bool IsAssociation { get { return false; } }
-            public override bool IsDbGenerated { get { return c.IsDbGenerated; } }
-            public override bool IsDiscriminator { get { return c.IsDiscriminator; } }
-            public override bool IsPrimaryKey { get { return c.IsPrimaryKey; } }
-            public override bool IsVersion { get { return c.IsVersion; } }
-            [DbLinqToDo]
-            public override MethodInfo LoadMethod
-            {
-                get
-                {
-                    throw new NotImplementedException();
-                }
-            }
-            public override string MappedName { get { return c.Name; } }
-            public override string Name { get { return c.Member ?? c.Name; } }
-            public override System.Data.Linq.Mapping.UpdateCheck UpdateCheck { get { return c.UpdateCheck; } }
-        }
-
-        class XmlAssociationMetaDataMember : XmlMetaDataMember
-        {
-            DbmlAssociation a;
-            XmlMetaAssociation ma;
-
-            public XmlAssociationMetaDataMember(XmlMetaModel model, XmlMetaType type, DbmlAssociation association, int ordinal)
-                : base(model, type, association.Member, association.Storage, ordinal)
-            {
-                this.a = association;
-            }
-
-            public override System.Data.Linq.Mapping.MetaAssociation Association
-            {
-                get
-                {
-                    if (ma == null)
-                        this.ma = new XmlMetaAssociation(type, this, a);
-                    return ma;
-                }
-            }
-            public override System.Data.Linq.Mapping.AutoSync AutoSync { get { return System.Data.Linq.Mapping.AutoSync.Never; } }
-            public override string DbType { get { return String.Empty; } }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaAccessor DeferredSourceAccessor
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override System.Data.Linq.Mapping.MetaAccessor DeferredValueAccessor
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            public override string Expression { get { return String.Empty; } }
-            public override bool IsAssociation { get { return true; } }
-            public override bool IsDbGenerated { get { return false; } }
-            public override bool IsDiscriminator { get { return false; } }
-            [DbLinqToDo]
-            public override bool IsPrimaryKey
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override bool IsVersion
-            {
-                get { throw new NotImplementedException(); }
-            }
-            [DbLinqToDo]
-            public override MethodInfo LoadMethod
-            {
-                get
-                {
-                    throw new NotImplementedException();
-                }
-            }
-            public override string MappedName { get { return a.Member; } }
-            public override string Name { get { return a.Name; } }
-            public override System.Data.Linq.Mapping.UpdateCheck UpdateCheck
-            {
-                get
-                {
-                    throw new NotImplementedException();
-                }
-            }
-        }
-
-        class XmlMetaAccessor : System.Data.Linq.Mapping.MetaAccessor
-        {
-            XmlMetaDataMember member;
-            MemberInfo member_info;
-
-            public XmlMetaAccessor(XmlMetaDataMember member, MemberInfo memberInfo)
-            {
-                this.member = member;
-                this.member_info = memberInfo;
-            }
-
-            public override System.Type Type
-            {
-                get { return member_info is FieldInfo ? ((FieldInfo)member_info).FieldType : ((PropertyInfo)member_info).PropertyType; }
-            }
-
-            [DbLinqToDo]
-            public override object GetBoxedValue(object instance)
-            {
-                throw new NotImplementedException();
-            }
-
-            [DbLinqToDo]
-            public override void SetBoxedValue(ref object instance, object value)
-            {
-                throw new NotImplementedException();
-            }
-        }
-
-        class XmlMetaFunction : System.Data.Linq.Mapping.MetaFunction
-        {
-            XmlMetaModel model;
-            DbmlFunction f;
-            MethodInfo method;
-            ReadOnlyCollection<System.Data.Linq.Mapping.MetaParameter> parameters;
-            ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> result_types;
-            System.Data.Linq.Mapping.MetaParameter return_param;
-
-            public XmlMetaFunction(XmlMetaModel model, DbmlFunction function)
-            {
-                this.model = model;
-                this.f = function;
-                method = model.ContextType.GetMethod(function.Method);
-                return_param = new XmlMetaParameter(function.Return.DbType, String.Empty, method.ReturnParameter);
-            }
-
-            public override bool HasMultipleResults { get { return f.ElementTypes.Count > 0; } }
-            public override bool IsComposable { get { return f.IsComposable; } }
-            public override string MappedName { get { return f.Name; } }
-            public override MethodInfo Method { get { return method; } }
-            public override System.Data.Linq.Mapping.MetaModel Model { get { return model; } }
-            public override string Name { get { return f.Name; } }
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaParameter> Parameters
-            {
-                get
-                {
-                    if (parameters == null)
-                    {
-                        var l = new List<System.Data.Linq.Mapping.MetaParameter>();
-                        int i = 0;
-                        ParameterInfo[] mparams = method.GetParameters();
-                        foreach (var p in f.Parameters)
-                            l.Add(new XmlMetaParameter(p, mparams[i++]));
-                        parameters = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaParameter>(l);
-                    }
-                    return parameters;
-                }
-            }
-            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> ResultRowTypes
-            {
-                get
-                {
-                    if (result_types == null)
-                    {
-                        var l = new List<System.Data.Linq.Mapping.MetaType>();
-                        foreach (var p in f.ElementTypes)
-                            l.Add(model.GetMetaType(model.GetTypeFromName(p.Name)));
-                        result_types = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaType>(l.ToArray());
-                    }
-                    return result_types;
-                }
-            }
-            public override System.Data.Linq.Mapping.MetaParameter ReturnParameter { get { return return_param; } }
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Stefan Klinger
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+#region grammar
+/* ----------------
+default namespace = "http://schemas.microsoft.com/linqtosql/mapping/2007"
+grammar {
+
+start = element Database { Database }
+
+Database = {
+  element Table { Table }*,
+  element Function { Function }*,
+  attribute Name { text }?,
+  attribute Provider { text }?
+}
+
+Table = {
+  element Type { Type },
+  attribute Name { text }?,
+  attribute Member { text }?
+}
+
+Type = {
+  {
+    element Column { Column }* |
+    element Association { Association }*
+  }*,
+  element Type { Type }*,
+  attribute Name { text },
+  attribute InheritanceCode { text }?,
+  attribute IsInheritanceDefault { boolean }?
+}
+
+Column = {
+  attribute Name { text }?,
+  attribute Member { text },
+  attribute Storage { text }?,
+  attribute DbType { text }?,
+  attribute IsPrimaryKey { boolean }?,
+  attribute IsDbGenerated { boolean }?,
+  attribute CanBeNull { boolean }?,
+  attribute UpdateCheck { UpdateCheck }?,
+  attribute IsDiscriminator { boolean }?,
+  attribute Expression { text }?,
+  attribute IsVersion { boolean }?,
+  attribute AutoSync { AutoSync}?
+}
+
+Association = {
+  attribute Name { text }?,
+  attribute Member { text },
+  attribute Storage { text }?,
+  attribute ThisKey { text }?,
+  attribute OtherKey { text }?,
+  attribute IsForeignKey { boolean }?,
+  attribute IsUnique { boolean }?,
+  attribute DeleteRule { text }?,
+  attribute DeleteOnNull { boolean }?
+}
+
+Function = {
+  element Parameter { Parameter }*,
+  {
+    element ElementType { Type }* |
+    element Return { Return }
+  },
+  attribute Name { text }?,
+  attribute Method { text },
+  attribute IsComposable { boolean }?
+}
+
+Parameter = {
+  attribute Name { text }?,
+  attribute Parameter { text },
+  attribute DbType { text }?,
+  attribute Direction { ParameterDirection }?
+}
+
+Return = attribute DbType { text}?
+
+UpdateCheck = "Always" | "Never" | "WhenChanged"
+ParameterDirection = "In" | "Out" | "InOut"
+AutoSync = "Never" | "OnInsert" | "OnUpdate" | "Always" | "Default"
+
+}
+---------------- */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+using DbLinq;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+
+#if MONO_STRICT
+namespace System.Data.Linq.Mapping
+#else
+namespace DbLinq.Data.Linq.Mapping
+#endif
+{
+    public sealed class XmlMappingSource : System.Data.Linq.Mapping.MappingSource
+    {
+        DbmlDatabase db;
+
+        XmlMappingSource(XmlReader reader)
+        {
+            db = new DbmlDatabase(reader);
+        }
+
+        public static XmlMappingSource FromReader(XmlReader reader)
+        {
+            return new XmlMappingSource(reader);
+        }
+
+        public static XmlMappingSource FromStream(Stream stream)
+        {
+            return FromReader(XmlReader.Create(stream));
+        }
+
+        public static XmlMappingSource FromUrl(string url)
+        {
+            return FromReader(XmlReader.Create(url));
+        }
+
+        public static XmlMappingSource FromXml(string xml)
+        {
+            return FromReader(XmlReader.Create(new StringReader(xml)));
+        }
+
+        protected override System.Data.Linq.Mapping.MetaModel CreateModel(System.Type dataContextType)
+        {
+            return new XmlMetaModel(this, db, dataContextType);
+        }
+
+
+        abstract class DbmlItem
+        {
+            public const string DbmlNamespace = "http://schemas.microsoft.com/linqtosql/mapping/2007";
+
+            public void ReadEmptyContent(XmlReader r, string name)
+            {
+                if (r.IsEmptyElement)
+                    r.ReadStartElement(name, DbmlNamespace);
+                else
+                {
+                    r.ReadStartElement(name, DbmlNamespace);
+                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
+                    {
+                        if (r.NamespaceURI != DbmlNamespace)
+                            r.Skip();
+                        throw UnexpectedItemError(r);
+                    }
+                    r.ReadEndElement();
+                }
+            }
+            public bool GetBooleanAttribute(XmlReader r, string attributeName)
+            {
+                return string.Compare(r.GetAttribute(attributeName), "true", StringComparison.OrdinalIgnoreCase) == 0;
+            }
+            public UpdateCheck GetUpdateCheckAttribute(XmlReader r, string attributeName)
+            {
+                var s = r.GetAttribute(attributeName);
+                return s != null ? (UpdateCheck)Enum.Parse(typeof(UpdateCheck), s) : default(UpdateCheck);
+            }
+            public AutoSync GetAutoSyncAttribute(XmlReader r, string attributeName)
+            {
+                var s = r.GetAttribute(attributeName);
+                return s != null ? (AutoSync)Enum.Parse(typeof(AutoSync), s) : default(AutoSync);
+            }
+            public T GetEnumAttribute<T>(XmlReader r, string attributeName)
+            {
+                var s = r.GetAttribute(attributeName);
+                return s != null ? (T)Enum.Parse(typeof(T), s) : default(T);
+            }
+            public XmlException UnexpectedItemError(XmlReader r)
+            {
+                return new XmlException(String.Format("Unexpected dbml element '{0}'", r.LocalName));
+            }
+        }
+        class DbmlDatabase : DbmlItem
+        {
+            public string Name;
+            public string Provider;
+            public List<DbmlTable> Tables = new List<DbmlTable>();
+            public List<DbmlFunction> Functions = new List<DbmlFunction>();
+
+            public DbmlDatabase(XmlReader r)
+            {
+                r.MoveToContent();
+                Name = r.GetAttribute("Name");
+                Provider = r.GetAttribute("Provider");
+                if (r.IsEmptyElement)
+                    r.ReadStartElement("Database", DbmlNamespace);
+                else
+                {
+                    r.ReadStartElement("Database", DbmlNamespace);
+                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
+                    {
+                        if (r.NamespaceURI != DbmlNamespace)
+                            r.Skip();
+                        else
+                        {
+                            switch (r.LocalName)
+                            {
+                                case "Table":
+                                    Tables.Add(new DbmlTable(r));
+                                    break;
+                                case "Function":
+                                    Functions.Add(new DbmlFunction(r));
+                                    break;
+                                default:
+                                    throw UnexpectedItemError(r);
+                            }
+                        }
+                    }
+                    r.ReadEndElement();
+                }
+            }
+        }
+        class DbmlTable : DbmlItem
+        {
+            public DbmlType Type;
+            public string Name;
+            public string Member;
+
+            public DbmlTable(XmlReader r)
+            {
+                Name = r.GetAttribute("Name");
+                Member = r.GetAttribute("Member");
+                if (r.IsEmptyElement)
+                    r.ReadStartElement("Table", DbmlNamespace);
+                else
+                {
+                    r.ReadStartElement("Table", DbmlNamespace);
+                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
+                    {
+                        if (r.NamespaceURI != DbmlNamespace)
+                            r.Skip();
+                        else
+                        {
+                            switch (r.LocalName)
+                            {
+                                case "Type":
+                                    Type = new DbmlType(r);
+                                    break;
+                                default:
+                                    throw UnexpectedItemError(r);
+                            }
+                        }
+                    }
+                    r.ReadEndElement();
+                }
+            }
+        }
+        class DbmlType : DbmlItem
+        {
+            public List<DbmlColumn> Columns = new List<DbmlColumn>();
+            public List<DbmlAssociation> Associations = new List<DbmlAssociation>();
+            public List<DbmlType> Types = new List<DbmlType>();
+            public string Name;
+            public string InheritanceCode;
+            public bool IsInheritanceDefault;
+
+            public DbmlType(XmlReader r)
+            {
+                Name = r.GetAttribute("Name");
+                InheritanceCode = r.GetAttribute("InheritanceCode");
+                IsInheritanceDefault = GetBooleanAttribute(r, "IsInheritanceDefault");
+                if (r.IsEmptyElement)
+                    r.ReadStartElement("Type", DbmlNamespace);
+                else
+                {
+                    r.ReadStartElement("Type", DbmlNamespace);
+                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
+                    {
+                        if (r.NamespaceURI != DbmlNamespace)
+                            r.Skip();
+                        else
+                        {
+                            switch (r.LocalName)
+                            {
+                                case "Column":
+                                    Columns.Add(new DbmlColumn(r));
+                                    break;
+                                case "Association":
+                                    Associations.Add(new DbmlAssociation(r));
+                                    break;
+                                case "Type":
+                                    Types.Add(new DbmlType(r));
+                                    break;
+                                default:
+                                    throw UnexpectedItemError(r);
+                            }
+                        }
+                    }
+                    r.ReadEndElement();
+                }
+            }
+        }
+
+        class DbmlMemberBase : DbmlItem
+        {
+            public string Name;
+            public string Member;
+            public string Storage;
+        }
+
+        class DbmlColumn : DbmlMemberBase
+        {
+            public string DbType;
+            public bool IsPrimaryKey;
+            public bool IsDbGenerated;
+            public bool CanBeNull;
+            public System.Data.Linq.Mapping.UpdateCheck UpdateCheck;
+            public bool IsDiscriminator;
+            public string Expression;
+            public bool IsVersion;
+            public System.Data.Linq.Mapping.AutoSync AutoSync;
+
+            public DbmlColumn(XmlReader r)
+            {
+                Member = r.GetAttribute("Member");
+                Name = r.GetAttribute("Name") ?? Member;
+                Storage = r.GetAttribute("Storage");
+                DbType = r.GetAttribute("DbType");
+                IsPrimaryKey = GetBooleanAttribute(r, "IsPrimaryKey");
+                IsDbGenerated = GetBooleanAttribute(r, "IsDbGenerated");
+                CanBeNull = GetBooleanAttribute(r, "CanBeNull");
+                UpdateCheck = GetEnumAttribute<System.Data.Linq.Mapping.UpdateCheck>(r, "UpdateCheck");
+                IsDiscriminator = GetBooleanAttribute(r, "IsDiscriminator");
+                Expression = r.GetAttribute("Expression");
+                IsVersion = GetBooleanAttribute(r, "IsVersion");
+                AutoSync = GetEnumAttribute<System.Data.Linq.Mapping.AutoSync>(r, "AutoSync");
+                ReadEmptyContent(r, "Column");
+            }
+        }
+        class DbmlAssociation : DbmlMemberBase
+        {
+            public string ThisKey;
+            public string OtherKey;
+            public bool IsForeignKey;
+            public bool IsUnique;
+            public string DeleteRule;
+            public bool DeleteOnNull;
+
+            public DbmlAssociation(XmlReader r)
+            {
+                Name = r.GetAttribute("Name");
+                Member = r.GetAttribute("Member");
+                Storage = r.GetAttribute("Storage");
+                ThisKey = r.GetAttribute("ThisKey");
+                OtherKey = r.GetAttribute("OtherKey");
+                IsForeignKey = GetBooleanAttribute(r, "IsForeignKey");
+                IsUnique = GetBooleanAttribute(r, "IsUnique");
+                DeleteRule = r.GetAttribute("DeleteRule");
+                DeleteOnNull = GetBooleanAttribute(r, "DeleteOnNull");
+                ReadEmptyContent(r, "Association");
+            }
+        }
+        class DbmlFunction : DbmlItem
+        {
+            public string Name;
+            public string Method;
+            public bool IsComposable;
+            public List<DbmlParameter> Parameters = new List<DbmlParameter>();
+            public List<DbmlType> ElementTypes = new List<DbmlType>();
+            public DbmlReturn Return;
+
+            public DbmlFunction(XmlReader r)
+            {
+                Name = r.GetAttribute("Name");
+                Method = r.GetAttribute("Method");
+                IsComposable = GetBooleanAttribute(r, "IsComposable");
+                if (r.IsEmptyElement)
+                    r.ReadStartElement("Function", DbmlNamespace);
+                else
+                {
+                    r.ReadStartElement("Function", DbmlNamespace);
+                    for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
+                    {
+                        if (r.NamespaceURI != DbmlNamespace)
+                            r.Skip();
+                        else
+                        {
+                            switch (r.LocalName)
+                            {
+                                case "Parameter":
+                                    Parameters.Add(new DbmlParameter(r));
+                                    break;
+                                case "ElementType":
+                                    ElementTypes.Add(new DbmlType(r));
+                                    break;
+                                case "Return":
+                                    Return = new DbmlReturn(r);
+                                    break;
+                                default:
+                                    throw UnexpectedItemError(r);
+                            }
+                        }
+                    }
+                    r.ReadEndElement();
+                }
+            }
+        }
+        class DbmlParameter : DbmlItem
+        {
+            public string Name;
+            public string Parameter;
+            public string DbType;
+            public ParameterDirection Direction;
+
+            public DbmlParameter(XmlReader r)
+            {
+                Name = r.GetAttribute("Name");
+                Parameter = r.GetAttribute("Parameter");
+                DbType = r.GetAttribute("DbType");
+                Direction = GetEnumAttribute<ParameterDirection>(r, "Direction");
+                ReadEmptyContent(r, "Parameter");
+            }
+        }
+        class DbmlReturn : DbmlItem
+        {
+            public string DbType;
+
+            public DbmlReturn(XmlReader r)
+            {
+                DbType = r.GetAttribute("DbType");
+                ReadEmptyContent(r, "Return");
+            }
+        }
+
+        class XmlMetaModel : System.Data.Linq.Mapping.MetaModel
+        {
+            System.Data.Linq.Mapping.MappingSource source;
+            DbmlDatabase d;
+            System.Type context_type;
+            System.Data.Linq.Mapping.MetaFunction[] functions;
+            System.Data.Linq.Mapping.MetaTable[] tables;
+            Dictionary<System.Type, XmlMetaType> types;
+
+            public XmlMetaModel(System.Data.Linq.Mapping.MappingSource source, DbmlDatabase database, System.Type contextType)
+            {
+                this.source = source;
+                this.d = database;
+                this.context_type = contextType;
+                RegisterTypes();
+            }
+
+            void RegisterTypes()
+            {
+                types = new Dictionary<System.Type, XmlMetaType>();
+                foreach (var t in d.Tables)
+                    RegisterTypeAndDescendants(t.Type);
+            }
+
+            void RegisterTypeAndDescendants(DbmlType dt)
+            {
+
+                System.Type t = GetTypeFromName(dt.Name);
+                if (t == null)
+                    throw new ArgumentException(String.Format("type '{0}' not found", dt.Name));
+                if (types.ContainsKey(t))
+                    return;
+                types.Add(t, new XmlMetaType(this, dt));
+                foreach (var cdt in dt.Types)
+                    RegisterTypeAndDescendants(cdt);
+            }
+
+            public override System.Type ContextType
+            {
+                get { return context_type; }
+            }
+
+            public override string DatabaseName
+            {
+                get { return d.Name; }
+            }
+
+            public override System.Data.Linq.Mapping.MappingSource MappingSource
+            {
+                get { return source; }
+            }
+
+            public override System.Type ProviderType
+            {
+                get { return GetTypeFromName(d.Provider); }
+            }
+
+            public override System.Data.Linq.Mapping.MetaFunction GetFunction(MethodInfo method)
+            {
+                foreach (var f in GetFunctions())
+                    if (f.Method == method)
+                        return f;
+                throw new ArgumentException(String.Format("Corresponding MetaFunction for method '{0}' was not found", method));
+            }
+
+            public override IEnumerable<System.Data.Linq.Mapping.MetaFunction> GetFunctions()
+            {
+                if (functions == null)
+                {
+                    var l = new List<System.Data.Linq.Mapping.MetaFunction>();
+                    foreach (var f in d.Functions)
+                        l.Add(new XmlMetaFunction(this, f));
+                    functions = l.ToArray();
+                }
+                return functions;
+            }
+
+            public System.Type GetTypeFromName(string name)
+            {
+                string ns = context_type.Namespace;
+                string full = !name.Contains('.') && !String.IsNullOrEmpty(ns) ? String.Concat(ns, ".", name) : name;
+                var t = this.context_type.Assembly.GetType(full) ?? System.Type.GetType(full);
+                if (t == null)
+                    throw new ArgumentException(String.Format("Type '{0}' was not found", full));
+                return t;
+            }
+
+            public override System.Data.Linq.Mapping.MetaType GetMetaType(System.Type type)
+            {
+                if (!types.ContainsKey(type))
+                    throw new ArgumentException(String.Format("Type '{0}' is not found in the mapping", type));
+                return types[type];
+            }
+
+            public override System.Data.Linq.Mapping.MetaTable GetTable(System.Type rowType)
+            {
+                foreach (var t in GetTables())
+                    if (t.RowType.Type == rowType)
+                        return t;
+                //throw new ArgumentException(String.Format("Corresponding MetaTable for row type '{0}' was not found", rowType));
+                return null;
+            }
+
+            public override IEnumerable<System.Data.Linq.Mapping.MetaTable> GetTables()
+            {
+                if (tables == null)
+                {
+                    var l = new List<System.Data.Linq.Mapping.MetaTable>();
+                    foreach (var t in d.Tables)
+                        l.Add(new XmlMetaTable(this, t));
+                    tables = l.ToArray();
+                }
+                return tables;
+            }
+        }
+
+        class XmlMetaParameter : System.Data.Linq.Mapping.MetaParameter
+        {
+            string dbtype, mapped_name;
+            ParameterInfo pi;
+
+            public XmlMetaParameter(DbmlParameter p, ParameterInfo parameterInfo)
+                : this(p.DbType, p.Parameter, parameterInfo)
+            {
+            }
+
+            public XmlMetaParameter(string dbType, string mappedName, ParameterInfo parameterInfo)
+            {
+                this.dbtype = dbType;
+                this.mapped_name = mappedName;
+                this.pi = parameterInfo;
+            }
+
+            public override string DbType { get { return dbtype; } }
+            public override string MappedName { get { return mapped_name; } }
+            public override string Name { get { return Parameter.Name; } }
+            public override ParameterInfo Parameter { get { return pi; } }
+            public override System.Type ParameterType { get { return pi.ParameterType; } }
+        }
+
+        class XmlMetaTable : System.Data.Linq.Mapping.MetaTable
+        {
+            public XmlMetaTable(XmlMetaModel model, DbmlTable table)
+            {
+                this.model = model;
+                this.t = table;
+                System.Type rt;
+                if (t.Member != null)
+                {
+                    foreach (var member in model.ContextType.GetMember(t.Member))
+                    {
+                        if (table_member != null)
+                            throw new ArgumentException(String.Format("The context type '{0}' contains non-identical member '{1}'", model.ContextType, t.Member));
+                        table_member = member;
+                    }
+                    if (table_member == null)
+                        table_member = GetFieldsAndProperties(model.ContextType).First(pi => pi.GetMemberType().IsGenericType &&
+                            pi.GetMemberType().GetGenericTypeDefinition() == typeof(Table<>) &&
+                            pi.GetMemberType().GetGenericArguments()[0] == model.GetTypeFromName(t.Type.Name));
+                    if (table_member == null)
+                        throw new ArgumentException(String.Format("The context type '{0}' does not contain member '{1}' which is specified in dbml", model.ContextType, t.Member));
+                    member_type = table_member.GetMemberType();
+                    if (member_type.GetGenericTypeDefinition() != typeof(Table<>))
+                        throw new ArgumentException(String.Format("The table member type was unexpected: '{0}'", member_type));
+                    rt = member_type.GetGenericArguments()[0];
+                }
+                else
+                {
+                    rt = System.Type.GetType(t.Type.Name);
+                }
+                row_type = model.GetMetaType(rt);
+                if (row_type == null)
+                    throw new ArgumentException(String.Format("MetaType for '{0}' was not found", rt));
+            }
+            static IEnumerable<MemberInfo> GetFieldsAndProperties(System.Type type)
+            {
+                foreach (var f in type.GetFields())
+                    yield return f;
+                foreach (var p in type.GetProperties())
+                    yield return p;
+            }
+
+            XmlMetaModel model;
+            DbmlTable t;
+            MemberInfo table_member;
+            System.Type member_type;
+            System.Data.Linq.Mapping.MetaType row_type;
+
+            [DbLinqToDo]
+            public override MethodInfo DeleteMethod
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override MethodInfo InsertMethod
+            {
+                get { throw new NotImplementedException(); }
+            }
+            public override System.Data.Linq.Mapping.MetaModel Model { get { return model; } }
+            public override System.Data.Linq.Mapping.MetaType RowType { get { return row_type; } }
+            System.Type MemberType { get { return member_type; } }
+            public override string TableName { get { return t.Name; } }
+            [DbLinqToDo]
+            public override MethodInfo UpdateMethod
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            // not used yet
+            MethodInfo GetMethod(TableFunction f)
+            {
+                if (f == null)
+                    return null;
+                foreach (var mf in model.GetFunctions())
+                    if (mf.Name == f.FunctionId)
+                        return mf.Method;
+                return null;
+            }
+        }
+
+        class XmlMetaType : System.Data.Linq.Mapping.MetaType
+        {
+            XmlMetaModel model;
+            DbmlType t;
+            ReadOnlyCollection<System.Data.Linq.Mapping.MetaAssociation> associations;
+            System.Type runtime_type;
+            ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> members, identity_members, persistent_members;
+
+            public XmlMetaType(XmlMetaModel model, DbmlType type)
+            {
+                this.model = model;
+                this.t = type;
+                runtime_type = model.GetTypeFromName(t.Name);
+                int i = 0;
+                var l = new List<System.Data.Linq.Mapping.MetaDataMember>();
+                l.AddRange(Array.ConvertAll<DbmlColumn, System.Data.Linq.Mapping.MetaDataMember>(
+                    t.Columns.ToArray(), c => new XmlColumnMetaDataMember(model, this, c, i++)));
+                members = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(l);
+            }
+
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaAssociation> Associations
+            {
+                get
+                {
+                    if (associations == null)
+                    {
+                        var l = new List<System.Data.Linq.Mapping.MetaAssociation>();
+                        // FIXME: Ordinal?
+                        foreach (var a in t.Associations)
+                            l.Add(new XmlMetaAssociation(this, new XmlAssociationMetaDataMember(model, this, a, -1), a));
+                        associations = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaAssociation>(l.ToArray());
+                    }
+                    return associations;
+                }
+            }
+            public override bool CanInstantiate { get { return !runtime_type.IsAbstract; } }
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> DataMembers { get { return members; } }
+            public override System.Data.Linq.Mapping.MetaDataMember DBGeneratedIdentityMember
+            {
+                get { return members.First(m => m.IsDbGenerated && m.IsPrimaryKey); }
+            }
+            [DbLinqToDo]
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> DerivedTypes
+            {
+                get { throw new NotImplementedException(); }
+            }
+            public override System.Data.Linq.Mapping.MetaDataMember Discriminator
+            {
+                get { return members.First(m => m.IsDiscriminator); }
+            }
+            public override bool HasAnyLoadMethod
+            {
+                get { return members.Any(m => m.LoadMethod != null); }
+            }
+            [DbLinqToDo]
+            public override bool HasAnyValidateMethod
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override bool HasInheritance
+            {
+                get { throw new NotImplementedException(); }
+            }
+            public override bool HasInheritanceCode
+            {
+                get { return t.InheritanceCode != null; }
+            }
+            public override bool HasUpdateCheck { get { return members.Any(m => m.UpdateCheck != System.Data.Linq.Mapping.UpdateCheck.Never); } }
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> IdentityMembers
+            {
+                get
+                {
+                    if (identity_members == null)
+                    {
+                        identity_members = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(
+                            members.TakeWhile(m => m.IsPrimaryKey).ToArray());
+                    }
+                    return identity_members;
+                }
+            }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaType InheritanceBase
+            {
+                get { throw new NotImplementedException(); }
+            }
+            public override Object InheritanceCode { get { return t.InheritanceCode; } }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaType InheritanceDefault
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaType InheritanceRoot
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> InheritanceTypes
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override bool IsEntity { get { return true; } }
+            public override bool IsInheritanceDefault { get { return t.IsInheritanceDefault; } }
+            public override System.Data.Linq.Mapping.MetaModel Model { get { return model; } }
+            public override string Name { get { return t.Name; } }
+            [DbLinqToDo]
+            public override MethodInfo OnLoadedMethod
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override MethodInfo OnValidateMethod
+            {
+                get { throw new NotImplementedException(); }
+            }
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> PersistentDataMembers
+            {
+                get
+                {
+                    if (persistent_members == null)
+                    {
+                        persistent_members = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(
+                            members.TakeWhile(m => m.IsPersistent).ToArray());
+                    }
+                    return persistent_members;
+                }
+            }
+            public override System.Data.Linq.Mapping.MetaTable Table { get { return model.GetTable(runtime_type); } }
+            public override System.Type Type { get { return runtime_type; } }
+            public override System.Data.Linq.Mapping.MetaDataMember VersionMember { get { return members.First(m => m.IsVersion); } }
+
+            public override System.Data.Linq.Mapping.MetaDataMember GetDataMember(MemberInfo member)
+            {
+                //return members.First(m => m.Member == member);
+                foreach (var m in members) 
+                    if (m.Member == member || (m.Member.ToString() == member.ToString() && member.DeclaringType.IsAssignableFrom(m.Member.DeclaringType))) 
+                        return m;
+                throw new ArgumentException(String.Format("No corresponding metadata member for '{0}'", member));
+            }
+
+            public override System.Data.Linq.Mapping.MetaType GetInheritanceType(System.Type type)
+            {
+                return InheritanceTypes.First(t => t.Type == type);
+            }
+
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaType GetTypeForInheritanceCode(object code)
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        class XmlMetaAssociation : System.Data.Linq.Mapping.MetaAssociation
+        {
+            //XmlMetaType owner;
+            DbmlAssociation a;
+            ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> these_keys, other_keys;
+            System.Data.Linq.Mapping.MetaDataMember member;
+
+            public XmlMetaAssociation(XmlMetaType owner, XmlMetaDataMember member, DbmlAssociation a)
+            {
+                //this.owner = owner;
+                this.member = member;
+                this.a = a;
+                SetupRelationship();
+            }
+
+            /// <summary>
+            /// This function sets up the relationship information based on the attribute <see cref="XmlMetaModel"/>.
+            /// </summary>
+            private void SetupRelationship()
+            {
+                //Get the association target type
+                System.Type targetType = member.Member.GetFirstInnerReturnType();
+
+                var metaModel = ThisMember.DeclaringType.Model as XmlMetaModel;
+                if (metaModel == null)
+                {
+                    throw new InvalidOperationException("Internal Error: MetaModel is not a XmlMetaModel");
+                }
+
+                System.Data.Linq.Mapping.MetaTable otherTable = metaModel.GetTable(targetType);
+
+                //Setup "this key"
+                these_keys = GetKeys(a.ThisKey ?? String.Empty, ThisMember.DeclaringType);
+
+                //Setup other key
+                other_keys = GetKeys(a.OtherKey ?? String.Empty, otherTable.RowType);
+            }
+
+            //Seperator used for key lists
+            private static readonly char[] STRING_SEPERATOR = new[] { ',' };
+
+            /// <summary>
+            /// Returns a list of keys from the given meta type based on the key list string.
+            /// </summary>
+            /// <param name="keyListString">The key list string.</param>
+            /// <param name="parentType">Type of the parent.</param>
+            /// <returns></returns>
+            private static ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> GetKeys(string keyListString, System.Data.Linq.Mapping.MetaType parentType)
+            {
+                if (keyListString != null)
+                {
+                    var thisKeyList = new List<System.Data.Linq.Mapping.MetaDataMember>();
+
+                    string[] keyNames = keyListString.Split(STRING_SEPERATOR, StringSplitOptions.RemoveEmptyEntries);
+
+                    foreach (string rawKeyName in keyNames)
+                    {
+                        string keyName = rawKeyName.Trim();
+
+                        //TODO: maybe speed the lookup up
+                        System.Data.Linq.Mapping.MetaDataMember key = (from dataMember in parentType.PersistentDataMembers
+                                              where dataMember.Name == keyName
+                                              select dataMember).SingleOrDefault();
+
+                        if (key == null)
+                        {
+                            string errorMessage = string.Format("Could not find key member '{0}' of key '{1}' on type '{2}'. The key may be wrong or the field or property on '{2}' has changed names.",
+                                keyName, keyListString, parentType.Type.Name);
+
+                            throw new InvalidOperationException(errorMessage);
+                        }
+
+                        thisKeyList.Add(key);
+                    }
+
+                    return new ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember>(thisKeyList);
+                }
+                else //Key is the primary key of this table
+                {
+                    return parentType.IdentityMembers;
+                }
+            }
+
+            public override bool DeleteOnNull { get { return a.DeleteOnNull; } }
+            public override string DeleteRule { get { return a.DeleteRule; } }
+            public override bool IsForeignKey { get { return a.IsForeignKey; } }
+            [DbLinqToDo]
+            public override bool IsMany
+            {
+                get { throw new NotImplementedException(); }
+            }
+            public override bool IsNullable { get { return member.Member.GetMemberType().IsNullable(); } }
+            public override bool IsUnique { get { return a.IsUnique; } }
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> OtherKey { get { return other_keys; } }
+            public override bool OtherKeyIsPrimaryKey { get { return OtherKey.All(m => m.IsPrimaryKey); } }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaDataMember OtherMember
+            {
+                get { throw new NotImplementedException(); }
+            }
+            public override System.Data.Linq.Mapping.MetaType OtherType { get { return OtherMember.DeclaringType; } }
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaDataMember> ThisKey { get { return these_keys; } }
+            public override bool ThisKeyIsPrimaryKey { get { return ThisKey.All(m => m.IsPrimaryKey); } }
+            public override System.Data.Linq.Mapping.MetaDataMember ThisMember { get { return member; } }
+        }
+
+        abstract class XmlMetaDataMember : System.Data.Linq.Mapping.MetaDataMember
+        {
+            internal XmlMetaModel model;
+            internal XmlMetaType type;
+            internal MemberInfo member, storage;
+            System.Data.Linq.Mapping.MetaAccessor member_accessor, storage_accessor;
+            int ordinal;
+
+            protected XmlMetaDataMember(XmlMetaModel model, XmlMetaType type, string memberName, string storageName, int ordinal)
+            {
+                this.model = model;
+                this.type = type;
+                BindingFlags bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
+                if (type.Type.GetMember(memberName, bf).Length == 0)
+                    throw new ArgumentException(String.Format("Specified member '{0}' was not found in type '{1}'", memberName, type.Name));
+                if (type.Type.GetMember(storageName, bf).Length == 0)
+                    throw new ArgumentException(String.Format("Specified member '{0}' was not found in type '{1}'", storageName, type.Name));
+                this.member = type.Type.GetMember(memberName, bf)[0];
+                this.storage = type.Type.GetMember(storageName, bf)[0];
+                this.ordinal = ordinal;
+            }
+
+            public override bool CanBeNull { get { return member.GetMemberType().IsNullable(); } }
+            public override System.Data.Linq.Mapping.MetaType DeclaringType { get { return type; } }
+            public override bool IsDeferred { get { return false; } }
+            public override bool IsPersistent { get { return true; } }
+            public override MemberInfo Member { get { return member; } }
+            public override System.Data.Linq.Mapping.MetaAccessor MemberAccessor
+            {
+                get
+                {
+                    if (member_accessor == null)
+                        member_accessor = new XmlMetaAccessor(this, Member);
+                    return member_accessor;
+                }
+            }
+            public override int Ordinal { get { return ordinal; } }
+            public override System.Data.Linq.Mapping.MetaAccessor StorageAccessor
+            {
+                get
+                {
+                    if (storage_accessor == null)
+                        storage_accessor = new XmlMetaAccessor(this, StorageMember);
+                    return storage_accessor;
+                }
+            }
+            public override MemberInfo StorageMember { get { return storage; } }
+            public override System.Type Type { get { return member.GetMemberType(); } }
+
+            public override bool IsDeclaredBy(System.Data.Linq.Mapping.MetaType type)
+            {
+                return this.type == type;
+            }
+        }
+
+        class XmlColumnMetaDataMember : XmlMetaDataMember
+        {
+            DbmlColumn c;
+
+            public XmlColumnMetaDataMember(XmlMetaModel model, XmlMetaType type, DbmlColumn column, int ordinal)
+                : base(model, type, column.Member, column.Storage, ordinal)
+            {
+                this.c = column;
+            }
+
+            public override System.Data.Linq.Mapping.MetaAssociation Association { get { return null; } }
+            public override System.Data.Linq.Mapping.AutoSync AutoSync { get { return (System.Data.Linq.Mapping.AutoSync)c.AutoSync; } }
+            public override string DbType { get { return c.DbType; } }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaAccessor DeferredSourceAccessor
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaAccessor DeferredValueAccessor
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            public override string Expression { get { return c.Expression; } }
+            public override bool IsAssociation { get { return false; } }
+            public override bool IsDbGenerated { get { return c.IsDbGenerated; } }
+            public override bool IsDiscriminator { get { return c.IsDiscriminator; } }
+            public override bool IsPrimaryKey { get { return c.IsPrimaryKey; } }
+            public override bool IsVersion { get { return c.IsVersion; } }
+            [DbLinqToDo]
+            public override MethodInfo LoadMethod
+            {
+                get
+                {
+                    throw new NotImplementedException();
+                }
+            }
+            public override string MappedName { get { return c.Name; } }
+            public override string Name { get { return c.Member ?? c.Name; } }
+            public override System.Data.Linq.Mapping.UpdateCheck UpdateCheck { get { return c.UpdateCheck; } }
+        }
+
+        class XmlAssociationMetaDataMember : XmlMetaDataMember
+        {
+            DbmlAssociation a;
+            XmlMetaAssociation ma;
+
+            public XmlAssociationMetaDataMember(XmlMetaModel model, XmlMetaType type, DbmlAssociation association, int ordinal)
+                : base(model, type, association.Member, association.Storage, ordinal)
+            {
+                this.a = association;
+            }
+
+            public override System.Data.Linq.Mapping.MetaAssociation Association
+            {
+                get
+                {
+                    if (ma == null)
+                        this.ma = new XmlMetaAssociation(type, this, a);
+                    return ma;
+                }
+            }
+            public override System.Data.Linq.Mapping.AutoSync AutoSync { get { return System.Data.Linq.Mapping.AutoSync.Never; } }
+            public override string DbType { get { return String.Empty; } }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaAccessor DeferredSourceAccessor
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override System.Data.Linq.Mapping.MetaAccessor DeferredValueAccessor
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            public override string Expression { get { return String.Empty; } }
+            public override bool IsAssociation { get { return true; } }
+            public override bool IsDbGenerated { get { return false; } }
+            public override bool IsDiscriminator { get { return false; } }
+            [DbLinqToDo]
+            public override bool IsPrimaryKey
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override bool IsVersion
+            {
+                get { throw new NotImplementedException(); }
+            }
+            [DbLinqToDo]
+            public override MethodInfo LoadMethod
+            {
+                get
+                {
+                    throw new NotImplementedException();
+                }
+            }
+            public override string MappedName { get { return a.Member; } }
+            public override string Name { get { return a.Name; } }
+            public override System.Data.Linq.Mapping.UpdateCheck UpdateCheck
+            {
+                get
+                {
+                    throw new NotImplementedException();
+                }
+            }
+        }
+
+        class XmlMetaAccessor : System.Data.Linq.Mapping.MetaAccessor
+        {
+            XmlMetaDataMember member;
+            MemberInfo member_info;
+
+            public XmlMetaAccessor(XmlMetaDataMember member, MemberInfo memberInfo)
+            {
+                this.member = member;
+                this.member_info = memberInfo;
+            }
+
+            public override System.Type Type
+            {
+                get { return member_info is FieldInfo ? ((FieldInfo)member_info).FieldType : ((PropertyInfo)member_info).PropertyType; }
+            }
+
+            [DbLinqToDo]
+            public override object GetBoxedValue(object instance)
+            {
+                throw new NotImplementedException();
+            }
+
+            [DbLinqToDo]
+            public override void SetBoxedValue(ref object instance, object value)
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        class XmlMetaFunction : System.Data.Linq.Mapping.MetaFunction
+        {
+            XmlMetaModel model;
+            DbmlFunction f;
+            MethodInfo method;
+            ReadOnlyCollection<System.Data.Linq.Mapping.MetaParameter> parameters;
+            ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> result_types;
+            System.Data.Linq.Mapping.MetaParameter return_param;
+
+            public XmlMetaFunction(XmlMetaModel model, DbmlFunction function)
+            {
+                this.model = model;
+                this.f = function;
+                method = model.ContextType.GetMethod(function.Method);
+                return_param = new XmlMetaParameter(function.Return.DbType, String.Empty, method.ReturnParameter);
+            }
+
+            public override bool HasMultipleResults { get { return f.ElementTypes.Count > 0; } }
+            public override bool IsComposable { get { return f.IsComposable; } }
+            public override string MappedName { get { return f.Name; } }
+            public override MethodInfo Method { get { return method; } }
+            public override System.Data.Linq.Mapping.MetaModel Model { get { return model; } }
+            public override string Name { get { return f.Name; } }
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaParameter> Parameters
+            {
+                get
+                {
+                    if (parameters == null)
+                    {
+                        var l = new List<System.Data.Linq.Mapping.MetaParameter>();
+                        int i = 0;
+                        ParameterInfo[] mparams = method.GetParameters();
+                        foreach (var p in f.Parameters)
+                            l.Add(new XmlMetaParameter(p, mparams[i++]));
+                        parameters = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaParameter>(l);
+                    }
+                    return parameters;
+                }
+            }
+            public override ReadOnlyCollection<System.Data.Linq.Mapping.MetaType> ResultRowTypes
+            {
+                get
+                {
+                    if (result_types == null)
+                    {
+                        var l = new List<System.Data.Linq.Mapping.MetaType>();
+                        foreach (var p in f.ElementTypes)
+                            l.Add(model.GetMetaType(model.GetTypeFromName(p.Name)));
+                        result_types = new ReadOnlyCollection<System.Data.Linq.Mapping.MetaType>(l.ToArray());
+                    }
+                    return result_types;
+                }
+            }
+            public override System.Data.Linq.Mapping.MetaParameter ReturnParameter { get { return return_param; } }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ReadMe.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/ReadMe.txt
@@ -1 +1 @@
-﻿DbLinq.Data.Linq folder contains Linq to SQL compliant interfaces and classes, plus their extensions (format to be defined)
+﻿DbLinq.Data.Linq folder contains Linq to SQL compliant interfaces and classes, plus their extensions (format to be defined)
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/RefreshMode.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/RefreshMode.cs
@@ -1,35 +1,35 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace System.Data.Linq
-{
-    public enum RefreshMode
-    {
-        KeepCurrentValues, 
-        KeepChanges, 
-        OverwriteCurrentValues
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace System.Data.Linq
+{
+    public enum RefreshMode
+    {
+        KeepCurrentValues, 
+        KeepChanges, 
+        OverwriteCurrentValues
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlLiteralPart.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlLiteralPart.cs
@@ -1,70 +1,70 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Diagnostics;
-
-namespace DbLinq.Data.Linq.Sql
-{
-    /// <summary>
-    /// Represents a literal SQL part
-    /// </summary>
-    [DebuggerDisplay("SqlLiteralPart {Literal}")]
-#if !MONO_STRICT
-    public
-#endif
-    class SqlLiteralPart : SqlPart
-    {
-        /// <summary>
-        /// The resulting SQL string
-        /// </summary>
-        /// <value></value>
-        public override string Sql { get { return Literal; } }
-
-        /// <summary>
-        /// Literal SQL used as is
-        /// </summary>
-        public string Literal { get; private set; }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlLiteralPart"/> class.
-        /// </summary>
-        /// <param name="literal">The literal.</param>
-        public SqlLiteralPart(string literal)
-        {
-            Literal = literal;
-        }
-
-        /// <summary>
-        /// Creates a SqlLiteralPart from a given string (implicit)
-        /// </summary>
-        /// <param name="literal"></param>
-        /// <returns></returns>
-        public static implicit operator SqlLiteralPart(string literal)
-        {
-            return new SqlLiteralPart(literal);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Diagnostics;
+
+namespace DbLinq.Data.Linq.Sql
+{
+    /// <summary>
+    /// Represents a literal SQL part
+    /// </summary>
+    [DebuggerDisplay("SqlLiteralPart {Literal}")]
+#if !MONO_STRICT
+    public
+#endif
+    class SqlLiteralPart : SqlPart
+    {
+        /// <summary>
+        /// The resulting SQL string
+        /// </summary>
+        /// <value></value>
+        public override string Sql { get { return Literal; } }
+
+        /// <summary>
+        /// Literal SQL used as is
+        /// </summary>
+        public string Literal { get; private set; }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlLiteralPart"/> class.
+        /// </summary>
+        /// <param name="literal">The literal.</param>
+        public SqlLiteralPart(string literal)
+        {
+            Literal = literal;
+        }
+
+        /// <summary>
+        /// Creates a SqlLiteralPart from a given string (implicit)
+        /// </summary>
+        /// <param name="literal"></param>
+        /// <returns></returns>
+        public static implicit operator SqlLiteralPart(string literal)
+        {
+            return new SqlLiteralPart(literal);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlParameterPart.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlParameterPart.cs
@@ -1,66 +1,66 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Diagnostics;
-
-namespace DbLinq.Data.Linq.Sql
-{
-    /// <summary>
-    /// SqlPart exposing a parameter
-    /// </summary>
-    [DebuggerDisplay("SqlParameterPart {Parameter} (as {Alias})")]
-#if !MONO_STRICT
-    public
-#endif
-    class SqlParameterPart : SqlPart
-    {
-        /// <summary>
-        /// The SQL part is the literal parameter
-        /// </summary>
-        public override string Sql { get { return Parameter; } }
-
-        /// <summary>
-        /// Literal parameter to be used
-        /// </summary>
-        public string Parameter { get; private set; }
-
-        /// <summary>
-        /// Raw parameter name
-        /// </summary>
-        public string Alias { get; private set; }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlParameterPart"/> class.
-        /// </summary>
-        /// <param name="parameter">The parameter.</param>
-        /// <param name="alias">The alias.</param>
-        public SqlParameterPart(string parameter, string alias)
-        {
-            Parameter = parameter;
-            Alias = alias;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Diagnostics;
+
+namespace DbLinq.Data.Linq.Sql
+{
+    /// <summary>
+    /// SqlPart exposing a parameter
+    /// </summary>
+    [DebuggerDisplay("SqlParameterPart {Parameter} (as {Alias})")]
+#if !MONO_STRICT
+    public
+#endif
+    class SqlParameterPart : SqlPart
+    {
+        /// <summary>
+        /// The SQL part is the literal parameter
+        /// </summary>
+        public override string Sql { get { return Parameter; } }
+
+        /// <summary>
+        /// Literal parameter to be used
+        /// </summary>
+        public string Parameter { get; private set; }
+
+        /// <summary>
+        /// Raw parameter name
+        /// </summary>
+        public string Alias { get; private set; }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlParameterPart"/> class.
+        /// </summary>
+        /// <param name="parameter">The parameter.</param>
+        /// <param name="alias">The alias.</param>
+        public SqlParameterPart(string parameter, string alias)
+        {
+            Parameter = parameter;
+            Alias = alias;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlPart.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlPart.cs
@@ -1,42 +1,42 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Sql
-{
-    /// <summary>
-    /// An SqlPart is a constitutive string of SQL query
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    abstract class SqlPart
-    {
-        /// <summary>
-        /// The resulting SQL string
-        /// </summary>
-        public abstract string Sql { get; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Sql
+{
+    /// <summary>
+    /// An SqlPart is a constitutive string of SQL query
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    abstract class SqlPart
+    {
+        /// <summary>
+        /// The resulting SQL string
+        /// </summary>
+        public abstract string Sql { get; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlStatement.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlStatement.cs
@@ -1,224 +1,224 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-
-namespace DbLinq.Data.Linq.Sql
-{
-    /// <summary>
-    /// An SqlStatement is a literal SQL request, composed of different parts (SqlPart)
-    /// each part being either a parameter or a literal string
-    /// </summary>
-    [DebuggerDisplay("SqlStatement {ToString()}")]
-#if !MONO_STRICT
-    public
-#endif
-    class SqlStatement : IEnumerable<SqlPart>
-    {
-        private readonly List<SqlPart> parts = new List<SqlPart>();
-
-        /// <summary>
-        /// Empty SqlStatement, used to build new statements
-        /// </summary>
-        public static readonly SqlStatement Empty = new SqlStatement();
-
-        /// <summary>
-        /// Returns the number of parts present
-        /// </summary>
-        public int Count { get { return parts.Count; } }
-
-        /// <summary>
-        /// Enumerates all parts
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerator<SqlPart> GetEnumerator()
-        {
-            return parts.GetEnumerator();
-        }
-
-        /// <summary>
-        /// Enumerates all parts
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return GetEnumerator();
-        }
-
-        /// <summary>
-        /// Returns part at given index
-        /// </summary>
-        /// <param name="index"></param>
-        /// <returns></returns>
-        public SqlPart this[int index]
-        {
-            get { return parts[index]; }
-        }
-
-        /// <summary>
-        /// Combines all parts, in correct order
-        /// </summary>
-        /// <returns></returns>
-        public override string ToString()
-        {
-            return string.Join(string.Empty, (from part in parts select part.Sql).ToArray());
-        }
-
-        /// <summary>
-        /// Joins SqlStatements into a new SqlStatement
-        /// </summary>
-        /// <param name="sqlStatement"></param>
-        /// <param name="sqlStatements"></param>
-        /// <returns></returns>
-        public static SqlStatement Join(SqlStatement sqlStatement, IList<SqlStatement> sqlStatements)
-        {
-            // optimization: if we have only one statement to join, we return the statement itself
-            if (sqlStatements.Count == 1)
-                return sqlStatements[0];
-            var builder = new SqlStatementBuilder();
-            builder.AppendJoin(sqlStatement, sqlStatements);
-            return builder.ToSqlStatement();
-        }
-
-        /// <summary>
-        /// Joins SqlStatements into a new SqlStatement
-        /// </summary>
-        /// <param name="sqlStatement"></param>
-        /// <param name="sqlStatements"></param>
-        /// <returns></returns>
-        public static SqlStatement Join(SqlStatement sqlStatement, params SqlStatement[] sqlStatements)
-        {
-            return Join(sqlStatement, (IList<SqlStatement>)sqlStatements);
-        }
-
-        /// <summary>
-        /// Formats an SqlStatement
-        /// </summary>
-        /// <param name="format"></param>
-        /// <param name="sqlStatements"></param>
-        /// <returns></returns>
-        public static SqlStatement Format(string format, IList<SqlStatement> sqlStatements)
-        {
-            var builder = new SqlStatementBuilder();
-            builder.AppendFormat(format, sqlStatements);
-            return builder.ToSqlStatement();
-        }
-
-        /// <summary>
-        /// Formats the specified text.
-        /// </summary>
-        /// <param name="format">The format.</param>
-        /// <param name="sqlStatements">The SQL statements.</param>
-        /// <returns></returns>
-        public static SqlStatement Format(string format, params SqlStatement[] sqlStatements)
-        {
-            return Format(format, (IList<SqlStatement>)sqlStatements);
-        }
-
-        /// <summary>
-        /// Replaces all text occurrences in the SqlStatement
-        /// </summary>
-        /// <param name="find"></param>
-        /// <param name="replace"></param>
-        /// <param name="ignoreCase"></param>
-        /// <returns></returns>
-        public SqlStatement Replace(string find, string replace, bool ignoreCase)
-        {
-            var builder = new SqlStatementBuilder(this);
-            builder.Replace(find, replace, ignoreCase);
-            return builder.ToSqlStatement();
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
-        /// </summary>
-        public SqlStatement()
-        {
-        }
-
-        /// <summary>
-        /// Builds an SqlStatement by concatenating several statements
-        /// </summary>
-        /// <param name="sqlStatements"></param>
-        public SqlStatement(IEnumerable<SqlStatement> sqlStatements)
-        {
-            foreach (var sqlStatement in sqlStatements)
-            {
-                parts.AddRange(sqlStatement.parts);
-            }
-        }
-
-        /// <summary>
-        /// Builds SqlStatement
-        /// </summary>
-        /// <param name="sqlStatements"></param>
-        public SqlStatement(params SqlStatement[] sqlStatements)
-            : this((IEnumerable<SqlStatement>)sqlStatements)
-        {
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
-        /// </summary>
-        /// <param name="sqlParts">The SQL parts.</param>
-        public SqlStatement(params SqlPart[] sqlParts)
-            : this((IList<SqlPart>)sqlParts)
-        {
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
-        /// </summary>
-        /// <param name="sqlParts">The SQL parts.</param>
-        public SqlStatement(IEnumerable<SqlPart> sqlParts)
-        {
-            foreach (var sqlPart in sqlParts)
-                SqlStatementBuilder.AddPart(parts, sqlPart);
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
-        /// </summary>
-        /// <param name="sql">The SQL.</param>
-        public SqlStatement(string sql)
-        {
-            parts.Add(new SqlLiteralPart(sql));
-        }
-
-        /// <summary>
-        /// Converts a string to an SqlStatement
-        /// </summary>
-        /// <param name="sql"></param>
-        /// <returns></returns>
-        public static implicit operator SqlStatement(string sql)
-        {
-            return new SqlStatement(sql);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+
+namespace DbLinq.Data.Linq.Sql
+{
+    /// <summary>
+    /// An SqlStatement is a literal SQL request, composed of different parts (SqlPart)
+    /// each part being either a parameter or a literal string
+    /// </summary>
+    [DebuggerDisplay("SqlStatement {ToString()}")]
+#if !MONO_STRICT
+    public
+#endif
+    class SqlStatement : IEnumerable<SqlPart>
+    {
+        private readonly List<SqlPart> parts = new List<SqlPart>();
+
+        /// <summary>
+        /// Empty SqlStatement, used to build new statements
+        /// </summary>
+        public static readonly SqlStatement Empty = new SqlStatement();
+
+        /// <summary>
+        /// Returns the number of parts present
+        /// </summary>
+        public int Count { get { return parts.Count; } }
+
+        /// <summary>
+        /// Enumerates all parts
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerator<SqlPart> GetEnumerator()
+        {
+            return parts.GetEnumerator();
+        }
+
+        /// <summary>
+        /// Enumerates all parts
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+
+        /// <summary>
+        /// Returns part at given index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        public SqlPart this[int index]
+        {
+            get { return parts[index]; }
+        }
+
+        /// <summary>
+        /// Combines all parts, in correct order
+        /// </summary>
+        /// <returns></returns>
+        public override string ToString()
+        {
+            return string.Join(string.Empty, (from part in parts select part.Sql).ToArray());
+        }
+
+        /// <summary>
+        /// Joins SqlStatements into a new SqlStatement
+        /// </summary>
+        /// <param name="sqlStatement"></param>
+        /// <param name="sqlStatements"></param>
+        /// <returns></returns>
+        public static SqlStatement Join(SqlStatement sqlStatement, IList<SqlStatement> sqlStatements)
+        {
+            // optimization: if we have only one statement to join, we return the statement itself
+            if (sqlStatements.Count == 1)
+                return sqlStatements[0];
+            var builder = new SqlStatementBuilder();
+            builder.AppendJoin(sqlStatement, sqlStatements);
+            return builder.ToSqlStatement();
+        }
+
+        /// <summary>
+        /// Joins SqlStatements into a new SqlStatement
+        /// </summary>
+        /// <param name="sqlStatement"></param>
+        /// <param name="sqlStatements"></param>
+        /// <returns></returns>
+        public static SqlStatement Join(SqlStatement sqlStatement, params SqlStatement[] sqlStatements)
+        {
+            return Join(sqlStatement, (IList<SqlStatement>)sqlStatements);
+        }
+
+        /// <summary>
+        /// Formats an SqlStatement
+        /// </summary>
+        /// <param name="format"></param>
+        /// <param name="sqlStatements"></param>
+        /// <returns></returns>
+        public static SqlStatement Format(string format, IList<SqlStatement> sqlStatements)
+        {
+            var builder = new SqlStatementBuilder();
+            builder.AppendFormat(format, sqlStatements);
+            return builder.ToSqlStatement();
+        }
+
+        /// <summary>
+        /// Formats the specified text.
+        /// </summary>
+        /// <param name="format">The format.</param>
+        /// <param name="sqlStatements">The SQL statements.</param>
+        /// <returns></returns>
+        public static SqlStatement Format(string format, params SqlStatement[] sqlStatements)
+        {
+            return Format(format, (IList<SqlStatement>)sqlStatements);
+        }
+
+        /// <summary>
+        /// Replaces all text occurrences in the SqlStatement
+        /// </summary>
+        /// <param name="find"></param>
+        /// <param name="replace"></param>
+        /// <param name="ignoreCase"></param>
+        /// <returns></returns>
+        public SqlStatement Replace(string find, string replace, bool ignoreCase)
+        {
+            var builder = new SqlStatementBuilder(this);
+            builder.Replace(find, replace, ignoreCase);
+            return builder.ToSqlStatement();
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
+        /// </summary>
+        public SqlStatement()
+        {
+        }
+
+        /// <summary>
+        /// Builds an SqlStatement by concatenating several statements
+        /// </summary>
+        /// <param name="sqlStatements"></param>
+        public SqlStatement(IEnumerable<SqlStatement> sqlStatements)
+        {
+            foreach (var sqlStatement in sqlStatements)
+            {
+                parts.AddRange(sqlStatement.parts);
+            }
+        }
+
+        /// <summary>
+        /// Builds SqlStatement
+        /// </summary>
+        /// <param name="sqlStatements"></param>
+        public SqlStatement(params SqlStatement[] sqlStatements)
+            : this((IEnumerable<SqlStatement>)sqlStatements)
+        {
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
+        /// </summary>
+        /// <param name="sqlParts">The SQL parts.</param>
+        public SqlStatement(params SqlPart[] sqlParts)
+            : this((IList<SqlPart>)sqlParts)
+        {
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
+        /// </summary>
+        /// <param name="sqlParts">The SQL parts.</param>
+        public SqlStatement(IEnumerable<SqlPart> sqlParts)
+        {
+            foreach (var sqlPart in sqlParts)
+                SqlStatementBuilder.AddPart(parts, sqlPart);
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlStatement"/> class.
+        /// </summary>
+        /// <param name="sql">The SQL.</param>
+        public SqlStatement(string sql)
+        {
+            parts.Add(new SqlLiteralPart(sql));
+        }
+
+        /// <summary>
+        /// Converts a string to an SqlStatement
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <returns></returns>
+        public static implicit operator SqlStatement(string sql)
+        {
+            return new SqlStatement(sql);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlStatementBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sql/SqlStatementBuilder.cs
@@ -1,275 +1,275 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Sql
-{
-    /// <summary>
-    /// An SqlStatement is a literal SQL request, composed of different parts (SqlPart)
-    /// each part being either a parameter or a literal string
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class SqlStatementBuilder
-    {
-        public readonly List<SqlPart> Parts = new List<SqlPart>();
-
-        /// <summary>
-        /// Returns part at given index
-        /// </summary>
-        /// <param name="index"></param>
-        /// <returns></returns>
-        public SqlPart this[int index]
-        {
-            get { return Parts[index]; }
-        }
-
-        /// <summary>
-        /// Creates a new SqlStatement based on the current and appending new SqlParts
-        /// </summary>
-        /// <param name="newParts"></param>
-        /// <returns></returns>
-        public void Append(IList<SqlPart> newParts)
-        {
-            foreach (var part in newParts)
-                AddPart(Parts, part);
-        }
-
-        /// <summary>
-        /// Appends a single part, including (useless) optimizations
-        /// </summary>
-        /// <param name="parts"></param>
-        /// <param name="index"></param>
-        /// <param name="part"></param>
-        public static void InsertPart(IList<SqlPart> parts, int index, SqlPart part)
-        {
-            // optimization if top part is a literal, and the one we're adding is a literal too
-            // in this case, we combine both
-            // (this is useless, just pretty)
-            if (part is SqlLiteralPart && index > 0 && parts[index - 1] is SqlLiteralPart)
-            {
-                parts[index - 1] = new SqlLiteralPart(parts[index - 1].Sql + part.Sql);
-            }
-            else
-                parts.Insert(index, part);
-        }
-
-        /// <summary>
-        /// Adds the part to the given parts list.
-        /// </summary>
-        /// <param name="parts">The parts.</param>
-        /// <param name="part">The part.</param>
-        public static void AddPart(IList<SqlPart> parts, SqlPart part)
-        {
-            InsertPart(parts, parts.Count, part);
-        }
-
-        /// <summary>
-        /// Joins statements, separated by a given statement
-        /// </summary>
-        /// <param name="sqlStatement"></param>
-        /// <param name="sqlStatements"></param>
-        /// <returns></returns>
-        public void AppendJoin(SqlStatement sqlStatement, IList<SqlStatement> sqlStatements)
-        {
-            for (int index = 0; index < sqlStatements.Count; index++)
-            {
-                if (index > 0)
-                    Append(sqlStatement);
-                Append(sqlStatements[index]);
-            }
-        }
-
-        /// <summary>
-        /// Creates an SQL statement based on a format string and SqlStatements as arguments
-        /// </summary>
-        /// <param name="format"></param>
-        /// <param name="sqlStatements"></param>
-        /// <returns></returns>
-        public void AppendFormat(string format, IList<SqlStatement> sqlStatements)
-        {
-            var statements = new ArrayList { format };
-            // the strategy divides each part containing the {0}, {1}, etc
-            // and inserts the required argument
-            for (int index = 0; index < sqlStatements.Count; index++)
-            {
-                var newStatements = new ArrayList();
-                var literalIndex = "{" + index + "}";
-                // then in each statement we look for the current literalIndex
-                foreach (var statement in statements)
-                {
-                    // if we have a string, we split it around the literalIndex
-                    // and insert the SqlStatement between new parts
-                    var stringStatement = statement as string;
-                    if (stringStatement != null)
-                    {
-                        var parts = stringStatement.Split(new[] { literalIndex }, StringSplitOptions.None);
-                        for (int partIndex = 0; partIndex < parts.Length; partIndex++)
-                        {
-                            if (partIndex > 0)
-                                newStatements.Add(sqlStatements[index]);
-                            newStatements.Add(parts[partIndex]);
-                        }
-                    }
-                    else // no match found? add the raw statement
-                        newStatements.Add(statement);
-                }
-                statements = newStatements;
-            }
-            // finally, convert all remaining strings to SqlStatements
-            foreach (var statement in statements)
-            {
-                var stringStatement = statement as string;
-                if (stringStatement != null)
-                    Append(new SqlStatement(stringStatement));
-                else
-                    Append((SqlStatement)statement);
-            }
-        }
-
-        /// <summary>
-        /// Formats an SqlStatement from a given string format
-        /// </summary>
-        /// <param name="format"></param>
-        /// <param name="sqlStatements"></param>
-        /// <returns></returns>
-        public void AppendFormat(string format, params SqlStatement[] sqlStatements)
-        {
-            AppendFormat(format, (IList<SqlStatement>)sqlStatements);
-        }
-
-        /// <summary>
-        /// Appends a bunch of sqlStatements to the current one
-        /// </summary>
-        /// <param name="sqlStatements"></param>
-        /// <returns></returns>
-        public void Append(IList<SqlStatement> sqlStatements)
-        {
-            foreach (var sqlStatement in sqlStatements)
-            {
-                foreach (var sqlPart in sqlStatement)
-                {
-                    AddPart(Parts, sqlPart);
-                }
-            }
-        }
-
-#if UNTESTED
-
-        /// <summary>
-        /// Inserts statements at given position
-        /// </summary>
-        /// <param name="index"></param>
-        /// <param name="sqlStatements"></param>
-        public void Insert(int index, IList<SqlStatement> sqlStatements)
-        {
-            for (int statementIndex = sqlStatements.Count - 1; statementIndex >= 0; statementIndex--)
-            {
-                var sqlStatement = sqlStatements[statementIndex];
-                for (int partIndex = sqlStatement.Count - 1; partIndex >= 0; partIndex++)
-                {
-                    var sqlPart = sqlStatement[partIndex];
-                    InsertPart(Parts, index, sqlPart);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Inserts statements at given position
-        /// </summary>
-        /// <param name="index"></param>
-        /// <param name="sqlStatements"></param>
-        public void Insert(int index, params SqlStatement[] sqlStatements)
-        {
-            Insert(index, (IList<SqlStatement>)sqlStatements);
-        }
-
-#endif
-
-        /// <summary>
-        /// Appends sqlStatements to the current one
-        /// </summary>
-        /// <param name="newStatements"></param>
-        /// <returns></returns>
-        public void Append(params SqlStatement[] newStatements)
-        {
-            Append((IList<SqlStatement>)newStatements);
-        }
-
-        /// <summary>
-        /// Replaces the specified text, optionally ignoring the case.
-        /// The method does not replace cross-parts text
-        /// </summary>
-        /// <param name="oldText">The old text.</param>
-        /// <param name="newText">The new text.</param>
-        /// <param name="ignoreCase">if set to <c>true</c> [ignore case].</param>
-        public void Replace(string oldText, string newText, bool ignoreCase)
-        {
-            for (int partIndex = 0; partIndex < Parts.Count; partIndex++)
-            {
-                var part = Parts[partIndex];
-                if (part.Sql.ContainsCase(oldText, ignoreCase))
-                {
-                    // we know how to process only on literal strings
-                    if (part is SqlLiteralPart)
-                    {
-                        Parts[partIndex] = new SqlLiteralPart(part.Sql.ReplaceCase(oldText, newText, ignoreCase));
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlStatementBuilder"/> class.
-        /// </summary>
-        public SqlStatementBuilder()
-        {
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="SqlStatementBuilder"/> class.
-        /// </summary>
-        /// <param name="sqlStatements">The SQL statements.</param>
-        public SqlStatementBuilder(params SqlStatement[] sqlStatements)
-        {
-            Append(sqlStatements);
-        }
-
-        /// <summary>
-        /// Gets the built SqlStatement.
-        /// </summary>
-        /// <returns></returns>
-        public SqlStatement ToSqlStatement()
-        {
-            return new SqlStatement(Parts);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Sql
+{
+    /// <summary>
+    /// An SqlStatement is a literal SQL request, composed of different parts (SqlPart)
+    /// each part being either a parameter or a literal string
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class SqlStatementBuilder
+    {
+        public readonly List<SqlPart> Parts = new List<SqlPart>();
+
+        /// <summary>
+        /// Returns part at given index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        public SqlPart this[int index]
+        {
+            get { return Parts[index]; }
+        }
+
+        /// <summary>
+        /// Creates a new SqlStatement based on the current and appending new SqlParts
+        /// </summary>
+        /// <param name="newParts"></param>
+        /// <returns></returns>
+        public void Append(IList<SqlPart> newParts)
+        {
+            foreach (var part in newParts)
+                AddPart(Parts, part);
+        }
+
+        /// <summary>
+        /// Appends a single part, including (useless) optimizations
+        /// </summary>
+        /// <param name="parts"></param>
+        /// <param name="index"></param>
+        /// <param name="part"></param>
+        public static void InsertPart(IList<SqlPart> parts, int index, SqlPart part)
+        {
+            // optimization if top part is a literal, and the one we're adding is a literal too
+            // in this case, we combine both
+            // (this is useless, just pretty)
+            if (part is SqlLiteralPart && index > 0 && parts[index - 1] is SqlLiteralPart)
+            {
+                parts[index - 1] = new SqlLiteralPart(parts[index - 1].Sql + part.Sql);
+            }
+            else
+                parts.Insert(index, part);
+        }
+
+        /// <summary>
+        /// Adds the part to the given parts list.
+        /// </summary>
+        /// <param name="parts">The parts.</param>
+        /// <param name="part">The part.</param>
+        public static void AddPart(IList<SqlPart> parts, SqlPart part)
+        {
+            InsertPart(parts, parts.Count, part);
+        }
+
+        /// <summary>
+        /// Joins statements, separated by a given statement
+        /// </summary>
+        /// <param name="sqlStatement"></param>
+        /// <param name="sqlStatements"></param>
+        /// <returns></returns>
+        public void AppendJoin(SqlStatement sqlStatement, IList<SqlStatement> sqlStatements)
+        {
+            for (int index = 0; index < sqlStatements.Count; index++)
+            {
+                if (index > 0)
+                    Append(sqlStatement);
+                Append(sqlStatements[index]);
+            }
+        }
+
+        /// <summary>
+        /// Creates an SQL statement based on a format string and SqlStatements as arguments
+        /// </summary>
+        /// <param name="format"></param>
+        /// <param name="sqlStatements"></param>
+        /// <returns></returns>
+        public void AppendFormat(string format, IList<SqlStatement> sqlStatements)
+        {
+            var statements = new ArrayList { format };
+            // the strategy divides each part containing the {0}, {1}, etc
+            // and inserts the required argument
+            for (int index = 0; index < sqlStatements.Count; index++)
+            {
+                var newStatements = new ArrayList();
+                var literalIndex = "{" + index + "}";
+                // then in each statement we look for the current literalIndex
+                foreach (var statement in statements)
+                {
+                    // if we have a string, we split it around the literalIndex
+                    // and insert the SqlStatement between new parts
+                    var stringStatement = statement as string;
+                    if (stringStatement != null)
+                    {
+                        var parts = stringStatement.Split(new[] { literalIndex }, StringSplitOptions.None);
+                        for (int partIndex = 0; partIndex < parts.Length; partIndex++)
+                        {
+                            if (partIndex > 0)
+                                newStatements.Add(sqlStatements[index]);
+                            newStatements.Add(parts[partIndex]);
+                        }
+                    }
+                    else // no match found? add the raw statement
+                        newStatements.Add(statement);
+                }
+                statements = newStatements;
+            }
+            // finally, convert all remaining strings to SqlStatements
+            foreach (var statement in statements)
+            {
+                var stringStatement = statement as string;
+                if (stringStatement != null)
+                    Append(new SqlStatement(stringStatement));
+                else
+                    Append((SqlStatement)statement);
+            }
+        }
+
+        /// <summary>
+        /// Formats an SqlStatement from a given string format
+        /// </summary>
+        /// <param name="format"></param>
+        /// <param name="sqlStatements"></param>
+        /// <returns></returns>
+        public void AppendFormat(string format, params SqlStatement[] sqlStatements)
+        {
+            AppendFormat(format, (IList<SqlStatement>)sqlStatements);
+        }
+
+        /// <summary>
+        /// Appends a bunch of sqlStatements to the current one
+        /// </summary>
+        /// <param name="sqlStatements"></param>
+        /// <returns></returns>
+        public void Append(IList<SqlStatement> sqlStatements)
+        {
+            foreach (var sqlStatement in sqlStatements)
+            {
+                foreach (var sqlPart in sqlStatement)
+                {
+                    AddPart(Parts, sqlPart);
+                }
+            }
+        }
+
+#if UNTESTED
+
+        /// <summary>
+        /// Inserts statements at given position
+        /// </summary>
+        /// <param name="index"></param>
+        /// <param name="sqlStatements"></param>
+        public void Insert(int index, IList<SqlStatement> sqlStatements)
+        {
+            for (int statementIndex = sqlStatements.Count - 1; statementIndex >= 0; statementIndex--)
+            {
+                var sqlStatement = sqlStatements[statementIndex];
+                for (int partIndex = sqlStatement.Count - 1; partIndex >= 0; partIndex++)
+                {
+                    var sqlPart = sqlStatement[partIndex];
+                    InsertPart(Parts, index, sqlPart);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Inserts statements at given position
+        /// </summary>
+        /// <param name="index"></param>
+        /// <param name="sqlStatements"></param>
+        public void Insert(int index, params SqlStatement[] sqlStatements)
+        {
+            Insert(index, (IList<SqlStatement>)sqlStatements);
+        }
+
+#endif
+
+        /// <summary>
+        /// Appends sqlStatements to the current one
+        /// </summary>
+        /// <param name="newStatements"></param>
+        /// <returns></returns>
+        public void Append(params SqlStatement[] newStatements)
+        {
+            Append((IList<SqlStatement>)newStatements);
+        }
+
+        /// <summary>
+        /// Replaces the specified text, optionally ignoring the case.
+        /// The method does not replace cross-parts text
+        /// </summary>
+        /// <param name="oldText">The old text.</param>
+        /// <param name="newText">The new text.</param>
+        /// <param name="ignoreCase">if set to <c>true</c> [ignore case].</param>
+        public void Replace(string oldText, string newText, bool ignoreCase)
+        {
+            for (int partIndex = 0; partIndex < Parts.Count; partIndex++)
+            {
+                var part = Parts[partIndex];
+                if (part.Sql.ContainsCase(oldText, ignoreCase))
+                {
+                    // we know how to process only on literal strings
+                    if (part is SqlLiteralPart)
+                    {
+                        Parts[partIndex] = new SqlLiteralPart(part.Sql.ReplaceCase(oldText, newText, ignoreCase));
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlStatementBuilder"/> class.
+        /// </summary>
+        public SqlStatementBuilder()
+        {
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="SqlStatementBuilder"/> class.
+        /// </summary>
+        /// <param name="sqlStatements">The SQL statements.</param>
+        public SqlStatementBuilder(params SqlStatement[] sqlStatements)
+        {
+            Append(sqlStatements);
+        }
+
+        /// <summary>
+        /// Gets the built SqlStatement.
+        /// </summary>
+        /// <returns></returns>
+        public SqlStatement ToSqlStatement()
+        {
+            return new SqlStatement(Parts);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/FirebirdProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/FirebirdProvider.cs
@@ -1,38 +1,38 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.SqlClient
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class FirebirdProvider
-    {
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.SqlClient
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class FirebirdProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/IngresProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/IngresProvider.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.SqlClient
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class IngresProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.SqlClient
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class IngresProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/MySqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/MySqlProvider.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.SqlClient
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class MySqlProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.SqlClient
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class MySqlProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/OracleProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/OracleProvider.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.SqlClient
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class OracleProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.SqlClient
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class OracleProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/PostgreSqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/PostgreSqlProvider.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.SqlClient
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class PostgreSqlProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.SqlClient
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class PostgreSqlProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/Sql2000Provider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/Sql2000Provider.cs
@@ -1,41 +1,41 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data.Linq.SqlClient;
-
-#if MONO_STRICT
-namespace System.Data.Linq.SqlClient
-#else
-namespace DbLinq.Data.Linq.SqlClient
-#endif
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-    public class Sql2000Provider : SqlProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data.Linq.SqlClient;
+
+#if MONO_STRICT
+namespace System.Data.Linq.SqlClient
+#else
+namespace DbLinq.Data.Linq.SqlClient
+#endif
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+    public class Sql2000Provider : SqlProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/Sql2005Provider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/Sql2005Provider.cs
@@ -1,41 +1,41 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data.Linq.SqlClient;
-
-#if MONO_STRICT
-namespace System.Data.Linq.SqlClient
-#else
-namespace DbLinq.Data.Linq.SqlClient
-#endif
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-    public class Sql2005Provider : SqlProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data.Linq.SqlClient;
+
+#if MONO_STRICT
+namespace System.Data.Linq.SqlClient
+#else
+namespace DbLinq.Data.Linq.SqlClient
+#endif
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+    public class Sql2005Provider : SqlProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/Sql2008Provider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/Sql2008Provider.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data.Linq.SqlClient;
-
-#if MONO_STRICT
-namespace System.Data.Linq.SqlClient
-#else
-namespace DbLinq.Data.Linq.SqlClient
-#endif
-{
-    public class Sql2008Provider : SqlProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data.Linq.SqlClient;
+
+#if MONO_STRICT
+namespace System.Data.Linq.SqlClient
+#else
+namespace DbLinq.Data.Linq.SqlClient
+#endif
+{
+    public class Sql2008Provider : SqlProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/SqlServerProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/SqlServerProvider.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.SqlClient
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-#if !MONO_STRICT
-    public 
-#endif
-    class SqlServerProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.SqlClient
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+#if !MONO_STRICT
+    public 
+#endif
+    class SqlServerProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/SqliteProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/SqlClient/SqliteProvider.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.SqlClient
-{
-    /// <summary>
-    /// Identifies vendor by using VendorAttribute with this type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class SqliteProvider
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.SqlClient
+{
+    /// <summary>
+    /// Identifies vendor by using VendorAttribute with this type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class SqliteProvider
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/AbstractQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/AbstractQuery.cs
@@ -1,70 +1,70 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using DbLinq.Util;
-using DbLinq.Data.Linq.Database;
-using System.Collections.Generic;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-using DbLinq.Data.Linq.Sql;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    /// <summary>
-    /// Base class for all query types (select, insert, update, delete, raw)
-    /// </summary>
-    internal abstract class AbstractQuery
-    {
-        public abstract ITransactionalCommand GetCommand();
-
-        protected ITransactionalCommand GetCommand(bool createTransaction)
-        {
-            return new DbLinq.Data.Linq.Database.Implementation.TransactionalCommand(Sql.ToString(), createTransaction, DataContext);
-        }
-
-        /// <summary>
-        /// The DataContext from which the request originates
-        /// </summary>
-        public DataContext DataContext { get; private set; }
-
-        /// <summary>
-        /// SQL command
-        /// </summary>
-        public SqlStatement Sql { get; private set; }
-
-        protected AbstractQuery(DataContext dataContext, SqlStatement sql)
-        {
-            DataContext = dataContext;
-            Sql = sql;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using DbLinq.Util;
+using DbLinq.Data.Linq.Database;
+using System.Collections.Generic;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+using DbLinq.Data.Linq.Sql;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    /// <summary>
+    /// Base class for all query types (select, insert, update, delete, raw)
+    /// </summary>
+    internal abstract class AbstractQuery
+    {
+        public abstract ITransactionalCommand GetCommand();
+
+        protected ITransactionalCommand GetCommand(bool createTransaction)
+        {
+            return new DbLinq.Data.Linq.Database.Implementation.TransactionalCommand(Sql.ToString(), createTransaction, DataContext);
+        }
+
+        /// <summary>
+        /// The DataContext from which the request originates
+        /// </summary>
+        public DataContext DataContext { get; private set; }
+
+        /// <summary>
+        /// SQL command
+        /// </summary>
+        public SqlStatement Sql { get; private set; }
+
+        protected AbstractQuery(DataContext dataContext, SqlStatement sql)
+        {
+            DataContext = dataContext;
+            Sql = sql;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/BuilderContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/BuilderContext.cs
@@ -1,221 +1,221 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal class BuilderContext
-    {
-        public Stack<MethodInfo> CallStack { get; private set; }
-
-        // Global context
-        public QueryContext QueryContext { get; private set; }
-
-        // Current expression being built
-        public ExpressionQuery ExpressionQuery { get; private set; }
-
-        // Build context: values here are related to current context, and can change with it
-        private int currentScopeIndex;
-        public SelectExpression CurrentSelect
-        {
-            get { return SelectExpressions[currentScopeIndex]; }
-            set { SelectExpressions[currentScopeIndex] = value; }
-        }
-        public IList<SelectExpression> SelectExpressions { get; private set; }
-        public IDictionary<Type, MetaTableExpression> MetaTables { get; private set; }
-        public IDictionary<string, Expression> Parameters { get; private set; }
-
-        public bool ExpectMetaTableDefinition { get; set; }
-
-        /// <summary>
-        /// Helper to enumerate all registered tables
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<TableExpression> EnumerateAllTables()
-        {
-            foreach (var scopePiece in SelectExpressions)
-            {
-                foreach (var table in scopePiece.Tables)
-                    yield return table;
-            }
-        }
-
-        /// <summary>
-        /// Helper to enumerate all registered columns
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<TableExpression> EnumerateScopeTables()
-        {
-            for (SelectExpression currentSelect = CurrentSelect; currentSelect != null; currentSelect = currentSelect.Parent)
-            {
-                foreach (var table in currentSelect.Tables)
-                    yield return table;
-            }
-        }
-
-        /// <summary>
-        /// Helper to enumerate all registered columns
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<ColumnExpression> EnumerateScopeColumns()
-        {
-            for (SelectExpression currentSelect = CurrentSelect; currentSelect != null; currentSelect = currentSelect.Parent)
-            {
-                foreach (var column in currentSelect.Columns)
-                    yield return column;
-            }
-        }
-
-        public BuilderContext(QueryContext queryContext)
-        {
-            CallStack = new Stack<MethodInfo>();
-            SelectExpressions = new List<SelectExpression>();
-            currentScopeIndex = SelectExpressions.Count;
-            SelectExpressions.Add(new SelectExpression());
-            QueryContext = queryContext;
-            ExpressionQuery = new ExpressionQuery();
-            MetaTables = new Dictionary<Type, MetaTableExpression>();
-            Parameters = new Dictionary<string, Expression>();
-        }
-
-        private BuilderContext()
-        { }
-
-        /// <summary>
-        /// Creates a new BuilderContext where parameters have a local scope
-        /// </summary>
-        /// <returns></returns>
-        public BuilderContext NewQuote()
-        {
-            var builderContext = new BuilderContext();
-
-            // scope independent Parts
-            builderContext.CallStack = CallStack;
-            builderContext.QueryContext = QueryContext;
-            builderContext.ExpressionQuery = ExpressionQuery;
-            builderContext.MetaTables = MetaTables;
-            builderContext.currentScopeIndex = currentScopeIndex;
-            builderContext.SelectExpressions = SelectExpressions;
-            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
-
-            // scope dependent Parts
-            builderContext.Parameters = new Dictionary<string, Expression>(Parameters);
-
-            return builderContext;
-        }
-
-        /// <summary>
-        /// Creates a new BuilderContext with a new query scope
-        /// </summary>
-        /// <returns></returns>
-        public BuilderContext NewSelect()
-        {
-            var builderContext = new BuilderContext();
-
-            // we basically copy everything
-            builderContext.CallStack = CallStack;
-            builderContext.QueryContext = QueryContext;
-            builderContext.ExpressionQuery = ExpressionQuery;
-            builderContext.MetaTables = MetaTables;
-            builderContext.Parameters = Parameters;
-            builderContext.SelectExpressions = SelectExpressions;
-            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
-
-            // except CurrentScope, of course
-            builderContext.currentScopeIndex = SelectExpressions.Count;
-            SelectExpressions.Add(new SelectExpression(CurrentSelect));
-
-            return builderContext;
-        }
-
-        /// <summary>
-        /// Creates a new BuilderContext with a new query scope with the same parent of the CurrentSelect
-        /// </summary>
-        /// <returns></returns>
-        public BuilderContext NewSisterSelect()
-        {
-            var builderContext = new BuilderContext();
-
-            // we basically copy everything
-            builderContext.CallStack = CallStack;
-            builderContext.QueryContext = QueryContext;
-            builderContext.ExpressionQuery = ExpressionQuery;
-            builderContext.MetaTables = MetaTables;
-            builderContext.Parameters = Parameters;
-            builderContext.SelectExpressions = SelectExpressions;
-            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
-
-            // except CurrentScope, of course
-            builderContext.currentScopeIndex = SelectExpressions.Count;
-            SelectExpressions.Add(new SelectExpression(CurrentSelect.Parent));
-
-            return builderContext;
-        }
-
-        /// <summary>
-        /// Creates a new BuilderContext with a new query scope which is parent of the current one
-        /// </summary>
-        /// <returns></returns>
-        public void NewParentSelect()
-        {
-            SelectExpression currentSelect = this.CurrentSelect;
-            SelectExpression newParentSelect = new SelectExpression(currentSelect.Parent);
-
-            while (currentSelect != null)
-            {
-                currentSelect.Parent = newParentSelect;
-                currentSelect = currentSelect.NextSelectExpression;
-            }
-            this.currentScopeIndex = SelectExpressions.Count;
-            SelectExpressions.Add(newParentSelect);
-        }
-
-        public BuilderContext Clone()
-        {
-            var builderContext = new BuilderContext();
-
-            builderContext.CallStack = CallStack;
-            builderContext.QueryContext = QueryContext;
-            builderContext.ExpressionQuery = ExpressionQuery;
-            builderContext.MetaTables = MetaTables;
-            builderContext.Parameters = Parameters;
-            builderContext.SelectExpressions = SelectExpressions;
-            builderContext.currentScopeIndex = currentScopeIndex;
-            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
-
-            return builderContext;
-        }
-
-        public bool IsExternalInExpressionChain { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal class BuilderContext
+    {
+        public Stack<MethodInfo> CallStack { get; private set; }
+
+        // Global context
+        public QueryContext QueryContext { get; private set; }
+
+        // Current expression being built
+        public ExpressionQuery ExpressionQuery { get; private set; }
+
+        // Build context: values here are related to current context, and can change with it
+        private int currentScopeIndex;
+        public SelectExpression CurrentSelect
+        {
+            get { return SelectExpressions[currentScopeIndex]; }
+            set { SelectExpressions[currentScopeIndex] = value; }
+        }
+        public IList<SelectExpression> SelectExpressions { get; private set; }
+        public IDictionary<Type, MetaTableExpression> MetaTables { get; private set; }
+        public IDictionary<string, Expression> Parameters { get; private set; }
+
+        public bool ExpectMetaTableDefinition { get; set; }
+
+        /// <summary>
+        /// Helper to enumerate all registered tables
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<TableExpression> EnumerateAllTables()
+        {
+            foreach (var scopePiece in SelectExpressions)
+            {
+                foreach (var table in scopePiece.Tables)
+                    yield return table;
+            }
+        }
+
+        /// <summary>
+        /// Helper to enumerate all registered columns
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<TableExpression> EnumerateScopeTables()
+        {
+            for (SelectExpression currentSelect = CurrentSelect; currentSelect != null; currentSelect = currentSelect.Parent)
+            {
+                foreach (var table in currentSelect.Tables)
+                    yield return table;
+            }
+        }
+
+        /// <summary>
+        /// Helper to enumerate all registered columns
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<ColumnExpression> EnumerateScopeColumns()
+        {
+            for (SelectExpression currentSelect = CurrentSelect; currentSelect != null; currentSelect = currentSelect.Parent)
+            {
+                foreach (var column in currentSelect.Columns)
+                    yield return column;
+            }
+        }
+
+        public BuilderContext(QueryContext queryContext)
+        {
+            CallStack = new Stack<MethodInfo>();
+            SelectExpressions = new List<SelectExpression>();
+            currentScopeIndex = SelectExpressions.Count;
+            SelectExpressions.Add(new SelectExpression());
+            QueryContext = queryContext;
+            ExpressionQuery = new ExpressionQuery();
+            MetaTables = new Dictionary<Type, MetaTableExpression>();
+            Parameters = new Dictionary<string, Expression>();
+        }
+
+        private BuilderContext()
+        { }
+
+        /// <summary>
+        /// Creates a new BuilderContext where parameters have a local scope
+        /// </summary>
+        /// <returns></returns>
+        public BuilderContext NewQuote()
+        {
+            var builderContext = new BuilderContext();
+
+            // scope independent Parts
+            builderContext.CallStack = CallStack;
+            builderContext.QueryContext = QueryContext;
+            builderContext.ExpressionQuery = ExpressionQuery;
+            builderContext.MetaTables = MetaTables;
+            builderContext.currentScopeIndex = currentScopeIndex;
+            builderContext.SelectExpressions = SelectExpressions;
+            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
+
+            // scope dependent Parts
+            builderContext.Parameters = new Dictionary<string, Expression>(Parameters);
+
+            return builderContext;
+        }
+
+        /// <summary>
+        /// Creates a new BuilderContext with a new query scope
+        /// </summary>
+        /// <returns></returns>
+        public BuilderContext NewSelect()
+        {
+            var builderContext = new BuilderContext();
+
+            // we basically copy everything
+            builderContext.CallStack = CallStack;
+            builderContext.QueryContext = QueryContext;
+            builderContext.ExpressionQuery = ExpressionQuery;
+            builderContext.MetaTables = MetaTables;
+            builderContext.Parameters = Parameters;
+            builderContext.SelectExpressions = SelectExpressions;
+            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
+
+            // except CurrentScope, of course
+            builderContext.currentScopeIndex = SelectExpressions.Count;
+            SelectExpressions.Add(new SelectExpression(CurrentSelect));
+
+            return builderContext;
+        }
+
+        /// <summary>
+        /// Creates a new BuilderContext with a new query scope with the same parent of the CurrentSelect
+        /// </summary>
+        /// <returns></returns>
+        public BuilderContext NewSisterSelect()
+        {
+            var builderContext = new BuilderContext();
+
+            // we basically copy everything
+            builderContext.CallStack = CallStack;
+            builderContext.QueryContext = QueryContext;
+            builderContext.ExpressionQuery = ExpressionQuery;
+            builderContext.MetaTables = MetaTables;
+            builderContext.Parameters = Parameters;
+            builderContext.SelectExpressions = SelectExpressions;
+            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
+
+            // except CurrentScope, of course
+            builderContext.currentScopeIndex = SelectExpressions.Count;
+            SelectExpressions.Add(new SelectExpression(CurrentSelect.Parent));
+
+            return builderContext;
+        }
+
+        /// <summary>
+        /// Creates a new BuilderContext with a new query scope which is parent of the current one
+        /// </summary>
+        /// <returns></returns>
+        public void NewParentSelect()
+        {
+            SelectExpression currentSelect = this.CurrentSelect;
+            SelectExpression newParentSelect = new SelectExpression(currentSelect.Parent);
+
+            while (currentSelect != null)
+            {
+                currentSelect.Parent = newParentSelect;
+                currentSelect = currentSelect.NextSelectExpression;
+            }
+            this.currentScopeIndex = SelectExpressions.Count;
+            SelectExpressions.Add(newParentSelect);
+        }
+
+        public BuilderContext Clone()
+        {
+            var builderContext = new BuilderContext();
+
+            builderContext.CallStack = CallStack;
+            builderContext.QueryContext = QueryContext;
+            builderContext.ExpressionQuery = ExpressionQuery;
+            builderContext.MetaTables = MetaTables;
+            builderContext.Parameters = Parameters;
+            builderContext.SelectExpressions = SelectExpressions;
+            builderContext.currentScopeIndex = currentScopeIndex;
+            builderContext.ExpectMetaTableDefinition = ExpectMetaTableDefinition;
+
+            return builderContext;
+        }
+
+        public bool IsExternalInExpressionChain { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/DeleteQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/DeleteQuery.cs
@@ -1,47 +1,47 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal class DeleteQuery : ParameterizedQuery
-    {
-        public DeleteQuery(DataContext dataContext, SqlStatement sql, IList<ObjectInputParameterExpression> inputParameters)
-            : base(dataContext, sql, inputParameters)
-        {
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal class DeleteQuery : ParameterizedQuery
+    {
+        public DeleteQuery(DataContext dataContext, SqlStatement sql, IList<ObjectInputParameterExpression> inputParameters)
+            : base(dataContext, sql, inputParameters)
+        {
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/DirectQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/DirectQuery.cs
@@ -1,87 +1,87 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using DbLinq.Data.Linq.Database;
-using System.Data;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Util;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal class DirectQuery : AbstractQuery
-    {
-        public IList<object> parameterValues { get; set; }
-        public IList<string> Parameters { get; private set; }
-
-        public DirectQuery(DataContext dataContext, SqlStatement sql, IList<string> parameters)
-            : base(dataContext, sql)
-        {
-            Parameters = parameters;
-        }
-
-        public override ITransactionalCommand GetCommand()
-        {
-            ITransactionalCommand command = base.GetCommand(false);
-            FeedParameters(command);
-            return command;
-        }
-
-        /// <summary>
-        /// Fills dbCommand parameters, given names and values
-        /// </summary>
-        /// <param name="dbCommand"></param>
-        /// <param name="parameterNames"></param>
-        /// <param name="parameterValues"></param>
-        private void FeedParameters(ITransactionalCommand command)
-        {
-            IDbCommand dbCommand = command.Command;
-            for (int parameterIndex = 0; parameterIndex < Parameters.Count; parameterIndex++)
-            {
-                var dbParameter = dbCommand.CreateParameter();
-                dbParameter.ParameterName = Parameters[parameterIndex];
-
-                var value = parameterValues[parameterIndex];
-                if (value == null)
-                    dbParameter.Value = DBNull.Value;
-                else
-                    dbParameter.Value = value;
-
-                dbCommand.Parameters.Add(dbParameter);
-            }
-
-        }
-    }
-
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using DbLinq.Data.Linq.Database;
+using System.Data;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Util;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal class DirectQuery : AbstractQuery
+    {
+        public IList<object> parameterValues { get; set; }
+        public IList<string> Parameters { get; private set; }
+
+        public DirectQuery(DataContext dataContext, SqlStatement sql, IList<string> parameters)
+            : base(dataContext, sql)
+        {
+            Parameters = parameters;
+        }
+
+        public override ITransactionalCommand GetCommand()
+        {
+            ITransactionalCommand command = base.GetCommand(false);
+            FeedParameters(command);
+            return command;
+        }
+
+        /// <summary>
+        /// Fills dbCommand parameters, given names and values
+        /// </summary>
+        /// <param name="dbCommand"></param>
+        /// <param name="parameterNames"></param>
+        /// <param name="parameterValues"></param>
+        private void FeedParameters(ITransactionalCommand command)
+        {
+            IDbCommand dbCommand = command.Command;
+            for (int parameterIndex = 0; parameterIndex < Parameters.Count; parameterIndex++)
+            {
+                var dbParameter = dbCommand.CreateParameter();
+                dbParameter.ParameterName = Parameters[parameterIndex];
+
+                var value = parameterValues[parameterIndex];
+                if (value == null)
+                    dbParameter.Value = DBNull.Value;
+                else
+                    dbParameter.Value = value;
+
+                dbCommand.Parameters.Add(dbParameter);
+            }
+
+        }
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Error.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Error.cs
@@ -1,42 +1,42 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    /// <summary>
-    /// Shortcuts to generate exceptions (with formatted strings)
-    /// This is for internal use only
-    /// </summary>
-    internal class Error
-    {
-        public static Exception BadArgument(string format, params object[] parameters)
-        {
-            return new ArgumentException(string.Format(format, parameters));
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    /// <summary>
+    /// Shortcuts to generate exceptions (with formatted strings)
+    /// This is for internal use only
+    /// </summary>
+    internal class Error
+    {
+        public static Exception BadArgument(string format, params object[] parameters)
+        {
+            return new ArgumentException(string.Format(format, parameters));
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionChain.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionChain.cs
@@ -1,107 +1,107 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections;
-using System.Diagnostics;
-using System.Linq.Expressions;
-using System.Collections.Generic;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    [DebuggerDisplay("ExpressionChain {Expressions.Count} Expression(s)")]
-    internal class ExpressionChain : IEnumerable<Expression>
-    {
-        private Expression[] expressions;
-        private List<Expression> expressionList;
-        public List<Expression> Expressions 
-        {
-            get
-            {
-                if (expressionList == null)
-                    if (expressions == null)
-                        expressionList = new List<Expression>();
-                    else
-                        expressionList = new List<Expression>(expressions);
-                return expressionList;
-            }
-        }
-
-        public ExpressionChain()
-        {
-            expressions = new Expression[] { };
-        }
-
-        public ExpressionChain(ExpressionChain chain)
-        {
-            this.expressions = new Expression[chain.expressions.Length];
-            chain.expressions.CopyTo(this.expressions, 0);
-        }
-
-        public ExpressionChain(ExpressionChain chain, Expression expression)
-        {
-            this.expressions = new Expression[chain.expressions.Length + 1];
-            chain.expressions.CopyTo(this.expressions, 0);
-            this.expressions[chain.expressions.Length] = expression;
-        }
-
-        public override bool Equals(object obj)
-        {
-            var other = obj as ExpressionChain;
-            if (other == null)
-                return false;
-            if (Expressions.Count != other.Expressions.Count)
-                return false;
-            for (int expressionIndex = 0; expressionIndex < Expressions.Count; expressionIndex++)
-            {
-                if (!Expressions[expressionIndex].Equals(other.Expressions[expressionIndex]))
-                    return false;
-            }
-            return true;
-        }
-
-        public override int GetHashCode()
-        {
-            int hash = 0;
-            foreach (var expression in Expressions)
-            {
-                hash <<= 10;
-                hash ^= (int)expression.NodeType;
-                hash ^= expression.Type.GetHashCode();
-            }
-            return hash;
-        }
-
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return ((IEnumerable<Expression>)this).GetEnumerator();
-        }
-
-        public IEnumerator<Expression> GetEnumerator()
-        {
-            return Expressions.GetEnumerator();
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections;
+using System.Diagnostics;
+using System.Linq.Expressions;
+using System.Collections.Generic;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    [DebuggerDisplay("ExpressionChain {Expressions.Count} Expression(s)")]
+    internal class ExpressionChain : IEnumerable<Expression>
+    {
+        private Expression[] expressions;
+        private List<Expression> expressionList;
+        public List<Expression> Expressions 
+        {
+            get
+            {
+                if (expressionList == null)
+                    if (expressions == null)
+                        expressionList = new List<Expression>();
+                    else
+                        expressionList = new List<Expression>(expressions);
+                return expressionList;
+            }
+        }
+
+        public ExpressionChain()
+        {
+            expressions = new Expression[] { };
+        }
+
+        public ExpressionChain(ExpressionChain chain)
+        {
+            this.expressions = new Expression[chain.expressions.Length];
+            chain.expressions.CopyTo(this.expressions, 0);
+        }
+
+        public ExpressionChain(ExpressionChain chain, Expression expression)
+        {
+            this.expressions = new Expression[chain.expressions.Length + 1];
+            chain.expressions.CopyTo(this.expressions, 0);
+            this.expressions[chain.expressions.Length] = expression;
+        }
+
+        public override bool Equals(object obj)
+        {
+            var other = obj as ExpressionChain;
+            if (other == null)
+                return false;
+            if (Expressions.Count != other.Expressions.Count)
+                return false;
+            for (int expressionIndex = 0; expressionIndex < Expressions.Count; expressionIndex++)
+            {
+                if (!Expressions[expressionIndex].Equals(other.Expressions[expressionIndex]))
+                    return false;
+            }
+            return true;
+        }
+
+        public override int GetHashCode()
+        {
+            int hash = 0;
+            foreach (var expression in Expressions)
+            {
+                hash <<= 10;
+                hash ^= (int)expression.NodeType;
+                hash ^= expression.Type.GetHashCode();
+            }
+            return hash;
+        }
+
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return ((IEnumerable<Expression>)this).GetEnumerator();
+        }
+
+        public IEnumerator<Expression> GetEnumerator()
+        {
+            return Expressions.GetEnumerator();
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/ExpressionMutatorExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/ExpressionMutatorExtensions.cs
@@ -1,169 +1,169 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator
-{
-    /// <summary>
-    /// Extensions to Expression, to enumerate and dynamically change operands in a uniformized way
-    /// </summary>
-    internal static class ExpressionMutatorExtensions
-    {
-        /// <summary>
-        /// Enumerates all subexpressions related to this one
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public static IEnumerable<Expression> GetOperands(this Expression expression)
-        {
-            if (expression is MutableExpression)
-                return new List<Expression>(((MutableExpression)expression).Operands);
-            return ExpressionMutatorFactory.GetMutator(expression).Operands;
-        }
-
-        /// <summary>
-        /// Changes all operands
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="expression"></param>
-        /// <param name="operands"></param>
-        /// <param name="checkForChanges"></param>
-        /// <returns>A potentially new expression with new operands</returns>
-        public static T ChangeOperands<T>(this T expression, IList<Expression> operands, bool checkForChanges)
-            where T : Expression
-        {
-            bool haveOperandsChanged = checkForChanges && HaveOperandsChanged(expression, operands);
-            if (!haveOperandsChanged)
-                return expression;
-            var mutableExpression = expression as IMutableExpression;
-            if (mutableExpression != null)
-                return (T)mutableExpression.Mutate(operands);
-            return (T)ExpressionMutatorFactory.GetMutator(expression).Mutate(operands);
-        }
-
-        /// <summary>
-        /// Determines if operands have changed for a given expression
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="expression"></param>
-        /// <param name="operands"></param>
-        /// <returns></returns>
-        private static bool HaveOperandsChanged<T>(T expression, IList<Expression> operands)
-            where T : Expression
-        {
-            var oldOperands = GetOperands(expression).ToList();
-            if (operands.Count != oldOperands.Count)
-                return true;
-
-            for (int operandIndex = 0; operandIndex < operands.Count; operandIndex++)
-            {
-                if (operands[operandIndex] != oldOperands[operandIndex])
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Changes all operands
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="expression"></param>
-        /// <param name="operands"></param>
-        /// <returns>A potentially new expression with new operands</returns>
-        public static T ChangeOperands<T>(this T expression, IList<Expression> operands)
-            where T : Expression
-        {
-            return ChangeOperands(expression, operands, true);
-        }
-
-        /// <summary>
-        /// Changes all operands
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="expression"></param>
-        /// <param name="operands"></param>
-        /// <returns>A potentially new expression with new operands</returns>
-        public static T ChangeOperands<T>(this T expression, params Expression[] operands)
-            where T : Expression
-        {
-            return ChangeOperands(expression, operands, true);
-        }
-
-        /// <summary>
-        /// Returns the expression result
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public static object Evaluate(this Expression expression)
-        {
-            var executableExpression = expression as IExecutableExpression;
-            if (executableExpression != null)
-                return executableExpression.Execute();
-            try
-            {
-                // here, we may have non-evaluable expressions, so we "try"/"catch"
-                // (maybe should we find something better)
-                var lambda = Expression.Lambda(expression);
-                var compiled = lambda.Compile();
-                var value = compiled.DynamicInvoke();
-                return value;
-            }
-            catch
-            {
-                throw new ArgumentException();
-            }
-        }
-
-        /// <summary>
-        /// Down-top pattern analysis.
-        /// </summary>
-        /// <param name="expression">The original expression</param>
-        /// <param name="analyzer"></param>
-        /// <returns>A new QueryExpression or the original one</returns>
-        public static Expression Recurse(this Expression expression, Func<Expression, Expression> analyzer)
-        {
-            var newOperands = new List<Expression>();
-            // first, work on children (down)
-            foreach (var operand in GetOperands(expression))
-            {
-                if (operand != null)
-                    newOperands.Add(Recurse(operand, analyzer));
-                else
-                    newOperands.Add(null);
-            }
-            // then on expression itself (top)
-            return analyzer(expression.ChangeOperands(newOperands));
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator
+{
+    /// <summary>
+    /// Extensions to Expression, to enumerate and dynamically change operands in a uniformized way
+    /// </summary>
+    internal static class ExpressionMutatorExtensions
+    {
+        /// <summary>
+        /// Enumerates all subexpressions related to this one
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public static IEnumerable<Expression> GetOperands(this Expression expression)
+        {
+            if (expression is MutableExpression)
+                return new List<Expression>(((MutableExpression)expression).Operands);
+            return ExpressionMutatorFactory.GetMutator(expression).Operands;
+        }
+
+        /// <summary>
+        /// Changes all operands
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="operands"></param>
+        /// <param name="checkForChanges"></param>
+        /// <returns>A potentially new expression with new operands</returns>
+        public static T ChangeOperands<T>(this T expression, IList<Expression> operands, bool checkForChanges)
+            where T : Expression
+        {
+            bool haveOperandsChanged = checkForChanges && HaveOperandsChanged(expression, operands);
+            if (!haveOperandsChanged)
+                return expression;
+            var mutableExpression = expression as IMutableExpression;
+            if (mutableExpression != null)
+                return (T)mutableExpression.Mutate(operands);
+            return (T)ExpressionMutatorFactory.GetMutator(expression).Mutate(operands);
+        }
+
+        /// <summary>
+        /// Determines if operands have changed for a given expression
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="operands"></param>
+        /// <returns></returns>
+        private static bool HaveOperandsChanged<T>(T expression, IList<Expression> operands)
+            where T : Expression
+        {
+            var oldOperands = GetOperands(expression).ToList();
+            if (operands.Count != oldOperands.Count)
+                return true;
+
+            for (int operandIndex = 0; operandIndex < operands.Count; operandIndex++)
+            {
+                if (operands[operandIndex] != oldOperands[operandIndex])
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// Changes all operands
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="operands"></param>
+        /// <returns>A potentially new expression with new operands</returns>
+        public static T ChangeOperands<T>(this T expression, IList<Expression> operands)
+            where T : Expression
+        {
+            return ChangeOperands(expression, operands, true);
+        }
+
+        /// <summary>
+        /// Changes all operands
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="operands"></param>
+        /// <returns>A potentially new expression with new operands</returns>
+        public static T ChangeOperands<T>(this T expression, params Expression[] operands)
+            where T : Expression
+        {
+            return ChangeOperands(expression, operands, true);
+        }
+
+        /// <summary>
+        /// Returns the expression result
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public static object Evaluate(this Expression expression)
+        {
+            var executableExpression = expression as IExecutableExpression;
+            if (executableExpression != null)
+                return executableExpression.Execute();
+            try
+            {
+                // here, we may have non-evaluable expressions, so we "try"/"catch"
+                // (maybe should we find something better)
+                var lambda = Expression.Lambda(expression);
+                var compiled = lambda.Compile();
+                var value = compiled.DynamicInvoke();
+                return value;
+            }
+            catch
+            {
+                throw new ArgumentException();
+            }
+        }
+
+        /// <summary>
+        /// Down-top pattern analysis.
+        /// </summary>
+        /// <param name="expression">The original expression</param>
+        /// <param name="analyzer"></param>
+        /// <returns>A new QueryExpression or the original one</returns>
+        public static Expression Recurse(this Expression expression, Func<Expression, Expression> analyzer)
+        {
+            var newOperands = new List<Expression>();
+            // first, work on children (down)
+            foreach (var operand in GetOperands(expression))
+            {
+                if (operand != null)
+                    newOperands.Add(Recurse(operand, analyzer));
+                else
+                    newOperands.Add(null);
+            }
+            // then on expression itself (top)
+            return analyzer(expression.ChangeOperands(newOperands));
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/ExpressionMutatorFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/ExpressionMutatorFactory.cs
@@ -1,69 +1,69 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq.Expressions;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator
-{
-    internal static class ExpressionMutatorFactory
-    {
-        public static IMutableExpression GetMutator(Expression expression)
-        {
-            if (expression is BinaryExpression)
-                return new BinaryExpressionMutator((BinaryExpression)expression);
-            if (expression is ConditionalExpression)
-                return new ConditionalExpressionMutator((ConditionalExpression)expression);
-            if (expression is ConstantExpression)
-                return new ConstantExpressionMutator((ConstantExpression)expression);
-            if (expression is InvocationExpression)
-                return new InvocationExpressionMutator((InvocationExpression)expression);
-            if (expression is LambdaExpression)
-                return new LambdaExpressionMutator((LambdaExpression)expression);
-            if (expression is MemberExpression)
-                return new MemberExpressionMutator((MemberExpression)expression);
-            if (expression is MethodCallExpression)
-                return new MethodCallExpressionMutator((MethodCallExpression)expression);
-            if (expression is NewExpression)
-                return new NewExpressionMutator((NewExpression)expression);
-            if (expression is NewArrayExpression)
-                return new NewArrayExpressionMutator((NewArrayExpression)expression);
-            if (expression is MemberInitExpression)
-                return new MemberInitExpressionMutator((MemberInitExpression)expression);
-            if (expression is ListInitExpression)
-                return new ListInitExpressionMutator((ListInitExpression)expression);
-            if (expression is ParameterExpression)
-                return new ParameterExpressionMutator((ParameterExpression)expression);
-            if (expression is TypeBinaryExpression)
-                return new TypeBinaryExpressionMutator((TypeBinaryExpression)expression);
-            if (expression is UnaryExpression)
-                return new UnaryExpressionMutator((UnaryExpression)expression);
-            throw Error.BadArgument("S0064: Unknown Expression Type '{0}'", expression.GetType());
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq.Expressions;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator
+{
+    internal static class ExpressionMutatorFactory
+    {
+        public static IMutableExpression GetMutator(Expression expression)
+        {
+            if (expression is BinaryExpression)
+                return new BinaryExpressionMutator((BinaryExpression)expression);
+            if (expression is ConditionalExpression)
+                return new ConditionalExpressionMutator((ConditionalExpression)expression);
+            if (expression is ConstantExpression)
+                return new ConstantExpressionMutator((ConstantExpression)expression);
+            if (expression is InvocationExpression)
+                return new InvocationExpressionMutator((InvocationExpression)expression);
+            if (expression is LambdaExpression)
+                return new LambdaExpressionMutator((LambdaExpression)expression);
+            if (expression is MemberExpression)
+                return new MemberExpressionMutator((MemberExpression)expression);
+            if (expression is MethodCallExpression)
+                return new MethodCallExpressionMutator((MethodCallExpression)expression);
+            if (expression is NewExpression)
+                return new NewExpressionMutator((NewExpression)expression);
+            if (expression is NewArrayExpression)
+                return new NewArrayExpressionMutator((NewArrayExpression)expression);
+            if (expression is MemberInitExpression)
+                return new MemberInitExpressionMutator((MemberInitExpression)expression);
+            if (expression is ListInitExpression)
+                return new ListInitExpressionMutator((ListInitExpression)expression);
+            if (expression is ParameterExpression)
+                return new ParameterExpressionMutator((ParameterExpression)expression);
+            if (expression is TypeBinaryExpression)
+                return new TypeBinaryExpressionMutator((TypeBinaryExpression)expression);
+            if (expression is UnaryExpression)
+                return new UnaryExpressionMutator((UnaryExpression)expression);
+            throw Error.BadArgument("S0064: Unknown Expression Type '{0}'", expression.GetType());
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/BinaryExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/BinaryExpressionMutator.cs
@@ -1,182 +1,182 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class BinaryExpressionMutator : IMutableExpression
-    {
-        protected BinaryExpression BinaryExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            switch (BinaryExpression.NodeType)
-            {
-                case ExpressionType.Add:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Add(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.Add(operands[0], operands[1]);
-
-                case ExpressionType.AddChecked:
-                    if (BinaryExpression.Method != null)
-                        return Expression.AddChecked(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.AddChecked(operands[0], operands[1]);
-
-                case ExpressionType.Divide:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Divide(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.Divide(operands[0], operands[1]);
-
-                case ExpressionType.Modulo:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Modulo(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.Modulo(operands[0], operands[1]);
-
-                case ExpressionType.Multiply:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Multiply(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.Multiply(operands[0], operands[1]);
-
-                case ExpressionType.MultiplyChecked:
-                    if (BinaryExpression.Method != null)
-                        return Expression.MultiplyChecked(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.MultiplyChecked(operands[0], operands[1]);
-
-                case ExpressionType.Power:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Power(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.Power(operands[0], operands[1]);
-
-                case ExpressionType.Subtract:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Subtract(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.Subtract(operands[0], operands[1]);
-
-                case ExpressionType.SubtractChecked:
-                    if (BinaryExpression.Method != null)
-                        return Expression.SubtractChecked(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.SubtractChecked(operands[0], operands[1]);
-
-                case ExpressionType.And:
-                    if (BinaryExpression.Method != null)
-                        return Expression.And(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.And(operands[0], operands[1]);
-
-                case ExpressionType.Or:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Or(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.Or(operands[0], operands[1]);
-
-                case ExpressionType.ExclusiveOr:
-                    if (BinaryExpression.Method != null)
-                        return Expression.ExclusiveOr(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.ExclusiveOr(operands[0], operands[1]);
-
-
-                case ExpressionType.LeftShift:
-                    if (BinaryExpression.Method != null)
-                        return Expression.LeftShift(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.LeftShift(operands[0], operands[1]);
-
-                case ExpressionType.RightShift:
-                    if (BinaryExpression.Method != null)
-                        return Expression.RightShift(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.RightShift(operands[0], operands[1]);
-
-
-                case ExpressionType.AndAlso:
-                    if (BinaryExpression.Method != null)
-                        return Expression.AndAlso(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.AndAlso(operands[0], operands[1]);
-
-                case ExpressionType.OrElse:
-                    if (BinaryExpression.Method != null)
-                        return Expression.OrElse(operands[0], operands[1], BinaryExpression.Method);
-                    return Expression.OrElse(operands[0], operands[1]);
-
-                case ExpressionType.Equal:
-                    if (BinaryExpression.Method != null)
-                        return Expression.Equal(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
-                    return Expression.Equal(operands[0], operands[1]);
-
-                case ExpressionType.NotEqual:
-                    if (BinaryExpression.Method != null)
-                        return Expression.NotEqual(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
-                    return Expression.NotEqual(operands[0], operands[1]);
-
-                case ExpressionType.GreaterThanOrEqual:
-                    if (BinaryExpression.Method != null)
-                        return Expression.GreaterThanOrEqual(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
-                    return Expression.GreaterThanOrEqual(operands[0], operands[1]);
-
-                case ExpressionType.GreaterThan:
-                    if (BinaryExpression.Method != null)
-                        return Expression.GreaterThan(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
-                    return Expression.GreaterThan(operands[0], operands[1]);
-
-                case ExpressionType.LessThan:
-                    if (BinaryExpression.Method != null)
-                        return Expression.LessThan(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
-                    return Expression.LessThan(operands[0], operands[1]);
-
-                case ExpressionType.LessThanOrEqual:
-                    if (BinaryExpression.Method != null)
-                        return Expression.LessThanOrEqual(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
-                    return Expression.LessThanOrEqual(operands[0], operands[1]);
-
-
-                case ExpressionType.Coalesce:
-                    if (BinaryExpression.Conversion != null)
-                        return Expression.Coalesce(operands[0], operands[1], BinaryExpression.Conversion);
-                    return Expression.Coalesce(operands[0], operands[1]);
-
-                case ExpressionType.ArrayIndex:
-                    return Expression.ArrayIndex(operands[0], operands.Skip(1));
-            }
-            throw new Exception();
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get 
-            {
-                yield return BinaryExpression.Left;
-                yield return BinaryExpression.Right;
-            }
-        }
-
-        public BinaryExpressionMutator(BinaryExpression expression)
-        {
-            BinaryExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class BinaryExpressionMutator : IMutableExpression
+    {
+        protected BinaryExpression BinaryExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            switch (BinaryExpression.NodeType)
+            {
+                case ExpressionType.Add:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Add(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.Add(operands[0], operands[1]);
+
+                case ExpressionType.AddChecked:
+                    if (BinaryExpression.Method != null)
+                        return Expression.AddChecked(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.AddChecked(operands[0], operands[1]);
+
+                case ExpressionType.Divide:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Divide(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.Divide(operands[0], operands[1]);
+
+                case ExpressionType.Modulo:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Modulo(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.Modulo(operands[0], operands[1]);
+
+                case ExpressionType.Multiply:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Multiply(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.Multiply(operands[0], operands[1]);
+
+                case ExpressionType.MultiplyChecked:
+                    if (BinaryExpression.Method != null)
+                        return Expression.MultiplyChecked(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.MultiplyChecked(operands[0], operands[1]);
+
+                case ExpressionType.Power:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Power(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.Power(operands[0], operands[1]);
+
+                case ExpressionType.Subtract:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Subtract(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.Subtract(operands[0], operands[1]);
+
+                case ExpressionType.SubtractChecked:
+                    if (BinaryExpression.Method != null)
+                        return Expression.SubtractChecked(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.SubtractChecked(operands[0], operands[1]);
+
+                case ExpressionType.And:
+                    if (BinaryExpression.Method != null)
+                        return Expression.And(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.And(operands[0], operands[1]);
+
+                case ExpressionType.Or:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Or(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.Or(operands[0], operands[1]);
+
+                case ExpressionType.ExclusiveOr:
+                    if (BinaryExpression.Method != null)
+                        return Expression.ExclusiveOr(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.ExclusiveOr(operands[0], operands[1]);
+
+
+                case ExpressionType.LeftShift:
+                    if (BinaryExpression.Method != null)
+                        return Expression.LeftShift(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.LeftShift(operands[0], operands[1]);
+
+                case ExpressionType.RightShift:
+                    if (BinaryExpression.Method != null)
+                        return Expression.RightShift(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.RightShift(operands[0], operands[1]);
+
+
+                case ExpressionType.AndAlso:
+                    if (BinaryExpression.Method != null)
+                        return Expression.AndAlso(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.AndAlso(operands[0], operands[1]);
+
+                case ExpressionType.OrElse:
+                    if (BinaryExpression.Method != null)
+                        return Expression.OrElse(operands[0], operands[1], BinaryExpression.Method);
+                    return Expression.OrElse(operands[0], operands[1]);
+
+                case ExpressionType.Equal:
+                    if (BinaryExpression.Method != null)
+                        return Expression.Equal(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
+                    return Expression.Equal(operands[0], operands[1]);
+
+                case ExpressionType.NotEqual:
+                    if (BinaryExpression.Method != null)
+                        return Expression.NotEqual(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
+                    return Expression.NotEqual(operands[0], operands[1]);
+
+                case ExpressionType.GreaterThanOrEqual:
+                    if (BinaryExpression.Method != null)
+                        return Expression.GreaterThanOrEqual(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
+                    return Expression.GreaterThanOrEqual(operands[0], operands[1]);
+
+                case ExpressionType.GreaterThan:
+                    if (BinaryExpression.Method != null)
+                        return Expression.GreaterThan(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
+                    return Expression.GreaterThan(operands[0], operands[1]);
+
+                case ExpressionType.LessThan:
+                    if (BinaryExpression.Method != null)
+                        return Expression.LessThan(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
+                    return Expression.LessThan(operands[0], operands[1]);
+
+                case ExpressionType.LessThanOrEqual:
+                    if (BinaryExpression.Method != null)
+                        return Expression.LessThanOrEqual(operands[0], operands[1], BinaryExpression.IsLiftedToNull, BinaryExpression.Method);
+                    return Expression.LessThanOrEqual(operands[0], operands[1]);
+
+
+                case ExpressionType.Coalesce:
+                    if (BinaryExpression.Conversion != null)
+                        return Expression.Coalesce(operands[0], operands[1], BinaryExpression.Conversion);
+                    return Expression.Coalesce(operands[0], operands[1]);
+
+                case ExpressionType.ArrayIndex:
+                    return Expression.ArrayIndex(operands[0], operands.Skip(1));
+            }
+            throw new Exception();
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get 
+            {
+                yield return BinaryExpression.Left;
+                yield return BinaryExpression.Right;
+            }
+        }
+
+        public BinaryExpressionMutator(BinaryExpression expression)
+        {
+            BinaryExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ConditionalExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ConditionalExpressionMutator.cs
@@ -1,58 +1,58 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class ConditionalExpressionMutator : IMutableExpression
-    {
-        protected ConditionalExpression ConditionalExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            return Expression.Condition(operands[0], operands[1], operands[2]);
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return ConditionalExpression.Test;
-                yield return ConditionalExpression.IfTrue;
-                yield return ConditionalExpression.IfFalse;
-            }
-        }
-
-        public ConditionalExpressionMutator(ConditionalExpression expression)
-        {
-            ConditionalExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class ConditionalExpressionMutator : IMutableExpression
+    {
+        protected ConditionalExpression ConditionalExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            return Expression.Condition(operands[0], operands[1], operands[2]);
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return ConditionalExpression.Test;
+                yield return ConditionalExpression.IfTrue;
+                yield return ConditionalExpression.IfFalse;
+            }
+        }
+
+        public ConditionalExpressionMutator(ConditionalExpression expression)
+        {
+            ConditionalExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ConstantExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ConstantExpressionMutator.cs
@@ -1,53 +1,53 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class ConstantExpressionMutator : IMutableExpression
-    {
-        protected ConstantExpression ConstantExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            return Expression.Constant(ConstantExpression.Value, ConstantExpression.Type);
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get { yield break; }
-        }
-
-        public ConstantExpressionMutator(ConstantExpression expression)
-        {
-            ConstantExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class ConstantExpressionMutator : IMutableExpression
+    {
+        protected ConstantExpression ConstantExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            return Expression.Constant(ConstantExpression.Value, ConstantExpression.Type);
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get { yield break; }
+        }
+
+        public ConstantExpressionMutator(ConstantExpression expression)
+        {
+            ConstantExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/IMemberBindingMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/IMemberBindingMutator.cs
@@ -1,45 +1,45 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal interface IMemberBindingMutator
-    {
-        /// <summary>
-        /// Represents MemberBinding operands, ie anything that is an expression
-        /// </summary>
-        IEnumerable<Expression> Operands { get; }
-        /// <summary>
-        /// Replaces operands and returns a corresponding Expression
-        /// </summary>
-        /// <param name="operands"></param>
-        /// <returns></returns>
-        MemberBinding Mutate(IList<Expression> operands);
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal interface IMemberBindingMutator
+    {
+        /// <summary>
+        /// Represents MemberBinding operands, ie anything that is an expression
+        /// </summary>
+        IEnumerable<Expression> Operands { get; }
+        /// <summary>
+        /// Replaces operands and returns a corresponding Expression
+        /// </summary>
+        /// <param name="operands"></param>
+        /// <returns></returns>
+        MemberBinding Mutate(IList<Expression> operands);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/InvocationExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/InvocationExpressionMutator.cs
@@ -1,59 +1,59 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class InvocationExpressionMutator : IMutableExpression
-    {
-        protected InvocationExpression InvocationExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            return Expression.Invoke(operands[0], operands.Skip(1));
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return InvocationExpression.Expression;
-                foreach (var argument in InvocationExpression.Arguments)
-                    yield return argument;
-            }
-        }
-
-        public InvocationExpressionMutator(InvocationExpression expression)
-        {
-            InvocationExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class InvocationExpressionMutator : IMutableExpression
+    {
+        protected InvocationExpression InvocationExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            return Expression.Invoke(operands[0], operands.Skip(1));
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return InvocationExpression.Expression;
+                foreach (var argument in InvocationExpression.Arguments)
+                    yield return argument;
+            }
+        }
+
+        public InvocationExpressionMutator(InvocationExpression expression)
+        {
+            InvocationExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/LambdaExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/LambdaExpressionMutator.cs
@@ -1,59 +1,59 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class LambdaExpressionMutator : IMutableExpression
-    {
-        protected LambdaExpression LambdaExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            return Expression.Lambda(LambdaExpression.Type, operands[0], operands.Skip(1).Cast<ParameterExpression>());
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return LambdaExpression.Body;
-                foreach (var parameter in LambdaExpression.Parameters)
-                    yield return parameter;
-            }
-        }
-
-        public LambdaExpressionMutator(LambdaExpression expression)
-        {
-            LambdaExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class LambdaExpressionMutator : IMutableExpression
+    {
+        protected LambdaExpression LambdaExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            return Expression.Lambda(LambdaExpression.Type, operands[0], operands.Skip(1).Cast<ParameterExpression>());
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return LambdaExpression.Body;
+                foreach (var parameter in LambdaExpression.Parameters)
+                    yield return parameter;
+            }
+        }
+
+        public LambdaExpressionMutator(LambdaExpression expression)
+        {
+            LambdaExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ListInitExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ListInitExpressionMutator.cs
@@ -1,63 +1,63 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class ListInitExpressionMutator : IMutableExpression
-    {
-        protected ListInitExpression ListInitExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            // It's possible that the NewExpression was "optimized away" and 
-            // replaced with a ConstantExpression.
-            // See Test_NUnit_MsSql.ReadTest.C27_SelectEntitySet, 
-            var ne = operands[0] as NewExpression;
-            if (ne != null)
-                return Expression.ListInit(ne, ListInitExpression.Initializers);
-            return ListInitExpression;
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return ListInitExpression.NewExpression;
-                // TODO: handle initializers
-            }
-        }
-
-        public ListInitExpressionMutator(ListInitExpression expression)
-        {
-            ListInitExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class ListInitExpressionMutator : IMutableExpression
+    {
+        protected ListInitExpression ListInitExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            // It's possible that the NewExpression was "optimized away" and 
+            // replaced with a ConstantExpression.
+            // See Test_NUnit_MsSql.ReadTest.C27_SelectEntitySet, 
+            var ne = operands[0] as NewExpression;
+            if (ne != null)
+                return Expression.ListInit(ne, ListInitExpression.Initializers);
+            return ListInitExpression;
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return ListInitExpression.NewExpression;
+                // TODO: handle initializers
+            }
+        }
+
+        public ListInitExpressionMutator(ListInitExpression expression)
+        {
+            ListInitExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberAssignmentMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberAssignmentMutator.cs
@@ -1,51 +1,51 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class MemberAssignmentMutator : IMemberBindingMutator
-    {
-        protected MemberAssignment MemberAssignment { get; private set; }
-
-        public IEnumerable<Expression> Operands
-        {
-            get { yield return MemberAssignment.Expression; }
-        }
-
-        public MemberBinding Mutate(IList<Expression> operands)
-        {
-            return Expression.Bind(MemberAssignment.Member, operands[0]);
-        }
-
-        public MemberAssignmentMutator(MemberAssignment memberAssignment)
-        {
-            MemberAssignment = memberAssignment;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class MemberAssignmentMutator : IMemberBindingMutator
+    {
+        protected MemberAssignment MemberAssignment { get; private set; }
+
+        public IEnumerable<Expression> Operands
+        {
+            get { yield return MemberAssignment.Expression; }
+        }
+
+        public MemberBinding Mutate(IList<Expression> operands)
+        {
+            return Expression.Bind(MemberAssignment.Member, operands[0]);
+        }
+
+        public MemberAssignmentMutator(MemberAssignment memberAssignment)
+        {
+            MemberAssignment = memberAssignment;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberBindingMutatorFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberBindingMutatorFactory.cs
@@ -1,47 +1,47 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal static class MemberBindingMutatorFactory
-    {
-        public static IMemberBindingMutator GetMutator(MemberBinding memberBinding)
-        {
-            if (memberBinding is MemberAssignment)
-                return new MemberAssignmentMutator((MemberAssignment)memberBinding);
-            if (memberBinding is MemberMemberBinding)
-                return new MemberMemberBindingMutator((MemberMemberBinding)memberBinding);
-            if (memberBinding is MemberListBinding)
-                return new MemberListBindingMutator((MemberListBinding)memberBinding);
-            throw Error.BadArgument("S0040: Unknown Expression Type '{0}'", memberBinding.GetType());
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal static class MemberBindingMutatorFactory
+    {
+        public static IMemberBindingMutator GetMutator(MemberBinding memberBinding)
+        {
+            if (memberBinding is MemberAssignment)
+                return new MemberAssignmentMutator((MemberAssignment)memberBinding);
+            if (memberBinding is MemberMemberBinding)
+                return new MemberMemberBindingMutator((MemberMemberBinding)memberBinding);
+            if (memberBinding is MemberListBinding)
+                return new MemberListBindingMutator((MemberListBinding)memberBinding);
+            throw Error.BadArgument("S0040: Unknown Expression Type '{0}'", memberBinding.GetType());
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberExpressionMutator.cs
@@ -1,62 +1,62 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class MemberExpressionMutator : IMutableExpression
-    {
-        protected MemberExpression MemberExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            if (MemberExpression.Member is PropertyInfo)
-                return Expression.Property(operands[0], (PropertyInfo)MemberExpression.Member);
-            if (MemberExpression.Member is FieldInfo)
-                return Expression.Field(operands[0], (FieldInfo)MemberExpression.Member);
-            throw new Exception();
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get 
-            {
-                yield return MemberExpression.Expression;
-            }
-        }
-
-        public MemberExpressionMutator(MemberExpression expression)
-        {
-            MemberExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class MemberExpressionMutator : IMutableExpression
+    {
+        protected MemberExpression MemberExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            if (MemberExpression.Member is PropertyInfo)
+                return Expression.Property(operands[0], (PropertyInfo)MemberExpression.Member);
+            if (MemberExpression.Member is FieldInfo)
+                return Expression.Field(operands[0], (FieldInfo)MemberExpression.Member);
+            throw new Exception();
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get 
+            {
+                yield return MemberExpression.Expression;
+            }
+        }
+
+        public MemberExpressionMutator(MemberExpression expression)
+        {
+            MemberExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberInitExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberInitExpressionMutator.cs
@@ -1,83 +1,83 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class MemberInitExpressionMutator : IMutableExpression
-    {
-        protected MemberInitExpression MemberInitExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            var bindings = new List<MemberBinding>();
-            int operandIndex = MemberInitExpression.NewExpression.Arguments.Count();
-            NewExpression newNewExpression;
-            if (MemberInitExpression.NewExpression.Constructor != null)
-            {
-                newNewExpression = Expression.New(MemberInitExpression.NewExpression.Constructor,
-                                                  operands.Take(operandIndex));
-            }
-            else
-            {
-                newNewExpression = Expression.New(MemberInitExpression.NewExpression.Type);
-            }
-            foreach (var memberBinding in MemberInitExpression.Bindings)
-            {
-                var memberBindingMutator = MemberBindingMutatorFactory.GetMutator(memberBinding);
-                int operandsCount = memberBindingMutator.Operands.Count();
-                var subOperands = operands.Skip(operandIndex).Take(operandsCount).ToList();
-                bindings.Add(memberBindingMutator.Mutate(subOperands));
-                operandIndex += operandsCount;
-            }
-            return Expression.MemberInit(newNewExpression, bindings);
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                foreach (var newExpressionArgument in MemberInitExpression.NewExpression.Arguments)
-                    yield return newExpressionArgument;
-                foreach (var memberBinding in MemberInitExpression.Bindings)
-                {
-                    foreach (var expression in MemberBindingMutatorFactory.GetMutator(memberBinding).Operands)
-                        yield return expression;
-                }
-            }
-        }
-
-        public MemberInitExpressionMutator(MemberInitExpression expression)
-        {
-            MemberInitExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class MemberInitExpressionMutator : IMutableExpression
+    {
+        protected MemberInitExpression MemberInitExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            var bindings = new List<MemberBinding>();
+            int operandIndex = MemberInitExpression.NewExpression.Arguments.Count();
+            NewExpression newNewExpression;
+            if (MemberInitExpression.NewExpression.Constructor != null)
+            {
+                newNewExpression = Expression.New(MemberInitExpression.NewExpression.Constructor,
+                                                  operands.Take(operandIndex));
+            }
+            else
+            {
+                newNewExpression = Expression.New(MemberInitExpression.NewExpression.Type);
+            }
+            foreach (var memberBinding in MemberInitExpression.Bindings)
+            {
+                var memberBindingMutator = MemberBindingMutatorFactory.GetMutator(memberBinding);
+                int operandsCount = memberBindingMutator.Operands.Count();
+                var subOperands = operands.Skip(operandIndex).Take(operandsCount).ToList();
+                bindings.Add(memberBindingMutator.Mutate(subOperands));
+                operandIndex += operandsCount;
+            }
+            return Expression.MemberInit(newNewExpression, bindings);
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                foreach (var newExpressionArgument in MemberInitExpression.NewExpression.Arguments)
+                    yield return newExpressionArgument;
+                foreach (var memberBinding in MemberInitExpression.Bindings)
+                {
+                    foreach (var expression in MemberBindingMutatorFactory.GetMutator(memberBinding).Operands)
+                        yield return expression;
+                }
+            }
+        }
+
+        public MemberInitExpressionMutator(MemberInitExpression expression)
+        {
+            MemberInitExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberListBindingMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberListBindingMutator.cs
@@ -1,68 +1,68 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class MemberListBindingMutator : IMemberBindingMutator
-    {
-        protected MemberListBinding MemberListBinding { get; private set; }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                foreach (var elementInit in MemberListBinding.Initializers)
-                {
-                    foreach (var expression in elementInit.Arguments)
-                        yield return expression;
-                }
-            }
-        }
-
-        public MemberBinding Mutate(IList<Expression> operands)
-        {
-            var elementInits = new List<ElementInit>();
-            int operandIndex = 0;
-            foreach (var elementInit in MemberListBinding.Initializers)
-            {
-                int operandsCount = elementInit.Arguments.Count;
-                var subOperands = operands.Skip(operandIndex).Take(operandsCount);
-                elementInits.Add(Expression.ElementInit(elementInit.AddMethod, subOperands));
-                operandIndex += operandsCount;
-            }
-            return Expression.ListBind(MemberListBinding.Member, elementInits);
-        }
-
-        public MemberListBindingMutator(MemberListBinding memberListBinding)
-        {
-            MemberListBinding = memberListBinding;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class MemberListBindingMutator : IMemberBindingMutator
+    {
+        protected MemberListBinding MemberListBinding { get; private set; }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                foreach (var elementInit in MemberListBinding.Initializers)
+                {
+                    foreach (var expression in elementInit.Arguments)
+                        yield return expression;
+                }
+            }
+        }
+
+        public MemberBinding Mutate(IList<Expression> operands)
+        {
+            var elementInits = new List<ElementInit>();
+            int operandIndex = 0;
+            foreach (var elementInit in MemberListBinding.Initializers)
+            {
+                int operandsCount = elementInit.Arguments.Count;
+                var subOperands = operands.Skip(operandIndex).Take(operandsCount);
+                elementInits.Add(Expression.ElementInit(elementInit.AddMethod, subOperands));
+                operandIndex += operandsCount;
+            }
+            return Expression.ListBind(MemberListBinding.Member, elementInits);
+        }
+
+        public MemberListBindingMutator(MemberListBinding memberListBinding)
+        {
+            MemberListBinding = memberListBinding;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberMemberBindingMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MemberMemberBindingMutator.cs
@@ -1,70 +1,70 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class MemberMemberBindingMutator : IMemberBindingMutator
-    {
-        protected MemberMemberBinding MemberMemberBinding { get; private set; }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                // a MemberMemberBindings is recursive, so let's recurse
-                foreach (var memberBinding in MemberMemberBinding.Bindings)
-                {
-                    foreach (Expression operand in MemberBindingMutatorFactory.GetMutator(memberBinding).Operands)
-                        yield return operand;
-                }
-            }
-        }
-
-        public MemberBinding Mutate(IList<Expression> operands)
-        {
-            var bindings = new List<MemberBinding>();
-            int operandsIndex = 0;
-            // same thing here. The difficulty is that we have to split out operands
-            foreach (var memberBinding in MemberMemberBinding.Bindings)
-            {
-                int operandsCount = MemberBindingMutatorFactory.GetMutator(memberBinding).Operands.Count();
-                var subOperands = operands.Skip(operandsIndex).Take(operandsCount).ToList();
-                bindings.Add(MemberBindingMutatorFactory.GetMutator(memberBinding).Mutate(subOperands));
-                operandsIndex += operandsCount;
-            }
-            return Expression.MemberBind(MemberMemberBinding.Member, bindings);
-        }
-
-        public MemberMemberBindingMutator(MemberMemberBinding memberMemberBinding)
-        {
-            MemberMemberBinding = memberMemberBinding;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class MemberMemberBindingMutator : IMemberBindingMutator
+    {
+        protected MemberMemberBinding MemberMemberBinding { get; private set; }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                // a MemberMemberBindings is recursive, so let's recurse
+                foreach (var memberBinding in MemberMemberBinding.Bindings)
+                {
+                    foreach (Expression operand in MemberBindingMutatorFactory.GetMutator(memberBinding).Operands)
+                        yield return operand;
+                }
+            }
+        }
+
+        public MemberBinding Mutate(IList<Expression> operands)
+        {
+            var bindings = new List<MemberBinding>();
+            int operandsIndex = 0;
+            // same thing here. The difficulty is that we have to split out operands
+            foreach (var memberBinding in MemberMemberBinding.Bindings)
+            {
+                int operandsCount = MemberBindingMutatorFactory.GetMutator(memberBinding).Operands.Count();
+                var subOperands = operands.Skip(operandsIndex).Take(operandsCount).ToList();
+                bindings.Add(MemberBindingMutatorFactory.GetMutator(memberBinding).Mutate(subOperands));
+                operandsIndex += operandsCount;
+            }
+            return Expression.MemberBind(MemberMemberBinding.Member, bindings);
+        }
+
+        public MemberMemberBindingMutator(MemberMemberBinding memberMemberBinding)
+        {
+            MemberMemberBinding = memberMemberBinding;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MethodCallExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/MethodCallExpressionMutator.cs
@@ -1,59 +1,59 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class MethodCallExpressionMutator : IMutableExpression
-    {
-        protected MethodCallExpression MethodCallExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            return Expression.Call(operands[0], MethodCallExpression.Method, operands.Skip(1));
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return MethodCallExpression.Object;
-                foreach (var argument in MethodCallExpression.Arguments)
-                    yield return argument;
-            }
-        }
-
-        public MethodCallExpressionMutator(MethodCallExpression expression)
-        {
-            MethodCallExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class MethodCallExpressionMutator : IMutableExpression
+    {
+        protected MethodCallExpression MethodCallExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            return Expression.Call(operands[0], MethodCallExpression.Method, operands.Skip(1));
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return MethodCallExpression.Object;
+                foreach (var argument in MethodCallExpression.Arguments)
+                    yield return argument;
+            }
+        }
+
+        public MethodCallExpressionMutator(MethodCallExpression expression)
+        {
+            MethodCallExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/NewArrayExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/NewArrayExpressionMutator.cs
@@ -1,64 +1,64 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class NewArrayExpressionMutator : IMutableExpression
-    {
-        protected NewArrayExpression NewArrayExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            switch (NewArrayExpression.NodeType)
-            {
-                case ExpressionType.NewArrayBounds:
-                    return Expression.NewArrayBounds(NewArrayExpression.Type, operands);
-                case ExpressionType.NewArrayInit:
-                    return Expression.NewArrayInit(NewArrayExpression.Type, operands);
-            }
-            throw new Exception();
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                return NewArrayExpression.Expressions;
-            }
-        }
-
-        public NewArrayExpressionMutator(NewArrayExpression expression)
-        {
-            NewArrayExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class NewArrayExpressionMutator : IMutableExpression
+    {
+        protected NewArrayExpression NewArrayExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            switch (NewArrayExpression.NodeType)
+            {
+                case ExpressionType.NewArrayBounds:
+                    return Expression.NewArrayBounds(NewArrayExpression.Type, operands);
+                case ExpressionType.NewArrayInit:
+                    return Expression.NewArrayInit(NewArrayExpression.Type, operands);
+            }
+            throw new Exception();
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                return NewArrayExpression.Expressions;
+            }
+        }
+
+        public NewArrayExpressionMutator(NewArrayExpression expression)
+        {
+            NewArrayExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/NewExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/NewExpressionMutator.cs
@@ -1,58 +1,58 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class NewExpressionMutator : IMutableExpression
-    {
-        protected NewExpression NewExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            if (NewExpression.Members != null)
-                return Expression.New(NewExpression.Constructor, operands, NewExpression.Members);
-            return Expression.New(NewExpression.Constructor, operands);
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                return NewExpression.Arguments;
-            }
-        }
-
-        public NewExpressionMutator(NewExpression expression)
-        {
-            NewExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class NewExpressionMutator : IMutableExpression
+    {
+        protected NewExpression NewExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            if (NewExpression.Members != null)
+                return Expression.New(NewExpression.Constructor, operands, NewExpression.Members);
+            return Expression.New(NewExpression.Constructor, operands);
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                return NewExpression.Arguments;
+            }
+        }
+
+        public NewExpressionMutator(NewExpression expression)
+        {
+            NewExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ParameterExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/ParameterExpressionMutator.cs
@@ -1,56 +1,56 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class ParameterExpressionMutator : IMutableExpression
-    {
-        protected ParameterExpression ParameterExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            return Expression.Parameter(ParameterExpression.Type, ParameterExpression.Name);
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get 
-            { 
-                yield break;
-            }
-        }
-
-        public ParameterExpressionMutator(ParameterExpression expression)
-        {
-            ParameterExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class ParameterExpressionMutator : IMutableExpression
+    {
+        protected ParameterExpression ParameterExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            return Expression.Parameter(ParameterExpression.Type, ParameterExpression.Name);
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get 
+            { 
+                yield break;
+            }
+        }
+
+        public ParameterExpressionMutator(ParameterExpression expression)
+        {
+            ParameterExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/TypeBinaryExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/TypeBinaryExpressionMutator.cs
@@ -1,55 +1,55 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class TypeBinaryExpressionMutator : IMutableExpression
-    {
-        protected TypeBinaryExpression TypeBinaryExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            return Expression.TypeIs(operands[0], TypeBinaryExpression.Type);
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return TypeBinaryExpression.Expression;
-            }
-        }
-
-        public TypeBinaryExpressionMutator(TypeBinaryExpression expression)
-        {
-            TypeBinaryExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class TypeBinaryExpressionMutator : IMutableExpression
+    {
+        protected TypeBinaryExpression TypeBinaryExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            return Expression.TypeIs(operands[0], TypeBinaryExpression.Type);
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return TypeBinaryExpression.Expression;
+            }
+        }
+
+        public TypeBinaryExpressionMutator(TypeBinaryExpression expression)
+        {
+            TypeBinaryExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/UnaryExpressionMutator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionMutator/Implementation/UnaryExpressionMutator.cs
@@ -1,98 +1,98 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
-{
-    internal class UnaryExpressionMutator : IMutableExpression
-    {
-        protected UnaryExpression UnaryExpression { get; private set; }
-
-        public Expression Mutate(IList<Expression> operands)
-        {
-            switch (UnaryExpression.NodeType)
-            {
-                case ExpressionType.ArrayLength:
-                    return Expression.ArrayLength(operands[0]);
-
-                case ExpressionType.Convert:
-                    if (UnaryExpression.Method != null)
-                        return Expression.Convert(operands[0], UnaryExpression.Type, UnaryExpression.Method);
-                    return Expression.Convert(operands[0], UnaryExpression.Type);
-
-                case ExpressionType.ConvertChecked:
-                    if (UnaryExpression.Method != null)
-                        return Expression.ConvertChecked(operands[0], UnaryExpression.Type, UnaryExpression.Method);
-                    return Expression.ConvertChecked(operands[0], UnaryExpression.Type);
-
-                case ExpressionType.Negate:
-                    if (UnaryExpression.Method != null)
-                        return Expression.Negate(operands[0], UnaryExpression.Method);
-                    return Expression.Negate(operands[0]);
-
-                case ExpressionType.NegateChecked:
-                    if (UnaryExpression.Method != null)
-                        return Expression.NegateChecked(operands[0], UnaryExpression.Method);
-                    return Expression.NegateChecked(operands[0]);
-
-                case ExpressionType.Not:
-                    if (UnaryExpression.Method != null)
-                        return Expression.Not(operands[0], UnaryExpression.Method);
-                    return Expression.Not(operands[0]);
-
-                case ExpressionType.Quote:
-                    return Expression.Quote(operands[0]);
-
-                case ExpressionType.TypeAs:
-                    return Expression.TypeAs(operands[0], UnaryExpression.Type);
-
-                case ExpressionType.UnaryPlus:
-                    if (UnaryExpression.Method != null)
-                        return Expression.UnaryPlus(operands[0], UnaryExpression.Method);
-                    return Expression.UnaryPlus(operands[0]);
-
-            }
-            throw new Exception();
-        }
-
-        public IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return UnaryExpression.Operand;
-            }
-        }
-
-        public UnaryExpressionMutator(UnaryExpression expression)
-        {
-            UnaryExpression = expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation
+{
+    internal class UnaryExpressionMutator : IMutableExpression
+    {
+        protected UnaryExpression UnaryExpression { get; private set; }
+
+        public Expression Mutate(IList<Expression> operands)
+        {
+            switch (UnaryExpression.NodeType)
+            {
+                case ExpressionType.ArrayLength:
+                    return Expression.ArrayLength(operands[0]);
+
+                case ExpressionType.Convert:
+                    if (UnaryExpression.Method != null)
+                        return Expression.Convert(operands[0], UnaryExpression.Type, UnaryExpression.Method);
+                    return Expression.Convert(operands[0], UnaryExpression.Type);
+
+                case ExpressionType.ConvertChecked:
+                    if (UnaryExpression.Method != null)
+                        return Expression.ConvertChecked(operands[0], UnaryExpression.Type, UnaryExpression.Method);
+                    return Expression.ConvertChecked(operands[0], UnaryExpression.Type);
+
+                case ExpressionType.Negate:
+                    if (UnaryExpression.Method != null)
+                        return Expression.Negate(operands[0], UnaryExpression.Method);
+                    return Expression.Negate(operands[0]);
+
+                case ExpressionType.NegateChecked:
+                    if (UnaryExpression.Method != null)
+                        return Expression.NegateChecked(operands[0], UnaryExpression.Method);
+                    return Expression.NegateChecked(operands[0]);
+
+                case ExpressionType.Not:
+                    if (UnaryExpression.Method != null)
+                        return Expression.Not(operands[0], UnaryExpression.Method);
+                    return Expression.Not(operands[0]);
+
+                case ExpressionType.Quote:
+                    return Expression.Quote(operands[0]);
+
+                case ExpressionType.TypeAs:
+                    return Expression.TypeAs(operands[0], UnaryExpression.Type);
+
+                case ExpressionType.UnaryPlus:
+                    if (UnaryExpression.Method != null)
+                        return Expression.UnaryPlus(operands[0], UnaryExpression.Method);
+                    return Expression.UnaryPlus(operands[0]);
+
+            }
+            throw new Exception();
+        }
+
+        public IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return UnaryExpression.Operand;
+            }
+        }
+
+        public UnaryExpressionMutator(UnaryExpression expression)
+        {
+            UnaryExpression = expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionPrecedence.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionPrecedence.cs
@@ -1,97 +1,97 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal enum ExpressionPrecedence
-    {
-        /// <summary>
-        /// x.y  f(x)  a[x]  x++  x--  new typeof  checked  unchecked
-        /// </summary>
-        Primary,
-        /// <summary>
-        /// +  -  !  ~  ++x  --x  (T)x
-        /// </summary>
-        Unary,
-        /// <summary>
-        /// *  /  %
-        /// </summary>
-        Multiplicative,
-        /// <summary>
-        /// +  -
-        /// </summary>
-        Additive,
-        /// <summary>
-        /// &lt;&lt;  >>
-        /// </summary>
-        Shift,
-        /// <summary>
-        /// &lt;  >  &lt;=  >=  is  as
-        /// </summary>
-        RelationalAndTypeTest,
-        /// <summary>
-        /// ==  !=
-        /// </summary>
-        Equality,
-        /// <summary>
-        /// &amp;
-        /// </summary>
-        LogicalAnd,
-        /// <summary>
-        /// ^
-        /// </summary>
-        LogicalXor,
-        /// <summary>
-        /// |
-        /// </summary>
-        LogicalOr,
-        /// <summary>
-        /// &amp;&amp,
-        /// </summary>
-        ConditionalAnd,
-        /// <summary>
-        /// ||
-        /// </summary>
-        ConditionalOr,
-        /// <summary>
-        /// ??
-        /// </summary>
-        NullCoalescing,
-        /// <summary>
-        /// ?:
-        /// </summary>
-        Conditional,
-        /// <summary>
-        /// =  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |=
-        /// </summary>
-        Assignment,
-
-        /// <summary>
-        /// A SQL clause, FROM, WHERE, etc.
-        /// </summary>
-        Clause
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal enum ExpressionPrecedence
+    {
+        /// <summary>
+        /// x.y  f(x)  a[x]  x++  x--  new typeof  checked  unchecked
+        /// </summary>
+        Primary,
+        /// <summary>
+        /// +  -  !  ~  ++x  --x  (T)x
+        /// </summary>
+        Unary,
+        /// <summary>
+        /// *  /  %
+        /// </summary>
+        Multiplicative,
+        /// <summary>
+        /// +  -
+        /// </summary>
+        Additive,
+        /// <summary>
+        /// &lt;&lt;  >>
+        /// </summary>
+        Shift,
+        /// <summary>
+        /// &lt;  >  &lt;=  >=  is  as
+        /// </summary>
+        RelationalAndTypeTest,
+        /// <summary>
+        /// ==  !=
+        /// </summary>
+        Equality,
+        /// <summary>
+        /// &amp;
+        /// </summary>
+        LogicalAnd,
+        /// <summary>
+        /// ^
+        /// </summary>
+        LogicalXor,
+        /// <summary>
+        /// |
+        /// </summary>
+        LogicalOr,
+        /// <summary>
+        /// &amp;&amp,
+        /// </summary>
+        ConditionalAnd,
+        /// <summary>
+        /// ||
+        /// </summary>
+        ConditionalOr,
+        /// <summary>
+        /// ??
+        /// </summary>
+        NullCoalescing,
+        /// <summary>
+        /// ?:
+        /// </summary>
+        Conditional,
+        /// <summary>
+        /// =  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |=
+        /// </summary>
+        Assignment,
+
+        /// <summary>
+        /// A SQL clause, FROM, WHERE, etc.
+        /// </summary>
+        Clause
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionQuery.cs
@@ -1,60 +1,60 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    /// <summary>
-    /// Represents the first step Expression analysis result
-    /// </summary>
-    internal class ExpressionQuery
-    {
-        /// <summary>
-        /// Values coming from outside the request (external parameters)
-        /// Those parameters are filled at each request
-        /// </summary>
-        public IList<InputParameterExpression> Parameters { get; private set; }
-
-        /// <summary>
-        /// The SELECT expression itself
-        /// </summary>
-        public SelectExpression Select { get; set; }
-
-        /// <summary>
-        /// Expression that creates a row object
-        /// </summary>
-        internal Delegate RowObjectCreator { get; set; }
-
-        public ExpressionQuery()
-        {
-            Parameters = new List<InputParameterExpression>();
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    /// <summary>
+    /// Represents the first step Expression analysis result
+    /// </summary>
+    internal class ExpressionQuery
+    {
+        /// <summary>
+        /// Values coming from outside the request (external parameters)
+        /// Those parameters are filled at each request
+        /// </summary>
+        public IList<InputParameterExpression> Parameters { get; private set; }
+
+        /// <summary>
+        /// The SELECT expression itself
+        /// </summary>
+        public SelectExpression Select { get; set; }
+
+        /// <summary>
+        /// Expression that creates a row object
+        /// </summary>
+        internal Delegate RowObjectCreator { get; set; }
+
+        public ExpressionQuery()
+        {
+            Parameters = new List<InputParameterExpression>();
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionTier.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ExpressionTier.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    [Flags]
-    internal enum ExpressionTier
-    {
-        Sql = 0x0001,
-        Clr = 0x0002,
-        Any = Sql | Clr,
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    [Flags]
+    internal enum ExpressionTier
+    {
+        Sql = 0x0001,
+        Clr = 0x0002,
+        Any = Sql | Clr,
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ColumnExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ColumnExpression.cs
@@ -1,67 +1,67 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Diagnostics;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-using DbLinq.Util;
-using System.Data.Linq.Mapping;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// Describes a column, related to a table
-    /// </summary>
-    [DebuggerDisplay("ColumnExpression {Table.Name} (as {Table.Alias}).{Name}")]
-#if !MONO_STRICT
-    public
-#endif
-    class ColumnExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Column;
-
-        public TableExpression Table { get; private set; }
-        public string Name { get; private set; }
-        public MemberInfo MemberInfo { get; private set; }
-        public MemberInfo StorageInfo { get; private set; }
-
-        public string Alias { get; set; }
-
-        public int RequestIndex { get; set; }
-
-        public ColumnExpression(TableExpression table, MetaDataMember metaData)
-            : base(ExpressionType, metaData.Member.GetMemberType()) // memberInfo.GetMemberType())
-        {
-            Table = table;
-            Name = metaData.MappedName;
-            MemberInfo = metaData.Member;
-            StorageInfo = metaData.StorageMember;
-            RequestIndex = -1; // unused
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Diagnostics;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+using DbLinq.Util;
+using System.Data.Linq.Mapping;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// Describes a column, related to a table
+    /// </summary>
+    [DebuggerDisplay("ColumnExpression {Table.Name} (as {Table.Alias}).{Name}")]
+#if !MONO_STRICT
+    public
+#endif
+    class ColumnExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Column;
+
+        public TableExpression Table { get; private set; }
+        public string Name { get; private set; }
+        public MemberInfo MemberInfo { get; private set; }
+        public MemberInfo StorageInfo { get; private set; }
+
+        public string Alias { get; set; }
+
+        public int RequestIndex { get; set; }
+
+        public ColumnExpression(TableExpression table, MetaDataMember metaData)
+            : base(ExpressionType, metaData.Member.GetMemberType()) // memberInfo.GetMemberType())
+        {
+            Table = table;
+            Name = metaData.MappedName;
+            MemberInfo = metaData.Member;
+            StorageInfo = metaData.StorageMember;
+            RequestIndex = -1; // unused
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/CustomExpressionType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/CustomExpressionType.cs
@@ -1,50 +1,50 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// Those types are required by DbLinq internal expressions
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    enum CustomExpressionType
-    {
-        Scope = 1000,
-        MetaTable = 1010,
-        Table,
-        Column,
-        EntitySet,
-        InputParameter = 1020,
-        ObjectInputParameter,
-        ObjectOutputParameter,
-        OrderBy = 1030,
-        GroupBy,
-        Group = 1040,
-        StartIndexOffset
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// Those types are required by DbLinq internal expressions
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    enum CustomExpressionType
+    {
+        Scope = 1000,
+        MetaTable = 1010,
+        Table,
+        Column,
+        EntitySet,
+        InputParameter = 1020,
+        ObjectInputParameter,
+        ObjectOutputParameter,
+        OrderBy = 1030,
+        GroupBy,
+        Group = 1040,
+        StartIndexOffset
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/EntitySetExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/EntitySetExpression.cs
@@ -1,120 +1,120 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-
-using DbLinq.Util;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Implementation;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// A GroupExpression holds a grouped result
-    /// It is usually transparent, except for return value, where it mutates the type to IGrouping
-    /// </summary>
-    [DebuggerDisplay("EntitySetExpression: {TableExpression.Type}")]
-#if !MONO_STRICT
-    public
-#endif
-    class EntitySetExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.EntitySet;
-
-        TableExpression tableExpression;
-
-        public TableExpression TableExpression {
-            get {
-                if (tableExpression != null)
-                    return tableExpression;
-                var entityType = EntitySetType.GetGenericArguments()[0];
-                tableExpression = dispatcher.RegisterAssociation(sourceTable, memberInfo, entityType, builderContext);
-                return tableExpression;
-            }
-            set {
-                tableExpression = value;
-            }
-        }
-
-        BuilderContext builderContext;
-        public Type EntitySetType;
-        ExpressionDispatcher dispatcher;
-        TableExpression sourceTable;
-        MemberInfo memberInfo;
-
-        public List<KeyValuePair<ColumnExpression, MetaDataMember>> Columns = new List<KeyValuePair<ColumnExpression, MetaDataMember>>();
-
-        internal EntitySetExpression(TableExpression sourceTable, MemberInfo memberInfo, Type entitySetType, BuilderContext builderContext, ExpressionDispatcher dispatcher)
-            : base(ExpressionType, entitySetType)
-        {
-            this.builderContext = builderContext;
-            this.EntitySetType = entitySetType;
-            this.dispatcher = dispatcher;
-            this.sourceTable = sourceTable;
-            this.memberInfo = memberInfo;
-            ParseExpression(sourceTable);
-        }
-
-        private void ParseExpression(TableExpression sourceTable)
-        {
-            // var sourceTable = targetTable.JoinedTable;
-            var entityType = EntitySetType.GetGenericArguments()[0];
-
-            // BUG: This is ignoring External Mappings from XmlMappingSource.
-            var mappingType = builderContext.QueryContext.DataContext.Mapping.GetMetaType(entityType);
-            var foreignKeys = mappingType.Associations.Where(a => a.IsForeignKey && a.OtherType.Type == sourceTable.Type);
-
-            foreach (var fk in foreignKeys)
-            {
-                var oke = fk.OtherKey.GetEnumerator();
-                var tke = fk.ThisKey.GetEnumerator();
-                bool ho, ht;
-                while ((ho = oke.MoveNext()) && (ht = tke.MoveNext()))
-                {
-                    var ok = oke.Current;
-                    var tk = tke.Current;
-                    var column = dispatcher.RegisterColumn(sourceTable, ok.Member, builderContext);
-                    Columns.Add(new KeyValuePair<ColumnExpression, MetaDataMember>(column, tk));
-                }
-            }
-        }
-
-        public override Expression Mutate(IList<Expression> newOperands)
-        {
-            if (newOperands.Count != 1)
-                throw Error.BadArgument("S0063: Bad argument count");
-            TableExpression = (TableExpression)newOperands[0];
-            // ParseExpression(TableExpression);
-            return this;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+
+using DbLinq.Util;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Implementation;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// A GroupExpression holds a grouped result
+    /// It is usually transparent, except for return value, where it mutates the type to IGrouping
+    /// </summary>
+    [DebuggerDisplay("EntitySetExpression: {TableExpression.Type}")]
+#if !MONO_STRICT
+    public
+#endif
+    class EntitySetExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.EntitySet;
+
+        TableExpression tableExpression;
+
+        public TableExpression TableExpression {
+            get {
+                if (tableExpression != null)
+                    return tableExpression;
+                var entityType = EntitySetType.GetGenericArguments()[0];
+                tableExpression = dispatcher.RegisterAssociation(sourceTable, memberInfo, entityType, builderContext);
+                return tableExpression;
+            }
+            set {
+                tableExpression = value;
+            }
+        }
+
+        BuilderContext builderContext;
+        public Type EntitySetType;
+        ExpressionDispatcher dispatcher;
+        TableExpression sourceTable;
+        MemberInfo memberInfo;
+
+        public List<KeyValuePair<ColumnExpression, MetaDataMember>> Columns = new List<KeyValuePair<ColumnExpression, MetaDataMember>>();
+
+        internal EntitySetExpression(TableExpression sourceTable, MemberInfo memberInfo, Type entitySetType, BuilderContext builderContext, ExpressionDispatcher dispatcher)
+            : base(ExpressionType, entitySetType)
+        {
+            this.builderContext = builderContext;
+            this.EntitySetType = entitySetType;
+            this.dispatcher = dispatcher;
+            this.sourceTable = sourceTable;
+            this.memberInfo = memberInfo;
+            ParseExpression(sourceTable);
+        }
+
+        private void ParseExpression(TableExpression sourceTable)
+        {
+            // var sourceTable = targetTable.JoinedTable;
+            var entityType = EntitySetType.GetGenericArguments()[0];
+
+            // BUG: This is ignoring External Mappings from XmlMappingSource.
+            var mappingType = builderContext.QueryContext.DataContext.Mapping.GetMetaType(entityType);
+            var foreignKeys = mappingType.Associations.Where(a => a.IsForeignKey && a.OtherType.Type == sourceTable.Type);
+
+            foreach (var fk in foreignKeys)
+            {
+                var oke = fk.OtherKey.GetEnumerator();
+                var tke = fk.ThisKey.GetEnumerator();
+                bool ho, ht;
+                while ((ho = oke.MoveNext()) && (ht = tke.MoveNext()))
+                {
+                    var ok = oke.Current;
+                    var tk = tke.Current;
+                    var column = dispatcher.RegisterColumn(sourceTable, ok.Member, builderContext);
+                    Columns.Add(new KeyValuePair<ColumnExpression, MetaDataMember>(column, tk));
+                }
+            }
+        }
+
+        public override Expression Mutate(IList<Expression> newOperands)
+        {
+            if (newOperands.Count != 1)
+                throw Error.BadArgument("S0063: Bad argument count");
+            TableExpression = (TableExpression)newOperands[0];
+            // ParseExpression(TableExpression);
+            return this;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ExpressionTranslator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ExpressionTranslator.cs
@@ -1,61 +1,61 @@
-﻿using System;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    ///  Permits translation of expressions for specific database vendors
-    /// </summary>
-    /// <remarks>
-    ///  <para>
-    ///   Not all databases are equal, and some databases have SQL constraints 
-    ///   that are not shared by others.  Some of these SQL dialect constraints
-    ///   can be handled by <see cref="DbLinq.Vendor.ISqlProvider" />, but
-    ///   in some circumstances that's too late in the game.
-    ///  </para>
-    ///  <para>
-    ///   Case in point: for 
-    ///   <c>(from p in people orderby p.LastName select p).Count()</c>
-    ///   is translated into e.g. 
-    ///   <c>SELECT COUNT(*) FROM People ORDER BY LastName</c>.  However, this 
-    ///   is invalid for Microsoft SQL Server (the <c>ORDER BY</c> cannot be
-    ///   present), and by the time <c>ISqlProvider</c> is being used, there's
-    ///   no easy way to remove the OrderBy sequence.
-    ///  </para>
-    ///  <para>
-    ///   The <c>ExpressionTranslator</c> type allows vendor code to manipulate
-    ///   the expression tree <i>before</i> SQL generation, thus allowing 
-    ///   otherwise invalid expressions to be removed prior to the generation 
-    ///   phase.
-    ///  </para>
-    /// </remarks>
-#if !MONO_STRICT
-    public
-#endif
-    class ExpressionTranslator
-    {
-        /// <summary>
-        ///  Translate the entire (outermost) expression.
-        /// </summary>
-        /// <param name="e">
-        ///  A <see cref="SelectExpression" /> containing the expression to 
-        ///  translate.
-        /// </param>
-        /// <returns>
-        ///  The <see cref="SelectExpression" /> to use for SQL generation.
-        /// </returns>
-        /// <remarks>
-        ///  <para>
-        ///   Derived classes can override this method to manipulate the 
-        ///   entire expression prior to SQL generation.
-        ///  </para>
-        ///  <para>
-        ///   The default implementation returns <c>e</c> unchanged.
-        ///  </para>
-        /// </remarks>
-        public virtual SelectExpression OuterExpression(SelectExpression e)
-        {
-            return e;
-        }
-    }
-}
+﻿using System;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    ///  Permits translation of expressions for specific database vendors
+    /// </summary>
+    /// <remarks>
+    ///  <para>
+    ///   Not all databases are equal, and some databases have SQL constraints 
+    ///   that are not shared by others.  Some of these SQL dialect constraints
+    ///   can be handled by <see cref="DbLinq.Vendor.ISqlProvider" />, but
+    ///   in some circumstances that's too late in the game.
+    ///  </para>
+    ///  <para>
+    ///   Case in point: for 
+    ///   <c>(from p in people orderby p.LastName select p).Count()</c>
+    ///   is translated into e.g. 
+    ///   <c>SELECT COUNT(*) FROM People ORDER BY LastName</c>.  However, this 
+    ///   is invalid for Microsoft SQL Server (the <c>ORDER BY</c> cannot be
+    ///   present), and by the time <c>ISqlProvider</c> is being used, there's
+    ///   no easy way to remove the OrderBy sequence.
+    ///  </para>
+    ///  <para>
+    ///   The <c>ExpressionTranslator</c> type allows vendor code to manipulate
+    ///   the expression tree <i>before</i> SQL generation, thus allowing 
+    ///   otherwise invalid expressions to be removed prior to the generation 
+    ///   phase.
+    ///  </para>
+    /// </remarks>
+#if !MONO_STRICT
+    public
+#endif
+    class ExpressionTranslator
+    {
+        /// <summary>
+        ///  Translate the entire (outermost) expression.
+        /// </summary>
+        /// <param name="e">
+        ///  A <see cref="SelectExpression" /> containing the expression to 
+        ///  translate.
+        /// </param>
+        /// <returns>
+        ///  The <see cref="SelectExpression" /> to use for SQL generation.
+        /// </returns>
+        /// <remarks>
+        ///  <para>
+        ///   Derived classes can override this method to manipulate the 
+        ///   entire expression prior to SQL generation.
+        ///  </para>
+        ///  <para>
+        ///   The default implementation returns <c>e</c> unchanged.
+        ///  </para>
+        /// </remarks>
+        public virtual SelectExpression OuterExpression(SelectExpression e)
+        {
+            return e;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/GroupByExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/GroupByExpression.cs
@@ -1,160 +1,160 @@
-﻿#region MIT license
-// 
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-
-namespace DbLinq.Linq.Data.Sugar.Expressions
-{
-    /// <summary>
-    /// Represents a GROUP BY
-    /// </summary>
-    [DebuggerDisplay("GroupByExpression {Name} (as {Alias})")]
-    public class GroupByExpression : TableExpression
-    {
-        public new const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.GroupBy;
-
-        public ColumnExpression SimpleGroup { get; private set; }
-        public IDictionary<MemberInfo, ColumnExpression> MultipleGroup { get; private set; }
-        public Expression KeyExpression { get; private set; }
-        public TableExpression Table { get; set; }
-
-        protected bool HasKey { get; private set; }
-
-        public GroupByExpression(ColumnExpression simpleGroup, Expression keyExpression)
-            : base(ExpressionType, simpleGroup.Table)
-        {
-            SimpleGroup = simpleGroup;
-            HasKey = false;
-            KeyExpression = keyExpression;
-            Table = SimpleGroup.Table;
-        }
-
-        public GroupByExpression(IDictionary<MemberInfo, ColumnExpression> multipleGroup, Expression keyExpression)
-            : base(ExpressionType, multipleGroup.Values.First().Table)
-        {
-            MultipleGroup = new Dictionary<MemberInfo, ColumnExpression>(multipleGroup);
-            HasKey = true;
-            KeyExpression = keyExpression;
-            Table = MultipleGroup.Values.First().Table;
-        }
-
-        private GroupByExpression(TableExpression tableExpression)
-            : base(ExpressionType, tableExpression)
-        {
-            Table = tableExpression;
-        }
-
-        /// <summary>
-        /// Returns the request member.
-        /// For a MultipleGroup case, we return a modified copy of the current expression
-        ///                             this copy we be called again with the final MemberInfo
-        /// </summary>
-        /// <param name="memberInfo"></param>
-        /// <returns></returns>
-        public Expression GetMember(MemberInfo memberInfo)
-        {
-            // simple groupe case here, we accept only one request: the "Key"
-            if (SimpleGroup != null)
-            {
-                if (IsKeyRequest(memberInfo))
-                {
-                    return SimpleGroup;
-                }
-                throw Error.BadArgument("S0077: Unknown member '{0}' for simple GroupByExpression", memberInfo.Name);
-            }
-            // multiple group, we accept only Key at first time, then try any request
-            if (HasKey)
-            {
-                if (IsKeyRequest(memberInfo))
-                {
-                    return GetKey();
-                }
-                throw Error.BadArgument("S0087: Only 'Key' member can be requested here", memberInfo.Name);
-            }
-            ColumnExpression member;
-            if (!MultipleGroup.TryGetValue(memberInfo, out member))
-                throw Error.BadArgument("S0091: Unknown member '{0}' for multiple GroupByExpression", memberInfo.Name);
-            return member;
-        }
-
-        /// <summary>
-        /// The only member a IGrouping has is the "Key", and we're accepting only this one at the beginning
-        /// </summary>
-        /// <param name="memberInfo"></param>
-        /// <returns></returns>
-        protected virtual bool IsKeyRequest(MemberInfo memberInfo)
-        {
-            return memberInfo.Name == "Key";
-        }
-
-        public GroupByExpression GetKey()
-        {
-            var newGroupBy = new GroupByExpression(Table)
-                                 {
-                                     SimpleGroup = SimpleGroup,
-                                     MultipleGroup = MultipleGroup,
-                                     HasKey = false,
-                                     Table = Table,
-                                     KeyExpression = KeyExpression,
-                                 };
-            return newGroupBy;
-        }
-
-        public IEnumerable<ColumnExpression> Columns
-        {
-            get
-            {
-                if (SimpleGroup != null)
-                    yield return SimpleGroup;
-                else
-                {
-                    foreach (var column in MultipleGroup.Values)
-                        yield return column;
-                }
-            }
-        }
-
-        #region Expression mutation
-
-        public override Expression Mutate(IList<Expression> newOperands)
-        {
-            return this;
-        }
-
-        public override IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield break;
-            }
-        }
-
-        #endregion
-    }
-}
+﻿#region MIT license
+// 
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+
+namespace DbLinq.Linq.Data.Sugar.Expressions
+{
+    /// <summary>
+    /// Represents a GROUP BY
+    /// </summary>
+    [DebuggerDisplay("GroupByExpression {Name} (as {Alias})")]
+    public class GroupByExpression : TableExpression
+    {
+        public new const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.GroupBy;
+
+        public ColumnExpression SimpleGroup { get; private set; }
+        public IDictionary<MemberInfo, ColumnExpression> MultipleGroup { get; private set; }
+        public Expression KeyExpression { get; private set; }
+        public TableExpression Table { get; set; }
+
+        protected bool HasKey { get; private set; }
+
+        public GroupByExpression(ColumnExpression simpleGroup, Expression keyExpression)
+            : base(ExpressionType, simpleGroup.Table)
+        {
+            SimpleGroup = simpleGroup;
+            HasKey = false;
+            KeyExpression = keyExpression;
+            Table = SimpleGroup.Table;
+        }
+
+        public GroupByExpression(IDictionary<MemberInfo, ColumnExpression> multipleGroup, Expression keyExpression)
+            : base(ExpressionType, multipleGroup.Values.First().Table)
+        {
+            MultipleGroup = new Dictionary<MemberInfo, ColumnExpression>(multipleGroup);
+            HasKey = true;
+            KeyExpression = keyExpression;
+            Table = MultipleGroup.Values.First().Table;
+        }
+
+        private GroupByExpression(TableExpression tableExpression)
+            : base(ExpressionType, tableExpression)
+        {
+            Table = tableExpression;
+        }
+
+        /// <summary>
+        /// Returns the request member.
+        /// For a MultipleGroup case, we return a modified copy of the current expression
+        ///                             this copy we be called again with the final MemberInfo
+        /// </summary>
+        /// <param name="memberInfo"></param>
+        /// <returns></returns>
+        public Expression GetMember(MemberInfo memberInfo)
+        {
+            // simple groupe case here, we accept only one request: the "Key"
+            if (SimpleGroup != null)
+            {
+                if (IsKeyRequest(memberInfo))
+                {
+                    return SimpleGroup;
+                }
+                throw Error.BadArgument("S0077: Unknown member '{0}' for simple GroupByExpression", memberInfo.Name);
+            }
+            // multiple group, we accept only Key at first time, then try any request
+            if (HasKey)
+            {
+                if (IsKeyRequest(memberInfo))
+                {
+                    return GetKey();
+                }
+                throw Error.BadArgument("S0087: Only 'Key' member can be requested here", memberInfo.Name);
+            }
+            ColumnExpression member;
+            if (!MultipleGroup.TryGetValue(memberInfo, out member))
+                throw Error.BadArgument("S0091: Unknown member '{0}' for multiple GroupByExpression", memberInfo.Name);
+            return member;
+        }
+
+        /// <summary>
+        /// The only member a IGrouping has is the "Key", and we're accepting only this one at the beginning
+        /// </summary>
+        /// <param name="memberInfo"></param>
+        /// <returns></returns>
+        protected virtual bool IsKeyRequest(MemberInfo memberInfo)
+        {
+            return memberInfo.Name == "Key";
+        }
+
+        public GroupByExpression GetKey()
+        {
+            var newGroupBy = new GroupByExpression(Table)
+                                 {
+                                     SimpleGroup = SimpleGroup,
+                                     MultipleGroup = MultipleGroup,
+                                     HasKey = false,
+                                     Table = Table,
+                                     KeyExpression = KeyExpression,
+                                 };
+            return newGroupBy;
+        }
+
+        public IEnumerable<ColumnExpression> Columns
+        {
+            get
+            {
+                if (SimpleGroup != null)
+                    yield return SimpleGroup;
+                else
+                {
+                    foreach (var column in MultipleGroup.Values)
+                        yield return column;
+                }
+            }
+        }
+
+        #region Expression mutation
+
+        public override Expression Mutate(IList<Expression> newOperands)
+        {
+            return this;
+        }
+
+        public override IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield break;
+            }
+        }
+
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/GroupExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/GroupExpression.cs
@@ -1,76 +1,76 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// A GroupExpression holds a grouped result
-    /// It is usually transparent, except for return value, where it mutates the type to IGrouping
-    /// </summary>
-    [DebuggerDisplay("GroupExpression")]
-#if !MONO_STRICT
-    public
-#endif
-    class GroupExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Group;
-
-        public Expression GroupedExpression { get; private set; }
-        public Expression KeyExpression { get; private set; }
-
-        public IList<Expression> Clauses { get; private set; }
-
-        public GroupExpression(Expression groupedExpression, Expression keyExpression)
-            : base(ExpressionType, groupedExpression.Type)
-        {
-            GroupedExpression = groupedExpression;
-            KeyExpression = keyExpression;
-            Clauses = new List<Expression>();
-            // extract columns (for SQL build)
-            keyExpression.Recurse(
-                delegate(Expression e)
-                    {
-                        if (e is ColumnExpression)
-                            Clauses.Add(e);
-                        return e;
-                    }
-                );
-        }
-
-        public override Expression Mutate(IList<Expression> newOperands)
-        {
-            if (newOperands.Count > 0)
-                throw Error.BadArgument("S0065: Don't Mutate() a GroupExpression");
-            return this;
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// A GroupExpression holds a grouped result
+    /// It is usually transparent, except for return value, where it mutates the type to IGrouping
+    /// </summary>
+    [DebuggerDisplay("GroupExpression")]
+#if !MONO_STRICT
+    public
+#endif
+    class GroupExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Group;
+
+        public Expression GroupedExpression { get; private set; }
+        public Expression KeyExpression { get; private set; }
+
+        public IList<Expression> Clauses { get; private set; }
+
+        public GroupExpression(Expression groupedExpression, Expression keyExpression)
+            : base(ExpressionType, groupedExpression.Type)
+        {
+            GroupedExpression = groupedExpression;
+            KeyExpression = keyExpression;
+            Clauses = new List<Expression>();
+            // extract columns (for SQL build)
+            keyExpression.Recurse(
+                delegate(Expression e)
+                    {
+                        if (e is ColumnExpression)
+                            Clauses.Add(e);
+                        return e;
+                    }
+                );
+        }
+
+        public override Expression Mutate(IList<Expression> newOperands)
+        {
+            if (newOperands.Count > 0)
+                throw Error.BadArgument("S0065: Don't Mutate() a GroupExpression");
+            return this;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/IExecutableExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/IExecutableExpression.cs
@@ -1,40 +1,40 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-#if !MONO_STRICT
-    public
-#endif
-    interface IExecutableExpression
-    {
-        /// <summary>
-        /// Evaluates the expression value
-        /// </summary>
-        /// <returns></returns>
-        object Execute();
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+#if !MONO_STRICT
+    public
+#endif
+    interface IExecutableExpression
+    {
+        /// <summary>
+        /// Evaluates the expression value
+        /// </summary>
+        /// <returns></returns>
+        object Execute();
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/IMutableExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/IMutableExpression.cs
@@ -1,52 +1,52 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// Allows an Expression to enumerator its Operands and be mutated, ie changing its operands
-    /// Depending on the Expression type (such as System.Linq.Expressions), a new copy may be returned
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IMutableExpression
-    {
-        /// <summary>
-        /// Represents Expression operands, ie anything that is an expression
-        /// </summary>
-        IEnumerable<Expression> Operands { get; }
-        /// <summary>
-        /// Replaces operands and returns a corresponding Expression
-        /// </summary>
-        /// <param name="operands"></param>
-        /// <returns></returns>
-        Expression Mutate(IList<Expression> operands);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// Allows an Expression to enumerator its Operands and be mutated, ie changing its operands
+    /// Depending on the Expression type (such as System.Linq.Expressions), a new copy may be returned
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IMutableExpression
+    {
+        /// <summary>
+        /// Represents Expression operands, ie anything that is an expression
+        /// </summary>
+        IEnumerable<Expression> Operands { get; }
+        /// <summary>
+        /// Replaces operands and returns a corresponding Expression
+        /// </summary>
+        /// <param name="operands"></param>
+        /// <returns></returns>
+        Expression Mutate(IList<Expression> operands);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/InputParameterExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/InputParameterExpression.cs
@@ -1,66 +1,66 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Diagnostics;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    [DebuggerDisplay("InputParameterExpression (current value={GetValue()})")]
-#if !MONO_STRICT
-    public
-#endif
-    class InputParameterExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.InputParameter;
-
-        public Expression Expression { get; private set; }
-
-        public string Alias { get; set; }
-
-        private readonly Delegate getValueDelegate;
-        /// <summary>
-        /// Returns the outer parameter value
-        /// </summary>
-        /// <returns></returns>
-        public object GetValue()
-        {
-            return getValueDelegate.DynamicInvoke();
-        }
-
-        public InputParameterExpression(Expression expression, string alias)
-            : base(ExpressionType, expression.Type)
-        {
-            Expression = expression;
-            var lambda = Expression.Lambda(expression);
-            getValueDelegate = lambda.Compile();
-            Alias = alias;
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Diagnostics;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    [DebuggerDisplay("InputParameterExpression (current value={GetValue()})")]
+#if !MONO_STRICT
+    public
+#endif
+    class InputParameterExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.InputParameter;
+
+        public Expression Expression { get; private set; }
+
+        public string Alias { get; set; }
+
+        private readonly Delegate getValueDelegate;
+        /// <summary>
+        /// Returns the outer parameter value
+        /// </summary>
+        /// <returns></returns>
+        public object GetValue()
+        {
+            return getValueDelegate.DynamicInvoke();
+        }
+
+        public InputParameterExpression(Expression expression, string alias)
+            : base(ExpressionType, expression.Type)
+        {
+            Expression = expression;
+            var lambda = Expression.Lambda(expression);
+            getValueDelegate = lambda.Compile();
+            Alias = alias;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/MetaTableExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/MetaTableExpression.cs
@@ -1,70 +1,70 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// A MetaTablePiece contains aliases for tables (used on joins)
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class MetaTableExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.MetaTable;
-
-        protected IDictionary<MemberInfo, MutableExpression> Aliases; 
-
-        public MutableExpression GetTableExpression(MemberInfo memberInfo)
-        {
-            MutableExpression tablePiece;
-            Aliases.TryGetValue(memberInfo, out tablePiece);
-            return tablePiece;
-        }
-
-        public MetaTableExpression(IDictionary<MemberInfo, MutableExpression> aliases, Type metaTableType)
-            : base(ExpressionType, metaTableType)
-        {
-            /* This check was disabled just becouse should be implied by the usage
-            foreach (var alias in aliases)
-            {
-                if ( !(alias.Value is TableExpression) && !(alias.Value is MetaTableExpression))
-                {
-                    throw Error.BadArgument("Invalid MetaTable element type: {0}", alias.Value.Type);
-                }
-            }
-             * */
-            Aliases = aliases;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// A MetaTablePiece contains aliases for tables (used on joins)
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class MetaTableExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.MetaTable;
+
+        protected IDictionary<MemberInfo, MutableExpression> Aliases; 
+
+        public MutableExpression GetTableExpression(MemberInfo memberInfo)
+        {
+            MutableExpression tablePiece;
+            Aliases.TryGetValue(memberInfo, out tablePiece);
+            return tablePiece;
+        }
+
+        public MetaTableExpression(IDictionary<MemberInfo, MutableExpression> aliases, Type metaTableType)
+            : base(ExpressionType, metaTableType)
+        {
+            /* This check was disabled just becouse should be implied by the usage
+            foreach (var alias in aliases)
+            {
+                if ( !(alias.Value is TableExpression) && !(alias.Value is MetaTableExpression))
+                {
+                    throw Error.BadArgument("Invalid MetaTable element type: {0}", alias.Value.Type);
+                }
+            }
+             * */
+            Aliases = aliases;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/MutableExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/MutableExpression.cs
@@ -1,57 +1,57 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-#if !MONO_STRICT
-    public
-#endif
-    abstract class MutableExpression : Expression, IMutableExpression
-    {
-        protected MutableExpression(ExpressionType expressionType, Type type)
-            : base(expressionType, type)
-        {
-        }
-
-        public virtual IEnumerable<Expression> Operands
-        {
-            get { return new Expression[0]; }
-        }
-
-        public virtual Expression Mutate(IList<Expression> newOperands)
-        {
-            if (newOperands.Count > 0)
-                throw Error.BadArgument("S0047: Default MutableExpression does not allow operands");
-            return this;
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+#if !MONO_STRICT
+    public
+#endif
+    abstract class MutableExpression : Expression, IMutableExpression
+    {
+        protected MutableExpression(ExpressionType expressionType, Type type)
+            : base(expressionType, type)
+        {
+        }
+
+        public virtual IEnumerable<Expression> Operands
+        {
+            get { return new Expression[0]; }
+        }
+
+        public virtual Expression Mutate(IList<Expression> newOperands)
+        {
+            if (newOperands.Count > 0)
+                throw Error.BadArgument("S0047: Default MutableExpression does not allow operands");
+            return this;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ObjectInputParameterExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ObjectInputParameterExpression.cs
@@ -1,66 +1,66 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Diagnostics;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    [DebuggerDisplay("ObjectInputParameterExpression")]
-#if !MONO_STRICT
-    public
-#endif
-    class ObjectInputParameterExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.ObjectInputParameter;
-
-        public string Alias { get; private set; }
-        public Type ValueType { get; private set; }
-
-        private readonly Delegate getValueDelegate;
-        /// <summary>
-        /// Returns the outer parameter value
-        /// </summary>
-        /// <returns></returns>
-        public object GetValue(object o)
-        {
-            return getValueDelegate.DynamicInvoke(o);
-        }
-
-        public ObjectInputParameterExpression(LambdaExpression lambda, Type valueType, string alias)
-            : base(ExpressionType, lambda.Type)
-        {
-            if (lambda.Parameters.Count != 1)
-                throw Error.BadArgument("S0055: Lambda must take 1 argument");
-            getValueDelegate = lambda.Compile();
-            Alias = alias;
-            ValueType = valueType;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Diagnostics;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    [DebuggerDisplay("ObjectInputParameterExpression")]
+#if !MONO_STRICT
+    public
+#endif
+    class ObjectInputParameterExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.ObjectInputParameter;
+
+        public string Alias { get; private set; }
+        public Type ValueType { get; private set; }
+
+        private readonly Delegate getValueDelegate;
+        /// <summary>
+        /// Returns the outer parameter value
+        /// </summary>
+        /// <returns></returns>
+        public object GetValue(object o)
+        {
+            return getValueDelegate.DynamicInvoke(o);
+        }
+
+        public ObjectInputParameterExpression(LambdaExpression lambda, Type valueType, string alias)
+            : base(ExpressionType, lambda.Type)
+        {
+            if (lambda.Parameters.Count != 1)
+                throw Error.BadArgument("S0055: Lambda must take 1 argument");
+            getValueDelegate = lambda.Compile();
+            Alias = alias;
+            ValueType = valueType;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ObjectOutputParameterExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ObjectOutputParameterExpression.cs
@@ -1,66 +1,66 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Diagnostics;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    [DebuggerDisplay("ObjectOutputParameterExpression")]
-#if !MONO_STRICT
-    public
-#endif
-    class ObjectOutputParameterExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.ObjectOutputParameter;
-
-        public string Alias { get; private set; }
-        public Type ValueType { get; private set; }
-
-        private readonly Delegate setValueDelegate;
-        /// <summary>
-        /// Returns the outer parameter value
-        /// </summary>
-        /// <returns></returns>
-        public object SetValue(object o, object v)
-        {
-            return setValueDelegate.DynamicInvoke(o, v);
-        }
-
-        public ObjectOutputParameterExpression(LambdaExpression lambda, Type valueType, string alias)
-            : base(ExpressionType, lambda.Type)
-        {
-            if (lambda.Parameters.Count != 2)
-                throw Error.BadArgument("S0055: Lambda must have 2 arguments");
-            setValueDelegate = lambda.Compile();
-            Alias = alias;
-            ValueType = valueType;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Diagnostics;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    [DebuggerDisplay("ObjectOutputParameterExpression")]
+#if !MONO_STRICT
+    public
+#endif
+    class ObjectOutputParameterExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.ObjectOutputParameter;
+
+        public string Alias { get; private set; }
+        public Type ValueType { get; private set; }
+
+        private readonly Delegate setValueDelegate;
+        /// <summary>
+        /// Returns the outer parameter value
+        /// </summary>
+        /// <returns></returns>
+        public object SetValue(object o, object v)
+        {
+            return setValueDelegate.DynamicInvoke(o, v);
+        }
+
+        public ObjectOutputParameterExpression(LambdaExpression lambda, Type valueType, string alias)
+            : base(ExpressionType, lambda.Type)
+        {
+            if (lambda.Parameters.Count != 2)
+                throw Error.BadArgument("S0055: Lambda must have 2 arguments");
+            setValueDelegate = lambda.Compile();
+            Alias = alias;
+            ValueType = valueType;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/OperandsMutableExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/OperandsMutableExpression.cs
@@ -1,65 +1,65 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-#if !MONO_STRICT
-    public
-#endif
-    abstract class OperandsMutableExpression : MutableExpression
-    {
-        protected OperandsMutableExpression(ExpressionType expressionType, Type type, IList<Expression> operands)
-            : base(expressionType, type)
-        {
-            if(operands==null)
-                operands = new Expression[0];
-            this.operands = new ReadOnlyCollection<Expression>(operands);
-        }
-
-        protected ReadOnlyCollection<Expression> operands;
-        public override IEnumerable<Expression> Operands
-        {
-            get { return operands; }
-        }
-
-        /// <summary>
-        /// Must be implemented by inheritors. I had no better name. Suggestions welcome
-        /// </summary>
-        /// <param name="operands"></param>
-        /// <returns></returns>
-        protected abstract Expression Mutate2(IList<Expression> operands);
-
-        public override Expression Mutate(IList<Expression> newOperands)
-        {
-            return Mutate2(newOperands);
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+#if !MONO_STRICT
+    public
+#endif
+    abstract class OperandsMutableExpression : MutableExpression
+    {
+        protected OperandsMutableExpression(ExpressionType expressionType, Type type, IList<Expression> operands)
+            : base(expressionType, type)
+        {
+            if(operands==null)
+                operands = new Expression[0];
+            this.operands = new ReadOnlyCollection<Expression>(operands);
+        }
+
+        protected ReadOnlyCollection<Expression> operands;
+        public override IEnumerable<Expression> Operands
+        {
+            get { return operands; }
+        }
+
+        /// <summary>
+        /// Must be implemented by inheritors. I had no better name. Suggestions welcome
+        /// </summary>
+        /// <param name="operands"></param>
+        /// <returns></returns>
+        protected abstract Expression Mutate2(IList<Expression> operands);
+
+        public override Expression Mutate(IList<Expression> newOperands)
+        {
+            return Mutate2(newOperands);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/OrderByExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/OrderByExpression.cs
@@ -1,65 +1,65 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// Represents a ORDER column to be sorted on
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class OrderByExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.OrderBy;
-
-        public bool Descending { get; set; }
-        public Expression ColumnExpression { get; set; }
-
-        public OrderByExpression(bool descending, Expression columnExpression)
-            : base(ExpressionType, null)
-        {
-            Descending = descending;
-            ColumnExpression = columnExpression;
-        }
-
-        public override Expression Mutate(System.Collections.Generic.IList<Expression> newOperands)
-        {
-            ColumnExpression = newOperands[0];
-            return this;
-        }
-
-        public override System.Collections.Generic.IEnumerable<Expression> Operands
-        {
-            get
-            {
-                yield return ColumnExpression;
-            }
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// Represents a ORDER column to be sorted on
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class OrderByExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.OrderBy;
+
+        public bool Descending { get; set; }
+        public Expression ColumnExpression { get; set; }
+
+        public OrderByExpression(bool descending, Expression columnExpression)
+            : base(ExpressionType, null)
+        {
+            Descending = descending;
+            ColumnExpression = columnExpression;
+        }
+
+        public override Expression Mutate(System.Collections.Generic.IList<Expression> newOperands)
+        {
+            ColumnExpression = newOperands[0];
+            return this;
+        }
+
+        public override System.Collections.Generic.IEnumerable<Expression> Operands
+        {
+            get
+            {
+                yield return ColumnExpression;
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ScopeExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/ScopeExpression.cs
@@ -1,107 +1,107 @@
-﻿#region MIT license
-// 
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-namespace DbLinq.Linq.Data.Sugar.Expressions
-{
-    /// <summary>
-    /// ScopeExpression describes a selection.
-    /// It can be present at top-level or as subexpressions
-    /// </summary>
-    public class ScopeExpression : OperandsMutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Scope;
-
-        // Involved entities
-        public IList<TableExpression> Tables { get; private set; }
-        public IList<ColumnExpression> Columns { get; private set; }
-
-        // Clauses
-        public string ExecuteMethodName { get; set; } // for Execute<> calls, this member is filled with the method name
-        public LambdaExpression SelectExpression { get; set; } // Func<IDataRecord,T> --> creates an object from data record
-        public IList<Expression> Where { get; private set; }
-        public IList<OrderByExpression> OrderBy { get; private set; }
-        public IList<GroupExpression> Group { get; private set; }
-
-        public Expression Offset { get; set; }
-        public Expression Limit { get; set; }
-        public Expression OffsetAndLimit { get; set; }
-
-        // Parent scope: we will climb up to find if we don't find the request table in the current scope
-        public ScopeExpression Parent { get; private set; }
-
-        public ScopeExpression()
-            : base(ExpressionType, null, null)
-        {
-            Tables = new List<TableExpression>();
-            Columns = new List<ColumnExpression>();
-            // Local clauses
-            Where = new List<Expression>();
-            OrderBy = new List<OrderByExpression>();
-            Group = new List<GroupExpression>();
-        }
-
-        public ScopeExpression(ScopeExpression parentScopePiece)
-            : base(ExpressionType, null, null)
-        {
-            Parent = parentScopePiece;
-            // Tables and columns are empty, since the table/column lookup recurses to parentScopePiece
-            Tables = new List<TableExpression>();
-            Columns = new List<ColumnExpression>();
-            // Local clauses
-            Where = new List<Expression>();
-            OrderBy = new List<OrderByExpression>();
-            Group = new List<GroupExpression>();
-        }
-
-        private ScopeExpression(Type type, IList<Expression> operands)
-            : base(ExpressionType, type, operands)
-        {
-        }
-
-        protected override Expression Mutate2(IList<Expression> newOperands)
-        {
-            Type type;
-            if (newOperands.Count > 0)
-                type = newOperands[0].Type;
-            else
-                type = Type;
-            var scopeExpression = new ScopeExpression(type, newOperands);
-            scopeExpression.Tables = Tables;
-            scopeExpression.Columns = Columns;
-            scopeExpression.Where = Where;
-            scopeExpression.OrderBy = OrderBy;
-            scopeExpression.Group = Group;
-            scopeExpression.Parent = Parent;
-            scopeExpression.ExecuteMethodName = ExecuteMethodName;
-            scopeExpression.Limit = Limit;
-            scopeExpression.Offset = Offset;
-            scopeExpression.OffsetAndLimit = OffsetAndLimit;
-            return scopeExpression;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+namespace DbLinq.Linq.Data.Sugar.Expressions
+{
+    /// <summary>
+    /// ScopeExpression describes a selection.
+    /// It can be present at top-level or as subexpressions
+    /// </summary>
+    public class ScopeExpression : OperandsMutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Scope;
+
+        // Involved entities
+        public IList<TableExpression> Tables { get; private set; }
+        public IList<ColumnExpression> Columns { get; private set; }
+
+        // Clauses
+        public string ExecuteMethodName { get; set; } // for Execute<> calls, this member is filled with the method name
+        public LambdaExpression SelectExpression { get; set; } // Func<IDataRecord,T> --> creates an object from data record
+        public IList<Expression> Where { get; private set; }
+        public IList<OrderByExpression> OrderBy { get; private set; }
+        public IList<GroupExpression> Group { get; private set; }
+
+        public Expression Offset { get; set; }
+        public Expression Limit { get; set; }
+        public Expression OffsetAndLimit { get; set; }
+
+        // Parent scope: we will climb up to find if we don't find the request table in the current scope
+        public ScopeExpression Parent { get; private set; }
+
+        public ScopeExpression()
+            : base(ExpressionType, null, null)
+        {
+            Tables = new List<TableExpression>();
+            Columns = new List<ColumnExpression>();
+            // Local clauses
+            Where = new List<Expression>();
+            OrderBy = new List<OrderByExpression>();
+            Group = new List<GroupExpression>();
+        }
+
+        public ScopeExpression(ScopeExpression parentScopePiece)
+            : base(ExpressionType, null, null)
+        {
+            Parent = parentScopePiece;
+            // Tables and columns are empty, since the table/column lookup recurses to parentScopePiece
+            Tables = new List<TableExpression>();
+            Columns = new List<ColumnExpression>();
+            // Local clauses
+            Where = new List<Expression>();
+            OrderBy = new List<OrderByExpression>();
+            Group = new List<GroupExpression>();
+        }
+
+        private ScopeExpression(Type type, IList<Expression> operands)
+            : base(ExpressionType, type, operands)
+        {
+        }
+
+        protected override Expression Mutate2(IList<Expression> newOperands)
+        {
+            Type type;
+            if (newOperands.Count > 0)
+                type = newOperands[0].Type;
+            else
+                type = Type;
+            var scopeExpression = new ScopeExpression(type, newOperands);
+            scopeExpression.Tables = Tables;
+            scopeExpression.Columns = Columns;
+            scopeExpression.Where = Where;
+            scopeExpression.OrderBy = OrderBy;
+            scopeExpression.Group = Group;
+            scopeExpression.Parent = Parent;
+            scopeExpression.ExecuteMethodName = ExecuteMethodName;
+            scopeExpression.Limit = Limit;
+            scopeExpression.Offset = Offset;
+            scopeExpression.OffsetAndLimit = OffsetAndLimit;
+            return scopeExpression;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SelectExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SelectExpression.cs
@@ -1,121 +1,121 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// ScopeExpression describes a selection.
-    /// It can be present at top-level or as subexpressions
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class SelectExpression : OperandsMutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Scope;
-
-        // Involved entities
-        public IList<TableExpression> Tables { get; private set; }
-        public IList<ColumnExpression> Columns { get; private set; }
-
-        // Clauses
-        public string ExecuteMethodName { get; set; } // for Execute<> calls, this member is filled with the method name
-        public LambdaExpression Reader { get; set; } // Func<IDataRecord,DataMapper,T> --> creates an object from data record
-        public IList<Expression> Where { get; private set; }
-        public IList<OrderByExpression> OrderBy { get; private set; }
-        public IList<GroupExpression> Group { get; private set; }
-
-        public Expression Offset { get; set; }
-        public Expression Limit { get; set; }
-        public Expression OffsetAndLimit { get; set; }
-
-        // the following two clauses are used by expressions of same level, linked by a special operation (like "union")
-        public SelectExpression NextSelectExpression;
-        public SelectOperatorType NextSelectExpressionOperator;
-
-        // Parent scope: we will climb up to find if we don't find the request table in the current scope
-        public SelectExpression Parent { get; set; }
-
-        public SelectExpression()
-            : base(ExpressionType, null, null)
-        {
-            Tables = new List<TableExpression>();
-            Columns = new List<ColumnExpression>();
-            // Local clauses
-            Where = new List<Expression>();
-            OrderBy = new List<OrderByExpression>();
-            Group = new List<GroupExpression>();
-        }
-
-        public SelectExpression(SelectExpression parentSelectExpression)
-            : base(ExpressionType, null, null)
-        {
-            Parent = parentSelectExpression;
-            // Tables and columns are empty, since the table/column lookup recurses to parentScopePiece
-            Tables = new List<TableExpression>();
-            Columns = new List<ColumnExpression>();
-            // Local clauses
-            Where = new List<Expression>();
-            OrderBy = new List<OrderByExpression>();
-            Group = new List<GroupExpression>();
-        }
-
-        private SelectExpression(Type type, IList<Expression> operands)
-            : base(ExpressionType, type, operands)
-        {
-        }
-
-        protected override Expression Mutate2(IList<Expression> newOperands)
-        {
-            Type type;
-            if (newOperands.Count > 0)
-                type = newOperands[0].Type;
-            else
-                type = Type;
-            var scopeExpression = new SelectExpression(type, newOperands);
-            scopeExpression.Tables = Tables;
-            scopeExpression.Columns = Columns;
-            scopeExpression.Where = Where;
-            scopeExpression.OrderBy = OrderBy;
-            scopeExpression.Group = Group;
-            scopeExpression.Parent = Parent;
-            scopeExpression.ExecuteMethodName = ExecuteMethodName;
-            scopeExpression.Reader = Reader;
-            scopeExpression.Limit = Limit;
-            scopeExpression.Offset = Offset;
-            scopeExpression.OffsetAndLimit = OffsetAndLimit;
-            scopeExpression.NextSelectExpression = NextSelectExpression;
-            scopeExpression.NextSelectExpressionOperator = NextSelectExpressionOperator;
-            return scopeExpression;
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// ScopeExpression describes a selection.
+    /// It can be present at top-level or as subexpressions
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class SelectExpression : OperandsMutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Scope;
+
+        // Involved entities
+        public IList<TableExpression> Tables { get; private set; }
+        public IList<ColumnExpression> Columns { get; private set; }
+
+        // Clauses
+        public string ExecuteMethodName { get; set; } // for Execute<> calls, this member is filled with the method name
+        public LambdaExpression Reader { get; set; } // Func<IDataRecord,DataMapper,T> --> creates an object from data record
+        public IList<Expression> Where { get; private set; }
+        public IList<OrderByExpression> OrderBy { get; private set; }
+        public IList<GroupExpression> Group { get; private set; }
+
+        public Expression Offset { get; set; }
+        public Expression Limit { get; set; }
+        public Expression OffsetAndLimit { get; set; }
+
+        // the following two clauses are used by expressions of same level, linked by a special operation (like "union")
+        public SelectExpression NextSelectExpression;
+        public SelectOperatorType NextSelectExpressionOperator;
+
+        // Parent scope: we will climb up to find if we don't find the request table in the current scope
+        public SelectExpression Parent { get; set; }
+
+        public SelectExpression()
+            : base(ExpressionType, null, null)
+        {
+            Tables = new List<TableExpression>();
+            Columns = new List<ColumnExpression>();
+            // Local clauses
+            Where = new List<Expression>();
+            OrderBy = new List<OrderByExpression>();
+            Group = new List<GroupExpression>();
+        }
+
+        public SelectExpression(SelectExpression parentSelectExpression)
+            : base(ExpressionType, null, null)
+        {
+            Parent = parentSelectExpression;
+            // Tables and columns are empty, since the table/column lookup recurses to parentScopePiece
+            Tables = new List<TableExpression>();
+            Columns = new List<ColumnExpression>();
+            // Local clauses
+            Where = new List<Expression>();
+            OrderBy = new List<OrderByExpression>();
+            Group = new List<GroupExpression>();
+        }
+
+        private SelectExpression(Type type, IList<Expression> operands)
+            : base(ExpressionType, type, operands)
+        {
+        }
+
+        protected override Expression Mutate2(IList<Expression> newOperands)
+        {
+            Type type;
+            if (newOperands.Count > 0)
+                type = newOperands[0].Type;
+            else
+                type = Type;
+            var scopeExpression = new SelectExpression(type, newOperands);
+            scopeExpression.Tables = Tables;
+            scopeExpression.Columns = Columns;
+            scopeExpression.Where = Where;
+            scopeExpression.OrderBy = OrderBy;
+            scopeExpression.Group = Group;
+            scopeExpression.Parent = Parent;
+            scopeExpression.ExecuteMethodName = ExecuteMethodName;
+            scopeExpression.Reader = Reader;
+            scopeExpression.Limit = Limit;
+            scopeExpression.Offset = Offset;
+            scopeExpression.OffsetAndLimit = OffsetAndLimit;
+            scopeExpression.NextSelectExpression = NextSelectExpression;
+            scopeExpression.NextSelectExpressionOperator = NextSelectExpressionOperator;
+            return scopeExpression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SelectOperatorType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SelectOperatorType.cs
@@ -1,39 +1,39 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-#if !MONO_STRICT
-    public
-#endif
-    enum SelectOperatorType
-    {
-        Union,
-        UnionAll,
-        Intersection,
-        Exception,
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+#if !MONO_STRICT
+    public
+#endif
+    enum SelectOperatorType
+    {
+        Union,
+        UnionAll,
+        Intersection,
+        Exception,
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SpecialExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SpecialExpression.cs
@@ -1,292 +1,292 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
-using System.Linq.Expressions;
-using System.Linq;
-using System.Collections.ObjectModel;
-
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// Holds new expression types (sql related), all well as their operands
-    /// </summary>
-    [DebuggerDisplay("SpecialExpression {SpecialNodeType}")]
-#if !MONO_STRICT
-    public
-#endif
-    class SpecialExpression : OperandsMutableExpression, IExecutableExpression
-    {
-        public SpecialExpressionType SpecialNodeType { get { return (SpecialExpressionType)NodeType; } }
-
-        protected static Type GetSpecialExpressionTypeType(SpecialExpressionType specialExpressionType, IList<Expression> operands)
-        {
-            Type defaultType;
-            if (operands.Count > 0)
-                defaultType = operands[0].Type;
-            else
-                defaultType = null;
-            switch (specialExpressionType) // SETuse
-            {
-                case SpecialExpressionType.IsNull:
-                case SpecialExpressionType.IsNotNull:
-                    return typeof(bool);
-                case SpecialExpressionType.Concat:
-                    return typeof(string);
-                case SpecialExpressionType.Count:
-                    return typeof(int);
-                case SpecialExpressionType.Exists:
-                    return typeof(bool);
-                case SpecialExpressionType.Like:
-                    return typeof(bool);
-                case SpecialExpressionType.Min:
-                case SpecialExpressionType.Max:
-                case SpecialExpressionType.Sum:
-                    return defaultType; // for such methods, the type is related to the operands type
-                case SpecialExpressionType.Average:
-                    return typeof(double);
-                case SpecialExpressionType.StringLength:
-                    return typeof(int);
-                case SpecialExpressionType.ToUpper:
-                case SpecialExpressionType.ToLower:
-                    return typeof(string);
-                case SpecialExpressionType.In:
-                    return typeof(bool);
-                case SpecialExpressionType.Substring:
-                    return defaultType;
-                case SpecialExpressionType.Trim:
-                case SpecialExpressionType.LTrim:
-                case SpecialExpressionType.RTrim:
-                    return typeof(string);
-                case SpecialExpressionType.StringInsert:
-                    return typeof(string);
-                case SpecialExpressionType.Replace:
-                    return typeof(string);
-                case SpecialExpressionType.Remove:
-                    return typeof(string);
-                case SpecialExpressionType.IndexOf:
-                    return typeof(int);
-                case SpecialExpressionType.Year:
-                case SpecialExpressionType.Month:
-                case SpecialExpressionType.Day:
-                case SpecialExpressionType.Hour:
-                case SpecialExpressionType.Second:
-                case SpecialExpressionType.Minute:
-                case SpecialExpressionType.Millisecond:
-                    return typeof(int);
-                case SpecialExpressionType.Now:
-                case SpecialExpressionType.Date:
-                    return typeof(DateTime);
-                case SpecialExpressionType.DateDiffInMilliseconds:
-                    return typeof(long);
-                case SpecialExpressionType.Abs:
-                case SpecialExpressionType.Exp:
-                case SpecialExpressionType.Floor:
-                case SpecialExpressionType.Ln:
-                case SpecialExpressionType.Log:
-                case SpecialExpressionType.Pow:
-                case SpecialExpressionType.Round:
-                case SpecialExpressionType.Sign:
-                case SpecialExpressionType.Sqrt:
-                    return defaultType;
-
-                default:
-                    throw Error.BadArgument("S0058: Unknown SpecialExpressionType value {0}", specialExpressionType);
-            }
-        }
-
-        public SpecialExpression(SpecialExpressionType expressionType, params Expression[] operands)
-            : base((ExpressionType)expressionType, GetSpecialExpressionTypeType(expressionType, operands), operands)
-        {
-        }
-
-        public SpecialExpression(SpecialExpressionType expressionType, IList<Expression> operands)
-            : base((ExpressionType)expressionType, GetSpecialExpressionTypeType(expressionType, operands), operands)
-        {
-        }
-
-        protected override Expression Mutate2(IList<Expression> newOperands)
-        {
-            return new SpecialExpression((SpecialExpressionType)NodeType, newOperands);
-        }
-
-        public object Execute()
-        {
-            switch (SpecialNodeType) // SETuse
-            {
-                case SpecialExpressionType.IsNull:
-                    return operands[0].Evaluate() == null;
-                case SpecialExpressionType.IsNotNull:
-                    return operands[0].Evaluate() != null;
-                case SpecialExpressionType.Concat:
-                    {
-                        var values = new List<string>();
-                        foreach (var operand in operands)
-                        {
-                            var value = operand.Evaluate();
-                            if (value != null)
-                                values.Add(System.Convert.ToString(value, CultureInfo.InvariantCulture));
-                            else
-                                values.Add(null);
-                        }
-                        return string.Concat(values.ToArray());
-                    }
-                case SpecialExpressionType.Count:
-                    {
-                        var value = operands[0].Evaluate();
-                        // TODO: string is IEnumerable. See what we do here
-                        if (value is IEnumerable)
-                        {
-                            int count = 0;
-                            foreach (var dontCare in (IEnumerable)value)
-                                count++;
-                            return count;
-                        }
-                        // TODO: by default, shall we answer 1 or throw an exception?
-                        return 1;
-                    }
-                case SpecialExpressionType.Exists:
-                    {
-                        var value = operands[0].Evaluate();
-                        // TODO: string is IEnumerable. See what we do here
-                        if (value is IEnumerable)
-                        {
-                            return true;
-                        }
-                        // TODO: by default, shall we answer 1 or throw an exception?
-                        return false;
-                    }
-                case SpecialExpressionType.Min:
-                    {
-                        decimal? min = null;
-                        foreach (var operand in operands)
-                        {
-                            var value = System.Convert.ToDecimal(operand.Evaluate());
-                            if (!min.HasValue || value < min.Value)
-                                min = value;
-                        }
-                        return System.Convert.ChangeType(min.Value, operands[0].Type);
-                    }
-                case SpecialExpressionType.Max:
-                    {
-                        decimal? max = null;
-                        foreach (var operand in operands)
-                        {
-                            var value = System.Convert.ToDecimal(operand.Evaluate());
-                            if (!max.HasValue || value > max.Value)
-                                max = value;
-                        }
-                        return System.Convert.ChangeType(max.Value, operands[0].Type);
-                    }
-                case SpecialExpressionType.Sum:
-                    {
-                        decimal sum = operands.Select(op => System.Convert.ToDecimal(op.Evaluate())).Sum();
-                        return System.Convert.ChangeType(sum, operands.First().Type);
-                    }
-                case SpecialExpressionType.Average:
-                    {
-                        decimal sum = 0;
-                        foreach (var operand in operands)
-                            sum += System.Convert.ToDecimal(operand.Evaluate());
-                        return sum / operands.Count;
-                    }
-                case SpecialExpressionType.StringLength:
-                    return operands[0].Evaluate().ToString().Length;
-                case SpecialExpressionType.ToUpper:
-                    return operands[0].Evaluate().ToString().ToUpper();
-                case SpecialExpressionType.ToLower:
-                    return operands[0].Evaluate().ToString().ToLower();
-                case SpecialExpressionType.Substring:
-                    return EvaluateStandardCallInvoke("SubString", operands);
-                case SpecialExpressionType.In:
-                    throw new NotImplementedException();
-                case SpecialExpressionType.Replace:
-                    return EvaluateStandardCallInvoke("Replace", operands);
-                case SpecialExpressionType.Remove:
-                    return EvaluateStandardCallInvoke("Remove", operands);
-                case SpecialExpressionType.IndexOf:
-                    return EvaluateStandardCallInvoke("IndexOf", operands);
-                case SpecialExpressionType.Year:
-                    return ((DateTime)operands[0].Evaluate()).Year;
-                case SpecialExpressionType.Month:
-                    return ((DateTime)operands[0].Evaluate()).Month;
-                case SpecialExpressionType.Day:
-                    return ((DateTime)operands[0].Evaluate()).Day;
-                case SpecialExpressionType.Hour:
-                    return ((DateTime)operands[0].Evaluate()).Hour;
-                case SpecialExpressionType.Minute:
-                    return ((DateTime)operands[0].Evaluate()).Minute;
-                case SpecialExpressionType.Second:
-                    return ((DateTime)operands[0].Evaluate()).Second;
-                case SpecialExpressionType.Millisecond:
-                    return ((DateTime)operands[0].Evaluate()).Millisecond;
-                case SpecialExpressionType.Now:
-                    return DateTime.Now;
-                case SpecialExpressionType.Date:
-                    return ((DateTime)operands[0].Evaluate());
-                case SpecialExpressionType.DateDiffInMilliseconds:
-                    return ((DateTime)operands[0].Evaluate()) - ((DateTime)operands[1].Evaluate());
-                case SpecialExpressionType.Abs:
-                case SpecialExpressionType.Exp:
-                case SpecialExpressionType.Floor:
-                case SpecialExpressionType.Ln:
-                case SpecialExpressionType.Log:
-                case SpecialExpressionType.Pow:
-                case SpecialExpressionType.Round:
-                case SpecialExpressionType.Sign:
-                case SpecialExpressionType.Sqrt:
-                    return EvaluateMathCallInvoke(SpecialNodeType, operands);
-                default:
-                    throw Error.BadArgument("S0116: Unknown SpecialExpressionType ({0})", SpecialNodeType);
-            }
-        }
-
-        private object EvaluateMathCallInvoke(SpecialExpressionType SpecialNodeType, ReadOnlyCollection<Expression> operands)
-        {
-            return typeof(Math).GetMethod(SpecialNodeType.ToString(), operands.Skip(1).Select(op => op.Type).ToArray())
-                    .Invoke(null, operands.Skip(1).Select(op => op.Evaluate()).ToArray());
-        }
-        protected object EvaluateStatardMemberAccess(string propertyName, ReadOnlyCollection<Expression> operands)
-        {
-            return operands[0].Type.GetProperty(propertyName).GetValue(operands.First().Evaluate(), null);
-        }
-        protected object EvaluateStandardCallInvoke(string methodName, ReadOnlyCollection<Expression> operands)
-        {
-            return operands[0].Type.GetMethod(methodName,
-                                       operands.Skip(1).Select(op => op.Type).ToArray())
-                                       .Invoke(operands[0].Evaluate(),
-                                               operands.Skip(1).Select(op => op.Evaluate()).ToArray());
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.Linq.Expressions;
+using System.Linq;
+using System.Collections.ObjectModel;
+
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// Holds new expression types (sql related), all well as their operands
+    /// </summary>
+    [DebuggerDisplay("SpecialExpression {SpecialNodeType}")]
+#if !MONO_STRICT
+    public
+#endif
+    class SpecialExpression : OperandsMutableExpression, IExecutableExpression
+    {
+        public SpecialExpressionType SpecialNodeType { get { return (SpecialExpressionType)NodeType; } }
+
+        protected static Type GetSpecialExpressionTypeType(SpecialExpressionType specialExpressionType, IList<Expression> operands)
+        {
+            Type defaultType;
+            if (operands.Count > 0)
+                defaultType = operands[0].Type;
+            else
+                defaultType = null;
+            switch (specialExpressionType) // SETuse
+            {
+                case SpecialExpressionType.IsNull:
+                case SpecialExpressionType.IsNotNull:
+                    return typeof(bool);
+                case SpecialExpressionType.Concat:
+                    return typeof(string);
+                case SpecialExpressionType.Count:
+                    return typeof(int);
+                case SpecialExpressionType.Exists:
+                    return typeof(bool);
+                case SpecialExpressionType.Like:
+                    return typeof(bool);
+                case SpecialExpressionType.Min:
+                case SpecialExpressionType.Max:
+                case SpecialExpressionType.Sum:
+                    return defaultType; // for such methods, the type is related to the operands type
+                case SpecialExpressionType.Average:
+                    return typeof(double);
+                case SpecialExpressionType.StringLength:
+                    return typeof(int);
+                case SpecialExpressionType.ToUpper:
+                case SpecialExpressionType.ToLower:
+                    return typeof(string);
+                case SpecialExpressionType.In:
+                    return typeof(bool);
+                case SpecialExpressionType.Substring:
+                    return defaultType;
+                case SpecialExpressionType.Trim:
+                case SpecialExpressionType.LTrim:
+                case SpecialExpressionType.RTrim:
+                    return typeof(string);
+                case SpecialExpressionType.StringInsert:
+                    return typeof(string);
+                case SpecialExpressionType.Replace:
+                    return typeof(string);
+                case SpecialExpressionType.Remove:
+                    return typeof(string);
+                case SpecialExpressionType.IndexOf:
+                    return typeof(int);
+                case SpecialExpressionType.Year:
+                case SpecialExpressionType.Month:
+                case SpecialExpressionType.Day:
+                case SpecialExpressionType.Hour:
+                case SpecialExpressionType.Second:
+                case SpecialExpressionType.Minute:
+                case SpecialExpressionType.Millisecond:
+                    return typeof(int);
+                case SpecialExpressionType.Now:
+                case SpecialExpressionType.Date:
+                    return typeof(DateTime);
+                case SpecialExpressionType.DateDiffInMilliseconds:
+                    return typeof(long);
+                case SpecialExpressionType.Abs:
+                case SpecialExpressionType.Exp:
+                case SpecialExpressionType.Floor:
+                case SpecialExpressionType.Ln:
+                case SpecialExpressionType.Log:
+                case SpecialExpressionType.Pow:
+                case SpecialExpressionType.Round:
+                case SpecialExpressionType.Sign:
+                case SpecialExpressionType.Sqrt:
+                    return defaultType;
+
+                default:
+                    throw Error.BadArgument("S0058: Unknown SpecialExpressionType value {0}", specialExpressionType);
+            }
+        }
+
+        public SpecialExpression(SpecialExpressionType expressionType, params Expression[] operands)
+            : base((ExpressionType)expressionType, GetSpecialExpressionTypeType(expressionType, operands), operands)
+        {
+        }
+
+        public SpecialExpression(SpecialExpressionType expressionType, IList<Expression> operands)
+            : base((ExpressionType)expressionType, GetSpecialExpressionTypeType(expressionType, operands), operands)
+        {
+        }
+
+        protected override Expression Mutate2(IList<Expression> newOperands)
+        {
+            return new SpecialExpression((SpecialExpressionType)NodeType, newOperands);
+        }
+
+        public object Execute()
+        {
+            switch (SpecialNodeType) // SETuse
+            {
+                case SpecialExpressionType.IsNull:
+                    return operands[0].Evaluate() == null;
+                case SpecialExpressionType.IsNotNull:
+                    return operands[0].Evaluate() != null;
+                case SpecialExpressionType.Concat:
+                    {
+                        var values = new List<string>();
+                        foreach (var operand in operands)
+                        {
+                            var value = operand.Evaluate();
+                            if (value != null)
+                                values.Add(System.Convert.ToString(value, CultureInfo.InvariantCulture));
+                            else
+                                values.Add(null);
+                        }
+                        return string.Concat(values.ToArray());
+                    }
+                case SpecialExpressionType.Count:
+                    {
+                        var value = operands[0].Evaluate();
+                        // TODO: string is IEnumerable. See what we do here
+                        if (value is IEnumerable)
+                        {
+                            int count = 0;
+                            foreach (var dontCare in (IEnumerable)value)
+                                count++;
+                            return count;
+                        }
+                        // TODO: by default, shall we answer 1 or throw an exception?
+                        return 1;
+                    }
+                case SpecialExpressionType.Exists:
+                    {
+                        var value = operands[0].Evaluate();
+                        // TODO: string is IEnumerable. See what we do here
+                        if (value is IEnumerable)
+                        {
+                            return true;
+                        }
+                        // TODO: by default, shall we answer 1 or throw an exception?
+                        return false;
+                    }
+                case SpecialExpressionType.Min:
+                    {
+                        decimal? min = null;
+                        foreach (var operand in operands)
+                        {
+                            var value = System.Convert.ToDecimal(operand.Evaluate());
+                            if (!min.HasValue || value < min.Value)
+                                min = value;
+                        }
+                        return System.Convert.ChangeType(min.Value, operands[0].Type);
+                    }
+                case SpecialExpressionType.Max:
+                    {
+                        decimal? max = null;
+                        foreach (var operand in operands)
+                        {
+                            var value = System.Convert.ToDecimal(operand.Evaluate());
+                            if (!max.HasValue || value > max.Value)
+                                max = value;
+                        }
+                        return System.Convert.ChangeType(max.Value, operands[0].Type);
+                    }
+                case SpecialExpressionType.Sum:
+                    {
+                        decimal sum = operands.Select(op => System.Convert.ToDecimal(op.Evaluate())).Sum();
+                        return System.Convert.ChangeType(sum, operands.First().Type);
+                    }
+                case SpecialExpressionType.Average:
+                    {
+                        decimal sum = 0;
+                        foreach (var operand in operands)
+                            sum += System.Convert.ToDecimal(operand.Evaluate());
+                        return sum / operands.Count;
+                    }
+                case SpecialExpressionType.StringLength:
+                    return operands[0].Evaluate().ToString().Length;
+                case SpecialExpressionType.ToUpper:
+                    return operands[0].Evaluate().ToString().ToUpper();
+                case SpecialExpressionType.ToLower:
+                    return operands[0].Evaluate().ToString().ToLower();
+                case SpecialExpressionType.Substring:
+                    return EvaluateStandardCallInvoke("SubString", operands);
+                case SpecialExpressionType.In:
+                    throw new NotImplementedException();
+                case SpecialExpressionType.Replace:
+                    return EvaluateStandardCallInvoke("Replace", operands);
+                case SpecialExpressionType.Remove:
+                    return EvaluateStandardCallInvoke("Remove", operands);
+                case SpecialExpressionType.IndexOf:
+                    return EvaluateStandardCallInvoke("IndexOf", operands);
+                case SpecialExpressionType.Year:
+                    return ((DateTime)operands[0].Evaluate()).Year;
+                case SpecialExpressionType.Month:
+                    return ((DateTime)operands[0].Evaluate()).Month;
+                case SpecialExpressionType.Day:
+                    return ((DateTime)operands[0].Evaluate()).Day;
+                case SpecialExpressionType.Hour:
+                    return ((DateTime)operands[0].Evaluate()).Hour;
+                case SpecialExpressionType.Minute:
+                    return ((DateTime)operands[0].Evaluate()).Minute;
+                case SpecialExpressionType.Second:
+                    return ((DateTime)operands[0].Evaluate()).Second;
+                case SpecialExpressionType.Millisecond:
+                    return ((DateTime)operands[0].Evaluate()).Millisecond;
+                case SpecialExpressionType.Now:
+                    return DateTime.Now;
+                case SpecialExpressionType.Date:
+                    return ((DateTime)operands[0].Evaluate());
+                case SpecialExpressionType.DateDiffInMilliseconds:
+                    return ((DateTime)operands[0].Evaluate()) - ((DateTime)operands[1].Evaluate());
+                case SpecialExpressionType.Abs:
+                case SpecialExpressionType.Exp:
+                case SpecialExpressionType.Floor:
+                case SpecialExpressionType.Ln:
+                case SpecialExpressionType.Log:
+                case SpecialExpressionType.Pow:
+                case SpecialExpressionType.Round:
+                case SpecialExpressionType.Sign:
+                case SpecialExpressionType.Sqrt:
+                    return EvaluateMathCallInvoke(SpecialNodeType, operands);
+                default:
+                    throw Error.BadArgument("S0116: Unknown SpecialExpressionType ({0})", SpecialNodeType);
+            }
+        }
+
+        private object EvaluateMathCallInvoke(SpecialExpressionType SpecialNodeType, ReadOnlyCollection<Expression> operands)
+        {
+            return typeof(Math).GetMethod(SpecialNodeType.ToString(), operands.Skip(1).Select(op => op.Type).ToArray())
+                    .Invoke(null, operands.Skip(1).Select(op => op.Evaluate()).ToArray());
+        }
+        protected object EvaluateStatardMemberAccess(string propertyName, ReadOnlyCollection<Expression> operands)
+        {
+            return operands[0].Type.GetProperty(propertyName).GetValue(operands.First().Evaluate(), null);
+        }
+        protected object EvaluateStandardCallInvoke(string methodName, ReadOnlyCollection<Expression> operands)
+        {
+            return operands[0].Type.GetMethod(methodName,
+                                       operands.Skip(1).Select(op => op.Type).ToArray())
+                                       .Invoke(operands[0].Evaluate(),
+                                               operands.Skip(1).Select(op => op.Evaluate()).ToArray());
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SpecialExpressionType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SpecialExpressionType.cs
@@ -1,84 +1,84 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// SQL specific (and DBlinq required) custom expression types.
-    /// To add a new value here, please be sure to handle it everywhere
-    /// For this, search for "// SETuse" comment in project
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    enum SpecialExpressionType
-    {
-        IsNull = 100,
-        IsNotNull,
-        Concat,
-        Count,
-        Exists,
-        Like,
-        Min,
-        Max,
-        Sum,
-        Average,
-        StringLength,
-        ToUpper,
-        ToLower,
-        In,
-        Substring,
-        Trim,
-        LTrim,
-        RTrim,
-
-        StringInsert,
-        Replace,
-        Remove,
-        IndexOf,
-
-        Year,
-        Month,
-        Day,
-        Hour,
-        Minute,
-        Second,
-        Millisecond,
-        Now,
-        Date,
-        DateDiffInMilliseconds,
-
-        Abs,
-        Exp,
-        Floor,
-        Ln,
-        Log,
-        Pow,
-        Round,
-        Sign,
-        Sqrt
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// SQL specific (and DBlinq required) custom expression types.
+    /// To add a new value here, please be sure to handle it everywhere
+    /// For this, search for "// SETuse" comment in project
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    enum SpecialExpressionType
+    {
+        IsNull = 100,
+        IsNotNull,
+        Concat,
+        Count,
+        Exists,
+        Like,
+        Min,
+        Max,
+        Sum,
+        Average,
+        StringLength,
+        ToUpper,
+        ToLower,
+        In,
+        Substring,
+        Trim,
+        LTrim,
+        RTrim,
+
+        StringInsert,
+        Replace,
+        Remove,
+        IndexOf,
+
+        Year,
+        Month,
+        Day,
+        Hour,
+        Minute,
+        Second,
+        Millisecond,
+        Now,
+        Date,
+        DateDiffInMilliseconds,
+
+        Abs,
+        Exp,
+        Floor,
+        Ln,
+        Log,
+        Pow,
+        Round,
+        Sign,
+        Sqrt
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/StartIndexOffsetExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/StartIndexOffsetExpression.cs
@@ -1,38 +1,38 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-#if !MONO_STRICT
-    public
-#endif
-    class StartIndexOffsetExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.StartIndexOffset;
-        public bool StartsAtOne{get; private set;}
-        public Expression InnerExpression { get; private set; }
-
-        public StartIndexOffsetExpression(bool startsAtOne, Expression startExpression)
-            : base(ExpressionType, typeof(int))
-        {
-            this.InnerExpression = startExpression;
-            this.StartsAtOne = startsAtOne;
-        }
-        public override IEnumerable<Expression> Operands
-        {
-            get
-            {
-                return new Expression[] { this.InnerExpression };
-            }
-        }
-
-        public override Expression Mutate(IList<Expression> newOperands)
-        {
-            this.InnerExpression = newOperands.First();
-            return InnerExpression;
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+#if !MONO_STRICT
+    public
+#endif
+    class StartIndexOffsetExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.StartIndexOffset;
+        public bool StartsAtOne{get; private set;}
+        public Expression InnerExpression { get; private set; }
+
+        public StartIndexOffsetExpression(bool startsAtOne, Expression startExpression)
+            : base(ExpressionType, typeof(int))
+        {
+            this.InnerExpression = startExpression;
+            this.StartsAtOne = startsAtOne;
+        }
+        public override IEnumerable<Expression> Operands
+        {
+            get
+            {
+                return new Expression[] { this.InnerExpression };
+            }
+        }
+
+        public override Expression Mutate(IList<Expression> newOperands)
+        {
+            this.InnerExpression = newOperands.First();
+            return InnerExpression;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SubSelectExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/SubSelectExpression.cs
@@ -1,62 +1,62 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Diagnostics;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// A table expression produced by a sub select, which work almost like any other table
-    /// Different joins specify different tables
-    /// </summary>
-    [DebuggerDisplay("SubSelectExpression {Name} (as {Alias})")]
-#if !MONO_STRICT
-    public
-#endif
-    class SubSelectExpression : TableExpression
-    {
-        public SelectExpression Select { get; private set; }
-
-        public SubSelectExpression(SelectExpression select, Type type, string alias)
-            : base(type, alias)
-        {
-            this.Select = select;
-            this.Alias = alias;
-        }
-
-        public override bool IsEqualTo(TableExpression expression)
-        {
-            SubSelectExpression subSelectTable = expression as SubSelectExpression;
-            if (subSelectTable == null)
-                return false;
-            return Name == expression.Name && JoinID == expression.JoinID && Select == subSelectTable.Select;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Diagnostics;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// A table expression produced by a sub select, which work almost like any other table
+    /// Different joins specify different tables
+    /// </summary>
+    [DebuggerDisplay("SubSelectExpression {Name} (as {Alias})")]
+#if !MONO_STRICT
+    public
+#endif
+    class SubSelectExpression : TableExpression
+    {
+        public SelectExpression Select { get; private set; }
+
+        public SubSelectExpression(SelectExpression select, Type type, string alias)
+            : base(type, alias)
+        {
+            this.Select = select;
+            this.Alias = alias;
+        }
+
+        public override bool IsEqualTo(TableExpression expression)
+        {
+            SubSelectExpression subSelectTable = expression as SubSelectExpression;
+            if (subSelectTable == null)
+                return false;
+            return Name == expression.Name && JoinID == expression.JoinID && Select == subSelectTable.Select;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/TableExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/TableExpression.cs
@@ -1,131 +1,131 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Diagnostics;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    /// <summary>
-    /// A table is a default table, or a joined table
-    /// Different joins specify different tables
-    /// </summary>
-    [DebuggerDisplay("TableExpression {Name} (as {Alias})")]
-#if !MONO_STRICT
-    public
-#endif
-    class TableExpression : MutableExpression
-    {
-        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Table;
-
-        // Table idenfitication
-        public string Name { get; private set; }
-
-        // Join: if this table is related to another, the following informations are filled
-        public Expression JoinExpression { get; private set; } // full information is here, ReferencedTable and Join could be (in theory) extracted from this
-        public TableJoinType JoinType { get; private set; }
-        public string JoinID { get; private set; }
-        public TableExpression JoinedTable { get; private set; }
-
-        public string Alias { get; set; }
-
-        /// <summary>
-        /// Set table join
-        /// </summary>
-        /// <param name="joinType"></param>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        public void Join(TableJoinType joinType, TableExpression joinedTable, Expression joinExpression)
-        {
-            JoinExpression = joinExpression;
-            JoinType = joinType;
-            JoinedTable = joinedTable;
-        }
-
-        /// <summary>
-        /// Set table join
-        /// </summary>
-        /// <param name="joinType"></param>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        /// <param name="joinID"></param>
-        public void Join(TableJoinType joinType, TableExpression joinedTable, Expression joinExpression, string joinID)
-        {
-            Join(joinType, joinedTable, joinExpression);
-            JoinID = joinID;
-        }
-
-        /// <summary>
-        /// Set the table outer join, depending on the current table location
-        /// Result can set the table to be left outer join or right outer join
-        /// </summary>
-        public void SetOuterJoin()
-        {
-            // JoinExpression is non-null for associated table
-            if (JoinExpression != null)
-                JoinType |= TableJoinType.LeftOuter;
-            else
-                JoinType |= TableJoinType.RightOuter;
-        }
-
-        /// <summary>
-        /// Ctor for associated table
-        /// </summary>
-        /// <param name="type">.NET type</param>
-        /// <param name="name">Table base name</param>
-        /// <param name="joinID"></param>
-        public TableExpression(Type type, string name, string joinID)
-            : base(ExpressionType, type)
-        {
-            Name = name;
-            JoinID = joinID;
-        }
-
-        /// <summary>
-        /// Ctor for default table
-        /// </summary>
-        /// <param name="type">.NET type</param>
-        /// <param name="name">Table base name</param>
-        public TableExpression(Type type, string name)
-            : this(type, name, null)
-        {
-        }
-
-        protected TableExpression(ExpressionType expressionType, TableExpression tableExpression)
-            : base(expressionType, tableExpression.Type)
-        {
-            Name = tableExpression.Name;
-        }
-
-        public virtual bool IsEqualTo(TableExpression expression)
-        {
-            return Name == expression.Name && JoinID == expression.JoinID;
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Diagnostics;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    /// <summary>
+    /// A table is a default table, or a joined table
+    /// Different joins specify different tables
+    /// </summary>
+    [DebuggerDisplay("TableExpression {Name} (as {Alias})")]
+#if !MONO_STRICT
+    public
+#endif
+    class TableExpression : MutableExpression
+    {
+        public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.Table;
+
+        // Table idenfitication
+        public string Name { get; private set; }
+
+        // Join: if this table is related to another, the following informations are filled
+        public Expression JoinExpression { get; private set; } // full information is here, ReferencedTable and Join could be (in theory) extracted from this
+        public TableJoinType JoinType { get; private set; }
+        public string JoinID { get; private set; }
+        public TableExpression JoinedTable { get; private set; }
+
+        public string Alias { get; set; }
+
+        /// <summary>
+        /// Set table join
+        /// </summary>
+        /// <param name="joinType"></param>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        public void Join(TableJoinType joinType, TableExpression joinedTable, Expression joinExpression)
+        {
+            JoinExpression = joinExpression;
+            JoinType = joinType;
+            JoinedTable = joinedTable;
+        }
+
+        /// <summary>
+        /// Set table join
+        /// </summary>
+        /// <param name="joinType"></param>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        /// <param name="joinID"></param>
+        public void Join(TableJoinType joinType, TableExpression joinedTable, Expression joinExpression, string joinID)
+        {
+            Join(joinType, joinedTable, joinExpression);
+            JoinID = joinID;
+        }
+
+        /// <summary>
+        /// Set the table outer join, depending on the current table location
+        /// Result can set the table to be left outer join or right outer join
+        /// </summary>
+        public void SetOuterJoin()
+        {
+            // JoinExpression is non-null for associated table
+            if (JoinExpression != null)
+                JoinType |= TableJoinType.LeftOuter;
+            else
+                JoinType |= TableJoinType.RightOuter;
+        }
+
+        /// <summary>
+        /// Ctor for associated table
+        /// </summary>
+        /// <param name="type">.NET type</param>
+        /// <param name="name">Table base name</param>
+        /// <param name="joinID"></param>
+        public TableExpression(Type type, string name, string joinID)
+            : base(ExpressionType, type)
+        {
+            Name = name;
+            JoinID = joinID;
+        }
+
+        /// <summary>
+        /// Ctor for default table
+        /// </summary>
+        /// <param name="type">.NET type</param>
+        /// <param name="name">Table base name</param>
+        public TableExpression(Type type, string name)
+            : this(type, name, null)
+        {
+        }
+
+        protected TableExpression(ExpressionType expressionType, TableExpression tableExpression)
+            : base(expressionType, tableExpression.Type)
+        {
+            Name = tableExpression.Name;
+        }
+
+        public virtual bool IsEqualTo(TableExpression expression)
+        {
+            return Name == expression.Name && JoinID == expression.JoinID;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/TableJoinType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Expressions/TableJoinType.cs
@@ -1,62 +1,62 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace DbLinq.Data.Linq.Sugar.Expressions
-{
-    [Flags]
-#if !MONO_STRICT
-    public
-#endif
-    enum TableJoinType
-    {
-        /// <summary>
-        /// No join specified
-        /// </summary>
-        Default = 0,
-
-        /// <summary>
-        /// Inner join, default case for joins
-        /// </summary>
-        Inner = 0,
-
-        /// <summary>
-        /// Left outer join
-        /// </summary>
-        LeftOuter = 0x01,
-
-        /// <summary>
-        /// Right outer join
-        /// </summary>
-        RightOuter = 0x02,
-
-        /// <summary>
-        /// Full outer join
-        /// </summary>
-        FullOuter = LeftOuter | RightOuter,
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace DbLinq.Data.Linq.Sugar.Expressions
+{
+    [Flags]
+#if !MONO_STRICT
+    public
+#endif
+    enum TableJoinType
+    {
+        /// <summary>
+        /// No join specified
+        /// </summary>
+        Default = 0,
+
+        /// <summary>
+        /// Inner join, default case for joins
+        /// </summary>
+        Inner = 0,
+
+        /// <summary>
+        /// Left outer join
+        /// </summary>
+        LeftOuter = 0x01,
+
+        /// <summary>
+        /// Right outer join
+        /// </summary>
+        RightOuter = 0x02,
+
+        /// <summary>
+        /// Full outer join
+        /// </summary>
+        FullOuter = LeftOuter | RightOuter,
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IDataMapper.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IDataMapper.cs
@@ -1,119 +1,119 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IDataMapper
-    {
-        /// <summary>
-        /// Returns a table given a type, or null if the type is not mapped
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        string GetTableName(Type tableType, DataContext dataContext);
-
-        /// <summary>
-        /// Returns a column name, provided its table and memberInfo
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="memberInfo"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        string GetColumnName(TableExpression tableExpression, MemberInfo memberInfo, DataContext dataContext);
-
-        /// <summary>
-        /// Returns a column name, provided its table type and memberInfo
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="memberInfo"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        string GetColumnName(Type tableType, MemberInfo memberInfo, DataContext dataContext);
-
-        /// <summary>
-        /// Enumerates PKs
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        IList<MemberInfo> GetPrimaryKeys(TableExpression tableExpression, DataContext dataContext);
-
-        /// <summary>
-        /// Enumerates PKs
-        /// </summary>
-        /// <param name="tableDescription"></param>
-        /// <returns></returns>
-        IList<MemberInfo> GetPrimaryKeys(MetaTable tableDescription);
-
-        /// <summary>
-        /// Lists table mapped columns
-        /// </summary>
-        /// <param name="tableDescription"></param>
-        /// <returns></returns>
-        IList<MemberInfo> GetColumns(MetaTable tableDescription);
-
-        /// <summary>
-        /// Returns child associations (EntitySets)
-        /// </summary>
-        /// <param name="type"></param>
-        /// <returns></returns>
-        IList<MemberInfo> GetEntitySetAssociations(Type type);
-
-        /// <summary>
-        /// Returns parent associations (EntityRef)
-        /// </summary>
-        /// <param name="type"></param>
-        /// <returns></returns>
-        IList<MemberInfo> GetEntityRefAssociations(Type type);
-
-        /// <summary>
-        /// Returns association definition, if any
-        /// </summary>
-        /// <param name="thisTableExpression">The table referenced by the assocation (the type holding the member)</param>
-        /// <param name="memberInfo">The memberInfo related to association</param>
-        /// <param name="otherType"></param>
-        /// <param name="otherKey">The keys in the associated table</param>
-        /// <param name="joinType"></param>
-        /// <param name="joinID"></param>
-        /// <param name="dataContext"></param>
-        /// <returns>ThisKey</returns>
-        IList<MemberInfo> GetAssociation(TableExpression thisTableExpression, MemberInfo memberInfo, Type otherType, out IList<MemberInfo> otherKey, out TableJoinType joinType, out string joinID, DataContext dataContext);
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IDataMapper
+    {
+        /// <summary>
+        /// Returns a table given a type, or null if the type is not mapped
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        string GetTableName(Type tableType, DataContext dataContext);
+
+        /// <summary>
+        /// Returns a column name, provided its table and memberInfo
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="memberInfo"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        string GetColumnName(TableExpression tableExpression, MemberInfo memberInfo, DataContext dataContext);
+
+        /// <summary>
+        /// Returns a column name, provided its table type and memberInfo
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="memberInfo"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        string GetColumnName(Type tableType, MemberInfo memberInfo, DataContext dataContext);
+
+        /// <summary>
+        /// Enumerates PKs
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        IList<MemberInfo> GetPrimaryKeys(TableExpression tableExpression, DataContext dataContext);
+
+        /// <summary>
+        /// Enumerates PKs
+        /// </summary>
+        /// <param name="tableDescription"></param>
+        /// <returns></returns>
+        IList<MemberInfo> GetPrimaryKeys(MetaTable tableDescription);
+
+        /// <summary>
+        /// Lists table mapped columns
+        /// </summary>
+        /// <param name="tableDescription"></param>
+        /// <returns></returns>
+        IList<MemberInfo> GetColumns(MetaTable tableDescription);
+
+        /// <summary>
+        /// Returns child associations (EntitySets)
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        IList<MemberInfo> GetEntitySetAssociations(Type type);
+
+        /// <summary>
+        /// Returns parent associations (EntityRef)
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        IList<MemberInfo> GetEntityRefAssociations(Type type);
+
+        /// <summary>
+        /// Returns association definition, if any
+        /// </summary>
+        /// <param name="thisTableExpression">The table referenced by the assocation (the type holding the member)</param>
+        /// <param name="memberInfo">The memberInfo related to association</param>
+        /// <param name="otherType"></param>
+        /// <param name="otherKey">The keys in the associated table</param>
+        /// <param name="joinType"></param>
+        /// <param name="joinID"></param>
+        /// <param name="dataContext"></param>
+        /// <returns>ThisKey</returns>
+        IList<MemberInfo> GetAssociation(TableExpression thisTableExpression, MemberInfo memberInfo, Type otherType, out IList<MemberInfo> otherKey, out TableJoinType joinType, out string joinID, DataContext dataContext);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IDataRecordReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IDataRecordReader.cs
@@ -1,41 +1,41 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IDataRecordReader
-    {
-        /// <summary>
-        /// Returns a Expression reading a property from a IDataRecord, at the specified index
-        /// </summary>
-        /// <param name="returnType">The expected return type (to be mapped to the property)</param>
-        /// <returns>A lambda(IDataRecord,MappingColumn,fieldIndex) returning the field value</returns>
-        LambdaExpression GetPropertyReader(Type returnType);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IDataRecordReader
+    {
+        /// <summary>
+        /// Returns a Expression reading a property from a IDataRecord, at the specified index
+        /// </summary>
+        /// <param name="returnType">The expected return type (to be mapped to the property)</param>
+        /// <returns>A lambda(IDataRecord,MappingColumn,fieldIndex) returning the field value</returns>
+        LambdaExpression GetPropertyReader(Type returnType);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionDispatcher.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionDispatcher.cs
@@ -1,68 +1,68 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IExpressionDispatcher
-    {
-        /// <summary>
-        /// Registers the first table. Extracts the table type and registeres the piece
-        /// </summary>
-        /// <param name="requestingExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        Expression CreateTableExpression(Expression requestingExpression, BuilderContext builderContext);
-
-        /// <summary>
-        /// Entry point for Analyzis
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="parameter"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        Expression Analyze(ExpressionChain expressions, Expression parameter, BuilderContext builderContext);
-
-        /// <summary>
-        /// Builds the upper select clause
-        /// </summary>
-        /// <param name="selectExpression"></param>
-        /// <param name="builderContext"></param>
-        void BuildSelect(Expression selectExpression, BuilderContext builderContext);
-
-        /// <summary>
-        /// Builds a Row builder, based on a given list of parameters
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        LambdaExpression BuildTableReader(Type tableType, IList<string> parameters, BuilderContext builderContext);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IExpressionDispatcher
+    {
+        /// <summary>
+        /// Registers the first table. Extracts the table type and registeres the piece
+        /// </summary>
+        /// <param name="requestingExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        Expression CreateTableExpression(Expression requestingExpression, BuilderContext builderContext);
+
+        /// <summary>
+        /// Entry point for Analyzis
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="parameter"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        Expression Analyze(ExpressionChain expressions, Expression parameter, BuilderContext builderContext);
+
+        /// <summary>
+        /// Builds the upper select clause
+        /// </summary>
+        /// <param name="selectExpression"></param>
+        /// <param name="builderContext"></param>
+        void BuildSelect(Expression selectExpression, BuilderContext builderContext);
+
+        /// <summary>
+        /// Builds a Row builder, based on a given list of parameters
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        LambdaExpression BuildTableReader(Type tableType, IList<string> parameters, BuilderContext builderContext);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionLanguageParser.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionLanguageParser.cs
@@ -1,42 +1,42 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IExpressionLanguageParser
-    {
-        /// <summary>
-        /// Transforms language specific patterns to simple expressions.
-        /// Mainly used for VB support (but can also support non-specific common patterns)
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        Expression Parse(Expression expression, BuilderContext builderContext);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IExpressionLanguageParser
+    {
+        /// <summary>
+        /// Transforms language specific patterns to simple expressions.
+        /// Mainly used for VB support (but can also support non-specific common patterns)
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        Expression Parse(Expression expression, BuilderContext builderContext);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionOptimizer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionOptimizer.cs
@@ -1,43 +1,43 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IExpressionOptimizer
-    {
-        /// <summary>
-        /// Optimizes expressions:
-        /// - Reduces constant trees
-        /// - Changes some expressions (ie "not a == b" ==> "a != b")
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        Expression Optimize(Expression expression, BuilderContext builderContext);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IExpressionOptimizer
+    {
+        /// <summary>
+        /// Optimizes expressions:
+        /// - Reduces constant trees
+        /// - Changes some expressions (ie "not a == b" ==> "a != b")
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        Expression Optimize(Expression expression, BuilderContext builderContext);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionQualifier.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IExpressionQualifier.cs
@@ -1,55 +1,55 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IExpressionQualifier
-    {
-        /// <summary>
-        /// Returns Expression precedence. Higher value means lower precedence.
-        /// http://en.csharp-online.net/ECMA-334:_14.2.1_Operator_precedence_and_associativity
-        /// We added the Clase precedence, which is the lowest
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        ExpressionPrecedence GetPrecedence(Expression expression);
-
-        /// <summary>
-        /// Determines wether an expression can run in Clr or Sql
-        /// A request is valid is it starts with Clr only, followed by Any and ends (at bottom) with Sql.
-        /// With this, we can:
-        /// - Find the first point cut from Clr to Any
-        /// - Find the second point cut from Any to Sql
-        /// Select a strategy to load more or less the Clr or Sql engine
-        /// This is used only for SELECT clause
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        ExpressionTier GetTier(Expression expression);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IExpressionQualifier
+    {
+        /// <summary>
+        /// Returns Expression precedence. Higher value means lower precedence.
+        /// http://en.csharp-online.net/ECMA-334:_14.2.1_Operator_precedence_and_associativity
+        /// We added the Clase precedence, which is the lowest
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        ExpressionPrecedence GetPrecedence(Expression expression);
+
+        /// <summary>
+        /// Determines wether an expression can run in Clr or Sql
+        /// A request is valid is it starts with Clr only, followed by Any and ends (at bottom) with Sql.
+        /// With this, we can:
+        /// - Find the first point cut from Clr to Any
+        /// - Find the second point cut from Any to Sql
+        /// Select a strategy to load more or less the Clr or Sql engine
+        /// This is used only for SELECT clause
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        ExpressionTier GetTier(Expression expression);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IPrequelAnalyzer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IPrequelAnalyzer.cs
@@ -1,41 +1,41 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IPrequelAnalyzer
-    {
-        /// <summary>
-        /// Translates some generic CLR patterns to specific preSQL patterns
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        Expression Analyze(Expression expression, BuilderContext builderContext);
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IPrequelAnalyzer
+    {
+        /// <summary>
+        /// Translates some generic CLR patterns to specific preSQL patterns
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        Expression Analyze(Expression expression, BuilderContext builderContext);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IQueryBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IQueryBuilder.cs
@@ -1,87 +1,87 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IQueryBuilder
-    {
-        /// <summary>
-        /// Creates a query for selection
-        /// </summary>
-        /// <param name="expressions"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        SelectQuery GetSelectQuery(ExpressionChain expressions, QueryContext queryContext);
-
-        /// <summary>
-        /// Creates a query for insertion
-        /// </summary>
-        /// <param name="objectToInsert"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        UpsertQuery GetInsertQuery(object objectToInsert, QueryContext queryContext);
-
-        /// <summary>
-        /// Creates or gets an UPDATE query
-        /// </summary>
-        /// <param name="objectToUpdate"></param>
-        /// <param name="modifiedMembers">List of modified members, or NULL</param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        UpsertQuery GetUpdateQuery(object objectToUpdate, IList<MemberInfo> modifiedMembers, QueryContext queryContext);
-
-        /// <summary>
-        /// Creates or gets a DELETE query
-        /// </summary>
-        /// <param name="objectToDelete"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        DeleteQuery GetDeleteQuery(object objectToDelete, QueryContext queryContext);
-
-
-        /// <summary>
-        /// Converts a direct SQL query to a safe query with named parameters
-        /// </summary>
-        /// <param name="sql">Raw SQL query</param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        DirectQuery GetDirectQuery(string sql, QueryContext queryContext);
-
-        /// <summary>
-        /// Returns a Delegate to create a row for a given IDataRecord
-        /// The Delegate is Func&lt;IDataRecord,MappingContext,"tableType">
-        /// </summary>
-        /// <param name="tableType">The table type (must be managed by DataContext)</param>
-        /// <param name="parameters"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        Delegate GetTableReader(Type tableType, IList<string> parameters, QueryContext queryContext);
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IQueryBuilder
+    {
+        /// <summary>
+        /// Creates a query for selection
+        /// </summary>
+        /// <param name="expressions"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        SelectQuery GetSelectQuery(ExpressionChain expressions, QueryContext queryContext);
+
+        /// <summary>
+        /// Creates a query for insertion
+        /// </summary>
+        /// <param name="objectToInsert"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        UpsertQuery GetInsertQuery(object objectToInsert, QueryContext queryContext);
+
+        /// <summary>
+        /// Creates or gets an UPDATE query
+        /// </summary>
+        /// <param name="objectToUpdate"></param>
+        /// <param name="modifiedMembers">List of modified members, or NULL</param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        UpsertQuery GetUpdateQuery(object objectToUpdate, IList<MemberInfo> modifiedMembers, QueryContext queryContext);
+
+        /// <summary>
+        /// Creates or gets a DELETE query
+        /// </summary>
+        /// <param name="objectToDelete"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        DeleteQuery GetDeleteQuery(object objectToDelete, QueryContext queryContext);
+
+
+        /// <summary>
+        /// Converts a direct SQL query to a safe query with named parameters
+        /// </summary>
+        /// <param name="sql">Raw SQL query</param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        DirectQuery GetDirectQuery(string sql, QueryContext queryContext);
+
+        /// <summary>
+        /// Returns a Delegate to create a row for a given IDataRecord
+        /// The Delegate is Func&lt;IDataRecord,MappingContext,"tableType">
+        /// </summary>
+        /// <param name="tableType">The table type (must be managed by DataContext)</param>
+        /// <param name="parameters"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        Delegate GetTableReader(Type tableType, IList<string> parameters, QueryContext queryContext);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IQueryCache.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IQueryCache.cs
@@ -1,39 +1,39 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IQueryCache
-    {
-        SelectQuery GetFromSelectCache(ExpressionChain expressions);
-        void SetInSelectCache(ExpressionChain expressions, SelectQuery sqlSelectQuery);
-        Delegate GetFromTableReaderCache(Type tableType, IList<string> columns);
-        void SetInTableReaderCache(Type tableType, IList<string> columns, Delegate tableReader);
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IQueryCache
+    {
+        SelectQuery GetFromSelectCache(ExpressionChain expressions);
+        void SetInSelectCache(ExpressionChain expressions, SelectQuery sqlSelectQuery);
+        Delegate GetFromTableReaderCache(Type tableType, IList<string> columns);
+        void SetInTableReaderCache(Type tableType, IList<string> columns, Delegate tableReader);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IQueryRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/IQueryRunner.cs
@@ -1,110 +1,110 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Data;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface IQueryRunner
-    {
-        /// <summary>
-        /// Enumerates all records return by SQL request
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="selectQuery"></param>
-        /// <returns></returns>
-        IEnumerable<T> Select<T>(SelectQuery selectQuery);
-
-        /// <summary>
-        /// Returns at most one result
-        /// </summary>
-        /// <typeparam name="S"></typeparam>
-        /// <param name="selectQuery"></param>
-        /// <returns></returns>
-        S SelectScalar<S>(SelectQuery selectQuery);
-
-        /// <summary>
-        /// Runs an InsertQuery on a provided object
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="insertQuery"></param>
-        void Insert(object target, UpsertQuery insertQuery);
-
-        /// <summary>
-        /// Performans an update
-        /// </summary>
-        /// <param name="target">Entity to be flushed</param>
-        /// <param name="updateQuery">SQL update query</param>
-        /// <param name="modifiedMembers">List of modified members, or null to update all members</param>
-        void Update(object target, UpsertQuery updateQuery,IList<MemberInfo> modifiedMembers);
-
-        /// <summary>
-        /// Performs a delete
-        /// </summary>
-        /// <param name="target">Entity to be deleted</param>
-        /// <param name="deleteQuery">SQL delete query</param>
-        void Delete(object target, DeleteQuery deleteQuery);
-
-        /// <summary>
-        /// Runs a direct scalar command
-        /// </summary>
-        /// <param name="directQuery"></param>
-        /// <param name="parameters"></param>
-        /// <returns></returns>
-        int Execute(DirectQuery directQuery, params object[] parameters);
-
-        /// <summary>
-        /// Runs a query with a direct statement
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="directQuery"></param>
-        /// <param name="parameters"></param>
-        /// <returns></returns>
-        IEnumerable ExecuteSelect(Type tableType, DirectQuery directQuery, params object[] parameters);
-
-        /// <summary>
-        /// Enumerates results from a request.
-        /// The result shape can change dynamically
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="dataReader"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        IEnumerable EnumerateResult(Type tableType, IDataReader dataReader, DataContext dataContext);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Data;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface IQueryRunner
+    {
+        /// <summary>
+        /// Enumerates all records return by SQL request
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="selectQuery"></param>
+        /// <returns></returns>
+        IEnumerable<T> Select<T>(SelectQuery selectQuery);
+
+        /// <summary>
+        /// Returns at most one result
+        /// </summary>
+        /// <typeparam name="S"></typeparam>
+        /// <param name="selectQuery"></param>
+        /// <returns></returns>
+        S SelectScalar<S>(SelectQuery selectQuery);
+
+        /// <summary>
+        /// Runs an InsertQuery on a provided object
+        /// </summary>
+        /// <param name="target"></param>
+        /// <param name="insertQuery"></param>
+        void Insert(object target, UpsertQuery insertQuery);
+
+        /// <summary>
+        /// Performans an update
+        /// </summary>
+        /// <param name="target">Entity to be flushed</param>
+        /// <param name="updateQuery">SQL update query</param>
+        /// <param name="modifiedMembers">List of modified members, or null to update all members</param>
+        void Update(object target, UpsertQuery updateQuery,IList<MemberInfo> modifiedMembers);
+
+        /// <summary>
+        /// Performs a delete
+        /// </summary>
+        /// <param name="target">Entity to be deleted</param>
+        /// <param name="deleteQuery">SQL delete query</param>
+        void Delete(object target, DeleteQuery deleteQuery);
+
+        /// <summary>
+        /// Runs a direct scalar command
+        /// </summary>
+        /// <param name="directQuery"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        int Execute(DirectQuery directQuery, params object[] parameters);
+
+        /// <summary>
+        /// Runs a query with a direct statement
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="directQuery"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        IEnumerable ExecuteSelect(Type tableType, DirectQuery directQuery, params object[] parameters);
+
+        /// <summary>
+        /// Enumerates results from a request.
+        /// The result shape can change dynamically
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="dataReader"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        IEnumerable EnumerateResult(Type tableType, IDataReader dataReader, DataContext dataContext);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ISpecialExpressionTranslator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ISpecialExpressionTranslator.cs
@@ -1,40 +1,40 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface ISpecialExpressionTranslator
-    {
-        /// <summary>
-        /// Translate a hierarchy's SpecialExpressions to Expressions
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        Expression Translate(Expression expression);
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface ISpecialExpressionTranslator
+    {
+        /// <summary>
+        /// Translate a hierarchy's SpecialExpressions to Expressions
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        Expression Translate(Expression expression);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ISqlBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ISqlBuilder.cs
@@ -1,42 +1,42 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using DbLinq.Data.Linq.Sql;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal interface ISqlBuilder
-    {
-        /// <summary>
-        /// Builds a SQL string, based on a QueryContext
-        /// The build indirectly depends on ISqlProvider which provides all SQL Parts.
-        /// </summary>
-        /// <param name="expressionQuery"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        SqlStatement BuildSelect(ExpressionQuery expressionQuery, QueryContext queryContext);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using DbLinq.Data.Linq.Sql;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal interface ISqlBuilder
+    {
+        /// <summary>
+        /// Builds a SQL string, based on a QueryContext
+        /// The build indirectly depends on ISqlProvider which provides all SQL Parts.
+        /// </summary>
+        /// <param name="expressionQuery"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        SqlStatement BuildSelect(ExpressionQuery expressionQuery, QueryContext queryContext);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/DataMapper.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/DataMapper.cs
@@ -1,214 +1,214 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Data.Linq.Mapping;
-using System.Linq;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class DataMapper : IDataMapper
-    {
-        /// <summary>
-        /// Returns a table given a type, or null if the type is not mapped
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        public virtual string GetTableName(Type tableType, DataContext dataContext)
-        {
-            var tableDescription = dataContext.Mapping.GetTable(tableType);
-            if (tableDescription != null)
-                return tableDescription.TableName;
-            return null;
-        }
-
-        public virtual string GetColumnName(TableExpression tableExpression, MemberInfo memberInfo, DataContext dataContext)
-        {
-            return GetColumnName(tableExpression.Type, memberInfo, dataContext);
-        }
-
-        public virtual string GetColumnName(Type tableType, MemberInfo memberInfo, DataContext dataContext)
-        {
-            var tableDescription = dataContext.Mapping.GetTable(tableType);
-            var columnDescription = tableDescription.RowType.GetDataMember(memberInfo);
-            if (columnDescription != null)
-                return columnDescription.MappedName;
-            return null;
-        }
-
-        public virtual IList<MemberInfo> GetPrimaryKeys(TableExpression tableExpression, DataContext dataContext)
-        {
-            var tableDescription = dataContext.Mapping.GetTable(tableExpression.Type);
-            if (tableDescription != null)
-                return GetPrimaryKeys(tableDescription);
-            return null;
-        }
-
-        public virtual IList<MemberInfo> GetPrimaryKeys(MetaTable tableDescription)
-        {
-            return (from column in tableDescription.RowType.IdentityMembers select column.Member).ToList();
-        }
-
-        /// <summary>
-        /// Lists table mapped columns
-        /// </summary>
-        /// <param name="tableDescription"></param>
-        /// <returns></returns>
-        public IList<MemberInfo> GetColumns(MetaTable tableDescription)
-        {
-            return (from column in tableDescription.RowType.PersistentDataMembers select column.Member).ToList();
-        }
-
-        /// <summary>
-        /// Returns association definition, if any
-        /// </summary>
-        /// <param name="thisTableExpression">The table referenced by the assocation (the type holding the member)</param>
-        /// <param name="memberInfo">The memberInfo related to association</param>
-        /// <param name="otherType"></param>
-        /// <param name="otherKey">The keys in the associated table</param>
-        /// <param name="joinType"></param>
-        /// <param name="joinID"></param>
-        /// <param name="dataContext"></param>
-        /// <returns>ThisKey</returns>
-        public virtual IList<MemberInfo> GetAssociation(TableExpression thisTableExpression, MemberInfo memberInfo, Type otherType, out IList<MemberInfo> otherKey, out TableJoinType joinType, out string joinID, DataContext dataContext)
-        {
-            var thisTableDescription = dataContext.Mapping.GetTable(thisTableExpression.Type);
-            var thisAssociation =
-                (from association in thisTableDescription.RowType.Associations
-                 where association.ThisMember.Member == memberInfo
-                 select association).SingleOrDefault();
-            if (thisAssociation != null)
-            {
-                // by default, join is inner
-                joinType = TableJoinType.Inner;
-                joinID = thisAssociation.ThisMember.MappedName;
-                if (string.IsNullOrEmpty(joinID))
-                    throw Error.BadArgument("S0108: Association name is required to ensure join uniqueness");
-
-                var otherTableDescription = dataContext.Mapping.GetTable(otherType);
-                bool thisKeyHasNullables, otherKeyHasNullables;
-                var thisKey = GetAssociationKeys(thisTableDescription, thisAssociation.ThisKey, dataContext,
-                                                 out thisKeyHasNullables);
-                otherKey = GetAssociationKeys(otherTableDescription, thisAssociation.OtherKey, dataContext,
-                                              out otherKeyHasNullables);
-
-                // we just test here the left join (since associations are symmetric,
-                //        we can only find left joins here, and the otherKeyHasNullables is
-                //        always equal to thisKeyHasNullables)
-                if (thisKeyHasNullables)
-                    joinType |= TableJoinType.LeftOuter;
-
-                return thisKey;
-            }
-            otherKey = null;
-            joinType = TableJoinType.Default;
-            joinID = null;
-            return null;
-        }
-
-        /// <summary>
-        /// Enumerates Keys for a given table.
-        /// Keys can be provided as input. If none provided, PKs are taken from table
-        /// </summary>
-        /// <param name="description"></param>
-        /// <param name="keys">Keys to be used, leave empty to use PKs instead</param>
-        /// <param name="dataContext"></param>
-        /// <param name="hasNullableKeys">returned as true if some keys can be null (we then have an outer join)</param>
-        /// <returns></returns>
-        protected virtual IList<MemberInfo> GetAssociationKeys(MetaTable description, ReadOnlyCollection<MetaDataMember> keys,
-                                                               DataContext dataContext, out bool hasNullableKeys)
-        {
-            var sourceKeys = keys;
-            if (sourceKeys.Count == 0)
-                sourceKeys = description.RowType.IdentityMembers;
-
-            hasNullableKeys = false;
-            var members = new List<MemberInfo>();
-            foreach (var sourceKey in sourceKeys)
-            {
-                members.Add(sourceKey.Member);
-                if (sourceKey.CanBeNull)
-                    hasNullableKeys = true;
-            }
-            return members;
-        }
-
-        public IList<MemberInfo> GetEntitySetAssociations(Type type)
-        {
-            // BUG: This is ignoring External Mappings from XmlMappingSource.
-
-            // TODO: Should be cached in a static thread safe cache.
-
-            return type.GetProperties()
-                .Where(p => p.PropertyType.IsGenericType 
-                    && (p.PropertyType.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntitySet<>) 
-#if !MONO_STRICT
-                    || p.PropertyType.GetGenericTypeDefinition() == typeof(DbLinq.Data.Linq.EntitySet<>)
-#endif
-                    )
-                    && p.IsDefined(typeof(AssociationAttribute), true))
-                .Cast<MemberInfo>().ToList();
-        }
-
-        public IList<MemberInfo> GetEntityRefAssociations(Type type)
-        {
-            // BUG: This is ignoring External Mappings from XmlMappingSource.
-
-            // TODO: Should be cached in a static thread safe cache.
-
-            List<MemberInfo> associations = new List<MemberInfo>();
-            foreach (var p in type.GetProperties())
-            {
-                AssociationAttribute associationAttribute = p.GetCustomAttributes(typeof(AssociationAttribute), true).FirstOrDefault() as AssociationAttribute;
-                if (associationAttribute != null)
-                {
-                    FieldInfo field = type.GetField(associationAttribute.Storage, BindingFlags.NonPublic | BindingFlags.Instance);
-                    if (field != null && field.FieldType.IsGenericType &&
-#if MONO_STRICT
-                        field.FieldType.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntityRef<>)
-#else
-                        field.FieldType.GetGenericTypeDefinition() == typeof(DbLinq.Data.Linq.EntityRef<>)
-#endif
-                        )
-                        associations.Add(p);
-                }
-            }
-            return associations;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data.Linq.Mapping;
+using System.Linq;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class DataMapper : IDataMapper
+    {
+        /// <summary>
+        /// Returns a table given a type, or null if the type is not mapped
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        public virtual string GetTableName(Type tableType, DataContext dataContext)
+        {
+            var tableDescription = dataContext.Mapping.GetTable(tableType);
+            if (tableDescription != null)
+                return tableDescription.TableName;
+            return null;
+        }
+
+        public virtual string GetColumnName(TableExpression tableExpression, MemberInfo memberInfo, DataContext dataContext)
+        {
+            return GetColumnName(tableExpression.Type, memberInfo, dataContext);
+        }
+
+        public virtual string GetColumnName(Type tableType, MemberInfo memberInfo, DataContext dataContext)
+        {
+            var tableDescription = dataContext.Mapping.GetTable(tableType);
+            var columnDescription = tableDescription.RowType.GetDataMember(memberInfo);
+            if (columnDescription != null)
+                return columnDescription.MappedName;
+            return null;
+        }
+
+        public virtual IList<MemberInfo> GetPrimaryKeys(TableExpression tableExpression, DataContext dataContext)
+        {
+            var tableDescription = dataContext.Mapping.GetTable(tableExpression.Type);
+            if (tableDescription != null)
+                return GetPrimaryKeys(tableDescription);
+            return null;
+        }
+
+        public virtual IList<MemberInfo> GetPrimaryKeys(MetaTable tableDescription)
+        {
+            return (from column in tableDescription.RowType.IdentityMembers select column.Member).ToList();
+        }
+
+        /// <summary>
+        /// Lists table mapped columns
+        /// </summary>
+        /// <param name="tableDescription"></param>
+        /// <returns></returns>
+        public IList<MemberInfo> GetColumns(MetaTable tableDescription)
+        {
+            return (from column in tableDescription.RowType.PersistentDataMembers select column.Member).ToList();
+        }
+
+        /// <summary>
+        /// Returns association definition, if any
+        /// </summary>
+        /// <param name="thisTableExpression">The table referenced by the assocation (the type holding the member)</param>
+        /// <param name="memberInfo">The memberInfo related to association</param>
+        /// <param name="otherType"></param>
+        /// <param name="otherKey">The keys in the associated table</param>
+        /// <param name="joinType"></param>
+        /// <param name="joinID"></param>
+        /// <param name="dataContext"></param>
+        /// <returns>ThisKey</returns>
+        public virtual IList<MemberInfo> GetAssociation(TableExpression thisTableExpression, MemberInfo memberInfo, Type otherType, out IList<MemberInfo> otherKey, out TableJoinType joinType, out string joinID, DataContext dataContext)
+        {
+            var thisTableDescription = dataContext.Mapping.GetTable(thisTableExpression.Type);
+            var thisAssociation =
+                (from association in thisTableDescription.RowType.Associations
+                 where association.ThisMember.Member == memberInfo
+                 select association).SingleOrDefault();
+            if (thisAssociation != null)
+            {
+                // by default, join is inner
+                joinType = TableJoinType.Inner;
+                joinID = thisAssociation.ThisMember.MappedName;
+                if (string.IsNullOrEmpty(joinID))
+                    throw Error.BadArgument("S0108: Association name is required to ensure join uniqueness");
+
+                var otherTableDescription = dataContext.Mapping.GetTable(otherType);
+                bool thisKeyHasNullables, otherKeyHasNullables;
+                var thisKey = GetAssociationKeys(thisTableDescription, thisAssociation.ThisKey, dataContext,
+                                                 out thisKeyHasNullables);
+                otherKey = GetAssociationKeys(otherTableDescription, thisAssociation.OtherKey, dataContext,
+                                              out otherKeyHasNullables);
+
+                // we just test here the left join (since associations are symmetric,
+                //        we can only find left joins here, and the otherKeyHasNullables is
+                //        always equal to thisKeyHasNullables)
+                if (thisKeyHasNullables)
+                    joinType |= TableJoinType.LeftOuter;
+
+                return thisKey;
+            }
+            otherKey = null;
+            joinType = TableJoinType.Default;
+            joinID = null;
+            return null;
+        }
+
+        /// <summary>
+        /// Enumerates Keys for a given table.
+        /// Keys can be provided as input. If none provided, PKs are taken from table
+        /// </summary>
+        /// <param name="description"></param>
+        /// <param name="keys">Keys to be used, leave empty to use PKs instead</param>
+        /// <param name="dataContext"></param>
+        /// <param name="hasNullableKeys">returned as true if some keys can be null (we then have an outer join)</param>
+        /// <returns></returns>
+        protected virtual IList<MemberInfo> GetAssociationKeys(MetaTable description, ReadOnlyCollection<MetaDataMember> keys,
+                                                               DataContext dataContext, out bool hasNullableKeys)
+        {
+            var sourceKeys = keys;
+            if (sourceKeys.Count == 0)
+                sourceKeys = description.RowType.IdentityMembers;
+
+            hasNullableKeys = false;
+            var members = new List<MemberInfo>();
+            foreach (var sourceKey in sourceKeys)
+            {
+                members.Add(sourceKey.Member);
+                if (sourceKey.CanBeNull)
+                    hasNullableKeys = true;
+            }
+            return members;
+        }
+
+        public IList<MemberInfo> GetEntitySetAssociations(Type type)
+        {
+            // BUG: This is ignoring External Mappings from XmlMappingSource.
+
+            // TODO: Should be cached in a static thread safe cache.
+
+            return type.GetProperties()
+                .Where(p => p.PropertyType.IsGenericType 
+                    && (p.PropertyType.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntitySet<>) 
+#if !MONO_STRICT
+                    || p.PropertyType.GetGenericTypeDefinition() == typeof(DbLinq.Data.Linq.EntitySet<>)
+#endif
+                    )
+                    && p.IsDefined(typeof(AssociationAttribute), true))
+                .Cast<MemberInfo>().ToList();
+        }
+
+        public IList<MemberInfo> GetEntityRefAssociations(Type type)
+        {
+            // BUG: This is ignoring External Mappings from XmlMappingSource.
+
+            // TODO: Should be cached in a static thread safe cache.
+
+            List<MemberInfo> associations = new List<MemberInfo>();
+            foreach (var p in type.GetProperties())
+            {
+                AssociationAttribute associationAttribute = p.GetCustomAttributes(typeof(AssociationAttribute), true).FirstOrDefault() as AssociationAttribute;
+                if (associationAttribute != null)
+                {
+                    FieldInfo field = type.GetField(associationAttribute.Storage, BindingFlags.NonPublic | BindingFlags.Instance);
+                    if (field != null && field.FieldType.IsGenericType &&
+#if MONO_STRICT
+                        field.FieldType.GetGenericTypeDefinition() == typeof(System.Data.Linq.EntityRef<>)
+#else
+                        field.FieldType.GetGenericTypeDefinition() == typeof(DbLinq.Data.Linq.EntityRef<>)
+#endif
+                        )
+                        associations.Add(p);
+                }
+            }
+            return associations;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/DataRecordReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/DataRecordReader.cs
@@ -1,196 +1,196 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Mapping;
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class DataRecordReader : IDataRecordReader
-    {
-        /// <summary>
-        /// Returns a Expression reading a property from a IDataRecord, at the specified index
-        /// The lambda parameters are:
-        /// - IDataRecord
-        /// - MappingContext
-        /// - int (field index)
-        /// </summary>
-        /// <param name="returnType">The expected return type (to be mapped to the property)</param>
-        /// <returns>An expression returning the field value</returns>
-        public virtual LambdaExpression GetPropertyReader(Type returnType)
-        {
-            // if we have a nullable, then use its inner type
-            if (returnType.IsNullable())
-            {
-                var nonNullableReturnType = returnType.GetNullableType();
-                return GetNullablePropertyReader(nonNullableReturnType);
-            }
-            // otherwise, it's simple
-            return GetNullablePropertyReader(returnType);
-        }
-
-        protected virtual LambdaExpression GetNullablePropertyReader(Type simpleReturnType)
-        {
-            if (simpleReturnType == typeof(string))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, string>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => GetAsString(dataRecord, valueIndex, mappingContext));
-            }
-            if (simpleReturnType == typeof(bool))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, bool?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                   => dataRecord.GetAsNullableBool(valueIndex));
-            }
-            if (simpleReturnType == typeof(char))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, char?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                   => dataRecord.GetAsNullableChar(valueIndex));
-            }
-            if (simpleReturnType == typeof(byte))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, byte?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                   => dataRecord.GetAsNullableNumeric<byte>(valueIndex));
-            }
-            if (simpleReturnType == typeof(sbyte))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, sbyte?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => dataRecord.GetAsNullableNumeric<sbyte>(valueIndex));
-            }
-            if (simpleReturnType == typeof(short))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, short?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => dataRecord.GetAsNullableNumeric<short>(valueIndex));
-            }
-            if (simpleReturnType == typeof(ushort))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, ushort?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                     => dataRecord.GetAsNullableNumeric<ushort>(valueIndex));
-            }
-            if (simpleReturnType == typeof(int))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, int?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                  => dataRecord.GetAsNullableNumeric<int>(valueIndex));
-            }
-            if (simpleReturnType == typeof(uint))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, uint?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                   => dataRecord.GetAsNullableNumeric<uint>(valueIndex));
-            }
-            if (simpleReturnType == typeof(long))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, long?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                   => dataRecord.GetAsNullableNumeric<long>(valueIndex));
-            }
-            if (simpleReturnType == typeof(ulong))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, ulong?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => dataRecord.GetAsNullableNumeric<ulong>(valueIndex));
-            }
-            if (simpleReturnType == typeof(float))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, float?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => dataRecord.GetAsNullableNumeric<float>(valueIndex));
-            }
-            if (simpleReturnType == typeof(double))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, double?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                     => dataRecord.GetAsNullableNumeric<double>(valueIndex));
-            }
-            if (simpleReturnType == typeof(decimal))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, decimal?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                      => dataRecord.GetAsNullableNumeric<decimal>(valueIndex));
-            }
-            if (simpleReturnType == typeof(DateTime))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, DateTime?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                       => dataRecord.GetAsNullableDateTime(valueIndex));
-            }
-            if (simpleReturnType == typeof(Guid))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, Guid?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                       => dataRecord.GetAsNullableGuid(valueIndex));
-            }
-            if (simpleReturnType == typeof(byte[]))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, byte[]>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => dataRecord.GetAsBytes(valueIndex));
-            }
-            if (simpleReturnType.IsEnum)
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, int?>>)((dataRecord, mappingContext, valueIndex)
-                                                                                  => dataRecord.GetAsNullableNumeric<int>(valueIndex));
-            }
-            if (simpleReturnType == typeof(System.Data.Linq.Binary))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, System.Data.Linq.Binary>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => dataRecord.GetAsBinary(valueIndex));
-            }
-            // for polymorphic types especially for ExecuteQuery<>()
-            if (simpleReturnType == typeof(object))
-            {
-                return (Expression<Func<IDataRecord, MappingContext, int, object>>)((dataRecord, mappingContext, valueIndex)
-                                                                                    => GetAsObject(dataRecord, valueIndex, mappingContext));
-            }
-            //s_rdr.GetUInt32();
-            //s_rdr.GetFloat();
-            string msg = "RowEnum TODO L381: add support for type " + simpleReturnType;
-            Console.WriteLine(msg);
-            //                propertyReader = null;
-            //              throw new ApplicationException(msg);
-            // TODO: 
-            return (Expression<Func<IDataRecord, MappingContext, int, object>>)((dataRecord, mappingContext, valueIndex)
-                                                                                => GetAsObject(dataRecord, valueIndex, mappingContext));
-        }
-
-        /// <summary>
-        /// Wrapper to call the MappingContext
-        /// </summary>
-        /// <param name="dataRecord"></param>
-        /// <param name="columnIndex"></param>
-        /// <param name="mappingContext"></param>
-        /// <returns></returns>
-        protected virtual string GetAsString(IDataRecord dataRecord, int columnIndex, MappingContext mappingContext)
-        {
-            var value = dataRecord.GetAsString(columnIndex);
-            mappingContext.OnGetAsString(dataRecord, ref value, null, columnIndex); // return type null here, expression can be a little more complex than a known type
-            // TODO: see if we keep this type
-            return value;
-        }
-
-        protected virtual object GetAsObject(IDataRecord dataRecord, int columnIndex, MappingContext mappingContext)
-        {
-            var value = dataRecord.GetAsObject(columnIndex);
-            mappingContext.OnGetAsObject(dataRecord, ref value, null, columnIndex);
-            return value;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Mapping;
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class DataRecordReader : IDataRecordReader
+    {
+        /// <summary>
+        /// Returns a Expression reading a property from a IDataRecord, at the specified index
+        /// The lambda parameters are:
+        /// - IDataRecord
+        /// - MappingContext
+        /// - int (field index)
+        /// </summary>
+        /// <param name="returnType">The expected return type (to be mapped to the property)</param>
+        /// <returns>An expression returning the field value</returns>
+        public virtual LambdaExpression GetPropertyReader(Type returnType)
+        {
+            // if we have a nullable, then use its inner type
+            if (returnType.IsNullable())
+            {
+                var nonNullableReturnType = returnType.GetNullableType();
+                return GetNullablePropertyReader(nonNullableReturnType);
+            }
+            // otherwise, it's simple
+            return GetNullablePropertyReader(returnType);
+        }
+
+        protected virtual LambdaExpression GetNullablePropertyReader(Type simpleReturnType)
+        {
+            if (simpleReturnType == typeof(string))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, string>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => GetAsString(dataRecord, valueIndex, mappingContext));
+            }
+            if (simpleReturnType == typeof(bool))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, bool?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                   => dataRecord.GetAsNullableBool(valueIndex));
+            }
+            if (simpleReturnType == typeof(char))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, char?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                   => dataRecord.GetAsNullableChar(valueIndex));
+            }
+            if (simpleReturnType == typeof(byte))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, byte?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                   => dataRecord.GetAsNullableNumeric<byte>(valueIndex));
+            }
+            if (simpleReturnType == typeof(sbyte))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, sbyte?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => dataRecord.GetAsNullableNumeric<sbyte>(valueIndex));
+            }
+            if (simpleReturnType == typeof(short))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, short?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => dataRecord.GetAsNullableNumeric<short>(valueIndex));
+            }
+            if (simpleReturnType == typeof(ushort))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, ushort?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                     => dataRecord.GetAsNullableNumeric<ushort>(valueIndex));
+            }
+            if (simpleReturnType == typeof(int))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, int?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                  => dataRecord.GetAsNullableNumeric<int>(valueIndex));
+            }
+            if (simpleReturnType == typeof(uint))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, uint?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                   => dataRecord.GetAsNullableNumeric<uint>(valueIndex));
+            }
+            if (simpleReturnType == typeof(long))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, long?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                   => dataRecord.GetAsNullableNumeric<long>(valueIndex));
+            }
+            if (simpleReturnType == typeof(ulong))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, ulong?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => dataRecord.GetAsNullableNumeric<ulong>(valueIndex));
+            }
+            if (simpleReturnType == typeof(float))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, float?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => dataRecord.GetAsNullableNumeric<float>(valueIndex));
+            }
+            if (simpleReturnType == typeof(double))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, double?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                     => dataRecord.GetAsNullableNumeric<double>(valueIndex));
+            }
+            if (simpleReturnType == typeof(decimal))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, decimal?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                      => dataRecord.GetAsNullableNumeric<decimal>(valueIndex));
+            }
+            if (simpleReturnType == typeof(DateTime))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, DateTime?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                       => dataRecord.GetAsNullableDateTime(valueIndex));
+            }
+            if (simpleReturnType == typeof(Guid))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, Guid?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                       => dataRecord.GetAsNullableGuid(valueIndex));
+            }
+            if (simpleReturnType == typeof(byte[]))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, byte[]>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => dataRecord.GetAsBytes(valueIndex));
+            }
+            if (simpleReturnType.IsEnum)
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, int?>>)((dataRecord, mappingContext, valueIndex)
+                                                                                  => dataRecord.GetAsNullableNumeric<int>(valueIndex));
+            }
+            if (simpleReturnType == typeof(System.Data.Linq.Binary))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, System.Data.Linq.Binary>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => dataRecord.GetAsBinary(valueIndex));
+            }
+            // for polymorphic types especially for ExecuteQuery<>()
+            if (simpleReturnType == typeof(object))
+            {
+                return (Expression<Func<IDataRecord, MappingContext, int, object>>)((dataRecord, mappingContext, valueIndex)
+                                                                                    => GetAsObject(dataRecord, valueIndex, mappingContext));
+            }
+            //s_rdr.GetUInt32();
+            //s_rdr.GetFloat();
+            string msg = "RowEnum TODO L381: add support for type " + simpleReturnType;
+            Console.WriteLine(msg);
+            //                propertyReader = null;
+            //              throw new ApplicationException(msg);
+            // TODO: 
+            return (Expression<Func<IDataRecord, MappingContext, int, object>>)((dataRecord, mappingContext, valueIndex)
+                                                                                => GetAsObject(dataRecord, valueIndex, mappingContext));
+        }
+
+        /// <summary>
+        /// Wrapper to call the MappingContext
+        /// </summary>
+        /// <param name="dataRecord"></param>
+        /// <param name="columnIndex"></param>
+        /// <param name="mappingContext"></param>
+        /// <returns></returns>
+        protected virtual string GetAsString(IDataRecord dataRecord, int columnIndex, MappingContext mappingContext)
+        {
+            var value = dataRecord.GetAsString(columnIndex);
+            mappingContext.OnGetAsString(dataRecord, ref value, null, columnIndex); // return type null here, expression can be a little more complex than a known type
+            // TODO: see if we keep this type
+            return value;
+        }
+
+        protected virtual object GetAsObject(IDataRecord dataRecord, int columnIndex, MappingContext mappingContext)
+        {
+            var value = dataRecord.GetAsObject(columnIndex);
+            mappingContext.OnGetAsObject(dataRecord, ref value, null, columnIndex);
+            return value;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionDispatcher.Analyzer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionDispatcher.Analyzer.cs
@@ -1,1648 +1,1648 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-using DbLinq.Data.Linq.Implementation;
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-using DbLinq.Data.Linq.Sugar.Implementation;
-using DbLinq.Factory;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    partial class ExpressionDispatcher
-    {
-        public Expression Analyze(ExpressionChain expressions, Expression parameter, BuilderContext builderContext)
-        {
-            Expression tableExpression = parameter;
-
-            Expression last = expressions.Last();
-            IExpressionLanguageParser languageParser = ObjectFactory.Get<IExpressionLanguageParser>();
-            foreach (Expression e in expressions)
-            {
-                if (e == last)
-                    builderContext.IsExternalInExpressionChain = true;
-
-                // write full debug
-#if DEBUG && !MONO_STRICT
-                var log = builderContext.QueryContext.DataContext.Log;
-                if (log != null)
-                    log.WriteExpression(e);
-#endif
-
-                // Convert linq Expressions to QueryOperationExpressions and QueryConstantExpressions 
-                // Query expressions language identification
-                var currentExpression = languageParser.Parse(e, builderContext);
-                // Query expressions query identification 
-                currentExpression = this.Analyze(currentExpression, tableExpression, builderContext);
-
-                if (!builderContext.IsExternalInExpressionChain)
-                {
-                    EntitySetExpression setExpression = currentExpression as EntitySetExpression;
-                    if (setExpression != null)
-                        currentExpression = setExpression.TableExpression;
-                }
-                tableExpression = currentExpression;
-            }
-
-            return tableExpression;
-        }
-
-        /// <summary>
-        /// Entry point for Analyzis
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="parameter"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression Analyze(Expression expression, Expression parameter, BuilderContext builderContext)
-        {
-            return Analyze(expression, new[] { parameter }, builderContext);
-        }
-
-        protected virtual Expression Analyze(Expression expression, BuilderContext builderContext)
-        {
-            return Analyze(expression, new Expression[0], builderContext);
-        }
-
-        protected virtual Expression Analyze(Expression expression, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            switch (expression.NodeType)
-            {
-                case ExpressionType.Call:
-                    return AnalyzeCall((MethodCallExpression)expression, parameters, builderContext);
-                case ExpressionType.Lambda:
-                    return AnalyzeLambda(expression, parameters, builderContext);
-                case ExpressionType.Parameter:
-                    return AnalyzeParameter(expression, builderContext);
-                case ExpressionType.Quote:
-                    return AnalyzeQuote(expression, parameters, builderContext);
-                case ExpressionType.MemberAccess:
-                    return AnalyzeMember(expression, builderContext);
-                #region case ExpressionType.<Common operators>:
-                case ExpressionType.Add:
-                case ExpressionType.AddChecked:
-                case ExpressionType.Divide:
-                case ExpressionType.Modulo:
-                case ExpressionType.Multiply:
-                case ExpressionType.MultiplyChecked:
-                case ExpressionType.Power:
-                case ExpressionType.Subtract:
-                case ExpressionType.SubtractChecked:
-                case ExpressionType.And:
-                case ExpressionType.Or:
-                case ExpressionType.ExclusiveOr:
-                case ExpressionType.LeftShift:
-                case ExpressionType.RightShift:
-                case ExpressionType.AndAlso:
-                case ExpressionType.OrElse:
-                case ExpressionType.Equal:
-                case ExpressionType.NotEqual:
-                case ExpressionType.GreaterThanOrEqual:
-                case ExpressionType.GreaterThan:
-                case ExpressionType.LessThan:
-                case ExpressionType.LessThanOrEqual:
-                case ExpressionType.Coalesce:
-                //case ExpressionType.ArrayIndex
-                //case ExpressionType.ArrayLength
-                case ExpressionType.Convert:
-                case ExpressionType.ConvertChecked:
-                case ExpressionType.Negate:
-                case ExpressionType.NegateChecked:
-                case ExpressionType.Not:
-                //case ExpressionType.TypeAs
-                case ExpressionType.UnaryPlus:
-                case ExpressionType.MemberInit:
-                #endregion
-                    return AnalyzeOperator(expression, builderContext);
-                case ExpressionType.New:
-                    return AnalyzeNewOperator(expression, builderContext);
-                case ExpressionType.Constant:
-                    return AnalyzeConstant(expression, builderContext);
-                case ExpressionType.Invoke:
-                    return AnalyzeInvoke(expression, parameters, builderContext);
-            }
-            return expression;
-        }
-
-        /// <summary>
-        /// Analyzes method call, uses specified parameters
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeCall(MethodCallExpression expression, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var operands = expression.GetOperands().ToList();
-            var operarandsToSkip = expression.Method.IsStatic ? 1 : 0;
-            var originalParameters = operands.Skip(parameters.Count + operarandsToSkip);
-            var newParameters = parameters.Union(originalParameters).ToList();
-
-            return AnalyzeQueryableCall(expression.Method, newParameters, builderContext) ??
-                AnalyzeStringCall(expression.Method, newParameters, builderContext) ??
-                AnalyzeMathCall(expression.Method, newParameters, builderContext) ??
-                AnalyzeUnknownCall(expression, newParameters, builderContext);
-        }
-
-        private Expression AnalyzeQueryableCall(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (!(method.DeclaringType == typeof(Queryable) || method.DeclaringType == typeof(Enumerable)))
-                return null;
-            var popCallStack = PushCallStack(method, builderContext);
-            // all methods to handle are listed here:
-            // ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fxref_system.core/html/2a54ce9d-76f2-81e2-95bb-59740c85386b.htm
-            string methodName = method.Name;
-            switch (methodName)
-            {
-                case "All":
-                    return popCallStack(AnalyzeAll(parameters, builderContext));
-                case "Any":
-                    return popCallStack(AnalyzeAny(parameters, builderContext));
-                case "Average":
-                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Average, parameters, builderContext));
-                case "Concat":
-                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.UnionAll, parameters, builderContext));
-                case "Contains":
-                    return popCallStack(AnalyzeContains(parameters, builderContext));
-                case "Count":
-                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Count, parameters, builderContext));
-                case "DefaultIfEmpty":
-                    return popCallStack(AnalyzeOuterJoin(parameters, builderContext));
-                case "Distinct":
-                    return popCallStack(AnalyzeDistinct(parameters, builderContext));
-                case "Except":
-                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.Exception, parameters, builderContext));
-                case "First":
-                case "FirstOrDefault":
-                    return popCallStack(AnalyzeScalar(methodName, 1, parameters, builderContext));
-                case "GroupBy":
-                    return popCallStack(AnalyzeGroupBy(parameters, builderContext));
-                case "GroupJoin":
-                    return popCallStack(AnalyzeGroupJoin(parameters, builderContext));
-                case "Intersect":
-                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.Intersection, parameters, builderContext));
-                case "Join":
-                    return popCallStack(AnalyzeJoin(parameters, builderContext));
-                case "Last":
-                    return popCallStack(AnalyzeScalar(methodName, null, parameters, builderContext));
-                case "Max":
-                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Max, parameters, builderContext));
-                case "Min":
-                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Min, parameters, builderContext));
-                case "OrderBy":
-                case "ThenBy":
-                    return popCallStack(AnalyzeOrderBy(parameters, false, builderContext));
-                case "OrderByDescending":
-                case "ThenByDescending":
-                    return popCallStack(AnalyzeOrderBy(parameters, true, builderContext));
-                case "Select":
-                    return popCallStack(AnalyzeSelect(parameters, builderContext));
-                case "SelectMany":
-                    return popCallStack(AnalyzeSelectMany(parameters, builderContext));
-                case "Single":
-                case "SingleOrDefault":
-                    return popCallStack(AnalyzeScalar(methodName, 2, parameters, builderContext));
-                case "Skip":
-                    return popCallStack(AnalyzeSkip(parameters, builderContext));
-                case "Sum":
-                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Sum, parameters, builderContext));
-                case "Take":
-                    return popCallStack(AnalyzeTake(parameters, builderContext));
-                case "Union":
-                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.Union, parameters, builderContext));
-                case "Where":
-                    return popCallStack(AnalyzeWhere(parameters, builderContext));
-                default:
-                    if (method.DeclaringType == typeof(Queryable))
-                        throw Error.BadArgument("S0133: Implement QueryMethod Queryable.{0}.", methodName);
-                    return popCallStack(null);
-            }
-        }
-
-        Func<Expression, Expression> PushCallStack(MethodInfo method, BuilderContext builderContext)
-        {
-
-            builderContext.CallStack.Push(method);
-            Func<Expression, Expression> popCallStack = r =>
-            {
-                builderContext.CallStack.Pop();
-                return r;
-            };
-            return popCallStack;
-        }
-
-        private Expression AnalyzeStringCall(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (method.DeclaringType != typeof(string))
-                return null;
-            var popCallStack = PushCallStack(method, builderContext);
-            switch (method.Name)
-            {
-                case "Contains":
-                    return popCallStack(AnalyzeLike(parameters, builderContext));
-                case "EndsWith":
-                    return popCallStack(AnalyzeLikeEnd(parameters, builderContext));
-                case "IndexOf":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.IndexOf, parameters, builderContext));
-                case "Insert":
-                    return popCallStack(AnalyzeStringInsert(parameters, builderContext));
-                case "Remove":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Remove, parameters, builderContext));
-                case "Replace":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Replace, parameters, builderContext));
-                case "StartsWith":
-                    return popCallStack(AnalyzeLikeStart(parameters, builderContext));
-                case "Substring":
-                    return popCallStack(AnalyzeSubString(parameters, builderContext));
-                case "ToLower":
-                    return popCallStack(AnalyzeToLower(parameters, builderContext));
-                case "ToString":
-                    return popCallStack(AnalyzeToString(method, parameters, builderContext));
-                case "ToUpper":
-                    return popCallStack(AnalyzeToUpper(parameters, builderContext));
-                case "Trim":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Trim, parameters, builderContext));
-                case "TrimEnd":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.RTrim, parameters, builderContext));
-                case "TrimStart":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.LTrim, parameters, builderContext));
-                default:
-                    throw Error.BadArgument("S0133: Implement QueryMethod String.{0}.", method.Name);
-            }
-        }
-
-        private Expression AnalyzeMathCall(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (method.DeclaringType != typeof(System.Math))
-                return null;
-            var popCallStack = PushCallStack(method, builderContext);
-            switch (method.Name)
-            {
-                case "Abs":
-                case "Exp":
-                case "Floor":
-                case "Pow":
-                case "Round":
-                case "Sign":
-                case "Sqrt":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType((SpecialExpressionType)Enum.Parse(typeof(SpecialExpressionType), method.Name), parameters, builderContext));
-                case "Log":
-                    return popCallStack(AnalyzeLog(parameters, builderContext));
-                case "Log10":
-                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Log, parameters, builderContext));
-                default:
-                    throw Error.BadArgument("S0133: Implement QueryMethod Math.{0}.", method.Name);
-            }
-        }
-
-        private Expression AnalyzeUnknownCall(MethodCallExpression expression, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var method = expression.Method;
-            switch (method.Name)
-            {
-                case "Parse":
-                    if (method.IsStatic && parameters.Count == 1)
-                        return AnalyzeParse(method, parameters, builderContext);
-                    break;
-                case "ToString": // Can we sanity check this type?
-                    return AnalyzeToString(method, parameters, builderContext);
-            }
-
-            var args = new List<Expression>();
-            foreach (var arg in expression.Arguments)
-            {
-                Expression newArg = arg;
-                var pe = arg as ParameterExpression;
-                if (pe != null)
-                {
-                    if (!builderContext.Parameters.TryGetValue(pe.Name, out newArg))
-                        throw new NotSupportedException("Do not currently support expression: " + expression);
-                }
-                else
-                    newArg = Analyze(arg, builderContext);
-                args.Add(newArg);
-            }
-            return Expression.Call(expression.Object, expression.Method, args);
-        }
-
-        private Expression AnalyzeStringInsert(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var startIndexExpression = new StartIndexOffsetExpression(builderContext.QueryContext.DataContext.Vendor.SqlProvider.StringIndexStartsAtOne, parameters.ElementAt(1));
-            var stringToInsertExpression = parameters.ElementAt(2);
-            return AnalyzeGenericSpecialExpressionType(SpecialExpressionType.StringInsert, new Expression[] { parameters.First(), startIndexExpression, stringToInsertExpression }, builderContext);
-        }
-
-        protected virtual Expression AnalyzeLog(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (parameters.Count == 1)
-                return new SpecialExpression(SpecialExpressionType.Ln, parameters.Select(p => Analyze(p, builderContext)).ToList());
-            else if (parameters.Count == 2)
-                return new SpecialExpression(SpecialExpressionType.Log, parameters.Select(p => Analyze(p, builderContext)).ToList());
-            else
-                throw new NotSupportedException();
-        }
-
-        protected virtual Expression AnalyzeGenericSpecialExpressionType(SpecialExpressionType specialType, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return new SpecialExpression(specialType, parameters.Select(p => Analyze(p, builderContext)).ToList());
-        }
-
-        protected virtual Expression AnalyzeParse(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (method.IsStatic && parameters.Count == 1)
-            {
-                Expression parsed = null;
-                Expression toParse = Analyze(parameters.First(), builderContext);
-                InputParameterExpression inputParameterToParse = toParse as InputParameterExpression;
-                if (inputParameterToParse != null)
-                {
-                    ExpressionTier tier = ExpressionQualifier.GetTier(parameters[0]);
-                    if (tier == ExpressionTier.Clr)
-                    {
-                        parsed = RegisterParameter(System.Linq.Expressions.Expression.Call(method, inputParameterToParse.Expression), inputParameterToParse.Alias, builderContext);
-                        UnregisterParameter(inputParameterToParse, builderContext);
-                    }
-                }
-                if(parsed == null)
-                {
-                    parsed = Expression.Convert(toParse, method.ReturnType, method);
-                    ExpressionTier tier = ExpressionQualifier.GetTier(toParse);
-                    //pibgeus: I would like to call to the expression optimizer since the exception must be thrown if the expression cannot be executed
-                    //in Clr tier, if it can be executed in Clr tier it should continue
-                    // ie: from e in db.Employees where DateTime.Parse("1/1/1999").Year==1999 select e  <--- this should work
-                    // ie: from e in db.Employees where DateTime.Parse(e.BirthDate).Year==1999 select e  <--- a NotSupportedException must be throwed (this is the behaviour of linq2sql)
-
-                    //if (method.ReturnType == typeof(DateTime))
-                    //{
-                    //        expression = ExpressionOptimizer.Analyze(expression);
-                    //        //same behaviour that Linq2Sql
-                    //        throw new NotSupportedException("Method 'System.DateTime Parse(System.String)' has no supported translation to SQL");
-                    //}
-                }
-                return parsed;
-            }
-            else
-                throw new ArgumentException();
-
-        }
-
-        protected virtual Expression AnalyzeToString(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (parameters.Count != 1)
-                throw new ArgumentException();
-
-            Expression parameter = parameters.First();
-            Expression parameterToHandle;
-
-            if(parameter.Type.IsNullable())
-                parameter = Analyze(Expression.Convert(parameter, parameter.Type.GetNullableType()), builderContext);
-
-            parameterToHandle = Analyze(parameter, builderContext);
-
-            InputParameterExpression inputParameter = parameterToHandle as InputParameterExpression;
-            if (inputParameter != null)
-            {
-                parameterToHandle = RegisterParameter(System.Linq.Expressions.Expression.Call(inputParameter.Expression, method), inputParameter.Alias, builderContext);
-                UnregisterParameter(inputParameter, builderContext);
-
-                return parameterToHandle;
-            }
-            
-            if (!parameter.Type.IsPrimitive && parameterToHandle.Type != typeof(string))
-            {
-                //TODO: ExpressionDispacher.Analyze.AnalyzeToString is not complete
-                //This is the standar behaviour in linq2sql, nonetheless the behaviour isn't complete since when the expression
-                //can be executed in the clr, ie: (where new StrangeObject().ToString()) should work. The problem is that
-                //we don't have a reference to the optimizer here.
-                //Working samples in: /Tests/Test_Nunit/ReadTests_Conversions.cs
-                string message = "Method ToString can only be translated to SQL for primitive types.";
-                int? select = FirstIndexOf(builderContext.CallStack, "Select");
-                int? where  = FirstIndexOf(builderContext.CallStack, "Where");
-                if ((where ?? int.MaxValue) < (select ?? int.MaxValue))
-                    // Assume we're generating the .Where() clause, not .Select()
-                    throw new NotSupportedException(message);
-                // for .Select()
-                throw new InvalidOperationException(message);
-            }
-
-            return Expression.Convert(parameterToHandle, typeof(string), typeof(Convert).GetMethod("ToString", new[] { parameterToHandle.Type }));
-        }
-
-        static int? FirstIndexOf(Stack<MethodInfo> callStack, string methodName)
-        {
-            int? index = null;
-            callStack.Where((m, i) =>
-            {
-                if (m.Name == methodName)
-                {
-                    index = i;
-                    return true;
-                }
-                return false;
-            }).FirstOrDefault();
-            return index;
-        }
-
-        /// <summary>
-        /// Limits selection count
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeTake(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            AddLimit(Analyze(parameters[1], builderContext), builderContext);
-            return Analyze(parameters[0], builderContext);
-        }
-
-        protected virtual void AddLimit(Expression limit, BuilderContext builderContext)
-        {
-            var previousLimit = builderContext.CurrentSelect.Limit;
-            if (previousLimit != null)
-                builderContext.CurrentSelect.Limit = Expression.Condition(Expression.LessThan(previousLimit, limit),
-                                                                          previousLimit, limit);
-            else
-                builderContext.CurrentSelect.Limit = limit;
-        }
-
-        /// <summary>
-        /// Skip selection items
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeSkip(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            AddOffset(Analyze(parameters[1], builderContext), builderContext);
-            return Analyze(parameters[0], builderContext);
-        }
-
-        protected virtual void AddOffset(Expression offset, BuilderContext builderContext)
-        {
-            var previousOffset = builderContext.CurrentSelect.Offset;
-            if (previousOffset != null)
-                builderContext.CurrentSelect.Offset = Expression.Add(offset, previousOffset);
-            else
-                builderContext.CurrentSelect.Offset = offset;
-        }
-
-        /// <summary>
-        /// Registers a scalar method call for result
-        /// </summary>
-        /// <param name="methodName"></param>
-        /// <param name="limit"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeScalar(string methodName, int? limit, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            builderContext.CurrentSelect.ExecuteMethodName = methodName;
-            if (limit.HasValue)
-                AddLimit(Expression.Constant(limit.Value), builderContext);
-            var table = Analyze(parameters[0], builderContext);
-            var set = table as EntitySetExpression;
-            if (set != null)
-                table = set.TableExpression;
-            CheckWhere(table, parameters, 1, builderContext);
-            return table;
-        }
-
-        /// <summary>
-        /// Some methods, like Single(), Count(), etc. can get an extra parameter, specifying a restriction.
-        /// This method checks if the parameter is specified, and adds it to the WHERE clauses
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="parameters"></param>
-        /// <param name="extraParameterIndex"></param>
-        /// <param name="builderContext"></param>
-        private void CheckWhere(Expression table, IList<Expression> parameters, int extraParameterIndex, BuilderContext builderContext)
-        {
-            if (parameters.Count > extraParameterIndex) // a lambda can be specified here, this is a restriction
-                RegisterWhere(Analyze(parameters[extraParameterIndex], table, builderContext), builderContext);
-        }
-
-        /// <summary>
-        /// Returns a projection method call
-        /// </summary>
-        /// <param name="specialExpressionType"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeProjectionQuery(SpecialExpressionType specialExpressionType, IList<Expression> parameters,
-                                                            BuilderContext builderContext)
-        {
-
-            if (builderContext.IsExternalInExpressionChain)
-            {
-                var operand0 = Analyze(parameters[0], builderContext);
-                Expression projectionOperand;
-
-                if (    builderContext.CurrentSelect.NextSelectExpression != null 
-                    ||  builderContext.CurrentSelect.Operands.Count() > 0
-                    ||  builderContext.CurrentSelect.Group.Count > 0
-                   )
-                {
-                    //BuildSelect(builderContext.CurrentSelect, builderContext);
-                    operand0 = new SubSelectExpression(builderContext.CurrentSelect, operand0.Type, "source");
-                    builderContext.NewParentSelect();
-
-                    // In the new scope we should not have MaximumDatabaseLoad
-                    builderContext.QueryContext.MaximumDatabaseLoad = false;
-
-                    builderContext.CurrentSelect.Tables.Add(operand0 as TableExpression);
-                }
-
-                // basically, we have three options for projection methods:
-                // - projection on grouped table (1 operand, a GroupExpression)
-                // - projection on grouped column (2 operands, GroupExpression and ColumnExpression)
-                // - projection on table/column, with optional restriction
-                var groupOperand0 = operand0 as GroupExpression;
-                if (groupOperand0 != null)
-                {
-                    if (parameters.Count > 1)
-                    {
-                        projectionOperand = Analyze(parameters[1], groupOperand0.GroupedExpression,
-                                                    builderContext);
-                    }
-                    else
-                        projectionOperand = Analyze(groupOperand0.GroupedExpression, builderContext);
-                }
-                else
-                {
-                    projectionOperand = operand0;
-                    CheckWhere(projectionOperand, parameters, 1, builderContext);
-                }
-
-                if (projectionOperand is TableExpression)
-                    projectionOperand = RegisterTable((TableExpression)projectionOperand, builderContext);
-
-                if (groupOperand0 != null)
-                    projectionOperand = new GroupExpression(projectionOperand, groupOperand0.KeyExpression);
-
-                return new SpecialExpression(specialExpressionType, projectionOperand);
-            }
-            else
-            {
-                var projectionQueryBuilderContext = builderContext.NewSelect();
-
-                var tableExpression = Analyze(parameters[0], projectionQueryBuilderContext);
-
-                if (!(tableExpression is TableExpression) && !(tableExpression is EntitySetExpression))
-                    tableExpression = Analyze(tableExpression, projectionQueryBuilderContext);
-                EntitySetExpression setExpression = tableExpression as EntitySetExpression;
-                if (setExpression != null)
-                    tableExpression = setExpression.TableExpression;
-
-                // from here we build a custom clause:
-                // <anyClause> ==> "(select count(*) from <table> where <anyClause>)>0"
-                // TODO (later...): see if some vendors support native Any operator and avoid this substitution
-                if (parameters.Count > 1)
-                {
-                    setExpression = tableExpression as EntitySetExpression;
-                    if (setExpression != null)
-                        tableExpression = setExpression.TableExpression;
-                    var anyClause = Analyze(parameters[1], tableExpression, projectionQueryBuilderContext);
-                    RegisterWhere(anyClause, projectionQueryBuilderContext);
-                }
-
-                projectionQueryBuilderContext.CurrentSelect = projectionQueryBuilderContext.CurrentSelect.ChangeOperands(new SpecialExpression(specialExpressionType, tableExpression));
-
-                // we now switch back to current context, and compare the result with 0
-                return projectionQueryBuilderContext.CurrentSelect;
-            }
-        }
-
-        /// <summary>
-        /// Entry point for a Select()
-        /// static Select(this Expression table, λ(table))
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeSelect(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            // just call back the underlying lambda (or quote, whatever)
-            Expression ex = Analyze(parameters[1], parameters[0], builderContext);
-
-            // http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/1ce25da3-44c6-407d-8395-4c146930004b
-            if (ex.NodeType == ExpressionType.MemberInit &&
-                    builderContext.QueryContext.DataContext.Mapping.GetMetaType(ex.Type) != null)
-                throw new NotSupportedException(
-                    string.Format("Explicit construction of entity type '{0}' in query is not allowed.",
-                        ex.Type.FullName));
-            TableExpression tableExpression = parameters[0] as TableExpression;
-            if (tableExpression != null && builderContext.CurrentSelect.Tables.Count == 0)
-                RegisterTable(tableExpression, builderContext);
-            return ex;
-        }
-
-        /// <summary>
-        /// Entry point for a Where()
-        /// static Where(this Expression table, λ(table))
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeWhere(IList<Expression> parameters, BuilderContext builderContext)
-        {
-			var tablePiece = parameters[0];
-            RegisterWhere(Analyze(parameters[1], tablePiece, builderContext), builderContext);
-            return tablePiece;
-        }
-
-        /// <summary>
-        /// Handling a lambda consists in:
-        /// - filling its input parameters with what's on the stack
-        /// - using the body (parameters are registered in the context)
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeLambda(Expression expression, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var lambdaExpression = expression as LambdaExpression;
-            if (lambdaExpression == null)
-                throw Error.BadArgument("S0227: Unknown type for AnalyzeLambda() ({0})", expression.GetType());
-            // for a lambda, first parameter is body, others are input parameters
-            // so we create a parameters stack
-            for (int parameterIndex = 0; parameterIndex < lambdaExpression.Parameters.Count; parameterIndex++)
-            {
-                var parameterExpression = lambdaExpression.Parameters[parameterIndex];
-                builderContext.Parameters[parameterExpression.Name] = Analyze(parameters[parameterIndex], builderContext);
-            }
-            // we keep only the body, the header is now useless
-            // and once the parameters have been substituted, we don't pass one anymore
-            return Analyze(lambdaExpression.Body, builderContext);
-        }
-
-        /// <summary>
-        /// When a parameter is used, we replace it with its original value
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeParameter(Expression expression, BuilderContext builderContext)
-        {
-            Expression unaliasedExpression;
-            var parameterName = GetParameterName(expression);
-            builderContext.Parameters.TryGetValue(parameterName, out unaliasedExpression);
-            if (unaliasedExpression == null)
-                throw Error.BadArgument("S0257: can not find parameter '{0}'", parameterName);
-
-            #region set alias helper
-
-            // for table...
-            var unaliasedTableExpression = unaliasedExpression as TableExpression;
-            if (unaliasedTableExpression != null && unaliasedTableExpression.Alias == null)
-                unaliasedTableExpression.Alias = parameterName;
-            // .. or column
-            var unaliasedColumnExpression = unaliasedExpression as ColumnExpression;
-            if (unaliasedColumnExpression != null && unaliasedColumnExpression.Alias == null)
-                unaliasedColumnExpression.Alias = parameterName;
-
-            #endregion
-
-            //var groupByExpression = unaliasedExpression as GroupByExpression;
-            //if (groupByExpression != null)
-            //    unaliasedExpression = groupByExpression.ColumnExpression.Table;
-
-            return unaliasedExpression;
-        }
-
-        /// <summary>
-        /// Returns if the given member can be considered as an EntitySet<>
-        /// </summary>
-        /// <param name="memberType"></param>
-        /// <param name="entityType"></param>
-        /// <returns></returns>
-        protected virtual bool IsEntitySet(Type memberType, out Type entityType)
-        {
-            entityType = memberType;
-            // one check, a generic EntityRef<> or inherited
-            if (memberType.IsGenericType && typeof(EntitySet<>).IsAssignableFrom(memberType.GetGenericTypeDefinition()))
-            {
-                entityType = memberType.GetGenericArguments()[0];
-                return true;
-            }
-#if !MONO_STRICT
-            // this is for compatibility with previously generated .cs files
-            // TODO: remove in 2009
-            if (memberType.IsGenericType && typeof(System.Data.Linq.EntitySet<>).IsAssignableFrom(memberType.GetGenericTypeDefinition()))
-            {
-                entityType = memberType.GetGenericArguments()[0];
-                return true;
-            }
-#endif
-            return false;
-        }
-
-        /// <summary>
-        /// Analyzes a member access.
-        /// This analyzis is down to top: the highest identifier is at bottom
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeMember(Expression expression, BuilderContext builderContext)
-        {
-            var memberExpression = (MemberExpression)expression;
-
-            Expression objectExpression = null;
-            //maybe is a static member access like DateTime.Now
-            bool isStaticMemberAccess = memberExpression.Member.GetIsStaticMember();
-
-            var memberInfo = memberExpression.Member;
-            if (!isStaticMemberAccess && memberInfo.Name == "Count")
-                return AnalyzeProjectionQuery(SpecialExpressionType.Count, new[] { memberExpression.Expression }, builderContext);
-
-            if (!isStaticMemberAccess)
-                // first parameter is object, second is member
-                objectExpression = Analyze(memberExpression.Expression, builderContext);
-
-            // then see what we can do, depending on object type
-            // - MetaTable --> then the result is a table
-            // - Table --> the result may be a column or a join
-            // - Object --> external parameter or table (can this happen here? probably not... to be checked)
-
-            EntitySetExpression setExpression = objectExpression as EntitySetExpression;
-            if (setExpression != null)
-            {
-                objectExpression = setExpression.TableExpression;
-            }
-
-            if (objectExpression is MetaTableExpression)
-            {
-                var metaTableExpression = (MetaTableExpression)objectExpression;
-                var tableExpression = metaTableExpression.GetTableExpression(memberInfo);
-                if (tableExpression == null)
-                    throw Error.BadArgument("S0270: MemberInfo '{0}' not found in MetaTable", memberInfo.Name);
-                return tableExpression;
-            }
-
-            if (objectExpression is GroupExpression)
-            {
-                if (memberInfo.Name == "Key")
-                    return ((GroupExpression)objectExpression).KeyExpression;
-            }
-
-            // if object is a table, then we need a column, or an association
-            if (objectExpression is TableExpression)
-            {
-                var tableExpression = (TableExpression)objectExpression;
-
-
-                // before finding an association, we check for an EntitySet<>
-                // this will be used in RegisterAssociation
-                Type entityType;
-                if (IsEntitySet(memberInfo.GetMemberType(), out entityType))
-                    return new EntitySetExpression(tableExpression, memberInfo, memberInfo.GetMemberType(), builderContext, this);
-
-                // first of all, then, try to find the association
-                var queryAssociationExpression = RegisterAssociation(tableExpression, memberInfo, entityType,
-                                                                     builderContext);
-                if (queryAssociationExpression != null)
-                {
-                    return queryAssociationExpression;
-                }
-                // then, try the column
-                ColumnExpression queryColumnExpression = RegisterColumn(tableExpression, memberInfo, builderContext);
-                if (queryColumnExpression != null)
-                {
-                    Type storageType = queryColumnExpression.StorageInfo != null ? queryColumnExpression.StorageInfo.GetMemberType() : null;
-                    if (storageType != null && queryColumnExpression.Type != storageType)
-                    {
-                        return Expression.Convert(queryColumnExpression, queryColumnExpression.Type, typeof(Convert).GetMethod("To" + queryColumnExpression.Type.Name, new Type[] { queryColumnExpression.Type }));
-                    }
-                    else
-                    {
-                        return queryColumnExpression;
-                    }
-                }
-                // then, cry
-                throw Error.BadArgument("S0293: Column must be mapped. Non-mapped columns are not handled by now.");
-            }
-
-            // if object is still an object (== a constant), then we have an external parameter
-            if (objectExpression is ConstantExpression)
-            {
-                // the memberInfo.Name is provided here only to ease the SQL reading
-                var parameterExpression = RegisterParameter(expression, memberInfo.Name, builderContext);
-                if (parameterExpression != null)
-                    return parameterExpression;
-                throw Error.BadArgument("S0302: Can not created parameter from expression '{0}'", expression);
-            }
-
-            // we have here a special cases for nullables
-            if (!isStaticMemberAccess && objectExpression.Type != null && objectExpression.Type.IsNullable())
-            {
-                // Value means we convert the nullable to a value --> use Convert instead (works both on CLR and SQL, too)
-                if (memberInfo.Name == "Value")
-                    return Expression.Convert(objectExpression, memberInfo.GetMemberType());
-                // HasValue means not null (works both on CLR and SQL, too)
-                if (memberInfo.Name == "HasValue")
-                    return new SpecialExpression(SpecialExpressionType.IsNotNull, objectExpression);
-            }
-
-
-            if (memberInfo.DeclaringType == typeof(DateTime))
-                return AnalyzeDateTimeMemberAccess(objectExpression, memberInfo, isStaticMemberAccess);
-
-            // TODO: make this expresion safe (objectExpression can be null here)
-            if (objectExpression.Type == typeof(TimeSpan))
-                return AnalyzeTimeSpanMemberAccess(objectExpression, memberInfo);
-
-
-            if (objectExpression is InputParameterExpression)
-            {
-                return AnalyzeExternalParameterMember((InputParameterExpression)objectExpression, memberInfo, builderContext);
-            }
-
-            if (objectExpression is MemberInitExpression)
-            {
-                var foundExpression = AnalyzeMemberInit((MemberInitExpression)objectExpression, memberInfo, builderContext);
-                if (foundExpression != null)
-                    return foundExpression;
-            }
-
-            return AnalyzeCommonMember(objectExpression, memberInfo, builderContext);
-        }
-
-        protected Expression AnalyzeTimeSpanMemberAccess(Expression objectExpression, MemberInfo memberInfo)
-        {
-            //A timespan expression can be only generated in a c# query as a DateTime difference, as a function call return or as a paramter
-            //this case is for the DateTime difference operation
-
-            if (!(objectExpression is BinaryExpression))
-                throw new NotSupportedException();
-
-            var operands = objectExpression.GetOperands();
-
-            bool absoluteSpam = memberInfo.Name.StartsWith("Total");
-            string operationKey = absoluteSpam ? memberInfo.Name.Substring(5) : memberInfo.Name;
-
-            Expression currentExpression;
-            switch (operationKey)
-            {
-                case "Milliseconds":
-                    currentExpression = Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double));
-                    break;
-                case "Seconds":
-                    currentExpression = Expression.Divide(
-                        Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
-                        Expression.Constant(1000.0));
-                    break;
-                case "Minutes":
-                    currentExpression = Expression.Divide(
-                            Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
-                            Expression.Constant(60000.0));
-                    break;
-                case "Hours":
-                    currentExpression = Expression.Divide(
-                            Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
-                            Expression.Constant(3600000.0));
-                    break;
-                case "Days":
-                    currentExpression = Expression.Divide(
-                            Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
-                            Expression.Constant(86400000.0));
-                    break;
-                default:
-                    throw new NotSupportedException(string.Format("The operation {0} over the TimeSpan isn't currently supported", memberInfo.Name));
-            }
-
-            if (!absoluteSpam)
-            {
-                switch (memberInfo.Name)
-                {
-                    case "Milliseconds":
-                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(currentExpression, typeof(long)), Expression.Constant(1000L)), typeof(int));
-                        break;
-                    case "Seconds":
-                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(currentExpression, typeof(long)),
-                                                              Expression.Constant(60L)), typeof(int));
-                        break;
-                    case "Minutes":
-                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(currentExpression, typeof(long)),
-                                                                Expression.Constant(60L)), typeof(int));
-                        break;
-                    case "Hours":
-                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(
-                                                                                        currentExpression, typeof(long)),
-                                                                Expression.Constant(24L)), typeof(int));
-                        break;
-                    case "Days":
-                        currentExpression = Expression.Convert(currentExpression, typeof(int));
-                        break;
-                }
-
-            }
-            return currentExpression;
-        }
-
-        protected Expression AnalyzeDateTimeMemberAccess(Expression objectExpression, MemberInfo memberInfo, bool isStaticMemberAccess)
-        {
-            if (isStaticMemberAccess)
-            {
-                if (memberInfo.Name == "Now")
-                    return new SpecialExpression(SpecialExpressionType.Now);
-                else
-                    throw new NotSupportedException(string.Format("DateTime Member access {0} not supported", memberInfo.Name));
-            }
-            else
-            {
-                switch (memberInfo.Name)
-                {
-                    case "Year":
-                        return new SpecialExpression(SpecialExpressionType.Year, objectExpression);
-                    case "Month":
-                        return new SpecialExpression(SpecialExpressionType.Month, objectExpression);
-                    case "Day":
-                        return new SpecialExpression(SpecialExpressionType.Day, objectExpression);
-                    case "Hour":
-                        return new SpecialExpression(SpecialExpressionType.Hour, objectExpression);
-                    case "Minute":
-                        return new SpecialExpression(SpecialExpressionType.Minute, objectExpression);
-                    case "Second":
-                        return new SpecialExpression(SpecialExpressionType.Second, objectExpression);
-                    case "Millisecond":
-                        return new SpecialExpression(SpecialExpressionType.Millisecond, objectExpression);
-                    case "Date":
-                        return new SpecialExpression(SpecialExpressionType.Date, objectExpression);
-                    default:
-                        throw new NotSupportedException(string.Format("DateTime Member access {0} not supported", memberInfo.Name));
-                }
-            }
-        }
-
-        /// <summary>
-        /// This method analyzes the case of a new followed by a member access
-        /// for example new "A(M = value).M", where the Expression can be reduced to "value"
-        /// Caution: it may return null if no result is found
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="memberInfo"></param>
-        /// <param name="builderContext"></param>
-        /// <returns>A member initializer or null</returns>
-        protected virtual Expression AnalyzeMemberInit(MemberInitExpression expression, MemberInfo memberInfo,
-                                                       BuilderContext builderContext)
-        {
-            // TODO: a method for NewExpression that we will use directly from AnalyzeMember and indirectly from here
-            foreach (var binding in expression.Bindings)
-            {
-                var memberAssignment = binding as MemberAssignment;
-                if (memberAssignment != null)
-                {
-                    if (memberAssignment.Member == memberInfo)
-                        return memberAssignment.Expression;
-                }
-            }
-            return null;
-        }
-
-        protected virtual Expression AnalyzeExternalParameterMember(InputParameterExpression expression, MemberInfo memberInfo, BuilderContext builderContext)
-        {
-            UnregisterParameter(expression, builderContext);
-            return RegisterParameter(Expression.MakeMemberAccess(expression.Expression, memberInfo), memberInfo.Name, builderContext);
-        }
-
-        protected virtual Expression AnalyzeCommonMember(Expression objectExpression, MemberInfo memberInfo, BuilderContext builderContext)
-        {
-            if (typeof(string).IsAssignableFrom(objectExpression.Type))
-            {
-                switch (memberInfo.Name)
-                {
-                    case "Length":
-                        return new SpecialExpression(SpecialExpressionType.StringLength, objectExpression);
-                }
-            }
-            //throw Error.BadArgument("S0324: Don't know how to handle Piece");
-            return Expression.MakeMemberAccess(objectExpression, memberInfo);
-        }
-
-        /// <summary>
-        /// A Quote creates a new local context, outside which created parameters disappear
-        /// This is why we clone the BuilderContext
-        /// </summary>
-        /// <param name="piece"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeQuote(Expression piece, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var builderContextClone = builderContext.NewQuote();
-            var firstExpression = piece.GetOperands().First();
-            return Analyze(firstExpression, parameters, builderContextClone);
-        }
-
-        /// <summary>
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeOperatorSubstract(Expression expression, BuilderContext builderContext)
-        {
-            return AnalyzeOperator(expression, builderContext);
-        }
-
-        /// <summary>
-        /// Operator analysis consists in anlyzing all operands
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeOperator(Expression expression, BuilderContext builderContext)
-        {
-            var u = expression as UnaryExpression;
-            string parameterName;
-            if (expression.NodeType == ExpressionType.Convert && 
-                    u.Method == null &&
-                    (parameterName = GetParameterName(u.Operand)) != null)
-            {
-                Expression unaliasedExpression;
-                builderContext.Parameters.TryGetValue(parameterName, out unaliasedExpression);
-                var unaliasedTableExpression = unaliasedExpression as TableExpression;
-                if (unaliasedExpression != null && unaliasedTableExpression != null)
-                    return unaliasedTableExpression;
-            }
-            var operands = expression.GetOperands().ToList();
-            for (int operandIndex = 0; operandIndex < operands.Count; operandIndex++)
-            {
-                var operand = operands[operandIndex];
-                operands[operandIndex] = Analyze(operand, builderContext);
-            }
-
-            return expression.ChangeOperands(operands);
-        }
-
-        protected virtual Expression AnalyzeNewOperator(Expression expression, BuilderContext builderContext)
-        {
-            if (builderContext.ExpectMetaTableDefinition)
-            {
-                // first, check if we have a MetaTable definition
-                Type metaType;
-                var typeInitializers = GetTypeInitializers<Expression>((NewExpression)expression, true, out metaType);
-                var aliases = new Dictionary<MemberInfo, MutableExpression>();
-                foreach (var memberInfo in typeInitializers.Keys)
-                {
-                    var e = Analyze(typeInitializers[memberInfo], builderContext);
-                    var tableExpression = e as TableExpression;
-                    var ese = e as EntitySetExpression;
-                    if (ese != null)
-                        tableExpression = ese.TableExpression;
-                    if (tableExpression != null)
-                    {
-                        aliases[memberInfo] = tableExpression;
-                    }
-                    else
-                    {
-                        aliases[memberInfo] = Analyze(typeInitializers[memberInfo], builderContext) as MetaTableExpression;
-                    }
-                }
-                if (IsMetaTableDefinition(aliases))
-                    return RegisterMetaTable(metaType, aliases, builderContext);
-            }
-            return AnalyzeOperator(expression, builderContext);
-        }
-
-        protected virtual bool IsMetaTableDefinition(IDictionary<MemberInfo, MutableExpression> aliases)
-        {
-            if (aliases.Count != 2)
-                return false;
-            foreach (var tableExpression in aliases.Values)
-            {
-                if (tableExpression == null)
-                    return false;
-            }
-            return true;
-        }
-
-        /// <summary>
-        /// SelectMany() joins tables
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeSelectMany(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (parameters.Count == 3)
-            {
-                // ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fxref_system.core/html/3371348f-7811-b0bc-8c0a-2a595e08e086.htm
-                var tableExpression = parameters[0];
-                var projectionExpression = Analyze(parameters[1], new[] { tableExpression }, builderContext);
-                //var manyPiece = Analyze(parameters[2], new[] { tableExpression, projectionExpression }, builderContext);
-                // from here, our manyPiece is a MetaTable definition
-                //var newExpression = manyPiece as NewExpression;
-                //if (newExpression == null)
-                //    throw Error.BadArgument("S0377: Expected a NewExpression as SelectMany() return value");
-                //Type metaTableType;
-                //var associations = GetTypeInitializers<TableExpression>(newExpression, true, out metaTableType);
-                //return RegisterMetaTable(metaTableType, associations, builderContext);
-                var metaTableDefinitionBuilderContext = builderContext.Clone();
-                metaTableDefinitionBuilderContext.ExpectMetaTableDefinition = true;
-                var expression = Analyze(parameters[2], new[] { tableExpression, projectionExpression },
-                                         metaTableDefinitionBuilderContext);
-                return expression;
-            }
-            throw Error.BadArgument("S0358: Don't know how to handle this SelectMany() overload ({0} parameters)", parameters.Count);
-        }
-
-        protected virtual IDictionary<MemberInfo, E> GetTypeInitializers<E>(NewExpression newExpression,
-                                                                            bool checkCast, out Type metaType)
-            where E : Expression
-        {
-            var associations = new Dictionary<MemberInfo, E>();
-            metaType = null;
-            for (int ctorParameterIndex = 0; ctorParameterIndex < newExpression.Arguments.Count; ctorParameterIndex++)
-            {
-                var aliasedExpression = newExpression.Arguments[ctorParameterIndex] as E;
-                if (aliasedExpression == null && checkCast)
-                    throw Error.BadArgument("S0541: Expected an specific Expression type for GetTypeInitializers()");
-                var memberInfo = newExpression.Members[ctorParameterIndex];
-                metaType = memberInfo.ReflectedType;
-                // the property info is the reflecting property for the memberInfo, if memberInfo is a get_*
-                // otherwise we keep the memberInfo as is, since it is a field
-                var propertyInfo = memberInfo.GetExposingProperty() ?? memberInfo;
-                associations[propertyInfo] = aliasedExpression;
-            }
-            if (metaType == null && checkCast)
-                throw Error.BadArgument("S0550: Empty NewExpression found"); // this should never happen, otherwise we may simply ignore it or take the type from elsewhere
-            return associations;
-        }
-
-        //protected virtual IDictionary<MemberInfo, E> GetTypeInitializers<E>(NewExpression newExpression)
-        //    where E : Expression
-        //{
-        //    Type metaType;
-        //    return GetTypeInitializers<E>(newExpression, out metaType);
-        //}
-
-        /// <summary>
-        /// Analyzes a Join statement (explicit join)
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeJoin(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return AnalyzeJoin(parameters, TableJoinType.Inner, builderContext);
-        }
-
-        /// <summary>
-        /// Analyzes a Join statement (explicit join)
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeGroupJoin(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return AnalyzeJoin(parameters, TableJoinType.Inner, builderContext);
-        }
-
-        protected virtual Expression AnalyzeOuterJoin(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var expression = Analyze(parameters[0], builderContext);
-            var tableExpression = expression as TableExpression;
-            if (tableExpression != null)
-            {
-                tableExpression.SetOuterJoin();
-            }
-            return expression;
-        }
-
-        private Expression AnalyzeJoin(IList<Expression> parameters, TableJoinType joinType, BuilderContext builderContext)
-        {
-            if (parameters.Count == 5)
-            {
-                var leftExpression = Analyze(parameters[0], builderContext);
-                var rightTable = Analyze(parameters[1], builderContext) as TableExpression;
-                if (rightTable == null)
-                    throw Error.BadArgument("S0536: Expected a TableExpression for Join");
-                var leftJoin = Analyze(parameters[2], leftExpression, builderContext);
-                var rightJoin = Analyze(parameters[3], rightTable, builderContext);
-                // from here, we have two options to join:
-                // 1. left and right are tables, we can use generic expressions (most common)
-                // 2. left is something else (a meta table)
-                var leftTable = leftExpression as TableExpression;
-                if (leftTable == null)
-                {
-                    var leftColumn = leftJoin as ColumnExpression;
-                    if (leftColumn == null)
-                        throw Error.BadArgument("S0701: No way to find left table for Join");
-                    leftTable = leftColumn.Table;
-                }
-                rightTable.Join(joinType, leftTable, Expression.Equal(leftJoin, rightJoin),
-                                string.Format("join{0}", builderContext.EnumerateAllTables().Count()));
-                // last part is lambda, with two tables as parameters
-                var metaTableDefinitionBuilderContext = builderContext.Clone();
-                metaTableDefinitionBuilderContext.ExpectMetaTableDefinition = true;
-                var expression = Analyze(parameters[4], new[] { leftExpression, rightTable }, metaTableDefinitionBuilderContext);
-                return expression;
-            }
-            throw Error.BadArgument("S0530: Don't know how to handle GroupJoin() with {0} parameters", parameters.Count);
-        }
-
-        /// <summary>
-        /// "Distinct" means select X group by X
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeDistinct(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var expression = Analyze(parameters[0], builderContext);
-            // we select and group by the same criterion
-            var group = new GroupExpression(expression, expression);
-            if (builderContext.CurrentSelect.NextSelectExpression != null)
-            {
-                expression = new SubSelectExpression(builderContext.CurrentSelect, expression.Type, "source");
-                builderContext.NewParentSelect();
-
-                // In the new scope we should not have MaximumDatabaseLoad
-                builderContext.QueryContext.MaximumDatabaseLoad = false;
-
-                builderContext.CurrentSelect.Tables.Add(expression as TableExpression);
-            }
-            builderContext.CurrentSelect.Group.Add(group);
-            // "Distinct" method is equivalent to a GroupBy
-            // but for some obscure reasons, Linq expects a IQueryable instead of an IGrouping
-            // so we return the column, not the group
-            return expression;
-        }
-
-        /// <summary>
-        /// Creates a group by clause
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeGroupBy(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var table = Analyze(parameters[0], builderContext);
-            var keyExpression = Analyze(parameters[1], table, builderContext);
-
-            Expression result;
-            if (parameters.Count == 2)
-                result = table; // we return the whole table
-            else if (parameters.Count == 3)
-                result = Analyze(parameters[2], table, builderContext); // 3 parameters for a projection expression
-            else
-                throw Error.BadArgument("S0629: Don't know how to handle Expression to group by with {0} parameters", parameters.Count);
-
-            var group = new GroupExpression(result, keyExpression);
-            builderContext.CurrentSelect.Group.Add(group);
-            return group;
-        }
-
-        /// <summary>
-        /// All() returns true if the given condition satisfies all provided elements
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeAll(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var allBuilderContext = builderContext.NewSelect();
-            var tableExpression = Analyze(parameters[0], allBuilderContext);
-            var allClause = Analyze(parameters[1], tableExpression, allBuilderContext);
-            // from here we build a custom clause:
-            // <allClause> ==> "(select count(*) from <table> where not <allClause>)==0"
-            // TODO (later...): see if some vendors support native All operator and avoid this substitution
-            var whereExpression = Expression.Not(allClause);
-            RegisterWhere(whereExpression, allBuilderContext);
-            allBuilderContext.CurrentSelect = allBuilderContext.CurrentSelect.ChangeOperands(new SpecialExpression(SpecialExpressionType.Count, tableExpression));
-            // TODO: see if we need to register the tablePiece here (we probably don't)
-
-            // we now switch back to current context, and compare the result with 0
-            var allExpression = Expression.Equal(allBuilderContext.CurrentSelect, Expression.Constant(0));
-            return allExpression;
-        }
-
-        /// <summary>
-        /// Any() returns true if the given condition satisfies at least one of provided elements
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeAny(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (builderContext.IsExternalInExpressionChain)
-            {
-                var tableExpression = Analyze(parameters[0], builderContext);
-                Expression projectionOperand;
-
-                if (builderContext.CurrentSelect.NextSelectExpression != null)
-                {
-                    TableExpression currentTableExpression = tableExpression as TableExpression;
-                    tableExpression = new SubSelectExpression(builderContext.CurrentSelect, currentTableExpression.Type, "source");
-                    builderContext.NewParentSelect();
-
-                    // In the new scope we should not have MaximumDatabaseLoad
-                    builderContext.QueryContext.MaximumDatabaseLoad = false;
-
-                    builderContext.CurrentSelect.Tables.Add(tableExpression as TableExpression);
-                }
-
-                // basically, we have three options for projection methods:
-                // - projection on grouped table (1 operand, a GroupExpression)
-                // - projection on grouped column (2 operands, GroupExpression and ColumnExpression)
-                // - projection on table/column, with optional restriction
-                var groupOperand0 = tableExpression as GroupExpression;
-                if (groupOperand0 != null)
-                {
-                    if (parameters.Count > 1)
-                    {
-                        projectionOperand = Analyze(parameters[1], groupOperand0.GroupedExpression,
-                                                    builderContext);
-                    }
-                    else
-                        projectionOperand = Analyze(groupOperand0.GroupedExpression, builderContext);
-                }
-                else
-                {
-                    projectionOperand = tableExpression;
-                    CheckWhere(projectionOperand, parameters, 1, builderContext);
-                }
-
-                if (projectionOperand is TableExpression)
-                    projectionOperand = RegisterTable((TableExpression)projectionOperand, builderContext);
-
-                if (groupOperand0 != null)
-                    projectionOperand = new GroupExpression(projectionOperand, groupOperand0.KeyExpression);
-
-                return Expression.GreaterThan(new SpecialExpression(SpecialExpressionType.Count, projectionOperand), Expression.Constant(0));
-            }
-            else
-            {
-                var anyBuilderContext = builderContext.NewSelect();
-                var tableExpression = Analyze(parameters[0], anyBuilderContext);
-
-                if (!(tableExpression is TableExpression) && !(tableExpression is EntitySetExpression))
-                    tableExpression = Analyze(tableExpression, anyBuilderContext);
-                EntitySetExpression setExpression = tableExpression as EntitySetExpression;
-                if (setExpression != null)
-                    tableExpression = setExpression.TableExpression;
-
-                // from here we build a custom clause:
-                // <anyClause> ==> "(select count(*) from <table> where <anyClause>)>0"
-                // TODO (later...): see if some vendors support native Any operator and avoid this substitution
-                if (parameters.Count > 1)
-                {
-                    setExpression = tableExpression as EntitySetExpression;
-                    if (setExpression != null)
-                        tableExpression = setExpression.TableExpression;
-                    var anyClause = Analyze(parameters[1], tableExpression, anyBuilderContext);
-                    RegisterWhere(anyClause, anyBuilderContext);
-                }
-                anyBuilderContext.CurrentSelect = anyBuilderContext.CurrentSelect.ChangeOperands(new SpecialExpression(SpecialExpressionType.Count, tableExpression));
-                // TODO: see if we need to register the tablePiece here (we probably don't)
-
-                // we now switch back to current context, and compare the result with 0
-                var anyExpression = Expression.GreaterThan(anyBuilderContext.CurrentSelect, Expression.Constant(0));
-                return anyExpression;
-            }
-        }
-
-        protected virtual Expression AnalyzeLikeStart(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return AnalyzeLike(parameters[0], null, parameters[1], "%", builderContext);
-        }
-
-        protected virtual Expression AnalyzeLikeEnd(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return AnalyzeLike(parameters[0], "%", parameters[1], null, builderContext);
-        }
-
-        protected virtual Expression AnalyzeLike(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return AnalyzeLike(parameters[0], "%", parameters[1], "%", builderContext);
-        }
-
-        protected virtual Expression AnalyzeLike(Expression value, string before, Expression operand, string after, BuilderContext builderContext)
-        {
-            operand = Analyze(operand, builderContext);
-            if (before != null)
-                operand = new SpecialExpression(SpecialExpressionType.Concat, Expression.Constant(before), operand);
-            if (after != null)
-                operand = new SpecialExpression(SpecialExpressionType.Concat, operand, Expression.Constant(after));
-            return new SpecialExpression(SpecialExpressionType.Like, Analyze(value, builderContext), operand);
-        }
-
-        protected virtual Expression AnalyzeSubString(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            var stringExpression = Analyze(parameters[0], builderContext);
-            var startExpression = new StartIndexOffsetExpression(builderContext.QueryContext.DataContext.Vendor.SqlProvider.StringIndexStartsAtOne,
-                                                        Analyze(parameters[1], builderContext));
-            if (parameters.Count > 2)
-            {
-                var lengthExpression = parameters[2];
-                return new SpecialExpression(SpecialExpressionType.Substring, stringExpression, startExpression, lengthExpression);
-            }
-            return new SpecialExpression(SpecialExpressionType.Substring, stringExpression, startExpression);
-        }
-
-        protected virtual Expression AnalyzeContains(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            if (parameters[0].Type.IsArray)
-            {
-                Expression array = Analyze(parameters[0], builderContext);
-                var expression = Analyze(parameters[1], builderContext);
-                return new SpecialExpression(SpecialExpressionType.In, expression, array);
-            }
-            else
-            {
-                if (typeof(IQueryable).IsAssignableFrom(parameters[0].Type))
-                {
-                    Expression p0 = Analyze(parameters[1], builderContext);
-                    BuilderContext newContext = builderContext.NewSelect();
-                    InputParameterExpression ip1 = new InputParameterExpression(parameters[0], "dummy");
-
-                    Expression p1 = AnalyzeQueryProvider(ip1.GetValue() as QueryProvider, newContext);
-                    ColumnExpression c = p1 as ColumnExpression;
-                    if (!newContext.CurrentSelect.Tables.Contains(c.Table))
-                    {
-                        newContext.CurrentSelect.Tables.Add(c.Table);
-                    }
-                    // TODO: verify if this is the right place to work
-                    return new SpecialExpression(SpecialExpressionType.In, p0, newContext.CurrentSelect.Mutate(new Expression[] { p1 }));
-                }
-            }
-            throw Error.BadArgument("S0548: Can't analyze Contains() method");
-        }
-
-        protected virtual Expression AnalyzeToUpper(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return new SpecialExpression(SpecialExpressionType.ToUpper, Analyze(parameters[0], builderContext));
-        }
-
-        protected virtual Expression AnalyzeToLower(IList<Expression> parameters, BuilderContext builderContext)
-        {
-            return new SpecialExpression(SpecialExpressionType.ToLower, Analyze(parameters[0], builderContext));
-        }
-
-        /// <summary>
-        /// Registers ordering request
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="descending"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeOrderBy(IList<Expression> parameters, bool descending, BuilderContext builderContext)
-        {
-            var table = Analyze(parameters[0], builderContext);
-            // the column is related to table
-            var column = Analyze(parameters[1], table, builderContext);
-            builderContext.CurrentSelect.OrderBy.Add(new OrderByExpression(descending, column));
-            return table;
-        }
-
-        /// <summary>
-        /// Analyzes constant expression value, and eventually extracts a table
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeConstant(Expression expression, BuilderContext builderContext)
-        {
-            var constantExpression = expression as ConstantExpression;
-            if (constantExpression != null)
-            {
-                var queriedType = GetQueriedType(expression);
-                if (queriedType != null)
-                {
-                    //return new TableExpression(queriedType, DataMapper.GetTableName(queriedType, builderContext.QueryContext.DataContext));
-                }
-                if (constantExpression.Value is ITable)
-                {
-                    var tableType = constantExpression.Type.GetGenericArguments()[0];
-                    return CreateTable(tableType, builderContext);
-                }
-                else
-                {
-                    QueryProvider queryProvider = constantExpression.Value as QueryProvider;
-                    if (queryProvider != null)
-                    {
-                        Expression tableExpression = AnalyzeQueryProvider(queryProvider, builderContext.NewQuote());
-                        return tableExpression;
-                    }
-                }
-            }
-            return expression;
-        }
-
-        protected virtual Expression AnalyzeQueryProvider(QueryProvider queryProvider, BuilderContext builderContext)
-        {
-            // TODO: check if the QueryProvider queryProvider belong to DataContext present in builderContext.QueryContext.DataContext
-            // otherwise strange things could happen in the future (I suppose)
-
-            // Build a new Context for the query
-            ExpressionChain expressions = queryProvider.ExpressionChain;
-            Expression tableExpression = CreateTableExpression(queryProvider.ExpressionChain.Expressions[0], builderContext);
-
-            return this.Analyze(expressions, tableExpression, builderContext);
-        }
-
-        protected virtual Expression AnalyzeSelectOperation(SelectOperatorType operatorType, IList<Expression> parameters, BuilderContext builderContext)
-        {
-            // a special case: if we have several SELECT expressions linked together,
-            // we maximize the load to the database, since the result must use the same parameters
-            // types and count.
-            builderContext.QueryContext.MaximumDatabaseLoad = true; // all select expression goes to SQL tier
-
-            var constantExpression = parameters[1] as ConstantExpression;
-            QueryProvider queryProvider = constantExpression.Value as QueryProvider;
-            if (queryProvider != null)
-            {
-                // Handle second select first
-                BuilderContext newContext = builderContext.NewSisterSelect();
-                Expression tableExpression = AnalyzeQueryProvider(queryProvider, newContext);
-                BuildSelect(tableExpression, newContext);
-
-                // add the second select select to the chain
-                if (newContext.CurrentSelect.NextSelectExpression != null)
-                {
-                    var operand0 = new SubSelectExpression(newContext.CurrentSelect, tableExpression.Type, "source");
-                    newContext.NewParentSelect();
-                    newContext.CurrentSelect.Tables.Add(operand0);
-                }
-                SelectExpression selectToModify = builderContext.CurrentSelect;
-                while (selectToModify.NextSelectExpression != null)
-                    selectToModify = selectToModify.NextSelectExpression;
-
-                selectToModify.NextSelectExpression = newContext.CurrentSelect;
-                selectToModify.NextSelectExpressionOperator = operatorType;
-
-                Expression firstSelection = Analyze(parameters[0], builderContext);
-                BuildSelect(firstSelection, builderContext);
-
-                return firstSelection;
-            }
-
-            return Analyze(parameters[0], builderContext);
-        }
-
-        /// <summary>
-        /// Analyses InvokeExpression
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeInvoke(Expression expression, IList<Expression> parameters,
-                                                   BuilderContext builderContext)
-        {
-            var invocationExpression = (InvocationExpression)expression;
-            var lambda = invocationExpression.Expression as LambdaExpression;
-            if (lambda != null)
-            {
-                var localBuilderContext = builderContext.NewQuote();
-                //for (int parameterIndex = 0; parameterIndex < lambda.Parameters.Count; parameterIndex++)
-                //{
-                //    var parameter = lambda.Parameters[parameterIndex];
-                //    localBuilderContext.Parameters[parameter.Name] = Analyze(invocationExpression.Arguments[parameterIndex], builderContext);
-                //}
-                //return Analyze(lambda, localBuilderContext);
-                return Analyze(lambda, invocationExpression.Arguments, localBuilderContext);
-            }
-            // TODO: see what we must do here
-            return expression;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+using DbLinq.Data.Linq.Implementation;
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+using DbLinq.Data.Linq.Sugar.Implementation;
+using DbLinq.Factory;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    partial class ExpressionDispatcher
+    {
+        public Expression Analyze(ExpressionChain expressions, Expression parameter, BuilderContext builderContext)
+        {
+            Expression tableExpression = parameter;
+
+            Expression last = expressions.Last();
+            IExpressionLanguageParser languageParser = ObjectFactory.Get<IExpressionLanguageParser>();
+            foreach (Expression e in expressions)
+            {
+                if (e == last)
+                    builderContext.IsExternalInExpressionChain = true;
+
+                // write full debug
+#if DEBUG && !MONO_STRICT
+                var log = builderContext.QueryContext.DataContext.Log;
+                if (log != null)
+                    log.WriteExpression(e);
+#endif
+
+                // Convert linq Expressions to QueryOperationExpressions and QueryConstantExpressions 
+                // Query expressions language identification
+                var currentExpression = languageParser.Parse(e, builderContext);
+                // Query expressions query identification 
+                currentExpression = this.Analyze(currentExpression, tableExpression, builderContext);
+
+                if (!builderContext.IsExternalInExpressionChain)
+                {
+                    EntitySetExpression setExpression = currentExpression as EntitySetExpression;
+                    if (setExpression != null)
+                        currentExpression = setExpression.TableExpression;
+                }
+                tableExpression = currentExpression;
+            }
+
+            return tableExpression;
+        }
+
+        /// <summary>
+        /// Entry point for Analyzis
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="parameter"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression Analyze(Expression expression, Expression parameter, BuilderContext builderContext)
+        {
+            return Analyze(expression, new[] { parameter }, builderContext);
+        }
+
+        protected virtual Expression Analyze(Expression expression, BuilderContext builderContext)
+        {
+            return Analyze(expression, new Expression[0], builderContext);
+        }
+
+        protected virtual Expression Analyze(Expression expression, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            switch (expression.NodeType)
+            {
+                case ExpressionType.Call:
+                    return AnalyzeCall((MethodCallExpression)expression, parameters, builderContext);
+                case ExpressionType.Lambda:
+                    return AnalyzeLambda(expression, parameters, builderContext);
+                case ExpressionType.Parameter:
+                    return AnalyzeParameter(expression, builderContext);
+                case ExpressionType.Quote:
+                    return AnalyzeQuote(expression, parameters, builderContext);
+                case ExpressionType.MemberAccess:
+                    return AnalyzeMember(expression, builderContext);
+                #region case ExpressionType.<Common operators>:
+                case ExpressionType.Add:
+                case ExpressionType.AddChecked:
+                case ExpressionType.Divide:
+                case ExpressionType.Modulo:
+                case ExpressionType.Multiply:
+                case ExpressionType.MultiplyChecked:
+                case ExpressionType.Power:
+                case ExpressionType.Subtract:
+                case ExpressionType.SubtractChecked:
+                case ExpressionType.And:
+                case ExpressionType.Or:
+                case ExpressionType.ExclusiveOr:
+                case ExpressionType.LeftShift:
+                case ExpressionType.RightShift:
+                case ExpressionType.AndAlso:
+                case ExpressionType.OrElse:
+                case ExpressionType.Equal:
+                case ExpressionType.NotEqual:
+                case ExpressionType.GreaterThanOrEqual:
+                case ExpressionType.GreaterThan:
+                case ExpressionType.LessThan:
+                case ExpressionType.LessThanOrEqual:
+                case ExpressionType.Coalesce:
+                //case ExpressionType.ArrayIndex
+                //case ExpressionType.ArrayLength
+                case ExpressionType.Convert:
+                case ExpressionType.ConvertChecked:
+                case ExpressionType.Negate:
+                case ExpressionType.NegateChecked:
+                case ExpressionType.Not:
+                //case ExpressionType.TypeAs
+                case ExpressionType.UnaryPlus:
+                case ExpressionType.MemberInit:
+                #endregion
+                    return AnalyzeOperator(expression, builderContext);
+                case ExpressionType.New:
+                    return AnalyzeNewOperator(expression, builderContext);
+                case ExpressionType.Constant:
+                    return AnalyzeConstant(expression, builderContext);
+                case ExpressionType.Invoke:
+                    return AnalyzeInvoke(expression, parameters, builderContext);
+            }
+            return expression;
+        }
+
+        /// <summary>
+        /// Analyzes method call, uses specified parameters
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeCall(MethodCallExpression expression, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var operands = expression.GetOperands().ToList();
+            var operarandsToSkip = expression.Method.IsStatic ? 1 : 0;
+            var originalParameters = operands.Skip(parameters.Count + operarandsToSkip);
+            var newParameters = parameters.Union(originalParameters).ToList();
+
+            return AnalyzeQueryableCall(expression.Method, newParameters, builderContext) ??
+                AnalyzeStringCall(expression.Method, newParameters, builderContext) ??
+                AnalyzeMathCall(expression.Method, newParameters, builderContext) ??
+                AnalyzeUnknownCall(expression, newParameters, builderContext);
+        }
+
+        private Expression AnalyzeQueryableCall(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (!(method.DeclaringType == typeof(Queryable) || method.DeclaringType == typeof(Enumerable)))
+                return null;
+            var popCallStack = PushCallStack(method, builderContext);
+            // all methods to handle are listed here:
+            // ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fxref_system.core/html/2a54ce9d-76f2-81e2-95bb-59740c85386b.htm
+            string methodName = method.Name;
+            switch (methodName)
+            {
+                case "All":
+                    return popCallStack(AnalyzeAll(parameters, builderContext));
+                case "Any":
+                    return popCallStack(AnalyzeAny(parameters, builderContext));
+                case "Average":
+                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Average, parameters, builderContext));
+                case "Concat":
+                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.UnionAll, parameters, builderContext));
+                case "Contains":
+                    return popCallStack(AnalyzeContains(parameters, builderContext));
+                case "Count":
+                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Count, parameters, builderContext));
+                case "DefaultIfEmpty":
+                    return popCallStack(AnalyzeOuterJoin(parameters, builderContext));
+                case "Distinct":
+                    return popCallStack(AnalyzeDistinct(parameters, builderContext));
+                case "Except":
+                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.Exception, parameters, builderContext));
+                case "First":
+                case "FirstOrDefault":
+                    return popCallStack(AnalyzeScalar(methodName, 1, parameters, builderContext));
+                case "GroupBy":
+                    return popCallStack(AnalyzeGroupBy(parameters, builderContext));
+                case "GroupJoin":
+                    return popCallStack(AnalyzeGroupJoin(parameters, builderContext));
+                case "Intersect":
+                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.Intersection, parameters, builderContext));
+                case "Join":
+                    return popCallStack(AnalyzeJoin(parameters, builderContext));
+                case "Last":
+                    return popCallStack(AnalyzeScalar(methodName, null, parameters, builderContext));
+                case "Max":
+                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Max, parameters, builderContext));
+                case "Min":
+                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Min, parameters, builderContext));
+                case "OrderBy":
+                case "ThenBy":
+                    return popCallStack(AnalyzeOrderBy(parameters, false, builderContext));
+                case "OrderByDescending":
+                case "ThenByDescending":
+                    return popCallStack(AnalyzeOrderBy(parameters, true, builderContext));
+                case "Select":
+                    return popCallStack(AnalyzeSelect(parameters, builderContext));
+                case "SelectMany":
+                    return popCallStack(AnalyzeSelectMany(parameters, builderContext));
+                case "Single":
+                case "SingleOrDefault":
+                    return popCallStack(AnalyzeScalar(methodName, 2, parameters, builderContext));
+                case "Skip":
+                    return popCallStack(AnalyzeSkip(parameters, builderContext));
+                case "Sum":
+                    return popCallStack(AnalyzeProjectionQuery(SpecialExpressionType.Sum, parameters, builderContext));
+                case "Take":
+                    return popCallStack(AnalyzeTake(parameters, builderContext));
+                case "Union":
+                    return popCallStack(AnalyzeSelectOperation(SelectOperatorType.Union, parameters, builderContext));
+                case "Where":
+                    return popCallStack(AnalyzeWhere(parameters, builderContext));
+                default:
+                    if (method.DeclaringType == typeof(Queryable))
+                        throw Error.BadArgument("S0133: Implement QueryMethod Queryable.{0}.", methodName);
+                    return popCallStack(null);
+            }
+        }
+
+        Func<Expression, Expression> PushCallStack(MethodInfo method, BuilderContext builderContext)
+        {
+
+            builderContext.CallStack.Push(method);
+            Func<Expression, Expression> popCallStack = r =>
+            {
+                builderContext.CallStack.Pop();
+                return r;
+            };
+            return popCallStack;
+        }
+
+        private Expression AnalyzeStringCall(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (method.DeclaringType != typeof(string))
+                return null;
+            var popCallStack = PushCallStack(method, builderContext);
+            switch (method.Name)
+            {
+                case "Contains":
+                    return popCallStack(AnalyzeLike(parameters, builderContext));
+                case "EndsWith":
+                    return popCallStack(AnalyzeLikeEnd(parameters, builderContext));
+                case "IndexOf":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.IndexOf, parameters, builderContext));
+                case "Insert":
+                    return popCallStack(AnalyzeStringInsert(parameters, builderContext));
+                case "Remove":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Remove, parameters, builderContext));
+                case "Replace":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Replace, parameters, builderContext));
+                case "StartsWith":
+                    return popCallStack(AnalyzeLikeStart(parameters, builderContext));
+                case "Substring":
+                    return popCallStack(AnalyzeSubString(parameters, builderContext));
+                case "ToLower":
+                    return popCallStack(AnalyzeToLower(parameters, builderContext));
+                case "ToString":
+                    return popCallStack(AnalyzeToString(method, parameters, builderContext));
+                case "ToUpper":
+                    return popCallStack(AnalyzeToUpper(parameters, builderContext));
+                case "Trim":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Trim, parameters, builderContext));
+                case "TrimEnd":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.RTrim, parameters, builderContext));
+                case "TrimStart":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.LTrim, parameters, builderContext));
+                default:
+                    throw Error.BadArgument("S0133: Implement QueryMethod String.{0}.", method.Name);
+            }
+        }
+
+        private Expression AnalyzeMathCall(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (method.DeclaringType != typeof(System.Math))
+                return null;
+            var popCallStack = PushCallStack(method, builderContext);
+            switch (method.Name)
+            {
+                case "Abs":
+                case "Exp":
+                case "Floor":
+                case "Pow":
+                case "Round":
+                case "Sign":
+                case "Sqrt":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType((SpecialExpressionType)Enum.Parse(typeof(SpecialExpressionType), method.Name), parameters, builderContext));
+                case "Log":
+                    return popCallStack(AnalyzeLog(parameters, builderContext));
+                case "Log10":
+                    return popCallStack(AnalyzeGenericSpecialExpressionType(SpecialExpressionType.Log, parameters, builderContext));
+                default:
+                    throw Error.BadArgument("S0133: Implement QueryMethod Math.{0}.", method.Name);
+            }
+        }
+
+        private Expression AnalyzeUnknownCall(MethodCallExpression expression, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var method = expression.Method;
+            switch (method.Name)
+            {
+                case "Parse":
+                    if (method.IsStatic && parameters.Count == 1)
+                        return AnalyzeParse(method, parameters, builderContext);
+                    break;
+                case "ToString": // Can we sanity check this type?
+                    return AnalyzeToString(method, parameters, builderContext);
+            }
+
+            var args = new List<Expression>();
+            foreach (var arg in expression.Arguments)
+            {
+                Expression newArg = arg;
+                var pe = arg as ParameterExpression;
+                if (pe != null)
+                {
+                    if (!builderContext.Parameters.TryGetValue(pe.Name, out newArg))
+                        throw new NotSupportedException("Do not currently support expression: " + expression);
+                }
+                else
+                    newArg = Analyze(arg, builderContext);
+                args.Add(newArg);
+            }
+            return Expression.Call(expression.Object, expression.Method, args);
+        }
+
+        private Expression AnalyzeStringInsert(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var startIndexExpression = new StartIndexOffsetExpression(builderContext.QueryContext.DataContext.Vendor.SqlProvider.StringIndexStartsAtOne, parameters.ElementAt(1));
+            var stringToInsertExpression = parameters.ElementAt(2);
+            return AnalyzeGenericSpecialExpressionType(SpecialExpressionType.StringInsert, new Expression[] { parameters.First(), startIndexExpression, stringToInsertExpression }, builderContext);
+        }
+
+        protected virtual Expression AnalyzeLog(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (parameters.Count == 1)
+                return new SpecialExpression(SpecialExpressionType.Ln, parameters.Select(p => Analyze(p, builderContext)).ToList());
+            else if (parameters.Count == 2)
+                return new SpecialExpression(SpecialExpressionType.Log, parameters.Select(p => Analyze(p, builderContext)).ToList());
+            else
+                throw new NotSupportedException();
+        }
+
+        protected virtual Expression AnalyzeGenericSpecialExpressionType(SpecialExpressionType specialType, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return new SpecialExpression(specialType, parameters.Select(p => Analyze(p, builderContext)).ToList());
+        }
+
+        protected virtual Expression AnalyzeParse(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (method.IsStatic && parameters.Count == 1)
+            {
+                Expression parsed = null;
+                Expression toParse = Analyze(parameters.First(), builderContext);
+                InputParameterExpression inputParameterToParse = toParse as InputParameterExpression;
+                if (inputParameterToParse != null)
+                {
+                    ExpressionTier tier = ExpressionQualifier.GetTier(parameters[0]);
+                    if (tier == ExpressionTier.Clr)
+                    {
+                        parsed = RegisterParameter(System.Linq.Expressions.Expression.Call(method, inputParameterToParse.Expression), inputParameterToParse.Alias, builderContext);
+                        UnregisterParameter(inputParameterToParse, builderContext);
+                    }
+                }
+                if(parsed == null)
+                {
+                    parsed = Expression.Convert(toParse, method.ReturnType, method);
+                    ExpressionTier tier = ExpressionQualifier.GetTier(toParse);
+                    //pibgeus: I would like to call to the expression optimizer since the exception must be thrown if the expression cannot be executed
+                    //in Clr tier, if it can be executed in Clr tier it should continue
+                    // ie: from e in db.Employees where DateTime.Parse("1/1/1999").Year==1999 select e  <--- this should work
+                    // ie: from e in db.Employees where DateTime.Parse(e.BirthDate).Year==1999 select e  <--- a NotSupportedException must be throwed (this is the behaviour of linq2sql)
+
+                    //if (method.ReturnType == typeof(DateTime))
+                    //{
+                    //        expression = ExpressionOptimizer.Analyze(expression);
+                    //        //same behaviour that Linq2Sql
+                    //        throw new NotSupportedException("Method 'System.DateTime Parse(System.String)' has no supported translation to SQL");
+                    //}
+                }
+                return parsed;
+            }
+            else
+                throw new ArgumentException();
+
+        }
+
+        protected virtual Expression AnalyzeToString(MethodInfo method, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (parameters.Count != 1)
+                throw new ArgumentException();
+
+            Expression parameter = parameters.First();
+            Expression parameterToHandle;
+
+            if(parameter.Type.IsNullable())
+                parameter = Analyze(Expression.Convert(parameter, parameter.Type.GetNullableType()), builderContext);
+
+            parameterToHandle = Analyze(parameter, builderContext);
+
+            InputParameterExpression inputParameter = parameterToHandle as InputParameterExpression;
+            if (inputParameter != null)
+            {
+                parameterToHandle = RegisterParameter(System.Linq.Expressions.Expression.Call(inputParameter.Expression, method), inputParameter.Alias, builderContext);
+                UnregisterParameter(inputParameter, builderContext);
+
+                return parameterToHandle;
+            }
+            
+            if (!parameter.Type.IsPrimitive && parameterToHandle.Type != typeof(string))
+            {
+                //TODO: ExpressionDispacher.Analyze.AnalyzeToString is not complete
+                //This is the standar behaviour in linq2sql, nonetheless the behaviour isn't complete since when the expression
+                //can be executed in the clr, ie: (where new StrangeObject().ToString()) should work. The problem is that
+                //we don't have a reference to the optimizer here.
+                //Working samples in: /Tests/Test_Nunit/ReadTests_Conversions.cs
+                string message = "Method ToString can only be translated to SQL for primitive types.";
+                int? select = FirstIndexOf(builderContext.CallStack, "Select");
+                int? where  = FirstIndexOf(builderContext.CallStack, "Where");
+                if ((where ?? int.MaxValue) < (select ?? int.MaxValue))
+                    // Assume we're generating the .Where() clause, not .Select()
+                    throw new NotSupportedException(message);
+                // for .Select()
+                throw new InvalidOperationException(message);
+            }
+
+            return Expression.Convert(parameterToHandle, typeof(string), typeof(Convert).GetMethod("ToString", new[] { parameterToHandle.Type }));
+        }
+
+        static int? FirstIndexOf(Stack<MethodInfo> callStack, string methodName)
+        {
+            int? index = null;
+            callStack.Where((m, i) =>
+            {
+                if (m.Name == methodName)
+                {
+                    index = i;
+                    return true;
+                }
+                return false;
+            }).FirstOrDefault();
+            return index;
+        }
+
+        /// <summary>
+        /// Limits selection count
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeTake(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            AddLimit(Analyze(parameters[1], builderContext), builderContext);
+            return Analyze(parameters[0], builderContext);
+        }
+
+        protected virtual void AddLimit(Expression limit, BuilderContext builderContext)
+        {
+            var previousLimit = builderContext.CurrentSelect.Limit;
+            if (previousLimit != null)
+                builderContext.CurrentSelect.Limit = Expression.Condition(Expression.LessThan(previousLimit, limit),
+                                                                          previousLimit, limit);
+            else
+                builderContext.CurrentSelect.Limit = limit;
+        }
+
+        /// <summary>
+        /// Skip selection items
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeSkip(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            AddOffset(Analyze(parameters[1], builderContext), builderContext);
+            return Analyze(parameters[0], builderContext);
+        }
+
+        protected virtual void AddOffset(Expression offset, BuilderContext builderContext)
+        {
+            var previousOffset = builderContext.CurrentSelect.Offset;
+            if (previousOffset != null)
+                builderContext.CurrentSelect.Offset = Expression.Add(offset, previousOffset);
+            else
+                builderContext.CurrentSelect.Offset = offset;
+        }
+
+        /// <summary>
+        /// Registers a scalar method call for result
+        /// </summary>
+        /// <param name="methodName"></param>
+        /// <param name="limit"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeScalar(string methodName, int? limit, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            builderContext.CurrentSelect.ExecuteMethodName = methodName;
+            if (limit.HasValue)
+                AddLimit(Expression.Constant(limit.Value), builderContext);
+            var table = Analyze(parameters[0], builderContext);
+            var set = table as EntitySetExpression;
+            if (set != null)
+                table = set.TableExpression;
+            CheckWhere(table, parameters, 1, builderContext);
+            return table;
+        }
+
+        /// <summary>
+        /// Some methods, like Single(), Count(), etc. can get an extra parameter, specifying a restriction.
+        /// This method checks if the parameter is specified, and adds it to the WHERE clauses
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="parameters"></param>
+        /// <param name="extraParameterIndex"></param>
+        /// <param name="builderContext"></param>
+        private void CheckWhere(Expression table, IList<Expression> parameters, int extraParameterIndex, BuilderContext builderContext)
+        {
+            if (parameters.Count > extraParameterIndex) // a lambda can be specified here, this is a restriction
+                RegisterWhere(Analyze(parameters[extraParameterIndex], table, builderContext), builderContext);
+        }
+
+        /// <summary>
+        /// Returns a projection method call
+        /// </summary>
+        /// <param name="specialExpressionType"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeProjectionQuery(SpecialExpressionType specialExpressionType, IList<Expression> parameters,
+                                                            BuilderContext builderContext)
+        {
+
+            if (builderContext.IsExternalInExpressionChain)
+            {
+                var operand0 = Analyze(parameters[0], builderContext);
+                Expression projectionOperand;
+
+                if (    builderContext.CurrentSelect.NextSelectExpression != null 
+                    ||  builderContext.CurrentSelect.Operands.Count() > 0
+                    ||  builderContext.CurrentSelect.Group.Count > 0
+                   )
+                {
+                    //BuildSelect(builderContext.CurrentSelect, builderContext);
+                    operand0 = new SubSelectExpression(builderContext.CurrentSelect, operand0.Type, "source");
+                    builderContext.NewParentSelect();
+
+                    // In the new scope we should not have MaximumDatabaseLoad
+                    builderContext.QueryContext.MaximumDatabaseLoad = false;
+
+                    builderContext.CurrentSelect.Tables.Add(operand0 as TableExpression);
+                }
+
+                // basically, we have three options for projection methods:
+                // - projection on grouped table (1 operand, a GroupExpression)
+                // - projection on grouped column (2 operands, GroupExpression and ColumnExpression)
+                // - projection on table/column, with optional restriction
+                var groupOperand0 = operand0 as GroupExpression;
+                if (groupOperand0 != null)
+                {
+                    if (parameters.Count > 1)
+                    {
+                        projectionOperand = Analyze(parameters[1], groupOperand0.GroupedExpression,
+                                                    builderContext);
+                    }
+                    else
+                        projectionOperand = Analyze(groupOperand0.GroupedExpression, builderContext);
+                }
+                else
+                {
+                    projectionOperand = operand0;
+                    CheckWhere(projectionOperand, parameters, 1, builderContext);
+                }
+
+                if (projectionOperand is TableExpression)
+                    projectionOperand = RegisterTable((TableExpression)projectionOperand, builderContext);
+
+                if (groupOperand0 != null)
+                    projectionOperand = new GroupExpression(projectionOperand, groupOperand0.KeyExpression);
+
+                return new SpecialExpression(specialExpressionType, projectionOperand);
+            }
+            else
+            {
+                var projectionQueryBuilderContext = builderContext.NewSelect();
+
+                var tableExpression = Analyze(parameters[0], projectionQueryBuilderContext);
+
+                if (!(tableExpression is TableExpression) && !(tableExpression is EntitySetExpression))
+                    tableExpression = Analyze(tableExpression, projectionQueryBuilderContext);
+                EntitySetExpression setExpression = tableExpression as EntitySetExpression;
+                if (setExpression != null)
+                    tableExpression = setExpression.TableExpression;
+
+                // from here we build a custom clause:
+                // <anyClause> ==> "(select count(*) from <table> where <anyClause>)>0"
+                // TODO (later...): see if some vendors support native Any operator and avoid this substitution
+                if (parameters.Count > 1)
+                {
+                    setExpression = tableExpression as EntitySetExpression;
+                    if (setExpression != null)
+                        tableExpression = setExpression.TableExpression;
+                    var anyClause = Analyze(parameters[1], tableExpression, projectionQueryBuilderContext);
+                    RegisterWhere(anyClause, projectionQueryBuilderContext);
+                }
+
+                projectionQueryBuilderContext.CurrentSelect = projectionQueryBuilderContext.CurrentSelect.ChangeOperands(new SpecialExpression(specialExpressionType, tableExpression));
+
+                // we now switch back to current context, and compare the result with 0
+                return projectionQueryBuilderContext.CurrentSelect;
+            }
+        }
+
+        /// <summary>
+        /// Entry point for a Select()
+        /// static Select(this Expression table, λ(table))
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeSelect(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            // just call back the underlying lambda (or quote, whatever)
+            Expression ex = Analyze(parameters[1], parameters[0], builderContext);
+
+            // http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/1ce25da3-44c6-407d-8395-4c146930004b
+            if (ex.NodeType == ExpressionType.MemberInit &&
+                    builderContext.QueryContext.DataContext.Mapping.GetMetaType(ex.Type) != null)
+                throw new NotSupportedException(
+                    string.Format("Explicit construction of entity type '{0}' in query is not allowed.",
+                        ex.Type.FullName));
+            TableExpression tableExpression = parameters[0] as TableExpression;
+            if (tableExpression != null && builderContext.CurrentSelect.Tables.Count == 0)
+                RegisterTable(tableExpression, builderContext);
+            return ex;
+        }
+
+        /// <summary>
+        /// Entry point for a Where()
+        /// static Where(this Expression table, λ(table))
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeWhere(IList<Expression> parameters, BuilderContext builderContext)
+        {
+			var tablePiece = parameters[0];
+            RegisterWhere(Analyze(parameters[1], tablePiece, builderContext), builderContext);
+            return tablePiece;
+        }
+
+        /// <summary>
+        /// Handling a lambda consists in:
+        /// - filling its input parameters with what's on the stack
+        /// - using the body (parameters are registered in the context)
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeLambda(Expression expression, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var lambdaExpression = expression as LambdaExpression;
+            if (lambdaExpression == null)
+                throw Error.BadArgument("S0227: Unknown type for AnalyzeLambda() ({0})", expression.GetType());
+            // for a lambda, first parameter is body, others are input parameters
+            // so we create a parameters stack
+            for (int parameterIndex = 0; parameterIndex < lambdaExpression.Parameters.Count; parameterIndex++)
+            {
+                var parameterExpression = lambdaExpression.Parameters[parameterIndex];
+                builderContext.Parameters[parameterExpression.Name] = Analyze(parameters[parameterIndex], builderContext);
+            }
+            // we keep only the body, the header is now useless
+            // and once the parameters have been substituted, we don't pass one anymore
+            return Analyze(lambdaExpression.Body, builderContext);
+        }
+
+        /// <summary>
+        /// When a parameter is used, we replace it with its original value
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeParameter(Expression expression, BuilderContext builderContext)
+        {
+            Expression unaliasedExpression;
+            var parameterName = GetParameterName(expression);
+            builderContext.Parameters.TryGetValue(parameterName, out unaliasedExpression);
+            if (unaliasedExpression == null)
+                throw Error.BadArgument("S0257: can not find parameter '{0}'", parameterName);
+
+            #region set alias helper
+
+            // for table...
+            var unaliasedTableExpression = unaliasedExpression as TableExpression;
+            if (unaliasedTableExpression != null && unaliasedTableExpression.Alias == null)
+                unaliasedTableExpression.Alias = parameterName;
+            // .. or column
+            var unaliasedColumnExpression = unaliasedExpression as ColumnExpression;
+            if (unaliasedColumnExpression != null && unaliasedColumnExpression.Alias == null)
+                unaliasedColumnExpression.Alias = parameterName;
+
+            #endregion
+
+            //var groupByExpression = unaliasedExpression as GroupByExpression;
+            //if (groupByExpression != null)
+            //    unaliasedExpression = groupByExpression.ColumnExpression.Table;
+
+            return unaliasedExpression;
+        }
+
+        /// <summary>
+        /// Returns if the given member can be considered as an EntitySet<>
+        /// </summary>
+        /// <param name="memberType"></param>
+        /// <param name="entityType"></param>
+        /// <returns></returns>
+        protected virtual bool IsEntitySet(Type memberType, out Type entityType)
+        {
+            entityType = memberType;
+            // one check, a generic EntityRef<> or inherited
+            if (memberType.IsGenericType && typeof(EntitySet<>).IsAssignableFrom(memberType.GetGenericTypeDefinition()))
+            {
+                entityType = memberType.GetGenericArguments()[0];
+                return true;
+            }
+#if !MONO_STRICT
+            // this is for compatibility with previously generated .cs files
+            // TODO: remove in 2009
+            if (memberType.IsGenericType && typeof(System.Data.Linq.EntitySet<>).IsAssignableFrom(memberType.GetGenericTypeDefinition()))
+            {
+                entityType = memberType.GetGenericArguments()[0];
+                return true;
+            }
+#endif
+            return false;
+        }
+
+        /// <summary>
+        /// Analyzes a member access.
+        /// This analyzis is down to top: the highest identifier is at bottom
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeMember(Expression expression, BuilderContext builderContext)
+        {
+            var memberExpression = (MemberExpression)expression;
+
+            Expression objectExpression = null;
+            //maybe is a static member access like DateTime.Now
+            bool isStaticMemberAccess = memberExpression.Member.GetIsStaticMember();
+
+            var memberInfo = memberExpression.Member;
+            if (!isStaticMemberAccess && memberInfo.Name == "Count")
+                return AnalyzeProjectionQuery(SpecialExpressionType.Count, new[] { memberExpression.Expression }, builderContext);
+
+            if (!isStaticMemberAccess)
+                // first parameter is object, second is member
+                objectExpression = Analyze(memberExpression.Expression, builderContext);
+
+            // then see what we can do, depending on object type
+            // - MetaTable --> then the result is a table
+            // - Table --> the result may be a column or a join
+            // - Object --> external parameter or table (can this happen here? probably not... to be checked)
+
+            EntitySetExpression setExpression = objectExpression as EntitySetExpression;
+            if (setExpression != null)
+            {
+                objectExpression = setExpression.TableExpression;
+            }
+
+            if (objectExpression is MetaTableExpression)
+            {
+                var metaTableExpression = (MetaTableExpression)objectExpression;
+                var tableExpression = metaTableExpression.GetTableExpression(memberInfo);
+                if (tableExpression == null)
+                    throw Error.BadArgument("S0270: MemberInfo '{0}' not found in MetaTable", memberInfo.Name);
+                return tableExpression;
+            }
+
+            if (objectExpression is GroupExpression)
+            {
+                if (memberInfo.Name == "Key")
+                    return ((GroupExpression)objectExpression).KeyExpression;
+            }
+
+            // if object is a table, then we need a column, or an association
+            if (objectExpression is TableExpression)
+            {
+                var tableExpression = (TableExpression)objectExpression;
+
+
+                // before finding an association, we check for an EntitySet<>
+                // this will be used in RegisterAssociation
+                Type entityType;
+                if (IsEntitySet(memberInfo.GetMemberType(), out entityType))
+                    return new EntitySetExpression(tableExpression, memberInfo, memberInfo.GetMemberType(), builderContext, this);
+
+                // first of all, then, try to find the association
+                var queryAssociationExpression = RegisterAssociation(tableExpression, memberInfo, entityType,
+                                                                     builderContext);
+                if (queryAssociationExpression != null)
+                {
+                    return queryAssociationExpression;
+                }
+                // then, try the column
+                ColumnExpression queryColumnExpression = RegisterColumn(tableExpression, memberInfo, builderContext);
+                if (queryColumnExpression != null)
+                {
+                    Type storageType = queryColumnExpression.StorageInfo != null ? queryColumnExpression.StorageInfo.GetMemberType() : null;
+                    if (storageType != null && queryColumnExpression.Type != storageType)
+                    {
+                        return Expression.Convert(queryColumnExpression, queryColumnExpression.Type, typeof(Convert).GetMethod("To" + queryColumnExpression.Type.Name, new Type[] { queryColumnExpression.Type }));
+                    }
+                    else
+                    {
+                        return queryColumnExpression;
+                    }
+                }
+                // then, cry
+                throw Error.BadArgument("S0293: Column must be mapped. Non-mapped columns are not handled by now.");
+            }
+
+            // if object is still an object (== a constant), then we have an external parameter
+            if (objectExpression is ConstantExpression)
+            {
+                // the memberInfo.Name is provided here only to ease the SQL reading
+                var parameterExpression = RegisterParameter(expression, memberInfo.Name, builderContext);
+                if (parameterExpression != null)
+                    return parameterExpression;
+                throw Error.BadArgument("S0302: Can not created parameter from expression '{0}'", expression);
+            }
+
+            // we have here a special cases for nullables
+            if (!isStaticMemberAccess && objectExpression.Type != null && objectExpression.Type.IsNullable())
+            {
+                // Value means we convert the nullable to a value --> use Convert instead (works both on CLR and SQL, too)
+                if (memberInfo.Name == "Value")
+                    return Expression.Convert(objectExpression, memberInfo.GetMemberType());
+                // HasValue means not null (works both on CLR and SQL, too)
+                if (memberInfo.Name == "HasValue")
+                    return new SpecialExpression(SpecialExpressionType.IsNotNull, objectExpression);
+            }
+
+
+            if (memberInfo.DeclaringType == typeof(DateTime))
+                return AnalyzeDateTimeMemberAccess(objectExpression, memberInfo, isStaticMemberAccess);
+
+            // TODO: make this expresion safe (objectExpression can be null here)
+            if (objectExpression.Type == typeof(TimeSpan))
+                return AnalyzeTimeSpanMemberAccess(objectExpression, memberInfo);
+
+
+            if (objectExpression is InputParameterExpression)
+            {
+                return AnalyzeExternalParameterMember((InputParameterExpression)objectExpression, memberInfo, builderContext);
+            }
+
+            if (objectExpression is MemberInitExpression)
+            {
+                var foundExpression = AnalyzeMemberInit((MemberInitExpression)objectExpression, memberInfo, builderContext);
+                if (foundExpression != null)
+                    return foundExpression;
+            }
+
+            return AnalyzeCommonMember(objectExpression, memberInfo, builderContext);
+        }
+
+        protected Expression AnalyzeTimeSpanMemberAccess(Expression objectExpression, MemberInfo memberInfo)
+        {
+            //A timespan expression can be only generated in a c# query as a DateTime difference, as a function call return or as a paramter
+            //this case is for the DateTime difference operation
+
+            if (!(objectExpression is BinaryExpression))
+                throw new NotSupportedException();
+
+            var operands = objectExpression.GetOperands();
+
+            bool absoluteSpam = memberInfo.Name.StartsWith("Total");
+            string operationKey = absoluteSpam ? memberInfo.Name.Substring(5) : memberInfo.Name;
+
+            Expression currentExpression;
+            switch (operationKey)
+            {
+                case "Milliseconds":
+                    currentExpression = Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double));
+                    break;
+                case "Seconds":
+                    currentExpression = Expression.Divide(
+                        Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
+                        Expression.Constant(1000.0));
+                    break;
+                case "Minutes":
+                    currentExpression = Expression.Divide(
+                            Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
+                            Expression.Constant(60000.0));
+                    break;
+                case "Hours":
+                    currentExpression = Expression.Divide(
+                            Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
+                            Expression.Constant(3600000.0));
+                    break;
+                case "Days":
+                    currentExpression = Expression.Divide(
+                            Expression.Convert(new SpecialExpression(SpecialExpressionType.DateDiffInMilliseconds, operands.First(), operands.ElementAt(1)), typeof(double)),
+                            Expression.Constant(86400000.0));
+                    break;
+                default:
+                    throw new NotSupportedException(string.Format("The operation {0} over the TimeSpan isn't currently supported", memberInfo.Name));
+            }
+
+            if (!absoluteSpam)
+            {
+                switch (memberInfo.Name)
+                {
+                    case "Milliseconds":
+                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(currentExpression, typeof(long)), Expression.Constant(1000L)), typeof(int));
+                        break;
+                    case "Seconds":
+                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(currentExpression, typeof(long)),
+                                                              Expression.Constant(60L)), typeof(int));
+                        break;
+                    case "Minutes":
+                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(currentExpression, typeof(long)),
+                                                                Expression.Constant(60L)), typeof(int));
+                        break;
+                    case "Hours":
+                        currentExpression = Expression.Convert(Expression.Modulo(Expression.Convert(
+                                                                                        currentExpression, typeof(long)),
+                                                                Expression.Constant(24L)), typeof(int));
+                        break;
+                    case "Days":
+                        currentExpression = Expression.Convert(currentExpression, typeof(int));
+                        break;
+                }
+
+            }
+            return currentExpression;
+        }
+
+        protected Expression AnalyzeDateTimeMemberAccess(Expression objectExpression, MemberInfo memberInfo, bool isStaticMemberAccess)
+        {
+            if (isStaticMemberAccess)
+            {
+                if (memberInfo.Name == "Now")
+                    return new SpecialExpression(SpecialExpressionType.Now);
+                else
+                    throw new NotSupportedException(string.Format("DateTime Member access {0} not supported", memberInfo.Name));
+            }
+            else
+            {
+                switch (memberInfo.Name)
+                {
+                    case "Year":
+                        return new SpecialExpression(SpecialExpressionType.Year, objectExpression);
+                    case "Month":
+                        return new SpecialExpression(SpecialExpressionType.Month, objectExpression);
+                    case "Day":
+                        return new SpecialExpression(SpecialExpressionType.Day, objectExpression);
+                    case "Hour":
+                        return new SpecialExpression(SpecialExpressionType.Hour, objectExpression);
+                    case "Minute":
+                        return new SpecialExpression(SpecialExpressionType.Minute, objectExpression);
+                    case "Second":
+                        return new SpecialExpression(SpecialExpressionType.Second, objectExpression);
+                    case "Millisecond":
+                        return new SpecialExpression(SpecialExpressionType.Millisecond, objectExpression);
+                    case "Date":
+                        return new SpecialExpression(SpecialExpressionType.Date, objectExpression);
+                    default:
+                        throw new NotSupportedException(string.Format("DateTime Member access {0} not supported", memberInfo.Name));
+                }
+            }
+        }
+
+        /// <summary>
+        /// This method analyzes the case of a new followed by a member access
+        /// for example new "A(M = value).M", where the Expression can be reduced to "value"
+        /// Caution: it may return null if no result is found
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="memberInfo"></param>
+        /// <param name="builderContext"></param>
+        /// <returns>A member initializer or null</returns>
+        protected virtual Expression AnalyzeMemberInit(MemberInitExpression expression, MemberInfo memberInfo,
+                                                       BuilderContext builderContext)
+        {
+            // TODO: a method for NewExpression that we will use directly from AnalyzeMember and indirectly from here
+            foreach (var binding in expression.Bindings)
+            {
+                var memberAssignment = binding as MemberAssignment;
+                if (memberAssignment != null)
+                {
+                    if (memberAssignment.Member == memberInfo)
+                        return memberAssignment.Expression;
+                }
+            }
+            return null;
+        }
+
+        protected virtual Expression AnalyzeExternalParameterMember(InputParameterExpression expression, MemberInfo memberInfo, BuilderContext builderContext)
+        {
+            UnregisterParameter(expression, builderContext);
+            return RegisterParameter(Expression.MakeMemberAccess(expression.Expression, memberInfo), memberInfo.Name, builderContext);
+        }
+
+        protected virtual Expression AnalyzeCommonMember(Expression objectExpression, MemberInfo memberInfo, BuilderContext builderContext)
+        {
+            if (typeof(string).IsAssignableFrom(objectExpression.Type))
+            {
+                switch (memberInfo.Name)
+                {
+                    case "Length":
+                        return new SpecialExpression(SpecialExpressionType.StringLength, objectExpression);
+                }
+            }
+            //throw Error.BadArgument("S0324: Don't know how to handle Piece");
+            return Expression.MakeMemberAccess(objectExpression, memberInfo);
+        }
+
+        /// <summary>
+        /// A Quote creates a new local context, outside which created parameters disappear
+        /// This is why we clone the BuilderContext
+        /// </summary>
+        /// <param name="piece"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeQuote(Expression piece, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var builderContextClone = builderContext.NewQuote();
+            var firstExpression = piece.GetOperands().First();
+            return Analyze(firstExpression, parameters, builderContextClone);
+        }
+
+        /// <summary>
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeOperatorSubstract(Expression expression, BuilderContext builderContext)
+        {
+            return AnalyzeOperator(expression, builderContext);
+        }
+
+        /// <summary>
+        /// Operator analysis consists in anlyzing all operands
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeOperator(Expression expression, BuilderContext builderContext)
+        {
+            var u = expression as UnaryExpression;
+            string parameterName;
+            if (expression.NodeType == ExpressionType.Convert && 
+                    u.Method == null &&
+                    (parameterName = GetParameterName(u.Operand)) != null)
+            {
+                Expression unaliasedExpression;
+                builderContext.Parameters.TryGetValue(parameterName, out unaliasedExpression);
+                var unaliasedTableExpression = unaliasedExpression as TableExpression;
+                if (unaliasedExpression != null && unaliasedTableExpression != null)
+                    return unaliasedTableExpression;
+            }
+            var operands = expression.GetOperands().ToList();
+            for (int operandIndex = 0; operandIndex < operands.Count; operandIndex++)
+            {
+                var operand = operands[operandIndex];
+                operands[operandIndex] = Analyze(operand, builderContext);
+            }
+
+            return expression.ChangeOperands(operands);
+        }
+
+        protected virtual Expression AnalyzeNewOperator(Expression expression, BuilderContext builderContext)
+        {
+            if (builderContext.ExpectMetaTableDefinition)
+            {
+                // first, check if we have a MetaTable definition
+                Type metaType;
+                var typeInitializers = GetTypeInitializers<Expression>((NewExpression)expression, true, out metaType);
+                var aliases = new Dictionary<MemberInfo, MutableExpression>();
+                foreach (var memberInfo in typeInitializers.Keys)
+                {
+                    var e = Analyze(typeInitializers[memberInfo], builderContext);
+                    var tableExpression = e as TableExpression;
+                    var ese = e as EntitySetExpression;
+                    if (ese != null)
+                        tableExpression = ese.TableExpression;
+                    if (tableExpression != null)
+                    {
+                        aliases[memberInfo] = tableExpression;
+                    }
+                    else
+                    {
+                        aliases[memberInfo] = Analyze(typeInitializers[memberInfo], builderContext) as MetaTableExpression;
+                    }
+                }
+                if (IsMetaTableDefinition(aliases))
+                    return RegisterMetaTable(metaType, aliases, builderContext);
+            }
+            return AnalyzeOperator(expression, builderContext);
+        }
+
+        protected virtual bool IsMetaTableDefinition(IDictionary<MemberInfo, MutableExpression> aliases)
+        {
+            if (aliases.Count != 2)
+                return false;
+            foreach (var tableExpression in aliases.Values)
+            {
+                if (tableExpression == null)
+                    return false;
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// SelectMany() joins tables
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeSelectMany(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (parameters.Count == 3)
+            {
+                // ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/fxref_system.core/html/3371348f-7811-b0bc-8c0a-2a595e08e086.htm
+                var tableExpression = parameters[0];
+                var projectionExpression = Analyze(parameters[1], new[] { tableExpression }, builderContext);
+                //var manyPiece = Analyze(parameters[2], new[] { tableExpression, projectionExpression }, builderContext);
+                // from here, our manyPiece is a MetaTable definition
+                //var newExpression = manyPiece as NewExpression;
+                //if (newExpression == null)
+                //    throw Error.BadArgument("S0377: Expected a NewExpression as SelectMany() return value");
+                //Type metaTableType;
+                //var associations = GetTypeInitializers<TableExpression>(newExpression, true, out metaTableType);
+                //return RegisterMetaTable(metaTableType, associations, builderContext);
+                var metaTableDefinitionBuilderContext = builderContext.Clone();
+                metaTableDefinitionBuilderContext.ExpectMetaTableDefinition = true;
+                var expression = Analyze(parameters[2], new[] { tableExpression, projectionExpression },
+                                         metaTableDefinitionBuilderContext);
+                return expression;
+            }
+            throw Error.BadArgument("S0358: Don't know how to handle this SelectMany() overload ({0} parameters)", parameters.Count);
+        }
+
+        protected virtual IDictionary<MemberInfo, E> GetTypeInitializers<E>(NewExpression newExpression,
+                                                                            bool checkCast, out Type metaType)
+            where E : Expression
+        {
+            var associations = new Dictionary<MemberInfo, E>();
+            metaType = null;
+            for (int ctorParameterIndex = 0; ctorParameterIndex < newExpression.Arguments.Count; ctorParameterIndex++)
+            {
+                var aliasedExpression = newExpression.Arguments[ctorParameterIndex] as E;
+                if (aliasedExpression == null && checkCast)
+                    throw Error.BadArgument("S0541: Expected an specific Expression type for GetTypeInitializers()");
+                var memberInfo = newExpression.Members[ctorParameterIndex];
+                metaType = memberInfo.ReflectedType;
+                // the property info is the reflecting property for the memberInfo, if memberInfo is a get_*
+                // otherwise we keep the memberInfo as is, since it is a field
+                var propertyInfo = memberInfo.GetExposingProperty() ?? memberInfo;
+                associations[propertyInfo] = aliasedExpression;
+            }
+            if (metaType == null && checkCast)
+                throw Error.BadArgument("S0550: Empty NewExpression found"); // this should never happen, otherwise we may simply ignore it or take the type from elsewhere
+            return associations;
+        }
+
+        //protected virtual IDictionary<MemberInfo, E> GetTypeInitializers<E>(NewExpression newExpression)
+        //    where E : Expression
+        //{
+        //    Type metaType;
+        //    return GetTypeInitializers<E>(newExpression, out metaType);
+        //}
+
+        /// <summary>
+        /// Analyzes a Join statement (explicit join)
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeJoin(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return AnalyzeJoin(parameters, TableJoinType.Inner, builderContext);
+        }
+
+        /// <summary>
+        /// Analyzes a Join statement (explicit join)
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeGroupJoin(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return AnalyzeJoin(parameters, TableJoinType.Inner, builderContext);
+        }
+
+        protected virtual Expression AnalyzeOuterJoin(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var expression = Analyze(parameters[0], builderContext);
+            var tableExpression = expression as TableExpression;
+            if (tableExpression != null)
+            {
+                tableExpression.SetOuterJoin();
+            }
+            return expression;
+        }
+
+        private Expression AnalyzeJoin(IList<Expression> parameters, TableJoinType joinType, BuilderContext builderContext)
+        {
+            if (parameters.Count == 5)
+            {
+                var leftExpression = Analyze(parameters[0], builderContext);
+                var rightTable = Analyze(parameters[1], builderContext) as TableExpression;
+                if (rightTable == null)
+                    throw Error.BadArgument("S0536: Expected a TableExpression for Join");
+                var leftJoin = Analyze(parameters[2], leftExpression, builderContext);
+                var rightJoin = Analyze(parameters[3], rightTable, builderContext);
+                // from here, we have two options to join:
+                // 1. left and right are tables, we can use generic expressions (most common)
+                // 2. left is something else (a meta table)
+                var leftTable = leftExpression as TableExpression;
+                if (leftTable == null)
+                {
+                    var leftColumn = leftJoin as ColumnExpression;
+                    if (leftColumn == null)
+                        throw Error.BadArgument("S0701: No way to find left table for Join");
+                    leftTable = leftColumn.Table;
+                }
+                rightTable.Join(joinType, leftTable, Expression.Equal(leftJoin, rightJoin),
+                                string.Format("join{0}", builderContext.EnumerateAllTables().Count()));
+                // last part is lambda, with two tables as parameters
+                var metaTableDefinitionBuilderContext = builderContext.Clone();
+                metaTableDefinitionBuilderContext.ExpectMetaTableDefinition = true;
+                var expression = Analyze(parameters[4], new[] { leftExpression, rightTable }, metaTableDefinitionBuilderContext);
+                return expression;
+            }
+            throw Error.BadArgument("S0530: Don't know how to handle GroupJoin() with {0} parameters", parameters.Count);
+        }
+
+        /// <summary>
+        /// "Distinct" means select X group by X
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeDistinct(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var expression = Analyze(parameters[0], builderContext);
+            // we select and group by the same criterion
+            var group = new GroupExpression(expression, expression);
+            if (builderContext.CurrentSelect.NextSelectExpression != null)
+            {
+                expression = new SubSelectExpression(builderContext.CurrentSelect, expression.Type, "source");
+                builderContext.NewParentSelect();
+
+                // In the new scope we should not have MaximumDatabaseLoad
+                builderContext.QueryContext.MaximumDatabaseLoad = false;
+
+                builderContext.CurrentSelect.Tables.Add(expression as TableExpression);
+            }
+            builderContext.CurrentSelect.Group.Add(group);
+            // "Distinct" method is equivalent to a GroupBy
+            // but for some obscure reasons, Linq expects a IQueryable instead of an IGrouping
+            // so we return the column, not the group
+            return expression;
+        }
+
+        /// <summary>
+        /// Creates a group by clause
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeGroupBy(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var table = Analyze(parameters[0], builderContext);
+            var keyExpression = Analyze(parameters[1], table, builderContext);
+
+            Expression result;
+            if (parameters.Count == 2)
+                result = table; // we return the whole table
+            else if (parameters.Count == 3)
+                result = Analyze(parameters[2], table, builderContext); // 3 parameters for a projection expression
+            else
+                throw Error.BadArgument("S0629: Don't know how to handle Expression to group by with {0} parameters", parameters.Count);
+
+            var group = new GroupExpression(result, keyExpression);
+            builderContext.CurrentSelect.Group.Add(group);
+            return group;
+        }
+
+        /// <summary>
+        /// All() returns true if the given condition satisfies all provided elements
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeAll(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var allBuilderContext = builderContext.NewSelect();
+            var tableExpression = Analyze(parameters[0], allBuilderContext);
+            var allClause = Analyze(parameters[1], tableExpression, allBuilderContext);
+            // from here we build a custom clause:
+            // <allClause> ==> "(select count(*) from <table> where not <allClause>)==0"
+            // TODO (later...): see if some vendors support native All operator and avoid this substitution
+            var whereExpression = Expression.Not(allClause);
+            RegisterWhere(whereExpression, allBuilderContext);
+            allBuilderContext.CurrentSelect = allBuilderContext.CurrentSelect.ChangeOperands(new SpecialExpression(SpecialExpressionType.Count, tableExpression));
+            // TODO: see if we need to register the tablePiece here (we probably don't)
+
+            // we now switch back to current context, and compare the result with 0
+            var allExpression = Expression.Equal(allBuilderContext.CurrentSelect, Expression.Constant(0));
+            return allExpression;
+        }
+
+        /// <summary>
+        /// Any() returns true if the given condition satisfies at least one of provided elements
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeAny(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (builderContext.IsExternalInExpressionChain)
+            {
+                var tableExpression = Analyze(parameters[0], builderContext);
+                Expression projectionOperand;
+
+                if (builderContext.CurrentSelect.NextSelectExpression != null)
+                {
+                    TableExpression currentTableExpression = tableExpression as TableExpression;
+                    tableExpression = new SubSelectExpression(builderContext.CurrentSelect, currentTableExpression.Type, "source");
+                    builderContext.NewParentSelect();
+
+                    // In the new scope we should not have MaximumDatabaseLoad
+                    builderContext.QueryContext.MaximumDatabaseLoad = false;
+
+                    builderContext.CurrentSelect.Tables.Add(tableExpression as TableExpression);
+                }
+
+                // basically, we have three options for projection methods:
+                // - projection on grouped table (1 operand, a GroupExpression)
+                // - projection on grouped column (2 operands, GroupExpression and ColumnExpression)
+                // - projection on table/column, with optional restriction
+                var groupOperand0 = tableExpression as GroupExpression;
+                if (groupOperand0 != null)
+                {
+                    if (parameters.Count > 1)
+                    {
+                        projectionOperand = Analyze(parameters[1], groupOperand0.GroupedExpression,
+                                                    builderContext);
+                    }
+                    else
+                        projectionOperand = Analyze(groupOperand0.GroupedExpression, builderContext);
+                }
+                else
+                {
+                    projectionOperand = tableExpression;
+                    CheckWhere(projectionOperand, parameters, 1, builderContext);
+                }
+
+                if (projectionOperand is TableExpression)
+                    projectionOperand = RegisterTable((TableExpression)projectionOperand, builderContext);
+
+                if (groupOperand0 != null)
+                    projectionOperand = new GroupExpression(projectionOperand, groupOperand0.KeyExpression);
+
+                return Expression.GreaterThan(new SpecialExpression(SpecialExpressionType.Count, projectionOperand), Expression.Constant(0));
+            }
+            else
+            {
+                var anyBuilderContext = builderContext.NewSelect();
+                var tableExpression = Analyze(parameters[0], anyBuilderContext);
+
+                if (!(tableExpression is TableExpression) && !(tableExpression is EntitySetExpression))
+                    tableExpression = Analyze(tableExpression, anyBuilderContext);
+                EntitySetExpression setExpression = tableExpression as EntitySetExpression;
+                if (setExpression != null)
+                    tableExpression = setExpression.TableExpression;
+
+                // from here we build a custom clause:
+                // <anyClause> ==> "(select count(*) from <table> where <anyClause>)>0"
+                // TODO (later...): see if some vendors support native Any operator and avoid this substitution
+                if (parameters.Count > 1)
+                {
+                    setExpression = tableExpression as EntitySetExpression;
+                    if (setExpression != null)
+                        tableExpression = setExpression.TableExpression;
+                    var anyClause = Analyze(parameters[1], tableExpression, anyBuilderContext);
+                    RegisterWhere(anyClause, anyBuilderContext);
+                }
+                anyBuilderContext.CurrentSelect = anyBuilderContext.CurrentSelect.ChangeOperands(new SpecialExpression(SpecialExpressionType.Count, tableExpression));
+                // TODO: see if we need to register the tablePiece here (we probably don't)
+
+                // we now switch back to current context, and compare the result with 0
+                var anyExpression = Expression.GreaterThan(anyBuilderContext.CurrentSelect, Expression.Constant(0));
+                return anyExpression;
+            }
+        }
+
+        protected virtual Expression AnalyzeLikeStart(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return AnalyzeLike(parameters[0], null, parameters[1], "%", builderContext);
+        }
+
+        protected virtual Expression AnalyzeLikeEnd(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return AnalyzeLike(parameters[0], "%", parameters[1], null, builderContext);
+        }
+
+        protected virtual Expression AnalyzeLike(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return AnalyzeLike(parameters[0], "%", parameters[1], "%", builderContext);
+        }
+
+        protected virtual Expression AnalyzeLike(Expression value, string before, Expression operand, string after, BuilderContext builderContext)
+        {
+            operand = Analyze(operand, builderContext);
+            if (before != null)
+                operand = new SpecialExpression(SpecialExpressionType.Concat, Expression.Constant(before), operand);
+            if (after != null)
+                operand = new SpecialExpression(SpecialExpressionType.Concat, operand, Expression.Constant(after));
+            return new SpecialExpression(SpecialExpressionType.Like, Analyze(value, builderContext), operand);
+        }
+
+        protected virtual Expression AnalyzeSubString(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            var stringExpression = Analyze(parameters[0], builderContext);
+            var startExpression = new StartIndexOffsetExpression(builderContext.QueryContext.DataContext.Vendor.SqlProvider.StringIndexStartsAtOne,
+                                                        Analyze(parameters[1], builderContext));
+            if (parameters.Count > 2)
+            {
+                var lengthExpression = parameters[2];
+                return new SpecialExpression(SpecialExpressionType.Substring, stringExpression, startExpression, lengthExpression);
+            }
+            return new SpecialExpression(SpecialExpressionType.Substring, stringExpression, startExpression);
+        }
+
+        protected virtual Expression AnalyzeContains(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            if (parameters[0].Type.IsArray)
+            {
+                Expression array = Analyze(parameters[0], builderContext);
+                var expression = Analyze(parameters[1], builderContext);
+                return new SpecialExpression(SpecialExpressionType.In, expression, array);
+            }
+            else
+            {
+                if (typeof(IQueryable).IsAssignableFrom(parameters[0].Type))
+                {
+                    Expression p0 = Analyze(parameters[1], builderContext);
+                    BuilderContext newContext = builderContext.NewSelect();
+                    InputParameterExpression ip1 = new InputParameterExpression(parameters[0], "dummy");
+
+                    Expression p1 = AnalyzeQueryProvider(ip1.GetValue() as QueryProvider, newContext);
+                    ColumnExpression c = p1 as ColumnExpression;
+                    if (!newContext.CurrentSelect.Tables.Contains(c.Table))
+                    {
+                        newContext.CurrentSelect.Tables.Add(c.Table);
+                    }
+                    // TODO: verify if this is the right place to work
+                    return new SpecialExpression(SpecialExpressionType.In, p0, newContext.CurrentSelect.Mutate(new Expression[] { p1 }));
+                }
+            }
+            throw Error.BadArgument("S0548: Can't analyze Contains() method");
+        }
+
+        protected virtual Expression AnalyzeToUpper(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return new SpecialExpression(SpecialExpressionType.ToUpper, Analyze(parameters[0], builderContext));
+        }
+
+        protected virtual Expression AnalyzeToLower(IList<Expression> parameters, BuilderContext builderContext)
+        {
+            return new SpecialExpression(SpecialExpressionType.ToLower, Analyze(parameters[0], builderContext));
+        }
+
+        /// <summary>
+        /// Registers ordering request
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="descending"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeOrderBy(IList<Expression> parameters, bool descending, BuilderContext builderContext)
+        {
+            var table = Analyze(parameters[0], builderContext);
+            // the column is related to table
+            var column = Analyze(parameters[1], table, builderContext);
+            builderContext.CurrentSelect.OrderBy.Add(new OrderByExpression(descending, column));
+            return table;
+        }
+
+        /// <summary>
+        /// Analyzes constant expression value, and eventually extracts a table
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeConstant(Expression expression, BuilderContext builderContext)
+        {
+            var constantExpression = expression as ConstantExpression;
+            if (constantExpression != null)
+            {
+                var queriedType = GetQueriedType(expression);
+                if (queriedType != null)
+                {
+                    //return new TableExpression(queriedType, DataMapper.GetTableName(queriedType, builderContext.QueryContext.DataContext));
+                }
+                if (constantExpression.Value is ITable)
+                {
+                    var tableType = constantExpression.Type.GetGenericArguments()[0];
+                    return CreateTable(tableType, builderContext);
+                }
+                else
+                {
+                    QueryProvider queryProvider = constantExpression.Value as QueryProvider;
+                    if (queryProvider != null)
+                    {
+                        Expression tableExpression = AnalyzeQueryProvider(queryProvider, builderContext.NewQuote());
+                        return tableExpression;
+                    }
+                }
+            }
+            return expression;
+        }
+
+        protected virtual Expression AnalyzeQueryProvider(QueryProvider queryProvider, BuilderContext builderContext)
+        {
+            // TODO: check if the QueryProvider queryProvider belong to DataContext present in builderContext.QueryContext.DataContext
+            // otherwise strange things could happen in the future (I suppose)
+
+            // Build a new Context for the query
+            ExpressionChain expressions = queryProvider.ExpressionChain;
+            Expression tableExpression = CreateTableExpression(queryProvider.ExpressionChain.Expressions[0], builderContext);
+
+            return this.Analyze(expressions, tableExpression, builderContext);
+        }
+
+        protected virtual Expression AnalyzeSelectOperation(SelectOperatorType operatorType, IList<Expression> parameters, BuilderContext builderContext)
+        {
+            // a special case: if we have several SELECT expressions linked together,
+            // we maximize the load to the database, since the result must use the same parameters
+            // types and count.
+            builderContext.QueryContext.MaximumDatabaseLoad = true; // all select expression goes to SQL tier
+
+            var constantExpression = parameters[1] as ConstantExpression;
+            QueryProvider queryProvider = constantExpression.Value as QueryProvider;
+            if (queryProvider != null)
+            {
+                // Handle second select first
+                BuilderContext newContext = builderContext.NewSisterSelect();
+                Expression tableExpression = AnalyzeQueryProvider(queryProvider, newContext);
+                BuildSelect(tableExpression, newContext);
+
+                // add the second select select to the chain
+                if (newContext.CurrentSelect.NextSelectExpression != null)
+                {
+                    var operand0 = new SubSelectExpression(newContext.CurrentSelect, tableExpression.Type, "source");
+                    newContext.NewParentSelect();
+                    newContext.CurrentSelect.Tables.Add(operand0);
+                }
+                SelectExpression selectToModify = builderContext.CurrentSelect;
+                while (selectToModify.NextSelectExpression != null)
+                    selectToModify = selectToModify.NextSelectExpression;
+
+                selectToModify.NextSelectExpression = newContext.CurrentSelect;
+                selectToModify.NextSelectExpressionOperator = operatorType;
+
+                Expression firstSelection = Analyze(parameters[0], builderContext);
+                BuildSelect(firstSelection, builderContext);
+
+                return firstSelection;
+            }
+
+            return Analyze(parameters[0], builderContext);
+        }
+
+        /// <summary>
+        /// Analyses InvokeExpression
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeInvoke(Expression expression, IList<Expression> parameters,
+                                                   BuilderContext builderContext)
+        {
+            var invocationExpression = (InvocationExpression)expression;
+            var lambda = invocationExpression.Expression as LambdaExpression;
+            if (lambda != null)
+            {
+                var localBuilderContext = builderContext.NewQuote();
+                //for (int parameterIndex = 0; parameterIndex < lambda.Parameters.Count; parameterIndex++)
+                //{
+                //    var parameter = lambda.Parameters[parameterIndex];
+                //    localBuilderContext.Parameters[parameter.Name] = Analyze(invocationExpression.Arguments[parameterIndex], builderContext);
+                //}
+                //return Analyze(lambda, localBuilderContext);
+                return Analyze(lambda, invocationExpression.Arguments, localBuilderContext);
+            }
+            // TODO: see what we must do here
+            return expression;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionDispatcher.Registrar.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionDispatcher.Registrar.cs
@@ -1,602 +1,602 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-using DbLinq.Util;
-
-using DbLinq.Data.Linq.Mapping;
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-#if MONO_STRICT
-using DataContext = System.Data.Linq.DataContext;
-#else
-using DataContext = DbLinq.Data.Linq.DataContext;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal partial class ExpressionDispatcher
-    {
-
-        /// <summary>
-        /// Returns a registered column, or null if not found
-        /// This method requires the table to be already registered
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="name"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual ColumnExpression GetRegisteredColumn(TableExpression table, string name,
-                                                               BuilderContext builderContext)
-        {
-            return
-                (from queryColumn in builderContext.EnumerateScopeColumns()
-                 where queryColumn.Table.IsEqualTo(table) && queryColumn.Name == name
-                 select queryColumn).SingleOrDefault();
-        }
-
-        /// <summary>
-        /// Returns an existing table or registers the current one
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns>A registered table or the current newly registered one</returns>
-        public virtual TableExpression RegisterTable(TableExpression tableExpression, BuilderContext builderContext)
-        {
-            // 1. Find the table in current scope
-            var foundTableExpression = (from t in builderContext.EnumerateScopeTables()
-                                        where t.IsEqualTo(tableExpression)
-                                        select t).SingleOrDefault();
-            if (foundTableExpression != null)
-                return foundTableExpression;
-            // 2. Find it in all scopes, and promote it to current scope.
-            foundTableExpression = PromoteTable(tableExpression, builderContext);
-            if (foundTableExpression != null)
-                return foundTableExpression;
-            // 3. Add it
-            builderContext.CurrentSelect.Tables.Add(tableExpression);
-            return tableExpression;
-        }
-
-        /// <summary>
-        /// Promotes a table to a common parent between its current scope and our current scope
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual TableExpression PromoteTable(TableExpression tableExpression, BuilderContext builderContext)
-        {
-            int currentIndex = 0;
-            SelectExpression oldSelect = null;
-            SelectExpression commonScope = null;
-            TableExpression foundTable = null;
-            do
-            {
-                // take a select
-                oldSelect = builderContext.SelectExpressions[currentIndex];
-
-                // look for a common scope
-                if (oldSelect != builderContext.CurrentSelect)
-                {
-                    commonScope = FindCommonScope(oldSelect, builderContext.CurrentSelect);
-                    if (commonScope != null)
-                        // if a common scope exists, look for an equivalent table in that select
-                        for (int tableIndex = 0; tableIndex < oldSelect.Tables.Count && foundTable == null; tableIndex++)
-                        {
-                            if (oldSelect.Tables[tableIndex].IsEqualTo(tableExpression))
-                            {
-                                // found a matching table!
-                                foundTable = oldSelect.Tables[tableIndex];
-                            }
-                        }
-                }
-                ++currentIndex;
-            }
-            while (currentIndex < builderContext.SelectExpressions.Count && foundTable == null);
-
-            if (foundTable != null)
-            {
-                oldSelect.Tables.Remove(foundTable);
-                commonScope.Tables.Add(foundTable);
-            }
-            return foundTable;
-        }
-
-        /// <summary>
-        /// Find the common ancestor between two ScopeExpressions
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <returns></returns>
-        protected virtual SelectExpression FindCommonScope(SelectExpression a, SelectExpression b)
-        {
-            for (var aScope = a; aScope != null; aScope = aScope.Parent)
-            {
-                for (var bScope = b; bScope != null; bScope = bScope.Parent)
-                {
-                    if (aScope == bScope)
-                        return aScope;
-                }
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Registers a column
-        /// This method requires the table to be already registered
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="memberInfo"></param>
-        /// <param name="name"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public ColumnExpression RegisterColumn(TableExpression table,
-                                               MemberInfo memberInfo, string name,
-                                               BuilderContext builderContext)
-        {
-            if (memberInfo == null)
-                return null;
-            var queryColumn = GetRegisteredColumn(table, name, builderContext);
-            if (queryColumn == null)
-            {
-                table = RegisterTable(table, builderContext);
-                queryColumn = CreateColumn(table, memberInfo, builderContext);
-                builderContext.CurrentSelect.Columns.Add(queryColumn);
-            }
-            return queryColumn;
-        }
-
-        /// <summary>
-        /// Registers a column with only a table and a MemberInfo (this is the preferred method overload)
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="memberInfo"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public ColumnExpression RegisterColumn(TableExpression tableExpression, MemberInfo memberInfo,
-                                               BuilderContext builderContext)
-        {
-            var dataMember = builderContext.QueryContext.DataContext.Mapping.GetTable(tableExpression.Type).RowType
-                .GetDataMember(memberInfo);
-            if (dataMember == null)
-                return null;
-            return RegisterColumn(tableExpression, memberInfo, dataMember.MappedName, builderContext);
-        }
-
-        public ColumnExpression CreateColumn(TableExpression table, MemberInfo memberInfo, BuilderContext builderContext)
-        {
-            var dataMember = builderContext.QueryContext.DataContext.Mapping.GetTable(table.Type).RowType
-                .GetDataMember(memberInfo);
-            if (dataMember == null)
-                return null;
-            return new ColumnExpression(table, dataMember);
-        }
-
-        /// <summary>
-        /// Creates a default TableExpression
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual TableExpression CreateTable(Type tableType, BuilderContext builderContext)
-        {
-            return new TableExpression(tableType, DataMapper.GetTableName(tableType, builderContext.QueryContext.DataContext));
-        }
-
-        /// <summary>
-        /// Registers an association
-        /// </summary>
-        /// <param name="tableExpression">The table holding the member, to become the joinedTable</param>
-        /// <param name="tableMemberInfo"></param>
-        /// <param name="otherType"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual TableExpression RegisterAssociation(TableExpression tableExpression, MemberInfo tableMemberInfo,
-                                                           Type otherType, BuilderContext builderContext)
-        {
-            IList<MemberInfo> otherKeys;
-            TableJoinType joinType;
-            string joinID;
-            var theseKeys = DataMapper.GetAssociation(tableExpression, tableMemberInfo, otherType, out otherKeys,
-                                                      out joinType, out joinID, builderContext.QueryContext.DataContext);
-            // if the memberInfo has no corresponding association, we get a null, that we propagate
-            if (theseKeys == null)
-                return null;
-
-            // the current table has the foreign key, the other table the referenced (usually primary) key
-            if (theseKeys.Count != otherKeys.Count)
-                throw Error.BadArgument("S0128: Association arguments (FK and ref'd PK) don't match");
-
-            // we first create the table, with the JoinID, and we MUST complete the table later, with the Join() method
-            var otherTableExpression = new TableExpression(otherType, DataMapper.GetTableName(otherType, builderContext.QueryContext.DataContext), joinID);
-
-            Expression joinExpression = null;
-
-            var createdColumns = new List<ColumnExpression>();
-            for (int keyIndex = 0; keyIndex < theseKeys.Count; keyIndex++)
-            {
-                // joinedKey is registered, even if unused by final select (required columns will be filtered anyway)
-                Expression otherKey = RegisterColumn(otherTableExpression, otherKeys[keyIndex], builderContext);
-                // foreign is created, we will store it later if this assocation is registered too
-                Expression thisKey = CreateColumn(tableExpression, theseKeys[keyIndex], builderContext);
-                createdColumns.Add((ColumnExpression)thisKey);
-
-                // if the key is nullable, then convert it
-                // TODO: this will probably need to be changed
-                if (otherKey.Type.IsNullable())
-                    otherKey = Expression.Convert(otherKey, otherKey.Type.GetNullableType());
-                if (thisKey.Type.IsNullable())
-                    thisKey = Expression.Convert(thisKey, thisKey.Type.GetNullableType());
-                // the other key is set as left operand, this must be this way
-                // since some vendors (SQL Server) don't support the opposite
-                var referenceExpression = Expression.Equal(otherKey, thisKey);
-
-                // if we already have a join expression, then we have a double condition here, so "AND" it
-                if (joinExpression != null)
-                    joinExpression = Expression.And(joinExpression, referenceExpression);
-                else
-                    joinExpression = referenceExpression;
-            }
-            // we complete the table here, now that we have all join information
-            otherTableExpression.Join(joinType, tableExpression, joinExpression);
-
-            // our table is created, with the expressions
-            // now check if we didn't register exactly the same
-            var existingTable = (from t in builderContext.EnumerateScopeTables() where t.IsEqualTo(otherTableExpression) select t).SingleOrDefault();
-            if (existingTable != null)
-                return existingTable;
- 
-            builderContext.CurrentSelect.Tables.Add(otherTableExpression);
-            foreach (var createdColumn in createdColumns)
-                builderContext.CurrentSelect.Columns.Add(createdColumn);
-            return otherTableExpression;
-        }
-
-        /// <summary>
-        /// Registers an external parameter
-        /// Since these can be complex expressions, we don't try to identify them
-        /// and push them every time
-        /// The only loss may be a small memory loss (if anyone can prove me that the same Expression can be used twice)
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="alias"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual InputParameterExpression RegisterParameter(Expression expression, string alias, BuilderContext builderContext)
-        {
-            var queryParameterExpression = new InputParameterExpression(expression, alias);
-            builderContext.ExpressionQuery.Parameters.Add(queryParameterExpression);
-            return queryParameterExpression;
-        }
-
-        public virtual void UnregisterParameter(InputParameterExpression expression, BuilderContext builderContext)
-        {
-            builderContext.ExpressionQuery.Parameters.Remove(expression);
-        }
-
-        /// <summary>
-        /// Registers a MetaTable
-        /// </summary>
-        /// <param name="metaTableType"></param>
-        /// <param name="aliases"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual MetaTableExpression RegisterMetaTable(Type metaTableType, IDictionary<MemberInfo, MutableExpression> aliases,
-                                                             BuilderContext builderContext)
-        {
-            MetaTableExpression metaTableExpression;
-            if (!builderContext.MetaTables.TryGetValue(metaTableType, out metaTableExpression))
-            {
-                metaTableExpression = new MetaTableExpression(aliases, metaTableType);
-                builderContext.MetaTables[metaTableType] = metaTableExpression;
-            }
-            return metaTableExpression;
-        }
-
-        /// <summary>
-        /// Registers a where clause in the current context scope
-        /// </summary>
-        /// <param name="whereExpression"></param>
-        /// <param name="builderContext"></param>
-        public virtual void RegisterWhere(Expression whereExpression, BuilderContext builderContext)
-        {
-            builderContext.CurrentSelect.Where.Add(whereExpression);
-        }
-
-        /// <summary>
-        /// Registers all columns of a table.
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual IEnumerable<ColumnExpression> RegisterAllColumns(TableExpression tableExpression, BuilderContext builderContext)
-        {
-            foreach (var metaMember in builderContext.QueryContext.DataContext.Mapping.GetTable(tableExpression.Type).RowType.PersistentDataMembers)
-            {
-                yield return RegisterColumn(tableExpression, metaMember.Member, builderContext);
-            }
-        }
-
-        /// <summary>
-        /// Registers an expression to be returned by main request.
-        /// The strategy is to try to find it in the already registered parameters, and if not found, add it
-        /// </summary>
-        /// <param name="expression">The expression to be registered</param>
-        /// <param name="builderContext"></param>
-        /// <returns>Expression index</returns>
-        public virtual int RegisterOutputParameter(Expression expression, BuilderContext builderContext)
-        {
-            var scope = builderContext.CurrentSelect;
-            var operands = scope.Operands.ToList();
-            for (int index = 0; index < operands.Count; index++)
-            {
-                if (ExpressionEquals(operands[index], expression))
-                    return index;
-            }
-            operands.Add(expression);
-            builderContext.CurrentSelect = (SelectExpression)scope.Mutate(operands);
-            return operands.Count - 1;
-        }
-
-        protected virtual bool ExpressionEquals(Expression a, Expression b)
-        {
-            // TODO: something smarter, to compare contents and not only references (works fine only for columns)
-            return a == b;
-        }
-
-        /// <summary>
-        /// Registers the table as returned by the SQL request.
-        /// Actually, the table is split into its columns.
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="dataRecordParameter"></param>
-        /// <param name="mappingContextParameter"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression GetOutputTableReader(TableExpression tableExpression,
-                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
-                                                          BuilderContext builderContext)
-        {
-            var bindings = new List<MemberBinding>();
-            
-            foreach (ColumnExpression columnExpression in RegisterAllColumns(tableExpression, builderContext))
-            {
-                MemberInfo memberInfo = columnExpression.StorageInfo ?? columnExpression.MemberInfo;
-                PropertyInfo propertyInfo = memberInfo as PropertyInfo;
-                if (propertyInfo == null || propertyInfo.CanWrite)
-                {
-                    var parameterColumn = GetOutputValueReader(columnExpression,
-                                                               dataRecordParameter, mappingContextParameter, builderContext);
-                    var binding = Expression.Bind(memberInfo, parameterColumn);
-                    bindings.Add(binding);
-                }
-            }
-            var newExpression = Expression.New(tableExpression.Type);
-            var initExpression = Expression.MemberInit(newExpression, bindings);
-            return initExpression;
-        }
-
-        /// <summary>
-        /// Builds a Row builder, based on a given list of parameters
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="parameters"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual LambdaExpression BuildTableReader(Type tableType, IList<string> parameters, BuilderContext builderContext)
-        {
-            var dataRecordParameter = Expression.Parameter(typeof(IDataRecord), "dataRecord");
-            var mappingContextParameter = Expression.Parameter(typeof(MappingContext), "mappingContext");
-            //var table = builderContext.QueryContext.DataContext.Mapping.GetTable(tableType);
-            var bindings = new List<MemberBinding>();
-            for (int parameterIndex = 0; parameterIndex < parameters.Count; parameterIndex++)
-            {
-				var parameter = parameters[parameterIndex];
-				var memberInfo = tableType.GetTableColumnMember(parameter);
-                if (memberInfo == null)
-                {
-                    memberInfo = tableType.GetSingleMember(parameter, BindingFlags.Public | BindingFlags.NonPublic
-                                                                      | BindingFlags.Instance | BindingFlags.IgnoreCase);
-                }
-                // TODO real error
-                if (memberInfo == null)
-                    throw new ArgumentException(string.Format("Invalid column '{0}'", parameter));
-                //var column = DataMapper.GetColumnName(tableType, memberInfo, builderContext.QueryContext.DataContext);
-                //var columnName = DataMapper.GetColumnName(tableType, memberInfo, builderContext.QueryContext.DataContext);
-                var invoke = GetOutputValueReader(memberInfo.GetMemberType(), parameterIndex, //GetTableIndex(parameters, columnName),
-                                                  dataRecordParameter, mappingContextParameter);
-                var parameterColumn = GetOutputValueReader(invoke, dataRecordParameter, mappingContextParameter,
-                                                           builderContext);
-                var binding = Expression.Bind(memberInfo, parameterColumn);
-                bindings.Add(binding);
-            }
-            var newExpression = Expression.New(tableType);
-            var initExpression = Expression.MemberInit(newExpression, bindings);
-            return Expression.Lambda(initExpression, dataRecordParameter, mappingContextParameter);
-        }
-
-        protected virtual int GetTableIndex(IList<string> parameters, string columnName)
-        {
-            int index = parameters.IndexOf(columnName);
-            if (index >= 0)
-                return index;
-            for (index = 0; index < parameters.Count; index++)
-            {
-                if (string.Compare(parameters[index], columnName, true) == 0)
-                {
-                    return index;
-                }
-            }
-            return -1;
-        }
-
-        /// <summary>
-        /// Creates an entity set creator, to be used at run-time
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="dataRecordParameter"></param>
-        /// <param name="mappingContextParameter"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression GetEntitySetBuilder(EntitySetExpression expression,
-                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
-                                                          BuilderContext builderContext)
-        {
-            var entityType = expression.EntitySetType.GetGenericArguments()[0];
-            List<ElementInit> members = new List<ElementInit>();
-            var add = expression.EntitySetType.GetMethod("Add", 
-                    BindingFlags.NonPublic | BindingFlags.Instance,
-                    null,
-                    new Type[] { typeof(KeyValuePair<object, MemberInfo>) },
-                    null);
-
-            foreach (var info in expression.Columns)
-            {
-                var column = info.Key;
-                var tk = info.Value;
-                MemberInfo memberInfo = column.StorageInfo ?? column.MemberInfo;
-                PropertyInfo propertyInfo = memberInfo as PropertyInfo;
-                if (propertyInfo == null || propertyInfo.CanWrite)
-                {
-                    var parameterColumn = GetOutputValueReader(column,
-                            dataRecordParameter, mappingContextParameter, builderContext);
-                    members.Add(Expression.ElementInit(add, 
-                            new Expression[]{
-                                Expression.New(typeof(KeyValuePair<object, MemberInfo>).GetConstructor(new Type[]{typeof(object), typeof(MemberInfo)}),
-                                    Expression.Convert(parameterColumn, typeof(object)), 
-                                    Expression.Constant(tk.Member, typeof(MemberInfo)))}));
-                }
-            }
-
-            return Expression.ListInit(
-                    Expression.New(
-                        expression.EntitySetType.GetConstructor(
-                            BindingFlags.NonPublic | BindingFlags.Instance,
-                            null,
-                            new[] { typeof(DataContext) },
-                            null),
-                        Expression.Constant(builderContext.QueryContext.DataContext)),
-                    members);
-        }
-
-        /// <summary>
-        /// Registers the expression as returned by the SQL request.
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="dataRecordParameter"></param>
-        /// <param name="mappingContextParameter"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression GetOutputValueReader(Expression expression,
-                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
-                                                          BuilderContext builderContext)
-        {
-            int valueIndex = RegisterOutputParameter(expression, builderContext);
-            return GetOutputValueReader(expression.Type, valueIndex, dataRecordParameter, mappingContextParameter);
-        }
-
-        /// <summary>
-        /// Registers the ColumnExpression as returned by the SQL request.
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="dataRecordParameter"></param>
-        /// <param name="mappingContextParameter"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression GetOutputValueReader(ColumnExpression expression,
-                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
-                                                          BuilderContext builderContext)
-        {
-            int valueIndex = RegisterOutputParameter(expression, builderContext);
-            Type storageType = expression.StorageInfo != null ? expression.StorageInfo.GetMemberType() : null;
-            return GetOutputValueReader(storageType ?? expression.Type, valueIndex, dataRecordParameter, mappingContextParameter);
-        }
-
-
-        /// <summary>
-        /// Registers the expression as returned column
-        /// </summary>
-        /// <param name="columnType"></param>
-        /// <param name="valueIndex"></param>
-        /// <param name="dataRecordParameter"></param>
-        /// <param name="mappingContextParameter"></param>
-        /// <returns></returns>
-        protected virtual Expression GetOutputValueReader(Type columnType, int valueIndex, ParameterExpression dataRecordParameter,
-                                                          ParameterExpression mappingContextParameter)
-        {
-            var propertyReaderLambda = DataRecordReader.GetPropertyReader(columnType);
-            Expression invoke = new ParameterBinder().BindParams(propertyReaderLambda,
-                dataRecordParameter, mappingContextParameter, Expression.Constant(valueIndex));
-            if (!columnType.IsNullable())
-                invoke = Expression.Convert(invoke, columnType);
-            return invoke;
-        }
-    }
-
-    class ParameterBinder
-    {
-        Dictionary<Expression, Expression> map;
-
-        public Expression BindParams(LambdaExpression expr, params Expression[] args)
-        {
-            map = new Dictionary<Expression, Expression>();
-
-            if (expr.Parameters.Count != args.Length)
-                throw new NotImplementedException();
-            for (int i = 0; i < expr.Parameters.Count; ++i)
-                map[expr.Parameters[i]] = args[i];
-            return Visit(expr.Body);
-        }
-
-        Expression Visit(Expression expr)
-        {
-            switch (expr.NodeType)
-            {
-                case ExpressionType.Call:
-                    MethodCallExpression call = expr as MethodCallExpression;
-                    Expression[] new_args = new Expression[call.Arguments.Count];
-                    for (int i = 0; i < new_args.Length; ++i)
-                        new_args[i] = Visit(call.Arguments[i]);
-                    return Expression.Call(call.Object, call.Method, new_args);
-                case ExpressionType.Parameter:
-                    Expression new_expr;
-                    if (map.TryGetValue(expr, out new_expr))
-                        return new_expr;
-                    break;
-                default:
-                    throw new Exception("Can't handle " + expr.NodeType);
-            }
-
-            return expr;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using DbLinq.Util;
+
+using DbLinq.Data.Linq.Mapping;
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+#if MONO_STRICT
+using DataContext = System.Data.Linq.DataContext;
+#else
+using DataContext = DbLinq.Data.Linq.DataContext;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal partial class ExpressionDispatcher
+    {
+
+        /// <summary>
+        /// Returns a registered column, or null if not found
+        /// This method requires the table to be already registered
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="name"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual ColumnExpression GetRegisteredColumn(TableExpression table, string name,
+                                                               BuilderContext builderContext)
+        {
+            return
+                (from queryColumn in builderContext.EnumerateScopeColumns()
+                 where queryColumn.Table.IsEqualTo(table) && queryColumn.Name == name
+                 select queryColumn).SingleOrDefault();
+        }
+
+        /// <summary>
+        /// Returns an existing table or registers the current one
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns>A registered table or the current newly registered one</returns>
+        public virtual TableExpression RegisterTable(TableExpression tableExpression, BuilderContext builderContext)
+        {
+            // 1. Find the table in current scope
+            var foundTableExpression = (from t in builderContext.EnumerateScopeTables()
+                                        where t.IsEqualTo(tableExpression)
+                                        select t).SingleOrDefault();
+            if (foundTableExpression != null)
+                return foundTableExpression;
+            // 2. Find it in all scopes, and promote it to current scope.
+            foundTableExpression = PromoteTable(tableExpression, builderContext);
+            if (foundTableExpression != null)
+                return foundTableExpression;
+            // 3. Add it
+            builderContext.CurrentSelect.Tables.Add(tableExpression);
+            return tableExpression;
+        }
+
+        /// <summary>
+        /// Promotes a table to a common parent between its current scope and our current scope
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual TableExpression PromoteTable(TableExpression tableExpression, BuilderContext builderContext)
+        {
+            int currentIndex = 0;
+            SelectExpression oldSelect = null;
+            SelectExpression commonScope = null;
+            TableExpression foundTable = null;
+            do
+            {
+                // take a select
+                oldSelect = builderContext.SelectExpressions[currentIndex];
+
+                // look for a common scope
+                if (oldSelect != builderContext.CurrentSelect)
+                {
+                    commonScope = FindCommonScope(oldSelect, builderContext.CurrentSelect);
+                    if (commonScope != null)
+                        // if a common scope exists, look for an equivalent table in that select
+                        for (int tableIndex = 0; tableIndex < oldSelect.Tables.Count && foundTable == null; tableIndex++)
+                        {
+                            if (oldSelect.Tables[tableIndex].IsEqualTo(tableExpression))
+                            {
+                                // found a matching table!
+                                foundTable = oldSelect.Tables[tableIndex];
+                            }
+                        }
+                }
+                ++currentIndex;
+            }
+            while (currentIndex < builderContext.SelectExpressions.Count && foundTable == null);
+
+            if (foundTable != null)
+            {
+                oldSelect.Tables.Remove(foundTable);
+                commonScope.Tables.Add(foundTable);
+            }
+            return foundTable;
+        }
+
+        /// <summary>
+        /// Find the common ancestor between two ScopeExpressions
+        /// </summary>
+        /// <param name="a"></param>
+        /// <param name="b"></param>
+        /// <returns></returns>
+        protected virtual SelectExpression FindCommonScope(SelectExpression a, SelectExpression b)
+        {
+            for (var aScope = a; aScope != null; aScope = aScope.Parent)
+            {
+                for (var bScope = b; bScope != null; bScope = bScope.Parent)
+                {
+                    if (aScope == bScope)
+                        return aScope;
+                }
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Registers a column
+        /// This method requires the table to be already registered
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="memberInfo"></param>
+        /// <param name="name"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public ColumnExpression RegisterColumn(TableExpression table,
+                                               MemberInfo memberInfo, string name,
+                                               BuilderContext builderContext)
+        {
+            if (memberInfo == null)
+                return null;
+            var queryColumn = GetRegisteredColumn(table, name, builderContext);
+            if (queryColumn == null)
+            {
+                table = RegisterTable(table, builderContext);
+                queryColumn = CreateColumn(table, memberInfo, builderContext);
+                builderContext.CurrentSelect.Columns.Add(queryColumn);
+            }
+            return queryColumn;
+        }
+
+        /// <summary>
+        /// Registers a column with only a table and a MemberInfo (this is the preferred method overload)
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="memberInfo"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public ColumnExpression RegisterColumn(TableExpression tableExpression, MemberInfo memberInfo,
+                                               BuilderContext builderContext)
+        {
+            var dataMember = builderContext.QueryContext.DataContext.Mapping.GetTable(tableExpression.Type).RowType
+                .GetDataMember(memberInfo);
+            if (dataMember == null)
+                return null;
+            return RegisterColumn(tableExpression, memberInfo, dataMember.MappedName, builderContext);
+        }
+
+        public ColumnExpression CreateColumn(TableExpression table, MemberInfo memberInfo, BuilderContext builderContext)
+        {
+            var dataMember = builderContext.QueryContext.DataContext.Mapping.GetTable(table.Type).RowType
+                .GetDataMember(memberInfo);
+            if (dataMember == null)
+                return null;
+            return new ColumnExpression(table, dataMember);
+        }
+
+        /// <summary>
+        /// Creates a default TableExpression
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual TableExpression CreateTable(Type tableType, BuilderContext builderContext)
+        {
+            return new TableExpression(tableType, DataMapper.GetTableName(tableType, builderContext.QueryContext.DataContext));
+        }
+
+        /// <summary>
+        /// Registers an association
+        /// </summary>
+        /// <param name="tableExpression">The table holding the member, to become the joinedTable</param>
+        /// <param name="tableMemberInfo"></param>
+        /// <param name="otherType"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual TableExpression RegisterAssociation(TableExpression tableExpression, MemberInfo tableMemberInfo,
+                                                           Type otherType, BuilderContext builderContext)
+        {
+            IList<MemberInfo> otherKeys;
+            TableJoinType joinType;
+            string joinID;
+            var theseKeys = DataMapper.GetAssociation(tableExpression, tableMemberInfo, otherType, out otherKeys,
+                                                      out joinType, out joinID, builderContext.QueryContext.DataContext);
+            // if the memberInfo has no corresponding association, we get a null, that we propagate
+            if (theseKeys == null)
+                return null;
+
+            // the current table has the foreign key, the other table the referenced (usually primary) key
+            if (theseKeys.Count != otherKeys.Count)
+                throw Error.BadArgument("S0128: Association arguments (FK and ref'd PK) don't match");
+
+            // we first create the table, with the JoinID, and we MUST complete the table later, with the Join() method
+            var otherTableExpression = new TableExpression(otherType, DataMapper.GetTableName(otherType, builderContext.QueryContext.DataContext), joinID);
+
+            Expression joinExpression = null;
+
+            var createdColumns = new List<ColumnExpression>();
+            for (int keyIndex = 0; keyIndex < theseKeys.Count; keyIndex++)
+            {
+                // joinedKey is registered, even if unused by final select (required columns will be filtered anyway)
+                Expression otherKey = RegisterColumn(otherTableExpression, otherKeys[keyIndex], builderContext);
+                // foreign is created, we will store it later if this assocation is registered too
+                Expression thisKey = CreateColumn(tableExpression, theseKeys[keyIndex], builderContext);
+                createdColumns.Add((ColumnExpression)thisKey);
+
+                // if the key is nullable, then convert it
+                // TODO: this will probably need to be changed
+                if (otherKey.Type.IsNullable())
+                    otherKey = Expression.Convert(otherKey, otherKey.Type.GetNullableType());
+                if (thisKey.Type.IsNullable())
+                    thisKey = Expression.Convert(thisKey, thisKey.Type.GetNullableType());
+                // the other key is set as left operand, this must be this way
+                // since some vendors (SQL Server) don't support the opposite
+                var referenceExpression = Expression.Equal(otherKey, thisKey);
+
+                // if we already have a join expression, then we have a double condition here, so "AND" it
+                if (joinExpression != null)
+                    joinExpression = Expression.And(joinExpression, referenceExpression);
+                else
+                    joinExpression = referenceExpression;
+            }
+            // we complete the table here, now that we have all join information
+            otherTableExpression.Join(joinType, tableExpression, joinExpression);
+
+            // our table is created, with the expressions
+            // now check if we didn't register exactly the same
+            var existingTable = (from t in builderContext.EnumerateScopeTables() where t.IsEqualTo(otherTableExpression) select t).SingleOrDefault();
+            if (existingTable != null)
+                return existingTable;
+ 
+            builderContext.CurrentSelect.Tables.Add(otherTableExpression);
+            foreach (var createdColumn in createdColumns)
+                builderContext.CurrentSelect.Columns.Add(createdColumn);
+            return otherTableExpression;
+        }
+
+        /// <summary>
+        /// Registers an external parameter
+        /// Since these can be complex expressions, we don't try to identify them
+        /// and push them every time
+        /// The only loss may be a small memory loss (if anyone can prove me that the same Expression can be used twice)
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="alias"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual InputParameterExpression RegisterParameter(Expression expression, string alias, BuilderContext builderContext)
+        {
+            var queryParameterExpression = new InputParameterExpression(expression, alias);
+            builderContext.ExpressionQuery.Parameters.Add(queryParameterExpression);
+            return queryParameterExpression;
+        }
+
+        public virtual void UnregisterParameter(InputParameterExpression expression, BuilderContext builderContext)
+        {
+            builderContext.ExpressionQuery.Parameters.Remove(expression);
+        }
+
+        /// <summary>
+        /// Registers a MetaTable
+        /// </summary>
+        /// <param name="metaTableType"></param>
+        /// <param name="aliases"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual MetaTableExpression RegisterMetaTable(Type metaTableType, IDictionary<MemberInfo, MutableExpression> aliases,
+                                                             BuilderContext builderContext)
+        {
+            MetaTableExpression metaTableExpression;
+            if (!builderContext.MetaTables.TryGetValue(metaTableType, out metaTableExpression))
+            {
+                metaTableExpression = new MetaTableExpression(aliases, metaTableType);
+                builderContext.MetaTables[metaTableType] = metaTableExpression;
+            }
+            return metaTableExpression;
+        }
+
+        /// <summary>
+        /// Registers a where clause in the current context scope
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="builderContext"></param>
+        public virtual void RegisterWhere(Expression whereExpression, BuilderContext builderContext)
+        {
+            builderContext.CurrentSelect.Where.Add(whereExpression);
+        }
+
+        /// <summary>
+        /// Registers all columns of a table.
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual IEnumerable<ColumnExpression> RegisterAllColumns(TableExpression tableExpression, BuilderContext builderContext)
+        {
+            foreach (var metaMember in builderContext.QueryContext.DataContext.Mapping.GetTable(tableExpression.Type).RowType.PersistentDataMembers)
+            {
+                yield return RegisterColumn(tableExpression, metaMember.Member, builderContext);
+            }
+        }
+
+        /// <summary>
+        /// Registers an expression to be returned by main request.
+        /// The strategy is to try to find it in the already registered parameters, and if not found, add it
+        /// </summary>
+        /// <param name="expression">The expression to be registered</param>
+        /// <param name="builderContext"></param>
+        /// <returns>Expression index</returns>
+        public virtual int RegisterOutputParameter(Expression expression, BuilderContext builderContext)
+        {
+            var scope = builderContext.CurrentSelect;
+            var operands = scope.Operands.ToList();
+            for (int index = 0; index < operands.Count; index++)
+            {
+                if (ExpressionEquals(operands[index], expression))
+                    return index;
+            }
+            operands.Add(expression);
+            builderContext.CurrentSelect = (SelectExpression)scope.Mutate(operands);
+            return operands.Count - 1;
+        }
+
+        protected virtual bool ExpressionEquals(Expression a, Expression b)
+        {
+            // TODO: something smarter, to compare contents and not only references (works fine only for columns)
+            return a == b;
+        }
+
+        /// <summary>
+        /// Registers the table as returned by the SQL request.
+        /// Actually, the table is split into its columns.
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="dataRecordParameter"></param>
+        /// <param name="mappingContextParameter"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression GetOutputTableReader(TableExpression tableExpression,
+                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
+                                                          BuilderContext builderContext)
+        {
+            var bindings = new List<MemberBinding>();
+            
+            foreach (ColumnExpression columnExpression in RegisterAllColumns(tableExpression, builderContext))
+            {
+                MemberInfo memberInfo = columnExpression.StorageInfo ?? columnExpression.MemberInfo;
+                PropertyInfo propertyInfo = memberInfo as PropertyInfo;
+                if (propertyInfo == null || propertyInfo.CanWrite)
+                {
+                    var parameterColumn = GetOutputValueReader(columnExpression,
+                                                               dataRecordParameter, mappingContextParameter, builderContext);
+                    var binding = Expression.Bind(memberInfo, parameterColumn);
+                    bindings.Add(binding);
+                }
+            }
+            var newExpression = Expression.New(tableExpression.Type);
+            var initExpression = Expression.MemberInit(newExpression, bindings);
+            return initExpression;
+        }
+
+        /// <summary>
+        /// Builds a Row builder, based on a given list of parameters
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="parameters"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual LambdaExpression BuildTableReader(Type tableType, IList<string> parameters, BuilderContext builderContext)
+        {
+            var dataRecordParameter = Expression.Parameter(typeof(IDataRecord), "dataRecord");
+            var mappingContextParameter = Expression.Parameter(typeof(MappingContext), "mappingContext");
+            //var table = builderContext.QueryContext.DataContext.Mapping.GetTable(tableType);
+            var bindings = new List<MemberBinding>();
+            for (int parameterIndex = 0; parameterIndex < parameters.Count; parameterIndex++)
+            {
+				var parameter = parameters[parameterIndex];
+				var memberInfo = tableType.GetTableColumnMember(parameter);
+                if (memberInfo == null)
+                {
+                    memberInfo = tableType.GetSingleMember(parameter, BindingFlags.Public | BindingFlags.NonPublic
+                                                                      | BindingFlags.Instance | BindingFlags.IgnoreCase);
+                }
+                // TODO real error
+                if (memberInfo == null)
+                    throw new ArgumentException(string.Format("Invalid column '{0}'", parameter));
+                //var column = DataMapper.GetColumnName(tableType, memberInfo, builderContext.QueryContext.DataContext);
+                //var columnName = DataMapper.GetColumnName(tableType, memberInfo, builderContext.QueryContext.DataContext);
+                var invoke = GetOutputValueReader(memberInfo.GetMemberType(), parameterIndex, //GetTableIndex(parameters, columnName),
+                                                  dataRecordParameter, mappingContextParameter);
+                var parameterColumn = GetOutputValueReader(invoke, dataRecordParameter, mappingContextParameter,
+                                                           builderContext);
+                var binding = Expression.Bind(memberInfo, parameterColumn);
+                bindings.Add(binding);
+            }
+            var newExpression = Expression.New(tableType);
+            var initExpression = Expression.MemberInit(newExpression, bindings);
+            return Expression.Lambda(initExpression, dataRecordParameter, mappingContextParameter);
+        }
+
+        protected virtual int GetTableIndex(IList<string> parameters, string columnName)
+        {
+            int index = parameters.IndexOf(columnName);
+            if (index >= 0)
+                return index;
+            for (index = 0; index < parameters.Count; index++)
+            {
+                if (string.Compare(parameters[index], columnName, true) == 0)
+                {
+                    return index;
+                }
+            }
+            return -1;
+        }
+
+        /// <summary>
+        /// Creates an entity set creator, to be used at run-time
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="dataRecordParameter"></param>
+        /// <param name="mappingContextParameter"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression GetEntitySetBuilder(EntitySetExpression expression,
+                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
+                                                          BuilderContext builderContext)
+        {
+            var entityType = expression.EntitySetType.GetGenericArguments()[0];
+            List<ElementInit> members = new List<ElementInit>();
+            var add = expression.EntitySetType.GetMethod("Add", 
+                    BindingFlags.NonPublic | BindingFlags.Instance,
+                    null,
+                    new Type[] { typeof(KeyValuePair<object, MemberInfo>) },
+                    null);
+
+            foreach (var info in expression.Columns)
+            {
+                var column = info.Key;
+                var tk = info.Value;
+                MemberInfo memberInfo = column.StorageInfo ?? column.MemberInfo;
+                PropertyInfo propertyInfo = memberInfo as PropertyInfo;
+                if (propertyInfo == null || propertyInfo.CanWrite)
+                {
+                    var parameterColumn = GetOutputValueReader(column,
+                            dataRecordParameter, mappingContextParameter, builderContext);
+                    members.Add(Expression.ElementInit(add, 
+                            new Expression[]{
+                                Expression.New(typeof(KeyValuePair<object, MemberInfo>).GetConstructor(new Type[]{typeof(object), typeof(MemberInfo)}),
+                                    Expression.Convert(parameterColumn, typeof(object)), 
+                                    Expression.Constant(tk.Member, typeof(MemberInfo)))}));
+                }
+            }
+
+            return Expression.ListInit(
+                    Expression.New(
+                        expression.EntitySetType.GetConstructor(
+                            BindingFlags.NonPublic | BindingFlags.Instance,
+                            null,
+                            new[] { typeof(DataContext) },
+                            null),
+                        Expression.Constant(builderContext.QueryContext.DataContext)),
+                    members);
+        }
+
+        /// <summary>
+        /// Registers the expression as returned by the SQL request.
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="dataRecordParameter"></param>
+        /// <param name="mappingContextParameter"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression GetOutputValueReader(Expression expression,
+                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
+                                                          BuilderContext builderContext)
+        {
+            int valueIndex = RegisterOutputParameter(expression, builderContext);
+            return GetOutputValueReader(expression.Type, valueIndex, dataRecordParameter, mappingContextParameter);
+        }
+
+        /// <summary>
+        /// Registers the ColumnExpression as returned by the SQL request.
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="dataRecordParameter"></param>
+        /// <param name="mappingContextParameter"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression GetOutputValueReader(ColumnExpression expression,
+                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
+                                                          BuilderContext builderContext)
+        {
+            int valueIndex = RegisterOutputParameter(expression, builderContext);
+            Type storageType = expression.StorageInfo != null ? expression.StorageInfo.GetMemberType() : null;
+            return GetOutputValueReader(storageType ?? expression.Type, valueIndex, dataRecordParameter, mappingContextParameter);
+        }
+
+
+        /// <summary>
+        /// Registers the expression as returned column
+        /// </summary>
+        /// <param name="columnType"></param>
+        /// <param name="valueIndex"></param>
+        /// <param name="dataRecordParameter"></param>
+        /// <param name="mappingContextParameter"></param>
+        /// <returns></returns>
+        protected virtual Expression GetOutputValueReader(Type columnType, int valueIndex, ParameterExpression dataRecordParameter,
+                                                          ParameterExpression mappingContextParameter)
+        {
+            var propertyReaderLambda = DataRecordReader.GetPropertyReader(columnType);
+            Expression invoke = new ParameterBinder().BindParams(propertyReaderLambda,
+                dataRecordParameter, mappingContextParameter, Expression.Constant(valueIndex));
+            if (!columnType.IsNullable())
+                invoke = Expression.Convert(invoke, columnType);
+            return invoke;
+        }
+    }
+
+    class ParameterBinder
+    {
+        Dictionary<Expression, Expression> map;
+
+        public Expression BindParams(LambdaExpression expr, params Expression[] args)
+        {
+            map = new Dictionary<Expression, Expression>();
+
+            if (expr.Parameters.Count != args.Length)
+                throw new NotImplementedException();
+            for (int i = 0; i < expr.Parameters.Count; ++i)
+                map[expr.Parameters[i]] = args[i];
+            return Visit(expr.Body);
+        }
+
+        Expression Visit(Expression expr)
+        {
+            switch (expr.NodeType)
+            {
+                case ExpressionType.Call:
+                    MethodCallExpression call = expr as MethodCallExpression;
+                    Expression[] new_args = new Expression[call.Arguments.Count];
+                    for (int i = 0; i < new_args.Length; ++i)
+                        new_args[i] = Visit(call.Arguments[i]);
+                    return Expression.Call(call.Object, call.Method, new_args);
+                case ExpressionType.Parameter:
+                    Expression new_expr;
+                    if (map.TryGetValue(expr, out new_expr))
+                        return new_expr;
+                    break;
+                default:
+                    throw new Exception("Can't handle " + expr.NodeType);
+            }
+
+            return expr;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionDispatcher.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionDispatcher.cs
@@ -1,305 +1,305 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Mapping;
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-using DbLinq.Data.Linq.Sugar.Implementation;
-using DbLinq.Factory;
-
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal partial class ExpressionDispatcher : IExpressionDispatcher
-    {
-        public IExpressionQualifier ExpressionQualifier { get; set; }
-        public IDataRecordReader DataRecordReader { get; set; }
-        public IDataMapper DataMapper { get; set; }
-
-        public ExpressionDispatcher()
-        {
-            ExpressionQualifier = ObjectFactory.Get<IExpressionQualifier>();
-            DataRecordReader = ObjectFactory.Get<IDataRecordReader>();
-            DataMapper = ObjectFactory.Get<IDataMapper>();
-        }
-
-        /// <summary>
-        /// Registers the first table. Extracts the table type and registeres the piece
-        /// </summary>
-        /// <param name="requestingExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual Expression CreateTableExpression(Expression requestingExpression, BuilderContext builderContext)
-        {
-            var callExpression = (MethodCallExpression)requestingExpression;
-            var requestingType = callExpression.Arguments[0].Type;
-            return CreateTable(GetQueriedType(requestingType), builderContext);
-        }
-
-        /// <summary>
-        /// Registers the first table. Extracts the table type and registeres the piece
-        /// </summary>
-        /// <param name="requestingExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual Expression GetTable(Expression requestingExpression, BuilderContext builderContext)
-        {
-            var callExpression = (MethodCallExpression)requestingExpression;
-            var requestingType = callExpression.Arguments[0].Type;
-            return CreateTable(GetQueriedType(requestingType), builderContext);
-        }
-
-        /// <summary>
-        /// Builds the upper select clause
-        /// </summary>
-        /// <param name="selectExpression"></param>
-        /// <param name="builderContext"></param>
-        public virtual void BuildSelect(Expression selectExpression, BuilderContext builderContext)
-        {
-            // collect columns, split Expression in
-            // - things we will do in CLR
-            // - things we will do in SQL
-            LambdaExpression lambdaSelectExpression;
-            // if we have a GroupByExpression, the result type is not the same:
-            // - we need to read what is going to be the Key expression
-            // - the final row generator builds a IGrouping<K,T> instead of T
-            var selectGroupExpression = selectExpression as GroupExpression;
-            if (selectGroupExpression != null)
-            {
-                lambdaSelectExpression = CutOutOperands(selectGroupExpression.GroupedExpression, builderContext);
-                var lambdaSelectKeyExpression = CutOutOperands(selectGroupExpression.KeyExpression, builderContext);
-                lambdaSelectExpression = BuildSelectGroup(lambdaSelectExpression, lambdaSelectKeyExpression,
-                                                          builderContext);
-            }
-            else
-                lambdaSelectExpression = CutOutOperands(selectExpression, builderContext);
-            // look for tables and use columns instead
-            // (this is done after cut, because the part that went to SQL must not be converted)
-            //selectExpression = selectExpression.Recurse(e => CheckTableExpression(e, builderContext));
-            // the last return value becomes the select, with CurrentScope
-            builderContext.CurrentSelect.Reader = lambdaSelectExpression;
-        }
-
-        /// <summary>
-        /// Builds the lambda as:
-        /// (dr, mc) => new LineGrouping<K,T>(selectKey(dr,mc),select(dr,mc))
-        /// </summary>
-        /// <param name="select"></param>
-        /// <param name="selectKey"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual LambdaExpression BuildSelectGroup(LambdaExpression select, LambdaExpression selectKey,
-                                                            BuilderContext builderContext)
-        {
-            var dataRecordParameter = Expression.Parameter(typeof(IDataRecord), "dataRecord");
-            var mappingContextParameter = Expression.Parameter(typeof(MappingContext), "mappingContext");
-            var kType = selectKey.Body.Type;
-            var lType = select.Body.Type;
-            var groupingType = typeof(LineGrouping<,>).MakeGenericType(kType, lType);
-            var groupingCtor = groupingType.GetConstructor(new[] { kType, lType });
-            var invokeSelectKey = Expression.Invoke(selectKey, dataRecordParameter, mappingContextParameter);
-            var invokeSelect = Expression.Invoke(select, dataRecordParameter, mappingContextParameter);
-            var newLineGrouping = Expression.New(groupingCtor, invokeSelectKey, invokeSelect);
-            var iGroupingType = typeof(IGrouping<,>).MakeGenericType(kType, lType);
-            var newIGrouping = Expression.Convert(newLineGrouping, iGroupingType);
-            var lambda = Expression.Lambda(newIGrouping, dataRecordParameter, mappingContextParameter);
-            return lambda;
-        }
-
-        /// <summary>
-        /// Cuts Expressions between CLR and SQL:
-        /// - Replaces Expressions moved to SQL by calls to DataRecord values reader
-        /// - SQL expressions are placed into Operands
-        /// - Return value creator is the returned Expression
-        /// </summary>
-        /// <param name="selectExpression"></param>
-        /// <param name="builderContext"></param>
-        protected virtual LambdaExpression CutOutOperands(Expression selectExpression, BuilderContext builderContext)
-        {
-            var dataRecordParameter = Expression.Parameter(typeof(IDataRecord), "dataRecord");
-            var mappingContextParameter = Expression.Parameter(typeof(MappingContext), "mappingContext");
-            var expression = CutOutOperands(selectExpression, dataRecordParameter, mappingContextParameter, builderContext);
-            return Expression.Lambda(expression, dataRecordParameter, mappingContextParameter);
-        }
-
-        /// <summary>
-        /// Cuts tiers in CLR / SQL.
-        /// The search for cut is top-down
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="dataRecordParameter"></param>
-        /// <param name="mappingContextParameter"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression CutOutOperands(Expression expression,
-                                                    ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
-                                                    BuilderContext builderContext)
-        {
-            // two options: we cut and return
-            if (GetCutOutOperand(expression, builderContext))
-            {
-                // "cutting out" means we replace the current expression by a SQL result reader
-                // before cutting out, we check that we're not cutting a table
-                // in this case, we convert it into its declared columns
-                if (expression is TableExpression)
-                {
-                    return GetOutputTableReader((TableExpression)expression, dataRecordParameter,
-                                                mappingContextParameter, builderContext);
-                }
-                // for EntitySets, we have a special EntitySet builder
-                if (expression is EntitySetExpression)
-                {
-                    return GetEntitySetBuilder((EntitySetExpression) expression, dataRecordParameter,
-                                               mappingContextParameter, builderContext);
-                    // TODO record EntitySet information, so we can initalize it with owner
-                }
-                // then, the result is registered
-                return GetOutputValueReader(expression, dataRecordParameter, mappingContextParameter, builderContext);
-            }
-            // or we dig down
-            var operands = new List<Expression>();
-            foreach (var operand in expression.GetOperands())
-            {
-                operands.Add(operand == null 
-                    ? null
-                    : CutOutOperands(operand, dataRecordParameter, mappingContextParameter, builderContext));
-            }
-            return expression.ChangeOperands(operands);
-        }
-
-        /// <summary>
-        /// Returns true if we must cut out the given Expression
-        /// </summary>
-        /// <param name="operand"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        private bool GetCutOutOperand(Expression operand, BuilderContext builderContext)
-        {
-            bool cutOut = false;
-            var tier = ExpressionQualifier.GetTier(operand);
-            if ((tier & ExpressionTier.Sql) != 0) // we can cut out only if the following expressiong can go to SQL
-            {
-                // then we have two possible strategies, load the DB at max, then it's always true from here
-                if (builderContext.QueryContext.MaximumDatabaseLoad)
-                    cutOut = true;
-                else // if no max database load then it's min: we switch to SQL only when CLR doesn't support the Expression
-                    cutOut = (tier & ExpressionTier.Clr) == 0;
-            }
-            return cutOut;
-        }
-
-        /// <summary>
-        /// Checks any expression for a TableExpression, and eventually replaces it with the convenient columns selection
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression CheckTableExpression(Expression expression, BuilderContext builderContext)
-        {
-            if (expression is TableExpression)
-                return GetSelectTableExpression((TableExpression)expression, builderContext);
-            return expression;
-        }
-
-        /// <summary>
-        /// Replaces a table selection by a selection of all mapped columns (ColumnExpressions).
-        /// ColumnExpressions will be replaced at a later time by the tier splitter
-        /// </summary>
-        /// <param name="tableExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual Expression GetSelectTableExpression(TableExpression tableExpression, BuilderContext builderContext)
-        {
-            var bindings = new List<MemberBinding>();
-            foreach (var columnExpression in RegisterAllColumns(tableExpression, builderContext))
-            {
-                var binding = Expression.Bind((MethodInfo) columnExpression.MemberInfo, columnExpression);
-                bindings.Add(binding);
-            }
-            var newExpression = Expression.New(tableExpression.Type);
-            return Expression.MemberInit(newExpression, bindings);
-        }
-
-        /// <summary>
-        /// Returns a queried type from a given expression, or null if no type can be found
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public virtual Type GetQueriedType(Expression expression)
-        {
-            return GetQueriedType(expression.Type);
-        }
-
-        /// <summary>
-        /// Extracts the type from the potentially generic type
-        /// </summary>
-        /// <param name="type"></param>
-        /// <returns></returns>
-        public virtual Type GetQueriedType(Type type)
-        {
-            if (typeof(IQueryable).IsAssignableFrom(type))
-            {
-                if (type.IsGenericType)
-                    return type.GetGenericArguments()[0];
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Returns the parameter name, if the Expression is a ParameterExpression, null otherwise
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public virtual string GetParameterName(Expression expression)
-        {
-            if (expression is ParameterExpression)
-                return ((ParameterExpression)expression).Name;
-            return null;
-        }
-
-        /// <summary>
-        /// Merges a parameter and a parameter list
-        /// </summary>
-        /// <param name="p1"></param>
-        /// <param name="p2"></param>
-        /// <returns></returns>
-        public virtual IList<Expression> MergeParameters(Expression p1, IEnumerable<Expression> p2)
-        {
-            var p = new List<Expression>();
-            p.Add(p1);
-            p.AddRange(p2);
-            return p;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Mapping;
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+using DbLinq.Data.Linq.Sugar.Implementation;
+using DbLinq.Factory;
+
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal partial class ExpressionDispatcher : IExpressionDispatcher
+    {
+        public IExpressionQualifier ExpressionQualifier { get; set; }
+        public IDataRecordReader DataRecordReader { get; set; }
+        public IDataMapper DataMapper { get; set; }
+
+        public ExpressionDispatcher()
+        {
+            ExpressionQualifier = ObjectFactory.Get<IExpressionQualifier>();
+            DataRecordReader = ObjectFactory.Get<IDataRecordReader>();
+            DataMapper = ObjectFactory.Get<IDataMapper>();
+        }
+
+        /// <summary>
+        /// Registers the first table. Extracts the table type and registeres the piece
+        /// </summary>
+        /// <param name="requestingExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual Expression CreateTableExpression(Expression requestingExpression, BuilderContext builderContext)
+        {
+            var callExpression = (MethodCallExpression)requestingExpression;
+            var requestingType = callExpression.Arguments[0].Type;
+            return CreateTable(GetQueriedType(requestingType), builderContext);
+        }
+
+        /// <summary>
+        /// Registers the first table. Extracts the table type and registeres the piece
+        /// </summary>
+        /// <param name="requestingExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual Expression GetTable(Expression requestingExpression, BuilderContext builderContext)
+        {
+            var callExpression = (MethodCallExpression)requestingExpression;
+            var requestingType = callExpression.Arguments[0].Type;
+            return CreateTable(GetQueriedType(requestingType), builderContext);
+        }
+
+        /// <summary>
+        /// Builds the upper select clause
+        /// </summary>
+        /// <param name="selectExpression"></param>
+        /// <param name="builderContext"></param>
+        public virtual void BuildSelect(Expression selectExpression, BuilderContext builderContext)
+        {
+            // collect columns, split Expression in
+            // - things we will do in CLR
+            // - things we will do in SQL
+            LambdaExpression lambdaSelectExpression;
+            // if we have a GroupByExpression, the result type is not the same:
+            // - we need to read what is going to be the Key expression
+            // - the final row generator builds a IGrouping<K,T> instead of T
+            var selectGroupExpression = selectExpression as GroupExpression;
+            if (selectGroupExpression != null)
+            {
+                lambdaSelectExpression = CutOutOperands(selectGroupExpression.GroupedExpression, builderContext);
+                var lambdaSelectKeyExpression = CutOutOperands(selectGroupExpression.KeyExpression, builderContext);
+                lambdaSelectExpression = BuildSelectGroup(lambdaSelectExpression, lambdaSelectKeyExpression,
+                                                          builderContext);
+            }
+            else
+                lambdaSelectExpression = CutOutOperands(selectExpression, builderContext);
+            // look for tables and use columns instead
+            // (this is done after cut, because the part that went to SQL must not be converted)
+            //selectExpression = selectExpression.Recurse(e => CheckTableExpression(e, builderContext));
+            // the last return value becomes the select, with CurrentScope
+            builderContext.CurrentSelect.Reader = lambdaSelectExpression;
+        }
+
+        /// <summary>
+        /// Builds the lambda as:
+        /// (dr, mc) => new LineGrouping<K,T>(selectKey(dr,mc),select(dr,mc))
+        /// </summary>
+        /// <param name="select"></param>
+        /// <param name="selectKey"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual LambdaExpression BuildSelectGroup(LambdaExpression select, LambdaExpression selectKey,
+                                                            BuilderContext builderContext)
+        {
+            var dataRecordParameter = Expression.Parameter(typeof(IDataRecord), "dataRecord");
+            var mappingContextParameter = Expression.Parameter(typeof(MappingContext), "mappingContext");
+            var kType = selectKey.Body.Type;
+            var lType = select.Body.Type;
+            var groupingType = typeof(LineGrouping<,>).MakeGenericType(kType, lType);
+            var groupingCtor = groupingType.GetConstructor(new[] { kType, lType });
+            var invokeSelectKey = Expression.Invoke(selectKey, dataRecordParameter, mappingContextParameter);
+            var invokeSelect = Expression.Invoke(select, dataRecordParameter, mappingContextParameter);
+            var newLineGrouping = Expression.New(groupingCtor, invokeSelectKey, invokeSelect);
+            var iGroupingType = typeof(IGrouping<,>).MakeGenericType(kType, lType);
+            var newIGrouping = Expression.Convert(newLineGrouping, iGroupingType);
+            var lambda = Expression.Lambda(newIGrouping, dataRecordParameter, mappingContextParameter);
+            return lambda;
+        }
+
+        /// <summary>
+        /// Cuts Expressions between CLR and SQL:
+        /// - Replaces Expressions moved to SQL by calls to DataRecord values reader
+        /// - SQL expressions are placed into Operands
+        /// - Return value creator is the returned Expression
+        /// </summary>
+        /// <param name="selectExpression"></param>
+        /// <param name="builderContext"></param>
+        protected virtual LambdaExpression CutOutOperands(Expression selectExpression, BuilderContext builderContext)
+        {
+            var dataRecordParameter = Expression.Parameter(typeof(IDataRecord), "dataRecord");
+            var mappingContextParameter = Expression.Parameter(typeof(MappingContext), "mappingContext");
+            var expression = CutOutOperands(selectExpression, dataRecordParameter, mappingContextParameter, builderContext);
+            return Expression.Lambda(expression, dataRecordParameter, mappingContextParameter);
+        }
+
+        /// <summary>
+        /// Cuts tiers in CLR / SQL.
+        /// The search for cut is top-down
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="dataRecordParameter"></param>
+        /// <param name="mappingContextParameter"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression CutOutOperands(Expression expression,
+                                                    ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
+                                                    BuilderContext builderContext)
+        {
+            // two options: we cut and return
+            if (GetCutOutOperand(expression, builderContext))
+            {
+                // "cutting out" means we replace the current expression by a SQL result reader
+                // before cutting out, we check that we're not cutting a table
+                // in this case, we convert it into its declared columns
+                if (expression is TableExpression)
+                {
+                    return GetOutputTableReader((TableExpression)expression, dataRecordParameter,
+                                                mappingContextParameter, builderContext);
+                }
+                // for EntitySets, we have a special EntitySet builder
+                if (expression is EntitySetExpression)
+                {
+                    return GetEntitySetBuilder((EntitySetExpression) expression, dataRecordParameter,
+                                               mappingContextParameter, builderContext);
+                    // TODO record EntitySet information, so we can initalize it with owner
+                }
+                // then, the result is registered
+                return GetOutputValueReader(expression, dataRecordParameter, mappingContextParameter, builderContext);
+            }
+            // or we dig down
+            var operands = new List<Expression>();
+            foreach (var operand in expression.GetOperands())
+            {
+                operands.Add(operand == null 
+                    ? null
+                    : CutOutOperands(operand, dataRecordParameter, mappingContextParameter, builderContext));
+            }
+            return expression.ChangeOperands(operands);
+        }
+
+        /// <summary>
+        /// Returns true if we must cut out the given Expression
+        /// </summary>
+        /// <param name="operand"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        private bool GetCutOutOperand(Expression operand, BuilderContext builderContext)
+        {
+            bool cutOut = false;
+            var tier = ExpressionQualifier.GetTier(operand);
+            if ((tier & ExpressionTier.Sql) != 0) // we can cut out only if the following expressiong can go to SQL
+            {
+                // then we have two possible strategies, load the DB at max, then it's always true from here
+                if (builderContext.QueryContext.MaximumDatabaseLoad)
+                    cutOut = true;
+                else // if no max database load then it's min: we switch to SQL only when CLR doesn't support the Expression
+                    cutOut = (tier & ExpressionTier.Clr) == 0;
+            }
+            return cutOut;
+        }
+
+        /// <summary>
+        /// Checks any expression for a TableExpression, and eventually replaces it with the convenient columns selection
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression CheckTableExpression(Expression expression, BuilderContext builderContext)
+        {
+            if (expression is TableExpression)
+                return GetSelectTableExpression((TableExpression)expression, builderContext);
+            return expression;
+        }
+
+        /// <summary>
+        /// Replaces a table selection by a selection of all mapped columns (ColumnExpressions).
+        /// ColumnExpressions will be replaced at a later time by the tier splitter
+        /// </summary>
+        /// <param name="tableExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual Expression GetSelectTableExpression(TableExpression tableExpression, BuilderContext builderContext)
+        {
+            var bindings = new List<MemberBinding>();
+            foreach (var columnExpression in RegisterAllColumns(tableExpression, builderContext))
+            {
+                var binding = Expression.Bind((MethodInfo) columnExpression.MemberInfo, columnExpression);
+                bindings.Add(binding);
+            }
+            var newExpression = Expression.New(tableExpression.Type);
+            return Expression.MemberInit(newExpression, bindings);
+        }
+
+        /// <summary>
+        /// Returns a queried type from a given expression, or null if no type can be found
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public virtual Type GetQueriedType(Expression expression)
+        {
+            return GetQueriedType(expression.Type);
+        }
+
+        /// <summary>
+        /// Extracts the type from the potentially generic type
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public virtual Type GetQueriedType(Type type)
+        {
+            if (typeof(IQueryable).IsAssignableFrom(type))
+            {
+                if (type.IsGenericType)
+                    return type.GetGenericArguments()[0];
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Returns the parameter name, if the Expression is a ParameterExpression, null otherwise
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public virtual string GetParameterName(Expression expression)
+        {
+            if (expression is ParameterExpression)
+                return ((ParameterExpression)expression).Name;
+            return null;
+        }
+
+        /// <summary>
+        /// Merges a parameter and a parameter list
+        /// </summary>
+        /// <param name="p1"></param>
+        /// <param name="p2"></param>
+        /// <returns></returns>
+        public virtual IList<Expression> MergeParameters(Expression p1, IEnumerable<Expression> p2)
+        {
+            var p = new List<Expression>();
+            p.Add(p1);
+            p.AddRange(p2);
+            return p;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionLanguageParser.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionLanguageParser.cs
@@ -1,171 +1,171 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    /// <summary>
-    /// Analyzes language patterns and replace them with standard expressions
-    /// </summary>
-    internal class ExpressionLanguageParser : IExpressionLanguageParser
-    {
-        public virtual Expression Parse(Expression expression, BuilderContext builderContext)
-        {
-            return expression.Recurse(e => Analyze(e, builderContext));
-        }
-
-        protected delegate Expression Analyzer(Expression expression);
-
-        protected IEnumerable<Analyzer> Analyzers;
-        private readonly object analyzersLock = new object();
-
-        protected virtual IEnumerable<Analyzer> GetAnalyzers()
-        {
-            lock (analyzersLock)
-            {
-                if (Analyzers == null)
-                {
-                    // man, this is the kind of line I'm proud of :)
-                    Analyzers = from method in GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
-                                let m = (Analyzer)Delegate.CreateDelegate(typeof(Analyzer), this, method, false)
-                                where m != null
-                                select m;
-                    Analyzers = Analyzers.ToList(); // result is faster from here
-                }
-                return Analyzers;
-            }
-        }
-
-        protected virtual Expression Analyze(Expression expression, BuilderContext builderContext)
-        {
-            foreach (var analyze in GetAnalyzers())
-            {
-                var e = analyze(expression);
-                if (e != null)
-                    return e;
-            }
-            return expression;
-        }
-
-        /// <summary>
-        /// Tests for Convert.ToBoolean()
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeConvertToBoolean(Expression expression)
-        {
-            var methodCallExpression = expression as MethodCallExpression;
-            if (methodCallExpression != null)
-            {
-                if (methodCallExpression.Method.DeclaringType.Name == "Convert")
-                {
-                    if (methodCallExpression.Method.Name == "ToBoolean")
-                        return Expression.Convert(methodCallExpression.Arguments[0], methodCallExpression.Type);
-                }
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Used to determine if the Expression is a VB CompareString
-        /// Returns an equivalent Expression if true
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        protected virtual Expression AnalyzeCompareString(Expression expression)
-        {
-            bool equals;
-            var testedExpression = GetComparedToZero(expression, out equals);
-            if (testedExpression != null)
-            {
-                var methodExpression = testedExpression as MethodCallExpression;
-                if (methodExpression != null
-                    && methodExpression.Method.DeclaringType.FullName == "Microsoft.VisualBasic.CompilerServices.Operators"
-                    && methodExpression.Method.Name == "CompareString")
-                {
-                    return Expression.Equal(methodExpression.Arguments[0], methodExpression.Arguments[1]);
-                }
-            }
-            return null;
-        }
-
-        protected virtual Expression AnalyzeLikeString(Expression expression)
-        {
-            var methodExpression = expression as MethodCallExpression;
-            if (methodExpression != null
-                && methodExpression.Method.DeclaringType.FullName == "Microsoft.VisualBasic.CompilerServices.LikeOperator"
-                && methodExpression.Method.Name == "LikeString")
-            {
-                var lambda = (Expression<Func<string, string, bool>>)((a, b) => a.StartsWith(b));
-                return Expression.Invoke(lambda, methodExpression.Arguments[0], methodExpression.Arguments[1]);
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Determines if an expression is a comparison to 0
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="equals">True if ==, False if !=</param>
-        /// <returns>The compared Expression or null</returns>
-        protected static Expression GetComparedToZero(Expression expression, out bool equals)
-        {
-            equals = expression.NodeType == ExpressionType.Equal;
-            if (equals || expression.NodeType == ExpressionType.NotEqual)
-            {
-                var binaryExpression = (BinaryExpression)expression;
-                if (IsZero(binaryExpression.Right))
-                    return binaryExpression.Left;
-                if (IsZero(binaryExpression.Left))
-                    return binaryExpression.Right;
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Determines if an expression is constant value 0
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        protected static bool IsZero(Expression expression)
-        {
-            if (expression.NodeType == ExpressionType.Constant)
-            {
-                var unaryExpression = (ConstantExpression)expression;
-                return (unaryExpression.Value as int? ?? 0) == 0; // you too, have fun with C# operators
-            }
-            return false;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    /// <summary>
+    /// Analyzes language patterns and replace them with standard expressions
+    /// </summary>
+    internal class ExpressionLanguageParser : IExpressionLanguageParser
+    {
+        public virtual Expression Parse(Expression expression, BuilderContext builderContext)
+        {
+            return expression.Recurse(e => Analyze(e, builderContext));
+        }
+
+        protected delegate Expression Analyzer(Expression expression);
+
+        protected IEnumerable<Analyzer> Analyzers;
+        private readonly object analyzersLock = new object();
+
+        protected virtual IEnumerable<Analyzer> GetAnalyzers()
+        {
+            lock (analyzersLock)
+            {
+                if (Analyzers == null)
+                {
+                    // man, this is the kind of line I'm proud of :)
+                    Analyzers = from method in GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
+                                let m = (Analyzer)Delegate.CreateDelegate(typeof(Analyzer), this, method, false)
+                                where m != null
+                                select m;
+                    Analyzers = Analyzers.ToList(); // result is faster from here
+                }
+                return Analyzers;
+            }
+        }
+
+        protected virtual Expression Analyze(Expression expression, BuilderContext builderContext)
+        {
+            foreach (var analyze in GetAnalyzers())
+            {
+                var e = analyze(expression);
+                if (e != null)
+                    return e;
+            }
+            return expression;
+        }
+
+        /// <summary>
+        /// Tests for Convert.ToBoolean()
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeConvertToBoolean(Expression expression)
+        {
+            var methodCallExpression = expression as MethodCallExpression;
+            if (methodCallExpression != null)
+            {
+                if (methodCallExpression.Method.DeclaringType.Name == "Convert")
+                {
+                    if (methodCallExpression.Method.Name == "ToBoolean")
+                        return Expression.Convert(methodCallExpression.Arguments[0], methodCallExpression.Type);
+                }
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Used to determine if the Expression is a VB CompareString
+        /// Returns an equivalent Expression if true
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        protected virtual Expression AnalyzeCompareString(Expression expression)
+        {
+            bool equals;
+            var testedExpression = GetComparedToZero(expression, out equals);
+            if (testedExpression != null)
+            {
+                var methodExpression = testedExpression as MethodCallExpression;
+                if (methodExpression != null
+                    && methodExpression.Method.DeclaringType.FullName == "Microsoft.VisualBasic.CompilerServices.Operators"
+                    && methodExpression.Method.Name == "CompareString")
+                {
+                    return Expression.Equal(methodExpression.Arguments[0], methodExpression.Arguments[1]);
+                }
+            }
+            return null;
+        }
+
+        protected virtual Expression AnalyzeLikeString(Expression expression)
+        {
+            var methodExpression = expression as MethodCallExpression;
+            if (methodExpression != null
+                && methodExpression.Method.DeclaringType.FullName == "Microsoft.VisualBasic.CompilerServices.LikeOperator"
+                && methodExpression.Method.Name == "LikeString")
+            {
+                var lambda = (Expression<Func<string, string, bool>>)((a, b) => a.StartsWith(b));
+                return Expression.Invoke(lambda, methodExpression.Arguments[0], methodExpression.Arguments[1]);
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Determines if an expression is a comparison to 0
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="equals">True if ==, False if !=</param>
+        /// <returns>The compared Expression or null</returns>
+        protected static Expression GetComparedToZero(Expression expression, out bool equals)
+        {
+            equals = expression.NodeType == ExpressionType.Equal;
+            if (equals || expression.NodeType == ExpressionType.NotEqual)
+            {
+                var binaryExpression = (BinaryExpression)expression;
+                if (IsZero(binaryExpression.Right))
+                    return binaryExpression.Left;
+                if (IsZero(binaryExpression.Left))
+                    return binaryExpression.Right;
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// Determines if an expression is constant value 0
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        protected static bool IsZero(Expression expression)
+        {
+            if (expression.NodeType == ExpressionType.Constant)
+            {
+                var unaryExpression = (ConstantExpression)expression;
+                return (unaryExpression.Value as int? ?? 0) == 0; // you too, have fun with C# operators
+            }
+            return false;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionOptimizer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionOptimizer.cs
@@ -1,237 +1,237 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    /// <summary>
-    /// Optimizes expressions (such as constant chains)
-    /// </summary>
-    internal class ExpressionOptimizer : IExpressionOptimizer
-    {
-        public virtual Expression Optimize(Expression expression, BuilderContext builderContext)
-        {
-            return expression.Recurse(e => Analyze(e, builderContext));
-        }
-
-        protected Expression Analyze(Expression expression, BuilderContext builderContext)
-        {
-            // small optimization
-            if (expression is ConstantExpression)
-                return expression;
-
-            expression = AnalyzeNull(expression, builderContext);
-            expression = AnalyzeNot(expression, builderContext);
-            expression = AnalyzeBinaryBoolean(expression, builderContext);
-            // constant optimization at last, because the previous optimizations may generate constant expressions
-            expression = AnalyzeConstant(expression, builderContext);
-            return expression;
-        }
-
-        private Expression AnalyzeBinaryBoolean(Expression expression, BuilderContext builderContext)
-        {
-            if (expression.Type != typeof(bool))
-                return expression;
-            var bin = expression as BinaryExpression;
-            if (bin == null)
-                return expression;
-            bool canOptimizeLeft = bin.Left.NodeType == ExpressionType.Constant && bin.Left.Type == typeof(bool);
-            bool canOptimizeRight = bin.Right.NodeType == ExpressionType.Constant && bin.Right.Type == typeof(bool);
-            if (canOptimizeLeft && canOptimizeRight)
-                return Expression.Constant(expression.Evaluate());
-            if (canOptimizeLeft || canOptimizeRight)
-                switch (expression.NodeType)
-                {
-                    case ExpressionType.AndAlso:
-                        if (canOptimizeLeft)
-                            if ((bool)bin.Left.Evaluate())
-                                return bin.Right;   // (TRUE and X) == X 
-                            else
-                                return bin.Left;    // (FALSE and X) == FALSE 
-                        if (canOptimizeRight)
-                            if ((bool)bin.Right.Evaluate())
-                                return bin.Left;    // (X and TRUE) == X 
-                            else
-                                return bin.Right;   // (X and FALSE) == FALSE
-                        break;
-                    case ExpressionType.OrElse:
-                        if (canOptimizeLeft)
-                            if ((bool)bin.Left.Evaluate())
-                                return bin.Left;    // (TRUE or X) == TRUE 
-                            else
-                                return bin.Right;   // (FALSE or X) == X 
-                        if (canOptimizeRight)
-                            if ((bool)bin.Right.Evaluate())
-                                return bin.Right;   // (X or TRUE) == TRUE 
-                            else
-                                return bin.Left;    // (X or FALSE) == X
-                        break;
-                    case ExpressionType.Equal:
-                        // TODO: this optimization should work for Unary Expression Too
-                        // this actually produce errors becouse of string based Sql generation
-                        canOptimizeLeft = canOptimizeLeft && bin.Right is BinaryExpression;
-                        if (canOptimizeLeft)
-                            if ((bool)bin.Left.Evaluate())
-                                return bin.Right;                   // (TRUE == X) == X 
-                            else
-                                return Expression.Not(bin.Right);   // (FALSE == X) == not X 
-                        canOptimizeRight = canOptimizeRight && bin.Left is BinaryExpression;
-                        // TODO: this optimization should work for Unary Expression Too
-                        // this actually produce errors becouse of string based Sql generation
-                        if (canOptimizeRight)
-                            if ((bool)bin.Right.Evaluate())
-                                return bin.Left;                    // (X == TRUE) == X 
-                            else
-                                return Expression.Not(bin.Left);    // (X == FALSE) == not X
-                        break;
-                    case ExpressionType.NotEqual:
-                        canOptimizeLeft = canOptimizeLeft && bin.Right is BinaryExpression;
-                        // TODO: this optimization should work for Unary Expression Too
-                        // this actually produce errors becouse of string based Sql generation
-                        if (canOptimizeLeft)
-                            if ((bool)bin.Left.Evaluate())
-                                return Expression.Not(bin.Right);   // (TRUE != X) == not X 
-                            else
-                                return bin.Right;                   // (FALSE != X) == X 
-                        canOptimizeRight = canOptimizeRight && bin.Left is BinaryExpression;
-                        // TODO: this optimization should work for Unary Expression Too
-                        // this actually produce errors becouse of string based Sql generation
-                        if (canOptimizeRight)
-                            if ((bool)bin.Right.Evaluate())
-                                return Expression.Not(bin.Left);    // (X != TRUE) == not X 
-                            else
-                                return bin.Left;                    // (X != FALSE) == X
-                        break;
-                }
-            return expression;
-        }
-
-        protected virtual Expression AnalyzeConstant(Expression expression, BuilderContext builderContext)
-        {
-            // we try to find a non-constant operand, and if we do, we won't change this expression
-            foreach (var operand in expression.GetOperands())
-            {
-                if (!(operand is ConstantExpression))
-                    return expression;
-            }
-            if (expression.NodeType == ExpressionType.Parameter)
-                return expression;
-            if (expression.NodeType == (ExpressionType)SpecialExpressionType.Like)
-                return expression;
-            // SETuse
-            // If the value of the first SpecialExpressionType change this 999 should change too
-            if ((short)expression.NodeType > 999)
-                return expression;
-            // now, we just simply return a constant with new value
-            try
-            {
-                var optimizedExpression = Expression.Constant(expression.Evaluate());
-                // sometimes, optimizing an expression changes its type, and we just can't allow this.
-                if (optimizedExpression.Type == expression.Type)
-                    return optimizedExpression;
-            }
-                // if we fail to evaluate the expression, then just return it
-            catch (ArgumentException) 
-            {
-                return expression;
-            }
-            return expression;
-        }
-
-        protected virtual Expression AnalyzeNot(Expression expression, BuilderContext builderContext)
-        {
-            if (expression.NodeType == ExpressionType.Not)
-            {
-                var notExpression = expression as UnaryExpression;
-                var subExpression = notExpression.Operand;
-                var subOperands = subExpression.GetOperands().ToList();
-                switch (subExpression.NodeType)
-                {
-                    case ExpressionType.Equal:
-                        return Expression.NotEqual(subOperands[0], subOperands[1]);
-                    case ExpressionType.GreaterThan:
-                        return Expression.LessThanOrEqual(subOperands[0], subOperands[1]);
-                    case ExpressionType.GreaterThanOrEqual:
-                        return Expression.LessThan(subOperands[0], subOperands[1]);
-                    case ExpressionType.LessThan:
-                        return Expression.GreaterThanOrEqual(subOperands[0], subOperands[1]);
-                    case ExpressionType.LessThanOrEqual:
-                        return Expression.GreaterThan(subOperands[0], subOperands[1]);
-                    case ExpressionType.Not:
-                        return subOperands[0]; // not not x -> x :)
-                    case ExpressionType.NotEqual:
-                        return Expression.Equal(subOperands[0], subOperands[1]);
-                    case (ExpressionType)SpecialExpressionType.IsNotNull: // is this dirty work?
-                        return new SpecialExpression(SpecialExpressionType.IsNull, subOperands);
-                    case (ExpressionType)SpecialExpressionType.IsNull:
-                        return new SpecialExpression(SpecialExpressionType.IsNotNull, subOperands);
-                }
-            }
-            return expression;
-        }
-
-        protected virtual Expression AnalyzeNull(Expression expression, BuilderContext builderContext)
-        {
-            // this first test only to speed up things a little
-            if (expression.NodeType == ExpressionType.Equal || expression.NodeType == ExpressionType.NotEqual)
-            {
-                var operands = expression.GetOperands().ToList();
-                var nullComparison = GetNullComparison(expression.NodeType, operands[0], operands[1]);
-                if (nullComparison == null)
-                    nullComparison = GetNullComparison(expression.NodeType, operands[1], operands[0]);
-                if (nullComparison != null)
-                    return nullComparison;
-                return expression;
-            }
-            return expression;
-        }
-
-        protected virtual Expression GetNullComparison(ExpressionType nodeType, Expression columnExpression, Expression nullExpression)
-        {
-            if (columnExpression is ColumnExpression || columnExpression is InputParameterExpression)
-            {
-                if (nullExpression is ConstantExpression && ((ConstantExpression)nullExpression).Value == null)
-                {
-                    switch (nodeType)
-                    {
-                        case ExpressionType.Equal:
-                            return new SpecialExpression(SpecialExpressionType.IsNull, columnExpression);
-                        case ExpressionType.NotEqual:
-                            return new SpecialExpression(SpecialExpressionType.IsNotNull, columnExpression);
-                    }
-                }
-            }
-            return null;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    /// <summary>
+    /// Optimizes expressions (such as constant chains)
+    /// </summary>
+    internal class ExpressionOptimizer : IExpressionOptimizer
+    {
+        public virtual Expression Optimize(Expression expression, BuilderContext builderContext)
+        {
+            return expression.Recurse(e => Analyze(e, builderContext));
+        }
+
+        protected Expression Analyze(Expression expression, BuilderContext builderContext)
+        {
+            // small optimization
+            if (expression is ConstantExpression)
+                return expression;
+
+            expression = AnalyzeNull(expression, builderContext);
+            expression = AnalyzeNot(expression, builderContext);
+            expression = AnalyzeBinaryBoolean(expression, builderContext);
+            // constant optimization at last, because the previous optimizations may generate constant expressions
+            expression = AnalyzeConstant(expression, builderContext);
+            return expression;
+        }
+
+        private Expression AnalyzeBinaryBoolean(Expression expression, BuilderContext builderContext)
+        {
+            if (expression.Type != typeof(bool))
+                return expression;
+            var bin = expression as BinaryExpression;
+            if (bin == null)
+                return expression;
+            bool canOptimizeLeft = bin.Left.NodeType == ExpressionType.Constant && bin.Left.Type == typeof(bool);
+            bool canOptimizeRight = bin.Right.NodeType == ExpressionType.Constant && bin.Right.Type == typeof(bool);
+            if (canOptimizeLeft && canOptimizeRight)
+                return Expression.Constant(expression.Evaluate());
+            if (canOptimizeLeft || canOptimizeRight)
+                switch (expression.NodeType)
+                {
+                    case ExpressionType.AndAlso:
+                        if (canOptimizeLeft)
+                            if ((bool)bin.Left.Evaluate())
+                                return bin.Right;   // (TRUE and X) == X 
+                            else
+                                return bin.Left;    // (FALSE and X) == FALSE 
+                        if (canOptimizeRight)
+                            if ((bool)bin.Right.Evaluate())
+                                return bin.Left;    // (X and TRUE) == X 
+                            else
+                                return bin.Right;   // (X and FALSE) == FALSE
+                        break;
+                    case ExpressionType.OrElse:
+                        if (canOptimizeLeft)
+                            if ((bool)bin.Left.Evaluate())
+                                return bin.Left;    // (TRUE or X) == TRUE 
+                            else
+                                return bin.Right;   // (FALSE or X) == X 
+                        if (canOptimizeRight)
+                            if ((bool)bin.Right.Evaluate())
+                                return bin.Right;   // (X or TRUE) == TRUE 
+                            else
+                                return bin.Left;    // (X or FALSE) == X
+                        break;
+                    case ExpressionType.Equal:
+                        // TODO: this optimization should work for Unary Expression Too
+                        // this actually produce errors becouse of string based Sql generation
+                        canOptimizeLeft = canOptimizeLeft && bin.Right is BinaryExpression;
+                        if (canOptimizeLeft)
+                            if ((bool)bin.Left.Evaluate())
+                                return bin.Right;                   // (TRUE == X) == X 
+                            else
+                                return Expression.Not(bin.Right);   // (FALSE == X) == not X 
+                        canOptimizeRight = canOptimizeRight && bin.Left is BinaryExpression;
+                        // TODO: this optimization should work for Unary Expression Too
+                        // this actually produce errors becouse of string based Sql generation
+                        if (canOptimizeRight)
+                            if ((bool)bin.Right.Evaluate())
+                                return bin.Left;                    // (X == TRUE) == X 
+                            else
+                                return Expression.Not(bin.Left);    // (X == FALSE) == not X
+                        break;
+                    case ExpressionType.NotEqual:
+                        canOptimizeLeft = canOptimizeLeft && bin.Right is BinaryExpression;
+                        // TODO: this optimization should work for Unary Expression Too
+                        // this actually produce errors becouse of string based Sql generation
+                        if (canOptimizeLeft)
+                            if ((bool)bin.Left.Evaluate())
+                                return Expression.Not(bin.Right);   // (TRUE != X) == not X 
+                            else
+                                return bin.Right;                   // (FALSE != X) == X 
+                        canOptimizeRight = canOptimizeRight && bin.Left is BinaryExpression;
+                        // TODO: this optimization should work for Unary Expression Too
+                        // this actually produce errors becouse of string based Sql generation
+                        if (canOptimizeRight)
+                            if ((bool)bin.Right.Evaluate())
+                                return Expression.Not(bin.Left);    // (X != TRUE) == not X 
+                            else
+                                return bin.Left;                    // (X != FALSE) == X
+                        break;
+                }
+            return expression;
+        }
+
+        protected virtual Expression AnalyzeConstant(Expression expression, BuilderContext builderContext)
+        {
+            // we try to find a non-constant operand, and if we do, we won't change this expression
+            foreach (var operand in expression.GetOperands())
+            {
+                if (!(operand is ConstantExpression))
+                    return expression;
+            }
+            if (expression.NodeType == ExpressionType.Parameter)
+                return expression;
+            if (expression.NodeType == (ExpressionType)SpecialExpressionType.Like)
+                return expression;
+            // SETuse
+            // If the value of the first SpecialExpressionType change this 999 should change too
+            if ((short)expression.NodeType > 999)
+                return expression;
+            // now, we just simply return a constant with new value
+            try
+            {
+                var optimizedExpression = Expression.Constant(expression.Evaluate());
+                // sometimes, optimizing an expression changes its type, and we just can't allow this.
+                if (optimizedExpression.Type == expression.Type)
+                    return optimizedExpression;
+            }
+                // if we fail to evaluate the expression, then just return it
+            catch (ArgumentException) 
+            {
+                return expression;
+            }
+            return expression;
+        }
+
+        protected virtual Expression AnalyzeNot(Expression expression, BuilderContext builderContext)
+        {
+            if (expression.NodeType == ExpressionType.Not)
+            {
+                var notExpression = expression as UnaryExpression;
+                var subExpression = notExpression.Operand;
+                var subOperands = subExpression.GetOperands().ToList();
+                switch (subExpression.NodeType)
+                {
+                    case ExpressionType.Equal:
+                        return Expression.NotEqual(subOperands[0], subOperands[1]);
+                    case ExpressionType.GreaterThan:
+                        return Expression.LessThanOrEqual(subOperands[0], subOperands[1]);
+                    case ExpressionType.GreaterThanOrEqual:
+                        return Expression.LessThan(subOperands[0], subOperands[1]);
+                    case ExpressionType.LessThan:
+                        return Expression.GreaterThanOrEqual(subOperands[0], subOperands[1]);
+                    case ExpressionType.LessThanOrEqual:
+                        return Expression.GreaterThan(subOperands[0], subOperands[1]);
+                    case ExpressionType.Not:
+                        return subOperands[0]; // not not x -> x :)
+                    case ExpressionType.NotEqual:
+                        return Expression.Equal(subOperands[0], subOperands[1]);
+                    case (ExpressionType)SpecialExpressionType.IsNotNull: // is this dirty work?
+                        return new SpecialExpression(SpecialExpressionType.IsNull, subOperands);
+                    case (ExpressionType)SpecialExpressionType.IsNull:
+                        return new SpecialExpression(SpecialExpressionType.IsNotNull, subOperands);
+                }
+            }
+            return expression;
+        }
+
+        protected virtual Expression AnalyzeNull(Expression expression, BuilderContext builderContext)
+        {
+            // this first test only to speed up things a little
+            if (expression.NodeType == ExpressionType.Equal || expression.NodeType == ExpressionType.NotEqual)
+            {
+                var operands = expression.GetOperands().ToList();
+                var nullComparison = GetNullComparison(expression.NodeType, operands[0], operands[1]);
+                if (nullComparison == null)
+                    nullComparison = GetNullComparison(expression.NodeType, operands[1], operands[0]);
+                if (nullComparison != null)
+                    return nullComparison;
+                return expression;
+            }
+            return expression;
+        }
+
+        protected virtual Expression GetNullComparison(ExpressionType nodeType, Expression columnExpression, Expression nullExpression)
+        {
+            if (columnExpression is ColumnExpression || columnExpression is InputParameterExpression)
+            {
+                if (nullExpression is ConstantExpression && ((ConstantExpression)nullExpression).Value == null)
+                {
+                    switch (nodeType)
+                    {
+                        case ExpressionType.Equal:
+                            return new SpecialExpression(SpecialExpressionType.IsNull, columnExpression);
+                        case ExpressionType.NotEqual:
+                            return new SpecialExpression(SpecialExpressionType.IsNotNull, columnExpression);
+                    }
+                }
+            }
+            return null;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionQualifier.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/ExpressionQualifier.cs
@@ -1,284 +1,284 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class ExpressionQualifier : IExpressionQualifier
-    {
-        /// <summary>
-        /// Returns Expression precedence. Higher value means lower precedence.
-        /// http://en.csharp-online.net/ECMA-334:_14.2.1_Operator_precedence_and_associativity
-        /// We added the Clase precedence, which is the lowest
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public ExpressionPrecedence GetPrecedence(Expression expression)
-        {
-            if (expression is SpecialExpression)
-            {
-                var specialNodeType = ((SpecialExpression)expression).SpecialNodeType;
-                switch (specialNodeType) // SETuse
-                {
-                case SpecialExpressionType.IsNull:
-                case SpecialExpressionType.IsNotNull:
-                    return ExpressionPrecedence.Equality;
-                case SpecialExpressionType.Concat:
-                    return ExpressionPrecedence.Additive;
-                case SpecialExpressionType.Like:
-                    return ExpressionPrecedence.Equality;
-                // the following are methods
-                case SpecialExpressionType.Min:
-                case SpecialExpressionType.Max:
-                case SpecialExpressionType.Sum:
-                case SpecialExpressionType.Average:
-                case SpecialExpressionType.Count:
-                case SpecialExpressionType.Exists:
-                case SpecialExpressionType.StringLength:
-                case SpecialExpressionType.ToUpper:
-                case SpecialExpressionType.ToLower:
-                case SpecialExpressionType.Substring:
-                case SpecialExpressionType.Trim:
-                case SpecialExpressionType.LTrim:
-                case SpecialExpressionType.RTrim:
-                case SpecialExpressionType.StringInsert:
-                case SpecialExpressionType.Replace:
-                case SpecialExpressionType.Remove:
-                case SpecialExpressionType.IndexOf:
-                case SpecialExpressionType.Year:
-                case SpecialExpressionType.Month:
-                case SpecialExpressionType.Day:
-                case SpecialExpressionType.Hour:
-                case SpecialExpressionType.Minute:
-                case SpecialExpressionType.Second:
-                case SpecialExpressionType.Millisecond:
-                case SpecialExpressionType.Now:
-                case SpecialExpressionType.Date:
-                case SpecialExpressionType.DateDiffInMilliseconds:
-                case SpecialExpressionType.Abs:
-                case SpecialExpressionType.Exp:
-                case SpecialExpressionType.Floor:
-                case SpecialExpressionType.Ln:
-                case SpecialExpressionType.Log:
-                case SpecialExpressionType.Pow:
-                case SpecialExpressionType.Round:
-                case SpecialExpressionType.Sign:
-                case SpecialExpressionType.Sqrt:
-                    return ExpressionPrecedence.Primary;
-                case SpecialExpressionType.In:
-                    return ExpressionPrecedence.Equality; // not sure for this one
-                default:
-                    throw Error.BadArgument("S0050: Unhandled SpecialExpressionType {0}", specialNodeType);
-                }
-            }
-            if (expression is SelectExpression)
-                return ExpressionPrecedence.Clause;
-            switch (expression.NodeType)
-            {
-            case ExpressionType.Add:
-            case ExpressionType.AddChecked:
-                return ExpressionPrecedence.Additive;
-            case ExpressionType.And:
-            case ExpressionType.AndAlso:
-                return ExpressionPrecedence.ConditionalAnd;
-            case ExpressionType.ArrayLength:
-            case ExpressionType.ArrayIndex:
-            case ExpressionType.Call:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Coalesce:
-                return ExpressionPrecedence.NullCoalescing;
-            case ExpressionType.Conditional:
-                return ExpressionPrecedence.Conditional;
-            case ExpressionType.Constant:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Convert:
-            case ExpressionType.ConvertChecked:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Divide:
-                return ExpressionPrecedence.Multiplicative;
-            case ExpressionType.Equal:
-                return ExpressionPrecedence.Equality;
-            case ExpressionType.ExclusiveOr:
-                return ExpressionPrecedence.LogicalXor;
-            case ExpressionType.GreaterThan:
-            case ExpressionType.GreaterThanOrEqual:
-                return ExpressionPrecedence.RelationalAndTypeTest;
-            case ExpressionType.Invoke:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Lambda:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.LeftShift:
-                return ExpressionPrecedence.Shift;
-            case ExpressionType.LessThan:
-            case ExpressionType.LessThanOrEqual:
-                return ExpressionPrecedence.RelationalAndTypeTest;
-            case ExpressionType.ListInit:
-            case ExpressionType.MemberAccess:
-            case ExpressionType.MemberInit:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Modulo:
-            case ExpressionType.Multiply:
-            case ExpressionType.MultiplyChecked:
-                return ExpressionPrecedence.Multiplicative;
-            case ExpressionType.Negate:
-            case ExpressionType.UnaryPlus:
-            case ExpressionType.NegateChecked:
-                return ExpressionPrecedence.Unary;
-            case ExpressionType.New:
-            case ExpressionType.NewArrayInit:
-            case ExpressionType.NewArrayBounds:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Not:
-                return ExpressionPrecedence.Unary;
-            case ExpressionType.NotEqual:
-                return ExpressionPrecedence.Equality;
-            case ExpressionType.Or:
-            case ExpressionType.OrElse:
-                return ExpressionPrecedence.ConditionalOr;
-            case ExpressionType.Parameter:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Power:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.Quote:
-                return ExpressionPrecedence.Primary;
-            case ExpressionType.RightShift:
-                return ExpressionPrecedence.Shift;
-            case ExpressionType.Subtract:
-            case ExpressionType.SubtractChecked:
-                return ExpressionPrecedence.Additive;
-            case ExpressionType.TypeAs:
-            case ExpressionType.TypeIs:
-                return ExpressionPrecedence.RelationalAndTypeTest;
-            }
-            return ExpressionPrecedence.Primary;
-        }
-
-        /// <summary>
-        /// Determines wether an expression can run in Clr or Sql
-        /// A request is valid is it starts with Clr only, followed by Any and ends (at bottom) with Sql.
-        /// With this, we can:
-        /// - Find the first point cut from Clr to Any
-        /// - Find the second point cut from Any to Sql
-        /// Select a strategy to load more or less the Clr or Sql engine
-        /// This is used only for SELECT clause
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public ExpressionTier GetTier(Expression expression)
-        {
-            if (expression is GroupExpression)
-                return ExpressionTier.Clr;
-            if (expression is SelectExpression)
-                return ExpressionTier.Sql;
-            if (expression is ColumnExpression)
-                return ExpressionTier.Sql;
-            if (expression is TableExpression)
-                return ExpressionTier.Sql;
-            if (expression is EntitySetExpression)
-                return ExpressionTier.Sql;
-            if (expression is InputParameterExpression)
-                return ExpressionTier.Sql;
-            if (expression is SpecialExpression)
-            {
-                var specialExpressionType = ((SpecialExpression)expression).SpecialNodeType;
-                switch (specialExpressionType) // SETuse
-                {
-                case SpecialExpressionType.IsNull:
-                case SpecialExpressionType.IsNotNull:
-                case SpecialExpressionType.Concat:
-                case SpecialExpressionType.StringLength:
-                case SpecialExpressionType.ToUpper:
-                case SpecialExpressionType.ToLower:
-                case SpecialExpressionType.Substring:
-                case SpecialExpressionType.Trim:
-                case SpecialExpressionType.LTrim:
-                case SpecialExpressionType.RTrim:
-                case SpecialExpressionType.StringInsert:
-                case SpecialExpressionType.Replace:
-                case SpecialExpressionType.Remove:
-                case SpecialExpressionType.IndexOf:
-                case SpecialExpressionType.Year:
-                case SpecialExpressionType.Month:
-                case SpecialExpressionType.Day:
-                case SpecialExpressionType.Hour:
-                case SpecialExpressionType.Minute:
-                case SpecialExpressionType.Second:
-                case SpecialExpressionType.Millisecond:
-                case SpecialExpressionType.Now:
-                case SpecialExpressionType.Date:
-                case SpecialExpressionType.DateDiffInMilliseconds:
-                case SpecialExpressionType.Abs:
-                case SpecialExpressionType.Exp:
-                case SpecialExpressionType.Floor:
-                case SpecialExpressionType.Ln:
-                case SpecialExpressionType.Log:
-                case SpecialExpressionType.Pow:
-                case SpecialExpressionType.Round:
-                case SpecialExpressionType.Sign:
-                case SpecialExpressionType.Sqrt:
-                    return ExpressionTier.Any;
-
-                case SpecialExpressionType.Like:
-                case SpecialExpressionType.Min:
-                case SpecialExpressionType.Max:
-                case SpecialExpressionType.Sum:
-                case SpecialExpressionType.Average:
-                case SpecialExpressionType.Count:
-                case SpecialExpressionType.In:
-                    return ExpressionTier.Sql; // don't tell anyone, but we can do it on both tiers, anyway this is significantly faster/efficient in SQL anyway
-                default:
-                    throw Error.BadArgument("S0157: Unhandled node type {0}", specialExpressionType);
-                }
-            }
-            switch (expression.NodeType)
-            {
-            case ExpressionType.ArrayLength:
-            case ExpressionType.ArrayIndex:
-            case ExpressionType.Call:
-            case ExpressionType.Convert:
-            case ExpressionType.ConvertChecked:
-            case ExpressionType.Invoke:
-            case ExpressionType.Lambda:
-            case ExpressionType.ListInit:
-            case ExpressionType.MemberAccess:
-            case ExpressionType.MemberInit:
-            case ExpressionType.New:
-            case ExpressionType.NewArrayInit:
-            case ExpressionType.NewArrayBounds:
-            case ExpressionType.Parameter:
-            case ExpressionType.SubtractChecked:
-            case ExpressionType.TypeAs:
-            case ExpressionType.TypeIs:
-                return ExpressionTier.Clr;
-            default:
-                return ExpressionTier.Any;
-            }
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class ExpressionQualifier : IExpressionQualifier
+    {
+        /// <summary>
+        /// Returns Expression precedence. Higher value means lower precedence.
+        /// http://en.csharp-online.net/ECMA-334:_14.2.1_Operator_precedence_and_associativity
+        /// We added the Clase precedence, which is the lowest
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public ExpressionPrecedence GetPrecedence(Expression expression)
+        {
+            if (expression is SpecialExpression)
+            {
+                var specialNodeType = ((SpecialExpression)expression).SpecialNodeType;
+                switch (specialNodeType) // SETuse
+                {
+                case SpecialExpressionType.IsNull:
+                case SpecialExpressionType.IsNotNull:
+                    return ExpressionPrecedence.Equality;
+                case SpecialExpressionType.Concat:
+                    return ExpressionPrecedence.Additive;
+                case SpecialExpressionType.Like:
+                    return ExpressionPrecedence.Equality;
+                // the following are methods
+                case SpecialExpressionType.Min:
+                case SpecialExpressionType.Max:
+                case SpecialExpressionType.Sum:
+                case SpecialExpressionType.Average:
+                case SpecialExpressionType.Count:
+                case SpecialExpressionType.Exists:
+                case SpecialExpressionType.StringLength:
+                case SpecialExpressionType.ToUpper:
+                case SpecialExpressionType.ToLower:
+                case SpecialExpressionType.Substring:
+                case SpecialExpressionType.Trim:
+                case SpecialExpressionType.LTrim:
+                case SpecialExpressionType.RTrim:
+                case SpecialExpressionType.StringInsert:
+                case SpecialExpressionType.Replace:
+                case SpecialExpressionType.Remove:
+                case SpecialExpressionType.IndexOf:
+                case SpecialExpressionType.Year:
+                case SpecialExpressionType.Month:
+                case SpecialExpressionType.Day:
+                case SpecialExpressionType.Hour:
+                case SpecialExpressionType.Minute:
+                case SpecialExpressionType.Second:
+                case SpecialExpressionType.Millisecond:
+                case SpecialExpressionType.Now:
+                case SpecialExpressionType.Date:
+                case SpecialExpressionType.DateDiffInMilliseconds:
+                case SpecialExpressionType.Abs:
+                case SpecialExpressionType.Exp:
+                case SpecialExpressionType.Floor:
+                case SpecialExpressionType.Ln:
+                case SpecialExpressionType.Log:
+                case SpecialExpressionType.Pow:
+                case SpecialExpressionType.Round:
+                case SpecialExpressionType.Sign:
+                case SpecialExpressionType.Sqrt:
+                    return ExpressionPrecedence.Primary;
+                case SpecialExpressionType.In:
+                    return ExpressionPrecedence.Equality; // not sure for this one
+                default:
+                    throw Error.BadArgument("S0050: Unhandled SpecialExpressionType {0}", specialNodeType);
+                }
+            }
+            if (expression is SelectExpression)
+                return ExpressionPrecedence.Clause;
+            switch (expression.NodeType)
+            {
+            case ExpressionType.Add:
+            case ExpressionType.AddChecked:
+                return ExpressionPrecedence.Additive;
+            case ExpressionType.And:
+            case ExpressionType.AndAlso:
+                return ExpressionPrecedence.ConditionalAnd;
+            case ExpressionType.ArrayLength:
+            case ExpressionType.ArrayIndex:
+            case ExpressionType.Call:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Coalesce:
+                return ExpressionPrecedence.NullCoalescing;
+            case ExpressionType.Conditional:
+                return ExpressionPrecedence.Conditional;
+            case ExpressionType.Constant:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Convert:
+            case ExpressionType.ConvertChecked:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Divide:
+                return ExpressionPrecedence.Multiplicative;
+            case ExpressionType.Equal:
+                return ExpressionPrecedence.Equality;
+            case ExpressionType.ExclusiveOr:
+                return ExpressionPrecedence.LogicalXor;
+            case ExpressionType.GreaterThan:
+            case ExpressionType.GreaterThanOrEqual:
+                return ExpressionPrecedence.RelationalAndTypeTest;
+            case ExpressionType.Invoke:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Lambda:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.LeftShift:
+                return ExpressionPrecedence.Shift;
+            case ExpressionType.LessThan:
+            case ExpressionType.LessThanOrEqual:
+                return ExpressionPrecedence.RelationalAndTypeTest;
+            case ExpressionType.ListInit:
+            case ExpressionType.MemberAccess:
+            case ExpressionType.MemberInit:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Modulo:
+            case ExpressionType.Multiply:
+            case ExpressionType.MultiplyChecked:
+                return ExpressionPrecedence.Multiplicative;
+            case ExpressionType.Negate:
+            case ExpressionType.UnaryPlus:
+            case ExpressionType.NegateChecked:
+                return ExpressionPrecedence.Unary;
+            case ExpressionType.New:
+            case ExpressionType.NewArrayInit:
+            case ExpressionType.NewArrayBounds:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Not:
+                return ExpressionPrecedence.Unary;
+            case ExpressionType.NotEqual:
+                return ExpressionPrecedence.Equality;
+            case ExpressionType.Or:
+            case ExpressionType.OrElse:
+                return ExpressionPrecedence.ConditionalOr;
+            case ExpressionType.Parameter:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Power:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.Quote:
+                return ExpressionPrecedence.Primary;
+            case ExpressionType.RightShift:
+                return ExpressionPrecedence.Shift;
+            case ExpressionType.Subtract:
+            case ExpressionType.SubtractChecked:
+                return ExpressionPrecedence.Additive;
+            case ExpressionType.TypeAs:
+            case ExpressionType.TypeIs:
+                return ExpressionPrecedence.RelationalAndTypeTest;
+            }
+            return ExpressionPrecedence.Primary;
+        }
+
+        /// <summary>
+        /// Determines wether an expression can run in Clr or Sql
+        /// A request is valid is it starts with Clr only, followed by Any and ends (at bottom) with Sql.
+        /// With this, we can:
+        /// - Find the first point cut from Clr to Any
+        /// - Find the second point cut from Any to Sql
+        /// Select a strategy to load more or less the Clr or Sql engine
+        /// This is used only for SELECT clause
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public ExpressionTier GetTier(Expression expression)
+        {
+            if (expression is GroupExpression)
+                return ExpressionTier.Clr;
+            if (expression is SelectExpression)
+                return ExpressionTier.Sql;
+            if (expression is ColumnExpression)
+                return ExpressionTier.Sql;
+            if (expression is TableExpression)
+                return ExpressionTier.Sql;
+            if (expression is EntitySetExpression)
+                return ExpressionTier.Sql;
+            if (expression is InputParameterExpression)
+                return ExpressionTier.Sql;
+            if (expression is SpecialExpression)
+            {
+                var specialExpressionType = ((SpecialExpression)expression).SpecialNodeType;
+                switch (specialExpressionType) // SETuse
+                {
+                case SpecialExpressionType.IsNull:
+                case SpecialExpressionType.IsNotNull:
+                case SpecialExpressionType.Concat:
+                case SpecialExpressionType.StringLength:
+                case SpecialExpressionType.ToUpper:
+                case SpecialExpressionType.ToLower:
+                case SpecialExpressionType.Substring:
+                case SpecialExpressionType.Trim:
+                case SpecialExpressionType.LTrim:
+                case SpecialExpressionType.RTrim:
+                case SpecialExpressionType.StringInsert:
+                case SpecialExpressionType.Replace:
+                case SpecialExpressionType.Remove:
+                case SpecialExpressionType.IndexOf:
+                case SpecialExpressionType.Year:
+                case SpecialExpressionType.Month:
+                case SpecialExpressionType.Day:
+                case SpecialExpressionType.Hour:
+                case SpecialExpressionType.Minute:
+                case SpecialExpressionType.Second:
+                case SpecialExpressionType.Millisecond:
+                case SpecialExpressionType.Now:
+                case SpecialExpressionType.Date:
+                case SpecialExpressionType.DateDiffInMilliseconds:
+                case SpecialExpressionType.Abs:
+                case SpecialExpressionType.Exp:
+                case SpecialExpressionType.Floor:
+                case SpecialExpressionType.Ln:
+                case SpecialExpressionType.Log:
+                case SpecialExpressionType.Pow:
+                case SpecialExpressionType.Round:
+                case SpecialExpressionType.Sign:
+                case SpecialExpressionType.Sqrt:
+                    return ExpressionTier.Any;
+
+                case SpecialExpressionType.Like:
+                case SpecialExpressionType.Min:
+                case SpecialExpressionType.Max:
+                case SpecialExpressionType.Sum:
+                case SpecialExpressionType.Average:
+                case SpecialExpressionType.Count:
+                case SpecialExpressionType.In:
+                    return ExpressionTier.Sql; // don't tell anyone, but we can do it on both tiers, anyway this is significantly faster/efficient in SQL anyway
+                default:
+                    throw Error.BadArgument("S0157: Unhandled node type {0}", specialExpressionType);
+                }
+            }
+            switch (expression.NodeType)
+            {
+            case ExpressionType.ArrayLength:
+            case ExpressionType.ArrayIndex:
+            case ExpressionType.Call:
+            case ExpressionType.Convert:
+            case ExpressionType.ConvertChecked:
+            case ExpressionType.Invoke:
+            case ExpressionType.Lambda:
+            case ExpressionType.ListInit:
+            case ExpressionType.MemberAccess:
+            case ExpressionType.MemberInit:
+            case ExpressionType.New:
+            case ExpressionType.NewArrayInit:
+            case ExpressionType.NewArrayBounds:
+            case ExpressionType.Parameter:
+            case ExpressionType.SubtractChecked:
+            case ExpressionType.TypeAs:
+            case ExpressionType.TypeIs:
+                return ExpressionTier.Clr;
+            default:
+                return ExpressionTier.Any;
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/LineGrouping.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/LineGrouping.cs
@@ -1,59 +1,59 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class LineGrouping<K, T> : IGrouping<K, T>
-    {
-        protected T Line { get; private set; }
-
-        public LineGrouping(K key, T line)
-        {
-            this.key = key;
-            Line = line;
-        }
-
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return ((IEnumerable<T>)this).GetEnumerator();
-        }
-
-        public IEnumerator<T> GetEnumerator()
-        {
-            yield return Line;
-        }
-
-        private readonly K key;
-        public K Key
-        {
-            get { return key; }
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class LineGrouping<K, T> : IGrouping<K, T>
+    {
+        protected T Line { get; private set; }
+
+        public LineGrouping(K key, T line)
+        {
+            this.key = key;
+            Line = line;
+        }
+
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return ((IEnumerable<T>)this).GetEnumerator();
+        }
+
+        public IEnumerator<T> GetEnumerator()
+        {
+            yield return Line;
+        }
+
+        private readonly K key;
+        public K Key
+        {
+            get { return key; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/PrequelAnalyzer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/PrequelAnalyzer.cs
@@ -1,64 +1,64 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    /// <summary>
-    /// Analyzes Expressions before translation to SQL, to help the translator
-    /// "Prequel" stands, of course, for "PreSQL"
-    /// </summary>
-    internal class PrequelAnalyzer : IPrequelAnalyzer
-    {
-        /// <summary>
-        /// Translates some generic CLR patterns to specific preSQL patterns
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        public virtual Expression Analyze(Expression expression, BuilderContext builderContext)
-        {
-            return expression.Recurse(e => AnalyzeExpression(e, builderContext));
-        }
-
-        protected virtual Expression AnalyzeExpression(Expression expression, BuilderContext builderContext)
-        {
-            // string Add --> Concat
-            var binaryExpression = expression as BinaryExpression;
-            if (expression.NodeType == ExpressionType.Add
-                && binaryExpression != null && typeof(string).IsAssignableFrom(binaryExpression.Left.Type))
-            {
-                return new SpecialExpression(SpecialExpressionType.Concat, binaryExpression.Left, binaryExpression.Right);
-            }
-            return expression;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    /// <summary>
+    /// Analyzes Expressions before translation to SQL, to help the translator
+    /// "Prequel" stands, of course, for "PreSQL"
+    /// </summary>
+    internal class PrequelAnalyzer : IPrequelAnalyzer
+    {
+        /// <summary>
+        /// Translates some generic CLR patterns to specific preSQL patterns
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        public virtual Expression Analyze(Expression expression, BuilderContext builderContext)
+        {
+            return expression.Recurse(e => AnalyzeExpression(e, builderContext));
+        }
+
+        protected virtual Expression AnalyzeExpression(Expression expression, BuilderContext builderContext)
+        {
+            // string Add --> Concat
+            var binaryExpression = expression as BinaryExpression;
+            if (expression.NodeType == ExpressionType.Add
+                && binaryExpression != null && typeof(string).IsAssignableFrom(binaryExpression.Left.Type))
+            {
+                return new SpecialExpression(SpecialExpressionType.Concat, binaryExpression.Left, binaryExpression.Right);
+            }
+            return expression;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryBuilder.Upsert.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryBuilder.Upsert.cs
@@ -1,342 +1,342 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data.Linq.Mapping;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    partial class QueryBuilder
-    {
-        protected class UpsertParameters
-        {
-            public MetaTable Table;
-            public readonly IList<ObjectInputParameterExpression> InputParameters = new List<ObjectInputParameterExpression>();
-            public readonly IList<ObjectOutputParameterExpression> OutputParameters = new List<ObjectOutputParameterExpression>();
-            public readonly IList<ObjectInputParameterExpression> PKParameters = new List<ObjectInputParameterExpression>();
-            public readonly IList<SqlStatement> InputColumns = new List<SqlStatement>();
-            public readonly IList<SqlStatement> InputValues = new List<SqlStatement>();
-            public readonly IList<SqlStatement> OutputColumns = new List<SqlStatement>();
-            public readonly IList<SqlStatement> OutputValues = new List<SqlStatement>();
-            public readonly IList<SqlStatement> OutputExpressions = new List<SqlStatement>();
-            public readonly IList<SqlStatement> AutoPKColumns = new List<SqlStatement>();
-            public readonly IList<SqlStatement> InputPKColumns = new List<SqlStatement>();
-            public readonly IList<SqlStatement> InputPKValues = new List<SqlStatement>();
-            public readonly IList<SqlStatement> PKColumns = new List<SqlStatement>();
-            public readonly IList<SqlStatement> PKValues = new List<SqlStatement>();
-        }
-
-        // SQLite:
-        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, Expression = null
-        // INSERT INTO main.Products (CategoryID, Discontinued, ProductName, QuantityPerUnit) 
-        //                  VALUES (@P1, @P2, @P3, @P4) ;SELECT last_insert_rowid()
-        //
-        // Ingres:
-        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, 
-        //                       Expression = "next value for \"linquser\".\"products_seq\"")]
-        // INSERT INTO linquser.products (categoryid, discontinued, productid, productname, quantityperunit) 
-        //                  VALUES ($param_000001_param$, $param_000002_param$, 
-        //                          next value for "linquser"."products_seq", $param_000004_param$, $param_000005_param$) 
-        //
-        // Oracle:
-        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, Expression = null
-        // BEGIN 
-        // INSERT INTO NORTHWIND."Products" ("CategoryID", "Discontinued", "ProductID", "ProductName", "QuantityPerUnit") 
-        //                  VALUES (:P1, :P2, NORTHWIND."Products_SEQ".NextVal, :P4, :P5)
-        //               ;SELECT NORTHWIND."Products_SEQ".CurrVal INTO :P3 FROM DUAL; END;
-        //
-        // PostgreSQL:
-        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, Expression = "nextval('\"Products_ProductID_seq\"')"
-        // INSERT INTO public."Products" ("CategoryID", "Discontinued", "ProductName", "QuantityPerUnit") 
-        //                  VALUES (:P1, :P2, :P3, :P4) 
-        //               ;SELECT currval('"Products_ProductID_seq"')
-        //
-        // SQL Server (bogus):
-        // IsPrimaryKey = true, IsDbGenerated = true
-        // INSERT INTO [dbo].[Products] (, , , ) VALUES (@P1, @P2, @P3, @P4) 
-        //                  ; SELECT @@IDENTITY
-        //
-        // Column:               default --> use value
-        //          PK: Expression !null --> use parameter (Oracle is wrong here)
-        //              Expression  null --> ignore
-        // SQL: wrap clause with PK information
-
-
-        /// <summary>
-        /// Creates a query for insertion
-        /// </summary>
-        /// <param name="objectToInsert"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public UpsertQuery GetInsertQuery(object objectToInsert, QueryContext queryContext)
-        {
-            // TODO: cache
-            var upsertParameters = GetUpsertParameters(objectToInsert, false, null, queryContext);
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var insertSql = sqlProvider.GetInsert(
-                sqlProvider.GetTable(upsertParameters.Table.TableName),
-                upsertParameters.InputColumns,
-                upsertParameters.InputValues);
-            var insertIdSql = sqlProvider.GetInsertIds(
-                sqlProvider.GetTable(upsertParameters.Table.TableName),
-                upsertParameters.AutoPKColumns,
-                upsertParameters.PKColumns,
-                upsertParameters.PKValues,
-                upsertParameters.OutputColumns,
-                upsertParameters.OutputValues,
-                upsertParameters.OutputExpressions);
-            return new UpsertQuery(queryContext.DataContext, insertSql, insertIdSql, upsertParameters.InputParameters, upsertParameters.OutputParameters, upsertParameters.PKParameters);
-        }
-
-        protected enum ParameterType
-        {
-            Input,
-            InputPK,
-            Output,
-            AutoSync
-        }
-
-        /// <summary>
-        /// Gets values for insert/update
-        /// </summary>
-        /// <param name="objectToUpsert"></param>
-        /// <param name="queryContext"></param>
-        /// <param name="update"></param>
-        /// <param name="modifiedMembers"></param>
-        /// <returns></returns>
-        protected virtual UpsertParameters GetUpsertParameters(object objectToUpsert, bool update, IList<MemberInfo> modifiedMembers, QueryContext queryContext)
-        {
-            var rowType = objectToUpsert.GetType();
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var upsertParameters = new UpsertParameters
-                                       {
-                                           Table = queryContext.DataContext.Mapping.GetTable(rowType)
-                                       };
-            foreach (var dataMember in upsertParameters.Table.RowType.PersistentDataMembers)
-            {
-                var column = sqlProvider.GetColumn(dataMember.MappedName);
-                ParameterType type = GetParameterType(objectToUpsert, dataMember, update, update ? AutoSync.OnUpdate : AutoSync.OnInsert);
-                var memberInfo = dataMember.Member;
-                // if the column is generated AND not specified, we may have:
-                // - an explicit generation (Expression property is not null, so we add the column)
-                // - an implicit generation (Expression property is null
-                // in all cases, we want to get the value back
-
-                var getter = (Expression<Func<object, object>>)(o => memberInfo.GetMemberValue(o));
-                var inputParameter = new ObjectInputParameterExpression(
-                    getter,
-                    memberInfo.GetMemberType(), dataMember.Name);
-                if (dataMember.IsPrimaryKey && (! dataMember.IsDbGenerated))
-                {
-                    upsertParameters.PKColumns.Add(column);
-                    upsertParameters.PKParameters.Add(inputParameter);
-                    upsertParameters.PKValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
-                }
-
-                if (type == ParameterType.Output)
-                {
-                    if (dataMember.Expression != null)
-                    {
-                        upsertParameters.InputColumns.Add(column);
-                        upsertParameters.InputValues.Add(dataMember.Expression);
-                    }
-                    var setter = (Expression<Action<object, object>>)((o, v) => memberInfo.SetMemberValue(o, v));
-                    var outputParameter = new ObjectOutputParameterExpression(setter,
-                                                                              memberInfo.GetMemberType(),
-                                                                              dataMember.Name);
-
-                    if ((dataMember.IsPrimaryKey) && (dataMember.IsDbGenerated))
-                        upsertParameters.AutoPKColumns.Add(column);
-
-                    upsertParameters.OutputColumns.Add(column);
-                    upsertParameters.OutputParameters.Add(outputParameter);
-                    upsertParameters.OutputValues.Add(sqlProvider.GetParameterName(outputParameter.Alias));
-                    upsertParameters.OutputExpressions.Add(dataMember.Expression);
-                }
-                else // standard column
-                {
-                    if (type == ParameterType.InputPK)
-                    {
-                        upsertParameters.InputPKColumns.Add(column);
-                        upsertParameters.InputPKValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
-                        upsertParameters.InputParameters.Add(inputParameter);
-                    }
-                    // for a standard column, we keep it only if modifiedMembers contains the specified memberInfo
-                    // caution: this makes the cache harder to maintain
-                    else if (modifiedMembers == null || modifiedMembers.Contains(memberInfo))
-                    {
-                        upsertParameters.InputColumns.Add(column);
-                        upsertParameters.InputValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
-                        upsertParameters.InputParameters.Add(inputParameter);
-                    }
-
-                    if (type == ParameterType.AutoSync)
-                    {
-                        var setter = (Expression<Action<object, object>>)((o, v) => memberInfo.SetMemberValue(o, v));
-                        var outputParameter = new ObjectOutputParameterExpression(setter,
-                                                                                  memberInfo.GetMemberType(),
-                                                                                  dataMember.Name);
-                        upsertParameters.OutputColumns.Add(column);
-                        upsertParameters.OutputParameters.Add(outputParameter);
-                        upsertParameters.OutputValues.Add(sqlProvider.GetParameterName(outputParameter.Alias));
-                        upsertParameters.OutputExpressions.Add(dataMember.Expression);
-                    }
-                }
-            }
-            return upsertParameters;
-        }
-
-        /// <summary>
-        /// Provides the parameter type for a given data member
-        /// </summary>
-        /// <param name="objectToUpsert"></param>
-        /// <param name="dataMember"></param>
-        /// <param name="update"></param>
-        /// <returns></returns>
-        protected virtual ParameterType GetParameterType(object objectToUpsert, MetaDataMember dataMember, bool update, AutoSync autoSync)
-        {
-            var memberInfo = dataMember.Member;
-            // the deal with columns is:
-            // PK only:  criterion for INSERT, criterion for UPDATE
-            // PK+GEN:   implicit/criterion for INSERT, criterion for UPDATE
-            // GEN only: implicit for both
-            // -:        explicit for both
-            //
-            // explicit is input,
-            // implicit is output, 
-            // criterion is input PK
-            ParameterType type;
-            if (dataMember.IsPrimaryKey)
-            {
-                if (update)
-                    type = ParameterType.InputPK;
-                else
-                {
-                    if (dataMember.IsDbGenerated)
-                    {
-                        if (IsSpecified(objectToUpsert, memberInfo))
-                            type = ParameterType.Input;
-                        else
-                            type = ParameterType.Output;
-                    }
-                    else
-                        type = ParameterType.Input;
-                }
-            }
-            else
-            {
-                if (dataMember.IsDbGenerated)
-                    type = ParameterType.Output;
-				else if ((dataMember.AutoSync == AutoSync.Always) || (dataMember.AutoSync == autoSync))
-					type = ParameterType.AutoSync;
-                else
-					type = ParameterType.Input;
-            }
-            return type;
-        }
-
-        /// <summary>
-        /// Determines if a property is different from its default value
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="memberInfo"></param>
-        /// <returns></returns>
-        protected virtual bool IsSpecified(object target, MemberInfo memberInfo)
-        {
-            object value = memberInfo.GetMemberValue(target);
-            if (value == null)
-                return false;
-            if (Equals(value, TypeConvert.GetDefault(memberInfo.GetMemberType())))
-                return false;
-            return true;
-        }
-
-        /// <summary>
-        /// Creates or gets an UPDATE query
-        /// </summary>
-        /// <param name="objectToUpdate"></param>
-        /// <param name="modifiedMembers">List of modified members, or NULL</param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public UpsertQuery GetUpdateQuery(object objectToUpdate, IList<MemberInfo> modifiedMembers, QueryContext queryContext)
-        {
-            var upsertParameters = GetUpsertParameters(objectToUpdate, true, modifiedMembers, queryContext);
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var updateSql = sqlProvider.GetUpdate(sqlProvider.GetTable(upsertParameters.Table.TableName),
-                upsertParameters.InputColumns, upsertParameters.InputValues,
-                upsertParameters.OutputValues, upsertParameters.OutputExpressions,
-                upsertParameters.InputPKColumns, upsertParameters.InputPKValues
-                );
-            var insertIdSql = (upsertParameters.OutputValues.Count == 0) ? "" :
-                    sqlProvider.GetInsertIds(
-                sqlProvider.GetTable(upsertParameters.Table.TableName),
-                upsertParameters.AutoPKColumns,
-                upsertParameters.PKColumns,
-                upsertParameters.PKValues,
-                upsertParameters.OutputColumns,
-                upsertParameters.OutputValues,
-                upsertParameters.OutputExpressions);
-            return new UpsertQuery(queryContext.DataContext, updateSql, insertIdSql, upsertParameters.InputParameters, upsertParameters.OutputParameters, upsertParameters.PKParameters);
-        }
-
-        /// <summary>
-        /// Creates or gets a DELETE query
-        /// </summary>
-        /// <param name="objectToDelete"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public DeleteQuery GetDeleteQuery(object objectToDelete, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var rowType = objectToDelete.GetType();
-            var table = queryContext.DataContext.Mapping.GetTable(rowType);
-            var deleteParameters = new List<ObjectInputParameterExpression>();
-            var pkColumns = new List<SqlStatement>();
-            var pkValues = new List<SqlStatement>();
-            foreach (var pkMember in table.RowType.IdentityMembers)
-            {
-                var memberInfo = pkMember.Member;
-                var getter = (Expression<Func<object, object>>)(o => memberInfo.GetMemberValue(o));
-                var inputParameter = new ObjectInputParameterExpression(
-                    getter,
-                    memberInfo.GetMemberType(), pkMember.Name);
-                var column = sqlProvider.GetColumn(pkMember.MappedName);
-                pkColumns.Add(column);
-                pkValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
-                deleteParameters.Add(inputParameter);
-            }
-            var deleteSql = sqlProvider.GetDelete(sqlProvider.GetTable(table.TableName), pkColumns, pkValues);
-            return new DeleteQuery(queryContext.DataContext, deleteSql, deleteParameters);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data.Linq.Mapping;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    partial class QueryBuilder
+    {
+        protected class UpsertParameters
+        {
+            public MetaTable Table;
+            public readonly IList<ObjectInputParameterExpression> InputParameters = new List<ObjectInputParameterExpression>();
+            public readonly IList<ObjectOutputParameterExpression> OutputParameters = new List<ObjectOutputParameterExpression>();
+            public readonly IList<ObjectInputParameterExpression> PKParameters = new List<ObjectInputParameterExpression>();
+            public readonly IList<SqlStatement> InputColumns = new List<SqlStatement>();
+            public readonly IList<SqlStatement> InputValues = new List<SqlStatement>();
+            public readonly IList<SqlStatement> OutputColumns = new List<SqlStatement>();
+            public readonly IList<SqlStatement> OutputValues = new List<SqlStatement>();
+            public readonly IList<SqlStatement> OutputExpressions = new List<SqlStatement>();
+            public readonly IList<SqlStatement> AutoPKColumns = new List<SqlStatement>();
+            public readonly IList<SqlStatement> InputPKColumns = new List<SqlStatement>();
+            public readonly IList<SqlStatement> InputPKValues = new List<SqlStatement>();
+            public readonly IList<SqlStatement> PKColumns = new List<SqlStatement>();
+            public readonly IList<SqlStatement> PKValues = new List<SqlStatement>();
+        }
+
+        // SQLite:
+        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, Expression = null
+        // INSERT INTO main.Products (CategoryID, Discontinued, ProductName, QuantityPerUnit) 
+        //                  VALUES (@P1, @P2, @P3, @P4) ;SELECT last_insert_rowid()
+        //
+        // Ingres:
+        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, 
+        //                       Expression = "next value for \"linquser\".\"products_seq\"")]
+        // INSERT INTO linquser.products (categoryid, discontinued, productid, productname, quantityperunit) 
+        //                  VALUES ($param_000001_param$, $param_000002_param$, 
+        //                          next value for "linquser"."products_seq", $param_000004_param$, $param_000005_param$) 
+        //
+        // Oracle:
+        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, Expression = null
+        // BEGIN 
+        // INSERT INTO NORTHWIND."Products" ("CategoryID", "Discontinued", "ProductID", "ProductName", "QuantityPerUnit") 
+        //                  VALUES (:P1, :P2, NORTHWIND."Products_SEQ".NextVal, :P4, :P5)
+        //               ;SELECT NORTHWIND."Products_SEQ".CurrVal INTO :P3 FROM DUAL; END;
+        //
+        // PostgreSQL:
+        // IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, Expression = "nextval('\"Products_ProductID_seq\"')"
+        // INSERT INTO public."Products" ("CategoryID", "Discontinued", "ProductName", "QuantityPerUnit") 
+        //                  VALUES (:P1, :P2, :P3, :P4) 
+        //               ;SELECT currval('"Products_ProductID_seq"')
+        //
+        // SQL Server (bogus):
+        // IsPrimaryKey = true, IsDbGenerated = true
+        // INSERT INTO [dbo].[Products] (, , , ) VALUES (@P1, @P2, @P3, @P4) 
+        //                  ; SELECT @@IDENTITY
+        //
+        // Column:               default --> use value
+        //          PK: Expression !null --> use parameter (Oracle is wrong here)
+        //              Expression  null --> ignore
+        // SQL: wrap clause with PK information
+
+
+        /// <summary>
+        /// Creates a query for insertion
+        /// </summary>
+        /// <param name="objectToInsert"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public UpsertQuery GetInsertQuery(object objectToInsert, QueryContext queryContext)
+        {
+            // TODO: cache
+            var upsertParameters = GetUpsertParameters(objectToInsert, false, null, queryContext);
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var insertSql = sqlProvider.GetInsert(
+                sqlProvider.GetTable(upsertParameters.Table.TableName),
+                upsertParameters.InputColumns,
+                upsertParameters.InputValues);
+            var insertIdSql = sqlProvider.GetInsertIds(
+                sqlProvider.GetTable(upsertParameters.Table.TableName),
+                upsertParameters.AutoPKColumns,
+                upsertParameters.PKColumns,
+                upsertParameters.PKValues,
+                upsertParameters.OutputColumns,
+                upsertParameters.OutputValues,
+                upsertParameters.OutputExpressions);
+            return new UpsertQuery(queryContext.DataContext, insertSql, insertIdSql, upsertParameters.InputParameters, upsertParameters.OutputParameters, upsertParameters.PKParameters);
+        }
+
+        protected enum ParameterType
+        {
+            Input,
+            InputPK,
+            Output,
+            AutoSync
+        }
+
+        /// <summary>
+        /// Gets values for insert/update
+        /// </summary>
+        /// <param name="objectToUpsert"></param>
+        /// <param name="queryContext"></param>
+        /// <param name="update"></param>
+        /// <param name="modifiedMembers"></param>
+        /// <returns></returns>
+        protected virtual UpsertParameters GetUpsertParameters(object objectToUpsert, bool update, IList<MemberInfo> modifiedMembers, QueryContext queryContext)
+        {
+            var rowType = objectToUpsert.GetType();
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var upsertParameters = new UpsertParameters
+                                       {
+                                           Table = queryContext.DataContext.Mapping.GetTable(rowType)
+                                       };
+            foreach (var dataMember in upsertParameters.Table.RowType.PersistentDataMembers)
+            {
+                var column = sqlProvider.GetColumn(dataMember.MappedName);
+                ParameterType type = GetParameterType(objectToUpsert, dataMember, update, update ? AutoSync.OnUpdate : AutoSync.OnInsert);
+                var memberInfo = dataMember.Member;
+                // if the column is generated AND not specified, we may have:
+                // - an explicit generation (Expression property is not null, so we add the column)
+                // - an implicit generation (Expression property is null
+                // in all cases, we want to get the value back
+
+                var getter = (Expression<Func<object, object>>)(o => memberInfo.GetMemberValue(o));
+                var inputParameter = new ObjectInputParameterExpression(
+                    getter,
+                    memberInfo.GetMemberType(), dataMember.Name);
+                if (dataMember.IsPrimaryKey && (! dataMember.IsDbGenerated))
+                {
+                    upsertParameters.PKColumns.Add(column);
+                    upsertParameters.PKParameters.Add(inputParameter);
+                    upsertParameters.PKValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
+                }
+
+                if (type == ParameterType.Output)
+                {
+                    if (dataMember.Expression != null)
+                    {
+                        upsertParameters.InputColumns.Add(column);
+                        upsertParameters.InputValues.Add(dataMember.Expression);
+                    }
+                    var setter = (Expression<Action<object, object>>)((o, v) => memberInfo.SetMemberValue(o, v));
+                    var outputParameter = new ObjectOutputParameterExpression(setter,
+                                                                              memberInfo.GetMemberType(),
+                                                                              dataMember.Name);
+
+                    if ((dataMember.IsPrimaryKey) && (dataMember.IsDbGenerated))
+                        upsertParameters.AutoPKColumns.Add(column);
+
+                    upsertParameters.OutputColumns.Add(column);
+                    upsertParameters.OutputParameters.Add(outputParameter);
+                    upsertParameters.OutputValues.Add(sqlProvider.GetParameterName(outputParameter.Alias));
+                    upsertParameters.OutputExpressions.Add(dataMember.Expression);
+                }
+                else // standard column
+                {
+                    if (type == ParameterType.InputPK)
+                    {
+                        upsertParameters.InputPKColumns.Add(column);
+                        upsertParameters.InputPKValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
+                        upsertParameters.InputParameters.Add(inputParameter);
+                    }
+                    // for a standard column, we keep it only if modifiedMembers contains the specified memberInfo
+                    // caution: this makes the cache harder to maintain
+                    else if (modifiedMembers == null || modifiedMembers.Contains(memberInfo))
+                    {
+                        upsertParameters.InputColumns.Add(column);
+                        upsertParameters.InputValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
+                        upsertParameters.InputParameters.Add(inputParameter);
+                    }
+
+                    if (type == ParameterType.AutoSync)
+                    {
+                        var setter = (Expression<Action<object, object>>)((o, v) => memberInfo.SetMemberValue(o, v));
+                        var outputParameter = new ObjectOutputParameterExpression(setter,
+                                                                                  memberInfo.GetMemberType(),
+                                                                                  dataMember.Name);
+                        upsertParameters.OutputColumns.Add(column);
+                        upsertParameters.OutputParameters.Add(outputParameter);
+                        upsertParameters.OutputValues.Add(sqlProvider.GetParameterName(outputParameter.Alias));
+                        upsertParameters.OutputExpressions.Add(dataMember.Expression);
+                    }
+                }
+            }
+            return upsertParameters;
+        }
+
+        /// <summary>
+        /// Provides the parameter type for a given data member
+        /// </summary>
+        /// <param name="objectToUpsert"></param>
+        /// <param name="dataMember"></param>
+        /// <param name="update"></param>
+        /// <returns></returns>
+        protected virtual ParameterType GetParameterType(object objectToUpsert, MetaDataMember dataMember, bool update, AutoSync autoSync)
+        {
+            var memberInfo = dataMember.Member;
+            // the deal with columns is:
+            // PK only:  criterion for INSERT, criterion for UPDATE
+            // PK+GEN:   implicit/criterion for INSERT, criterion for UPDATE
+            // GEN only: implicit for both
+            // -:        explicit for both
+            //
+            // explicit is input,
+            // implicit is output, 
+            // criterion is input PK
+            ParameterType type;
+            if (dataMember.IsPrimaryKey)
+            {
+                if (update)
+                    type = ParameterType.InputPK;
+                else
+                {
+                    if (dataMember.IsDbGenerated)
+                    {
+                        if (IsSpecified(objectToUpsert, memberInfo))
+                            type = ParameterType.Input;
+                        else
+                            type = ParameterType.Output;
+                    }
+                    else
+                        type = ParameterType.Input;
+                }
+            }
+            else
+            {
+                if (dataMember.IsDbGenerated)
+                    type = ParameterType.Output;
+				else if ((dataMember.AutoSync == AutoSync.Always) || (dataMember.AutoSync == autoSync))
+					type = ParameterType.AutoSync;
+                else
+					type = ParameterType.Input;
+            }
+            return type;
+        }
+
+        /// <summary>
+        /// Determines if a property is different from its default value
+        /// </summary>
+        /// <param name="target"></param>
+        /// <param name="memberInfo"></param>
+        /// <returns></returns>
+        protected virtual bool IsSpecified(object target, MemberInfo memberInfo)
+        {
+            object value = memberInfo.GetMemberValue(target);
+            if (value == null)
+                return false;
+            if (Equals(value, TypeConvert.GetDefault(memberInfo.GetMemberType())))
+                return false;
+            return true;
+        }
+
+        /// <summary>
+        /// Creates or gets an UPDATE query
+        /// </summary>
+        /// <param name="objectToUpdate"></param>
+        /// <param name="modifiedMembers">List of modified members, or NULL</param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public UpsertQuery GetUpdateQuery(object objectToUpdate, IList<MemberInfo> modifiedMembers, QueryContext queryContext)
+        {
+            var upsertParameters = GetUpsertParameters(objectToUpdate, true, modifiedMembers, queryContext);
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var updateSql = sqlProvider.GetUpdate(sqlProvider.GetTable(upsertParameters.Table.TableName),
+                upsertParameters.InputColumns, upsertParameters.InputValues,
+                upsertParameters.OutputValues, upsertParameters.OutputExpressions,
+                upsertParameters.InputPKColumns, upsertParameters.InputPKValues
+                );
+            var insertIdSql = (upsertParameters.OutputValues.Count == 0) ? "" :
+                    sqlProvider.GetInsertIds(
+                sqlProvider.GetTable(upsertParameters.Table.TableName),
+                upsertParameters.AutoPKColumns,
+                upsertParameters.PKColumns,
+                upsertParameters.PKValues,
+                upsertParameters.OutputColumns,
+                upsertParameters.OutputValues,
+                upsertParameters.OutputExpressions);
+            return new UpsertQuery(queryContext.DataContext, updateSql, insertIdSql, upsertParameters.InputParameters, upsertParameters.OutputParameters, upsertParameters.PKParameters);
+        }
+
+        /// <summary>
+        /// Creates or gets a DELETE query
+        /// </summary>
+        /// <param name="objectToDelete"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public DeleteQuery GetDeleteQuery(object objectToDelete, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var rowType = objectToDelete.GetType();
+            var table = queryContext.DataContext.Mapping.GetTable(rowType);
+            var deleteParameters = new List<ObjectInputParameterExpression>();
+            var pkColumns = new List<SqlStatement>();
+            var pkValues = new List<SqlStatement>();
+            foreach (var pkMember in table.RowType.IdentityMembers)
+            {
+                var memberInfo = pkMember.Member;
+                var getter = (Expression<Func<object, object>>)(o => memberInfo.GetMemberValue(o));
+                var inputParameter = new ObjectInputParameterExpression(
+                    getter,
+                    memberInfo.GetMemberType(), pkMember.Name);
+                var column = sqlProvider.GetColumn(pkMember.MappedName);
+                pkColumns.Add(column);
+                pkValues.Add(sqlProvider.GetParameterName(inputParameter.Alias));
+                deleteParameters.Add(inputParameter);
+            }
+            var deleteSql = sqlProvider.GetDelete(sqlProvider.GetTable(table.TableName), pkColumns, pkValues);
+            return new DeleteQuery(queryContext.DataContext, deleteSql, deleteParameters);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryBuilder.cs
@@ -1,481 +1,481 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Text.RegularExpressions;
-
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-using DbLinq.Factory;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    /// <summary>
-    /// Full query builder, with cache management
-    /// 1. Parses Linq Expression
-    /// 2. Generates SQL
-    /// </summary>
-    internal partial class QueryBuilder : IQueryBuilder
-    {
-        public IExpressionLanguageParser ExpressionLanguageParser { get; set; }
-        public IExpressionDispatcher ExpressionDispatcher { get; set; }
-        public IPrequelAnalyzer PrequelAnalyzer { get; set; }
-        public IExpressionOptimizer ExpressionOptimizer { get; set; }
-        public ISpecialExpressionTranslator SpecialExpressionTranslator { get; set; }
-        public ISqlBuilder SqlBuilder { get; set; }
-
-        public QueryBuilder()
-        {
-            ExpressionLanguageParser = ObjectFactory.Get<IExpressionLanguageParser>();
-            ExpressionDispatcher = ObjectFactory.Get<IExpressionDispatcher>();
-            PrequelAnalyzer = ObjectFactory.Get<IPrequelAnalyzer>();
-            ExpressionOptimizer = ObjectFactory.Get<IExpressionOptimizer>();
-            SpecialExpressionTranslator = ObjectFactory.Get<ISpecialExpressionTranslator>();
-            SqlBuilder = ObjectFactory.Get<ISqlBuilder>();
-        }
-
-        /// <summary>
-        /// Builds the ExpressionQuery:
-        /// - parses Expressions and builds row creator
-        /// - checks names unicity
-        /// </summary>
-        /// <param name="expressions"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        protected virtual ExpressionQuery BuildExpressionQuery(ExpressionChain expressions, QueryContext queryContext)
-        {
-            var builderContext = new BuilderContext(queryContext);
-            BuildExpressionQuery(expressions, builderContext);
-            CheckTablesAlias(builderContext);
-            CheckParametersAlias(builderContext);
-            return builderContext.ExpressionQuery;
-        }
-
-        /// <summary>
-        /// Finds all registered tables or columns with the given name.
-        /// We exclude parameter because they won't be prefixed/suffixed the same way (well, that's a guess, I hope it's a good one)
-        /// </summary>
-        /// <param name="name"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected virtual IList<Expression> FindExpressionsByName(string name, BuilderContext builderContext)
-        {
-            var expressions = new List<Expression>();
-            expressions.AddRange((from t in builderContext.EnumerateAllTables() where t.Alias == name select (Expression)t).Distinct());
-            expressions.AddRange(from c in builderContext.EnumerateScopeColumns() where c.Alias == name select (Expression)c);
-            return expressions;
-        }
-
-        protected virtual string MakeName(string aliasBase, int index, string anonymousBase, BuilderContext builderContext)
-        {
-            if (string.IsNullOrEmpty(aliasBase))
-                aliasBase = anonymousBase;
-            return string.Format("{0}{1}", aliasBase, index);
-        }
-
-        protected virtual string MakeTableName(string aliasBase, int index, BuilderContext builderContext)
-        {
-            return MakeName(aliasBase, index, "t", builderContext);
-        }
-
-        protected virtual string MakeParameterName(string aliasBase, int index, BuilderContext builderContext)
-        {
-            return MakeName(aliasBase, index, "p", builderContext);
-        }
-
-        /// <summary>
-        /// Give all non-aliased tables a name
-        /// </summary>
-        /// <param name="builderContext"></param>
-        protected virtual void CheckTablesAlias(BuilderContext builderContext)
-        {
-            var tables = builderContext.EnumerateAllTables().Distinct().ToList();
-            // just to be nice: if we have only one table involved, there's no need to alias it
-            if (tables.Count == 1)
-            {
-                tables[0].Alias = null;
-            }
-            else
-            {
-                foreach (var tableExpression in tables)
-                {
-                    // if no alias, or duplicate alias
-                    if (string.IsNullOrEmpty(tableExpression.Alias) ||
-                        FindExpressionsByName(tableExpression.Alias, builderContext).Count > 1)
-                    {
-                        int anonymousIndex = 0;
-                        var aliasBase = tableExpression.Alias;
-                        // we try to assign one until we have a unique alias
-                        do
-                        {
-                            tableExpression.Alias = MakeTableName(aliasBase, ++anonymousIndex, builderContext);
-                        } while (FindExpressionsByName(tableExpression.Alias, builderContext).Count != 1);
-                    }
-                }
-            }
-        }
-
-        protected virtual IList<InputParameterExpression> FindParametersByName(string name, BuilderContext builderContext)
-        {
-            return (from p in builderContext.ExpressionQuery.Parameters where p.Alias == name select p).ToList();
-        }
-
-        /// <summary>
-        /// Gives anonymous parameters a name and checks for names unicity
-        /// The fact of giving a nice name just helps for readability
-        /// </summary>
-        /// <param name="builderContext"></param>
-        protected virtual void CheckParametersAlias(BuilderContext builderContext)
-        {
-            foreach (var externalParameterExpression in builderContext.ExpressionQuery.Parameters)
-            {
-                if (string.IsNullOrEmpty(externalParameterExpression.Alias)
-                    || FindParametersByName(externalParameterExpression.Alias, builderContext).Count > 1)
-                {
-                    int anonymousIndex = 0;
-                    var aliasBase = externalParameterExpression.Alias;
-                    // we try to assign one until we have a unique alias
-                    do
-                    {
-                        externalParameterExpression.Alias = MakeTableName(aliasBase, ++anonymousIndex, builderContext);
-                    } while (FindParametersByName(externalParameterExpression.Alias, builderContext).Count > 1);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Builds and chains the provided Expressions
-        /// </summary>
-        /// <param name="expressions"></param>
-        /// <param name="builderContext"></param>
-        protected virtual void BuildExpressionQuery(ExpressionChain expressions, BuilderContext builderContext)
-        {
-            var previousExpression = ExpressionDispatcher.CreateTableExpression(expressions.Expressions[0], builderContext);
-            previousExpression = BuildExpressionQuery(expressions, previousExpression, builderContext);
-            BuildOffsetsAndLimits(builderContext);
-            // then prepare Parts for SQL translation
-            PrepareSqlOperands(builderContext);
-            // now, we optimize anything we can
-            OptimizeQuery(builderContext);
-            // finally, compile our object creation method
-            CompileRowCreator(builderContext);
-            // in the very end, we keep the SELECT clause
-            builderContext.ExpressionQuery.Select = builderContext.CurrentSelect;
-        }
-
-        /// <summary>
-        /// Builds the ExpressionQuery main Expression, given a Table (or projection) expression
-        /// </summary>
-        /// <param name="expressions"></param>
-        /// <param name="tableExpression"></param>
-        /// <param name="builderContext"></param>
-        /// <returns></returns>
-        protected Expression BuildExpressionQuery(ExpressionChain expressions, Expression tableExpression, BuilderContext builderContext)
-        {
-            tableExpression = ExpressionDispatcher.Analyze(expressions, tableExpression, builderContext);
-            ExpressionDispatcher.BuildSelect(tableExpression, builderContext);
-            return tableExpression;
-        }
-
-        public virtual SelectExpression BuildSelectExpression(ExpressionChain expressions, Expression tableExpression, BuilderContext builderContext)
-        {
-            BuildExpressionQuery(expressions, tableExpression, builderContext);
-            return builderContext.CurrentSelect;
-        }
-
-        /// <summary>
-        /// This is a hint for SQL generations
-        /// </summary>
-        /// <param name="builderContext"></param>
-        protected virtual void BuildOffsetsAndLimits(BuilderContext builderContext)
-        {
-            foreach (var selectExpression in builderContext.SelectExpressions)
-            {
-                if (selectExpression.Offset != null && selectExpression.Limit != null)
-                {
-                    selectExpression.OffsetAndLimit = Expression.Add(selectExpression.Offset, selectExpression.Limit);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Builds the delegate to create a row
-        /// </summary>
-        /// <param name="builderContext"></param>
-        protected virtual void CompileRowCreator(BuilderContext builderContext)
-        {
-            var reader = builderContext.CurrentSelect.Reader;
-            reader = (LambdaExpression)SpecialExpressionTranslator.Translate(reader);
-            reader = (LambdaExpression)ExpressionOptimizer.Optimize(reader, builderContext);
-            builderContext.ExpressionQuery.RowObjectCreator = reader.Compile();
-        }
-
-        /// <summary>
-        /// Prepares SELECT operands to help SQL transaltion
-        /// </summary>
-        /// <param name="builderContext"></param>
-        protected virtual void PrepareSqlOperands(BuilderContext builderContext)
-        {
-            ProcessExpressions(PrequelAnalyzer.Analyze, true, builderContext);
-        }
-
-        /// <summary>
-        /// Processes all expressions in query, with the option to process only SQL targetting expressions
-        /// This method is generic, it receives a delegate which does the real processing
-        /// </summary>
-        /// <param name="processor"></param>
-        /// <param name="processOnlySqlParts"></param>
-        /// <param name="builderContext"></param>
-        protected virtual void ProcessExpressions(Func<Expression, BuilderContext, Expression> processor,
-                                                  bool processOnlySqlParts, BuilderContext builderContext)
-        {
-            for (int scopeExpressionIndex = 0; scopeExpressionIndex < builderContext.SelectExpressions.Count; scopeExpressionIndex++)
-            {
-                // no need to process the select itself here, all ScopeExpressions that are operands are processed as operands
-                // and the main ScopeExpression (the SELECT) is processed below
-                var scopeExpression = builderContext.SelectExpressions[scopeExpressionIndex];
-
-                // where clauses
-                List<int> whereToRemove = new List<int>(); // List of where clausole evaluating TRUE (could be ignored and so removed)
-                bool falseWhere = false; // true when the full where evaluate to FALSE
-                for (int whereIndex = 0; whereIndex < scopeExpression.Where.Count; whereIndex++)
-                {
-                    Expression whereClausole = processor(scopeExpression.Where[whereIndex], builderContext);
-                    ConstantExpression constantWhereClausole = whereClausole as ConstantExpression;
-                    if (constantWhereClausole != null)
-                    {
-                        if (constantWhereClausole.Value.Equals(false))
-                        {
-                            falseWhere = true;
-                            break;
-                        }
-                        else if (constantWhereClausole.Value.Equals(true))
-                        {
-                            whereToRemove.Add(whereIndex);
-                            continue;
-                        }
-                    }
-                    scopeExpression.Where[whereIndex] = whereClausole;
-                }
-                if (scopeExpression.Where.Count > 0)
-                {
-                    if (falseWhere)
-                    {
-                        scopeExpression.Where.Clear();
-                        scopeExpression.Where.Add(Expression.Equal(Expression.Constant(true), Expression.Constant(false)));
-                    }
-                    else
-                        foreach (int whereIndex in whereToRemove)
-                            scopeExpression.Where.RemoveAt(whereIndex);
-                }
-
-                // limit clauses
-                if (scopeExpression.Offset != null)
-                    scopeExpression.Offset = processor(scopeExpression.Offset, builderContext);
-                if (scopeExpression.Limit != null)
-                    scopeExpression.Limit = processor(scopeExpression.Limit, builderContext);
-                if (scopeExpression.OffsetAndLimit != null)
-                    scopeExpression.OffsetAndLimit = processor(scopeExpression.OffsetAndLimit, builderContext);
-
-                builderContext.SelectExpressions[scopeExpressionIndex] = scopeExpression;
-            }
-            // now process the main SELECT
-            if (processOnlySqlParts)
-            {
-                // if we process only the SQL Parts, these are the operands
-                var newOperands = new List<Expression>();
-                foreach (var operand in builderContext.CurrentSelect.Operands)
-                    newOperands.Add(processor(operand, builderContext));
-                builderContext.CurrentSelect = builderContext.CurrentSelect.ChangeOperands(newOperands);
-            }
-            else
-            {
-                // the output parameters and result builder
-                builderContext.CurrentSelect = (SelectExpression)processor(builderContext.CurrentSelect, builderContext);
-            }
-        }
-
-        /// <summary>
-        /// Optimizes the query by optimizing subexpressions, and preparsing constant expressions
-        /// </summary>
-        /// <param name="builderContext"></param>
-        protected virtual void OptimizeQuery(BuilderContext builderContext)
-        {
-            ProcessExpressions(ExpressionOptimizer.Optimize, false, builderContext);
-        }
-
-        protected virtual SelectQuery BuildSqlQuery(ExpressionQuery expressionQuery, QueryContext queryContext)
-        {
-            var sql = SqlBuilder.BuildSelect(expressionQuery, queryContext);
-            var sqlQuery = new SelectQuery(queryContext.DataContext, sql, expressionQuery.Parameters, expressionQuery.RowObjectCreator, expressionQuery.Select.ExecuteMethodName);
-            return sqlQuery;
-        }
-
-        private static IQueryCache queryCache;
-        protected IQueryCache QueryCache
-        {
-            get
-            {
-                if (queryCache == null)
-                    queryCache = ObjectFactory.Get<IQueryCache>();
-                return queryCache;
-            }
-        }
-
-        protected virtual SelectQuery GetFromSelectCache(ExpressionChain expressions)
-        {
-            var cache = QueryCache;
-            return cache.GetFromSelectCache(expressions);
-        }
-
-        protected virtual void SetInSelectCache(ExpressionChain expressions, SelectQuery sqlSelectQuery)
-        {
-            var cache = QueryCache;
-            cache.SetInSelectCache(expressions, sqlSelectQuery);
-        }
-
-        protected virtual Delegate GetFromTableReaderCache(Type tableType, IList<string> columns)
-        {
-            var cache = QueryCache;
-            return cache.GetFromTableReaderCache(tableType, columns);
-        }
-
-        protected virtual void SetInTableReaderCache(Type tableType, IList<string> columns, Delegate tableReader)
-        {
-            var cache = queryCache;
-            cache.SetInTableReaderCache(tableType, columns, tableReader);
-        }
-
-        /// <summary>
-        /// Main entry point for the class. Builds or retrive from cache a SQL query corresponding to given Expressions
-        /// </summary>
-        /// <param name="expressions"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public SelectQuery GetSelectQuery(ExpressionChain expressions, QueryContext queryContext)
-        {
-            SelectQuery query = null;
-            if (queryContext.DataContext.QueryCacheEnabled)
-            {
-                query = GetFromSelectCache(expressions);
-            }
-            if (query == null)
-            {
-                Profiler.At("START: GetSelectQuery(), building Expression query");
-                var expressionsQuery = BuildExpressionQuery(expressions, queryContext);
-                Profiler.At("END: GetSelectQuery(), building Expression query");
-
-                Profiler.At("START: GetSelectQuery(), building Sql query");
-                query = BuildSqlQuery(expressionsQuery, queryContext);
-                Profiler.At("END: GetSelectQuery(), building Sql query");
-
-                if (queryContext.DataContext.QueryCacheEnabled)
-                {
-                    SetInSelectCache(expressions, query);
-                }
-            }
-            else if (query.InputParameters.Count > 0)
-            {
-                Profiler.At("START: GetSelectQuery(), building Expression parameters of cached query");
-                var parameters = BuildExpressionParameters(expressions, queryContext);
-                query = new SelectQuery(queryContext.DataContext, query.Sql, parameters, query.RowObjectCreator, query.ExecuteMethodName);
-                Profiler.At("END: GetSelectQuery(), building Expression parameters of cached query");
-            }
-            return query;
-        }
-
-        IList<InputParameterExpression> BuildExpressionParameters(ExpressionChain expressions, QueryContext queryContext)
-        {
-            var builderContext = new BuilderContext(queryContext);
-            var previousExpression = ExpressionDispatcher.CreateTableExpression(expressions.Expressions[0], builderContext);
-            previousExpression = BuildExpressionQuery(expressions, previousExpression, builderContext);
-            BuildOffsetsAndLimits(builderContext);
-            // then prepare Parts for SQL translation
-            PrepareSqlOperands(builderContext);
-            return builderContext.ExpressionQuery.Parameters;
-        }
-
-        /// <summary>
-        /// Returns a Delegate to create a row for a given IDataRecord
-        /// The Delegate is Func&lt;IDataRecord,MappingContext,"tableType">
-        /// </summary>
-        /// <param name="tableType">The table type (must be managed by DataContext)</param>
-        /// <param name="parameters"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public virtual Delegate GetTableReader(Type tableType, IList<string> parameters, QueryContext queryContext)
-        {
-            Delegate reader = null;
-            if (queryContext.DataContext.QueryCacheEnabled)
-            {
-                reader = GetFromTableReaderCache(tableType, parameters);
-            }
-            if (reader == null)
-            {
-                var lambda = ExpressionDispatcher.BuildTableReader(tableType, parameters,
-                                                                   new BuilderContext(queryContext));
-                reader = lambda.Compile();
-                if (queryContext.DataContext.QueryCacheEnabled)
-                {
-                    SetInTableReaderCache(tableType, parameters, reader);
-                }
-            }
-            return reader;
-        }
-
-        private static readonly Regex parameterIdentifierEx = new Regex(@"\{(?<var>[\d.]+)\}", RegexOptions.Singleline | RegexOptions.ExplicitCapture | RegexOptions.Compiled);
-
-        /// <summary>
-        /// Converts a direct SQL query to a safe query with named parameters
-        /// </summary>
-        /// <param name="sql">Raw SQL query</param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public virtual DirectQuery GetDirectQuery(string sql, QueryContext queryContext)
-        {
-            // TODO cache
-            var safeSql = queryContext.DataContext.Vendor.SqlProvider.GetSafeQuery(sql);
-            var parameters = new List<string>();
-            var parameterizedSql = parameterIdentifierEx.Replace(safeSql, delegate(Match e)
-            {
-                var field = e.Groups[1].Value;
-                var parameterIndex = int.Parse(field);
-                while (parameters.Count <= parameterIndex)
-                    parameters.Add(string.Empty);
-                var literalParameterName =
-                    queryContext.DataContext.Vendor.SqlProvider.GetParameterName(string.Format("p{0}", parameterIndex));
-                parameters[parameterIndex] = literalParameterName;
-                return literalParameterName;
-            });
-            return new DirectQuery(queryContext.DataContext, parameterizedSql, parameters);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text.RegularExpressions;
+
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+using DbLinq.Factory;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    /// <summary>
+    /// Full query builder, with cache management
+    /// 1. Parses Linq Expression
+    /// 2. Generates SQL
+    /// </summary>
+    internal partial class QueryBuilder : IQueryBuilder
+    {
+        public IExpressionLanguageParser ExpressionLanguageParser { get; set; }
+        public IExpressionDispatcher ExpressionDispatcher { get; set; }
+        public IPrequelAnalyzer PrequelAnalyzer { get; set; }
+        public IExpressionOptimizer ExpressionOptimizer { get; set; }
+        public ISpecialExpressionTranslator SpecialExpressionTranslator { get; set; }
+        public ISqlBuilder SqlBuilder { get; set; }
+
+        public QueryBuilder()
+        {
+            ExpressionLanguageParser = ObjectFactory.Get<IExpressionLanguageParser>();
+            ExpressionDispatcher = ObjectFactory.Get<IExpressionDispatcher>();
+            PrequelAnalyzer = ObjectFactory.Get<IPrequelAnalyzer>();
+            ExpressionOptimizer = ObjectFactory.Get<IExpressionOptimizer>();
+            SpecialExpressionTranslator = ObjectFactory.Get<ISpecialExpressionTranslator>();
+            SqlBuilder = ObjectFactory.Get<ISqlBuilder>();
+        }
+
+        /// <summary>
+        /// Builds the ExpressionQuery:
+        /// - parses Expressions and builds row creator
+        /// - checks names unicity
+        /// </summary>
+        /// <param name="expressions"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        protected virtual ExpressionQuery BuildExpressionQuery(ExpressionChain expressions, QueryContext queryContext)
+        {
+            var builderContext = new BuilderContext(queryContext);
+            BuildExpressionQuery(expressions, builderContext);
+            CheckTablesAlias(builderContext);
+            CheckParametersAlias(builderContext);
+            return builderContext.ExpressionQuery;
+        }
+
+        /// <summary>
+        /// Finds all registered tables or columns with the given name.
+        /// We exclude parameter because they won't be prefixed/suffixed the same way (well, that's a guess, I hope it's a good one)
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected virtual IList<Expression> FindExpressionsByName(string name, BuilderContext builderContext)
+        {
+            var expressions = new List<Expression>();
+            expressions.AddRange((from t in builderContext.EnumerateAllTables() where t.Alias == name select (Expression)t).Distinct());
+            expressions.AddRange(from c in builderContext.EnumerateScopeColumns() where c.Alias == name select (Expression)c);
+            return expressions;
+        }
+
+        protected virtual string MakeName(string aliasBase, int index, string anonymousBase, BuilderContext builderContext)
+        {
+            if (string.IsNullOrEmpty(aliasBase))
+                aliasBase = anonymousBase;
+            return string.Format("{0}{1}", aliasBase, index);
+        }
+
+        protected virtual string MakeTableName(string aliasBase, int index, BuilderContext builderContext)
+        {
+            return MakeName(aliasBase, index, "t", builderContext);
+        }
+
+        protected virtual string MakeParameterName(string aliasBase, int index, BuilderContext builderContext)
+        {
+            return MakeName(aliasBase, index, "p", builderContext);
+        }
+
+        /// <summary>
+        /// Give all non-aliased tables a name
+        /// </summary>
+        /// <param name="builderContext"></param>
+        protected virtual void CheckTablesAlias(BuilderContext builderContext)
+        {
+            var tables = builderContext.EnumerateAllTables().Distinct().ToList();
+            // just to be nice: if we have only one table involved, there's no need to alias it
+            if (tables.Count == 1)
+            {
+                tables[0].Alias = null;
+            }
+            else
+            {
+                foreach (var tableExpression in tables)
+                {
+                    // if no alias, or duplicate alias
+                    if (string.IsNullOrEmpty(tableExpression.Alias) ||
+                        FindExpressionsByName(tableExpression.Alias, builderContext).Count > 1)
+                    {
+                        int anonymousIndex = 0;
+                        var aliasBase = tableExpression.Alias;
+                        // we try to assign one until we have a unique alias
+                        do
+                        {
+                            tableExpression.Alias = MakeTableName(aliasBase, ++anonymousIndex, builderContext);
+                        } while (FindExpressionsByName(tableExpression.Alias, builderContext).Count != 1);
+                    }
+                }
+            }
+        }
+
+        protected virtual IList<InputParameterExpression> FindParametersByName(string name, BuilderContext builderContext)
+        {
+            return (from p in builderContext.ExpressionQuery.Parameters where p.Alias == name select p).ToList();
+        }
+
+        /// <summary>
+        /// Gives anonymous parameters a name and checks for names unicity
+        /// The fact of giving a nice name just helps for readability
+        /// </summary>
+        /// <param name="builderContext"></param>
+        protected virtual void CheckParametersAlias(BuilderContext builderContext)
+        {
+            foreach (var externalParameterExpression in builderContext.ExpressionQuery.Parameters)
+            {
+                if (string.IsNullOrEmpty(externalParameterExpression.Alias)
+                    || FindParametersByName(externalParameterExpression.Alias, builderContext).Count > 1)
+                {
+                    int anonymousIndex = 0;
+                    var aliasBase = externalParameterExpression.Alias;
+                    // we try to assign one until we have a unique alias
+                    do
+                    {
+                        externalParameterExpression.Alias = MakeTableName(aliasBase, ++anonymousIndex, builderContext);
+                    } while (FindParametersByName(externalParameterExpression.Alias, builderContext).Count > 1);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Builds and chains the provided Expressions
+        /// </summary>
+        /// <param name="expressions"></param>
+        /// <param name="builderContext"></param>
+        protected virtual void BuildExpressionQuery(ExpressionChain expressions, BuilderContext builderContext)
+        {
+            var previousExpression = ExpressionDispatcher.CreateTableExpression(expressions.Expressions[0], builderContext);
+            previousExpression = BuildExpressionQuery(expressions, previousExpression, builderContext);
+            BuildOffsetsAndLimits(builderContext);
+            // then prepare Parts for SQL translation
+            PrepareSqlOperands(builderContext);
+            // now, we optimize anything we can
+            OptimizeQuery(builderContext);
+            // finally, compile our object creation method
+            CompileRowCreator(builderContext);
+            // in the very end, we keep the SELECT clause
+            builderContext.ExpressionQuery.Select = builderContext.CurrentSelect;
+        }
+
+        /// <summary>
+        /// Builds the ExpressionQuery main Expression, given a Table (or projection) expression
+        /// </summary>
+        /// <param name="expressions"></param>
+        /// <param name="tableExpression"></param>
+        /// <param name="builderContext"></param>
+        /// <returns></returns>
+        protected Expression BuildExpressionQuery(ExpressionChain expressions, Expression tableExpression, BuilderContext builderContext)
+        {
+            tableExpression = ExpressionDispatcher.Analyze(expressions, tableExpression, builderContext);
+            ExpressionDispatcher.BuildSelect(tableExpression, builderContext);
+            return tableExpression;
+        }
+
+        public virtual SelectExpression BuildSelectExpression(ExpressionChain expressions, Expression tableExpression, BuilderContext builderContext)
+        {
+            BuildExpressionQuery(expressions, tableExpression, builderContext);
+            return builderContext.CurrentSelect;
+        }
+
+        /// <summary>
+        /// This is a hint for SQL generations
+        /// </summary>
+        /// <param name="builderContext"></param>
+        protected virtual void BuildOffsetsAndLimits(BuilderContext builderContext)
+        {
+            foreach (var selectExpression in builderContext.SelectExpressions)
+            {
+                if (selectExpression.Offset != null && selectExpression.Limit != null)
+                {
+                    selectExpression.OffsetAndLimit = Expression.Add(selectExpression.Offset, selectExpression.Limit);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Builds the delegate to create a row
+        /// </summary>
+        /// <param name="builderContext"></param>
+        protected virtual void CompileRowCreator(BuilderContext builderContext)
+        {
+            var reader = builderContext.CurrentSelect.Reader;
+            reader = (LambdaExpression)SpecialExpressionTranslator.Translate(reader);
+            reader = (LambdaExpression)ExpressionOptimizer.Optimize(reader, builderContext);
+            builderContext.ExpressionQuery.RowObjectCreator = reader.Compile();
+        }
+
+        /// <summary>
+        /// Prepares SELECT operands to help SQL transaltion
+        /// </summary>
+        /// <param name="builderContext"></param>
+        protected virtual void PrepareSqlOperands(BuilderContext builderContext)
+        {
+            ProcessExpressions(PrequelAnalyzer.Analyze, true, builderContext);
+        }
+
+        /// <summary>
+        /// Processes all expressions in query, with the option to process only SQL targetting expressions
+        /// This method is generic, it receives a delegate which does the real processing
+        /// </summary>
+        /// <param name="processor"></param>
+        /// <param name="processOnlySqlParts"></param>
+        /// <param name="builderContext"></param>
+        protected virtual void ProcessExpressions(Func<Expression, BuilderContext, Expression> processor,
+                                                  bool processOnlySqlParts, BuilderContext builderContext)
+        {
+            for (int scopeExpressionIndex = 0; scopeExpressionIndex < builderContext.SelectExpressions.Count; scopeExpressionIndex++)
+            {
+                // no need to process the select itself here, all ScopeExpressions that are operands are processed as operands
+                // and the main ScopeExpression (the SELECT) is processed below
+                var scopeExpression = builderContext.SelectExpressions[scopeExpressionIndex];
+
+                // where clauses
+                List<int> whereToRemove = new List<int>(); // List of where clausole evaluating TRUE (could be ignored and so removed)
+                bool falseWhere = false; // true when the full where evaluate to FALSE
+                for (int whereIndex = 0; whereIndex < scopeExpression.Where.Count; whereIndex++)
+                {
+                    Expression whereClausole = processor(scopeExpression.Where[whereIndex], builderContext);
+                    ConstantExpression constantWhereClausole = whereClausole as ConstantExpression;
+                    if (constantWhereClausole != null)
+                    {
+                        if (constantWhereClausole.Value.Equals(false))
+                        {
+                            falseWhere = true;
+                            break;
+                        }
+                        else if (constantWhereClausole.Value.Equals(true))
+                        {
+                            whereToRemove.Add(whereIndex);
+                            continue;
+                        }
+                    }
+                    scopeExpression.Where[whereIndex] = whereClausole;
+                }
+                if (scopeExpression.Where.Count > 0)
+                {
+                    if (falseWhere)
+                    {
+                        scopeExpression.Where.Clear();
+                        scopeExpression.Where.Add(Expression.Equal(Expression.Constant(true), Expression.Constant(false)));
+                    }
+                    else
+                        foreach (int whereIndex in whereToRemove)
+                            scopeExpression.Where.RemoveAt(whereIndex);
+                }
+
+                // limit clauses
+                if (scopeExpression.Offset != null)
+                    scopeExpression.Offset = processor(scopeExpression.Offset, builderContext);
+                if (scopeExpression.Limit != null)
+                    scopeExpression.Limit = processor(scopeExpression.Limit, builderContext);
+                if (scopeExpression.OffsetAndLimit != null)
+                    scopeExpression.OffsetAndLimit = processor(scopeExpression.OffsetAndLimit, builderContext);
+
+                builderContext.SelectExpressions[scopeExpressionIndex] = scopeExpression;
+            }
+            // now process the main SELECT
+            if (processOnlySqlParts)
+            {
+                // if we process only the SQL Parts, these are the operands
+                var newOperands = new List<Expression>();
+                foreach (var operand in builderContext.CurrentSelect.Operands)
+                    newOperands.Add(processor(operand, builderContext));
+                builderContext.CurrentSelect = builderContext.CurrentSelect.ChangeOperands(newOperands);
+            }
+            else
+            {
+                // the output parameters and result builder
+                builderContext.CurrentSelect = (SelectExpression)processor(builderContext.CurrentSelect, builderContext);
+            }
+        }
+
+        /// <summary>
+        /// Optimizes the query by optimizing subexpressions, and preparsing constant expressions
+        /// </summary>
+        /// <param name="builderContext"></param>
+        protected virtual void OptimizeQuery(BuilderContext builderContext)
+        {
+            ProcessExpressions(ExpressionOptimizer.Optimize, false, builderContext);
+        }
+
+        protected virtual SelectQuery BuildSqlQuery(ExpressionQuery expressionQuery, QueryContext queryContext)
+        {
+            var sql = SqlBuilder.BuildSelect(expressionQuery, queryContext);
+            var sqlQuery = new SelectQuery(queryContext.DataContext, sql, expressionQuery.Parameters, expressionQuery.RowObjectCreator, expressionQuery.Select.ExecuteMethodName);
+            return sqlQuery;
+        }
+
+        private static IQueryCache queryCache;
+        protected IQueryCache QueryCache
+        {
+            get
+            {
+                if (queryCache == null)
+                    queryCache = ObjectFactory.Get<IQueryCache>();
+                return queryCache;
+            }
+        }
+
+        protected virtual SelectQuery GetFromSelectCache(ExpressionChain expressions)
+        {
+            var cache = QueryCache;
+            return cache.GetFromSelectCache(expressions);
+        }
+
+        protected virtual void SetInSelectCache(ExpressionChain expressions, SelectQuery sqlSelectQuery)
+        {
+            var cache = QueryCache;
+            cache.SetInSelectCache(expressions, sqlSelectQuery);
+        }
+
+        protected virtual Delegate GetFromTableReaderCache(Type tableType, IList<string> columns)
+        {
+            var cache = QueryCache;
+            return cache.GetFromTableReaderCache(tableType, columns);
+        }
+
+        protected virtual void SetInTableReaderCache(Type tableType, IList<string> columns, Delegate tableReader)
+        {
+            var cache = queryCache;
+            cache.SetInTableReaderCache(tableType, columns, tableReader);
+        }
+
+        /// <summary>
+        /// Main entry point for the class. Builds or retrive from cache a SQL query corresponding to given Expressions
+        /// </summary>
+        /// <param name="expressions"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public SelectQuery GetSelectQuery(ExpressionChain expressions, QueryContext queryContext)
+        {
+            SelectQuery query = null;
+            if (queryContext.DataContext.QueryCacheEnabled)
+            {
+                query = GetFromSelectCache(expressions);
+            }
+            if (query == null)
+            {
+                Profiler.At("START: GetSelectQuery(), building Expression query");
+                var expressionsQuery = BuildExpressionQuery(expressions, queryContext);
+                Profiler.At("END: GetSelectQuery(), building Expression query");
+
+                Profiler.At("START: GetSelectQuery(), building Sql query");
+                query = BuildSqlQuery(expressionsQuery, queryContext);
+                Profiler.At("END: GetSelectQuery(), building Sql query");
+
+                if (queryContext.DataContext.QueryCacheEnabled)
+                {
+                    SetInSelectCache(expressions, query);
+                }
+            }
+            else if (query.InputParameters.Count > 0)
+            {
+                Profiler.At("START: GetSelectQuery(), building Expression parameters of cached query");
+                var parameters = BuildExpressionParameters(expressions, queryContext);
+                query = new SelectQuery(queryContext.DataContext, query.Sql, parameters, query.RowObjectCreator, query.ExecuteMethodName);
+                Profiler.At("END: GetSelectQuery(), building Expression parameters of cached query");
+            }
+            return query;
+        }
+
+        IList<InputParameterExpression> BuildExpressionParameters(ExpressionChain expressions, QueryContext queryContext)
+        {
+            var builderContext = new BuilderContext(queryContext);
+            var previousExpression = ExpressionDispatcher.CreateTableExpression(expressions.Expressions[0], builderContext);
+            previousExpression = BuildExpressionQuery(expressions, previousExpression, builderContext);
+            BuildOffsetsAndLimits(builderContext);
+            // then prepare Parts for SQL translation
+            PrepareSqlOperands(builderContext);
+            return builderContext.ExpressionQuery.Parameters;
+        }
+
+        /// <summary>
+        /// Returns a Delegate to create a row for a given IDataRecord
+        /// The Delegate is Func&lt;IDataRecord,MappingContext,"tableType">
+        /// </summary>
+        /// <param name="tableType">The table type (must be managed by DataContext)</param>
+        /// <param name="parameters"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public virtual Delegate GetTableReader(Type tableType, IList<string> parameters, QueryContext queryContext)
+        {
+            Delegate reader = null;
+            if (queryContext.DataContext.QueryCacheEnabled)
+            {
+                reader = GetFromTableReaderCache(tableType, parameters);
+            }
+            if (reader == null)
+            {
+                var lambda = ExpressionDispatcher.BuildTableReader(tableType, parameters,
+                                                                   new BuilderContext(queryContext));
+                reader = lambda.Compile();
+                if (queryContext.DataContext.QueryCacheEnabled)
+                {
+                    SetInTableReaderCache(tableType, parameters, reader);
+                }
+            }
+            return reader;
+        }
+
+        private static readonly Regex parameterIdentifierEx = new Regex(@"\{(?<var>[\d.]+)\}", RegexOptions.Singleline | RegexOptions.ExplicitCapture | RegexOptions.Compiled);
+
+        /// <summary>
+        /// Converts a direct SQL query to a safe query with named parameters
+        /// </summary>
+        /// <param name="sql">Raw SQL query</param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public virtual DirectQuery GetDirectQuery(string sql, QueryContext queryContext)
+        {
+            // TODO cache
+            var safeSql = queryContext.DataContext.Vendor.SqlProvider.GetSafeQuery(sql);
+            var parameters = new List<string>();
+            var parameterizedSql = parameterIdentifierEx.Replace(safeSql, delegate(Match e)
+            {
+                var field = e.Groups[1].Value;
+                var parameterIndex = int.Parse(field);
+                while (parameters.Count <= parameterIndex)
+                    parameters.Add(string.Empty);
+                var literalParameterName =
+                    queryContext.DataContext.Vendor.SqlProvider.GetParameterName(string.Format("p{0}", parameterIndex));
+                parameters[parameterIndex] = literalParameterName;
+                return literalParameterName;
+            });
+            return new DirectQuery(queryContext.DataContext, parameterizedSql, parameters);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryCache.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryCache.cs
@@ -1,94 +1,94 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class QueryCache : IQueryCache
-    {
-        private class TableReaderSignature
-        {
-            private readonly Type tableType;
-            private readonly IList<string> columns;
-			private readonly int hash; 
-
-            public override bool Equals(object obj)
-            {
-                var trs = (TableReaderSignature)obj;
-                if (trs.tableType != tableType)
-                    return false;
-                return trs.columns.SequenceEqual(columns);
-            }
-
-            public override int GetHashCode()
-            {
-                return hash;
-            }
-
-            public TableReaderSignature(Type tableType, IList<string> columns)
-            {
-                this.tableType = tableType;
-                this.columns = columns;
-				hash = tableType.GetHashCode();
-                foreach (var column in columns)
-                    hash ^= column.GetHashCode();
-            }
-        }
-
-        private readonly IThreadSafeDictionary<ExpressionChain, SelectQuery> selectQueries = new ThreadSafeDictionary<ExpressionChain, SelectQuery>((IEqualityComparer<ExpressionChain>)new ExpressionChainEqualityComparer());
-        private readonly IThreadSafeDictionary<TableReaderSignature, Delegate> tableReaders = new ThreadSafeDictionary<TableReaderSignature, Delegate>();
-
-        public SelectQuery GetFromSelectCache(ExpressionChain expressions)
-        {
-            SelectQuery selectQuery;
-            selectQueries.TryGetValue(expressions, out selectQuery);
-            return selectQuery;
-        }
-
-        public void SetInSelectCache(ExpressionChain expressions, SelectQuery sqlSelectQuery)
-        {
-            selectQueries.MergeSafe(expressions, sqlSelectQuery);
-        }
-
-        public Delegate GetFromTableReaderCache(Type tableType, IList<string> columns)
-        {
-            var signature = new TableReaderSignature(tableType, columns);
-            Delegate tableReader;
-            tableReaders.TryGetValue(signature, out tableReader);
-            return tableReader;
-        }
-
-        public void SetInTableReaderCache(Type tableType, IList<string> columns, Delegate tableReader)
-        {
-            var signature = new TableReaderSignature(tableType, columns);
-            tableReaders.MergeSafe(signature, tableReader);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class QueryCache : IQueryCache
+    {
+        private class TableReaderSignature
+        {
+            private readonly Type tableType;
+            private readonly IList<string> columns;
+			private readonly int hash; 
+
+            public override bool Equals(object obj)
+            {
+                var trs = (TableReaderSignature)obj;
+                if (trs.tableType != tableType)
+                    return false;
+                return trs.columns.SequenceEqual(columns);
+            }
+
+            public override int GetHashCode()
+            {
+                return hash;
+            }
+
+            public TableReaderSignature(Type tableType, IList<string> columns)
+            {
+                this.tableType = tableType;
+                this.columns = columns;
+				hash = tableType.GetHashCode();
+                foreach (var column in columns)
+                    hash ^= column.GetHashCode();
+            }
+        }
+
+        private readonly IThreadSafeDictionary<ExpressionChain, SelectQuery> selectQueries = new ThreadSafeDictionary<ExpressionChain, SelectQuery>((IEqualityComparer<ExpressionChain>)new ExpressionChainEqualityComparer());
+        private readonly IThreadSafeDictionary<TableReaderSignature, Delegate> tableReaders = new ThreadSafeDictionary<TableReaderSignature, Delegate>();
+
+        public SelectQuery GetFromSelectCache(ExpressionChain expressions)
+        {
+            SelectQuery selectQuery;
+            selectQueries.TryGetValue(expressions, out selectQuery);
+            return selectQuery;
+        }
+
+        public void SetInSelectCache(ExpressionChain expressions, SelectQuery sqlSelectQuery)
+        {
+            selectQueries.MergeSafe(expressions, sqlSelectQuery);
+        }
+
+        public Delegate GetFromTableReaderCache(Type tableType, IList<string> columns)
+        {
+            var signature = new TableReaderSignature(tableType, columns);
+            Delegate tableReader;
+            tableReaders.TryGetValue(signature, out tableReader);
+            return tableReader;
+        }
+
+        public void SetInTableReaderCache(Type tableType, IList<string> columns, Delegate tableReader)
+        {
+            var signature = new TableReaderSignature(tableType, columns);
+            tableReaders.MergeSafe(signature, tableReader);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/QueryRunner.cs
@@ -1,406 +1,406 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Collections;
-using System.Collections.Generic;
-using System.Reflection;
-
-using DbLinq.Data.Linq.Database;
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-using DbLinq.Util;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class QueryRunner : IQueryRunner
-    {
-        /// <summary>
-        /// Enumerates all records return by SQL request
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="selectQuery"></param>
-        /// <returns></returns>
-        public virtual IEnumerable<T> Select<T>(SelectQuery selectQuery)
-        {
-            var rowObjectCreator = selectQuery.GetRowObjectCreator<T>();
-
-            IList<T> results = new List<T>();
-
-            // handle the special case where the query is empty, meaning we don't need the DB
-            if (string.IsNullOrEmpty(selectQuery.Sql.ToString()))
-            {
-                results.Add(rowObjectCreator(null, null));
-            }
-            else
-            {
-                using (var dbCommand = selectQuery.GetCommand())
-                {
-                    // write query to log
-                    selectQuery.DataContext.WriteLog(dbCommand.Command);
-
-                    using (var reader = dbCommand.Command.ExecuteReader())
-                    {
-                        while (reader.Read())
-                        {
-                            // someone told me one day this could happen (in SQLite)
-                            if (reader.FieldCount == 0)
-                                continue;
-
-                            var row = rowObjectCreator(reader, selectQuery.DataContext._MappingContext);
-                            // the conditions to register and watch an entity are:
-                            // - not null (can this happen?)
-                            // - registered in the model
-                            if (row != null && selectQuery.DataContext.ObjectTrackingEnabled && 
-                                    selectQuery.DataContext.Mapping.GetTable(row.GetType()) != null)
-                            {
-                                row = (T)selectQuery.DataContext.Register(row);
-                            }
-                            results.Add(row);
-                        }
-                    }
-                }
-            }
-            return results;
-        }
-
-        /// <summary>
-        /// Returns a unique row (common reference)
-        /// </summary>
-        /// <param name="row"></param>
-        /// <param name="t"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        protected virtual object GetUniqueRow(object row, Type t, DataContext dataContext)
-        {
-            if (row != null && dataContext.Mapping.GetTable(row.GetType()) != null)
-                row = dataContext.Register(row);
-            return row;
-        }
-
-        /// <summary>
-        /// Returns a unique row (common reference)
-        /// </summary>
-        /// <param name="row"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        protected virtual T GetUniqueRow<T>(object row, DataContext dataContext)
-        {
-            return (T)GetUniqueRow(row, typeof(T), dataContext);
-        }
-
-        public virtual S SelectScalar<S>(SelectQuery selectQuery)
-        {
-            switch (selectQuery.ExecuteMethodName)
-            {
-                case null: // some calls, like Count() generate SQL and the resulting projection method name is null (never initialized)
-                    return SelectSingle<S>(selectQuery, false); // Single() for safety, but First() should work
-                case "First":
-                    return SelectFirst<S>(selectQuery, false);
-                case "FirstOrDefault":
-                    return SelectFirst<S>(selectQuery, true);
-                case "Single":
-                    return SelectSingle<S>(selectQuery, false);
-                case "SingleOrDefault":
-                    return SelectSingle<S>(selectQuery, true);
-                case "Last":
-                    return SelectLast<S>(selectQuery, false);
-            }
-            throw Error.BadArgument("S0077: Unhandled method '{0}'", selectQuery.ExecuteMethodName);
-        }
-
-        /// <summary>
-        /// Returns first item in query.
-        /// If no row is found then if default allowed returns default(S), throws exception otherwise
-        /// </summary>
-        /// <typeparam name="S"></typeparam>
-        /// <param name="selectQuery"></param>
-        /// <param name="allowDefault"></param>
-        /// <returns></returns>
-        protected virtual S SelectFirst<S>(SelectQuery selectQuery, bool allowDefault)
-        {
-            foreach (var row in Select<S>(selectQuery))
-                return row;
-            if (!allowDefault)
-                throw new InvalidOperationException();
-            return default(S);
-        }
-
-        /// <summary>
-        /// Returns single item in query
-        /// If more than one item is found, throws an exception
-        /// If no row is found then if default allowed returns default(S), throws exception otherwise
-        /// </summary>
-        /// <typeparam name="S"></typeparam>
-        /// <param name="selectQuery"></param>
-        /// <param name="allowDefault"></param>
-        /// <returns></returns>
-        protected virtual S SelectSingle<S>(SelectQuery selectQuery, bool allowDefault)
-        {
-            S firstRow = default(S);
-            int rowCount = 0;
-            foreach (var row in Select<S>(selectQuery))
-            {
-                if (rowCount > 1)
-                    throw new InvalidOperationException();
-                firstRow = row;
-                rowCount++;
-            }
-            if (!allowDefault && rowCount == 0)
-                throw new InvalidOperationException();
-            return firstRow;
-        }
-
-        /// <summary>
-        /// Returns last item in query
-        /// </summary>
-        /// <typeparam name="S"></typeparam>
-        /// <param name="selectQuery"></param>
-        /// <param name="allowDefault"></param>
-        /// <returns></returns>
-        protected virtual S SelectLast<S>(SelectQuery selectQuery, bool allowDefault)
-        {
-            S lastRow = default(S);
-            int rowCount = 0;
-            foreach (var row in Select<S>(selectQuery))
-            {
-                lastRow = row;
-                rowCount++;
-            }
-            if (!allowDefault && rowCount == 0)
-                throw new InvalidOperationException();
-            return lastRow;
-        }
-
-        /// <summary>
-        /// Runs an InsertQuery on a provided object
-        /// </summary>
-        /// <param name="target"></param>
-        /// <param name="insertQuery"></param>
-        public void Insert(object target, UpsertQuery insertQuery)
-        {
-            Upsert(target, insertQuery);
-        }
-
-        private void Upsert(object target, UpsertQuery insertQuery)
-        {
-            insertQuery.Target = target;
-            var dataContext = insertQuery.DataContext;
-            using (var dbCommand = insertQuery.GetCommand())
-            {
-
-                // log first command
-                dataContext.WriteLog(dbCommand.Command);
-
-                // we may have two commands
-                int rowsCount = dbCommand.Command.ExecuteNonQuery();
-                // the second reads output parameters
-                if (!string.IsNullOrEmpty(insertQuery.IdQuerySql.ToString()))
-                {
-                    var outputCommandTransaction = new ParameterizedQuery(dataContext, insertQuery.IdQuerySql, insertQuery.PrimaryKeyParameters);
-                    outputCommandTransaction.Target = target;
-
-                    var outputCommand = outputCommandTransaction.GetCommandTransactional(false);
-
-                    // then run commands
-                    outputCommand.Command.Transaction = dbCommand.Command.Transaction;
-
-                    // log second command
-                    dataContext.WriteLog(outputCommand.Command);
-
-                    using (var dataReader = outputCommand.Command.ExecuteReader())
-                    {
-                        if (! dataReader.Read())
-                            throw new InvalidOperationException("Could not retrieve data for inserted row on " + target.GetType());
-
-                        int outputParameterIndex = 0;
-                        for (IEnumerator<ObjectOutputParameterExpression> output = insertQuery.OutputParameters.GetEnumerator(); output.MoveNext(); ++outputParameterIndex)
-                        {
-                            var outputDbParameter = dataReader.GetValue(outputParameterIndex);
-                            SetOutputParameterValue(target, output.Current, outputDbParameter);
-                        }
-                    }
-                }
-                dbCommand.Commit();
-            }
-        }
-
-        protected virtual void SetOutputParameterValue(object target, ObjectOutputParameterExpression outputParameter, object value)
-        {
-            // depending on vendor, we can have DBNull or null
-            // so we handle both
-            if (value is DBNull || value == null)
-                outputParameter.SetValue(target, null);
-            else
-                outputParameter.SetValue(target, TypeConvert.To(value, outputParameter.ValueType));
-        }
-
-        /// <summary>
-        /// Performs an update
-        /// </summary>
-        /// <param name="target">Entity to be flushed</param>
-        /// <param name="updateQuery">SQL update query</param>
-        /// <param name="modifiedMembers">List of modified members, or null to update all members</param>
-        public void Update(object target, UpsertQuery updateQuery, IList<MemberInfo> modifiedMembers)
-        {
-            Upsert(target, updateQuery);
-        }
-
-        /// <summary>
-        /// Performs a delete
-        /// </summary>
-        /// <param name="target">Entity to be deleted</param>
-        /// <param name="deleteQuery">SQL delete query</param>
-        public void Delete(object target, DeleteQuery deleteQuery)
-        {
-            deleteQuery.Target = target;
-            using (var dbCommand = deleteQuery.GetCommand())
-            {
-
-                // log command
-                deleteQuery.DataContext.WriteLog(dbCommand.Command);
-
-                int rowsCount = dbCommand.Command.ExecuteNonQuery();
-                dbCommand.Commit();
-            }
-        }
-
-        /// <summary>
-        /// Fills dbCommand parameters, given names and values
-        /// </summary>
-        /// <param name="dbCommand"></param>
-        /// <param name="parameterNames"></param>
-        /// <param name="parameterValues"></param>
-        private void FeedParameters(IDbCommand dbCommand, IList<string> parameterNames, IList<object> parameterValues)
-        {
-            for (int parameterIndex = 0; parameterIndex < parameterNames.Count; parameterIndex++)
-            {
-                var dbParameter = dbCommand.CreateParameter();
-                dbParameter.ParameterName = parameterNames[parameterIndex];
-                dbParameter.SetValue(parameterValues[parameterIndex]);
-                dbCommand.Parameters.Add(dbParameter);
-            }
-        }
-
-        /// <summary>
-        /// Runs a direct scalar command
-        /// </summary>
-        /// <param name="directQuery"></param>
-        /// <param name="parameters"></param>
-        /// <returns></returns>
-        public int Execute(DirectQuery directQuery, params object[] parameters)
-        {
-            directQuery.parameterValues = parameters;
-            using (var dbCommand = directQuery.GetCommand())
-            {
-
-                // log command
-                directQuery.DataContext.WriteLog(dbCommand.Command);
-
-                var result = dbCommand.Command.ExecuteScalar();
-                if (result == null || result is DBNull)
-                    return 0;
-                var intResult = TypeConvert.ToNumber<int>(result);
-                return intResult;
-            }
-        }
-
-        // TODO: move method?
-        protected virtual Delegate GetTableBuilder(Type elementType, IDataReader dataReader, DataContext dataContext)
-        {
-            var fields = new List<string>();
-            for (int fieldIndex = 0; fieldIndex < dataReader.FieldCount; fieldIndex++)
-                fields.Add(dataReader.GetName(fieldIndex));
-            return dataContext.QueryBuilder.GetTableReader(elementType, fields, new QueryContext(dataContext));
-        }
-
-        /// <summary>
-        /// Runs a query with a direct statement
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="directQuery"></param>
-        /// <param name="parameters"></param>
-        /// <returns></returns>
-        public IEnumerable ExecuteSelect(Type tableType, DirectQuery directQuery, params object[] parameters)
-        {
-            directQuery.parameterValues = parameters;
-            using (var dbCommand = directQuery.GetCommand())
-            {
-
-                // log query
-                directQuery.DataContext.WriteLog(dbCommand.Command);
-
-                using (var dataReader = dbCommand.Command.ExecuteReader())
-                {
-                    // Did you know? "return EnumerateResult(tableType, dataReader, dataContext);" disposes resources first
-                    // before the enumerator is used
-                    foreach (var result in EnumerateResult(tableType, dataReader, directQuery.DataContext))
-                        yield return result;
-                }
-            }
-        }
-
-        /// <summary>
-        /// Enumerates results from a request.
-        /// The result shape can change dynamically
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="dataReader"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        public IEnumerable EnumerateResult(Type tableType, IDataReader dataReader, DataContext dataContext)
-        {
-            return EnumerateResult(tableType, true, dataReader, dataContext);
-        }
-
-        /// <summary>
-        /// Enumerates results from a request.
-        /// The result shape can change dynamically
-        /// </summary>
-        /// <param name="tableType"></param>
-        /// <param name="dynamicallyReadShape">Set True to change reader shape dynamically</param>
-        /// <param name="dataReader"></param>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        protected virtual IEnumerable EnumerateResult(Type tableType, bool dynamicallyReadShape, IDataReader dataReader, DataContext dataContext)
-        {
-            Delegate tableBuilder = null;
-            while (dataReader.Read())
-            {
-                if (tableBuilder == null || dynamicallyReadShape)
-                    tableBuilder = GetTableBuilder(tableType, dataReader, dataContext);
-                var row = tableBuilder.DynamicInvoke(dataReader, dataContext._MappingContext);
-                row = GetUniqueRow(row, tableType, dataContext);
-                yield return row;
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using DbLinq.Data.Linq.Database;
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+using DbLinq.Util;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class QueryRunner : IQueryRunner
+    {
+        /// <summary>
+        /// Enumerates all records return by SQL request
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="selectQuery"></param>
+        /// <returns></returns>
+        public virtual IEnumerable<T> Select<T>(SelectQuery selectQuery)
+        {
+            var rowObjectCreator = selectQuery.GetRowObjectCreator<T>();
+
+            IList<T> results = new List<T>();
+
+            // handle the special case where the query is empty, meaning we don't need the DB
+            if (string.IsNullOrEmpty(selectQuery.Sql.ToString()))
+            {
+                results.Add(rowObjectCreator(null, null));
+            }
+            else
+            {
+                using (var dbCommand = selectQuery.GetCommand())
+                {
+                    // write query to log
+                    selectQuery.DataContext.WriteLog(dbCommand.Command);
+
+                    using (var reader = dbCommand.Command.ExecuteReader())
+                    {
+                        while (reader.Read())
+                        {
+                            // someone told me one day this could happen (in SQLite)
+                            if (reader.FieldCount == 0)
+                                continue;
+
+                            var row = rowObjectCreator(reader, selectQuery.DataContext._MappingContext);
+                            // the conditions to register and watch an entity are:
+                            // - not null (can this happen?)
+                            // - registered in the model
+                            if (row != null && selectQuery.DataContext.ObjectTrackingEnabled && 
+                                    selectQuery.DataContext.Mapping.GetTable(row.GetType()) != null)
+                            {
+                                row = (T)selectQuery.DataContext.Register(row);
+                            }
+                            results.Add(row);
+                        }
+                    }
+                }
+            }
+            return results;
+        }
+
+        /// <summary>
+        /// Returns a unique row (common reference)
+        /// </summary>
+        /// <param name="row"></param>
+        /// <param name="t"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        protected virtual object GetUniqueRow(object row, Type t, DataContext dataContext)
+        {
+            if (row != null && dataContext.Mapping.GetTable(row.GetType()) != null)
+                row = dataContext.Register(row);
+            return row;
+        }
+
+        /// <summary>
+        /// Returns a unique row (common reference)
+        /// </summary>
+        /// <param name="row"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        protected virtual T GetUniqueRow<T>(object row, DataContext dataContext)
+        {
+            return (T)GetUniqueRow(row, typeof(T), dataContext);
+        }
+
+        public virtual S SelectScalar<S>(SelectQuery selectQuery)
+        {
+            switch (selectQuery.ExecuteMethodName)
+            {
+                case null: // some calls, like Count() generate SQL and the resulting projection method name is null (never initialized)
+                    return SelectSingle<S>(selectQuery, false); // Single() for safety, but First() should work
+                case "First":
+                    return SelectFirst<S>(selectQuery, false);
+                case "FirstOrDefault":
+                    return SelectFirst<S>(selectQuery, true);
+                case "Single":
+                    return SelectSingle<S>(selectQuery, false);
+                case "SingleOrDefault":
+                    return SelectSingle<S>(selectQuery, true);
+                case "Last":
+                    return SelectLast<S>(selectQuery, false);
+            }
+            throw Error.BadArgument("S0077: Unhandled method '{0}'", selectQuery.ExecuteMethodName);
+        }
+
+        /// <summary>
+        /// Returns first item in query.
+        /// If no row is found then if default allowed returns default(S), throws exception otherwise
+        /// </summary>
+        /// <typeparam name="S"></typeparam>
+        /// <param name="selectQuery"></param>
+        /// <param name="allowDefault"></param>
+        /// <returns></returns>
+        protected virtual S SelectFirst<S>(SelectQuery selectQuery, bool allowDefault)
+        {
+            foreach (var row in Select<S>(selectQuery))
+                return row;
+            if (!allowDefault)
+                throw new InvalidOperationException();
+            return default(S);
+        }
+
+        /// <summary>
+        /// Returns single item in query
+        /// If more than one item is found, throws an exception
+        /// If no row is found then if default allowed returns default(S), throws exception otherwise
+        /// </summary>
+        /// <typeparam name="S"></typeparam>
+        /// <param name="selectQuery"></param>
+        /// <param name="allowDefault"></param>
+        /// <returns></returns>
+        protected virtual S SelectSingle<S>(SelectQuery selectQuery, bool allowDefault)
+        {
+            S firstRow = default(S);
+            int rowCount = 0;
+            foreach (var row in Select<S>(selectQuery))
+            {
+                if (rowCount > 1)
+                    throw new InvalidOperationException();
+                firstRow = row;
+                rowCount++;
+            }
+            if (!allowDefault && rowCount == 0)
+                throw new InvalidOperationException();
+            return firstRow;
+        }
+
+        /// <summary>
+        /// Returns last item in query
+        /// </summary>
+        /// <typeparam name="S"></typeparam>
+        /// <param name="selectQuery"></param>
+        /// <param name="allowDefault"></param>
+        /// <returns></returns>
+        protected virtual S SelectLast<S>(SelectQuery selectQuery, bool allowDefault)
+        {
+            S lastRow = default(S);
+            int rowCount = 0;
+            foreach (var row in Select<S>(selectQuery))
+            {
+                lastRow = row;
+                rowCount++;
+            }
+            if (!allowDefault && rowCount == 0)
+                throw new InvalidOperationException();
+            return lastRow;
+        }
+
+        /// <summary>
+        /// Runs an InsertQuery on a provided object
+        /// </summary>
+        /// <param name="target"></param>
+        /// <param name="insertQuery"></param>
+        public void Insert(object target, UpsertQuery insertQuery)
+        {
+            Upsert(target, insertQuery);
+        }
+
+        private void Upsert(object target, UpsertQuery insertQuery)
+        {
+            insertQuery.Target = target;
+            var dataContext = insertQuery.DataContext;
+            using (var dbCommand = insertQuery.GetCommand())
+            {
+
+                // log first command
+                dataContext.WriteLog(dbCommand.Command);
+
+                // we may have two commands
+                int rowsCount = dbCommand.Command.ExecuteNonQuery();
+                // the second reads output parameters
+                if (!string.IsNullOrEmpty(insertQuery.IdQuerySql.ToString()))
+                {
+                    var outputCommandTransaction = new ParameterizedQuery(dataContext, insertQuery.IdQuerySql, insertQuery.PrimaryKeyParameters);
+                    outputCommandTransaction.Target = target;
+
+                    var outputCommand = outputCommandTransaction.GetCommandTransactional(false);
+
+                    // then run commands
+                    outputCommand.Command.Transaction = dbCommand.Command.Transaction;
+
+                    // log second command
+                    dataContext.WriteLog(outputCommand.Command);
+
+                    using (var dataReader = outputCommand.Command.ExecuteReader())
+                    {
+                        if (! dataReader.Read())
+                            throw new InvalidOperationException("Could not retrieve data for inserted row on " + target.GetType());
+
+                        int outputParameterIndex = 0;
+                        for (IEnumerator<ObjectOutputParameterExpression> output = insertQuery.OutputParameters.GetEnumerator(); output.MoveNext(); ++outputParameterIndex)
+                        {
+                            var outputDbParameter = dataReader.GetValue(outputParameterIndex);
+                            SetOutputParameterValue(target, output.Current, outputDbParameter);
+                        }
+                    }
+                }
+                dbCommand.Commit();
+            }
+        }
+
+        protected virtual void SetOutputParameterValue(object target, ObjectOutputParameterExpression outputParameter, object value)
+        {
+            // depending on vendor, we can have DBNull or null
+            // so we handle both
+            if (value is DBNull || value == null)
+                outputParameter.SetValue(target, null);
+            else
+                outputParameter.SetValue(target, TypeConvert.To(value, outputParameter.ValueType));
+        }
+
+        /// <summary>
+        /// Performs an update
+        /// </summary>
+        /// <param name="target">Entity to be flushed</param>
+        /// <param name="updateQuery">SQL update query</param>
+        /// <param name="modifiedMembers">List of modified members, or null to update all members</param>
+        public void Update(object target, UpsertQuery updateQuery, IList<MemberInfo> modifiedMembers)
+        {
+            Upsert(target, updateQuery);
+        }
+
+        /// <summary>
+        /// Performs a delete
+        /// </summary>
+        /// <param name="target">Entity to be deleted</param>
+        /// <param name="deleteQuery">SQL delete query</param>
+        public void Delete(object target, DeleteQuery deleteQuery)
+        {
+            deleteQuery.Target = target;
+            using (var dbCommand = deleteQuery.GetCommand())
+            {
+
+                // log command
+                deleteQuery.DataContext.WriteLog(dbCommand.Command);
+
+                int rowsCount = dbCommand.Command.ExecuteNonQuery();
+                dbCommand.Commit();
+            }
+        }
+
+        /// <summary>
+        /// Fills dbCommand parameters, given names and values
+        /// </summary>
+        /// <param name="dbCommand"></param>
+        /// <param name="parameterNames"></param>
+        /// <param name="parameterValues"></param>
+        private void FeedParameters(IDbCommand dbCommand, IList<string> parameterNames, IList<object> parameterValues)
+        {
+            for (int parameterIndex = 0; parameterIndex < parameterNames.Count; parameterIndex++)
+            {
+                var dbParameter = dbCommand.CreateParameter();
+                dbParameter.ParameterName = parameterNames[parameterIndex];
+                dbParameter.SetValue(parameterValues[parameterIndex]);
+                dbCommand.Parameters.Add(dbParameter);
+            }
+        }
+
+        /// <summary>
+        /// Runs a direct scalar command
+        /// </summary>
+        /// <param name="directQuery"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public int Execute(DirectQuery directQuery, params object[] parameters)
+        {
+            directQuery.parameterValues = parameters;
+            using (var dbCommand = directQuery.GetCommand())
+            {
+
+                // log command
+                directQuery.DataContext.WriteLog(dbCommand.Command);
+
+                var result = dbCommand.Command.ExecuteScalar();
+                if (result == null || result is DBNull)
+                    return 0;
+                var intResult = TypeConvert.ToNumber<int>(result);
+                return intResult;
+            }
+        }
+
+        // TODO: move method?
+        protected virtual Delegate GetTableBuilder(Type elementType, IDataReader dataReader, DataContext dataContext)
+        {
+            var fields = new List<string>();
+            for (int fieldIndex = 0; fieldIndex < dataReader.FieldCount; fieldIndex++)
+                fields.Add(dataReader.GetName(fieldIndex));
+            return dataContext.QueryBuilder.GetTableReader(elementType, fields, new QueryContext(dataContext));
+        }
+
+        /// <summary>
+        /// Runs a query with a direct statement
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="directQuery"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public IEnumerable ExecuteSelect(Type tableType, DirectQuery directQuery, params object[] parameters)
+        {
+            directQuery.parameterValues = parameters;
+            using (var dbCommand = directQuery.GetCommand())
+            {
+
+                // log query
+                directQuery.DataContext.WriteLog(dbCommand.Command);
+
+                using (var dataReader = dbCommand.Command.ExecuteReader())
+                {
+                    // Did you know? "return EnumerateResult(tableType, dataReader, dataContext);" disposes resources first
+                    // before the enumerator is used
+                    foreach (var result in EnumerateResult(tableType, dataReader, directQuery.DataContext))
+                        yield return result;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Enumerates results from a request.
+        /// The result shape can change dynamically
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="dataReader"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        public IEnumerable EnumerateResult(Type tableType, IDataReader dataReader, DataContext dataContext)
+        {
+            return EnumerateResult(tableType, true, dataReader, dataContext);
+        }
+
+        /// <summary>
+        /// Enumerates results from a request.
+        /// The result shape can change dynamically
+        /// </summary>
+        /// <param name="tableType"></param>
+        /// <param name="dynamicallyReadShape">Set True to change reader shape dynamically</param>
+        /// <param name="dataReader"></param>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        protected virtual IEnumerable EnumerateResult(Type tableType, bool dynamicallyReadShape, IDataReader dataReader, DataContext dataContext)
+        {
+            Delegate tableBuilder = null;
+            while (dataReader.Read())
+            {
+                if (tableBuilder == null || dynamicallyReadShape)
+                    tableBuilder = GetTableBuilder(tableType, dataReader, dataContext);
+                var row = tableBuilder.DynamicInvoke(dataReader, dataContext._MappingContext);
+                row = GetUniqueRow(row, tableType, dataContext);
+                yield return row;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/SpecialExpressionTranslator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/SpecialExpressionTranslator.cs
@@ -1,231 +1,231 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class SpecialExpressionTranslator : ISpecialExpressionTranslator
-    {
-        /// <summary>
-        /// Translate a hierarchy's SpecialExpressions to Expressions
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public Expression Translate(Expression expression)
-        {
-            return expression.Recurse(Analyzer);
-        }
-
-        protected virtual Expression Analyzer(Expression expression)
-        {
-            if (expression is SpecialExpression)
-                return Translate((SpecialExpression)expression);
-            else if (expression is StartIndexOffsetExpression)
-                return Translate(((StartIndexOffsetExpression)expression).InnerExpression);
-            return expression;
-        }
-
-        /// <summary>
-        /// Translates a SpecialExpression to standard Expression equivalent
-        /// </summary>
-        /// <param name="specialExpression"></param>
-        /// <returns></returns>
-        protected virtual Expression Translate(SpecialExpression specialExpression)
-        {
-            var operands = specialExpression.Operands.ToList();
-            switch (specialExpression.SpecialNodeType)  // SETuse
-            {
-                case SpecialExpressionType.IsNull:
-                    return TranslateIsNull(operands);
-                case SpecialExpressionType.IsNotNull:
-                    return TranslateIsNotNull(operands);
-                case SpecialExpressionType.Concat:
-                    return TranslateConcat(operands);
-                //case SpecialExpressionType.Count:
-                //    break;
-                //case SpecialExpressionType.Like:
-                //    break;
-                //case SpecialExpressionType.Min:
-                //    break;
-                //case SpecialExpressionType.Max:
-                //    break;
-                //case SpecialExpressionType.Sum:
-                //    break;
-                //case SpecialExpressionType.Average:
-                //    break;
-                case SpecialExpressionType.StringLength:
-                    return TranslateStringLength(operands);
-                case SpecialExpressionType.ToUpper:
-                    return GetStandardCallInvoke("ToUpper", operands);
-                case SpecialExpressionType.ToLower:
-                    return GetStandardCallInvoke("ToLower", operands);
-                //case SpecialExpressionType.In:
-                //    break;
-
-                case SpecialExpressionType.StringInsert:
-                    return GetStandardCallInvoke("Insert", operands);
-                case SpecialExpressionType.Substring:
-                case SpecialExpressionType.Trim:
-                case SpecialExpressionType.LTrim:
-                case SpecialExpressionType.RTrim:
-                case SpecialExpressionType.Replace:
-                case SpecialExpressionType.Remove:
-                case SpecialExpressionType.IndexOf:
-                case SpecialExpressionType.Year:
-                case SpecialExpressionType.Month:
-                case SpecialExpressionType.Day:
-                case SpecialExpressionType.Hour:
-                case SpecialExpressionType.Minute:
-                case SpecialExpressionType.Millisecond:
-                case SpecialExpressionType.Date:
-                    return GetStandardCallInvoke(specialExpression.SpecialNodeType.ToString(), operands);
-                case SpecialExpressionType.Now:
-                    return GetDateTimeNowCall(operands);
-                case SpecialExpressionType.DateDiffInMilliseconds:
-                    return GetCallDateDiffInMilliseconds(operands);
-                default:
-                    throw Error.BadArgument("S0078: Implement translator for {0}", specialExpression.SpecialNodeType);
-
-            }
-        }
-
-        private Expression GetCallDateDiffInMilliseconds(List<Expression> operands)
-        {
-            return Expression.MakeMemberAccess(Expression.Subtract(operands.First(), operands.ElementAt(1)),
-                                                typeof(TimeSpan).GetProperty("TotalMilliseconds"));
-        }
-
-        private Expression GetDateTimeNowCall(List<Expression> operands)
-        {
-            return Expression.Call(typeof(DateTime).GetProperty("Now").GetGetMethod());
-        }
-
-        private Expression TranslateStringLength(List<Expression> operands)
-        {
-            return Expression.MakeMemberAccess(operands[0], typeof(string).GetProperty("Length"));
-        }
-
-        protected virtual Expression GetStandardCallInvoke(string methodName, List<Expression> operands)
-        {
-            var parametersExpressions = operands.Skip(1);
-            return Expression.Call(operands[0],
-                                   operands[0].Type.GetMethod(methodName, parametersExpressions.Select(op => op.Type).ToArray()),
-                                   parametersExpressions);
-        }
-
-        //protected virtual Expression TranslateRemove(List<Expression> operands)
-        //{
-        //    if (operands.Count > 2)
-        //    {
-        //        return Expression.Call(operands[0], 
-        //                            typeof(string).GetMethod("Remove", new[] { typeof(int), typeof(int) }), 
-        //                            operands[1], operands[2]);
-        //    }
-        //    return Expression.Call(operands[0], 
-        //                            typeof(string).GetMethod("Remove", new[] { typeof(int) }),
-        //                            operands[1]);
-        //}
-
-        //protected virtual Expression TranslateStringIndexOf(List<Expression> operands)
-        //{
-        //    if (operands.Count == 2 && operands[1].Type == typeof(string))
-        //    {
-        //         return Expression.Call(operands[0], 
-        //                            typeof(string).GetMethod("IndexOf", new[] { typeof(string)}), 
-        //                            operands[1]);
-        //    }
-        //    throw new NotSupportedException();
-        //}
-
-        //protected virtual Expression TranslateReplace(List<Expression> operands)
-        //{
-        //    if (operands.ElementAt(1).Type == typeof(string))
-        //    {
-        //        return Expression.Call(operands[0],
-        //                           typeof(string).GetMethod("Replace", new[] { typeof(string), typeof(string) }),
-        //                           operands[1], operands[2]);
-        //    }
-        //    return Expression.Call(operands[0],
-        //                        typeof(string).GetMethod("Replace", new[] { typeof(char), typeof(char) }),
-        //                        operands[1], operands[2]);
-        //}
-        //protected virtual Expression TranslateInsertString(List<Expression> operands)
-        //{
-        //    return Expression.Call(operands.First(), typeof(string).GetMethod("Insert"), operands[1], operands[2]);
-        //}
-
-        //protected virtual Expression TranslateTrim(List<Expression> operands)
-        //{
-        //    return Expression.Call(operands.First(), typeof(string).GetMethod("Trim", new Type[] { }));
-        //}
-        //protected virtual Expression TranslateSubString(List<Expression> operands)
-        //{
-        //    if (operands.Count > 2)
-        //    {
-        //        return Expression.Call(operands[0],
-        //                               typeof(string).GetMethod("Substring", new[] { operands[1].Type, operands[2].Type }),
-        //                               operands[1], operands[2]);
-        //    }
-
-        //    return Expression.Call(operands[0],
-        //                           typeof(string).GetMethod("Substring", new[] { operands[1].Type }),
-        //                           operands[1]);
-        //}
-
-        //protected virtual Expression TranslateToLower(List<Expression> operands)
-        //{
-        //    return Expression.Call(operands[0], typeof(string).GetMethod("ToLower", new Type[0]));
-        //}
-
-        //protected virtual Expression TranslateToUpper(List<Expression> operands)
-        //{
-        //    return Expression.Call(operands[0], typeof(string).GetMethod("ToUpper", new Type[0]));
-        //}
-
-        protected virtual Expression TranslateConcat(List<Expression> operands)
-        {
-            return Expression.Add(operands[0], operands[1]);
-        }
-
-        protected virtual Expression TranslateIsNotNull(List<Expression> operands)
-        {
-            return Expression.NotEqual(operands[0], Expression.Constant(null));
-        }
-
-        protected virtual Expression TranslateIsNull(List<Expression> operands)
-        {
-            return Expression.Equal(operands[0], Expression.Constant(null));
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class SpecialExpressionTranslator : ISpecialExpressionTranslator
+    {
+        /// <summary>
+        /// Translate a hierarchy's SpecialExpressions to Expressions
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public Expression Translate(Expression expression)
+        {
+            return expression.Recurse(Analyzer);
+        }
+
+        protected virtual Expression Analyzer(Expression expression)
+        {
+            if (expression is SpecialExpression)
+                return Translate((SpecialExpression)expression);
+            else if (expression is StartIndexOffsetExpression)
+                return Translate(((StartIndexOffsetExpression)expression).InnerExpression);
+            return expression;
+        }
+
+        /// <summary>
+        /// Translates a SpecialExpression to standard Expression equivalent
+        /// </summary>
+        /// <param name="specialExpression"></param>
+        /// <returns></returns>
+        protected virtual Expression Translate(SpecialExpression specialExpression)
+        {
+            var operands = specialExpression.Operands.ToList();
+            switch (specialExpression.SpecialNodeType)  // SETuse
+            {
+                case SpecialExpressionType.IsNull:
+                    return TranslateIsNull(operands);
+                case SpecialExpressionType.IsNotNull:
+                    return TranslateIsNotNull(operands);
+                case SpecialExpressionType.Concat:
+                    return TranslateConcat(operands);
+                //case SpecialExpressionType.Count:
+                //    break;
+                //case SpecialExpressionType.Like:
+                //    break;
+                //case SpecialExpressionType.Min:
+                //    break;
+                //case SpecialExpressionType.Max:
+                //    break;
+                //case SpecialExpressionType.Sum:
+                //    break;
+                //case SpecialExpressionType.Average:
+                //    break;
+                case SpecialExpressionType.StringLength:
+                    return TranslateStringLength(operands);
+                case SpecialExpressionType.ToUpper:
+                    return GetStandardCallInvoke("ToUpper", operands);
+                case SpecialExpressionType.ToLower:
+                    return GetStandardCallInvoke("ToLower", operands);
+                //case SpecialExpressionType.In:
+                //    break;
+
+                case SpecialExpressionType.StringInsert:
+                    return GetStandardCallInvoke("Insert", operands);
+                case SpecialExpressionType.Substring:
+                case SpecialExpressionType.Trim:
+                case SpecialExpressionType.LTrim:
+                case SpecialExpressionType.RTrim:
+                case SpecialExpressionType.Replace:
+                case SpecialExpressionType.Remove:
+                case SpecialExpressionType.IndexOf:
+                case SpecialExpressionType.Year:
+                case SpecialExpressionType.Month:
+                case SpecialExpressionType.Day:
+                case SpecialExpressionType.Hour:
+                case SpecialExpressionType.Minute:
+                case SpecialExpressionType.Millisecond:
+                case SpecialExpressionType.Date:
+                    return GetStandardCallInvoke(specialExpression.SpecialNodeType.ToString(), operands);
+                case SpecialExpressionType.Now:
+                    return GetDateTimeNowCall(operands);
+                case SpecialExpressionType.DateDiffInMilliseconds:
+                    return GetCallDateDiffInMilliseconds(operands);
+                default:
+                    throw Error.BadArgument("S0078: Implement translator for {0}", specialExpression.SpecialNodeType);
+
+            }
+        }
+
+        private Expression GetCallDateDiffInMilliseconds(List<Expression> operands)
+        {
+            return Expression.MakeMemberAccess(Expression.Subtract(operands.First(), operands.ElementAt(1)),
+                                                typeof(TimeSpan).GetProperty("TotalMilliseconds"));
+        }
+
+        private Expression GetDateTimeNowCall(List<Expression> operands)
+        {
+            return Expression.Call(typeof(DateTime).GetProperty("Now").GetGetMethod());
+        }
+
+        private Expression TranslateStringLength(List<Expression> operands)
+        {
+            return Expression.MakeMemberAccess(operands[0], typeof(string).GetProperty("Length"));
+        }
+
+        protected virtual Expression GetStandardCallInvoke(string methodName, List<Expression> operands)
+        {
+            var parametersExpressions = operands.Skip(1);
+            return Expression.Call(operands[0],
+                                   operands[0].Type.GetMethod(methodName, parametersExpressions.Select(op => op.Type).ToArray()),
+                                   parametersExpressions);
+        }
+
+        //protected virtual Expression TranslateRemove(List<Expression> operands)
+        //{
+        //    if (operands.Count > 2)
+        //    {
+        //        return Expression.Call(operands[0], 
+        //                            typeof(string).GetMethod("Remove", new[] { typeof(int), typeof(int) }), 
+        //                            operands[1], operands[2]);
+        //    }
+        //    return Expression.Call(operands[0], 
+        //                            typeof(string).GetMethod("Remove", new[] { typeof(int) }),
+        //                            operands[1]);
+        //}
+
+        //protected virtual Expression TranslateStringIndexOf(List<Expression> operands)
+        //{
+        //    if (operands.Count == 2 && operands[1].Type == typeof(string))
+        //    {
+        //         return Expression.Call(operands[0], 
+        //                            typeof(string).GetMethod("IndexOf", new[] { typeof(string)}), 
+        //                            operands[1]);
+        //    }
+        //    throw new NotSupportedException();
+        //}
+
+        //protected virtual Expression TranslateReplace(List<Expression> operands)
+        //{
+        //    if (operands.ElementAt(1).Type == typeof(string))
+        //    {
+        //        return Expression.Call(operands[0],
+        //                           typeof(string).GetMethod("Replace", new[] { typeof(string), typeof(string) }),
+        //                           operands[1], operands[2]);
+        //    }
+        //    return Expression.Call(operands[0],
+        //                        typeof(string).GetMethod("Replace", new[] { typeof(char), typeof(char) }),
+        //                        operands[1], operands[2]);
+        //}
+        //protected virtual Expression TranslateInsertString(List<Expression> operands)
+        //{
+        //    return Expression.Call(operands.First(), typeof(string).GetMethod("Insert"), operands[1], operands[2]);
+        //}
+
+        //protected virtual Expression TranslateTrim(List<Expression> operands)
+        //{
+        //    return Expression.Call(operands.First(), typeof(string).GetMethod("Trim", new Type[] { }));
+        //}
+        //protected virtual Expression TranslateSubString(List<Expression> operands)
+        //{
+        //    if (operands.Count > 2)
+        //    {
+        //        return Expression.Call(operands[0],
+        //                               typeof(string).GetMethod("Substring", new[] { operands[1].Type, operands[2].Type }),
+        //                               operands[1], operands[2]);
+        //    }
+
+        //    return Expression.Call(operands[0],
+        //                           typeof(string).GetMethod("Substring", new[] { operands[1].Type }),
+        //                           operands[1]);
+        //}
+
+        //protected virtual Expression TranslateToLower(List<Expression> operands)
+        //{
+        //    return Expression.Call(operands[0], typeof(string).GetMethod("ToLower", new Type[0]));
+        //}
+
+        //protected virtual Expression TranslateToUpper(List<Expression> operands)
+        //{
+        //    return Expression.Call(operands[0], typeof(string).GetMethod("ToUpper", new Type[0]));
+        //}
+
+        protected virtual Expression TranslateConcat(List<Expression> operands)
+        {
+            return Expression.Add(operands[0], operands[1]);
+        }
+
+        protected virtual Expression TranslateIsNotNull(List<Expression> operands)
+        {
+            return Expression.NotEqual(operands[0], Expression.Constant(null));
+        }
+
+        protected virtual Expression TranslateIsNull(List<Expression> operands)
+        {
+            return Expression.Equal(operands[0], Expression.Constant(null));
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/SqlBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Implementation/SqlBuilder.cs
@@ -1,499 +1,499 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.ExpressionMutator;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-using DbLinq.Factory;
-using DbLinq.Util;
-
-namespace DbLinq.Data.Linq.Sugar.Implementation
-{
-    internal class SqlBuilder : ISqlBuilder
-    {
-        public IExpressionQualifier ExpressionQualifier { get; set; }
-
-        public SqlBuilder()
-        {
-            ExpressionQualifier = ObjectFactory.Get<IExpressionQualifier>();
-        }
-
-        /// <summary>
-        /// Builds a SQL string, based on a QueryContext
-        /// The build indirectly depends on ISqlProvider which provides all SQL Parts.
-        /// </summary>
-        /// <param name="expressionQuery"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public SqlStatement BuildSelect(ExpressionQuery expressionQuery, QueryContext queryContext)
-        {
-            return Build(expressionQuery.Select, queryContext);
-        }
-
-        /// <summary>
-        /// Returns a list of sorted tables, given a select expression.
-        /// The tables are sorted by dependency: independent tables first, dependent tables next
-        /// </summary>
-        /// <param name="selectExpression"></param>
-        /// <returns></returns>
-        protected IList<TableExpression> GetSortedTables(SelectExpression selectExpression)
-        {
-            var tables = new List<TableExpression>();
-            foreach (var table in selectExpression.Tables)
-            {
-                // the rules are:
-                // a table climbs up to 0 until we find the table it depends on
-                // we keep the index and insert on it
-                // we place joining tables under joined tables
-                int tableIndex;
-                for (tableIndex = tables.Count; tableIndex > 0; tableIndex--)
-                {
-                    // above us, the joined table? Stop now
-                    if (tables[tableIndex - 1] == table.JoinedTable)
-                        break;
-                    // if the current table is joining and we have a non-joining table above, we stop here too
-                    if (table.JoinExpression != null && tables[tableIndex - 1].JoinExpression == null)
-                        break;
-                }
-                tables.Insert(tableIndex, table);
-            }
-            return tables;
-        }
-
-        /// <summary>
-        /// Main SQL builder
-        /// </summary>
-        /// <param name="selectExpression"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        public SqlStatement Build(SelectExpression selectExpression, QueryContext queryContext)
-        {
-            var translator = GetTranslator(queryContext.DataContext.Vendor.SqlProvider);
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            selectExpression = translator.OuterExpression(selectExpression);
-
-            // A scope usually has:
-            // - a SELECT: the operation creating a CLR object with data coming from SQL tier
-            // - a FROM: list of tables
-            // - a WHERE: list of conditions
-            // - a GROUP BY: grouping by selected columns
-            // - a ORDER BY: sort
-            var select = BuildSelect(selectExpression, queryContext);
-            if (select.ToString() == string.Empty)
-            {
-                SubSelectExpression subselect = null;
-                if (selectExpression.Tables.Count == 1)
-                    subselect = selectExpression.Tables[0] as SubSelectExpression;
-                if(subselect != null)
-                    return sqlProvider.GetParenthesis(Build(subselect.Select, queryContext));
-            }
-
-            // TODO: the following might be wrong (at least this might be the wrong place to do this
-            if (select.ToString() == string.Empty)
-                select = new SqlStatement("SELECT " + sqlProvider.GetLiteral(null) + " AS " + sqlProvider.GetSafeName("Empty"));
-
-            var tables = GetSortedTables(selectExpression);
-            var from = BuildFrom(tables, queryContext);
-            var join = BuildJoin(tables, queryContext);
-            var where = BuildWhere(tables, selectExpression.Where, queryContext);
-            var groupBy = BuildGroupBy(selectExpression.Group, queryContext);
-            var having = BuildHaving(selectExpression.Where, queryContext);
-            var orderBy = BuildOrderBy(selectExpression.OrderBy, queryContext);
-            select = Join(queryContext, select, from, join, where, groupBy, having, orderBy);
-            select = BuildLimit(selectExpression, select, queryContext);
-
-            if (selectExpression.NextSelectExpression != null)
-            {
-                var nextLiteralSelect = Build(selectExpression.NextSelectExpression, queryContext);
-                select = queryContext.DataContext.Vendor.SqlProvider.GetLiteral(
-                    selectExpression.NextSelectExpressionOperator,
-                    select, nextLiteralSelect);
-            }
-
-            return select;
-        }
-
-        public SqlStatement Join(QueryContext queryContext, params SqlStatement[] clauses)
-        {
-            return SqlStatement.Join(queryContext.DataContext.Vendor.SqlProvider.NewLine,
-                               (from clause in clauses where clause.ToString() != string.Empty select clause).ToList());
-        }
-
-        /// <summary>
-        /// The simple part: converts an expression to SQL
-        /// This is not used for FROM clause
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        protected virtual SqlStatement BuildExpression(Expression expression, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var currentPrecedence = ExpressionQualifier.GetPrecedence(expression);
-            // first convert operands
-            var operands = expression.GetOperands();
-            var literalOperands = new List<SqlStatement>();
-            foreach (var operand in operands)
-            {
-                var operandPrecedence = ExpressionQualifier.GetPrecedence(operand);
-                var literalOperand = BuildExpression(operand, queryContext);
-                if (operandPrecedence > currentPrecedence)
-                    literalOperand = sqlProvider.GetParenthesis(literalOperand);
-                literalOperands.Add(literalOperand);
-            }
-
-            // then converts expression
-            if (expression is SpecialExpression)
-                return sqlProvider.GetLiteral(((SpecialExpression)expression).SpecialNodeType, literalOperands);
-            if (expression is EntitySetExpression)
-                expression = ((EntitySetExpression)expression).TableExpression;
-            if (expression is TableExpression)
-            {
-                var tableExpression = (TableExpression)expression;
-                if (tableExpression.Alias != null) // if we have an alias, use it
-                {
-                    return sqlProvider.GetColumn(sqlProvider.GetTableAlias(tableExpression.Alias),
-                                                 sqlProvider.GetColumns());
-                }
-                return sqlProvider.GetColumns();
-            }
-            if (expression is ColumnExpression)
-            {
-                var columnExpression = (ColumnExpression)expression;
-                if (columnExpression.Table.Alias != null)
-                {
-                    return sqlProvider.GetColumn(sqlProvider.GetTableAlias(columnExpression.Table.Alias),
-                                                 columnExpression.Name);
-                }
-                return sqlProvider.GetColumn(columnExpression.Name);
-            }
-            if (expression is InputParameterExpression)
-            {
-                var inputParameterExpression = (InputParameterExpression)expression;
-                if (expression.Type.IsArray)
-                {
-                    int i = 0;
-                    List<SqlStatement> inputParameters = new List<SqlStatement>();
-                    foreach (object p in (Array)inputParameterExpression.GetValue())
-                    {
-                        inputParameters.Add(new SqlStatement(new SqlParameterPart(sqlProvider.GetParameterName(inputParameterExpression.Alias + i.ToString()),
-                                                          inputParameterExpression.Alias + i.ToString())));
-                        ++i;
-                    }
-                    return new SqlStatement(sqlProvider.GetLiteral(inputParameters.ToArray()));
-                }
-                return
-                    new SqlStatement(new SqlParameterPart(sqlProvider.GetParameterName(inputParameterExpression.Alias),
-                                                          inputParameterExpression.Alias));
-            }
-            if (expression is SelectExpression)
-                return Build((SelectExpression)expression, queryContext);
-            if (expression is ConstantExpression)
-                return sqlProvider.GetLiteral(((ConstantExpression)expression).Value);
-            if (expression is GroupExpression)
-                return BuildExpression(((GroupExpression)expression).GroupedExpression, queryContext);
-
-            StartIndexOffsetExpression indexExpression = expression as StartIndexOffsetExpression;
-            if (indexExpression!=null)
-            {
-                if (indexExpression.StartsAtOne)
-                {
-                    literalOperands.Add(BuildExpression(Expression.Constant(1), queryContext));
-                    return sqlProvider.GetLiteral(ExpressionType.Add, literalOperands);
-                }
-                else
-                    return literalOperands.First();
-            }
-            if (expression.NodeType == ExpressionType.Convert || expression.NodeType == ExpressionType.ConvertChecked)
-            {
-                var unaryExpression = (UnaryExpression)expression;
-                var firstOperand = literalOperands.First();
-                if (IsConversionRequired(unaryExpression))
-                    return sqlProvider.GetLiteralConvert(firstOperand, unaryExpression.Type);
-                return firstOperand;
-            }
-            return sqlProvider.GetLiteral(expression.NodeType, literalOperands);
-        }
-
-        private Expressions.ExpressionTranslator GetTranslator(DbLinq.Vendor.ISqlProvider provider)
-        {
-            var p = provider as DbLinq.Vendor.Implementation.SqlProvider;
-            if (p != null)
-                return p.GetTranslator();
-            return new ExpressionTranslator();
-        }
-
-        /// <summary>
-        /// Determines if a SQL conversion is required
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        private bool IsConversionRequired(UnaryExpression expression)
-        {
-            // obvious (and probably never happens), conversion to the same type
-            if (expression.Type == expression.Operand.Type)
-                return false;
-            // second, nullable to non-nullable for the same type
-            if (expression.Type.IsNullable() && !expression.Operand.Type.IsNullable())
-            {
-                if (expression.Type.GetNullableType() == expression.Operand.Type)
-                    return false;
-            }
-            // third, non-nullable to nullable
-            if (!expression.Type.IsNullable() && expression.Operand.Type.IsNullable())
-            {
-                if (expression.Type == expression.Operand.Type.GetNullableType())
-                    return false;
-            }
-            // found no excuse not to convert? then convert
-            return true;
-        }
-
-        protected virtual bool MustDeclareAsJoin(IList<TableExpression> tables, TableExpression table)
-        {
-            // the first table can not be declared as join
-            if (table == tables[0])
-                return false;
-            // we must declare as join, whatever the join is,
-            // if some of the registered tables are registered as complex join
-            if (tables.Any(t => t.JoinType != TableJoinType.Inner))
-                return table.JoinExpression != null;
-            return false;
-        }
-
-        protected virtual SqlStatement BuildFrom(IList<TableExpression> tables, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var fromClauses = new List<SqlStatement>();
-            foreach (var tableExpression in tables)
-            {
-                if (!MustDeclareAsJoin(tables, tableExpression))
-                {
-                    if (tableExpression.Alias != null)
-                    {
-                        string tableAlias;
-
-                        // All subqueries has an alias in FROM
-                        SubSelectExpression subquery = tableExpression as SubSelectExpression;
-                        if (subquery == null)
-                            tableAlias = sqlProvider.GetTableAsAlias(tableExpression.Name, tableExpression.Alias);
-                        else
-                        {
-                            var subqueryStatements = new SqlStatement(Build(subquery.Select, queryContext));
-                            tableAlias = sqlProvider.GetSubQueryAsAlias(subqueryStatements.ToString(), tableExpression.Alias);
-                        }
-
-                        if ((tableExpression.JoinType & TableJoinType.LeftOuter) != 0)
-                            tableAlias = "/* LEFT OUTER */ " + tableAlias;
-                        if ((tableExpression.JoinType & TableJoinType.RightOuter) != 0)
-                            tableAlias = "/* RIGHT OUTER */ " + tableAlias;
-                        fromClauses.Add(tableAlias);
-                    }
-                    else
-                    {
-                        fromClauses.Add(sqlProvider.GetTable(tableExpression.Name));
-                    }
-                }
-            }
-            return sqlProvider.GetFromClause(fromClauses.ToArray());
-        }
-
-        /// <summary>
-        /// Builds join clauses
-        /// </summary>
-        /// <param name="tables"></param>
-        /// <param name="queryContext"></param>
-        /// <returns></returns>
-        protected virtual SqlStatement BuildJoin(IList<TableExpression> tables, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var joinClauses = new List<SqlStatement>();
-            foreach (var tableExpression in tables)
-            {
-                // this is the pending declaration of direct tables
-                if (MustDeclareAsJoin(tables, tableExpression))
-                {
-                    // get constitutive Parts
-                    var joinExpression = BuildExpression(tableExpression.JoinExpression, queryContext);
-                    var tableAlias = sqlProvider.GetTableAsAlias(tableExpression.Name, tableExpression.Alias);
-                    SqlStatement joinClause;
-                    switch (tableExpression.JoinType)
-                    {
-                        case TableJoinType.Inner:
-                            joinClause = sqlProvider.GetInnerJoinClause(tableAlias, joinExpression);
-                            break;
-                        case TableJoinType.LeftOuter:
-                            joinClause = sqlProvider.GetLeftOuterJoinClause(tableAlias, joinExpression);
-                            break;
-                        case TableJoinType.RightOuter:
-                            joinClause = sqlProvider.GetRightOuterJoinClause(tableAlias, joinExpression);
-                            break;
-                        case TableJoinType.FullOuter:
-                            throw new NotImplementedException();
-                        default:
-                            throw new ArgumentOutOfRangeException();
-                    }
-                    joinClauses.Add(joinClause);
-                }
-            }
-            return sqlProvider.GetJoinClauses(joinClauses.ToArray());
-        }
-
-        protected virtual bool IsHavingClause(Expression expression)
-        {
-            bool isHaving = false;
-            expression.Recurse(delegate(Expression e)
-                                   {
-                                       if (e is GroupExpression)
-                                           isHaving = true;
-                                       return e;
-                                   });
-            return isHaving;
-        }
-
-        protected virtual SqlStatement BuildWhere(IList<TableExpression> tables, IList<Expression> wheres, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var whereClauses = new List<SqlStatement>();
-            foreach (var tableExpression in tables)
-            {
-                if (!MustDeclareAsJoin(tables, tableExpression) && tableExpression.JoinExpression != null)
-                    whereClauses.Add(BuildExpression(tableExpression.JoinExpression, queryContext));
-            }
-            foreach (var whereExpression in wheres)
-            {
-                if (!IsHavingClause(whereExpression))
-                    whereClauses.Add(BuildExpression(whereExpression, queryContext));
-            }
-            return sqlProvider.GetWhereClause(whereClauses.ToArray());
-        }
-
-        protected virtual SqlStatement BuildHaving(IList<Expression> wheres, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var havingClauses = new List<SqlStatement>();
-            foreach (var whereExpression in wheres)
-            {
-                if (IsHavingClause(whereExpression))
-                    havingClauses.Add(BuildExpression(whereExpression, queryContext));
-            }
-            return sqlProvider.GetHavingClause(havingClauses.ToArray());
-        }
-
-        protected virtual SqlStatement GetGroupByClause(ColumnExpression columnExpression, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            if (columnExpression.Table.Alias != null)
-            {
-                return sqlProvider.GetColumn(sqlProvider.GetTableAlias(columnExpression.Table.Alias),
-                                             columnExpression.Name);
-            }
-            return sqlProvider.GetColumn(columnExpression.Name);
-        }
-
-        protected virtual SqlStatement BuildGroupBy(IList<GroupExpression> groupByExpressions, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var groupByClauses = new List<SqlStatement>();
-            foreach (var groupByExpression in groupByExpressions)
-            {
-                foreach (var operand in groupByExpression.Clauses)
-                {
-                    var columnOperand = operand as ColumnExpression;
-                    if (columnOperand == null)
-                        throw Error.BadArgument("S0201: Groupby argument must be a ColumnExpression");
-                    groupByClauses.Add(GetGroupByClause(columnOperand, queryContext));
-                }
-            }
-            return sqlProvider.GetGroupByClause(groupByClauses.ToArray());
-        }
-
-        protected virtual SqlStatement BuildOrderBy(IList<OrderByExpression> orderByExpressions, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var orderByClauses = new List<SqlStatement>();
-            foreach (var clause in orderByExpressions)
-            {
-                orderByClauses.Add(sqlProvider.GetOrderByColumn(BuildExpression(clause.ColumnExpression, queryContext),
-                                                                clause.Descending));
-            }
-            return sqlProvider.GetOrderByClause(orderByClauses.ToArray());
-        }
-
-        protected virtual SqlStatement BuildSelect(Expression select, QueryContext queryContext)
-        {
-            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
-            var selectClauses = new List<SqlStatement>();
-            foreach (var selectExpression in select.GetOperands())
-            {
-                var expressionString = BuildExpression(selectExpression, queryContext);
-                if (selectExpression is SelectExpression)
-                    selectClauses.Add(sqlProvider.GetParenthesis(expressionString));
-                else
-                    selectClauses.Add(expressionString);
-            }
-            SelectExpression selectExp = select as SelectExpression;
-            if (selectExp != null)
-            {
-                if (selectExp.Group.Count == 1 && selectExp.Group[0].GroupedExpression == selectExp.Group[0].KeyExpression)
-                {
-                    // this is a select DISTINCT expression
-                    // TODO: better handle selected columns on DISTINCT: I suspect this will not work in some cases
-                    if (selectClauses.Count == 0)
-                    {
-                        selectClauses.Add(sqlProvider.GetColumns());
-                    }
-                    return sqlProvider.GetSelectDistinctClause(selectClauses.ToArray());
-                }
-            }
-            return sqlProvider.GetSelectClause(selectClauses.ToArray());
-        }
-
-        protected virtual SqlStatement BuildLimit(SelectExpression select, SqlStatement literalSelect, QueryContext queryContext)
-        {
-            if (select.Limit != null)
-            {
-                var literalLimit = BuildExpression(select.Limit, queryContext);
-                if (select.Offset != null)
-                {
-                    var literalOffset = BuildExpression(select.Offset, queryContext);
-                    var literalOffsetAndLimit = BuildExpression(select.OffsetAndLimit, queryContext);
-                    return queryContext.DataContext.Vendor.SqlProvider.GetLiteralLimit(literalSelect, literalLimit,
-                                                                                       literalOffset,
-                                                                                       literalOffsetAndLimit);
-                }
-                return queryContext.DataContext.Vendor.SqlProvider.GetLiteralLimit(literalSelect, literalLimit);
-            }
-            return literalSelect;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.ExpressionMutator;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+using DbLinq.Factory;
+using DbLinq.Util;
+
+namespace DbLinq.Data.Linq.Sugar.Implementation
+{
+    internal class SqlBuilder : ISqlBuilder
+    {
+        public IExpressionQualifier ExpressionQualifier { get; set; }
+
+        public SqlBuilder()
+        {
+            ExpressionQualifier = ObjectFactory.Get<IExpressionQualifier>();
+        }
+
+        /// <summary>
+        /// Builds a SQL string, based on a QueryContext
+        /// The build indirectly depends on ISqlProvider which provides all SQL Parts.
+        /// </summary>
+        /// <param name="expressionQuery"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public SqlStatement BuildSelect(ExpressionQuery expressionQuery, QueryContext queryContext)
+        {
+            return Build(expressionQuery.Select, queryContext);
+        }
+
+        /// <summary>
+        /// Returns a list of sorted tables, given a select expression.
+        /// The tables are sorted by dependency: independent tables first, dependent tables next
+        /// </summary>
+        /// <param name="selectExpression"></param>
+        /// <returns></returns>
+        protected IList<TableExpression> GetSortedTables(SelectExpression selectExpression)
+        {
+            var tables = new List<TableExpression>();
+            foreach (var table in selectExpression.Tables)
+            {
+                // the rules are:
+                // a table climbs up to 0 until we find the table it depends on
+                // we keep the index and insert on it
+                // we place joining tables under joined tables
+                int tableIndex;
+                for (tableIndex = tables.Count; tableIndex > 0; tableIndex--)
+                {
+                    // above us, the joined table? Stop now
+                    if (tables[tableIndex - 1] == table.JoinedTable)
+                        break;
+                    // if the current table is joining and we have a non-joining table above, we stop here too
+                    if (table.JoinExpression != null && tables[tableIndex - 1].JoinExpression == null)
+                        break;
+                }
+                tables.Insert(tableIndex, table);
+            }
+            return tables;
+        }
+
+        /// <summary>
+        /// Main SQL builder
+        /// </summary>
+        /// <param name="selectExpression"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        public SqlStatement Build(SelectExpression selectExpression, QueryContext queryContext)
+        {
+            var translator = GetTranslator(queryContext.DataContext.Vendor.SqlProvider);
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            selectExpression = translator.OuterExpression(selectExpression);
+
+            // A scope usually has:
+            // - a SELECT: the operation creating a CLR object with data coming from SQL tier
+            // - a FROM: list of tables
+            // - a WHERE: list of conditions
+            // - a GROUP BY: grouping by selected columns
+            // - a ORDER BY: sort
+            var select = BuildSelect(selectExpression, queryContext);
+            if (select.ToString() == string.Empty)
+            {
+                SubSelectExpression subselect = null;
+                if (selectExpression.Tables.Count == 1)
+                    subselect = selectExpression.Tables[0] as SubSelectExpression;
+                if(subselect != null)
+                    return sqlProvider.GetParenthesis(Build(subselect.Select, queryContext));
+            }
+
+            // TODO: the following might be wrong (at least this might be the wrong place to do this
+            if (select.ToString() == string.Empty)
+                select = new SqlStatement("SELECT " + sqlProvider.GetLiteral(null) + " AS " + sqlProvider.GetSafeName("Empty"));
+
+            var tables = GetSortedTables(selectExpression);
+            var from = BuildFrom(tables, queryContext);
+            var join = BuildJoin(tables, queryContext);
+            var where = BuildWhere(tables, selectExpression.Where, queryContext);
+            var groupBy = BuildGroupBy(selectExpression.Group, queryContext);
+            var having = BuildHaving(selectExpression.Where, queryContext);
+            var orderBy = BuildOrderBy(selectExpression.OrderBy, queryContext);
+            select = Join(queryContext, select, from, join, where, groupBy, having, orderBy);
+            select = BuildLimit(selectExpression, select, queryContext);
+
+            if (selectExpression.NextSelectExpression != null)
+            {
+                var nextLiteralSelect = Build(selectExpression.NextSelectExpression, queryContext);
+                select = queryContext.DataContext.Vendor.SqlProvider.GetLiteral(
+                    selectExpression.NextSelectExpressionOperator,
+                    select, nextLiteralSelect);
+            }
+
+            return select;
+        }
+
+        public SqlStatement Join(QueryContext queryContext, params SqlStatement[] clauses)
+        {
+            return SqlStatement.Join(queryContext.DataContext.Vendor.SqlProvider.NewLine,
+                               (from clause in clauses where clause.ToString() != string.Empty select clause).ToList());
+        }
+
+        /// <summary>
+        /// The simple part: converts an expression to SQL
+        /// This is not used for FROM clause
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        protected virtual SqlStatement BuildExpression(Expression expression, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var currentPrecedence = ExpressionQualifier.GetPrecedence(expression);
+            // first convert operands
+            var operands = expression.GetOperands();
+            var literalOperands = new List<SqlStatement>();
+            foreach (var operand in operands)
+            {
+                var operandPrecedence = ExpressionQualifier.GetPrecedence(operand);
+                var literalOperand = BuildExpression(operand, queryContext);
+                if (operandPrecedence > currentPrecedence)
+                    literalOperand = sqlProvider.GetParenthesis(literalOperand);
+                literalOperands.Add(literalOperand);
+            }
+
+            // then converts expression
+            if (expression is SpecialExpression)
+                return sqlProvider.GetLiteral(((SpecialExpression)expression).SpecialNodeType, literalOperands);
+            if (expression is EntitySetExpression)
+                expression = ((EntitySetExpression)expression).TableExpression;
+            if (expression is TableExpression)
+            {
+                var tableExpression = (TableExpression)expression;
+                if (tableExpression.Alias != null) // if we have an alias, use it
+                {
+                    return sqlProvider.GetColumn(sqlProvider.GetTableAlias(tableExpression.Alias),
+                                                 sqlProvider.GetColumns());
+                }
+                return sqlProvider.GetColumns();
+            }
+            if (expression is ColumnExpression)
+            {
+                var columnExpression = (ColumnExpression)expression;
+                if (columnExpression.Table.Alias != null)
+                {
+                    return sqlProvider.GetColumn(sqlProvider.GetTableAlias(columnExpression.Table.Alias),
+                                                 columnExpression.Name);
+                }
+                return sqlProvider.GetColumn(columnExpression.Name);
+            }
+            if (expression is InputParameterExpression)
+            {
+                var inputParameterExpression = (InputParameterExpression)expression;
+                if (expression.Type.IsArray)
+                {
+                    int i = 0;
+                    List<SqlStatement> inputParameters = new List<SqlStatement>();
+                    foreach (object p in (Array)inputParameterExpression.GetValue())
+                    {
+                        inputParameters.Add(new SqlStatement(new SqlParameterPart(sqlProvider.GetParameterName(inputParameterExpression.Alias + i.ToString()),
+                                                          inputParameterExpression.Alias + i.ToString())));
+                        ++i;
+                    }
+                    return new SqlStatement(sqlProvider.GetLiteral(inputParameters.ToArray()));
+                }
+                return
+                    new SqlStatement(new SqlParameterPart(sqlProvider.GetParameterName(inputParameterExpression.Alias),
+                                                          inputParameterExpression.Alias));
+            }
+            if (expression is SelectExpression)
+                return Build((SelectExpression)expression, queryContext);
+            if (expression is ConstantExpression)
+                return sqlProvider.GetLiteral(((ConstantExpression)expression).Value);
+            if (expression is GroupExpression)
+                return BuildExpression(((GroupExpression)expression).GroupedExpression, queryContext);
+
+            StartIndexOffsetExpression indexExpression = expression as StartIndexOffsetExpression;
+            if (indexExpression!=null)
+            {
+                if (indexExpression.StartsAtOne)
+                {
+                    literalOperands.Add(BuildExpression(Expression.Constant(1), queryContext));
+                    return sqlProvider.GetLiteral(ExpressionType.Add, literalOperands);
+                }
+                else
+                    return literalOperands.First();
+            }
+            if (expression.NodeType == ExpressionType.Convert || expression.NodeType == ExpressionType.ConvertChecked)
+            {
+                var unaryExpression = (UnaryExpression)expression;
+                var firstOperand = literalOperands.First();
+                if (IsConversionRequired(unaryExpression))
+                    return sqlProvider.GetLiteralConvert(firstOperand, unaryExpression.Type);
+                return firstOperand;
+            }
+            return sqlProvider.GetLiteral(expression.NodeType, literalOperands);
+        }
+
+        private Expressions.ExpressionTranslator GetTranslator(DbLinq.Vendor.ISqlProvider provider)
+        {
+            var p = provider as DbLinq.Vendor.Implementation.SqlProvider;
+            if (p != null)
+                return p.GetTranslator();
+            return new ExpressionTranslator();
+        }
+
+        /// <summary>
+        /// Determines if a SQL conversion is required
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        private bool IsConversionRequired(UnaryExpression expression)
+        {
+            // obvious (and probably never happens), conversion to the same type
+            if (expression.Type == expression.Operand.Type)
+                return false;
+            // second, nullable to non-nullable for the same type
+            if (expression.Type.IsNullable() && !expression.Operand.Type.IsNullable())
+            {
+                if (expression.Type.GetNullableType() == expression.Operand.Type)
+                    return false;
+            }
+            // third, non-nullable to nullable
+            if (!expression.Type.IsNullable() && expression.Operand.Type.IsNullable())
+            {
+                if (expression.Type == expression.Operand.Type.GetNullableType())
+                    return false;
+            }
+            // found no excuse not to convert? then convert
+            return true;
+        }
+
+        protected virtual bool MustDeclareAsJoin(IList<TableExpression> tables, TableExpression table)
+        {
+            // the first table can not be declared as join
+            if (table == tables[0])
+                return false;
+            // we must declare as join, whatever the join is,
+            // if some of the registered tables are registered as complex join
+            if (tables.Any(t => t.JoinType != TableJoinType.Inner))
+                return table.JoinExpression != null;
+            return false;
+        }
+
+        protected virtual SqlStatement BuildFrom(IList<TableExpression> tables, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var fromClauses = new List<SqlStatement>();
+            foreach (var tableExpression in tables)
+            {
+                if (!MustDeclareAsJoin(tables, tableExpression))
+                {
+                    if (tableExpression.Alias != null)
+                    {
+                        string tableAlias;
+
+                        // All subqueries has an alias in FROM
+                        SubSelectExpression subquery = tableExpression as SubSelectExpression;
+                        if (subquery == null)
+                            tableAlias = sqlProvider.GetTableAsAlias(tableExpression.Name, tableExpression.Alias);
+                        else
+                        {
+                            var subqueryStatements = new SqlStatement(Build(subquery.Select, queryContext));
+                            tableAlias = sqlProvider.GetSubQueryAsAlias(subqueryStatements.ToString(), tableExpression.Alias);
+                        }
+
+                        if ((tableExpression.JoinType & TableJoinType.LeftOuter) != 0)
+                            tableAlias = "/* LEFT OUTER */ " + tableAlias;
+                        if ((tableExpression.JoinType & TableJoinType.RightOuter) != 0)
+                            tableAlias = "/* RIGHT OUTER */ " + tableAlias;
+                        fromClauses.Add(tableAlias);
+                    }
+                    else
+                    {
+                        fromClauses.Add(sqlProvider.GetTable(tableExpression.Name));
+                    }
+                }
+            }
+            return sqlProvider.GetFromClause(fromClauses.ToArray());
+        }
+
+        /// <summary>
+        /// Builds join clauses
+        /// </summary>
+        /// <param name="tables"></param>
+        /// <param name="queryContext"></param>
+        /// <returns></returns>
+        protected virtual SqlStatement BuildJoin(IList<TableExpression> tables, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var joinClauses = new List<SqlStatement>();
+            foreach (var tableExpression in tables)
+            {
+                // this is the pending declaration of direct tables
+                if (MustDeclareAsJoin(tables, tableExpression))
+                {
+                    // get constitutive Parts
+                    var joinExpression = BuildExpression(tableExpression.JoinExpression, queryContext);
+                    var tableAlias = sqlProvider.GetTableAsAlias(tableExpression.Name, tableExpression.Alias);
+                    SqlStatement joinClause;
+                    switch (tableExpression.JoinType)
+                    {
+                        case TableJoinType.Inner:
+                            joinClause = sqlProvider.GetInnerJoinClause(tableAlias, joinExpression);
+                            break;
+                        case TableJoinType.LeftOuter:
+                            joinClause = sqlProvider.GetLeftOuterJoinClause(tableAlias, joinExpression);
+                            break;
+                        case TableJoinType.RightOuter:
+                            joinClause = sqlProvider.GetRightOuterJoinClause(tableAlias, joinExpression);
+                            break;
+                        case TableJoinType.FullOuter:
+                            throw new NotImplementedException();
+                        default:
+                            throw new ArgumentOutOfRangeException();
+                    }
+                    joinClauses.Add(joinClause);
+                }
+            }
+            return sqlProvider.GetJoinClauses(joinClauses.ToArray());
+        }
+
+        protected virtual bool IsHavingClause(Expression expression)
+        {
+            bool isHaving = false;
+            expression.Recurse(delegate(Expression e)
+                                   {
+                                       if (e is GroupExpression)
+                                           isHaving = true;
+                                       return e;
+                                   });
+            return isHaving;
+        }
+
+        protected virtual SqlStatement BuildWhere(IList<TableExpression> tables, IList<Expression> wheres, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var whereClauses = new List<SqlStatement>();
+            foreach (var tableExpression in tables)
+            {
+                if (!MustDeclareAsJoin(tables, tableExpression) && tableExpression.JoinExpression != null)
+                    whereClauses.Add(BuildExpression(tableExpression.JoinExpression, queryContext));
+            }
+            foreach (var whereExpression in wheres)
+            {
+                if (!IsHavingClause(whereExpression))
+                    whereClauses.Add(BuildExpression(whereExpression, queryContext));
+            }
+            return sqlProvider.GetWhereClause(whereClauses.ToArray());
+        }
+
+        protected virtual SqlStatement BuildHaving(IList<Expression> wheres, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var havingClauses = new List<SqlStatement>();
+            foreach (var whereExpression in wheres)
+            {
+                if (IsHavingClause(whereExpression))
+                    havingClauses.Add(BuildExpression(whereExpression, queryContext));
+            }
+            return sqlProvider.GetHavingClause(havingClauses.ToArray());
+        }
+
+        protected virtual SqlStatement GetGroupByClause(ColumnExpression columnExpression, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            if (columnExpression.Table.Alias != null)
+            {
+                return sqlProvider.GetColumn(sqlProvider.GetTableAlias(columnExpression.Table.Alias),
+                                             columnExpression.Name);
+            }
+            return sqlProvider.GetColumn(columnExpression.Name);
+        }
+
+        protected virtual SqlStatement BuildGroupBy(IList<GroupExpression> groupByExpressions, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var groupByClauses = new List<SqlStatement>();
+            foreach (var groupByExpression in groupByExpressions)
+            {
+                foreach (var operand in groupByExpression.Clauses)
+                {
+                    var columnOperand = operand as ColumnExpression;
+                    if (columnOperand == null)
+                        throw Error.BadArgument("S0201: Groupby argument must be a ColumnExpression");
+                    groupByClauses.Add(GetGroupByClause(columnOperand, queryContext));
+                }
+            }
+            return sqlProvider.GetGroupByClause(groupByClauses.ToArray());
+        }
+
+        protected virtual SqlStatement BuildOrderBy(IList<OrderByExpression> orderByExpressions, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var orderByClauses = new List<SqlStatement>();
+            foreach (var clause in orderByExpressions)
+            {
+                orderByClauses.Add(sqlProvider.GetOrderByColumn(BuildExpression(clause.ColumnExpression, queryContext),
+                                                                clause.Descending));
+            }
+            return sqlProvider.GetOrderByClause(orderByClauses.ToArray());
+        }
+
+        protected virtual SqlStatement BuildSelect(Expression select, QueryContext queryContext)
+        {
+            var sqlProvider = queryContext.DataContext.Vendor.SqlProvider;
+            var selectClauses = new List<SqlStatement>();
+            foreach (var selectExpression in select.GetOperands())
+            {
+                var expressionString = BuildExpression(selectExpression, queryContext);
+                if (selectExpression is SelectExpression)
+                    selectClauses.Add(sqlProvider.GetParenthesis(expressionString));
+                else
+                    selectClauses.Add(expressionString);
+            }
+            SelectExpression selectExp = select as SelectExpression;
+            if (selectExp != null)
+            {
+                if (selectExp.Group.Count == 1 && selectExp.Group[0].GroupedExpression == selectExp.Group[0].KeyExpression)
+                {
+                    // this is a select DISTINCT expression
+                    // TODO: better handle selected columns on DISTINCT: I suspect this will not work in some cases
+                    if (selectClauses.Count == 0)
+                    {
+                        selectClauses.Add(sqlProvider.GetColumns());
+                    }
+                    return sqlProvider.GetSelectDistinctClause(selectClauses.ToArray());
+                }
+            }
+            return sqlProvider.GetSelectClause(selectClauses.ToArray());
+        }
+
+        protected virtual SqlStatement BuildLimit(SelectExpression select, SqlStatement literalSelect, QueryContext queryContext)
+        {
+            if (select.Limit != null)
+            {
+                var literalLimit = BuildExpression(select.Limit, queryContext);
+                if (select.Offset != null)
+                {
+                    var literalOffset = BuildExpression(select.Offset, queryContext);
+                    var literalOffsetAndLimit = BuildExpression(select.OffsetAndLimit, queryContext);
+                    return queryContext.DataContext.Vendor.SqlProvider.GetLiteralLimit(literalSelect, literalLimit,
+                                                                                       literalOffset,
+                                                                                       literalOffsetAndLimit);
+                }
+                return queryContext.DataContext.Vendor.SqlProvider.GetLiteralLimit(literalSelect, literalLimit);
+            }
+            return literalSelect;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Notes.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/Notes.txt
@@ -1,25 +1,25 @@
-﻿
-Piece = query expression part
-
-Query expressions language identification
-   1. Specific language patterns identification (VB string compare)
---> ExpressionLanguageParser
-   2. Constant reduction 
---> ExpressionOptimizer
-
-# Query expressions query identification
---> ExpressionDispatcher
-
-   1. Key methods (where, select...) identification and inner expressions dispatching (top-level method is handled specifically)
-   2. Non-operation expressions deduction
-          * Table (--> TableExpression)
-          * Column (--> ColumnExpression)
-          * Input parameter (--> ParameterExpression)
-          * Meta-table (a class containing table aliases) (--> MetaTableExpression)
-          
---> DataMapper
---> ExpressionQuery
---> ExpressionRegistrar // no other idea at the moment
-
-Generate SQL (Sugar + Database IVendor) 
---> Query
+﻿
+Piece = query expression part
+
+Query expressions language identification
+   1. Specific language patterns identification (VB string compare)
+--> ExpressionLanguageParser
+   2. Constant reduction 
+--> ExpressionOptimizer
+
+# Query expressions query identification
+--> ExpressionDispatcher
+
+   1. Key methods (where, select...) identification and inner expressions dispatching (top-level method is handled specifically)
+   2. Non-operation expressions deduction
+          * Table (--> TableExpression)
+          * Column (--> ColumnExpression)
+          * Input parameter (--> ParameterExpression)
+          * Meta-table (a class containing table aliases) (--> MetaTableExpression)
+          
+--> DataMapper
+--> ExpressionQuery
+--> ExpressionRegistrar // no other idea at the moment
+
+Generate SQL (Sugar + Database IVendor) 
+--> Query
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ParameterizedQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/ParameterizedQuery.cs
@@ -1,85 +1,85 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using DbLinq.Util;
-using DbLinq.Data.Linq.Database;
-using System.Collections.Generic;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal class ParameterizedQuery : AbstractQuery
-    {
-        public ParameterizedQuery(DataContext dataContext, SqlStatement sql, IList<ObjectInputParameterExpression> inputParameters)
-            : base(dataContext, sql)
-        {
-            this.InputParameters = inputParameters;
-        }
-
-        /// <summary>
-        /// Parameters to be sent as SQL parameters
-        /// </summary>
-        public IList<ObjectInputParameterExpression> InputParameters { get; protected set; }
-
-        public ITransactionalCommand GetCommandTransactional(bool createTransaction)
-        {
-            ITransactionalCommand command = base.GetCommand(createTransaction);
-            foreach (var inputParameter in InputParameters)
-            {
-                var dbParameter = command.Command.CreateParameter();
-                dbParameter.ParameterName = DataContext.Vendor.SqlProvider.GetParameterName(inputParameter.Alias);
-                object value = NormalizeDbType(inputParameter.GetValue(Target));
-                dbParameter.SetValue(value, inputParameter.ValueType);
-                command.Command.Parameters.Add(dbParameter);
-            }
-            return command;
-        }
-
-        public override ITransactionalCommand GetCommand()
-        {
-            return GetCommandTransactional(true);
-        }
-
-        private object NormalizeDbType(object value)
-        {
-            System.Data.Linq.Binary b = value as System.Data.Linq.Binary;
-            // Mono 2.4.2.3's Binary.operator!= is bad; avoid it.
-            if (!object.ReferenceEquals(b, null))
-                return b.ToArray();
-            return value;
-        }
-
-        public object Target { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using DbLinq.Util;
+using DbLinq.Data.Linq.Database;
+using System.Collections.Generic;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal class ParameterizedQuery : AbstractQuery
+    {
+        public ParameterizedQuery(DataContext dataContext, SqlStatement sql, IList<ObjectInputParameterExpression> inputParameters)
+            : base(dataContext, sql)
+        {
+            this.InputParameters = inputParameters;
+        }
+
+        /// <summary>
+        /// Parameters to be sent as SQL parameters
+        /// </summary>
+        public IList<ObjectInputParameterExpression> InputParameters { get; protected set; }
+
+        public ITransactionalCommand GetCommandTransactional(bool createTransaction)
+        {
+            ITransactionalCommand command = base.GetCommand(createTransaction);
+            foreach (var inputParameter in InputParameters)
+            {
+                var dbParameter = command.Command.CreateParameter();
+                dbParameter.ParameterName = DataContext.Vendor.SqlProvider.GetParameterName(inputParameter.Alias);
+                object value = NormalizeDbType(inputParameter.GetValue(Target));
+                dbParameter.SetValue(value, inputParameter.ValueType);
+                command.Command.Parameters.Add(dbParameter);
+            }
+            return command;
+        }
+
+        public override ITransactionalCommand GetCommand()
+        {
+            return GetCommandTransactional(true);
+        }
+
+        private object NormalizeDbType(object value)
+        {
+            System.Data.Linq.Binary b = value as System.Data.Linq.Binary;
+            // Mono 2.4.2.3's Binary.operator!= is bad; avoid it.
+            if (!object.ReferenceEquals(b, null))
+                return b.ToArray();
+            return value;
+        }
+
+        public object Target { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/QueryContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/QueryContext.cs
@@ -1,53 +1,53 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-#if !MONO_STRICT
-    public
-#endif
-    class QueryContext
-    {
-        public DataContext DataContext { get; private set; }
-
-        /// <summary>
-        /// if true, tells the tier splitter that we want the maximum on database side
-        /// (which is probably never a good choice)
-        /// </summary>
-        public bool MaximumDatabaseLoad { get; set; }
-
-        public QueryContext(DataContext dataContext)
-        {
-            DataContext = dataContext;
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+#if !MONO_STRICT
+    public
+#endif
+    class QueryContext
+    {
+        public DataContext DataContext { get; private set; }
+
+        /// <summary>
+        /// if true, tells the tier splitter that we want the maximum on database side
+        /// (which is probably never a good choice)
+        /// </summary>
+        public bool MaximumDatabaseLoad { get; set; }
+
+        public QueryContext(DataContext dataContext)
+        {
+            DataContext = dataContext;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/SelectQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/SelectQuery.cs
@@ -1,114 +1,114 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Data.Linq.Database;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using DbLinq.Data.Linq.Mapping;
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    /// <summary>
-    /// Represents a linq query, parsed and compiled, to be sent to database
-    /// This instance is immutable, since it can be stored in a cache
-    /// </summary>
-    internal class SelectQuery : AbstractQuery
-    {
-        /// <summary>
-        /// Parameters to be sent as SQL parameters
-        /// </summary>
-        public IList<InputParameterExpression> InputParameters { get; private set; }
-
-        /// <summary>
-        /// Expression that creates a row object
-        /// Use GetRowObjectCreator() to access the object with type safety
-        /// </summary>
-        internal Delegate RowObjectCreator { get; private set; }
-
-        /// <summary>
-        /// Returns the row object creator, strongly typed
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <returns></returns>
-        public Func<IDataRecord, MappingContext, T> GetRowObjectCreator<T>()
-        {
-            return (Func<IDataRecord, MappingContext, T>)RowObjectCreator;
-        }
-
-        /// <summary>
-        /// Used on scalar calls, like First()
-        /// </summary>
-        public string ExecuteMethodName { get; private set; }
-
-        public SelectQuery(DataContext dataContext, SqlStatement sql, IList<InputParameterExpression> parameters,
-                     Delegate rowObjectCreator, string executeMethodName)
-            : base(dataContext, sql)
-        {
-            InputParameters = parameters;
-            RowObjectCreator = rowObjectCreator;
-            ExecuteMethodName = executeMethodName;
-        }
-
-        public override ITransactionalCommand GetCommand()
-        {
-            IDbDataParameter dbParameter;
-            var dbCommand = base.GetCommand(false);
-            foreach (var parameter in InputParameters)
-            {
-                if (parameter.Type.IsArray)
-                {
-                    int i = 0;
-                    foreach (object p in (Array)parameter.GetValue())
-                    {
-                        dbParameter = dbCommand.Command.CreateParameter();
-                        dbParameter.ParameterName = DataContext.Vendor.SqlProvider.GetParameterName(parameter.Alias + i.ToString());
-                        dbParameter.Value = p;
-                        dbCommand.Command.Parameters.Add(dbParameter);
-                        ++i;
-                    }
-                }
-                else
-                {
-                    dbParameter = dbCommand.Command.CreateParameter();
-                    dbParameter.ParameterName = DataContext.Vendor.SqlProvider.GetParameterName(parameter.Alias);
-                    dbParameter.Value = parameter.GetValue();
-                    dbCommand.Command.Parameters.Add(dbParameter);
-                }
-            }
-            return dbCommand;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Data.Linq.Database;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using DbLinq.Data.Linq.Mapping;
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    /// <summary>
+    /// Represents a linq query, parsed and compiled, to be sent to database
+    /// This instance is immutable, since it can be stored in a cache
+    /// </summary>
+    internal class SelectQuery : AbstractQuery
+    {
+        /// <summary>
+        /// Parameters to be sent as SQL parameters
+        /// </summary>
+        public IList<InputParameterExpression> InputParameters { get; private set; }
+
+        /// <summary>
+        /// Expression that creates a row object
+        /// Use GetRowObjectCreator() to access the object with type safety
+        /// </summary>
+        internal Delegate RowObjectCreator { get; private set; }
+
+        /// <summary>
+        /// Returns the row object creator, strongly typed
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public Func<IDataRecord, MappingContext, T> GetRowObjectCreator<T>()
+        {
+            return (Func<IDataRecord, MappingContext, T>)RowObjectCreator;
+        }
+
+        /// <summary>
+        /// Used on scalar calls, like First()
+        /// </summary>
+        public string ExecuteMethodName { get; private set; }
+
+        public SelectQuery(DataContext dataContext, SqlStatement sql, IList<InputParameterExpression> parameters,
+                     Delegate rowObjectCreator, string executeMethodName)
+            : base(dataContext, sql)
+        {
+            InputParameters = parameters;
+            RowObjectCreator = rowObjectCreator;
+            ExecuteMethodName = executeMethodName;
+        }
+
+        public override ITransactionalCommand GetCommand()
+        {
+            IDbDataParameter dbParameter;
+            var dbCommand = base.GetCommand(false);
+            foreach (var parameter in InputParameters)
+            {
+                if (parameter.Type.IsArray)
+                {
+                    int i = 0;
+                    foreach (object p in (Array)parameter.GetValue())
+                    {
+                        dbParameter = dbCommand.Command.CreateParameter();
+                        dbParameter.ParameterName = DataContext.Vendor.SqlProvider.GetParameterName(parameter.Alias + i.ToString());
+                        dbParameter.Value = p;
+                        dbCommand.Command.Parameters.Add(dbParameter);
+                        ++i;
+                    }
+                }
+                else
+                {
+                    dbParameter = dbCommand.Command.CreateParameter();
+                    dbParameter.ParameterName = DataContext.Vendor.SqlProvider.GetParameterName(parameter.Alias);
+                    dbParameter.Value = parameter.GetValue();
+                    dbCommand.Command.Parameters.Add(dbParameter);
+                }
+            }
+            return dbCommand;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/UpsertQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Sugar/UpsertQuery.cs
@@ -1,66 +1,66 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbLinq.Data.Linq.Sugar
-{
-    internal class UpsertQuery : ParameterizedQuery
-    {
-        /// <summary>
-        /// Output parameters, intstance based (the instance being the entity)
-        /// </summary>
-        public IList<ObjectOutputParameterExpression> OutputParameters { get; private set; }
-
-        /// <summary>
-        /// Primary key parameters, to read out the instance in the case of IsDbGenerated and AutoSync parameters
-        /// </summary>
-        public IList<ObjectInputParameterExpression> PrimaryKeyParameters { get; private set; }
-
-        /// <summary>
-        /// This statement returns the generated PKs
-        /// </summary>
-        public SqlStatement IdQuerySql { get; private set; }
-
-        public UpsertQuery(DataContext dataContext, SqlStatement sql, SqlStatement idQuerySql, IList<ObjectInputParameterExpression> inputParameters,
-            IList<ObjectOutputParameterExpression> outputParameters, IList<ObjectInputParameterExpression> primaryKeyParameters)
-            : base(dataContext, sql,inputParameters)
-        {
-            OutputParameters = outputParameters;
-            PrimaryKeyParameters = primaryKeyParameters;
-            IdQuerySql = idQuerySql;
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbLinq.Data.Linq.Sugar
+{
+    internal class UpsertQuery : ParameterizedQuery
+    {
+        /// <summary>
+        /// Output parameters, intstance based (the instance being the entity)
+        /// </summary>
+        public IList<ObjectOutputParameterExpression> OutputParameters { get; private set; }
+
+        /// <summary>
+        /// Primary key parameters, to read out the instance in the case of IsDbGenerated and AutoSync parameters
+        /// </summary>
+        public IList<ObjectInputParameterExpression> PrimaryKeyParameters { get; private set; }
+
+        /// <summary>
+        /// This statement returns the generated PKs
+        /// </summary>
+        public SqlStatement IdQuerySql { get; private set; }
+
+        public UpsertQuery(DataContext dataContext, SqlStatement sql, SqlStatement idQuerySql, IList<ObjectInputParameterExpression> inputParameters,
+            IList<ObjectOutputParameterExpression> outputParameters, IList<ObjectInputParameterExpression> primaryKeyParameters)
+            : base(dataContext, sql,inputParameters)
+        {
+            OutputParameters = outputParameters;
+            PrimaryKeyParameters = primaryKeyParameters;
+            IdQuerySql = idQuerySql;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Table.Extended.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Table.Extended.cs
@@ -1,86 +1,86 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-
-namespace DbLinq.Data.Linq
-{
-    /// <summary>
-    /// T may be eg. class Employee or string - the output
-    /// </summary>
-    /// <typeparam name="TEntity">The type of the entity.</typeparam>
-    partial class Table<TEntity>
-    {
-        /// <summary>
-        /// Cancels the delete on submit.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        public void CancelDeleteOnSubmit(TEntity entity)
-        {
-            Context.UnregisterDelete(entity);
-        }
-
-        /// <summary>
-        /// Cancels the delete on submit.
-        /// </summary>
-        /// <param name="entity">The entity.</param>
-        void ITable.CancelDeleteOnSubmit(object entity)
-        {
-            Context.UnregisterDelete(entity);
-        }
-
-        /// <summary>
-        /// Gets or sets the page size of the bulk insert.
-        /// </summary>
-        /// <value>The size of the bulk insert page.</value>
-        public int BulkInsertPageSize { get; set; }
-
-        /// <summary>
-        /// Performs bulk insert.
-        /// </summary>
-        /// <param name="entities">The entities.</param>
-        public void BulkInsert(IEnumerable<TEntity> entities)
-        {
-            BulkInsert(entities, BulkInsertPageSize);
-        }
-
-        /// <summary>
-        /// Performs bulk insert.
-        /// </summary>
-        /// <param name="entities">The entities.</param>
-        /// <param name="pageSize">Size of the page.</param>
-        public void BulkInsert(IEnumerable<TEntity> entities, int pageSize)
-        {
-            using (Context.DatabaseContext.OpenConnection())
-            using (var transaction = Context.DatabaseContext.CreateTransaction())
-            {
-                Context.Vendor.BulkInsert(this, entities.ToList(), pageSize, Context.Transaction);
-                transaction.Commit();
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+
+namespace DbLinq.Data.Linq
+{
+    /// <summary>
+    /// T may be eg. class Employee or string - the output
+    /// </summary>
+    /// <typeparam name="TEntity">The type of the entity.</typeparam>
+    partial class Table<TEntity>
+    {
+        /// <summary>
+        /// Cancels the delete on submit.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        public void CancelDeleteOnSubmit(TEntity entity)
+        {
+            Context.UnregisterDelete(entity);
+        }
+
+        /// <summary>
+        /// Cancels the delete on submit.
+        /// </summary>
+        /// <param name="entity">The entity.</param>
+        void ITable.CancelDeleteOnSubmit(object entity)
+        {
+            Context.UnregisterDelete(entity);
+        }
+
+        /// <summary>
+        /// Gets or sets the page size of the bulk insert.
+        /// </summary>
+        /// <value>The size of the bulk insert page.</value>
+        public int BulkInsertPageSize { get; set; }
+
+        /// <summary>
+        /// Performs bulk insert.
+        /// </summary>
+        /// <param name="entities">The entities.</param>
+        public void BulkInsert(IEnumerable<TEntity> entities)
+        {
+            BulkInsert(entities, BulkInsertPageSize);
+        }
+
+        /// <summary>
+        /// Performs bulk insert.
+        /// </summary>
+        /// <param name="entities">The entities.</param>
+        /// <param name="pageSize">Size of the page.</param>
+        public void BulkInsert(IEnumerable<TEntity> entities, int pageSize)
+        {
+            using (Context.DatabaseContext.OpenConnection())
+            using (var transaction = Context.DatabaseContext.CreateTransaction())
+            {
+                Context.Vendor.BulkInsert(this, entities.ToList(), pageSize, Context.Transaction);
+                transaction.Commit();
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Table.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Data/Linq/Table.cs
@@ -1,368 +1,368 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.Linq;
-using System.Reflection;
-using System.Diagnostics;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.ComponentModel;
-
-#if MONO_STRICT
-using ITable = System.Data.Linq.ITable;
-#else
-using ITable = DbLinq.Data.Linq.ITable;
-#endif
-
-using DbLinq;
-using DbLinq.Data.Linq.Implementation;
-using DbLinq.Data.Linq.Sugar;
-
-#if MONO_STRICT
-namespace System.Data.Linq
-#else
-namespace DbLinq.Data.Linq
-#endif
-{
-    /// <summary>
-    /// T may be eg. class Employee or string - the output
-    /// </summary>
-    /// <typeparam name="TEntity">The type of the entity.</typeparam>
-    public sealed partial class Table<TEntity> :
-            ITable,
-            IQueryProvider,
-            IListSource,
-            IEnumerable<TEntity>,
-            IEnumerable,
-            IQueryable<TEntity>,
-            IQueryable
-            where TEntity : class
-    {
-        /// <summary>
-        /// the parent DataContext holds our connection etc
-        /// </summary>
-        public DataContext Context { get; private set; }
-
-        // QueryProvider is the running entity, running through nested Expressions
-        private readonly QueryProvider<TEntity> _queryProvider;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="Table&lt;TEntity&gt;"/> class.
-        /// </summary>
-        /// <param name="parentContext">The parent context.</param>
-        internal Table(DataContext parentContext)
-        {
-            Context = parentContext;
-            _queryProvider = new QueryProvider<TEntity>(parentContext);
-        }
-
-        /// <summary>
-        /// 'S' is the projected type. If you say 'from e in Employees select e.ID', then type S will be int.
-        /// If you say 'select new {e.ID}', then type S will be something like Projection.f__1
-        /// </summary>
-        IQueryable<S> IQueryProvider.CreateQuery<S>(Expression expr)
-        {
-            return _queryProvider.CreateQuery<S>(expr);
-        }
-
-        /// <summary>
-        /// this is only called during Dynamic Linq
-        /// </summary>
-        IQueryable IQueryProvider.CreateQuery(Expression expression)
-        {
-            return _queryProvider.CreateQuery(expression);
-        }
-
-        /// <summary>
-        /// the query '(from o in Orders select o).First()' enters here
-        /// </summary>
-        S IQueryProvider.Execute<S>(Expression expression)
-        {
-            return _queryProvider.Execute<S>(expression);
-        }
-
-        /// <summary>
-        /// Executes the current expression
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        object IQueryProvider.Execute(Expression expression)
-        {
-            return _queryProvider.Execute(expression);
-        }
-
-        /// <summary>
-        /// entry point for 'foreach' statement.
-        /// </summary>
-        public IEnumerator<TEntity> GetEnumerator()
-        {
-            var queryable = this as IQueryable<TEntity>;
-            var query = queryable.Select(t => t);
-            return query.GetEnumerator();
-        }
-
-        IEnumerator<TEntity> IEnumerable<TEntity>.GetEnumerator()
-        {
-            return GetEnumerator();
-        }
-
-        /// <summary>
-        /// Enumerates all table items
-        /// </summary>
-        /// <returns></returns>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return GetEnumerator();
-        }
-
-        Type IQueryable.ElementType
-        {
-            get { return _queryProvider.ElementType; }
-        }
-
-        /// <summary>
-        /// Returns this table as an Expression
-        /// </summary>
-        Expression IQueryable.Expression
-        {
-            get { return Expression.Constant(this); } // do not change this to _queryProvider.Expression, Sugar doesn't fully handle QueryProviders by now
-        }
-
-        /// <summary>
-        /// IQueryable.Provider: represents the Table as a IQueryable provider (hence the name)
-        /// </summary>
-        IQueryProvider IQueryable.Provider
-        {
-            get { return _queryProvider.Provider; }
-        }
-
-        #region Insert functions
-
-        void ITable.InsertOnSubmit(object entity)
-        {
-            Context.RegisterInsert(entity);
-        }
-
-        public void InsertOnSubmit(TEntity entity)
-        {
-            Context.RegisterInsert(entity);
-        }
-
-        void ITable.InsertAllOnSubmit(IEnumerable entities)
-        {
-            foreach (var entity in entities)
-                Context.RegisterInsert(entity);
-        }
-
-        public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
-        {
-            if (entities == null)
-                throw new ArgumentNullException("entities");
-
-            foreach (var entity in entities)
-                Context.RegisterInsert(entity);
-        }
-
-        #endregion
-
-        #region Delete functions
-
-        void ITable.DeleteAllOnSubmit(IEnumerable entities)
-        {
-            foreach (var entity in entities)
-                Context.RegisterDelete(entity);
-        }
-
-        /// <summary>
-        /// required by ITable interface
-        /// </summary>
-        /// <param name="entity"></param>
-        void ITable.DeleteOnSubmit(object entity)
-        {
-            Context.RegisterDelete(entity);
-        }
-
-        public void DeleteOnSubmit(TEntity entity)
-        {
-            Context.RegisterDelete(entity);
-        }
-
-        public void DeleteAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
-        {
-            if (entities == null)
-                throw new ArgumentNullException("entities");
-
-            foreach (var row in entities)
-                Context.RegisterDelete(row);
-        }
-
-        #endregion
-
-        #region Attach functions
-
-        /// <summary>
-        /// required for ITable
-        /// </summary>
-        /// <param name="entity"></param>
-        void ITable.Attach(object entity)
-        {
-            Context.RegisterUpdate(entity);
-        }
-
-        void ITable.Attach(object entity, object original)
-        {
-            Context.RegisterUpdate(entity, original);
-        }
-
-        void ITable.Attach(object entity, bool asModified)
-        {
-            Context.RegisterUpdate(entity, asModified ? null : entity);
-        }
-
-        void ITable.AttachAll(IEnumerable entities)
-        {
-            foreach (var entity in entities)
-                Context.RegisterUpdate(entity);
-        }
-        void ITable.AttachAll(IEnumerable entities, bool asModified)
-        {
-            foreach (var entity in entities)
-				Context.RegisterUpdate(entity, asModified ? null : entity);
-        }
-
-        /// <summary>
-        /// Attaches an entity from another Context to a table,
-        /// with the intention to perform an update or delete operation
-        /// </summary>
-        /// <param name="entity">table row object to attach</param>
-        public void Attach(TEntity entity)
-        {
-            Context.RegisterUpdate(entity);
-        }
-
-        [DbLinqToDo]
-        public void Attach(TEntity entity, bool asModified)
-        {
-            throw new NotImplementedException();
-        }
-
-        public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
-        {
-            if (entities == null)
-                throw new ArgumentNullException("entities");
-
-            foreach (var entity in entities)
-                Context.RegisterUpdate(entity);
-        }
-
-        [DbLinqToDo]
-        public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities, bool asModified) where TSubEntity : TEntity
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Attaches existing entity with original state
-        /// </summary>
-        /// <param name="entity">live entity added to change tracking</param>
-        /// <param name="original">original unchanged property values</param>
-        public void Attach(TEntity entity, TEntity original)
-        {
-            Context.RegisterUpdate(entity, original);
-        }
-
-        #endregion
-
-        /// <summary>
-        /// Gets a value indicating whether this instance is read only.
-        /// </summary>
-        /// <value>
-        /// 	<c>true</c> if this instance is read only; otherwise, <c>false</c>.
-        /// </value>
-        public bool IsReadOnly { get { return false; } }
-
-        // PC: this will probably required to recreate a new object instance with all original values
-        //     (that we currently do not always store, so we may need to make a differential copy
-        [Obsolete("NOT IMPLEMENTED YET")]
-        [DbLinqToDo]
-        ModifiedMemberInfo[] ITable.GetModifiedMembers(object entity)
-        {
-            throw new ApplicationException("L579 Not implemented");
-        }
-
-        // PC: complementary to GetModifiedMembers(), we probably need a few changes to the IMemberModificationHandler,
-        //     to recall original values
-        [Obsolete("NOT IMPLEMENTED YET")]
-        [DbLinqToDo]
-        object ITable.GetOriginalEntityState(object entity)
-        {
-            throw new ApplicationException("L585 Not implemented");
-        }
-
-        bool IListSource.ContainsListCollection
-        {
-            get { return true; }
-        }
-
-        IList IListSource.GetList()
-        {
-            return this.ToList();
-        }
-
-        [DbLinqToDo]
-        public TEntity GetOriginalEntityState(TEntity entity)
-        {
-            if (entity == null)
-                throw new ArgumentNullException("entity");
-
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        public IBindingList GetNewBindingList()
-        {
-            throw new NotImplementedException();
-        }
-
-        [DbLinqToDo]
-        public ModifiedMemberInfo[] GetModifiedMembers(TEntity entity)
-        {
-            if (entity == null)
-                throw new ArgumentNullException("entity");
-
-            throw new NotImplementedException();
-        }
-
-        public override string ToString()
-        {
-            return string.Format("Table({0})", typeof(TEntity).Name);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Linq;
+using System.Reflection;
+using System.Diagnostics;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.ComponentModel;
+
+#if MONO_STRICT
+using ITable = System.Data.Linq.ITable;
+#else
+using ITable = DbLinq.Data.Linq.ITable;
+#endif
+
+using DbLinq;
+using DbLinq.Data.Linq.Implementation;
+using DbLinq.Data.Linq.Sugar;
+
+#if MONO_STRICT
+namespace System.Data.Linq
+#else
+namespace DbLinq.Data.Linq
+#endif
+{
+    /// <summary>
+    /// T may be eg. class Employee or string - the output
+    /// </summary>
+    /// <typeparam name="TEntity">The type of the entity.</typeparam>
+    public sealed partial class Table<TEntity> :
+            ITable,
+            IQueryProvider,
+            IListSource,
+            IEnumerable<TEntity>,
+            IEnumerable,
+            IQueryable<TEntity>,
+            IQueryable
+            where TEntity : class
+    {
+        /// <summary>
+        /// the parent DataContext holds our connection etc
+        /// </summary>
+        public DataContext Context { get; private set; }
+
+        // QueryProvider is the running entity, running through nested Expressions
+        private readonly QueryProvider<TEntity> _queryProvider;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="Table&lt;TEntity&gt;"/> class.
+        /// </summary>
+        /// <param name="parentContext">The parent context.</param>
+        internal Table(DataContext parentContext)
+        {
+            Context = parentContext;
+            _queryProvider = new QueryProvider<TEntity>(parentContext);
+        }
+
+        /// <summary>
+        /// 'S' is the projected type. If you say 'from e in Employees select e.ID', then type S will be int.
+        /// If you say 'select new {e.ID}', then type S will be something like Projection.f__1
+        /// </summary>
+        IQueryable<S> IQueryProvider.CreateQuery<S>(Expression expr)
+        {
+            return _queryProvider.CreateQuery<S>(expr);
+        }
+
+        /// <summary>
+        /// this is only called during Dynamic Linq
+        /// </summary>
+        IQueryable IQueryProvider.CreateQuery(Expression expression)
+        {
+            return _queryProvider.CreateQuery(expression);
+        }
+
+        /// <summary>
+        /// the query '(from o in Orders select o).First()' enters here
+        /// </summary>
+        S IQueryProvider.Execute<S>(Expression expression)
+        {
+            return _queryProvider.Execute<S>(expression);
+        }
+
+        /// <summary>
+        /// Executes the current expression
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        object IQueryProvider.Execute(Expression expression)
+        {
+            return _queryProvider.Execute(expression);
+        }
+
+        /// <summary>
+        /// entry point for 'foreach' statement.
+        /// </summary>
+        public IEnumerator<TEntity> GetEnumerator()
+        {
+            var queryable = this as IQueryable<TEntity>;
+            var query = queryable.Select(t => t);
+            return query.GetEnumerator();
+        }
+
+        IEnumerator<TEntity> IEnumerable<TEntity>.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+
+        /// <summary>
+        /// Enumerates all table items
+        /// </summary>
+        /// <returns></returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+
+        Type IQueryable.ElementType
+        {
+            get { return _queryProvider.ElementType; }
+        }
+
+        /// <summary>
+        /// Returns this table as an Expression
+        /// </summary>
+        Expression IQueryable.Expression
+        {
+            get { return Expression.Constant(this); } // do not change this to _queryProvider.Expression, Sugar doesn't fully handle QueryProviders by now
+        }
+
+        /// <summary>
+        /// IQueryable.Provider: represents the Table as a IQueryable provider (hence the name)
+        /// </summary>
+        IQueryProvider IQueryable.Provider
+        {
+            get { return _queryProvider.Provider; }
+        }
+
+        #region Insert functions
+
+        void ITable.InsertOnSubmit(object entity)
+        {
+            Context.RegisterInsert(entity);
+        }
+
+        public void InsertOnSubmit(TEntity entity)
+        {
+            Context.RegisterInsert(entity);
+        }
+
+        void ITable.InsertAllOnSubmit(IEnumerable entities)
+        {
+            foreach (var entity in entities)
+                Context.RegisterInsert(entity);
+        }
+
+        public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
+        {
+            if (entities == null)
+                throw new ArgumentNullException("entities");
+
+            foreach (var entity in entities)
+                Context.RegisterInsert(entity);
+        }
+
+        #endregion
+
+        #region Delete functions
+
+        void ITable.DeleteAllOnSubmit(IEnumerable entities)
+        {
+            foreach (var entity in entities)
+                Context.RegisterDelete(entity);
+        }
+
+        /// <summary>
+        /// required by ITable interface
+        /// </summary>
+        /// <param name="entity"></param>
+        void ITable.DeleteOnSubmit(object entity)
+        {
+            Context.RegisterDelete(entity);
+        }
+
+        public void DeleteOnSubmit(TEntity entity)
+        {
+            Context.RegisterDelete(entity);
+        }
+
+        public void DeleteAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
+        {
+            if (entities == null)
+                throw new ArgumentNullException("entities");
+
+            foreach (var row in entities)
+                Context.RegisterDelete(row);
+        }
+
+        #endregion
+
+        #region Attach functions
+
+        /// <summary>
+        /// required for ITable
+        /// </summary>
+        /// <param name="entity"></param>
+        void ITable.Attach(object entity)
+        {
+            Context.RegisterUpdate(entity);
+        }
+
+        void ITable.Attach(object entity, object original)
+        {
+            Context.RegisterUpdate(entity, original);
+        }
+
+        void ITable.Attach(object entity, bool asModified)
+        {
+            Context.RegisterUpdate(entity, asModified ? null : entity);
+        }
+
+        void ITable.AttachAll(IEnumerable entities)
+        {
+            foreach (var entity in entities)
+                Context.RegisterUpdate(entity);
+        }
+        void ITable.AttachAll(IEnumerable entities, bool asModified)
+        {
+            foreach (var entity in entities)
+				Context.RegisterUpdate(entity, asModified ? null : entity);
+        }
+
+        /// <summary>
+        /// Attaches an entity from another Context to a table,
+        /// with the intention to perform an update or delete operation
+        /// </summary>
+        /// <param name="entity">table row object to attach</param>
+        public void Attach(TEntity entity)
+        {
+            Context.RegisterUpdate(entity);
+        }
+
+        [DbLinqToDo]
+        public void Attach(TEntity entity, bool asModified)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
+        {
+            if (entities == null)
+                throw new ArgumentNullException("entities");
+
+            foreach (var entity in entities)
+                Context.RegisterUpdate(entity);
+        }
+
+        [DbLinqToDo]
+        public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities, bool asModified) where TSubEntity : TEntity
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Attaches existing entity with original state
+        /// </summary>
+        /// <param name="entity">live entity added to change tracking</param>
+        /// <param name="original">original unchanged property values</param>
+        public void Attach(TEntity entity, TEntity original)
+        {
+            Context.RegisterUpdate(entity, original);
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is read only.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if this instance is read only; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsReadOnly { get { return false; } }
+
+        // PC: this will probably required to recreate a new object instance with all original values
+        //     (that we currently do not always store, so we may need to make a differential copy
+        [Obsolete("NOT IMPLEMENTED YET")]
+        [DbLinqToDo]
+        ModifiedMemberInfo[] ITable.GetModifiedMembers(object entity)
+        {
+            throw new ApplicationException("L579 Not implemented");
+        }
+
+        // PC: complementary to GetModifiedMembers(), we probably need a few changes to the IMemberModificationHandler,
+        //     to recall original values
+        [Obsolete("NOT IMPLEMENTED YET")]
+        [DbLinqToDo]
+        object ITable.GetOriginalEntityState(object entity)
+        {
+            throw new ApplicationException("L585 Not implemented");
+        }
+
+        bool IListSource.ContainsListCollection
+        {
+            get { return true; }
+        }
+
+        IList IListSource.GetList()
+        {
+            return this.ToList();
+        }
+
+        [DbLinqToDo]
+        public TEntity GetOriginalEntityState(TEntity entity)
+        {
+            if (entity == null)
+                throw new ArgumentNullException("entity");
+
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        public IBindingList GetNewBindingList()
+        {
+            throw new NotImplementedException();
+        }
+
+        [DbLinqToDo]
+        public ModifiedMemberInfo[] GetModifiedMembers(TEntity entity)
+        {
+            if (entity == null)
+                throw new ArgumentNullException("entity");
+
+            throw new NotImplementedException();
+        }
+
+        public override string ToString()
+        {
+            return string.Format("Table({0})", typeof(TEntity).Name);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/DbLinqToDoAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/DbLinqToDoAttribute.cs
@@ -1,64 +1,64 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace DbLinq
-{
-    /// <summary>
-    /// This attribute is used to mark unterminated methods.
-    /// There are some differences between MONO_STRICT and non-strict modes
-    /// - in MONO_STRICT, we inherit from the MonoTODO attribute, and use its Comment property and ctor()
-    /// - in non-strict, we do our own cook
-    /// </summary>
-    internal class DbLinqToDoAttribute
-#if MONO_STRICT
-        : MonoTODOAttribute
-#else
- : Attribute
-#endif
-    {
-#if MONO_STRICT
-        public DbLinqToDoAttribute(string comment)
-            : base(comment)
-        { }
-#else
-        /// <summary>
-        /// Optional comment (may be null)
-        /// </summary>
-        public string Comment { get; private set; }
-
-        public DbLinqToDoAttribute(string comment)
-        {
-            Comment = comment;
-        }
-#endif
-
-        public DbLinqToDoAttribute()
-        {
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace DbLinq
+{
+    /// <summary>
+    /// This attribute is used to mark unterminated methods.
+    /// There are some differences between MONO_STRICT and non-strict modes
+    /// - in MONO_STRICT, we inherit from the MonoTODO attribute, and use its Comment property and ctor()
+    /// - in non-strict, we do our own cook
+    /// </summary>
+    internal class DbLinqToDoAttribute
+#if MONO_STRICT
+        : MonoTODOAttribute
+#else
+ : Attribute
+#endif
+    {
+#if MONO_STRICT
+        public DbLinqToDoAttribute(string comment)
+            : base(comment)
+        { }
+#else
+        /// <summary>
+        /// Optional comment (may be null)
+        /// </summary>
+        public string Comment { get; private set; }
+
+        public DbLinqToDoAttribute(string comment)
+        {
+            Comment = comment;
+        }
+#endif
+
+        public DbLinqToDoAttribute()
+        {
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Factory/DbLinqAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Factory/DbLinqAttribute.cs
@@ -1,41 +1,41 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-
-
-namespace DbLinq.Factory
-{
-    /// <summary>
-    /// This class is used by ReflectionObjectFactory to determine if the interfaces come from a DbLinq assembly
-    /// </summary>
-    [AttributeUsage(AttributeTargets.Assembly)]
-#if !MONO_STRICT
-    public
-#endif
-    class DbLinqAttribute : Attribute
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+
+
+namespace DbLinq.Factory
+{
+    /// <summary>
+    /// This class is used by ReflectionObjectFactory to determine if the interfaces come from a DbLinq assembly
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Assembly)]
+#if !MONO_STRICT
+    public
+#endif
+    class DbLinqAttribute : Attribute
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Factory/IObjectFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Factory/IObjectFactory.cs
@@ -1,150 +1,150 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-
-namespace DbLinq.Factory
-{
-    /// <summary>
-    /// The object factory is the start point for DbLinq main factory.
-    /// See ObjectFactory.Current for details
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IObjectFactory
-    {
-        /// <summary>
-        ///  Registers <paramref name="implementationType" /> as an 
-        ///  implementation for all implemented interfaces.
-        /// </summary>
-        /// <param name="implementationType">
-        ///  A <see cref="T:System.Type" /> which is the implementation type
-        ///  to register.
-        /// </param>
-        /// <remarks>
-        ///  Once this method has been called, 
-        ///  <paramref name="implementationType" /> may be used in future
-        ///  <see cref="M:Create(Type)" /> and <see cref="M:Get(Type)" />
-        ///  invocations.
-        /// </remarks>
-        void Register(Type implementationType);
-
-        /// <summary>
-        ///  Unregisters <paramref name="implementationType" /> as an 
-        ///  implementation for all implemented interfaces.
-        /// </summary>
-        /// <param name="implementationType">
-        ///  A <see cref="T:System.Type" /> which is the implementation type
-        ///  to unregister.
-        /// </param>
-        /// <remarks>
-        ///  Once this method has been called, 
-        ///  <paramref name="implementationType" /> will no longer be used by
-        ///  subsequent <see cref="M:Create(Type)" /> and 
-        ///  <see cref="M:Get(Type)" /> invocations.
-        /// </remarks>
-        void Unregister(Type implementationType);
-
-        /// <summary>
-        /// Returns an instance of a stateless class (may be a singleton)
-        /// </summary>
-        /// <returns>
-        ///  An instance of type <paramref name="interfaceType" />.
-        ///  This instance will be shared by other invocations of 
-        ///  <c>Get()</c> with the same <param name="interfaceType" /> value.
-        /// </returns>
-        object Get(Type interfaceType);
-
-        /// <summary>
-        /// Returns a new instance of the specified class (can not be a singleton)
-        /// </summary>
-        /// <returns>
-        ///  A new instance of type <paramref name="interfaceType" />.
-        ///  This instance will not be shared by other invocations of 
-        ///  <c>Create()</c> with the same <param name="interfaceType" /> 
-        ///  value.
-        /// </returns>
-        object Create(Type interfaceType);
-
-        /// <summary>
-        /// Returns a list of types implementing the required interface
-        /// </summary>
-        /// <param name="interfaceType"></param>
-        /// <returns>
-        ///  An <see cref="T:IEnumerable{Type}" /> containing all registered 
-        ///  implementations for the interface 
-        ///  <paramref name="interfaceType" />.
-        /// </returns>
-        IEnumerable<Type> GetImplementations(Type interfaceType);
-    }
-
-    /// <summary>
-    ///  Extension methods for <see cref="T:IObjectFactory" />.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    static class ObjectFactoryExtensions
-    {
-        /// <summary>
-        ///  Creates a new instance of <typeparamref name="T" /> from 
-        ///  <paramref name="self" />.
-        /// </summary>
-        /// <typeparam name="T">The type to create.</typeparam>
-        /// <param name="self">
-        ///  An <see cref="T:IObjectFactory" /> to use to create a new instance
-        ///  of type <typeparamref name="T" />.
-        /// </param>
-        /// <returns>
-        ///  A newly created instance of type <typeparamref name="T" />.
-        /// </returns>
-        /// <seealso cref="M:IObjectFactory.Create(Type)"/>
-        public static T Create<T>(this IObjectFactory self)
-        {
-            return (T) self.Create(typeof(T));
-        }
-
-        /// <summary>
-        ///  Gets a (possibly pre-existing) instance of 
-        ///  <typeparamref name="T" /> from <paramref name="self" />.
-        /// </summary>
-        /// <typeparam name="T">The type to get.</typeparam>
-        /// <param name="self">
-        ///  An <see cref="T:IObjectFactory" /> to use to get an instance
-        ///  of type <typeparamref name="T" />.
-        /// </param>
-        /// <returns>
-        ///  A (possibly pre-existing) instance of type 
-        ///  <typeparamref name="T" />.
-        /// </returns>
-        /// <seealso cref="M:IObjectFactory.Get(Type)"/>
-        public static T Get<T>(this IObjectFactory self)
-        {
-            return (T) self.Get(typeof(T));
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+
+namespace DbLinq.Factory
+{
+    /// <summary>
+    /// The object factory is the start point for DbLinq main factory.
+    /// See ObjectFactory.Current for details
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IObjectFactory
+    {
+        /// <summary>
+        ///  Registers <paramref name="implementationType" /> as an 
+        ///  implementation for all implemented interfaces.
+        /// </summary>
+        /// <param name="implementationType">
+        ///  A <see cref="T:System.Type" /> which is the implementation type
+        ///  to register.
+        /// </param>
+        /// <remarks>
+        ///  Once this method has been called, 
+        ///  <paramref name="implementationType" /> may be used in future
+        ///  <see cref="M:Create(Type)" /> and <see cref="M:Get(Type)" />
+        ///  invocations.
+        /// </remarks>
+        void Register(Type implementationType);
+
+        /// <summary>
+        ///  Unregisters <paramref name="implementationType" /> as an 
+        ///  implementation for all implemented interfaces.
+        /// </summary>
+        /// <param name="implementationType">
+        ///  A <see cref="T:System.Type" /> which is the implementation type
+        ///  to unregister.
+        /// </param>
+        /// <remarks>
+        ///  Once this method has been called, 
+        ///  <paramref name="implementationType" /> will no longer be used by
+        ///  subsequent <see cref="M:Create(Type)" /> and 
+        ///  <see cref="M:Get(Type)" /> invocations.
+        /// </remarks>
+        void Unregister(Type implementationType);
+
+        /// <summary>
+        /// Returns an instance of a stateless class (may be a singleton)
+        /// </summary>
+        /// <returns>
+        ///  An instance of type <paramref name="interfaceType" />.
+        ///  This instance will be shared by other invocations of 
+        ///  <c>Get()</c> with the same <param name="interfaceType" /> value.
+        /// </returns>
+        object Get(Type interfaceType);
+
+        /// <summary>
+        /// Returns a new instance of the specified class (can not be a singleton)
+        /// </summary>
+        /// <returns>
+        ///  A new instance of type <paramref name="interfaceType" />.
+        ///  This instance will not be shared by other invocations of 
+        ///  <c>Create()</c> with the same <param name="interfaceType" /> 
+        ///  value.
+        /// </returns>
+        object Create(Type interfaceType);
+
+        /// <summary>
+        /// Returns a list of types implementing the required interface
+        /// </summary>
+        /// <param name="interfaceType"></param>
+        /// <returns>
+        ///  An <see cref="T:IEnumerable{Type}" /> containing all registered 
+        ///  implementations for the interface 
+        ///  <paramref name="interfaceType" />.
+        /// </returns>
+        IEnumerable<Type> GetImplementations(Type interfaceType);
+    }
+
+    /// <summary>
+    ///  Extension methods for <see cref="T:IObjectFactory" />.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    static class ObjectFactoryExtensions
+    {
+        /// <summary>
+        ///  Creates a new instance of <typeparamref name="T" /> from 
+        ///  <paramref name="self" />.
+        /// </summary>
+        /// <typeparam name="T">The type to create.</typeparam>
+        /// <param name="self">
+        ///  An <see cref="T:IObjectFactory" /> to use to create a new instance
+        ///  of type <typeparamref name="T" />.
+        /// </param>
+        /// <returns>
+        ///  A newly created instance of type <typeparamref name="T" />.
+        /// </returns>
+        /// <seealso cref="M:IObjectFactory.Create(Type)"/>
+        public static T Create<T>(this IObjectFactory self)
+        {
+            return (T) self.Create(typeof(T));
+        }
+
+        /// <summary>
+        ///  Gets a (possibly pre-existing) instance of 
+        ///  <typeparamref name="T" /> from <paramref name="self" />.
+        /// </summary>
+        /// <typeparam name="T">The type to get.</typeparam>
+        /// <param name="self">
+        ///  An <see cref="T:IObjectFactory" /> to use to get an instance
+        ///  of type <typeparamref name="T" />.
+        /// </param>
+        /// <returns>
+        ///  A (possibly pre-existing) instance of type 
+        ///  <typeparamref name="T" />.
+        /// </returns>
+        /// <seealso cref="M:IObjectFactory.Get(Type)"/>
+        public static T Get<T>(this IObjectFactory self)
+        {
+            return (T) self.Get(typeof(T));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Factory/Implementation/ReflectionObjectFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Factory/Implementation/ReflectionObjectFactory.cs
@@ -1,201 +1,201 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Reflection;
-using System.Xml;
-using DbLinq.Util;
-
-namespace DbLinq.Factory.Implementation
-{
-    /// <summary>
-    /// Object factory. Main objects (most of them are stateless) are created with this class
-    /// This may allow later to inject dependencies with a third party injector (I'm a Spring.NET big fan)
-    /// </summary>
-    internal class ReflectionObjectFactory : IObjectFactory
-    {
-        private IDictionary<Type, IList<Type>> implementations;
-
-        private readonly object lockObject = new object(); // For filling implementation (since it could be done concurrently at startup)
-
-        /// <summary>
-        /// Gets the implementations for given Type.
-        /// </summary>
-        /// <value>The implementations.</value>
-        protected IDictionary<Type, IList<Type>> Implementations
-        {
-            get
-            {
-                if (implementations == null)
-                {
-                    lock (lockObject)   // Strong lock, since run only at statup
-                    {
-                        if (implementations == null)
-                            implementations = ParseAppDomain();
-                    }
-                }
-                return implementations;
-            }
-        }
-
-        /// <summary>
-        /// Singletons table per Type
-        /// </summary>
-        protected readonly IThreadSafeDictionary<Type, object> Singletons = new ThreadSafeDictionary<Type, object>();
-
-        /// <summary>
-        /// Gets the assemblies to avoid.
-        /// </summary>
-        /// <returns></returns>
-        protected virtual IList<Assembly> GetAssembliesToAvoid()
-        {
-            return new[]
-                       {
-                           typeof(object).Assembly,         // mscorlib
-                           typeof(Uri).Assembly,            // System
-                           typeof(Action).Assembly,         // System.Core
-                           typeof(IDbConnection).Assembly,  // System.Data
-                           typeof(XmlDocument).Assembly     // System.Xml
-                       };
-        }
-
-        /// <summary>
-        /// Parses the app domain.
-        /// </summary>
-        /// <returns></returns>
-        protected IDictionary<Type, IList<Type>> ParseAppDomain()
-        {
-            var interfaceImplementations = new Dictionary<Type, IList<Type>>();
-            var assemblies = AppDomain.CurrentDomain.GetAssemblies();
-            var assembliesToAvoid = GetAssembliesToAvoid();
-            foreach (var assembly in assemblies)
-            {
-                if (assembliesToAvoid.Contains(assembly))
-                    continue;
-                Parse(assembly, interfaceImplementations);
-            }
-            return interfaceImplementations;
-        }
-
-        /// <summary>
-        /// Parses the specified assembly.
-        /// </summary>
-        /// <param name="assembly">The assembly.</param>
-        /// <param name="interfaceImplementations">The interface implementations.</param>
-        protected virtual void Parse(Assembly assembly, IDictionary<Type, IList<Type>> interfaceImplementations)
-        {
-            try
-            {
-                var assemblyTypes = assembly.GetTypes();
-                foreach (Type type in assemblyTypes)
-                {
-                    Register(type, interfaceImplementations);
-                }
-            }
-            catch (ReflectionTypeLoadException)
-            {
-            }
-        }
-
-        private void Register(Type type, IDictionary<Type, IList<Type>> interfaceImplementations)
-        {
-            if (type.IsAbstract)
-                return;
-            foreach (Type i in type.GetInterfaces())
-            {
-                if (i.Assembly.GetCustomAttributes(typeof(DbLinqAttribute), false).Length > 0)
-                {
-                    IList<Type> types;
-                    if (!interfaceImplementations.TryGetValue(i, out types))
-                        interfaceImplementations[i] = types = new List<Type>();
-                    types.Add(type);
-                }
-            }
-        }
-
-        public void Register(Type implementationType)
-        {
-            Register(implementationType, Implementations);
-        }
-
-        public void Unregister(Type implementationType)
-        {
-            foreach (var entry in Implementations)
-                entry.Value.Remove(implementationType);
-        }
-
-        /// <summary>
-        /// Gets the singleton.
-        /// </summary>
-        /// <param name="t">The t.</param>
-        /// <returns></returns>
-        public object Get(Type t)
-        {
-            object r;
-            if (!Singletons.TryGetValue(t, out r))
-            {
-                r = Create(t);
-                Singletons.MergeSafe(t, r);
-            }
-            return r;
-        }
-
-        /// <summary>
-        /// Gets the new instance.
-        /// </summary>
-        /// <param name="t">The t.</param>
-        /// <returns></returns>
-        public object Create(Type t)
-        {
-            //warning - the Activator.CreateInstance below was throwing unerported exceptions (as of 2008June).
-            //So - let's add two future rules:
-            //1) for know types from DbLinq, don't load via Activator.
-            //2) surround all Activator calls with try/catch block.
-            if (t.IsInterface)
-            {
-                IList<Type> types;
-                if (!Implementations.TryGetValue(t, out types))
-                    throw new ArgumentException(string.Format("Type '{0}' has no implementation", t));
-                if (types.Count > 1)
-                    throw new ArgumentException(string.Format("Type '{0}' has too many implementations", t));
-                return Activator.CreateInstance(types[0]);
-            }
-            return Activator.CreateInstance(t);
-        }
-
-        /// <summary>
-        /// Returns a list of types implementing the required interface
-        /// </summary>
-        /// <param name="interfaceType"></param>
-        /// <returns></returns>
-        public IEnumerable<Type> GetImplementations(Type interfaceType)
-        {
-            return Implementations[interfaceType];
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Reflection;
+using System.Xml;
+using DbLinq.Util;
+
+namespace DbLinq.Factory.Implementation
+{
+    /// <summary>
+    /// Object factory. Main objects (most of them are stateless) are created with this class
+    /// This may allow later to inject dependencies with a third party injector (I'm a Spring.NET big fan)
+    /// </summary>
+    internal class ReflectionObjectFactory : IObjectFactory
+    {
+        private IDictionary<Type, IList<Type>> implementations;
+
+        private readonly object lockObject = new object(); // For filling implementation (since it could be done concurrently at startup)
+
+        /// <summary>
+        /// Gets the implementations for given Type.
+        /// </summary>
+        /// <value>The implementations.</value>
+        protected IDictionary<Type, IList<Type>> Implementations
+        {
+            get
+            {
+                if (implementations == null)
+                {
+                    lock (lockObject)   // Strong lock, since run only at statup
+                    {
+                        if (implementations == null)
+                            implementations = ParseAppDomain();
+                    }
+                }
+                return implementations;
+            }
+        }
+
+        /// <summary>
+        /// Singletons table per Type
+        /// </summary>
+        protected readonly IThreadSafeDictionary<Type, object> Singletons = new ThreadSafeDictionary<Type, object>();
+
+        /// <summary>
+        /// Gets the assemblies to avoid.
+        /// </summary>
+        /// <returns></returns>
+        protected virtual IList<Assembly> GetAssembliesToAvoid()
+        {
+            return new[]
+                       {
+                           typeof(object).Assembly,         // mscorlib
+                           typeof(Uri).Assembly,            // System
+                           typeof(Action).Assembly,         // System.Core
+                           typeof(IDbConnection).Assembly,  // System.Data
+                           typeof(XmlDocument).Assembly     // System.Xml
+                       };
+        }
+
+        /// <summary>
+        /// Parses the app domain.
+        /// </summary>
+        /// <returns></returns>
+        protected IDictionary<Type, IList<Type>> ParseAppDomain()
+        {
+            var interfaceImplementations = new Dictionary<Type, IList<Type>>();
+            var assemblies = AppDomain.CurrentDomain.GetAssemblies();
+            var assembliesToAvoid = GetAssembliesToAvoid();
+            foreach (var assembly in assemblies)
+            {
+                if (assembliesToAvoid.Contains(assembly))
+                    continue;
+                Parse(assembly, interfaceImplementations);
+            }
+            return interfaceImplementations;
+        }
+
+        /// <summary>
+        /// Parses the specified assembly.
+        /// </summary>
+        /// <param name="assembly">The assembly.</param>
+        /// <param name="interfaceImplementations">The interface implementations.</param>
+        protected virtual void Parse(Assembly assembly, IDictionary<Type, IList<Type>> interfaceImplementations)
+        {
+            try
+            {
+                var assemblyTypes = assembly.GetTypes();
+                foreach (Type type in assemblyTypes)
+                {
+                    Register(type, interfaceImplementations);
+                }
+            }
+            catch (ReflectionTypeLoadException)
+            {
+            }
+        }
+
+        private void Register(Type type, IDictionary<Type, IList<Type>> interfaceImplementations)
+        {
+            if (type.IsAbstract)
+                return;
+            foreach (Type i in type.GetInterfaces())
+            {
+                if (i.Assembly.GetCustomAttributes(typeof(DbLinqAttribute), false).Length > 0)
+                {
+                    IList<Type> types;
+                    if (!interfaceImplementations.TryGetValue(i, out types))
+                        interfaceImplementations[i] = types = new List<Type>();
+                    types.Add(type);
+                }
+            }
+        }
+
+        public void Register(Type implementationType)
+        {
+            Register(implementationType, Implementations);
+        }
+
+        public void Unregister(Type implementationType)
+        {
+            foreach (var entry in Implementations)
+                entry.Value.Remove(implementationType);
+        }
+
+        /// <summary>
+        /// Gets the singleton.
+        /// </summary>
+        /// <param name="t">The t.</param>
+        /// <returns></returns>
+        public object Get(Type t)
+        {
+            object r;
+            if (!Singletons.TryGetValue(t, out r))
+            {
+                r = Create(t);
+                Singletons.MergeSafe(t, r);
+            }
+            return r;
+        }
+
+        /// <summary>
+        /// Gets the new instance.
+        /// </summary>
+        /// <param name="t">The t.</param>
+        /// <returns></returns>
+        public object Create(Type t)
+        {
+            //warning - the Activator.CreateInstance below was throwing unerported exceptions (as of 2008June).
+            //So - let's add two future rules:
+            //1) for know types from DbLinq, don't load via Activator.
+            //2) surround all Activator calls with try/catch block.
+            if (t.IsInterface)
+            {
+                IList<Type> types;
+                if (!Implementations.TryGetValue(t, out types))
+                    throw new ArgumentException(string.Format("Type '{0}' has no implementation", t));
+                if (types.Count > 1)
+                    throw new ArgumentException(string.Format("Type '{0}' has too many implementations", t));
+                return Activator.CreateInstance(types[0]);
+            }
+            return Activator.CreateInstance(t);
+        }
+
+        /// <summary>
+        /// Returns a list of types implementing the required interface
+        /// </summary>
+        /// <param name="interfaceType"></param>
+        /// <returns></returns>
+        public IEnumerable<Type> GetImplementations(Type interfaceType)
+        {
+            return Implementations[interfaceType];
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Factory/ObjectFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Factory/ObjectFactory.cs
@@ -1,64 +1,64 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Factory
-{
-    /// <summary>
-    /// Object factory. Main objects (most of them are stateless) are created with this class
-    /// This may allow later to inject dependencies with a third party injector (I'm a Spring.NET big fan)
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    static class ObjectFactory
-    {
-        /// <summary>
-        /// Central object factory. If you want to use your own factory, just replace this member.
-        /// </summary>
-        public static IObjectFactory Current = new Implementation.ReflectionObjectFactory();
-
-        /// <summary>
-        /// Gets an instance for the given type.
-        /// May be a singleton.
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <returns></returns>
-        public static T Get<T>()
-        {
-            return Current.Get<T>();
-        }
-
-        /// <summary>
-        /// Creates a instance. 
-        /// Must not be a singleton.
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <returns></returns>
-        public static T Create<T>()
-        {
-            return Current.Create<T>();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Factory
+{
+    /// <summary>
+    /// Object factory. Main objects (most of them are stateless) are created with this class
+    /// This may allow later to inject dependencies with a third party injector (I'm a Spring.NET big fan)
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    static class ObjectFactory
+    {
+        /// <summary>
+        /// Central object factory. If you want to use your own factory, just replace this member.
+        /// </summary>
+        public static IObjectFactory Current = new Implementation.ReflectionObjectFactory();
+
+        /// <summary>
+        /// Gets an instance for the given type.
+        /// May be a singleton.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T Get<T>()
+        {
+            return Current.Get<T>();
+        }
+
+        /// <summary>
+        /// Creates a instance. 
+        /// Must not be a singleton.
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static T Create<T>()
+        {
+            return Current.Create<T>();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Language/ILanguageWords.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Language/ILanguageWords.cs
@@ -1,71 +1,71 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Globalization;
-
-namespace DbLinq.Language
-{
-    /// <summary>
-    /// Words manipulation for a specific language.
-    /// - Singularization/pluralization
-    /// - Words extraction
-    /// </summary>
-    internal interface ILanguageWords
-    {
-        /// <summary>
-        /// using English heuristics, convert 'dogs' to 'dog',
-        /// 'categories' to 'category',
-        /// 'cat' remains unchanged.
-        /// </summary>
-        string Singularize(string plural);
-
-        /// <summary>
-        /// using English heuristics, convert 'dog' to 'dogs',
-        /// 'bass' remains unchanged.
-        /// </summary>
-        string Pluralize(string singular);
-
-        /// <summary>
-        /// Extracts words from an undistinguishable letters magma
-        /// for example "shipsperunit" --&gt; "ships" "per" "unit"
-        /// </summary>
-        /// <param name="text">The text.</param>
-        /// <returns></returns>
-        IList<string> GetWords(string text);
-
-        /// <summary>
-        /// Returns true if the required culture is supported
-        /// </summary>
-        /// <param name="cultureInfo"></param>
-        /// <returns></returns>
-        bool Supports(CultureInfo cultureInfo);
-
-        /// <summary>
-        /// Loads the words (operation may be slow, so it is excluded from ctor)
-        /// </summary>
-        void Load();
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Globalization;
+
+namespace DbLinq.Language
+{
+    /// <summary>
+    /// Words manipulation for a specific language.
+    /// - Singularization/pluralization
+    /// - Words extraction
+    /// </summary>
+    internal interface ILanguageWords
+    {
+        /// <summary>
+        /// using English heuristics, convert 'dogs' to 'dog',
+        /// 'categories' to 'category',
+        /// 'cat' remains unchanged.
+        /// </summary>
+        string Singularize(string plural);
+
+        /// <summary>
+        /// using English heuristics, convert 'dog' to 'dogs',
+        /// 'bass' remains unchanged.
+        /// </summary>
+        string Pluralize(string singular);
+
+        /// <summary>
+        /// Extracts words from an undistinguishable letters magma
+        /// for example "shipsperunit" --&gt; "ships" "per" "unit"
+        /// </summary>
+        /// <param name="text">The text.</param>
+        /// <returns></returns>
+        IList<string> GetWords(string text);
+
+        /// <summary>
+        /// Returns true if the required culture is supported
+        /// </summary>
+        /// <param name="cultureInfo"></param>
+        /// <returns></returns>
+        bool Supports(CultureInfo cultureInfo);
+
+        /// <summary>
+        /// Loads the words (operation may be slow, so it is excluded from ctor)
+        /// </summary>
+        void Load();
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Language/ILanguages.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Language/ILanguages.cs
@@ -1,43 +1,43 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-
-namespace DbLinq.Language
-{
-    /// <summary>
-    /// Languages factory
-    /// </summary>
-    internal interface ILanguages
-    {
-        /// <summary>
-        /// Loads the specified language related to given culture info.
-        /// </summary>
-        /// <param name="cultureInfo">The culture info.</param>
-        /// <returns></returns>
-        ILanguageWords Load(CultureInfo cultureInfo);
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+
+namespace DbLinq.Language
+{
+    /// <summary>
+    /// Languages factory
+    /// </summary>
+    internal interface ILanguages
+    {
+        /// <summary>
+        /// Loads the specified language related to given culture info.
+        /// </summary>
+        /// <param name="cultureInfo">The culture info.</param>
+        /// <returns></returns>
+        ILanguageWords Load(CultureInfo cultureInfo);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/AbstractEndPluralWords.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/AbstractEndPluralWords.cs
@@ -1,119 +1,119 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Language.Implementation
-{
-    /// <summary>
-    /// Words with singular/plural capacity, changed in the end
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    abstract class AbstractEndPluralWords : AbstractWords
-    {
-        /// <summary>
-        /// Corresponding singular and plural endings
-        /// </summary>
-        protected class SingularPlural
-        {
-            /// <summary>
-            /// Singular ending
-            /// </summary>
-            public string Singular;
-            /// <summary>
-            /// Plural ending
-            /// </summary>
-            public string Plural;
-        }
-
-        /// <summary>
-        /// Singulars and plurals ends
-        /// </summary>
-        /// <value>The singulars plurals.</value>
-        protected abstract SingularPlural[] SingularsPlurals { get; }
-
-        /// <summary>
-        /// using English heuristics, convert 'dogs' to 'dog',
-        /// 'categories' to 'category',
-        /// 'cat' remains unchanged.
-        /// </summary>
-        protected override string ComputeSingular(string plural)
-        {
-            if (plural.Length < 2)
-                return plural;
-
-            // we run on every possible singular/plural
-            foreach (SingularPlural sp in SingularsPlurals)
-            {
-                string newWord = Try(plural, sp.Plural, sp.Singular);
-                if (newWord != null)
-                    return newWord;
-            }
-
-            return plural;
-        }
-
-        /// <summary>
-        /// using English heuristics, convert 'dog' to 'dogs',
-        /// 'bass' remains unchanged.
-        /// </summary>
-        protected override string ComputePlural(string singular)
-        {
-            if (singular.Length < 2)
-                return singular;
-
-            foreach (SingularPlural sp in SingularsPlurals)
-            {
-                string newWord = Try(singular, sp.Singular, sp.Plural);
-                if (newWord != null)
-                    return newWord;
-            }
-
-            return singular;
-        }
-
-        /// <summary>
-        /// Tries the specified word for singular/plural.
-        /// </summary>
-        /// <param name="word">The word.</param>
-        /// <param name="ending">The ending.</param>
-        /// <param name="newEnding">The new ending.</param>
-        /// <returns></returns>
-        protected string Try(string word, string ending, string newEnding)
-        {
-            // if the word ends with tested end
-            if (word.ToLower().EndsWith(ending))
-            {
-                // then substitute old end by new end ...
-                string newWord = word.Substring(0, word.Length - ending.Length) + newEnding;
-                // ... and if the word exists, we have the right one
-                if (Exists(newWord))
-                    return newWord;
-            }
-            return null;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Language.Implementation
+{
+    /// <summary>
+    /// Words with singular/plural capacity, changed in the end
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    abstract class AbstractEndPluralWords : AbstractWords
+    {
+        /// <summary>
+        /// Corresponding singular and plural endings
+        /// </summary>
+        protected class SingularPlural
+        {
+            /// <summary>
+            /// Singular ending
+            /// </summary>
+            public string Singular;
+            /// <summary>
+            /// Plural ending
+            /// </summary>
+            public string Plural;
+        }
+
+        /// <summary>
+        /// Singulars and plurals ends
+        /// </summary>
+        /// <value>The singulars plurals.</value>
+        protected abstract SingularPlural[] SingularsPlurals { get; }
+
+        /// <summary>
+        /// using English heuristics, convert 'dogs' to 'dog',
+        /// 'categories' to 'category',
+        /// 'cat' remains unchanged.
+        /// </summary>
+        protected override string ComputeSingular(string plural)
+        {
+            if (plural.Length < 2)
+                return plural;
+
+            // we run on every possible singular/plural
+            foreach (SingularPlural sp in SingularsPlurals)
+            {
+                string newWord = Try(plural, sp.Plural, sp.Singular);
+                if (newWord != null)
+                    return newWord;
+            }
+
+            return plural;
+        }
+
+        /// <summary>
+        /// using English heuristics, convert 'dog' to 'dogs',
+        /// 'bass' remains unchanged.
+        /// </summary>
+        protected override string ComputePlural(string singular)
+        {
+            if (singular.Length < 2)
+                return singular;
+
+            foreach (SingularPlural sp in SingularsPlurals)
+            {
+                string newWord = Try(singular, sp.Singular, sp.Plural);
+                if (newWord != null)
+                    return newWord;
+            }
+
+            return singular;
+        }
+
+        /// <summary>
+        /// Tries the specified word for singular/plural.
+        /// </summary>
+        /// <param name="word">The word.</param>
+        /// <param name="ending">The ending.</param>
+        /// <param name="newEnding">The new ending.</param>
+        /// <returns></returns>
+        protected string Try(string word, string ending, string newEnding)
+        {
+            // if the word ends with tested end
+            if (word.ToLower().EndsWith(ending))
+            {
+                // then substitute old end by new end ...
+                string newWord = word.Substring(0, word.Length - ending.Length) + newEnding;
+                // ... and if the word exists, we have the right one
+                if (Exists(newWord))
+                    return newWord;
+            }
+            return null;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/AbstractWords.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/AbstractWords.cs
@@ -1,329 +1,329 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-
-namespace DbLinq.Language.Implementation
-{
-    /// <summary>
-    /// Offer base mechanisms for words based languages (== all)
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    abstract class AbstractWords : ILanguageWords
-    {
-        /// <summary>
-        /// Words and corresponding weights
-        /// </summary>
-        protected IDictionary<string, int> WordsWeights;
-        /// <summary>
-        /// Plural forms for singular words (exceptions)
-        /// </summary>
-        protected IDictionary<string, string> SingularToPlural = new Dictionary<string, string>();
-        /// <summary>
-        /// Singular froms for plural words (exceptions)
-        /// </summary>
-        protected IDictionary<string, string> PluralToSingular = new Dictionary<string, string>();
-
-        /// <summary>
-        /// using English heuristics, convert 'dogs' to 'dog',
-        /// 'categories' to 'category',
-        /// 'cat' remains unchanged.
-        /// </summary>
-        /// <param name="plural"></param>
-        /// <returns></returns>
-        public virtual string Singularize(string plural)
-        {
-            string singular;
-            if (PluralToSingular.TryGetValue(plural, out singular))
-                return singular;
-            return ComputeSingular(plural);
-        }
-
-        /// <summary>
-        /// using English heuristics, convert 'dog' to 'dogs',
-        /// 'bass' remains unchanged.
-        /// </summary>
-        /// <param name="singular"></param>
-        /// <returns></returns>
-        public virtual string Pluralize(string singular)
-        {
-            string plural;
-            if (SingularToPlural.TryGetValue(singular, out plural))
-                return plural;
-            return ComputePlural(singular);
-        }
-
-        /// <summary>
-        /// Computes the singular.
-        /// </summary>
-        /// <param name="plural">The plural.</param>
-        /// <returns></returns>
-        protected abstract string ComputeSingular(string plural);
-        /// <summary>
-        /// Computes the plural.
-        /// </summary>
-        /// <param name="singular">The singular.</param>
-        /// <returns></returns>
-        protected abstract string ComputePlural(string singular);
-
-        /// <summary>
-        /// Returns true if the required culture is supported
-        /// </summary>
-        /// <param name="cultureInfo"></param>
-        /// <returns></returns>
-        public abstract bool Supports(CultureInfo cultureInfo);
-        /// <summary>
-        /// Loads the words (operation may be slow, so it is excluded from ctor)
-        /// </summary>
-        public abstract void Load();
-
-        /// <summary>
-        /// Loads the specified resource name.
-        /// </summary>
-        /// <param name="resourceName">Name of the resource.</param>
-        public virtual void Load(string resourceName)
-        {
-            WordsWeights = new Dictionary<string, int>();
-            var type = GetType();
-            using (var resourceStream = type.Assembly.GetManifestResourceStream(type, resourceName))
-            {
-                using (var resourceReader = new StreamReader(resourceStream))
-                {
-                    var singularPluralSeparator = new[] { "=>" };
-                    while (!resourceReader.EndOfStream)
-                    {
-                        string word = resourceReader.ReadLine().Trim().ToLower();
-                        // comments start with a "#"
-                        if (word.Length == 0 || word[0] == '#')
-                            continue;
-                        int count = 1;
-                        // starting a word with a "+" adds weight to it
-                        while (word.StartsWith("+"))
-                        {
-                            count++;
-                            word = word.Substring(1);
-                        }
-
-                        var singularPlural = word.Split(singularPluralSeparator, StringSplitOptions.RemoveEmptyEntries);
-                        // "a => b" declares a singular => plural form
-                        if (singularPlural.Length > 1)
-                        {
-                            word = singularPlural[0].Trim();
-                            var plural = singularPlural[1].Trim();
-                            SingularToPlural[word] = plural;
-                            PluralToSingular[plural] = word;
-                        }
-
-                        if (!WordsWeights.ContainsKey(word))
-                            WordsWeights[word] = count;
-                        else
-                            WordsWeights[word] += count;
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Gets the standard form for word (removes mixed letters, for example).
-        /// The goal is to make it usable from dictionary.
-        /// </summary>
-        /// <param name="word">The word.</param>
-        /// <returns></returns>
-        protected virtual string GetStandard(string word)
-        {
-            return word;
-        }
-
-        /// <summary>
-        /// Gets the weight for a given word.
-        /// Actually based on dictionary info.
-        /// </summary>
-        /// <param name="word">The word.</param>
-        /// <returns></returns>
-        protected int GetWeight(string word)
-        {
-            if (word.Length == 1) // a letter is always 1
-                return 1;
-            int weight;
-            WordsWeights.TryGetValue(GetStandard(word.ToLower()), out weight);
-            return weight;
-        }
-
-        /// <summary>
-        /// Tells if the specified word exists in dictionary.
-        /// </summary>
-        /// <param name="word">The word.</param>
-        /// <returns></returns>
-        protected bool Exists(string word)
-        {
-            return GetWeight(word) > 0;
-        }
-
-        /// <summary>
-        /// Context is used to speedup words recognition
-        /// </summary>
-        private class Context
-        {
-            internal class Split
-            {
-                public IList<string> Words;
-                public double Note;
-            }
-
-            public readonly IDictionary<string, Split> Splits = new Dictionary<string, Split>();
-        }
-
-        /// <summary>
-        /// Extracts words from an undistinguishable letters magma
-        /// for example "shipsperunit" --&gt; "ships" "per" "unit"
-        /// </summary>
-        /// <param name="text">The text.</param>
-        /// <returns></returns>
-        public virtual IList<string> GetWords(string text)
-        {
-            //var context = new Context();
-            //IList<string> words = new List<string>();
-            //int lastIndex = 0;
-            //for (int index = 0; index <= text.Length; index++)
-            //{
-            //    if (index == text.Length || !char.IsLetterOrDigit(text[index]))
-            //    {
-            //        var word = text.Substring(lastIndex, index - lastIndex);
-            //        // if the word is empty, we skip it
-            //        if (!string.IsNullOrEmpty(word))
-            //            GetMagmaWords(word, words, context);
-            //        lastIndex = index + 1;
-            //    }
-            //}
-            //return words;
-            var words = new List<string>();
-            GetMagmaWords(text, words, new Context());
-            return words;
-        }
-
-        /// <summary>
-        /// Gets the magma words.
-        /// </summary>
-        /// <param name="magma">The magma.</param>
-        /// <param name="words">The words.</param>
-        /// <param name="context">The context.</param>
-        private void GetMagmaWords(string magma, ICollection<string> words, Context context)
-        {
-            foreach (var word in GetMagmaWords(magma, context))
-                words.Add(word);
-        }
-
-        /// <summary>
-        /// Extracts words from a "word magma" by splitting the string on every position and keep the best score.
-        /// The method is recursive
-        /// </summary>
-        /// <param name="magma">The magma.</param>
-        /// <param name="context">The context.</param>
-        /// <returns></returns>
-        private IList<string> GetMagmaWords(string magma, Context context)
-        {
-            var foundWords = new List<string>();
-            if (magma.Length == 0)
-                throw new ArgumentException("magma string must not be empty");
-            // initalize matching
-            IList<string> bestLeft = new[] { magma };
-            IList<string> bestRight = new string[0];
-            double bestNote = GetNote(bestLeft);
-            if (bestNote > 0) // if we have something here, it is a full word, then don't look any further
-                return bestLeft; // that this may break the weight... for example toothpaste always win vs +++tooth +++paste
-            // split and try
-            for (int i = 1; i <= magma.Length - 1; i++)
-            {
-                var left = magma.Substring(0, i);
-                var right = magma.Substring(i);
-                IList<string> leftWords, rightWords;
-                double leftNote = ComputeWords(left, out leftWords, context);
-                double rightNote = ComputeWords(right, out rightWords, context);
-                double note = leftNote + rightNote;
-                if (note >= bestNote) // >= means "longer words are better"
-                {
-                    bestNote = note;
-                    bestLeft = leftWords;
-                    bestRight = rightWords;
-                }
-            }
-            foundWords.AddRange(bestLeft);
-            foundWords.AddRange(bestRight);
-            return foundWords;
-        }
-
-        /// <summary>
-        /// Computes the words.
-        /// </summary>
-        /// <param name="magma">The magma.</param>
-        /// <param name="words">The words.</param>
-        /// <param name="context">The context.</param>
-        /// <returns></returns>
-        private double ComputeWords(string magma, out IList<string> words, Context context)
-        {
-            Context.Split split;
-            if (!context.Splits.TryGetValue(magma, out split))
-            {
-                split = new Context.Split
-                            {
-                                Words = GetMagmaWords(magma, context)
-                            };
-                split.Note = GetNote(split.Words);
-                context.Splits[magma] = split;
-            }
-            words = split.Words;
-            return split.Note;
-        }
-
-        /// <summary>
-        /// Returns a value for a list of words, with the following rules:
-        /// - fewer is better
-        /// - popular is better
-        /// </summary>
-        /// <param name="words"></param>
-        /// <returns></returns>
-        public double GetNote(IList<string> words)
-        {
-            if (words.Count == 0)
-                return 0;
-
-            double totalWeight = 0;
-            foreach (string word in words)
-            {
-                double weight = GetWeight(word);
-                totalWeight += weight;
-            }
-            double averageWeight = totalWeight / words.Count;
-            return averageWeight / words.Count
-                   * 1000; // coz it's easier to read
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+
+namespace DbLinq.Language.Implementation
+{
+    /// <summary>
+    /// Offer base mechanisms for words based languages (== all)
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    abstract class AbstractWords : ILanguageWords
+    {
+        /// <summary>
+        /// Words and corresponding weights
+        /// </summary>
+        protected IDictionary<string, int> WordsWeights;
+        /// <summary>
+        /// Plural forms for singular words (exceptions)
+        /// </summary>
+        protected IDictionary<string, string> SingularToPlural = new Dictionary<string, string>();
+        /// <summary>
+        /// Singular froms for plural words (exceptions)
+        /// </summary>
+        protected IDictionary<string, string> PluralToSingular = new Dictionary<string, string>();
+
+        /// <summary>
+        /// using English heuristics, convert 'dogs' to 'dog',
+        /// 'categories' to 'category',
+        /// 'cat' remains unchanged.
+        /// </summary>
+        /// <param name="plural"></param>
+        /// <returns></returns>
+        public virtual string Singularize(string plural)
+        {
+            string singular;
+            if (PluralToSingular.TryGetValue(plural, out singular))
+                return singular;
+            return ComputeSingular(plural);
+        }
+
+        /// <summary>
+        /// using English heuristics, convert 'dog' to 'dogs',
+        /// 'bass' remains unchanged.
+        /// </summary>
+        /// <param name="singular"></param>
+        /// <returns></returns>
+        public virtual string Pluralize(string singular)
+        {
+            string plural;
+            if (SingularToPlural.TryGetValue(singular, out plural))
+                return plural;
+            return ComputePlural(singular);
+        }
+
+        /// <summary>
+        /// Computes the singular.
+        /// </summary>
+        /// <param name="plural">The plural.</param>
+        /// <returns></returns>
+        protected abstract string ComputeSingular(string plural);
+        /// <summary>
+        /// Computes the plural.
+        /// </summary>
+        /// <param name="singular">The singular.</param>
+        /// <returns></returns>
+        protected abstract string ComputePlural(string singular);
+
+        /// <summary>
+        /// Returns true if the required culture is supported
+        /// </summary>
+        /// <param name="cultureInfo"></param>
+        /// <returns></returns>
+        public abstract bool Supports(CultureInfo cultureInfo);
+        /// <summary>
+        /// Loads the words (operation may be slow, so it is excluded from ctor)
+        /// </summary>
+        public abstract void Load();
+
+        /// <summary>
+        /// Loads the specified resource name.
+        /// </summary>
+        /// <param name="resourceName">Name of the resource.</param>
+        public virtual void Load(string resourceName)
+        {
+            WordsWeights = new Dictionary<string, int>();
+            var type = GetType();
+            using (var resourceStream = type.Assembly.GetManifestResourceStream(type, resourceName))
+            {
+                using (var resourceReader = new StreamReader(resourceStream))
+                {
+                    var singularPluralSeparator = new[] { "=>" };
+                    while (!resourceReader.EndOfStream)
+                    {
+                        string word = resourceReader.ReadLine().Trim().ToLower();
+                        // comments start with a "#"
+                        if (word.Length == 0 || word[0] == '#')
+                            continue;
+                        int count = 1;
+                        // starting a word with a "+" adds weight to it
+                        while (word.StartsWith("+"))
+                        {
+                            count++;
+                            word = word.Substring(1);
+                        }
+
+                        var singularPlural = word.Split(singularPluralSeparator, StringSplitOptions.RemoveEmptyEntries);
+                        // "a => b" declares a singular => plural form
+                        if (singularPlural.Length > 1)
+                        {
+                            word = singularPlural[0].Trim();
+                            var plural = singularPlural[1].Trim();
+                            SingularToPlural[word] = plural;
+                            PluralToSingular[plural] = word;
+                        }
+
+                        if (!WordsWeights.ContainsKey(word))
+                            WordsWeights[word] = count;
+                        else
+                            WordsWeights[word] += count;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Gets the standard form for word (removes mixed letters, for example).
+        /// The goal is to make it usable from dictionary.
+        /// </summary>
+        /// <param name="word">The word.</param>
+        /// <returns></returns>
+        protected virtual string GetStandard(string word)
+        {
+            return word;
+        }
+
+        /// <summary>
+        /// Gets the weight for a given word.
+        /// Actually based on dictionary info.
+        /// </summary>
+        /// <param name="word">The word.</param>
+        /// <returns></returns>
+        protected int GetWeight(string word)
+        {
+            if (word.Length == 1) // a letter is always 1
+                return 1;
+            int weight;
+            WordsWeights.TryGetValue(GetStandard(word.ToLower()), out weight);
+            return weight;
+        }
+
+        /// <summary>
+        /// Tells if the specified word exists in dictionary.
+        /// </summary>
+        /// <param name="word">The word.</param>
+        /// <returns></returns>
+        protected bool Exists(string word)
+        {
+            return GetWeight(word) > 0;
+        }
+
+        /// <summary>
+        /// Context is used to speedup words recognition
+        /// </summary>
+        private class Context
+        {
+            internal class Split
+            {
+                public IList<string> Words;
+                public double Note;
+            }
+
+            public readonly IDictionary<string, Split> Splits = new Dictionary<string, Split>();
+        }
+
+        /// <summary>
+        /// Extracts words from an undistinguishable letters magma
+        /// for example "shipsperunit" --&gt; "ships" "per" "unit"
+        /// </summary>
+        /// <param name="text">The text.</param>
+        /// <returns></returns>
+        public virtual IList<string> GetWords(string text)
+        {
+            //var context = new Context();
+            //IList<string> words = new List<string>();
+            //int lastIndex = 0;
+            //for (int index = 0; index <= text.Length; index++)
+            //{
+            //    if (index == text.Length || !char.IsLetterOrDigit(text[index]))
+            //    {
+            //        var word = text.Substring(lastIndex, index - lastIndex);
+            //        // if the word is empty, we skip it
+            //        if (!string.IsNullOrEmpty(word))
+            //            GetMagmaWords(word, words, context);
+            //        lastIndex = index + 1;
+            //    }
+            //}
+            //return words;
+            var words = new List<string>();
+            GetMagmaWords(text, words, new Context());
+            return words;
+        }
+
+        /// <summary>
+        /// Gets the magma words.
+        /// </summary>
+        /// <param name="magma">The magma.</param>
+        /// <param name="words">The words.</param>
+        /// <param name="context">The context.</param>
+        private void GetMagmaWords(string magma, ICollection<string> words, Context context)
+        {
+            foreach (var word in GetMagmaWords(magma, context))
+                words.Add(word);
+        }
+
+        /// <summary>
+        /// Extracts words from a "word magma" by splitting the string on every position and keep the best score.
+        /// The method is recursive
+        /// </summary>
+        /// <param name="magma">The magma.</param>
+        /// <param name="context">The context.</param>
+        /// <returns></returns>
+        private IList<string> GetMagmaWords(string magma, Context context)
+        {
+            var foundWords = new List<string>();
+            if (magma.Length == 0)
+                throw new ArgumentException("magma string must not be empty");
+            // initalize matching
+            IList<string> bestLeft = new[] { magma };
+            IList<string> bestRight = new string[0];
+            double bestNote = GetNote(bestLeft);
+            if (bestNote > 0) // if we have something here, it is a full word, then don't look any further
+                return bestLeft; // that this may break the weight... for example toothpaste always win vs +++tooth +++paste
+            // split and try
+            for (int i = 1; i <= magma.Length - 1; i++)
+            {
+                var left = magma.Substring(0, i);
+                var right = magma.Substring(i);
+                IList<string> leftWords, rightWords;
+                double leftNote = ComputeWords(left, out leftWords, context);
+                double rightNote = ComputeWords(right, out rightWords, context);
+                double note = leftNote + rightNote;
+                if (note >= bestNote) // >= means "longer words are better"
+                {
+                    bestNote = note;
+                    bestLeft = leftWords;
+                    bestRight = rightWords;
+                }
+            }
+            foundWords.AddRange(bestLeft);
+            foundWords.AddRange(bestRight);
+            return foundWords;
+        }
+
+        /// <summary>
+        /// Computes the words.
+        /// </summary>
+        /// <param name="magma">The magma.</param>
+        /// <param name="words">The words.</param>
+        /// <param name="context">The context.</param>
+        /// <returns></returns>
+        private double ComputeWords(string magma, out IList<string> words, Context context)
+        {
+            Context.Split split;
+            if (!context.Splits.TryGetValue(magma, out split))
+            {
+                split = new Context.Split
+                            {
+                                Words = GetMagmaWords(magma, context)
+                            };
+                split.Note = GetNote(split.Words);
+                context.Splits[magma] = split;
+            }
+            words = split.Words;
+            return split.Note;
+        }
+
+        /// <summary>
+        /// Returns a value for a list of words, with the following rules:
+        /// - fewer is better
+        /// - popular is better
+        /// </summary>
+        /// <param name="words"></param>
+        /// <returns></returns>
+        public double GetNote(IList<string> words)
+        {
+            if (words.Count == 0)
+                return 0;
+
+            double totalWeight = 0;
+            foreach (string word in words)
+            {
+                double weight = GetWeight(word);
+                totalWeight += weight;
+            }
+            double averageWeight = totalWeight / words.Count;
+            return averageWeight / words.Count
+                   * 1000; // coz it's easier to read
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/Languages.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/Languages.cs
@@ -1,61 +1,61 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-using DbLinq.Factory;
-
-namespace DbLinq.Language.Implementation
-{
-    /// <summary>
-    /// LanguageWords factory
-    /// </summary>
-    internal class Languages : ILanguages
-    {
-        /// <summary>
-        /// Loads the specified language related to given culture info.
-        /// </summary>
-        /// <param name="cultureInfo">The culture info.</param>
-        /// <returns></returns>
-        public ILanguageWords Load(CultureInfo cultureInfo)
-        {
-            var objectFactory = ObjectFactory.Current;
-            // uses the factory to enumerate ILanguageWords implementations
-            foreach (var languageType in objectFactory.GetImplementations(typeof(ILanguageWords)))
-            {
-                // checks for instance, but doesn't load it here
-                // (loading is slow)
-                var language = (ILanguageWords)objectFactory.Get(languageType);
-                if (language.Supports(cultureInfo))
-                {
-                    // if we have the right language, we load it
-                    language.Load();
-                    return language;
-                }
-            }
-            return null;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+using DbLinq.Factory;
+
+namespace DbLinq.Language.Implementation
+{
+    /// <summary>
+    /// LanguageWords factory
+    /// </summary>
+    internal class Languages : ILanguages
+    {
+        /// <summary>
+        /// Loads the specified language related to given culture info.
+        /// </summary>
+        /// <param name="cultureInfo">The culture info.</param>
+        /// <returns></returns>
+        public ILanguageWords Load(CultureInfo cultureInfo)
+        {
+            var objectFactory = ObjectFactory.Current;
+            // uses the factory to enumerate ILanguageWords implementations
+            foreach (var languageType in objectFactory.GetImplementations(typeof(ILanguageWords)))
+            {
+                // checks for instance, but doesn't load it here
+                // (loading is slow)
+                var language = (ILanguageWords)objectFactory.Get(languageType);
+                if (language.Supports(cultureInfo))
+                {
+                    // if we have the right language, we load it
+                    language.Load();
+                    return language;
+                }
+            }
+            return null;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/NoLanguageWords.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Language/Implementation/NoLanguageWords.cs
@@ -1,85 +1,85 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Globalization;
-
-namespace DbLinq.Language.Implementation
-{
-    /// <summary>
-    /// LanguagesWord implementation for no language
-    /// </summary>
-    internal class NoLanguageWords : ILanguageWords
-    {
-        /// <summary>
-        /// Invariant language: no singular, no plural
-        /// </summary>
-        /// <param name="plural"></param>
-        /// <returns></returns>
-        public string Singularize(string plural)
-        {
-            return plural;
-        }
-
-        /// <summary>
-        /// Invariant language: no singular, no plural
-        /// </summary>
-        /// <param name="singular"></param>
-        /// <returns></returns>
-        public string Pluralize(string singular)
-        {
-            return singular;
-        }
-
-        /// <summary>
-        /// Invariant language does not extract words
-        /// </summary>
-        /// <param name="text"></param>
-        /// <returns></returns>
-        public IList<string> GetWords(string text)
-        {
-            return new[] { text };
-        }
-
-        /// <summary>
-        /// Returns true if the required culture is supported
-        /// </summary>
-        /// <param name="cultureInfo"></param>
-        /// <returns></returns>
-        public bool Supports(CultureInfo cultureInfo)
-        {
-            return cultureInfo.IsNeutralCulture || cultureInfo.ThreeLetterISOLanguageName == "IVL";
-        }
-
-        /// <summary>
-        /// Loads language
-        /// </summary>
-        public void Load()
-        {
-            // yup. Nothing here.
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Globalization;
+
+namespace DbLinq.Language.Implementation
+{
+    /// <summary>
+    /// LanguagesWord implementation for no language
+    /// </summary>
+    internal class NoLanguageWords : ILanguageWords
+    {
+        /// <summary>
+        /// Invariant language: no singular, no plural
+        /// </summary>
+        /// <param name="plural"></param>
+        /// <returns></returns>
+        public string Singularize(string plural)
+        {
+            return plural;
+        }
+
+        /// <summary>
+        /// Invariant language: no singular, no plural
+        /// </summary>
+        /// <param name="singular"></param>
+        /// <returns></returns>
+        public string Pluralize(string singular)
+        {
+            return singular;
+        }
+
+        /// <summary>
+        /// Invariant language does not extract words
+        /// </summary>
+        /// <param name="text"></param>
+        /// <returns></returns>
+        public IList<string> GetWords(string text)
+        {
+            return new[] { text };
+        }
+
+        /// <summary>
+        /// Returns true if the required culture is supported
+        /// </summary>
+        /// <param name="cultureInfo"></param>
+        /// <returns></returns>
+        public bool Supports(CultureInfo cultureInfo)
+        {
+            return cultureInfo.IsNeutralCulture || cultureInfo.ThreeLetterISOLanguageName == "IVL";
+        }
+
+        /// <summary>
+        /// Loads language
+        /// </summary>
+        public void Load()
+        {
+            // yup. Nothing here.
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/MonoTODOAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/MonoTODOAttribute.cs
@@ -1,120 +1,120 @@
-//
-// MonoTODOAttribute.cs
-//
-// Authors:
-//   Ravi Pratap (ravi@ximian.com)
-//   Eyal Alaluf <eyala@mainsoft.com> 
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2006 Mainsoft, Inc (http://www.mainsoft.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System {
-	
-	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
-	internal class MonoTODOAttribute : Attribute {
-
-		string comment;
-		
-		public MonoTODOAttribute ()
-		{
-		}
-
-		public MonoTODOAttribute (string comment)
-		{
-			this.comment = comment;
-		}
-
-		public virtual string Comment {
-			get { return comment; }
-		}
-	}
-
-	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
-	internal class MonoDocumentationNoteAttribute : MonoTODOAttribute {
-
-		public MonoDocumentationNoteAttribute (string comment)
-			: base (comment)
-		{
-		}
-
-		public override string Comment {
-			get { return base.Comment; }
-		}
-	}
-
-	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
-	internal class MonoExtensionAttribute : MonoTODOAttribute {
-
-		public MonoExtensionAttribute (string comment)
-			: base (comment)
-		{
-		}
-
-		public override string Comment {
-			get { return base.Comment; }
-		}
-	}
-
-	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
-	internal class MonoInternalNoteAttribute : MonoTODOAttribute {
-
-		public MonoInternalNoteAttribute (string comment)
-			: base (comment)
-		{
-		}
-
-		public override string Comment {
-			get { return base.Comment; }
-		}
-	}
-
-	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
-	internal class MonoLimitationAttribute : MonoTODOAttribute {
-
-		public MonoLimitationAttribute (string comment)
-			: base (comment)
-		{
-		}
-
-		public override string Comment {
-			get { return base.Comment; }
-		}
-	}
-
-	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
-	internal class MonoNotSupportedAttribute : MonoTODOAttribute {
-
-		public MonoNotSupportedAttribute (string comment)
-			: base (comment)
-		{
-		}
-
-		public override string Comment {
-			get { return base.Comment; }
-		}
-	}
-}
+//
+// MonoTODOAttribute.cs
+//
+// Authors:
+//   Ravi Pratap (ravi@ximian.com)
+//   Eyal Alaluf <eyala@mainsoft.com> 
+//
+// (C) Ximian, Inc.  http://www.ximian.com
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2006 Mainsoft, Inc (http://www.mainsoft.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System {
+	
+	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
+	internal class MonoTODOAttribute : Attribute {
+
+		string comment;
+		
+		public MonoTODOAttribute ()
+		{
+		}
+
+		public MonoTODOAttribute (string comment)
+		{
+			this.comment = comment;
+		}
+
+		public virtual string Comment {
+			get { return comment; }
+		}
+	}
+
+	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
+	internal class MonoDocumentationNoteAttribute : MonoTODOAttribute {
+
+		public MonoDocumentationNoteAttribute (string comment)
+			: base (comment)
+		{
+		}
+
+		public override string Comment {
+			get { return base.Comment; }
+		}
+	}
+
+	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
+	internal class MonoExtensionAttribute : MonoTODOAttribute {
+
+		public MonoExtensionAttribute (string comment)
+			: base (comment)
+		{
+		}
+
+		public override string Comment {
+			get { return base.Comment; }
+		}
+	}
+
+	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
+	internal class MonoInternalNoteAttribute : MonoTODOAttribute {
+
+		public MonoInternalNoteAttribute (string comment)
+			: base (comment)
+		{
+		}
+
+		public override string Comment {
+			get { return base.Comment; }
+		}
+	}
+
+	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
+	internal class MonoLimitationAttribute : MonoTODOAttribute {
+
+		public MonoLimitationAttribute (string comment)
+			: base (comment)
+		{
+		}
+
+		public override string Comment {
+			get { return base.Comment; }
+		}
+	}
+
+	[AttributeUsage (AttributeTargets.All, AllowMultiple=true)]
+	internal class MonoNotSupportedAttribute : MonoTODOAttribute {
+
+		public MonoNotSupportedAttribute (string comment)
+			: base (comment)
+		{
+		}
+
+		public override string Comment {
+			get { return base.Comment; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Properties/AssemblyInfo.cs
@@ -1,132 +1,132 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinq")]
-[assembly: AssemblyDescription("DbLinq core")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM componenets.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e2381b27-cdb0-401d-9019-f72079b4928d")]
-
-[assembly: DbLinq]
-
-// Regarding tests, it is mandatory, since we test internals
-[assembly: InternalsVisibleTo("DbLinqTest, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-[assembly: InternalsVisibleTo("DbLinq_test, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-
-// DbMetal and vendors use DbLinq's internal utilities
-// this is not a requirement, but a little help
-[assembly: InternalsVisibleTo("DbMetal, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-[assembly: InternalsVisibleTo("DbMetal_test, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-[assembly: InternalsVisibleTo("DbLinq.MySql, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-[assembly: InternalsVisibleTo("DbLinq.Oracle, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-[assembly: InternalsVisibleTo("DbLinq.PostgreSql, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-
-[assembly: InternalsVisibleTo("DbLinq.Sqlite, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-[assembly: InternalsVisibleTo("DbLinq.SqlServer, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-[assembly: InternalsVisibleTo("DbLinq.Ingres, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-[assembly: InternalsVisibleTo("DbLinq.Firebird, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
-
-[assembly: InternalsVisibleTo("sqlmetal, PublicKey="
-+ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
-+ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
-+ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
-+ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
-+ "2309259f")]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinq")]
+[assembly: AssemblyDescription("DbLinq core")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM componenets.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e2381b27-cdb0-401d-9019-f72079b4928d")]
+
+[assembly: DbLinq]
+
+// Regarding tests, it is mandatory, since we test internals
+[assembly: InternalsVisibleTo("DbLinqTest, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+[assembly: InternalsVisibleTo("DbLinq_test, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+
+// DbMetal and vendors use DbLinq's internal utilities
+// this is not a requirement, but a little help
+[assembly: InternalsVisibleTo("DbMetal, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+[assembly: InternalsVisibleTo("DbMetal_test, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+[assembly: InternalsVisibleTo("DbLinq.MySql, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+[assembly: InternalsVisibleTo("DbLinq.Oracle, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+[assembly: InternalsVisibleTo("DbLinq.PostgreSql, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+
+[assembly: InternalsVisibleTo("DbLinq.Sqlite, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+[assembly: InternalsVisibleTo("DbLinq.SqlServer, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+[assembly: InternalsVisibleTo("DbLinq.Ingres, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+[assembly: InternalsVisibleTo("DbLinq.Firebird, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
+
+[assembly: InternalsVisibleTo("sqlmetal, PublicKey="
++ "0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400"
++ "83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8"
++ "fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663"
++ "962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279"
++ "2309259f")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/AssociationName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/AssociationName.cs
@@ -1,39 +1,39 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Schema
-{
-    /// <summary>
-    /// Contains both parts for association name
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class AssociationName : Name
-    {
-        public string ManyToOneMemberName { get; set; }
-        public string OneToManyMemberName { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Schema
+{
+    /// <summary>
+    /// Contains both parts for association name
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class AssociationName : Name
+    {
+        public string ManyToOneMemberName { get; set; }
+        public string OneToManyMemberName { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Case.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Case.cs
@@ -1,54 +1,54 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema
-{
-    /// <summary>
-    /// Represent a case model
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    enum Case
-    {
-        /// <summary>
-        /// With this value, the case of a give word is unchanged
-        /// </summary>
-        Leave,
-        /// <summary>
-        /// first word all lowercase, next words capitalized
-        /// </summary>
-        camelCase,
-        /// <summary>
-        /// all words capitalized
-        /// </summary>
-        PascalCase,
-        /// <summary>
-        /// all words capitalized, words with 2 letters or less full uppercase
-        /// </summary>
-        NetCase,
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema
+{
+    /// <summary>
+    /// Represent a case model
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    enum Case
+    {
+        /// <summary>
+        /// With this value, the case of a give word is unchanged
+        /// </summary>
+        Leave,
+        /// <summary>
+        /// first word all lowercase, next words capitalized
+        /// </summary>
+        camelCase,
+        /// <summary>
+        /// all words capitalized
+        /// </summary>
+        PascalCase,
+        /// <summary>
+        /// all words capitalized, words with 2 letters or less full uppercase
+        /// </summary>
+        NetCase,
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/ColumnName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/ColumnName.cs
@@ -1,41 +1,41 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Schema
-{
-    /// <summary>
-    /// A column maps to a property
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class ColumnName : Name
-    {
-        /// <summary>
-        /// Name of the public property
-        /// </summary>
-        public string PropertyName { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Schema
+{
+    /// <summary>
+    /// A column maps to a property
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class ColumnName : Name
+    {
+        /// <summary>
+        /// Name of the public property
+        /// </summary>
+        public string PropertyName { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/ArrayAdapter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/ArrayAdapter.cs
@@ -1,317 +1,317 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Reflection;
-using DbLinq.Util;
-
-namespace DbLinq.Schema.Dbml.Adapter
-{
-    /// <summary>
-    /// ArrayAdapter wraps an IEnumerable as an IList, where items can be dynamically changed.
-    /// This is very slow, and should be used with caution.
-    /// Maybe we will remove it (and change DbMetal)
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    [DebuggerDisplay("{reflectedMember}")]
-#if !MONO_STRICT
-    public
-#endif
-    class ArrayAdapter<T> : ISimpleList<T>
-    {
-        protected readonly object Owner;
-        protected readonly MemberInfo MemberInfo;
-        // just to be debugger friendly
-        private object reflectedMember { get { return MemberInfo.GetMemberValue(Owner); } }
-
-        /// <summary>
-        /// Returns field value as enumerable
-        /// </summary>
-        /// <returns></returns>
-        protected virtual IEnumerable GetValue()
-        {
-            return (IEnumerable)MemberInfo.GetMemberValue(Owner);
-        }
-
-        /// <summary>
-        /// Returns field type
-        /// </summary>
-        /// <returns></returns>
-        protected virtual System.Type GetValueType()
-        {
-            return MemberInfo.GetMemberType();
-        }
-
-        /// <summary>
-        /// Sets field as IEnumerable
-        /// </summary>
-        /// <param name="value"></param>
-        protected virtual void SetValue(IEnumerable value)
-        {
-            MemberInfo.SetMemberValue(Owner, value);
-        }
-
-        /// <summary>
-        /// Gets target field as a dynamic array
-        /// </summary>
-        /// <returns></returns>
-        protected virtual List<T> GetDynamic()
-        {
-            var list = new List<T>();
-            var fieldValue = GetValue();
-            if (fieldValue != null)
-            {
-                foreach (var o in fieldValue)
-                {
-                    if (o is T)
-                        list.Add((T)o);
-                }
-            }
-            return list;
-        }
-
-        /// <summary>
-        /// Writes back target field given a list
-        /// </summary>
-        /// <param name="list"></param>
-        protected virtual void SetStatic(IList<T> list)
-        {
-            var others = new ArrayList();
-            var fieldValue = GetValue();
-            if (fieldValue != null)
-            {
-                foreach (var o in fieldValue)
-                {
-                    if (!(o is T))
-                        others.Add(o);
-                }
-            }
-            var array = Array.CreateInstance(GetValueType().GetElementType(), others.Count + list.Count);
-            others.CopyTo(array);
-            for (int listIndex = 0; listIndex < list.Count; listIndex++)
-            {
-                array.SetValue(list[listIndex], others.Count + listIndex);
-            }
-            SetValue(array);
-        }
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="ArrayAdapter&lt;T&gt;"/> class.
-        /// </summary>
-        /// <param name="o">The o.</param>
-        /// <param name="fieldName">Name of the field.</param>
-        public ArrayAdapter(object o, string fieldName)
-        {
-            Owner = o;
-            MemberInfo = o.GetType().GetMember(fieldName)[0];
-        }
-
-        #region IList<T> Members
-
-        /// <summary>
-        /// Returns the index of given item.
-        /// </summary>
-        /// <param name="item">The item.</param>
-        /// <returns></returns>
-        public int IndexOf(T item)
-        {
-            return GetDynamic().IndexOf(item);
-        }
-
-        /// <summary>
-        /// Inserts the specified item at given index.
-        /// </summary>
-        /// <param name="index">The index.</param>
-        /// <param name="item">The item.</param>
-        public void Insert(int index, T item)
-        {
-            IList<T> dynamicArray = GetDynamic();
-            dynamicArray.Insert(index, item);
-            SetStatic(dynamicArray);
-        }
-
-        /// <summary>
-        /// Removes at given index.
-        /// </summary>
-        /// <param name="index">The index.</param>
-        public void RemoveAt(int index)
-        {
-            IList<T> dynamicArray = GetDynamic();
-            dynamicArray.RemoveAt(index);
-            SetStatic(dynamicArray);
-        }
-
-        /// <summary>
-        /// Gets or sets the <see cref="T"/> at the specified index.
-        /// </summary>
-        /// <value></value>
-        public T this[int index]
-        {
-            get
-            {
-                return GetDynamic()[index];
-            }
-            set
-            {
-                IList<T> dynamicArray = GetDynamic();
-                dynamicArray[index] = value;
-                SetStatic(dynamicArray);
-            }
-        }
-
-        #endregion
-
-        #region ICollection<T> Members
-
-        /// <summary>
-        /// Append a parameter
-        /// </summary>
-        /// <param name="item"></param>
-        public void Add(T item)
-        {
-            IList<T> dynamicArray = GetDynamic();
-            dynamicArray.Add(item);
-            SetStatic(dynamicArray);
-        }
-
-        /// <summary>
-        /// Clears this instance.
-        /// </summary>
-        public void Clear()
-        {
-            SetStatic(new T[0]);
-        }
-
-        /// <summary>
-        /// Determines whether [contains] [the specified item].
-        /// </summary>
-        /// <param name="item">The item.</param>
-        /// <returns>
-        /// 	<c>true</c> if [contains] [the specified item]; otherwise, <c>false</c>.
-        /// </returns>
-        public bool Contains(T item)
-        {
-            return GetDynamic().Contains(item);
-        }
-
-        /// <summary>
-        /// Copies to array.
-        /// </summary>
-        /// <param name="array">The array.</param>
-        /// <param name="arrayIndex">Index of the array.</param>
-        public void CopyTo(T[] array, int arrayIndex)
-        {
-            GetDynamic().CopyTo(array, arrayIndex);
-        }
-
-        /// <summary>
-        /// Items count
-        /// </summary>
-        /// <value></value>
-        public int Count
-        {
-            get { return GetDynamic().Count; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether this instance is read only.
-        /// </summary>
-        /// <value>
-        /// 	<c>true</c> if this instance is read only; otherwise, <c>false</c>.
-        /// </value>
-        public bool IsReadOnly
-        {
-            get { return false; }
-        }
-
-        /// <summary>
-        /// Removes the given item.
-        /// </summary>
-        /// <param name="item">The item.</param>
-        /// <returns></returns>
-        public bool Remove(T item)
-        {
-            IList<T> dynamicArray = GetDynamic();
-            bool removed = dynamicArray.Remove(item);
-            SetStatic(dynamicArray);
-            return removed;
-        }
-
-        #endregion
-
-        #region IEnumerable<T> Members
-
-        /// <summary>
-        /// Returns an enumerator to enumerate items.
-        /// </summary>
-        /// <returns>
-        /// </returns>
-        public IEnumerator<T> GetEnumerator()
-        {
-            return GetDynamic().GetEnumerator();
-        }
-
-        #endregion
-
-        #region IEnumerable Members
-
-        /// <summary>
-        /// Returns an enumerator to enumerate items.
-        /// </summary>
-        /// <returns>
-        /// </returns>
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return GetDynamic().GetEnumerator();
-        }
-
-        #endregion
-
-        /// <summary>
-        /// Sorts using the specified comparer.
-        /// </summary>
-        /// <param name="sorter">The sorter.</param>
-        public void Sort(IComparer<T> sorter)
-        {
-            var list = GetDynamic();
-            list.Sort(sorter);
-            SetStatic(list);
-        }
-
-        /// <summary>
-        /// Finds all items matching the given predicate.
-        /// </summary>
-        /// <param name="match">The match.</param>
-        /// <returns></returns>
-        public List<T> FindAll(Predicate<T> match)
-        {
-            return GetDynamic().FindAll(match);
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Reflection;
+using DbLinq.Util;
+
+namespace DbLinq.Schema.Dbml.Adapter
+{
+    /// <summary>
+    /// ArrayAdapter wraps an IEnumerable as an IList, where items can be dynamically changed.
+    /// This is very slow, and should be used with caution.
+    /// Maybe we will remove it (and change DbMetal)
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    [DebuggerDisplay("{reflectedMember}")]
+#if !MONO_STRICT
+    public
+#endif
+    class ArrayAdapter<T> : ISimpleList<T>
+    {
+        protected readonly object Owner;
+        protected readonly MemberInfo MemberInfo;
+        // just to be debugger friendly
+        private object reflectedMember { get { return MemberInfo.GetMemberValue(Owner); } }
+
+        /// <summary>
+        /// Returns field value as enumerable
+        /// </summary>
+        /// <returns></returns>
+        protected virtual IEnumerable GetValue()
+        {
+            return (IEnumerable)MemberInfo.GetMemberValue(Owner);
+        }
+
+        /// <summary>
+        /// Returns field type
+        /// </summary>
+        /// <returns></returns>
+        protected virtual System.Type GetValueType()
+        {
+            return MemberInfo.GetMemberType();
+        }
+
+        /// <summary>
+        /// Sets field as IEnumerable
+        /// </summary>
+        /// <param name="value"></param>
+        protected virtual void SetValue(IEnumerable value)
+        {
+            MemberInfo.SetMemberValue(Owner, value);
+        }
+
+        /// <summary>
+        /// Gets target field as a dynamic array
+        /// </summary>
+        /// <returns></returns>
+        protected virtual List<T> GetDynamic()
+        {
+            var list = new List<T>();
+            var fieldValue = GetValue();
+            if (fieldValue != null)
+            {
+                foreach (var o in fieldValue)
+                {
+                    if (o is T)
+                        list.Add((T)o);
+                }
+            }
+            return list;
+        }
+
+        /// <summary>
+        /// Writes back target field given a list
+        /// </summary>
+        /// <param name="list"></param>
+        protected virtual void SetStatic(IList<T> list)
+        {
+            var others = new ArrayList();
+            var fieldValue = GetValue();
+            if (fieldValue != null)
+            {
+                foreach (var o in fieldValue)
+                {
+                    if (!(o is T))
+                        others.Add(o);
+                }
+            }
+            var array = Array.CreateInstance(GetValueType().GetElementType(), others.Count + list.Count);
+            others.CopyTo(array);
+            for (int listIndex = 0; listIndex < list.Count; listIndex++)
+            {
+                array.SetValue(list[listIndex], others.Count + listIndex);
+            }
+            SetValue(array);
+        }
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ArrayAdapter&lt;T&gt;"/> class.
+        /// </summary>
+        /// <param name="o">The o.</param>
+        /// <param name="fieldName">Name of the field.</param>
+        public ArrayAdapter(object o, string fieldName)
+        {
+            Owner = o;
+            MemberInfo = o.GetType().GetMember(fieldName)[0];
+        }
+
+        #region IList<T> Members
+
+        /// <summary>
+        /// Returns the index of given item.
+        /// </summary>
+        /// <param name="item">The item.</param>
+        /// <returns></returns>
+        public int IndexOf(T item)
+        {
+            return GetDynamic().IndexOf(item);
+        }
+
+        /// <summary>
+        /// Inserts the specified item at given index.
+        /// </summary>
+        /// <param name="index">The index.</param>
+        /// <param name="item">The item.</param>
+        public void Insert(int index, T item)
+        {
+            IList<T> dynamicArray = GetDynamic();
+            dynamicArray.Insert(index, item);
+            SetStatic(dynamicArray);
+        }
+
+        /// <summary>
+        /// Removes at given index.
+        /// </summary>
+        /// <param name="index">The index.</param>
+        public void RemoveAt(int index)
+        {
+            IList<T> dynamicArray = GetDynamic();
+            dynamicArray.RemoveAt(index);
+            SetStatic(dynamicArray);
+        }
+
+        /// <summary>
+        /// Gets or sets the <see cref="T"/> at the specified index.
+        /// </summary>
+        /// <value></value>
+        public T this[int index]
+        {
+            get
+            {
+                return GetDynamic()[index];
+            }
+            set
+            {
+                IList<T> dynamicArray = GetDynamic();
+                dynamicArray[index] = value;
+                SetStatic(dynamicArray);
+            }
+        }
+
+        #endregion
+
+        #region ICollection<T> Members
+
+        /// <summary>
+        /// Append a parameter
+        /// </summary>
+        /// <param name="item"></param>
+        public void Add(T item)
+        {
+            IList<T> dynamicArray = GetDynamic();
+            dynamicArray.Add(item);
+            SetStatic(dynamicArray);
+        }
+
+        /// <summary>
+        /// Clears this instance.
+        /// </summary>
+        public void Clear()
+        {
+            SetStatic(new T[0]);
+        }
+
+        /// <summary>
+        /// Determines whether [contains] [the specified item].
+        /// </summary>
+        /// <param name="item">The item.</param>
+        /// <returns>
+        /// 	<c>true</c> if [contains] [the specified item]; otherwise, <c>false</c>.
+        /// </returns>
+        public bool Contains(T item)
+        {
+            return GetDynamic().Contains(item);
+        }
+
+        /// <summary>
+        /// Copies to array.
+        /// </summary>
+        /// <param name="array">The array.</param>
+        /// <param name="arrayIndex">Index of the array.</param>
+        public void CopyTo(T[] array, int arrayIndex)
+        {
+            GetDynamic().CopyTo(array, arrayIndex);
+        }
+
+        /// <summary>
+        /// Items count
+        /// </summary>
+        /// <value></value>
+        public int Count
+        {
+            get { return GetDynamic().Count; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is read only.
+        /// </summary>
+        /// <value>
+        /// 	<c>true</c> if this instance is read only; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsReadOnly
+        {
+            get { return false; }
+        }
+
+        /// <summary>
+        /// Removes the given item.
+        /// </summary>
+        /// <param name="item">The item.</param>
+        /// <returns></returns>
+        public bool Remove(T item)
+        {
+            IList<T> dynamicArray = GetDynamic();
+            bool removed = dynamicArray.Remove(item);
+            SetStatic(dynamicArray);
+            return removed;
+        }
+
+        #endregion
+
+        #region IEnumerable<T> Members
+
+        /// <summary>
+        /// Returns an enumerator to enumerate items.
+        /// </summary>
+        /// <returns>
+        /// </returns>
+        public IEnumerator<T> GetEnumerator()
+        {
+            return GetDynamic().GetEnumerator();
+        }
+
+        #endregion
+
+        #region IEnumerable Members
+
+        /// <summary>
+        /// Returns an enumerator to enumerate items.
+        /// </summary>
+        /// <returns>
+        /// </returns>
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetDynamic().GetEnumerator();
+        }
+
+        #endregion
+
+        /// <summary>
+        /// Sorts using the specified comparer.
+        /// </summary>
+        /// <param name="sorter">The sorter.</param>
+        public void Sort(IComparer<T> sorter)
+        {
+            var list = GetDynamic();
+            list.Sort(sorter);
+            SetStatic(list);
+        }
+
+        /// <summary>
+        /// Finds all items matching the given predicate.
+        /// </summary>
+        /// <param name="match">The match.</param>
+        /// <returns></returns>
+        public List<T> FindAll(Predicate<T> match)
+        {
+            return GetDynamic().FindAll(match);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/CsvArrayAdapter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/CsvArrayAdapter.cs
@@ -1,81 +1,81 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections;
-using System.Linq;
-using DbLinq.Util;
-
-namespace DbLinq.Schema.Dbml.Adapter
-{
-    /// <summary>
-    /// Wraps a CSV string to an array
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class CsvArrayAdapter : ArrayAdapter<string>
-    {
-        public CsvArrayAdapter(object o, string fieldName)
-            : base(o, fieldName)
-        {
-        }
-
-        /// <summary>
-        /// The value here comes from a CSV string, ie "A,B,C"
-        /// So we split around the commas and trim
-        /// </summary>
-        /// <returns></returns>
-        protected override IEnumerable GetValue()
-        {
-            var values = MemberInfo.GetMemberValue(Owner) as string;
-            if (values == null)
-                return new string[0];
-            var splitValues = values.Split(',');
-            var trimmedSplitValues = from v in splitValues select v.Trim();
-            return trimmedSplitValues;
-        }
-
-        /// <summary>
-        /// The value type is an array of string
-        /// </summary>
-        /// <returns></returns>
-        protected override System.Type GetValueType()
-        {
-            return typeof(string[]);
-        }
-
-        /// <summary>
-        /// To set a unique value, we just join the parts
-        /// </summary>
-        /// <param name="value"></param>
-        protected override void SetValue(IEnumerable value)
-        {
-            var values = value.Cast<string>().ToArray();
-            var joinedValues = string.Join(",", values);
-            MemberInfo.SetMemberValue(Owner, joinedValues);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections;
+using System.Linq;
+using DbLinq.Util;
+
+namespace DbLinq.Schema.Dbml.Adapter
+{
+    /// <summary>
+    /// Wraps a CSV string to an array
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class CsvArrayAdapter : ArrayAdapter<string>
+    {
+        public CsvArrayAdapter(object o, string fieldName)
+            : base(o, fieldName)
+        {
+        }
+
+        /// <summary>
+        /// The value here comes from a CSV string, ie "A,B,C"
+        /// So we split around the commas and trim
+        /// </summary>
+        /// <returns></returns>
+        protected override IEnumerable GetValue()
+        {
+            var values = MemberInfo.GetMemberValue(Owner) as string;
+            if (values == null)
+                return new string[0];
+            var splitValues = values.Split(',');
+            var trimmedSplitValues = from v in splitValues select v.Trim();
+            return trimmedSplitValues;
+        }
+
+        /// <summary>
+        /// The value type is an array of string
+        /// </summary>
+        /// <returns></returns>
+        protected override System.Type GetValueType()
+        {
+            return typeof(string[]);
+        }
+
+        /// <summary>
+        /// To set a unique value, we just join the parts
+        /// </summary>
+        /// <param name="value"></param>
+        protected override void SetValue(IEnumerable value)
+        {
+            var values = value.Cast<string>().ToArray();
+            var joinedValues = string.Join(",", values);
+            MemberInfo.SetMemberValue(Owner, joinedValues);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/EnumType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/EnumType.cs
@@ -1,250 +1,250 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using DbLinq.Util;
-
-namespace DbLinq.Schema.Dbml.Adapter
-{
-#if !MONO_STRICT
-    public
-#endif
-    class EnumType : IDictionary<string, int>, INamedType
-    {
-        private string name;
-        public string Name
-        {
-            get { return name; }
-            set
-            {
-                name = value;
-                UpdateMember();
-            }
-        }
-
-        private readonly IDictionary<string, int> dictionary;
-        private readonly object owner;
-        private readonly MemberInfo memberInfo;
-
-        internal static bool IsEnum(string literalType)
-        {
-            string enumName;
-            IDictionary<string, int> values;
-            return Extract(literalType, out enumName, out values);
-        }
-
-        /// <summary>
-        /// Extracts enum name and value from a given string.
-        /// The string is in the following form:
-        /// enumName key1[=value1]{,keyN[=valueN]}
-        /// if enumName is 'enum', then the enum is anonymous
-        /// </summary>
-        /// <param name="literalType"></param>
-        /// <param name="enumName"></param>
-        /// <param name="values"></param>
-        /// <returns></returns>
-        private static bool Extract(string literalType, out string enumName, out IDictionary<string, int> values)
-        {
-            enumName = null;
-            values = new Dictionary<string, int>();
-
-            if (string.IsNullOrEmpty(literalType))
-                return false;
-
-            var nameValues = literalType.Split(new[] { ' ' }, 2);
-            if (nameValues.Length == 2)
-            {
-                // extract the name
-                string name = nameValues[0].Trim();
-                if (!name.IsIdentifier())
-                    return false;
-
-                // now extract the values
-                IDictionary<string, int> readValues = new Dictionary<string, int>();
-                int currentValue = 1;
-                var keyValues = nameValues[1].Split(',');
-                foreach (var keyValue in keyValues)
-                {
-                    // a value may indicate its numeric equivalent, or not (in this case, we work the same way as C# enums, with an implicit counter)
-                    var keyValueParts = keyValue.Split(new[] { '=' }, 2);
-                    var key = keyValueParts[0].Trim();
-
-                    if (!key.IsIdentifier())
-                        return false;
-
-                    if (keyValueParts.Length > 1)
-                    {
-                        if (!int.TryParse(keyValueParts[1], out currentValue))
-                            return false;
-                    }
-                    readValues[key] = currentValue++;
-                }
-                if (name == "enum")
-                    enumName = string.Empty;
-                else
-                    enumName = name;
-                values = readValues;
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Does the opposite: creates a literal string from values
-        /// </summary>
-        private void UpdateMember()
-        {
-            var pairs = from kvp in dictionary orderby kvp.Value select kvp;
-            int currentValue = 1;
-            var keyValues = new List<string>();
-            foreach (var pair in pairs)
-            {
-                string keyValue;
-                if (pair.Value == currentValue)
-                    keyValue = pair.Key;
-                else
-                {
-                    currentValue = pair.Value;
-                    keyValue = string.Format("{0}={1}", pair.Key, pair.Value);
-                }
-                keyValues.Add(keyValue);
-                currentValue++;
-            }
-            string literalType = string.IsNullOrEmpty(Name) ? "enum" : Name;
-            literalType += " ";
-            literalType += string.Join(", ", keyValues.ToArray());
-            MemberInfoExtensions.SetMemberValue(memberInfo, owner, literalType);
-        }
-
-        internal EnumType(object owner, MemberInfo memberInfo)
-        {
-            this.owner = owner;
-            this.memberInfo = memberInfo;
-            string name;
-            Extract((string)memberInfo.GetMemberValue(owner), out name, out dictionary);
-            Name = name;
-        }
-
-        #region IDictionary implementation
-
-        public void Add(KeyValuePair<string, int> item)
-        {
-            dictionary.Add(item);
-            UpdateMember();
-        }
-
-        public void Clear()
-        {
-            dictionary.Clear();
-            UpdateMember();
-        }
-
-        public bool Contains(KeyValuePair<string, int> item)
-        {
-            return dictionary.Contains(item);
-        }
-
-        public void CopyTo(KeyValuePair<string, int>[] array, int arrayIndex)
-        {
-            dictionary.CopyTo(array, arrayIndex);
-        }
-
-        public bool Remove(KeyValuePair<string, int> item)
-        {
-            bool removed = dictionary.Remove(item);
-            UpdateMember();
-            return removed;
-        }
-
-        public int Count
-        {
-            get { return dictionary.Count; }
-        }
-
-        public bool IsReadOnly
-        {
-            get { return dictionary.IsReadOnly; }
-        }
-
-        public bool ContainsKey(string key)
-        {
-            return dictionary.ContainsKey(key);
-        }
-
-        public void Add(string key, int value)
-        {
-            dictionary.Add(key, value);
-            UpdateMember();
-        }
-
-        public bool Remove(string key)
-        {
-            bool removed = dictionary.Remove(key);
-            UpdateMember();
-            return removed;
-        }
-
-        public bool TryGetValue(string key, out int value)
-        {
-            return dictionary.TryGetValue(key, out value);
-        }
-
-        public int this[string key]
-        {
-            get { return dictionary[key]; }
-            set
-            {
-                dictionary[key] = value;
-                UpdateMember();
-            }
-        }
-
-        public ICollection<string> Keys
-        {
-            get { return dictionary.Keys; }
-        }
-
-        public ICollection<int> Values
-        {
-            get { return dictionary.Values; }
-        }
-
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            return ((IEnumerable<KeyValuePair<string, int>>)this).GetEnumerator();
-        }
-
-        public IEnumerator<KeyValuePair<string, int>> GetEnumerator()
-        {
-            return dictionary.GetEnumerator();
-        }
-
-        #endregion
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using DbLinq.Util;
+
+namespace DbLinq.Schema.Dbml.Adapter
+{
+#if !MONO_STRICT
+    public
+#endif
+    class EnumType : IDictionary<string, int>, INamedType
+    {
+        private string name;
+        public string Name
+        {
+            get { return name; }
+            set
+            {
+                name = value;
+                UpdateMember();
+            }
+        }
+
+        private readonly IDictionary<string, int> dictionary;
+        private readonly object owner;
+        private readonly MemberInfo memberInfo;
+
+        internal static bool IsEnum(string literalType)
+        {
+            string enumName;
+            IDictionary<string, int> values;
+            return Extract(literalType, out enumName, out values);
+        }
+
+        /// <summary>
+        /// Extracts enum name and value from a given string.
+        /// The string is in the following form:
+        /// enumName key1[=value1]{,keyN[=valueN]}
+        /// if enumName is 'enum', then the enum is anonymous
+        /// </summary>
+        /// <param name="literalType"></param>
+        /// <param name="enumName"></param>
+        /// <param name="values"></param>
+        /// <returns></returns>
+        private static bool Extract(string literalType, out string enumName, out IDictionary<string, int> values)
+        {
+            enumName = null;
+            values = new Dictionary<string, int>();
+
+            if (string.IsNullOrEmpty(literalType))
+                return false;
+
+            var nameValues = literalType.Split(new[] { ' ' }, 2);
+            if (nameValues.Length == 2)
+            {
+                // extract the name
+                string name = nameValues[0].Trim();
+                if (!name.IsIdentifier())
+                    return false;
+
+                // now extract the values
+                IDictionary<string, int> readValues = new Dictionary<string, int>();
+                int currentValue = 1;
+                var keyValues = nameValues[1].Split(',');
+                foreach (var keyValue in keyValues)
+                {
+                    // a value may indicate its numeric equivalent, or not (in this case, we work the same way as C# enums, with an implicit counter)
+                    var keyValueParts = keyValue.Split(new[] { '=' }, 2);
+                    var key = keyValueParts[0].Trim();
+
+                    if (!key.IsIdentifier())
+                        return false;
+
+                    if (keyValueParts.Length > 1)
+                    {
+                        if (!int.TryParse(keyValueParts[1], out currentValue))
+                            return false;
+                    }
+                    readValues[key] = currentValue++;
+                }
+                if (name == "enum")
+                    enumName = string.Empty;
+                else
+                    enumName = name;
+                values = readValues;
+                return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// Does the opposite: creates a literal string from values
+        /// </summary>
+        private void UpdateMember()
+        {
+            var pairs = from kvp in dictionary orderby kvp.Value select kvp;
+            int currentValue = 1;
+            var keyValues = new List<string>();
+            foreach (var pair in pairs)
+            {
+                string keyValue;
+                if (pair.Value == currentValue)
+                    keyValue = pair.Key;
+                else
+                {
+                    currentValue = pair.Value;
+                    keyValue = string.Format("{0}={1}", pair.Key, pair.Value);
+                }
+                keyValues.Add(keyValue);
+                currentValue++;
+            }
+            string literalType = string.IsNullOrEmpty(Name) ? "enum" : Name;
+            literalType += " ";
+            literalType += string.Join(", ", keyValues.ToArray());
+            MemberInfoExtensions.SetMemberValue(memberInfo, owner, literalType);
+        }
+
+        internal EnumType(object owner, MemberInfo memberInfo)
+        {
+            this.owner = owner;
+            this.memberInfo = memberInfo;
+            string name;
+            Extract((string)memberInfo.GetMemberValue(owner), out name, out dictionary);
+            Name = name;
+        }
+
+        #region IDictionary implementation
+
+        public void Add(KeyValuePair<string, int> item)
+        {
+            dictionary.Add(item);
+            UpdateMember();
+        }
+
+        public void Clear()
+        {
+            dictionary.Clear();
+            UpdateMember();
+        }
+
+        public bool Contains(KeyValuePair<string, int> item)
+        {
+            return dictionary.Contains(item);
+        }
+
+        public void CopyTo(KeyValuePair<string, int>[] array, int arrayIndex)
+        {
+            dictionary.CopyTo(array, arrayIndex);
+        }
+
+        public bool Remove(KeyValuePair<string, int> item)
+        {
+            bool removed = dictionary.Remove(item);
+            UpdateMember();
+            return removed;
+        }
+
+        public int Count
+        {
+            get { return dictionary.Count; }
+        }
+
+        public bool IsReadOnly
+        {
+            get { return dictionary.IsReadOnly; }
+        }
+
+        public bool ContainsKey(string key)
+        {
+            return dictionary.ContainsKey(key);
+        }
+
+        public void Add(string key, int value)
+        {
+            dictionary.Add(key, value);
+            UpdateMember();
+        }
+
+        public bool Remove(string key)
+        {
+            bool removed = dictionary.Remove(key);
+            UpdateMember();
+            return removed;
+        }
+
+        public bool TryGetValue(string key, out int value)
+        {
+            return dictionary.TryGetValue(key, out value);
+        }
+
+        public int this[string key]
+        {
+            get { return dictionary[key]; }
+            set
+            {
+                dictionary[key] = value;
+                UpdateMember();
+            }
+        }
+
+        public ICollection<string> Keys
+        {
+            get { return dictionary.Keys; }
+        }
+
+        public ICollection<int> Values
+        {
+            get { return dictionary.Values; }
+        }
+
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return ((IEnumerable<KeyValuePair<string, int>>)this).GetEnumerator();
+        }
+
+        public IEnumerator<KeyValuePair<string, int>> GetEnumerator()
+        {
+            return dictionary.GetEnumerator();
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/INamedType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/INamedType.cs
@@ -1,43 +1,43 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema.Dbml.Adapter
-{
-    /// <summary>
-    /// A INamedType is a literally named type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface INamedType
-    {
-        /// <summary>
-        /// Type name.
-        /// </summary>
-        /// <value>The name.</value>
-        string Name { get; set; }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema.Dbml.Adapter
+{
+    /// <summary>
+    /// A INamedType is a literally named type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface INamedType
+    {
+        /// <summary>
+        /// Type name.
+        /// </summary>
+        /// <value>The name.</value>
+        string Name { get; set; }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/ISimpleList.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/ISimpleList.cs
@@ -1,72 +1,72 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace DbLinq.Schema.Dbml.Adapter
-{
-    /// <summary>
-    /// sort of light IList<>
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-#if !MONO_STRICT
-    public
-#endif
-    interface ISimpleList<T> : IEnumerable<T>
-    {
-        /// <summary>
-        /// Items count
-        /// </summary>
-        int Count { get; }
-
-        /// <summary>
-        /// Append a parameter
-        /// </summary>
-        /// <param name="item"></param>
-        void Add(T item);
-
-        /// <summary>
-        /// Index accessor
-        /// </summary>
-        /// <param name="index"></param>
-        /// <returns></returns>
-        T this[int index] { get; set; }
-
-        /// <summary>
-        /// Sorts using a given sorter.
-        /// </summary>
-        /// <param name="sorter">The sorter.</param>
-        void Sort(IComparer<T> sorter);
-
-        /// <summary>
-        /// Finds all items matching a given predicate.
-        /// </summary>
-        /// <param name="match">The match.</param>
-        /// <returns></returns>
-        List<T> FindAll(Predicate<T> match);
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace DbLinq.Schema.Dbml.Adapter
+{
+    /// <summary>
+    /// sort of light IList<>
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+#if !MONO_STRICT
+    public
+#endif
+    interface ISimpleList<T> : IEnumerable<T>
+    {
+        /// <summary>
+        /// Items count
+        /// </summary>
+        int Count { get; }
+
+        /// <summary>
+        /// Append a parameter
+        /// </summary>
+        /// <param name="item"></param>
+        void Add(T item);
+
+        /// <summary>
+        /// Index accessor
+        /// </summary>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        T this[int index] { get; set; }
+
+        /// <summary>
+        /// Sorts using a given sorter.
+        /// </summary>
+        /// <param name="sorter">The sorter.</param>
+        void Sort(IComparer<T> sorter);
+
+        /// <summary>
+        /// Finds all items matching a given predicate.
+        /// </summary>
+        /// <param name="match">The match.</param>
+        /// <returns></returns>
+        List<T> FindAll(Predicate<T> match);
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/SpecifiedPropertyUpdater.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/Adapter/SpecifiedPropertyUpdater.cs
@@ -1,60 +1,60 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.ComponentModel;
-
-namespace DbLinq.Schema.Dbml.Adapter
-{
-    /// <summary>
-    /// The schema generates *Specified properties that we must set when the related property changes
-    /// So we use the notification to set the value
-    /// </summary>
-    internal static class SpecifiedPropertyUpdater
-    {
-        /// <summary>
-        /// Registers the specified notify.
-        /// </summary>
-        /// <param name="notify">The notify.</param>
-        public static void Register(INotifyPropertyChanged notify)
-        {
-            notify.PropertyChanged += Notify_PropertyChanged;
-        }
-
-        /// <summary>
-        /// Handles the PropertyChanged event of the Notify control.
-        /// </summary>
-        /// <param name="sender">The source of the event.</param>
-        /// <param name="e">The <see cref="System.ComponentModel.PropertyChangedEventArgs"/> instance containing the event data.</param>
-        private static void Notify_PropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            // if there is a property for us
-            var specifiedPropertyInfo = sender.GetType().GetProperty(e.PropertyName + "Specified");
-            // then we set it to true
-            if (specifiedPropertyInfo != null)
-                specifiedPropertyInfo.GetSetMethod().Invoke(sender, new object[] {true});
-        }
-    }
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.ComponentModel;
+
+namespace DbLinq.Schema.Dbml.Adapter
+{
+    /// <summary>
+    /// The schema generates *Specified properties that we must set when the related property changes
+    /// So we use the notification to set the value
+    /// </summary>
+    internal static class SpecifiedPropertyUpdater
+    {
+        /// <summary>
+        /// Registers the specified notify.
+        /// </summary>
+        /// <param name="notify">The notify.</param>
+        public static void Register(INotifyPropertyChanged notify)
+        {
+            notify.PropertyChanged += Notify_PropertyChanged;
+        }
+
+        /// <summary>
+        /// Handles the PropertyChanged event of the Notify control.
+        /// </summary>
+        /// <param name="sender">The source of the event.</param>
+        /// <param name="e">The <see cref="System.ComponentModel.PropertyChangedEventArgs"/> instance containing the event data.</param>
+        private static void Notify_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            // if there is a property for us
+            var specifiedPropertyInfo = sender.GetType().GetProperty(e.PropertyName + "Specified");
+            // then we set it to true
+            if (specifiedPropertyInfo != null)
+                specifiedPropertyInfo.GetSetMethod().Invoke(sender, new object[] {true});
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSchema.Adapter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSchema.Adapter.cs
@@ -1,340 +1,340 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Reflection;
-using System.Xml.Serialization;
-using DbLinq.Schema.Dbml.Adapter;
-
-/*
- * Here are additional methods and properties to DBML class.
- * Those properties are useful to dynamically change arrays
- */
-
-namespace DbLinq.Schema.Dbml
-{
-    /// <summary>
-    /// Adataper for Database
-    /// </summary>
-    partial class Database
-    {
-        /// <summary>
-        /// Wraps all tables
-        /// </summary>
-        [Browsable(false)]
-        [XmlIgnore]
-        public ISimpleList<Table> Tables;
-        /// <summary>
-        /// Wraps all stored procedures
-        /// </summary>
-        [Browsable(false)]
-        [XmlIgnore]
-        public ISimpleList<Function> Functions;
-
-        public Database()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-            Tables = new ArrayAdapter<Table>(this, "Table");
-            Functions = new ArrayAdapter<Function>(this, "Function");
-        }
-    }
-
-    /// <summary>
-    /// Adapter for Table
-    /// </summary>
-    partial class Table
-    {
-        public Table()
-        {
-            Type = new Type();
-            SpecifiedPropertyUpdater.Register(this);
-        }
-
-        public override string ToString()
-        {
-            return String.Format("{0} ({1}), {2}", Member, Name, Type);
-        }
-    }
-
-    /// <summary>
-    /// Adapter for Type
-    /// </summary>
-    partial class Type
-    {
-        /// <summary>
-        /// Wrapper for columns
-        /// </summary>
-        [Browsable(false)]
-        [XmlIgnore]
-        public readonly ISimpleList<Column> Columns;
-
-        /// <summary>
-        /// Wrapper for associations
-        /// </summary>
-        [Browsable(false)]
-        [XmlIgnore]
-        public readonly ISimpleList<Association> Associations;
-
-        public Type()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-            Columns = new ArrayAdapter<Column>(this, "Items");
-            Associations = new ArrayAdapter<Association>(this, "Items");
-        }
-
-        public override string ToString()
-        {
-            string summary = Columns.Count + " Columns";
-            if (Associations.Count > 0)
-                summary += ", " + Associations.Count + " Associations";
-            return summary;
-        }
-    }
-
-    /// <summary>
-    /// Adapter for function
-    /// </summary>
-    partial class Function
-    {
-        // TODO: remove this attribute
-        [Browsable(false)]
-        [XmlIgnore]
-        public bool BodyContainsSelectStatement;
-
-        [Browsable(false)]
-        [XmlIgnore]
-        public ISimpleList<Parameter> Parameters;
-        [Browsable(false)]
-        [XmlIgnore]
-        public Return Return
-        {
-            get
-            {
-                if (Items == null)
-                    return null;
-                foreach (object item in Items)
-                {
-                    var r = item as Return;
-                    if (r != null)
-                        return r;
-                }
-                return null;
-            }
-            set
-            {
-                if (Items == null)
-                {
-                    Items = new[] { value };
-                    return;
-                }
-                for (int index = 0; index < Items.Length; index++)
-                {
-                    if (Items[index] is Return)
-                    {
-                        Items[index] = value;
-                        return;
-                    }
-                }
-                List<object> items = new List<object>(Items);
-                items.Add(value);
-                Items = items.ToArray();
-            }
-        }
-
-        [Browsable(false)]
-        [XmlIgnore]
-        public object ElementType;
-
-        public Function()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-            Parameters = new ArrayAdapter<Parameter>(this, "Parameter");
-        }
-    }
-
-    /// <summary>
-    /// Adapter for Association
-    /// </summary>
-    partial class Association
-    {
-        /// <summary>
-        /// ThisKey, provided as an array of strings (each string being a key)
-        /// </summary>
-        [XmlIgnore]
-        public ISimpleList<string> TheseKeys;
-        /// <summary>
-        /// OtherKey, provided as an array of strings (each string being a key)
-        /// </summary>
-        [XmlIgnore]
-        public ISimpleList<string> OtherKeys;
-
-        public Association()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-            TheseKeys = new CsvArrayAdapter(this, "ThisKey");
-            OtherKeys = new CsvArrayAdapter(this, "OtherKey");
-        }
-
-        public override string ToString()
-        {
-            return Name;
-        }
-    }
-
-    /// <summary>
-    /// Adapter for Column
-    /// </summary>
-    partial class Column
-    {
-        private INamedType extendedType;
-        /// <summary>
-        /// Extended type, for handling enum types, for example.
-        /// </summary>
-        /// <value>The type of the extended.</value>
-        [Browsable(false)]
-        [XmlIgnore]
-        public INamedType ExtendedType
-        {
-            get
-            {
-                if (extendedType == null)
-                {
-                    if (EnumType.IsEnum(Type))
-                        extendedType = new EnumType(this, TypeMemberInfo);
-                }
-                return extendedType;
-            }
-        }
-
-        public EnumType SetExtendedTypeAsEnumType()
-        {
-            return new EnumType(this, TypeMemberInfo);
-        }
-
-        private MemberInfo TypeMemberInfo
-        {
-            get
-            {
-                return GetType().GetMember("Type")[0];
-            }
-        }
-
-        public Column()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-        }
-
-        public override string ToString()
-        {
-            return String.Format("{0} ({1}): {2} ({3})", Member, Name, Type, DbType);
-        }
-    }
-
-    partial class Connection
-    {
-        public Connection()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-        }
-    }
-
-    /// <summary>
-    /// Adapter for Parameter
-    /// </summary>
-    partial class Parameter
-    {
-        public Parameter()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-        }
-        /// <summary>
-        /// Gets a value indicating whether [direction in].
-        /// </summary>
-        /// <value><c>true</c> if [direction in]; otherwise, <c>false</c>.</value>
-        [Browsable(false)]
-        [XmlIgnore]
-        public bool DirectionIn
-        {
-            get { return Direction == ParameterDirection.In || Direction == ParameterDirection.InOut; }
-        }
-
-        /// <summary>
-        /// Gets a value indicating whether [direction out].
-        /// </summary>
-        /// <value><c>true</c> if [direction out]; otherwise, <c>false</c>.</value>
-        [Browsable(false)]
-        [XmlIgnore]
-        public bool DirectionOut
-        {
-            get { return Direction == ParameterDirection.Out || Direction == ParameterDirection.InOut; }
-        }
-    }
-
-    /// <summary>
-    /// Adapter for Return
-    /// </summary>
-    partial class Return
-    {
-        public Return()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-        }
-    }
-
-    /// <summary>
-    /// Adapter for TableFunction
-    /// </summary>
-    partial class TableFunction
-    {
-        public TableFunction()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-        }
-    }
-
-    /// <summary>
-    /// Adapter for TableFunctionParameter
-    /// </summary>
-    partial class TableFunctionParameter
-    {
-        public TableFunctionParameter()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-        }
-    }
-
-    /// <summary>
-    /// Adapter for TableFunctionReturn
-    /// </summary>
-    partial class TableFunctionReturn
-    {
-        public TableFunctionReturn()
-        {
-            SpecifiedPropertyUpdater.Register(this);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Reflection;
+using System.Xml.Serialization;
+using DbLinq.Schema.Dbml.Adapter;
+
+/*
+ * Here are additional methods and properties to DBML class.
+ * Those properties are useful to dynamically change arrays
+ */
+
+namespace DbLinq.Schema.Dbml
+{
+    /// <summary>
+    /// Adataper for Database
+    /// </summary>
+    partial class Database
+    {
+        /// <summary>
+        /// Wraps all tables
+        /// </summary>
+        [Browsable(false)]
+        [XmlIgnore]
+        public ISimpleList<Table> Tables;
+        /// <summary>
+        /// Wraps all stored procedures
+        /// </summary>
+        [Browsable(false)]
+        [XmlIgnore]
+        public ISimpleList<Function> Functions;
+
+        public Database()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+            Tables = new ArrayAdapter<Table>(this, "Table");
+            Functions = new ArrayAdapter<Function>(this, "Function");
+        }
+    }
+
+    /// <summary>
+    /// Adapter for Table
+    /// </summary>
+    partial class Table
+    {
+        public Table()
+        {
+            Type = new Type();
+            SpecifiedPropertyUpdater.Register(this);
+        }
+
+        public override string ToString()
+        {
+            return String.Format("{0} ({1}), {2}", Member, Name, Type);
+        }
+    }
+
+    /// <summary>
+    /// Adapter for Type
+    /// </summary>
+    partial class Type
+    {
+        /// <summary>
+        /// Wrapper for columns
+        /// </summary>
+        [Browsable(false)]
+        [XmlIgnore]
+        public readonly ISimpleList<Column> Columns;
+
+        /// <summary>
+        /// Wrapper for associations
+        /// </summary>
+        [Browsable(false)]
+        [XmlIgnore]
+        public readonly ISimpleList<Association> Associations;
+
+        public Type()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+            Columns = new ArrayAdapter<Column>(this, "Items");
+            Associations = new ArrayAdapter<Association>(this, "Items");
+        }
+
+        public override string ToString()
+        {
+            string summary = Columns.Count + " Columns";
+            if (Associations.Count > 0)
+                summary += ", " + Associations.Count + " Associations";
+            return summary;
+        }
+    }
+
+    /// <summary>
+    /// Adapter for function
+    /// </summary>
+    partial class Function
+    {
+        // TODO: remove this attribute
+        [Browsable(false)]
+        [XmlIgnore]
+        public bool BodyContainsSelectStatement;
+
+        [Browsable(false)]
+        [XmlIgnore]
+        public ISimpleList<Parameter> Parameters;
+        [Browsable(false)]
+        [XmlIgnore]
+        public Return Return
+        {
+            get
+            {
+                if (Items == null)
+                    return null;
+                foreach (object item in Items)
+                {
+                    var r = item as Return;
+                    if (r != null)
+                        return r;
+                }
+                return null;
+            }
+            set
+            {
+                if (Items == null)
+                {
+                    Items = new[] { value };
+                    return;
+                }
+                for (int index = 0; index < Items.Length; index++)
+                {
+                    if (Items[index] is Return)
+                    {
+                        Items[index] = value;
+                        return;
+                    }
+                }
+                List<object> items = new List<object>(Items);
+                items.Add(value);
+                Items = items.ToArray();
+            }
+        }
+
+        [Browsable(false)]
+        [XmlIgnore]
+        public object ElementType;
+
+        public Function()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+            Parameters = new ArrayAdapter<Parameter>(this, "Parameter");
+        }
+    }
+
+    /// <summary>
+    /// Adapter for Association
+    /// </summary>
+    partial class Association
+    {
+        /// <summary>
+        /// ThisKey, provided as an array of strings (each string being a key)
+        /// </summary>
+        [XmlIgnore]
+        public ISimpleList<string> TheseKeys;
+        /// <summary>
+        /// OtherKey, provided as an array of strings (each string being a key)
+        /// </summary>
+        [XmlIgnore]
+        public ISimpleList<string> OtherKeys;
+
+        public Association()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+            TheseKeys = new CsvArrayAdapter(this, "ThisKey");
+            OtherKeys = new CsvArrayAdapter(this, "OtherKey");
+        }
+
+        public override string ToString()
+        {
+            return Name;
+        }
+    }
+
+    /// <summary>
+    /// Adapter for Column
+    /// </summary>
+    partial class Column
+    {
+        private INamedType extendedType;
+        /// <summary>
+        /// Extended type, for handling enum types, for example.
+        /// </summary>
+        /// <value>The type of the extended.</value>
+        [Browsable(false)]
+        [XmlIgnore]
+        public INamedType ExtendedType
+        {
+            get
+            {
+                if (extendedType == null)
+                {
+                    if (EnumType.IsEnum(Type))
+                        extendedType = new EnumType(this, TypeMemberInfo);
+                }
+                return extendedType;
+            }
+        }
+
+        public EnumType SetExtendedTypeAsEnumType()
+        {
+            return new EnumType(this, TypeMemberInfo);
+        }
+
+        private MemberInfo TypeMemberInfo
+        {
+            get
+            {
+                return GetType().GetMember("Type")[0];
+            }
+        }
+
+        public Column()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+        }
+
+        public override string ToString()
+        {
+            return String.Format("{0} ({1}): {2} ({3})", Member, Name, Type, DbType);
+        }
+    }
+
+    partial class Connection
+    {
+        public Connection()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+        }
+    }
+
+    /// <summary>
+    /// Adapter for Parameter
+    /// </summary>
+    partial class Parameter
+    {
+        public Parameter()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+        }
+        /// <summary>
+        /// Gets a value indicating whether [direction in].
+        /// </summary>
+        /// <value><c>true</c> if [direction in]; otherwise, <c>false</c>.</value>
+        [Browsable(false)]
+        [XmlIgnore]
+        public bool DirectionIn
+        {
+            get { return Direction == ParameterDirection.In || Direction == ParameterDirection.InOut; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether [direction out].
+        /// </summary>
+        /// <value><c>true</c> if [direction out]; otherwise, <c>false</c>.</value>
+        [Browsable(false)]
+        [XmlIgnore]
+        public bool DirectionOut
+        {
+            get { return Direction == ParameterDirection.Out || Direction == ParameterDirection.InOut; }
+        }
+    }
+
+    /// <summary>
+    /// Adapter for Return
+    /// </summary>
+    partial class Return
+    {
+        public Return()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+        }
+    }
+
+    /// <summary>
+    /// Adapter for TableFunction
+    /// </summary>
+    partial class TableFunction
+    {
+        public TableFunction()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+        }
+    }
+
+    /// <summary>
+    /// Adapter for TableFunctionParameter
+    /// </summary>
+    partial class TableFunctionParameter
+    {
+        public TableFunctionParameter()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+        }
+    }
+
+    /// <summary>
+    /// Adapter for TableFunctionReturn
+    /// </summary>
+    partial class TableFunctionReturn
+    {
+        public TableFunctionReturn()
+        {
+            SpecifiedPropertyUpdater.Register(this);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSchema.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSchema.cs
@@ -1,2592 +1,2592 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Schema.Dbml
-{
-    using System.Xml.Serialization;
-
-    /// <summary>
-    /// CSharp representation of DBML file format.
-    /// Generated by XSD.exe from DblmlSchema.xsd
-    /// </summary>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007", IsNullable = false)]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Database : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private Connection connectionField;
-
-        private Table[] tableField;
-
-        private Function[] functionField;
-
-        private string nameField;
-
-        private string entityNamespaceField;
-
-        private string contextNamespaceField;
-
-        private string classField;
-
-        private AccessModifier accessModifierField;
-
-        private bool accessModifierFieldSpecified;
-
-        private ClassModifier modifierField;
-
-        private bool modifierFieldSpecified;
-
-        private string baseTypeField;
-
-        private string providerField;
-
-        private bool externalMappingField;
-
-        private bool externalMappingFieldSpecified;
-
-        private SerializationMode serializationField;
-
-        private bool serializationFieldSpecified;
-
-        private string entityBaseField;
-
-        /// <remarks/>
-        public Connection Connection
-        {
-            get
-            {
-                return this.connectionField;
-            }
-            set
-            {
-                this.connectionField = value;
-                this.RaisePropertyChanged("Connection");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlElementAttribute("Table")]
-        public Table[] Table
-        {
-            get
-            {
-                return this.tableField;
-            }
-            set
-            {
-                this.tableField = value;
-                this.RaisePropertyChanged("Table");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlElementAttribute("Function")]
-        public Function[] Function
-        {
-            get
-            {
-                return this.functionField;
-            }
-            set
-            {
-                this.functionField = value;
-                this.RaisePropertyChanged("Function");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.nameField;
-            }
-            set
-            {
-                this.nameField = value;
-                this.RaisePropertyChanged("Name");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string EntityNamespace
-        {
-            get
-            {
-                return this.entityNamespaceField;
-            }
-            set
-            {
-                this.entityNamespaceField = value;
-                this.RaisePropertyChanged("EntityNamespace");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string ContextNamespace
-        {
-            get
-            {
-                return this.contextNamespaceField;
-            }
-            set
-            {
-                this.contextNamespaceField = value;
-                this.RaisePropertyChanged("ContextNamespace");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Class
-        {
-            get
-            {
-                return this.classField;
-            }
-            set
-            {
-                this.classField = value;
-                this.RaisePropertyChanged("Class");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AccessModifier AccessModifier
-        {
-            get
-            {
-                return this.accessModifierField;
-            }
-            set
-            {
-                this.accessModifierField = value;
-                this.RaisePropertyChanged("AccessModifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AccessModifierSpecified
-        {
-            get
-            {
-                return this.accessModifierFieldSpecified;
-            }
-            set
-            {
-                this.accessModifierFieldSpecified = value;
-                this.RaisePropertyChanged("AccessModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public ClassModifier Modifier
-        {
-            get
-            {
-                return this.modifierField;
-            }
-            set
-            {
-                this.modifierField = value;
-                this.RaisePropertyChanged("Modifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ModifierSpecified
-        {
-            get
-            {
-                return this.modifierFieldSpecified;
-            }
-            set
-            {
-                this.modifierFieldSpecified = value;
-                this.RaisePropertyChanged("ModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string BaseType
-        {
-            get
-            {
-                return this.baseTypeField;
-            }
-            set
-            {
-                this.baseTypeField = value;
-                this.RaisePropertyChanged("BaseType");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Provider
-        {
-            get
-            {
-                return this.providerField;
-            }
-            set
-            {
-                this.providerField = value;
-                this.RaisePropertyChanged("Provider");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool ExternalMapping
-        {
-            get
-            {
-                return this.externalMappingField;
-            }
-            set
-            {
-                this.externalMappingField = value;
-                this.RaisePropertyChanged("ExternalMapping");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ExternalMappingSpecified
-        {
-            get
-            {
-                return this.externalMappingFieldSpecified;
-            }
-            set
-            {
-                this.externalMappingFieldSpecified = value;
-                this.RaisePropertyChanged("ExternalMappingSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public SerializationMode Serialization
-        {
-            get
-            {
-                return this.serializationField;
-            }
-            set
-            {
-                this.serializationField = value;
-                this.RaisePropertyChanged("Serialization");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool SerializationSpecified
-        {
-            get
-            {
-                return this.serializationFieldSpecified;
-            }
-            set
-            {
-                this.serializationFieldSpecified = value;
-                this.RaisePropertyChanged("SerializationSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string EntityBase
-        {
-            get
-            {
-                return this.entityBaseField;
-            }
-            set
-            {
-                this.entityBaseField = value;
-                this.RaisePropertyChanged("EntityBase");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Connection : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private string providerField;
-
-        private ConnectionMode modeField;
-
-        private bool modeFieldSpecified;
-
-        private string connectionStringField;
-
-        private string settingsObjectNameField;
-
-        private string settingsPropertyNameField;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Provider
-        {
-            get
-            {
-                return this.providerField;
-            }
-            set
-            {
-                this.providerField = value;
-                this.RaisePropertyChanged("Provider");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public ConnectionMode Mode
-        {
-            get
-            {
-                return this.modeField;
-            }
-            set
-            {
-                this.modeField = value;
-                this.RaisePropertyChanged("Mode");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ModeSpecified
-        {
-            get
-            {
-                return this.modeFieldSpecified;
-            }
-            set
-            {
-                this.modeFieldSpecified = value;
-                this.RaisePropertyChanged("ModeSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string ConnectionString
-        {
-            get
-            {
-                return this.connectionStringField;
-            }
-            set
-            {
-                this.connectionStringField = value;
-                this.RaisePropertyChanged("ConnectionString");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string SettingsObjectName
-        {
-            get
-            {
-                return this.settingsObjectNameField;
-            }
-            set
-            {
-                this.settingsObjectNameField = value;
-                this.RaisePropertyChanged("SettingsObjectName");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string SettingsPropertyName
-        {
-            get
-            {
-                return this.settingsPropertyNameField;
-            }
-            set
-            {
-                this.settingsPropertyNameField = value;
-                this.RaisePropertyChanged("SettingsPropertyName");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum ConnectionMode
-    {
-
-        /// <remarks/>
-        ConnectionString,
-
-        /// <remarks/>
-        AppSettings,
-
-        /// <remarks/>
-        WebSettings,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Return : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private string typeField;
-
-        private string dbTypeField;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Type
-        {
-            get
-            {
-                return this.typeField;
-            }
-            set
-            {
-                this.typeField = value;
-                this.RaisePropertyChanged("Type");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string DbType
-        {
-            get
-            {
-                return this.dbTypeField;
-            }
-            set
-            {
-                this.dbTypeField = value;
-                this.RaisePropertyChanged("DbType");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Parameter : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private string nameField;
-
-        private string parameter1Field;
-
-        private string typeField;
-
-        private string dbTypeField;
-
-        private ParameterDirection directionField;
-
-        private bool directionFieldSpecified;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.nameField;
-            }
-            set
-            {
-                this.nameField = value;
-                this.RaisePropertyChanged("Name");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute("Parameter")]
-        public string Parameter1
-        {
-            get
-            {
-                return this.parameter1Field;
-            }
-            set
-            {
-                this.parameter1Field = value;
-                this.RaisePropertyChanged("Parameter1");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Type
-        {
-            get
-            {
-                return this.typeField;
-            }
-            set
-            {
-                this.typeField = value;
-                this.RaisePropertyChanged("Type");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string DbType
-        {
-            get
-            {
-                return this.dbTypeField;
-            }
-            set
-            {
-                this.dbTypeField = value;
-                this.RaisePropertyChanged("DbType");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public ParameterDirection Direction
-        {
-            get
-            {
-                return this.directionField;
-            }
-            set
-            {
-                this.directionField = value;
-                this.RaisePropertyChanged("Direction");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool DirectionSpecified
-        {
-            get
-            {
-                return this.directionFieldSpecified;
-            }
-            set
-            {
-                this.directionFieldSpecified = value;
-                this.RaisePropertyChanged("DirectionSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum ParameterDirection
-    {
-
-        /// <remarks/>
-        In,
-
-        /// <remarks/>
-        Out,
-
-        /// <remarks/>
-        InOut,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Function : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private Parameter[] parameterField;
-
-        private object[] itemsField;
-
-        private string nameField;
-
-        private string idField;
-
-        private string methodField;
-
-        private AccessModifier accessModifierField;
-
-        private bool accessModifierFieldSpecified;
-
-        private MemberModifier modifierField;
-
-        private bool modifierFieldSpecified;
-
-        private bool hasMultipleResultsField;
-
-        private bool hasMultipleResultsFieldSpecified;
-
-        private bool isComposableField;
-
-        private bool isComposableFieldSpecified;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlElementAttribute("Parameter")]
-        public Parameter[] Parameter
-        {
-            get
-            {
-                return this.parameterField;
-            }
-            set
-            {
-                this.parameterField = value;
-                this.RaisePropertyChanged("Parameter");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlElementAttribute("ElementType", typeof(Type))]
-        [System.Xml.Serialization.XmlElementAttribute("Return", typeof(Return))]
-        public object[] Items
-        {
-            get
-            {
-                return this.itemsField;
-            }
-            set
-            {
-                this.itemsField = value;
-                this.RaisePropertyChanged("Items");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.nameField;
-            }
-            set
-            {
-                this.nameField = value;
-                this.RaisePropertyChanged("Name");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "ID")]
-        public string Id
-        {
-            get
-            {
-                return this.idField;
-            }
-            set
-            {
-                this.idField = value;
-                this.RaisePropertyChanged("Id");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Method
-        {
-            get
-            {
-                return this.methodField;
-            }
-            set
-            {
-                this.methodField = value;
-                this.RaisePropertyChanged("Method");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AccessModifier AccessModifier
-        {
-            get
-            {
-                return this.accessModifierField;
-            }
-            set
-            {
-                this.accessModifierField = value;
-                this.RaisePropertyChanged("AccessModifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AccessModifierSpecified
-        {
-            get
-            {
-                return this.accessModifierFieldSpecified;
-            }
-            set
-            {
-                this.accessModifierFieldSpecified = value;
-                this.RaisePropertyChanged("AccessModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public MemberModifier Modifier
-        {
-            get
-            {
-                return this.modifierField;
-            }
-            set
-            {
-                this.modifierField = value;
-                this.RaisePropertyChanged("Modifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ModifierSpecified
-        {
-            get
-            {
-                return this.modifierFieldSpecified;
-            }
-            set
-            {
-                this.modifierFieldSpecified = value;
-                this.RaisePropertyChanged("ModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool HasMultipleResults
-        {
-            get
-            {
-                return this.hasMultipleResultsField;
-            }
-            set
-            {
-                this.hasMultipleResultsField = value;
-                this.RaisePropertyChanged("HasMultipleResults");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool HasMultipleResultsSpecified
-        {
-            get
-            {
-                return this.hasMultipleResultsFieldSpecified;
-            }
-            set
-            {
-                this.hasMultipleResultsFieldSpecified = value;
-                this.RaisePropertyChanged("HasMultipleResultsSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsComposable
-        {
-            get
-            {
-                return this.isComposableField;
-            }
-            set
-            {
-                this.isComposableField = value;
-                this.RaisePropertyChanged("IsComposable");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsComposableSpecified
-        {
-            get
-            {
-                return this.isComposableFieldSpecified;
-            }
-            set
-            {
-                this.isComposableFieldSpecified = value;
-                this.RaisePropertyChanged("IsComposableSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Type : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private object[] itemsField;
-
-        private Type[] type1Field;
-
-        private string idRefField;
-
-        private string idField;
-
-        private string nameField;
-
-        private string inheritanceCodeField;
-
-        private bool isInheritanceDefaultField;
-
-        private bool isInheritanceDefaultFieldSpecified;
-
-        private AccessModifier accessModifierField;
-
-        private bool accessModifierFieldSpecified;
-
-        private ClassModifier modifierField;
-
-        private bool modifierFieldSpecified;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlElementAttribute("Association", typeof(Association))]
-        [System.Xml.Serialization.XmlElementAttribute("Column", typeof(Column))]
-        public object[] Items
-        {
-            get
-            {
-                return this.itemsField;
-            }
-            set
-            {
-                this.itemsField = value;
-                this.RaisePropertyChanged("Items");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlElementAttribute("Type")]
-        public Type[] Type1
-        {
-            get
-            {
-                return this.type1Field;
-            }
-            set
-            {
-                this.type1Field = value;
-                this.RaisePropertyChanged("Type1");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "IDREF")]
-        public string IdRef
-        {
-            get
-            {
-                return this.idRefField;
-            }
-            set
-            {
-                this.idRefField = value;
-                this.RaisePropertyChanged("IdRef");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "ID")]
-        public string Id
-        {
-            get
-            {
-                return this.idField;
-            }
-            set
-            {
-                this.idField = value;
-                this.RaisePropertyChanged("Id");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.nameField;
-            }
-            set
-            {
-                this.nameField = value;
-                this.RaisePropertyChanged("Name");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string InheritanceCode
-        {
-            get
-            {
-                return this.inheritanceCodeField;
-            }
-            set
-            {
-                this.inheritanceCodeField = value;
-                this.RaisePropertyChanged("InheritanceCode");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsInheritanceDefault
-        {
-            get
-            {
-                return this.isInheritanceDefaultField;
-            }
-            set
-            {
-                this.isInheritanceDefaultField = value;
-                this.RaisePropertyChanged("IsInheritanceDefault");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsInheritanceDefaultSpecified
-        {
-            get
-            {
-                return this.isInheritanceDefaultFieldSpecified;
-            }
-            set
-            {
-                this.isInheritanceDefaultFieldSpecified = value;
-                this.RaisePropertyChanged("IsInheritanceDefaultSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AccessModifier AccessModifier
-        {
-            get
-            {
-                return this.accessModifierField;
-            }
-            set
-            {
-                this.accessModifierField = value;
-                this.RaisePropertyChanged("AccessModifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AccessModifierSpecified
-        {
-            get
-            {
-                return this.accessModifierFieldSpecified;
-            }
-            set
-            {
-                this.accessModifierFieldSpecified = value;
-                this.RaisePropertyChanged("AccessModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public ClassModifier Modifier
-        {
-            get
-            {
-                return this.modifierField;
-            }
-            set
-            {
-                this.modifierField = value;
-                this.RaisePropertyChanged("Modifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ModifierSpecified
-        {
-            get
-            {
-                return this.modifierFieldSpecified;
-            }
-            set
-            {
-                this.modifierFieldSpecified = value;
-                this.RaisePropertyChanged("ModifierSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Association : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private string nameField;
-
-        private string memberField;
-
-        private string storageField;
-
-        private AccessModifier accessModifierField;
-
-        private bool accessModifierFieldSpecified;
-
-        private MemberModifier modifierField;
-
-        private bool modifierFieldSpecified;
-
-        private string typeField;
-
-        private string thisKeyField;
-
-        private string otherKeyField;
-
-        private bool isForeignKeyField;
-
-        private bool isForeignKeyFieldSpecified;
-
-        private Cardinality cardinalityField;
-
-        private bool cardinalityFieldSpecified;
-
-        private string deleteRuleField;
-
-        private bool deleteOnNullField;
-
-        private bool deleteOnNullFieldSpecified;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.nameField;
-            }
-            set
-            {
-                this.nameField = value;
-                this.RaisePropertyChanged("Name");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Member
-        {
-            get
-            {
-                return this.memberField;
-            }
-            set
-            {
-                this.memberField = value;
-                this.RaisePropertyChanged("Member");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Storage
-        {
-            get
-            {
-                return this.storageField;
-            }
-            set
-            {
-                this.storageField = value;
-                this.RaisePropertyChanged("Storage");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AccessModifier AccessModifier
-        {
-            get
-            {
-                return this.accessModifierField;
-            }
-            set
-            {
-                this.accessModifierField = value;
-                this.RaisePropertyChanged("AccessModifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AccessModifierSpecified
-        {
-            get
-            {
-                return this.accessModifierFieldSpecified;
-            }
-            set
-            {
-                this.accessModifierFieldSpecified = value;
-                this.RaisePropertyChanged("AccessModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public MemberModifier Modifier
-        {
-            get
-            {
-                return this.modifierField;
-            }
-            set
-            {
-                this.modifierField = value;
-                this.RaisePropertyChanged("Modifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ModifierSpecified
-        {
-            get
-            {
-                return this.modifierFieldSpecified;
-            }
-            set
-            {
-                this.modifierFieldSpecified = value;
-                this.RaisePropertyChanged("ModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Type
-        {
-            get
-            {
-                return this.typeField;
-            }
-            set
-            {
-                this.typeField = value;
-                this.RaisePropertyChanged("Type");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string ThisKey
-        {
-            get
-            {
-                return this.thisKeyField;
-            }
-            set
-            {
-                this.thisKeyField = value;
-                this.RaisePropertyChanged("ThisKey");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string OtherKey
-        {
-            get
-            {
-                return this.otherKeyField;
-            }
-            set
-            {
-                this.otherKeyField = value;
-                this.RaisePropertyChanged("OtherKey");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsForeignKey
-        {
-            get
-            {
-                return this.isForeignKeyField;
-            }
-            set
-            {
-                this.isForeignKeyField = value;
-                this.RaisePropertyChanged("IsForeignKey");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsForeignKeySpecified
-        {
-            get
-            {
-                return this.isForeignKeyFieldSpecified;
-            }
-            set
-            {
-                this.isForeignKeyFieldSpecified = value;
-                this.RaisePropertyChanged("IsForeignKeySpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public Cardinality Cardinality
-        {
-            get
-            {
-                return this.cardinalityField;
-            }
-            set
-            {
-                this.cardinalityField = value;
-                this.RaisePropertyChanged("Cardinality");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool CardinalitySpecified
-        {
-            get
-            {
-                return this.cardinalityFieldSpecified;
-            }
-            set
-            {
-                this.cardinalityFieldSpecified = value;
-                this.RaisePropertyChanged("CardinalitySpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string DeleteRule
-        {
-            get
-            {
-                return this.deleteRuleField;
-            }
-            set
-            {
-                this.deleteRuleField = value;
-                this.RaisePropertyChanged("DeleteRule");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool DeleteOnNull
-        {
-            get
-            {
-                return this.deleteOnNullField;
-            }
-            set
-            {
-                this.deleteOnNullField = value;
-                this.RaisePropertyChanged("DeleteOnNull");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool DeleteOnNullSpecified
-        {
-            get
-            {
-                return this.deleteOnNullFieldSpecified;
-            }
-            set
-            {
-                this.deleteOnNullFieldSpecified = value;
-                this.RaisePropertyChanged("DeleteOnNullSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum AccessModifier
-    {
-
-        /// <remarks/>
-        Public,
-
-        /// <remarks/>
-        Internal,
-
-        /// <remarks/>
-        Protected,
-
-        /// <remarks/>
-        ProtectedInternal,
-
-        /// <remarks/>
-        Private,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum MemberModifier
-    {
-
-        /// <remarks/>
-        Virtual,
-
-        /// <remarks/>
-        Override,
-
-        /// <remarks/>
-        New,
-
-        /// <remarks/>
-        NewVirtual,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum Cardinality
-    {
-
-        /// <remarks/>
-        One,
-
-        /// <remarks/>
-        Many,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Column : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private string nameField;
-
-        private string memberField;
-
-        private string storageField;
-
-        private AccessModifier accessModifierField;
-
-        private bool accessModifierFieldSpecified;
-
-        private MemberModifier modifierField;
-
-        private bool modifierFieldSpecified;
-
-        private string typeField;
-
-        private string dbTypeField;
-
-        private bool isReadOnlyField;
-
-        private bool isReadOnlyFieldSpecified;
-
-        private bool isPrimaryKeyField;
-
-        private bool isPrimaryKeyFieldSpecified;
-
-        private bool isDbGeneratedField;
-
-        private bool isDbGeneratedFieldSpecified;
-
-        private bool canBeNullField;
-
-        private bool canBeNullFieldSpecified;
-
-        private UpdateCheck updateCheckField;
-
-        private bool updateCheckFieldSpecified;
-
-        private bool isDiscriminatorField;
-
-        private bool isDiscriminatorFieldSpecified;
-
-        private string expressionField;
-
-        private bool isVersionField;
-
-        private bool isVersionFieldSpecified;
-
-        private bool isDelayLoadedField;
-
-        private bool isDelayLoadedFieldSpecified;
-
-        private AutoSync autoSyncField;
-
-        private bool autoSyncFieldSpecified;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.nameField;
-            }
-            set
-            {
-                this.nameField = value;
-                this.RaisePropertyChanged("Name");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Member
-        {
-            get
-            {
-                return this.memberField;
-            }
-            set
-            {
-                this.memberField = value;
-                this.RaisePropertyChanged("Member");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Storage
-        {
-            get
-            {
-                return this.storageField;
-            }
-            set
-            {
-                this.storageField = value;
-                this.RaisePropertyChanged("Storage");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AccessModifier AccessModifier
-        {
-            get
-            {
-                return this.accessModifierField;
-            }
-            set
-            {
-                this.accessModifierField = value;
-                this.RaisePropertyChanged("AccessModifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AccessModifierSpecified
-        {
-            get
-            {
-                return this.accessModifierFieldSpecified;
-            }
-            set
-            {
-                this.accessModifierFieldSpecified = value;
-                this.RaisePropertyChanged("AccessModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public MemberModifier Modifier
-        {
-            get
-            {
-                return this.modifierField;
-            }
-            set
-            {
-                this.modifierField = value;
-                this.RaisePropertyChanged("Modifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ModifierSpecified
-        {
-            get
-            {
-                return this.modifierFieldSpecified;
-            }
-            set
-            {
-                this.modifierFieldSpecified = value;
-                this.RaisePropertyChanged("ModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Type
-        {
-            get
-            {
-                return this.typeField;
-            }
-            set
-            {
-                this.typeField = value;
-                this.RaisePropertyChanged("Type");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string DbType
-        {
-            get
-            {
-                return this.dbTypeField;
-            }
-            set
-            {
-                this.dbTypeField = value;
-                this.RaisePropertyChanged("DbType");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsReadOnly
-        {
-            get
-            {
-                return this.isReadOnlyField;
-            }
-            set
-            {
-                this.isReadOnlyField = value;
-                this.RaisePropertyChanged("IsReadOnly");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsReadOnlySpecified
-        {
-            get
-            {
-                return this.isReadOnlyFieldSpecified;
-            }
-            set
-            {
-                this.isReadOnlyFieldSpecified = value;
-                this.RaisePropertyChanged("IsReadOnlySpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsPrimaryKey
-        {
-            get
-            {
-                return this.isPrimaryKeyField;
-            }
-            set
-            {
-                this.isPrimaryKeyField = value;
-                this.RaisePropertyChanged("IsPrimaryKey");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsPrimaryKeySpecified
-        {
-            get
-            {
-                return this.isPrimaryKeyFieldSpecified;
-            }
-            set
-            {
-                this.isPrimaryKeyFieldSpecified = value;
-                this.RaisePropertyChanged("IsPrimaryKeySpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsDbGenerated
-        {
-            get
-            {
-                return this.isDbGeneratedField;
-            }
-            set
-            {
-                this.isDbGeneratedField = value;
-                this.RaisePropertyChanged("IsDbGenerated");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsDbGeneratedSpecified
-        {
-            get
-            {
-                return this.isDbGeneratedFieldSpecified;
-            }
-            set
-            {
-                this.isDbGeneratedFieldSpecified = value;
-                this.RaisePropertyChanged("IsDbGeneratedSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool CanBeNull
-        {
-            get
-            {
-                return this.canBeNullField;
-            }
-            set
-            {
-                this.canBeNullField = value;
-                this.RaisePropertyChanged("CanBeNull");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool CanBeNullSpecified
-        {
-            get
-            {
-                return this.canBeNullFieldSpecified;
-            }
-            set
-            {
-                this.canBeNullFieldSpecified = value;
-                this.RaisePropertyChanged("CanBeNullSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public UpdateCheck UpdateCheck
-        {
-            get
-            {
-                return this.updateCheckField;
-            }
-            set
-            {
-                this.updateCheckField = value;
-                this.RaisePropertyChanged("UpdateCheck");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool UpdateCheckSpecified
-        {
-            get
-            {
-                return this.updateCheckFieldSpecified;
-            }
-            set
-            {
-                this.updateCheckFieldSpecified = value;
-                this.RaisePropertyChanged("UpdateCheckSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsDiscriminator
-        {
-            get
-            {
-                return this.isDiscriminatorField;
-            }
-            set
-            {
-                this.isDiscriminatorField = value;
-                this.RaisePropertyChanged("IsDiscriminator");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsDiscriminatorSpecified
-        {
-            get
-            {
-                return this.isDiscriminatorFieldSpecified;
-            }
-            set
-            {
-                this.isDiscriminatorFieldSpecified = value;
-                this.RaisePropertyChanged("IsDiscriminatorSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Expression
-        {
-            get
-            {
-                return this.expressionField;
-            }
-            set
-            {
-                this.expressionField = value;
-                this.RaisePropertyChanged("Expression");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsVersion
-        {
-            get
-            {
-                return this.isVersionField;
-            }
-            set
-            {
-                this.isVersionField = value;
-                this.RaisePropertyChanged("IsVersion");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsVersionSpecified
-        {
-            get
-            {
-                return this.isVersionFieldSpecified;
-            }
-            set
-            {
-                this.isVersionFieldSpecified = value;
-                this.RaisePropertyChanged("IsVersionSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public bool IsDelayLoaded
-        {
-            get
-            {
-                return this.isDelayLoadedField;
-            }
-            set
-            {
-                this.isDelayLoadedField = value;
-                this.RaisePropertyChanged("IsDelayLoaded");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool IsDelayLoadedSpecified
-        {
-            get
-            {
-                return this.isDelayLoadedFieldSpecified;
-            }
-            set
-            {
-                this.isDelayLoadedFieldSpecified = value;
-                this.RaisePropertyChanged("IsDelayLoadedSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AutoSync AutoSync
-        {
-            get
-            {
-                return this.autoSyncField;
-            }
-            set
-            {
-                this.autoSyncField = value;
-                this.RaisePropertyChanged("AutoSync");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AutoSyncSpecified
-        {
-            get
-            {
-                return this.autoSyncFieldSpecified;
-            }
-            set
-            {
-                this.autoSyncFieldSpecified = value;
-                this.RaisePropertyChanged("AutoSyncSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum UpdateCheck
-    {
-
-        /// <remarks/>
-        Always,
-
-        /// <remarks/>
-        Never,
-
-        /// <remarks/>
-        WhenChanged,
-    }
-
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum AutoSync
-    {
-        /// <remarks/>
-        Never,
-
-        /// <remarks/>
-        OnInsert,
-
-        /// <remarks/>
-        OnUpdate,
-
-        /// <remarks/>
-        Always,
-
-        /// <remarks/>
-        Default,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum ClassModifier
-    {
-
-        /// <remarks/>
-        Sealed,
-
-        /// <remarks/>
-        Abstract,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class TableFunctionReturn : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private string memberField;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Member
-        {
-            get
-            {
-                return this.memberField;
-            }
-            set
-            {
-                this.memberField = value;
-                this.RaisePropertyChanged("Member");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class TableFunctionParameter : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private string parameterField;
-
-        private string memberField;
-
-        private Version versionField;
-
-        private bool versionFieldSpecified;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Parameter
-        {
-            get
-            {
-                return this.parameterField;
-            }
-            set
-            {
-                this.parameterField = value;
-                this.RaisePropertyChanged("Parameter");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Member
-        {
-            get
-            {
-                return this.memberField;
-            }
-            set
-            {
-                this.memberField = value;
-                this.RaisePropertyChanged("Member");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public Version Version
-        {
-            get
-            {
-                return this.versionField;
-            }
-            set
-            {
-                this.versionField = value;
-                this.RaisePropertyChanged("Version");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool VersionSpecified
-        {
-            get
-            {
-                return this.versionFieldSpecified;
-            }
-            set
-            {
-                this.versionFieldSpecified = value;
-                this.RaisePropertyChanged("VersionSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum Version
-    {
-
-        /// <remarks/>
-        Current,
-
-        /// <remarks/>
-        Original,
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class TableFunction : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private TableFunctionParameter[] argumentField;
-
-        private TableFunctionReturn returnField;
-
-        private string functionIdField;
-
-        private AccessModifier accessModifierField;
-
-        private bool accessModifierFieldSpecified;
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlElementAttribute("Argument")]
-        public TableFunctionParameter[] Argument
-        {
-            get
-            {
-                return this.argumentField;
-            }
-            set
-            {
-                this.argumentField = value;
-                this.RaisePropertyChanged("Argument");
-            }
-        }
-
-        /// <remarks/>
-        public TableFunctionReturn Return
-        {
-            get
-            {
-                return this.returnField;
-            }
-            set
-            {
-                this.returnField = value;
-                this.RaisePropertyChanged("Return");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "IDREF")]
-        public string FunctionId
-        {
-            get
-            {
-                return this.functionIdField;
-            }
-            set
-            {
-                this.functionIdField = value;
-                this.RaisePropertyChanged("FunctionId");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AccessModifier AccessModifier
-        {
-            get
-            {
-                return this.accessModifierField;
-            }
-            set
-            {
-                this.accessModifierField = value;
-                this.RaisePropertyChanged("AccessModifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AccessModifierSpecified
-        {
-            get
-            {
-                return this.accessModifierFieldSpecified;
-            }
-            set
-            {
-                this.accessModifierFieldSpecified = value;
-                this.RaisePropertyChanged("AccessModifierSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.ComponentModel.DesignerCategoryAttribute("code")]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    partial class Table : object, System.ComponentModel.INotifyPropertyChanged
-    {
-
-        private Type typeField;
-
-        private TableFunction insertFunctionField;
-
-        private TableFunction updateFunctionField;
-
-        private TableFunction deleteFunctionField;
-
-        private string nameField;
-
-        private string memberField;
-
-        private AccessModifier accessModifierField;
-
-        private bool accessModifierFieldSpecified;
-
-        private MemberModifier modifierField;
-
-        private bool modifierFieldSpecified;
-
-        /// <remarks/>
-        public Type Type
-        {
-            get
-            {
-                return this.typeField;
-            }
-            set
-            {
-                this.typeField = value;
-                this.RaisePropertyChanged("Type");
-            }
-        }
-
-        /// <remarks/>
-        public TableFunction InsertFunction
-        {
-            get
-            {
-                return this.insertFunctionField;
-            }
-            set
-            {
-                this.insertFunctionField = value;
-                this.RaisePropertyChanged("InsertFunction");
-            }
-        }
-
-        /// <remarks/>
-        public TableFunction UpdateFunction
-        {
-            get
-            {
-                return this.updateFunctionField;
-            }
-            set
-            {
-                this.updateFunctionField = value;
-                this.RaisePropertyChanged("UpdateFunction");
-            }
-        }
-
-        /// <remarks/>
-        public TableFunction DeleteFunction
-        {
-            get
-            {
-                return this.deleteFunctionField;
-            }
-            set
-            {
-                this.deleteFunctionField = value;
-                this.RaisePropertyChanged("DeleteFunction");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Name
-        {
-            get
-            {
-                return this.nameField;
-            }
-            set
-            {
-                this.nameField = value;
-                this.RaisePropertyChanged("Name");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public string Member
-        {
-            get
-            {
-                return this.memberField;
-            }
-            set
-            {
-                this.memberField = value;
-                this.RaisePropertyChanged("Member");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public AccessModifier AccessModifier
-        {
-            get
-            {
-                return this.accessModifierField;
-            }
-            set
-            {
-                this.accessModifierField = value;
-                this.RaisePropertyChanged("AccessModifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool AccessModifierSpecified
-        {
-            get
-            {
-                return this.accessModifierFieldSpecified;
-            }
-            set
-            {
-                this.accessModifierFieldSpecified = value;
-                this.RaisePropertyChanged("AccessModifierSpecified");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlAttributeAttribute()]
-        public MemberModifier Modifier
-        {
-            get
-            {
-                return this.modifierField;
-            }
-            set
-            {
-                this.modifierField = value;
-                this.RaisePropertyChanged("Modifier");
-            }
-        }
-
-        /// <remarks/>
-        [System.Xml.Serialization.XmlIgnoreAttribute()]
-        public bool ModifierSpecified
-        {
-            get
-            {
-                return this.modifierFieldSpecified;
-            }
-            set
-            {
-                this.modifierFieldSpecified = value;
-                this.RaisePropertyChanged("ModifierSpecified");
-            }
-        }
-
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-
-    /// <remarks/>
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
-    [System.SerializableAttribute()]
-    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
-#if !MONO_STRICT
-    public
-#endif
-    enum SerializationMode
-    {
-
-        /// <remarks/>
-        None,
-
-        /// <remarks/>
-        Unidirectional,
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Schema.Dbml
+{
+    using System.Xml.Serialization;
+
+    /// <summary>
+    /// CSharp representation of DBML file format.
+    /// Generated by XSD.exe from DblmlSchema.xsd
+    /// </summary>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007", IsNullable = false)]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Database : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private Connection connectionField;
+
+        private Table[] tableField;
+
+        private Function[] functionField;
+
+        private string nameField;
+
+        private string entityNamespaceField;
+
+        private string contextNamespaceField;
+
+        private string classField;
+
+        private AccessModifier accessModifierField;
+
+        private bool accessModifierFieldSpecified;
+
+        private ClassModifier modifierField;
+
+        private bool modifierFieldSpecified;
+
+        private string baseTypeField;
+
+        private string providerField;
+
+        private bool externalMappingField;
+
+        private bool externalMappingFieldSpecified;
+
+        private SerializationMode serializationField;
+
+        private bool serializationFieldSpecified;
+
+        private string entityBaseField;
+
+        /// <remarks/>
+        public Connection Connection
+        {
+            get
+            {
+                return this.connectionField;
+            }
+            set
+            {
+                this.connectionField = value;
+                this.RaisePropertyChanged("Connection");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute("Table")]
+        public Table[] Table
+        {
+            get
+            {
+                return this.tableField;
+            }
+            set
+            {
+                this.tableField = value;
+                this.RaisePropertyChanged("Table");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute("Function")]
+        public Function[] Function
+        {
+            get
+            {
+                return this.functionField;
+            }
+            set
+            {
+                this.functionField = value;
+                this.RaisePropertyChanged("Function");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.nameField;
+            }
+            set
+            {
+                this.nameField = value;
+                this.RaisePropertyChanged("Name");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string EntityNamespace
+        {
+            get
+            {
+                return this.entityNamespaceField;
+            }
+            set
+            {
+                this.entityNamespaceField = value;
+                this.RaisePropertyChanged("EntityNamespace");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string ContextNamespace
+        {
+            get
+            {
+                return this.contextNamespaceField;
+            }
+            set
+            {
+                this.contextNamespaceField = value;
+                this.RaisePropertyChanged("ContextNamespace");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Class
+        {
+            get
+            {
+                return this.classField;
+            }
+            set
+            {
+                this.classField = value;
+                this.RaisePropertyChanged("Class");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AccessModifier AccessModifier
+        {
+            get
+            {
+                return this.accessModifierField;
+            }
+            set
+            {
+                this.accessModifierField = value;
+                this.RaisePropertyChanged("AccessModifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AccessModifierSpecified
+        {
+            get
+            {
+                return this.accessModifierFieldSpecified;
+            }
+            set
+            {
+                this.accessModifierFieldSpecified = value;
+                this.RaisePropertyChanged("AccessModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public ClassModifier Modifier
+        {
+            get
+            {
+                return this.modifierField;
+            }
+            set
+            {
+                this.modifierField = value;
+                this.RaisePropertyChanged("Modifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ModifierSpecified
+        {
+            get
+            {
+                return this.modifierFieldSpecified;
+            }
+            set
+            {
+                this.modifierFieldSpecified = value;
+                this.RaisePropertyChanged("ModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string BaseType
+        {
+            get
+            {
+                return this.baseTypeField;
+            }
+            set
+            {
+                this.baseTypeField = value;
+                this.RaisePropertyChanged("BaseType");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Provider
+        {
+            get
+            {
+                return this.providerField;
+            }
+            set
+            {
+                this.providerField = value;
+                this.RaisePropertyChanged("Provider");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool ExternalMapping
+        {
+            get
+            {
+                return this.externalMappingField;
+            }
+            set
+            {
+                this.externalMappingField = value;
+                this.RaisePropertyChanged("ExternalMapping");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ExternalMappingSpecified
+        {
+            get
+            {
+                return this.externalMappingFieldSpecified;
+            }
+            set
+            {
+                this.externalMappingFieldSpecified = value;
+                this.RaisePropertyChanged("ExternalMappingSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public SerializationMode Serialization
+        {
+            get
+            {
+                return this.serializationField;
+            }
+            set
+            {
+                this.serializationField = value;
+                this.RaisePropertyChanged("Serialization");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool SerializationSpecified
+        {
+            get
+            {
+                return this.serializationFieldSpecified;
+            }
+            set
+            {
+                this.serializationFieldSpecified = value;
+                this.RaisePropertyChanged("SerializationSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string EntityBase
+        {
+            get
+            {
+                return this.entityBaseField;
+            }
+            set
+            {
+                this.entityBaseField = value;
+                this.RaisePropertyChanged("EntityBase");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Connection : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private string providerField;
+
+        private ConnectionMode modeField;
+
+        private bool modeFieldSpecified;
+
+        private string connectionStringField;
+
+        private string settingsObjectNameField;
+
+        private string settingsPropertyNameField;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Provider
+        {
+            get
+            {
+                return this.providerField;
+            }
+            set
+            {
+                this.providerField = value;
+                this.RaisePropertyChanged("Provider");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public ConnectionMode Mode
+        {
+            get
+            {
+                return this.modeField;
+            }
+            set
+            {
+                this.modeField = value;
+                this.RaisePropertyChanged("Mode");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ModeSpecified
+        {
+            get
+            {
+                return this.modeFieldSpecified;
+            }
+            set
+            {
+                this.modeFieldSpecified = value;
+                this.RaisePropertyChanged("ModeSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string ConnectionString
+        {
+            get
+            {
+                return this.connectionStringField;
+            }
+            set
+            {
+                this.connectionStringField = value;
+                this.RaisePropertyChanged("ConnectionString");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string SettingsObjectName
+        {
+            get
+            {
+                return this.settingsObjectNameField;
+            }
+            set
+            {
+                this.settingsObjectNameField = value;
+                this.RaisePropertyChanged("SettingsObjectName");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string SettingsPropertyName
+        {
+            get
+            {
+                return this.settingsPropertyNameField;
+            }
+            set
+            {
+                this.settingsPropertyNameField = value;
+                this.RaisePropertyChanged("SettingsPropertyName");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum ConnectionMode
+    {
+
+        /// <remarks/>
+        ConnectionString,
+
+        /// <remarks/>
+        AppSettings,
+
+        /// <remarks/>
+        WebSettings,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Return : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private string typeField;
+
+        private string dbTypeField;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Type
+        {
+            get
+            {
+                return this.typeField;
+            }
+            set
+            {
+                this.typeField = value;
+                this.RaisePropertyChanged("Type");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string DbType
+        {
+            get
+            {
+                return this.dbTypeField;
+            }
+            set
+            {
+                this.dbTypeField = value;
+                this.RaisePropertyChanged("DbType");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Parameter : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private string nameField;
+
+        private string parameter1Field;
+
+        private string typeField;
+
+        private string dbTypeField;
+
+        private ParameterDirection directionField;
+
+        private bool directionFieldSpecified;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.nameField;
+            }
+            set
+            {
+                this.nameField = value;
+                this.RaisePropertyChanged("Name");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute("Parameter")]
+        public string Parameter1
+        {
+            get
+            {
+                return this.parameter1Field;
+            }
+            set
+            {
+                this.parameter1Field = value;
+                this.RaisePropertyChanged("Parameter1");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Type
+        {
+            get
+            {
+                return this.typeField;
+            }
+            set
+            {
+                this.typeField = value;
+                this.RaisePropertyChanged("Type");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string DbType
+        {
+            get
+            {
+                return this.dbTypeField;
+            }
+            set
+            {
+                this.dbTypeField = value;
+                this.RaisePropertyChanged("DbType");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public ParameterDirection Direction
+        {
+            get
+            {
+                return this.directionField;
+            }
+            set
+            {
+                this.directionField = value;
+                this.RaisePropertyChanged("Direction");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool DirectionSpecified
+        {
+            get
+            {
+                return this.directionFieldSpecified;
+            }
+            set
+            {
+                this.directionFieldSpecified = value;
+                this.RaisePropertyChanged("DirectionSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum ParameterDirection
+    {
+
+        /// <remarks/>
+        In,
+
+        /// <remarks/>
+        Out,
+
+        /// <remarks/>
+        InOut,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Function : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private Parameter[] parameterField;
+
+        private object[] itemsField;
+
+        private string nameField;
+
+        private string idField;
+
+        private string methodField;
+
+        private AccessModifier accessModifierField;
+
+        private bool accessModifierFieldSpecified;
+
+        private MemberModifier modifierField;
+
+        private bool modifierFieldSpecified;
+
+        private bool hasMultipleResultsField;
+
+        private bool hasMultipleResultsFieldSpecified;
+
+        private bool isComposableField;
+
+        private bool isComposableFieldSpecified;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute("Parameter")]
+        public Parameter[] Parameter
+        {
+            get
+            {
+                return this.parameterField;
+            }
+            set
+            {
+                this.parameterField = value;
+                this.RaisePropertyChanged("Parameter");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute("ElementType", typeof(Type))]
+        [System.Xml.Serialization.XmlElementAttribute("Return", typeof(Return))]
+        public object[] Items
+        {
+            get
+            {
+                return this.itemsField;
+            }
+            set
+            {
+                this.itemsField = value;
+                this.RaisePropertyChanged("Items");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.nameField;
+            }
+            set
+            {
+                this.nameField = value;
+                this.RaisePropertyChanged("Name");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "ID")]
+        public string Id
+        {
+            get
+            {
+                return this.idField;
+            }
+            set
+            {
+                this.idField = value;
+                this.RaisePropertyChanged("Id");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Method
+        {
+            get
+            {
+                return this.methodField;
+            }
+            set
+            {
+                this.methodField = value;
+                this.RaisePropertyChanged("Method");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AccessModifier AccessModifier
+        {
+            get
+            {
+                return this.accessModifierField;
+            }
+            set
+            {
+                this.accessModifierField = value;
+                this.RaisePropertyChanged("AccessModifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AccessModifierSpecified
+        {
+            get
+            {
+                return this.accessModifierFieldSpecified;
+            }
+            set
+            {
+                this.accessModifierFieldSpecified = value;
+                this.RaisePropertyChanged("AccessModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public MemberModifier Modifier
+        {
+            get
+            {
+                return this.modifierField;
+            }
+            set
+            {
+                this.modifierField = value;
+                this.RaisePropertyChanged("Modifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ModifierSpecified
+        {
+            get
+            {
+                return this.modifierFieldSpecified;
+            }
+            set
+            {
+                this.modifierFieldSpecified = value;
+                this.RaisePropertyChanged("ModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool HasMultipleResults
+        {
+            get
+            {
+                return this.hasMultipleResultsField;
+            }
+            set
+            {
+                this.hasMultipleResultsField = value;
+                this.RaisePropertyChanged("HasMultipleResults");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool HasMultipleResultsSpecified
+        {
+            get
+            {
+                return this.hasMultipleResultsFieldSpecified;
+            }
+            set
+            {
+                this.hasMultipleResultsFieldSpecified = value;
+                this.RaisePropertyChanged("HasMultipleResultsSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsComposable
+        {
+            get
+            {
+                return this.isComposableField;
+            }
+            set
+            {
+                this.isComposableField = value;
+                this.RaisePropertyChanged("IsComposable");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsComposableSpecified
+        {
+            get
+            {
+                return this.isComposableFieldSpecified;
+            }
+            set
+            {
+                this.isComposableFieldSpecified = value;
+                this.RaisePropertyChanged("IsComposableSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Type : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private object[] itemsField;
+
+        private Type[] type1Field;
+
+        private string idRefField;
+
+        private string idField;
+
+        private string nameField;
+
+        private string inheritanceCodeField;
+
+        private bool isInheritanceDefaultField;
+
+        private bool isInheritanceDefaultFieldSpecified;
+
+        private AccessModifier accessModifierField;
+
+        private bool accessModifierFieldSpecified;
+
+        private ClassModifier modifierField;
+
+        private bool modifierFieldSpecified;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute("Association", typeof(Association))]
+        [System.Xml.Serialization.XmlElementAttribute("Column", typeof(Column))]
+        public object[] Items
+        {
+            get
+            {
+                return this.itemsField;
+            }
+            set
+            {
+                this.itemsField = value;
+                this.RaisePropertyChanged("Items");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute("Type")]
+        public Type[] Type1
+        {
+            get
+            {
+                return this.type1Field;
+            }
+            set
+            {
+                this.type1Field = value;
+                this.RaisePropertyChanged("Type1");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "IDREF")]
+        public string IdRef
+        {
+            get
+            {
+                return this.idRefField;
+            }
+            set
+            {
+                this.idRefField = value;
+                this.RaisePropertyChanged("IdRef");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "ID")]
+        public string Id
+        {
+            get
+            {
+                return this.idField;
+            }
+            set
+            {
+                this.idField = value;
+                this.RaisePropertyChanged("Id");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.nameField;
+            }
+            set
+            {
+                this.nameField = value;
+                this.RaisePropertyChanged("Name");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string InheritanceCode
+        {
+            get
+            {
+                return this.inheritanceCodeField;
+            }
+            set
+            {
+                this.inheritanceCodeField = value;
+                this.RaisePropertyChanged("InheritanceCode");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsInheritanceDefault
+        {
+            get
+            {
+                return this.isInheritanceDefaultField;
+            }
+            set
+            {
+                this.isInheritanceDefaultField = value;
+                this.RaisePropertyChanged("IsInheritanceDefault");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsInheritanceDefaultSpecified
+        {
+            get
+            {
+                return this.isInheritanceDefaultFieldSpecified;
+            }
+            set
+            {
+                this.isInheritanceDefaultFieldSpecified = value;
+                this.RaisePropertyChanged("IsInheritanceDefaultSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AccessModifier AccessModifier
+        {
+            get
+            {
+                return this.accessModifierField;
+            }
+            set
+            {
+                this.accessModifierField = value;
+                this.RaisePropertyChanged("AccessModifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AccessModifierSpecified
+        {
+            get
+            {
+                return this.accessModifierFieldSpecified;
+            }
+            set
+            {
+                this.accessModifierFieldSpecified = value;
+                this.RaisePropertyChanged("AccessModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public ClassModifier Modifier
+        {
+            get
+            {
+                return this.modifierField;
+            }
+            set
+            {
+                this.modifierField = value;
+                this.RaisePropertyChanged("Modifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ModifierSpecified
+        {
+            get
+            {
+                return this.modifierFieldSpecified;
+            }
+            set
+            {
+                this.modifierFieldSpecified = value;
+                this.RaisePropertyChanged("ModifierSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Association : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private string nameField;
+
+        private string memberField;
+
+        private string storageField;
+
+        private AccessModifier accessModifierField;
+
+        private bool accessModifierFieldSpecified;
+
+        private MemberModifier modifierField;
+
+        private bool modifierFieldSpecified;
+
+        private string typeField;
+
+        private string thisKeyField;
+
+        private string otherKeyField;
+
+        private bool isForeignKeyField;
+
+        private bool isForeignKeyFieldSpecified;
+
+        private Cardinality cardinalityField;
+
+        private bool cardinalityFieldSpecified;
+
+        private string deleteRuleField;
+
+        private bool deleteOnNullField;
+
+        private bool deleteOnNullFieldSpecified;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.nameField;
+            }
+            set
+            {
+                this.nameField = value;
+                this.RaisePropertyChanged("Name");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Member
+        {
+            get
+            {
+                return this.memberField;
+            }
+            set
+            {
+                this.memberField = value;
+                this.RaisePropertyChanged("Member");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Storage
+        {
+            get
+            {
+                return this.storageField;
+            }
+            set
+            {
+                this.storageField = value;
+                this.RaisePropertyChanged("Storage");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AccessModifier AccessModifier
+        {
+            get
+            {
+                return this.accessModifierField;
+            }
+            set
+            {
+                this.accessModifierField = value;
+                this.RaisePropertyChanged("AccessModifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AccessModifierSpecified
+        {
+            get
+            {
+                return this.accessModifierFieldSpecified;
+            }
+            set
+            {
+                this.accessModifierFieldSpecified = value;
+                this.RaisePropertyChanged("AccessModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public MemberModifier Modifier
+        {
+            get
+            {
+                return this.modifierField;
+            }
+            set
+            {
+                this.modifierField = value;
+                this.RaisePropertyChanged("Modifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ModifierSpecified
+        {
+            get
+            {
+                return this.modifierFieldSpecified;
+            }
+            set
+            {
+                this.modifierFieldSpecified = value;
+                this.RaisePropertyChanged("ModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Type
+        {
+            get
+            {
+                return this.typeField;
+            }
+            set
+            {
+                this.typeField = value;
+                this.RaisePropertyChanged("Type");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string ThisKey
+        {
+            get
+            {
+                return this.thisKeyField;
+            }
+            set
+            {
+                this.thisKeyField = value;
+                this.RaisePropertyChanged("ThisKey");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string OtherKey
+        {
+            get
+            {
+                return this.otherKeyField;
+            }
+            set
+            {
+                this.otherKeyField = value;
+                this.RaisePropertyChanged("OtherKey");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsForeignKey
+        {
+            get
+            {
+                return this.isForeignKeyField;
+            }
+            set
+            {
+                this.isForeignKeyField = value;
+                this.RaisePropertyChanged("IsForeignKey");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsForeignKeySpecified
+        {
+            get
+            {
+                return this.isForeignKeyFieldSpecified;
+            }
+            set
+            {
+                this.isForeignKeyFieldSpecified = value;
+                this.RaisePropertyChanged("IsForeignKeySpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public Cardinality Cardinality
+        {
+            get
+            {
+                return this.cardinalityField;
+            }
+            set
+            {
+                this.cardinalityField = value;
+                this.RaisePropertyChanged("Cardinality");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool CardinalitySpecified
+        {
+            get
+            {
+                return this.cardinalityFieldSpecified;
+            }
+            set
+            {
+                this.cardinalityFieldSpecified = value;
+                this.RaisePropertyChanged("CardinalitySpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string DeleteRule
+        {
+            get
+            {
+                return this.deleteRuleField;
+            }
+            set
+            {
+                this.deleteRuleField = value;
+                this.RaisePropertyChanged("DeleteRule");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool DeleteOnNull
+        {
+            get
+            {
+                return this.deleteOnNullField;
+            }
+            set
+            {
+                this.deleteOnNullField = value;
+                this.RaisePropertyChanged("DeleteOnNull");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool DeleteOnNullSpecified
+        {
+            get
+            {
+                return this.deleteOnNullFieldSpecified;
+            }
+            set
+            {
+                this.deleteOnNullFieldSpecified = value;
+                this.RaisePropertyChanged("DeleteOnNullSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum AccessModifier
+    {
+
+        /// <remarks/>
+        Public,
+
+        /// <remarks/>
+        Internal,
+
+        /// <remarks/>
+        Protected,
+
+        /// <remarks/>
+        ProtectedInternal,
+
+        /// <remarks/>
+        Private,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum MemberModifier
+    {
+
+        /// <remarks/>
+        Virtual,
+
+        /// <remarks/>
+        Override,
+
+        /// <remarks/>
+        New,
+
+        /// <remarks/>
+        NewVirtual,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum Cardinality
+    {
+
+        /// <remarks/>
+        One,
+
+        /// <remarks/>
+        Many,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Column : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private string nameField;
+
+        private string memberField;
+
+        private string storageField;
+
+        private AccessModifier accessModifierField;
+
+        private bool accessModifierFieldSpecified;
+
+        private MemberModifier modifierField;
+
+        private bool modifierFieldSpecified;
+
+        private string typeField;
+
+        private string dbTypeField;
+
+        private bool isReadOnlyField;
+
+        private bool isReadOnlyFieldSpecified;
+
+        private bool isPrimaryKeyField;
+
+        private bool isPrimaryKeyFieldSpecified;
+
+        private bool isDbGeneratedField;
+
+        private bool isDbGeneratedFieldSpecified;
+
+        private bool canBeNullField;
+
+        private bool canBeNullFieldSpecified;
+
+        private UpdateCheck updateCheckField;
+
+        private bool updateCheckFieldSpecified;
+
+        private bool isDiscriminatorField;
+
+        private bool isDiscriminatorFieldSpecified;
+
+        private string expressionField;
+
+        private bool isVersionField;
+
+        private bool isVersionFieldSpecified;
+
+        private bool isDelayLoadedField;
+
+        private bool isDelayLoadedFieldSpecified;
+
+        private AutoSync autoSyncField;
+
+        private bool autoSyncFieldSpecified;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.nameField;
+            }
+            set
+            {
+                this.nameField = value;
+                this.RaisePropertyChanged("Name");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Member
+        {
+            get
+            {
+                return this.memberField;
+            }
+            set
+            {
+                this.memberField = value;
+                this.RaisePropertyChanged("Member");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Storage
+        {
+            get
+            {
+                return this.storageField;
+            }
+            set
+            {
+                this.storageField = value;
+                this.RaisePropertyChanged("Storage");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AccessModifier AccessModifier
+        {
+            get
+            {
+                return this.accessModifierField;
+            }
+            set
+            {
+                this.accessModifierField = value;
+                this.RaisePropertyChanged("AccessModifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AccessModifierSpecified
+        {
+            get
+            {
+                return this.accessModifierFieldSpecified;
+            }
+            set
+            {
+                this.accessModifierFieldSpecified = value;
+                this.RaisePropertyChanged("AccessModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public MemberModifier Modifier
+        {
+            get
+            {
+                return this.modifierField;
+            }
+            set
+            {
+                this.modifierField = value;
+                this.RaisePropertyChanged("Modifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ModifierSpecified
+        {
+            get
+            {
+                return this.modifierFieldSpecified;
+            }
+            set
+            {
+                this.modifierFieldSpecified = value;
+                this.RaisePropertyChanged("ModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Type
+        {
+            get
+            {
+                return this.typeField;
+            }
+            set
+            {
+                this.typeField = value;
+                this.RaisePropertyChanged("Type");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string DbType
+        {
+            get
+            {
+                return this.dbTypeField;
+            }
+            set
+            {
+                this.dbTypeField = value;
+                this.RaisePropertyChanged("DbType");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsReadOnly
+        {
+            get
+            {
+                return this.isReadOnlyField;
+            }
+            set
+            {
+                this.isReadOnlyField = value;
+                this.RaisePropertyChanged("IsReadOnly");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsReadOnlySpecified
+        {
+            get
+            {
+                return this.isReadOnlyFieldSpecified;
+            }
+            set
+            {
+                this.isReadOnlyFieldSpecified = value;
+                this.RaisePropertyChanged("IsReadOnlySpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsPrimaryKey
+        {
+            get
+            {
+                return this.isPrimaryKeyField;
+            }
+            set
+            {
+                this.isPrimaryKeyField = value;
+                this.RaisePropertyChanged("IsPrimaryKey");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsPrimaryKeySpecified
+        {
+            get
+            {
+                return this.isPrimaryKeyFieldSpecified;
+            }
+            set
+            {
+                this.isPrimaryKeyFieldSpecified = value;
+                this.RaisePropertyChanged("IsPrimaryKeySpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsDbGenerated
+        {
+            get
+            {
+                return this.isDbGeneratedField;
+            }
+            set
+            {
+                this.isDbGeneratedField = value;
+                this.RaisePropertyChanged("IsDbGenerated");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsDbGeneratedSpecified
+        {
+            get
+            {
+                return this.isDbGeneratedFieldSpecified;
+            }
+            set
+            {
+                this.isDbGeneratedFieldSpecified = value;
+                this.RaisePropertyChanged("IsDbGeneratedSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool CanBeNull
+        {
+            get
+            {
+                return this.canBeNullField;
+            }
+            set
+            {
+                this.canBeNullField = value;
+                this.RaisePropertyChanged("CanBeNull");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool CanBeNullSpecified
+        {
+            get
+            {
+                return this.canBeNullFieldSpecified;
+            }
+            set
+            {
+                this.canBeNullFieldSpecified = value;
+                this.RaisePropertyChanged("CanBeNullSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public UpdateCheck UpdateCheck
+        {
+            get
+            {
+                return this.updateCheckField;
+            }
+            set
+            {
+                this.updateCheckField = value;
+                this.RaisePropertyChanged("UpdateCheck");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool UpdateCheckSpecified
+        {
+            get
+            {
+                return this.updateCheckFieldSpecified;
+            }
+            set
+            {
+                this.updateCheckFieldSpecified = value;
+                this.RaisePropertyChanged("UpdateCheckSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsDiscriminator
+        {
+            get
+            {
+                return this.isDiscriminatorField;
+            }
+            set
+            {
+                this.isDiscriminatorField = value;
+                this.RaisePropertyChanged("IsDiscriminator");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsDiscriminatorSpecified
+        {
+            get
+            {
+                return this.isDiscriminatorFieldSpecified;
+            }
+            set
+            {
+                this.isDiscriminatorFieldSpecified = value;
+                this.RaisePropertyChanged("IsDiscriminatorSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Expression
+        {
+            get
+            {
+                return this.expressionField;
+            }
+            set
+            {
+                this.expressionField = value;
+                this.RaisePropertyChanged("Expression");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsVersion
+        {
+            get
+            {
+                return this.isVersionField;
+            }
+            set
+            {
+                this.isVersionField = value;
+                this.RaisePropertyChanged("IsVersion");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsVersionSpecified
+        {
+            get
+            {
+                return this.isVersionFieldSpecified;
+            }
+            set
+            {
+                this.isVersionFieldSpecified = value;
+                this.RaisePropertyChanged("IsVersionSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public bool IsDelayLoaded
+        {
+            get
+            {
+                return this.isDelayLoadedField;
+            }
+            set
+            {
+                this.isDelayLoadedField = value;
+                this.RaisePropertyChanged("IsDelayLoaded");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool IsDelayLoadedSpecified
+        {
+            get
+            {
+                return this.isDelayLoadedFieldSpecified;
+            }
+            set
+            {
+                this.isDelayLoadedFieldSpecified = value;
+                this.RaisePropertyChanged("IsDelayLoadedSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AutoSync AutoSync
+        {
+            get
+            {
+                return this.autoSyncField;
+            }
+            set
+            {
+                this.autoSyncField = value;
+                this.RaisePropertyChanged("AutoSync");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AutoSyncSpecified
+        {
+            get
+            {
+                return this.autoSyncFieldSpecified;
+            }
+            set
+            {
+                this.autoSyncFieldSpecified = value;
+                this.RaisePropertyChanged("AutoSyncSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum UpdateCheck
+    {
+
+        /// <remarks/>
+        Always,
+
+        /// <remarks/>
+        Never,
+
+        /// <remarks/>
+        WhenChanged,
+    }
+
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum AutoSync
+    {
+        /// <remarks/>
+        Never,
+
+        /// <remarks/>
+        OnInsert,
+
+        /// <remarks/>
+        OnUpdate,
+
+        /// <remarks/>
+        Always,
+
+        /// <remarks/>
+        Default,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum ClassModifier
+    {
+
+        /// <remarks/>
+        Sealed,
+
+        /// <remarks/>
+        Abstract,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class TableFunctionReturn : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private string memberField;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Member
+        {
+            get
+            {
+                return this.memberField;
+            }
+            set
+            {
+                this.memberField = value;
+                this.RaisePropertyChanged("Member");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class TableFunctionParameter : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private string parameterField;
+
+        private string memberField;
+
+        private Version versionField;
+
+        private bool versionFieldSpecified;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Parameter
+        {
+            get
+            {
+                return this.parameterField;
+            }
+            set
+            {
+                this.parameterField = value;
+                this.RaisePropertyChanged("Parameter");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Member
+        {
+            get
+            {
+                return this.memberField;
+            }
+            set
+            {
+                this.memberField = value;
+                this.RaisePropertyChanged("Member");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public Version Version
+        {
+            get
+            {
+                return this.versionField;
+            }
+            set
+            {
+                this.versionField = value;
+                this.RaisePropertyChanged("Version");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool VersionSpecified
+        {
+            get
+            {
+                return this.versionFieldSpecified;
+            }
+            set
+            {
+                this.versionFieldSpecified = value;
+                this.RaisePropertyChanged("VersionSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum Version
+    {
+
+        /// <remarks/>
+        Current,
+
+        /// <remarks/>
+        Original,
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class TableFunction : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private TableFunctionParameter[] argumentField;
+
+        private TableFunctionReturn returnField;
+
+        private string functionIdField;
+
+        private AccessModifier accessModifierField;
+
+        private bool accessModifierFieldSpecified;
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlElementAttribute("Argument")]
+        public TableFunctionParameter[] Argument
+        {
+            get
+            {
+                return this.argumentField;
+            }
+            set
+            {
+                this.argumentField = value;
+                this.RaisePropertyChanged("Argument");
+            }
+        }
+
+        /// <remarks/>
+        public TableFunctionReturn Return
+        {
+            get
+            {
+                return this.returnField;
+            }
+            set
+            {
+                this.returnField = value;
+                this.RaisePropertyChanged("Return");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "IDREF")]
+        public string FunctionId
+        {
+            get
+            {
+                return this.functionIdField;
+            }
+            set
+            {
+                this.functionIdField = value;
+                this.RaisePropertyChanged("FunctionId");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AccessModifier AccessModifier
+        {
+            get
+            {
+                return this.accessModifierField;
+            }
+            set
+            {
+                this.accessModifierField = value;
+                this.RaisePropertyChanged("AccessModifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AccessModifierSpecified
+        {
+            get
+            {
+                return this.accessModifierFieldSpecified;
+            }
+            set
+            {
+                this.accessModifierFieldSpecified = value;
+                this.RaisePropertyChanged("AccessModifierSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    partial class Table : object, System.ComponentModel.INotifyPropertyChanged
+    {
+
+        private Type typeField;
+
+        private TableFunction insertFunctionField;
+
+        private TableFunction updateFunctionField;
+
+        private TableFunction deleteFunctionField;
+
+        private string nameField;
+
+        private string memberField;
+
+        private AccessModifier accessModifierField;
+
+        private bool accessModifierFieldSpecified;
+
+        private MemberModifier modifierField;
+
+        private bool modifierFieldSpecified;
+
+        /// <remarks/>
+        public Type Type
+        {
+            get
+            {
+                return this.typeField;
+            }
+            set
+            {
+                this.typeField = value;
+                this.RaisePropertyChanged("Type");
+            }
+        }
+
+        /// <remarks/>
+        public TableFunction InsertFunction
+        {
+            get
+            {
+                return this.insertFunctionField;
+            }
+            set
+            {
+                this.insertFunctionField = value;
+                this.RaisePropertyChanged("InsertFunction");
+            }
+        }
+
+        /// <remarks/>
+        public TableFunction UpdateFunction
+        {
+            get
+            {
+                return this.updateFunctionField;
+            }
+            set
+            {
+                this.updateFunctionField = value;
+                this.RaisePropertyChanged("UpdateFunction");
+            }
+        }
+
+        /// <remarks/>
+        public TableFunction DeleteFunction
+        {
+            get
+            {
+                return this.deleteFunctionField;
+            }
+            set
+            {
+                this.deleteFunctionField = value;
+                this.RaisePropertyChanged("DeleteFunction");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.nameField;
+            }
+            set
+            {
+                this.nameField = value;
+                this.RaisePropertyChanged("Name");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public string Member
+        {
+            get
+            {
+                return this.memberField;
+            }
+            set
+            {
+                this.memberField = value;
+                this.RaisePropertyChanged("Member");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public AccessModifier AccessModifier
+        {
+            get
+            {
+                return this.accessModifierField;
+            }
+            set
+            {
+                this.accessModifierField = value;
+                this.RaisePropertyChanged("AccessModifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool AccessModifierSpecified
+        {
+            get
+            {
+                return this.accessModifierFieldSpecified;
+            }
+            set
+            {
+                this.accessModifierFieldSpecified = value;
+                this.RaisePropertyChanged("AccessModifierSpecified");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlAttributeAttribute()]
+        public MemberModifier Modifier
+        {
+            get
+            {
+                return this.modifierField;
+            }
+            set
+            {
+                this.modifierField = value;
+                this.RaisePropertyChanged("Modifier");
+            }
+        }
+
+        /// <remarks/>
+        [System.Xml.Serialization.XmlIgnoreAttribute()]
+        public bool ModifierSpecified
+        {
+            get
+            {
+                return this.modifierFieldSpecified;
+            }
+            set
+            {
+                this.modifierFieldSpecified = value;
+                this.RaisePropertyChanged("ModifierSpecified");
+            }
+        }
+
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+
+    /// <remarks/>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
+    [System.SerializableAttribute()]
+    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007")]
+#if !MONO_STRICT
+    public
+#endif
+    enum SerializationMode
+    {
+
+        /// <remarks/>
+        None,
+
+        /// <remarks/>
+        Unidirectional,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSerializer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Dbml/DbmlSerializer.cs
@@ -1,132 +1,132 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.IO;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-
-namespace DbLinq.Schema.Dbml
-{
-    /// <summary>
-    /// Serializes DBML
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    static class DbmlSerializer
-    {
-        private class ValidationException : XmlSchemaValidationException
-        {
-            public ValidationException(IList<string> errors)
-            {
-                Data["Errors"] = errors;
-            }
-        }
-
-        /// <summary>
-        /// Opens the XML stream, given an XSD validation.
-        /// </summary>
-        /// <param name="xmlStream">The XML stream.</param>
-        /// <param name="xsdStream">The XSD stream.</param>
-        /// <param name="validationErrors">The validation errors.</param>
-        /// <returns></returns>
-        private static XmlReader OpenXml(Stream xmlStream, Stream xsdStream, ICollection<string> validationErrors)
-        {
-            validationErrors.Clear();
-
-            var xmlReaderSettings = new XmlReaderSettings();
-            xmlReaderSettings.Schemas.Add(null, XmlReader.Create(xsdStream));
-            xmlReaderSettings.ValidationType = ValidationType.Schema;
-            xmlReaderSettings.ValidationEventHandler += ((sender, e) => validationErrors.Add(e.Message));
-            var xmlValidator = XmlReader.Create(xmlStream, xmlReaderSettings);
-            return xmlValidator;
-        }
-
-        /// <summary>
-        /// Opens the XSD file.
-        /// </summary>
-        /// <returns></returns>
-        private static Stream OpenXsd()
-        {
-            return Assembly.GetExecutingAssembly().GetManifestResourceStream(typeof(DbmlSerializer), "DbmlSchema.xsd");
-        }
-
-        /// <summary>
-        /// Checks if validation contains error.
-        /// </summary>
-        /// <param name="validationErrors">The validation errors.</param>
-        private static void CheckValidation(IList<string> validationErrors)
-        {
-            if (validationErrors.Count > 0)
-            {
-                throw new ValidationException(validationErrors);
-            }
-        }
-
-        /// <summary>
-        /// Reads the specified XML stream for a Database schema.
-        /// </summary>
-        /// <param name="xmlStream">The XML stream.</param>
-        /// <param name="validationErrors">The validation errors.</param>
-        /// <returns></returns>
-        public static Database Read(Stream xmlStream, IList<string> validationErrors)
-        {
-            using (Stream xsdStream = OpenXsd())
-            using (XmlReader xmlReader = OpenXml(xmlStream, xsdStream, validationErrors))
-            {
-                var xmlSerializer = new DatabaseSerializer();
-                var dbml = (Database)xmlSerializer.Deserialize(xmlReader);
-                return dbml;
-            }
-        }
-
-        /// <summary>
-        /// Reads the specified XML stream for a DBML schema.
-        /// </summary>
-        /// <param name="xmlStream">The XML stream.</param>
-        /// <returns></returns>
-        public static Database Read(Stream xmlStream)
-        {
-            var validationErrors = new List<string>();
-            var dbml = Read(xmlStream, validationErrors);
-            CheckValidation(validationErrors);
-            return dbml;
-        }
-
-        /// <summary>
-        /// Writes the specified XML stream.
-        /// </summary>
-        /// <param name="xmlStream">The XML stream.</param>
-        /// <param name="dbml">The DBML.</param>
-        public static void Write(Stream xmlStream, Database dbml)
-        {
-            var xmlSerializer = new DatabaseSerializer();
-            xmlSerializer.Serialize(xmlStream, dbml);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+
+namespace DbLinq.Schema.Dbml
+{
+    /// <summary>
+    /// Serializes DBML
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    static class DbmlSerializer
+    {
+        private class ValidationException : XmlSchemaValidationException
+        {
+            public ValidationException(IList<string> errors)
+            {
+                Data["Errors"] = errors;
+            }
+        }
+
+        /// <summary>
+        /// Opens the XML stream, given an XSD validation.
+        /// </summary>
+        /// <param name="xmlStream">The XML stream.</param>
+        /// <param name="xsdStream">The XSD stream.</param>
+        /// <param name="validationErrors">The validation errors.</param>
+        /// <returns></returns>
+        private static XmlReader OpenXml(Stream xmlStream, Stream xsdStream, ICollection<string> validationErrors)
+        {
+            validationErrors.Clear();
+
+            var xmlReaderSettings = new XmlReaderSettings();
+            xmlReaderSettings.Schemas.Add(null, XmlReader.Create(xsdStream));
+            xmlReaderSettings.ValidationType = ValidationType.Schema;
+            xmlReaderSettings.ValidationEventHandler += ((sender, e) => validationErrors.Add(e.Message));
+            var xmlValidator = XmlReader.Create(xmlStream, xmlReaderSettings);
+            return xmlValidator;
+        }
+
+        /// <summary>
+        /// Opens the XSD file.
+        /// </summary>
+        /// <returns></returns>
+        private static Stream OpenXsd()
+        {
+            return Assembly.GetExecutingAssembly().GetManifestResourceStream(typeof(DbmlSerializer), "DbmlSchema.xsd");
+        }
+
+        /// <summary>
+        /// Checks if validation contains error.
+        /// </summary>
+        /// <param name="validationErrors">The validation errors.</param>
+        private static void CheckValidation(IList<string> validationErrors)
+        {
+            if (validationErrors.Count > 0)
+            {
+                throw new ValidationException(validationErrors);
+            }
+        }
+
+        /// <summary>
+        /// Reads the specified XML stream for a Database schema.
+        /// </summary>
+        /// <param name="xmlStream">The XML stream.</param>
+        /// <param name="validationErrors">The validation errors.</param>
+        /// <returns></returns>
+        public static Database Read(Stream xmlStream, IList<string> validationErrors)
+        {
+            using (Stream xsdStream = OpenXsd())
+            using (XmlReader xmlReader = OpenXml(xmlStream, xsdStream, validationErrors))
+            {
+                var xmlSerializer = new DatabaseSerializer();
+                var dbml = (Database)xmlSerializer.Deserialize(xmlReader);
+                return dbml;
+            }
+        }
+
+        /// <summary>
+        /// Reads the specified XML stream for a DBML schema.
+        /// </summary>
+        /// <param name="xmlStream">The XML stream.</param>
+        /// <returns></returns>
+        public static Database Read(Stream xmlStream)
+        {
+            var validationErrors = new List<string>();
+            var dbml = Read(xmlStream, validationErrors);
+            CheckValidation(validationErrors);
+            return dbml;
+        }
+
+        /// <summary>
+        /// Writes the specified XML stream.
+        /// </summary>
+        /// <param name="xmlStream">The XML stream.</param>
+        /// <param name="dbml">The DBML.</param>
+        public static void Write(Stream xmlStream, Database dbml)
+        {
+            var xmlSerializer = new DatabaseSerializer();
+            xmlSerializer.Serialize(xmlStream, dbml);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/INameFormatter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/INameFormatter.cs
@@ -1,99 +1,99 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema
-{
-    /// <summary>
-    /// Allows to manipulate words
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface INameFormatter
-    {
-        /// <summary>
-        /// Gets the name of the schema.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        SchemaName GetSchemaName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
-        /// <summary>
-        /// Gets the name of the procedure.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        ProcedureName GetProcedureName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
-        /// <summary>
-        /// Gets the name of the parameter.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        ParameterName GetParameterName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
-        /// <summary>
-        /// Gets the name of the table.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        TableName GetTableName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
-        /// <summary>
-        /// Gets the name of the column.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        ColumnName GetColumnName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
-        /// <summary>
-        /// Gets the name of the association.
-        /// </summary>
-        /// <param name="dbManyName">Name of the db many.</param>
-        /// <param name="dbOneName">Name of the db one.</param>
-        /// <param name="dbConstraintName">Name of the db constraint.</param>
-        /// <param name="foreignKeyName">Name of the foreign key.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        AssociationName GetAssociationName(string dbManyName, string dbOneName,
-                                           string dbConstraintName, string foreignKeyName,
-                                            WordsExtraction extraction, NameFormat nameFormat);
-        // 
-        /// <summary>
-        /// Reformats a name by adjusting its case.
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="newCase">The new case.</param>
-        /// <returns></returns>
-        string Format(string words, Case newCase);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema
+{
+    /// <summary>
+    /// Allows to manipulate words
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface INameFormatter
+    {
+        /// <summary>
+        /// Gets the name of the schema.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        SchemaName GetSchemaName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
+        /// <summary>
+        /// Gets the name of the procedure.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        ProcedureName GetProcedureName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
+        /// <summary>
+        /// Gets the name of the parameter.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        ParameterName GetParameterName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
+        /// <summary>
+        /// Gets the name of the table.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        TableName GetTableName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
+        /// <summary>
+        /// Gets the name of the column.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        ColumnName GetColumnName(string dbName, WordsExtraction extraction, NameFormat nameFormat);
+        /// <summary>
+        /// Gets the name of the association.
+        /// </summary>
+        /// <param name="dbManyName">Name of the db many.</param>
+        /// <param name="dbOneName">Name of the db one.</param>
+        /// <param name="dbConstraintName">Name of the db constraint.</param>
+        /// <param name="foreignKeyName">Name of the foreign key.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        AssociationName GetAssociationName(string dbManyName, string dbOneName,
+                                           string dbConstraintName, string foreignKeyName,
+                                            WordsExtraction extraction, NameFormat nameFormat);
+        // 
+        /// <summary>
+        /// Reformats a name by adjusting its case.
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="newCase">The new case.</param>
+        /// <returns></returns>
+        string Format(string words, Case newCase);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Implementation/NameFormatter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Implementation/NameFormatter.cs
@@ -1,447 +1,447 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-using DbLinq.Factory;
-using DbLinq.Language;
-
-namespace DbLinq.Schema.Implementation
-{
-    /// <summary>
-    /// INameFormatter default implementation
-    /// </summary>
-    internal class NameFormatter : INameFormatter
-    {
-        /// <summary>
-        /// Singularization type
-        /// </summary>
-        internal enum Singularization
-        {
-            /// <summary>
-            /// The word plural doesn't change
-            /// </summary>
-            DontChange,
-            /// <summary>
-            /// Singularize the word
-            /// </summary>
-            Singular,
-            /// <summary>
-            /// Pluralize the word
-            /// </summary>
-            Plural,
-        }
-
-        /// <summary>
-        /// Indicates the word position. Internally used for capitalization
-        /// </summary>
-        [Flags]
-        protected enum Position
-        {
-            /// <summary>
-            /// Word is first in sentence
-            /// </summary>
-            First = 0x01,
-            /// <summary>
-            /// Word is last in sentence
-            /// </summary>
-            Last = 0x02,
-        }
-
-        /// <summary>
-        /// ILanguageWords by culture info name
-        /// </summary>
-        private readonly IDictionary<string, ILanguageWords> languageWords = new Dictionary<string, ILanguageWords>();
-
-        /// <summary>
-        /// Substitution char for invalid characters
-        /// </summary>
-        private const char SubstitutionChar = '_';
-
-        /// <summary>
-        /// Gets the ILanguageWords by CultureInfo.
-        /// </summary>
-        /// <param name="cultureInfo">The culture info.</param>
-        /// <returns></returns>
-        protected virtual ILanguageWords GetLanguageWords(CultureInfo cultureInfo)
-        {
-            lock (languageWords)
-            {
-                ILanguageWords words;
-                if (!languageWords.TryGetValue(cultureInfo.Name, out words))
-                {
-                    var languages = ObjectFactory.Get<ILanguages>();
-                    words = languages.Load(cultureInfo);
-                    languageWords[cultureInfo.Name] = words;
-                }
-                return words;
-            }
-        }
-
-        /// <summary>
-        /// Formats the specified words.
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="oldName">The old name.</param>
-        /// <param name="newCase">The new case.</param>
-        /// <param name="singularization">The singularization.</param>
-        /// <returns></returns>
-        public virtual string Format(ILanguageWords words, string oldName, Case newCase, Singularization singularization)
-        {
-            var parts = ExtractWordsFromCaseAndLanguage(words, oldName);
-            return Format(words, parts, newCase, singularization);
-        }
-
-        /// <summary>
-        /// Formats the specified words.
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="parts">The parts.</param>
-        /// <param name="newCase">The new case.</param>
-        /// <param name="singularization">The singularization.</param>
-        /// <returns></returns>
-        private string Format(ILanguageWords words, IList<string> parts, Case newCase, Singularization singularization)
-        {
-            var result = new StringBuilder();
-            for (int partIndex = 0; partIndex < parts.Count; partIndex++)
-            {
-                Position position = 0;
-                if (partIndex == 0)
-                    position |= Position.First;
-                if (partIndex == parts.Count - 1)
-                    position |= Position.Last;
-                result.Append(AdjustPart(words, parts[partIndex], position, newCase, singularization));
-            }
-            return result.ToString();
-        }
-
-        /// <summary>
-        /// Toes the camel case.
-        /// </summary>
-        /// <param name="part">The part.</param>
-        /// <returns></returns>
-        public string ToCamelCase(string part)
-        {
-            return part.ToLower();
-        }
-
-        /// <summary>
-        /// Toes the pascal case.
-        /// </summary>
-        /// <param name="part">The part.</param>
-        /// <returns></returns>
-        public string ToPascalCase(string part)
-        {
-            // we have a very special case here, for "ID" that goes to full uppercase even in PascalCase mode
-            if (string.Compare(part, "id", true) == 0)
-                return "ID";
-            part = part.Substring(0, 1).ToUpper() + part.Substring(1).ToLower();
-            return part;
-        }
-
-        /// <summary>
-        /// Toes the net case.
-        /// </summary>
-        /// <param name="part">The part.</param>
-        /// <returns></returns>
-        public string ToNetCase(string part)
-        {
-            return ToPascalCase(part);
-        }
-
-        /// <summary>
-        /// Adjusts the part.
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="part">The part.</param>
-        /// <param name="position">The position.</param>
-        /// <param name="newCase">The new case.</param>
-        /// <param name="singularization">The singularization.</param>
-        /// <returns></returns>
-        protected virtual string AdjustPart(ILanguageWords words, string part, Position position, Case newCase, Singularization singularization)
-        {
-            if (singularization != Singularization.DontChange && (position & Position.Last) != 0)
-            {
-                if (singularization == Singularization.Singular)
-                    part = words.Singularize(part);
-                else
-                    part = words.Pluralize(part);
-            }
-            Case applyCase = newCase;
-            if (applyCase == Case.camelCase && (position & Position.First) == 0)
-                applyCase = Case.PascalCase;
-            switch (applyCase)
-            {
-            case Case.Leave:
-                break;
-            case Case.camelCase:
-                part = ToCamelCase(part);
-                break;
-            case Case.PascalCase:
-                part = ToPascalCase(part);
-                break;
-            case Case.NetCase:
-                part = ToNetCase(part);
-                break;
-            default:
-                throw new ArgumentOutOfRangeException();
-            }
-            return part;
-        }
-
-        /// <summary>
-        /// Pushes the word on a collection
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="currentWord">The current word.</param>
-        private static void PushWord(ICollection<string> words, StringBuilder currentWord)
-        {
-            if (currentWord.Length > 0)
-            {
-                words.Add(currentWord.ToString());
-                currentWord.Remove(0, currentWord.Length);
-            }
-        }
-
-        /// <summary>
-        /// Extracts words from uppercase and _
-        /// A word can also be composed of several uppercase letters
-        /// </summary>
-        /// <param name="name"></param>
-        /// <param name="substitutionChar"></param>
-        /// <returns></returns>
-        protected virtual IList<string> ExtractWordsFromCase(string name, char substitutionChar)
-        {
-            var words = new List<string>();
-            bool currentLowerCase = true;
-            var currentWord = new StringBuilder();
-            for (int charIndex = 0; charIndex < name.Length; charIndex++)
-            {
-                char currentChar = name[charIndex];
-                bool isLower = char.IsLower(currentChar);
-                // we switched to uppercase
-                if (!isLower && currentLowerCase)
-                {
-                    PushWord(words, currentWord);
-                }
-                else if (isLower && !currentLowerCase)
-                {
-                    // if the current word has several uppercase letters, it is one unique word
-                    if (currentWord.Length > 1)
-                        PushWord(words, currentWord);
-                }
-                // only letters or digits are allowed
-                if (char.IsLetterOrDigit(currentChar))
-                    currentWord.Append(currentChar);
-                // _ is the separator character, but all other characters will be kept
-                else if (currentChar != '_' && !char.IsSeparator(currentChar))
-                    currentWord.Append(substitutionChar);
-                currentLowerCase = isLower;
-            }
-            PushWord(words, currentWord);
-
-            return words;
-        }
-
-        /// <summary>
-        /// Extracts the words from case and language.
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="dbName">Name of the db.</param>
-        /// <returns></returns>
-        protected virtual IList<string> ExtractWordsFromCaseAndLanguage(ILanguageWords words, string dbName)
-        {
-            var extractedWords = new List<string>();
-            foreach (var wordsMagma in ExtractWordsFromCase(dbName, SubstitutionChar))
-            {
-                extractedWords.AddRange(words.GetWords(wordsMagma));
-            }
-            return extractedWords;
-        }
-
-        /// <summary>
-        /// Extracts the words from given text.
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction type (case or language identification).</param>
-        /// <returns></returns>
-        protected virtual IList<string> ExtractWords(ILanguageWords words, string dbName, WordsExtraction extraction)
-        {
-            switch (extraction)
-            {
-            case WordsExtraction.None:
-                return new[] { dbName };
-            case WordsExtraction.FromCase:
-                return ExtractWordsFromCase(dbName, SubstitutionChar);
-            case WordsExtraction.FromDictionary:
-                return ExtractWordsFromCaseAndLanguage(words, dbName);
-            default:
-                throw new ArgumentOutOfRangeException("extraction");
-            }
-        }
-
-        /// <summary>
-        /// Gets the singularization.
-        /// </summary>
-        /// <param name="singularization">The singularization.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        protected virtual Singularization GetSingularization(Singularization singularization, NameFormat nameFormat)
-        {
-            if (!nameFormat.Pluralize)
-                return Singularization.DontChange;
-            return singularization;
-        }
-
-        /// <summary>
-        /// Reformats a name by adjusting its case.
-        /// </summary>
-        /// <param name="words">The words.</param>
-        /// <param name="newCase">The new case.</param>
-        /// <returns></returns>
-        public string Format(string words, Case newCase)
-        {
-            return Format(null, ExtractWordsFromCase(words, SubstitutionChar), newCase, Singularization.DontChange);
-        }
-
-        /// <summary>
-        /// Gets the name of the schema.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        public SchemaName GetSchemaName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
-        {
-            var words = GetLanguageWords(nameFormat.Culture);
-            var schemaName = new SchemaName { DbName = dbName };
-            schemaName.NameWords = ExtractWords(words, dbName, extraction);
-            schemaName.ClassName = Format(words, schemaName.NameWords, nameFormat.Case, Singularization.DontChange);
-            return schemaName;
-        }
-
-        /// <summary>
-        /// Gets the name of the procedure.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        public ProcedureName GetProcedureName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
-        {
-            var words = GetLanguageWords(nameFormat.Culture);
-            var procedureName = new ProcedureName { DbName = dbName };
-            procedureName.NameWords = ExtractWords(words, dbName, extraction);
-            procedureName.MethodName = Format(words, procedureName.NameWords, nameFormat.Case, Singularization.DontChange);
-            return procedureName;
-        }
-
-        /// <summary>
-        /// Gets the name of the parameter.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        public ParameterName GetParameterName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
-        {
-            var words = GetLanguageWords(nameFormat.Culture);
-            var parameterName = new ParameterName { DbName = dbName };
-            parameterName.NameWords = ExtractWords(words, dbName, extraction);
-            parameterName.CallName = Format(words, parameterName.NameWords, Case.camelCase, Singularization.DontChange);
-            return parameterName;
-        }
-
-        /// <summary>
-        /// Gets the name of the table.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        public TableName GetTableName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
-        {
-            var words = GetLanguageWords(nameFormat.Culture);
-            var tableName = new TableName { DbName = dbName };
-            tableName.NameWords = ExtractWords(words, dbName, extraction);
-            // if no extraction (preset name, just copy it)
-            if (extraction == WordsExtraction.None)
-                tableName.ClassName = tableName.DbName;
-            else
-                tableName.ClassName = Format(words, tableName.NameWords, nameFormat.Case, GetSingularization(Singularization.Singular, nameFormat));
-            tableName.MemberName = Format(words, tableName.NameWords, nameFormat.Case, GetSingularization(Singularization.Plural, nameFormat));
-            return tableName;
-        }
-
-        /// <summary>
-        /// Gets the name of the column.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        public ColumnName GetColumnName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
-        {
-            var words = GetLanguageWords(nameFormat.Culture);
-            var columnName = new ColumnName { DbName = dbName };
-            columnName.NameWords = ExtractWords(words, dbName, extraction);
-            // if no extraction (preset name, just copy it)
-            if (extraction == WordsExtraction.None)
-                columnName.PropertyName = dbName;
-            else
-                columnName.PropertyName = Format(words, columnName.NameWords, nameFormat.Case, Singularization.DontChange);
-            return columnName;
-        }
-
-        /// <summary>
-        /// Gets the name of the association.
-        /// </summary>
-        /// <param name="dbManyName">Name of the db many.</param>
-        /// <param name="dbOneName">Name of the db one.</param>
-        /// <param name="dbConstraintName">Name of the db constraint.</param>
-        /// <param name="foreignKeyName">Name of the foreign key.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        public AssociationName GetAssociationName(string dbManyName, string dbOneName, string dbConstraintName,
-            string foreignKeyName, WordsExtraction extraction, NameFormat nameFormat)
-        {
-            var words = GetLanguageWords(nameFormat.Culture);
-            var associationName = new AssociationName { DbName = dbManyName };
-            associationName.NameWords = ExtractWords(words, dbManyName, extraction);
-            associationName.ManyToOneMemberName = Format(words, dbOneName, nameFormat.Case, GetSingularization(Singularization.Singular, nameFormat));
-            // TODO: this works only for PascalCase
-            if (dbManyName == dbOneName)
-                associationName.ManyToOneMemberName = foreignKeyName.Replace(',', '_') + associationName.ManyToOneMemberName;
-            // TODO: support new extraction
-            associationName.OneToManyMemberName = Format(words, dbManyName, nameFormat.Case, GetSingularization(Singularization.Plural, nameFormat));
-            return associationName;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Text;
+using DbLinq.Factory;
+using DbLinq.Language;
+
+namespace DbLinq.Schema.Implementation
+{
+    /// <summary>
+    /// INameFormatter default implementation
+    /// </summary>
+    internal class NameFormatter : INameFormatter
+    {
+        /// <summary>
+        /// Singularization type
+        /// </summary>
+        internal enum Singularization
+        {
+            /// <summary>
+            /// The word plural doesn't change
+            /// </summary>
+            DontChange,
+            /// <summary>
+            /// Singularize the word
+            /// </summary>
+            Singular,
+            /// <summary>
+            /// Pluralize the word
+            /// </summary>
+            Plural,
+        }
+
+        /// <summary>
+        /// Indicates the word position. Internally used for capitalization
+        /// </summary>
+        [Flags]
+        protected enum Position
+        {
+            /// <summary>
+            /// Word is first in sentence
+            /// </summary>
+            First = 0x01,
+            /// <summary>
+            /// Word is last in sentence
+            /// </summary>
+            Last = 0x02,
+        }
+
+        /// <summary>
+        /// ILanguageWords by culture info name
+        /// </summary>
+        private readonly IDictionary<string, ILanguageWords> languageWords = new Dictionary<string, ILanguageWords>();
+
+        /// <summary>
+        /// Substitution char for invalid characters
+        /// </summary>
+        private const char SubstitutionChar = '_';
+
+        /// <summary>
+        /// Gets the ILanguageWords by CultureInfo.
+        /// </summary>
+        /// <param name="cultureInfo">The culture info.</param>
+        /// <returns></returns>
+        protected virtual ILanguageWords GetLanguageWords(CultureInfo cultureInfo)
+        {
+            lock (languageWords)
+            {
+                ILanguageWords words;
+                if (!languageWords.TryGetValue(cultureInfo.Name, out words))
+                {
+                    var languages = ObjectFactory.Get<ILanguages>();
+                    words = languages.Load(cultureInfo);
+                    languageWords[cultureInfo.Name] = words;
+                }
+                return words;
+            }
+        }
+
+        /// <summary>
+        /// Formats the specified words.
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="oldName">The old name.</param>
+        /// <param name="newCase">The new case.</param>
+        /// <param name="singularization">The singularization.</param>
+        /// <returns></returns>
+        public virtual string Format(ILanguageWords words, string oldName, Case newCase, Singularization singularization)
+        {
+            var parts = ExtractWordsFromCaseAndLanguage(words, oldName);
+            return Format(words, parts, newCase, singularization);
+        }
+
+        /// <summary>
+        /// Formats the specified words.
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="parts">The parts.</param>
+        /// <param name="newCase">The new case.</param>
+        /// <param name="singularization">The singularization.</param>
+        /// <returns></returns>
+        private string Format(ILanguageWords words, IList<string> parts, Case newCase, Singularization singularization)
+        {
+            var result = new StringBuilder();
+            for (int partIndex = 0; partIndex < parts.Count; partIndex++)
+            {
+                Position position = 0;
+                if (partIndex == 0)
+                    position |= Position.First;
+                if (partIndex == parts.Count - 1)
+                    position |= Position.Last;
+                result.Append(AdjustPart(words, parts[partIndex], position, newCase, singularization));
+            }
+            return result.ToString();
+        }
+
+        /// <summary>
+        /// Toes the camel case.
+        /// </summary>
+        /// <param name="part">The part.</param>
+        /// <returns></returns>
+        public string ToCamelCase(string part)
+        {
+            return part.ToLower();
+        }
+
+        /// <summary>
+        /// Toes the pascal case.
+        /// </summary>
+        /// <param name="part">The part.</param>
+        /// <returns></returns>
+        public string ToPascalCase(string part)
+        {
+            // we have a very special case here, for "ID" that goes to full uppercase even in PascalCase mode
+            if (string.Compare(part, "id", true) == 0)
+                return "ID";
+            part = part.Substring(0, 1).ToUpper() + part.Substring(1).ToLower();
+            return part;
+        }
+
+        /// <summary>
+        /// Toes the net case.
+        /// </summary>
+        /// <param name="part">The part.</param>
+        /// <returns></returns>
+        public string ToNetCase(string part)
+        {
+            return ToPascalCase(part);
+        }
+
+        /// <summary>
+        /// Adjusts the part.
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="part">The part.</param>
+        /// <param name="position">The position.</param>
+        /// <param name="newCase">The new case.</param>
+        /// <param name="singularization">The singularization.</param>
+        /// <returns></returns>
+        protected virtual string AdjustPart(ILanguageWords words, string part, Position position, Case newCase, Singularization singularization)
+        {
+            if (singularization != Singularization.DontChange && (position & Position.Last) != 0)
+            {
+                if (singularization == Singularization.Singular)
+                    part = words.Singularize(part);
+                else
+                    part = words.Pluralize(part);
+            }
+            Case applyCase = newCase;
+            if (applyCase == Case.camelCase && (position & Position.First) == 0)
+                applyCase = Case.PascalCase;
+            switch (applyCase)
+            {
+            case Case.Leave:
+                break;
+            case Case.camelCase:
+                part = ToCamelCase(part);
+                break;
+            case Case.PascalCase:
+                part = ToPascalCase(part);
+                break;
+            case Case.NetCase:
+                part = ToNetCase(part);
+                break;
+            default:
+                throw new ArgumentOutOfRangeException();
+            }
+            return part;
+        }
+
+        /// <summary>
+        /// Pushes the word on a collection
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="currentWord">The current word.</param>
+        private static void PushWord(ICollection<string> words, StringBuilder currentWord)
+        {
+            if (currentWord.Length > 0)
+            {
+                words.Add(currentWord.ToString());
+                currentWord.Remove(0, currentWord.Length);
+            }
+        }
+
+        /// <summary>
+        /// Extracts words from uppercase and _
+        /// A word can also be composed of several uppercase letters
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="substitutionChar"></param>
+        /// <returns></returns>
+        protected virtual IList<string> ExtractWordsFromCase(string name, char substitutionChar)
+        {
+            var words = new List<string>();
+            bool currentLowerCase = true;
+            var currentWord = new StringBuilder();
+            for (int charIndex = 0; charIndex < name.Length; charIndex++)
+            {
+                char currentChar = name[charIndex];
+                bool isLower = char.IsLower(currentChar);
+                // we switched to uppercase
+                if (!isLower && currentLowerCase)
+                {
+                    PushWord(words, currentWord);
+                }
+                else if (isLower && !currentLowerCase)
+                {
+                    // if the current word has several uppercase letters, it is one unique word
+                    if (currentWord.Length > 1)
+                        PushWord(words, currentWord);
+                }
+                // only letters or digits are allowed
+                if (char.IsLetterOrDigit(currentChar))
+                    currentWord.Append(currentChar);
+                // _ is the separator character, but all other characters will be kept
+                else if (currentChar != '_' && !char.IsSeparator(currentChar))
+                    currentWord.Append(substitutionChar);
+                currentLowerCase = isLower;
+            }
+            PushWord(words, currentWord);
+
+            return words;
+        }
+
+        /// <summary>
+        /// Extracts the words from case and language.
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="dbName">Name of the db.</param>
+        /// <returns></returns>
+        protected virtual IList<string> ExtractWordsFromCaseAndLanguage(ILanguageWords words, string dbName)
+        {
+            var extractedWords = new List<string>();
+            foreach (var wordsMagma in ExtractWordsFromCase(dbName, SubstitutionChar))
+            {
+                extractedWords.AddRange(words.GetWords(wordsMagma));
+            }
+            return extractedWords;
+        }
+
+        /// <summary>
+        /// Extracts the words from given text.
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction type (case or language identification).</param>
+        /// <returns></returns>
+        protected virtual IList<string> ExtractWords(ILanguageWords words, string dbName, WordsExtraction extraction)
+        {
+            switch (extraction)
+            {
+            case WordsExtraction.None:
+                return new[] { dbName };
+            case WordsExtraction.FromCase:
+                return ExtractWordsFromCase(dbName, SubstitutionChar);
+            case WordsExtraction.FromDictionary:
+                return ExtractWordsFromCaseAndLanguage(words, dbName);
+            default:
+                throw new ArgumentOutOfRangeException("extraction");
+            }
+        }
+
+        /// <summary>
+        /// Gets the singularization.
+        /// </summary>
+        /// <param name="singularization">The singularization.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        protected virtual Singularization GetSingularization(Singularization singularization, NameFormat nameFormat)
+        {
+            if (!nameFormat.Pluralize)
+                return Singularization.DontChange;
+            return singularization;
+        }
+
+        /// <summary>
+        /// Reformats a name by adjusting its case.
+        /// </summary>
+        /// <param name="words">The words.</param>
+        /// <param name="newCase">The new case.</param>
+        /// <returns></returns>
+        public string Format(string words, Case newCase)
+        {
+            return Format(null, ExtractWordsFromCase(words, SubstitutionChar), newCase, Singularization.DontChange);
+        }
+
+        /// <summary>
+        /// Gets the name of the schema.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        public SchemaName GetSchemaName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
+        {
+            var words = GetLanguageWords(nameFormat.Culture);
+            var schemaName = new SchemaName { DbName = dbName };
+            schemaName.NameWords = ExtractWords(words, dbName, extraction);
+            schemaName.ClassName = Format(words, schemaName.NameWords, nameFormat.Case, Singularization.DontChange);
+            return schemaName;
+        }
+
+        /// <summary>
+        /// Gets the name of the procedure.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        public ProcedureName GetProcedureName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
+        {
+            var words = GetLanguageWords(nameFormat.Culture);
+            var procedureName = new ProcedureName { DbName = dbName };
+            procedureName.NameWords = ExtractWords(words, dbName, extraction);
+            procedureName.MethodName = Format(words, procedureName.NameWords, nameFormat.Case, Singularization.DontChange);
+            return procedureName;
+        }
+
+        /// <summary>
+        /// Gets the name of the parameter.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        public ParameterName GetParameterName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
+        {
+            var words = GetLanguageWords(nameFormat.Culture);
+            var parameterName = new ParameterName { DbName = dbName };
+            parameterName.NameWords = ExtractWords(words, dbName, extraction);
+            parameterName.CallName = Format(words, parameterName.NameWords, Case.camelCase, Singularization.DontChange);
+            return parameterName;
+        }
+
+        /// <summary>
+        /// Gets the name of the table.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        public TableName GetTableName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
+        {
+            var words = GetLanguageWords(nameFormat.Culture);
+            var tableName = new TableName { DbName = dbName };
+            tableName.NameWords = ExtractWords(words, dbName, extraction);
+            // if no extraction (preset name, just copy it)
+            if (extraction == WordsExtraction.None)
+                tableName.ClassName = tableName.DbName;
+            else
+                tableName.ClassName = Format(words, tableName.NameWords, nameFormat.Case, GetSingularization(Singularization.Singular, nameFormat));
+            tableName.MemberName = Format(words, tableName.NameWords, nameFormat.Case, GetSingularization(Singularization.Plural, nameFormat));
+            return tableName;
+        }
+
+        /// <summary>
+        /// Gets the name of the column.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        public ColumnName GetColumnName(string dbName, WordsExtraction extraction, NameFormat nameFormat)
+        {
+            var words = GetLanguageWords(nameFormat.Culture);
+            var columnName = new ColumnName { DbName = dbName };
+            columnName.NameWords = ExtractWords(words, dbName, extraction);
+            // if no extraction (preset name, just copy it)
+            if (extraction == WordsExtraction.None)
+                columnName.PropertyName = dbName;
+            else
+                columnName.PropertyName = Format(words, columnName.NameWords, nameFormat.Case, Singularization.DontChange);
+            return columnName;
+        }
+
+        /// <summary>
+        /// Gets the name of the association.
+        /// </summary>
+        /// <param name="dbManyName">Name of the db many.</param>
+        /// <param name="dbOneName">Name of the db one.</param>
+        /// <param name="dbConstraintName">Name of the db constraint.</param>
+        /// <param name="foreignKeyName">Name of the foreign key.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        public AssociationName GetAssociationName(string dbManyName, string dbOneName, string dbConstraintName,
+            string foreignKeyName, WordsExtraction extraction, NameFormat nameFormat)
+        {
+            var words = GetLanguageWords(nameFormat.Culture);
+            var associationName = new AssociationName { DbName = dbManyName };
+            associationName.NameWords = ExtractWords(words, dbManyName, extraction);
+            associationName.ManyToOneMemberName = Format(words, dbOneName, nameFormat.Case, GetSingularization(Singularization.Singular, nameFormat));
+            // TODO: this works only for PascalCase
+            if (dbManyName == dbOneName)
+                associationName.ManyToOneMemberName = foreignKeyName.Replace(',', '_') + associationName.ManyToOneMemberName;
+            // TODO: support new extraction
+            associationName.OneToManyMemberName = Format(words, dbManyName, nameFormat.Case, GetSingularization(Singularization.Plural, nameFormat));
+            return associationName;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/Name.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/Name.cs
@@ -1,49 +1,49 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-
-namespace DbLinq.Schema
-{
-    /// <summary>
-    /// Base name class, with DB name and words contained
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class Name
-    {
-        /// <summary>
-        /// The original database name, returned directly by database analysis
-        /// </summary>
-        public string DbName { get; set; }
-
-        /// <summary>
-        /// EnglishWords deduced from the name, by case analysis or word matching
-        /// </summary>
-        public IList<string> NameWords { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+
+namespace DbLinq.Schema
+{
+    /// <summary>
+    /// Base name class, with DB name and words contained
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class Name
+    {
+        /// <summary>
+        /// The original database name, returned directly by database analysis
+        /// </summary>
+        public string DbName { get; set; }
+
+        /// <summary>
+        /// EnglishWords deduced from the name, by case analysis or word matching
+        /// </summary>
+        public IList<string> NameWords { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/NameFormat.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/NameFormat.cs
@@ -1,61 +1,61 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-
-namespace DbLinq.Schema
-{
-    /// <summary>
-    /// Determines how names must be formated, when extracting from database
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class NameFormat
-    {
-        /// <summary>
-        /// True if we allow pluralization/singularization
-        /// False if we consider words as invariant
-        /// </summary>
-        public bool Pluralize { get; private set; }
-        /// <summary>
-        /// Casing model: this is used for public properties generation
-        /// </summary>
-        public Case Case { get; private set; }
-        /// <summary>
-        /// When extraction words from a dictionary or pluralization/singularization, determines which language
-        /// should be used
-        /// </summary>
-        public CultureInfo Culture { get; private set; }
-
-        public NameFormat(bool pluralize, Case _case, CultureInfo culture)
-        {
-            Pluralize = pluralize;
-            Case = _case;
-            Culture = culture;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+
+namespace DbLinq.Schema
+{
+    /// <summary>
+    /// Determines how names must be formated, when extracting from database
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class NameFormat
+    {
+        /// <summary>
+        /// True if we allow pluralization/singularization
+        /// False if we consider words as invariant
+        /// </summary>
+        public bool Pluralize { get; private set; }
+        /// <summary>
+        /// Casing model: this is used for public properties generation
+        /// </summary>
+        public Case Case { get; private set; }
+        /// <summary>
+        /// When extraction words from a dictionary or pluralization/singularization, determines which language
+        /// should be used
+        /// </summary>
+        public CultureInfo Culture { get; private set; }
+
+        public NameFormat(bool pluralize, Case _case, CultureInfo culture)
+        {
+            Pluralize = pluralize;
+            Case = _case;
+            Culture = culture;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/ParameterName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/ParameterName.cs
@@ -1,39 +1,39 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema
-{
-#if !MONO_STRICT
-    public
-#endif
-    class ParameterName : Name
-    {
-        /// <summary>
-        /// Name to be used from a .NET call
-        /// </summary>
-        public string CallName { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema
+{
+#if !MONO_STRICT
+    public
+#endif
+    class ParameterName : Name
+    {
+        /// <summary>
+        /// Name to be used from a .NET call
+        /// </summary>
+        public string CallName { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/ProcedureName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/ProcedureName.cs
@@ -1,39 +1,39 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema
-{
-#if !MONO_STRICT
-    public
-#endif
-    class ProcedureName : Name
-    {
-        /// <summary>
-        /// Name to be used from a .NET call
-        /// </summary>
-        public string MethodName { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema
+{
+#if !MONO_STRICT
+    public
+#endif
+    class ProcedureName : Name
+    {
+        /// <summary>
+        /// Name to be used from a .NET call
+        /// </summary>
+        public string MethodName { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/SchemaName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/SchemaName.cs
@@ -1,39 +1,39 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SchemaName : Name
-    {
-        /// <summary>
-        /// The schema name represented as a class
-        /// </summary>
-        public string ClassName { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SchemaName : Name
+    {
+        /// <summary>
+        /// The schema name represented as a class
+        /// </summary>
+        public string ClassName { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/TableName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/TableName.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema
-{
-#if !MONO_STRICT
-    public
-#endif
-    class TableName : Name
-    {
-        /// <summary>
-        /// Name of the class representing the table
-        /// </summary>
-        public string ClassName { get; set; }
-
-        /// <summary>
-        /// Used to name the table accessor from the data context
-        /// </summary>
-        public string MemberName { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema
+{
+#if !MONO_STRICT
+    public
+#endif
+    class TableName : Name
+    {
+        /// <summary>
+        /// Name of the class representing the table
+        /// </summary>
+        public string ClassName { get; set; }
+
+        /// <summary>
+        /// Used to name the table accessor from the data context
+        /// </summary>
+        public string MemberName { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Schema/WordsExtraction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Schema/WordsExtraction.cs
@@ -1,51 +1,51 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Schema
-{
-    /// <summary>
-    /// Determines how to extract words from a given text
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    enum WordsExtraction
-    {
-        /// <summary>
-        /// Considers the given text as a single word
-        /// </summary>
-        None,
-        /// <summary>
-        /// Considers words starting by an uppercase letter, or with full uppercase
-        /// (for example thisIsMyWORD --> "this" "Is" "My" "WORD")
-        /// </summary>
-        FromCase,
-        /// <summary>
-        /// Extracts word from dictionary, given NameFormat.Culture
-        /// </summary>
-        FromDictionary,
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Schema
+{
+    /// <summary>
+    /// Determines how to extract words from a given text
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    enum WordsExtraction
+    {
+        /// <summary>
+        /// Considers the given text as a single word
+        /// </summary>
+        None,
+        /// <summary>
+        /// Considers words starting by an uppercase letter, or with full uppercase
+        /// (for example thisIsMyWORD --> "this" "Is" "My" "WORD")
+        /// </summary>
+        FromCase,
+        /// <summary>
+        /// Extracts word from dictionary, given NameFormat.Culture
+        /// </summary>
+        FromDictionary,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/Assembly/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/Assembly/AssemblyInfo.cs
@@ -1,89 +1,89 @@
-//
-// AssemblyInfo.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//   Marek Safar <marek.safar@gmail.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Reflection;
-using System.Resources;
-using System.Security;
-using System.Diagnostics;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about the System.Data.Linq assembly
-// v3.5 Assembly
-
-[assembly: AssemblyTitle ("System.Data.Linq.dll")]
-[assembly: AssemblyDescription ("System.Data.Linq.dll")]
-[assembly: AssemblyDefaultAlias ("System.Data.Linq.dll")]
-
-#if MONO_DEPLOY
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: SatelliteContractVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
-
-[assembly: NeutralResourcesLanguage ("en-US")]
-[assembly: CLSCompliant (true)]
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../ecma.pub")]
-#endif
-
-[assembly: ComVisible (false)]
-[assembly: AllowPartiallyTrustedCallers]
-[assembly: DbLinqAttribute]
-
-// DbMetal needs access to the DbLinq internals
-[assembly: InternalsVisibleTo("sqlmetal, PublicKey=" +
-"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
-"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
-"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
-"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
-"2309259f")]
-
-// As do the sqlmetal NUnit tests...
-[assembly: InternalsVisibleTo("sqlmetal_test_net_2_0, PublicKey=" +
-"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
-"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
-"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
-"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
-"2309259f")]
-
-[assembly: InternalsVisibleTo("sqlmetal_test_net_4_0, PublicKey=" +
-"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
-"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
-"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
-"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
-"2309259f")]
-
+//
+// AssemblyInfo.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//   Marek Safar <marek.safar@gmail.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Diagnostics;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about the System.Data.Linq assembly
+// v3.5 Assembly
+
+[assembly: AssemblyTitle ("System.Data.Linq.dll")]
+[assembly: AssemblyDescription ("System.Data.Linq.dll")]
+[assembly: AssemblyDefaultAlias ("System.Data.Linq.dll")]
+
+#if MONO_DEPLOY
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: SatelliteContractVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+
+[assembly: NeutralResourcesLanguage ("en-US")]
+[assembly: CLSCompliant (true)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../ecma.pub")]
+#endif
+
+[assembly: ComVisible (false)]
+[assembly: AllowPartiallyTrustedCallers]
+[assembly: DbLinqAttribute]
+
+// DbMetal needs access to the DbLinq internals
+[assembly: InternalsVisibleTo("sqlmetal, PublicKey=" +
+"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
+"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
+"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
+"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
+"2309259f")]
+
+// As do the sqlmetal NUnit tests...
+[assembly: InternalsVisibleTo("sqlmetal_test_net_2_0, PublicKey=" +
+"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
+"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
+"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
+"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
+"2309259f")]
+
+[assembly: InternalsVisibleTo("sqlmetal_test_net_4_0, PublicKey=" +
+"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
+"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
+"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
+"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
+"2309259f")]
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/Binary.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/Binary.cs
@@ -1,115 +1,115 @@
-//
-// Binary.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Linq;
-
-namespace System.Data.Linq
-{
-    [SerializableAttribute]
-    [System.Runtime.Serialization.DataContract]
-    public sealed class Binary : IEquatable<Binary>
-    {
-        byte[] data;
-
-        public Binary(byte[] value)
-        {
-            if (value == null)
-                throw new ArgumentNullException("value");
-            data = (byte[]) value.Clone();
-        }
-
-        public static bool operator ==(Binary binary1, Binary binary2)
-        {
-            bool isNull= binary1 as object==null;
-            if (isNull)
-                return binary2 as object == null;
-            else
-                return binary1.Equals(binary2);
-        }
-
-        public static bool operator !=(Binary binary1, Binary binary2)
-        {
-            return !(binary1 == binary2);
-        }
-
-        public static implicit operator Binary(byte[] value)
-        {
-            return new Binary(value);
-        }
-
-        public int Length
-        {
-            get { return data.Length; }
-        }
-
-        public bool Equals(Binary other)
-        {
-            if (other == null)
-                return false;
-
-            if (this.Length != other.Length)
-                return false;
-
-            for (int i = 0; i < data.Length; i++)
-                if (this.data[i] != other.data[i])
-                    return false;
-
-            return true;
-        }
-
-        public override bool Equals(object obj)
-        {
-            Binary other = obj as Binary;
-            return other != null && Equals(other);
-        }
-
-        public override int GetHashCode()
-        {
-            int hc = 0;
-            for (int i = 0; i < data.Length; ++i)
-                hc ^= data[i];
-            return hc;
-        }
-
-        public byte[] ToArray()
-        {
-            if (data != null)
-                return data.ToArray();
-            else
-                return null;
-        }
-
-        public override string ToString()
-        {
-            return '"' + Convert.ToBase64String(data) + '"';
-        }
-    }
-}
+//
+// Binary.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Linq;
+
+namespace System.Data.Linq
+{
+    [SerializableAttribute]
+    [System.Runtime.Serialization.DataContract]
+    public sealed class Binary : IEquatable<Binary>
+    {
+        byte[] data;
+
+        public Binary(byte[] value)
+        {
+            if (value == null)
+                throw new ArgumentNullException("value");
+            data = (byte[]) value.Clone();
+        }
+
+        public static bool operator ==(Binary binary1, Binary binary2)
+        {
+            bool isNull= binary1 as object==null;
+            if (isNull)
+                return binary2 as object == null;
+            else
+                return binary1.Equals(binary2);
+        }
+
+        public static bool operator !=(Binary binary1, Binary binary2)
+        {
+            return !(binary1 == binary2);
+        }
+
+        public static implicit operator Binary(byte[] value)
+        {
+            return new Binary(value);
+        }
+
+        public int Length
+        {
+            get { return data.Length; }
+        }
+
+        public bool Equals(Binary other)
+        {
+            if (other == null)
+                return false;
+
+            if (this.Length != other.Length)
+                return false;
+
+            for (int i = 0; i < data.Length; i++)
+                if (this.data[i] != other.data[i])
+                    return false;
+
+            return true;
+        }
+
+        public override bool Equals(object obj)
+        {
+            Binary other = obj as Binary;
+            return other != null && Equals(other);
+        }
+
+        public override int GetHashCode()
+        {
+            int hc = 0;
+            for (int i = 0; i < data.Length; ++i)
+                hc ^= data[i];
+            return hc;
+        }
+
+        public byte[] ToArray()
+        {
+            if (data != null)
+                return data.ToArray();
+            else
+                return null;
+        }
+
+        public override string ToString()
+        {
+            return '"' + Convert.ToBase64String(data) + '"';
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ChangeConflictCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ChangeConflictCollection.cs
@@ -1,129 +1,129 @@
-//
-// ChangeConflictCollection.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace System.Data.Linq
-{
-	public sealed class ChangeConflictCollection : ICollection<ObjectChangeConflict>, ICollection, IEnumerable<ObjectChangeConflict>, IEnumerable
-
-	{
-		internal ChangeConflictCollection ()
-		{
-		}
-
-		[MonoTODO]
-		public int Count {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public ObjectChangeConflict this [int index] {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		bool ICollection<ObjectChangeConflict>.IsReadOnly {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		bool ICollection.IsSynchronized {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		object ICollection.SyncRoot {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public void Clear ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool Contains (ObjectChangeConflict item)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void CopyTo (ObjectChangeConflict [] array, int arrayIndex)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public IEnumerator<ObjectChangeConflict> GetEnumerator ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool Remove (ObjectChangeConflict item)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void ResolveAll (RefreshMode mode)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void ResolveAll (RefreshMode mode, bool autoResolveDeletes)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		void ICollection<ObjectChangeConflict>.Add (ObjectChangeConflict item)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		void ICollection.CopyTo (Array array, int index)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		IEnumerator IEnumerable.GetEnumerator ()
-		{
-			throw new NotImplementedException ();
-		}
-
-	}
-}
+//
+// ChangeConflictCollection.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace System.Data.Linq
+{
+	public sealed class ChangeConflictCollection : ICollection<ObjectChangeConflict>, ICollection, IEnumerable<ObjectChangeConflict>, IEnumerable
+
+	{
+		internal ChangeConflictCollection ()
+		{
+		}
+
+		[MonoTODO]
+		public int Count {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public ObjectChangeConflict this [int index] {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		bool ICollection<ObjectChangeConflict>.IsReadOnly {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		bool ICollection.IsSynchronized {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		object ICollection.SyncRoot {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public void Clear ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool Contains (ObjectChangeConflict item)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void CopyTo (ObjectChangeConflict [] array, int arrayIndex)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public IEnumerator<ObjectChangeConflict> GetEnumerator ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool Remove (ObjectChangeConflict item)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void ResolveAll (RefreshMode mode)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void ResolveAll (RefreshMode mode, bool autoResolveDeletes)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		void ICollection<ObjectChangeConflict>.Add (ObjectChangeConflict item)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		void ICollection.CopyTo (Array array, int index)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		IEnumerator IEnumerable.GetEnumerator ()
+		{
+			throw new NotImplementedException ();
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ChangeConflictException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ChangeConflictException.cs
@@ -1,51 +1,51 @@
-//
-// ChangeConflictException.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq
-{
-	public class ChangeConflictException : Exception
-	{
-		public ChangeConflictException ()
-			: this ("Change conflict occured")
-		{
-		}
-
-		public ChangeConflictException (string message)
-			: this (message, null)
-		{
-		}
-
-		public ChangeConflictException (string message, Exception innerException)
-			: base (message, innerException)
-		{
-		}
-	}
-}
+//
+// ChangeConflictException.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq
+{
+	public class ChangeConflictException : Exception
+	{
+		public ChangeConflictException ()
+			: this ("Change conflict occured")
+		{
+		}
+
+		public ChangeConflictException (string message)
+			: this (message, null)
+		{
+		}
+
+		public ChangeConflictException (string message, Exception innerException)
+			: base (message, innerException)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/CompiledQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/CompiledQuery.cs
@@ -1,74 +1,74 @@
-//
-// ChangeSet.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Linq.Expressions;
-
-namespace System.Data.Linq
-{
-	public sealed class CompiledQuery
-	{
-		[MonoTODO]
-		public static Func<TArg0, TResult> Compile<TArg0, TResult> (Expression<Func<TArg0, TResult>> query)
-			where TArg0 : DataContext
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static Func<TArg0, TArg1, TResult> Compile<TArg0, TArg1, TResult> (Expression<Func<TArg0, TArg1, TResult>> query)
-			where TArg0 : DataContext
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static Func<TArg0, TArg1, TArg2, TResult> Compile<TArg0, TArg1, TArg2, TResult> (Expression<Func<TArg0, TArg1, TArg2, TResult>> query)
-			where TArg0 : DataContext
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static Func<TArg0, TArg1, TArg2, TArg3, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TResult> (Expression<Func<TArg0, TArg1, TArg2, TArg3, TResult>> query)
-			where TArg0 : DataContext
-		{
-			throw new NotImplementedException ();
-		}
-
-		internal CompiledQuery ()
-		{
-		}
-
-		[MonoTODO]
-		public LambdaExpression Expression {
-			get { throw new NotImplementedException (); }
-		}
-	}
-}
+//
+// ChangeSet.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Linq.Expressions;
+
+namespace System.Data.Linq
+{
+	public sealed class CompiledQuery
+	{
+		[MonoTODO]
+		public static Func<TArg0, TResult> Compile<TArg0, TResult> (Expression<Func<TArg0, TResult>> query)
+			where TArg0 : DataContext
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static Func<TArg0, TArg1, TResult> Compile<TArg0, TArg1, TResult> (Expression<Func<TArg0, TArg1, TResult>> query)
+			where TArg0 : DataContext
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static Func<TArg0, TArg1, TArg2, TResult> Compile<TArg0, TArg1, TArg2, TResult> (Expression<Func<TArg0, TArg1, TArg2, TResult>> query)
+			where TArg0 : DataContext
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static Func<TArg0, TArg1, TArg2, TArg3, TResult> Compile<TArg0, TArg1, TArg2, TArg3, TResult> (Expression<Func<TArg0, TArg1, TArg2, TArg3, TResult>> query)
+			where TArg0 : DataContext
+		{
+			throw new NotImplementedException ();
+		}
+
+		internal CompiledQuery ()
+		{
+		}
+
+		[MonoTODO]
+		public LambdaExpression Expression {
+			get { throw new NotImplementedException (); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ConflictMode.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ConflictMode.cs
@@ -1,38 +1,38 @@
-//
-// ConflictMode.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Linq
-{
-	public enum ConflictMode
-	{
-		FailOnFirstConflict,
-		ContinueOnConflict
-	}
-}
+//
+// ConflictMode.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Linq
+{
+	public enum ConflictMode
+	{
+		FailOnFirstConflict,
+		ContinueOnConflict
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/DBConvert.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/DBConvert.cs
@@ -1,49 +1,49 @@
-//
-// ConflictMode.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq
-{
-	public static class DBConvert
-	{
-
-		[MonoTODO]
-		public static T ChangeType<T> (object value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static object ChangeType (object value, Type type)
-		{
-			throw new NotImplementedException ();
-		}
-	}
-}
+//
+// ConflictMode.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq
+{
+	public static class DBConvert
+	{
+
+		[MonoTODO]
+		public static T ChangeType<T> (object value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static object ChangeType (object value, Type type)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/DuplicateKeyException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/DuplicateKeyException.cs
@@ -1,58 +1,58 @@
-//
-// DuplicateKeyException.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq
-{
-	public class DuplicateKeyException : InvalidOperationException
-	{
-		public DuplicateKeyException (object duplicate)
-			: this (duplicate, "Duplicate key was found")
-		{
-		}
-
-		public DuplicateKeyException (object duplicate, string message)
-			: this (duplicate, message, null)
-		{
-		}
-
-		public DuplicateKeyException (object duplicate, string message, Exception innerException)
-			: base (message, innerException)
-		{
-			this.duplicate = duplicate;
-		}
-
-		object duplicate;
-
-		public object Object {
-			get { return duplicate; }
-		}
-	}
-}
+//
+// DuplicateKeyException.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq
+{
+	public class DuplicateKeyException : InvalidOperationException
+	{
+		public DuplicateKeyException (object duplicate)
+			: this (duplicate, "Duplicate key was found")
+		{
+		}
+
+		public DuplicateKeyException (object duplicate, string message)
+			: this (duplicate, message, null)
+		{
+		}
+
+		public DuplicateKeyException (object duplicate, string message, Exception innerException)
+			: base (message, innerException)
+		{
+			this.duplicate = duplicate;
+		}
+
+		object duplicate;
+
+		public object Object {
+			get { return duplicate; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/EntitySet.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/EntitySet.cs
@@ -1,242 +1,242 @@
-//
-// EntitySet.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Linq.Expressions;
-
-namespace System.Data.Linq
-{
-	public sealed class EntitySet<TEntity> : IList, ICollection, IList<TEntity>, ICollection<TEntity>, IEnumerable<TEntity>, IEnumerable, IListSource where TEntity : class
-	{
-		public EntitySet ()
-		{
-		}
-
-		[MonoTODO]
-		public EntitySet (Action<TEntity> onAdd, Action<TEntity> onRemove)
-		{
-			throw new NotImplementedException ();
-		}
-
-		public event ListChangedEventHandler ListChanged;
-
-		[MonoTODO]
-		public void Add (TEntity entity)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		int IList.Add (object value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void AddRange (IEnumerable<TEntity> collection)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Assign (IEnumerable<TEntity> entitySource)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Clear ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool Contains (TEntity entity)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		bool IList.Contains (object value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void CopyTo (TEntity [] array, int arrayIndex)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		void ICollection.CopyTo (Array array, int index)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public IEnumerator<TEntity> GetEnumerator ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		IEnumerator IEnumerable.GetEnumerator ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		IList IListSource.GetList ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public IBindingList GetNewBindingList ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public int IndexOf (TEntity entity)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		int IList.IndexOf (object value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Insert (int index, TEntity entity)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		void IList.Insert (int index, object value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Load ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool Remove (TEntity entity)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		void IList.Remove (object value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void RemoveAt (int index)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void SetSource (IEnumerable<TEntity> entitySource)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		bool IListSource.ContainsListCollection {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public int Count {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public bool HasLoadedOrAssignedValues {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public bool IsDeferred {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		bool IList.IsFixedSize {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		bool ICollection<TEntity>.IsReadOnly {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		bool IList.IsReadOnly {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		bool ICollection.IsSynchronized {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public TEntity this [int index] {
-			get { throw new NotImplementedException (); }
-			set { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		object IList.this [int index] {
-			get { throw new NotImplementedException (); }
-			set { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		object ICollection.SyncRoot {
-			get { throw new NotImplementedException (); }
-		}
-	}
-}
+//
+// EntitySet.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace System.Data.Linq
+{
+	public sealed class EntitySet<TEntity> : IList, ICollection, IList<TEntity>, ICollection<TEntity>, IEnumerable<TEntity>, IEnumerable, IListSource where TEntity : class
+	{
+		public EntitySet ()
+		{
+		}
+
+		[MonoTODO]
+		public EntitySet (Action<TEntity> onAdd, Action<TEntity> onRemove)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public event ListChangedEventHandler ListChanged;
+
+		[MonoTODO]
+		public void Add (TEntity entity)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		int IList.Add (object value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void AddRange (IEnumerable<TEntity> collection)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Assign (IEnumerable<TEntity> entitySource)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Clear ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool Contains (TEntity entity)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		bool IList.Contains (object value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void CopyTo (TEntity [] array, int arrayIndex)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		void ICollection.CopyTo (Array array, int index)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public IEnumerator<TEntity> GetEnumerator ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		IEnumerator IEnumerable.GetEnumerator ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		IList IListSource.GetList ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public IBindingList GetNewBindingList ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public int IndexOf (TEntity entity)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		int IList.IndexOf (object value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Insert (int index, TEntity entity)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		void IList.Insert (int index, object value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Load ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool Remove (TEntity entity)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		void IList.Remove (object value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void RemoveAt (int index)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void SetSource (IEnumerable<TEntity> entitySource)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		bool IListSource.ContainsListCollection {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public int Count {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public bool HasLoadedOrAssignedValues {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public bool IsDeferred {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		bool IList.IsFixedSize {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		bool ICollection<TEntity>.IsReadOnly {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		bool IList.IsReadOnly {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		bool ICollection.IsSynchronized {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public TEntity this [int index] {
+			get { throw new NotImplementedException (); }
+			set { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		object IList.this [int index] {
+			get { throw new NotImplementedException (); }
+			set { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		object ICollection.SyncRoot {
+			get { throw new NotImplementedException (); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ForeignKeyReferenceAlreadyHasValueException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ForeignKeyReferenceAlreadyHasValueException.cs
@@ -1,52 +1,52 @@
-//
-// ForeignKeyReferenceAlreadyHasValueException.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq
-{
-	public class ForeignKeyReferenceAlreadyHasValueException
-		: InvalidOperationException
-	{
-		public ForeignKeyReferenceAlreadyHasValueException ()
-			: this ("Foreign key reference already has a value")
-		{
-		}
-
-		public ForeignKeyReferenceAlreadyHasValueException (string message)
-			: this (message, null)
-		{
-		}
-
-		public ForeignKeyReferenceAlreadyHasValueException (string message, Exception innerException)
-			: base (message, innerException)
-		{
-		}
-	}
-}
+//
+// ForeignKeyReferenceAlreadyHasValueException.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq
+{
+	public class ForeignKeyReferenceAlreadyHasValueException
+		: InvalidOperationException
+	{
+		public ForeignKeyReferenceAlreadyHasValueException ()
+			: this ("Foreign key reference already has a value")
+		{
+		}
+
+		public ForeignKeyReferenceAlreadyHasValueException (string message)
+			: this (message, null)
+		{
+		}
+
+		public ForeignKeyReferenceAlreadyHasValueException (string message, Exception innerException)
+			: base (message, innerException)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/IFunctionResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/IFunctionResult.cs
@@ -1,38 +1,38 @@
-//
-// IFunctionResult.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq
-{
-	public interface IFunctionResult
-	{
-		object ReturnValue { get; }
-	}
-}
+//
+// IFunctionResult.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq
+{
+	public interface IFunctionResult
+	{
+		object ReturnValue { get; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/IMultipleResults.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/IMultipleResults.cs
@@ -1,39 +1,39 @@
-//
-// IMultipleResults.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-
-namespace System.Data.Linq
-{
-	public interface IMultipleResults : IFunctionResult, IDisposable
-	{
-		IEnumerable<TElement> GetResult<TElement> ();
-	}
-}
+//
+// IMultipleResults.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+
+namespace System.Data.Linq
+{
+	public interface IMultipleResults : IFunctionResult, IDisposable
+	{
+		IEnumerable<TElement> GetResult<TElement> ();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ISingleResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ISingleResult.cs
@@ -1,39 +1,39 @@
-//
-// ISingleResult.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace System.Data.Linq
-{
-	public interface ISingleResult<T> : IEnumerable<T>, IEnumerable, IFunctionResult, IDisposable
-	{
-	}
-}
+//
+// ISingleResult.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace System.Data.Linq
+{
+	public interface ISingleResult<T> : IEnumerable<T>, IEnumerable, IFunctionResult, IDisposable
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/Link.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/Link.cs
@@ -1,72 +1,72 @@
-//
-// Link.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace System.Data.Linq
-{
-	public struct Link<T>
-	{
-		[MonoTODO]
-		public Link (T value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public Link (IEnumerable<T> source)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public Link (Link<T> link)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool HasLoadedOrAssignedValue {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public bool HasValue {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public T Value {
-			get { throw new NotImplementedException (); }
-			set { throw new NotImplementedException (); }
-		}
-	}
-}
+//
+// Link.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace System.Data.Linq
+{
+	public struct Link<T>
+	{
+		[MonoTODO]
+		public Link (T value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public Link (IEnumerable<T> source)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public Link (Link<T> link)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool HasLoadedOrAssignedValue {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public bool HasValue {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public T Value {
+			get { throw new NotImplementedException (); }
+			set { throw new NotImplementedException (); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/MemberChangeConflict.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/MemberChangeConflict.cs
@@ -1,84 +1,84 @@
-//
-// MemberChangeConflict.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.ObjectModel;
-using System.Reflection;
-
-namespace System.Data.Linq
-{
-	public sealed class MemberChangeConflict
-	{
-		internal MemberChangeConflict ()
-		{
-		}
-
-		[MonoTODO]
-		public object CurrentValue {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public object DatabaseValue {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public bool IsModified {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public bool IsResolved {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public MemberInfo Member {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public object OriginalValue {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public void Resolve (object value)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Resolve (RefreshMode refreshMode)
-		{
-			throw new NotImplementedException ();
-		}
-	}
-}
+//
+// MemberChangeConflict.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.ObjectModel;
+using System.Reflection;
+
+namespace System.Data.Linq
+{
+	public sealed class MemberChangeConflict
+	{
+		internal MemberChangeConflict ()
+		{
+		}
+
+		[MonoTODO]
+		public object CurrentValue {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public object DatabaseValue {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public bool IsModified {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public bool IsResolved {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public MemberInfo Member {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public object OriginalValue {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public void Resolve (object value)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Resolve (RefreshMode refreshMode)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ModifiedMemberInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ModifiedMemberInfo.cs
@@ -1,52 +1,52 @@
-//
-// ModifiedMemberInfo.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Reflection;
-
-namespace System.Data.Linq
-{
-	public struct ModifiedMemberInfo
-	{
-		[MonoTODO]
-		public object CurrentValue {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public MemberInfo Member {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public object OriginalValue {
-			get { throw new NotImplementedException (); }
-		}
-	}
-}
+//
+// ModifiedMemberInfo.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Reflection;
+
+namespace System.Data.Linq
+{
+	public struct ModifiedMemberInfo
+	{
+		[MonoTODO]
+		public object CurrentValue {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public MemberInfo Member {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public object OriginalValue {
+			get { throw new NotImplementedException (); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ObjectChangeConflict.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/ObjectChangeConflict.cs
@@ -1,80 +1,80 @@
-//
-// ObjectChangeConflict.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.ObjectModel;
-using System.Reflection;
-
-namespace System.Data.Linq
-{
-	public sealed class ObjectChangeConflict
-	{
-		internal ObjectChangeConflict ()
-		{
-		}
-
-		[MonoTODO]
-		public bool IsDeleted {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public bool IsResolved {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public ReadOnlyCollection<MemberChangeConflict> MemberConflicts {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public object Object {
-			get { throw new NotImplementedException (); }
-		}
-
-		[MonoTODO]
-		public void Resolve ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Resolve (RefreshMode refreshMode)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Resolve (RefreshMode refreshMode, bool autoResolveDeletes)
-		{
-			throw new NotImplementedException ();
-		}
-	}
-}
+//
+// ObjectChangeConflict.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.ObjectModel;
+using System.Reflection;
+
+namespace System.Data.Linq
+{
+	public sealed class ObjectChangeConflict
+	{
+		internal ObjectChangeConflict ()
+		{
+		}
+
+		[MonoTODO]
+		public bool IsDeleted {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public bool IsResolved {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public ReadOnlyCollection<MemberChangeConflict> MemberConflicts {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public object Object {
+			get { throw new NotImplementedException (); }
+		}
+
+		[MonoTODO]
+		public void Resolve ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Resolve (RefreshMode refreshMode)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Resolve (RefreshMode refreshMode, bool autoResolveDeletes)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/AssociationAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/AssociationAttribute.cs
@@ -1,49 +1,49 @@
-//
-// AssociationAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Property|AttributeTargets.Field, AllowMultiple = false)]
-	public sealed class AssociationAttribute : DataAttribute
-	{
-		public bool DeleteOnNull { get; set; }
-
-		public string DeleteRule { get; set; }
-
-		public bool IsForeignKey { get; set; }
-
-		public bool IsUnique { get; set; }
-
-		public string OtherKey { get; set; }
-
-		public string ThisKey { get; set; }
-	}
-}
+//
+// AssociationAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Property|AttributeTargets.Field, AllowMultiple = false)]
+	public sealed class AssociationAttribute : DataAttribute
+	{
+		public bool DeleteOnNull { get; set; }
+
+		public string DeleteRule { get; set; }
+
+		public bool IsForeignKey { get; set; }
+
+		public bool IsUnique { get; set; }
+
+		public string OtherKey { get; set; }
+
+		public string ThisKey { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/AutoSync.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/AutoSync.cs
@@ -1,41 +1,41 @@
-//
-// AutoSync.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Linq.Mapping
-{
-	public enum AutoSync
-	{
-		Default,
-		Always,
-		Never,
-		OnInsert,
-		OnUpdate
-	}
-}
+//
+// AutoSync.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Linq.Mapping
+{
+	public enum AutoSync
+	{
+		Default,
+		Always,
+		Never,
+		OnInsert,
+		OnUpdate
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ColumnAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ColumnAttribute.cs
@@ -1,52 +1,52 @@
-//
-// ColumnAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Property|AttributeTargets.Field, AllowMultiple = false)]
-	public sealed class ColumnAttribute : DataAttribute
-	{
-        public ColumnAttribute()
-        {
-            CanBeNull = true;
-        }
-
-		public AutoSync AutoSync { get; set; }
-		public bool CanBeNull { get; set; }
-		public string DbType { get; set; }
-		public string Expression { get; set; }
-		public bool IsDbGenerated { get; set; }
-		public bool IsDiscriminator { get; set; }
-		public bool IsPrimaryKey { get; set; }
-		public bool IsVersion { get; set; }
-		public UpdateCheck UpdateCheck { get; set; }
-	}
-}
+//
+// ColumnAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Property|AttributeTargets.Field, AllowMultiple = false)]
+	public sealed class ColumnAttribute : DataAttribute
+	{
+        public ColumnAttribute()
+        {
+            CanBeNull = true;
+        }
+
+		public AutoSync AutoSync { get; set; }
+		public bool CanBeNull { get; set; }
+		public string DbType { get; set; }
+		public string Expression { get; set; }
+		public bool IsDbGenerated { get; set; }
+		public bool IsDiscriminator { get; set; }
+		public bool IsPrimaryKey { get; set; }
+		public bool IsVersion { get; set; }
+		public UpdateCheck UpdateCheck { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/DataAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/DataAttribute.cs
@@ -1,39 +1,39 @@
-//
-// DataAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class DataAttribute : Attribute
-	{
-		public string Name { get; set; }
-		public string Storage { get; set; }
-	}
-}
+//
+// DataAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class DataAttribute : Attribute
+	{
+		public string Name { get; set; }
+		public string Storage { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/DatabaseAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/DatabaseAttribute.cs
@@ -1,39 +1,39 @@
-//
-// DatabaseAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
-	public sealed class DatabaseAttribute : Attribute
-	{
-		public string Name { get; set; }
-	}
-}
+//
+// DatabaseAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
+	public sealed class DatabaseAttribute : Attribute
+	{
+		public string Name { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/FunctionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/FunctionAttribute.cs
@@ -1,45 +1,45 @@
-//
-// FunctionAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Linq.Expressions;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Method, AllowMultiple = false)]
-	public sealed class FunctionAttribute : Attribute
-	{
-		public bool IsComposable { get; set; }
-		public string Name { get; set; }
-	}
-}
+//
+// FunctionAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Method, AllowMultiple = false)]
+	public sealed class FunctionAttribute : Attribute
+	{
+		public bool IsComposable { get; set; }
+		public string Name { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/InheritanceMappingAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/InheritanceMappingAttribute.cs
@@ -1,41 +1,41 @@
-//
-// InheritanceMappingAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
-	public sealed class InheritanceMappingAttribute : Attribute
-	{
-		public object Code { get; set; }
-		public bool IsDefault { get; set; }
-		public Type Type { get; set; }
-	}
-}
+//
+// InheritanceMappingAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
+	public sealed class InheritanceMappingAttribute : Attribute
+	{
+		public object Code { get; set; }
+		public bool IsDefault { get; set; }
+		public Type Type { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MappingSource.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MappingSource.cs
@@ -1,56 +1,56 @@
-//
-// MappingSource.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Linq.Expressions;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MappingSource
-	{
-		Dictionary<Type, MetaModel> sources = new Dictionary<Type, MetaModel> ();
-
-		protected abstract MetaModel CreateModel (Type dataContextType);
-
-		public MetaModel GetModel (Type dataContextType)
-		{
-			MetaModel m;
-			if (!sources.TryGetValue (dataContextType, out m)) {
-				m = CreateModel (dataContextType);
-				sources [dataContextType] = m;
-			}
-			return m;
-		}
-
-	}
-}
+//
+// MappingSource.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MappingSource
+	{
+		Dictionary<Type, MetaModel> sources = new Dictionary<Type, MetaModel> ();
+
+		protected abstract MetaModel CreateModel (Type dataContextType);
+
+		public MetaModel GetModel (Type dataContextType)
+		{
+			MetaModel m;
+			if (!sources.TryGetValue (dataContextType, out m)) {
+				m = CreateModel (dataContextType);
+				sources [dataContextType] = m;
+			}
+			return m;
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaAccessor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaAccessor.cs
@@ -1,60 +1,60 @@
-//
-// MetaAccessor.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaAccessor
-	{
-		public abstract Type Type { get; }
-
-		public abstract object GetBoxedValue (object instance);
-
-		[MonoTODO]
-		public virtual bool HasAssignedValue (object instance)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public virtual bool HasLoadedValue (object instance)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public virtual bool HasValue (object instance)
-		{
-			throw new NotImplementedException ();
-		}
-
-		public abstract void SetBoxedValue (ref object instance, object value);
-	}
-}
+//
+// MetaAccessor.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaAccessor
+	{
+		public abstract Type Type { get; }
+
+		public abstract object GetBoxedValue (object instance);
+
+		[MonoTODO]
+		public virtual bool HasAssignedValue (object instance)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public virtual bool HasLoadedValue (object instance)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public virtual bool HasValue (object instance)
+		{
+			throw new NotImplementedException ();
+		}
+
+		public abstract void SetBoxedValue (ref object instance, object value);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaAccessor_2.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaAccessor_2.cs
@@ -1,56 +1,56 @@
-//
-// MetaAccessor_2.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaAccessor<TEntity, TMember> : MetaAccessor
-	{
-		public override Type Type {
-			get { return typeof (TEntity); }
-		}
-
-		public override object GetBoxedValue (object instance)
-		{
-			return GetValue ((TEntity) instance);
-		}
-
-		public abstract TMember GetValue (TEntity instance);
-
-		public override void SetBoxedValue (ref object instance, object value)
-		{
-			TEntity ent = (TEntity) instance;
-			SetValue (ref ent, (TMember) value);
-			instance = ent;
-		}
-
-		public abstract void SetValue (ref TEntity instance, TMember value);
-	}
-}
+//
+// MetaAccessor_2.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaAccessor<TEntity, TMember> : MetaAccessor
+	{
+		public override Type Type {
+			get { return typeof (TEntity); }
+		}
+
+		public override object GetBoxedValue (object instance)
+		{
+			return GetValue ((TEntity) instance);
+		}
+
+		public abstract TMember GetValue (TEntity instance);
+
+		public override void SetBoxedValue (ref object instance, object value)
+		{
+			TEntity ent = (TEntity) instance;
+			SetValue (ref ent, (TMember) value);
+			instance = ent;
+		}
+
+		public abstract void SetValue (ref TEntity instance, TMember value);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaAssociation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaAssociation.cs
@@ -1,51 +1,51 @@
-//
-// MetaAssociation.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.ObjectModel;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaAssociation
-	{
-		public abstract bool DeleteOnNull { get; }
-		public abstract string DeleteRule { get; }
-		public abstract bool IsForeignKey { get; }
-		public abstract bool IsMany { get; }
-		public abstract bool IsNullable { get; }
-		public abstract bool IsUnique { get; }
-		public abstract ReadOnlyCollection<MetaDataMember> OtherKey { get; }
-		public abstract bool OtherKeyIsPrimaryKey { get; }
-		public abstract MetaDataMember OtherMember { get; }
-		public abstract MetaType OtherType { get; }
-		public abstract ReadOnlyCollection<MetaDataMember> ThisKey { get; }
-		public abstract bool ThisKeyIsPrimaryKey { get; }
-		public abstract MetaDataMember ThisMember { get; }
-	}
-}
+//
+// MetaAssociation.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.ObjectModel;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaAssociation
+	{
+		public abstract bool DeleteOnNull { get; }
+		public abstract string DeleteRule { get; }
+		public abstract bool IsForeignKey { get; }
+		public abstract bool IsMany { get; }
+		public abstract bool IsNullable { get; }
+		public abstract bool IsUnique { get; }
+		public abstract ReadOnlyCollection<MetaDataMember> OtherKey { get; }
+		public abstract bool OtherKeyIsPrimaryKey { get; }
+		public abstract MetaDataMember OtherMember { get; }
+		public abstract MetaType OtherType { get; }
+		public abstract ReadOnlyCollection<MetaDataMember> ThisKey { get; }
+		public abstract bool ThisKeyIsPrimaryKey { get; }
+		public abstract MetaDataMember ThisMember { get; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaDataMember.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaDataMember.cs
@@ -1,66 +1,66 @@
-//
-// MetaDataMember.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.ObjectModel;
-using System.Reflection;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaDataMember
-	{
-		public abstract MetaAssociation Association { get; }
-		public abstract AutoSync AutoSync { get; }
-		public abstract bool CanBeNull { get; }
-		public abstract string DbType { get; }
-		public abstract MetaType DeclaringType { get; }
-		public abstract MetaAccessor DeferredSourceAccessor { get; }
-		public abstract MetaAccessor DeferredValueAccessor { get; }
-		public abstract string Expression { get; }
-		public abstract bool IsAssociation { get; }
-		public abstract bool IsDbGenerated { get; }
-		public abstract bool IsDeferred { get; }
-		public abstract bool IsDiscriminator { get; }
-		public abstract bool IsPersistent { get; }
-		public abstract bool IsPrimaryKey { get; }
-		public abstract bool IsVersion { get; }
-		public abstract MethodInfo LoadMethod { get; }
-		public abstract string MappedName { get; }
-		public abstract MemberInfo Member { get; }
-		public abstract MetaAccessor MemberAccessor { get; }
-		public abstract string Name { get; }
-		public abstract int Ordinal { get; }
-		public abstract MetaAccessor StorageAccessor { get; }
-		public abstract MemberInfo StorageMember { get; }
-		public abstract Type Type { get; }
-		public abstract UpdateCheck UpdateCheck { get; }
-
-		public abstract bool IsDeclaredBy (MetaType type);
-	}
-}
+//
+// MetaDataMember.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.ObjectModel;
+using System.Reflection;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaDataMember
+	{
+		public abstract MetaAssociation Association { get; }
+		public abstract AutoSync AutoSync { get; }
+		public abstract bool CanBeNull { get; }
+		public abstract string DbType { get; }
+		public abstract MetaType DeclaringType { get; }
+		public abstract MetaAccessor DeferredSourceAccessor { get; }
+		public abstract MetaAccessor DeferredValueAccessor { get; }
+		public abstract string Expression { get; }
+		public abstract bool IsAssociation { get; }
+		public abstract bool IsDbGenerated { get; }
+		public abstract bool IsDeferred { get; }
+		public abstract bool IsDiscriminator { get; }
+		public abstract bool IsPersistent { get; }
+		public abstract bool IsPrimaryKey { get; }
+		public abstract bool IsVersion { get; }
+		public abstract MethodInfo LoadMethod { get; }
+		public abstract string MappedName { get; }
+		public abstract MemberInfo Member { get; }
+		public abstract MetaAccessor MemberAccessor { get; }
+		public abstract string Name { get; }
+		public abstract int Ordinal { get; }
+		public abstract MetaAccessor StorageAccessor { get; }
+		public abstract MemberInfo StorageMember { get; }
+		public abstract Type Type { get; }
+		public abstract UpdateCheck UpdateCheck { get; }
+
+		public abstract bool IsDeclaredBy (MetaType type);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaFunction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaFunction.cs
@@ -1,48 +1,48 @@
-//
-// MetaFunction.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.ObjectModel;
-using System.Reflection;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaFunction
-	{
-		public abstract bool HasMultipleResults { get; }
-		public abstract bool IsComposable { get; }
-		public abstract string MappedName { get; }
-		public abstract MethodInfo Method { get; }
-		public abstract MetaModel Model { get; }
-		public abstract string Name { get; }
-		public abstract ReadOnlyCollection<MetaParameter> Parameters { get; }
-		public abstract ReadOnlyCollection<MetaType> ResultRowTypes { get; }
-		public abstract MetaParameter ReturnParameter { get; }
-	}
-}
+//
+// MetaFunction.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.ObjectModel;
+using System.Reflection;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaFunction
+	{
+		public abstract bool HasMultipleResults { get; }
+		public abstract bool IsComposable { get; }
+		public abstract string MappedName { get; }
+		public abstract MethodInfo Method { get; }
+		public abstract MetaModel Model { get; }
+		public abstract string Name { get; }
+		public abstract ReadOnlyCollection<MetaParameter> Parameters { get; }
+		public abstract ReadOnlyCollection<MetaType> ResultRowTypes { get; }
+		public abstract MetaParameter ReturnParameter { get; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaModel.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaModel.cs
@@ -1,49 +1,49 @@
-//
-// MetaModel.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaModel
-	{
-		public abstract Type ContextType { get; }
-		public abstract string DatabaseName { get; }
-		public abstract MappingSource MappingSource { get; }
-		public abstract Type ProviderType { get; }
-
-		public abstract MetaFunction GetFunction (MethodInfo method);
-		public abstract IEnumerable<MetaFunction> GetFunctions ();
-		public abstract MetaType GetMetaType (Type type);
-		public abstract MetaTable GetTable (Type rowType);
-		public abstract IEnumerable<MetaTable> GetTables ();
-	}
-}
+//
+// MetaModel.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaModel
+	{
+		public abstract Type ContextType { get; }
+		public abstract string DatabaseName { get; }
+		public abstract MappingSource MappingSource { get; }
+		public abstract Type ProviderType { get; }
+
+		public abstract MetaFunction GetFunction (MethodInfo method);
+		public abstract IEnumerable<MetaFunction> GetFunctions ();
+		public abstract MetaType GetMetaType (Type type);
+		public abstract MetaTable GetTable (Type rowType);
+		public abstract IEnumerable<MetaTable> GetTables ();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaParameter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaParameter.cs
@@ -1,44 +1,44 @@
-//
-// MetaParameter.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaParameter
-	{
-		public abstract string DbType { get; }
-		public abstract string MappedName { get; }
-		public abstract string Name { get; }
-		public abstract ParameterInfo Parameter { get; }
-		public abstract Type ParameterType { get; }
-	}
-}
+//
+// MetaParameter.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaParameter
+	{
+		public abstract string DbType { get; }
+		public abstract string MappedName { get; }
+		public abstract string Name { get; }
+		public abstract ParameterInfo Parameter { get; }
+		public abstract Type ParameterType { get; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaTable.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaTable.cs
@@ -1,45 +1,45 @@
-//
-// MetaTable.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaTable
-	{
-		public abstract MethodInfo DeleteMethod { get; }
-		public abstract MethodInfo InsertMethod { get; }
-		public abstract MetaModel Model { get; }
-		public abstract MetaType RowType { get; }
-		public abstract string TableName { get; }
-		public abstract MethodInfo UpdateMethod { get; }
-	}
-}
+//
+// MetaTable.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaTable
+	{
+		public abstract MethodInfo DeleteMethod { get; }
+		public abstract MethodInfo InsertMethod { get; }
+		public abstract MetaModel Model { get; }
+		public abstract MetaType RowType { get; }
+		public abstract string TableName { get; }
+		public abstract MethodInfo UpdateMethod { get; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/MetaType.cs
@@ -1,71 +1,71 @@
-//
-// MetaType.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Reflection;
-
-namespace System.Data.Linq.Mapping
-{
-	public abstract class MetaType
-	{
-		public abstract ReadOnlyCollection<MetaAssociation> Associations { get; }
-		public abstract bool CanInstantiate { get; }
-		public abstract ReadOnlyCollection<MetaDataMember> DataMembers { get; }
-		public abstract MetaDataMember DBGeneratedIdentityMember { get; }
-		public abstract ReadOnlyCollection<MetaType> DerivedTypes { get; }
-		public abstract MetaDataMember Discriminator { get; }
-		public abstract bool HasAnyLoadMethod { get; }
-		public abstract bool HasAnyValidateMethod { get; }
-		public abstract bool HasInheritance { get; }
-		public abstract bool HasInheritanceCode { get; }
-		public abstract bool HasUpdateCheck { get; }
-		public abstract ReadOnlyCollection<MetaDataMember> IdentityMembers { get; }
-		public abstract MetaType InheritanceBase { get; }
-		public abstract object InheritanceCode { get; }
-		public abstract MetaType InheritanceDefault { get; }
-		public abstract MetaType InheritanceRoot { get; }
-		public abstract ReadOnlyCollection<MetaType> InheritanceTypes { get; }
-		public abstract bool IsEntity { get; }
-		public abstract bool IsInheritanceDefault { get; }
-		public abstract MetaModel Model { get; }
-		public abstract string Name { get; }
-		public abstract MethodInfo OnLoadedMethod { get; }
-		public abstract MethodInfo OnValidateMethod { get; }
-		public abstract ReadOnlyCollection<MetaDataMember> PersistentDataMembers { get; }
-		public abstract MetaTable Table { get; }
-		public abstract Type Type { get; }
-		public abstract MetaDataMember VersionMember { get; }
-
-		public abstract MetaDataMember GetDataMember (MemberInfo member);
-		public abstract MetaType GetInheritanceType (Type type);
-		public abstract MetaType GetTypeForInheritanceCode (object code);
-	}
-}
+//
+// MetaType.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Reflection;
+
+namespace System.Data.Linq.Mapping
+{
+	public abstract class MetaType
+	{
+		public abstract ReadOnlyCollection<MetaAssociation> Associations { get; }
+		public abstract bool CanInstantiate { get; }
+		public abstract ReadOnlyCollection<MetaDataMember> DataMembers { get; }
+		public abstract MetaDataMember DBGeneratedIdentityMember { get; }
+		public abstract ReadOnlyCollection<MetaType> DerivedTypes { get; }
+		public abstract MetaDataMember Discriminator { get; }
+		public abstract bool HasAnyLoadMethod { get; }
+		public abstract bool HasAnyValidateMethod { get; }
+		public abstract bool HasInheritance { get; }
+		public abstract bool HasInheritanceCode { get; }
+		public abstract bool HasUpdateCheck { get; }
+		public abstract ReadOnlyCollection<MetaDataMember> IdentityMembers { get; }
+		public abstract MetaType InheritanceBase { get; }
+		public abstract object InheritanceCode { get; }
+		public abstract MetaType InheritanceDefault { get; }
+		public abstract MetaType InheritanceRoot { get; }
+		public abstract ReadOnlyCollection<MetaType> InheritanceTypes { get; }
+		public abstract bool IsEntity { get; }
+		public abstract bool IsInheritanceDefault { get; }
+		public abstract MetaModel Model { get; }
+		public abstract string Name { get; }
+		public abstract MethodInfo OnLoadedMethod { get; }
+		public abstract MethodInfo OnValidateMethod { get; }
+		public abstract ReadOnlyCollection<MetaDataMember> PersistentDataMembers { get; }
+		public abstract MetaTable Table { get; }
+		public abstract Type Type { get; }
+		public abstract MetaDataMember VersionMember { get; }
+
+		public abstract MetaDataMember GetDataMember (MemberInfo member);
+		public abstract MetaType GetInheritanceType (Type type);
+		public abstract MetaType GetTypeForInheritanceCode (object code);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ParameterAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ParameterAttribute.cs
@@ -1,40 +1,40 @@
-//
-// ParameterAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Parameter|AttributeTargets.ReturnValue, AllowMultiple = false)]
-	public sealed class ParameterAttribute : Attribute
-	{
-		public string DbType { get; set; }
-		public string Name { get; set; }
-	}
-}
+//
+// ParameterAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Parameter|AttributeTargets.ReturnValue, AllowMultiple = false)]
+	public sealed class ParameterAttribute : Attribute
+	{
+		public string DbType { get; set; }
+		public string Name { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ProviderAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ProviderAttribute.cs
@@ -1,54 +1,54 @@
-//
-// ProviderAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
-	public sealed class ProviderAttribute : Attribute
-	{
-		public ProviderAttribute ()
-		{
-		}
-
-		public ProviderAttribute (Type type)
-		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			this.type = type;
-		}
-
-		Type type;
-
-		public Type Type {
-			get { return type; }
-		}
-	}
-}
+//
+// ProviderAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false)]
+	public sealed class ProviderAttribute : Attribute
+	{
+		public ProviderAttribute ()
+		{
+		}
+
+		public ProviderAttribute (Type type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			this.type = type;
+		}
+
+		Type type;
+
+		public Type Type {
+			get { return type; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ResultTypeAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/ResultTypeAttribute.cs
@@ -1,50 +1,50 @@
-//
-// ResultTypeAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Method, AllowMultiple = true)]
-	public sealed class ResultTypeAttribute : Attribute
-	{
-		public ResultTypeAttribute (Type type)
-		{
-			if (type == null)
-				throw new ArgumentNullException ("type");
-			this.type = type;
-		}
-
-		Type type;
-
-		public Type Type {
-			get { return type; }
-		}
-	}
-}
+//
+// ResultTypeAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Method, AllowMultiple = true)]
+	public sealed class ResultTypeAttribute : Attribute
+	{
+		public ResultTypeAttribute (Type type)
+		{
+			if (type == null)
+				throw new ArgumentNullException ("type");
+			this.type = type;
+		}
+
+		Type type;
+
+		public Type Type {
+			get { return type; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/TableAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/TableAttribute.cs
@@ -1,39 +1,39 @@
-//
-// TableAttribute.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.Mapping
-{
-	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
-	public sealed class TableAttribute : Attribute
-	{
-		public string Name { get; set; }
-	}
-}
+//
+// TableAttribute.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.Mapping
+{
+	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
+	public sealed class TableAttribute : Attribute
+	{
+		public string Name { get; set; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/UpdateCheck.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.Mapping/UpdateCheck.cs
@@ -1,39 +1,39 @@
-//
-// UpdateCheck.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Linq.Mapping
-{
-	public enum UpdateCheck
-	{
-		Always,
-		Never,
-		WhenChanged
-	}
-}
+//
+// UpdateCheck.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Linq.Mapping
+{
+	public enum UpdateCheck
+	{
+		Always,
+		Never,
+		WhenChanged
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient.Implementation/ObjectMaterializer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient.Implementation/ObjectMaterializer.cs
@@ -1,100 +1,100 @@
-//
-// ObjectMaterializer.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Data.Common;
-using System.Linq;
-
-namespace System.Data.Linq.SqlClient.Implementation
-{
-	public abstract class ObjectMaterializer<TDataReader> where TDataReader : DbDataReader
-	{
-        [MonoTODO]
-        public ObjectMaterializer()
-        {
-            throw new NotImplementedException();
-        }
-
-		[MonoTODO]
-		public static IEnumerable<TOutput> Convert<TOutput> (IEnumerable source)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static IGrouping<TKey, TElement> CreateGroup<TKey, TElement> (TKey key, IEnumerable<TElement> items)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static IOrderedEnumerable<TElement> CreateOrderedEnumerable<TElement> (IEnumerable<TElement> items)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static Exception ErrorAssignmentToNull (Type type)
-		{
-			throw new NotImplementedException ();
-		}
-
-		// instance members
-
-		[MonoTODO]
-		public object [] Arguments;
-
-		[MonoTODO]
-		public DbDataReader BufferReader;
-
-		[MonoTODO]
-		public TDataReader DataReader;
-
-		[MonoTODO]
-		public object [] Globals;
-
-		[MonoTODO]
-		public object [] Locals;
-
-		[MonoTODO]
-		public int[] Ordinals;
-
-		[MonoTODO]
-		public abstract bool CanDeferLoad { get; }
-
-		public abstract IEnumerable ExecuteSubQuery (int iSubQuery, object [] args);
-		public abstract IEnumerable<T> GetLinkSource<T> (int globalLink, int localFactory, object [] keyValues);
-		public abstract IEnumerable<T> GetNestedLinkSource<T> (int globalLink, int localFactory, object instance);
-		public abstract object InsertLookup (int globalMetaType, object instance);
-		public abstract bool Read ();
-		public abstract void SendEntityMaterialized (int globalMetaType, object instance);
-	}
-}
+//
+// ObjectMaterializer.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Data.Common;
+using System.Linq;
+
+namespace System.Data.Linq.SqlClient.Implementation
+{
+	public abstract class ObjectMaterializer<TDataReader> where TDataReader : DbDataReader
+	{
+        [MonoTODO]
+        public ObjectMaterializer()
+        {
+            throw new NotImplementedException();
+        }
+
+		[MonoTODO]
+		public static IEnumerable<TOutput> Convert<TOutput> (IEnumerable source)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static IGrouping<TKey, TElement> CreateGroup<TKey, TElement> (TKey key, IEnumerable<TElement> items)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static IOrderedEnumerable<TElement> CreateOrderedEnumerable<TElement> (IEnumerable<TElement> items)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static Exception ErrorAssignmentToNull (Type type)
+		{
+			throw new NotImplementedException ();
+		}
+
+		// instance members
+
+		[MonoTODO]
+		public object [] Arguments;
+
+		[MonoTODO]
+		public DbDataReader BufferReader;
+
+		[MonoTODO]
+		public TDataReader DataReader;
+
+		[MonoTODO]
+		public object [] Globals;
+
+		[MonoTODO]
+		public object [] Locals;
+
+		[MonoTODO]
+		public int[] Ordinals;
+
+		[MonoTODO]
+		public abstract bool CanDeferLoad { get; }
+
+		public abstract IEnumerable ExecuteSubQuery (int iSubQuery, object [] args);
+		public abstract IEnumerable<T> GetLinkSource<T> (int globalLink, int localFactory, object [] keyValues);
+		public abstract IEnumerable<T> GetNestedLinkSource<T> (int globalLink, int localFactory, object instance);
+		public abstract object InsertLookup (int globalMetaType, object instance);
+		public abstract bool Read ();
+		public abstract void SendEntityMaterialized (int globalMetaType, object instance);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/Sql2000Provider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/Sql2000Provider.cs
@@ -1,38 +1,38 @@
-//
-// Sql2000Provider.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.SqlClient
-{
-	[MonoTODO]
-	public sealed class Sql2000Provider : SqlProvider
-	{
-	}
-}
+//
+// Sql2000Provider.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.SqlClient
+{
+	[MonoTODO]
+	public sealed class Sql2000Provider : SqlProvider
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/Sql2005Provider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/Sql2005Provider.cs
@@ -1,38 +1,38 @@
-//
-// Sql2000Provider.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.SqlClient
-{
-	[MonoTODO]
-	public sealed class Sql2005Provider : SqlProvider
-	{
-	}
-}
+//
+// Sql2000Provider.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.SqlClient
+{
+	[MonoTODO]
+	public sealed class Sql2005Provider : SqlProvider
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/SqlHelpers.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/SqlHelpers.cs
@@ -1,60 +1,60 @@
-//
-// SqlHelpers.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.SqlClient
-{
-	public static class SqlHelpers
-	{
-		[MonoTODO]
-		public static string GetStringContainsPattern (string text, char escape)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static string GetStringEndsWithPattern (string text, char escape)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static string GetStringStartsWithPattern (string text, char escape)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static string TranslateVBLikePattern (string pattern, char escape)
-		{
-			throw new NotImplementedException ();
-		}
-	}
-}
+//
+// SqlHelpers.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.SqlClient
+{
+	public static class SqlHelpers
+	{
+		[MonoTODO]
+		public static string GetStringContainsPattern (string text, char escape)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static string GetStringEndsWithPattern (string text, char escape)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static string GetStringStartsWithPattern (string text, char escape)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static string TranslateVBLikePattern (string pattern, char escape)
+		{
+			throw new NotImplementedException ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/SqlMethods.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/SqlMethods.cs
@@ -1,273 +1,273 @@
-//
-// SqlMethods.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.SqlClient
-{
-	public static class SqlMethods
-	{
-        static Exception NotSupported()
-        {
-            return new NotSupportedException("The method in SqlMethods type cannot be used directly. It is only for Linq to SQL trsnslation");
-        }
-
-        [MonoTODO]
-		public static int DateDiffDay (DateTime startDate, DateTime endDate)
-		{
-            throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffDay (DateTime? startDate, DateTime? endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int DateDiffHour (DateTime startDate, DateTime endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int? DateDiffHour (DateTime? startDate, DateTime? endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int DateDiffMillisecond (DateTime startDate, DateTime endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int? DateDiffMillisecond (DateTime? startDate, DateTime? endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int DateDiffMinute (DateTime startDate, DateTime endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int? DateDiffMinute (DateTime? startDate, DateTime? endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int DateDiffMonth (DateTime startDate, DateTime endDate)
-		{
-            throw NotSupported();
-        }
-
-		[MonoTODO]
-		public static int? DateDiffMonth (DateTime? startDate, DateTime? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffSecond (DateTime startDate, DateTime endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffSecond (DateTime? startDate, DateTime? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffYear (DateTime startDate, DateTime endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffYear (DateTime? startDate, DateTime? endDate)
-		{
-			throw NotSupported();
-		}
-
-		#region .NET 3.5 SP1 (DateTimeOffset)
-
-		[MonoTODO]
-		public static int DateDiffMicrosecond (DateTime startDate, DateTime endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffMicrosecond (DateTime? startDate, DateTime? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffNanosecond (DateTime startDate, DateTime endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffNanosecond (DateTime? startDate, DateTime? endDate)
-		{
-			throw NotSupported();
-		}
-
-
-		[MonoTODO]
-		public static int DateDiffDay (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffDay (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffHour (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffHour (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffMicrosecond (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffMicrosecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffMillisecond (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffMillisecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffMinute (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffMinute (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffMonth (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffMonth (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffNanosecond (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffNanosecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffSecond (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffSecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int DateDiffYear (DateTimeOffset startDate, DateTimeOffset endDate)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static int? DateDiffYear (DateTimeOffset? startDate, DateTimeOffset? endDate)
-		{
-			throw NotSupported();
-		}
-		#endregion
-
-		[MonoTODO]
-		public static bool Like (string matchExpression, string pattern)
-		{
-			throw NotSupported();
-		}
-
-		[MonoTODO]
-		public static bool Like (string matchExpression, string pattern, char escapeCharacter)
-		{
-			throw NotSupported();
-		}
-	}
-}
+//
+// SqlMethods.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.SqlClient
+{
+	public static class SqlMethods
+	{
+        static Exception NotSupported()
+        {
+            return new NotSupportedException("The method in SqlMethods type cannot be used directly. It is only for Linq to SQL trsnslation");
+        }
+
+        [MonoTODO]
+		public static int DateDiffDay (DateTime startDate, DateTime endDate)
+		{
+            throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffDay (DateTime? startDate, DateTime? endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int DateDiffHour (DateTime startDate, DateTime endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int? DateDiffHour (DateTime? startDate, DateTime? endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int DateDiffMillisecond (DateTime startDate, DateTime endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int? DateDiffMillisecond (DateTime? startDate, DateTime? endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int DateDiffMinute (DateTime startDate, DateTime endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int? DateDiffMinute (DateTime? startDate, DateTime? endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int DateDiffMonth (DateTime startDate, DateTime endDate)
+		{
+            throw NotSupported();
+        }
+
+		[MonoTODO]
+		public static int? DateDiffMonth (DateTime? startDate, DateTime? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffSecond (DateTime startDate, DateTime endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffSecond (DateTime? startDate, DateTime? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffYear (DateTime startDate, DateTime endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffYear (DateTime? startDate, DateTime? endDate)
+		{
+			throw NotSupported();
+		}
+
+		#region .NET 3.5 SP1 (DateTimeOffset)
+
+		[MonoTODO]
+		public static int DateDiffMicrosecond (DateTime startDate, DateTime endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffMicrosecond (DateTime? startDate, DateTime? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffNanosecond (DateTime startDate, DateTime endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffNanosecond (DateTime? startDate, DateTime? endDate)
+		{
+			throw NotSupported();
+		}
+
+
+		[MonoTODO]
+		public static int DateDiffDay (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffDay (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffHour (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffHour (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffMicrosecond (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffMicrosecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffMillisecond (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffMillisecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffMinute (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffMinute (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffMonth (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffMonth (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffNanosecond (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffNanosecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffSecond (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffSecond (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int DateDiffYear (DateTimeOffset startDate, DateTimeOffset endDate)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static int? DateDiffYear (DateTimeOffset? startDate, DateTimeOffset? endDate)
+		{
+			throw NotSupported();
+		}
+		#endregion
+
+		[MonoTODO]
+		public static bool Like (string matchExpression, string pattern)
+		{
+			throw NotSupported();
+		}
+
+		[MonoTODO]
+		public static bool Like (string matchExpression, string pattern, char escapeCharacter)
+		{
+			throw NotSupported();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/SqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/System.Data.Linq/System.Data.Linq.SqlClient/SqlProvider.cs
@@ -1,46 +1,46 @@
-//
-// SqlProvider.cs
-//
-// Author:
-//   Atsushi Enomoto  <atsushi@ximian.com>
-//
-// Copyright (C) 2008 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Data.Linq.SqlClient
-{
-	[MonoTODO]
-	public class SqlProvider : IDisposable
-	{
-		public void Dispose ()
-		{
-			Dispose (true);
-		}
-
-		protected virtual void Dispose (bool disposing)
-		{
-		}
-	}
-}
+//
+// SqlProvider.cs
+//
+// Author:
+//   Atsushi Enomoto  <atsushi@ximian.com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Data.Linq.SqlClient
+{
+	[MonoTODO]
+	public class SqlProvider : IDisposable
+	{
+		public void Dispose ()
+		{
+			Dispose (true);
+		}
+
+		protected virtual void Dispose (bool disposing)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/AssemblyInfo.cs
@@ -1,23 +1,23 @@
-﻿using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinqTest")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("DbLinqTest")]
-[assembly: AssemblyCopyright("Copyright ©  2008")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM componenets.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("52112670-1196-4229-ae51-535cf23869cb")]
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinqTest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DbLinqTest")]
+[assembly: AssemblyCopyright("Copyright ©  2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM componenets.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("52112670-1196-4229-ae51-535cf23869cb")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/AttributeMappingSourceTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/AttributeMappingSourceTest.cs
@@ -1,82 +1,82 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Data.SqlClient;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-
-using System.Data.Linq.Mapping;
-
-#if MONO_STRICT
-using System.Data.Linq;
-using AttributeMappingSource = System.Data.Linq.Mapping.AttributeMappingSource;
-#else
-using DbLinq.Data.Linq;
-using AttributeMappingSource = DbLinq.Data.Linq.Mapping.AttributeMappingSource;
-#endif
-
-using DbLinq.Null;
-using NUnit.Framework;
-
-namespace DbLinqTest
-{
-    [Table(Name = "dbo...FooTable")]
-    class Foo
-    {
-        [Column(Name="Col1")]
-        public string Column1 { get; set; }
-    }
-
-    [Database(Name = "MyDB1")]
-    class MyDataContext2 : DataContext
-    {
-        public MyDataContext2()
-            : base(new SqlConnection("Data Source=localhost"))
-        {
-        }
-
-        public Table<Foo> FooTable { get { return GetTable<Foo>(); } }
-        public Table<Foo> FooFieldTable;
-    }
-
-    [TestFixture]
-    public class AttributeMappingSourceTest
-    {
-        [Test]
-        public void CreateModel_GetTables_Has_No_Duplicates()
-        {
-            var model = new AttributeMappingSource().GetModel(typeof(MyDataContext2));
-            var tables = model.GetTables().ToList();
-            Assert.AreEqual(1, tables.Count);
-            Assert.AreEqual("dbo...FooTable", tables[0].TableName);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data.SqlClient;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+
+using System.Data.Linq.Mapping;
+
+#if MONO_STRICT
+using System.Data.Linq;
+using AttributeMappingSource = System.Data.Linq.Mapping.AttributeMappingSource;
+#else
+using DbLinq.Data.Linq;
+using AttributeMappingSource = DbLinq.Data.Linq.Mapping.AttributeMappingSource;
+#endif
+
+using DbLinq.Null;
+using NUnit.Framework;
+
+namespace DbLinqTest
+{
+    [Table(Name = "dbo...FooTable")]
+    class Foo
+    {
+        [Column(Name="Col1")]
+        public string Column1 { get; set; }
+    }
+
+    [Database(Name = "MyDB1")]
+    class MyDataContext2 : DataContext
+    {
+        public MyDataContext2()
+            : base(new SqlConnection("Data Source=localhost"))
+        {
+        }
+
+        public Table<Foo> FooTable { get { return GetTable<Foo>(); } }
+        public Table<Foo> FooFieldTable;
+    }
+
+    [TestFixture]
+    public class AttributeMappingSourceTest
+    {
+        [Test]
+        public void CreateModel_GetTables_Has_No_Duplicates()
+        {
+            var model = new AttributeMappingSource().GetModel(typeof(MyDataContext2));
+            var tables = model.GetTables().ToList();
+            Assert.AreEqual(1, tables.Count);
+            Assert.AreEqual("dbo...FooTable", tables[0].TableName);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/BinaryTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/BinaryTest.cs
@@ -1,138 +1,138 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq;
-using System.Text;
-
-using System.Data.Linq;
-
-using NUnit.Framework;
-
-namespace DbLinqTest
-{
-    [TestFixture]
-    public class BinaryTest
-    {
-        // XXX: oddly, MSDN documents that while ArgumentNullException is 
-        //      thrown, that may change in the future.  Why would this change?
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Constructor_ValueNull()
-        {
-            new Binary(null);
-        }
-
-        [Test]
-        public void Constructor()
-        {
-            new Binary(Encoding.UTF8.GetBytes("hello!"));
-        }
-
-        [Test]
-        public void Equals()
-        {
-            Binary a = new Binary(Encoding.UTF8.GetBytes("a"));
-            Assert.IsFalse(a.Equals((Binary)null));
-            Assert.IsFalse(a.Equals((object)null));
-            Assert.IsFalse(a.Equals(new Binary(Encoding.UTF8.GetBytes("b"))));
-            Assert.IsTrue(a.Equals(a));
-            Assert.IsTrue(a.Equals(new Binary(Encoding.UTF8.GetBytes("a"))));
-        }
-
-        [Test]
-        public void Equality()
-        {
-            Binary a    = new Binary(Encoding.UTF8.GetBytes("a"));
-            Binary a2   = new Binary(Encoding.UTF8.GetBytes("a"));
-            Binary b    = new Binary(Encoding.UTF8.GetBytes("b"));
-
-            Assert.IsTrue(a == a);
-            Assert.IsTrue(a == a2);
-            Assert.IsFalse(a == null);
-            Assert.IsFalse(null == a);
-            Assert.IsFalse(a == b);
-            Assert.IsFalse(b == a);
-
-            a = null;
-            b = null;
-            Assert.IsTrue(a == b);
-        }
-
-        [Test]
-        public void Inequality()
-        {
-            Binary a    = new Binary(Encoding.UTF8.GetBytes("a"));
-            Binary a2   = new Binary(Encoding.UTF8.GetBytes("a"));
-            Binary b    = new Binary(Encoding.UTF8.GetBytes("b"));
-
-            Assert.IsFalse(a != a);
-            Assert.IsFalse(a != a2);
-            Assert.IsTrue(a != null);
-            Assert.IsTrue(null != a);
-            Assert.IsTrue(a != b);
-            Assert.IsTrue(b != a);
-
-            a = null;
-            b = null;
-            Assert.IsFalse(a != b);
-        }
-
-        [Test]
-        public void GetHashCode()
-        {
-            Binary a = new Binary(Encoding.UTF8.GetBytes("a"));
-            Binary b = new Binary(Encoding.UTF8.GetBytes("a"));
-            Assert.AreEqual(a.GetHashCode(), b.GetHashCode());
-        }
-
-        [Test]
-        public void Length()
-        {
-            byte[] data = Encoding.UTF8.GetBytes("Hello, world!");
-            Binary b = new Binary(data);
-            Assert.AreEqual(data.Length, b.Length);
-        }
-
-        [Test]
-        public void ToArray()
-        {
-            byte[] data = Encoding.UTF8.GetBytes("is the array copied?  Yes.");
-            Binary b = new Binary(data);
-            Assert.IsTrue(data.SequenceEqual(b.ToArray()));
-
-            data[0] = (byte) 'I';
-            Assert.IsFalse(data.SequenceEqual(b.ToArray()));
-        }
-
-        [Test]
-        public new void ToString()
-        {
-            byte[] data = new byte[] { 0x1, 0x2, 0x3, 0x4 };
-            Binary b = new Binary(data);
-            Assert.AreEqual('"' + Convert.ToBase64String(data) + '"', b.ToString());
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq;
+using System.Text;
+
+using System.Data.Linq;
+
+using NUnit.Framework;
+
+namespace DbLinqTest
+{
+    [TestFixture]
+    public class BinaryTest
+    {
+        // XXX: oddly, MSDN documents that while ArgumentNullException is 
+        //      thrown, that may change in the future.  Why would this change?
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Constructor_ValueNull()
+        {
+            new Binary(null);
+        }
+
+        [Test]
+        public void Constructor()
+        {
+            new Binary(Encoding.UTF8.GetBytes("hello!"));
+        }
+
+        [Test]
+        public void Equals()
+        {
+            Binary a = new Binary(Encoding.UTF8.GetBytes("a"));
+            Assert.IsFalse(a.Equals((Binary)null));
+            Assert.IsFalse(a.Equals((object)null));
+            Assert.IsFalse(a.Equals(new Binary(Encoding.UTF8.GetBytes("b"))));
+            Assert.IsTrue(a.Equals(a));
+            Assert.IsTrue(a.Equals(new Binary(Encoding.UTF8.GetBytes("a"))));
+        }
+
+        [Test]
+        public void Equality()
+        {
+            Binary a    = new Binary(Encoding.UTF8.GetBytes("a"));
+            Binary a2   = new Binary(Encoding.UTF8.GetBytes("a"));
+            Binary b    = new Binary(Encoding.UTF8.GetBytes("b"));
+
+            Assert.IsTrue(a == a);
+            Assert.IsTrue(a == a2);
+            Assert.IsFalse(a == null);
+            Assert.IsFalse(null == a);
+            Assert.IsFalse(a == b);
+            Assert.IsFalse(b == a);
+
+            a = null;
+            b = null;
+            Assert.IsTrue(a == b);
+        }
+
+        [Test]
+        public void Inequality()
+        {
+            Binary a    = new Binary(Encoding.UTF8.GetBytes("a"));
+            Binary a2   = new Binary(Encoding.UTF8.GetBytes("a"));
+            Binary b    = new Binary(Encoding.UTF8.GetBytes("b"));
+
+            Assert.IsFalse(a != a);
+            Assert.IsFalse(a != a2);
+            Assert.IsTrue(a != null);
+            Assert.IsTrue(null != a);
+            Assert.IsTrue(a != b);
+            Assert.IsTrue(b != a);
+
+            a = null;
+            b = null;
+            Assert.IsFalse(a != b);
+        }
+
+        [Test]
+        public void GetHashCode()
+        {
+            Binary a = new Binary(Encoding.UTF8.GetBytes("a"));
+            Binary b = new Binary(Encoding.UTF8.GetBytes("a"));
+            Assert.AreEqual(a.GetHashCode(), b.GetHashCode());
+        }
+
+        [Test]
+        public void Length()
+        {
+            byte[] data = Encoding.UTF8.GetBytes("Hello, world!");
+            Binary b = new Binary(data);
+            Assert.AreEqual(data.Length, b.Length);
+        }
+
+        [Test]
+        public void ToArray()
+        {
+            byte[] data = Encoding.UTF8.GetBytes("is the array copied?  Yes.");
+            Binary b = new Binary(data);
+            Assert.IsTrue(data.SequenceEqual(b.ToArray()));
+
+            data[0] = (byte) 'I';
+            Assert.IsFalse(data.SequenceEqual(b.ToArray()));
+        }
+
+        [Test]
+        public new void ToString()
+        {
+            byte[] data = new byte[] { 0x1, 0x2, 0x3, 0x4 };
+            Binary b = new Binary(data);
+            Assert.AreEqual('"' + Convert.ToBase64String(data) + '"', b.ToString());
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/CsvArrayAdapterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/CsvArrayAdapterTest.cs
@@ -1,69 +1,69 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq;
-using DbLinq.Schema.Dbml.Adapter;
-using DbLinq.Util;
-using NUnit.Framework;
-
-namespace DbLinqTest
-{
-    /// <summary>
-    /// Summary description for TypeContextTest
-    /// </summary>
-    [TestFixture]
-    public class CsvArrayAdapterTest
-    {
-        public class CsvArray
-        {
-            public string S;
-            public ISimpleList<string> A;
-
-            public CsvArray()
-            {
-                A = new CsvArrayAdapter(this, "S");
-            }
-        }
-
-        [Test]
-        public void ArrayTest()
-        {
-            var ca = new CsvArray { S = "a,b" };
-            var al = ca.A.ToArray();
-            Assert.AreEqual(2, al.Count());
-            Assert.AreEqual("a", al[0]);
-            Assert.AreEqual("b", al[1]);
-        }
-
-        [Test]
-        public void WriteArrayTest()
-        {
-            var ca = new CsvArray { S = "a,b" };
-            ca.A.Add("c");
-            Assert.AreEqual("a,b,c", ca.S);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq;
+using DbLinq.Schema.Dbml.Adapter;
+using DbLinq.Util;
+using NUnit.Framework;
+
+namespace DbLinqTest
+{
+    /// <summary>
+    /// Summary description for TypeContextTest
+    /// </summary>
+    [TestFixture]
+    public class CsvArrayAdapterTest
+    {
+        public class CsvArray
+        {
+            public string S;
+            public ISimpleList<string> A;
+
+            public CsvArray()
+            {
+                A = new CsvArrayAdapter(this, "S");
+            }
+        }
+
+        [Test]
+        public void ArrayTest()
+        {
+            var ca = new CsvArray { S = "a,b" };
+            var al = ca.A.ToArray();
+            Assert.AreEqual(2, al.Count());
+            Assert.AreEqual("a", al[0]);
+            Assert.AreEqual("b", al[1]);
+        }
+
+        [Test]
+        public void WriteArrayTest()
+        {
+            var ca = new CsvArray { S = "a,b" };
+            ca.A.Add("c");
+            Assert.AreEqual("a,b,c", ca.S);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/DataContextTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/DataContextTest.cs
@@ -1,266 +1,266 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Data.Linq.Mapping;
-using System.Linq;
-using System.IO;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using NUnit.Framework;
-
-using DbLinq.Null;
-
-namespace DbLinqTest {
-
-    class DummyConnection : IDbConnection
-    {
-        public DummyConnection()
-        {
-            ConnectionString = "";
-        }
-
-        public IDbTransaction BeginTransaction() {return null;}
-        public IDbTransaction BeginTransaction(IsolationLevel il) {return null;}
-        public void ChangeDatabase(string databaseName) {}
-        public void Close() {}
-        public IDbCommand CreateCommand() {return null;}
-        public string ConnectionString{get; set;}
-        public int ConnectionTimeout{get {return 0;}}
-        public string Database{get {return null;}}
-        public void Dispose() {}
-        public void Open() {}
-        public ConnectionState State{get {return ConnectionState.Closed;}}
-    }
-
-    [TestFixture]
-    public class DataContextTest
-    {
-        DataContext context;
-
-        [SetUp]
-        public void SetUp()
-        {
-            context = new DataContext(new NullConnection() { ConnectionString = "" });
-        }
-
-        [TearDown]
-        public void TearDown()
-        {
-            context = null;
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Ctor_ConnectionStringNull()
-        {
-            string connectionString = null;
-            new DataContext(connectionString);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Ctor_ConnectionNull()
-        {
-            IDbConnection connection = null;
-            new DataContext(connection);
-        }
-
-        [Test, ExpectedException(typeof(NullReferenceException))]
-        public void Ctor_ConnectionStringOfConnectionIsNull()
-        {
-            IDbConnection connection = new NullConnection() { ConnectionString = null };
-            new DataContext(connection);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentException))]
-        public void Ctor_ConnectionString_DbLinqConnectionType_Empty()
-        {
-            new DataContext("DbLinqConnectionType=");
-        }
-
-        [Test, ExpectedException(typeof(ArgumentException))]
-        public void Ctor_ConnectionString_DbLinqConnectionType_Empty2()
-        {
-            new DataContext("DbLinqConnectionType=;");
-        }
-
-        [Test, ExpectedException(typeof(ArgumentException))]
-        public void Ctor_ConnectionString_DbLinqConnectionType_Invalid()
-        {
-            new DataContext("DbLinqConnectionType=InvalidType, DoesNotExist");
-        }
-
-        [Test, ExpectedException(typeof(ArgumentException))]
-        public void Ctor_ConnectionString_DbLinqProvider_InvalidVendor()
-        {
-            new DataContext("DbLinqProvider=ThisVendorDoesNotExist");
-        }
-
-        [Test, ExpectedException(typeof(ArgumentException))]
-        public void Ctor_ConnectionString_DbLinqProvider_InvalidVendorWithDots()
-        {
-            new DataContext("DbLinqProvider=DbLinq.Sqlite.dll");
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Ctor_FileOrServerOrConnectionIsNull()
-        {
-            MappingSource mapping = new AttributeMappingSource();
-            string fileOrServerOrConnection = null;
-            new DataContext(fileOrServerOrConnection, mapping);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Ctor_MappingIsNull()
-        {
-            MappingSource mapping = null;
-            string fileOrServerOrConnection = null;
-            new DataContext("", mapping);
-        }
-
-#if L2SQL
-        // DbLinqProvider/etc. obviously aren't removed under L2SQL
-        [ExpectedException(typeof(ArgumentException))]
-#endif
-        [Test]
-        public void Ctor_ConnectionString_ExtraParameters_Munging()
-        {
-            if (Type.GetType("Mono.Runtime", false) != null)
-                Assert.Ignore("Mono's System.Data.Linq is expected to remove DbLinq parameters.");
-            DataContext ctx = new DataContext("Server=localhost;User id=test;Database=test;DbLinqProvider=Sqlite;DbLinqConnectionType=Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite");
-            Assert.AreEqual(-1, ctx.Connection.ConnectionString.IndexOf("DbLinqProvider"));
-            Assert.AreEqual(-1, ctx.Connection.ConnectionString.IndexOf("DbLinqConnectionType"));
-        }
-        
-#if !L2SQL
-        [Test, ExpectedException(typeof(NotImplementedException))]
-        public void Ctor_FileOrServerOrConnectionIsFilename()
-        {
-            MappingSource mapping = new AttributeMappingSource();
-            string fileOrServerOrConnection = typeof(DataContextTest).Assembly.Location;
-            new DataContext(fileOrServerOrConnection, mapping);
-        }
-
-        [Test, ExpectedException(typeof(NotImplementedException))]
-        public void Ctor_FileOrServerOrConnectionIsServer()
-        {
-            MappingSource mapping = new AttributeMappingSource();
-            string fileOrServerOrConnection = "ThisIsAssumedToBeAServerName";
-            new DataContext(fileOrServerOrConnection, mapping);
-        }
-#endif
-
-        [Test]
-        public void Connection()
-        {
-            IDbConnection connection = new NullConnection() { ConnectionString = "" };
-            DataContext dc = new DataContext(connection);
-            Assert.AreEqual(connection, dc.Connection);
-
-#if !L2SQL
-            dc = new DataContext (new DummyConnection());
-            Assert.AreEqual(null, dc.Connection);
-#endif
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void ExecuteQuery_ElementTypeNull()
-        {
-            Type elementType = null;
-            context.ExecuteQuery(elementType, "command");
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void ExecuteQuery_QueryNull()
-        {
-            Type elementType = typeof(Person);
-            context.ExecuteQuery(elementType, null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void ExecuteQueryTResult_QueryNull()
-        {
-            context.ExecuteQuery<Person>(null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void GetCommand_QueryNull()
-        {
-            IQueryable query = null;
-            context.GetCommand(query);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void GetTable_TypeNull()
-        {
-            context.GetTable(null);
-        }
-
-        [Test, ExpectedException(typeof(InvalidOperationException))]
-        public void GetTable_NotSupportedType()
-        {
-            context.GetTable(typeof(object));
-        }
-
-        [Test, ExpectedException(typeof(InvalidOperationException))]
-        public void GetTableTEntity_NotSupportedType()
-        {
-            context.GetTable<object>();
-        }
-
-        [Test]
-        public void GetTableTEntity()
-        {
-            Table<Person> table = context.GetTable<Person>();
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Translate_ReaderNull()
-        {
-            context.Translate(typeof(Person), null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Translate_ElementTypeNull()
-        {
-            DbDataReader reader = new NullDataReader();
-            context.Translate(null, reader);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void TranslateTResult_ReaderNull()
-        {
-            context.Translate<Person>(null);
-        }
-    }
-}
-
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Data.Linq.Mapping;
+using System.Linq;
+using System.IO;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using NUnit.Framework;
+
+using DbLinq.Null;
+
+namespace DbLinqTest {
+
+    class DummyConnection : IDbConnection
+    {
+        public DummyConnection()
+        {
+            ConnectionString = "";
+        }
+
+        public IDbTransaction BeginTransaction() {return null;}
+        public IDbTransaction BeginTransaction(IsolationLevel il) {return null;}
+        public void ChangeDatabase(string databaseName) {}
+        public void Close() {}
+        public IDbCommand CreateCommand() {return null;}
+        public string ConnectionString{get; set;}
+        public int ConnectionTimeout{get {return 0;}}
+        public string Database{get {return null;}}
+        public void Dispose() {}
+        public void Open() {}
+        public ConnectionState State{get {return ConnectionState.Closed;}}
+    }
+
+    [TestFixture]
+    public class DataContextTest
+    {
+        DataContext context;
+
+        [SetUp]
+        public void SetUp()
+        {
+            context = new DataContext(new NullConnection() { ConnectionString = "" });
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            context = null;
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Ctor_ConnectionStringNull()
+        {
+            string connectionString = null;
+            new DataContext(connectionString);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Ctor_ConnectionNull()
+        {
+            IDbConnection connection = null;
+            new DataContext(connection);
+        }
+
+        [Test, ExpectedException(typeof(NullReferenceException))]
+        public void Ctor_ConnectionStringOfConnectionIsNull()
+        {
+            IDbConnection connection = new NullConnection() { ConnectionString = null };
+            new DataContext(connection);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentException))]
+        public void Ctor_ConnectionString_DbLinqConnectionType_Empty()
+        {
+            new DataContext("DbLinqConnectionType=");
+        }
+
+        [Test, ExpectedException(typeof(ArgumentException))]
+        public void Ctor_ConnectionString_DbLinqConnectionType_Empty2()
+        {
+            new DataContext("DbLinqConnectionType=;");
+        }
+
+        [Test, ExpectedException(typeof(ArgumentException))]
+        public void Ctor_ConnectionString_DbLinqConnectionType_Invalid()
+        {
+            new DataContext("DbLinqConnectionType=InvalidType, DoesNotExist");
+        }
+
+        [Test, ExpectedException(typeof(ArgumentException))]
+        public void Ctor_ConnectionString_DbLinqProvider_InvalidVendor()
+        {
+            new DataContext("DbLinqProvider=ThisVendorDoesNotExist");
+        }
+
+        [Test, ExpectedException(typeof(ArgumentException))]
+        public void Ctor_ConnectionString_DbLinqProvider_InvalidVendorWithDots()
+        {
+            new DataContext("DbLinqProvider=DbLinq.Sqlite.dll");
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Ctor_FileOrServerOrConnectionIsNull()
+        {
+            MappingSource mapping = new AttributeMappingSource();
+            string fileOrServerOrConnection = null;
+            new DataContext(fileOrServerOrConnection, mapping);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Ctor_MappingIsNull()
+        {
+            MappingSource mapping = null;
+            string fileOrServerOrConnection = null;
+            new DataContext("", mapping);
+        }
+
+#if L2SQL
+        // DbLinqProvider/etc. obviously aren't removed under L2SQL
+        [ExpectedException(typeof(ArgumentException))]
+#endif
+        [Test]
+        public void Ctor_ConnectionString_ExtraParameters_Munging()
+        {
+            if (Type.GetType("Mono.Runtime", false) != null)
+                Assert.Ignore("Mono's System.Data.Linq is expected to remove DbLinq parameters.");
+            DataContext ctx = new DataContext("Server=localhost;User id=test;Database=test;DbLinqProvider=Sqlite;DbLinqConnectionType=Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite");
+            Assert.AreEqual(-1, ctx.Connection.ConnectionString.IndexOf("DbLinqProvider"));
+            Assert.AreEqual(-1, ctx.Connection.ConnectionString.IndexOf("DbLinqConnectionType"));
+        }
+        
+#if !L2SQL
+        [Test, ExpectedException(typeof(NotImplementedException))]
+        public void Ctor_FileOrServerOrConnectionIsFilename()
+        {
+            MappingSource mapping = new AttributeMappingSource();
+            string fileOrServerOrConnection = typeof(DataContextTest).Assembly.Location;
+            new DataContext(fileOrServerOrConnection, mapping);
+        }
+
+        [Test, ExpectedException(typeof(NotImplementedException))]
+        public void Ctor_FileOrServerOrConnectionIsServer()
+        {
+            MappingSource mapping = new AttributeMappingSource();
+            string fileOrServerOrConnection = "ThisIsAssumedToBeAServerName";
+            new DataContext(fileOrServerOrConnection, mapping);
+        }
+#endif
+
+        [Test]
+        public void Connection()
+        {
+            IDbConnection connection = new NullConnection() { ConnectionString = "" };
+            DataContext dc = new DataContext(connection);
+            Assert.AreEqual(connection, dc.Connection);
+
+#if !L2SQL
+            dc = new DataContext (new DummyConnection());
+            Assert.AreEqual(null, dc.Connection);
+#endif
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void ExecuteQuery_ElementTypeNull()
+        {
+            Type elementType = null;
+            context.ExecuteQuery(elementType, "command");
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void ExecuteQuery_QueryNull()
+        {
+            Type elementType = typeof(Person);
+            context.ExecuteQuery(elementType, null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void ExecuteQueryTResult_QueryNull()
+        {
+            context.ExecuteQuery<Person>(null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void GetCommand_QueryNull()
+        {
+            IQueryable query = null;
+            context.GetCommand(query);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void GetTable_TypeNull()
+        {
+            context.GetTable(null);
+        }
+
+        [Test, ExpectedException(typeof(InvalidOperationException))]
+        public void GetTable_NotSupportedType()
+        {
+            context.GetTable(typeof(object));
+        }
+
+        [Test, ExpectedException(typeof(InvalidOperationException))]
+        public void GetTableTEntity_NotSupportedType()
+        {
+            context.GetTable<object>();
+        }
+
+        [Test]
+        public void GetTableTEntity()
+        {
+            Table<Person> table = context.GetTable<Person>();
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Translate_ReaderNull()
+        {
+            context.Translate(typeof(Person), null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Translate_ElementTypeNull()
+        {
+            DbDataReader reader = new NullDataReader();
+            context.Translate(null, reader);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void TranslateTResult_ReaderNull()
+        {
+            context.Translate<Person>(null);
+        }
+    }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/EntitySetTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/EntitySetTest.cs
@@ -1,438 +1,438 @@
-﻿using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using NUnit.Framework;
-
-namespace DbLinqTest
-{
-    [TestFixture]
-    public class EntitySetTest
-    {
-        [Test]
-        public void Ctor_OnAddAndOnRemoveCanBeNull()
-        {
-            new EntitySet<Person>(null, null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Add_EntityNull()
-        {
-            var people = new EntitySet<Person>();
-            people.Add(null);
-        }
-
-        [Test]
-        public void Add_IgnoreRepeats()
-        {
-            var people = new EntitySet<Person>();
-            var p = new Person { FirstName = "A", LastName = "B" };
-            people.Add(p);
-            people.Add(p);
-            Assert.AreEqual(1, people.Count);
-        }
-
-        [Test, ExpectedException(typeof(InvalidOperationException))]
-        public void Add_ThenSetSourceIsInvalid()
-        {
-            var people = new EntitySet<Person>();
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            people.Add(new Person { FirstName = "A", LastName = "B" });
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            people.SetSource(new[]{
-                new Person { FirstName = "1", LastName = "2" }
-            });
-        }
-
-        [Test]
-        public void Assign()
-        {
-            var people = new EntitySet<Person>();
-            people.SetSource(new[]{
-                new Person { FirstName = "A", LastName = "B" },
-            });
-            Assert.IsTrue(people.IsDeferred);
-            people.Load();
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.IsFalse(people.IsDeferred);
-            people.Assign(new[]{
-                new Person { FirstName = "1", LastName = "2" },
-            });
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.AreEqual(1, people.Count);
-            Assert.IsFalse(people.IsDeferred);
-        }
-
-        [Test, ExpectedException(typeof(InvalidOperationException))]
-        public void Clear_DoesNotResetSource()
-        {
-            var people = new EntitySet<Person>();
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            people.Add(new Person { FirstName = "A", LastName = "B" });
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            people.Clear();
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            people.SetSource(new[]{
-                new Person { FirstName = "1", LastName = "2" },
-            });
-        }
-
-        [Test]
-        public void Contains_KillsDeferred()
-        {
-            var people = new EntitySet<Person>();
-            var p = new Person { FirstName = "A", LastName = "B" };
-            people.SetSource(new[]{
-                p
-            });
-            Assert.IsTrue(people.IsDeferred);
-            Assert.IsTrue(people.Contains(p));
-            Assert.IsFalse(people.IsDeferred);
-        }
-
-        [Test]
-        public void HasLoadedOrAssignedValues()
-        {
-            var people = new EntitySet<Person>();
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            people.SetSource(new[]{
-                new Person { FirstName = "A", LastName = "B" },
-            });
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            Assert.IsTrue(people.IsDeferred);
-            people.Load();
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.IsFalse(people.IsDeferred);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentOutOfRangeException))]
-        public void IList_Add_WrongType()
-        {
-            var people = new EntitySet<Person>();
-            System.Collections.IList list = people;
-            list.Add("WrongType");
-        }
-
-        [Test, ExpectedException(typeof(ArgumentOutOfRangeException))]
-        public void IList_Add_DuplicateItem()
-        {
-            var people = new EntitySet<Person>();
-            var p = new Person { FirstName = "A", LastName = "B" };
-            people.Add(p);
-            System.Collections.IList list = people;
-            list.Add(p);
-        }
-
-        [Test]
-        public void IList_Remove_WrongTypeIsIgnored()
-        {
-            var people = new EntitySet<Person>();
-            System.Collections.IList list = people;
-            list.Remove("DoesNotExist");
-        }
-
-        [Test]
-        public void IndexOf_KillsDeferred()
-        {
-            var people = new EntitySet<Person>();
-            var p = new Person { FirstName = "A", LastName = "B" };
-            people.SetSource(new[]{
-                p
-            });
-            Assert.IsTrue(people.IsDeferred);
-            Assert.AreEqual(0, people.IndexOf(p));
-            Assert.IsFalse(people.IsDeferred);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentOutOfRangeException))]
-        public void Insert_RepeatValue()
-        {
-            var people = new EntitySet<Person>();
-            var p = new Person { FirstName = "A", LastName = "B" };
-            people.Add(p);
-            people.Insert(0, p);
-        }
-
-        [Test]
-        public void Item_IsDeferredSourceLoaded()
-        {
-            var people = new EntitySet<Person>();
-            people.SetSource(new[]{
-                new Person { FirstName = "A", LastName = "B" },
-            });
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            Assert.IsTrue(people.IsDeferred);
-            var p = people[0];
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.IsFalse(people.IsDeferred);
-        }
-
-        [Test]
-        public void ListChanged_NoSource()
-        {
-            // When is ListChanged emitted?
-            // It's not always when you think it would be.
-            // It depends on whether there's a Source present.
-            var people = new EntitySet<Person>();
-            var events = new List<ListChangedEventArgs> ();
-            people.ListChanged += (o, e) => events.Add(e);
-
-            people.Add(new Person { FirstName = "A", LastName = "B" });
-            AssertEqual(events);
-
-            events.Clear();
-            people.Clear();
-            AssertEqual(events, new ListChangedEventArgs(ListChangedType.Reset, 0, -1));
-
-            events.Clear();
-            people.AddRange(new[]{
-                new Person { FirstName = "1", LastName = "2" },
-                new Person { FirstName = "<", LastName = ">" },
-            });
-            AssertEqual(events);
-
-            events.Clear();
-            var p = new Person { FirstName = "{", LastName = "}" };
-            people.Insert(1, p);
-            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemAdded, 1, -1));
-
-            events.Clear();
-            Assert.IsTrue(people.Remove(p));
-            AssertEqual(events);
-
-            events.Clear();
-            people.RemoveAt(0);
-            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1));
-
-            events.Clear();
-            people[0] = p;
-            AssertEqual(events,
-                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
-                new ListChangedEventArgs(ListChangedType.ItemAdded, 0, -1));
-        }
-
-        static void AssertEqual(List<ListChangedEventArgs> actual, params ListChangedEventArgs[] expected)
-        {
-            Assert.AreEqual(expected.Length, actual.Count);
-            for (int i = 0; i < expected.Length; ++i)
-            {
-                Assert.AreEqual(expected[i].ListChangedType, actual[i].ListChangedType, "ListChangedEventArgs.ListChangedType");
-                Assert.AreEqual(expected[i].NewIndex, actual[i].NewIndex, "ListChangedEventArgs.NewIndex");
-                Assert.AreEqual(expected[i].OldIndex, actual[i].OldIndex, "ListChangedEventArgs.OldIndex");
-            }
-        }
-
-        [Test]
-        public void ListChanged_WithSource()
-        {
-            // When is ListChanged emitted?
-            // It's not always when you think it would be.
-            var people = new EntitySet<Person>();
-            var events = new List<ListChangedEventArgs>();
-            people.ListChanged += (o, e) => events.Add(e);
-
-            // This is also true if Enumerable.Empty<Person>() is used here.
-            people.SetSource(new[]{
-                new Person { FirstName = "(", LastName = ")" },
-            });
-            AssertEqual(events);
-            Assert.IsTrue(people.IsDeferred);
-
-            // *Initial* Add()/AddRange() is ignored.
-            people.Add(new Person { FirstName = "A", LastName = "B" });
-            people.AddRange(new[]{
-                new Person { FirstName = "1", LastName = "2" },
-                new Person { FirstName = "<", LastName = ">" },
-            });
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.IsTrue(people.IsDeferred);
-            AssertEqual(events);
-
-            events.Clear();
-            people.Clear();
-            AssertEqual(events, 
-                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
-                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
-                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
-                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
-                new ListChangedEventArgs(ListChangedType.Reset, 0, -1));
-            Assert.IsFalse(people.IsDeferred);
-
-            // Add()/AddRange() after a Clear has events.
-            events.Clear();
-            people.Add(new Person { FirstName = "A", LastName = "B" });
-            people.AddRange(new[]{
-                new Person { FirstName = "1", LastName = "2" },
-                new Person { FirstName = "<", LastName = ">" },
-            });
-            AssertEqual(events, 
-                new ListChangedEventArgs(ListChangedType.ItemAdded, 0, -1),
-                new ListChangedEventArgs(ListChangedType.ItemAdded, 1, -1),
-                new ListChangedEventArgs(ListChangedType.ItemAdded, 2, -1));
-
-            events.Clear();
-            var p = new Person { FirstName = "{", LastName = "}" };
-            people.Insert(1, p);
-            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemAdded, 1, -1));
-
-            events.Clear();
-            Assert.IsTrue(people.Remove(p));
-            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemDeleted, 1, -1));
-
-            events.Clear();
-            people.RemoveAt(0);
-            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1));
-
-            events.Clear();
-            people[0] = p;
-            AssertEqual(events,
-                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
-                new ListChangedEventArgs(ListChangedType.ItemAdded, 0, -1));
-        }
-
-        [Test]
-        public void Remove()
-        {
-            var people = new EntitySet<Person>();
-            var events = new List<ListChangedEventArgs>();
-            people.ListChanged += (o, e) => events.Add(e);
-
-            people.SetSource(new[]{
-                new Person { FirstName = "(", LastName = ")" },
-            });
-            Assert.IsTrue(people.IsDeferred);
-            Assert.IsFalse(people.Remove(null));
-            AssertEqual(events);
-            events.Clear();
-            Assert.IsTrue(people.IsDeferred);
-
-            var p = people[0];
-            Assert.IsTrue(people.Remove(p));
-            Assert.IsFalse(people.IsDeferred);
-            Assert.AreEqual(0, people.Count);
-            AssertEqual(events, 
-                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1));
-        }
-
-        [Test]
-        public void SanityChecking()
-        {
-            var people = new EntitySet<Person>();
-            bool changed = false;
-            people.ListChanged += (o, e) => {
-                changed = true;
-            };
-
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            Assert.AreEqual(0, people.Count);
-            Assert.IsFalse(people.IsDeferred);
-
-            people.Add(new Person { FirstName = "A", LastName = "B" });
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.AreEqual(1, people.Count);
-            Assert.IsFalse(people.IsDeferred);
-            // WTF?!
-            Assert.IsFalse(changed);
-
-            changed = false;
-            people.Add(new Person { FirstName = "1", LastName = "2" });
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.AreEqual(2, people.Count);
-            // WTF?!
-            Assert.IsFalse(changed);
-
-
-            changed = false;
-            people.RemoveAt(0);
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.AreEqual(1, people.Count);
-            Assert.IsFalse(people.IsDeferred);
-            Assert.IsTrue(changed);
-        }
-
-        [Test]
-        public void SetSource_EntitySourceCanBeNull()
-        {
-            var entities = new EntitySet<Person>();
-            entities.SetSource(null);
-        }
-
-        [Test]
-        public void SetSource_HasLoadedOrAssignedValues_Is_False_Until_Enumeration()
-        {
-            var people = new EntitySet<Person>();
-
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-
-            people.SetSource(new[]{
-                new Person { FirstName = "1", LastName = "2" }
-            });
-
-            Assert.IsTrue(people.IsDeferred);
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            Assert.AreEqual(1, people.Count());
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.IsFalse(people.IsDeferred);
-        }
-
-        [Test]
-        public void SetSource_HasLoadedOrAssignedValues_Is_False_Until_Count()
-        {
-            var people = new EntitySet<Person>();
-
-            people.SetSource(new[]{
-                new Person { FirstName = "1", LastName = "2" }
-            });
-
-            Assert.IsTrue(people.IsDeferred);
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            Assert.AreEqual(1, people.Count);
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.IsFalse(people.IsDeferred);
-        }
-
-        [Test]
-        public void SetSource_ThenAddIsFine()
-        {
-            var people = new EntitySet<Person>();
-
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            
-            people.SetSource(new[]{
-                new Person { FirstName = "1", LastName = "2" }
-            });
-            Assert.IsTrue(people.IsDeferred);
-            Assert.IsFalse(people.HasLoadedOrAssignedValues);
-            people.Add(new Person { FirstName = "A", LastName = "B" });
-            Assert.IsTrue(people.HasLoadedOrAssignedValues);
-            Assert.IsTrue(people.IsDeferred);
-            Assert.AreEqual(2, people.Count);
-        }
-
-        [Test]
-        public void SetSource_ThenSetSourceIsValid()
-        {
-            var people = new EntitySet<Person>();
-
-            people.SetSource(new[]{
-                new Person { FirstName = "1", LastName = "2" }
-            });
-            
-            Assert.IsTrue(people.IsDeferred);
-
-            people.SetSource(new[]{
-                new Person { FirstName = "A", LastName = "B" } 
-            });
-
-            Assert.IsTrue(people.IsDeferred);
-        }
-    }
-}
+﻿using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using NUnit.Framework;
+
+namespace DbLinqTest
+{
+    [TestFixture]
+    public class EntitySetTest
+    {
+        [Test]
+        public void Ctor_OnAddAndOnRemoveCanBeNull()
+        {
+            new EntitySet<Person>(null, null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Add_EntityNull()
+        {
+            var people = new EntitySet<Person>();
+            people.Add(null);
+        }
+
+        [Test]
+        public void Add_IgnoreRepeats()
+        {
+            var people = new EntitySet<Person>();
+            var p = new Person { FirstName = "A", LastName = "B" };
+            people.Add(p);
+            people.Add(p);
+            Assert.AreEqual(1, people.Count);
+        }
+
+        [Test, ExpectedException(typeof(InvalidOperationException))]
+        public void Add_ThenSetSourceIsInvalid()
+        {
+            var people = new EntitySet<Person>();
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            people.Add(new Person { FirstName = "A", LastName = "B" });
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            people.SetSource(new[]{
+                new Person { FirstName = "1", LastName = "2" }
+            });
+        }
+
+        [Test]
+        public void Assign()
+        {
+            var people = new EntitySet<Person>();
+            people.SetSource(new[]{
+                new Person { FirstName = "A", LastName = "B" },
+            });
+            Assert.IsTrue(people.IsDeferred);
+            people.Load();
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.IsFalse(people.IsDeferred);
+            people.Assign(new[]{
+                new Person { FirstName = "1", LastName = "2" },
+            });
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.AreEqual(1, people.Count);
+            Assert.IsFalse(people.IsDeferred);
+        }
+
+        [Test, ExpectedException(typeof(InvalidOperationException))]
+        public void Clear_DoesNotResetSource()
+        {
+            var people = new EntitySet<Person>();
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            people.Add(new Person { FirstName = "A", LastName = "B" });
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            people.Clear();
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            people.SetSource(new[]{
+                new Person { FirstName = "1", LastName = "2" },
+            });
+        }
+
+        [Test]
+        public void Contains_KillsDeferred()
+        {
+            var people = new EntitySet<Person>();
+            var p = new Person { FirstName = "A", LastName = "B" };
+            people.SetSource(new[]{
+                p
+            });
+            Assert.IsTrue(people.IsDeferred);
+            Assert.IsTrue(people.Contains(p));
+            Assert.IsFalse(people.IsDeferred);
+        }
+
+        [Test]
+        public void HasLoadedOrAssignedValues()
+        {
+            var people = new EntitySet<Person>();
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            people.SetSource(new[]{
+                new Person { FirstName = "A", LastName = "B" },
+            });
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            Assert.IsTrue(people.IsDeferred);
+            people.Load();
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.IsFalse(people.IsDeferred);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentOutOfRangeException))]
+        public void IList_Add_WrongType()
+        {
+            var people = new EntitySet<Person>();
+            System.Collections.IList list = people;
+            list.Add("WrongType");
+        }
+
+        [Test, ExpectedException(typeof(ArgumentOutOfRangeException))]
+        public void IList_Add_DuplicateItem()
+        {
+            var people = new EntitySet<Person>();
+            var p = new Person { FirstName = "A", LastName = "B" };
+            people.Add(p);
+            System.Collections.IList list = people;
+            list.Add(p);
+        }
+
+        [Test]
+        public void IList_Remove_WrongTypeIsIgnored()
+        {
+            var people = new EntitySet<Person>();
+            System.Collections.IList list = people;
+            list.Remove("DoesNotExist");
+        }
+
+        [Test]
+        public void IndexOf_KillsDeferred()
+        {
+            var people = new EntitySet<Person>();
+            var p = new Person { FirstName = "A", LastName = "B" };
+            people.SetSource(new[]{
+                p
+            });
+            Assert.IsTrue(people.IsDeferred);
+            Assert.AreEqual(0, people.IndexOf(p));
+            Assert.IsFalse(people.IsDeferred);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentOutOfRangeException))]
+        public void Insert_RepeatValue()
+        {
+            var people = new EntitySet<Person>();
+            var p = new Person { FirstName = "A", LastName = "B" };
+            people.Add(p);
+            people.Insert(0, p);
+        }
+
+        [Test]
+        public void Item_IsDeferredSourceLoaded()
+        {
+            var people = new EntitySet<Person>();
+            people.SetSource(new[]{
+                new Person { FirstName = "A", LastName = "B" },
+            });
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            Assert.IsTrue(people.IsDeferred);
+            var p = people[0];
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.IsFalse(people.IsDeferred);
+        }
+
+        [Test]
+        public void ListChanged_NoSource()
+        {
+            // When is ListChanged emitted?
+            // It's not always when you think it would be.
+            // It depends on whether there's a Source present.
+            var people = new EntitySet<Person>();
+            var events = new List<ListChangedEventArgs> ();
+            people.ListChanged += (o, e) => events.Add(e);
+
+            people.Add(new Person { FirstName = "A", LastName = "B" });
+            AssertEqual(events);
+
+            events.Clear();
+            people.Clear();
+            AssertEqual(events, new ListChangedEventArgs(ListChangedType.Reset, 0, -1));
+
+            events.Clear();
+            people.AddRange(new[]{
+                new Person { FirstName = "1", LastName = "2" },
+                new Person { FirstName = "<", LastName = ">" },
+            });
+            AssertEqual(events);
+
+            events.Clear();
+            var p = new Person { FirstName = "{", LastName = "}" };
+            people.Insert(1, p);
+            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemAdded, 1, -1));
+
+            events.Clear();
+            Assert.IsTrue(people.Remove(p));
+            AssertEqual(events);
+
+            events.Clear();
+            people.RemoveAt(0);
+            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1));
+
+            events.Clear();
+            people[0] = p;
+            AssertEqual(events,
+                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
+                new ListChangedEventArgs(ListChangedType.ItemAdded, 0, -1));
+        }
+
+        static void AssertEqual(List<ListChangedEventArgs> actual, params ListChangedEventArgs[] expected)
+        {
+            Assert.AreEqual(expected.Length, actual.Count);
+            for (int i = 0; i < expected.Length; ++i)
+            {
+                Assert.AreEqual(expected[i].ListChangedType, actual[i].ListChangedType, "ListChangedEventArgs.ListChangedType");
+                Assert.AreEqual(expected[i].NewIndex, actual[i].NewIndex, "ListChangedEventArgs.NewIndex");
+                Assert.AreEqual(expected[i].OldIndex, actual[i].OldIndex, "ListChangedEventArgs.OldIndex");
+            }
+        }
+
+        [Test]
+        public void ListChanged_WithSource()
+        {
+            // When is ListChanged emitted?
+            // It's not always when you think it would be.
+            var people = new EntitySet<Person>();
+            var events = new List<ListChangedEventArgs>();
+            people.ListChanged += (o, e) => events.Add(e);
+
+            // This is also true if Enumerable.Empty<Person>() is used here.
+            people.SetSource(new[]{
+                new Person { FirstName = "(", LastName = ")" },
+            });
+            AssertEqual(events);
+            Assert.IsTrue(people.IsDeferred);
+
+            // *Initial* Add()/AddRange() is ignored.
+            people.Add(new Person { FirstName = "A", LastName = "B" });
+            people.AddRange(new[]{
+                new Person { FirstName = "1", LastName = "2" },
+                new Person { FirstName = "<", LastName = ">" },
+            });
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.IsTrue(people.IsDeferred);
+            AssertEqual(events);
+
+            events.Clear();
+            people.Clear();
+            AssertEqual(events, 
+                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
+                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
+                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
+                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
+                new ListChangedEventArgs(ListChangedType.Reset, 0, -1));
+            Assert.IsFalse(people.IsDeferred);
+
+            // Add()/AddRange() after a Clear has events.
+            events.Clear();
+            people.Add(new Person { FirstName = "A", LastName = "B" });
+            people.AddRange(new[]{
+                new Person { FirstName = "1", LastName = "2" },
+                new Person { FirstName = "<", LastName = ">" },
+            });
+            AssertEqual(events, 
+                new ListChangedEventArgs(ListChangedType.ItemAdded, 0, -1),
+                new ListChangedEventArgs(ListChangedType.ItemAdded, 1, -1),
+                new ListChangedEventArgs(ListChangedType.ItemAdded, 2, -1));
+
+            events.Clear();
+            var p = new Person { FirstName = "{", LastName = "}" };
+            people.Insert(1, p);
+            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemAdded, 1, -1));
+
+            events.Clear();
+            Assert.IsTrue(people.Remove(p));
+            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemDeleted, 1, -1));
+
+            events.Clear();
+            people.RemoveAt(0);
+            AssertEqual(events, new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1));
+
+            events.Clear();
+            people[0] = p;
+            AssertEqual(events,
+                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1),
+                new ListChangedEventArgs(ListChangedType.ItemAdded, 0, -1));
+        }
+
+        [Test]
+        public void Remove()
+        {
+            var people = new EntitySet<Person>();
+            var events = new List<ListChangedEventArgs>();
+            people.ListChanged += (o, e) => events.Add(e);
+
+            people.SetSource(new[]{
+                new Person { FirstName = "(", LastName = ")" },
+            });
+            Assert.IsTrue(people.IsDeferred);
+            Assert.IsFalse(people.Remove(null));
+            AssertEqual(events);
+            events.Clear();
+            Assert.IsTrue(people.IsDeferred);
+
+            var p = people[0];
+            Assert.IsTrue(people.Remove(p));
+            Assert.IsFalse(people.IsDeferred);
+            Assert.AreEqual(0, people.Count);
+            AssertEqual(events, 
+                new ListChangedEventArgs(ListChangedType.ItemDeleted, 0, -1));
+        }
+
+        [Test]
+        public void SanityChecking()
+        {
+            var people = new EntitySet<Person>();
+            bool changed = false;
+            people.ListChanged += (o, e) => {
+                changed = true;
+            };
+
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            Assert.AreEqual(0, people.Count);
+            Assert.IsFalse(people.IsDeferred);
+
+            people.Add(new Person { FirstName = "A", LastName = "B" });
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.AreEqual(1, people.Count);
+            Assert.IsFalse(people.IsDeferred);
+            // WTF?!
+            Assert.IsFalse(changed);
+
+            changed = false;
+            people.Add(new Person { FirstName = "1", LastName = "2" });
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.AreEqual(2, people.Count);
+            // WTF?!
+            Assert.IsFalse(changed);
+
+
+            changed = false;
+            people.RemoveAt(0);
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.AreEqual(1, people.Count);
+            Assert.IsFalse(people.IsDeferred);
+            Assert.IsTrue(changed);
+        }
+
+        [Test]
+        public void SetSource_EntitySourceCanBeNull()
+        {
+            var entities = new EntitySet<Person>();
+            entities.SetSource(null);
+        }
+
+        [Test]
+        public void SetSource_HasLoadedOrAssignedValues_Is_False_Until_Enumeration()
+        {
+            var people = new EntitySet<Person>();
+
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+
+            people.SetSource(new[]{
+                new Person { FirstName = "1", LastName = "2" }
+            });
+
+            Assert.IsTrue(people.IsDeferred);
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            Assert.AreEqual(1, people.Count());
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.IsFalse(people.IsDeferred);
+        }
+
+        [Test]
+        public void SetSource_HasLoadedOrAssignedValues_Is_False_Until_Count()
+        {
+            var people = new EntitySet<Person>();
+
+            people.SetSource(new[]{
+                new Person { FirstName = "1", LastName = "2" }
+            });
+
+            Assert.IsTrue(people.IsDeferred);
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            Assert.AreEqual(1, people.Count);
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.IsFalse(people.IsDeferred);
+        }
+
+        [Test]
+        public void SetSource_ThenAddIsFine()
+        {
+            var people = new EntitySet<Person>();
+
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            
+            people.SetSource(new[]{
+                new Person { FirstName = "1", LastName = "2" }
+            });
+            Assert.IsTrue(people.IsDeferred);
+            Assert.IsFalse(people.HasLoadedOrAssignedValues);
+            people.Add(new Person { FirstName = "A", LastName = "B" });
+            Assert.IsTrue(people.HasLoadedOrAssignedValues);
+            Assert.IsTrue(people.IsDeferred);
+            Assert.AreEqual(2, people.Count);
+        }
+
+        [Test]
+        public void SetSource_ThenSetSourceIsValid()
+        {
+            var people = new EntitySet<Person>();
+
+            people.SetSource(new[]{
+                new Person { FirstName = "1", LastName = "2" }
+            });
+            
+            Assert.IsTrue(people.IsDeferred);
+
+            people.SetSource(new[]{
+                new Person { FirstName = "A", LastName = "B" } 
+            });
+
+            Assert.IsTrue(people.IsDeferred);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/ExpressionEqualityComparerTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/ExpressionEqualityComparerTest.cs
@@ -1,129 +1,129 @@
-﻿using System.Collections.Generic;
-using System.Reflection;
-using DbLinq.Util;
-using System.Linq.Expressions;
-using NUnit.Framework;
-
-namespace DbLinqTest
-{
-    /// <summary>
-    ///This is a test class for ExpressionEqualityComparerTest and is intended
-    ///to contain all ExpressionEqualityComparerTest Unit Tests
-    ///</summary>
-    [TestFixture]
-    public class ExpressionEqualityComparerTest
-    {
-        private readonly IEqualityComparer<Expression> equalityComparer = new ExpressionEqualityComparer();
-
-        private void CheckEquality(Expression a, Expression b)
-        {
-            Assert.AreEqual(equalityComparer.GetHashCode(a), equalityComparer.GetHashCode(b));
-            Assert.IsTrue(equalityComparer.Equals(a, b));
-        }
-
-        private void CheckInequality(Expression a, Expression b)
-        {
-            Assert.IsFalse(equalityComparer.Equals(a, b));
-        }
-
-        [Test]
-        public void Equality1Test()
-        {
-            CheckEquality(Expression.Add(Expression.Constant(1), Expression.Constant(2)),
-                          Expression.Add(Expression.Constant(1), Expression.Constant(2)));
-        }
-
-        [Test]
-        public void Inequality1Test()
-        {
-            CheckInequality(Expression.Add(Expression.Constant(1), Expression.Constant(2)),
-                            Expression.Add(Expression.Constant(1), Expression.Constant(3)));
-        }
-
-        [Test]
-        public void Equality2Test()
-        {
-            CheckEquality(Expression.Condition(Expression.Constant(true), Expression.Constant(1), Expression.Constant(2)),
-                          Expression.Condition(Expression.Constant(true), Expression.Constant(1), Expression.Constant(2)));
-        }
-
-        [Test]
-        public void Equality3Test()
-        {
-            CheckEquality(Expression.Constant(1), Expression.Constant(1));
-        }
-
-        [Test]
-        public void Equality4Test()
-        {
-            CheckEquality(Expression.Constant("1"), Expression.Constant("1"));
-        }
-
-        [Test]
-        public void Inequality4Test()
-        {
-            CheckInequality(Expression.Constant(1), Expression.Constant("1"));
-        }
-        [Test]
-        public void Inequality5Test()
-        {
-            CheckInequality(Expression.Constant(1), null);
-        }
-        [Test]
-        public void Inequality6Test()
-        {
-            CheckInequality(null, Expression.Constant("1"));
-        }
-        [Test]
-        public void Inequality7Test()
-        {
-            CheckInequality(Expression.Constant(1), Expression.Negate(Expression.Constant(1)));
-        }
-        static int F()
-        {
-            return 1;
-        }
-
-        static int G()
-        {
-            return 1;
-        }
-
-        //[TestMethod, Test]
-        //public void Equality8Test()
-        //{
-        //    CheckEquality(
-        //        Expression.Invoke(Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static))),
-        //        Expression.Invoke(Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static)))
-        //        );
-        //}
-
-        //[TestMethod, Test]
-        //public void Inequality8Test()
-        //{
-        //    CheckInequality(
-        //        Expression.Invoke(Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static))),
-        //        Expression.Invoke(Expression.Call(GetType().GetMethod("G", BindingFlags.NonPublic | BindingFlags.Static)))
-        //        );
-        //}
-        [Test]
-        public void Equality9Test()
-        {
-            CheckEquality(
-                Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static)),
-                Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static))
-                );
-        }
-
-        [Test]
-        public void Inequality9Test()
-        {
-            CheckInequality(
-                Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static)),
-                Expression.Call(GetType().GetMethod("G", BindingFlags.NonPublic | BindingFlags.Static))
-                );
-        }
-
-        // TODO: finish tests, lazy boy
-    }
-}
+﻿using System.Collections.Generic;
+using System.Reflection;
+using DbLinq.Util;
+using System.Linq.Expressions;
+using NUnit.Framework;
+
+namespace DbLinqTest
+{
+    /// <summary>
+    ///This is a test class for ExpressionEqualityComparerTest and is intended
+    ///to contain all ExpressionEqualityComparerTest Unit Tests
+    ///</summary>
+    [TestFixture]
+    public class ExpressionEqualityComparerTest
+    {
+        private readonly IEqualityComparer<Expression> equalityComparer = new ExpressionEqualityComparer();
+
+        private void CheckEquality(Expression a, Expression b)
+        {
+            Assert.AreEqual(equalityComparer.GetHashCode(a), equalityComparer.GetHashCode(b));
+            Assert.IsTrue(equalityComparer.Equals(a, b));
+        }
+
+        private void CheckInequality(Expression a, Expression b)
+        {
+            Assert.IsFalse(equalityComparer.Equals(a, b));
+        }
+
+        [Test]
+        public void Equality1Test()
+        {
+            CheckEquality(Expression.Add(Expression.Constant(1), Expression.Constant(2)),
+                          Expression.Add(Expression.Constant(1), Expression.Constant(2)));
+        }
+
+        [Test]
+        public void Inequality1Test()
+        {
+            CheckInequality(Expression.Add(Expression.Constant(1), Expression.Constant(2)),
+                            Expression.Add(Expression.Constant(1), Expression.Constant(3)));
+        }
+
+        [Test]
+        public void Equality2Test()
+        {
+            CheckEquality(Expression.Condition(Expression.Constant(true), Expression.Constant(1), Expression.Constant(2)),
+                          Expression.Condition(Expression.Constant(true), Expression.Constant(1), Expression.Constant(2)));
+        }
+
+        [Test]
+        public void Equality3Test()
+        {
+            CheckEquality(Expression.Constant(1), Expression.Constant(1));
+        }
+
+        [Test]
+        public void Equality4Test()
+        {
+            CheckEquality(Expression.Constant("1"), Expression.Constant("1"));
+        }
+
+        [Test]
+        public void Inequality4Test()
+        {
+            CheckInequality(Expression.Constant(1), Expression.Constant("1"));
+        }
+        [Test]
+        public void Inequality5Test()
+        {
+            CheckInequality(Expression.Constant(1), null);
+        }
+        [Test]
+        public void Inequality6Test()
+        {
+            CheckInequality(null, Expression.Constant("1"));
+        }
+        [Test]
+        public void Inequality7Test()
+        {
+            CheckInequality(Expression.Constant(1), Expression.Negate(Expression.Constant(1)));
+        }
+        static int F()
+        {
+            return 1;
+        }
+
+        static int G()
+        {
+            return 1;
+        }
+
+        //[TestMethod, Test]
+        //public void Equality8Test()
+        //{
+        //    CheckEquality(
+        //        Expression.Invoke(Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static))),
+        //        Expression.Invoke(Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static)))
+        //        );
+        //}
+
+        //[TestMethod, Test]
+        //public void Inequality8Test()
+        //{
+        //    CheckInequality(
+        //        Expression.Invoke(Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static))),
+        //        Expression.Invoke(Expression.Call(GetType().GetMethod("G", BindingFlags.NonPublic | BindingFlags.Static)))
+        //        );
+        //}
+        [Test]
+        public void Equality9Test()
+        {
+            CheckEquality(
+                Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static)),
+                Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static))
+                );
+        }
+
+        [Test]
+        public void Inequality9Test()
+        {
+            CheckInequality(
+                Expression.Call(GetType().GetMethod("F", BindingFlags.NonPublic | BindingFlags.Static)),
+                Expression.Call(GetType().GetMethod("G", BindingFlags.NonPublic | BindingFlags.Static))
+                );
+        }
+
+        // TODO: finish tests, lazy boy
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/IDataTypeExtensionsTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/IDataTypeExtensionsTest.cs
@@ -1,124 +1,124 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbLinq.Vendor.Implementation;
-using NUnit.Framework;
-
-namespace DbLinqTest
-{
-    /// <summary>
-    ///This is a test class for SchemaLoaderTest and is intended
-    ///to contain all SchemaLoaderTest Unit Tests
-    ///</summary>
-    [TestFixture]
-    public class IDataTypeExtensionsTest
-    {
-
-        /// <summary>
-        ///A test for UnpackDbType
-        ///</summary>
-        [Test]
-        public void UnpackDbType1Test()
-        {
-            string rawType = "int";
-            IDataType dataType = new SchemaLoader.DataType();
-            dataType.UnpackRawDbType(rawType);
-            Assert.AreEqual("int", dataType.SqlType);
-            Assert.AreEqual(null, dataType.Length);
-            Assert.AreEqual(null, dataType.Precision);
-            Assert.AreEqual(null, dataType.Scale);
-            //Assert.AreEqual(null, dataType.Unsigned); // irrelevant
-        }
-
-        /// <summary>
-        ///A test for UnpackDbType
-        ///</summary>
-        [Test]
-        public void UnpackDbType2Test()
-        {
-            string rawType = "int(12)";
-            IDataType dataType = new SchemaLoader.DataType();
-            dataType.UnpackRawDbType(rawType);
-            Assert.AreEqual("int", dataType.SqlType);
-            Assert.AreEqual(12, dataType.Length);
-            Assert.AreEqual(12, dataType.Precision);
-            Assert.AreEqual(null, dataType.Scale);
-            //Assert.AreEqual(null, dataType.Unsigned); // irrelevant
-        }
-
-        /// <summary>
-        ///A test for UnpackDbType
-        ///</summary>
-        [Test]
-        public void UnpackDbType3Test()
-        {
-            string rawType = "number(15,5)";
-            IDataType dataType = new SchemaLoader.DataType();
-            dataType.UnpackRawDbType(rawType);
-            Assert.AreEqual("number", dataType.SqlType);
-            Assert.AreEqual(15, dataType.Length);
-            Assert.AreEqual(15, dataType.Precision);
-            Assert.AreEqual(5, dataType.Scale);
-            Assert.AreEqual(false, dataType.Unsigned);
-        }
-
-        /// <summary>
-        ///A test for UnpackDbType
-        ///</summary>
-        [Test]
-        public void UnpackDbType4Test()
-        {
-            string rawType = "type()";
-            IDataType dataType = new SchemaLoader.DataType();
-            dataType.UnpackRawDbType(rawType);
-            Assert.AreEqual("type", dataType.SqlType);
-            Assert.AreEqual(null, dataType.Length);
-            Assert.AreEqual(null, dataType.Precision);
-            Assert.AreEqual(null, dataType.Scale);
-        }
-
-        /// <summary>
-        ///A test for UnpackDbType
-        ///</summary>
-        [Test]
-        public void UnpackDbType5Test()
-        {
-            string rawType = "smallint unsigned";
-            IDataType dataType = new SchemaLoader.DataType();
-            dataType.UnpackRawDbType(rawType);
-            Assert.AreEqual("smallint", dataType.SqlType);
-            Assert.AreEqual(null, dataType.Length);
-            Assert.AreEqual(null, dataType.Precision);
-            Assert.AreEqual(null, dataType.Scale);
-            Assert.AreEqual(true, dataType.Unsigned);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbLinq.Vendor.Implementation;
+using NUnit.Framework;
+
+namespace DbLinqTest
+{
+    /// <summary>
+    ///This is a test class for SchemaLoaderTest and is intended
+    ///to contain all SchemaLoaderTest Unit Tests
+    ///</summary>
+    [TestFixture]
+    public class IDataTypeExtensionsTest
+    {
+
+        /// <summary>
+        ///A test for UnpackDbType
+        ///</summary>
+        [Test]
+        public void UnpackDbType1Test()
+        {
+            string rawType = "int";
+            IDataType dataType = new SchemaLoader.DataType();
+            dataType.UnpackRawDbType(rawType);
+            Assert.AreEqual("int", dataType.SqlType);
+            Assert.AreEqual(null, dataType.Length);
+            Assert.AreEqual(null, dataType.Precision);
+            Assert.AreEqual(null, dataType.Scale);
+            //Assert.AreEqual(null, dataType.Unsigned); // irrelevant
+        }
+
+        /// <summary>
+        ///A test for UnpackDbType
+        ///</summary>
+        [Test]
+        public void UnpackDbType2Test()
+        {
+            string rawType = "int(12)";
+            IDataType dataType = new SchemaLoader.DataType();
+            dataType.UnpackRawDbType(rawType);
+            Assert.AreEqual("int", dataType.SqlType);
+            Assert.AreEqual(12, dataType.Length);
+            Assert.AreEqual(12, dataType.Precision);
+            Assert.AreEqual(null, dataType.Scale);
+            //Assert.AreEqual(null, dataType.Unsigned); // irrelevant
+        }
+
+        /// <summary>
+        ///A test for UnpackDbType
+        ///</summary>
+        [Test]
+        public void UnpackDbType3Test()
+        {
+            string rawType = "number(15,5)";
+            IDataType dataType = new SchemaLoader.DataType();
+            dataType.UnpackRawDbType(rawType);
+            Assert.AreEqual("number", dataType.SqlType);
+            Assert.AreEqual(15, dataType.Length);
+            Assert.AreEqual(15, dataType.Precision);
+            Assert.AreEqual(5, dataType.Scale);
+            Assert.AreEqual(false, dataType.Unsigned);
+        }
+
+        /// <summary>
+        ///A test for UnpackDbType
+        ///</summary>
+        [Test]
+        public void UnpackDbType4Test()
+        {
+            string rawType = "type()";
+            IDataType dataType = new SchemaLoader.DataType();
+            dataType.UnpackRawDbType(rawType);
+            Assert.AreEqual("type", dataType.SqlType);
+            Assert.AreEqual(null, dataType.Length);
+            Assert.AreEqual(null, dataType.Precision);
+            Assert.AreEqual(null, dataType.Scale);
+        }
+
+        /// <summary>
+        ///A test for UnpackDbType
+        ///</summary>
+        [Test]
+        public void UnpackDbType5Test()
+        {
+            string rawType = "smallint unsigned";
+            IDataType dataType = new SchemaLoader.DataType();
+            dataType.UnpackRawDbType(rawType);
+            Assert.AreEqual("smallint", dataType.SqlType);
+            Assert.AreEqual(null, dataType.Length);
+            Assert.AreEqual(null, dataType.Precision);
+            Assert.AreEqual(null, dataType.Scale);
+            Assert.AreEqual(true, dataType.Unsigned);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/PeopleTable.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/PeopleTable.cs
@@ -1,63 +1,63 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.Common;
-// using System.Data.Linq;
-using System.Data.Linq.Mapping;
-using System.Linq;
-using System.IO;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using NUnit.Framework;
-
-using DbLinq.Null;
-
-namespace DbLinqTest {
-
-    [Table(Name="people")]
-    class BadPerson
-    {
-        public string FirstName {get; set;}
-        public string LastName {get; set;}
-    }
-
-    [Table(Name="people")]
-    class Person
-    {
-        [Column(Name="first_name")]
-        public string FirstName {get; set;}
-        [Column(Name="last_name")]
-        public string LastName {get; set;}
-    }
-}
-
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Common;
+// using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Linq;
+using System.IO;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using NUnit.Framework;
+
+using DbLinq.Null;
+
+namespace DbLinqTest {
+
+    [Table(Name="people")]
+    class BadPerson
+    {
+        public string FirstName {get; set;}
+        public string LastName {get; set;}
+    }
+
+    [Table(Name="people")]
+    class Person
+    {
+        [Column(Name="first_name")]
+        public string FirstName {get; set;}
+        [Column(Name="last_name")]
+        public string LastName {get; set;}
+    }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Properties/AssemblyInfo.cs
@@ -1,23 +1,23 @@
-﻿using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbLinqTest")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("DbLinqTest")]
-[assembly: AssemblyCopyright("Copyright ©  2008")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM componenets.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("52112670-1196-4229-ae51-535cf23869cb")]
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbLinqTest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DbLinqTest")]
+[assembly: AssemblyCopyright("Copyright ©  2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM componenets.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("52112670-1196-4229-ae51-535cf23869cb")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Attach.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Attach.cs
@@ -1,107 +1,107 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-using System.Data.Linq;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class Attach : TestBase
-    {
-        [Test]
-        public void Attach01()
-        {
-            var db1 = CreateDB();
-            var employee = new Employee();
-
-            db1.Employees.Attach(employee);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(NotSupportedException))]
-        public void Attach02()
-        {
-            var db1 = CreateDB();
-            var db2 = CreateDB();
-            var employee = new Employee();
-
-            db1.Employees.Attach(employee);
-            employee.Address = "new address";
-
-            db2.Employees.Attach(employee);
-        }
-
-        [Test]
-        public void AttachAll01()
-        {
-            var db1 = CreateDB();
-            var employees = new Employee[] { new Employee { EmployeeID = 20 }, new Employee { EmployeeID = 21 } };
-            db1.Employees.AttachAll(employees);
-        }
-
-        [Test]
-        [ExpectedException(typeof(System.Data.Linq.DuplicateKeyException))]
-        public void AttachAll02()
-        {
-            var db1 = CreateDB();
-            var employees = new Employee[] { new Employee { EmployeeID = 20 }, new Employee { EmployeeID = 20 } };
-            db1.Employees.AttachAll(employees);
-        }
-
-
-        [Test]
-        [ExpectedException(typeof(System.Data.Linq.DuplicateKeyException))]
-        public void AttachAll03()
-        {
-            var db1 = CreateDB();
-            var employee1 = db1.Employees.First();
-            var employees = new Employee[] { new Employee { EmployeeID = employee1.EmployeeID } };
-            db1.Employees.AttachAll(employees);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(ChangeConflictException))]
-        public void NotExistingAttatch()
-        {
-            Random rand = new Random();
-
-            Northwind db = CreateDB();
-            var orderDetail = new OrderDetail { OrderID = 0, ProductID = 0 };
-            db.OrderDetails.Attach(orderDetail);
-
-            float newDiscount = 15 + (float)rand.NextDouble();
-            orderDetail.Discount = newDiscount;
-            db.SubmitChanges();
-        }
-    }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+using System.Data.Linq;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class Attach : TestBase
+    {
+        [Test]
+        public void Attach01()
+        {
+            var db1 = CreateDB();
+            var employee = new Employee();
+
+            db1.Employees.Attach(employee);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(NotSupportedException))]
+        public void Attach02()
+        {
+            var db1 = CreateDB();
+            var db2 = CreateDB();
+            var employee = new Employee();
+
+            db1.Employees.Attach(employee);
+            employee.Address = "new address";
+
+            db2.Employees.Attach(employee);
+        }
+
+        [Test]
+        public void AttachAll01()
+        {
+            var db1 = CreateDB();
+            var employees = new Employee[] { new Employee { EmployeeID = 20 }, new Employee { EmployeeID = 21 } };
+            db1.Employees.AttachAll(employees);
+        }
+
+        [Test]
+        [ExpectedException(typeof(System.Data.Linq.DuplicateKeyException))]
+        public void AttachAll02()
+        {
+            var db1 = CreateDB();
+            var employees = new Employee[] { new Employee { EmployeeID = 20 }, new Employee { EmployeeID = 20 } };
+            db1.Employees.AttachAll(employees);
+        }
+
+
+        [Test]
+        [ExpectedException(typeof(System.Data.Linq.DuplicateKeyException))]
+        public void AttachAll03()
+        {
+            var db1 = CreateDB();
+            var employee1 = db1.Employees.First();
+            var employees = new Employee[] { new Employee { EmployeeID = employee1.EmployeeID } };
+            db1.Employees.AttachAll(employees);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(ChangeConflictException))]
+        public void NotExistingAttatch()
+        {
+            Random rand = new Random();
+
+            Northwind db = CreateDB();
+            var orderDetail = new OrderDetail { OrderID = 0, ProductID = 0 };
+            db.OrderDetails.Attach(orderDetail);
+
+            float newDiscount = 15 + (float)rand.NextDouble();
+            orderDetail.Discount = newDiscount;
+            db.SubmitChanges();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/CompositePK_Test.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/CompositePK_Test.cs
@@ -1,199 +1,199 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-using System.Data.Linq;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class CompositePK_Test : TestBase
-    {
-        const short TestQuantity = short.MaxValue;
-
-        protected void cleanup(Northwind db)
-        {
-            try
-            {
-                // Get the name of the Order Details table properly evaluating the Annotation
-                string tableName = null;// db.Vendor.GetSqlFieldSafeName("order details"); //eg. "[Order Details]"
-                foreach (object obj in typeof(OrderDetail).GetCustomAttributes(true))
-                {
-                    if (obj is System.Data.Linq.Mapping.TableAttribute)
-                    {
-                        tableName = ((System.Data.Linq.Mapping.TableAttribute)obj).Name;
-                    }
-                }
-                string sql = string.Format("DELETE FROM {0} WHERE Quantity={1}", tableName, TestQuantity);
-                db.ExecuteCommand(sql);
-            }
-            catch (Exception)
-            {
-            }
-        }
-
-        [Test]
-        public void CP1_DeletePreviousRows()
-        {
-            //delete any rows from previous testing
-            Northwind db = CreateDB();
-            // PC: this test was wrong, DeleteOnSubmit requires the object to be attached 
-            // (by query result or manually, we chose here the query result)
-            //var orderDetail = new OrderDetail { OrderID = 3, ProductID = 2 };
-            //db.OrderDetails.DeleteOnSubmit(orderDetail);
-            var toDelete = from o in db.OrderDetails where o.OrderID == 3 && o.ProductID == 2 select o;
-            db.OrderDetails.DeleteAllOnSubmit(toDelete);
-            db.SubmitChanges();
-        }
-
-        [Test]
-        public void CP2_UpdateTableWithCompositePK()
-        {
-            Northwind db = CreateDB();
-            cleanup(db);
-
-            var order   = db.Orders.First();
-            var product = db.Products.First();
-
-            var startUnitPrice = 33000;
-            var endUnitPrice   = 34000;
-
-            var orderDetail = new OrderDetail
-            {
-                OrderID   = order.OrderID,
-                ProductID = product.ProductID,
-                Quantity  = TestQuantity,
-                UnitPrice = startUnitPrice
-            };
-
-            db.OrderDetails.InsertOnSubmit(orderDetail);
-            db.SubmitChanges();
-
-            orderDetail.UnitPrice = endUnitPrice;
-            db.SubmitChanges();
-
-            OrderDetail orderDetail2 = (from c in db.OrderDetails
-                                        where c.UnitPrice == endUnitPrice
-                                        select c).Single();
-
-            Assert.IsTrue(object.ReferenceEquals(orderDetail, orderDetail2), "Must be same object");
-
-            Assert.AreEqual(order.OrderID,      orderDetail2.OrderID);
-            Assert.AreEqual(product.ProductID,  orderDetail2.ProductID);
-            Assert.AreEqual(endUnitPrice,       orderDetail2.UnitPrice);
-
-            db.OrderDetails.DeleteOnSubmit(orderDetail);
-            db.SubmitChanges();
-        }
-
-        [Test]
-        public void CP3_DeleteTableWithCompositePK()
-        {
-            Northwind db = CreateDB();
-            cleanup(db);
-            int initialCount = db.OrderDetails.Count();
-
-            var order = db.Orders.First();
-            var product = db.Products.First();
-
-            var orderDetail = new OrderDetail {
-                OrderID   = order.OrderID,
-                ProductID = product.ProductID,
-                Quantity  = TestQuantity
-            };
-            db.OrderDetails.InsertOnSubmit(orderDetail);
-            db.SubmitChanges();
-
-            Assert.AreEqual(db.OrderDetails.Count(), initialCount + 1);
-            db.OrderDetails.DeleteOnSubmit(orderDetail);
-            db.SubmitChanges();
-
-            Assert.AreEqual(db.OrderDetails.Count(), initialCount);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(ChangeConflictException))]
-        public void CP4_UnchangedColumnShouldNotUpdated()
-        {
-            Random rand = new Random();
-
-            Northwind db = CreateDB();
-            var orderDetail = new OrderDetail { OrderID = 1, ProductID=2};
-            db.OrderDetails.Attach(orderDetail);
-
-            float newDiscount = 15 + (float)rand.NextDouble();
-            orderDetail.Discount = newDiscount;
-            db.SubmitChanges();
-
-            //this test is bad conceptually, for this reason last two lines has been commented and now a changeConflictException is expected.
-            //This is the behaviour in linq2sl.
-
-            //var orderDetail2 = db.OrderDetails.Single(od => od.OrderID == 1);
-            //Assert.AreEqual((float)orderDetail2.Discount, newDiscount);
-        }
-
-        [Test(Description = "Check that both keys are used to determine identity")]
-        public void CP5_Composite_ObjectIdentity()
-        {
-            Northwind db = CreateDB();
-
-            var d = db.OrderDetails.First();
-            var q = db.OrderDetails.Where(od => od.ProductID == d.ProductID && od.OrderID == d.OrderID);
-            OrderDetail row1 = q.Single();
-            Assert.IsTrue(object.ReferenceEquals(d, row1));
-        }
-
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+using System.Data.Linq;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class CompositePK_Test : TestBase
+    {
+        const short TestQuantity = short.MaxValue;
+
+        protected void cleanup(Northwind db)
+        {
+            try
+            {
+                // Get the name of the Order Details table properly evaluating the Annotation
+                string tableName = null;// db.Vendor.GetSqlFieldSafeName("order details"); //eg. "[Order Details]"
+                foreach (object obj in typeof(OrderDetail).GetCustomAttributes(true))
+                {
+                    if (obj is System.Data.Linq.Mapping.TableAttribute)
+                    {
+                        tableName = ((System.Data.Linq.Mapping.TableAttribute)obj).Name;
+                    }
+                }
+                string sql = string.Format("DELETE FROM {0} WHERE Quantity={1}", tableName, TestQuantity);
+                db.ExecuteCommand(sql);
+            }
+            catch (Exception)
+            {
+            }
+        }
+
+        [Test]
+        public void CP1_DeletePreviousRows()
+        {
+            //delete any rows from previous testing
+            Northwind db = CreateDB();
+            // PC: this test was wrong, DeleteOnSubmit requires the object to be attached 
+            // (by query result or manually, we chose here the query result)
+            //var orderDetail = new OrderDetail { OrderID = 3, ProductID = 2 };
+            //db.OrderDetails.DeleteOnSubmit(orderDetail);
+            var toDelete = from o in db.OrderDetails where o.OrderID == 3 && o.ProductID == 2 select o;
+            db.OrderDetails.DeleteAllOnSubmit(toDelete);
+            db.SubmitChanges();
+        }
+
+        [Test]
+        public void CP2_UpdateTableWithCompositePK()
+        {
+            Northwind db = CreateDB();
+            cleanup(db);
+
+            var order   = db.Orders.First();
+            var product = db.Products.First();
+
+            var startUnitPrice = 33000;
+            var endUnitPrice   = 34000;
+
+            var orderDetail = new OrderDetail
+            {
+                OrderID   = order.OrderID,
+                ProductID = product.ProductID,
+                Quantity  = TestQuantity,
+                UnitPrice = startUnitPrice
+            };
+
+            db.OrderDetails.InsertOnSubmit(orderDetail);
+            db.SubmitChanges();
+
+            orderDetail.UnitPrice = endUnitPrice;
+            db.SubmitChanges();
+
+            OrderDetail orderDetail2 = (from c in db.OrderDetails
+                                        where c.UnitPrice == endUnitPrice
+                                        select c).Single();
+
+            Assert.IsTrue(object.ReferenceEquals(orderDetail, orderDetail2), "Must be same object");
+
+            Assert.AreEqual(order.OrderID,      orderDetail2.OrderID);
+            Assert.AreEqual(product.ProductID,  orderDetail2.ProductID);
+            Assert.AreEqual(endUnitPrice,       orderDetail2.UnitPrice);
+
+            db.OrderDetails.DeleteOnSubmit(orderDetail);
+            db.SubmitChanges();
+        }
+
+        [Test]
+        public void CP3_DeleteTableWithCompositePK()
+        {
+            Northwind db = CreateDB();
+            cleanup(db);
+            int initialCount = db.OrderDetails.Count();
+
+            var order = db.Orders.First();
+            var product = db.Products.First();
+
+            var orderDetail = new OrderDetail {
+                OrderID   = order.OrderID,
+                ProductID = product.ProductID,
+                Quantity  = TestQuantity
+            };
+            db.OrderDetails.InsertOnSubmit(orderDetail);
+            db.SubmitChanges();
+
+            Assert.AreEqual(db.OrderDetails.Count(), initialCount + 1);
+            db.OrderDetails.DeleteOnSubmit(orderDetail);
+            db.SubmitChanges();
+
+            Assert.AreEqual(db.OrderDetails.Count(), initialCount);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(ChangeConflictException))]
+        public void CP4_UnchangedColumnShouldNotUpdated()
+        {
+            Random rand = new Random();
+
+            Northwind db = CreateDB();
+            var orderDetail = new OrderDetail { OrderID = 1, ProductID=2};
+            db.OrderDetails.Attach(orderDetail);
+
+            float newDiscount = 15 + (float)rand.NextDouble();
+            orderDetail.Discount = newDiscount;
+            db.SubmitChanges();
+
+            //this test is bad conceptually, for this reason last two lines has been commented and now a changeConflictException is expected.
+            //This is the behaviour in linq2sl.
+
+            //var orderDetail2 = db.OrderDetails.Single(od => od.OrderID == 1);
+            //Assert.AreEqual((float)orderDetail2.Discount, newDiscount);
+        }
+
+        [Test(Description = "Check that both keys are used to determine identity")]
+        public void CP5_Composite_ObjectIdentity()
+        {
+            Northwind db = CreateDB();
+
+            var d = db.OrderDetails.First();
+            var q = db.OrderDetails.Where(od => od.ProductID == d.ProductID && od.OrderID == d.OrderID);
+            OrderDetail row1 = q.Single();
+            Assert.IsTrue(object.ReferenceEquals(d, row1));
+        }
+
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DataContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DataContext.cs
@@ -1,77 +1,77 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-using System.Data.Linq;
-
-#if !MONO_STRICT
-using nwind;
-#else
-using MsNorthwind;
-#endif
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class DataContext : TestBase
-    {
-        [Test]
-        public void GetCommand()
-        {
-            var db = CreateDB();
-            string country = "Spain";
-            var cust = db.Customers.Where(c => c.Country == country);
-            var dbCommand=db.GetCommand(cust);
-            
-
-            Assert.IsNotNull(dbCommand.CommandText);
-            Assert.Greater(dbCommand.Parameters.Count, 0);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+using System.Data.Linq;
+
+#if !MONO_STRICT
+using nwind;
+#else
+using MsNorthwind;
+#endif
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class DataContext : TestBase
+    {
+        [Test]
+        public void GetCommand()
+        {
+            var db = CreateDB();
+            string country = "Spain";
+            var cust = db.Customers.Where(c => c.Country == country);
+            var dbCommand=db.GetCommand(cust);
+            
+
+            Assert.IsNotNull(dbCommand.CommandText);
+            Assert.Greater(dbCommand.Parameters.Count, 0);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DataContextTestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DataContextTestBase.cs
@@ -1,158 +1,158 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.Common;
-// using System.Data.Linq;
-using System.Data.Linq.Mapping;
-using System.Linq;
-using System.IO;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using NUnit.Framework;
-
-using DbLinq.Null;
-
-namespace DbLinqTest {
-
-    public abstract class DataContextTestBase
-    {
-        DataContext context;
-
-        protected DataContext Context {
-            get { return context; }
-        }
-
-        [SetUp]
-        public void SetUp()
-        {
-            context = CreateDataContext();
-        }
-
-        protected abstract DataContext CreateDataContext();
-
-        [TearDown]
-        public void TearDown()
-        {
-            context = null;
-        }
-
-        [Test]
-        public void ExecuteCommand()
-        {
-            context.Log = new StringWriter ();
-            try 
-            {
-                context.ExecuteCommand("SomeCommand", 1, 2, 3);
-            }
-            catch (NotSupportedException)
-            {
-            }
-            catch (Exception e)
-            {
-                Assert.Fail("# ExecuteCommand: Got exception {0}", e.ToString());
-            }
-            Console.WriteLine ("# ExecuteCommand: Log={0}", context.Log);
-        }
-
-        [Test]
-        public void ExecuteQuery()
-        {
-            context.Log = new StringWriter ();
-            try 
-            {
-                context.ExecuteQuery(typeof(Person), "select * from people", 1, 2, 3);
-            }
-            catch (NotSupportedException)
-            {
-            }
-            catch (Exception e)
-            {
-                Assert.Fail("# ExecuteQuery: unexpected exception: {0}", e.ToString());
-            }
-            Console.WriteLine ("# ExecuteQuery: Log={0}", context.Log);
-        }
-
-        [Test]
-        public void ExecuteQueryTResult()
-        {
-            context.Log = new StringWriter ();
-            try 
-            {
-                context.ExecuteQuery<Person>("select * from people", 1, 2, 3);
-            }
-            catch (NotSupportedException)
-            {
-            }
-            catch (Exception)
-            {
-                Assert.Fail();
-            }
-            Console.WriteLine ("# ExecuteQueryTResult: Log={0}", context.Log);
-        }
-
-        [Test]
-        public void GetChangeSet()
-        {
-            // TODO
-            context.GetChangeSet();
-        }
-
-        protected abstract string People(string firstName);
-        protected abstract string People(string firstName, string lastName);
-        protected abstract string People(string firstName, string lastName, int skip, int take);
-
-        [Test]
-        public void GetCommand()
-        {
-            var foos = 
-                from p in context.GetTable<Person>()
-                where p.FirstName == "foo"
-                select p;
-            var cmd = context.GetCommand(foos);
-
-            Assert.AreEqual(People("foo"), cmd.CommandText);
-
-            foos = foos.Where(p => p.LastName == "bar");
-            var cmd2 = context.GetCommand(foos);
-
-            Assert.IsFalse(object.ReferenceEquals(cmd, cmd2));
-
-            Assert.AreEqual(People("foo", "bar"), cmd2.CommandText);
-
-            foos = foos.Skip(1).Take(2);
-            cmd = context.GetCommand(foos);
-            Assert.AreEqual(People("foo", "bar", 1, 2), cmd.CommandText);
-        }
-    }
-}
-
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Common;
+// using System.Data.Linq;
+using System.Data.Linq.Mapping;
+using System.Linq;
+using System.IO;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using NUnit.Framework;
+
+using DbLinq.Null;
+
+namespace DbLinqTest {
+
+    public abstract class DataContextTestBase
+    {
+        DataContext context;
+
+        protected DataContext Context {
+            get { return context; }
+        }
+
+        [SetUp]
+        public void SetUp()
+        {
+            context = CreateDataContext();
+        }
+
+        protected abstract DataContext CreateDataContext();
+
+        [TearDown]
+        public void TearDown()
+        {
+            context = null;
+        }
+
+        [Test]
+        public void ExecuteCommand()
+        {
+            context.Log = new StringWriter ();
+            try 
+            {
+                context.ExecuteCommand("SomeCommand", 1, 2, 3);
+            }
+            catch (NotSupportedException)
+            {
+            }
+            catch (Exception e)
+            {
+                Assert.Fail("# ExecuteCommand: Got exception {0}", e.ToString());
+            }
+            Console.WriteLine ("# ExecuteCommand: Log={0}", context.Log);
+        }
+
+        [Test]
+        public void ExecuteQuery()
+        {
+            context.Log = new StringWriter ();
+            try 
+            {
+                context.ExecuteQuery(typeof(Person), "select * from people", 1, 2, 3);
+            }
+            catch (NotSupportedException)
+            {
+            }
+            catch (Exception e)
+            {
+                Assert.Fail("# ExecuteQuery: unexpected exception: {0}", e.ToString());
+            }
+            Console.WriteLine ("# ExecuteQuery: Log={0}", context.Log);
+        }
+
+        [Test]
+        public void ExecuteQueryTResult()
+        {
+            context.Log = new StringWriter ();
+            try 
+            {
+                context.ExecuteQuery<Person>("select * from people", 1, 2, 3);
+            }
+            catch (NotSupportedException)
+            {
+            }
+            catch (Exception)
+            {
+                Assert.Fail();
+            }
+            Console.WriteLine ("# ExecuteQueryTResult: Log={0}", context.Log);
+        }
+
+        [Test]
+        public void GetChangeSet()
+        {
+            // TODO
+            context.GetChangeSet();
+        }
+
+        protected abstract string People(string firstName);
+        protected abstract string People(string firstName, string lastName);
+        protected abstract string People(string firstName, string lastName, int skip, int take);
+
+        [Test]
+        public void GetCommand()
+        {
+            var foos = 
+                from p in context.GetTable<Person>()
+                where p.FirstName == "foo"
+                select p;
+            var cmd = context.GetCommand(foos);
+
+            Assert.AreEqual(People("foo"), cmd.CommandText);
+
+            foos = foos.Where(p => p.LastName == "bar");
+            var cmd2 = context.GetCommand(foos);
+
+            Assert.IsFalse(object.ReferenceEquals(cmd, cmd2));
+
+            Assert.AreEqual(People("foo", "bar"), cmd2.CommandText);
+
+            foos = foos.Skip(1).Take(2);
+            cmd = context.GetCommand(foos);
+            Assert.AreEqual(People("foo", "bar", 1, 2), cmd.CommandText);
+        }
+    }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DataLoadOptions_Test.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DataLoadOptions_Test.cs
@@ -1,131 +1,131 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace nwind
-{
-    public partial class Customer
-    {
-        public object ExtraneousMethod()
-        {
-            return null;
-        }
-    }
-}
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class DataLoadOptions_Test : TestBase
-    {
-        static object ThrowException()
-        {
-            throw new ApplicationException();
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void LoadWith_BadExpression1()
-        {
-            new DataLoadOptions().LoadWith<Customer>(cc => cc.ExtraneousMethod());
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void LoadWith_BadExpression2()
-        {
-            new DataLoadOptions().LoadWith<Customer>(cc => 1);
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void LoadWith_BadExpression3()
-        {
-            new DataLoadOptions().LoadWith<Customer>(cc => ThrowException());
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void LoadWith_BadExpression4()
-        {
-            new DataLoadOptions().LoadWith<Customer>(cc => cc.Orders.Select(o => o));
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void LoadWith_BadExpression5()
-        {
-            new DataLoadOptions().LoadWith<Order> (o => o.Customer.Orders);
-        }
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void LoadWith_BadCycles1()
-        {
-            var lo = new DataLoadOptions();
-            lo.LoadWith<Customer>(c => c.Orders);
-            lo.LoadWith<Order>(o => o.Customer);
-        }
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void LoadWith_BadCycles2()
-        {
-            var lo = new DataLoadOptions();
-            lo.LoadWith<Order>(o => o.Customer);
-            lo.LoadWith<Customer>(c => c.Orders);
-        }
-
-        [Test]
-        public void LoadWith_Good1()
-        {
-            var lo = new DataLoadOptions();
-            lo.LoadWith<Customer>(c => c.Orders);
-            lo.LoadWith<Order>(o => o.Employee);
-        }
-
-        [Test]
-        public void LoadWith_Good2()
-        {
-            var lo = new DataLoadOptions();
-            lo.LoadWith<Order>(o => o.Employee);
-            lo.LoadWith<Customer>(c => c.Orders);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace nwind
+{
+    public partial class Customer
+    {
+        public object ExtraneousMethod()
+        {
+            return null;
+        }
+    }
+}
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class DataLoadOptions_Test : TestBase
+    {
+        static object ThrowException()
+        {
+            throw new ApplicationException();
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void LoadWith_BadExpression1()
+        {
+            new DataLoadOptions().LoadWith<Customer>(cc => cc.ExtraneousMethod());
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void LoadWith_BadExpression2()
+        {
+            new DataLoadOptions().LoadWith<Customer>(cc => 1);
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void LoadWith_BadExpression3()
+        {
+            new DataLoadOptions().LoadWith<Customer>(cc => ThrowException());
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void LoadWith_BadExpression4()
+        {
+            new DataLoadOptions().LoadWith<Customer>(cc => cc.Orders.Select(o => o));
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void LoadWith_BadExpression5()
+        {
+            new DataLoadOptions().LoadWith<Order> (o => o.Customer.Orders);
+        }
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void LoadWith_BadCycles1()
+        {
+            var lo = new DataLoadOptions();
+            lo.LoadWith<Customer>(c => c.Orders);
+            lo.LoadWith<Order>(o => o.Customer);
+        }
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void LoadWith_BadCycles2()
+        {
+            var lo = new DataLoadOptions();
+            lo.LoadWith<Order>(o => o.Customer);
+            lo.LoadWith<Customer>(c => c.Orders);
+        }
+
+        [Test]
+        public void LoadWith_Good1()
+        {
+            var lo = new DataLoadOptions();
+            lo.LoadWith<Customer>(c => c.Orders);
+            lo.LoadWith<Order>(o => o.Employee);
+        }
+
+        [Test]
+        public void LoadWith_Good2()
+        {
+            var lo = new DataLoadOptions();
+            lo.LoadWith<Order>(o => o.Employee);
+            lo.LoadWith<Customer>(c => c.Orders);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DynamicLinqTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/DynamicLinqTest.cs
@@ -1,337 +1,337 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using System.Linq.Dynamic;
-using Test_NUnit;
-using System.Linq.Expressions;
-using System.Reflection;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class DynamicLinqTest : TestBase
-    {
-        [Test]
-        public void DL1_Products()
-        {
-            Northwind db = CreateDB();
-
-            var q = db.Products.Where("SupplierID=1 And UnitsInStock>2")
-                .OrderBy("ProductID");
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0, "Expected results from dynamic query");
-        }
-
-        [Test]
-        public void DL2_ProductCount()
-        {
-            Northwind db = CreateDB();
-
-            int numProducts = db.Products.Where("SupplierID=1").Count();
-            Assert.IsTrue(numProducts > 0, "Expected results from dynamic query");
-        }
-
-        //note:
-        //user Sqlite reports problems with DynamicLinq Count() -
-        //but neither DL2 nor DL3 tests seem to hit the problem.
-
-        [Test]
-        public void DL3_ProductCount()
-        {
-            Northwind db = CreateDB();
-
-            int numProducts = db.Products.Count();
-            Assert.IsTrue(numProducts > 0, "Expected results from dynamic query");
-        }
-
-        [Test]
-        public void DL4_DynamicAssociationProperty()
-        {
-
-            Northwind db = CreateDB();
-            var orders = db.GetTable<Order>();
-            var res = orders.Select(@"new (OrderID,Customer.ContactName)");
-
-            List<object> list = new List<object>();
-            foreach (var u in res)
-                list.Add(u);
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        #region NestedPropertiesDynamicSelect
-
-        const string obsoleteError=@"Since beta2 in Linq2Sql to project a new entity (ie: select new Order(3)) is forbidden for coherence reasons, so this tests doesn't mimic the Linq2Sql behavior and it is obsolete and should be modified. If you apply such test cases to Linq2Sql you'll get Test_NUnit_MsSql_Strict.DynamicLinqTest.DL5_NestedObjectSelect:
-        System.NotSupportedException : Explicit construction of entity type 'MsNorthwind.XX' in query is not allowed.\n\nMore Info in: http://linqinaction.net/blogs/roller/archive/2007/11/27/explicit-construction-of-entity-type-in-query-is-not-allowed.aspx";
-        [Test(Description = "dynamic version of F16_NestedObjectSelect")]
-        public void DL5_NestedObjectSelect()
-        {
-            Assert.Ignore(obsoleteError);
-            Northwind db = CreateDB();
-            var orders = db.GetTable<Order>();
-            var res = orders.SelectNested(new string[] { "OrderID", "Customer.ContactName" });
-
-            List<Order> list = res.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void DL6_StaticVersionOfDynamicAssociatonWithExtensionMethodTest(bool bug_in_dynamic_linq)
-        {
-            Assert.Ignore(obsoleteError);
-
-            //is this maybe a bug in DynamicLinq?
-            //from DynamicLinq, we receive this query which has ContactName but misses ContactTitle:
-            //MTable.CreateQuery: value(Table`1[Order]).Select(o => new Order() {OrderID = o.OrderID, Customer = new Customer() {ContactName = o.Customer.ContactName}})
-
-            //Also - the non-dynamic version F17_NestedObjectSelect_Ver2 succeeds.
-
-            Northwind db = CreateDB();
-            var orders = db.GetTable<Order>().ToArray().AsQueryable();
-
-            var query = from order in orders
-                        //where order.Customer != null
-                        select new Order
-                        {
-                            OrderID = order.OrderID,
-                            Customer = new Customer
-                            {
-                                ContactName = order.Customer.ContactName,
-                                ContactTitle = order.Customer.ContactTitle
-                            }
-                        };
-            var list = query.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void DL7_DynamicAssociatonUsingDoubleProjection(bool bug_in_dynamic_linq)
-        {
-            Assert.Ignore(obsoleteError);
-
-            //this fails - but not in our code:
-            //A first chance exception of type 'System.NullReferenceException' occurred in Unknown Module.
-            //System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Unhandled exception</Description><AppDomain>Test_NUnit_Mysql.vshost.exe</AppDomain><Exception><ExceptionType>System.NullReferenceException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>Object reference not set to an instance of an object.</Message><StackTrace>   at lambda_method(ExecutionScope , Order )
-            //   at System.Linq.Enumerable.&amp;lt;SelectIterator&amp;gt;d__d`2.MoveNext()
-            //   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
-            //   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
-            //   at Test_NUnit_MySql.DynamicLinqTest.DL7_DynamicAssociatonUsingDoubleProjection() in E:\ggprj\dbLinq\dblinq2007\Tests\Test_NUnit\DynamicLinqTest.cs:line 150
-
-            Northwind db = CreateDB();
-
-            // Double projection works in Linq-SQL:
-            var orders = db.GetTable<Order>().ToArray().AsQueryable();
-            var query = orders.SelectNested(new string[] { "OrderID", "Customer.ContactName" });
-            var list = query.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        #endregion
-
-        #region Predicates
-
-        /// <summary>
-        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=68
-        /// </summary>
-        [Test]
-        public void DL8_CountTest2()
-        {
-            Northwind db = CreateDB();
-            Expression<Func<Customer, bool>> predicate = c => c.City == "Paris";
-            int count = db.Customers.Count(predicate);
-            Assert.Greater(count, 0); // Some databases have more than 1 customer in Paris
-        }
-
-        /// <summary>
-        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=69
-        /// </summary>
-        [Test]
-        public void DL9_PredicateBuilderCount()
-        {
-            //2008.May.17: breaks because we are not handling an 'InvocationExpression' in ExpressionTreeParser.
-            //possibily a tree rewrite is needed.
-            Northwind db = CreateDB();
-            var predicate = PredicateBuilder.True<Customer>();
-            predicate = predicate.And(m => m.City == "Paris");
-            int predicateCount  = db.Customers.Count(predicate);
-            int normalCount     = db.Customers.Where(c => c.City == "Paris").Count();
-            Assert.AreEqual(normalCount, predicateCount);
-        }
-
-
-        /// <summary>
-        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=69
-        /// </summary>
-        [Test]
-        public void DL10_PredicateBuilderWhere()
-        {
-            Northwind db = CreateDB();
-            var predicate = PredicateBuilder.True<Customer>();
-
-            predicate = predicate.And(m => m.City == "Paris");
-            predicate = predicate.And(n => n.CompanyName == "Around the Horn");
-            IList<Customer> list = db.Customers.AsQueryable().Where(predicate).ToList();
-        }
-
-        /// <summary>
-        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=73
-        /// </summary>
-        [Test]
-        public void DL11_ThenByDescending()
-        {
-            Northwind db = CreateDB();
-            var q = db.Products.Where("SupplierID=1 And UnitsInStock>2")
-                .OrderBy(" ProductName asc,ProductID desc");
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0, "Expected results from dynamic query");
-        }
-
-        /// <summary>
-        /// Build predicate expressions dynamically.
-        /// </summary>
-        static class PredicateBuilder
-        {
-            public static Expression<Func<T, bool>> True<T>() { return f => true; }
-            public static Expression<Func<T, bool>> False<T>() { return f => false; }
-        }
-
-        // Test patch from:
-        // http://groups.google.com/group/dblinq/browse_frm/thread/9fa41554044afeaa/4ef1605e020be9fc?lnk=raot#4ef1605e020be9fc
-        [Test]
-        public void DL12_Count_Via_Expression()
-        {
-            var db = CreateDB();
-            IQueryable employees = db.Employees;
-            var employeeCount = (int) employees.Provider.Execute(
-                Expression.Call(typeof(Queryable), "Count",
-                    new Type[]{employees.ElementType},
-                    employees.Expression));
-            Assert.AreEqual(9, employeeCount);
-        }
-
-    }
-        #endregion
-
-    #region ExtensionMethods
-
-    /// <summary>
-    /// Extension written by Marc Gravell.
-    /// Traverses nested properties
-    /// </summary>
-    static class SelectUsingSingleProjection
-    {
-        internal static IQueryable<T> SelectNested<T>(this IQueryable<T> source, params string[] propertyNames)
-            where T : new()
-        {
-            Type type = typeof(T);
-            var sourceItem = Expression.Parameter(type, "t");
-            Expression exp = CreateAndInit(type, sourceItem, propertyNames);
-            return source.Select(Expression.Lambda<Func<T, T>>(exp, sourceItem));
-        }
-
-        static Expression CreateAndInit(Type type, Expression source, string[] propertyNames)
-        {
-            if (type == null) throw new ArgumentNullException("type");
-            if (source == null) throw new ArgumentNullException("source");
-            if (propertyNames == null) throw new ArgumentNullException("propertyNames");
-
-            var newExpr = Expression.New(type.GetConstructor(Type.EmptyTypes));
-            // take "Foo.A", "Bar", "Foo.B" to "Foo" ["A","B"], "Bar" []
-            var groupedNames = from name in propertyNames
-                               let dotIndex = name.IndexOf('.')
-                               let primary = dotIndex < 0 ? name : name.Substring(0, dotIndex)
-                               let aux = dotIndex < 0 ? null : name.Substring(dotIndex + 1)
-                               group aux by primary into grouped
-                               select new
-                               {
-                                   Primary = grouped.Key,
-                                   Aux = grouped.Where(x => x != null).ToArray()
-                               };
-            List<MemberBinding> bindings = new List<MemberBinding>();
-            foreach (var grp in groupedNames)
-            {
-                PropertyInfo dest = type.GetProperty(grp.Primary);
-                Expression value, readFrom = Expression.Property(source, grp.Primary);
-                if (grp.Aux.Length == 0)
-                {
-                    value = readFrom;
-                }
-                else
-                {
-                    value = CreateAndInit(dest.PropertyType, readFrom, grp.Aux);
-                }
-                bindings.Add(Expression.Bind(dest, value));
-            }
-            return Expression.MemberInit(newExpr, bindings);
-        }
-
-
-        /// <summary>
-        /// Extension method provided by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=69
-        /// </summary>
-        internal static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
-                                                        Expression<Func<T, bool>> expr2)
-        {
-            var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
-            return Expression.Lambda<Func<T, bool>>
-                  (Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters);
-        }
-
-        internal static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
-            Expression<Func<T, bool>> expr2)
-        {
-            var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
-            return Expression.Lambda<Func<T, bool>>
-                  (Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
-        }
-    }
-    #endregion
-
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using System.Linq.Dynamic;
+using Test_NUnit;
+using System.Linq.Expressions;
+using System.Reflection;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class DynamicLinqTest : TestBase
+    {
+        [Test]
+        public void DL1_Products()
+        {
+            Northwind db = CreateDB();
+
+            var q = db.Products.Where("SupplierID=1 And UnitsInStock>2")
+                .OrderBy("ProductID");
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0, "Expected results from dynamic query");
+        }
+
+        [Test]
+        public void DL2_ProductCount()
+        {
+            Northwind db = CreateDB();
+
+            int numProducts = db.Products.Where("SupplierID=1").Count();
+            Assert.IsTrue(numProducts > 0, "Expected results from dynamic query");
+        }
+
+        //note:
+        //user Sqlite reports problems with DynamicLinq Count() -
+        //but neither DL2 nor DL3 tests seem to hit the problem.
+
+        [Test]
+        public void DL3_ProductCount()
+        {
+            Northwind db = CreateDB();
+
+            int numProducts = db.Products.Count();
+            Assert.IsTrue(numProducts > 0, "Expected results from dynamic query");
+        }
+
+        [Test]
+        public void DL4_DynamicAssociationProperty()
+        {
+
+            Northwind db = CreateDB();
+            var orders = db.GetTable<Order>();
+            var res = orders.Select(@"new (OrderID,Customer.ContactName)");
+
+            List<object> list = new List<object>();
+            foreach (var u in res)
+                list.Add(u);
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        #region NestedPropertiesDynamicSelect
+
+        const string obsoleteError=@"Since beta2 in Linq2Sql to project a new entity (ie: select new Order(3)) is forbidden for coherence reasons, so this tests doesn't mimic the Linq2Sql behavior and it is obsolete and should be modified. If you apply such test cases to Linq2Sql you'll get Test_NUnit_MsSql_Strict.DynamicLinqTest.DL5_NestedObjectSelect:
+        System.NotSupportedException : Explicit construction of entity type 'MsNorthwind.XX' in query is not allowed.\n\nMore Info in: http://linqinaction.net/blogs/roller/archive/2007/11/27/explicit-construction-of-entity-type-in-query-is-not-allowed.aspx";
+        [Test(Description = "dynamic version of F16_NestedObjectSelect")]
+        public void DL5_NestedObjectSelect()
+        {
+            Assert.Ignore(obsoleteError);
+            Northwind db = CreateDB();
+            var orders = db.GetTable<Order>();
+            var res = orders.SelectNested(new string[] { "OrderID", "Customer.ContactName" });
+
+            List<Order> list = res.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void DL6_StaticVersionOfDynamicAssociatonWithExtensionMethodTest(bool bug_in_dynamic_linq)
+        {
+            Assert.Ignore(obsoleteError);
+
+            //is this maybe a bug in DynamicLinq?
+            //from DynamicLinq, we receive this query which has ContactName but misses ContactTitle:
+            //MTable.CreateQuery: value(Table`1[Order]).Select(o => new Order() {OrderID = o.OrderID, Customer = new Customer() {ContactName = o.Customer.ContactName}})
+
+            //Also - the non-dynamic version F17_NestedObjectSelect_Ver2 succeeds.
+
+            Northwind db = CreateDB();
+            var orders = db.GetTable<Order>().ToArray().AsQueryable();
+
+            var query = from order in orders
+                        //where order.Customer != null
+                        select new Order
+                        {
+                            OrderID = order.OrderID,
+                            Customer = new Customer
+                            {
+                                ContactName = order.Customer.ContactName,
+                                ContactTitle = order.Customer.ContactTitle
+                            }
+                        };
+            var list = query.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void DL7_DynamicAssociatonUsingDoubleProjection(bool bug_in_dynamic_linq)
+        {
+            Assert.Ignore(obsoleteError);
+
+            //this fails - but not in our code:
+            //A first chance exception of type 'System.NullReferenceException' occurred in Unknown Module.
+            //System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Unhandled exception</Description><AppDomain>Test_NUnit_Mysql.vshost.exe</AppDomain><Exception><ExceptionType>System.NullReferenceException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>Object reference not set to an instance of an object.</Message><StackTrace>   at lambda_method(ExecutionScope , Order )
+            //   at System.Linq.Enumerable.&amp;lt;SelectIterator&amp;gt;d__d`2.MoveNext()
+            //   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
+            //   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
+            //   at Test_NUnit_MySql.DynamicLinqTest.DL7_DynamicAssociatonUsingDoubleProjection() in E:\ggprj\dbLinq\dblinq2007\Tests\Test_NUnit\DynamicLinqTest.cs:line 150
+
+            Northwind db = CreateDB();
+
+            // Double projection works in Linq-SQL:
+            var orders = db.GetTable<Order>().ToArray().AsQueryable();
+            var query = orders.SelectNested(new string[] { "OrderID", "Customer.ContactName" });
+            var list = query.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        #endregion
+
+        #region Predicates
+
+        /// <summary>
+        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=68
+        /// </summary>
+        [Test]
+        public void DL8_CountTest2()
+        {
+            Northwind db = CreateDB();
+            Expression<Func<Customer, bool>> predicate = c => c.City == "Paris";
+            int count = db.Customers.Count(predicate);
+            Assert.Greater(count, 0); // Some databases have more than 1 customer in Paris
+        }
+
+        /// <summary>
+        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=69
+        /// </summary>
+        [Test]
+        public void DL9_PredicateBuilderCount()
+        {
+            //2008.May.17: breaks because we are not handling an 'InvocationExpression' in ExpressionTreeParser.
+            //possibily a tree rewrite is needed.
+            Northwind db = CreateDB();
+            var predicate = PredicateBuilder.True<Customer>();
+            predicate = predicate.And(m => m.City == "Paris");
+            int predicateCount  = db.Customers.Count(predicate);
+            int normalCount     = db.Customers.Where(c => c.City == "Paris").Count();
+            Assert.AreEqual(normalCount, predicateCount);
+        }
+
+
+        /// <summary>
+        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=69
+        /// </summary>
+        [Test]
+        public void DL10_PredicateBuilderWhere()
+        {
+            Northwind db = CreateDB();
+            var predicate = PredicateBuilder.True<Customer>();
+
+            predicate = predicate.And(m => m.City == "Paris");
+            predicate = predicate.And(n => n.CompanyName == "Around the Horn");
+            IList<Customer> list = db.Customers.AsQueryable().Where(predicate).ToList();
+        }
+
+        /// <summary>
+        /// Reported by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=73
+        /// </summary>
+        [Test]
+        public void DL11_ThenByDescending()
+        {
+            Northwind db = CreateDB();
+            var q = db.Products.Where("SupplierID=1 And UnitsInStock>2")
+                .OrderBy(" ProductName asc,ProductID desc");
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0, "Expected results from dynamic query");
+        }
+
+        /// <summary>
+        /// Build predicate expressions dynamically.
+        /// </summary>
+        static class PredicateBuilder
+        {
+            public static Expression<Func<T, bool>> True<T>() { return f => true; }
+            public static Expression<Func<T, bool>> False<T>() { return f => false; }
+        }
+
+        // Test patch from:
+        // http://groups.google.com/group/dblinq/browse_frm/thread/9fa41554044afeaa/4ef1605e020be9fc?lnk=raot#4ef1605e020be9fc
+        [Test]
+        public void DL12_Count_Via_Expression()
+        {
+            var db = CreateDB();
+            IQueryable employees = db.Employees;
+            var employeeCount = (int) employees.Provider.Execute(
+                Expression.Call(typeof(Queryable), "Count",
+                    new Type[]{employees.ElementType},
+                    employees.Expression));
+            Assert.AreEqual(9, employeeCount);
+        }
+
+    }
+        #endregion
+
+    #region ExtensionMethods
+
+    /// <summary>
+    /// Extension written by Marc Gravell.
+    /// Traverses nested properties
+    /// </summary>
+    static class SelectUsingSingleProjection
+    {
+        internal static IQueryable<T> SelectNested<T>(this IQueryable<T> source, params string[] propertyNames)
+            where T : new()
+        {
+            Type type = typeof(T);
+            var sourceItem = Expression.Parameter(type, "t");
+            Expression exp = CreateAndInit(type, sourceItem, propertyNames);
+            return source.Select(Expression.Lambda<Func<T, T>>(exp, sourceItem));
+        }
+
+        static Expression CreateAndInit(Type type, Expression source, string[] propertyNames)
+        {
+            if (type == null) throw new ArgumentNullException("type");
+            if (source == null) throw new ArgumentNullException("source");
+            if (propertyNames == null) throw new ArgumentNullException("propertyNames");
+
+            var newExpr = Expression.New(type.GetConstructor(Type.EmptyTypes));
+            // take "Foo.A", "Bar", "Foo.B" to "Foo" ["A","B"], "Bar" []
+            var groupedNames = from name in propertyNames
+                               let dotIndex = name.IndexOf('.')
+                               let primary = dotIndex < 0 ? name : name.Substring(0, dotIndex)
+                               let aux = dotIndex < 0 ? null : name.Substring(dotIndex + 1)
+                               group aux by primary into grouped
+                               select new
+                               {
+                                   Primary = grouped.Key,
+                                   Aux = grouped.Where(x => x != null).ToArray()
+                               };
+            List<MemberBinding> bindings = new List<MemberBinding>();
+            foreach (var grp in groupedNames)
+            {
+                PropertyInfo dest = type.GetProperty(grp.Primary);
+                Expression value, readFrom = Expression.Property(source, grp.Primary);
+                if (grp.Aux.Length == 0)
+                {
+                    value = readFrom;
+                }
+                else
+                {
+                    value = CreateAndInit(dest.PropertyType, readFrom, grp.Aux);
+                }
+                bindings.Add(Expression.Bind(dest, value));
+            }
+            return Expression.MemberInit(newExpr, bindings);
+        }
+
+
+        /// <summary>
+        /// Extension method provided by pwy.mail in issue http://code.google.com/p/dblinq2007/issues/detail?id=69
+        /// </summary>
+        internal static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
+                                                        Expression<Func<T, bool>> expr2)
+        {
+            var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
+            return Expression.Lambda<Func<T, bool>>
+                  (Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters);
+        }
+
+        internal static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
+            Expression<Func<T, bool>> expr2)
+        {
+            var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
+            return Expression.Lambda<Func<T, bool>>
+                  (Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
+        }
+    }
+    #endregion
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ExecuteCommand_Test.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ExecuteCommand_Test.cs
@@ -1,92 +1,92 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ExecuteCommand_Test : TestBase
-    {
-#if !DEBUG && (MSSQL && L2SQL)
-        // DataContext.ExecuteScalar() working with 'SELECT COUNT(*)' is a DbLinq extension.
-        // Exclude from Linq2Sql comparison tests.
-        [Explicit]
-#endif
-        [Test]
-        public void A2_ProductsTableHasEntries()
-        {
-            Northwind db = CreateDB();
-            int result = db.ExecuteCommand("SELECT count(*) FROM \"Products\"");
-            Assert.Greater(result, 0, "Expecting some rows in Products table, got:" + result);
-        }
-
-        /// <summary>
-        /// like above, but includes one parameter.
-        /// </summary>
-#if !DEBUG && (MSSQL && L2SQL)
-        // DataContext.ExecuteScalar() working with 'SELECT COUNT(*)' is a DbLinq extension.
-        // Exclude from Linq2Sql comparison tests.
-        [Explicit]
-#endif
-        [Test]
-        public void A3_ProductCount_Param()
-        {
-            Northwind db = CreateDB();
-            int result = db.ExecuteCommand("SELECT count(*) FROM [Products] WHERE [ProductID]>{0}", 3);
-            //long iResult = base.ExecuteScalar(sql);
-            Assert.Greater(result, 0, "Expecting some rows in Products table, got:" + result);
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ExecuteCommand_Test : TestBase
+    {
+#if !DEBUG && (MSSQL && L2SQL)
+        // DataContext.ExecuteScalar() working with 'SELECT COUNT(*)' is a DbLinq extension.
+        // Exclude from Linq2Sql comparison tests.
+        [Explicit]
+#endif
+        [Test]
+        public void A2_ProductsTableHasEntries()
+        {
+            Northwind db = CreateDB();
+            int result = db.ExecuteCommand("SELECT count(*) FROM \"Products\"");
+            Assert.Greater(result, 0, "Expecting some rows in Products table, got:" + result);
+        }
+
+        /// <summary>
+        /// like above, but includes one parameter.
+        /// </summary>
+#if !DEBUG && (MSSQL && L2SQL)
+        // DataContext.ExecuteScalar() working with 'SELECT COUNT(*)' is a DbLinq extension.
+        // Exclude from Linq2Sql comparison tests.
+        [Explicit]
+#endif
+        [Test]
+        public void A3_ProductCount_Param()
+        {
+            Northwind db = CreateDB();
+            int result = db.ExecuteCommand("SELECT count(*) FROM [Products] WHERE [ProductID]>{0}", 3);
+            //long iResult = base.ExecuteScalar(sql);
+            Assert.Greater(result, 0, "Expecting some rows in Products table, got:" + result);
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ExecuteQuery_Test.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ExecuteQuery_Test.cs
@@ -1,80 +1,80 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ExecuteQuery_Test : TestBase
-    {
-        [Test]
-        public void X1_SimpleQuery()
-        {
-            var db = CreateDB();
-
-            IList<Category> categories1 = (from c in db.Categories orderby c.CategoryName select c).ToList();
-            IList<Category> categories2 = db.ExecuteQuery<Category>(
-                @"select 
-                        [Description], 
-                        [CategoryName], 
-                        [Picture],
-                        [CategoryID]
-                    from [Categories]
-                     order by [CategoryName]").ToList();
-
-            Assert.AreEqual(categories1.Count, categories2.Count);
-            for (int index = 0; index < categories2.Count; index++)
-            {
-                Assert.AreEqual(categories1[index].CategoryID, categories2[index].CategoryID);
-                Assert.AreEqual(categories1[index].CategoryName, categories2[index].CategoryName);
-                Assert.AreEqual(categories1[index].Description, categories2[index].Description);
-            }
-        }
-
-        [Test]
-        public void X2_CheckChanges()
-        {
-            var db = CreateDB();
-            string query = "SELECT * FROM \"Customers\";";
-
-            var characters = db.ExecuteQuery<Customer>(query);
-            var character = characters.First();
-
-            string beforecountry = character.Country;
-            character.Country = "Burmuda";
-
-            Assert.Greater(db.GetChangeSet().Updates.Count, 0);
-            db.SubmitChanges();
-
-            var character2 = db.Customers.First(c=>c.CustomerID==character.CustomerID);
-            Assert.AreEqual(character2.Country, "Burmuda");
-
-            character2.Country = beforecountry;
-            db.SubmitChanges();
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ExecuteQuery_Test : TestBase
+    {
+        [Test]
+        public void X1_SimpleQuery()
+        {
+            var db = CreateDB();
+
+            IList<Category> categories1 = (from c in db.Categories orderby c.CategoryName select c).ToList();
+            IList<Category> categories2 = db.ExecuteQuery<Category>(
+                @"select 
+                        [Description], 
+                        [CategoryName], 
+                        [Picture],
+                        [CategoryID]
+                    from [Categories]
+                     order by [CategoryName]").ToList();
+
+            Assert.AreEqual(categories1.Count, categories2.Count);
+            for (int index = 0; index < categories2.Count; index++)
+            {
+                Assert.AreEqual(categories1[index].CategoryID, categories2[index].CategoryID);
+                Assert.AreEqual(categories1[index].CategoryName, categories2[index].CategoryName);
+                Assert.AreEqual(categories1[index].Description, categories2[index].Description);
+            }
+        }
+
+        [Test]
+        public void X2_CheckChanges()
+        {
+            var db = CreateDB();
+            string query = "SELECT * FROM \"Customers\";";
+
+            var characters = db.ExecuteQuery<Customer>(query);
+            var character = characters.First();
+
+            string beforecountry = character.Country;
+            character.Country = "Burmuda";
+
+            Assert.Greater(db.GetChangeSet().Updates.Count, 0);
+            db.SubmitChanges();
+
+            var character2 = db.Customers.First(c=>c.CustomerID==character.CustomerID);
+            Assert.AreEqual(character2.Country, "Burmuda");
+
+            character2.Country = beforecountry;
+            db.SubmitChanges();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Internals/ReflectionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Internals/ReflectionTest.cs
@@ -1,43 +1,43 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-
-namespace Test_NUnit.Internals
-{
-    [TestFixture]
-    public class ReflectionTest
-    {
-        //there was a bug where intField1 would be listed multiple times in a select statement:
-        public class Class1 
-        { 
-            protected int intField1;
-            public int publicField;
-        }
-        public class Class2 : Class1 
-        { 
-            protected int intField2; 
-        }
-#if OBSOLETE
-        [Test]
-        public void AttribHelper_NoDuplicateFields()
-        {
-            //Andrus pointed out that one of the internal classes that help with reflection
-            //returns fields in duplicate, which kills SQL SELECT and UPDATEs.
-            System.Reflection.MemberInfo[] members = DbLinq.Util.AttribHelper.GetMemberFields(typeof(Class2));
-            Assert.IsTrue(members.Length == 3);
-        }
-
-        [Test]
-        public void AttribHelper_IncludePublicFields()
-        {
-            //Andrus pointed out that one of the internal classes that help with reflection
-            //returns fields in duplicate, which kills SQL SELECT and UPDATEs.
-            System.Reflection.MemberInfo[] members = DbLinq.Util.AttribHelper.GetMemberFields(typeof(Class1));
-            Assert.IsTrue(members.Length == 2);
-        }
-#endif
-
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+namespace Test_NUnit.Internals
+{
+    [TestFixture]
+    public class ReflectionTest
+    {
+        //there was a bug where intField1 would be listed multiple times in a select statement:
+        public class Class1 
+        { 
+            protected int intField1;
+            public int publicField;
+        }
+        public class Class2 : Class1 
+        { 
+            protected int intField2; 
+        }
+#if OBSOLETE
+        [Test]
+        public void AttribHelper_NoDuplicateFields()
+        {
+            //Andrus pointed out that one of the internal classes that help with reflection
+            //returns fields in duplicate, which kills SQL SELECT and UPDATEs.
+            System.Reflection.MemberInfo[] members = DbLinq.Util.AttribHelper.GetMemberFields(typeof(Class2));
+            Assert.IsTrue(members.Length == 3);
+        }
+
+        [Test]
+        public void AttribHelper_IncludePublicFields()
+        {
+            //Andrus pointed out that one of the internal classes that help with reflection
+            //returns fields in duplicate, which kills SQL SELECT and UPDATEs.
+            System.Reflection.MemberInfo[] members = DbLinq.Util.AttribHelper.GetMemberFields(typeof(Class1));
+            Assert.IsTrue(members.Length == 2);
+        }
+#endif
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Advanced.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Advanced.cs
@@ -1,216 +1,216 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737920.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class AdvancedTest : TestBase
-    {
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "This sample builds a query dynamically to return the contact name of each customer.")]
-        public void LinqToSqlAdvanced01()
-        {
-            Northwind db = CreateDB();
-
-            ParameterExpression param = Expression.Parameter(typeof(Customer), "c");
-            Expression selector = Expression.Property(param, typeof(Customer).GetProperty("ContactName"));
-            var pred = Expression.Lambda(selector, param);
-
-            var custs = db.Customers;
-            var expr = Expression.Call(typeof(Queryable), "Select"
-                , new Type[] { typeof(Customer), typeof(string) }, Expression.Constant(custs), pred);
-            var query = db.Customers.AsQueryable().Provider.CreateQuery<string>(expr);
-
-            var list = query.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        //TODO - 2,3,4,5
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "This sample builds a query dynamically to filter for Customers in London.")]
-        public void LinqToSqlAdvanced02()
-        {
-            Northwind db = CreateDB();
-
-            var custs = db.Customers;
-            var param = Expression.Parameter(typeof(Customer), "c");
-            var right = Expression.Constant("London");
-            var left = Expression.Property(param, typeof(Customer).GetProperty("City"));
-            var filter = Expression.Equal(left, right);
-            var pred = Expression.Lambda(filter, param);
-
-            var expr = Expression.Call(typeof(Queryable), "Where", new Type[] { typeof(Customer) }, Expression.Constant(custs), pred);
-            var query = db.Customers.AsQueryable().Provider.CreateQuery<Customer>(expr);
-
-            var list = query.ToList();
-            Assert.IsTrue(list.Count > 0, "Got London citiens > 0");
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "This sample builds a query dynamically to filter for Customers in London and order them by ContactName.")]
-        public void LinqToSqlAdvanced03()
-        {
-            Northwind db = CreateDB();
-
-            var param = Expression.Parameter(typeof(Customer), "c");
-
-            var left = Expression.Property(param, typeof(Customer).GetProperty("City"));
-            var right = Expression.Constant("London");
-            var filter = Expression.Equal(left, right);
-            var pred = Expression.Lambda(filter, param);
-
-            var selector = Expression.Property(param, typeof(Customer).GetProperty("ContactName"));
-            IQueryable custs = db.Customers;
-            var expr = Expression.Call(typeof(Queryable), "Where", new Type[] { typeof(Customer) }, Expression.Constant(custs), pred);
-            expr = Expression.Call(typeof(Queryable), "OrderBy", new Type[] { typeof(Customer), typeof(String) }, custs.Expression, Expression.Lambda(Expression.Property(param, "ContactName"), param));
-            var query = db.Customers.AsQueryable().Provider.CreateQuery<Customer>(expr);
-
-            var list = query.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "This sample dynamically builds a Union to return a sequence of all countries where either a customer or an employee live.")]
-        public void LinqToSqlAdvanced04()
-        {
-            Northwind db = CreateDB();
-
-            var custs = db.Customers;
-            var param1 = Expression.Parameter(typeof(Customer), "e");
-            var left1 = Expression.Property(param1, typeof(Customer).GetProperty("City"));
-            var pred1 = Expression.Lambda(left1, param1);
-
-            var employees = db.Employees;
-            var param2 = Expression.Parameter(typeof(Employee), "c");
-            var left2 = Expression.Property(param2, typeof(Employee).GetProperty("City"));
-            var pred2 = Expression.Lambda(left2, param2);
-
-            var expr1 = Expression.Call(typeof(Queryable), "Select", new Type[] { typeof(Customer), typeof(String) }, Expression.Constant(custs), pred1);
-            var expr2 = Expression.Call(typeof(Queryable), "Select", new Type[] { typeof(Employee), typeof(String) }, Expression.Constant(employees), pred2);
-
-            var q1 = db.Customers.AsQueryable().Provider.CreateQuery<String>(expr1);
-            var q2 = db.Employees.AsQueryable().Provider.CreateQuery<String>(expr2);
-
-            var q3 = q1.Union(q2);
-
-            Assert.Greater(q1.Count(), 0);
-            Assert.IsTrue(q1.Count() + q2.Count() >= q3.Count());
-
-        }
-
-
-        [Linq101SamplesModified("Replaced Contact by Customer")]
-        [Test(Description="This sample demonstrates how we insert a new Contact and retrieve the newly assigned ContactID from the database.")]
-        public void LinqToSqlAdvanced05()
-        {
-            Northwind db = CreateDB();
-
-            //PK Column should be autogenerated
-            var con = new Category() { CategoryName = "New Era", Description= "(123)-456-7890" };
-            db.Categories.InsertOnSubmit(con);
-
-            
-            db.SubmitChanges();
-
-            Console.WriteLine();
-            Console.WriteLine("The Category of the new record is {0}", con.CategoryID);
-
-            Category customerReloaded=db.Categories.First(c=>c.CategoryID==con.CategoryID);
-            Assert.AreEqual(customerReloaded.CategoryName, con.CategoryName);
-            Assert.AreEqual(customerReloaded.Description, con.Description);
-
-            // cleanup
-            db.Categories.DeleteOnSubmit(con);
-            db.SubmitChanges();
-        }
-
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test(Description = "This sample uses orderbyDescending and Take to return the discontinued products of the top 10 most expensive products")]
-        public void LinqToSqlAdvanced06()
-        {
-            Northwind db = CreateDB();
-#if INGRES 
-            var prods = from p in db.Products.OrderByDescending(p=> p.UnitPrice).Take(10) 
-                       where p.Discontinued == "Y" select p;
-#else
-            var prods = from p in db.Products.OrderByDescending(p => p.UnitPrice).Take(10)
-                        where !p.Discontinued
-                        select p;
-#endif
-
-            var list = prods.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737920.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class AdvancedTest : TestBase
+    {
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "This sample builds a query dynamically to return the contact name of each customer.")]
+        public void LinqToSqlAdvanced01()
+        {
+            Northwind db = CreateDB();
+
+            ParameterExpression param = Expression.Parameter(typeof(Customer), "c");
+            Expression selector = Expression.Property(param, typeof(Customer).GetProperty("ContactName"));
+            var pred = Expression.Lambda(selector, param);
+
+            var custs = db.Customers;
+            var expr = Expression.Call(typeof(Queryable), "Select"
+                , new Type[] { typeof(Customer), typeof(string) }, Expression.Constant(custs), pred);
+            var query = db.Customers.AsQueryable().Provider.CreateQuery<string>(expr);
+
+            var list = query.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        //TODO - 2,3,4,5
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "This sample builds a query dynamically to filter for Customers in London.")]
+        public void LinqToSqlAdvanced02()
+        {
+            Northwind db = CreateDB();
+
+            var custs = db.Customers;
+            var param = Expression.Parameter(typeof(Customer), "c");
+            var right = Expression.Constant("London");
+            var left = Expression.Property(param, typeof(Customer).GetProperty("City"));
+            var filter = Expression.Equal(left, right);
+            var pred = Expression.Lambda(filter, param);
+
+            var expr = Expression.Call(typeof(Queryable), "Where", new Type[] { typeof(Customer) }, Expression.Constant(custs), pred);
+            var query = db.Customers.AsQueryable().Provider.CreateQuery<Customer>(expr);
+
+            var list = query.ToList();
+            Assert.IsTrue(list.Count > 0, "Got London citiens > 0");
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "This sample builds a query dynamically to filter for Customers in London and order them by ContactName.")]
+        public void LinqToSqlAdvanced03()
+        {
+            Northwind db = CreateDB();
+
+            var param = Expression.Parameter(typeof(Customer), "c");
+
+            var left = Expression.Property(param, typeof(Customer).GetProperty("City"));
+            var right = Expression.Constant("London");
+            var filter = Expression.Equal(left, right);
+            var pred = Expression.Lambda(filter, param);
+
+            var selector = Expression.Property(param, typeof(Customer).GetProperty("ContactName"));
+            IQueryable custs = db.Customers;
+            var expr = Expression.Call(typeof(Queryable), "Where", new Type[] { typeof(Customer) }, Expression.Constant(custs), pred);
+            expr = Expression.Call(typeof(Queryable), "OrderBy", new Type[] { typeof(Customer), typeof(String) }, custs.Expression, Expression.Lambda(Expression.Property(param, "ContactName"), param));
+            var query = db.Customers.AsQueryable().Provider.CreateQuery<Customer>(expr);
+
+            var list = query.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "This sample dynamically builds a Union to return a sequence of all countries where either a customer or an employee live.")]
+        public void LinqToSqlAdvanced04()
+        {
+            Northwind db = CreateDB();
+
+            var custs = db.Customers;
+            var param1 = Expression.Parameter(typeof(Customer), "e");
+            var left1 = Expression.Property(param1, typeof(Customer).GetProperty("City"));
+            var pred1 = Expression.Lambda(left1, param1);
+
+            var employees = db.Employees;
+            var param2 = Expression.Parameter(typeof(Employee), "c");
+            var left2 = Expression.Property(param2, typeof(Employee).GetProperty("City"));
+            var pred2 = Expression.Lambda(left2, param2);
+
+            var expr1 = Expression.Call(typeof(Queryable), "Select", new Type[] { typeof(Customer), typeof(String) }, Expression.Constant(custs), pred1);
+            var expr2 = Expression.Call(typeof(Queryable), "Select", new Type[] { typeof(Employee), typeof(String) }, Expression.Constant(employees), pred2);
+
+            var q1 = db.Customers.AsQueryable().Provider.CreateQuery<String>(expr1);
+            var q2 = db.Employees.AsQueryable().Provider.CreateQuery<String>(expr2);
+
+            var q3 = q1.Union(q2);
+
+            Assert.Greater(q1.Count(), 0);
+            Assert.IsTrue(q1.Count() + q2.Count() >= q3.Count());
+
+        }
+
+
+        [Linq101SamplesModified("Replaced Contact by Customer")]
+        [Test(Description="This sample demonstrates how we insert a new Contact and retrieve the newly assigned ContactID from the database.")]
+        public void LinqToSqlAdvanced05()
+        {
+            Northwind db = CreateDB();
+
+            //PK Column should be autogenerated
+            var con = new Category() { CategoryName = "New Era", Description= "(123)-456-7890" };
+            db.Categories.InsertOnSubmit(con);
+
+            
+            db.SubmitChanges();
+
+            Console.WriteLine();
+            Console.WriteLine("The Category of the new record is {0}", con.CategoryID);
+
+            Category customerReloaded=db.Categories.First(c=>c.CategoryID==con.CategoryID);
+            Assert.AreEqual(customerReloaded.CategoryName, con.CategoryName);
+            Assert.AreEqual(customerReloaded.Description, con.Description);
+
+            // cleanup
+            db.Categories.DeleteOnSubmit(con);
+            db.SubmitChanges();
+        }
+
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test(Description = "This sample uses orderbyDescending and Take to return the discontinued products of the top 10 most expensive products")]
+        public void LinqToSqlAdvanced06()
+        {
+            Northwind db = CreateDB();
+#if INGRES 
+            var prods = from p in db.Products.OrderByDescending(p=> p.UnitPrice).Take(10) 
+                       where p.Discontinued == "Y" select p;
+#else
+            var prods = from p in db.Products.OrderByDescending(p => p.UnitPrice).Take(10)
+                        where !p.Discontinued
+                        select p;
+#endif
+
+            var list = prods.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Conversion_Operators.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Conversion_Operators.cs
@@ -1,143 +1,143 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class Conversion_Operators : TestBase
-    {
-        [Test(Description = "AsEnumerable.This sample uses ToArray so that the client-side IEnumerable(Of T) implementation of where is used, instead of the default Query(Of T) implementation which would be converted to SQL and executed on the server. This is necessary because the where clause references a user-defined client-side method, isValidProduct, which cannot be converted to SQL.")]
-        public void LinqToSqlConversions01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products.AsEnumerable()
-                    where isValidProduct(p)
-                    select p;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-        private bool isValidProduct(Product p)
-        {
-            return (p.ProductName.LastIndexOf("C") == 0);
-        }
-
-
-        [Test(Description = "ToArray. This sample uses ToArray to immediately evaluate a query into an array and get the 3rd element.")]
-        public void LinqToSqlConversions02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.City == "London"
-                    select c;
-
-            Customer[] list = q.ToArray();
-
-            Assert.IsFalse(list == null);
-            Assert.IsTrue(list.Length > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test(Description = "ToList. This sample uses ToList to immediately evaluate a query into a List(Of T).")]
-        public void LinqToSqlConversions03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.HireDate >= DateTime.Parse("1/1/1994")
-                    select e;
-
-            List<Employee> qList = q.ToList();
-
-            Assert.IsFalse(qList == null);
-            Assert.IsTrue(qList.Count > 0);
-        }
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Linq101SamplesModified("Strange short to boolean casting, perhaps in the original Northwind Product.Discontinued was a boolean property")]
-        [Test(Description = "ToDictionary. This sample uses ToDictionary to immediately evaluate a query and a key expression into an Dictionary(Of K, T).")]
-        public void LinqToSqlConversion04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    where p.UnitsInStock <= p.ReorderLevel && !Convert.ToBoolean(p.Discontinued)
-                    select p;
-
-            var qDictionary = q.ToDictionary(p => p.ProductID);
-
-            Assert.IsFalse(qDictionary == null);
-            // PC: on SQLite, this returns nothing. Is the test wrong?
-            if (qDictionary.Count == 0)
-                Assert.Ignore("Please check this test validity");
-            //Assert.IsTrue(qDictionary.Count > 0);
-
-            foreach (var key in qDictionary.Keys)
-            {
-                Console.WriteLine("Key {0}:", key);
-                Console.WriteLine();
-            }
-
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class Conversion_Operators : TestBase
+    {
+        [Test(Description = "AsEnumerable.This sample uses ToArray so that the client-side IEnumerable(Of T) implementation of where is used, instead of the default Query(Of T) implementation which would be converted to SQL and executed on the server. This is necessary because the where clause references a user-defined client-side method, isValidProduct, which cannot be converted to SQL.")]
+        public void LinqToSqlConversions01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products.AsEnumerable()
+                    where isValidProduct(p)
+                    select p;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+        private bool isValidProduct(Product p)
+        {
+            return (p.ProductName.LastIndexOf("C") == 0);
+        }
+
+
+        [Test(Description = "ToArray. This sample uses ToArray to immediately evaluate a query into an array and get the 3rd element.")]
+        public void LinqToSqlConversions02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.City == "London"
+                    select c;
+
+            Customer[] list = q.ToArray();
+
+            Assert.IsFalse(list == null);
+            Assert.IsTrue(list.Length > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test(Description = "ToList. This sample uses ToList to immediately evaluate a query into a List(Of T).")]
+        public void LinqToSqlConversions03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.HireDate >= DateTime.Parse("1/1/1994")
+                    select e;
+
+            List<Employee> qList = q.ToList();
+
+            Assert.IsFalse(qList == null);
+            Assert.IsTrue(qList.Count > 0);
+        }
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Linq101SamplesModified("Strange short to boolean casting, perhaps in the original Northwind Product.Discontinued was a boolean property")]
+        [Test(Description = "ToDictionary. This sample uses ToDictionary to immediately evaluate a query and a key expression into an Dictionary(Of K, T).")]
+        public void LinqToSqlConversion04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    where p.UnitsInStock <= p.ReorderLevel && !Convert.ToBoolean(p.Discontinued)
+                    select p;
+
+            var qDictionary = q.ToDictionary(p => p.ProductID);
+
+            Assert.IsFalse(qDictionary == null);
+            // PC: on SQLite, this returns nothing. Is the test wrong?
+            if (qDictionary.Count == 0)
+                Assert.Ignore("Please check this test validity");
+            //Assert.IsTrue(qDictionary.Count > 0);
+
+            foreach (var key in qDictionary.Keys)
+            {
+                Console.WriteLine("Key {0}:", key);
+                Console.WriteLine();
+            }
+
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Count_Sum_Min_Max_Avg.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Count_Sum_Min_Max_Avg.cs
@@ -1,271 +1,271 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737922.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class Count_Sum_Min_Max_Avg : TestBase
-    {
-        [Test]
-        public void LinqToSqlCount01()
-        {
-            Northwind db = CreateDB();
-            var q = db.Customers.Count();
-
-            Assert.IsTrue(q > 0, "Expect non-zero count");
-        }
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test]
-        public void LinqToSqlCount02()
-        {
-            Northwind db = CreateDB();
-#if INGRES && !MONO_STRICT
-            var q = (from p in db.Products where p.Discontinued == "N" select p)
-                .Count();
-#else
-            var q = (from p in db.Products where !p.Discontinued select p)
-                .Count();
-#endif
-
-            Assert.IsTrue(q > 0, "Expect non-zero count");
-        }
-
-        [Test(Description = "This sample uses Sum to find the total freight over all Orders.")]
-        public void LinqToSqlCount03()
-        {
-            Northwind db = CreateDB();
-            var q = (from o in db.Orders select o.Freight).Sum();
-            Assert.IsTrue(q > 0, "Freight sum must be > 0");
-        }
-
-        [Test(Description = "This sample uses Sum to find the total number of units on order over all Products.")]
-        public void LinqToSqlCount04()
-        {
-            Northwind db = CreateDB();
-            var q = (from p in db.Products select (int)p.UnitsOnOrder.Value).Sum();
-            Assert.IsTrue(q > 0, "Freight sum must be > 0");
-        }
-
-        [Test(Description = "This sample uses Min to find the lowest unit price of any Product")]
-        public void LinqToSqlCount05()
-        {
-            Northwind db = CreateDB();
-            var q = (from p in db.Products select p.UnitsOnOrder).Min();
-            Assert.IsTrue(q == 0, "Min UnitsOnOrder must be 0");
-        }
-
-        [Test(Description = "This sample uses Min to find the lowest freight of any Order.")]
-        public void LinqToSqlCount06()
-        {
-            Northwind db = CreateDB();
-            var q = (from o in db.Orders select o.Freight).Min();
-            Assert.IsTrue(q > 0, "Freight sum must be > 0");
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "This sample uses Min to find the Products that have the lowest unit price in each category")]
-        public void LinqToSqlCount07()
-        {
-            #region SHOW_MICROSOFT_GENERATED_SQL
-            /*
-            //the one Linq statement below gets translated into 9 SQL statements
-SELECT MIN([t0].[UnitPrice]) AS [value], [t0].[CategoryID]
-FROM [dbo].[Products] AS [t0]
-GROUP BY [t0].[CategoryID]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [1]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [4.5000]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [2]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [10.0000]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [3]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [9.2000]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [4]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [2.5000]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [5]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [7.0000]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [6]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [7.4500]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [7]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [10.0000]
-
-SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
-FROM [dbo].[Products] AS [t0]
-WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
--- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [8]
--- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [6.0000]
-    */
-            #endregion
-
-            Northwind db = CreateDB();
-            var categories = (from p in db.Products
-                              group p by p.CategoryID into g
-                              select new
-                              {
-                                  CategoryID = g.Key,
-                                  CheapestProducts = from p2 in g
-                                                     where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
-                                                     select p2
-                              });
-
-            var list = categories.ToList();
-            Assert.IsTrue(list.Count > 0, "Expected count > 0");
-        }
-
-        [Test(Description = "This sample uses Max to find the latest hire date of any Employee")]
-        public void LinqToSqlCount08()
-        {
-            Northwind db = CreateDB();
-            var q = (from e in db.Employees select e.HireDate).Max();
-            Assert.IsTrue(q > new DateTime(1990, 1, 1), "Hire date must be > 2000");
-        }
-
-        [Test(Description = "This sample uses Max to find the most units in stock of any Product")]
-        public void LinqToSqlCount09()
-        {
-            Northwind db = CreateDB();
-            var q = (from p in db.Products select p.UnitsInStock).Max();
-            Assert.IsTrue(q > 0, "Max UnitsInStock must be > 0");
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "This sample uses Max to find the Products that have the highest unit price in each category")]
-        public void LinqToSqlCount10()
-        {
-            //Miscrosoft translates this query into multiple SQL statements
-            Northwind db = CreateDB();
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select new
-                    {
-                        g,
-                        MostExpensiveProducts = from p2 in g
-                                                where p2.UnitPrice == g.Max(p3 => p3.UnitPrice)
-                                                select p2
-                    };
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0, "Got most expensive items > 0");
-        }
-
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "This sample uses Average to find the average freight of all Orders.")]
-        public void LinqToSqlCount11()
-        {
-            Northwind db = CreateDB();
-            var q = (from o in db.Orders
-                     select o.Freight).Average();
-
-            Console.WriteLine(q);
-            Assert.IsTrue(q > 0, "Avg orders'freight must be > 0");
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "This sample uses Average to find the average unit price of all Products.")]
-        public void LinqToSqlCount12()
-        {
-            Northwind db = CreateDB();
-            var q = (from p in db.Products
-                     select p.UnitPrice).Average();
-
-            Console.WriteLine(q);
-
-            Console.WriteLine(q);
-            Assert.IsTrue(q > 0, "Avg products'unitPrice must be > 0");
-        }
-
-
-#if !INGRES
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "This sample uses Average to find the Products that have unit price higher than the average unit price of the category for each category.")]
-        public void LinqToSqlCount13()
-        {
-            Northwind db = CreateDB();
-            var categories = from p in db.Products
-                             group p by p.CategoryID into g
-                             select new
-                                {
-                                    g,
-                                    ExpensiveProducts = from p2 in g
-                                                        where (p2.UnitPrice > g.Average(p3 => p3.UnitPrice))
-                                                        select p2
-                                };
-
-
-            var list = categories.ToList();
-            Assert.IsTrue(list.Count > 0, "Got categorized products > 0");
-        }
-#endif
-
-
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737922.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class Count_Sum_Min_Max_Avg : TestBase
+    {
+        [Test]
+        public void LinqToSqlCount01()
+        {
+            Northwind db = CreateDB();
+            var q = db.Customers.Count();
+
+            Assert.IsTrue(q > 0, "Expect non-zero count");
+        }
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test]
+        public void LinqToSqlCount02()
+        {
+            Northwind db = CreateDB();
+#if INGRES && !MONO_STRICT
+            var q = (from p in db.Products where p.Discontinued == "N" select p)
+                .Count();
+#else
+            var q = (from p in db.Products where !p.Discontinued select p)
+                .Count();
+#endif
+
+            Assert.IsTrue(q > 0, "Expect non-zero count");
+        }
+
+        [Test(Description = "This sample uses Sum to find the total freight over all Orders.")]
+        public void LinqToSqlCount03()
+        {
+            Northwind db = CreateDB();
+            var q = (from o in db.Orders select o.Freight).Sum();
+            Assert.IsTrue(q > 0, "Freight sum must be > 0");
+        }
+
+        [Test(Description = "This sample uses Sum to find the total number of units on order over all Products.")]
+        public void LinqToSqlCount04()
+        {
+            Northwind db = CreateDB();
+            var q = (from p in db.Products select (int)p.UnitsOnOrder.Value).Sum();
+            Assert.IsTrue(q > 0, "Freight sum must be > 0");
+        }
+
+        [Test(Description = "This sample uses Min to find the lowest unit price of any Product")]
+        public void LinqToSqlCount05()
+        {
+            Northwind db = CreateDB();
+            var q = (from p in db.Products select p.UnitsOnOrder).Min();
+            Assert.IsTrue(q == 0, "Min UnitsOnOrder must be 0");
+        }
+
+        [Test(Description = "This sample uses Min to find the lowest freight of any Order.")]
+        public void LinqToSqlCount06()
+        {
+            Northwind db = CreateDB();
+            var q = (from o in db.Orders select o.Freight).Min();
+            Assert.IsTrue(q > 0, "Freight sum must be > 0");
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "This sample uses Min to find the Products that have the lowest unit price in each category")]
+        public void LinqToSqlCount07()
+        {
+            #region SHOW_MICROSOFT_GENERATED_SQL
+            /*
+            //the one Linq statement below gets translated into 9 SQL statements
+SELECT MIN([t0].[UnitPrice]) AS [value], [t0].[CategoryID]
+FROM [dbo].[Products] AS [t0]
+GROUP BY [t0].[CategoryID]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [1]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [4.5000]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [2]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [10.0000]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [3]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [9.2000]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [4]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [2.5000]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [5]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [7.0000]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [6]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [7.4500]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [7]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [10.0000]
+
+SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
+FROM [dbo].[Products] AS [t0]
+WHERE ([t0].[UnitPrice] = @x2) AND (((@x1 IS NULL) AND ([t0].[CategoryID] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[CategoryID] IS NOT NULL) AND (@x1 = [t0].[CategoryID])))
+-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [8]
+-- @x2: Input Money (Size = 0; Prec = 19; Scale = 4) [6.0000]
+    */
+            #endregion
+
+            Northwind db = CreateDB();
+            var categories = (from p in db.Products
+                              group p by p.CategoryID into g
+                              select new
+                              {
+                                  CategoryID = g.Key,
+                                  CheapestProducts = from p2 in g
+                                                     where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
+                                                     select p2
+                              });
+
+            var list = categories.ToList();
+            Assert.IsTrue(list.Count > 0, "Expected count > 0");
+        }
+
+        [Test(Description = "This sample uses Max to find the latest hire date of any Employee")]
+        public void LinqToSqlCount08()
+        {
+            Northwind db = CreateDB();
+            var q = (from e in db.Employees select e.HireDate).Max();
+            Assert.IsTrue(q > new DateTime(1990, 1, 1), "Hire date must be > 2000");
+        }
+
+        [Test(Description = "This sample uses Max to find the most units in stock of any Product")]
+        public void LinqToSqlCount09()
+        {
+            Northwind db = CreateDB();
+            var q = (from p in db.Products select p.UnitsInStock).Max();
+            Assert.IsTrue(q > 0, "Max UnitsInStock must be > 0");
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "This sample uses Max to find the Products that have the highest unit price in each category")]
+        public void LinqToSqlCount10()
+        {
+            //Miscrosoft translates this query into multiple SQL statements
+            Northwind db = CreateDB();
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select new
+                    {
+                        g,
+                        MostExpensiveProducts = from p2 in g
+                                                where p2.UnitPrice == g.Max(p3 => p3.UnitPrice)
+                                                select p2
+                    };
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0, "Got most expensive items > 0");
+        }
+
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "This sample uses Average to find the average freight of all Orders.")]
+        public void LinqToSqlCount11()
+        {
+            Northwind db = CreateDB();
+            var q = (from o in db.Orders
+                     select o.Freight).Average();
+
+            Console.WriteLine(q);
+            Assert.IsTrue(q > 0, "Avg orders'freight must be > 0");
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "This sample uses Average to find the average unit price of all Products.")]
+        public void LinqToSqlCount12()
+        {
+            Northwind db = CreateDB();
+            var q = (from p in db.Products
+                     select p.UnitPrice).Average();
+
+            Console.WriteLine(q);
+
+            Console.WriteLine(q);
+            Assert.IsTrue(q > 0, "Avg products'unitPrice must be > 0");
+        }
+
+
+#if !INGRES
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "This sample uses Average to find the Products that have unit price higher than the average unit price of the category for each category.")]
+        public void LinqToSqlCount13()
+        {
+            Northwind db = CreateDB();
+            var categories = from p in db.Products
+                             group p by p.CategoryID into g
+                             select new
+                                {
+                                    g,
+                                    ExpensiveProducts = from p2 in g
+                                                        where (p2.UnitPrice > g.Average(p3 => p3.UnitPrice))
+                                                        select p2
+                                };
+
+
+            var list = categories.ToList();
+            Assert.IsTrue(list.Count > 0, "Got categorized products > 0");
+        }
+#endif
+
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/ExsistIn_Any_All.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/ExsistIn_Any_All.cs
@@ -1,74 +1,74 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class ExsistIn_Any_All : TestBase
-    {
-        [Test(Description = "Any - Simple. This sample uses Any to return only Customers that have no Orders.")]
-        public void LinqToSqlExists01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where !c.Orders.Any()
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
- 
-
-        [Linq101SamplesModified("Strange casting, It seems like original northwind discontinued were boolean")]
-        [Test(Description = "Any - Conditional. This sample uses Any to return only Categories that have at least one Discontinued product.")]
-        public void LinqToSqlExists02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders where o.OrderDetails.Any(od => od.Order.Customer.Country == "France") select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "All - Conditional. This sample uses All to return Customers whom all of their orders have been shipped to their own city or whom have no orders.")]
-        public void LinqToSqlExists03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.Orders.All(o => o.ShipCity == c.City)
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class ExsistIn_Any_All : TestBase
+    {
+        [Test(Description = "Any - Simple. This sample uses Any to return only Customers that have no Orders.")]
+        public void LinqToSqlExists01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where !c.Orders.Any()
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+ 
+
+        [Linq101SamplesModified("Strange casting, It seems like original northwind discontinued were boolean")]
+        [Test(Description = "Any - Conditional. This sample uses Any to return only Categories that have at least one Discontinued product.")]
+        public void LinqToSqlExists02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders where o.OrderDetails.Any(od => od.Order.Customer.Country == "France") select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "All - Conditional. This sample uses All to return Customers whom all of their orders have been shipped to their own city or whom have no orders.")]
+        public void LinqToSqlExists03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.Orders.All(o => o.ShipCity == c.City)
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/GroupBy_Having.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/GroupBy_Having.cs
@@ -1,223 +1,223 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737930.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class GroupBy_Having : TestBase
-    {
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupBy - Simple. This sample uses group by to partition Products by CategoryID.")]
-        public void LinqToSqlGroupBy01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select g;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-
-#if !INGRES
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupBy - Max. This sample uses group by and Max to find the maximum unit price for each CategoryID.")]
-        public void LinqToSqlGroupBy02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select new { g, MaxPrice = g.Max(p => p.UnitPrice) };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-#endif
-
-#if !INGRES
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupBy - Min. This sample uses group by and Min to find the minimum unit price for each CategoryID.")]
-        public void LinqToSqlGroupBy03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select new { g, MinPrice = g.Min(p => p.UnitPrice) };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-#endif
-
-#if !INGRES
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupBy - Average. This sample uses group by and Average to find the average UnitPrice for each CategoryID.")]
-        public void LinqToSqlGroupBy04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select new { g, AveragePrice = g.Average(p => p.UnitPrice) };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-#endif
-
-#if !INGRES
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupBy - Sum. This sample uses group by and Sum to find the total UnitPrice for each CategoryID.")]
-        public void LinqToSqlGroupBy05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select new { g, TotalPrice = g.Sum(p => p.UnitPrice) };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-#endif
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupBy - Count. This sample uses group by and Count to find the number of Products in each CategoryID.")]
-        public void LinqToSqlGroupBy06()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select new { g, NumProducts = g.Count() };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Linq101SamplesModified("Strange short to boolean casting, perhaps in the original Northwind Product.Discontinued was a boolean property")]
-        [Test(Description = "GroupBy - Count - Conditional. This sample uses group by and Count to find the number of Products in each CategoryID that are discontinued.")]
-        public void LinqToSqlGroupBy07()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    select new { g, NumProducts = g.Count(p => Convert.ToBoolean(p.Discontinued)) };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupBy - followed by where. This sample uses a where clause after a group by clause to find all categories that have at least 10 products.")]
-        public void LinqToSqlGroupBy08()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    group p by p.CategoryID into g
-                    where g.Count() >= 10
-                    select new { g, ProductCount = g.Count() };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Linq101SamplesModified("Strange syntactical strategy. Everybody aggree with this traduction?")]
-        [Test(Description = "GroupBy - Multiple Columns. This sample uses group by to group products by CategoryID and SupplierID.")]
-        public void LinqToSqlGroupBy09()
-        {
-            Northwind db = CreateDB();
-
-            var categories = from p in db.Products
-                             let Key = new { p.CategoryID, p.SupplierID }
-                             group p by Key into g
-                             select new { g.Key, g };
-
-            var list = categories.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Linq101SamplesModified("Strange syntactical strategy. Everybody aggree with this traduction?")]
-        [Test(Description = "GroupBy - Expression. This sample uses group by to return two sequences of products. The first sequence contains products with unit price greater than 10. The second sequence contains products with unit price less than or equal to 10.")]
-        public void LinqToSqlGroupBy10()
-        {
-            Northwind db = CreateDB();
-
-            var categories = from p in db.Products
-                             let Key = new { Criterion = p.UnitPrice > 10 || p.UnitPrice == null }
-                             group p by Key into g
-                             select g;
-
-            var list = categories.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737930.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class GroupBy_Having : TestBase
+    {
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupBy - Simple. This sample uses group by to partition Products by CategoryID.")]
+        public void LinqToSqlGroupBy01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select g;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+
+#if !INGRES
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupBy - Max. This sample uses group by and Max to find the maximum unit price for each CategoryID.")]
+        public void LinqToSqlGroupBy02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select new { g, MaxPrice = g.Max(p => p.UnitPrice) };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+#endif
+
+#if !INGRES
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupBy - Min. This sample uses group by and Min to find the minimum unit price for each CategoryID.")]
+        public void LinqToSqlGroupBy03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select new { g, MinPrice = g.Min(p => p.UnitPrice) };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+#endif
+
+#if !INGRES
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupBy - Average. This sample uses group by and Average to find the average UnitPrice for each CategoryID.")]
+        public void LinqToSqlGroupBy04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select new { g, AveragePrice = g.Average(p => p.UnitPrice) };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+#endif
+
+#if !INGRES
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupBy - Sum. This sample uses group by and Sum to find the total UnitPrice for each CategoryID.")]
+        public void LinqToSqlGroupBy05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select new { g, TotalPrice = g.Sum(p => p.UnitPrice) };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+#endif
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupBy - Count. This sample uses group by and Count to find the number of Products in each CategoryID.")]
+        public void LinqToSqlGroupBy06()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select new { g, NumProducts = g.Count() };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Linq101SamplesModified("Strange short to boolean casting, perhaps in the original Northwind Product.Discontinued was a boolean property")]
+        [Test(Description = "GroupBy - Count - Conditional. This sample uses group by and Count to find the number of Products in each CategoryID that are discontinued.")]
+        public void LinqToSqlGroupBy07()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    select new { g, NumProducts = g.Count(p => Convert.ToBoolean(p.Discontinued)) };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupBy - followed by where. This sample uses a where clause after a group by clause to find all categories that have at least 10 products.")]
+        public void LinqToSqlGroupBy08()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    group p by p.CategoryID into g
+                    where g.Count() >= 10
+                    select new { g, ProductCount = g.Count() };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Linq101SamplesModified("Strange syntactical strategy. Everybody aggree with this traduction?")]
+        [Test(Description = "GroupBy - Multiple Columns. This sample uses group by to group products by CategoryID and SupplierID.")]
+        public void LinqToSqlGroupBy09()
+        {
+            Northwind db = CreateDB();
+
+            var categories = from p in db.Products
+                             let Key = new { p.CategoryID, p.SupplierID }
+                             group p by Key into g
+                             select new { g.Key, g };
+
+            var list = categories.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Linq101SamplesModified("Strange syntactical strategy. Everybody aggree with this traduction?")]
+        [Test(Description = "GroupBy - Expression. This sample uses group by to return two sequences of products. The first sequence contains products with unit price greater than 10. The second sequence contains products with unit price less than or equal to 10.")]
+        public void LinqToSqlGroupBy10()
+        {
+            Northwind db = CreateDB();
+
+            var categories = from p in db.Products
+                             let Key = new { Criterion = p.UnitPrice > 10 || p.UnitPrice == null }
+                             group p by Key into g
+                             select g;
+
+            var list = categories.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Inheritance.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Inheritance.cs
@@ -1,145 +1,145 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class Inheritance : TestBase
-    {
-        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
-        [Test(Description = "Simple. This sample returns all contacts where the city is London.")]
-        public void LinqToSqlInheritance01()
-        {
-            Northwind db = CreateDB();
-
-            Assert.Ignore();
-
-            //var cons = from c in db.Contacts
-            //           select c;
-
-            //var list = cons.ToList();
-            //Assert.IsTrue(list.Count > 0);
-        }
-
-        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
-        [Test(Description = "OfType. This sample uses OfType to return all customer contacts.")]
-        public void LinqToSqlInheritance02()
-        {
-            Northwind db = CreateDB();
-
-            Assert.Ignore();
-
-            //var cons = from c in newDB.Contacts.OfType<CustomerContact>()
-            //           select c;
-
-            //var list = cons.ToList();
-            //Assert.IsTrue(list.Count > 0);
-
-        }
-
-        [Linq101SamplesModified("This test could not be implemented since FullContact is not defined.")]
-        [Test(Description = "CType. This sample uses CType to return FullContact or null.")]
-        public void LinqToSqlInheritance04()
-        {
-            Northwind db = CreateDB();
-
-            Assert.Ignore();
-
-            //var cons = from c in newDB.Contacts
-            //           select (FullContact)c;
-
-            //var list = cons.ToList();
-            //Assert.IsTrue(list.Count > 0);
-        }
-
-        [Linq101SamplesModified("This test could not be implemented since CustomerContact is not defined.")]
-        [Test(Description = "Cast. This sample uses a cast to retrieve customer contacts who live in London.")]
-        public void LinqToSqlInheritance05()
-        {
-            Northwind db = CreateDB();
-
-            Assert.Ignore();
-
-            //var cons = from c in newDB.Contacts
-            //           where c.ContactType == "Customer" && (CustomerContact)c.City == "London"
-            //           select c;
-
-            //var list = cons.ToList();
-            //Assert.IsTrue(list.Count > 0);
-
-
-        }
-
-        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
-        [Test(Description = "UseAsDefault. This sample demonstrates that an unknown contact type will be automatically converted to the default contact type.")]
-        public void LinqToSqlInheritance06()
-        {
-            Northwind db = CreateDB();
-
-            Assert.Ignore();
-
-            //var contact = new Contact() { ContactType = null, CompanyName = "Unknown Company", City = "London", Phone = "333-444-5555" };
-            //db.Contacts.Add(contact);
-            //db.SubmitChanges();
-
-            //var con = (from c in db.Contacts
-            //           where c.ContactType == null
-            //           select c).First();
-
-        
-        }
-
-        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
-        [Test(Description = "Insert New Record. This sample demonstrates how to create a new shipper contact.")]
-        public void LinqToSqlInheritance07()
-        {
-            Northwind db = CreateDB();
-
-            Assert.Ignore();
-
-            //var ShipperContacts = from sc in newDB.Contacts.OfType<ShipperContact>()
-            //                      where sc.CompanyName = "Northwind Shipper"
-            //                      select sc;
-
-
-            //var nsc = new ShipperContact() { CompanyName = "Northwind Shipper", Phone = "(123)-456-7890" };
-            //db.Contacts.Add(nsc);
-            //db.SubmitChanges();
-
-
-            //ShipperContacts = from sc in db.Contacts.OfType<ShipperContact>()
-            //                  where sc.CompanyName == "Northwind Shipper"
-            //                  select sc;
-
-
-            //newDB.Contacts.Remove(nsc);
-            //newDB.SubmitChanges();
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class Inheritance : TestBase
+    {
+        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
+        [Test(Description = "Simple. This sample returns all contacts where the city is London.")]
+        public void LinqToSqlInheritance01()
+        {
+            Northwind db = CreateDB();
+
+            Assert.Ignore();
+
+            //var cons = from c in db.Contacts
+            //           select c;
+
+            //var list = cons.ToList();
+            //Assert.IsTrue(list.Count > 0);
+        }
+
+        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
+        [Test(Description = "OfType. This sample uses OfType to return all customer contacts.")]
+        public void LinqToSqlInheritance02()
+        {
+            Northwind db = CreateDB();
+
+            Assert.Ignore();
+
+            //var cons = from c in newDB.Contacts.OfType<CustomerContact>()
+            //           select c;
+
+            //var list = cons.ToList();
+            //Assert.IsTrue(list.Count > 0);
+
+        }
+
+        [Linq101SamplesModified("This test could not be implemented since FullContact is not defined.")]
+        [Test(Description = "CType. This sample uses CType to return FullContact or null.")]
+        public void LinqToSqlInheritance04()
+        {
+            Northwind db = CreateDB();
+
+            Assert.Ignore();
+
+            //var cons = from c in newDB.Contacts
+            //           select (FullContact)c;
+
+            //var list = cons.ToList();
+            //Assert.IsTrue(list.Count > 0);
+        }
+
+        [Linq101SamplesModified("This test could not be implemented since CustomerContact is not defined.")]
+        [Test(Description = "Cast. This sample uses a cast to retrieve customer contacts who live in London.")]
+        public void LinqToSqlInheritance05()
+        {
+            Northwind db = CreateDB();
+
+            Assert.Ignore();
+
+            //var cons = from c in newDB.Contacts
+            //           where c.ContactType == "Customer" && (CustomerContact)c.City == "London"
+            //           select c;
+
+            //var list = cons.ToList();
+            //Assert.IsTrue(list.Count > 0);
+
+
+        }
+
+        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
+        [Test(Description = "UseAsDefault. This sample demonstrates that an unknown contact type will be automatically converted to the default contact type.")]
+        public void LinqToSqlInheritance06()
+        {
+            Northwind db = CreateDB();
+
+            Assert.Ignore();
+
+            //var contact = new Contact() { ContactType = null, CompanyName = "Unknown Company", City = "London", Phone = "333-444-5555" };
+            //db.Contacts.Add(contact);
+            //db.SubmitChanges();
+
+            //var con = (from c in db.Contacts
+            //           where c.ContactType == null
+            //           select c).First();
+
+        
+        }
+
+        [Linq101SamplesModified("Original code did a reference to a newdb nortwhind that didn't exist, currently here uses db instead. Besides Contact type didn't exist")]
+        [Test(Description = "Insert New Record. This sample demonstrates how to create a new shipper contact.")]
+        public void LinqToSqlInheritance07()
+        {
+            Northwind db = CreateDB();
+
+            Assert.Ignore();
+
+            //var ShipperContacts = from sc in newDB.Contacts.OfType<ShipperContact>()
+            //                      where sc.CompanyName = "Northwind Shipper"
+            //                      select sc;
+
+
+            //var nsc = new ShipperContact() { CompanyName = "Northwind Shipper", Phone = "(123)-456-7890" };
+            //db.Contacts.Add(nsc);
+            //db.SubmitChanges();
+
+
+            //ShipperContacts = from sc in db.Contacts.OfType<ShipperContact>()
+            //                  where sc.CompanyName == "Northwind Shipper"
+            //                  select sc;
+
+
+            //newDB.Contacts.Remove(nsc);
+            //newDB.SubmitChanges();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Insert_Update_Delete.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Insert_Update_Delete.cs
@@ -1,341 +1,341 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using NUnit.Framework;
-using Test_NUnit;
-using Test_NUnit.Linq_101_Samples;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class Insert_Update_Delete : TestBase
-    {
-        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
-        [Test(Description = "Insert - Simple. This sample uses the Add method to add a new Customer to the Customers Table object. The call to SubmitChanges persists this new Customer to the database.")]
-        public void LinqToSqlInsert01()
-        {
-            Northwind db = CreateDB();
-
-            Customer cust = db.Customers.FirstOrDefault(c => c.CustomerID == "MCSFT");
-            if (cust != null)
-            {
-                try
-                {
-                    db.Customers.DeleteOnSubmit(cust);
-                    db.SubmitChanges();
-                }
-                catch
-                {
-                    Assert.Ignore("Inconclusive: the object already exist. And the couldn't be removed");
-                }
-            }
-
-            var q = from c in db.Customers
-                    where c.Region == "WA"
-                    select c;
-
-            var newCustomer = new Customer
-            {
-                CustomerID = "MCSFT",
-                CompanyName = "Microsoft",
-                ContactName = "John Doe",
-                ContactTitle = "Sales Manager",
-                Address = "1 Microsoft Way",
-                City = "Redmond",
-                Region = "WA",
-                PostalCode = "98052",
-                Country = "USA",
-                Phone = "(425) 555-1234",
-                Fax = null
-            };
-
-            db.Customers.InsertOnSubmit(newCustomer);
-            db.SubmitChanges();
-
-            var reloadedCustomer = db.Customers.First(c => c.CustomerID == newCustomer.CustomerID);
-
-            Assert.AreEqual(reloadedCustomer.CompanyName, newCustomer.CompanyName);
-            Assert.AreEqual(reloadedCustomer.ContactName, newCustomer.ContactName);
-            Assert.AreEqual(reloadedCustomer.ContactTitle, newCustomer.ContactTitle);
-            Assert.AreEqual(reloadedCustomer.Address, newCustomer.Address);
-            Assert.AreEqual(reloadedCustomer.City, newCustomer.City);
-            Assert.AreEqual(reloadedCustomer.Region, newCustomer.Region);
-            Assert.AreEqual(reloadedCustomer.PostalCode, newCustomer.PostalCode);
-            Assert.AreEqual(reloadedCustomer.Country, newCustomer.Country);
-            Assert.AreEqual(reloadedCustomer.Phone, newCustomer.Phone);
-            Assert.AreEqual(reloadedCustomer.Fax, newCustomer.Fax);
-
-            db.Customers.DeleteOnSubmit(reloadedCustomer);
-            db.SubmitChanges();
-        }
-
-#if !SQLITE
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
-        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
-        [Test(Description = "Insert - 1-to-Many. This sample uses the Add method to add a new Category to the Categories table object, and a new Product to the Products Table object with a foreign key relationship to the new Category. The call to SubmitChanges persists these new objects and their relationships to the database.")]
-        public void LinqToSqlInsert02()
-        {
-            Northwind db = CreateDB();
-
-            var ds = new DataLoadOptions();
-
-            ds.LoadWith<Category>(c => c.Products);
-            db.LoadOptions = ds;
-
-            var q = from c in db.Categories
-                    where c.CategoryName == "Temp Widgets"
-                    select c;
-
-            var newCategory = new Category
-                                {
-                                    CategoryName = "Temp Widgets",
-                                    Description = "Widgets are the customer-facing analogues to sprockets and cogs."
-                                };
-
-            var newProduct = new Product
-            {
-                ProductName = "temp Blue Widget",
-                UnitPrice = 34.56m,
-                Category = newCategory
-            };
-            db.Categories.InsertOnSubmit(newCategory);
-            db.SubmitChanges();
-
-            var reloadedProduct = db.Products.First(p => p.ProductID == newProduct.ProductID);
-
-            Assert.AreEqual(reloadedProduct.ProductName, newProduct.ProductName);
-            Assert.AreEqual(reloadedProduct.UnitPrice, newProduct.UnitPrice);
-            Assert.AreEqual(reloadedProduct.Category.CategoryID, newProduct.CategoryID);
-
-            var reloadedCategory = reloadedProduct.Category;
-
-            Assert.AreEqual(reloadedCategory.CategoryName, newCategory.CategoryName);
-            Assert.AreEqual(reloadedCategory.Description, reloadedCategory.Description);
-
-            db.Products.DeleteOnSubmit(newProduct);
-            db.Categories.DeleteOnSubmit(newCategory);
-            db.SubmitChanges();
-        }
-#endif
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
-        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
-        [Test(Description = "Insert - Many-to-Many. This sample uses the Add method to add a new Employee to the Employees table object, a new Territory to the Territories table object, and a new EmployeeTerritory to the EmployeeTerritories table object with foreign key relationships to the new Employee and Territory. The call to SubmitChanges persists these new objects and their relationships to the database.")]
-        public void LinqToSqlInsert03()
-        {
-            Northwind db = CreateDB();
-
-            var ds = new DataLoadOptions();
-            ds.LoadWith<Employee>(p => p.EmployeeTerritories);
-            ds.LoadWith<EmployeeTerritory>(p => p.Territory);
-
-            db.LoadOptions = ds;
-            var q = from e in db.Employees where e.FirstName == "Nancy" select e;
-
-
-            if (db.Employees.Any(e => e.FirstName == "Test Kira" && e.LastName == "Test Smith"))
-                Assert.Ignore();
-
-
-            var newEmployee = new Employee { FirstName = "Test Kira", LastName = "Test Smith" };
-            var newTerritory = new Territory
-            {
-                TerritoryID = "12345",
-                TerritoryDescription = "Test Anytown",
-                Region = db.Regions.First()
-            };
-
-            var newEmployeeTerritory = new EmployeeTerritory { Employee = newEmployee, Territory = newTerritory };
-            db.Employees.InsertOnSubmit(newEmployee);
-            db.Territories.InsertOnSubmit(newTerritory);
-            db.EmployeeTerritories.InsertOnSubmit(newEmployeeTerritory);
-            db.SubmitChanges();
-
-            // cleanup
-            db.EmployeeTerritories.DeleteOnSubmit(newEmployeeTerritory);
-            db.Territories.DeleteOnSubmit(newTerritory);
-            db.Employees.DeleteOnSubmit(newEmployee);
-            db.SubmitChanges();
-        }
-
-        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
-        [Test(Description = "Update - Simple. This sample uses SubmitChanges to persist an update made to a retrieved Customer object back to the database.")]
-        public void LinqToSqlInsert04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.CustomerID == "ALFKI"
-                    select c;
-
-            Customer cust = (from c in db.Customers
-                             where c.CustomerID == "ALFKI"
-                             select c).First();
-
-            var oldContactTitle = cust.ContactTitle;
-            cust.ContactTitle = "Vice President";
-            db.SubmitChanges();
-
-            Customer reloadedCustomer = db.Customers.First(c => c.CustomerID == cust.CustomerID);
-            Assert.AreEqual(reloadedCustomer.ContactTitle, cust.ContactTitle);
-
-            // undo
-            reloadedCustomer.ContactTitle = oldContactTitle;
-            db.SubmitChanges();
-        }
-
-        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
-        [Test(Description = "Update - Multiple. This sample uses SubmitChanges to persist updates made to multiple retrieved Product objects back to the database.")]
-        public void LinqToSqlInsert05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    where p.CategoryID.Value == 1
-                    select p;
-
-            foreach (var p in q)
-                p.UnitPrice += 1.0m;
-
-            db.SubmitChanges();
-
-
-            var reloadedProducts = db.Products.Where(p => p.CategoryID.Value == 1);
-            IEnumerator<Product> original = q.GetEnumerator();
-            IEnumerator<Product> reloaded = reloadedProducts.GetEnumerator();
-
-            while (original.MoveNext() && reloaded.MoveNext())
-                Assert.AreEqual(original.Current.UnitPrice, reloaded.Current.UnitPrice);
-
-            Assert.AreEqual(original.MoveNext(), reloaded.MoveNext());
-
-            // undo
-            foreach (var p in q)
-                p.UnitPrice -= 1.0m;
-            db.SubmitChanges();
-        }
-
-
-        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
-        [Test(Description = "Delete - Simple. This sample uses the Remove method to delete an OrderDetail from the OrderDetails Table object. The call to SubmitChanges persists this deletion to the database.")]
-        public void LinqToSqlInsert06()
-        {
-            Northwind db = CreateDB();
-
-            db.Connection.Open();
-            db.Transaction = db.Connection.BeginTransaction();
-            try
-            {
-                OrderDetail ode = db.OrderDetails.First();
-                decimal orderID = ode.OrderID;
-                decimal productID = ode.ProductID;
-
-
-                OrderDetail order = (from c in db.OrderDetails
-                                     where c.OrderID == orderID && c.ProductID == productID
-                                     select c).First();
-
-                //what happened to Table.Remove()?
-                //The Add and AddAll methods are now InsertOnSubmit and InsertAllOnSubmit. The Remove and RemoveAll are now DeleteOnSubmit and DeleteAllOnSubmit.
-                //http://blogs.vertigo.com/personal/petar/Blog/Lists/Posts/Post.aspx?List=9441ab3e%2Df290%2D4a5b%2Da591%2D49a8226de525&ID=3
-
-                db.OrderDetails.DeleteOnSubmit(order); //formerly Remove(order);
-                db.SubmitChanges();
-
-                Assert.IsFalse(db.OrderDetails.Any(od => od.OrderID == orderID && od.ProductID == productID));
-            }
-            finally
-            {
-                db.Transaction.Rollback();
-                db.Transaction = null;
-            }
-        }
-
-        [SetUp]
-        public void Setup_LinqToSqlInsert07()
-        {
-            //Northwind db = CreateDB();
-            //var o = new Order { CustomerID = "WARTH", Employee = db.Employees.First() };
-            //o.OrderDetails.Add(new OrderDetail { Discount = 0.1f, Quantity = 1, Product = db.Products.First(p => p.Discontinued) });
-            //o.OrderDetails.Add(new OrderDetail { Discount = 0.2f, Quantity = 1, Product = db.Products.First(p => !p.Discontinued) });
-            //db.Orders.InsertOnSubmit(o);
-            //db.SubmitChanges();
-        }
-
-        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
-        [Test(Description = "Delete - One-to-Many. This sample uses the Remove method to delete an Order and Order Detail from the Order Details and Orders tables. First deleting Order Details and then deleting from Orders. The call to SubmitChanges persists this deletion to the database.")]
-        public void LinqToSqlInsert07()
-        {
-            Northwind db = CreateDB();
-
-            db.Connection.Open();
-            db.Transaction = db.Connection.BeginTransaction();
-            try
-            {
-                var orderDetails =
-                    from o in db.OrderDetails
-                    where o.Order.CustomerID == "WARTH"
-                    select o;
-
-                var order =
-                    (from o in db.Orders
-                     where o.CustomerID == "WARTH"
-                     select o).FirstOrDefault();
-
-                if (!orderDetails.Any() || order == null)
-                    Assert.Ignore("Preconditions");
-
-
-                foreach (var od in orderDetails)
-                {
-                    db.OrderDetails.DeleteOnSubmit(od); //formerly Remove(od);
-                }
-
-                db.Orders.DeleteOnSubmit(order); //formerly Remove(order);
-                db.SubmitChanges();
-
-                Assert.IsFalse(
-                    db.OrderDetails.Any(od => od.Order.Customer.CustomerID == "WARTH" && od.Order.EmployeeID == 3));
-                Assert.IsFalse(db.Orders.Any(ord => ord.OrderID == order.OrderID));
-            }
-            finally
-            {
-                db.Transaction.Rollback();
-                db.Transaction = null;
-            }
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using NUnit.Framework;
+using Test_NUnit;
+using Test_NUnit.Linq_101_Samples;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class Insert_Update_Delete : TestBase
+    {
+        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
+        [Test(Description = "Insert - Simple. This sample uses the Add method to add a new Customer to the Customers Table object. The call to SubmitChanges persists this new Customer to the database.")]
+        public void LinqToSqlInsert01()
+        {
+            Northwind db = CreateDB();
+
+            Customer cust = db.Customers.FirstOrDefault(c => c.CustomerID == "MCSFT");
+            if (cust != null)
+            {
+                try
+                {
+                    db.Customers.DeleteOnSubmit(cust);
+                    db.SubmitChanges();
+                }
+                catch
+                {
+                    Assert.Ignore("Inconclusive: the object already exist. And the couldn't be removed");
+                }
+            }
+
+            var q = from c in db.Customers
+                    where c.Region == "WA"
+                    select c;
+
+            var newCustomer = new Customer
+            {
+                CustomerID = "MCSFT",
+                CompanyName = "Microsoft",
+                ContactName = "John Doe",
+                ContactTitle = "Sales Manager",
+                Address = "1 Microsoft Way",
+                City = "Redmond",
+                Region = "WA",
+                PostalCode = "98052",
+                Country = "USA",
+                Phone = "(425) 555-1234",
+                Fax = null
+            };
+
+            db.Customers.InsertOnSubmit(newCustomer);
+            db.SubmitChanges();
+
+            var reloadedCustomer = db.Customers.First(c => c.CustomerID == newCustomer.CustomerID);
+
+            Assert.AreEqual(reloadedCustomer.CompanyName, newCustomer.CompanyName);
+            Assert.AreEqual(reloadedCustomer.ContactName, newCustomer.ContactName);
+            Assert.AreEqual(reloadedCustomer.ContactTitle, newCustomer.ContactTitle);
+            Assert.AreEqual(reloadedCustomer.Address, newCustomer.Address);
+            Assert.AreEqual(reloadedCustomer.City, newCustomer.City);
+            Assert.AreEqual(reloadedCustomer.Region, newCustomer.Region);
+            Assert.AreEqual(reloadedCustomer.PostalCode, newCustomer.PostalCode);
+            Assert.AreEqual(reloadedCustomer.Country, newCustomer.Country);
+            Assert.AreEqual(reloadedCustomer.Phone, newCustomer.Phone);
+            Assert.AreEqual(reloadedCustomer.Fax, newCustomer.Fax);
+
+            db.Customers.DeleteOnSubmit(reloadedCustomer);
+            db.SubmitChanges();
+        }
+
+#if !SQLITE
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
+        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
+        [Test(Description = "Insert - 1-to-Many. This sample uses the Add method to add a new Category to the Categories table object, and a new Product to the Products Table object with a foreign key relationship to the new Category. The call to SubmitChanges persists these new objects and their relationships to the database.")]
+        public void LinqToSqlInsert02()
+        {
+            Northwind db = CreateDB();
+
+            var ds = new DataLoadOptions();
+
+            ds.LoadWith<Category>(c => c.Products);
+            db.LoadOptions = ds;
+
+            var q = from c in db.Categories
+                    where c.CategoryName == "Temp Widgets"
+                    select c;
+
+            var newCategory = new Category
+                                {
+                                    CategoryName = "Temp Widgets",
+                                    Description = "Widgets are the customer-facing analogues to sprockets and cogs."
+                                };
+
+            var newProduct = new Product
+            {
+                ProductName = "temp Blue Widget",
+                UnitPrice = 34.56m,
+                Category = newCategory
+            };
+            db.Categories.InsertOnSubmit(newCategory);
+            db.SubmitChanges();
+
+            var reloadedProduct = db.Products.First(p => p.ProductID == newProduct.ProductID);
+
+            Assert.AreEqual(reloadedProduct.ProductName, newProduct.ProductName);
+            Assert.AreEqual(reloadedProduct.UnitPrice, newProduct.UnitPrice);
+            Assert.AreEqual(reloadedProduct.Category.CategoryID, newProduct.CategoryID);
+
+            var reloadedCategory = reloadedProduct.Category;
+
+            Assert.AreEqual(reloadedCategory.CategoryName, newCategory.CategoryName);
+            Assert.AreEqual(reloadedCategory.Description, reloadedCategory.Description);
+
+            db.Products.DeleteOnSubmit(newProduct);
+            db.Categories.DeleteOnSubmit(newCategory);
+            db.SubmitChanges();
+        }
+#endif
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
+        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
+        [Test(Description = "Insert - Many-to-Many. This sample uses the Add method to add a new Employee to the Employees table object, a new Territory to the Territories table object, and a new EmployeeTerritory to the EmployeeTerritories table object with foreign key relationships to the new Employee and Territory. The call to SubmitChanges persists these new objects and their relationships to the database.")]
+        public void LinqToSqlInsert03()
+        {
+            Northwind db = CreateDB();
+
+            var ds = new DataLoadOptions();
+            ds.LoadWith<Employee>(p => p.EmployeeTerritories);
+            ds.LoadWith<EmployeeTerritory>(p => p.Territory);
+
+            db.LoadOptions = ds;
+            var q = from e in db.Employees where e.FirstName == "Nancy" select e;
+
+
+            if (db.Employees.Any(e => e.FirstName == "Test Kira" && e.LastName == "Test Smith"))
+                Assert.Ignore();
+
+
+            var newEmployee = new Employee { FirstName = "Test Kira", LastName = "Test Smith" };
+            var newTerritory = new Territory
+            {
+                TerritoryID = "12345",
+                TerritoryDescription = "Test Anytown",
+                Region = db.Regions.First()
+            };
+
+            var newEmployeeTerritory = new EmployeeTerritory { Employee = newEmployee, Territory = newTerritory };
+            db.Employees.InsertOnSubmit(newEmployee);
+            db.Territories.InsertOnSubmit(newTerritory);
+            db.EmployeeTerritories.InsertOnSubmit(newEmployeeTerritory);
+            db.SubmitChanges();
+
+            // cleanup
+            db.EmployeeTerritories.DeleteOnSubmit(newEmployeeTerritory);
+            db.Territories.DeleteOnSubmit(newTerritory);
+            db.Employees.DeleteOnSubmit(newEmployee);
+            db.SubmitChanges();
+        }
+
+        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
+        [Test(Description = "Update - Simple. This sample uses SubmitChanges to persist an update made to a retrieved Customer object back to the database.")]
+        public void LinqToSqlInsert04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.CustomerID == "ALFKI"
+                    select c;
+
+            Customer cust = (from c in db.Customers
+                             where c.CustomerID == "ALFKI"
+                             select c).First();
+
+            var oldContactTitle = cust.ContactTitle;
+            cust.ContactTitle = "Vice President";
+            db.SubmitChanges();
+
+            Customer reloadedCustomer = db.Customers.First(c => c.CustomerID == cust.CustomerID);
+            Assert.AreEqual(reloadedCustomer.ContactTitle, cust.ContactTitle);
+
+            // undo
+            reloadedCustomer.ContactTitle = oldContactTitle;
+            db.SubmitChanges();
+        }
+
+        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
+        [Test(Description = "Update - Multiple. This sample uses SubmitChanges to persist updates made to multiple retrieved Product objects back to the database.")]
+        public void LinqToSqlInsert05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    where p.CategoryID.Value == 1
+                    select p;
+
+            foreach (var p in q)
+                p.UnitPrice += 1.0m;
+
+            db.SubmitChanges();
+
+
+            var reloadedProducts = db.Products.Where(p => p.CategoryID.Value == 1);
+            IEnumerator<Product> original = q.GetEnumerator();
+            IEnumerator<Product> reloaded = reloadedProducts.GetEnumerator();
+
+            while (original.MoveNext() && reloaded.MoveNext())
+                Assert.AreEqual(original.Current.UnitPrice, reloaded.Current.UnitPrice);
+
+            Assert.AreEqual(original.MoveNext(), reloaded.MoveNext());
+
+            // undo
+            foreach (var p in q)
+                p.UnitPrice -= 1.0m;
+            db.SubmitChanges();
+        }
+
+
+        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
+        [Test(Description = "Delete - Simple. This sample uses the Remove method to delete an OrderDetail from the OrderDetails Table object. The call to SubmitChanges persists this deletion to the database.")]
+        public void LinqToSqlInsert06()
+        {
+            Northwind db = CreateDB();
+
+            db.Connection.Open();
+            db.Transaction = db.Connection.BeginTransaction();
+            try
+            {
+                OrderDetail ode = db.OrderDetails.First();
+                decimal orderID = ode.OrderID;
+                decimal productID = ode.ProductID;
+
+
+                OrderDetail order = (from c in db.OrderDetails
+                                     where c.OrderID == orderID && c.ProductID == productID
+                                     select c).First();
+
+                //what happened to Table.Remove()?
+                //The Add and AddAll methods are now InsertOnSubmit and InsertAllOnSubmit. The Remove and RemoveAll are now DeleteOnSubmit and DeleteAllOnSubmit.
+                //http://blogs.vertigo.com/personal/petar/Blog/Lists/Posts/Post.aspx?List=9441ab3e%2Df290%2D4a5b%2Da591%2D49a8226de525&ID=3
+
+                db.OrderDetails.DeleteOnSubmit(order); //formerly Remove(order);
+                db.SubmitChanges();
+
+                Assert.IsFalse(db.OrderDetails.Any(od => od.OrderID == orderID && od.ProductID == productID));
+            }
+            finally
+            {
+                db.Transaction.Rollback();
+                db.Transaction = null;
+            }
+        }
+
+        [SetUp]
+        public void Setup_LinqToSqlInsert07()
+        {
+            //Northwind db = CreateDB();
+            //var o = new Order { CustomerID = "WARTH", Employee = db.Employees.First() };
+            //o.OrderDetails.Add(new OrderDetail { Discount = 0.1f, Quantity = 1, Product = db.Products.First(p => p.Discontinued) });
+            //o.OrderDetails.Add(new OrderDetail { Discount = 0.2f, Quantity = 1, Product = db.Products.First(p => !p.Discontinued) });
+            //db.Orders.InsertOnSubmit(o);
+            //db.SubmitChanges();
+        }
+
+        [Linq101SamplesModified("Console and ObjectDummper references deleted")]
+        [Test(Description = "Delete - One-to-Many. This sample uses the Remove method to delete an Order and Order Detail from the Order Details and Orders tables. First deleting Order Details and then deleting from Orders. The call to SubmitChanges persists this deletion to the database.")]
+        public void LinqToSqlInsert07()
+        {
+            Northwind db = CreateDB();
+
+            db.Connection.Open();
+            db.Transaction = db.Connection.BeginTransaction();
+            try
+            {
+                var orderDetails =
+                    from o in db.OrderDetails
+                    where o.Order.CustomerID == "WARTH"
+                    select o;
+
+                var order =
+                    (from o in db.Orders
+                     where o.CustomerID == "WARTH"
+                     select o).FirstOrDefault();
+
+                if (!orderDetails.Any() || order == null)
+                    Assert.Ignore("Preconditions");
+
+
+                foreach (var od in orderDetails)
+                {
+                    db.OrderDetails.DeleteOnSubmit(od); //formerly Remove(od);
+                }
+
+                db.Orders.DeleteOnSubmit(order); //formerly Remove(order);
+                db.SubmitChanges();
+
+                Assert.IsFalse(
+                    db.OrderDetails.Any(od => od.Order.Customer.CustomerID == "WARTH" && od.Order.EmployeeID == 3));
+                Assert.IsFalse(db.Orders.Any(ord => ord.OrderID == order.OrderID));
+            }
+            finally
+            {
+                db.Transaction.Rollback();
+                db.Transaction = null;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Join.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Join.cs
@@ -1,233 +1,233 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737929.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class Join : TestBase
-    {
-        [Test(Description = "This sample uses foreign key navigation in the from clause to select all orders for customers in London")]
-        public void LinqToSqlJoin01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    from o in c.Orders
-                    where c.City == "London"
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0, "No rows returned");
-            Assert.IsTrue(list[0].CustomerID != null, "Missing CustomerID");
-        }
-
-        [Test(Description = "This sample uses foreign key navigation in the from clause to select all orders for customers in London")]
-        public void LinqToSqlJoin01_b()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    from o in c.Orders
-                    where c.City == "London"
-                    select new { o.CustomerID, o.OrderID };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "This sample uses foreign key navigation in the where clause to filter for Products whose Supplier is in the USA that are out of stock")]
-        public void LinqToSqlJoin02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    where p.Supplier.Country == "USA" && p.UnitsInStock == 0
-                    select p;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "This sample uses foreign key navigation in the from clause to filter for employees in Seattle, and also list their territories")]
-        public void LinqToSqlJoin03()
-        {
-            //Logger.Write(Level.Information, "\nLinq.Join03()");
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    from et in e.EmployeeTerritories
-                    where e.City == "Seattle"
-                    select new { e.FirstName, e.LastName, et.Territory.TerritoryDescription };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "SelectMany - Self-Join.  filter for pairs of employees where one employee reports to the other and where both employees are from the same City")]
-        public void LinqToSqlJoin04()
-        {
-            //Logger.Write(Level.Information, "\nLinq.Join04()");
-            Northwind db = CreateDB();
-
-            var q = from e1 in db.Employees
-                    from e2 in e1.Employees
-                    where e1.City == e2.City
-                    select new
-                    {
-                        FirstName1 = e1.FirstName,
-                        LastName1 = e1.LastName,
-                        FirstName2 = e2.FirstName,
-                        LastName2 = e2.LastName,
-                        e1.City
-                    };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-            foreach (var v in list)
-            {
-                Assert.IsTrue(v.LastName1 != v.LastName2, "Last names must be different");
-            }
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "GroupJoin - Two-way join. This sample explictly joins two tables and projects results from both tables.")]
-        public void LinqToSqlJoin05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    join o in db.Orders on c.CustomerID equals o.CustomerID into orders
-                    select new { c.ContactName, OrderCount = orders.Count() };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "GroupJoin - Three-way join. This sample explictly joins three tables and projects results from each of them.")]
-        public void LinqToSqlJoin06()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    join o in db.Orders on c.CustomerID equals o.CustomerID into ords
-                    join e in db.Employees on c.City equals e.City into emps
-                    select new { c.ContactName, ords = ords.Count(), emps = emps.Count() };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupJoin - LEFT OUTER JOIN. This sample shows how to get LEFT OUTER JOIN by using DefaultIfEmpty(). The DefaultIfEmpty() method returns null when there is no Order for the Employee.")]
-        public void LinqToSqlJoin07()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    join o in db.Orders on e equals o.Employee into ords
-                    from o in ords.DefaultIfEmpty()
-                    select new { e.FirstName, e.LastName, Order = o };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupJoin - Projected let assignment. This sample projects a 'let' expression resulting from a join.")]
-        public void LinqToSqlJoin08()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    join o in db.Orders on c.CustomerID equals o.CustomerID into ords
-                    let z = c.City + c.Country
-                    from o in ords
-                    select new { c.ContactName, o.OrderID, z };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "GroupJoin - Composite Key.This sample shows a join with a composite key.")]
-        public void LinqToSqlJoin09()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    from p in db.Products
-                    join d in db.OrderDetails
-                        on new { o.OrderID, p.ProductID }
-                        equals new { d.OrderID, d.ProductID }
-                    into details
-                    from d in details
-                    select new { o.OrderID, p.ProductID, d.UnitPrice };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        /// <summary>
-        /// This sample shows how to construct a join where one side is nullable and the other isn't.
-        /// </summary>
-        [Test(Description = "GroupJoin - Nullable\\Nonnullable Key Relationship")]
-        public void LinqToSqlJoin10()
-        {
-            //Microsoft Linq-to-SQL generated statement that we want to match:
-            //SELECT [t0].[OrderID], [t1].[FirstName]
-            //FROM [dbo].[Orders] AS [t0], [dbo].[Employees] AS [t1]
-            //WHERE [t0].[EmployeeID] = ([t1].[EmployeeID])
-
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    join e in db.Employees on o.EmployeeID equals e.EmployeeID into emps
-                    from e in emps
-                    select new { o.OrderID, e.FirstName };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737929.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class Join : TestBase
+    {
+        [Test(Description = "This sample uses foreign key navigation in the from clause to select all orders for customers in London")]
+        public void LinqToSqlJoin01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    from o in c.Orders
+                    where c.City == "London"
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0, "No rows returned");
+            Assert.IsTrue(list[0].CustomerID != null, "Missing CustomerID");
+        }
+
+        [Test(Description = "This sample uses foreign key navigation in the from clause to select all orders for customers in London")]
+        public void LinqToSqlJoin01_b()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    from o in c.Orders
+                    where c.City == "London"
+                    select new { o.CustomerID, o.OrderID };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "This sample uses foreign key navigation in the where clause to filter for Products whose Supplier is in the USA that are out of stock")]
+        public void LinqToSqlJoin02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    where p.Supplier.Country == "USA" && p.UnitsInStock == 0
+                    select p;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "This sample uses foreign key navigation in the from clause to filter for employees in Seattle, and also list their territories")]
+        public void LinqToSqlJoin03()
+        {
+            //Logger.Write(Level.Information, "\nLinq.Join03()");
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    from et in e.EmployeeTerritories
+                    where e.City == "Seattle"
+                    select new { e.FirstName, e.LastName, et.Territory.TerritoryDescription };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "SelectMany - Self-Join.  filter for pairs of employees where one employee reports to the other and where both employees are from the same City")]
+        public void LinqToSqlJoin04()
+        {
+            //Logger.Write(Level.Information, "\nLinq.Join04()");
+            Northwind db = CreateDB();
+
+            var q = from e1 in db.Employees
+                    from e2 in e1.Employees
+                    where e1.City == e2.City
+                    select new
+                    {
+                        FirstName1 = e1.FirstName,
+                        LastName1 = e1.LastName,
+                        FirstName2 = e2.FirstName,
+                        LastName2 = e2.LastName,
+                        e1.City
+                    };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+            foreach (var v in list)
+            {
+                Assert.IsTrue(v.LastName1 != v.LastName2, "Last names must be different");
+            }
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "GroupJoin - Two-way join. This sample explictly joins two tables and projects results from both tables.")]
+        public void LinqToSqlJoin05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    join o in db.Orders on c.CustomerID equals o.CustomerID into orders
+                    select new { c.ContactName, OrderCount = orders.Count() };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "GroupJoin - Three-way join. This sample explictly joins three tables and projects results from each of them.")]
+        public void LinqToSqlJoin06()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    join o in db.Orders on c.CustomerID equals o.CustomerID into ords
+                    join e in db.Employees on c.City equals e.City into emps
+                    select new { c.ContactName, ords = ords.Count(), emps = emps.Count() };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupJoin - LEFT OUTER JOIN. This sample shows how to get LEFT OUTER JOIN by using DefaultIfEmpty(). The DefaultIfEmpty() method returns null when there is no Order for the Employee.")]
+        public void LinqToSqlJoin07()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    join o in db.Orders on e equals o.Employee into ords
+                    from o in ords.DefaultIfEmpty()
+                    select new { e.FirstName, e.LastName, Order = o };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupJoin - Projected let assignment. This sample projects a 'let' expression resulting from a join.")]
+        public void LinqToSqlJoin08()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    join o in db.Orders on c.CustomerID equals o.CustomerID into ords
+                    let z = c.City + c.Country
+                    from o in ords
+                    select new { c.ContactName, o.OrderID, z };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "GroupJoin - Composite Key.This sample shows a join with a composite key.")]
+        public void LinqToSqlJoin09()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    from p in db.Products
+                    join d in db.OrderDetails
+                        on new { o.OrderID, p.ProductID }
+                        equals new { d.OrderID, d.ProductID }
+                    into details
+                    from d in details
+                    select new { o.OrderID, p.ProductID, d.UnitPrice };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        /// <summary>
+        /// This sample shows how to construct a join where one side is nullable and the other isn't.
+        /// </summary>
+        [Test(Description = "GroupJoin - Nullable\\Nonnullable Key Relationship")]
+        public void LinqToSqlJoin10()
+        {
+            //Microsoft Linq-to-SQL generated statement that we want to match:
+            //SELECT [t0].[OrderID], [t1].[FirstName]
+            //FROM [dbo].[Orders] AS [t0], [dbo].[Employees] AS [t1]
+            //WHERE [t0].[EmployeeID] = ([t1].[EmployeeID])
+
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    join e in db.Employees on o.EmployeeID equals e.EmployeeID into emps
+                    from e in emps
+                    select new { o.OrderID, e.FirstName };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Linq101SamplesModifiedAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Linq101SamplesModifiedAttribute.cs
@@ -1,19 +1,19 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Test_NUnit.Linq_101_Samples
-{
-    [global::System.AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
-    sealed class Linq101SamplesModifiedAttribute : Attribute
-    {
-        readonly string description;
-        public Linq101SamplesModifiedAttribute(string description)
-        {
-            this.description = description;
-        }
-
-        public string PositionalString { get; private set; }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Test_NUnit.Linq_101_Samples
+{
+    [global::System.AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
+    sealed class Linq101SamplesModifiedAttribute : Attribute
+    {
+        readonly string description;
+        public Linq101SamplesModifiedAttribute(string description)
+        {
+            this.description = description;
+        }
+
+        public string PositionalString { get; private set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Null.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Null.cs
@@ -1,102 +1,102 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737930.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class NullTest : TestBase
-    {
-        [Test]
-        public void Null()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees 
-                    where e.ReportsTo==null select e;
-
-            List<Employee> list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void NullableT_HasValue()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees 
-                    where !e.ReportsTo.HasValue select e;
-
-            List<Employee> list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void NullableT_Value()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees 
-                    where e.ReportsTo.HasValue 
-                    select new { e.FirstName, e.LastName, ReportsTo = e.ReportsTo.Value };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void Null_EX1()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where null == e.ReportsTo
-                    select e;
-
-            List<Employee> list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void Null_EX2()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where null != e.ReportsTo
-                    select e;
-
-            List<Employee> list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737930.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class NullTest : TestBase
+    {
+        [Test]
+        public void Null()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees 
+                    where e.ReportsTo==null select e;
+
+            List<Employee> list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void NullableT_HasValue()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees 
+                    where !e.ReportsTo.HasValue select e;
+
+            List<Employee> list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void NullableT_Value()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees 
+                    where e.ReportsTo.HasValue 
+                    select new { e.FirstName, e.LastName, ReportsTo = e.ReportsTo.Value };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void Null_EX1()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where null == e.ReportsTo
+                    select e;
+
+            List<Employee> list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void Null_EX2()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where null != e.ReportsTo
+                    select e;
+
+            List<Employee> list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Object Loading.cs	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Object Loading.cs	
@@ -1,174 +1,174 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && MONO_STRICT
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class Object_Loading : TestBase
-    {
-        [Test(Description = "This sample demonstrates how to use Including to request related data during the original query so that additional roundtrips to the database are not required later when navigating through the retrieved objects.")]
-        public void LinqToSqlObject01()
-        {
-            Northwind db = CreateDB();
-
-            var custs = from c in db.Customers
-                        where c.City == "Marseille"
-                        select c;
-
-            foreach (var cust in custs)
-                foreach (var ord in cust.Orders)
-                {
-                    Console.WriteLine("CustomerID {0} has an OrderID {1}.", cust.CustomerID, ord.OrderID);
-                }
-
-            var list = custs.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
-        [Test(Description = "This sample demonstrates how to use Including to request related data during the original query so that additional roundtrips to the database are not required later when navigating through the retrieved objects.")]
-        public void LinqToSqlObject02()
-        {
-            Northwind db = CreateDB();
-
-
-            var ds = new DataLoadOptions();
-            ds.LoadWith<Customer>(p => p.Orders);
-
-            db.LoadOptions = ds;
-
-            var custs = from c in db.Customers
-                        where c.City == "Marseille"
-                        select c;
-
-            foreach (var cust in custs)
-                foreach (var ord in cust.Orders)
-                    Console.WriteLine("CustomerID {0} has an OrderID {1}.", cust.CustomerID, ord.OrderID);
-
-            var list = custs.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "This sample demonstrates how navigating through relationships in retrieved objects can end up triggering new queries to the database if the data was not requested by the original query.")]
-        public void LinqToSqlObject03()
-        {
-            Northwind db = CreateDB();
-
-            var custs = from c in db.Customers
-                        where c.City == "London"
-                        select c;
-
-            foreach (var cust in custs)
-                foreach (var ord in cust.Orders)
-                    foreach (var orderDetail in ord.OrderDetails)
-                    {
-                        Console.WriteLine("CustomerID {0} has an OrderID {1} with ProductID {2} that has name {3}.",
-                            cust.CustomerID, ord.OrderID, orderDetail.ProductID, orderDetail.Product.ProductName);
-                    }
-
-            var list = custs.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
-        [Test(Description = "This sample demonstrates how to use Including to request related data during the original query so that additional roundtrips to the database are not required later when navigating through the retrieved objects.")]
-        public void LinqToSqlObject04()
-        {
-            var db = CreateDB();
-
-            var ds = new DataLoadOptions();
-            ds.LoadWith<Customer>(p => p.Orders);
-            ds.LoadWith<Order>(p => p.OrderDetails);
-
-            db.LoadOptions = ds;
-
-            var custs = from c in db.Customers
-                        where c.City == "London"
-                        select c;
-
-            foreach (var cust in custs)
-                foreach (var ord in cust.Orders)
-                    foreach (var orderDetail in ord.OrderDetails)
-                    {
-                        Console.WriteLine("CustomerID {0} has an OrderID {1} with ProductID {2} that has name {3}.",
-                            cust.CustomerID, ord.OrderID, orderDetail.ProductID, orderDetail.Product.ProductName);
-                    }
-
-            var list = custs.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-
-        }
-
-        [Test(Description = "This sample demonstrates how navigating through relationships in retrieved objects can result in triggering new queries to the database if the data was not requested by the original query.")]
-        public void LinqToSqlObject05()
-        {
-            var db = CreateDB();
-
-            var emps = from e in db.Employees select e;
-
-            foreach (var emp in emps)
-                foreach (var man in emp.Employees)
-                    Console.WriteLine("Employee {0} reported to Manager {1}.", emp.FirstName, man.FirstName);
-
-            var list = emps.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-
-        [Test(Description = "This sample demonstrates how navigating through Link in retrieved objects can end up triggering new queries to the database if the data type is Link.")]
-        public void LinqToSqlObject06()
-        {
-            var db = CreateDB();
-
-            var emps = from c in db.Employees select c;
-
-            foreach (var emp in emps)
-                Console.WriteLine("{0}", emp.Notes);
-
-            var list = emps.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && MONO_STRICT
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class Object_Loading : TestBase
+    {
+        [Test(Description = "This sample demonstrates how to use Including to request related data during the original query so that additional roundtrips to the database are not required later when navigating through the retrieved objects.")]
+        public void LinqToSqlObject01()
+        {
+            Northwind db = CreateDB();
+
+            var custs = from c in db.Customers
+                        where c.City == "Marseille"
+                        select c;
+
+            foreach (var cust in custs)
+                foreach (var ord in cust.Orders)
+                {
+                    Console.WriteLine("CustomerID {0} has an OrderID {1}.", cust.CustomerID, ord.OrderID);
+                }
+
+            var list = custs.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
+        [Test(Description = "This sample demonstrates how to use Including to request related data during the original query so that additional roundtrips to the database are not required later when navigating through the retrieved objects.")]
+        public void LinqToSqlObject02()
+        {
+            Northwind db = CreateDB();
+
+
+            var ds = new DataLoadOptions();
+            ds.LoadWith<Customer>(p => p.Orders);
+
+            db.LoadOptions = ds;
+
+            var custs = from c in db.Customers
+                        where c.City == "Marseille"
+                        select c;
+
+            foreach (var cust in custs)
+                foreach (var ord in cust.Orders)
+                    Console.WriteLine("CustomerID {0} has an OrderID {1}.", cust.CustomerID, ord.OrderID);
+
+            var list = custs.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "This sample demonstrates how navigating through relationships in retrieved objects can end up triggering new queries to the database if the data was not requested by the original query.")]
+        public void LinqToSqlObject03()
+        {
+            Northwind db = CreateDB();
+
+            var custs = from c in db.Customers
+                        where c.City == "London"
+                        select c;
+
+            foreach (var cust in custs)
+                foreach (var ord in cust.Orders)
+                    foreach (var orderDetail in ord.OrderDetails)
+                    {
+                        Console.WriteLine("CustomerID {0} has an OrderID {1} with ProductID {2} that has name {3}.",
+                            cust.CustomerID, ord.OrderID, orderDetail.ProductID, orderDetail.Product.ProductName);
+                    }
+
+            var list = custs.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Linq101SamplesModified("The original sample didn't compile, db2 Northwind context was used for nothing")]
+        [Test(Description = "This sample demonstrates how to use Including to request related data during the original query so that additional roundtrips to the database are not required later when navigating through the retrieved objects.")]
+        public void LinqToSqlObject04()
+        {
+            var db = CreateDB();
+
+            var ds = new DataLoadOptions();
+            ds.LoadWith<Customer>(p => p.Orders);
+            ds.LoadWith<Order>(p => p.OrderDetails);
+
+            db.LoadOptions = ds;
+
+            var custs = from c in db.Customers
+                        where c.City == "London"
+                        select c;
+
+            foreach (var cust in custs)
+                foreach (var ord in cust.Orders)
+                    foreach (var orderDetail in ord.OrderDetails)
+                    {
+                        Console.WriteLine("CustomerID {0} has an OrderID {1} with ProductID {2} that has name {3}.",
+                            cust.CustomerID, ord.OrderID, orderDetail.ProductID, orderDetail.Product.ProductName);
+                    }
+
+            var list = custs.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+
+        }
+
+        [Test(Description = "This sample demonstrates how navigating through relationships in retrieved objects can result in triggering new queries to the database if the data was not requested by the original query.")]
+        public void LinqToSqlObject05()
+        {
+            var db = CreateDB();
+
+            var emps = from e in db.Employees select e;
+
+            foreach (var emp in emps)
+                foreach (var man in emp.Employees)
+                    Console.WriteLine("Employee {0} reported to Manager {1}.", emp.FirstName, man.FirstName);
+
+            var list = emps.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+
+        [Test(Description = "This sample demonstrates how navigating through Link in retrieved objects can end up triggering new queries to the database if the data type is Link.")]
+        public void LinqToSqlObject06()
+        {
+            var db = CreateDB();
+
+            var emps = from c in db.Employees select c;
+
+            foreach (var emp in emps)
+                Console.WriteLine("{0}", emp.Notes);
+
+            var list = emps.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Object_Identity.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Object_Identity.cs
@@ -1,79 +1,79 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737931.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class Object_Identity : TestBase
-    {
-
-        /// <summary>
-        /// This sample demonstrates how, upon executing the same query twice, you will receive a reference to the same object in memory each time.
-        /// </summary>
-        [Test(Description = "Object Caching - 1.")]
-        public void LinqToSqlObjectIdentity01()
-        {
-            Northwind db = CreateDB();
-
-            Customer cust1 = db.Customers.First(c => c.CustomerID == "BONAP");
-
-            Customer cust2 = (from c in db.Customers
-                              where c.CustomerID == "BONAP"
-                              select c).First();
-
-            bool isSameObject = Object.ReferenceEquals(cust1, cust2);
-            Assert.IsTrue(isSameObject);
-            Assert.IsTrue(cust1.CustomerID == "BONAP", "CustomerID must be BONAP - was: " + cust1.CustomerID);
-        }
-
-        [Test(Description="Example 2 from msdn")]
-        public void MSDN_ObjectIdentity2()
-        {
-            //source: http://msdn2.microsoft.com/en-us/library/bb399376.aspx
-            Northwind db = CreateDB();
-
-            Customer cust1 =
-                (from cust in db.Customers
-                 where cust.CustomerID == "BONAP"
-                 select cust).First();
-
-            Customer cust2 =
-                (from ord in db.Orders
-                 where ord.Customer.CustomerID == "BONAP"
-                 select ord).First().Customer;
-
-            bool isSameObject = Object.ReferenceEquals(cust1, cust2);
-            Assert.IsTrue(isSameObject);
-        }
-
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737931.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class Object_Identity : TestBase
+    {
+
+        /// <summary>
+        /// This sample demonstrates how, upon executing the same query twice, you will receive a reference to the same object in memory each time.
+        /// </summary>
+        [Test(Description = "Object Caching - 1.")]
+        public void LinqToSqlObjectIdentity01()
+        {
+            Northwind db = CreateDB();
+
+            Customer cust1 = db.Customers.First(c => c.CustomerID == "BONAP");
+
+            Customer cust2 = (from c in db.Customers
+                              where c.CustomerID == "BONAP"
+                              select c).First();
+
+            bool isSameObject = Object.ReferenceEquals(cust1, cust2);
+            Assert.IsTrue(isSameObject);
+            Assert.IsTrue(cust1.CustomerID == "BONAP", "CustomerID must be BONAP - was: " + cust1.CustomerID);
+        }
+
+        [Test(Description="Example 2 from msdn")]
+        public void MSDN_ObjectIdentity2()
+        {
+            //source: http://msdn2.microsoft.com/en-us/library/bb399376.aspx
+            Northwind db = CreateDB();
+
+            Customer cust1 =
+                (from cust in db.Customers
+                 where cust.CustomerID == "BONAP"
+                 select cust).First();
+
+            Customer cust2 =
+                (from ord in db.Orders
+                 where ord.Customer.CustomerID == "BONAP"
+                 select ord).First().Customer;
+
+            bool isSameObject = Object.ReferenceEquals(cust1, cust2);
+            Assert.IsTrue(isSameObject);
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/OptimisticConcurrence.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/OptimisticConcurrence.cs
@@ -1,423 +1,423 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using nwind;
-using Test_NUnit.Linq_101_Samples;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class OptimisticConcurrence:TestBase
-    {
-        [Test(Description="Get conflict information. This sample demonstrates how to retrieve the changes that lead to an optimistic concurrency exception.")]
-
-        public void LinqToSqlOptimistic01()
-        {
-            Northwind db=CreateDb();
-
-    Console.WriteLine("YOU:  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
-    var product = db.Products.First(p=>p.ProductID = 1);
-    Console.WriteLine("~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
-    Console.WriteLine();
-    Console.WriteLine("OTHER USER: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
-    // Open a second connection to the database to simulate another user
-    // who is going to make changes to the Products table                
-
-    var otherUser_db = Northwind(My.Settings.NORTHWINDConnectionString1) With {.Log = db.Log};
-    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1);
-    otherUser_product.UnitPrice = 999.99D;
-    otherUser_product.UnitsOnOrder = 10;
-    otherUser_db.SubmitChanges();
-    Console.WriteLine("~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
-    Console.WriteLine("YOU (continued): ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
-    product.UnitPrice = 777.77D;
-
-    var conflictOccurred = False;
-    try{
-        db.SubmitChanges(ConflictMode.ContinueOnConflict)
-    catch(ChangeConflictException c)
-    {
-        Console.WriteLine("* * * OPTIMISTIC CONCURRENCY EXCEPTION * * *")
-        For Each aConflict In db.ChangeConflicts
-            var prod = CType(aConflict.Object, Product)
-            Console.WriteLine("The conflicting product has ProductID {0}", prod.ProductID)
-            Console.WriteLine()
-            Console.WriteLine("Conflicting members:")
-            Console.WriteLine()
-            For Each memConflict In aConflict.MemberConflicts
-                var name = memConflict.Member.Name
-                var yourUpdate = memConflict.CurrentValue.ToString()
-                var original = memConflict.OriginalValue.ToString()
-                var theirUpdate = memConflict.DatabaseValue.ToString()
-                If (memConflict.IsModified) Then
-
-                    Console.WriteLine("//{0}// was updated from {1} to {2} while you updated it to {3}", _
-                                          name, original, theirUpdate, yourUpdate)
-                Else
-                    Console.WriteLine("//{0}// was updated from {1} to {2}, you did not change it.", _
-                                                                        name, original, theirUpdate)
-                End If
-                Console.WriteLine()
-            Next
-            conflictOccurred = True
-        Next
-
-        Console.WriteLine()
-        If (Not conflictOccurred) Then
-
-            Console.WriteLine("* * * COMMIT SUCCESSFUL * * *")
-            Console.WriteLine("Changes to Product 1 saved.")
-        End If
-        Console.WriteLine("~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ")
-
-        ResetProducts() // clean up
-    }
-}
-
-
-
-[Test(Description="Resolve conflicts: Overwrite current values. This sample demonstrates how to automatically resolve concurrency conflicts. The //overwrite current values// option writes the new database values to the client objects.")]
-
-public void LinqToSqlOptimistic02()
-            {
-            Northwind db=CreateDb();
-
-
-    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    db.Log = null
-
-    var product = db.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("You retrieve the product 1, it costs {0}", product.UnitPrice)
-    Console.WriteLine("There are {0} units in stock, {1} units on order", product.UnitsInStock, product.UnitsOnOrder)
-    Console.WriteLine()
-
-    Console.WriteLine("Another user changes the price to 22.22 and UnitsInStock to 22")
-    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
-    otherUser_product.UnitPrice = 22.22D
-    otherUser_product.UnitsInStock = 22
-    otherUser_db.SubmitChanges()
-
-    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
-    product.UnitPrice = 1.01D
-    product.UnitsOnOrder = 11
-    Try
-        Console.WriteLine("You submit")
-        Console.WriteLine()
-        db.SubmitChanges()
-    Catch c As ChangeConflictException
-        WriteConflictDetails(db.ChangeConflicts)  // write changed objects / members to console
-        Console.WriteLine()
-        Console.WriteLine("Resolve by overwriting current values")
-        db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues)
-        db.SubmitChanges()
-    End Try
-
-    Console.WriteLine()
-    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    var result = dbResult.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("Now product 1 has price={0}, UnitsInStock={1}, UnitsOnOrder={2}", _
-        result.UnitPrice, result.UnitsInStock, result.UnitsOnOrder)
-    Console.WriteLine()
-    ResetProducts() // clean up
-}
-
-
-
-[Test(Description="Resolve conflicts: Keep current values. This sample demonstrates how to automatically resolve concurrency conflicts. The //keep current values// option changes everything to the values of this client.")]
-public void LinqToSqlOptimistic03()
-            {
-            Northwind db=CreateDb();
-
-    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    db.Log = null
-
-    var Prod = db.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("You retrieve the product 1, it costs {0}", Prod.UnitPrice)
-    Console.WriteLine("There are {0} units in stock, {1} units on order", Prod.UnitsInStock, Prod.UnitsOnOrder)
-    Console.WriteLine()
-
-    Console.WriteLine("Another user changes the price to 22.22 and UnitsInStock to 22")
-    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
-    otherUser_product.UnitPrice = 22.22D
-    otherUser_product.UnitsInStock = 22
-    otherUser_db.SubmitChanges()
-
-    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
-    Prod.UnitPrice = 1.01D
-    Prod.UnitsOnOrder = 11
-    Try
-        Console.WriteLine("You submit")
-        Console.WriteLine()
-        db.SubmitChanges()
-    Catch c As ChangeConflictException
-        WriteConflictDetails(db.ChangeConflicts) // write changed objects / members to console
-        Console.WriteLine()
-        Console.WriteLine("Resolve by keeping current values")
-        db.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues)
-        db.SubmitChanges()
-    End Try
-    Console.WriteLine()
-    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    var result = dbResult.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("Now product 1 has price={0}, UnitsInStock={1}, UnitsOnOrder={2}", _
-        result.UnitPrice, result.UnitsInStock, result.UnitsOnOrder)
-    Console.WriteLine()
-    ResetProducts() // clean up
-}
-
-
-
-[Test(Description="Resolve conflicts: Keep changes. This sample demonstrates how to automatically resolve concurrency conflicts. The //keep changes// option keeps all changes from the current user and merges changes from other users if the corresponding field was not changed by the current user.")]
-
-public void LinqToSqlOptimistic04()
-            {
-            Northwind db=CreateDb();
-
-
-    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    db.Log = null
-
-    var prod = db.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("You retrieve the product 1, it costs {0}", prod.UnitPrice)
-    Console.WriteLine("There are {0} units in stock, {1} units on order", prod.UnitsInStock, prod.UnitsOnOrder)
-    Console.WriteLine()
-
-    Console.WriteLine("Another user changes the price to 22.22 and UnitsInStock to 22")
-    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
-    otherUser_product.UnitPrice = 22.22D
-    otherUser_product.UnitsInStock = 22
-    otherUser_db.SubmitChanges()
-
-    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
-    prod.UnitPrice = 1.01D
-    prod.UnitsOnOrder = 11D
-    Try
-        Console.WriteLine("You submit")
-        Console.WriteLine()
-        db.SubmitChanges()
-    Catch c As ChangeConflictException
-        WriteConflictDetails(db.ChangeConflicts) //write changed objects / members to console
-        Console.WriteLine()
-        Console.WriteLine("Resolve by keeping changes")
-        db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges)
-        db.SubmitChanges()
-    End Try
-    Console.WriteLine()
-    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    var result = dbResult.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("Now product 1 has price={0}, UnitsInStock={1}, UnitsOnOrder={2}", _
-        result.UnitPrice, result.UnitsInStock, result.UnitsOnOrder)
-    Console.WriteLine()
-    ResetProducts() // clean up
-}
-
-
-
-[Test(Description="Custom resolve rule. Demonstrates using MemberConflict.Resolve to write a custom resolve rule.")]
-
-public void LinqToSqlOptimistic05()
-            {
-            Northwind db=CreateDb();
-
-
-    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    db.Log = null
-
-    var prod = db.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("You retrieve the product 1, it costs {0}", prod.UnitPrice)
-    Console.WriteLine("There are {0} units in stock, {1} units on order", prod.UnitsInStock, prod.UnitsOnOrder)
-    Console.WriteLine()
-
-    Console.WriteLine("Another user changes the price to 22.22 and UnitsOnOrder to 2")
-    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
-    otherUser_product.UnitPrice = 22.22D
-    otherUser_product.UnitsOnOrder = 2
-    otherUser_db.SubmitChanges()
-
-    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
-    prod.UnitPrice = 1.01D
-    prod.UnitsOnOrder = 11
-    var needsSubmit = True
-    While needsSubmit
-        Try
-            Console.WriteLine("You submit")
-            Console.WriteLine()
-            needsSubmit = False
-            db.SubmitChanges()
-        Catch c As ChangeConflictException
-            needsSubmit = True
-            WriteConflictDetails(db.ChangeConflicts) // write changed objects / members to console
-            Console.WriteLine()
-            Console.WriteLine("Resolve by higher price / order")
-            For Each conflict In db.ChangeConflicts
-                conflict.Resolve(RefreshMode.KeepChanges)
-                For Each memConflict In conflict.MemberConflicts
-                    If (memConflict.Member.Name = "UnitPrice") Then
-                        //always use the highest price
-                        var theirPrice = CDec(memConflict.DatabaseValue)
-                        var yourPrice = CDec(memConflict.CurrentValue)
-                        memConflict.Resolve(Math.Max(theirPrice, yourPrice))
-                    ElseIf (memConflict.Member.Name = "UnitsOnOrder") Then
-                        //always use higher order
-                        var theirOrder = CShort(memConflict.DatabaseValue)
-                        var yourOrder = CShort(memConflict.CurrentValue)
-                        memConflict.Resolve(Math.Max(theirOrder, yourOrder))
-                    End If
-                Next
-            Next
-        End Try
-    End While
-    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    var result = dbResult.Products.First(p=>p.ProductID = 1)
-    Console.WriteLine("Now product 1 has price={0}, UnitsOnOrder={1}", _
-        result.UnitPrice, result.UnitsOnOrder)
-    Console.WriteLine()
-    ResetProducts() //clean up
-}
-
-
-
-[Test(Description="Submit with FailOnFirstConflict. Submit(FailOnFirstConflict) throws an Optimistic Concurrency Exception when the first conflict is detected. Only one exception is handled at a time, you have to submit for each conflict.")]
-
-public void LinqToSqlOptimistic06()
-            {
-            Northwind db=CreateDb();
-
-
-    db.Log = null
-    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-
-    //you load 3 products
-    var prod() = db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
-    For i = 0 To 2
-        Console.WriteLine("You retrieve the product {0}, it costs {1}", i + 1, prod(i).UnitPrice)
-    Next
-    //other user changes these products
-    var otherUserProd() = otherUser_db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
-    For i = 0 To 2
-        var otherPrice = (i + 1) * 111.11D
-        Console.WriteLine("Other user changes the price of product {0} to {1}", i + 1, otherPrice)
-        otherUserProd(i).UnitPrice = otherPrice
-    Next
-    otherUser_db.SubmitChanges()
-    Console.WriteLine("Other user submitted changes")
-
-    //you change your loaded products
-    For i = 0 To 2
-        var yourPrice = (i + 1) * 1.01D
-        Console.WriteLine("You set the price of product {0} to {1}", i + 1, yourPrice)
-        prod(i).UnitPrice = yourPrice
-    Next
-
-    // submit
-    var needsSubmit = True
-    While needsSubmit
-        Try
-            Console.WriteLine("======= You submit with FailOnFirstConflict =======")
-            needsSubmit = False
-            db.SubmitChanges(ConflictMode.FailOnFirstConflict)
-        Catch c As ChangeConflictException
-            For Each conflict In db.ChangeConflicts
-
-                DescribeConflict(conflict) //write changes to console
-                Console.WriteLine("Resolve conflict with KeepCurrentValues")
-                conflict.Resolve(RefreshMode.KeepCurrentValues)
-            Next
-            needsSubmit = True
-        End Try
-    End While
-    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    For i = 0 To 2
-        //Creating a temporary since this will be used in a lambda
-        var tmp = i
-        var result = dbResult.Products.First(p=>p.ProductID = tmp + 1)
-        Console.WriteLine("Now the product {0} has price {1}", i + 1, result.UnitPrice)
-    Next
-    ResetProducts() //clean up
-}
-c
-
-
-
-
-[Test(Description="Submit with ContinueOnConflict. Submit(ContinueOnConflict) collects all concurrency conflicts and throws an exception when the last conflict is detected.\r\nAll conflicts are handled in one catch statement. It is still possible that another user updated the same objects before this update, so it is possible that another Optimistic Concurrency Exception is thrown which would need to be handled again.")]
-
-public void LinqToSqlOptimistic07()
-            {
-            Northwind db=CreateDb();
-
-    db.Log = null
-    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-
-    // you load 3 products
-    var prod() = db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
-    For i = 0 To 2
-        Console.WriteLine("You retrieve the product {0}, it costs {1}", i + 1, prod(i).UnitPrice)
-    Next
-    // other user changes these products
-    var otherUserProd() = otherUser_db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
-    For i = 0 To 2
-        var otherPrice = (i + 1) * 111.11D
-        Console.WriteLine("Other user changes the price of product {0} to {1}", i + 1, otherPrice)
-        otherUserProd(i).UnitPrice = otherPrice
-    Next
-    otherUser_db.SubmitChanges()
-    Console.WriteLine("Other user submitted changes")
-
-    // you change your loaded products
-    For i = 0 To 2
-        var yourPrice = (i + 1) * 1.01D
-        Console.WriteLine("You set the price of product {0} to {1}", i + 1, yourPrice)
-        prod(i).UnitPrice = yourPrice
-    Next
-    // submit
-    var needsSubmit = True
-    While needsSubmit
-        Try
-            Console.WriteLine("======= You submit with ContinueOnConflict =======")
-            needsSubmit = False
-            db.SubmitChanges(ConflictMode.ContinueOnConflict)
-        Catch c As ChangeConflictException
-            For Each conflict In db.ChangeConflicts
-                DescribeConflict(conflict) // write changes to console
-                Console.WriteLine("Resolve conflict with KeepCurrentValues")
-                conflict.Resolve(RefreshMode.KeepCurrentValues)
-            Next
-            needsSubmit = True
-        End Try
-    End While
-    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
-    For i = 0 To 2
-        var tmp = i
-        var result = dbResult.Products.First(p=>p.ProductID = tmp + 1)
-        Console.WriteLine("Now the product {0} has price {1}", i + 1, result.UnitPrice)
-    Next
-
-    ResetProducts() //clean up
-}
-
-
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using nwind;
+using Test_NUnit.Linq_101_Samples;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class OptimisticConcurrence:TestBase
+    {
+        [Test(Description="Get conflict information. This sample demonstrates how to retrieve the changes that lead to an optimistic concurrency exception.")]
+
+        public void LinqToSqlOptimistic01()
+        {
+            Northwind db=CreateDb();
+
+    Console.WriteLine("YOU:  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
+    var product = db.Products.First(p=>p.ProductID = 1);
+    Console.WriteLine("~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
+    Console.WriteLine();
+    Console.WriteLine("OTHER USER: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
+    // Open a second connection to the database to simulate another user
+    // who is going to make changes to the Products table                
+
+    var otherUser_db = Northwind(My.Settings.NORTHWINDConnectionString1) With {.Log = db.Log};
+    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1);
+    otherUser_product.UnitPrice = 999.99D;
+    otherUser_product.UnitsOnOrder = 10;
+    otherUser_db.SubmitChanges();
+    Console.WriteLine("~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
+    Console.WriteLine("YOU (continued): ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~");
+    product.UnitPrice = 777.77D;
+
+    var conflictOccurred = False;
+    try{
+        db.SubmitChanges(ConflictMode.ContinueOnConflict)
+    catch(ChangeConflictException c)
+    {
+        Console.WriteLine("* * * OPTIMISTIC CONCURRENCY EXCEPTION * * *")
+        For Each aConflict In db.ChangeConflicts
+            var prod = CType(aConflict.Object, Product)
+            Console.WriteLine("The conflicting product has ProductID {0}", prod.ProductID)
+            Console.WriteLine()
+            Console.WriteLine("Conflicting members:")
+            Console.WriteLine()
+            For Each memConflict In aConflict.MemberConflicts
+                var name = memConflict.Member.Name
+                var yourUpdate = memConflict.CurrentValue.ToString()
+                var original = memConflict.OriginalValue.ToString()
+                var theirUpdate = memConflict.DatabaseValue.ToString()
+                If (memConflict.IsModified) Then
+
+                    Console.WriteLine("//{0}// was updated from {1} to {2} while you updated it to {3}", _
+                                          name, original, theirUpdate, yourUpdate)
+                Else
+                    Console.WriteLine("//{0}// was updated from {1} to {2}, you did not change it.", _
+                                                                        name, original, theirUpdate)
+                End If
+                Console.WriteLine()
+            Next
+            conflictOccurred = True
+        Next
+
+        Console.WriteLine()
+        If (Not conflictOccurred) Then
+
+            Console.WriteLine("* * * COMMIT SUCCESSFUL * * *")
+            Console.WriteLine("Changes to Product 1 saved.")
+        End If
+        Console.WriteLine("~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ")
+
+        ResetProducts() // clean up
+    }
+}
+
+
+
+[Test(Description="Resolve conflicts: Overwrite current values. This sample demonstrates how to automatically resolve concurrency conflicts. The //overwrite current values// option writes the new database values to the client objects.")]
+
+public void LinqToSqlOptimistic02()
+            {
+            Northwind db=CreateDb();
+
+
+    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    db.Log = null
+
+    var product = db.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("You retrieve the product 1, it costs {0}", product.UnitPrice)
+    Console.WriteLine("There are {0} units in stock, {1} units on order", product.UnitsInStock, product.UnitsOnOrder)
+    Console.WriteLine()
+
+    Console.WriteLine("Another user changes the price to 22.22 and UnitsInStock to 22")
+    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
+    otherUser_product.UnitPrice = 22.22D
+    otherUser_product.UnitsInStock = 22
+    otherUser_db.SubmitChanges()
+
+    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
+    product.UnitPrice = 1.01D
+    product.UnitsOnOrder = 11
+    Try
+        Console.WriteLine("You submit")
+        Console.WriteLine()
+        db.SubmitChanges()
+    Catch c As ChangeConflictException
+        WriteConflictDetails(db.ChangeConflicts)  // write changed objects / members to console
+        Console.WriteLine()
+        Console.WriteLine("Resolve by overwriting current values")
+        db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues)
+        db.SubmitChanges()
+    End Try
+
+    Console.WriteLine()
+    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    var result = dbResult.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("Now product 1 has price={0}, UnitsInStock={1}, UnitsOnOrder={2}", _
+        result.UnitPrice, result.UnitsInStock, result.UnitsOnOrder)
+    Console.WriteLine()
+    ResetProducts() // clean up
+}
+
+
+
+[Test(Description="Resolve conflicts: Keep current values. This sample demonstrates how to automatically resolve concurrency conflicts. The //keep current values// option changes everything to the values of this client.")]
+public void LinqToSqlOptimistic03()
+            {
+            Northwind db=CreateDb();
+
+    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    db.Log = null
+
+    var Prod = db.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("You retrieve the product 1, it costs {0}", Prod.UnitPrice)
+    Console.WriteLine("There are {0} units in stock, {1} units on order", Prod.UnitsInStock, Prod.UnitsOnOrder)
+    Console.WriteLine()
+
+    Console.WriteLine("Another user changes the price to 22.22 and UnitsInStock to 22")
+    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
+    otherUser_product.UnitPrice = 22.22D
+    otherUser_product.UnitsInStock = 22
+    otherUser_db.SubmitChanges()
+
+    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
+    Prod.UnitPrice = 1.01D
+    Prod.UnitsOnOrder = 11
+    Try
+        Console.WriteLine("You submit")
+        Console.WriteLine()
+        db.SubmitChanges()
+    Catch c As ChangeConflictException
+        WriteConflictDetails(db.ChangeConflicts) // write changed objects / members to console
+        Console.WriteLine()
+        Console.WriteLine("Resolve by keeping current values")
+        db.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues)
+        db.SubmitChanges()
+    End Try
+    Console.WriteLine()
+    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    var result = dbResult.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("Now product 1 has price={0}, UnitsInStock={1}, UnitsOnOrder={2}", _
+        result.UnitPrice, result.UnitsInStock, result.UnitsOnOrder)
+    Console.WriteLine()
+    ResetProducts() // clean up
+}
+
+
+
+[Test(Description="Resolve conflicts: Keep changes. This sample demonstrates how to automatically resolve concurrency conflicts. The //keep changes// option keeps all changes from the current user and merges changes from other users if the corresponding field was not changed by the current user.")]
+
+public void LinqToSqlOptimistic04()
+            {
+            Northwind db=CreateDb();
+
+
+    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    db.Log = null
+
+    var prod = db.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("You retrieve the product 1, it costs {0}", prod.UnitPrice)
+    Console.WriteLine("There are {0} units in stock, {1} units on order", prod.UnitsInStock, prod.UnitsOnOrder)
+    Console.WriteLine()
+
+    Console.WriteLine("Another user changes the price to 22.22 and UnitsInStock to 22")
+    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
+    otherUser_product.UnitPrice = 22.22D
+    otherUser_product.UnitsInStock = 22
+    otherUser_db.SubmitChanges()
+
+    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
+    prod.UnitPrice = 1.01D
+    prod.UnitsOnOrder = 11D
+    Try
+        Console.WriteLine("You submit")
+        Console.WriteLine()
+        db.SubmitChanges()
+    Catch c As ChangeConflictException
+        WriteConflictDetails(db.ChangeConflicts) //write changed objects / members to console
+        Console.WriteLine()
+        Console.WriteLine("Resolve by keeping changes")
+        db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges)
+        db.SubmitChanges()
+    End Try
+    Console.WriteLine()
+    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    var result = dbResult.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("Now product 1 has price={0}, UnitsInStock={1}, UnitsOnOrder={2}", _
+        result.UnitPrice, result.UnitsInStock, result.UnitsOnOrder)
+    Console.WriteLine()
+    ResetProducts() // clean up
+}
+
+
+
+[Test(Description="Custom resolve rule. Demonstrates using MemberConflict.Resolve to write a custom resolve rule.")]
+
+public void LinqToSqlOptimistic05()
+            {
+            Northwind db=CreateDb();
+
+
+    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    db.Log = null
+
+    var prod = db.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("You retrieve the product 1, it costs {0}", prod.UnitPrice)
+    Console.WriteLine("There are {0} units in stock, {1} units on order", prod.UnitsInStock, prod.UnitsOnOrder)
+    Console.WriteLine()
+
+    Console.WriteLine("Another user changes the price to 22.22 and UnitsOnOrder to 2")
+    var otherUser_product = otherUser_db.Products.First(p=>p.ProductID = 1)
+    otherUser_product.UnitPrice = 22.22D
+    otherUser_product.UnitsOnOrder = 2
+    otherUser_db.SubmitChanges()
+
+    Console.WriteLine("You set the price of product 1 to 1.01 and UnitsOnOrder to 11")
+    prod.UnitPrice = 1.01D
+    prod.UnitsOnOrder = 11
+    var needsSubmit = True
+    While needsSubmit
+        Try
+            Console.WriteLine("You submit")
+            Console.WriteLine()
+            needsSubmit = False
+            db.SubmitChanges()
+        Catch c As ChangeConflictException
+            needsSubmit = True
+            WriteConflictDetails(db.ChangeConflicts) // write changed objects / members to console
+            Console.WriteLine()
+            Console.WriteLine("Resolve by higher price / order")
+            For Each conflict In db.ChangeConflicts
+                conflict.Resolve(RefreshMode.KeepChanges)
+                For Each memConflict In conflict.MemberConflicts
+                    If (memConflict.Member.Name = "UnitPrice") Then
+                        //always use the highest price
+                        var theirPrice = CDec(memConflict.DatabaseValue)
+                        var yourPrice = CDec(memConflict.CurrentValue)
+                        memConflict.Resolve(Math.Max(theirPrice, yourPrice))
+                    ElseIf (memConflict.Member.Name = "UnitsOnOrder") Then
+                        //always use higher order
+                        var theirOrder = CShort(memConflict.DatabaseValue)
+                        var yourOrder = CShort(memConflict.CurrentValue)
+                        memConflict.Resolve(Math.Max(theirOrder, yourOrder))
+                    End If
+                Next
+            Next
+        End Try
+    End While
+    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    var result = dbResult.Products.First(p=>p.ProductID = 1)
+    Console.WriteLine("Now product 1 has price={0}, UnitsOnOrder={1}", _
+        result.UnitPrice, result.UnitsOnOrder)
+    Console.WriteLine()
+    ResetProducts() //clean up
+}
+
+
+
+[Test(Description="Submit with FailOnFirstConflict. Submit(FailOnFirstConflict) throws an Optimistic Concurrency Exception when the first conflict is detected. Only one exception is handled at a time, you have to submit for each conflict.")]
+
+public void LinqToSqlOptimistic06()
+            {
+            Northwind db=CreateDb();
+
+
+    db.Log = null
+    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+
+    //you load 3 products
+    var prod() = db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
+    For i = 0 To 2
+        Console.WriteLine("You retrieve the product {0}, it costs {1}", i + 1, prod(i).UnitPrice)
+    Next
+    //other user changes these products
+    var otherUserProd() = otherUser_db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
+    For i = 0 To 2
+        var otherPrice = (i + 1) * 111.11D
+        Console.WriteLine("Other user changes the price of product {0} to {1}", i + 1, otherPrice)
+        otherUserProd(i).UnitPrice = otherPrice
+    Next
+    otherUser_db.SubmitChanges()
+    Console.WriteLine("Other user submitted changes")
+
+    //you change your loaded products
+    For i = 0 To 2
+        var yourPrice = (i + 1) * 1.01D
+        Console.WriteLine("You set the price of product {0} to {1}", i + 1, yourPrice)
+        prod(i).UnitPrice = yourPrice
+    Next
+
+    // submit
+    var needsSubmit = True
+    While needsSubmit
+        Try
+            Console.WriteLine("======= You submit with FailOnFirstConflict =======")
+            needsSubmit = False
+            db.SubmitChanges(ConflictMode.FailOnFirstConflict)
+        Catch c As ChangeConflictException
+            For Each conflict In db.ChangeConflicts
+
+                DescribeConflict(conflict) //write changes to console
+                Console.WriteLine("Resolve conflict with KeepCurrentValues")
+                conflict.Resolve(RefreshMode.KeepCurrentValues)
+            Next
+            needsSubmit = True
+        End Try
+    End While
+    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    For i = 0 To 2
+        //Creating a temporary since this will be used in a lambda
+        var tmp = i
+        var result = dbResult.Products.First(p=>p.ProductID = tmp + 1)
+        Console.WriteLine("Now the product {0} has price {1}", i + 1, result.UnitPrice)
+    Next
+    ResetProducts() //clean up
+}
+c
+
+
+
+
+[Test(Description="Submit with ContinueOnConflict. Submit(ContinueOnConflict) collects all concurrency conflicts and throws an exception when the last conflict is detected.\r\nAll conflicts are handled in one catch statement. It is still possible that another user updated the same objects before this update, so it is possible that another Optimistic Concurrency Exception is thrown which would need to be handled again.")]
+
+public void LinqToSqlOptimistic07()
+            {
+            Northwind db=CreateDb();
+
+    db.Log = null
+    var otherUser_db = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+
+    // you load 3 products
+    var prod() = db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
+    For i = 0 To 2
+        Console.WriteLine("You retrieve the product {0}, it costs {1}", i + 1, prod(i).UnitPrice)
+    Next
+    // other user changes these products
+    var otherUserProd() = otherUser_db.Products.OrderBy(p=>p.ProductID).Take(3).ToArray()
+    For i = 0 To 2
+        var otherPrice = (i + 1) * 111.11D
+        Console.WriteLine("Other user changes the price of product {0} to {1}", i + 1, otherPrice)
+        otherUserProd(i).UnitPrice = otherPrice
+    Next
+    otherUser_db.SubmitChanges()
+    Console.WriteLine("Other user submitted changes")
+
+    // you change your loaded products
+    For i = 0 To 2
+        var yourPrice = (i + 1) * 1.01D
+        Console.WriteLine("You set the price of product {0} to {1}", i + 1, yourPrice)
+        prod(i).UnitPrice = yourPrice
+    Next
+    // submit
+    var needsSubmit = True
+    While needsSubmit
+        Try
+            Console.WriteLine("======= You submit with ContinueOnConflict =======")
+            needsSubmit = False
+            db.SubmitChanges(ConflictMode.ContinueOnConflict)
+        Catch c As ChangeConflictException
+            For Each conflict In db.ChangeConflicts
+                DescribeConflict(conflict) // write changes to console
+                Console.WriteLine("Resolve conflict with KeepCurrentValues")
+                conflict.Resolve(RefreshMode.KeepCurrentValues)
+            Next
+            needsSubmit = True
+        End Try
+    End While
+    var dbResult = New NorthwindDataContext(My.Settings.NORTHWINDConnectionString1)
+    For i = 0 To 2
+        var tmp = i
+        var result = dbResult.Products.First(p=>p.ProductID = tmp + 1)
+        Console.WriteLine("Now the product {0} has price {1}", i + 1, result.UnitPrice)
+    Next
+
+    ResetProducts() //clean up
+}
+
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/OrderBy.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/OrderBy.cs
@@ -1,125 +1,125 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class OrderBy : TestBase
-    {
-        [Test(Description = "OrderBy - Simple. This sample uses orderby to sort Employees by hire date.")]
-        public void LinqToSqlOrderBy01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    orderby e.HireDate
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "OrderBy - With where. This sample uses where and orderby to sort Orders shipped to London by freight.")]
-        public void LinqToSqlOrderBy02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.ShipCity == "Marseille"
-                    orderby o.Freight
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "OrderByDescending. This sample uses orderby to sort Products by unit price from highest to lowest.")]
-        public void LinqToSqlOrderBy03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    orderby p.UnitPrice descending
-                    select p;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "ThenBy. This sample uses a compound orderby to sort Customers by city and then contact name.")]
-        public void LinqToSqlOrderBy04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    orderby c.City, c.ContactName
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "ThenByDescending. This sample uses orderby to sort Orders from EmployeeID 1 by ship-to country, and then by freight from highest to lowest.")]
-        public void LinqToSqlOrderBy05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.EmployeeID == 1
-                    orderby o.ShipCountry, o.Freight descending
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "OrderBy - Group by. This sample uses Orderby, Max and Group by to find the Products that have the highest unit price in each category, and sorts the group by category id.")]
-        public void LinqToSqlOrderBy06()
-        {
-            Northwind db = CreateDB();
-
-            var categories = from p in db.Products
-                             orderby p.CategoryID
-                             group p by p.CategoryID into Group
-                             select new
-                             {
-                                 Group,
-                                 MostExpensiveProducts =
-                                     from p2 in Group
-                                     where p2.UnitPrice == Group.Max(p3 => p3.UnitPrice)
-                                     select p2
-                             };
-
-            var list = categories.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class OrderBy : TestBase
+    {
+        [Test(Description = "OrderBy - Simple. This sample uses orderby to sort Employees by hire date.")]
+        public void LinqToSqlOrderBy01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    orderby e.HireDate
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "OrderBy - With where. This sample uses where and orderby to sort Orders shipped to London by freight.")]
+        public void LinqToSqlOrderBy02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.ShipCity == "Marseille"
+                    orderby o.Freight
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "OrderByDescending. This sample uses orderby to sort Products by unit price from highest to lowest.")]
+        public void LinqToSqlOrderBy03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    orderby p.UnitPrice descending
+                    select p;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "ThenBy. This sample uses a compound orderby to sort Customers by city and then contact name.")]
+        public void LinqToSqlOrderBy04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    orderby c.City, c.ContactName
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "ThenByDescending. This sample uses orderby to sort Orders from EmployeeID 1 by ship-to country, and then by freight from highest to lowest.")]
+        public void LinqToSqlOrderBy05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.EmployeeID == 1
+                    orderby o.ShipCountry, o.Freight descending
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "OrderBy - Group by. This sample uses Orderby, Max and Group by to find the Products that have the highest unit price in each category, and sorts the group by category id.")]
+        public void LinqToSqlOrderBy06()
+        {
+            Northwind db = CreateDB();
+
+            var categories = from p in db.Products
+                             orderby p.CategoryID
+                             group p by p.CategoryID into Group
+                             select new
+                             {
+                                 Group,
+                                 MostExpensiveProducts =
+                                     from p2 in Group
+                                     where p2.UnitPrice == Group.Max(p3 => p3.UnitPrice)
+                                     select p2
+                             };
+
+            var list = categories.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Paging.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Paging.cs
@@ -1,139 +1,139 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    class CustomerComparer : IEqualityComparer<Customer>
-    {
-        public bool Equals(Customer x, Customer y)
-        {
-            if (object.ReferenceEquals (x, y))
-                return true;
-            return x.Address == y.Address &&
-                x.City == y.City &&
-                x.CompanyName == y.CompanyName &&
-                x.ContactName == y.ContactName &&
-                x.ContactTitle == y.ContactTitle &&
-                x.Country == y.Country &&
-                x.CustomerID == y.CustomerID &&
-                x.Fax == y.Fax &&
-                x.Phone == y.Phone &&
-                x.PostalCode == y.PostalCode &&
-                x.Region == y.Region &&
-                true; // TODO: compare Orders: x.Orders.SequenceEqual(y.Orders, new OrderComparer());
-        }
-
-        public int GetHashCode(Customer obj)
-        {
- 	        throw new NotImplementedException();
-        }
-    }
-
-    [TestFixture]
-    public class Paging : TestBase
-    {
-        [Test(Description = "Paging - Index. This sample uses the Skip and Take operators to do paging by skipping the first 50 records and then returning the next 10, thereby providing the data for page 6 of the Products table.")]
-        public void LinqToSqlPaging01()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     orderby c.ContactName
-                     select c)
-                    .Skip(1)
-                    .Take(2);
-
-            var expected = new[]{
-                new Customer {
-                    Address       = "Heerstr. 22",
-                    City          = "Leipzig",
-                    CompanyName   = "Morgenstern Gesundkost",
-                    ContactName   = "Alexander Feuer",
-                    ContactTitle  = "Marketing Assistant",
-                    Country       = "Germany",
-                    CustomerID    = "MORGK",
-                    Fax           = null,
-                    Phone         = "0342-023176",
-                    PostalCode    = "04179",
-                    Region        = null
-                },
-                new Customer {
-                    Address       = "Avda. de la Constitución 2222",
-                    City          = "México D.F.",
-                    CompanyName   = "Ana Trujillo Emparedados y helados",
-                    ContactName   = "Ana Trujillo",
-                    ContactTitle  = "Owner",
-                    Country       = "Mexico",
-                    CustomerID    = "ANATR",
-                    Fax           = "(5) 555-3745",
-                    Phone         = "(5) 555-4729",
-                    PostalCode    = "05021",
-                    Region        = null
-                },
-            };
-// The ordering of space characters depends on collation so
-// lets jst check if the query worked on PostgreSQL.
-#if !POSTGRES
-            Assert.IsTrue(expected.SequenceEqual(q, new CustomerComparer()));
-#else
-            Assert.IsTrue(q.ToList().Count == 2);
-#endif
-        }
-
-        [Test(Description = "Paging - Ordered Unique Key. This sample uses a where clause and the take operator to do paging by, first filtering to get only the ProductIDs above 50 (the last ProductID from page 5), then ordering by ProductID, and finally taking the first 10 results, thereby providing the data for page 6 of the Products table. Note that this method only works when ordering by a unique key.")]
-        public void LinqToSqlPaging02()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from p in db.Products
-                     where p.ProductID > 3
-                     orderby p.ProductID
-                     select p)
-                    .Take(10);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "Paging - Index. This sample uses the Skip and Take operators to do paging by skipping the first 50 records and then returning the next 10, thereby providing the data for page 6 of the Products table.")]
-        public void LinqToSqlPaging03()
-        {
-            // This is basically LinqToSqlPaging01() without the `orderby` clause.
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select c)
-                    .Skip(1)
-                    .Take(2);
-
-            // The ordering depends on collation so
-            // lets jst check if the query worked as ~expected.
-            Assert.IsTrue(q.ToList().Count == 2);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    class CustomerComparer : IEqualityComparer<Customer>
+    {
+        public bool Equals(Customer x, Customer y)
+        {
+            if (object.ReferenceEquals (x, y))
+                return true;
+            return x.Address == y.Address &&
+                x.City == y.City &&
+                x.CompanyName == y.CompanyName &&
+                x.ContactName == y.ContactName &&
+                x.ContactTitle == y.ContactTitle &&
+                x.Country == y.Country &&
+                x.CustomerID == y.CustomerID &&
+                x.Fax == y.Fax &&
+                x.Phone == y.Phone &&
+                x.PostalCode == y.PostalCode &&
+                x.Region == y.Region &&
+                true; // TODO: compare Orders: x.Orders.SequenceEqual(y.Orders, new OrderComparer());
+        }
+
+        public int GetHashCode(Customer obj)
+        {
+ 	        throw new NotImplementedException();
+        }
+    }
+
+    [TestFixture]
+    public class Paging : TestBase
+    {
+        [Test(Description = "Paging - Index. This sample uses the Skip and Take operators to do paging by skipping the first 50 records and then returning the next 10, thereby providing the data for page 6 of the Products table.")]
+        public void LinqToSqlPaging01()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     orderby c.ContactName
+                     select c)
+                    .Skip(1)
+                    .Take(2);
+
+            var expected = new[]{
+                new Customer {
+                    Address       = "Heerstr. 22",
+                    City          = "Leipzig",
+                    CompanyName   = "Morgenstern Gesundkost",
+                    ContactName   = "Alexander Feuer",
+                    ContactTitle  = "Marketing Assistant",
+                    Country       = "Germany",
+                    CustomerID    = "MORGK",
+                    Fax           = null,
+                    Phone         = "0342-023176",
+                    PostalCode    = "04179",
+                    Region        = null
+                },
+                new Customer {
+                    Address       = "Avda. de la Constitución 2222",
+                    City          = "México D.F.",
+                    CompanyName   = "Ana Trujillo Emparedados y helados",
+                    ContactName   = "Ana Trujillo",
+                    ContactTitle  = "Owner",
+                    Country       = "Mexico",
+                    CustomerID    = "ANATR",
+                    Fax           = "(5) 555-3745",
+                    Phone         = "(5) 555-4729",
+                    PostalCode    = "05021",
+                    Region        = null
+                },
+            };
+// The ordering of space characters depends on collation so
+// lets jst check if the query worked on PostgreSQL.
+#if !POSTGRES
+            Assert.IsTrue(expected.SequenceEqual(q, new CustomerComparer()));
+#else
+            Assert.IsTrue(q.ToList().Count == 2);
+#endif
+        }
+
+        [Test(Description = "Paging - Ordered Unique Key. This sample uses a where clause and the take operator to do paging by, first filtering to get only the ProductIDs above 50 (the last ProductID from page 5), then ordering by ProductID, and finally taking the first 10 results, thereby providing the data for page 6 of the Products table. Note that this method only works when ordering by a unique key.")]
+        public void LinqToSqlPaging02()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from p in db.Products
+                     where p.ProductID > 3
+                     orderby p.ProductID
+                     select p)
+                    .Take(10);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "Paging - Index. This sample uses the Skip and Take operators to do paging by skipping the first 50 records and then returning the next 10, thereby providing the data for page 6 of the Products table.")]
+        public void LinqToSqlPaging03()
+        {
+            // This is basically LinqToSqlPaging01() without the `orderby` clause.
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select c)
+                    .Skip(1)
+                    .Take(2);
+
+            // The ordering depends on collation so
+            // lets jst check if the query worked as ~expected.
+            Assert.IsTrue(q.ToList().Count == 2);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Select_Distinct.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Select_Distinct.cs
@@ -1,160 +1,160 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class Select_Distinct : TestBase
-    {
-        [Test(Description = "select - Simple. This sample uses select to return a sequence of just the Customers' contact names.")]
-        public void LinqToSqlSelect01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    select c.ContactName;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "select - Anonymous Type 1. This sample uses select and anonymous types to return a sequence of just the Customers' contact names and phone numbers.")]
-        public void LinqToSqlSelect02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    select new { c.ContactName, c.Phone };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "select - Anonymous Type 2. This sample uses select and anonymous types to return a sequence of just the Employees' names and phone numbers, with the FirstName and LastName fields combined into a single field, 'Name', and the HomePhone field renamed to Phone in the resulting sequence.")]
-        public void LinqToSqlSelect03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "select - Anonymous Type 3. This sample uses select and anonymous types to return a sequence of all Products' IDs and a calculated value called HalfPrice which is set to the Product's UnitPrice divided by 2.")]
-        public void LinqToSqlSelect04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    select new { p.ProductID, HalfPrice = p.UnitPrice / 2 };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Linq101SamplesModified("c# does not have that syntax capability. Symple projection instead")]
-        [Test(Description = "select - Named Type. This sample uses SELECT and a known type to return a sequence of employees' names.")]
-        public void LinqToSqlSelect06()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select new { FirstName = e.FirstName, LastName = e.LastName };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "select - Filtered. This sample uses select and where to return a sequence of just the London Customers' contact names.")]
-        public void LinqToSqlSelect07()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.City == "London"
-                    select c.ContactName;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "select - Shaped. This sample uses select and anonymous types to return a shaped subset of the data about Customers.")]
-        public void LinqToSqlSelect08()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    select new
-                    {
-                        c.CustomerID,
-                        CompanyInfo = new { c.CompanyName, c.City, c.Country },
-                        ContactInfo = new { c.ContactName, c.ContactTitle }
-                    };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "select - Nested. This sample uses nested queries to return a sequence of all orders containing their OrderID, a subsequence of the items in the order where there is a discount, and the money saved if shipping is not included.")]
-        public void LinqToSqlSelect09()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    select new
-                    {
-                        o.OrderID,
-                        DiscountedProducts = (from od in o.OrderDetails
-                                              where od.Discount == 0
-                                              select od),
-                        FreeShippingDiscount = o.Freight
-                    };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "Distinct. This sample uses Distinct to select a sequence of the unique cities that have Customers.")]
-        public void LinqToSqlSelect10()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select c.City).Distinct();
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class Select_Distinct : TestBase
+    {
+        [Test(Description = "select - Simple. This sample uses select to return a sequence of just the Customers' contact names.")]
+        public void LinqToSqlSelect01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    select c.ContactName;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "select - Anonymous Type 1. This sample uses select and anonymous types to return a sequence of just the Customers' contact names and phone numbers.")]
+        public void LinqToSqlSelect02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    select new { c.ContactName, c.Phone };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "select - Anonymous Type 2. This sample uses select and anonymous types to return a sequence of just the Employees' names and phone numbers, with the FirstName and LastName fields combined into a single field, 'Name', and the HomePhone field renamed to Phone in the resulting sequence.")]
+        public void LinqToSqlSelect03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "select - Anonymous Type 3. This sample uses select and anonymous types to return a sequence of all Products' IDs and a calculated value called HalfPrice which is set to the Product's UnitPrice divided by 2.")]
+        public void LinqToSqlSelect04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    select new { p.ProductID, HalfPrice = p.UnitPrice / 2 };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Linq101SamplesModified("c# does not have that syntax capability. Symple projection instead")]
+        [Test(Description = "select - Named Type. This sample uses SELECT and a known type to return a sequence of employees' names.")]
+        public void LinqToSqlSelect06()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select new { FirstName = e.FirstName, LastName = e.LastName };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "select - Filtered. This sample uses select and where to return a sequence of just the London Customers' contact names.")]
+        public void LinqToSqlSelect07()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.City == "London"
+                    select c.ContactName;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "select - Shaped. This sample uses select and anonymous types to return a shaped subset of the data about Customers.")]
+        public void LinqToSqlSelect08()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    select new
+                    {
+                        c.CustomerID,
+                        CompanyInfo = new { c.CompanyName, c.City, c.Country },
+                        ContactInfo = new { c.ContactName, c.ContactTitle }
+                    };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "select - Nested. This sample uses nested queries to return a sequence of all orders containing their OrderID, a subsequence of the items in the order where there is a discount, and the money saved if shipping is not included.")]
+        public void LinqToSqlSelect09()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    select new
+                    {
+                        o.OrderID,
+                        DiscountedProducts = (from od in o.OrderDetails
+                                              where od.Discount == 0
+                                              select od),
+                        FreeShippingDiscount = o.Freight
+                    };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "Distinct. This sample uses Distinct to select a sequence of the unique cities that have Customers.")]
+        public void LinqToSqlSelect10()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select c.City).Distinct();
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/String_Date_functions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/String_Date_functions.cs
@@ -1,325 +1,325 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737930.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class String_Date_functions : TestBase
-    {
-        [Test(Description = "String Concatenation. This sample uses the & operator to concatenate string fields and string literals in forming the Customers' calculated Location value")]
-        public void LinqToSqlString01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    select new { c.CustomerID, Location = c.City + ", " + c.Country };
-
-            //bool foundBerlin = false;
-            foreach (var v in q)
-            {
-                if (v.Location == "Berlin, Germany")
-                {
-                    //foundBerlin = true;
-                    return;
-                }
-            }
-            Assert.Fail("Expected to find location 'Berlin, Germany'");
-        }
-
-        [Test(Description = "String.Length. This sample uses the Length property to find all Products whose name is shorter than 10 characters.")]
-        public void LinqToSqlString02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    where p.ProductName.Length < 10
-                    select p;
-
-            List<Product> prods = q.ToList();
-            Assert.IsTrue(prods.Count > 0, "Expected some products");
-        }
-
-        [Test(Description = "String.Contains(substring).This sample uses the Contains method to find all Customers whose contact name contains 'Anders'.")]
-        public void LinqToSqlString03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.ContactName.Contains("Anders")
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.IndexOf(substring). This sample uses the IndexOf method to find the first instance of a space in each Customer's contact name.")]
-        public void LinqToSqlString04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    select new { c.ContactName, SpacePos = c.ContactName.IndexOf(" ") };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.StartsWith(prefix). This sample uses the StartsWith method to find Customers whose contact name starts with 'Maria'.")]
-        public void LinqToSqlString05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.ContactName.StartsWith("Maria")
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.EndsWith(suffix). This sample uses the StartsWith method to find Customers whose contact name ends with 'Anders'.")]
-        public void LinqToSqlString06()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.ContactName.EndsWith("Anders")
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.Substring(start). This sample uses the Substring method to return Product names starting from the fourth letter.")]
-        public void LinqToSqlString07()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    select p.ProductName.Substring(3);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.Substring(start, length). This sample uses the Substring method to find Employees whose home phone numbers have '555' as the seventh through ninth digits.")]
-        public void LinqToSqlString08()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.HomePhone.Substring(5, 3) == "555"
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.ToUpper(). This sample uses the ToUpper method to return Employee names where the last name has been converted to uppercase.")]
-        public void LinqToSqlString09()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select new { LastName = e.LastName.ToUpper(), e.FirstName };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-        [Test(Description = "String.ToLower(). This sample uses the ToLower method to return Category names that have been converted to lowercase.")]
-        public void LinqToSqlString10()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Categories
-                    select c.CategoryName.ToLower();
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.Trim(). This sample uses the Trim method to return the first five digits of Employee home phone numbers, with leading and trailing spaces removed.")]
-        public void LinqToSqlString11()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where !("  "+(e.LastName)).Trim().Contains(" ")
-                    select e.LastName;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.Insert(pos, str). This sample uses the Insert method to return a sequence of employee phone numbers that have a ) in the fifth position, inserting a : after the ).")]
-        public void LinqToSqlString12()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.HomePhone.Substring(4, 1) == ")"
-                    select e.HomePhone.Insert(5, ":");
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.Remove(start). This sample uses the Insert method to return a sequence of employee phone numbers that have a ) in the fifth position, removing all characters starting from the tenth character.")]
-        public void LinqToSqlString13()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.HomePhone.Substring(4, 1) == ")"
-                    select e.HomePhone.Remove(9);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.Remove(start, length). This sample uses the Insert method to return a sequence of employee phone numbers that have a ) in the fifth position, removing the first six characters.")]
-        public void LinqToSqlString14()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.HomePhone.Substring(4, 1) == ")"
-                    select e.HomePhone.Remove(0, 6);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "String.Replace(find, replace). This sample uses the Replace method to return a sequence of Supplier information where the Country field has had UK replaced with United Kingdom and USA replaced with United States of America.")]
-        public void LinqToSqlString15()
-        {
-            Northwind db = CreateDB();
-
-            var q = from s in db.Suppliers
-                    select new { s.CompanyName, Country = s.Country.Replace("UK", "United Kingdom").Replace("USA", "United States of America") };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test(Description = "DateTime.Year. This sample uses the DateTime's Year property to find Orders placed in 1997.")]
-        public void LinqToSqlString16()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.OrderDate.Value.Year == 1996
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test(Description = "DateTime.Month. This sample uses the DateTime's Month property to find Orders placed in December.")]
-        public void LinqToSqlString17()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.OrderDate.Value.Month == 10
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test(Description = "DateTime.Day. This sample uses the DateTime's Day property to find Orders placed on the 31st day of the month.")]
-        public void LinqToSqlString18()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.OrderDate.Value.Day == 16
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test(Description = "DateTime.Seconds. This sample uses the DateTime's Day property to find Orders placed on the 31st day of the month.")]
-        public void LinqToSqlString19()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from o in db.Orders
-                    where o.OrderDate.Value.Second == 16
-                    select o).ToList();
-
- 
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737930.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class String_Date_functions : TestBase
+    {
+        [Test(Description = "String Concatenation. This sample uses the & operator to concatenate string fields and string literals in forming the Customers' calculated Location value")]
+        public void LinqToSqlString01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    select new { c.CustomerID, Location = c.City + ", " + c.Country };
+
+            //bool foundBerlin = false;
+            foreach (var v in q)
+            {
+                if (v.Location == "Berlin, Germany")
+                {
+                    //foundBerlin = true;
+                    return;
+                }
+            }
+            Assert.Fail("Expected to find location 'Berlin, Germany'");
+        }
+
+        [Test(Description = "String.Length. This sample uses the Length property to find all Products whose name is shorter than 10 characters.")]
+        public void LinqToSqlString02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    where p.ProductName.Length < 10
+                    select p;
+
+            List<Product> prods = q.ToList();
+            Assert.IsTrue(prods.Count > 0, "Expected some products");
+        }
+
+        [Test(Description = "String.Contains(substring).This sample uses the Contains method to find all Customers whose contact name contains 'Anders'.")]
+        public void LinqToSqlString03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.ContactName.Contains("Anders")
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.IndexOf(substring). This sample uses the IndexOf method to find the first instance of a space in each Customer's contact name.")]
+        public void LinqToSqlString04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    select new { c.ContactName, SpacePos = c.ContactName.IndexOf(" ") };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.StartsWith(prefix). This sample uses the StartsWith method to find Customers whose contact name starts with 'Maria'.")]
+        public void LinqToSqlString05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.ContactName.StartsWith("Maria")
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.EndsWith(suffix). This sample uses the StartsWith method to find Customers whose contact name ends with 'Anders'.")]
+        public void LinqToSqlString06()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.ContactName.EndsWith("Anders")
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.Substring(start). This sample uses the Substring method to return Product names starting from the fourth letter.")]
+        public void LinqToSqlString07()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    select p.ProductName.Substring(3);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.Substring(start, length). This sample uses the Substring method to find Employees whose home phone numbers have '555' as the seventh through ninth digits.")]
+        public void LinqToSqlString08()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.HomePhone.Substring(5, 3) == "555"
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.ToUpper(). This sample uses the ToUpper method to return Employee names where the last name has been converted to uppercase.")]
+        public void LinqToSqlString09()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select new { LastName = e.LastName.ToUpper(), e.FirstName };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+        [Test(Description = "String.ToLower(). This sample uses the ToLower method to return Category names that have been converted to lowercase.")]
+        public void LinqToSqlString10()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Categories
+                    select c.CategoryName.ToLower();
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.Trim(). This sample uses the Trim method to return the first five digits of Employee home phone numbers, with leading and trailing spaces removed.")]
+        public void LinqToSqlString11()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where !("  "+(e.LastName)).Trim().Contains(" ")
+                    select e.LastName;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.Insert(pos, str). This sample uses the Insert method to return a sequence of employee phone numbers that have a ) in the fifth position, inserting a : after the ).")]
+        public void LinqToSqlString12()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.HomePhone.Substring(4, 1) == ")"
+                    select e.HomePhone.Insert(5, ":");
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.Remove(start). This sample uses the Insert method to return a sequence of employee phone numbers that have a ) in the fifth position, removing all characters starting from the tenth character.")]
+        public void LinqToSqlString13()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.HomePhone.Substring(4, 1) == ")"
+                    select e.HomePhone.Remove(9);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.Remove(start, length). This sample uses the Insert method to return a sequence of employee phone numbers that have a ) in the fifth position, removing the first six characters.")]
+        public void LinqToSqlString14()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.HomePhone.Substring(4, 1) == ")"
+                    select e.HomePhone.Remove(0, 6);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "String.Replace(find, replace). This sample uses the Replace method to return a sequence of Supplier information where the Country field has had UK replaced with United Kingdom and USA replaced with United States of America.")]
+        public void LinqToSqlString15()
+        {
+            Northwind db = CreateDB();
+
+            var q = from s in db.Suppliers
+                    select new { s.CompanyName, Country = s.Country.Replace("UK", "United Kingdom").Replace("USA", "United States of America") };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test(Description = "DateTime.Year. This sample uses the DateTime's Year property to find Orders placed in 1997.")]
+        public void LinqToSqlString16()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.OrderDate.Value.Year == 1996
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test(Description = "DateTime.Month. This sample uses the DateTime's Month property to find Orders placed in December.")]
+        public void LinqToSqlString17()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.OrderDate.Value.Month == 10
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test(Description = "DateTime.Day. This sample uses the DateTime's Day property to find Orders placed on the 31st day of the month.")]
+        public void LinqToSqlString18()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.OrderDate.Value.Day == 16
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test(Description = "DateTime.Seconds. This sample uses the DateTime's Day property to find Orders placed on the 31st day of the month.")]
+        public void LinqToSqlString19()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from o in db.Orders
+                    where o.OrderDate.Value.Second == 16
+                    select o).ToList();
+
+ 
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Top_Bottom.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Top_Bottom.cs
@@ -1,80 +1,80 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    /// <summary>
-    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737940.aspx
-    /// manually translated from VB into C#.
-    /// </summary>
-    [TestFixture]
-    public class Top_Bottom : TestBase
-    {
-
-        [Test(Description="This sample uses Take to select the first 5 Employees hired.")]
-        public void LinqToSqlTop01()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from e in db.Employees 
-                orderby e.HireDate select e). Take(5);
-
-            List<Employee> list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        // The .Skip() method won't work on Ingres as it does not support the OFFSET clause
-        // but it's on the roadmap...
-#if !INGRES
-        [Test(Description = "This sample uses Skip to select all but the 10 most expensive Products.")]
-        public void LinqToSqlTop02()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from p in db.Products
-                     orderby p.UnitPrice descending
-                     select p).Skip(4);
-
-            List<Product> list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "This bug was submitted by Andrus")]
-        public void LinqToSqlTop03_Ex_Andrus()
-        {
-            Northwind db = CreateDB();
-
-            var q = db.Customers.Skip(3).Take(5);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-#endif
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    /// <summary>
+    /// Source:  http://msdn2.microsoft.com/en-us/vbasic/bb737940.aspx
+    /// manually translated from VB into C#.
+    /// </summary>
+    [TestFixture]
+    public class Top_Bottom : TestBase
+    {
+
+        [Test(Description="This sample uses Take to select the first 5 Employees hired.")]
+        public void LinqToSqlTop01()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from e in db.Employees 
+                orderby e.HireDate select e). Take(5);
+
+            List<Employee> list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        // The .Skip() method won't work on Ingres as it does not support the OFFSET clause
+        // but it's on the roadmap...
+#if !INGRES
+        [Test(Description = "This sample uses Skip to select all but the 10 most expensive Products.")]
+        public void LinqToSqlTop02()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from p in db.Products
+                     orderby p.UnitPrice descending
+                     select p).Skip(4);
+
+            List<Product> list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "This bug was submitted by Andrus")]
+        public void LinqToSqlTop03_Ex_Andrus()
+        {
+            Northwind db = CreateDB();
+
+            var q = db.Customers.Skip(3).Take(5);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+#endif
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/UnionAll_Union_Intersect.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/UnionAll_Union_Intersect.cs
@@ -1,105 +1,105 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class UnionAll_Union_Intersect : TestBase
-    {
-        [Test(Description = "Concat - Simple. This sample uses Concat to return a sequence of all Customer and Employee phone/fax numbers.")]
-        public void LinqToSqlUnion01()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers select c.Phone).Concat(
-                     from c in db.Customers select c.Fax).Concat(
-                     from e in db.Employees select e.HomePhone);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "Concat - Compound. This sample uses Concat to return a sequence of all Customer and Employee name and phone number mappings.")]
-        public void LinqToSqlUnion02()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select new { Name = c.CompanyName, Phone = c.Phone })
-                     .Concat(from e in db.Employees
-                             select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone });
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "Union. This sample uses Union to return a sequence of all countries that either Customers or Employees are in.")]
-        public void LinqToSqlUnion03()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select c.Country).Union(from e in db.Employees
-                                             select e.Country);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "Intersect. This sample uses Intersect to return a sequence of all countries that both Customers and Employees live in.")]
-        public void LinqToSqlUnion04()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select c.Country).Intersect(from e in db.Employees
-                                                 select e.Country);
-
-            var list = q.ToList();
-            if (list.Count == 0)
-                Assert.Ignore("Please check test validity");
-            //Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "Except. This sample uses Except to return a sequence of all countries that Customers live in but no Employees live in.")]
-        public void LinqToSqlUnion05()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select c.Country).Except(from e in db.Employees select e.Country);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class UnionAll_Union_Intersect : TestBase
+    {
+        [Test(Description = "Concat - Simple. This sample uses Concat to return a sequence of all Customer and Employee phone/fax numbers.")]
+        public void LinqToSqlUnion01()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers select c.Phone).Concat(
+                     from c in db.Customers select c.Fax).Concat(
+                     from e in db.Employees select e.HomePhone);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "Concat - Compound. This sample uses Concat to return a sequence of all Customer and Employee name and phone number mappings.")]
+        public void LinqToSqlUnion02()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select new { Name = c.CompanyName, Phone = c.Phone })
+                     .Concat(from e in db.Employees
+                             select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone });
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "Union. This sample uses Union to return a sequence of all countries that either Customers or Employees are in.")]
+        public void LinqToSqlUnion03()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select c.Country).Union(from e in db.Employees
+                                             select e.Country);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "Intersect. This sample uses Intersect to return a sequence of all countries that both Customers and Employees live in.")]
+        public void LinqToSqlUnion04()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select c.Country).Intersect(from e in db.Employees
+                                                 select e.Country);
+
+            var list = q.ToList();
+            if (list.Count == 0)
+                Assert.Ignore("Please check test validity");
+            //Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "Except. This sample uses Except to return a sequence of all countries that Customers live in but no Employees live in.")]
+        public void LinqToSqlUnion05()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select c.Country).Except(from e in db.Employees select e.Country);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Views.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Views.cs
@@ -1,87 +1,87 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class Views : TestBase
-    {
-        [Linq101SamplesModified("Original db didn't has Invoices table so. It has been used Employees instead")]
-        [Test(Description = "Query - Anonymous Type. This sample uses SELECT and WHERE to return a sequence of invoices where shipping city is London.")]
-        public void LinqToSqlView01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from i in db.Employees
-                    where i.City == "Seattle"
-                    select new { i.Country, i.Address, i.City, i.BirthDate };
-
-            var list = q.ToList();
-            if (list.Count == 0)
-                Assert.Ignore("Please check test"); // the test fails on SQLite
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Linq101SamplesModified("Original db didn't has Invoices table so. It has been used Employees instead")]
-        [Test(Description = "Query - Negative. Entities must have a mapped ID, but SqlMetal does not generate an ID for view by default.")]
-        public void LinqToSqlView02()
-        {
-            Northwind db = CreateDB();
-
-            try
-            {
-                var q = from i in db.Employees
-                        where i.City == "London"
-                        select i;
-
-                var list = q.ToList();
-                Assert.IsTrue(list.Count > 0);
-
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine("{0} : {1}", ex.GetType().ToString(), ex.Message);
-            }
-        }
-
-        [Linq101SamplesModified("Original db didn't has Quarterly_Orders table so. It has been used Employees instead")]
-        [Test(Description = "Query - Identity mapping. This sample uses SELECT to query QuarterlyOrders.")]
-        public void LinqToSqlView03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from qo in db.Employees
-                    select qo;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class Views : TestBase
+    {
+        [Linq101SamplesModified("Original db didn't has Invoices table so. It has been used Employees instead")]
+        [Test(Description = "Query - Anonymous Type. This sample uses SELECT and WHERE to return a sequence of invoices where shipping city is London.")]
+        public void LinqToSqlView01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from i in db.Employees
+                    where i.City == "Seattle"
+                    select new { i.Country, i.Address, i.City, i.BirthDate };
+
+            var list = q.ToList();
+            if (list.Count == 0)
+                Assert.Ignore("Please check test"); // the test fails on SQLite
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Linq101SamplesModified("Original db didn't has Invoices table so. It has been used Employees instead")]
+        [Test(Description = "Query - Negative. Entities must have a mapped ID, but SqlMetal does not generate an ID for view by default.")]
+        public void LinqToSqlView02()
+        {
+            Northwind db = CreateDB();
+
+            try
+            {
+                var q = from i in db.Employees
+                        where i.City == "London"
+                        select i;
+
+                var list = q.ToList();
+                Assert.IsTrue(list.Count > 0);
+
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("{0} : {1}", ex.GetType().ToString(), ex.Message);
+            }
+        }
+
+        [Linq101SamplesModified("Original db didn't has Quarterly_Orders table so. It has been used Employees instead")]
+        [Test(Description = "Query - Identity mapping. This sample uses SELECT to query QuarterlyOrders.")]
+        public void LinqToSqlView03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from qo in db.Employees
+                    select qo;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Where.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Linq_101_Samples/Where.cs
@@ -1,135 +1,135 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns Linq_101_Samples
-#if MYSQL
-    namespace Test_NUnit_MySql.Linq_101_Samples
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP.Linq_101_Samples
-#elif ORACLE
-    namespace Test_NUnit_Oracle.Linq_101_Samples
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql.Linq_101_Samples
-#elif SQLITE
-    namespace Test_NUnit_Sqlite.Linq_101_Samples
-#elif INGRES
-    namespace Test_NUnit_Ingres.Linq_101_Samples
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
-#elif MSSQL
-    namespace Test_NUnit_MsSql.Linq_101_Samples
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird.Linq_101_Samples
-#endif
-{
-    [TestFixture]
-    public class Where : TestBase
-    {
-        [Test(Description = "where - 1. This sample uses where to filter for Customers in London.")]
-        public void LinqToSqlWhere01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.City == "London"
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test(Description = "where - 2. This sample uses where to filter for Employees hired during or after 1994.")]
-        public void LinqToSqlWhere02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.HireDate >= new DateTime(1994,1,1)
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Linq101SamplesModified("Strange casting, It seems like original northwind discontinued were boolean")]
-        [Test(Description = "where - 3. This sample uses where to filter for Products that have stock below their reorder level and are not discontinued.")]
-        public void LinqToSqlWhere03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    where p.UnitsInStock <= p.ReorderLevel || !Convert.ToBoolean(p.Discontinued)==true
-                    select p;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Linq101SamplesModified("Strange casting, It seems like original northwind discontinued were boolean")]
-        [Test(Description = "where - 4. This sample uses WHERE to filter out Products that are either UnitPrice is greater than 10 or is discontinued.")]
-        public void LinqToSqlWhere04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    where p.UnitPrice > 10.0m || Convert.ToBoolean(p.Discontinued)==true
-                    select p;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description="Where - 5. This sample calls WHERE twice to filter out Products that UnitPrice is greater than 10 and is discontinued.")]
-        public void LinqToSqlWhere05()
-        {
-            Northwind db = CreateDB();
-
-            var q = db.Products.Where(p => p.UnitPrice > 5.0m)
-                               .Where(p => !Convert.ToBoolean(p.Discontinued)==true);
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Linq101SamplesModified("Changed shipper table by Employee since some of our databases haven't got such table")]
-        [Test(Description = "First - Simple. This sample uses First to select the first Shipper in the table.")]
-        public void LinqToSqlWhere06()
-        {
-            Northwind db = CreateDB();
-            Employee employee = db.Employees.First();
-        }
-
-        [Test(Description = "First - Element. This sample uses Take to select the first Customer with CustomerID 'BONAP'.")]
-        public void LinqToSqlWhere07()
-        {
-            Northwind db = CreateDB();
-
-            var cust = (from c in db.Customers
-                        where c.CustomerID == "BONAP"
-                        select c).Take(1);
-
-            var list = cust.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test(Description = "First - Condition. This sample uses First to select an Order with freight greater than 10.00.")]
-        public void LinqToSqlWhere08()
-        {
-            Northwind db = CreateDB();
-            var ord = (from o in db.Orders
-                       where o.Freight > 10m
-                       select o).First();
-
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns Linq_101_Samples
+#if MYSQL
+    namespace Test_NUnit_MySql.Linq_101_Samples
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP.Linq_101_Samples
+#elif ORACLE
+    namespace Test_NUnit_Oracle.Linq_101_Samples
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql.Linq_101_Samples
+#elif SQLITE
+    namespace Test_NUnit_Sqlite.Linq_101_Samples
+#elif INGRES
+    namespace Test_NUnit_Ingres.Linq_101_Samples
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict.Linq_101_Samples
+#elif MSSQL
+    namespace Test_NUnit_MsSql.Linq_101_Samples
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird.Linq_101_Samples
+#endif
+{
+    [TestFixture]
+    public class Where : TestBase
+    {
+        [Test(Description = "where - 1. This sample uses where to filter for Customers in London.")]
+        public void LinqToSqlWhere01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.City == "London"
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test(Description = "where - 2. This sample uses where to filter for Employees hired during or after 1994.")]
+        public void LinqToSqlWhere02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.HireDate >= new DateTime(1994,1,1)
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Linq101SamplesModified("Strange casting, It seems like original northwind discontinued were boolean")]
+        [Test(Description = "where - 3. This sample uses where to filter for Products that have stock below their reorder level and are not discontinued.")]
+        public void LinqToSqlWhere03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    where p.UnitsInStock <= p.ReorderLevel || !Convert.ToBoolean(p.Discontinued)==true
+                    select p;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Linq101SamplesModified("Strange casting, It seems like original northwind discontinued were boolean")]
+        [Test(Description = "where - 4. This sample uses WHERE to filter out Products that are either UnitPrice is greater than 10 or is discontinued.")]
+        public void LinqToSqlWhere04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    where p.UnitPrice > 10.0m || Convert.ToBoolean(p.Discontinued)==true
+                    select p;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description="Where - 5. This sample calls WHERE twice to filter out Products that UnitPrice is greater than 10 and is discontinued.")]
+        public void LinqToSqlWhere05()
+        {
+            Northwind db = CreateDB();
+
+            var q = db.Products.Where(p => p.UnitPrice > 5.0m)
+                               .Where(p => !Convert.ToBoolean(p.Discontinued)==true);
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Linq101SamplesModified("Changed shipper table by Employee since some of our databases haven't got such table")]
+        [Test(Description = "First - Simple. This sample uses First to select the first Shipper in the table.")]
+        public void LinqToSqlWhere06()
+        {
+            Northwind db = CreateDB();
+            Employee employee = db.Employees.First();
+        }
+
+        [Test(Description = "First - Element. This sample uses Take to select the first Customer with CustomerID 'BONAP'.")]
+        public void LinqToSqlWhere07()
+        {
+            Northwind db = CreateDB();
+
+            var cust = (from c in db.Customers
+                        where c.CustomerID == "BONAP"
+                        select c).Take(1);
+
+            var list = cust.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test(Description = "First - Condition. This sample uses First to select an Order with freight greater than 10.00.")]
+        public void LinqToSqlWhere08()
+        {
+            Northwind db = CreateDB();
+            var ord = (from o in db.Orders
+                       where o.Freight > 10m
+                       select o).First();
+
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/MetalTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/MetalTest.cs
@@ -1,116 +1,116 @@
-﻿using System;
-using System.Diagnostics;
-using System.IO;
-using NUnit.Framework;
-
-namespace Test_NUnit_MySql
-{
-    [TestFixture]
-    public class MetalTest
-    {
-        static string GetSqlMetalPath()
-        {
-            string path = "../../../SqlMetal/bin/SqlMetal.exe";
-            if (!File.Exists(path))
-                throw new NUnit.Framework.IgnoreException("SqlMetal not found");
-            return path;
-        }
-
-        static string GetCompilerPath()
-        {
-            string windowsDir = Environment.GetEnvironmentVariable("SystemRoot");
-            string frameworkDir = Path.Combine(windowsDir, "Microsoft.Net/Framework/v3.5");
-            if (!Directory.Exists(frameworkDir))
-                throw new NUnit.Framework.IgnoreException("Framework dir not found");
-
-            string cscExe = Path.Combine(frameworkDir, "csc.exe");
-            if (!File.Exists(cscExe))
-                throw new NUnit.Framework.IgnoreException("csc.exe not found in framework dir");
-            return cscExe;
-        }
-
-        [Test]
-        public void GenerateFromDbml()
-        {
-            //1. gather prerequisites (compiler, sqlmetal etc)
-            string cscExe = GetCompilerPath();
-            string sqlMetal = GetSqlMetalPath();
-
-            //2. run SqlMetal to generate 'bin/Northwind_temp.cs'
-            string currDir = Directory.GetCurrentDirectory();
-            string mysqlExampleDir = "../../../Example/DbLinq.Mysql.Example/nwind";
-            bool ok = Directory.Exists(mysqlExampleDir);
-            string args1 = string.Format(" -provider=MySql -namespace:nwind -code:Northwind_temp.cs -sprocs {0}/Northwind_from_mysql.dbml"
-                , mysqlExampleDir);
-
-            ProcessRunner p1 = new ProcessRunner();
-            int sqlMetalExitCode = p1.Run(sqlMetal, args1, 5000);
-            Assert.IsTrue(sqlMetalExitCode == 0, "Got SqlMetal.exe error exit code " + sqlMetalExitCode);
-
-            //3. make sure generated code compiles with 'bin/Northwind_temp.cs'
-            Directory.SetCurrentDirectory("..");
-            string dependencies = @"/r:bin\nunit.framework.dll /r:bin\DbLinq.dll /r:bin\DbLinq.mysql.dll /r:bin\Mysql.data.dll";
-            string cscArgs = @"/nologo /target:library /d:MYSQL /out:bin/SqlMetal_test.dll  bin/Northwind_temp.cs  ReadTest.cs  WriteTest.cs  TestBase.cs  "
-                + dependencies;
-
-            ProcessRunner p2 = new ProcessRunner();
-            int cscExitCode = p2.Run(cscExe, cscArgs, 5000);
-            Console.Out.WriteLine("csc exitCode:" + cscExitCode + ",  output: " + p2._stdout);
-            Assert.IsTrue(cscExitCode == 0, "csc.exe failed with exit code " + cscExitCode);
-
-            Directory.SetCurrentDirectory(currDir);
-        }
-
-        [Test]
-        public void GetHashCode_should_not_throw()
-        {
-            nwind.Customer customer = new nwind.Customer();
-
-            //bug: GetHashCode sometimes throws NullPointerException because of null _customerID
-            int hashCode = customer.GetHashCode();
-        }
-
-        #region helper class ProcessRunner - launches jobs, reads output
-        class ProcessRunner
-        {
-            delegate void StreamHandler(StreamReader s, bool isStdout);
-
-            public string _stdout;
-            public string _stderr;
-
-            public int Run(string exe, string args, int timeout)
-            {
-                ProcessStartInfo psi = new ProcessStartInfo(exe, args);
-                psi.RedirectStandardOutput = true;
-                psi.RedirectStandardError = true;
-                psi.UseShellExecute = false;
-                psi.CreateNoWindow = true;
-                Process p = Process.Start(psi);
-                new StreamHandler(readOutput).BeginInvoke(p.StandardOutput, true, null, null);
-                new StreamHandler(readOutput).BeginInvoke(p.StandardError, false, null, null);
-                bool exitOk = p.WaitForExit(timeout);
-                Assert.IsTrue(exitOk, "Expected app to exit cleanly");
-                return p.ExitCode;
-            }
-
-            void readOutput(StreamReader reader, bool isStdout)
-            {
-                try
-                {
-                    string result = reader.ReadToEnd();
-
-                    if (isStdout)
-                        _stdout = result;
-                    else
-                        _stderr = result;
-                }
-                catch (Exception ex)
-                {
-                    Trace.WriteLine("read failed: " + ex);
-                }
-            }
-        }
-        #endregion
-
-    }
-}
+﻿using System;
+using System.Diagnostics;
+using System.IO;
+using NUnit.Framework;
+
+namespace Test_NUnit_MySql
+{
+    [TestFixture]
+    public class MetalTest
+    {
+        static string GetSqlMetalPath()
+        {
+            string path = "../../../SqlMetal/bin/SqlMetal.exe";
+            if (!File.Exists(path))
+                throw new NUnit.Framework.IgnoreException("SqlMetal not found");
+            return path;
+        }
+
+        static string GetCompilerPath()
+        {
+            string windowsDir = Environment.GetEnvironmentVariable("SystemRoot");
+            string frameworkDir = Path.Combine(windowsDir, "Microsoft.Net/Framework/v3.5");
+            if (!Directory.Exists(frameworkDir))
+                throw new NUnit.Framework.IgnoreException("Framework dir not found");
+
+            string cscExe = Path.Combine(frameworkDir, "csc.exe");
+            if (!File.Exists(cscExe))
+                throw new NUnit.Framework.IgnoreException("csc.exe not found in framework dir");
+            return cscExe;
+        }
+
+        [Test]
+        public void GenerateFromDbml()
+        {
+            //1. gather prerequisites (compiler, sqlmetal etc)
+            string cscExe = GetCompilerPath();
+            string sqlMetal = GetSqlMetalPath();
+
+            //2. run SqlMetal to generate 'bin/Northwind_temp.cs'
+            string currDir = Directory.GetCurrentDirectory();
+            string mysqlExampleDir = "../../../Example/DbLinq.Mysql.Example/nwind";
+            bool ok = Directory.Exists(mysqlExampleDir);
+            string args1 = string.Format(" -provider=MySql -namespace:nwind -code:Northwind_temp.cs -sprocs {0}/Northwind_from_mysql.dbml"
+                , mysqlExampleDir);
+
+            ProcessRunner p1 = new ProcessRunner();
+            int sqlMetalExitCode = p1.Run(sqlMetal, args1, 5000);
+            Assert.IsTrue(sqlMetalExitCode == 0, "Got SqlMetal.exe error exit code " + sqlMetalExitCode);
+
+            //3. make sure generated code compiles with 'bin/Northwind_temp.cs'
+            Directory.SetCurrentDirectory("..");
+            string dependencies = @"/r:bin\nunit.framework.dll /r:bin\DbLinq.dll /r:bin\DbLinq.mysql.dll /r:bin\Mysql.data.dll";
+            string cscArgs = @"/nologo /target:library /d:MYSQL /out:bin/SqlMetal_test.dll  bin/Northwind_temp.cs  ReadTest.cs  WriteTest.cs  TestBase.cs  "
+                + dependencies;
+
+            ProcessRunner p2 = new ProcessRunner();
+            int cscExitCode = p2.Run(cscExe, cscArgs, 5000);
+            Console.Out.WriteLine("csc exitCode:" + cscExitCode + ",  output: " + p2._stdout);
+            Assert.IsTrue(cscExitCode == 0, "csc.exe failed with exit code " + cscExitCode);
+
+            Directory.SetCurrentDirectory(currDir);
+        }
+
+        [Test]
+        public void GetHashCode_should_not_throw()
+        {
+            nwind.Customer customer = new nwind.Customer();
+
+            //bug: GetHashCode sometimes throws NullPointerException because of null _customerID
+            int hashCode = customer.GetHashCode();
+        }
+
+        #region helper class ProcessRunner - launches jobs, reads output
+        class ProcessRunner
+        {
+            delegate void StreamHandler(StreamReader s, bool isStdout);
+
+            public string _stdout;
+            public string _stderr;
+
+            public int Run(string exe, string args, int timeout)
+            {
+                ProcessStartInfo psi = new ProcessStartInfo(exe, args);
+                psi.RedirectStandardOutput = true;
+                psi.RedirectStandardError = true;
+                psi.UseShellExecute = false;
+                psi.CreateNoWindow = true;
+                Process p = Process.Start(psi);
+                new StreamHandler(readOutput).BeginInvoke(p.StandardOutput, true, null, null);
+                new StreamHandler(readOutput).BeginInvoke(p.StandardError, false, null, null);
+                bool exitOk = p.WaitForExit(timeout);
+                Assert.IsTrue(exitOk, "Expected app to exit cleanly");
+                return p.ExitCode;
+            }
+
+            void readOutput(StreamReader reader, bool isStdout)
+            {
+                try
+                {
+                    string result = reader.ReadToEnd();
+
+                    if (isStdout)
+                        _stdout = result;
+                    else
+                        _stderr = result;
+                }
+                catch (Exception ex)
+                {
+                    Trace.WriteLine("read failed: " + ex);
+                }
+            }
+        }
+        #endregion
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2Ing.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2Ing.cs
@@ -1,51 +1,51 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-#region HEADER
-using System;
-using System.Threading;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using Test_NUnit_Ingres;
-#endregion
-
-namespace Test_NUnit_Ingres
-{
-#region HEADER
-    /// <summary>
-    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
-    /// and debug into the offending method.
-    /// </summary>
-#endregion
-    class Program2
-    {
-        static void Main()
-        {
-            // The current test status can be found at
-            // http://linq.to/db/Tests
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+#region HEADER
+using System;
+using System.Threading;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using Test_NUnit_Ingres;
+#endregion
+
+namespace Test_NUnit_Ingres
+{
+#region HEADER
+    /// <summary>
+    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
+    /// and debug into the offending method.
+    /// </summary>
+#endregion
+    class Program2
+    {
+        static void Main()
+        {
+            // The current test status can be found at
+            // http://linq.to/db/Tests
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2Mysql.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2Mysql.cs
@@ -1,45 +1,45 @@
-#region HEADER
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Data.Linq;
-using Test_NUnit_MySql;
-
-#endregion
-
-namespace Test_NUnit
-{
-#region HEADER
-    /// <summary>
-    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
-    /// and debug into the offending method.
-    /// </summary>
-#endregion
-    class Program2
-    {
-        static void Main()
-        {
-            //new ReadTest_GroupBy().G01_SimpleGroup_Count();
-            //new ReadTest_GroupBy().G05_Group_Into();
-            //new ReadTest().D04_SelectProducts_OrderByName();
-            //new Join().Join_Laurent();
-            //new ReadTest().C2_SelectPenId();
-            //new ReadTest_Complex().D2_ArrayContains();
-            //new ReadTest_Complex().O3_OperatorUnion();
-            //new StoredProcTest().SPB_GetOrderCount_Having();
-            //new ReadTest().E2_ConnectionClosedTest();
-            //new ReadTest_AllTypes().AT1_SelectRow();
-            //new ReadTest_Operands().H1_SelectConcat();
-            //rc.F11_ConcatString();
-            new WriteTest().G5_SetFieldToNull();
-            //new WriteTest_BulkInsert().BI01_InsertProducts();
-            //new NullTest().NullableT_Value();
-            //new Count_Sum_Min_Max_Avg().LiqnToSqlCount02();
-            //new Top_Bottom().LinqToSqlTop03_Ex_Andrus();
-            //new Object_Identity().LinqToSqlObjectIdentity01();
-            //new String_Date_functions().LinqToSqlString02();
-        }
-    }
-
-}
+#region HEADER
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Data.Linq;
+using Test_NUnit_MySql;
+
+#endregion
+
+namespace Test_NUnit
+{
+#region HEADER
+    /// <summary>
+    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
+    /// and debug into the offending method.
+    /// </summary>
+#endregion
+    class Program2
+    {
+        static void Main()
+        {
+            //new ReadTest_GroupBy().G01_SimpleGroup_Count();
+            //new ReadTest_GroupBy().G05_Group_Into();
+            //new ReadTest().D04_SelectProducts_OrderByName();
+            //new Join().Join_Laurent();
+            //new ReadTest().C2_SelectPenId();
+            //new ReadTest_Complex().D2_ArrayContains();
+            //new ReadTest_Complex().O3_OperatorUnion();
+            //new StoredProcTest().SPB_GetOrderCount_Having();
+            //new ReadTest().E2_ConnectionClosedTest();
+            //new ReadTest_AllTypes().AT1_SelectRow();
+            //new ReadTest_Operands().H1_SelectConcat();
+            //rc.F11_ConcatString();
+            new WriteTest().G5_SetFieldToNull();
+            //new WriteTest_BulkInsert().BI01_InsertProducts();
+            //new NullTest().NullableT_Value();
+            //new Count_Sum_Min_Max_Avg().LiqnToSqlCount02();
+            //new Top_Bottom().LinqToSqlTop03_Ex_Andrus();
+            //new Object_Identity().LinqToSqlObjectIdentity01();
+            //new String_Date_functions().LinqToSqlString02();
+        }
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2Pg.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2Pg.cs
@@ -1,43 +1,43 @@
-#region HEADER
-using System;
-using System.Threading;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using Test_NUnit_PostgreSql;
-#endregion
-
-namespace Test_NUnit
-{
-#region HEADER
-    /// <summary>
-    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
-    /// and debug into the offending method.
-    /// </summary>
-#endregion
-    class Program2
-    {
-        static void Main()
-        {
-            //new ReadTest().A1_PingDatabase();
-            //new ReadTest().D10_Products_LetterP_Desc();
-            //new StoredProcTest().SP3_GetOrderCount_SelField();
-            //new ReadTest_GroupBy().G04_OrderSumByCustomerID();
-            //new ReadTest_Operands().H1_SelectConcat();
-            //ReadTest_Complex rc = new ReadTest_Complex();
-            //rc.F5_AvgProductId();
-            //rc.F11_ConcatString();
-            //rc.F12_ConcatString_2();
-            //rc.F2_ProductCount_Clause();
-            //rc.F2_ProductCount_Projected();
-            //rc.F3_MaxProductId();
-            //new ReadTest_Complex().F3_MaxProductId();
-            //new ReadTest().D09_Products_LetterP_Take5();
-            //new ReadTest().D7_OrdersFromLondon_Alt();
-            //new WriteTest().G2_DeleteTest();
-            new WriteTest().G1_InsertProduct();
-        }
-    }
-    //class Column { public string table_name; }
-    //class Table { public string table_name; }
-}
+#region HEADER
+using System;
+using System.Threading;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using Test_NUnit_PostgreSql;
+#endregion
+
+namespace Test_NUnit
+{
+#region HEADER
+    /// <summary>
+    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
+    /// and debug into the offending method.
+    /// </summary>
+#endregion
+    class Program2
+    {
+        static void Main()
+        {
+            //new ReadTest().A1_PingDatabase();
+            //new ReadTest().D10_Products_LetterP_Desc();
+            //new StoredProcTest().SP3_GetOrderCount_SelField();
+            //new ReadTest_GroupBy().G04_OrderSumByCustomerID();
+            //new ReadTest_Operands().H1_SelectConcat();
+            //ReadTest_Complex rc = new ReadTest_Complex();
+            //rc.F5_AvgProductId();
+            //rc.F11_ConcatString();
+            //rc.F12_ConcatString_2();
+            //rc.F2_ProductCount_Clause();
+            //rc.F2_ProductCount_Projected();
+            //rc.F3_MaxProductId();
+            //new ReadTest_Complex().F3_MaxProductId();
+            //new ReadTest().D09_Products_LetterP_Take5();
+            //new ReadTest().D7_OrdersFromLondon_Alt();
+            //new WriteTest().G2_DeleteTest();
+            new WriteTest().G1_InsertProduct();
+        }
+    }
+    //class Column { public string table_name; }
+    //class Table { public string table_name; }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2SQLite.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program2SQLite.cs
@@ -1,42 +1,42 @@
-#region HEADER
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Data.Linq;
-using Test_NUnit_Sqlite;
-#endregion
-
-namespace Test_NUnit
-{
-#region HEADER
-    /// <summary>
-    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
-    /// and debug into the offending method.
-    /// </summary>
-#endregion
-    class Program2
-    {
-        static void Main()
-        {
-            //new ReadTest_GroupBy().G01_SimpleGroup_Count();
-            //new ReadTest_GroupBy().G05_Group_Into();
-            //new ReadTest().C1_SelectProducts();
-            //new Join().LinqToSqlJoin10();
-            //new ReadTest_Complex().F10_DistinctCity();
-            //new StoredProcTest().SPB_GetOrderCount_Having();
-            //new ReadTest().D08_Products_Take5();
-            //new ReadTest_AllTypes().AT1_SelectRow();
-            //new ReadTest_Operands().H1_SelectConcat();
-            //rc.F11_ConcatString();
-            new WriteTest().G8_DeleteTableWithStringPK();
-            //new WriteTest_BulkInsert().BI01_InsertProducts();
-            //new NullTest().NullableT_Value();
-            //new Count_Sum_Min_Max_Avg().LiqnToSqlCount02();
-            //new Top_Bottom().LinqToSqlTop03_Ex_Andrus();
-            //new Object_Identity().LinqToSqlObjectIdentity01();
-            //new String_Date_functions().LinqToSqlString01();
-        }
-    }
-
-}
+#region HEADER
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Data.Linq;
+using Test_NUnit_Sqlite;
+#endregion
+
+namespace Test_NUnit
+{
+#region HEADER
+    /// <summary>
+    /// when a problem crops up in NUnit, you can convert the project from DLL into EXE, 
+    /// and debug into the offending method.
+    /// </summary>
+#endregion
+    class Program2
+    {
+        static void Main()
+        {
+            //new ReadTest_GroupBy().G01_SimpleGroup_Count();
+            //new ReadTest_GroupBy().G05_Group_Into();
+            //new ReadTest().C1_SelectProducts();
+            //new Join().LinqToSqlJoin10();
+            //new ReadTest_Complex().F10_DistinctCity();
+            //new StoredProcTest().SPB_GetOrderCount_Having();
+            //new ReadTest().D08_Products_Take5();
+            //new ReadTest_AllTypes().AT1_SelectRow();
+            //new ReadTest_Operands().H1_SelectConcat();
+            //rc.F11_ConcatString();
+            new WriteTest().G8_DeleteTableWithStringPK();
+            //new WriteTest_BulkInsert().BI01_InsertProducts();
+            //new NullTest().NullableT_Value();
+            //new Count_Sum_Min_Max_Avg().LiqnToSqlCount02();
+            //new Top_Bottom().LinqToSqlTop03_Ex_Andrus();
+            //new Object_Identity().LinqToSqlObjectIdentity01();
+            //new String_Date_functions().LinqToSqlString01();
+        }
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program3Ora.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Program3Ora.cs
@@ -1,32 +1,32 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-#if ODP
-using Test_NUnit_OracleODP;
-#else
-using Test_NUnit_Oracle;
-#endif
-
-namespace Test_NUnit
-{
-    /// <summary>
-    /// when a problem crops up in NUnit, 
-    /// you can convert the project from DLL into EXE, 
-    /// and debug into the offending method.
-    /// </summary>
-    class Program2
-    {
-        static void Main()
-        {
-            //new ReadTest_Complex().F1_ProductCount();
-            //new ReadTest().D04_SelectProducts_OrderByName();
-            //new Linq_101_Samples.AdvancedTest().LinqToSqlAdvanced06();
-            //new WriteTest().G2_DeleteTest();
-            //new WriteTest().G1_InsertProduct();
-            new ReadTest().C1_SelectProducts();
-        }
-    }
-    //class Column { public string table_name; }
-    //class Table { public string table_name; }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+#if ODP
+using Test_NUnit_OracleODP;
+#else
+using Test_NUnit_Oracle;
+#endif
+
+namespace Test_NUnit
+{
+    /// <summary>
+    /// when a problem crops up in NUnit, 
+    /// you can convert the project from DLL into EXE, 
+    /// and debug into the offending method.
+    /// </summary>
+    class Program2
+    {
+        static void Main()
+        {
+            //new ReadTest_Complex().F1_ProductCount();
+            //new ReadTest().D04_SelectProducts_OrderByName();
+            //new Linq_101_Samples.AdvancedTest().LinqToSqlAdvanced06();
+            //new WriteTest().G2_DeleteTest();
+            //new WriteTest().G1_InsertProduct();
+            new ReadTest().C1_SelectProducts();
+        }
+    }
+    //class Column { public string table_name; }
+    //class Table { public string table_name; }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Properties/AssemblyInfo.cs
@@ -1,23 +1,23 @@
-﻿using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Test_NUnit")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Test_NUnit")]
-[assembly: AssemblyCopyright("Copyright ?  2005")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM componenets.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("0cae4ddc-abd5-4c2a-96c0-918ed1d736e4")]
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Test_NUnit")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Test_NUnit")]
+[assembly: AssemblyCopyright("Copyright ?  2005")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM componenets.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0cae4ddc-abd5-4c2a-96c0-918ed1d736e4")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest.cs
@@ -1,1215 +1,1215 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using NUnit.Framework;
-using Test_NUnit;
-using System.Data.Linq.Mapping;
-
-using nwind;
-
-#if MONO_STRICT
-using DataLinq = System.Data.Linq;
-#else
-using DataLinq = DbLinq.Data.Linq;
-#endif
-
-namespace nwind
-{
-    interface IHasAddress
-    {
-        string Address { get; set; }
-    }
-
-    partial class Customer : IHasAddress
-    {
-    }
-
-    partial class Employee : IHasAddress
-    {
-    }
-}
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTest : TestBase
-    {
-        #region Tests 'A' check for DB being ready
-
-
-        /// <summary>
-        /// in NUnit, tests are executed in alpha order.
-        /// We want to start by checking access to DB.
-        /// </summary>
-        [Test]
-        public void A1_PingDatabase()
-        {
-            Northwind db = CreateDB();
-            bool pingOK = db.DatabaseExists();
-            //bool pingOK = Conn.Ping(); //Schildkroete - Ping throws NullRef if conn is not open
-            Assert.IsTrue(pingOK, "Pinging database");
-        }
-
-
-
-#if !DEBUG && (MSSQL && L2SQL)
-        // L2SQL doesn't support 'SELECT' queries in DataContext.ExecuteCommand().
-        [Explicit]
-#endif
-        [Test]
-        public void A3_ProductsTableHasPen()
-        {
-            Northwind db = CreateDB();
-            //string sql = @"SELECT count(*) FROM linqtestdb.Products WHERE ProductName='Chai'";
-            string sql = @"SELECT count(*) FROM [Products] WHERE [ProductName]='Chai'";
-            long iResult = db.ExecuteCommand(sql);
-            //long iResult = base.ExecuteScalar(sql);
-            Assert.AreEqual(iResult, 1L, "Expecting one Chai in Products table, got:" + iResult + " (SQL:" + sql + ")");
-        }
-
-        [Test]
-        public void A4_SelectSingleCustomer()
-        {
-            Northwind db = CreateDB();
-
-            // Query for a specific customer
-            var cust = db.Customers.Single(c => c.CompanyName == "Around the Horn");
-            Assert.IsNotNull(cust, "Expected one customer 'Around the Horn'.");
-            var id = 1;
-            var prod = db.Products.Single(p => p.ProductID == id);
-            Assert.AreEqual("Chai", prod.ProductName);
-            id = 2;
-            prod = db.Products.Single(p => p.ProductID == id);
-            Assert.AreEqual("Chang", prod.ProductName);
-        }
-
-        [Test]
-        public void A5_SelectSingleOrDefault()
-        {
-            Northwind db = CreateDB();
-
-            // Query for a specific customer
-            var cust = db.Customers.SingleOrDefault(c => c.CompanyName == "Around the Horn");
-            Assert.IsNotNull(cust, "Expected one customer 'Around the Horn'.");
-
-#if false
-            var id = "ALFKI";
-            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
-            Assert.AreEqual("ALFKI", cust.CustomerID);
-            id = "BLAUS";
-            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
-            Assert.AreEqual("BLAUS", cust.CustomerID);
-            id = "DNE";
-            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id); // Does Not Exist
-            Assert.IsNull(cust);
-
-            id = "ALFKI";
-            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
-            Assert.AreEqual("ALFKI", cust.CustomerID);
-            id = "BLAUS";
-            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
-#endif
-            cust = GetCustomerById(db, "ALFKI");
-            Assert.AreEqual("ALFKI", cust.CustomerID);
-
-            cust = GetCustomerById(db, "BLAUS");
-            Assert.AreEqual("BLAUS", cust.CustomerID);
-
-            cust = GetCustomerById(db, "DNE");
-            Assert.IsNull(cust);
-
-            cust = GetCustomerById(db, "ALFKI");
-            Assert.AreEqual("ALFKI", cust.CustomerID);
-
-            cust = GetCustomerById(db, "BLAUS");
-            Assert.AreEqual("BLAUS", cust.CustomerID);
-        }
-
-
-        private static Customer GetCustomerById(Northwind db, string id)
-        {
-            return db.Customers.SingleOrDefault(c => c.CustomerID == id);
-        }
-
-
-        [Test]
-        public void A6_ConnectionOpenTest()
-        {
-            Northwind db = CreateDB(System.Data.ConnectionState.Open);
-            Product p1 = db.Products.Single(p => p.ProductID == 1);
-            Assert.IsTrue(p1.ProductID == 1);
-        }
-
-        [Test]
-        public void A7_ConnectionClosedTest()
-        {
-            Northwind db = CreateDB(System.Data.ConnectionState.Closed);
-            Product p1 = db.Products.Single(p => p.ProductID == 1);
-            Assert.IsTrue(p1.ProductID == 1);
-        }
-
-        [Test]
-        public void A8_SelectSingleOrDefault_QueryCacheDisabled()
-        {
-            Northwind db = CreateDB();
-#if !MONO_STRICT
-            db.QueryCacheEnabled = true;
-#endif
-
-            // Query for a specific customer
-            var cust = db.Customers.SingleOrDefault(c => c.CompanyName == "Around the Horn");
-            Assert.IsNotNull(cust, "Expected one customer 'Around the Horn'.");
-
-            cust = GetCustomerById(db, "ALFKI");
-            Assert.AreEqual("ALFKI", cust.CustomerID);
-
-            cust = GetCustomerById(db, "BLAUS");
-            Assert.AreEqual("BLAUS", cust.CustomerID);
-
-            cust = GetCustomerById(db, "DNE");
-            Assert.IsNull(cust);
-
-            cust = GetCustomerById(db, "ALFKI");
-            Assert.AreEqual("ALFKI", cust.CustomerID);
-
-            cust = GetCustomerById(db, "BLAUS");
-            Assert.AreEqual("BLAUS", cust.CustomerID);
-        }
-
-        #endregion
-
-        //TODO: group B, which checks AllTypes
-
-        #region Tests 'C' do plain select - no aggregation
-        [Test]
-        public void C1_SelectProducts()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products select p;
-            List<Product> products = q.ToList();
-            int productCount = products.Count;
-            Assert.Greater(productCount, 0, "Expected some products, got none");
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void C2_SelectPenId()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
-            var productIDs = q.ToList();
-            int productCount = productIDs.Count;
-            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
-        }
-
-        [Test]
-        public void C2b_SelectPenId()
-        {
-            Northwind db = CreateDB();
-
-            var pen = "Chai";
-            var q = from p in db.Products where p.ProductName == pen select p.ProductID;
-            var productIDs = q.ToList();
-            int productCount = productIDs.Count;
-            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
-        }
-
-        [Test]
-        public void C3_SelectPenIdName()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products
-                    where p.ProductName == "Chai"
-                    select new { ProductId = p.ProductID, Name = p.ProductName };
-            int count = 0;
-            //string penName;
-            foreach (var v in q)
-            {
-                Assert.AreEqual(v.Name, "Chai", "Expected ProductName='Chai'");
-                count++;
-            }
-            Assert.AreEqual(count, 1, "Expected one pen, got count=" + count);
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        public void C4_CountWithOrderBy()
-        {
-            Northwind db = CreateDB();
-            var q = (from p in db.Products
-                     orderby p.ProductID
-                     select p).Count();
-            Assert.IsTrue(q > 0);
-        }
-
-        [Test]
-        public void C5_ConstantProperty()
-        {
-            Northwind db = CreateDB();
-            var res = from o in db.Orders
-                      select new { test = 1 };
-            var list = res.ToList();
-            Assert.AreEqual(db.Orders.Count(), list.Count);
-        }
-
-
-        [Test]
-        public void C6_NullParentEmplyee()
-        {
-            //this should generate a LEFT JOIN statement, but currently does not.
-            Northwind db = CreateDB();
-
-            var query = from e in db.Employees
-                        select new
-                        {
-                            Name = e.FirstName,
-                            ReportsTo = e.ReportsToEmployee.FirstName
-                        };
-
-            var list = query.ToList();
-            // PC patch: I get 4 results...
-            Assert.IsTrue(list.Count >= 3);
-        }
-
-
-
-        [Test]
-        public void C7_CaseInsensitiveSubstringSearch()
-        {
-            Northwind db = CreateDB();
-
-            string search = "HERKKU";
-            var query = db.Customers.Where(d => d.CompanyName.ToUpper()
-              .Contains(search));
-
-            var list = query.ToList();
-            Assert.AreEqual(1, list.Count);
-        }
-
-
-        /// <summary>
-        /// from http://www.agilior.pt/blogs/pedro.rainho/archive/2008/04/11/4271.aspx
-        /// </summary>
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "Using LIKE operator from linq query")]
-        public void C7B_LikeOperator()
-        {
-            Northwind db = CreateDB();
-
-            //this used to read "Like(HU%F)" but I don't think we have that company.
-
-            var query = (from c in db.Customers
-                         where System.Data.Linq.SqlClient.SqlMethods.Like(c.CompanyName, "Alfre%")
-                         select c).ToList();
-            var list = query.ToList();
-            Assert.AreEqual(1, list.Count);
-        }
-
-        [Test]
-        public void C8_SelectPenByLocalVariable()
-        {
-            Northwind db = CreateDB();
-            string pen = "Chai";
-
-            var q = from p in db.Products
-                    where (p.ProductName == pen)
-                    select p;
-            var productIDs = q.ToList();
-            int productCount = productIDs.Count;
-            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
-        }
-
-        [Test]
-        public void C9_OrderByLeftJoin()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Orders
-                    orderby p.Customer.City
-                    select p;
-            
-            int count = q.ToList().Count();
-            int ordcount = db.Orders.Count();
-            Assert.AreEqual(ordcount, count);
-        }
-
-        [Test]
-        public void C10_ConstantPredicate()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Customers
-                    where true
-                    select p;
-
-            int count = q.ToList().Count;
-            Assert.AreEqual(count, db.Customers.Count());
-        }
-
-        [Test]
-        public void C10b_ConstantPredicate()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Customers
-                    where false
-                    select p;
-
-            int count = q.Count();
-            Assert.AreEqual(count, 0);
-        }
-
-        [Test]
-        public void C10c_ConstantPredicate()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Customers
-                    where (p.Address.StartsWith("A") && false)
-                    select p;
-
-            int count = q.Count();
-            Assert.AreEqual(count, 0);
-        }
-
-        [Test]
-        public void C10d_ConstantPredicate()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Customers
-                    where (p.Address.StartsWith("A") || true)
-                    select p;
-
-            int count = q.Count();
-            Assert.AreEqual(count, db.Customers.Count());
-        }
-
-        [Test]
-        public void C10e_ConstantPredicate()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Customers
-                    where (p.Address.StartsWith("A") || false)
-                    select p;
-
-            int count = q.Count();
-            Assert.Less(count, db.Customers.Count());
-        }
-
-        [Test]
-        public void C10f_ConstantPredicate()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Customers
-                    where (p.Address.StartsWith("A") && true)
-                    select p;
-
-            int count = q.Count();
-            Assert.Less(count, db.Customers.Count());
-        }
-
-        [Test]
-        public void C11_SelectProductsDiscontinued()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Products 
-#if INGRES
-                    where p.Discontinued == "Y"
-#else
-                    where p.Discontinued == true 
-#endif
-                    select p.ProductID;
-
-            var productIDs = q.ToList();
-            int productCount = productIDs.Count;
-            Assert.AreEqual(productCount, 8, "Expected eight products discontinued, got count=" + productCount);
-        }
-
-        [Explicit]
-        [Test]
-        public void C12_SelectEmployee_MultiJoinWithWhere()
-        {
-            Northwind db = CreateDB();
-            var q = from t in db.Territories
-                      join l in db.EmployeeTerritories on t.TerritoryID equals l.TerritoryID
-                      join e in db.Employees on l.EmployeeID equals e.EmployeeID
-                      where t.RegionID > 3
-                      select e; 
-            /* Note that written this way it work, but it's not always possible.
-            var q = from t in db.Territories.Where(t => t.RegionID > 3)
-                    join l in db.EmployeeTerritories on t.TerritoryID equals l.TerritoryID
-                    join e in db.Employees on l.EmployeeID equals e.EmployeeID
-                    select e; 
-             */
-            var employeeCount = q.Count();
-            Assert.AreEqual(4, employeeCount, "Expected for employees, got count=" + employeeCount);
-        }
-
-        [Test]
-        [ExpectedException(ExceptionType=typeof(InvalidOperationException), ExpectedMessage="Data context options cannot be modified after results have been returned from a query.")]
-        public void C13_Changing_ObjectTrackingEnabled2False()
-        {
-            Northwind db = CreateDB();
-            var q = from t in db.Territories
-                    select t;
-            var territoryCount = q.FirstOrDefault();
-            db.ObjectTrackingEnabled = false;
-        }
-
-        [Test]
-        [ExpectedException(ExceptionType = typeof(InvalidOperationException), ExpectedMessage = "Data context options cannot be modified after results have been returned from a query.")]
-        public void C14_Changing_DeferredLoadingEnabled2False()
-        {
-            Northwind db = CreateDB();
-            var q = from t in db.Territories
-                    select t;
-            var territoryCount = q.FirstOrDefault();
-            db.DeferredLoadingEnabled = false;
-        }
-
-        [Test]
-        [ExpectedException(ExceptionType = typeof(InvalidOperationException), ExpectedMessage = "Object tracking is not enabled for the current data context instance.")]
-        public void C15_SubmitChanges_DeferredLoadingEnabled_False()
-        {
-            Northwind db = CreateDB();
-            db.ObjectTrackingEnabled = false;
-            var q = from t in db.Territories
-                    select t;
-            var territoryCount = q.Count();
-            db.SubmitChanges();
-        }
-
-        [Test]
-        public void C16_GettingProperty_DeferredLoadingEnabled2False()
-        {
-            Northwind db = CreateDB();
-            db.DeferredLoadingEnabled = false;
-            var q = from t in db.Territories
-                    select t;
-            Territory territory = q.FirstOrDefault();
-            Assert.IsNotNull(territory);
-            Assert.IsNull(territory.Region);
-        }
-
-        [Test]
-        public void C17_GettingProperty_ObjectTrackingEnabled2False()
-        {
-            Northwind db = CreateDB();
-            db.ObjectTrackingEnabled = false;
-            var q = from t in db.Territories
-                    select t;
-            Territory territory = q.FirstOrDefault();
-            Assert.IsNotNull(territory);
-            Assert.IsNull(territory.Region);
-        }
-
-        [Test]
-        public void C18_GettingProperty_LazyLoaded()
-        {
-            Northwind db = CreateDB();
-            var q = from t in db.Territories
-                    select t;
-            Territory territory = q.FirstOrDefault();
-            Assert.IsNotNull(territory);
-            Assert.IsNotNull(territory.Region);
-        }
-
-        [Test]
-        public void C19_SelectEmployee_Fluent()
-        {
-            Northwind db = CreateDB();
-            var q = db.GetTable<Territory>()
-                        .Join(db.GetTable<EmployeeTerritory>(), t => t.TerritoryID, l => l.TerritoryID, (t, l) => l)
-                        .Join(db.GetTable<Employee>().Where(e => e.EmployeeID > 0), l => l.EmployeeID, e => e.EmployeeID, (l, e) => e);
-            var employeeCount = q.Count();
-            Assert.Greater(employeeCount, 0, "Expected any employees, got count=" + employeeCount);
-        }
-
-        /// <summary>
-        /// Test the use of DbLinq as a QueryObject
-        /// http://www.martinfowler.com/eaaCatalog/queryObject.html
-        /// </summary>
-        [Test]
-        public void C20_SelectEmployee_DbLinqAsQueryObject()
-        {
-            Northwind db = CreateDB();
-            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
-
-            allEmployees = filterByNameOrSurnameContains(db, allEmployees, "an");
-
-            allEmployees = filterByTerritoryName(db, allEmployees, "Neward");
-
-            Assert.AreEqual(1, allEmployees.Count());
-        }
-
-        [Test]
-        public void C21_SelectEmployee_DbLinqAsQueryObjectWithOrderCount()
-        {
-            Northwind db = CreateDB();
-            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
-
-            allEmployees = filterByOrderCountGreaterThan(db, allEmployees, 50);
-            allEmployees = filterByNameOrSurnameContains(db, allEmployees, "an");
-
-            allEmployees = filterByTerritoryNames(db, allEmployees, "Neward", "Boston", "Wilton");
-
-            int employeesCount = allEmployees.ToList().Count;
-
-            Assert.AreEqual(employeesCount, allEmployees.Count());
-        }
-
-
-        private IQueryable<Employee> filterByOrderCountGreaterThan(Northwind db, IQueryable<Employee> allEmployees, int minimumOrderNumber)
-        {
-            return from e in allEmployees.Where(e => e.Orders.Count > minimumOrderNumber) select e;
-        }
-
-        private IQueryable<Employee> filterByNameOrSurnameContains(Northwind db, IQueryable<Employee> allEmployees, string namePart)
-        {
-            return from e in allEmployees.Where(e => e.FirstName.Contains(namePart) || e.LastName.Contains(namePart)) select e;
-        }
-
-        private IQueryable<Employee> filterByTerritoryName(Northwind db, IQueryable<Employee> allEmployees, string territoryName)
-        {
-            IQueryable<Territory> territoryRequired = db.GetTable<Territory>().Where(t => t.TerritoryDescription == territoryName);
-            var q = territoryRequired
-                        .Join(db.GetTable<EmployeeTerritory>(), t => t.TerritoryID, l => l.TerritoryID, (t, l) => l)
-                        .Join(allEmployees, l => l.EmployeeID, e => e.EmployeeID, (l, e) => e);
-            return q;
-        }
-
-        private IQueryable<Employee> filterByTerritoryNames(Northwind db, IQueryable<Employee> allEmployees, params string[] territoryNames)
-        {
-            IQueryable<Territory> territoryRequired = db.GetTable<Territory>().Where(t => territoryNames.Contains(t.TerritoryDescription));
-            var q = territoryRequired
-                        .Join(db.GetTable<EmployeeTerritory>(), t => t.TerritoryID, l => l.TerritoryID, (t, l) => l)
-                        .Join(allEmployees, l => l.EmployeeID, e => e.EmployeeID, (l, e) => e);
-            return q;
-        }
-
-        [Test]
-        public void C22_SelectEmployee_GetCommandTextWithNoFilter()
-        {
-            Northwind db = CreateDB();
-            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
-            var commandText = db.GetCommand(allEmployees).CommandText;
-            Assert.IsNotNull(commandText);
-        }
-
-        [Test]
-        public void C23_SelectEmployees()
-        {
-            Northwind db = CreateDB();
-            var allEmployees = db.GetTable<Employee>();
-            int count = 0;
-            foreach (var emp in allEmployees)
-            {
-                ++count;
-            }
-            Assert.AreEqual(9, count);
-        }
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test]
-        public void C24_SelectEmployee_DbLinqAsQueryObjectWithExceptAndImage()
-        {
-            // This fail becouse Employee contains a ndata, ndata is not comparable
-            // and EXCEPT make a distinct on DATA
-            Northwind db = CreateDB();
-            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
-
-            var toExclude = filterByOrderCountGreaterThan(db, allEmployees, 50);
-            allEmployees = filterByNameOrSurnameContains(db, allEmployees, "a").Except(toExclude);
-
-            string commandText = db.GetCommand(allEmployees).CommandText;
-
-            int employeesCount = allEmployees.ToList().Count;
-
-            Assert.AreEqual(employeesCount, allEmployees.Count());
-        }
-
-        [Test]
-        public void C25_SelectViaInterface()
-        {
-            var db = CreateDB();
-            var c = MatchAddress(db.Customers, "ignoreme").FirstOrDefault();
-            Assert.IsNotNull(c);
-            var e = MatchAddress(db.Employees, "ignoreme").FirstOrDefault();
-            Assert.IsNotNull(e);
-        }
-
-        private static IEnumerable<T> MatchAddress<T>(IQueryable<T> query, string searchValue)
-            where T : IHasAddress
-        {
-            var lookups = query.OrderByDescending(v => v.Address.Length);
-            return lookups;
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        public void C26_SelectWithNestedMethodCall()
-        {
-            var db = CreateDB();
-            var s = "param";
-            var q = from e in db.Employees select new
-            {
-                BackName    = e.LastName + ", " + e.FirstName,
-                StaticName  = GetStaticName(e),
-                InstanceName= GetInstanceName(e, s, "constant"),
-                Territories = e.EmployeeTerritories.ToList(),
-            };
-            var actual  = q.ToList();
-            var expected = new[]{
-                new {
-                    BackName        = "Davolio, Nancy",
-                    StaticName      = "Nancy Davolio [Hired: 1992-05-01]",
-                    InstanceName    = "Nancy Davolio [Home Phone: (206) 555-9857]",
-                    TerritoryCount  = 2,
-                },
-                new {
-                    BackName        = "Fuller, Andrew",
-                    StaticName      = "Andrew Fuller [Hired: 1992-08-14]",
-                    InstanceName    = "Andrew Fuller [Home Phone: (206) 555-9482]",
-                    TerritoryCount  = 7,
-                },
-                new {
-                    BackName        = "Leverling, Janet",
-                    StaticName      = "Janet Leverling [Hired: 1992-04-01]",
-                    InstanceName    = "Janet Leverling [Home Phone: (206) 555-3412]",
-                    TerritoryCount  = 4,
-                },
-                new {
-                    BackName        = "Peacock, Margaret",
-                    StaticName      = "Margaret Peacock [Hired: 1993-05-03]",
-                    InstanceName    = "Margaret Peacock [Home Phone: (206) 555-8122]",
-                    TerritoryCount  = 3,
-                },
-                new {
-                    BackName        = "Buchanan, Steven",
-                    StaticName      = "Steven Buchanan [Hired: 1993-10-17]",
-                    InstanceName    = "Steven Buchanan [Home Phone: (71) 555-4848]",
-                    TerritoryCount  = 7,
-                },
-                new {
-                    BackName        = "Suyama, Michael",
-                    StaticName      = "Michael Suyama [Hired: 1993-10-17]",
-                    InstanceName    = "Michael Suyama [Home Phone: (71) 555-7773]",
-                    TerritoryCount  = 5,
-                },
-                new {
-                    BackName        = "King, Robert",
-                    StaticName      = "Robert King [Hired: 1994-01-02]",
-                    InstanceName    = "Robert King [Home Phone: (71) 555-5598]",
-                    TerritoryCount  = 10,
-                },
-                new {
-                    BackName        = "Callahan, Laura",
-                    StaticName      = "Laura Callahan [Hired: 1994-03-05]",
-                    InstanceName    = "Laura Callahan [Home Phone: (206) 555-1189]",
-                    TerritoryCount  = 4,
-                },
-                new {
-                    BackName        = "Dodsworth, Anne",
-                    StaticName      = "Anne Dodsworth [Hired: 1994-11-15]",
-                    InstanceName    = "Anne Dodsworth [Home Phone: (71) 555-4444]",
-                    TerritoryCount  = 7,
-                },
-            };
-            Assert.AreEqual(expected.Length, actual.Count);
-            for (int i = 0; i < expected.Length; ++i)
-            {
-                Assert.AreEqual(expected[i].BackName, actual[i].BackName);
-                Assert.AreEqual(expected[i].StaticName, actual[i].StaticName);
-                Assert.AreEqual(expected[i].InstanceName, actual[i].InstanceName);
-                Assert.AreEqual(expected[i].TerritoryCount, actual[i].Territories.Count);
-            }
-        }
-
-        static string GetStaticName(Employee e)
-        {
-            return e.FirstName + " " + e.LastName + " [Hired: " + 
-                (e.HireDate.HasValue ? e.HireDate.Value.ToString("yyyy-MM-dd") : "") + "]";
-        }
-
-        string GetInstanceName(Employee e, string a, string b)
-        {
-            return e.FirstName + " " + e.LastName + " [Home Phone: " + e.HomePhone.ToString() + "]";
-        }
-
-        [Test]
-        public void C27_SelectEntitySet()
-        {
-            // Debugger.Break();
-            var db = CreateDB();
-            var q = from e in db.Employees
-                    orderby e.EmployeeID
-                    select new
-                    {
-                        e.Orders
-                    };
-            var expectedOrderCounts = new[]{
-                123,    // Nancy Davolio
-                 96,    // Andrew Fuller
-                127,    // Janet Leverling
-                156,    // Margaret Peacock
-                 42,    // Steven Buchanan
-                 67,    // Michael Suyama
-                 72,    // Robert King
-                104,    // Laura Callahan
-                 43,    // Anne Dodsworth
-            };
-            int c = 0;
-            foreach (var e in q)
-            {
-                Assert.AreEqual(expectedOrderCounts[c], e.Orders.Count);
-                ++c;
-            }
-            Assert.AreEqual(expectedOrderCounts.Length, c);
-        }
-
-        [Test]
-        public void C28_SelectEntityRef()
-        {
-            var db = CreateDB();
-            var emp = db.Employees.Single(e => e.EmployeeID == 1);
-            Assert.IsNotNull(emp.ReportsToEmployee);
-            Assert.AreEqual(emp.ReportsTo.Value, emp.ReportsToEmployee.EmployeeID);
-        }
-        #endregion
-
-        #region region D - select first or last - calls IQueryable.Execute instead of GetEnumerator
-        [Test]
-        public void D01_SelectFirstPenID()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
-            var productID = q.First();
-            Assert.Greater(productID, 0, "Expected penID>0, got " + productID);
-        }
-
-
-        /// <summary>
-        /// Reported by pwy.mail in http://code.google.com/p/dblinq2007/issues/detail?id=67
-        /// </summary>
-        [Test]
-        public void D01b_SelectFirstOrDefaultCustomer()
-        {
-            Northwind db = CreateDB();
-            var q =
-              from c in db.Customers
-              select c;
-
-            Customer customer = q.FirstOrDefault();
-            Assert.IsNotNull(customer.CustomerID);
-        }
-
-
-        [Test]
-        public void D02_SelectFirstPen()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products where p.ProductName == "Chai" select p;
-            Product pen = q.First();
-            Assert.IsNotNull(pen, "Expected non-null Product");
-        }
-
-#if !DEBUG && MSSQL
-        // L2SQL: System.NotSupportedException : The query operator 'Last' is not supported.
-        [Explicit]
-#endif
-        [Test]
-        public void D03_SelectLastPenID()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
-            var productID = q.Last();
-            Assert.Greater(productID, 0, "Expected penID>0, got " + productID);
-        }
-
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void D04_SelectProducts_OrderByName()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products orderby p.ProductName select p;
-            string prevProductName = null;
-            foreach (Product p in q)
-            {
-                if (prevProductName == p.ProductName && p.ProductName.StartsWith("temp_"))
-                    continue; //skip temp rows
-
-                if (prevProductName != null)
-                {
-                    //int compareNames = prevProductName.CompareTo(p.ProductName);
-                    int compareNames = string.Compare(prevProductName, p.ProductName, stringComparisonType);
-                    Assert.Less(compareNames, 0, "When ordering by names, expected " + prevProductName + " to come after " + p.ProductName);
-                }
-                prevProductName = p.ProductName;
-            }
-            //Assert.Greater(productID,0,"Expected penID>0, got "+productID);
-        }
-
-        [Test]
-        public void D05_SelectOrdersForProduct()
-        {
-            Northwind db = CreateDB();
-            //var q = from p in db.Products where "Chai"==p.ProductName select p.Order;
-            //List<Order> penOrders = q.ToList();
-            //Assert.Greater(penOrders.Count,0,"Expected some orders for product 'Chai'");
-
-            var q =
-                from o in db.Orders
-                where o.Customer.City == "London"
-                select new { c = o.Customer, o };
-
-            var list1 = q.ToList();
-            foreach (var co in list1)
-            {
-                Assert.IsNotNull(co.c, "Expected non-null customer");
-                Assert.IsNotNull(co.c.City, "Expected non-null customer city");
-                Assert.IsNotNull(co.o, "Expected non-null order");
-            }
-            Assert.Greater(list1.Count, 0, "Expected some orders for London customers");
-        }
-
-        [Test]
-        public void D06_OrdersFromLondon()
-        {
-            Northwind db = CreateDB();
-            var q =
-                from o in db.Orders
-                where o.Customer.City == "London"
-                select new { c = o.Customer, o };
-
-            var list1 = q.ToList();
-            foreach (var co in list1)
-            {
-                Assert.IsNotNull(co.c, "Expected non-null customer");
-                Assert.IsNotNull(co.o, "Expected non-null order");
-            }
-            Assert.Greater(list1.Count, 0, "Expected some orders for London customers");
-        }
-
-        [Test]
-        public void D07_OrdersFromLondon_Alt()
-        {
-            //this is a "SelectMany" query:
-            Northwind db = CreateDB();
-
-            var q =
-                from c in db.Customers
-                from o in c.Orders
-                where c.City == "London"
-                select new { c, o };
-
-            Assert.Greater(q.ToList().Count, 0, "Expected some orders for London customers");
-        }
-
-        [Test]
-        public void D08_Products_Take5()
-        {
-            Northwind db = CreateDB();
-            var q = (from p in db.Products select p).Take(5);
-            List<Product> prods = q.ToList();
-            Assert.AreEqual(5, prods.Count, "Expected five products");
-        }
-
-        [Test]
-        public void D09_Products_LetterP_Take5()
-        {
-            Northwind db = CreateDB();
-
-            //var q = (from p in db.Products where p.ProductName.Contains("p") select p).Take(5);
-            var q = db.Products.Where(p => p.ProductName.Contains("p")).Take(5);
-            List<Product> prods = q.ToList();
-#if POSTGRES || INGRES
-            int expectedCount = 0; //Only 'Toilet Paper'
-#else
-            int expectedCount = 2; //Oracle, Mysql: 'Toilet Paper' and 'iPod'
-#endif
-            Assert.Greater(prods.Count, expectedCount, "Expected couple of products with letter 'p'");
-        }
-
-        [Test]
-        public void D10_Products_LetterP_Desc()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from p in db.Products
-                     where p.ProductName.Contains("P")
-                     orderby p.ProductID descending
-                     select p
-            ).Take(5);
-            //var q = db.Products.Where( p=>p.ProductName.Contains("p")).Take(5);
-            List<Product> prods = q.ToList();
-            Assert.Greater(prods.Count, 2, "Expected couple of products with letter 'p'");
-
-            var prodID0 = prods[0].ProductID;
-            var prodID1 = prods[1].ProductID;
-            Assert.Greater(prodID0, prodID1, "Sorting is broken");
-        }
-
-        [Test]
-        public void D11_Products_DoubleWhere()
-        {
-            Northwind db = CreateDB();
-            var q1 = db.Products.Where(p => p.ProductID > 1).Where(q => q.ProductID < 10);
-            int count1 = q1.Count();
-        }
-
-
-#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
-        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTest+Northwind1+CustomerDerivedClass' is not mapped as a Table.
-        [Explicit]
-#endif
-        [Test]
-        public void D12_SelectDerivedClass()
-        {
-            Northwind dbo = CreateDB();
-            Northwind1 db = new Northwind1(dbo.Connection);
-
-            var derivedCustomer = (from c in db.ChildCustomers
-                                   where c.City == "London"
-                                   select c).First();
-            Assert.IsTrue(derivedCustomer.City == "London");
-        }
-
-        public class Northwind1 : Northwind
-        {
-            public Northwind1(System.Data.IDbConnection connection)
-                : base(connection)
-            { }
-
-            public class CustomerDerivedClass : Customer { }
-            public class CustomerDerivedClass2 : CustomerDerivedClass { }
-
-            public DataLinq.Table<CustomerDerivedClass> ChildCustomers
-            {
-                get { return base.GetTable<CustomerDerivedClass>(); }
-            }
-        }
-
-
-        [Test(Description = "Calls ExecuteQuery<> to store result into object type property")]
-        // note: for PostgreSQL requires database with lowercase names, NorthwindReqular.SQL
-        public void D13_ExecuteQueryObjectProperty()
-        {
-            Northwind db = CreateDB();
-
-            var res = db.ExecuteQuery<Chai>(@"SELECT [ProductID] AS ChaiId FROM [Products] WHERE
-              [ProductName] ='Chai'").Single();
-            Assert.AreEqual(1, res.ChaiId);
-        }
-
-        class Chai
-        {
-            internal int ChaiId;
-        }
-
-        [Test]
-        public void D14_ProjectedProductList()
-        {
-            Northwind db = CreateDB();
-
-            var query = from pr in db.Products
-                        select new
-                        {
-                            pr.ProductID,
-                            pr.ProductName,
-                            pr.Supplier,         // exception!
-                            pr.UnitPrice,        // exception!
-                            pr.UnitsInStock,
-                            pr.UnitsOnOrder
-                        };
-            //WARNING - as of 2008Apr, we return Suppliers without blowing up, but they need to be live
-            var list = query.ToList();
-            Assert.IsTrue(list.Count > 0);
-            foreach (var item in list)
-            {
-                Assert.IsTrue(item.Supplier != null);
-            }
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
-        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTest+NorthwindDupl+CustomerDerivedClass' is not mapped as a Table.
-        [Explicit]
-#endif
-        [Test]
-        public void D15_DuplicateProperty()
-        {
-            Northwind dbo = CreateDB();
-            NorthwindDupl db = new NorthwindDupl(dbo.Connection);
-            var derivedCustomer = (from c in db.ChildCustomers
-                                   where c.City == "London"
-                                   select c).First();
-            Assert.IsTrue(derivedCustomer.City == "London");
-        }
-
-        public class NorthwindDupl : Northwind
-        {
-            public NorthwindDupl(System.Data.IDbConnection connection)
-                : base(connection)
-            { }
-
-            public class CustomerDerivedClass : Customer
-            {
-                private string city;
-                [Column(Storage = "city", Name = "city")]
-                public new string City
-                {
-                    get
-                    {
-                        return city;
-                    }
-                    set
-                    {
-                        if (value != city)
-                        {
-                            city = value;
-                        }
-                    }
-                }
-            }
-
-            public DataLinq.Table<CustomerDerivedClass> ChildCustomers
-            {
-                get { return base.GetTable<CustomerDerivedClass>(); }
-            }
-        }
-
-        /// <summary>
-        /// DbLinq must use field and should not look to setter.
-        /// </summary>
-        // PC: is this specified somewhere?
-        [Test]
-        public void D16_CustomerWithoutSetter()
-        {
-            Assert.Ignore("See if this is specified");
-            Northwind dbo = CreateDB();
-            NorthwindAbstractBaseClass db = new NorthwindAbstractBaseClass(dbo.Connection);
-            var Customer = (from c in db.ChildCustomers
-                            where c.City == "London"
-                            select c).First();
-            Assert.IsTrue(Customer.City == "London");
-        }
-
-
-        abstract class AbstractCustomer
-        {
-            public abstract string City { get; }
-        }
-
-        class NorthwindAbstractBaseClass : Northwind
-        {
-            public NorthwindAbstractBaseClass(System.Data.IDbConnection connection)
-                : base(connection) { }
-
-            [Table(Name = "customers")]
-            public class Customer : AbstractCustomer
-            {
-                string city;
-                [Column(Storage = "city", Name = "city")]
-                public override string City
-                {
-                    get
-                    {
-                        return city;
-                    }
-                }
-            }
-
-            [Table(Name = "customers")]
-            public class Customer2 : Customer { }
-
-            public DataLinq.Table<Customer2> ChildCustomers
-            {
-                get { return base.GetTable<Customer2>(); }
-            }
-        }
-
-
-        #endregion
-
-        [Test]
-        public void SqlInjectionAttack()
-        {
-            var db = CreateDB();
-            var q = db.Customers.Where(c => c.ContactName == "'; DROP TABLE DoesNotExist; --");
-            Assert.AreEqual(0, q.Count());
-        }
-              
-#if POSTGRES || MSSQL
-        [Test]
-        public void Storage01()
-        {
-            var db = CreateDB();
-            var q = db.NoStorageCategories.Where(c => c.CategoryID == 1);
-            var r = q.First();
-            Assert.AreEqual(1, q.Count());
-            Assert.AreEqual(1, r.CategoryID);
-            Assert.IsTrue(r.propertyInvoked_CategoryName);     
-            Assert.IsFalse(r.propertyInvoked_Description);     
-        }
-#endif    
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using NUnit.Framework;
+using Test_NUnit;
+using System.Data.Linq.Mapping;
+
+using nwind;
+
+#if MONO_STRICT
+using DataLinq = System.Data.Linq;
+#else
+using DataLinq = DbLinq.Data.Linq;
+#endif
+
+namespace nwind
+{
+    interface IHasAddress
+    {
+        string Address { get; set; }
+    }
+
+    partial class Customer : IHasAddress
+    {
+    }
+
+    partial class Employee : IHasAddress
+    {
+    }
+}
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTest : TestBase
+    {
+        #region Tests 'A' check for DB being ready
+
+
+        /// <summary>
+        /// in NUnit, tests are executed in alpha order.
+        /// We want to start by checking access to DB.
+        /// </summary>
+        [Test]
+        public void A1_PingDatabase()
+        {
+            Northwind db = CreateDB();
+            bool pingOK = db.DatabaseExists();
+            //bool pingOK = Conn.Ping(); //Schildkroete - Ping throws NullRef if conn is not open
+            Assert.IsTrue(pingOK, "Pinging database");
+        }
+
+
+
+#if !DEBUG && (MSSQL && L2SQL)
+        // L2SQL doesn't support 'SELECT' queries in DataContext.ExecuteCommand().
+        [Explicit]
+#endif
+        [Test]
+        public void A3_ProductsTableHasPen()
+        {
+            Northwind db = CreateDB();
+            //string sql = @"SELECT count(*) FROM linqtestdb.Products WHERE ProductName='Chai'";
+            string sql = @"SELECT count(*) FROM [Products] WHERE [ProductName]='Chai'";
+            long iResult = db.ExecuteCommand(sql);
+            //long iResult = base.ExecuteScalar(sql);
+            Assert.AreEqual(iResult, 1L, "Expecting one Chai in Products table, got:" + iResult + " (SQL:" + sql + ")");
+        }
+
+        [Test]
+        public void A4_SelectSingleCustomer()
+        {
+            Northwind db = CreateDB();
+
+            // Query for a specific customer
+            var cust = db.Customers.Single(c => c.CompanyName == "Around the Horn");
+            Assert.IsNotNull(cust, "Expected one customer 'Around the Horn'.");
+            var id = 1;
+            var prod = db.Products.Single(p => p.ProductID == id);
+            Assert.AreEqual("Chai", prod.ProductName);
+            id = 2;
+            prod = db.Products.Single(p => p.ProductID == id);
+            Assert.AreEqual("Chang", prod.ProductName);
+        }
+
+        [Test]
+        public void A5_SelectSingleOrDefault()
+        {
+            Northwind db = CreateDB();
+
+            // Query for a specific customer
+            var cust = db.Customers.SingleOrDefault(c => c.CompanyName == "Around the Horn");
+            Assert.IsNotNull(cust, "Expected one customer 'Around the Horn'.");
+
+#if false
+            var id = "ALFKI";
+            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
+            Assert.AreEqual("ALFKI", cust.CustomerID);
+            id = "BLAUS";
+            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
+            Assert.AreEqual("BLAUS", cust.CustomerID);
+            id = "DNE";
+            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id); // Does Not Exist
+            Assert.IsNull(cust);
+
+            id = "ALFKI";
+            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
+            Assert.AreEqual("ALFKI", cust.CustomerID);
+            id = "BLAUS";
+            cust = db.Customers.SingleOrDefault(c => c.CustomerID == id);
+#endif
+            cust = GetCustomerById(db, "ALFKI");
+            Assert.AreEqual("ALFKI", cust.CustomerID);
+
+            cust = GetCustomerById(db, "BLAUS");
+            Assert.AreEqual("BLAUS", cust.CustomerID);
+
+            cust = GetCustomerById(db, "DNE");
+            Assert.IsNull(cust);
+
+            cust = GetCustomerById(db, "ALFKI");
+            Assert.AreEqual("ALFKI", cust.CustomerID);
+
+            cust = GetCustomerById(db, "BLAUS");
+            Assert.AreEqual("BLAUS", cust.CustomerID);
+        }
+
+
+        private static Customer GetCustomerById(Northwind db, string id)
+        {
+            return db.Customers.SingleOrDefault(c => c.CustomerID == id);
+        }
+
+
+        [Test]
+        public void A6_ConnectionOpenTest()
+        {
+            Northwind db = CreateDB(System.Data.ConnectionState.Open);
+            Product p1 = db.Products.Single(p => p.ProductID == 1);
+            Assert.IsTrue(p1.ProductID == 1);
+        }
+
+        [Test]
+        public void A7_ConnectionClosedTest()
+        {
+            Northwind db = CreateDB(System.Data.ConnectionState.Closed);
+            Product p1 = db.Products.Single(p => p.ProductID == 1);
+            Assert.IsTrue(p1.ProductID == 1);
+        }
+
+        [Test]
+        public void A8_SelectSingleOrDefault_QueryCacheDisabled()
+        {
+            Northwind db = CreateDB();
+#if !MONO_STRICT
+            db.QueryCacheEnabled = true;
+#endif
+
+            // Query for a specific customer
+            var cust = db.Customers.SingleOrDefault(c => c.CompanyName == "Around the Horn");
+            Assert.IsNotNull(cust, "Expected one customer 'Around the Horn'.");
+
+            cust = GetCustomerById(db, "ALFKI");
+            Assert.AreEqual("ALFKI", cust.CustomerID);
+
+            cust = GetCustomerById(db, "BLAUS");
+            Assert.AreEqual("BLAUS", cust.CustomerID);
+
+            cust = GetCustomerById(db, "DNE");
+            Assert.IsNull(cust);
+
+            cust = GetCustomerById(db, "ALFKI");
+            Assert.AreEqual("ALFKI", cust.CustomerID);
+
+            cust = GetCustomerById(db, "BLAUS");
+            Assert.AreEqual("BLAUS", cust.CustomerID);
+        }
+
+        #endregion
+
+        //TODO: group B, which checks AllTypes
+
+        #region Tests 'C' do plain select - no aggregation
+        [Test]
+        public void C1_SelectProducts()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products select p;
+            List<Product> products = q.ToList();
+            int productCount = products.Count;
+            Assert.Greater(productCount, 0, "Expected some products, got none");
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void C2_SelectPenId()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
+            var productIDs = q.ToList();
+            int productCount = productIDs.Count;
+            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
+        }
+
+        [Test]
+        public void C2b_SelectPenId()
+        {
+            Northwind db = CreateDB();
+
+            var pen = "Chai";
+            var q = from p in db.Products where p.ProductName == pen select p.ProductID;
+            var productIDs = q.ToList();
+            int productCount = productIDs.Count;
+            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
+        }
+
+        [Test]
+        public void C3_SelectPenIdName()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products
+                    where p.ProductName == "Chai"
+                    select new { ProductId = p.ProductID, Name = p.ProductName };
+            int count = 0;
+            //string penName;
+            foreach (var v in q)
+            {
+                Assert.AreEqual(v.Name, "Chai", "Expected ProductName='Chai'");
+                count++;
+            }
+            Assert.AreEqual(count, 1, "Expected one pen, got count=" + count);
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        public void C4_CountWithOrderBy()
+        {
+            Northwind db = CreateDB();
+            var q = (from p in db.Products
+                     orderby p.ProductID
+                     select p).Count();
+            Assert.IsTrue(q > 0);
+        }
+
+        [Test]
+        public void C5_ConstantProperty()
+        {
+            Northwind db = CreateDB();
+            var res = from o in db.Orders
+                      select new { test = 1 };
+            var list = res.ToList();
+            Assert.AreEqual(db.Orders.Count(), list.Count);
+        }
+
+
+        [Test]
+        public void C6_NullParentEmplyee()
+        {
+            //this should generate a LEFT JOIN statement, but currently does not.
+            Northwind db = CreateDB();
+
+            var query = from e in db.Employees
+                        select new
+                        {
+                            Name = e.FirstName,
+                            ReportsTo = e.ReportsToEmployee.FirstName
+                        };
+
+            var list = query.ToList();
+            // PC patch: I get 4 results...
+            Assert.IsTrue(list.Count >= 3);
+        }
+
+
+
+        [Test]
+        public void C7_CaseInsensitiveSubstringSearch()
+        {
+            Northwind db = CreateDB();
+
+            string search = "HERKKU";
+            var query = db.Customers.Where(d => d.CompanyName.ToUpper()
+              .Contains(search));
+
+            var list = query.ToList();
+            Assert.AreEqual(1, list.Count);
+        }
+
+
+        /// <summary>
+        /// from http://www.agilior.pt/blogs/pedro.rainho/archive/2008/04/11/4271.aspx
+        /// </summary>
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "Using LIKE operator from linq query")]
+        public void C7B_LikeOperator()
+        {
+            Northwind db = CreateDB();
+
+            //this used to read "Like(HU%F)" but I don't think we have that company.
+
+            var query = (from c in db.Customers
+                         where System.Data.Linq.SqlClient.SqlMethods.Like(c.CompanyName, "Alfre%")
+                         select c).ToList();
+            var list = query.ToList();
+            Assert.AreEqual(1, list.Count);
+        }
+
+        [Test]
+        public void C8_SelectPenByLocalVariable()
+        {
+            Northwind db = CreateDB();
+            string pen = "Chai";
+
+            var q = from p in db.Products
+                    where (p.ProductName == pen)
+                    select p;
+            var productIDs = q.ToList();
+            int productCount = productIDs.Count;
+            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
+        }
+
+        [Test]
+        public void C9_OrderByLeftJoin()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Orders
+                    orderby p.Customer.City
+                    select p;
+            
+            int count = q.ToList().Count();
+            int ordcount = db.Orders.Count();
+            Assert.AreEqual(ordcount, count);
+        }
+
+        [Test]
+        public void C10_ConstantPredicate()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Customers
+                    where true
+                    select p;
+
+            int count = q.ToList().Count;
+            Assert.AreEqual(count, db.Customers.Count());
+        }
+
+        [Test]
+        public void C10b_ConstantPredicate()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Customers
+                    where false
+                    select p;
+
+            int count = q.Count();
+            Assert.AreEqual(count, 0);
+        }
+
+        [Test]
+        public void C10c_ConstantPredicate()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Customers
+                    where (p.Address.StartsWith("A") && false)
+                    select p;
+
+            int count = q.Count();
+            Assert.AreEqual(count, 0);
+        }
+
+        [Test]
+        public void C10d_ConstantPredicate()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Customers
+                    where (p.Address.StartsWith("A") || true)
+                    select p;
+
+            int count = q.Count();
+            Assert.AreEqual(count, db.Customers.Count());
+        }
+
+        [Test]
+        public void C10e_ConstantPredicate()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Customers
+                    where (p.Address.StartsWith("A") || false)
+                    select p;
+
+            int count = q.Count();
+            Assert.Less(count, db.Customers.Count());
+        }
+
+        [Test]
+        public void C10f_ConstantPredicate()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Customers
+                    where (p.Address.StartsWith("A") && true)
+                    select p;
+
+            int count = q.Count();
+            Assert.Less(count, db.Customers.Count());
+        }
+
+        [Test]
+        public void C11_SelectProductsDiscontinued()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Products 
+#if INGRES
+                    where p.Discontinued == "Y"
+#else
+                    where p.Discontinued == true 
+#endif
+                    select p.ProductID;
+
+            var productIDs = q.ToList();
+            int productCount = productIDs.Count;
+            Assert.AreEqual(productCount, 8, "Expected eight products discontinued, got count=" + productCount);
+        }
+
+        [Explicit]
+        [Test]
+        public void C12_SelectEmployee_MultiJoinWithWhere()
+        {
+            Northwind db = CreateDB();
+            var q = from t in db.Territories
+                      join l in db.EmployeeTerritories on t.TerritoryID equals l.TerritoryID
+                      join e in db.Employees on l.EmployeeID equals e.EmployeeID
+                      where t.RegionID > 3
+                      select e; 
+            /* Note that written this way it work, but it's not always possible.
+            var q = from t in db.Territories.Where(t => t.RegionID > 3)
+                    join l in db.EmployeeTerritories on t.TerritoryID equals l.TerritoryID
+                    join e in db.Employees on l.EmployeeID equals e.EmployeeID
+                    select e; 
+             */
+            var employeeCount = q.Count();
+            Assert.AreEqual(4, employeeCount, "Expected for employees, got count=" + employeeCount);
+        }
+
+        [Test]
+        [ExpectedException(ExceptionType=typeof(InvalidOperationException), ExpectedMessage="Data context options cannot be modified after results have been returned from a query.")]
+        public void C13_Changing_ObjectTrackingEnabled2False()
+        {
+            Northwind db = CreateDB();
+            var q = from t in db.Territories
+                    select t;
+            var territoryCount = q.FirstOrDefault();
+            db.ObjectTrackingEnabled = false;
+        }
+
+        [Test]
+        [ExpectedException(ExceptionType = typeof(InvalidOperationException), ExpectedMessage = "Data context options cannot be modified after results have been returned from a query.")]
+        public void C14_Changing_DeferredLoadingEnabled2False()
+        {
+            Northwind db = CreateDB();
+            var q = from t in db.Territories
+                    select t;
+            var territoryCount = q.FirstOrDefault();
+            db.DeferredLoadingEnabled = false;
+        }
+
+        [Test]
+        [ExpectedException(ExceptionType = typeof(InvalidOperationException), ExpectedMessage = "Object tracking is not enabled for the current data context instance.")]
+        public void C15_SubmitChanges_DeferredLoadingEnabled_False()
+        {
+            Northwind db = CreateDB();
+            db.ObjectTrackingEnabled = false;
+            var q = from t in db.Territories
+                    select t;
+            var territoryCount = q.Count();
+            db.SubmitChanges();
+        }
+
+        [Test]
+        public void C16_GettingProperty_DeferredLoadingEnabled2False()
+        {
+            Northwind db = CreateDB();
+            db.DeferredLoadingEnabled = false;
+            var q = from t in db.Territories
+                    select t;
+            Territory territory = q.FirstOrDefault();
+            Assert.IsNotNull(territory);
+            Assert.IsNull(territory.Region);
+        }
+
+        [Test]
+        public void C17_GettingProperty_ObjectTrackingEnabled2False()
+        {
+            Northwind db = CreateDB();
+            db.ObjectTrackingEnabled = false;
+            var q = from t in db.Territories
+                    select t;
+            Territory territory = q.FirstOrDefault();
+            Assert.IsNotNull(territory);
+            Assert.IsNull(territory.Region);
+        }
+
+        [Test]
+        public void C18_GettingProperty_LazyLoaded()
+        {
+            Northwind db = CreateDB();
+            var q = from t in db.Territories
+                    select t;
+            Territory territory = q.FirstOrDefault();
+            Assert.IsNotNull(territory);
+            Assert.IsNotNull(territory.Region);
+        }
+
+        [Test]
+        public void C19_SelectEmployee_Fluent()
+        {
+            Northwind db = CreateDB();
+            var q = db.GetTable<Territory>()
+                        .Join(db.GetTable<EmployeeTerritory>(), t => t.TerritoryID, l => l.TerritoryID, (t, l) => l)
+                        .Join(db.GetTable<Employee>().Where(e => e.EmployeeID > 0), l => l.EmployeeID, e => e.EmployeeID, (l, e) => e);
+            var employeeCount = q.Count();
+            Assert.Greater(employeeCount, 0, "Expected any employees, got count=" + employeeCount);
+        }
+
+        /// <summary>
+        /// Test the use of DbLinq as a QueryObject
+        /// http://www.martinfowler.com/eaaCatalog/queryObject.html
+        /// </summary>
+        [Test]
+        public void C20_SelectEmployee_DbLinqAsQueryObject()
+        {
+            Northwind db = CreateDB();
+            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
+
+            allEmployees = filterByNameOrSurnameContains(db, allEmployees, "an");
+
+            allEmployees = filterByTerritoryName(db, allEmployees, "Neward");
+
+            Assert.AreEqual(1, allEmployees.Count());
+        }
+
+        [Test]
+        public void C21_SelectEmployee_DbLinqAsQueryObjectWithOrderCount()
+        {
+            Northwind db = CreateDB();
+            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
+
+            allEmployees = filterByOrderCountGreaterThan(db, allEmployees, 50);
+            allEmployees = filterByNameOrSurnameContains(db, allEmployees, "an");
+
+            allEmployees = filterByTerritoryNames(db, allEmployees, "Neward", "Boston", "Wilton");
+
+            int employeesCount = allEmployees.ToList().Count;
+
+            Assert.AreEqual(employeesCount, allEmployees.Count());
+        }
+
+
+        private IQueryable<Employee> filterByOrderCountGreaterThan(Northwind db, IQueryable<Employee> allEmployees, int minimumOrderNumber)
+        {
+            return from e in allEmployees.Where(e => e.Orders.Count > minimumOrderNumber) select e;
+        }
+
+        private IQueryable<Employee> filterByNameOrSurnameContains(Northwind db, IQueryable<Employee> allEmployees, string namePart)
+        {
+            return from e in allEmployees.Where(e => e.FirstName.Contains(namePart) || e.LastName.Contains(namePart)) select e;
+        }
+
+        private IQueryable<Employee> filterByTerritoryName(Northwind db, IQueryable<Employee> allEmployees, string territoryName)
+        {
+            IQueryable<Territory> territoryRequired = db.GetTable<Territory>().Where(t => t.TerritoryDescription == territoryName);
+            var q = territoryRequired
+                        .Join(db.GetTable<EmployeeTerritory>(), t => t.TerritoryID, l => l.TerritoryID, (t, l) => l)
+                        .Join(allEmployees, l => l.EmployeeID, e => e.EmployeeID, (l, e) => e);
+            return q;
+        }
+
+        private IQueryable<Employee> filterByTerritoryNames(Northwind db, IQueryable<Employee> allEmployees, params string[] territoryNames)
+        {
+            IQueryable<Territory> territoryRequired = db.GetTable<Territory>().Where(t => territoryNames.Contains(t.TerritoryDescription));
+            var q = territoryRequired
+                        .Join(db.GetTable<EmployeeTerritory>(), t => t.TerritoryID, l => l.TerritoryID, (t, l) => l)
+                        .Join(allEmployees, l => l.EmployeeID, e => e.EmployeeID, (l, e) => e);
+            return q;
+        }
+
+        [Test]
+        public void C22_SelectEmployee_GetCommandTextWithNoFilter()
+        {
+            Northwind db = CreateDB();
+            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
+            var commandText = db.GetCommand(allEmployees).CommandText;
+            Assert.IsNotNull(commandText);
+        }
+
+        [Test]
+        public void C23_SelectEmployees()
+        {
+            Northwind db = CreateDB();
+            var allEmployees = db.GetTable<Employee>();
+            int count = 0;
+            foreach (var emp in allEmployees)
+            {
+                ++count;
+            }
+            Assert.AreEqual(9, count);
+        }
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test]
+        public void C24_SelectEmployee_DbLinqAsQueryObjectWithExceptAndImage()
+        {
+            // This fail becouse Employee contains a ndata, ndata is not comparable
+            // and EXCEPT make a distinct on DATA
+            Northwind db = CreateDB();
+            IQueryable<Employee> allEmployees = db.GetTable<Employee>();
+
+            var toExclude = filterByOrderCountGreaterThan(db, allEmployees, 50);
+            allEmployees = filterByNameOrSurnameContains(db, allEmployees, "a").Except(toExclude);
+
+            string commandText = db.GetCommand(allEmployees).CommandText;
+
+            int employeesCount = allEmployees.ToList().Count;
+
+            Assert.AreEqual(employeesCount, allEmployees.Count());
+        }
+
+        [Test]
+        public void C25_SelectViaInterface()
+        {
+            var db = CreateDB();
+            var c = MatchAddress(db.Customers, "ignoreme").FirstOrDefault();
+            Assert.IsNotNull(c);
+            var e = MatchAddress(db.Employees, "ignoreme").FirstOrDefault();
+            Assert.IsNotNull(e);
+        }
+
+        private static IEnumerable<T> MatchAddress<T>(IQueryable<T> query, string searchValue)
+            where T : IHasAddress
+        {
+            var lookups = query.OrderByDescending(v => v.Address.Length);
+            return lookups;
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        public void C26_SelectWithNestedMethodCall()
+        {
+            var db = CreateDB();
+            var s = "param";
+            var q = from e in db.Employees select new
+            {
+                BackName    = e.LastName + ", " + e.FirstName,
+                StaticName  = GetStaticName(e),
+                InstanceName= GetInstanceName(e, s, "constant"),
+                Territories = e.EmployeeTerritories.ToList(),
+            };
+            var actual  = q.ToList();
+            var expected = new[]{
+                new {
+                    BackName        = "Davolio, Nancy",
+                    StaticName      = "Nancy Davolio [Hired: 1992-05-01]",
+                    InstanceName    = "Nancy Davolio [Home Phone: (206) 555-9857]",
+                    TerritoryCount  = 2,
+                },
+                new {
+                    BackName        = "Fuller, Andrew",
+                    StaticName      = "Andrew Fuller [Hired: 1992-08-14]",
+                    InstanceName    = "Andrew Fuller [Home Phone: (206) 555-9482]",
+                    TerritoryCount  = 7,
+                },
+                new {
+                    BackName        = "Leverling, Janet",
+                    StaticName      = "Janet Leverling [Hired: 1992-04-01]",
+                    InstanceName    = "Janet Leverling [Home Phone: (206) 555-3412]",
+                    TerritoryCount  = 4,
+                },
+                new {
+                    BackName        = "Peacock, Margaret",
+                    StaticName      = "Margaret Peacock [Hired: 1993-05-03]",
+                    InstanceName    = "Margaret Peacock [Home Phone: (206) 555-8122]",
+                    TerritoryCount  = 3,
+                },
+                new {
+                    BackName        = "Buchanan, Steven",
+                    StaticName      = "Steven Buchanan [Hired: 1993-10-17]",
+                    InstanceName    = "Steven Buchanan [Home Phone: (71) 555-4848]",
+                    TerritoryCount  = 7,
+                },
+                new {
+                    BackName        = "Suyama, Michael",
+                    StaticName      = "Michael Suyama [Hired: 1993-10-17]",
+                    InstanceName    = "Michael Suyama [Home Phone: (71) 555-7773]",
+                    TerritoryCount  = 5,
+                },
+                new {
+                    BackName        = "King, Robert",
+                    StaticName      = "Robert King [Hired: 1994-01-02]",
+                    InstanceName    = "Robert King [Home Phone: (71) 555-5598]",
+                    TerritoryCount  = 10,
+                },
+                new {
+                    BackName        = "Callahan, Laura",
+                    StaticName      = "Laura Callahan [Hired: 1994-03-05]",
+                    InstanceName    = "Laura Callahan [Home Phone: (206) 555-1189]",
+                    TerritoryCount  = 4,
+                },
+                new {
+                    BackName        = "Dodsworth, Anne",
+                    StaticName      = "Anne Dodsworth [Hired: 1994-11-15]",
+                    InstanceName    = "Anne Dodsworth [Home Phone: (71) 555-4444]",
+                    TerritoryCount  = 7,
+                },
+            };
+            Assert.AreEqual(expected.Length, actual.Count);
+            for (int i = 0; i < expected.Length; ++i)
+            {
+                Assert.AreEqual(expected[i].BackName, actual[i].BackName);
+                Assert.AreEqual(expected[i].StaticName, actual[i].StaticName);
+                Assert.AreEqual(expected[i].InstanceName, actual[i].InstanceName);
+                Assert.AreEqual(expected[i].TerritoryCount, actual[i].Territories.Count);
+            }
+        }
+
+        static string GetStaticName(Employee e)
+        {
+            return e.FirstName + " " + e.LastName + " [Hired: " + 
+                (e.HireDate.HasValue ? e.HireDate.Value.ToString("yyyy-MM-dd") : "") + "]";
+        }
+
+        string GetInstanceName(Employee e, string a, string b)
+        {
+            return e.FirstName + " " + e.LastName + " [Home Phone: " + e.HomePhone.ToString() + "]";
+        }
+
+        [Test]
+        public void C27_SelectEntitySet()
+        {
+            // Debugger.Break();
+            var db = CreateDB();
+            var q = from e in db.Employees
+                    orderby e.EmployeeID
+                    select new
+                    {
+                        e.Orders
+                    };
+            var expectedOrderCounts = new[]{
+                123,    // Nancy Davolio
+                 96,    // Andrew Fuller
+                127,    // Janet Leverling
+                156,    // Margaret Peacock
+                 42,    // Steven Buchanan
+                 67,    // Michael Suyama
+                 72,    // Robert King
+                104,    // Laura Callahan
+                 43,    // Anne Dodsworth
+            };
+            int c = 0;
+            foreach (var e in q)
+            {
+                Assert.AreEqual(expectedOrderCounts[c], e.Orders.Count);
+                ++c;
+            }
+            Assert.AreEqual(expectedOrderCounts.Length, c);
+        }
+
+        [Test]
+        public void C28_SelectEntityRef()
+        {
+            var db = CreateDB();
+            var emp = db.Employees.Single(e => e.EmployeeID == 1);
+            Assert.IsNotNull(emp.ReportsToEmployee);
+            Assert.AreEqual(emp.ReportsTo.Value, emp.ReportsToEmployee.EmployeeID);
+        }
+        #endregion
+
+        #region region D - select first or last - calls IQueryable.Execute instead of GetEnumerator
+        [Test]
+        public void D01_SelectFirstPenID()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
+            var productID = q.First();
+            Assert.Greater(productID, 0, "Expected penID>0, got " + productID);
+        }
+
+
+        /// <summary>
+        /// Reported by pwy.mail in http://code.google.com/p/dblinq2007/issues/detail?id=67
+        /// </summary>
+        [Test]
+        public void D01b_SelectFirstOrDefaultCustomer()
+        {
+            Northwind db = CreateDB();
+            var q =
+              from c in db.Customers
+              select c;
+
+            Customer customer = q.FirstOrDefault();
+            Assert.IsNotNull(customer.CustomerID);
+        }
+
+
+        [Test]
+        public void D02_SelectFirstPen()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products where p.ProductName == "Chai" select p;
+            Product pen = q.First();
+            Assert.IsNotNull(pen, "Expected non-null Product");
+        }
+
+#if !DEBUG && MSSQL
+        // L2SQL: System.NotSupportedException : The query operator 'Last' is not supported.
+        [Explicit]
+#endif
+        [Test]
+        public void D03_SelectLastPenID()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
+            var productID = q.Last();
+            Assert.Greater(productID, 0, "Expected penID>0, got " + productID);
+        }
+
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void D04_SelectProducts_OrderByName()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products orderby p.ProductName select p;
+            string prevProductName = null;
+            foreach (Product p in q)
+            {
+                if (prevProductName == p.ProductName && p.ProductName.StartsWith("temp_"))
+                    continue; //skip temp rows
+
+                if (prevProductName != null)
+                {
+                    //int compareNames = prevProductName.CompareTo(p.ProductName);
+                    int compareNames = string.Compare(prevProductName, p.ProductName, stringComparisonType);
+                    Assert.Less(compareNames, 0, "When ordering by names, expected " + prevProductName + " to come after " + p.ProductName);
+                }
+                prevProductName = p.ProductName;
+            }
+            //Assert.Greater(productID,0,"Expected penID>0, got "+productID);
+        }
+
+        [Test]
+        public void D05_SelectOrdersForProduct()
+        {
+            Northwind db = CreateDB();
+            //var q = from p in db.Products where "Chai"==p.ProductName select p.Order;
+            //List<Order> penOrders = q.ToList();
+            //Assert.Greater(penOrders.Count,0,"Expected some orders for product 'Chai'");
+
+            var q =
+                from o in db.Orders
+                where o.Customer.City == "London"
+                select new { c = o.Customer, o };
+
+            var list1 = q.ToList();
+            foreach (var co in list1)
+            {
+                Assert.IsNotNull(co.c, "Expected non-null customer");
+                Assert.IsNotNull(co.c.City, "Expected non-null customer city");
+                Assert.IsNotNull(co.o, "Expected non-null order");
+            }
+            Assert.Greater(list1.Count, 0, "Expected some orders for London customers");
+        }
+
+        [Test]
+        public void D06_OrdersFromLondon()
+        {
+            Northwind db = CreateDB();
+            var q =
+                from o in db.Orders
+                where o.Customer.City == "London"
+                select new { c = o.Customer, o };
+
+            var list1 = q.ToList();
+            foreach (var co in list1)
+            {
+                Assert.IsNotNull(co.c, "Expected non-null customer");
+                Assert.IsNotNull(co.o, "Expected non-null order");
+            }
+            Assert.Greater(list1.Count, 0, "Expected some orders for London customers");
+        }
+
+        [Test]
+        public void D07_OrdersFromLondon_Alt()
+        {
+            //this is a "SelectMany" query:
+            Northwind db = CreateDB();
+
+            var q =
+                from c in db.Customers
+                from o in c.Orders
+                where c.City == "London"
+                select new { c, o };
+
+            Assert.Greater(q.ToList().Count, 0, "Expected some orders for London customers");
+        }
+
+        [Test]
+        public void D08_Products_Take5()
+        {
+            Northwind db = CreateDB();
+            var q = (from p in db.Products select p).Take(5);
+            List<Product> prods = q.ToList();
+            Assert.AreEqual(5, prods.Count, "Expected five products");
+        }
+
+        [Test]
+        public void D09_Products_LetterP_Take5()
+        {
+            Northwind db = CreateDB();
+
+            //var q = (from p in db.Products where p.ProductName.Contains("p") select p).Take(5);
+            var q = db.Products.Where(p => p.ProductName.Contains("p")).Take(5);
+            List<Product> prods = q.ToList();
+#if POSTGRES || INGRES
+            int expectedCount = 0; //Only 'Toilet Paper'
+#else
+            int expectedCount = 2; //Oracle, Mysql: 'Toilet Paper' and 'iPod'
+#endif
+            Assert.Greater(prods.Count, expectedCount, "Expected couple of products with letter 'p'");
+        }
+
+        [Test]
+        public void D10_Products_LetterP_Desc()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from p in db.Products
+                     where p.ProductName.Contains("P")
+                     orderby p.ProductID descending
+                     select p
+            ).Take(5);
+            //var q = db.Products.Where( p=>p.ProductName.Contains("p")).Take(5);
+            List<Product> prods = q.ToList();
+            Assert.Greater(prods.Count, 2, "Expected couple of products with letter 'p'");
+
+            var prodID0 = prods[0].ProductID;
+            var prodID1 = prods[1].ProductID;
+            Assert.Greater(prodID0, prodID1, "Sorting is broken");
+        }
+
+        [Test]
+        public void D11_Products_DoubleWhere()
+        {
+            Northwind db = CreateDB();
+            var q1 = db.Products.Where(p => p.ProductID > 1).Where(q => q.ProductID < 10);
+            int count1 = q1.Count();
+        }
+
+
+#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
+        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTest+Northwind1+CustomerDerivedClass' is not mapped as a Table.
+        [Explicit]
+#endif
+        [Test]
+        public void D12_SelectDerivedClass()
+        {
+            Northwind dbo = CreateDB();
+            Northwind1 db = new Northwind1(dbo.Connection);
+
+            var derivedCustomer = (from c in db.ChildCustomers
+                                   where c.City == "London"
+                                   select c).First();
+            Assert.IsTrue(derivedCustomer.City == "London");
+        }
+
+        public class Northwind1 : Northwind
+        {
+            public Northwind1(System.Data.IDbConnection connection)
+                : base(connection)
+            { }
+
+            public class CustomerDerivedClass : Customer { }
+            public class CustomerDerivedClass2 : CustomerDerivedClass { }
+
+            public DataLinq.Table<CustomerDerivedClass> ChildCustomers
+            {
+                get { return base.GetTable<CustomerDerivedClass>(); }
+            }
+        }
+
+
+        [Test(Description = "Calls ExecuteQuery<> to store result into object type property")]
+        // note: for PostgreSQL requires database with lowercase names, NorthwindReqular.SQL
+        public void D13_ExecuteQueryObjectProperty()
+        {
+            Northwind db = CreateDB();
+
+            var res = db.ExecuteQuery<Chai>(@"SELECT [ProductID] AS ChaiId FROM [Products] WHERE
+              [ProductName] ='Chai'").Single();
+            Assert.AreEqual(1, res.ChaiId);
+        }
+
+        class Chai
+        {
+            internal int ChaiId;
+        }
+
+        [Test]
+        public void D14_ProjectedProductList()
+        {
+            Northwind db = CreateDB();
+
+            var query = from pr in db.Products
+                        select new
+                        {
+                            pr.ProductID,
+                            pr.ProductName,
+                            pr.Supplier,         // exception!
+                            pr.UnitPrice,        // exception!
+                            pr.UnitsInStock,
+                            pr.UnitsOnOrder
+                        };
+            //WARNING - as of 2008Apr, we return Suppliers without blowing up, but they need to be live
+            var list = query.ToList();
+            Assert.IsTrue(list.Count > 0);
+            foreach (var item in list)
+            {
+                Assert.IsTrue(item.Supplier != null);
+            }
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
+        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTest+NorthwindDupl+CustomerDerivedClass' is not mapped as a Table.
+        [Explicit]
+#endif
+        [Test]
+        public void D15_DuplicateProperty()
+        {
+            Northwind dbo = CreateDB();
+            NorthwindDupl db = new NorthwindDupl(dbo.Connection);
+            var derivedCustomer = (from c in db.ChildCustomers
+                                   where c.City == "London"
+                                   select c).First();
+            Assert.IsTrue(derivedCustomer.City == "London");
+        }
+
+        public class NorthwindDupl : Northwind
+        {
+            public NorthwindDupl(System.Data.IDbConnection connection)
+                : base(connection)
+            { }
+
+            public class CustomerDerivedClass : Customer
+            {
+                private string city;
+                [Column(Storage = "city", Name = "city")]
+                public new string City
+                {
+                    get
+                    {
+                        return city;
+                    }
+                    set
+                    {
+                        if (value != city)
+                        {
+                            city = value;
+                        }
+                    }
+                }
+            }
+
+            public DataLinq.Table<CustomerDerivedClass> ChildCustomers
+            {
+                get { return base.GetTable<CustomerDerivedClass>(); }
+            }
+        }
+
+        /// <summary>
+        /// DbLinq must use field and should not look to setter.
+        /// </summary>
+        // PC: is this specified somewhere?
+        [Test]
+        public void D16_CustomerWithoutSetter()
+        {
+            Assert.Ignore("See if this is specified");
+            Northwind dbo = CreateDB();
+            NorthwindAbstractBaseClass db = new NorthwindAbstractBaseClass(dbo.Connection);
+            var Customer = (from c in db.ChildCustomers
+                            where c.City == "London"
+                            select c).First();
+            Assert.IsTrue(Customer.City == "London");
+        }
+
+
+        abstract class AbstractCustomer
+        {
+            public abstract string City { get; }
+        }
+
+        class NorthwindAbstractBaseClass : Northwind
+        {
+            public NorthwindAbstractBaseClass(System.Data.IDbConnection connection)
+                : base(connection) { }
+
+            [Table(Name = "customers")]
+            public class Customer : AbstractCustomer
+            {
+                string city;
+                [Column(Storage = "city", Name = "city")]
+                public override string City
+                {
+                    get
+                    {
+                        return city;
+                    }
+                }
+            }
+
+            [Table(Name = "customers")]
+            public class Customer2 : Customer { }
+
+            public DataLinq.Table<Customer2> ChildCustomers
+            {
+                get { return base.GetTable<Customer2>(); }
+            }
+        }
+
+
+        #endregion
+
+        [Test]
+        public void SqlInjectionAttack()
+        {
+            var db = CreateDB();
+            var q = db.Customers.Where(c => c.ContactName == "'; DROP TABLE DoesNotExist; --");
+            Assert.AreEqual(0, q.Count());
+        }
+              
+#if POSTGRES || MSSQL
+        [Test]
+        public void Storage01()
+        {
+            var db = CreateDB();
+            var q = db.NoStorageCategories.Where(c => c.CategoryID == 1);
+            var r = q.First();
+            Assert.AreEqual(1, q.Count());
+            Assert.AreEqual(1, r.CategoryID);
+            Assert.IsTrue(r.propertyInvoked_CategoryName);     
+            Assert.IsFalse(r.propertyInvoked_Description);     
+        }
+#endif    
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_AllTypes_MySql.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_AllTypes_MySql.cs
@@ -1,165 +1,165 @@
-﻿#define DbLinqGuidTest
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Globalization;
-using NUnit.Framework;
-using AllTypesExample;
-
-
-namespace Test_NUnit_MySql
-{
-
-    /// <summary>
-    /// this test will exercise reading of columns of all MySQL types 
-    /// (such as decimal, decimal?, DateTime? etc)
-    /// </summary>
-    [TestFixture]
-    public class ReadTest_AllTypes
-    {
-        public AllTypes CreateDB()
-        {
-            string DbServer = Environment.GetEnvironmentVariable("DbLinqServer") ?? "localhost";
-            string connStr = string.Format("server={0};user id=LinqUser; password=linq2; database=AllTypes", DbServer);
-
-            //return CreateDB(System.Data.ConnectionState.Closed);
-            AllTypes db = new AllTypes(new MySql.Data.MySqlClient.MySqlConnection(connStr));
-
-            return db;
-        }
-
-        [Test]
-        public void AT1_SelectAllIntTypes()
-        {
-            AllTypes db = CreateDB();
-
-            var q = from p in db.AllIntTypes select p;
-            int count = q.ToList().Count;
-            Assert.IsTrue(count > 0, "Expected some entries in AllIntTypes, got none");
-        }
-
-        [Test]
-        public void AT2_SelectAllFloatTypes()
-        {
-            AllTypes db = CreateDB();
-
-            var q = from p in db.FloatTypes select p;
-            int count = q.ToList().Count;
-            Assert.IsTrue(count > 0, "Expected some entries in FloatTypes, got none");
-        }
-
-        [Test]
-        public void AT2_SelectOtherTypes()
-        {
-            AllTypes db = CreateDB();
-
-            var q = from p in db.OtherTypes select p.DateTimeN;
-            int count = q.ToList().Count;
-            Assert.IsTrue(count > 0, "Expected some entries in AllTypes, got none");
-        }
-
-        [Test]
-        public void AT3_SelectDecimalN()
-        {
-            AllTypes db = CreateDB();
-
-            var q = from p in db.FloatTypes select p.DecimalN;
-            int count = q.ToList().Count;
-            Assert.IsTrue(count > 0, "Expected some entries in AllTypes, got none");
-        }
-
-#if DBLINQ_ENUMTEST
-        [Test]
-        public void AT4_SelectEnum()
-        {
-            AllTypes db = CreateDB();
-
-            var q = from p in db.Allinttypes select p.DbLinq_EnumTest;
-            int count = q.ToList().Count;
-            Assert.IsTrue(count > 0, "Expected some enums in AllTypes, got none");
-        }
-
-        [Test]
-        public void AT5_SelectEnum_()
-        {
-            AllTypes db = CreateDB();
-
-            var q = from p in db.Allinttypes select p.DbLinq_EnumTest;
-            string sql_string = db.GetQueryText(q);
-
-            DbLinq_EnumTest enumValue = q.First();
-            Assert.IsTrue(enumValue > 0, "Expected enum value>0 in AllTypes, got enumValue=" + enumValue);
-        }
-#endif
-
-        [Test]
-        public void AT6_ReadBlob()
-        {
-            //DbLinq could not read byte[]
-            //This test was contributed by Anatoli Koutsevol 
-
-            Console.WriteLine("from p in db.Othertypes orderby p.DateTime_ select p.blob;");
-            AllTypes db = CreateDB();
-
-            var result = from p in db.OtherTypes orderby p.DateTime select p.Blob;
-            foreach (var blob in result)
-            {
-                Console.WriteLine("blob[{0}]", blob.Length);
-            }
-            Console.WriteLine("Press enter to continue.");
-        }
-
-#if DbLinqGuidTest
-
-        [Test]
-        public void AT7_ReadGuidFromVarchar()
-        {
-            Console.WriteLine("from p in db.Othertypes orderby p.DateTime_ select p.blob;");
-            AllTypes db = CreateDB();
-
-            var query = from p in db.OtherTypes orderby p.DateTime select p.DbLinqGuidTest;
-            Guid? guid = query.First();
-            Assert.IsTrue(guid != null);
-        }
-
-        [Test]
-        public void AT8_ReadGuidFromVarbinary()
-        {
-            Console.WriteLine("from p in db.Othertypes orderby p.DateTime_ select p.blob;");
-            AllTypes db = CreateDB();
-
-            var query = from p in db.OtherTypes orderby p.DateTime select p.DbLinqGuidTest2;
-            Guid guid = query.First();
-            string guidStr = guid.ToString();
-            Assert.IsTrue(guidStr == "{0101}");
-        }
-#endif
-        [Test]
-        public void Test_Unknown()
-        {
-            AllTypes db = CreateDB();
-
-            var result = from p in db.OtherTypes
-                         orderby p.DateTime
-                         select
-                             p.Blob;
-            foreach (var blob in result)
-            {
-                Console.WriteLine("blob[{0}]", blob.Length);
-            }
-        }
-
-        [Test]
-        public void Test_Select_DateTime_ParseExact()
-        {
-            AllTypes db = CreateDB();
-            var result = from p in db.ParsingData
-                         select DateTime.ParseExact(p.DateTimeStr, "yyyy.MM.dd", CultureInfo.InvariantCulture);
-            DateTime dt1 = result.First();
-            Assert.IsTrue(dt1.Year == 2008);
-        }
-
-    }
-}
+﻿#define DbLinqGuidTest
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Globalization;
+using NUnit.Framework;
+using AllTypesExample;
+
+
+namespace Test_NUnit_MySql
+{
+
+    /// <summary>
+    /// this test will exercise reading of columns of all MySQL types 
+    /// (such as decimal, decimal?, DateTime? etc)
+    /// </summary>
+    [TestFixture]
+    public class ReadTest_AllTypes
+    {
+        public AllTypes CreateDB()
+        {
+            string DbServer = Environment.GetEnvironmentVariable("DbLinqServer") ?? "localhost";
+            string connStr = string.Format("server={0};user id=LinqUser; password=linq2; database=AllTypes", DbServer);
+
+            //return CreateDB(System.Data.ConnectionState.Closed);
+            AllTypes db = new AllTypes(new MySql.Data.MySqlClient.MySqlConnection(connStr));
+
+            return db;
+        }
+
+        [Test]
+        public void AT1_SelectAllIntTypes()
+        {
+            AllTypes db = CreateDB();
+
+            var q = from p in db.AllIntTypes select p;
+            int count = q.ToList().Count;
+            Assert.IsTrue(count > 0, "Expected some entries in AllIntTypes, got none");
+        }
+
+        [Test]
+        public void AT2_SelectAllFloatTypes()
+        {
+            AllTypes db = CreateDB();
+
+            var q = from p in db.FloatTypes select p;
+            int count = q.ToList().Count;
+            Assert.IsTrue(count > 0, "Expected some entries in FloatTypes, got none");
+        }
+
+        [Test]
+        public void AT2_SelectOtherTypes()
+        {
+            AllTypes db = CreateDB();
+
+            var q = from p in db.OtherTypes select p.DateTimeN;
+            int count = q.ToList().Count;
+            Assert.IsTrue(count > 0, "Expected some entries in AllTypes, got none");
+        }
+
+        [Test]
+        public void AT3_SelectDecimalN()
+        {
+            AllTypes db = CreateDB();
+
+            var q = from p in db.FloatTypes select p.DecimalN;
+            int count = q.ToList().Count;
+            Assert.IsTrue(count > 0, "Expected some entries in AllTypes, got none");
+        }
+
+#if DBLINQ_ENUMTEST
+        [Test]
+        public void AT4_SelectEnum()
+        {
+            AllTypes db = CreateDB();
+
+            var q = from p in db.Allinttypes select p.DbLinq_EnumTest;
+            int count = q.ToList().Count;
+            Assert.IsTrue(count > 0, "Expected some enums in AllTypes, got none");
+        }
+
+        [Test]
+        public void AT5_SelectEnum_()
+        {
+            AllTypes db = CreateDB();
+
+            var q = from p in db.Allinttypes select p.DbLinq_EnumTest;
+            string sql_string = db.GetQueryText(q);
+
+            DbLinq_EnumTest enumValue = q.First();
+            Assert.IsTrue(enumValue > 0, "Expected enum value>0 in AllTypes, got enumValue=" + enumValue);
+        }
+#endif
+
+        [Test]
+        public void AT6_ReadBlob()
+        {
+            //DbLinq could not read byte[]
+            //This test was contributed by Anatoli Koutsevol 
+
+            Console.WriteLine("from p in db.Othertypes orderby p.DateTime_ select p.blob;");
+            AllTypes db = CreateDB();
+
+            var result = from p in db.OtherTypes orderby p.DateTime select p.Blob;
+            foreach (var blob in result)
+            {
+                Console.WriteLine("blob[{0}]", blob.Length);
+            }
+            Console.WriteLine("Press enter to continue.");
+        }
+
+#if DbLinqGuidTest
+
+        [Test]
+        public void AT7_ReadGuidFromVarchar()
+        {
+            Console.WriteLine("from p in db.Othertypes orderby p.DateTime_ select p.blob;");
+            AllTypes db = CreateDB();
+
+            var query = from p in db.OtherTypes orderby p.DateTime select p.DbLinqGuidTest;
+            Guid? guid = query.First();
+            Assert.IsTrue(guid != null);
+        }
+
+        [Test]
+        public void AT8_ReadGuidFromVarbinary()
+        {
+            Console.WriteLine("from p in db.Othertypes orderby p.DateTime_ select p.blob;");
+            AllTypes db = CreateDB();
+
+            var query = from p in db.OtherTypes orderby p.DateTime select p.DbLinqGuidTest2;
+            Guid guid = query.First();
+            string guidStr = guid.ToString();
+            Assert.IsTrue(guidStr == "{0101}");
+        }
+#endif
+        [Test]
+        public void Test_Unknown()
+        {
+            AllTypes db = CreateDB();
+
+            var result = from p in db.OtherTypes
+                         orderby p.DateTime
+                         select
+                             p.Blob;
+            foreach (var blob in result)
+            {
+                Console.WriteLine("blob[{0}]", blob.Length);
+            }
+        }
+
+        [Test]
+        public void Test_Select_DateTime_ParseExact()
+        {
+            AllTypes db = CreateDB();
+            var result = from p in db.ParsingData
+                         select DateTime.ParseExact(p.DateTimeStr, "yyyy.MM.dd", CultureInfo.InvariantCulture);
+            DateTime dt1 = result.First();
+            Assert.IsTrue(dt1.Year == 2008);
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_Complex.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_Complex.cs
@@ -1,633 +1,633 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data.Linq;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-#if ORACLE
-using Id = System.Decimal;
-#else
-using Id = System.Int32;
-#endif
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTest_Complex : TestBase
-    {
-        Northwind db;
-
-        public ReadTest_Complex()
-        {
-            db = CreateDB();
-
-        }
-
-        #region 'D' tests exercise 'local object constants'
-        [Test]
-        public void D0_SelectPensByLocalProperty()
-        {
-            //reported by Andrus.
-            //http://groups.google.com/group/dblinq/browse_thread/thread/c25527cbed93d265
-
-            Northwind db = CreateDB();
-
-            Product localProduct = new Product { ProductName = "Chai" };
-            var q = from p in db.Products where p.ProductName == localProduct.ProductName select p;
-
-            List<Product> products = q.ToList();
-            int productCount = products.Count;
-            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
-        }
-
-        [Test]
-        public void D1_SelectPensByLocalProperty()
-        {
-            Northwind db = CreateDB();
-            var pen = new { Name = "Chai" };
-            var q = from p in db.Products where p.ProductName == pen.Name select p;
-
-            List<Product> products = q.ToList();
-            int productCount = products.Count;
-            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
-        }
-
-        [Test]
-        public void D2_SelectProductByLocalPropertyAndConstant()
-        {
-
-            Northwind db = CreateDB();
-            string product = "Carnarvon Tigers";
-            var q = from p in db.Products
-                    where p.ProductName == product &&
-                        p.QuantityPerUnit.StartsWith("16")
-                    select p;
-            List<Product> products = q.ToList();
-            int productCount = products.Count;
-            Assert.AreEqual(1, productCount, "Expected one product, got count=" + productCount);
-        }
-
-        [Test]
-        public void D3_ArrayContains()
-        {
-            Northwind db = CreateDB();
-
-            var data = from p in db.Customers
-                       where new string[] { "ALFKI", "WARTH" }.Contains(p.CustomerID)
-                       select new { p.CustomerID, p.Country };
-
-            var dataList = data.ToList();
-            //Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
-        }
-        #endregion
-
-        #region Tests 'F' work on aggregation
-        [Test]
-        public void F1_ProductCount()
-        {
-            var q = from p in db.Products select p;
-            int productCount = q.Count();
-            Assert.Greater(productCount, 0, "Expected non-zero product count");
-        }
-
-        [Test]
-        public void F2_ProductCount_Projected()
-        {
-            var q = from p in db.Products select p.ProductID;
-            int productCount = q.Count();
-            Assert.Greater(productCount, 0, "Expected non-zero product count");
-            Console.WriteLine();
-        }
-        [Test]
-        public void F2_ProductCount_Clause()
-        {
-            var q = from p in db.Products select p.ProductID;
-            int productCount = q.Count(i => i < 3);
-            Assert.Greater(productCount, 0, "Expected non-zero product count");
-            Assert.IsTrue(productCount < 4, "Expected product count < 3");
-        }
-
-        [Test]
-        public void F3_MaxProductId()
-        {
-            var q = from p in db.Products select p.ProductID;
-            var maxID = q.Max();
-            Assert.Greater(maxID, 0, "Expected non-zero product count");
-        }
-
-        [Test]
-        public void F4_MinProductId()
-        {
-            var q = from p in db.Products select p.ProductID;
-            var minID = q.Min();
-            Assert.Greater(minID, 0, "Expected non-zero product count");
-        }
-
-#if !ORACLE // picrap: this test causes an internal buffer overflow when marshaling with oracle win32 driver
-
-        [Test]
-        public void F5_AvgProductId()
-        {
-            var q = from p in db.Products select p.ProductID;
-            double avg = q.Average();
-            Assert.Greater(avg, 0, "Expected non-zero productID average");
-        }
-
-#endif
-
-        [Test]
-        public void F7_ExplicitJoin()
-        {
-            //a nice and light nonsense join:
-            //bring in rows such as {Chai,AIRBU}
-            var q =
-                from p in db.Products
-                join c in db.Categories on p.ProductID equals c.CategoryID
-                select new { p.ProductName, c.CategoryName };
-
-            int rowCount = 0;
-            foreach (var v in q)
-            {
-                rowCount++;
-                Assert.IsTrue(v.ProductName != null);
-                Assert.IsTrue(v.CategoryName != null);
-            }
-            Assert.IsTrue(rowCount > 2);
-        }
-
-        [Test]
-        public void F7b_ExplicitJoin()
-        {
-            var q =
-                from c in db.Customers
-                join o in db.Orders on c.CustomerID equals o.CustomerID
-                where c.City == "London"
-                select o;
-        }
-
-#if INCLUDING_CLAUSE
-        //Including() clause discontinued in Studio Orcas?
-        [Test]
-        public void F8_IncludingClause()
-        {
-            var q = (
-	            from c in db.Customers
-	            where c.City == "London"
-	            select c)
-	            .Including(c => c.Orders);
-        }
-
-        [Test]
-        public void F8_Including_Nested()
-        {
-            var q = (
-	            from c in db.Customers
-	            where c.City == "London"
-	            select c)
-	            .Including(c => c.Orders.Including(o => o.OrderDetails));
-        }
-#endif
-
-        [Test]
-        public void F9_Project_AndContinue()
-        {
-            var q =
-                from c in db.Customers
-                where c.City == "London"
-                select new { Name = c.ContactName, c.Phone } into x
-                orderby x.Name
-                select x;
-        }
-
-        [Test]
-        public void F10_DistinctCity()
-        {
-            var q1 = from c in db.Customers select c.City;
-            var q2 = q1.Distinct();
-
-            int numLondon = 0;
-            foreach (string city in q2)
-            {
-                if (city == "London") { numLondon++; }
-            }
-            Assert.AreEqual(1, numLondon, "Expected to see London once");
-        }
-
-        [Test]
-        public void F11_ConcatString()
-        {
-            var q4 = from p in db.Products select p.ProductName + p.ProductID;
-            //var q4 = from p in db.Products select p.ProductID;
-            var q5 = q4.ToList();
-            Assert.Greater(q5.Count, 2, "Expected to see some concat strings");
-            foreach (string s0 in q5)
-            {
-                bool startWithLetter = Char.IsLetter(s0[0]);
-                bool endsWithDigit = Char.IsDigit(s0[s0.Length - 1]);
-                Assert.IsTrue(startWithLetter && endsWithDigit, "String must start with letter and end with digit");
-            }
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        public void F12_ConcatString_2()
-        {
-            var q4 = from p in db.Products
-                     where (p.ProductName + p.ProductID).Contains("e")
-                     select p.ProductName+p.ProductID;
-            //var q4 = from p in db.Products select p.ProductID;
-            //var q5 = q4.ToList();
-            Assert.Greater( q4.Count(), 2, "Expected to see some concat strings");
-            foreach(string s0 in q4)
-            {
-                bool startWithLetter = Char.IsLetter(s0[0]);
-                bool endsWithDigit = Char.IsDigit(s0[s0.Length-1]);
-                Assert.IsTrue(startWithLetter && endsWithDigit, "String must start with letter and end with digit");
-            }
-        }
-        #endregion
-
-        const string obsoleteError = @"Since beta2 in Linq2Sql to project a new entity (ie: select new Order(3)) is forbidden for coherence reasons, so this tests doesn't mimic the Linq2Sql behavior and it is obsolete and should be modified. If you apply such test cases to Linq2Sql you'll get Test_NUnit_MsSql_Strict.DynamicLinqTest.DL5_NestedObjectSelect:
-        System.NotSupportedException : Explicit construction of entity type 'MsNorthwind.XX' in query is not allowed.\n\nMore Info in: http://linqinaction.net/blogs/roller/archive/2007/11/27/explicit-construction-of-entity-type-in-query-is-not-allowed.aspx";
-        [Test]
-        public void F13_NewCustomer()
-        {
-            Assert.Ignore(obsoleteError);
-            Northwind db = CreateDB();
-            IQueryable<Customer> q = (from c in db.Customers
-                                      select
-                                      new Customer
-                                      {
-                                          CustomerID = c.CustomerID
-                                      });
-            var list = q.ToList();
-            Assert.Greater(list.Count(), 0, "Expected list");
-            //Assert.Greater(list.Count(), 0, "Expected list");
-            Assert.Ignore("test passed but: theoretically constructions of entity types are not allowed");
-        }
-
-        [Test]
-        public void F14_NewCustomer_Order()
-        {
-            Assert.Ignore(obsoleteError);
-            Northwind db = CreateDB();
-            IQueryable<Customer> q = (from c in db.Customers
-                                      select
-                                      new Customer
-                                      {
-                                          CustomerID = c.CustomerID
-                                      });
-            //this OrderBy clause messes up the SQL statement
-            var q2 = q.OrderBy(c => c.CustomerID);
-            var list = q2.ToList();
-            Assert.Greater(list.Count(), 0, "Expected list");
-            //Assert.Greater(list.Count(), 0, "Expected list");
-        }
-
-
-        [Test]
-        public void F15_OrderByCoalesce()
-        {
-            Northwind db = CreateDB();
-            var q = from c in db.Customers
-                    orderby c.ContactName ?? ""
-                    select c;
-            var list = q.ToList();
-            Assert.Greater(list.Count(), 0, "Expected list");
-        }
-
-        [Test(Description = "Non-dynamic version of DL5_NestedObjectSelect")]
-        public void F16_NestedObjectSelect()
-        {
-            Assert.Ignore(obsoleteError);
-            Northwind db = CreateDB();
-            var q = from o in db.Orders
-                    select new Order() { OrderID = o.OrderID, Customer = new Customer() { ContactName = o.Customer.ContactName } };
-            var list = q.ToList();
-        }
-
-        [Test(Description = "Non-dynamic version of DL5_NestedObjectSelect")]
-        public void F17_NestedObjectSelect_Ver2()
-        {
-            Assert.Ignore(obsoleteError);
-            Northwind db = CreateDB();
-            var query = from order in db.Orders
-                        select new Order
-                        {
-                            OrderID = order.OrderID,
-                            Customer = new Customer
-                            {
-                                ContactName = order.Customer.ContactName,
-                                ContactTitle = order.Customer.ContactTitle
-                            }
-                        };
-            var list = query.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test(Description = "byte[] test")]
-        public void F18_ByteArrayAssignmentTest()
-        {
-            var db = CreateDB();
-
-            var picture = new byte[] { 1, 2, 3, 4 };
-
-            var nc = new Category { CategoryName = "test", Picture = picture };
-            db.Categories.InsertOnSubmit(nc);
-            db.SubmitChanges();
-
-            var q = from c in db.Categories 
-                    where c.CategoryName == "test"
-                    select new { c.Picture };
-            var l = q.ToList();
-            Assert.IsTrue(l.Count > 0);
-            Assert.IsTrue(picture.SequenceEqual(l[0].Picture.ToArray()));
-
-            db.Categories.DeleteOnSubmit(nc);
-            db.SubmitChanges();
-        }
-
-
-        [Test]
-        public void F19_ExceptWithCount_ViaToList()
-        {
-            var db = CreateDB();
-
-            var toExclude = from t in db.GetTable<Territory>()
-                            where t.TerritoryDescription.StartsWith("A")
-                            select t;
-            var universe = from t in db.GetTable<Territory>() select t;
-            var toTake = universe.Except(toExclude);
-            
-            int toListCount = toTake.ToList().Count;
-            Assert.AreEqual(51, toListCount);
-        }
-
-        [Test]
-        public void F20_ExceptWithCount()
-        {
-            var db = CreateDB();
-
-            var toExclude = from t in db.GetTable<Territory>()
-                            where t.TerritoryDescription.StartsWith("A")
-                            select t;
-            var universe = from t in db.GetTable<Territory>() select t;
-            var toTake = universe.Except(toExclude).Except(db.Territories.Where(terr => terr.TerritoryDescription.StartsWith("B")));
-
-            int toTakeCount = toTake.Count();
-            Assert.AreEqual(44, toTakeCount);
-        }
-
-#if !DEBUG && (SQLITE)
-        [Explicit]
-#endif
-        [Test]
-        public void F21_CountNestedExcepts()
-        {
-            var db = CreateDB();
-
-            var toExclude1 = from t in db.GetTable<Territory>()
-                            where t.TerritoryDescription.StartsWith("A")
-                            select t;
-            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
-
-            var universe = from t in db.GetTable<Territory>() select t;
-
-            var toTake = universe.Except(toExclude2);
-
-            int toTakeCount = toTake.Count();
-            Assert.AreEqual(52, toTakeCount);
-        }
-
-#if !DEBUG && (SQLITE)
-        [Explicit]
-#endif
-        [Test]
-        public void F22_AnyNestedExcepts()
-        {
-            var db = CreateDB();
-
-            var toExclude1 = from t in db.GetTable<Territory>()
-                             where t.TerritoryDescription.StartsWith("A")
-                             select t;
-            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
-
-            var universe = from t in db.GetTable<Territory>() select t;
-
-            var toTake = universe.Except(toExclude2);
-
-            Assert.IsTrue(toTake.Any());
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void F23_AnyNestedExcepts_WithParameter()
-        {
-            var db = CreateDB();
-
-            var toExclude1 = from t in db.GetTable<Territory>()
-                             where t.TerritoryDescription.StartsWith("A")
-                             select t;
-            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
-
-            var universe = from t in db.GetTable<Territory>() select t;
-
-            var toTake = universe.Except(toExclude2);
-
-            Assert.IsTrue(toTake.Any(t => t.TerritoryDescription.Contains("i")));
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void F24_CountNestedExcepts_WithParameter()
-        {
-            var db = CreateDB();
-
-            var toExclude1 = from t in db.GetTable<Territory>()
-                             where t.TerritoryDescription.StartsWith("A")
-                             select t;
-            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
-
-            var universe = from t in db.GetTable<Territory>() select t;
-
-            var toTake = universe.Except(toExclude2);
-
-            int toTakeCount = toTake.Count(t => t.TerritoryDescription.Contains("o"));
-            Assert.AreEqual(34, toTakeCount);
-        }
-
-        [Test]
-        public void F25_DistinctUnion()
-        {
-            var db = CreateDB();
-
-            var toInclude1 = from t in db.GetTable<Territory>()
-                             where t.TerritoryDescription.StartsWith("A")
-                             select t;
-            var toInclude2 = toInclude1.Concat(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
-
-            var toTake = toInclude2.Distinct();
-
-            int count = toTake.ToList().Count;
-
-            Assert.AreEqual(27, count);
-        }
-
-        [Test]
-        public void F26_DistinctUnion_Count()
-        {
-            var db = CreateDB();
-
-            var toInclude1 = from t in db.GetTable<Territory>()
-                             where t.TerritoryDescription.StartsWith("A")
-                             select t;
-            var toInclude2 = toInclude1.Concat(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
-
-            var toTake = toInclude2.Distinct();
-
-            int count = toTake.Count();
-
-            Assert.AreEqual(27, count);
-        }
-
-#if MSSQL || L2SQL
-
-#if L2SQL
-        [Explicit]
-#endif
-        [Test]
-        public void F27_SelectEmployee_Identifier()
-        {
-            var db = CreateDB();
-            var q = from e in db.GetTable<EmployeeWithStringIdentifier>() where e.Identifier == "7" select e;
-            EmployeeWithStringIdentifier em = q.Single();
-
-            Assert.AreEqual("King", em.LastName);
-        }
-
-#endif
-
-        /// <summary>
-        /// the following three tests are from Jahmani's page
-        /// LinqToSQL: Comprehensive Support for SQLite, MS Access, SQServer2000/2005
-        /// http://www.codeproject.com/KB/linq/linqToSql_7.aspx?msg=2428251
-        /// </summary>
-        [Test(Description = "list of customers who have place orders that have all been shipped to the customers city.")]
-        public void O1_OperatorAll()
-        {
-            var q = from c in db.Customers
-                    where (from o in c.Orders
-                           select o).All(o => o.ShipCity == c.City)
-                    select new { c.CustomerID, c.ContactName };
-            var list = q.ToList();
-        }
-
-        [Test(Description = "list of customers who have placed no orders")]
-        public void O2_OperatorAny()
-        {
-            //SELECT  t0.CustomerID, t0.ContactName
-            //FROM Customers AS t0
-            //WHERE  NOT  (
-            //(    SELECT  COUNT(*) 
-            //    FROM Orders AS t1
-            //    WHERE (t1.CustomerID = t0.CustomerID)
-            //) > 0
-            //)
-            var q = from customer in db.Customers
-                    where !customer.Orders.Any()
-                    select new { customer.CustomerID, customer.ContactName };
-            //var q = from customer in db.Customers
-            //        where customer.Orders.Count() == 0
-            //        select new { customer.CustomerID, customer.ContactName };
-            var list = q.ToList();
-        }
-
-        [Test(Description = "provide a list of customers and employees who live in London.")]
-        public void O3_OperatorUnion()
-        {
-            var q = (from c in db.Customers.Where(d => d.City == "London")
-                     select new { ContactName = c.ContactName })
-              .Union(from e in db.Employees.Where(f => f.City == "London")
-                     select new { ContactName = e.LastName });
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0, "Expected some customers and employees from London");
-        }
-
-        [Test]
-        public void O4_OperatorContains()
-        {
-            var ids = new Id[] { 1, 2, 3 };
-            Northwind db = CreateDB();
-
-            //var q = from p in db.Products select p.ProductID;
-            //int productCount = q.Count();
-
-            var products = from p in db.Products
-                           where ids.Contains((Id) p.ProductID)
-                           select p;
-
-            Assert.AreEqual(3, products.Count());
-
-        }
-
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data.Linq;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+#if ORACLE
+using Id = System.Decimal;
+#else
+using Id = System.Int32;
+#endif
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTest_Complex : TestBase
+    {
+        Northwind db;
+
+        public ReadTest_Complex()
+        {
+            db = CreateDB();
+
+        }
+
+        #region 'D' tests exercise 'local object constants'
+        [Test]
+        public void D0_SelectPensByLocalProperty()
+        {
+            //reported by Andrus.
+            //http://groups.google.com/group/dblinq/browse_thread/thread/c25527cbed93d265
+
+            Northwind db = CreateDB();
+
+            Product localProduct = new Product { ProductName = "Chai" };
+            var q = from p in db.Products where p.ProductName == localProduct.ProductName select p;
+
+            List<Product> products = q.ToList();
+            int productCount = products.Count;
+            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
+        }
+
+        [Test]
+        public void D1_SelectPensByLocalProperty()
+        {
+            Northwind db = CreateDB();
+            var pen = new { Name = "Chai" };
+            var q = from p in db.Products where p.ProductName == pen.Name select p;
+
+            List<Product> products = q.ToList();
+            int productCount = products.Count;
+            Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
+        }
+
+        [Test]
+        public void D2_SelectProductByLocalPropertyAndConstant()
+        {
+
+            Northwind db = CreateDB();
+            string product = "Carnarvon Tigers";
+            var q = from p in db.Products
+                    where p.ProductName == product &&
+                        p.QuantityPerUnit.StartsWith("16")
+                    select p;
+            List<Product> products = q.ToList();
+            int productCount = products.Count;
+            Assert.AreEqual(1, productCount, "Expected one product, got count=" + productCount);
+        }
+
+        [Test]
+        public void D3_ArrayContains()
+        {
+            Northwind db = CreateDB();
+
+            var data = from p in db.Customers
+                       where new string[] { "ALFKI", "WARTH" }.Contains(p.CustomerID)
+                       select new { p.CustomerID, p.Country };
+
+            var dataList = data.ToList();
+            //Assert.AreEqual(productCount, 1, "Expected one pen, got count=" + productCount);
+        }
+        #endregion
+
+        #region Tests 'F' work on aggregation
+        [Test]
+        public void F1_ProductCount()
+        {
+            var q = from p in db.Products select p;
+            int productCount = q.Count();
+            Assert.Greater(productCount, 0, "Expected non-zero product count");
+        }
+
+        [Test]
+        public void F2_ProductCount_Projected()
+        {
+            var q = from p in db.Products select p.ProductID;
+            int productCount = q.Count();
+            Assert.Greater(productCount, 0, "Expected non-zero product count");
+            Console.WriteLine();
+        }
+        [Test]
+        public void F2_ProductCount_Clause()
+        {
+            var q = from p in db.Products select p.ProductID;
+            int productCount = q.Count(i => i < 3);
+            Assert.Greater(productCount, 0, "Expected non-zero product count");
+            Assert.IsTrue(productCount < 4, "Expected product count < 3");
+        }
+
+        [Test]
+        public void F3_MaxProductId()
+        {
+            var q = from p in db.Products select p.ProductID;
+            var maxID = q.Max();
+            Assert.Greater(maxID, 0, "Expected non-zero product count");
+        }
+
+        [Test]
+        public void F4_MinProductId()
+        {
+            var q = from p in db.Products select p.ProductID;
+            var minID = q.Min();
+            Assert.Greater(minID, 0, "Expected non-zero product count");
+        }
+
+#if !ORACLE // picrap: this test causes an internal buffer overflow when marshaling with oracle win32 driver
+
+        [Test]
+        public void F5_AvgProductId()
+        {
+            var q = from p in db.Products select p.ProductID;
+            double avg = q.Average();
+            Assert.Greater(avg, 0, "Expected non-zero productID average");
+        }
+
+#endif
+
+        [Test]
+        public void F7_ExplicitJoin()
+        {
+            //a nice and light nonsense join:
+            //bring in rows such as {Chai,AIRBU}
+            var q =
+                from p in db.Products
+                join c in db.Categories on p.ProductID equals c.CategoryID
+                select new { p.ProductName, c.CategoryName };
+
+            int rowCount = 0;
+            foreach (var v in q)
+            {
+                rowCount++;
+                Assert.IsTrue(v.ProductName != null);
+                Assert.IsTrue(v.CategoryName != null);
+            }
+            Assert.IsTrue(rowCount > 2);
+        }
+
+        [Test]
+        public void F7b_ExplicitJoin()
+        {
+            var q =
+                from c in db.Customers
+                join o in db.Orders on c.CustomerID equals o.CustomerID
+                where c.City == "London"
+                select o;
+        }
+
+#if INCLUDING_CLAUSE
+        //Including() clause discontinued in Studio Orcas?
+        [Test]
+        public void F8_IncludingClause()
+        {
+            var q = (
+	            from c in db.Customers
+	            where c.City == "London"
+	            select c)
+	            .Including(c => c.Orders);
+        }
+
+        [Test]
+        public void F8_Including_Nested()
+        {
+            var q = (
+	            from c in db.Customers
+	            where c.City == "London"
+	            select c)
+	            .Including(c => c.Orders.Including(o => o.OrderDetails));
+        }
+#endif
+
+        [Test]
+        public void F9_Project_AndContinue()
+        {
+            var q =
+                from c in db.Customers
+                where c.City == "London"
+                select new { Name = c.ContactName, c.Phone } into x
+                orderby x.Name
+                select x;
+        }
+
+        [Test]
+        public void F10_DistinctCity()
+        {
+            var q1 = from c in db.Customers select c.City;
+            var q2 = q1.Distinct();
+
+            int numLondon = 0;
+            foreach (string city in q2)
+            {
+                if (city == "London") { numLondon++; }
+            }
+            Assert.AreEqual(1, numLondon, "Expected to see London once");
+        }
+
+        [Test]
+        public void F11_ConcatString()
+        {
+            var q4 = from p in db.Products select p.ProductName + p.ProductID;
+            //var q4 = from p in db.Products select p.ProductID;
+            var q5 = q4.ToList();
+            Assert.Greater(q5.Count, 2, "Expected to see some concat strings");
+            foreach (string s0 in q5)
+            {
+                bool startWithLetter = Char.IsLetter(s0[0]);
+                bool endsWithDigit = Char.IsDigit(s0[s0.Length - 1]);
+                Assert.IsTrue(startWithLetter && endsWithDigit, "String must start with letter and end with digit");
+            }
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        public void F12_ConcatString_2()
+        {
+            var q4 = from p in db.Products
+                     where (p.ProductName + p.ProductID).Contains("e")
+                     select p.ProductName+p.ProductID;
+            //var q4 = from p in db.Products select p.ProductID;
+            //var q5 = q4.ToList();
+            Assert.Greater( q4.Count(), 2, "Expected to see some concat strings");
+            foreach(string s0 in q4)
+            {
+                bool startWithLetter = Char.IsLetter(s0[0]);
+                bool endsWithDigit = Char.IsDigit(s0[s0.Length-1]);
+                Assert.IsTrue(startWithLetter && endsWithDigit, "String must start with letter and end with digit");
+            }
+        }
+        #endregion
+
+        const string obsoleteError = @"Since beta2 in Linq2Sql to project a new entity (ie: select new Order(3)) is forbidden for coherence reasons, so this tests doesn't mimic the Linq2Sql behavior and it is obsolete and should be modified. If you apply such test cases to Linq2Sql you'll get Test_NUnit_MsSql_Strict.DynamicLinqTest.DL5_NestedObjectSelect:
+        System.NotSupportedException : Explicit construction of entity type 'MsNorthwind.XX' in query is not allowed.\n\nMore Info in: http://linqinaction.net/blogs/roller/archive/2007/11/27/explicit-construction-of-entity-type-in-query-is-not-allowed.aspx";
+        [Test]
+        public void F13_NewCustomer()
+        {
+            Assert.Ignore(obsoleteError);
+            Northwind db = CreateDB();
+            IQueryable<Customer> q = (from c in db.Customers
+                                      select
+                                      new Customer
+                                      {
+                                          CustomerID = c.CustomerID
+                                      });
+            var list = q.ToList();
+            Assert.Greater(list.Count(), 0, "Expected list");
+            //Assert.Greater(list.Count(), 0, "Expected list");
+            Assert.Ignore("test passed but: theoretically constructions of entity types are not allowed");
+        }
+
+        [Test]
+        public void F14_NewCustomer_Order()
+        {
+            Assert.Ignore(obsoleteError);
+            Northwind db = CreateDB();
+            IQueryable<Customer> q = (from c in db.Customers
+                                      select
+                                      new Customer
+                                      {
+                                          CustomerID = c.CustomerID
+                                      });
+            //this OrderBy clause messes up the SQL statement
+            var q2 = q.OrderBy(c => c.CustomerID);
+            var list = q2.ToList();
+            Assert.Greater(list.Count(), 0, "Expected list");
+            //Assert.Greater(list.Count(), 0, "Expected list");
+        }
+
+
+        [Test]
+        public void F15_OrderByCoalesce()
+        {
+            Northwind db = CreateDB();
+            var q = from c in db.Customers
+                    orderby c.ContactName ?? ""
+                    select c;
+            var list = q.ToList();
+            Assert.Greater(list.Count(), 0, "Expected list");
+        }
+
+        [Test(Description = "Non-dynamic version of DL5_NestedObjectSelect")]
+        public void F16_NestedObjectSelect()
+        {
+            Assert.Ignore(obsoleteError);
+            Northwind db = CreateDB();
+            var q = from o in db.Orders
+                    select new Order() { OrderID = o.OrderID, Customer = new Customer() { ContactName = o.Customer.ContactName } };
+            var list = q.ToList();
+        }
+
+        [Test(Description = "Non-dynamic version of DL5_NestedObjectSelect")]
+        public void F17_NestedObjectSelect_Ver2()
+        {
+            Assert.Ignore(obsoleteError);
+            Northwind db = CreateDB();
+            var query = from order in db.Orders
+                        select new Order
+                        {
+                            OrderID = order.OrderID,
+                            Customer = new Customer
+                            {
+                                ContactName = order.Customer.ContactName,
+                                ContactTitle = order.Customer.ContactTitle
+                            }
+                        };
+            var list = query.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test(Description = "byte[] test")]
+        public void F18_ByteArrayAssignmentTest()
+        {
+            var db = CreateDB();
+
+            var picture = new byte[] { 1, 2, 3, 4 };
+
+            var nc = new Category { CategoryName = "test", Picture = picture };
+            db.Categories.InsertOnSubmit(nc);
+            db.SubmitChanges();
+
+            var q = from c in db.Categories 
+                    where c.CategoryName == "test"
+                    select new { c.Picture };
+            var l = q.ToList();
+            Assert.IsTrue(l.Count > 0);
+            Assert.IsTrue(picture.SequenceEqual(l[0].Picture.ToArray()));
+
+            db.Categories.DeleteOnSubmit(nc);
+            db.SubmitChanges();
+        }
+
+
+        [Test]
+        public void F19_ExceptWithCount_ViaToList()
+        {
+            var db = CreateDB();
+
+            var toExclude = from t in db.GetTable<Territory>()
+                            where t.TerritoryDescription.StartsWith("A")
+                            select t;
+            var universe = from t in db.GetTable<Territory>() select t;
+            var toTake = universe.Except(toExclude);
+            
+            int toListCount = toTake.ToList().Count;
+            Assert.AreEqual(51, toListCount);
+        }
+
+        [Test]
+        public void F20_ExceptWithCount()
+        {
+            var db = CreateDB();
+
+            var toExclude = from t in db.GetTable<Territory>()
+                            where t.TerritoryDescription.StartsWith("A")
+                            select t;
+            var universe = from t in db.GetTable<Territory>() select t;
+            var toTake = universe.Except(toExclude).Except(db.Territories.Where(terr => terr.TerritoryDescription.StartsWith("B")));
+
+            int toTakeCount = toTake.Count();
+            Assert.AreEqual(44, toTakeCount);
+        }
+
+#if !DEBUG && (SQLITE)
+        [Explicit]
+#endif
+        [Test]
+        public void F21_CountNestedExcepts()
+        {
+            var db = CreateDB();
+
+            var toExclude1 = from t in db.GetTable<Territory>()
+                            where t.TerritoryDescription.StartsWith("A")
+                            select t;
+            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
+
+            var universe = from t in db.GetTable<Territory>() select t;
+
+            var toTake = universe.Except(toExclude2);
+
+            int toTakeCount = toTake.Count();
+            Assert.AreEqual(52, toTakeCount);
+        }
+
+#if !DEBUG && (SQLITE)
+        [Explicit]
+#endif
+        [Test]
+        public void F22_AnyNestedExcepts()
+        {
+            var db = CreateDB();
+
+            var toExclude1 = from t in db.GetTable<Territory>()
+                             where t.TerritoryDescription.StartsWith("A")
+                             select t;
+            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
+
+            var universe = from t in db.GetTable<Territory>() select t;
+
+            var toTake = universe.Except(toExclude2);
+
+            Assert.IsTrue(toTake.Any());
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void F23_AnyNestedExcepts_WithParameter()
+        {
+            var db = CreateDB();
+
+            var toExclude1 = from t in db.GetTable<Territory>()
+                             where t.TerritoryDescription.StartsWith("A")
+                             select t;
+            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
+
+            var universe = from t in db.GetTable<Territory>() select t;
+
+            var toTake = universe.Except(toExclude2);
+
+            Assert.IsTrue(toTake.Any(t => t.TerritoryDescription.Contains("i")));
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void F24_CountNestedExcepts_WithParameter()
+        {
+            var db = CreateDB();
+
+            var toExclude1 = from t in db.GetTable<Territory>()
+                             where t.TerritoryDescription.StartsWith("A")
+                             select t;
+            var toExclude2 = toExclude1.Except(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
+
+            var universe = from t in db.GetTable<Territory>() select t;
+
+            var toTake = universe.Except(toExclude2);
+
+            int toTakeCount = toTake.Count(t => t.TerritoryDescription.Contains("o"));
+            Assert.AreEqual(34, toTakeCount);
+        }
+
+        [Test]
+        public void F25_DistinctUnion()
+        {
+            var db = CreateDB();
+
+            var toInclude1 = from t in db.GetTable<Territory>()
+                             where t.TerritoryDescription.StartsWith("A")
+                             select t;
+            var toInclude2 = toInclude1.Concat(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
+
+            var toTake = toInclude2.Distinct();
+
+            int count = toTake.ToList().Count;
+
+            Assert.AreEqual(27, count);
+        }
+
+        [Test]
+        public void F26_DistinctUnion_Count()
+        {
+            var db = CreateDB();
+
+            var toInclude1 = from t in db.GetTable<Territory>()
+                             where t.TerritoryDescription.StartsWith("A")
+                             select t;
+            var toInclude2 = toInclude1.Concat(db.GetTable<Territory>().Where(terr => terr.TerritoryDescription.Contains("i")));
+
+            var toTake = toInclude2.Distinct();
+
+            int count = toTake.Count();
+
+            Assert.AreEqual(27, count);
+        }
+
+#if MSSQL || L2SQL
+
+#if L2SQL
+        [Explicit]
+#endif
+        [Test]
+        public void F27_SelectEmployee_Identifier()
+        {
+            var db = CreateDB();
+            var q = from e in db.GetTable<EmployeeWithStringIdentifier>() where e.Identifier == "7" select e;
+            EmployeeWithStringIdentifier em = q.Single();
+
+            Assert.AreEqual("King", em.LastName);
+        }
+
+#endif
+
+        /// <summary>
+        /// the following three tests are from Jahmani's page
+        /// LinqToSQL: Comprehensive Support for SQLite, MS Access, SQServer2000/2005
+        /// http://www.codeproject.com/KB/linq/linqToSql_7.aspx?msg=2428251
+        /// </summary>
+        [Test(Description = "list of customers who have place orders that have all been shipped to the customers city.")]
+        public void O1_OperatorAll()
+        {
+            var q = from c in db.Customers
+                    where (from o in c.Orders
+                           select o).All(o => o.ShipCity == c.City)
+                    select new { c.CustomerID, c.ContactName };
+            var list = q.ToList();
+        }
+
+        [Test(Description = "list of customers who have placed no orders")]
+        public void O2_OperatorAny()
+        {
+            //SELECT  t0.CustomerID, t0.ContactName
+            //FROM Customers AS t0
+            //WHERE  NOT  (
+            //(    SELECT  COUNT(*) 
+            //    FROM Orders AS t1
+            //    WHERE (t1.CustomerID = t0.CustomerID)
+            //) > 0
+            //)
+            var q = from customer in db.Customers
+                    where !customer.Orders.Any()
+                    select new { customer.CustomerID, customer.ContactName };
+            //var q = from customer in db.Customers
+            //        where customer.Orders.Count() == 0
+            //        select new { customer.CustomerID, customer.ContactName };
+            var list = q.ToList();
+        }
+
+        [Test(Description = "provide a list of customers and employees who live in London.")]
+        public void O3_OperatorUnion()
+        {
+            var q = (from c in db.Customers.Where(d => d.City == "London")
+                     select new { ContactName = c.ContactName })
+              .Union(from e in db.Employees.Where(f => f.City == "London")
+                     select new { ContactName = e.LastName });
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0, "Expected some customers and employees from London");
+        }
+
+        [Test]
+        public void O4_OperatorContains()
+        {
+            var ids = new Id[] { 1, 2, 3 };
+            Northwind db = CreateDB();
+
+            //var q = from p in db.Products select p.ProductID;
+            //int productCount = q.Count();
+
+            var products = from p in db.Products
+                           where ids.Contains((Id) p.ProductID)
+                           select p;
+
+            Assert.AreEqual(3, products.Count());
+
+        }
+
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_GroupBy.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_GroupBy.cs
@@ -1,322 +1,322 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTest_GroupBy : TestBase
-    {
-
-
-        [Test]
-        public void G01_SimpleGroup_Count()
-        {
-            Northwind db = base.CreateDB();
-
-            var q2 = db.Customers.GroupBy(c => c.City)
-                .Select(g => new { g.Key, Count = g.Count() });
-
-            int rowCount = 0;
-            foreach (var g in q2)
-            {
-                rowCount++;
-                Assert.IsTrue(g.Count > 0, "Must have Count");
-                Assert.IsTrue(g.Key != null, "Must have City");
-            }
-            Assert.IsTrue(rowCount > 0, "Must have some rows");
-        }
-
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G02_SimpleGroup_First()
-        {
-            try
-            {
-                //Note: this SQL is allowed in Mysql but illegal on Postgres 
-                //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
-                //"SELECT City, customerid FROM customer GROUP BY City"
-                //that's why DbLinq disallows it
-                Northwind db = base.CreateDB();
-                var q2 = db.Customers.GroupBy(c => c.City);
-                var q3 = q2.First();
-
-                Assert.IsTrue(q3 != null && q3.Key != null, "Must have result with Key");
-                foreach (var c in q3)
-                {
-                    Assert.IsTrue(c.City != null, "City must be non-null");
-                }
-            }
-            catch(InvalidOperationException)
-            {
-                Assert.Ignore("Some vendors don't support this request (which doesn't make sense anyway)");
-            }
-        }
-
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G03_SimpleGroup_WithSelector_Invalid()
-        {
-            try
-            {
-                //Note: this SQL is allowed in Mysql but illegal on Postgres 
-                //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
-                //"SELECT City, customerid FROM customer GROUP BY City"
-                Northwind db = base.CreateDB();
-
-                var q2 = db.Customers.GroupBy(c => c.City, c => new {c.City, c.CustomerID});
-
-                foreach (var g in q2)
-                {
-                    int entryCount = 0;
-                    foreach (var c in g)
-                    {
-                        Assert.IsTrue(c.City != null, "City must be non-null");
-                        entryCount++;
-                    }
-                    Assert.IsTrue(entryCount > 0, "Must have some entries in group");
-                }
-            }
-            catch (InvalidOperationException)
-            {
-                Assert.Ignore("Some vendors don't support this request (which doesn't make sense anyway)");
-            }
-        }
-
-        [Test]
-        public void G03_DoubleKey()
-        {
-            //Note: this SQL is allowed in Mysql but illegal on Postgres 
-            //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
-            //"SELECT City, customerid FROM customer GROUP BY City"
-            Northwind db = base.CreateDB();
-
-            var q2 = from o in db.Orders
-                     group o by new { o.CustomerID, o.EmployeeID } into g
-                     select new { g.Key.CustomerID, g.Key.EmployeeID, Count = g.Count() };
-
-            int entryCount = 0;
-            foreach (var g in q2)
-            {
-                entryCount++;
-                Assert.IsTrue(g.CustomerID != null, "Must have non-null customerID");
-                Assert.IsTrue(g.EmployeeID > 0, "Must have >0 employeeID");
-                Assert.IsTrue(g.Count >= 0, "Must have non-neg Count");
-            }
-            Assert.IsTrue(entryCount > 0, "Must have some entries in group");
-        }
-
-
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G04_SimpleGroup_WithSelector()
-        {
-            try
-            {
-                //Note: this SQL is allowed in Mysql but illegal on Postgres 
-                //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
-                //"SELECT City, customerid FROM customer GROUP BY City"
-                Northwind db = base.CreateDB();
-                var q2 = db.Customers.GroupBy(c => c.City, c => c.CustomerID);
-
-                foreach (var g in q2)
-                {
-                    int entryCount = 0;
-                    foreach (var c in g)
-                    {
-                        Assert.IsTrue(c != null, "CustomerID must be non-null");
-                        entryCount++;
-                    }
-                    Assert.IsTrue(entryCount > 0, "Must have some entries in group");
-                }
-            }
-            catch (InvalidOperationException)
-            {
-                Assert.Ignore("Some vendors don't support this request (which doesn't make sense anyway)");
-            }
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G05_Group_Into()
-        {
-            Northwind db = base.CreateDB();
-            var q2 =
-                from c in db.Customers
-                //where c.Country == "France"
-                group new { c.PostalCode, c.ContactName } by c.City into g
-                select g;
-            var q3 = from g in q2 select new { FortyTwo = 42, g.Key, Count = g.Count() };
-            //select new {g.Key.Length, g};
-            //select new {42,g};
-
-            int entryCount = 0;
-            foreach (var g in q3)
-            {
-                Assert.IsTrue(g.FortyTwo == 42, "Forty42 must be there");
-                Assert.IsTrue(g.Count > 0, "Positive count");
-                entryCount++;
-            }
-            Assert.IsTrue(entryCount > 0, "Must have some entries in group");
-        }
-
-
-        [Test]
-        public void G06_OrderCountByCustomerID()
-        {
-            Northwind db = base.CreateDB();
-
-            var q2 = from o in db.Orders
-                     group o by o.CustomerID into g
-                     //where g.Count()>1
-                     select new { g.Key, OrderCount = g.Count() };
-
-            var lst = q2.ToList();
-            Assert.Greater(lst.Count, 0, "Expected some grouped order results");
-            var result0 = lst[0];
-            Assert.IsTrue(result0.Key != null, "Key must be non-null");
-            Assert.Greater(result0.OrderCount, 0, "Count must be > 0");
-            //select new { g.Key , SumPerCustomer = g.Sum(o2=>o2.OrderID) };
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G07_OrderCountByCustomerID_Where()
-        {
-            Northwind db = base.CreateDB();
-
-            var q2 = from o in db.Orders
-                     group o by o.CustomerID into g
-                     where g.Count() > 1
-                     select new { g.Key, OrderCount = g.Count() };
-
-            var lst = q2.ToList();
-            Assert.Greater(lst.Count, 0, "Expected some grouped order results");
-            var result0 = lst[0];
-            Assert.IsTrue(result0.Key != null, "Key must be non-null");
-            Assert.Greater(result0.OrderCount, 0, "Count must be > 0");
-            //select new { g.Key , SumPerCustomer = g.Sum(o2=>o2.OrderID) };
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G08_OrderSumByCustomerID()
-        {
-            Northwind db = base.CreateDB();
-
-            var q2 = from o in db.Orders
-                     group o by o.CustomerID into g
-                     //where g.Count()>1
-                     select new { g.Key, OrderSum = g.Sum(o => o.OrderID) };
-            var lst = q2.ToList();
-            Assert.Greater(lst.Count, 0, "Expected some grouped order results");
-            foreach (var result in lst)
-            {
-                Console.WriteLine("  Result: custID=" + result.Key + " sum=" + result.OrderSum);
-                Assert.IsTrue(result.Key != null, "Key must be non-null");
-                Assert.Greater(result.OrderSum, 0, "OrderSum must be > 0");
-            }
-            //select new { g.Key , SumPerCustomer = g.Sum(o2=>o2.OrderID) };
-        }
-
-        /// <summary>
-        /// Reported by  pwy.mail in http://code.google.com/p/dblinq2007/issues/detail?id=64
-        /// </summary>
-#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G09_UnitPriceGreaterThan10()
-        {
-            Northwind db = base.CreateDB();
-
-            var priceQuery =
-                from prod in db.Products
-                group prod by new
-                {
-                    Criterion = prod.UnitPrice > 10
-                }
-                    into grouping
-                    select grouping;
-
-            foreach (var prodObj in priceQuery)
-            {
-                if (prodObj.Key.Criterion == false)
-                    Console.WriteLine("Prices 10 or less:");
-                else
-                    Console.WriteLine("\nPrices greater than 10");
-                foreach (var listing in prodObj)
-                {
-                    Console.WriteLine("{0}, {1}", listing.ProductName,
-                        listing.UnitPrice);
-                }
-            }
-
-        }
-
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTest_GroupBy : TestBase
+    {
+
+
+        [Test]
+        public void G01_SimpleGroup_Count()
+        {
+            Northwind db = base.CreateDB();
+
+            var q2 = db.Customers.GroupBy(c => c.City)
+                .Select(g => new { g.Key, Count = g.Count() });
+
+            int rowCount = 0;
+            foreach (var g in q2)
+            {
+                rowCount++;
+                Assert.IsTrue(g.Count > 0, "Must have Count");
+                Assert.IsTrue(g.Key != null, "Must have City");
+            }
+            Assert.IsTrue(rowCount > 0, "Must have some rows");
+        }
+
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G02_SimpleGroup_First()
+        {
+            try
+            {
+                //Note: this SQL is allowed in Mysql but illegal on Postgres 
+                //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
+                //"SELECT City, customerid FROM customer GROUP BY City"
+                //that's why DbLinq disallows it
+                Northwind db = base.CreateDB();
+                var q2 = db.Customers.GroupBy(c => c.City);
+                var q3 = q2.First();
+
+                Assert.IsTrue(q3 != null && q3.Key != null, "Must have result with Key");
+                foreach (var c in q3)
+                {
+                    Assert.IsTrue(c.City != null, "City must be non-null");
+                }
+            }
+            catch(InvalidOperationException)
+            {
+                Assert.Ignore("Some vendors don't support this request (which doesn't make sense anyway)");
+            }
+        }
+
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G03_SimpleGroup_WithSelector_Invalid()
+        {
+            try
+            {
+                //Note: this SQL is allowed in Mysql but illegal on Postgres 
+                //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
+                //"SELECT City, customerid FROM customer GROUP BY City"
+                Northwind db = base.CreateDB();
+
+                var q2 = db.Customers.GroupBy(c => c.City, c => new {c.City, c.CustomerID});
+
+                foreach (var g in q2)
+                {
+                    int entryCount = 0;
+                    foreach (var c in g)
+                    {
+                        Assert.IsTrue(c.City != null, "City must be non-null");
+                        entryCount++;
+                    }
+                    Assert.IsTrue(entryCount > 0, "Must have some entries in group");
+                }
+            }
+            catch (InvalidOperationException)
+            {
+                Assert.Ignore("Some vendors don't support this request (which doesn't make sense anyway)");
+            }
+        }
+
+        [Test]
+        public void G03_DoubleKey()
+        {
+            //Note: this SQL is allowed in Mysql but illegal on Postgres 
+            //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
+            //"SELECT City, customerid FROM customer GROUP BY City"
+            Northwind db = base.CreateDB();
+
+            var q2 = from o in db.Orders
+                     group o by new { o.CustomerID, o.EmployeeID } into g
+                     select new { g.Key.CustomerID, g.Key.EmployeeID, Count = g.Count() };
+
+            int entryCount = 0;
+            foreach (var g in q2)
+            {
+                entryCount++;
+                Assert.IsTrue(g.CustomerID != null, "Must have non-null customerID");
+                Assert.IsTrue(g.EmployeeID > 0, "Must have >0 employeeID");
+                Assert.IsTrue(g.Count >= 0, "Must have non-neg Count");
+            }
+            Assert.IsTrue(entryCount > 0, "Must have some entries in group");
+        }
+
+
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G04_SimpleGroup_WithSelector()
+        {
+            try
+            {
+                //Note: this SQL is allowed in Mysql but illegal on Postgres 
+                //(PostgreSql ERROR: column "c$.customerid" must appear in the GROUP BY clause or be used in an aggregate function - SQL state: 42803)
+                //"SELECT City, customerid FROM customer GROUP BY City"
+                Northwind db = base.CreateDB();
+                var q2 = db.Customers.GroupBy(c => c.City, c => c.CustomerID);
+
+                foreach (var g in q2)
+                {
+                    int entryCount = 0;
+                    foreach (var c in g)
+                    {
+                        Assert.IsTrue(c != null, "CustomerID must be non-null");
+                        entryCount++;
+                    }
+                    Assert.IsTrue(entryCount > 0, "Must have some entries in group");
+                }
+            }
+            catch (InvalidOperationException)
+            {
+                Assert.Ignore("Some vendors don't support this request (which doesn't make sense anyway)");
+            }
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G05_Group_Into()
+        {
+            Northwind db = base.CreateDB();
+            var q2 =
+                from c in db.Customers
+                //where c.Country == "France"
+                group new { c.PostalCode, c.ContactName } by c.City into g
+                select g;
+            var q3 = from g in q2 select new { FortyTwo = 42, g.Key, Count = g.Count() };
+            //select new {g.Key.Length, g};
+            //select new {42,g};
+
+            int entryCount = 0;
+            foreach (var g in q3)
+            {
+                Assert.IsTrue(g.FortyTwo == 42, "Forty42 must be there");
+                Assert.IsTrue(g.Count > 0, "Positive count");
+                entryCount++;
+            }
+            Assert.IsTrue(entryCount > 0, "Must have some entries in group");
+        }
+
+
+        [Test]
+        public void G06_OrderCountByCustomerID()
+        {
+            Northwind db = base.CreateDB();
+
+            var q2 = from o in db.Orders
+                     group o by o.CustomerID into g
+                     //where g.Count()>1
+                     select new { g.Key, OrderCount = g.Count() };
+
+            var lst = q2.ToList();
+            Assert.Greater(lst.Count, 0, "Expected some grouped order results");
+            var result0 = lst[0];
+            Assert.IsTrue(result0.Key != null, "Key must be non-null");
+            Assert.Greater(result0.OrderCount, 0, "Count must be > 0");
+            //select new { g.Key , SumPerCustomer = g.Sum(o2=>o2.OrderID) };
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G07_OrderCountByCustomerID_Where()
+        {
+            Northwind db = base.CreateDB();
+
+            var q2 = from o in db.Orders
+                     group o by o.CustomerID into g
+                     where g.Count() > 1
+                     select new { g.Key, OrderCount = g.Count() };
+
+            var lst = q2.ToList();
+            Assert.Greater(lst.Count, 0, "Expected some grouped order results");
+            var result0 = lst[0];
+            Assert.IsTrue(result0.Key != null, "Key must be non-null");
+            Assert.Greater(result0.OrderCount, 0, "Count must be > 0");
+            //select new { g.Key , SumPerCustomer = g.Sum(o2=>o2.OrderID) };
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G08_OrderSumByCustomerID()
+        {
+            Northwind db = base.CreateDB();
+
+            var q2 = from o in db.Orders
+                     group o by o.CustomerID into g
+                     //where g.Count()>1
+                     select new { g.Key, OrderSum = g.Sum(o => o.OrderID) };
+            var lst = q2.ToList();
+            Assert.Greater(lst.Count, 0, "Expected some grouped order results");
+            foreach (var result in lst)
+            {
+                Console.WriteLine("  Result: custID=" + result.Key + " sum=" + result.OrderSum);
+                Assert.IsTrue(result.Key != null, "Key must be non-null");
+                Assert.Greater(result.OrderSum, 0, "OrderSum must be > 0");
+            }
+            //select new { g.Key , SumPerCustomer = g.Sum(o2=>o2.OrderID) };
+        }
+
+        /// <summary>
+        /// Reported by  pwy.mail in http://code.google.com/p/dblinq2007/issues/detail?id=64
+        /// </summary>
+#if !DEBUG && (POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G09_UnitPriceGreaterThan10()
+        {
+            Northwind db = base.CreateDB();
+
+            var priceQuery =
+                from prod in db.Products
+                group prod by new
+                {
+                    Criterion = prod.UnitPrice > 10
+                }
+                    into grouping
+                    select grouping;
+
+            foreach (var prodObj in priceQuery)
+            {
+                if (prodObj.Key.Criterion == false)
+                    Console.WriteLine("Prices 10 or less:");
+                else
+                    Console.WriteLine("\nPrices greater than 10");
+                foreach (var listing in prodObj)
+                {
+                    Console.WriteLine("{0}, {1}", listing.ProductName,
+                        listing.UnitPrice);
+                }
+            }
+
+        }
+
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_Operands.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_Operands.cs
@@ -1,209 +1,209 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Globalization;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    /// <summary>
-    /// this test class will exercise various operands, such as 'a&&b', 'a>=b', ""+a, etc.
-    /// </summary>
-    [TestFixture]
-    public class ReadTest_Operands : TestBase
-    {
-
-        [Test]
-        public void H1_SelectConcat()
-        {
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products select p.ProductName + " " + p.SupplierID;
-            int count = 0;
-            foreach (string s in q)
-            {
-                if (s == null)
-                    continue; //concat('X',NULL) -> NULL 
-
-                bool ok = Char.IsLetterOrDigit(s[0]) && s.Contains(' ');
-                Assert.IsTrue(ok, "Concat string should start with product name, instead got:" + s);
-                count++;
-            }
-            Assert.IsTrue(count > 0, "Expected concat strings, got none");
-        }
-
-        [Test]
-        public void H2_SelectGreaterOrEqual()
-        {
-            Northwind db = CreateDB();
-
-            var q = db.Products.Where(p => p.ProductID >= 5);
-            int count = 0;
-            foreach (Product p in q)
-            {
-                Assert.IsTrue(p.ProductID >= 5, "Failed on ProductID>=20");
-                count++;
-            }
-            Assert.IsTrue(count > 0, "Expected some products with ProductID>=5, got none");
-        }
-
-        public struct ProductWrapper1
-        {
-            public int ProductID { get; set; }
-            public int? SupplierID { get; set; }
-        }
-
-        public class ProductWrapper2
-        {
-            public int ProductID { get; set; }
-            public int? SupplierID { get; set; }
-        }
-
-        public class ProductWrapper3
-        {
-            public int ProductID { get; set; }
-            public int? SupplierID { get; set; }
-            public ProductWrapper3(int p, int? s) { ProductID = p; SupplierID = s; }
-            public ProductWrapper3(int p, int? s, bool unused) { ProductID = p; SupplierID = s; }
-        }
-
-        [Test]
-        public void H3_Select_MemberInit_Struct()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Products
-                    where p.ProductID > 5
-                    select new ProductWrapper1 { ProductID = (int)p.ProductID, SupplierID = (int?)p.SupplierID };
-            int count = 0;
-            foreach (ProductWrapper1 p in q)
-            {
-                Assert.IsTrue(p.ProductID > 5, "Failed on ProductID>=20");
-                count++;
-            }
-            Assert.IsTrue(count > 0, "Expected some products with ProductID>5, got none");
-        }
-
-        [Test]
-        public void H4_Select_MemberInit_Class()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Products
-                    where p.ProductID > 5
-                    select new ProductWrapper2 { ProductID = (int)p.ProductID, SupplierID = (int?)p.SupplierID };
-            int count = 0;
-            foreach (ProductWrapper2 p in q)
-            {
-                Assert.IsTrue(p.ProductID > 5, "Failed on ProductID>=20");
-                count++;
-            }
-            Assert.IsTrue(count > 0, "Expected some products with ProductID>5, got none");
-        }
-
-        [Test]
-        public void H5_Select_MemberInit_Class2()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Products
-                    where p.ProductID > 5
-                    select new ProductWrapper3((int)p.ProductID, (int?)p.SupplierID);
-            int count = 0;
-            foreach (ProductWrapper3 p in q)
-            {
-                Assert.IsTrue(p.ProductID > 5, "Failed on ProductID>=20");
-                count++;
-            }
-            Assert.IsTrue(count > 0, "Expected some products with ProductID>5, got none");
-        }
-
-        [Test]
-        public void H6_SelectNotEqual()
-        {
-            Northwind db = CreateDB();
-            var q = from p in db.Products
-                    where p.ProductID != 1
-                    select p;
-            int count = 0;
-            foreach (Product p in q)
-            {
-                Assert.IsFalse(p.ProductID == 1, "Failed on ProductID != 1");
-                count++;
-            }
-            Assert.IsTrue(count > 0, "Expected some products with ProductID != 1, got none");
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void J1_LocalFunction_DateTime_ParseExact()
-        {
-            Northwind db = CreateDB();
-
-            //Lookup EmployeeID 1:
-            //Andy Fuller - HireDate: 1989-01-01 00:00:00
-
-            string hireDate = "1992.08.14";
-
-            // Ingres assumes UTC on all date queries
-            var q = from e in db.Employees
-#if INGRES
-                    where e.HireDate == DateTime.ParseExact(hireDate, "yyyy.MM.dd", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)
-#else
-                    where e.HireDate == DateTime.ParseExact(hireDate, "yyyy.MM.dd", CultureInfo.InvariantCulture)
-#endif
-                    select e.LastName;
-            var empLastName = q.Single(); //MTable_Projected.GetQueryText()
-            Assert.AreEqual("Fuller", empLastName);
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    /// <summary>
+    /// this test class will exercise various operands, such as 'a&&b', 'a>=b', ""+a, etc.
+    /// </summary>
+    [TestFixture]
+    public class ReadTest_Operands : TestBase
+    {
+
+        [Test]
+        public void H1_SelectConcat()
+        {
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products select p.ProductName + " " + p.SupplierID;
+            int count = 0;
+            foreach (string s in q)
+            {
+                if (s == null)
+                    continue; //concat('X',NULL) -> NULL 
+
+                bool ok = Char.IsLetterOrDigit(s[0]) && s.Contains(' ');
+                Assert.IsTrue(ok, "Concat string should start with product name, instead got:" + s);
+                count++;
+            }
+            Assert.IsTrue(count > 0, "Expected concat strings, got none");
+        }
+
+        [Test]
+        public void H2_SelectGreaterOrEqual()
+        {
+            Northwind db = CreateDB();
+
+            var q = db.Products.Where(p => p.ProductID >= 5);
+            int count = 0;
+            foreach (Product p in q)
+            {
+                Assert.IsTrue(p.ProductID >= 5, "Failed on ProductID>=20");
+                count++;
+            }
+            Assert.IsTrue(count > 0, "Expected some products with ProductID>=5, got none");
+        }
+
+        public struct ProductWrapper1
+        {
+            public int ProductID { get; set; }
+            public int? SupplierID { get; set; }
+        }
+
+        public class ProductWrapper2
+        {
+            public int ProductID { get; set; }
+            public int? SupplierID { get; set; }
+        }
+
+        public class ProductWrapper3
+        {
+            public int ProductID { get; set; }
+            public int? SupplierID { get; set; }
+            public ProductWrapper3(int p, int? s) { ProductID = p; SupplierID = s; }
+            public ProductWrapper3(int p, int? s, bool unused) { ProductID = p; SupplierID = s; }
+        }
+
+        [Test]
+        public void H3_Select_MemberInit_Struct()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Products
+                    where p.ProductID > 5
+                    select new ProductWrapper1 { ProductID = (int)p.ProductID, SupplierID = (int?)p.SupplierID };
+            int count = 0;
+            foreach (ProductWrapper1 p in q)
+            {
+                Assert.IsTrue(p.ProductID > 5, "Failed on ProductID>=20");
+                count++;
+            }
+            Assert.IsTrue(count > 0, "Expected some products with ProductID>5, got none");
+        }
+
+        [Test]
+        public void H4_Select_MemberInit_Class()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Products
+                    where p.ProductID > 5
+                    select new ProductWrapper2 { ProductID = (int)p.ProductID, SupplierID = (int?)p.SupplierID };
+            int count = 0;
+            foreach (ProductWrapper2 p in q)
+            {
+                Assert.IsTrue(p.ProductID > 5, "Failed on ProductID>=20");
+                count++;
+            }
+            Assert.IsTrue(count > 0, "Expected some products with ProductID>5, got none");
+        }
+
+        [Test]
+        public void H5_Select_MemberInit_Class2()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Products
+                    where p.ProductID > 5
+                    select new ProductWrapper3((int)p.ProductID, (int?)p.SupplierID);
+            int count = 0;
+            foreach (ProductWrapper3 p in q)
+            {
+                Assert.IsTrue(p.ProductID > 5, "Failed on ProductID>=20");
+                count++;
+            }
+            Assert.IsTrue(count > 0, "Expected some products with ProductID>5, got none");
+        }
+
+        [Test]
+        public void H6_SelectNotEqual()
+        {
+            Northwind db = CreateDB();
+            var q = from p in db.Products
+                    where p.ProductID != 1
+                    select p;
+            int count = 0;
+            foreach (Product p in q)
+            {
+                Assert.IsFalse(p.ProductID == 1, "Failed on ProductID != 1");
+                count++;
+            }
+            Assert.IsTrue(count > 0, "Expected some products with ProductID != 1, got none");
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void J1_LocalFunction_DateTime_ParseExact()
+        {
+            Northwind db = CreateDB();
+
+            //Lookup EmployeeID 1:
+            //Andy Fuller - HireDate: 1989-01-01 00:00:00
+
+            string hireDate = "1992.08.14";
+
+            // Ingres assumes UTC on all date queries
+            var q = from e in db.Employees
+#if INGRES
+                    where e.HireDate == DateTime.ParseExact(hireDate, "yyyy.MM.dd", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)
+#else
+                    where e.HireDate == DateTime.ParseExact(hireDate, "yyyy.MM.dd", CultureInfo.InvariantCulture)
+#endif
+                    select e.LastName;
+            var empLastName = q.Single(); //MTable_Projected.GetQueryText()
+            Assert.AreEqual("Fuller", empLastName);
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_Subquery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTest_Subquery.cs
@@ -1,161 +1,161 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data.Linq;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-#if ORACLE
-using Id = System.Decimal;
-#else
-using Id = System.Int32;
-#endif
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTest_Subquery : TestBase
-    {
-        [Description("Simple projection")]
-        [Test]
-        public void CQ1_SimpleProjection()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.LastName);
-            var count = q.ToList().Count;
-            Assert.IsTrue(count > 0);
-        }
-
-        /*
-         Generated SQL should look like
-SELECT o$.*
-FROM Employees AS e$
-LEFT OUTER JOIN Orders AS o$ ON o$.[EmployeeID] = e$.[EmployeeID]
-         */
-#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Description("Subquery")]
-        [Test]
-        public void CQ2_Subquery()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.Orders);
-            var l = q.ToList();
-            var count = l.Count;
-            Assert.IsTrue(count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Description("Subquery with nested select")]
-        [Test]
-        public void CQ3_SubquerySelect()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.Orders.Select(o => o));
-            var count = q.ToList().Count;
-            Assert.IsTrue(count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Description("Subquery with nested entityset")]
-        [Test]
-        public void CQ4_SubqueryNested()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderDetails));
-            var count = q.ToList().Count;
-            Assert.IsTrue(count > 0);
-        }
-
-#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Description("Subquery with nested query")]
-        [Test]
-        public void CQ5_SubqueryNestedQuery()
-        {
-            var db = CreateDB();
-            var q = from d in db.Orders
-                    where (from r in db.OrderDetails
-                           where r.ProductID == 1
-                           select
-                               r.OrderID).Contains(d.OrderID)
-                    select d;
-            var count = q.ToList().Count;
-            Assert.AreEqual(38, count);
-        }
-
-
-        [Test]
-        public void QueryableContains01()
-        {
-            var db = CreateDB();
-            var q1 = db.OrderDetails.Where(o => o.Discount > 0).Select(o => o.OrderID);
-            var q = db.OrderDetails.Where(o => !q1.Contains(o.OrderID));
-            Assert.AreEqual(1110, q.Count());
-        }
-
-        [Test]
-        public void QueryableContains02()
-        {
-            var db = CreateDB();
-            DateTime t = DateTime.Parse("01/01/1950");
-            var q1 = db.Employees.Where(e => e.BirthDate.HasValue && e.BirthDate.Value > t).Select(e => e.EmployeeID);
-            var q = db.Orders.Where(o => o.EmployeeID.HasValue && !q1.Contains(o.EmployeeID.Value));
-            Assert.AreEqual(279, q.Count());
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data.Linq;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+#if ORACLE
+using Id = System.Decimal;
+#else
+using Id = System.Int32;
+#endif
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTest_Subquery : TestBase
+    {
+        [Description("Simple projection")]
+        [Test]
+        public void CQ1_SimpleProjection()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.LastName);
+            var count = q.ToList().Count;
+            Assert.IsTrue(count > 0);
+        }
+
+        /*
+         Generated SQL should look like
+SELECT o$.*
+FROM Employees AS e$
+LEFT OUTER JOIN Orders AS o$ ON o$.[EmployeeID] = e$.[EmployeeID]
+         */
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Description("Subquery")]
+        [Test]
+        public void CQ2_Subquery()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.Orders);
+            var l = q.ToList();
+            var count = l.Count;
+            Assert.IsTrue(count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Description("Subquery with nested select")]
+        [Test]
+        public void CQ3_SubquerySelect()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.Orders.Select(o => o));
+            var count = q.ToList().Count;
+            Assert.IsTrue(count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Description("Subquery with nested entityset")]
+        [Test]
+        public void CQ4_SubqueryNested()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderDetails));
+            var count = q.ToList().Count;
+            Assert.IsTrue(count > 0);
+        }
+
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Description("Subquery with nested query")]
+        [Test]
+        public void CQ5_SubqueryNestedQuery()
+        {
+            var db = CreateDB();
+            var q = from d in db.Orders
+                    where (from r in db.OrderDetails
+                           where r.ProductID == 1
+                           select
+                               r.OrderID).Contains(d.OrderID)
+                    select d;
+            var count = q.ToList().Count;
+            Assert.AreEqual(38, count);
+        }
+
+
+        [Test]
+        public void QueryableContains01()
+        {
+            var db = CreateDB();
+            var q1 = db.OrderDetails.Where(o => o.Discount > 0).Select(o => o.OrderID);
+            var q = db.OrderDetails.Where(o => !q1.Contains(o.OrderID));
+            Assert.AreEqual(1110, q.Count());
+        }
+
+        [Test]
+        public void QueryableContains02()
+        {
+            var db = CreateDB();
+            DateTime t = DateTime.Parse("01/01/1950");
+            var q1 = db.Employees.Where(e => e.BirthDate.HasValue && e.BirthDate.Value > t).Select(e => e.EmployeeID);
+            var q = db.Orders.Where(o => o.EmployeeID.HasValue && !q1.Contains(o.EmployeeID.Value));
+            Assert.AreEqual(279, q.Count());
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_AnyCountFirst.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_AnyCountFirst.cs
@@ -1,352 +1,352 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class AnyCount : TestBase
-    {
-        [Test]
-        public void AnyInternal01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where !c.Orders.Any()
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void AnyInternal02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where !c.Orders.Any(o => o.Customer.ContactName == "WARTH")
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        public void AnyInternal03()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where !c.Orders.Where(o => o.Customer.ContactName == "WARTH")
-                                     .Any(o => o.Customer.Country == "USA")
-                     select c).ToList();
-        }
-
-        [Test]
-        public void AnyInternal04()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where !c.Orders.Select(o => o.Customer.Country)
-                                     .Any(ct => ct == "USA")
-                     select c).ToList();
-        }
-
-        [Test]
-        public void AnyInternal05()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select new { c.CustomerID, HasUSAOrders = c.Orders.Any(o => o.ShipCountry == "USA") }).ToList();
-        }
-
-
-        [Test]
-        public void AnyExternal01()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Country == "USA"
-                     select c).Any();
-
-        }
-
-        [Test]
-        public void AnyExternal02()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Country == "USA"
-                     select c).Any(cust => cust.City == "Seatle");
-        }
-
-        [Test]
-        public void AnyExternal03()
-        {
-            Northwind db = CreateDB();
-            var q = db.Customers.Any();
-        }
-
-        [Test]
-        public void AnyExternal04()
-        {
-            Northwind db = CreateDB();
-            var q = db.Customers.Any(cust => cust.City == "Seatle");
-        }
-
-
-        [Test]
-        public void CountInternal01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.Orders.Count() % 2 == 0
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void CountInternal02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.Orders.Count(o => o.Customer.ContactName == "WARTH") % 2 == 0
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        public void CountInternal03()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Orders.Where(o => o.Customer.ContactName == "WARTH")
-                                     .Count(o => o.Customer.Country == "USA") % 2 == 0
-                     select c).ToList();
-        }
-
-        [Test]
-        public void CountInternal04()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Orders.Select(o => o.Customer.Country)
-                                     .Count(ct => ct == "USA") % 2 == 0
-                     select c).ToList();
-        }
-
-
-        [Test]
-        public void CountExternal01()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Country == "USA"
-                     select c).Count();
-        }
-
-        [Test]
-        public void CountExternal02()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Country == "USA"
-                     select c).Count(cust => cust.City == "Seatle");
-        }
-
-        [Test]
-        public void CountExternal03()
-        {
-            Northwind db = CreateDB();
-            var q = db.Customers.Count();
-        }
-
-        [Test]
-        public void CountExternal04()
-        {
-            Northwind db = CreateDB();
-            var q = db.Customers.Count(cust => cust.City == "Seatle");
-        }
-
-        [Test]
-        public void CountInternal05()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select new { c.CustomerID, HasUSAOrders = c.Orders.Count(o => o.ShipCountry == "USA") }).ToList();
-        }
-
-#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void FirstInternal01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.Orders.FirstOrDefault() != null
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void FirstInternal02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.Orders.FirstOrDefault(o => o.Customer.ContactName == "WARTH") != null
-                    select c;
-
-            var list = q.ToList();
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void FirstInternal03()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Orders.Where(o => o.Customer.ContactName == "WARTH")
-                                     .FirstOrDefault(o => o.Customer.Country == "USA") != null
-                     select c).ToList();
-        }
-
-        [Test]
-        public void FirstInternal04()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Orders.Select(o => o.Customer.Country)
-                                   .FirstOrDefault(ct => ct == "USA") != null
-                     select c).ToList();
-        }
-
-        [Test]
-        public void FirstExternal01()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Country == "USA"
-                     select c).First();
-        }
-
-        [Test]
-        public void FirstExternal02()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     where c.Country == "France"
-                     select c).First(cust => cust.City == "Marseille");
-
-        }
-
-        [Test]
-        public void FirstExternal03()
-        {
-            Northwind db = CreateDB();
-            var q = db.Customers.First();
-        }
-
-        [Test]
-        public void FirstExternal04()
-        {
-            Northwind db = CreateDB();
-            var q = db.Customers.First(cust => cust.City == "Marseille");
-        }
-
-        [Test]
-        public void FirstInternal05()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from c in db.Customers
-                     select new { c.CustomerID, FirstUSAOrder = c.Orders.First(o => o.ShipCountry == "France") }).ToList();
-        }
-
-        [Test]
-        public void ArrayContains()
-        {
-            var db = CreateDB();
-            decimal[] d = new decimal[] { 1, 4, 5, 6, 10248, 10255 };
-            var q = db.OrderDetails.Where(o => d.Contains(o.OrderID));
-
-            Assert.Greater(q.Count(), 0);
-        }
-
-
-        [Test]
-        public void ArrayContains_QueryParserCacheHit()
-        {
-            var db = CreateDB();
-            decimal[] d = new decimal[] { 1, 4, 5, 6, 10248, 10255 };
-            var q = db.OrderDetails.Where(o => d.Contains(o.OrderID));
-            string query1 = db.GetCommand(q).CommandText;
-            d = new decimal[] { 1, 4, 5, 6, 7, 8 };
-            q = db.OrderDetails.Where(o => d.Contains(o.OrderID));
-            string query2 = db.GetCommand(q).CommandText;
-            Assert.AreEqual(query1, query2);
-        }
-
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class AnyCount : TestBase
+    {
+        [Test]
+        public void AnyInternal01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where !c.Orders.Any()
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void AnyInternal02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where !c.Orders.Any(o => o.Customer.ContactName == "WARTH")
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        public void AnyInternal03()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where !c.Orders.Where(o => o.Customer.ContactName == "WARTH")
+                                     .Any(o => o.Customer.Country == "USA")
+                     select c).ToList();
+        }
+
+        [Test]
+        public void AnyInternal04()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where !c.Orders.Select(o => o.Customer.Country)
+                                     .Any(ct => ct == "USA")
+                     select c).ToList();
+        }
+
+        [Test]
+        public void AnyInternal05()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select new { c.CustomerID, HasUSAOrders = c.Orders.Any(o => o.ShipCountry == "USA") }).ToList();
+        }
+
+
+        [Test]
+        public void AnyExternal01()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Country == "USA"
+                     select c).Any();
+
+        }
+
+        [Test]
+        public void AnyExternal02()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Country == "USA"
+                     select c).Any(cust => cust.City == "Seatle");
+        }
+
+        [Test]
+        public void AnyExternal03()
+        {
+            Northwind db = CreateDB();
+            var q = db.Customers.Any();
+        }
+
+        [Test]
+        public void AnyExternal04()
+        {
+            Northwind db = CreateDB();
+            var q = db.Customers.Any(cust => cust.City == "Seatle");
+        }
+
+
+        [Test]
+        public void CountInternal01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.Orders.Count() % 2 == 0
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void CountInternal02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.Orders.Count(o => o.Customer.ContactName == "WARTH") % 2 == 0
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        public void CountInternal03()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Orders.Where(o => o.Customer.ContactName == "WARTH")
+                                     .Count(o => o.Customer.Country == "USA") % 2 == 0
+                     select c).ToList();
+        }
+
+        [Test]
+        public void CountInternal04()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Orders.Select(o => o.Customer.Country)
+                                     .Count(ct => ct == "USA") % 2 == 0
+                     select c).ToList();
+        }
+
+
+        [Test]
+        public void CountExternal01()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Country == "USA"
+                     select c).Count();
+        }
+
+        [Test]
+        public void CountExternal02()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Country == "USA"
+                     select c).Count(cust => cust.City == "Seatle");
+        }
+
+        [Test]
+        public void CountExternal03()
+        {
+            Northwind db = CreateDB();
+            var q = db.Customers.Count();
+        }
+
+        [Test]
+        public void CountExternal04()
+        {
+            Northwind db = CreateDB();
+            var q = db.Customers.Count(cust => cust.City == "Seatle");
+        }
+
+        [Test]
+        public void CountInternal05()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select new { c.CustomerID, HasUSAOrders = c.Orders.Count(o => o.ShipCountry == "USA") }).ToList();
+        }
+
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void FirstInternal01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.Orders.FirstOrDefault() != null
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void FirstInternal02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.Orders.FirstOrDefault(o => o.Customer.ContactName == "WARTH") != null
+                    select c;
+
+            var list = q.ToList();
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void FirstInternal03()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Orders.Where(o => o.Customer.ContactName == "WARTH")
+                                     .FirstOrDefault(o => o.Customer.Country == "USA") != null
+                     select c).ToList();
+        }
+
+        [Test]
+        public void FirstInternal04()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Orders.Select(o => o.Customer.Country)
+                                   .FirstOrDefault(ct => ct == "USA") != null
+                     select c).ToList();
+        }
+
+        [Test]
+        public void FirstExternal01()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Country == "USA"
+                     select c).First();
+        }
+
+        [Test]
+        public void FirstExternal02()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     where c.Country == "France"
+                     select c).First(cust => cust.City == "Marseille");
+
+        }
+
+        [Test]
+        public void FirstExternal03()
+        {
+            Northwind db = CreateDB();
+            var q = db.Customers.First();
+        }
+
+        [Test]
+        public void FirstExternal04()
+        {
+            Northwind db = CreateDB();
+            var q = db.Customers.First(cust => cust.City == "Marseille");
+        }
+
+        [Test]
+        public void FirstInternal05()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from c in db.Customers
+                     select new { c.CustomerID, FirstUSAOrder = c.Orders.First(o => o.ShipCountry == "France") }).ToList();
+        }
+
+        [Test]
+        public void ArrayContains()
+        {
+            var db = CreateDB();
+            decimal[] d = new decimal[] { 1, 4, 5, 6, 10248, 10255 };
+            var q = db.OrderDetails.Where(o => d.Contains(o.OrderID));
+
+            Assert.Greater(q.Count(), 0);
+        }
+
+
+        [Test]
+        public void ArrayContains_QueryParserCacheHit()
+        {
+            var db = CreateDB();
+            decimal[] d = new decimal[] { 1, 4, 5, 6, 10248, 10255 };
+            var q = db.OrderDetails.Where(o => d.Contains(o.OrderID));
+            string query1 = db.GetCommand(q).CommandText;
+            d = new decimal[] { 1, 4, 5, 6, 7, 8 };
+            q = db.OrderDetails.Where(o => d.Contains(o.OrderID));
+            string query2 = db.GetCommand(q).CommandText;
+            Assert.AreEqual(query1, query2);
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_Conversions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_Conversions.cs
@@ -1,138 +1,138 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Globalization;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTests_Conversions:TestBase
-    {
-
-        [Test]
-        public void TestToString01()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where e.LastName.ToString() == "F"
-                        select e;
-
-            var list = query.ToList();
-        }
-
-        [Test]
-        [ExpectedException(typeof(System.NotSupportedException))]
-        public void TestToString02()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.OrderDetails
-                        where e.ToString() == "1"
-                        select e;
-
-            var list = query.ToList();
-        }
-
-        [Test]
-        public void TestToString03()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.OrderDetails
-                        where e.Discount.ToString() == "1"
-                        select e;
-
-            var list = query.ToList();
-        }
-
-        [Test]
-        public void TestToString04()
-        {
-            Northwind db = CreateDB();
-            object strangeObject4Sql = new HttpStyleUriParser();
-            var query = from e in db.OrderDetails
-                        where e.Discount.ToString() == strangeObject4Sql.ToString()
-                        select e;
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void ParseInt()
-        {
-            Northwind db = CreateDB();
-            string year = "1997";
-            var query = from e in db.Employees
-                        where e.BirthDate.Value.Year == int.Parse(year)
-                        select e;
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void ParseFloat()
-        {
-            Northwind db = CreateDB();
-            string realNumber = "0,1";
-            var query = from e in db.Employees
-                        where e.BirthDate.Value.Year == float.Parse(realNumber)
-                        select e;
-
-            var list = query.ToList();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTests_Conversions:TestBase
+    {
+
+        [Test]
+        public void TestToString01()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where e.LastName.ToString() == "F"
+                        select e;
+
+            var list = query.ToList();
+        }
+
+        [Test]
+        [ExpectedException(typeof(System.NotSupportedException))]
+        public void TestToString02()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.OrderDetails
+                        where e.ToString() == "1"
+                        select e;
+
+            var list = query.ToList();
+        }
+
+        [Test]
+        public void TestToString03()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.OrderDetails
+                        where e.Discount.ToString() == "1"
+                        select e;
+
+            var list = query.ToList();
+        }
+
+        [Test]
+        public void TestToString04()
+        {
+            Northwind db = CreateDB();
+            object strangeObject4Sql = new HttpStyleUriParser();
+            var query = from e in db.OrderDetails
+                        where e.Discount.ToString() == strangeObject4Sql.ToString()
+                        select e;
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void ParseInt()
+        {
+            Northwind db = CreateDB();
+            string year = "1997";
+            var query = from e in db.Employees
+                        where e.BirthDate.Value.Year == int.Parse(year)
+                        select e;
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void ParseFloat()
+        {
+            Northwind db = CreateDB();
+            string realNumber = "0,1";
+            var query = from e in db.Employees
+                        where e.BirthDate.Value.Year == float.Parse(realNumber)
+                        select e;
+
+            var list = query.ToList();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_DateTimeFunctions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_DateTimeFunctions.cs
@@ -1,510 +1,510 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Globalization;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTests_DateTimeFunctions : TestBase
-    {
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetYear()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.OrderDate.Value.Year == 1996
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetMonth()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.OrderDate.Value.Month == 10
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetDay()
-        {
-            Northwind db = CreateDB();
-
-            var q = from o in db.Orders
-                    where o.OrderDate.Value.Day == 16
-                    select o;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetHours()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from o in db.Orders
-                     where o.OrderDate.Value.Hour == 0
-                     select o).ToList();
-
-
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetMinutes()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from o in db.Orders
-                     where o.OrderDate.Value.Minute == 0
-                     select o).ToList();
-
-
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetSeconds()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from o in db.Orders
-                     where o.OrderDate.Value.Second == 16
-                     select o).ToList();
-
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetMilliSeconds()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from o in db.Orders
-                     where o.OrderDate.Value.Millisecond == 0
-                     select o).ToList();
-
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void GetCurrentDateTime()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where e.BirthDate.HasValue && e.BirthDate.Value == DateTime.Now
-                        select e;
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void Parse01()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where e.BirthDate.Value == DateTime.Parse("1984/05/02")
-                        select e;
-
-            var list = query.ToList();
-        }
-
-        [Test]
-        [ExpectedException(typeof(NotSupportedException))]
-        public void Parse02()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where e.BirthDate.Value == DateTime.Parse(e.BirthDate.ToString())
-                        select e;
-
-            var list = query.ToList();
-        }
-
-        [Test]
-        public void Parse03()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where e.BirthDate.HasValue
-                        select e.BirthDate.Value == DateTime.Parse("1984/05/02");
-
-
-            var list = query.ToList();
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void Parse04()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        select e.BirthDate.Value == DateTime.Parse(e.BirthDate.ToString());
-
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffTotalHours()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalHours > 0
-                        select e;
-
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffHours()
-        {
-            Northwind db = CreateDB();
-
-            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddHours(2);
-
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - parameterDateTime).Hours > -2
-                        select e;
-
-
-            var list = query.ToList();
-            Assert.Greater(list.Count, 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffTotalMinutes()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalMinutes > 0
-                        select e;
-
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffMinutes()
-        {
-            Northwind db = CreateDB();
-
-            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddMinutes(2);
-
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - parameterDateTime).Minutes == -2
-                        select e;
-
-
-            var list = query.ToList();
-            Assert.Greater(list.Count, 0);
-        }
-
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffTotalSeconds()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalSeconds > 0
-                        select e;
-
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffSeconds()
-        {
-            Northwind db = CreateDB();
-
-            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddSeconds(2);
-
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - parameterDateTime).Seconds == -2
-                        select e;
-
-
-            var list = query.ToList();
-            Assert.Greater(list.Count, 0);
-        }
-
-#if !DEBUG && (SQLITE || MSSQL)
-        // L2SQL: SQL Server doesnt' seem to support millisecond precision.
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffMilliseconds()
-        {
-            Northwind db = CreateDB();
-
-            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddMilliseconds(2);
-
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - parameterDateTime).Milliseconds == -2
-                        select e;
-            
-
-            var list = query.ToList();
-            Assert.Greater(list.Count, 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffTotalMilliseconds()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalMinutes > 0
-                        select e;
-
-
-            var list = query.ToList();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffDays()
-        {
-            Northwind db = CreateDB();
-
-            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddDays(2);
-
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value - parameterDateTime).Days == -2
-                        select e;
-
-
-            var list = query.ToList();
-            Assert.Greater(list.Count, 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffTotalDays()
-        {
-            Northwind db = CreateDB();
-            DateTime firstDate = db.Employees.First().BirthDate.Value;
-
-            DateTime parameterDate = firstDate.Date.AddDays(2);
-            parameterDate = parameterDate.Date.AddHours(12);
-
-
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value -parameterDate).TotalDays == -2.5
-                        select e;
-
-            var list = query.ToList();
-
-            Assert.Greater(list.Count, 0);
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void DateTimeDiffTotalDaysSelectWithNulls01()
-        {
-            
-            Northwind db = CreateDB();
-
-            var employee = new Employee
-            {
-                FirstName = "Test First",
-                LastName  = "Test Last",
-            };
-            db.Employees.InsertOnSubmit(employee);
-            db.SubmitChanges();
-
-            DateTime firstDate = db.Employees.First().BirthDate.Value;
-            firstDate.Date.AddDays(2);
-            DateTime parameterDate = firstDate.Date.AddHours(12);
-
-            try
-            {
-                //this test should throw an invalid operation exception since one BirthDate is null so select clausle should crash
-                var query = from e in db.Employees
-                            select (e.BirthDate.Value - parameterDate).TotalDays;
-
-                var list = query.ToList();
-
-                Assert.Greater(list.Count, 0);
-            }
-            finally
-            {
-                db.Employees.DeleteOnSubmit(employee);
-                db.SubmitChanges();
-            }
-        }
-
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        public void DateTimeDiffTotalDaysSelectWithNulls02()
-        {
-            Northwind db = CreateDB();
-
-            var employee = new Employee
-            {
-                FirstName = "Test First",
-                LastName = "Test Last",
-            };
-            db.Employees.InsertOnSubmit(employee);
-            db.SubmitChanges();
-
-            DateTime firstDate = db.Employees.First().BirthDate.Value;
-
-            DateTime parameterDate = firstDate.Date.AddDays(2);
-            parameterDate = parameterDate.Date.AddHours(12);
-
-            try
-            {
-                var query = from e in db.Employees
-                            where e.BirthDate.HasValue
-                            select (e.BirthDate.Value - parameterDate).TotalDays;
-
-                var list = query.ToList();
-
-                Assert.Greater(list.Count, 0);
-            }
-            finally
-            {
-                db.Employees.DeleteOnSubmit(employee);
-                db.SubmitChanges();
-            }
-        }
-
-
-#if !DEBUG && (SQLITE || (MSSQL && L2SQL))
-        // L2SQL: System.Data.SqlClient.SqlException : The datepart minute is not supported by date function datepart for data type date.
-        [Explicit]
-#endif
-        [Test]
-        public void DateGetDate()
-        {
-            Northwind db = CreateDB();
-            var query = from e in db.Employees
-                        where (e.BirthDate.Value.Date).Minute == 0
-                        select e;
-
-
-            var list = query.ToList();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTests_DateTimeFunctions : TestBase
+    {
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetYear()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.OrderDate.Value.Year == 1996
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetMonth()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.OrderDate.Value.Month == 10
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetDay()
+        {
+            Northwind db = CreateDB();
+
+            var q = from o in db.Orders
+                    where o.OrderDate.Value.Day == 16
+                    select o;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetHours()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from o in db.Orders
+                     where o.OrderDate.Value.Hour == 0
+                     select o).ToList();
+
+
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetMinutes()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from o in db.Orders
+                     where o.OrderDate.Value.Minute == 0
+                     select o).ToList();
+
+
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetSeconds()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from o in db.Orders
+                     where o.OrderDate.Value.Second == 16
+                     select o).ToList();
+
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetMilliSeconds()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from o in db.Orders
+                     where o.OrderDate.Value.Millisecond == 0
+                     select o).ToList();
+
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void GetCurrentDateTime()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where e.BirthDate.HasValue && e.BirthDate.Value == DateTime.Now
+                        select e;
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void Parse01()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where e.BirthDate.Value == DateTime.Parse("1984/05/02")
+                        select e;
+
+            var list = query.ToList();
+        }
+
+        [Test]
+        [ExpectedException(typeof(NotSupportedException))]
+        public void Parse02()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where e.BirthDate.Value == DateTime.Parse(e.BirthDate.ToString())
+                        select e;
+
+            var list = query.ToList();
+        }
+
+        [Test]
+        public void Parse03()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where e.BirthDate.HasValue
+                        select e.BirthDate.Value == DateTime.Parse("1984/05/02");
+
+
+            var list = query.ToList();
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void Parse04()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        select e.BirthDate.Value == DateTime.Parse(e.BirthDate.ToString());
+
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffTotalHours()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalHours > 0
+                        select e;
+
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffHours()
+        {
+            Northwind db = CreateDB();
+
+            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddHours(2);
+
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - parameterDateTime).Hours > -2
+                        select e;
+
+
+            var list = query.ToList();
+            Assert.Greater(list.Count, 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffTotalMinutes()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalMinutes > 0
+                        select e;
+
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffMinutes()
+        {
+            Northwind db = CreateDB();
+
+            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddMinutes(2);
+
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - parameterDateTime).Minutes == -2
+                        select e;
+
+
+            var list = query.ToList();
+            Assert.Greater(list.Count, 0);
+        }
+
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffTotalSeconds()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalSeconds > 0
+                        select e;
+
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffSeconds()
+        {
+            Northwind db = CreateDB();
+
+            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddSeconds(2);
+
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - parameterDateTime).Seconds == -2
+                        select e;
+
+
+            var list = query.ToList();
+            Assert.Greater(list.Count, 0);
+        }
+
+#if !DEBUG && (SQLITE || MSSQL)
+        // L2SQL: SQL Server doesnt' seem to support millisecond precision.
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffMilliseconds()
+        {
+            Northwind db = CreateDB();
+
+            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddMilliseconds(2);
+
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - parameterDateTime).Milliseconds == -2
+                        select e;
+            
+
+            var list = query.ToList();
+            Assert.Greater(list.Count, 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffTotalMilliseconds()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalMinutes > 0
+                        select e;
+
+
+            var list = query.ToList();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffDays()
+        {
+            Northwind db = CreateDB();
+
+            DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddDays(2);
+
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value - parameterDateTime).Days == -2
+                        select e;
+
+
+            var list = query.ToList();
+            Assert.Greater(list.Count, 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffTotalDays()
+        {
+            Northwind db = CreateDB();
+            DateTime firstDate = db.Employees.First().BirthDate.Value;
+
+            DateTime parameterDate = firstDate.Date.AddDays(2);
+            parameterDate = parameterDate.Date.AddHours(12);
+
+
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value -parameterDate).TotalDays == -2.5
+                        select e;
+
+            var list = query.ToList();
+
+            Assert.Greater(list.Count, 0);
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void DateTimeDiffTotalDaysSelectWithNulls01()
+        {
+            
+            Northwind db = CreateDB();
+
+            var employee = new Employee
+            {
+                FirstName = "Test First",
+                LastName  = "Test Last",
+            };
+            db.Employees.InsertOnSubmit(employee);
+            db.SubmitChanges();
+
+            DateTime firstDate = db.Employees.First().BirthDate.Value;
+            firstDate.Date.AddDays(2);
+            DateTime parameterDate = firstDate.Date.AddHours(12);
+
+            try
+            {
+                //this test should throw an invalid operation exception since one BirthDate is null so select clausle should crash
+                var query = from e in db.Employees
+                            select (e.BirthDate.Value - parameterDate).TotalDays;
+
+                var list = query.ToList();
+
+                Assert.Greater(list.Count, 0);
+            }
+            finally
+            {
+                db.Employees.DeleteOnSubmit(employee);
+                db.SubmitChanges();
+            }
+        }
+
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        public void DateTimeDiffTotalDaysSelectWithNulls02()
+        {
+            Northwind db = CreateDB();
+
+            var employee = new Employee
+            {
+                FirstName = "Test First",
+                LastName = "Test Last",
+            };
+            db.Employees.InsertOnSubmit(employee);
+            db.SubmitChanges();
+
+            DateTime firstDate = db.Employees.First().BirthDate.Value;
+
+            DateTime parameterDate = firstDate.Date.AddDays(2);
+            parameterDate = parameterDate.Date.AddHours(12);
+
+            try
+            {
+                var query = from e in db.Employees
+                            where e.BirthDate.HasValue
+                            select (e.BirthDate.Value - parameterDate).TotalDays;
+
+                var list = query.ToList();
+
+                Assert.Greater(list.Count, 0);
+            }
+            finally
+            {
+                db.Employees.DeleteOnSubmit(employee);
+                db.SubmitChanges();
+            }
+        }
+
+
+#if !DEBUG && (SQLITE || (MSSQL && L2SQL))
+        // L2SQL: System.Data.SqlClient.SqlException : The datepart minute is not supported by date function datepart for data type date.
+        [Explicit]
+#endif
+        [Test]
+        public void DateGetDate()
+        {
+            Northwind db = CreateDB();
+            var query = from e in db.Employees
+                        where (e.BirthDate.Value.Date).Minute == 0
+                        select e;
+
+
+            var list = query.ToList();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_EntitySet.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_EntitySet.cs
@@ -1,422 +1,422 @@
-﻿using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-using System.Data.Linq;
-
-#if MONO_STRICT
-using DataLoadOptions = System.Data.Linq.DataLoadOptions;
-#else
-using DataLoadOptions = DbLinq.Data.Linq.DataLoadOptions;
-#endif
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class EntitySet : TestBase
-    {
-
-        [Test]
-        public void SimpleMemberAccess01()
-        {
-            var customer = new Customer();
-            var orders = customer.Orders;
-        }
-
-        [Test]
-        public void SimpleMemberAccess02()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            Assert.Greater(customer.Orders.Count, 0);
-        }
-
-#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void EntitySetEnumerationProjection()
-        {
-            var db = CreateDB();
-            var results = (from c in db.Customers select c.Orders).ToList();
-
-            Assert.Greater(results.Count, 0);
-        }
-
-        [Test]
-        public void HasLoadedOrAsignedValues01()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues);
-
-            customer.Orders.Add(new Order());
-            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues);
-        }
-
-        [Test]
-        public void HasLoadedOrAsignedValues02()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues);
-
-            customer.Orders.Assign(System.Linq.Enumerable.Empty<Order>());
-            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues);
-        }
-
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void InvalidSourceChange()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-
-            Assert.Greater(customer.Orders.Count, 0, "#1");
-            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
-            customer.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void InvalidSourceChange2()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues, "#1");
-            customer.Orders.Assign(new List<Order>());
-            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
-            customer.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
-        }
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void InvalidSourceChange3()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            customer.Orders.SetSource(new List<Order>());
-            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues, "#1");
-            customer.Orders.Load();
-            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
-            customer.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
-        }
-
-        [Test]
-        public void SourceChange()
-        {
-            var db = CreateDB();
-
-            int ordersCount = (from cust in db.Customers
-                               select cust.Orders.Count).First();
-
-            Assert.Greater(ordersCount, 0);
-
-            var customer2 = db.Customers.First();
-            customer2.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
-            Assert.AreEqual(customer2.Orders.Count, 0);
-        }
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void Refresh01()
-        {
-            var db = CreateDB();
-            var c = db.Customers.First();
-
-            int beforeCount = c.Orders.Count;
-            Assert.Greater(beforeCount, 0);
-            c.Orders.Clear();
-            Assert.AreEqual(c.Orders.Count, 0);
-            c.Orders.AddRange(db.Orders);
-            Assert.Greater(c.Orders.Count, beforeCount);
-            db.Refresh(RefreshMode.OverwriteCurrentValues, c.Orders);
-
-            Assert.AreEqual(c.Orders.Count, beforeCount);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void Refresh02()
-        {
-            var db = CreateDB();
-            var c = db.Customers.First();
-
-            int beforeCount = c.Orders.Count;
-            Assert.Greater(beforeCount, 0);
-            c.Orders.Clear();
-            Assert.AreEqual(c.Orders.Count, 0);
-            c.Orders.AddRange(db.Orders);
-
-            int middleCount = c.Orders.Count;
-            Assert.Greater(c.Orders.Count, beforeCount);
-
-            db.Refresh(RefreshMode.KeepCurrentValues, c.Orders);
-            Assert.AreEqual(c.Orders.Count, middleCount);
-
-            db.Refresh(RefreshMode.KeepChanges, c.Orders);
-            Assert.AreEqual(c.Orders.Count, middleCount);
-        }
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void Refresh03()
-        {
-            var db = CreateDB();
-            var c = db.Customers.First();
-
-            var order = c.Orders.First();
-            string newcustomerId = "NEWCUSTOMERID";
-            order.CustomerID = newcustomerId;
-
-            db.Refresh(RefreshMode.OverwriteCurrentValues, c.Orders);
-            Assert.AreNotEqual(order.CustomerID, newcustomerId);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void Refresh04()
-        {
-            var db = CreateDB();
-            var c = db.Customers.First();
-
-            var order = c.Orders.First();
-            string newcustomerId = "NEWCUSTOMERID";
-            order.CustomerID = newcustomerId;
-
-            db.Refresh(RefreshMode.KeepCurrentValues, c.Orders);
-            Assert.AreEqual(order.CustomerID, newcustomerId);
-
-            db.Refresh(RefreshMode.KeepChanges, c.Orders);
-            Assert.AreEqual(order.CustomerID, newcustomerId);
-        }
-
-
-        [Test]
-        public void ListChangedEvent()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.Where(c => c.Orders.Count > 0).First();
-            Assert.Greater(customer.Orders.Count, 0);
-            bool ok;
-            System.ComponentModel.ListChangedEventArgs args = null;
-            customer.Orders.ListChanged += delegate(object sender, System.ComponentModel.ListChangedEventArgs a) 
-                { 
-                    ok = true; 
-                    args = a; 
-                };
-
-            ok = false;
-            args = null;
-            customer.Orders.Remove(customer.Orders.First());
-            Assert.IsTrue(ok);
-            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemDeleted, args.ListChangedType);
-            Assert.AreEqual(0, args.NewIndex);
-            Assert.AreEqual(-1, args.OldIndex);
-
-            ok = false;
-            args = null;
-            customer.Orders.Assign(Enumerable.Empty<Order>());
-            Assert.IsTrue(ok);
-            Assert.AreEqual(System.ComponentModel.ListChangedType.Reset, args.ListChangedType);
-            Assert.AreEqual(0, args.NewIndex);
-            Assert.AreEqual(-1, args.OldIndex);
-
-            ok = false;
-            args = null;
-            customer.Orders.Add(db.Orders.First());
-            Assert.IsTrue(ok);
-            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemAdded, args.ListChangedType);
-            Assert.AreEqual(0, args.NewIndex);
-            Assert.AreEqual(-1, args.OldIndex);
-
-            ok = false;
-            args = null;
-            customer.Orders.Clear();
-            Assert.IsTrue(ok);
-            Assert.AreEqual(System.ComponentModel.ListChangedType.Reset, args.ListChangedType);
-            Assert.AreEqual(0, args.NewIndex);
-            Assert.AreEqual(-1, args.OldIndex);
-
-            ok = false;
-            args = null;
-            customer.Orders.Insert(0, new Order());
-            Assert.IsTrue(ok);
-            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemAdded, args.ListChangedType);
-            Assert.AreEqual(0, args.NewIndex);
-            Assert.AreEqual(-1, args.OldIndex);
-
-            ok = false;
-            args = null;
-            customer.Orders.RemoveAt(0);
-            Assert.IsTrue(ok);
-            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemDeleted, args.ListChangedType);
-            Assert.AreEqual(args.NewIndex, 0);
-            Assert.AreEqual(args.OldIndex, -1);
-        }
-
-        [Test]
-        public void Load()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            var orders = customer.Orders;
-
-            Assert.IsFalse(orders.HasLoadedOrAssignedValues);
-            orders.Load();
-            Assert.IsTrue(orders.HasLoadedOrAssignedValues);
-        }
-
-        [Test]
-        public void DeferedExecution()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            Assert.IsTrue(customer.Orders.IsDeferred);
-
-            customer.Orders.Load();
-            Assert.IsFalse(customer.Orders.IsDeferred);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void DeferedExecutionAndLoadWith()
-        {
-            var db = CreateDB();
-            DataLoadOptions loadoptions = new DataLoadOptions();
-            loadoptions.LoadWith<Customer>(c => c.Orders);
-            db.LoadOptions = loadoptions;
-
-            var customer = db.Customers.First();
-            Assert.IsFalse(customer.Orders.IsDeferred, "#1");
-            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
-        }
-
-        [Test]
-        public void Add()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            int beforeCount = customer.Orders.Count;
-            var order = new Order();
-            customer.Orders.Add(order);
-            Assert.AreEqual(beforeCount + 1, customer.Orders.Count, "#3");
-            customer.Orders.Add(order); // do not actually add
-            Assert.AreEqual(beforeCount + 1, customer.Orders.Count, "#4");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentOutOfRangeException))]
-        public void IList_Add()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            var order = new Order();
-            ((IList)customer.Orders).Add(order);
-            ((IList)customer.Orders).Add(order); // raises ArgumentOutOfRangeException for duplicate
-        }
-
-        [Test]
-        public void Clear()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-
-            if (customer.Orders.Count == 0)
-                Assert.Ignore();
-
-            customer.Orders.Clear();
-            Assert.AreEqual(customer.Orders.Count, 0);
-        }
-
-        [Test]
-        public void AddRange()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            int beforeCount = customer.Orders.Count;
-            var order = new Order();
-            customer.Orders.AddRange(new Order[] { order, new Order() });
-            Assert.AreEqual(beforeCount + 2, customer.Orders.Count);
-            customer.Orders.AddRange(new Order[] { new Order(), order }); // one is existing -> not added
-            Assert.AreEqual(beforeCount + 3, customer.Orders.Count);
-        }
-
-        [Test]
-        public void Remove()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            Assert.IsTrue(customer.Orders.IsDeferred);
-            int beforeCount = customer.Orders.Count;
-            Assert.IsFalse(customer.Orders.IsDeferred);
-
-            if (beforeCount == 0)
-                Assert.Ignore();
-
-            Assert.IsFalse(customer.Orders.Remove(null));
-            Assert.AreEqual(beforeCount, customer.Orders.Count);
-
-            Assert.IsTrue(customer.Orders.Remove(customer.Orders.First()));
-            Assert.AreEqual(customer.Orders.Count, beforeCount - 1);
-        }
-
-        [Test]
-        public void RemoveAt()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-            int beforeCount = customer.Orders.Count;
-
-            if (beforeCount == 0)
-                Assert.Ignore();
-
-            customer.Orders.RemoveAt(0);
-            Assert.AreEqual(customer.Orders.Count, beforeCount - 1);
-        }
-
-        [Test]
-        public void RemoveAll()
-        {
-            Clear();
-        }
-    }
-}
+﻿using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+using System.Data.Linq;
+
+#if MONO_STRICT
+using DataLoadOptions = System.Data.Linq.DataLoadOptions;
+#else
+using DataLoadOptions = DbLinq.Data.Linq.DataLoadOptions;
+#endif
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class EntitySet : TestBase
+    {
+
+        [Test]
+        public void SimpleMemberAccess01()
+        {
+            var customer = new Customer();
+            var orders = customer.Orders;
+        }
+
+        [Test]
+        public void SimpleMemberAccess02()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            Assert.Greater(customer.Orders.Count, 0);
+        }
+
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void EntitySetEnumerationProjection()
+        {
+            var db = CreateDB();
+            var results = (from c in db.Customers select c.Orders).ToList();
+
+            Assert.Greater(results.Count, 0);
+        }
+
+        [Test]
+        public void HasLoadedOrAsignedValues01()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues);
+
+            customer.Orders.Add(new Order());
+            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues);
+        }
+
+        [Test]
+        public void HasLoadedOrAsignedValues02()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues);
+
+            customer.Orders.Assign(System.Linq.Enumerable.Empty<Order>());
+            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues);
+        }
+
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void InvalidSourceChange()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+
+            Assert.Greater(customer.Orders.Count, 0, "#1");
+            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
+            customer.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void InvalidSourceChange2()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues, "#1");
+            customer.Orders.Assign(new List<Order>());
+            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
+            customer.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
+        }
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void InvalidSourceChange3()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            customer.Orders.SetSource(new List<Order>());
+            Assert.IsFalse(customer.Orders.HasLoadedOrAssignedValues, "#1");
+            customer.Orders.Load();
+            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
+            customer.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
+        }
+
+        [Test]
+        public void SourceChange()
+        {
+            var db = CreateDB();
+
+            int ordersCount = (from cust in db.Customers
+                               select cust.Orders.Count).First();
+
+            Assert.Greater(ordersCount, 0);
+
+            var customer2 = db.Customers.First();
+            customer2.Orders.SetSource(System.Linq.Enumerable.Empty<Order>());
+            Assert.AreEqual(customer2.Orders.Count, 0);
+        }
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void Refresh01()
+        {
+            var db = CreateDB();
+            var c = db.Customers.First();
+
+            int beforeCount = c.Orders.Count;
+            Assert.Greater(beforeCount, 0);
+            c.Orders.Clear();
+            Assert.AreEqual(c.Orders.Count, 0);
+            c.Orders.AddRange(db.Orders);
+            Assert.Greater(c.Orders.Count, beforeCount);
+            db.Refresh(RefreshMode.OverwriteCurrentValues, c.Orders);
+
+            Assert.AreEqual(c.Orders.Count, beforeCount);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void Refresh02()
+        {
+            var db = CreateDB();
+            var c = db.Customers.First();
+
+            int beforeCount = c.Orders.Count;
+            Assert.Greater(beforeCount, 0);
+            c.Orders.Clear();
+            Assert.AreEqual(c.Orders.Count, 0);
+            c.Orders.AddRange(db.Orders);
+
+            int middleCount = c.Orders.Count;
+            Assert.Greater(c.Orders.Count, beforeCount);
+
+            db.Refresh(RefreshMode.KeepCurrentValues, c.Orders);
+            Assert.AreEqual(c.Orders.Count, middleCount);
+
+            db.Refresh(RefreshMode.KeepChanges, c.Orders);
+            Assert.AreEqual(c.Orders.Count, middleCount);
+        }
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void Refresh03()
+        {
+            var db = CreateDB();
+            var c = db.Customers.First();
+
+            var order = c.Orders.First();
+            string newcustomerId = "NEWCUSTOMERID";
+            order.CustomerID = newcustomerId;
+
+            db.Refresh(RefreshMode.OverwriteCurrentValues, c.Orders);
+            Assert.AreNotEqual(order.CustomerID, newcustomerId);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void Refresh04()
+        {
+            var db = CreateDB();
+            var c = db.Customers.First();
+
+            var order = c.Orders.First();
+            string newcustomerId = "NEWCUSTOMERID";
+            order.CustomerID = newcustomerId;
+
+            db.Refresh(RefreshMode.KeepCurrentValues, c.Orders);
+            Assert.AreEqual(order.CustomerID, newcustomerId);
+
+            db.Refresh(RefreshMode.KeepChanges, c.Orders);
+            Assert.AreEqual(order.CustomerID, newcustomerId);
+        }
+
+
+        [Test]
+        public void ListChangedEvent()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.Where(c => c.Orders.Count > 0).First();
+            Assert.Greater(customer.Orders.Count, 0);
+            bool ok;
+            System.ComponentModel.ListChangedEventArgs args = null;
+            customer.Orders.ListChanged += delegate(object sender, System.ComponentModel.ListChangedEventArgs a) 
+                { 
+                    ok = true; 
+                    args = a; 
+                };
+
+            ok = false;
+            args = null;
+            customer.Orders.Remove(customer.Orders.First());
+            Assert.IsTrue(ok);
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemDeleted, args.ListChangedType);
+            Assert.AreEqual(0, args.NewIndex);
+            Assert.AreEqual(-1, args.OldIndex);
+
+            ok = false;
+            args = null;
+            customer.Orders.Assign(Enumerable.Empty<Order>());
+            Assert.IsTrue(ok);
+            Assert.AreEqual(System.ComponentModel.ListChangedType.Reset, args.ListChangedType);
+            Assert.AreEqual(0, args.NewIndex);
+            Assert.AreEqual(-1, args.OldIndex);
+
+            ok = false;
+            args = null;
+            customer.Orders.Add(db.Orders.First());
+            Assert.IsTrue(ok);
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemAdded, args.ListChangedType);
+            Assert.AreEqual(0, args.NewIndex);
+            Assert.AreEqual(-1, args.OldIndex);
+
+            ok = false;
+            args = null;
+            customer.Orders.Clear();
+            Assert.IsTrue(ok);
+            Assert.AreEqual(System.ComponentModel.ListChangedType.Reset, args.ListChangedType);
+            Assert.AreEqual(0, args.NewIndex);
+            Assert.AreEqual(-1, args.OldIndex);
+
+            ok = false;
+            args = null;
+            customer.Orders.Insert(0, new Order());
+            Assert.IsTrue(ok);
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemAdded, args.ListChangedType);
+            Assert.AreEqual(0, args.NewIndex);
+            Assert.AreEqual(-1, args.OldIndex);
+
+            ok = false;
+            args = null;
+            customer.Orders.RemoveAt(0);
+            Assert.IsTrue(ok);
+            Assert.AreEqual(System.ComponentModel.ListChangedType.ItemDeleted, args.ListChangedType);
+            Assert.AreEqual(args.NewIndex, 0);
+            Assert.AreEqual(args.OldIndex, -1);
+        }
+
+        [Test]
+        public void Load()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            var orders = customer.Orders;
+
+            Assert.IsFalse(orders.HasLoadedOrAssignedValues);
+            orders.Load();
+            Assert.IsTrue(orders.HasLoadedOrAssignedValues);
+        }
+
+        [Test]
+        public void DeferedExecution()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            Assert.IsTrue(customer.Orders.IsDeferred);
+
+            customer.Orders.Load();
+            Assert.IsFalse(customer.Orders.IsDeferred);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void DeferedExecutionAndLoadWith()
+        {
+            var db = CreateDB();
+            DataLoadOptions loadoptions = new DataLoadOptions();
+            loadoptions.LoadWith<Customer>(c => c.Orders);
+            db.LoadOptions = loadoptions;
+
+            var customer = db.Customers.First();
+            Assert.IsFalse(customer.Orders.IsDeferred, "#1");
+            Assert.IsTrue(customer.Orders.HasLoadedOrAssignedValues, "#2");
+        }
+
+        [Test]
+        public void Add()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            int beforeCount = customer.Orders.Count;
+            var order = new Order();
+            customer.Orders.Add(order);
+            Assert.AreEqual(beforeCount + 1, customer.Orders.Count, "#3");
+            customer.Orders.Add(order); // do not actually add
+            Assert.AreEqual(beforeCount + 1, customer.Orders.Count, "#4");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentOutOfRangeException))]
+        public void IList_Add()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            var order = new Order();
+            ((IList)customer.Orders).Add(order);
+            ((IList)customer.Orders).Add(order); // raises ArgumentOutOfRangeException for duplicate
+        }
+
+        [Test]
+        public void Clear()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+
+            if (customer.Orders.Count == 0)
+                Assert.Ignore();
+
+            customer.Orders.Clear();
+            Assert.AreEqual(customer.Orders.Count, 0);
+        }
+
+        [Test]
+        public void AddRange()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            int beforeCount = customer.Orders.Count;
+            var order = new Order();
+            customer.Orders.AddRange(new Order[] { order, new Order() });
+            Assert.AreEqual(beforeCount + 2, customer.Orders.Count);
+            customer.Orders.AddRange(new Order[] { new Order(), order }); // one is existing -> not added
+            Assert.AreEqual(beforeCount + 3, customer.Orders.Count);
+        }
+
+        [Test]
+        public void Remove()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            Assert.IsTrue(customer.Orders.IsDeferred);
+            int beforeCount = customer.Orders.Count;
+            Assert.IsFalse(customer.Orders.IsDeferred);
+
+            if (beforeCount == 0)
+                Assert.Ignore();
+
+            Assert.IsFalse(customer.Orders.Remove(null));
+            Assert.AreEqual(beforeCount, customer.Orders.Count);
+
+            Assert.IsTrue(customer.Orders.Remove(customer.Orders.First()));
+            Assert.AreEqual(customer.Orders.Count, beforeCount - 1);
+        }
+
+        [Test]
+        public void RemoveAt()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+            int beforeCount = customer.Orders.Count;
+
+            if (beforeCount == 0)
+                Assert.Ignore();
+
+            customer.Orders.RemoveAt(0);
+            Assert.AreEqual(customer.Orders.Count, beforeCount - 1);
+        }
+
+        [Test]
+        public void RemoveAll()
+        {
+            Clear();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_Join.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_Join.cs
@@ -1,336 +1,336 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Globalization;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTests_Join : TestBase
-    {
-
-#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test(Description = "example by Frans Brouma: select all customers that have no orders")]
-        public void LeftJoin_DefaultIfEmpty()
-        {
-            //example by Frans Brouma on Matt Warren's site
-            //select all customers that have no orders
-            //http://blogs.msdn.com/mattwar/archive/2007/09/04/linq-building-an-iqueryable-provider-part-vii.aspx
-            //http://weblogs.asp.net/fbouma/archive/2007/11/23/developing-linq-to-llblgen-pro-part-9.aspx
-
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    join o in db.Orders on c.CustomerID equals o.CustomerID into oc
-                    from x in oc.DefaultIfEmpty()
-                    where x.OrderID == null
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-            int countPARIS = list.Count(item => item.CustomerID == "PARIS");
-            Assert.IsTrue(countPARIS == 1);
-        }
-
-        [Test]
-        public void LeftOuterJoin_Suppliers()
-        {
-            //http://blogs.class-a.nl/blogs/anko/archive/2008/03/14/linq-to-sql-outer-joins.aspx
-            //example by Anko Duizer (NL)
-            Northwind db = CreateDB();
-            var query = from s in db.Suppliers
-                        join c in db.Customers on s.City equals c.City into temp
-                        from t in temp.DefaultIfEmpty()
-                        select new
-                        {
-                            SupplierName = s.CompanyName,
-                            CustomerName = t.CompanyName,
-                            City = s.City
-                        };
-
-            var list = query.ToList();
-
-            bool foundMelb = false, foundNull = false;
-            foreach (var item in list)
-            {
-                foundMelb = foundMelb || item.City == "Melbourne";
-                foundNull = foundNull || item.City == null;
-            }
-            Assert.IsTrue(foundMelb, "Expected rows with City=Melbourne");
-            Assert.IsFalse(foundNull, "Expected no rows with City=null");
-        }
-
-        // picrap: commented out, it doesn't build because of db.Orderdetails (again, a shared source file...)
-
-        [Test(Description = "Problem discovered by Laurent")]
-        public void Join_Laurent()
-        {
-            Northwind db = CreateDB();
-
-            var q1 = (from p in db.Products
-                      join o in db.OrderDetails on p.ProductID equals o.ProductID
-                      where p.ProductID > 1
-                      select new
-                      {
-                          p.ProductName,
-                          o.OrderID,
-                          o.ProductID,
-                      }
-                      ).ToList();
-
-            Assert.IsTrue(q1.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
-        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTests_Join+Northwind1+ExtendedOrder' is not mapped as a Table.
-        [Explicit]
-#endif
-        [Test]
-        public void RetrieveParentAssociationProperty()
-        {
-            Northwind dbo = CreateDB();
-            Northwind1 db = new Northwind1(dbo.Connection);
-            var t = db.GetTable<Northwind1.ExtendedOrder>();
-            var q = from order in t
-                    select new
-                    {
-                        order.OrderID,
-                        order.CustomerShipCity.ContactName
-                    };
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-
-#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
-        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTests_Join+Northwind1+ExtendedOrder' is not mapped as a Table.
-        [Explicit]
-#endif
-        [Test]
-        public void DifferentParentAndAssociationPropertyNames()
-        {
-            Northwind dbo = CreateDB();
-            Northwind1 db = new Northwind1(dbo.Connection);
-            var query = db.GetTable<Northwind1.ExtendedOrder>() as IQueryable<Northwind1.ExtendedOrder>;
-
-            var q2 = query.Select(e => new Northwind1.ExtendedOrder
-            {
-                OrderID = e.OrderID,
-                ShipAddress = e.CustomerShipCity.ContactName
-            });
-            var list = q2.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
-        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTests_Join+Northwind1+ExtendedOrder' is not mapped as a Table.
-        [Explicit]
-#endif
-        [Test]
-        public void SelectCustomerContactNameFromOrder()
-        {
-            Northwind dbo = CreateDB();
-            Northwind1 db = new Northwind1(dbo.Connection);
-            var t = db.GetTable<Northwind1.ExtendedOrder>();
-
-            var q = from order in t
-                    select new
-                    {
-                        order.CustomerContactName
-                    };
-            var list = q.ToList();
-            Assert.AreEqual(db.Orders.Count(), list.Count());
-            foreach (var s in list)
-                Assert.AreEqual("Test", s);
-        }
-
-        public class Northwind1 : Northwind
-        {
-            public Northwind1(System.Data.IDbConnection connection)
-                : base(connection) { }
-
-            // Linq-SQL requires this: [System.Data.Linq.Mapping.Table(Name = "orders")]
-            public class ExtendedOrder : Order
-            {
-#if MONO_STRICT
-                System.Data.Linq
-#else
-                DbLinq.Data.Linq
-#endif
-.EntityRef<Customer> _x_Customer;
-
-                [System.Data.Linq.Mapping.Association(Storage = "_x_Customer",
-                    ThisKey = "ShipCity", Name =
-#if MYSQL
- "orders_ibfk_1"
-#elif ORACLE
- "SYS_C004742"
-#elif POSTGRES
- "fk_order_customer"
-#elif SQLITE
- "fk_Orders_1"
-#elif INGRES
- "fk_order_customer"
-#elif MSSQL
- "fk_order_customer"
-#elif FIREBIRD
- "??" // TODO: correct FK name
-#else
-#error unknown target
-#endif
-)]
-                public Customer CustomerShipCity
-                {
-                    get { return _x_Customer.Entity; }
-                    set { _x_Customer.Entity = value; }
-                }
-
-                public string CustomerContactName
-                {
-                    get
-                    {
-                        return "Test";
-                    }
-                }
-            }
-
-            public Table<ExtendedOrder> ExtendedOrders
-            {
-                get { return base.GetTable<ExtendedOrder>(); }
-            }
-        }
-
-        [Test]
-        [ExpectedException(typeof(NotSupportedException))]
-        public void WhereBeforeSelect()
-        {
-            Northwind db = CreateDB();
-            var t = db.GetTable<Order>();
-
-            var query = t.Where(o => o.OrderID != 0);
-
-            query = query.Select(dok => new Order
-            {
-                OrderID = dok.OrderID,
-                OrderDate = dok.OrderDate,
-                ShipCity = dok.Customer.ContactName,
-                Freight = dok.Freight
-            });
-            var list = query.ToList();
-        }
-
-        /// <summary>
-        /// Reported by  pwy.mail in http://code.google.com/p/dblinq2007/issues/detail?id=66
-        /// </summary>
-        [Test]
-        public void OrdersLazyLoad()
-        {
-            Northwind db = CreateDB();
-
-            var q =
-              from c in db.Customers
-              select c;
-
-            foreach (var c in q)
-            {
-                Console.WriteLine(c.Address);
-                foreach (var o in c.Orders)
-                    Console.WriteLine(o.OrderID);
-            }
-
-        }
-
-        [Test]
-        public void JoinWhere()
-        {
-            Northwind db = CreateDB();
-
-            var custID = "BT___";
-
-            var custOderInfos = from o in db.Orders
-                                join em in db.Employees on o.EmployeeID equals em.EmployeeID
-                                where o.CustomerID == custID
-                                select new { o, em };
-
-            var l = custOderInfos.ToList();
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        // submitted by bryan costanich
-        public void ImplicitLeftOuterJoin()
-        {
-            var db = CreateDB();
-
-            var dbItems =
-                    (from a in db.Products
-                     from b in db.Suppliers
-                     where a.SupplierID == b.SupplierID
-                     select a);
-
-            var list = dbItems.ToList();
-        }
-    }
-
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTests_Join : TestBase
+    {
+
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test(Description = "example by Frans Brouma: select all customers that have no orders")]
+        public void LeftJoin_DefaultIfEmpty()
+        {
+            //example by Frans Brouma on Matt Warren's site
+            //select all customers that have no orders
+            //http://blogs.msdn.com/mattwar/archive/2007/09/04/linq-building-an-iqueryable-provider-part-vii.aspx
+            //http://weblogs.asp.net/fbouma/archive/2007/11/23/developing-linq-to-llblgen-pro-part-9.aspx
+
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    join o in db.Orders on c.CustomerID equals o.CustomerID into oc
+                    from x in oc.DefaultIfEmpty()
+                    where x.OrderID == null
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+            int countPARIS = list.Count(item => item.CustomerID == "PARIS");
+            Assert.IsTrue(countPARIS == 1);
+        }
+
+        [Test]
+        public void LeftOuterJoin_Suppliers()
+        {
+            //http://blogs.class-a.nl/blogs/anko/archive/2008/03/14/linq-to-sql-outer-joins.aspx
+            //example by Anko Duizer (NL)
+            Northwind db = CreateDB();
+            var query = from s in db.Suppliers
+                        join c in db.Customers on s.City equals c.City into temp
+                        from t in temp.DefaultIfEmpty()
+                        select new
+                        {
+                            SupplierName = s.CompanyName,
+                            CustomerName = t.CompanyName,
+                            City = s.City
+                        };
+
+            var list = query.ToList();
+
+            bool foundMelb = false, foundNull = false;
+            foreach (var item in list)
+            {
+                foundMelb = foundMelb || item.City == "Melbourne";
+                foundNull = foundNull || item.City == null;
+            }
+            Assert.IsTrue(foundMelb, "Expected rows with City=Melbourne");
+            Assert.IsFalse(foundNull, "Expected no rows with City=null");
+        }
+
+        // picrap: commented out, it doesn't build because of db.Orderdetails (again, a shared source file...)
+
+        [Test(Description = "Problem discovered by Laurent")]
+        public void Join_Laurent()
+        {
+            Northwind db = CreateDB();
+
+            var q1 = (from p in db.Products
+                      join o in db.OrderDetails on p.ProductID equals o.ProductID
+                      where p.ProductID > 1
+                      select new
+                      {
+                          p.ProductName,
+                          o.OrderID,
+                          o.ProductID,
+                      }
+                      ).ToList();
+
+            Assert.IsTrue(q1.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
+        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTests_Join+Northwind1+ExtendedOrder' is not mapped as a Table.
+        [Explicit]
+#endif
+        [Test]
+        public void RetrieveParentAssociationProperty()
+        {
+            Northwind dbo = CreateDB();
+            Northwind1 db = new Northwind1(dbo.Connection);
+            var t = db.GetTable<Northwind1.ExtendedOrder>();
+            var q = from order in t
+                    select new
+                    {
+                        order.OrderID,
+                        order.CustomerShipCity.ContactName
+                    };
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+
+#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
+        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTests_Join+Northwind1+ExtendedOrder' is not mapped as a Table.
+        [Explicit]
+#endif
+        [Test]
+        public void DifferentParentAndAssociationPropertyNames()
+        {
+            Northwind dbo = CreateDB();
+            Northwind1 db = new Northwind1(dbo.Connection);
+            var query = db.GetTable<Northwind1.ExtendedOrder>() as IQueryable<Northwind1.ExtendedOrder>;
+
+            var q2 = query.Select(e => new Northwind1.ExtendedOrder
+            {
+                OrderID = e.OrderID,
+                ShipAddress = e.CustomerShipCity.ContactName
+            });
+            var list = q2.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
+        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.ReadTests_Join+Northwind1+ExtendedOrder' is not mapped as a Table.
+        [Explicit]
+#endif
+        [Test]
+        public void SelectCustomerContactNameFromOrder()
+        {
+            Northwind dbo = CreateDB();
+            Northwind1 db = new Northwind1(dbo.Connection);
+            var t = db.GetTable<Northwind1.ExtendedOrder>();
+
+            var q = from order in t
+                    select new
+                    {
+                        order.CustomerContactName
+                    };
+            var list = q.ToList();
+            Assert.AreEqual(db.Orders.Count(), list.Count());
+            foreach (var s in list)
+                Assert.AreEqual("Test", s);
+        }
+
+        public class Northwind1 : Northwind
+        {
+            public Northwind1(System.Data.IDbConnection connection)
+                : base(connection) { }
+
+            // Linq-SQL requires this: [System.Data.Linq.Mapping.Table(Name = "orders")]
+            public class ExtendedOrder : Order
+            {
+#if MONO_STRICT
+                System.Data.Linq
+#else
+                DbLinq.Data.Linq
+#endif
+.EntityRef<Customer> _x_Customer;
+
+                [System.Data.Linq.Mapping.Association(Storage = "_x_Customer",
+                    ThisKey = "ShipCity", Name =
+#if MYSQL
+ "orders_ibfk_1"
+#elif ORACLE
+ "SYS_C004742"
+#elif POSTGRES
+ "fk_order_customer"
+#elif SQLITE
+ "fk_Orders_1"
+#elif INGRES
+ "fk_order_customer"
+#elif MSSQL
+ "fk_order_customer"
+#elif FIREBIRD
+ "??" // TODO: correct FK name
+#else
+#error unknown target
+#endif
+)]
+                public Customer CustomerShipCity
+                {
+                    get { return _x_Customer.Entity; }
+                    set { _x_Customer.Entity = value; }
+                }
+
+                public string CustomerContactName
+                {
+                    get
+                    {
+                        return "Test";
+                    }
+                }
+            }
+
+            public Table<ExtendedOrder> ExtendedOrders
+            {
+                get { return base.GetTable<ExtendedOrder>(); }
+            }
+        }
+
+        [Test]
+        [ExpectedException(typeof(NotSupportedException))]
+        public void WhereBeforeSelect()
+        {
+            Northwind db = CreateDB();
+            var t = db.GetTable<Order>();
+
+            var query = t.Where(o => o.OrderID != 0);
+
+            query = query.Select(dok => new Order
+            {
+                OrderID = dok.OrderID,
+                OrderDate = dok.OrderDate,
+                ShipCity = dok.Customer.ContactName,
+                Freight = dok.Freight
+            });
+            var list = query.ToList();
+        }
+
+        /// <summary>
+        /// Reported by  pwy.mail in http://code.google.com/p/dblinq2007/issues/detail?id=66
+        /// </summary>
+        [Test]
+        public void OrdersLazyLoad()
+        {
+            Northwind db = CreateDB();
+
+            var q =
+              from c in db.Customers
+              select c;
+
+            foreach (var c in q)
+            {
+                Console.WriteLine(c.Address);
+                foreach (var o in c.Orders)
+                    Console.WriteLine(o.OrderID);
+            }
+
+        }
+
+        [Test]
+        public void JoinWhere()
+        {
+            Northwind db = CreateDB();
+
+            var custID = "BT___";
+
+            var custOderInfos = from o in db.Orders
+                                join em in db.Employees on o.EmployeeID equals em.EmployeeID
+                                where o.CustomerID == custID
+                                select new { o, em };
+
+            var l = custOderInfos.ToList();
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        // submitted by bryan costanich
+        public void ImplicitLeftOuterJoin()
+        {
+            var db = CreateDB();
+
+            var dbItems =
+                    (from a in db.Products
+                     from b in db.Suppliers
+                     where a.SupplierID == b.SupplierID
+                     select a);
+
+            var list = dbItems.ToList();
+        }
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_Maths.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_Maths.cs
@@ -1,260 +1,260 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTests_Maths : TestBase
-    {
-
-        [Test]
-        public void Abs01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Abs((double)c.ProductID) > 0.0
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void Abs02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Abs((double)(c.Quantity)) > 0.0
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        //Devuelve el valor absoluto (positivo) de una expresión numérica.
-
-        //EXP (SSIS)
-
-#if !DEBUG && (SQLITE && MONO)
-        [Explicit]
-#endif
-        [Test]
-        public void Exp()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Exp((double)(c.Quantity)) > 0
-                    select c;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-        //Devuelve el exponente de la base e de la expresión especificada.
-
-        //CEILING (SSIS)
-
-
-        //Devuelve el menor entero mayor o igual que una expresión numérica.
-
-#if !DEBUG && (SQLITE && MONO)
-        [Explicit]
-#endif
-        [Test]
-        public void Floor()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Floor((double)(c.Discount)) > 0
-                    select c;
-
-            var list = q.ToList();
-
-        }
-
-
-        //Devuelve el mayor entero que es menor o igual que una expresión numérica.
-
-        //LN (SSIS)
-
-#if !DEBUG && (SQLITE)
-        [Explicit]
-#endif
-        [Test]
-        public void Log01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Log((double)(c.Discount + 1)) > 0.0
-                    select c;
-
-            Assert.AreEqual(838, q.Count());
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES)
-        [Explicit]
-#endif
-        [Test]
-        public void Log02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Log((double)(c.Discount + 1),3.0) > 0.0
-                    select c;
-
-            Assert.AreEqual(838, q.Count());
-        }
-
-
-        //Devuelve el logaritmo natural de una expresión numérica.
-
-        //LOG (SSIS)
-#if !DEBUG && (SQLITE && MONO)
-        [Explicit]
-#endif
-        [Test]
-        public void Log03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Log10((double)(c.Discount + 1)) > 0.0
-                    select c;
-
-            Assert.AreEqual(838, q.Count());
-        }
-
-
-        //Devuelve el logaritmo en base 10 de una expresión numérica.
-
-        //POWER (SSIS)
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void Pow()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Pow((double)(c.Discount), 2.0) > 0
-                    select c;
-
-            var list = q.ToList();
-
-        }
-        //Devuelve el resultado de elevar una expresión numérica a una determinada potencia.
-
-        //ROUND (SSIS)
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test]
-        public void Round()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Round((double)(c.Discount), MidpointRounding.AwayFromZero) > 0
-                    select c;
-
-            var list = q.ToList();
-
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(NotSupportedException))]
-        public void Round02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Round((double)(c.Discount)) > 0
-                    select c;
-
-            var list = q.ToList();
-        }
-
-        //Devuelve una expresión numérica, redondeada a la longitud o precisión especificada. .
-
-        //SIGN (SSIS)
-
-
-#if !DEBUG && (SQLITE && MONO)
-        [Explicit]
-#endif
-        [Test]
-        public void Sign01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.OrderDetails
-                    where Math.Sign((double)(c.Discount)) > 0d
-                    select c;
-
-            var list = q.ToList();
-        }
-        //Devuelve el signo positivo (+), cero (0) o negativo (-) de una expresión numérica.
-
-        //SQUARE (SSIS)
-
-
-        //Devuelve el cuadrado de una expresión numérica.
-
-        //SQRT (SSIS) 
-
-#if !DEBUG && (SQLITE && MONO)
-        [Explicit]
-#endif
-        [Test]
-        public void Sqrt()
-        {
-            Northwind db = CreateDB();
-            //Employee e;
-            //Order o;
-            var q = from c in db.OrderDetails
-                    where Math.Sqrt((double)(c.Discount)) > 0
-                    select c;
-
-            var list = q.ToList();
-        }
-    }
-
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTests_Maths : TestBase
+    {
+
+        [Test]
+        public void Abs01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Abs((double)c.ProductID) > 0.0
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void Abs02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Abs((double)(c.Quantity)) > 0.0
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        //Devuelve el valor absoluto (positivo) de una expresión numérica.
+
+        //EXP (SSIS)
+
+#if !DEBUG && (SQLITE && MONO)
+        [Explicit]
+#endif
+        [Test]
+        public void Exp()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Exp((double)(c.Quantity)) > 0
+                    select c;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+        //Devuelve el exponente de la base e de la expresión especificada.
+
+        //CEILING (SSIS)
+
+
+        //Devuelve el menor entero mayor o igual que una expresión numérica.
+
+#if !DEBUG && (SQLITE && MONO)
+        [Explicit]
+#endif
+        [Test]
+        public void Floor()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Floor((double)(c.Discount)) > 0
+                    select c;
+
+            var list = q.ToList();
+
+        }
+
+
+        //Devuelve el mayor entero que es menor o igual que una expresión numérica.
+
+        //LN (SSIS)
+
+#if !DEBUG && (SQLITE)
+        [Explicit]
+#endif
+        [Test]
+        public void Log01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Log((double)(c.Discount + 1)) > 0.0
+                    select c;
+
+            Assert.AreEqual(838, q.Count());
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES)
+        [Explicit]
+#endif
+        [Test]
+        public void Log02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Log((double)(c.Discount + 1),3.0) > 0.0
+                    select c;
+
+            Assert.AreEqual(838, q.Count());
+        }
+
+
+        //Devuelve el logaritmo natural de una expresión numérica.
+
+        //LOG (SSIS)
+#if !DEBUG && (SQLITE && MONO)
+        [Explicit]
+#endif
+        [Test]
+        public void Log03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Log10((double)(c.Discount + 1)) > 0.0
+                    select c;
+
+            Assert.AreEqual(838, q.Count());
+        }
+
+
+        //Devuelve el logaritmo en base 10 de una expresión numérica.
+
+        //POWER (SSIS)
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void Pow()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Pow((double)(c.Discount), 2.0) > 0
+                    select c;
+
+            var list = q.ToList();
+
+        }
+        //Devuelve el resultado de elevar una expresión numérica a una determinada potencia.
+
+        //ROUND (SSIS)
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test]
+        public void Round()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Round((double)(c.Discount), MidpointRounding.AwayFromZero) > 0
+                    select c;
+
+            var list = q.ToList();
+
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(NotSupportedException))]
+        public void Round02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Round((double)(c.Discount)) > 0
+                    select c;
+
+            var list = q.ToList();
+        }
+
+        //Devuelve una expresión numérica, redondeada a la longitud o precisión especificada. .
+
+        //SIGN (SSIS)
+
+
+#if !DEBUG && (SQLITE && MONO)
+        [Explicit]
+#endif
+        [Test]
+        public void Sign01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.OrderDetails
+                    where Math.Sign((double)(c.Discount)) > 0d
+                    select c;
+
+            var list = q.ToList();
+        }
+        //Devuelve el signo positivo (+), cero (0) o negativo (-) de una expresión numérica.
+
+        //SQUARE (SSIS)
+
+
+        //Devuelve el cuadrado de una expresión numérica.
+
+        //SQRT (SSIS) 
+
+#if !DEBUG && (SQLITE && MONO)
+        [Explicit]
+#endif
+        [Test]
+        public void Sqrt()
+        {
+            Northwind db = CreateDB();
+            //Employee e;
+            //Order o;
+            var q = from c in db.OrderDetails
+                    where Math.Sqrt((double)(c.Discount)) > 0
+                    select c;
+
+            var list = q.ToList();
+        }
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_ReferenceLoading.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_ReferenceLoading.cs
@@ -1,163 +1,163 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-using System.Data.Linq;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTests_ReferenceLoading : TestBase
-    {
-
-        [Test]
-        public void ReferenceLoading01()
-        {
-            var db = CreateDB();
-            var order = db.Orders.First();
-            Assert.IsNotNull(order.Employee);
-        }
-
-        [Test]
-        public void ReferenceLoading02()
-        {
-            var db = CreateDB();
-            var c = db.Customers.First();
-            Assert.IsNotNull(c.Orders.First().Employee);
-        }
-
-        [Test]
-        public void ReferenceLoading03()
-        {
-            var db = CreateDB();
-            var employeeTerritory = db.EmployeeTerritories.First();
-            Assert.IsNotNull(employeeTerritory.Territory.Region.RegionID);
-        }
-
-        [Test]
-        public void ReferenceLoading04()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => new { e.Region });
-
-            var list = q.ToList();
-            Assert.AreEqual(db.Employees.Count(), list.Count);
-        }
-
-#if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Test]
-        public void ComplexProjection01()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.Orders);
-
-            var list = q.ToList();
-            Assert.AreEqual(db.Employees.Count(), list.Count);
-        }
-
-#if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Test]
-        public void ComplexProjection02()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => new { e.Orders });
-
-            var list = q.ToList();
-            Assert.AreEqual(db.Employees.Count(), list.Count);
-        }
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Test]
-        public void ComplexProjection03()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderID));
-
-            var list = q.ToList();
-            Assert.AreEqual(db.Employees.Count(), list.Count);
-        }
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Test]
-        public void ComplexProjection04()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderID));
-
-            var list = q.ToList();
-            Assert.AreEqual(db.Employees.Count(), list.Count);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Test]
-        public void ComplexProjection05()
-        {
-            var db = CreateDB();
-            var q = db.Orders.Select(o => o.Employee.EmployeeTerritories);
-
-            var list = q.ToList();
-            Assert.AreEqual(db.Orders.Count(), list.Count);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Test]
-        public void ComplexProjection06()
-        {
-            var db = CreateDB();
-            var q = db.Orders.Select(o => new { o.Employee, X = o.OrderDetails.Select(od => od.Product) });
-
-            var list = q.ToList();
-            Assert.AreEqual(db.Orders.Count(), list.Count);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
-        [Explicit]
-#endif
-        [Test]
-        public void ComplexProjection07()
-        {
-            var db = CreateDB();
-            var q = db.Employees.Select(e => e.Orders.Select(o=>o));
-
-            var list = q.ToList();
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+using System.Data.Linq;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTests_ReferenceLoading : TestBase
+    {
+
+        [Test]
+        public void ReferenceLoading01()
+        {
+            var db = CreateDB();
+            var order = db.Orders.First();
+            Assert.IsNotNull(order.Employee);
+        }
+
+        [Test]
+        public void ReferenceLoading02()
+        {
+            var db = CreateDB();
+            var c = db.Customers.First();
+            Assert.IsNotNull(c.Orders.First().Employee);
+        }
+
+        [Test]
+        public void ReferenceLoading03()
+        {
+            var db = CreateDB();
+            var employeeTerritory = db.EmployeeTerritories.First();
+            Assert.IsNotNull(employeeTerritory.Territory.Region.RegionID);
+        }
+
+        [Test]
+        public void ReferenceLoading04()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => new { e.Region });
+
+            var list = q.ToList();
+            Assert.AreEqual(db.Employees.Count(), list.Count);
+        }
+
+#if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Test]
+        public void ComplexProjection01()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.Orders);
+
+            var list = q.ToList();
+            Assert.AreEqual(db.Employees.Count(), list.Count);
+        }
+
+#if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Test]
+        public void ComplexProjection02()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => new { e.Orders });
+
+            var list = q.ToList();
+            Assert.AreEqual(db.Employees.Count(), list.Count);
+        }
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Test]
+        public void ComplexProjection03()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderID));
+
+            var list = q.ToList();
+            Assert.AreEqual(db.Employees.Count(), list.Count);
+        }
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Test]
+        public void ComplexProjection04()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderID));
+
+            var list = q.ToList();
+            Assert.AreEqual(db.Employees.Count(), list.Count);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Test]
+        public void ComplexProjection05()
+        {
+            var db = CreateDB();
+            var q = db.Orders.Select(o => o.Employee.EmployeeTerritories);
+
+            var list = q.ToList();
+            Assert.AreEqual(db.Orders.Count(), list.Count);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Test]
+        public void ComplexProjection06()
+        {
+            var db = CreateDB();
+            var q = db.Orders.Select(o => new { o.Employee, X = o.OrderDetails.Select(od => od.Product) });
+
+            var list = q.ToList();
+            Assert.AreEqual(db.Orders.Count(), list.Count);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !MONO_STRICT))
+        [Explicit]
+#endif
+        [Test]
+        public void ComplexProjection07()
+        {
+            var db = CreateDB();
+            var q = db.Employees.Select(e => e.Orders.Select(o=>o));
+
+            var list = q.ToList();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_StringFunctions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_StringFunctions.cs
@@ -1,699 +1,699 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Globalization;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class ReadTests_StringFunctions : TestBase
-    {
-        [Test]
-        public void Insert01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.Insert(3, ":");
-
-
-            var list = q.ToList();
-            Assert.IsTrue(list.All(lastname => lastname.Contains(":")));
-        }
-
-        [Test]
-        public void Insert02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.Insert(3, ":").Contains(":")
-                    select e.LastName.Insert(3, ":");
-
-
-            var list = q.ToList();
-            Assert.IsTrue(list.All(lastname => lastname.Contains(":")));
-        }
-
-        [Test]
-        public void Replace01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where " .".Replace('.', 'a') == " a"
-                    select e;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-
-        }
-
-        [Test]
-        public void Replace02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.Replace('A', 'B').Contains("B")
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-        [Test]
-        public void Replace03()
-        {
-            //white-box test: Testing preevalutation of the where predicate (SpecialExpression.Execute method) before of building the sql query
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where " .".Replace(" ", "f") == "f."
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void Replace04()
-        {
-            //white-box test: Testing the select's projection field execution in clr.
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName + " .".Replace('.', 'a');
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void Replace05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select " .".Replace(" ", "f");
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void IndexOf01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where " fu".IndexOf("fu") == 1
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void IndexOf02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.IndexOf("Fu") == 0
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void IndexOf03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where " fu".IndexOf('f') == 1
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void IndexOf04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.IndexOf('F') == 0
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-
-#if !DEBUG && (SQLITE || POSTGRES)
-        [Explicit]
-#endif
-        [Test]
-        public void IndexOf05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.IndexOf("u", 1) == 1
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void IndexOf06()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.IndexOf('u', 1, 1) == 1
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void IndexOf08()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.IndexOf("u", 1, 1) == 1
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-
-        [Test]
-        public void IndexOf09()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.IndexOf("Fu") == 0;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void IndexOf10()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select " fu".IndexOf('f') == 1;
-
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void IndexOf11()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.IndexOf('F') == 0;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-
-
-        [Test]
-        public void IndexOf12()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.IndexOf("u", 1) == 1;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-
-
-        [Test]
-        public void IndexOf13()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.IndexOf('u', 1, 1) == 1;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void IndexOf14()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.IndexOf("u", 1, 1) == 1;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void IndexOf15()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where " fu".IndexOf('a') == 1
-                    select e;
-
-            var list = q.ToList();
-            Assert.AreEqual(0, list.Count);
-        }
-
-        [Test]
-        public void Remove01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where " .".Remove(1) == " "
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-        [Test]
-        public void Remove02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.Remove(1).Length > 0
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-        }
-
-        [Test]
-        public void Remove03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where " ..".Remove(1, 2) == " "
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void Remove04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.LastName.Remove(1, 2).Length > 0
-                    select e;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void Remove05()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select " .".Remove(1) == " ";
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void Remove06()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.Remove(1).Length > 0;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-
-        }
-
-        [Test]
-        public void Remove07()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select " ..".Remove(1, 2) == " ";
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void Remove08()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select e.LastName.Remove(1, 2).Length > 0;
-
-            var list = q.ToList();
-            Assert.AreEqual(list.Count, db.Employees.Count());
-        }
-
-        [Test]
-        public void StartsWith01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.CustomerID.StartsWith("ALF")
-                    select c.CustomerID;
-
-            string custID = q.Single();
-            Assert.IsTrue(custID == "ALFKI");
-        }
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test]
-        public void StartsWith02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.CustomerID == "ALFKI"
-                    select c.CustomerID.StartsWith("ALF");
-
-            bool matchStart = q.Single();
-            Assert.IsTrue(matchStart);
-        }
-
-
-        /// <summary>
-        /// This test is related to paths: enable DbLinq to search for a path or it's container
-        /// Since we have no path in Nortwind we use a CustomerID.
-        /// </summary>
-#if !DEBUG && (MSSQL && L2SQL)
-        // L2SQL: System.NotSupportedException : Only arguments that can be evaluated on the client are supported for the String.StartsWith method.        [Test]
-        [Explicit]
-#endif
-        [Test]
-        public void StartsWith03()
-        {
-            string path = "ALFKI test";
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where path.StartsWith(c.CustomerID)
-                    select c;
-
-            Customer match = q.Single();
-            Assert.IsNotNull(match);
-        }
-
-        [Test]
-        public void EndsWith01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.CustomerID.EndsWith("LFKI")
-                    select c.CustomerID;
-
-            string custID = q.Single();
-            Assert.IsTrue(custID == "ALFKI");
-        }
-
-        [Test]
-        public void EndsWith02()
-        {
-            string param = "LFKI";
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.CustomerID.EndsWith(param)
-                    select c.CustomerID;
-
-            string custID = q.Single();
-            Assert.IsTrue(custID == "ALFKI");
-        }
-
-        [Test]
-        public void EndsWith03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where "ALFKI".EndsWith("LFKI")
-                    select c.CustomerID;
-
-            Assert.AreEqual(q.ToList().Count, db.Customers.Count());
-        }
-
-#if !DEBUG && (MSSQL && !L2SQL)
-        [Explicit]
-#endif
-        [Test]
-        public void EndsWith04()
-        {
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    select c.CustomerID.EndsWith("LFKI");
-
-            Assert.IsTrue(q.Any(r => r == true));
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void StartsWithPercent01()
-        {
-            string param = "%";
-            Northwind db = CreateDB();
-
-            var q = from c in db.Customers
-                    where c.CustomerID.StartsWith(param)
-                    select c.CustomerID;
-
-            int cnt = q.Count();
-            Assert.AreEqual(0, cnt);
-        }
-
-#if !DEBUG && (MSSQL && L2SQL)
-        // L2SQL: System.NotSupportedException : Method 'System.String TrimStart(Char[])' has no supported translation to SQL.        [Test]
-        [Explicit]
-#endif
-        [Test]
-        public void LTrim01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where !((e.LastName)).TrimStart().Contains(" ")
-                    select e.LastName;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (MSSQL)
-        // L2SQL: System.InvalidOperationException : Could not translate expression 'Table(Employee).Select(e => Not(e.LastName.TrimStart(Invoke(value(System.Func`1[System.Char[]]))).Contains(" ")))' into SQL and could not treat it as a local expression.
-        [Explicit]
-#endif
-        [Test]
-        public void LTrim02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select !((e.LastName)).TrimStart().Contains(" ");
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (MSSQL && L2SQL)
-        // L2SQL: System.NotSupportedException : Method 'System.String TrimEnd(Char[])' has no supported translation to SQL.
-        [Explicit]
-#endif
-        [Test]
-        public void RTrim01()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where !((e.LastName)).TrimEnd().Contains(" ")
-                    select e.LastName;
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-#if !DEBUG && (MSSQL)
-        // L2SQL: System.InvalidOperationException : Could not translate expression 'Table(Employee).Select(e => Not(e.LastName.TrimEnd(Invoke(value(System.Func`1[System.Char[]]))).Contains(" ")))' into SQL and could not treat it as a local expression.
-        [Explicit]
-#endif
-        [Test]
-        public void RTrim02()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    select !((e.LastName)).TrimEnd().Contains(" ");
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-        }
-
-        [Test]
-        public void Substring01()
-        {
-            Northwind db = CreateDB();
-
-            int index = 0;
-            var q = (from e in db.Customers
-                     where e.CustomerID == "WARTH"
-                     select new { name = e.CustomerID.Substring(index) }).First();
-
-            Assert.AreEqual(q.name, "WARTH".Substring(index));
-        }
-
-        [Test]
-        public void Substring02()
-        {
-            Northwind db = CreateDB();
-
-            var q = (from e in db.Customers
-                     where e.CustomerID.Substring(2) == "RTH"
-                     select e);
-
-            Assert.IsTrue(q.Any());
-        }
-
-        [Test]
-        public void Substring03()
-        {
-            Northwind db = CreateDB();
-
-            var q = from e in db.Employees
-                    where e.HomePhone.Substring(4, 1) == ")"
-                    select new { A = e.HomePhone.Remove(0, 6), B = e.HomePhone.Substring(4, 1) };
-
-            var list = q.ToList();
-            Assert.IsTrue(list.Count > 0);
-
-            var Employees = db.Employees.ToArray();
-
-            var q2 = (from e in Employees
-                      where e.HomePhone != null && e.HomePhone.Substring(4, 1) == ")"
-                      select new { A = e.HomePhone.Remove(0, 6), B = e.HomePhone.Substring(4, 1) }).ToArray();
-
-            Assert.AreEqual(list.Count, q2.Count());
-
-            for (int i = 0; i < list.Count; i++)
-                Assert.AreEqual(list[i], q2[i]);
-
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class ReadTests_StringFunctions : TestBase
+    {
+        [Test]
+        public void Insert01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.Insert(3, ":");
+
+
+            var list = q.ToList();
+            Assert.IsTrue(list.All(lastname => lastname.Contains(":")));
+        }
+
+        [Test]
+        public void Insert02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.Insert(3, ":").Contains(":")
+                    select e.LastName.Insert(3, ":");
+
+
+            var list = q.ToList();
+            Assert.IsTrue(list.All(lastname => lastname.Contains(":")));
+        }
+
+        [Test]
+        public void Replace01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where " .".Replace('.', 'a') == " a"
+                    select e;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+
+        }
+
+        [Test]
+        public void Replace02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.Replace('A', 'B').Contains("B")
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+        [Test]
+        public void Replace03()
+        {
+            //white-box test: Testing preevalutation of the where predicate (SpecialExpression.Execute method) before of building the sql query
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where " .".Replace(" ", "f") == "f."
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void Replace04()
+        {
+            //white-box test: Testing the select's projection field execution in clr.
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName + " .".Replace('.', 'a');
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void Replace05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select " .".Replace(" ", "f");
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void IndexOf01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where " fu".IndexOf("fu") == 1
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void IndexOf02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.IndexOf("Fu") == 0
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void IndexOf03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where " fu".IndexOf('f') == 1
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void IndexOf04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.IndexOf('F') == 0
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+
+#if !DEBUG && (SQLITE || POSTGRES)
+        [Explicit]
+#endif
+        [Test]
+        public void IndexOf05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.IndexOf("u", 1) == 1
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void IndexOf06()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.IndexOf('u', 1, 1) == 1
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void IndexOf08()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.IndexOf("u", 1, 1) == 1
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+
+        [Test]
+        public void IndexOf09()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.IndexOf("Fu") == 0;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void IndexOf10()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select " fu".IndexOf('f') == 1;
+
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void IndexOf11()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.IndexOf('F') == 0;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+
+
+        [Test]
+        public void IndexOf12()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.IndexOf("u", 1) == 1;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+
+
+        [Test]
+        public void IndexOf13()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.IndexOf('u', 1, 1) == 1;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void IndexOf14()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.IndexOf("u", 1, 1) == 1;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void IndexOf15()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where " fu".IndexOf('a') == 1
+                    select e;
+
+            var list = q.ToList();
+            Assert.AreEqual(0, list.Count);
+        }
+
+        [Test]
+        public void Remove01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where " .".Remove(1) == " "
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+        [Test]
+        public void Remove02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.Remove(1).Length > 0
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+        }
+
+        [Test]
+        public void Remove03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where " ..".Remove(1, 2) == " "
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void Remove04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.LastName.Remove(1, 2).Length > 0
+                    select e;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void Remove05()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select " .".Remove(1) == " ";
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void Remove06()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.Remove(1).Length > 0;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+
+        }
+
+        [Test]
+        public void Remove07()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select " ..".Remove(1, 2) == " ";
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void Remove08()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select e.LastName.Remove(1, 2).Length > 0;
+
+            var list = q.ToList();
+            Assert.AreEqual(list.Count, db.Employees.Count());
+        }
+
+        [Test]
+        public void StartsWith01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.CustomerID.StartsWith("ALF")
+                    select c.CustomerID;
+
+            string custID = q.Single();
+            Assert.IsTrue(custID == "ALFKI");
+        }
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test]
+        public void StartsWith02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.CustomerID == "ALFKI"
+                    select c.CustomerID.StartsWith("ALF");
+
+            bool matchStart = q.Single();
+            Assert.IsTrue(matchStart);
+        }
+
+
+        /// <summary>
+        /// This test is related to paths: enable DbLinq to search for a path or it's container
+        /// Since we have no path in Nortwind we use a CustomerID.
+        /// </summary>
+#if !DEBUG && (MSSQL && L2SQL)
+        // L2SQL: System.NotSupportedException : Only arguments that can be evaluated on the client are supported for the String.StartsWith method.        [Test]
+        [Explicit]
+#endif
+        [Test]
+        public void StartsWith03()
+        {
+            string path = "ALFKI test";
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where path.StartsWith(c.CustomerID)
+                    select c;
+
+            Customer match = q.Single();
+            Assert.IsNotNull(match);
+        }
+
+        [Test]
+        public void EndsWith01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.CustomerID.EndsWith("LFKI")
+                    select c.CustomerID;
+
+            string custID = q.Single();
+            Assert.IsTrue(custID == "ALFKI");
+        }
+
+        [Test]
+        public void EndsWith02()
+        {
+            string param = "LFKI";
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.CustomerID.EndsWith(param)
+                    select c.CustomerID;
+
+            string custID = q.Single();
+            Assert.IsTrue(custID == "ALFKI");
+        }
+
+        [Test]
+        public void EndsWith03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where "ALFKI".EndsWith("LFKI")
+                    select c.CustomerID;
+
+            Assert.AreEqual(q.ToList().Count, db.Customers.Count());
+        }
+
+#if !DEBUG && (MSSQL && !L2SQL)
+        [Explicit]
+#endif
+        [Test]
+        public void EndsWith04()
+        {
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    select c.CustomerID.EndsWith("LFKI");
+
+            Assert.IsTrue(q.Any(r => r == true));
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void StartsWithPercent01()
+        {
+            string param = "%";
+            Northwind db = CreateDB();
+
+            var q = from c in db.Customers
+                    where c.CustomerID.StartsWith(param)
+                    select c.CustomerID;
+
+            int cnt = q.Count();
+            Assert.AreEqual(0, cnt);
+        }
+
+#if !DEBUG && (MSSQL && L2SQL)
+        // L2SQL: System.NotSupportedException : Method 'System.String TrimStart(Char[])' has no supported translation to SQL.        [Test]
+        [Explicit]
+#endif
+        [Test]
+        public void LTrim01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where !((e.LastName)).TrimStart().Contains(" ")
+                    select e.LastName;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (MSSQL)
+        // L2SQL: System.InvalidOperationException : Could not translate expression 'Table(Employee).Select(e => Not(e.LastName.TrimStart(Invoke(value(System.Func`1[System.Char[]]))).Contains(" ")))' into SQL and could not treat it as a local expression.
+        [Explicit]
+#endif
+        [Test]
+        public void LTrim02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select !((e.LastName)).TrimStart().Contains(" ");
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (MSSQL && L2SQL)
+        // L2SQL: System.NotSupportedException : Method 'System.String TrimEnd(Char[])' has no supported translation to SQL.
+        [Explicit]
+#endif
+        [Test]
+        public void RTrim01()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where !((e.LastName)).TrimEnd().Contains(" ")
+                    select e.LastName;
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+#if !DEBUG && (MSSQL)
+        // L2SQL: System.InvalidOperationException : Could not translate expression 'Table(Employee).Select(e => Not(e.LastName.TrimEnd(Invoke(value(System.Func`1[System.Char[]]))).Contains(" ")))' into SQL and could not treat it as a local expression.
+        [Explicit]
+#endif
+        [Test]
+        public void RTrim02()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    select !((e.LastName)).TrimEnd().Contains(" ");
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+        }
+
+        [Test]
+        public void Substring01()
+        {
+            Northwind db = CreateDB();
+
+            int index = 0;
+            var q = (from e in db.Customers
+                     where e.CustomerID == "WARTH"
+                     select new { name = e.CustomerID.Substring(index) }).First();
+
+            Assert.AreEqual(q.name, "WARTH".Substring(index));
+        }
+
+        [Test]
+        public void Substring02()
+        {
+            Northwind db = CreateDB();
+
+            var q = (from e in db.Customers
+                     where e.CustomerID.Substring(2) == "RTH"
+                     select e);
+
+            Assert.IsTrue(q.Any());
+        }
+
+        [Test]
+        public void Substring03()
+        {
+            Northwind db = CreateDB();
+
+            var q = from e in db.Employees
+                    where e.HomePhone.Substring(4, 1) == ")"
+                    select new { A = e.HomePhone.Remove(0, 6), B = e.HomePhone.Substring(4, 1) };
+
+            var list = q.ToList();
+            Assert.IsTrue(list.Count > 0);
+
+            var Employees = db.Employees.ToArray();
+
+            var q2 = (from e in Employees
+                      where e.HomePhone != null && e.HomePhone.Substring(4, 1) == ")"
+                      select new { A = e.HomePhone.Remove(0, 6), B = e.HomePhone.Substring(4, 1) }).ToArray();
+
+            Assert.AreEqual(list.Count, q2.Count());
+
+            for (int i = 0; i < list.Count; i++)
+                Assert.AreEqual(list[i], q2[i]);
+
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/StoredProcTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/StoredProcTest.cs
@@ -1,129 +1,129 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class StoredProcTest : TestBase
-    {
-
-#if !SQLITE && !MSSQL && !L2SQL && !FIREBIRD && !POSTGRES
-        [Test]
-        public void SP1_CallHello0()
-        {
-            Northwind db = base.CreateDB();
-            string result = db.Hello0();
-            Assert.IsNotNull(result);
-        }
-
-        [Test]
-        public void SP2_CallHello1()
-        {
-            Northwind db = base.CreateDB();
-            string result = db.Hello1("xx");
-            Assert.IsTrue(result!=null && result.Contains("xx"));
-        }
-
-        [Test]
-        public void SP3_GetOrderCount_SelField()
-        {
-            Northwind db = base.CreateDB();
-            var q = from c in db.Customers 
-                    select new { c.CustomerID, OrderCount = db.GetOrderCount(c.CustomerID) };
-
-            int count = 0;
-            foreach (var c in q)
-            {
-                Assert.IsNotNull(c.CustomerID);
-                Assert.Greater(c.OrderCount, -1);
-                count++;
-            }
-            Assert.Greater(count, 0);
-        }
-
-        [Test]
-        public void SP4_GetOrderCount_SelField_B()
-        {
-            Northwind db = base.CreateDB();
-            var q = from c in db.Customers 
-                    select new {c, OrderCount=db.GetOrderCount(c.CustomerID)};
-
-            int count = 0;
-            foreach (var v in q)
-            {
-                Assert.IsNotNull(v.c.CustomerID);
-                Assert.Greater(v.OrderCount, -1);
-                count++;
-            }
-            Assert.Greater(count, 0);
-        }
-
-        [Test]
-        public void SPB_GetOrderCount_Having()
-        {
-            Northwind db = base.CreateDB();
-            var q = from c in db.Customers where db.GetOrderCount(c.CustomerID) > 1 select c;
-
-            int count = 0;
-            foreach (var c in q)
-            {
-                Assert.IsTrue(c.CustomerID!=null, "Non-null customerID required");
-                count++;
-            }
-            Assert.Greater(count, 0);
-        }
-#endif
-    }
-
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class StoredProcTest : TestBase
+    {
+
+#if !SQLITE && !MSSQL && !L2SQL && !FIREBIRD && !POSTGRES
+        [Test]
+        public void SP1_CallHello0()
+        {
+            Northwind db = base.CreateDB();
+            string result = db.Hello0();
+            Assert.IsNotNull(result);
+        }
+
+        [Test]
+        public void SP2_CallHello1()
+        {
+            Northwind db = base.CreateDB();
+            string result = db.Hello1("xx");
+            Assert.IsTrue(result!=null && result.Contains("xx"));
+        }
+
+        [Test]
+        public void SP3_GetOrderCount_SelField()
+        {
+            Northwind db = base.CreateDB();
+            var q = from c in db.Customers 
+                    select new { c.CustomerID, OrderCount = db.GetOrderCount(c.CustomerID) };
+
+            int count = 0;
+            foreach (var c in q)
+            {
+                Assert.IsNotNull(c.CustomerID);
+                Assert.Greater(c.OrderCount, -1);
+                count++;
+            }
+            Assert.Greater(count, 0);
+        }
+
+        [Test]
+        public void SP4_GetOrderCount_SelField_B()
+        {
+            Northwind db = base.CreateDB();
+            var q = from c in db.Customers 
+                    select new {c, OrderCount=db.GetOrderCount(c.CustomerID)};
+
+            int count = 0;
+            foreach (var v in q)
+            {
+                Assert.IsNotNull(v.c.CustomerID);
+                Assert.Greater(v.OrderCount, -1);
+                count++;
+            }
+            Assert.Greater(count, 0);
+        }
+
+        [Test]
+        public void SPB_GetOrderCount_Having()
+        {
+            Northwind db = base.CreateDB();
+            var q = from c in db.Customers where db.GetOrderCount(c.CustomerID) > 1 select c;
+
+            int count = 0;
+            foreach (var c in q)
+            {
+                Assert.IsTrue(c.CustomerID!=null, "Non-null customerID required");
+                count++;
+            }
+            Assert.Greater(count, 0);
+        }
+#endif
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Table.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Table.cs
@@ -1,242 +1,242 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Test_NUnit;
-using NUnit.Framework;
-using Test_NUnit.Linq_101_Samples;
-using System.Data.Linq;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class Table : TestBase
-    {
-        [Test]
-        public void BasicAccess()
-        {
-            var db = CreateDB();
-            var customers = db.Customers.ToArray();
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void GetModifiedMembers()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-
-            string beforeCountry = customer.Country;
-            string afterCountry = "Spain";
-            customer.Country = afterCountry;
-
-            string beforeFax = customer.Fax;
-            string afterFax = "4823-435-6456";
-            customer.Fax = afterFax;
-
-            ModifiedMemberInfo[] modifiedInfoList = db.Customers.GetModifiedMembers(customer);
-            Assert.AreEqual(modifiedInfoList.Count(), 2);
-
-            ModifiedMemberInfo modInfo = modifiedInfoList.First();
-            Assert.AreEqual(modInfo.Member, typeof(Customer).GetProperty("Country"));
-            Assert.AreEqual(modInfo.CurrentValue, afterCountry);
-            Assert.AreEqual(modInfo.OriginalValue, beforeCountry);
-
-            modInfo = modifiedInfoList.ElementAt(1);
-            Assert.AreEqual(modInfo.Member, typeof(Customer).GetProperty("Fax"));
-            Assert.AreEqual(modInfo.CurrentValue, afterFax);
-            Assert.AreEqual(modInfo.OriginalValue, beforeFax);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void GetOriginalEntityState()
-        {
-            var db = CreateDB();
-            var customer = db.Customers.First();
-
-            string beforeCountry = customer.Country;
-            string afterCountry = "Spain";
-            customer.Country = afterCountry;
-
-            string beforeFax = customer.Fax;
-            string afterFax = "4823-435-6456";
-            customer.Fax = afterFax;
-
-            var originalCustomer = db.Customers.GetOriginalEntityState(customer);
-            Assert.AreEqual(originalCustomer.Fax, beforeFax);
-            Assert.AreEqual(originalCustomer.Country, beforeCountry);
-
-        }
-
-        //[Test]
-        //public void IsReadOnly()
-        //{
-        //    var db = CreateDB();
-        //    db.ObjectTrackingEnabled=false;
-        //    db.Customers.ToArray();
-        //    Assert.IsFalse(db.Customers.IsReadOnly);
-
-        //    var db2 = CreateDB();
-        //    db2.ObjectTrackingEnabled = true;
-        //    db2.Customers.ToArray();
-        //    Assert.IsTrue(db2.Customers.IsReadOnly);
-        //}
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void Attach01()
-        {
-            var db = CreateDB();
-            var customer = new Customer();
-            db.Customers.Attach(customer);
-
-            Assert.IsFalse(db.Customers.Contains(customer));
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(NotSupportedException))]
-        public void Attach02()
-        {
-            var db = CreateDB();
-            var customer = new Customer();
-            db.Customers.Attach(customer);
-
-            Assert.IsFalse(db.Customers.Contains(customer));
-            var db2 = CreateDB();
-            db2.Customers.Attach(customer);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void Attach03()
-        {
-            var db = CreateDB();
-            db.ObjectTrackingEnabled = false;
-            var customer = new Customer();
-            db.Customers.Attach(customer);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void Attach04()
-        {
-            var db = CreateDB();
-            var originalCustomer = db.Customers.First();
-            var customer = new Customer();
-            db.Customers.Attach(customer, originalCustomer);
-
-            Assert.Greater(db.Customers.GetModifiedMembers(customer).Count(), 0);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void Attach05()
-        {
-            var db = CreateDB();
-            var customer = new Customer();
-            db.Customers.Attach(customer, true);
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void Attach06()
-        {
-            var db = CreateDB();
-            var customer = new Customer();
-            //http://geekswithblogs.net/michelotti/archive/2007/12/17/117791.aspx
-            //we have to do a test related with that stuff, but we need to change all of datacontexts
-
-            Assert.Ignore();
-        }
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void AttachAll()
-        {
-            var db = CreateDB();
-            var customers = new Customer[] { new Customer { CustomerID = "ID1" }, new Customer { CustomerID = "ID2" } };
-            db.Customers.AttachAll(customers);
-
-            Assert.IsFalse(customers.Any(c => db.Customers.Contains(c)));
-
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void GetBindingList()
-        {
-            var db = CreateDB();
-            var customers = db.Customers.GetNewBindingList();
-
-            Assert.AreEqual(customers.Count, db.Customers.Count());
-        }
-
-        [Description("Check direct use of DataContext instead of typed DataContext")]
-        [Test]
-        public void T1_DirectDataContext()
-        {
-            var db = CreateDB();
-
-            var dc = new 
-#if MONO_STRICT
-            System.Data.Linq.DataContext(db.Connection);
-#else
-            DbLinq.Data.Linq.DataContext(db.Connection, CreateVendor());
-#endif
-
-            var dbq = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
-            var dbc = dbq.ToList().Count;
-            Assert.AreEqual(dbc, 1);
-
-            var dcq = from p in dc.GetTable<Product>() where p.ProductName == "Chai" select p.ProductID;
-            var dcc = dcq.ToList().Count;
-            Assert.AreEqual(dbc, 1);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Test_NUnit;
+using NUnit.Framework;
+using Test_NUnit.Linq_101_Samples;
+using System.Data.Linq;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class Table : TestBase
+    {
+        [Test]
+        public void BasicAccess()
+        {
+            var db = CreateDB();
+            var customers = db.Customers.ToArray();
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void GetModifiedMembers()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+
+            string beforeCountry = customer.Country;
+            string afterCountry = "Spain";
+            customer.Country = afterCountry;
+
+            string beforeFax = customer.Fax;
+            string afterFax = "4823-435-6456";
+            customer.Fax = afterFax;
+
+            ModifiedMemberInfo[] modifiedInfoList = db.Customers.GetModifiedMembers(customer);
+            Assert.AreEqual(modifiedInfoList.Count(), 2);
+
+            ModifiedMemberInfo modInfo = modifiedInfoList.First();
+            Assert.AreEqual(modInfo.Member, typeof(Customer).GetProperty("Country"));
+            Assert.AreEqual(modInfo.CurrentValue, afterCountry);
+            Assert.AreEqual(modInfo.OriginalValue, beforeCountry);
+
+            modInfo = modifiedInfoList.ElementAt(1);
+            Assert.AreEqual(modInfo.Member, typeof(Customer).GetProperty("Fax"));
+            Assert.AreEqual(modInfo.CurrentValue, afterFax);
+            Assert.AreEqual(modInfo.OriginalValue, beforeFax);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void GetOriginalEntityState()
+        {
+            var db = CreateDB();
+            var customer = db.Customers.First();
+
+            string beforeCountry = customer.Country;
+            string afterCountry = "Spain";
+            customer.Country = afterCountry;
+
+            string beforeFax = customer.Fax;
+            string afterFax = "4823-435-6456";
+            customer.Fax = afterFax;
+
+            var originalCustomer = db.Customers.GetOriginalEntityState(customer);
+            Assert.AreEqual(originalCustomer.Fax, beforeFax);
+            Assert.AreEqual(originalCustomer.Country, beforeCountry);
+
+        }
+
+        //[Test]
+        //public void IsReadOnly()
+        //{
+        //    var db = CreateDB();
+        //    db.ObjectTrackingEnabled=false;
+        //    db.Customers.ToArray();
+        //    Assert.IsFalse(db.Customers.IsReadOnly);
+
+        //    var db2 = CreateDB();
+        //    db2.ObjectTrackingEnabled = true;
+        //    db2.Customers.ToArray();
+        //    Assert.IsTrue(db2.Customers.IsReadOnly);
+        //}
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void Attach01()
+        {
+            var db = CreateDB();
+            var customer = new Customer();
+            db.Customers.Attach(customer);
+
+            Assert.IsFalse(db.Customers.Contains(customer));
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(NotSupportedException))]
+        public void Attach02()
+        {
+            var db = CreateDB();
+            var customer = new Customer();
+            db.Customers.Attach(customer);
+
+            Assert.IsFalse(db.Customers.Contains(customer));
+            var db2 = CreateDB();
+            db2.Customers.Attach(customer);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void Attach03()
+        {
+            var db = CreateDB();
+            db.ObjectTrackingEnabled = false;
+            var customer = new Customer();
+            db.Customers.Attach(customer);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void Attach04()
+        {
+            var db = CreateDB();
+            var originalCustomer = db.Customers.First();
+            var customer = new Customer();
+            db.Customers.Attach(customer, originalCustomer);
+
+            Assert.Greater(db.Customers.GetModifiedMembers(customer).Count(), 0);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void Attach05()
+        {
+            var db = CreateDB();
+            var customer = new Customer();
+            db.Customers.Attach(customer, true);
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void Attach06()
+        {
+            var db = CreateDB();
+            var customer = new Customer();
+            //http://geekswithblogs.net/michelotti/archive/2007/12/17/117791.aspx
+            //we have to do a test related with that stuff, but we need to change all of datacontexts
+
+            Assert.Ignore();
+        }
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void AttachAll()
+        {
+            var db = CreateDB();
+            var customers = new Customer[] { new Customer { CustomerID = "ID1" }, new Customer { CustomerID = "ID2" } };
+            db.Customers.AttachAll(customers);
+
+            Assert.IsFalse(customers.Any(c => db.Customers.Contains(c)));
+
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void GetBindingList()
+        {
+            var db = CreateDB();
+            var customers = db.Customers.GetNewBindingList();
+
+            Assert.AreEqual(customers.Count, db.Customers.Count());
+        }
+
+        [Description("Check direct use of DataContext instead of typed DataContext")]
+        [Test]
+        public void T1_DirectDataContext()
+        {
+            var db = CreateDB();
+
+            var dc = new 
+#if MONO_STRICT
+            System.Data.Linq.DataContext(db.Connection);
+#else
+            DbLinq.Data.Linq.DataContext(db.Connection, CreateVendor());
+#endif
+
+            var dbq = from p in db.Products where p.ProductName == "Chai" select p.ProductID;
+            var dbc = dbq.ToList().Count;
+            Assert.AreEqual(dbc, 1);
+
+            var dcq = from p in dc.GetTable<Product>() where p.ProductName == "Chai" select p.ProductID;
+            var dcc = dcq.ToList().Count;
+            Assert.AreEqual(dbc, 1);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/TestBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/TestBase.cs
@@ -1,185 +1,185 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.IO;
-using System.Xml;
-using System.Reflection;
-using NUnit.Framework;
-
-using nwind;
-
-#if MONO_STRICT && !MONO
-using System.Diagnostics;
-public static class Profiler
-{
-    private static Stopwatch timer = new Stopwatch();
-
-    [Conditional("DEBUG")]
-    public static void Start()
-    {
-        timer.Reset();
-        timer.Start();
-    }
-    [Conditional("DEBUG")]
-    public static void At(string format, params object[] args)
-    {
-        timer.Stop();
-        Console.Write("#AT({0:D12}) ", timer.ElapsedTicks);
-        Console.WriteLine(format, args);
-        timer.Start();
-    }
-
-    [Conditional("DEBUG")]
-    public static void Stop()
-    {
-        timer.Stop();
-    }
-}
-#else
-using DbLinq.Util;
-#endif
-
-namespace Test_NUnit
-{
-    /// <summary>
-    /// base class for ReadTest and WriteTest. 
-    /// Provides CreateDB(), Conn, and stringComparisonType.
-    /// </summary>
-    public abstract partial class TestBase
-    {
-        [SetUp]
-        public void BaseSetUp()
-        {
-            Profiler.Start();
-            Profiler.At("BaseSetUp()");
-        }
-
-        [TearDown]
-        public void BaseTearDown()
-        {
-            Profiler.At("BaseTearDown()");
-            Profiler.Stop();
-        }
-
-        public string DbServer
-        {
-            get
-            {
-                return Environment.GetEnvironmentVariable("DbLinqServer") ?? "localhost";
-            }
-        }
-        public string connStr
-        {
-            get
-            {
-                var xConnectionStringsDoc = new XmlDocument();
-                xConnectionStringsDoc.Load("../tests/ConnectionStrings.xml");
-                XmlNode currentAssemblyNode = xConnectionStringsDoc.SelectSingleNode(string.Format("//Connection[@assembly=\"{0}\"]", Assembly.GetCallingAssembly().GetName().Name));
-                string stringConnection = currentAssemblyNode.FirstChild.Value.Replace(@"\\", @"\");
-                if (stringConnection.Contains("{0}"))
-                    stringConnection = string.Format(stringConnection, DbServer);
-                return stringConnection;
-            }
-        }
-        IDbConnection _conn;
-        public IDbConnection Conn
-        {
-            get
-            {
-                if (_conn == null) { _conn = CreateConnection(connStr); _conn.Open(); }
-                return _conn;
-            }
-        }
-
-        //public Northwind CreateDB()
-        //{
-        //    return CreateDB(System.Data.ConnectionState.Closed);
-        //}
-
-        static partial void CheckRecreateSqlite ();
-
-        public Northwind CreateDB()
-        {
-            return CreateDB(System.Data.ConnectionState.Closed);
-        }
-
-        public Northwind CreateDB(System.Data.ConnectionState state)
-        {
-            CheckRecreateSqlite();
-            var conn = CreateConnection(connStr);
-            if (state == System.Data.ConnectionState.Open)
-                conn.Open();
-            var db = new Northwind(conn) { Log = Console.Out };
-            return db;
-        }
-
-        /// <summary>
-        /// execute a sql statement, return an Int64.
-        /// </summary>
-        public long ExecuteScalar(string sql)
-        {
-            using (var cmd = CreateCommand(sql, Conn))
-            {
-                object oResult = cmd.ExecuteScalar();
-                Assert.IsNotNull("Expecting result, instead got null. (sql=" + sql + ")");
-                Assert.IsInstanceOfType(typeof(long), oResult, "Expecting 'long' result from query " + sql + ", instead got type " + oResult.GetType());
-                return (long)oResult;
-            }
-        }
-
-        /// <summary>
-        /// execute a sql statement
-        /// </summary>
-        public void ExecuteNonQuery(string sql)
-        {
-            using (var cmd = CreateCommand(sql, Conn))
-            {
-                int iResult = cmd.ExecuteNonQuery();
-            }
-        }
-
-        public static Product NewProduct(string productName)
-        {
-            var p = new Product
-            {
-                ProductName = productName,
-                SupplierID = 1,
-                CategoryID = 1,
-                QuantityPerUnit = "11",
-#if ORACLE || FIREBIRD
-                UnitPrice = 11, //type "int?"
-#else
-                UnitPrice = 11m,
-#endif
-                UnitsInStock = 23,
-                UnitsOnOrder = 0,
-            };
-            return p;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.IO;
+using System.Xml;
+using System.Reflection;
+using NUnit.Framework;
+
+using nwind;
+
+#if MONO_STRICT && !MONO
+using System.Diagnostics;
+public static class Profiler
+{
+    private static Stopwatch timer = new Stopwatch();
+
+    [Conditional("DEBUG")]
+    public static void Start()
+    {
+        timer.Reset();
+        timer.Start();
+    }
+    [Conditional("DEBUG")]
+    public static void At(string format, params object[] args)
+    {
+        timer.Stop();
+        Console.Write("#AT({0:D12}) ", timer.ElapsedTicks);
+        Console.WriteLine(format, args);
+        timer.Start();
+    }
+
+    [Conditional("DEBUG")]
+    public static void Stop()
+    {
+        timer.Stop();
+    }
+}
+#else
+using DbLinq.Util;
+#endif
+
+namespace Test_NUnit
+{
+    /// <summary>
+    /// base class for ReadTest and WriteTest. 
+    /// Provides CreateDB(), Conn, and stringComparisonType.
+    /// </summary>
+    public abstract partial class TestBase
+    {
+        [SetUp]
+        public void BaseSetUp()
+        {
+            Profiler.Start();
+            Profiler.At("BaseSetUp()");
+        }
+
+        [TearDown]
+        public void BaseTearDown()
+        {
+            Profiler.At("BaseTearDown()");
+            Profiler.Stop();
+        }
+
+        public string DbServer
+        {
+            get
+            {
+                return Environment.GetEnvironmentVariable("DbLinqServer") ?? "localhost";
+            }
+        }
+        public string connStr
+        {
+            get
+            {
+                var xConnectionStringsDoc = new XmlDocument();
+                xConnectionStringsDoc.Load("../tests/ConnectionStrings.xml");
+                XmlNode currentAssemblyNode = xConnectionStringsDoc.SelectSingleNode(string.Format("//Connection[@assembly=\"{0}\"]", Assembly.GetCallingAssembly().GetName().Name));
+                string stringConnection = currentAssemblyNode.FirstChild.Value.Replace(@"\\", @"\");
+                if (stringConnection.Contains("{0}"))
+                    stringConnection = string.Format(stringConnection, DbServer);
+                return stringConnection;
+            }
+        }
+        IDbConnection _conn;
+        public IDbConnection Conn
+        {
+            get
+            {
+                if (_conn == null) { _conn = CreateConnection(connStr); _conn.Open(); }
+                return _conn;
+            }
+        }
+
+        //public Northwind CreateDB()
+        //{
+        //    return CreateDB(System.Data.ConnectionState.Closed);
+        //}
+
+        static partial void CheckRecreateSqlite ();
+
+        public Northwind CreateDB()
+        {
+            return CreateDB(System.Data.ConnectionState.Closed);
+        }
+
+        public Northwind CreateDB(System.Data.ConnectionState state)
+        {
+            CheckRecreateSqlite();
+            var conn = CreateConnection(connStr);
+            if (state == System.Data.ConnectionState.Open)
+                conn.Open();
+            var db = new Northwind(conn) { Log = Console.Out };
+            return db;
+        }
+
+        /// <summary>
+        /// execute a sql statement, return an Int64.
+        /// </summary>
+        public long ExecuteScalar(string sql)
+        {
+            using (var cmd = CreateCommand(sql, Conn))
+            {
+                object oResult = cmd.ExecuteScalar();
+                Assert.IsNotNull("Expecting result, instead got null. (sql=" + sql + ")");
+                Assert.IsInstanceOfType(typeof(long), oResult, "Expecting 'long' result from query " + sql + ", instead got type " + oResult.GetType());
+                return (long)oResult;
+            }
+        }
+
+        /// <summary>
+        /// execute a sql statement
+        /// </summary>
+        public void ExecuteNonQuery(string sql)
+        {
+            using (var cmd = CreateCommand(sql, Conn))
+            {
+                int iResult = cmd.ExecuteNonQuery();
+            }
+        }
+
+        public static Product NewProduct(string productName)
+        {
+            var p = new Product
+            {
+                ProductName = productName,
+                SupplierID = 1,
+                CategoryID = 1,
+                QuantityPerUnit = "11",
+#if ORACLE || FIREBIRD
+                UnitPrice = 11, //type "int?"
+#else
+                UnitPrice = 11m,
+#endif
+                UnitsInStock = 23,
+                UnitsOnOrder = 0,
+            };
+            return p;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Transactions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/Transactions.cs
@@ -1,148 +1,148 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-using System.Data;
-using System.Data.Common;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class Transactions : TestBase
-    {
-        [SetUp]
-        public void Setup_LinqToSqlInsert07()
-        {
-            Northwind db = CreateDB();
-            var orderDetails =
-                 from o in db.OrderDetails
-                 where o.Order.CustomerID == "WARTH"
-                 select o;
-
-            var order =
-                (from o in db.Orders
-                 where o.CustomerID == "WARTH"
-                 select o).FirstOrDefault();
-
-            if (!orderDetails.Any() || order == null)
-            {
-                var o = new Order { CustomerID = "WARTH", Employee = db.Employees.First() };
-                o.OrderDetails.Add(new OrderDetail { Discount = 0.1f, Quantity = 1, Product = db.Products.First(p => p.ProductID % 2 == 0) });
-                o.OrderDetails.Add(new OrderDetail { Discount = 0.2f, Quantity = 1, Product = db.Products.First(p => p.ProductID % 2 != 0) });
-                db.Orders.InsertOnSubmit(o);
-                db.SubmitChanges();
-            }
-        }
-
-        [Test]
-        public void TransactionRollbackDelete()
-        {
-            Northwind db = CreateDB();
-            DbTransaction t = BeginTransaction(db);
-
-            try
-            {
-                var orderDetails =
-                    from o in db.OrderDetails
-                    where o.Order.CustomerID == "WARTH"
-                    select o;
-
-                var order =
-                    (from o in db.Orders
-                     where o.CustomerID == "WARTH"
-                     select o).FirstOrDefault();
-
-                if (!orderDetails.Any() || order == null)
-                    Assert.Ignore("Preconditions");
-
-                db.OrderDetails.DeleteAllOnSubmit(orderDetails); //formerly Remove(od);
-
-                db.Orders.DeleteOnSubmit(order); //formerly Remove(order);
-                db.SubmitChanges();
-
-                Assert.IsFalse(
-                    db.OrderDetails.Any(od => od.Order.Customer.CustomerID == "WARTH" && od.Order.EmployeeID == 3));
-                Assert.IsFalse(db.Orders.Any(ord => ord.OrderID == order.OrderID));
-            }
-            finally
-            {
-                t.Rollback();
-            }
-        }
-
-        private DbTransaction BeginTransaction(Northwind db)
-        {
-            db.Connection.Open();
-            DbTransaction t = db.Connection.BeginTransaction();
-            db.Transaction = t;
-
-            return t;
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void TransactionCheckAndRollbackInsert()
-        {
-            Northwind db = CreateDB();
-            DbTransaction t = BeginTransaction(db);
-
-            var cust = new Customer();
-            int beforeCustomersCount = db.Customers.Count();
-
-            string id = new object().GetHashCode().ToString().Substring(0, 5);
-            cust.CustomerID = id;
-            cust.Country = "Spain";
-            cust.CompanyName = "Coco";
-
-            db.Customers.InsertOnSubmit(cust);
-            db.SubmitChanges();
-
-            int afterCustomercount = db.Customers.Count();
-            Assert.IsTrue(beforeCustomersCount + 1 == afterCustomercount);
-
-            t.Rollback();
-
-            afterCustomercount = db.Customers.Count();
-            Assert.IsTrue(beforeCustomersCount == afterCustomercount);
-
-            // The Count is correct.  However, DataContext doesn't know that the 
-            // transaction was aborted, and will satisfy the following from
-            // an internal cache
-            var customer = db.Customers.FirstOrDefault(c => c.CustomerID == id);
-            Assert.IsNotNull(customer);
-
-            // Let's let DataContext know that it doesn't exist anymore.
-            db.Customers.DeleteOnSubmit(customer);
-            db.SubmitChanges(); // Note no exception from deleting a non-existent entity
-
-            customer = db.Customers.FirstOrDefault(c => c.CustomerID == id);
-            Assert.IsNull(customer);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+using System.Data;
+using System.Data.Common;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class Transactions : TestBase
+    {
+        [SetUp]
+        public void Setup_LinqToSqlInsert07()
+        {
+            Northwind db = CreateDB();
+            var orderDetails =
+                 from o in db.OrderDetails
+                 where o.Order.CustomerID == "WARTH"
+                 select o;
+
+            var order =
+                (from o in db.Orders
+                 where o.CustomerID == "WARTH"
+                 select o).FirstOrDefault();
+
+            if (!orderDetails.Any() || order == null)
+            {
+                var o = new Order { CustomerID = "WARTH", Employee = db.Employees.First() };
+                o.OrderDetails.Add(new OrderDetail { Discount = 0.1f, Quantity = 1, Product = db.Products.First(p => p.ProductID % 2 == 0) });
+                o.OrderDetails.Add(new OrderDetail { Discount = 0.2f, Quantity = 1, Product = db.Products.First(p => p.ProductID % 2 != 0) });
+                db.Orders.InsertOnSubmit(o);
+                db.SubmitChanges();
+            }
+        }
+
+        [Test]
+        public void TransactionRollbackDelete()
+        {
+            Northwind db = CreateDB();
+            DbTransaction t = BeginTransaction(db);
+
+            try
+            {
+                var orderDetails =
+                    from o in db.OrderDetails
+                    where o.Order.CustomerID == "WARTH"
+                    select o;
+
+                var order =
+                    (from o in db.Orders
+                     where o.CustomerID == "WARTH"
+                     select o).FirstOrDefault();
+
+                if (!orderDetails.Any() || order == null)
+                    Assert.Ignore("Preconditions");
+
+                db.OrderDetails.DeleteAllOnSubmit(orderDetails); //formerly Remove(od);
+
+                db.Orders.DeleteOnSubmit(order); //formerly Remove(order);
+                db.SubmitChanges();
+
+                Assert.IsFalse(
+                    db.OrderDetails.Any(od => od.Order.Customer.CustomerID == "WARTH" && od.Order.EmployeeID == 3));
+                Assert.IsFalse(db.Orders.Any(ord => ord.OrderID == order.OrderID));
+            }
+            finally
+            {
+                t.Rollback();
+            }
+        }
+
+        private DbTransaction BeginTransaction(Northwind db)
+        {
+            db.Connection.Open();
+            DbTransaction t = db.Connection.BeginTransaction();
+            db.Transaction = t;
+
+            return t;
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void TransactionCheckAndRollbackInsert()
+        {
+            Northwind db = CreateDB();
+            DbTransaction t = BeginTransaction(db);
+
+            var cust = new Customer();
+            int beforeCustomersCount = db.Customers.Count();
+
+            string id = new object().GetHashCode().ToString().Substring(0, 5);
+            cust.CustomerID = id;
+            cust.Country = "Spain";
+            cust.CompanyName = "Coco";
+
+            db.Customers.InsertOnSubmit(cust);
+            db.SubmitChanges();
+
+            int afterCustomercount = db.Customers.Count();
+            Assert.IsTrue(beforeCustomersCount + 1 == afterCustomercount);
+
+            t.Rollback();
+
+            afterCustomercount = db.Customers.Count();
+            Assert.IsTrue(beforeCustomersCount == afterCustomercount);
+
+            // The Count is correct.  However, DataContext doesn't know that the 
+            // transaction was aborted, and will satisfy the following from
+            // an internal cache
+            var customer = db.Customers.FirstOrDefault(c => c.CustomerID == id);
+            Assert.IsNotNull(customer);
+
+            // Let's let DataContext know that it doesn't exist anymore.
+            db.Customers.DeleteOnSubmit(customer);
+            db.SubmitChanges(); // Note no exception from deleting a non-existent entity
+
+            customer = db.Customers.FirstOrDefault(c => c.CustomerID == id);
+            Assert.IsNull(customer);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/VerticalPartitioningTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/VerticalPartitioningTest.cs
@@ -1,60 +1,60 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Test_NUnit;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    /// <summary>
-    /// TODO: write test cases which ensure that db.Employee can produce derived classes, such as HourlyEmployee.
-    /// </summary>
-    public class VerticalPartitioningTest : TestBase
-    {
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Test_NUnit;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    /// <summary>
+    /// TODO: write test cases which ensure that db.Employee can produce derived classes, such as HourlyEmployee.
+    /// </summary>
+    public class VerticalPartitioningTest : TestBase
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/WriteTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/WriteTest.cs
@@ -1,859 +1,859 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-
-using NUnit.Framework;
-using Test_NUnit;
-using System.ComponentModel;
-using System.Data.Linq.Mapping;
-
-using nwind;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#if MONO
-using DbLinq.Util;
-#endif
-#else
-using DbLinq.Data.Linq;
-using DbLinq.Util;
-#endif
-
-#if ORACLE
-using Id = System.Decimal;
-#else
-using Id = System.Int32;
-#endif
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-    [TestFixture]
-    public class WriteTest : TestBase
-    {
-        [SetUp]
-        public void TestSetup()
-        {
-            base.BaseSetUp();
-
-            Profiler.At("START: WriteTest.TestSetup()");
-
-            Northwind db = CreateDB();
-            // "[Products]" gets converted to "Products".
-            //This is a DbLinq-defined escape sequence, by Pascal.
-            //db.ExecuteCommand("DELETE FROM [Products] WHERE [ProductName] like 'temp%'");
-
-            var deleteProducts = db.Products.Where(p => p.ProductName.StartsWith("temp")).ToList();
-            db.Products.DeleteAllOnSubmit(deleteProducts);
-
-            var deleteCategories = db.Categories.Where(c => c.CategoryName.StartsWith("temp")).ToList();
-            db.Categories.DeleteAllOnSubmit(deleteCategories);
-
-            db.SubmitChanges();
-
-            Profiler.At("END: WriteTest.TestSetup()");
-        }
-
-        #region Tests 'E' test live object cache
-        [Test]
-        public void E1_LiveObjectsAreUnique()
-        {
-            //grab an object twice, make sure we get the same object each time
-            Northwind db = CreateDB();
-            var q = from p in db.Products select p;
-            Product product1 = q.First();
-            Product product2 = q.First();
-            Assert.AreSame(product1, product2); 
-
-            string uniqueStr = "Unique" + Environment.TickCount;
-            product1.QuantityPerUnit = uniqueStr;
-            bool isSameObject1 = product2.QuantityPerUnit == uniqueStr;
-            Assert.IsTrue(isSameObject1, "Expected product1 and product2 to be the same live object, but their fields are different");
-            object oProduct1 = product1;
-            object oProduct2 = product2;
-            bool isSameObject2 = oProduct1 == oProduct2;
-            Assert.IsTrue(isSameObject2, "Expected product1 and product2 to be the same live object, but their fields are different");
-        }
-
-        [Test]
-        public void E2_LiveObjectsAreUnique_Scalar()
-        {
-            //grab an object twice, make sure we get the same object each time
-            Northwind db = CreateDB();
-            var q = from p in db.Products select p;
-            Product product1 = q.First(p => p.ProductName == "Chai");
-            Product product2 = q.Single(p => p.ProductName == "Chai");
-            bool isSame = object.ReferenceEquals(product1, product2);
-            Assert.IsTrue(isSame, "Expected product2 and product2 to be the same live object");
-        }
-
-#if MYSQL && USE_ALLTYPES
-        [Test]
-        public void E3_UpdateEnum()
-        {
-            Northwind db = CreateDB();
-
-            var q = from at in db.Alltypes where at.int_ == 1 select at;
-
-            Alltype row = q.First();
-            DbLinq_EnumTest newValue = row.DbLinq_EnumTest == DbLinq_EnumTest.BB
-                ? DbLinq_EnumTest.CC
-                : DbLinq_EnumTest.BB;
-
-            row.DbLinq_EnumTest = newValue;
-
-            db.SubmitChanges();
-        }
-#endif
-        #endregion
-
-
-        #region Tests 'G' do insertion
-        private int insertProduct_priv()
-        {
-            Northwind db = CreateDB();
-
-            Product newProd = new Product();
-            newProd.CategoryID = db.Categories.First().CategoryID;
-            newProd.ProductName = "Temp." + Environment.TickCount;
-            newProd.QuantityPerUnit = "33 1/2";
-            db.Products.InsertOnSubmit(newProd);
-            db.SubmitChanges();
-            Assert.Greater(newProd.ProductID, 0, "After insertion, ProductID should be non-zero");
-            //Assert.IsFalse(newProd.IsModified, "After insertion, Product.IsModified should be false");
-            return (int)newProd.ProductID; //this test cab be used from delete tests
-        }
-
-        [Test]
-        public void G1_InsertProduct()
-        {
-            insertProduct_priv();
-        }
-
-        [Test]
-        public void G2_DeleteTest()
-        {
-            int insertedID = insertProduct_priv();
-            Assert.Greater(insertedID, 0, "DeleteTest cannot operate if row was not inserted");
-
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products where p.ProductID == insertedID select p;
-            List<Product> insertedProducts = q.ToList();
-            foreach (Product insertedProd in insertedProducts)
-            {
-                db.Products.DeleteOnSubmit(insertedProd);
-            }
-            db.SubmitChanges();
-
-            int numLeft = (from p in db.Products where p.ProductID == insertedID select p).Count();
-            Assert.AreEqual(numLeft, 0, "After deletion, expected count of Products with ID=" + insertedID + " to be zero, instead got " + numLeft);
-        }
-
-        [Test]
-        public void G3_DeleteTest()
-        {
-            int insertedID = insertProduct_priv();
-            Assert.Greater(insertedID, 0, "DeleteTest cannot operate if row was not inserted");
-
-            Northwind db = CreateDB();
-
-            var q = from p in db.Products where p.ProductID == insertedID select p;
-            List<Product> insertedProducts = q.ToList();
-            foreach (Product insertedProd in insertedProducts)
-            {
-                db.Products.DeleteOnSubmit(insertedProd);
-            }
-            db.SubmitChanges();
-
-            int numLeft = (from p in db.Products where p.ProductID == insertedID select p).Count();
-            Assert.AreEqual(numLeft, 0, "After deletion, expected count of Products with ID=" + insertedID + " to be zero, instead got " + numLeft);
-        }
-
-        [Test]
-        public void G4_DuplicateSubmitTest()
-        {
-            Northwind db = CreateDB();
-            int productCount1 = db.Products.Count();
-#if INGRES && !MONO_STRICT
-            Product p_temp = new Product { ProductName = "temp_g4", Discontinued = "N" };
-#else
-            Product p_temp = new Product { ProductName = "temp_g4", Discontinued = false };
-#endif
-            db.Products.InsertOnSubmit(p_temp);
-            db.SubmitChanges();
-            db.SubmitChanges();
-            int productCount2 = db.Products.Count();
-            Assert.IsTrue(productCount2 == productCount1 + 1, "Expected product count to grow by one");
-        }
-
-        /// <summary>
-        /// there is a bug in v0.14 where fields cannot be updated to be null.
-        /// </summary>
-        [Test]
-        public void G5_SetFieldToNull()
-        {
-            string productName = "temp_G5_" + Environment.TickCount;
-            Northwind db = CreateDB();
-#if ORACLE
-            //todo fix Oracle
-            Product p1 = new Product { ProductName = productName, Discontinued = false, UnitPrice = 11 };
-#elif INGRES && !MONO_STRICT
-            Product p1 = new Product { ProductName = productName, Discontinued = "N", UnitPrice = 11m };
-#else
-            Product p1 = new Product { ProductName = productName, Discontinued = false, UnitPrice = 11m };
-#endif
-            db.Products.InsertOnSubmit(p1);
-            db.SubmitChanges();
-
-            p1.UnitPrice = null;
-            db.SubmitChanges();
-
-            Northwind db3 = CreateDB();
-            Product p3 = db3.Products.Single(p => p.ProductName == productName);
-            Assert.IsNull(p3.UnitPrice);
-        }
-
-        /// <summary>
-        /// there is a bug in v0.14 where table Customers cannot be updated,
-        /// because quotes where missing around the primaryKey in the UPDATE statement.
-        /// </summary>
-        [Test]
-        public void G6_UpdateTableWithStringPK()
-        {
-            Northwind db = CreateDB();
-            var customer = new Customer
-            {
-                CompanyName = "Test Company",
-                ContactName = "Test Customer",
-                CustomerID  = "BT___",
-            };
-            db.Customers.InsertOnSubmit(customer);
-            db.SubmitChanges();
-            Customer BT = db.Customers.Single(c => c.CustomerID == "BT___");
-            BT.Country = "U.K.";
-            db.SubmitChanges();
-
-            db.Customers.DeleteOnSubmit(customer);
-            db.SubmitChanges();
-        }
-
-        [Test]
-        public void G7_InsertTableWithStringPK()
-        {
-            Northwind db = CreateDB();
-            db.ExecuteCommand("DELETE FROM [Customers] WHERE [CustomerID]='TEMP_'");
-
-            Customer custTemp = new Customer
-            {
-                CustomerID = "TEMP_",
-                CompanyName = "Magellan",
-                ContactName = "Antonio Pigafetta",
-                City = "Lisboa",
-            };
-            db.Customers.InsertOnSubmit(custTemp);
-            db.SubmitChanges();
-        }
-
-        [Test]
-        public void G8_DeleteTableWithStringPK()
-        {
-            Northwind db = CreateDB();
-            Customer cust = (from c in db.Customers
-                             where c.CustomerID == "TEMP_"
-                             select c).Single();
-            db.Customers.DeleteOnSubmit(cust);
-            db.SubmitChanges();
-        }
-
-        [Test]
-        public void G9_UpdateOnlyChangedProperty()
-        {
-            Northwind db = CreateDB();
-            var cust = (from c in db.Customers
-                        select c).First();
-
-            var old = cust.City;
-            cust.City = "Tallinn";
-            db.SubmitChanges();
-            db.SubmitChanges(); // A second call does not update anything
-
-            //exposes bug:
-            //Npgsql.NpgsqlException was unhandled
-            //Message="ERROR: 23502: null value in column \"companyname\" violates not-null constraint" 
-            cust.City = old;
-            db.SubmitChanges();
-
-        }
-
-#if POSTGRES
-
-        public class Northwind1 : Northwind
-        {
-            public Northwind1(System.Data.IDbConnection connection)
-                : base(connection) { }
-
-            [System.Data.Linq.Mapping.Table(Name = "cust1")]
-            public class Cust1
-            {
-                
-                string _customerid;
-
-                [System.Data.Linq.Mapping.Column(Storage = "_customerid",
-                Name = "customerid", IsPrimaryKey = true,
-                DbType = "char(10)",
-                IsDbGenerated = true,
-                Expression = "nextval('seq8')")]
-                public string CustomerId
-                {
-                    get { return _customerid; }
-                    set { _customerid = value; }
-                }
-
-                // Dummy property is required only as workaround over empty insert list bug
-                // If this bug is fixed this may be removed
-                string _dummy;
-                [System.Data.Linq.Mapping.Column(Storage = "_dummy",
-                DbType = "text", Name = "dummy")]
-                public string Dummy
-                {
-                    get;
-                    set;
-                }
-
-            }
-
-            public Table<Cust1> Cust1s
-            {
-
-                get
-                {
-                    return base.GetTable<Cust1>();
-                }
-            }
-        }
-
-        [Test]
-        public void G10_InsertCharSerialPrimaryKey()
-        {
-            Northwind dbo = CreateDB();
-            Northwind1 db = new Northwind1(dbo.Connection);
-            try
-            {
-                db.ExecuteCommand(
-                    @"create sequence seq8;
-create temp table cust1 ( CustomerID char(10) DEFAULT nextval('seq8'),
-dummy text
-);
-");
-
-                Table<Northwind1.Cust1> cust1s =
-                    db.GetTable<Northwind1.Cust1>();
-
-                var cust1 = new Northwind1.Cust1();
-                cust1.Dummy = "";
-                db.Cust1s.InsertOnSubmit(cust1);
-                db.SubmitChanges();
-                Assert.IsNotNull(cust1.CustomerId);
-            }
-            finally
-            {
-                try { db.ExecuteCommand("drop table cust1;"); }
-                catch { }
-                try { db.ExecuteCommand("drop sequence seq8;"); }
-                catch { }
-            }
-        }
-#endif
-
-        public class NorthwindG11 : Northwind
-        {
-            public NorthwindG11(System.Data.IDbConnection connection)
-                : base(connection) { }
-
-            [Table(Name = "rid")]
-            public class Rid : INotifyPropertyChanged
-            {
-
-                protected int _id;
-
-                protected int _reanr;
-
-
-#if INGRES
-          [System.Data.Linq.Mapping.Column(Storage = "_id", Name = "id", DbType = "integer", IsPrimaryKey = true, IsDbGenerated = true, Expression = "next value for rid_id1_seq")]
-#else
-                [System.Data.Linq.Mapping.Column(Storage = "_id", Name = "id", DbType = "integer", IsPrimaryKey = true, IsDbGenerated = true, Expression = "nextval('rid_id1_seq')")]
-#endif
-                public int Id
-                {
-                    get { return _id; }
-                    set
-                    {
-                        _id = value;
-                        OnPropertyChanged("Id");
-                    }
-                }
-
-#if INGRES
-          [System.Data.Linq.Mapping.Column(Storage = "_reanr", Name = "reanr", DbType = "integer", IsDbGenerated = true, CanBeNull = false, Expression = "next value for rid_reanr_seq")]
-#else
-                [System.Data.Linq.Mapping.Column(Storage = "_reanr", Name = "reanr", DbType = "integer", IsDbGenerated = true, CanBeNull = false, Expression = "nextval('rid_reanr_seq')")]
-#endif
-                public int Reanr
-                {
-                    get { return _reanr; }
-                    set
-                    {
-                        _reanr = value;
-                        OnPropertyChanged("Reanr");
-                    }
-                }
-
-
-                #region INotifyPropertyChanged handling
-                public event PropertyChangedEventHandler PropertyChanged;
-                protected virtual void OnPropertyChanged(string propertyName)
-                {
-                    if (PropertyChanged != null)
-                    {
-                        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-                    }
-                }
-                #endregion
-
-            }
-
-
-            public Table<Rid> Rids
-            {
-                get
-                {
-                    return base.GetTable<Rid>();
-                }
-            }
-        }
-
-#if (POSTGRES || INGRES) && !MONO_STRICT
-#if !DEBUG && POSTGRES
-        [Explicit]
-#endif
-        [Test]
-        public void G11_TwoSequencesInTable()
-        {
-            Northwind dbo = CreateDB();
-            NorthwindG11 db = new NorthwindG11(dbo.Connection);
-
-            db.ExecuteCommand(@"create sequence rid_id1_seq");
-            db.ExecuteCommand(@"create sequence rid_reanr_seq");
-#if INGRES
-            db.ExecuteCommand(@"create table Rid ( id int primary key DEFAULT rid_id1_seq.nextval, reanr int DEFAULT rid_reanr_seq.nextval)");
-#else
-            db.ExecuteCommand(@"create temp table Rid ( id int primary key DEFAULT nextval('rid_id1_seq'), reanr int DEFAULT nextval('rid_reanr_seq'))");
-#endif
-            DbLinq.Data.Linq.Table<NorthwindG11.Rid> Rids = db.GetTable<NorthwindG11.Rid>();
-
-            var Rid = new NorthwindG11.Rid();
-            Rid.Reanr = 22;
-            Exception e = null;
-            db.Rids.InsertOnSubmit(Rid);
-
-            Rid = new NorthwindG11.Rid();
-            Rid.Reanr = 23;
-            db.Rids.InsertOnSubmit(Rid);
-            try
-            {
-                db.SubmitChanges();
-            }
-            catch (Exception ex)
-            {
-                e = ex;
-            }
-            db.ExecuteCommand("drop table rid");
-            db.ExecuteCommand("drop sequence rid_reanr_seq");
-            db.ExecuteCommand("drop sequence rid_id1_seq");
-            if (e != null)
-            {
-                throw e;
-            }
-            Assert.AreEqual(2, Rid.Id);
-            Assert.AreEqual(23, Rid.Reanr);
-        }
-
-#endif
-
-#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G12_EmptyInsertList()
-        {
-            Northwind db = CreateDB();
-            Region newRegion = new Region() { RegionDescription = "" }; // RegionDescription must be non-null
-            db.Regions.InsertOnSubmit(newRegion);
-            db.SubmitChanges();
-            Assert.IsNotNull(newRegion.RegionID);
-            db.Regions.DeleteOnSubmit(newRegion);
-            db.SubmitChanges();
-        }
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G13_ProvidedAutoGeneratedColumn()
-        {
-            Northwind db = CreateDB();
-            Category newCat = new Category();
-            newCat.CategoryID = 999;
-            newCat.CategoryName = "test";
-            db.Categories.InsertOnSubmit(newCat);
-            db.SubmitChanges();
-            // CategoryID is [Column(AutoSync=AutoSync.OnInsert)], so it's 
-            // value is ignored on insert and will be updated
-            Assert.AreNotEqual(999, newCat.CategoryID);
-            // then, load our object
-            var checkCat = (from c in db.Categories where c.CategoryID == newCat.CategoryID select c).Single();
-            Assert.AreEqual(newCat.CategoryID, checkCat.CategoryID);
-            // remove the whole thing
-            db.Categories.DeleteOnSubmit(newCat);
-            db.SubmitChanges();
-        }
-
-
-        [Test]
-        public void G14_AutoGeneratedSupplierIdAndCompanyName()
-        {
-            Northwind db = CreateDB();
-            Supplier supplier = new Supplier()
-            {
-                CompanyName = "Test Company",
-            };
-            db.Suppliers.InsertOnSubmit(supplier);
-            db.SubmitChanges();
-            Assert.IsNotNull(supplier.SupplierID);
-            Assert.AreEqual("Test Company", supplier.CompanyName);
-            db.Suppliers.DeleteOnSubmit(supplier);
-            db.SubmitChanges();
-        }
-
-
-        [Test]
-        [ExpectedException(typeof(InvalidOperationException))]
-        public void G15_CustomerIdUpdate()
-        {
-            //if you run this against Microsoft Linq-to-Sql, it throws an InvalidOperationEx:
-            //{"Value of member 'CustomerID' of an object of type 'Customers' changed. 
-            //A member defining the identity of the object cannot be changed.
-            //Consider adding a new object with new identity and deleting the existing one instead."}
-
-            Northwind db = CreateDB();
-            Customer c1 = (from c in db.Customers
-                           where c.CustomerID == "AIRBU"
-                           select c).Single();
-            c1.CustomerID = "TEMP";
-            db.SubmitChanges();
-            Customer c2 = (from c in db.Customers
-                           where c.CustomerID == "TEMP"
-                           select c).Single();
-
-            c2.CustomerID = "AIRBU";
-            db.SubmitChanges();
-        }
-
-        /// <summary>
-        /// Quote from MSDN:
-        /// If the object requested by the query is easily identifiable as one
-        /// already retrieved, no query is executed. The identity table acts as a cache
-        /// of all previously retrieved objects
-
-        /// From Matt Warren: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=345635&SiteID=1
-        /// The cache is checked when the query is a simple table.Where(pred) or table.First(pred) where the 
-        /// predicate refers only to the primary key.  Otherwise the query is always sent and the cache only checked 
-        /// after the results are retrieved. 
-        /// The DLINQ cache is not distributed or shared, it is local and contained within the context.  It is only a 
-        /// referential identity cache used to guarantee that two reads of the same entity return the same instance. 
-        /// You are not expected to hold the cache for an extended duration (except possibly for a client scenario), 
-        /// or share it across threads, processes, or machines in a cluster. 
-        /// </summary>
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G16_CustomerCacheHit()
-        {
-            Northwind db = CreateDB();
-            Customer c1 = new Customer() { CustomerID = "temp", CompanyName = "Test", ContactName = "Test" };
-            db.Customers.InsertOnSubmit(c1);
-            db.SubmitChanges();
-            db.ExecuteCommand("delete from \"Customers\" WHERE \"CustomerID\"='temp'");
-
-            var res = db.Customers.First(c => c.CustomerID == "temp");
-            Assert.IsNotNull(res);
-        }
-
-
-
-#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
-        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.WriteTest+OrderDetailWithSum' is not mapped as a Table.
-        [Explicit]
-#endif
-        [Test]
-        public void G17_LocalPropertyUpdate()
-        {
-            Northwind dbo = CreateDB();
-            NorthwindLocalProperty db = new NorthwindLocalProperty(dbo.Connection);
-            var det = db.OrderDetailWithSums.First();
-            det.ChangeQuantity();
-            Assert.AreEqual(0, db.GetChangeSet().Updates.Count);
-            db.SubmitChanges();
-        }
-
-
-        class NorthwindLocalProperty : Northwind
-        {
-            internal NorthwindLocalProperty(System.Data.IDbConnection connection)
-                : base(connection) { }
-
-            internal Table<OrderDetailWithSum> OrderDetailWithSums
-            {
-                get
-                {
-                    return GetTable<OrderDetailWithSum>();
-                }
-            }
-
-        }
-
-        class OrderDetailWithSum : OrderDetail, INotifyPropertyChanged
-        {
-            public event PropertyChangedEventHandler PropertyChanged;
-            protected virtual void OnPropertyChanged(string propertyName)
-            {
-                if (PropertyChanged != null)
-                {
-                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
-                }
-            }
-
-            internal decimal? Sum
-            {
-                get
-                {
-                    return Quantity * UnitPrice;
-                }
-            }
-
-            internal void ChangeQuantity()
-            {
-                OnPropertyChanged("Sum");
-            }
-        }
-
-#if !DEBUG && (!(MSSQL && L2SQL))
-        [Explicit]
-#endif
-        // L2SQL: System.NotSupportedException : An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext.  This is not supported.
-        [Test]
-        [ExpectedException(typeof(NotSupportedException))]
-        public void G18_UpdateWithAttach()
-        {
-            List<Order> list;
-            using (Northwind db = CreateDB())
-                list = db.Orders.ToList();
-
-            using (Northwind db = CreateDB())
-            {
-                var tbl = db.GetTable<Order>();
-                foreach (var order in list)
-                {
-                    if (order.Freight == null)
-                        continue;
-                    tbl.Attach(order);
-                }
-                db.SubmitChanges();
-            }
-        }
-
-
-#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
-        [Explicit]
-#endif
-        [Test]
-        public void G19_ExistingCustomerCacheHit()
-        {
-            Northwind db = CreateDB();
-            string id = "ALFKI";
-            Customer c1 = (from c in db.Customers
-                           where id == c.CustomerID
-                           select c).Single();
-
-            db.Connection.ConnectionString = null;
-
-            var x = db.Customers.First(c => id == c.CustomerID);
-        }
-
-
-        [Test]
-        public void G20_CustomerCacheHitComparingToLocalVariable()
-        {
-             Northwind db = CreateDB();
-             try
-             {
-                Customer c1 = new Customer() { CustomerID = "temp", CompanyName = "Test", ContactName = "Test" };
-                db.Customers.InsertOnSubmit(c1);
-                db.SubmitChanges();
-
-                string id = "temp";
-                var res = from c in db.Customers
-                          where c.CustomerID == id
-                          select c;
-
-                Assert.AreEqual(1, res.Count(), "#1");
-
-                db.ExecuteCommand("DELETE FROM \"Customers\" WHERE \"CustomerID\"='temp'");
-
-                res = from c in db.Customers
-                      where c.CustomerID == id
-                      select c;
-                Assert.AreEqual(0, res.Count(), "#2");
-            }
-            finally
-            {
-                db.ExecuteCommand("DELETE FROM \"Customers\" WHERE \"CustomerID\"='temp'");
-            }
-        }
-
-        #endregion
-
-        [Test]
-        public void Update01()
-        {
-            var db = CreateDB();
-            Employee p = db.Employees.First(r => r.LastName == "Fuller");
-
-            DateTime beforeDateTime = p.BirthDate.Value;
-            DateTime now = beforeDateTime.AddMinutes(10);
-
-            p.BirthDate = now;
-            db.SubmitChanges();
-
-            Employee p2 = db.Employees.First(r => r.LastName == "Fuller");
-            Assert.AreEqual(p2.BirthDate, now);
-
-            //undo changes
-            p.BirthDate = beforeDateTime;
-            db.SubmitChanges();
-        }
-
-#if !DEBUG && SQLITE
-        [Explicit]
-#endif
-        [Test]
-        public void InsertAndDeleteWithDependencies()
-        {
-            const string newCategoryName  = "temp Category";
-            const string newProduct1 = "temp First Test Product";
-            const string newProduct2 = "temp Second Test Product";
-
-            var db = CreateDB();
-
-            var product = new Product
-            {
-#if INGRES
-                Discontinued = "Y",
-#else
-                Discontinued = true,
-#endif
-                ProductName = newProduct1,
-            };
-
-            var category = new Category
-            {
-                CategoryName = newCategoryName,
-                Description  = "Insert Description Here",
-            };
-            category.Products.Add(product);
-
-            Assert.AreEqual(0, category.CategoryID);
-            Assert.AreEqual(0, product.CategoryID.Value);
-
-            db.Categories.InsertOnSubmit(category);
-            db.SubmitChanges();
-
-            Assert.AreEqual(1, db.Categories.Where(c => c.CategoryName == newCategoryName).Count());
-            Assert.AreNotEqual(0, category.CategoryID);
-            Assert.AreEqual(1, db.Products.Where(p => p.ProductName == newProduct1).Count());
-            Assert.AreEqual(category.CategoryID, product.CategoryID.Value);
-
-            var p2 = new Product
-            {
-#if INGRES
-                Discontinued = "Y",
-#else
-                Discontinued = true,
-#endif
-                ProductName = newProduct2
-            };
-            category.Products.Add(p2);
-            db.SubmitChanges();
-
-            Assert.AreEqual(1, db.Products.Where(p => p.ProductName == newProduct2).Count());
-
-            db.Products.DeleteOnSubmit(product);
-            db.Products.DeleteOnSubmit(p2);
-            db.Categories.DeleteOnSubmit(category);
-            db.SubmitChanges();
-
-            Assert.AreEqual(0, db.Categories.Where(c => c.CategoryName == newCategoryName).Count());
-            Assert.AreEqual(0, db.Products.Where(p => p.ProductName == newProduct1).Count());
-            Assert.AreEqual(0, db.Products.Where(p => p.ProductName == newProduct2).Count());
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+
+using NUnit.Framework;
+using Test_NUnit;
+using System.ComponentModel;
+using System.Data.Linq.Mapping;
+
+using nwind;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#if MONO
+using DbLinq.Util;
+#endif
+#else
+using DbLinq.Data.Linq;
+using DbLinq.Util;
+#endif
+
+#if ORACLE
+using Id = System.Decimal;
+#else
+using Id = System.Int32;
+#endif
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+    [TestFixture]
+    public class WriteTest : TestBase
+    {
+        [SetUp]
+        public void TestSetup()
+        {
+            base.BaseSetUp();
+
+            Profiler.At("START: WriteTest.TestSetup()");
+
+            Northwind db = CreateDB();
+            // "[Products]" gets converted to "Products".
+            //This is a DbLinq-defined escape sequence, by Pascal.
+            //db.ExecuteCommand("DELETE FROM [Products] WHERE [ProductName] like 'temp%'");
+
+            var deleteProducts = db.Products.Where(p => p.ProductName.StartsWith("temp")).ToList();
+            db.Products.DeleteAllOnSubmit(deleteProducts);
+
+            var deleteCategories = db.Categories.Where(c => c.CategoryName.StartsWith("temp")).ToList();
+            db.Categories.DeleteAllOnSubmit(deleteCategories);
+
+            db.SubmitChanges();
+
+            Profiler.At("END: WriteTest.TestSetup()");
+        }
+
+        #region Tests 'E' test live object cache
+        [Test]
+        public void E1_LiveObjectsAreUnique()
+        {
+            //grab an object twice, make sure we get the same object each time
+            Northwind db = CreateDB();
+            var q = from p in db.Products select p;
+            Product product1 = q.First();
+            Product product2 = q.First();
+            Assert.AreSame(product1, product2); 
+
+            string uniqueStr = "Unique" + Environment.TickCount;
+            product1.QuantityPerUnit = uniqueStr;
+            bool isSameObject1 = product2.QuantityPerUnit == uniqueStr;
+            Assert.IsTrue(isSameObject1, "Expected product1 and product2 to be the same live object, but their fields are different");
+            object oProduct1 = product1;
+            object oProduct2 = product2;
+            bool isSameObject2 = oProduct1 == oProduct2;
+            Assert.IsTrue(isSameObject2, "Expected product1 and product2 to be the same live object, but their fields are different");
+        }
+
+        [Test]
+        public void E2_LiveObjectsAreUnique_Scalar()
+        {
+            //grab an object twice, make sure we get the same object each time
+            Northwind db = CreateDB();
+            var q = from p in db.Products select p;
+            Product product1 = q.First(p => p.ProductName == "Chai");
+            Product product2 = q.Single(p => p.ProductName == "Chai");
+            bool isSame = object.ReferenceEquals(product1, product2);
+            Assert.IsTrue(isSame, "Expected product2 and product2 to be the same live object");
+        }
+
+#if MYSQL && USE_ALLTYPES
+        [Test]
+        public void E3_UpdateEnum()
+        {
+            Northwind db = CreateDB();
+
+            var q = from at in db.Alltypes where at.int_ == 1 select at;
+
+            Alltype row = q.First();
+            DbLinq_EnumTest newValue = row.DbLinq_EnumTest == DbLinq_EnumTest.BB
+                ? DbLinq_EnumTest.CC
+                : DbLinq_EnumTest.BB;
+
+            row.DbLinq_EnumTest = newValue;
+
+            db.SubmitChanges();
+        }
+#endif
+        #endregion
+
+
+        #region Tests 'G' do insertion
+        private int insertProduct_priv()
+        {
+            Northwind db = CreateDB();
+
+            Product newProd = new Product();
+            newProd.CategoryID = db.Categories.First().CategoryID;
+            newProd.ProductName = "Temp." + Environment.TickCount;
+            newProd.QuantityPerUnit = "33 1/2";
+            db.Products.InsertOnSubmit(newProd);
+            db.SubmitChanges();
+            Assert.Greater(newProd.ProductID, 0, "After insertion, ProductID should be non-zero");
+            //Assert.IsFalse(newProd.IsModified, "After insertion, Product.IsModified should be false");
+            return (int)newProd.ProductID; //this test cab be used from delete tests
+        }
+
+        [Test]
+        public void G1_InsertProduct()
+        {
+            insertProduct_priv();
+        }
+
+        [Test]
+        public void G2_DeleteTest()
+        {
+            int insertedID = insertProduct_priv();
+            Assert.Greater(insertedID, 0, "DeleteTest cannot operate if row was not inserted");
+
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products where p.ProductID == insertedID select p;
+            List<Product> insertedProducts = q.ToList();
+            foreach (Product insertedProd in insertedProducts)
+            {
+                db.Products.DeleteOnSubmit(insertedProd);
+            }
+            db.SubmitChanges();
+
+            int numLeft = (from p in db.Products where p.ProductID == insertedID select p).Count();
+            Assert.AreEqual(numLeft, 0, "After deletion, expected count of Products with ID=" + insertedID + " to be zero, instead got " + numLeft);
+        }
+
+        [Test]
+        public void G3_DeleteTest()
+        {
+            int insertedID = insertProduct_priv();
+            Assert.Greater(insertedID, 0, "DeleteTest cannot operate if row was not inserted");
+
+            Northwind db = CreateDB();
+
+            var q = from p in db.Products where p.ProductID == insertedID select p;
+            List<Product> insertedProducts = q.ToList();
+            foreach (Product insertedProd in insertedProducts)
+            {
+                db.Products.DeleteOnSubmit(insertedProd);
+            }
+            db.SubmitChanges();
+
+            int numLeft = (from p in db.Products where p.ProductID == insertedID select p).Count();
+            Assert.AreEqual(numLeft, 0, "After deletion, expected count of Products with ID=" + insertedID + " to be zero, instead got " + numLeft);
+        }
+
+        [Test]
+        public void G4_DuplicateSubmitTest()
+        {
+            Northwind db = CreateDB();
+            int productCount1 = db.Products.Count();
+#if INGRES && !MONO_STRICT
+            Product p_temp = new Product { ProductName = "temp_g4", Discontinued = "N" };
+#else
+            Product p_temp = new Product { ProductName = "temp_g4", Discontinued = false };
+#endif
+            db.Products.InsertOnSubmit(p_temp);
+            db.SubmitChanges();
+            db.SubmitChanges();
+            int productCount2 = db.Products.Count();
+            Assert.IsTrue(productCount2 == productCount1 + 1, "Expected product count to grow by one");
+        }
+
+        /// <summary>
+        /// there is a bug in v0.14 where fields cannot be updated to be null.
+        /// </summary>
+        [Test]
+        public void G5_SetFieldToNull()
+        {
+            string productName = "temp_G5_" + Environment.TickCount;
+            Northwind db = CreateDB();
+#if ORACLE
+            //todo fix Oracle
+            Product p1 = new Product { ProductName = productName, Discontinued = false, UnitPrice = 11 };
+#elif INGRES && !MONO_STRICT
+            Product p1 = new Product { ProductName = productName, Discontinued = "N", UnitPrice = 11m };
+#else
+            Product p1 = new Product { ProductName = productName, Discontinued = false, UnitPrice = 11m };
+#endif
+            db.Products.InsertOnSubmit(p1);
+            db.SubmitChanges();
+
+            p1.UnitPrice = null;
+            db.SubmitChanges();
+
+            Northwind db3 = CreateDB();
+            Product p3 = db3.Products.Single(p => p.ProductName == productName);
+            Assert.IsNull(p3.UnitPrice);
+        }
+
+        /// <summary>
+        /// there is a bug in v0.14 where table Customers cannot be updated,
+        /// because quotes where missing around the primaryKey in the UPDATE statement.
+        /// </summary>
+        [Test]
+        public void G6_UpdateTableWithStringPK()
+        {
+            Northwind db = CreateDB();
+            var customer = new Customer
+            {
+                CompanyName = "Test Company",
+                ContactName = "Test Customer",
+                CustomerID  = "BT___",
+            };
+            db.Customers.InsertOnSubmit(customer);
+            db.SubmitChanges();
+            Customer BT = db.Customers.Single(c => c.CustomerID == "BT___");
+            BT.Country = "U.K.";
+            db.SubmitChanges();
+
+            db.Customers.DeleteOnSubmit(customer);
+            db.SubmitChanges();
+        }
+
+        [Test]
+        public void G7_InsertTableWithStringPK()
+        {
+            Northwind db = CreateDB();
+            db.ExecuteCommand("DELETE FROM [Customers] WHERE [CustomerID]='TEMP_'");
+
+            Customer custTemp = new Customer
+            {
+                CustomerID = "TEMP_",
+                CompanyName = "Magellan",
+                ContactName = "Antonio Pigafetta",
+                City = "Lisboa",
+            };
+            db.Customers.InsertOnSubmit(custTemp);
+            db.SubmitChanges();
+        }
+
+        [Test]
+        public void G8_DeleteTableWithStringPK()
+        {
+            Northwind db = CreateDB();
+            Customer cust = (from c in db.Customers
+                             where c.CustomerID == "TEMP_"
+                             select c).Single();
+            db.Customers.DeleteOnSubmit(cust);
+            db.SubmitChanges();
+        }
+
+        [Test]
+        public void G9_UpdateOnlyChangedProperty()
+        {
+            Northwind db = CreateDB();
+            var cust = (from c in db.Customers
+                        select c).First();
+
+            var old = cust.City;
+            cust.City = "Tallinn";
+            db.SubmitChanges();
+            db.SubmitChanges(); // A second call does not update anything
+
+            //exposes bug:
+            //Npgsql.NpgsqlException was unhandled
+            //Message="ERROR: 23502: null value in column \"companyname\" violates not-null constraint" 
+            cust.City = old;
+            db.SubmitChanges();
+
+        }
+
+#if POSTGRES
+
+        public class Northwind1 : Northwind
+        {
+            public Northwind1(System.Data.IDbConnection connection)
+                : base(connection) { }
+
+            [System.Data.Linq.Mapping.Table(Name = "cust1")]
+            public class Cust1
+            {
+                
+                string _customerid;
+
+                [System.Data.Linq.Mapping.Column(Storage = "_customerid",
+                Name = "customerid", IsPrimaryKey = true,
+                DbType = "char(10)",
+                IsDbGenerated = true,
+                Expression = "nextval('seq8')")]
+                public string CustomerId
+                {
+                    get { return _customerid; }
+                    set { _customerid = value; }
+                }
+
+                // Dummy property is required only as workaround over empty insert list bug
+                // If this bug is fixed this may be removed
+                string _dummy;
+                [System.Data.Linq.Mapping.Column(Storage = "_dummy",
+                DbType = "text", Name = "dummy")]
+                public string Dummy
+                {
+                    get;
+                    set;
+                }
+
+            }
+
+            public Table<Cust1> Cust1s
+            {
+
+                get
+                {
+                    return base.GetTable<Cust1>();
+                }
+            }
+        }
+
+        [Test]
+        public void G10_InsertCharSerialPrimaryKey()
+        {
+            Northwind dbo = CreateDB();
+            Northwind1 db = new Northwind1(dbo.Connection);
+            try
+            {
+                db.ExecuteCommand(
+                    @"create sequence seq8;
+create temp table cust1 ( CustomerID char(10) DEFAULT nextval('seq8'),
+dummy text
+);
+");
+
+                Table<Northwind1.Cust1> cust1s =
+                    db.GetTable<Northwind1.Cust1>();
+
+                var cust1 = new Northwind1.Cust1();
+                cust1.Dummy = "";
+                db.Cust1s.InsertOnSubmit(cust1);
+                db.SubmitChanges();
+                Assert.IsNotNull(cust1.CustomerId);
+            }
+            finally
+            {
+                try { db.ExecuteCommand("drop table cust1;"); }
+                catch { }
+                try { db.ExecuteCommand("drop sequence seq8;"); }
+                catch { }
+            }
+        }
+#endif
+
+        public class NorthwindG11 : Northwind
+        {
+            public NorthwindG11(System.Data.IDbConnection connection)
+                : base(connection) { }
+
+            [Table(Name = "rid")]
+            public class Rid : INotifyPropertyChanged
+            {
+
+                protected int _id;
+
+                protected int _reanr;
+
+
+#if INGRES
+          [System.Data.Linq.Mapping.Column(Storage = "_id", Name = "id", DbType = "integer", IsPrimaryKey = true, IsDbGenerated = true, Expression = "next value for rid_id1_seq")]
+#else
+                [System.Data.Linq.Mapping.Column(Storage = "_id", Name = "id", DbType = "integer", IsPrimaryKey = true, IsDbGenerated = true, Expression = "nextval('rid_id1_seq')")]
+#endif
+                public int Id
+                {
+                    get { return _id; }
+                    set
+                    {
+                        _id = value;
+                        OnPropertyChanged("Id");
+                    }
+                }
+
+#if INGRES
+          [System.Data.Linq.Mapping.Column(Storage = "_reanr", Name = "reanr", DbType = "integer", IsDbGenerated = true, CanBeNull = false, Expression = "next value for rid_reanr_seq")]
+#else
+                [System.Data.Linq.Mapping.Column(Storage = "_reanr", Name = "reanr", DbType = "integer", IsDbGenerated = true, CanBeNull = false, Expression = "nextval('rid_reanr_seq')")]
+#endif
+                public int Reanr
+                {
+                    get { return _reanr; }
+                    set
+                    {
+                        _reanr = value;
+                        OnPropertyChanged("Reanr");
+                    }
+                }
+
+
+                #region INotifyPropertyChanged handling
+                public event PropertyChangedEventHandler PropertyChanged;
+                protected virtual void OnPropertyChanged(string propertyName)
+                {
+                    if (PropertyChanged != null)
+                    {
+                        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+                    }
+                }
+                #endregion
+
+            }
+
+
+            public Table<Rid> Rids
+            {
+                get
+                {
+                    return base.GetTable<Rid>();
+                }
+            }
+        }
+
+#if (POSTGRES || INGRES) && !MONO_STRICT
+#if !DEBUG && POSTGRES
+        [Explicit]
+#endif
+        [Test]
+        public void G11_TwoSequencesInTable()
+        {
+            Northwind dbo = CreateDB();
+            NorthwindG11 db = new NorthwindG11(dbo.Connection);
+
+            db.ExecuteCommand(@"create sequence rid_id1_seq");
+            db.ExecuteCommand(@"create sequence rid_reanr_seq");
+#if INGRES
+            db.ExecuteCommand(@"create table Rid ( id int primary key DEFAULT rid_id1_seq.nextval, reanr int DEFAULT rid_reanr_seq.nextval)");
+#else
+            db.ExecuteCommand(@"create temp table Rid ( id int primary key DEFAULT nextval('rid_id1_seq'), reanr int DEFAULT nextval('rid_reanr_seq'))");
+#endif
+            DbLinq.Data.Linq.Table<NorthwindG11.Rid> Rids = db.GetTable<NorthwindG11.Rid>();
+
+            var Rid = new NorthwindG11.Rid();
+            Rid.Reanr = 22;
+            Exception e = null;
+            db.Rids.InsertOnSubmit(Rid);
+
+            Rid = new NorthwindG11.Rid();
+            Rid.Reanr = 23;
+            db.Rids.InsertOnSubmit(Rid);
+            try
+            {
+                db.SubmitChanges();
+            }
+            catch (Exception ex)
+            {
+                e = ex;
+            }
+            db.ExecuteCommand("drop table rid");
+            db.ExecuteCommand("drop sequence rid_reanr_seq");
+            db.ExecuteCommand("drop sequence rid_id1_seq");
+            if (e != null)
+            {
+                throw e;
+            }
+            Assert.AreEqual(2, Rid.Id);
+            Assert.AreEqual(23, Rid.Reanr);
+        }
+
+#endif
+
+#if !DEBUG && (SQLITE || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G12_EmptyInsertList()
+        {
+            Northwind db = CreateDB();
+            Region newRegion = new Region() { RegionDescription = "" }; // RegionDescription must be non-null
+            db.Regions.InsertOnSubmit(newRegion);
+            db.SubmitChanges();
+            Assert.IsNotNull(newRegion.RegionID);
+            db.Regions.DeleteOnSubmit(newRegion);
+            db.SubmitChanges();
+        }
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G13_ProvidedAutoGeneratedColumn()
+        {
+            Northwind db = CreateDB();
+            Category newCat = new Category();
+            newCat.CategoryID = 999;
+            newCat.CategoryName = "test";
+            db.Categories.InsertOnSubmit(newCat);
+            db.SubmitChanges();
+            // CategoryID is [Column(AutoSync=AutoSync.OnInsert)], so it's 
+            // value is ignored on insert and will be updated
+            Assert.AreNotEqual(999, newCat.CategoryID);
+            // then, load our object
+            var checkCat = (from c in db.Categories where c.CategoryID == newCat.CategoryID select c).Single();
+            Assert.AreEqual(newCat.CategoryID, checkCat.CategoryID);
+            // remove the whole thing
+            db.Categories.DeleteOnSubmit(newCat);
+            db.SubmitChanges();
+        }
+
+
+        [Test]
+        public void G14_AutoGeneratedSupplierIdAndCompanyName()
+        {
+            Northwind db = CreateDB();
+            Supplier supplier = new Supplier()
+            {
+                CompanyName = "Test Company",
+            };
+            db.Suppliers.InsertOnSubmit(supplier);
+            db.SubmitChanges();
+            Assert.IsNotNull(supplier.SupplierID);
+            Assert.AreEqual("Test Company", supplier.CompanyName);
+            db.Suppliers.DeleteOnSubmit(supplier);
+            db.SubmitChanges();
+        }
+
+
+        [Test]
+        [ExpectedException(typeof(InvalidOperationException))]
+        public void G15_CustomerIdUpdate()
+        {
+            //if you run this against Microsoft Linq-to-Sql, it throws an InvalidOperationEx:
+            //{"Value of member 'CustomerID' of an object of type 'Customers' changed. 
+            //A member defining the identity of the object cannot be changed.
+            //Consider adding a new object with new identity and deleting the existing one instead."}
+
+            Northwind db = CreateDB();
+            Customer c1 = (from c in db.Customers
+                           where c.CustomerID == "AIRBU"
+                           select c).Single();
+            c1.CustomerID = "TEMP";
+            db.SubmitChanges();
+            Customer c2 = (from c in db.Customers
+                           where c.CustomerID == "TEMP"
+                           select c).Single();
+
+            c2.CustomerID = "AIRBU";
+            db.SubmitChanges();
+        }
+
+        /// <summary>
+        /// Quote from MSDN:
+        /// If the object requested by the query is easily identifiable as one
+        /// already retrieved, no query is executed. The identity table acts as a cache
+        /// of all previously retrieved objects
+
+        /// From Matt Warren: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=345635&SiteID=1
+        /// The cache is checked when the query is a simple table.Where(pred) or table.First(pred) where the 
+        /// predicate refers only to the primary key.  Otherwise the query is always sent and the cache only checked 
+        /// after the results are retrieved. 
+        /// The DLINQ cache is not distributed or shared, it is local and contained within the context.  It is only a 
+        /// referential identity cache used to guarantee that two reads of the same entity return the same instance. 
+        /// You are not expected to hold the cache for an extended duration (except possibly for a client scenario), 
+        /// or share it across threads, processes, or machines in a cluster. 
+        /// </summary>
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G16_CustomerCacheHit()
+        {
+            Northwind db = CreateDB();
+            Customer c1 = new Customer() { CustomerID = "temp", CompanyName = "Test", ContactName = "Test" };
+            db.Customers.InsertOnSubmit(c1);
+            db.SubmitChanges();
+            db.ExecuteCommand("delete from \"Customers\" WHERE \"CustomerID\"='temp'");
+
+            var res = db.Customers.First(c => c.CustomerID == "temp");
+            Assert.IsNotNull(res);
+        }
+
+
+
+#if !DEBUG && (SQLITE || POSTGRES || MSSQL)
+        // L2SQL: System.InvalidOperationException : The type 'Test_NUnit_MsSql_Strict.WriteTest+OrderDetailWithSum' is not mapped as a Table.
+        [Explicit]
+#endif
+        [Test]
+        public void G17_LocalPropertyUpdate()
+        {
+            Northwind dbo = CreateDB();
+            NorthwindLocalProperty db = new NorthwindLocalProperty(dbo.Connection);
+            var det = db.OrderDetailWithSums.First();
+            det.ChangeQuantity();
+            Assert.AreEqual(0, db.GetChangeSet().Updates.Count);
+            db.SubmitChanges();
+        }
+
+
+        class NorthwindLocalProperty : Northwind
+        {
+            internal NorthwindLocalProperty(System.Data.IDbConnection connection)
+                : base(connection) { }
+
+            internal Table<OrderDetailWithSum> OrderDetailWithSums
+            {
+                get
+                {
+                    return GetTable<OrderDetailWithSum>();
+                }
+            }
+
+        }
+
+        class OrderDetailWithSum : OrderDetail, INotifyPropertyChanged
+        {
+            public event PropertyChangedEventHandler PropertyChanged;
+            protected virtual void OnPropertyChanged(string propertyName)
+            {
+                if (PropertyChanged != null)
+                {
+                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+                }
+            }
+
+            internal decimal? Sum
+            {
+                get
+                {
+                    return Quantity * UnitPrice;
+                }
+            }
+
+            internal void ChangeQuantity()
+            {
+                OnPropertyChanged("Sum");
+            }
+        }
+
+#if !DEBUG && (!(MSSQL && L2SQL))
+        [Explicit]
+#endif
+        // L2SQL: System.NotSupportedException : An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext.  This is not supported.
+        [Test]
+        [ExpectedException(typeof(NotSupportedException))]
+        public void G18_UpdateWithAttach()
+        {
+            List<Order> list;
+            using (Northwind db = CreateDB())
+                list = db.Orders.ToList();
+
+            using (Northwind db = CreateDB())
+            {
+                var tbl = db.GetTable<Order>();
+                foreach (var order in list)
+                {
+                    if (order.Freight == null)
+                        continue;
+                    tbl.Attach(order);
+                }
+                db.SubmitChanges();
+            }
+        }
+
+
+#if !DEBUG && (SQLITE || POSTGRES || (MSSQL && !L2SQL))
+        [Explicit]
+#endif
+        [Test]
+        public void G19_ExistingCustomerCacheHit()
+        {
+            Northwind db = CreateDB();
+            string id = "ALFKI";
+            Customer c1 = (from c in db.Customers
+                           where id == c.CustomerID
+                           select c).Single();
+
+            db.Connection.ConnectionString = null;
+
+            var x = db.Customers.First(c => id == c.CustomerID);
+        }
+
+
+        [Test]
+        public void G20_CustomerCacheHitComparingToLocalVariable()
+        {
+             Northwind db = CreateDB();
+             try
+             {
+                Customer c1 = new Customer() { CustomerID = "temp", CompanyName = "Test", ContactName = "Test" };
+                db.Customers.InsertOnSubmit(c1);
+                db.SubmitChanges();
+
+                string id = "temp";
+                var res = from c in db.Customers
+                          where c.CustomerID == id
+                          select c;
+
+                Assert.AreEqual(1, res.Count(), "#1");
+
+                db.ExecuteCommand("DELETE FROM \"Customers\" WHERE \"CustomerID\"='temp'");
+
+                res = from c in db.Customers
+                      where c.CustomerID == id
+                      select c;
+                Assert.AreEqual(0, res.Count(), "#2");
+            }
+            finally
+            {
+                db.ExecuteCommand("DELETE FROM \"Customers\" WHERE \"CustomerID\"='temp'");
+            }
+        }
+
+        #endregion
+
+        [Test]
+        public void Update01()
+        {
+            var db = CreateDB();
+            Employee p = db.Employees.First(r => r.LastName == "Fuller");
+
+            DateTime beforeDateTime = p.BirthDate.Value;
+            DateTime now = beforeDateTime.AddMinutes(10);
+
+            p.BirthDate = now;
+            db.SubmitChanges();
+
+            Employee p2 = db.Employees.First(r => r.LastName == "Fuller");
+            Assert.AreEqual(p2.BirthDate, now);
+
+            //undo changes
+            p.BirthDate = beforeDateTime;
+            db.SubmitChanges();
+        }
+
+#if !DEBUG && SQLITE
+        [Explicit]
+#endif
+        [Test]
+        public void InsertAndDeleteWithDependencies()
+        {
+            const string newCategoryName  = "temp Category";
+            const string newProduct1 = "temp First Test Product";
+            const string newProduct2 = "temp Second Test Product";
+
+            var db = CreateDB();
+
+            var product = new Product
+            {
+#if INGRES
+                Discontinued = "Y",
+#else
+                Discontinued = true,
+#endif
+                ProductName = newProduct1,
+            };
+
+            var category = new Category
+            {
+                CategoryName = newCategoryName,
+                Description  = "Insert Description Here",
+            };
+            category.Products.Add(product);
+
+            Assert.AreEqual(0, category.CategoryID);
+            Assert.AreEqual(0, product.CategoryID.Value);
+
+            db.Categories.InsertOnSubmit(category);
+            db.SubmitChanges();
+
+            Assert.AreEqual(1, db.Categories.Where(c => c.CategoryName == newCategoryName).Count());
+            Assert.AreNotEqual(0, category.CategoryID);
+            Assert.AreEqual(1, db.Products.Where(p => p.ProductName == newProduct1).Count());
+            Assert.AreEqual(category.CategoryID, product.CategoryID.Value);
+
+            var p2 = new Product
+            {
+#if INGRES
+                Discontinued = "Y",
+#else
+                Discontinued = true,
+#endif
+                ProductName = newProduct2
+            };
+            category.Products.Add(p2);
+            db.SubmitChanges();
+
+            Assert.AreEqual(1, db.Products.Where(p => p.ProductName == newProduct2).Count());
+
+            db.Products.DeleteOnSubmit(product);
+            db.Products.DeleteOnSubmit(p2);
+            db.Categories.DeleteOnSubmit(category);
+            db.SubmitChanges();
+
+            Assert.AreEqual(0, db.Categories.Where(c => c.CategoryName == newCategoryName).Count());
+            Assert.AreEqual(0, db.Products.Where(p => p.ProductName == newProduct1).Count());
+            Assert.AreEqual(0, db.Products.Where(p => p.ProductName == newProduct2).Count());
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/WriteTest_BulkInsert.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/WriteTest_BulkInsert.cs
@@ -1,95 +1,95 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Linq;
-using System.Linq.Expressions;
-using NUnit.Framework;
-using Test_NUnit;
-
-using nwind;
-
-// test ns 
-#if MYSQL
-    namespace Test_NUnit_MySql
-#elif ORACLE && ODP
-    namespace Test_NUnit_OracleODP
-#elif ORACLE
-    namespace Test_NUnit_Oracle
-#elif POSTGRES
-    namespace Test_NUnit_PostgreSql
-#elif SQLITE
-    namespace Test_NUnit_Sqlite
-#elif INGRES
-    namespace Test_NUnit_Ingres
-#elif MSSQL && L2SQL
-    namespace Test_NUnit_MsSql_Strict
-#elif MSSQL
-    namespace Test_NUnit_MsSql
-#elif FIREBIRD
-    namespace Test_NUnit_Firebird
-#endif
-{
-#if !MONO_STRICT
-    [TestFixture]
-    public class WriteTest_BulkInsert : TestBase
-    {
-#if !DEBUG && (SQLITE || MSSQL)
-        [Explicit]
-#endif
-        [Test]
-        public void BI01_InsertProducts()
-        {
-            int initialCount = 0, countAfterBulkInsert = 0;
-
-            Northwind db = CreateDB();
-            initialCount = db.Products.Count();
-
-            //DbLinq.vendor.mysql.MySqlVendor.UseBulkInsert[db.Products] = 3; //insert three rows at a time
-            // picrap: inject this information in the IVendor (and check this is necessary)
-
-            db.Products.BulkInsert(new[]
-                                       {
-                                           NewProduct("tmp_ProductA"),
-                                           NewProduct("tmp_ProductB"),
-                                           NewProduct("tmp_ProductC"),
-                                           NewProduct("tmp_ProductD")
-                                       });
-            db.SubmitChanges();
-
-            //confirm that we indeed inserted four rows:
-            Northwind db2 = CreateDB();
-            countAfterBulkInsert = db2.Products.Count();
-            Assert.IsTrue(countAfterBulkInsert == initialCount + 4);
-
-            //clean up
-            base.ExecuteNonQuery("DELETE FROM Products WHERE ProductName LIKE 'tmp_%'");
-        }
-    }
-#endif
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Linq;
+using System.Linq.Expressions;
+using NUnit.Framework;
+using Test_NUnit;
+
+using nwind;
+
+// test ns 
+#if MYSQL
+    namespace Test_NUnit_MySql
+#elif ORACLE && ODP
+    namespace Test_NUnit_OracleODP
+#elif ORACLE
+    namespace Test_NUnit_Oracle
+#elif POSTGRES
+    namespace Test_NUnit_PostgreSql
+#elif SQLITE
+    namespace Test_NUnit_Sqlite
+#elif INGRES
+    namespace Test_NUnit_Ingres
+#elif MSSQL && L2SQL
+    namespace Test_NUnit_MsSql_Strict
+#elif MSSQL
+    namespace Test_NUnit_MsSql
+#elif FIREBIRD
+    namespace Test_NUnit_Firebird
+#endif
+{
+#if !MONO_STRICT
+    [TestFixture]
+    public class WriteTest_BulkInsert : TestBase
+    {
+#if !DEBUG && (SQLITE || MSSQL)
+        [Explicit]
+#endif
+        [Test]
+        public void BI01_InsertProducts()
+        {
+            int initialCount = 0, countAfterBulkInsert = 0;
+
+            Northwind db = CreateDB();
+            initialCount = db.Products.Count();
+
+            //DbLinq.vendor.mysql.MySqlVendor.UseBulkInsert[db.Products] = 3; //insert three rows at a time
+            // picrap: inject this information in the IVendor (and check this is necessary)
+
+            db.Products.BulkInsert(new[]
+                                       {
+                                           NewProduct("tmp_ProductA"),
+                                           NewProduct("tmp_ProductB"),
+                                           NewProduct("tmp_ProductC"),
+                                           NewProduct("tmp_ProductD")
+                                       });
+            db.SubmitChanges();
+
+            //confirm that we indeed inserted four rows:
+            Northwind db2 = CreateDB();
+            countAfterBulkInsert = db2.Products.Count();
+            Assert.IsTrue(countAfterBulkInsert == initialCount + 4);
+
+            //clean up
+            base.ExecuteNonQuery("DELETE FROM Products WHERE ProductName LIKE 'tmp_%'");
+        }
+    }
+#endif
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/System.Data.Linq.Mapping/ColumnAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/System.Data.Linq.Mapping/ColumnAttributeTest.cs
@@ -1,64 +1,64 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2010 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Data.SqlClient;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-
-using System.Data.Linq.Mapping;
-
-using DbLinq.Null;
-using NUnit.Framework;
-
-namespace System.Data.Linq.Mapping.Test
-{
-    [TestFixture]
-    public class ColumnAttributeTest
-    {
-        [Test]
-        public void Ctor()
-        {
-            var c = new ColumnAttribute();
-            Assert.AreEqual(AutoSync.Default,   c.AutoSync);
-            Assert.AreEqual(true,               c.CanBeNull);
-            Assert.AreEqual(null,               c.DbType);
-            Assert.AreEqual(null,               c.Expression);
-            Assert.AreEqual(false,              c.IsDbGenerated);
-            Assert.AreEqual(false,              c.IsDiscriminator);
-            Assert.AreEqual(false,              c.IsVersion);
-            Assert.AreEqual(UpdateCheck.Always, c.UpdateCheck);
-            Assert.AreEqual(false,              c.IsPrimaryKey);
-            Assert.AreEqual(null,               c.Name);
-            Assert.AreEqual(null,               c.Storage);
-            Assert.AreEqual(c.GetType(),        c.TypeId);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2010 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Data.SqlClient;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+
+using System.Data.Linq.Mapping;
+
+using DbLinq.Null;
+using NUnit.Framework;
+
+namespace System.Data.Linq.Mapping.Test
+{
+    [TestFixture]
+    public class ColumnAttributeTest
+    {
+        [Test]
+        public void Ctor()
+        {
+            var c = new ColumnAttribute();
+            Assert.AreEqual(AutoSync.Default,   c.AutoSync);
+            Assert.AreEqual(true,               c.CanBeNull);
+            Assert.AreEqual(null,               c.DbType);
+            Assert.AreEqual(null,               c.Expression);
+            Assert.AreEqual(false,              c.IsDbGenerated);
+            Assert.AreEqual(false,              c.IsDiscriminator);
+            Assert.AreEqual(false,              c.IsVersion);
+            Assert.AreEqual(UpdateCheck.Always, c.UpdateCheck);
+            Assert.AreEqual(false,              c.IsPrimaryKey);
+            Assert.AreEqual(null,               c.Name);
+            Assert.AreEqual(null,               c.Storage);
+            Assert.AreEqual(c.GetType(),        c.TypeId);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/TableTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/TableTest.cs
@@ -1,118 +1,118 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2009 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using NUnit.Framework;
-
-using DbLinq.Null;
-
-namespace DbLinqTest
-{
-    [TestFixture]
-    public class TableTest
-    {
-        Table<Person> people;
-
-        [SetUp]
-        public void SetUp()
-        {
-            people = new DataContext(new NullConnection() { ConnectionString = "" })
-                .GetTable<Person>();
-        }
-
-        [TearDown]
-        public void TearDown()
-        {
-            people = null;
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void Attach_EntityNull()
-        {
-            people.Attach(null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void AttachAll_EntitiesNull()
-        {
-            IEnumerable<Person> entities = null;
-            people.AttachAll(entities);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void DeleteAllOnSubmit_EntitiesNull()
-        {
-            IEnumerable<Person> entities = null;
-            people.DeleteAllOnSubmit(entities);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void DeleteOnSubmit_EntityNull()
-        {
-            people.DeleteOnSubmit(null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void GetModifiedMembers_EntityNull()
-        {
-            people.GetModifiedMembers(null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void GetOriginalEntityState_EntityNull()
-        {
-            people.GetOriginalEntityState(null);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void InsertAllOnSubmit_EntitiesNull()
-        {
-            IEnumerable<Person> entities = null;
-            people.InsertAllOnSubmit(entities);
-        }
-
-        [Test, ExpectedException(typeof(ArgumentNullException))]
-        public void InsertOnSubmit_EntityNull()
-        {
-            people.InsertOnSubmit(null);
-        }
-
-        [Test]
-        public new void ToString()
-        {
-            Assert.AreEqual("Table(Person)", people.ToString());
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2009 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using NUnit.Framework;
+
+using DbLinq.Null;
+
+namespace DbLinqTest
+{
+    [TestFixture]
+    public class TableTest
+    {
+        Table<Person> people;
+
+        [SetUp]
+        public void SetUp()
+        {
+            people = new DataContext(new NullConnection() { ConnectionString = "" })
+                .GetTable<Person>();
+        }
+
+        [TearDown]
+        public void TearDown()
+        {
+            people = null;
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void Attach_EntityNull()
+        {
+            people.Attach(null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void AttachAll_EntitiesNull()
+        {
+            IEnumerable<Person> entities = null;
+            people.AttachAll(entities);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void DeleteAllOnSubmit_EntitiesNull()
+        {
+            IEnumerable<Person> entities = null;
+            people.DeleteAllOnSubmit(entities);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void DeleteOnSubmit_EntityNull()
+        {
+            people.DeleteOnSubmit(null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void GetModifiedMembers_EntityNull()
+        {
+            people.GetModifiedMembers(null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void GetOriginalEntityState_EntityNull()
+        {
+            people.GetOriginalEntityState(null);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void InsertAllOnSubmit_EntitiesNull()
+        {
+            IEnumerable<Person> entities = null;
+            people.InsertAllOnSubmit(entities);
+        }
+
+        [Test, ExpectedException(typeof(ArgumentNullException))]
+        public void InsertOnSubmit_EntityNull()
+        {
+            people.InsertOnSubmit(null);
+        }
+
+        [Test]
+        public new void ToString()
+        {
+            Assert.AreEqual("Table(Person)", people.ToString());
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Test/TypeContextTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Test/TypeContextTest.cs
@@ -1,61 +1,61 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-using DbLinq.Schema;
-using DbLinq.Schema.Implementation;
-using DbLinq.Util;
-using NUnit.Framework;
-
-namespace DbLinqTest
-{
-    /// <summary>
-    /// Summary description for TypeContextTest
-    /// </summary>
-    [TestFixture]
-    public class TypeContextTest
-    {
-        public enum SomeEnum
-        {
-            A = 1,
-            B = 2,
-        }
-
-        [Test]
-        public void ToEnumTest1()
-        {
-            var e = TypeConvert.ToEnum<SomeEnum>("B");
-            Assert.AreEqual(SomeEnum.B, e);
-        }
-
-        [Test]
-        public void ToEnumTest2()
-        {
-            var e = TypeConvert.ToEnum<SomeEnum>(2);
-            Assert.AreEqual(SomeEnum.B, e);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+using DbLinq.Schema;
+using DbLinq.Schema.Implementation;
+using DbLinq.Util;
+using NUnit.Framework;
+
+namespace DbLinqTest
+{
+    /// <summary>
+    /// Summary description for TypeContextTest
+    /// </summary>
+    [TestFixture]
+    public class TypeContextTest
+    {
+        public enum SomeEnum
+        {
+            A = 1,
+            B = 2,
+        }
+
+        [Test]
+        public void ToEnumTest1()
+        {
+            var e = TypeConvert.ToEnum<SomeEnum>("B");
+            Assert.AreEqual(SomeEnum.B, e);
+        }
+
+        [Test]
+        public void ToEnumTest2()
+        {
+            var e = TypeConvert.ToEnum<SomeEnum>(2);
+            Assert.AreEqual(SomeEnum.B, e);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/CacheChecker.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/CacheChecker.cs
@@ -1,111 +1,111 @@
-﻿using System;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Data.Linq.Mapping;
-using System.Text;
-
-#if MONO_STRICT
-using System.Data.Linq;
-using System.Data.Linq.Identity;
-#else
-using DbLinq.Data.Linq;
-using DbLinq.Data.Linq.Identity;
-#endif
-
-using DbLinq.Linq;
-using DbLinq.Util;
-
-namespace DbLinq.Util
-{
-    internal class CacheChecker
-    {
-        /// <summary>
-        /// Quote from MSDN:
-        /// If the object requested by the query is easily identifiable as one
-        /// already retrieved, no query is executed. The identity table acts as a cache
-        /// of all previously retrieved objects
-
-        /// From Matt Warren: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=345635&SiteID=1
-        /// The cache is checked when the query is a simple table.Where(pred) or table.First(pred) where the 
-        /// predicate refers only to the primary key.  Otherwise the query is always sent and the cache only checked 
-        /// after the results are retrieved. 
-        /// The DLINQ cache is not distributed or shared, it is local and contained within the context.  It is only a 
-        /// referential identity cache used to guarantee that two reads of the same entity return the same instance. 
-        /// You are not expected to hold the cache for an extended duration (except possibly for a client scenario), 
-        /// or share it across threads, processes, or machines in a cluster. 
-        /// </summary>
-        public static bool TryRetrieveFromCache<S>(SessionVarsParsed vars, Expression scalarExpr, out S cachedRow)
-        {
-            cachedRow = default(S);
-            int count1 = vars.ExpressionChain.Count;
-            MethodCallExpression scalarMethodCall = scalarExpr.XMethodCall();
-
-            bool isSingleWhere = false;
-            LambdaExpression whereLambda = null;
-
-            if (count1 == 1 && scalarMethodCall.Arguments.Count == 1)
-            {
-                MethodCallExpression call0 = vars.ExpressionChain[0];
-                if (call0.Method.Name == "Where" && call0.Arguments.Count == 2)
-                {
-                    //db.Customers.Where(id==1).Single()
-                    isSingleWhere = true;
-                    whereLambda = call0.Arguments[1].XLambda();
-                }
-            }
-            else if (count1 == 0 && scalarMethodCall.Arguments.Count == 2)
-            {
-                //db.Customers.Single(id==1)
-                isSingleWhere = true;
-                whereLambda = scalarMethodCall.Arguments[1].XLambda();
-            }
-
-            if ((!isSingleWhere) || whereLambda == null)
-                return false;
-            if (whereLambda.Parameters.Count != 1 || whereLambda.Parameters[0].NodeType != ExpressionType.Parameter)
-                return false;
-            if (whereLambda.Body.NodeType != ExpressionType.Equal)
-                return false;
-            BinaryExpression equals = (BinaryExpression)whereLambda.Body;
-            Expression left = equals.Left;
-            Expression right = equals.Right;
-
-            MemberExpression member;
-            ConstantExpression consta;
-            if (left.NodeType == ExpressionType.MemberAccess && right.NodeType == ExpressionType.Constant)
-            {
-                member = left.XMember();
-                consta = right.XConstant();
-            }
-            else if (left.NodeType == ExpressionType.Constant && right.NodeType == ExpressionType.Parameter)
-            {
-                member = right.XMember();
-                consta = left.XConstant();
-            }
-            else
-            {
-                return false;
-            }
-
-            if (member.Expression.NodeType != ExpressionType.Parameter)
-                return false;
-
-            //check that it's a primary key field
-            ColumnAttribute colAttrib = AttribHelper.GetColumnAttribute(member.Member);
-            if (colAttrib == null)
-                return false;
-            if (!colAttrib.IsPrimaryKey)
-                return false;
-
-            IdentityKey key = new IdentityKey(typeof(S), consta.Value);
-            DataContext context = vars.Context;
-            object cachedEntity = context.GetRegisteredEntityByKey(key);
-            if (cachedEntity == null)
-                return false;
-            cachedRow = (S)cachedEntity;
-            return true;
-        }
-    }
-}
+﻿using System;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Data.Linq.Mapping;
+using System.Text;
+
+#if MONO_STRICT
+using System.Data.Linq;
+using System.Data.Linq.Identity;
+#else
+using DbLinq.Data.Linq;
+using DbLinq.Data.Linq.Identity;
+#endif
+
+using DbLinq.Linq;
+using DbLinq.Util;
+
+namespace DbLinq.Util
+{
+    internal class CacheChecker
+    {
+        /// <summary>
+        /// Quote from MSDN:
+        /// If the object requested by the query is easily identifiable as one
+        /// already retrieved, no query is executed. The identity table acts as a cache
+        /// of all previously retrieved objects
+
+        /// From Matt Warren: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=345635&SiteID=1
+        /// The cache is checked when the query is a simple table.Where(pred) or table.First(pred) where the 
+        /// predicate refers only to the primary key.  Otherwise the query is always sent and the cache only checked 
+        /// after the results are retrieved. 
+        /// The DLINQ cache is not distributed or shared, it is local and contained within the context.  It is only a 
+        /// referential identity cache used to guarantee that two reads of the same entity return the same instance. 
+        /// You are not expected to hold the cache for an extended duration (except possibly for a client scenario), 
+        /// or share it across threads, processes, or machines in a cluster. 
+        /// </summary>
+        public static bool TryRetrieveFromCache<S>(SessionVarsParsed vars, Expression scalarExpr, out S cachedRow)
+        {
+            cachedRow = default(S);
+            int count1 = vars.ExpressionChain.Count;
+            MethodCallExpression scalarMethodCall = scalarExpr.XMethodCall();
+
+            bool isSingleWhere = false;
+            LambdaExpression whereLambda = null;
+
+            if (count1 == 1 && scalarMethodCall.Arguments.Count == 1)
+            {
+                MethodCallExpression call0 = vars.ExpressionChain[0];
+                if (call0.Method.Name == "Where" && call0.Arguments.Count == 2)
+                {
+                    //db.Customers.Where(id==1).Single()
+                    isSingleWhere = true;
+                    whereLambda = call0.Arguments[1].XLambda();
+                }
+            }
+            else if (count1 == 0 && scalarMethodCall.Arguments.Count == 2)
+            {
+                //db.Customers.Single(id==1)
+                isSingleWhere = true;
+                whereLambda = scalarMethodCall.Arguments[1].XLambda();
+            }
+
+            if ((!isSingleWhere) || whereLambda == null)
+                return false;
+            if (whereLambda.Parameters.Count != 1 || whereLambda.Parameters[0].NodeType != ExpressionType.Parameter)
+                return false;
+            if (whereLambda.Body.NodeType != ExpressionType.Equal)
+                return false;
+            BinaryExpression equals = (BinaryExpression)whereLambda.Body;
+            Expression left = equals.Left;
+            Expression right = equals.Right;
+
+            MemberExpression member;
+            ConstantExpression consta;
+            if (left.NodeType == ExpressionType.MemberAccess && right.NodeType == ExpressionType.Constant)
+            {
+                member = left.XMember();
+                consta = right.XConstant();
+            }
+            else if (left.NodeType == ExpressionType.Constant && right.NodeType == ExpressionType.Parameter)
+            {
+                member = right.XMember();
+                consta = left.XConstant();
+            }
+            else
+            {
+                return false;
+            }
+
+            if (member.Expression.NodeType != ExpressionType.Parameter)
+                return false;
+
+            //check that it's a primary key field
+            ColumnAttribute colAttrib = AttribHelper.GetColumnAttribute(member.Member);
+            if (colAttrib == null)
+                return false;
+            if (!colAttrib.IsPrimaryKey)
+                return false;
+
+            IdentityKey key = new IdentityKey(typeof(S), consta.Value);
+            DataContext context = vars.Context;
+            object cachedEntity = context.GetRegisteredEntityByKey(key);
+            if (cachedEntity == null)
+                return false;
+            cachedRow = (S)cachedEntity;
+            return true;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/DataCommand.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/DataCommand.cs
@@ -1,92 +1,92 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Executes a given SQL command, with parameter and delegate
-    /// </summary>
-#if !MONO_STRICT
-    // TODO: once R# is fixed with internal extension methods problems, switch to full internal
-    public // DataCommand is used by vendors
-#endif
-    static class DataCommand
-    {
-        /// <summary>
-        /// Executes a provided SQL command, with parameter and callback for each row
-        /// </summary>
-        /// <typeparam name="T">Row type</typeparam>
-        /// <param name="conn">Connection to database</param>
-        /// <param name="sql">SQL string</param>
-        /// <param name="dbParameterName">Optional parameter name (null to ignore), like ':db'</param>
-        /// <param name="db">Optional parameter value</param>
-        /// <param name="readDelegate">Function called for each row, returning an instance created for row data</param>
-        /// <returns></returns>
-        public static List<T> Find<T>(IDbConnection conn, string sql, string dbParameterName, string db, Func<IDataReader, T> readDelegate)
-        {
-            using (IDbCommand command = conn.CreateCommand())
-            {
-                command.CommandText = sql;
-                if (dbParameterName != null)
-                {
-                    var parameter = command.CreateParameter();
-                    parameter.ParameterName = dbParameterName;
-                    parameter.Value = db;
-                    command.Parameters.Add(parameter);
-                }
-                using (var rdr = command.ExecuteReader())
-                {
-                    var list = new List<T>();
-                    while (rdr.Read())
-                    {
-                        var t = readDelegate(rdr);
-                        // we may have a value type, here
-                        if (!Equals(t, default(T)))
-                            list.Add(t);
-                    }
-                    return list;
-                }
-            }
-        }
-
-        /// <summary>
-        /// Executes a provided SQL command, with parameter and callback for each row
-        /// </summary>
-        /// <typeparam name="T">Row type</typeparam>
-        /// <param name="conn">Connection to database</param>
-        /// <param name="sql">SQL string</param>
-        /// <param name="readDelegate">Function called for each row, returning an instance created for row data</param>
-        /// <returns></returns>
-        public static List<T> Find<T>(IDbConnection conn, string sql, Func<IDataReader, T> readDelegate)
-        {
-            return Find<T>(conn, sql, null, null, readDelegate);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Executes a given SQL command, with parameter and delegate
+    /// </summary>
+#if !MONO_STRICT
+    // TODO: once R# is fixed with internal extension methods problems, switch to full internal
+    public // DataCommand is used by vendors
+#endif
+    static class DataCommand
+    {
+        /// <summary>
+        /// Executes a provided SQL command, with parameter and callback for each row
+        /// </summary>
+        /// <typeparam name="T">Row type</typeparam>
+        /// <param name="conn">Connection to database</param>
+        /// <param name="sql">SQL string</param>
+        /// <param name="dbParameterName">Optional parameter name (null to ignore), like ':db'</param>
+        /// <param name="db">Optional parameter value</param>
+        /// <param name="readDelegate">Function called for each row, returning an instance created for row data</param>
+        /// <returns></returns>
+        public static List<T> Find<T>(IDbConnection conn, string sql, string dbParameterName, string db, Func<IDataReader, T> readDelegate)
+        {
+            using (IDbCommand command = conn.CreateCommand())
+            {
+                command.CommandText = sql;
+                if (dbParameterName != null)
+                {
+                    var parameter = command.CreateParameter();
+                    parameter.ParameterName = dbParameterName;
+                    parameter.Value = db;
+                    command.Parameters.Add(parameter);
+                }
+                using (var rdr = command.ExecuteReader())
+                {
+                    var list = new List<T>();
+                    while (rdr.Read())
+                    {
+                        var t = readDelegate(rdr);
+                        // we may have a value type, here
+                        if (!Equals(t, default(T)))
+                            list.Add(t);
+                    }
+                    return list;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Executes a provided SQL command, with parameter and callback for each row
+        /// </summary>
+        /// <typeparam name="T">Row type</typeparam>
+        /// <param name="conn">Connection to database</param>
+        /// <param name="sql">SQL string</param>
+        /// <param name="readDelegate">Function called for each row, returning an instance created for row data</param>
+        /// <returns></returns>
+        public static List<T> Find<T>(IDbConnection conn, string sql, Func<IDataReader, T> readDelegate)
+        {
+            return Find<T>(conn, sql, null, null, readDelegate);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/DbmlExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/DbmlExtensions.cs
@@ -1,59 +1,59 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq;
-using DbLinq.Schema.Dbml;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Executes a given SQL command, with parameter and delegate
-    /// </summary>
-#if !MONO_STRICT
-    // TODO: once R# is fixed with internal extension methods problems, switch to full internal
-    public // DataCommand is used by vendors
-#endif
-    static class DbmlExtensions
-    {
-        /// <summary>
-        /// Returns the reverse association
-        /// </summary>
-        /// <param name="schema"></param>
-        /// <param name="association"></param>
-        /// <returns></returns>
-        public static Association GetReverseAssociation(this Database schema, Association association)
-        {
-            // we use Single() because we NEED the opposite association
-            // (and it must be here
-            var reverseTable = (from t in schema.Table where t.Type.Name == association.Type select t).Single();
-            // same thing for association
-            var reverseAssociation = (from a in reverseTable.Type.Associations
-                                      where a.Name == association.Name && a != association
-                                      select a).Single();
-            return reverseAssociation;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq;
+using DbLinq.Schema.Dbml;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Executes a given SQL command, with parameter and delegate
+    /// </summary>
+#if !MONO_STRICT
+    // TODO: once R# is fixed with internal extension methods problems, switch to full internal
+    public // DataCommand is used by vendors
+#endif
+    static class DbmlExtensions
+    {
+        /// <summary>
+        /// Returns the reverse association
+        /// </summary>
+        /// <param name="schema"></param>
+        /// <param name="association"></param>
+        /// <returns></returns>
+        public static Association GetReverseAssociation(this Database schema, Association association)
+        {
+            // we use Single() because we NEED the opposite association
+            // (and it must be here
+            var reverseTable = (from t in schema.Table where t.Type.Name == association.Type select t).Single();
+            // same thing for association
+            var reverseAssociation = (from a in reverseTable.Type.Associations
+                                      where a.Name == association.Name && a != association
+                                      select a).Single();
+            return reverseAssociation;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/ExpressionChainEqualityComparer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/ExpressionChainEqualityComparer.cs
@@ -1,81 +1,81 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sugar;
-
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Provides IEqualityComparer for ExpressionChain class
-    /// </summary>
-    internal class ExpressionChainEqualityComparer : IEqualityComparer<ExpressionChain>
-    {
-        private readonly IEqualityComparer<Expression> expressionComparer = new ExpressionEqualityComparer();
-
-        /// <summary>
-        /// Determines whether the specified objects are equal.
-        /// </summary>
-        /// <param name="x">The first object of type <paramref name="T"/> to compare.</param>
-        /// <param name="y">The second object of type <paramref name="T"/> to compare.</param>
-        /// <returns>
-        /// true if the specified objects are equal; otherwise, false.
-        /// </returns>
-        public bool Equals(ExpressionChain x, ExpressionChain y)
-        {
-            // if not same count, expression chains are different
-            if (x.Expressions.Count != y.Expressions.Count)
-                return false;
-
-            for (int index = 0; index < x.Expressions.Count; index++)
-            {
-                if (!expressionComparer.Equals(x.Expressions[index], y.Expressions[index]))
-                    return false;
-            }
-
-            return true;
-        }
-
-        /// <summary>
-        /// Returns a hash code for the specified object.
-        /// </summary>
-        /// <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
-        /// <returns>A hash code for the specified object.</returns>
-        public int GetHashCode(ExpressionChain obj)
-        {
-            int hash = 0;
-            foreach (var expression in obj.Expressions)
-            {
-                hash <<= 3;
-                hash ^= expressionComparer.GetHashCode(expression);
-            }
-            return hash;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sugar;
+
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Provides IEqualityComparer for ExpressionChain class
+    /// </summary>
+    internal class ExpressionChainEqualityComparer : IEqualityComparer<ExpressionChain>
+    {
+        private readonly IEqualityComparer<Expression> expressionComparer = new ExpressionEqualityComparer();
+
+        /// <summary>
+        /// Determines whether the specified objects are equal.
+        /// </summary>
+        /// <param name="x">The first object of type <paramref name="T"/> to compare.</param>
+        /// <param name="y">The second object of type <paramref name="T"/> to compare.</param>
+        /// <returns>
+        /// true if the specified objects are equal; otherwise, false.
+        /// </returns>
+        public bool Equals(ExpressionChain x, ExpressionChain y)
+        {
+            // if not same count, expression chains are different
+            if (x.Expressions.Count != y.Expressions.Count)
+                return false;
+
+            for (int index = 0; index < x.Expressions.Count; index++)
+            {
+                if (!expressionComparer.Equals(x.Expressions[index], y.Expressions[index]))
+                    return false;
+            }
+
+            return true;
+        }
+
+        /// <summary>
+        /// Returns a hash code for the specified object.
+        /// </summary>
+        /// <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
+        /// <returns>A hash code for the specified object.</returns>
+        public int GetHashCode(ExpressionChain obj)
+        {
+            int hash = 0;
+            foreach (var expression in obj.Expressions)
+            {
+                hash <<= 3;
+                hash ^= expressionComparer.GetHashCode(expression);
+            }
+            return hash;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/ExpressionEqualityComparer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/ExpressionEqualityComparer.cs
@@ -1,87 +1,87 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-using DbLinq.Data.Linq.Implementation;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// IEqualityComparer implementation for Expression
-    /// </summary>
-    internal class ExpressionEqualityComparer : IEqualityComparer<Expression>
-    {
-        /// <summary>
-        /// Determines whether the specified objects are equal.
-        /// </summary>
-        /// <param name="x">The first object of type <paramref name="T"/> to compare.</param>
-        /// <param name="y">The second object of type <paramref name="T"/> to compare.</param>
-        /// <returns>
-        /// true if the specified objects are equal; otherwise, false.
-        /// </returns>
-        public bool Equals(Expression x, Expression y)
-        {
-            // both nulls? comparison is OK
-            if (x == null && y == null)
-                return true;
-
-            if (x == null && y != null)
-                return false;
-
-            if (x != null && y == null)
-                return false;
-
-            // first thing: check types
-            if (x.GetType() != y.GetType())
-                return false;
-
-            // then check node types
-            if (x.NodeType != y.NodeType)
-                return false;
-
-            // finally, check expression types
-            if (x.Type != y.Type)
-                return false;
-
-            return (x.ToString() == y.ToString());
-        }
-
-        /// <summary>
-        /// Returns a hash code for the specified object.
-        /// </summary>
-        /// <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
-        /// <returns>A hash code for the specified object.</returns>
-        /// <exception cref="T:System.ArgumentNullException">
-        /// The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.
-        /// </exception>
-        public int GetHashCode(Expression obj)
-        {
-            return (int)obj.NodeType ^ obj.GetType().GetHashCode();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using DbLinq.Data.Linq.Implementation;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// IEqualityComparer implementation for Expression
+    /// </summary>
+    internal class ExpressionEqualityComparer : IEqualityComparer<Expression>
+    {
+        /// <summary>
+        /// Determines whether the specified objects are equal.
+        /// </summary>
+        /// <param name="x">The first object of type <paramref name="T"/> to compare.</param>
+        /// <param name="y">The second object of type <paramref name="T"/> to compare.</param>
+        /// <returns>
+        /// true if the specified objects are equal; otherwise, false.
+        /// </returns>
+        public bool Equals(Expression x, Expression y)
+        {
+            // both nulls? comparison is OK
+            if (x == null && y == null)
+                return true;
+
+            if (x == null && y != null)
+                return false;
+
+            if (x != null && y == null)
+                return false;
+
+            // first thing: check types
+            if (x.GetType() != y.GetType())
+                return false;
+
+            // then check node types
+            if (x.NodeType != y.NodeType)
+                return false;
+
+            // finally, check expression types
+            if (x.Type != y.Type)
+                return false;
+
+            return (x.ToString() == y.ToString());
+        }
+
+        /// <summary>
+        /// Returns a hash code for the specified object.
+        /// </summary>
+        /// <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
+        /// <returns>A hash code for the specified object.</returns>
+        /// <exception cref="T:System.ArgumentNullException">
+        /// The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.
+        /// </exception>
+        public int GetHashCode(Expression obj)
+        {
+            return (int)obj.NodeType ^ obj.GetType().GetHashCode();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/IDataRecordExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/IDataRecordExtensions.cs
@@ -1,164 +1,164 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Data;
-
-namespace DbLinq.Util
-{
-#if !MONO_STRICT
-    public
-#endif
-    static class IDataRecordExtensions
-    {
-        // please note that sometimes (depending on driver), GetValue() returns DBNull instead of null
-        // so at this level, we handle both
-
-        public static string GetAsString(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return null;
-            object o = dataRecord.GetValue(index);
-            if (o == null) // this is not supposed to happen
-                return null;
-            return o.ToString();
-        }
-
-        public static bool GetAsBool(this IDataRecord dataRecord, int index)
-        {
-            object b = dataRecord.GetValue(index);
-            return TypeConvert.ToBoolean(b);
-        }
-
-        public static bool? GetAsNullableBool(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return null;
-            return GetAsBool(dataRecord, index);
-        }
-
-        public static char GetAsChar(this IDataRecord dataRecord, int index)
-        {
-            object c = dataRecord.GetValue(index);
-            return TypeConvert.ToChar(c);
-        }
-
-        public static char? GetAsNullableChar(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return null;
-            return GetAsChar(dataRecord, index);
-        }
-
-        public static U GetAsNumeric<U>(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return default(U);
-            return GetAsNumeric<U>(dataRecord.GetValue(index));
-        }
-
-        public static U? GetAsNullableNumeric<U>(this IDataRecord dataRecord, int index)
-            where U : struct
-        {
-            if (dataRecord.IsDBNull(index))
-                return null;
-            return GetAsNumeric<U>(dataRecord.GetValue(index));
-        }
-
-        private static U GetAsNumeric<U>(object o)
-        {
-            if (o == null || o is DBNull)
-                return default(U);
-            return TypeConvert.ToNumber<U>(o);
-        }
-
-        public static int GetAsEnum(this IDataRecord dataRecord, Type enumType, int index)
-        {
-            int enumAsInt = dataRecord.GetAsNumeric<int>(index);
-            return enumAsInt;
-        }
-
-        public static byte[] GetAsBytes(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return new byte[0];
-            object obj = dataRecord.GetValue(index);
-            if (obj == null)
-                return new byte[0]; //nullable blob?
-            byte[] bytes = obj as byte[];
-            if (bytes != null)
-                return bytes; //works for BLOB field
-            Console.WriteLine("GetBytes: received unexpected type:" + obj);
-            //return _rdr.GetInt32(index);
-            return new byte[0];
-        }
-
-        public static System.Data.Linq.Binary GetAsBinary(this IDataRecord dataRecord, int index)
-        {
-            byte[] bytes = GetAsBytes(dataRecord, index);
-            if (bytes.Length == 0)
-                return null;
-            return new System.Data.Linq.Binary(bytes);
-        }
-
-        public static object GetAsObject(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return null;
-            object obj = dataRecord.GetValue(index);
-            return obj;
-        }
-
-        public static DateTime GetAsDateTime(this IDataRecord dataRecord, int index)
-        {
-            // Convert an InvalidCastException (thrown for example by Npgsql when an
-            // operation like "SELECT '2012-'::timestamp - NULL" that is perfectly
-            // legal on PostgreSQL returns a null instead of a DateTime) into the
-            // correct InvalidOperationException.
-
-            if (dataRecord.IsDBNull(index))
-                throw new InvalidOperationException("NULL found where DateTime expected");
-            return dataRecord.GetDateTime(index);
-        }
-
-        public static DateTime? GetAsNullableDateTime(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return null;
-            return GetAsDateTime(dataRecord, index);
-        }
-
-        public static Guid GetAsGuid(this IDataRecord dataRecord, int index)
-        {
-            return dataRecord.GetGuid(index);
-        }
-        public static Guid? GetAsNullableGuid(this IDataRecord dataRecord, int index)
-        {
-            if (dataRecord.IsDBNull(index))
-                return null;
-            return GetAsGuid(dataRecord, index);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Data;
+
+namespace DbLinq.Util
+{
+#if !MONO_STRICT
+    public
+#endif
+    static class IDataRecordExtensions
+    {
+        // please note that sometimes (depending on driver), GetValue() returns DBNull instead of null
+        // so at this level, we handle both
+
+        public static string GetAsString(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return null;
+            object o = dataRecord.GetValue(index);
+            if (o == null) // this is not supposed to happen
+                return null;
+            return o.ToString();
+        }
+
+        public static bool GetAsBool(this IDataRecord dataRecord, int index)
+        {
+            object b = dataRecord.GetValue(index);
+            return TypeConvert.ToBoolean(b);
+        }
+
+        public static bool? GetAsNullableBool(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return null;
+            return GetAsBool(dataRecord, index);
+        }
+
+        public static char GetAsChar(this IDataRecord dataRecord, int index)
+        {
+            object c = dataRecord.GetValue(index);
+            return TypeConvert.ToChar(c);
+        }
+
+        public static char? GetAsNullableChar(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return null;
+            return GetAsChar(dataRecord, index);
+        }
+
+        public static U GetAsNumeric<U>(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return default(U);
+            return GetAsNumeric<U>(dataRecord.GetValue(index));
+        }
+
+        public static U? GetAsNullableNumeric<U>(this IDataRecord dataRecord, int index)
+            where U : struct
+        {
+            if (dataRecord.IsDBNull(index))
+                return null;
+            return GetAsNumeric<U>(dataRecord.GetValue(index));
+        }
+
+        private static U GetAsNumeric<U>(object o)
+        {
+            if (o == null || o is DBNull)
+                return default(U);
+            return TypeConvert.ToNumber<U>(o);
+        }
+
+        public static int GetAsEnum(this IDataRecord dataRecord, Type enumType, int index)
+        {
+            int enumAsInt = dataRecord.GetAsNumeric<int>(index);
+            return enumAsInt;
+        }
+
+        public static byte[] GetAsBytes(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return new byte[0];
+            object obj = dataRecord.GetValue(index);
+            if (obj == null)
+                return new byte[0]; //nullable blob?
+            byte[] bytes = obj as byte[];
+            if (bytes != null)
+                return bytes; //works for BLOB field
+            Console.WriteLine("GetBytes: received unexpected type:" + obj);
+            //return _rdr.GetInt32(index);
+            return new byte[0];
+        }
+
+        public static System.Data.Linq.Binary GetAsBinary(this IDataRecord dataRecord, int index)
+        {
+            byte[] bytes = GetAsBytes(dataRecord, index);
+            if (bytes.Length == 0)
+                return null;
+            return new System.Data.Linq.Binary(bytes);
+        }
+
+        public static object GetAsObject(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return null;
+            object obj = dataRecord.GetValue(index);
+            return obj;
+        }
+
+        public static DateTime GetAsDateTime(this IDataRecord dataRecord, int index)
+        {
+            // Convert an InvalidCastException (thrown for example by Npgsql when an
+            // operation like "SELECT '2012-'::timestamp - NULL" that is perfectly
+            // legal on PostgreSQL returns a null instead of a DateTime) into the
+            // correct InvalidOperationException.
+
+            if (dataRecord.IsDBNull(index))
+                throw new InvalidOperationException("NULL found where DateTime expected");
+            return dataRecord.GetDateTime(index);
+        }
+
+        public static DateTime? GetAsNullableDateTime(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return null;
+            return GetAsDateTime(dataRecord, index);
+        }
+
+        public static Guid GetAsGuid(this IDataRecord dataRecord, int index)
+        {
+            return dataRecord.GetGuid(index);
+        }
+        public static Guid? GetAsNullableGuid(this IDataRecord dataRecord, int index)
+        {
+            if (dataRecord.IsDBNull(index))
+                return null;
+            return GetAsGuid(dataRecord, index);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/IDataTypeExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/IDataTypeExtensions.cs
@@ -1,75 +1,75 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Text.RegularExpressions;
-using DbLinq.Vendor;
-
-namespace DbLinq.Util
-{
-#if !MONO_STRICT
-    public // used by external vendors
-#endif
-    static class IDataTypeExtensions
-    {
-        private static readonly Regex rawTypeEx = new Regex(@"(?<type>\w+)(\((?<length>\d+)(,(?<scale>\d+))?\))?( (?<qualifier>\w+))?", RegexOptions.Compiled);
-        /// <summary>
-        /// unpacks a raw db type
-        /// </summary>
-        /// <param name="rawType"></param>
-        /// <param name="dataType"></param>
-        public static void UnpackRawDbType(this IDataType dataType, string rawType)
-        {
-            var match = rawTypeEx.Match(rawType);
-            if (match.Success)
-            {
-                dataType.SqlType = match.Result("${type}");
-                var rawLength = match.Result("${length}");
-                int length;
-                if (int.TryParse(rawLength, out length))
-                    dataType.Length = length;
-                else
-                    dataType.Length = null;
-                dataType.Precision = (int?)dataType.Length;
-                var rawScale = match.Result("${scale}");
-                int scale;
-                if (int.TryParse(rawScale, out scale))
-                    dataType.Scale = scale;
-                else
-                    dataType.Scale = null;
-                var qualifier = match.Result("${qualifier}");
-                dataType.Unsigned = qualifier.ToLower().Contains("unsigned");
-            }
-            else
-            {
-                dataType.SqlType = rawType;
-                dataType.Length = null;
-                dataType.Precision = null;
-                dataType.Scale = null;
-                dataType.Unsigned = null;
-            }
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Text.RegularExpressions;
+using DbLinq.Vendor;
+
+namespace DbLinq.Util
+{
+#if !MONO_STRICT
+    public // used by external vendors
+#endif
+    static class IDataTypeExtensions
+    {
+        private static readonly Regex rawTypeEx = new Regex(@"(?<type>\w+)(\((?<length>\d+)(,(?<scale>\d+))?\))?( (?<qualifier>\w+))?", RegexOptions.Compiled);
+        /// <summary>
+        /// unpacks a raw db type
+        /// </summary>
+        /// <param name="rawType"></param>
+        /// <param name="dataType"></param>
+        public static void UnpackRawDbType(this IDataType dataType, string rawType)
+        {
+            var match = rawTypeEx.Match(rawType);
+            if (match.Success)
+            {
+                dataType.SqlType = match.Result("${type}");
+                var rawLength = match.Result("${length}");
+                int length;
+                if (int.TryParse(rawLength, out length))
+                    dataType.Length = length;
+                else
+                    dataType.Length = null;
+                dataType.Precision = (int?)dataType.Length;
+                var rawScale = match.Result("${scale}");
+                int scale;
+                if (int.TryParse(rawScale, out scale))
+                    dataType.Scale = scale;
+                else
+                    dataType.Scale = null;
+                var qualifier = match.Result("${qualifier}");
+                dataType.Unsigned = qualifier.ToLower().Contains("unsigned");
+            }
+            else
+            {
+                dataType.SqlType = rawType;
+                dataType.Length = null;
+                dataType.Precision = null;
+                dataType.Scale = null;
+                dataType.Unsigned = null;
+            }
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/IDbDataParameterExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/IDbDataParameterExtensions.cs
@@ -1,72 +1,72 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Data.Linq;
-
-namespace DbLinq.Util
-{
-#if !MONO_STRICT
-    public
-#endif
-    static class IDbDataParameterExtensions
-    {
-        public static void SetValue(this IDbDataParameter dbParameter, object value, Type type)
-        {
-            if (value == null)
-            {
-                if (type.IsNullable())
-                    dbParameter.Value = TypeConvert.GetDefault(type.GetNullableType());
-                else if (type.IsValueType)
-                    dbParameter.Value = TypeConvert.GetDefault(type);
-                else
-                {
-                    DbType? dbType = GetDbType(type);
-                    if (dbType.HasValue)
-                        dbParameter.DbType = dbType.Value;
-                }
-                dbParameter.Value = DBNull.Value;
-            }
-            else
-                dbParameter.Value = value;
-        }
-
-        private static DbType? GetDbType(Type type)
-        {
-            if (type == typeof(Binary))
-                return DbType.Binary;
-            if (type == typeof(byte[]))
-                return DbType.Binary;
-            return null;
-        }
-
-        public static void SetValue<T>(this IDbDataParameter dbParameter, T value)
-        {
-            SetValue(dbParameter, value, typeof(T));
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Data.Linq;
+
+namespace DbLinq.Util
+{
+#if !MONO_STRICT
+    public
+#endif
+    static class IDbDataParameterExtensions
+    {
+        public static void SetValue(this IDbDataParameter dbParameter, object value, Type type)
+        {
+            if (value == null)
+            {
+                if (type.IsNullable())
+                    dbParameter.Value = TypeConvert.GetDefault(type.GetNullableType());
+                else if (type.IsValueType)
+                    dbParameter.Value = TypeConvert.GetDefault(type);
+                else
+                {
+                    DbType? dbType = GetDbType(type);
+                    if (dbType.HasValue)
+                        dbParameter.DbType = dbType.Value;
+                }
+                dbParameter.Value = DBNull.Value;
+            }
+            else
+                dbParameter.Value = value;
+        }
+
+        private static DbType? GetDbType(Type type)
+        {
+            if (type == typeof(Binary))
+                return DbType.Binary;
+            if (type == typeof(byte[]))
+                return DbType.Binary;
+            return null;
+        }
+
+        public static void SetValue<T>(this IDbDataParameter dbParameter, T value)
+        {
+            SetValue(dbParameter, value, typeof(T));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/IThreadSafeDictionary.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/IThreadSafeDictionary.cs
@@ -1,32 +1,32 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Thread safe dictionary (Brian Rudolph's code)
-    /// </summary>
-    /// <typeparam name="TKey">Type of Keys</typeparam>
-    /// <typeparam name="TValue">Type of Values</typeparam>
-#if !MONO_STRICT
-    public
-#endif
-    interface IThreadSafeDictionary<TKey, TValue> : IDictionary<TKey, TValue>
-    {
-        /// <summary>
-        /// Merge is similar to the SQL merge or upsert statement.  
-        /// </summary>
-        /// <param name="key">Key to lookup</param>
-        /// <param name="newValue">New Value</param>
-        void MergeSafe(TKey key, TValue newValue);
-
-
-        /// <summary>
-        /// This is a blind remove. Prevents the need to check for existence first.
-        /// </summary>
-        /// <param name="key">Key to Remove</param>
-        void RemoveSafe(TKey key);
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Thread safe dictionary (Brian Rudolph's code)
+    /// </summary>
+    /// <typeparam name="TKey">Type of Keys</typeparam>
+    /// <typeparam name="TValue">Type of Values</typeparam>
+#if !MONO_STRICT
+    public
+#endif
+    interface IThreadSafeDictionary<TKey, TValue> : IDictionary<TKey, TValue>
+    {
+        /// <summary>
+        /// Merge is similar to the SQL merge or upsert statement.  
+        /// </summary>
+        /// <param name="key">Key to lookup</param>
+        /// <param name="newValue">New Value</param>
+        void MergeSafe(TKey key, TValue newValue);
+
+
+        /// <summary>
+        /// This is a blind remove. Prevents the need to check for existence first.
+        /// </summary>
+        /// <param name="key">Key to Remove</param>
+        void RemoveSafe(TKey key);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/LambdaComparer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/LambdaComparer.cs
@@ -1,50 +1,50 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// The name sucks, but it is to avoid confusion with System.Collections.Generic.Comparer
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    internal class LambdaComparer<T> : IComparer<T>
-    {
-        private readonly Func<T, T, int> comparer;
-
-        public int Compare(T x, T y)
-        {
-            return comparer(x, y);
-        }
-
-        public LambdaComparer(Func<T, T, int> comparer)
-        {
-            this.comparer = comparer;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// The name sucks, but it is to avoid confusion with System.Collections.Generic.Comparer
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    internal class LambdaComparer<T> : IComparer<T>
+    {
+        private readonly Func<T, T, int> comparer;
+
+        public int Compare(T x, T y)
+        {
+            return comparer(x, y);
+        }
+
+        public LambdaComparer(Func<T, T, int> comparer)
+        {
+            this.comparer = comparer;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/MemberInfoExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/MemberInfoExtensions.cs
@@ -1,143 +1,143 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Reflection;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Extensions to handle FieldInfo and PropertyInfo as a single class, their MemberInfo class
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    static class MemberInfoExtensions
-    {
-        /// <summary>
-        /// Returns the type of the specified member
-        /// </summary>
-        /// <param name="memberInfo">member to get type from</param>
-        /// <returns>Member type</returns>
-        public static Type GetMemberType(this MemberInfo memberInfo)
-        {
-            if (memberInfo is FieldInfo)
-                return ((FieldInfo)memberInfo).FieldType;
-            if (memberInfo is PropertyInfo)
-                return ((PropertyInfo)memberInfo).PropertyType;
-            if (memberInfo is MethodInfo)
-                return ((MethodInfo)memberInfo).ReturnType;
-            if (memberInfo is ConstructorInfo)
-                return null;
-            if (memberInfo is Type)
-                return (Type)memberInfo;
-            throw new ArgumentException();
-        }
-
-        public static bool GetIsStaticMember(this MemberInfo memberInfo)
-        {
-            if (memberInfo is FieldInfo)
-                return ((FieldInfo)memberInfo).IsStatic;
-            if (memberInfo is PropertyInfo)
-            {
-                MethodInfo propertyMethod;
-                PropertyInfo propertyInfo = (PropertyInfo)memberInfo;
-                if ((propertyMethod = propertyInfo.GetGetMethod()) != null || (propertyMethod = propertyInfo.GetSetMethod()) != null)
-                    return GetIsStaticMember(propertyMethod);
-
-            }
-            if (memberInfo is MethodInfo)
-                return ((MethodInfo)memberInfo).IsStatic; ;
-            throw new ArgumentException();
-        }
-
-        /// <summary>
-        /// Gets a field/property
-        /// </summary>
-        /// <param name="memberInfo">The memberInfo specifying the object</param>
-        /// <param name="o">The object</param>
-        public static object GetMemberValue(this MemberInfo memberInfo, object o)
-        {
-            if (memberInfo is FieldInfo)
-                return ((FieldInfo)memberInfo).GetValue(o);
-            if (memberInfo is PropertyInfo)
-                return ((PropertyInfo)memberInfo).GetGetMethod().Invoke(o, new object[0]);
-            throw new ArgumentException();
-        }
-
-        /// <summary>
-        /// Sets a field/property
-        /// </summary>
-        /// <param name="memberInfo">The memberInfo specifying the object</param>
-        /// <param name="o">The object</param>
-        /// <param name="value">The field/property value to assign</param>
-        public static void SetMemberValue(this MemberInfo memberInfo, object o, object value)
-        {
-            if (memberInfo is FieldInfo)
-                ((FieldInfo)memberInfo).SetValue(o, value);
-            else if (memberInfo is PropertyInfo)
-                ((PropertyInfo)memberInfo).GetSetMethod().Invoke(o, new[] { value });
-            else throw new ArgumentException();
-        }
-
-        /// <summary>
-        /// If memberInfo is a method related to a property, returns the PropertyInfo
-        /// </summary>
-        /// <param name="memberInfo"></param>
-        /// <returns></returns>
-        public static PropertyInfo GetExposingProperty(this MemberInfo memberInfo)
-        {
-            var reflectedType = memberInfo.ReflectedType;
-            foreach (var propertyInfo in reflectedType.GetProperties())
-            {
-                if (propertyInfo.GetGetMethod() == memberInfo || propertyInfo.GetSetMethod() == memberInfo)
-                    return propertyInfo;
-            }
-            return null;
-        }
-
-		/// <summary>
-		/// This function returns the type that is the "return type" of the member.
-		/// If it is a template it returns the first template parameter type.
-		/// </summary>
-		/// <param name="memberInfo">The member info.</param>
-		/// TODO: better function name
-		public static Type GetFirstInnerReturnType(this MemberInfo memberInfo)
-		{
-			var type = memberInfo.GetMemberType();
-
-			if (type == null)
-				return null;
-
-			if (type.IsGenericType)
-			{
-				return type.GetGenericArguments()[0];
-			}
-
-			return type;
-		}
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Reflection;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Extensions to handle FieldInfo and PropertyInfo as a single class, their MemberInfo class
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    static class MemberInfoExtensions
+    {
+        /// <summary>
+        /// Returns the type of the specified member
+        /// </summary>
+        /// <param name="memberInfo">member to get type from</param>
+        /// <returns>Member type</returns>
+        public static Type GetMemberType(this MemberInfo memberInfo)
+        {
+            if (memberInfo is FieldInfo)
+                return ((FieldInfo)memberInfo).FieldType;
+            if (memberInfo is PropertyInfo)
+                return ((PropertyInfo)memberInfo).PropertyType;
+            if (memberInfo is MethodInfo)
+                return ((MethodInfo)memberInfo).ReturnType;
+            if (memberInfo is ConstructorInfo)
+                return null;
+            if (memberInfo is Type)
+                return (Type)memberInfo;
+            throw new ArgumentException();
+        }
+
+        public static bool GetIsStaticMember(this MemberInfo memberInfo)
+        {
+            if (memberInfo is FieldInfo)
+                return ((FieldInfo)memberInfo).IsStatic;
+            if (memberInfo is PropertyInfo)
+            {
+                MethodInfo propertyMethod;
+                PropertyInfo propertyInfo = (PropertyInfo)memberInfo;
+                if ((propertyMethod = propertyInfo.GetGetMethod()) != null || (propertyMethod = propertyInfo.GetSetMethod()) != null)
+                    return GetIsStaticMember(propertyMethod);
+
+            }
+            if (memberInfo is MethodInfo)
+                return ((MethodInfo)memberInfo).IsStatic; ;
+            throw new ArgumentException();
+        }
+
+        /// <summary>
+        /// Gets a field/property
+        /// </summary>
+        /// <param name="memberInfo">The memberInfo specifying the object</param>
+        /// <param name="o">The object</param>
+        public static object GetMemberValue(this MemberInfo memberInfo, object o)
+        {
+            if (memberInfo is FieldInfo)
+                return ((FieldInfo)memberInfo).GetValue(o);
+            if (memberInfo is PropertyInfo)
+                return ((PropertyInfo)memberInfo).GetGetMethod().Invoke(o, new object[0]);
+            throw new ArgumentException();
+        }
+
+        /// <summary>
+        /// Sets a field/property
+        /// </summary>
+        /// <param name="memberInfo">The memberInfo specifying the object</param>
+        /// <param name="o">The object</param>
+        /// <param name="value">The field/property value to assign</param>
+        public static void SetMemberValue(this MemberInfo memberInfo, object o, object value)
+        {
+            if (memberInfo is FieldInfo)
+                ((FieldInfo)memberInfo).SetValue(o, value);
+            else if (memberInfo is PropertyInfo)
+                ((PropertyInfo)memberInfo).GetSetMethod().Invoke(o, new[] { value });
+            else throw new ArgumentException();
+        }
+
+        /// <summary>
+        /// If memberInfo is a method related to a property, returns the PropertyInfo
+        /// </summary>
+        /// <param name="memberInfo"></param>
+        /// <returns></returns>
+        public static PropertyInfo GetExposingProperty(this MemberInfo memberInfo)
+        {
+            var reflectedType = memberInfo.ReflectedType;
+            foreach (var propertyInfo in reflectedType.GetProperties())
+            {
+                if (propertyInfo.GetGetMethod() == memberInfo || propertyInfo.GetSetMethod() == memberInfo)
+                    return propertyInfo;
+            }
+            return null;
+        }
+
+		/// <summary>
+		/// This function returns the type that is the "return type" of the member.
+		/// If it is a template it returns the first template parameter type.
+		/// </summary>
+		/// <param name="memberInfo">The member info.</param>
+		/// TODO: better function name
+		public static Type GetFirstInnerReturnType(this MemberInfo memberInfo)
+		{
+			var type = memberInfo.GetMemberType();
+
+			if (type == null)
+				return null;
+
+			if (type.IsGenericType)
+			{
+				return type.GetGenericArguments()[0];
+			}
+
+			return type;
+		}
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/Output.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/Output.cs
@@ -1,131 +1,131 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.IO;
-
-namespace DbLinq.Util
-{
-    internal static class Output
-    {
-        /// <summary>
-        /// Writes a warning
-        /// </summary>
-        /// <param name="textWriter"></param>
-        /// <param name="format"></param>
-        /// <param name="arg"></param>
-        public static void WriteWarningLine(this TextWriter textWriter, string format, params object[] arg)
-        {
-            WriteLine(textWriter, OutputLevel.Warning, format, arg);
-        }
-
-        /// <summary>
-        /// Writes an error
-        /// </summary>
-        /// <param name="textWriter"></param>
-        /// <param name="format"></param>
-        /// <param name="arg"></param>
-        public static void WriteErrorLine(this TextWriter textWriter, string format, params object[] arg)
-        {
-            WriteLine(textWriter, OutputLevel.Error, format, arg);
-        }
-
-        /// <summary>
-        /// Internal main write method.
-        /// Depending on the output type, we may want to 
-        /// </summary>
-        /// <param name="textWriter"></param>
-        /// <param name="outputLevel"></param>
-        /// <param name="format"></param>
-        /// <param name="arg"></param>
-        public static void WriteLine(TextWriter textWriter, OutputLevel outputLevel, string format, params object[] arg)
-        {
-            if (IsConsole(textWriter))
-                WriteConsoleLine(outputLevel, format, arg);
-            else
-                textWriter.WriteLine(format, arg);
-        }
-
-        /// <summary>
-        /// Writes to console, using specified information level
-        /// </summary>
-        /// <param name="outputLevel"></param>
-        /// <param name="format"></param>
-        /// <param name="arg"></param>
-        public static void WriteConsoleLine(OutputLevel outputLevel, string format, params object[] arg)
-        {
-            ConsoleColor? consoleForegroundColor;
-            TextWriter consoleOutput;
-            // depending on output level, color and textwriter are set
-            switch (outputLevel)
-            {
-            case OutputLevel.Debug:
-                consoleForegroundColor = ConsoleColor.Blue;
-                consoleOutput = Console.Out;
-                break;
-            case OutputLevel.Information:
-                consoleForegroundColor = null;
-                consoleOutput = Console.Out;
-                break;
-            case OutputLevel.Warning:
-                consoleForegroundColor = ConsoleColor.Yellow;
-                consoleOutput = Console.Out;
-                break;
-            case OutputLevel.Error:
-                consoleForegroundColor = ConsoleColor.Red;
-                consoleOutput = Console.Error;
-                break;
-            default:
-                throw new ArgumentOutOfRangeException("outputLevel");
-            }
-            try
-            {
-                // optionnaly set the color
-                if (consoleForegroundColor.HasValue)
-                    Console.ForegroundColor = consoleForegroundColor.Value;
-                // and write
-                consoleOutput.WriteLine(format, arg);
-            }
-            finally
-            {
-                // since the WriteLine may return exceptions if the format is invalid
-                // we reset the color here
-                if (consoleForegroundColor.HasValue)
-                    Console.ResetColor();
-            }
-        }
-
-        /// <summary>
-        /// Tells if we're writing on the console.
-        /// </summary>
-        /// <param name="textWriter"></param>
-        /// <returns></returns>
-        private static bool IsConsole(TextWriter textWriter)
-        {
-            return textWriter == Console.Out || textWriter == Console.Error;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.IO;
+
+namespace DbLinq.Util
+{
+    internal static class Output
+    {
+        /// <summary>
+        /// Writes a warning
+        /// </summary>
+        /// <param name="textWriter"></param>
+        /// <param name="format"></param>
+        /// <param name="arg"></param>
+        public static void WriteWarningLine(this TextWriter textWriter, string format, params object[] arg)
+        {
+            WriteLine(textWriter, OutputLevel.Warning, format, arg);
+        }
+
+        /// <summary>
+        /// Writes an error
+        /// </summary>
+        /// <param name="textWriter"></param>
+        /// <param name="format"></param>
+        /// <param name="arg"></param>
+        public static void WriteErrorLine(this TextWriter textWriter, string format, params object[] arg)
+        {
+            WriteLine(textWriter, OutputLevel.Error, format, arg);
+        }
+
+        /// <summary>
+        /// Internal main write method.
+        /// Depending on the output type, we may want to 
+        /// </summary>
+        /// <param name="textWriter"></param>
+        /// <param name="outputLevel"></param>
+        /// <param name="format"></param>
+        /// <param name="arg"></param>
+        public static void WriteLine(TextWriter textWriter, OutputLevel outputLevel, string format, params object[] arg)
+        {
+            if (IsConsole(textWriter))
+                WriteConsoleLine(outputLevel, format, arg);
+            else
+                textWriter.WriteLine(format, arg);
+        }
+
+        /// <summary>
+        /// Writes to console, using specified information level
+        /// </summary>
+        /// <param name="outputLevel"></param>
+        /// <param name="format"></param>
+        /// <param name="arg"></param>
+        public static void WriteConsoleLine(OutputLevel outputLevel, string format, params object[] arg)
+        {
+            ConsoleColor? consoleForegroundColor;
+            TextWriter consoleOutput;
+            // depending on output level, color and textwriter are set
+            switch (outputLevel)
+            {
+            case OutputLevel.Debug:
+                consoleForegroundColor = ConsoleColor.Blue;
+                consoleOutput = Console.Out;
+                break;
+            case OutputLevel.Information:
+                consoleForegroundColor = null;
+                consoleOutput = Console.Out;
+                break;
+            case OutputLevel.Warning:
+                consoleForegroundColor = ConsoleColor.Yellow;
+                consoleOutput = Console.Out;
+                break;
+            case OutputLevel.Error:
+                consoleForegroundColor = ConsoleColor.Red;
+                consoleOutput = Console.Error;
+                break;
+            default:
+                throw new ArgumentOutOfRangeException("outputLevel");
+            }
+            try
+            {
+                // optionnaly set the color
+                if (consoleForegroundColor.HasValue)
+                    Console.ForegroundColor = consoleForegroundColor.Value;
+                // and write
+                consoleOutput.WriteLine(format, arg);
+            }
+            finally
+            {
+                // since the WriteLine may return exceptions if the format is invalid
+                // we reset the color here
+                if (consoleForegroundColor.HasValue)
+                    Console.ResetColor();
+            }
+        }
+
+        /// <summary>
+        /// Tells if we're writing on the console.
+        /// </summary>
+        /// <param name="textWriter"></param>
+        /// <returns></returns>
+        private static bool IsConsole(TextWriter textWriter)
+        {
+            return textWriter == Console.Out || textWriter == Console.Error;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/OutputLevel.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/OutputLevel.cs
@@ -1,39 +1,39 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Log output level
-    /// </summary>
-    internal enum OutputLevel
-    {
-        Debug,
-        Information,
-        Warning,
-        Error,
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Log output level
+    /// </summary>
+    internal enum OutputLevel
+    {
+        Debug,
+        Information,
+        Warning,
+        Error,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/Page.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/Page.cs
@@ -1,55 +1,55 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-
-namespace DbLinq.Util
-{
-#if !MONO_STRICT
-    public
-#endif
-    class Page
-    {
-        /// <summary>
-        /// break a bigList into pages of size N.
-        /// </summary>
-        public static IEnumerable<List<T>> Paginate<T>(List<T> bigList, int pageSize)
-        {
-            List<T> smallList = new List<T>();
-            foreach (T t in bigList)
-            {
-                smallList.Add(t);
-                if (smallList.Count >= pageSize)
-                {
-                    yield return smallList;
-                    smallList.Clear();
-                }
-            }
-            if (smallList.Count > 0)
-                yield return smallList;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+
+namespace DbLinq.Util
+{
+#if !MONO_STRICT
+    public
+#endif
+    class Page
+    {
+        /// <summary>
+        /// break a bigList into pages of size N.
+        /// </summary>
+        public static IEnumerable<List<T>> Paginate<T>(List<T> bigList, int pageSize)
+        {
+            List<T> smallList = new List<T>();
+            foreach (T t in bigList)
+            {
+                smallList.Add(t);
+                if (smallList.Count >= pageSize)
+                {
+                    yield return smallList;
+                    smallList.Clear();
+                }
+            }
+            if (smallList.Count > 0)
+                yield return smallList;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/Profiler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/Profiler.cs
@@ -1,78 +1,78 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Diagnostics;
-using System.IO;
-
-namespace DbLinq.Util
-{
-#if !MONO_STRICT
-    public
-#endif
-    static class Profiler
-    {
-        [ThreadStatic]
-        private static Stopwatch timer = new Stopwatch();
-
-        private static Stopwatch Timer
-        {
-            get 
-            {
-                if (timer == null)
-                    timer = new Stopwatch();
-                return timer;
-            }
-        }
-
-        [ThreadStatic]
-        private static long prevTicks;
-        [ThreadStatic]
-        private static bool profiling;
-        [ThreadStatic]
-        private static TextWriter log;
-
-        private static TextWriter Log
-        {
-            get
-            {
-                if (log == null)
-                    log = Console.Out;
-                return log;
-            }
-            set 
-            { 
-                log = value; 
-            }
-        }
-
-        [Conditional("DEBUG")]
-        public static void Start()
-        {
-            profiling = true;
-            prevTicks = 0;
-            Timer.Reset();
-            Timer.Start();
-        }
-
-        [Conditional("DEBUG")]
-        public static void At(string format, params object[] args)
-        {
-            if (profiling)
-            {
-                Timer.Stop();
-                Log.Write("#AT(time={0:D12}, elapsed={1:D12}) ", Timer.ElapsedTicks, Timer.ElapsedTicks - prevTicks);
-                prevTicks = Timer.ElapsedTicks;
-                Log.WriteLine(format, args);
-                Timer.Start();
-            }
-        }
-
-        [Conditional("DEBUG")]
-        public static void Stop()
-        {
-            profiling = false;
-            Timer.Stop();
-        }
-    }
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Diagnostics;
+using System.IO;
+
+namespace DbLinq.Util
+{
+#if !MONO_STRICT
+    public
+#endif
+    static class Profiler
+    {
+        [ThreadStatic]
+        private static Stopwatch timer = new Stopwatch();
+
+        private static Stopwatch Timer
+        {
+            get 
+            {
+                if (timer == null)
+                    timer = new Stopwatch();
+                return timer;
+            }
+        }
+
+        [ThreadStatic]
+        private static long prevTicks;
+        [ThreadStatic]
+        private static bool profiling;
+        [ThreadStatic]
+        private static TextWriter log;
+
+        private static TextWriter Log
+        {
+            get
+            {
+                if (log == null)
+                    log = Console.Out;
+                return log;
+            }
+            set 
+            { 
+                log = value; 
+            }
+        }
+
+        [Conditional("DEBUG")]
+        public static void Start()
+        {
+            profiling = true;
+            prevTicks = 0;
+            Timer.Reset();
+            Timer.Start();
+        }
+
+        [Conditional("DEBUG")]
+        public static void At(string format, params object[] args)
+        {
+            if (profiling)
+            {
+                Timer.Stop();
+                Log.Write("#AT(time={0:D12}, elapsed={1:D12}) ", Timer.ElapsedTicks, Timer.ElapsedTicks - prevTicks);
+                prevTicks = Timer.ElapsedTicks;
+                Log.WriteLine(format, args);
+                Timer.Start();
+            }
+        }
+
+        [Conditional("DEBUG")]
+        public static void Stop()
+        {
+            profiling = false;
+            Timer.Stop();
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/QuotesHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/QuotesHelper.cs
@@ -1,70 +1,70 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// maintainer: Anton Andreev
-    /// </summary>
-    internal static class QuotesHelper
-    {
-        public static string AddQuotesToSequence(string idColName, string sequenceName)
-        {
-            if (idColName != idColName.ToLower() && !sequenceName.StartsWith("\""))//toncho11: quotes are added due to issue http://code.google.com/p/dblinq2007/issues/detail?id=27}
-            {
-                sequenceName = "\"" + sequenceName.Replace(".", "\".\"") + "\"";
-            }
-            return sequenceName;
-        }
-
-        /// <summary>
-        /// Enquotes a given string, if not already enquoted
-        /// </summary>
-        /// <param name="name">The string to enquote</param>
-        /// <param name="startQuote">The start quote</param>
-        /// <param name="endQuote">The end quote</param>
-        /// <returns></returns>
-        public static string Enquote(string name, char startQuote, char endQuote)
-        {
-            if (name.Length > 0 && name[0] != startQuote)
-                name = startQuote + name;
-            if (name.Length > 0 && name[name.Length - 1] != endQuote)
-                name = name + endQuote;
-            return name;
-        }
-
-        public static string Enquote(string name, char quote)
-        {
-            return Enquote(name, quote, quote);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// maintainer: Anton Andreev
+    /// </summary>
+    internal static class QuotesHelper
+    {
+        public static string AddQuotesToSequence(string idColName, string sequenceName)
+        {
+            if (idColName != idColName.ToLower() && !sequenceName.StartsWith("\""))//toncho11: quotes are added due to issue http://code.google.com/p/dblinq2007/issues/detail?id=27}
+            {
+                sequenceName = "\"" + sequenceName.Replace(".", "\".\"") + "\"";
+            }
+            return sequenceName;
+        }
+
+        /// <summary>
+        /// Enquotes a given string, if not already enquoted
+        /// </summary>
+        /// <param name="name">The string to enquote</param>
+        /// <param name="startQuote">The start quote</param>
+        /// <param name="endQuote">The end quote</param>
+        /// <returns></returns>
+        public static string Enquote(string name, char startQuote, char endQuote)
+        {
+            if (name.Length > 0 && name[0] != startQuote)
+                name = startQuote + name;
+            if (name.Length > 0 && name[name.Length - 1] != endQuote)
+                name = name + endQuote;
+            return name;
+        }
+
+        public static string Enquote(string name, char quote)
+        {
+            return Enquote(name, quote, quote);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/ReferenceEqualityComparer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/ReferenceEqualityComparer.cs
@@ -1,63 +1,63 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Reflection;
-
-namespace DbLinq.Util
-{
-    internal class ReferenceEqualityComparer<T> : IEqualityComparer<T>
-    {
-        private MethodInfo objectGetHashCode;
-        /// <summary>
-        /// This is the raw GetHashCode, not inherited
-        /// </summary>
-        protected MethodInfo ObjectGetHashCode
-        {
-            get
-            {
-                if (objectGetHashCode == null)
-                {
-                    objectGetHashCode = typeof(object).GetMethod("GetHashCode");
-                }
-                return objectGetHashCode;
-            }
-        }
-
-        private object[] noArgs = new object[0];
-
-        public bool Equals(T x, T y)
-        {
-            return ReferenceEquals(x, y);
-        }
-
-        public int GetHashCode(T obj)
-        {
-            var hash = (int)ObjectGetHashCode.Invoke(obj, noArgs);
-            return hash;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace DbLinq.Util
+{
+    internal class ReferenceEqualityComparer<T> : IEqualityComparer<T>
+    {
+        private MethodInfo objectGetHashCode;
+        /// <summary>
+        /// This is the raw GetHashCode, not inherited
+        /// </summary>
+        protected MethodInfo ObjectGetHashCode
+        {
+            get
+            {
+                if (objectGetHashCode == null)
+                {
+                    objectGetHashCode = typeof(object).GetMethod("GetHashCode");
+                }
+                return objectGetHashCode;
+            }
+        }
+
+        private object[] noArgs = new object[0];
+
+        public bool Equals(T x, T y)
+        {
+            return ReferenceEquals(x, y);
+        }
+
+        public int GetHashCode(T obj)
+        {
+            var hash = (int)ObjectGetHashCode.Invoke(obj, noArgs);
+            return hash;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/ReflectionExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/ReflectionExtensions.cs
@@ -1,79 +1,79 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Reflection;
-
-namespace DbLinq.Util
-{
-    internal static class ReflectionExtensions
-    {
-        private static A GetSingleAttribute<A>(object[] attributes)
-            where A : Attribute
-        {
-            if (attributes.Length > 0)
-                return (A)attributes[0];
-            return null;
-        }
-
-        /// <summary>
-        /// Returns a requested attribute for a given assembly
-        /// </summary>
-        /// <typeparam name="A">The requested attribute type</typeparam>
-        /// <param name="a">The assembly supposed to provide that attribute</param>
-        /// <returns>An attribute of type A or null if none</returns>
-        public static A GetAttribute<A>(this Assembly a)
-            where A : Attribute
-        {
-            return GetSingleAttribute<A>(a.GetCustomAttributes(typeof(A), true));
-        }
-
-        /// <summary>
-        /// Returns a requested attribute for a given type
-        /// </summary>
-        /// <typeparam name="A">The requested attribute type</typeparam>
-        /// <param name="t">The class supposed to provide that attribute</param>
-        /// <returns>An attribute of type A or null if none</returns>
-        public static A GetAttribute<A>(this Type t)
-            where A: Attribute
-        {
-            return GetSingleAttribute<A>(t.GetCustomAttributes(typeof(A), true));
-        }
-
-        /// <summary>
-        /// Returns a requested attribute for a given member
-        /// </summary>
-        /// <typeparam name="A">The requested attribute type</typeparam>
-        /// <param name="m">The member supposed to provide that attribute</param>
-        /// <returns>An attribute of type A or null if none</returns>
-        public static A GetAttribute<A>(this MemberInfo m)
-            where A : Attribute
-        {
-            return GetSingleAttribute<A>(m.GetCustomAttributes(typeof(A), true));
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Reflection;
+
+namespace DbLinq.Util
+{
+    internal static class ReflectionExtensions
+    {
+        private static A GetSingleAttribute<A>(object[] attributes)
+            where A : Attribute
+        {
+            if (attributes.Length > 0)
+                return (A)attributes[0];
+            return null;
+        }
+
+        /// <summary>
+        /// Returns a requested attribute for a given assembly
+        /// </summary>
+        /// <typeparam name="A">The requested attribute type</typeparam>
+        /// <param name="a">The assembly supposed to provide that attribute</param>
+        /// <returns>An attribute of type A or null if none</returns>
+        public static A GetAttribute<A>(this Assembly a)
+            where A : Attribute
+        {
+            return GetSingleAttribute<A>(a.GetCustomAttributes(typeof(A), true));
+        }
+
+        /// <summary>
+        /// Returns a requested attribute for a given type
+        /// </summary>
+        /// <typeparam name="A">The requested attribute type</typeparam>
+        /// <param name="t">The class supposed to provide that attribute</param>
+        /// <returns>An attribute of type A or null if none</returns>
+        public static A GetAttribute<A>(this Type t)
+            where A: Attribute
+        {
+            return GetSingleAttribute<A>(t.GetCustomAttributes(typeof(A), true));
+        }
+
+        /// <summary>
+        /// Returns a requested attribute for a given member
+        /// </summary>
+        /// <typeparam name="A">The requested attribute type</typeparam>
+        /// <param name="m">The member supposed to provide that attribute</param>
+        /// <returns>An attribute of type A or null if none</returns>
+        public static A GetAttribute<A>(this MemberInfo m)
+            where A : Attribute
+        {
+            return GetSingleAttribute<A>(m.GetCustomAttributes(typeof(A), true));
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/ReflectionUtility.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/ReflectionUtility.cs
@@ -1,176 +1,176 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq.Expressions;
-using System.Reflection;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// What is extreme laziness? :)
-    /// This class allows to get PropertyInfo or MethodInfo given a lambda (which allows to refactor members)
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    static class ReflectionUtility
-    {
-        public static MethodInfo GetMethodInfo(LambdaExpression lambdaExpression)
-        {
-            var methodCallExpression = lambdaExpression.Body as MethodCallExpression;
-            if (methodCallExpression != null)
-                return methodCallExpression.Method;
-            throw new ArgumentException("Lambda expression is not correctly formated for MethodInfo extraction");
-        }
-
-        /// <summary>
-        /// Returns a method info, providing a lambda
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="lambdaExpression"></param>
-        /// <returns></returns>
-        public static MethodInfo GetMethodInfo<T>(this Expression<Action<T>> lambdaExpression)
-        {
-            return GetMethodInfo((LambdaExpression)lambdaExpression);
-        }
-
-        /// <summary>
-        /// Returns a method info, for example ReflectionUtility.GetMethodInfo(() => A.F()) would return "A.F()" MethodInfo
-        /// </summary>
-        /// <param name="lambdaExpression"></param>
-        /// <returns></returns>
-        public static MethodInfo GetMethodInfo(this Expression<Action> lambdaExpression)
-        {
-            return GetMethodInfo((LambdaExpression)lambdaExpression);
-        }
-
-        /// <summary>
-        /// Returns MemberInfo specified in the lambda, optional parameter expression constraint.
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public static MemberInfo GetMemberInfo(LambdaExpression expression)
-        {
-            var paramExpr = expression.Parameters.Count == 1 ? expression.Parameters[0] : null;
-            return GetMemberInfo(paramExpr, expression.Body);
-        }
-
-        public static MemberInfo GetMemberCallInfo(LambdaExpression lambdaExpression)
-        {
-            MethodCallExpression methodCallExpression = lambdaExpression.Body as MethodCallExpression;
-            if (methodCallExpression != null)
-            {
-                Expression memberExpression = methodCallExpression;
-                while ( true )
-                {
-                    switch (memberExpression.NodeType)
-                    {
-                        case ExpressionType.MemberAccess:
-                            return ((MemberExpression)memberExpression).Member;
-                        case ExpressionType.Call:
-                            methodCallExpression = memberExpression as MethodCallExpression;
-                            memberExpression = (methodCallExpression.Object != null) ? methodCallExpression.Object : methodCallExpression.Arguments[0];
-                            break;
-                        default:
-                            return null;
-                    }
-                }
-            }
-            else
-                return GetMemberInfo(lambdaExpression);
-        }
-
-        /// <summary>
-        /// Returns MemberInfo specified in the lambda, optional parameter expression constraint.
-        /// </summary>
-        /// <param name="lambdaExpression"></param>
-        /// <returns></returns>
-        private static MemberInfo GetMemberInfo(Expression optionalParamExpr, Expression expression)
-        {
-            switch (expression.NodeType)
-            {
-                // the ReflectionUtility Get** methods return the value as a object. If the value is a struct, we get a cast,
-                // that we must unwrap
-                case ExpressionType.Convert:
-                case ExpressionType.ConvertChecked:
-                    return GetMemberInfo(optionalParamExpr, ((UnaryExpression)expression).Operand);
-                case ExpressionType.MemberAccess:
-                    var me = (MemberExpression)expression;
-                    if (optionalParamExpr == null || me.Expression == optionalParamExpr)
-                        return me.Member;
-                    else
-                        return null;
-                default:
-                    return null;
-            }
-        }
-
-        /// <summary>
-        /// Returns a PropertyInfo, given a lambda
-        /// For example: ReflectionUtility.GetPropertyInfo&lt;A>(a => a.Prop) would return PropertyInfo "A.Prop"
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="lambdaExpression"></param>
-        /// <returns></returns>
-        public static PropertyInfo GetPropertyInfo<T>(this Expression<Func<T, object>> lambdaExpression)
-        {
-            return (PropertyInfo)GetMemberInfo((LambdaExpression) lambdaExpression);
-        }
-
-        /// <summary>
-        /// Returns a PropertyInfo, given a lambda
-        /// </summary>
-        /// <param name="lambdaExpression"></param>
-        /// <returns></returns>
-        public static PropertyInfo GetPropertyInfo(this Expression<Func<object>> lambdaExpression)
-        {
-            return (PropertyInfo)GetMemberInfo((LambdaExpression) lambdaExpression);
-        }
-
-        /// <summary>
-        /// Returns a MemberInfo, given a lambda
-        /// For example: ReflectionUtility.GetMemberInfo&lt;A>(a => a.Prop) would return MemberInfo "A.Prop"
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="lambdaExpression"></param>
-        /// <returns></returns>
-        public static MemberInfo GetMemberInfo<T>(this Expression<Func<T, object>> lambdaExpression)
-        {
-            return GetMemberInfo((LambdaExpression) lambdaExpression);
-        }
-
-        /// <summary>
-        /// Returns a MemberInfo, given a lambda
-        /// </summary>
-        /// <param name="lambdaExpression"></param>
-        /// <returns></returns>
-        public static MemberInfo GetMemberInfo(this Expression<Func<object>> lambdaExpression)
-        {
-            return GetMemberInfo((LambdaExpression) lambdaExpression);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq.Expressions;
+using System.Reflection;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// What is extreme laziness? :)
+    /// This class allows to get PropertyInfo or MethodInfo given a lambda (which allows to refactor members)
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    static class ReflectionUtility
+    {
+        public static MethodInfo GetMethodInfo(LambdaExpression lambdaExpression)
+        {
+            var methodCallExpression = lambdaExpression.Body as MethodCallExpression;
+            if (methodCallExpression != null)
+                return methodCallExpression.Method;
+            throw new ArgumentException("Lambda expression is not correctly formated for MethodInfo extraction");
+        }
+
+        /// <summary>
+        /// Returns a method info, providing a lambda
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="lambdaExpression"></param>
+        /// <returns></returns>
+        public static MethodInfo GetMethodInfo<T>(this Expression<Action<T>> lambdaExpression)
+        {
+            return GetMethodInfo((LambdaExpression)lambdaExpression);
+        }
+
+        /// <summary>
+        /// Returns a method info, for example ReflectionUtility.GetMethodInfo(() => A.F()) would return "A.F()" MethodInfo
+        /// </summary>
+        /// <param name="lambdaExpression"></param>
+        /// <returns></returns>
+        public static MethodInfo GetMethodInfo(this Expression<Action> lambdaExpression)
+        {
+            return GetMethodInfo((LambdaExpression)lambdaExpression);
+        }
+
+        /// <summary>
+        /// Returns MemberInfo specified in the lambda, optional parameter expression constraint.
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public static MemberInfo GetMemberInfo(LambdaExpression expression)
+        {
+            var paramExpr = expression.Parameters.Count == 1 ? expression.Parameters[0] : null;
+            return GetMemberInfo(paramExpr, expression.Body);
+        }
+
+        public static MemberInfo GetMemberCallInfo(LambdaExpression lambdaExpression)
+        {
+            MethodCallExpression methodCallExpression = lambdaExpression.Body as MethodCallExpression;
+            if (methodCallExpression != null)
+            {
+                Expression memberExpression = methodCallExpression;
+                while ( true )
+                {
+                    switch (memberExpression.NodeType)
+                    {
+                        case ExpressionType.MemberAccess:
+                            return ((MemberExpression)memberExpression).Member;
+                        case ExpressionType.Call:
+                            methodCallExpression = memberExpression as MethodCallExpression;
+                            memberExpression = (methodCallExpression.Object != null) ? methodCallExpression.Object : methodCallExpression.Arguments[0];
+                            break;
+                        default:
+                            return null;
+                    }
+                }
+            }
+            else
+                return GetMemberInfo(lambdaExpression);
+        }
+
+        /// <summary>
+        /// Returns MemberInfo specified in the lambda, optional parameter expression constraint.
+        /// </summary>
+        /// <param name="lambdaExpression"></param>
+        /// <returns></returns>
+        private static MemberInfo GetMemberInfo(Expression optionalParamExpr, Expression expression)
+        {
+            switch (expression.NodeType)
+            {
+                // the ReflectionUtility Get** methods return the value as a object. If the value is a struct, we get a cast,
+                // that we must unwrap
+                case ExpressionType.Convert:
+                case ExpressionType.ConvertChecked:
+                    return GetMemberInfo(optionalParamExpr, ((UnaryExpression)expression).Operand);
+                case ExpressionType.MemberAccess:
+                    var me = (MemberExpression)expression;
+                    if (optionalParamExpr == null || me.Expression == optionalParamExpr)
+                        return me.Member;
+                    else
+                        return null;
+                default:
+                    return null;
+            }
+        }
+
+        /// <summary>
+        /// Returns a PropertyInfo, given a lambda
+        /// For example: ReflectionUtility.GetPropertyInfo&lt;A>(a => a.Prop) would return PropertyInfo "A.Prop"
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="lambdaExpression"></param>
+        /// <returns></returns>
+        public static PropertyInfo GetPropertyInfo<T>(this Expression<Func<T, object>> lambdaExpression)
+        {
+            return (PropertyInfo)GetMemberInfo((LambdaExpression) lambdaExpression);
+        }
+
+        /// <summary>
+        /// Returns a PropertyInfo, given a lambda
+        /// </summary>
+        /// <param name="lambdaExpression"></param>
+        /// <returns></returns>
+        public static PropertyInfo GetPropertyInfo(this Expression<Func<object>> lambdaExpression)
+        {
+            return (PropertyInfo)GetMemberInfo((LambdaExpression) lambdaExpression);
+        }
+
+        /// <summary>
+        /// Returns a MemberInfo, given a lambda
+        /// For example: ReflectionUtility.GetMemberInfo&lt;A>(a => a.Prop) would return MemberInfo "A.Prop"
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="lambdaExpression"></param>
+        /// <returns></returns>
+        public static MemberInfo GetMemberInfo<T>(this Expression<Func<T, object>> lambdaExpression)
+        {
+            return GetMemberInfo((LambdaExpression) lambdaExpression);
+        }
+
+        /// <summary>
+        /// Returns a MemberInfo, given a lambda
+        /// </summary>
+        /// <param name="lambdaExpression"></param>
+        /// <returns></returns>
+        public static MemberInfo GetMemberInfo(this Expression<Func<object>> lambdaExpression)
+        {
+            return GetMemberInfo((LambdaExpression) lambdaExpression);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/StringExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/StringExtensions.cs
@@ -1,101 +1,101 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Text;
-
-namespace DbLinq.Util
-{
-    internal static class StringExtensions
-    {
-        public static string Enquote(this string text, char startQuote, char endQuote)
-        {
-            return QuotesHelper.Enquote(text, startQuote, endQuote);
-        }
-
-        public static string Enquote(this string text, char quote)
-        {
-            return QuotesHelper.Enquote(text, quote);
-        }
-
-        /// <summary>
-        /// Returns true is the provided string is a valid .NET symbol
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public static bool IsIdentifier(this string name)
-        {
-            for (int index = 0; index < name.Length; index++)
-            {
-                var category = char.GetUnicodeCategory(name, index);
-                // this is not nice, but I found no other way to identity a valid identifier
-                switch (category)
-                {
-                case System.Globalization.UnicodeCategory.DecimalDigitNumber:
-                case System.Globalization.UnicodeCategory.LetterNumber:
-                case System.Globalization.UnicodeCategory.LowercaseLetter:
-                case System.Globalization.UnicodeCategory.UppercaseLetter:
-                case System.Globalization.UnicodeCategory.ConnectorPunctuation:
-                    break;
-                default:
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        public static bool ContainsCase(this string text, string find, bool ignoreCase)
-        {
-            if (text == null)
-                return false;
-            var comparison = ignoreCase ? StringComparison.InvariantCultureIgnoreCase : StringComparison.InvariantCulture;
-            var endIndex = text.IndexOf(find, 0, comparison);
-            return endIndex >= 0;
-        }
-
-        public static string ReplaceCase(this string text, string find, string replace, bool ignoreCase)
-        {
-            var result = new StringBuilder();
-            var comparison = ignoreCase ? StringComparison.InvariantCultureIgnoreCase : StringComparison.InvariantCulture;
-            for (int index = 0; ; )
-            {
-                var endIndex = text.IndexOf(find, index, comparison);
-                if (endIndex >= 0)
-                {
-                    result.Append(text.Substring(index, endIndex - index));
-                    result.Append(replace);
-                    index = endIndex + find.Length;
-                }
-                else
-                {
-                    result.Append(text.Substring(index));
-                    break;
-                }
-            }
-            return result.ToString();
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Text;
+
+namespace DbLinq.Util
+{
+    internal static class StringExtensions
+    {
+        public static string Enquote(this string text, char startQuote, char endQuote)
+        {
+            return QuotesHelper.Enquote(text, startQuote, endQuote);
+        }
+
+        public static string Enquote(this string text, char quote)
+        {
+            return QuotesHelper.Enquote(text, quote);
+        }
+
+        /// <summary>
+        /// Returns true is the provided string is a valid .NET symbol
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static bool IsIdentifier(this string name)
+        {
+            for (int index = 0; index < name.Length; index++)
+            {
+                var category = char.GetUnicodeCategory(name, index);
+                // this is not nice, but I found no other way to identity a valid identifier
+                switch (category)
+                {
+                case System.Globalization.UnicodeCategory.DecimalDigitNumber:
+                case System.Globalization.UnicodeCategory.LetterNumber:
+                case System.Globalization.UnicodeCategory.LowercaseLetter:
+                case System.Globalization.UnicodeCategory.UppercaseLetter:
+                case System.Globalization.UnicodeCategory.ConnectorPunctuation:
+                    break;
+                default:
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        public static bool ContainsCase(this string text, string find, bool ignoreCase)
+        {
+            if (text == null)
+                return false;
+            var comparison = ignoreCase ? StringComparison.InvariantCultureIgnoreCase : StringComparison.InvariantCulture;
+            var endIndex = text.IndexOf(find, 0, comparison);
+            return endIndex >= 0;
+        }
+
+        public static string ReplaceCase(this string text, string find, string replace, bool ignoreCase)
+        {
+            var result = new StringBuilder();
+            var comparison = ignoreCase ? StringComparison.InvariantCultureIgnoreCase : StringComparison.InvariantCulture;
+            for (int index = 0; ; )
+            {
+                var endIndex = text.IndexOf(find, index, comparison);
+                if (endIndex >= 0)
+                {
+                    result.Append(text.Substring(index, endIndex - index));
+                    result.Append(replace);
+                    index = endIndex + find.Length;
+                }
+                else
+                {
+                    result.Append(text.Substring(index));
+                    break;
+                }
+            }
+            return result.ToString();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/TextWriterExtension.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/TextWriterExtension.cs
@@ -1,259 +1,259 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq.Expressions;
-
-namespace DbLinq.Util
-{
-    internal static class TextWriterExtension
-    {
-        /// <summary>
-        /// Writes an Expression to the given textWriter
-        /// </summary>
-        /// <param name="textWriter"></param>
-        /// <param name="expression"></param>
-        public static void WriteExpression(this TextWriter textWriter, Expression expression)
-        {
-            try
-            {
-                var rawLines = new List<string>(Write(expression, string.Empty, 0));
-                rawLines.Insert(0, string.Empty);
-                var lines = rawLines.ToArray();
-                textWriter.WriteLine(string.Join(Environment.NewLine, lines));
-            }
-            // we just ignore NREs
-            catch (NullReferenceException)
-            {
-            }
-        }
-
-        /// <summary>
-        /// Expression visitor. Calls correct method, depending on expression real type
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="header"></param>
-        /// <param name="depth"></param>
-        /// <returns></returns>
-        private static IList<string> Write(Expression expression, string header, int depth)
-        {
-            if (expression == null)
-                return new[] { WriteLiteral("(null)", header, depth) };
-            if (expression is BinaryExpression)
-                return WriteEx((BinaryExpression)expression, header, depth);
-            if (expression is ConditionalExpression)
-                return WriteEx((ConditionalExpression)expression, header, depth);
-            if (expression is ConstantExpression)
-                return WriteEx((ConstantExpression)expression, header, depth);
-            if (expression is InvocationExpression)
-                return WriteEx((InvocationExpression)expression, header, depth);
-            if (expression is LambdaExpression)
-                return WriteEx((LambdaExpression)expression, header, depth);
-            if (expression is MemberExpression)
-                return WriteEx((MemberExpression)expression, header, depth);
-            if (expression is MethodCallExpression)
-                return WriteEx((MethodCallExpression)expression, header, depth);
-            if (expression is NewExpression)
-                return WriteEx((NewExpression)expression, header, depth);
-            if (expression is NewArrayExpression)
-                return WriteEx((NewArrayExpression)expression, header, depth);
-            if (expression is MemberInitExpression)
-                return WriteEx((MemberInitExpression)expression, header, depth);
-            if (expression is ListInitExpression)
-                return WriteEx((ListInitExpression)expression, header, depth);
-            if (expression is ParameterExpression)
-                return WriteEx((ParameterExpression)expression, header, depth);
-            if (expression is TypeBinaryExpression)
-                return WriteEx((TypeBinaryExpression)expression, header, depth);
-            if (expression is UnaryExpression)
-                return WriteEx((UnaryExpression)expression, header, depth);
-
-            return new[] { WriteHeader(expression, header, depth) };
-        }
-
-        #region typed Expression writer
-
-        private static IList<string> WriteEx(BinaryExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.Left, "Left ", depth));
-            lines.AddRange(Write(expression.Right, "Right", depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(ConditionalExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.Test, "If  ", depth));
-            lines.AddRange(Write(expression.IfTrue, "Then", depth));
-            lines.AddRange(Write(expression.IfFalse, "Else", depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(ConstantExpression expression, string header, int depth)
-        {
-            var lines = new List<string>
-                            {
-                                WriteHeader(expression, header, depth++),
-                                WriteLiteral(expression.Value, "Value", depth)
-                            };
-            return lines;
-        }
-
-        private static IList<string> WriteEx(InvocationExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.Expression, "Call", depth));
-            for (int i = 0; i < expression.Arguments.Count; i++)
-                lines.AddRange(Write(expression.Arguments[i], string.Format("#{0:0##}", i), depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(LambdaExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.Body, "Call", depth));
-            for (int i = 0; i < expression.Parameters.Count; i++)
-                lines.AddRange(Write(expression.Parameters[i], string.Format("#{0:0##}", i), depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(MemberExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.Expression, "Object", depth));
-            lines.Add(WriteLiteral(expression.Member.Name, "Member", depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(MethodCallExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.Object, "Object", depth));
-            lines.Add(WriteLiteral(expression.Method.Name, "Method", depth));
-            for (int i = 0; i < expression.Arguments.Count; i++)
-                lines.AddRange(Write(expression.Arguments[i], string.Format("#{0:0####}", i), depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(NewExpression expression, string header, int depth)
-        {
-            var lines = new List<string>
-                            {
-                                WriteHeader(expression, header, depth++),
-                                WriteLiteral(expression.Constructor.Name, "Ctor", depth)
-                            };
-            for (int i = 0; i < expression.Arguments.Count; i++)
-                lines.AddRange(Write(expression.Arguments[i], string.Format("#{0:0##}", i), depth));
-            if (expression.Members != null)
-            {
-                for (int i = 0; i < expression.Members.Count; i++)
-                    lines.Add(WriteLiteral(expression.Members[i].Name, string.Format("M{0:0##}", i), depth));
-            }
-            return lines;
-        }
-
-        private static IList<string> WriteEx(NewArrayExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            for (int i = 0; i < expression.Expressions.Count; i++)
-                lines.AddRange(Write(expression.Expressions[i], string.Format("#{0:0##}", i), depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(MemberInitExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.NewExpression, "New", depth));
-            for (int i = 0; i < expression.Bindings.Count; i++)
-                lines.Add(WriteLiteral(expression.Bindings[i].Member.Name, string.Format("B{0:0##}", i), depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(ListInitExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.NewExpression, "New", depth));
-            for (int i = 0; i < expression.Initializers.Count; i++)
-            {
-                lines.Add(WriteLiteral(expression.Initializers[i].AddMethod.Name, string.Format("Method{0:0##}", i), depth));
-                for (int j = 0; j < expression.Initializers[i].Arguments.Count; j++)
-                {
-                    lines.AddRange(Write(expression.Initializers[i].Arguments[j], string.Format("#{0:0##}", j), depth + 1));
-                }
-            }
-            return lines;
-        }
-
-        private static IList<string> WriteEx(ParameterExpression expression, string header, int depth)
-        {
-            var lines = new List<string>
-                            {
-                                WriteHeader(expression, header, depth++),
-                                WriteLiteral(expression.Name, "Parameter", depth)
-                            };
-            return lines;
-        }
-
-        private static IList<string> WriteEx(TypeBinaryExpression expression, string header, int depth)
-        {
-            var lines = new List<string> { WriteHeader(expression, header, depth++) };
-            lines.AddRange(Write(expression.Expression, "Expression", depth));
-            lines.Add(WriteLiteral(expression.TypeOperand.Name, "Type      ", depth));
-            return lines;
-        }
-
-        private static IList<string> WriteEx(UnaryExpression expression, string header, int depth)
-        {
-            var lines = new List<string>
-                            {
-                                WriteHeader(expression, header, depth++),
-                                WriteLiteral(expression.Method != null ? expression.Method.Name : null, "Method ", depth)
-                            };
-            lines.AddRange(Write(expression.Operand, "Operand", depth));
-            return lines;
-        }
-
-        private static string WriteHeader(Expression expression, string header, int depth)
-        {
-            return string.Format("{0}{1} {2} ({3})", GetPrefix(depth), header, expression.NodeType, expression.GetType().Name);
-        }
-
-        private static string WriteLiteral(object value, string header, int depth)
-        {
-            return string.Format("{0}{1}: {2}", GetPrefix(depth), header, value);
-        }
-
-        private static string GetPrefix(int depth)
-        {
-            return string.Empty.PadRight(depth * 2, '.');
-        }
-
-        #endregion
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq.Expressions;
+
+namespace DbLinq.Util
+{
+    internal static class TextWriterExtension
+    {
+        /// <summary>
+        /// Writes an Expression to the given textWriter
+        /// </summary>
+        /// <param name="textWriter"></param>
+        /// <param name="expression"></param>
+        public static void WriteExpression(this TextWriter textWriter, Expression expression)
+        {
+            try
+            {
+                var rawLines = new List<string>(Write(expression, string.Empty, 0));
+                rawLines.Insert(0, string.Empty);
+                var lines = rawLines.ToArray();
+                textWriter.WriteLine(string.Join(Environment.NewLine, lines));
+            }
+            // we just ignore NREs
+            catch (NullReferenceException)
+            {
+            }
+        }
+
+        /// <summary>
+        /// Expression visitor. Calls correct method, depending on expression real type
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="header"></param>
+        /// <param name="depth"></param>
+        /// <returns></returns>
+        private static IList<string> Write(Expression expression, string header, int depth)
+        {
+            if (expression == null)
+                return new[] { WriteLiteral("(null)", header, depth) };
+            if (expression is BinaryExpression)
+                return WriteEx((BinaryExpression)expression, header, depth);
+            if (expression is ConditionalExpression)
+                return WriteEx((ConditionalExpression)expression, header, depth);
+            if (expression is ConstantExpression)
+                return WriteEx((ConstantExpression)expression, header, depth);
+            if (expression is InvocationExpression)
+                return WriteEx((InvocationExpression)expression, header, depth);
+            if (expression is LambdaExpression)
+                return WriteEx((LambdaExpression)expression, header, depth);
+            if (expression is MemberExpression)
+                return WriteEx((MemberExpression)expression, header, depth);
+            if (expression is MethodCallExpression)
+                return WriteEx((MethodCallExpression)expression, header, depth);
+            if (expression is NewExpression)
+                return WriteEx((NewExpression)expression, header, depth);
+            if (expression is NewArrayExpression)
+                return WriteEx((NewArrayExpression)expression, header, depth);
+            if (expression is MemberInitExpression)
+                return WriteEx((MemberInitExpression)expression, header, depth);
+            if (expression is ListInitExpression)
+                return WriteEx((ListInitExpression)expression, header, depth);
+            if (expression is ParameterExpression)
+                return WriteEx((ParameterExpression)expression, header, depth);
+            if (expression is TypeBinaryExpression)
+                return WriteEx((TypeBinaryExpression)expression, header, depth);
+            if (expression is UnaryExpression)
+                return WriteEx((UnaryExpression)expression, header, depth);
+
+            return new[] { WriteHeader(expression, header, depth) };
+        }
+
+        #region typed Expression writer
+
+        private static IList<string> WriteEx(BinaryExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.Left, "Left ", depth));
+            lines.AddRange(Write(expression.Right, "Right", depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(ConditionalExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.Test, "If  ", depth));
+            lines.AddRange(Write(expression.IfTrue, "Then", depth));
+            lines.AddRange(Write(expression.IfFalse, "Else", depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(ConstantExpression expression, string header, int depth)
+        {
+            var lines = new List<string>
+                            {
+                                WriteHeader(expression, header, depth++),
+                                WriteLiteral(expression.Value, "Value", depth)
+                            };
+            return lines;
+        }
+
+        private static IList<string> WriteEx(InvocationExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.Expression, "Call", depth));
+            for (int i = 0; i < expression.Arguments.Count; i++)
+                lines.AddRange(Write(expression.Arguments[i], string.Format("#{0:0##}", i), depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(LambdaExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.Body, "Call", depth));
+            for (int i = 0; i < expression.Parameters.Count; i++)
+                lines.AddRange(Write(expression.Parameters[i], string.Format("#{0:0##}", i), depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(MemberExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.Expression, "Object", depth));
+            lines.Add(WriteLiteral(expression.Member.Name, "Member", depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(MethodCallExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.Object, "Object", depth));
+            lines.Add(WriteLiteral(expression.Method.Name, "Method", depth));
+            for (int i = 0; i < expression.Arguments.Count; i++)
+                lines.AddRange(Write(expression.Arguments[i], string.Format("#{0:0####}", i), depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(NewExpression expression, string header, int depth)
+        {
+            var lines = new List<string>
+                            {
+                                WriteHeader(expression, header, depth++),
+                                WriteLiteral(expression.Constructor.Name, "Ctor", depth)
+                            };
+            for (int i = 0; i < expression.Arguments.Count; i++)
+                lines.AddRange(Write(expression.Arguments[i], string.Format("#{0:0##}", i), depth));
+            if (expression.Members != null)
+            {
+                for (int i = 0; i < expression.Members.Count; i++)
+                    lines.Add(WriteLiteral(expression.Members[i].Name, string.Format("M{0:0##}", i), depth));
+            }
+            return lines;
+        }
+
+        private static IList<string> WriteEx(NewArrayExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            for (int i = 0; i < expression.Expressions.Count; i++)
+                lines.AddRange(Write(expression.Expressions[i], string.Format("#{0:0##}", i), depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(MemberInitExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.NewExpression, "New", depth));
+            for (int i = 0; i < expression.Bindings.Count; i++)
+                lines.Add(WriteLiteral(expression.Bindings[i].Member.Name, string.Format("B{0:0##}", i), depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(ListInitExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.NewExpression, "New", depth));
+            for (int i = 0; i < expression.Initializers.Count; i++)
+            {
+                lines.Add(WriteLiteral(expression.Initializers[i].AddMethod.Name, string.Format("Method{0:0##}", i), depth));
+                for (int j = 0; j < expression.Initializers[i].Arguments.Count; j++)
+                {
+                    lines.AddRange(Write(expression.Initializers[i].Arguments[j], string.Format("#{0:0##}", j), depth + 1));
+                }
+            }
+            return lines;
+        }
+
+        private static IList<string> WriteEx(ParameterExpression expression, string header, int depth)
+        {
+            var lines = new List<string>
+                            {
+                                WriteHeader(expression, header, depth++),
+                                WriteLiteral(expression.Name, "Parameter", depth)
+                            };
+            return lines;
+        }
+
+        private static IList<string> WriteEx(TypeBinaryExpression expression, string header, int depth)
+        {
+            var lines = new List<string> { WriteHeader(expression, header, depth++) };
+            lines.AddRange(Write(expression.Expression, "Expression", depth));
+            lines.Add(WriteLiteral(expression.TypeOperand.Name, "Type      ", depth));
+            return lines;
+        }
+
+        private static IList<string> WriteEx(UnaryExpression expression, string header, int depth)
+        {
+            var lines = new List<string>
+                            {
+                                WriteHeader(expression, header, depth++),
+                                WriteLiteral(expression.Method != null ? expression.Method.Name : null, "Method ", depth)
+                            };
+            lines.AddRange(Write(expression.Operand, "Operand", depth));
+            return lines;
+        }
+
+        private static string WriteHeader(Expression expression, string header, int depth)
+        {
+            return string.Format("{0}{1} {2} ({3})", GetPrefix(depth), header, expression.NodeType, expression.GetType().Name);
+        }
+
+        private static string WriteLiteral(object value, string header, int depth)
+        {
+            return string.Format("{0}{1}: {2}", GetPrefix(depth), header, value);
+        }
+
+        private static string GetPrefix(int depth)
+        {
+            return string.Empty.PadRight(depth * 2, '.');
+        }
+
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/ThreadSafeDictionary.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/ThreadSafeDictionary.cs
@@ -1,332 +1,332 @@
-﻿using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Threading;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Thread Safe Dictionary Implementation (Brian Rudolph's code)
-    /// </summary>
-    /// <typeparam name="TKey">Type of Keys</typeparam>
-    /// <typeparam name="TValue">Type of Values</typeparam>
-#if !MONO_STRICT
-    public
-#endif
-    class ThreadSafeDictionary<TKey, TValue> : IThreadSafeDictionary<TKey, TValue>
-    {
-        //This is the internal dictionary that we are wrapping
-        IDictionary<TKey, TValue> dict;
-
-        public ThreadSafeDictionary()
-        {
-            this.dict = new Dictionary<TKey, TValue>();
-        }
-
-        public ThreadSafeDictionary(int capacity)
-        {
-            dict = new Dictionary<TKey, TValue>(capacity);
-        }
-
-        public ThreadSafeDictionary(IEqualityComparer<TKey> comparer)
-        {
-            dict = new Dictionary<TKey, TValue>(comparer);
-        }
-
-        [NonSerialized]
-        ReaderWriterLockSlim dictionaryLock = Locks.GetLockInstance(LockRecursionPolicy.NoRecursion); //setup the lock;
-
-        /// <summary>
-        /// This is a blind remove. Prevents the need to check for existence first.
-        /// </summary>
-        /// <param name="key">Key to remove</param>
-        public void RemoveSafe(TKey key)
-        {
-            using (new ReadLock(this.dictionaryLock))
-            {
-                if (this.dict.ContainsKey(key))
-                {
-                    using (new WriteLock(this.dictionaryLock))
-                    {
-                        this.dict.Remove(key);
-                    }
-                }
-            }
-        }
-        
-        /// <summary>
-        /// Merge does a blind remove, and then add.  Basically a blind Upsert.  
-        /// </summary>
-        /// <param name="key">Key to lookup</param>
-        /// <param name="newValue">New Value</param>
-        public void MergeSafe(TKey key, TValue newValue)
-        {
-            using (new WriteLock(this.dictionaryLock)) // take a writelock immediately since we will always be writing
-            {
-                if (this.dict.ContainsKey(key))
-                {
-                    this.dict.Remove(key);
-                }
-
-                this.dict.Add(key, newValue);
-            }
-        }
-        
-        public virtual bool Remove(TKey key)
-        {
-            using (new WriteLock(this.dictionaryLock))
-            {
-                return this.dict.Remove(key);
-            }
-        }
-
-        public virtual bool ContainsKey(TKey key)
-        {
-            using (new ReadOnlyLock(this.dictionaryLock))
-            {
-                return this.dict.ContainsKey(key);
-            }
-        }
-        
-        public virtual bool TryGetValue(TKey key, out TValue value)
-        {
-            using (new ReadOnlyLock(this.dictionaryLock))
-            {
-                return this.dict.TryGetValue(key, out value);
-            }
-        }
-
-        public virtual TValue this[TKey key]
-        {
-            get
-            {
-                using (new ReadOnlyLock(this.dictionaryLock))
-                {
-                    return this.dict[key];
-                }
-            }
-            set
-            {
-                using (new WriteLock(this.dictionaryLock))
-                {
-                    this.dict[key] = value;
-                }
-            }
-        }
-        
-        public virtual ICollection<TKey> Keys
-        {
-            get
-            {
-                using (new ReadOnlyLock(this.dictionaryLock))
-                {
-                    return new List<TKey>(this.dict.Keys);
-                }
-            }
-        }
-        
-        public virtual ICollection<TValue> Values
-        {
-            get
-            {
-                using (new ReadOnlyLock(this.dictionaryLock))
-                {
-                    return new List<TValue>(this.dict.Values);
-                }
-            }
-        }
-        
-        public virtual void Clear()
-        {
-            using (new WriteLock(this.dictionaryLock))
-            {
-                this.dict.Clear();
-            }
-        }
-        
-        public virtual int Count
-        {
-            get
-            {
-                using (new ReadOnlyLock(this.dictionaryLock))
-                {
-                    return this.dict.Count;
-                }
-            }
-        }
-        
-        public virtual bool Contains(KeyValuePair<TKey, TValue> item)
-        {
-            using (new ReadOnlyLock(this.dictionaryLock))
-            {
-                return this.dict.Contains(item);
-            }
-        }
-        
-        public virtual void Add(KeyValuePair<TKey, TValue> item)
-        {
-            using (new WriteLock(this.dictionaryLock))
-            {
-                this.dict.Add(item);
-            }
-        }
-        
-        public virtual void Add(TKey key, TValue value)
-        {
-            using (new WriteLock(this.dictionaryLock))
-            {
-                this.dict.Add(key, value);
-            }
-        }
-        
-        public virtual bool Remove(KeyValuePair<TKey, TValue> item)
-        {
-            using (new WriteLock(this.dictionaryLock))
-            {
-                return this.dict.Remove(item);
-            }
-        }
-        
-        public virtual void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
-        {
-            using (new ReadOnlyLock(this.dictionaryLock))
-            {
-                this.dict.CopyTo(array, arrayIndex);
-            }
-        }
-        
-        public virtual bool IsReadOnly
-        {
-            get
-            {
-                using (new ReadOnlyLock(this.dictionaryLock))
-                {
-                    return this.dict.IsReadOnly;
-                }
-            }
-        }
-        
-        public virtual IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
-        {
-            throw new NotSupportedException("Cannot enumerate a threadsafe dictionary.  Instead, enumerate the keys or values collection");
-        }
-        
-        IEnumerator IEnumerable.GetEnumerator()
-        {
-            throw new NotSupportedException("Cannot enumerate a threadsafe dictionary.  Instead, enumerate the keys or values collection");
-        }
-    }
-
-    public static class Locks
-    {
-        public static void GetReadLock(ReaderWriterLockSlim locks)
-        {
-            bool lockAcquired = false;
-            while (!lockAcquired)
-                lockAcquired = locks.TryEnterUpgradeableReadLock(1);
-        }
-        
-        public static void GetReadOnlyLock(ReaderWriterLockSlim locks)
-        {
-            bool lockAcquired = false;
-            while (!lockAcquired)
-                lockAcquired = locks.TryEnterReadLock(1);
-        }
-        
-        public static void GetWriteLock(ReaderWriterLockSlim locks)
-        {
-            bool lockAcquired = false;
-            while (!lockAcquired)
-                lockAcquired = locks.TryEnterWriteLock(1);
-        }
-        
-        public static void ReleaseReadOnlyLock(ReaderWriterLockSlim locks)
-        {
-            if (locks.IsReadLockHeld)
-                locks.ExitReadLock();
-        }
-        
-        public static void ReleaseReadLock(ReaderWriterLockSlim locks)
-        {
-            if (locks.IsUpgradeableReadLockHeld)
-                locks.ExitUpgradeableReadLock();
-        }
-        
-        public static void ReleaseWriteLock(ReaderWriterLockSlim locks)
-        {
-            if (locks.IsWriteLockHeld)
-                locks.ExitWriteLock();
-        }
-        
-        public static void ReleaseLock(ReaderWriterLockSlim locks)
-        {
-            ReleaseWriteLock(locks);
-            ReleaseReadLock(locks);
-            ReleaseReadOnlyLock(locks);
-        }
-        
-        public static ReaderWriterLockSlim GetLockInstance()
-        {
-            return GetLockInstance(LockRecursionPolicy.SupportsRecursion);
-        }
-        
-        public static ReaderWriterLockSlim GetLockInstance(LockRecursionPolicy recursionPolicy)
-        {
-            return new ReaderWriterLockSlim(recursionPolicy);
-        }
-    }
-    
-    public abstract class BaseLock : IDisposable
-    {
-        protected ReaderWriterLockSlim _Locks;
-        
-        public BaseLock(ReaderWriterLockSlim locks)
-        {
-            _Locks = locks;
-        }
-        
-        public abstract void Dispose();
-    }
-    
-    public class ReadLock : BaseLock
-    {
-        public ReadLock(ReaderWriterLockSlim locks)
-            : base(locks)
-        {
-            Locks.GetReadLock(this._Locks);
-        }
-        
-        public override void Dispose()
-        {
-            Locks.ReleaseReadLock(this._Locks);
-        }
-    }
-    
-    public class ReadOnlyLock : BaseLock
-    {
-        public ReadOnlyLock(ReaderWriterLockSlim locks)
-            : base(locks)
-        {
-            Locks.GetReadOnlyLock(this._Locks);
-        }
-        
-        public override void Dispose()
-        {
-            Locks.ReleaseReadOnlyLock(this._Locks);
-        }
-    }
-    
-    public class WriteLock : BaseLock
-    {
-        public WriteLock(ReaderWriterLockSlim locks)
-            : base(locks)
-        {
-            Locks.GetWriteLock(this._Locks);
-        }
-        
-        public override void Dispose()
-        {
-            Locks.ReleaseWriteLock(this._Locks);
-        }
-    }
-}
+﻿using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Threading;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Thread Safe Dictionary Implementation (Brian Rudolph's code)
+    /// </summary>
+    /// <typeparam name="TKey">Type of Keys</typeparam>
+    /// <typeparam name="TValue">Type of Values</typeparam>
+#if !MONO_STRICT
+    public
+#endif
+    class ThreadSafeDictionary<TKey, TValue> : IThreadSafeDictionary<TKey, TValue>
+    {
+        //This is the internal dictionary that we are wrapping
+        IDictionary<TKey, TValue> dict;
+
+        public ThreadSafeDictionary()
+        {
+            this.dict = new Dictionary<TKey, TValue>();
+        }
+
+        public ThreadSafeDictionary(int capacity)
+        {
+            dict = new Dictionary<TKey, TValue>(capacity);
+        }
+
+        public ThreadSafeDictionary(IEqualityComparer<TKey> comparer)
+        {
+            dict = new Dictionary<TKey, TValue>(comparer);
+        }
+
+        [NonSerialized]
+        ReaderWriterLockSlim dictionaryLock = Locks.GetLockInstance(LockRecursionPolicy.NoRecursion); //setup the lock;
+
+        /// <summary>
+        /// This is a blind remove. Prevents the need to check for existence first.
+        /// </summary>
+        /// <param name="key">Key to remove</param>
+        public void RemoveSafe(TKey key)
+        {
+            using (new ReadLock(this.dictionaryLock))
+            {
+                if (this.dict.ContainsKey(key))
+                {
+                    using (new WriteLock(this.dictionaryLock))
+                    {
+                        this.dict.Remove(key);
+                    }
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Merge does a blind remove, and then add.  Basically a blind Upsert.  
+        /// </summary>
+        /// <param name="key">Key to lookup</param>
+        /// <param name="newValue">New Value</param>
+        public void MergeSafe(TKey key, TValue newValue)
+        {
+            using (new WriteLock(this.dictionaryLock)) // take a writelock immediately since we will always be writing
+            {
+                if (this.dict.ContainsKey(key))
+                {
+                    this.dict.Remove(key);
+                }
+
+                this.dict.Add(key, newValue);
+            }
+        }
+        
+        public virtual bool Remove(TKey key)
+        {
+            using (new WriteLock(this.dictionaryLock))
+            {
+                return this.dict.Remove(key);
+            }
+        }
+
+        public virtual bool ContainsKey(TKey key)
+        {
+            using (new ReadOnlyLock(this.dictionaryLock))
+            {
+                return this.dict.ContainsKey(key);
+            }
+        }
+        
+        public virtual bool TryGetValue(TKey key, out TValue value)
+        {
+            using (new ReadOnlyLock(this.dictionaryLock))
+            {
+                return this.dict.TryGetValue(key, out value);
+            }
+        }
+
+        public virtual TValue this[TKey key]
+        {
+            get
+            {
+                using (new ReadOnlyLock(this.dictionaryLock))
+                {
+                    return this.dict[key];
+                }
+            }
+            set
+            {
+                using (new WriteLock(this.dictionaryLock))
+                {
+                    this.dict[key] = value;
+                }
+            }
+        }
+        
+        public virtual ICollection<TKey> Keys
+        {
+            get
+            {
+                using (new ReadOnlyLock(this.dictionaryLock))
+                {
+                    return new List<TKey>(this.dict.Keys);
+                }
+            }
+        }
+        
+        public virtual ICollection<TValue> Values
+        {
+            get
+            {
+                using (new ReadOnlyLock(this.dictionaryLock))
+                {
+                    return new List<TValue>(this.dict.Values);
+                }
+            }
+        }
+        
+        public virtual void Clear()
+        {
+            using (new WriteLock(this.dictionaryLock))
+            {
+                this.dict.Clear();
+            }
+        }
+        
+        public virtual int Count
+        {
+            get
+            {
+                using (new ReadOnlyLock(this.dictionaryLock))
+                {
+                    return this.dict.Count;
+                }
+            }
+        }
+        
+        public virtual bool Contains(KeyValuePair<TKey, TValue> item)
+        {
+            using (new ReadOnlyLock(this.dictionaryLock))
+            {
+                return this.dict.Contains(item);
+            }
+        }
+        
+        public virtual void Add(KeyValuePair<TKey, TValue> item)
+        {
+            using (new WriteLock(this.dictionaryLock))
+            {
+                this.dict.Add(item);
+            }
+        }
+        
+        public virtual void Add(TKey key, TValue value)
+        {
+            using (new WriteLock(this.dictionaryLock))
+            {
+                this.dict.Add(key, value);
+            }
+        }
+        
+        public virtual bool Remove(KeyValuePair<TKey, TValue> item)
+        {
+            using (new WriteLock(this.dictionaryLock))
+            {
+                return this.dict.Remove(item);
+            }
+        }
+        
+        public virtual void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
+        {
+            using (new ReadOnlyLock(this.dictionaryLock))
+            {
+                this.dict.CopyTo(array, arrayIndex);
+            }
+        }
+        
+        public virtual bool IsReadOnly
+        {
+            get
+            {
+                using (new ReadOnlyLock(this.dictionaryLock))
+                {
+                    return this.dict.IsReadOnly;
+                }
+            }
+        }
+        
+        public virtual IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
+        {
+            throw new NotSupportedException("Cannot enumerate a threadsafe dictionary.  Instead, enumerate the keys or values collection");
+        }
+        
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            throw new NotSupportedException("Cannot enumerate a threadsafe dictionary.  Instead, enumerate the keys or values collection");
+        }
+    }
+
+    public static class Locks
+    {
+        public static void GetReadLock(ReaderWriterLockSlim locks)
+        {
+            bool lockAcquired = false;
+            while (!lockAcquired)
+                lockAcquired = locks.TryEnterUpgradeableReadLock(1);
+        }
+        
+        public static void GetReadOnlyLock(ReaderWriterLockSlim locks)
+        {
+            bool lockAcquired = false;
+            while (!lockAcquired)
+                lockAcquired = locks.TryEnterReadLock(1);
+        }
+        
+        public static void GetWriteLock(ReaderWriterLockSlim locks)
+        {
+            bool lockAcquired = false;
+            while (!lockAcquired)
+                lockAcquired = locks.TryEnterWriteLock(1);
+        }
+        
+        public static void ReleaseReadOnlyLock(ReaderWriterLockSlim locks)
+        {
+            if (locks.IsReadLockHeld)
+                locks.ExitReadLock();
+        }
+        
+        public static void ReleaseReadLock(ReaderWriterLockSlim locks)
+        {
+            if (locks.IsUpgradeableReadLockHeld)
+                locks.ExitUpgradeableReadLock();
+        }
+        
+        public static void ReleaseWriteLock(ReaderWriterLockSlim locks)
+        {
+            if (locks.IsWriteLockHeld)
+                locks.ExitWriteLock();
+        }
+        
+        public static void ReleaseLock(ReaderWriterLockSlim locks)
+        {
+            ReleaseWriteLock(locks);
+            ReleaseReadLock(locks);
+            ReleaseReadOnlyLock(locks);
+        }
+        
+        public static ReaderWriterLockSlim GetLockInstance()
+        {
+            return GetLockInstance(LockRecursionPolicy.SupportsRecursion);
+        }
+        
+        public static ReaderWriterLockSlim GetLockInstance(LockRecursionPolicy recursionPolicy)
+        {
+            return new ReaderWriterLockSlim(recursionPolicy);
+        }
+    }
+    
+    public abstract class BaseLock : IDisposable
+    {
+        protected ReaderWriterLockSlim _Locks;
+        
+        public BaseLock(ReaderWriterLockSlim locks)
+        {
+            _Locks = locks;
+        }
+        
+        public abstract void Dispose();
+    }
+    
+    public class ReadLock : BaseLock
+    {
+        public ReadLock(ReaderWriterLockSlim locks)
+            : base(locks)
+        {
+            Locks.GetReadLock(this._Locks);
+        }
+        
+        public override void Dispose()
+        {
+            Locks.ReleaseReadLock(this._Locks);
+        }
+    }
+    
+    public class ReadOnlyLock : BaseLock
+    {
+        public ReadOnlyLock(ReaderWriterLockSlim locks)
+            : base(locks)
+        {
+            Locks.GetReadOnlyLock(this._Locks);
+        }
+        
+        public override void Dispose()
+        {
+            Locks.ReleaseReadOnlyLock(this._Locks);
+        }
+    }
+    
+    public class WriteLock : BaseLock
+    {
+        public WriteLock(ReaderWriterLockSlim locks)
+            : base(locks)
+        {
+            Locks.GetWriteLock(this._Locks);
+        }
+        
+        public override void Dispose()
+        {
+            Locks.ReleaseWriteLock(this._Locks);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/TypeConvert.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/TypeConvert.cs
@@ -1,188 +1,188 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Reflection;
-
-namespace DbLinq.Util
-{
-    /// <summary>
-    /// Types conversion.
-    /// A "smart" extension to System.Convert (at least that's what we hope)
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    static class TypeConvert
-    {
-        public static object ToNumber(object o, Type numberType)
-        {
-            if (o.GetType() == numberType)
-                return o;
-            string methodName = string.Format("To{0}", numberType.Name);
-            MethodInfo convertMethod = typeof(Convert).GetMethod(methodName, new[] { o.GetType() });
-            if (convertMethod != null)
-                return convertMethod.Invoke(null, new[] { o });
-            throw new InvalidCastException(string.Format("Can't convert type {0} in Convert.{1}()", o.GetType().Name, methodName));
-        }
-
-        public static U ToNumber<U>(object o)
-        {
-            return (U)ToNumber(o, typeof(U));
-        }
-
-        /// <summary>
-        /// Returns the default value for a specified type.
-        /// Reflection equivalent of default(T)
-        /// </summary>
-        /// <param name="t"></param>
-        /// <returns></returns>
-        public static object GetDefault(Type t)
-        {
-            if (!t.IsValueType)
-                return null;
-            return Activator.CreateInstance(t);
-        }
-
-        /// <summary>
-        /// Converts a value to an enum
-        /// (work with literals string values and numbers)
-        /// </summary>
-        /// <param name="o">The literal to convert</param>
-        /// <param name="enumType">The target enum type</param>
-        /// <returns></returns>
-        public static int ToEnum(object o, Type enumType)
-        {
-            var e = (int)Enum.Parse(enumType, o.ToString());
-            return e;
-        }
-
-        public static E ToEnum<E>(object o)
-        {
-            return (E)(object)ToEnum(o, typeof(E));
-        }
-
-        public static bool ToBoolean(object o)
-        {
-            if (o is bool)
-                return (bool)o;
-            // if it is a string, we may have "T"/"F" or "True"/"False"
-            if (o is string)
-            {
-                // regular literals
-                var lb = (string)o;
-                bool ob;
-                if (bool.TryParse(lb, out ob))
-                    return ob;
-                // alternative literals
-                if (lb == "T" || lb == "F")
-                    return lb == "T";
-                if (lb == "Y" || lb == "N")
-                    return lb == "Y";
-            }
-            return ToNumber<int>(o) != 0;
-        }
-
-        public static string ToString(object o)
-        {
-            if (o == null)
-                return null;
-            return o.ToString();
-        }
-
-        public static char ToChar(object c)
-        {
-            if (c is char)
-                return (char)c;
-            if (c is string)
-            {
-                var sc = (string)c;
-                if (sc.Length == 1)
-                    return sc[0];
-            }
-            if (c == null)
-                return '\0';
-            throw new InvalidCastException(string.Format("Can't convert type {0} in GetAsChar()", c.GetType().Name));
-        }
-
-        public static Guid ToGuid(object o)
-        {
-            if (o is Guid)
-                return (Guid)o;
-            return new Guid(ToString(o));
-        }
-
-        public static object To(object o, Type targetType)
-        {
-            if (targetType.IsNullable())
-            {
-                if (o == null)
-                    return null;
-                return Activator.CreateInstance(targetType, To(o, targetType.GetNullableType()));
-            }
-            if (targetType == typeof(string))
-                return ToString(o);
-            if (targetType == typeof(bool))
-                return ToBoolean(o);
-            if (targetType == typeof(char))
-                return ToChar(o);
-            if (targetType == typeof(byte))
-                return ToNumber<byte>(o);
-            if (targetType == typeof(sbyte))
-                return ToNumber<sbyte>(o);
-            if (targetType == typeof(short))
-                return ToNumber<short>(o);
-            if (targetType == typeof(ushort))
-                return ToNumber<ushort>(o);
-            if (targetType == typeof(int))
-                return ToNumber<int>(o);
-            if (targetType == typeof(uint))
-                return ToNumber<uint>(o);
-            if (targetType == typeof(long))
-                return ToNumber<long>(o);
-            if (targetType == typeof(ulong))
-                return ToNumber<ulong>(o);
-            if (targetType == typeof(float))
-                return ToNumber<float>(o);
-            if (targetType == typeof(double))
-                return ToNumber<double>(o);
-            if (targetType == typeof(decimal))
-                return ToNumber<decimal>(o);
-            if (targetType == typeof(DateTime))
-                return (DateTime)o;
-            if (targetType == typeof(Guid))
-                return ToGuid(o);
-            if (targetType.IsEnum)
-                return ToEnum(o, targetType);
-            throw new ArgumentException(string.Format("L0117: Unhandled type {0}", targetType));
-        }
-
-        public static T To<T>(object o)
-        {
-            return (T)To(o, typeof(T));
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Reflection;
+
+namespace DbLinq.Util
+{
+    /// <summary>
+    /// Types conversion.
+    /// A "smart" extension to System.Convert (at least that's what we hope)
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    static class TypeConvert
+    {
+        public static object ToNumber(object o, Type numberType)
+        {
+            if (o.GetType() == numberType)
+                return o;
+            string methodName = string.Format("To{0}", numberType.Name);
+            MethodInfo convertMethod = typeof(Convert).GetMethod(methodName, new[] { o.GetType() });
+            if (convertMethod != null)
+                return convertMethod.Invoke(null, new[] { o });
+            throw new InvalidCastException(string.Format("Can't convert type {0} in Convert.{1}()", o.GetType().Name, methodName));
+        }
+
+        public static U ToNumber<U>(object o)
+        {
+            return (U)ToNumber(o, typeof(U));
+        }
+
+        /// <summary>
+        /// Returns the default value for a specified type.
+        /// Reflection equivalent of default(T)
+        /// </summary>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        public static object GetDefault(Type t)
+        {
+            if (!t.IsValueType)
+                return null;
+            return Activator.CreateInstance(t);
+        }
+
+        /// <summary>
+        /// Converts a value to an enum
+        /// (work with literals string values and numbers)
+        /// </summary>
+        /// <param name="o">The literal to convert</param>
+        /// <param name="enumType">The target enum type</param>
+        /// <returns></returns>
+        public static int ToEnum(object o, Type enumType)
+        {
+            var e = (int)Enum.Parse(enumType, o.ToString());
+            return e;
+        }
+
+        public static E ToEnum<E>(object o)
+        {
+            return (E)(object)ToEnum(o, typeof(E));
+        }
+
+        public static bool ToBoolean(object o)
+        {
+            if (o is bool)
+                return (bool)o;
+            // if it is a string, we may have "T"/"F" or "True"/"False"
+            if (o is string)
+            {
+                // regular literals
+                var lb = (string)o;
+                bool ob;
+                if (bool.TryParse(lb, out ob))
+                    return ob;
+                // alternative literals
+                if (lb == "T" || lb == "F")
+                    return lb == "T";
+                if (lb == "Y" || lb == "N")
+                    return lb == "Y";
+            }
+            return ToNumber<int>(o) != 0;
+        }
+
+        public static string ToString(object o)
+        {
+            if (o == null)
+                return null;
+            return o.ToString();
+        }
+
+        public static char ToChar(object c)
+        {
+            if (c is char)
+                return (char)c;
+            if (c is string)
+            {
+                var sc = (string)c;
+                if (sc.Length == 1)
+                    return sc[0];
+            }
+            if (c == null)
+                return '\0';
+            throw new InvalidCastException(string.Format("Can't convert type {0} in GetAsChar()", c.GetType().Name));
+        }
+
+        public static Guid ToGuid(object o)
+        {
+            if (o is Guid)
+                return (Guid)o;
+            return new Guid(ToString(o));
+        }
+
+        public static object To(object o, Type targetType)
+        {
+            if (targetType.IsNullable())
+            {
+                if (o == null)
+                    return null;
+                return Activator.CreateInstance(targetType, To(o, targetType.GetNullableType()));
+            }
+            if (targetType == typeof(string))
+                return ToString(o);
+            if (targetType == typeof(bool))
+                return ToBoolean(o);
+            if (targetType == typeof(char))
+                return ToChar(o);
+            if (targetType == typeof(byte))
+                return ToNumber<byte>(o);
+            if (targetType == typeof(sbyte))
+                return ToNumber<sbyte>(o);
+            if (targetType == typeof(short))
+                return ToNumber<short>(o);
+            if (targetType == typeof(ushort))
+                return ToNumber<ushort>(o);
+            if (targetType == typeof(int))
+                return ToNumber<int>(o);
+            if (targetType == typeof(uint))
+                return ToNumber<uint>(o);
+            if (targetType == typeof(long))
+                return ToNumber<long>(o);
+            if (targetType == typeof(ulong))
+                return ToNumber<ulong>(o);
+            if (targetType == typeof(float))
+                return ToNumber<float>(o);
+            if (targetType == typeof(double))
+                return ToNumber<double>(o);
+            if (targetType == typeof(decimal))
+                return ToNumber<decimal>(o);
+            if (targetType == typeof(DateTime))
+                return (DateTime)o;
+            if (targetType == typeof(Guid))
+                return ToGuid(o);
+            if (targetType.IsEnum)
+                return ToEnum(o, targetType);
+            throw new ArgumentException(string.Format("L0117: Unhandled type {0}", targetType));
+        }
+
+        public static T To<T>(object o)
+        {
+            return (T)To(o, typeof(T));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/TypeExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/TypeExtensions.cs
@@ -1,141 +1,141 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Linq;
-using System.Data.Linq.Mapping;
-using System.Reflection;
-
-namespace DbLinq.Util
-{
-    internal static class TypeExtensions
-    {
-        /// <summary>
-        /// Determines if a given type can have a null value
-        /// </summary>
-        /// <param name="t"></param>
-        /// <returns></returns>
-        public static bool CanBeNull(this Type t)
-        {
-            return IsNullable(t) || !t.IsValueType;
-        }
-
-        /// <summary>
-        /// Returns a unique MemberInfo
-        /// </summary>
-        /// <param name="t">The declaring type</param>
-        /// <param name="name">The member name</param>
-        /// <returns>A MemberInfo or null</returns>
-        public static MemberInfo GetSingleMember(this Type t, string name)
-        {
-            return GetSingleMember(t, name, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);
-        }
-
-        /// <summary>
-        /// Returns a unique MemberInfo based on column name
-        /// </summary>
-        /// <param name="t">The declaring type</param>
-        /// <param name="name">The column name for the member</param>
-        /// <returns>A MemberInfo or null</returns>
-        public static MemberInfo GetTableColumnMember(this Type t, string name)
-        {
-            return GetTableColumnMember(t, name, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
-        }
-
-        /// <summary>
-        /// Returns a unique MemberInfo based on column name
-        /// </summary>
-        /// <param name="t">The declaring type</param>
-        /// <param name="name">The column name for the member</param>
-        /// <param name="bindingFlags">Binding flags</param>
-        /// <returns>A MemberInfo or null</returns>
-        public static MemberInfo GetTableColumnMember(this Type t, string name, BindingFlags bindingFlags)
-        {
-            return (from member in t.GetMembers()
-                   where (member.GetCustomAttributes(true).OfType<ColumnAttribute>().DefaultIfEmpty(new ColumnAttribute()).Single().Name == name)
-                    select member).SingleOrDefault();
-        }
-
-        /// <summary>
-        /// Returns a unique MemberInfo
-        /// </summary>
-        /// <param name="t">The declaring type</param>
-        /// <param name="name">The member name</param>
-        /// <param name="bindingFlags">Binding flags</param>
-        /// <returns>A MemberInfo or null</returns>
-        public static MemberInfo GetSingleMember(this Type t, string name, BindingFlags bindingFlags)
-        {
-            var members = t.GetMember(name, bindingFlags);
-            if (members.Length > 0)
-                return members[0];
-            return null;
-        }
-
-        /// <summary>
-        /// Determines if a Type is specified as nullable
-        /// </summary>
-        /// <param name="t"></param>
-        /// <returns></returns>
-        public static bool IsNullable(this Type t)
-        {
-            return t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>);
-        }
-
-        /// <summary>
-        /// If the type is nullable, returns the underlying type
-        /// Undefined behavior otherwise (it's user responsibility to check for Nullable first)
-        /// </summary>
-        /// <param name="t"></param>
-        /// <returns></returns>
-        public static Type GetNullableType(this Type t)
-        {
-            return Nullable.GetUnderlyingType(t);
-        }
-
-        /// <summary>
-        /// Returns default value for provided type
-        /// </summary>
-        /// <param name="t"></param>
-        /// <returns></returns>
-        public static object GetDefault(this Type t)
-        {
-            return TypeConvert.GetDefault(t);
-        }
-
-        /// <summary>
-        /// Returns type name without generic specification
-        /// </summary>
-        /// <param name="t"></param>
-        /// <returns></returns>
-        public static string GetShortName(this Type t)
-        {
-            var name = t.Name;
-            if (t.IsGenericTypeDefinition)
-                return name.Split('`')[0];
-            return name;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Linq;
+using System.Data.Linq.Mapping;
+using System.Reflection;
+
+namespace DbLinq.Util
+{
+    internal static class TypeExtensions
+    {
+        /// <summary>
+        /// Determines if a given type can have a null value
+        /// </summary>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        public static bool CanBeNull(this Type t)
+        {
+            return IsNullable(t) || !t.IsValueType;
+        }
+
+        /// <summary>
+        /// Returns a unique MemberInfo
+        /// </summary>
+        /// <param name="t">The declaring type</param>
+        /// <param name="name">The member name</param>
+        /// <returns>A MemberInfo or null</returns>
+        public static MemberInfo GetSingleMember(this Type t, string name)
+        {
+            return GetSingleMember(t, name, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);
+        }
+
+        /// <summary>
+        /// Returns a unique MemberInfo based on column name
+        /// </summary>
+        /// <param name="t">The declaring type</param>
+        /// <param name="name">The column name for the member</param>
+        /// <returns>A MemberInfo or null</returns>
+        public static MemberInfo GetTableColumnMember(this Type t, string name)
+        {
+            return GetTableColumnMember(t, name, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
+        }
+
+        /// <summary>
+        /// Returns a unique MemberInfo based on column name
+        /// </summary>
+        /// <param name="t">The declaring type</param>
+        /// <param name="name">The column name for the member</param>
+        /// <param name="bindingFlags">Binding flags</param>
+        /// <returns>A MemberInfo or null</returns>
+        public static MemberInfo GetTableColumnMember(this Type t, string name, BindingFlags bindingFlags)
+        {
+            return (from member in t.GetMembers()
+                   where (member.GetCustomAttributes(true).OfType<ColumnAttribute>().DefaultIfEmpty(new ColumnAttribute()).Single().Name == name)
+                    select member).SingleOrDefault();
+        }
+
+        /// <summary>
+        /// Returns a unique MemberInfo
+        /// </summary>
+        /// <param name="t">The declaring type</param>
+        /// <param name="name">The member name</param>
+        /// <param name="bindingFlags">Binding flags</param>
+        /// <returns>A MemberInfo or null</returns>
+        public static MemberInfo GetSingleMember(this Type t, string name, BindingFlags bindingFlags)
+        {
+            var members = t.GetMember(name, bindingFlags);
+            if (members.Length > 0)
+                return members[0];
+            return null;
+        }
+
+        /// <summary>
+        /// Determines if a Type is specified as nullable
+        /// </summary>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        public static bool IsNullable(this Type t)
+        {
+            return t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>);
+        }
+
+        /// <summary>
+        /// If the type is nullable, returns the underlying type
+        /// Undefined behavior otherwise (it's user responsibility to check for Nullable first)
+        /// </summary>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        public static Type GetNullableType(this Type t)
+        {
+            return Nullable.GetUnderlyingType(t);
+        }
+
+        /// <summary>
+        /// Returns default value for provided type
+        /// </summary>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        public static object GetDefault(this Type t)
+        {
+            return TypeConvert.GetDefault(t);
+        }
+
+        /// <summary>
+        /// Returns type name without generic specification
+        /// </summary>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        public static string GetShortName(this Type t)
+        {
+            var name = t.Name;
+            if (t.IsGenericTypeDefinition)
+                return name.Split('`')[0];
+            return name;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Util/TypeLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Util/TypeLoader.cs
@@ -1,59 +1,59 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Reflection;
-
-namespace DbLinq.Util
-{
-    internal static class TypeLoader
-    {
-        public static Type Load(string name)
-        {
-            try
-            {
-                AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
-                return Type.GetType(name);
-            }
-            finally
-            {
-                AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
-            }
-        }
-
-        private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
-        {
-            // try to load from within the current AppDomain
-            var assemblies = AppDomain.CurrentDomain.GetAssemblies();
-            foreach (var assembly in assemblies)
-            {
-                if (assembly.GetName().Name == args.Name)
-                    return assembly;
-            }
-            return null;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Reflection;
+
+namespace DbLinq.Util
+{
+    internal static class TypeLoader
+    {
+        public static Type Load(string name)
+        {
+            try
+            {
+                AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
+                return Type.GetType(name);
+            }
+            finally
+            {
+                AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
+            }
+        }
+
+        private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
+        {
+            // try to load from within the current AppDomain
+            var assemblies = AppDomain.CurrentDomain.GetAssemblies();
+            foreach (var assembly in assemblies)
+            {
+                if (assembly.GetName().Name == args.Name)
+                    return assembly;
+            }
+            return null;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/DbSchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/DbSchemaLoader.cs
@@ -1,256 +1,256 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Data.Common;
-using System.IO;
-using System.Linq;
-using System.Text;
-
-using DbLinq.Schema.Dbml;
-using DbLinq.Vendor.Implementation;
-
-namespace DbLinq.Vendor
-{
-#if !MONO_STRICT
-    public
-#endif
-    class DbSchemaLoader : SchemaLoader
-    {
-        public DbSchemaLoader()
-        {
-        }
-
-        public override IVendor Vendor { get; set; }
-
-        protected virtual string UnquoteSqlName(string name)
-        {
-            if (string.IsNullOrEmpty(name))
-                return name;
-            var quotes = new[]{
-                new { Start = "[",  End = "]" },
-                new { Start = "`",  End = "`" },
-                new { Start = "\"", End = "\"" },
-            };
-            foreach (var q in quotes)
-            {
-                if (name.StartsWith(q.Start) && name.EndsWith(q.End))
-                    return name.Substring(q.Start.Length, name.Length - q.Start.Length - q.End.Length);
-            }
-            return name;
-        }
-
-        protected override void LoadConstraints(Database schema, DbLinq.Schema.SchemaName schemaName, IDbConnection conn, DbLinq.Schema.NameFormat nameFormat, Names names)
-        {
-            DbConnection c = (DbConnection) conn;
-            var foreignKeys = GetForeignKeys(c);
-
-            int iConstName  = foreignKeys.Columns.IndexOf("CONSTRAINT_NAME");
-            int iConstType  = foreignKeys.Columns.IndexOf("CONSTRAINT_TYPE");
-            int iFromColumn = foreignKeys.Columns.IndexOf("FKEY_FROM_COLUMN");
-            int iFromSchema = foreignKeys.Columns.IndexOf("TABLE_SCHEMA");
-            int iFromTable  = foreignKeys.Columns.IndexOf("TABLE_NAME");
-            int iToColumn   = foreignKeys.Columns.IndexOf("FKEY_TO_COLUMN");
-            int iToSchema   = foreignKeys.Columns.IndexOf("FKEY_TO_SCHEMA");
-            int iToTable    = foreignKeys.Columns.IndexOf("FKEY_TO_TABLE");
-
-            if (iConstName < 0 || iConstType < 0 ||
-                    iFromColumn < 0 || iFromSchema < 0 || iFromTable < 0 ||
-                    iToColumn < 0 || iToSchema < 0 || iToTable < 0)
-            {
-                WriteErrorLine("Database connection '{0}' doesn't support querying foreign key information.",
-                    c.GetType().Name);
-                return;
-            }
-
-            foreach (DataRow r in foreignKeys.Rows)
-            {
-                var fromTable  = UnquoteSqlName(GetValue<string>(r, iFromTable, null));
-                var fromSchema = UnquoteSqlName(GetValue<string>(r, iFromSchema, null));
-                var fromColumn = UnquoteSqlName(GetValue<string>(r, iFromColumn, null));
-
-                string fullFromTable = GetFullDbName(fromTable, fromSchema);
-                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => fullFromTable == t.Name);
-                if (table == null)
-                {
-                    WriteErrorLine("ERROR L46: Table '" + fromTable + "' not found for column " + fromColumn);
-                    continue;
-                }
-
-                var constraintType  = GetValue<string>(r, iConstType, null);
-                var toTable         = UnquoteSqlName(GetValue<string>(r, iToTable, null));
-
-                if (constraintType == "FOREIGN KEY" && toTable != null)
-                {
-                    var constraintName  = GetValue(r, iConstName, (string) null);
-                    var toColumn        = UnquoteSqlName(GetValue<string>(r, iToColumn, null));
-                    var toSchema        = UnquoteSqlName(GetValue<string>(r, iToSchema, null));
-                    LoadForeignKey(schema, table, 
-                            fromColumn, fromTable, fromSchema,
-                            toColumn, toTable, toSchema,
-                            constraintName, nameFormat, names);
-                }
-            }
-        }
-
-        protected virtual DataTable GetForeignKeys(DbConnection connection)
-        {
-            return connection.GetSchema("ForeignKeys");
-        }
-
-        private DataTable GetSchema(DbConnection connection, string schema)
-        {
-            var schemas = connection.GetSchema();
-            var iCollectionName = schemas.Columns.IndexOf("CollectionName");
-            if (!schemas.Rows.Cast<DataRow>().Any(r => r[iCollectionName].ToString() == schema))
-                return null;
-            return connection.GetSchema(schema);
-        }
-
-#if false
-        protected override void LoadForeignKey(Database schema, Table table, string columnName, string tableName, string tableSchema, string referencedColumnName, string referencedTableName, string referencedTableSchema, string constraintName, DbLinq.Schema.NameFormat nameFormat, SchemaLoader.Names names)
-        {
-            var foriegnKeys = GetSchema("ForeignKeys");
-            if (foriegnKeys == null)
-                return;
-            // throw new NotImplementedException();
-        }
-#endif
-
-#if false
-        protected override void LoadStoredProcedures(Database schema, DbLinq.Schema.SchemaName schemaName, IDbConnection conn, DbLinq.Schema.NameFormat nameFormat)
-        {
-            var foriegnKeys = GetSchema("Procedures");
-            if (foriegnKeys == null)
-                return;
-           //  throw new NotImplementedException();
-        }
-#endif
-
-        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connection, string databaseName)
-        {
-            var db = (DbConnection) connection;
-
-            var typeMap   = GetSqlToManagedTypeMapping(db);
-
-            var dbColumns = GetColumns(db);
-            var iColumn   = dbColumns.Columns.IndexOf("COLUMN_NAME");
-            var iDefValue = dbColumns.Columns.IndexOf("COLUMN_DEFAULT");
-            var iNullable = dbColumns.Columns.IndexOf("IS_NULLABLE");
-            var iMaxLen   = dbColumns.Columns.IndexOf("CHARACTER_MAXIMUM_LENGTH");
-            var iNumPrec  = dbColumns.Columns.IndexOf("NUMERIC_PRECISION");
-            var iDatPrec  = dbColumns.Columns.IndexOf("DATETIME_PRECISION");
-            var iTable    = dbColumns.Columns.IndexOf("TABLE_NAME");
-            var iSchema   = dbColumns.Columns.IndexOf("TABLE_SCHEMA");
-            var iSqlType  = dbColumns.Columns.IndexOf("DATA_TYPE");
-
-            var iPK = dbColumns.Columns.IndexOf("PRIMARY_KEY");
-            if (iPK < 0)
-            {
-                WriteErrorLine("Database connection '{0}' doesn't support querying primary key information.",
-                        db.GetType().Name);
-            }
-
-            var columns = new List<IDataTableColumn>();
-            foreach (DataRow c in dbColumns.Rows)
-            {
-                var sqlType     = c[iSqlType].ToString().Trim();
-                var tableName   = UnquoteSqlName(GetValue<string>(c, iTable, null));
-                var tableSchema = UnquoteSqlName(GetValue<string>(c, iSchema, null));
-                var columnName  = UnquoteSqlName(GetValue<string>(c, iColumn, null));
-
-                if (sqlType.Length == 0)
-                {
-                    // Column has no type; wtf are we supposed to do?
-                    // This happens w/ SQLite while processing Northwind.db3 for the 
-                    // 'Customer and Suppliers by City' view, Relationship column.
-                    Console.Error.WriteLine("Warning: The column '{0}.{1}.{2}' could not be imported because the column's DATA_TYPE is empty.",
-                            tableSchema, tableName, columnName);
-                    continue;
-                }
-
-                var v = new DataTableColumn()
-                {
-                    ColumnName      = columnName,
-                    DefaultValue    = GetValue<string>(c, iDefValue, null),
-                    FullType        = sqlType,
-                    Length          = (long) GetValue<int>(c, iMaxLen, 0),
-                    ManagedType     = typeMap[sqlType],
-                    Nullable        = GetValue(c, iNullable, false),
-                    Precision       = GetValue<int?>(c, iNumPrec, null),
-                    PrimaryKey      = iPK < 0 ? (bool?) null : (bool?) GetValue(c, iPK, false),
-                    SqlType         = sqlType,
-                    TableName       = tableName,
-                    TableSchema     = tableSchema,
-                };
-                FillDataTableColumnInformation(c, v);
-                columns.Add(v);
-            }
-            return columns;
-        }
-
-        protected virtual DataTable GetColumns(DbConnection connection)
-        {
-            return connection.GetSchema("Columns");
-        }
-
-        protected virtual void FillDataTableColumnInformation(DataRow row, DataTableColumn column)
-        {
-            if (column.PrimaryKey.HasValue && column.PrimaryKey.Value &&
-                    (column.ManagedType == "System.Int32" || column.ManagedType == "System.Int64"))
-                column.Generated = true;
-        }
-
-        private static bool GetValue(DataRow r, int index, bool defaultValue)
-        {
-            var v = r[index];
-            if (v is DBNull)
-                return defaultValue;
-            if (v is string)
-            {
-                switch (v.ToString().ToUpperInvariant())
-                {
-                    case "YES": return true;
-                    case "NO":  return false;
-                    default:    return defaultValue;
-                }
-            }
-            return (bool) v;
-        }
-
-        private static T GetValue<T>(DataRow r, int index, T defaultValue)
-        {
-            var v = r[index];
-            if (v is DBNull)
-                return defaultValue;
-            return (T) v;
-        }
-
-        private Dictionary<string, string> GetSqlToManagedTypeMapping(DbConnection connection)
-        {
-            var dataTypes = connection.GetSchema("DataTypes");
-            var iSqlType = dataTypes.Columns.IndexOf("TypeName");
-            var iNetType = dataTypes.Columns.IndexOf("DataType");
-            return dataTypes.Rows.Cast<DataRow>()
-                .ToDictionary(r => r[iSqlType].ToString(), r => r[iNetType].ToString());
-        }
-
-        public override IList<IDataName> ReadTables(IDbConnection connection, string databaseName)
-        {
-            DbConnection db = (DbConnection) connection;
-            var dbTables  = db.GetSchema("Tables");
-            var iName     = dbTables.Columns.IndexOf("TABLE_NAME");
-            var iSchema   = dbTables.Columns.IndexOf("TABLE_SCHEMA");
-            List<IDataName> tables = new List<IDataName>();
-            foreach (DataRow table in dbTables.Rows)
-            {
-                var schema = UnquoteSqlName(GetValue<string>(table, iSchema, null));
-                tables.Add(new DataName()
-                {
-                    Name    = UnquoteSqlName(table[iName].ToString()),
-                    Schema  = string.IsNullOrEmpty(schema) ? null : schema,
-                });
-            }
-            return tables;
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+using DbLinq.Schema.Dbml;
+using DbLinq.Vendor.Implementation;
+
+namespace DbLinq.Vendor
+{
+#if !MONO_STRICT
+    public
+#endif
+    class DbSchemaLoader : SchemaLoader
+    {
+        public DbSchemaLoader()
+        {
+        }
+
+        public override IVendor Vendor { get; set; }
+
+        protected virtual string UnquoteSqlName(string name)
+        {
+            if (string.IsNullOrEmpty(name))
+                return name;
+            var quotes = new[]{
+                new { Start = "[",  End = "]" },
+                new { Start = "`",  End = "`" },
+                new { Start = "\"", End = "\"" },
+            };
+            foreach (var q in quotes)
+            {
+                if (name.StartsWith(q.Start) && name.EndsWith(q.End))
+                    return name.Substring(q.Start.Length, name.Length - q.Start.Length - q.End.Length);
+            }
+            return name;
+        }
+
+        protected override void LoadConstraints(Database schema, DbLinq.Schema.SchemaName schemaName, IDbConnection conn, DbLinq.Schema.NameFormat nameFormat, Names names)
+        {
+            DbConnection c = (DbConnection) conn;
+            var foreignKeys = GetForeignKeys(c);
+
+            int iConstName  = foreignKeys.Columns.IndexOf("CONSTRAINT_NAME");
+            int iConstType  = foreignKeys.Columns.IndexOf("CONSTRAINT_TYPE");
+            int iFromColumn = foreignKeys.Columns.IndexOf("FKEY_FROM_COLUMN");
+            int iFromSchema = foreignKeys.Columns.IndexOf("TABLE_SCHEMA");
+            int iFromTable  = foreignKeys.Columns.IndexOf("TABLE_NAME");
+            int iToColumn   = foreignKeys.Columns.IndexOf("FKEY_TO_COLUMN");
+            int iToSchema   = foreignKeys.Columns.IndexOf("FKEY_TO_SCHEMA");
+            int iToTable    = foreignKeys.Columns.IndexOf("FKEY_TO_TABLE");
+
+            if (iConstName < 0 || iConstType < 0 ||
+                    iFromColumn < 0 || iFromSchema < 0 || iFromTable < 0 ||
+                    iToColumn < 0 || iToSchema < 0 || iToTable < 0)
+            {
+                WriteErrorLine("Database connection '{0}' doesn't support querying foreign key information.",
+                    c.GetType().Name);
+                return;
+            }
+
+            foreach (DataRow r in foreignKeys.Rows)
+            {
+                var fromTable  = UnquoteSqlName(GetValue<string>(r, iFromTable, null));
+                var fromSchema = UnquoteSqlName(GetValue<string>(r, iFromSchema, null));
+                var fromColumn = UnquoteSqlName(GetValue<string>(r, iFromColumn, null));
+
+                string fullFromTable = GetFullDbName(fromTable, fromSchema);
+                DbLinq.Schema.Dbml.Table table = schema.Tables.FirstOrDefault(t => fullFromTable == t.Name);
+                if (table == null)
+                {
+                    WriteErrorLine("ERROR L46: Table '" + fromTable + "' not found for column " + fromColumn);
+                    continue;
+                }
+
+                var constraintType  = GetValue<string>(r, iConstType, null);
+                var toTable         = UnquoteSqlName(GetValue<string>(r, iToTable, null));
+
+                if (constraintType == "FOREIGN KEY" && toTable != null)
+                {
+                    var constraintName  = GetValue(r, iConstName, (string) null);
+                    var toColumn        = UnquoteSqlName(GetValue<string>(r, iToColumn, null));
+                    var toSchema        = UnquoteSqlName(GetValue<string>(r, iToSchema, null));
+                    LoadForeignKey(schema, table, 
+                            fromColumn, fromTable, fromSchema,
+                            toColumn, toTable, toSchema,
+                            constraintName, nameFormat, names);
+                }
+            }
+        }
+
+        protected virtual DataTable GetForeignKeys(DbConnection connection)
+        {
+            return connection.GetSchema("ForeignKeys");
+        }
+
+        private DataTable GetSchema(DbConnection connection, string schema)
+        {
+            var schemas = connection.GetSchema();
+            var iCollectionName = schemas.Columns.IndexOf("CollectionName");
+            if (!schemas.Rows.Cast<DataRow>().Any(r => r[iCollectionName].ToString() == schema))
+                return null;
+            return connection.GetSchema(schema);
+        }
+
+#if false
+        protected override void LoadForeignKey(Database schema, Table table, string columnName, string tableName, string tableSchema, string referencedColumnName, string referencedTableName, string referencedTableSchema, string constraintName, DbLinq.Schema.NameFormat nameFormat, SchemaLoader.Names names)
+        {
+            var foriegnKeys = GetSchema("ForeignKeys");
+            if (foriegnKeys == null)
+                return;
+            // throw new NotImplementedException();
+        }
+#endif
+
+#if false
+        protected override void LoadStoredProcedures(Database schema, DbLinq.Schema.SchemaName schemaName, IDbConnection conn, DbLinq.Schema.NameFormat nameFormat)
+        {
+            var foriegnKeys = GetSchema("Procedures");
+            if (foriegnKeys == null)
+                return;
+           //  throw new NotImplementedException();
+        }
+#endif
+
+        protected override IList<IDataTableColumn> ReadColumns(IDbConnection connection, string databaseName)
+        {
+            var db = (DbConnection) connection;
+
+            var typeMap   = GetSqlToManagedTypeMapping(db);
+
+            var dbColumns = GetColumns(db);
+            var iColumn   = dbColumns.Columns.IndexOf("COLUMN_NAME");
+            var iDefValue = dbColumns.Columns.IndexOf("COLUMN_DEFAULT");
+            var iNullable = dbColumns.Columns.IndexOf("IS_NULLABLE");
+            var iMaxLen   = dbColumns.Columns.IndexOf("CHARACTER_MAXIMUM_LENGTH");
+            var iNumPrec  = dbColumns.Columns.IndexOf("NUMERIC_PRECISION");
+            var iDatPrec  = dbColumns.Columns.IndexOf("DATETIME_PRECISION");
+            var iTable    = dbColumns.Columns.IndexOf("TABLE_NAME");
+            var iSchema   = dbColumns.Columns.IndexOf("TABLE_SCHEMA");
+            var iSqlType  = dbColumns.Columns.IndexOf("DATA_TYPE");
+
+            var iPK = dbColumns.Columns.IndexOf("PRIMARY_KEY");
+            if (iPK < 0)
+            {
+                WriteErrorLine("Database connection '{0}' doesn't support querying primary key information.",
+                        db.GetType().Name);
+            }
+
+            var columns = new List<IDataTableColumn>();
+            foreach (DataRow c in dbColumns.Rows)
+            {
+                var sqlType     = c[iSqlType].ToString().Trim();
+                var tableName   = UnquoteSqlName(GetValue<string>(c, iTable, null));
+                var tableSchema = UnquoteSqlName(GetValue<string>(c, iSchema, null));
+                var columnName  = UnquoteSqlName(GetValue<string>(c, iColumn, null));
+
+                if (sqlType.Length == 0)
+                {
+                    // Column has no type; wtf are we supposed to do?
+                    // This happens w/ SQLite while processing Northwind.db3 for the 
+                    // 'Customer and Suppliers by City' view, Relationship column.
+                    Console.Error.WriteLine("Warning: The column '{0}.{1}.{2}' could not be imported because the column's DATA_TYPE is empty.",
+                            tableSchema, tableName, columnName);
+                    continue;
+                }
+
+                var v = new DataTableColumn()
+                {
+                    ColumnName      = columnName,
+                    DefaultValue    = GetValue<string>(c, iDefValue, null),
+                    FullType        = sqlType,
+                    Length          = (long) GetValue<int>(c, iMaxLen, 0),
+                    ManagedType     = typeMap[sqlType],
+                    Nullable        = GetValue(c, iNullable, false),
+                    Precision       = GetValue<int?>(c, iNumPrec, null),
+                    PrimaryKey      = iPK < 0 ? (bool?) null : (bool?) GetValue(c, iPK, false),
+                    SqlType         = sqlType,
+                    TableName       = tableName,
+                    TableSchema     = tableSchema,
+                };
+                FillDataTableColumnInformation(c, v);
+                columns.Add(v);
+            }
+            return columns;
+        }
+
+        protected virtual DataTable GetColumns(DbConnection connection)
+        {
+            return connection.GetSchema("Columns");
+        }
+
+        protected virtual void FillDataTableColumnInformation(DataRow row, DataTableColumn column)
+        {
+            if (column.PrimaryKey.HasValue && column.PrimaryKey.Value &&
+                    (column.ManagedType == "System.Int32" || column.ManagedType == "System.Int64"))
+                column.Generated = true;
+        }
+
+        private static bool GetValue(DataRow r, int index, bool defaultValue)
+        {
+            var v = r[index];
+            if (v is DBNull)
+                return defaultValue;
+            if (v is string)
+            {
+                switch (v.ToString().ToUpperInvariant())
+                {
+                    case "YES": return true;
+                    case "NO":  return false;
+                    default:    return defaultValue;
+                }
+            }
+            return (bool) v;
+        }
+
+        private static T GetValue<T>(DataRow r, int index, T defaultValue)
+        {
+            var v = r[index];
+            if (v is DBNull)
+                return defaultValue;
+            return (T) v;
+        }
+
+        private Dictionary<string, string> GetSqlToManagedTypeMapping(DbConnection connection)
+        {
+            var dataTypes = connection.GetSchema("DataTypes");
+            var iSqlType = dataTypes.Columns.IndexOf("TypeName");
+            var iNetType = dataTypes.Columns.IndexOf("DataType");
+            return dataTypes.Rows.Cast<DataRow>()
+                .ToDictionary(r => r[iSqlType].ToString(), r => r[iNetType].ToString());
+        }
+
+        public override IList<IDataName> ReadTables(IDbConnection connection, string databaseName)
+        {
+            DbConnection db = (DbConnection) connection;
+            var dbTables  = db.GetSchema("Tables");
+            var iName     = dbTables.Columns.IndexOf("TABLE_NAME");
+            var iSchema   = dbTables.Columns.IndexOf("TABLE_SCHEMA");
+            List<IDataName> tables = new List<IDataName>();
+            foreach (DataRow table in dbTables.Rows)
+            {
+                var schema = UnquoteSqlName(GetValue<string>(table, iSchema, null));
+                tables.Add(new DataName()
+                {
+                    Name    = UnquoteSqlName(table[iName].ToString()),
+                    Schema  = string.IsNullOrEmpty(schema) ? null : schema,
+                });
+            }
+            return tables;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IDataName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IDataName.cs
@@ -1,47 +1,47 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Vendor
-{
-    /// <summary>
-    /// Basic name in a database entity, with a name and schema
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IDataName
-    {
-        /// <summary>
-        /// Gets or sets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        string Name { get; set; }
-        /// <summary>
-        /// Gets or sets the schema.
-        /// </summary>
-        /// <value>The schema.</value>
-        string Schema { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Vendor
+{
+    /// <summary>
+    /// Basic name in a database entity, with a name and schema
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IDataName
+    {
+        /// <summary>
+        /// Gets or sets the name.
+        /// </summary>
+        /// <value>The name.</value>
+        string Name { get; set; }
+        /// <summary>
+        /// Gets or sets the schema.
+        /// </summary>
+        /// <value>The schema.</value>
+        string Schema { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IDataTableColumn.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IDataTableColumn.cs
@@ -1,68 +1,68 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Vendor
-{
-    /// <summary>
-    /// Represents a database column
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IDataTableColumn : IDataType
-    {
-        /// <summary>
-        /// The column name
-        /// </summary>
-        string ColumnName { get; set; }
-
-        /// <summary>
-        /// The table to which belongs the column
-        /// </summary>
-        string TableName { get; set; }
-
-        /// <summary>
-        /// The table schema to which belongs the column
-        /// </summary>
-        string TableSchema { get; set; }
-
-        /// <summary>
-        /// Used to determine if the column is a primary key.
-        /// May be null, because some vendors don't show this as a column property (Oracle for example) but as table constraints
-        /// </summary>
-        bool? PrimaryKey { get; set; }
-
-        /// <summary>
-        /// The value assigned when nothing is specified in insert.
-        /// Sometimes use to determine if a column is a sequence.
-        /// </summary>
-        string DefaultValue { get; set; }
-
-        /// <summary>
-        /// Determines if the column value is generated when there is no value given in insert
-        /// </summary>
-        bool? Generated { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Vendor
+{
+    /// <summary>
+    /// Represents a database column
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IDataTableColumn : IDataType
+    {
+        /// <summary>
+        /// The column name
+        /// </summary>
+        string ColumnName { get; set; }
+
+        /// <summary>
+        /// The table to which belongs the column
+        /// </summary>
+        string TableName { get; set; }
+
+        /// <summary>
+        /// The table schema to which belongs the column
+        /// </summary>
+        string TableSchema { get; set; }
+
+        /// <summary>
+        /// Used to determine if the column is a primary key.
+        /// May be null, because some vendors don't show this as a column property (Oracle for example) but as table constraints
+        /// </summary>
+        bool? PrimaryKey { get; set; }
+
+        /// <summary>
+        /// The value assigned when nothing is specified in insert.
+        /// Sometimes use to determine if a column is a sequence.
+        /// </summary>
+        string DefaultValue { get; set; }
+
+        /// <summary>
+        /// Determines if the column value is generated when there is no value given in insert
+        /// </summary>
+        bool? Generated { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IDataType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IDataType.cs
@@ -1,71 +1,71 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Vendor
-{
-    /// <summary>
-    /// Represents a database data type
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IDataType
-    {
-        /// <summary>
-        /// The base type, like 'number', 'varchar'
-        /// </summary>
-        string SqlType { get; set; }
-        /// <summary>
-        /// The managed type to use, like System.Int32
-        /// </summary>
-        string ManagedType { get; set; }
-        /// <summary>
-        /// For all types, the possibility to have a NULL
-        /// </summary>
-        bool Nullable { get; set; }
-        /// <summary>
-        /// On non numeric data types, the length (for strings or blobs)
-        /// </summary>
-        long? Length { get; set; }
-        /// <summary>
-        /// On numeric data types, the number of digits in the integer part
-        /// </summary>
-        int? Precision { get; set; }
-        /// <summary>
-        /// On numeric data types, the number of digits in the decimal part
-        /// </summary>
-        int? Scale { get; set; }
-        /// <summary>
-        /// On numeric data types, if there is a sign
-        /// </summary>
-        bool? Unsigned { get; set; }
-
-        /// <summary>
-        /// The original (or domain) type, returned raw by column information.
-        /// Is also used to generated the database.
-        /// </summary>
-        string FullType { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Vendor
+{
+    /// <summary>
+    /// Represents a database data type
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IDataType
+    {
+        /// <summary>
+        /// The base type, like 'number', 'varchar'
+        /// </summary>
+        string SqlType { get; set; }
+        /// <summary>
+        /// The managed type to use, like System.Int32
+        /// </summary>
+        string ManagedType { get; set; }
+        /// <summary>
+        /// For all types, the possibility to have a NULL
+        /// </summary>
+        bool Nullable { get; set; }
+        /// <summary>
+        /// On non numeric data types, the length (for strings or blobs)
+        /// </summary>
+        long? Length { get; set; }
+        /// <summary>
+        /// On numeric data types, the number of digits in the integer part
+        /// </summary>
+        int? Precision { get; set; }
+        /// <summary>
+        /// On numeric data types, the number of digits in the decimal part
+        /// </summary>
+        int? Scale { get; set; }
+        /// <summary>
+        /// On numeric data types, if there is a sign
+        /// </summary>
+        bool? Unsigned { get; set; }
+
+        /// <summary>
+        /// The original (or domain) type, returned raw by column information.
+        /// Is also used to generated the database.
+        /// </summary>
+        string FullType { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/INameAliases.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/INameAliases.cs
@@ -1,93 +1,93 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Vendor
-{
-    /// <summary>
-    /// Represents aliases for table names or types.
-    /// Depending on the implementation, search maybe case insensitive or schema insensitive
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface INameAliases
-    {
-        /// <summary>
-        /// Returns a type name for a given table.
-        /// </summary>
-        /// <param name="table">The table to look for</param>
-        /// <param name="schema">An optional schema (or null)</param>
-        /// <returns>Type name or null if no alias found</returns>
-        string GetTableTypeAlias(string table, string schema);
-        /// <summary>
-        /// Returns a member name for a given table (used by the main database classes).
-        /// </summary>
-        /// <param name="table">The table to look for</param>
-        /// <param name="schema">An optional schema (or null)</param>
-        /// <returns>Member name or null if no alias found</returns>
-        string GetTableMemberAlias(string table, string schema);
-        /// <summary>
-        /// Returns a member name for a given column.
-        /// </summary>
-        /// <param name="column">Column name</param>
-        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
-        /// <param name="schema">An optional schema (or null)</param>
-        /// <returns>Member name or null if no alias found</returns>
-        string GetColumnMemberAlias(string column, string table, string schema);
-
-        /// <summary>
-        /// Returns a member type for a given column.
-        /// Please note that DbLinq may not handle correctly the forced type
-        /// </summary>
-        /// <param name="column">Column name</param>
-        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
-        /// <param name="schema">An optional schema (or null)</param>
-        /// <returns>Member type or null if no alias found</returns>
-        string GetColumnForcedType(string column, string table, string schema);
-
-        /// <summary>
-        /// Returns whether the given column is generated
-        /// </summary>
-        /// <param name="column">Column name</param>
-        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
-        /// <param name="schema">An optional schema (or null)</param>
-        /// <returns>Member type or null if no alias found</returns>
-        bool? GetColumnGenerated(string column, string table, string schema);
-
-
-        /// <summary>
-        /// Returns whether the given column is generated
-        /// </summary>
-        /// <param name="column">Column name</param>
-        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
-        /// <param name="schema">An optional schema (or null)</param>
-        /// <returns>Member type or null if no alias found</returns>
-        DbLinq.Schema.Dbml.AutoSync? GetColumnAutoSync(string column, string table, string schema);
-
-        string GetDatabaseNameAlias(string databaseName);
-        string GetClassNameAlias(string className);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Vendor
+{
+    /// <summary>
+    /// Represents aliases for table names or types.
+    /// Depending on the implementation, search maybe case insensitive or schema insensitive
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface INameAliases
+    {
+        /// <summary>
+        /// Returns a type name for a given table.
+        /// </summary>
+        /// <param name="table">The table to look for</param>
+        /// <param name="schema">An optional schema (or null)</param>
+        /// <returns>Type name or null if no alias found</returns>
+        string GetTableTypeAlias(string table, string schema);
+        /// <summary>
+        /// Returns a member name for a given table (used by the main database classes).
+        /// </summary>
+        /// <param name="table">The table to look for</param>
+        /// <param name="schema">An optional schema (or null)</param>
+        /// <returns>Member name or null if no alias found</returns>
+        string GetTableMemberAlias(string table, string schema);
+        /// <summary>
+        /// Returns a member name for a given column.
+        /// </summary>
+        /// <param name="column">Column name</param>
+        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
+        /// <param name="schema">An optional schema (or null)</param>
+        /// <returns>Member name or null if no alias found</returns>
+        string GetColumnMemberAlias(string column, string table, string schema);
+
+        /// <summary>
+        /// Returns a member type for a given column.
+        /// Please note that DbLinq may not handle correctly the forced type
+        /// </summary>
+        /// <param name="column">Column name</param>
+        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
+        /// <param name="schema">An optional schema (or null)</param>
+        /// <returns>Member type or null if no alias found</returns>
+        string GetColumnForcedType(string column, string table, string schema);
+
+        /// <summary>
+        /// Returns whether the given column is generated
+        /// </summary>
+        /// <param name="column">Column name</param>
+        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
+        /// <param name="schema">An optional schema (or null)</param>
+        /// <returns>Member type or null if no alias found</returns>
+        bool? GetColumnGenerated(string column, string table, string schema);
+
+
+        /// <summary>
+        /// Returns whether the given column is generated
+        /// </summary>
+        /// <param name="column">Column name</param>
+        /// <param name="table">The table to look for (parameter may be ignored depending on implementation)</param>
+        /// <param name="schema">An optional schema (or null)</param>
+        /// <returns>Member type or null if no alias found</returns>
+        DbLinq.Schema.Dbml.AutoSync? GetColumnAutoSync(string column, string table, string schema);
+
+        string GetDatabaseNameAlias(string databaseName);
+        string GetClassNameAlias(string className);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/ISchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/ISchemaLoader.cs
@@ -1,66 +1,66 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using System.IO;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-
-namespace DbLinq.Vendor
-{
-#if !MONO_STRICT
-    public
-#endif
-    interface ISchemaLoader
-    {
-        /// <summary>
-        /// Underlying vendor
-        /// </summary>
-        IVendor Vendor { get; set; }
-        /// <summary>
-        /// Connection used to read schema
-        /// </summary>
-        IDbConnection Connection { get; set; }
-
-        /// <summary>
-        /// Log output
-        /// </summary>
-        TextWriter Log { get; set; }
-
-        /// <summary>
-        /// Loads database schema
-        /// </summary>
-        /// <param name="databaseName"></param>
-        /// <param name="nameAliases"></param>
-        /// <param name="nameFormat"></param>
-        /// <param name="loadStoredProcedures"></param>
-        /// <param name="contextNamespace"></param>
-        /// <param name="entityNamespace"></param>
-        /// <returns></returns>
-        Database Load(string databaseName, INameAliases nameAliases, NameFormat nameFormat,
-            bool loadStoredProcedures, string contextNamespace, string entityNamespace);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+
+namespace DbLinq.Vendor
+{
+#if !MONO_STRICT
+    public
+#endif
+    interface ISchemaLoader
+    {
+        /// <summary>
+        /// Underlying vendor
+        /// </summary>
+        IVendor Vendor { get; set; }
+        /// <summary>
+        /// Connection used to read schema
+        /// </summary>
+        IDbConnection Connection { get; set; }
+
+        /// <summary>
+        /// Log output
+        /// </summary>
+        TextWriter Log { get; set; }
+
+        /// <summary>
+        /// Loads database schema
+        /// </summary>
+        /// <param name="databaseName"></param>
+        /// <param name="nameAliases"></param>
+        /// <param name="nameFormat"></param>
+        /// <param name="loadStoredProcedures"></param>
+        /// <param name="contextNamespace"></param>
+        /// <param name="entityNamespace"></param>
+        /// <returns></returns>
+        Database Load(string databaseName, INameAliases nameAliases, NameFormat nameFormat,
+            bool loadStoredProcedures, string contextNamespace, string entityNamespace);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/ISqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/ISqlProvider.cs
@@ -1,320 +1,320 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-namespace DbLinq.Vendor
-{
-#if !MONO_STRICT
-    public
-#endif
-    interface ISqlProvider
-    {
-        /// <summary>
-        /// String values and function parameter first character index is 1
-        /// </summary>
-        bool StringIndexStartsAtOne { get; }
-
-        string NewLine { get; }
-
-        /// <summary>
-        /// Converts a constant value to a literal representation
-        /// </summary>
-        /// <param name="literal"></param>
-        /// <returns></returns>
-        SqlStatement GetLiteral(object literal);
-
-        /// <summary>
-        /// Converts a standard operator to an expression
-        /// </summary>
-        /// <param name="operationType"></param>
-        /// <param name="p"></param>
-        /// <returns></returns>
-        SqlStatement GetLiteral(ExpressionType operationType, IList<SqlStatement> p);
-
-        /// <summary>
-        /// Converts a special expression type to literal
-        /// </summary>
-        /// <param name="operationType"></param>
-        /// <param name="p"></param>
-        /// <returns></returns>
-        SqlStatement GetLiteral(SpecialExpressionType operationType, IList<SqlStatement> p);
-
-        /// <summary>
-        /// Places the expression into parenthesis
-        /// </summary>
-        /// <param name="a"></param>
-        /// <returns></returns>
-        SqlStatement GetParenthesis(SqlStatement a);
-
-        /// <summary>
-        /// Returns a column related to a table.
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="column"></param>
-        /// <returns></returns>
-        string GetColumn(string table, string column);
-
-        /// <summary>
-        /// Returns a column related to a table.
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="column"></param>
-        /// <returns></returns>
-        string GetColumn(string column);
-
-        /// <summary>
-        /// Returns a table alias
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="alias"></param>
-        /// <returns></returns>
-        string GetTableAsAlias(string table, string alias);
-
-        /// <summary>
-        /// Returns a subquery alias
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="alias"></param>
-        /// <returns></returns>
-        string GetSubQueryAsAlias(string table, string alias);
-
-        /// <summary>
-        /// Returns a table alias
-        /// </summary>
-        /// <param name="table"></param>
-        /// <returns></returns>
-        string GetTable(string table);
-
-        /// <summary>
-        /// Returns a literal parameter name
-        /// </summary>
-        /// <returns></returns>
-        string GetParameterName(string nameBase);
-
-        /// <summary>
-        /// Joins a list of table selection to make a FROM clause
-        /// </summary>
-        /// <param name="tables"></param>
-        /// <returns></returns>
-        SqlStatement GetFromClause(SqlStatement[] tables);
-
-        /// <summary>
-        /// Joins a list of conditions to make a WHERE clause
-        /// </summary>
-        /// <param name="wheres"></param>
-        /// <returns></returns>
-        SqlStatement GetWhereClause(SqlStatement[] wheres);
-
-        /// <summary>
-        /// Returns a valid alias syntax for the given table
-        /// </summary>
-        /// <param name="nameBase"></param>
-        /// <returns></returns>
-        string GetTableAlias(string nameBase);
-
-        /// <summary>
-        /// Joins a list of operands to make a SELECT clause
-        /// </summary>
-        /// <param name="selects"></param>
-        /// <returns></returns>
-        SqlStatement GetSelectClause(SqlStatement[] selects);
-
-        /// <summary>
-        /// Joins a list of operands to make a SELECT clause
-        /// </summary>
-        /// <param name="selects"></param>
-        /// <returns></returns>
-        SqlStatement GetSelectDistinctClause(SqlStatement[] selects);
-
-        /// <summary>
-        /// Returns all table columns (*)
-        /// </summary>
-        /// <returns></returns>
-        string GetColumns();
-
-        /// <summary>
-        /// Returns a LIMIT clause around a SELECT clause
-        /// </summary>
-        /// <param name="select">SELECT clause</param>
-        /// <param name="limit">limit value (number of columns to be returned)</param>
-        /// <returns></returns>
-        SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit);
-
-        /// <summary>
-        /// Returns a LIMIT clause around a SELECT clause, with offset
-        /// </summary>
-        /// <param name="select">SELECT clause</param>
-        /// <param name="limit">limit value (number of columns to be returned)</param>
-        /// <param name="offset">first row to be returned (starting from 0)</param>
-        /// <param name="offsetAndLimit">limit+offset</param>
-        /// <returns></returns>
-        SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit);
-
-        /// <summary>
-        /// Returns an ORDER criterium
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="descending"></param>
-        /// <returns></returns>
-        SqlStatement GetOrderByColumn(SqlStatement expression, bool descending);
-
-        /// <summary>
-        /// Joins a list of conditions to make a ORDER BY clause
-        /// </summary>
-        /// <param name="orderBy"></param>
-        /// <returns></returns>
-        SqlStatement GetOrderByClause(SqlStatement[] orderBy);
-
-        /// <summary>
-        /// Joins a list of conditions to make a GROUP BY clause
-        /// </summary>
-        /// <param name="groupBy"></param>
-        /// <returns></returns>
-        SqlStatement GetGroupByClause(SqlStatement[] groupBy);
-
-        /// <summary>
-        /// Joins a list of conditions to make a HAVING clause
-        /// </summary>
-        /// <param name="havings"></param>
-        /// <returns></returns>
-        SqlStatement GetHavingClause(SqlStatement[] havings);
-
-        /// <summary>
-        /// Returns an operation between two SELECT clauses (UNION, UNION ALL, etc.)
-        /// </summary>
-        /// <param name="selectOperator"></param>
-        /// <param name="selectA"></param>
-        /// <param name="selectB"></param>
-        /// <returns></returns>
-        SqlStatement GetLiteral(SelectOperatorType selectOperator, SqlStatement selectA, SqlStatement selectB);
-
-        /// <summary>
-        /// Builds an insert clause
-        /// </summary>
-        /// <param name="table">Table name</param>
-        /// <param name="inputColumns">Columns to be inserted</param>
-        /// <param name="inputValues">Values to be inserted into columns</param>
-        /// <returns></returns>
-        SqlStatement GetInsert(SqlStatement table, IList<SqlStatement> inputColumns, IList<SqlStatement> inputValues);
-
-        /// <summary>
-        /// Builds the statements that gets back the IDs for the inserted statement
-        /// </summary>
-        /// <param name="outputParameters">Expected output parameters</param>
-        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
-        /// <returns></returns>
-        SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions);
-
-        /// <summary>
-        /// Builds an update clause
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="inputColumns">Columns to be inserted</param>
-        /// <param name="inputValues">Values to be inserted into columns</param>
-        /// <param name="outputParameters">Expected output parameters</param>
-        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
-        /// <param name="inputPKColumns">PK columns for reference</param>
-        /// <param name="inputPKValues">PK values for reference</param>
-        /// <returns></returns>
-        SqlStatement GetUpdate(SqlStatement table, IList<SqlStatement> inputColumns, IList<SqlStatement> inputValues,
-                                         IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions,
-                                         IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues);
-
-        /// <summary>
-        /// Builds a delete clause
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="inputPKColumns">PK columns for reference</param>
-        /// <param name="inputPKValues">PK values for reference</param>
-        /// <returns></returns>
-        SqlStatement GetDelete(SqlStatement table, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues);
-
-        /// <summary>
-        /// given 'User', return '[User]' to prevent a SQL keyword conflict
-        /// </summary>
-        /// <param name="name"></param>
-        string GetSafeName(string name);
-
-        /// <summary>
-        /// Returns a case safe query, converting quoted names &lt;&ltMixedCaseName>> to "MixedCaseName"
-        /// </summary>
-        /// <param name="sqlString"></param>
-        /// <returns></returns>
-        string GetSafeQuery(string sqlString);
-
-        ///<summary>
-        ///Returns a SqlStatement with a conversion of an expression(value) to a type(newType)
-        ///</summary>
-        /// <example>
-        /// In sqlServer: 
-        /// value= OrderDetail.Quantity
-        /// newType= boolean
-        /// 
-        /// it should return CONVERT(bit,OrderDetail.Quantity)
-        /// </example>
-        /// <returns></returns>
-        SqlStatement GetLiteralConvert(SqlStatement value, System.Type newType);
-
-        /// <summary>
-        /// Returns an INNER JOIN syntax
-        /// </summary>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        /// <returns></returns>
-        SqlStatement GetInnerJoinClause(SqlStatement joinedTable, SqlStatement joinExpression);
-
-        /// <summary>
-        /// Returns a LEFT JOIN syntax
-        /// </summary>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        /// <returns></returns>
-        SqlStatement GetLeftOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression);
-
-        /// <summary>
-        /// Returns a RIGHT JOIN syntax
-        /// </summary>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        /// <returns></returns>
-        SqlStatement GetRightOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression);
-
-        /// <summary>
-        /// Concatenates all join clauses
-        /// </summary>
-        /// <param name="joins"></param>
-        /// <returns></returns>
-        SqlStatement GetJoinClauses(SqlStatement[] joins);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+namespace DbLinq.Vendor
+{
+#if !MONO_STRICT
+    public
+#endif
+    interface ISqlProvider
+    {
+        /// <summary>
+        /// String values and function parameter first character index is 1
+        /// </summary>
+        bool StringIndexStartsAtOne { get; }
+
+        string NewLine { get; }
+
+        /// <summary>
+        /// Converts a constant value to a literal representation
+        /// </summary>
+        /// <param name="literal"></param>
+        /// <returns></returns>
+        SqlStatement GetLiteral(object literal);
+
+        /// <summary>
+        /// Converts a standard operator to an expression
+        /// </summary>
+        /// <param name="operationType"></param>
+        /// <param name="p"></param>
+        /// <returns></returns>
+        SqlStatement GetLiteral(ExpressionType operationType, IList<SqlStatement> p);
+
+        /// <summary>
+        /// Converts a special expression type to literal
+        /// </summary>
+        /// <param name="operationType"></param>
+        /// <param name="p"></param>
+        /// <returns></returns>
+        SqlStatement GetLiteral(SpecialExpressionType operationType, IList<SqlStatement> p);
+
+        /// <summary>
+        /// Places the expression into parenthesis
+        /// </summary>
+        /// <param name="a"></param>
+        /// <returns></returns>
+        SqlStatement GetParenthesis(SqlStatement a);
+
+        /// <summary>
+        /// Returns a column related to a table.
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="column"></param>
+        /// <returns></returns>
+        string GetColumn(string table, string column);
+
+        /// <summary>
+        /// Returns a column related to a table.
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="column"></param>
+        /// <returns></returns>
+        string GetColumn(string column);
+
+        /// <summary>
+        /// Returns a table alias
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="alias"></param>
+        /// <returns></returns>
+        string GetTableAsAlias(string table, string alias);
+
+        /// <summary>
+        /// Returns a subquery alias
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="alias"></param>
+        /// <returns></returns>
+        string GetSubQueryAsAlias(string table, string alias);
+
+        /// <summary>
+        /// Returns a table alias
+        /// </summary>
+        /// <param name="table"></param>
+        /// <returns></returns>
+        string GetTable(string table);
+
+        /// <summary>
+        /// Returns a literal parameter name
+        /// </summary>
+        /// <returns></returns>
+        string GetParameterName(string nameBase);
+
+        /// <summary>
+        /// Joins a list of table selection to make a FROM clause
+        /// </summary>
+        /// <param name="tables"></param>
+        /// <returns></returns>
+        SqlStatement GetFromClause(SqlStatement[] tables);
+
+        /// <summary>
+        /// Joins a list of conditions to make a WHERE clause
+        /// </summary>
+        /// <param name="wheres"></param>
+        /// <returns></returns>
+        SqlStatement GetWhereClause(SqlStatement[] wheres);
+
+        /// <summary>
+        /// Returns a valid alias syntax for the given table
+        /// </summary>
+        /// <param name="nameBase"></param>
+        /// <returns></returns>
+        string GetTableAlias(string nameBase);
+
+        /// <summary>
+        /// Joins a list of operands to make a SELECT clause
+        /// </summary>
+        /// <param name="selects"></param>
+        /// <returns></returns>
+        SqlStatement GetSelectClause(SqlStatement[] selects);
+
+        /// <summary>
+        /// Joins a list of operands to make a SELECT clause
+        /// </summary>
+        /// <param name="selects"></param>
+        /// <returns></returns>
+        SqlStatement GetSelectDistinctClause(SqlStatement[] selects);
+
+        /// <summary>
+        /// Returns all table columns (*)
+        /// </summary>
+        /// <returns></returns>
+        string GetColumns();
+
+        /// <summary>
+        /// Returns a LIMIT clause around a SELECT clause
+        /// </summary>
+        /// <param name="select">SELECT clause</param>
+        /// <param name="limit">limit value (number of columns to be returned)</param>
+        /// <returns></returns>
+        SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit);
+
+        /// <summary>
+        /// Returns a LIMIT clause around a SELECT clause, with offset
+        /// </summary>
+        /// <param name="select">SELECT clause</param>
+        /// <param name="limit">limit value (number of columns to be returned)</param>
+        /// <param name="offset">first row to be returned (starting from 0)</param>
+        /// <param name="offsetAndLimit">limit+offset</param>
+        /// <returns></returns>
+        SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit);
+
+        /// <summary>
+        /// Returns an ORDER criterium
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="descending"></param>
+        /// <returns></returns>
+        SqlStatement GetOrderByColumn(SqlStatement expression, bool descending);
+
+        /// <summary>
+        /// Joins a list of conditions to make a ORDER BY clause
+        /// </summary>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        SqlStatement GetOrderByClause(SqlStatement[] orderBy);
+
+        /// <summary>
+        /// Joins a list of conditions to make a GROUP BY clause
+        /// </summary>
+        /// <param name="groupBy"></param>
+        /// <returns></returns>
+        SqlStatement GetGroupByClause(SqlStatement[] groupBy);
+
+        /// <summary>
+        /// Joins a list of conditions to make a HAVING clause
+        /// </summary>
+        /// <param name="havings"></param>
+        /// <returns></returns>
+        SqlStatement GetHavingClause(SqlStatement[] havings);
+
+        /// <summary>
+        /// Returns an operation between two SELECT clauses (UNION, UNION ALL, etc.)
+        /// </summary>
+        /// <param name="selectOperator"></param>
+        /// <param name="selectA"></param>
+        /// <param name="selectB"></param>
+        /// <returns></returns>
+        SqlStatement GetLiteral(SelectOperatorType selectOperator, SqlStatement selectA, SqlStatement selectB);
+
+        /// <summary>
+        /// Builds an insert clause
+        /// </summary>
+        /// <param name="table">Table name</param>
+        /// <param name="inputColumns">Columns to be inserted</param>
+        /// <param name="inputValues">Values to be inserted into columns</param>
+        /// <returns></returns>
+        SqlStatement GetInsert(SqlStatement table, IList<SqlStatement> inputColumns, IList<SqlStatement> inputValues);
+
+        /// <summary>
+        /// Builds the statements that gets back the IDs for the inserted statement
+        /// </summary>
+        /// <param name="outputParameters">Expected output parameters</param>
+        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
+        /// <returns></returns>
+        SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions);
+
+        /// <summary>
+        /// Builds an update clause
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="inputColumns">Columns to be inserted</param>
+        /// <param name="inputValues">Values to be inserted into columns</param>
+        /// <param name="outputParameters">Expected output parameters</param>
+        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
+        /// <param name="inputPKColumns">PK columns for reference</param>
+        /// <param name="inputPKValues">PK values for reference</param>
+        /// <returns></returns>
+        SqlStatement GetUpdate(SqlStatement table, IList<SqlStatement> inputColumns, IList<SqlStatement> inputValues,
+                                         IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions,
+                                         IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues);
+
+        /// <summary>
+        /// Builds a delete clause
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="inputPKColumns">PK columns for reference</param>
+        /// <param name="inputPKValues">PK values for reference</param>
+        /// <returns></returns>
+        SqlStatement GetDelete(SqlStatement table, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues);
+
+        /// <summary>
+        /// given 'User', return '[User]' to prevent a SQL keyword conflict
+        /// </summary>
+        /// <param name="name"></param>
+        string GetSafeName(string name);
+
+        /// <summary>
+        /// Returns a case safe query, converting quoted names &lt;&ltMixedCaseName>> to "MixedCaseName"
+        /// </summary>
+        /// <param name="sqlString"></param>
+        /// <returns></returns>
+        string GetSafeQuery(string sqlString);
+
+        ///<summary>
+        ///Returns a SqlStatement with a conversion of an expression(value) to a type(newType)
+        ///</summary>
+        /// <example>
+        /// In sqlServer: 
+        /// value= OrderDetail.Quantity
+        /// newType= boolean
+        /// 
+        /// it should return CONVERT(bit,OrderDetail.Quantity)
+        /// </example>
+        /// <returns></returns>
+        SqlStatement GetLiteralConvert(SqlStatement value, System.Type newType);
+
+        /// <summary>
+        /// Returns an INNER JOIN syntax
+        /// </summary>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        /// <returns></returns>
+        SqlStatement GetInnerJoinClause(SqlStatement joinedTable, SqlStatement joinExpression);
+
+        /// <summary>
+        /// Returns a LEFT JOIN syntax
+        /// </summary>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        /// <returns></returns>
+        SqlStatement GetLeftOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression);
+
+        /// <summary>
+        /// Returns a RIGHT JOIN syntax
+        /// </summary>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        /// <returns></returns>
+        SqlStatement GetRightOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression);
+
+        /// <summary>
+        /// Concatenates all join clauses
+        /// </summary>
+        /// <param name="joins"></param>
+        /// <returns></returns>
+        SqlStatement GetJoinClauses(SqlStatement[] joins);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IVendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/IVendor.cs
@@ -1,105 +1,105 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data;
-using System.Reflection;
-using System.Collections.Generic;
-
-#if MONO_STRICT
-using DataContext = System.Data.Linq.DataContext;
-using System.Data.Linq;
-#else
-using DataContext = DbLinq.Data.Linq.DataContext;
-#endif
-
-using Data = DbLinq.Data;
-using DbLinq.Data.Linq;
-using IExecuteResult = System.Data.Linq.IExecuteResult;
-
-namespace DbLinq.Vendor
-{
-    /// <summary>
-    /// Vendor - specific part of DbLinq.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IVendor
-    {
-        /// <summary>
-        /// VendorName represents the database being handled by this vendor 'Oracle' or 'MySql'
-        /// </summary>
-        string VendorName { get; }
-
-        /// <summary>
-        /// Builds a connection string given the input parameters
-        /// </summary>
-        /// <param name="host">Server host</param>
-        /// <param name="databaseName">Database (or schema) name</param>
-        /// <param name="userName">Login user name</param>
-        /// <param name="password">Login password</param>
-        /// <returns></returns>
-        string BuildConnectionString(string host, string databaseName, string userName, string password);
-
-        /// <summary>
-        /// Pings requested DB, true is result is OK.
-        /// May throw a connection exception (DataContext.DatabaseExists() handles this)
-        /// </summary>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        bool Ping(DataContext dataContext);
-
-        /// <summary>
-        /// Component used to provide SQL Parts
-        /// </summary>
-        ISqlProvider SqlProvider { get; }
-
-        /// <summary>
-        /// Executes a stored procedure/function call
-        /// </summary>
-        /// <param name="context"></param>
-        /// <param name="method"></param>
-        /// <param name="sqlParams"></param>
-        /// <returns></returns>
-        IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method, params object[] sqlParams);
-
-        /// <summary>
-        /// Performs bulk insert.
-        /// Please notice that PKs may not be updated
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="table"></param>
-        /// <param name="rows"></param>
-        /// <param name="pageSize"></param>
-        /// <param name="transaction"></param>
-        void BulkInsert<T>(Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction) where T : class;
-
-        /// <summary>
-        /// required by DataContext ctor, which needs to create an IDbConnection, given an IVendor
-        /// </summary>
-        IDbConnection CreateDbConnection(string connectionString);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data;
+using System.Reflection;
+using System.Collections.Generic;
+
+#if MONO_STRICT
+using DataContext = System.Data.Linq.DataContext;
+using System.Data.Linq;
+#else
+using DataContext = DbLinq.Data.Linq.DataContext;
+#endif
+
+using Data = DbLinq.Data;
+using DbLinq.Data.Linq;
+using IExecuteResult = System.Data.Linq.IExecuteResult;
+
+namespace DbLinq.Vendor
+{
+    /// <summary>
+    /// Vendor - specific part of DbLinq.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IVendor
+    {
+        /// <summary>
+        /// VendorName represents the database being handled by this vendor 'Oracle' or 'MySql'
+        /// </summary>
+        string VendorName { get; }
+
+        /// <summary>
+        /// Builds a connection string given the input parameters
+        /// </summary>
+        /// <param name="host">Server host</param>
+        /// <param name="databaseName">Database (or schema) name</param>
+        /// <param name="userName">Login user name</param>
+        /// <param name="password">Login password</param>
+        /// <returns></returns>
+        string BuildConnectionString(string host, string databaseName, string userName, string password);
+
+        /// <summary>
+        /// Pings requested DB, true is result is OK.
+        /// May throw a connection exception (DataContext.DatabaseExists() handles this)
+        /// </summary>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        bool Ping(DataContext dataContext);
+
+        /// <summary>
+        /// Component used to provide SQL Parts
+        /// </summary>
+        ISqlProvider SqlProvider { get; }
+
+        /// <summary>
+        /// Executes a stored procedure/function call
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="method"></param>
+        /// <param name="sqlParams"></param>
+        /// <returns></returns>
+        IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method, params object[] sqlParams);
+
+        /// <summary>
+        /// Performs bulk insert.
+        /// Please notice that PKs may not be updated
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="table"></param>
+        /// <param name="rows"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="transaction"></param>
+        void BulkInsert<T>(Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction) where T : class;
+
+        /// <summary>
+        /// required by DataContext ctor, which needs to create an IDbConnection, given an IVendor
+        /// </summary>
+        IDbConnection CreateDbConnection(string connectionString);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.Columns.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.Columns.cs
@@ -1,35 +1,35 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        protected abstract IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        protected abstract IList<IDataTableColumn> ReadColumns(IDbConnection connectionString, string databaseName);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.DataName.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.DataName.cs
@@ -1,36 +1,36 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        public class DataName : IDataName
-        {
-            public string Name { get; set; }
-            public string Schema { get; set; }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        public class DataName : IDataName
+        {
+            public string Name { get; set; }
+            public string Schema { get; set; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.DataTableColumn.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.DataTableColumn.cs
@@ -1,65 +1,65 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        public class DataTableColumn : DataType, IDataTableColumn
-        {
-            /// <summary>
-            /// The column name
-            /// </summary>
-            public string ColumnName { get; set; }
-
-            /// <summary>
-            /// The table to which belongs the column
-            /// </summary>
-            public string TableName { get; set; }
-
-            /// <summary>
-            /// The table schema to which belongs the column
-            /// </summary>
-            public string TableSchema { get; set; }
-
-            /// <summary>
-            /// Used to determine if the column is a primary key.
-            /// May be null, because some vendors don't show this as a column property (Oracle for example) but as table constraints
-            /// </summary>
-            public bool? PrimaryKey { get; set; }
-
-            /// <summary>
-            /// The value assigned when nothing is specified in insert.
-            /// Sometimes use to determine if a column is a sequence.
-            /// </summary>
-            public string DefaultValue { get; set; }
-
-            /// <summary>
-            /// Determines if the column value is generated when there is no value given in insert
-            /// </summary>
-            public bool? Generated { get; set; }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        public class DataTableColumn : DataType, IDataTableColumn
+        {
+            /// <summary>
+            /// The column name
+            /// </summary>
+            public string ColumnName { get; set; }
+
+            /// <summary>
+            /// The table to which belongs the column
+            /// </summary>
+            public string TableName { get; set; }
+
+            /// <summary>
+            /// The table schema to which belongs the column
+            /// </summary>
+            public string TableSchema { get; set; }
+
+            /// <summary>
+            /// Used to determine if the column is a primary key.
+            /// May be null, because some vendors don't show this as a column property (Oracle for example) but as table constraints
+            /// </summary>
+            public bool? PrimaryKey { get; set; }
+
+            /// <summary>
+            /// The value assigned when nothing is specified in insert.
+            /// Sometimes use to determine if a column is a sequence.
+            /// </summary>
+            public string DefaultValue { get; set; }
+
+            /// <summary>
+            /// Determines if the column value is generated when there is no value given in insert
+            /// </summary>
+            public bool? Generated { get; set; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.ForeignKey.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.ForeignKey.cs
@@ -1,152 +1,152 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using System.Text;
-using System.Collections.Generic;
-
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        /// <summary>
-        /// Loads the constraints.
-        /// </summary>
-        /// <param name="schema">The schema.</param>
-        /// <param name="schemaName">Name of the schema.</param>
-        /// <param name="conn">The conn.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <param name="names">The names.</param>
-        protected abstract void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names);
-
-        protected string BuildForeignKey(IDictionary<string, ColumnName> table, string key)
-        {
-            string[] keys = key.Split(',');
-            StringBuilder result = new StringBuilder();
-            foreach (string lookupKey in keys)
-            {
-                if (result.Length != 0)
-                    result.Append(',');
-                result.Append(table[lookupKey].PropertyName);
-            }
-
-            return result.ToString();
-        }
-
-        /// <summary>
-        /// Loads the foreign key.
-        /// </summary>
-        /// <param name="schema">The schema.</param>
-        /// <param name="table">The table.</param>
-        /// <param name="columnName">Name of the column.</param>
-        /// <param name="tableName">Name of the table.</param>
-        /// <param name="tableSchema">The table schema.</param>
-        /// <param name="referencedColumnName">Name of the referenced column.</param>
-        /// <param name="referencedTableName">Name of the referenced table.</param>
-        /// <param name="referencedTableSchema">The referenced table schema.</param>
-        /// <param name="constraintName">Name of the constraint.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <param name="names">The names.</param>
-        protected virtual void LoadForeignKey(Database schema, Table table, string columnName, string tableName, string tableSchema,
-            string referencedColumnName, string referencedTableName, string referencedTableSchema,
-            string constraintName,
-            NameFormat nameFormat, Names names)
-        {
-            var foreignKey = BuildForeignKey(names.ColumnsNames[tableName], columnName);
-            var reverseForeignKey = BuildForeignKey(names.ColumnsNames[referencedTableName], referencedColumnName);
-
-            var associationName = CreateAssociationName(tableName, tableSchema,
-                referencedTableName, referencedTableSchema, constraintName, foreignKey, nameFormat);
-
-            //both parent and child table get an [Association]
-            var assoc = new Association();
-            assoc.IsForeignKey = true;
-            assoc.Name = constraintName;
-            assoc.Type = null;
-            assoc.ThisKey = foreignKey;
-            assoc.OtherKey = reverseForeignKey;
-            assoc.Member = associationName.ManyToOneMemberName;
-            assoc.CardinalitySpecified = false;
-            // TODO: generate assoc.Cardinality?
-            table.Type.Associations.Add(assoc);
-
-            //and insert the reverse association:
-            var reverseAssociation = new Association();
-            reverseAssociation.Name = constraintName;
-            reverseAssociation.Type = table.Type.Name;
-            reverseAssociation.Member = associationName.OneToManyMemberName;
-            reverseAssociation.CardinalitySpecified = false;
-            // TODO: generate reverseAssociation.Cardinality?
-            reverseAssociation.ThisKey = reverseForeignKey;
-            reverseAssociation.OtherKey = foreignKey;
-            reverseAssociation.DeleteRule = "NO ACTION";
-
-            string referencedFullDbName = GetFullDbName(referencedTableName, referencedTableSchema);
-            var referencedTable = schema.Tables.FirstOrDefault(t => referencedFullDbName == t.Name);
-            if (referencedTable == null)
-            {
-                //try case-insensitive match 
-                //reason: MySql's Key_Column_Usage table contains both 'Northwind' and 'northwind'
-                referencedTable = schema.Tables.FirstOrDefault(t => referencedFullDbName.ToLower() == t.Name.ToLower());
-            }
-
-            if (referencedTable == null)
-            {
-                ReportForeignKeyError(schema, referencedFullDbName);
-            }
-            else
-            {
-                referencedTable.Type.Associations.Add(reverseAssociation);
-                assoc.Type = referencedTable.Type.Name;
-            }
-        }
-
-        /// <summary>
-        /// Reports a foreign key error.
-        /// </summary>
-        /// <param name="schema">The schema.</param>
-        /// <param name="referencedTableFull">The referenced table full.</param>
-        private void ReportForeignKeyError(Database schema, string referencedTableFull)
-        {
-            var tablesMap = schema.Tables.ToDictionary(t => t.Name.ToLower());
-            var referencedTableFullL = referencedTableFull.ToLower();
-
-            string msg = "ERROR L91: parent table not found: " + referencedTableFull;
-            Table matchedTable;
-            if (tablesMap.TryGetValue(referencedTableFullL, out matchedTable))
-            {
-                //case problems arise from various reasons,
-                //e.g. different capitalization on WIndows vs Linux,
-                //bugs in DbLinq etc
-                msg += " - however, schema lists a table spelled as " + matchedTable.Name;
-            }
-            WriteErrorLine(msg);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using System.Text;
+using System.Collections.Generic;
+
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        /// <summary>
+        /// Loads the constraints.
+        /// </summary>
+        /// <param name="schema">The schema.</param>
+        /// <param name="schemaName">Name of the schema.</param>
+        /// <param name="conn">The conn.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <param name="names">The names.</param>
+        protected abstract void LoadConstraints(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat, Names names);
+
+        protected string BuildForeignKey(IDictionary<string, ColumnName> table, string key)
+        {
+            string[] keys = key.Split(',');
+            StringBuilder result = new StringBuilder();
+            foreach (string lookupKey in keys)
+            {
+                if (result.Length != 0)
+                    result.Append(',');
+                result.Append(table[lookupKey].PropertyName);
+            }
+
+            return result.ToString();
+        }
+
+        /// <summary>
+        /// Loads the foreign key.
+        /// </summary>
+        /// <param name="schema">The schema.</param>
+        /// <param name="table">The table.</param>
+        /// <param name="columnName">Name of the column.</param>
+        /// <param name="tableName">Name of the table.</param>
+        /// <param name="tableSchema">The table schema.</param>
+        /// <param name="referencedColumnName">Name of the referenced column.</param>
+        /// <param name="referencedTableName">Name of the referenced table.</param>
+        /// <param name="referencedTableSchema">The referenced table schema.</param>
+        /// <param name="constraintName">Name of the constraint.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <param name="names">The names.</param>
+        protected virtual void LoadForeignKey(Database schema, Table table, string columnName, string tableName, string tableSchema,
+            string referencedColumnName, string referencedTableName, string referencedTableSchema,
+            string constraintName,
+            NameFormat nameFormat, Names names)
+        {
+            var foreignKey = BuildForeignKey(names.ColumnsNames[tableName], columnName);
+            var reverseForeignKey = BuildForeignKey(names.ColumnsNames[referencedTableName], referencedColumnName);
+
+            var associationName = CreateAssociationName(tableName, tableSchema,
+                referencedTableName, referencedTableSchema, constraintName, foreignKey, nameFormat);
+
+            //both parent and child table get an [Association]
+            var assoc = new Association();
+            assoc.IsForeignKey = true;
+            assoc.Name = constraintName;
+            assoc.Type = null;
+            assoc.ThisKey = foreignKey;
+            assoc.OtherKey = reverseForeignKey;
+            assoc.Member = associationName.ManyToOneMemberName;
+            assoc.CardinalitySpecified = false;
+            // TODO: generate assoc.Cardinality?
+            table.Type.Associations.Add(assoc);
+
+            //and insert the reverse association:
+            var reverseAssociation = new Association();
+            reverseAssociation.Name = constraintName;
+            reverseAssociation.Type = table.Type.Name;
+            reverseAssociation.Member = associationName.OneToManyMemberName;
+            reverseAssociation.CardinalitySpecified = false;
+            // TODO: generate reverseAssociation.Cardinality?
+            reverseAssociation.ThisKey = reverseForeignKey;
+            reverseAssociation.OtherKey = foreignKey;
+            reverseAssociation.DeleteRule = "NO ACTION";
+
+            string referencedFullDbName = GetFullDbName(referencedTableName, referencedTableSchema);
+            var referencedTable = schema.Tables.FirstOrDefault(t => referencedFullDbName == t.Name);
+            if (referencedTable == null)
+            {
+                //try case-insensitive match 
+                //reason: MySql's Key_Column_Usage table contains both 'Northwind' and 'northwind'
+                referencedTable = schema.Tables.FirstOrDefault(t => referencedFullDbName.ToLower() == t.Name.ToLower());
+            }
+
+            if (referencedTable == null)
+            {
+                ReportForeignKeyError(schema, referencedFullDbName);
+            }
+            else
+            {
+                referencedTable.Type.Associations.Add(reverseAssociation);
+                assoc.Type = referencedTable.Type.Name;
+            }
+        }
+
+        /// <summary>
+        /// Reports a foreign key error.
+        /// </summary>
+        /// <param name="schema">The schema.</param>
+        /// <param name="referencedTableFull">The referenced table full.</param>
+        private void ReportForeignKeyError(Database schema, string referencedTableFull)
+        {
+            var tablesMap = schema.Tables.ToDictionary(t => t.Name.ToLower());
+            var referencedTableFullL = referencedTableFull.ToLower();
+
+            string msg = "ERROR L91: parent table not found: " + referencedTableFull;
+            Table matchedTable;
+            if (tablesMap.TryGetValue(referencedTableFullL, out matchedTable))
+            {
+                //case problems arise from various reasons,
+                //e.g. different capitalization on WIndows vs Linux,
+                //bugs in DbLinq etc
+                msg += " - however, schema lists a table spelled as " + matchedTable.Name;
+            }
+            WriteErrorLine(msg);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.Name.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.Name.cs
@@ -1,177 +1,177 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        /// <summary>
-        /// Gets the primary keys.
-        /// </summary>
-        /// <param name="table">The table.</param>
-        /// <returns></returns>
-        protected static List<string> GetPrimaryKeys(Table table)
-        {
-            return (from c in table.Type.Columns where c.IsPrimaryKey select c.Name).ToList();
-        }
-
-        /// <summary>
-        /// Checks for problematic names on columns
-        /// We currently have 1 case, where column is equal to table name
-        /// </summary>
-        /// <param name="schema"></param>
-        protected virtual void CheckColumnsName(Database schema)
-        {
-            foreach (var table in schema.Tables)
-            {
-                foreach (var column in table.Type.Columns)
-                {
-                    // THE case
-                    if (column.Member == table.Type.Name)
-                    {
-                        // now, we try to append 1, then 2, etc.
-                        var appendValue = 0;
-                        for (; ; )
-                        {
-                            var newColumnMember = column.Member + ++appendValue;
-                            if (!table.Type.Columns.Any(c => c.Member == newColumnMember))
-                            {
-                                column.Member = newColumnMember;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Checks for name conflicts, given lambdas to correct on conflicts
-        /// </summary>
-        /// <param name="schema"></param>
-        /// <param name="tableNamedAssociationRenamer"></param>
-        /// <param name="columnNamedAssociationRenamer"></param>
-        protected virtual void CheckConstraintsName(Database schema,
-                                      Func<Association, string> tableNamedAssociationRenamer,
-                                      Func<Association, string> columnNamedAssociationRenamer)
-        {
-            foreach (var table in schema.Tables)
-            {
-                foreach (var association in table.Type.Associations)
-                {
-                    var localAssociation = association;
-                    if (association.Member == table.Type.Name)
-                        association.Member = tableNamedAssociationRenamer(association);
-                    else if ((from column in table.Type.Columns where column.Member == localAssociation.Member select column).FirstOrDefault() != null)
-                    {
-                        association.Member = columnNamedAssociationRenamer(association);
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Checks for name conflicts
-        /// </summary>
-        /// <param name="schema"></param>
-        protected virtual void CheckConstraintsName(Database schema)
-        {
-            CheckConstraintsName(schema,
-                       association => association.ThisKey.Replace(',', '_') + association.Member,
-                       association => association.Member + association.Type);
-        }
-
-        /// <summary>
-        /// Generates storage fields, given a formatting method
-        /// </summary>
-        /// <param name="schema"></param>
-        /// <param name="storageGenerator"></param>
-        protected virtual void GenerateStorageAndMemberFields(Database schema, Func<string, string> storageGenerator)
-        {
-            foreach (var table in schema.Tables)
-            {
-                foreach (var column in table.Type.Columns)
-                {
-                    column.Storage = storageGenerator(column.Member);
-                }
-
-                HashSet<string> storageFields = new HashSet<string>();
-                HashSet<string> memberFields = new HashSet<string>();
-                foreach (var column in table.Type.Columns)
-                {
-                    storageFields.Add(column.Storage);
-                    memberFields.Add(column.Member);
-                }
-
-                foreach (var association in table.Type.Associations)
-                {
-                    association.Storage = storageGenerator(association.Member);
-
-                    //Associations may contain the same foreign key more than once - add a number suffix to duplicates
-                    for (var suffix = 0; ; suffix++)
-                    {
-                        var name = suffix == 0 ? association.Storage : association.Storage + suffix;
-                        if (storageFields.Contains(name)) continue;
-                        association.Storage = name;
-                        storageFields.Add(name);
-                        break;
-                    }
-
-                    for (var suffix = 0; ; suffix++)
-                    {
-                        var name = suffix == 0 ? association.Member : association.Member + suffix;
-                        if (memberFields.Contains(name)) continue;
-                        association.Member = name;
-                        memberFields.Add(name);
-                        break;
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Generates all storage fields
-        /// </summary>
-        /// <param name="schema"></param>
-        protected virtual void GenerateStorageAndMemberFields(Database schema)
-        {
-            GenerateStorageAndMemberFields(schema, delegate(string name)
-                                              {
-                                                  //jgm 2008June: pre-pended underscore to have same storage format as MS
-                                                  // TODO: add an option for this behavior
-                                                  var storage = "_" + NameFormatter.Format(name, Case.camelCase);
-                                                  if (storage == name)
-                                                      storage = "_" + storage;
-                                                  return storage;
-                                              });
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        /// <summary>
+        /// Gets the primary keys.
+        /// </summary>
+        /// <param name="table">The table.</param>
+        /// <returns></returns>
+        protected static List<string> GetPrimaryKeys(Table table)
+        {
+            return (from c in table.Type.Columns where c.IsPrimaryKey select c.Name).ToList();
+        }
+
+        /// <summary>
+        /// Checks for problematic names on columns
+        /// We currently have 1 case, where column is equal to table name
+        /// </summary>
+        /// <param name="schema"></param>
+        protected virtual void CheckColumnsName(Database schema)
+        {
+            foreach (var table in schema.Tables)
+            {
+                foreach (var column in table.Type.Columns)
+                {
+                    // THE case
+                    if (column.Member == table.Type.Name)
+                    {
+                        // now, we try to append 1, then 2, etc.
+                        var appendValue = 0;
+                        for (; ; )
+                        {
+                            var newColumnMember = column.Member + ++appendValue;
+                            if (!table.Type.Columns.Any(c => c.Member == newColumnMember))
+                            {
+                                column.Member = newColumnMember;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Checks for name conflicts, given lambdas to correct on conflicts
+        /// </summary>
+        /// <param name="schema"></param>
+        /// <param name="tableNamedAssociationRenamer"></param>
+        /// <param name="columnNamedAssociationRenamer"></param>
+        protected virtual void CheckConstraintsName(Database schema,
+                                      Func<Association, string> tableNamedAssociationRenamer,
+                                      Func<Association, string> columnNamedAssociationRenamer)
+        {
+            foreach (var table in schema.Tables)
+            {
+                foreach (var association in table.Type.Associations)
+                {
+                    var localAssociation = association;
+                    if (association.Member == table.Type.Name)
+                        association.Member = tableNamedAssociationRenamer(association);
+                    else if ((from column in table.Type.Columns where column.Member == localAssociation.Member select column).FirstOrDefault() != null)
+                    {
+                        association.Member = columnNamedAssociationRenamer(association);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Checks for name conflicts
+        /// </summary>
+        /// <param name="schema"></param>
+        protected virtual void CheckConstraintsName(Database schema)
+        {
+            CheckConstraintsName(schema,
+                       association => association.ThisKey.Replace(',', '_') + association.Member,
+                       association => association.Member + association.Type);
+        }
+
+        /// <summary>
+        /// Generates storage fields, given a formatting method
+        /// </summary>
+        /// <param name="schema"></param>
+        /// <param name="storageGenerator"></param>
+        protected virtual void GenerateStorageAndMemberFields(Database schema, Func<string, string> storageGenerator)
+        {
+            foreach (var table in schema.Tables)
+            {
+                foreach (var column in table.Type.Columns)
+                {
+                    column.Storage = storageGenerator(column.Member);
+                }
+
+                HashSet<string> storageFields = new HashSet<string>();
+                HashSet<string> memberFields = new HashSet<string>();
+                foreach (var column in table.Type.Columns)
+                {
+                    storageFields.Add(column.Storage);
+                    memberFields.Add(column.Member);
+                }
+
+                foreach (var association in table.Type.Associations)
+                {
+                    association.Storage = storageGenerator(association.Member);
+
+                    //Associations may contain the same foreign key more than once - add a number suffix to duplicates
+                    for (var suffix = 0; ; suffix++)
+                    {
+                        var name = suffix == 0 ? association.Storage : association.Storage + suffix;
+                        if (storageFields.Contains(name)) continue;
+                        association.Storage = name;
+                        storageFields.Add(name);
+                        break;
+                    }
+
+                    for (var suffix = 0; ; suffix++)
+                    {
+                        var name = suffix == 0 ? association.Member : association.Member + suffix;
+                        if (memberFields.Contains(name)) continue;
+                        association.Member = name;
+                        memberFields.Add(name);
+                        break;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Generates all storage fields
+        /// </summary>
+        /// <param name="schema"></param>
+        protected virtual void GenerateStorageAndMemberFields(Database schema)
+        {
+            GenerateStorageAndMemberFields(schema, delegate(string name)
+                                              {
+                                                  //jgm 2008June: pre-pended underscore to have same storage format as MS
+                                                  // TODO: add an option for this behavior
+                                                  var storage = "_" + NameFormatter.Format(name, Case.camelCase);
+                                                  if (storage == name)
+                                                      storage = "_" + storage;
+                                                  return storage;
+                                              });
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.StoredProcedures.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.StoredProcedures.cs
@@ -1,46 +1,46 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Data;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        /// <summary>
-        /// Loads the stored procedures.
-        /// </summary>
-        /// <param name="schema">The schema.</param>
-        /// <param name="schemaName">Name of the schema.</param>
-        /// <param name="conn">The conn.</param>
-        /// <param name="nameFormat">The name format.</param>
-        protected virtual void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
-        {
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Data;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        /// <summary>
+        /// Loads the stored procedures.
+        /// </summary>
+        /// <param name="schema">The schema.</param>
+        /// <param name="schemaName">Name of the schema.</param>
+        /// <param name="conn">The conn.</param>
+        /// <param name="nameFormat">The name format.</param>
+        protected virtual void LoadStoredProcedures(Database schema, SchemaName schemaName, IDbConnection conn, NameFormat nameFormat)
+        {
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.Tables.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.Tables.cs
@@ -1,53 +1,53 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Data;
-using DbLinq.Util;
-
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        /// <summary>
-        /// Reads the data name and schema.
-        /// </summary>
-        /// <param name="dataRecord">The data record.</param>
-        /// <returns></returns>
-        protected virtual IDataName ReadDataNameAndSchema(IDataRecord dataRecord)
-        {
-            var dataName = new DataName { Name = dataRecord.GetAsString(0), Schema = dataRecord.GetAsString(1) };
-            return dataName;
-        }
-
-        /// <summary>
-        /// Reads the tables.
-        /// </summary>
-        /// <param name="connectionString">The connection string.</param>
-        /// <param name="databaseName">Name of the database.</param>
-        /// <returns></returns>
-        public abstract IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Data;
+using DbLinq.Util;
+
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        /// <summary>
+        /// Reads the data name and schema.
+        /// </summary>
+        /// <param name="dataRecord">The data record.</param>
+        /// <returns></returns>
+        protected virtual IDataName ReadDataNameAndSchema(IDataRecord dataRecord)
+        {
+            var dataName = new DataName { Name = dataRecord.GetAsString(0), Schema = dataRecord.GetAsString(1) };
+            return dataName;
+        }
+
+        /// <summary>
+        /// Reads the tables.
+        /// </summary>
+        /// <param name="connectionString">The connection string.</param>
+        /// <param name="databaseName">Name of the database.</param>
+        /// <returns></returns>
+        public abstract IList<IDataName> ReadTables(IDbConnection connectionString, string databaseName);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.TypeMapping.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.TypeMapping.cs
@@ -1,467 +1,467 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Text.RegularExpressions;
-
-namespace DbLinq.Vendor.Implementation
-{
-    partial class SchemaLoader
-    {
-        /// <summary>
-        /// This class is used as fallback when no matching type was found.
-        /// If we have the case, then something is missing from DbMetal
-        /// </summary>
-        internal class UnknownType
-        {
-        }
-
-        /// <summary>
-        /// Default IDataType implementation (see IDataType for details)
-        /// </summary>
-        public class DataType : IDataType
-        {
-            public virtual string SqlType { get; set; }
-            public virtual string ManagedType { get; set; }
-            public virtual bool Nullable { get; set; }
-            public virtual long? Length { get; set; }
-            public virtual int? Precision { get; set; }
-            public virtual int? Scale { get; set; }
-            public virtual bool? Unsigned { get; set; }
-            public string FullType { get; set; }
-        }
-
-        protected virtual Type MapDbType(string columnName, IDataType dataType)
-        {
-            if (dataType == null)
-                throw new ArgumentNullException("dataType");
-            if (dataType.ManagedType != null)
-                return Type.GetType(dataType.ManagedType, true);
-
-            string dataTypeL = dataType.SqlType.ToLowerInvariant();
-
-            if (columnName != null && columnName.ToLower().Contains("guid"))
-            {
-                bool correctTypeAndLen =
-                    ((dataTypeL == "char" || dataTypeL == "varchar") && dataType.Length == 36)
-                    || ((dataTypeL == "binary") && dataType.Length == 16);
-
-                if (correctTypeAndLen)
-                {
-                    Console.WriteLine("experimental support for guid--");
-                    return typeof(Guid);
-                }
-            }
-
-            switch (dataTypeL)
-            {
-            // string
-            case "c":
-            case "char":
-            case "character":
-            case "character varying":
-            case "inet":
-            case "long":
-            case "longtext":
-            case "long varchar":
-            case "mediumtext":
-            case "nchar":
-            case "ntext":
-            case "nvarchar":
-            case "nvarchar2":
-            case "string":
-            case "text":
-            case "varchar":
-            case "varchar2":
-            case "clob":    // oracle type
-            case "nclob":   // oracle type
-            case "rowid":   // oracle type
-            case "urowid":  // oracle type
-            case "tinytext": // mysql type
-                return typeof(String);
-
-            // bool
-            case "bit":
-            case "bool":
-            case "boolean":
-                return typeof(Boolean);
-
-            // int8
-            case "tinyint":
-                if (dataType.Length == 1)
-                    return typeof(Boolean);
-                // tinyint is supposed to be signed
-                // but we can have explicit sign
-                if (dataType.Unsigned ?? false)
-                    return typeof(Byte);
-                // default case, unsigned
-                return typeof(SByte);
-
-            // int16
-            case "short":
-            case "smallint":
-                if (dataType.Unsigned ?? false)
-                    return typeof(UInt16);
-                return typeof(Int16);
-
-            // int32
-            case "int":
-            case "integer":
-            case "mediumint":
-                if (dataType.Unsigned ?? false)
-                    return typeof(UInt32);
-                return typeof(Int32);
-
-            // int64
-            case "bigint":
-                return typeof(Int64);
-
-            // single
-            case "float":
-            case "float4":
-            case "real":
-            case "binary_float":   // oracle type
-            case "unsigned float": // mysql type
-            case "float unsigned": // mysql type
-                return typeof(Single);
-
-            // double
-            case "double":
-            case "double precision":
-            case "binary_double":  // oracle type
-            case "unsigned double":// mysql type
-            case "double unsigned":// mysql type
-                return typeof(Double);
-
-            // decimal
-            case "decimal":
-            case "money":
-            case "numeric":
-                return typeof(Decimal);
-            case "number": // special oracle type
-                if (dataType.Precision.HasValue && (dataType.Scale ?? 0) == 0)
-                {
-                    if (dataType.Precision.Value == 1)
-                        return typeof(Boolean);
-                    if (dataType.Precision.Value <= 4)
-                        return typeof(Int16);
-                    if (dataType.Precision.Value <= 9)
-                        return typeof(Int32);
-                    if (dataType.Precision.Value <= 19)
-                        return typeof(Int64);
-                }
-                return typeof(Decimal);
-
-            // time interval
-            case "interval":
-                return typeof(TimeSpan);
-
-            //enum
-            case "enum":
-            case "set":
-                return MapEnumDbType(dataType);
-
-            // date
-            case "date":
-            case "datetime":
-            case "ingresdate":
-            case "timestamp":
-            case "timestamp without time zone":
-            case "timestamp with time zone":
-            case "time":
-            case "time without time zone": //reported by twain_bu...@msn.com,
-            case "time with time zone":
-                return typeof(DateTime);
-
-            // byte[]
-            case "binary":
-            case "blob":
-            case "bytea":
-            case "byte varying":
-            case "image":
-            case "longblob":
-            case "long byte":
-            case "oid":
-            case "sytea":
-            case "mediumblob":
-            case "tinyblob":
-            case "raw":       // oracle type
-            case "long raw":  // oracle type
-            case "varbinary":
-                return typeof(Byte[]);
-
-            // PostgreSQL, for example has an uuid type that can be mapped as a Guid
-            case "uuid":
-                return typeof(Guid);
-
-            case "void":
-                return null;
-
-            // if we fall to this case, we must handle the type
-            default:
-                throw new ArgumentException(
-                    string.Format("Don't know how to convert the SQL type '{0}' into a managed type.", dataTypeL),
-                    "dataType");
-            }
-        }
-
-        protected class EnumType : Type
-        {
-            internal EnumType()
-            {
-                EnumValues = new Dictionary<string, int>();
-            }
-
-            public string EnumName { get; set; }
-
-            public IDictionary<string, int> EnumValues;
-
-            #region Type overrides - the ones who make sense
-
-            public override string Name
-            {
-                get { return EnumName; }
-            }
-
-            public override Type BaseType
-            {
-                get { return typeof(Enum); }
-            }
-
-            public override string FullName
-            {
-                get { return Name; } // this is a dynamic type without any qualification (namespace or assembly)
-            }
-
-            protected override bool IsArrayImpl()
-            {
-                return false;
-            }
-
-            protected override bool IsByRefImpl()
-            {
-                return false;
-            }
-
-            protected override bool IsCOMObjectImpl()
-            {
-                return false;
-            }
-
-            protected override bool IsPointerImpl()
-            {
-                return false;
-            }
-
-            protected override bool IsPrimitiveImpl()
-            {
-                return true;
-            }
-
-            #endregion
-
-            #region Type overrides - the ones we don't care about
-            public override object[] GetCustomAttributes(Type attributeType, bool inherit)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override object[] GetCustomAttributes(bool inherit)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override bool IsDefined(Type attributeType, bool inherit)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Assembly Assembly
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            public override string AssemblyQualifiedName
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            protected override TypeAttributes GetAttributeFlagsImpl()
-            {
-                throw new NotImplementedException();
-            }
-
-            protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder,
-                                                                  CallingConventions callConvention, Type[] types,
-                                                                  ParameterModifier[] modifiers)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Type GetElementType()
-            {
-                throw new NotImplementedException();
-            }
-
-            public override EventInfo GetEvent(string name, BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override EventInfo[] GetEvents(BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override FieldInfo GetField(string name, BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override FieldInfo[] GetFields(BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Type GetInterface(string name, bool ignoreCase)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Type[] GetInterfaces()
-            {
-                throw new NotImplementedException();
-            }
-
-            public override MemberInfo[] GetMembers(BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            protected override MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder,
-                                                        CallingConventions callConvention, Type[] types,
-                                                        ParameterModifier[] modifiers)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override MethodInfo[] GetMethods(BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Type GetNestedType(string name, BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Type[] GetNestedTypes(BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override PropertyInfo[] GetProperties(BindingFlags bindingAttr)
-            {
-                throw new NotImplementedException();
-            }
-
-            protected override PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder,
-                                                            Type returnType, Type[] types, ParameterModifier[] modifiers)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Guid GUID
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            protected override bool HasElementTypeImpl()
-            {
-                throw new NotImplementedException();
-            }
-
-            public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target,
-                                                object[] args, ParameterModifier[] modifiers, CultureInfo culture,
-                                                string[] namedParameters)
-            {
-                throw new NotImplementedException();
-            }
-
-            public override Module Module
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            public override string Namespace
-            {
-                get { throw new NotImplementedException(); }
-            }
-
-            public override Type UnderlyingSystemType
-            {
-                get { throw new NotImplementedException(); }
-            }
-            #endregion
-        }
-
-        protected static Regex DefaultEnumDefinitionEx = new Regex(@"\s*(enum|set)\s*\((?<values>.*)\s*\)\s*", RegexOptions.Compiled);
-        protected static Regex EnumValuesEx = new Regex(@"\'(?<value>\w*)\'\s*,?\s*", RegexOptions.Compiled);
-
-        /// <summary>
-        /// Maps a type to enum type, if possible.
-        /// </summary>
-        /// <param name="dataType">Type of the data.</param>
-        /// <returns></returns>
-        protected virtual EnumType MapEnumDbType(IDataType dataType)
-        {
-            var enumType = new EnumType();
-            // MySQL represents enums as follows:
-            // enum('value1','value2')
-            Match outerMatch = DefaultEnumDefinitionEx.Match(dataType.FullType);
-            if (outerMatch.Success)
-            {
-                string values = outerMatch.Groups["values"].Value;
-                var innerMatches = EnumValuesEx.Matches(values);
-                int currentValue = 1;
-                foreach (Match innerMatch in innerMatches)
-                {
-                    var value = innerMatch.Groups["value"].Value;
-                    enumType.EnumValues[value] = currentValue++;
-                }
-            }
-            return enumType;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Reflection;
+using System.Text.RegularExpressions;
+
+namespace DbLinq.Vendor.Implementation
+{
+    partial class SchemaLoader
+    {
+        /// <summary>
+        /// This class is used as fallback when no matching type was found.
+        /// If we have the case, then something is missing from DbMetal
+        /// </summary>
+        internal class UnknownType
+        {
+        }
+
+        /// <summary>
+        /// Default IDataType implementation (see IDataType for details)
+        /// </summary>
+        public class DataType : IDataType
+        {
+            public virtual string SqlType { get; set; }
+            public virtual string ManagedType { get; set; }
+            public virtual bool Nullable { get; set; }
+            public virtual long? Length { get; set; }
+            public virtual int? Precision { get; set; }
+            public virtual int? Scale { get; set; }
+            public virtual bool? Unsigned { get; set; }
+            public string FullType { get; set; }
+        }
+
+        protected virtual Type MapDbType(string columnName, IDataType dataType)
+        {
+            if (dataType == null)
+                throw new ArgumentNullException("dataType");
+            if (dataType.ManagedType != null)
+                return Type.GetType(dataType.ManagedType, true);
+
+            string dataTypeL = dataType.SqlType.ToLowerInvariant();
+
+            if (columnName != null && columnName.ToLower().Contains("guid"))
+            {
+                bool correctTypeAndLen =
+                    ((dataTypeL == "char" || dataTypeL == "varchar") && dataType.Length == 36)
+                    || ((dataTypeL == "binary") && dataType.Length == 16);
+
+                if (correctTypeAndLen)
+                {
+                    Console.WriteLine("experimental support for guid--");
+                    return typeof(Guid);
+                }
+            }
+
+            switch (dataTypeL)
+            {
+            // string
+            case "c":
+            case "char":
+            case "character":
+            case "character varying":
+            case "inet":
+            case "long":
+            case "longtext":
+            case "long varchar":
+            case "mediumtext":
+            case "nchar":
+            case "ntext":
+            case "nvarchar":
+            case "nvarchar2":
+            case "string":
+            case "text":
+            case "varchar":
+            case "varchar2":
+            case "clob":    // oracle type
+            case "nclob":   // oracle type
+            case "rowid":   // oracle type
+            case "urowid":  // oracle type
+            case "tinytext": // mysql type
+                return typeof(String);
+
+            // bool
+            case "bit":
+            case "bool":
+            case "boolean":
+                return typeof(Boolean);
+
+            // int8
+            case "tinyint":
+                if (dataType.Length == 1)
+                    return typeof(Boolean);
+                // tinyint is supposed to be signed
+                // but we can have explicit sign
+                if (dataType.Unsigned ?? false)
+                    return typeof(Byte);
+                // default case, unsigned
+                return typeof(SByte);
+
+            // int16
+            case "short":
+            case "smallint":
+                if (dataType.Unsigned ?? false)
+                    return typeof(UInt16);
+                return typeof(Int16);
+
+            // int32
+            case "int":
+            case "integer":
+            case "mediumint":
+                if (dataType.Unsigned ?? false)
+                    return typeof(UInt32);
+                return typeof(Int32);
+
+            // int64
+            case "bigint":
+                return typeof(Int64);
+
+            // single
+            case "float":
+            case "float4":
+            case "real":
+            case "binary_float":   // oracle type
+            case "unsigned float": // mysql type
+            case "float unsigned": // mysql type
+                return typeof(Single);
+
+            // double
+            case "double":
+            case "double precision":
+            case "binary_double":  // oracle type
+            case "unsigned double":// mysql type
+            case "double unsigned":// mysql type
+                return typeof(Double);
+
+            // decimal
+            case "decimal":
+            case "money":
+            case "numeric":
+                return typeof(Decimal);
+            case "number": // special oracle type
+                if (dataType.Precision.HasValue && (dataType.Scale ?? 0) == 0)
+                {
+                    if (dataType.Precision.Value == 1)
+                        return typeof(Boolean);
+                    if (dataType.Precision.Value <= 4)
+                        return typeof(Int16);
+                    if (dataType.Precision.Value <= 9)
+                        return typeof(Int32);
+                    if (dataType.Precision.Value <= 19)
+                        return typeof(Int64);
+                }
+                return typeof(Decimal);
+
+            // time interval
+            case "interval":
+                return typeof(TimeSpan);
+
+            //enum
+            case "enum":
+            case "set":
+                return MapEnumDbType(dataType);
+
+            // date
+            case "date":
+            case "datetime":
+            case "ingresdate":
+            case "timestamp":
+            case "timestamp without time zone":
+            case "timestamp with time zone":
+            case "time":
+            case "time without time zone": //reported by twain_bu...@msn.com,
+            case "time with time zone":
+                return typeof(DateTime);
+
+            // byte[]
+            case "binary":
+            case "blob":
+            case "bytea":
+            case "byte varying":
+            case "image":
+            case "longblob":
+            case "long byte":
+            case "oid":
+            case "sytea":
+            case "mediumblob":
+            case "tinyblob":
+            case "raw":       // oracle type
+            case "long raw":  // oracle type
+            case "varbinary":
+                return typeof(Byte[]);
+
+            // PostgreSQL, for example has an uuid type that can be mapped as a Guid
+            case "uuid":
+                return typeof(Guid);
+
+            case "void":
+                return null;
+
+            // if we fall to this case, we must handle the type
+            default:
+                throw new ArgumentException(
+                    string.Format("Don't know how to convert the SQL type '{0}' into a managed type.", dataTypeL),
+                    "dataType");
+            }
+        }
+
+        protected class EnumType : Type
+        {
+            internal EnumType()
+            {
+                EnumValues = new Dictionary<string, int>();
+            }
+
+            public string EnumName { get; set; }
+
+            public IDictionary<string, int> EnumValues;
+
+            #region Type overrides - the ones who make sense
+
+            public override string Name
+            {
+                get { return EnumName; }
+            }
+
+            public override Type BaseType
+            {
+                get { return typeof(Enum); }
+            }
+
+            public override string FullName
+            {
+                get { return Name; } // this is a dynamic type without any qualification (namespace or assembly)
+            }
+
+            protected override bool IsArrayImpl()
+            {
+                return false;
+            }
+
+            protected override bool IsByRefImpl()
+            {
+                return false;
+            }
+
+            protected override bool IsCOMObjectImpl()
+            {
+                return false;
+            }
+
+            protected override bool IsPointerImpl()
+            {
+                return false;
+            }
+
+            protected override bool IsPrimitiveImpl()
+            {
+                return true;
+            }
+
+            #endregion
+
+            #region Type overrides - the ones we don't care about
+            public override object[] GetCustomAttributes(Type attributeType, bool inherit)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override object[] GetCustomAttributes(bool inherit)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override bool IsDefined(Type attributeType, bool inherit)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Assembly Assembly
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            public override string AssemblyQualifiedName
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            protected override TypeAttributes GetAttributeFlagsImpl()
+            {
+                throw new NotImplementedException();
+            }
+
+            protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder,
+                                                                  CallingConventions callConvention, Type[] types,
+                                                                  ParameterModifier[] modifiers)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Type GetElementType()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override EventInfo GetEvent(string name, BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override EventInfo[] GetEvents(BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override FieldInfo GetField(string name, BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override FieldInfo[] GetFields(BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Type GetInterface(string name, bool ignoreCase)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Type[] GetInterfaces()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override MemberInfo[] GetMembers(BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            protected override MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder,
+                                                        CallingConventions callConvention, Type[] types,
+                                                        ParameterModifier[] modifiers)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override MethodInfo[] GetMethods(BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Type GetNestedType(string name, BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Type[] GetNestedTypes(BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override PropertyInfo[] GetProperties(BindingFlags bindingAttr)
+            {
+                throw new NotImplementedException();
+            }
+
+            protected override PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder,
+                                                            Type returnType, Type[] types, ParameterModifier[] modifiers)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Guid GUID
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            protected override bool HasElementTypeImpl()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target,
+                                                object[] args, ParameterModifier[] modifiers, CultureInfo culture,
+                                                string[] namedParameters)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override Module Module
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            public override string Namespace
+            {
+                get { throw new NotImplementedException(); }
+            }
+
+            public override Type UnderlyingSystemType
+            {
+                get { throw new NotImplementedException(); }
+            }
+            #endregion
+        }
+
+        protected static Regex DefaultEnumDefinitionEx = new Regex(@"\s*(enum|set)\s*\((?<values>.*)\s*\)\s*", RegexOptions.Compiled);
+        protected static Regex EnumValuesEx = new Regex(@"\'(?<value>\w*)\'\s*,?\s*", RegexOptions.Compiled);
+
+        /// <summary>
+        /// Maps a type to enum type, if possible.
+        /// </summary>
+        /// <param name="dataType">Type of the data.</param>
+        /// <returns></returns>
+        protected virtual EnumType MapEnumDbType(IDataType dataType)
+        {
+            var enumType = new EnumType();
+            // MySQL represents enums as follows:
+            // enum('value1','value2')
+            Match outerMatch = DefaultEnumDefinitionEx.Match(dataType.FullType);
+            if (outerMatch.Success)
+            {
+                string values = outerMatch.Groups["values"].Value;
+                var innerMatches = EnumValuesEx.Matches(values);
+                int currentValue = 1;
+                foreach (Match innerMatch in innerMatches)
+                {
+                    var value = innerMatch.Groups["value"].Value;
+                    enumType.EnumValues[value] = currentValue++;
+                }
+            }
+            return enumType;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SchemaLoader.cs
@@ -1,453 +1,453 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.IO;
-using System.Linq;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using DbLinq.Factory;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using System.Text.RegularExpressions;
-
-namespace DbLinq.Vendor.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    abstract partial class SchemaLoader : ISchemaLoader
-    {
-        /// <summary>
-        /// Underlying vendor
-        /// </summary>
-        /// <value></value>
-        public abstract IVendor Vendor { get; set; }
-        /// <summary>
-        /// Connection used to read schema
-        /// </summary>
-        /// <value></value>
-        public IDbConnection Connection { get; set; }
-        /// <summary>
-        /// Gets or sets the name formatter.
-        /// </summary>
-        /// <value>The name formatter.</value>
-        public INameFormatter NameFormatter { get; set; }
-
-        private TextWriter log;
-        /// <summary>
-        /// Log output
-        /// </summary>
-        public TextWriter Log
-        {
-            get { return log ?? Console.Out; }
-            set { log = value; }
-        }
-
-        /// <summary>
-        /// Loads database schema
-        /// </summary>
-        /// <param name="databaseName"></param>
-        /// <param name="nameAliases"></param>
-        /// <param name="nameFormat"></param>
-        /// <param name="loadStoredProcedures"></param>
-        /// <param name="contextNamespace"></param>
-        /// <param name="entityNamespace"></param>
-        /// <returns></returns>
-        public virtual Database Load(string databaseName, INameAliases nameAliases, NameFormat nameFormat,
-            bool loadStoredProcedures, string contextNamespace, string entityNamespace)
-        {
-            // check if connection is open. Note: we may use something more flexible
-            if (Connection.State != ConnectionState.Open)
-                Connection.Open();
-
-            // get the database name. If we don't have one, take it from connection string...
-            if (string.IsNullOrEmpty(databaseName))
-                databaseName = Connection.Database;
-            // ... and if connection string doesn't provide a name, then throw an error
-            if (string.IsNullOrEmpty(databaseName))
-                throw new ArgumentException("A database name is required. Please specify /database=<databaseName>");
-
-            databaseName = GetDatabaseNameAliased(databaseName, nameAliases);
-
-            var schemaName = NameFormatter.GetSchemaName(databaseName, GetExtraction(databaseName), nameFormat);
-            var names = new Names();
-            var schema = new Database
-                             {
-                                 Name = schemaName.DbName,
-                                 Class = GetRuntimeClassName(schemaName.ClassName, nameAliases),
-                                 BaseType = typeof(DataContext).FullName,
-                                 ContextNamespace = contextNamespace,
-                                 EntityNamespace = entityNamespace,
-                             };
-
-            // order is important, we must have:
-            // 1. tables
-            // 2. columns
-            // 3. constraints
-            LoadTables(schema, schemaName, Connection, nameAliases, nameFormat, names);
-            LoadColumns(schema, schemaName, Connection, nameAliases, nameFormat, names);
-            CheckColumnsName(schema);
-            LoadConstraints(schema, schemaName, Connection, nameFormat, names);
-            CheckConstraintsName(schema);
-            if (loadStoredProcedures)
-                LoadStoredProcedures(schema, schemaName, Connection, nameFormat);
-            // names aren't checked here anymore, because this confuses DBML editor.
-            // they will (for now) be checked before .cs generation
-            // in the end, when probably will end up in mapping source (or somewhere around)
-            //CheckNamesSafety(schema);
-
-            // generate backing fields name (since we have here correct names)
-            GenerateStorageAndMemberFields(schema);
-
-            return schema;
-        }
-
-        /// <summary>
-        /// Gets a usable name for the database.
-        /// </summary>
-        /// <param name="databaseName">Name of the database.</param>
-        /// <returns></returns>
-        protected virtual string GetDatabaseName(string databaseName)
-        {
-            return databaseName;
-        }
-
-        protected virtual string GetDatabaseNameAliased(string databaseName, INameAliases nameAliases)
-        {
-            string databaseNameAliased = nameAliases != null ? nameAliases.GetDatabaseNameAlias(databaseName) : null;
-            return (databaseNameAliased != null) ? databaseNameAliased : GetDatabaseName(databaseName);
-        }
-
-        /// <summary>
-        /// Gets a usable name for the database class.
-        /// </summary>
-        /// <param name="databaseName">Name of the clas.</param>
-        /// <returns></returns>
-        protected virtual string GetRuntimeClassName(string className, INameAliases nameAliases)
-        {
-            string classNameAliased = nameAliases != null ? nameAliases.GetClassNameAlias(className) : null;
-            return (classNameAliased != null) ? classNameAliased : className;
-        }
-
-        /// <summary>
-        /// Writes an error line.
-        /// </summary>
-        /// <param name="format">The format.</param>
-        /// <param name="arg">The arg.</param>
-        protected void WriteErrorLine(string format, params object[] arg)
-        {
-            var o = Log;
-            if (o == Console.Out)
-                o = Console.Error;
-            o.WriteLine(format, arg);
-        }
-
-        protected SchemaLoader()
-        {
-            NameFormatter = ObjectFactory.Create<INameFormatter>(); // the Pluralize property is set dynamically, so no singleton
-        }
-
-        /// <summary>
-        /// Gets the extraction type from a columnname.
-        /// </summary>
-        /// <param name="dbColumnName">Name of the db column.</param>
-        /// <returns></returns>
-        protected virtual WordsExtraction GetExtraction(string dbColumnName)
-        {
-            bool isMixedCase = dbColumnName != dbColumnName.ToLower() && dbColumnName != dbColumnName.ToUpper();
-            return isMixedCase ? WordsExtraction.FromCase : WordsExtraction.FromDictionary;
-        }
-
-        /// <summary>
-        /// Gets the full name of a name and schema.
-        /// </summary>
-        /// <param name="dbName">Name of the db.</param>
-        /// <param name="dbSchema">The db schema.</param>
-        /// <returns></returns>
-        protected virtual string GetFullDbName(string dbName, string dbSchema)
-        {
-            string fullDbName;
-            if (dbSchema == null)
-                fullDbName = dbName;
-            else
-                fullDbName = string.Format("{0}.{1}", dbSchema, dbName);
-            return fullDbName;
-        }
-
-        /// <summary>
-        /// Creates the name of the table given a name and schema
-        /// </summary>
-        /// <param name="dbTableName">Name of the db table.</param>
-        /// <param name="dbSchema">The db schema.</param>
-        /// <param name="nameAliases">The name aliases.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <param name="extraction">The extraction.</param>
-        /// <returns></returns>
-        protected virtual TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat, WordsExtraction extraction)
-        {
-            // if we have an alias, use it, and don't try to analyze it (a human probably already did the job)
-            var tableTypeAlias = nameAliases != null ? nameAliases.GetTableTypeAlias(dbTableName, dbSchema) : null;
-            if (tableTypeAlias != null)
-                extraction = WordsExtraction.None;
-            else
-                tableTypeAlias = dbTableName;
-
-            var tableName = NameFormatter.GetTableName(tableTypeAlias, extraction, nameFormat);
-
-            // alias for member
-            var tableMemberAlias = nameAliases != null ? nameAliases.GetTableMemberAlias(dbTableName, dbSchema) : null;
-            if (tableMemberAlias != null)
-                tableName.MemberName = tableMemberAlias;
-
-            tableName.DbName = GetFullDbName(dbTableName, dbSchema);
-            return tableName;
-        }
-
-        protected virtual TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
-        {
-            return CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat, GetExtraction(dbTableName));
-        }
-
-        Regex startsWithNumber = new Regex(@"^\d", RegexOptions.Compiled);
-
-        /// <summary>
-        /// Creates the name of the column.
-        /// </summary>
-        /// <param name="dbColumnName">Name of the db column.</param>
-        /// <param name="dbTableName">Name of the db table.</param>
-        /// <param name="dbSchema">The db schema.</param>
-        /// <param name="nameAliases">The name aliases.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        protected virtual ColumnName CreateColumnName(string dbColumnName, string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
-        {
-            var columnNameAlias = nameAliases != null ? nameAliases.GetColumnMemberAlias(dbColumnName, dbTableName, dbSchema) : null;
-            WordsExtraction extraction;
-            if (columnNameAlias != null)
-            {
-                extraction = WordsExtraction.None;
-            }
-            else
-            {
-                extraction = GetExtraction(dbColumnName);
-                columnNameAlias = dbColumnName;
-            }
-            var columnName = NameFormatter.GetColumnName(columnNameAlias, extraction, nameFormat);
-            // The member name can not be the same as the class
-            // we add a "1" (just like SqlMetal does)
-            var tableName = CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat);
-            if (columnName.PropertyName == tableName.ClassName)
-                columnName.PropertyName = columnName.PropertyName + "1";
-
-            if (startsWithNumber.IsMatch(columnName.PropertyName))
-                columnName.PropertyName = "_" + columnName.PropertyName;
-
-            columnName.DbName = dbColumnName;
-            return columnName;
-        }
-
-        /// <summary>
-        /// Creates the name of the procedure.
-        /// </summary>
-        /// <param name="dbProcedureName">Name of the db procedure.</param>
-        /// <param name="dbSchema">The db schema.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        protected virtual ProcedureName CreateProcedureName(string dbProcedureName, string dbSchema, NameFormat nameFormat)
-        {
-            var procedureName = NameFormatter.GetProcedureName(dbProcedureName, GetExtraction(dbProcedureName), nameFormat);
-            procedureName.DbName = GetFullDbName(dbProcedureName, dbSchema);
-            return procedureName;
-        }
-
-        /// <summary>
-        /// Creates the name of the association.
-        /// </summary>
-        /// <param name="dbManyName">Name of the db many.</param>
-        /// <param name="dbManySchema">The db many schema.</param>
-        /// <param name="dbOneName">Name of the db one.</param>
-        /// <param name="dbOneSchema">The db one schema.</param>
-        /// <param name="dbConstraintName">Name of the db constraint.</param>
-        /// <param name="foreignKeyName">Name of the foreign key.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        protected virtual AssociationName CreateAssociationName(string dbManyName, string dbManySchema,
-            string dbOneName, string dbOneSchema, string dbConstraintName, string foreignKeyName, NameFormat nameFormat)
-        {
-            var associationName = NameFormatter.GetAssociationName(dbManyName, dbOneName,
-                dbConstraintName, foreignKeyName, GetExtraction(dbManyName), nameFormat);
-            associationName.DbName = GetFullDbName(dbManyName, dbManySchema);
-            return associationName;
-        }
-
-        /// <summary>
-        /// Creates the name of the schema.
-        /// </summary>
-        /// <param name="databaseName">Name of the database.</param>
-        /// <param name="connection">The connection.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <returns></returns>
-        protected virtual SchemaName CreateSchemaName(string databaseName, IDbConnection connection, NameFormat nameFormat)
-        {
-            if (string.IsNullOrEmpty(databaseName))
-            {
-                databaseName = connection.Database;
-                if (string.IsNullOrEmpty(databaseName))
-                    throw new ArgumentException("Could not deduce database name from connection string. Please specify /database=<databaseName>");
-            }
-            return NameFormatter.GetSchemaName(databaseName, GetExtraction(databaseName), nameFormat);
-        }
-
-        protected virtual ParameterName CreateParameterName(string dbParameterName, NameFormat nameFormat)
-        {
-            var parameterName = NameFormatter.GetParameterName(dbParameterName, GetExtraction(dbParameterName), nameFormat);
-            return parameterName;
-        }
-
-        protected class Names
-        {
-            public IDictionary<string, TableName> TablesNames = new Dictionary<string, TableName>();
-            public IDictionary<string, IDictionary<string, ColumnName>> ColumnsNames = new Dictionary<string, IDictionary<string, ColumnName>>();
-
-            public void AddColumn(string dbTableName, ColumnName columnName)
-            {
-                IDictionary<string, ColumnName> columns;
-                if (!ColumnsNames.TryGetValue(dbTableName, out columns))
-                {
-                    columns = new Dictionary<string, ColumnName>();
-                    ColumnsNames[dbTableName] = columns;
-                }
-                columns[columnName.DbName] = columnName;
-            }
-        }
-
-        /// <summary>
-        /// Loads the tables in the given schema.
-        /// </summary>
-        /// <param name="schema">The schema.</param>
-        /// <param name="schemaName">Name of the schema.</param>
-        /// <param name="conn">The conn.</param>
-        /// <param name="nameAliases">The name aliases.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <param name="names">The names.</param>
-        protected virtual void LoadTables(Database schema, SchemaName schemaName, IDbConnection conn, INameAliases nameAliases, NameFormat nameFormat, Names names)
-        {
-            var tables = ReadTables(conn, schemaName.DbName);
-            foreach (var row in tables)
-            {
-                var tableName = CreateTableName(row.Name, row.Schema, nameAliases, nameFormat);
-                names.TablesNames[tableName.DbName] = tableName;
-
-                var table = new Table();
-                table.Name = tableName.DbName;
-                table.Member = tableName.MemberName;
-                table.Type.Name = tableName.ClassName;
-                schema.Tables.Add(table);
-            }
-        }
-
-        /// <summary>
-        /// Loads the columns.
-        /// </summary>
-        /// <param name="schema">The schema.</param>
-        /// <param name="schemaName">Name of the schema.</param>
-        /// <param name="conn">The conn.</param>
-        /// <param name="nameAliases">The name aliases.</param>
-        /// <param name="nameFormat">The name format.</param>
-        /// <param name="names">The names.</param>
-        protected void LoadColumns(Database schema, SchemaName schemaName, IDbConnection conn, INameAliases nameAliases, NameFormat nameFormat, Names names)
-        {
-            var columnRows = ReadColumns(conn, schemaName.DbName);
-            foreach (var columnRow in columnRows)
-            {
-                var columnName = CreateColumnName(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema, nameAliases, nameFormat);
-                names.AddColumn(columnRow.TableName, columnName);
-
-                //find which table this column belongs to
-                string fullColumnDbName = GetFullDbName(columnRow.TableName, columnRow.TableSchema);
-                DbLinq.Schema.Dbml.Table tableSchema = schema.Tables.FirstOrDefault(tblSchema => fullColumnDbName == tblSchema.Name);
-                if (tableSchema == null)
-                {
-                    WriteErrorLine("ERROR L46: Table '" + columnRow.TableName + "' not found for column " + columnRow.ColumnName);
-                    continue;
-                }
-                var column = new Column();
-                column.Name = columnName.DbName;
-                column.Member = columnName.PropertyName;
-                column.DbType = columnRow.FullType;
-
-                if (columnRow.PrimaryKey.HasValue)
-                    column.IsPrimaryKey = columnRow.PrimaryKey.Value;
-
-                bool? generated = (nameAliases != null) ? nameAliases.GetColumnGenerated(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema) : null;
-                if (!generated.HasValue)
-                    generated = columnRow.Generated;
-                if (generated.HasValue)
-                    column.IsDbGenerated = generated.Value;
-
-                AutoSync? autoSync = (nameAliases != null) ? nameAliases.GetColumnAutoSync(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema) : null;
-                if (autoSync.HasValue)
-                    column.AutoSync = autoSync.Value;
-
-                // the Expression can originate from two sources:
-                // 1. DefaultValue
-                // 2. Expression
-                // we use any valid source (we can't have both)
-                if (column.IsDbGenerated && columnRow.DefaultValue != null)
-                    column.Expression = columnRow.DefaultValue;
-
-                column.CanBeNull = columnRow.Nullable;
-
-                string columnTypeAlias = nameAliases != null ? nameAliases.GetColumnForcedType(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema) : null;
-                var columnType = MapDbType(columnName.DbName, columnRow);
-
-                var columnEnumType = columnType as EnumType;
-                if (columnEnumType != null)
-                {
-                    var enumType = column.SetExtendedTypeAsEnumType();
-                    enumType.Name = columnEnumType.Name;
-                    foreach (KeyValuePair<string, int> enumValue in columnEnumType.EnumValues)
-                    {
-                        enumType[enumValue.Key] = enumValue.Value;
-                    }
-                }
-                else if (columnTypeAlias != null)
-                    column.Type = columnTypeAlias;
-                else
-                    column.Type = columnType.ToString();
-
-                tableSchema.Type.Columns.Add(column);
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using DbLinq.Factory;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using System.Text.RegularExpressions;
+
+namespace DbLinq.Vendor.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    abstract partial class SchemaLoader : ISchemaLoader
+    {
+        /// <summary>
+        /// Underlying vendor
+        /// </summary>
+        /// <value></value>
+        public abstract IVendor Vendor { get; set; }
+        /// <summary>
+        /// Connection used to read schema
+        /// </summary>
+        /// <value></value>
+        public IDbConnection Connection { get; set; }
+        /// <summary>
+        /// Gets or sets the name formatter.
+        /// </summary>
+        /// <value>The name formatter.</value>
+        public INameFormatter NameFormatter { get; set; }
+
+        private TextWriter log;
+        /// <summary>
+        /// Log output
+        /// </summary>
+        public TextWriter Log
+        {
+            get { return log ?? Console.Out; }
+            set { log = value; }
+        }
+
+        /// <summary>
+        /// Loads database schema
+        /// </summary>
+        /// <param name="databaseName"></param>
+        /// <param name="nameAliases"></param>
+        /// <param name="nameFormat"></param>
+        /// <param name="loadStoredProcedures"></param>
+        /// <param name="contextNamespace"></param>
+        /// <param name="entityNamespace"></param>
+        /// <returns></returns>
+        public virtual Database Load(string databaseName, INameAliases nameAliases, NameFormat nameFormat,
+            bool loadStoredProcedures, string contextNamespace, string entityNamespace)
+        {
+            // check if connection is open. Note: we may use something more flexible
+            if (Connection.State != ConnectionState.Open)
+                Connection.Open();
+
+            // get the database name. If we don't have one, take it from connection string...
+            if (string.IsNullOrEmpty(databaseName))
+                databaseName = Connection.Database;
+            // ... and if connection string doesn't provide a name, then throw an error
+            if (string.IsNullOrEmpty(databaseName))
+                throw new ArgumentException("A database name is required. Please specify /database=<databaseName>");
+
+            databaseName = GetDatabaseNameAliased(databaseName, nameAliases);
+
+            var schemaName = NameFormatter.GetSchemaName(databaseName, GetExtraction(databaseName), nameFormat);
+            var names = new Names();
+            var schema = new Database
+                             {
+                                 Name = schemaName.DbName,
+                                 Class = GetRuntimeClassName(schemaName.ClassName, nameAliases),
+                                 BaseType = typeof(DataContext).FullName,
+                                 ContextNamespace = contextNamespace,
+                                 EntityNamespace = entityNamespace,
+                             };
+
+            // order is important, we must have:
+            // 1. tables
+            // 2. columns
+            // 3. constraints
+            LoadTables(schema, schemaName, Connection, nameAliases, nameFormat, names);
+            LoadColumns(schema, schemaName, Connection, nameAliases, nameFormat, names);
+            CheckColumnsName(schema);
+            LoadConstraints(schema, schemaName, Connection, nameFormat, names);
+            CheckConstraintsName(schema);
+            if (loadStoredProcedures)
+                LoadStoredProcedures(schema, schemaName, Connection, nameFormat);
+            // names aren't checked here anymore, because this confuses DBML editor.
+            // they will (for now) be checked before .cs generation
+            // in the end, when probably will end up in mapping source (or somewhere around)
+            //CheckNamesSafety(schema);
+
+            // generate backing fields name (since we have here correct names)
+            GenerateStorageAndMemberFields(schema);
+
+            return schema;
+        }
+
+        /// <summary>
+        /// Gets a usable name for the database.
+        /// </summary>
+        /// <param name="databaseName">Name of the database.</param>
+        /// <returns></returns>
+        protected virtual string GetDatabaseName(string databaseName)
+        {
+            return databaseName;
+        }
+
+        protected virtual string GetDatabaseNameAliased(string databaseName, INameAliases nameAliases)
+        {
+            string databaseNameAliased = nameAliases != null ? nameAliases.GetDatabaseNameAlias(databaseName) : null;
+            return (databaseNameAliased != null) ? databaseNameAliased : GetDatabaseName(databaseName);
+        }
+
+        /// <summary>
+        /// Gets a usable name for the database class.
+        /// </summary>
+        /// <param name="databaseName">Name of the clas.</param>
+        /// <returns></returns>
+        protected virtual string GetRuntimeClassName(string className, INameAliases nameAliases)
+        {
+            string classNameAliased = nameAliases != null ? nameAliases.GetClassNameAlias(className) : null;
+            return (classNameAliased != null) ? classNameAliased : className;
+        }
+
+        /// <summary>
+        /// Writes an error line.
+        /// </summary>
+        /// <param name="format">The format.</param>
+        /// <param name="arg">The arg.</param>
+        protected void WriteErrorLine(string format, params object[] arg)
+        {
+            var o = Log;
+            if (o == Console.Out)
+                o = Console.Error;
+            o.WriteLine(format, arg);
+        }
+
+        protected SchemaLoader()
+        {
+            NameFormatter = ObjectFactory.Create<INameFormatter>(); // the Pluralize property is set dynamically, so no singleton
+        }
+
+        /// <summary>
+        /// Gets the extraction type from a columnname.
+        /// </summary>
+        /// <param name="dbColumnName">Name of the db column.</param>
+        /// <returns></returns>
+        protected virtual WordsExtraction GetExtraction(string dbColumnName)
+        {
+            bool isMixedCase = dbColumnName != dbColumnName.ToLower() && dbColumnName != dbColumnName.ToUpper();
+            return isMixedCase ? WordsExtraction.FromCase : WordsExtraction.FromDictionary;
+        }
+
+        /// <summary>
+        /// Gets the full name of a name and schema.
+        /// </summary>
+        /// <param name="dbName">Name of the db.</param>
+        /// <param name="dbSchema">The db schema.</param>
+        /// <returns></returns>
+        protected virtual string GetFullDbName(string dbName, string dbSchema)
+        {
+            string fullDbName;
+            if (dbSchema == null)
+                fullDbName = dbName;
+            else
+                fullDbName = string.Format("{0}.{1}", dbSchema, dbName);
+            return fullDbName;
+        }
+
+        /// <summary>
+        /// Creates the name of the table given a name and schema
+        /// </summary>
+        /// <param name="dbTableName">Name of the db table.</param>
+        /// <param name="dbSchema">The db schema.</param>
+        /// <param name="nameAliases">The name aliases.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <param name="extraction">The extraction.</param>
+        /// <returns></returns>
+        protected virtual TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat, WordsExtraction extraction)
+        {
+            // if we have an alias, use it, and don't try to analyze it (a human probably already did the job)
+            var tableTypeAlias = nameAliases != null ? nameAliases.GetTableTypeAlias(dbTableName, dbSchema) : null;
+            if (tableTypeAlias != null)
+                extraction = WordsExtraction.None;
+            else
+                tableTypeAlias = dbTableName;
+
+            var tableName = NameFormatter.GetTableName(tableTypeAlias, extraction, nameFormat);
+
+            // alias for member
+            var tableMemberAlias = nameAliases != null ? nameAliases.GetTableMemberAlias(dbTableName, dbSchema) : null;
+            if (tableMemberAlias != null)
+                tableName.MemberName = tableMemberAlias;
+
+            tableName.DbName = GetFullDbName(dbTableName, dbSchema);
+            return tableName;
+        }
+
+        protected virtual TableName CreateTableName(string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
+        {
+            return CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat, GetExtraction(dbTableName));
+        }
+
+        Regex startsWithNumber = new Regex(@"^\d", RegexOptions.Compiled);
+
+        /// <summary>
+        /// Creates the name of the column.
+        /// </summary>
+        /// <param name="dbColumnName">Name of the db column.</param>
+        /// <param name="dbTableName">Name of the db table.</param>
+        /// <param name="dbSchema">The db schema.</param>
+        /// <param name="nameAliases">The name aliases.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        protected virtual ColumnName CreateColumnName(string dbColumnName, string dbTableName, string dbSchema, INameAliases nameAliases, NameFormat nameFormat)
+        {
+            var columnNameAlias = nameAliases != null ? nameAliases.GetColumnMemberAlias(dbColumnName, dbTableName, dbSchema) : null;
+            WordsExtraction extraction;
+            if (columnNameAlias != null)
+            {
+                extraction = WordsExtraction.None;
+            }
+            else
+            {
+                extraction = GetExtraction(dbColumnName);
+                columnNameAlias = dbColumnName;
+            }
+            var columnName = NameFormatter.GetColumnName(columnNameAlias, extraction, nameFormat);
+            // The member name can not be the same as the class
+            // we add a "1" (just like SqlMetal does)
+            var tableName = CreateTableName(dbTableName, dbSchema, nameAliases, nameFormat);
+            if (columnName.PropertyName == tableName.ClassName)
+                columnName.PropertyName = columnName.PropertyName + "1";
+
+            if (startsWithNumber.IsMatch(columnName.PropertyName))
+                columnName.PropertyName = "_" + columnName.PropertyName;
+
+            columnName.DbName = dbColumnName;
+            return columnName;
+        }
+
+        /// <summary>
+        /// Creates the name of the procedure.
+        /// </summary>
+        /// <param name="dbProcedureName">Name of the db procedure.</param>
+        /// <param name="dbSchema">The db schema.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        protected virtual ProcedureName CreateProcedureName(string dbProcedureName, string dbSchema, NameFormat nameFormat)
+        {
+            var procedureName = NameFormatter.GetProcedureName(dbProcedureName, GetExtraction(dbProcedureName), nameFormat);
+            procedureName.DbName = GetFullDbName(dbProcedureName, dbSchema);
+            return procedureName;
+        }
+
+        /// <summary>
+        /// Creates the name of the association.
+        /// </summary>
+        /// <param name="dbManyName">Name of the db many.</param>
+        /// <param name="dbManySchema">The db many schema.</param>
+        /// <param name="dbOneName">Name of the db one.</param>
+        /// <param name="dbOneSchema">The db one schema.</param>
+        /// <param name="dbConstraintName">Name of the db constraint.</param>
+        /// <param name="foreignKeyName">Name of the foreign key.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        protected virtual AssociationName CreateAssociationName(string dbManyName, string dbManySchema,
+            string dbOneName, string dbOneSchema, string dbConstraintName, string foreignKeyName, NameFormat nameFormat)
+        {
+            var associationName = NameFormatter.GetAssociationName(dbManyName, dbOneName,
+                dbConstraintName, foreignKeyName, GetExtraction(dbManyName), nameFormat);
+            associationName.DbName = GetFullDbName(dbManyName, dbManySchema);
+            return associationName;
+        }
+
+        /// <summary>
+        /// Creates the name of the schema.
+        /// </summary>
+        /// <param name="databaseName">Name of the database.</param>
+        /// <param name="connection">The connection.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <returns></returns>
+        protected virtual SchemaName CreateSchemaName(string databaseName, IDbConnection connection, NameFormat nameFormat)
+        {
+            if (string.IsNullOrEmpty(databaseName))
+            {
+                databaseName = connection.Database;
+                if (string.IsNullOrEmpty(databaseName))
+                    throw new ArgumentException("Could not deduce database name from connection string. Please specify /database=<databaseName>");
+            }
+            return NameFormatter.GetSchemaName(databaseName, GetExtraction(databaseName), nameFormat);
+        }
+
+        protected virtual ParameterName CreateParameterName(string dbParameterName, NameFormat nameFormat)
+        {
+            var parameterName = NameFormatter.GetParameterName(dbParameterName, GetExtraction(dbParameterName), nameFormat);
+            return parameterName;
+        }
+
+        protected class Names
+        {
+            public IDictionary<string, TableName> TablesNames = new Dictionary<string, TableName>();
+            public IDictionary<string, IDictionary<string, ColumnName>> ColumnsNames = new Dictionary<string, IDictionary<string, ColumnName>>();
+
+            public void AddColumn(string dbTableName, ColumnName columnName)
+            {
+                IDictionary<string, ColumnName> columns;
+                if (!ColumnsNames.TryGetValue(dbTableName, out columns))
+                {
+                    columns = new Dictionary<string, ColumnName>();
+                    ColumnsNames[dbTableName] = columns;
+                }
+                columns[columnName.DbName] = columnName;
+            }
+        }
+
+        /// <summary>
+        /// Loads the tables in the given schema.
+        /// </summary>
+        /// <param name="schema">The schema.</param>
+        /// <param name="schemaName">Name of the schema.</param>
+        /// <param name="conn">The conn.</param>
+        /// <param name="nameAliases">The name aliases.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <param name="names">The names.</param>
+        protected virtual void LoadTables(Database schema, SchemaName schemaName, IDbConnection conn, INameAliases nameAliases, NameFormat nameFormat, Names names)
+        {
+            var tables = ReadTables(conn, schemaName.DbName);
+            foreach (var row in tables)
+            {
+                var tableName = CreateTableName(row.Name, row.Schema, nameAliases, nameFormat);
+                names.TablesNames[tableName.DbName] = tableName;
+
+                var table = new Table();
+                table.Name = tableName.DbName;
+                table.Member = tableName.MemberName;
+                table.Type.Name = tableName.ClassName;
+                schema.Tables.Add(table);
+            }
+        }
+
+        /// <summary>
+        /// Loads the columns.
+        /// </summary>
+        /// <param name="schema">The schema.</param>
+        /// <param name="schemaName">Name of the schema.</param>
+        /// <param name="conn">The conn.</param>
+        /// <param name="nameAliases">The name aliases.</param>
+        /// <param name="nameFormat">The name format.</param>
+        /// <param name="names">The names.</param>
+        protected void LoadColumns(Database schema, SchemaName schemaName, IDbConnection conn, INameAliases nameAliases, NameFormat nameFormat, Names names)
+        {
+            var columnRows = ReadColumns(conn, schemaName.DbName);
+            foreach (var columnRow in columnRows)
+            {
+                var columnName = CreateColumnName(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema, nameAliases, nameFormat);
+                names.AddColumn(columnRow.TableName, columnName);
+
+                //find which table this column belongs to
+                string fullColumnDbName = GetFullDbName(columnRow.TableName, columnRow.TableSchema);
+                DbLinq.Schema.Dbml.Table tableSchema = schema.Tables.FirstOrDefault(tblSchema => fullColumnDbName == tblSchema.Name);
+                if (tableSchema == null)
+                {
+                    WriteErrorLine("ERROR L46: Table '" + columnRow.TableName + "' not found for column " + columnRow.ColumnName);
+                    continue;
+                }
+                var column = new Column();
+                column.Name = columnName.DbName;
+                column.Member = columnName.PropertyName;
+                column.DbType = columnRow.FullType;
+
+                if (columnRow.PrimaryKey.HasValue)
+                    column.IsPrimaryKey = columnRow.PrimaryKey.Value;
+
+                bool? generated = (nameAliases != null) ? nameAliases.GetColumnGenerated(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema) : null;
+                if (!generated.HasValue)
+                    generated = columnRow.Generated;
+                if (generated.HasValue)
+                    column.IsDbGenerated = generated.Value;
+
+                AutoSync? autoSync = (nameAliases != null) ? nameAliases.GetColumnAutoSync(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema) : null;
+                if (autoSync.HasValue)
+                    column.AutoSync = autoSync.Value;
+
+                // the Expression can originate from two sources:
+                // 1. DefaultValue
+                // 2. Expression
+                // we use any valid source (we can't have both)
+                if (column.IsDbGenerated && columnRow.DefaultValue != null)
+                    column.Expression = columnRow.DefaultValue;
+
+                column.CanBeNull = columnRow.Nullable;
+
+                string columnTypeAlias = nameAliases != null ? nameAliases.GetColumnForcedType(columnRow.ColumnName, columnRow.TableName, columnRow.TableSchema) : null;
+                var columnType = MapDbType(columnName.DbName, columnRow);
+
+                var columnEnumType = columnType as EnumType;
+                if (columnEnumType != null)
+                {
+                    var enumType = column.SetExtendedTypeAsEnumType();
+                    enumType.Name = columnEnumType.Name;
+                    foreach (KeyValuePair<string, int> enumValue in columnEnumType.EnumValues)
+                    {
+                        enumType[enumValue.Key] = enumValue.Value;
+                    }
+                }
+                else if (columnTypeAlias != null)
+                    column.Type = columnTypeAlias;
+                else
+                    column.Type = columnType.ToString();
+
+                tableSchema.Type.Columns.Add(column);
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SqlProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/SqlProvider.cs
@@ -1,1652 +1,1652 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Text.RegularExpressions;
-
-using DbLinq.Data.Linq.Sql;
-using DbLinq.Data.Linq.Sugar.Expressions;
-
-using DbLinq.Util;
-
-namespace DbLinq.Vendor.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SqlProvider : ISqlProvider
-    {
-        public virtual ExpressionTranslator GetTranslator()
-        {
-            return new ExpressionTranslator();
-        }
-
-        /// <summary>
-        /// Builds an insert clause
-        /// </summary>
-        /// <param name="table">Table name</param>
-        /// <param name="inputColumns">Columns to be inserted</param>
-        /// <param name="inputValues">Values to be inserted into columns</param>
-        /// <returns></returns>
-        public virtual SqlStatement GetInsert(SqlStatement table, IList<SqlStatement> inputColumns, IList<SqlStatement> inputValues)
-        {
-            if (inputColumns.Count == 0)
-                return SqlStatement.Empty;
-
-            var insertBuilder = new SqlStatementBuilder("INSERT INTO ");
-            insertBuilder.Append(table);
-            insertBuilder.AppendFormat(" ({0})", SqlStatement.Join(", ", inputColumns));
-            insertBuilder.Append(" VALUES");
-            insertBuilder.AppendFormat(" ({0})", SqlStatement.Join(", ", inputValues));
-            return insertBuilder.ToSqlStatement();
-        }
-
-        /// <summary>
-        /// Builds the statements that gets back the IDs for the inserted statement
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="autoPKColumn">Auto-generated PK columns for reference (i.e. AUTO_INCREMENT)</param>
-        /// <param name="inputPKColumns">PK columns for reference</param>
-        /// <param name="inputPKValues">PK values for reference</param>
-        /// <param name="outputParameters">Expected output parameters</param>
-        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
-        /// <returns></returns>
-        public virtual SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> pkColumns, IList<SqlStatement> pkValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
-        {
-            if (autoPKColumn.Count == outputParameters.Count)
-                return "SELECT @@IDENTITY";
-
-            var insertIds = new SqlStatementBuilder("SELECT ");
-            insertIds.AppendFormat(" ({0})", SqlStatement.Join(", ", outputColumns));
-            insertIds.Append(" FROM ");
-            insertIds.Append(table);
-            insertIds.Append(" WHERE ");
-            bool valueSet = false;
-            if (autoPKColumn.Count > 0)
-            {
-                insertIds.AppendFormat("{0} = @@IDENTITY", autoPKColumn[0]);
-                valueSet = true;
-            }
-            for (IEnumerator<SqlStatement> column = pkColumns.GetEnumerator(), value = pkValues.GetEnumerator(); column.MoveNext() && value.MoveNext();)
-            {
-                if (valueSet)
-                    insertIds.Append(" AND ");
-                insertIds.AppendFormat("{0} = {1}", column.Current, value.Current);
-                valueSet = true;
-            }
-            return insertIds.ToSqlStatement();
-        }
-
-        /// <summary>
-        /// Builds an update clause
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="inputColumns">Columns to be inserted</param>
-        /// <param name="inputValues">Values to be inserted into columns</param>
-        /// <param name="outputParameters">Expected output parameters</param>
-        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
-        /// <param name="inputPKColumns">PK columns for reference</param>
-        /// <param name="inputPKValues">PK values for reference</param>
-        /// <returns></returns>
-        public SqlStatement GetUpdate(SqlStatement table, IList<SqlStatement> inputColumns,
-            IList<SqlStatement> inputValues,
-            IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions,
-            IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues)
-        {
-            if (inputColumns.Count == 0)
-                return SqlStatement.Empty;
-
-            var updateBuilder = new SqlStatementBuilder("UPDATE ");
-            updateBuilder.Append(table);
-            updateBuilder.Append(" SET ");
-            bool valueSet = false;
-            for (IEnumerator<SqlStatement> column = inputColumns.GetEnumerator(), value = inputValues.GetEnumerator(); column.MoveNext() && value.MoveNext(); )
-            {
-                if (valueSet)
-                    updateBuilder.Append(", ");
-                updateBuilder.AppendFormat("{0} = {1}", column.Current, value.Current);
-                valueSet = true;
-            }
-            updateBuilder.Append(" WHERE ");
-            valueSet = false;
-            for (IEnumerator<SqlStatement> column = inputPKColumns.GetEnumerator(), value = inputPKValues.GetEnumerator(); column.MoveNext() && value.MoveNext(); )
-            {
-                if (valueSet)
-                    updateBuilder.Append(" AND ");
-                updateBuilder.AppendFormat("{0} = {1}", column.Current, value.Current);
-                valueSet = true;
-            }
-            return updateBuilder.ToSqlStatement();
-        }
-
-        /// <summary>
-        /// Builds a delete clause
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="inputPKColumns">PK columns for reference</param>
-        /// <param name="inputPKValues">PK values for reference</param>
-        /// <returns></returns>
-        public SqlStatement GetDelete(SqlStatement table, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues)
-        {
-            if (inputPKColumns.Count == 0)
-                return SqlStatement.Empty;
-
-            var deleteBuilder = new SqlStatementBuilder("DELETE FROM ");
-            deleteBuilder.Append(table);
-            deleteBuilder.Append(" WHERE ");
-            bool valueSet = false;
-            for (IEnumerator<SqlStatement> column = inputPKColumns.GetEnumerator(), value = inputPKValues.GetEnumerator(); column.MoveNext() && value.MoveNext(); )
-            {
-                if (valueSet)
-                    deleteBuilder.Append(" AND ");
-                deleteBuilder.AppendFormat("{0} = {1}", column.Current, value.Current);
-                valueSet = true;
-            }
-            return deleteBuilder.ToSqlStatement();
-        }
-
-        /// <summary>
-        /// Gets the new line string.
-        /// </summary>
-        /// <value>The new line.</value>
-        public string NewLine
-        {
-            get { return Environment.NewLine; }
-        }
-        /// <summary>
-        /// Converts a constant value to a literal representation
-        /// </summary>
-        /// <param name="literal"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLiteral(object literal)
-        {
-            if (literal == null)
-                return GetNullLiteral();
-            if (literal is string)
-                return GetLiteral((string)literal);
-            if (literal is char)
-                return GetLiteral(literal.ToString());
-            if (literal is bool)
-                return GetLiteral((bool)literal);
-            if (literal is DateTime)
-                return GetLiteral((DateTime)literal);
-            if (literal.GetType().IsArray)
-                return GetLiteral((Array)literal);
-            return Convert.ToString(literal, CultureInfo.InvariantCulture);
-        }
-
-        public virtual SqlStatement GetLiteral(DateTime literal)
-        {
-            return literal.ToString("o");
-        }
-
-        public virtual SqlStatement GetLiteral(bool literal)
-        {
-            return Convert.ToString(literal, CultureInfo.InvariantCulture);
-        }
-
-        /// <summary>
-        /// Converts a standard operator to an expression
-        /// </summary>
-        /// <param name="operationType"></param>
-        /// <param name="p"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLiteral(ExpressionType operationType, IList<SqlStatement> p)
-        {
-            switch (operationType)
-            {
-            case ExpressionType.Add:
-                return GetLiteralAdd(p[0], p[1]);
-            case ExpressionType.AddChecked:
-                return GetLiteralAddChecked(p[0], p[1]);
-            case ExpressionType.And:
-                return GetLiteralAnd(p[0], p[1]);
-            case ExpressionType.AndAlso:
-                return GetLiteralAndAlso(p[0], p[1]);
-            case ExpressionType.ArrayLength:
-                return GetLiteralArrayLength(p[0], p[1]);
-            case ExpressionType.ArrayIndex:
-                return GetLiteralArrayIndex(p[0], p[1]);
-            case ExpressionType.Call:
-                return GetLiteralCall(p[0]);
-            case ExpressionType.Coalesce:
-                return GetLiteralCoalesce(p[0], p[1]);
-            case ExpressionType.Conditional:
-                return GetLiteralConditional(p[0], p[1], p[2]);
-            //case ExpressionType.Constant:
-            //break;
-            case ExpressionType.Divide:
-                return GetLiteralDivide(p[0], p[1]);
-            case ExpressionType.Equal:
-                return GetLiteralEqual(p[0], p[1]);
-            case ExpressionType.ExclusiveOr:
-                return GetLiteralExclusiveOr(p[0], p[1]);
-            case ExpressionType.GreaterThan:
-                return GetLiteralGreaterThan(p[0], p[1]);
-            case ExpressionType.GreaterThanOrEqual:
-                return GetLiteralGreaterThanOrEqual(p[0], p[1]);
-            //case ExpressionType.Invoke:
-            //break;
-            //case ExpressionType.Lambda:
-            //break;
-            case ExpressionType.LeftShift:
-                return GetLiteralLeftShift(p[0], p[1]);
-            case ExpressionType.LessThan:
-                return GetLiteralLessThan(p[0], p[1]);
-            case ExpressionType.LessThanOrEqual:
-                return GetLiteralLessThanOrEqual(p[0], p[1]);
-            //case ExpressionType.ListInit:
-            //break;
-            //case ExpressionType.MemberAccess:
-            //    break;
-            //case ExpressionType.MemberInit:
-            //    break;
-            case ExpressionType.Modulo:
-                return GetLiteralModulo(p[0], p[1]);
-            case ExpressionType.Multiply:
-                return GetLiteralMultiply(p[0], p[1]);
-            case ExpressionType.MultiplyChecked:
-                return GetLiteralMultiplyChecked(p[0], p[1]);
-            case ExpressionType.Negate:
-                return GetLiteralNegate(p[0]);
-            case ExpressionType.UnaryPlus:
-                return GetLiteralUnaryPlus(p[0]);
-            case ExpressionType.NegateChecked:
-                return GetLiteralNegateChecked(p[0]);
-            //case ExpressionType.New:
-            //    break;
-            //case ExpressionType.NewArrayInit:
-            //    break;
-            //case ExpressionType.NewArrayBounds:
-            //    break;
-            case ExpressionType.Not:
-                return GetLiteralNot(p[0]);
-            case ExpressionType.NotEqual:
-                return GetLiteralNotEqual(p[0], p[1]);
-            case ExpressionType.Or:
-                return GetLiteralOr(p[0], p[1]);
-            case ExpressionType.OrElse:
-                return GetLiteralOrElse(p[0], p[1]);
-            //case ExpressionType.Parameter:
-            //    break;
-            case ExpressionType.Power:
-                return GetLiteralPower(p[0], p[1]);
-            //case ExpressionType.Quote:
-            //    break;
-            case ExpressionType.RightShift:
-                return GetLiteralRightShift(p[0], p[1]);
-            case ExpressionType.Subtract:
-                return GetLiteralSubtract(p[0], p[1]);
-            case ExpressionType.SubtractChecked:
-                return GetLiteralSubtractChecked(p[0], p[1]);
-            //case ExpressionType.TypeAs:
-            //    break;
-            //case ExpressionType.TypeIs:
-            //    break;
-            }
-            throw new ArgumentException(operationType.ToString());
-        }
-
-        /// <summary>
-        /// Converts a special expression type to literal
-        /// </summary>
-        /// <param name="operationType"></param>
-        /// <param name="p"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLiteral(SpecialExpressionType operationType, IList<SqlStatement> p)
-        {
-            switch (operationType) // SETuse
-            {
-            case SpecialExpressionType.IsNull:
-                return GetLiteralIsNull(p[0]);
-            case SpecialExpressionType.IsNotNull:
-                return GetLiteralIsNotNull(p[0]);
-            case SpecialExpressionType.Concat:
-                return GetLiteralStringConcat(p[0], p[1]);
-            case SpecialExpressionType.Count:
-                return GetLiteralCount(p[0]);
-            case SpecialExpressionType.Exists:
-                return GetLiteralExists(p[0]);
-            case SpecialExpressionType.Like:
-                return GetLiteralLike(p[0], p[1]);
-            case SpecialExpressionType.Min:
-                return GetLiteralMin(p[0]);
-            case SpecialExpressionType.Max:
-                return GetLiteralMax(p[0]);
-            case SpecialExpressionType.Sum:
-                return GetLiteralSum(p[0]);
-            case SpecialExpressionType.Average:
-                return GetLiteralAverage(p[0]);
-            case SpecialExpressionType.StringLength:
-                return GetLiteralStringLength(p[0]);
-            case SpecialExpressionType.ToUpper:
-                return GetLiteralStringToUpper(p[0]);
-            case SpecialExpressionType.ToLower:
-                return GetLiteralStringToLower(p[0]);
-            case SpecialExpressionType.In:
-                return GetLiteralIn(p[0], p[1]);
-            case SpecialExpressionType.Substring:
-                if (p.Count > 2)
-                    return GetLiteralSubString(p[0], p[1], p[2]);
-                return GetLiteralSubString(p[0], p[1]);
-            case SpecialExpressionType.Trim:
-            case SpecialExpressionType.LTrim:
-            case SpecialExpressionType.RTrim:
-                return GetLiteralTrim(p[0]);
-            case SpecialExpressionType.StringInsert:
-                return GetLiteralStringInsert(p[0], p[1], p[2]);
-            case SpecialExpressionType.Replace:
-                return GetLiteralStringReplace(p[0], p[1], p[2]);
-            case SpecialExpressionType.Remove:
-                if (p.Count > 2)
-                    return GetLiteralStringRemove(p[0], p[1], p[2]);
-                return GetLiteralStringRemove(p[0], p[1]);
-            case SpecialExpressionType.IndexOf:
-                if (p.Count == 2)
-                    return GetLiteralStringIndexOf(p[0], p[1]);
-                else if (p.Count == 3)
-                    return GetLiteralStringIndexOf(p[0], p[1], p[2]);
-                else if (p.Count == 4)
-                    return GetLiteralStringIndexOf(p[0], p[1], p[2], p[3]);
-                break;
-            case SpecialExpressionType.Year:
-            case SpecialExpressionType.Month:
-            case SpecialExpressionType.Day:
-            case SpecialExpressionType.Hour:
-            case SpecialExpressionType.Minute:
-            case SpecialExpressionType.Second:
-            case SpecialExpressionType.Millisecond:
-                return GetLiteralDateTimePart(p[0], operationType);
-            case SpecialExpressionType.Date:
-                return p[0];
-            case SpecialExpressionType.DateDiffInMilliseconds:
-                return GetLiteralDateDiff(p[0], p[1]);
-            case SpecialExpressionType.Abs:
-                return GetLiteralMathAbs(p[0]);
-            case SpecialExpressionType.Exp:
-                return GetLiteralMathExp(p[0]);
-            case SpecialExpressionType.Floor:
-                return GetLiteralMathFloor(p[0]);
-            case SpecialExpressionType.Ln:
-                return GetLiteralMathLn(p[0]);
-
-            case SpecialExpressionType.Log:
-                if (p.Count == 1)
-                    return GetLiteralMathLog(p[0]);
-                else
-                    return GetLiteralMathLog(p[0], p[1]);
-            case SpecialExpressionType.Pow:
-                return GetLiteralMathPow(p[0], p[1]);
-            case SpecialExpressionType.Round:
-                return GetLiteralMathRound(p[0]);
-            case SpecialExpressionType.Sign:
-                return GetLiteralMathSign(p[0]);
-            case SpecialExpressionType.Sqrt:
-                return GetLiteralMathSqrt(p[0]);
-
-            }
-            throw new ArgumentException(operationType.ToString());
-        }
-
-        protected virtual SqlStatement GetLiteralExists(SqlStatement sqlStatement)
-        {
-            return SqlStatement.Format("EXISTS {0}", sqlStatement);
-        }
-
-        private int SpecificVendorStringIndexStart
-        {
-            get
-            {
-                if (this.StringIndexStartsAtOne)
-                    return 1;
-                else return 0;
-            }
-        }
-        /// <summary>
-        /// Gets the literal math SQRT.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathSqrt(SqlStatement p)
-        {
-            return SqlStatement.Format("SQRT({0})", p);
-        }
-
-        /// <summary>
-        /// Gets the literal math sign.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathSign(SqlStatement p)
-        {
-            return SqlStatement.Format("SIGN({0})", p);
-        }
-
-        /// <summary>
-        /// Gets the literal math round.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathRound(SqlStatement p)
-        {
-            return SqlStatement.Format("ROUND({0})", p);
-        }
-
-        /// <summary>
-        /// Gets the literal math pow.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <param name="p_2">The P_2.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathPow(SqlStatement p, SqlStatement p_2)
-        {
-            return SqlStatement.Format("POW({0},{1})", p, p_2);
-        }
-
-        /// <summary>
-        /// Gets the literal math log.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathLog(SqlStatement p)
-        {
-            return SqlStatement.Format("LOG({0})", p);
-        }
-
-        /// <summary>
-        /// Gets the literal math log.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <param name="p_2">The P_2.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathLog(SqlStatement p, SqlStatement p_2)
-        {
-            return SqlStatement.Format("LOG({0},{1})", p, p_2);
-        }
-
-        /// <summary>
-        /// Gets the literal math ln.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathLn(SqlStatement p)
-        {
-            return SqlStatement.Format("LN({0})", p);
-        }
-
-        /// <summary>
-        /// Gets the literal math floor.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathFloor(SqlStatement p)
-        {
-            return SqlStatement.Format("FLOOR({0})", p);
-        }
-
-        /// <summary>
-        /// Gets the literal math exp.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathExp(SqlStatement p)
-        {
-            return SqlStatement.Format("EXP({0})", p);
-        }
-
-        /// <summary>
-        /// Gets the literal math abs.
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMathAbs(SqlStatement p)
-        {
-            return SqlStatement.Format("ABS({0})", p);
-        }
-
-        /// <summary>
-        /// It should return a int with de difference in milliseconds between two dates.
-        /// It is used in a lot of tasks, ie: operations of timespams ej: timespam.Minutes or timespam.TotalMinutes
-        /// </summary>
-        /// <remarks>
-        /// In the implementation you should pay atention in overflows inside the database engine, since a difference of dates in milliseconds
-        /// maybe deliver a very big integer int. Ie: sqlServer provider  has to do some tricks with castings for implementing such requeriments.
-        /// </remarks>
-        /// <param name="dateA"></param>
-        /// <param name="dateB"></param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralDateDiff(SqlStatement dateA, SqlStatement dateB)
-        {
-            return SqlStatement.Format("DATEDIFF(MILLISECOND,{0},{1})", dateA, dateB);
-        }
-
-
-        /// <summary>
-        /// Gets the literal date time part.
-        /// </summary>
-        /// <param name="dateExpression">The date expression.</param>
-        /// <param name="operationType">Type of the operation.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralDateTimePart(SqlStatement dateExpression, SpecialExpressionType operationType)
-        {
-            return SqlStatement.Format("EXTRACT({0} FROM {1})", operationType.ToString().ToUpper(), dateExpression);
-        }
-
-
-        /// <summary>
-        /// Gets the literal string index of.
-        /// </summary>
-        /// <param name="baseString">The base string.</param>
-        /// <param name="searchString">The search string.</param>
-        /// <param name="startIndex">The start index.</param>
-        /// <param name="count">The count.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex, SqlStatement count)
-        {
-            //trim left the string
-            var substring = GetLiteralSubString(baseString, startIndex, count);
-
-            var substringIndexOf = SqlStatement.Format("STRPOS({0},{1})", substring, searchString).ToString();
-            // TODO: the start index MUST be handled above at code generation
-            var indexOf = GetLiteralAdd(substringIndexOf, startIndex);
-
-            return indexOf;
-        }
-
-        /// <summary>
-        /// This function should return the first index of the string 'searchString' in a string 'baseString' but starting in 'the startIndex' index . This can be a problem since most of database
-        /// engines doesn't have such overload of SUBSTR, the base implementation do it in a pretty complex with the goal of be most generic syntax as possible using a set of primitives(SUBSTRING(X,X,X) and STRPOS(X,X),+ , *).
-        /// This function is usually used in others methods of this sqlprovider.
-        /// </summary>
-        /// <remarks>
-        /// In the impleementation you should pay atention that in some database engines the indexes of arrays or strings are shifted one unit.
-        /// ie: in .NET stringExpression.Substring(2,2) should be translated as SUBSTRING (stringExpression, 3 , 2) since the first element in sqlserver in a SqlStatement has index=1
-        protected virtual SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex)
-        {
-            var substring = GetLiteralSubString(baseString, startIndex);
-
-            var substringIndexOf = SqlStatement.Format("STRPOS({0},{1})", substring, searchString);
-
-            return GetLiteralMultiply(GetLiteralAdd(substringIndexOf, startIndex), substringIndexOf);
-        }
-
-        /// <summary>
-        /// Gets the literal string index of.
-        /// </summary>
-        /// <param name="baseString">The base string.</param>
-        /// <param name="searchString">The search string.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString)
-        {
-            return SqlStatement.Format("STRPOS({0},{1})", baseString, searchString);
-        }
-
-        /// <summary>
-        /// Gets the literal string remove.
-        /// </summary>
-        /// <param name="baseString">The base string.</param>
-        /// <param name="startIndex">The start index.</param>
-        /// <param name="count">The count.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringRemove(SqlStatement baseString, SqlStatement startIndex, SqlStatement count)
-        {
-            return GetLiteralStringConcat(
-                    GetLiteralSubString(baseString, SqlStatement.Format(SpecificVendorStringIndexStart.ToString()), startIndex),
-                    GetLiteralSubString(baseString, GetLiteralAdd(startIndex, count).ToString(), GetLiteralStringLength(baseString)));
-        }
-
-        /// <summary>
-        /// Gets the literal string remove.
-        /// </summary>
-        /// <param name="baseString">The base string.</param>
-        /// <param name="startIndex">The start index.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringRemove(SqlStatement baseString, SqlStatement startIndex)
-        {
-            return GetLiteralSubString(baseString, "1", startIndex);
-        }
-
-        /// <summary>
-        /// Gets the literal string replace.
-        /// </summary>
-        /// <param name="stringExpresision">The string expresision.</param>
-        /// <param name="searchString">The search string.</param>
-        /// <param name="replacementstring">The replacementstring.</param>
-        /// <returns></returns>
-        protected SqlStatement GetLiteralStringReplace(SqlStatement stringExpresision, SqlStatement searchString, SqlStatement replacementstring)
-        {
-            return SqlStatement.Format("REPLACE({0},{1},{2})", stringExpresision, searchString, replacementstring);
-        }
-
-        /// <summary>
-        /// Gets the literal string insert.
-        /// </summary>
-        /// <param name="stringExpression">The string expression.</param>
-        /// <param name="position">The position.</param>
-        /// <param name="insertString">The insert string.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringInsert(SqlStatement stringExpression, SqlStatement position, SqlStatement insertString)
-        {
-
-            return this.GetLiteralStringConcat(
-                            this.GetLiteralStringConcat(
-                                            GetLiteralSubString(stringExpression, "1", position),
-                                            insertString),
-                            this.GetLiteralSubString(stringExpression, GetLiteralAdd(position, "1")));
-        }
-
-
-        /// <summary>
-        /// Returns an operation between two SELECT clauses (UNION, UNION ALL, etc.)
-        /// </summary>
-        /// <param name="selectOperator"></param>
-        /// <param name="selectA"></param>
-        /// <param name="selectB"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLiteral(SelectOperatorType selectOperator, SqlStatement selectA, SqlStatement selectB)
-        {
-            switch (selectOperator)
-            {
-            case SelectOperatorType.Union:
-                return GetLiteralUnion(selectA, selectB);
-            case SelectOperatorType.UnionAll:
-                return GetLiteralUnionAll(selectA, selectB);
-            case SelectOperatorType.Intersection:
-                return GetLiteralIntersect(selectA, selectB);
-            case SelectOperatorType.Exception:
-                return GetLiteralExcept(selectA, selectB);
-            default:
-                throw new ArgumentOutOfRangeException(selectOperator.ToString());
-            }
-        }
-
-        /// <summary>
-        /// Places the expression into parenthesis
-        /// </summary>
-        /// <param name="a"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetParenthesis(SqlStatement a)
-        {
-            return SqlStatement.Format("({0})", a);
-        }
-
-        /// <summary>
-        /// Returns a column related to a table.
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="column"></param>
-        /// <returns></returns>
-        public virtual string GetColumn(string table, string column)
-        {
-            return string.Format("{0}.{1}", table, GetColumn(column));
-        }
-
-        /// <summary>
-        /// Returns a column related to a table.
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="column"></param>
-        /// <returns></returns>
-        public string GetColumn(string column)
-        {
-            return GetSafeNamePart(column);
-        }
-
-        /// <summary>
-        /// Returns a table alias
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="alias"></param>
-        /// <returns></returns>
-        public virtual string GetTableAsAlias(string table, string alias)
-        {
-            return string.Format("{0} {1}", GetTable(table), GetTableAlias(alias));
-        }
-
-        /// <summary>
-        /// Returns a table alias
-        /// Ensures about the right case
-        /// </summary>
-        /// <param name="table"></param>
-        /// <param name="alias"></param>
-        /// <returns></returns>
-        public virtual string GetSubQueryAsAlias(string subquery, string alias)
-        {
-            return string.Format("({0}) {1}", subquery, GetTableAlias(alias));
-        }
-
-        /// <summary>
-        /// Returns a table alias
-        /// </summary>
-        /// <param name="table"></param>
-        /// <returns></returns>
-        public virtual string GetTable(string table)
-        {
-            // we use the full version, since the table name may include the schema
-            return GetSafeName(table);
-        }
-
-        /// <summary>
-        /// Joins a list of table selection to make a FROM clause
-        /// </summary>
-        /// <param name="tables"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetFromClause(SqlStatement[] tables)
-        {
-            if (tables.Length == 0)
-                return SqlStatement.Empty;
-            return SqlStatement.Format("FROM {0}", SqlStatement.Join(", ", tables));
-        }
-
-        /// <summary>
-        /// Concatenates all join clauses
-        /// </summary>
-        /// <param name="joins"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetJoinClauses(SqlStatement[] joins)
-        {
-            if (joins.Length == 0)
-                return SqlStatement.Empty;
-            var space = " ";
-            return space + SqlStatement.Join(NewLine + space, joins);
-        }
-
-        /// <summary>
-        /// Returns an INNER JOIN syntax
-        /// </summary>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetInnerJoinClause(SqlStatement joinedTable, SqlStatement joinExpression)
-        {
-            return SqlStatement.Format("INNER JOIN {0} ON {1}", joinedTable, joinExpression);
-        }
-
-        /// <summary>
-        /// Returns a LEFT JOIN syntax
-        /// </summary>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLeftOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression)
-        {
-            return SqlStatement.Format("LEFT JOIN {0} ON {1}", joinedTable, joinExpression);
-        }
-
-        /// <summary>
-        /// Returns a RIGHT JOIN syntax
-        /// </summary>
-        /// <param name="joinedTable"></param>
-        /// <param name="joinExpression"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetRightOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression)
-        {
-            return SqlStatement.Format("RIGHT JOIN {0} ON {1}", joinedTable, joinExpression);
-        }
-
-        /// <summary>
-        /// Joins a list of conditions to make a WHERE clause
-        /// </summary>
-        /// <param name="wheres"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetWhereClause(SqlStatement[] wheres)
-        {
-            if (wheres.Length == 0)
-                return SqlStatement.Empty;
-            return SqlStatement.Format("WHERE ({0})", SqlStatement.Join(") AND (", wheres));
-        }
-
-        /// <summary>
-        /// Joins a list of conditions to make a HAVING clause
-        /// </summary>
-        /// <param name="havings"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetHavingClause(SqlStatement[] havings)
-        {
-            if (havings.Length == 0)
-                return SqlStatement.Empty;
-            return SqlStatement.Format("HAVING {0}", SqlStatement.Join(" AND ", havings));
-        }
-
-        /// <summary>
-        /// Joins a list of operands to make a SELECT clause
-        /// </summary>
-        /// <param name="selects"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetSelectClause(SqlStatement[] selects)
-        {
-            if (selects.Length == 0)
-                return SqlStatement.Empty;
-            return SqlStatement.Format("SELECT {0}", SqlStatement.Join(", ", selects));
-        }
-
-        /// <summary>
-        /// Joins a list of operands to make a SELECT clause
-        /// </summary>
-        /// <param name="selects"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetSelectDistinctClause(SqlStatement[] selects)
-        {
-            if (selects.Length == 0)
-                return SqlStatement.Empty;
-            return SqlStatement.Format("SELECT DISTINCT {0}", SqlStatement.Join(", ", selects));
-        }
-
-        /// <summary>
-        /// Returns all table columns (*)
-        /// </summary>
-        /// <returns></returns>
-        public virtual string GetColumns()
-        {
-            return "*";
-        }
-
-        /// <summary>
-        /// Returns a literal parameter name
-        /// </summary>
-        /// <returns></returns>
-        public virtual string GetParameterName(string nameBase)
-        {
-            return string.Format(":{0}", nameBase);
-        }
-
-        /// <summary>
-        /// Returns a valid alias syntax for the given table
-        /// </summary>
-        /// <param name="nameBase"></param>
-        /// <returns></returns>
-        public virtual string GetTableAlias(string nameBase)
-        {
-            return string.Format("{0}$", nameBase);
-        }
-
-        /// <summary>
-        /// Gets the literal add.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralAdd(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} + {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal add checked.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralAddChecked(SqlStatement a, SqlStatement b)
-        {
-            return GetLiteralAdd(a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal and.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralAnd(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("({0}) AND ({1})", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal and also.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralAndAlso(SqlStatement a, SqlStatement b)
-        {
-            return GetLiteralAnd(a, b);
-        }
-
-        /// <summary>
-        /// Gets the length of the literal array.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralArrayLength(SqlStatement a, SqlStatement b)
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Gets the index of the literal array.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralArrayIndex(SqlStatement a, SqlStatement b)
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Gets the literal call.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralCall(SqlStatement a)
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Gets the literal coalesce.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralCoalesce(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("COALESCE({0}, {1})", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal conditional.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <param name="c">The c.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralConditional(SqlStatement a, SqlStatement b, SqlStatement c)
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Gets the literal convert.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="newType">The new type.</param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLiteralConvert(SqlStatement a, Type newType)
-        {
-            return a;
-        }
-
-        /// <summary>
-        /// Gets the literal divide.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralDivide(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} / {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal equal.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralEqual(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} = {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal exclusive or.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralExclusiveOr(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("({0}) XOR ({1})", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal greater than.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralGreaterThan(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} > {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal greater than or equal.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralGreaterThanOrEqual(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} >= {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal left shift.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralLeftShift(SqlStatement a, SqlStatement b)
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Gets the literal less than.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralLessThan(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} < {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal less than or equal.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralLessThanOrEqual(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} <= {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal modulo.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralModulo(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} % {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal multiply.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMultiply(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} * {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal multiply checked.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMultiplyChecked(SqlStatement a, SqlStatement b)
-        {
-            return GetLiteralMultiply(a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal negate.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralNegate(SqlStatement a)
-        {
-            return SqlStatement.Format("-{0}", a);
-        }
-
-        /// <summary>
-        /// Gets the literal unary plus.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralUnaryPlus(SqlStatement a)
-        {
-            return SqlStatement.Format("+{0}", a);
-        }
-
-        /// <summary>
-        /// Gets the literal negate checked.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralNegateChecked(SqlStatement a)
-        {
-            return GetLiteralNegate(a);
-        }
-
-        /// <summary>
-        /// Gets the literal not.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralNot(SqlStatement a)
-        {
-            return SqlStatement.Format("NOT {0}", a);
-        }
-
-        /// <summary>
-        /// Gets the literal not equal.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralNotEqual(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} <> {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal or.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralOr(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("({0}) OR ({1})", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal or else.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralOrElse(SqlStatement a, SqlStatement b)
-        {
-            return GetLiteralOr(a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal power.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralPower(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("POWER ({0}, {1})", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal right shift.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralRightShift(SqlStatement a, SqlStatement b)
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// Gets the literal subtract.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralSubtract(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} - {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal subtract checked.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralSubtractChecked(SqlStatement a, SqlStatement b)
-        {
-            return GetLiteralSubtract(a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal is null.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralIsNull(SqlStatement a)
-        {
-            return SqlStatement.Format("{0} IS NULL", a);
-        }
-
-        /// <summary>
-        /// Gets the literal is not null.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralIsNotNull(SqlStatement a)
-        {
-            return SqlStatement.Format("{0} IS NOT NULL", a);
-        }
-
-        /// <summary>
-        /// Gets the literal string concat.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
-        {
-            // for some vendors, it is "CONCAT(a,b)"
-            return SqlStatement.Format("{0} || {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the length of the literal string.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringLength(SqlStatement a)
-        {
-            return SqlStatement.Format("CHARACTER_LENGTH({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal string to upper.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringToUpper(SqlStatement a)
-        {
-            return SqlStatement.Format("UCASE({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal string to lower.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralStringToLower(SqlStatement a)
-        {
-            return SqlStatement.Format("LCASE({0})", a);
-        }
-
-
-        /// <summary>
-        /// Gets the literal trim.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralTrim(SqlStatement a)
-        {
-            return SqlStatement.Format("TRIM({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal L trim.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralLeftTrim(SqlStatement a)
-        {
-            return SqlStatement.Format("LTRIM({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal R trim.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralRightTrim(SqlStatement a)
-        {
-            return SqlStatement.Format("RTRIM({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal sub string.
-        /// </summary>
-        /// <param name="baseString">The base string.</param>
-        /// <param name="startIndex">The start index.</param>
-        /// <param name="count">The count.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex, SqlStatement count)
-        {
-            //in standard sql base SqlStatement index is 1 instead 0
-            return SqlStatement.Format("SUBSTR({0}, {1}, {2})", baseString, startIndex, count);
-        }
-
-        /// <summary>
-        /// Gets the literal sub string.
-        /// </summary>
-        /// <param name="baseString">The base string.</param>
-        /// <param name="startIndex">The start index.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex)
-        {
-            //in standard sql base SqlStatement index is 1 instead 0
-            return SqlStatement.Format("SUBSTR({0}, {1})", baseString, startIndex);
-        }
-
-        /// <summary>
-        /// Gets the literal like.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralLike(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} LIKE {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the literal count.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralCount(SqlStatement a)
-        {
-            return SqlStatement.Format("COUNT({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal min.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMin(SqlStatement a)
-        {
-            return SqlStatement.Format("MIN({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal max.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralMax(SqlStatement a)
-        {
-            return SqlStatement.Format("MAX({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal sum.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralSum(SqlStatement a)
-        {
-            return SqlStatement.Format("SUM({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal average.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralAverage(SqlStatement a)
-        {
-            return SqlStatement.Format("AVG({0})", a);
-        }
-
-        /// <summary>
-        /// Gets the literal in.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralIn(SqlStatement a, SqlStatement b)
-        {
-            return SqlStatement.Format("{0} IN {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the null literal.
-        /// </summary>
-        /// <returns></returns>
-        protected virtual SqlStatement GetNullLiteral()
-        {
-            return "NULL";
-        }
-
-        /// <summary>
-        /// Returns a LIMIT clause around a SELECT clause
-        /// </summary>
-        /// <param name="select">SELECT clause</param>
-        /// <param name="limit">limit value (number of columns to be returned)</param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
-        {
-            return SqlStatement.Format("{0} LIMIT {1}", select, limit);
-        }
-
-        /// <summary>
-        /// Returns a LIMIT clause around a SELECT clause, with offset
-        /// </summary>
-        /// <param name="select">SELECT clause</param>
-        /// <param name="limit">limit value (number of columns to be returned)</param>
-        /// <param name="offset">first row to be returned (starting from 0)</param>
-        /// <param name="offsetAndLimit">limit+offset</param>
-        /// <returns></returns>
-        public virtual SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
-        {
-            // default SQL syntax: LIMIT limit OFFSET offset
-            return SqlStatement.Format("{0} LIMIT {1} OFFSET {2}", select, limit, offset);
-        }
-
-        /// <summary>
-        /// Gets the literal for a given string.
-        /// </summary>
-        /// <param name="str">The STR.</param>
-        /// <returns></returns>
-        protected virtual string GetLiteral(string str)
-        {
-            return string.Format("'{0}'", str.Replace("'", "''"));
-        }
-
-        /// <summary>
-        /// Gets the literal array.
-        /// </summary>
-        /// <param name="array">The array.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteral(Array array)
-        {
-            var listItems = new List<SqlStatement>();
-            foreach (object o in array)
-                listItems.Add(GetLiteral(o));
-            return SqlStatement.Format("({0})", SqlStatement.Join(", ", listItems.ToArray()));
-        }
-
-        /// <summary>
-        /// Returns an ORDER criterium
-        /// </summary>
-        /// <param name="expression"></param>
-        /// <param name="descending"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetOrderByColumn(SqlStatement expression, bool descending)
-        {
-            if (!descending)
-                return expression;
-            return SqlStatement.Format("{0} DESC", expression);
-        }
-
-        /// <summary>
-        /// Joins a list of conditions to make a ORDER BY clause
-        /// </summary>
-        /// <param name="orderBy"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetOrderByClause(SqlStatement[] orderBy)
-        {
-            if (orderBy.Length == 0)
-                return SqlStatement.Empty;
-            return SqlStatement.Format("ORDER BY {0}", SqlStatement.Join(", ", orderBy));
-        }
-
-        /// <summary>
-        /// Joins a list of conditions to make a GROUP BY clause
-        /// </summary>
-        /// <param name="groupBy"></param>
-        /// <returns></returns>
-        public virtual SqlStatement GetGroupByClause(SqlStatement[] groupBy)
-        {
-            if (groupBy.Length == 0)
-                return SqlStatement.Empty;
-            return SqlStatement.Format("GROUP BY {0}", SqlStatement.Join(", ", groupBy));
-        }
-
-        /// <summary>
-        /// Gets the literal union.
-        /// </summary>
-        /// <param name="selectA">The select A.</param>
-        /// <param name="selectB">The select B.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralUnion(SqlStatement selectA, SqlStatement selectB)
-        {
-            return SqlStatement.Format("{0}{2}UNION{2}{1}", selectA, selectB, NewLine);
-        }
-
-        /// <summary>
-        /// Gets the literal union all.
-        /// </summary>
-        /// <param name="selectA">The select A.</param>
-        /// <param name="selectB">The select B.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralUnionAll(SqlStatement selectA, SqlStatement selectB)
-        {
-            return SqlStatement.Format("{0}{2}UNION ALL{2}{1}", selectA, selectB, NewLine);
-        }
-
-        /// <summary>
-        /// Gets the literal intersect.
-        /// </summary>
-        /// <param name="selectA">The select A.</param>
-        /// <param name="selectB">The select B.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralIntersect(SqlStatement selectA, SqlStatement selectB)
-        {
-            return SqlStatement.Format("{0}{2}INTERSECT{2}{1}", selectA, selectB, NewLine);
-        }
-
-        /// <summary>
-        /// Gets the literal except.
-        /// </summary>
-        /// <param name="selectA">The select A.</param>
-        /// <param name="selectB">The select B.</param>
-        /// <returns></returns>
-        protected virtual SqlStatement GetLiteralExcept(SqlStatement selectA, SqlStatement selectB)
-        {
-            return SqlStatement.Format("{0}{2}EXCEPT{2}{1}", selectA, selectB, NewLine);
-        }
-
-        /// <summary>
-        /// given 'User', return '[User]' to prevent a SQL keyword conflict
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public virtual string GetSafeName(string name)
-        {
-            string[] nameParts = name.Split('.');
-            for (int index = 0; index < nameParts.Length; index++)
-            {
-                nameParts[index] = GetSafeNamePart(nameParts[index]);
-            }
-            return string.Join(".", nameParts);
-        }
-
-        /// <summary>
-        /// Gets the safe name part.
-        /// </summary>
-        /// <param name="namePart">The name part.</param>
-        /// <returns></returns>
-        protected virtual string GetSafeNamePart(string namePart)
-        {
-            return IsMadeSafe(namePart) ? namePart : MakeNameSafe(namePart);
-        }
-
-        /// <summary>
-        /// Determines whether [is made safe] [the specified name part].
-        /// </summary>
-        /// <param name="namePart">The name part.</param>
-        /// <returns>
-        ///     <c>true</c> if [is made safe] [the specified name part]; otherwise, <c>false</c>.
-        /// </returns>
-        protected virtual bool IsMadeSafe(string namePart)
-        {
-            var l = namePart.Length;
-            if (l < 2)
-                return false;
-            return namePart[0] == SafeNameStartQuote && namePart[l - 1] == SafeNameEndQuote;
-        }
-
-        /// <summary>
-        /// Gets the safe name start quote.
-        /// </summary>
-        /// <value>The safe name start quote.</value>
-        protected virtual char SafeNameStartQuote { get { return '"'; } }
-        /// <summary>
-        /// Gets the safe name end quote.
-        /// </summary>
-        /// <value>The safe name end quote.</value>
-        protected virtual char SafeNameEndQuote { get { return '"'; } }
-
-        /// <summary>
-        /// Makes the name safe.
-        /// </summary>
-        /// <param name="namePart">The name part.</param>
-        /// <returns></returns>
-        protected virtual string MakeNameSafe(string namePart)
-        {
-            return namePart.Enquote(SafeNameStartQuote, SafeNameEndQuote);
-        }
-
-        private static readonly Regex _fieldIdentifierEx = new Regex(@"\[(?<var>[\w.]+)\]",
-                                                                     RegexOptions.Singleline |
-                                                                     RegexOptions.ExplicitCapture |
-                                                                     RegexOptions.Compiled);
-
-        public virtual string GetSafeQuery(string sqlString)
-        {
-            if (sqlString == null)
-                return null;
-            return _fieldIdentifierEx.Replace(sqlString, delegate(Match e)
-            {
-                var field = e.Groups[1].Value;
-                var safeField = GetSafeNamePart(field);
-                return safeField;
-            });
-        }
-
-        // TODO: remove this
-        public virtual bool StringIndexStartsAtOne
-        {
-            get { return true; }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text.RegularExpressions;
+
+using DbLinq.Data.Linq.Sql;
+using DbLinq.Data.Linq.Sugar.Expressions;
+
+using DbLinq.Util;
+
+namespace DbLinq.Vendor.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SqlProvider : ISqlProvider
+    {
+        public virtual ExpressionTranslator GetTranslator()
+        {
+            return new ExpressionTranslator();
+        }
+
+        /// <summary>
+        /// Builds an insert clause
+        /// </summary>
+        /// <param name="table">Table name</param>
+        /// <param name="inputColumns">Columns to be inserted</param>
+        /// <param name="inputValues">Values to be inserted into columns</param>
+        /// <returns></returns>
+        public virtual SqlStatement GetInsert(SqlStatement table, IList<SqlStatement> inputColumns, IList<SqlStatement> inputValues)
+        {
+            if (inputColumns.Count == 0)
+                return SqlStatement.Empty;
+
+            var insertBuilder = new SqlStatementBuilder("INSERT INTO ");
+            insertBuilder.Append(table);
+            insertBuilder.AppendFormat(" ({0})", SqlStatement.Join(", ", inputColumns));
+            insertBuilder.Append(" VALUES");
+            insertBuilder.AppendFormat(" ({0})", SqlStatement.Join(", ", inputValues));
+            return insertBuilder.ToSqlStatement();
+        }
+
+        /// <summary>
+        /// Builds the statements that gets back the IDs for the inserted statement
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="autoPKColumn">Auto-generated PK columns for reference (i.e. AUTO_INCREMENT)</param>
+        /// <param name="inputPKColumns">PK columns for reference</param>
+        /// <param name="inputPKValues">PK values for reference</param>
+        /// <param name="outputParameters">Expected output parameters</param>
+        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
+        /// <returns></returns>
+        public virtual SqlStatement GetInsertIds(SqlStatement table, IList<SqlStatement> autoPKColumn, IList<SqlStatement> pkColumns, IList<SqlStatement> pkValues, IList<SqlStatement> outputColumns, IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions)
+        {
+            if (autoPKColumn.Count == outputParameters.Count)
+                return "SELECT @@IDENTITY";
+
+            var insertIds = new SqlStatementBuilder("SELECT ");
+            insertIds.AppendFormat(" ({0})", SqlStatement.Join(", ", outputColumns));
+            insertIds.Append(" FROM ");
+            insertIds.Append(table);
+            insertIds.Append(" WHERE ");
+            bool valueSet = false;
+            if (autoPKColumn.Count > 0)
+            {
+                insertIds.AppendFormat("{0} = @@IDENTITY", autoPKColumn[0]);
+                valueSet = true;
+            }
+            for (IEnumerator<SqlStatement> column = pkColumns.GetEnumerator(), value = pkValues.GetEnumerator(); column.MoveNext() && value.MoveNext();)
+            {
+                if (valueSet)
+                    insertIds.Append(" AND ");
+                insertIds.AppendFormat("{0} = {1}", column.Current, value.Current);
+                valueSet = true;
+            }
+            return insertIds.ToSqlStatement();
+        }
+
+        /// <summary>
+        /// Builds an update clause
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="inputColumns">Columns to be inserted</param>
+        /// <param name="inputValues">Values to be inserted into columns</param>
+        /// <param name="outputParameters">Expected output parameters</param>
+        /// <param name="outputExpressions">Expressions (to help generate output parameters)</param>
+        /// <param name="inputPKColumns">PK columns for reference</param>
+        /// <param name="inputPKValues">PK values for reference</param>
+        /// <returns></returns>
+        public SqlStatement GetUpdate(SqlStatement table, IList<SqlStatement> inputColumns,
+            IList<SqlStatement> inputValues,
+            IList<SqlStatement> outputParameters, IList<SqlStatement> outputExpressions,
+            IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues)
+        {
+            if (inputColumns.Count == 0)
+                return SqlStatement.Empty;
+
+            var updateBuilder = new SqlStatementBuilder("UPDATE ");
+            updateBuilder.Append(table);
+            updateBuilder.Append(" SET ");
+            bool valueSet = false;
+            for (IEnumerator<SqlStatement> column = inputColumns.GetEnumerator(), value = inputValues.GetEnumerator(); column.MoveNext() && value.MoveNext(); )
+            {
+                if (valueSet)
+                    updateBuilder.Append(", ");
+                updateBuilder.AppendFormat("{0} = {1}", column.Current, value.Current);
+                valueSet = true;
+            }
+            updateBuilder.Append(" WHERE ");
+            valueSet = false;
+            for (IEnumerator<SqlStatement> column = inputPKColumns.GetEnumerator(), value = inputPKValues.GetEnumerator(); column.MoveNext() && value.MoveNext(); )
+            {
+                if (valueSet)
+                    updateBuilder.Append(" AND ");
+                updateBuilder.AppendFormat("{0} = {1}", column.Current, value.Current);
+                valueSet = true;
+            }
+            return updateBuilder.ToSqlStatement();
+        }
+
+        /// <summary>
+        /// Builds a delete clause
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="inputPKColumns">PK columns for reference</param>
+        /// <param name="inputPKValues">PK values for reference</param>
+        /// <returns></returns>
+        public SqlStatement GetDelete(SqlStatement table, IList<SqlStatement> inputPKColumns, IList<SqlStatement> inputPKValues)
+        {
+            if (inputPKColumns.Count == 0)
+                return SqlStatement.Empty;
+
+            var deleteBuilder = new SqlStatementBuilder("DELETE FROM ");
+            deleteBuilder.Append(table);
+            deleteBuilder.Append(" WHERE ");
+            bool valueSet = false;
+            for (IEnumerator<SqlStatement> column = inputPKColumns.GetEnumerator(), value = inputPKValues.GetEnumerator(); column.MoveNext() && value.MoveNext(); )
+            {
+                if (valueSet)
+                    deleteBuilder.Append(" AND ");
+                deleteBuilder.AppendFormat("{0} = {1}", column.Current, value.Current);
+                valueSet = true;
+            }
+            return deleteBuilder.ToSqlStatement();
+        }
+
+        /// <summary>
+        /// Gets the new line string.
+        /// </summary>
+        /// <value>The new line.</value>
+        public string NewLine
+        {
+            get { return Environment.NewLine; }
+        }
+        /// <summary>
+        /// Converts a constant value to a literal representation
+        /// </summary>
+        /// <param name="literal"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLiteral(object literal)
+        {
+            if (literal == null)
+                return GetNullLiteral();
+            if (literal is string)
+                return GetLiteral((string)literal);
+            if (literal is char)
+                return GetLiteral(literal.ToString());
+            if (literal is bool)
+                return GetLiteral((bool)literal);
+            if (literal is DateTime)
+                return GetLiteral((DateTime)literal);
+            if (literal.GetType().IsArray)
+                return GetLiteral((Array)literal);
+            return Convert.ToString(literal, CultureInfo.InvariantCulture);
+        }
+
+        public virtual SqlStatement GetLiteral(DateTime literal)
+        {
+            return literal.ToString("o");
+        }
+
+        public virtual SqlStatement GetLiteral(bool literal)
+        {
+            return Convert.ToString(literal, CultureInfo.InvariantCulture);
+        }
+
+        /// <summary>
+        /// Converts a standard operator to an expression
+        /// </summary>
+        /// <param name="operationType"></param>
+        /// <param name="p"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLiteral(ExpressionType operationType, IList<SqlStatement> p)
+        {
+            switch (operationType)
+            {
+            case ExpressionType.Add:
+                return GetLiteralAdd(p[0], p[1]);
+            case ExpressionType.AddChecked:
+                return GetLiteralAddChecked(p[0], p[1]);
+            case ExpressionType.And:
+                return GetLiteralAnd(p[0], p[1]);
+            case ExpressionType.AndAlso:
+                return GetLiteralAndAlso(p[0], p[1]);
+            case ExpressionType.ArrayLength:
+                return GetLiteralArrayLength(p[0], p[1]);
+            case ExpressionType.ArrayIndex:
+                return GetLiteralArrayIndex(p[0], p[1]);
+            case ExpressionType.Call:
+                return GetLiteralCall(p[0]);
+            case ExpressionType.Coalesce:
+                return GetLiteralCoalesce(p[0], p[1]);
+            case ExpressionType.Conditional:
+                return GetLiteralConditional(p[0], p[1], p[2]);
+            //case ExpressionType.Constant:
+            //break;
+            case ExpressionType.Divide:
+                return GetLiteralDivide(p[0], p[1]);
+            case ExpressionType.Equal:
+                return GetLiteralEqual(p[0], p[1]);
+            case ExpressionType.ExclusiveOr:
+                return GetLiteralExclusiveOr(p[0], p[1]);
+            case ExpressionType.GreaterThan:
+                return GetLiteralGreaterThan(p[0], p[1]);
+            case ExpressionType.GreaterThanOrEqual:
+                return GetLiteralGreaterThanOrEqual(p[0], p[1]);
+            //case ExpressionType.Invoke:
+            //break;
+            //case ExpressionType.Lambda:
+            //break;
+            case ExpressionType.LeftShift:
+                return GetLiteralLeftShift(p[0], p[1]);
+            case ExpressionType.LessThan:
+                return GetLiteralLessThan(p[0], p[1]);
+            case ExpressionType.LessThanOrEqual:
+                return GetLiteralLessThanOrEqual(p[0], p[1]);
+            //case ExpressionType.ListInit:
+            //break;
+            //case ExpressionType.MemberAccess:
+            //    break;
+            //case ExpressionType.MemberInit:
+            //    break;
+            case ExpressionType.Modulo:
+                return GetLiteralModulo(p[0], p[1]);
+            case ExpressionType.Multiply:
+                return GetLiteralMultiply(p[0], p[1]);
+            case ExpressionType.MultiplyChecked:
+                return GetLiteralMultiplyChecked(p[0], p[1]);
+            case ExpressionType.Negate:
+                return GetLiteralNegate(p[0]);
+            case ExpressionType.UnaryPlus:
+                return GetLiteralUnaryPlus(p[0]);
+            case ExpressionType.NegateChecked:
+                return GetLiteralNegateChecked(p[0]);
+            //case ExpressionType.New:
+            //    break;
+            //case ExpressionType.NewArrayInit:
+            //    break;
+            //case ExpressionType.NewArrayBounds:
+            //    break;
+            case ExpressionType.Not:
+                return GetLiteralNot(p[0]);
+            case ExpressionType.NotEqual:
+                return GetLiteralNotEqual(p[0], p[1]);
+            case ExpressionType.Or:
+                return GetLiteralOr(p[0], p[1]);
+            case ExpressionType.OrElse:
+                return GetLiteralOrElse(p[0], p[1]);
+            //case ExpressionType.Parameter:
+            //    break;
+            case ExpressionType.Power:
+                return GetLiteralPower(p[0], p[1]);
+            //case ExpressionType.Quote:
+            //    break;
+            case ExpressionType.RightShift:
+                return GetLiteralRightShift(p[0], p[1]);
+            case ExpressionType.Subtract:
+                return GetLiteralSubtract(p[0], p[1]);
+            case ExpressionType.SubtractChecked:
+                return GetLiteralSubtractChecked(p[0], p[1]);
+            //case ExpressionType.TypeAs:
+            //    break;
+            //case ExpressionType.TypeIs:
+            //    break;
+            }
+            throw new ArgumentException(operationType.ToString());
+        }
+
+        /// <summary>
+        /// Converts a special expression type to literal
+        /// </summary>
+        /// <param name="operationType"></param>
+        /// <param name="p"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLiteral(SpecialExpressionType operationType, IList<SqlStatement> p)
+        {
+            switch (operationType) // SETuse
+            {
+            case SpecialExpressionType.IsNull:
+                return GetLiteralIsNull(p[0]);
+            case SpecialExpressionType.IsNotNull:
+                return GetLiteralIsNotNull(p[0]);
+            case SpecialExpressionType.Concat:
+                return GetLiteralStringConcat(p[0], p[1]);
+            case SpecialExpressionType.Count:
+                return GetLiteralCount(p[0]);
+            case SpecialExpressionType.Exists:
+                return GetLiteralExists(p[0]);
+            case SpecialExpressionType.Like:
+                return GetLiteralLike(p[0], p[1]);
+            case SpecialExpressionType.Min:
+                return GetLiteralMin(p[0]);
+            case SpecialExpressionType.Max:
+                return GetLiteralMax(p[0]);
+            case SpecialExpressionType.Sum:
+                return GetLiteralSum(p[0]);
+            case SpecialExpressionType.Average:
+                return GetLiteralAverage(p[0]);
+            case SpecialExpressionType.StringLength:
+                return GetLiteralStringLength(p[0]);
+            case SpecialExpressionType.ToUpper:
+                return GetLiteralStringToUpper(p[0]);
+            case SpecialExpressionType.ToLower:
+                return GetLiteralStringToLower(p[0]);
+            case SpecialExpressionType.In:
+                return GetLiteralIn(p[0], p[1]);
+            case SpecialExpressionType.Substring:
+                if (p.Count > 2)
+                    return GetLiteralSubString(p[0], p[1], p[2]);
+                return GetLiteralSubString(p[0], p[1]);
+            case SpecialExpressionType.Trim:
+            case SpecialExpressionType.LTrim:
+            case SpecialExpressionType.RTrim:
+                return GetLiteralTrim(p[0]);
+            case SpecialExpressionType.StringInsert:
+                return GetLiteralStringInsert(p[0], p[1], p[2]);
+            case SpecialExpressionType.Replace:
+                return GetLiteralStringReplace(p[0], p[1], p[2]);
+            case SpecialExpressionType.Remove:
+                if (p.Count > 2)
+                    return GetLiteralStringRemove(p[0], p[1], p[2]);
+                return GetLiteralStringRemove(p[0], p[1]);
+            case SpecialExpressionType.IndexOf:
+                if (p.Count == 2)
+                    return GetLiteralStringIndexOf(p[0], p[1]);
+                else if (p.Count == 3)
+                    return GetLiteralStringIndexOf(p[0], p[1], p[2]);
+                else if (p.Count == 4)
+                    return GetLiteralStringIndexOf(p[0], p[1], p[2], p[3]);
+                break;
+            case SpecialExpressionType.Year:
+            case SpecialExpressionType.Month:
+            case SpecialExpressionType.Day:
+            case SpecialExpressionType.Hour:
+            case SpecialExpressionType.Minute:
+            case SpecialExpressionType.Second:
+            case SpecialExpressionType.Millisecond:
+                return GetLiteralDateTimePart(p[0], operationType);
+            case SpecialExpressionType.Date:
+                return p[0];
+            case SpecialExpressionType.DateDiffInMilliseconds:
+                return GetLiteralDateDiff(p[0], p[1]);
+            case SpecialExpressionType.Abs:
+                return GetLiteralMathAbs(p[0]);
+            case SpecialExpressionType.Exp:
+                return GetLiteralMathExp(p[0]);
+            case SpecialExpressionType.Floor:
+                return GetLiteralMathFloor(p[0]);
+            case SpecialExpressionType.Ln:
+                return GetLiteralMathLn(p[0]);
+
+            case SpecialExpressionType.Log:
+                if (p.Count == 1)
+                    return GetLiteralMathLog(p[0]);
+                else
+                    return GetLiteralMathLog(p[0], p[1]);
+            case SpecialExpressionType.Pow:
+                return GetLiteralMathPow(p[0], p[1]);
+            case SpecialExpressionType.Round:
+                return GetLiteralMathRound(p[0]);
+            case SpecialExpressionType.Sign:
+                return GetLiteralMathSign(p[0]);
+            case SpecialExpressionType.Sqrt:
+                return GetLiteralMathSqrt(p[0]);
+
+            }
+            throw new ArgumentException(operationType.ToString());
+        }
+
+        protected virtual SqlStatement GetLiteralExists(SqlStatement sqlStatement)
+        {
+            return SqlStatement.Format("EXISTS {0}", sqlStatement);
+        }
+
+        private int SpecificVendorStringIndexStart
+        {
+            get
+            {
+                if (this.StringIndexStartsAtOne)
+                    return 1;
+                else return 0;
+            }
+        }
+        /// <summary>
+        /// Gets the literal math SQRT.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathSqrt(SqlStatement p)
+        {
+            return SqlStatement.Format("SQRT({0})", p);
+        }
+
+        /// <summary>
+        /// Gets the literal math sign.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathSign(SqlStatement p)
+        {
+            return SqlStatement.Format("SIGN({0})", p);
+        }
+
+        /// <summary>
+        /// Gets the literal math round.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathRound(SqlStatement p)
+        {
+            return SqlStatement.Format("ROUND({0})", p);
+        }
+
+        /// <summary>
+        /// Gets the literal math pow.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <param name="p_2">The P_2.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathPow(SqlStatement p, SqlStatement p_2)
+        {
+            return SqlStatement.Format("POW({0},{1})", p, p_2);
+        }
+
+        /// <summary>
+        /// Gets the literal math log.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathLog(SqlStatement p)
+        {
+            return SqlStatement.Format("LOG({0})", p);
+        }
+
+        /// <summary>
+        /// Gets the literal math log.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <param name="p_2">The P_2.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathLog(SqlStatement p, SqlStatement p_2)
+        {
+            return SqlStatement.Format("LOG({0},{1})", p, p_2);
+        }
+
+        /// <summary>
+        /// Gets the literal math ln.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathLn(SqlStatement p)
+        {
+            return SqlStatement.Format("LN({0})", p);
+        }
+
+        /// <summary>
+        /// Gets the literal math floor.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathFloor(SqlStatement p)
+        {
+            return SqlStatement.Format("FLOOR({0})", p);
+        }
+
+        /// <summary>
+        /// Gets the literal math exp.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathExp(SqlStatement p)
+        {
+            return SqlStatement.Format("EXP({0})", p);
+        }
+
+        /// <summary>
+        /// Gets the literal math abs.
+        /// </summary>
+        /// <param name="p">The p.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMathAbs(SqlStatement p)
+        {
+            return SqlStatement.Format("ABS({0})", p);
+        }
+
+        /// <summary>
+        /// It should return a int with de difference in milliseconds between two dates.
+        /// It is used in a lot of tasks, ie: operations of timespams ej: timespam.Minutes or timespam.TotalMinutes
+        /// </summary>
+        /// <remarks>
+        /// In the implementation you should pay atention in overflows inside the database engine, since a difference of dates in milliseconds
+        /// maybe deliver a very big integer int. Ie: sqlServer provider  has to do some tricks with castings for implementing such requeriments.
+        /// </remarks>
+        /// <param name="dateA"></param>
+        /// <param name="dateB"></param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralDateDiff(SqlStatement dateA, SqlStatement dateB)
+        {
+            return SqlStatement.Format("DATEDIFF(MILLISECOND,{0},{1})", dateA, dateB);
+        }
+
+
+        /// <summary>
+        /// Gets the literal date time part.
+        /// </summary>
+        /// <param name="dateExpression">The date expression.</param>
+        /// <param name="operationType">Type of the operation.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralDateTimePart(SqlStatement dateExpression, SpecialExpressionType operationType)
+        {
+            return SqlStatement.Format("EXTRACT({0} FROM {1})", operationType.ToString().ToUpper(), dateExpression);
+        }
+
+
+        /// <summary>
+        /// Gets the literal string index of.
+        /// </summary>
+        /// <param name="baseString">The base string.</param>
+        /// <param name="searchString">The search string.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="count">The count.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex, SqlStatement count)
+        {
+            //trim left the string
+            var substring = GetLiteralSubString(baseString, startIndex, count);
+
+            var substringIndexOf = SqlStatement.Format("STRPOS({0},{1})", substring, searchString).ToString();
+            // TODO: the start index MUST be handled above at code generation
+            var indexOf = GetLiteralAdd(substringIndexOf, startIndex);
+
+            return indexOf;
+        }
+
+        /// <summary>
+        /// This function should return the first index of the string 'searchString' in a string 'baseString' but starting in 'the startIndex' index . This can be a problem since most of database
+        /// engines doesn't have such overload of SUBSTR, the base implementation do it in a pretty complex with the goal of be most generic syntax as possible using a set of primitives(SUBSTRING(X,X,X) and STRPOS(X,X),+ , *).
+        /// This function is usually used in others methods of this sqlprovider.
+        /// </summary>
+        /// <remarks>
+        /// In the impleementation you should pay atention that in some database engines the indexes of arrays or strings are shifted one unit.
+        /// ie: in .NET stringExpression.Substring(2,2) should be translated as SUBSTRING (stringExpression, 3 , 2) since the first element in sqlserver in a SqlStatement has index=1
+        protected virtual SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString, SqlStatement startIndex)
+        {
+            var substring = GetLiteralSubString(baseString, startIndex);
+
+            var substringIndexOf = SqlStatement.Format("STRPOS({0},{1})", substring, searchString);
+
+            return GetLiteralMultiply(GetLiteralAdd(substringIndexOf, startIndex), substringIndexOf);
+        }
+
+        /// <summary>
+        /// Gets the literal string index of.
+        /// </summary>
+        /// <param name="baseString">The base string.</param>
+        /// <param name="searchString">The search string.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringIndexOf(SqlStatement baseString, SqlStatement searchString)
+        {
+            return SqlStatement.Format("STRPOS({0},{1})", baseString, searchString);
+        }
+
+        /// <summary>
+        /// Gets the literal string remove.
+        /// </summary>
+        /// <param name="baseString">The base string.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="count">The count.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringRemove(SqlStatement baseString, SqlStatement startIndex, SqlStatement count)
+        {
+            return GetLiteralStringConcat(
+                    GetLiteralSubString(baseString, SqlStatement.Format(SpecificVendorStringIndexStart.ToString()), startIndex),
+                    GetLiteralSubString(baseString, GetLiteralAdd(startIndex, count).ToString(), GetLiteralStringLength(baseString)));
+        }
+
+        /// <summary>
+        /// Gets the literal string remove.
+        /// </summary>
+        /// <param name="baseString">The base string.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringRemove(SqlStatement baseString, SqlStatement startIndex)
+        {
+            return GetLiteralSubString(baseString, "1", startIndex);
+        }
+
+        /// <summary>
+        /// Gets the literal string replace.
+        /// </summary>
+        /// <param name="stringExpresision">The string expresision.</param>
+        /// <param name="searchString">The search string.</param>
+        /// <param name="replacementstring">The replacementstring.</param>
+        /// <returns></returns>
+        protected SqlStatement GetLiteralStringReplace(SqlStatement stringExpresision, SqlStatement searchString, SqlStatement replacementstring)
+        {
+            return SqlStatement.Format("REPLACE({0},{1},{2})", stringExpresision, searchString, replacementstring);
+        }
+
+        /// <summary>
+        /// Gets the literal string insert.
+        /// </summary>
+        /// <param name="stringExpression">The string expression.</param>
+        /// <param name="position">The position.</param>
+        /// <param name="insertString">The insert string.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringInsert(SqlStatement stringExpression, SqlStatement position, SqlStatement insertString)
+        {
+
+            return this.GetLiteralStringConcat(
+                            this.GetLiteralStringConcat(
+                                            GetLiteralSubString(stringExpression, "1", position),
+                                            insertString),
+                            this.GetLiteralSubString(stringExpression, GetLiteralAdd(position, "1")));
+        }
+
+
+        /// <summary>
+        /// Returns an operation between two SELECT clauses (UNION, UNION ALL, etc.)
+        /// </summary>
+        /// <param name="selectOperator"></param>
+        /// <param name="selectA"></param>
+        /// <param name="selectB"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLiteral(SelectOperatorType selectOperator, SqlStatement selectA, SqlStatement selectB)
+        {
+            switch (selectOperator)
+            {
+            case SelectOperatorType.Union:
+                return GetLiteralUnion(selectA, selectB);
+            case SelectOperatorType.UnionAll:
+                return GetLiteralUnionAll(selectA, selectB);
+            case SelectOperatorType.Intersection:
+                return GetLiteralIntersect(selectA, selectB);
+            case SelectOperatorType.Exception:
+                return GetLiteralExcept(selectA, selectB);
+            default:
+                throw new ArgumentOutOfRangeException(selectOperator.ToString());
+            }
+        }
+
+        /// <summary>
+        /// Places the expression into parenthesis
+        /// </summary>
+        /// <param name="a"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetParenthesis(SqlStatement a)
+        {
+            return SqlStatement.Format("({0})", a);
+        }
+
+        /// <summary>
+        /// Returns a column related to a table.
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="column"></param>
+        /// <returns></returns>
+        public virtual string GetColumn(string table, string column)
+        {
+            return string.Format("{0}.{1}", table, GetColumn(column));
+        }
+
+        /// <summary>
+        /// Returns a column related to a table.
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="column"></param>
+        /// <returns></returns>
+        public string GetColumn(string column)
+        {
+            return GetSafeNamePart(column);
+        }
+
+        /// <summary>
+        /// Returns a table alias
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="alias"></param>
+        /// <returns></returns>
+        public virtual string GetTableAsAlias(string table, string alias)
+        {
+            return string.Format("{0} {1}", GetTable(table), GetTableAlias(alias));
+        }
+
+        /// <summary>
+        /// Returns a table alias
+        /// Ensures about the right case
+        /// </summary>
+        /// <param name="table"></param>
+        /// <param name="alias"></param>
+        /// <returns></returns>
+        public virtual string GetSubQueryAsAlias(string subquery, string alias)
+        {
+            return string.Format("({0}) {1}", subquery, GetTableAlias(alias));
+        }
+
+        /// <summary>
+        /// Returns a table alias
+        /// </summary>
+        /// <param name="table"></param>
+        /// <returns></returns>
+        public virtual string GetTable(string table)
+        {
+            // we use the full version, since the table name may include the schema
+            return GetSafeName(table);
+        }
+
+        /// <summary>
+        /// Joins a list of table selection to make a FROM clause
+        /// </summary>
+        /// <param name="tables"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetFromClause(SqlStatement[] tables)
+        {
+            if (tables.Length == 0)
+                return SqlStatement.Empty;
+            return SqlStatement.Format("FROM {0}", SqlStatement.Join(", ", tables));
+        }
+
+        /// <summary>
+        /// Concatenates all join clauses
+        /// </summary>
+        /// <param name="joins"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetJoinClauses(SqlStatement[] joins)
+        {
+            if (joins.Length == 0)
+                return SqlStatement.Empty;
+            var space = " ";
+            return space + SqlStatement.Join(NewLine + space, joins);
+        }
+
+        /// <summary>
+        /// Returns an INNER JOIN syntax
+        /// </summary>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetInnerJoinClause(SqlStatement joinedTable, SqlStatement joinExpression)
+        {
+            return SqlStatement.Format("INNER JOIN {0} ON {1}", joinedTable, joinExpression);
+        }
+
+        /// <summary>
+        /// Returns a LEFT JOIN syntax
+        /// </summary>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLeftOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression)
+        {
+            return SqlStatement.Format("LEFT JOIN {0} ON {1}", joinedTable, joinExpression);
+        }
+
+        /// <summary>
+        /// Returns a RIGHT JOIN syntax
+        /// </summary>
+        /// <param name="joinedTable"></param>
+        /// <param name="joinExpression"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetRightOuterJoinClause(SqlStatement joinedTable, SqlStatement joinExpression)
+        {
+            return SqlStatement.Format("RIGHT JOIN {0} ON {1}", joinedTable, joinExpression);
+        }
+
+        /// <summary>
+        /// Joins a list of conditions to make a WHERE clause
+        /// </summary>
+        /// <param name="wheres"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetWhereClause(SqlStatement[] wheres)
+        {
+            if (wheres.Length == 0)
+                return SqlStatement.Empty;
+            return SqlStatement.Format("WHERE ({0})", SqlStatement.Join(") AND (", wheres));
+        }
+
+        /// <summary>
+        /// Joins a list of conditions to make a HAVING clause
+        /// </summary>
+        /// <param name="havings"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetHavingClause(SqlStatement[] havings)
+        {
+            if (havings.Length == 0)
+                return SqlStatement.Empty;
+            return SqlStatement.Format("HAVING {0}", SqlStatement.Join(" AND ", havings));
+        }
+
+        /// <summary>
+        /// Joins a list of operands to make a SELECT clause
+        /// </summary>
+        /// <param name="selects"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetSelectClause(SqlStatement[] selects)
+        {
+            if (selects.Length == 0)
+                return SqlStatement.Empty;
+            return SqlStatement.Format("SELECT {0}", SqlStatement.Join(", ", selects));
+        }
+
+        /// <summary>
+        /// Joins a list of operands to make a SELECT clause
+        /// </summary>
+        /// <param name="selects"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetSelectDistinctClause(SqlStatement[] selects)
+        {
+            if (selects.Length == 0)
+                return SqlStatement.Empty;
+            return SqlStatement.Format("SELECT DISTINCT {0}", SqlStatement.Join(", ", selects));
+        }
+
+        /// <summary>
+        /// Returns all table columns (*)
+        /// </summary>
+        /// <returns></returns>
+        public virtual string GetColumns()
+        {
+            return "*";
+        }
+
+        /// <summary>
+        /// Returns a literal parameter name
+        /// </summary>
+        /// <returns></returns>
+        public virtual string GetParameterName(string nameBase)
+        {
+            return string.Format(":{0}", nameBase);
+        }
+
+        /// <summary>
+        /// Returns a valid alias syntax for the given table
+        /// </summary>
+        /// <param name="nameBase"></param>
+        /// <returns></returns>
+        public virtual string GetTableAlias(string nameBase)
+        {
+            return string.Format("{0}$", nameBase);
+        }
+
+        /// <summary>
+        /// Gets the literal add.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralAdd(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} + {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal add checked.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralAddChecked(SqlStatement a, SqlStatement b)
+        {
+            return GetLiteralAdd(a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal and.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralAnd(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("({0}) AND ({1})", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal and also.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralAndAlso(SqlStatement a, SqlStatement b)
+        {
+            return GetLiteralAnd(a, b);
+        }
+
+        /// <summary>
+        /// Gets the length of the literal array.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralArrayLength(SqlStatement a, SqlStatement b)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Gets the index of the literal array.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralArrayIndex(SqlStatement a, SqlStatement b)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Gets the literal call.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralCall(SqlStatement a)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Gets the literal coalesce.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralCoalesce(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("COALESCE({0}, {1})", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal conditional.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <param name="c">The c.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralConditional(SqlStatement a, SqlStatement b, SqlStatement c)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Gets the literal convert.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="newType">The new type.</param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLiteralConvert(SqlStatement a, Type newType)
+        {
+            return a;
+        }
+
+        /// <summary>
+        /// Gets the literal divide.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralDivide(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} / {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal equal.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralEqual(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} = {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal exclusive or.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralExclusiveOr(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("({0}) XOR ({1})", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal greater than.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralGreaterThan(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} > {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal greater than or equal.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralGreaterThanOrEqual(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} >= {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal left shift.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralLeftShift(SqlStatement a, SqlStatement b)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Gets the literal less than.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralLessThan(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} < {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal less than or equal.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralLessThanOrEqual(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} <= {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal modulo.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralModulo(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} % {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal multiply.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMultiply(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} * {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal multiply checked.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMultiplyChecked(SqlStatement a, SqlStatement b)
+        {
+            return GetLiteralMultiply(a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal negate.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralNegate(SqlStatement a)
+        {
+            return SqlStatement.Format("-{0}", a);
+        }
+
+        /// <summary>
+        /// Gets the literal unary plus.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralUnaryPlus(SqlStatement a)
+        {
+            return SqlStatement.Format("+{0}", a);
+        }
+
+        /// <summary>
+        /// Gets the literal negate checked.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralNegateChecked(SqlStatement a)
+        {
+            return GetLiteralNegate(a);
+        }
+
+        /// <summary>
+        /// Gets the literal not.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralNot(SqlStatement a)
+        {
+            return SqlStatement.Format("NOT {0}", a);
+        }
+
+        /// <summary>
+        /// Gets the literal not equal.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralNotEqual(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} <> {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal or.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralOr(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("({0}) OR ({1})", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal or else.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralOrElse(SqlStatement a, SqlStatement b)
+        {
+            return GetLiteralOr(a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal power.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralPower(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("POWER ({0}, {1})", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal right shift.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralRightShift(SqlStatement a, SqlStatement b)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// Gets the literal subtract.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralSubtract(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} - {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal subtract checked.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralSubtractChecked(SqlStatement a, SqlStatement b)
+        {
+            return GetLiteralSubtract(a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal is null.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralIsNull(SqlStatement a)
+        {
+            return SqlStatement.Format("{0} IS NULL", a);
+        }
+
+        /// <summary>
+        /// Gets the literal is not null.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralIsNotNull(SqlStatement a)
+        {
+            return SqlStatement.Format("{0} IS NOT NULL", a);
+        }
+
+        /// <summary>
+        /// Gets the literal string concat.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringConcat(SqlStatement a, SqlStatement b)
+        {
+            // for some vendors, it is "CONCAT(a,b)"
+            return SqlStatement.Format("{0} || {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the length of the literal string.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringLength(SqlStatement a)
+        {
+            return SqlStatement.Format("CHARACTER_LENGTH({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal string to upper.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringToUpper(SqlStatement a)
+        {
+            return SqlStatement.Format("UCASE({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal string to lower.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralStringToLower(SqlStatement a)
+        {
+            return SqlStatement.Format("LCASE({0})", a);
+        }
+
+
+        /// <summary>
+        /// Gets the literal trim.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralTrim(SqlStatement a)
+        {
+            return SqlStatement.Format("TRIM({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal L trim.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralLeftTrim(SqlStatement a)
+        {
+            return SqlStatement.Format("LTRIM({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal R trim.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralRightTrim(SqlStatement a)
+        {
+            return SqlStatement.Format("RTRIM({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal sub string.
+        /// </summary>
+        /// <param name="baseString">The base string.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <param name="count">The count.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex, SqlStatement count)
+        {
+            //in standard sql base SqlStatement index is 1 instead 0
+            return SqlStatement.Format("SUBSTR({0}, {1}, {2})", baseString, startIndex, count);
+        }
+
+        /// <summary>
+        /// Gets the literal sub string.
+        /// </summary>
+        /// <param name="baseString">The base string.</param>
+        /// <param name="startIndex">The start index.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralSubString(SqlStatement baseString, SqlStatement startIndex)
+        {
+            //in standard sql base SqlStatement index is 1 instead 0
+            return SqlStatement.Format("SUBSTR({0}, {1})", baseString, startIndex);
+        }
+
+        /// <summary>
+        /// Gets the literal like.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralLike(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} LIKE {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the literal count.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralCount(SqlStatement a)
+        {
+            return SqlStatement.Format("COUNT({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal min.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMin(SqlStatement a)
+        {
+            return SqlStatement.Format("MIN({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal max.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralMax(SqlStatement a)
+        {
+            return SqlStatement.Format("MAX({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal sum.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralSum(SqlStatement a)
+        {
+            return SqlStatement.Format("SUM({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal average.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralAverage(SqlStatement a)
+        {
+            return SqlStatement.Format("AVG({0})", a);
+        }
+
+        /// <summary>
+        /// Gets the literal in.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralIn(SqlStatement a, SqlStatement b)
+        {
+            return SqlStatement.Format("{0} IN {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the null literal.
+        /// </summary>
+        /// <returns></returns>
+        protected virtual SqlStatement GetNullLiteral()
+        {
+            return "NULL";
+        }
+
+        /// <summary>
+        /// Returns a LIMIT clause around a SELECT clause
+        /// </summary>
+        /// <param name="select">SELECT clause</param>
+        /// <param name="limit">limit value (number of columns to be returned)</param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit)
+        {
+            return SqlStatement.Format("{0} LIMIT {1}", select, limit);
+        }
+
+        /// <summary>
+        /// Returns a LIMIT clause around a SELECT clause, with offset
+        /// </summary>
+        /// <param name="select">SELECT clause</param>
+        /// <param name="limit">limit value (number of columns to be returned)</param>
+        /// <param name="offset">first row to be returned (starting from 0)</param>
+        /// <param name="offsetAndLimit">limit+offset</param>
+        /// <returns></returns>
+        public virtual SqlStatement GetLiteralLimit(SqlStatement select, SqlStatement limit, SqlStatement offset, SqlStatement offsetAndLimit)
+        {
+            // default SQL syntax: LIMIT limit OFFSET offset
+            return SqlStatement.Format("{0} LIMIT {1} OFFSET {2}", select, limit, offset);
+        }
+
+        /// <summary>
+        /// Gets the literal for a given string.
+        /// </summary>
+        /// <param name="str">The STR.</param>
+        /// <returns></returns>
+        protected virtual string GetLiteral(string str)
+        {
+            return string.Format("'{0}'", str.Replace("'", "''"));
+        }
+
+        /// <summary>
+        /// Gets the literal array.
+        /// </summary>
+        /// <param name="array">The array.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteral(Array array)
+        {
+            var listItems = new List<SqlStatement>();
+            foreach (object o in array)
+                listItems.Add(GetLiteral(o));
+            return SqlStatement.Format("({0})", SqlStatement.Join(", ", listItems.ToArray()));
+        }
+
+        /// <summary>
+        /// Returns an ORDER criterium
+        /// </summary>
+        /// <param name="expression"></param>
+        /// <param name="descending"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetOrderByColumn(SqlStatement expression, bool descending)
+        {
+            if (!descending)
+                return expression;
+            return SqlStatement.Format("{0} DESC", expression);
+        }
+
+        /// <summary>
+        /// Joins a list of conditions to make a ORDER BY clause
+        /// </summary>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetOrderByClause(SqlStatement[] orderBy)
+        {
+            if (orderBy.Length == 0)
+                return SqlStatement.Empty;
+            return SqlStatement.Format("ORDER BY {0}", SqlStatement.Join(", ", orderBy));
+        }
+
+        /// <summary>
+        /// Joins a list of conditions to make a GROUP BY clause
+        /// </summary>
+        /// <param name="groupBy"></param>
+        /// <returns></returns>
+        public virtual SqlStatement GetGroupByClause(SqlStatement[] groupBy)
+        {
+            if (groupBy.Length == 0)
+                return SqlStatement.Empty;
+            return SqlStatement.Format("GROUP BY {0}", SqlStatement.Join(", ", groupBy));
+        }
+
+        /// <summary>
+        /// Gets the literal union.
+        /// </summary>
+        /// <param name="selectA">The select A.</param>
+        /// <param name="selectB">The select B.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralUnion(SqlStatement selectA, SqlStatement selectB)
+        {
+            return SqlStatement.Format("{0}{2}UNION{2}{1}", selectA, selectB, NewLine);
+        }
+
+        /// <summary>
+        /// Gets the literal union all.
+        /// </summary>
+        /// <param name="selectA">The select A.</param>
+        /// <param name="selectB">The select B.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralUnionAll(SqlStatement selectA, SqlStatement selectB)
+        {
+            return SqlStatement.Format("{0}{2}UNION ALL{2}{1}", selectA, selectB, NewLine);
+        }
+
+        /// <summary>
+        /// Gets the literal intersect.
+        /// </summary>
+        /// <param name="selectA">The select A.</param>
+        /// <param name="selectB">The select B.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralIntersect(SqlStatement selectA, SqlStatement selectB)
+        {
+            return SqlStatement.Format("{0}{2}INTERSECT{2}{1}", selectA, selectB, NewLine);
+        }
+
+        /// <summary>
+        /// Gets the literal except.
+        /// </summary>
+        /// <param name="selectA">The select A.</param>
+        /// <param name="selectB">The select B.</param>
+        /// <returns></returns>
+        protected virtual SqlStatement GetLiteralExcept(SqlStatement selectA, SqlStatement selectB)
+        {
+            return SqlStatement.Format("{0}{2}EXCEPT{2}{1}", selectA, selectB, NewLine);
+        }
+
+        /// <summary>
+        /// given 'User', return '[User]' to prevent a SQL keyword conflict
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public virtual string GetSafeName(string name)
+        {
+            string[] nameParts = name.Split('.');
+            for (int index = 0; index < nameParts.Length; index++)
+            {
+                nameParts[index] = GetSafeNamePart(nameParts[index]);
+            }
+            return string.Join(".", nameParts);
+        }
+
+        /// <summary>
+        /// Gets the safe name part.
+        /// </summary>
+        /// <param name="namePart">The name part.</param>
+        /// <returns></returns>
+        protected virtual string GetSafeNamePart(string namePart)
+        {
+            return IsMadeSafe(namePart) ? namePart : MakeNameSafe(namePart);
+        }
+
+        /// <summary>
+        /// Determines whether [is made safe] [the specified name part].
+        /// </summary>
+        /// <param name="namePart">The name part.</param>
+        /// <returns>
+        ///     <c>true</c> if [is made safe] [the specified name part]; otherwise, <c>false</c>.
+        /// </returns>
+        protected virtual bool IsMadeSafe(string namePart)
+        {
+            var l = namePart.Length;
+            if (l < 2)
+                return false;
+            return namePart[0] == SafeNameStartQuote && namePart[l - 1] == SafeNameEndQuote;
+        }
+
+        /// <summary>
+        /// Gets the safe name start quote.
+        /// </summary>
+        /// <value>The safe name start quote.</value>
+        protected virtual char SafeNameStartQuote { get { return '"'; } }
+        /// <summary>
+        /// Gets the safe name end quote.
+        /// </summary>
+        /// <value>The safe name end quote.</value>
+        protected virtual char SafeNameEndQuote { get { return '"'; } }
+
+        /// <summary>
+        /// Makes the name safe.
+        /// </summary>
+        /// <param name="namePart">The name part.</param>
+        /// <returns></returns>
+        protected virtual string MakeNameSafe(string namePart)
+        {
+            return namePart.Enquote(SafeNameStartQuote, SafeNameEndQuote);
+        }
+
+        private static readonly Regex _fieldIdentifierEx = new Regex(@"\[(?<var>[\w.]+)\]",
+                                                                     RegexOptions.Singleline |
+                                                                     RegexOptions.ExplicitCapture |
+                                                                     RegexOptions.Compiled);
+
+        public virtual string GetSafeQuery(string sqlString)
+        {
+            if (sqlString == null)
+                return null;
+            return _fieldIdentifierEx.Replace(sqlString, delegate(Match e)
+            {
+                var field = e.Groups[1].Value;
+                var safeField = GetSafeNamePart(field);
+                return safeField;
+            });
+        }
+
+        // TODO: remove this
+        public virtual bool StringIndexStartsAtOne
+        {
+            get { return true; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/Vendor.ProcedureResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/Vendor.ProcedureResult.cs
@@ -1,73 +1,73 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbLinq.Vendor.Implementation
-{
-    partial class Vendor
-    {
-        /// <summary>
-        /// holds result of a stored proc call.
-        /// </summary>
-#if MONO_STRICT
-        internal
-#else
-        public
-#endif
-        class ProcedureResult : System.Data.Linq.IExecuteResult
-        {
-            readonly object[] outParamValues;
-
-            /// <summary>
-            /// Returns a parameter for given indexs.
-            /// </summary>
-            /// <param name="parameterIndex">The index of the parameter to be retrieved.</param>
-            /// <returns>
-            /// </returns>
-            public object GetParameterValue(int parameterIndex)
-            {
-                object value = outParamValues[parameterIndex];
-                return value;
-            }
-
-            /// <summary>
-            /// Gets or set the return value.
-            /// </summary>
-            /// <value></value>
-            /// <returns>
-            /// The value or result of the executed query.
-            /// </returns>
-            public object ReturnValue { get; set; }
-
-            public void Dispose() { }
-
-            public ProcedureResult(object retVal, object[] outParamValues_)
-            {
-                ReturnValue = retVal;
-                outParamValues = outParamValues_;
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbLinq.Vendor.Implementation
+{
+    partial class Vendor
+    {
+        /// <summary>
+        /// holds result of a stored proc call.
+        /// </summary>
+#if MONO_STRICT
+        internal
+#else
+        public
+#endif
+        class ProcedureResult : System.Data.Linq.IExecuteResult
+        {
+            readonly object[] outParamValues;
+
+            /// <summary>
+            /// Returns a parameter for given indexs.
+            /// </summary>
+            /// <param name="parameterIndex">The index of the parameter to be retrieved.</param>
+            /// <returns>
+            /// </returns>
+            public object GetParameterValue(int parameterIndex)
+            {
+                object value = outParamValues[parameterIndex];
+                return value;
+            }
+
+            /// <summary>
+            /// Gets or set the return value.
+            /// </summary>
+            /// <value></value>
+            /// <returns>
+            /// The value or result of the executed query.
+            /// </returns>
+            public object ReturnValue { get; set; }
+
+            public void Dispose() { }
+
+            public ProcedureResult(object retVal, object[] outParamValues_)
+            {
+                ReturnValue = retVal;
+                outParamValues = outParamValues_;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/Vendor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/Implementation/Vendor.cs
@@ -1,222 +1,222 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-using Data = DbLinq.Data;
-
-using IExecuteResult = System.Data.Linq.IExecuteResult;
-using System.Text;
-
-namespace DbLinq.Vendor.Implementation
-{
-    /// <summary>
-    /// some IVendor functionality is the same for many vendors,
-    /// implemented here as virtual functions.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    abstract partial class Vendor : IVendor
-    {
-        /// <summary>
-        /// Pings requested DB, true is result is OK.
-        /// May throw a connection exception (DataContext.DatabaseExists() handles this)
-        /// </summary>
-        /// <param name="dataContext"></param>
-        /// <returns></returns>
-        public virtual bool Ping(DataContext dataContext)
-        {
-            return dataContext.ExecuteCommand("SELECT 11") == 11;
-        }
-
-        /// <summary>
-        /// Component used to provide SQL Parts
-        /// </summary>
-        /// <value></value>
-        public abstract ISqlProvider SqlProvider { get; }
-
-        /// <summary>
-        /// Performs bulk insert.
-        /// Please notice that PKs may not be updated
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="table"></param>
-        /// <param name="rows"></param>
-        /// <param name="pageSize"></param>
-        /// <param name="transaction"></param>
-        public virtual void BulkInsert<T>(Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction) where T : class
-        {
-            throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// VendorName represents the database being handled by this vendor 'Oracle' or 'MySql'
-        /// </summary>
-        /// <value></value>
-        public abstract string VendorName { get; }
-
-        /// <summary>
-        /// Executes a stored procedure/function call
-        /// </summary>
-        /// <param name="context"></param>
-        /// <param name="method"></param>
-        /// <param name="sqlParams"></param>
-        /// <returns></returns>
-        public abstract IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method, params object[] sqlParams);
-
-        /// <summary>
-        /// Creates the data adapter.
-        /// </summary>
-        /// <param name="dataContext">The data context.</param>
-        /// <returns></returns>
-        protected virtual IDbDataAdapter CreateDataAdapter(DataContext dataContext)
-        {
-            return dataContext.CreateDataAdapter();
-        }
-
-        /// <summary>
-        /// Gets the connection string server part name.
-        /// </summary>
-        /// <value>The connection string server.</value>
-        protected virtual string ConnectionStringServer { get { return "server"; } }
-        /// <summary>
-        /// Gets the connection string user part name.
-        /// </summary>
-        /// <value>The connection string user.</value>
-        protected virtual string ConnectionStringUser { get { return "user id"; } }
-        /// <summary>
-        /// Gets the connection string password part name.
-        /// </summary>
-        /// <value>The connection string password.</value>
-        protected virtual string ConnectionStringPassword { get { return "password"; } }
-        /// <summary>
-        /// Gets the connection string database part name.
-        /// </summary>
-        /// <value>The connection string database.</value>
-        protected virtual string ConnectionStringDatabase { get { return "database"; } }
-
-        /// <summary>
-        /// Adds the connection string part.
-        /// </summary>
-        /// <param name="parts">The parts.</param>
-        /// <param name="name">The name.</param>
-        /// <param name="value">The value.</param>
-        protected void AppendConnectionString(StringBuilder connectionString, string name, string value)
-        {
-            if (!string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(name))
-                connectionString.AppendFormat("{0}={1};", name, value);
-        }
-
-        protected virtual void AppendDatabase(StringBuilder connectionString, string databaseName)
-        {
-            AppendConnectionString(connectionString, ConnectionStringDatabase, databaseName);
-        }
-
-        protected virtual void AppendPassword(StringBuilder connectionString, string password)
-        {
-            AppendConnectionString(connectionString, ConnectionStringPassword, password);
-        }
-
-        protected virtual void AppendServer(StringBuilder connectionString, string host)
-        {
-            // A majority of databases want a server/host port number as a separate key:
-            //      http://www.connectionstrings.com/postgre-sql
-            //      http://www.connectionstrings.com/firebird
-            //      http://www.connectionstrings.com/mysql
-            // So make this the default.
-            if (host == null)
-                return;
-            var colonIdx = host.IndexOf(':');
-            string port = colonIdx < 0 || host.Length == (colonIdx + 1) ? null : host.Substring(colonIdx + 1);
-            if (colonIdx >= 0)
-                host = host.Substring(0, colonIdx);
-            AppendConnectionString(connectionString, ConnectionStringServer, host);
-            if (port != null)
-                AppendConnectionString(connectionString, "Port", port);
-        }
-
-        protected virtual void AppendUser(StringBuilder connectionString, string userName)
-        {
-            AppendConnectionString(connectionString, ConnectionStringUser, userName);
-        }
-
-        /// <summary>
-        /// Builds a connection string given the input parameters
-        /// </summary>
-        /// <param name="host">Server host</param>
-        /// <param name="databaseName">Database (or schema) name</param>
-        /// <param name="userName">Login user name</param>
-        /// <param name="password">Login password</param>
-        /// <returns></returns>
-        public virtual string BuildConnectionString(string host, string databaseName, string userName, string password)
-        {
-            var connectionString = new StringBuilder();
-            AppendServer(connectionString, host);
-            AppendDatabase(connectionString, databaseName);
-            AppendUser(connectionString, userName);
-            AppendPassword(connectionString, password);
-            return connectionString.ToString();
-        }
-
-        /// <summary>
-        /// called from DataContext ctor, which needs to create an IDbConnection, given an IVendor
-        /// </summary>
-        public IDbConnection CreateDbConnection(string connectionString)
-        {
-            var reConnectionType = new System.Text.RegularExpressions.Regex(@"DbLinqConnectionType=([^;]*);?");
-            string connTypeVal = null;
-            if (!reConnectionType.IsMatch(connectionString))
-            {
-                connTypeVal = "System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
-            }
-            else
-            {
-                var    match        = reConnectionType.Match(connectionString);
-                connTypeVal         = match.Groups[1].Value;
-                connectionString    = reConnectionType.Replace(connectionString, "");
-            }
-
-            var    connType     = Type.GetType(connTypeVal);
-            if (connType == null)
-                throw new ArgumentException(string.Format(
-                        "Could not load the specified DbLinqConnectionType `{0}'.",
-                        connTypeVal),
-                    "connectionString");
-            return (IDbConnection)Activator.CreateInstance(connType, connectionString);
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+using Data = DbLinq.Data;
+
+using IExecuteResult = System.Data.Linq.IExecuteResult;
+using System.Text;
+
+namespace DbLinq.Vendor.Implementation
+{
+    /// <summary>
+    /// some IVendor functionality is the same for many vendors,
+    /// implemented here as virtual functions.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    abstract partial class Vendor : IVendor
+    {
+        /// <summary>
+        /// Pings requested DB, true is result is OK.
+        /// May throw a connection exception (DataContext.DatabaseExists() handles this)
+        /// </summary>
+        /// <param name="dataContext"></param>
+        /// <returns></returns>
+        public virtual bool Ping(DataContext dataContext)
+        {
+            return dataContext.ExecuteCommand("SELECT 11") == 11;
+        }
+
+        /// <summary>
+        /// Component used to provide SQL Parts
+        /// </summary>
+        /// <value></value>
+        public abstract ISqlProvider SqlProvider { get; }
+
+        /// <summary>
+        /// Performs bulk insert.
+        /// Please notice that PKs may not be updated
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="table"></param>
+        /// <param name="rows"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="transaction"></param>
+        public virtual void BulkInsert<T>(Table<T> table, List<T> rows, int pageSize, IDbTransaction transaction) where T : class
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// VendorName represents the database being handled by this vendor 'Oracle' or 'MySql'
+        /// </summary>
+        /// <value></value>
+        public abstract string VendorName { get; }
+
+        /// <summary>
+        /// Executes a stored procedure/function call
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="method"></param>
+        /// <param name="sqlParams"></param>
+        /// <returns></returns>
+        public abstract IExecuteResult ExecuteMethodCall(DataContext context, MethodInfo method, params object[] sqlParams);
+
+        /// <summary>
+        /// Creates the data adapter.
+        /// </summary>
+        /// <param name="dataContext">The data context.</param>
+        /// <returns></returns>
+        protected virtual IDbDataAdapter CreateDataAdapter(DataContext dataContext)
+        {
+            return dataContext.CreateDataAdapter();
+        }
+
+        /// <summary>
+        /// Gets the connection string server part name.
+        /// </summary>
+        /// <value>The connection string server.</value>
+        protected virtual string ConnectionStringServer { get { return "server"; } }
+        /// <summary>
+        /// Gets the connection string user part name.
+        /// </summary>
+        /// <value>The connection string user.</value>
+        protected virtual string ConnectionStringUser { get { return "user id"; } }
+        /// <summary>
+        /// Gets the connection string password part name.
+        /// </summary>
+        /// <value>The connection string password.</value>
+        protected virtual string ConnectionStringPassword { get { return "password"; } }
+        /// <summary>
+        /// Gets the connection string database part name.
+        /// </summary>
+        /// <value>The connection string database.</value>
+        protected virtual string ConnectionStringDatabase { get { return "database"; } }
+
+        /// <summary>
+        /// Adds the connection string part.
+        /// </summary>
+        /// <param name="parts">The parts.</param>
+        /// <param name="name">The name.</param>
+        /// <param name="value">The value.</param>
+        protected void AppendConnectionString(StringBuilder connectionString, string name, string value)
+        {
+            if (!string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(name))
+                connectionString.AppendFormat("{0}={1};", name, value);
+        }
+
+        protected virtual void AppendDatabase(StringBuilder connectionString, string databaseName)
+        {
+            AppendConnectionString(connectionString, ConnectionStringDatabase, databaseName);
+        }
+
+        protected virtual void AppendPassword(StringBuilder connectionString, string password)
+        {
+            AppendConnectionString(connectionString, ConnectionStringPassword, password);
+        }
+
+        protected virtual void AppendServer(StringBuilder connectionString, string host)
+        {
+            // A majority of databases want a server/host port number as a separate key:
+            //      http://www.connectionstrings.com/postgre-sql
+            //      http://www.connectionstrings.com/firebird
+            //      http://www.connectionstrings.com/mysql
+            // So make this the default.
+            if (host == null)
+                return;
+            var colonIdx = host.IndexOf(':');
+            string port = colonIdx < 0 || host.Length == (colonIdx + 1) ? null : host.Substring(colonIdx + 1);
+            if (colonIdx >= 0)
+                host = host.Substring(0, colonIdx);
+            AppendConnectionString(connectionString, ConnectionStringServer, host);
+            if (port != null)
+                AppendConnectionString(connectionString, "Port", port);
+        }
+
+        protected virtual void AppendUser(StringBuilder connectionString, string userName)
+        {
+            AppendConnectionString(connectionString, ConnectionStringUser, userName);
+        }
+
+        /// <summary>
+        /// Builds a connection string given the input parameters
+        /// </summary>
+        /// <param name="host">Server host</param>
+        /// <param name="databaseName">Database (or schema) name</param>
+        /// <param name="userName">Login user name</param>
+        /// <param name="password">Login password</param>
+        /// <returns></returns>
+        public virtual string BuildConnectionString(string host, string databaseName, string userName, string password)
+        {
+            var connectionString = new StringBuilder();
+            AppendServer(connectionString, host);
+            AppendDatabase(connectionString, databaseName);
+            AppendUser(connectionString, userName);
+            AppendPassword(connectionString, password);
+            return connectionString.ToString();
+        }
+
+        /// <summary>
+        /// called from DataContext ctor, which needs to create an IDbConnection, given an IVendor
+        /// </summary>
+        public IDbConnection CreateDbConnection(string connectionString)
+        {
+            var reConnectionType = new System.Text.RegularExpressions.Regex(@"DbLinqConnectionType=([^;]*);?");
+            string connTypeVal = null;
+            if (!reConnectionType.IsMatch(connectionString))
+            {
+                connTypeVal = "System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
+            }
+            else
+            {
+                var    match        = reConnectionType.Match(connectionString);
+                connTypeVal         = match.Groups[1].Value;
+                connectionString    = reConnectionType.Replace(connectionString, "");
+            }
+
+            var    connType     = Type.GetType(connTypeVal);
+            if (connType == null)
+                throw new ArgumentException(string.Format(
+                        "Could not load the specified DbLinqConnectionType `{0}'.",
+                        connTypeVal),
+                    "connectionString");
+            return (IDbConnection)Activator.CreateInstance(connType, connectionString);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbLinq/Vendor/VendorAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbLinq/Vendor/VendorAttribute.cs
@@ -1,60 +1,60 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Data;
-using System.Reflection;
-using System.Collections.Generic;
-
-#if MONO_STRICT
-using DataContext = System.Data.Linq.DataContext;
-#else
-using DataContext = DbLinq.Data.Linq.DataContext;
-#endif
-
-using Data = DbLinq.Data;
-using DbLinq.Data.Linq;
-using IExecuteResult = System.Data.Linq.IExecuteResult;
-
-namespace DbLinq.Vendor
-{
-    /// <summary>
-    /// This attribute is used by vendors
-    /// </summary>
-    [AttributeUsage(AttributeTargets.Class)]
-#if !MONO_STRICT
-    public
-#endif
-    class VendorAttribute : Attribute
-    {
-        public IList<Type> ProviderTypes { get; private set; }
-
-        public VendorAttribute(params Type[] providerTypes)
-        {
-            ProviderTypes = providerTypes;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Data;
+using System.Reflection;
+using System.Collections.Generic;
+
+#if MONO_STRICT
+using DataContext = System.Data.Linq.DataContext;
+#else
+using DataContext = DbLinq.Data.Linq.DataContext;
+#endif
+
+using Data = DbLinq.Data;
+using DbLinq.Data.Linq;
+using IExecuteResult = System.Data.Linq.IExecuteResult;
+
+namespace DbLinq.Vendor
+{
+    /// <summary>
+    /// This attribute is used by vendors
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Class)]
+#if !MONO_STRICT
+    public
+#endif
+    class VendorAttribute : Attribute
+    {
+        public IList<Type> ProviderTypes { get; private set; }
+
+        public VendorAttribute(params Type[] providerTypes)
+        {
+            ProviderTypes = providerTypes;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/AbstractParameters.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/AbstractParameters.cs
@@ -1,695 +1,695 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Text;
-using DbLinq.Util;
-using DbMetal.Utility;
-
-namespace DbMetal
-{
-    /// <summary>
-    /// Parameters base class.
-    /// Allows to specify direct switches or place switches in a file (specified with @fileName).
-    /// If a file specifies several line, the parameters will allow batch processing, one per line.
-    /// Parameters specified before the @ file are inherited by each @ file line
-    /// </summary>
-    public abstract class AbstractParameters
-    {
-        /// <summary>
-        /// Describes a switch (/sprocs)
-        /// </summary>
-        public class OptionAttribute : Attribute
-        {
-            /// <summary>
-            /// Allows to specify a group. All options in the same group are displayed together
-            /// </summary>
-            public int Group { get; set; }
-
-            /// <summary>
-            /// Description
-            /// </summary>
-            public string Text { get; set; }
-
-            /// <summary>
-            /// Value name, used for help
-            /// </summary>
-            public string ValueName { get; set; }
-
-            public OptionAttribute(string text)
-            {
-                Text = text;
-            }
-        }
-
-        /// <summary>
-        /// Describes an input file
-        /// </summary>
-        public class FileAttribute : Attribute
-        {
-            /// <summary>
-            /// Tells if the file is required
-            /// TODO: add mandatory support in parameters check
-            /// </summary>
-            public bool Mandatory { get; set; }
-            /// <summary>
-            /// The name written in help
-            /// </summary>
-            public string Name { get; set; }
-            /// <summary>
-            /// Descriptions
-            /// </summary>
-            public string Text { get; set; }
-
-            public FileAttribute(string name, string text)
-            {
-                Name = name;
-                Text = text;
-            }
-        }
-
-        public class AlternateAttribute : Attribute
-        {
-            public string Name { get; set; }
-
-            public AlternateAttribute(string name)
-            {
-                Name = name;
-            }
-        }
-
-        public readonly IList<string> Extra = new List<string>();
-        private TextWriter log;
-        public TextWriter Log
-        {
-            get { return log ?? Console.Out; }
-            set { log = value; }
-        }
-
-        private static bool IsParameter(string arg, string switchPrefix, out string parameterName, out string parameterValue)
-        {
-            bool isParameter;
-            if (arg.StartsWith(switchPrefix))
-            {
-                isParameter = true;
-                string nameValue = arg.Substring(switchPrefix.Length);
-                int separator = nameValue.IndexOfAny(new[] { ':', '=' });
-                if (separator >= 0)
-                {
-                    parameterName = nameValue.Substring(0, separator);
-                    parameterValue = nameValue.Substring(separator + 1).Trim('\"');
-                }
-                else if (nameValue.EndsWith("+"))
-                {
-                    parameterName = nameValue.Substring(0, nameValue.Length - 1);
-                    parameterValue = "+";
-                }
-                else if (nameValue.EndsWith("-"))
-                {
-                    parameterName = nameValue.Substring(0, nameValue.Length - 1);
-                    parameterValue = "-";
-                }
-                else if (nameValue.StartsWith("no-"))
-                {
-                    parameterName = nameValue.Substring(3);
-                    parameterValue = "-";
-                }
-                else
-                {
-                    parameterName = nameValue;
-                    parameterValue = null;
-                }
-            }
-            else
-            {
-                isParameter = false;
-                parameterName = null;
-                parameterValue = null;
-            }
-            return isParameter;
-        }
-
-        protected static bool IsParameter(string arg, out string parameterName, out string parameterValue)
-        {
-            return IsParameter(arg, "--", out parameterName, out parameterValue)
-                   || IsParameter(arg, "-", out parameterName, out parameterValue)
-                   || IsParameter(arg, "/", out parameterName, out parameterValue);
-        }
-
-        protected static object GetValue(string value, Type targetType)
-        {
-            object typedValue;
-            if (typeof(bool).IsAssignableFrom(targetType))
-            {
-                if (value == null || value == "+")
-                    typedValue = true;
-                else if (value == "-")
-                    typedValue = false;
-                else
-                    typedValue = Convert.ToBoolean(value);
-            }
-            else
-            {
-                typedValue = Convert.ChangeType(value, targetType);
-            }
-            return typedValue;
-        }
-
-        protected virtual MemberInfo FindParameter(string name, Type type)
-        {
-            // the easy way: find propery or field name
-            var flags = BindingFlags.IgnoreCase | BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Public;
-            var memberInfos = type.GetMember(name, flags);
-            if (memberInfos.Length > 0)
-                return memberInfos[0];
-            // the hard way: look for alternate names
-            memberInfos = type.GetMembers();
-            foreach (var memberInfo in memberInfos)
-            {
-                var alternates = (AlternateAttribute[])memberInfo.GetCustomAttributes(typeof(AlternateAttribute), true);
-                if (Array.Exists(alternates, a => string.Compare(a.Name, name) == 0))
-                    return memberInfo;
-            }
-            return null;
-        }
-
-        protected virtual MemberInfo FindParameter(string name)
-        {
-            return FindParameter(name, GetType());
-        }
-
-        /// <summary>
-        /// Assigns a parameter by reflection
-        /// </summary>
-        /// <param name="name">parameter name (case insensitive)</param>
-        /// <param name="value">parameter value</param>
-        protected void SetParameter(string name, string value)
-        {
-            // cleanup and evaluate
-            name = name.Trim();
-            // evaluate
-            value = value.EvaluateEnvironment();
-
-            var memberInfo = FindParameter(name);
-            if (memberInfo == null)
-                throw new ArgumentException(string.Format("Parameter {0} does not exist", name));
-            memberInfo.SetMemberValue(this, GetValue(value, memberInfo.GetMemberType()));
-        }
-
-        /// <summary>
-        /// Loads arguments from a given list
-        /// </summary>
-        /// <param name="args"></param>
-        public void Load(IList<string> args)
-        {
-            foreach (string arg in args)
-            {
-                string key, value;
-                if (IsParameter(arg, out key, out value))
-                    SetParameter(key, value);
-                else
-                    Extra.Add(arg);
-            }
-        }
-
-        protected AbstractParameters()
-        {
-        }
-
-        protected AbstractParameters(IList<string> args)
-        {
-            Load(args);
-        }
-
-        /// <summary>
-        /// Internal method allowing to extract arguments and specify quotes characters
-        /// </summary>
-        /// <param name="commandLine"></param>
-        /// <param name="quotes"></param>
-        /// <returns></returns>
-        public IList<string> ExtractArguments(string commandLine, char[] quotes)
-        {
-            var arg = new StringBuilder();
-            var args = new List<string>();
-            const char zero = '\0';
-            char quote = zero;
-            foreach (char c in commandLine)
-            {
-                if (quote == zero)
-                {
-                    if (quotes.Contains(c))
-                        quote = c;
-                    else if (char.IsSeparator(c) && quote == zero)
-                    {
-                        if (arg.Length > 0)
-                        {
-                            args.Add(arg.ToString());
-                            arg = new StringBuilder();
-                        }
-                    }
-                    else
-                        arg.Append(c);
-                }
-                else
-                {
-                    if (c == quote)
-                        quote = zero;
-                    else
-                        arg.Append(c);
-                }
-            }
-            if (arg.Length > 0)
-                args.Add(arg.ToString());
-            return args;
-        }
-
-        private static readonly char[] Quotes = new[] { '\'', '\"' };
-        /// <summary>
-        /// Extracts arguments from a full line, in a .NET compatible way
-        /// (includes strange quotes trimming)
-        /// </summary>
-        /// <param name="commandLine">The command line</param>
-        /// <returns>Arguments list</returns>
-        public IList<string> ExtractArguments(string commandLine)
-        {
-            return ExtractArguments(commandLine, Quotes);
-        }
-
-        /// <summary>
-        /// Converts a list separated by a comma to a string array
-        /// </summary>
-        /// <param name="list"></param>
-        /// <returns></returns>
-        public string[] GetArray(string list)
-        {
-            if (string.IsNullOrEmpty(list))
-                return new string[0];
-            return (from entityInterface in list.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
-                    select entityInterface.Trim()).ToArray();
-        }
-
-        /// <summary>
-        /// Processes different "lines" of parameters:
-        /// 1. the original input parameter must be starting with @
-        /// 2. all other parameters are kept as a common part
-        /// </summary>
-        /// <typeparam name="P"></typeparam>
-        /// <param name="args"></param>
-        /// <returns></returns>
-        protected IList<P> GetParameterBatch<P>(IList<string> args)
-            where P : AbstractParameters, new()
-        {
-            return GetParameterBatch<P>(args, ".");
-        }
-
-        public IList<P> GetParameterBatch<P>(IList<string> args, string argsFileDirectory)
-            where P : AbstractParameters, new()
-        {
-            var parameters = new List<P>();
-            var commonArgs = new List<string>();
-            var argsFiles = new List<string>();
-            foreach (var arg in args)
-            {
-                if (arg.StartsWith("@"))
-                    argsFiles.Add(arg.Substring(1));
-                else
-                    commonArgs.Add(arg);
-            }
-            // if we specify files, we must recurse
-            if (argsFiles.Count > 0)
-            {
-                foreach (var argsFile in argsFiles)
-                {
-                    parameters.AddRange(GetParameterBatchFile<P>(commonArgs, Path.Combine(argsFileDirectory, argsFile)));
-                }
-            }
-            // if we don't, just use the args
-            else if (commonArgs.Count > 0)
-            {
-                var p = new P { Log = Log };
-                p.Load(commonArgs);
-                parameters.Add(p);
-            }
-            return parameters;
-        }
-
-        private IList<P> GetParameterBatchFile<P>(IEnumerable<string> baseArgs, string argsList)
-            where P : AbstractParameters, new()
-        {
-            var parameters = new List<P>();
-            string argsFileDirectory = Path.GetDirectoryName(argsList);
-            using (var textReader = File.OpenText(argsList))
-            {
-                while (!textReader.EndOfStream)
-                {
-                    string line = textReader.ReadLine();
-                    if (line.StartsWith("#"))
-                        continue;
-                    var args = ExtractArguments(line);
-                    var allArgs = new List<string>(baseArgs);
-                    allArgs.AddRange(args);
-                    parameters.AddRange(GetParameterBatch<P>(allArgs, argsFileDirectory));
-                }
-            }
-            return parameters;
-        }
-
-        /// <summary>
-        /// Outputs a formatted string to the console.
-        /// We're not using the ILogger here, since we want console output.
-        /// </summary>
-        /// <param name="format"></param>
-        /// <param name="args"></param>
-        public void Write(string format, params object[] args)
-        {
-            Output.WriteLine(Log, OutputLevel.Information, format, args);
-        }
-
-        /// <summary>
-        /// Outputs an empty line
-        /// </summary>
-        public void WriteLine()
-        {
-            Output.WriteLine(Log, OutputLevel.Information, string.Empty);
-        }
-
-        // TODO: remove this
-        protected static int TextWidth
-        {
-            get { return Console.BufferWidth; }
-        }
-
-        /// <summary>
-        /// Returns the application (assembly) name (without extension)
-        /// </summary>
-        protected static string ApplicationName
-        {
-            get
-            {
-                return Assembly.GetEntryAssembly().GetName().Name;
-            }
-        }
-
-        /// <summary>
-        /// Returns the application (assembly) version
-        /// </summary>
-        protected static Version ApplicationVersion
-        {
-            get
-            {
-                // Assembly.GetEntryAssembly() is null when loading from the 
-                // non-default AppDomain.
-                var a = Assembly.GetEntryAssembly();
-                return a != null ? a.GetName().Version : new Version();
-            }
-        }
-
-        private bool headerWritten;
-        /// <summary>
-        /// Writes the application header
-        /// </summary>
-        public void WriteHeader()
-        {
-            if (!headerWritten)
-            {
-                WriteHeaderContents();
-                WriteLine();
-                headerWritten = true;
-            }
-        }
-
-        protected abstract void WriteHeaderContents();
-
-        /// <summary>
-        /// Writes a small summary
-        /// </summary>
-        public abstract void WriteSummary();
-
-        /// <summary>
-        /// Writes examples
-        /// </summary>
-        public virtual void WriteExamples()
-        {
-        }
-
-        /// <summary>
-        /// The "syntax" is a bried containing the application name, "[options]" and eventually files.
-        /// For example: "DbMetal [options] [&lt;input file>]
-        /// </summary>
-        public virtual void WriteSyntax()
-        {
-            var syntax = new StringBuilder();
-            syntax.AppendFormat("{0} [options]", ApplicationName);
-            foreach (var file in GetFiles())
-            {
-                if (file.Description.Mandatory)
-                    syntax.AppendFormat(" {0}", GetFileText(file));
-                else
-                    syntax.AppendFormat(" [{0}]", GetFileText(file));
-            }
-            Write(syntax.ToString());
-        }
-
-        /// <summary>
-        /// Describes an option
-        /// </summary>
-        protected class Option
-        {
-            /// <summary>
-            /// The member name (property or field)
-            /// </summary>
-            public string Name { get; set; }
-            /// <summary>
-            /// The attribute used to define the member as an option
-            /// </summary>
-            public OptionAttribute Description { get; set; }
-        }
-
-        /// <summary>
-        /// Describes an input file
-        /// </summary>
-        protected class FileName
-        {
-            /// <summary>
-            /// The member name (property or field)
-            /// </summary>
-            public string Name { get; set; }
-            /// <summary>
-            /// The attribute used to define the member as an input file
-            /// </summary>
-            public FileAttribute Description { get; set; }
-        }
-
-        /// <summary>
-        /// Internal class. I wrote it because I was thinking that the .NET framework already had such a class.
-        /// At second thought, I may have made a confusion with STL
-        /// (interesting, isn't it?)
-        /// </summary>
-        /// <typeparam name="A"></typeparam>
-        /// <typeparam name="B"></typeparam>
-        protected class Pair<A, B>
-        {
-            public A First { get; set; }
-            public B Second { get; set; }
-        }
-
-        /// <summary>
-        /// Enumerates all members (fields or properties) that have been marked with the specified attribute
-        /// </summary>
-        /// <typeparam name="T">The attribute type to search for</typeparam>
-        /// <returns>A list of pairs with name and attribute</returns>
-        protected IEnumerable<Pair<string, T>> EnumerateOptions<T>()
-            where T : Attribute
-        {
-            Type t = GetType();
-            foreach (var propertyInfo in t.GetProperties())
-            {
-                var descriptions = (T[])propertyInfo.GetCustomAttributes(typeof(T), true);
-                if (descriptions.Length == 1)
-                    yield return new Pair<string, T> { First = propertyInfo.Name, Second = descriptions[0] };
-            }
-            foreach (var fieldInfo in t.GetFields())
-            {
-                var descriptions = (T[])fieldInfo.GetCustomAttributes(typeof(T), true);
-                if (descriptions.Length == 1)
-                    yield return new Pair<string, T> { First = fieldInfo.Name, Second = descriptions[0] };
-            }
-        }
-
-        protected IEnumerable<Option> EnumerateOptions()
-        {
-            foreach (var pair in EnumerateOptions<OptionAttribute>())
-                yield return new Option { Name = pair.First, Description = pair.Second };
-        }
-
-        protected IEnumerable<FileName> GetFiles()
-        {
-            foreach (var pair in from p in EnumerateOptions<FileAttribute>() orderby p.Second.Mandatory select p)
-                yield return new FileName { Name = pair.First, Description = pair.Second };
-        }
-
-        /// <summary>
-        /// Returns options, grouped by group (the group number is the dictionary key)
-        /// </summary>
-        /// <returns></returns>
-        protected IDictionary<int, IList<Option>> GetOptions()
-        {
-            var options = new Dictionary<int, IList<Option>>();
-            foreach (var option in EnumerateOptions())
-            {
-                if (!options.ContainsKey(option.Description.Group))
-                    options[option.Description.Group] = new List<Option>();
-                options[option.Description.Group].Add(option);
-            }
-            return options;
-        }
-
-        /// <summary>
-        /// Return a literal value based on an option
-        /// </summary>
-        /// <param name="option"></param>
-        /// <returns></returns>
-        protected virtual string GetOptionText(Option option)
-        {
-            var optionName = option.Name[0].ToString().ToLower() + option.Name.Substring(1);
-            if (string.IsNullOrEmpty(option.Description.ValueName))
-                return optionName;
-            return string.Format("{0}:<{1}>",
-                optionName,
-                option.Description.ValueName);
-        }
-
-        /// <summary>
-        /// Returns a literal value base on an input file
-        /// </summary>
-        /// <param name="fileName"></param>
-        /// <returns></returns>
-        protected virtual string GetFileText(FileName fileName)
-        {
-            return string.Format("<{0}>", fileName.Description.Name);
-        }
-
-        /// <summary>
-        /// Computes the maximum options and files length, to align all descriptions
-        /// </summary>
-        /// <param name="options"></param>
-        /// <param name="files"></param>
-        /// <returns></returns>
-        private int GetMaximumLength(IDictionary<int, IList<Option>> options, IEnumerable<FileName> files)
-        {
-            int maxLength = 0;
-            foreach (var optionsList in options.Values)
-            {
-                foreach (var option in optionsList)
-                {
-                    var optionName = GetOptionText(option);
-                    int length = optionName.Length;
-                    if (length > maxLength)
-                        maxLength = length;
-                }
-            }
-            foreach (var file in files)
-            {
-                var fileName = GetFileText(file);
-                int length = fileName.Length;
-                if (length > maxLength)
-                    maxLength = length;
-            }
-            return maxLength;
-        }
-
-        protected static string[] SplitText(string text, int width)
-        {
-            var lines = new List<string>(new[] { "" });
-            var words = text.Split(' ');
-            foreach (var word in words)
-            {
-                var line = lines.Last();
-                if (line.Length == 0)
-                    lines[lines.Count - 1] = word;
-                else if (line.Length + word.Length + 1 < width)
-                    lines[lines.Count - 1] = line + " " + word;
-                else
-                    lines.Add(word);
-            }
-            return lines.ToArray();
-        }
-
-        protected void WriteOption(string firstLine, string text)
-        {
-            int width = TextWidth - firstLine.Length - 2;
-            var lines = SplitText(text, width);
-            var padding = string.Empty.PadRight(firstLine.Length);
-            for (int i = 0; i < lines.Length; i++)
-            {
-                Write("{0} {1}", i == 0 ? firstLine : padding, lines[i]);
-            }
-        }
-
-        /// <summary>
-        /// Displays all available options and files
-        /// </summary>
-        protected void WriteOptions()
-        {
-            var options = GetOptions();
-            var files = GetFiles();
-            int maxLength = GetMaximumLength(options, files);
-            Write("Options:");
-            foreach (var group in from k in options.Keys orderby k select k)
-            {
-                var optionsList = options[group];
-                foreach (var option in from o in optionsList orderby o.Name select o)
-                {
-                    WriteOption(string.Format("  /{0}", GetOptionText(option).PadRight(maxLength)), option.Description.Text);
-                }
-                WriteLine();
-            }
-            foreach (var file in files)
-            {
-                WriteOption(string.Format("  {0}", GetFileText(file).PadRight(maxLength + 1)), file.Description.Text);
-            }
-        }
-
-        /// <summary>
-        /// Displays application help
-        /// </summary>
-        public void WriteHelp()
-        {
-            WriteHeader(); // includes a WriteLine()
-            WriteSyntax();
-            WriteLine();
-            WriteSummary();
-            WriteLine();
-            WriteOptions();
-            WriteLine();
-            WriteExamples();
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Collections.Generic;
+using System.Text;
+using DbLinq.Util;
+using DbMetal.Utility;
+
+namespace DbMetal
+{
+    /// <summary>
+    /// Parameters base class.
+    /// Allows to specify direct switches or place switches in a file (specified with @fileName).
+    /// If a file specifies several line, the parameters will allow batch processing, one per line.
+    /// Parameters specified before the @ file are inherited by each @ file line
+    /// </summary>
+    public abstract class AbstractParameters
+    {
+        /// <summary>
+        /// Describes a switch (/sprocs)
+        /// </summary>
+        public class OptionAttribute : Attribute
+        {
+            /// <summary>
+            /// Allows to specify a group. All options in the same group are displayed together
+            /// </summary>
+            public int Group { get; set; }
+
+            /// <summary>
+            /// Description
+            /// </summary>
+            public string Text { get; set; }
+
+            /// <summary>
+            /// Value name, used for help
+            /// </summary>
+            public string ValueName { get; set; }
+
+            public OptionAttribute(string text)
+            {
+                Text = text;
+            }
+        }
+
+        /// <summary>
+        /// Describes an input file
+        /// </summary>
+        public class FileAttribute : Attribute
+        {
+            /// <summary>
+            /// Tells if the file is required
+            /// TODO: add mandatory support in parameters check
+            /// </summary>
+            public bool Mandatory { get; set; }
+            /// <summary>
+            /// The name written in help
+            /// </summary>
+            public string Name { get; set; }
+            /// <summary>
+            /// Descriptions
+            /// </summary>
+            public string Text { get; set; }
+
+            public FileAttribute(string name, string text)
+            {
+                Name = name;
+                Text = text;
+            }
+        }
+
+        public class AlternateAttribute : Attribute
+        {
+            public string Name { get; set; }
+
+            public AlternateAttribute(string name)
+            {
+                Name = name;
+            }
+        }
+
+        public readonly IList<string> Extra = new List<string>();
+        private TextWriter log;
+        public TextWriter Log
+        {
+            get { return log ?? Console.Out; }
+            set { log = value; }
+        }
+
+        private static bool IsParameter(string arg, string switchPrefix, out string parameterName, out string parameterValue)
+        {
+            bool isParameter;
+            if (arg.StartsWith(switchPrefix))
+            {
+                isParameter = true;
+                string nameValue = arg.Substring(switchPrefix.Length);
+                int separator = nameValue.IndexOfAny(new[] { ':', '=' });
+                if (separator >= 0)
+                {
+                    parameterName = nameValue.Substring(0, separator);
+                    parameterValue = nameValue.Substring(separator + 1).Trim('\"');
+                }
+                else if (nameValue.EndsWith("+"))
+                {
+                    parameterName = nameValue.Substring(0, nameValue.Length - 1);
+                    parameterValue = "+";
+                }
+                else if (nameValue.EndsWith("-"))
+                {
+                    parameterName = nameValue.Substring(0, nameValue.Length - 1);
+                    parameterValue = "-";
+                }
+                else if (nameValue.StartsWith("no-"))
+                {
+                    parameterName = nameValue.Substring(3);
+                    parameterValue = "-";
+                }
+                else
+                {
+                    parameterName = nameValue;
+                    parameterValue = null;
+                }
+            }
+            else
+            {
+                isParameter = false;
+                parameterName = null;
+                parameterValue = null;
+            }
+            return isParameter;
+        }
+
+        protected static bool IsParameter(string arg, out string parameterName, out string parameterValue)
+        {
+            return IsParameter(arg, "--", out parameterName, out parameterValue)
+                   || IsParameter(arg, "-", out parameterName, out parameterValue)
+                   || IsParameter(arg, "/", out parameterName, out parameterValue);
+        }
+
+        protected static object GetValue(string value, Type targetType)
+        {
+            object typedValue;
+            if (typeof(bool).IsAssignableFrom(targetType))
+            {
+                if (value == null || value == "+")
+                    typedValue = true;
+                else if (value == "-")
+                    typedValue = false;
+                else
+                    typedValue = Convert.ToBoolean(value);
+            }
+            else
+            {
+                typedValue = Convert.ChangeType(value, targetType);
+            }
+            return typedValue;
+        }
+
+        protected virtual MemberInfo FindParameter(string name, Type type)
+        {
+            // the easy way: find propery or field name
+            var flags = BindingFlags.IgnoreCase | BindingFlags.FlattenHierarchy | BindingFlags.Instance | BindingFlags.Public;
+            var memberInfos = type.GetMember(name, flags);
+            if (memberInfos.Length > 0)
+                return memberInfos[0];
+            // the hard way: look for alternate names
+            memberInfos = type.GetMembers();
+            foreach (var memberInfo in memberInfos)
+            {
+                var alternates = (AlternateAttribute[])memberInfo.GetCustomAttributes(typeof(AlternateAttribute), true);
+                if (Array.Exists(alternates, a => string.Compare(a.Name, name) == 0))
+                    return memberInfo;
+            }
+            return null;
+        }
+
+        protected virtual MemberInfo FindParameter(string name)
+        {
+            return FindParameter(name, GetType());
+        }
+
+        /// <summary>
+        /// Assigns a parameter by reflection
+        /// </summary>
+        /// <param name="name">parameter name (case insensitive)</param>
+        /// <param name="value">parameter value</param>
+        protected void SetParameter(string name, string value)
+        {
+            // cleanup and evaluate
+            name = name.Trim();
+            // evaluate
+            value = value.EvaluateEnvironment();
+
+            var memberInfo = FindParameter(name);
+            if (memberInfo == null)
+                throw new ArgumentException(string.Format("Parameter {0} does not exist", name));
+            memberInfo.SetMemberValue(this, GetValue(value, memberInfo.GetMemberType()));
+        }
+
+        /// <summary>
+        /// Loads arguments from a given list
+        /// </summary>
+        /// <param name="args"></param>
+        public void Load(IList<string> args)
+        {
+            foreach (string arg in args)
+            {
+                string key, value;
+                if (IsParameter(arg, out key, out value))
+                    SetParameter(key, value);
+                else
+                    Extra.Add(arg);
+            }
+        }
+
+        protected AbstractParameters()
+        {
+        }
+
+        protected AbstractParameters(IList<string> args)
+        {
+            Load(args);
+        }
+
+        /// <summary>
+        /// Internal method allowing to extract arguments and specify quotes characters
+        /// </summary>
+        /// <param name="commandLine"></param>
+        /// <param name="quotes"></param>
+        /// <returns></returns>
+        public IList<string> ExtractArguments(string commandLine, char[] quotes)
+        {
+            var arg = new StringBuilder();
+            var args = new List<string>();
+            const char zero = '\0';
+            char quote = zero;
+            foreach (char c in commandLine)
+            {
+                if (quote == zero)
+                {
+                    if (quotes.Contains(c))
+                        quote = c;
+                    else if (char.IsSeparator(c) && quote == zero)
+                    {
+                        if (arg.Length > 0)
+                        {
+                            args.Add(arg.ToString());
+                            arg = new StringBuilder();
+                        }
+                    }
+                    else
+                        arg.Append(c);
+                }
+                else
+                {
+                    if (c == quote)
+                        quote = zero;
+                    else
+                        arg.Append(c);
+                }
+            }
+            if (arg.Length > 0)
+                args.Add(arg.ToString());
+            return args;
+        }
+
+        private static readonly char[] Quotes = new[] { '\'', '\"' };
+        /// <summary>
+        /// Extracts arguments from a full line, in a .NET compatible way
+        /// (includes strange quotes trimming)
+        /// </summary>
+        /// <param name="commandLine">The command line</param>
+        /// <returns>Arguments list</returns>
+        public IList<string> ExtractArguments(string commandLine)
+        {
+            return ExtractArguments(commandLine, Quotes);
+        }
+
+        /// <summary>
+        /// Converts a list separated by a comma to a string array
+        /// </summary>
+        /// <param name="list"></param>
+        /// <returns></returns>
+        public string[] GetArray(string list)
+        {
+            if (string.IsNullOrEmpty(list))
+                return new string[0];
+            return (from entityInterface in list.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
+                    select entityInterface.Trim()).ToArray();
+        }
+
+        /// <summary>
+        /// Processes different "lines" of parameters:
+        /// 1. the original input parameter must be starting with @
+        /// 2. all other parameters are kept as a common part
+        /// </summary>
+        /// <typeparam name="P"></typeparam>
+        /// <param name="args"></param>
+        /// <returns></returns>
+        protected IList<P> GetParameterBatch<P>(IList<string> args)
+            where P : AbstractParameters, new()
+        {
+            return GetParameterBatch<P>(args, ".");
+        }
+
+        public IList<P> GetParameterBatch<P>(IList<string> args, string argsFileDirectory)
+            where P : AbstractParameters, new()
+        {
+            var parameters = new List<P>();
+            var commonArgs = new List<string>();
+            var argsFiles = new List<string>();
+            foreach (var arg in args)
+            {
+                if (arg.StartsWith("@"))
+                    argsFiles.Add(arg.Substring(1));
+                else
+                    commonArgs.Add(arg);
+            }
+            // if we specify files, we must recurse
+            if (argsFiles.Count > 0)
+            {
+                foreach (var argsFile in argsFiles)
+                {
+                    parameters.AddRange(GetParameterBatchFile<P>(commonArgs, Path.Combine(argsFileDirectory, argsFile)));
+                }
+            }
+            // if we don't, just use the args
+            else if (commonArgs.Count > 0)
+            {
+                var p = new P { Log = Log };
+                p.Load(commonArgs);
+                parameters.Add(p);
+            }
+            return parameters;
+        }
+
+        private IList<P> GetParameterBatchFile<P>(IEnumerable<string> baseArgs, string argsList)
+            where P : AbstractParameters, new()
+        {
+            var parameters = new List<P>();
+            string argsFileDirectory = Path.GetDirectoryName(argsList);
+            using (var textReader = File.OpenText(argsList))
+            {
+                while (!textReader.EndOfStream)
+                {
+                    string line = textReader.ReadLine();
+                    if (line.StartsWith("#"))
+                        continue;
+                    var args = ExtractArguments(line);
+                    var allArgs = new List<string>(baseArgs);
+                    allArgs.AddRange(args);
+                    parameters.AddRange(GetParameterBatch<P>(allArgs, argsFileDirectory));
+                }
+            }
+            return parameters;
+        }
+
+        /// <summary>
+        /// Outputs a formatted string to the console.
+        /// We're not using the ILogger here, since we want console output.
+        /// </summary>
+        /// <param name="format"></param>
+        /// <param name="args"></param>
+        public void Write(string format, params object[] args)
+        {
+            Output.WriteLine(Log, OutputLevel.Information, format, args);
+        }
+
+        /// <summary>
+        /// Outputs an empty line
+        /// </summary>
+        public void WriteLine()
+        {
+            Output.WriteLine(Log, OutputLevel.Information, string.Empty);
+        }
+
+        // TODO: remove this
+        protected static int TextWidth
+        {
+            get { return Console.BufferWidth; }
+        }
+
+        /// <summary>
+        /// Returns the application (assembly) name (without extension)
+        /// </summary>
+        protected static string ApplicationName
+        {
+            get
+            {
+                return Assembly.GetEntryAssembly().GetName().Name;
+            }
+        }
+
+        /// <summary>
+        /// Returns the application (assembly) version
+        /// </summary>
+        protected static Version ApplicationVersion
+        {
+            get
+            {
+                // Assembly.GetEntryAssembly() is null when loading from the 
+                // non-default AppDomain.
+                var a = Assembly.GetEntryAssembly();
+                return a != null ? a.GetName().Version : new Version();
+            }
+        }
+
+        private bool headerWritten;
+        /// <summary>
+        /// Writes the application header
+        /// </summary>
+        public void WriteHeader()
+        {
+            if (!headerWritten)
+            {
+                WriteHeaderContents();
+                WriteLine();
+                headerWritten = true;
+            }
+        }
+
+        protected abstract void WriteHeaderContents();
+
+        /// <summary>
+        /// Writes a small summary
+        /// </summary>
+        public abstract void WriteSummary();
+
+        /// <summary>
+        /// Writes examples
+        /// </summary>
+        public virtual void WriteExamples()
+        {
+        }
+
+        /// <summary>
+        /// The "syntax" is a bried containing the application name, "[options]" and eventually files.
+        /// For example: "DbMetal [options] [&lt;input file>]
+        /// </summary>
+        public virtual void WriteSyntax()
+        {
+            var syntax = new StringBuilder();
+            syntax.AppendFormat("{0} [options]", ApplicationName);
+            foreach (var file in GetFiles())
+            {
+                if (file.Description.Mandatory)
+                    syntax.AppendFormat(" {0}", GetFileText(file));
+                else
+                    syntax.AppendFormat(" [{0}]", GetFileText(file));
+            }
+            Write(syntax.ToString());
+        }
+
+        /// <summary>
+        /// Describes an option
+        /// </summary>
+        protected class Option
+        {
+            /// <summary>
+            /// The member name (property or field)
+            /// </summary>
+            public string Name { get; set; }
+            /// <summary>
+            /// The attribute used to define the member as an option
+            /// </summary>
+            public OptionAttribute Description { get; set; }
+        }
+
+        /// <summary>
+        /// Describes an input file
+        /// </summary>
+        protected class FileName
+        {
+            /// <summary>
+            /// The member name (property or field)
+            /// </summary>
+            public string Name { get; set; }
+            /// <summary>
+            /// The attribute used to define the member as an input file
+            /// </summary>
+            public FileAttribute Description { get; set; }
+        }
+
+        /// <summary>
+        /// Internal class. I wrote it because I was thinking that the .NET framework already had such a class.
+        /// At second thought, I may have made a confusion with STL
+        /// (interesting, isn't it?)
+        /// </summary>
+        /// <typeparam name="A"></typeparam>
+        /// <typeparam name="B"></typeparam>
+        protected class Pair<A, B>
+        {
+            public A First { get; set; }
+            public B Second { get; set; }
+        }
+
+        /// <summary>
+        /// Enumerates all members (fields or properties) that have been marked with the specified attribute
+        /// </summary>
+        /// <typeparam name="T">The attribute type to search for</typeparam>
+        /// <returns>A list of pairs with name and attribute</returns>
+        protected IEnumerable<Pair<string, T>> EnumerateOptions<T>()
+            where T : Attribute
+        {
+            Type t = GetType();
+            foreach (var propertyInfo in t.GetProperties())
+            {
+                var descriptions = (T[])propertyInfo.GetCustomAttributes(typeof(T), true);
+                if (descriptions.Length == 1)
+                    yield return new Pair<string, T> { First = propertyInfo.Name, Second = descriptions[0] };
+            }
+            foreach (var fieldInfo in t.GetFields())
+            {
+                var descriptions = (T[])fieldInfo.GetCustomAttributes(typeof(T), true);
+                if (descriptions.Length == 1)
+                    yield return new Pair<string, T> { First = fieldInfo.Name, Second = descriptions[0] };
+            }
+        }
+
+        protected IEnumerable<Option> EnumerateOptions()
+        {
+            foreach (var pair in EnumerateOptions<OptionAttribute>())
+                yield return new Option { Name = pair.First, Description = pair.Second };
+        }
+
+        protected IEnumerable<FileName> GetFiles()
+        {
+            foreach (var pair in from p in EnumerateOptions<FileAttribute>() orderby p.Second.Mandatory select p)
+                yield return new FileName { Name = pair.First, Description = pair.Second };
+        }
+
+        /// <summary>
+        /// Returns options, grouped by group (the group number is the dictionary key)
+        /// </summary>
+        /// <returns></returns>
+        protected IDictionary<int, IList<Option>> GetOptions()
+        {
+            var options = new Dictionary<int, IList<Option>>();
+            foreach (var option in EnumerateOptions())
+            {
+                if (!options.ContainsKey(option.Description.Group))
+                    options[option.Description.Group] = new List<Option>();
+                options[option.Description.Group].Add(option);
+            }
+            return options;
+        }
+
+        /// <summary>
+        /// Return a literal value based on an option
+        /// </summary>
+        /// <param name="option"></param>
+        /// <returns></returns>
+        protected virtual string GetOptionText(Option option)
+        {
+            var optionName = option.Name[0].ToString().ToLower() + option.Name.Substring(1);
+            if (string.IsNullOrEmpty(option.Description.ValueName))
+                return optionName;
+            return string.Format("{0}:<{1}>",
+                optionName,
+                option.Description.ValueName);
+        }
+
+        /// <summary>
+        /// Returns a literal value base on an input file
+        /// </summary>
+        /// <param name="fileName"></param>
+        /// <returns></returns>
+        protected virtual string GetFileText(FileName fileName)
+        {
+            return string.Format("<{0}>", fileName.Description.Name);
+        }
+
+        /// <summary>
+        /// Computes the maximum options and files length, to align all descriptions
+        /// </summary>
+        /// <param name="options"></param>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        private int GetMaximumLength(IDictionary<int, IList<Option>> options, IEnumerable<FileName> files)
+        {
+            int maxLength = 0;
+            foreach (var optionsList in options.Values)
+            {
+                foreach (var option in optionsList)
+                {
+                    var optionName = GetOptionText(option);
+                    int length = optionName.Length;
+                    if (length > maxLength)
+                        maxLength = length;
+                }
+            }
+            foreach (var file in files)
+            {
+                var fileName = GetFileText(file);
+                int length = fileName.Length;
+                if (length > maxLength)
+                    maxLength = length;
+            }
+            return maxLength;
+        }
+
+        protected static string[] SplitText(string text, int width)
+        {
+            var lines = new List<string>(new[] { "" });
+            var words = text.Split(' ');
+            foreach (var word in words)
+            {
+                var line = lines.Last();
+                if (line.Length == 0)
+                    lines[lines.Count - 1] = word;
+                else if (line.Length + word.Length + 1 < width)
+                    lines[lines.Count - 1] = line + " " + word;
+                else
+                    lines.Add(word);
+            }
+            return lines.ToArray();
+        }
+
+        protected void WriteOption(string firstLine, string text)
+        {
+            int width = TextWidth - firstLine.Length - 2;
+            var lines = SplitText(text, width);
+            var padding = string.Empty.PadRight(firstLine.Length);
+            for (int i = 0; i < lines.Length; i++)
+            {
+                Write("{0} {1}", i == 0 ? firstLine : padding, lines[i]);
+            }
+        }
+
+        /// <summary>
+        /// Displays all available options and files
+        /// </summary>
+        protected void WriteOptions()
+        {
+            var options = GetOptions();
+            var files = GetFiles();
+            int maxLength = GetMaximumLength(options, files);
+            Write("Options:");
+            foreach (var group in from k in options.Keys orderby k select k)
+            {
+                var optionsList = options[group];
+                foreach (var option in from o in optionsList orderby o.Name select o)
+                {
+                    WriteOption(string.Format("  /{0}", GetOptionText(option).PadRight(maxLength)), option.Description.Text);
+                }
+                WriteLine();
+            }
+            foreach (var file in files)
+            {
+                WriteOption(string.Format("  {0}", GetFileText(file).PadRight(maxLength + 1)), file.Description.Text);
+            }
+        }
+
+        /// <summary>
+        /// Displays application help
+        /// </summary>
+        public void WriteHelp()
+        {
+            WriteHeader(); // includes a WriteLine()
+            WriteSyntax();
+            WriteLine();
+            WriteSummary();
+            WriteLine();
+            WriteOptions();
+            WriteLine();
+            WriteExamples();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/AllTypes all to Cs.txt	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/AllTypes all to Cs.txt	
@@ -1,7 +1,7 @@
-# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
-#-code:AllTypesSqlite1.cs -provider:Sqlite     -conn="data source=../../Northwind.db3"
-#-code:AllTypesOracle1.cs -provider:Oracle     -user=Northwind
-#-code:AllTypesOraODP1.cs -provider:OracleODP  -user=Northwind
-#-code:AllTypesPgsql1.cs  -provider:PostgreSQL -database=northwind
-#-code:AllTypesIngres1.cs -provider:Ingres     
--code:AllTypesMySql1.cs  -provider:MySQL      
+# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
+#-code:AllTypesSqlite1.cs -provider:Sqlite     -conn="data source=../../Northwind.db3"
+#-code:AllTypesOracle1.cs -provider:Oracle     -user=Northwind
+#-code:AllTypesOraODP1.cs -provider:OracleODP  -user=Northwind
+#-code:AllTypesPgsql1.cs  -provider:PostgreSQL -database=northwind
+#-code:AllTypesIngres1.cs -provider:Ingres     
+-code:AllTypesMySql1.cs  -provider:MySQL      
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/AllTypes to Cs.txt	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/AllTypes to Cs.txt	
@@ -1,2 +1,2 @@
-﻿# DbMetal "@Db to Cs.txt"
-/database=AllTypes /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@AllTypes all to Cs.txt" /culture="en"
+﻿# DbMetal "@Db to Cs.txt"
+/database=AllTypes /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@AllTypes all to Cs.txt" /culture="en"
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Configuration/ProvidersSection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Configuration/ProvidersSection.cs
@@ -1,130 +1,130 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.IO;
-using System.Linq;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Text;
-
-namespace DbMetal.Configuration
-{
-    /// <summary>
-    /// Handles the providers section.
-    /// Each provider is defined as follows:
-    ///  &lt;provider name="MySQL"      dbLinqSchemaLoader="DbLinq.MySql.MySqlSchemaLoader, DbLinq.MySql"
-    ///                             databaseConnection="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
-    /// </summary>
-    public class ProvidersSection : ConfigurationSection
-    {
-        public class ProviderElement : ConfigurationElement
-        {
-            [ConfigurationProperty("name", IsRequired = true)]
-            public string Name
-            {
-                get { return (string)this["name"]; }
-            }
-
-            [ConfigurationProperty("dbLinqSchemaLoader", IsRequired = true)]
-            public string DbLinqSchemaLoader
-            {
-                get { return (string)this["dbLinqSchemaLoader"]; }
-            }
-
-            [ConfigurationProperty("databaseConnection", IsRequired = true)]
-            public string DatabaseConnection
-            {
-                get { return (string)this["databaseConnection"]; }
-            }
-
-            [ConfigurationProperty("sqlDialectType", IsRequired = false)]
-            public string SqlDialectType
-            {
-                get { return (string)this["sqlDialectType"]; }
-            }
-        }
-
-        public class ProvidersCollection : ConfigurationElementCollection
-        {
-            protected override ConfigurationElement CreateNewElement()
-            {
-                return new ProviderElement();
-            }
-
-            protected override object GetElementKey(ConfigurationElement element)
-            {
-                var provider = (ProviderElement)element;
-                return provider.Name.ToLower();
-            }
-
-            public ProviderElement GetProvider(string name)
-            {
-                return (ProviderElement)BaseGet(name.ToLower());
-            }
-            public bool TryGetProvider(string name, out ProviderElement element, out string error)
-            {
-                //use Configuration namespace to get our config
-                object[] allKeys = base.BaseGetAllKeys();
-                if (Array.IndexOf(allKeys, name.ToLower())<0)
-                {
-                    string[] allKeyStrings = allKeys.OfType<string>().ToArray();
-                    
-                    element = null;
-                    string configFile = Path.GetFileName(typeof(Program).Assembly.Location)+ ".config";
-                    error = allKeys.Length == 0
-                        ? string.Format("There are no <provider/> entries in your {0} file.", configFile)
-                        : GetProvidersDescription(name, allKeyStrings.Length, configFile);
-                    return false;
-                }
-                element = (ProviderElement)BaseGet(name.ToLower());
-                error = null;
-                return true;
-            }
-
-            private string GetProvidersDescription(string name, int numKeys, string configFile)
-            {
-                var message = new StringBuilder();
-                message.AppendFormat("Provider '{0}' not found among the {1} config entries in your {2} file.  ",
-                    name, numKeys, configFile);
-                message.AppendLine("Valid providers include:");
-                foreach (ProviderElement p in this.Cast<ProviderElement>().OrderBy(e => e.Name))
-                {
-                    message.AppendFormat("\t{0} [{1}]",
-                        p.Name, p.DatabaseConnection);
-                    message.AppendLine();
-                }
-                return message.ToString();
-            }
-        }
-
-        [ConfigurationProperty("providers", IsDefaultCollection = true)]
-        [ConfigurationCollection(typeof(ProviderElement), AddItemName = "provider")]
-        public ProvidersCollection Providers
-        {
-            get { return (ProvidersCollection)this["providers"]; }
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.IO;
+using System.Linq;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Text;
+
+namespace DbMetal.Configuration
+{
+    /// <summary>
+    /// Handles the providers section.
+    /// Each provider is defined as follows:
+    ///  &lt;provider name="MySQL"      dbLinqSchemaLoader="DbLinq.MySql.MySqlSchemaLoader, DbLinq.MySql"
+    ///                             databaseConnection="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
+    /// </summary>
+    public class ProvidersSection : ConfigurationSection
+    {
+        public class ProviderElement : ConfigurationElement
+        {
+            [ConfigurationProperty("name", IsRequired = true)]
+            public string Name
+            {
+                get { return (string)this["name"]; }
+            }
+
+            [ConfigurationProperty("dbLinqSchemaLoader", IsRequired = true)]
+            public string DbLinqSchemaLoader
+            {
+                get { return (string)this["dbLinqSchemaLoader"]; }
+            }
+
+            [ConfigurationProperty("databaseConnection", IsRequired = true)]
+            public string DatabaseConnection
+            {
+                get { return (string)this["databaseConnection"]; }
+            }
+
+            [ConfigurationProperty("sqlDialectType", IsRequired = false)]
+            public string SqlDialectType
+            {
+                get { return (string)this["sqlDialectType"]; }
+            }
+        }
+
+        public class ProvidersCollection : ConfigurationElementCollection
+        {
+            protected override ConfigurationElement CreateNewElement()
+            {
+                return new ProviderElement();
+            }
+
+            protected override object GetElementKey(ConfigurationElement element)
+            {
+                var provider = (ProviderElement)element;
+                return provider.Name.ToLower();
+            }
+
+            public ProviderElement GetProvider(string name)
+            {
+                return (ProviderElement)BaseGet(name.ToLower());
+            }
+            public bool TryGetProvider(string name, out ProviderElement element, out string error)
+            {
+                //use Configuration namespace to get our config
+                object[] allKeys = base.BaseGetAllKeys();
+                if (Array.IndexOf(allKeys, name.ToLower())<0)
+                {
+                    string[] allKeyStrings = allKeys.OfType<string>().ToArray();
+                    
+                    element = null;
+                    string configFile = Path.GetFileName(typeof(Program).Assembly.Location)+ ".config";
+                    error = allKeys.Length == 0
+                        ? string.Format("There are no <provider/> entries in your {0} file.", configFile)
+                        : GetProvidersDescription(name, allKeyStrings.Length, configFile);
+                    return false;
+                }
+                element = (ProviderElement)BaseGet(name.ToLower());
+                error = null;
+                return true;
+            }
+
+            private string GetProvidersDescription(string name, int numKeys, string configFile)
+            {
+                var message = new StringBuilder();
+                message.AppendFormat("Provider '{0}' not found among the {1} config entries in your {2} file.  ",
+                    name, numKeys, configFile);
+                message.AppendLine("Valid providers include:");
+                foreach (ProviderElement p in this.Cast<ProviderElement>().OrderBy(e => e.Name))
+                {
+                    message.AppendFormat("\t{0} [{1}]",
+                        p.Name, p.DatabaseConnection);
+                    message.AppendLine();
+                }
+                return message.ToString();
+            }
+        }
+
+        [ConfigurationProperty("providers", IsDefaultCollection = true)]
+        [ConfigurationCollection(typeof(ProviderElement), AddItemName = "provider")]
+        public ProvidersCollection Providers
+        {
+            get { return (ProvidersCollection)this["providers"]; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/DB all to Cs.txt	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/DB all to Cs.txt	
@@ -1,8 +1,8 @@
-# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
-/code:NorthwindFirebird1.cs /provider:Firebird   /database="c:\program files\Firebird\Firebird_2_1\examples\nwind\Northwind.FDB"
-/code:NorthwindSqlite1.cs   /provider:Sqlite     /conn="data source=../../Northwind.db3"
-/code:NorthwindIngres1.cs   /provider:Ingres     
-/code:NorthwindOraODP1.cs   /provider:OracleODP  /user=Northwind
-/code:NorthwindOracle1.cs   /provider:Oracle     /user=Northwind
-/code:NorthwindMySql1.cs    /provider:MySQL      
-/code:NorthwindPgsql1.cs    /provider:PostgreSQL 
+# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
+/code:NorthwindFirebird1.cs /provider:Firebird   /database="c:\program files\Firebird\Firebird_2_1\examples\nwind\Northwind.FDB"
+/code:NorthwindSqlite1.cs   /provider:Sqlite     /conn="data source=../../Northwind.db3"
+/code:NorthwindIngres1.cs   /provider:Ingres     
+/code:NorthwindOraODP1.cs   /provider:OracleODP  /user=Northwind
+/code:NorthwindOracle1.cs   /provider:Oracle     /user=Northwind
+/code:NorthwindMySql1.cs    /provider:MySQL      
+/code:NorthwindPgsql1.cs    /provider:PostgreSQL 
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/DB all to DBML.txt	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/DB all to DBML.txt	
@@ -1,7 +1,7 @@
-# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
--dbml:NorthwindSqlite1.dbml -provider:Sqlite     -conn="data source=../../Northwind.db3"
--dbml:NorthwindOracle1.dbml -provider:Oracle     -user=Northwind
--dbml:NorthwindOraODP1.dbml -provider:OracleODP  -user=Northwind
--dbml:NorthwindPgsql1.dbml  -provider:PostgreSQL -database=northwind
--dbml:NorthwindIngres1.dbml -provider:Ingres     
--dbml:NorthwindMySql1.dbml  -provider:MySQL      
+# note that databaserver can be specified in %DbLinqServer%, and is localhost by default (if not specified)
+-dbml:NorthwindSqlite1.dbml -provider:Sqlite     -conn="data source=../../Northwind.db3"
+-dbml:NorthwindOracle1.dbml -provider:Oracle     -user=Northwind
+-dbml:NorthwindOraODP1.dbml -provider:OracleODP  -user=Northwind
+-dbml:NorthwindPgsql1.dbml  -provider:PostgreSQL -database=northwind
+-dbml:NorthwindIngres1.dbml -provider:Ingres     
+-dbml:NorthwindMySql1.dbml  -provider:MySQL      
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/DB to Cs.txt	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/DB to Cs.txt	
@@ -1,3 +1,3 @@
-﻿# DbMetal "@Db to Cs.txt"
-#/database=Northwind /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@DB all to Cs.txt" /culture="en"
-/database=Northwind /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@DB all to Cs.txt" /culture="en" /no-generateEqualsAndHash /entityAttributes=System.Runtime.Serialization.DataContract /memberAttributes=System.Runtime.Serialization.DataMember
+﻿# DbMetal "@Db to Cs.txt"
+#/database=Northwind /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@DB all to Cs.txt" /culture="en"
+/database=Northwind /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@DB all to Cs.txt" /culture="en" /no-generateEqualsAndHash /entityAttributes=System.Runtime.Serialization.DataContract /memberAttributes=System.Runtime.Serialization.DataMember
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/DB to DBML.txt	
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/DB to DBML.txt	
@@ -1,2 +1,2 @@
-﻿# DbMetal "@Db to DBML.txt"
-/database=Northwind /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@DB all to DBML.txt"
+﻿# DbMetal "@Db to DBML.txt"
+/database=Northwind /server=%DbLinqServer??localhost /user=LinqUser /password=linq2 /namespace=nwind /sprocs /entityInterfaces=INotifyPropertyChanged /pluralize "@DB all to DBML.txt"
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/AttributeDefinition.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/AttributeDefinition.cs
@@ -1,55 +1,55 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-
-namespace DbMetal.Generator
-{
-    public class AttributeDefinition
-    {
-        public string Name { get; set; }
-
-        public IDictionary<string, object> Members;
-
-        public object this[string key]
-        {
-            get { return Members[key]; }
-            set { Members[key] = value; }
-        }
-
-        public AttributeDefinition(string name, IDictionary<string, object> members)
-        {
-            Members = members;
-            Name = name;
-        }
-
-        public AttributeDefinition(string name)
-        {
-            Members = new Dictionary<string, object>();
-            Name = name;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+
+namespace DbMetal.Generator
+{
+    public class AttributeDefinition
+    {
+        public string Name { get; set; }
+
+        public IDictionary<string, object> Members;
+
+        public object this[string key]
+        {
+            get { return Members[key]; }
+            set { Members[key] = value; }
+        }
+
+        public AttributeDefinition(string name, IDictionary<string, object> members)
+        {
+            Members = members;
+            Name = name;
+        }
+
+        public AttributeDefinition(string name)
+        {
+            Members = new Dictionary<string, object>();
+            Name = name;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/CodeDomGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/CodeDomGenerator.cs
@@ -1,1474 +1,1474 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Data.Linq.Mapping;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Text.RegularExpressions;
-
-using Microsoft.CSharp;
-using Microsoft.VisualBasic;
-
-using DbLinq.Schema.Dbml;
-using DbLinq.Schema.Dbml.Adapter;
-using DbLinq.Util;
-
-namespace DbMetal.Generator
-{
-#if !MONO_STRICT
-    public
-#endif
-    class CodeDomGenerator : ICodeGenerator
-    {
-        CodeDomProvider Provider { get; set; }
-
-        // Provided only for Processor.EnumerateCodeGenerators().  DO NOT USE.
-        public CodeDomGenerator()
-        {
-        }
-
-        public CodeDomGenerator(CodeDomProvider provider)
-        {
-            this.Provider = provider;
-        }
-
-        public string LanguageCode {
-            get { return "*"; }
-        }
-
-        public string Extension {
-            get { return "*"; }
-        }
-
-        public static CodeDomGenerator CreateFromFileExtension(string extension)
-        {
-            return CreateFromLanguage(CodeDomProvider.GetLanguageFromExtension(extension));
-        }
-
-        public static CodeDomGenerator CreateFromLanguage(string language)
-        {
-            return new CodeDomGenerator(CodeDomProvider.CreateProvider(language));
-        }
-
-        public void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
-        {
-            Context = context;
-            Provider.CreateGenerator(textWriter).GenerateCodeFromNamespace(
-                GenerateCodeDomModel(dbSchema), textWriter, 
-                new CodeGeneratorOptions() {
-                    BracingStyle = "C",
-                    IndentString = "\t",
-                });
-        }
-
-        static void Warning(string format, params object[] args)
-        {
-            Console.Error.Write(Path.GetFileName(Environment.GetCommandLineArgs()[0]));
-            Console.Error.Write(": warning: ");
-            Console.Error.WriteLine(format, args);
-        }
-
-        private CodeTypeMember CreatePartialMethod(string methodName, params CodeParameterDeclarationExpression[] parameters)
-        {
-            string prototype = null;
-            if (Provider is CSharpCodeProvider)
-            {
-                prototype =
-                    "\t\tpartial void {0}({1});" + Environment.NewLine +
-                    "\t\t";
-            }
-            else if (Provider is VBCodeProvider)
-            {
-                prototype =
-                    "\t\tPartial Private Sub {0}({1})" + Environment.NewLine +
-                    "\t\tEnd Sub" + Environment.NewLine +
-                    "\t\t";
-            }
-
-            if (prototype == null)
-            {
-                var method = new CodeMemberMethod() {
-                    Name = methodName,
-                };
-                method.Parameters.AddRange(parameters);
-                return method;
-            }
-
-            var methodDecl = new StringWriter();
-            var gen = Provider.CreateGenerator(methodDecl);
-
-            bool comma = false;
-            foreach (var p in parameters)
-            {
-                if (comma)
-                    methodDecl.Write(", ");
-                comma = true;
-                gen.GenerateCodeFromExpression(p, methodDecl, null);
-            }
-            return new CodeSnippetTypeMember(string.Format(prototype, methodName, methodDecl.ToString()));
-        }
-
-        CodeThisReferenceExpression thisReference = new CodeThisReferenceExpression();
-
-        protected GenerationContext Context { get; set; }
-
-        protected virtual CodeNamespace GenerateCodeDomModel(Database database)
-        {
-            CodeNamespace _namespace = new CodeNamespace(Context.Parameters.Namespace ?? database.ContextNamespace);
-
-            _namespace.Imports.Add(new CodeNamespaceImport("System"));
-            _namespace.Imports.Add(new CodeNamespaceImport("System.ComponentModel"));
-#if MONO_STRICT
-            _namespace.Imports.Add(new CodeNamespaceImport("System.Data"));
-            _namespace.Imports.Add(new CodeNamespaceImport("System.Data.Linq"));
-            _namespace.Imports.Add(new CodeNamespaceImport("System.Data.Linq.Mapping"));
-#else
-            AddConditionalImports(_namespace.Imports,
-                "System.Data",
-                "MONO_STRICT",
-                new[] { "System.Data.Linq" },
-                new[] { "DbLinq.Data.Linq", "DbLinq.Vendor" },
-                "System.Data.Linq.Mapping");
-#endif
-            _namespace.Imports.Add(new CodeNamespaceImport("System.Diagnostics"));
-
-            var time = Context.Parameters.GenerateTimestamps ? DateTime.Now.ToString("u") : "[TIMESTAMP]";
-            var header = new CodeCommentStatement(GenerateCommentBanner(database, time));
-            _namespace.Comments.Add(header);
-
-            _namespace.Types.Add(GenerateContextClass(database));
-#if !MONO_STRICT
-            _namespace.Types.Add(GenerateMonoStrictContextConstructors(database));
-            _namespace.Types.Add(GenerateNotMonoStrictContextConstructors(database));
-#endif
-
-            foreach (Table table in database.Tables)
-                _namespace.Types.Add(GenerateTableClass(table, database));
-            return _namespace;
-        }
-
-        void AddConditionalImports(CodeNamespaceImportCollection imports,
-                string firstImport,
-                string conditional,
-                string[] importsIfTrue,
-                string[] importsIfFalse,
-                string lastImport)
-        {
-            if (Provider is CSharpCodeProvider)
-            {
-                // HACK HACK HACK
-                // Would be better if CodeDom actually supported conditional compilation constructs...
-                // This is predecated upon CSharpCodeGenerator.GenerateNamespaceImport() being implemented as:
-                //      output.Write ("using ");
-                //      output.Write (GetSafeName (import.Namespace));
-                //      output.WriteLine (';');
-                // Thus, with "crafty" execution of the namespace, we can stuff arbitrary text in there...
-
-                var block = new StringBuilder();
-                // No 'using', as GenerateNamespaceImport() writes it.
-                block.Append(firstImport).Append(";").Append(Environment.NewLine);
-                block.Append("#if ").Append(conditional).Append(Environment.NewLine);
-                foreach (var ns in importsIfTrue)
-                    block.Append("\tusing ").Append(ns).Append(";").Append(Environment.NewLine);
-                block.Append("#else   // ").Append(conditional).Append(Environment.NewLine);
-                foreach (var ns in importsIfFalse)
-                    block.Append("\tusing ").Append(ns).Append(";").Append(Environment.NewLine);
-                block.Append("#endif  // ").Append(conditional).Append(Environment.NewLine);
-                block.Append("\tusing ").Append(lastImport);
-                // No ';', as GenerateNamespaceImport() writes it.
-
-                imports.Add(new CodeNamespaceImport(block.ToString()));
-            }
-            else if (Provider is VBCodeProvider)
-            {
-                // HACK HACK HACK
-                // Would be better if CodeDom actually supported conditional compilation constructs...
-                // This is predecated upon VBCodeGenerator.GenerateNamespaceImport() being implemented as:
-                //      output.Write ("Imports ");
-                //      output.Write (import.Namespace);
-                //      output.WriteLine ();
-                // Thus, with "crafty" execution of the namespace, we can stuff arbitrary text in there...
-
-                var block = new StringBuilder();
-                // No 'Imports', as GenerateNamespaceImport() writes it.
-                block.Append(firstImport).Append(Environment.NewLine);
-                block.Append("#If ").Append(conditional).Append(" Then").Append(Environment.NewLine);
-                foreach (var ns in importsIfTrue)
-                    block.Append("Imports ").Append(ns).Append(Environment.NewLine);
-                block.Append("#Else     ' ").Append(conditional).Append(Environment.NewLine);
-                foreach (var ns in importsIfFalse)
-                    block.Append("Imports ").Append(ns).Append(Environment.NewLine);
-                block.Append("#End If   ' ").Append(conditional).Append(Environment.NewLine);
-                block.Append("Imports ").Append(lastImport);
-                // No newline, as GenerateNamespaceImport() writes it.
-
-                imports.Add(new CodeNamespaceImport(block.ToString()));
-            }
-            else
-            {
-                // Default to using the DbLinq imports
-                imports.Add(new CodeNamespaceImport(firstImport));
-                foreach (var ns in importsIfTrue)
-                    imports.Add(new CodeNamespaceImport(ns));
-                imports.Add(new CodeNamespaceImport(lastImport));
-            }
-        }
-
-        private string GenerateCommentBanner(Database database, string time)
-        {
-            var result = new StringBuilder();
-
-            // http://www.network-science.de/ascii/
-            // http://www.network-science.de/ascii/ascii.php?TEXT=MetalSequel&x=14&y=14&FONT=_all+fonts+with+your+text_&RICH=no&FORM=left&STRE=no&WIDT=80 
-            result.Append(
-                @"
-  ____  _     __  __      _        _ 
- |  _ \| |__ |  \/  | ___| |_ __ _| |
- | | | | '_ \| |\/| |/ _ \ __/ _` | |
- | |_| | |_) | |  | |  __/ || (_| | |
- |____/|_.__/|_|  |_|\___|\__\__,_|_|
-
-");
-            result.AppendLine(String.Format(" Auto-generated from {0} on {1}.", database.Name, time));
-            result.AppendLine(" Please visit http://code.google.com/p/dblinq2007/ for more information.");
-
-            return result.ToString();
-        }
-
-        protected virtual CodeTypeDeclaration GenerateContextClass(Database database)
-        {
-            var _class = new CodeTypeDeclaration() {
-                IsClass         = true, 
-                IsPartial       = true, 
-                Name            = database.Class, 
-                TypeAttributes  = TypeAttributes.Public 
-            };
-
-            _class.BaseTypes.Add(GetContextBaseType(database.BaseType));
-
-            var onCreated = CreatePartialMethod("OnCreated");
-            onCreated.StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Extensibility Method Declarations"));
-            onCreated.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
-            _class.Members.Add(onCreated);
-
-            // Implement Constructor
-            GenerateContextConstructors(_class, database);
-
-            foreach (Table table in database.Tables)
-            {
-                var tableType = new CodeTypeReference(table.Type.Name);
-                var property = new CodeMemberProperty() {
-                    Attributes  = MemberAttributes.Public | MemberAttributes.Final,
-                    Name        = table.Member, 
-                    Type        = new CodeTypeReference("Table", tableType), 
-                };
-                property.GetStatements.Add(
-                    new CodeMethodReturnStatement(
-                        new CodeMethodInvokeExpression(
-                            new CodeMethodReferenceExpression(thisReference, "GetTable", tableType))));
-                _class.Members.Add(property);
-            }
-
-            foreach (var function in database.Functions)
-            {
-                GenerateContextFunction(_class, function);
-            }
-
-            return _class;
-        }
-
-        static string GetContextBaseType(string type)
-        {
-            string baseType = "DataContext";
-
-            if (!string.IsNullOrEmpty(type))
-            {
-                var t = TypeLoader.Load(type);
-                if (t != null)
-                    baseType = t.Name;
-            }
-
-            return baseType;
-        }
-
-        void GenerateContextConstructors(CodeTypeDeclaration contextType, Database database)
-        {
-            // .ctor(string connectionString);
-            var constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = { new CodeParameterDeclarationExpression(typeof(string), "connectionString") },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connectionString"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-
-#if MONO_STRICT
-            // .ctor(IDbConnection connection);
-            constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-#endif
-
-            // .ctor(string connection, MappingSource mappingSource);
-            constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = { 
-                    new CodeParameterDeclarationExpression(typeof(string), "connection"),
-                    new CodeParameterDeclarationExpression("MappingSource", "mappingSource"),
-                },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("mappingSource"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-
-            // .ctor(IDbConnection connection, MappingSource mappingSource);
-            constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = { 
-                    new CodeParameterDeclarationExpression("IDbConnection", "connection"),
-                    new CodeParameterDeclarationExpression("MappingSource", "mappingSource"),
-                },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("mappingSource"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-        }
-
-        CodeTypeDeclaration GenerateMonoStrictContextConstructors(Database database)
-        {
-            var contextType = new CodeTypeDeclaration()
-            {
-                IsClass         = true,
-                IsPartial       = true,
-                Name            = database.Class,
-                TypeAttributes  = TypeAttributes.Public
-            };
-            AddConditionalIfElseBlocks(contextType, "MONO_STRICT");
-
-            // .ctor(IDbConnection connection);
-            var constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-
-            return contextType;
-        }
-
-        void AddConditionalIfElseBlocks(CodeTypeMember member, string condition)
-        {
-            string startIf = null, elseIf = null;
-            if (Provider is CSharpCodeProvider)
-            {
-                startIf = string.Format("Start {0}{1}#if {0}{1}", condition, Environment.NewLine);
-                elseIf  = string.Format("End {0}{1}\t#endregion{1}#else     // {0}", condition, Environment.NewLine);
-            }
-            if (Provider is VBCodeProvider)
-            {
-                startIf = string.Format("Start {0}\"{1}#If {0} Then{1}    '", condition, Environment.NewLine);
-                elseIf  = string.Format("End {0}\"{1}\t#End Region{1}#Else     ' {0}", condition, Environment.NewLine);
-            }
-            if (startIf != null && elseIf != null)
-            {
-                member.StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, startIf));
-                member.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, elseIf));
-            }
-        }
-
-        void AddConditionalEndifBlocks(CodeTypeMember member, string condition)
-        {
-            string endIf = null;
-            if (Provider is CSharpCodeProvider)
-            {
-                endIf   = string.Format("End Not {0}{1}\t#endregion{1}#endif     // {0}", condition, Environment.NewLine);
-            }
-            if (Provider is VBCodeProvider)
-            {
-                endIf   = string.Format("End Not {0}\"{1}\t#End Region{1}#End If     ' {0}", condition, Environment.NewLine);
-            }
-            if (endIf != null)
-            {
-                member.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, endIf));
-                member.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
-            }
-        }
-
-        CodeTypeDeclaration GenerateNotMonoStrictContextConstructors(Database database)
-        {
-            var contextType = new CodeTypeDeclaration() {
-                IsClass         = true,
-                IsPartial       = true,
-                Name            = database.Class,
-                TypeAttributes  = TypeAttributes.Public
-            };
-            AddConditionalEndifBlocks(contextType, "MONO_STRICT");
-
-            // .ctor(IDbConnection connection);
-            var constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.BaseConstructorArgs.Add(new CodeObjectCreateExpression(Context.SchemaLoader.Vendor.GetType()));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-
-            // .ctor(IDbConnection connection, IVendor mappingSource);
-            constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = {
-                    new CodeParameterDeclarationExpression("IDbConnection", "connection"),
-                    new CodeParameterDeclarationExpression("IVendor", "sqlDialect"),
-                },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("sqlDialect"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-
-            // .ctor(IDbConnection connection, MappingSource mappingSource, IVendor mappingSource);
-            constructor = new CodeConstructor() {
-                Attributes = MemberAttributes.Public,
-                Parameters = {
-                    new CodeParameterDeclarationExpression("IDbConnection", "connection"),
-                    new CodeParameterDeclarationExpression("MappingSource", "mappingSource"),
-                    new CodeParameterDeclarationExpression("IVendor", "sqlDialect"),
-                },
-            };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("mappingSource"));
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("sqlDialect"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            contextType.Members.Add(constructor);
-
-            return contextType;
-        }
-        
-        void GenerateContextFunction(CodeTypeDeclaration contextType, Function function)
-        {
-            if (function == null || string.IsNullOrEmpty(function.Name))
-            {
-                Warning("L33 Invalid storedProcdure object: missing name.");
-                return;
-            }
-
-            var methodRetType = GetFunctionReturnType(function);
-            var method = new CodeMemberMethod() {
-                Attributes  = ToMemberAttributes(function),
-                Name        = function.Method ?? function.Name,
-                ReturnType  = methodRetType,
-                CustomAttributes = {
-                    new CodeAttributeDeclaration("Function",
-                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(function.Name)),
-                        new CodeAttributeArgument("IsComposable", new CodePrimitiveExpression(function.IsComposable))),
-                },
-            };
-            if (method.Parameters != null)
-                method.Parameters.AddRange(function.Parameters.Select(x => GetFunctionParameterType(x)).ToArray());
-            if (function.Return != null && !string.IsNullOrEmpty(function.Return.DbType))
-                method.ReturnTypeCustomAttributes.Add(
-                        new CodeAttributeDeclaration("Parameter",
-                            new CodeAttributeArgument("DbType", new CodePrimitiveExpression(function.Return.DbType))));
-
-            contextType.Members.Add(method);
-
-            for (int i = 0; i < function.Parameters.Count; ++i)
-            {
-                var p = function.Parameters[i];
-                if (!p.DirectionOut)
-                    continue;
-                method.Statements.Add(
-                        new CodeAssignStatement(
-                            new CodeVariableReferenceExpression(p.Name),
-                            new CodeDefaultValueExpression(new CodeTypeReference(p.Type))));
-            }
-
-            var executeMethodCallArgs = new List<CodeExpression>() {
-                thisReference,
-                new CodeCastExpression(
-                    new CodeTypeReference("System.Reflection.MethodInfo"),
-                    new CodeMethodInvokeExpression(
-                        new CodeMethodReferenceExpression(
-                            new CodeTypeReferenceExpression("System.Reflection.MethodBase"), "GetCurrentMethod"))),
-            };
-            if (method.Parameters != null)
-                executeMethodCallArgs.AddRange(
-                        function.Parameters.Select(p => (CodeExpression) new CodeVariableReferenceExpression(p.Name)));
-            method.Statements.Add(
-                    new CodeVariableDeclarationStatement(
-                        new CodeTypeReference("IExecuteResult"),
-                        "result",
-                        new CodeMethodInvokeExpression(
-                            new CodeMethodReferenceExpression(thisReference, "ExecuteMethodCall"),
-                            executeMethodCallArgs.ToArray())));
-            for (int i = 0; i < function.Parameters.Count; ++i)
-            {
-                var p = function.Parameters[i];
-                if (!p.DirectionOut)
-                    continue;
-                method.Statements.Add(
-                        new CodeAssignStatement(
-                            new CodeVariableReferenceExpression(p.Name),
-                            new CodeCastExpression(
-                                new CodeTypeReference(p.Type),
-                                new CodeMethodInvokeExpression(
-                                    new CodeMethodReferenceExpression(
-                                        new CodeVariableReferenceExpression("result"),
-                                        "GetParameterValue"),
-                                    new CodePrimitiveExpression(i)))));
-            }
-
-            if (methodRetType != null)
-            {
-                method.Statements.Add(
-                        new CodeMethodReturnStatement(
-                            new CodeCastExpression(
-                                method.ReturnType,
-                                new CodePropertyReferenceExpression(
-                                    new CodeVariableReferenceExpression("result"),
-                                    "ReturnValue"))));
-            }
-        }
-
-        CodeTypeReference GetFunctionReturnType(Function function)
-        {
-            CodeTypeReference type = null;
-            if (function.Return != null)
-            {
-                type = GetFunctionType(function.Return.Type);
-            }
-
-            bool isDataShapeUnknown = function.ElementType == null
-                                      && function.BodyContainsSelectStatement
-                                      && !function.IsComposable;
-            if (isDataShapeUnknown)
-            {
-                //if we don't know the shape of results, and the proc body contains some selects,
-                //we have no choice but to return an untyped DataSet.
-                //
-                //TODO: either parse proc body like microsoft, 
-                //or create a little GUI tool which would call the proc with test values, to determine result shape.
-                type = new CodeTypeReference(typeof(DataSet));
-            }
-            return type;
-        }
-
-        static CodeTypeReference GetFunctionType(string type)
-        {
-            var t = System.Type.GetType(type);
-            if (t == null)
-                return new CodeTypeReference(type);
-            if (t.IsValueType)
-                return new CodeTypeReference(typeof(Nullable<>)) {
-                    TypeArguments = {
-                        new CodeTypeReference(t),
-                    },
-                };
-            return new CodeTypeReference(t);
-        }
-
-        CodeParameterDeclarationExpression GetFunctionParameterType(Parameter parameter)
-        {
-            var p = new CodeParameterDeclarationExpression(GetFunctionType(parameter.Type), parameter.Name) {
-                CustomAttributes = {
-                    new CodeAttributeDeclaration("Parameter",
-                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(parameter.Name)),
-                        new CodeAttributeArgument("DbType", new CodePrimitiveExpression(parameter.DbType))),
-                },
-            };
-            switch (parameter.Direction)
-            {
-                case DbLinq.Schema.Dbml.ParameterDirection.In:
-                    p.Direction = FieldDirection.In;
-                    break;
-                case DbLinq.Schema.Dbml.ParameterDirection.Out:
-                    p.Direction = FieldDirection.Out;
-                    break;
-                case DbLinq.Schema.Dbml.ParameterDirection.InOut:
-                    p.Direction = FieldDirection.In | FieldDirection.Out;
-                    break;
-                default:
-                    throw new ArgumentOutOfRangeException();
-            }
-            return p;
-        }
-
-        protected CodeTypeDeclaration GenerateTableClass(Table table, Database database)
-        {
-            var _class = new CodeTypeDeclaration() {
-                IsClass         = true, 
-                IsPartial       = true, 
-                Name            = table.Type.Name, 
-                TypeAttributes  = TypeAttributes.Public,
-                CustomAttributes = {
-                    new CodeAttributeDeclaration("Table", 
-                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(table.Name))),
-                },
-            };
-
-            WriteCustomTypes(_class, table);
-
-            var havePrimaryKeys = table.Type.Columns.Any(c => c.IsPrimaryKey);
-            if (havePrimaryKeys)
-            {
-                GenerateINotifyPropertyChanging(_class);
-                GenerateINotifyPropertyChanged(_class);
-            }
-
-            // Implement Constructor
-            var constructor = new CodeConstructor() { Attributes = MemberAttributes.Public };
-            // children are EntitySet
-            foreach (var child in GetClassChildren(table))
-            {
-                // if the association has a storage, we use it. Otherwise, we use the property name
-                var entitySetMember = GetStorageFieldName(child);
-                constructor.Statements.Add(
-                    new CodeAssignStatement(
-                        new CodeVariableReferenceExpression(entitySetMember),
-                        new CodeObjectCreateExpression(
-                            new CodeTypeReference("EntitySet", new CodeTypeReference(child.Type)),
-                            new CodeDelegateCreateExpression(
-                                new CodeTypeReference("Action", new CodeTypeReference(child.Type)),
-                                thisReference, child.Member + "_Attach"),
-                            new CodeDelegateCreateExpression(
-                                new CodeTypeReference("Action", new CodeTypeReference(child.Type)),
-                                thisReference, child.Member + "_Detach"))));
-            }
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            _class.Members.Add(constructor);
-
-            if (Context.Parameters.GenerateEqualsHash)
-            {
-                GenerateEntityGetHashCodeAndEquals(_class, table);
-            }
-
-            GenerateExtensibilityDeclarations(_class, table);
-
-            // todo: add these when the actually get called
-            //partial void OnLoaded();
-            //partial void OnValidate(System.Data.Linq.ChangeAction action);
-
-            // columns
-            foreach (Column column in table.Type.Columns)
-            {
-                var relatedAssociations = from a in table.Type.Associations
-                                          where a.IsForeignKey && a.TheseKeys.Contains(column.Name)
-                                          select a;
-
-                var type = ToCodeTypeReference(column);
-                var columnMember = column.Member ?? column.Name;
-
-                var field = new CodeMemberField(type, GetStorageFieldName(column));
-                _class.Members.Add(field);
-                var fieldReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), field.Name);
-
-                var onChanging  = GetChangingMethodName(columnMember);
-                var onChanged   = GetChangedMethodName(columnMember);
-
-                var property = new CodeMemberProperty();
-                property.Type = type;
-                property.Name = columnMember;
-                property.Attributes = MemberAttributes.Public | MemberAttributes.Final;
-
-                var defAttrValues = new ColumnAttribute();
-                var args = new List<CodeAttributeArgument>() {
-                    new CodeAttributeArgument("Storage", new CodePrimitiveExpression(GetStorageFieldName(column))),
-                    new CodeAttributeArgument("Name", new CodePrimitiveExpression(column.Name)),
-                    new CodeAttributeArgument("DbType", new CodePrimitiveExpression(column.DbType)),
-                };
-                if (defAttrValues.IsPrimaryKey != column.IsPrimaryKey)
-                    args.Add(new CodeAttributeArgument("IsPrimaryKey", new CodePrimitiveExpression(column.IsPrimaryKey)));
-                if (defAttrValues.IsDbGenerated != column.IsDbGenerated)
-                    args.Add(new CodeAttributeArgument("IsDbGenerated", new CodePrimitiveExpression(column.IsDbGenerated)));
-                if (column.AutoSync != DbLinq.Schema.Dbml.AutoSync.Default)
-                    args.Add(new CodeAttributeArgument("AutoSync", 
-                        new CodeFieldReferenceExpression(new CodeTypeReferenceExpression("AutoSync"), column.AutoSync.ToString())));
-                if (defAttrValues.CanBeNull != column.CanBeNull)
-                    args.Add(new CodeAttributeArgument("CanBeNull", new CodePrimitiveExpression(column.CanBeNull)));
-                if (column.Expression != null)
-                    args.Add(new CodeAttributeArgument("Expression", new CodePrimitiveExpression(column.Expression)));
-                property.CustomAttributes.Add(
-                    new CodeAttributeDeclaration("Column", args.ToArray()));
-                property.CustomAttributes.Add(new CodeAttributeDeclaration("DebuggerNonUserCode"));
-
-                property.GetStatements.Add(new CodeMethodReturnStatement(fieldReference));
-
-                var whenUpdating = new List<CodeStatement>(
-                    from assoc in relatedAssociations
-                    select (CodeStatement) new CodeConditionStatement(
-                        new CodePropertyReferenceExpression(
-                            new CodeVariableReferenceExpression(GetStorageFieldName(assoc)),
-                            "HasLoadedOrAssignedValue"),
-                        new CodeThrowExceptionStatement(
-                            new CodeObjectCreateExpression(typeof(System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException)))));
-                whenUpdating.Add(
-                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChanging, new CodePropertySetValueReferenceExpression())));
-                if (havePrimaryKeys)
-                    whenUpdating.Add(
-                            new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "SendPropertyChanging")));
-                whenUpdating.Add(
-                        new CodeAssignStatement(fieldReference, new CodePropertySetValueReferenceExpression()));
-                if (havePrimaryKeys)
-                    whenUpdating.Add(
-                            new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "SendPropertyChanged", new CodePrimitiveExpression(property.Name))));
-                whenUpdating.Add(
-                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChanged)));
-
-                var fieldType = TypeLoader.Load(column.Type);
-                // This is needed for VB.NET generation; 
-                // int/string/etc. can use '<>' for comparison, but NOT arrays and other reference types.
-                // arrays/etc. require the 'Is' operator, which is CodeBinaryOperatorType.IdentityEquality.
-                // The VB IsNot operator is not exposed from CodeDom.
-                // Thus, we need to special-case: if fieldType is a ref or nullable type,
-                //  generate '(field Is value) = false'; otherwise, 
-                //  generate '(field <> value)'
-                CodeBinaryOperatorExpression condition = fieldType.IsClass || fieldType.IsNullable()
-                    ? ValuesAreNotEqual_Ref(new CodeVariableReferenceExpression(field.Name), new CodePropertySetValueReferenceExpression())
-                    : ValuesAreNotEqual(new CodeVariableReferenceExpression(field.Name), new CodePropertySetValueReferenceExpression());
-                property.SetStatements.Add(new CodeConditionStatement(condition, whenUpdating.ToArray()));
-                _class.Members.Add(property);
-            }
-
-            GenerateEntityChildren(_class, table, database);
-            GenerateEntityChildrenAttachment(_class, table, database);
-            GenerateEntityParents(_class, table, database);
-
-            return _class;
-        }
-
-        void WriteCustomTypes(CodeTypeDeclaration entity, Table table)
-        {
-            // detect required custom types
-            foreach (var column in table.Type.Columns)
-            {
-                var extendedType = column.ExtendedType;
-                var enumType = extendedType as EnumType;
-                if (enumType != null)
-                {
-                    Context.ExtendedTypes[column] = new GenerationContext.ExtendedTypeAndName {
-                        Type = column.ExtendedType,
-                        Table = table
-                    };
-                }
-            }
-
-            var customTypesNames = new List<string>();
-
-            // create names and avoid conflits
-            foreach (var extendedTypePair in Context.ExtendedTypes)
-            {
-                if (extendedTypePair.Value.Table != table)
-                    continue;
-
-                if (string.IsNullOrEmpty(extendedTypePair.Value.Type.Name))
-                {
-                    string name = extendedTypePair.Key.Member + "Type";
-                    for (; ; )
-                    {
-                        if ((from t in Context.ExtendedTypes.Values where t.Type.Name == name select t).FirstOrDefault() == null)
-                        {
-                            extendedTypePair.Value.Type.Name = name;
-                            break;
-                        }
-                        // at 3rd loop, it will look ugly, however we will never go there
-                        name = extendedTypePair.Value.Table.Type.Name + name;
-                    }
-                }
-                customTypesNames.Add(extendedTypePair.Value.Type.Name);
-            }
-
-            // write custom types
-            if (customTypesNames.Count > 0)
-            {
-                var customTypes = new List<CodeTypeDeclaration>(customTypesNames.Count);
-
-                foreach (var extendedTypePair in Context.ExtendedTypes)
-                {
-                    if (extendedTypePair.Value.Table != table)
-                        continue;
-
-                    var extendedType = extendedTypePair.Value.Type;
-                    var enumValue = extendedType as EnumType;
-
-                    if (enumValue != null)
-                    {
-                        var enumType = new CodeTypeDeclaration(enumValue.Name) {
-                            TypeAttributes = TypeAttributes.Public,
-                            IsEnum = true,
-                        };
-                        customTypes.Add(enumType);
-                        var orderedValues = from nv in enumValue orderby nv.Value select nv;
-                        int currentValue = 1;
-                        foreach (var nameValue in orderedValues)
-                        {
-                            var field = new CodeMemberField() {
-                                Name = nameValue.Key,
-                            };
-                            enumType.Members.Add(field);
-                            if (nameValue.Value != currentValue)
-                            {
-                                currentValue = nameValue.Value;
-                                field.InitExpression = new CodePrimitiveExpression(nameValue.Value);
-                            }
-                            currentValue++;
-                        }
-                    }
-                }
-
-                if (customTypes.Count == 0)
-                    return;
-                customTypes.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start,
-                        string.Format("Custom type definitions for {0}", string.Join(", ", customTypesNames.ToArray()))));
-                customTypes.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
-                entity.Members.AddRange(customTypes.ToArray());
-            }
-        }
-
-        void GenerateExtensibilityDeclarations(CodeTypeDeclaration entity, Table table)
-        {
-            var partialMethods = new[] { CreatePartialMethod("OnCreated") }
-                .Concat(table.Type.Columns.Select(c => new[] { CreateChangedMethodDecl(c), CreateChangingMethodDecl(c) })
-                    .SelectMany(md => md)).ToArray();
-            partialMethods.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Extensibility Method Declarations"));
-            partialMethods.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
-            entity.Members.AddRange(partialMethods);
-        }
-
-        static string GetChangedMethodName(string columnName)
-        {
-            return string.Format("On{0}Changed", columnName);
-        }
-
-        CodeTypeMember CreateChangedMethodDecl(Column column)
-        {
-            return CreatePartialMethod(GetChangedMethodName(column.Member));
-        }
-
-        static string GetChangingMethodName(string columnName)
-        {
-            return string.Format("On{0}Changing", columnName);
-        }
-
-        CodeTypeMember CreateChangingMethodDecl(Column column)
-        {
-            return CreatePartialMethod(GetChangingMethodName(column.Member),
-                    new CodeParameterDeclarationExpression(ToCodeTypeReference(column), "value"));
-        }
-
-        static CodeTypeReference ToCodeTypeReference(Column column)
-        {
-            var t = System.Type.GetType(column.Type);
-            if (t == null)
-                return new CodeTypeReference(column.Type);
-            return t.IsValueType && column.CanBeNull
-                ? new CodeTypeReference("System.Nullable", new CodeTypeReference(column.Type))
-                : new CodeTypeReference(column.Type);
-        }
-
-        CodeBinaryOperatorExpression ValuesAreNotEqual(CodeExpression a, CodeExpression b)
-        {
-            return new CodeBinaryOperatorExpression(a, CodeBinaryOperatorType.IdentityInequality, b);
-        }
-
-        CodeBinaryOperatorExpression ValuesAreNotEqual_Ref(CodeExpression a, CodeExpression b)
-        {
-            return new CodeBinaryOperatorExpression(
-                        new CodeBinaryOperatorExpression(
-                            a,
-                            CodeBinaryOperatorType.IdentityEquality,
-                            b),
-                        CodeBinaryOperatorType.ValueEquality,
-                        new CodePrimitiveExpression(false));
-        }
-
-        CodeBinaryOperatorExpression ValueIsNull(CodeExpression value)
-        {
-            return new CodeBinaryOperatorExpression(
-                value,
-                CodeBinaryOperatorType.IdentityEquality,
-                new CodePrimitiveExpression(null));
-        }
-
-        CodeBinaryOperatorExpression ValueIsNotNull(CodeExpression value)
-        {
-            return new CodeBinaryOperatorExpression(
-                value,
-                CodeBinaryOperatorType.IdentityInequality, 
-                new CodePrimitiveExpression(null));
-        }
-
-        static string GetStorageFieldName(Column column)
-        {
-            return GetStorageFieldName(column.Storage ?? column.Member);
-        }
-
-        static string GetStorageFieldName(string storage)
-        {
-            if (storage.StartsWith("_"))
-                return storage;
-            return "_" + storage;
-        }
-
-        private void GenerateINotifyPropertyChanging(CodeTypeDeclaration entity)
-        {
-            entity.BaseTypes.Add(typeof(INotifyPropertyChanging));
-            var propertyChangingEvent = new CodeMemberEvent() {
-                Attributes  = MemberAttributes.Public,
-                Name        = "PropertyChanging",
-                Type        = new CodeTypeReference(typeof(PropertyChangingEventHandler)),
-                ImplementationTypes = {
-                    new CodeTypeReference(typeof(INotifyPropertyChanging))
-                },
-            };
-            var eventArgs = new CodeMemberField(new CodeTypeReference(typeof(PropertyChangingEventArgs)), "emptyChangingEventArgs") {
-                Attributes      = MemberAttributes.Static | MemberAttributes.Private,
-                InitExpression  = new CodeObjectCreateExpression(new CodeTypeReference(typeof(PropertyChangingEventArgs)),
-                    new CodePrimitiveExpression("")),
-            };
-            var method = new CodeMemberMethod() {
-                Attributes  = MemberAttributes.Family,
-                Name        = "SendPropertyChanging",
-            };
-            method.Statements.Add(new CodeVariableDeclarationStatement(typeof(PropertyChangingEventHandler), "h") {
-                InitExpression  = new CodeEventReferenceExpression(thisReference, "PropertyChanging"),
-            });
-            method.Statements.Add(new CodeConditionStatement(
-                    ValueIsNotNull(new CodeVariableReferenceExpression("h")),
-                    new CodeExpressionStatement(
-                        new CodeDelegateInvokeExpression(new CodeVariableReferenceExpression("h"), thisReference, new CodeFieldReferenceExpression(null, "emptyChangingEventArgs")))));
-
-            entity.Members.Add(propertyChangingEvent);
-            entity.Members.Add(eventArgs);
-            entity.Members.Add(method);
-        }
-
-        private void GenerateINotifyPropertyChanged(CodeTypeDeclaration entity)
-        {
-            entity.BaseTypes.Add(typeof(INotifyPropertyChanged));
-
-            var propertyChangedEvent = new CodeMemberEvent() {
-                Attributes = MemberAttributes.Public,
-                Name = "PropertyChanged",
-                Type = new CodeTypeReference(typeof(PropertyChangedEventHandler)),
-                ImplementationTypes = {
-                    new CodeTypeReference(typeof(INotifyPropertyChanged))
-                },
-            };
-
-            var method = new CodeMemberMethod() { 
-                Attributes = MemberAttributes.Family, 
-                Name = "SendPropertyChanged", 
-                Parameters = { new CodeParameterDeclarationExpression(typeof(System.String), "propertyName") } 
-            };
-            method.Statements.Add(new CodeVariableDeclarationStatement(typeof(PropertyChangedEventHandler), "h") {
-                InitExpression = new CodeEventReferenceExpression(thisReference, "PropertyChanged"),
-            });
-            method.Statements.Add(new CodeConditionStatement(
-                    ValueIsNotNull(new CodeVariableReferenceExpression("h")),
-                    new CodeExpressionStatement(
-                        new CodeDelegateInvokeExpression(new CodeVariableReferenceExpression("h"), thisReference, new CodeObjectCreateExpression(typeof(PropertyChangedEventArgs), new CodeVariableReferenceExpression("propertyName"))))));
-
-            entity.Members.Add(propertyChangedEvent);
-            entity.Members.Add(method);
-        }
-
-        void GenerateEntityGetHashCodeAndEquals(CodeTypeDeclaration entity, Table table)
-        {
-            var primaryKeys = table.Type.Columns.Where(c => c.IsPrimaryKey);
-            var pkCount = primaryKeys.Count();
-            if (pkCount == 0)
-            {
-                Warning("Table {0} has no primary key(s).  Skipping /generate-equals-hash for this table.",
-                        table.Name);
-                return;
-            }
-            entity.BaseTypes.Add(new CodeTypeReference(typeof(IEquatable<>)) {
-                TypeArguments = { new CodeTypeReference(entity.Name) },
-            });
-
-            var method = new CodeMemberMethod() {
-                Attributes  = MemberAttributes.Public | MemberAttributes.Override,
-                Name        = "GetHashCode",
-                ReturnType  = new CodeTypeReference(typeof(int)),
-            };
-            entity.Members.Add(method);
-            method.Statements.Add(new CodeVariableDeclarationStatement(typeof(int), "hc", new CodePrimitiveExpression(0)));
-            var numShifts = 32 / pkCount;
-            int pki = 0;
-            foreach (var pk in primaryKeys)
-            {
-                var shift = 1 << (pki++ * numShifts);
-                // lack of exclusive-or means we instead split the 32-bit hash code value
-                // into pkCount "chunks", each chunk being numShifts in size.
-                // Thus, if there are two primary keys, the first primary key gets the
-                // lower 16 bits, while the second primray key gets the upper 16 bits.
-                CodeStatement update = new CodeAssignStatement(
-                        new CodeVariableReferenceExpression("hc"),
-                        new CodeBinaryOperatorExpression(
-                            new CodeVariableReferenceExpression("hc"),
-                            CodeBinaryOperatorType.BitwiseOr,
-                            new CodeBinaryOperatorExpression(
-                                new CodeMethodInvokeExpression(
-                                    new CodeMethodReferenceExpression(
-                                        new CodeVariableReferenceExpression(GetStorageFieldName(pk)),
-                                        "GetHashCode")),
-                                CodeBinaryOperatorType.Multiply,
-                                new CodePrimitiveExpression(shift))));
-                var pkType = System.Type.GetType(pk.Type);
-                if (pk.CanBeNull || (pkType != null && (pkType.IsClass || pkType.IsNullable())))
-                {
-                    update = new CodeConditionStatement(
-                            ValueIsNotNull(new CodeVariableReferenceExpression(GetStorageFieldName(pk))),
-                            update);
-                }
-                method.Statements.Add(update);
-            }
-            method.Statements.Add(new CodeMethodReturnStatement(new CodeVariableReferenceExpression("hc")));
-
-            method = new CodeMemberMethod() {
-                Attributes  = MemberAttributes.Public | MemberAttributes.Override,
-                Name        = "Equals",
-                ReturnType  = new CodeTypeReference(typeof(bool)),
-                Parameters = {
-                    new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(object)), "value"),
-                },
-            };
-            entity.Members.Add(method);
-            method.Statements.Add(
-                    new CodeConditionStatement(
-                        ValueIsNull(new CodeVariableReferenceExpression("value")), 
-                        new CodeMethodReturnStatement(new CodePrimitiveExpression(false))));
-            method.Statements.Add(
-                    new CodeConditionStatement(
-                        ValuesAreNotEqual_Ref(
-                            new CodeMethodInvokeExpression(
-                                new CodeMethodReferenceExpression(
-                                    new CodeVariableReferenceExpression("value"),
-                                    "GetType")),
-                            new CodeMethodInvokeExpression(
-                                new CodeMethodReferenceExpression(thisReference, "GetType"))),
-                        new CodeMethodReturnStatement(new CodePrimitiveExpression(false))));
-            method.Statements.Add(
-                    new CodeVariableDeclarationStatement(
-                        new CodeTypeReference(entity.Name),
-                        "other",
-                        new CodeCastExpression(new CodeTypeReference(entity.Name), new CodeVariableReferenceExpression("value"))));
-            method.Statements.Add(
-                    new CodeMethodReturnStatement(
-                        new CodeMethodInvokeExpression(
-                            new CodeMethodReferenceExpression(thisReference, "Equals"),
-                            new CodeVariableReferenceExpression("other"))));
-
-            method = new CodeMemberMethod() {
-                Attributes  = MemberAttributes.Public,
-                Name        = "Equals",
-                ReturnType  = new CodeTypeReference(typeof(bool)),
-                Parameters  = {
-                    new CodeParameterDeclarationExpression(new CodeTypeReference(entity.Name), "value"),
-                },
-                ImplementationTypes = {
-                    new CodeTypeReference("IEquatable", new CodeTypeReference(entity.Name)),
-                },
-            };
-            entity.Members.Add(method);
-            method.Statements.Add(
-                    new CodeConditionStatement(
-                        ValueIsNull(new CodeVariableReferenceExpression("value")),
-                        new CodeMethodReturnStatement(new CodePrimitiveExpression(false))));
-
-            CodeExpression equals = null;
-            foreach (var pk in primaryKeys)
-            {
-                var compare = new CodeMethodInvokeExpression(
-                        new CodeMethodReferenceExpression(
-                            new CodePropertyReferenceExpression(
-                                new CodeTypeReferenceExpression(
-                                    new CodeTypeReference("System.Collections.Generic.EqualityComparer",
-                                        new CodeTypeReference(pk.Type))),
-                                "Default"),
-                            "Equals"),
-                        new CodeFieldReferenceExpression(thisReference, GetStorageFieldName(pk)),
-                        new CodeFieldReferenceExpression(new CodeVariableReferenceExpression("value"), GetStorageFieldName(pk)));
-                equals = equals == null
-                    ? (CodeExpression) compare
-                    : (CodeExpression) new CodeBinaryOperatorExpression(
-                        equals,
-                        CodeBinaryOperatorType.BooleanAnd,
-                        compare);
-            }
-            method.Statements.Add(
-                    new CodeMethodReturnStatement(equals));
-        }
-
-        void GenerateEntityChildren(CodeTypeDeclaration entity, Table table, Database schema)
-        {
-            var children = GetClassChildren(table);
-            if (children.Any())
-            {
-                var childMembers = new List<CodeTypeMember>();
-
-                foreach (var child in children)
-                {
-                    bool hasDuplicates = (from c in children where c.Member == child.Member select c).Count() > 1;
-
-                    // the following is apparently useless
-                    var targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == child.Type);
-                    if (targetTable == null)
-                    {
-                        //Logger.Write(Level.Error, "ERROR L143 target table class not found:" + child.Type);
-                        continue;
-                    }
-
-                    var childType = new CodeTypeReference("EntitySet", new CodeTypeReference(child.Type));
-                    var storage = GetStorageFieldName(child);
-                    entity.Members.Add(new CodeMemberField(childType, storage));
-
-                    var childName = hasDuplicates
-                        ? child.Member + "_" + string.Join("", child.OtherKeys.ToArray())
-                        : child.Member;
-                    var property = new CodeMemberProperty() {
-                        Name        = childName,
-                        Type        = childType,
-                        Attributes  = ToMemberAttributes(child),
-                        CustomAttributes = {
-                            new CodeAttributeDeclaration("Association",
-                                new CodeAttributeArgument("Storage", new CodePrimitiveExpression(GetStorageFieldName(child))),
-                                new CodeAttributeArgument("OtherKey", new CodePrimitiveExpression(child.OtherKey)),
-                                new CodeAttributeArgument("ThisKey", new CodePrimitiveExpression(child.ThisKey)),
-                                new CodeAttributeArgument("Name", new CodePrimitiveExpression(child.Name))),
-                            new CodeAttributeDeclaration("DebuggerNonUserCode"),
-                        },
-                    };
-                    childMembers.Add(property);
-                    property.GetStatements.Add(new CodeMethodReturnStatement(
-                            new CodeFieldReferenceExpression(thisReference, storage)));
-                    property.SetStatements.Add(new CodeAssignStatement(
-                            new CodeFieldReferenceExpression(thisReference, storage),
-                            new CodePropertySetValueReferenceExpression()));
-                }
-
-                if (childMembers.Count == 0)
-                    return;
-                childMembers.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Children"));
-                childMembers.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
-                entity.Members.AddRange(childMembers.ToArray());
-            }
-        }
-
-        IEnumerable<Association> GetClassChildren(Table table)
-        {
-            return table.Type.Associations.Where(a => !a.IsForeignKey);
-        }
-
-        static MemberAttributes ToMemberAttributes(Association association)
-        {
-            MemberAttributes attrs = 0;
-            if (!association.AccessModifierSpecified)
-                attrs |= MemberAttributes.Public;
-            else
-                switch (association.AccessModifier)
-                {
-                    case AccessModifier.Internal:           attrs = MemberAttributes.Assembly; break;
-                    case AccessModifier.Private:            attrs = MemberAttributes.Private; break;
-                    case AccessModifier.Protected:          attrs = MemberAttributes.Family; break;
-                    case AccessModifier.ProtectedInternal:  attrs = MemberAttributes.FamilyOrAssembly; break;
-                    case AccessModifier.Public:             attrs = MemberAttributes.Public; break;
-                    default:
-                        throw new ArgumentOutOfRangeException("association", "Modifier value '" + association.AccessModifierSpecified + "' is an unsupported value.");
-                }
-            if (!association.ModifierSpecified)
-                attrs |= MemberAttributes.Final;
-            else
-                switch (association.Modifier)
-                {
-                    case MemberModifier.New:        attrs |= MemberAttributes.New | MemberAttributes.Final; break;
-                    case MemberModifier.NewVirtual: attrs |= MemberAttributes.New; break;
-                    case MemberModifier.Override:   attrs |= MemberAttributes.Override; break;
-                    case MemberModifier.Virtual:    break;
-                }
-            return attrs;
-        }
-
-        static MemberAttributes ToMemberAttributes(Function function)
-        {
-            MemberAttributes attrs = 0;
-            if (!function.AccessModifierSpecified)
-                attrs |= MemberAttributes.Public;
-            else
-                switch (function.AccessModifier)
-                {
-                    case AccessModifier.Internal:           attrs = MemberAttributes.Assembly; break;
-                    case AccessModifier.Private:            attrs = MemberAttributes.Private; break;
-                    case AccessModifier.Protected:          attrs = MemberAttributes.Family; break;
-                    case AccessModifier.ProtectedInternal:  attrs = MemberAttributes.FamilyOrAssembly; break;
-                    case AccessModifier.Public:             attrs = MemberAttributes.Public; break;
-                    default:
-                        throw new ArgumentOutOfRangeException("function", "Modifier value '" + function.AccessModifierSpecified + "' is an unsupported value.");
-                }
-            if (!function.ModifierSpecified)
-                attrs |= MemberAttributes.Final;
-            else
-                switch (function.Modifier)
-                {
-                    case MemberModifier.New:        attrs |= MemberAttributes.New | MemberAttributes.Final; break;
-                    case MemberModifier.NewVirtual: attrs |= MemberAttributes.New; break;
-                    case MemberModifier.Override:   attrs |= MemberAttributes.Override; break;
-                    case MemberModifier.Virtual:    break;
-                }
-            return attrs;
-        }
-
-        static string GetStorageFieldName(Association association)
-        {
-            return association.Storage != null 
-                ? GetStorageFieldName(association.Storage) 
-                : "_" + CreateIdentifier(association.Member ?? association.Name);
-        }
-
-        static string CreateIdentifier(string value)
-        {
-            return Regex.Replace(value, @"\W", "_");
-        }
-
-        void GenerateEntityChildrenAttachment(CodeTypeDeclaration entity, Table table, Database schema)
-        {
-            var children = GetClassChildren(table).ToList();
-            if (!children.Any())
-                return;
-
-            var havePrimaryKeys = table.Type.Columns.Any(c => c.IsPrimaryKey);
-
-            var handlers = new List<CodeTypeMember>();
-
-            foreach (var child in children)
-            {
-                // the reverse child is the association seen from the child
-                // we're going to use it...
-                var reverseChild = schema.GetReverseAssociation(child);
-                // ... to get the parent name
-                var memberName = reverseChild.Member;
-
-                var sendPropertyChanging = new CodeExpressionStatement(
-                        new CodeMethodInvokeExpression(
-                            new CodeMethodReferenceExpression(thisReference, "SendPropertyChanging")));
-
-                var attach = new CodeMemberMethod() {
-                    Name = child.Member + "_Attach",
-                    Parameters = {
-                        new CodeParameterDeclarationExpression(child.Type, "entity"),
-                    },
-                };
-                handlers.Add(attach);
-                if (havePrimaryKeys)
-                    attach.Statements.Add(sendPropertyChanging);
-                attach.Statements.Add(
-                        new CodeAssignStatement(
-                            new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("entity"), memberName),
-                            thisReference));
-
-                var detach = new CodeMemberMethod() {
-                    Name = child.Member + "_Detach",
-                    Parameters = {
-                        new CodeParameterDeclarationExpression(child.Type, "entity"),
-                    },
-                };
-                handlers.Add(detach);
-                if (havePrimaryKeys)
-                    detach.Statements.Add(sendPropertyChanging);
-                detach.Statements.Add(
-                        new CodeAssignStatement(
-                            new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("entity"), memberName),
-                            new CodePrimitiveExpression(null)));
-            }
-
-            if (handlers.Count == 0)
-                return;
-
-            handlers.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Attachment handlers"));
-            handlers.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
-            entity.Members.AddRange(handlers.ToArray());
-        }
-
-        void GenerateEntityParents(CodeTypeDeclaration entity, Table table, Database schema)
-        {
-            var parents = table.Type.Associations.Where(a => a.IsForeignKey);
-            if (!parents.Any())
-                return;
-
-            var parentMembers = new List<CodeTypeMember>();
-
-            foreach (var parent in parents)
-            {
-                bool hasDuplicates = (from p in parents where p.Member == parent.Member select p).Count() > 1;
-                // WriteClassParent(writer, parent, hasDuplicates, schema, context);
-                // the following is apparently useless
-                DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == parent.Type);
-                if (targetTable == null)
-                {
-                    //Logger.Write(Level.Error, "ERROR L191 target table type not found: " + parent.Type + "  (processing " + parent.Name + ")");
-                    continue;
-                }
-
-                string member = parent.Member;
-                string storageField = GetStorageFieldName(parent);
-                // TODO: remove this
-                if (member == parent.ThisKey)
-                {
-                    member = parent.ThisKey + targetTable.Type.Name; //repeat name to prevent collision (same as Linq)
-                    storageField = "_x_" + parent.Member;
-                }
-
-                var parentType = new CodeTypeReference(targetTable.Type.Name);
-                entity.Members.Add(new CodeMemberField(new CodeTypeReference("EntityRef", parentType), storageField) {
-                    InitExpression = new CodeObjectCreateExpression(new CodeTypeReference("EntityRef", parentType)),
-                });
-
-                var parentName = hasDuplicates
-                    ? member + "_" + string.Join("", parent.TheseKeys.ToArray())
-                    : member;
-                var property = new CodeMemberProperty() {
-                    Name        = parentName,
-                    Type        = parentType,
-                    Attributes  = ToMemberAttributes(parent),
-                    CustomAttributes = {
-                        new CodeAttributeDeclaration("Association",
-                            new CodeAttributeArgument("Storage", new CodePrimitiveExpression(storageField)),
-                            new CodeAttributeArgument("OtherKey", new CodePrimitiveExpression(parent.OtherKey)),
-                            new CodeAttributeArgument("ThisKey", new CodePrimitiveExpression(parent.ThisKey)),
-                            new CodeAttributeArgument("Name", new CodePrimitiveExpression(parent.Name)),
-                            new CodeAttributeArgument("IsForeignKey", new CodePrimitiveExpression(parent.IsForeignKey))),
-                        new CodeAttributeDeclaration("DebuggerNonUserCode"),
-                    },
-                };
-                parentMembers.Add(property);
-                property.GetStatements.Add(new CodeMethodReturnStatement(
-                        new CodePropertyReferenceExpression(
-                            new CodeFieldReferenceExpression(thisReference, storageField),
-                            "Entity")));
-
-                // algorithm is:
-                // 1.1. must be different than previous value
-                // 1.2. or HasLoadedOrAssignedValue is false (but why?)
-                // 2. implementations before change
-                // 3. if previous value not null
-                // 3.1. place parent in temp variable
-                // 3.2. set [Storage].Entity to null
-                // 3.3. remove it from parent list
-                // 4. assign value to [Storage].Entity
-                // 5. if value is not null
-                // 5.1. add it to parent list
-                // 5.2. set FK members with entity keys
-                // 6. else
-                // 6.1. set FK members to defaults (null or 0)
-                // 7. implementationas after change
-                var otherAssociation = schema.GetReverseAssociation(parent);
-                var parentEntity = new CodePropertyReferenceExpression(
-                        new CodeFieldReferenceExpression(thisReference, storageField),
-                        "Entity");
-                var parentTable = schema.Tables.Single(t => t.Type.Associations.Contains(parent));
-                var childKeys = parent.TheseKeys.ToArray();
-                var childColumns = (from ck in childKeys select table.Type.Columns.Single(c => c.Member == ck))
-                                    .ToArray();
-                var parentKeys = parent.OtherKeys.ToArray();
-                property.SetStatements.Add(new CodeConditionStatement(
-                        // 1.1
-                        ValuesAreNotEqual_Ref(parentEntity, new CodePropertySetValueReferenceExpression()),
-                        // 2. TODO: code before the change
-                        // 3. 
-                        new CodeConditionStatement(
-                            ValueIsNotNull(parentEntity),
-                            // 3.1
-                            new CodeVariableDeclarationStatement(parentType, "previous" + parent.Type, parentEntity),
-                            // 3.2
-                            new CodeAssignStatement(parentEntity, new CodePrimitiveExpression(null)),
-                            // 3.3
-                            new CodeExpressionStatement(
-                                 new CodeMethodInvokeExpression(
-                                    new CodeMethodReferenceExpression(
-                                        new CodePropertyReferenceExpression(
-                                            new CodeVariableReferenceExpression("previous" + parent.Type),
-                                            otherAssociation.Member),
-                                        "Remove"),
-                                    thisReference))),
-                        // 4.
-                        new CodeAssignStatement(parentEntity, new CodePropertySetValueReferenceExpression()),
-                        // 5. if value is null or not...
-                        new CodeConditionStatement(
-                            ValueIsNotNull(new CodePropertySetValueReferenceExpression()),
-                            // 5.1
-                            new CodeStatement[]{
-                                new CodeExpressionStatement(
-                                    new CodeMethodInvokeExpression(
-                                        new CodeMethodReferenceExpression(
-                                            new CodePropertyReferenceExpression(
-                                                new CodePropertySetValueReferenceExpression(),
-                                                otherAssociation.Member),
-                                            "Add"),
-                                        thisReference))
-                            // 5.2
-                            }.Concat(Enumerable.Range(0, parentKeys.Length).Select(i =>
-                                (CodeStatement) new CodeAssignStatement(
-                                    new CodeVariableReferenceExpression(GetStorageFieldName(childColumns[i])),
-                                    new CodePropertyReferenceExpression(
-                                        new CodePropertySetValueReferenceExpression(),
-                                        parentKeys[i]))
-                            )).ToArray(),
-                            // 6.
-                            Enumerable.Range(0, parentKeys.Length).Select(i => {
-                                var column = parentTable.Type.Columns.Single(c => c.Member == childKeys[i]);
-                                return (CodeStatement) new CodeAssignStatement(
-                                    new CodeVariableReferenceExpression(GetStorageFieldName(childColumns[i])),
-                                    column.CanBeNull
-                                        ? (CodeExpression) new CodePrimitiveExpression(null)
-                                        : (CodeExpression) new CodeDefaultValueExpression(new CodeTypeReference(column.Type)));
-                            }).ToArray())
-                        // 7: TODO
-                ));
-            }
-
-            if (parentMembers.Count == 0)
-                return;
-            parentMembers.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Parents"));
-            parentMembers.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
-            entity.Members.AddRange(parentMembers.ToArray());
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Data.Linq.Mapping;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Text.RegularExpressions;
+
+using Microsoft.CSharp;
+using Microsoft.VisualBasic;
+
+using DbLinq.Schema.Dbml;
+using DbLinq.Schema.Dbml.Adapter;
+using DbLinq.Util;
+
+namespace DbMetal.Generator
+{
+#if !MONO_STRICT
+    public
+#endif
+    class CodeDomGenerator : ICodeGenerator
+    {
+        CodeDomProvider Provider { get; set; }
+
+        // Provided only for Processor.EnumerateCodeGenerators().  DO NOT USE.
+        public CodeDomGenerator()
+        {
+        }
+
+        public CodeDomGenerator(CodeDomProvider provider)
+        {
+            this.Provider = provider;
+        }
+
+        public string LanguageCode {
+            get { return "*"; }
+        }
+
+        public string Extension {
+            get { return "*"; }
+        }
+
+        public static CodeDomGenerator CreateFromFileExtension(string extension)
+        {
+            return CreateFromLanguage(CodeDomProvider.GetLanguageFromExtension(extension));
+        }
+
+        public static CodeDomGenerator CreateFromLanguage(string language)
+        {
+            return new CodeDomGenerator(CodeDomProvider.CreateProvider(language));
+        }
+
+        public void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
+        {
+            Context = context;
+            Provider.CreateGenerator(textWriter).GenerateCodeFromNamespace(
+                GenerateCodeDomModel(dbSchema), textWriter, 
+                new CodeGeneratorOptions() {
+                    BracingStyle = "C",
+                    IndentString = "\t",
+                });
+        }
+
+        static void Warning(string format, params object[] args)
+        {
+            Console.Error.Write(Path.GetFileName(Environment.GetCommandLineArgs()[0]));
+            Console.Error.Write(": warning: ");
+            Console.Error.WriteLine(format, args);
+        }
+
+        private CodeTypeMember CreatePartialMethod(string methodName, params CodeParameterDeclarationExpression[] parameters)
+        {
+            string prototype = null;
+            if (Provider is CSharpCodeProvider)
+            {
+                prototype =
+                    "\t\tpartial void {0}({1});" + Environment.NewLine +
+                    "\t\t";
+            }
+            else if (Provider is VBCodeProvider)
+            {
+                prototype =
+                    "\t\tPartial Private Sub {0}({1})" + Environment.NewLine +
+                    "\t\tEnd Sub" + Environment.NewLine +
+                    "\t\t";
+            }
+
+            if (prototype == null)
+            {
+                var method = new CodeMemberMethod() {
+                    Name = methodName,
+                };
+                method.Parameters.AddRange(parameters);
+                return method;
+            }
+
+            var methodDecl = new StringWriter();
+            var gen = Provider.CreateGenerator(methodDecl);
+
+            bool comma = false;
+            foreach (var p in parameters)
+            {
+                if (comma)
+                    methodDecl.Write(", ");
+                comma = true;
+                gen.GenerateCodeFromExpression(p, methodDecl, null);
+            }
+            return new CodeSnippetTypeMember(string.Format(prototype, methodName, methodDecl.ToString()));
+        }
+
+        CodeThisReferenceExpression thisReference = new CodeThisReferenceExpression();
+
+        protected GenerationContext Context { get; set; }
+
+        protected virtual CodeNamespace GenerateCodeDomModel(Database database)
+        {
+            CodeNamespace _namespace = new CodeNamespace(Context.Parameters.Namespace ?? database.ContextNamespace);
+
+            _namespace.Imports.Add(new CodeNamespaceImport("System"));
+            _namespace.Imports.Add(new CodeNamespaceImport("System.ComponentModel"));
+#if MONO_STRICT
+            _namespace.Imports.Add(new CodeNamespaceImport("System.Data"));
+            _namespace.Imports.Add(new CodeNamespaceImport("System.Data.Linq"));
+            _namespace.Imports.Add(new CodeNamespaceImport("System.Data.Linq.Mapping"));
+#else
+            AddConditionalImports(_namespace.Imports,
+                "System.Data",
+                "MONO_STRICT",
+                new[] { "System.Data.Linq" },
+                new[] { "DbLinq.Data.Linq", "DbLinq.Vendor" },
+                "System.Data.Linq.Mapping");
+#endif
+            _namespace.Imports.Add(new CodeNamespaceImport("System.Diagnostics"));
+
+            var time = Context.Parameters.GenerateTimestamps ? DateTime.Now.ToString("u") : "[TIMESTAMP]";
+            var header = new CodeCommentStatement(GenerateCommentBanner(database, time));
+            _namespace.Comments.Add(header);
+
+            _namespace.Types.Add(GenerateContextClass(database));
+#if !MONO_STRICT
+            _namespace.Types.Add(GenerateMonoStrictContextConstructors(database));
+            _namespace.Types.Add(GenerateNotMonoStrictContextConstructors(database));
+#endif
+
+            foreach (Table table in database.Tables)
+                _namespace.Types.Add(GenerateTableClass(table, database));
+            return _namespace;
+        }
+
+        void AddConditionalImports(CodeNamespaceImportCollection imports,
+                string firstImport,
+                string conditional,
+                string[] importsIfTrue,
+                string[] importsIfFalse,
+                string lastImport)
+        {
+            if (Provider is CSharpCodeProvider)
+            {
+                // HACK HACK HACK
+                // Would be better if CodeDom actually supported conditional compilation constructs...
+                // This is predecated upon CSharpCodeGenerator.GenerateNamespaceImport() being implemented as:
+                //      output.Write ("using ");
+                //      output.Write (GetSafeName (import.Namespace));
+                //      output.WriteLine (';');
+                // Thus, with "crafty" execution of the namespace, we can stuff arbitrary text in there...
+
+                var block = new StringBuilder();
+                // No 'using', as GenerateNamespaceImport() writes it.
+                block.Append(firstImport).Append(";").Append(Environment.NewLine);
+                block.Append("#if ").Append(conditional).Append(Environment.NewLine);
+                foreach (var ns in importsIfTrue)
+                    block.Append("\tusing ").Append(ns).Append(";").Append(Environment.NewLine);
+                block.Append("#else   // ").Append(conditional).Append(Environment.NewLine);
+                foreach (var ns in importsIfFalse)
+                    block.Append("\tusing ").Append(ns).Append(";").Append(Environment.NewLine);
+                block.Append("#endif  // ").Append(conditional).Append(Environment.NewLine);
+                block.Append("\tusing ").Append(lastImport);
+                // No ';', as GenerateNamespaceImport() writes it.
+
+                imports.Add(new CodeNamespaceImport(block.ToString()));
+            }
+            else if (Provider is VBCodeProvider)
+            {
+                // HACK HACK HACK
+                // Would be better if CodeDom actually supported conditional compilation constructs...
+                // This is predecated upon VBCodeGenerator.GenerateNamespaceImport() being implemented as:
+                //      output.Write ("Imports ");
+                //      output.Write (import.Namespace);
+                //      output.WriteLine ();
+                // Thus, with "crafty" execution of the namespace, we can stuff arbitrary text in there...
+
+                var block = new StringBuilder();
+                // No 'Imports', as GenerateNamespaceImport() writes it.
+                block.Append(firstImport).Append(Environment.NewLine);
+                block.Append("#If ").Append(conditional).Append(" Then").Append(Environment.NewLine);
+                foreach (var ns in importsIfTrue)
+                    block.Append("Imports ").Append(ns).Append(Environment.NewLine);
+                block.Append("#Else     ' ").Append(conditional).Append(Environment.NewLine);
+                foreach (var ns in importsIfFalse)
+                    block.Append("Imports ").Append(ns).Append(Environment.NewLine);
+                block.Append("#End If   ' ").Append(conditional).Append(Environment.NewLine);
+                block.Append("Imports ").Append(lastImport);
+                // No newline, as GenerateNamespaceImport() writes it.
+
+                imports.Add(new CodeNamespaceImport(block.ToString()));
+            }
+            else
+            {
+                // Default to using the DbLinq imports
+                imports.Add(new CodeNamespaceImport(firstImport));
+                foreach (var ns in importsIfTrue)
+                    imports.Add(new CodeNamespaceImport(ns));
+                imports.Add(new CodeNamespaceImport(lastImport));
+            }
+        }
+
+        private string GenerateCommentBanner(Database database, string time)
+        {
+            var result = new StringBuilder();
+
+            // http://www.network-science.de/ascii/
+            // http://www.network-science.de/ascii/ascii.php?TEXT=MetalSequel&x=14&y=14&FONT=_all+fonts+with+your+text_&RICH=no&FORM=left&STRE=no&WIDT=80 
+            result.Append(
+                @"
+  ____  _     __  __      _        _ 
+ |  _ \| |__ |  \/  | ___| |_ __ _| |
+ | | | | '_ \| |\/| |/ _ \ __/ _` | |
+ | |_| | |_) | |  | |  __/ || (_| | |
+ |____/|_.__/|_|  |_|\___|\__\__,_|_|
+
+");
+            result.AppendLine(String.Format(" Auto-generated from {0} on {1}.", database.Name, time));
+            result.AppendLine(" Please visit http://code.google.com/p/dblinq2007/ for more information.");
+
+            return result.ToString();
+        }
+
+        protected virtual CodeTypeDeclaration GenerateContextClass(Database database)
+        {
+            var _class = new CodeTypeDeclaration() {
+                IsClass         = true, 
+                IsPartial       = true, 
+                Name            = database.Class, 
+                TypeAttributes  = TypeAttributes.Public 
+            };
+
+            _class.BaseTypes.Add(GetContextBaseType(database.BaseType));
+
+            var onCreated = CreatePartialMethod("OnCreated");
+            onCreated.StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Extensibility Method Declarations"));
+            onCreated.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
+            _class.Members.Add(onCreated);
+
+            // Implement Constructor
+            GenerateContextConstructors(_class, database);
+
+            foreach (Table table in database.Tables)
+            {
+                var tableType = new CodeTypeReference(table.Type.Name);
+                var property = new CodeMemberProperty() {
+                    Attributes  = MemberAttributes.Public | MemberAttributes.Final,
+                    Name        = table.Member, 
+                    Type        = new CodeTypeReference("Table", tableType), 
+                };
+                property.GetStatements.Add(
+                    new CodeMethodReturnStatement(
+                        new CodeMethodInvokeExpression(
+                            new CodeMethodReferenceExpression(thisReference, "GetTable", tableType))));
+                _class.Members.Add(property);
+            }
+
+            foreach (var function in database.Functions)
+            {
+                GenerateContextFunction(_class, function);
+            }
+
+            return _class;
+        }
+
+        static string GetContextBaseType(string type)
+        {
+            string baseType = "DataContext";
+
+            if (!string.IsNullOrEmpty(type))
+            {
+                var t = TypeLoader.Load(type);
+                if (t != null)
+                    baseType = t.Name;
+            }
+
+            return baseType;
+        }
+
+        void GenerateContextConstructors(CodeTypeDeclaration contextType, Database database)
+        {
+            // .ctor(string connectionString);
+            var constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = { new CodeParameterDeclarationExpression(typeof(string), "connectionString") },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connectionString"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+
+#if MONO_STRICT
+            // .ctor(IDbConnection connection);
+            constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+#endif
+
+            // .ctor(string connection, MappingSource mappingSource);
+            constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = { 
+                    new CodeParameterDeclarationExpression(typeof(string), "connection"),
+                    new CodeParameterDeclarationExpression("MappingSource", "mappingSource"),
+                },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("mappingSource"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+
+            // .ctor(IDbConnection connection, MappingSource mappingSource);
+            constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = { 
+                    new CodeParameterDeclarationExpression("IDbConnection", "connection"),
+                    new CodeParameterDeclarationExpression("MappingSource", "mappingSource"),
+                },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("mappingSource"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+        }
+
+        CodeTypeDeclaration GenerateMonoStrictContextConstructors(Database database)
+        {
+            var contextType = new CodeTypeDeclaration()
+            {
+                IsClass         = true,
+                IsPartial       = true,
+                Name            = database.Class,
+                TypeAttributes  = TypeAttributes.Public
+            };
+            AddConditionalIfElseBlocks(contextType, "MONO_STRICT");
+
+            // .ctor(IDbConnection connection);
+            var constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+
+            return contextType;
+        }
+
+        void AddConditionalIfElseBlocks(CodeTypeMember member, string condition)
+        {
+            string startIf = null, elseIf = null;
+            if (Provider is CSharpCodeProvider)
+            {
+                startIf = string.Format("Start {0}{1}#if {0}{1}", condition, Environment.NewLine);
+                elseIf  = string.Format("End {0}{1}\t#endregion{1}#else     // {0}", condition, Environment.NewLine);
+            }
+            if (Provider is VBCodeProvider)
+            {
+                startIf = string.Format("Start {0}\"{1}#If {0} Then{1}    '", condition, Environment.NewLine);
+                elseIf  = string.Format("End {0}\"{1}\t#End Region{1}#Else     ' {0}", condition, Environment.NewLine);
+            }
+            if (startIf != null && elseIf != null)
+            {
+                member.StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, startIf));
+                member.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, elseIf));
+            }
+        }
+
+        void AddConditionalEndifBlocks(CodeTypeMember member, string condition)
+        {
+            string endIf = null;
+            if (Provider is CSharpCodeProvider)
+            {
+                endIf   = string.Format("End Not {0}{1}\t#endregion{1}#endif     // {0}", condition, Environment.NewLine);
+            }
+            if (Provider is VBCodeProvider)
+            {
+                endIf   = string.Format("End Not {0}\"{1}\t#End Region{1}#End If     ' {0}", condition, Environment.NewLine);
+            }
+            if (endIf != null)
+            {
+                member.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, endIf));
+                member.EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
+            }
+        }
+
+        CodeTypeDeclaration GenerateNotMonoStrictContextConstructors(Database database)
+        {
+            var contextType = new CodeTypeDeclaration() {
+                IsClass         = true,
+                IsPartial       = true,
+                Name            = database.Class,
+                TypeAttributes  = TypeAttributes.Public
+            };
+            AddConditionalEndifBlocks(contextType, "MONO_STRICT");
+
+            // .ctor(IDbConnection connection);
+            var constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.BaseConstructorArgs.Add(new CodeObjectCreateExpression(Context.SchemaLoader.Vendor.GetType()));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+
+            // .ctor(IDbConnection connection, IVendor mappingSource);
+            constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = {
+                    new CodeParameterDeclarationExpression("IDbConnection", "connection"),
+                    new CodeParameterDeclarationExpression("IVendor", "sqlDialect"),
+                },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("sqlDialect"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+
+            // .ctor(IDbConnection connection, MappingSource mappingSource, IVendor mappingSource);
+            constructor = new CodeConstructor() {
+                Attributes = MemberAttributes.Public,
+                Parameters = {
+                    new CodeParameterDeclarationExpression("IDbConnection", "connection"),
+                    new CodeParameterDeclarationExpression("MappingSource", "mappingSource"),
+                    new CodeParameterDeclarationExpression("IVendor", "sqlDialect"),
+                },
+            };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("mappingSource"));
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("sqlDialect"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            contextType.Members.Add(constructor);
+
+            return contextType;
+        }
+        
+        void GenerateContextFunction(CodeTypeDeclaration contextType, Function function)
+        {
+            if (function == null || string.IsNullOrEmpty(function.Name))
+            {
+                Warning("L33 Invalid storedProcdure object: missing name.");
+                return;
+            }
+
+            var methodRetType = GetFunctionReturnType(function);
+            var method = new CodeMemberMethod() {
+                Attributes  = ToMemberAttributes(function),
+                Name        = function.Method ?? function.Name,
+                ReturnType  = methodRetType,
+                CustomAttributes = {
+                    new CodeAttributeDeclaration("Function",
+                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(function.Name)),
+                        new CodeAttributeArgument("IsComposable", new CodePrimitiveExpression(function.IsComposable))),
+                },
+            };
+            if (method.Parameters != null)
+                method.Parameters.AddRange(function.Parameters.Select(x => GetFunctionParameterType(x)).ToArray());
+            if (function.Return != null && !string.IsNullOrEmpty(function.Return.DbType))
+                method.ReturnTypeCustomAttributes.Add(
+                        new CodeAttributeDeclaration("Parameter",
+                            new CodeAttributeArgument("DbType", new CodePrimitiveExpression(function.Return.DbType))));
+
+            contextType.Members.Add(method);
+
+            for (int i = 0; i < function.Parameters.Count; ++i)
+            {
+                var p = function.Parameters[i];
+                if (!p.DirectionOut)
+                    continue;
+                method.Statements.Add(
+                        new CodeAssignStatement(
+                            new CodeVariableReferenceExpression(p.Name),
+                            new CodeDefaultValueExpression(new CodeTypeReference(p.Type))));
+            }
+
+            var executeMethodCallArgs = new List<CodeExpression>() {
+                thisReference,
+                new CodeCastExpression(
+                    new CodeTypeReference("System.Reflection.MethodInfo"),
+                    new CodeMethodInvokeExpression(
+                        new CodeMethodReferenceExpression(
+                            new CodeTypeReferenceExpression("System.Reflection.MethodBase"), "GetCurrentMethod"))),
+            };
+            if (method.Parameters != null)
+                executeMethodCallArgs.AddRange(
+                        function.Parameters.Select(p => (CodeExpression) new CodeVariableReferenceExpression(p.Name)));
+            method.Statements.Add(
+                    new CodeVariableDeclarationStatement(
+                        new CodeTypeReference("IExecuteResult"),
+                        "result",
+                        new CodeMethodInvokeExpression(
+                            new CodeMethodReferenceExpression(thisReference, "ExecuteMethodCall"),
+                            executeMethodCallArgs.ToArray())));
+            for (int i = 0; i < function.Parameters.Count; ++i)
+            {
+                var p = function.Parameters[i];
+                if (!p.DirectionOut)
+                    continue;
+                method.Statements.Add(
+                        new CodeAssignStatement(
+                            new CodeVariableReferenceExpression(p.Name),
+                            new CodeCastExpression(
+                                new CodeTypeReference(p.Type),
+                                new CodeMethodInvokeExpression(
+                                    new CodeMethodReferenceExpression(
+                                        new CodeVariableReferenceExpression("result"),
+                                        "GetParameterValue"),
+                                    new CodePrimitiveExpression(i)))));
+            }
+
+            if (methodRetType != null)
+            {
+                method.Statements.Add(
+                        new CodeMethodReturnStatement(
+                            new CodeCastExpression(
+                                method.ReturnType,
+                                new CodePropertyReferenceExpression(
+                                    new CodeVariableReferenceExpression("result"),
+                                    "ReturnValue"))));
+            }
+        }
+
+        CodeTypeReference GetFunctionReturnType(Function function)
+        {
+            CodeTypeReference type = null;
+            if (function.Return != null)
+            {
+                type = GetFunctionType(function.Return.Type);
+            }
+
+            bool isDataShapeUnknown = function.ElementType == null
+                                      && function.BodyContainsSelectStatement
+                                      && !function.IsComposable;
+            if (isDataShapeUnknown)
+            {
+                //if we don't know the shape of results, and the proc body contains some selects,
+                //we have no choice but to return an untyped DataSet.
+                //
+                //TODO: either parse proc body like microsoft, 
+                //or create a little GUI tool which would call the proc with test values, to determine result shape.
+                type = new CodeTypeReference(typeof(DataSet));
+            }
+            return type;
+        }
+
+        static CodeTypeReference GetFunctionType(string type)
+        {
+            var t = System.Type.GetType(type);
+            if (t == null)
+                return new CodeTypeReference(type);
+            if (t.IsValueType)
+                return new CodeTypeReference(typeof(Nullable<>)) {
+                    TypeArguments = {
+                        new CodeTypeReference(t),
+                    },
+                };
+            return new CodeTypeReference(t);
+        }
+
+        CodeParameterDeclarationExpression GetFunctionParameterType(Parameter parameter)
+        {
+            var p = new CodeParameterDeclarationExpression(GetFunctionType(parameter.Type), parameter.Name) {
+                CustomAttributes = {
+                    new CodeAttributeDeclaration("Parameter",
+                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(parameter.Name)),
+                        new CodeAttributeArgument("DbType", new CodePrimitiveExpression(parameter.DbType))),
+                },
+            };
+            switch (parameter.Direction)
+            {
+                case DbLinq.Schema.Dbml.ParameterDirection.In:
+                    p.Direction = FieldDirection.In;
+                    break;
+                case DbLinq.Schema.Dbml.ParameterDirection.Out:
+                    p.Direction = FieldDirection.Out;
+                    break;
+                case DbLinq.Schema.Dbml.ParameterDirection.InOut:
+                    p.Direction = FieldDirection.In | FieldDirection.Out;
+                    break;
+                default:
+                    throw new ArgumentOutOfRangeException();
+            }
+            return p;
+        }
+
+        protected CodeTypeDeclaration GenerateTableClass(Table table, Database database)
+        {
+            var _class = new CodeTypeDeclaration() {
+                IsClass         = true, 
+                IsPartial       = true, 
+                Name            = table.Type.Name, 
+                TypeAttributes  = TypeAttributes.Public,
+                CustomAttributes = {
+                    new CodeAttributeDeclaration("Table", 
+                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(table.Name))),
+                },
+            };
+
+            WriteCustomTypes(_class, table);
+
+            var havePrimaryKeys = table.Type.Columns.Any(c => c.IsPrimaryKey);
+            if (havePrimaryKeys)
+            {
+                GenerateINotifyPropertyChanging(_class);
+                GenerateINotifyPropertyChanged(_class);
+            }
+
+            // Implement Constructor
+            var constructor = new CodeConstructor() { Attributes = MemberAttributes.Public };
+            // children are EntitySet
+            foreach (var child in GetClassChildren(table))
+            {
+                // if the association has a storage, we use it. Otherwise, we use the property name
+                var entitySetMember = GetStorageFieldName(child);
+                constructor.Statements.Add(
+                    new CodeAssignStatement(
+                        new CodeVariableReferenceExpression(entitySetMember),
+                        new CodeObjectCreateExpression(
+                            new CodeTypeReference("EntitySet", new CodeTypeReference(child.Type)),
+                            new CodeDelegateCreateExpression(
+                                new CodeTypeReference("Action", new CodeTypeReference(child.Type)),
+                                thisReference, child.Member + "_Attach"),
+                            new CodeDelegateCreateExpression(
+                                new CodeTypeReference("Action", new CodeTypeReference(child.Type)),
+                                thisReference, child.Member + "_Detach"))));
+            }
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            _class.Members.Add(constructor);
+
+            if (Context.Parameters.GenerateEqualsHash)
+            {
+                GenerateEntityGetHashCodeAndEquals(_class, table);
+            }
+
+            GenerateExtensibilityDeclarations(_class, table);
+
+            // todo: add these when the actually get called
+            //partial void OnLoaded();
+            //partial void OnValidate(System.Data.Linq.ChangeAction action);
+
+            // columns
+            foreach (Column column in table.Type.Columns)
+            {
+                var relatedAssociations = from a in table.Type.Associations
+                                          where a.IsForeignKey && a.TheseKeys.Contains(column.Name)
+                                          select a;
+
+                var type = ToCodeTypeReference(column);
+                var columnMember = column.Member ?? column.Name;
+
+                var field = new CodeMemberField(type, GetStorageFieldName(column));
+                _class.Members.Add(field);
+                var fieldReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), field.Name);
+
+                var onChanging  = GetChangingMethodName(columnMember);
+                var onChanged   = GetChangedMethodName(columnMember);
+
+                var property = new CodeMemberProperty();
+                property.Type = type;
+                property.Name = columnMember;
+                property.Attributes = MemberAttributes.Public | MemberAttributes.Final;
+
+                var defAttrValues = new ColumnAttribute();
+                var args = new List<CodeAttributeArgument>() {
+                    new CodeAttributeArgument("Storage", new CodePrimitiveExpression(GetStorageFieldName(column))),
+                    new CodeAttributeArgument("Name", new CodePrimitiveExpression(column.Name)),
+                    new CodeAttributeArgument("DbType", new CodePrimitiveExpression(column.DbType)),
+                };
+                if (defAttrValues.IsPrimaryKey != column.IsPrimaryKey)
+                    args.Add(new CodeAttributeArgument("IsPrimaryKey", new CodePrimitiveExpression(column.IsPrimaryKey)));
+                if (defAttrValues.IsDbGenerated != column.IsDbGenerated)
+                    args.Add(new CodeAttributeArgument("IsDbGenerated", new CodePrimitiveExpression(column.IsDbGenerated)));
+                if (column.AutoSync != DbLinq.Schema.Dbml.AutoSync.Default)
+                    args.Add(new CodeAttributeArgument("AutoSync", 
+                        new CodeFieldReferenceExpression(new CodeTypeReferenceExpression("AutoSync"), column.AutoSync.ToString())));
+                if (defAttrValues.CanBeNull != column.CanBeNull)
+                    args.Add(new CodeAttributeArgument("CanBeNull", new CodePrimitiveExpression(column.CanBeNull)));
+                if (column.Expression != null)
+                    args.Add(new CodeAttributeArgument("Expression", new CodePrimitiveExpression(column.Expression)));
+                property.CustomAttributes.Add(
+                    new CodeAttributeDeclaration("Column", args.ToArray()));
+                property.CustomAttributes.Add(new CodeAttributeDeclaration("DebuggerNonUserCode"));
+
+                property.GetStatements.Add(new CodeMethodReturnStatement(fieldReference));
+
+                var whenUpdating = new List<CodeStatement>(
+                    from assoc in relatedAssociations
+                    select (CodeStatement) new CodeConditionStatement(
+                        new CodePropertyReferenceExpression(
+                            new CodeVariableReferenceExpression(GetStorageFieldName(assoc)),
+                            "HasLoadedOrAssignedValue"),
+                        new CodeThrowExceptionStatement(
+                            new CodeObjectCreateExpression(typeof(System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException)))));
+                whenUpdating.Add(
+                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChanging, new CodePropertySetValueReferenceExpression())));
+                if (havePrimaryKeys)
+                    whenUpdating.Add(
+                            new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "SendPropertyChanging")));
+                whenUpdating.Add(
+                        new CodeAssignStatement(fieldReference, new CodePropertySetValueReferenceExpression()));
+                if (havePrimaryKeys)
+                    whenUpdating.Add(
+                            new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "SendPropertyChanged", new CodePrimitiveExpression(property.Name))));
+                whenUpdating.Add(
+                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChanged)));
+
+                var fieldType = TypeLoader.Load(column.Type);
+                // This is needed for VB.NET generation; 
+                // int/string/etc. can use '<>' for comparison, but NOT arrays and other reference types.
+                // arrays/etc. require the 'Is' operator, which is CodeBinaryOperatorType.IdentityEquality.
+                // The VB IsNot operator is not exposed from CodeDom.
+                // Thus, we need to special-case: if fieldType is a ref or nullable type,
+                //  generate '(field Is value) = false'; otherwise, 
+                //  generate '(field <> value)'
+                CodeBinaryOperatorExpression condition = fieldType.IsClass || fieldType.IsNullable()
+                    ? ValuesAreNotEqual_Ref(new CodeVariableReferenceExpression(field.Name), new CodePropertySetValueReferenceExpression())
+                    : ValuesAreNotEqual(new CodeVariableReferenceExpression(field.Name), new CodePropertySetValueReferenceExpression());
+                property.SetStatements.Add(new CodeConditionStatement(condition, whenUpdating.ToArray()));
+                _class.Members.Add(property);
+            }
+
+            GenerateEntityChildren(_class, table, database);
+            GenerateEntityChildrenAttachment(_class, table, database);
+            GenerateEntityParents(_class, table, database);
+
+            return _class;
+        }
+
+        void WriteCustomTypes(CodeTypeDeclaration entity, Table table)
+        {
+            // detect required custom types
+            foreach (var column in table.Type.Columns)
+            {
+                var extendedType = column.ExtendedType;
+                var enumType = extendedType as EnumType;
+                if (enumType != null)
+                {
+                    Context.ExtendedTypes[column] = new GenerationContext.ExtendedTypeAndName {
+                        Type = column.ExtendedType,
+                        Table = table
+                    };
+                }
+            }
+
+            var customTypesNames = new List<string>();
+
+            // create names and avoid conflits
+            foreach (var extendedTypePair in Context.ExtendedTypes)
+            {
+                if (extendedTypePair.Value.Table != table)
+                    continue;
+
+                if (string.IsNullOrEmpty(extendedTypePair.Value.Type.Name))
+                {
+                    string name = extendedTypePair.Key.Member + "Type";
+                    for (; ; )
+                    {
+                        if ((from t in Context.ExtendedTypes.Values where t.Type.Name == name select t).FirstOrDefault() == null)
+                        {
+                            extendedTypePair.Value.Type.Name = name;
+                            break;
+                        }
+                        // at 3rd loop, it will look ugly, however we will never go there
+                        name = extendedTypePair.Value.Table.Type.Name + name;
+                    }
+                }
+                customTypesNames.Add(extendedTypePair.Value.Type.Name);
+            }
+
+            // write custom types
+            if (customTypesNames.Count > 0)
+            {
+                var customTypes = new List<CodeTypeDeclaration>(customTypesNames.Count);
+
+                foreach (var extendedTypePair in Context.ExtendedTypes)
+                {
+                    if (extendedTypePair.Value.Table != table)
+                        continue;
+
+                    var extendedType = extendedTypePair.Value.Type;
+                    var enumValue = extendedType as EnumType;
+
+                    if (enumValue != null)
+                    {
+                        var enumType = new CodeTypeDeclaration(enumValue.Name) {
+                            TypeAttributes = TypeAttributes.Public,
+                            IsEnum = true,
+                        };
+                        customTypes.Add(enumType);
+                        var orderedValues = from nv in enumValue orderby nv.Value select nv;
+                        int currentValue = 1;
+                        foreach (var nameValue in orderedValues)
+                        {
+                            var field = new CodeMemberField() {
+                                Name = nameValue.Key,
+                            };
+                            enumType.Members.Add(field);
+                            if (nameValue.Value != currentValue)
+                            {
+                                currentValue = nameValue.Value;
+                                field.InitExpression = new CodePrimitiveExpression(nameValue.Value);
+                            }
+                            currentValue++;
+                        }
+                    }
+                }
+
+                if (customTypes.Count == 0)
+                    return;
+                customTypes.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start,
+                        string.Format("Custom type definitions for {0}", string.Join(", ", customTypesNames.ToArray()))));
+                customTypes.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
+                entity.Members.AddRange(customTypes.ToArray());
+            }
+        }
+
+        void GenerateExtensibilityDeclarations(CodeTypeDeclaration entity, Table table)
+        {
+            var partialMethods = new[] { CreatePartialMethod("OnCreated") }
+                .Concat(table.Type.Columns.Select(c => new[] { CreateChangedMethodDecl(c), CreateChangingMethodDecl(c) })
+                    .SelectMany(md => md)).ToArray();
+            partialMethods.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Extensibility Method Declarations"));
+            partialMethods.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
+            entity.Members.AddRange(partialMethods);
+        }
+
+        static string GetChangedMethodName(string columnName)
+        {
+            return string.Format("On{0}Changed", columnName);
+        }
+
+        CodeTypeMember CreateChangedMethodDecl(Column column)
+        {
+            return CreatePartialMethod(GetChangedMethodName(column.Member));
+        }
+
+        static string GetChangingMethodName(string columnName)
+        {
+            return string.Format("On{0}Changing", columnName);
+        }
+
+        CodeTypeMember CreateChangingMethodDecl(Column column)
+        {
+            return CreatePartialMethod(GetChangingMethodName(column.Member),
+                    new CodeParameterDeclarationExpression(ToCodeTypeReference(column), "value"));
+        }
+
+        static CodeTypeReference ToCodeTypeReference(Column column)
+        {
+            var t = System.Type.GetType(column.Type);
+            if (t == null)
+                return new CodeTypeReference(column.Type);
+            return t.IsValueType && column.CanBeNull
+                ? new CodeTypeReference("System.Nullable", new CodeTypeReference(column.Type))
+                : new CodeTypeReference(column.Type);
+        }
+
+        CodeBinaryOperatorExpression ValuesAreNotEqual(CodeExpression a, CodeExpression b)
+        {
+            return new CodeBinaryOperatorExpression(a, CodeBinaryOperatorType.IdentityInequality, b);
+        }
+
+        CodeBinaryOperatorExpression ValuesAreNotEqual_Ref(CodeExpression a, CodeExpression b)
+        {
+            return new CodeBinaryOperatorExpression(
+                        new CodeBinaryOperatorExpression(
+                            a,
+                            CodeBinaryOperatorType.IdentityEquality,
+                            b),
+                        CodeBinaryOperatorType.ValueEquality,
+                        new CodePrimitiveExpression(false));
+        }
+
+        CodeBinaryOperatorExpression ValueIsNull(CodeExpression value)
+        {
+            return new CodeBinaryOperatorExpression(
+                value,
+                CodeBinaryOperatorType.IdentityEquality,
+                new CodePrimitiveExpression(null));
+        }
+
+        CodeBinaryOperatorExpression ValueIsNotNull(CodeExpression value)
+        {
+            return new CodeBinaryOperatorExpression(
+                value,
+                CodeBinaryOperatorType.IdentityInequality, 
+                new CodePrimitiveExpression(null));
+        }
+
+        static string GetStorageFieldName(Column column)
+        {
+            return GetStorageFieldName(column.Storage ?? column.Member);
+        }
+
+        static string GetStorageFieldName(string storage)
+        {
+            if (storage.StartsWith("_"))
+                return storage;
+            return "_" + storage;
+        }
+
+        private void GenerateINotifyPropertyChanging(CodeTypeDeclaration entity)
+        {
+            entity.BaseTypes.Add(typeof(INotifyPropertyChanging));
+            var propertyChangingEvent = new CodeMemberEvent() {
+                Attributes  = MemberAttributes.Public,
+                Name        = "PropertyChanging",
+                Type        = new CodeTypeReference(typeof(PropertyChangingEventHandler)),
+                ImplementationTypes = {
+                    new CodeTypeReference(typeof(INotifyPropertyChanging))
+                },
+            };
+            var eventArgs = new CodeMemberField(new CodeTypeReference(typeof(PropertyChangingEventArgs)), "emptyChangingEventArgs") {
+                Attributes      = MemberAttributes.Static | MemberAttributes.Private,
+                InitExpression  = new CodeObjectCreateExpression(new CodeTypeReference(typeof(PropertyChangingEventArgs)),
+                    new CodePrimitiveExpression("")),
+            };
+            var method = new CodeMemberMethod() {
+                Attributes  = MemberAttributes.Family,
+                Name        = "SendPropertyChanging",
+            };
+            method.Statements.Add(new CodeVariableDeclarationStatement(typeof(PropertyChangingEventHandler), "h") {
+                InitExpression  = new CodeEventReferenceExpression(thisReference, "PropertyChanging"),
+            });
+            method.Statements.Add(new CodeConditionStatement(
+                    ValueIsNotNull(new CodeVariableReferenceExpression("h")),
+                    new CodeExpressionStatement(
+                        new CodeDelegateInvokeExpression(new CodeVariableReferenceExpression("h"), thisReference, new CodeFieldReferenceExpression(null, "emptyChangingEventArgs")))));
+
+            entity.Members.Add(propertyChangingEvent);
+            entity.Members.Add(eventArgs);
+            entity.Members.Add(method);
+        }
+
+        private void GenerateINotifyPropertyChanged(CodeTypeDeclaration entity)
+        {
+            entity.BaseTypes.Add(typeof(INotifyPropertyChanged));
+
+            var propertyChangedEvent = new CodeMemberEvent() {
+                Attributes = MemberAttributes.Public,
+                Name = "PropertyChanged",
+                Type = new CodeTypeReference(typeof(PropertyChangedEventHandler)),
+                ImplementationTypes = {
+                    new CodeTypeReference(typeof(INotifyPropertyChanged))
+                },
+            };
+
+            var method = new CodeMemberMethod() { 
+                Attributes = MemberAttributes.Family, 
+                Name = "SendPropertyChanged", 
+                Parameters = { new CodeParameterDeclarationExpression(typeof(System.String), "propertyName") } 
+            };
+            method.Statements.Add(new CodeVariableDeclarationStatement(typeof(PropertyChangedEventHandler), "h") {
+                InitExpression = new CodeEventReferenceExpression(thisReference, "PropertyChanged"),
+            });
+            method.Statements.Add(new CodeConditionStatement(
+                    ValueIsNotNull(new CodeVariableReferenceExpression("h")),
+                    new CodeExpressionStatement(
+                        new CodeDelegateInvokeExpression(new CodeVariableReferenceExpression("h"), thisReference, new CodeObjectCreateExpression(typeof(PropertyChangedEventArgs), new CodeVariableReferenceExpression("propertyName"))))));
+
+            entity.Members.Add(propertyChangedEvent);
+            entity.Members.Add(method);
+        }
+
+        void GenerateEntityGetHashCodeAndEquals(CodeTypeDeclaration entity, Table table)
+        {
+            var primaryKeys = table.Type.Columns.Where(c => c.IsPrimaryKey);
+            var pkCount = primaryKeys.Count();
+            if (pkCount == 0)
+            {
+                Warning("Table {0} has no primary key(s).  Skipping /generate-equals-hash for this table.",
+                        table.Name);
+                return;
+            }
+            entity.BaseTypes.Add(new CodeTypeReference(typeof(IEquatable<>)) {
+                TypeArguments = { new CodeTypeReference(entity.Name) },
+            });
+
+            var method = new CodeMemberMethod() {
+                Attributes  = MemberAttributes.Public | MemberAttributes.Override,
+                Name        = "GetHashCode",
+                ReturnType  = new CodeTypeReference(typeof(int)),
+            };
+            entity.Members.Add(method);
+            method.Statements.Add(new CodeVariableDeclarationStatement(typeof(int), "hc", new CodePrimitiveExpression(0)));
+            var numShifts = 32 / pkCount;
+            int pki = 0;
+            foreach (var pk in primaryKeys)
+            {
+                var shift = 1 << (pki++ * numShifts);
+                // lack of exclusive-or means we instead split the 32-bit hash code value
+                // into pkCount "chunks", each chunk being numShifts in size.
+                // Thus, if there are two primary keys, the first primary key gets the
+                // lower 16 bits, while the second primray key gets the upper 16 bits.
+                CodeStatement update = new CodeAssignStatement(
+                        new CodeVariableReferenceExpression("hc"),
+                        new CodeBinaryOperatorExpression(
+                            new CodeVariableReferenceExpression("hc"),
+                            CodeBinaryOperatorType.BitwiseOr,
+                            new CodeBinaryOperatorExpression(
+                                new CodeMethodInvokeExpression(
+                                    new CodeMethodReferenceExpression(
+                                        new CodeVariableReferenceExpression(GetStorageFieldName(pk)),
+                                        "GetHashCode")),
+                                CodeBinaryOperatorType.Multiply,
+                                new CodePrimitiveExpression(shift))));
+                var pkType = System.Type.GetType(pk.Type);
+                if (pk.CanBeNull || (pkType != null && (pkType.IsClass || pkType.IsNullable())))
+                {
+                    update = new CodeConditionStatement(
+                            ValueIsNotNull(new CodeVariableReferenceExpression(GetStorageFieldName(pk))),
+                            update);
+                }
+                method.Statements.Add(update);
+            }
+            method.Statements.Add(new CodeMethodReturnStatement(new CodeVariableReferenceExpression("hc")));
+
+            method = new CodeMemberMethod() {
+                Attributes  = MemberAttributes.Public | MemberAttributes.Override,
+                Name        = "Equals",
+                ReturnType  = new CodeTypeReference(typeof(bool)),
+                Parameters = {
+                    new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(object)), "value"),
+                },
+            };
+            entity.Members.Add(method);
+            method.Statements.Add(
+                    new CodeConditionStatement(
+                        ValueIsNull(new CodeVariableReferenceExpression("value")), 
+                        new CodeMethodReturnStatement(new CodePrimitiveExpression(false))));
+            method.Statements.Add(
+                    new CodeConditionStatement(
+                        ValuesAreNotEqual_Ref(
+                            new CodeMethodInvokeExpression(
+                                new CodeMethodReferenceExpression(
+                                    new CodeVariableReferenceExpression("value"),
+                                    "GetType")),
+                            new CodeMethodInvokeExpression(
+                                new CodeMethodReferenceExpression(thisReference, "GetType"))),
+                        new CodeMethodReturnStatement(new CodePrimitiveExpression(false))));
+            method.Statements.Add(
+                    new CodeVariableDeclarationStatement(
+                        new CodeTypeReference(entity.Name),
+                        "other",
+                        new CodeCastExpression(new CodeTypeReference(entity.Name), new CodeVariableReferenceExpression("value"))));
+            method.Statements.Add(
+                    new CodeMethodReturnStatement(
+                        new CodeMethodInvokeExpression(
+                            new CodeMethodReferenceExpression(thisReference, "Equals"),
+                            new CodeVariableReferenceExpression("other"))));
+
+            method = new CodeMemberMethod() {
+                Attributes  = MemberAttributes.Public,
+                Name        = "Equals",
+                ReturnType  = new CodeTypeReference(typeof(bool)),
+                Parameters  = {
+                    new CodeParameterDeclarationExpression(new CodeTypeReference(entity.Name), "value"),
+                },
+                ImplementationTypes = {
+                    new CodeTypeReference("IEquatable", new CodeTypeReference(entity.Name)),
+                },
+            };
+            entity.Members.Add(method);
+            method.Statements.Add(
+                    new CodeConditionStatement(
+                        ValueIsNull(new CodeVariableReferenceExpression("value")),
+                        new CodeMethodReturnStatement(new CodePrimitiveExpression(false))));
+
+            CodeExpression equals = null;
+            foreach (var pk in primaryKeys)
+            {
+                var compare = new CodeMethodInvokeExpression(
+                        new CodeMethodReferenceExpression(
+                            new CodePropertyReferenceExpression(
+                                new CodeTypeReferenceExpression(
+                                    new CodeTypeReference("System.Collections.Generic.EqualityComparer",
+                                        new CodeTypeReference(pk.Type))),
+                                "Default"),
+                            "Equals"),
+                        new CodeFieldReferenceExpression(thisReference, GetStorageFieldName(pk)),
+                        new CodeFieldReferenceExpression(new CodeVariableReferenceExpression("value"), GetStorageFieldName(pk)));
+                equals = equals == null
+                    ? (CodeExpression) compare
+                    : (CodeExpression) new CodeBinaryOperatorExpression(
+                        equals,
+                        CodeBinaryOperatorType.BooleanAnd,
+                        compare);
+            }
+            method.Statements.Add(
+                    new CodeMethodReturnStatement(equals));
+        }
+
+        void GenerateEntityChildren(CodeTypeDeclaration entity, Table table, Database schema)
+        {
+            var children = GetClassChildren(table);
+            if (children.Any())
+            {
+                var childMembers = new List<CodeTypeMember>();
+
+                foreach (var child in children)
+                {
+                    bool hasDuplicates = (from c in children where c.Member == child.Member select c).Count() > 1;
+
+                    // the following is apparently useless
+                    var targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == child.Type);
+                    if (targetTable == null)
+                    {
+                        //Logger.Write(Level.Error, "ERROR L143 target table class not found:" + child.Type);
+                        continue;
+                    }
+
+                    var childType = new CodeTypeReference("EntitySet", new CodeTypeReference(child.Type));
+                    var storage = GetStorageFieldName(child);
+                    entity.Members.Add(new CodeMemberField(childType, storage));
+
+                    var childName = hasDuplicates
+                        ? child.Member + "_" + string.Join("", child.OtherKeys.ToArray())
+                        : child.Member;
+                    var property = new CodeMemberProperty() {
+                        Name        = childName,
+                        Type        = childType,
+                        Attributes  = ToMemberAttributes(child),
+                        CustomAttributes = {
+                            new CodeAttributeDeclaration("Association",
+                                new CodeAttributeArgument("Storage", new CodePrimitiveExpression(GetStorageFieldName(child))),
+                                new CodeAttributeArgument("OtherKey", new CodePrimitiveExpression(child.OtherKey)),
+                                new CodeAttributeArgument("ThisKey", new CodePrimitiveExpression(child.ThisKey)),
+                                new CodeAttributeArgument("Name", new CodePrimitiveExpression(child.Name))),
+                            new CodeAttributeDeclaration("DebuggerNonUserCode"),
+                        },
+                    };
+                    childMembers.Add(property);
+                    property.GetStatements.Add(new CodeMethodReturnStatement(
+                            new CodeFieldReferenceExpression(thisReference, storage)));
+                    property.SetStatements.Add(new CodeAssignStatement(
+                            new CodeFieldReferenceExpression(thisReference, storage),
+                            new CodePropertySetValueReferenceExpression()));
+                }
+
+                if (childMembers.Count == 0)
+                    return;
+                childMembers.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Children"));
+                childMembers.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
+                entity.Members.AddRange(childMembers.ToArray());
+            }
+        }
+
+        IEnumerable<Association> GetClassChildren(Table table)
+        {
+            return table.Type.Associations.Where(a => !a.IsForeignKey);
+        }
+
+        static MemberAttributes ToMemberAttributes(Association association)
+        {
+            MemberAttributes attrs = 0;
+            if (!association.AccessModifierSpecified)
+                attrs |= MemberAttributes.Public;
+            else
+                switch (association.AccessModifier)
+                {
+                    case AccessModifier.Internal:           attrs = MemberAttributes.Assembly; break;
+                    case AccessModifier.Private:            attrs = MemberAttributes.Private; break;
+                    case AccessModifier.Protected:          attrs = MemberAttributes.Family; break;
+                    case AccessModifier.ProtectedInternal:  attrs = MemberAttributes.FamilyOrAssembly; break;
+                    case AccessModifier.Public:             attrs = MemberAttributes.Public; break;
+                    default:
+                        throw new ArgumentOutOfRangeException("association", "Modifier value '" + association.AccessModifierSpecified + "' is an unsupported value.");
+                }
+            if (!association.ModifierSpecified)
+                attrs |= MemberAttributes.Final;
+            else
+                switch (association.Modifier)
+                {
+                    case MemberModifier.New:        attrs |= MemberAttributes.New | MemberAttributes.Final; break;
+                    case MemberModifier.NewVirtual: attrs |= MemberAttributes.New; break;
+                    case MemberModifier.Override:   attrs |= MemberAttributes.Override; break;
+                    case MemberModifier.Virtual:    break;
+                }
+            return attrs;
+        }
+
+        static MemberAttributes ToMemberAttributes(Function function)
+        {
+            MemberAttributes attrs = 0;
+            if (!function.AccessModifierSpecified)
+                attrs |= MemberAttributes.Public;
+            else
+                switch (function.AccessModifier)
+                {
+                    case AccessModifier.Internal:           attrs = MemberAttributes.Assembly; break;
+                    case AccessModifier.Private:            attrs = MemberAttributes.Private; break;
+                    case AccessModifier.Protected:          attrs = MemberAttributes.Family; break;
+                    case AccessModifier.ProtectedInternal:  attrs = MemberAttributes.FamilyOrAssembly; break;
+                    case AccessModifier.Public:             attrs = MemberAttributes.Public; break;
+                    default:
+                        throw new ArgumentOutOfRangeException("function", "Modifier value '" + function.AccessModifierSpecified + "' is an unsupported value.");
+                }
+            if (!function.ModifierSpecified)
+                attrs |= MemberAttributes.Final;
+            else
+                switch (function.Modifier)
+                {
+                    case MemberModifier.New:        attrs |= MemberAttributes.New | MemberAttributes.Final; break;
+                    case MemberModifier.NewVirtual: attrs |= MemberAttributes.New; break;
+                    case MemberModifier.Override:   attrs |= MemberAttributes.Override; break;
+                    case MemberModifier.Virtual:    break;
+                }
+            return attrs;
+        }
+
+        static string GetStorageFieldName(Association association)
+        {
+            return association.Storage != null 
+                ? GetStorageFieldName(association.Storage) 
+                : "_" + CreateIdentifier(association.Member ?? association.Name);
+        }
+
+        static string CreateIdentifier(string value)
+        {
+            return Regex.Replace(value, @"\W", "_");
+        }
+
+        void GenerateEntityChildrenAttachment(CodeTypeDeclaration entity, Table table, Database schema)
+        {
+            var children = GetClassChildren(table).ToList();
+            if (!children.Any())
+                return;
+
+            var havePrimaryKeys = table.Type.Columns.Any(c => c.IsPrimaryKey);
+
+            var handlers = new List<CodeTypeMember>();
+
+            foreach (var child in children)
+            {
+                // the reverse child is the association seen from the child
+                // we're going to use it...
+                var reverseChild = schema.GetReverseAssociation(child);
+                // ... to get the parent name
+                var memberName = reverseChild.Member;
+
+                var sendPropertyChanging = new CodeExpressionStatement(
+                        new CodeMethodInvokeExpression(
+                            new CodeMethodReferenceExpression(thisReference, "SendPropertyChanging")));
+
+                var attach = new CodeMemberMethod() {
+                    Name = child.Member + "_Attach",
+                    Parameters = {
+                        new CodeParameterDeclarationExpression(child.Type, "entity"),
+                    },
+                };
+                handlers.Add(attach);
+                if (havePrimaryKeys)
+                    attach.Statements.Add(sendPropertyChanging);
+                attach.Statements.Add(
+                        new CodeAssignStatement(
+                            new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("entity"), memberName),
+                            thisReference));
+
+                var detach = new CodeMemberMethod() {
+                    Name = child.Member + "_Detach",
+                    Parameters = {
+                        new CodeParameterDeclarationExpression(child.Type, "entity"),
+                    },
+                };
+                handlers.Add(detach);
+                if (havePrimaryKeys)
+                    detach.Statements.Add(sendPropertyChanging);
+                detach.Statements.Add(
+                        new CodeAssignStatement(
+                            new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("entity"), memberName),
+                            new CodePrimitiveExpression(null)));
+            }
+
+            if (handlers.Count == 0)
+                return;
+
+            handlers.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Attachment handlers"));
+            handlers.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
+            entity.Members.AddRange(handlers.ToArray());
+        }
+
+        void GenerateEntityParents(CodeTypeDeclaration entity, Table table, Database schema)
+        {
+            var parents = table.Type.Associations.Where(a => a.IsForeignKey);
+            if (!parents.Any())
+                return;
+
+            var parentMembers = new List<CodeTypeMember>();
+
+            foreach (var parent in parents)
+            {
+                bool hasDuplicates = (from p in parents where p.Member == parent.Member select p).Count() > 1;
+                // WriteClassParent(writer, parent, hasDuplicates, schema, context);
+                // the following is apparently useless
+                DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == parent.Type);
+                if (targetTable == null)
+                {
+                    //Logger.Write(Level.Error, "ERROR L191 target table type not found: " + parent.Type + "  (processing " + parent.Name + ")");
+                    continue;
+                }
+
+                string member = parent.Member;
+                string storageField = GetStorageFieldName(parent);
+                // TODO: remove this
+                if (member == parent.ThisKey)
+                {
+                    member = parent.ThisKey + targetTable.Type.Name; //repeat name to prevent collision (same as Linq)
+                    storageField = "_x_" + parent.Member;
+                }
+
+                var parentType = new CodeTypeReference(targetTable.Type.Name);
+                entity.Members.Add(new CodeMemberField(new CodeTypeReference("EntityRef", parentType), storageField) {
+                    InitExpression = new CodeObjectCreateExpression(new CodeTypeReference("EntityRef", parentType)),
+                });
+
+                var parentName = hasDuplicates
+                    ? member + "_" + string.Join("", parent.TheseKeys.ToArray())
+                    : member;
+                var property = new CodeMemberProperty() {
+                    Name        = parentName,
+                    Type        = parentType,
+                    Attributes  = ToMemberAttributes(parent),
+                    CustomAttributes = {
+                        new CodeAttributeDeclaration("Association",
+                            new CodeAttributeArgument("Storage", new CodePrimitiveExpression(storageField)),
+                            new CodeAttributeArgument("OtherKey", new CodePrimitiveExpression(parent.OtherKey)),
+                            new CodeAttributeArgument("ThisKey", new CodePrimitiveExpression(parent.ThisKey)),
+                            new CodeAttributeArgument("Name", new CodePrimitiveExpression(parent.Name)),
+                            new CodeAttributeArgument("IsForeignKey", new CodePrimitiveExpression(parent.IsForeignKey))),
+                        new CodeAttributeDeclaration("DebuggerNonUserCode"),
+                    },
+                };
+                parentMembers.Add(property);
+                property.GetStatements.Add(new CodeMethodReturnStatement(
+                        new CodePropertyReferenceExpression(
+                            new CodeFieldReferenceExpression(thisReference, storageField),
+                            "Entity")));
+
+                // algorithm is:
+                // 1.1. must be different than previous value
+                // 1.2. or HasLoadedOrAssignedValue is false (but why?)
+                // 2. implementations before change
+                // 3. if previous value not null
+                // 3.1. place parent in temp variable
+                // 3.2. set [Storage].Entity to null
+                // 3.3. remove it from parent list
+                // 4. assign value to [Storage].Entity
+                // 5. if value is not null
+                // 5.1. add it to parent list
+                // 5.2. set FK members with entity keys
+                // 6. else
+                // 6.1. set FK members to defaults (null or 0)
+                // 7. implementationas after change
+                var otherAssociation = schema.GetReverseAssociation(parent);
+                var parentEntity = new CodePropertyReferenceExpression(
+                        new CodeFieldReferenceExpression(thisReference, storageField),
+                        "Entity");
+                var parentTable = schema.Tables.Single(t => t.Type.Associations.Contains(parent));
+                var childKeys = parent.TheseKeys.ToArray();
+                var childColumns = (from ck in childKeys select table.Type.Columns.Single(c => c.Member == ck))
+                                    .ToArray();
+                var parentKeys = parent.OtherKeys.ToArray();
+                property.SetStatements.Add(new CodeConditionStatement(
+                        // 1.1
+                        ValuesAreNotEqual_Ref(parentEntity, new CodePropertySetValueReferenceExpression()),
+                        // 2. TODO: code before the change
+                        // 3. 
+                        new CodeConditionStatement(
+                            ValueIsNotNull(parentEntity),
+                            // 3.1
+                            new CodeVariableDeclarationStatement(parentType, "previous" + parent.Type, parentEntity),
+                            // 3.2
+                            new CodeAssignStatement(parentEntity, new CodePrimitiveExpression(null)),
+                            // 3.3
+                            new CodeExpressionStatement(
+                                 new CodeMethodInvokeExpression(
+                                    new CodeMethodReferenceExpression(
+                                        new CodePropertyReferenceExpression(
+                                            new CodeVariableReferenceExpression("previous" + parent.Type),
+                                            otherAssociation.Member),
+                                        "Remove"),
+                                    thisReference))),
+                        // 4.
+                        new CodeAssignStatement(parentEntity, new CodePropertySetValueReferenceExpression()),
+                        // 5. if value is null or not...
+                        new CodeConditionStatement(
+                            ValueIsNotNull(new CodePropertySetValueReferenceExpression()),
+                            // 5.1
+                            new CodeStatement[]{
+                                new CodeExpressionStatement(
+                                    new CodeMethodInvokeExpression(
+                                        new CodeMethodReferenceExpression(
+                                            new CodePropertyReferenceExpression(
+                                                new CodePropertySetValueReferenceExpression(),
+                                                otherAssociation.Member),
+                                            "Add"),
+                                        thisReference))
+                            // 5.2
+                            }.Concat(Enumerable.Range(0, parentKeys.Length).Select(i =>
+                                (CodeStatement) new CodeAssignStatement(
+                                    new CodeVariableReferenceExpression(GetStorageFieldName(childColumns[i])),
+                                    new CodePropertyReferenceExpression(
+                                        new CodePropertySetValueReferenceExpression(),
+                                        parentKeys[i]))
+                            )).ToArray(),
+                            // 6.
+                            Enumerable.Range(0, parentKeys.Length).Select(i => {
+                                var column = parentTable.Type.Columns.Single(c => c.Member == childKeys[i]);
+                                return (CodeStatement) new CodeAssignStatement(
+                                    new CodeVariableReferenceExpression(GetStorageFieldName(childColumns[i])),
+                                    column.CanBeNull
+                                        ? (CodeExpression) new CodePrimitiveExpression(null)
+                                        : (CodeExpression) new CodeDefaultValueExpression(new CodeTypeReference(column.Type)));
+                            }).ToArray())
+                        // 7: TODO
+                ));
+            }
+
+            if (parentMembers.Count == 0)
+                return;
+            parentMembers.First().StartDirectives.Add(new CodeRegionDirective(CodeRegionMode.Start, "Parents"));
+            parentMembers.Last().EndDirectives.Add(new CodeRegionDirective(CodeRegionMode.End, null));
+            entity.Members.AddRange(parentMembers.ToArray());
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/CodeWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/CodeWriter.cs
@@ -1,365 +1,365 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using DbLinq.Util;
-using DbMetal.Generator;
-
-namespace DbMetal.Generator
-{
-    /// <summary>
-    /// Base class for writing code.
-    /// Divided in 3 Parts:
-    /// - Code line writing (with indentation)
-    /// - Code formatting (returning a literal type)
-    /// - Code writing (comment line, field, property, event...)
-    /// </summary>
-    public abstract class CodeWriter : TextWriter
-    {
-        // required by TextWriter
-        public override Encoding Encoding
-        {
-            get
-            {
-                return TextWriter.Encoding;
-            }
-        }
-
-        public string IndentationPattern { get; set; }
-
-        private readonly StringBuilder buffer = new StringBuilder(10 << 10);
-        private int currentindentation = 0;
-
-        protected TextWriter TextWriter;
-
-        protected CodeWriter(TextWriter textWriter)
-        {
-            IndentationPattern = "\t";
-            TextWriter = textWriter;
-        }
-
-        #region Writer
-
-        protected bool IsFullLine()
-        {
-            int endIndex = buffer.Length - CoreNewLine.Length;
-            if (endIndex < 0)
-                return false;
-            for (int i = 0; i < CoreNewLine.Length; i++)
-            {
-                if (buffer[endIndex + i] != CoreNewLine[i])
-                    return false;
-            }
-            return true;
-        }
-
-        protected string GetLine()
-        {
-            string line = buffer.ToString();
-            buffer.Remove(0, buffer.Length);
-            return line;
-        }
-
-        protected abstract bool MustIndent(string line);
-        protected abstract bool MustUnindent(string line);
-
-        /// <summary>
-        /// In the end, all output comes to this
-        /// </summary>
-        /// <param name="value"></param>
-        public override void Write(char value)
-        {
-            buffer.Append(value);
-            if (IsFullLine())
-            {
-                string line = GetLine();
-                string rawLine = Trim(line);
-                // unindent before...
-                if (MustUnindent(rawLine))
-                    currentindentation--;
-                WriteLine(rawLine, currentindentation);
-                // indent after
-                if (MustIndent(rawLine))
-                    currentindentation++;
-            }
-        }
-
-        protected virtual string Trim(string line)
-        {
-            return line.Trim();
-        }
-
-        protected virtual void WriteLine(string rawLine, int indentation)
-        {
-            if (!string.IsNullOrEmpty(rawLine))
-            {
-                for (int indentationCount = 0; indentationCount < indentation; indentationCount++)
-                {
-                    TextWriter.Write(IndentationPattern);
-                }
-            }
-            TextWriter.WriteLine(rawLine);
-        }
-
-        public virtual string GetEnumType(string name)
-        {
-            return name;
-        }
-
-        public abstract IDisposable WriteEnum(SpecificationDefinition specificationDefinition, string name);
-
-        public virtual void WriteEnum(SpecificationDefinition specificationDefinition, string name, IDictionary<string, int> values)
-        {
-            using (WriteEnum(specificationDefinition, name))
-            {
-                var orderedValues = from nv in values orderby nv.Value select nv;
-                int currentValue = 1, counter = 0;
-                foreach (var nameValue in orderedValues)
-                {
-
-                    var suffix = ++counter < orderedValues.Count() ? "," : "";
-
-                    if (nameValue.Value == currentValue)
-                        WriteLine(string.Format("{0}{1}", nameValue.Key, suffix));
-                    else
-                    {
-                        currentValue = nameValue.Value;
-                        WriteLine(string.Format("{0} = {1}{2}", nameValue.Key, nameValue.Value, suffix));
-                    }
-                    currentValue++;
-                }
-            }
-        }
-
-        #endregion
-
-        #region Code generation
-
-        // A language sometimes generates complementary text, such as "{" and "}", or "#region"/"#endregion"
-
-        protected class NestedInstruction : IDisposable
-        {
-            private readonly Action endAction;
-
-            public NestedInstruction(Action end)
-            {
-                endAction = end;
-            }
-
-            public void Dispose()
-            {
-                endAction();
-            }
-        }
-
-        /// <summary>
-        /// Registers an "end block" (written on Dispose() call)
-        /// </summary>
-        /// <param name="end"></param>
-        /// <returns></returns>
-        protected IDisposable EndAction(Action end)
-        {
-            return new NestedInstruction(end);
-        }
-
-        #endregion
-
-        #region Code generation - Language write
-
-        public abstract void WriteCommentLine(string line);
-        public virtual void WriteCommentLines(string comments)
-        {
-            string[] commentLines = comments.Split('\n');
-            foreach (string commentLine in commentLines)
-            {
-                WriteCommentLine(commentLine.TrimEnd());
-            }
-        }
-
-        /// <summary>
-        /// Registers namespace to be written
-        /// </summary>
-        /// <param name="name"></param>
-        public abstract void WriteUsingNamespace(string name);
-        public abstract IDisposable WriteNamespace(string name);
-        public abstract IDisposable WriteClass(SpecificationDefinition specificationDefinition, string name,
-                                               string baseClass, params string[] interfaces);
-
-        public abstract IDisposable WriteRegion(string name);
-        public abstract IDisposable WriteAttribute(AttributeDefinition attributeDefinition);
-
-        public abstract IDisposable WriteCtor(SpecificationDefinition specificationDefinition, string name,
-                                              ParameterDefinition[] parameters, IList<string> baseCallParameters);
-        public abstract IDisposable WriteMethod(SpecificationDefinition specificationDefinition, string name, Type returnType,
-                                                params ParameterDefinition[] parameters);
-
-        public abstract IDisposable WriteProperty(SpecificationDefinition specificationDefinition, string name, string propertyType);
-        public abstract void WriteAutomaticPropertyGetSet();
-        public abstract IDisposable WritePropertyGet();
-        public abstract IDisposable WritePropertySet();
-
-        public abstract void WritePropertyWithBackingField(SpecificationDefinition specificationDefinition, string name, string propertyType, bool privateSetter);
-        public virtual void WritePropertyWithBackingField(SpecificationDefinition specificationDefinition, string name, string propertyType)
-        {
-            WritePropertyWithBackingField(specificationDefinition, name, propertyType, false);
-        }
-
-        public abstract void WriteField(SpecificationDefinition specificationDefinition, string name, string fieldType);
-
-        public abstract void WriteEvent(SpecificationDefinition specificationDefinition, string name, string eventDelegate);
-
-        public abstract IDisposable WriteIf(string expression);
-
-        #endregion
-
-        #region Code generation - Language construction
-
-        public abstract string GetCastExpression(string value, string castType, bool hardCast);
-
-        public virtual string GetLiteralValue(object value)
-        {
-            if (value == null)
-                return GetNullExpression();
-            if (value is string)
-                return string.Format("\"{0}\"", value);
-            return value.ToString();
-        }
-
-        public virtual string GetLiteralType(Type type)
-        {
-            return type.Name;
-        }
-
-        public virtual string GetLiteralFullType(Type type)
-        {
-            return type.FullName;
-        }
-
-        public virtual string GetMemberExpression(string obj, string member)
-        {
-            return string.Format("{0}.{1}", obj, member);
-        }
-
-        public virtual string GetReturnStatement(string expression)
-        {
-            if (expression == null)
-                return GetStatement("return");
-            return GetStatement(string.Format("return {0}", expression));
-        }
-
-        /// <summary>
-        /// Returns the specified variable as a safe expression
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public abstract string GetVariableExpression(string name);
-
-        public virtual string GetNewExpression(string ctor)
-        {
-            return string.Format("new {0}", ctor);
-        }
-
-        public virtual string GetThisExpression()
-        {
-            return "this";
-        }
-
-        public virtual string GetDeclarationExpression(string variable, string type)
-        {
-            return string.Format("{0} {1}", type, variable);
-        }
-
-        public virtual string GetAssignmentExpression(string variable, string expression)
-        {
-            return string.Format("{0} = {1}", variable, expression);
-        }
-
-        public abstract string GetArray(string array, string literalIndex);
-
-        public virtual string GetMethodCallExpression(string method, params string[] literalParameters)
-        {
-            return string.Format("{0}({1})", method, string.Join(", ", literalParameters));
-        }
-
-        public virtual string GetStatement(string expression)
-        {
-            return expression;
-        }
-
-        public abstract string GetPropertySetValueExpression();
-
-        public abstract string GetNullExpression();
-
-        public abstract string GetGenericName(string baseName, string type);
-
-        public abstract string GetDifferentExpression(string a, string b);
-        public abstract string GetEqualExpression(string a, string b);
-
-        public abstract string GetXOrExpression(string a, string b);
-        public abstract string GetAndExpression(string a, string b);
-
-        public abstract string GetTernaryExpression(string conditionExpression, string trueExpression, string falseExpression);
-
-        public abstract string GetNullValueExpression(string literalType);
-
-        #endregion
-
-        /// <summary>
-        /// Returns a code that throw the given expression
-        /// </summary>
-        /// <param name="throwExpression"></param>
-        /// <returns></returns>
-        public abstract string GetThrowStatement(string throwExpression);
-
-        /// <summary>
-        /// Returns a declaration and assignement expression
-        /// </summary>
-        /// <param name="variableType"></param>
-        /// <param name="variableName"></param>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public abstract string GetVariableDeclarationInitialization(string variableType, string variableName, string expression);
-
-        /// <summary>
-        /// Writes the raw if.
-        /// </summary>
-        /// <param name="expression">The expression.</param>
-        public abstract void WriteRawIf(string expression);
-
-        /// <summary>
-        /// Writes the raw else.
-        /// </summary>
-        public abstract void WriteRawElse();
-
-        /// <summary>
-        /// Writes the raw endif.
-        /// </summary>
-        public abstract void WriteRawEndif();
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using DbLinq.Util;
+using DbMetal.Generator;
+
+namespace DbMetal.Generator
+{
+    /// <summary>
+    /// Base class for writing code.
+    /// Divided in 3 Parts:
+    /// - Code line writing (with indentation)
+    /// - Code formatting (returning a literal type)
+    /// - Code writing (comment line, field, property, event...)
+    /// </summary>
+    public abstract class CodeWriter : TextWriter
+    {
+        // required by TextWriter
+        public override Encoding Encoding
+        {
+            get
+            {
+                return TextWriter.Encoding;
+            }
+        }
+
+        public string IndentationPattern { get; set; }
+
+        private readonly StringBuilder buffer = new StringBuilder(10 << 10);
+        private int currentindentation = 0;
+
+        protected TextWriter TextWriter;
+
+        protected CodeWriter(TextWriter textWriter)
+        {
+            IndentationPattern = "\t";
+            TextWriter = textWriter;
+        }
+
+        #region Writer
+
+        protected bool IsFullLine()
+        {
+            int endIndex = buffer.Length - CoreNewLine.Length;
+            if (endIndex < 0)
+                return false;
+            for (int i = 0; i < CoreNewLine.Length; i++)
+            {
+                if (buffer[endIndex + i] != CoreNewLine[i])
+                    return false;
+            }
+            return true;
+        }
+
+        protected string GetLine()
+        {
+            string line = buffer.ToString();
+            buffer.Remove(0, buffer.Length);
+            return line;
+        }
+
+        protected abstract bool MustIndent(string line);
+        protected abstract bool MustUnindent(string line);
+
+        /// <summary>
+        /// In the end, all output comes to this
+        /// </summary>
+        /// <param name="value"></param>
+        public override void Write(char value)
+        {
+            buffer.Append(value);
+            if (IsFullLine())
+            {
+                string line = GetLine();
+                string rawLine = Trim(line);
+                // unindent before...
+                if (MustUnindent(rawLine))
+                    currentindentation--;
+                WriteLine(rawLine, currentindentation);
+                // indent after
+                if (MustIndent(rawLine))
+                    currentindentation++;
+            }
+        }
+
+        protected virtual string Trim(string line)
+        {
+            return line.Trim();
+        }
+
+        protected virtual void WriteLine(string rawLine, int indentation)
+        {
+            if (!string.IsNullOrEmpty(rawLine))
+            {
+                for (int indentationCount = 0; indentationCount < indentation; indentationCount++)
+                {
+                    TextWriter.Write(IndentationPattern);
+                }
+            }
+            TextWriter.WriteLine(rawLine);
+        }
+
+        public virtual string GetEnumType(string name)
+        {
+            return name;
+        }
+
+        public abstract IDisposable WriteEnum(SpecificationDefinition specificationDefinition, string name);
+
+        public virtual void WriteEnum(SpecificationDefinition specificationDefinition, string name, IDictionary<string, int> values)
+        {
+            using (WriteEnum(specificationDefinition, name))
+            {
+                var orderedValues = from nv in values orderby nv.Value select nv;
+                int currentValue = 1, counter = 0;
+                foreach (var nameValue in orderedValues)
+                {
+
+                    var suffix = ++counter < orderedValues.Count() ? "," : "";
+
+                    if (nameValue.Value == currentValue)
+                        WriteLine(string.Format("{0}{1}", nameValue.Key, suffix));
+                    else
+                    {
+                        currentValue = nameValue.Value;
+                        WriteLine(string.Format("{0} = {1}{2}", nameValue.Key, nameValue.Value, suffix));
+                    }
+                    currentValue++;
+                }
+            }
+        }
+
+        #endregion
+
+        #region Code generation
+
+        // A language sometimes generates complementary text, such as "{" and "}", or "#region"/"#endregion"
+
+        protected class NestedInstruction : IDisposable
+        {
+            private readonly Action endAction;
+
+            public NestedInstruction(Action end)
+            {
+                endAction = end;
+            }
+
+            public void Dispose()
+            {
+                endAction();
+            }
+        }
+
+        /// <summary>
+        /// Registers an "end block" (written on Dispose() call)
+        /// </summary>
+        /// <param name="end"></param>
+        /// <returns></returns>
+        protected IDisposable EndAction(Action end)
+        {
+            return new NestedInstruction(end);
+        }
+
+        #endregion
+
+        #region Code generation - Language write
+
+        public abstract void WriteCommentLine(string line);
+        public virtual void WriteCommentLines(string comments)
+        {
+            string[] commentLines = comments.Split('\n');
+            foreach (string commentLine in commentLines)
+            {
+                WriteCommentLine(commentLine.TrimEnd());
+            }
+        }
+
+        /// <summary>
+        /// Registers namespace to be written
+        /// </summary>
+        /// <param name="name"></param>
+        public abstract void WriteUsingNamespace(string name);
+        public abstract IDisposable WriteNamespace(string name);
+        public abstract IDisposable WriteClass(SpecificationDefinition specificationDefinition, string name,
+                                               string baseClass, params string[] interfaces);
+
+        public abstract IDisposable WriteRegion(string name);
+        public abstract IDisposable WriteAttribute(AttributeDefinition attributeDefinition);
+
+        public abstract IDisposable WriteCtor(SpecificationDefinition specificationDefinition, string name,
+                                              ParameterDefinition[] parameters, IList<string> baseCallParameters);
+        public abstract IDisposable WriteMethod(SpecificationDefinition specificationDefinition, string name, Type returnType,
+                                                params ParameterDefinition[] parameters);
+
+        public abstract IDisposable WriteProperty(SpecificationDefinition specificationDefinition, string name, string propertyType);
+        public abstract void WriteAutomaticPropertyGetSet();
+        public abstract IDisposable WritePropertyGet();
+        public abstract IDisposable WritePropertySet();
+
+        public abstract void WritePropertyWithBackingField(SpecificationDefinition specificationDefinition, string name, string propertyType, bool privateSetter);
+        public virtual void WritePropertyWithBackingField(SpecificationDefinition specificationDefinition, string name, string propertyType)
+        {
+            WritePropertyWithBackingField(specificationDefinition, name, propertyType, false);
+        }
+
+        public abstract void WriteField(SpecificationDefinition specificationDefinition, string name, string fieldType);
+
+        public abstract void WriteEvent(SpecificationDefinition specificationDefinition, string name, string eventDelegate);
+
+        public abstract IDisposable WriteIf(string expression);
+
+        #endregion
+
+        #region Code generation - Language construction
+
+        public abstract string GetCastExpression(string value, string castType, bool hardCast);
+
+        public virtual string GetLiteralValue(object value)
+        {
+            if (value == null)
+                return GetNullExpression();
+            if (value is string)
+                return string.Format("\"{0}\"", value);
+            return value.ToString();
+        }
+
+        public virtual string GetLiteralType(Type type)
+        {
+            return type.Name;
+        }
+
+        public virtual string GetLiteralFullType(Type type)
+        {
+            return type.FullName;
+        }
+
+        public virtual string GetMemberExpression(string obj, string member)
+        {
+            return string.Format("{0}.{1}", obj, member);
+        }
+
+        public virtual string GetReturnStatement(string expression)
+        {
+            if (expression == null)
+                return GetStatement("return");
+            return GetStatement(string.Format("return {0}", expression));
+        }
+
+        /// <summary>
+        /// Returns the specified variable as a safe expression
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public abstract string GetVariableExpression(string name);
+
+        public virtual string GetNewExpression(string ctor)
+        {
+            return string.Format("new {0}", ctor);
+        }
+
+        public virtual string GetThisExpression()
+        {
+            return "this";
+        }
+
+        public virtual string GetDeclarationExpression(string variable, string type)
+        {
+            return string.Format("{0} {1}", type, variable);
+        }
+
+        public virtual string GetAssignmentExpression(string variable, string expression)
+        {
+            return string.Format("{0} = {1}", variable, expression);
+        }
+
+        public abstract string GetArray(string array, string literalIndex);
+
+        public virtual string GetMethodCallExpression(string method, params string[] literalParameters)
+        {
+            return string.Format("{0}({1})", method, string.Join(", ", literalParameters));
+        }
+
+        public virtual string GetStatement(string expression)
+        {
+            return expression;
+        }
+
+        public abstract string GetPropertySetValueExpression();
+
+        public abstract string GetNullExpression();
+
+        public abstract string GetGenericName(string baseName, string type);
+
+        public abstract string GetDifferentExpression(string a, string b);
+        public abstract string GetEqualExpression(string a, string b);
+
+        public abstract string GetXOrExpression(string a, string b);
+        public abstract string GetAndExpression(string a, string b);
+
+        public abstract string GetTernaryExpression(string conditionExpression, string trueExpression, string falseExpression);
+
+        public abstract string GetNullValueExpression(string literalType);
+
+        #endregion
+
+        /// <summary>
+        /// Returns a code that throw the given expression
+        /// </summary>
+        /// <param name="throwExpression"></param>
+        /// <returns></returns>
+        public abstract string GetThrowStatement(string throwExpression);
+
+        /// <summary>
+        /// Returns a declaration and assignement expression
+        /// </summary>
+        /// <param name="variableType"></param>
+        /// <param name="variableName"></param>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public abstract string GetVariableDeclarationInitialization(string variableType, string variableName, string expression);
+
+        /// <summary>
+        /// Writes the raw if.
+        /// </summary>
+        /// <param name="expression">The expression.</param>
+        public abstract void WriteRawIf(string expression);
+
+        /// <summary>
+        /// Writes the raw else.
+        /// </summary>
+        public abstract void WriteRawElse();
+
+        /// <summary>
+        /// Writes the raw endif.
+        /// </summary>
+        public abstract void WriteRawEndif();
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/IImplementation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/IImplementation.cs
@@ -1,76 +1,76 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbMetal.Generator.EntityInterface
-{
-    /// <summary>
-    /// When asking for special interfaces implementation in generated entities,
-    /// the following is used.
-    /// It is identified by the target interface name, called 3 times,
-    /// during the header generation, before and after the setter.
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface IImplementation
-    {
-        /// <summary>
-        /// Interface name, in short format
-        /// </summary>
-        string InterfaceName { get; }
-
-        /// <summary>
-        /// Called at file top
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="context"></param>
-        void WriteHeader(CodeWriter writer, GenerationContext context);
-
-        /// <summary>
-        /// Called at class top
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="table"></param>
-        /// <param name="context"></param>
-        void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context);
-
-        /// <summary>
-        /// Called before the value is assigned to backing field
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="property"></param>
-        /// <param name="context"></param>
-        void WritePropertyBeforeSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context);
-
-        /// <summary>
-        /// Called after the value is assigned to backing field
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="property"></param>
-        /// <param name="context"></param>
-        void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbMetal.Generator.EntityInterface
+{
+    /// <summary>
+    /// When asking for special interfaces implementation in generated entities,
+    /// the following is used.
+    /// It is identified by the target interface name, called 3 times,
+    /// during the header generation, before and after the setter.
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface IImplementation
+    {
+        /// <summary>
+        /// Interface name, in short format
+        /// </summary>
+        string InterfaceName { get; }
+
+        /// <summary>
+        /// Called at file top
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="context"></param>
+        void WriteHeader(CodeWriter writer, GenerationContext context);
+
+        /// <summary>
+        /// Called at class top
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="table"></param>
+        /// <param name="context"></param>
+        void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context);
+
+        /// <summary>
+        /// Called before the value is assigned to backing field
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="property"></param>
+        /// <param name="context"></param>
+        void WritePropertyBeforeSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context);
+
+        /// <summary>
+        /// Called after the value is assigned to backing field
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="property"></param>
+        /// <param name="context"></param>
+        void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/IModifiedImplementation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/IModifiedImplementation.cs
@@ -1,52 +1,52 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-namespace DbMetal.Generator.EntityInterface.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    class IModifiedImplementation : InterfaceImplementation
-    {
-        public override string InterfaceName
-        {
-            get { return "IModified"; }
-        }
-
-        private const string ModifiedName = "IsModified"; // mandatory value, since the IModified interface requires this member
-
-        public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
-        {
-            writer.WriteCommentLine("IModified backing field");
-            writer.WritePropertyWithBackingField(SpecificationDefinition.Public, ModifiedName, writer.GetLiteralType(typeof(bool)));
-            writer.WriteLine();
-        }
-
-        public override void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
-        {
-            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(ModifiedName, writer.GetLiteralValue(true))));
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+namespace DbMetal.Generator.EntityInterface.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    class IModifiedImplementation : InterfaceImplementation
+    {
+        public override string InterfaceName
+        {
+            get { return "IModified"; }
+        }
+
+        private const string ModifiedName = "IsModified"; // mandatory value, since the IModified interface requires this member
+
+        public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
+        {
+            writer.WriteCommentLine("IModified backing field");
+            writer.WritePropertyWithBackingField(SpecificationDefinition.Public, ModifiedName, writer.GetLiteralType(typeof(bool)));
+            writer.WriteLine();
+        }
+
+        public override void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
+        {
+            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(ModifiedName, writer.GetLiteralValue(true))));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/INotifyPropertyChangedImplementation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/INotifyPropertyChangedImplementation.cs
@@ -1,85 +1,85 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.ComponentModel;
-using DbLinq.Schema;
-
-namespace DbMetal.Generator.EntityInterface.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    class INotifyPropertyChangedImplementation : InterfaceImplementation
-    {
-        public override string InterfaceName
-        {
-            get { return typeof(INotifyPropertyChanged).Name; }
-        }
-
-        private const string sendPropertyChangedMethod = "SendPropertyChanged";
-
-        /// <summary>
-        /// Registers the required namespace
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="context"></param>
-        public override void WriteHeader(CodeWriter writer, GenerationContext context)
-        {
-            writer.WriteUsingNamespace(typeof(INotifyPropertyChanged).Namespace);
-        }
-
-        public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
-        {
-            using (writer.WriteRegion(string.Format("{0} handling", typeof(INotifyPropertyChanged).Name)))
-            {
-                const string eventName = "PropertyChanged"; // do not change, part of INotifyPropertyChanged
-                const string propertyNameName = "propertyName";
-
-                // event
-                writer.WriteEvent(SpecificationDefinition.Public, eventName, typeof(PropertyChangedEventHandler).Name);
-                writer.WriteLine();
-                // method
-                using (writer.WriteMethod(SpecificationDefinition.Protected | SpecificationDefinition.Virtual,
-                                          sendPropertyChangedMethod, null, new ParameterDefinition { Name = propertyNameName, Type = typeof(string) }))
-                {
-                    using (writer.WriteIf(writer.GetDifferentExpression(eventName, writer.GetNullExpression())))
-                    {
-                        writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(eventName,
-                                                                                            writer.GetThisExpression(),
-                                                                                            writer.GetNewExpression(writer.GetMethodCallExpression(typeof(PropertyChangedEventArgs).Name,
-                                                                                                                                                   propertyNameName)))));
-                    }
-                }
-            }
-        }
-
-        public override void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
-        {
-            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(sendPropertyChangedMethod,
-                                                                                writer.GetLiteralValue(property.Member))));
-            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("On" + property.Member + "Changed")));
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.ComponentModel;
+using DbLinq.Schema;
+
+namespace DbMetal.Generator.EntityInterface.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    class INotifyPropertyChangedImplementation : InterfaceImplementation
+    {
+        public override string InterfaceName
+        {
+            get { return typeof(INotifyPropertyChanged).Name; }
+        }
+
+        private const string sendPropertyChangedMethod = "SendPropertyChanged";
+
+        /// <summary>
+        /// Registers the required namespace
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="context"></param>
+        public override void WriteHeader(CodeWriter writer, GenerationContext context)
+        {
+            writer.WriteUsingNamespace(typeof(INotifyPropertyChanged).Namespace);
+        }
+
+        public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
+        {
+            using (writer.WriteRegion(string.Format("{0} handling", typeof(INotifyPropertyChanged).Name)))
+            {
+                const string eventName = "PropertyChanged"; // do not change, part of INotifyPropertyChanged
+                const string propertyNameName = "propertyName";
+
+                // event
+                writer.WriteEvent(SpecificationDefinition.Public, eventName, typeof(PropertyChangedEventHandler).Name);
+                writer.WriteLine();
+                // method
+                using (writer.WriteMethod(SpecificationDefinition.Protected | SpecificationDefinition.Virtual,
+                                          sendPropertyChangedMethod, null, new ParameterDefinition { Name = propertyNameName, Type = typeof(string) }))
+                {
+                    using (writer.WriteIf(writer.GetDifferentExpression(eventName, writer.GetNullExpression())))
+                    {
+                        writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(eventName,
+                                                                                            writer.GetThisExpression(),
+                                                                                            writer.GetNewExpression(writer.GetMethodCallExpression(typeof(PropertyChangedEventArgs).Name,
+                                                                                                                                                   propertyNameName)))));
+                    }
+                }
+            }
+        }
+
+        public override void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
+        {
+            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(sendPropertyChangedMethod,
+                                                                                writer.GetLiteralValue(property.Member))));
+            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("On" + property.Member + "Changed")));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/INotifyPropertyChangingImplementation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/INotifyPropertyChangingImplementation.cs
@@ -1,87 +1,87 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.ComponentModel;
-using DbLinq.Schema;
-
-namespace DbMetal.Generator.EntityInterface.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    class INotifyPropertyChangingImplementation : InterfaceImplementation
-    {
-        public override string InterfaceName
-        {
-            get { return typeof(INotifyPropertyChanging).Name; }
-        }
-
-        private const string sendPropertyChangingMethod = "SendPropertyChanging";
-
-        /// <summary>
-        /// Registers the required namespace
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="context"></param>
-        public override void WriteHeader(CodeWriter writer, GenerationContext context)
-        {
-            writer.WriteUsingNamespace(typeof(INotifyPropertyChanging).Namespace);
-        }
-
-        public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
-        {
-            using (writer.WriteRegion(string.Format("{0} handling", typeof(INotifyPropertyChanging).Name)))
-            {
-                const string eventName = "PropertyChanging"; // do not change, part of INotifyPropertyChanging
-                const string emptyArgs = "emptyChangingEventArgs";
-
-                // event
-                writer.WriteEvent(SpecificationDefinition.Public, eventName, typeof(PropertyChangingEventHandler).Name);
-                writer.WriteLine();
-                // empty event arg
-                writer.WriteField(SpecificationDefinition.Private | SpecificationDefinition.Static,
-                                  writer.GetAssignmentExpression(emptyArgs, writer.GetNewExpression(
-                                                                                writer.GetMethodCallExpression(typeof(PropertyChangingEventArgs).Name, "\"\""))),
-                                  typeof(PropertyChangingEventArgs).Name);
-                // method
-                using (writer.WriteMethod(SpecificationDefinition.Protected | SpecificationDefinition.Virtual,
-                                          sendPropertyChangingMethod, null))
-                {
-                    using (writer.WriteIf(writer.GetDifferentExpression(eventName, writer.GetNullExpression())))
-                    {
-                        writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(eventName,
-                                                                                            writer.GetThisExpression(), emptyArgs)));
-                    }
-                }
-            }
-        }
-
-        public override void WritePropertyBeforeSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
-        {
-            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("On" + property.Member + "Changing", "value")));
-            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(sendPropertyChangingMethod)));
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.ComponentModel;
+using DbLinq.Schema;
+
+namespace DbMetal.Generator.EntityInterface.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    class INotifyPropertyChangingImplementation : InterfaceImplementation
+    {
+        public override string InterfaceName
+        {
+            get { return typeof(INotifyPropertyChanging).Name; }
+        }
+
+        private const string sendPropertyChangingMethod = "SendPropertyChanging";
+
+        /// <summary>
+        /// Registers the required namespace
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="context"></param>
+        public override void WriteHeader(CodeWriter writer, GenerationContext context)
+        {
+            writer.WriteUsingNamespace(typeof(INotifyPropertyChanging).Namespace);
+        }
+
+        public override void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
+        {
+            using (writer.WriteRegion(string.Format("{0} handling", typeof(INotifyPropertyChanging).Name)))
+            {
+                const string eventName = "PropertyChanging"; // do not change, part of INotifyPropertyChanging
+                const string emptyArgs = "emptyChangingEventArgs";
+
+                // event
+                writer.WriteEvent(SpecificationDefinition.Public, eventName, typeof(PropertyChangingEventHandler).Name);
+                writer.WriteLine();
+                // empty event arg
+                writer.WriteField(SpecificationDefinition.Private | SpecificationDefinition.Static,
+                                  writer.GetAssignmentExpression(emptyArgs, writer.GetNewExpression(
+                                                                                writer.GetMethodCallExpression(typeof(PropertyChangingEventArgs).Name, "\"\""))),
+                                  typeof(PropertyChangingEventArgs).Name);
+                // method
+                using (writer.WriteMethod(SpecificationDefinition.Protected | SpecificationDefinition.Virtual,
+                                          sendPropertyChangingMethod, null))
+                {
+                    using (writer.WriteIf(writer.GetDifferentExpression(eventName, writer.GetNullExpression())))
+                    {
+                        writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(eventName,
+                                                                                            writer.GetThisExpression(), emptyArgs)));
+                    }
+                }
+            }
+        }
+
+        public override void WritePropertyBeforeSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
+        {
+            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("On" + property.Member + "Changing", "value")));
+            writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression(sendPropertyChangingMethod)));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/InterfaceImplementation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/EntityInterface/Implementation/InterfaceImplementation.cs
@@ -1,56 +1,56 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using DbLinq.Schema;
-
-namespace DbMetal.Generator.EntityInterface.Implementation
-{
-    /// <summary>
-    /// Helper to make default IImplementation implementation
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    abstract class InterfaceImplementation : IImplementation
-    {
-        public abstract string InterfaceName { get; }
-
-        public virtual void WriteHeader(CodeWriter writer, GenerationContext context)
-        {
-        }
-
-        public virtual void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
-        {
-        }
-
-        public virtual void WritePropertyBeforeSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
-        {
-        }
-
-        public virtual void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
-        {
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using DbLinq.Schema;
+
+namespace DbMetal.Generator.EntityInterface.Implementation
+{
+    /// <summary>
+    /// Helper to make default IImplementation implementation
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    abstract class InterfaceImplementation : IImplementation
+    {
+        public abstract string InterfaceName { get; }
+
+        public virtual void WriteHeader(CodeWriter writer, GenerationContext context)
+        {
+        }
+
+        public virtual void WriteClassHeader(CodeWriter writer, DbLinq.Schema.Dbml.Table table, GenerationContext context)
+        {
+        }
+
+        public virtual void WritePropertyBeforeSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
+        {
+        }
+
+        public virtual void WritePropertyAfterSet(CodeWriter writer, DbLinq.Schema.Dbml.Column property, GenerationContext context)
+        {
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/GenerationContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/GenerationContext.cs
@@ -1,106 +1,106 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using DbLinq.Schema.Dbml;
-using DbLinq.Schema.Dbml.Adapter;
-using DbLinq.Vendor;
-using DbMetal;
-using DbMetal.Generator.EntityInterface;
-using DbMetal.Generator.EntityInterface.Implementation;
-using DbMetal.Utility;
-
-namespace DbMetal.Generator
-{
-#if !MONO_STRICT
-    public
-#endif
-    class GenerationContext
-    {
-        public class ExtendedTypeAndName
-        {
-            public Table Table;
-            public INamedType Type;
-        }
-
-        public Parameters Parameters;
-        public IDictionary<string, string> Variables;
-        public ISchemaLoader SchemaLoader;
-        public IDictionary<Column, ExtendedTypeAndName> ExtendedTypes;
-
-        public List<IImplementation> AllImplementations = new List<IImplementation>();
-
-        public string this[string key]
-        {
-            get { return Variables[key]; }
-            set { Variables[key] = value; }
-        }
-
-        public GenerationContext(Parameters parameters, ISchemaLoader schemaLoader)
-        {
-            Parameters = parameters;
-            Variables = new Dictionary<string, string>();
-            SchemaLoader = schemaLoader;
-            ExtendedTypes = new Dictionary<Column, ExtendedTypeAndName>();
-            AllImplementations.Add(new IModifiedImplementation());
-            AllImplementations.Add(new INotifyPropertyChangingImplementation());
-            AllImplementations.Add(new INotifyPropertyChangedImplementation());
-        }
-
-        private GenerationContext(GenerationContext original)
-        {
-            Parameters = original.Parameters;
-            Variables = new Dictionary<string, string>(original.Variables);
-            SchemaLoader = original.SchemaLoader;
-            ExtendedTypes = new Dictionary<Column, ExtendedTypeAndName>(original.ExtendedTypes);
-            AllImplementations = new List<IImplementation>(original.AllImplementations);
-        }
-
-        public GenerationContext CopyContext()
-        {
-            return new GenerationContext(this);
-        }
-
-        public string Evaluate(string format)
-        {
-            return Variables.Evaluate(format);
-        }
-
-        /// <summary>
-        /// Returns all known interface handler that apply to our current interfaces
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<IImplementation> Implementations()
-        {
-            foreach (IImplementation implementation in AllImplementations)
-            {
-                if (Array.Exists(Parameters.EntityInterfaces, interfaceName => implementation.InterfaceName == interfaceName))
-                    yield return implementation;
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using DbLinq.Schema.Dbml;
+using DbLinq.Schema.Dbml.Adapter;
+using DbLinq.Vendor;
+using DbMetal;
+using DbMetal.Generator.EntityInterface;
+using DbMetal.Generator.EntityInterface.Implementation;
+using DbMetal.Utility;
+
+namespace DbMetal.Generator
+{
+#if !MONO_STRICT
+    public
+#endif
+    class GenerationContext
+    {
+        public class ExtendedTypeAndName
+        {
+            public Table Table;
+            public INamedType Type;
+        }
+
+        public Parameters Parameters;
+        public IDictionary<string, string> Variables;
+        public ISchemaLoader SchemaLoader;
+        public IDictionary<Column, ExtendedTypeAndName> ExtendedTypes;
+
+        public List<IImplementation> AllImplementations = new List<IImplementation>();
+
+        public string this[string key]
+        {
+            get { return Variables[key]; }
+            set { Variables[key] = value; }
+        }
+
+        public GenerationContext(Parameters parameters, ISchemaLoader schemaLoader)
+        {
+            Parameters = parameters;
+            Variables = new Dictionary<string, string>();
+            SchemaLoader = schemaLoader;
+            ExtendedTypes = new Dictionary<Column, ExtendedTypeAndName>();
+            AllImplementations.Add(new IModifiedImplementation());
+            AllImplementations.Add(new INotifyPropertyChangingImplementation());
+            AllImplementations.Add(new INotifyPropertyChangedImplementation());
+        }
+
+        private GenerationContext(GenerationContext original)
+        {
+            Parameters = original.Parameters;
+            Variables = new Dictionary<string, string>(original.Variables);
+            SchemaLoader = original.SchemaLoader;
+            ExtendedTypes = new Dictionary<Column, ExtendedTypeAndName>(original.ExtendedTypes);
+            AllImplementations = new List<IImplementation>(original.AllImplementations);
+        }
+
+        public GenerationContext CopyContext()
+        {
+            return new GenerationContext(this);
+        }
+
+        public string Evaluate(string format)
+        {
+            return Variables.Evaluate(format);
+        }
+
+        /// <summary>
+        /// Returns all known interface handler that apply to our current interfaces
+        /// </summary>
+        /// <returns></returns>
+        public IEnumerable<IImplementation> Implementations()
+        {
+            foreach (IImplementation implementation in AllImplementations)
+            {
+                if (Array.Exists(Parameters.EntityInterfaces, interfaceName => implementation.InterfaceName == interfaceName))
+                    yield return implementation;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/ICodeGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/ICodeGenerator.cs
@@ -1,59 +1,59 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.IO;
-using DbLinq.Schema;
-using DbLinq.Vendor;
-using DbMetal.Generator;
-
-namespace DbMetal.Generator
-{
-    /// <summary>
-    /// Generates a code file fro a DBML schema
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    interface ICodeGenerator
-    {
-        /// <summary>
-        /// Used to match /language parameter
-        /// </summary>
-        string LanguageCode { get;  }
-
-        /// <summary>
-        /// Default file extension with leading dot (for example '.cs')
-        /// </summary>
-        string Extension { get; }
-
-        /// <summary>
-        /// Writes DBML file to stream
-        /// </summary>
-        /// <param name="textWriter">Output text stream</param>
-        /// <param name="dbSchema">DBML schema</param>
-        /// <param name="context">Holds parameters, variables and ISchemaLoader</param>
-        void Write(TextWriter textWriter, DbLinq.Schema.Dbml.Database dbSchema, GenerationContext context);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.IO;
+using DbLinq.Schema;
+using DbLinq.Vendor;
+using DbMetal.Generator;
+
+namespace DbMetal.Generator
+{
+    /// <summary>
+    /// Generates a code file fro a DBML schema
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    interface ICodeGenerator
+    {
+        /// <summary>
+        /// Used to match /language parameter
+        /// </summary>
+        string LanguageCode { get;  }
+
+        /// <summary>
+        /// Default file extension with leading dot (for example '.cs')
+        /// </summary>
+        string Extension { get; }
+
+        /// <summary>
+        /// Writes DBML file to stream
+        /// </summary>
+        /// <param name="textWriter">Output text stream</param>
+        /// <param name="dbSchema">DBML schema</param>
+        /// <param name="context">Holds parameters, variables and ISchemaLoader</param>
+        void Write(TextWriter textWriter, DbLinq.Schema.Dbml.Database dbSchema, GenerationContext context);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/IProcessor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/IProcessor.cs
@@ -1,90 +1,90 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.IO;
-using DbLinq.Schema.Dbml;
-using DbLinq.Vendor;
-
-namespace DbMetal.Generator
-{
-#if !MONO_STRICT
-    public
-#endif
-    interface IProcessor
-    {
-        /// <summary>
-        /// The SchemaLoadFactory is used to create the ISchemaLoader (who loads the schema from the database)
-        /// Automatically created by IProcessor implementation
-        /// </summary>
-        ISchemaLoaderFactory SchemaLoaderFactory { get; set; }
-
-        /// <summary>
-        /// Log output
-        /// </summary>
-        TextWriter Log { get; set; }
-
-        /// <summary>
-        /// Whole process, given application parameters
-        /// </summary>
-        /// <param name="args"></param>
-        void Process(string[] args);
-        /// <summary>
-        /// Generates a code file, given parameters
-        /// </summary>
-        /// <param name="parameters">Application parameters</param>
-        /// <param name="dbSchema">Loaded schema (from file or database)</param>
-        /// <param name="schemaLoader">Schema loader related to dbSchema</param>
-        /// <param name="filename">Output filename</param>
-        void GenerateCode(Parameters parameters, Database dbSchema, ISchemaLoader schemaLoader, string filename);
-        /// <summary>
-        /// Loads a schema from a database
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="schemaLoader"></param>
-        /// <returns></returns>
-        Database ReadSchema(Parameters parameters, out ISchemaLoader schemaLoader);
-        /// <summary>
-        /// Loads a schema from a given file
-        /// </summary>
-        /// <param name="filename"></param>
-        /// <param name="parameters"></param>
-        /// <returns></returns>
-		Database ReadSchema(Parameters parameters, string filename);
-        /// <summary>
-        /// Lists all code generators available in DbMetal
-        /// </summary>
-        /// <returns></returns>
-        IEnumerable<ICodeGenerator> EnumerateCodeGenerators();
-        /// <summary>
-        /// Find a code generator given the /language or filename extension
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="filename"></param>
-        /// <returns></returns>
-        ICodeGenerator FindCodeGenerator(Parameters parameters, string filename);
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.IO;
+using DbLinq.Schema.Dbml;
+using DbLinq.Vendor;
+
+namespace DbMetal.Generator
+{
+#if !MONO_STRICT
+    public
+#endif
+    interface IProcessor
+    {
+        /// <summary>
+        /// The SchemaLoadFactory is used to create the ISchemaLoader (who loads the schema from the database)
+        /// Automatically created by IProcessor implementation
+        /// </summary>
+        ISchemaLoaderFactory SchemaLoaderFactory { get; set; }
+
+        /// <summary>
+        /// Log output
+        /// </summary>
+        TextWriter Log { get; set; }
+
+        /// <summary>
+        /// Whole process, given application parameters
+        /// </summary>
+        /// <param name="args"></param>
+        void Process(string[] args);
+        /// <summary>
+        /// Generates a code file, given parameters
+        /// </summary>
+        /// <param name="parameters">Application parameters</param>
+        /// <param name="dbSchema">Loaded schema (from file or database)</param>
+        /// <param name="schemaLoader">Schema loader related to dbSchema</param>
+        /// <param name="filename">Output filename</param>
+        void GenerateCode(Parameters parameters, Database dbSchema, ISchemaLoader schemaLoader, string filename);
+        /// <summary>
+        /// Loads a schema from a database
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="schemaLoader"></param>
+        /// <returns></returns>
+        Database ReadSchema(Parameters parameters, out ISchemaLoader schemaLoader);
+        /// <summary>
+        /// Loads a schema from a given file
+        /// </summary>
+        /// <param name="filename"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+		Database ReadSchema(Parameters parameters, string filename);
+        /// <summary>
+        /// Lists all code generators available in DbMetal
+        /// </summary>
+        /// <returns></returns>
+        IEnumerable<ICodeGenerator> EnumerateCodeGenerators();
+        /// <summary>
+        /// Find a code generator given the /language or filename extension
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <param name="filename"></param>
+        /// <returns></returns>
+        ICodeGenerator FindCodeGenerator(Parameters parameters, string filename);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/ISchemaLoaderFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/ISchemaLoaderFactory.cs
@@ -1,56 +1,56 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.IO;
-using DbLinq.Vendor;
-
-namespace DbMetal.Generator
-{
-#if !MONO_STRICT
-    public
-#endif
-    interface ISchemaLoaderFactory
-    {
-        /// <summary>
-        /// the 'main entry point' into this class
-        /// </summary>
-        ISchemaLoader Load(Parameters parameters);
-
-        /// <summary>
-        /// given a schemaLoaderType and dbConnType 
-        /// (e.g. DbLinq.Oracle.OracleSchemaLoader and System.Data.OracleClient.OracleConnection),
-        /// return an instance of the OracleSchemaLoader.
-        /// </summary>
-        ISchemaLoader Load(Parameters parameters, Type dbLinqSchemaLoaderType, Type databaseConnectionType, Type sqlDialectType);
-
-        ISchemaLoader Load(Parameters parameters, string dbLinqSchemaLoaderTypeName, string databaseConnectionTypeName, string sqlDialectTypeName);
-
-        /// <summary>
-        /// Log output
-        /// </summary>
-        TextWriter Log { get; set; }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.IO;
+using DbLinq.Vendor;
+
+namespace DbMetal.Generator
+{
+#if !MONO_STRICT
+    public
+#endif
+    interface ISchemaLoaderFactory
+    {
+        /// <summary>
+        /// the 'main entry point' into this class
+        /// </summary>
+        ISchemaLoader Load(Parameters parameters);
+
+        /// <summary>
+        /// given a schemaLoaderType and dbConnType 
+        /// (e.g. DbLinq.Oracle.OracleSchemaLoader and System.Data.OracleClient.OracleConnection),
+        /// return an instance of the OracleSchemaLoader.
+        /// </summary>
+        ISchemaLoader Load(Parameters parameters, Type dbLinqSchemaLoaderType, Type databaseConnectionType, Type sqlDialectType);
+
+        ISchemaLoader Load(Parameters parameters, string dbLinqSchemaLoaderTypeName, string databaseConnectionTypeName, string sqlDialectTypeName);
+
+        /// <summary>
+        /// Log output
+        /// </summary>
+        TextWriter Log { get; set; }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeDomGenerator/AbstractCodeDomGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeDomGenerator/AbstractCodeDomGenerator.cs
@@ -1,270 +1,270 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-
-using Microsoft.CSharp;
-using Microsoft.VisualBasic;
-
-using DbLinq.Schema.Dbml;
-
-namespace DbMetal.Generator.Implementation.CodeDomGenerator
-{
-#if !MONO_STRICT
-    public
-#endif
-    abstract class AbstractCodeDomGenerator : ICodeGenerator
-    {
-        public abstract string LanguageCode { get; }
-        public abstract string Extension { get; }
-        public abstract void Write(TextWriter textWriter, Database dbSchema, GenerationContext context);
-
-        /// <summary>
-        /// Generates a C# source code wrapper for the database schema objects.
-        /// </summary>
-        /// <param name="database"></param>
-        /// <param name="filename"></param>
-        public void GenerateCSharp(Database database, string filename)
-        {
-            using (Stream stream = File.Open(filename, FileMode.Create))
-            {
-                using (StreamWriter writer = new StreamWriter(stream))
-                {
-                    new CSharpCodeProvider().CreateGenerator(writer).GenerateCodeFromNamespace(GenerateCodeDomModel(database), writer, new CodeGeneratorOptions() { BracingStyle = "C" });
-                }
-            }
-        }
-
-        /// <summary>
-        /// Generates a Visual Basic source code wrapper for the database schema objects.
-        /// </summary>
-        /// <param name="database"></param>
-        /// <param name="filename"></param>
-        public void GenerateVisualBasic(Database database, string filename)
-        {
-            using (Stream stream = File.Open(filename, FileMode.Create))
-            {
-                using (StreamWriter writer = new StreamWriter(stream))
-                {
-                    new VBCodeProvider().CreateGenerator(writer).GenerateCodeFromNamespace(GenerateCodeDomModel(database), writer, new CodeGeneratorOptions() { BracingStyle = "C" });
-                }
-            }
-        }
-
-        CodeThisReferenceExpression thisReference = new CodeThisReferenceExpression();
-
-        protected virtual CodeNamespace GenerateCodeDomModel(Database database)
-        {
-            CodeNamespace _namespace = new CodeNamespace(database.ContextNamespace);
-
-            _namespace.Imports.Add(new CodeNamespaceImport("System"));
-            _namespace.Imports.Add(new CodeNamespaceImport("System.ComponentModel"));
-            _namespace.Imports.Add(new CodeNamespaceImport("System.Data"));
-            _namespace.Imports.Add(new CodeNamespaceImport("System.Data.Linq.Mapping"));
-            _namespace.Imports.Add(new CodeNamespaceImport("System.Diagnostics"));
-            _namespace.Imports.Add(new CodeNamespaceImport("DbLinq.Linq"));
-            _namespace.Imports.Add(new CodeNamespaceImport("DbLinq.Linq.Mapping"));
-
-            _namespace.Comments.Add(new CodeCommentStatement(GenerateCommentBanner(database)));
-
-            _namespace.Types.Add(GenerateContextClass(database));
-
-            foreach (Table table in database.Tables)
-                _namespace.Types.Add(GenerateTableClass(table));
-            return _namespace;
-        }
-
-        protected virtual string GenerateCommentBanner(Database database)
-        {
-            var result = new StringBuilder();
-
-            // http://www.network-science.de/ascii/
-            // http://www.network-science.de/ascii/ascii.php?TEXT=MetalSequel&x=14&y=14&FONT=_all+fonts+with+your+text_&RICH=no&FORM=left&STRE=no&WIDT=80 
-            result.Append(
-                @"
-  ____  _     __  __      _        _ 
- |  _ \| |__ |  \/  | ___| |_ __ _| |
- | | | | '_ \| |\/| |/ _ \ __/ _` | |
- | |_| | |_) | |  | |  __/ || (_| | |
- |____/|_.__/|_|  |_|\___|\__\__,_|_|
-
-");
-            result.AppendLine(String.Format(" Auto-generated from {0} on {1}.", database.Name, DateTime.Now));
-            result.AppendLine(" Please visit http://linq.to/db for more information.");
-
-            return result.ToString();
-        }
-
-        protected virtual CodeTypeDeclaration GenerateContextClass(Database database)
-        {
-            var _class = new CodeTypeDeclaration() { IsClass = true, IsPartial = true, Name = database.Class, TypeAttributes = TypeAttributes.Public };
-
-            if (database.BaseType != null)
-                _class.BaseTypes.Add(database.BaseType);
-            else // TODO: something with less risk
-                _class.BaseTypes.Add(String.Format("DbLinq.{0}.{0}DataContext", database.Provider));
-
-            // CodeDom does not currently support partial methods.  This will be a problem for VB.  Will probably be fixed in .net 4
-            _class.Members.Add(new CodeSnippetTypeMember("\tpartial void OnCreated();"));
-
-            // Implement Constructor
-            var constructor = new CodeConstructor() { Attributes = MemberAttributes.Public, Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") } };
-            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            _class.Members.Add(constructor);
-
-            // todo: override other constructors
-
-            foreach (Table table in database.Tables)
-            {
-                var tableType = new CodeTypeReference(table.Member);
-                var property = new CodeMemberProperty() { Type = new CodeTypeReference("Table", tableType), Name = table.Member, Attributes = MemberAttributes.Public | MemberAttributes.Final };
-                property.GetStatements.Add
-                    (
-                    new CodeMethodReturnStatement
-                        (
-                        new CodeMethodInvokeExpression
-                            (
-                            new CodeMethodReferenceExpression(thisReference, "GetTable", tableType)
-                            )
-                        )
-                    );
-                _class.Members.Add(property);
-            }
-
-            return _class;
-        }
-
-        protected virtual CodeTypeDeclaration GenerateTableClass(Table table)
-        {
-            var _class = new CodeTypeDeclaration() { IsClass = true, IsPartial = true, Name = table.Member, TypeAttributes = TypeAttributes.Public };
-
-            _class.CustomAttributes.Add(new CodeAttributeDeclaration("Table", new CodeAttributeArgument("Name", new CodePrimitiveExpression(table.Name))));
-
-            // Implement Constructor
-            var constructor = new CodeConstructor() { Attributes = MemberAttributes.Public };
-            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
-            _class.Members.Add(constructor);
-
-            // todo: implement INotifyPropertyChanging
-
-            // Implement INotifyPropertyChanged
-            _class.BaseTypes.Add(typeof(INotifyPropertyChanged));
-
-            var propertyChangedEvent = new CodeMemberEvent() { Type = new CodeTypeReference(typeof(PropertyChangedEventHandler)), Name = "PropertyChanged", Attributes = MemberAttributes.Public };
-            _class.Members.Add(propertyChangedEvent);
-
-            var sendPropertyChangedMethod = new CodeMemberMethod() { Attributes = MemberAttributes.Family, Name = "SendPropertyChanged", Parameters = { new CodeParameterDeclarationExpression(typeof(System.String), "propertyName") } };
-            sendPropertyChangedMethod.Statements.Add
-                (
-                new CodeConditionStatement
-                    (
-                    new CodeSnippetExpression(propertyChangedEvent.Name + " != null"), // todo: covert this to CodeBinaryOperatorExpression
-                    new CodeExpressionStatement
-                        (
-                        new CodeMethodInvokeExpression
-                            (
-                            new CodeMethodReferenceExpression(thisReference, propertyChangedEvent.Name),
-                            thisReference,
-                            new CodeObjectCreateExpression(typeof(PropertyChangedEventArgs), new CodeArgumentReferenceExpression("propertyName"))
-                            )
-                        )
-                    )
-                );
-            _class.Members.Add(sendPropertyChangedMethod);
-
-            // CodeDom does not currently support partial methods.  This will be a problem for VB.  Will probably be fixed in .net 4
-            _class.Members.Add(new CodeSnippetTypeMember("\tpartial void OnCreated();"));
-
-            // todo: add these when the actually get called
-            //partial void OnLoaded();
-            //partial void OnValidate(System.Data.Linq.ChangeAction action);
-
-            // columns
-            foreach (Column column in table.Type.Columns)
-            {
-                var type = new CodeTypeReference(column.Type);
-                var columnMember = column.Member ?? column.Name;
-
-                var field = new CodeMemberField(type, "_" + columnMember);
-                _class.Members.Add(field);
-                var fieldReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), field.Name);
-
-                // CodeDom does not currently support partial methods.  This will be a problem for VB.  Will probably be fixed in .net 4
-                string onChangingPartialMethodName = String.Format("On{0}Changing", columnMember);
-                _class.Members.Add(new CodeSnippetTypeMember(String.Format("\tpartial void {0}({1} instance);", onChangingPartialMethodName, column.Type)));
-                string onChangedPartialMethodName = String.Format("On{0}Changed", columnMember);
-                _class.Members.Add(new CodeSnippetTypeMember(String.Format("\tpartial void {0}();", onChangedPartialMethodName)));
-
-                var property = new CodeMemberProperty();
-                property.Type = type;
-                property.Name = columnMember;
-                property.Attributes = MemberAttributes.Public | MemberAttributes.Final;
-                property.CustomAttributes.Add
-                    (
-                    new CodeAttributeDeclaration
-                        (
-                        "Column",
-                        new CodeAttributeArgument("Storage", new CodePrimitiveExpression(column.Storage)),
-                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(column.Name)),
-                        new CodeAttributeArgument("DbType", new CodePrimitiveExpression(column.DbType)),
-                        new CodeAttributeArgument("CanBeNull", new CodePrimitiveExpression(column.CanBeNull)),
-                        new CodeAttributeArgument("IsPrimaryKey", new CodePrimitiveExpression(column.IsPrimaryKey))
-                        )
-                    );
-                property.CustomAttributes.Add(new CodeAttributeDeclaration("DebuggerNonUserCode"));
-                property.GetStatements.Add(new CodeMethodReturnStatement(fieldReference));
-                property.SetStatements.Add
-                    (
-                    new CodeConditionStatement
-                        (
-                        new CodeSnippetExpression(field.Name + " != value"), // todo: covert this to CodeBinaryOperatorExpression
-                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChangingPartialMethodName, new CodePropertySetValueReferenceExpression())),
-                        new CodeAssignStatement(fieldReference, new CodePropertySetValueReferenceExpression()),
-                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, sendPropertyChangedMethod.Name, new CodePrimitiveExpression(property.Name))),
-                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChangedPartialMethodName))
-                        )
-                    );
-                _class.Members.Add(property);
-            }
-
-            // TODO: implement associations
-
-            // TODO: implement functions / procedures
-
-            // TODO: Override Equals and GetHashCode
-
-            return _class;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+
+using Microsoft.CSharp;
+using Microsoft.VisualBasic;
+
+using DbLinq.Schema.Dbml;
+
+namespace DbMetal.Generator.Implementation.CodeDomGenerator
+{
+#if !MONO_STRICT
+    public
+#endif
+    abstract class AbstractCodeDomGenerator : ICodeGenerator
+    {
+        public abstract string LanguageCode { get; }
+        public abstract string Extension { get; }
+        public abstract void Write(TextWriter textWriter, Database dbSchema, GenerationContext context);
+
+        /// <summary>
+        /// Generates a C# source code wrapper for the database schema objects.
+        /// </summary>
+        /// <param name="database"></param>
+        /// <param name="filename"></param>
+        public void GenerateCSharp(Database database, string filename)
+        {
+            using (Stream stream = File.Open(filename, FileMode.Create))
+            {
+                using (StreamWriter writer = new StreamWriter(stream))
+                {
+                    new CSharpCodeProvider().CreateGenerator(writer).GenerateCodeFromNamespace(GenerateCodeDomModel(database), writer, new CodeGeneratorOptions() { BracingStyle = "C" });
+                }
+            }
+        }
+
+        /// <summary>
+        /// Generates a Visual Basic source code wrapper for the database schema objects.
+        /// </summary>
+        /// <param name="database"></param>
+        /// <param name="filename"></param>
+        public void GenerateVisualBasic(Database database, string filename)
+        {
+            using (Stream stream = File.Open(filename, FileMode.Create))
+            {
+                using (StreamWriter writer = new StreamWriter(stream))
+                {
+                    new VBCodeProvider().CreateGenerator(writer).GenerateCodeFromNamespace(GenerateCodeDomModel(database), writer, new CodeGeneratorOptions() { BracingStyle = "C" });
+                }
+            }
+        }
+
+        CodeThisReferenceExpression thisReference = new CodeThisReferenceExpression();
+
+        protected virtual CodeNamespace GenerateCodeDomModel(Database database)
+        {
+            CodeNamespace _namespace = new CodeNamespace(database.ContextNamespace);
+
+            _namespace.Imports.Add(new CodeNamespaceImport("System"));
+            _namespace.Imports.Add(new CodeNamespaceImport("System.ComponentModel"));
+            _namespace.Imports.Add(new CodeNamespaceImport("System.Data"));
+            _namespace.Imports.Add(new CodeNamespaceImport("System.Data.Linq.Mapping"));
+            _namespace.Imports.Add(new CodeNamespaceImport("System.Diagnostics"));
+            _namespace.Imports.Add(new CodeNamespaceImport("DbLinq.Linq"));
+            _namespace.Imports.Add(new CodeNamespaceImport("DbLinq.Linq.Mapping"));
+
+            _namespace.Comments.Add(new CodeCommentStatement(GenerateCommentBanner(database)));
+
+            _namespace.Types.Add(GenerateContextClass(database));
+
+            foreach (Table table in database.Tables)
+                _namespace.Types.Add(GenerateTableClass(table));
+            return _namespace;
+        }
+
+        protected virtual string GenerateCommentBanner(Database database)
+        {
+            var result = new StringBuilder();
+
+            // http://www.network-science.de/ascii/
+            // http://www.network-science.de/ascii/ascii.php?TEXT=MetalSequel&x=14&y=14&FONT=_all+fonts+with+your+text_&RICH=no&FORM=left&STRE=no&WIDT=80 
+            result.Append(
+                @"
+  ____  _     __  __      _        _ 
+ |  _ \| |__ |  \/  | ___| |_ __ _| |
+ | | | | '_ \| |\/| |/ _ \ __/ _` | |
+ | |_| | |_) | |  | |  __/ || (_| | |
+ |____/|_.__/|_|  |_|\___|\__\__,_|_|
+
+");
+            result.AppendLine(String.Format(" Auto-generated from {0} on {1}.", database.Name, DateTime.Now));
+            result.AppendLine(" Please visit http://linq.to/db for more information.");
+
+            return result.ToString();
+        }
+
+        protected virtual CodeTypeDeclaration GenerateContextClass(Database database)
+        {
+            var _class = new CodeTypeDeclaration() { IsClass = true, IsPartial = true, Name = database.Class, TypeAttributes = TypeAttributes.Public };
+
+            if (database.BaseType != null)
+                _class.BaseTypes.Add(database.BaseType);
+            else // TODO: something with less risk
+                _class.BaseTypes.Add(String.Format("DbLinq.{0}.{0}DataContext", database.Provider));
+
+            // CodeDom does not currently support partial methods.  This will be a problem for VB.  Will probably be fixed in .net 4
+            _class.Members.Add(new CodeSnippetTypeMember("\tpartial void OnCreated();"));
+
+            // Implement Constructor
+            var constructor = new CodeConstructor() { Attributes = MemberAttributes.Public, Parameters = { new CodeParameterDeclarationExpression("IDbConnection", "connection") } };
+            constructor.BaseConstructorArgs.Add(new CodeArgumentReferenceExpression("connection"));
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            _class.Members.Add(constructor);
+
+            // todo: override other constructors
+
+            foreach (Table table in database.Tables)
+            {
+                var tableType = new CodeTypeReference(table.Member);
+                var property = new CodeMemberProperty() { Type = new CodeTypeReference("Table", tableType), Name = table.Member, Attributes = MemberAttributes.Public | MemberAttributes.Final };
+                property.GetStatements.Add
+                    (
+                    new CodeMethodReturnStatement
+                        (
+                        new CodeMethodInvokeExpression
+                            (
+                            new CodeMethodReferenceExpression(thisReference, "GetTable", tableType)
+                            )
+                        )
+                    );
+                _class.Members.Add(property);
+            }
+
+            return _class;
+        }
+
+        protected virtual CodeTypeDeclaration GenerateTableClass(Table table)
+        {
+            var _class = new CodeTypeDeclaration() { IsClass = true, IsPartial = true, Name = table.Member, TypeAttributes = TypeAttributes.Public };
+
+            _class.CustomAttributes.Add(new CodeAttributeDeclaration("Table", new CodeAttributeArgument("Name", new CodePrimitiveExpression(table.Name))));
+
+            // Implement Constructor
+            var constructor = new CodeConstructor() { Attributes = MemberAttributes.Public };
+            constructor.Statements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, "OnCreated")));
+            _class.Members.Add(constructor);
+
+            // todo: implement INotifyPropertyChanging
+
+            // Implement INotifyPropertyChanged
+            _class.BaseTypes.Add(typeof(INotifyPropertyChanged));
+
+            var propertyChangedEvent = new CodeMemberEvent() { Type = new CodeTypeReference(typeof(PropertyChangedEventHandler)), Name = "PropertyChanged", Attributes = MemberAttributes.Public };
+            _class.Members.Add(propertyChangedEvent);
+
+            var sendPropertyChangedMethod = new CodeMemberMethod() { Attributes = MemberAttributes.Family, Name = "SendPropertyChanged", Parameters = { new CodeParameterDeclarationExpression(typeof(System.String), "propertyName") } };
+            sendPropertyChangedMethod.Statements.Add
+                (
+                new CodeConditionStatement
+                    (
+                    new CodeSnippetExpression(propertyChangedEvent.Name + " != null"), // todo: covert this to CodeBinaryOperatorExpression
+                    new CodeExpressionStatement
+                        (
+                        new CodeMethodInvokeExpression
+                            (
+                            new CodeMethodReferenceExpression(thisReference, propertyChangedEvent.Name),
+                            thisReference,
+                            new CodeObjectCreateExpression(typeof(PropertyChangedEventArgs), new CodeArgumentReferenceExpression("propertyName"))
+                            )
+                        )
+                    )
+                );
+            _class.Members.Add(sendPropertyChangedMethod);
+
+            // CodeDom does not currently support partial methods.  This will be a problem for VB.  Will probably be fixed in .net 4
+            _class.Members.Add(new CodeSnippetTypeMember("\tpartial void OnCreated();"));
+
+            // todo: add these when the actually get called
+            //partial void OnLoaded();
+            //partial void OnValidate(System.Data.Linq.ChangeAction action);
+
+            // columns
+            foreach (Column column in table.Type.Columns)
+            {
+                var type = new CodeTypeReference(column.Type);
+                var columnMember = column.Member ?? column.Name;
+
+                var field = new CodeMemberField(type, "_" + columnMember);
+                _class.Members.Add(field);
+                var fieldReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), field.Name);
+
+                // CodeDom does not currently support partial methods.  This will be a problem for VB.  Will probably be fixed in .net 4
+                string onChangingPartialMethodName = String.Format("On{0}Changing", columnMember);
+                _class.Members.Add(new CodeSnippetTypeMember(String.Format("\tpartial void {0}({1} instance);", onChangingPartialMethodName, column.Type)));
+                string onChangedPartialMethodName = String.Format("On{0}Changed", columnMember);
+                _class.Members.Add(new CodeSnippetTypeMember(String.Format("\tpartial void {0}();", onChangedPartialMethodName)));
+
+                var property = new CodeMemberProperty();
+                property.Type = type;
+                property.Name = columnMember;
+                property.Attributes = MemberAttributes.Public | MemberAttributes.Final;
+                property.CustomAttributes.Add
+                    (
+                    new CodeAttributeDeclaration
+                        (
+                        "Column",
+                        new CodeAttributeArgument("Storage", new CodePrimitiveExpression(column.Storage)),
+                        new CodeAttributeArgument("Name", new CodePrimitiveExpression(column.Name)),
+                        new CodeAttributeArgument("DbType", new CodePrimitiveExpression(column.DbType)),
+                        new CodeAttributeArgument("CanBeNull", new CodePrimitiveExpression(column.CanBeNull)),
+                        new CodeAttributeArgument("IsPrimaryKey", new CodePrimitiveExpression(column.IsPrimaryKey))
+                        )
+                    );
+                property.CustomAttributes.Add(new CodeAttributeDeclaration("DebuggerNonUserCode"));
+                property.GetStatements.Add(new CodeMethodReturnStatement(fieldReference));
+                property.SetStatements.Add
+                    (
+                    new CodeConditionStatement
+                        (
+                        new CodeSnippetExpression(field.Name + " != value"), // todo: covert this to CodeBinaryOperatorExpression
+                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChangingPartialMethodName, new CodePropertySetValueReferenceExpression())),
+                        new CodeAssignStatement(fieldReference, new CodePropertySetValueReferenceExpression()),
+                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, sendPropertyChangedMethod.Name, new CodePrimitiveExpression(property.Name))),
+                        new CodeExpressionStatement(new CodeMethodInvokeExpression(thisReference, onChangedPartialMethodName))
+                        )
+                    );
+                _class.Members.Add(property);
+            }
+
+            // TODO: implement associations
+
+            // TODO: implement functions / procedures
+
+            // TODO: Override Equals and GetHashCode
+
+            return _class;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeDomGenerator/CSharpCodeDomGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeDomGenerator/CSharpCodeDomGenerator.cs
@@ -1,49 +1,49 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.CodeDom.Compiler;
-using System.IO;
-using DbLinq.Schema.Dbml;
-using Microsoft.CSharp;
-
-namespace DbMetal.Generator.Implementation.CodeDomGenerator
-{
-#if !MONO_STRICT
-    public
-#endif
-    class CSharpCodeDomGenerator: AbstractCodeDomGenerator
-    {
-        public override string LanguageCode { get { return "C#2"; } }
-        public override string Extension { get { return ".cs2"; } }
-
-        public override void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
-        {
-            new CSharpCodeProvider().CreateGenerator(textWriter).GenerateCodeFromNamespace(GenerateCodeDomModel(dbSchema), textWriter,
-                                                                                new CodeGeneratorOptions() { BracingStyle = "C" });
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.CodeDom.Compiler;
+using System.IO;
+using DbLinq.Schema.Dbml;
+using Microsoft.CSharp;
+
+namespace DbMetal.Generator.Implementation.CodeDomGenerator
+{
+#if !MONO_STRICT
+    public
+#endif
+    class CSharpCodeDomGenerator: AbstractCodeDomGenerator
+    {
+        public override string LanguageCode { get { return "C#2"; } }
+        public override string Extension { get { return ".cs2"; } }
+
+        public override void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
+        {
+            new CSharpCodeProvider().CreateGenerator(textWriter).GenerateCodeFromNamespace(GenerateCodeDomModel(dbSchema), textWriter,
+                                                                                new CodeGeneratorOptions() { BracingStyle = "C" });
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeDomGenerator/VisualBasicCodeDomGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeDomGenerator/VisualBasicCodeDomGenerator.cs
@@ -1,49 +1,49 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.CodeDom.Compiler;
-using System.IO;
-using DbLinq.Schema.Dbml;
-using Microsoft.VisualBasic;
-
-namespace DbMetal.Generator.Implementation.CodeDomGenerator
-{
-#if !MONO_STRICT
-    public
-#endif
-    class VisualBasicCodeDomGenerator : AbstractCodeDomGenerator
-    {
-        public override string LanguageCode { get { return "VB"; } }
-        public override string Extension { get { return ".vb"; } }
-
-        public override void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
-        {
-            new VBCodeProvider().CreateGenerator(textWriter).GenerateCodeFromNamespace(GenerateCodeDomModel(dbSchema), textWriter,
-                                                                                new CodeGeneratorOptions() { BracingStyle = "C" });
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.CodeDom.Compiler;
+using System.IO;
+using DbLinq.Schema.Dbml;
+using Microsoft.VisualBasic;
+
+namespace DbMetal.Generator.Implementation.CodeDomGenerator
+{
+#if !MONO_STRICT
+    public
+#endif
+    class VisualBasicCodeDomGenerator : AbstractCodeDomGenerator
+    {
+        public override string LanguageCode { get { return "VB"; } }
+        public override string Extension { get { return ".vb"; } }
+
+        public override void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
+        {
+            new VBCodeProvider().CreateGenerator(textWriter).GenerateCodeFromNamespace(GenerateCodeDomModel(dbSchema), textWriter,
+                                                                                new CodeGeneratorOptions() { BracingStyle = "C" });
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CSCodeGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CSCodeGenerator.cs
@@ -1,67 +1,67 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.IO;
-using System.Text;
-
-namespace DbMetal.Generator.Implementation.CodeTextGenerator
-{
-#if !MONO_STRICT
-    public
-#endif
-    class CSCodeGenerator : CodeGenerator
-    {
-        public override string LanguageCode { get { return "obsolete-c#"; } }
-        public override string Extension { get { return ".obsolete-cs"; } }
-
-        protected override CodeWriter CreateCodeWriter(TextWriter textWriter)
-        {
-            return new CSCodeWriter(textWriter, false);
-        }
-
-        protected override void WriteDataContextTable(CodeWriter writer, DbLinq.Schema.Dbml.Table table)
-        {
-            writer.WriteLine("public Table<{1}> {0} {{ get {{ return GetTable<{1}>(); }} }}",
-                             table.Member, table.Type.Name);
-        }
-
-        protected override string WriteProcedureBodyMethodCall(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, GenerationContext context)
-        {
-            // picrap: there may be some more elegant ways to invoke a stored procedure, because ExecuteMethodCall is 
-            //         for internal use only
-            const string result = "result";
-            var parametersBuilder = new StringBuilder();
-            foreach (var parameter in procedure.Parameters)
-            {
-                if (parameter.DirectionIn)
-                    parametersBuilder.AppendFormat(", {0}", parameter.Name);
-            }
-            writer.WriteLine(string.Format("var {0} = ExecuteMethodCall(this, (MethodInfo)MethodBase.GetCurrentMethod(){1});",
-                                           result, parametersBuilder));
-            return result;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.IO;
+using System.Text;
+
+namespace DbMetal.Generator.Implementation.CodeTextGenerator
+{
+#if !MONO_STRICT
+    public
+#endif
+    class CSCodeGenerator : CodeGenerator
+    {
+        public override string LanguageCode { get { return "obsolete-c#"; } }
+        public override string Extension { get { return ".obsolete-cs"; } }
+
+        protected override CodeWriter CreateCodeWriter(TextWriter textWriter)
+        {
+            return new CSCodeWriter(textWriter, false);
+        }
+
+        protected override void WriteDataContextTable(CodeWriter writer, DbLinq.Schema.Dbml.Table table)
+        {
+            writer.WriteLine("public Table<{1}> {0} {{ get {{ return GetTable<{1}>(); }} }}",
+                             table.Member, table.Type.Name);
+        }
+
+        protected override string WriteProcedureBodyMethodCall(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, GenerationContext context)
+        {
+            // picrap: there may be some more elegant ways to invoke a stored procedure, because ExecuteMethodCall is 
+            //         for internal use only
+            const string result = "result";
+            var parametersBuilder = new StringBuilder();
+            foreach (var parameter in procedure.Parameters)
+            {
+                if (parameter.DirectionIn)
+                    parametersBuilder.AppendFormat(", {0}", parameter.Name);
+            }
+            writer.WriteLine(string.Format("var {0} = ExecuteMethodCall(this, (MethodInfo)MethodBase.GetCurrentMethod(){1});",
+                                           result, parametersBuilder));
+            return result;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CSCodeWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CSCodeWriter.cs
@@ -1,595 +1,595 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-
-namespace DbMetal.Generator.Implementation.CodeTextGenerator
-{
-    /// <summary>
-    /// C# Code writer
-    /// </summary>
-    class CSCodeWriter : CodeWriter
-    {
-        public string Indent { get; set; }
-        public string Unindent { get; set; }
-
-        private readonly bool trimSpaces;
-
-        public CSCodeWriter(TextWriter textWriter, bool trimSpaces)
-            : base(textWriter)
-        {
-            this.trimSpaces = trimSpaces;
-            Indent = "{";
-            Unindent = "}";
-        }
-
-        public CSCodeWriter(TextWriter textWriter)
-            : this(textWriter, true)
-        {
-        }
-
-        protected override bool MustIndent(string line)
-        {
-            return line.StartsWith(Indent);
-        }
-
-        protected override bool MustUnindent(string line)
-        {
-            return line.StartsWith(Unindent);
-        }
-
-        protected override string Trim(string line)
-        {
-            if (trimSpaces)
-                return line.Trim();
-            return line.TrimEnd();
-        }
-
-        #region Code generation - Language write
-
-        public override void WriteCommentLine(string line)
-        {
-            WriteLine("// {0}", line);
-        }
-
-        protected virtual IDisposable WriteBrackets()
-        {
-            WriteLine("{");
-            return EndAction(() => WriteLine("}"));
-        }
-
-        IDisposable WriteBrackets(string endif)
-        {
-            WriteLine("{");
-            return EndAction(() => { WriteLine("}"); WriteLine(endif); });
-        }
-
-        /// <summary>
-        /// We keep track of namespaces written already once
-        /// </summary>
-        private readonly IList<string> writtenNamespaces = new List<string>();
-
-        public override void WriteUsingNamespace(string name)
-        {
-            if (writtenNamespaces.Contains(name))
-                return;
-
-            writtenNamespaces.Add(name);
-            WriteLine("using {0};", name);
-        }
-
-        public override IDisposable WriteNamespace(string name)
-        {
-            WriteLine("namespace {0}", name);
-            return WriteBrackets();
-        }
-
-        public override IDisposable WriteClass(SpecificationDefinition specificationDefinition, string name, string baseClass, params string[] interfaces)
-        {
-            var classLineBuilder = new StringBuilder(1024);
-
-            classLineBuilder.Append(GetProtectionSpecifications(specificationDefinition));
-            classLineBuilder.Append(GetDomainSpecifications(specificationDefinition));
-            classLineBuilder.Append(GetInheritanceSpecifications(specificationDefinition));
-
-            var bases = new List<string>();
-            if (!string.IsNullOrEmpty(baseClass))
-                bases.Add(baseClass);
-            bases.AddRange(interfaces);
-
-            classLineBuilder.AppendFormat("class {0}", name);
-            if (bases.Count > 0)
-            {
-                classLineBuilder.Append(" : ");
-                classLineBuilder.Append(string.Join(", ", bases.ToArray()));
-            }
-            WriteLine(classLineBuilder.ToString());
-
-            return WriteBrackets();
-        }
-
-        public override IDisposable WriteRegion(string name)
-        {
-            WriteLine("#region {0}", name);
-            WriteLine();
-            return EndAction(delegate { WriteLine(); WriteLine("#endregion"); WriteLine(); });
-        }
-
-        public override IDisposable WriteAttribute(AttributeDefinition attributeDefinition)
-        {
-            if (attributeDefinition != null)
-                WriteLine(GetAttribute(attributeDefinition));
-            return null;
-        }
-
-        protected virtual IDisposable WriteGeneralMethod(SpecificationDefinition specificationDefinition, string name,
-                                                bool hasReturnType, Type returnType,
-                                                IList<ParameterDefinition> parameters, IList<string> baseCallParameters)
-        {
-            bool monoStrict = baseCallParameters != null && baseCallParameters.Count > 0 &&
-                parameters.Any(p => p.Type == typeof(DbLinq.Vendor.IVendor));
-
-            var methodLineBuilder = new StringBuilder(1024);
-
-            if (monoStrict)
-                methodLineBuilder.Append("#if !MONO_STRICT")
-                    .AppendLine();
-            methodLineBuilder.Append(GetProtectionSpecifications(specificationDefinition));
-            methodLineBuilder.Append(GetDomainSpecifications(specificationDefinition));
-            methodLineBuilder.Append(GetInheritanceSpecifications(specificationDefinition));
-
-            if (hasReturnType)
-                methodLineBuilder.AppendFormat("{0} {1}(", GetLiteralType(returnType) ?? "void", name);
-            else
-                methodLineBuilder.AppendFormat("{0}(", name);
-            var literalParameters = new List<string>();
-            foreach (var parameter in parameters)
-            {
-                string literalParameter = string.Format("{0}{3}{1} {2}",
-                                                        parameter.Attribute != null ? GetAttribute(parameter.Attribute) + " " : string.Empty,
-                                                        parameter.LiteralType ?? GetLiteralType(parameter.Type),
-                                                        parameter.Name,
-                                                        GetDirectionSpecifications(parameter.SpecificationDefinition));
-                literalParameters.Add(literalParameter);
-            }
-            methodLineBuilder.AppendFormat("{0})", string.Join(", ", literalParameters.ToArray()));
-            if (baseCallParameters != null && baseCallParameters.Count > 0)
-            {
-                methodLineBuilder.AppendLine();
-                bool strictArgs = parameters.Count != baseCallParameters.Count;
-                if (strictArgs)
-                    methodLineBuilder.Append("#if MONO_STRICT")
-                        .AppendLine()
-                        .AppendFormat("\t: base({0})", string.Join(", ", baseCallParameters.Take(parameters.Count).ToArray()))
-                        .AppendLine()
-                        .Append("#else   // MONO_STRICT")
-                        .AppendLine();
-                methodLineBuilder.AppendFormat("\t: base({0})", string.Join(", ", baseCallParameters.ToArray()));
-                if (strictArgs)
-                    methodLineBuilder.AppendLine()
-                        .Append("#endif  // MONO_STRICT");
-            }
-            WriteLine(methodLineBuilder.ToString());
-            return monoStrict ? WriteBrackets("#endif  // !MONO_STRICT") : WriteBrackets();
-        }
-
-        public override IDisposable WriteCtor(SpecificationDefinition specificationDefinition, string name,
-                                                ParameterDefinition[] parameters, IList<string> baseCallParameters)
-        {
-            return WriteGeneralMethod(specificationDefinition, name, false, null, parameters, baseCallParameters);
-        }
-
-        public override IDisposable WriteMethod(SpecificationDefinition specificationDefinition, string name, Type returnType,
-                                                params ParameterDefinition[] parameters)
-        {
-            return WriteGeneralMethod(specificationDefinition, name, true, returnType, parameters, null);
-        }
-
-        protected void WriteFieldOrProperty(SpecificationDefinition specificationDefinition, string name, string memberType)
-        {
-            var methodLineBuilder = new StringBuilder(1024);
-
-            methodLineBuilder.Append(GetProtectionSpecifications(specificationDefinition));
-            methodLineBuilder.Append(GetDomainSpecifications(specificationDefinition));
-            methodLineBuilder.Append(GetInheritanceSpecifications(specificationDefinition));
-            methodLineBuilder.Append(GetSpecifications(specificationDefinition & SpecificationDefinition.Event));
-
-            methodLineBuilder.AppendFormat("{0} {1}", memberType, GetVariableExpression(name));
-
-            Write(methodLineBuilder.ToString());
-        }
-
-        public override IDisposable WriteProperty(SpecificationDefinition specificationDefinition, string name, string propertyType)
-        {
-            WriteFieldOrProperty(specificationDefinition, name, propertyType);
-            WriteLine();
-            return WriteBrackets();
-        }
-
-        public override void WriteAutomaticPropertyGetSet()
-        {
-            WriteLine("get; set;");
-        }
-        public override IDisposable WritePropertyGet()
-        {
-            WriteLine("get");
-            return WriteBrackets();
-        }
-
-        public override IDisposable WritePropertySet()
-        {
-            WriteLine("set");
-            return WriteBrackets();
-        }
-
-        public override void WriteField(SpecificationDefinition specificationDefinition, string name, string fieldType)
-        {
-            WriteFieldOrProperty(specificationDefinition, name, fieldType);
-            WriteLine(";");
-        }
-
-        public override void WritePropertyWithBackingField(SpecificationDefinition specificationDefinition, string name, string propertyType, bool privateSetter)
-        {
-            WriteFieldOrProperty(specificationDefinition, name, propertyType);
-            WriteLine("{{ get; {0}set; }}", privateSetter ? "private " : string.Empty);
-        }
-
-        public override void WriteEvent(SpecificationDefinition specificationDefinition, string name, string eventDelegate)
-        {
-            WriteFieldOrProperty(specificationDefinition | SpecificationDefinition.Event, name, eventDelegate);
-            WriteLine(";");
-        }
-
-        public override IDisposable WriteIf(string expression)
-        {
-            WriteLine("if ({0})", expression);
-            return WriteBrackets();
-        }
-
-
-        /// <summary>
-        /// Writes the raw if.
-        /// </summary>
-        /// <param name="expression">The expression.</param>
-        public override void WriteRawIf(string expression)
-        {
-            WriteLine("if ({0})", expression);
-            WriteLine("{");
-        }
-
-        /// <summary>
-        /// Writes the raw else.
-        /// </summary>
-        public override void WriteRawElse()
-        {
-            WriteLine("}");
-            WriteLine("else");
-            WriteLine("{");
-        }
-
-        /// <summary>
-        /// Writes the raw endif.
-        /// </summary>
-        public override void WriteRawEndif()
-        {
-            WriteLine("}");
-        }
-
-        /// <summary>
-        /// Writes the enum.
-        /// </summary>
-        /// <param name="specificationDefinition">The specification definition.</param>
-        /// <param name="name">The name.</param>
-        /// <returns></returns>
-        public override IDisposable WriteEnum(SpecificationDefinition specificationDefinition, string name)
-        {
-            WriteLine("{0}enum {1}", GetProtectionSpecifications(specificationDefinition), name);
-            return WriteBrackets();
-        }
-
-        #endregion
-
-        #region Code generation - Language construction
-
-        protected bool HasSpecification(SpecificationDefinition specificationDefinition, SpecificationDefinition test)
-        {
-            return (specificationDefinition & test) != 0;
-        }
-
-        protected virtual string GetSpecifications(SpecificationDefinition specificationDefinition)
-        {
-            var literalSpecifications = new List<string>();
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Internal))
-                literalSpecifications.Add("internal");
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Private))
-                literalSpecifications.Add("private");
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Protected))
-                literalSpecifications.Add("protected");
-
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Abstract))
-                literalSpecifications.Add("abstract");
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Virtual))
-                literalSpecifications.Add("virtual");
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Override))
-                literalSpecifications.Add("override");
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.New))
-                literalSpecifications.Add("new");
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Static))
-                literalSpecifications.Add("static");
-
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Partial))
-                literalSpecifications.Add("partial");
-
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Out))
-            {
-                if (HasSpecification(specificationDefinition, SpecificationDefinition.In))
-                    literalSpecifications.Add("ref");
-                else
-                    literalSpecifications.Add("out");
-            }
-
-            if (HasSpecification(specificationDefinition, SpecificationDefinition.Event))
-                literalSpecifications.Add("event");
-
-            string result = string.Join(" ", literalSpecifications.ToArray());
-            if (!string.IsNullOrEmpty(result))
-                result += " ";
-            return result;
-        }
-
-        protected virtual string GetProtectionSpecifications(SpecificationDefinition specificationDefinition)
-        {
-            string literalSpecifications = GetSpecifications(specificationDefinition & SpecificationDefinition.ProtectionClass);
-            if (string.IsNullOrEmpty(literalSpecifications))
-                literalSpecifications = "public ";
-            return literalSpecifications;
-        }
-
-        protected virtual string GetInheritanceSpecifications(SpecificationDefinition specificationDefinition)
-        {
-            return GetSpecifications(specificationDefinition & SpecificationDefinition.InheritanceClass);
-        }
-
-        protected virtual string GetDomainSpecifications(SpecificationDefinition specificationDefinition)
-        {
-            return GetSpecifications(specificationDefinition & SpecificationDefinition.DomainClass);
-        }
-
-        protected virtual string GetDirectionSpecifications(SpecificationDefinition specificationDefinition)
-        {
-            return GetSpecifications(specificationDefinition & SpecificationDefinition.DirectionClass);
-        }
-
-        protected virtual string GetAttribute(AttributeDefinition attributeDefinition)
-        {
-            if (attributeDefinition.Members.Count == 0)
-                return string.Format("[{0}]", attributeDefinition.Name);
-            var attributeLineBuilder = new StringBuilder(1024);
-
-            attributeLineBuilder.AppendFormat("[{0}(", attributeDefinition.Name);
-            var members = new List<string>();
-            foreach (var keyValue in attributeDefinition.Members)
-                members.Add(string.Format("{0} = {1}", keyValue.Key, GetLiteralValue(keyValue.Value)));
-            attributeLineBuilder.Append(string.Join(", ", members.ToArray()));
-            attributeLineBuilder.Append(")]");
-
-            return attributeLineBuilder.ToString();
-        }
-
-        public override string GetGenericName(string baseName, string type)
-        {
-            return string.Format("{0}<{1}>", baseName, type);
-        }
-
-        public override string GetCastExpression(string value, string castType, bool hardCast)
-        {
-            string format = hardCast ? "({1}){0}" : "{0} as {1}";
-            string literalCast = string.Format(format, value, castType);
-            return literalCast;
-        }
-
-        public override string GetLiteralValue(object value)
-        {
-            if (value is bool)
-                return ((bool)value) ? "true" : "false";
-            if (value is string)
-                return string.Format("\"{0}\"", ((string)value).Replace("\"", "\\\""));
-            return base.GetLiteralValue(value);
-        }
-
-        public virtual string GetTypeNickName(Type type)
-        {
-            if (type == typeof(char))
-                return "char";
-            if (type == typeof(string))
-                return "string";
-
-            if (type == typeof(byte))
-                return "byte";
-            if (type == typeof(sbyte))
-                return "sbyte";
-            if (type == typeof(short))
-                return "short";
-            if (type == typeof(ushort))
-                return "ushort";
-            if (type == typeof(int))
-                return "int";
-            if (type == typeof(uint))
-                return "uint";
-            if (type == typeof(long))
-                return "long";
-            if (type == typeof(ulong))
-                return "ulong";
-
-            if (type == typeof(float))
-                return "float";
-            if (type == typeof(double))
-                return "double";
-            if (type == typeof(decimal))
-                return "decimal";
-
-            if (type == typeof(bool))
-                return "bool";
-            if (type == typeof(object))
-                return "object";
-
-            return type.Name;
-        }
-
-        protected static readonly string[] Keywords = 
-            {
-                "int", "uint","ubyte", "byte", "short", "ushort", "char"
-                ,"decimal", "float", "double"
-                ,"string", "DateTime"
-                , "void", "object"
-
-                ,"private", "protected", "public", "internal"
-                ,"override", "virtual", "abstract", "partial", "static", "sealed", "readonly"
-                ,"class", "struct", "namespace", "enum", "interface", "using", "const", "enum"
-
-                ,"return", "if", "while", "for", "foreach"
-                ,"yield", "break", "goto", "switch", "case", "default"
-
-                , "as", "catch", "continue", "default", "delegate", "do"
-                , "else", "false", "true", "fixed", "finally", "in", "is", "lock"
-                , "new", "null", "out", "ref", "sizeof", "stackalloc", "throw", "typeof"
-            };
-
-        protected virtual bool IsKeyword(string name)
-        {
-            return Keywords.Contains(name);
-        }
-
-        public override string GetVariableExpression(string name)
-        {
-            if (IsKeyword(name))
-                return "@" + name;
-            return name;
-        }
-
-        public override string GetLiteralType(Type type)
-        {
-            if (type == null)
-                return null;
-            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
-                return string.Format("{0}?", GetTypeNickName(type.GetGenericArguments()[0]));
-            return GetTypeNickName(type);
-        }
-
-        public override string GetArray(string array, string literalIndex)
-        {
-            return string.Format("{0}[{1}]", array, literalIndex);
-        }
-
-        public override string GetStatement(string expression)
-        {
-            return expression + ";";
-        }
-
-        public override string GetXOrExpression(string a, string b)
-        {
-            return string.Format("{0} ^ {1}", a, b);
-        }
-
-        public override string GetAndExpression(string a, string b)
-        {
-            return string.Format("{0} && {1}", a, b);
-        }
-
-        public override string GetPropertySetValueExpression()
-        {
-            return "value";
-        }
-
-        public override string GetNullExpression()
-        {
-            return "null";
-        }
-
-        public override string GetDifferentExpression(string a, string b)
-        {
-            return string.Format("{0} != {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the equal expression.
-        /// </summary>
-        /// <param name="a">A.</param>
-        /// <param name="b">The b.</param>
-        /// <returns></returns>
-        public override string GetEqualExpression(string a, string b)
-        {
-            return string.Format("{0} == {1}", a, b);
-        }
-
-        /// <summary>
-        /// Gets the ternary expression.
-        /// </summary>
-        /// <param name="conditionExpression">The condition expression.</param>
-        /// <param name="trueExpression">The true expression.</param>
-        /// <param name="falseExpression">The false expression.</param>
-        /// <returns></returns>
-        public override string GetTernaryExpression(string conditionExpression, string trueExpression, string falseExpression)
-        {
-            return string.Format("{0} ? {1} : {2}", conditionExpression, trueExpression, falseExpression);
-        }
-
-        public override string GetNullValueExpression(string literalType)
-        {
-            return string.Format("default({0})", literalType);
-        }
-
-        /// <summary>
-        /// Returns a code that throw the given expression
-        /// </summary>
-        /// <param name="throwExpression"></param>
-        /// <returns></returns>
-        public override string GetThrowStatement(string throwExpression)
-        {
-            return string.Format("throw {0};", throwExpression);
-        }
-
-        /// <summary>
-        /// Returns a declaration and assignement expression
-        /// </summary>
-        /// <param name="variableType"></param>
-        /// <param name="variableName"></param>
-        /// <param name="expression"></param>
-        /// <returns></returns>
-        public override string GetVariableDeclarationInitialization(string variableType, string variableName, string expression)
-        {
-            //return string.Format("{0} {1} = {2}", variableType, variableName, expression);
-            // we can do this since we generate for C# 3
-            return string.Format("var {0} = {1}", variableName, expression);
-        }
-
-        #endregion
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace DbMetal.Generator.Implementation.CodeTextGenerator
+{
+    /// <summary>
+    /// C# Code writer
+    /// </summary>
+    class CSCodeWriter : CodeWriter
+    {
+        public string Indent { get; set; }
+        public string Unindent { get; set; }
+
+        private readonly bool trimSpaces;
+
+        public CSCodeWriter(TextWriter textWriter, bool trimSpaces)
+            : base(textWriter)
+        {
+            this.trimSpaces = trimSpaces;
+            Indent = "{";
+            Unindent = "}";
+        }
+
+        public CSCodeWriter(TextWriter textWriter)
+            : this(textWriter, true)
+        {
+        }
+
+        protected override bool MustIndent(string line)
+        {
+            return line.StartsWith(Indent);
+        }
+
+        protected override bool MustUnindent(string line)
+        {
+            return line.StartsWith(Unindent);
+        }
+
+        protected override string Trim(string line)
+        {
+            if (trimSpaces)
+                return line.Trim();
+            return line.TrimEnd();
+        }
+
+        #region Code generation - Language write
+
+        public override void WriteCommentLine(string line)
+        {
+            WriteLine("// {0}", line);
+        }
+
+        protected virtual IDisposable WriteBrackets()
+        {
+            WriteLine("{");
+            return EndAction(() => WriteLine("}"));
+        }
+
+        IDisposable WriteBrackets(string endif)
+        {
+            WriteLine("{");
+            return EndAction(() => { WriteLine("}"); WriteLine(endif); });
+        }
+
+        /// <summary>
+        /// We keep track of namespaces written already once
+        /// </summary>
+        private readonly IList<string> writtenNamespaces = new List<string>();
+
+        public override void WriteUsingNamespace(string name)
+        {
+            if (writtenNamespaces.Contains(name))
+                return;
+
+            writtenNamespaces.Add(name);
+            WriteLine("using {0};", name);
+        }
+
+        public override IDisposable WriteNamespace(string name)
+        {
+            WriteLine("namespace {0}", name);
+            return WriteBrackets();
+        }
+
+        public override IDisposable WriteClass(SpecificationDefinition specificationDefinition, string name, string baseClass, params string[] interfaces)
+        {
+            var classLineBuilder = new StringBuilder(1024);
+
+            classLineBuilder.Append(GetProtectionSpecifications(specificationDefinition));
+            classLineBuilder.Append(GetDomainSpecifications(specificationDefinition));
+            classLineBuilder.Append(GetInheritanceSpecifications(specificationDefinition));
+
+            var bases = new List<string>();
+            if (!string.IsNullOrEmpty(baseClass))
+                bases.Add(baseClass);
+            bases.AddRange(interfaces);
+
+            classLineBuilder.AppendFormat("class {0}", name);
+            if (bases.Count > 0)
+            {
+                classLineBuilder.Append(" : ");
+                classLineBuilder.Append(string.Join(", ", bases.ToArray()));
+            }
+            WriteLine(classLineBuilder.ToString());
+
+            return WriteBrackets();
+        }
+
+        public override IDisposable WriteRegion(string name)
+        {
+            WriteLine("#region {0}", name);
+            WriteLine();
+            return EndAction(delegate { WriteLine(); WriteLine("#endregion"); WriteLine(); });
+        }
+
+        public override IDisposable WriteAttribute(AttributeDefinition attributeDefinition)
+        {
+            if (attributeDefinition != null)
+                WriteLine(GetAttribute(attributeDefinition));
+            return null;
+        }
+
+        protected virtual IDisposable WriteGeneralMethod(SpecificationDefinition specificationDefinition, string name,
+                                                bool hasReturnType, Type returnType,
+                                                IList<ParameterDefinition> parameters, IList<string> baseCallParameters)
+        {
+            bool monoStrict = baseCallParameters != null && baseCallParameters.Count > 0 &&
+                parameters.Any(p => p.Type == typeof(DbLinq.Vendor.IVendor));
+
+            var methodLineBuilder = new StringBuilder(1024);
+
+            if (monoStrict)
+                methodLineBuilder.Append("#if !MONO_STRICT")
+                    .AppendLine();
+            methodLineBuilder.Append(GetProtectionSpecifications(specificationDefinition));
+            methodLineBuilder.Append(GetDomainSpecifications(specificationDefinition));
+            methodLineBuilder.Append(GetInheritanceSpecifications(specificationDefinition));
+
+            if (hasReturnType)
+                methodLineBuilder.AppendFormat("{0} {1}(", GetLiteralType(returnType) ?? "void", name);
+            else
+                methodLineBuilder.AppendFormat("{0}(", name);
+            var literalParameters = new List<string>();
+            foreach (var parameter in parameters)
+            {
+                string literalParameter = string.Format("{0}{3}{1} {2}",
+                                                        parameter.Attribute != null ? GetAttribute(parameter.Attribute) + " " : string.Empty,
+                                                        parameter.LiteralType ?? GetLiteralType(parameter.Type),
+                                                        parameter.Name,
+                                                        GetDirectionSpecifications(parameter.SpecificationDefinition));
+                literalParameters.Add(literalParameter);
+            }
+            methodLineBuilder.AppendFormat("{0})", string.Join(", ", literalParameters.ToArray()));
+            if (baseCallParameters != null && baseCallParameters.Count > 0)
+            {
+                methodLineBuilder.AppendLine();
+                bool strictArgs = parameters.Count != baseCallParameters.Count;
+                if (strictArgs)
+                    methodLineBuilder.Append("#if MONO_STRICT")
+                        .AppendLine()
+                        .AppendFormat("\t: base({0})", string.Join(", ", baseCallParameters.Take(parameters.Count).ToArray()))
+                        .AppendLine()
+                        .Append("#else   // MONO_STRICT")
+                        .AppendLine();
+                methodLineBuilder.AppendFormat("\t: base({0})", string.Join(", ", baseCallParameters.ToArray()));
+                if (strictArgs)
+                    methodLineBuilder.AppendLine()
+                        .Append("#endif  // MONO_STRICT");
+            }
+            WriteLine(methodLineBuilder.ToString());
+            return monoStrict ? WriteBrackets("#endif  // !MONO_STRICT") : WriteBrackets();
+        }
+
+        public override IDisposable WriteCtor(SpecificationDefinition specificationDefinition, string name,
+                                                ParameterDefinition[] parameters, IList<string> baseCallParameters)
+        {
+            return WriteGeneralMethod(specificationDefinition, name, false, null, parameters, baseCallParameters);
+        }
+
+        public override IDisposable WriteMethod(SpecificationDefinition specificationDefinition, string name, Type returnType,
+                                                params ParameterDefinition[] parameters)
+        {
+            return WriteGeneralMethod(specificationDefinition, name, true, returnType, parameters, null);
+        }
+
+        protected void WriteFieldOrProperty(SpecificationDefinition specificationDefinition, string name, string memberType)
+        {
+            var methodLineBuilder = new StringBuilder(1024);
+
+            methodLineBuilder.Append(GetProtectionSpecifications(specificationDefinition));
+            methodLineBuilder.Append(GetDomainSpecifications(specificationDefinition));
+            methodLineBuilder.Append(GetInheritanceSpecifications(specificationDefinition));
+            methodLineBuilder.Append(GetSpecifications(specificationDefinition & SpecificationDefinition.Event));
+
+            methodLineBuilder.AppendFormat("{0} {1}", memberType, GetVariableExpression(name));
+
+            Write(methodLineBuilder.ToString());
+        }
+
+        public override IDisposable WriteProperty(SpecificationDefinition specificationDefinition, string name, string propertyType)
+        {
+            WriteFieldOrProperty(specificationDefinition, name, propertyType);
+            WriteLine();
+            return WriteBrackets();
+        }
+
+        public override void WriteAutomaticPropertyGetSet()
+        {
+            WriteLine("get; set;");
+        }
+        public override IDisposable WritePropertyGet()
+        {
+            WriteLine("get");
+            return WriteBrackets();
+        }
+
+        public override IDisposable WritePropertySet()
+        {
+            WriteLine("set");
+            return WriteBrackets();
+        }
+
+        public override void WriteField(SpecificationDefinition specificationDefinition, string name, string fieldType)
+        {
+            WriteFieldOrProperty(specificationDefinition, name, fieldType);
+            WriteLine(";");
+        }
+
+        public override void WritePropertyWithBackingField(SpecificationDefinition specificationDefinition, string name, string propertyType, bool privateSetter)
+        {
+            WriteFieldOrProperty(specificationDefinition, name, propertyType);
+            WriteLine("{{ get; {0}set; }}", privateSetter ? "private " : string.Empty);
+        }
+
+        public override void WriteEvent(SpecificationDefinition specificationDefinition, string name, string eventDelegate)
+        {
+            WriteFieldOrProperty(specificationDefinition | SpecificationDefinition.Event, name, eventDelegate);
+            WriteLine(";");
+        }
+
+        public override IDisposable WriteIf(string expression)
+        {
+            WriteLine("if ({0})", expression);
+            return WriteBrackets();
+        }
+
+
+        /// <summary>
+        /// Writes the raw if.
+        /// </summary>
+        /// <param name="expression">The expression.</param>
+        public override void WriteRawIf(string expression)
+        {
+            WriteLine("if ({0})", expression);
+            WriteLine("{");
+        }
+
+        /// <summary>
+        /// Writes the raw else.
+        /// </summary>
+        public override void WriteRawElse()
+        {
+            WriteLine("}");
+            WriteLine("else");
+            WriteLine("{");
+        }
+
+        /// <summary>
+        /// Writes the raw endif.
+        /// </summary>
+        public override void WriteRawEndif()
+        {
+            WriteLine("}");
+        }
+
+        /// <summary>
+        /// Writes the enum.
+        /// </summary>
+        /// <param name="specificationDefinition">The specification definition.</param>
+        /// <param name="name">The name.</param>
+        /// <returns></returns>
+        public override IDisposable WriteEnum(SpecificationDefinition specificationDefinition, string name)
+        {
+            WriteLine("{0}enum {1}", GetProtectionSpecifications(specificationDefinition), name);
+            return WriteBrackets();
+        }
+
+        #endregion
+
+        #region Code generation - Language construction
+
+        protected bool HasSpecification(SpecificationDefinition specificationDefinition, SpecificationDefinition test)
+        {
+            return (specificationDefinition & test) != 0;
+        }
+
+        protected virtual string GetSpecifications(SpecificationDefinition specificationDefinition)
+        {
+            var literalSpecifications = new List<string>();
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Internal))
+                literalSpecifications.Add("internal");
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Private))
+                literalSpecifications.Add("private");
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Protected))
+                literalSpecifications.Add("protected");
+
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Abstract))
+                literalSpecifications.Add("abstract");
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Virtual))
+                literalSpecifications.Add("virtual");
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Override))
+                literalSpecifications.Add("override");
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.New))
+                literalSpecifications.Add("new");
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Static))
+                literalSpecifications.Add("static");
+
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Partial))
+                literalSpecifications.Add("partial");
+
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Out))
+            {
+                if (HasSpecification(specificationDefinition, SpecificationDefinition.In))
+                    literalSpecifications.Add("ref");
+                else
+                    literalSpecifications.Add("out");
+            }
+
+            if (HasSpecification(specificationDefinition, SpecificationDefinition.Event))
+                literalSpecifications.Add("event");
+
+            string result = string.Join(" ", literalSpecifications.ToArray());
+            if (!string.IsNullOrEmpty(result))
+                result += " ";
+            return result;
+        }
+
+        protected virtual string GetProtectionSpecifications(SpecificationDefinition specificationDefinition)
+        {
+            string literalSpecifications = GetSpecifications(specificationDefinition & SpecificationDefinition.ProtectionClass);
+            if (string.IsNullOrEmpty(literalSpecifications))
+                literalSpecifications = "public ";
+            return literalSpecifications;
+        }
+
+        protected virtual string GetInheritanceSpecifications(SpecificationDefinition specificationDefinition)
+        {
+            return GetSpecifications(specificationDefinition & SpecificationDefinition.InheritanceClass);
+        }
+
+        protected virtual string GetDomainSpecifications(SpecificationDefinition specificationDefinition)
+        {
+            return GetSpecifications(specificationDefinition & SpecificationDefinition.DomainClass);
+        }
+
+        protected virtual string GetDirectionSpecifications(SpecificationDefinition specificationDefinition)
+        {
+            return GetSpecifications(specificationDefinition & SpecificationDefinition.DirectionClass);
+        }
+
+        protected virtual string GetAttribute(AttributeDefinition attributeDefinition)
+        {
+            if (attributeDefinition.Members.Count == 0)
+                return string.Format("[{0}]", attributeDefinition.Name);
+            var attributeLineBuilder = new StringBuilder(1024);
+
+            attributeLineBuilder.AppendFormat("[{0}(", attributeDefinition.Name);
+            var members = new List<string>();
+            foreach (var keyValue in attributeDefinition.Members)
+                members.Add(string.Format("{0} = {1}", keyValue.Key, GetLiteralValue(keyValue.Value)));
+            attributeLineBuilder.Append(string.Join(", ", members.ToArray()));
+            attributeLineBuilder.Append(")]");
+
+            return attributeLineBuilder.ToString();
+        }
+
+        public override string GetGenericName(string baseName, string type)
+        {
+            return string.Format("{0}<{1}>", baseName, type);
+        }
+
+        public override string GetCastExpression(string value, string castType, bool hardCast)
+        {
+            string format = hardCast ? "({1}){0}" : "{0} as {1}";
+            string literalCast = string.Format(format, value, castType);
+            return literalCast;
+        }
+
+        public override string GetLiteralValue(object value)
+        {
+            if (value is bool)
+                return ((bool)value) ? "true" : "false";
+            if (value is string)
+                return string.Format("\"{0}\"", ((string)value).Replace("\"", "\\\""));
+            return base.GetLiteralValue(value);
+        }
+
+        public virtual string GetTypeNickName(Type type)
+        {
+            if (type == typeof(char))
+                return "char";
+            if (type == typeof(string))
+                return "string";
+
+            if (type == typeof(byte))
+                return "byte";
+            if (type == typeof(sbyte))
+                return "sbyte";
+            if (type == typeof(short))
+                return "short";
+            if (type == typeof(ushort))
+                return "ushort";
+            if (type == typeof(int))
+                return "int";
+            if (type == typeof(uint))
+                return "uint";
+            if (type == typeof(long))
+                return "long";
+            if (type == typeof(ulong))
+                return "ulong";
+
+            if (type == typeof(float))
+                return "float";
+            if (type == typeof(double))
+                return "double";
+            if (type == typeof(decimal))
+                return "decimal";
+
+            if (type == typeof(bool))
+                return "bool";
+            if (type == typeof(object))
+                return "object";
+
+            return type.Name;
+        }
+
+        protected static readonly string[] Keywords = 
+            {
+                "int", "uint","ubyte", "byte", "short", "ushort", "char"
+                ,"decimal", "float", "double"
+                ,"string", "DateTime"
+                , "void", "object"
+
+                ,"private", "protected", "public", "internal"
+                ,"override", "virtual", "abstract", "partial", "static", "sealed", "readonly"
+                ,"class", "struct", "namespace", "enum", "interface", "using", "const", "enum"
+
+                ,"return", "if", "while", "for", "foreach"
+                ,"yield", "break", "goto", "switch", "case", "default"
+
+                , "as", "catch", "continue", "default", "delegate", "do"
+                , "else", "false", "true", "fixed", "finally", "in", "is", "lock"
+                , "new", "null", "out", "ref", "sizeof", "stackalloc", "throw", "typeof"
+            };
+
+        protected virtual bool IsKeyword(string name)
+        {
+            return Keywords.Contains(name);
+        }
+
+        public override string GetVariableExpression(string name)
+        {
+            if (IsKeyword(name))
+                return "@" + name;
+            return name;
+        }
+
+        public override string GetLiteralType(Type type)
+        {
+            if (type == null)
+                return null;
+            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
+                return string.Format("{0}?", GetTypeNickName(type.GetGenericArguments()[0]));
+            return GetTypeNickName(type);
+        }
+
+        public override string GetArray(string array, string literalIndex)
+        {
+            return string.Format("{0}[{1}]", array, literalIndex);
+        }
+
+        public override string GetStatement(string expression)
+        {
+            return expression + ";";
+        }
+
+        public override string GetXOrExpression(string a, string b)
+        {
+            return string.Format("{0} ^ {1}", a, b);
+        }
+
+        public override string GetAndExpression(string a, string b)
+        {
+            return string.Format("{0} && {1}", a, b);
+        }
+
+        public override string GetPropertySetValueExpression()
+        {
+            return "value";
+        }
+
+        public override string GetNullExpression()
+        {
+            return "null";
+        }
+
+        public override string GetDifferentExpression(string a, string b)
+        {
+            return string.Format("{0} != {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the equal expression.
+        /// </summary>
+        /// <param name="a">A.</param>
+        /// <param name="b">The b.</param>
+        /// <returns></returns>
+        public override string GetEqualExpression(string a, string b)
+        {
+            return string.Format("{0} == {1}", a, b);
+        }
+
+        /// <summary>
+        /// Gets the ternary expression.
+        /// </summary>
+        /// <param name="conditionExpression">The condition expression.</param>
+        /// <param name="trueExpression">The true expression.</param>
+        /// <param name="falseExpression">The false expression.</param>
+        /// <returns></returns>
+        public override string GetTernaryExpression(string conditionExpression, string trueExpression, string falseExpression)
+        {
+            return string.Format("{0} ? {1} : {2}", conditionExpression, trueExpression, falseExpression);
+        }
+
+        public override string GetNullValueExpression(string literalType)
+        {
+            return string.Format("default({0})", literalType);
+        }
+
+        /// <summary>
+        /// Returns a code that throw the given expression
+        /// </summary>
+        /// <param name="throwExpression"></param>
+        /// <returns></returns>
+        public override string GetThrowStatement(string throwExpression)
+        {
+            return string.Format("throw {0};", throwExpression);
+        }
+
+        /// <summary>
+        /// Returns a declaration and assignement expression
+        /// </summary>
+        /// <param name="variableType"></param>
+        /// <param name="variableName"></param>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public override string GetVariableDeclarationInitialization(string variableType, string variableName, string expression)
+        {
+            //return string.Format("{0} {1} = {2}", variableType, variableName, expression);
+            // we can do this since we generate for C# 3
+            return string.Format("var {0} = {1}", variableName, expression);
+        }
+
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Class.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Class.cs
@@ -1,801 +1,801 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data.Linq.Mapping;
-using System.Diagnostics;
-using System.Linq;
-using DbLinq.Schema.Dbml;
-using DbLinq.Schema.Dbml.Adapter;
-using DbLinq.Util;
-using DbMetal.Generator.EntityInterface;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#else
-using DbLinq.Data.Linq;
-#endif
-
-namespace DbMetal.Generator.Implementation.CodeTextGenerator
-{
-#if !MONO_STRICT
-    public
-#endif
-    partial class CodeGenerator
-    {
-        protected virtual void WriteClasses(CodeWriter writer, Database schema, GenerationContext context)
-        {
-            IEnumerable<Table> tables = schema.Tables;
-
-            var types = context.Parameters.GenerateTypes;
-            if (types.Count > 0)
-                tables = tables.Where(t => types.Contains(t.Type.Name));
-
-            foreach (var table in tables)
-                WriteClass(writer, table, schema, context);
-        }
-
-        protected virtual void WriteClass(CodeWriter writer, Table table, Database schema, GenerationContext context)
-        {
-            writer.WriteLine();
-
-            string entityBase = context.Parameters.EntityBase;
-            if (string.IsNullOrEmpty(entityBase))
-                entityBase = schema.EntityBase;
-
-            var specifications = SpecificationDefinition.Partial;
-            if (table.Type.AccessModifierSpecified)
-                specifications |= GetSpecificationDefinition(table.Type.AccessModifier);
-            else
-                specifications |= SpecificationDefinition.Public;
-            if (table.Type.ModifierSpecified)
-                specifications |= GetSpecificationDefinition(table.Type.Modifier);
-
-            var tableAttribute = NewAttributeDefinition<TableAttribute>();
-            tableAttribute["Name"] = table.Name;
-            using (writer.WriteAttribute(tableAttribute))
-            using (writer.WriteClass(specifications,
-                                     table.Type.Name, entityBase, context.Parameters.EntityInterfaces))
-            {
-                WriteClassHeader(writer, table, context);
-                WriteCustomTypes(writer, table, schema, context);
-                WriteClassExtensibilityDeclarations(writer, table, context);
-                WriteClassProperties(writer, table, context);
-                if (context.Parameters.GenerateEqualsHash)
-                    WriteClassEqualsAndHash(writer, table, context);
-                WriteClassChildren(writer, table, schema, context);
-                WriteClassParents(writer, table, schema, context);
-                WriteClassChildrenAttachment(writer, table, schema, context);
-                WriteClassCtor(writer, table, schema, context);
-            }
-        }
-
-        protected virtual void WriteClassEqualsAndHash(CodeWriter writer, Table table, GenerationContext context)
-        {
-            List<DbLinq.Schema.Dbml.Column> primaryKeys = table.Type.Columns.Where(c => c.IsPrimaryKey).ToList();
-            if (primaryKeys.Count == 0)
-            {
-                writer.WriteLine("#warning L189 table {0} has no primary key. Multiple C# objects will refer to the same row.",
-                                 table.Name);
-                return;
-            }
-
-            using (writer.WriteRegion(string.Format("GetHashCode(), Equals() - uses column {0} to look up objects in liveObjectMap",
-                                                    string.Join(", ", primaryKeys.Select(pk => pk.Member).ToList().ToArray()))))
-            {
-                // GetHashCode
-                using (writer.WriteMethod(SpecificationDefinition.Public | SpecificationDefinition.Override,
-                                          "GetHashCode", typeof(int)))
-                {
-                    string hashCode = null;
-
-                    foreach (var primaryKey in primaryKeys)
-                    {
-                        var member = writer.GetVariableExpression(primaryKey.Storage);
-                        string primaryKeyHashCode = writer.GetMethodCallExpression(writer.GetMemberExpression(member, "GetHashCode"));
-                        if (primaryKey.CanBeNull
-                        || GetType(primaryKey.Type, false).IsClass) // this patch to ensure that even if DB does not allow nulls,
-                        // our in-memory object won't generate a fault
-                        {
-                            var isNullExpression = writer.GetEqualExpression(member, writer.GetNullExpression());
-                            var nullExpression = writer.GetLiteralValue(0);
-                            primaryKeyHashCode = "(" + writer.GetTernaryExpression(isNullExpression, nullExpression, primaryKeyHashCode) + ")";
-                        }
-                        if (string.IsNullOrEmpty(hashCode))
-                            hashCode = primaryKeyHashCode;
-                        else
-                            hashCode = writer.GetXOrExpression(hashCode, primaryKeyHashCode);
-                    }
-                    writer.WriteLine(writer.GetReturnStatement(hashCode));
-                }
-                writer.WriteLine();
-
-                // Equals
-                string otherAsObject = "o";
-                using (writer.WriteMethod(SpecificationDefinition.Public | SpecificationDefinition.Override,
-                                          "Equals", typeof(bool), new ParameterDefinition { Type = typeof(object), Name = otherAsObject }))
-                {
-                    string other = "other";
-                    writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
-                                                             writer.GetDeclarationExpression(other, table.Type.Name),
-                                                             writer.GetCastExpression(otherAsObject, table.Type.Name,
-                                                                                      false))));
-                    using (writer.WriteIf(writer.GetEqualExpression(other, writer.GetNullExpression())))
-                    {
-                        writer.WriteLine(writer.GetReturnStatement(writer.GetLiteralValue(false)));
-                    }
-                    string andExpression = null;
-                    foreach (var primaryKey in primaryKeys)
-                    {
-                        var member = writer.GetVariableExpression(primaryKey.Storage);
-                        string primaryKeyTest = writer.GetMethodCallExpression(
-                                writer.GetMemberExpression(
-                                    writer.GetMemberExpression(
-                                        writer.GetGenericName("System.Collections.Generic.EqualityComparer", primaryKey.Type),
-                                        "Default"),
-                                    "Equals"),
-                                member,
-                                writer.GetMemberExpression(other, member));
-                        if (string.IsNullOrEmpty(andExpression))
-                            andExpression = primaryKeyTest;
-                        else
-                            andExpression = writer.GetAndExpression(andExpression, primaryKeyTest);
-                    }
-                    writer.WriteLine(writer.GetReturnStatement(andExpression));
-                }
-            }
-        }
-
-        /// <summary>
-        /// Class headers are written at top of class
-        /// They consist in specific headers writen by interface implementors
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="table"></param>
-        /// <param name="context"></param>
-        private void WriteClassHeader(CodeWriter writer, Table table, GenerationContext context)
-        {
-            foreach (IImplementation implementation in context.Implementations())
-                implementation.WriteClassHeader(writer, table, context);
-        }
-
-        protected virtual void WriteClassExtensibilityDeclarations(CodeWriter writer, Table table, GenerationContext context)
-        {
-            using (writer.WriteRegion("Extensibility Method Definitions"))
-            {
-                writer.WriteLine("partial void OnCreated();");
-                foreach (var c in table.Type.Columns)
-                {
-                    writer.WriteLine("partial void On{0}Changed();", c.Member);
-                    writer.WriteLine("partial void On{0}Changing({1} value);", c.Member, GetTypeOrExtendedType(writer, c));
-                }
-            }
-        }
-
-        /// <summary>
-        /// Writes all properties, depending on the use (simple property or FK)
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="table"></param>
-        /// <param name="context"></param>
-        protected virtual void WriteClassProperties(CodeWriter writer, Table table, GenerationContext context)
-        {
-            foreach (var property in table.Type.Columns)
-            {
-                var property1 = property;
-                var relatedAssociations = from a in table.Type.Associations
-                                          where a.IsForeignKey
-                                          && a.TheseKeys.Contains(property1.Name)
-                                          select a;
-                WriteClassProperty(writer, property, relatedAssociations, context);
-            }
-        }
-
-        protected virtual string GetTypeOrExtendedType(CodeWriter writer, Column property)
-        {
-            object extendedType = property.ExtendedType;
-            var enumType = extendedType as EnumType;
-            if (enumType != null)
-                return writer.GetEnumType(enumType.Name);
-            return writer.GetLiteralType(GetType(property.Type, property.CanBeNull));
-        }
-
-        /// <summary>
-        /// Writes class property
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="property"></param>
-        /// <param name="relatedAssociations">non null if property is a FK</param>
-        /// <param name="context"></param>
-        protected virtual void WriteClassProperty(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context)
-        {
-            using (writer.WriteRegion(string.Format("{0} {1}", GetTypeOrExtendedType(writer, property), property.Member)))
-            {
-                WriteClassPropertyBackingField(writer, property, context);
-                WriteClassPropertyAccessors(writer, property, relatedAssociations, context);
-            }
-        }
-
-        protected virtual void WriteClassPropertyBackingField(CodeWriter writer, Column property, GenerationContext context)
-        {
-            //AttributeDefinition autoGenAttribute = null;
-            //if (property.IsDbGenerated)
-            //    autoGenAttribute = NewAttributeDefinition<AutoGenIdAttribute>();
-            //using (writer.WriteAttribute(autoGenAttribute))
-            // for auto-properties, we just won't generate a private field
-            if (property.Storage != null)
-                writer.WriteField(SpecificationDefinition.Private, property.Storage, GetTypeOrExtendedType(writer, property));
-        }
-
-        /// <summary>
-        /// Returns a name from a given fullname
-        /// </summary>
-        /// <param name="fullName"></param>
-        /// <returns></returns>
-        protected virtual string GetName(string fullName)
-        {
-            var namePartIndex = fullName.LastIndexOf('.');
-            // if we have a dot, we have a namespace
-            if (namePartIndex > 0)
-                return fullName.Substring(namePartIndex + 1);
-            // otherwise, it's just a name, that we keep as is
-            return fullName;
-        }
-
-        /// <summary>
-        /// Returns name for given list of attributes
-        /// </summary>
-        /// <param name="context"></param>
-        /// <param name="attributes"></param>
-        /// <returns></returns>
-        protected virtual string[] GetAttributeNames(GenerationContext context, IEnumerable<string> attributes)
-        {
-            return (from a in attributes select GetName(a)).ToArray();
-        }
-
-        private class EnumFullname
-        {
-            private string _EnumName;
-            private object _EnumValue;
-
-            public EnumFullname(string enumName, object enumValue)
-            {
-                _EnumName = enumName;
-                _EnumValue = enumValue;
-            }
-
-            public override string ToString()
-            {
-                return string.Format("{0}.{1}", _EnumName, _EnumValue.ToString());
-            }
-        }
-
-        /// <summary>
-        /// Writes property accessor
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="property"></param>
-        /// <param name="relatedAssociations"></param>
-        /// <param name="context"></param>
-        protected virtual void WriteClassPropertyAccessors(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context)
-        {
-            //generate [Column(...)] attribute
-            var column = NewAttributeDefinition<ColumnAttribute>();
-            column["Storage"] = property.Storage;
-            column["Name"] = property.Name;
-            column["DbType"] = property.DbType;
-            // be smart: we only write attributes when they differ from the default values
-            var columnAttribute = new ColumnAttribute();
-            if (property.IsPrimaryKey != columnAttribute.IsPrimaryKey)
-                column["IsPrimaryKey"] = property.IsPrimaryKey;
-            if (property.IsDbGenerated != columnAttribute.IsDbGenerated)
-                column["IsDbGenerated"] = property.IsDbGenerated;
-            if (property.AutoSync != DbLinq.Schema.Dbml.AutoSync.Default)
-                column["AutoSync"] = new EnumFullname("AutoSync", property.AutoSync);
-            if (property.CanBeNull != columnAttribute.CanBeNull)
-                column["CanBeNull"] = property.CanBeNull;
-            if (property.Expression != null)
-                column["Expression"] = property.Expression;
-
-            var specifications = property.AccessModifierSpecified
-                                     ? GetSpecificationDefinition(property.AccessModifier)
-                                     : SpecificationDefinition.Public;
-            if (property.ModifierSpecified)
-                specifications |= GetSpecificationDefinition(property.Modifier);
-
-            //using (WriteAttributes(writer, context.Parameters.MemberExposedAttributes))
-            using (WriteAttributes(writer, GetAttributeNames(context, context.Parameters.MemberAttributes)))
-            using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
-            using (writer.WriteAttribute(column))
-            using (writer.WriteProperty(specifications, property.Member, GetTypeOrExtendedType(writer, property)))
-            {
-                // on auto storage, we're just lazy
-                if (property.Storage == null)
-                    writer.WriteAutomaticPropertyGetSet();
-                else
-                {
-                    using (writer.WritePropertyGet())
-                    {
-                        writer.WriteLine(writer.GetReturnStatement(writer.GetVariableExpression(property.Storage)));
-                    }
-                    using (writer.WritePropertySet())
-                    {
-                        WriteClassPropertyAccessorSet(writer, property, relatedAssociations, context);
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Writes property setter, for FK properties
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="property"></param>
-        /// <param name="relatedAssociations"></param>
-        /// <param name="context"></param>
-        private void WriteClassPropertyAccessorSet(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context)
-        {
-            // if new value if different from old one
-            using (writer.WriteIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(),
-                                                                writer.GetVariableExpression(property.Storage))))
-            {
-                // if the property is used as a FK, we ensure that it hasn't been already loaded or assigned
-                foreach (var relatedAssociation in relatedAssociations)
-                {
-                    // first thing to check: ensure the association backend isn't already affected.
-                    // if it is the case, then the property must not be manually set
-
-                    // R# considers the following as an error, but the csc doesn't
-                    //var memberName = ReflectionUtility.GetMemberInfo<DbLinq.Data.Linq.EntityRef<object>>(e => e.HasLoadedOrAssignedValue).Name;
-                    var memberName = "HasLoadedOrAssignedValue";
-                    using (writer.WriteIf(writer.GetMemberExpression(relatedAssociation.Storage, memberName)))
-                    {
-                        writer.WriteLine(writer.GetThrowStatement(writer.GetNewExpression(
-                                                                      writer.GetMethodCallExpression(
-                                                                          writer.GetLiteralFullType(
-                                                                              typeof(
-                                                                                  System.Data.Linq.
-                                                                                  ForeignKeyReferenceAlreadyHasValueException
-                                                                                  )))
-                                                                      )));
-                    }
-                }
-                // the before and after are used by extensions related to interfaces
-                // for example INotifyPropertyChanged
-                // here the code before the change
-                foreach (IImplementation implementation in context.Implementations())
-                    implementation.WritePropertyBeforeSet(writer, property, context);
-                // property assignment
-                writer.WriteLine(
-                    writer.GetStatement(
-                        writer.GetAssignmentExpression(writer.GetVariableExpression(property.Storage),
-                                                       writer.GetPropertySetValueExpression())));
-                // here the code after change
-                foreach (IImplementation implementation in context.Implementations())
-                    implementation.WritePropertyAfterSet(writer, property, context);
-            }
-        }
-
-        /// <summary>
-        /// Returns all children (ie members of EntitySet)
-        /// </summary>
-        /// <param name="table"></param>
-        /// <returns></returns>
-        protected virtual IEnumerable<Association> GetClassChildren(Table table)
-        {
-            return table.Type.Associations.Where(a => !a.IsForeignKey);
-        }
-
-        /// <summary>
-        /// Returns all parents (ie member referenced as EntityRef)
-        /// </summary>
-        /// <param name="table"></param>
-        /// <returns></returns>
-        protected virtual IEnumerable<Association> GetClassParents(Table table)
-        {
-            return table.Type.Associations.Where(a => a.IsForeignKey);
-        }
-
-        protected virtual void WriteClassChildren(CodeWriter writer, Table table, Database schema, GenerationContext context)
-        {
-            var children = GetClassChildren(table).ToList();
-            if (children.Count > 0)
-            {
-                using (writer.WriteRegion("Children"))
-                {
-                    foreach (var child in children)
-                    {
-                        bool hasDuplicates = (from c in children where c.Member == child.Member select c).Count() > 1;
-                        WriteClassChild(writer, child, hasDuplicates, schema, context);
-                    }
-                }
-            }
-        }
-
-        private void WriteClassChild(CodeWriter writer, Association child, bool hasDuplicates, Database schema, GenerationContext context)
-        {
-            // the following is apparently useless
-            DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == child.Type);
-            if (targetTable == null)
-            {
-                //Logger.Write(Level.Error, "ERROR L143 target table class not found:" + child.Type);
-                return;
-            }
-
-            var storageAttribute = NewAttributeDefinition<AssociationAttribute>();
-            storageAttribute["Storage"] = child.Storage;
-            storageAttribute["OtherKey"] = child.OtherKey;
-            storageAttribute["ThisKey"] = child.ThisKey;
-            storageAttribute["Name"] = child.Name;
-
-            SpecificationDefinition specifications;
-            if (child.AccessModifierSpecified)
-                specifications = GetSpecificationDefinition(child.AccessModifier);
-            else
-                specifications = SpecificationDefinition.Public;
-            if (child.ModifierSpecified)
-                specifications |= GetSpecificationDefinition(child.Modifier);
-
-            var propertyName = hasDuplicates
-                                   ? child.Member + "_" + string.Join("", child.OtherKeys.ToArray())
-                                   : child.Member;
-
-            var propertyType = writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type);
-
-            if (child.Storage != null)
-                writer.WriteField(SpecificationDefinition.Private, child.Storage, propertyType);
-
-            using (writer.WriteAttribute(storageAttribute))
-            using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
-            using (writer.WriteProperty(specifications, propertyName,
-                                        writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type)))
-            {
-                // if we have a backing field, use it
-                if (child.Storage != null)
-                {
-                    // the getter returns the field
-                    using (writer.WritePropertyGet())
-                    {
-                        writer.WriteLine(writer.GetReturnStatement(
-                            child.Storage
-                            ));
-                    }
-                    // the setter assigns the field
-                    using (writer.WritePropertySet())
-                    {
-                        writer.WriteLine(writer.GetStatement(
-                            writer.GetAssignmentExpression(
-                            child.Storage,
-                            writer.GetPropertySetValueExpression())
-                            ));
-                    }
-                }
-                // otherwise, use automatic property
-                else
-                    writer.WriteAutomaticPropertyGetSet();
-            }
-            writer.WriteLine();
-        }
-
-        protected virtual void WriteClassParents(CodeWriter writer, Table table, Database schema, GenerationContext context)
-        {
-            var parents = GetClassParents(table).ToList();
-            if (parents.Count > 0)
-            {
-                using (writer.WriteRegion("Parents"))
-                {
-                    foreach (var parent in parents)
-                    {
-                        bool hasDuplicates = (from p in parents where p.Member == parent.Member select p).Count() > 1;
-                        WriteClassParent(writer, parent, hasDuplicates, schema, context);
-                    }
-                }
-            }
-        }
-
-        protected virtual void WriteClassParent(CodeWriter writer, Association parent, bool hasDuplicates, Database schema, GenerationContext context)
-        {
-            // the following is apparently useless
-            DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == parent.Type);
-            if (targetTable == null)
-            {
-                //Logger.Write(Level.Error, "ERROR L191 target table type not found: " + parent.Type + "  (processing " + parent.Name + ")");
-                return;
-            }
-
-            string member = parent.Member;
-            string storageField = parent.Storage;
-            // TODO: remove this
-            if (member == parent.ThisKey)
-            {
-                member = parent.ThisKey + targetTable.Type.Name; //repeat name to prevent collision (same as Linq)
-                storageField = "_x_" + parent.Member;
-            }
-
-            writer.WriteField(SpecificationDefinition.Private, storageField,
-                              writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntityRef<>)),
-                                                    targetTable.Type.Name));
-
-            var storageAttribute = NewAttributeDefinition<AssociationAttribute>();
-			storageAttribute["Storage"] = storageField;
-			storageAttribute["OtherKey"] = parent.OtherKey;
-            storageAttribute["ThisKey"] = parent.ThisKey;
-            storageAttribute["Name"] = parent.Name;
-            storageAttribute["IsForeignKey"] = parent.IsForeignKey;
-
-            SpecificationDefinition specifications;
-            if (parent.AccessModifierSpecified)
-                specifications = GetSpecificationDefinition(parent.AccessModifier);
-            else
-                specifications = SpecificationDefinition.Public;
-            if (parent.ModifierSpecified)
-                specifications |= GetSpecificationDefinition(parent.Modifier);
-
-            var propertyName = hasDuplicates
-                                   ? member + "_" + string.Join("", parent.TheseKeys.ToArray())
-                                   : member;
-
-            using (writer.WriteAttribute(storageAttribute))
-            using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
-            using (writer.WriteProperty(specifications, propertyName, targetTable.Type.Name))
-            {
-                string storage = writer.GetMemberExpression(storageField, "Entity");
-                using (writer.WritePropertyGet())
-                {
-                    writer.WriteLine(writer.GetReturnStatement(storage));
-                }
-                using (writer.WritePropertySet())
-                {
-                    // algorithm is:
-                    // 1.1. must be different than previous value
-                    // 1.2. or HasLoadedOrAssignedValue is false (but why?)
-                    // 2. implementations before change
-                    // 3. if previous value not null
-                    // 3.1. place parent in temp variable
-                    // 3.2. set [Storage].Entity to null
-                    // 3.3. remove it from parent list
-                    // 4. assign value to [Storage].Entity
-                    // 5. if value is not null
-                    // 5.1. add it to parent list
-                    // 5.2. set FK members with entity keys
-                    // 6. else
-                    // 6.1. set FK members to defaults (null or 0)
-                    // 7. implementationas after change
-
-                    //writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(storage, writer.GetPropertySetValueExpression())));
-                    var entityMember = writer.GetMemberExpression(parent.Storage, "Entity");
-                    // 1.1
-                    using (writer.WriteIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(),
-                                                                        entityMember)))
-                    {
-                        var otherAssociation = schema.GetReverseAssociation(parent);
-                        // 2. code before the change
-                        // TODO change interface to require a member instead of a column
-                        //foreach (IImplementation implementation in context.Implementations())
-                        //    implementation.WritePropertyBeforeSet(writer, ???, context);
-                        // 3.
-                        using (writer.WriteIf(writer.GetDifferentExpression(entityMember, writer.GetNullExpression())))
-                        {
-                            var previousEntityRefName = "previous" + parent.Type;
-                            // 3.1.
-                            writer.WriteLine(writer.GetStatement(
-                                writer.GetVariableDeclarationInitialization(parent.Type, previousEntityRefName, entityMember)
-                                ));
-                            // 3.2.
-                            writer.WriteLine(writer.GetStatement(
-                                writer.GetAssignmentExpression(entityMember, writer.GetNullExpression())
-                                ));
-                            // 3.3.
-                            writer.WriteLine(writer.GetStatement(
-                                writer.GetMethodCallExpression(
-                                    writer.GetMemberExpression(writer.GetMemberExpression(previousEntityRefName, otherAssociation.Member), "Remove"),
-                                    writer.GetThisExpression())
-                                ));
-                        }
-                        // 4.
-                        writer.WriteLine(writer.GetStatement(
-                            writer.GetAssignmentExpression(entityMember, writer.GetPropertySetValueExpression())
-                            ));
-
-                        // 5. if value is null or not
-                        writer.WriteRawIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(), writer.GetNullExpression()));
-                        // 5.1.
-                        writer.WriteLine(writer.GetStatement(
-                            writer.GetMethodCallExpression(
-                                writer.GetMemberExpression(writer.GetMemberExpression(writer.GetPropertySetValueExpression(), otherAssociation.Member), "Add"),
-                                writer.GetThisExpression())
-                            ));
-
-                        // 5.2
-                        var table = schema.Tables.Single(t => t.Type.Associations.Contains(parent));
-                        var childKeys = parent.TheseKeys.ToArray();
-                        var childColumns = (from ck in childKeys select table.Type.Columns.Single(c => c.Member == ck))
-                                            .ToArray();
-                        var parentKeys = parent.OtherKeys.ToArray();
-
-                        for (int keyIndex = 0; keyIndex < parentKeys.Length; keyIndex++)
-                        {
-                            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
-                                childColumns[keyIndex].Storage ?? childColumns[keyIndex].Member,
-                                writer.GetMemberExpression(writer.GetPropertySetValueExpression(), parentKeys[keyIndex])
-                                )));
-                        }
-
-                        // 6.
-                        writer.WriteRawElse();
-
-                        // 6.1.
-                        for (int keyIndex = 0; keyIndex < parentKeys.Length; keyIndex++)
-                        {
-                            var column = table.Type.Columns.Single(c => c.Member == childKeys[keyIndex]);
-                            var columnType = System.Type.GetType(column.Type);
-                            var columnLiteralType = columnType != null ? writer.GetLiteralType(columnType) : column.Type;
-                            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
-                                childColumns[keyIndex].Storage ?? childColumns[keyIndex].Member,
-                                column.CanBeNull ? writer.GetNullExpression() : writer.GetNullValueExpression(columnLiteralType)
-                                )));
-                        }
-
-                        writer.WriteRawEndif();
-
-                        // 7. code after change
-                        // TODO change interface to require a member instead of a column
-                        //foreach (IImplementation implementation in context.Implementations())
-                        //    implementation.WritePropertyAfterSet(writer, ???, context);
-
-                    }
-                }
-            }
-            writer.WriteLine();
-        }
-
-        /// <summary>
-        /// Returns event method name related to a child
-        /// </summary>
-        /// <param name="child"></param>
-        /// <param name="method"></param>
-        /// <returns></returns>
-        protected virtual string GetChildMethodName(Association child, string method)
-        {
-            return string.Format("{0}_{1}", child.Member, method);
-        }
-
-        /// <summary>
-        /// Returns child attach method name
-        /// </summary>
-        /// <param name="child"></param>
-        /// <returns></returns>
-        protected virtual string GetChildAttachMethodName(Association child)
-        {
-            return GetChildMethodName(child, "Attach");
-        }
-
-        /// <summary>
-        /// Returns child detach method name
-        /// </summary>
-        /// <param name="child"></param>
-        /// <returns></returns>
-        protected virtual string GetChildDetachMethodName(Association child)
-        {
-            return GetChildMethodName(child, "Detach");
-        }
-
-        /// <summary>
-        /// Writes attach/detach method
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="table"></param>
-        /// <param name="schema"></param>
-        /// <param name="context"></param>
-        protected virtual void WriteClassChildrenAttachment(CodeWriter writer, Table table, Database schema, GenerationContext context)
-        {
-            var children = GetClassChildren(table).ToList();
-            if (children.Count > 0)
-            {
-                using (writer.WriteRegion("Attachement handlers"))
-                {
-                    foreach (var child in children)
-                    {
-                        // the reverse child is the association seen from the child
-                        // we're going to use it...
-                        var reverseChild = schema.GetReverseAssociation(child);
-                        // ... to get the parent name
-                        var memberName = reverseChild.Member;
-                        var entityParameter = new ParameterDefinition { Name = "entity", LiteralType = child.Type };
-                        // the Attach event handler sets the child entity parent to "this"
-                        using (writer.WriteMethod(SpecificationDefinition.Private, GetChildAttachMethodName(child),
-                                                  null, entityParameter))
-                        {
-                            writer.WriteLine(
-                                writer.GetStatement(
-                                    writer.GetAssignmentExpression(
-                                        writer.GetMemberExpression(entityParameter.Name, memberName),
-                                        writer.GetThisExpression())));
-                        }
-                        writer.WriteLine();
-                        // the Detach event handler sets the child entity parent to null
-                        using (writer.WriteMethod(SpecificationDefinition.Private, GetChildDetachMethodName(child),
-                                                  null, entityParameter))
-                        {
-                            writer.WriteLine(
-                                writer.GetStatement(
-                                    writer.GetAssignmentExpression(
-                                        writer.GetMemberExpression(entityParameter.Name, memberName),
-                                        writer.GetNullExpression())));
-                        }
-                        writer.WriteLine();
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// Writes class ctor.
-        /// EntitySet initializations
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="table"></param>
-        /// <param name="schema"></param>
-        /// <param name="context"></param>
-        protected virtual void WriteClassCtor(CodeWriter writer, Table table, Database schema, GenerationContext context)
-        {
-            using (writer.WriteRegion("ctor"))
-            using (writer.WriteCtor(SpecificationDefinition.Public, table.Type.Name, new ParameterDefinition[0], null))
-            {
-                // children are EntitySet
-                foreach (var child in GetClassChildren(table))
-                {
-                    // if the association has a storage, we use it. Otherwise, we use the property name
-                    var entitySetMember = child.Storage ?? child.Member;
-                    writer.WriteLine(writer.GetStatement(
-                        writer.GetAssignmentExpression(
-                            entitySetMember,
-                            writer.GetNewExpression(writer.GetMethodCallExpression(
-                                writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type),
-                                GetChildAttachMethodName(child),
-                                GetChildDetachMethodName(child)
-                            ))
-                        )
-                        ));
-                }
-                // the parents are the entities referenced by a FK. So a "parent" is an EntityRef
-                foreach (var parent in GetClassParents(table))
-                {
-                    var entityRefMember = parent.Storage;
-                    writer.WriteLine(writer.GetStatement(
-                        writer.GetAssignmentExpression(
-                            entityRefMember,
-                            writer.GetNewExpression(writer.GetMethodCallExpression(
-                            writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntityRef<>)), parent.Type)
-                            ))
-                        )
-                    ));
-                }
-                writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("OnCreated")));
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data.Linq.Mapping;
+using System.Diagnostics;
+using System.Linq;
+using DbLinq.Schema.Dbml;
+using DbLinq.Schema.Dbml.Adapter;
+using DbLinq.Util;
+using DbMetal.Generator.EntityInterface;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#else
+using DbLinq.Data.Linq;
+#endif
+
+namespace DbMetal.Generator.Implementation.CodeTextGenerator
+{
+#if !MONO_STRICT
+    public
+#endif
+    partial class CodeGenerator
+    {
+        protected virtual void WriteClasses(CodeWriter writer, Database schema, GenerationContext context)
+        {
+            IEnumerable<Table> tables = schema.Tables;
+
+            var types = context.Parameters.GenerateTypes;
+            if (types.Count > 0)
+                tables = tables.Where(t => types.Contains(t.Type.Name));
+
+            foreach (var table in tables)
+                WriteClass(writer, table, schema, context);
+        }
+
+        protected virtual void WriteClass(CodeWriter writer, Table table, Database schema, GenerationContext context)
+        {
+            writer.WriteLine();
+
+            string entityBase = context.Parameters.EntityBase;
+            if (string.IsNullOrEmpty(entityBase))
+                entityBase = schema.EntityBase;
+
+            var specifications = SpecificationDefinition.Partial;
+            if (table.Type.AccessModifierSpecified)
+                specifications |= GetSpecificationDefinition(table.Type.AccessModifier);
+            else
+                specifications |= SpecificationDefinition.Public;
+            if (table.Type.ModifierSpecified)
+                specifications |= GetSpecificationDefinition(table.Type.Modifier);
+
+            var tableAttribute = NewAttributeDefinition<TableAttribute>();
+            tableAttribute["Name"] = table.Name;
+            using (writer.WriteAttribute(tableAttribute))
+            using (writer.WriteClass(specifications,
+                                     table.Type.Name, entityBase, context.Parameters.EntityInterfaces))
+            {
+                WriteClassHeader(writer, table, context);
+                WriteCustomTypes(writer, table, schema, context);
+                WriteClassExtensibilityDeclarations(writer, table, context);
+                WriteClassProperties(writer, table, context);
+                if (context.Parameters.GenerateEqualsHash)
+                    WriteClassEqualsAndHash(writer, table, context);
+                WriteClassChildren(writer, table, schema, context);
+                WriteClassParents(writer, table, schema, context);
+                WriteClassChildrenAttachment(writer, table, schema, context);
+                WriteClassCtor(writer, table, schema, context);
+            }
+        }
+
+        protected virtual void WriteClassEqualsAndHash(CodeWriter writer, Table table, GenerationContext context)
+        {
+            List<DbLinq.Schema.Dbml.Column> primaryKeys = table.Type.Columns.Where(c => c.IsPrimaryKey).ToList();
+            if (primaryKeys.Count == 0)
+            {
+                writer.WriteLine("#warning L189 table {0} has no primary key. Multiple C# objects will refer to the same row.",
+                                 table.Name);
+                return;
+            }
+
+            using (writer.WriteRegion(string.Format("GetHashCode(), Equals() - uses column {0} to look up objects in liveObjectMap",
+                                                    string.Join(", ", primaryKeys.Select(pk => pk.Member).ToList().ToArray()))))
+            {
+                // GetHashCode
+                using (writer.WriteMethod(SpecificationDefinition.Public | SpecificationDefinition.Override,
+                                          "GetHashCode", typeof(int)))
+                {
+                    string hashCode = null;
+
+                    foreach (var primaryKey in primaryKeys)
+                    {
+                        var member = writer.GetVariableExpression(primaryKey.Storage);
+                        string primaryKeyHashCode = writer.GetMethodCallExpression(writer.GetMemberExpression(member, "GetHashCode"));
+                        if (primaryKey.CanBeNull
+                        || GetType(primaryKey.Type, false).IsClass) // this patch to ensure that even if DB does not allow nulls,
+                        // our in-memory object won't generate a fault
+                        {
+                            var isNullExpression = writer.GetEqualExpression(member, writer.GetNullExpression());
+                            var nullExpression = writer.GetLiteralValue(0);
+                            primaryKeyHashCode = "(" + writer.GetTernaryExpression(isNullExpression, nullExpression, primaryKeyHashCode) + ")";
+                        }
+                        if (string.IsNullOrEmpty(hashCode))
+                            hashCode = primaryKeyHashCode;
+                        else
+                            hashCode = writer.GetXOrExpression(hashCode, primaryKeyHashCode);
+                    }
+                    writer.WriteLine(writer.GetReturnStatement(hashCode));
+                }
+                writer.WriteLine();
+
+                // Equals
+                string otherAsObject = "o";
+                using (writer.WriteMethod(SpecificationDefinition.Public | SpecificationDefinition.Override,
+                                          "Equals", typeof(bool), new ParameterDefinition { Type = typeof(object), Name = otherAsObject }))
+                {
+                    string other = "other";
+                    writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
+                                                             writer.GetDeclarationExpression(other, table.Type.Name),
+                                                             writer.GetCastExpression(otherAsObject, table.Type.Name,
+                                                                                      false))));
+                    using (writer.WriteIf(writer.GetEqualExpression(other, writer.GetNullExpression())))
+                    {
+                        writer.WriteLine(writer.GetReturnStatement(writer.GetLiteralValue(false)));
+                    }
+                    string andExpression = null;
+                    foreach (var primaryKey in primaryKeys)
+                    {
+                        var member = writer.GetVariableExpression(primaryKey.Storage);
+                        string primaryKeyTest = writer.GetMethodCallExpression(
+                                writer.GetMemberExpression(
+                                    writer.GetMemberExpression(
+                                        writer.GetGenericName("System.Collections.Generic.EqualityComparer", primaryKey.Type),
+                                        "Default"),
+                                    "Equals"),
+                                member,
+                                writer.GetMemberExpression(other, member));
+                        if (string.IsNullOrEmpty(andExpression))
+                            andExpression = primaryKeyTest;
+                        else
+                            andExpression = writer.GetAndExpression(andExpression, primaryKeyTest);
+                    }
+                    writer.WriteLine(writer.GetReturnStatement(andExpression));
+                }
+            }
+        }
+
+        /// <summary>
+        /// Class headers are written at top of class
+        /// They consist in specific headers writen by interface implementors
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="table"></param>
+        /// <param name="context"></param>
+        private void WriteClassHeader(CodeWriter writer, Table table, GenerationContext context)
+        {
+            foreach (IImplementation implementation in context.Implementations())
+                implementation.WriteClassHeader(writer, table, context);
+        }
+
+        protected virtual void WriteClassExtensibilityDeclarations(CodeWriter writer, Table table, GenerationContext context)
+        {
+            using (writer.WriteRegion("Extensibility Method Definitions"))
+            {
+                writer.WriteLine("partial void OnCreated();");
+                foreach (var c in table.Type.Columns)
+                {
+                    writer.WriteLine("partial void On{0}Changed();", c.Member);
+                    writer.WriteLine("partial void On{0}Changing({1} value);", c.Member, GetTypeOrExtendedType(writer, c));
+                }
+            }
+        }
+
+        /// <summary>
+        /// Writes all properties, depending on the use (simple property or FK)
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="table"></param>
+        /// <param name="context"></param>
+        protected virtual void WriteClassProperties(CodeWriter writer, Table table, GenerationContext context)
+        {
+            foreach (var property in table.Type.Columns)
+            {
+                var property1 = property;
+                var relatedAssociations = from a in table.Type.Associations
+                                          where a.IsForeignKey
+                                          && a.TheseKeys.Contains(property1.Name)
+                                          select a;
+                WriteClassProperty(writer, property, relatedAssociations, context);
+            }
+        }
+
+        protected virtual string GetTypeOrExtendedType(CodeWriter writer, Column property)
+        {
+            object extendedType = property.ExtendedType;
+            var enumType = extendedType as EnumType;
+            if (enumType != null)
+                return writer.GetEnumType(enumType.Name);
+            return writer.GetLiteralType(GetType(property.Type, property.CanBeNull));
+        }
+
+        /// <summary>
+        /// Writes class property
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="property"></param>
+        /// <param name="relatedAssociations">non null if property is a FK</param>
+        /// <param name="context"></param>
+        protected virtual void WriteClassProperty(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context)
+        {
+            using (writer.WriteRegion(string.Format("{0} {1}", GetTypeOrExtendedType(writer, property), property.Member)))
+            {
+                WriteClassPropertyBackingField(writer, property, context);
+                WriteClassPropertyAccessors(writer, property, relatedAssociations, context);
+            }
+        }
+
+        protected virtual void WriteClassPropertyBackingField(CodeWriter writer, Column property, GenerationContext context)
+        {
+            //AttributeDefinition autoGenAttribute = null;
+            //if (property.IsDbGenerated)
+            //    autoGenAttribute = NewAttributeDefinition<AutoGenIdAttribute>();
+            //using (writer.WriteAttribute(autoGenAttribute))
+            // for auto-properties, we just won't generate a private field
+            if (property.Storage != null)
+                writer.WriteField(SpecificationDefinition.Private, property.Storage, GetTypeOrExtendedType(writer, property));
+        }
+
+        /// <summary>
+        /// Returns a name from a given fullname
+        /// </summary>
+        /// <param name="fullName"></param>
+        /// <returns></returns>
+        protected virtual string GetName(string fullName)
+        {
+            var namePartIndex = fullName.LastIndexOf('.');
+            // if we have a dot, we have a namespace
+            if (namePartIndex > 0)
+                return fullName.Substring(namePartIndex + 1);
+            // otherwise, it's just a name, that we keep as is
+            return fullName;
+        }
+
+        /// <summary>
+        /// Returns name for given list of attributes
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="attributes"></param>
+        /// <returns></returns>
+        protected virtual string[] GetAttributeNames(GenerationContext context, IEnumerable<string> attributes)
+        {
+            return (from a in attributes select GetName(a)).ToArray();
+        }
+
+        private class EnumFullname
+        {
+            private string _EnumName;
+            private object _EnumValue;
+
+            public EnumFullname(string enumName, object enumValue)
+            {
+                _EnumName = enumName;
+                _EnumValue = enumValue;
+            }
+
+            public override string ToString()
+            {
+                return string.Format("{0}.{1}", _EnumName, _EnumValue.ToString());
+            }
+        }
+
+        /// <summary>
+        /// Writes property accessor
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="property"></param>
+        /// <param name="relatedAssociations"></param>
+        /// <param name="context"></param>
+        protected virtual void WriteClassPropertyAccessors(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context)
+        {
+            //generate [Column(...)] attribute
+            var column = NewAttributeDefinition<ColumnAttribute>();
+            column["Storage"] = property.Storage;
+            column["Name"] = property.Name;
+            column["DbType"] = property.DbType;
+            // be smart: we only write attributes when they differ from the default values
+            var columnAttribute = new ColumnAttribute();
+            if (property.IsPrimaryKey != columnAttribute.IsPrimaryKey)
+                column["IsPrimaryKey"] = property.IsPrimaryKey;
+            if (property.IsDbGenerated != columnAttribute.IsDbGenerated)
+                column["IsDbGenerated"] = property.IsDbGenerated;
+            if (property.AutoSync != DbLinq.Schema.Dbml.AutoSync.Default)
+                column["AutoSync"] = new EnumFullname("AutoSync", property.AutoSync);
+            if (property.CanBeNull != columnAttribute.CanBeNull)
+                column["CanBeNull"] = property.CanBeNull;
+            if (property.Expression != null)
+                column["Expression"] = property.Expression;
+
+            var specifications = property.AccessModifierSpecified
+                                     ? GetSpecificationDefinition(property.AccessModifier)
+                                     : SpecificationDefinition.Public;
+            if (property.ModifierSpecified)
+                specifications |= GetSpecificationDefinition(property.Modifier);
+
+            //using (WriteAttributes(writer, context.Parameters.MemberExposedAttributes))
+            using (WriteAttributes(writer, GetAttributeNames(context, context.Parameters.MemberAttributes)))
+            using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
+            using (writer.WriteAttribute(column))
+            using (writer.WriteProperty(specifications, property.Member, GetTypeOrExtendedType(writer, property)))
+            {
+                // on auto storage, we're just lazy
+                if (property.Storage == null)
+                    writer.WriteAutomaticPropertyGetSet();
+                else
+                {
+                    using (writer.WritePropertyGet())
+                    {
+                        writer.WriteLine(writer.GetReturnStatement(writer.GetVariableExpression(property.Storage)));
+                    }
+                    using (writer.WritePropertySet())
+                    {
+                        WriteClassPropertyAccessorSet(writer, property, relatedAssociations, context);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Writes property setter, for FK properties
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="property"></param>
+        /// <param name="relatedAssociations"></param>
+        /// <param name="context"></param>
+        private void WriteClassPropertyAccessorSet(CodeWriter writer, Column property, IEnumerable<Association> relatedAssociations, GenerationContext context)
+        {
+            // if new value if different from old one
+            using (writer.WriteIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(),
+                                                                writer.GetVariableExpression(property.Storage))))
+            {
+                // if the property is used as a FK, we ensure that it hasn't been already loaded or assigned
+                foreach (var relatedAssociation in relatedAssociations)
+                {
+                    // first thing to check: ensure the association backend isn't already affected.
+                    // if it is the case, then the property must not be manually set
+
+                    // R# considers the following as an error, but the csc doesn't
+                    //var memberName = ReflectionUtility.GetMemberInfo<DbLinq.Data.Linq.EntityRef<object>>(e => e.HasLoadedOrAssignedValue).Name;
+                    var memberName = "HasLoadedOrAssignedValue";
+                    using (writer.WriteIf(writer.GetMemberExpression(relatedAssociation.Storage, memberName)))
+                    {
+                        writer.WriteLine(writer.GetThrowStatement(writer.GetNewExpression(
+                                                                      writer.GetMethodCallExpression(
+                                                                          writer.GetLiteralFullType(
+                                                                              typeof(
+                                                                                  System.Data.Linq.
+                                                                                  ForeignKeyReferenceAlreadyHasValueException
+                                                                                  )))
+                                                                      )));
+                    }
+                }
+                // the before and after are used by extensions related to interfaces
+                // for example INotifyPropertyChanged
+                // here the code before the change
+                foreach (IImplementation implementation in context.Implementations())
+                    implementation.WritePropertyBeforeSet(writer, property, context);
+                // property assignment
+                writer.WriteLine(
+                    writer.GetStatement(
+                        writer.GetAssignmentExpression(writer.GetVariableExpression(property.Storage),
+                                                       writer.GetPropertySetValueExpression())));
+                // here the code after change
+                foreach (IImplementation implementation in context.Implementations())
+                    implementation.WritePropertyAfterSet(writer, property, context);
+            }
+        }
+
+        /// <summary>
+        /// Returns all children (ie members of EntitySet)
+        /// </summary>
+        /// <param name="table"></param>
+        /// <returns></returns>
+        protected virtual IEnumerable<Association> GetClassChildren(Table table)
+        {
+            return table.Type.Associations.Where(a => !a.IsForeignKey);
+        }
+
+        /// <summary>
+        /// Returns all parents (ie member referenced as EntityRef)
+        /// </summary>
+        /// <param name="table"></param>
+        /// <returns></returns>
+        protected virtual IEnumerable<Association> GetClassParents(Table table)
+        {
+            return table.Type.Associations.Where(a => a.IsForeignKey);
+        }
+
+        protected virtual void WriteClassChildren(CodeWriter writer, Table table, Database schema, GenerationContext context)
+        {
+            var children = GetClassChildren(table).ToList();
+            if (children.Count > 0)
+            {
+                using (writer.WriteRegion("Children"))
+                {
+                    foreach (var child in children)
+                    {
+                        bool hasDuplicates = (from c in children where c.Member == child.Member select c).Count() > 1;
+                        WriteClassChild(writer, child, hasDuplicates, schema, context);
+                    }
+                }
+            }
+        }
+
+        private void WriteClassChild(CodeWriter writer, Association child, bool hasDuplicates, Database schema, GenerationContext context)
+        {
+            // the following is apparently useless
+            DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == child.Type);
+            if (targetTable == null)
+            {
+                //Logger.Write(Level.Error, "ERROR L143 target table class not found:" + child.Type);
+                return;
+            }
+
+            var storageAttribute = NewAttributeDefinition<AssociationAttribute>();
+            storageAttribute["Storage"] = child.Storage;
+            storageAttribute["OtherKey"] = child.OtherKey;
+            storageAttribute["ThisKey"] = child.ThisKey;
+            storageAttribute["Name"] = child.Name;
+
+            SpecificationDefinition specifications;
+            if (child.AccessModifierSpecified)
+                specifications = GetSpecificationDefinition(child.AccessModifier);
+            else
+                specifications = SpecificationDefinition.Public;
+            if (child.ModifierSpecified)
+                specifications |= GetSpecificationDefinition(child.Modifier);
+
+            var propertyName = hasDuplicates
+                                   ? child.Member + "_" + string.Join("", child.OtherKeys.ToArray())
+                                   : child.Member;
+
+            var propertyType = writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type);
+
+            if (child.Storage != null)
+                writer.WriteField(SpecificationDefinition.Private, child.Storage, propertyType);
+
+            using (writer.WriteAttribute(storageAttribute))
+            using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
+            using (writer.WriteProperty(specifications, propertyName,
+                                        writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type)))
+            {
+                // if we have a backing field, use it
+                if (child.Storage != null)
+                {
+                    // the getter returns the field
+                    using (writer.WritePropertyGet())
+                    {
+                        writer.WriteLine(writer.GetReturnStatement(
+                            child.Storage
+                            ));
+                    }
+                    // the setter assigns the field
+                    using (writer.WritePropertySet())
+                    {
+                        writer.WriteLine(writer.GetStatement(
+                            writer.GetAssignmentExpression(
+                            child.Storage,
+                            writer.GetPropertySetValueExpression())
+                            ));
+                    }
+                }
+                // otherwise, use automatic property
+                else
+                    writer.WriteAutomaticPropertyGetSet();
+            }
+            writer.WriteLine();
+        }
+
+        protected virtual void WriteClassParents(CodeWriter writer, Table table, Database schema, GenerationContext context)
+        {
+            var parents = GetClassParents(table).ToList();
+            if (parents.Count > 0)
+            {
+                using (writer.WriteRegion("Parents"))
+                {
+                    foreach (var parent in parents)
+                    {
+                        bool hasDuplicates = (from p in parents where p.Member == parent.Member select p).Count() > 1;
+                        WriteClassParent(writer, parent, hasDuplicates, schema, context);
+                    }
+                }
+            }
+        }
+
+        protected virtual void WriteClassParent(CodeWriter writer, Association parent, bool hasDuplicates, Database schema, GenerationContext context)
+        {
+            // the following is apparently useless
+            DbLinq.Schema.Dbml.Table targetTable = schema.Tables.FirstOrDefault(t => t.Type.Name == parent.Type);
+            if (targetTable == null)
+            {
+                //Logger.Write(Level.Error, "ERROR L191 target table type not found: " + parent.Type + "  (processing " + parent.Name + ")");
+                return;
+            }
+
+            string member = parent.Member;
+            string storageField = parent.Storage;
+            // TODO: remove this
+            if (member == parent.ThisKey)
+            {
+                member = parent.ThisKey + targetTable.Type.Name; //repeat name to prevent collision (same as Linq)
+                storageField = "_x_" + parent.Member;
+            }
+
+            writer.WriteField(SpecificationDefinition.Private, storageField,
+                              writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntityRef<>)),
+                                                    targetTable.Type.Name));
+
+            var storageAttribute = NewAttributeDefinition<AssociationAttribute>();
+			storageAttribute["Storage"] = storageField;
+			storageAttribute["OtherKey"] = parent.OtherKey;
+            storageAttribute["ThisKey"] = parent.ThisKey;
+            storageAttribute["Name"] = parent.Name;
+            storageAttribute["IsForeignKey"] = parent.IsForeignKey;
+
+            SpecificationDefinition specifications;
+            if (parent.AccessModifierSpecified)
+                specifications = GetSpecificationDefinition(parent.AccessModifier);
+            else
+                specifications = SpecificationDefinition.Public;
+            if (parent.ModifierSpecified)
+                specifications |= GetSpecificationDefinition(parent.Modifier);
+
+            var propertyName = hasDuplicates
+                                   ? member + "_" + string.Join("", parent.TheseKeys.ToArray())
+                                   : member;
+
+            using (writer.WriteAttribute(storageAttribute))
+            using (writer.WriteAttribute(NewAttributeDefinition<DebuggerNonUserCodeAttribute>()))
+            using (writer.WriteProperty(specifications, propertyName, targetTable.Type.Name))
+            {
+                string storage = writer.GetMemberExpression(storageField, "Entity");
+                using (writer.WritePropertyGet())
+                {
+                    writer.WriteLine(writer.GetReturnStatement(storage));
+                }
+                using (writer.WritePropertySet())
+                {
+                    // algorithm is:
+                    // 1.1. must be different than previous value
+                    // 1.2. or HasLoadedOrAssignedValue is false (but why?)
+                    // 2. implementations before change
+                    // 3. if previous value not null
+                    // 3.1. place parent in temp variable
+                    // 3.2. set [Storage].Entity to null
+                    // 3.3. remove it from parent list
+                    // 4. assign value to [Storage].Entity
+                    // 5. if value is not null
+                    // 5.1. add it to parent list
+                    // 5.2. set FK members with entity keys
+                    // 6. else
+                    // 6.1. set FK members to defaults (null or 0)
+                    // 7. implementationas after change
+
+                    //writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(storage, writer.GetPropertySetValueExpression())));
+                    var entityMember = writer.GetMemberExpression(parent.Storage, "Entity");
+                    // 1.1
+                    using (writer.WriteIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(),
+                                                                        entityMember)))
+                    {
+                        var otherAssociation = schema.GetReverseAssociation(parent);
+                        // 2. code before the change
+                        // TODO change interface to require a member instead of a column
+                        //foreach (IImplementation implementation in context.Implementations())
+                        //    implementation.WritePropertyBeforeSet(writer, ???, context);
+                        // 3.
+                        using (writer.WriteIf(writer.GetDifferentExpression(entityMember, writer.GetNullExpression())))
+                        {
+                            var previousEntityRefName = "previous" + parent.Type;
+                            // 3.1.
+                            writer.WriteLine(writer.GetStatement(
+                                writer.GetVariableDeclarationInitialization(parent.Type, previousEntityRefName, entityMember)
+                                ));
+                            // 3.2.
+                            writer.WriteLine(writer.GetStatement(
+                                writer.GetAssignmentExpression(entityMember, writer.GetNullExpression())
+                                ));
+                            // 3.3.
+                            writer.WriteLine(writer.GetStatement(
+                                writer.GetMethodCallExpression(
+                                    writer.GetMemberExpression(writer.GetMemberExpression(previousEntityRefName, otherAssociation.Member), "Remove"),
+                                    writer.GetThisExpression())
+                                ));
+                        }
+                        // 4.
+                        writer.WriteLine(writer.GetStatement(
+                            writer.GetAssignmentExpression(entityMember, writer.GetPropertySetValueExpression())
+                            ));
+
+                        // 5. if value is null or not
+                        writer.WriteRawIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(), writer.GetNullExpression()));
+                        // 5.1.
+                        writer.WriteLine(writer.GetStatement(
+                            writer.GetMethodCallExpression(
+                                writer.GetMemberExpression(writer.GetMemberExpression(writer.GetPropertySetValueExpression(), otherAssociation.Member), "Add"),
+                                writer.GetThisExpression())
+                            ));
+
+                        // 5.2
+                        var table = schema.Tables.Single(t => t.Type.Associations.Contains(parent));
+                        var childKeys = parent.TheseKeys.ToArray();
+                        var childColumns = (from ck in childKeys select table.Type.Columns.Single(c => c.Member == ck))
+                                            .ToArray();
+                        var parentKeys = parent.OtherKeys.ToArray();
+
+                        for (int keyIndex = 0; keyIndex < parentKeys.Length; keyIndex++)
+                        {
+                            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
+                                childColumns[keyIndex].Storage ?? childColumns[keyIndex].Member,
+                                writer.GetMemberExpression(writer.GetPropertySetValueExpression(), parentKeys[keyIndex])
+                                )));
+                        }
+
+                        // 6.
+                        writer.WriteRawElse();
+
+                        // 6.1.
+                        for (int keyIndex = 0; keyIndex < parentKeys.Length; keyIndex++)
+                        {
+                            var column = table.Type.Columns.Single(c => c.Member == childKeys[keyIndex]);
+                            var columnType = System.Type.GetType(column.Type);
+                            var columnLiteralType = columnType != null ? writer.GetLiteralType(columnType) : column.Type;
+                            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
+                                childColumns[keyIndex].Storage ?? childColumns[keyIndex].Member,
+                                column.CanBeNull ? writer.GetNullExpression() : writer.GetNullValueExpression(columnLiteralType)
+                                )));
+                        }
+
+                        writer.WriteRawEndif();
+
+                        // 7. code after change
+                        // TODO change interface to require a member instead of a column
+                        //foreach (IImplementation implementation in context.Implementations())
+                        //    implementation.WritePropertyAfterSet(writer, ???, context);
+
+                    }
+                }
+            }
+            writer.WriteLine();
+        }
+
+        /// <summary>
+        /// Returns event method name related to a child
+        /// </summary>
+        /// <param name="child"></param>
+        /// <param name="method"></param>
+        /// <returns></returns>
+        protected virtual string GetChildMethodName(Association child, string method)
+        {
+            return string.Format("{0}_{1}", child.Member, method);
+        }
+
+        /// <summary>
+        /// Returns child attach method name
+        /// </summary>
+        /// <param name="child"></param>
+        /// <returns></returns>
+        protected virtual string GetChildAttachMethodName(Association child)
+        {
+            return GetChildMethodName(child, "Attach");
+        }
+
+        /// <summary>
+        /// Returns child detach method name
+        /// </summary>
+        /// <param name="child"></param>
+        /// <returns></returns>
+        protected virtual string GetChildDetachMethodName(Association child)
+        {
+            return GetChildMethodName(child, "Detach");
+        }
+
+        /// <summary>
+        /// Writes attach/detach method
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="table"></param>
+        /// <param name="schema"></param>
+        /// <param name="context"></param>
+        protected virtual void WriteClassChildrenAttachment(CodeWriter writer, Table table, Database schema, GenerationContext context)
+        {
+            var children = GetClassChildren(table).ToList();
+            if (children.Count > 0)
+            {
+                using (writer.WriteRegion("Attachement handlers"))
+                {
+                    foreach (var child in children)
+                    {
+                        // the reverse child is the association seen from the child
+                        // we're going to use it...
+                        var reverseChild = schema.GetReverseAssociation(child);
+                        // ... to get the parent name
+                        var memberName = reverseChild.Member;
+                        var entityParameter = new ParameterDefinition { Name = "entity", LiteralType = child.Type };
+                        // the Attach event handler sets the child entity parent to "this"
+                        using (writer.WriteMethod(SpecificationDefinition.Private, GetChildAttachMethodName(child),
+                                                  null, entityParameter))
+                        {
+                            writer.WriteLine(
+                                writer.GetStatement(
+                                    writer.GetAssignmentExpression(
+                                        writer.GetMemberExpression(entityParameter.Name, memberName),
+                                        writer.GetThisExpression())));
+                        }
+                        writer.WriteLine();
+                        // the Detach event handler sets the child entity parent to null
+                        using (writer.WriteMethod(SpecificationDefinition.Private, GetChildDetachMethodName(child),
+                                                  null, entityParameter))
+                        {
+                            writer.WriteLine(
+                                writer.GetStatement(
+                                    writer.GetAssignmentExpression(
+                                        writer.GetMemberExpression(entityParameter.Name, memberName),
+                                        writer.GetNullExpression())));
+                        }
+                        writer.WriteLine();
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// Writes class ctor.
+        /// EntitySet initializations
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="table"></param>
+        /// <param name="schema"></param>
+        /// <param name="context"></param>
+        protected virtual void WriteClassCtor(CodeWriter writer, Table table, Database schema, GenerationContext context)
+        {
+            using (writer.WriteRegion("ctor"))
+            using (writer.WriteCtor(SpecificationDefinition.Public, table.Type.Name, new ParameterDefinition[0], null))
+            {
+                // children are EntitySet
+                foreach (var child in GetClassChildren(table))
+                {
+                    // if the association has a storage, we use it. Otherwise, we use the property name
+                    var entitySetMember = child.Storage ?? child.Member;
+                    writer.WriteLine(writer.GetStatement(
+                        writer.GetAssignmentExpression(
+                            entitySetMember,
+                            writer.GetNewExpression(writer.GetMethodCallExpression(
+                                writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntitySet<>)), child.Type),
+                                GetChildAttachMethodName(child),
+                                GetChildDetachMethodName(child)
+                            ))
+                        )
+                        ));
+                }
+                // the parents are the entities referenced by a FK. So a "parent" is an EntityRef
+                foreach (var parent in GetClassParents(table))
+                {
+                    var entityRefMember = parent.Storage;
+                    writer.WriteLine(writer.GetStatement(
+                        writer.GetAssignmentExpression(
+                            entityRefMember,
+                            writer.GetNewExpression(writer.GetMethodCallExpression(
+                            writer.GetGenericName(TypeExtensions.GetShortName(typeof(EntityRef<>)), parent.Type)
+                            ))
+                        )
+                    ));
+                }
+                writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("OnCreated")));
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Context.Ctor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Context.Ctor.cs
@@ -1,126 +1,126 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Collections.Generic;
-using System.Data;
-using System.Data.Linq.Mapping;
-using DbLinq.Schema.Dbml;
-using DbLinq.Vendor;
-using Type = System.Type;
-
-namespace DbMetal.Generator.Implementation.CodeTextGenerator
-{
-    partial class CodeGenerator
-    {
-        protected virtual bool WriteDataContextCtor(CodeWriter writer, Database schema, Type contextBaseType,
-            ParameterDefinition[] parameters, string[] baseCallParameterNames, Type[] baseCallParameterTypes,
-            GenerationContext context)
-        {
-            // if we have a contextBaseType, then check that we can do it
-            if (contextBaseType != null)
-            {
-                var ctor = contextBaseType.GetConstructor(baseCallParameterTypes);
-                if (ctor == null)
-                    return false;
-            }
-            using (writer.WriteCtor(SpecificationDefinition.Public, schema.Class, parameters, baseCallParameterNames))
-            {
-                writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("OnCreated")));
-            }
-            writer.WriteLine();
-            return true;
-        }
-
-        protected virtual void WriteDataContextCtors(CodeWriter writer, Database schema, Type contextBaseType, GenerationContext context)
-        {
-            // ctor taking a connections tring
-            WriteDataContextCtor(writer, schema, contextBaseType,
-                   new[] { new ParameterDefinition { Name = "connectionString", Type = typeof(string) } },
-                   new[] { "connectionString" },
-                   new[] { typeof(string) },
-                   context);
-            // the two constructors below have the same prototype, so they are mutually exclusive
-            // the base class requires a IVendor
-            if (!WriteDataContextCtor(writer, schema, contextBaseType,
-                                 new[] { new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) } },
-                                 new[] { "connection", writer.GetNewExpression(writer.GetMethodCallExpression(writer.GetLiteralFullType(context.SchemaLoader.Vendor.GetType()))) },
-                                 new[] { typeof(IDbConnection), typeof(IVendor) },
-                                 context))
-            {
-                // OR the base class requires no IVendor
-                WriteDataContextCtor(writer, schema, contextBaseType,
-                                     new[] { new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) } },
-                                     new[] { "connection" },
-                                     new[] { typeof(IDbConnection) },
-                                     context);
-            }
-            // ctor(string, MappingSource)
-            WriteDataContextCtor(writer, schema, contextBaseType,
-                   new[] {
-                       new ParameterDefinition { Name = "connection", Type = typeof(string) },
-                       new ParameterDefinition { Name = "mappingSource", Type = typeof(MappingSource) },
-                   },
-                   new[] { "connection", "mappingSource" },
-                   new[] { typeof(string), typeof (MappingSource) },
-                   context);
-            // ctor(IDbConnection, MappingSource)
-            WriteDataContextCtor(writer, schema, contextBaseType,
-                    new[] {
-                        new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) },
-                        new ParameterDefinition { Name = "mappingSource", Type = typeof(MappingSource) },
-                    },
-                    new[] { "connection", "mappingSource" },
-                    new[] { typeof(IDbConnection), typeof(MappingSource) },
-                    context);
-            // just in case you'd like to specify another vendor than the one who helped generating this file
-            WriteDataContextCtor(writer, schema, contextBaseType,
-                    new[] {
-                        new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) },
-                        new ParameterDefinition { Name = "vendor", Type = typeof(IVendor) },
-                    },
-                    new[] { "connection", "vendor" },
-                    new[] { typeof(IDbConnection), typeof(IVendor) },
-                    context);
-            WriteDataContextCtor(writer, schema, contextBaseType,
-                    new[] {
-                        new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) },
-                        new ParameterDefinition { Name = "mappingSource", Type = typeof(MappingSource) },
-                        new ParameterDefinition { Name = "vendor", Type = typeof(IVendor) },
-                    },
-                    new[] { "connection", "mappingSource", "vendor" },
-                    new[] { typeof(IDbConnection), typeof(MappingSource), typeof(IVendor) },
-                    context);
-        }
-
-        protected virtual void WriteDataContextExtensibilityDeclarations(CodeWriter writer, Database schema, GenerationContext context)
-        {
-            using (writer.WriteRegion("Extensibility Method Definitions"))
-            {
-                writer.WriteLine("partial void OnCreated();");
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Linq.Mapping;
+using DbLinq.Schema.Dbml;
+using DbLinq.Vendor;
+using Type = System.Type;
+
+namespace DbMetal.Generator.Implementation.CodeTextGenerator
+{
+    partial class CodeGenerator
+    {
+        protected virtual bool WriteDataContextCtor(CodeWriter writer, Database schema, Type contextBaseType,
+            ParameterDefinition[] parameters, string[] baseCallParameterNames, Type[] baseCallParameterTypes,
+            GenerationContext context)
+        {
+            // if we have a contextBaseType, then check that we can do it
+            if (contextBaseType != null)
+            {
+                var ctor = contextBaseType.GetConstructor(baseCallParameterTypes);
+                if (ctor == null)
+                    return false;
+            }
+            using (writer.WriteCtor(SpecificationDefinition.Public, schema.Class, parameters, baseCallParameterNames))
+            {
+                writer.WriteLine(writer.GetStatement(writer.GetMethodCallExpression("OnCreated")));
+            }
+            writer.WriteLine();
+            return true;
+        }
+
+        protected virtual void WriteDataContextCtors(CodeWriter writer, Database schema, Type contextBaseType, GenerationContext context)
+        {
+            // ctor taking a connections tring
+            WriteDataContextCtor(writer, schema, contextBaseType,
+                   new[] { new ParameterDefinition { Name = "connectionString", Type = typeof(string) } },
+                   new[] { "connectionString" },
+                   new[] { typeof(string) },
+                   context);
+            // the two constructors below have the same prototype, so they are mutually exclusive
+            // the base class requires a IVendor
+            if (!WriteDataContextCtor(writer, schema, contextBaseType,
+                                 new[] { new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) } },
+                                 new[] { "connection", writer.GetNewExpression(writer.GetMethodCallExpression(writer.GetLiteralFullType(context.SchemaLoader.Vendor.GetType()))) },
+                                 new[] { typeof(IDbConnection), typeof(IVendor) },
+                                 context))
+            {
+                // OR the base class requires no IVendor
+                WriteDataContextCtor(writer, schema, contextBaseType,
+                                     new[] { new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) } },
+                                     new[] { "connection" },
+                                     new[] { typeof(IDbConnection) },
+                                     context);
+            }
+            // ctor(string, MappingSource)
+            WriteDataContextCtor(writer, schema, contextBaseType,
+                   new[] {
+                       new ParameterDefinition { Name = "connection", Type = typeof(string) },
+                       new ParameterDefinition { Name = "mappingSource", Type = typeof(MappingSource) },
+                   },
+                   new[] { "connection", "mappingSource" },
+                   new[] { typeof(string), typeof (MappingSource) },
+                   context);
+            // ctor(IDbConnection, MappingSource)
+            WriteDataContextCtor(writer, schema, contextBaseType,
+                    new[] {
+                        new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) },
+                        new ParameterDefinition { Name = "mappingSource", Type = typeof(MappingSource) },
+                    },
+                    new[] { "connection", "mappingSource" },
+                    new[] { typeof(IDbConnection), typeof(MappingSource) },
+                    context);
+            // just in case you'd like to specify another vendor than the one who helped generating this file
+            WriteDataContextCtor(writer, schema, contextBaseType,
+                    new[] {
+                        new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) },
+                        new ParameterDefinition { Name = "vendor", Type = typeof(IVendor) },
+                    },
+                    new[] { "connection", "vendor" },
+                    new[] { typeof(IDbConnection), typeof(IVendor) },
+                    context);
+            WriteDataContextCtor(writer, schema, contextBaseType,
+                    new[] {
+                        new ParameterDefinition { Name = "connection", Type = typeof(IDbConnection) },
+                        new ParameterDefinition { Name = "mappingSource", Type = typeof(MappingSource) },
+                        new ParameterDefinition { Name = "vendor", Type = typeof(IVendor) },
+                    },
+                    new[] { "connection", "mappingSource", "vendor" },
+                    new[] { typeof(IDbConnection), typeof(MappingSource), typeof(IVendor) },
+                    context);
+        }
+
+        protected virtual void WriteDataContextExtensibilityDeclarations(CodeWriter writer, Database schema, GenerationContext context)
+        {
+            using (writer.WriteRegion("Extensibility Method Definitions"))
+            {
+                writer.WriteLine("partial void OnCreated();");
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Procedure.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Procedure.cs
@@ -1,171 +1,171 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Data.Linq.Mapping;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using Type = System.Type;
-
-namespace DbMetal.Generator.Implementation.CodeTextGenerator
-{
-#if !MONO_STRICT
-    public
-#endif
-    partial class CodeGenerator
-    {
-        protected virtual void WriteDataContextProcedures(CodeWriter writer, DbLinq.Schema.Dbml.Database schema, GenerationContext context)
-        {
-            foreach (var procedure in schema.Functions)
-            {
-                WriteDataContextProcedure(writer, procedure, context);
-            }
-        }
-
-        private void WriteDataContextProcedure(CodeWriter writer, Function procedure, GenerationContext context)
-        {
-            if (procedure == null || procedure.Name == null)
-            {
-                //Logger.Write(Level.Error, "CodeGenStoredProc: Error L33 Invalid storedProcedure object");
-                writer.WriteCommentLine("error L33 Invalid storedProcedure object");
-                return;
-            }
-
-            var functionAttribute = NewAttributeDefinition<FunctionAttribute>();
-            functionAttribute["Name"] = procedure.Name;
-            functionAttribute["IsComposable"] = procedure.IsComposable;
-
-            SpecificationDefinition specifications;
-            if (procedure.AccessModifierSpecified)
-                specifications = GetSpecificationDefinition(procedure.AccessModifier);
-            else
-                specifications = SpecificationDefinition.Public;
-            if (procedure.ModifierSpecified)
-                specifications |= GetSpecificationDefinition(procedure.Modifier);
-
-            using (writer.WriteAttribute(functionAttribute))
-            using (writer.WriteMethod(specifications, GetProcedureName(procedure),
-                                      GetProcedureType(procedure), GetProcedureParameters(procedure)))
-            {
-                string result = WriteProcedureBodyMethodCall(writer, procedure, context);
-                WriteProcedureBodyOutParameters(writer, procedure, result, context);
-                WriteProcedureBodyReturnValue(writer, procedure, result, context);
-            }
-            writer.WriteLine();
-        }
-
-        protected virtual void WriteProcedureBodyReturnValue(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, string result, GenerationContext context)
-        {
-            Type returnType = GetProcedureType(procedure);
-            if (returnType != null)
-                writer.WriteLine(writer.GetReturnStatement(writer.GetCastExpression(writer.GetMemberExpression(result, "ReturnValue"), writer.GetLiteralType(returnType), true)));
-        }
-
-        protected virtual void WriteProcedureBodyOutParameters(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, string result, GenerationContext context)
-        {
-            int parameterIndex = 0;
-            foreach (var parameter in procedure.Parameters)
-            {
-                if (parameter.DirectionOut)
-                    WriteProcedureBodyOutParameter(writer, parameter, result, parameterIndex, context);
-
-                parameterIndex++;
-            }
-        }
-
-        protected virtual void WriteProcedureBodyOutParameter(CodeWriter writer, DbLinq.Schema.Dbml.Parameter parameter, string result, int parameterIndex, GenerationContext context)
-        {
-            string p = writer.GetMethodCallExpression(writer.GetMemberExpression(result, "GetParameterValue"), parameterIndex.ToString());
-            string cp = writer.GetCastExpression(p, parameter.Type, true);
-            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(parameter.Name, cp)));
-        }
-
-        protected abstract string WriteProcedureBodyMethodCall(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, GenerationContext context);
-
-        protected virtual string GetProcedureName(DbLinq.Schema.Dbml.Function procedure)
-        {
-            return procedure.Method ?? procedure.Name;
-        }
-
-        protected virtual Type GetProcedureType(DbLinq.Schema.Dbml.Function procedure)
-        {
-            Type type = null;
-            if (procedure.Return != null)
-            {
-                type = GetType(procedure.Return.Type, false);
-            }
-
-            bool isDataShapeUnknown = procedure.ElementType == null
-                                      && procedure.BodyContainsSelectStatement
-                                      && !procedure.IsComposable;
-            if (isDataShapeUnknown)
-            {
-                //if we don't know the shape of results, and the proc body contains some selects,
-                //we have no choice but to return an untyped DataSet.
-                //
-                //TODO: either parse proc body like microsoft, 
-                //or create a little GUI tool which would call the proc with test values, to determine result shape.
-                type = typeof(DataSet);
-            }
-            return type;
-        }
-
-        protected virtual ParameterDefinition[] GetProcedureParameters(DbLinq.Schema.Dbml.Function procedure)
-        {
-            var parameters = new List<ParameterDefinition>();
-            foreach (var parameter in procedure.Parameters)
-                parameters.Add(GetProcedureParameter(parameter));
-            return parameters.ToArray();
-        }
-
-        protected virtual ParameterDefinition GetProcedureParameter(DbLinq.Schema.Dbml.Parameter parameter)
-        {
-            var parameterDefinition = new ParameterDefinition();
-            parameterDefinition.Name = parameter.Name;
-            parameterDefinition.Type = GetType(parameter.Type, false);
-            switch (parameter.Direction)
-            {
-            case DbLinq.Schema.Dbml.ParameterDirection.In:
-                parameterDefinition.SpecificationDefinition |= SpecificationDefinition.In;
-                break;
-            case DbLinq.Schema.Dbml.ParameterDirection.Out:
-                parameterDefinition.SpecificationDefinition |= SpecificationDefinition.Out;
-                break;
-            case DbLinq.Schema.Dbml.ParameterDirection.InOut:
-                parameterDefinition.SpecificationDefinition |= SpecificationDefinition.Ref;
-                break;
-            default:
-                throw new ArgumentOutOfRangeException();
-            }
-            parameterDefinition.Attribute = NewAttributeDefinition<ParameterAttribute>();
-            parameterDefinition.Attribute["Name"] = parameter.Name;
-            parameterDefinition.Attribute["DbType"] = parameter.DbType;
-            return parameterDefinition;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Linq.Mapping;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using Type = System.Type;
+
+namespace DbMetal.Generator.Implementation.CodeTextGenerator
+{
+#if !MONO_STRICT
+    public
+#endif
+    partial class CodeGenerator
+    {
+        protected virtual void WriteDataContextProcedures(CodeWriter writer, DbLinq.Schema.Dbml.Database schema, GenerationContext context)
+        {
+            foreach (var procedure in schema.Functions)
+            {
+                WriteDataContextProcedure(writer, procedure, context);
+            }
+        }
+
+        private void WriteDataContextProcedure(CodeWriter writer, Function procedure, GenerationContext context)
+        {
+            if (procedure == null || procedure.Name == null)
+            {
+                //Logger.Write(Level.Error, "CodeGenStoredProc: Error L33 Invalid storedProcedure object");
+                writer.WriteCommentLine("error L33 Invalid storedProcedure object");
+                return;
+            }
+
+            var functionAttribute = NewAttributeDefinition<FunctionAttribute>();
+            functionAttribute["Name"] = procedure.Name;
+            functionAttribute["IsComposable"] = procedure.IsComposable;
+
+            SpecificationDefinition specifications;
+            if (procedure.AccessModifierSpecified)
+                specifications = GetSpecificationDefinition(procedure.AccessModifier);
+            else
+                specifications = SpecificationDefinition.Public;
+            if (procedure.ModifierSpecified)
+                specifications |= GetSpecificationDefinition(procedure.Modifier);
+
+            using (writer.WriteAttribute(functionAttribute))
+            using (writer.WriteMethod(specifications, GetProcedureName(procedure),
+                                      GetProcedureType(procedure), GetProcedureParameters(procedure)))
+            {
+                string result = WriteProcedureBodyMethodCall(writer, procedure, context);
+                WriteProcedureBodyOutParameters(writer, procedure, result, context);
+                WriteProcedureBodyReturnValue(writer, procedure, result, context);
+            }
+            writer.WriteLine();
+        }
+
+        protected virtual void WriteProcedureBodyReturnValue(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, string result, GenerationContext context)
+        {
+            Type returnType = GetProcedureType(procedure);
+            if (returnType != null)
+                writer.WriteLine(writer.GetReturnStatement(writer.GetCastExpression(writer.GetMemberExpression(result, "ReturnValue"), writer.GetLiteralType(returnType), true)));
+        }
+
+        protected virtual void WriteProcedureBodyOutParameters(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, string result, GenerationContext context)
+        {
+            int parameterIndex = 0;
+            foreach (var parameter in procedure.Parameters)
+            {
+                if (parameter.DirectionOut)
+                    WriteProcedureBodyOutParameter(writer, parameter, result, parameterIndex, context);
+
+                parameterIndex++;
+            }
+        }
+
+        protected virtual void WriteProcedureBodyOutParameter(CodeWriter writer, DbLinq.Schema.Dbml.Parameter parameter, string result, int parameterIndex, GenerationContext context)
+        {
+            string p = writer.GetMethodCallExpression(writer.GetMemberExpression(result, "GetParameterValue"), parameterIndex.ToString());
+            string cp = writer.GetCastExpression(p, parameter.Type, true);
+            writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(parameter.Name, cp)));
+        }
+
+        protected abstract string WriteProcedureBodyMethodCall(CodeWriter writer, DbLinq.Schema.Dbml.Function procedure, GenerationContext context);
+
+        protected virtual string GetProcedureName(DbLinq.Schema.Dbml.Function procedure)
+        {
+            return procedure.Method ?? procedure.Name;
+        }
+
+        protected virtual Type GetProcedureType(DbLinq.Schema.Dbml.Function procedure)
+        {
+            Type type = null;
+            if (procedure.Return != null)
+            {
+                type = GetType(procedure.Return.Type, false);
+            }
+
+            bool isDataShapeUnknown = procedure.ElementType == null
+                                      && procedure.BodyContainsSelectStatement
+                                      && !procedure.IsComposable;
+            if (isDataShapeUnknown)
+            {
+                //if we don't know the shape of results, and the proc body contains some selects,
+                //we have no choice but to return an untyped DataSet.
+                //
+                //TODO: either parse proc body like microsoft, 
+                //or create a little GUI tool which would call the proc with test values, to determine result shape.
+                type = typeof(DataSet);
+            }
+            return type;
+        }
+
+        protected virtual ParameterDefinition[] GetProcedureParameters(DbLinq.Schema.Dbml.Function procedure)
+        {
+            var parameters = new List<ParameterDefinition>();
+            foreach (var parameter in procedure.Parameters)
+                parameters.Add(GetProcedureParameter(parameter));
+            return parameters.ToArray();
+        }
+
+        protected virtual ParameterDefinition GetProcedureParameter(DbLinq.Schema.Dbml.Parameter parameter)
+        {
+            var parameterDefinition = new ParameterDefinition();
+            parameterDefinition.Name = parameter.Name;
+            parameterDefinition.Type = GetType(parameter.Type, false);
+            switch (parameter.Direction)
+            {
+            case DbLinq.Schema.Dbml.ParameterDirection.In:
+                parameterDefinition.SpecificationDefinition |= SpecificationDefinition.In;
+                break;
+            case DbLinq.Schema.Dbml.ParameterDirection.Out:
+                parameterDefinition.SpecificationDefinition |= SpecificationDefinition.Out;
+                break;
+            case DbLinq.Schema.Dbml.ParameterDirection.InOut:
+                parameterDefinition.SpecificationDefinition |= SpecificationDefinition.Ref;
+                break;
+            default:
+                throw new ArgumentOutOfRangeException();
+            }
+            parameterDefinition.Attribute = NewAttributeDefinition<ParameterAttribute>();
+            parameterDefinition.Attribute["Name"] = parameter.Name;
+            parameterDefinition.Attribute["DbType"] = parameter.DbType;
+            return parameterDefinition;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.cs
@@ -1,466 +1,466 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using DbLinq.Data.Linq;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Schema.Dbml.Adapter;
-using DbLinq.Util;
-using Type = System.Type;
-
-#if MONO_STRICT
-using System.Data.Linq;
-#endif
-
-namespace DbMetal.Generator.Implementation.CodeTextGenerator
-{
-#if !MONO_STRICT
-    public
-#endif
-    abstract partial class CodeGenerator : ICodeGenerator
-    {
-        public abstract string LanguageCode { get; }
-        public abstract string Extension { get; }
-
-        protected class MassDisposer : IDisposable
-        {
-            public IList<IDisposable> Disposables = new List<IDisposable>();
-
-            public void Dispose()
-            {
-                for (int index = Disposables.Count - 1; index > 0; index--)
-                {
-                    Disposables[index].Dispose();
-                }
-            }
-        }
-
-        protected abstract CodeWriter CreateCodeWriter(TextWriter textWriter);
-
-        public void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
-        {
-            if (dbSchema == null || dbSchema.Tables == null)
-            {
-                //Logger.Write(Level.Error, "CodeGenAll ERROR: incomplete dbSchema, cannot start generating code");
-                return;
-            }
-
-            context["namespace"] = string.IsNullOrEmpty(context.Parameters.Namespace)
-                                       ? dbSchema.ContextNamespace
-                                       : context.Parameters.Namespace;
-            context["database"] = dbSchema.Name;
-            context["generationTime"] = context.Parameters.GenerateTimestamps
-                ? DateTime.Now.ToString("u")
-                : "[TIMESTAMP]";
-            context["class"] = dbSchema.Class;
-
-            using (var codeWriter = CreateCodeWriter(textWriter))
-            {
-                WriteBanner(codeWriter, context);
-                WriteUsings(codeWriter, context);
-
-                string contextNamespace = context.Parameters.Namespace;
-                if (string.IsNullOrEmpty(contextNamespace))
-                    contextNamespace = dbSchema.ContextNamespace;
-
-                string entityNamespace = context.Parameters.Namespace;
-                if (string.IsNullOrEmpty(entityNamespace))
-                    entityNamespace = dbSchema.EntityNamespace;
-
-                bool generateDataContext = true;
-                var types = context.Parameters.GenerateTypes;
-                if (types.Count > 0)
-                    generateDataContext = types.Contains(dbSchema.Class);
-
-                if (contextNamespace == entityNamespace)
-                {
-                    using (WriteNamespace(codeWriter, contextNamespace))
-                    {
-                        if (generateDataContext)
-                            WriteDataContext(codeWriter, dbSchema, context);
-                        WriteClasses(codeWriter, dbSchema, context);
-                    }
-                }
-                else
-                {
-                    if (generateDataContext)
-                        using (WriteNamespace(codeWriter, contextNamespace))
-                            WriteDataContext(codeWriter, dbSchema, context);
-                    using (WriteNamespace(codeWriter, entityNamespace))
-                        WriteClasses(codeWriter, dbSchema, context);
-                }
-            }
-        }
-
-        private void WriteBanner(CodeWriter writer, GenerationContext context)
-        {
-            using (writer.WriteRegion(context.Evaluate("Auto-generated classes for ${database} database on ${generationTime}")))
-            {
-                // http://www.network-science.de/ascii/
-                // http://www.network-science.de/ascii/ascii.php?TEXT=MetalSequel&x=14&y=14&FONT=_all+fonts+with+your+text_&RICH=no&FORM=left&STRE=no&WIDT=80 
-                writer.WriteCommentLines(
-                    @"
- ____  _     __  __      _        _ 
-|  _ \| |__ |  \/  | ___| |_ __ _| |
-| | | | '_ \| |\/| |/ _ \ __/ _` | |
-| |_| | |_) | |  | |  __/ || (_| | |
-|____/|_.__/|_|  |_|\___|\__\__,_|_|
-");
-                writer.WriteCommentLines(context.Evaluate("Auto-generated from ${database} on ${generationTime}"));
-                writer.WriteCommentLines("Please visit http://linq.to/db for more information");
-            }
-        }
-
-        private void WriteUsings(CodeWriter writer, GenerationContext context)
-        {
-            writer.WriteUsingNamespace("System");
-            writer.WriteUsingNamespace("System.Data");
-            writer.WriteUsingNamespace("System.Data.Linq.Mapping");
-            writer.WriteUsingNamespace("System.Diagnostics");
-            writer.WriteUsingNamespace("System.Reflection");
-
-#if MONO_STRICT
-            writer.WriteUsingNamespace("System.Data.Linq");
-#else
-            writer.WriteLine("#if MONO_STRICT");
-            writer.WriteUsingNamespace("System.Data.Linq");
-            writer.WriteLine("#else   // MONO_STRICT");
-            writer.WriteUsingNamespace("DbLinq.Data.Linq");
-            writer.WriteUsingNamespace("DbLinq.Vendor");
-            writer.WriteLine("#endif  // MONO_STRICT");
-#endif
-
-            //            writer.WriteUsingNamespace("System");
-            //            writer.WriteUsingNamespace("System.Collections.Generic");
-            //            writer.WriteUsingNamespace("System.ComponentModel");
-            //            writer.WriteUsingNamespace("System.Data");
-            //            writer.WriteUsingNamespace("System.Data.Linq.Mapping");
-            //            writer.WriteUsingNamespace("System.Diagnostics");
-            //            writer.WriteUsingNamespace("System.Linq");
-            //            writer.WriteUsingNamespace("System.Reflection");
-            //            writer.WriteUsingNamespace("System.Text");
-            //#if MONO_STRICT
-            //            writer.WriteUsingNamespace("System.Data.Linq");
-            //#else
-            //            writer.WriteUsingNamespace("DbLinq.Data.Linq");
-            //            writer.WriteUsingNamespace("DbLinq.Data.Linq.Mapping");
-            //#endif
-
-            // now, we write usings required by implemented interfaces
-            foreach (var implementation in context.Implementations())
-                implementation.WriteHeader(writer, context);
-
-            // write namespaces for members attributes
-            foreach (var memberAttribute in context.Parameters.MemberAttributes)
-                WriteUsingNamespace(writer, GetNamespace(memberAttribute));
-
-            writer.WriteLine();
-        }
-
-        /// <summary>
-        /// Writes a using, if given namespace is not null or empty
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="nameSpace"></param>
-        protected virtual void WriteUsingNamespace(CodeWriter writer, string nameSpace)
-        {
-            if (!string.IsNullOrEmpty(nameSpace))
-                writer.WriteUsingNamespace(nameSpace);
-        }
-
-        protected virtual string GetNamespace(string fullName)
-        {
-            var namePartIndex = fullName.LastIndexOf('.');
-            // if we have a dot, we have a namespace
-            if (namePartIndex < 0)
-                return null;
-            return fullName.Substring(0, namePartIndex);
-        }
-
-        private IDisposable WriteNamespace(CodeWriter writer, string nameSpace)
-        {
-            if (!string.IsNullOrEmpty(nameSpace))
-                return writer.WriteNamespace(nameSpace);
-            return null;
-        }
-
-        private void WriteDataContext(CodeWriter writer, Database schema, GenerationContext context)
-        {
-            if (schema.Tables.Count == 0)
-            {
-                writer.WriteCommentLine("L69 no tables found");
-                return;
-            }
-
-
-            string contextBase = schema.BaseType;
-            var contextBaseType = string.IsNullOrEmpty(contextBase)
-                ? typeof(DataContext)
-                : TypeLoader.Load(contextBase);
-
-            // in all cases, get the literal type name from loaded type
-            contextBase = writer.GetLiteralType(contextBaseType);
-
-            var specifications = SpecificationDefinition.Partial;
-            if (schema.AccessModifierSpecified)
-                specifications |= GetSpecificationDefinition(schema.AccessModifier);
-            else
-                specifications |= SpecificationDefinition.Public;
-            if (schema.ModifierSpecified)
-                specifications |= GetSpecificationDefinition(schema.Modifier);
-            using (writer.WriteClass(specifications, schema.Class, contextBase))
-            {
-                WriteDataContextExtensibilityDeclarations(writer, schema, context);
-                WriteDataContextCtors(writer, schema, contextBaseType, context);
-                WriteDataContextTables(writer, schema, context);
-                WriteDataContextProcedures(writer, schema, context);
-            }
-        }
-
-        private void WriteDataContextTables(CodeWriter writer, Database schema, GenerationContext context)
-        {
-            foreach (var table in schema.Tables)
-                WriteDataContextTable(writer, table);
-            writer.WriteLine();
-        }
-
-        protected abstract void WriteDataContextTable(CodeWriter writer, Table table);
-
-        protected virtual Type GetType(string literalType, bool canBeNull)
-        {
-            bool isNullable = literalType.EndsWith("?");
-            if (isNullable)
-                literalType = literalType.Substring(0, literalType.Length - 1);
-            bool isArray = literalType.EndsWith("[]");
-            if (isArray)
-                literalType = literalType.Substring(0, literalType.Length - 2);
-            Type type = GetSimpleType(literalType);
-            if (type == null)
-                return type;
-            if (isArray)
-                type = type.MakeArrayType();
-            if (isNullable)
-                type = typeof(Nullable<>).MakeGenericType(type);
-            else if (canBeNull)
-            {
-                if (type.IsValueType)
-                    type = typeof(Nullable<>).MakeGenericType(type);
-            }
-            return type;
-        }
-
-        private Type GetSimpleType(string literalType)
-        {
-            switch (literalType)
-            {
-            case "string":
-                return typeof(string);
-            case "long":
-                return typeof(long);
-            case "short":
-                return typeof(short);
-            case "int":
-                return typeof(int);
-            case "char":
-                return typeof(char);
-            case "byte":
-                return typeof(byte);
-            case "float":
-                return typeof(float);
-            case "double":
-                return typeof(double);
-            case "decimal":
-                return typeof(decimal);
-            case "bool":
-                return typeof(bool);
-            case "DateTime":
-                return typeof(DateTime);
-            case "object":
-                return typeof(object);
-            default:
-                return Type.GetType(literalType);
-            }
-        }
-
-        protected string GetAttributeShortName<T>()
-            where T : Attribute
-        {
-            string literalAttribute = typeof(T).Name;
-            string end = "Attribute";
-            if (literalAttribute.EndsWith(end))
-                literalAttribute = literalAttribute.Substring(0, literalAttribute.Length - end.Length);
-            return literalAttribute;
-        }
-
-        protected AttributeDefinition NewAttributeDefinition<T>()
-            where T : Attribute
-        {
-            return new AttributeDefinition(GetAttributeShortName<T>());
-        }
-
-        protected IDisposable WriteAttributes(CodeWriter writer, params AttributeDefinition[] definitions)
-        {
-            var massDisposer = new MassDisposer();
-            foreach (var definition in definitions)
-                massDisposer.Disposables.Add(writer.WriteAttribute(definition));
-            return massDisposer;
-        }
-
-        protected IDisposable WriteAttributes(CodeWriter writer, params string[] definitions)
-        {
-            var attributeDefinitions = new List<AttributeDefinition>();
-            foreach (string definition in definitions)
-                attributeDefinitions.Add(new AttributeDefinition(definition));
-            return WriteAttributes(writer, attributeDefinitions.ToArray());
-        }
-
-        protected virtual SpecificationDefinition GetSpecificationDefinition(AccessModifier accessModifier)
-        {
-            switch (accessModifier)
-            {
-            case AccessModifier.Public:
-                return SpecificationDefinition.Public;
-            case AccessModifier.Internal:
-                return SpecificationDefinition.Internal;
-            case AccessModifier.Protected:
-                return SpecificationDefinition.Protected;
-            case AccessModifier.ProtectedInternal:
-                return SpecificationDefinition.Protected | SpecificationDefinition.Internal;
-            case AccessModifier.Private:
-                return SpecificationDefinition.Private;
-            default:
-                throw new ArgumentOutOfRangeException("accessModifier");
-            }
-        }
-
-        protected virtual SpecificationDefinition GetSpecificationDefinition(ClassModifier classModifier)
-        {
-            switch (classModifier)
-            {
-            case ClassModifier.Sealed:
-                return SpecificationDefinition.Sealed;
-            case ClassModifier.Abstract:
-                return SpecificationDefinition.Abstract;
-            default:
-                throw new ArgumentOutOfRangeException("classModifier");
-            }
-        }
-
-        protected virtual SpecificationDefinition GetSpecificationDefinition(MemberModifier memberModifier)
-        {
-            switch (memberModifier)
-            {
-            case MemberModifier.Virtual:
-                return SpecificationDefinition.Virtual;
-            case MemberModifier.Override:
-                return SpecificationDefinition.Override;
-            case MemberModifier.New:
-                return SpecificationDefinition.New;
-            case MemberModifier.NewVirtual:
-                return SpecificationDefinition.New | SpecificationDefinition.Virtual;
-            default:
-                throw new ArgumentOutOfRangeException("memberModifier");
-            }
-        }
-
-        /// <summary>
-        /// The "custom types" are types related to a class
-        /// Currently, we only support enums (non-standard)
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="table"></param>
-        /// <param name="schema"></param>
-        /// <param name="context"></param>
-        protected virtual void WriteCustomTypes(CodeWriter writer, Table table, Database schema, GenerationContext context)
-        {
-            // detect required custom types
-            foreach (var column in table.Type.Columns)
-            {
-                var extendedType = column.ExtendedType;
-                var enumType = extendedType as EnumType;
-                if (enumType != null)
-                {
-                    context.ExtendedTypes[column] = new GenerationContext.ExtendedTypeAndName
-                    {
-                        Type = column.ExtendedType,
-                        Table = table
-                    };
-                }
-            }
-
-            var customTypesNames = new List<string>();
-
-            // create names and avoid conflits
-            foreach (var extendedTypePair in context.ExtendedTypes)
-            {
-                if (extendedTypePair.Value.Table != table)
-                    continue;
-
-                if (string.IsNullOrEmpty(extendedTypePair.Value.Type.Name))
-                {
-                    string name = extendedTypePair.Key.Member + "Type";
-                    for (; ; )
-                    {
-                        if ((from t in context.ExtendedTypes.Values where t.Type.Name == name select t).FirstOrDefault() == null)
-                        {
-                            extendedTypePair.Value.Type.Name = name;
-                            break;
-                        }
-                        // at 3rd loop, it will look ugly, however we will never go there
-                        name = extendedTypePair.Value.Table.Type.Name + name;
-                    }
-                }
-                customTypesNames.Add(extendedTypePair.Value.Type.Name);
-            }
-
-            // write custom types
-            if (customTypesNames.Count > 0)
-            {
-                using (writer.WriteRegion(string.Format("Custom type definition for {0}", string.Join(", ", customTypesNames.ToArray()))))
-                {
-                    // write types
-                    foreach (var extendedTypePair in context.ExtendedTypes)
-                    {
-                        if (extendedTypePair.Value.Table != table)
-                            continue;
-
-                        var extendedType = extendedTypePair.Value.Type;
-                        var enumValue = extendedType as EnumType;
-
-                        if (enumValue != null)
-                        {
-                            writer.WriteEnum(GetSpecificationDefinition(extendedTypePair.Key.AccessModifier),
-                                             enumValue.Name, enumValue);
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using DbLinq.Data.Linq;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Schema.Dbml.Adapter;
+using DbLinq.Util;
+using Type = System.Type;
+
+#if MONO_STRICT
+using System.Data.Linq;
+#endif
+
+namespace DbMetal.Generator.Implementation.CodeTextGenerator
+{
+#if !MONO_STRICT
+    public
+#endif
+    abstract partial class CodeGenerator : ICodeGenerator
+    {
+        public abstract string LanguageCode { get; }
+        public abstract string Extension { get; }
+
+        protected class MassDisposer : IDisposable
+        {
+            public IList<IDisposable> Disposables = new List<IDisposable>();
+
+            public void Dispose()
+            {
+                for (int index = Disposables.Count - 1; index > 0; index--)
+                {
+                    Disposables[index].Dispose();
+                }
+            }
+        }
+
+        protected abstract CodeWriter CreateCodeWriter(TextWriter textWriter);
+
+        public void Write(TextWriter textWriter, Database dbSchema, GenerationContext context)
+        {
+            if (dbSchema == null || dbSchema.Tables == null)
+            {
+                //Logger.Write(Level.Error, "CodeGenAll ERROR: incomplete dbSchema, cannot start generating code");
+                return;
+            }
+
+            context["namespace"] = string.IsNullOrEmpty(context.Parameters.Namespace)
+                                       ? dbSchema.ContextNamespace
+                                       : context.Parameters.Namespace;
+            context["database"] = dbSchema.Name;
+            context["generationTime"] = context.Parameters.GenerateTimestamps
+                ? DateTime.Now.ToString("u")
+                : "[TIMESTAMP]";
+            context["class"] = dbSchema.Class;
+
+            using (var codeWriter = CreateCodeWriter(textWriter))
+            {
+                WriteBanner(codeWriter, context);
+                WriteUsings(codeWriter, context);
+
+                string contextNamespace = context.Parameters.Namespace;
+                if (string.IsNullOrEmpty(contextNamespace))
+                    contextNamespace = dbSchema.ContextNamespace;
+
+                string entityNamespace = context.Parameters.Namespace;
+                if (string.IsNullOrEmpty(entityNamespace))
+                    entityNamespace = dbSchema.EntityNamespace;
+
+                bool generateDataContext = true;
+                var types = context.Parameters.GenerateTypes;
+                if (types.Count > 0)
+                    generateDataContext = types.Contains(dbSchema.Class);
+
+                if (contextNamespace == entityNamespace)
+                {
+                    using (WriteNamespace(codeWriter, contextNamespace))
+                    {
+                        if (generateDataContext)
+                            WriteDataContext(codeWriter, dbSchema, context);
+                        WriteClasses(codeWriter, dbSchema, context);
+                    }
+                }
+                else
+                {
+                    if (generateDataContext)
+                        using (WriteNamespace(codeWriter, contextNamespace))
+                            WriteDataContext(codeWriter, dbSchema, context);
+                    using (WriteNamespace(codeWriter, entityNamespace))
+                        WriteClasses(codeWriter, dbSchema, context);
+                }
+            }
+        }
+
+        private void WriteBanner(CodeWriter writer, GenerationContext context)
+        {
+            using (writer.WriteRegion(context.Evaluate("Auto-generated classes for ${database} database on ${generationTime}")))
+            {
+                // http://www.network-science.de/ascii/
+                // http://www.network-science.de/ascii/ascii.php?TEXT=MetalSequel&x=14&y=14&FONT=_all+fonts+with+your+text_&RICH=no&FORM=left&STRE=no&WIDT=80 
+                writer.WriteCommentLines(
+                    @"
+ ____  _     __  __      _        _ 
+|  _ \| |__ |  \/  | ___| |_ __ _| |
+| | | | '_ \| |\/| |/ _ \ __/ _` | |
+| |_| | |_) | |  | |  __/ || (_| | |
+|____/|_.__/|_|  |_|\___|\__\__,_|_|
+");
+                writer.WriteCommentLines(context.Evaluate("Auto-generated from ${database} on ${generationTime}"));
+                writer.WriteCommentLines("Please visit http://linq.to/db for more information");
+            }
+        }
+
+        private void WriteUsings(CodeWriter writer, GenerationContext context)
+        {
+            writer.WriteUsingNamespace("System");
+            writer.WriteUsingNamespace("System.Data");
+            writer.WriteUsingNamespace("System.Data.Linq.Mapping");
+            writer.WriteUsingNamespace("System.Diagnostics");
+            writer.WriteUsingNamespace("System.Reflection");
+
+#if MONO_STRICT
+            writer.WriteUsingNamespace("System.Data.Linq");
+#else
+            writer.WriteLine("#if MONO_STRICT");
+            writer.WriteUsingNamespace("System.Data.Linq");
+            writer.WriteLine("#else   // MONO_STRICT");
+            writer.WriteUsingNamespace("DbLinq.Data.Linq");
+            writer.WriteUsingNamespace("DbLinq.Vendor");
+            writer.WriteLine("#endif  // MONO_STRICT");
+#endif
+
+            //            writer.WriteUsingNamespace("System");
+            //            writer.WriteUsingNamespace("System.Collections.Generic");
+            //            writer.WriteUsingNamespace("System.ComponentModel");
+            //            writer.WriteUsingNamespace("System.Data");
+            //            writer.WriteUsingNamespace("System.Data.Linq.Mapping");
+            //            writer.WriteUsingNamespace("System.Diagnostics");
+            //            writer.WriteUsingNamespace("System.Linq");
+            //            writer.WriteUsingNamespace("System.Reflection");
+            //            writer.WriteUsingNamespace("System.Text");
+            //#if MONO_STRICT
+            //            writer.WriteUsingNamespace("System.Data.Linq");
+            //#else
+            //            writer.WriteUsingNamespace("DbLinq.Data.Linq");
+            //            writer.WriteUsingNamespace("DbLinq.Data.Linq.Mapping");
+            //#endif
+
+            // now, we write usings required by implemented interfaces
+            foreach (var implementation in context.Implementations())
+                implementation.WriteHeader(writer, context);
+
+            // write namespaces for members attributes
+            foreach (var memberAttribute in context.Parameters.MemberAttributes)
+                WriteUsingNamespace(writer, GetNamespace(memberAttribute));
+
+            writer.WriteLine();
+        }
+
+        /// <summary>
+        /// Writes a using, if given namespace is not null or empty
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="nameSpace"></param>
+        protected virtual void WriteUsingNamespace(CodeWriter writer, string nameSpace)
+        {
+            if (!string.IsNullOrEmpty(nameSpace))
+                writer.WriteUsingNamespace(nameSpace);
+        }
+
+        protected virtual string GetNamespace(string fullName)
+        {
+            var namePartIndex = fullName.LastIndexOf('.');
+            // if we have a dot, we have a namespace
+            if (namePartIndex < 0)
+                return null;
+            return fullName.Substring(0, namePartIndex);
+        }
+
+        private IDisposable WriteNamespace(CodeWriter writer, string nameSpace)
+        {
+            if (!string.IsNullOrEmpty(nameSpace))
+                return writer.WriteNamespace(nameSpace);
+            return null;
+        }
+
+        private void WriteDataContext(CodeWriter writer, Database schema, GenerationContext context)
+        {
+            if (schema.Tables.Count == 0)
+            {
+                writer.WriteCommentLine("L69 no tables found");
+                return;
+            }
+
+
+            string contextBase = schema.BaseType;
+            var contextBaseType = string.IsNullOrEmpty(contextBase)
+                ? typeof(DataContext)
+                : TypeLoader.Load(contextBase);
+
+            // in all cases, get the literal type name from loaded type
+            contextBase = writer.GetLiteralType(contextBaseType);
+
+            var specifications = SpecificationDefinition.Partial;
+            if (schema.AccessModifierSpecified)
+                specifications |= GetSpecificationDefinition(schema.AccessModifier);
+            else
+                specifications |= SpecificationDefinition.Public;
+            if (schema.ModifierSpecified)
+                specifications |= GetSpecificationDefinition(schema.Modifier);
+            using (writer.WriteClass(specifications, schema.Class, contextBase))
+            {
+                WriteDataContextExtensibilityDeclarations(writer, schema, context);
+                WriteDataContextCtors(writer, schema, contextBaseType, context);
+                WriteDataContextTables(writer, schema, context);
+                WriteDataContextProcedures(writer, schema, context);
+            }
+        }
+
+        private void WriteDataContextTables(CodeWriter writer, Database schema, GenerationContext context)
+        {
+            foreach (var table in schema.Tables)
+                WriteDataContextTable(writer, table);
+            writer.WriteLine();
+        }
+
+        protected abstract void WriteDataContextTable(CodeWriter writer, Table table);
+
+        protected virtual Type GetType(string literalType, bool canBeNull)
+        {
+            bool isNullable = literalType.EndsWith("?");
+            if (isNullable)
+                literalType = literalType.Substring(0, literalType.Length - 1);
+            bool isArray = literalType.EndsWith("[]");
+            if (isArray)
+                literalType = literalType.Substring(0, literalType.Length - 2);
+            Type type = GetSimpleType(literalType);
+            if (type == null)
+                return type;
+            if (isArray)
+                type = type.MakeArrayType();
+            if (isNullable)
+                type = typeof(Nullable<>).MakeGenericType(type);
+            else if (canBeNull)
+            {
+                if (type.IsValueType)
+                    type = typeof(Nullable<>).MakeGenericType(type);
+            }
+            return type;
+        }
+
+        private Type GetSimpleType(string literalType)
+        {
+            switch (literalType)
+            {
+            case "string":
+                return typeof(string);
+            case "long":
+                return typeof(long);
+            case "short":
+                return typeof(short);
+            case "int":
+                return typeof(int);
+            case "char":
+                return typeof(char);
+            case "byte":
+                return typeof(byte);
+            case "float":
+                return typeof(float);
+            case "double":
+                return typeof(double);
+            case "decimal":
+                return typeof(decimal);
+            case "bool":
+                return typeof(bool);
+            case "DateTime":
+                return typeof(DateTime);
+            case "object":
+                return typeof(object);
+            default:
+                return Type.GetType(literalType);
+            }
+        }
+
+        protected string GetAttributeShortName<T>()
+            where T : Attribute
+        {
+            string literalAttribute = typeof(T).Name;
+            string end = "Attribute";
+            if (literalAttribute.EndsWith(end))
+                literalAttribute = literalAttribute.Substring(0, literalAttribute.Length - end.Length);
+            return literalAttribute;
+        }
+
+        protected AttributeDefinition NewAttributeDefinition<T>()
+            where T : Attribute
+        {
+            return new AttributeDefinition(GetAttributeShortName<T>());
+        }
+
+        protected IDisposable WriteAttributes(CodeWriter writer, params AttributeDefinition[] definitions)
+        {
+            var massDisposer = new MassDisposer();
+            foreach (var definition in definitions)
+                massDisposer.Disposables.Add(writer.WriteAttribute(definition));
+            return massDisposer;
+        }
+
+        protected IDisposable WriteAttributes(CodeWriter writer, params string[] definitions)
+        {
+            var attributeDefinitions = new List<AttributeDefinition>();
+            foreach (string definition in definitions)
+                attributeDefinitions.Add(new AttributeDefinition(definition));
+            return WriteAttributes(writer, attributeDefinitions.ToArray());
+        }
+
+        protected virtual SpecificationDefinition GetSpecificationDefinition(AccessModifier accessModifier)
+        {
+            switch (accessModifier)
+            {
+            case AccessModifier.Public:
+                return SpecificationDefinition.Public;
+            case AccessModifier.Internal:
+                return SpecificationDefinition.Internal;
+            case AccessModifier.Protected:
+                return SpecificationDefinition.Protected;
+            case AccessModifier.ProtectedInternal:
+                return SpecificationDefinition.Protected | SpecificationDefinition.Internal;
+            case AccessModifier.Private:
+                return SpecificationDefinition.Private;
+            default:
+                throw new ArgumentOutOfRangeException("accessModifier");
+            }
+        }
+
+        protected virtual SpecificationDefinition GetSpecificationDefinition(ClassModifier classModifier)
+        {
+            switch (classModifier)
+            {
+            case ClassModifier.Sealed:
+                return SpecificationDefinition.Sealed;
+            case ClassModifier.Abstract:
+                return SpecificationDefinition.Abstract;
+            default:
+                throw new ArgumentOutOfRangeException("classModifier");
+            }
+        }
+
+        protected virtual SpecificationDefinition GetSpecificationDefinition(MemberModifier memberModifier)
+        {
+            switch (memberModifier)
+            {
+            case MemberModifier.Virtual:
+                return SpecificationDefinition.Virtual;
+            case MemberModifier.Override:
+                return SpecificationDefinition.Override;
+            case MemberModifier.New:
+                return SpecificationDefinition.New;
+            case MemberModifier.NewVirtual:
+                return SpecificationDefinition.New | SpecificationDefinition.Virtual;
+            default:
+                throw new ArgumentOutOfRangeException("memberModifier");
+            }
+        }
+
+        /// <summary>
+        /// The "custom types" are types related to a class
+        /// Currently, we only support enums (non-standard)
+        /// </summary>
+        /// <param name="writer"></param>
+        /// <param name="table"></param>
+        /// <param name="schema"></param>
+        /// <param name="context"></param>
+        protected virtual void WriteCustomTypes(CodeWriter writer, Table table, Database schema, GenerationContext context)
+        {
+            // detect required custom types
+            foreach (var column in table.Type.Columns)
+            {
+                var extendedType = column.ExtendedType;
+                var enumType = extendedType as EnumType;
+                if (enumType != null)
+                {
+                    context.ExtendedTypes[column] = new GenerationContext.ExtendedTypeAndName
+                    {
+                        Type = column.ExtendedType,
+                        Table = table
+                    };
+                }
+            }
+
+            var customTypesNames = new List<string>();
+
+            // create names and avoid conflits
+            foreach (var extendedTypePair in context.ExtendedTypes)
+            {
+                if (extendedTypePair.Value.Table != table)
+                    continue;
+
+                if (string.IsNullOrEmpty(extendedTypePair.Value.Type.Name))
+                {
+                    string name = extendedTypePair.Key.Member + "Type";
+                    for (; ; )
+                    {
+                        if ((from t in context.ExtendedTypes.Values where t.Type.Name == name select t).FirstOrDefault() == null)
+                        {
+                            extendedTypePair.Value.Type.Name = name;
+                            break;
+                        }
+                        // at 3rd loop, it will look ugly, however we will never go there
+                        name = extendedTypePair.Value.Table.Type.Name + name;
+                    }
+                }
+                customTypesNames.Add(extendedTypePair.Value.Type.Name);
+            }
+
+            // write custom types
+            if (customTypesNames.Count > 0)
+            {
+                using (writer.WriteRegion(string.Format("Custom type definition for {0}", string.Join(", ", customTypesNames.ToArray()))))
+                {
+                    // write types
+                    foreach (var extendedTypePair in context.ExtendedTypes)
+                    {
+                        if (extendedTypePair.Value.Table != table)
+                            continue;
+
+                        var extendedType = extendedTypePair.Value.Type;
+                        var enumValue = extendedType as EnumType;
+
+                        if (enumValue != null)
+                        {
+                            writer.WriteEnum(GetSpecificationDefinition(extendedTypePair.Key.AccessModifier),
+                                             enumValue.Name, enumValue);
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/Processor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/Processor.cs
@@ -1,302 +1,302 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using DbLinq.Factory;
-using DbLinq.Schema;
-using DbLinq.Schema.Dbml;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbMetal.Schema;
-
-using Mono.Options;
-
-namespace DbMetal.Generator.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    class Processor : IProcessor
-    {
-        private TextWriter log;
-        /// <summary>
-        /// Log output
-        /// </summary>
-        public TextWriter Log
-        {
-            get { return log ?? Console.Out; }
-            set
-            {
-                log = value;
-                SchemaLoaderFactory.Log = value;
-            }
-        }
-
-        public ISchemaLoaderFactory SchemaLoaderFactory { get; set; }
-
-        public Processor()
-        {
-            //for DbMetal for want to log to console
-            //for VisualMetal we want to log to log4net
-            //Logger = ObjectFactory.Get<ILogger>();
-            SchemaLoaderFactory = ObjectFactory.Get<ISchemaLoaderFactory>();
-        }
-
-        public void Process(string[] args)
-        {
-            var parameters = new Parameters { Log = Log };
-
-            parameters.WriteHeader();
-
-            try
-            {
-                parameters.Parse(args);
-            }
-            catch (Exception e)
-            {
-                Output.WriteErrorLine(Log, e.Message);
-                PrintUsage(parameters);
-                return;
-            }
-
-            if (args.Length == 0 || parameters.Help)
-            {
-                PrintUsage(parameters);
-                return;
-            }
-
-            ProcessSchema(parameters);
-
-            if (parameters.Readline)
-            {
-                // '-readLineAtExit' flag: useful when running from Visual Studio
-                Console.ReadKey();
-            }
-        }
-
-        private void ProcessSchema(Parameters parameters)
-        {
-            try
-            {
-                // we always need a factory, even if generating from a DBML file, because we need a namespace
-                ISchemaLoader schemaLoader;
-                // then we load the schema
-                var dbSchema = ReadSchema(parameters, out schemaLoader);
-
-                if (!SchemaIsValid(dbSchema))
-                    return;
-
-                // the we write it (to DBML or code)
-                WriteSchema(dbSchema, schemaLoader, parameters);
-            }
-            catch (Exception ex)
-            {
-                string assemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
-                Log.WriteErrorLine(assemblyName + ": {0}", parameters.Debug ? ex.ToString() : ex.Message);
-            }
-        }
-
-        bool SchemaIsValid(Database database)
-        {
-            bool error = false;
-            foreach (var table in database.Tables)
-            {
-                error = ValidateAssociations(database, table) || error;
-            }
-            return !error;
-        }
-
-        bool ValidateAssociations(Database database, Table table)
-        {
-            bool error = false;
-            foreach (var association in table.Type.Associations)
-            {
-                var otherType           = database.Tables.Single(t => t.Type.Name == association.Type).Type;
-                var otherAssociation    = otherType.Associations.Single(a => a.Type == table.Type.Name && a.ThisKey == association.OtherKey);
-                var otherColumn         = otherType.Columns.Single(c => c.Member == association.OtherKey);
-
-                if (association.CardinalitySpecified && association.Cardinality == Cardinality.Many && association.IsForeignKey)
-                {
-                    error = true;
-                    Log.WriteErrorLine("Error DBML1059: The IsForeignKey attribute of the Association element '{0}' of the Type element '{1}' cannnot be '{2}' when the Cardinality attribute is '{3}'.",
-                            association.Name, table.Type.Name, association.IsForeignKey, association.Cardinality);
-                }
-            }
-            return error;
-        }
-
-        protected void WriteSchema(Database dbSchema, ISchemaLoader schemaLoader, Parameters parameters)
-        {
-            if (parameters.Dbml != null)
-            {
-                //we are supposed to write out a DBML file and exit
-                parameters.Write("<<< Writing file '{0}'", parameters.Dbml);
-                using (Stream dbmlFile = File.Create(parameters.Dbml))
-                {
-                    DbmlSerializer.Write(dbmlFile, dbSchema);
-                }
-            }
-            else
-            {
-                if (!parameters.Schema)
-                    RemoveSchemaFromTables(dbSchema);
-
-                // extract filename from output filename, database schema or schema name
-                string filename = parameters.Code;
-                if (string.IsNullOrEmpty(filename) && !string.IsNullOrEmpty(parameters.Database))
-                    filename = parameters.Database.Replace("\"", "");
-                if (string.IsNullOrEmpty(filename))
-                    filename = dbSchema.Name;
-
-                parameters.Write("<<< writing C# classes in file '{0}'", filename);
-                GenerateCode(parameters, dbSchema, schemaLoader, filename);
-
-            }
-        }
-
-        protected void RemoveSchemaFromTables(Database schema)
-        {
-            foreach (var table in schema.Table)
-            {
-                string[] nameAndSchema = table.Name.Split('.');
-                table.Name = nameAndSchema[nameAndSchema.Length - 1];
-            }
-        }
-
-        public virtual IEnumerable<ICodeGenerator> EnumerateCodeGenerators()
-        {
-            foreach (var codeGeneratorType in ObjectFactory.Current.GetImplementations(typeof(ICodeGenerator)))
-            {
-                yield return (ICodeGenerator)ObjectFactory.Current.Get(codeGeneratorType);
-            }
-        }
-
-        protected virtual ICodeGenerator FindCodeGeneratorByLanguage(string languageCode)
-        {
-            return (from codeGenerator in EnumerateCodeGenerators()
-                    where codeGenerator.LanguageCode == languageCode
-                    select codeGenerator).SingleOrDefault();
-        }
-
-        protected virtual ICodeGenerator FindCodeGeneratorByExtension(string extension)
-        {
-            return EnumerateCodeGenerators().SingleOrDefault(gen => gen.Extension == extension.ToLowerInvariant());
-        }
-
-        public virtual ICodeGenerator FindCodeGenerator(Parameters parameters, string filename)
-        {
-            if (!string.IsNullOrEmpty(parameters.Language))
-                return FindCodeGeneratorByLanguage(parameters.Language);
-            return FindCodeGeneratorByExtension(Path.GetExtension(filename));
-        }
-
-        public void GenerateCode(Parameters parameters, Database dbSchema, ISchemaLoader schemaLoader, string filename)
-        {
-            ICodeGenerator codeGenerator = FindCodeGenerator(parameters, filename) ??
-                (string.IsNullOrEmpty(parameters.Language)
-                    ? CodeDomGenerator.CreateFromFileExtension(Path.GetExtension(filename))
-                    : CodeDomGenerator.CreateFromLanguage(parameters.Language));
-
-            if (string.IsNullOrEmpty(filename))
-                filename = dbSchema.Class;
-            if (String.IsNullOrEmpty(Path.GetExtension(filename)))
-                filename += codeGenerator.Extension;
-
-            using (var streamWriter = new StreamWriter(filename))
-            {
-                var generationContext = new GenerationContext(parameters, schemaLoader);
-                codeGenerator.Write(streamWriter, dbSchema, generationContext);
-            }
-        }
-
-        public Database ReadSchema(Parameters parameters, out ISchemaLoader schemaLoader)
-        {
-            Database dbSchema;
-            var nameAliases = NameAliasesLoader.Load(parameters.Aliases);
-            if (parameters.SchemaXmlFile == null) // read schema from DB
-            {
-                schemaLoader = SchemaLoaderFactory.Load(parameters);
-
-                parameters.Write(">>> Reading schema from {0} database", schemaLoader.Vendor.VendorName);
-                dbSchema = schemaLoader.Load(parameters.Database, nameAliases,
-                    new NameFormat(parameters.Pluralize, GetCase(parameters), new CultureInfo(parameters.Culture)),
-                    parameters.Sprocs, parameters.Namespace, parameters.Namespace);
-                dbSchema.Provider = parameters.Provider;
-                dbSchema.Tables.Sort(new LambdaComparer<Table>((x, y) => (x.Type.Name.CompareTo(y.Type.Name))));
-                foreach (var table in dbSchema.Tables)
-                    table.Type.Columns.Sort(new LambdaComparer<Column>((x, y) => (x.Member.CompareTo(y.Member))));
-                dbSchema.Functions.Sort(new LambdaComparer<Function>((x, y) => (x.Method.CompareTo(y.Method))));
-                //SchemaPostprocess.PostProcess_DB(dbSchema);
-            }
-            else // load DBML
-            {
-                dbSchema = ReadSchema(parameters, parameters.SchemaXmlFile);
-                parameters.Provider = parameters.Provider ?? dbSchema.Provider;
-                schemaLoader = SchemaLoaderFactory.Load(parameters);
-            }
-
-            if (schemaLoader == null)
-                throw new ApplicationException("Please provide -Provider=MySql (or Oracle, OracleODP, PostgreSql, Sqlite - see app.config for provider listing)");
-
-            return dbSchema;
-        }
-
-        public Database ReadSchema(Parameters parameters, string filename)
-        {
-            parameters.Write(">>> Reading schema from DBML file '{0}'", filename);
-            using (Stream dbmlFile = File.OpenRead(filename))
-            {
-                return DbmlSerializer.Read(dbmlFile);
-            }
-        }
-
-        private void PrintUsage(Parameters parameters)
-        {
-            parameters.WriteHelp();
-        }
-
-        private Case GetCase(Parameters parameters)
-        {
-            if (String.IsNullOrEmpty(parameters.Case))
-                return Case.PascalCase;
-
-            switch (parameters.Case.ToLowerInvariant())
-            {
-                case "leave":
-                    return Case.Leave;
-                case "camel":
-                    return Case.camelCase;
-                case "pascal":
-                    return Case.PascalCase;
-                default:
-                    return Case.NetCase;
-            }
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using DbLinq.Factory;
+using DbLinq.Schema;
+using DbLinq.Schema.Dbml;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbMetal.Schema;
+
+using Mono.Options;
+
+namespace DbMetal.Generator.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    class Processor : IProcessor
+    {
+        private TextWriter log;
+        /// <summary>
+        /// Log output
+        /// </summary>
+        public TextWriter Log
+        {
+            get { return log ?? Console.Out; }
+            set
+            {
+                log = value;
+                SchemaLoaderFactory.Log = value;
+            }
+        }
+
+        public ISchemaLoaderFactory SchemaLoaderFactory { get; set; }
+
+        public Processor()
+        {
+            //for DbMetal for want to log to console
+            //for VisualMetal we want to log to log4net
+            //Logger = ObjectFactory.Get<ILogger>();
+            SchemaLoaderFactory = ObjectFactory.Get<ISchemaLoaderFactory>();
+        }
+
+        public void Process(string[] args)
+        {
+            var parameters = new Parameters { Log = Log };
+
+            parameters.WriteHeader();
+
+            try
+            {
+                parameters.Parse(args);
+            }
+            catch (Exception e)
+            {
+                Output.WriteErrorLine(Log, e.Message);
+                PrintUsage(parameters);
+                return;
+            }
+
+            if (args.Length == 0 || parameters.Help)
+            {
+                PrintUsage(parameters);
+                return;
+            }
+
+            ProcessSchema(parameters);
+
+            if (parameters.Readline)
+            {
+                // '-readLineAtExit' flag: useful when running from Visual Studio
+                Console.ReadKey();
+            }
+        }
+
+        private void ProcessSchema(Parameters parameters)
+        {
+            try
+            {
+                // we always need a factory, even if generating from a DBML file, because we need a namespace
+                ISchemaLoader schemaLoader;
+                // then we load the schema
+                var dbSchema = ReadSchema(parameters, out schemaLoader);
+
+                if (!SchemaIsValid(dbSchema))
+                    return;
+
+                // the we write it (to DBML or code)
+                WriteSchema(dbSchema, schemaLoader, parameters);
+            }
+            catch (Exception ex)
+            {
+                string assemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
+                Log.WriteErrorLine(assemblyName + ": {0}", parameters.Debug ? ex.ToString() : ex.Message);
+            }
+        }
+
+        bool SchemaIsValid(Database database)
+        {
+            bool error = false;
+            foreach (var table in database.Tables)
+            {
+                error = ValidateAssociations(database, table) || error;
+            }
+            return !error;
+        }
+
+        bool ValidateAssociations(Database database, Table table)
+        {
+            bool error = false;
+            foreach (var association in table.Type.Associations)
+            {
+                var otherType           = database.Tables.Single(t => t.Type.Name == association.Type).Type;
+                var otherAssociation    = otherType.Associations.Single(a => a.Type == table.Type.Name && a.ThisKey == association.OtherKey);
+                var otherColumn         = otherType.Columns.Single(c => c.Member == association.OtherKey);
+
+                if (association.CardinalitySpecified && association.Cardinality == Cardinality.Many && association.IsForeignKey)
+                {
+                    error = true;
+                    Log.WriteErrorLine("Error DBML1059: The IsForeignKey attribute of the Association element '{0}' of the Type element '{1}' cannnot be '{2}' when the Cardinality attribute is '{3}'.",
+                            association.Name, table.Type.Name, association.IsForeignKey, association.Cardinality);
+                }
+            }
+            return error;
+        }
+
+        protected void WriteSchema(Database dbSchema, ISchemaLoader schemaLoader, Parameters parameters)
+        {
+            if (parameters.Dbml != null)
+            {
+                //we are supposed to write out a DBML file and exit
+                parameters.Write("<<< Writing file '{0}'", parameters.Dbml);
+                using (Stream dbmlFile = File.Create(parameters.Dbml))
+                {
+                    DbmlSerializer.Write(dbmlFile, dbSchema);
+                }
+            }
+            else
+            {
+                if (!parameters.Schema)
+                    RemoveSchemaFromTables(dbSchema);
+
+                // extract filename from output filename, database schema or schema name
+                string filename = parameters.Code;
+                if (string.IsNullOrEmpty(filename) && !string.IsNullOrEmpty(parameters.Database))
+                    filename = parameters.Database.Replace("\"", "");
+                if (string.IsNullOrEmpty(filename))
+                    filename = dbSchema.Name;
+
+                parameters.Write("<<< writing C# classes in file '{0}'", filename);
+                GenerateCode(parameters, dbSchema, schemaLoader, filename);
+
+            }
+        }
+
+        protected void RemoveSchemaFromTables(Database schema)
+        {
+            foreach (var table in schema.Table)
+            {
+                string[] nameAndSchema = table.Name.Split('.');
+                table.Name = nameAndSchema[nameAndSchema.Length - 1];
+            }
+        }
+
+        public virtual IEnumerable<ICodeGenerator> EnumerateCodeGenerators()
+        {
+            foreach (var codeGeneratorType in ObjectFactory.Current.GetImplementations(typeof(ICodeGenerator)))
+            {
+                yield return (ICodeGenerator)ObjectFactory.Current.Get(codeGeneratorType);
+            }
+        }
+
+        protected virtual ICodeGenerator FindCodeGeneratorByLanguage(string languageCode)
+        {
+            return (from codeGenerator in EnumerateCodeGenerators()
+                    where codeGenerator.LanguageCode == languageCode
+                    select codeGenerator).SingleOrDefault();
+        }
+
+        protected virtual ICodeGenerator FindCodeGeneratorByExtension(string extension)
+        {
+            return EnumerateCodeGenerators().SingleOrDefault(gen => gen.Extension == extension.ToLowerInvariant());
+        }
+
+        public virtual ICodeGenerator FindCodeGenerator(Parameters parameters, string filename)
+        {
+            if (!string.IsNullOrEmpty(parameters.Language))
+                return FindCodeGeneratorByLanguage(parameters.Language);
+            return FindCodeGeneratorByExtension(Path.GetExtension(filename));
+        }
+
+        public void GenerateCode(Parameters parameters, Database dbSchema, ISchemaLoader schemaLoader, string filename)
+        {
+            ICodeGenerator codeGenerator = FindCodeGenerator(parameters, filename) ??
+                (string.IsNullOrEmpty(parameters.Language)
+                    ? CodeDomGenerator.CreateFromFileExtension(Path.GetExtension(filename))
+                    : CodeDomGenerator.CreateFromLanguage(parameters.Language));
+
+            if (string.IsNullOrEmpty(filename))
+                filename = dbSchema.Class;
+            if (String.IsNullOrEmpty(Path.GetExtension(filename)))
+                filename += codeGenerator.Extension;
+
+            using (var streamWriter = new StreamWriter(filename))
+            {
+                var generationContext = new GenerationContext(parameters, schemaLoader);
+                codeGenerator.Write(streamWriter, dbSchema, generationContext);
+            }
+        }
+
+        public Database ReadSchema(Parameters parameters, out ISchemaLoader schemaLoader)
+        {
+            Database dbSchema;
+            var nameAliases = NameAliasesLoader.Load(parameters.Aliases);
+            if (parameters.SchemaXmlFile == null) // read schema from DB
+            {
+                schemaLoader = SchemaLoaderFactory.Load(parameters);
+
+                parameters.Write(">>> Reading schema from {0} database", schemaLoader.Vendor.VendorName);
+                dbSchema = schemaLoader.Load(parameters.Database, nameAliases,
+                    new NameFormat(parameters.Pluralize, GetCase(parameters), new CultureInfo(parameters.Culture)),
+                    parameters.Sprocs, parameters.Namespace, parameters.Namespace);
+                dbSchema.Provider = parameters.Provider;
+                dbSchema.Tables.Sort(new LambdaComparer<Table>((x, y) => (x.Type.Name.CompareTo(y.Type.Name))));
+                foreach (var table in dbSchema.Tables)
+                    table.Type.Columns.Sort(new LambdaComparer<Column>((x, y) => (x.Member.CompareTo(y.Member))));
+                dbSchema.Functions.Sort(new LambdaComparer<Function>((x, y) => (x.Method.CompareTo(y.Method))));
+                //SchemaPostprocess.PostProcess_DB(dbSchema);
+            }
+            else // load DBML
+            {
+                dbSchema = ReadSchema(parameters, parameters.SchemaXmlFile);
+                parameters.Provider = parameters.Provider ?? dbSchema.Provider;
+                schemaLoader = SchemaLoaderFactory.Load(parameters);
+            }
+
+            if (schemaLoader == null)
+                throw new ApplicationException("Please provide -Provider=MySql (or Oracle, OracleODP, PostgreSql, Sqlite - see app.config for provider listing)");
+
+            return dbSchema;
+        }
+
+        public Database ReadSchema(Parameters parameters, string filename)
+        {
+            parameters.Write(">>> Reading schema from DBML file '{0}'", filename);
+            using (Stream dbmlFile = File.OpenRead(filename))
+            {
+                return DbmlSerializer.Read(dbmlFile);
+            }
+        }
+
+        private void PrintUsage(Parameters parameters)
+        {
+            parameters.WriteHelp();
+        }
+
+        private Case GetCase(Parameters parameters)
+        {
+            if (String.IsNullOrEmpty(parameters.Case))
+                return Case.PascalCase;
+
+            switch (parameters.Case.ToLowerInvariant())
+            {
+                case "leave":
+                    return Case.Leave;
+                case "camel":
+                    return Case.camelCase;
+                case "pascal":
+                    return Case.PascalCase;
+                default:
+                    return Case.NetCase;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/SchemaLoaderFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/Implementation/SchemaLoaderFactory.cs
@@ -1,188 +1,188 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Data;
-using System.IO;
-using System.Reflection;
-using DbLinq.Util;
-using DbLinq.Vendor;
-using DbMetal.Configuration;
-
-namespace DbMetal.Generator.Implementation
-{
-#if !MONO_STRICT
-    public
-#endif
-    class SchemaLoaderFactory : ISchemaLoaderFactory
-    {
-        private TextWriter log;
-        /// <summary>
-        /// Log output
-        /// </summary>
-        public TextWriter Log
-        {
-            get { return log ?? Console.Out; }
-            set { log = value; }
-        }
-
-        /// <summary>
-        /// the 'main entry point' into this class
-        /// </summary>
-        public ISchemaLoader Load(Parameters parameters)
-        {
-            string dbLinqSchemaLoaderType;
-            string databaseConnectionType;
-            string sqlDialectType;
-            GetLoaderAndConnection(parameters, out dbLinqSchemaLoaderType, out databaseConnectionType, out sqlDialectType);
-            return Load(parameters, dbLinqSchemaLoaderType, databaseConnectionType, sqlDialectType);
-        }
-
-        /// <summary>
-        /// given a schemaLoaderType and dbConnType 
-        /// (e.g. DbLinq.Oracle.OracleSchemaLoader and System.Data.OracleClient.OracleConnection),
-        /// return an instance of the OracleSchemaLoader.
-        /// </summary>
-        public ISchemaLoader Load(Parameters parameters, Type dbLinqSchemaLoaderType, Type databaseConnectionType, Type sqlDialectType)
-        {
-            if (dbLinqSchemaLoaderType == null)
-                throw new ArgumentNullException("dbLinqSchemaLoaderType");
-            if (databaseConnectionType == null)
-                throw new ArgumentNullException("databaseConnectionType");
-
-            string errorMsg = "";
-            try
-            {
-                errorMsg = "Failed on Activator.CreateInstance(" + dbLinqSchemaLoaderType.Name + ")";
-                var loader = (ISchemaLoader)Activator.CreateInstance(dbLinqSchemaLoaderType);
-                // set log output
-                loader.Log = Log;
-
-                errorMsg = "Failed on Activator.CreateInstance(" + databaseConnectionType.Name + ")";
-                var connection = (IDbConnection)Activator.CreateInstance(databaseConnectionType);
-
-                IVendor vendor = null;
-                if (sqlDialectType != null)
-                {
-                    errorMsg = "Failed on Activator.CreateInstance(" + sqlDialectType.Name + ")";
-                    vendor = (IVendor)Activator.CreateInstance(sqlDialectType);
-                    loader.Vendor = vendor;
-                }
-
-                if (parameters != null)
-                {
-                    string connectionString = parameters.Conn;
-                    if (string.IsNullOrEmpty(connectionString))
-                        connectionString = loader.Vendor.BuildConnectionString(parameters.Server, parameters.Database,
-                                                                               parameters.User, parameters.Password);
-                    errorMsg = "Failed on setting ConnectionString=" + connectionString;
-                    connection.ConnectionString = connectionString;
-                }
-
-                errorMsg = "";
-                loader.Connection = connection;
-                return loader;
-            }
-            catch (Exception ex)
-            {
-                //see Pascal's comment on this failure:
-                //http://groups.google.com/group/dblinq/browse_thread/thread/b7a29138435b0678
-                Output.WriteErrorLine(Log, "LoaderFactory.Load(schemaType=" + dbLinqSchemaLoaderType.Name + ", dbConnType=" + databaseConnectionType.Name + ")");
-                if (errorMsg != "")
-                    Output.WriteErrorLine(Log, errorMsg);
-                Output.WriteErrorLine(Log, "LoaderFactory.Load() failed: " + ex.Message);
-                throw;
-            }
-        }
-
-        public ISchemaLoader Load(Parameters parameters, string dbLinqSchemaLoaderTypeName, string databaseConnectionTypeName, string sqlDialectTypeName)
-        {
-            Type dbLinqSchemaLoaderType = Type.GetType(dbLinqSchemaLoaderTypeName);
-            Type databaseConnectionType = Type.GetType(databaseConnectionTypeName);
-            Type sqlDialectType         = string.IsNullOrEmpty(sqlDialectTypeName) ? null : Type.GetType(sqlDialectTypeName);
-
-            if (dbLinqSchemaLoaderType == null)
-                throw new ArgumentException("Could not load dbLinqSchemaLoaderType type '" + dbLinqSchemaLoaderTypeName + "'.  Try using the --with-schema-loader=TYPE option.");
-            if (databaseConnectionType == null)
-                throw new ArgumentException("Could not load databaseConnectionType type '" + databaseConnectionTypeName + "'.  Try using the --with-dbconnection=TYPE option.");
-
-            ISchemaLoader loader = Load(parameters, dbLinqSchemaLoaderType, databaseConnectionType, sqlDialectType);
-            return loader;
-        }
-
-        private void GetLoaderAndConnection(string provider, out string dbLinqSchemaLoaderType, out string databaseConnectionType, out string sqlDialectType)
-        {
-            var configuration = (ProvidersSection)ConfigurationManager.GetSection("providers");
-
-            ProvidersSection.ProviderElement element;
-            string errorMsg = null;
-            if (configuration == null || !configuration.Providers.TryGetProvider(provider, out element, out errorMsg))
-            {
-                throw new ApplicationException(string.Format("Failed to load provider {0}: {1}", provider, errorMsg));
-            }
-
-            //var element = configuration.Providers.GetProvider(provider);
-            //databaseConnectionType = types[1].Trim();
-            dbLinqSchemaLoaderType = element.DbLinqSchemaLoader;
-            databaseConnectionType = element.DatabaseConnection;
-            sqlDialectType         = element.SqlDialectType;
-        }
-
-        protected void GetLoaderAndConnection(Parameters parameters, out string dbLinqSchemaLoaderType, out string databaseConnectionType, out string sqlDialectType)
-        {
-            dbLinqSchemaLoaderType = databaseConnectionType = sqlDialectType = null;
-
-            if (!string.IsNullOrEmpty(parameters.Provider))
-            {
-                GetLoaderAndConnection(parameters.Provider, out dbLinqSchemaLoaderType, out databaseConnectionType, out sqlDialectType);
-            }
-            else if (!string.IsNullOrEmpty(parameters.DbLinqSchemaLoaderProvider) &&
-                !string.IsNullOrEmpty(parameters.DatabaseConnectionProvider) &&
-                !string.IsNullOrEmpty(parameters.SqlDialectType))
-            {
-                // User manually specified everything we need; don't bother with the
-                // default .exe.config provider lookup
-            }
-            else
-            {
-                // No provider specified, not explicitly provided either
-                // Default to using SQL Server for sqlmetal.exe compatibility
-                GetLoaderAndConnection("SqlServer", out dbLinqSchemaLoaderType, out databaseConnectionType, out sqlDialectType);
-            }
-
-            // Allow command-line options to override the .exe.config file.
-            if (!string.IsNullOrEmpty(parameters.DbLinqSchemaLoaderProvider))
-                dbLinqSchemaLoaderType = parameters.DbLinqSchemaLoaderProvider;
-            if (!string.IsNullOrEmpty(parameters.DatabaseConnectionProvider))
-                databaseConnectionType = parameters.DatabaseConnectionProvider;
-            if (!string.IsNullOrEmpty(parameters.SqlDialectType))
-                sqlDialectType = parameters.SqlDialectType;
-        }
-
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.IO;
+using System.Reflection;
+using DbLinq.Util;
+using DbLinq.Vendor;
+using DbMetal.Configuration;
+
+namespace DbMetal.Generator.Implementation
+{
+#if !MONO_STRICT
+    public
+#endif
+    class SchemaLoaderFactory : ISchemaLoaderFactory
+    {
+        private TextWriter log;
+        /// <summary>
+        /// Log output
+        /// </summary>
+        public TextWriter Log
+        {
+            get { return log ?? Console.Out; }
+            set { log = value; }
+        }
+
+        /// <summary>
+        /// the 'main entry point' into this class
+        /// </summary>
+        public ISchemaLoader Load(Parameters parameters)
+        {
+            string dbLinqSchemaLoaderType;
+            string databaseConnectionType;
+            string sqlDialectType;
+            GetLoaderAndConnection(parameters, out dbLinqSchemaLoaderType, out databaseConnectionType, out sqlDialectType);
+            return Load(parameters, dbLinqSchemaLoaderType, databaseConnectionType, sqlDialectType);
+        }
+
+        /// <summary>
+        /// given a schemaLoaderType and dbConnType 
+        /// (e.g. DbLinq.Oracle.OracleSchemaLoader and System.Data.OracleClient.OracleConnection),
+        /// return an instance of the OracleSchemaLoader.
+        /// </summary>
+        public ISchemaLoader Load(Parameters parameters, Type dbLinqSchemaLoaderType, Type databaseConnectionType, Type sqlDialectType)
+        {
+            if (dbLinqSchemaLoaderType == null)
+                throw new ArgumentNullException("dbLinqSchemaLoaderType");
+            if (databaseConnectionType == null)
+                throw new ArgumentNullException("databaseConnectionType");
+
+            string errorMsg = "";
+            try
+            {
+                errorMsg = "Failed on Activator.CreateInstance(" + dbLinqSchemaLoaderType.Name + ")";
+                var loader = (ISchemaLoader)Activator.CreateInstance(dbLinqSchemaLoaderType);
+                // set log output
+                loader.Log = Log;
+
+                errorMsg = "Failed on Activator.CreateInstance(" + databaseConnectionType.Name + ")";
+                var connection = (IDbConnection)Activator.CreateInstance(databaseConnectionType);
+
+                IVendor vendor = null;
+                if (sqlDialectType != null)
+                {
+                    errorMsg = "Failed on Activator.CreateInstance(" + sqlDialectType.Name + ")";
+                    vendor = (IVendor)Activator.CreateInstance(sqlDialectType);
+                    loader.Vendor = vendor;
+                }
+
+                if (parameters != null)
+                {
+                    string connectionString = parameters.Conn;
+                    if (string.IsNullOrEmpty(connectionString))
+                        connectionString = loader.Vendor.BuildConnectionString(parameters.Server, parameters.Database,
+                                                                               parameters.User, parameters.Password);
+                    errorMsg = "Failed on setting ConnectionString=" + connectionString;
+                    connection.ConnectionString = connectionString;
+                }
+
+                errorMsg = "";
+                loader.Connection = connection;
+                return loader;
+            }
+            catch (Exception ex)
+            {
+                //see Pascal's comment on this failure:
+                //http://groups.google.com/group/dblinq/browse_thread/thread/b7a29138435b0678
+                Output.WriteErrorLine(Log, "LoaderFactory.Load(schemaType=" + dbLinqSchemaLoaderType.Name + ", dbConnType=" + databaseConnectionType.Name + ")");
+                if (errorMsg != "")
+                    Output.WriteErrorLine(Log, errorMsg);
+                Output.WriteErrorLine(Log, "LoaderFactory.Load() failed: " + ex.Message);
+                throw;
+            }
+        }
+
+        public ISchemaLoader Load(Parameters parameters, string dbLinqSchemaLoaderTypeName, string databaseConnectionTypeName, string sqlDialectTypeName)
+        {
+            Type dbLinqSchemaLoaderType = Type.GetType(dbLinqSchemaLoaderTypeName);
+            Type databaseConnectionType = Type.GetType(databaseConnectionTypeName);
+            Type sqlDialectType         = string.IsNullOrEmpty(sqlDialectTypeName) ? null : Type.GetType(sqlDialectTypeName);
+
+            if (dbLinqSchemaLoaderType == null)
+                throw new ArgumentException("Could not load dbLinqSchemaLoaderType type '" + dbLinqSchemaLoaderTypeName + "'.  Try using the --with-schema-loader=TYPE option.");
+            if (databaseConnectionType == null)
+                throw new ArgumentException("Could not load databaseConnectionType type '" + databaseConnectionTypeName + "'.  Try using the --with-dbconnection=TYPE option.");
+
+            ISchemaLoader loader = Load(parameters, dbLinqSchemaLoaderType, databaseConnectionType, sqlDialectType);
+            return loader;
+        }
+
+        private void GetLoaderAndConnection(string provider, out string dbLinqSchemaLoaderType, out string databaseConnectionType, out string sqlDialectType)
+        {
+            var configuration = (ProvidersSection)ConfigurationManager.GetSection("providers");
+
+            ProvidersSection.ProviderElement element;
+            string errorMsg = null;
+            if (configuration == null || !configuration.Providers.TryGetProvider(provider, out element, out errorMsg))
+            {
+                throw new ApplicationException(string.Format("Failed to load provider {0}: {1}", provider, errorMsg));
+            }
+
+            //var element = configuration.Providers.GetProvider(provider);
+            //databaseConnectionType = types[1].Trim();
+            dbLinqSchemaLoaderType = element.DbLinqSchemaLoader;
+            databaseConnectionType = element.DatabaseConnection;
+            sqlDialectType         = element.SqlDialectType;
+        }
+
+        protected void GetLoaderAndConnection(Parameters parameters, out string dbLinqSchemaLoaderType, out string databaseConnectionType, out string sqlDialectType)
+        {
+            dbLinqSchemaLoaderType = databaseConnectionType = sqlDialectType = null;
+
+            if (!string.IsNullOrEmpty(parameters.Provider))
+            {
+                GetLoaderAndConnection(parameters.Provider, out dbLinqSchemaLoaderType, out databaseConnectionType, out sqlDialectType);
+            }
+            else if (!string.IsNullOrEmpty(parameters.DbLinqSchemaLoaderProvider) &&
+                !string.IsNullOrEmpty(parameters.DatabaseConnectionProvider) &&
+                !string.IsNullOrEmpty(parameters.SqlDialectType))
+            {
+                // User manually specified everything we need; don't bother with the
+                // default .exe.config provider lookup
+            }
+            else
+            {
+                // No provider specified, not explicitly provided either
+                // Default to using SQL Server for sqlmetal.exe compatibility
+                GetLoaderAndConnection("SqlServer", out dbLinqSchemaLoaderType, out databaseConnectionType, out sqlDialectType);
+            }
+
+            // Allow command-line options to override the .exe.config file.
+            if (!string.IsNullOrEmpty(parameters.DbLinqSchemaLoaderProvider))
+                dbLinqSchemaLoaderType = parameters.DbLinqSchemaLoaderProvider;
+            if (!string.IsNullOrEmpty(parameters.DatabaseConnectionProvider))
+                databaseConnectionType = parameters.DatabaseConnectionProvider;
+            if (!string.IsNullOrEmpty(parameters.SqlDialectType))
+                sqlDialectType = parameters.SqlDialectType;
+        }
+
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/ParameterDefinition.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/ParameterDefinition.cs
@@ -1,58 +1,58 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace DbMetal.Generator
-{
-    /// <summary>
-    /// Parameter definition for code generation
-    /// </summary>
-    public class ParameterDefinition
-    {
-        /// <summary>
-        /// Parameter attributes
-        /// </summary>
-        public AttributeDefinition Attribute;
-        /// <summary>
-        /// Parameter name
-        /// </summary>
-        public string Name { get; set; }
-        /// <summary>
-        /// Parameter CLR type
-        /// </summary>
-        public Type Type { get; set; }
-        /// <summary>
-        /// Parameter literal type
-        /// If null, the Type is used
-        /// </summary>
-        public string LiteralType { get; set; }
-        /// <summary>
-        /// Parameter specifications, in, out, etc.
-        /// </summary>
-        public SpecificationDefinition SpecificationDefinition;
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace DbMetal.Generator
+{
+    /// <summary>
+    /// Parameter definition for code generation
+    /// </summary>
+    public class ParameterDefinition
+    {
+        /// <summary>
+        /// Parameter attributes
+        /// </summary>
+        public AttributeDefinition Attribute;
+        /// <summary>
+        /// Parameter name
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// Parameter CLR type
+        /// </summary>
+        public Type Type { get; set; }
+        /// <summary>
+        /// Parameter literal type
+        /// If null, the Type is used
+        /// </summary>
+        public string LiteralType { get; set; }
+        /// <summary>
+        /// Parameter specifications, in, out, etc.
+        /// </summary>
+        public SpecificationDefinition SpecificationDefinition;
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Generator/SpecificationDefinition.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Generator/SpecificationDefinition.cs
@@ -1,58 +1,58 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-
-namespace DbMetal.Generator
-{
-    [Flags]
-    public enum SpecificationDefinition
-    {
-        ProtectionClass     = 0x00000F,
-        Public              = 0x000000,
-        Protected           = 0x000001,
-        Private             = 0x000002,
-        Internal            = 0x000004,
-
-        InheritanceClass    = 0x00FF00,
-        Abstract            = 0x000100,
-        Virtual             = 0x000200,
-        Override            = 0x000400,
-        Static              = 0x000800,
-        Sealed              = 0x001000,
-        New                 = 0x002000,
-
-        DomainClass         = 0x0F0000,
-        Partial             = 0x010000,
-
-        DirectionClass      = 0x0000F0,
-        In                  = 0x000010,
-        Out                 = 0x000020,
-        Ref                 = 0x000030,
-
-        Event               = 0x100000,
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+
+namespace DbMetal.Generator
+{
+    [Flags]
+    public enum SpecificationDefinition
+    {
+        ProtectionClass     = 0x00000F,
+        Public              = 0x000000,
+        Protected           = 0x000001,
+        Private             = 0x000002,
+        Internal            = 0x000004,
+
+        InheritanceClass    = 0x00FF00,
+        Abstract            = 0x000100,
+        Virtual             = 0x000200,
+        Override            = 0x000400,
+        Static              = 0x000800,
+        Sealed              = 0x001000,
+        New                 = 0x002000,
+
+        DomainClass         = 0x0F0000,
+        Partial             = 0x010000,
+
+        DirectionClass      = 0x0000F0,
+        In                  = 0x000010,
+        Out                 = 0x000020,
+        Ref                 = 0x000030,
+
+        Event               = 0x100000,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Language/EnglishWords.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Language/EnglishWords.cs
@@ -1,76 +1,76 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-using DbLinq.Language.Implementation;
-
-namespace DbMetal.Language
-{
-    /// <summary>
-    /// Support for english words
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class EnglishWords : AbstractEndPluralWords
-    {
-        /// <summary>
-        /// Loads the words (operation may be slow, so it is excluded from ctor)
-        /// </summary>
-        public override void Load()
-        {
-            if (WordsWeights == null)
-                Load("EnglishWords.txt");
-        }
-
-        /// <summary>
-        /// Returns true if the required culture is supported
-        /// </summary>
-        /// <param name="cultureInfo"></param>
-        /// <returns></returns>
-        public override bool Supports(CultureInfo cultureInfo)
-        {
-            return cultureInfo.ThreeLetterISOLanguageName == "eng";
-        }
-
-        protected override SingularPlural[] SingularsPlurals
-        {
-            get { return singularsPlurals; }
-        }
-
-        // important: keep this from most specific to less specific
-        private readonly SingularPlural[] singularsPlurals =
-            {
-                new SingularPlural { Singular="ss", Plural="sses" },
-                new SingularPlural { Singular="ch", Plural="ches" },
-                new SingularPlural { Singular="sh", Plural="shes" },
-                new SingularPlural { Singular="zz", Plural="zzes" },
-                new SingularPlural { Singular="x", Plural="xes" },
-                new SingularPlural { Singular="y", Plural="ies" },
-                new SingularPlural { Singular="", Plural="s" },
-            };
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+using DbLinq.Language.Implementation;
+
+namespace DbMetal.Language
+{
+    /// <summary>
+    /// Support for english words
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class EnglishWords : AbstractEndPluralWords
+    {
+        /// <summary>
+        /// Loads the words (operation may be slow, so it is excluded from ctor)
+        /// </summary>
+        public override void Load()
+        {
+            if (WordsWeights == null)
+                Load("EnglishWords.txt");
+        }
+
+        /// <summary>
+        /// Returns true if the required culture is supported
+        /// </summary>
+        /// <param name="cultureInfo"></param>
+        /// <returns></returns>
+        public override bool Supports(CultureInfo cultureInfo)
+        {
+            return cultureInfo.ThreeLetterISOLanguageName == "eng";
+        }
+
+        protected override SingularPlural[] SingularsPlurals
+        {
+            get { return singularsPlurals; }
+        }
+
+        // important: keep this from most specific to less specific
+        private readonly SingularPlural[] singularsPlurals =
+            {
+                new SingularPlural { Singular="ss", Plural="sses" },
+                new SingularPlural { Singular="ch", Plural="ches" },
+                new SingularPlural { Singular="sh", Plural="shes" },
+                new SingularPlural { Singular="zz", Plural="zzes" },
+                new SingularPlural { Singular="x", Plural="xes" },
+                new SingularPlural { Singular="y", Plural="ies" },
+                new SingularPlural { Singular="", Plural="s" },
+            };
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Language/EnglishWords.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Language/EnglishWords.txt
@@ -1,75130 +1,75130 @@
-1st
-a
-A-1
-A-bomb
-A-OK
-A-Okay
-A.D.
-a.o.
-a/c
-A/P
-A/R
-A1
-AACR
-AALS
-abaci
-aback
-abacus
-abacuses
-abaft
-abalone
-abandon
-abandoned
-abandonee
-abandoner
-abandoning
-abandonment
-abase
-abased
-abasement
-abasements
-abases
-abash
-abashed
-abashedly
-abashes
-abashing
-abashment
-abate
-abatement
-abatements
-abater
-abates
-abating
-abatis
-abattis
-abattoir
-abbacy
-abbe
-abbess
-abbey
-abbeys
-abbot
-abbots
-Abbott
-abbreviate
-abbreviated
-abbreviates
-abbreviating
-abbreviation
-abbreviations
-Abby
-ABC
-ABC's
-ABCs
-Abdera
-abderite
-abdicate
-abdication
-abdomen
-abdomens
-abdominal
-abdominous
-abduct
-abducted
-abduction
-abductions
-abductor
-abductors
-abducts
-abeam
-abecedarian
-abed
-Abel
-Abelian
-Abelson
-Aberdeen
-Abernathy
-aberrant
-aberration
-aberrational
-aberrations
-abet
-abetment
-abets
-abetted
-abetter
-abetting
-abettor
-abeyance
-abhor
-abhorred
-abhorrence
-abhorrent
-abhorrently
-abhorrer
-abhorring
-abhors
-abidance
-abide
-abided
-abides
-abiding
-abidingly
-Abidjan
-Abigail
-Abilene
-abilities
-ability
-abject
-abjection
-abjections
-abjectly
-abjectness
-abjuration
-abjuratory
-abjure
-abjured
-abjurer
-abjures
-abjuring
-ablate
-ablated
-ablates
-ablating
-ablation
-ablative
-ablaze
-able
-able-bodied
-abler
-abloom
-ablution
-ablutions
-ably
-abnegate
-abnegated
-abnegation
-Abner
-abnormal
-abnormalities
-abnormality
-abnormally
-Abo
-aboard
-abode
-abolish
-abolished
-abolisher
-abolishers
-abolishes
-abolishing
-abolishment
-abolishments
-abolition
-abolitionism
-abolitionist
-abolitionists
-abominable
-abominably
-abominale
-abominate
-abomination
-abonent
-aboriginal
-aborigine
-aborigines
-aborning
-abort
-aborted
-aborting
-abortion
-abortionist
-abortions
-abortive
-abortively
-aborts
-Abos
-abound
-abounded
-abounding
-abounds
-about
-above
-above-board
-above-mentioned
-aboveboard
-aboveground
-abovementioned
-abracadabra
-abrade
-abraded
-abrades
-abrading
-Abraham
-Abram
-Abrams
-Abramson
-abrasion
-abrasions
-abrasive
-abrasively
-abrasiveness
-abreaction
-abreactions
-abreast
-abridge
-abridged
-abridgement
-abridges
-abridging
-abridgment
-abroad
-abrogate
-abrogated
-abrogates
-abrogating
-abrogation
-abrogator
-abrupt
-abruptly
-abruptness
-abscess
-abscessed
-abscesses
-abscissa
-abscissae
-abscissas
-abscission
-abscond
-absconded
-absconder
-absconding
-absconds
-absence
-absences
-absent
-absent-minded
-absent-mindedly
-absent-mindedness
-absented
-absentee
-absenteeism
-absentees
-absentia
-absenting
-absently
-absentminded
-absentmindedly
-absentmindedness
-absents
-absinth
-absinthe
-absolute
-absolutely
-absoluteness
-absolutes
-absolution
-absolutism
-absolutist
-absolve
-absolved
-absolves
-absolving
-absorb
-absorbed
-absorbency
-absorbent
-absorber
-absorbing
-absorbingly
-absorbs
-absorption
-absorptions
-absorptive
-abstain
-abstained
-abstainer
-abstaining
-abstains
-abstemious
-abstemiously
-abstemiousness
-abstention
-abstentions
-abstergent
-abstersion
-abstersive
-abstinence
-abstinent
-abstract
-abstracted
-abstractedly
-abstractedness
-abstracting
-abstraction
-abstractionism
-abstractionist
-abstractions
-abstractly
-abstractness
-abstractor
-abstractors
-abstracts
-abstruse
-abstrusely
-abstruseness
-absurd
-absurdities
-absurdity
-absurdly
-absurdness
-Abuja
-abundance
-abundant
-abundantly
-abuse
-abused
-abuser
-abuses
-abusing
-abusive
-abusively
-abusiveness
-abut
-abutment
-abuts
-abutted
-abutter
-abutters
-abutting
-abuzz
-abysm
-abysmal
-abysmally
-abyss
-abyssal
-abysses
-Abyssinia
-Abyssinian
-Abyssinians
-Ac
-AC/DC
-acacia
-academe
-academia
-academian
-academic
-academical
-academically
-academician
-academics
-academies
-academy
-Acadia
-acanthi
-acanthus
-Acapulco
-accede
-acceded
-accedes
-accelerant
-accelerate
-accelerated
-accelerates
-accelerating
-acceleration
-accelerations
-accelerator
-accelerators
-accelerometer
-accelerometers
-accent
-accented
-accenting
-accents
-accentual
-accentuate
-accentuated
-accentuates
-accentuating
-accentuation
-accept
-acceptability
-acceptable
-acceptableness
-acceptably
-acceptance
-acceptances
-acceptation
-accepted
-accepter
-accepters
-accepting
-acceptor
-acceptors
-accepts
-access
-accessary
-accessed
-accesses
-accessibility
-accessible
-accessibly
-accessing
-accession
-accessioning
-accessions
-accessories
-accessors
-accessory
-accidence
-accident
-accident-prone
-accidental
-accidentally
-accidently
-accidents
-acclaim
-acclaimed
-acclaiming
-acclaims
-acclamation
-acclimate
-acclimated
-acclimates
-acclimating
-acclimation
-acclimatization
-acclimatize
-acclimatized
-acclivity
-accolade
-accolades
-accommodate
-accommodated
-accommodates
-accommodating
-accommodatingly
-accommodation
-accommodations
-accompanied
-accompanies
-accompaniment
-accompaniments
-accompanist
-accompanists
-accompany
-accompanying
-accomplice
-accomplices
-accomplish
-accomplished
-accomplisher
-accomplishers
-accomplishes
-accomplishing
-accomplishment
-accomplishments
-accord
-accordance
-accordant
-accorded
-accorder
-accorders
-according
-accordingly
-accordion
-accordionist
-accordions
-accords
-accost
-accosted
-accosting
-accosts
-account
-accountability
-accountable
-accountably
-accountancy
-accountant
-accountants
-accounted
-accounting
-accounts
-accouter
-accouterments
-accoutre
-accoutred
-accoutrements
-Accra
-accredit
-accreditation
-accreditations
-accredited
-accretion
-accretions
-accrual
-accrue
-accrued
-accrues
-accruing
-acculturate
-acculturated
-acculturates
-acculturating
-acculturation
-accumulate
-accumulated
-accumulates
-accumulating
-accumulation
-accumulations
-accumulative
-accumulator
-accumulators
-accuracies
-accuracy
-accurate
-accurately
-accurateness
-accursed
-accursedness
-accurst
-accusal
-accusation
-accusations
-accusative
-accusatory
-accuse
-accused
-accuser
-accuses
-accusing
-accusingly
-accustom
-accustomed
-accustoming
-accustoms
-ace
-acerbate
-acerbic
-acerbically
-acerbity
-aces
-acetaminophen
-acetate
-acetic
-acetify
-acetone
-acetonic
-acetylene
-ACF
-Achaean
-Achaeans
-ache
-ached
-achene
-aches
-achievable
-achieve
-achieved
-achievement
-achievements
-achiever
-achievers
-achieves
-achieving
-Achilles
-aching
-achromatic
-achy
-acid
-acid-forming
-acid-proof
-acid-resisting
-acidic
-acidify
-acidities
-acidity
-acidly
-acidosis
-acids
-acidulated
-acidulous
-Ackerman
-Ackley
-acknowledge
-acknowledgeable
-acknowledged
-acknowledgement
-acknowledgements
-acknowledger
-acknowledgers
-acknowledges
-acknowledging
-acknowledgment
-acknowledgments
-ACL
-ACLU
-acme
-acne
-acolyte
-acolytes
-acoman
-Aconcagua
-aconite
-acorn
-acorns
-acoustic
-acoustical
-acoustically
-acoustician
-acoustics
-acquaint
-acquaintance
-acquaintances
-acquaintanceship
-acquainted
-acquainting
-acquaints
-acquiesce
-acquiesced
-acquiescence
-acquiescent
-acquiescently
-acquiesces
-acquiescing
-acquirable
-acquire
-acquired
-acquirement
-acquires
-acquiring
-acquiscence
-acquisition
-acquisitions
-acquisitive
-acquisitively
-acquisitiveness
-acquit
-acquits
-acquittal
-acquittance
-acquitted
-acquitter
-acquitting
-acre
-acreage
-acres
-acrid
-acridity
-acridly
-acridness
-acrimonious
-acrimoniously
-acrimoniousness
-acrimony
-acrobat
-acrobatic
-acrobatically
-acrobatics
-acrobats
-acronym
-acronyms
-acrophobia
-acropolis
-across
-acrostic
-acrylic
-act
-Acta
-Actaeon
-acted
-ACTH
-acting
-actinium
-actinometer
-actinometers
-action
-actionable
-actions
-activate
-activated
-activates
-activating
-activation
-activations
-activator
-activators
-active
-actively
-activeness
-activism
-activist
-activists
-activities
-activity
-Acton
-actor
-actors
-actress
-actresse
-actresses
-Acts
-actual
-actualities
-actuality
-actualization
-actualize
-actually
-actuals
-actuarial
-actuarially
-actuary
-actuate
-actuated
-actuates
-actuating
-actuation
-actuator
-actuators
-acuity
-acumen
-acupressure
-acupuncture
-acupuncturist
-acute
-acutely
-acuteness
-acyclic
-acyclically
-acyclovir
-AD
-ad-lib
-Ada
-adage
-adages
-adagio
-adagios
-Adair
-Adam
-adamant
-adamantly
-Adams
-Adamson
-adapt
-adaptability
-adaptable
-adaptation
-adaptations
-adapted
-adapter
-adapters
-adapting
-adaptive
-adaptively
-adaptor
-adaptors
-adapts
-ADC
-add
-add-on
-addable
-Addams
-added
-addend
-addenda
-addendum
-adder
-adders
-addible
-addict
-addicted
-addicting
-addiction
-addictions
-addictive
-addicts
-adding
-adding-machine
-Addis
-Addison
-addition
-additional
-additionally
-additions
-additive
-additives
-additivity
-addle
-addle-pate
-address
-addressability
-addressable
-addressed
-addressee
-addressees
-addresser
-addressers
-addresses
-addressing
-addressograph
-adds
-adduce
-adduced
-adduces
-adducible
-adducing
-adduct
-adducted
-adducting
-adduction
-adductor
-adducts
-Adelaide
-Adele
-Adelia
-Aden
-adenine
-adenoid
-adenoidal
-adenoids
-adept
-adeptly
-adeptness
-adequacies
-adequacy
-adequate
-adequately
-adequateness
-adhere
-adhered
-adherence
-adherent
-adherents
-adherer
-adherers
-adheres
-adhering
-adhesion
-adhesions
-adhesive
-adhesiveness
-adhesives
-adiabatic
-adiabatically
-adieu
-adieux
-adios
-adipose
-Adirondack
-Adirondacks
-ADIS
-adit
-adjacencies
-adjacency
-adjacent
-adjacently
-adjectival
-adjectivally
-adjective
-adjectives
-adjoin
-adjoined
-adjoining
-adjoins
-adjourn
-adjourned
-adjourning
-adjournment
-adjourns
-adjudge
-adjudged
-adjudges
-adjudging
-adjudicate
-adjudicated
-adjudicates
-adjudicating
-adjudication
-adjudications
-adjudicative
-adjudicator
-adjudicatory
-adjunct
-adjuncts
-adjuration
-adjure
-adjured
-adjures
-adjuring
-adjust
-adjustable
-adjustably
-adjusted
-adjuster
-adjusters
-adjusting
-adjustment
-adjustments
-adjustor
-adjustors
-adjusts
-adjutant
-adjutants
-Adkins
-Adler
-Adlerian
-adman
-admanmass
-admeasure
-admeasurement
-administer
-administered
-administering
-administerings
-administers
-administrable
-administrate
-administration
-administrations
-administrative
-administratively
-administrator
-administrators
-admirable
-admirably
-admiral
-admirals
-admiralty
-admiration
-admirations
-admire
-admired
-admirer
-admirers
-admires
-admiring
-admiringly
-admissibility
-admissible
-admissibly
-admission
-admissions
-admit
-admits
-admittance
-admitted
-admittedly
-admitter
-admitters
-admitting
-admix
-admixed
-admixes
-admixture
-admonish
-admonished
-admonishes
-admonishing
-admonishment
-admonishments
-admonition
-admonitions
-admonitory
-ado
-adobe
-adolescence
-adolescent
-adolescents
-Adolph
-Adolphus
-Adonis
-adopt
-adoptable
-adopted
-adopter
-adopters
-adopting
-adoption
-adoptions
-adoptive
-adopts
-adorable
-adorableness
-adorably
-adoration
-adore
-adored
-adorer
-adores
-adoring
-adoringly
-adorn
-adorned
-adornment
-adornments
-adorns
-ADP
-adrenal
-adrenalin
-adrenaline
-Adrian
-Adrianople
-Adriatic
-Adrienne
-adrift
-adroit
-adroitly
-adroitness
-ads
-adsorb
-adsorbed
-adsorbent
-adsorbing
-adsorbs
-adsorption
-adulate
-adulating
-adulation
-adulator
-adulatory
-adult
-adulterant
-adulterate
-adulterated
-adulterates
-adulterating
-adulteration
-adulterer
-adulterers
-adulteress
-adulterous
-adulterously
-adultery
-adulthood
-adults
-adumbrate
-adumbrated
-adumbrates
-adumbrating
-adumbration
-adust
-advance
-advanced
-advancement
-advancements
-advances
-advancing
-advantage
-advantaged
-advantageous
-advantageously
-advantages
-advent
-adventist
-adventists
-adventitious
-adventitiously
-adventure
-adventured
-adventurer
-adventurers
-adventures
-adventuresome
-adventuress
-adventuring
-adventurous
-adventurously
-adventurousness
-adverb
-adverbial
-adverbially
-adverbs
-adversarial
-adversaries
-adversary
-adversative
-adverse
-adversely
-adverseness
-adversities
-adversity
-advert
-advertise
-advertised
-advertisement
-advertisements
-advertiser
-advertisers
-advertises
-advertising
-advertisment
-advertize
-advertizement
-advertorial
-advice
-advisability
-advisable
-advisably
-advise
-advised
-advisedly
-advisee
-advisees
-advisement
-advisements
-adviser
-advisers
-advises
-advising
-advisor
-advisors
-advisory
-advocacy
-advocate
-advocated
-advocates
-advocating
-adz
-adze
-Aegean
-aegis
-Aeneas
-Aeneid
-Aeolus
-aeon
-aerate
-aerated
-aerates
-aerating
-aeration
-aerator
-aerators
-aerial
-aerialist
-aerially
-aerials
-aerie
-aero
-aeroacoustic
-Aerobacter
-aerobatics
-aerobe
-aerobic
-aerobically
-aerobics
-aerodrome
-aerodynamic
-aerodynamically
-aerodynamics
-aerolite
-aerolith
-aeronaut
-aeronautic
-aeronautical
-aeronautics
-aerophotography
-aeroplane
-aerosol
-aerosolize
-aerosols
-aerospace
-aery
-Aeschylus
-Aesop
-aesthete
-aesthetic
-aesthetical
-aesthetically
-aestheticism
-aesthetics
-aetiology
-AF
-afar
-AFB
-AFC
-AFDC
-affability
-affable
-affably
-affair
-affairs
-affarent
-affect
-affectation
-affectations
-affected
-affectedly
-affecting
-affectingly
-affection
-affectionate
-affectionately
-affections
-affective
-affects
-afferent
-affiance
-affianced
-affidavit
-affidavits
-affiliate
-affiliated
-affiliates
-affiliating
-affiliation
-affiliations
-affinities
-affinity
-affirm
-affirmation
-affirmations
-affirmative
-affirmatively
-affirmed
-affirming
-affirms
-affix
-affixation
-affixed
-affixes
-affixing
-afflatus
-afflict
-afflicted
-afflicting
-affliction
-afflictions
-afflictive
-afflicts
-affluence
-affluent
-affluently
-afflux
-afford
-affordable
-afforded
-affording
-affords
-afforest
-afforestation
-affranchise
-affray
-affricate
-affricates
-affright
-affront
-affronted
-affronting
-affronts
-Afghan
-Afghanistan
-Afghans
-aficionado
-afield
-afire
-aflame
-afloat
-aflutter
-afoot
-afore
-aforementioned
-aforesaid
-aforethought
-afoul
-afraid
-afresh
-Africa
-African
-Africanization
-Africanizations
-Africanize
-Africanized
-Africanizes
-Africanizing
-Africans
-Afrikaans
-Afrikaner
-Afrikaners
-Afro
-Afro-American
-Afrocentric
-Afrocentrism
-aft
-after
-after-image
-afterall
-afterbirth
-afterburner
-aftercare
-afterdamp
-aftereffect
-afterglow
-afterimage
-afterlife
-afterlives
-aftermath
-aftermost
-afternoon
-afternoons
-aftershave
-aftershock
-aftershocks
-aftertaste
-afterthought
-afterthoughts
-afterward
-afterwards
-afterword
-ag
-again
-against
-Agamemnon
-agape
-agar
-agate
-agates
-Agatha
-agave
-age
-age-band
-age-old
-aged
-Agee
-ageing
-ageism
-ageist
-ageless
-agelessly
-agelessness
-agencies
-agency
-agenda
-agendas
-agent
-agents
-ager
-ageratum
-agers
-ages
-Aggie
-Aggies
-agglomerate
-agglomerated
-agglomerates
-agglomeration
-agglutinade
-agglutinate
-agglutinated
-agglutinates
-agglutinating
-agglutination
-agglutinative
-agglutinin
-agglutinins
-aggrandize
-aggrandizement
-aggravate
-aggravated
-aggravates
-aggravating
-aggravatingly
-aggravation
-aggregate
-aggregated
-aggregately
-aggregates
-aggregating
-aggregation
-aggregations
-aggression
-aggressions
-aggressive
-aggressively
-aggressiveness
-aggressor
-aggressors
-aggrieve
-aggrieved
-aggrieves
-aggrieving
-aghast
-agile
-agilely
-agility
-aging
-agio
-agiotage
-agitate
-agitated
-agitates
-agitating
-agitation
-agitations
-agitator
-agitators
-agitprop
-agitpropist
-agleam
-aglitter
-aglow
-agnail
-agnate
-Agnes
-Agnew
-agnostic
-agnosticism
-agnostics
-ago
-agog
-agonies
-agonize
-agonized
-agonizes
-agonizing
-agonizingly
-agony
-agoraphobia
-agoraphobic
-Agra
-agrarian
-agrarianism
-agree
-agreeable
-agreeableness
-agreeably
-agreed
-agreeing
-agreement
-agreements
-agreer
-agreers
-agrees
-agribusiness
-Agricola
-agricultural
-agriculturalist
-agriculturally
-agriculture
-agriculturist
-AGRIS
-agronomic
-agronomical
-agronomist
-agronomy
-aground
-AGSI
-Aguascalientes
-ague
-aguish
-Agway
-ah
-aha
-ahead
-ahem
-Ahmadabad
-Ahmedabad
-ahoy
-AI
-aid
-aid-de-camp
-Aida
-aide
-aide-de-camp
-aided
-Aides
-aides-de-camp
-aiding
-aids-de-camp
-aigrette
-Aiken
-ail
-Aileen
-aileron
-ailerons
-ailing
-ailment
-ailments
-aim
-aimed
-aimer
-aimers
-aiming
-aimless
-aimlessly
-aimlessness
-aims
-ain't
-Ainu
-Ainus
-aipsh
-air
-air-condition
-air-conditioned
-air-conditioner
-air-conditioning
-air-cooled
-air-cushion
-air-fighter
-air-jacket
-air-line
-air-liner
-air-pump
-air-raid
-air-shaft
-air-space
-air-ticket
-air-to-air
-air-trap
-airbag
-airbags
-airbase
-airbed
-airborne
-airbrush
-Airbus
-aircraft
-aircraft-carrier
-airdrome
-airdrop
-airdrops
-aired
-Airedale
-airer
-airers
-Aires
-airfare
-airfield
-airfields
-airflow
-airfoil
-airfoils
-airframe
-airframes
-airfreight
-airhead
-airily
-airiness
-airing
-airings
-airless
-airlessness
-airlift
-airlifts
-airline
-airliner
-airlines
-airlock
-airlocks
-airmail
-airmails
-airman
-airmen
-airplane
-airplanes
-airplay
-airport
-airports
-airproof
-airs
-airship
-airships
-airsick
-airsickness
-airspace
-airspeed
-airstrike
-airstrip
-airstrips
-airtight
-airwaves
-airway
-airways
-airworthiness
-airworthy
-airy
-aisle
-aitch
-Aitken
-ajar
-AK
-Akers
-akimbo
-akin
-Akron
-Ala
-Alabama
-Alabaman
-Alabamans
-Alabamian
-alabaster
-alack
-alacrity
-Aladdin
-Alameda
-Alamo
-Alamos
-Alan
-Alar
-alarm
-alarm-clock
-alarmed
-alarming
-alarmingly
-alarmism
-alarmist
-alarms
-alas
-Alaska
-Alaskan
-Alastair
-alb
-alba
-albacore
-Albania
-Albanian
-Albanians
-Albany
-albatross
-albeit
-Alberich
-Albert
-Alberta
-Albertan
-Alberto
-albertype
-albinism
-albino
-Albion
-Albrecht
-Albright
-album
-albumen
-albumin
-albuminous
-albums
-Albuquerque
-Alcatraz
-Alcestis
-alchemist
-alchemy
-Alcibiades
-Alcmena
-Alcoa
-alcohol
-alcoholic
-alcoholically
-alcoholics
-alcoholism
-alcohols
-Alcott
-alcove
-alcoves
-alcuprint
-Aldebaran
-aldehyde
-Alden
-alder
-alderman
-aldermen
-alderwoman
-aldine
-Aldrich
-ale
-ale-house
-aleatory
-Alec
-Aleck
-alee
-alehouse
-alembic
-Aleppo
-alert
-alerted
-alertedly
-alerter
-alerters
-alerting
-alertly
-alertness
-alerts
-Aleut
-Aleutian
-Aleutians
-alewife
-alewives
-Alexander
-Alexandra
-Alexandre
-Alexandria
-Alexandrian
-Alexandrine
-Alexei
-Alexis
-Alfa
-alfalfa
-Alfonso
-Alfred
-Alfredo
-alfresco
-alga
-algae
-algaecide
-algal
-algebra
-algebraic
-algebraical
-algebraically
-algebras
-Algenib
-Alger
-Algeria
-Algerian
-Algiers
-alginate
-ALGOL
-Algonquian
-Algonquin
-algorithm
-algorithmic
-algorithmically
-algorithms
-algraphy
-Alhambra
-alias
-aliased
-aliases
-aliasing
-alibi
-alibis
-Alice
-Alicia
-alien
-alienable
-alienage
-alienate
-alienated
-alienates
-alienating
-alienation
-alienist
-aliens
-alight
-alighting
-align
-aligned
-aligner
-aligning
-alignment
-alignments
-aligns
-alike
-aliment
-alimentary
-alimentation
-aliments
-alimony
-aline
-alinement
-aliquot
-Alison
-Alistair
-alit
-alive
-aliveness
-aliyah
-alkali
-alkali-proof
-alkaline
-alkalinity
-alkalis
-alkalize
-alkaloid
-alkaloids
-alkyd
-alkyl
-all
-all-American
-all-around
-all-clear
-all-day
-all-fired
-all-important
-all-inclusive
-all-nighter
-all-out
-all-purpose
-all-round
-all-star
-all-time
-Allah
-allay
-allayed
-allaying
-allays
-allegation
-allegations
-allege
-alleged
-allegedly
-alleges
-Alleghenies
-Allegheny
-allegiance
-allegiances
-alleging
-allegoric
-allegorical
-allegorically
-allegories
-allegorist
-allegory
-Allegra
-allegretto
-allegrettos
-allegro
-allele
-alleles
-alleluia
-alleluiah
-allemande
-Allen
-Allendale
-Allentown
-allergen
-allergenic
-allergic
-allergically
-allergies
-allergist
-allergy
-alleviate
-alleviated
-alleviates
-alleviating
-alleviation
-alley
-alley-oop
-alleys
-alleyway
-alleyways
-Allhallows
-alliance
-alliances
-allied
-allies
-alligator
-alligators
-Allis
-Allison
-alliterate
-alliteration
-alliterations
-alliterative
-alliteratively
-allmanac
-allocatable
-allocate
-allocated
-allocates
-allocating
-allocation
-allocations
-allocator
-allocators
-allocution
-allodial
-allodium
-allonge
-allonym
-allophone
-allophones
-allophonic
-allot
-allotment
-allotments
-allots
-allotted
-allotter
-allotting
-allover
-allow
-allowable
-allowably
-allowance
-allowances
-allowed
-allowing
-allows
-alloy
-alloys
-allspice
-Allstate
-allude
-alluded
-alludes
-alluding
-allure
-allurement
-alluring
-alluringly
-allusion
-allusions
-allusive
-allusively
-allusiveness
-alluvia
-alluvial
-alluvium
-alluvium(s)
-ally
-allying
-Allyn
-alma
-Alma-Ata
-Almaden
-almanac
-almanacs
-almighty
-almond
-almond-tree
-almonds
-almoner
-almost
-alms
-alms-giving
-alms-house
-almshouse
-almsman
-almsman-folk
-alnico
-aloe
-aloes
-aloft
-aloha
-alone
-aloneness
-along
-alongshore
-alongside
-aloof
-aloofly
-aloofness
-aloud
-alp
-alpaca
-Alpert
-alpha
-alphabet
-alphabetic
-alphabetical
-alphabetically
-alphabetics
-alphabetization
-alphabetize
-alphabetized
-alphabetizer
-alphabetizes
-alphabetizing
-alphabets
-alphanumeric
-alphanumerical
-alphanumerically
-Alpheratz
-Alphonse
-alpine
-Alpinism
-Alpinist
-Alps
-already
-alright
-ALS
-Alsace-Lorraine
-Alsatia
-Alsatian
-Alsatians
-also
-also-ran
-Alsop
-Altair
-altar
-altar-piece
-altarpiece
-altars
-alte
-alter
-alterable
-alteration
-alterations
-altercate
-altercation
-altercations
-altered
-alterer
-alterers
-altering
-alternate
-alternated
-alternately
-alternates
-alternating
-alternation
-alternations
-alternative
-alternatively
-alternatives
-alternator
-alternators
-alters
-Althaea
-altho
-although
-altimeter
-altitude
-altitudes
-alto
-altogether
-Alton
-Altos
-altruism
-altruist
-altruistic
-altruistically
-alum
-alumina
-aluminium
-aluminography
-aluminum
-alumna
-alumnae
-alumni
-alumnus
-alundum
-Alva
-Alvarez
-alveolar
-alveoli
-alveolus
-Alvin
-always
-Alyssa
-AM
-Amadeus
-amain
-amalgam
-amalgamate
-amalgamated
-amalgamates
-amalgamating
-amalgamation
-amalgams
-Amanda
-amanuenses
-amanuensis
-amaranth
-amaretto
-Amarillo
-amaryllis
-amass
-amassed
-amasses
-amassing
-amateur
-amateurish
-amateurishly
-amateurishness
-amateurism
-amateurs
-amatol
-amatory
-amaze
-amazed
-amazedly
-amazement
-amazer
-amazers
-amazes
-amazing
-amazingly
-Amazon
-Amazons
-ambassador
-ambassadorial
-ambassadors
-ambassadorship
-ambassadress
-amber
-ambergris
-ambiance
-ambidexterity
-ambidextrous
-ambidextrously
-ambience
-ambient
-ambiguities
-ambiguity
-ambiguous
-ambiguously
-ambition
-ambitions
-ambitious
-ambitiously
-ambitiousness
-ambivalence
-ambivalent
-ambivalently
-amble
-ambled
-ambler
-ambles
-ambling
-ambrosia
-ambrosial
-ambrotyphy
-ambulance
-ambulances
-ambulant
-ambulate
-ambulation
-ambulatory
-ambuscade
-ambush
-ambushed
-ambushes
-Amdahl
-AME
-ameba
-amebae
-amebic
-ameboid
-ameer
-Amelia
-ameliorate
-ameliorated
-ameliorating
-amelioration
-ameliorative
-amen
-amenability
-amenable
-amenably
-amend
-amendable
-amended
-amender
-amending
-amendment
-amendments
-amends
-amenities
-amenity
-amenorrhea
-Amer
-Amerada
-Amerasian
-amerce
-amercement
-America
-American
-Americana
-Americanism
-Americanization
-Americanizations
-Americanize
-Americanizer
-Americanizers
-Americanizes
-Americans
-Americas
-americium
-Amerind
-Amerindian
-Ames
-amethyst
-AMFIS
-Amharic
-Amherst
-amiability
-amiable
-amiably
-amicability
-amicable
-amicableness
-amicably
-amid
-amide
-amidships
-amidst
-Amiga
-amigo
-amino
-amir
-Amish
-amiss
-amity
-Amman
-Ammerman
-ammeter
-ammo
-ammonia
-ammoniac
-ammoniacal
-ammonium
-ammunition
-amnesia
-amnesiac
-amnesic
-amnesty
-amnia
-amniocenteses
-amniocentesis
-amnion
-amniotic
-Amoco
-amoeba
-amoebae
-amoebas
-amoebic
-amok
-among
-amongst
-amoral
-amorality
-amorally
-amorist
-amorous
-amorously
-amorousness
-amorphous
-amorphously
-amorphousness
-amortizable
-amortization
-amortize
-amortized
-amortizes
-amortizing
-Amos
-amount
-amounted
-amounter
-amounters
-amounting
-amounts
-amour
-amour-propre
-amp
-amperage
-ampere
-amperes
-ampersand
-ampersands
-Ampex
-amphetamine
-amphetamines
-amphibian
-amphibians
-amphibious
-amphibiously
-amphiboles
-amphibology
-amphitheater
-amphitheaters
-amphitheatre
-amphora
-amphorae
-ample
-amplification
-amplified
-amplifier
-amplifiers
-amplifies
-amplify
-amplifying
-amplitude
-amplitudes
-amply
-ampoule
-ampoules
-ampul
-ampule
-amputate
-amputated
-amputates
-amputating
-amputation
-amputee
-Amsterdam
-Amtrak
-amuck
-amulet
-amulets
-Amundsen
-amuse
-amused
-amusedly
-amusement
-amusements
-amuser
-amusers
-amuses
-amusing
-amusingly
-Amy
-amygdalic
-amyl
-amylaceous
-amylaceousoid
-amylase
-an
-Anabaptist
-Anabaptists
-Anabel
-anabolism
-anachronism
-anachronisms
-anachronistic
-anachronistically
-anacolutha
-anacoluthon
-anaconda
-anacondas
-Anacreon
-anaemia
-anaemic
-anaerobe
-anaerobic
-anaerobically
-anaesthesia
-anaesthetic
-anaesthetist
-anaesthetize
-anagram
-anagrams
-Anaheim
-anal
-analecta
-Analects
-analet
-analgesia
-analgesic
-analgetic
-anally
-analog
-analogical
-analogically
-analogies
-analogize
-analogon
-analogous
-analogously
-analogousness
-analogue
-analogues
-analogy
-analysand
-analyse
-analyses
-analysis
-analyst
-analysts
-analytic
-analytical
-analytically
-analyticities
-analyticity
-analyzable
-analyze
-analyzed
-analyzer
-analyzers
-analyzes
-analyzing
-anamneses
-anamnesis
-ananym
-anapaest
-anapest
-anapestic
-anaphora
-anaphoric
-anaphorically
-anaplasmosis
-anarchic
-anarchical
-anarchically
-anarchism
-anarchist
-anarchistic
-anarchists
-anarchy
-Anastasia
-anastomoses
-anastomosis
-anastomotic
-anathema
-anathematize
-Anatole
-Anatolia
-Anatolian
-anatomic
-anatomical
-anatomically
-anatomist
-anatomize
-anatomy
-ancestor
-ancestors
-ancestral
-ancestrally
-ancestress
-ancestry
-anchor
-anchorage
-anchorages
-anchored
-anchoress
-anchoret
-anchoring
-anchorite
-anchoritism
-anchorman
-anchorperson
-anchors
-anchorwoman
-anchovies
-anchovy
-ancient
-anciently
-ancientness
-ancients
-ancillary
-ancress
-and
-and/or
-Andalusia
-Andalusian
-Andalusians
-andante
-Andean
-anders
-Andersen
-Anderson
-Andes
-anding
-andiron
-Andorra
-Andover
-Andre
-Andrea
-Andrei
-Andrew
-Andrews
-androgen
-androgenic
-androgynous
-androgyny
-android
-Andromache
-Andromeda
-Andy
-anecdotal
-anecdote
-anecdotes
-anecdotic
-anechoic
-anemia
-anemic
-anemically
-anemometer
-anemometers
-anemometry
-anemone
-anent
-anepigraphon
-aneroid
-anesthesia
-anesthesiologist
-anesthesiology
-anesthetic
-anesthetically
-anesthetics
-anesthetist
-anesthetization
-anesthetize
-anesthetized
-anesthetizes
-anesthetizing
-aneurism
-aneurysm
-anew
-angel
-Angela
-Angeleno
-Angelenos
-Angeles
-angelfish
-angelic
-angelical
-angelically
-Angelina
-Angeline
-Angelo
-angels
-anger
-angered
-angering
-angers
-Angie
-angina
-angiography
-angioplasty
-angiosperm
-angle
-angled
-angler
-anglers
-Angles
-Anglesea
-Anglesey
-angleworm
-Anglia
-Anglian
-Anglican
-Anglicanism
-Anglicanize
-Anglicanizes
-Anglicans
-Anglicism
-Anglicist
-Anglicization
-angling
-Anglistics
-Anglo
-Anglo-American
-Anglo-French
-Anglo-Saxon
-Anglophil
-Anglophile
-Anglophilia
-Anglophobe
-Anglophobia
-Angola
-Angolan
-angrier
-angrily
-angry
-angst
-angstrom
-anguish
-anguished
-angular
-angularity
-angularly
-Angus
-Anheuser
-anhtrax
-anhydrous
-anhydrously
-aniline
-animadversion
-animadvert
-animal
-animalcule
-animals
-animate
-animated
-animatedly
-animately
-animateness
-animates
-animating
-animation
-animations
-animator
-animators
-animism
-animist
-animistic
-animized
-animosity
-animus
-anion
-anionic
-anions
-anise
-aniseed
-aniseikonic
-anisette
-anisotropic
-anisotropy
-Anita
-Ankara
-ankh
-ankle
-anklebone
-ankles
-anklet
-Ann
-Anna
-annal
-Annalistic
-annals
-Annapolis
-Anne
-anneal
-annelid
-Annette
-annex
-annexation
-annexe
-annexed
-annexes
-annexing
-Annie
-annihilate
-annihilated
-annihilates
-annihilating
-annihilation
-annihilator
-anniversaries
-anniversary
-annotate
-annotated
-annotates
-annotating
-annotation
-annotations
-annotative
-annotator
-announce
-announced
-announcement
-announcements
-announcer
-announcers
-announces
-announcing
-annoy
-annoyance
-annoyances
-annoyed
-annoyer
-annoyers
-annoying
-annoyingly
-annoys
-annual
-annually
-annuals
-annuitant
-annuity
-annul
-annular
-annuli
-annulled
-annulling
-annulment
-annulments
-annuls
-annulus
-annum
-annunciate
-annunciated
-annunciates
-annunciating
-annunciation
-annunciator
-annunciators
-anode
-anodes
-anodic
-anodize
-anodized
-anodizes
-anodyne
-anoint
-anointed
-anointing
-anointment
-anoints
-anomalies
-anomalous
-anomalously
-anomaly
-anomic
-anomie
-anon
-anonym
-anonymity
-anonymous
-anonymously
-anopheles
-anorak
-anorectic
-anorexia
-anorexic
-another
-Anselm
-Anselmo
-anserine
-ANSI
-answer
-answerable
-answered
-answerer
-answerers
-answering
-answers
-ant
-ant-hill
-antacid
-Antaeus
-antagonism
-antagonisms
-antagonist
-antagonistic
-antagonistically
-antagonists
-antagonize
-antagonized
-antagonizes
-antagonizing
-Antananarivo
-antarctic
-Antarctica
-Antares
-ante
-ante-room
-anteater
-anteaters
-antebellum
-antecedence
-antecedent
-antecedents
-antechamber
-antedate
-antedated
-antediluvian
-antelope
-antelopes
-antenatal
-antenna
-antennae
-antennas
-anterior
-anteroom
-anthelmintic
-anthem
-anthems
-anther
-anthill
-anthologies
-anthologist
-anthologize
-anthology
-Anthony
-anthracite
-anthrax
-anthropocentric
-anthropoid
-anthropological
-anthropologically
-anthropologist
-anthropologists
-anthropology
-anthropomorphic
-anthropomorphically
-anthropomorphism
-anthropomorphous
-anti
-anti-aircraft
-anti-American
-anti-Catholic
-anti-clockwise
-anti-fascist
-anti-imperialism
-anti-imperialist
-anti-imperialistic
-anti-intellectual
-anti-Semite
-anti-Semitic
-anti-Semitically
-anti-Semitism
-anti-social
-antiabortion
-antiabortionist
-antiaircraft
-antibacterial
-antibiotic
-antibiotics
-antibodies
-antibody
-antic
-anticancer
-antichrist
-anticipate
-anticipated
-anticipates
-anticipating
-anticipation
-anticipations
-anticipatory
-anticlerical
-anticlimactic
-anticlimactically
-anticlimax
-anticline
-anticlockwise
-anticoagulant
-anticoagulation
-anticommunism
-anticommunist
-anticompetitive
-anticorrosive
-antics
-anticyclone
-anticyclonic
-antidemocratic
-antidepressant
-antidisestablishmentarianism
-antidote
-antidotes
-Antietam
-antifascist
-antiformant
-antifreeze
-antifundamentalist
-antigen
-antigenic
-antigenicity
-antigens
-Antigone
-antiguities
-antihero
-antihistamine
-antihistorical
-antiknock
-antilabor
-Antillean
-Antilles
-antilogarithm
-antimacassar
-antimalarial
-antimatter
-antimicrobial
-antimissile
-antimony
-antinomian
-antinomy
-antinuclear
-Antioch
-ANTIOPE
-antioxidant
-antiparticle
-antipasti
-antipasto
-antipathetic
-antipathy
-antipersonnel
-antiperspirant
-antiphon
-antiphonal
-antiphonally
-antiphonary
-antipodal
-antipode
-antipodean
-antipodes
-antipollution
-antipoverty
-antipyretic
-antiquarian
-antiquarianism
-antiquarians
-antiquary
-antiquate
-antiquated
-antique
-antiques
-antiquities
-antiquity
-antiredeposition
-antiresonance
-antiresonator
-antisemitic
-antisemitism
-antisepsis
-antiseptic
-antiseptically
-antisera
-antiserum
-antislavery
-antisocial
-antisocially
-antispasmodic
-antisubmarine
-antisymmetric
-antisymmetry
-antitank
-antitheses
-antithesis
-antithetic
-antithetical
-antithetically
-antithyroid
-antitoxin
-antitoxins
-antitrust
-antiunion
-antivenin
-antiviral
-antivivisectionist
-antiwar
-antler
-antlered
-antlers
-Antoine
-Antoinette
-Anton
-Antonio
-Antonovics
-Antony
-antonym
-antonymous
-ants
-antsy
-Antwerp
-anus
-anvil
-anvils
-anxieties
-anxiety
-anxious
-anxiously
-anxiousness
-any
-any-copy
-anybody
-anyhow
-anymore
-anyone
-anyplace
-anything
-anytime
-anyway
-anywhere
-anywise
-aorta
-aortae
-aortic
-AP
-apace
-Apache
-Apaches
-Apalachicola
-apanage
-apart
-apartheid
-apartment
-apartments
-apathetic
-apathetically
-apathy
-apatite
-APB
-ape
-aped
-apelike
-Apennines
-aperiodic
-aperiodicity
-aperitif
-apertitif
-aperture
-apes
-Apetalous
-apex
-apexes
-aphasia
-aphasic
-aphelia
-aphelion
-aphid
-aphides
-aphids
-aphis
-aphonic
-aphorism
-aphorisms
-aphoristic
-aphoristically
-aphrodisiac
-Aphrodite
-Apia
-apiaries
-apiarist
-apiary
-apical
-apically
-apices
-apicultural
-apiculture
-apiece
-aping
-apish
-apishly
-APL
-aplenty
-aplomb
-APO
-apocalypse
-apocalyptic
-apocryph
-apocrypha
-apocryphal
-apocryphally
-apodoses
-apodosis
-apogee
-apogees
-apograph
-apolitical
-apolitically
-Apollinaire
-Apollo
-Apollonian
-apologetic
-apologetically
-apologia
-apologies
-apologist
-apologists
-apologize
-apologized
-apologizes
-apologizing
-apology
-apoplectic
-apoplexy
-apostasy
-apostate
-apostatize
-apostle
-apostles
-apostleship
-apostolic
-apostrophe
-apostrophes
-apostrophize
-apothecary
-apothegm
-apotheoses
-apotheosis
-APP
-appal
-Appalachia
-Appalachian
-Appalachians
-appall
-appalled
-appalling
-appallingly
-Appaloosas
-appanage
-apparatus
-apparatuses
-apparel
-appareled
-apparent
-apparently
-apparition
-apparitions
-appeal
-appealed
-appealer
-appealers
-appealing
-appealingly
-appeals
-appear
-appearance
-appearances
-appeared
-appearence
-appearer
-appearers
-appearing
-appears
-appease
-appeased
-appeasement
-appeaser
-appeases
-appeasing
-appelation
-appelative
-appellant
-appellants
-appellate
-appellation
-append
-appendage
-appendages
-appendectomy
-appended
-appender
-appenders
-appendices
-appendicitis
-appending
-appendix
-appendixes
-appends
-appertain
-appertains
-appetite
-appetites
-appetizer
-appetizing
-appetizingly
-Appia
-Appian
-applaud
-applauded
-applauder
-applauding
-applauds
-applause
-apple
-apple-pie
-apple-sauce
-apple-tree
-Appleby
-applejack
-apples
-applesauce
-applet
-Appleton
-appliance
-appliances
-applicability
-applicable
-applicably
-applicant
-applicants
-application
-applications
-applicative
-applicatively
-applicator
-applicators
-applied
-applier
-appliers
-applies
-applique
-apply
-applying
-appoint
-appointed
-appointee
-appointees
-appointer
-appointers
-appointing
-appointive
-appointment
-appointments
-appoints
-Appomattox
-apportion
-apportioned
-apportioning
-apportionment
-apportionments
-apportions
-appose
-apposite
-appositely
-appositeness
-apposition
-appositive
-appraisal
-appraisals
-appraise
-appraised
-appraisement
-appraiser
-appraisers
-appraises
-appraising
-appraisingly
-appreciable
-appreciably
-appreciate
-appreciated
-appreciates
-appreciating
-appreciation
-appreciations
-appreciative
-appreciatively
-appreciator
-appreciatory
-apprehend
-apprehended
-apprehensible
-apprehension
-apprehensions
-apprehensive
-apprehensively
-apprehensiveness
-apprentice
-apprenticed
-apprentices
-apprenticeship
-apprise
-apprised
-apprises
-apprising
-apprize
-approach
-approachability
-approachable
-approached
-approacher
-approachers
-approaches
-approaching
-approbate
-approbation
-appropriate
-appropriated
-appropriately
-appropriateness
-appropriates
-appropriating
-appropriation
-appropriations
-appropriator
-appropriators
-approval
-approvals
-approve
-approved
-approver
-approvers
-approves
-approving
-approvingly
-approximate
-approximated
-approximately
-approximates
-approximating
-approximation
-approximations
-approximative
-appurtenance
-appurtenances
-appurtenant
-apricot
-apricots
-April
-Aprils
-apron
-aprons
-apropos
-apse
-apsis
-apt
-aptitude
-aptitudes
-aptly
-aptness
-Apulia
-aqua
-aquaculture
-aqualung
-aquamarine
-aquanaut
-aquaplane
-aquarelle
-aquaria
-aquarium
-Aquarius
-aquatic
-aquatically
-aquatics
-aquatint
-aquatone
-aquavit
-aqueduct
-aqueducts
-aqueous
-aquiculture
-aquifer
-aquifers
-Aquila
-aquiline
-Aquinas
-Arab
-arabesque
-arabia
-Arabian
-Arabianize
-Arabianizes
-Arabians
-Arabic
-Arabicize
-Arabicizes
-arability
-Arabist
-arable
-Arabs
-Araby
-arachnid
-arachnids
-Aramaic
-Aramco
-Arapaho
-Arapahoe
-Ararat
-arbiter
-arbiters
-arbitrage
-arbitrager
-arbitrageur
-arbitral
-arbitrament
-arbitrarily
-arbitrariness
-arbitrary
-arbitrate
-arbitrated
-arbitrates
-arbitrating
-arbitration
-arbitrator
-arbitrators
-arbor
-arboreal
-arboreous
-arborescent
-arboreta
-arboretum
-arboriculture
-arbors
-arborvitae
-arbour
-arbutus
-arc
-arc-lamp
-arc-light
-arcade
-arcaded
-arcades
-Arcadia
-Arcadian
-arcana
-arcane
-arcanum
-arced
-arch
-archaeological
-archaeologically
-archaeologist
-archaeology
-archaic
-archaically
-archaicness
-archaism
-archaist
-archaistic
-archaize
-archangel
-archangels
-archbishop
-archbishopric
-archdeacon
-archdiocesan
-archdiocese
-archdioceses
-archduchess
-archduchy
-archduke
-arched
-archenemy
-archeological
-archeologist
-archeology
-archer
-archers
-archery
-arches
-archetypal
-archetype
-archetypical
-archfiend
-archfool
-Archibald
-Archie
-archiepiscopal
-Archimedes
-arching
-archipelago
-archipelagoes
-architect
-architectonic
-architectonics
-architects
-architectural
-architecturally
-architecture
-architectures
-architrave
-archival
-archive
-archived
-archiver
-archivers
-archives
-archiving
-archivist
-archly
-archness
-archway
-arcing
-arclike
-ARCO
-arcs
-arcsine
-arctangent
-arctic
-Arcturus
-Ardabil
-Ardebil
-Arden
-ardency
-ardent
-ardently
-ardor
-ardour
-arduous
-arduously
-arduousness
-are
-area
-areal
-areas
-aren't
-arena
-arenaceous
-arenas
-areola
-Arequipa
-Ares
-argent
-Argentina
-Argentine
-Argentinean
-Argentinian
-argentotypy
-Argive
-Argo
-argon
-argonaut
-Argonauts
-Argonne
-Argos
-argosy
-argot
-arguable
-arguably
-argue
-argued
-arguer
-arguers
-argues
-arguing
-argument
-argumentation
-argumentative
-argumentatively
-argumentativeness
-arguments
-Argus
-argyle
-aria
-Ariadne
-Arianism
-Arianist
-Arianists
-arid
-aridity
-aridly
-Aries
-aright
-arise
-arisen
-ariser
-arises
-arising
-arisings
-aristocracy
-aristocrat
-aristocratic
-aristocratically
-aristocrats
-Aristophanes
-Aristotelian
-Aristotle
-arithmetic
-arithmetical
-arithmetically
-arithmetician
-arithmetics
-arithmetize
-arithmetized
-arithmetizes
-Ariz
-Arizona
-Arizonan
-Arizonian
-ark
-Arkansan
-Arkansas
-Arlen
-Arlene
-Arlington
-arm
-armada
-armadillo
-armadillos
-Armageddon
-Armagnac
-armament
-armaments
-armarian
-Armata
-armature
-armband
-armchair
-armchairs
-Armco
-armed
-Armenia
-Armenian
-armer
-armers
-armful
-armhole
-armies
-arming
-armistice
-armlet
-armload
-Armonk
-armor
-armored
-armorer
-armorial
-armory
-armour
-armour-plate
-armoury
-armpit
-armpits
-armrest
-arms
-Armstrong
-army
-Arnold
-aroma
-aromas
-aromatherapist
-aromatherapy
-aromatic
-aromatically
-arose
-around
-arousal
-arouse
-aroused
-arouses
-arousing
-ARPA
-ARPANET
-arpeggio
-arpeggios
-ARPT
-arrack
-Arragon
-arraign
-arraigned
-arraigning
-arraignment
-arraignments
-arraigns
-arrange
-arranged
-arrangement
-arrangements
-arranger
-arrangers
-arranges
-arranging
-arrant
-arras
-array
-arrayed
-arrays
-arrear
-arrears
-arrest
-arrested
-arrester
-arresters
-arresting
-arrestingly
-arrestor
-arrestors
-arrests
-Arrhenius
-arrhythmia
-arrhythmic
-arrhythmical
-arrival
-arrivals
-arrive
-arrived
-arrives
-arriving
-arrogance
-arrogant
-arrogantly
-arrogate
-arrogated
-arrogates
-arrogating
-arrogation
-arrow
-arrowed
-arrowhead
-arrowheads
-arrowroot
-arrows
-arroyo
-arroyos
-arse
-arsenal
-arsenals
-arsenic
-arsine
-arsis
-arson
-arsonist
-art
-artefact
-Artemia
-Artemis
-arterial
-arteries
-arteriolar
-arteriole
-arterioles
-arteriosclerosis
-artery
-artful
-artfully
-artfulness
-arthritic
-arthritis
-arthropod
-arthropods
-arthroscope
-arthroscopic
-Arthur
-Arthurian
-artichoke
-artichokes
-article
-articled
-articles
-articular
-articulate
-articulated
-articulately
-articulateness
-articulates
-articulating
-articulation
-articulations
-articulator
-articulators
-articulatory
-Artie
-artifact
-artifacts
-artifice
-artificer
-artifices
-artificial
-artificialities
-artificiality
-artificially
-artificialness
-artillerist
-artillery
-artilleryman
-artillerymen
-artiness
-artisan
-artisans
-artist
-artiste
-artistic
-artistically
-artistry
-artists
-artless
-artlessly
-artlessness
-artotype
-arts
-artsy
-Arturo
-artwork
-arty
-ARU
-Aruba
-arum
-Aryan
-Aryans
-as
-asap
-asbestos
-ascend
-ascendance
-ascendancy
-ascendant
-ascended
-ascendency
-ascendent
-ascender
-ascenders
-ascending
-ascends
-ascensions
-ascent
-ascertain
-ascertainable
-ascertained
-ascertaining
-ascertainment
-ascertains
-ascetic
-ascetical
-ascetically
-asceticism
-ascetics
-ASCII
-ascot
-ascribable
-ascribe
-ascribed
-ascribes
-ascribing
-ascription
-aseptic
-aseptically
-asexual
-asexuality
-asexually
-ash
-ash-bin
-ash-pan
-ash-tray
-ashamed
-ashamedly
-ashcan
-ashen
-Asher
-ashes
-Asheville
-Ashkhabad
-Ashland
-ashlar
-Ashley
-ashman
-Ashmolean
-ashore
-ashram
-ashtray
-ashtrays
-ashy
-Asia
-Asian
-Asian-American
-Asians
-Asiatic
-Asiaticization
-Asiaticizations
-Asiaticize
-Asiaticizes
-Asiatics
-aside
-Asilomar
-Asimov
-asinine
-asininely
-asininity
-ASIS
-ask
-askance
-askant
-asked
-asker
-askers
-askew
-asking
-asks
-ASL
-aslant
-asleep
-Asmara
-asocial
-asp
-asparagus
-aspartame
-ASPCA
-aspect
-aspects
-aspen
-asperity
-asperse
-aspersion
-aspersions
-asphalt
-asphodel
-asphyxia
-asphyxiate
-asphyxiation
-aspic
-aspidistra
-aspirant
-aspirants
-aspirate
-aspirated
-aspirates
-aspirating
-aspiration
-aspirations
-aspirator
-aspirators
-aspire
-aspired
-aspires
-aspirin
-aspiring
-aspirins
-ass
-assail
-assailable
-assailant
-assailants
-assailed
-assailing
-assails
-Assam
-assassin
-assassinate
-assassinated
-assassinates
-assassinating
-assassination
-assassinations
-assassins
-assault
-assaulted
-assaulting
-assaults
-assay
-assayed
-assayer
-assaying
-assemblage
-assemblages
-assemble
-assembled
-assembler
-assembles
-assemblies
-assembling
-assembly
-assemblyman
-assemblywoman
-assent
-assented
-assenter
-assenting
-assents
-assert
-asserted
-asserter
-asserters
-asserting
-assertion
-assertions
-assertive
-assertively
-assertiveness
-asserts
-asses
-assess
-assessable
-assessed
-assesses
-assessing
-assessment
-assessments
-assessor
-assessors
-asset
-assets
-asseverate
-asseveration
-asshole
-assiduity
-assiduous
-assiduously
-assiduousness
-assign
-assignable
-assignation
-assigned
-assignee
-assignees
-assigner
-assigners
-assigning
-assignment
-assignments
-assignor
-assigns
-assimilate
-assimilated
-assimilates
-assimilating
-assimilation
-assimilations
-assist
-assistance
-assistances
-assistant
-assistants
-assistantship
-assistantships
-assisted
-assisting
-assists
-assistshop
-assize
-assizes
-assman
-associate
-associated
-associates
-associating
-association
-associational
-associations
-associative
-associatively
-associativity
-associator
-associators
-assonance
-assonant
-assort
-assorted
-assortment
-assortments
-assorts
-assuage
-assuaged
-assuagement
-assuages
-assumable
-assume
-assumed
-assumes
-assuming
-assumption
-assumptions
-assumptive
-assurance
-assurances
-assure
-assured
-assuredly
-assurer
-assurers
-assures
-assuring
-assuringly
-Assyria
-Assyrian
-Assyrianize
-Assyrianizes
-Assyriology
-Astaire
-Astaires
-Astarte
-astatine
-aster
-asterisk
-asterisks
-astern
-asteroid
-asteroidal
-asteroids
-asters
-asthma
-asthmatic
-astigmatic
-astigmatism
-astir
-Aston
-astonish
-astonished
-astonishes
-astonishing
-astonishingly
-astonishment
-Astor
-Astoria
-astound
-astounded
-astounding
-astoundingly
-astounds
-astraddle
-astrakhan
-astral
-astray
-astrict
-astride
-astringency
-astringent
-astringently
-astrolabe
-astrologer
-astrological
-astrologically
-astrologist
-astrology
-astronaut
-astronautic
-astronautical
-astronautics
-astronauts
-astronomer
-astronomers
-astronomic
-astronomical
-astronomically
-astronomy
-astrophysical
-astrophysicist
-astrophysics
-AstroTurf
-astute
-astutely
-astuteness
-Asuncion
-asunder
-Aswan
-asylum
-asymmetric
-asymmetrical
-asymmetrically
-asymmetry
-asymptomatic
-asymptomatically
-asymptote
-asymptotes
-asymptotic
-asymptotically
-asynchronism
-asynchronous
-asynchronously
-asynchrony
-at
-at's
-Atalanta
-Atari
-atavism
-atavist
-atavistic
-ataxia
-ataxic
-Atchison
-ate
-atelier
-atemporal
-Athabascan
-Athabaska
-Athabaskan
-atheism
-atheist
-atheistic
-atheists
-Athena
-Athenian
-Athenians
-Athens
-atherosclerosis
-athirst
-athlete
-athletes
-athletic
-athletically
-athleticism
-athletics
-athrophy
-athwart
-atilt
-Atkins
-Atkinson
-Atlanta
-Atlantic
-Atlantica
-Atlantis
-atlas
-ATM
-atmosphere
-atmospheres
-atmospheric
-atmospherical
-atmospherically
-atmospherics
-atoll
-atolls
-atom
-atomic
-atomically
-atomics
-atomism
-atomist
-atomistic
-atomization
-atomize
-atomized
-atomizer
-atomizes
-atomizing
-atoms
-atonal
-atonality
-atonally
-atone
-atoned
-atonement
-atones
-atop
-ATP
-Atreus
-atria
-atrial
-atrium
-atrocious
-atrociously
-atrociousness
-atrocities
-atrocity
-atrophic
-atrophied
-atrophies
-atrophy
-atrophying
-atropine
-Atropos
-attaboy
-attach
-attachable
-attache
-attached
-attacher
-attachers
-attaches
-attaching
-attachment
-attachments
-attach
-attack
-attackable
-attacked
-attacker
-attackers
-attacking
-attacks
-attain
-attainability
-attainable
-attainably
-attainder
-attained
-attainer
-attainers
-attaining
-attainment
-attainments
-attains
-attar
-attempt
-attempted
-attempter
-attempters
-attempting
-attempts
-attend
-attendance
-attendances
-attendant
-attendants
-attended
-attendee
-attendees
-attender
-attenders
-attending
-attends
-attention
-attention!
-attentional
-attentionality
-attentions
-attentive
-attentively
-attentiveness
-attenuate
-attenuated
-attenuates
-attenuating
-attenuation
-attenuator
-attenuators
-attest
-attestation
-attested
-attesting
-attests
-attic
-Attica
-attics
-Attila
-attire
-attired
-attires
-attiring
-attitude
-attitudes
-attitudinal
-attitudinize
-Attlee
-attorney
-attorney-general
-attorneys
-attosecond
-attract
-attractable
-attractant
-attracted
-attracting
-attraction
-attractions
-attractive
-attractively
-attractiveness
-attractor
-attractors
-attracts
-attributable
-attribute
-attributed
-attributes
-attributing
-attribution
-attributions
-attributive
-attributively
-attrition
-Attucks
-attune
-attuned
-attunes
-attuning
-ATV
-Atwater
-atwitter
-Atwood
-atypical
-atypically
-Auberge
-aubergine
-Aubrey
-auburn
-Auckland
-auction
-auctioneer
-auctioneers
-audacious
-audaciously
-audaciousness
-audacity
-audibility
-audible
-audibly
-audience
-audiences
-audio
-audio-visual
-audiobook
-audiogram
-audiograms
-audiography
-audiological
-audiologist
-audiologists
-audiology
-audiometer
-audiometers
-audiometric
-audiometry
-audiophile
-audiorecording
-audiotape
-audiovideotex
-audiovisual
-audiovisuals
-audit
-audited
-auditing
-audition
-auditioned
-auditioning
-auditions
-auditive
-auditor
-auditoria
-auditorium
-auditors
-auditory
-audits
-Audrey
-Audubon
-Auerbach
-Aug
-Augean
-auger
-augers
-aught
-augite
-augment
-augmentation
-augmentative
-augmented
-augmenter
-augmenting
-augments
-augur
-augurs
-augury
-august
-Augusta
-Augustan
-Augustine
-Augustinian
-augustly
-augustness
-Augustus
-auk
-aunt
-auntie
-aunts
-aunty
-aura
-aural
-aurally
-auras
-Aurelius
-aureola
-aureole
-aureomycin
-auricle
-auricular
-auriferous
-Auriga
-aurist
-aurochs
-aurora
-aurorae
-Auschwitz
-auscultate
-auscultated
-auscultates
-auscultating
-auscultation
-auscultations
-auspice
-auspices
-auspicious
-auspiciously
-auspiciousness
-Aussie
-Austen
-austere
-austerely
-austerity
-Austin
-austral
-Australasia
-Australasian
-Australia
-Australian
-Australianize
-Australianizes
-Australis
-Austria
-Austria-Hungary
-Austrian
-Austrianize
-Austrianizes
-Austro-German
-Austro-Hungarian
-autarchic
-autarchy
-autarkic
-autarkical
-autarky
-authentic
-authentically
-authenticate
-authenticated
-authenticates
-authenticating
-authentication
-authentications
-authenticator
-authenticators
-authenticity
-author
-authored
-authoress
-authoring
-authoritarian
-authoritarianism
-authoritative
-authoritatively
-authoritativeness
-authorities
-authority
-authorization
-authorizations
-authorize
-authorized
-authorizer
-authorizers
-authorizes
-authorizing
-authors
-authorship
-autism
-autistic
-auto
-auto-answer
-auto-encoding
-auto-indexing
-auto-trip
-autoabstract
-autobahn
-autobiographer
-autobiographic
-autobiographical
-autobiographically
-autobiographies
-autobiography
-autobus
-autocephalous
-autochthon
-autochton
-autoclave
-autocode
-autocoder
-autocollimator
-autocorrelate
-autocorrelation
-autocracies
-autocracy
-autocrat
-autocratic
-autocratically
-autocrats
-autodecrement
-autodecremented
-autodecrements
-autodialer
-autodidact
-autofluorescence
-autograph
-autographed
-autographing
-autographs
-autography
-autoignition
-autoimmune
-autoimmunity
-autoincrement
-autoincremented
-autoincrements
-autoindex
-autoindexing
-autolithography
-automaker
-automata
-automate
-automated
-automates
-automatic
-automatically
-automatics
-automating
-automation
-automatism
-automatize
-automaton
-automobile
-automobiles
-automotive
-autonavigator
-autonavigators
-autonomic
-autonomous
-autonomously
-autonomy
-autopatch
-autopilot
-autopilots
-autoplotter
-autopsied
-autopsies
-autopsy
-autoregressive
-autos
-autosuggestibility
-autotransformer
-autotype
-autoworker
-autumn
-autumnal
-autumns
-auxiliaries
-auxiliary
-auxin
-AV
-avail
-availabilities
-availability
-available
-availably
-availed
-availer
-availers
-availing
-avails
-avalanche
-avalanched
-avalanches
-avalanching
-avarice
-avaricious
-avariciously
-avast
-avatar
-avaunt
-AVDU
-avenge
-avenged
-avenger
-avenges
-avenging
-Aventine
-Aventino
-avenue
-avenues
-aver
-average
-averaged
-averages
-averaging
-averment
-Avernus
-averred
-averrer
-averring
-avers
-averse
-aversion
-aversions
-avert
-averted
-averting
-averts
-Avery
-Avesta
-avian
-aviaries
-aviary
-aviate
-aviation
-aviator
-aviators
-aviatrices
-aviatrix
-avid
-avidity
-avidly
-Avignon
-avionic
-avionics
-Avis
-avitaminosis
-Aviv
-avocado
-avocados
-avocation
-avocational
-avocations
-Avogadro
-avoid
-avoidable
-avoidably
-avoidance
-avoided
-avoider
-avoiders
-avoiding
-avoids
-avoirdupois
-Avon
-avouch
-avow
-avowal
-avowed
-avowedly
-avows
-avuncular
-aw
-await
-awaited
-awaiting
-awaits
-awake
-awaken
-awakened
-awakening
-awakens
-awakes
-awaking
-award
-awarded
-awarder
-awarders
-awarding
-awards
-aware
-awareness
-awash
-away
-awe
-awe-inspiring
-awe-stricken
-awe-struck
-awed
-aweigh
-awesome
-awesomely
-awesomeness
-awestricken
-awestruck
-awful
-awfully
-awfulness
-awhile
-awkward
-awkwardly
-awkwardness
-awl
-awls
-awn
-awning
-awnings
-awoke
-awoken
-awry
-ax
-axe
-axed
-Axel
-axer
-axers
-axes
-axial
-axially
-axing
-axiological
-axiom
-axiomatic
-axiomatically
-axiomatization
-axiomatizations
-axiomatize
-axiomatized
-axiomatizes
-axiomatizing
-axioms
-axis
-axle
-axles
-axletree
-axolotl
-axolotls
-axon
-axons
-ay
-ay(e)
-ayah
-ayatollah
-aye
-Ayers
-ayes
-Aylesbury
-AZ
-azalea
-azaleas
-Azerbaidzhan
-Azerbaijan
-azimuth
-azimuths
-Azores
-Azov
-Aztec
-Aztecan
-azure
-B.S-ing
-BA
-baa
-Baal
-Babbage
-babbitt
-Babbitt-metal
-babble
-babbled
-babbler
-babbles
-babbling
-Babcock
-babe
-Babelize
-Babelizes
-babes
-babied
-babies
-Babka
-baboon
-baboons
-Babul
-babushka
-baby
-baby-faced
-baby-farmer
-baby-sat
-baby-sit
-baby-sitter
-baby-walker
-babyhood
-babying
-babyish
-Babylon
-Babylonia
-Babylonian
-Babylonians
-Babylonize
-Babylonizes
-babysat
-babysit
-babysitter
-babysitting
-baccalaureate
-baccarat
-bacchanal
-bacchanalia
-bacchanalian
-Bacchic
-Bacchus
-baccy
-Bach
-bachelor
-bachelorhood
-bachelors
-bacillary
-bacilli
-bacillus
-back
-back-comb
-back-formation
-back-pedal
-back-to-back
-back-up
-backache
-backaches
-backarrow
-backbencher
-backbend
-backbends
-backbit
-backbite
-backbiter
-backbiting
-backbitten
-backboard
-backbone
-backbones
-backbreaking
-backdate
-backdrop
-backdrops
-backed
-backer
-backers
-backfield
-backfile
-backfill
-backfire
-backfiring
-backgammon
-background
-backgrounder
-backgrounds
-backhand
-backhanded
-backhandedly
-backhander
-backhoe
-backing
-backlash
-backless
-backlight
-backlog
-backlogged
-backlogs
-backmost
-backorder
-backpack
-backpacker
-backpacking
-backpacks
-backpedal
-backplane
-backplanes
-backplate
-backrest
-backs
-backscatter
-backscattered
-backscattering
-backscatters
-backseat
-backside
-backslapper
-backslapping
-backslash
-backslashes
-backslid
-backslidden
-backslide
-backslider
-backspace
-backspaced
-backspaces
-backspacing
-backspin
-backstab
-backstage
-backstair
-backstairs
-backstitch
-backstitched
-backstitches
-backstitching
-backstop
-backstretch
-backstroke
-backtalk
-backtrack
-backtracked
-backtracker
-backtrackers
-backtracking
-backtracks
-backup
-backups
-Backus
-backward
-backwardly
-backwardness
-backwards
-backwash
-backwater
-backwaters
-backwoods
-backwoodsman
-backwoodsmen
-backyard
-backyards
-bacon
-bacteria
-bacterial
-bactericidal
-bactericide
-bacteriologic
-bacteriological
-bacteriologist
-bacteriology
-bacterium
-bad
-bad-mouth
-bad-tempered
-bad/biting/bitter/caustic/dangerous/wicked/shrewd/tongue
-baddie
-baddy
-bade
-Baden
-Baden-Powell
-badge
-badger
-badgered
-badgering
-badgers
-badges
-badinage
-badlands
-badly
-badman
-badminton
-badmouth
-badness
-Baedeker
-Baffin
-baffle
-baffled
-bafflement
-baffler
-bafflers
-baffling
-bag
-bagatelle
-bagatelles
-Bagdad
-bagel
-bagels
-bagful
-baggage
-bagged
-bagger
-baggers
-baggily
-bagginess
-bagging
-baggy
-Baghdad
-Bagley
-bagman
-bagpipe
-bagpiper
-bagpipes
-Bagrodia
-Bagrodias
-bags
-baguette
-bah
-Bahama
-Bahamanian
-Bahamas
-Bahamian
-Bahrain
-Bahrein
-bail
-bailable
-bailee
-Bailey
-Baileys
-bailie
-bailiff
-bailiffs
-bailing
-bailiwick
-bailment
-bailor
-bailout
-bailsman
-Baird
-Bairdi
-bait
-bait-and-switch
-baited
-baiter
-baiting
-baits
-baize
-Baja
-bake
-baked
-bakelite
-baker
-bakeries
-bakers
-Bakersfield
-bakery
-bakers
-bakes
-bakeshop
-Bakhtiari
-baking
-baklava
-baksheesh
-Baku
-balaclava
-balalaika
-balalaikas
-balance
-balance-sheet
-balance-wheel
-balanced
-balancer
-balancers
-balances
-Balanchine
-balancing
-balconies
-balcony
-bald
-bald-faced
-baldachin
-balderdash
-baldfaced
-balding
-baldly
-baldness
-baldric
-Baldwin
-bale
-baleen
-baleful
-balefully
-balefulness
-baler
-bales
-Balfour
-Bali
-Balinese
-balk
-Balkan
-Balkanization
-Balkanizations
-Balkanize
-balkanized
-Balkanizes
-balkanizing
-Balkans
-balked
-balkiness
-balking
-balks
-balky
-ball
-ball-bearing
-ball-boy
-ball-cartridge
-ball-firing
-ball-room
-ball-up
-ball-valve
-ballad
-ballade
-balladeer
-balladry
-ballads
-Ballard
-Ballards
-ballast
-ballasts
-ballcock
-balled
-baller
-ballerina
-ballerinas
-ballers
-ballet
-balletic
-ballets
-ballgame
-ballgown
-balling
-ballistic
-ballistics
-ballocks
-balloon
-ballooned
-ballooner
-ballooners
-ballooning
-balloonist
-balloons
-ballot
-ballot-box
-ballots
-ballpark
-ballparks
-ballplayer
-ballplayers
-ballpoint
-ballroom
-ballrooms
-balls
-ballyhoo
-balm
-balminess
-balms
-balmy
-baloney
-balsa
-balsam
-balsamic
-Baltic
-Baltimore
-Baltimorean
-Balto-Slavic
-Baluchistan
-baluster
-balustrade
-balustrades
-Balzac
-Bamako
-Bamberger
-Bambi
-bamboo
-bamboozle
-ban
-Banach
-banal
-banality
-banally
-banana
-bananas
-Banbury
-Bancroft
-band
-band-brake
-band-stand
-bandage
-bandaged
-bandages
-bandaging
-bandana
-bandanna
-bandbox
-bandeau
-bandeaux
-banded
-bandied
-bandies
-banding
-bandit
-banditry
-bandits
-bandmaster
-bandoleer
-bandolier
-bandpass
-bands
-bandsman
-bandstand
-bandstands
-Bandung
-bandwagon
-bandwagons
-bandwidth
-bandwidths
-bandy
-bandy-legged
-bandying
-bane
-baneful
-bang
-bang-up
-Bangalore
-banged
-banging
-Bangkok
-Bangladesh
-Bangladeshi
-bangle
-bangles
-Bangor
-bangs
-Bangui
-banish
-banished
-banishes
-banishing
-banishment
-banister
-banisters
-banjo
-banjoist
-banjos
-Banjul
-bank
-bank-bill
-bank-book
-bank-note
-bank-rate
-bankable
-bankbook
-bankcard
-banked
-banker
-bankers
-banking
-banknote
-bankroll
-bankrupcy
-bankrupt
-bankruptcies
-bankruptcy
-bankrupted
-bankrupting
-bankrupts
-banks
-banned
-banner
-banners
-banning
-bannister
-bannock
-banns
-banquet
-banqueter
-banqueting
-banquetings
-banquets
-banquette
-bans
-banshee
-banshees
-banshie
-bantam
-bantamweight
-banter
-bantered
-bantering
-banteringly
-banters
-Bantu
-Bantus
-banyan
-banzai
-baobab
-baptism
-baptismal
-baptisms
-baptist
-Baptiste
-baptistery
-baptistries
-baptistry
-Baptists
-baptize
-baptized
-baptizer
-baptizes
-baptizing
-bar
-bar-bell
-bar-room
-Barabbas
-barb
-Barbadian
-Barbados
-Barbara
-barbarian
-barbarianism
-barbarians
-barbaric
-barbarically
-barbarism
-barbarities
-barbarity
-barbarize
-barbarous
-barbarously
-barbecue
-barbecued
-barbecues
-barbed
-barbel
-barbell
-barbells
-barbeque
-barber
-barberry
-barbershop
-barbital
-barbiturate
-barbiturates
-Barbour
-barbs
-barbwire
-barcarole
-barcarolle
-Barcelona
-Barclay
-bard
-bardic
-bards
-bare
-bare-bones
-bareback
-barebacked
-bared
-barefaced
-barefacedly
-barefacedness
-barefoot
-barefooted
-barehanded
-bareheaded
-barelegged
-barell
-barely
-bareness
-barer
-bares
-barest
-barf
-barflies
-barfly
-bargain
-bargained
-bargainer
-bargaining
-bargains
-barge
-bargee
-bargeman
-barges
-barging
-baring
-baritone
-baritones
-barium
-bark
-barked
-barkeep
-barkeeper
-barker
-barkers
-barking
-barks
-barley
-barley-cap
-barleycorn
-Barlow
-barmaid
-barman
-barn
-Barnabas
-barnackle
-barnacle
-barnacled
-Barnard
-Barnaul
-Barnes
-Barnet
-Barnett
-Barney
-Barnhard
-barns
-barnstorm
-barnstormed
-barnstormer
-barnstorming
-barnstorms
-Barnum
-barnyard
-barnyards
-barometer
-barometers
-barometric
-barometrical
-barometrically
-baron
-baronage
-baroness
-baronet
-baronetcy
-baronial
-baronies
-barons
-barony
-baroque
-baroqueness
-barque
-Barr
-barrack
-barracks
-barracuda
-barrage
-barrages
-Barranquilla
-barre
-barred
-barrel
-barreled
-barrelled
-barrelling
-barrelorgan
-barrels
-barren
-barrenness
-barrens
-Barrett
-barrette
-barricade
-barricades
-Barrie
-barrier
-barriers
-barring
-barringer
-Barrington
-barrio
-barrister
-Barron
-barroom
-barrow
-Barry
-Barrymore
-Barrymores
-bars
-Barstow
-Bart
-bartender
-bartenders
-barter
-bartered
-barterer
-bartering
-barters
-Barth
-Bartholomew
-Bartlett
-Bartok
-Barton
-baryon
-barytone
-bas-relief
-basal
-basally
-basalt
-basaltic
-basan
-Bascom
-bascule
-base
-baseball
-baseballs
-baseband
-baseboard
-baseboards
-based
-Basel
-baseless
-baseline
-baselines
-basely
-baseman
-basement
-basements
-baseness
-baser
-bases
-bash
-bashed
-bashes
-bashful
-bashfully
-bashfulness
-bashing
-basic
-basically
-basicity
-basics
-Basie
-basil
-basilica
-basilisk
-basin
-basinful
-basing
-basins
-basis
-bask
-basked
-basket
-basket-ball
-basketball
-basketballs
-basketry
-baskets
-basketwork
-basking
-Basque
-Basra
-bass
-bass-baritone
-basses
-basset
-Basseterre
-Bassett
-bassi
-bassinet
-bassinets
-bassist
-basso
-bassoon
-bassoonist
-basswood
-bast
-bastard
-bastardization
-bastardize
-bastards
-bastardy
-baste
-basted
-baster
-bastes
-basting
-bastion
-bastions
-Basutoland
-bat
-Batavia
-batch
-batched
-Batchelder
-batches
-bate
-bated
-Bateman
-Bates
-bath
-bath-room
-bath-towel
-bath-tub
-bathe
-bathed
-bather
-bathers
-bathes
-bathetic
-bathhouse
-bathing
-bathing-costume
-bathing-drawers
-bathing-dress
-bathing-gown
-bathing-machine
-bathing-suit
-bathmat
-bathos
-bathrobe
-bathrobes
-bathroom
-bathrooms
-baths
-bathtub
-bathtubs
-Bathurst
-bathyscaph
-bathyscaphe
-bathysphere
-batik
-Batista
-batiste
-batman
-baton
-batons
-Bator
-bats
-batsman
-batt
-battalion
-battalions
-batted
-Battelle
-batten
-battens
-batter
-battered
-batterer
-batteries
-battering
-batters
-battery
-batting
-battle
-battle-ax
-battle-axe
-battle-cruiser
-battleax
-battleaxe
-battled
-battledore
-battledress
-battlefield
-battlefields
-battlefront
-battlefronts
-battleground
-battlegrounds
-battlement
-battlements
-battler
-battlers
-battles
-battleship
-battleships
-battling
-batty
-bauble
-baubles
-baud
-Baudelaire
-Bauer
-Bauhaus
-baulk
-Bausch
-bauxite
-Bavaria
-Bavarian
-bawd
-bawdily
-bawdiness
-bawdy
-bawl
-bawled
-bawling
-bawls
-Baxter
-bay
-Bayamon
-bayberry
-Bayda
-bayed
-Bayes
-Bayesian
-baying
-Baylor
-bayonet
-bayonet-joint
-bayonets
-Bayonne
-bayou
-bayous
-Bayport
-Bayreuth
-bays
-bazaar
-bazaars
-bazoo
-bazooka
-BB
-BBC
-BBQ
-BBS
-BC
-be
-be!
-beach
-beachcomber
-beached
-beaches
-beachhead
-beachheads
-beaching
-beachwear
-beacon
-beacons
-bead
-beaded
-beading
-beadle
-beadles
-beads
-beady
-beagle
-beagles
-beak
-beaked
-beaker
-beakers
-beaks
-beam
-beam-ends
-beamed
-beamer
-beamers
-beaming
-beams
-beamy
-bean
-bean-pod
-beanbag
-beaned
-beaner
-beaners
-beanie
-beaning
-beanpole
-beans
-beanstalk
-bear
-bearable
-bearably
-beard
-bearded
-beardless
-beards
-Beardsley
-bearer
-bearers
-bearing
-bearings
-bearish
-bearishly
-bearishness
-bearless
-bearlike
-bears
-bears-pessimists
-bearskin
-beast
-beastliness
-beastly
-beasts
-beat
-beat-up
-beatable
-beatably
-beaten
-beater
-beaters
-beatific
-beatifically
-beatification
-beatify
-beating
-beatings
-beatitude
-beatitudes
-beatnik
-beatniks
-Beatrice
-beats
-beau
-Beauchamps
-Beaujolais
-Beaumont
-Beauregard
-beaus
-beaut
-beauteous
-beauteously
-beautician
-beauties
-beautification
-beautifications
-beautified
-beautifier
-beautifiers
-beautifies
-beautiful
-beautifully
-beautify
-beautifying
-beauty
-beaux
-beaver
-beavers
-Beaverton
-bebop
-becalm
-becalmed
-becalming
-becalms
-became
-because
-Bechtel
-beck
-Becker
-Becket
-Beckett
-Beckman
-beckon
-beckoned
-beckoning
-beckons
-Becky
-becloud
-become
-becomes
-becoming
-becomingly
-bed
-bed-and-breakfast
-bed-bug
-bed-chamber
-bed-clothes
-bed-down
-bed-rock
-bed-wetter
-bedabble
-bedaub
-bedazzle
-bedazzled
-bedazzlement
-bedazzles
-bedazzling
-bedbug
-bedbugs
-bedclothes
-bedded
-bedder
-bedders
-bedding
-bedeck
-bedel
-bedell
-bedevil
-bedeviled
-bedeviling
-bedevilment
-bedevils
-bedew
-bedfast
-bedfellow
-Bedford
-bedgown
-bedim
-bedizen
-bedlam
-bedlinen
-bedouin
-bedpan
-bedpost
-bedposts
-bedraggle
-bedraggled
-bedrid
-bedridden
-bedrock
-bedroll
-bedroom
-bedrooms
-beds
-bedside
-bedsit
-bedsore
-bedspread
-bedspreads
-bedspring
-bedsprings
-bedstead
-bedsteads
-bedtime
-bee
-bee-hive
-bee-house
-bee-keeping
-bee-line
-Beebe
-beebread
-beech
-Beecham
-beechen
-beecher
-beechnut
-beef
-Beef-Tripe
-beefburger
-beefcake
-beefeater
-beefed
-beefer
-beefers
-beefiness
-beefing
-beefs
-beefsteak
-beefy
-beehive
-beehives
-beekeeper
-beekeeping
-beeline
-Beelzebub
-been
-beep
-beeper
-beeps
-beer
-beer-mat
-beerhouse
-beers
-beery
-bees
-beeswax
-beet
-beet-harvester
-beet-root
-Beethoven
-beetle
-beetle-browed
-beetled
-beetles
-beetling
-beetroot
-beets
-beeves
-befall
-befallen
-befalling
-befalls
-befell
-befit
-befits
-befitted
-befitting
-befittingly
-befog
-befogged
-befogging
-befool
-before
-beforehand
-befoul
-befouled
-befouling
-befouls
-befriend
-befriended
-befriending
-befriends
-befuddle
-befuddled
-befuddlement
-befuddles
-befuddling
-beg
-began
-begat
-beget
-begets
-begetting
-beggar
-beggarly
-beggars
-beggary
-begged
-begging
-begin
-beginner
-beginners
-beginning
-beginnings
-begins
-begone
-Begone!
-begonia
-begot
-begotten
-begrime
-begrudge
-begrudged
-begrudges
-begrudging
-begrudgingly
-begs
-beguile
-beguiled
-beguilement
-beguiler
-beguiles
-beguiling
-beguilingly
-beguine
-begum
-begun
-behalf
-behave
-behaved
-behaves
-behaving
-behavior
-behavioral
-behaviorally
-behaviorism
-behavioristic
-behaviors
-behaviour
-behaviourism
-behead
-beheading
-beheld
-behemoth
-behemoths
-behest
-behind
-behindhand
-behold
-beholden
-beholder
-beholders
-beholding
-beholds
-behoof
-behoove
-behooves
-behove
-beige
-Beijing
-being
-beings
-Beirut
-bejewel
-bejeweled
-bejewelled
-Bela
-belabor
-belabored
-belaboring
-belabors
-belabour
-Belarus
-belated
-belatedly
-belaud
-belay
-belayed
-belaying
-belays
-belch
-belched
-belches
-belching
-beleaguer
-Belfast
-belfries
-belfry
-Belgian
-Belgians
-Belgium
-Belgrade
-belie
-belied
-belief
-beliefs
-belies
-believable
-believably
-believe
-believed
-believer
-believers
-believes
-believing
-belittle
-belittled
-belittlement
-belittles
-belittling
-belive
-Belize
-bell
-bell-bottom
-bell-bottomed
-bell-bottoms
-bell-flower
-bell-founder
-bell-metal
-bell-ringer
-Bella
-belladonna
-Bellamy
-Bellatrix
-bellboy
-bellboys
-belle
-belles
-belles-lettres
-belletrist
-belletristic
-Belleville
-bellhop
-bellhops
-bellicose
-bellicosity
-bellies
-belligerence
-belligerency
-belligerent
-belligerently
-belligerents
-Bellingham
-Bellini
-bellman
-bellmen
-Bellovin
-bellow
-bellowed
-bellowing
-bellows
-bells
-bellum
-bellwether
-bellwethers
-Bellwood
-belly
-bellyache
-bellybutton
-bellyful
-bellyfull
-Belmont
-Belmopan
-Beloit
-belong
-belonged
-belonging
-belongings
-belongs
-Belorussia
-Belorussian
-beloved
-below
-Belshazzar
-belt
-belted
-belting
-Belton
-belts
-Beltsville
-beltway
-Beluchistan
-beluga
-Belushi
-bely
-belying
-bemire
-bemoan
-bemoaned
-bemoaning
-bemoans
-bemuse
-bemused
-bemusedly
-bemusement
-Ben
-Ben-Gurion
-Benares
-bench
-bench-mark
-bench-press
-benched
-benches
-benchmark
-benchmarking
-benchmarks
-benchtop
-bend
-bend-leather
-bendable
-benders
-bending
-Bendix
-bends
-beneath
-benedick
-Benedict
-Benedictine
-benediction
-benedictions
-benedictory
-Benedikt
-benefaction
-benefactor
-benefactors
-benefactress
-benefice
-beneficence
-beneficences
-beneficent
-beneficently
-beneficial
-beneficially
-beneficiaries
-beneficiary
-benefit
-benefited
-benefiting
-benefits
-benefitted
-benefitting
-Benelux
-Benet
-benevolence
-benevolent
-benevolently
-Bengal
-Bengali
-benighted
-benightedly
-benign
-benignant
-benignity
-benignly
-Benin
-Beninese
-Benjamin
-Bennett
-Bennington
-Benny
-Benson
-bent
-bent-grass
-bent-wood
-Bentham
-Bentley
-Bentleys
-Benton
-bentwood
-benumb
-benumbed
-Benz
-Benzedrine
-benzene
-benzine
-Beograd
-Beowulf
-bequeath
-bequeathal
-bequeathed
-bequeathing
-bequeaths
-bequest
-bequests
-berate
-berated
-berates
-berating
-Berber
-Berea
-bereau
-bereave
-bereaved
-bereavement
-bereavements
-bereaves
-bereaving
-bereft
-Berenices
-Beresford
-beret
-berets
-berg
-Bergen
-Bergland
-Berglund
-Bergman
-Bergson
-Bergsten
-Bergstrom
-beribboned
-beriberi
-Bering
-Beringer
-Berkeley
-berkelium
-Berkowitz
-Berkshire
-Berkshires
-Berlin
-Berliner
-Berliners
-Berlinize
-Berlinizes
-Berlioz
-Berlitz
-berm
-Berman
-Bermuda
-Bermudan
-Bermudas
-Bermudian
-Bern
-Bernadine
-Bernard
-Bernardine
-Bernardino
-Bernardo
-Bernese
-Bernet
-Bernhard
-Bernhardt
-Bernice
-Bernie
-Berniece
-Bernini
-Bernoulli
-Bernstein
-Berra
-berries
-berry
-berrylike
-berserk
-Bert
-berth
-Bertha
-berths
-Bertie
-Bertram
-Bertrand
-Berwick
-beryl
-berylliosis
-beryllium
-beseech
-beseecher
-beseeches
-beseeching
-beseechingly
-beseem
-besemerize
-beset
-besets
-besetting
-beside
-besides
-besiege
-besieged
-besieger
-besiegers
-besieging
-beslaver
-besmear
-besmirch
-besmirched
-besmirches
-besmirching
-besom
-besot
-besotted
-besotter
-besotting
-besought
-bespangle
-bespatter
-bespattered
-bespeak
-bespeaks
-bespectacled
-bespoke
-bespoken
-Bess
-Bessel
-Bessemer
-Bessemerize
-Bessemerizes
-Bessie
-best
-best-seller
-best-selling
-bested
-bestial
-bestiality
-bestially
-bestiary
-besting
-bestir
-bestirring
-bestow
-bestowal
-bestowed
-bestrew
-bestrewn
-bestrid
-bestridden
-bestride
-bestrode
-bests
-bestseller
-bestsellers
-bestselling
-bet
-beta
-betake
-betaken
-betatron
-betcha
-betel
-Betelgeuse
-Bethesda
-bethink
-Bethlehem
-bethought
-Bethune
-betide
-betimes
-betoken
-betook
-betray
-betrayal
-betrayed
-betrayer
-betraying
-betrays
-betroth
-betrothal
-betrothed
-bets
-Betsey
-Betsy
-Bette
-better
-bettered
-bettering
-betterment
-betterments
-betters
-Betties
-betting
-bettor
-Betty
-between
-betwixt
-bevel
-beveled
-beveling
-bevelled
-bevels
-beverage
-beverages
-Beverly
-bevy
-bewail
-bewailed
-bewailing
-bewails
-beware
-bewhiskered
-bewigged
-bewilder
-bewildered
-bewildering
-bewilderingly
-bewilderment
-bewilders
-bewitch
-bewitched
-bewitches
-bewitching
-bewitchingly
-bewitchment
-bey
-beyond
-bezel
-BFU
-Bhagavad-Gita
-Bhopal
-Bhutan
-Bhutanese
-bi-monthly
-bi-weekly
-Bialystok
-Bianco
-biannual
-biannually
-bias
-biased
-biases
-biasing
-biassed
-biathlon
-bib
-bibbed
-bibber
-bibbing
-bibelot
-Bible
-bibles
-biblical
-biblically
-biblid
-bibliographer
-bibliographic
-bibliographical
-bibliographically
-bibliographies
-bibliographing
-bibliography
-bibliology
-bibliomania
-bibliometrics
-bibliopedagogy
-bibliophile
-bibliophilism
-bibliophilist
-bibliophoby
-bibliopole
-bibliopoly
-bibliotheraphy
-bibliotist
-bibs
-bibulous
-bicameral
-bicameralism
-bicarb
-bicarbonate
-bicentenary
-bicentennial
-bicep
-biceps
-bicker
-bickered
-bickerer
-bickering
-bickers
-biconcave
-biconnected
-biconvex
-bicuspid
-bicycle
-bicycled
-bicycler
-bicyclers
-bicycles
-bicycling
-bicyclist
-bid
-biddable
-bidden
-bidder
-bidders
-biddies
-bidding
-Biddle
-biddy
-bide
-bidet
-bidirectional
-bidirectionally
-bids
-Bien
-biennia
-biennial
-biennially
-biennium
-Bienville
-bier
-Bierce
-bifocal
-bifocals
-bifurcate
-bifurcation
-big
-big-hearted
-big-league
-big-nosed
-big-ticket
-big-time
-bigamist
-bigamous
-bigamy
-Bigelow
-bigger
-biggest
-biggie
-biggish
-Biggs
-bighead
-bighearted
-bigheartedness
-bighorn
-bight
-bights
-bigmouth
-bigness
-bigory
-bigot
-bigoted
-bigotry
-bigots
-bigwig
-biharmonic
-bijection
-bijections
-bijective
-bijectively
-bijou
-bike
-biker
-bikes
-biking
-bikini
-bikinis
-bilabial
-bilateral
-bilaterally
-Bilbao
-bilberry
-Bilbo
-bile
-bilge
-bilges
-biliary
-bilinear
-bilingual
-bilingualism
-bilingually
-bilious
-biliousness
-biliteral
-bilk
-bilked
-bilker
-bilking
-bilks
-bill
-bill-posting
-billable
-billboard
-billboards
-billed
-biller
-billers
-billet
-billet-doux
-billeted
-billeting
-billets
-billets-doux
-billfold
-billiard
-billiards
-billibit
-Billie
-Billiken
-Billikens
-billing
-Billings
-billingsgate
-billion
-billionaire
-billions
-billionth
-billisecond
-billow
-billowed
-billows
-billowy
-bills
-billy
-Biltmore
-bimbo
-bimetallic
-bimetallism
-Bimini
-bimodal
-bimolecular
-bimonthlies
-bimonthly
-bin
-binaries
-binary
-binaural
-bind
-binder
-binders
-bindery
-binding
-bindings
-binds
-bindweed
-bine
-bing
-binge
-binges
-Bingham
-Binghamton
-bingo
-Bini
-binnacle
-binocular
-binoculars
-binomial
-bins
-binuclear
-biochemical
-biochemically
-biochemist
-biochemistry
-biodegradability
-biodegradable
-biodiversity
-bioethics
-biofeedback
-biographer
-biographers
-biographic
-biographical
-biographically
-biographies
-biography
-biologic
-biological
-biologically
-biologist
-biologists
-biology
-biomass
-biomedical
-biomedicine
-biomes
-bionic
-bionically
-bionics
-biophysical
-biophysicist
-biophysics
-biopic
-biopsies
-biopsy
-biorhythm
-BIOS
-bioscience
-biosphere
-biostatistic
-biosynthesize
-biota
-biotechnological
-biotechnology
-biotic
-biotin
-bipartisan
-bipartisanship
-bipartite
-biped
-bipedal
-bipeds
-biplane
-biplanes
-bipolar
-bipolarity
-biracial
-birch
-birchen
-birches
-bird
-bird's-eye
-bird-brained
-bird-fancier
-bird-seed
-birdbath
-birdbaths
-birdbrain
-birdbrained
-birder
-birdhouse
-birdie
-birdied
-birdies
-birdlike
-birdlime
-birds
-birdseed
-birdwatcher
-birefringence
-birefringent
-biretta
-Birgit
-Birmingham
-Birminghamize
-Birminghamizes
-biro
-birth
-birth-certificate
-birth-place
-birth-rate
-birthday
-birthdays
-birthed
-birthmark
-birthplace
-birthplaces
-birthrate
-birthright
-birthrights
-births
-birthstone
-Biscayne
-biscuit
-biscuits
-bisect
-bisected
-bisecting
-bisection
-bisections
-bisector
-bisectors
-bisects
-bisexual
-bisexuality
-bisexually
-Bishkek
-bishop
-bishopric
-bishops
-Bismarck
-Bismark
-bismuth
-bison
-bisons
-bisque
-bisques
-Bissau
-bistable
-bistate
-bistro
-bit
-bitch
-bitch-fox
-bitches
-bitchily
-bitchiness
-bitchy
-bite
-biter
-biters
-bites
-biting
-bitingly
-bitmap
-BITNET
-bitrate
-bits
-bitten
-bitter
-bitterer
-bitterest
-bitterly
-bittern
-bitterness
-bitternut
-bitterroot
-bitters
-bittersweet
-bitty
-bitumen
-bituminous
-bitwise
-bivalent
-bivalve
-bivalves
-bivariate
-bivouac
-bivouacs
-biweekly
-biyearly
-biz
-bizarre
-bizarrely
-Bizet
-Bk
-BL
-blab
-blabbed
-blabber
-blabberer
-blabbermouth
-blabbermouths
-blabbing
-blabs
-black
-black-box
-black-currant
-black-lead
-black-out
-black-smith
-black-tie
-blackamoor
-blackball
-blackberries
-blackberry
-blackbird
-blackbirds
-blackboard
-blackboards
-Blackburn
-blacked
-blacken
-blackened
-blackening
-blackens
-blacker
-blackest
-Blackfeet
-Blackfoot
-Blackfoots
-blackguard
-blackhead
-blacking
-blackish
-blackjack
-blackjacks
-blackleg
-blacklist
-blacklisted
-blacklisting
-blacklists
-blackly
-blackmail
-blackmailed
-blackmailer
-blackmailers
-blackmailing
-blackmails
-Blackman
-Blackmer
-blackness
-blackout
-blackouts
-Blackpool
-blacks
-blacksmith
-blacksmiths
-blacksnake
-Blackstone
-blackthorn
-blacktop
-Blackwell
-Blackwells
-bladder
-bladders
-blade
-blade-bone
-bladed
-blades
-blah
-blah-blah
-Blaine
-Blair
-BLAISE
-Blake
-Blakey
-blamable
-blame
-blameable
-blamed
-blameless
-blamelessly
-blamelessness
-blamer
-blamers
-blames
-blameworthiness
-blameworthy
-blaming
-blanch
-Blanchard
-Blanche
-blanched
-blanches
-blanching
-blancmange
-bland
-blandish
-blandishment
-blandishments
-blandly
-blandness
-blank
-blanked
-blanker
-blankest
-blanket
-blanketed
-blanketer
-blanketers
-blanketing
-blankets
-blanking
-blankly
-blankness
-blanks
-Blanton
-blare
-blared
-blares
-blaring
-blarney
-blase
-blaspheme
-blasphemed
-blasphemer
-blasphemes
-blasphemies
-blaspheming
-blasphemous
-blasphemously
-blasphemousness
-blasphemy
-blast
-blast-furnace
-blast-off
-blasted
-blaster
-blasters
-blasting
-blastoff
-blasts
-blatancy
-blatant
-blatantly
-blather
-Blatz
-blaze
-blazed
-blazer
-blazers
-blazes
-blazing
-blazon
-BLDSS
-bleach
-bleached
-bleacher
-bleachers
-bleaches
-bleaching
-bleaching-ground
-bleak
-bleaker
-bleakly
-bleakness
-blear
-blearily
-bleariness
-bleary
-bleary-eyed
-bleat
-bleating
-bleats
-bled
-bleed
-bleeder
-bleeding
-bleedings
-bleeds
-Bleeker
-bleep
-bleeper
-blemish
-blemished
-blemishes
-blench
-blend
-blended
-blender
-blending
-blends
-Blenheim
-bless
-blessed
-blessedly
-blessedness
-blessing
-blessings
-blest
-blew
-blight
-blighted
-blimey
-blimp
-blimps
-blind
-blinded
-blinder
-blinders
-blindfold
-blindfolded
-blindfolding
-blindfolds
-blinding
-blindingly
-blindly
-blindman's-buff
-blindness
-blinds
-blindside
-blindworm
-blink
-blinked
-blinker
-blinkered
-blinkers
-blinking
-blinks
-Blinn
-blintz
-blintze
-blip
-blips
-bliss
-blissful
-blissfully
-blissfulness
-blister
-blistered
-blistering
-blisteringly
-blisters
-blistery
-blithe
-blithely
-blitheness
-blithering
-blithesome
-blitz
-blitzes
-blitzkrieg
-blizzard
-blizzards
-bloat
-bloated
-bloater
-bloating
-bloats
-blob
-blobs
-bloc
-Bloch
-block
-blockade
-blockaded
-blockader
-blockades
-blockading
-blockage
-blockages
-blockbuster
-blockbusting
-blocked
-blocker
-blockers
-blockhead
-blockhouse
-blockhouses
-blocking
-blockish
-blocks
-blocs
-Bloemfontein
-bloke
-blokes
-Blomberg
-Blomquist
-blond
-blonde
-blondes
-blondish
-blondness
-blonds
-blood
-blood-curdling
-blood-poisoning
-blood-relation
-blood-thirsty
-blood-vessel
-bloodbath
-bloodcurdling
-blooded
-bloodhound
-bloodhounds
-bloodied
-bloodiest
-bloodiness
-bloodless
-bloodlessly
-bloodlessness
-bloodletting
-bloodline
-bloodmobile
-bloods
-bloods-and-guts
-bloodshed
-bloodshot
-bloodstain
-bloodstained
-bloodstains
-bloodstock
-bloodstream
-bloodsucker
-bloodsucking
-bloodthirstily
-bloodthirstiness
-bloodthirsty
-bloody
-bloom
-bloomed
-bloomer
-bloomers
-Bloomfield
-blooming
-Bloomington
-blooms
-bloop
-blooper
-blossom
-blossomed
-blossoms
-blossomy
-blot
-blotch
-blotched
-blotchy
-bloter
-bloting-paper
-blots
-blotted
-blotter
-blotting
-blotto
-blouse
-blouses
-blow
-blow-by-blow
-blow-dry
-blow-dryer
-blow-hard
-blow-hole
-blow-up
-blower
-blowers
-blowfish
-blowfly
-blowgun
-blowhard
-blowing
-blown
-blowout
-blowpipe
-blows
-blowsy
-blowtorch
-blowup
-blowy
-blowzy
-BLT
-blubber
-blubbery
-bludgeon
-bludgeoned
-bludgeoning
-bludgeons
-blue
-blue-blood
-blue-blooded
-blue-chip
-blue-collar
-blue-pencil
-blue-print
-bluebell
-blueberries
-blueberry
-bluebird
-bluebirds
-bluebonnet
-bluebonnets
-bluebottle
-bluefish
-bluegill
-bluegrass
-blueing
-blueish
-bluejacket
-bluejay
-bluejeans
-blueness
-bluenose
-bluepoint
-blueprint
-blueprinter
-blueprints
-bluer
-blues
-bluest
-bluestocking
-bluesy
-bluet
-bluff
-bluffer
-bluffing
-bluffly
-bluffness
-bluffs
-bluing
-bluish
-Blum
-Blumenthal
-blunder
-blunderbuss
-blundered
-blunderer
-blundering
-blunderings
-blunders
-blunt
-blunt-sighted
-blunted
-blunter
-bluntest
-blunting
-bluntly
-bluntness
-blunts
-blur
-blurb
-blurred
-blurriness
-blurring
-blurry
-blurs
-blurt
-blurted
-blurting
-blurts
-blush
-blush-on
-blushed
-blusher
-blushes
-blushing
-bluster
-blustered
-blusterer
-blustering
-blusterous
-blusters
-blustery
-Blythe
-BM
-BNB
-BO
-boa
-boar
-board
-boarded
-boarder
-boarders
-boarding
-boarding-house
-boarding-school
-boardinghouse
-boardinghouses
-boardroom
-boards
-boardwalk
-Boarsh
-boast
-boasted
-boaster
-boasters
-boastful
-boastfully
-boastfulness
-boasting
-boastings
-boasts
-boat
-boat-house
-boater
-boaters
-boathouse
-boathouses
-boating
-boating-man
-boatload
-boatloads
-boatman
-boatmen
-boats
-boatsman
-boatsmen
-boatswain
-boatswains
-boatyard
-boatyards
-bob
-bob-sled
-bob-sleigh
-bobbed
-Bobbie
-bobbin
-bobbin-lace
-bobbing
-bobbins
-bobble
-Bobbsey
-bobby
-bobbysoxer
-bobcat
-bobolink
-bobolinks
-Bobrow
-bobs
-bobsled
-bobsledder
-bobsleigh
-bobtail
-bobwhite
-bobwhites
-Boca
-Boccaccio
-bocce
-bocci
-boccie
-bock
-bod
-bode
-bodeful
-bodega
-Bodenheim
-bodes
-bodice
-bodied
-bodies
-bodily
-bodkin
-Bodleian
-body
-body-building
-body-guard
-bodybuilder
-bodybuilders
-bodybuilding
-bodycheck
-bodyguard
-bodyguards
-bodysuit
-bodyweight
-bodywork
-Boeing
-Boeotia
-Boeotian
-Boer
-Boers
-bog
-Bogart
-Bogartian
-bogey
-bogeyman
-bogeymen
-bogged
-boggle
-boggled
-boggles
-boggling
-boggy
-bogie
-Bogota
-bogs
-bogus
-bogy
-bogyman
-Boheme
-Bohemia
-Bohemian
-Bohr
-boil
-boiled
-boiler
-boilermaker
-boilerplate
-boilers
-boiling
-boiling-point
-boils
-Bois
-Boise
-boisterous
-boisterously
-boisterousness
-bola
-bold
-bold-faced
-bolder
-boldest
-boldface
-boldfaced
-boldly
-boldness
-bole
-bolero
-boletus
-Boleyn
-Bolivia
-Bolivian
-boll
-bollix
-boloney
-Bolshevik
-Bolsheviks
-Bolshevism
-Bolshevist
-Bolshevistic
-Bolshoi
-bolster
-bolstered
-bolstering
-bolsters
-bolt
-bolted
-bolting
-Bolton
-bolts
-Boltzmann
-bolus
-bomb
-bombard
-bombarded
-bombardier
-bombarding
-bombardment
-bombards
-bombast
-bombastic
-bombastically
-Bombay
-bombed
-bomber
-bombers
-bombing
-bombings
-bombproof
-bombs
-bombshell
-bon-bon
-bonanza
-bonanzas
-Bonaparte
-Bonaventure
-bonbon
-bond
-bondage
-bonded
-bonder
-bonders
-bondholder
-bonding
-bondman
-bonds
-bondsman
-bondsmen
-bondwoman
-bone
-bone-dry
-bone-head
-boned
-bonehead
-boneheaded
-boneless
-boner
-boners
-bones
-boney
-bonfire
-bonfires
-bong
-bongo
-bongos
-Bonham
-bonhomie
-Boniface
-boniness
-boning
-bonito
-bonkers
-Bonn
-bonnet
-bonneted
-bonnets
-Bonneville
-bonny
-bonsai
-Bontempo
-bonus
-bonuses
-bony
-boo
-boo-boo
-boob
-booboo
-boobs
-booby
-booby-hatch
-booby-trap
-booby-trapped
-boodle
-boogeyman
-boogie
-boogie-woogie
-boohoo
-book
-book-back
-book-binder
-book-keeper
-book-keeping
-book-louse
-book-mark(er)
-book-plate
-book-post
-book-rest
-book-shrine
-book-slide
-bookbinder
-bookbindery
-bookbinding
-bookcase
-bookcases
-booked
-bookend
-booker
-bookers
-bookie
-bookies
-booking
-booking-clerk
-booking-office
-bookings
-bookish
-bookkeeper
-bookkeepers
-bookkeeping
-booklet
-bookletmobile
-booklets
-booklover
-bookmaker
-bookmaking
-bookmark
-bookmobile
-bookplate
-books
-bookseller
-booksellers
-bookselling
-bookshelf
-bookshelves
-bookshop
-booksizer
-bookstacks
-bookstall
-bookstock
-bookstore
-bookstores
-bookworm
-boolean
-Booleans
-boom
-boombox
-boomed
-boomerang
-boomerangs
-booming
-booms
-boon
-boondocks
-boondoggle
-boondoggler
-Boone
-boonies
-boonlocks
-Boonton
-boor
-boorish
-boorishly
-boorishness
-boors
-boos
-boost
-boosted
-booster
-boosting
-boosts
-boot
-boot-tree
-bootable
-bootblack
-booted
-bootee
-Bootes
-booth
-booths
-bootie
-booting
-bootjack
-Bootle
-bootleg
-bootlegged
-bootlegger
-bootleggers
-bootlegging
-bootlegs
-bootless
-boots
-bootstrap
-bootstrapped
-bootstrapping
-bootstraps
-booty
-booze
-boozehound
-boozer
-boozy
-bop
-borate
-borates
-borax
-Bordeaux
-bordello
-bordellos
-Borden
-border
-bordered
-borderer
-bordering
-borderings
-borderland
-borderlands
-borderline
-borders
-bore
-Borealis
-Boreas
-bored
-boredom
-borer
-bores
-Borg
-boric
-boring
-Boris
-born
-born-again
-borne
-Borneo
-boron
-borough
-boroughs
-Borroughs
-borrow
-borrowed
-borrower
-borrowers
-borrowing
-borrowings
-borrows
-borsch
-borscht
-borzoi
-Bosch
-Bose
-bosh
-Bosnia
-Bosnian
-bosom
-bosoms
-bosomy
-Bosporus
-boss
-bossed
-bosses
-bossily
-bossiness
-bossism
-bossom
-bossy
-Bostitch
-Boston
-Bostonian
-Bostonians
-bosun
-Boswell
-Boswellize
-Boswellizes
-botanic
-botanical
-botanically
-botanist
-botanists
-botany
-botch
-botched
-botcher
-botchers
-botches
-botching
-both
-bother
-botheration
-bothered
-bothering
-bothers
-bothersome
-Botswana
-Botticelli
-bottle
-bottle-fed
-bottle-neck
-bottled
-bottleneck
-bottlenecks
-bottler
-bottlers
-bottles
-bottling
-bottom
-bottomed
-bottoming
-bottomless
-bottomry
-bottoms
-botulinus
-botulism
-Boucher
-boudoir
-bouffant
-bougainvillea
-bough
-boughs
-bought
-bouillabaisse
-bouillon
-boulder
-boulders
-boulevard
-boulevards
-bounce
-bounced
-bouncer
-bounces
-bouncily
-bounciness
-bouncing
-bouncy
-bound
-boundaries
-boundary
-bounded
-bounden
-bounder
-bounding
-boundless
-boundlessly
-boundlessness
-bounds
-bounteous
-bounteously
-bounteousness
-bounties
-bountiful
-bountifully
-bountifulness
-bounty
-bouquet
-bouquets
-bouquiniste
-Bourbaki
-bourgeois
-bourgeoisie
-Bourke-White
-Bourne
-Bournemouth
-boustrophedon
-boustrophedonic
-bout
-boutique
-boutonniere
-bouts
-Bouvier
-bovine
-bovines
-bow
-bow-legged
-bow-legs
-bow-string
-bow-wow
-Bowditch
-bowdlerization
-bowdlerize
-bowdlerized
-bowdlerizes
-bowdlerizing
-Bowdoin
-bowed
-bowel
-bowels
-Bowen
-bower
-bowers
-bowery
-Bowes
-bowie-knife
-bowie-knives
-bowing
-bowl
-bowlder
-bowled
-bowleg
-bowlegged
-bowler
-bowlers
-bowlful
-bowline
-bowlines
-bowling
-bowls
-bowman
-bows
-bowsprit
-bowstring
-bowstrings
-bowwow
-box
-box-calf
-box-office
-boxcar
-boxcars
-boxed
-boxer
-boxers
-boxes
-Boxford
-boxhead
-boxing
-Boxing-day
-boxing-gloves
-boxing-match
-boxing-weight
-boxlike
-boxtop
-boxtops
-boxwood
-boxy
-boy
-boy!
-boy-baby
-boy-child
-boy-cousin
-boy-friend
-boy-hood
-boy-husband
-boy-scout
-boyar
-Boyce
-boycott
-boycotted
-boycotts
-Boyd
-boyfriend
-boyfriends
-boyhood
-boyish
-boyishly
-boyishness
-Boyle
-Boylston
-boys
-boysenberry
-bozo
-bpi
-bra
-brace
-braced
-bracelet
-bracelets
-bracer
-braces
-brachial
-brachycephalic
-bracing
-bracken
-bracket
-bracketed
-bracketing
-brackets
-brackish
-brackishness
-bract
-brad
-bradawl
-bradbury
-Bradford
-Bradley
-Bradshaw
-Brady
-brae
-braes
-brag
-Bragg
-braggadocio
-braggart
-bragged
-bragger
-bragging
-brags
-Brahma
-brahman
-Brahmanism
-Brahmaputra
-brahmin
-brahminic
-brahminism
-Brahms
-Brahmsian
-braid
-braided
-braiding
-braids
-Braille
-brain
-brain-dead
-brain-drain
-brain-fag
-brain-fever
-brain-sick
-brain-work
-Brainard
-Brainards
-brainchild
-brained
-braininess
-braining
-brainless
-brainlessly
-brains
-brainstem
-brainstems
-brainstorm
-brainstorming
-brainstorms
-brainteaser
-brainwash
-brainwashed
-brainwashes
-brainwashing
-brainwriting
-brainy
-braise
-brake
-brake-block
-brake-drum
-braked
-brakeman
-brakesman
-braking
-bramble
-bramble-berry
-brambles
-brambly
-bran
-branch
-branch-establishment
-branched
-branches
-branching
-branchings
-branchlike
-Branchville
-branchy
-brand
-brand-name
-brand-new
-branded
-Brandeis
-Brandel
-Brandenburg
-brander
-branding
-branding-iron
-brandish
-brandishes
-brandishing
-Brandon
-brands
-Brandt
-brandy
-brandywine
-Braniff
-Brannon
-bras
-brash
-brash-ice
-brashly
-brashness
-Brasilia
-brass
-brasserie
-brasses
-brassiere
-brassily
-brassiness
-Brasstown
-brassy
-brat
-Bratislava
-brats
-bratty
-bratwurst
-Braun
-bravado
-brave
-braved
-bravely
-braveness
-braver
-bravery
-braves
-bravest
-braving
-bravo
-bravos
-bravura
-brawl
-brawler
-brawling
-brawn
-brawniness
-brawny
-braxy
-bray
-brayed
-brayer
-braying
-brays
-braze
-brazed
-brazen
-brazen-faced
-brazenly
-brazenness
-brazer
-brazes
-brazier
-braziers
-Brazil
-Brazil-nut
-Brazilian
-brazing
-Brazzaville
-breach
-breached
-breacher
-breachers
-breaches
-breaching
-bread
-bread-and-butter
-bread-crumb
-bread-room
-bread-winner
-bread/rolls
-breadbasket
-breadboard
-breadboards
-breadbox
-breadboxes
-breadcrumb
-breadcrumbs
-breaded
-breadfruit
-breading
-breadline
-breads
-breadth
-breadthways
-breadthwise
-breadwinner
-breadwinners
-break
-break-away
-break-down
-break-even
-break-in
-break-up
-breakable
-breakables
-breakage
-breakaway
-breakdown
-breakdowns
-breaker
-breakers
-breakeven
-breakfast
-breakfasted
-breakfaster
-breakfasters
-breakfasting
-breakfasts
-breakfront
-breaking
-breakneck
-breakout
-breakpoint
-breakpoints
-breaks
-breakthrough
-breakthroughes
-breakthroughs
-breakup
-breakwater
-breakwaters
-bream
-breast
-breast-bone
-breast-fed
-breast-feed
-breast-high
-breast-summer
-breastbone
-breasted
-breastplate
-breasts
-breaststroke
-breastwork
-breastworks
-breath
-breathable
-Breathalyzer
-breathe
-breathed
-breather
-breathers
-breathes
-breathing
-breathless
-breathlessly
-breathlessness
-breaths
-breathtaking
-breathtakingly
-breathy
-brecelets
-Brecht
-bred
-breech
-breeches
-breed
-breeder
-breeding
-breeds
-breeze
-breezes
-breezeway
-breezily
-breeziness
-breezy
-Bremen
-bremsstrahlung
-Bren
-Brenda
-Brendan
-Brennan
-Brenner
-Brent
-brer
-Bresenham
-Breslau
-Brest
-brethren
-Breton
-Bretons
-Brett
-breve
-brevet
-breveted
-breveting
-brevets
-breviary
-brevier
-brevity
-brew
-brewed
-brewer
-breweries
-brewers
-brewery
-brewing
-brewpub
-brews
-Brewster
-Brezhnev
-Brian
-briar
-Briar-rose
-briars
-bribable
-bribe
-bribed
-briber
-bribers
-bribery
-bribes
-bribing
-bric-a-brac
-bric--brac
-Brice
-brick
-brick-clay
-brick-kiln
-brick-work
-brickbat
-bricked
-bricker
-bricklayer
-bricklayers
-bricklaying
-brickmaker
-bricks
-brickwork
-bridal
-bride
-bridegroom
-brides
-bridesmaid
-bridesmaids
-bridesman
-Bridewell
-bridge
-bridge-head
-bridgeable
-bridged
-bridgehead
-bridgeheads
-Bridgeport
-bridges
-Bridget
-Bridgetown
-bridgeware
-Bridgewater
-bridgework
-bridging
-bridle
-bridled
-bridles
-bridling
-Brie
-brief
-briefcase
-briefcases
-briefed
-briefer
-briefest
-briefing
-briefings
-briefly
-briefness
-briefs
-Brien
-brier
-Brier-rose
-brig
-brigade
-brigade-work
-brigade-worker
-brigades
-brigadier
-brigadier-general
-brigadiers
-Brigadoon
-brigand
-brigandage
-brigantine
-Briggs
-Brigham
-bright
-bright-eyed
-brighten
-brightened
-brightener
-brighteners
-brightening
-brightens
-brighter
-brightest
-brightly
-brightness
-Brighton
-brights
-brigs
-BRIL
-brill
-brilliance
-brilliancy
-brilliant
-brilliantine
-brilliantly
-Brillouin
-brim
-brimful
-brimfull
-brimless
-brimmed
-brimming
-brimstone
-Brindisi
-brindle
-brindled
-brine
-bring
-bringer
-bringers
-bringing
-brings
-brininess
-brink
-Brinkley
-brinkmanship
-brinksmanship
-briny
-brioche
-briquet
-briquette
-Brisbane
-brise-bise
-brisk
-brisker
-brisket
-briskly
-briskness
-bristle
-bristled
-bristles
-bristling
-bristly
-Bristol
-Bristol-board
-Brit
-Britain
-Britannic
-Britannica
-britches
-briticism
-British
-Britisher
-Britishism
-Britishly
-Briton
-Britons
-Brittany
-Britten
-brittle
-brittleness
-bro
-broach
-broached
-broaches
-broaching
-broad
-broad-brimmed
-broad-gauge
-broad-gauged
-broad-glass
-broad-minded
-broad-mindedly
-broad-mindedness
-broad-spectrum
-broadband
-broadcast
-broadcasted
-broadcaster
-broadcasters
-broadcasting
-broadcastings
-broadcasts
-broadcloth
-broaden
-broadened
-broadener
-broadeners
-broadening
-broadenings
-broadens
-broader
-broadest
-broadloom
-broadly
-broadminded
-broadness
-broadsheet
-broadside
-broadsword
-Broadway
-Brobdingnag
-brocade
-brocaded
-broccoli
-brochette
-brochure
-brochures
-Brock
-brogan
-Broglie
-brogue
-broil
-broiled
-broiler
-broilers
-broiling
-broils
-broke
-broken
-broken-down
-broken-hearted
-brokenhearted
-brokenheartedly
-brokenly
-brokenness
-broker
-brokerage
-brokers
-Bromfield
-bromide
-bromides
-bromidic
-bromine
-Bromley
-bronc
-bronchi
-bronchial
-bronchiole
-bronchioles
-bronchitic
-bronchitis
-broncho
-bronchus
-bronco
-broncobuster
-Bronte
-brontosaur
-Bronx
-bronze
-bronzed
-bronzes
-brooch
-brooches
-brood
-brood-hen
-brooder
-brooding
-broodingly
-broodmare
-broods
-broody
-brook
-Brookdale
-Brooke
-brooked
-Brookfield
-Brookhaven
-brooklet
-Brookline
-Brooklyn
-Brookmont
-brooks
-broom
-brooms
-broomstick
-broomsticks
-broth
-brothel
-brothels
-brother
-brother-hood
-brother-in-law
-brotherhood
-brotherliness
-brotherly
-brothers
-brothers-in-law
-brougham
-brought
-brouhaha
-brow
-browbeat
-browbeaten
-browbeating
-browbeats
-brown
-brown-bag
-brown-bagger
-brown-nose
-Browne
-browned
-Brownell
-browner
-brownest
-Brownian
-brownish
-brownness
-brownnoser
-brownout
-browns
-brownstone
-Brownsville
-brows
-browse
-browser
-browsing
-Bruce
-Bruckner
-Bruegel
-bruin
-bruise
-bruised
-bruiser
-bruises
-bruising
-bruit
-Brumidi
-brunch
-brunches
-Brunei
-brunet
-brunette
-Brunhilde
-Bruno
-Brunswick
-brunt
-brush
-brush-off
-brush-proof
-brush-stroke
-brushed
-brushes
-brushfire
-brushfires
-brushing
-brushlike
-brushoff
-brushwood
-brushwork
-brushy
-brusk
-brusque
-brusquely
-brusqueness
-Brussels
-brutal
-brutalities
-brutality
-brutalization
-brutalize
-brutalized
-brutalizes
-brutalizing
-brutally
-brute
-brutes
-brutish
-brutishly
-brutishness
-Brutus
-Bruxelles
-Bryan
-Bryant
-Bryce
-Bryn
-BS
-BSA
-BSO
-Bt
-BTAM
-btw.
-bub
-bubble
-bubbled
-bubblegum
-bubbles
-bubbling
-bubbly
-bubo
-buccaneer
-Buchanan
-Bucharest
-Buchenwald
-Buchwald
-buck
-buck-passer
-buck-toothed
-buckaroo
-buckboard
-buckboards
-bucked
-bucket
-bucketful
-buckets
-buckeye
-bucking
-buckle
-buckled
-buckler
-buckles
-Buckley
-buckling
-Bucknell
-buckra
-buckram
-bucks
-bucksaw
-buckshot
-buckskin
-buckskins
-buckteeth
-bucktooth
-bucktoothed
-buckwheat
-Bucky
-bucolic
-bucolically
-bud
-Budapest
-Budd
-budded
-Buddha
-Buddhism
-Buddhist
-Buddhists
-buddies
-budding
-buddy
-buddyroo
-budge
-budged
-budgerigar
-budges
-budget
-budgetary
-budgeted
-budgeter
-budgeters
-budgeting
-budgets
-budgie
-budging
-buds
-Budweiser
-Budweisers
-Buehring
-Buena
-Buenos
-buff
-buffalo
-buffaloes
-buffer
-buffered
-buffering
-buffers
-buffet
-buffeted
-buffeting
-buffetings
-buffets
-buffoon
-buffoonery
-buffoonish
-buffoons
-buffs
-bug
-bug-eyed
-bugaboo
-Bugatti
-bugbear
-bugeyed
-bugged
-bugger
-buggered
-buggers
-buggies
-bugging
-buggy
-bughouse
-bugjuice
-bugle
-bugled
-bugler
-bugles
-bugling
-bugs
-Buick
-build
-build-up
-builder
-builders
-building
-building-lease
-building-society
-buildings
-builds
-buildup
-buildups
-built
-built-in
-built-up
-builtin
-Bujumbura
-bulb
-Bulba
-bulbous
-bulbs
-Bulgaria
-Bulgarian
-bulge
-bulged
-bulging
-bulgy
-bulimarexia
-bulimia
-bulimic
-bulk
-bulked
-bulkhead
-bulkheads
-bulkiness
-bulks
-bulky
-bull
-bull's-eye
-bull-headed
-bulldog
-bulldogs
-bulldoze
-bulldozed
-bulldozer
-bulldozes
-bulldozing
-bulled
-bullet
-bullet-proof
-bulletin
-bulletins
-bulletproof
-bullets
-bullfight
-bullfighter
-bullfighting
-bullfinch
-bullfrog
-bullhead
-bullheaded
-bullheadedly
-bullheadedness
-bullhorn
-bullied
-bullies
-bulling
-bullion
-bullish
-bullishly
-bullishness
-bullneck
-bullock
-bullpen
-bullring
-bulls
-bulls-optimists
-bullseye
-bullshit
-bullshitter
-bully
-bullying
-bullyrag
-bulrush
-bulwark
-bulwarks
-bum
-bumble
-bumble-bee
-bumblebee
-bumblebees
-bumbled
-bumbler
-bumblers
-bumbles
-bumbling
-Bumbry
-bummed
-bummer
-bumming
-bump
-bumped
-bumper
-bumper-to-bumper
-bumpers
-bumpiness
-bumping
-bumpkin
-bumps
-bumptious
-bumptiously
-bumptiousness
-bumpy
-bums
-bun
-buna
-bunch
-bunched
-bunches
-bunching
-bunchy
-bunco
-buncombe
-Bundestag
-bundle
-bundled
-bundles
-bundling
-Bundoora
-Bundy
-bung
-bungalow
-bungalows
-bungee
-bunghole
-bungle
-bungled
-bungler
-bunglers
-bungles
-bungling
-bunion
-bunions
-bunk
-bunker
-bunkered
-bunkers
-bunkhouse
-bunkhouses
-bunkmate
-bunkmates
-bunko
-bunks
-bunkum
-bunnies
-bunny
-buns
-Bunsen
-bunt
-bunted
-bunter
-bunters
-bunting
-bunts
-Bunyan
-buoy
-buoyancy
-buoyant
-buoyantly
-buoyed
-buoys
-bur
-Burbank
-burble
-burbs
-Burch
-burden
-burdened
-burdening
-burdens
-burdensome
-burdock
-bureau
-bureaucracies
-bureaucracy
-bureaucrat
-bureaucratic
-bureaucratically
-bureaucratism
-bureaucratization
-bureaucratize
-bureaucrats
-BUREAUFAX
-bureaus
-bureaux
-burette
-burg
-burgeon
-burgeoned
-burgeoning
-burger
-burgess
-burgesses
-burgh
-burgher
-burghers
-burglar
-burglaries
-burglarize
-burglarized
-burglarizes
-burglarizing
-burglarproof
-burglarproofed
-burglarproofing
-burglarproofs
-burglars
-burglary
-burgle
-burgomaster
-Burgundian
-Burgundies
-burgundy
-burial
-burial-ground
-buried
-buries
-burin
-burke
-Burkes
-burl
-burlap
-burled
-burlesque
-burlesques
-burliness
-Burlingame
-Burlington
-burly
-Burma
-Burmese
-burn
-burnable
-Burne
-burned
-burner
-burners
-Burnes
-Burnett
-Burnham
-burning
-burningly
-burnings
-burnish
-burnished
-burnisher
-burnishes
-burnishing
-burnoose
-burnous
-burnout
-Burnside
-Burnsides
-burnt
-burntly
-burntness
-burp
-burped
-burping
-burps
-burr
-burr-drill
-burrito
-burro
-Burroughs
-burrow
-burrowed
-burrower
-burrowing
-burrows
-burrs
-bursa
-bursae
-bursar
-bursary
-bursitis
-burst
-burster
-burstiness
-bursting
-bursts
-bursty
-Burt
-Burton
-Burtt
-Burundi
-Burundian
-bury
-burying
-burying-ground
-bus
-bus-boy
-busboy
-busboys
-busby
-Busch
-bused
-buses
-busgirl
-bush
-bush-league
-bush-leaguer
-bush-ranger
-bushed
-bushel
-bushels
-bushes
-bushiness
-bushing
-bushman
-bushmaster
-Bushnell
-bushwhack
-bushwhacked
-bushwhacker
-bushwhacking
-bushwhacks
-bushy
-busied
-busier
-busiest
-busily
-business
-business-like
-businesses
-businesslike
-businessman
-businessmen
-businessperson
-businesswoman
-busing
-buskin
-busman
-buss
-bussed
-busses
-bussing
-bust
-bustard
-bustards
-busted
-buster
-bustle
-bustling
-busts
-busty
-busy
-busy-body
-busybody
-busyness
-busywork
-but
-butane
-butch
-butcher
-butcher's
-butchered
-butchers
-butchery
-butchers
-butler
-butlers
-butt
-butte
-butted
-butter
-butter-bean
-butter-finger
-butterball
-butterbur
-buttercup
-buttered
-butterer
-butterers
-butterfat
-Butterfield
-butterfingered
-butterfingers
-butterflies
-butterfly
-butterine
-buttering
-buttermilk
-butternut
-butters
-butterscotch
-buttery
-buttes
-butting
-buttock
-buttocks
-button
-button-down
-buttoned
-buttonhole
-buttonholes
-buttoning
-buttons
-buttonwood
-buttress
-buttressed
-buttresses
-buttressing
-Buttrick
-butts
-butyl
-butyrate
-butyric
-buxom
-Buxtehude
-Buxton
-buy
-buyback
-buyer
-buyers
-buying
-buyout
-buys
-buzz
-buzzard
-buzzards
-buzzed
-buzzer
-buzzes
-buzzing
-buzzword
-buzzwords
-buzzy
-by
-by-and-by
-by-blow
-by-election
-by-law
-by-line
-by-pass
-by-path
-by-product
-by-road
-by-stander
-by-way
-bye
-bye-bye
-bye-election
-bye-law
-byelaw
-Byelorussia
-Byers
-bygone
-bygones
-bylaw
-bylaws
-byline
-bylines
-BYOB
-bypass
-bypassed
-bypasses
-bypassing
-bypath
-byplay
-byproduct
-byproducts
-Byrd
-Byrne
-byroad
-Byron
-Byronic
-Byronism
-Byronize
-Byronizes
-byssinosis
-bystander
-bystanders
-byte
-bytes
-byway
-byways
-byword
-bywords
-Byzantine
-Byzantinize
-Byzantinizes
-Byzantium
-c
-C-note
-c.
-Ca
-ca'canny
-cab
-cab-stand
-cabal
-cabala
-caballero
-cabana
-cabaret
-cabbage
-cabbage-head
-cabbage-lettuce
-cabbage-rose
-cabbages
-cabbal
-cabbala
-cabbie
-cabby
-cabdriver
-cabhood
-cabin
-cabin-lift
-cabinet
-cabinet-maker
-cabinetmaker
-cabinetmaking
-cabinetry
-cabinets
-cabinetwork
-cabins
-cable
-cable-car
-cable-railway
-cablecast
-cablecasting
-cabled
-cablegram
-cables
-cablet
-cabling
-CABLIS
-cabman
-cabochon
-caboodle
-caboose
-Cabot
-cabotage
-Cabrini
-cabriolet
-cabs
-cabstand
-CAC
-cacao
-cacao-tree
-cache
-cached
-cachepot
-caches
-cachet
-cachexy
-caching
-cackle
-cackled
-cackler
-cackles
-cackling
-CACON
-cacophonous
-cacophony
-cacteous
-cacti
-cactus
-cactuses
-cacuminal
-cad
-CAD/CAM
-cadaver
-cadaverous
-caddie
-caddish
-caddishly
-caddishness
-caddy
-cadence
-cadenced
-cadenza
-cadet
-Cadette
-cadge
-cadger
-Cadillac
-Cadillacs
-cadmium
-cadre
-cadres
-caducei
-caduceus
-Cady
-Caesar
-Caesarean
-Caesarian
-Caesarize
-Caesarizes
-caesium
-caesura
-caesurae
-cafeteria
-caffeine
-caftan
-caf
-cafs
-cage
-caged
-cager
-cagers
-cages
-cagey
-cagily
-caginess
-caging
-cagy
-Cahill
-cahoot
-cahoots
-CAI
-caiman
-Cain
-Caine
-cairn
-Cairo
-caisson
-caitiff
-Cajan
-cajole
-cajoled
-cajolement
-cajoler
-cajolery
-cajoles
-cajoling
-Cajun
-Cajuns
-cake
-caked
-cakes
-cakewalk
-caking
-caky
-Cal
-calabash
-calaboose
-Calais
-calamari
-calamine
-calamities
-calamitous
-calamitously
-calamity
-calamity-howling
-calcareous
-Calceolaria
-calciferous
-calcification
-calcify
-calcimine
-calcine
-calcite
-calcium
-Calcomp
-calculable
-calculate
-calculated
-calculatedly
-calculates
-calculating
-calculatingly
-calculation
-calculations
-calculative
-calculator
-calculators
-calculi
-calculus
-calculuses
-Calcutta
-Calder
-caldera
-caldron
-Caldwell
-Caleb
-calendar
-calendars
-calender
-calf
-calfskin
-Calgary
-Calhoun
-Cali
-caliber
-calibers
-calibrate
-calibrated
-calibrates
-calibrating
-calibration
-calibrations
-calibrator
-calibre
-calico
-Calif
-California
-Californian
-Californians
-californium
-Caligula
-caliper
-calipers
-caliph
-caliphate
-caliphs
-calisthenic
-calisthenics
-calix
-Calixtin
-calk
-Calkins
-call
-call-back
-call-box
-call-girl
-call-in
-call-up
-calla
-callable
-Callaghan
-Callahan
-Callan
-callback
-called
-caller
-callers
-calligrapher
-calligraphic
-calligraphist
-calligraphy
-calling
-calliope
-calliper
-callipers
-callisthenics
-Callisto
-callosity
-callous
-calloused
-callously
-callousness
-callow
-callowness
-calls
-callus
-callused
-calm
-calmed
-calmer
-calmest
-calming
-calmingly
-calmly
-calmness
-calms
-calomel
-caloric
-calorie
-calories
-calorific
-calorimeter
-calorimetric
-calorimetry
-calory
-Caltech
-calumet
-calumniate
-calumniation
-calumniator
-calumnious
-calumny
-Calvary
-calve
-Calvert
-calves
-Calvin
-Calvinism
-Calvinist
-Calvinistic
-Calvinize
-Calvinizes
-calyces
-calypso
-calyx
-cam
-camaraderie
-camber
-cambia
-cambial
-cambium
-Cambodia
-Cambodian
-Cambrian
-cambric
-Cambridge
-camcorder
-Camden
-came
-camel
-camel's-hair
-camelhair
-camellia
-Camelot
-camels
-Camembert
-cameo
-camera
-cameraman
-cameramen
-cameras
-camerawoman
-Cameron
-Cameroon
-Cameroonian
-Cameroun
-Camilla
-Camille
-Camino
-camisole
-camomile
-camouflage
-camouflaged
-camouflager
-camouflages
-camouflaging
-camp
-camp-on
-campaign
-campaigned
-campaigner
-campaigners
-campaigning
-campaigns
-campanile
-campanili
-campanologist
-campanology
-Campbell
-Campbellsport
-camped
-camper
-campers
-campesino
-campfire
-campground
-camphor
-camping
-camps
-campsite
-campus
-campuses
-campy
-Campylobacter
-camshaft
-Camus
-can
-can't
-can-do
-Canaan
-Canaanite
-Canad
-Canada
-Canadian
-Canadianism
-Canadianization
-Canadianizations
-Canadianize
-Canadianizes
-Canadians
-canal
-canalization
-canalize
-canals
-canape
-canard
-canaries
-canary
-canasta
-Canaveral
-Canberra
-cancan
-cancel
-cancelation
-canceled
-canceler
-canceling
-cancellation
-cancellations
-canceller
-cancels
-cancer
-cancerous
-cancers
-Candace
-candelabra
-candelabrum
-candid
-candidacy
-candidate
-candidates
-candidature
-Candide
-candidly
-candidness
-candied
-candies
-candle
-candlelight
-Candlemas
-candlepower
-candler
-candles
-candlestick
-candlesticks
-candlewoman
-candor
-candour
-candy
-cane
-cane-sugar
-canebrake
-caner
-Canfield
-canine
-Canis
-canister
-canker
-cankerous
-cankerworm
-cannabis
-canned
-cannel
-cannelloni
-canner
-canners
-cannery
-cannibal
-cannibalism
-cannibalistic
-cannibalization
-cannibalize
-cannibalized
-cannibalizes
-cannibalizing
-cannibals
-cannily
-canniness
-canning
-cannister
-cannisters
-cannon
-cannon-fodder
-cannonade
-cannonball
-cannons
-cannot
-canny
-canoe
-canoeing
-canoeist
-canoes
-Canoga
-canon
-canonic
-canonical
-canonicalization
-canonicalize
-canonicalized
-canonicalizes
-canonicalizing
-canonically
-canonicals
-canonization
-canonize
-canons
-canopied
-Canopus
-canopy
-cans
-canst
-cant
-cantabile
-Cantabrigian
-cantaloup
-cantaloupe
-cantankerous
-cantankerously
-cantankerousness
-cantata
-canteen
-canter
-Canterbury
-canticle
-cantilever
-cantilevered
-canting
-canto
-canton
-cantonal
-Cantonese
-cantonment
-cantons
-cantor
-cantors
-Canute
-canvas
-canvasback
-canvases
-canvass
-canvassed
-canvasser
-canvassers
-canvasses
-canvassing
-canyon
-canyons
-cant
-caoutchouc
-cap
-cap-a-pie
-capabilities
-capability
-capable
-capably
-capacious
-capaciously
-capaciousness
-capacitance
-capacitances
-capacitate
-capacities
-capacitive
-capacitor
-capacitors
-capacity
-caparison
-cape
-caped
-caper
-capers
-capes
-capeskin
-Capet
-Capetown
-capias
-capilary
-capillarity
-capillary
-Capistrano
-capita
-capital
-capitalism
-capitalist
-capitalistic
-capitalistically
-capitalists
-capitalization
-capitalizations
-capitalize
-capitalized
-capitalizer
-capitalizers
-capitalizes
-capitalizing
-capitally
-capitals
-Capitan
-capitation
-Capitol
-Capitoline
-capitols
-capitulate
-capitulation
-caplet
-capo
-capon
-capped
-capping
-cappuccino
-Cappy
-caprice
-capricious
-capriciously
-capriciousness
-Capricorn
-caps
-capsize
-capstan
-capstone
-capsular
-capsule
-capsulize
-Capt
-Capt.
-captain
-captaincy
-captained
-captaining
-captains
-caption
-captions
-captious
-captiously
-captiousness
-captivate
-captivated
-captivates
-captivating
-captivation
-captivator
-captive
-captives
-captivity
-captor
-captors
-capture
-captured
-capturer
-capturers
-captures
-capturing
-Caputo
-capybara
-car
-car-pool
-car-pooler
-car-wax
-Caracas
-caracul
-carafe
-caramel
-caramelize
-carapace
-carat
-caravan
-caravans
-caravansary
-caravanserai
-caravel
-caraway
-carbide
-carbine
-carbocaneous
-carbohydrate
-carbolic
-Carboloy
-carbon
-carbon-date
-carbon-paper
-carbonaceous
-carbonate
-carbonated
-carbonates
-carbonation
-Carbondale
-Carbone
-Carbones
-carbonic
-carboniferous
-carbonization
-carbonize
-carbonized
-carbonizer
-carbonizers
-carbonizes
-carbonizing
-carbons
-Carborundum
-carboy
-carbuncle
-carbuncular
-carburetor
-carburetter
-carburettor
-carcase
-carcass
-carcasses
-carcinogen
-carcinogenic
-carcinogenicity
-carcinoma
-carcinomata
-card
-card-carrying
-card-sharper
-cardamom
-cardboard
-carder
-cardiac
-Cardiff
-cardigan
-cardinal
-cardinalities
-cardinality
-cardinally
-cardinals
-Cardiod
-cardiogram
-cardiograph
-cardiologist
-cardiology
-cardiopulmonary
-cardiovascular
-cards
-cardsharp
-cardsharper
-care
-cared
-careen
-career
-careerist
-careers
-carefree
-carefreely
-carefreeness
-careful
-careful!
-carefull
-carefully
-carefulness
-caregiver
-careless
-carelessly
-carelessness
-carer
-cares
-caress
-caressed
-caresser
-caresses
-caressing
-caressingly
-caret
-caretaker
-careworn
-Carey
-carfare
-Cargill
-cargo
-cargoes
-carhop
-Carib
-Caribbean
-caribou
-caricature
-caricaturist
-caries
-carillon
-caring
-Carinthia
-carious
-carjack
-carjacker
-carjacking
-Carl
-Carl(e)
-Carla
-Carleton
-Carletonian
-Carlin
-Carlisle
-Carlo
-carload
-Carlsbad
-Carlsbads
-Carlson
-Carlton
-Carlyle
-carman
-Carmela
-Carmen
-Carmichael
-carmine
-carnage
-carnal
-carnality
-carnally
-carnation
-Carnegie
-carnelian
-carney
-Carniola
-carnival
-carnivals
-carnivore
-carnivorous
-carnivorously
-carnivorousness
-carny
-carob
-carol
-caroler
-Carolina
-Carolinas
-Caroline
-Carolingian
-Carolinian
-Carolinians
-caroller
-carols
-Carolyn
-carom
-carotene
-carotid
-carousal
-carouse
-carousel
-carouser
-carp
-carpal
-Carpathia
-Carpathian
-Carpathians
-carpel
-carpenter
-carpenters
-carpentry
-carper
-carpet
-carpet-knight
-carpetbag
-carpetbagger
-carpeted
-carpeting
-carpets
-carpi
-carpool
-carport
-carpus
-Carr
-Carrara
-carrel
-carrell
-carriage
-carriage-forward
-carriage-free
-carriages
-carriageway
-Carrie
-carried
-carrier
-carrier-pigeon
-carriers
-carries
-carrion
-Carroll
-carrot
-carrot(s)
-carrots
-carrottop
-carroty
-carrousel
-Carruthers
-carry
-carry-on
-carry-out
-carry-over
-carryall
-carrying
-carryout
-carryover
-carryovers
-cars
-carsick
-carsickness
-Carson
-cart
-cart-horse
-cart-load
-cart-road
-cart-wright
-cartage
-carted
-cartel
-carter
-carters
-Cartesian
-Carthage
-Carthaginian
-carthorse
-Cartier
-cartilage
-cartilaginous
-carting
-cartload
-cartogram
-cartographer
-cartographic
-cartography
-carton
-cartons
-cartoon
-cartoonist
-cartoons
-cartouche
-cartridge
-cartridges
-carts
-cartway
-cartwheel
-Carty
-Caruso
-carve
-carved
-carver
-carves
-carving
-carving-knife
-carvings
-caryatid
-caryatides
-CAS
-casaba
-Casablanca
-Casanova
-cascadable
-cascade
-cascaded
-cascades
-cascading
-cascara
-case
-case-hardened
-case-law
-cased
-caseharden
-casein
-caseload
-casemate
-casement
-casements
-cases
-casework
-caseworker
-Casey
-cash
-cash-book
-cash-strapped
-cashbook
-cashed
-casher
-cashers
-cashes
-cashew
-cashier
-cashiers
-cashing
-cashless
-cashmere
-casing
-casings
-casino
-cask
-casked
-casket
-caskets
-casks
-Caspian
-casque
-Cassandra
-Cassatt
-cassava
-casserole
-casseroles
-cassette
-cassia
-cassino
-Cassiopeia
-Cassite
-Cassites
-Cassius
-cassock
-cassowary
-cast
-cast-iron
-cast-off
-castanet
-castanets
-castaway
-caste
-castellated
-caster
-casters
-castes
-castigate
-castigation
-castigator
-Castile
-Castillo
-casting
-casting-vote
-castle
-castled
-castles
-castoff
-castor
-castrate
-castration
-Castries
-Castro
-Castroism
-casts
-casual
-casually
-casualness
-casuals
-casualties
-casualty
-casuist
-casuistic
-casuistry
-cat
-cat's-paw
-cat-o'-nine-tails
-cataclysm
-cataclysmal
-cataclysmic
-catacomb
-catacombs
-catafalque
-Catalan
-catalepsy
-cataleptic
-Catalina
-catalog
-cataloged
-cataloger
-cataloging
-catalogs
-catalogue
-cataloguer
-cataloguing
-Catalonia
-catalpa
-catalyses
-catalysis
-catalyst
-catalysts
-catalytic
-catalyze
-catalyzer
-catamaran
-catapult
-cataract
-catarrh
-catastrophe
-catastrophes
-catastrophic
-catastrophically
-catatonia
-catatonic
-Catawba
-catbird
-catboat
-catcall
-catch
-Catch-22
-catch-as-catch-can
-catch-fly
-catch-title
-catchable
-catchall
-catcher
-catchers
-catches
-catching
-catchment
-catchpenny
-catchphrase
-catchpole
-catchpoll
-catchup
-catchword
-catchy
-catechism
-catechist
-catechize
-categorical
-categorically
-categories
-categorization
-categorize
-categorized
-categorizer
-categorizers
-categorizes
-categorizing
-category
-catenate
-catenati
-catenation
-cater
-cater-cornered
-catercorner
-catered
-caterer
-catering
-caterpillar
-caterpillar-wheeled
-caterpillars
-caters
-caterwaul
-catfish
-catgut
-catharses
-catharsis
-cathartic
-cathedral
-cathedrals
-Cather
-Catherine
-Catherwood
-catheter
-catheterize
-catheters
-cathode
-cathodes
-cathodic
-catholic
-catholicism
-Catholicisms
-catholicity
-catholicize
-Catholics
-Cathy
-cation
-catkin
-catlike
-catnap
-catnip
-cats
-Catskill
-Catskills
-catsup
-cattail
-cattily
-cattiness
-cattle
-cattle-lifter
-cattle-pen
-cattle-shed
-cattleman
-cattlemen
-cattleshow
-catty
-catty-corner
-catty-cornered
-CATV
-catwalk
-Caucasian
-Caucasians
-Caucasoid
-Caucasus
-Cauchy
-caucus
-caudal
-caudally
-caught
-cauldron
-cauldrons
-cauliflower
-caulk
-caulker
-caulking
-causal
-causality
-causally
-causation
-causations
-causative
-cause
-caused
-causeless
-causer
-causerie
-causes
-causeway
-causeways
-causey
-causing
-caustic
-caustically
-causticity
-causticly
-caustics
-cauterization
-cauterize
-cautery
-caution
-cautionary
-cautioned
-cautioner
-cautioners
-cautioning
-cautionings
-cautions
-cautious
-cautiously
-cautiousness
-cavalcade
-cavalier
-cavalierly
-cavalierness
-cavalry
-cavalryman
-cave
-cave-dweller
-cave-in
-cave-man
-caveat
-caveats
-caved
-caveman
-cavemen
-Cavendish
-cavern
-cavernous
-cavernously
-caverns
-caves
-caviar
-caviare
-cavil
-caviler
-caviller
-Caviness
-caving
-cavities
-cavity
-cavort
-caw
-cawing
-cay
-cayenne
-Cayley
-cayman
-Cayuga
-cayuse
-CBC
-CBS
-CC
-CCC
-CCCC
-CCL
-CCTV
-CCU
-CD
-CD-AUDIO
-CD-PROM
-CDC
-CDI
-CDT
-CDV
-Ce
-cease
-cease-fire
-ceased
-ceasefire
-ceaseless
-ceaselessly
-ceaselessness
-ceases
-ceasing
-ceca
-cecal
-Cecil
-Cecilia
-cecograph
-Cecropia
-cecum
-cedar
-cede
-ceded
-ceder
-cedilla
-ceding
-Cedric
-CEEFAX
-ceiling
-ceilings
-celandine
-Celanese
-Celebes
-celebrant
-celebrate
-celebrated
-celebrates
-celebrating
-celebration
-celebrations
-celebrator
-celebratory
-celebrities
-celebrity
-celerity
-celery
-celesta
-Celeste
-celestial
-celestially
-Celia
-celibacy
-celibate
-cell
-cellar
-cellarage
-cellars
-celled
-Cellini
-cellist
-cellists
-cello
-cellophane
-cellotape
-cells
-cellular
-cellulite
-celluloid
-cellulose
-Celsius
-celt
-Celtic
-Celticize
-Celticizes
-cemant
-cemballo
-cement
-cementation
-cemented
-cementer
-cementery
-cementing
-cements
-cementum
-cemeteries
-cemetery
-cenobite
-cenobitic
-cenotaph
-Cenozoic
-cense
-censer
-censor
-censored
-censorial
-censoring
-censorious
-censoriously
-censoriousness
-censoriuos
-censors
-censorship
-censurable
-censure
-censured
-censurer
-censures
-census
-censuses
-cent
-centaur
-centaury
-centavo
-centenarian
-centenary
-centennial
-centennially
-center
-centerboard
-centered
-centerfold
-centering
-centerpiece
-centerpieces
-centers
-centesimal
-centigrade
-centigram
-centigramme
-centiliter
-centilitre
-centime
-centimeter
-centimeters
-centimetre
-centipede
-centipedes
-centner
-central
-Centralia
-centralism
-centralist
-centrality
-centralization
-centralize
-centralized
-centralizer
-centralizes
-centralizing
-centrally
-centre
-centrepiece
-centrifugal
-centrifugally
-centrifuge
-centripetal
-centripetally
-centrist
-centroid
-cents
-centuple
-centuries
-centurion
-century
-CEO
-cephalic
-Cepheus
-ceramic
-ceramicist
-ceramics
-ceramist
-Cerberus
-cereal
-cereals
-cerebella
-cerebellar
-cerebellum
-cerebra
-cerebral
-cerebrate
-cerebration
-cerebro-spinal
-cerebrum
-cerement
-ceremonial
-ceremonially
-ceremonialness
-ceremonies
-ceremonious
-ceremoniously
-ceremoniousness
-ceremony
-Ceres
-cerise
-cerium
-cermet
-CERN
-certain
-certainly
-certainties
-certainty
-certifiable
-certifiably
-certificate
-certificated
-certificates
-certification
-certifications
-certified
-certifier
-certifiers
-certifies
-certify
-certifying
-certitude
-cerulean
-Cervantes
-cervical
-cervices
-cervix
-Cesare
-Cesarian
-cesium
-cessation
-cessations
-cession
-cessionary
-Cessna
-cesspool
-cetacean
-cetaceous
-Cetus
-Ceylon
-Ceylonese
-Cezanne
-Cezannes
-CF
-CFC
-CFO
-cha-cha
-Chablis
-Chablises
-Chad
-Chadian
-Chadwick
-chafe
-chafer
-chaff
-chaffer
-Chaffey
-chaffinch
-chaffing
-chafing
-Chagall
-chagrin
-chain
-chain-saw
-chain-smoke
-chain-smoker
-chain-stitch
-chain-store
-chained
-chaining
-chains
-chainsaw
-chair
-chair-lift
-chaired
-chairing
-chairlady
-chairlift
-chairman
-chairmanship
-chairmen
-chairperson
-chairpersons
-chairs
-chairwoman
-chairwomen
-chaise
-chalcedony
-chalcography
-Chaldea
-chalet
-chalice
-chalices
-chalk
-chalkboard
-chalked
-chalkiness
-chalking
-chalks
-chalky
-challenge
-challenge-cup
-challenged
-challenger
-challengers
-challenges
-challenging
-challis
-Chalmers
-chamber
-chamber-maid
-chamber-pot
-chambered
-chamberlain
-chamberlains
-chambermaid
-chambray
-chameleon
-chamfer
-chammy
-chamois
-chamoix
-chamomile
-champ
-champagne
-champaign
-champion
-championed
-championing
-champions
-championship
-championships
-Champlain
-chance
-chanced
-chancel
-chancellery
-chancellor
-chancellorship
-Chancellorsville
-chancellory
-chancelry
-chancery
-chances
-chanciness
-chancing
-chancre
-chancy
-chandelier
-chandeliers
-Chandigarh
-chandler
-Chang
-Changchun
-change
-changeability
-changeable
-changeableness
-changeably
-changed
-changeful
-changeless
-changeling
-changeover
-changer
-changers
-changes
-changing
-Changsha
-channel
-channeled
-channeling
-channelization
-channelize
-channelizing
-channelled
-channeller
-channellers
-channelling
-channels
-Channing
-chanson
-chant
-chanted
-chanter
-chanteuse
-chantey
-chanticleer
-chanticleers
-Chantilly
-chanting
-chants
-chanty
-Chanukah
-Chao
-chaos
-chaotic
-chaotically
-chap
-chap-book
-chaparral
-chapbook
-chapeau
-chapeaux
-chapel
-chapels
-chaperon
-chaperonage
-chaperone
-chaperoned
-chaplain
-chaplaincy
-chaplains
-chaplet
-Chaplin
-Chapman
-chapped
-chaps
-chapter
-chapters
-char
-char-a-banc
-char-broil
-charabanc
-character
-characteristic
-characteristically
-characteristics
-characterizable
-characterization
-characterizations
-characterize
-characterized
-characterizer
-characterizers
-characterizes
-characterizing
-characterless
-characters
-charactron
-charade
-charades
-charbroil
-charcoal
-charcoaled
-chard
-chardonnay
-chare
-charge
-chargeable
-charged
-charger
-chargers
-charges
-charging
-charily
-chariness
-chariot
-charioteer
-chariots
-charisma
-charismatic
-charitable
-charitableness
-charitably
-charities
-charity
-charlatan
-charlatanism
-charlatanry
-Charlemagne
-Charlemagnes
-Charles
-Charleston
-Charley
-Charlie
-Charlotte
-Charlottesville
-Charlottetown
-charm
-charmed
-charmer
-charmers
-charming
-charmingly
-charms
-charnel-house
-Charon
-charred
-chars
-chart
-Charta
-chartable
-charted
-charter
-charter-party
-chartered
-charterer
-chartering
-charters
-charting
-chartings
-chartism
-chartist
-Chartres
-chartreuse
-charts
-chartulary
-charwoman
-chary
-Charybdis
-chase
-chased
-chaser
-chasers
-chases
-chasing
-chasm
-chasms
-chassis
-chaste
-chastely
-chasten
-chasteness
-chastise
-chastised
-chastisement
-chastiser
-chastisers
-chastises
-chastising
-chastity
-chasuble
-chat
-chateau
-chateaus
-chateaux
-chatelaine
-Chatham
-Chattahoochee
-Chattanooga
-chattel
-chatter
-chatterbox
-chattered
-chatterer
-chattering
-chatters
-chattily
-chattiness
-chatting
-chatty
-Chaucer
-chauffeur
-chauffeured
-Chauncey
-Chautauqua
-chauvinism
-chauvinist
-chauvinistic
-chauvinistically
-cheap
-cheap-jack
-cheapen
-cheapened
-cheapening
-cheapens
-cheaper
-cheapest
-cheaply
-cheapness
-cheapskate
-cheat
-cheated
-cheater
-cheaters
-cheating
-cheats
-chechako
-Chechen
-Chechenian
-check
-check-clock
-check-in
-check-up
-checkable
-checkbook
-checkbooks
-checked
-checker
-checkerboard
-checkerboarded
-checkerboarding
-checkered
-checkers
-checking
-checklist
-checkmate
-checkoff
-checkout
-checkpoint
-checkpoints
-checkroom
-checks
-checksum
-checksummed
-checksumming
-checksums
-checkup
-cheek
-cheekbone
-cheekily
-cheekiness
-cheeks
-cheeky
-cheep
-cheer
-Cheer-oh
-cheered
-cheerer
-cheerful
-cheerfully
-cheerfulness
-cheeriby
-cheerily
-cheeriness
-cheering
-cheerio
-cheerleader
-cheerless
-cheerlessly
-cheerlessness
-cheers
-cheery
-cheese
-cheese-cake
-cheese-eater
-cheese-paring
-cheeseburger
-cheesecake
-cheesecloth
-cheesehead
-cheesemonger
-cheeseparing
-cheeses
-cheesiness
-cheesy
-cheetah
-Cheezit!
-chef
-chefs
-Chekhov
-chelation
-Chelsea
-Chelyabinsk
-chemical
-chemically
-chemicals
-chemise
-chemisette
-chemist
-chemist's
-chemistries
-chemistry
-chemists
-chemotherapeutic
-chemotherapy
-chemurgy
-Chen
-Cheney
-Cheng
-Chengdu
-chenille
-Cheops
-chep
-cheque
-chequeer
-chequered
-cherish
-cherished
-cherishes
-cherishing
-Cheriton
-Cherokee
-Cherokees
-cheroot
-cherries
-cherry
-cherry-tree
-chert
-cherub
-cherubic
-cherubim
-cherubs
-chervil
-Cheryl
-Chesapeake
-Cheshire
-chess
-chess-board
-chessboard
-chessman
-chessmen
-chest
-chested
-Chester
-Chesterton
-chestful
-chestnut
-chestnuts
-chests
-chesty
-chevalier
-cheviot
-Chevrolet
-chevron
-chevy
-chew
-chewed
-chewer
-chewers
-chewiness
-chewing
-chewing-gum
-chews
-chewy
-Cheyenne
-Cheyennes
-chi
-chi-chi
-Chiang
-Chianti
-chiaroscuro
-Chiba
-chic
-Chicago
-Chicagoan
-Chicagoans
-Chicana
-Chicanas
-chicane
-chicanery
-Chicano
-Chicanos
-chichi
-chick
-chick-pea
-chickadee
-chickadees
-Chickasaw
-Chickasaws
-chicken
-chicken-hearted
-chicken-livered
-chicken-pox
-chickenfeed
-chickenhearted
-chickenpox
-chickens
-Chickie!
-chickpea
-chicks
-chickweed
-chicle
-chicness
-chicory
-chid
-chidden
-chide
-chided
-chides
-chiding
-chidingly
-chief
-chiefdom
-chiefly
-chiefs
-chieftain
-chieftains
-chiffon
-chiffonier
-chigger
-chignon
-chilblain
-chilblained
-child
-childbearing
-childbirth
-childcare
-childe
-childhood
-childish
-childishly
-childishness
-childless
-childlessness
-childlike
-childproof
-children
-childrens
-childs
-Chilean
-Chiles
-chili
-chill
-chilled
-chiller
-chillers
-chilli
-chillier
-chilliness
-chilling
-chillingly
-chillness
-chills
-chilly
-chimaera
-chime
-chimer
-chimera
-chimeric
-chimerical
-chimes
-chimney
-chimney-corner
-chimney-pot
-chimney-sweep
-chimneyer
-chimneys
-chimp
-chimpanzee
-chin
-chin-chin
-chin-up
-chin-wag
-china
-china-clay
-china-closet
-China-town
-Chinaman
-Chinamen
-Chinas
-Chinatown
-chinaware
-Chinawoman
-chinchilla
-chine
-Chinese
-Ching
-chink
-chinked
-chinks
-chinned
-chinner
-chinners
-chinning
-chino
-Chinook
-chinos
-chins
-chintz
-chintzy
-chip
-chipmunk
-chipmunks
-Chippendale
-chipper
-Chippewa
-chippie
-chips
-chirograph
-chirography
-chiropodist
-chiropody
-chiropractic
-chiropractor
-chirp
-chirped
-chirping
-chirps
-chirpy
-chirr
-chirrup
-chisel
-chiseled
-chiseler
-chiseller
-chisels
-Chisholm
-chit
-chit-chat
-chitchat
-chitin
-chitinous
-chitlings
-chitlins
-Chittagong
-chitterlings
-chivalrous
-chivalrously
-chivalrousness
-chivalry
-chive
-chives
-chlamydia
-Chloe
-chloral
-chlordane
-chloride
-chlorinate
-chlorination
-chlorine
-chlorofluorocarbon
-chloroform
-chlorophyl
-chlorophyll
-chloroplast
-chloroplasts
-chlorosis
-chlorous
-choc-ice
-chocaholic
-chock
-chock-a-block
-chock-full
-chockablock
-chocks
-chocoholic
-chocolate
-chocolates
-chocolatey
-chocolaty
-Choctaw
-Choctaws
-choice
-choices
-choicest
-choir
-choir-master
-choirboy
-choirmaster
-choirs
-choke
-chokecherry
-choked
-choker
-chokers
-chokes
-choking
-choky
-cholecyst
-choledoch
-choler
-cholera
-choleric
-cholerie
-cholesterin
-cholesterol
-chomp
-Chomsky
-Chongqing
-choo-choo
-choose
-choose!
-chooser
-choosers
-chooses
-choosey
-choosiness
-choosing
-choosy
-chop
-chophouse
-Chopin
-chopped
-chopper
-choppers
-choppily
-choppiness
-chopping
-choppy
-chops
-chopstick
-chopsticks
-chopy
-choral
-chorale
-chorally
-chord
-chordal
-chordate
-chorded
-chording
-chords
-chore
-chorea
-choreograph
-choreographer
-choreographic
-choreographically
-choreography
-chores
-choring
-chorist
-chorister
-choroid
-chortle
-chortler
-chorus
-chorus-singer
-chorused
-choruses
-chose
-chosen
-Chou
-chow
-chowder
-chrestomathy
-Chris
-chrism
-Christ
-Christchurch
-christen
-Christendom
-christened
-christening
-christens
-Christensen
-Christenson
-Christian
-Christiana
-Christianity
-Christianization
-Christianizations
-Christianize
-Christianizer
-Christianizers
-Christianizes
-Christianizing
-Christians
-Christiansen
-Christianson
-Christie
-Christina
-Christine
-Christlike
-Christmas
-Christmastide
-Christmastime
-Christoffel
-Christoph
-Christopher
-Christy
-chromatic
-chromatically
-chromatin
-chromatogram
-chromatograph
-chromatography
-chrome
-chromium
-chromium-plated
-chromo-paper
-chromograph
-chromolithograph
-chromolithography
-chromophotography
-chromosomal
-chromosome
-chromosphere
-chromoxylography
-chronic
-chronically
-chronicle
-chronicled
-chronicler
-chroniclers
-chronicles
-chronogram
-chronograph
-chronography
-chronological
-chronologically
-chronologies
-chronologist
-chronology
-chronometer
-chrysalides
-chrysalis
-chrysanthemum
-Chrysler
-chub
-chubbier
-chubbiest
-chubbiness
-chubby
-chuck
-chuck-full
-chuckhole
-chuckle
-chuckled
-chucklehead
-chuckles
-chucks
-chug
-chug-a-lug
-chukka
-chum
-chummily
-chumminess
-chummy
-chump
-Chungking
-chunk
-chunkiness
-chunks
-chunky
-church
-church-goer
-church-rate
-churches
-churchgoer
-churchgoing
-Churchill
-Churchillian
-churchly
-churchman
-churchmen
-churchwarden
-churchwoman
-churchwomen
-churchy
-churchyard
-churchyards
-churl
-churlish
-churlishly
-churlishness
-churn
-churned
-churner
-churning
-churns
-chute
-chutes
-chutney
-chutzpa
-chutzpah
-chyme
-CIA
-ciao
-cicada
-cicadae
-cicatrice
-cicatrices
-cicatrix
-cicatrization
-cicatrize
-cicero
-cicerone
-Ciceronian
-Ciceronianize
-Ciceronianizes
-CID
-cider
-cigar
-cigaret
-cigarette
-cigarettes
-cigarillo
-cigars
-cilantro
-cilia
-cilium
-cinch
-cinchona
-Cincinnati
-cincture
-cinder
-Cinderella
-cinders
-Cindy
-cine-camera
-cine-film
-cine-mogul
-cine-projektor
-cinema
-cinema-goer
-cinema-star
-cinemascope
-cinematheque
-cinematic
-cinematization
-cinematograph
-cinematographer
-cinematographic
-cinematography
-cinemicrography
-cineprojector
-cinerama
-cinerary
-cinnabar
-cinnamon
-cinquefoil
-CIP
-cipher
-cipherer
-ciphering
-ciphers
-ciphertext
-ciphertexts
-circa
-circadian
-Circe
-circle
-circled
-circles
-circlet
-circling
-circuit
-circuital
-circuitous
-circuitously
-circuitousness
-circuitry
-circuits
-circuity
-circulant
-circular
-circularity
-circularize
-circularly
-circulate
-circulated
-circulates
-circulating
-circulation
-circulative
-circulator
-circulatory
-circumcise
-circumcision
-circumference
-circumferential
-circumflex
-circumfluent
-circumjacent
-circumlocution
-circumlocutions
-circumlocutory
-circumnavigate
-circumnavigated
-circumnavigates
-circumnavigation
-circumpolar
-circumscribe
-circumscribed
-circumscribing
-circumscription
-circumspect
-circumspection
-circumspectly
-circumstance
-circumstanced
-circumstances
-circumstantial
-circumstantially
-circumstantials
-circumvent
-circumventable
-circumvented
-circumventing
-circumvention
-circumvents
-circus
-circuses
-Ciriolanus
-ciritique
-cirque
-cirrhosis
-cirrhotic
-cirri
-cirricula
-cirrus
-cisalpine
-cistern
-cisterns
-citadel
-citadels
-citation
-citations
-cite
-cited
-cites
-cities
-citified
-citing
-citizen
-citizenry
-citizens
-citizenship
-citreous
-citric
-Citroen
-citron
-citronella
-citrous
-citrus
-city
-city-state
-cityscape
-citywide
-civet
-civic
-civics
-civies
-civil
-civilian
-civilians
-civilisation
-civilise
-civility
-civilization
-civilizations
-civilize
-civilized
-civilizes
-civilizing
-civilly
-civvies
-Cl
-clack
-clack-valve
-clad
-cladding
-claim
-claimable
-claimant
-claimants
-claimed
-claimer
-claiming
-claims
-Claire
-clairvoyance
-clairvoyant
-clairvoyantly
-clam
-clamant
-clambake
-clamber
-clambered
-clamberer
-clambering
-clambers
-clammily
-clamminess
-clammy
-clamor
-clamored
-clamoring
-clamorous
-clamors
-clamour
-clamp
-clampdown
-clamped
-clamping
-clamps
-clams
-clan
-clandestine
-clandestinely
-clang
-clanged
-clanging
-clangor
-clangorous
-clangorously
-clangour
-clangs
-clank
-clannish
-clannishness
-clansman
-clap
-clapboard
-Clapeyron
-clapper
-clapping
-claps
-claptrap
-claque
-Clara
-Clare
-Claremont
-Clarence
-Clarendon
-claret
-clarification
-clarifications
-clarified
-clarifies
-clarify
-clarifying
-clarinet
-clarinetist
-clarinettist
-clarion
-claritist
-clarity
-Clark
-Clarke
-Clarridge
-clash
-clashed
-clashes
-clashing
-clasp
-clasp-knife
-clasped
-clasping
-clasps
-class
-class-book
-class-conscious
-class-consciousness
-class-mate
-class-room
-class-struggle
-classaurus
-classed
-classes
-classfellow
-classic
-classical
-classically
-classicism
-classicist
-classics
-classifiable
-classification
-classifications
-classificator
-classified
-classifier
-classifiers
-classifies
-classifile
-classify
-classifying
-classiness
-classing
-classless
-classman
-classmate
-classmates
-classroom
-classrooms
-classwork
-classy
-clatter
-clattered
-clattering
-Claude
-Claudia
-Claudio
-Claus
-clausal
-clause
-Clausen
-clauses
-Clausius
-claustrophobia
-claustrophobic
-clavichord
-clavicle
-clavier
-claw
-clawed
-clawing
-claws
-clay
-clayey
-clays
-Clayton
-clean
-clean-cut
-clean-shaven
-cleanable
-cleaned
-cleaner
-cleaners
-cleanest
-cleaning
-cleanliness
-cleanly
-cleanness
-cleans
-cleanse
-cleansed
-cleanser
-cleansers
-cleanses
-cleansing
-cleanup
-clear
-clear-cut
-clear-headed
-clear-headedness
-clear-sighted
-clearance
-clearances
-cleared
-clearer
-clearest
-clearheaded
-clearing
-clearinghouse
-clearings
-clearly
-clearness
-clears
-Clearwater
-cleat
-cleats
-cleavage
-cleave
-cleaved
-cleaver
-cleavers
-cleaves
-cleaving
-clef
-cleft
-clefts
-clematis
-clemency
-Clemens
-clement
-Clemente
-clemently
-Clemson
-clench
-clenched
-clenches
-Cleopatra
-clerestory
-clergy
-clergyman
-clergymen
-clergywoman
-cleric
-clerical
-clericalism
-clerically
-clerk
-clerked
-clerking
-clerks
-clerkship
-Cleveland
-clever
-cleverer
-cleverest
-cleverly
-cleverness
-clevis
-clew
-cliche
-cliched
-cliches
-clich
-click
-clicked
-clicker
-clicking
-clicks
-client
-clientage
-clientele
-clients
-cliff
-cliff-hanger
-cliffhanger
-Clifford
-cliffs
-Clifton
-climacteric
-climactic
-climate
-climates
-climatic
-climatically
-climatologist
-climatology
-climax
-climaxed
-climaxes
-climb
-climb-down
-climbable
-climbed
-climber
-climbers
-climbing
-climbing-iron
-climbs
-clime
-climes
-clinch
-clinched
-clincher
-clinches
-cling
-clinger
-clinging
-clings
-clingy
-clinic
-clinical
-clinically
-clinician
-clinics
-clink
-clinked
-clinker
-clinometer
-Clint
-Clinton
-Clio
-cliometric
-cliometrician
-cliometrics
-clip
-clip-on
-clipboard
-cliping
-clipped
-clipper
-clippers
-clippie
-clipping
-clippings
-clips
-clique
-cliques
-cliquey
-cliquish
-cliquishly
-cliquishness
-clit
-clitoral
-clitorides
-clitoris
-Clive
-cloaca
-cloacae
-cloak
-cloak-and-dagger
-cloak-room
-cloakroom
-cloaks
-clobber
-clobbered
-clobbering
-clobbers
-cloche
-clock
-clock-work
-clocked
-clocker
-clockers
-clocking
-clockings
-clocks
-clockwatcher
-clockwise
-clockwork
-clod
-cloddish
-clodhopper
-clodhoppers
-clods
-clog
-clogged
-clogging
-clogs
-cloisonne
-cloister
-cloistered
-cloisters
-cloistral
-clomp
-clonal
-clone
-cloned
-clones
-cloning
-clonk
-clop
-close
-close-fisted
-close-fitting
-close-grained
-close-knit
-close-mouthed
-close-set
-close-up
-closed
-closed-captioned
-closed-circuit
-closefisted
-closely
-closemouthed
-closeness
-closenesses
-closeout
-closer
-closers
-closes
-closest
-closet
-closeted
-closets
-closeup
-closing
-closure
-closures
-clot
-cloth
-clothe
-clothed
-clothes
-clothes-brush
-clothes-line
-clothes-peg
-clothes-pin
-clothes-wringer
-clotheshorse
-clothesline
-clothespin
-clothier
-clothier's
-clothing
-Clotho
-clotting
-cloture
-cloud
-cloudburst
-clouded
-cloudier
-cloudiest
-cloudiness
-clouding
-cloudless
-clouds
-cloudy
-clout
-clove
-clove(s)
-cloven
-clover
-cloverleaf
-cloverleaves
-cloves
-clown
-clowning
-clownish
-clownishly
-clownishness
-clowns
-cloy
-cloying
-club
-club-law
-club-room
-club-shaped
-clubbed
-clubbing
-clubfeet
-clubfoot
-clubfooted
-clubhouse
-clublaw
-clubroom
-clubs
-cluck
-clucked
-clucking
-clucks
-clue
-clueless
-clues
-Cluj
-clump
-clump-sole
-clumped
-clumping
-clumps
-clumpy
-clumsily
-clumsiness
-clumsy
-clung
-clunk
-clunker
-clunkhead
-clunky
-cluster
-clustered
-clustering
-clusterings
-clusters
-clutch
-clutched
-clutches
-clutching
-clutter
-cluttered
-cluttering
-clutters
-Clyde
-Clytemnestra
-Cm
-CMI
-cnidarian
-CNN
-CNS
-co-author
-co-authorship
-co-citation
-co-ed
-co-editor
-co-education
-co-educational
-co-existence
-co-occurrence
-co-op
-co-operate
-co-operation
-co-operative
-co-operator
-co-opt
-co-optation
-co-ordinal
-co-ordinate
-co-ordination
-co-star
-co-worker
-coacervate
-coach
-coach-and-four
-coach-box
-coached
-coacher
-coaches
-coaching
-coachman
-coachmen
-coadjutor
-coagulant
-coagulate
-coagulation
-coagulator
-coal
-coal-bed
-coal-black
-coal-carrier
-coal-factor
-coal-fields
-coal-gas
-coal-mine
-coal-mining
-coal-pit
-coal-scuttle
-coal-seam
-coal-tar
-coalesce
-coalesced
-coalescence
-coalescent
-coalesces
-coalescing
-coalface
-coaling
-coalition
-coalitionist
-coals
-coarse
-coarse-grained
-coarsely
-coarsen
-coarsened
-coarseness
-coarser
-coarsest
-coast
-coastal
-coasted
-coastee
-coaster
-coasters
-coastguard
-coasting
-coastline
-coasts
-coastwise
-coat
-coat-of-arms
-coat-tail
-coated
-Coates
-coating
-coatings
-coats
-coattail
-coauthor
-coax
-coaxed
-coaxer
-coaxes
-coaxial
-coaxing
-coaxingly
-cob
-cob(-loaf)
-cob(-nut)
-cobalt
-Cobb
-cobble
-cobble(-stone)
-cobbled
-cobbler
-cobblers
-cobblestone
-cobblestones
-COBOL
-cobra
-cobweb
-cobwebby
-cobwebs
-coca
-coca-cola
-cocain
-cocaine
-cocci
-coccus
-coccyges
-coccyx
-cochineal
-Cochise
-cochlea
-cochleae
-cochlear
-Cochran
-Cochrane
-cock
-cock-a-doodle-doo
-cock-a-hoop
-cock-crow(ing)
-cock-eyed
-cock-fighting
-cock-horse
-cock-sure
-cock-tailed
-cockade
-cockamamie
-cockatoo
-cockatrice
-cockboat
-cockchafer
-cockcrow
-cocked
-cocker
-cockerel
-cockeyed
-cockfight
-cockfighting
-cockily
-cockiness
-cocking
-cockle
-cockleshell
-cockney
-cockney-bred
-cockpit
-cockroach
-cocks
-cockscomb
-cocksure
-cocksy
-cocktail
-cocktails
-cocky
-coco
-coco-nut
-cocoa
-cocoanut
-coconut
-coconuts
-cocoon
-cocoons
-cocroach
-cod
-coda
-CODATA
-Coddington
-coddle
-code
-codebook
-CODEC
-coded
-codeine
-CODEN
-codependency
-codependent
-coder
-coders
-codes
-codeword
-codewords
-codex
-codfish
-codger
-codices
-codicil
-codicology
-codification
-codifications
-codified
-codifier
-codifiers
-codifies
-codify
-codifying
-coding
-codings
-codpiece
-Cody
-coed
-coeditor
-coeducation
-coeducational
-coefficient
-coefficients
-coelenterate
-coequal
-coequally
-coerce
-coerced
-coercer
-coerces
-coercible
-coercing
-coercion
-coercive
-coeval
-coevally
-coexist
-coexisted
-coexistence
-coexistent
-coexisting
-coexists
-coextensive
-cofactor
-coffe
-coffee
-coffee-bar
-coffee-bean
-coffee-cup
-coffee-grinder
-coffee-grounds
-coffee-house
-coffee-mill
-coffee-palace
-coffee-pot
-coffee-room
-coffee-set
-coffee-stall
-coffeecake
-coffeecup
-coffeehouse
-coffeemaker
-coffeepot
-coffees
-coffer
-coffer-dam
-cofferdam
-coffers
-Coffey
-coffin
-coffins
-Coffman
-cog
-cog-wheel
-cogency
-cogent
-cogently
-cogged
-cogitable
-cogitate
-cogitated
-cogitates
-cogitating
-cogitation
-cogitative
-cogitator
-cognac
-cognate
-cognition
-cognitional
-cognitive
-cognitively
-cognizable
-cognizance
-cognizant
-cognize
-cognomen
-cognomina
-cognoscente
-cognoscenti
-cogs
-cogwheel
-cohabit
-cohabitant
-cohabitation
-cohabitations
-Cohan
-coheir
-coheiress
-Cohen
-cohere
-cohered
-coherence
-coherency
-coherent
-coherently
-coherer
-coheres
-cohering
-cohesion
-cohesive
-cohesively
-cohesiveness
-Cohn
-coho
-cohort
-coif
-coiffure
-coil
-coiled
-coiling
-coils
-Coimbatore
-coin
-coinage
-coincide
-coincided
-coincidence
-coincidences
-coincident
-coincidental
-coincidentally
-coincides
-coinciding
-coined
-coiner
-coining
-coins
-coinsurance
-coir
-coital
-coitus
-coke
-coke-oven
-cokes
-col
-cola
-colander
-Colby
-colchicum
-cold
-cold-blooded
-cold-bloodedly
-cold-bloodedness
-cold-footed
-cold-footer
-cold-hearted
-cold-heartedly
-cold-heartedness
-cold-shoulder
-coldblooded
-colder
-coldest
-coldly
-coldness
-colds
-Cole
-Coleman
-Coleridge
-coleslaw
-Colette
-coleus
-Colgate
-colic
-colicky
-coliform
-coliseum
-colitis
-collaborate
-collaborated
-collaborates
-collaborating
-collaboration
-collaborationist
-collaborations
-collaborative
-collaborator
-collaborators
-collage
-collagen
-collapse
-collapsed
-collapses
-collapsible
-collapsing
-collar
-collar-bone
-collar-work
-collarbone
-collard
-collared
-collaring
-collarless
-collars
-collate
-collateral
-collaterally
-collation
-collator
-colleague
-colleagues
-collect
-collectable
-collectanea
-collected
-collectedly
-collectible
-collecting
-collection
-collections
-collective
-collectively
-collectives
-collectivism
-collectivist
-collectivity
-collectivization
-collectivize
-collector
-collectors
-collects
-colleen
-college
-colleger
-colleges
-collegiality
-collegian
-collegiate
-collide
-collided
-collides
-colliding
-collie
-collier
-colliery
-collies
-collinear
-Collins
-collision
-collisions
-collocate
-collocation
-collodion
-colloid
-colloidal
-collop
-colloq
-colloquia
-colloquial
-colloquialism
-colloquiality
-colloquially
-colloquium
-colloquy
-collotype
-collude
-collusion
-collusive
-Colo
-Cologne
-Colombia
-Colombian
-Colombians
-Colombo
-colon
-colonel
-colonelcy
-colonels
-colonial
-colonialism
-colonialist
-colonially
-colonials
-colonies
-colonist
-colonists
-colonization
-colonize
-colonized
-colonizer
-colonizers
-colonizes
-colonizing
-colonnade
-colonnaded
-colons
-colony
-colophon
-colophony
-color
-color-blind
-color-coordinated
-Coloradan
-Colorado
-Coloradoan
-colorant
-coloration
-coloratura
-colorblind
-colorblindness
-colored
-colorer
-colorers
-colorfast
-colorfastness
-colorful
-colorfully
-colorfulness
-colorimeter
-coloring
-colorings
-colorization
-colorize
-colorless
-colorlessly
-colorlessness
-colormap
-colors
-colossal
-colossally
-Colosseum
-colossi
-colossus
-colostomy
-colostrum
-colour
-colour-bearer
-colour-blind
-colour-box
-colour-fast
-colour-man
-colour-rinse
-colourable
-coloured
-colourist
-colourless
-coloury
-colportage
-colporteur
-colt
-coltish
-colts
-coltsfoot
-columbarium
-Columbia
-Columbian
-columbine
-Columbus
-column
-columna
-columnar
-columned
-columnist
-columnize
-columnized
-columnizes
-columnizing
-columns
-colza
-COM
-coma
-comaker
-Comanche
-comatose
-comb
-combat
-combatant
-combatants
-combated
-combating
-combative
-combativeness
-combats
-combed
-comber
-combers
-combinable
-combination
-combinational
-combinations
-combinative
-combinator
-combinatorial
-combinatorially
-combinatoric
-combinatorics
-combinators
-combine
-combine-harvester
-combined
-combiner
-combines
-combing
-combings
-combining
-combo
-combs
-combustibility
-combustible
-combustion
-combustive
-Comdex
-come
-come!
-come-at-able
-come-down
-come-hither
-come-on
-comeback
-comedian
-comedians
-comedic
-comedienne
-comedies
-comedown
-comedy
-comeliness
-comely
-comer
-comers
-comes
-comestible
-comestibles
-comet
-cometary
-comets
-comeuppance
-comfit
-comfort
-comfortabilities
-comfortability
-comfortable
-comfortableness
-comfortably
-comforted
-comforter
-comforters
-comforting
-comfortingly
-comfortless
-comforts
-comfrey
-comfy
-comic
-comical
-comicality
-comically
-comics
-Cominform
-coming
-comings
-comity
-comma
-command
-commandant
-commandants
-commanded
-commandeer
-commander
-commander-in-chief
-commanderment
-commandero
-commanders
-commandery
-commanding
-commandingly
-commandment
-commandments
-commando
-commands
-commas
-commemorate
-commemorated
-commemorates
-commemorating
-commemoration
-commemorative
-commemorator
-commence
-commenced
-commencement
-commencements
-commences
-commencing
-commend
-commendable
-commendably
-commendation
-commendations
-commendatory
-commended
-commending
-commends
-commensurable
-commensurate
-commensurately
-comment
-commentaries
-commentary
-commentate
-commentator
-commentators
-commented
-commenting
-comments
-commerce
-commercial
-commercialism
-commercialization
-commercialize
-commercially
-commercialness
-commercials
-commie
-commingle
-commiserate
-commiseration
-commiserative
-commision
-commissar
-commissariat
-commissary
-commission
-commission-agency
-commission-agent
-commissionaire
-commissioned
-commissioner
-commissioners
-commissioning
-commissions
-commisure
-commit
-commitment
-commitments
-commits
-committal
-committed
-committee
-committeeman
-committeemen
-committees
-committeewoman
-committeewomen
-committing
-commix
-commixture
-commode
-commodious
-commodities
-commodity
-commodore
-commodores
-common
-common-law
-commonalities
-commonality
-commonalty
-commoner
-commoners
-commonest
-commonly
-commonness
-commonplace
-commonplaces
-commons
-commonsense
-commonweal
-commonwealth
-commonwealths
-commotion
-communal
-communally
-commune
-communes
-communicability
-communicable
-communicably
-communicant
-communicants
-communicate
-communicated
-communicates
-communicating
-communication
-communications
-communicative
-communicativeness
-communicator
-communicators
-communion
-communique
-communiqu
-communism
-communist
-communistic
-communists
-communities
-community
-commutable
-commutation
-commutative
-commutativity
-commutator
-commute
-commuted
-commuter
-commuters
-commutes
-commuting
-Comoros
-comp
-compact
-compacted
-compacter
-compactest
-compacting
-compaction
-compactly
-compactness
-compactor
-compactors
-compacts
-compade
-companies
-companion
-companionable
-companionably
-companions
-companionship
-companionway
-company
-comparability
-comparable
-comparably
-comparand
-comparative
-comparatively
-comparatives
-comparator
-comparators
-compare
-compared
-compares
-comparing
-comparison
-comparisons
-compartment
-compartmental
-compartmentalization
-compartmentalize
-compartmentalized
-compartmentalizes
-compartmentalizing
-compartmented
-compartments
-compass
-compass-card
-compasses
-compassion
-compassionate
-compassionately
-compatibilities
-compatibility
-compatible
-compatibles
-compatibly
-compatriot
-compeer
-compel
-compelled
-compelling
-compellingly
-compels
-compend
-COMPENDEX
-compendia
-compendious
-compendium
-compensate
-compensated
-compensates
-compensating
-compensation
-compensations
-compensator
-compensatory
-compete
-competed
-competence
-competency
-competent
-competently
-competes
-competing
-competition
-competitions
-competitive
-competitively
-competitiveness
-competitor
-competitors
-compilation
-compilations
-compilator
-compile
-compiled
-compiler
-compilers
-compiles
-compiling
-complacence
-complacency
-complacent
-complacently
-complain
-complainant
-complained
-complainer
-complainers
-complaining
-complains
-complaint
-complaints
-complaisance
-complaisant
-complaisantly
-complected
-complement
-complementary
-complementation
-complemented
-complementer
-complementers
-complementing
-complements
-complete
-completed
-completely
-completeness
-completes
-completing
-completion
-completions
-complex
-complexes
-complexion
-complexional
-complexioned
-complexities
-complexity
-complexly
-compliance
-compliant
-compliantly
-complicacy
-complicate
-complicated
-complicatedly
-complicates
-complicating
-complication
-complications
-complicator
-complicators
-complicit
-complicity
-complied
-compliment
-complimentary
-complimented
-complimenter
-complimenters
-complimenting
-compliments
-comply
-complying
-component
-componentry
-components
-componentwise
-comport
-comportment
-compose
-composed
-composedly
-composer
-composers
-composes
-composing
-composing-machine
-composite
-compositely
-composites
-composition
-compositional
-compositions
-compositor
-compost
-composure
-compote
-compound
-compoundable
-compounded
-compounding
-compounds
-comprehend
-comprehended
-comprehending
-comprehends
-comprehensibility
-comprehensible
-comprehensibly
-comprehension
-comprehensive
-comprehensively
-comprehensiveness
-compress
-compressed
-compresses
-compressibility
-compressible
-compressing
-compression
-compressive
-compressor
-comprise
-comprised
-comprises
-comprising
-compromise
-compromised
-compromiser
-compromisers
-compromises
-compromising
-compromisingly
-Compton
-comptroller
-comptrollers
-compulsion
-compulsions
-compulsive
-compulsively
-compulsiveness
-compulsorily
-compulsory
-compunction
-Compuserve
-computability
-computable
-computation
-computational
-computationally
-computations
-compute
-computed
-computer
-computer-aided
-computer-assisted
-computerist
-computerization
-computerize
-computerized
-computerizes
-computerizing
-computers
-computes
-computing
-comrade
-comradely
-comrades
-comradeship
-con
-Conakry
-Conant
-conation
-conative
-concatenate
-concatenated
-concatenates
-concatenating
-concatenation
-concatenations
-concave
-concavely
-concaveness
-concavity
-conceal
-concealable
-concealed
-concealer
-concealers
-concealing
-concealment
-conceals
-concede
-conceded
-concedes
-conceding
-conceit
-conceited
-conceitedly
-conceitedness
-conceits
-conceivable
-conceivably
-conceive
-conceived
-conceives
-conceiving
-concentrate
-concentrated
-concentrates
-concentrating
-concentration
-concentrations
-concentrator
-concentrators
-concentric
-concentrically
-concentrity
-Concepcion
-concept
-conception
-conceptional
-conceptions
-concepts
-conceptual
-conceptualization
-conceptualizations
-conceptualize
-conceptualized
-conceptualizes
-conceptualizing
-conceptually
-concerment
-concern
-concerned
-concernedly
-concerning
-concerns
-concert
-concert-hall
-concerted
-concertedly
-concerti
-concertina
-concertize
-concertmaster
-concerto
-concerts
-concession
-concessionaire
-concessional
-concessionary
-concessions
-concessive
-conch
-concierge
-conciliate
-conciliation
-conciliator
-conciliatory
-conciness
-concise
-concisely
-conciseness
-concision
-conclave
-conclude
-concluded
-concludes
-concluding
-conclusion
-conclusions
-conclusive
-conclusively
-conclusiveness
-concoct
-concoction
-concomitans
-concomitant
-concomitantly
-concord
-concordance
-concordant
-concordat
-Concorde
-Concordia
-concourse
-concrete
-concretely
-concreteness
-concretes
-concretion
-concubinage
-concubine
-concupiscence
-concupiscent
-concur
-concurred
-concurrence
-concurrencies
-concurrency
-concurrent
-concurrently
-concurring
-concurs
-concuss
-concussion
-concussive
-condemn
-condemnation
-condemnations
-condemnatory
-condemned
-condemner
-condemners
-condemning
-condemns
-condensable
-condensate
-condensation
-condense
-condensed
-condenser
-condenses
-condensing
-condescend
-condescending
-condescendingly
-condescension
-condign
-condiment
-condition
-conditional
-conditionally
-conditionals
-conditioned
-conditioner
-conditioners
-conditioning
-conditions
-condo
-condole
-condolence
-condom
-condominium
-condonation
-condone
-condoned
-condones
-condoning
-condor
-conduce
-conducive
-conduciveness
-conduct
-conductance
-conducted
-conductibility
-conductible
-conducting
-conduction
-conductive
-conductivity
-conductor
-conductors
-conductress
-conducts
-conduit
-cone
-cones
-Conestoga
-coney
-confab
-confabulate
-confabulation
-confection
-confectioner
-confectioner's
-confectionery
-confectioners
-confederacy
-confederate
-confederates
-confederation
-confederations
-confer
-conferable
-conferee
-conference
-conferences
-conferment
-conferral
-conferred
-conferrer
-conferrers
-conferring
-confers
-confess
-confessed
-confessedly
-confesses
-confessing
-confession
-confessional
-confessions
-confessor
-confessors
-confetti
-confidant
-confidante
-confidants
-confide
-confided
-confidence
-confidences
-confident
-confidental
-confidential
-confidentiality
-confidentially
-confidently
-confider
-confides
-confiding
-confidingly
-configurable
-configuration
-configurations
-configure
-configured
-configures
-configuring
-confine
-confined
-confinement
-confinements
-confiner
-confines
-confining
-confirm
-confirmand
-confirmation
-confirmations
-confirmative
-confirmatory
-confirmed
-confirmee
-confirming
-confirms
-confiscate
-confiscated
-confiscates
-confiscating
-confiscation
-confiscations
-confiscator
-confiscatory
-conflagration
-conflate
-conflation
-conflict
-conflicted
-conflicting
-conflicts
-confluence
-confluent
-conflux
-confocal
-conform
-conformable
-conformal
-conformance
-conformation
-conformed
-conformer
-conforming
-conformism
-conformist
-conformity
-conforms
-confound
-confounded
-confounding
-confounds
-confraternity
-confrere
-confreres
-confront
-confrontation
-confrontational
-confrontations
-confronted
-confronter
-confronters
-confronting
-confronts
-Confucian
-Confucianism
-Confucius
-confuse
-confused
-confusedly
-confuser
-confusers
-confuses
-confusing
-confusingly
-confusion
-confusions
-confutation
-confute
-conga
-congeal
-congealment
-congenial
-congeniality
-congenially
-congenital
-congenitally
-conger
-congeries
-congest
-congested
-congestion
-congestive
-conglomerate
-conglomeration
-Congo
-Congolese
-congrats
-congratulant
-congratulate
-congratulated
-congratulation
-congratulations
-congratulator
-congratulatory
-congregate
-congregated
-congregates
-congregating
-congregation
-congregational
-congregationalism
-congregations
-congress
-congresses
-congressional
-congressionally
-congressman
-congressmen
-congressperson
-congresswoman
-congresswomen
-congruence
-congruent
-congruently
-congruity
-congruous
-conic
-conical
-conically
-conics
-conifer
-coniferous
-conjectural
-conjecture
-conjectured
-conjectures
-conjecturing
-conjoin
-conjoined
-conjoiner
-conjoint
-conjointly
-conjugal
-conjugality
-conjugally
-conjugate
-conjugation
-conjunct
-conjuncted
-conjunction
-conjunctions
-conjunctiva
-conjunctivae
-conjunctive
-conjunctively
-conjunctivitis
-conjuncts
-conjuncture
-conjuration
-conjure
-conjured
-conjurer
-conjures
-conjuring
-conjuror
-conk
-Conklin
-conky
-Conley
-conman
-Conn
-Connally
-connatural
-connect
-connectable
-connected
-connectedness
-connecter
-connectible
-Connecticut
-connecting
-connection
-connectionless
-connections
-connective
-connectives
-connectivity
-connector
-connectors
-connects
-Connelly
-Conner
-connexion
-connexity
-Connie
-conning-tower
-conniption
-connivance
-connive
-conniver
-conniving
-connoisseur
-connoisseurs
-Connors
-connotation
-connotative
-connote
-connoted
-connotes
-connoting
-connubial
-conquer
-conquerable
-conquered
-conquerer
-conquerers
-conquering
-conqueror
-conquerors
-conquers
-conquest
-conquests
-conquistador
-conquistadores
-Conrad
-Conrail
-consanguineous
-consanguinity
-conscience
-conscienceless
-consciences
-conscientious
-conscientiously
-conscientiousness
-conscious
-consciously
-consciousness
-conscribe
-conscript
-conscription
-consecrate
-consecration
-consecution
-consecutive
-consecutively
-consensual
-consensus
-consent
-consented
-consenter
-consenters
-consentient
-consenting
-consents
-consequence
-consequences
-consequent
-consequential
-consequentialities
-consequentiality
-consequentially
-consequently
-consequents
-conservancy
-conservation
-conservationism
-conservationist
-conservationists
-conservations
-conservatism
-conservative
-conservatively
-conservatives
-conservatoire
-conservator
-conservatory
-conserve
-conserved
-conserves
-conserving
-consider
-considerable
-considerably
-considerate
-considerately
-considerateness
-consideration
-considerations
-considered
-considering
-considers
-consign
-consignation
-consigned
-consignee
-consigning
-consignment
-consignor
-consigns
-consist
-consisted
-consistence
-consistency
-consistent
-consistently
-consisting
-consistory
-consists
-consolable
-consolation
-consolations
-consolatory
-console
-consoled
-consoler
-consolers
-consoles
-consolidate
-consolidated
-consolidates
-consolidating
-consolidation
-consolidator
-consoling
-consolingly
-consols
-consomm
-consonance
-consonant
-consonantal
-consonantly
-consonants
-consort
-consorted
-consortia
-consorting
-consortium
-consorts
-conspectus
-conspicuous
-conspicuously
-conspicuousness
-conspiracies
-conspiracy
-conspirator
-conspiratorial
-conspiratorially
-conspirators
-conspire
-conspired
-conspires
-conspiring
-constable
-constables
-constabulary
-Constance
-constancy
-constant
-Constantine
-Constantinople
-constantly
-constants
-constellation
-constellations
-consternation
-constipate
-constipated
-constipation
-constituencies
-constituency
-constituent
-constituents
-constitute
-constituted
-constitutes
-constituting
-constitution
-constitutional
-constitutionality
-constitutionally
-constitutions
-constitutive
-constrain
-constrained
-constraining
-constrains
-constraint
-constraints
-constrict
-constriction
-constrictive
-constrictor
-construable
-construct
-constructed
-constructibility
-constructible
-constructing
-construction
-constructional
-constructionist
-constructions
-constructive
-constructively
-constructiveness
-constructor
-constructors
-constructs
-construe
-construed
-construing
-consubstantiation
-consul
-consular
-consulate
-consulates
-consuls
-consulship
-consult
-consultancy
-consultant
-consultants
-consultation
-consultations
-consultative
-consulted
-consulting
-consults
-consumable
-consume
-consumed
-consumer
-consumerism
-consumerist
-consumers
-consumes
-consuming
-consummate
-consummated
-consummately
-consummation
-consumption
-consumptions
-consumptive
-consumptively
-contact
-contacted
-contacting
-contacts
-contagion
-contagious
-contagiously
-contagiousness
-contain
-containable
-contained
-container
-containerization
-containerize
-containers
-containing
-containment
-containments
-contains
-contaminant
-contaminate
-contaminated
-contaminates
-contaminating
-contamination
-contaminator
-contemn
-contemplate
-contemplated
-contemplates
-contemplating
-contemplation
-contemplations
-contemplative
-contemporaneity
-contemporaneous
-contemporaneously
-contemporaries
-contemporariness
-contemporary
-contempt
-contemptible
-contemptibly
-contemptuous
-contemptuously
-contemptuousness
-contend
-contended
-contender
-contenders
-contending
-contends
-content
-contented
-contentedly
-contentedness
-contenting
-contention
-contentions
-contentious
-contentiously
-contentiousness
-contently
-contentment
-contents
-conterminous
-conterminously
-contest
-contestable
-contestant
-contested
-contester
-contesters
-contesting
-contests
-context
-context-free
-contexts
-contextual
-contextualize
-contextually
-contexture
-contiguity
-contiguous
-contiguously
-continence
-continent
-continental
-continentally
-continents
-contingencies
-contingency
-contingent
-contingently
-contingents
-continua
-continual
-continually
-continuance
-continuances
-continuation
-continuations
-continue
-continued
-continues
-continuing
-continuities
-continuity
-continuous
-continuously
-continuum
-contort
-contortion
-contortionist
-contortions
-contour
-contoured
-contouring
-contours
-contra
-contraband
-contrabass
-contraception
-contraceptive
-contract
-contracted
-contractible
-contractile
-contracting
-contraction
-contractions
-contractor
-contractors
-contracts
-contractual
-contractually
-contradict
-contradicted
-contradicting
-contradiction
-contradictions
-contradictory
-contradicts
-contradistinction
-contradistinctions
-contrail
-contraindicate
-contraindication
-contralto
-contrapositive
-contrapositives
-contraption
-contraptions
-contrapuntal
-contrapuntally
-contrapuntist
-contrariety
-contrarily
-contrariness
-contrariwise
-contrary
-contrast
-contrasted
-contraster
-contrasters
-contrasting
-contrastingly
-contrasts
-contravenation
-contravene
-contravention
-contretemps
-contribute
-contributed
-contributes
-contributing
-contribution
-contributions
-contributor
-contributorily
-contributors
-contributory
-contrick
-contrite
-contritely
-contriteness
-contrition
-contrivance
-contrivances
-contrive
-contrived
-contriver
-contrives
-contriving
-control
-controllability
-controllable
-controllably
-controlled
-controller
-controllers
-controlling
-controls
-controversial
-controversially
-controversies
-controversy
-controvert
-controvertible
-contumacious
-contumaciously
-contumacy
-contumelious
-contumely
-contuse
-contusion
-conundrum
-conundrums
-conurbation
-Convair
-convalesce
-convalescence
-convalescent
-convect
-convection
-convectional
-convective
-convene
-convened
-convener
-convenes
-convenience
-conveniences
-convenient
-conveniently
-convening
-convent
-conventicle
-convention
-conventional
-conventionality
-conventionalize
-conventionally
-conventions
-convents
-converational
-converge
-converged
-convergence
-convergent
-converges
-converging
-conversable
-conversant
-conversantly
-conversation
-conversational
-conversationalist
-conversationally
-conversations
-converse
-conversed
-conversely
-converses
-conversing
-conversion
-conversions
-convert
-converted
-converter
-converters
-convertibility
-convertible
-converting
-convertor
-converts
-convex
-convexity
-convexly
-convey
-conveyable
-conveyance
-conveyances
-conveyed
-conveyer
-conveyers
-conveying
-conveyor
-conveys
-convict
-convicted
-convicting
-conviction
-convictions
-convicts
-convince
-convinced
-convincer
-convincers
-convinces
-convincing
-convincingly
-convivial
-conviviality
-convivially
-convocation
-convoke
-convolute
-convoluted
-convolution
-convolvulus
-convoy
-convoyed
-convoying
-convoys
-convulse
-convulsion
-convulsions
-convulsive
-convulsively
-Conway
-cony
-coo
-cooing
-cook
-cook-house
-cook-shop
-cookbook
-Cooke
-cooked
-cooker
-cookery
-cookery-book
-cookie
-cookie-cutter
-cookies
-cooking
-cooking-range
-cooking-stove
-cookout
-cooks
-cookware
-cooky
-cool
-cool-headed
-coolant
-cooled
-cooler
-coolers
-coolest
-Cooley
-Coolidge
-coolie
-coolies
-cooling
-coolly
-coolness
-cools
-cooly
-coomb
-coombe
-coon
-coons
-coonskin
-coop
-cooped
-cooper
-cooperage
-cooperate
-cooperated
-cooperates
-cooperating
-cooperation
-cooperations
-cooperative
-cooperatively
-cooperativeness
-cooperatives
-cooperator
-cooperators
-coopers
-coops
-coordinate
-coordinated
-coordinately
-coordinates
-coordinating
-coordination
-coordinations
-coordinator
-coordinators
-Coors
-coot
-cootie
-cooties
-cop
-cop-out
-copartner
-copartnership
-copartnery
-copay
-cope
-copeck
-coped
-Copeland
-Copenhagen
-Copernican
-Copernicus
-copes
-copied
-copier
-copiers
-copies
-copilot
-coping
-copings
-copious
-copiously
-copiousness
-coplanar
-Copland
-Copley
-copper
-copper-top
-Copperfield
-copperhead
-copperplate
-coppers
-coppery
-coppice
-copra
-coprocessor
-cops
-copse
-copter
-Coptic
-copula
-copulate
-copulation
-copulative
-copy
-copy-book
-copybook
-copycat
-copyhold
-copyholder
-copying
-copying-ink
-copyist
-copyreader
-copyright
-copyrightable
-copyrighted
-copyrights
-copywriter
-coquet
-coquete
-coquetish
-coquetry
-coquette
-coquettish
-coquettishly
-coquettishness
-coracle
-coral
-corbel
-Corbett
-Corcoran
-cord
-cordage
-corded
-corder
-cordial
-cordiality
-cordially
-cordillera
-cordite
-cordless
-Cordoba
-cordon
-cordovan
-cords
-corduroy
-corduroys
-core
-cored
-coreference
-corer
-corers
-cores
-corespondent
-Corey
-corgi
-coriander
-coring
-Corinth
-Corinthian
-Corinthianize
-Corinthianizes
-Corinthians
-Coriolanus
-cork
-cork-screw
-corked
-corker
-corkers
-corking
-corks
-corkscrew
-corky
-corm
-cormorant
-corn
-corn-bread
-corn-chandler
-corn-crake
-corn-exchange
-corn-flour
-corn-flower
-corn-laws
-corn-loft
-cornball
-cornbread
-corncob
-cornea
-corneal
-corned
-cornel
-Cornelia
-cornelian
-Cornelius
-Cornell
-corner
-corner-stone
-cornered
-corners
-cornerstone
-cornerstones
-cornet
-Cornets
-cornfield
-cornfields
-cornflakes
-cornflower
-cornice
-cornily
-corniness
-corning
-Cornish
-cornmeal
-cornrow
-corns
-cornstalk
-cornstarch
-cornucopia
-Cornwall
-Cornwallis
-corny
-corolla
-corollaries
-corollary
-corona
-Coronado
-coronae
-coronal
-coronaries
-coronary
-coronation
-coroner
-coronet
-coronets
-coroutine
-coroutines
-corpora
-corporal
-corporality
-corporals
-corporate
-corporately
-corporation
-corporations
-corporeal
-corporeality
-corporeally
-corps
-corpse
-corpses
-corpsman
-corpulence
-corpulency
-corpulent
-corpus
-corpuscle
-corpuscular
-corpusele
-corral
-correct
-correctable
-corrected
-correcting
-correction
-correctional
-corrections
-corrective
-correctively
-correctives
-correctly
-correctness
-corrector
-corrects
-correlate
-correlated
-correlates
-correlating
-correlation
-correlations
-correlative
-correspond
-corresponded
-correspondence
-correspondences
-correspondent
-correspondents
-corresponding
-correspondingly
-corresponds
-corridor
-corridors
-corrigenda
-corrigendum
-corrigible
-corroborate
-corroborated
-corroborates
-corroborating
-corroboration
-corroborations
-corroborative
-corroborator
-corroboratory
-corrode
-corrosion
-corrosive
-corrosively
-corrugate
-corrugated
-corrugation
-corrupt
-corrupted
-corrupter
-corruptibility
-corruptible
-corrupting
-corruption
-corruptions
-corruptly
-corruptness
-corrupts
-corsage
-corsair
-corselet
-corset
-Corsica
-Corsican
-corslet
-cortege
-Cortes
-cortex
-Cortez
-cortical
-cortices
-cortisone
-Cortland
-corundum
-coruscate
-coruscation
-Corvallis
-corvette
-corvine
-Corvus
-Corydoras
-corymb
-coryphaeus
-cos
-cosecant
-Cosgrove
-cosign
-cosignatory
-cosigner
-cosily
-cosine
-cosines
-cosiness
-cosmetic
-cosmetically
-cosmetician
-cosmetics
-cosmetologist
-cosmetology
-cosmic
-cosmically
-cosmogonist
-cosmogony
-cosmological
-cosmologist
-cosmology
-cosmonaut
-cosmopolitan
-cosmopolitanism
-cosmopolitical
-cosmos
-cosponsor
-cossack
-cosset
-cost
-cost(s)
-cost-effective
-cost-effectiveness
-Costa
-costal
-costar
-costard
-costed
-Costello
-costing
-costliness
-costly
-costs
-costume
-costumed
-costumer
-costumes
-costuming
-cosy
-cot
-cotangent
-cote
-coterie
-coterminous
-cothurnus
-cotillion
-cots
-cottage
-cottager
-cottages
-cottar
-cotter
-cotton
-cotton-mill
-cotton-pickin'
-cotton-picking
-cotton-plant
-cotton-spinner
-cotton-wool
-cottonmouth
-cottons
-cottonseed
-cottontail
-cottonwood
-cottony
-Cottrell
-cotyledon
-cotyledons
-couch
-couched
-couches
-couchette
-couching
-cougar
-cough
-coughed
-coughing
-coughs
-could
-couldn't
-couldnt
-coulee
-coulisse
-coulomb
-Coulter
-council
-councillor
-councillors
-councilman
-councilmen
-councilor
-councilperson
-councils
-councilwoman
-councilwomen
-counsel
-counseled
-counseling
-counselled
-counselling
-counsellor
-counsellors
-counselor
-counselors
-counsels
-count
-countable
-countably
-countdown
-counted
-countenance
-counter
-counter-attack
-counter-blow
-counter-claim
-counter-clockwise
-counter-espionage
-counter-reformation
-counter-revolution
-counter-sign
-counter-stroke
-counter-vail
-counteract
-counteracted
-counteracting
-counteraction
-counteractive
-counterargument
-counterattack
-counterbalance
-countercharge
-counterclaim
-counterclockwise
-counterculture
-countered
-counterespionage
-counterexample
-counterexamples
-counterfeit
-counterfeited
-counterfeiter
-counterfeiting
-counterflow
-counterfoil
-countering
-counterinsurgency
-counterintelligence
-counterintuitive
-counterman
-countermand
-countermarch
-countermeasure
-countermeasures
-countermen
-countermine
-countermove
-counteroffensive
-counteroffer
-counterpane
-counterpart
-counterparts
-counterpoint
-counterpointing
-counterpoise
-counterproductive
-counterproposal
-counterrevolution
-counterrevolutionary
-counters
-countersign
-countersignature
-countersink
-counterspy
-countersunk
-countertenor
-countervail
-counterweight
-counterwork
-countess
-counties
-counting
-counting-house
-counting-room
-countless
-countries
-countrified
-country
-country-and-western
-country-house
-country-side
-countryman
-countrymen
-countryside
-countrywide
-countrywoman
-counts
-county
-countywide
-coup
-coupe
-couple
-coupled
-coupler
-couplers
-couples
-couplet
-coupling
-couplings
-coupon
-coupons
-coup
-courage
-courageous
-courageously
-courageousness
-couragous
-courier
-couriers
-Courland
-course
-coursed
-courser
-courses
-coursing
-court
-court-martial
-courted
-courteous
-courteously
-courteousness
-courter
-courters
-courtesan
-courtesies
-courtesy
-courtezan
-courthouse
-courthouses
-courtier
-courtiers
-courting
-courtliness
-courtly
-Courtney
-courtroom
-courtrooms
-courts
-courts-martial
-courtship
-courty-promises
-courtyard
-courtyards
-couscous
-cousin
-cousins
-couture
-couturier
-covalent
-covariant
-cove
-coven
-covenant
-covenants
-Covent
-Coventry
-cover
-cover-up
-coverable
-coverage
-coverall
-coveralls
-covered
-covering
-coverings
-coverlet
-coverlets
-covers
-covert
-covertly
-covertness
-coverup
-coves
-covet
-coveted
-coveting
-covetous
-covetously
-covetousness
-covets
-covey
-cow
-cow-boy
-cow-herd
-cow-hide
-cow-house
-cow-pox
-cow-shed
-Cowan
-coward
-cowardice
-cowardliness
-cowardly
-cowbell
-cowbird
-cowboy
-cowboys
-cowcatcher
-cowed
-cower
-cowered
-cowerer
-cowerers
-cowering
-coweringly
-cowers
-cowgirl
-cowhand
-cowherd
-cowhide
-cowing
-cowl
-cowlick
-cowling
-cowls
-cowman
-coworker
-cowpoke
-cowpox
-cowpuncher
-cowrie
-cows
-cowslip
-cowslips
-cowson
-cox
-coxcomb
-coxswain
-coy
-coyly
-coyness
-coyote
-coyotes
-coypu
-cozen
-cozenage
-cozier
-cozily
-coziness
-cozy
-CPA
-CPI
-CPM
-CPO
-CPR
-CPU
-Cr
-crab
-crabapple
-crabbed
-crabber
-crabbily
-crabbiness
-crabby
-crabgrass
-crablike
-crabs
-crack
-crack-brained
-crack-up
-crackdown
-cracked
-cracker
-crackerjack
-crackers
-cracking
-crackle
-crackled
-crackles
-crackling
-cracklings
-crackly
-crackpot
-cracks
-crackup
-cracky
-Cracow
-cradle
-cradled
-cradles
-craft
-crafted
-crafter
-craftily
-craftiness
-crafting
-craftman
-craftperson
-crafts
-craftsman
-craftsmanship
-craftsmen
-craftspeople
-craftsperson
-craftswoman
-crafty
-crag
-cragged
-cragginess
-craggy
-crags
-Craig
-crake
-cram
-Cramer
-crammed
-cramming
-cramp
-cramped
-crampon
-crampons
-cramps
-crams
-cranberries
-cranberry
-Crandall
-crane
-cranes
-Cranford
-crania
-cranial
-cranium
-crank
-crank-shaft
-crankcase
-cranked
-crankier
-crankiest
-crankily
-crankiness
-cranking
-cranks
-crankshaft
-cranky
-crannied
-cranny
-Cranston
-crap
-crape
-crapper
-crappie
-crappy
-craps
-crapshooter
-crapulence
-crash
-crash-land
-crash-landing
-crashed
-crasher
-crashers
-crashes
-crashing
-crass
-crassly
-crassness
-crate
-crater
-craters
-crates
-cravat
-cravats
-crave
-craved
-craven
-cravenly
-cravenness
-craves
-craving
-craw
-crawdad
-crawfish
-Crawford
-crawl
-crawled
-crawler
-crawlers
-crawling
-crawls
-crawlspace
-crawly
-Cray
-crayfish
-crayon
-Crays
-craze
-crazed
-crazes
-crazier
-craziest
-crazily
-craziness
-crazing
-crazy
-crazy-bone
-CRC
-creak
-creaked
-creakily
-creakiness
-creaking
-creaks
-creaky
-cream
-creamed
-creamer
-creamers
-creamery
-creamily
-creaminess
-creaming
-creams
-creamy
-crease
-crease-resistant
-creased
-creases
-creasing
-create
-created
-creates
-creating
-creation
-Creation!
-creationism
-creationist
-creations
-creative
-creatively
-creativeness
-creativity
-creator
-creators
-creature
-creatures
-creche
-credence
-credencetials
-credential
-credentials
-credenza
-credibility
-credible
-credibly
-credit
-creditable
-creditably
-credited
-crediting
-creditor
-creditors
-credits
-credo
-credulity
-credulous
-credulously
-credulousness
-Cree
-creed
-creeds
-creek
-creeks
-creel
-creep
-creeper
-creepers
-creepily
-creepiness
-creeping
-creeps
-creepy
-Creighton
-cremate
-cremated
-cremates
-cremating
-cremation
-cremations
-crematoria
-crematorium
-crematory
-creme
-crenelate
-crenelated
-crenelation
-crenellate
-crenellated
-crenellation
-Creole
-Creon
-creosote
-crepe
-crepehanger
-crept
-crepuscular
-crescendi
-crescendo
-crescent
-crescents
-cress
-cresset
-Cressy
-crest
-crested
-crestfallen
-crestless
-crests
-Crestview
-cretaceous
-Cretaceously
-Cretan
-Crete
-cretin
-cretinism
-cretinous
-cretonne
-crevasse
-crevice
-crevices
-crew
-crew-cut
-crewcut
-crewed
-crewel
-crewelwork
-crewing
-crewman
-crews
-crib
-cribbage
-cribber
-cribs
-crick
-cricket
-cricketer
-crickets
-cried
-crier
-criers
-cries
-crikey
-crime
-Crimea
-Crimean
-crimes
-criminal
-criminality
-criminally
-criminals
-criminate
-criminologist
-criminology
-crimp
-crimplene
-crimson
-crimsoning
-cringe
-cringed
-cringes
-cringing
-crinkle
-crinkled
-crinkly
-crinolie
-crinoline
-cripple
-crippled
-crippler
-cripples
-crippling
-crises
-crisis
-crisp
-Crispin
-crispiness
-crisply
-crispness
-crispy
-criss-cross
-crisscross
-criteria
-criterion
-critic
-critical
-critically
-criticise
-criticism
-criticisms
-criticize
-criticized
-criticizer
-criticizes
-criticizing
-critics
-critique
-critiques
-critiquing
-critter
-Cro-Magnon
-croak
-croaked
-croaker
-croaking
-croaks
-croaky
-Croat
-Croatia
-Croatian
-crochet
-crocheter
-crocheting
-crochets
-crock
-crocked
-crockery
-Crockett
-crocks
-crocodile
-crocus
-Croesus
-croft
-crofter
-croissant
-Croix
-Cromwell
-Cromwellian
-crone
-crony
-crook
-crookdom
-crooked
-crookedly
-crookedness
-crookneck
-crooks
-croon
-crooner
-crop
-crop-dusting
-cropland
-cropped
-cropper
-croppers
-cropping
-crops
-croquet
-croquette
-Crosby
-crosier
-cross
-cross-bar
-cross-beam
-cross-bow
-cross-bred
-cross-breed
-cross-country
-cross-cultural
-cross-dress
-cross-dresser
-cross-dressing
-cross-examination
-cross-examine
-cross-examiner
-cross-eye
-cross-eyed
-cross-fertilization
-cross-fertilize
-cross-fire
-cross-grained
-cross-hatching
-cross-head
-cross-legged
-cross-pollinate
-cross-pollination
-cross-purpose
-cross-purposes
-cross-question
-cross-refer
-cross-reference
-cross-road
-cross-roads
-cross-section
-cross-sectional
-cross-stitch
-cross-town
-cross-train
-cross-wise
-crossable
-crossbar
-crossbars
-crossbeam
-crossbones
-crossbow
-crossbowman
-crossbred
-crossbreed
-crosscheck
-crosscurrent
-crosscut
-crossed
-crosser
-crossers
-crosses
-crossfire
-crossfooting
-crosshatch
-crosshatching
-crosshead
-crossheading
-crossing
-crossings
-crossly
-crossness
-crossover
-crossovers
-crosspatch
-crosspiece
-crosspoint
-crossroad
-crossroads
-crosstalk
-crosstown
-crosswalk
-crossways
-crosswind
-crosswise
-crossword
-crosswords
-crotch
-crotchet
-crotchety
-crouch
-crouched
-crouching
-croup
-croupier
-croupy
-crouton
-crow
-crow's-feet
-crow's-foot
-crow's-nest
-crow-bar
-crowbar
-crowd
-crowded
-crowder
-crowding
-crowds
-crowed
-crowfoot
-crowing
-Crowley
-crown
-crowned
-crowning
-crowns
-crows
-crowsfoot
-Croydon
-crozier
-CRT
-cruces
-crucial
-crucially
-crucible
-crucified
-crucifies
-crucifix
-crucifixion
-cruciform
-crucify
-crucifying
-crud
-cruddy
-crude
-crudely
-crudeness
-cruder
-crudest
-crudites
-crudity
-cruel
-crueler
-cruelest
-cruelly
-cruelness
-cruelty
-cruet
-Cruickshank
-cruise
-cruiser
-cruisers
-cruises
-cruising
-cruller
-crumb
-crumble
-crumbled
-crumbles
-crumbliness
-crumbling
-crumbly
-crumbs
-crumby
-crumminess
-crummy
-crumpet
-crumple
-crumpled
-crumples
-crumpling
-crunch
-crunched
-crunches
-crunchier
-crunchiest
-crunchiness
-crunching
-crunchy
-crunk
-crupper
-crusade
-crusader
-crusaders
-crusades
-crusading
-cruse
-crused
-crush
-crushable
-crushed
-crusher
-crushers
-crushes
-crushing
-crushingly
-Crusoe
-crust
-crustacean
-crustaceans
-crustal
-crustily
-crustiness
-crusts
-crusty
-crut
-Crut!
-crutch
-crutches
-crux
-cruxes
-Cruz
-cry
-crybaby
-crying
-cryogenic
-cryogenics
-cryosurgery
-crypt
-cryptanalysis
-cryptanalyst
-cryptanalytic
-cryptic
-cryptically
-cryptobibliography
-cryptocenter
-cryptogam
-cryptogram
-cryptographer
-cryptographic
-cryptographically
-cryptography
-cryptologist
-cryptology
-cryptonym
-crystal
-crystalline
-crystallization
-crystallize
-crystallized
-crystallizes
-crystallizing
-crystals
-crche
-Cs
-CST
-CT
-Cu
-cub
-Cuba
-Cuban
-Cubanize
-Cubanizes
-Cubans
-cubbyhole
-cube
-cube-root
-cubed
-cuber
-cubes
-cubic
-cubical
-cubicle
-cubism
-cubist
-cubit
-cubs
-cuckold
-cuckoldry
-cuckoo
-cuckoos
-cucumber
-cucumbers
-cud
-cuddle
-cuddled
-cuddly
-cudgel
-cudgels
-cue
-cued
-cues
-cuff
-cufflink
-cuffs
-Cuiavia
-cuirass
-cuirassier
-cuisine
-cul-de-sac
-Culbertson
-culinary
-cull
-culled
-cullender
-culler
-culling
-culls
-culminate
-culminated
-culminates
-culminating
-culmination
-culotte
-culottes
-culpa
-culpability
-culpable
-culpably
-culprit
-culprits
-culs-de-sac
-cult
-cultism
-cultist
-cultivable
-cultivatable
-cultivate
-cultivated
-cultivates
-cultivating
-cultivation
-cultivations
-cultivator
-cultivators
-cults
-cultural
-culturally
-culture
-cultured
-cultures
-culturing
-Culver
-Culvers
-culvert
-cum
-cumber
-Cumberland
-cumbersome
-cumbersomeness
-cumbrous
-cumdach
-cumin
-cummerbund
-cummin
-Cummings
-Cummins
-cumquat
-cumulate
-cumulative
-cumulatively
-cumuli
-cumulonimbus
-cumulus
-Cunard
-cuneiform
-cunnilingus
-cunning
-Cunningham
-cunningly
-cunt
-cup
-cupboard
-cupboards
-cupcake
-Cupertino
-cupful
-cupidity
-cupola
-cupolaed
-cupped
-cupping
-cupreous
-cuprib
-cupric
-cups
-cur
-curability
-curable
-curably
-curacy
-curare
-curate
-curative
-curator
-curatorial
-curb
-curbing
-curbs
-curbstone
-curd
-curdle
-curdy
-cure
-cure-all
-cured
-curer
-cures
-curettage
-curfew
-curfews
-curia
-curiae
-curing
-curio
-curiosa
-curiosities
-curiosity
-curious
-curiouser
-curiousest
-curiously
-curiousness
-Curitiba
-curium
-curl
-curled
-curler
-curlers
-curlew
-curlicue
-curliness
-curling
-curling-irons
-curling-tongs
-curls
-curly
-curlycue
-curmudgeon
-curmudgeonly
-curpuscule
-Curran
-currant
-currants
-currencies
-currency
-current
-currently
-currentness
-currents
-curricula
-curricular
-curriculum
-curriculums
-curried
-currier
-curries
-curry
-currycomb
-currying
-curs
-curse
-cursed
-cursedly
-curses
-cursing
-cursive
-cursively
-cursor
-cursorily
-cursoriness
-cursors
-cursory
-curst
-curt
-curtail
-curtailed
-curtailment
-curtails
-curtain
-curtained
-curtains
-curtate
-Curtis
-curtly
-curtness
-curtsey
-curtsies
-curtsy
-curvaceous
-curvaceousness
-curvacious
-curvature
-curve
-curved
-curves
-curvilinear
-curving
-curvy
-Cushing
-cushion
-cushioned
-cushioning
-cushions
-Cushman
-cushy
-cusp
-cuspid
-cuspidor
-cusps
-cuss
-cussed
-custard
-Custer
-custodial
-custodian
-custodians
-custodianship
-custody
-custom
-custom-built
-custom-house
-custom-made
-customarily
-customary
-customer
-customers
-customhouse
-customizable
-customization
-customizations
-customize
-customized
-customizer
-customizers
-customizes
-customizing
-customs
-cut
-cut-and-dried
-cut-and-dry
-cut-away
-cut-down
-cut-out
-cut-price
-cut-rate
-cut-throat
-cutaneous
-cutaway
-cutback
-cute
-cutely
-cuteness
-cutesie
-cutest
-cutesy
-cuticle
-cutie-pie
-cutlas
-cutlass
-cutler
-cutlery
-cutlet
-cutoff
-cutoffs
-cutout
-cutover
-cuts
-cutter
-cutters
-cutthroat
-cutting
-cuttingly
-cuttings
-cuttlefish
-cutup
-cutworm
-Cuvier
-Cuzco
-CV
-cwt
-CX
-cyan
-Cyanamid
-cyanide
-CYBERNET
-cybernetic
-cybernetics
-cyberpunk
-cyberspace
-cyborg
-Cyclades
-cyclamen
-cycle
-cycled
-cycles
-cyclic
-cyclical
-cyclically
-cycling
-cyclist
-cycloid
-cycloidal
-cycloids
-cyclometer
-cyclone
-cyclones
-cyclonic
-cyclopaedia
-cyclopedia
-Cyclopes
-cyclostyle
-cyclotron
-cyclotrons
-cyder
-cygnet
-Cygnus
-cylinder
-cylinders
-cylindrical
-cymbal
-cymbalist
-cymbalo
-cymbals
-cyme
-Cymric
-cynic
-cynical
-cynically
-cynicism
-cynosure
-Cynthia
-cypher
-CYPHERNET
-cypress
-Cyprian
-Cypriot
-Cyprius
-Cyprus
-Cyril
-Cyrillic
-Cyrus
-cyst
-cystic
-cystitis
-cysts
-cytologist
-cytology
-cytoplasm
-cytoplasmic
-cytosine
-CZ
-czar
-czarevitch
-czarewich
-czarina
-czarist
-Czech
-Czechia
-Czechization
-Czechizations
-Czechoslovak
-Czechoslovakia
-Czechoslovakian
-Czechs
-Czerniak
-D.S.
-d/b/a
-DA
-dab
-dabble
-dabbled
-dabbler
-dabbles
-dabbling
-Dacca
-dace
-dacha
-dachshund
-Dacron
-dactyl
-dactylic
-dad
-Dada
-Dadaistic
-daddle
-daddy
-daddy-longlegs
-Dade
-dado
-dads
-Daedalus
-daemon
-daemonic
-daemons
-daffiness
-daffodil
-daffodils
-daffy
-daft
-daftly
-daftness
-dagger
-dago
-daguerreotype
-Dahl
-dahlia
-Dahomey
-Dailey
-dailies
-dailiness
-daily
-Daimler
-daintily
-daintiness
-dainty
-daiquiri
-dairy
-dairy-maid
-dairy-man
-dairying
-Dairylea
-dairymaid
-dairyman
-dairywoman
-dais
-daisies
-daisy
-Dakar
-Dakota
-dale
-dales
-Daley
-Dalhousie
-Dali
-Dallas
-dalliance
-dallier
-dally
-Dalmatia
-Dalmatian
-Dalton
-Daly
-Dalzell
-dam
-damage
-damageable
-damaged
-damager
-damagers
-damages
-damaging
-Damascene
-Damascus
-damask
-dame
-damming
-dammit
-damn
-damnable
-damnably
-damnation
-damndest
-damned
-damnedest
-damning
-damns
-Damocles
-Damon
-damp
-damp-dry
-dampen
-dampener
-dampens
-damper
-damping
-damply
-dampness
-dams
-damsel
-damselfly
-damsels
-damson
-Dan
-Dana
-Danbury
-dance
-danced
-dancer
-dancers
-dances
-dancing
-dandelion
-dandelions
-dander
-dandified
-dandify
-dandle
-dandriff
-dandruff
-dandy
-Dane
-Danes
-dang
-danger
-dangerous
-dangerously
-dangers
-dangle
-dangled
-dangler
-dangles
-dangling
-Daniel
-Daniels
-Danielson
-Danish
-Danization
-Danizations
-Danize
-Danizes
-dank
-dankly
-dankness
-Danny
-danseuse
-Dante
-Dantzic
-Danube
-Danubian
-Danville
-Danzig
-Daphne
-dapper
-dapple
-dappled
-Dar
-Dardanelles
-dare
-dare-devil
-dared
-daredevil
-daredevilry
-daredeviltry
-darer
-darers
-dares
-daresay
-daring
-daringly
-Darius
-dark
-dark-room
-darke
-darken
-darkener
-darker
-darkest
-darkey
-darkly
-darkness
-darkroom
-darksome
-Darlene
-darling
-darlings
-Darlington
-darn
-darned
-darner
-darning
-darns
-DARPA
-Darrell
-Darrow
-Darry
-dart
-dartboard
-darted
-darter
-darting
-Dartmouth
-darts
-Darwin
-Darwinian
-Darwinism
-Darwinist
-Darwinistic
-Darwinize
-Darwinizes
-dash
-dash!
-dash-board
-dashboard
-dashed
-dasher
-dashers
-dashes
-dashiki
-dashing
-dashingly
-dastard
-dastardliness
-dastardly
-DAT
-data
-databank
-database
-databases
-datagram
-datagrams
-datalogy
-Datamation
-Datamedia
-dataphone
-DATAVISION
-DATAX
-date
-date-book
-date-line
-dated
-DATEL
-dateless
-dateline
-dater
-dates
-dating
-dative
-Datsun
-datum
-daub
-dauber
-Daugherty
-daughter
-daughter-in-law
-daughterly
-daughters
-daughters-in-law
-Daumier
-daunt
-daunted
-daunting
-dauntingly
-dauntless
-dauntlessly
-dauntlessness
-dauphin
-Davao
-Dave
-David
-Davidson
-Davie
-Davies
-Davinich
-Davis
-Davison
-davit
-Davy
-daw
-dawdle
-dawdler
-dawn
-dawned
-dawning
-dawns
-Dawson
-day
-day-boarder
-day-book
-day-break
-day-care
-day-fly
-Day-Glo
-day-labourer
-day-long
-day-time
-day-to-day
-day-tripper
-daybed
-daybreak
-daycare
-daydream
-daydreamer
-daydreaming
-daydreams
-daylight
-daylights
-days
-daytime
-Dayton
-Daytona
-daze
-dazed
-dazedly
-dazzle
-dazzled
-dazzler
-dazzles
-dazzling
-dazzlingly
-dB
-DBDA
-DBMS
-DBOS
-DC
-DCS
-DD
-DDS
-DDT
-de-emphasis
-de-emphasize
-de-escalate
-de-escalation
-de-ice
-de-icer
-de-ration
-deacon
-deaconess
-deacons
-deactivate
-deactivation
-dead
-dead-alive
-dead-beat
-dead-center
-dead-end
-dead-fire
-dead-head
-dead-heat
-dead-light
-dead-lock
-dead-point
-deadbeat
-deadbolt
-deaden
-deadhead
-deadline
-deadlines
-deadliness
-deadlock
-deadlocked
-deadlocking
-deadlocks
-deadly
-deadness
-deadpan
-deadweight
-deadwood
-deaf
-deaf-mute
-deafen
-deafening
-deafeningly
-deafer
-deafest
-deafness
-deal
-dealer
-dealers
-dealership
-dealing
-dealings
-deallocate
-deallocated
-deallocating
-deallocation
-deallocations
-deals
-dealt
-dean
-Deane
-deanery
-Deanna
-deans
-deanship
-dear
-Dearborn
-dearer
-dearest
-dearie
-dearly
-dearness
-dearrest
-dearth
-dearths
-deary
-death
-death-bed
-death-bell
-death-blow
-death-roll
-death-watch
-deathbed
-deathblow
-deathless
-deathlessly
-deathlike
-deathly
-deaths
-deathtrap
-deathwatch
-deb
-debacle
-debar
-debark
-debarkation
-debarment
-debase
-debasement
-debatable
-debate
-debated
-debater
-debaters
-debates
-debating
-debauch
-debauched
-debauchee
-debauchery
-Debbie
-Debby
-debenture
-debiliate
-debilitate
-debilitated
-debilitates
-debilitating
-debilitation
-debility
-DEBIS
-debit
-debited
-debonair
-debonaire
-debonairly
-debonairness
-Deborah
-debouch
-Debra
-debrief
-debriefing
-debris
-Debs
-debt
-debtor
-debts
-debug
-debugged
-debugger
-debuggers
-debugging
-debugs
-debunk
-Debussy
-debut
-debutante
-decade
-decadence
-decadency
-decadent
-decadently
-decades
-decaf
-decaffeinate
-decaffeinated
-decagon
-decagram
-decal
-Decalog
-decalogue
-decamp
-decampment
-decant
-decanter
-decapitate
-decapitation
-decapitator
-decathlon
-Decatur
-decay
-decayed
-decaying
-decays
-Decca
-decease
-deceased
-deceases
-deceasing
-decedent
-deceit
-deceitful
-deceitfully
-deceitfulness
-deceive
-deceived
-deceiver
-deceivers
-deceives
-deceiving
-deceivingly
-decelerate
-decelerated
-decelerates
-decelerating
-deceleration
-decelerator
-December
-Decembers
-decencies
-decency
-decennial
-decent
-decently
-decentralization
-decentralize
-decentralized
-deception
-deceptions
-deceptive
-deceptively
-deceptiveness
-decertify
-decibel
-decidability
-decidable
-decide
-decided
-decidedly
-decides
-deciding
-deciduous
-decile
-deciliter
-decilitre
-decimal
-decimals
-decimate
-decimated
-decimates
-decimating
-decimation
-decimeter
-decimetre
-decipher
-decipherable
-deciphered
-decipherer
-deciphering
-deciphers
-decision
-decision-making
-decision-taking
-decisions
-decisive
-decisively
-decisiveness
-deck
-deck-chair
-deckchair
-decked
-Decker
-deckhand
-decking
-deckings
-decks
-declaim
-declaimer
-declamation
-declamatory
-declarable
-declaration
-declarations
-declarative
-declaratively
-declaratives
-declarator
-declaratory
-declare
-declared
-declarer
-declarers
-declares
-declaring
-declassification
-declassify
-declension
-declination
-declinations
-decline
-declined
-decliner
-decliners
-declines
-declining
-declivity
-DECnet
-decoction
-decode
-decoded
-decoder
-decoders
-decodes
-decoding
-decodings
-decolletage
-decollete
-decollimate
-decolonization
-decolonize
-decolorize
-decolouration
-decolourize
-decolourizer
-decommission
-decompile
-decomposability
-decomposable
-decompose
-decomposed
-decomposes
-decomposing
-decomposition
-decompositions
-decompress
-decompression
-decondition
-decongestant
-deconstruction
-decontaminate
-decontamination
-decontrol
-decor
-decorate
-decorated
-decorates
-decorating
-decoration
-decorations
-decorative
-decoratively
-decorator
-decorous
-decorously
-decorousness
-decorum
-decoupage
-decouple
-decoupled
-decouples
-decoupling
-decoy
-decoys
-decrease
-decreased
-decreases
-decreasing
-decreasingly
-decree
-decreed
-decreeing
-decrees
-decrement
-decremented
-decrementing
-decrements
-decrepit
-decrepitude
-decrescendo
-decriminalization
-decriminalize
-decry
-decrypt
-decrypted
-decrypting
-decryption
-decrypts
-DECstation
-DECsystem
-DECtape
-decussate
-dedicate
-dedicated
-dedicates
-dedicating
-dedication
-dedicator
-dedicatory
-deduce
-deduced
-deducer
-deduces
-deducible
-deducing
-deduct
-deducted
-deductible
-deducting
-deduction
-deductions
-deductive
-deductively
-Dee
-deed
-deeded
-deeding
-deedless
-deeds
-deejay
-deem
-deemed
-deeming
-deemphasize
-deemphasized
-deemphasizes
-deemphasizing
-deems
-deep
-deep-freeze
-deep-froze
-deep-frozen
-deep-fry
-deep-read
-deep-rooted
-deep-sea
-deep-seated
-deep-six
-deepen
-deepened
-deepening
-deepens
-deeper
-deepest
-deeply
-deepmined
-deepness
-deeps
-deer
-deer's-foot
-deer-field
-deer-hound
-deer-skin
-deer-stalking
-Deere
-deerskin
-deescalate
-deescalation
-def
-deface
-defacement
-defacer
-defalcate
-defalcation
-defamation
-defamatory
-defame
-defamer
-default
-defaulted
-defaulter
-defaulting
-defaults
-defeasance
-defeasible
-defeat
-defeated
-defeater
-defeating
-defeatism
-defeatist
-defeats
-defecate
-defecation
-defect
-defected
-defecting
-defection
-defections
-defective
-defectively
-defectiveness
-defector
-defects
-defence
-defend
-defendant
-defendants
-defended
-defendent
-defender
-defenders
-defending
-defends
-defenestrate
-defenestrated
-defenestrates
-defenestrating
-defenestration
-defense
-defenseless
-defenselessly
-defenselessness
-defenses
-defensible
-defensibly
-defensive
-defensively
-defensiveness
-defer
-deference
-deferential
-deferentially
-deferment
-deferments
-deferrable
-deferral
-deferred
-deferrer
-deferrers
-deferring
-defers
-defiance
-defiant
-defiantly
-deficiencies
-deficiency
-deficient
-deficit
-deficits
-defied
-defies
-defile
-defilement
-defiler
-defiling
-definable
-define
-defined
-definer
-defines
-defining
-definite
-definitely
-definiteness
-definition
-definitional
-definitions
-definitive
-definitively
-deflate
-deflater
-deflation
-deflationary
-deflect
-deflection
-deflective
-deflector
-deflexion
-defloration
-deflower
-defocus
-Defoe
-defog
-defogger
-defoliant
-defoliate
-defoliation
-defoliator
-deforest
-deforestation
-deform
-deformation
-deformations
-deformed
-deformities
-deformity
-defraud
-defrauder
-defray
-defrayal
-defrock
-defrost
-defroster
-deft
-deftly
-deftness
-defunct
-defuse
-defy
-defying
-degauss
-degeneracy
-degenerate
-degenerated
-degenerates
-degenerating
-degeneration
-degenerative
-degradable
-degradation
-degradations
-degrade
-degraded
-degrades
-degrading
-degree
-degrees
-degust
-degustation
-dehumanization
-dehumanize
-dehumanizing
-dehumidifier
-dehumidify
-dehydrate
-dehydrated
-dehydration
-dehydrator
-dehydrogenate
-deice
-deicer
-deification
-deify
-deign
-deigned
-deigning
-deigns
-Deimos
-Deirdre
-Deirdres
-deism
-deist
-deistic
-deities
-deity
-deixis
-deject
-dejecta
-dejected
-dejectedly
-dejection
-DeKalb
-DeKastere
-Del
-delaine
-Delaney
-Delano
-Delaware
-Delawarean
-delay
-delayed
-delayer
-delaying
-delays
-deleatur
-delectable
-delectably
-delectation
-delegacy
-delegate
-delegated
-delegates
-delegating
-delegation
-delegations
-delete
-deleted
-deleter
-deleterious
-deletes
-deleting
-deletion
-deletions
-delftware
-Delhi
-deli
-Delia
-deliberate
-deliberated
-deliberately
-deliberateness
-deliberates
-deliberating
-deliberation
-deliberations
-deliberative
-deliberator
-deliberators
-delicacies
-delicacy
-delicate
-delicately
-delicateness
-delicatessen
-delicious
-deliciously
-deliciousness
-delight
-delighted
-delightedly
-delightful
-delightfully
-delighting
-delights
-Delilah
-delimit
-delimitation
-delimited
-delimiter
-delimiters
-delimiting
-delimits
-delineament
-delineate
-delineated
-delineates
-delineating
-delineation
-delinquency
-delinquent
-delinquently
-deliquesce
-deliquescent
-deliria
-delirious
-deliriously
-deliriousness
-delirium
-deliver
-deliverable
-deliverables
-deliverance
-delivered
-deliverer
-deliverers
-deliveries
-delivering
-delivers
-delivery
-delivery-book
-delivery-note
-delivery-order
-delivery-van
-deliveryman
-dell
-Della
-dells
-Dellwood
-Delmarva
-Delmarwa
-delouse
-Delphi
-Delphic
-Delphically
-delphinium
-Delphinus
-delta
-deltas
-delude
-deluded
-deludes
-deluding
-deluge
-deluged
-deluges
-delusion
-delusional
-delusions
-delusive
-delusively
-deluxe
-delve
-delver
-delves
-delving
-Dem
-demagnetization
-demagnetize
-demagnify
-demagog
-demagogic
-demagogue
-demagoguery
-demagogy
-demand
-demanded
-demander
-demanding
-demandingly
-demands
-demarcate
-demarcation
-demean
-demeaning
-demeanor
-demeanour
-demented
-dementedly
-dementia
-demerit
-demesne
-Demeter
-demi-semiquaver
-demigod
-demijohn
-demilitarization
-demilitarize
-demimondaine
-demimonde
-demise
-demission
-demitasse
-demo
-demobbed
-demobilization
-demobilize
-democracies
-democracy
-democrat
-democratic
-democratical
-democratically
-democratization
-democratize
-democrats
-demode
-demodulate
-demodulation
-demodulator
-demographer
-demographic
-demographically
-demographics
-demography
-demolish
-demolished
-demolishes
-demolition
-demon
-demonetization
-demonetize
-demoniac
-demoniacal
-demoniacally
-demonic
-demonically
-demons
-demonstrable
-demonstrably
-demonstrate
-demonstrated
-demonstrates
-demonstrating
-demonstration
-demonstrationist
-demonstrations
-demonstrative
-demonstratively
-demonstrativeness
-demonstrator
-demonstrators
-demoralization
-demoralize
-demoralized
-demoralizes
-demoralizing
-DeMorgan
-Demosthenes
-demote
-demotic
-demotion
-demountable
-Dempsey
-demulcent
-demultiplex
-demultiplexed
-demultiplexer
-demultiplexers
-demultiplexing
-demur
-demure
-demurely
-demureness
-demurrage
-demurral
-demurrer
-demystification
-demystify
-demythologize
-den
-denationalize
-denature
-denazification
-denazify
-dendrite
-Deneb
-Denebola
-Deneen
-dengue
-deniable
-denial
-denials
-denied
-denier
-denies
-denigrate
-denigrated
-denigrates
-denigrating
-denigration
-denim
-denims
-Denizen
-Denmark
-Dennis
-Denny
-denominate
-denomination
-denominational
-denominations
-denominator
-denominators
-denotable
-denotation
-denotational
-denotationally
-denotations
-denotative
-denote
-denoted
-denotes
-denoting
-denouement
-denounce
-denounced
-denouncement
-denounces
-denouncing
-dens
-dense
-densely
-denseness
-denser
-densest
-densities
-density
-dent
-dental
-dentally
-dentate
-dented
-dentifrice
-dentin
-dentine
-denting
-dentist
-dentistry
-dentists
-dentition
-Denton
-dents
-denture
-dentures
-denuclearize
-denudate
-denudation
-denude
-denumerable
-denunciate
-denunciation
-Denver
-deny
-denying
-deodorant
-deodorization
-deodorize
-deodorizer
-deoxyribonucleic
-depart
-departed
-departing
-department
-departmental
-departmentalization
-departmentalize
-departmentally
-departments
-departs
-departure
-departures
-depend
-dependability
-dependable
-dependably
-dependance
-dependant
-depended
-dependence
-dependencies
-dependency
-dependent
-dependently
-dependents
-depending
-depends
-depersonalize
-depict
-depicted
-depicting
-depiction
-depicts
-depilatory
-deplane
-deplete
-depleted
-depletes
-depleting
-depletion
-depletions
-deplorable
-deplorably
-deplore
-deplored
-deplores
-deploring
-deploy
-deployed
-deploying
-deployment
-deployments
-deploys
-deplume
-depolarization
-depolarize
-depoliticize
-deponent
-depopulate
-depopulation
-deport
-deportation
-deportee
-deportment
-deposal
-depose
-deposed
-deposes
-deposit
-depositary
-deposited
-depositing
-deposition
-depositions
-depositor
-depositors
-depository
-deposits
-depot
-depots
-depravation
-deprave
-depraved
-depravity
-deprecate
-deprecating
-deprecation
-deprecatory
-depreciate
-depreciated
-depreciates
-depreciation
-depredate
-depredation
-depress
-depressant
-depressed
-depresses
-depressing
-depressingly
-depression
-depressions
-depressive
-depressor
-deprivation
-deprivations
-deprive
-deprived
-deprives
-depriving
-deprogram
-depth
-depths
-deputation
-depute
-deputies
-deputize
-deputy
-dequeue
-dequeued
-dequeues
-dequeuing
-derail
-derailed
-derailing
-derailleur
-derailment
-derails
-derange
-deranged
-derangement
-Derbyshire
-dereference
-deregulate
-deregulated
-deregulation
-Derek
-derelict
-dereliction
-deride
-derision
-derisive
-derisively
-derisiveness
-derisory
-derivable
-derivation
-derivations
-derivative
-derivatives
-derive
-derived
-derives
-deriving
-dermal
-dermatitis
-dermatological
-dermatologist
-dermatology
-dermis
-derogate
-derogation
-derogatorily
-derogatory
-derrick
-derriere
-derring-do
-derringer
-dervish
-Des
-desalinate
-desalination
-desalinization
-desalinize
-desalt
-descale
-descant
-Descartes
-descend
-descendand
-descendant
-descendants
-descended
-descendent
-descender
-descenders
-descending
-descends
-descent
-descents
-descramble
-describable
-describe
-described
-describer
-describes
-describing
-description
-descriptions
-descriptive
-descriptively
-descriptiveness
-descriptives
-descriptor
-descriptors
-descry
-desecrate
-desecration
-desegregate
-desegregation
-desensitization
-desensitize
-desert
-deserted
-deserter
-deserters
-deserting
-desertion
-desertions
-deserts
-deserve
-deserved
-deservedly
-deserves
-deserving
-deservingly
-deservings
-deshabille
-desiccant
-desiccate
-desiccation
-desiccator
-desiderata
-desiderate
-desideratum
-design
-designate
-designated
-designates
-designating
-designation
-designations
-designator
-designators
-designatum
-designed
-designer
-designers
-designing
-designs
-desirability
-desirable
-desirableness
-desirably
-desire
-desired
-desires
-desiring
-desirous
-desist
-desk
-deskill
-desks
-desktop
-Desmond
-desolate
-desolately
-desolateness
-desolation
-desolations
-despair
-despaired
-despairing
-despairingly
-despairs
-despatch
-despatched
-desperado
-desperate
-desperately
-desperateness
-desperation
-despicable
-despicably
-despise
-despised
-despises
-despising
-despite
-despiteful
-despoil
-despoiler
-despoilment
-despoliation
-despondence
-despondency
-despondent
-despondently
-despot
-despotic
-despotically
-despotism
-despots
-dessert
-dessert-spoon
-desserts
-destabilization
-destabilize
-destination
-destinations
-destine
-destined
-destinies
-destiny
-destitute
-destitution
-destroy
-destroyed
-destroyer
-destroyers
-destroying
-destroys
-destruct
-destructibility
-destructible
-destruction
-destructions
-destructive
-destructively
-destructiveness
-destructor
-destuff
-destuffing
-destuffs
-desuetude
-desultorily
-desultory
-desynchronize
-detach
-detachable
-detached
-detacher
-detaches
-detaching
-detachment
-detachments
-detail
-detailed
-detailing
-details
-detain
-detained
-detainee
-detaining
-detainment
-detains
-detect
-detectable
-detectably
-detected
-detectible
-detecting
-detection
-detections
-detective
-detectives
-detector
-detectors
-detects
-detente
-detention
-deter
-detergent
-deteriorate
-deteriorated
-deteriorates
-deteriorating
-deterioration
-determent
-determinable
-determinacy
-determinant
-determinants
-determinate
-determinately
-determination
-determinations
-determinative
-determine
-determined
-determinedly
-determiner
-determiners
-determines
-determining
-determinism
-deterministic
-deterministically
-deterred
-deterrence
-deterrent
-deterring
-detest
-detestable
-detestably
-detestation
-detested
-dethrone
-dethronement
-detonate
-detonation
-detonator
-detour
-detox
-detoxification
-detoxify
-detract
-detraction
-detractor
-detractors
-detracts
-detriment
-detrimental
-detrimentally
-detrition
-detritus
-Detroit
-deuce
-deuce!
-deus
-deuterium
-Deuteronomy
-Deutsch
-Deutschmark
-devaluation
-devalue
-devastate
-devastated
-devastates
-devastating
-devastatingly
-devastation
-devastator
-develop
-developed
-developer
-developers
-developing
-development
-developmental
-developmentally
-developments
-develops
-deviance
-deviancy
-deviant
-deviantly
-deviants
-deviate
-deviated
-deviates
-deviating
-deviation
-deviationist
-deviations
-device
-devices
-devil
-devil!
-devil-dodger
-devil-may-care
-deviled
-devilish
-devilishly
-devilishness
-devilkin
-devilled
-devilment
-devilry
-devils
-deviltry
-devious
-deviously
-deviousness
-devise
-devised
-devises
-devising
-devisings
-devitalize
-devoid
-devolution
-devolve
-Devon
-Devonian
-Devonshire
-devote
-devoted
-devotedly
-devotee
-devotees
-devotes
-devoting
-devotion
-devotional
-devotions
-devour
-devoured
-devourer
-devours
-devout
-devoutly
-devoutness
-dew
-dew-berry
-dew-lap
-dew-point
-dewberry
-dewclaw
-dewdrop
-dewdrops
-Dewey
-dewiness
-Dewitt
-dewlap
-dewy
-Dexedrine
-dexter
-dexterity
-dexterous
-dexterously
-dexterousness
-dextran
-dextrone
-dextrose
-dextrous
-DF
-DFR
-DH
-Dhabi
-Dhaka
-dhoti
-dhow
-DI
-diabetes
-diabetic
-diabolic
-diabolical
-diabolically
-diachronic
-diacritic
-diacritical
-diadem
-diaereses
-diaeresis
-diafilm
-diagnosable
-diagnose
-diagnosed
-diagnoses
-diagnosing
-diagnosis
-diagnostic
-diagnostically
-diagnostician
-diagnostics
-diagonal
-diagonally
-diagonals
-diagram
-diagrammable
-diagrammatic
-diagrammatically
-diagrammed
-diagrammer
-diagrammers
-diagramming
-diagrams
-diagraph
-dial
-dial-plate
-dialect
-dialectal
-dialectic
-dialectic(s)
-dialectical
-dialectics
-dialects
-dialed
-dialer
-dialers
-dialing
-dialog
-dialogical
-dialogs
-dialogue
-dialogues
-dials
-dialup
-dialyses
-dialysis
-diamagnetic
-diameter
-diameters
-diametric
-diametrical
-diametrically
-diamond
-diamondback
-diamonds
-Diana
-Diane
-Dianne
-diapason
-diaper
-diapers
-diaphanous
-diaphragm
-diaphragmatic
-diaphragms
-diapositive
-diaries
-diarist
-diarrhea
-diarrhoea
-diarrhoeia
-diary
-diascope
-Diaspora
-diastase
-diastole
-diastolic
-diathermy
-diatom
-diatomic
-diatonic
-diatribe
-diatribes
-diazo-film
-diazo-print
-diazotype
-dibble
-dibs
-dice
-dice-box
-dice-insulator
-diced
-dicey
-dichotomize
-dichotomous
-dichotomy
-dichromatic
-dichromic
-dick
-dickens
-dickens!
-Dickensian
-dicker
-Dickerson
-dickey
-Dickie
-Dickinson
-Dickson
-dicky
-dicotyledon
-dicotyledonous
-dicta
-dictaphone
-dictate
-dictated
-dictates
-dictating
-dictation
-dictations
-dictator
-dictatorial
-dictatorially
-dictators
-dictatorship
-diction
-dictionaries
-dictionary
-dictograph
-dictum
-dictums
-did
-didactic
-didactically
-didactics
-diddle
-diddler
-didn't
-didst
-die
-die-hard
-Diebold
-died
-Diego
-diehard
-dielectric
-dielectrics
-diem
-diereses
-dieresis
-dies
-diesel
-diesis
-diet
-dietary
-dieter
-dieters
-dietetic
-dietetics
-dietician
-dietitian
-dietitians
-Dietrich
-diets
-Dietz
-differ
-differed
-difference
-differences
-different
-differentia
-differentiable
-differentiae
-differential
-differentials
-differentiate
-differentiated
-differentiates
-differentiating
-differentiation
-differentiations
-differentiators
-differently
-differer
-differers
-differing
-differs
-difficult
-difficulties
-difficultly
-difficulty
-diffidence
-diffident
-diffidently
-diffract
-diffraction
-diffuse
-diffused
-diffusely
-diffuseness
-diffuser
-diffusers
-diffuses
-diffusible
-diffusing
-diffusion
-diffusions
-diffusive
-dig
-digerati
-digest
-digested
-digestibility
-digestible
-digesting
-digestion
-digestive
-digests
-digger
-diggers
-digging
-diggings
-digit
-digital
-digitalis
-digitally
-digitization
-digitize
-digitized
-digitizer
-digitizes
-digitizing
-digits
-dignified
-dignify
-dignitaries
-dignitary
-dignities
-dignity
-digram
-digraph
-digress
-digressed
-digresses
-digressing
-digression
-digressions
-digressive
-digs
-dihedral
-Dijkstra
-Dijon
-dike
-dikes
-dilacerate
-dilapidate
-dilapidated
-dilapidation
-dilatation
-dilate
-dilated
-dilates
-dilating
-dilation
-dilator
-dilatory
-dildo
-dilemma
-dilemmas
-dilettante
-dilettanti
-dilettantish
-dilettantism
-diligence
-diligent
-diligently
-dill
-Dillon
-dilly
-dilly-dally
-dillydally
-dilogarithm
-diluent
-dilute
-diluted
-dilutee
-dilutes
-diluting
-dilution
-dim
-DiMaggio
-dime
-dimension
-dimensional
-dimensionality
-dimensionally
-dimensioned
-dimensioning
-dimensions
-dimes
-diminish
-diminished
-diminishes
-diminishing
-diminuendo
-diminution
-diminutive
-dimity
-dimly
-dimmed
-dimmer
-dimmers
-dimmest
-dimming
-dimness
-dimple
-dimpled
-dimply
-dims
-dimwit
-dimwitted
-din
-Dinah
-dinar
-dine
-dined
-diner
-diners
-dines
-dinette
-ding
-ding-a-ling
-ding-dong
-dingbat
-dingbats
-dingdong
-dinghy
-dingily
-dinginess
-dingle
-dingo
-dingus
-dingy
-dining
-dining-room
-dinkum
-dinky
-dinner
-dinners
-dinnertime
-dinnerware
-dinning-car
-dinosaur
-dint
-diocesan
-diocese
-Diocletian
-diode
-diodes
-Diogenes
-Dion
-Dionysian
-Dionysus
-Diophantine
-diopter
-diorama
-dioxide
-dioxin
-dip
-diphtheria
-diphthong
-diploid
-diploma
-diplomacy
-diplomas
-diplomat
-diplomatic
-diplomatically
-diplomatics
-diplomatist
-diplomats
-dipole
-dipped
-dipper
-dippermouth
-dippers
-dipping
-dippings
-dippy
-dips
-dipso
-dipsomania
-dipsomaniac
-dipstick
-dipterous
-diptych
-Dirac
-dire
-direct
-directed
-directing
-direction
-directional
-directionality
-directionally
-directions
-directive
-directives
-directly
-directness
-director
-directorate
-directorial
-directories
-directors
-directorship
-directory
-directrices
-directrix
-directs
-direful
-direly
-dirge
-dirges
-Dirichlet
-dirigible
-dirk
-dirndl
-DIRS
-dirt
-dirt-cheap
-dirt-poor
-dirtier
-dirtiest
-dirtily
-dirtiness
-dirts
-dirty
-disabilities
-disability
-disable
-disabled
-disablement
-disabler
-disablers
-disables
-disabling
-disabuse
-disaccord
-disadvantage
-disadvantaged
-disadvantageous
-disadvantageously
-disadvantages
-disaffect
-disaffected
-disaffection
-disaffiliate
-disaffiliation
-disaffirm
-disagree
-disagreeable
-disagreeableness
-disagreeably
-disagreed
-disagreeing
-disagreement
-disagreements
-disagrees
-disallow
-disallowed
-disallowing
-disallows
-disambiguate
-disambiguated
-disambiguates
-disambiguating
-disambiguation
-disambiguations
-disappear
-disappearance
-disappearances
-disappeared
-disappearing
-disappears
-disappoint
-disappointed
-disappointing
-disappointingly
-disappointment
-disappointments
-disapprobation
-disapproval
-disapprove
-disapproved
-disapproves
-disapprovingly
-disarm
-disarmament
-disarmed
-disarming
-disarmingly
-disarms
-disarrange
-disarrangement
-disarray
-disassemble
-disassembled
-disassembles
-disassembling
-disassembly
-disassociate
-disassociation
-disaster
-disasters
-disastrous
-disastrously
-disavow
-disavowal
-disband
-disbanded
-disbanding
-disbandment
-disbands
-disbar
-disbarment
-disbelief
-disbelieve
-disbeliever
-disbelieving
-disburden
-disbursal
-disburse
-disbursed
-disbursement
-disbursements
-disburses
-disbursing
-disc
-discard
-discarded
-discarding
-discards
-discern
-discerned
-discernibility
-discernible
-discernibly
-discerning
-discerningly
-discernment
-discerns
-discharge
-discharged
-discharges
-discharging
-disciple
-disciples
-discipleship
-disciplinarian
-disciplinary
-discipline
-disciplined
-disciplines
-disciplining
-disclaim
-disclaimed
-disclaimer
-disclaims
-disclose
-disclosed
-discloses
-disclosing
-disclosure
-disclosures
-discman
-disco
-discography
-discolor
-discoloration
-discolour
-discombobulate
-discombobulation
-discomfit
-discomfiture
-discomfort
-discomfortable
-discommode
-discompose
-discomposure
-disconcert
-disconcerted
-disconcerting
-disconcertingly
-disconnect
-disconnected
-disconnectedly
-disconnectedness
-disconnecting
-disconnection
-disconnects
-disconsolate
-disconsolately
-discontent
-discontented
-discontentedly
-discontentment
-discontinuance
-discontinuation
-discontinue
-discontinued
-discontinues
-discontinuities
-discontinuity
-discontinuous
-discontinuously
-discord
-discordance
-discordant
-discordantly
-discotheque
-discount
-discounted
-discountenance
-discounter
-discounting
-discounts
-discourage
-discouraged
-discouragement
-discourages
-discouraging
-discouragingly
-discourse
-discourses
-discourteous
-discourteously
-discourtesy
-discover
-discovered
-discoverer
-discoverers
-discoveries
-discovering
-discovers
-discovery
-discredit
-discreditable
-discreditably
-discredited
-discreet
-discreetly
-discreetness
-discrepancies
-discrepancy
-discrepant
-discrete
-discretely
-discreteness
-discretion
-discretionary
-discriminant
-discriminate
-discriminated
-discriminates
-discriminating
-discrimination
-discriminator
-discriminatory
-discs
-discursive
-discursively
-discursiveness
-discus
-discuss
-discussant
-discussed
-discusses
-discussing
-discussion
-discussions
-disdain
-disdainful
-disdainfully
-disdaining
-disdains
-disease
-diseased
-diseases
-disembark
-disembarkation
-disembarkment
-disembodied
-disembodiment
-disembody
-disembowel
-disembowelment
-disempower
-disenchant
-disenchanted
-disenchantment
-disencumber
-disenfranchise
-disenfranchisement
-disengage
-disengaged
-disengagement
-disengages
-disengaging
-disentangle
-disentanglement
-disentangling
-disequilibrium
-disestablish
-disestablishment
-disesteem
-disfavor
-disfavour
-disfigure
-disfigured
-disfigurement
-disfigures
-disfiguring
-disfranchise
-disfranchisement
-disgorge
-disgrace
-disgraced
-disgraceful
-disgracefully
-disgracefulness
-disgraces
-disgruntle
-disgruntled
-disgruntlement
-disguise
-disguised
-disguises
-disgust
-disgusted
-disgustedly
-disgustful
-disgusting
-disgustingly
-disgusts
-dish
-dish-cloth
-dish-cover
-dish-towel
-dish-washer
-dishabille
-disharmonious
-disharmony
-dishcloth
-dishearten
-disheartened
-disheartening
-dishearteningly
-dished
-dishes
-dishevel
-disheveled
-dishevelled
-dishevelment
-dishing
-dishonest
-dishonestly
-dishonesty
-dishonor
-dishonorable
-dishonorably
-dishonored
-dishonoring
-dishonors
-dishonour
-dishonourable
-dishpan
-dishrag
-dishtowel
-dishwasher
-dishwashers
-dishwashing
-dishwater
-disillusion
-disillusioned
-disillusioning
-disillusionize
-disillusionment
-disillusionments
-disinclination
-disincline
-disinclined
-disinfect
-disinfectant
-disinfection
-disinfestation
-disinflation
-disinformation
-disingenuous
-disingenuously
-disinherit
-disinheritance
-disintegrate
-disintegration
-disinter
-disinterest
-disinterested
-disinterestedly
-disinterestedness
-disinterment
-disinvest
-disinvestment
-disjoin
-disjoint
-disjointed
-disjointedly
-disjointedness
-disjointly
-disjointness
-disjunct
-disjunction
-disjunctions
-disjunctive
-disjunctively
-disjuncts
-disk
-diskette
-diskettes
-disks
-dislike
-disliked
-dislikes
-disliking
-dislocate
-dislocated
-dislocates
-dislocating
-dislocation
-dislocations
-dislodge
-dislodged
-disloyal
-disloyally
-disloyalty
-dismal
-dismally
-dismantle
-dismantlement
-dismay
-dismayed
-dismaying
-dismember
-dismembered
-dismemberment
-dismembers
-dismiss
-dismiss!
-dismissal
-dismissals
-dismissed
-dismisser
-dismissers
-dismisses
-dismissing
-dismission
-dismissive
-dismissively
-dismount
-dismounted
-dismounting
-dismounts
-Disney
-Disneyland
-disobedent
-disobedience
-disobedient
-disobediently
-disobey
-disobeyed
-disobeying
-disobeys
-disoblige
-disobliging
-disorder
-disordered
-disorderliness
-disorderly
-disorders
-disorganization
-disorganize
-disorganized
-disorient
-disorientate
-disorientation
-disown
-disowned
-disowning
-disowns
-disparage
-disparagement
-disparaging
-disparagingly
-disparate
-disparately
-disparities
-disparity
-dispassion
-dispassionate
-dispassionately
-dispatch
-dispatch-note
-dispatched
-dispatcher
-dispatchers
-dispatches
-dispatching
-dispel
-dispell
-dispelled
-dispelling
-dispels
-dispensable
-dispensary
-dispensation
-dispensations
-dispensatory
-dispense
-dispensed
-dispenser
-dispensers
-dispenses
-dispensing
-dispersal
-disperse
-dispersed
-disperses
-dispersing
-dispersion
-dispersions
-dispirit
-dispirited
-displace
-displaced
-displacement
-displacements
-displaces
-displacing
-display
-displayable
-displayed
-displayer
-displaying
-displays
-displease
-displeased
-displeases
-displeasing
-displeasure
-disport
-disposable
-disposal
-disposals
-dispose
-disposed
-disposer
-disposes
-disposing
-disposition
-dispositions
-dispossess
-dispossessed
-dispossession
-dispraise
-disproof
-disproportion
-disproportional
-disproportionate
-disproportionately
-disprovable
-disprove
-disproved
-disproves
-disproving
-disputable
-disputably
-disputant
-disputation
-disputatious
-disputatiously
-disputative
-dispute
-disputed
-disputer
-disputers
-disputes
-disputing
-disqualification
-disqualified
-disqualifies
-disqualify
-disqualifying
-disquiet
-disquieting
-disquietude
-disquisition
-Disraeli
-disregard
-disregarded
-disregardful
-disregarding
-disregards
-disrelish
-disrepair
-disreputable
-disreputably
-disreputation
-disrepute
-disrespect
-disrespectful
-disrespectfully
-disrobe
-disrupt
-disrupted
-disrupting
-disruption
-disruptions
-disruptive
-disruptively
-disrupts
-diss
-dissarrange
-dissatisfaction
-dissatisfactions
-dissatisfactory
-dissatisfied
-dissatisfy
-dissect
-dissection
-dissector
-dissects
-dissemblance
-dissemble
-dissembler
-disseminate
-disseminated
-disseminates
-disseminating
-dissemination
-dissension
-dissensions
-dissent
-dissented
-dissenter
-dissenters
-dissenting
-dissents
-dissert
-dissertation
-dissertations
-disservice
-dissever
-dissidence
-dissident
-dissidents
-dissimilar
-dissimilarities
-dissimilarity
-dissimilitude
-dissimulate
-dissimulation
-dissimulator
-dissipate
-dissipated
-dissipates
-dissipating
-dissipation
-dissociate
-dissociated
-dissociates
-dissociating
-dissociation
-dissoluble
-dissolute
-dissolutely
-dissoluteness
-dissolution
-dissolutions
-dissolve
-dissolved
-dissolvent
-dissolves
-dissolving
-dissonance
-dissonant
-dissuade
-dissuasion
-dissuasive
-distaff
-distal
-distally
-distance
-distances
-distant
-distantly
-distaste
-distasteful
-distastefully
-distastefulness
-distastes
-distemper
-distempered
-distempers
-distend
-distension
-distention
-distil
-distill
-distillate
-distillation
-distilled
-distiller
-distillers
-distillery
-distilling
-distills
-distinct
-distinction
-distinctions
-distinctive
-distinctively
-distinctiveness
-distinctly
-distinctness
-distinguish
-distinguishable
-distinguished
-distinguisher
-distinguishes
-distinguishing
-distort
-distorted
-distorting
-distortion
-distortionist
-distortions
-distorts
-distract
-distracted
-distractedly
-distracting
-distraction
-distractions
-distracts
-distrain
-distrait
-distraught
-distress
-distress-gun
-distress-rocket
-distressed
-distresses
-distressful
-distressing
-distressingly
-distributary
-distribute
-distributed
-distributes
-distributing
-distribution
-distributional
-distributions
-distributive
-distributively
-distributivity
-distributor
-distributors
-district
-districts
-distrust
-distrusted
-distrustful
-distrustfully
-disturb
-disturbance
-disturbances
-disturbed
-disturber
-disturbing
-disturbingly
-disturbs
-disunion
-disunite
-disunity
-disuse
-disused
-disvalue
-ditch
-ditches
-dither
-ditherer
-dithering
-ditsy
-ditto
-ditty
-ditz
-Ditzel
-ditzy
-diuretic
-diurnal
-diurnally
-diva
-divalent
-divan
-divans
-divaricate
-dive
-dive-bomber
-dived
-diver
-diverge
-diverged
-divergence
-divergences
-divergent
-diverges
-diverging
-divers
-diverse
-diversely
-diverseness
-diversifiable
-diversification
-diversified
-diversifies
-diversiform
-diversify
-diversifying
-diversion
-diversionary
-diversionist
-diversions
-diversities
-diversity
-divert
-diverted
-diverticulitis
-diverting
-diverts
-dives
-divest
-divested
-divesting
-divestiture
-divestment
-divests
-dividable
-divide
-divided
-dividend
-dividends
-divider
-dividers
-divides
-dividing
-divination
-divine
-divinely
-diviner
-diving
-diving-bell
-divining
-divinities
-divinity
-divisibility
-divisible
-division
-divisional
-divisions
-divisive
-divisively
-divisiveness
-divisor
-divisors
-divorce
-divorced
-divorcee
-divorcement
-divot
-divulge
-divulged
-divulges
-divulging
-divulsion
-divvy
-Dixie
-Dixiecrats
-Dixon
-dizzily
-dizziness
-dizzy
-dizzying
-DJ
-Djakarta
-djellaba
-djellabah
-Djibouti
-djinn
-DMD
-Dmitri
-DMZ
-DNA
-Dnepr
-Dnepropetrovsk
-Dnieper
-Dniester
-Dnipropetrovsk
-do
-do-all
-do-gooder
-do-it-yourself
-do-it-yourselfer
-do-nothing
-DOA
-doable
-DOB
-Dobbs
-Doberman
-docent
-docile
-docilely
-docility
-dock
-dock-dues
-dock-warrant
-dock-yard
-dockage
-docked
-docket
-docks
-dockside
-dockworker
-dockyard
-doctor
-doctoral
-doctorate
-doctorates
-doctored
-doctors
-doctrinaire
-doctrinal
-doctrine
-doctrines
-docudrama
-document
-documentalist
-documentaries
-documentarist
-documentary
-documentation
-documentations
-documentator
-documented
-documenter
-documenters
-documenting
-documentography
-documents
-docuterm
-DOD
-Dodd
-dodder
-doddering
-dodecahedra
-dodecahedral
-dodecahedron
-dodge
-dodged
-dodger
-dodgers
-dodging
-Dodgson
-Dodington
-dodo
-Dodson
-doe
-doer
-doers
-does
-doeskin
-doesn't
-doff
-dog
-dog's-ear
-dog-cart
-dog-cheap
-dog-collar
-dog-ear
-dog-eared
-dog-ears
-dog-eat-dog
-dog-flea
-dog-fox
-dog-grass
-dog-kennel
-dog-like
-dog-nap
-dog-tired
-dog-tooth
-dogcart
-dogcatcher
-dogear
-dogeared
-dogfight
-dogfish
-dogged
-doggedly
-doggedness
-doggerel
-doggery
-doggie
-dogging
-doggone
-doggoned
-doggy
-doghouse
-dogie
-dogleg
-dogma
-dogmas
-dogmata
-dogmatic
-dogmatically
-dogmatism
-dogmatist
-dogs
-dogsbody
-Dogtown
-dogtrot
-dogwood
-dogy
-doh
-Doha
-Doherty
-doily
-doing
-doings
-Dolan
-Dolby
-doldrum
-doldrums
-dole
-doled
-doleful
-dolefully
-dolefulness
-doles
-doll
-dollar
-dollars
-dollies
-dollop
-dolls
-dolly
-dolmen
-dolomite
-dolor
-Dolores
-dolorous
-dolorously
-dolphin
-dolphins
-dolt
-doltish
-doltishly
-doltishness
-domain
-domains
-dome
-domed
-Domenico
-domes
-domesday
-domestic
-domestically
-domesticate
-domesticated
-domesticates
-domesticating
-domestication
-domesticity
-domicile
-domiciled
-domiciliary
-domiciliate
-dominance
-dominancy
-dominant
-dominantly
-dominate
-dominated
-dominates
-dominating
-domination
-dominative
-dominator
-dominatrix
-domineer
-domineering
-domineeringly
-Domingo
-Dominic
-Dominica
-Dominican
-Dominicans
-Dominick
-dominion
-Dominique
-domino
-dominoes
-don
-don't
-dona
-Donahue
-Donald
-Donaldson
-donate
-donated
-donates
-donating
-donation
-donator
-done
-Done!
-Doneck
-Donetsk
-dong
-dongle
-donkey
-donkeys
-Donna
-Donne
-Donnelly
-Donner
-donnybrook
-donor
-Donovan
-dons
-donut
-doodad
-doodle
-doodlebug
-doodler
-doohickey
-Dooley
-Doolittle
-doom
-doomed
-dooming
-dooms
-doomsday
-door
-door-bell
-door-handle
-door-keeper
-door-leaf
-door-mat
-door-money
-door-plate
-door-post
-door-sill
-door-to-door
-door-way
-doorbell
-doorkeeper
-doorknob
-doorman
-doormat
-doormen
-doorplate
-doors
-doorstep
-doorsteps
-doorstop
-doorway
-doorways
-dooryard
-dopa
-dopadnout
-dope
-doped
-doper
-dopers
-dopes
-dopey
-dopiness
-doping
-Doppler
-dopy
-Dora
-Dorado
-Dorcas
-Dorchester
-Doreen
-Doria
-Doric
-Doricize
-Doricizes
-Doris
-dork
-dorky
-dorm
-dormancy
-dormant
-dormer
-dormice
-dormitories
-dormitory
-dormouse
-Dorothea
-Dorothy
-dorsal
-dorsally
-dorse
-Dorset
-Dortmund
-dory
-DOS
-dosage
-dose
-dosed
-doses
-dosimeter
-doss
-dossier
-dossiers
-dost
-Dostoevsky
-dot
-dot-matrix
-dotage
-dotard
-dotation
-dote
-doted
-doter
-dotes
-doth
-doting
-dotingly
-dots
-dotted
-dotting
-dotty
-double
-double-barreled
-double-blind
-double-breasted
-double-check
-double-clock
-double-columned
-double-cross
-double-crosser
-double-date
-double-dealer
-double-dealing
-double-decker
-double-digit
-double-dip
-double-Dutch
-double-edged
-double-faced
-double-header
-double-jointed
-double-knit
-double-minded
-double-park
-double-quick
-double-reed
-double-talk
-doubled
-Doubleday
-doubleheader
-doubler
-doublers
-doubles
-doublespeak
-doublet
-doubleton
-doublets
-doubleword
-doubling
-doubloon
-doubly
-doubt
-doubtable
-doubted
-doubter
-doubters
-doubtful
-doubtfully
-doubtfulness
-doubting
-doubtingly
-doubtless
-doubtlessly
-doubts
-douche
-Doug
-dough
-doughboy
-Dougherty
-doughnut
-doughnuts
-doughty
-doughy
-Douglas
-Douglass
-dour
-dourly
-dourness
-dousabel
-douse
-dove
-dove-cot
-dove-cote
-dovecote
-doves
-dovetail
-dovish
-Dow
-dowager
-dowdily
-dowdiness
-dowdy
-dowel
-dower
-dowery
-Dowling
-down
-down-and-out
-down-bow
-down-hearted
-down-home
-down-to-earth
-downbeat
-downcast
-downed
-downer
-downers
-Downey
-downfall
-downfallen
-downgrade
-downhearted
-downheartedly
-downheartedness
-downhill
-Downing
-downlink
-downlinks
-download
-downloaded
-downloading
-downloads
-downplay
-downplayed
-downplaying
-downplays
-downpour
-downrange
-downright
-downriver
-Downs
-downscale
-downside
-downsize
-downsizing
-downspout
-downstage
-downstairs
-downstate
-downstream
-downswing
-downthrow
-downtime
-downtown
-downtowns
-downtrain
-downtrodden
-downturn
-downward
-downward(s)
-downwards
-downwind
-downy
-dowry
-dowse
-dowser
-doxology
-doyen
-doyenne
-Doyle
-doze
-dozed
-dozen
-dozens
-dozenth
-dozes
-dozing
-DP
-DPH
-DPT
-Dr
-drab
-drably
-drabness
-drachm
-drachma
-drachmae
-Draco
-draff
-draft
-drafted
-draftee
-drafter
-drafters
-draftily
-draftiness
-drafting
-drafts
-draftsman
-draftsmanship
-draftsmen
-draftswoman
-drafty
-drag
-dragged
-dragging
-draggle
-draggy
-dragnet
-dragon
-dragon-fly
-dragonfly
-dragonhead
-dragons
-dragoon
-dragooned
-dragoons
-drags
-drain
-drain-pipe
-drainage
-drainboard
-drained
-drainer
-draining
-drainpipe
-drains
-drake
-dram
-drama
-Dramamine
-dramas
-dramatic
-dramatically
-dramatics
-dramatist
-dramatists
-dramatization
-dramatize
-dramshop
-drank
-drape
-draped
-draper
-draper's
-draperies
-drapers
-drapery
-drapes
-drastic
-drastically
-drat
-draught
-draught-beer
-draught-proof
-draughts
-draughtsman
-draughtsmen
-draughty
-Dravidian
-draw
-draw-board
-draw-bridge
-draw-pin
-drawback
-drawbacks
-drawbore
-drawbridge
-drawbridges
-drawee
-drawer
-drawers
-drawing
-drawing-kit
-drawing-pen
-drawing-room
-drawings
-drawl
-drawled
-drawling
-drawls
-drawn
-drawnly
-drawnness
-draws
-drawstring
-dray
-dread
-dreaded
-dreadful
-dreadfully
-dreadfulness
-dreading
-dreadlocks
-dreadnaught
-dreadnought
-dreads
-dream
-dreamboat
-dreamed
-dreamer
-dreamers
-dreamily
-dreaminess
-dreaming
-dreamland
-dreamless
-dreamlike
-dreams
-dreamt
-dreamworld
-dreamy
-drear
-drearily
-dreariness
-dreary
-dredge
-dredger
-dree
-dreg
-dregs
-Dreiser
-drench
-drenched
-drenches
-drenching
-Dresden
-dress
-dress-coat
-dress-improver
-dress-maker
-dress-rehearsal
-dressage
-dressed
-dresser
-dressers
-dresses
-dressiness
-dressing
-dressing-case
-dressing-down
-dressing-gown
-dressing-table
-dressings
-dressmaker
-dressmakers
-dressmakers
-dressmaking
-dressy
-drew
-Drexel
-Dreyfuss
-dribble
-dribbler
-dribbling
-driblet
-dried
-drier
-driers
-dries
-driest
-drift
-drifted
-drifter
-drifters
-drifting
-drifts
-driftwood
-drill
-drilled
-driller
-drilling
-drillmaster
-drills
-drily
-drink
-drinkable
-drinker
-drinkers
-drinking
-drinking-companion
-drinks
-drip
-drip-dry
-dripping
-dripping-flap
-dripping-pan
-drippings
-drippy
-drips
-dripstone
-Driscoll
-drive
-drive-by
-drive-in
-drive-through
-drivel
-driveler
-driven
-driver
-drivers
-drives
-driveway
-driveways
-driving
-driving-belt
-driving-putter
-driving-wheel
-drizzle
-drizzly
-drogue
-droll
-droll-looking
-drollery
-drollness
-drolly
-drome
-dromedary
-drone
-droner
-drones
-drool
-droop
-drooped
-droopiness
-drooping
-droops
-droopy
-drop
-drop-kick
-drop-kicker
-drop-off
-drop-out
-drop-shutter
-dropkick
-droplet
-dropout
-dropped
-dropper
-droppers
-dropping
-droppings
-drops
-dropsical
-dropsy
-droshky
-drosky
-drosophila
-dross
-drought
-droughts
-drouth
-drove
-drover
-drovers
-droves
-drown
-drowned
-drowning
-drownings
-drowns
-drowse
-drowsily
-drowsiness
-drowsy
-drsnost
-drub
-drubber
-drubbing
-drudge
-drudgery
-drug
-drug-store
-druggie
-druggist
-druggists
-druggy
-drugs
-drugstore
-druidism
-drum
-drum-head
-drum-major
-drum-stick
-drumbeat
-drumfire
-drumhead
-drumlin
-drummed
-drummer
-drummers
-drumming
-Drummond
-drums
-drumstick
-drunk
-drunkard
-drunkards
-drunken
-drunkenly
-drunkenness
-drunker
-drunkly
-drunks
-drupe
-Drury
-druthers
-dry
-dry-clean
-dry-cleaner
-dry-cleaners
-dry-cleaning
-dry-eyed
-dry-nurse
-dry-salter
-dryad
-Dryden
-dryer
-drying
-dryly
-dryness
-drywall
-DSAM
-DST
-DTP
-dual
-dualism
-dualities
-duality
-Duane
-dub
-Dubai
-dubbed
-dubber
-dubbin
-dubbing
-Dubhe
-dubiety
-dubious
-dubiously
-dubiousness
-dubitation
-Dublin
-dubs
-Dubuque
-ducal
-ducat
-Duchamp
-duchess
-duchesses
-duchy
-duck
-duckbill
-ducked
-ducking
-duckling
-duckpins
-ducks
-duckweed
-ducky
-duct
-ductile
-ductility
-ductless
-ducts
-dud
-dude
-dudgeon
-Dudley
-dudman
-duds
-due
-duel
-dueler
-dueling
-duelist
-duellist
-duels
-duenna
-dues
-duet
-duff
-duffer
-Duffy
-dug
-dug-out
-Dugan
-dugout
-duh
-DUI
-Duisburg
-duke
-dukedom
-dukes
-dulcet
-dulcimer
-dull
-dullard
-dulled
-duller
-Dulles
-dullest
-dulling
-dullness
-dulls
-Dullsville
-dully
-dulness
-Duluth
-duly
-dum-dum
-Dumas
-dumb
-dumb-bell
-dumbbell
-dumbbells
-dumber
-dumbest
-dumbfound
-dumbfounded
-dumbhead
-dumbly
-dumbness
-dumbstruck
-dumbwaiter
-dumdum
-dumfound
-dummies
-dummkopf
-dummy
-dump
-dumped
-dumper
-dumpiness
-dumping
-dumpling
-dumplings
-dumps
-Dumpty
-dumpy
-dun
-Dunbar
-Duncan
-dunce
-dunces
-Dundee
-dunderhead
-dune
-Dunedin
-dunes
-dung
-dung-hill
-dung-water
-dung-yard
-dungaree
-dungarees
-dungeon
-dungeons
-dunghill
-Dunham
-dunk
-Dunkirk
-Dunlap
-Dunlop
-Dunn
-Dunne
-dunno
-duo
-duodecimal
-duodecimo
-duodena
-duodenal
-duodenum
-dupe
-duper
-duple
-duplex
-duplicable
-duplicate
-duplicated
-duplicates
-duplicating
-duplication
-duplications
-duplicator
-duplicators
-duplicitous
-duplicity
-Duquesne
-durabilities
-durability
-durable
-durably
-durance
-Durango
-duration
-durations
-Durban
-Durer
-Durers
-duress
-Durham
-during
-Durkee
-Durkin
-Durrell
-durst
-durum
-Durward
-Dusenberg
-Dusenbury
-Dushanbe
-dusk
-duskiness
-dusky
-Dusseldorf
-dust
-dust-basket
-dust-bin
-dust-brush
-dust-cover
-dust-pan
-dustbin
-dusted
-duster
-dusters
-dustier
-dustiest
-Dustin
-dustiness
-dusting
-dustless
-dustman
-dustpan
-dusts
-dusty
-Dutch
-dutchess
-Dutchman
-Dutchmen
-Dutchwoman
-duteous
-duteously
-dutiable
-duties
-dutiful
-dutifully
-dutifulness
-Dutton
-duty
-duty-free
-duvet
-Dvorak
-dwarf
-dwarf-pine
-dwarfed
-dwarfish
-dwarfism
-dwarfs
-dwarves
-dweeb
-dwell
-dwelled
-dweller
-dwellers
-dwelling
-dwellings
-dwells
-dwelt
-DWI
-Dwight
-dwindle
-dwindled
-dwindling
-Dwyer
-Dy
-dyad
-dyadic
-dybbuk
-dye
-dyed
-dyed-in-the-wool
-dyeing
-dyeline
-dyer
-dyers
-dyes
-dyestuff
-dying
-dyke
-Dylan
-dynamic
-dynamical
-dynamically
-dynamics
-dynamism
-dynamite
-dynamited
-dynamiter
-dynamites
-dynamiting
-dynamo
-dynastic
-dynasties
-dynasty
-dyne
-dysentery
-dysfunction
-dysfunctional
-dyslectic
-dyslexia
-dyslexic
-dyspepsia
-dyspeptic
-dysprosium
-dystrophy
-e'en
-e'er
-e-book
-e-mail
-e.g.
-each
-Eagan
-eager
-eagerly
-eagerness
-eagle
-eagle-eyed
-eagle-owl
-eagles
-eaglet
-ear
-ear-ache
-ear-bender
-ear-drop
-ear-drum
-ear-lobe
-ear-phone
-ear-ring
-ear-rings
-ear-splitting
-ear-trumpet
-ear-wax
-ear-wig
-earache
-eardrum
-eared
-earful
-Earhart
-earl
-earldom
-earlier
-earliest
-earliness
-earlobe
-earls
-early
-earmark
-earmarked
-earmarking
-earmarkings
-earmarks
-EARMON
-earmuff
-earmuffs
-earn
-earned
-earner
-earners
-earnest
-earnestly
-earnestness
-earning
-earnings
-earns
-Earp
-earphone
-earphones
-earplug
-earring
-earrings
-ears
-earshot
-earsplitting
-earth
-earth-board
-earth-bound
-earth-bred
-earth-shattering
-earthbound
-earthen
-earthenware
-earthiness
-earthliness
-earthling
-earthly
-Earthman
-Earthmen
-earthmover
-earthquake
-earthquakes
-earths
-earthshaking
-earthward
-earthwards
-earthwork
-earthworm
-earthworms
-earthy
-earwax
-earwig
-ease
-eased
-easeful
-easel
-easement
-easements
-eases
-easier
-easiest
-easily
-easiness
-easing
-east
-eastbound
-easter
-Easter-eve
-easterly
-eastern
-easterners
-easternmost
-Easthampton
-Eastland
-Eastman
-eastward
-eastward(s)
-eastwards
-Eastwick
-Eastwood
-easy
-easy-chair
-easy-going
-easygoing
-eat
-eat!
-eatable
-eaten
-eater
-eaters
-eatery
-eating
-eating-house
-eatings
-Eaton
-eats
-eave
-eaves
-eavesdrop
-eavesdropped
-eavesdropper
-eavesdroppers
-eavesdropping
-eavesdrops
-ebb
-ebbing
-ebbs
-EBCDIC
-Eben
-ebony
-ebriety
-ebullience
-ebullient
-ebulliently
-ebullition
-EC
-ECC
-eccentric
-eccentrical
-eccentrically
-eccentricities
-eccentricity
-eccentrics
-Eccles
-Ecclesiastes
-ecclesiastic
-ecclesiastical
-ecclesiastically
-ECG
-echelon
-echinoderm
-echinus
-echo
-echoed
-echoes
-echoic
-echoing
-echolocation
-ECI
-eclair
-eclat
-eclectic
-eclectically
-eclecticism
-eclipse
-eclipsed
-eclipses
-eclipsing
-ecliptic
-eclogue
-ecocide
-Ecole
-ecologic
-ecological
-ecologically
-ecologist
-ecology
-ECOM
-econometric
-Econometrica
-economic
-economical
-economically
-economics
-economies
-economist
-economists
-economize
-economized
-economizer
-economizers
-economizes
-economizing
-economy
-ecosystem
-ecru
-ECSS
-ecstasize
-ecstasy
-ecstatic
-ecstatically
-Ecuador
-Ecuadoran
-Ecuadorean
-Ecuadorian
-ecumenical
-ecumenically
-ecumenicism
-ecumenism
-eczema
-Ed
-edacious
-Edam
-Eddie
-eddies
-eddy
-edelweiss
-edema
-edemata
-Eden
-Edenization
-Edenizations
-Edenize
-Edenizes
-Edgar
-edge
-edge-bone
-edge-tool
-edged
-edger
-Edgerton
-edges
-Edgewater
-edgeways
-edgewise
-Edgewood
-edgily
-edginess
-edging
-edgy
-edibility
-edible
-edibleness
-edict
-edicts
-edification
-edifice
-edifices
-edifier
-edify
-Edinburgh
-Edison
-edit
-edited
-Edith
-editing
-edition
-editions
-editor
-editor-in-chief
-editorial
-editorialize
-editorially
-editorials
-editors
-editorship
-edits
-Edmonds
-Edmondson
-Edmonton
-Edmund
-Edna
-EDP
-Edsger
-EDT
-Eduard
-Eduardo
-educability
-educable
-educate
-educated
-educates
-educating
-education
-educational
-educationally
-educations
-educator
-educators
-educe
-educt
-edutainment
-Edward
-Edwardian
-Edwardine
-Edwards
-Edwin
-Edwina
-EEC
-EEG
-eek
-eel
-eel-pout
-eelgrass
-eels
-EEO
-EEOC
-eerie
-eerily
-eeriness
-eery
-efface
-effacement
-effect
-effected
-effecting
-effective
-effectively
-effectiveness
-effector
-effectors
-effects
-effectual
-effectually
-effectuate
-effeminacy
-effeminate
-effeminately
-effendi
-efferent
-effervesce
-effervescence
-effervescent
-effervescently
-effete
-effetely
-effeteness
-efficacious
-efficaciously
-efficacy
-efficasy
-efficiencies
-efficiency
-efficient
-efficiently
-Effie
-effigy
-effloresce
-efflorescence
-efflorescent
-effluence
-effluent
-effluvia
-effluvium
-effort
-effortless
-effortlessly
-effortlessness
-efforts
-effrontery
-effulge
-effulgence
-effulgent
-effuse
-effusion
-effusive
-effusively
-effusiveness
-EFL
-eft
-eftsoon
-egad
-Egad!
-egalitarian
-egalitarianism
-Egan
-egg
-egg-cup
-egg-flip
-egg-nog
-egg-sucker
-egg-whisk
-eggbeater
-eggcup
-egged
-egghead
-egging
-eggnog
-eggplant
-eggs
-eggshell
-egis
-eglantine
-ego
-egocentric
-egocentrically
-egocentricity
-egoism
-egoist
-egoistic
-egoistical
-egoistically
-egomania
-egomaniac
-egos
-egotism
-egotist
-egotistic
-egotistical
-egotistically
-egregious
-egregiously
-egregiousness
-egress
-egret
-Egypt
-Egyptian
-Egyptianization
-Egyptianizations
-Egyptianize
-Egyptianizes
-Egyptians
-Egyptize
-Egyptizes
-Egyptology
-eh
-Ehrlich
-#EI
-Eichmann
-eider
-eider-down
-eiderdown
-Eiffel
-eigenfunction
-eigenstate
-eigenvalue
-eigenvalues
-eigenvector
-eight
-eighteen
-eighteenmo
-eighteens
-eighteenth
-eightfold
-eighth
-eighthes
-eighties
-eightieth
-eights
-eighty
-Eileen
-EIN
-Einstein
-Einsteinian
-einsteinium
-Eire
-Eisenhower
-Eisner
-either
-either-or-operation
-ejaculate
-ejaculated
-ejaculates
-ejaculating
-ejaculation
-ejaculations
-ejaculatory
-eject
-ejected
-ejecting
-ejection
-ejector
-ejects
-Ekaterinoslav
-Ekberg
-eke
-eked
-ekes
-EKG
-Ekstrom
-Ektachrome
-elaborate
-elaborated
-elaborately
-elaborateness
-elaborates
-elaborating
-elaboration
-elaborations
-elaborators
-Elaine
-elan
-eland
-elapse
-elapsed
-elapses
-elapsing
-elastic
-elastically
-elasticity
-elasticize
-elastity
-elastoplast
-elate
-elated
-elatedly
-elation
-Elba
-Elbe
-elbow
-elbow-grease
-elbowing
-elbowroom
-elbows
-elder
-elder-berries
-elder-flower
-elderberry
-elderly
-elders
-eldest
-Eldon
-Eldorado
-Eleanor
-Eleazar
-elect
-electable
-elected
-electing
-election
-electioneer
-electioneerer
-electioneering
-elections
-elective
-electives
-elector
-electoral
-electorate
-electors
-Electra
-electress
-electric
-electrical
-electrically
-electricalness
-electrician
-electricity
-electrification
-electrified
-electrifier
-electrify
-electrifying
-electro
-electrocardiogram
-electrocardiograph
-electrocardiography
-electrocute
-electrocuted
-electrocutes
-electrocuting
-electrocution
-electrocutions
-electrode
-electrodes
-electroencephalogram
-electroencephalograph
-electroencephalographic
-electroencephalography
-electrography
-electrolier
-electrologist
-electrolysis
-electrolyte
-electrolytes
-electrolytic
-electromagnet
-electromagnetic
-electromagnetically
-electromagnetism
-electromechanical
-electrometer
-electromotive
-electromotor
-electron
-electronic
-electronically
-electronics
-electrons
-electrophoresis
-electrophorus
-electrophotography
-electroplate
-electroplating
-electroscope
-electroscopic
-electroshock
-electrostatic
-electrostatics
-electrotype
-elects
-electuary
-eleemosynary
-elegance
-elegant
-elegantly
-elegiac
-elegiacal
-elegy
-element
-elemental
-elementally
-elementals
-elementary
-elements
-Elena
-elephant
-elephantiasis
-elephantine
-elephants
-elevate
-elevated
-elevates
-elevation
-elevator
-elevators
-eleven
-elevens
-eleventh
-elf
-elf-lock
-elfin
-elfish
-Elgin
-Eli
-elicit
-elicitation
-elicited
-eliciting
-elicits
-elide
-eligibility
-eligible
-Elijah
-eliminate
-eliminated
-eliminates
-eliminating
-elimination
-eliminations
-eliminator
-eliminators
-Elinor
-Eliot
-Elisabeth
-Elisha
-elision
-elite
-elitism
-elitist
-elixir
-Elizabeth
-Elizabethan
-Elizabethanize
-Elizabethanizes
-Elizabethans
-elk
-Elkhart
-elks
-ell
-Ella
-Ellen
-Ellie
-Ellington
-Elliot
-Elliott
-ellipse
-ellipses
-ellipsis
-ellipsoid
-ellipsoidal
-ellipsoids
-elliptic
-elliptical
-elliptically
-Ellis
-Ellison
-Ellsworth
-Ellwood
-elm
-Elmer
-Elmhurst
-Elmira
-elms
-Elmsford
-elocution
-elocutionary
-elocutionist
-elodea
-Eloise
-elongate
-elongated
-elongation
-elope
-elopement
-eloquence
-eloquent
-eloquently
-Elroy
-else
-else-where
-Elsevier
-elsewhere
-ELSI
-Elsie
-Elsinore
-Elton
-elucidate
-elucidated
-elucidates
-elucidating
-elucidation
-elude
-eluded
-eludes
-eluding
-elusion
-elusive
-elusively
-elusiveness
-elver
-elves
-Elvis
-Ely
-Elysee
-Elysees
-Elysian
-Elysium
-EM
-em-dash
-em-quad
-em-rule
-emaciate
-emaciated
-emaciation
-emacs
-email
-emanate
-emanating
-emanation
-emancipate
-emancipated
-emancipation
-emancipator
-Emanuel
-emasculate
-emasculation
-embalm
-embalmer
-embank
-embankment
-embargo
-embargoes
-embark
-embarkation
-embarked
-embarks
-embarrass
-embarrassed
-embarrasses
-embarrassing
-embarrassingly
-embarrassment
-EMBASE
-embassador
-embassies
-embassy
-embattle
-embattled
-embay
-embed
-embedded
-embedding
-embeds
-embellish
-embellished
-embellishes
-embellishing
-embellishment
-embellishments
-ember
-emberg
-embers
-embezzle
-embezzlement
-embezzler
-embitter
-embittered
-embitterment
-emblaze
-emblazon
-emblazonment
-emblem
-emblematic
-emblematical
-embodied
-embodies
-embodiment
-embodiments
-embody
-embodying
-embolden
-emboldening
-embolism
-embosom
-emboss
-embossed
-embosser
-embossment
-embouchure
-embowel
-embower
-embrace
-embraceable
-embraced
-embraces
-embracing
-embrasure
-embrocate
-embrocation
-embroider
-embroidered
-embroiderer
-embroideries
-embroiders
-embroidery
-embroil
-embroilment
-embryo
-embryologist
-embryology
-embryonic
-embryos
-embus
-emcee
-EMCLAS
-emend
-emendation
-emerald
-emeralds
-emerge
-emerged
-emergence
-emergencies
-emergency
-emergency-brake
-emergent
-emerges
-emerging
-emerita
-emeritus
-Emerson
-emery
-emetic
-emigrant
-emigrants
-emigrate
-emigrated
-emigrates
-emigrating
-emigration
-emigre
-Emil
-Emile
-Emilio
-Emily
-eminence
-eminency
-eminent
-eminently
-emir
-emirate
-emissary
-emission
-emit
-emits
-emitted
-emitter
-emitting
-Emma
-Emmanuel
-Emmental
-Emmett
-EMMS
-Emmy
-emollient
-emolument
-emoluments
-Emory
-emote
-emotion
-emotional
-emotionalism
-emotionalize
-emotionally
-emotions
-emotive
-empale
-empanel
-empathetic
-empathize
-empathy
-emperor
-emperors
-emphases
-emphasis
-emphasize
-emphasized
-emphasizes
-emphasizing
-emphatic
-emphatical
-emphatically
-emphysema
-empire
-empires
-empiric
-empirical
-empirically
-empiricism
-empiricist
-empiricists
-emplacement
-employ
-employable
-employe
-employed
-employee
-employees
-employer
-employers
-employing
-employment
-employments
-employs
-emporia
-emporium
-empower
-empowered
-empowering
-empowerment
-empowers
-empress
-emptied
-emptier
-empties
-emptiest
-emptily
-emptiness
-empty
-empty-handed
-empty-headed
-emptying
-empurple
-empyrean
-EMS
-EMT
-EMTAGS
-emu
-emulate
-emulated
-emulates
-emulating
-emulation
-emulations
-emulative
-emulator
-emulators
-emulous
-emulsification
-emulsifier
-emulsify
-emulsion
-en
-enable
-enabled
-enabler
-enablers
-enables
-enabling
-enact
-enacted
-enacting
-enactment
-enacts
-enamel
-enameled
-enameler
-enameling
-enamels
-enamelware
-enamor
-enamored
-enamour
-enamoured
-encage
-encajes
-encamp
-encamped
-encamping
-encampment
-encamps
-encapsulate
-encapsulated
-encapsulates
-encapsulating
-encapsulation
-encase
-encased
-encasement
-enceinte
-encephalitic
-encephalitis
-enchain
-enchant
-enchanted
-enchanter
-enchanting
-enchantingly
-enchantment
-enchantress
-enchants
-enchase
-enchilada
-enciente
-encipher
-enciphered
-enciphering
-enciphers
-encircle
-encircled
-encirclement
-encircles
-enclasp
-enclave
-enclitic
-enclose
-enclosed
-encloses
-enclosing
-enclosure
-enclosures
-encode
-encoded
-encoder
-encoders
-encodes
-encoding
-encodings
-encomia
-encomium
-encompass
-encompassed
-encompasses
-encompassing
-encore
-encounter
-encountered
-encountering
-encounters
-encourage
-encouraged
-encouragement
-encouragements
-encourages
-encouraging
-encouragingly
-encroach
-encroachment
-encrust
-encrustation
-encrusted
-encrypt
-encrypted
-encrypting
-encryption
-encryptions
-encrypts
-encumber
-encumberance
-encumbered
-encumbering
-encumbers
-encumbrance
-encyclical
-encyclopaedia
-encyclopaedic
-encyclopedia
-encyclopedias
-encyclopedic
-encyst
-encystment
-end
-end-piece
-endanger
-endangered
-endangering
-endangerment
-endangers
-endear
-endeared
-endearing
-endearingly
-endearment
-endears
-endeavor
-endeavored
-endeavoring
-endeavors
-endeavour
-ended
-endemic
-endemically
-ender
-enders
-endgame
-Endicott
-ending
-endingless
-endings
-endive
-endless
-endlessly
-endlessness
-endmost
-endocrine
-endocrinologist
-endocrinology
-endogenous
-endogenously
-endorse
-endorsed
-endorsee
-endorsement
-endorser
-endorses
-endorsing
-endoscope
-endoscopic
-endoscopy
-endothermic
-endow
-endowed
-endowing
-endowment
-endowments
-endows
-endpoint
-ends
-endue
-endurable
-endurably
-endurance
-endure
-endured
-endures
-enduring
-enduringly
-endways
-endwise
-ENE
-enema
-enemas
-enemies
-enemy
-energetic
-energetical
-energetically
-energetics
-energies
-energize
-energizer
-energy
-enervate
-enervation
-enfeeble
-enfeebled
-enfeeblement
-enfeoff
-Enfield
-enfilade
-enfold
-enforce
-enforceable
-enforced
-enforcement
-enforcer
-enforcers
-enforces
-enforcing
-enfranchise
-enfranchisement
-Eng
-engage
-engaged
-engagement
-engagements
-engages
-engaging
-engagingly
-Engel
-Engels
-engender
-engendered
-engendering
-engenders
-engine
-engine-builder
-engine-driver
-engineer
-engineered
-engineering
-engineers
-enginery
-engines
-enginshaft
-England
-Englander
-Englanders
-Engle
-Englewood
-English
-Englishize
-Englishizes
-Englishman
-Englishmen
-Englishwoman
-engorge
-engorgement
-engraft
-engrain
-engram
-engrave
-engraved
-engraver
-engraves
-engraving
-engravings
-engross
-engrossed
-engrossing
-engrossment
-engulf
-engulfment
-enhance
-enhanced
-enhancement
-enhancements
-enhances
-enhancing
-Enid
-enigma
-enigmatic
-enigmatically
-enjambement
-enjambment
-enjoin
-enjoined
-enjoining
-enjoins
-enjoy
-enjoyable
-enjoyably
-enjoyed
-enjoying
-enjoyment
-enjoys
-enkindle
-enlace
-enlarge
-enlargeable
-enlarged
-enlargement
-enlargements
-enlarger
-enlarger-printer
-enlargers
-enlarges
-enlarging
-enlighten
-enlightened
-enlightening
-enlightenment
-enlist
-enlisted
-enlistee
-enlistment
-enlists
-enliven
-enlivened
-enlivening
-enlivenment
-enlivens
-enmesh
-enmeshed
-enmeshment
-enmities
-enmity
-ennoble
-ennobled
-ennoblement
-ennobles
-ennobling
-ennui
-Enoch
-enormities
-enormity
-enormous
-enormously
-enormousness
-Enos
-enough
-enounce
-enplane
-enqueue
-enqueued
-enqueues
-enquire
-enquired
-enquirer
-enquires
-enquiry
-enrage
-enraged
-enrages
-enraging
-enrapture
-enregister
-enrich
-enriched
-enriches
-enriching
-enrichment
-Enrico
-enrobe
-enrol
-enroll
-enrolled
-enrolling
-enrollment
-enrollments
-enrolls
-enrolment
-ensconce
-ensemble
-ensembles
-enserf
-enshrine
-enshrinement
-enshroud
-ensign
-ensigns
-ensilage
-enslave
-enslaved
-enslavement
-enslaves
-enslaving
-ensnare
-ensnared
-ensnarement
-ensnares
-ensnaring
-Ensolite
-ensue
-ensued
-ensues
-ensuing
-ensure
-ensured
-ensurer
-ensurers
-ensures
-ensuring
-entail
-entailed
-entailing
-entailment
-entails
-entangle
-entanglement
-entente
-enter
-entered
-enteric
-entering
-enteritis
-enterprise
-enterprises
-enterprising
-enterprisingly
-enters
-entertain
-entertained
-entertainer
-entertainers
-entertaining
-entertainingly
-entertainment
-entertainments
-entertains
-enthral
-enthrall
-enthralling
-enthrallment
-enthrone
-enthronement
-enthuse
-enthusiasm
-enthusiasms
-enthusiast
-enthusiastic
-enthusiastically
-enthusiasts
-entice
-enticed
-enticement
-enticer
-enticers
-entices
-enticing
-enticingly
-entire
-entirely
-entireties
-entirety
-entities
-entitle
-entitled
-entitlement
-entitles
-entitling
-entity
-entomb
-entombment
-entomological
-entomologist
-entomology
-entourage
-entr'acte
-entrails
-entrain
-entrance
-entranced
-entrancement
-entrances
-entrancing
-entrancingly
-entrant
-entrap
-entrapment
-entreat
-entreated
-entreatingly
-entreaty
-entree
-Entrees
-entrench
-entrenched
-entrenches
-entrenching
-entrenchment
-entrepot
-entrepreneur
-entrepreneurial
-entrepreneurs
-entries
-entropy
-entrust
-entrusted
-entrusting
-entrusts
-entry
-entry-level
-entryway
-entwine
-entwist
-enucleate
-enucleation
-enumerable
-enumerate
-enumerated
-enumerates
-enumerating
-enumeration
-enumerative
-enumerator
-enumerators
-enunciate
-enunciation
-enure
-enuresis
-envelop
-envelope
-enveloped
-enveloper
-envelopes
-enveloping
-envelopment
-envelops
-envenom
-enviable
-enviably
-envied
-envies
-envious
-enviously
-enviousness
-environ
-environing
-environment
-environmental
-environmentalism
-environmentalist
-environmentally
-environments
-environs
-envisage
-envisaged
-envisages
-envision
-envisioned
-envisioning
-envisions
-envoy
-envoys
-envy
-envyingly
-enwrap
-enzymatic
-enzyme
-Eocene
-EOE
-eolian
-eon
-EPA
-epaulet
-epaulets
-epaulette
-epee
-ephedrine
-ephemera
-ephemeral
-ephemerally
-ephemerides
-ephemeris
-Ephesian
-Ephesians
-Ephesus
-Ephraim
-epic
-epical
-epicene
-epicenter
-epicentre
-epics
-epicure
-epicurean
-Epicurize
-Epicurizes
-Epicurus
-epidemic
-epidemical
-epidemically
-epidemics
-epidemiologist
-epidemiology
-epidermal
-epidermic
-epidermis
-epidiascope
-epiglottis
-epigon
-epigram
-epigrammatic
-epigraph
-epigraphy
-epilepsy
-epileptic
-epilog
-epilogue
-epinephrin
-epinephrine
-epiphany
-episcopacy
-episcopal
-episcopalian
-Episcopalianize
-Episcopalianizes
-episcopate
-episcope
-episode
-episodes
-episodic
-episodically
-epistemological
-epistemology
-epistle
-epistles
-epistolary
-epitaph
-epitaphs
-epitaxial
-epitaxially
-epithelia
-epithelial
-epithelium
-epithet
-epithets
-epitome
-epitomize
-epitomized
-epitomizes
-epitomizing
-epoch
-epochal
-epochs
-epos
-epoxy
-EPROM
-epsilon
-Epsom
-Epstein
-equability
-equable
-equably
-equal
-equaled
-equaling
-equalities
-equality
-equalization
-equalize
-equalized
-equalizer
-equalizers
-equalizes
-equalizing
-equally
-equals
-equanimity
-equatable
-equate
-equated
-equates
-equating
-equation
-equations
-equator
-equatorial
-equators
-equerry
-equestrian
-equestrianism
-equestrienne
-equiangular
-equidistant
-equidistantly
-equifinality
-equilateral
-equilibrate
-equilibria
-equilibrist
-equilibrium
-equilibriums
-equine
-equinoctial
-equinox
-equip
-equipage
-equipment
-equipoise
-equipollence
-equipollent
-equipotential
-equipped
-equipping
-equips
-equitable
-equitably
-equitation
-equity
-equivalence
-equivalences
-equivalent
-equivalently
-equivalents
-equivocal
-equivocally
-equivocalness
-equivocate
-equivocation
-equivocator
-era
-eradiate
-eradicable
-eradicate
-eradicated
-eradicates
-eradicating
-eradication
-eradicator
-eras
-erasable
-erase
-erased
-erasement
-eraser
-erasers
-erases
-erasing
-Erasmus
-Erastus
-erasure
-Erato
-Eratosthenes
-erbium
-ere
-erect
-erected
-erectile
-erecting
-erection
-erections
-erectly
-erectness
-erector
-erectors
-erects
-erelong
-eremite
-erg
-ergo
-ergodic
-ergometrics
-ergonomic
-ergonomically
-ergonomics
-ergosterol
-ergot
-Eric
-erica
-Erich
-Erickson
-Ericson
-Ericsson
-Erie
-Erik
-Erikson
-Eriksson
-Erin
-Eris
-Eritrea
-Erlang
-Erlenmeyer
-Erlenmeyers
-ermine
-ermines
-Erne
-Ernest
-Ernestine
-Ernie
-Ernst
-erode
-erodible
-erogenous
-Eros
-erosion
-erosive
-erotic
-erotica
-erotically
-eroticism
-err
-errand
-errand-boy
-errant
-errata
-erratic
-erratically
-erratum
-erred
-erring
-erringly
-Errol
-erroneous
-erroneously
-erroneousness
-error
-errors
-errs
-ersatz
-Erse
-Erskine
-erst
-erstwhile
-erubescent
-eruct
-eructation
-erudite
-eruditely
-erudition
-erupt
-eruption
-eruptive
-Ervin
-Erwin
-erysipelas
-erythrocyte
-Es
-ESA-IRS/QUEST
-ESANET
-Esau
-escalate
-escalated
-escalates
-escalating
-escalation
-escalator
-escallop
-escalop
-escapable
-escapade
-escapades
-escape
-escaped
-escapee
-escapees
-escapement
-escapes
-escaping
-escapism
-escapist
-escarole
-escarp
-escarpment
-eschar
-eschatology
-Escherichia
-eschew
-eschewed
-eschewing
-eschews
-Escondido
-escort
-escorted
-escorting
-escorts
-escritoire
-escrow
-escudo
-esculent
-escutcheon
-ESE
-Eskimauan
-Eskimo
-Eskimoan
-Eskimoized
-Eskimoizeds
-Eskimos
-ESL
-Esmark
-esophageal
-esophagi
-esophagus
-esoteric
-esoterically
-esoterik
-ESP
-espadrille
-Espagnol
-espalier
-especial
-especially
-Esperanto
-espial
-espionage
-esplanade
-Esposito
-espousal
-espouse
-espoused
-espouses
-espousing
-espresso
-esprit
-espy
-Esq
-Esquimau
-esquires
-essay
-essayed
-essayer
-essayist
-essays
-Essen
-essence
-essences
-Essene
-Essenize
-Essenizes
-essential
-essentially
-essentials
-Essex
-EST
-establish
-established
-establishes
-establishing
-establishment
-establishments
-estate
-estates
-esteem
-esteemed
-esteeming
-esteems
-Estella
-ester
-Estes
-Esther
-esthete
-esthetic
-esthetically
-esthetics
-Esthonia
-estimable
-estimate
-estimated
-estimates
-estimating
-estimation
-estimations
-estimator
-estivate
-Estonia
-Estonian
-estop
-estrade
-estrange
-estranged
-estrangement
-estray
-estrogen
-estrous
-estrus
-estuary
-etc.
-etch
-etcher
-etching
-ETD
-eternal
-eternally
-eternalness
-eternities
-eternity
-eternize
-Ethan
-ethane
-ethanol
-Ethel
-ether
-ethereal
-ethereally
-etherize
-Ethernet
-Ethernets
-ethers
-ethic
-ethical
-ethically
-ethics
-Ethiopia
-Ethiopian
-Ethiopians
-ethnic
-ethnically
-ethnicity
-ethnocentric
-ethnocentrism
-ethnography
-ethnological
-ethnologist
-ethnology
-ethological
-ethologist
-ethology
-ethos
-ethyl
-ethylene
-etiolation
-etiologic
-etiological
-etiology
-etiquette
-Etna
-Etruria
-Etruscan
-ETU
-etude
-etymological
-etymologically
-etymologist
-etymology
-eucalypti
-eucalyptus
-Eucharist
-Eucharistic
-euchre
-Euclid
-Eugene
-Eugenia
-eugenic
-eugenically
-eugenicist
-eugenics
-Euler
-Eulerian
-eulogist
-eulogistic
-eulogize
-eulogizer
-eulogy
-Eumenides
-Eunice
-eunuch
-eunuchs
-euphamism
-euphemism
-euphemisms
-euphemistic
-euphemistically
-euphemize
-euphonic
-euphonious
-euphoniously
-euphony
-euphoria
-euphoric
-euphorically
-Euphrates
-euphuism
-Eurasia
-Eurasian
-eureka
-Euripides
-Euro
-Eurocheque
-Eurodollar
-EURONET
-Europa
-Europe
-European
-Europeanization
-Europeanizations
-Europeanize
-Europeanized
-Europeanizes
-Europeans
-europium
-Eurydice
-Euterpe
-euthanasia
-euthenics
-Eva
-evacuant
-evacuate
-evacuated
-evacuation
-evacuee
-evade
-evaded
-evader
-evades
-evading
-evaluate
-evaluated
-evaluates
-evaluating
-evaluation
-evaluations
-evaluative
-evaluator
-evaluators
-evanesce
-evanescence
-evanescent
-evangel
-evangelic
-evangelical
-evangelicalism
-evangelically
-Evangeline
-evangelism
-evangelist
-evangelistic
-evangelize
-Evans
-Evanston
-Evansville
-evaporate
-evaporated
-evaporating
-evaporation
-evaporative
-evaporator
-evasion
-evasive
-evasively
-evasiveness
-eve
-Evelyn
-even
-even-handed
-even-tempered
-even-toed
-evened
-evenhanded
-evenhandedly
-evenhandedness
-evening
-evenings
-evenly
-evenness
-evens
-Evensen
-evensong
-event
-eventful
-eventfully
-eventfulness
-eventide
-events
-eventual
-eventualities
-eventuality
-eventually
-eventuate
-ever
-Eveready
-Everest
-Everett
-Everglades
-evergreen
-Everhart
-everlasting
-everlastingly
-evermore
-eversion
-every
-everybody
-everyday
-everyone
-everyplace
-everything
-everyway
-everywhere
-evict
-evicted
-evicting
-eviction
-evictions
-evicts
-evidence
-evidenced
-evidences
-evidencing
-evident
-evidential
-evidently
-evil
-evil-affected
-evil-doer
-evil-minded
-evil-speaking
-evildoer
-evildoing
-eviller
-evilly
-evilminded
-evilness
-evils
-evince
-evinced
-evinces
-eviscerate
-evisceration
-evitable
-evitation
-evocation
-evocative
-evocatively
-evoke
-evoked
-evokes
-evoking
-evolute
-evolutes
-evolution
-evolutionary
-evolutionist
-evolutions
-evolve
-evolved
-evolves
-evolving
-EVR
-evulsion
-ewe
-Ewen
-ewer
-ewes
-Ewing
-ex
-ex-libris
-ex-serviceman
-exacerbate
-exacerbated
-exacerbates
-exacerbating
-exacerbation
-exacerbations
-exact
-exacted
-exacter
-exacting
-exactingly
-exaction
-exactions
-exactitude
-exactly
-exactness
-exactor
-exacts
-exaggerate
-exaggerated
-exaggeratedly
-exaggerates
-exaggerating
-exaggeration
-exaggerations
-exaggerator
-exalt
-exaltation
-exalted
-exalting
-exalts
-exam
-examination
-examinations
-examine
-examined
-examinee
-examiner
-examiners
-examines
-examining
-example
-examples
-exams
-exasperate
-exasperated
-exasperates
-exasperating
-exasperation
-excavate
-excavated
-excavates
-excavating
-excavation
-excavations
-excavator
-exceed
-exceeded
-exceeding
-exceedingly
-exceeds
-excel
-excelled
-excellence
-excellences
-excellency
-excellent
-excellently
-excelling
-excels
-excelsior
-except
-excepted
-excepting
-exception
-exceptionable
-exceptional
-exceptionally
-exceptions
-excepts
-excerpt
-excerpted
-excerption
-excerpts
-excess
-excesses
-excessive
-excessively
-exchange
-exchangeable
-exchanged
-exchanges
-exchanging
-exchequer
-exchequers
-excise
-excised
-exciseman
-excises
-excising
-excision
-excitability
-excitable
-excitably
-excitant
-excitation
-excitations
-excite
-excited
-excitedly
-excitement
-exciter
-excites
-exciting
-excitingly
-exciton
-exclaim
-exclaimed
-exclaimer
-exclaimers
-exclaiming
-exclaims
-exclamation
-exclamations
-exclamatory
-exclude
-excluded
-excludes
-excluding
-exclusion
-exclusionary
-exclusions
-exclusive
-exclusively
-exclusiveness
-exclusivity
-excogitate
-excogitation
-excommunicate
-excommunicated
-excommunicates
-excommunicating
-excommunication
-excoriate
-excoriation
-excrement
-excremental
-excrescence
-excrescent
-excresent
-excreta
-excrete
-excreted
-excretes
-excreting
-excretion
-excretions
-excretory
-excruciate
-excruciating
-excruciatingly
-excruciation
-exculpable
-exculpate
-exculpation
-excursion
-excursionist
-excursions
-excursive
-excursively
-excursiveness
-excusable
-excusably
-excusatory
-excuse
-excused
-excuses
-excusing
-exec
-execrable
-execrably
-execrate
-execration
-executable
-execute
-executed
-executer
-executes
-executing
-execution
-executional
-executioner
-executions
-executive
-executives
-executor
-executors
-executrices
-executrix
-exegeses
-exegesis
-exegetic
-exegetical
-exemplar
-exemplary
-exemplification
-exemplified
-exemplifier
-exemplifiers
-exemplifies
-exemplify
-exemplifying
-exempt
-exempted
-exempting
-exemption
-exempts
-exequatur
-exequies
-exercise
-exerciser
-exercisers
-exercises
-exercising
-exert
-exerted
-exerting
-exertion
-exertions
-exerts
-Exeter
-exeunt
-exfoliate
-exhalation
-exhale
-exhaled
-exhales
-exhaling
-exhaust
-exhausted
-exhaustedly
-exhaustible
-exhausting
-exhaustion
-exhaustive
-exhaustively
-exhaustiveness
-exhausts
-exhibit
-exhibited
-exhibiting
-exhibition
-exhibitioner
-exhibitionism
-exhibitionist
-exhibitions
-exhibitor
-exhibitors
-exhibits
-exhilarate
-exhilarated
-exhilarating
-exhilaration
-exhort
-exhortation
-exhortations
-exhumation
-exhume
-exigence
-exigencies
-exigency
-exigent
-exiguity
-exiguous
-exile
-exiled
-exiles
-exiling
-exist
-existed
-existence
-existent
-existential
-existentialism
-existentialist
-existentialists
-existentially
-existing
-exists
-exit
-exiting
-exits
-exjunction
-exobiology
-exodus
-exogenous
-exonerate
-exoneration
-exorbitanant
-exorbitance
-exorbitancy
-exorbitant
-exorbitantly
-exorcise
-exorcism
-exorcist
-exorcize
-exordium
-exoskeleton
-exosphere
-exoteric
-exothermic
-exotic
-exotically
-exoticism
-expand
-expandability
-expandable
-expanded
-expander
-expanders
-expanding
-expands
-expanse
-expanses
-expansibility
-expansible
-expansion
-expansionary
-expansionism
-expansionist
-expansions
-expansive
-expansively
-expansiveness
-expatiate
-expatiation
-expatriate
-expatriation
-expect
-expectance
-expectancy
-expectant
-expectantly
-expectation
-expectations
-expected
-expectedly
-expecting
-expectingly
-expectorant
-expectorate
-expectoration
-expects
-expedience
-expediency
-expedient
-expediently
-expedite
-expedited
-expediter
-expedites
-expediting
-expedition
-expeditionary
-expeditions
-expeditious
-expeditiously
-expeditiousness
-expeditor
-expel
-expelled
-expellee
-expelling
-expels
-expend
-expendable
-expended
-expending
-expenditure
-expenditures
-expends
-expense
-expenses
-expensive
-expensively
-expensiveness
-experience
-experienced
-experiences
-experiencing
-experiment
-experimental
-experimentally
-experimentation
-experimentations
-experimented
-experimenter
-experimenters
-experimenting
-experiments
-expert
-expertise
-expertly
-expertness
-experts
-expiable
-expiate
-expiation
-expiatory
-expiration
-expirations
-expiratory
-expire
-expired
-expires
-expiring
-expiry
-explain
-explainable
-explained
-explainer
-explainers
-explaining
-explains
-explanation
-explanations
-explanatory
-expletive
-explicable
-explicandum
-explicate
-explication
-explicatory
-explicatum
-explicit
-explicitly
-explicitness
-explode
-exploded
-explodes
-exploding
-exploit
-exploitable
-exploitation
-exploitations
-exploitative
-exploited
-exploiter
-exploiters
-exploiting
-exploits
-exploration
-explorations
-exploratory
-explore
-explored
-explorer
-explorers
-explores
-exploring
-explosion
-explosion-proof
-explosions
-explosive
-explosively
-explosiveness
-explosives
-expo
-exponent
-exponential
-exponentially
-exponentials
-exponentiate
-exponentiated
-exponentiates
-exponentiating
-exponentiation
-exponentiations
-exponents
-export
-exportable
-exportation
-exported
-exporter
-exporters
-exporting
-exports
-expose
-exposed
-exposer
-exposers
-exposes
-exposing
-exposition
-expositions
-expositive
-expositor
-expository
-expostulate
-expostulation
-exposure
-exposure-scale
-exposures
-expound
-expounded
-expounder
-expounding
-expounds
-express
-expressed
-expresses
-expressibility
-expressible
-expressibly
-expressing
-expression
-expressionism
-expressionist
-expressionistic
-expressionless
-expressions
-expressive
-expressively
-expressiveness
-expressly
-expressway
-expropriate
-expropriation
-expropriator
-expulsion
-expunction
-expunge
-expunged
-expunges
-expunging
-expurgate
-expurgation
-expurgatory
-exquisite
-exquisitely
-exquisiteness
-exsiccate
-extant
-extemporal
-extemporaneous
-extemporaneously
-extemporaneousness
-extemporary
-extempore
-extemporization
-extemporize
-extend
-extendable
-extended
-extender
-extendible
-extending
-extends
-extensibility
-extensible
-extensile
-extension
-extensions
-extensive
-extensively
-extensiveness
-extent
-extents
-extenuate
-extenuated
-extenuating
-extenuation
-exterior
-exteriors
-exterminate
-exterminated
-exterminates
-exterminating
-extermination
-exterminator
-exterminatory
-external
-externalization
-externalize
-externally
-externals
-extinct
-extinction
-extinguish
-extinguishable
-extinguished
-extinguisher
-extinguishes
-extinguishing
-extinguishment
-extirpate
-extirpation
-extirpator
-extol
-extoll
-extort
-extorted
-extorter
-extortion
-extortionate
-extortionately
-extortioner
-extortionist
-extra
-extra-time
-extract
-extracted
-extracting
-extraction
-extractions
-extractor
-extractors
-extracts
-extracurricular
-extraditable
-extradite
-extradition
-extralegal
-extralinguistic
-extramarital
-extramural
-extraneous
-extraneously
-extraneousness
-extraordinaries
-extraordinarily
-extraordinariness
-extraordinary
-extrapolate
-extrapolated
-extrapolates
-extrapolating
-extrapolation
-extrapolations
-extras
-extrasensory
-extraterrestrial
-extraterritorial
-extraterritoriality
-extravagance
-extravagancy
-extravagant
-extravagantly
-extravaganza
-extravehicular
-extravert
-extrawork
-extrema
-extremal
-extreme
-extremely
-extremeness
-extremes
-extremism
-extremist
-extremists
-extremities
-extremity
-extremum
-extricable
-extricate
-extrication
-extrinsic
-extrinsically
-extroversion
-extrovert
-extroverted
-extrude
-extrusion
-extrusive
-exuberance
-exuberant
-exuberantly
-exuberate
-exudate
-exudation
-exude
-exult
-exultant
-exultantly
-exultation
-exurb
-exurban
-exurbanite
-exurbia
-exuviae
-Exxon
-eye
-eye-catcher
-eye-catching
-eye-flap
-eye-glasses
-eye-lid
-eye-opener
-eye-popper
-eye-shade
-eye-tentacles
-eye-tooth
-eye-wink
-eyeball
-eyebeam
-eyebrow
-eyebrows
-eyed
-eyedropper
-eyeful
-eyeglass
-eyeglasses
-eyeing
-eyelash
-eyeless
-eyelet
-eyelid
-eyelids
-eyeliner
-eyeopener
-eyeopening
-eyepiece
-eyepieces
-eyer
-eyers
-eyes
-eyeshot
-eyesight
-eyesore
-eyestrain
-eyeteeth
-eyetooth
-eyewash
-eyewitness
-eyewitnesses
-eying
-eyrie
-eyry
-Ezekiel
-Ezra
-f-number
-fa
-FAA
-Faber
-Fabian
-fable
-fabled
-fables
-fabric
-fabricate
-fabricated
-fabricates
-fabricating
-fabrication
-fabricator
-fabrics
-fabulous
-fabulously
-fac
-facade
-facaded
-facades
-face
-face-cloth
-face-lift
-face-off
-face-pack
-face-saving
-face-to-face
-facecloth
-faced
-faceless
-facelift
-faceplate
-facer
-faces
-facet
-faceted
-facetiae
-facetious
-facetiously
-facetiousness
-facets
-facial
-facially
-facile
-facilely
-facilitate
-facilitated
-facilitates
-facilitating
-facilitation
-facilitator
-facilities
-facility
-facing
-facing-brick
-facings
-facsimile
-facsimiles
-fact
-fact-finding
-faction
-factional
-factionalism
-factions
-factious
-factitious
-facto
-factoid
-factor
-factorage
-factored
-factorial
-factories
-factoring
-factorization
-factorizations
-factors
-factory
-factotum
-facts
-factual
-factually
-facultative
-faculties
-faculty
-fad
-faddish
-faddist
-fade
-faded
-fadeout
-fader
-faders
-fades
-fadge
-fading
-faecal
-faeces
-faerie
-faery
-Fafnir
-fag
-faggot
-faggoting
-Fagin
-fagot
-fagoting
-fags
-Fahey
-Fahrenheit
-Fahrenheits
-faience
-fail
-fail-safe
-failed
-failing
-failings
-faille
-fails
-failsoft
-failure
-failure-analysis
-failureless
-failures
-fain
-faint
-faint-heart
-faint-hearted
-fainted
-fainter
-faintest
-fainthearted
-fainting
-faintly
-faintness
-faints
-fair
-fair-haired
-fair-hand
-fair-minded
-fair-spoken
-fair-weather
-Fairbanks
-Fairchild
-fairer
-fairest
-Fairfax
-Fairfield
-fairground
-fairgrounds
-fairies
-fairing
-fairish
-fairly
-Fairmont
-fairness
-Fairport
-fairs
-Fairview
-fairway
-fairy
-fairy-story
-fairy-tale
-fairyland
-Faisalabad
-faith
-faithful
-faithfully
-faithfulness
-faithless
-faithlessly
-faithlessness
-faiths
-fajitas
-fake
-faked
-fakeer
-faker
-fakes
-faking
-fakir
-falcon
-falconer
-falconry
-falcons
-Falk
-Falkland
-Falklands
-fall
-fall-guy
-fall-out
-fallacies
-fallacious
-fallaciously
-fallacy
-fallen
-fallibility
-fallible
-fallibleness
-fallibly
-falling
-falling-down
-falling-in
-falling-off
-falling-out
-falling-stone
-fallings-out
-falloff
-Fallopian
-fallout
-fallow
-fallow-deer
-falls
-Falmouth
-false
-false-hearted
-falsehood
-falsehoods
-falsely
-falseness
-falsetto
-falsie
-falsies
-falsification
-falsified
-falsifier
-falsifies
-falsify
-falsifying
-falsity
-Falstaff
-falter
-faltered
-faltering
-falteringly
-falters
-fame
-famed
-fames
-familial
-familiar
-familiarities
-familiarity
-familiarization
-familiarize
-familiarized
-familiarizes
-familiarizing
-familiarly
-familiarness
-families
-familism
-family
-famine
-famines
-famish
-famished
-famous
-famously
-fan
-fanatic
-fanatical
-fanatically
-fanaticism
-fanatics
-fancied
-fancier
-fanciers
-fancies
-fanciest
-fanciful
-fancifully
-fancifulness
-fancily
-fanciness
-fancy
-fancy-dress
-fancy-free
-fancy-work
-fancying
-fancywork
-fandango
-fanfare
-fanfold
-fang
-fanged
-fangled
-fangs
-fanlight
-fanned
-fanner
-Fannies
-fanning
-fanny
-fanout
-fans
-fantail
-fantasia
-fantasies
-fantasize
-fantasm
-fantastic
-fantastical
-fantastically
-fantasy
-fantom
-fanzine
-far
-far-away
-far-between
-far-famed
-far-fetched
-far-flung
-far-off
-far-out
-far-reaching
-far-right
-far-seeing
-far-sighted
-farad
-Faraday
-faraway
-Farber
-farce
-farces
-farcical
-farcically
-fare
-fared
-fares
-farewell
-farewells
-farfetched
-Fargo
-farina
-farinaceous
-faring
-Farkas
-Farley
-farm
-farmed
-farmer
-farmers
-farmery
-farmhand
-farmhouse
-farmhouses
-farming
-Farmington
-farmland
-farms
-farmstead
-farmyard
-farmyards
-Farnsworth
-faro
-farrago
-Farragut
-Farrell
-farrier
-farrow
-farseeing
-farsighted
-farsightedness
-fart
-farther
-farthermost
-farthest
-farthing
-fascia
-fascicle
-fascinate
-fascinated
-fascinates
-fascinating
-fascinatingly
-fascination
-fascine
-fascism
-fascist
-fascistic
-Fascization
-fashion
-fashionable
-fashionably
-fashioned
-fashioner
-fashioning
-fashions
-fast
-fast-food
-fast-forward
-fast-talk
-fast-track
-fastback
-fastball
-fasted
-fasten
-fastened
-fastener
-fasteners
-fastening
-fastenings
-fastens
-faster
-fastest
-fastidious
-fastidiously
-fastidiousness
-fasting
-fastness
-fasts
-fat
-fat-free
-fat-guts
-fat-head
-fat-soluble
-fatal
-fatalism
-fatalist
-fatalistic
-fatalistically
-fatalities
-fatality
-fatally
-fatals
-fatback
-fate
-fated
-fateful
-fatefully
-fatefulness
-fathead
-fatheaded
-father
-father-in-law
-fathered
-fatherhood
-fatherland
-fatherless
-fatherly
-fathers
-fathers-in-law
-fathom
-fathomable
-fathomed
-fathoming
-fathomless
-fathoms
-fatigue
-fatigue-dress
-fatigued
-fatigues
-fatiguing
-Fatima
-fatling
-fatness
-fats
-fatten
-fattened
-fattener
-fatteners
-fattening
-fattens
-fatter
-fattest
-fattiness
-fattish
-fatty
-fatuity
-fatuous
-fatuously
-fatuousness
-fatwa
-fauces
-faucet
-faugh
-Faulkner
-Faulknerian
-fault
-faulted
-faultfinder
-faultfinding
-faultily
-faultiness
-faulting
-faultless
-faultlessly
-faultlessness
-faults
-faulty
-faun
-fauna
-faunae
-Fauntleroy
-Faust
-Faustian
-Faustus
-fauvism
-favor
-favorable
-favorably
-favored
-favorer
-favoring
-favorite
-favorites
-favoritism
-favors
-favour
-favourable
-favourer
-favourite
-Fawkes
-fawn
-fawned
-fawner
-fawning
-fawns
-fax
-fay
-Fayette
-Fayetteville
-faze
-FCT
-FD
-FDA
-Fe
-fealty
-fear
-feared
-fearful
-fearfully
-fearfulness
-fearing
-fearless
-fearlessly
-fearlessness
-fearnaught
-fearnought
-fears
-fearsome
-feasibility
-feasible
-feasibly
-feast
-feasted
-feasting
-feasts
-feat
-feather
-feather-bed
-feather-brain
-feather-head
-feather-stitch
-feather-weight
-featherbed
-featherbedding
-feathered
-featherer
-featherers
-feathering
-featherless
-Featherman
-feathers
-featherweight
-feathery
-feats
-feature
-featured
-featureless
-features
-featuring
-feaze
-Feb
-febrifuge
-febrile
-Februaries
-February
-fecal
-feces
-feckless
-fecklessly
-feculent
-fecund
-fecundate
-fecundation
-fecundity
-fed
-Fedders
-federacy
-federal
-federalism
-federalist
-federalization
-federalize
-federally
-federals
-federate
-federation
-federative
-fee
-feeb
-feeble
-feeble-minded
-feeble-mindedness
-feebleness
-feebler
-feeblest
-feebly
-feed
-feed-pipe
-feed-tank
-feed-trough
-feedback
-feedbag
-feeder
-feeders
-feeding
-feeding-bottle
-feedings
-feedlot
-feeds
-feel
-feeler
-feelers
-feeling
-feelingly
-feelings
-feels
-Feeney
-fees
-feet
-feetus
-feign
-feigned
-feigning
-feint
-feist
-feisty
-Felder
-Feldman
-feldspar
-Felice
-Felicia
-felicitate
-felicitation
-felicitations
-felicities
-felicitous
-felicitously
-felicity
-feline
-Felix
-fell
-fell-monger
-fellatio
-felled
-feller
-felling
-Fellini
-felloe
-fellow
-fellow-countryman
-fellow-feeling
-fellow-worker
-fellowman
-fellows
-fellowship
-fellowships
-felly
-felon
-felonious
-felony
-felspar
-felt
-felts
-female
-femaleness
-females
-feminality
-femine
-feminine
-femininely
-femininity
-feminism
-feminist
-feminity
-femora
-femoral
-femur
-femurs
-fen
-fence
-fence-sitter
-fenced
-fencer
-fencers
-fences
-fencing
-fend
-fender
-fender-bender
-fenestration
-fennel
-fenny
-Fenton
-Fenwick
-feoff
-feoffee
-feoffer
-feral
-Ferber
-Ferdinand
-Ferdinando
-Ferguson
-ferine
-Fermat
-ferment
-fermentation
-fermentations
-fermented
-fermenting
-ferments
-Fermi
-fermium
-fern
-Fernando
-ferns
-ferny
-ferocious
-ferociously
-ferociousness
-ferocity
-Ferreira
-Ferrer
-ferret
-ferriage
-ferric
-ferried
-ferries
-ferriferous
-ferrite
-ferro-concrete
-ferrography
-ferromagnetic
-ferrous
-ferruginous
-ferrule
-ferry
-ferry-boat
-ferryboat
-ferryman
-fershman
-fertile
-fertilely
-fertility
-fertilization
-fertilize
-fertilized
-fertilizer
-fertilizers
-fertilizes
-fertilizing
-ferule
-fervency
-fervent
-fervently
-fervid
-fervidly
-fervor
-fervors
-fervour
-fescue
-festal
-fester
-festival
-festivale
-festivality
-festivals
-festive
-festively
-festiveness
-festivities
-festivity
-festoon
-festschrift
-feta
-fetal
-fetch
-fetched
-fetcher
-fetches
-fetching
-fetchingly
-fete
-fetich
-fetichism
-fetid
-fetidness
-fetish
-fetishism
-fetishist
-fetishistic
-fetlock
-fetter
-fettered
-fetters
-fettle
-fettuccine
-fetus
-fetuses
-feud
-feudal
-feudalism
-feudalistic
-feudality
-feudatory
-feuds
-feuilleton
-fever
-fevered
-feverish
-feverishly
-feverishness
-fevers
-few
-fewer
-fewest
-fewness
-fey
-fez
-FHA
-fiance
-fiancee
-fianc
-fiance
-fiasco
-fiat
-fib
-fibber
-fibbing
-fiber
-fiber-optic
-fiberboard
-fiberfill
-Fiberglas
-fiberglass
-fibers
-Fibonacci
-fibre
-fibreboard
-fibril
-fibrillate
-fibrillation
-fibrin
-fibroid
-fibrosis
-fibrosities
-fibrosity
-fibrous
-fibrously
-fibster
-fibula
-fibulae
-fibular
-FICA
-fiche
-fichu
-fickle
-fickleness
-fiction
-fictional
-fictionalization
-fictionalize
-fictionally
-fictions
-fictitious
-fictitiously
-fictive
-ficus
-FID
-FID/ET
-fiddle
-Fiddle!
-fiddle-de-dee
-fiddle-dedee
-fiddle-faddle
-fiddled
-fiddler
-fiddles
-fiddlestick
-fiddlesticks
-Fiddlesticks!
-fiddling
-Fidel
-fidelity
-fidget
-fidgets
-fidgety
-fiducial
-fiduciary
-fie
-fief
-fiefdom
-field
-field-engineering
-field-glass
-field-hospital
-field-marshal
-field-marshall
-field-mouse
-field-piece
-field-test
-field-work
-fielded
-fielder
-fielders
-Fields
-fieldwork
-fieldworker
-fiend
-fiendish
-fiendishly
-fierce
-fiercely
-fierceness
-fiercer
-fiercest
-fieriness
-fiery
-fiesta
-fife
-fifer
-fifteen
-fifteens
-fifteenth
-fifth
-fifthly
-fifties
-fiftieth
-fifty
-fifty-fifty
-fig
-fig-tree
-Figaro
-fight
-fighter
-fighter-bomber
-fighters
-fighting
-fights
-figment
-figs
-figuration
-figurative
-figuratively
-figure
-figured
-figurehead
-figures
-figurine
-figuring
-figurings
-Fiji
-Fijian
-Fijians
-filament
-filamentous
-filaments
-filbert
-filch
-file
-file-boner
-file-cabinet
-file-punch
-filed
-filename
-filenames
-filer
-files
-filesystem
-filet
-filial
-filiation
-filibuster
-filibusterer
-filigree
-filigreed
-filing
-filings
-Filipino
-Filipinos
-Filippo
-fill
-fill-in
-fillable
-filled
-filler
-fillers
-fillet
-filling
-fillings
-fillip
-Fillmore
-fills
-filly
-film
-film-camera
-film-star
-filmed
-filminess
-filming
-filmmaker
-filmography
-films
-filmstrip
-filmy
-Filofax
-filter
-filterable
-filtered
-filterer
-filtering
-filters
-filth
-filthier
-filthiest
-filthily
-filthiness
-filthy
-filtrable
-filtrate
-filtration
-fin
-finagle
-finagler
-final
-finale
-finalist
-finality
-finalization
-finalize
-finalized
-finalizes
-finalizing
-finally
-finals
-finance
-financed
-finances
-financial
-financially
-financier
-financiers
-financing
-finch
-find
-finder
-finders
-finding
-findings
-finds
-fine
-fine-tune
-fined
-finely
-fineness
-finer
-finery
-fines
-finespun
-finesse
-finessed
-finessing
-finest
-finger
-finger-board
-finger-nail
-finger-paint
-finger-post
-finger-print
-finger-stall
-finger-tip
-fingerboard
-fingered
-fingering
-fingerings
-fingerling
-fingernail
-fingerprint
-fingerprints
-fingers
-fingertip
-finial
-finical
-finickiness
-finicky
-fining
-finis
-finish
-finished
-finisher
-finishers
-finishes
-finishing
-finite
-finitely
-finiteness
-fink
-Finland
-Finley
-Finn
-finned
-Finnegan
-Finnish
-Finns
-finny
-fins
-fiord
-Fiorello
-Fiori
-fir
-fir-needles
-fire
-fire!
-fire-arm
-fire-ball
-Fire-bird
-fire-brand
-fire-brigade
-fire-cracker
-fire-eater
-fire-engine
-fire-guard
-fire-hook
-fire-insurance
-fire-irons
-fire-light
-fire-new
-fire-policy
-fire-proof
-fire-screen
-fire-side
-fire-wood
-fire-works
-firearm
-firearms
-fireball
-fireboat
-firebomb
-firebox
-firebrand
-firebreak
-firebrick
-firebug
-firecracker
-fired
-firedamp
-firefight
-firefighter
-firefighting
-fireflies
-firefly
-fireguard
-firehouse
-firelight
-fireman
-firemen
-fireplace
-fireplaces
-fireplug
-firepower
-fireproof
-firer
-firers
-fires
-fireside
-Firestone
-firetruck
-firewall
-firewater
-firewood
-firework
-fireworks
-firing
-firings
-firkin
-firm
-firmament
-firmed
-firmer
-firmest
-firming
-firmly
-firmness
-firms
-firmware
-first
-first-aid
-first-born
-first-class
-first-cost
-first-form
-first-fruits
-first-generation
-first-grader
-first-hand
-first-rate
-first-string
-first-stringer
-firstborn
-firsthand
-firstling
-firstly
-firsts
-firth
-fisc
-fiscal
-fiscally
-Fischbein
-Fischer
-fish
-fish-pond
-fishbowl
-fishcake
-fished
-fisher
-fisherman
-fishermen
-fishers
-fishery
-fishhook
-fishily
-fishiness
-fishing
-fishing-rod
-Fishkill
-fishmonger
-fishmonger's
-fishnet
-fishpond
-fishtail
-fishwife
-fishwives
-fishy
-fisk
-Fiske
-fissile
-fission
-fissionable
-fissure
-fissured
-fist
-fisted
-fistfight
-fistful
-fisticuff
-fisticuffs
-fists
-fistula
-fistulae
-fistulous
-fit
-fitch
-Fitchburg
-fitchet
-fitchew
-fitful
-fitfully
-fitfulness
-fitly
-fitment
-fitness
-fits
-fitted
-fitter
-fitters
-fitting
-fittingly
-fittings
-Fitzgerald
-Fitzpatrick
-Fitzroy
-five
-five-and-dime
-five-and-ten
-fivefold
-fiver
-fives
-fix
-fixable
-fixate
-fixated
-fixates
-fixating
-fixation
-fixations
-fixative
-fixed
-fixedly
-fixedness
-fixer
-fixers
-fixes
-fixing
-fixings
-fixity
-fixture
-fixtures
-Fizeau
-fizgig
-fizz
-fizzle
-fizzled
-fizzy
-fjord
-FL
-Fla
-flab
-flabbergast
-flabbergasted
-flabbily
-flabbiness
-flabby
-flaccid
-flaccidity
-flaccidly
-flack
-flag
-flag-ship
-flagella
-flagellant
-flagellate
-flagellation
-flagellum
-flagged
-flagging
-flaggy
-flagitious
-Flagler
-flagman
-flagon
-flagpole
-flagrance
-flagrancy
-flagrant
-flagrantly
-flags
-flagship
-flagstone
-flail
-flair
-flak
-flake
-flaked
-flakes
-flakiness
-flaking
-flaky
-flam
-flambe
-flambeau
-flamboyance
-flamboyancy
-flamboyant
-flamboyantly
-flame
-flame-projector
-flame-thrower
-flamed
-flamenco
-flameproof
-flamer
-flamers
-flames
-flamethrower
-flaming
-flamingo
-flammability
-flammable
-flamy
-flan
-Flanagan
-Flanders
-flange
-flank
-flanked
-flanker
-flanking
-flanks
-flannel
-flannelet
-flannelette
-flannels
-flap
-flap-doodle
-flapdoodle
-flapjack
-flapjaw
-flapper
-flaps
-flare
-flare-up
-flared
-flares
-flareup
-flaring
-flash
-flash-bulb
-flash-gun
-flash-light
-flash-point
-flashback
-flashbulb
-flashcard
-flashcube
-flashed
-flasher
-flashers
-flashes
-flashgun
-flashily
-flashiness
-flashing
-flashlight
-flashlights
-flashpoint
-flashy
-flask
-flasket
-flat
-flat-chested
-flat-fish
-flat-foot(ed)
-flat-footed
-flat-iron
-flat-out
-flatbed
-flatboat
-flatcar
-flatfeet
-flatfish
-flatfoot
-flatfooted
-flathead
-flatiron
-flatland
-flatly
-flatness
-flats
-flatten
-flattened
-flattening
-flatter
-flattered
-flatterer
-flattering
-flatteringly
-flattery
-flattest
-flatties
-flattish
-flattop
-flatulence
-flatulent
-flatus
-flatware
-flatworm
-Flaubert
-flaunt
-flaunted
-flaunting
-flauntingly
-flaunts
-flautist
-flavor
-flavored
-flavorful
-flavoring
-flavorings
-flavorless
-flavors
-flavorsome
-flavour
-flaw
-flawed
-flawless
-flawlessly
-flawlessness
-flaws
-flax
-flax-comb
-flax-seed
-flaxen
-flay
-flea
-flea-bite
-flea-bitten
-fleabag
-fleas
-fleck
-flecked
-flection
-fled
-Fledermaus
-fledge
-fledged
-fledgeling
-fledgling
-fledglings
-flee
-fleece
-fleecer
-fleeces
-fleeciness
-fleecy
-fleeing
-fleer
-flees
-fleet
-fleetest
-fleeting
-fleetingly
-fleetingness
-fleetly
-fleetness
-fleets
-Fleischman
-Fleisher
-Fleming
-Flemings
-Flemish
-Flemished
-Flemishes
-Flemishing
-flesh
-flesh-coloured
-flesh-fly
-flesh-hook
-flesh-pot
-fleshed
-fleshes
-fleshing
-fleshly
-fleshpot
-fleshy
-Fletcher
-Fletcherize
-Fletcherizes
-fleur-de-lis
-fleur-de-lys
-fleuron
-fleurs-de-lis
-fleurs-de-lys
-flew
-flex
-flexibilities
-flexibility
-flexible
-flexibly
-flexion
-flexitime
-flexography
-flexowriter
-flextime
-flexuous
-flexure
-flibbertigibbet
-flick
-flicked
-flicker
-flickering
-flicking
-flicks
-flied
-flier
-fliers
-flies
-flight
-flightiness
-flightless
-flights
-flighty
-flim-flamer
-flim-flammery
-flimflam
-flimsily
-flimsiness
-flimsy
-flinch
-flinched
-flinches
-flinching
-fling
-flings
-flint
-flintlock
-flinty
-flip
-flip-flap
-flip-flop
-flipflop
-flippancy
-flippant
-flippantly
-flipped
-flipper
-flipping
-flips
-flirt
-flirtation
-flirtatious
-flirtatiously
-flirtatiousness
-flirted
-flirting
-flirts
-flit
-flitch
-flitting
-flivver
-Flo
-float
-floatage
-floated
-floater
-floating
-floats
-flock
-flocked
-flocking
-flocks
-floe
-flog
-flogger
-flogging
-flood
-flood-gate
-flooded
-floodgate
-flooding
-floodlight
-floodlights
-floodlit
-floodplain
-floodwater
-floor
-floor-cloth
-floor-length
-floor-walker
-floorboard
-floored
-flooring
-floorings
-floors
-floorwalker
-floozie
-floozy
-flop
-Flop!
-flophouse
-floppies
-floppily
-floppiness
-flopping
-floppy
-flops
-flora
-floraal
-florae
-floral
-Florence
-Florentine
-florescence
-florescent
-floret
-floriculture
-florid
-Florida
-Floridan
-Floridian
-Floridians
-floridly
-floridness
-florin
-florist
-florist's
-florists
-floss
-flossed
-flosses
-flossing
-flossy
-flotation
-flotilla
-flotsam
-flounce
-flouncy
-flounder
-floundered
-floundering
-flounders
-flour
-flour-mill
-floured
-flourish
-flourished
-flourishes
-flourishing
-floury
-flout
-flouter
-flow
-flowchart
-flowcharting
-flowcharts
-flowed
-flower
-flower-girl
-flower-pot
-flowerbed
-flowered
-floweriness
-flowering
-flowerless
-flowerpot
-flowers
-flowery
-flowing
-flowline
-flown
-flows
-Floyd
-flu
-flub
-flubdub
-fluctuate
-fluctuates
-fluctuating
-fluctuation
-fluctuations
-flue
-fluency
-fluent
-fluently
-fluff
-fluffier
-fluffiest
-fluffiness
-fluffy
-fluid
-fluidity
-fluidly
-fluids
-fluke
-flukey
-fluky
-flume
-flummox
-flung
-flunk
-flunked
-flunkey
-flunky
-fluor
-fluoresce
-fluorescence
-fluorescent
-fluoridate
-fluoridation
-fluoride
-fluorine
-fluorite
-fluorocarbon
-fluoroscope
-fluoroscopic
-flurried
-flurry
-flush
-flushed
-flushes
-flushing
-fluster
-flustered
-flute
-fluted
-fluting
-flutist
-flutter
-fluttered
-fluttering
-flutters
-fluttery
-flux
-fluxion
-fly
-fly-by
-fly-by-night
-fly-fishing
-fly-leaf
-fly-wheel
-flyable
-flyblown
-flyby
-flycatcher
-flyer
-flyers
-flying
-flying-boat
-flying-bridge
-flying-machine
-flying-officer
-flyleaf
-flyleaves
-Flynn
-flyover
-flypaper
-flyspeck
-flyswatter
-flyway
-flyweight
-flywheel
-foal
-foam
-foamed
-foaminess
-foaming
-foams
-foamy
-fob
-fobbing
-focal
-focally
-foci
-focus
-focused
-focuses
-focusing
-focussed
-fodder
-fodderer
-foe
-foes
-foetal
-foetus
-foetuses
-fog
-fog-bound
-fog-lamp
-Fogarty
-fogbound
-fogey
-fogged
-foggier
-foggiest
-foggily
-fogginess
-fogging
-foggy
-foghorn
-fogs
-fogy
-fogyish
-foible
-foil
-foiled
-foiling
-foils
-foist
-fold
-foldaway
-folded
-folder
-folders
-folding
-foldout
-folds
-Foley
-foliage
-foliate
-foliation
-folio
-folk
-folk-lore
-folk-song
-folk-tale
-folklore
-folkloric
-folklorist
-folks
-folksiness
-folksinger
-folksinging
-folksong
-folksy
-folktale
-folkway
-follicle
-follies
-follow
-follow-through
-follow-up
-followed
-follower
-followers
-following
-followings
-follows
-folly
-Folsom
-FOM
-Fomalhaut
-foment
-fomentation
-fond
-fondant
-fonder
-fondle
-fondled
-fondles
-fondling
-fondly
-fondness
-fondu
-fondue
-font
-Fontaine
-Fontainebleau
-Fontana
-fontanel
-fontanelle
-fonts
-food
-food-stuffs
-foodborne
-foodie
-foods
-foodstuff
-foodstuffs
-fool
-fooled
-foolery
-foolhardily
-foolhardiness
-foolhardy
-fooling
-foolish
-foolishly
-foolishness
-foolproof
-fools
-foolscap
-foot
-foot-bridge
-foot-candle
-foot-fall
-foot-gear
-foot-lights
-foot-mark
-foot-note
-foot-notes
-foot-pad
-foot-passenger
-foot-path
-foot-pound
-foot-print
-foot-rag
-foot-soldier
-footage
-football
-footballer
-footballs
-footboard
-footboy
-footbrake
-footbridge
-Foote
-footed
-footer
-footers
-footfall
-foothill
-foothold
-footing
-footle
-footless
-footlights
-footling
-footlocker
-footloose
-footman
-footnote
-footnotes
-footpath
-footprint
-footprints
-footrace
-footrest
-footsie
-footsore
-footstep
-footsteps
-footstool
-footus
-footwear
-footwork
-foozle
-fop
-foppery
-foppish
-foppishness
-for
-fora
-forage
-foraged
-forager
-forages
-foraging
-foramen
-foray
-forays
-forbad
-forbade
-forbear
-forbearance
-forbears
-Forbes
-forbid
-forbidden
-forbidding
-forbiddingly
-forbids
-forbore
-forborne
-force
-force-fed
-force-feed
-forced
-forceful
-forcefully
-forcefulness
-forceps
-forcer
-forces
-forcible
-forcibly
-forcing
-ford
-fordable
-Fordham
-fords
-fore
-fore-and-aft
-fore-edge
-forearm
-forearms
-forebear
-forebode
-foreboding
-forecast
-forecasted
-forecaster
-forecasters
-forecasting
-forecastle
-forecasts
-foreclose
-foreclosure
-forecourt
-foredoom
-forefather
-forefathers
-forefeet
-forefinger
-forefingers
-forefoot
-forefront
-foregather
-forego
-foregoer
-foregoes
-foregoing
-foregone
-foreground
-foregrounding
-forehand
-forehanded
-forehead
-foreheads
-foreign
-foreign-language
-foreigner
-foreigners
-foreignness
-foreigns
-foreing
-foreknew
-foreknow
-foreknowledge
-foreknown
-forel
-foreleg
-forelimb
-forelock
-foreman
-foremast
-foremost
-forename
-forenamed
-forenoon
-forensic
-forensically
-forensics
-foreordain
-forepart
-foreperson
-foreplay
-forequarter
-forerunner
-forerunners
-foresail
-foresaw
-foresee
-foreseeable
-foreseen
-foreseer
-foresees
-foreshadow
-foreshorten
-foresight
-foresighted
-foresightedness
-foreskin
-forest
-forestage
-forestall
-forestalled
-forestalling
-forestallment
-forestalls
-forestation
-forested
-forester
-foresters
-forestland
-forestry
-forests
-foreswear
-foretaste
-foretell
-foretelling
-foretells
-forethought
-foretitle
-foretold
-foretop
-forever
-forevermore
-forewarn
-forewarned
-forewarning
-forewarnings
-forewarns
-forewent
-forewoman
-foreword
-forfeit
-forfeited
-forfeiture
-forgather
-forgave
-forge
-forged
-forger
-forgeries
-forgery
-forges
-forget
-forget-me-not
-forget-me-nots
-forgetful
-forgetfully
-forgetfulness
-forgets
-forgettable
-forgettably
-forgetting
-forging
-forgivable
-forgivably
-forgive
-forgive!
-forgiven
-forgiveness
-forgiver
-forgives
-forgiving
-forgivingly
-forgo
-forgoer
-forgone
-forgot
-forgotten
-fork
-fork-lift
-forked
-forkful
-forking
-forklift
-forks
-forky
-forlorn
-forlornly
-form
-formal
-formaldehyde
-formalism
-formalisms
-formalist
-formalities
-formality
-formalization
-formalizations
-formalize
-formalized
-formalizes
-formalizing
-formally
-formant
-formants
-format
-formation
-formations
-formative
-formatively
-formatless
-formats
-formatted
-formatter
-formatters
-formatting
-formed
-former
-formerly
-formfitting
-formic
-Formica
-formicary
-Formicas
-formidable
-formidably
-forming
-formless
-formlessly
-formlessness
-Formosa
-Formosan
-forms
-formula
-formulae
-formulaic
-formulas
-formulate
-formulated
-formulates
-formulating
-formulation
-formulations
-formulator
-formulators
-fornicate
-fornication
-fornicator
-forrel
-Forrest
-forril
-forsake
-forsaken
-forsakes
-forsaking
-forsook
-forsooth
-Forster
-forswear
-forswore
-forsworn
-Forsythe
-forsythia
-fort
-Fortaleza
-forte
-Fortescue
-forth
-forthcoming
-forthright
-forthrightly
-forthrightness
-forthwith
-fortier
-forties
-fortieth
-fortification
-fortifications
-fortified
-fortifier
-fortifies
-fortify
-fortifying
-fortiori
-fortissimo
-fortitude
-fortnight
-fortnight's
-fortnightly
-FORTRAN
-fortress
-fortresses
-forts
-fortuitous
-fortuitously
-fortuitousness
-fortuity
-fortunate
-fortunately
-fortune
-fortune-teller
-fortune-telling
-fortunes
-fortuneteller
-fortunetelling
-forty
-forty-five
-forty-niner
-forum
-forums
-forward
-forward(s)
-forward-looking
-forwarded
-forwarder
-forwarding
-forwardly
-forwardness
-forwards
-forwent
-foss
-fosse
-fossil
-fossilization
-fossilize
-foster
-foster-father
-foster-mother
-fostered
-fostering
-fosters
-fought
-foul
-foul-mouth
-foul-mouthed
-foul-up
-foulard
-fouled
-foulest
-fouling
-foully
-foulmouth
-foulmouthed
-foulness
-fouls
-found
-foundation
-foundations
-founded
-founder
-foundered
-founders
-founding
-foundling
-foundries
-foundry
-founds
-fount
-fountain
-fountain-head
-fountain-pen
-fountainhead
-fountains
-founts
-four
-four-dimensional
-four-flush
-four-flusher
-four-footed
-four-in-hand
-four-legged
-four-o'clock
-four-oar
-four-poster
-four-seater
-four-square
-four-stroke
-four-wheel
-fourfold
-Fourier
-fourpence
-fourpenny
-fourposter
-fours
-fourscore
-foursome
-foursquare
-fourteen
-fourteen-year-old
-fourteens
-fourteenth
-fourth
-fourth-class
-fourthly
-fowl
-fowler
-fowls
-fox
-fox-glove
-fox-hound
-fox-terrier
-fox-trot
-foxed
-foxes
-foxfire
-foxglove
-Foxhall
-foxhole
-foxhound
-foxily
-foxiness
-foxtrot
-foxy
-foyer
-FPO
-Fr
-fracas
-fraction
-fractional
-fractionally
-fractions
-fractious
-fractiously
-fractiousness
-fracture
-fractured
-fractures
-fracturing
-fragile
-fragility
-fragment
-fragmentary
-fragmentation
-fragmented
-fragmenting
-fragments
-fragrance
-fragrances
-fragrant
-fragrantly
-frail
-frailest
-frailly
-frailness
-frailty
-fraily
-Fraktur
-frame
-frame-aerial
-frame-saw
-frame-up
-framed
-framer
-frames
-framework
-frameworks
-framing
-Fran
-franc
-Francaise
-France
-Frances
-Francesca
-Francesco
-franchise
-franchisee
-franchiser
-franchises
-franchisor
-Francie
-Francine
-Francis
-franciscan
-Franciscans
-Francisco
-francium
-Francize
-Francizes
-Franck
-Franco
-Francois
-Francoise
-francs
-frangibility
-frangible
-frank
-franked
-Frankel
-Frankenstein
-franker
-frankest
-Frankfort
-Frankfurt
-frankfurter
-frankfurters
-Frankie
-frankincense
-franking
-Frankish
-Franklin
-Franklinization
-Franklinizations
-frankly
-frankness
-franks
-Franny
-frantic
-frantically
-Franz
-frappe
-Fraser
-frat
-fraternal
-fraternally
-fraternities
-fraternity
-fraternization
-fraternize
-fraternizer
-fratricidal
-fratricide
-Frau
-fraud
-frauds
-fraudulence
-fraudulent
-fraudulently
-Frauen
-fraught
-Fraulein
-fray
-frayed
-fraying
-Frayne
-frays
-Frazier
-frazzle
-frazzled
-freak
-freak-out
-freaked
-freakish
-freakishly
-freakishness
-freakout
-freaks
-freaky
-freckle
-freckled
-freckles
-freckly
-Fred
-Freddie
-Freddy
-Frederic
-Frederick
-Fredericks
-Fredericksburg
-Frederico
-Fredericton
-Fredholm
-Fredrick
-Fredrickson
-free
-free-base
-free-floating
-free-for-all
-free-handed
-free-lance
-free-lancer
-free-living
-freebase
-freebee
-freebie
-freeboot
-freebooter
-freeborn
-freed
-freedom
-freedoms
-freehand
-freehold
-freeholder
-freeing
-freeings
-freelance
-freelancer
-freeload
-freeloader
-freely
-freeman
-freemason
-Freemasonry
-Freemasons
-freeness
-Freeport
-freer
-frees
-freest
-freestanding
-freestone
-freestyle
-freethinker
-freethinking
-Freetown
-freeware
-freeway
-freewheel
-freewheeling
-freewill
-freezable
-freeze
-freeze-dried
-freeze-dry
-freezer
-freezers
-freezes
-freezing
-freezing-point
-Freida
-freight
-freight-train
-freightage
-freighted
-freighter
-freighters
-freighting
-freights
-Fremont
-French
-French-fry
-Frenchize
-Frenchizes
-Frenchman
-Frenchmen
-Frenchwoman
-frenetic
-frenetically
-frenzied
-frenziedly
-frenzy
-frequencies
-frequency
-frequent
-frequent-flier
-frequented
-frequenter
-frequenters
-frequenting
-frequently
-frequents
-fresco
-frescoes
-fresh
-freshen
-freshened
-freshener
-fresheners
-freshening
-freshens
-fresher
-freshest
-freshet
-freshly
-freshman
-freshmen
-freshness
-freshwater
-Fresnel
-Fresno
-fret
-fret-saw
-fretful
-fretfully
-fretfulness
-fretsaw
-fretted
-fretwork
-Freud
-Freudian
-Freudianism
-Freudianisms
-Freudians
-Frey
-Freya
-Fri
-friable
-friar
-friars
-friary
-fribble
-fricassee
-fricative
-fricatives
-Frick
-friction
-frictional
-frictionless
-frictions
-Friday
-Fridays
-fridge
-fried
-friedcake
-Friedman
-Friedrich
-friend
-friendless
-friendlier
-friendliest
-friendliness
-friendly
-friends
-friendship
-friendships
-frier
-fries
-Friesland
-frieze
-friezes
-frig
-frigate
-frigates
-Frigga
-frigging
-fright
-frighten
-frightened
-frightening
-frighteningly
-frightens
-frightful
-frightfully
-frightfulness
-frigid
-Frigidaire
-frigidity
-frigidly
-frigidness
-frill
-frills
-frilly
-fringe
-fringed
-fringemaker
-frippery
-Frisbee
-Frisia
-Frisian
-frisk
-frisked
-friskily
-friskiness
-frisking
-frisks
-frisky
-Frito
-fritter
-frivolity
-frivolous
-frivolously
-frivolousness
-friz
-frizz
-frizzle
-frizzly
-frizzy
-fro
-frock
-frocks
-frog
-frogflower
-frogman
-frogs
-frogwort
-frolic
-frolicker
-frolics
-frolicsome
-from
-frond
-fronsy
-front
-front-runner
-frontage
-frontal
-frontally
-fronted
-frontier
-frontier-guard
-frontiers
-frontiersman
-frontiersmen
-fronting
-frontispiece
-frontless
-frontrunner
-fronts
-frontside
-frontward
-frontwards
-fronzy
-frosh
-frost
-frost-bite
-frost-bound
-Frostbelt
-frostbit
-frostbite
-frostbitten
-frosted
-frostily
-frostiness
-frosting
-frosts
-frosty
-froth
-frother
-frothiness
-frothing
-frothy
-froufrou
-froward
-frowardness
-frown
-frowned
-frowning
-frowns
-frowst
-frowsty
-frowsy
-frowzily
-frowziness
-frowzy
-froze
-frozen
-frozenly
-fructiferous
-fructification
-fructify
-fructose
-Fruehauf
-frugal
-frugality
-frugally
-frugivorous
-fruit
-fruitage
-fruitcake
-fruited
-fruiter
-fruiterer
-fruiterer's
-fruitful
-fruitfully
-fruitfulness
-fruitiness
-fruition
-fruitless
-fruitlessly
-fruitlessness
-fruits
-fruity
-frumentaceous
-frump
-frumpish
-frumpy
-Frunze
-frusta
-frustrate
-frustrated
-frustrates
-frustrating
-frustratingly
-frustration
-frustrations
-frustum
-fruticose
-fry
-Frye
-fryer
-frying-pan
-FSL
-FSLIC
-FTC
-FTH
-Fuchs
-fuchsia
-fuchsine
-fuck
-fucker
-fucking
-fucus
-fud
-fuddle
-fuddy-duddy
-fudge
-fuehrer
-fuel
-fueled
-fueling
-fuels
-fugacious
-fugal
-fuggle
-fugitive
-fugitives
-fugleman
-fugue
-fuhrer
-Fuji
-Fujitsu
-Fujiyama
-Fukuoka
-Fulbright
-Fulbrights
-fulcra
-fulcrum
-fulfil
-fulfill
-fulfilled
-fulfilling
-fulfillment
-fulfillments
-fulfills
-fulfilment
-fulgent
-fulgurant
-fulgurate
-fuliginous
-full
-full-back
-full-blooded
-full-blown
-full-bodied
-full-dress
-full-fledged
-full-grown
-full-length
-full-mouthed
-full-out
-full-scale
-full-size
-full-time
-full-timer
-fullback
-fullbound
-fuller
-Fullerton
-fullest
-fullness
-fullstop
-fully
-fulminate
-fulmination
-fulness
-fulsome
-fulsomely
-fulsomeness
-Fulton
-fulvous
-fumble
-fumbled
-fumbler
-fumbling
-fumblingly
-fume
-fumed
-fumes
-fumigant
-fumigate
-fumigation
-fumigator
-fuming
-fumy
-fun
-Funafuti
-funambulist
-function
-functional
-functionalities
-functionality
-functionally
-functionals
-functionary
-functioned
-functioning
-functions
-functor
-functors
-fund
-fund-raiser
-fund-raising
-fundament
-fundamental
-fundamentalism
-fundamentalist
-fundamentally
-fundamentals
-funded
-funder
-funders
-funding
-funds
-Fundy
-funeral
-funerals
-funerary
-funereal
-funereally
-funfair
-fungal
-fungi
-fungible
-fungicidal
-fungicide
-fungoid
-fungous
-fungus
-funicle
-funicular
-funk
-funkiness
-funky
-funnel
-funneled
-funneling
-funnels
-funnier
-funnies
-funniest
-funnily
-funniness
-funny
-funny-bone
-fur
-furbelow
-furbish
-furcate
-furies
-furious
-furiouser
-furiously
-furl
-furlong
-furlough
-Furman
-furnace
-furnaces
-furnish
-furnished
-furnisher
-furnishes
-furnishing
-furnishings
-furniture
-furor
-furore
-furred
-furrier
-furriers
-furriness
-furring
-furrow
-furrowed
-furrows
-furry
-furs
-further
-furtherance
-furthered
-furthering
-furthermore
-furthermost
-furthers
-furthest
-furtive
-furtively
-furtiveness
-furuncle
-fury
-furze
-fuscous
-fuse
-fuse-maker
-fusebox
-fused
-fusee
-fuselage
-fuses
-Fushun
-fusibility
-fusible
-fusil
-fusileer
-fusilier
-fusillade
-fusing
-fusion
-fuss
-fussbudget
-fussily
-fussiness
-fussing
-fusspot
-fussy
-fust
-fustian
-fustic
-fustigate
-fustigation
-fustiness
-fusty
-futile
-futilely
-futility
-futon
-future
-futures
-futurism
-futurist
-futuristic
-futurity
-futurologist
-futurology
-futz
-fuze
-fuzee
-fuzz
-fuzzier
-fuzzily
-fuzziness
-fuzzy
-FWD
-FY
-FYI
-fyke
-G-man
-G-string
-gab
-gabardine
-gabbiness
-gabbing
-gabble
-gabby
-gaberdine
-Gaberones
-gabfest
-gabion
-gable
-gabled
-gabler
-gables
-Gabon
-Gabonese
-Gaborone
-Gabriel
-Gabrielle
-gad
-gadabout
-gadder
-gadfly
-gadget
-gadgeteer
-gadgetry
-gadgets
-gadolinium
-Gael
-Gaelic
-Gaelicization
-Gaelicizations
-Gaelicize
-Gaelicizes
-gaff
-gaffe
-gaffer
-gag
-gaga
-Gagarin
-gage
-gagged
-gagging
-gaggle
-gaging
-gags
-gaieties
-gaiety
-Gail
-gaily
-gain
-gained
-gainer
-gainers
-Gaines
-Gainesville
-gainful
-gainfully
-gaining
-gainings
-gainless
-gains
-gainsaid
-gainsay
-gainsayer
-gait
-gaited
-gaiter
-gaiters
-Gaithersburg
-gal
-gala
-galactic
-Galahad
-Galantine
-Galapagos
-Galatea
-Galatean
-Galateans
-Galatia
-Galatians
-galaxies
-galaxy
-Galbreath
-gale
-Galen
-galena
-Galicia
-Galilean
-Galilee
-Galileo
-gall
-gall-bladder
-gall-nut
-gall-stone
-Gallagher
-gallant
-gallantly
-gallantry
-gallants
-gallbladder
-galled
-galleon
-galleria
-galleried
-galleries
-gallery
-galley
-galley-proof
-galley-slave
-galleys
-Gallia
-Gallic
-Gallicism
-gallimaufry
-galling
-gallium
-gallivant
-gallon
-gallons
-galloon
-gallop
-galloped
-galloper
-galloping
-gallops
-Galloway
-gallows
-gallows-bird
-gallows-ripe
-galls
-gallstone
-Gallup
-Galois
-galoot
-galore
-galosh
-galoshe
-galoshes
-Galt
-galumph
-galvanic
-galvanical
-galvanise
-galvanism
-galvanization
-galvanize
-galvanized
-galvanometer
-galvanoplastics
-Galveston
-Galvin
-Galway
-Gama
-Gambia
-Gambian
-gambit
-gamble
-gambled
-gambler
-gambler-house
-gamblers
-gambles
-gambling
-gambol
-game
-game-bag
-game-keeper
-gamecock
-gamed
-gamekeeper
-gamely
-gameness
-games
-gamesmanship
-gamesome
-gamester
-gamete
-gametic
-gamey
-gamin
-gamine
-gaminess
-gaming
-gamma
-gammon
-gamut
-gamy
-gander
-Gandhi
-Gandhian
-gang
-gangbusters
-ganger
-Ganges
-gangland
-ganglia
-gangling
-ganglion
-ganglionic
-gangly
-gangplank
-gangrene
-gangrenous
-gangs
-gangster
-gangsters
-gangue
-gangway
-gannet
-Gannett
-ganster
-gantlet
-gantry
-Ganymede
-GAO
-gaol
-gaol/jail/bird
-gaoler
-gap
-gape
-gaped
-gapes
-gaping
-gaps
-gar
-garage
-garaged
-garages
-garamond
-garb
-garbage
-garbages
-garbanzo
-garbed
-garble
-garbled
-Garcia
-garcon
-garden
-garden-husbandry
-garden-party
-garden-plot
-garden-pot
-garden-tillage
-garden-variety
-gardened
-gardener
-gardeners
-gardenia
-gardening
-gardens
-Gardner
-Garfield
-garfish
-Garfunkel
-gargantuan
-gargle
-gargled
-gargles
-gargling
-gargoyle
-Garibaldi
-garish
-garishly
-garishness
-garland
-garlanded
-garlic
-garlicky
-garment
-garments
-garner
-garnered
-garnet
-Garnett
-garnish
-garnishee
-garnishment
-garniture
-garote
-garotte
-garret
-Garrett
-garrison
-garrisoned
-Garrisonian
-garrote
-garroter
-garrotte
-garrulity
-garrulous
-garrulously
-garrulousness
-Garry
-garter
-garters
-Garth
-Garvey
-Gary
-gas
-gas-bag
-gas-bracket
-gas-burner
-gas-coal
-gas-engine
-gas-fitter
-gas-guzzler
-gas-helmet
-gas-holder
-gas-light
-gas-main
-gas-mask
-gas-meter
-gas-motor
-gas-oven
-gas-pipe
-gas-proof
-gas-works
-gasateria
-gasbag
-Gascony
-gaseous
-gaseously
-gases
-gash
-gashes
-gasholder
-gasification
-gasify
-gasket
-gaslight
-gasohol
-gasolene
-gasoline
-gasometer
-gasonline
-gasp
-gasped
-Gaspee
-gasping
-gasps
-gassed
-gasser
-Gasset
-gassing
-gassings
-gassy
-Gaston
-gastric
-gastritis
-gastroenteritis
-gastrointestinal
-gastronome
-gastronomic
-gastronomical
-gastronomically
-gastronomy
-gastropod
-gaswork
-gasworks
-gate
-gate-crasher
-gate-keeper
-gate-money
-gateau
-gatecrash
-gatecrasher
-gated
-gatehouse
-gatekeeper
-gateman
-gatepost
-gates
-gateway
-gateways
-gather
-gathered
-gatherer
-gatherers
-gathering
-gatherings
-gathers
-gating
-Gatlinburg
-gator
-Gatsby
-gauche
-gauchely
-gaucheness
-gaucherie
-gaucho
-gaud
-gaudily
-gaudiness
-gaudy
-gauffer
-gauge
-gauged
-gauges
-Gauguin
-Gaul
-Gaulish
-Gaulle
-Gauls
-gaunt
-gauntlet
-Gauntley
-gauntness
-Gauss
-Gaussian
-Gautama
-gauze
-gauziness
-gauzy
-gave
-gavel
-gavelkind
-Gavin
-gavotte
-gawk
-gawkily
-gawkiness
-gawky
-gawry
-gay
-gaycat
-gayer
-gayest
-gayety
-Gaylor
-Gaylord
-gayly
-gayness
-Gaynor
-gaze
-gazebo
-gazed
-gazelle
-gazer
-gazers
-gazes
-gazette
-gazetteer
-gazing
-gazpacho
-GB
-Gd
-Gdansk
-GDBMS
-GDP
-Ge
-gear
-gear-box
-gear-lever
-gearbox
-geared
-gearing
-gears
-gearshift
-gearwheel
-Geary
-gecko
-GED
-gee
-Gee!
-geegaw
-geek
-geeky
-geese
-geest
-geez
-geezer
-Gehrig
-Geiger
-Geigy
-geisha
-gel
-gelatin
-gelatine
-gelatinous
-gelcap
-geld
-gelding
-gelid
-gelignite
-gelled
-gelling
-gels
-gem
-geminate
-gemination
-Gemini
-Geminid
-Gemma
-gemmation
-gemmology
-gemological
-gemologist
-gemology
-gems
-gemstone
-gen
-gendarme
-gender
-genders
-gene
-genealogical
-genealogically
-genealogist
-genealogy
-genera
-general
-generalia
-generalissimo
-generalist
-generalists
-generalities
-generality
-generalization
-generalizations
-generalize
-generalized
-generalizer
-generalizers
-generalizes
-generalizing
-generally
-generals
-generalship
-generate
-generated
-generates
-generating
-generation
-generational
-generations
-generative
-generator
-generators
-generatrix
-generic
-generically
-generosities
-generosity
-generous
-generously
-generousness
-genes
-Genesco
-geneses
-genetic
-genetically
-geneticist
-genetics
-Geneva
-Genevan
-Genevieve
-genial
-geniality
-genially
-genie
-genii
-genital
-genitalia
-genitally
-genitals
-genitive
-genitourinary
-genius
-geniuses
-Genoa
-genocidal
-genocide
-genome
-genre
-genres
-gent
-genteel
-genteelly
-genteelness
-gentian
-gentile
-gentility
-gentle
-gentlefolk
-gentlefolks
-gentleman
-gentlemanlike
-gentlemanly
-gentlemen
-gentleness
-gentler
-gentlest
-gentlewoman
-gently
-gentrification
-gentrify
-gentry
-genuflect
-genuflection
-genuine
-genuinely
-genuineness
-genus
-geocentric
-geocentrically
-geochemistry
-geode
-geodesic
-geodesy
-geodetic
-Geoff
-Geoffrey
-geographer
-geographic
-geographical
-geographically
-geography
-geologic
-geological
-geologically
-geologist
-geologists
-geology
-geomagnetic
-geomagnetism
-geometer
-geometric
-geometrical
-geometrically
-geometrician
-geometries
-geometry
-geophysical
-geophysicist
-geophysics
-geopolitical
-geopolitics
-George
-Georges
-Georgetown
-georgette
-Georgia
-Georgian
-Georgians
-geostationary
-geosynchronous
-geosyncline
-geothermal
-geothermic
-GEPOS
-Gerald
-Geraldine
-geranium
-Gerard
-Gerber
-gerbil
-Gerhard
-Gerhardt
-geriatric
-geriatrics
-germ
-germ-cell
-german
-germane
-Germania
-Germanic
-Germanism
-germanium
-germanize
-Germans
-Germantown
-Germany
-germicidal
-germicide
-germinal
-germinate
-germinated
-germinates
-germinating
-germination
-Gerome
-Geronimo
-gerontological
-gerontologist
-gerontology
-Gerry
-gerrymander
-gerrymandering
-Gershwin
-Gershwins
-Gertrude
-gerund
-gestate
-gestation
-gestational
-gesticulate
-gesticulation
-gestural
-gesture
-gestured
-gestures
-gesturing
-gesundheit
-get
-get-at-able
-get-away
-get-together
-get-up
-get-up-and-go
-getaway
-geting
-gets
-getter
-getters
-getting
-Getty
-Gettysburg
-getup
-gewgaw
-geyser
-Ghana
-Ghanaian
-Ghanian
-ghastliness
-ghastly
-ghat
-Ghent
-gherkin
-ghetto
-ghettoize
-ghost
-ghost-writer
-ghosted
-ghosting
-ghostliness
-ghostly
-ghosts
-ghostwrite
-ghostwriter
-ghostwritten
-ghostwrote
-ghoul
-ghoulish
-ghoulishly
-ghoulishness
-GHQ
-GI
-Giacomo
-giant
-giantess
-giants
-gib
-gibber
-gibberish
-gibbet
-gibbon
-Gibbons
-gibbous
-Gibbs
-Gibby
-gibe
-giblet
-giblets
-Gibraltar
-Gibson
-giddily
-giddiness
-Giddings
-giddy
-Gide
-Gideon
-Gifford
-gift
-gift-over
-gift-wrap
-gifted
-gifts
-gig
-gigabit
-gigabits
-gigabyte
-gigabytes
-gigacycle
-gigahertz
-gigantic
-gigantically
-gigavolt
-gigawatt
-giggle
-giggled
-giggler
-giggles
-giggling
-giggly
-GIGI
-GIGO
-gigolo
-Gil
-Gilbert
-Gilbertson
-Gilchrist
-gild
-gilded
-gilder
-gilding
-gilds
-Gilead
-Giles
-Gilkson
-gill
-gill-arches
-gill-openings
-Gillespie
-Gillette
-Gilligan
-gills
-gillyflower
-Gilmore
-gilt
-gilt-edge
-gilt-edged
-gimbal-jawed
-gimbals
-Gimbel
-gimcrack
-gimcrackery
-gimlet
-gimme
-gimmick
-gimmickry
-gimmicks
-gimmicky
-gimp
-gimpy
-gin
-Gina
-ginger
-ginger-beer
-ginger-bread
-ginger-hackled
-gingerbread
-gingerly
-gingersnap
-gingery
-gingham
-ginghams
-gingivitis
-gingko
-ginhead
-ginkgo
-Ginn
-Gino
-gins
-Ginsberg
-Ginsburg
-ginseng
-Gioconda
-Giorgio
-Giovanni
-GIP
-Gipsies
-gipsy
-giraffe
-giraffes
-gird
-girder
-girders
-girdle
-girl
-girl's
-girlfriend
-girlhood
-girlie
-girlish
-girlishly
-girlishness
-girls
-girly
-girt
-girth
-gismo
-gist
-Giuliano
-Giuseppe
-give
-give!
-give-and-take
-giveaway
-giveback
-given
-giver
-givers
-gives
-giving
-Giza
-gizmo
-gizzard
-glabrous
-glace
-glacial
-glacially
-glaciate
-glaciation
-glacier
-glaciers
-glacis
-glad
-glad-hand
-glad-hander
-gladden
-gladder
-gladdest
-glade
-gladiator
-gladiatorial
-gladiola
-gladioli
-gladiolus
-gladly
-gladness
-gladsome
-Gladstone
-Gladys
-glair
-glamor
-glamorization
-glamorize
-glamorous
-glamorously
-glamour
-glamourize
-glamourous
-glance
-glanced
-glances
-glancing
-gland
-glanders
-glandes
-glands
-glandular
-glans
-glare
-glared
-glares
-glaring
-glaringly
-Glasgow
-glasnost
-glass
-Glass!
-glass-blower
-glass-cutter
-glass-grinder
-glass-house
-glass-paper
-glass-work
-glassblower
-glassblowing
-glassed
-glasses
-glassful
-glasshouse
-glassily
-glassiness
-glassman
-glassware
-glassy
-glassy-eyed
-Glaswegian
-glaucoma
-glaze
-glazed
-glazer
-glazes
-glazier
-glazing
-gleam
-gleamed
-gleaming
-gleams
-gleamy
-glean
-gleaned
-gleaner
-gleaning
-gleanings
-gleans
-Gleason
-glebe
-glee
-gleeful
-gleefully
-gleefulness
-glees
-glen
-Glenda
-Glendale
-Glenn
-glens
-glib
-glibly
-glibness
-Glidden
-glide
-glided
-glider
-gliders
-glides
-gliding
-glimmer
-glimmered
-glimmering
-glimmers
-glimpse
-glimpsed
-glimpses
-glint
-glinted
-glinting
-glints
-glissandi
-glissando
-glisten
-glistened
-glistening
-glistens
-glister
-glitch
-glitter
-glittered
-glittering
-glitters
-glittery
-glitz
-glitzy
-gloaming
-gloat
-gloatingly
-glob
-global
-globalism
-globalist
-globally
-globe
-globe-flower
-globe-trotter
-globe-trotting
-globes
-globetrotter
-globular
-globularity
-globule
-globulin
-glockenspiel
-glom
-gloom
-gloomily
-gloominess
-gloomy
-glop
-gloppy
-Gloria
-Gloriana
-glories
-glorification
-glorified
-glorifies
-glorify
-glorious
-gloriously
-glory
-glorying
-gloss
-glossaries
-glossary
-glossed
-glosses
-glossily
-glossiness
-glossing
-glossolalia
-glossy
-glottal
-glottides
-glottis
-Gloucester
-glove
-gloved
-glover
-glovers
-gloves
-gloving
-glow
-glow-worm
-glowed
-glower
-glowering
-glowers
-glowing
-glowingly
-glows
-glowworm
-gloze
-glucose
-glue
-glued
-glues
-gluey
-gluing
-glum
-glumly
-glumness
-glut
-gluten
-glutenous
-glutinous
-glutinously
-glutton
-gluttonize
-gluttonous
-gluttonously
-gluttony
-glycerin
-glycerine
-glycerol
-glycogen
-Glynn
-glyph
-GM
-GMT
-gnar
-gnarl
-gnarled
-gnarly
-gnash
-gnat
-gnat-flower
-gnats
-gnaw
-gnawed
-gnawing
-gnaws
-gneiss
-Gnocchi
-gnome
-gnomic
-gnomish
-gnomon
-gnoseology
-gnosis
-gnostic
-GNP
-gnu
-go
-go-ahead
-go-as-you-please
-go-between
-go-by
-go-cart
-go-fer
-go-getter
-go-getting
-go-go
-go-off
-Goa
-goad
-goaded
-goal
-goal-keeper
-goal-line
-goalie
-goalkeeper
-goalkeeping
-goalpost
-goals
-goaltender
-goat
-goat-god
-goat-herd
-goat-sucker
-goatee
-goatees
-goatherd
-goatish
-goats
-goatskin
-gob
-gobbet
-gobble
-gobbled
-gobbledegook
-gobbledygook
-gobbler
-gobblers
-gobbles
-Gobi
-goblet
-goblets
-goblin
-goblins
-gobs
-God
-God!
-god-awful
-God-child
-God-father
-god-fearing
-God-mother
-god-son
-God-speed
-godchild
-godchildren
-Goddam
-goddammit
-goddamn
-goddamned
-Goddard
-goddaughter
-goddess
-goddesses
-godfather
-godforsaken
-Godfrey
-godhead
-godhood
-Godiva
-godless
-godlessness
-godlike
-godliness
-godly
-godmother
-godmothers
-Godot
-godown
-godparent
-gods
-godsend
-godson
-Godspeed
-Godwin
-Godzilla
-goer
-goes
-Goethe
-gofer
-Goff
-goffer
-goffering
-goggle
-goggle-eyed
-goggles
-Gogh
-going
-going-over
-goings
-goings-on
-goiter
-goitre
-gold
-gold-beater
-gold-digger
-gold-field
-gold-filled
-gold-finch
-gold-foil
-gold-leaf
-gold-mine
-gold-plated
-gold-proof
-gold-rush
-gold-smith
-Golda
-Goldberg
-goldbrick
-goldbricker
-golden
-golden-knop
-golden-rod
-goldenly
-goldenness
-goldenrod
-Goldfield
-goldfinch
-goldfish
-golding
-Goldman
-goldmine
-golds
-goldsmith
-Goldstein
-Goldstine
-Goldwater
-Goldwyn
-Goleta
-golf
-golf-club
-golfer
-golfers
-golfing
-Goliath
-golly
-Golly!
-golosh
-Gomez
-Gompers
-gonad
-gonadal
-gondola
-gondolier
-gone
-gone-by
-goner
-gong
-gongs
-gonna
-gonorrhea
-gonorrheal
-gonorrhoe
-gonorrhoea
-Gonzales
-Gonzalez
-goo
-goober
-good
-good-by
-good-bye
-good-for-nothing
-good-hearted
-good-heartedly
-good-heartedness
-good-humored
-good-humoredly
-good-looking
-good-natured
-good-naturedly
-good-naturedness
-good-quality
-good-sized
-good-tempered
-good-will
-goodby
-goodbye
-Goode
-goodhearted
-goodie
-goodies
-goodish
-goodlooker
-goodly
-goodman
-goodness
-Goodrich
-goods
-goodwife
-goodwill
-Goodwin
-goody
-goody-goody
-goody-two-shoes
-Goodyear
-gooey
-goof
-goof-off
-goofed
-goofiness
-goofs
-goofy
-gook
-goon
-goop
-goose
-goose-berry
-goose-drowner
-goose-flesh
-goose-flesh(-skin)
-goose-pimples
-goose-quill
-goose-skin
-goose-step
-gooseberry
-goosebumps
-gooseflesh
-GOP
-gopher
-Gorbachev
-Gordian
-Gordon
-gore
-Goren
-gorge
-gorgeous
-gorgeously
-gorgeousness
-gorger
-gorges
-gorging
-Gorham
-gorilla
-gorillas
-gorily
-goriness
-Gorky
-gormand
-gormandize
-gormandizer
-gorp
-gorse
-Gorton
-gory
-gosh
-goshawk
-gosling
-gospel
-gospelers
-gospels
-gossamer
-gossip
-gossiped
-gossiper
-gossiping
-gossips
-gossipy
-got
-gotcha
-Goth
-Gotham
-Gothic
-Gothically
-Gothicism
-Gothicize
-Gothicized
-Gothicizer
-Gothicizers
-Gothicizes
-Gothicizing
-GOTO
-GOTOs
-gotta
-gotten
-Gottfried
-Goucher
-Gouda
-gouge
-gouged
-gouger
-gouges
-gouging
-goulash
-Gould
-gourd
-gourde
-gourmand
-gourmet
-gout
-gouty
-govern
-governable
-governance
-governed
-governess
-governing
-government
-governmental
-governmentally
-governments
-governor
-governors
-governorship
-governs
-gowk
-gown
-gowned
-gowns
-Goya
-GP
-GPA
-GPO
-grab
-grabbed
-grabber
-grabbers
-grabbing
-grabbings
-grabble
-grabs
-grace
-graced
-graceful
-gracefully
-gracefulness
-graceless
-gracelessly
-gracelessness
-graces
-Gracie
-gracing
-gracious
-graciously
-graciousness
-grackle
-grad
-gradate
-gradation
-gradations
-grade
-graded
-grader
-graders
-grades
-gradient
-gradients
-grading
-gradings
-gradual
-gradualism
-gradually
-gradualness
-graduate
-graduated
-graduates
-graduating
-graduation
-graduations
-Grady
-Graff
-graffiti
-graffito
-graft
-grafted
-grafter
-grafting
-Grafton
-grafts
-grahams
-grain
-grained
-graininess
-graining
-grains
-grainy
-gram
-grammar
-grammarian
-grammars
-grammatic
-grammatical
-grammaticality
-grammatically
-gramme
-Grammy
-gramophone
-Grampians
-grampus
-grams
-Granada
-granaries
-granary
-grand
-grand-duchess
-grand-duke
-grandam
-grandaunt
-grandchild
-grandchildren
-granddad
-granddaddy
-granddaughter
-grandee
-grander
-grandest
-grandeur
-grandfather
-grandfatherly
-grandfathers
-grandiloquence
-grandiloquent
-grandiose
-grandiosely
-grandiosity
-grandly
-grandma
-grandmamma
-grandmother
-grandmotherly
-grandmothers
-grandnephew
-grandness
-grandniece
-grandpa
-grandparent
-grandparents
-grands
-grandson
-grandsons
-grandstand
-granduncle
-grange
-granite
-granitic
-grannie
-granny
-granola
-grant
-grant-in-aid
-granted
-grantee
-granter
-granting
-grantor
-grants
-grantsmanship
-granular
-granularity
-granulate
-granulated
-granulates
-granulating
-granulation
-granule
-Granville
-grape
-grape-fruit
-grape-sugar
-grape-vine
-grapefruit
-grapes
-grapeshot
-grapevine
-graph
-graphed
-grapheme
-graphic
-graphical
-graphically
-graphics
-graphing
-graphite
-graphologist
-graphology
-graphs
-grapnel
-grapple
-grappled
-grappling
-grasp
-graspable
-grasped
-grasping
-graspingly
-grasps
-grass
-grass-roots
-grass-snake
-grass-widow
-grass-widower
-grassed
-grassers
-grasses
-grasshopper
-grassier
-grassiest
-grassland
-grassplot
-grassroots
-grassy
-grate
-grated
-grateful
-gratefully
-gratefulness
-grater
-grates
-graticule
-gratification
-gratified
-gratify
-gratifying
-grating
-gratingly
-gratings
-gratis
-gratitude
-gratuities
-gratuitous
-gratuitously
-gratuitousness
-gratuity
-gratulate
-gratulatory
-graunch
-gravamen
-gravamina
-grave
-grave-clothes
-grave-digger
-gravedigger
-gravel
-gravelled
-gravelly
-gravely
-graven
-graveness
-graver
-Graves
-graveside
-gravest
-gravestone
-graveyard
-gravid
-gravidity
-gravimeter
-gravitate
-gravitation
-gravitational
-gravity
-gravy
-gray
-graybeard
-grayed
-grayer
-grayest
-graying
-grayish
-grayness
-Grayson
-graze
-grazed
-grazer
-grazier
-grazing
-grease
-grease-proof
-grease/oil
-greased
-greasepaint
-greaser
-greases
-greasily
-greasiness
-greasing
-greasy
-great
-great-aunt
-great-coat
-great-grandchild
-great-grandchildren
-great-granddaughter
-great-grandfather
-great-grandmother
-great-grandparent
-great-grandson
-great-uncle
-greatcoat
-greater
-greatest
-greathearted
-greatly
-greatness
-greave
-grebe
-Grecian
-Grecianize
-Grecianizes
-Greece
-greed
-greedily
-greediness
-greedy
-Greek
-Greekize
-Greekizes
-Greeks
-Greeley
-green
-green-blue
-green-eyed
-green-finch
-green-sickness
-greenback
-Greenberg
-Greenblatt
-Greenbriar
-Greene
-greener
-greenery
-greenest
-Greenfeld
-Greenfield
-greenfly
-greengage
-greengrocer
-greengrocer's
-greengrocers
-greenhorn
-greenhouse
-greenhouses
-greening
-greenish
-Greenland
-greenly
-greenmail
-greenness
-greenroom
-greens
-Greensboro
-greenstone
-Greensville
-greensward
-Greentree
-Greenville
-greenware
-Greenwich
-greenwood
-Greer
-greet
-greeted
-greeter
-greeting
-greetings
-greets
-Greg
-gregarious
-gregariously
-gregariousness
-Gregg
-Gregorian
-Gregory
-gremlin
-Grenada
-grenade
-grenades
-Grenadian
-grenadier
-grenadine
-Grendel
-Grenier
-Grenoble
-Grenville
-Gresham
-Greta
-Gretchen
-grew
-grey
-grey-beard
-greyest
-greygoose
-greyhound
-greying
-greylag
-greystone
-grid
-griddle
-griddlecake
-gride
-gridiron
-gridlock
-gridlocked
-grids
-grief
-grief-stricken
-griefs
-Grieg
-grievance
-grievances
-grieve
-grieved
-griever
-grievers
-grieves
-grieving
-grievingly
-grievous
-grievously
-grievousness
-griffin
-Griffith
-griffon
-grig
-grill
-grill-room
-grille
-grilled
-grilling
-grills
-grim
-grimace
-Grimaldi
-grime
-grimed
-Grimes
-griminess
-grimly
-Grimm
-grimness
-grimy
-grin
-grind
-grinder
-grinders
-grinding
-grindings
-grinds
-grindstone
-grindstones
-gringo
-grinning
-grins
-grip
-grip-brake
-gripe
-griped
-griper
-gripes
-griping
-grippe
-gripped
-gripper
-gripping
-grippingly
-grips
-Gris
-gris-gris
-grisliness
-grisly
-grist
-gristle
-gristly
-gristmill
-Griswold
-grit
-grits
-gritter
-grittiness
-gritty
-grizzle
-grizzled
-grizzly
-groan
-groaned
-groaner
-groaners
-groaning
-groans
-groat
-groats
-grocer
-grocer's
-groceries
-grocers
-grocery
-grocers
-grog
-groggily
-grogginess
-groggy
-groin
-grommet
-groom
-groomed
-groomer
-grooming
-grooms
-groomsman
-Groot
-groove
-grooved
-grooves
-groovy
-grope
-groped
-groper
-gropes
-groping
-Gropius
-grosbeak
-grosgrain
-gross
-grossed
-grosser
-grosses
-grossest
-Grosset
-grossing
-grossly
-Grossman
-grossness
-Grosvenor
-grotesque
-grotesquely
-grotesqueness
-grotesques
-Groton
-grotto
-grottos
-grouch
-grouchily
-grouchiness
-grouchy
-ground
-ground-floor
-ground-hog
-ground-note
-ground-plan
-ground-rent
-ground-tone
-groundage
-groundbreaking
-grounded
-grounder
-grounders
-groundglass
-groundhog
-grounding
-groundless
-groundlessly
-groundling
-groundnut
-grounds
-groundsel
-groundswell
-groundwater
-groundwork
-group
-grouped
-grouper
-groupie
-grouping
-groupings
-groups
-grouse
-grouser
-grout
-grouty
-grove
-grovel
-groveled
-groveler
-groveling
-groveller
-grovels
-Grover
-grovers
-groves
-grow
-grower
-growers
-growing
-growl
-growled
-growler
-growling
-growls
-grown
-grown-up
-grownup
-grownups
-grows
-growth
-growths
-grub
-grubber
-grubbily
-grubbiness
-grubby
-grubs
-grubstake
-grudge
-grudges
-grudging
-grudgingly
-gruel
-grueling
-gruelling
-gruesome
-gruesomely
-gruesomeness
-gruff
-gruffly
-gruffness
-grumble
-grumbled
-grumbleer
-grumbler
-grumbles
-grumbling
-Grumman
-grump
-grumpily
-grumpiness
-grumpy
-grunge
-grungy
-grunion
-grunt
-grunted
-grunting
-grunts
-Grusky
-gruyere
-gryphon
-GSA
-GSAM
-GU
-guacamole
-Guadalajara
-Guadalcanal
-Guadalupe
-Guadeloupe
-Guam
-Guamanian
-Guangzhou
-guanine
-guano
-guarani
-guarantee
-guaranteed
-guaranteeing
-guaranteer
-guaranteers
-guarantees
-guarantor
-guaranty
-guard
-guard-boat
-guard-book
-guard-house
-guard-room
-guarded
-guardedly
-guarder
-guardhouse
-Guardia
-guardian
-guardians
-guardianship
-guarding
-guardrail
-guardroom
-guards
-guardsman
-Guatemala
-Guatemalan
-guava
-Guayaquil
-gubernatorial
-guck
-gudgeon
-guelder-rose
-Guelph
-Guenther
-guerilla
-Guernsey
-guerrilla
-guerrillas
-guess
-guess-work
-guessed
-guesser
-guesses
-guessing
-guesstimate
-guesswork
-guest
-guest-house
-guests
-guff
-guffaw
-Guggenheim
-Guhleman
-GUI
-Guiana
-guidance
-guide
-guide-board
-guide-book
-guide-post
-guide-screw
-guide-wheel
-guidebook
-guidebooks
-guided
-guideline
-guidelines
-guidepost
-guider
-guides
-guiding
-guidon
-guild
-guilder
-guilders
-guildhall
-guile
-guileful
-guileless
-guilelessly
-guilelessness
-Guilford
-guillotine
-guilt
-guilt-ridden
-guiltier
-guiltiest
-guiltily
-guiltiness
-guiltless
-guiltlessly
-guilty
-guinea
-Guinea-Bissau
-guinea-fowl
-guinea-hen
-guinea-pig
-Guinean
-Guinevere
-guinness
-guise
-guises
-guitar
-guitarist
-guitars
-Guiyang
-Gujarat
-Gujarati
-gulag
-gulch
-gulches
-gulden
-gulf
-gulfs
-gull
-Gullah
-gulled
-gullet
-gulley
-gullibility
-gullible
-gullies
-gulling
-gulls
-gully
-gullywasher
-gulp
-gulped
-gulper
-gulps
-gum
-gum-boil
-gum-tree
-gumbo
-gumboil
-gumdrop
-gumming
-gummy
-gumption
-gums
-gumshoe
-gun
-gun-barrel
-gun-boat
-gun-cotton
-gun-metal
-gun-powder
-gun-shot
-gun-shy
-gun-stick
-gun-stock
-gunboat
-guncase
-Gunderson
-gunfight
-gunfighter
-gunfire
-gung-ho
-gunk
-gunky
-gunman
-gunmen
-gunmetal
-Gunnar
-gunned
-gunnel
-gunner
-gunners
-gunnery
-gunning
-gunny
-gunnysack
-gunplay
-gunpoint
-gunpowder
-gunrunner
-gunrunning
-guns
-gunship
-gunshot
-gunslinger
-gunsmith
-Gunther
-gunwale
-guppy
-gurgle
-gurgling
-Gurkha
-gurney
-guru
-Gus
-gush
-gushed
-gusher
-gushes
-gushing
-gushy
-gusset
-gussy
-gust
-Gustafson
-gustatory
-Gustav
-Gustave
-Gustavus
-gustily
-gusto
-gusts
-gusty
-gut
-gutbucket
-Gutenberg
-Guthrie
-gutless
-gutlessness
-guts
-gutsy
-gutta-percha
-gutter
-gutter-pipe
-guttered
-gutters
-guttersnipe
-gutting
-guttural
-gutty
-guy
-Guyana
-Guyanese
-guyed
-guyer
-guyers
-guying
-guys
-guzzle
-guzzler
-guzzles
-Gwen
-Gwyn
-gym
-gymkhana
-gymnasia
-gymnasium
-gymnasiums
-gymnast
-gymnastic
-gymnastically
-gymnastics
-gymnasts
-gymnosperm
-gynaecologist
-gynaecology
-gynecologic
-gynecological
-gynecologist
-gynecology
-gyp
-gypper
-gypsies
-gypster
-gypsum
-gypsy
-gyrate
-gyration
-gyrator
-gyratory
-gyre
-gyrfalcon
-gyro
-gyrocompass
-gyroplane
-gyroscope
-gyroscopes
-gyroscopic
-gyve
-h'm
-H-bomb
-ha
-ha-ha
-Haag
-Haas
-habeas
-haberdasher
-haberdasher's
-haberdashery
-Haberman
-Habib
-habiliment
-habiliments
-habilitate
-habit
-habit-forming
-habitability
-habitable
-habitant
-habitat
-habitation
-habitational
-habitations
-habitats
-habits
-habitual
-habitually
-habitualness
-habituate
-habituation
-habitude
-habitue
-habitu
-hacienda
-hack
-hack-saw
-hacked
-hacker
-hackers
-Hackett
-hacking
-hackle
-hackles
-hackney
-hackneyed
-hacks
-hacksaw
-hackwork
-had
-Hadamard
-Haddad
-haddock
-Hades
-hadj
-hadji
-Hadley
-hadn't
-Hadrian
-hadst
-haemal
-haemoglobin
-haemophilia
-haemorrhage
-haemorrhoids
-Hafiz
-hafnium
-haft
-hag
-hag-ridden
-Hagen
-Hager
-haggard
-haggardly
-haggardness
-haggis
-haggish
-haggle
-haggler
-hagiographer
-hagiography
-Hagstrom
-Hague
-hah
-Hahn
-hahnium
-Haifa
-haiku
-hail
-hail-stones
-hail-storm
-hailed
-hailing
-hails
-hailstone
-hailstorm
-Haines
-hair
-hair's-breadth
-hair-breadth
-hair-brush
-hair-cloth
-hair-dresser
-hair-escape
-hair-piece
-hair-pin
-hair-raising
-hair-shirt
-hair-splitter
-hair-splitting
-hair-spring
-hair-stroke
-hair-style
-hair-trigger
-hairball
-hairbreadth
-hairbrush
-haircloth
-haircut
-haircuts
-hairdo
-hairdresser
-hairdressing
-hairdryer
-haired
-hairier
-hairiness
-hairless
-hairlike
-hairline
-hairnet
-hairpiece
-hairpin
-hairs
-hairsbreadth
-hairsplitter
-hairsplitting
-hairspring
-hairstyle
-hairstylist
-hairy
-Haiti
-Haitian
-hajj
-hajji
-hake
-Hal
-halal
-halation
-halberd
-halberdier
-halbert
-halbertier
-halcyon
-hale
-haler
-Haley
-half
-half-and-half
-half-assed
-half-back
-half-baked
-half-binding
-half-bound
-half-breed
-half-brother
-half-byte
-half-caste
-half-cocked
-half-crown
-half-dollar
-half-hearted
-half-hose
-half-hour
-half-hourly
-half-life
-half-lives
-half-mast
-half-moon
-half-price
-half-scholar
-half-seas-over
-half-sheet
-half-sister
-half-sovereign
-half-spacing
-half-staff
-half-step
-half-time
-half-title
-half-tone
-half-track
-half-truth
-half-volume
-half-wit
-half-witted
-half-yearly
-halfback
-halfhearted
-halfheartedly
-halfheartedness
-halfpence
-halfpenny
-halftime
-halftone
-halfway
-halfword
-halibut
-Halifax
-halite
-halitosis
-hall
-hall-mark
-halleluiah
-hallelujah
-Halley
-halliard
-Hallinan
-hallmark
-hallmarks
-hallo
-Hallo(a)!
-halloo
-Halloo!
-hallow
-Hallowe'en
-hallowed
-Halloween
-Hallowmas
-halls
-hallucinate
-hallucination
-hallucinatory
-hallucinogen
-hallucinogenic
-hallway
-hallways
-halm
-halo
-halogen
-Halpern
-Halsey
-Halstead
-halt
-halted
-halter
-halters
-halting
-haltingly
-halts
-halve
-halved
-halvers
-Halverson
-halves
-halving
-halyard
-ham
-ham-fisted
-ham-handed
-Hamal
-hamburg
-hamburger
-hamburgers
-Hamey
-Hamilton
-Hamiltonian
-Hamiltonians
-hamlet
-hamlets
-Hamlin
-hammer
-hammer-block
-hammer-eye
-hammer-head
-hammered
-hammerer
-hammerhead
-hammering
-hammerlock
-hammers
-Hammerstein
-hammertoe
-Hammett
-hamming
-hammock
-hammocks
-Hammond
-Hammurabi
-hammy
-hamper
-hampered
-hampers
-Hampshire
-Hampton
-hams
-hamster
-hamstring
-hamstrung
-Han
-Hancock
-hand
-hand-bag
-hand-barrow
-hand-bell
-hand-brake
-hand-brush
-hand-cart
-hand-glass
-hand-me-down
-hand-medowns
-hand-picked
-hand-to-hand
-hand-to-mouth
-hand-towel
-handbag
-handbags
-handball
-handbarrow
-handbill
-handbook
-handbooks
-handcar
-handcart
-handclasp
-handcraft
-handcrafted
-handcuff
-handcuffed
-handcuffing
-handcuffs
-handed
-Handel
-handful
-handfuls
-handgrip
-handgun
-handicap
-handicapped
-handicapper
-handicaps
-handicraft
-handicrafts
-handier
-handiest
-handily
-handiness
-handing
-handiwork
-handkerchief
-handkerchiefs
-handle
-handlebar
-handlebars
-handled
-handler
-handlers
-handles
-handling
-handlist
-handloom
-handmade
-handmaid
-handmaiden
-handout
-handover
-handpick
-handpicked
-handpress
-handprint
-handrail
-hands
-hands-off
-hands-on
-handsaw
-handsel
-handset
-handsful
-handshake
-handshakes
-handshaking
-handsome
-handsomely
-handsomeness
-handsomer
-handsomest
-handspring
-handstand
-handwheel
-handwork
-handwoven
-handwriting
-handwritten
-handy
-handy-dandy
-handy-man
-handyman
-Haney
-Hanford
-hang
-hang-up
-hangar
-hangars
-hangdog
-hanged
-hanger
-hanger-gallows
-hanger-on
-hangers
-hangers-on
-hanging
-hangman
-hangmen
-hangnail
-hangover
-hangovers
-hangs
-hangup
-Hangzhou
-hank
-Hankel
-hanker
-hankering
-hankie
-hanky
-hanky-panky
-Hanley
-Hanlon
-Hanna
-Hannah
-Hannibal
-Hanoi
-Hanover
-Hanoverian
-Hanoverianize
-Hanoverianizes
-Hanoverize
-Hanoverizes
-Hans
-hansel
-Hansen
-hansom
-hanson
-Hanuka
-Hanukah
-Hanukkah
-hap
-hap-hazard
-Hapgood
-haphazard
-haphazardly
-haphazardness
-hapless
-haplessly
-haplessness
-haploid
-haply
-happen
-happened
-happening
-happenings
-happens
-happenstance
-happier
-happiest
-happify
-happily
-happiness
-happy
-happy-go-lucky
-Hapsburg
-hara-kiri
-harangue
-Harare
-harass
-harassed
-harasser
-harasses
-harassing
-harassment
-Harbin
-harbinger
-harbor
-harbored
-harboring
-harbors
-harbour
-harbour-authorities
-harbourage
-Harcourt
-hard
-hard-and-fast
-hard-bitten
-hard-boiled
-hard-core
-hard-earned
-hard-favoured
-hard-featured
-hard-headed
-hard-hearted
-hard-heartedness
-hard-hitting
-hard-line
-hard-liner
-hard-nosed
-hard-pressed
-hard-set
-hard-shell
-hard-tack
-hard-wired
-hard-working
-hardback
-hardball
-hardboard
-hardboiled
-hardbound
-hardcopy
-hardcore
-hardcover
-harden
-hardened
-hardener
-hardening
-harder
-hardest
-hardhat
-hardheaded
-hardheadedly
-hardheadedness
-hardhearted
-hardheartedly
-hardheartedness
-hardihood
-hardily
-Hardin
-hardiness
-Harding
-hardline
-hardliner
-hardly
-hardness
-hardscrabble
-hardship
-hardships
-hardstand
-hardtack
-hardtop
-hardware
-hardwired
-hardwood
-hardworking
-hardy
-hare
-hare-brained
-hare-lip
-harebell
-harebrained
-harelip
-harelipped
-harem
-hares
-haricot
-hark
-hark!
-harken
-Harlan
-Harlem
-harlequin
-Harley
-harlot
-harlotry
-harlots
-harm
-harmed
-harmful
-harmfully
-harmfulness
-harming
-harmless
-harmlessly
-harmlessness
-Harmon
-harmonic
-harmonica
-harmonically
-harmonicon
-harmonics
-harmonies
-harmonious
-harmoniously
-harmoniousness
-Harmonist
-Harmonistic
-Harmonistically
-harmonium
-harmonization
-harmonize
-harmonizer
-harmony
-harms
-harness
-harnessed
-harnessing
-Harold
-harp
-harper
-harpers
-harping
-harpist
-harpoon
-harpooner
-harpsichord
-harpsichordist
-harpy
-harridan
-harried
-harrier
-Harriet
-Harriman
-Harrington
-Harris
-Harrisburg
-Harrison
-Harrisonburg
-harrow
-harrowed
-harrowing
-harrows
-harry
-harsh
-harsher
-harshly
-harshness
-hart
-Harte
-Hartford
-hartley
-Hartman
-harum-scarum
-Harvard
-Harvardize
-Harvardizes
-harvest
-harvest-festival
-harvest-field
-harvest-home
-harvested
-harvester
-harvesting
-harvestman
-harvests
-Harvey
-Harveyize
-Harveyizes
-Harveys
-has
-has-been
-hash
-hashed
-hasheesh
-hasher
-hashes
-hashing
-hashish
-Haskell
-Haskins
-haslet
-hasn't
-hasp
-hassle
-hassling
-hassock
-hast
-haste
-hasten
-hastened
-hastening
-hastens
-hastily
-hastiness
-Hastings
-hasty
-hat
-hat-band
-hatch
-hatch-system
-hatchback
-hatcheck
-hatched
-hatchery
-hatches
-hatchet
-hatchets
-hatching
-Hatchure
-hatchway
-hate
-hated
-hateful
-hatefully
-hatefulness
-hater
-hates
-Hatfield
-hath
-Hathaway
-hating
-hatless
-hatred
-hats
-hatter
-hatter's
-Hatteras
-Hattie
-Hattiesburg
-Hattize
-Hattizes
-hauberk
-Haugen
-haughtily
-haughtiness
-haughty
-haul
-haulage
-hauled
-hauler
-hauling
-haulm
-hauls
-haulyard
-haunch
-haunches
-haunt
-haunted
-haunter
-haunting
-hauntingly
-haunts
-Hausa
-Hausdorff
-Hauser
-hautboy
-hauteur
-Havana
-have
-have!
-have-not
-have-nots
-Havel
-haven
-haven't
-havens
-haversack
-haves
-Havilland
-having
-havoc
-haw
-haw-haw
-Hawaii
-Hawaiian
-hawfinch
-hawk
-hawk-eyed
-hawked
-hawker
-hawkers
-Hawking
-Hawkins
-hawkish
-hawkishness
-hawks
-Hawley
-haws-hole
-hawse
-hawser
-hawthorn
-Hawthorne
-hay
-hay-barrow
-hay-fever
-hay-fork
-hay-loft
-hay-mow
-haycock
-Hayden
-Haydn
-Hayes
-haying
-hayloft
-haymaking
-haymow
-Haynes
-hayrick
-hayride
-Hays
-hayseed
-haystack
-Hayward
-haywire
-Haywood
-hazard
-hazardous
-hazardously
-hazards
-haze
-hazel
-hazelnut
-hazer
-hazes
-hazily
-haziness
-hazing
-hazy
-HDR
-HDTV
-he
-he'd
-he'll
-he's
-he-goat
-he-man
-head
-head-dress
-head-gear
-head-light
-head-line
-head-office
-head-on
-head-ornament
-head-piece
-head-quarters
-head-to-foot
-head-to-head
-head-waters
-headache
-headaches
-headband
-headboard
-headbone
-headcrash
-headdress
-headed
-headend
-header
-headers
-headfirst
-headgear
-headhunt
-headhunter
-headhunting
-headily
-headiness
-heading
-headings
-headlamp
-headland
-headlands
-headless
-headlight
-headline
-headlined
-headliner
-headlines
-headlining
-headlock
-headlong
-headman
-headmaster
-headmistress
-headmost
-headphone
-headphones
-headpiece
-headpin
-headquarter
-headquarters
-headrest
-headroom
-heads
-headscarf
-headset
-headship
-headshrinker
-headsman
-headspring
-headstall
-headstand
-headstone
-headstrong
-headwaiter
-headwaters
-headway
-headwind
-headword
-heady
-heal
-healed
-healer
-healers
-Healey
-healing
-heals
-health
-healthful
-healthfully
-healthfulness
-healthier
-healthiest
-healthily
-healthiness
-healthy
-Healy
-heap
-heaped
-heaping
-heaps
-hear
-heard
-hearer
-hearers
-hearing
-hearing-impaired
-hearings
-hearken
-hears
-hearsay
-hearse
-Hearst
-heart
-heart's-ease
-heart-beat
-heart-blood
-heart-breaking
-heart-burn
-heart-burning
-heart-complaint
-heart-disease
-heart-felt
-heart-rending
-heart-sore
-heart-to-heart
-heartache
-heartbeat
-heartbreak
-heartbreaking
-heartbroken
-heartburn
-hearten
-heartening
-heartfelt
-hearth
-hearthstone
-heartiest
-heartily
-heartiness
-heartland
-heartless
-heartlessly
-heartlessness
-heartrending
-heartrendingly
-hearts
-heartsick
-heartsickness
-heartstrings
-heartthrob
-heartwarming
-hearty
-heat
-heat-stroke
-heatable
-heated
-heatedly
-heater
-heaters
-heath
-heath-bell
-heath-berry
-heath-cock
-heathen
-heathendom
-heathenish
-heathenism
-heather
-Heathman
-heating
-heatproof
-heats
-heatstroke
-heave
-heave-ho
-heaved
-heaven
-heavenly
-heavens
-heavenward
-heavenwards
-heaver
-heavers
-heaves
-heavier
-heavily
-heaviness
-heaving
-heavy
-heavy-duty
-heavy-handed
-heavy-handedly
-heavy-handedness
-heavy-hearted
-heavy-weight
-heavyhearted
-heavyset
-heavyweight
-Heb
-Hebe
-Hebraic
-Hebraicize
-Hebraicizes
-Hebraism
-Hebrew
-Hebrews
-Hebrides
-Hecate
-heck
-heckle
-heckler
-heckling
-Heckman
-hectare
-hectic
-hectically
-hectogram
-hectograph
-hectography
-hectolitre
-hectometer
-hector
-Hecuba
-Hedda
-hedge
-hedge-business
-hedge-creeper
-hedge-sparrow
-hedged
-hedgehog
-hedgehogs
-hedgehop
-hedger
-hedgerow
-hedges
-hedonism
-hedonist
-hedonistic
-heebie-jeebies
-heed
-heeded
-heedful
-heedfully
-heedless
-heedlessly
-heedlessness
-heeds
-heehaw
-heel
-heeled
-heeler
-heelers
-heeling
-heelless
-heels
-heft
-heftily
-heftiness
-hefty
-Hegel
-Hegelian
-Hegelianize
-Hegelianizes
-hegemony
-heholder
-Heidegger
-Heidelberg
-heifer
-Heifetz
-heigh
-heigh-ho
-height
-heighten
-heightened
-heightening
-heightens
-heights
-Heine
-Heinlein
-heinous
-heinously
-heinousness
-Heinrich
-Heinz
-Heinze
-heir
-heiress
-heiresses
-heirloom
-heirs
-heirship
-Heisenberg
-Heiser
-heist
-Hejira
-held
-Helen
-Helena
-Helene
-Helga
-helianthus
-helical
-helices
-helicopter
-heliocentric
-Heliopolis
-heliotrope
-heliport
-helium
-helix
-hell
-hell-bent
-hell-raiser
-hellbender
-hellbent
-hellcat
-hellebore
-Hellene
-Hellenic
-Hellenism
-Hellenist
-Hellenistic
-Hellenization
-Hellenizations
-Hellenize
-Hellenized
-Hellenizes
-Hellenizing
-heller
-Hellespont
-hellfire
-hellhole
-hellion
-hellish
-hellishly
-hellishness
-Hellman
-hello
-hells
-helm
-helmet
-helmeted
-helmets
-Helmholtz
-helminth
-helmsman
-Helmut
-helot
-help
-help-mater
-helped
-helper
-helpers
-helpful
-helpfully
-helpfulness
-helping
-helpless
-helplessly
-helplessness
-helpmate
-helpmeet
-helps
-Helsinki
-helter-skelter
-helve
-Helvetian
-Helvetic
-Helvetica
-hem
-hematite
-hematologic
-hematological
-hematologist
-hematology
-heme
-hemi-demi-semiquaver
-Hemingway
-hemisphere
-hemispheres
-hemispheric
-hemispherical
-hemline
-hemlock
-hemlocks
-hemmer
-hemoglobin
-hemophilia
-hemophiliac
-hemorrhage
-hemorrhagic
-hemorrhoid
-hemorrhoids
-hemostat
-hemostats
-hemp
-hemp-kiln
-hemp-seed
-hempen
-Hempstead
-hems
-hemstitch
-hen
-hen-bane
-hen-bit
-hen-coop
-hen-cote
-hen-house
-hen-pecked
-hen-roost
-hence
-Hence!
-henceforth
-henceforward
-henchman
-henchmen
-Henderson
-Hendrick
-Hendricks
-Hendrickson
-Hendrix
-Henley
-henna
-hennery
-Hennessey
-Hennessy
-Henning
-henpeck
-henpecked
-Henri
-Henrietta
-Henry
-hens
-hep
-heparin
-hepatic
-hepatitis
-Hepburn
-heptagon
-heptagonal
-heptathlon
-her
-Hera
-Heracles
-Heraclitus
-herald
-heralded
-heraldic
-heralding
-heraldry
-heralds
-herb
-herbaceous
-herbage
-herbal
-herbalist
-herbarium
-Herbert
-herbicidal
-herbicide
-herbivore
-herbivorous
-herborize
-herbs
-Hercules
-herd
-herded
-herder
-herding
-herds
-herdsman
-here
-here's
-hereabout
-hereabouts
-hereafter
-hereat
-hereby
-hereditable
-hereditary
-heredity
-Hereford
-herefrom
-herein
-hereinafter
-hereinbefore
-hereinto
-hereof
-hereon
-heres
-heresy
-heretic
-heretical
-heretics
-hereto
-heretofore
-hereunder
-hereunto
-hereupon
-herewith
-heritable
-heritage
-heritages
-Herkimer
-Herman
-Hermann
-hermaphrodite
-hermaphroditic
-hermeneutics
-Hermes
-hermetic
-hermetical
-hermetically
-hermit
-hermit-crab
-hermitage
-Hermite
-hermitian
-hermits
-Hermosa
-Hernandez
-hernia
-herniae
-hernial
-herniate
-herniation
-hero
-Herod
-Herodotus
-heroes
-heroic
-heroically
-heroics
-heroin
-heroine
-heroines
-heroism
-heron
-herons
-herpes
-herpetologist
-herpetology
-Herr
-herring
-herringbone
-herrings
-Herrington
-hers
-Herschel
-herself
-Hersey
-Hershel
-Hershey
-hertz
-Hertzog
-hesitance
-hesitancy
-hesitant
-hesitantly
-hesitate
-hesitated
-hesitates
-hesitating
-hesitatingly
-hesitation
-hesitations
-Hesperus
-Hess
-Hesse
-Hessian
-Hessians
-Hester
-het-up
-heterodox
-heterodoxy
-heterogeneity
-heterogeneous
-heterogeneously
-heterogeneousness
-heterogenous
-heterosexual
-heterosexuality
-Hetman
-Hettie
-Hetty
-Heublein
-Heurige(r)
-heuristic
-heuristically
-heuristics
-Heusen
-Heuser
-hew
-hewed
-hewer
-Hewett
-Hewitt
-Hewlett
-hewn
-hews
-hex
-hexadecimal
-hexagon
-hexagonal
-hexagonally
-hexagons
-hexagram
-hexameter
-hey
-heyday
-Heyerdahl
-Heywood
-Hg
-HHS
-hi
-hi-fi
-hi-tech
-Hialeah
-Hiatt
-hiatus
-Hiawatha
-hibachi
-Hibbard
-hibernal
-hibernate
-hibernation
-hibernator
-Hibernia
-Hibernian
-hibiscus
-hiccough
-hiccup
-hiccups
-hick
-hick-town
-Hickeys
-Hickman
-Hickok
-hickory
-Hicks
-hid
-hidden
-hide
-hide-and-go-seek
-hide-and-seek
-hide-out
-hideaway
-hidebound
-hideous
-hideously
-hideousness
-hideout
-hideouts
-hider
-hides
-hiding
-hie
-hierarch
-hierarchal
-hierarchic
-hierarchical
-hierarchically
-hierarchies
-hierarchy
-hieroglyph
-hieroglyphic
-hieroglyphics
-Hieronymus
-Higashiosaka
-Higgins
-higgle
-higgledy-piggledy
-higgler
-high
-high-born
-high-bred
-high-class
-high-day
-high-faluting
-high-five
-high-flier
-high-flown
-high-flyer
-high-grade
-high-handed
-high-handedly
-high-handedness
-high-hat
-high-hatter
-high-heeled
-high-jump
-high-level
-high-light
-high-minded
-high-mindedly
-high-mindedness
-high-pitched
-high-powered
-high-principled
-high-profile
-high-rise
-high-road
-high-sounding
-high-speed
-high-spirited
-high-strung
-high-tech
-high-tension
-high-test
-high-toned
-highball
-highborn
-highboy
-highbrow
-highchair
-higher
-higher-up
-highfalutin
-highfaluting
-Highfield
-highhanded
-highhandedly
-highhandedness
-highjack
-highland
-highlands
-highlight
-highlighted
-highlighter
-highlighting
-highlights
-highly
-highmuckamuck
-highness
-highnesses
-highpockets
-highroad
-hightail
-highty-tighty
-highway
-highwayman
-highwaymen
-highways
-hijack
-hijacked
-hijacker
-hijacking
-hike
-hiked
-hiker
-hikes
-hiking
-hilarious
-hilariously
-hilariousness
-hilarity
-Hilbert
-Hildebrand
-hill
-Hillary
-hillbilly
-Hillcrest
-Hillel
-hilliness
-hillock
-hills
-Hillsboro
-Hillsdale
-hillside
-hillsides
-hilltop
-hilltops
-hilly
-hilt
-Hilton
-hilts
-him
-Himalaya
-Himalayan
-Himalayas
-Himmler
-himself
-hind
-hind-limbs
-Hindemith
-hinder
-hindered
-hindering
-hinders
-Hindi
-hindmost
-Hindoo
-hindquarter
-hindquarters
-hindrance
-hindrances
-hindsight
-Hindu
-Hinduism
-Hindus
-Hindustan
-Hindustani
-Hines
-hinge
-hinged
-hinges
-Hinkle
-Hinman
-hinny
-Hinsdale
-hint
-hinted
-hinter
-hinterland
-hinting
-hints
-hip
-hip-bath
-hip-bone
-hip-hop
-hip-tile
-hipbone
-hipness
-hipped
-hippie
-hippo
-Hippocrates
-Hippocratic
-hippodrome
-hippopotami
-hippopotamus
-hippy
-hips
-hipshot
-Hiram
-hire
-hired
-hireling
-hirer
-hirers
-hires
-Hirey
-hiring
-hirings
-Hirohito
-Hiroshi
-Hiroshima
-Hirsch
-hirsute
-hirsuteness
-his
-Hispanic
-Hispanicize
-Hispanicizes
-Hispanics
-Hispaniola
-hiss
-hissed
-hisses
-hissing
-hist
-histamine
-histogram
-histograms
-histologist
-histology
-historian
-historians
-historic
-historical
-historically
-historicity
-histories
-historiographer
-historiography
-history
-histrion
-histrionic
-histrionically
-histrionics
-hit
-hit-and-miss
-hit-and-run
-hit-on-the-line
-hit-or-miss
-hit-skip
-Hitachi
-hitch
-hitch-hiker
-hitch-ride
-Hitchcock
-hitched
-hitcher
-hitchhike
-hitchhiked
-hitchhiker
-hitchhikers
-hitchhikes
-hitchhiking
-hitching
-hither
-hithermost
-hitherto
-hitherward
-hitherwards
-Hitler
-Hitlerian
-Hitlerism
-Hitlerite
-Hitlerites
-hits
-hitter
-hitters
-hitting
-Hittite
-HIV
-hive
-hives
-HM
-hmm
-HMO
-HMS
-ho
-ho-hum
-hoa
-hoagie
-Hoagland
-hoagy
-hoar
-hoar-frost
-hoar-stone
-hoard
-hoarder
-hoarding
-hoarfrost
-hoariness
-hoarse
-hoarsely
-hoarsen
-hoarseness
-hoary
-hoax
-hoaxer
-hob
-hob-and-nob
-hob-goblin
-hob-nob
-Hobart
-Hobbes
-hobbies
-hobble
-hobbled
-hobbledehoy
-hobbler
-hobbles
-hobbling
-Hobbs
-hobby
-hobby-horse
-hobbyhorse
-hobbyist
-hobbyists
-Hobday
-hobgoblin
-hobnail
-hobnailed
-hobnob
-hobo
-Hoboken
-hock
-hockey
-hockshop
-hocus
-hocus-pocus
-hod
-hod-man
-hodge-podge
-hodgepodge
-Hodges
-Hodgkin
-hoe
-hoecake
-hoedown
-hoer
-hoes
-Hoff
-Hoffman
-hog
-hog-sty
-hog-tie
-hog-wild
-hogan
-hogback
-hogget
-hogging
-hoggish
-hoggishly
-hogs
-hogshead
-hogtie
-hogwash
-hogwild
-hoist
-hoisted
-hoisting
-hoists
-hoity-toity
-Hokan
-hoke
-hokey
-Hokkaido
-hokum
-Holbrook
-Holcomb
-hold
-hold!
-hold-all
-hold-back
-hold-up
-holden
-holder
-holders
-holdfast
-holding
-holdings
-holdout
-holdover
-holds
-holdup
-hole
-hole-and-corner
-hole-in-the-wall
-hole-punch
-holed
-holes
-holey
-holiday
-holiday-maker
-holidays
-holier-than-thou
-holies
-holiness
-holistic
-holistically
-Holland
-Hollandaise
-Hollander
-holler
-Hollerith
-Hollingsworth
-Hollister
-hollow
-hollow-eyed
-hollow-hearted
-Holloway
-hollowed
-hollowing
-hollowly
-hollowness
-hollows
-holly
-hollyhock
-Hollywood
-Hollywoodize
-Hollywoodizes
-holm
-Holman
-Holmdel
-holme
-Holmes
-holmium
-holocaust
-Holocene
-hologram
-holograms
-holograph
-holographic
-holography
-Holst
-Holstein
-holster
-holt
-holy
-Holyoke
-Holzman
-Hom
-homage
-homager
-hombre
-homburg
-home
-home-bred
-home-brew
-home-defence
-home-felt
-home-made
-home-nurse
-home-rule
-home-sick
-home-spun
-home-stead
-homebody
-homeboy
-homecoming
-homed
-homegrown
-homeland
-homeless
-homelessness
-homelike
-homeliness
-homely
-homemade
-homemaker
-homemakers
-homemaking
-homeomorphic
-homeomorphism
-homeomorphisms
-homeopath
-homeopathic
-homeopathy
-homeostasis
-homeostatic
-homeowner
-homepage
-Homeric
-homeroom
-homers
-homes
-homeschooling
-homesick
-homesickness
-homespun
-homestead
-homesteader
-homesteaders
-homesteads
-homestretch
-hometown
-homeward
-homewards
-homework
-homey
-homeyness
-homicidal
-homicide
-homiletic
-homily
-hominess
-homing
-hominid
-hominy
-homo
-homo-
-homogeneities
-homogeneity
-homogeneous
-homogeneously
-homogeneousness
-homogenization
-homogenize
-homogenized
-homogenous
-homograph
-homologization
-homologous
-homomorphic
-homomorphism
-homomorphisms
-homonym
-homonymous
-homonymy
-homophobia
-homophobic
-homophone
-homosexual
-homosexuality
-homy
-hon
-honcho
-Honda
-Hondo
-Honduran
-Honduras
-hone
-honed
-honer
-hones
-honest
-honestly
-honesty
-honey
-honey-bee
-honey-tongued
-honeybee
-honeycomb
-honeycombed
-honeydew
-honeyed
-honeylocust
-honeymoon
-honeymooned
-honeymooner
-honeymooners
-honeymooning
-honeymoons
-honeysucker
-honeysuckle
-Honeywell
-Honiara
-honied
-honing
-honk
-honker
-honkie
-honky
-honky-tonk
-Honolulu
-honor
-honorable
-honorableness
-honorably
-honoraria
-honoraries
-honorarily
-honorarium
-honorary
-honored
-honoree
-honorer
-honorific
-honoring
-honors
-honour
-honourable
-Honshu
-hooch
-hood
-hooded
-hoodlum
-hoodman-blind
-hoodoo
-hoods
-hoodwink
-hoodwinked
-hoodwinking
-hoodwinks
-hooey
-hoof
-hoofed
-hoofs
-hook
-hooka
-hookah
-hooked
-hooker
-hookers
-hookey
-hooking
-hooks
-hookup
-hookups
-hookworm
-hooky
-hooligan
-hooliganish
-hooliganism
-hoop
-hooper
-hooper-dooper
-hooping-cough
-hoopla
-hoopoe
-hoops
-hooray
-hoosegow
-Hoosier
-Hoosierize
-Hoosierizes
-hoot
-hootch
-hooted
-hootenanny
-hooter
-hooting
-hoots
-Hoover
-Hooverize
-Hooverizes
-hooves
-hop
-hop-garden
-Hop-o-my-thumb
-hop-pole
-hope
-hoped
-hopeful
-hopefully
-hopefulness
-hopefuls
-hopeless
-hopelessly
-hopelessness
-hopes
-Hopi
-hoping
-Hopkins
-Hopkinsian
-hopped-up
-hopper
-hoppers
-hopping
-hops
-hopscotch
-hopstep-and-jump
-Horace
-Horatio
-horde
-hordes
-horehound
-horizon
-horizons
-horizontal
-horizontally
-hormonal
-hormone
-hormones
-horn
-horn-beam
-horn-beetle
-horn-blower
-horn-rimmed
-horn-shape)
-hornbeam
-hornblende
-Hornblower
-hornbook
-horned
-hornet
-hornets
-hornless
-hornlike
-hornpipe
-horns
-hornswoggle
-horny
-horologe
-horologic
-horological
-horologist
-horology
-horoscope
-Horowitz
-horrendous
-horrendously
-horrible
-horribleness
-horribly
-horrid
-horridly
-horrific
-horrifically
-horrified
-horrifies
-horrify
-horrifying
-horror
-horror-stricken
-horror-struck
-horrors
-horse
-horse-cloth
-horse-collar
-horse-fly
-horse-hair
-horse-meat
-horse-play
-horse-power
-horse-race
-horse-racing
-horse-radish
-horse-sense
-horse-shoe
-horse-trappings
-horse-whip
-horse-woman
-horseback
-horseflesh
-horsefly
-horsehair
-horsehide
-horselaugh
-horseless
-horseman
-horsemanship
-horseplay
-horsepower
-horseradish
-horses
-horseshoe
-horseshoer
-horseshoes
-horsetail
-horsewhip
-horsewoman
-horsey
-horsy
-hortative
-hortatory
-horticultural
-horticulture
-horticulturist
-Horton
-Horus
-hosanna
-hose
-hoses
-hosier
-hosiery
-hosiery's
-hospice
-hospitable
-hospitably
-hospital
-hospitality
-hospitalization
-hospitalize
-hospitalized
-hospitalizes
-hospitalizing
-hospitals
-host
-hostage
-hostages
-hosted
-hostel
-hosteler
-hostelry
-hostess
-hostesses
-hostile
-hostilely
-hostilities
-hostility
-hosting
-hostler
-hosts
-hot
-hot-bed
-hot-blooded
-hot-button
-hot-head
-hot-headed
-hot-house
-hot-spur
-hot-tempered
-hot-wire
-hotbed
-hotblooded
-hotbox
-hotcake
-hotchpotch
-hotdog
-hotel
-hotelier
-hotels
-hotfoot
-hothead
-hotheaded
-hotheadedly
-hotheadedness
-hothouse
-hotline
-hotly
-hotness
-hotplate
-hots
-hotshot
-Hottentot
-hotter
-hottest
-Houdaille
-Houdini
-Houghton
-hound
-hounded
-hounding
-hounds
-hour
-hour-glass
-hour-hand
-hour-rate
-hourglass
-houri
-hourly
-hours
-house
-house-boat
-house-breaker
-house-breaking
-house-dog
-house-fly
-house-hold
-house-holder
-house-journal
-house-keeper
-house-maid
-house-martin
-house-sit
-house-sitter
-houseboat
-housebound
-houseboy
-housebreak
-housebreaker
-housebreaking
-housebroke
-housebroken
-houseclean
-housecleaning
-housecoat
-housed
-houseflies
-housefly
-houseful
-household
-householder
-householders
-households
-househusband
-housekeeper
-housekeepers
-housekeeping
-houselights
-housemaid
-houseman
-housemother
-houseparent
-houseplant
-houses
-housetop
-housetops
-housewares
-housewarming
-housewife
-housewifely
-housewives
-housework
-housing
-Houston
-HOV
-hove
-hovel
-hovels
-hover
-hovercraft
-hovered
-hovering
-hovers
-how
-how's
-how-manyeth
-how-to
-Howard
-howbeit
-howdah
-howdy
-Howe
-Howell
-however
-howitzer
-howl
-howled
-howler
-howling
-howls
-Howrah
-howsoever
-hoy
-hoyden
-hoydenish
-Hoyle
-Hoyt
-HP
-HQ
-HR
-HRH
-Hrothgar
-HS
-HST
-Huang
-huarache
-hub
-hub-cap
-Hubbard
-Hubbell
-hubble-bubble
-hubbub
-hubby
-hubcap
-Huber
-Hubert
-hubris
-hubs
-huck
-huckle
-huckle-backed
-huckleberry
-huckster
-HUD
-Huddersfield
-huddle
-huddled
-huddling
-Hudson
-hue
-hued
-hues
-Huey
-huff
-huffily
-huffiness
-huffish
-Huffman
-huffy
-hug
-huge
-hugely
-hugeness
-huggermugger
-hugging
-Huggins
-Hugh
-Hughes
-Hugo
-Huguenot
-huh
-hula
-hula-hula
-hulk
-hulking
-hulky
-hull
-hullabaloo
-huller
-hullo
-hulls
-hum
-human
-humane
-humanely
-humaneness
-humanism
-humanist
-humanistic
-humanitarian
-humanitarianism
-humanities
-humanity
-humanization
-humanize
-humanizer
-humankind
-humanly
-humanness
-humanoid
-humans
-humble
-humble-bee
-humble-plant
-humbled
-humbleness
-humbler
-humblest
-humbling
-humbly
-Humboldt
-humbug
-humdinger
-humdrum
-Hume
-humeral
-humeri
-humerus
-humid
-humidification
-humidified
-humidifier
-humidifiers
-humidifies
-humidify
-humidifying
-humidity
-humidly
-humidor
-humiliate
-humiliated
-humiliates
-humiliating
-humiliatingly
-humiliation
-humiliations
-humility
-hummed
-Hummel
-hummer
-humming
-humming-bird
-hummingbird
-hummock
-hummocky
-hummus
-humongous
-humor
-humored
-humorer
-humorers
-humoring
-humorist
-humorless
-humorlessly
-humorlessness
-humorous
-humorously
-humorousness
-humors
-humour
-humourist
-hump
-humpback
-humpbacked
-humped
-humph
-Humphrey
-Humpty
-humpy
-hums
-humungous
-humus
-Hun
-hunch
-hunchback
-hunchbacked
-hunched
-hunches
-hundred
-hundred(s)
-hundredfold
-hundreds
-hundredth
-hundredweight
-hung
-hung-up
-Hungarian
-Hungary
-hunger
-hungered
-hungering
-hungers
-hungover
-hungrier
-hungriest
-hungrily
-hungriness
-hungry
-hunk
-hunker
-hunkers
-hunks
-hunky
-hunky-dory
-Huns
-hunt
-hunted
-hunter
-hunters
-hunting
-hunting-grounds
-hunting-horn
-Huntington
-Huntley
-huntress
-hunts
-huntsman
-Huntsville
-Hurd
-hurdle
-hurdler
-hurdling
-hurds
-hurdy-gurdy
-hurl
-hurled
-hurler
-hurlers
-hurling
-hurly-burly
-Huron
-Hurons
-hurrah
-hurray
-hurricane
-hurricane-deck
-hurricane-lamp
-hurricanes
-hurried
-hurriedly
-hurries
-hurry
-hurry-scurry
-hurrying
-Hurst
-hurt
-hurtful
-hurtfully
-hurtfulness
-hurting
-hurtle
-hurtling
-hurts
-Hurwitz
-husband
-husbandman
-husbandry
-husbands
-hush
-hush-hush
-hushed
-hushes
-hushing
-Husittism
-husk
-husked
-husker
-huskily
-huskiness
-husking
-husks
-husky
-hussar
-Hussein
-hussif
-Hussite
-hussy
-hustings
-hustle
-hustled
-hustler
-hustles
-hustling
-Huston
-hut
-hutch
-Hutchins
-Hutchinson
-Hutchison
-huts
-hutzpa
-hutzpah
-Huxley
-Huxtable
-huzza
-huzzah
-huzzy
-hyacinth
-Hyades
-hyaena
-hyaline
-Hyannis
-hybrid
-hybridism
-hybridization
-hybridize
-Hyde
-Hyderabad
-hydra
-hydrangea
-hydrant
-hydrate
-hydration
-hydraulic
-hydraulically
-hydraulics
-hydro
-hydrocarbon
-hydrocephalus
-hydrodynamic
-hydrodynamics
-hydroelectric
-hydroelectrically
-hydroelectricity
-hydrofoil
-hydrogen
-hydrogenate
-hydrogenation
-hydrogenous
-hydrogens
-hydrography
-hydrologist
-hydrology
-hydrolyses
-hydrolysis
-hydrolyze
-hydrometer
-hydrometry
-hydrophobia
-hydrophobic
-hydrophone
-hydroplane
-hydroponic
-hydroponics
-hydrosphere
-hydrotherapy
-hydrous
-hydroxide
-hyena
-hyena-dog
-hygieist
-hygiene
-hygienic
-hygienically
-hygienist
-hygrometer
-hygroscopic
-hying
-Hyman
-hymen
-hymeneal
-hymn
-hymn-book
-hymnal
-hymnbook
-hymns
-hype
-hyper
-hyper-
-hyperactive
-hyperactivity
-hyperbola
-hyperbolae
-hyperbole
-hyperbolic
-hypercritical
-hypercritically
-hyperglycemia
-hypermedia
-hypersensitive
-hypersensitiveness
-hypersensitivity
-hypertape
-hypertension
-hypertensive
-hypertext
-hyperthyroid
-hyperthyroidism
-hypertrophy
-hyperventilate
-hyperventilation
-hyphen
-hyphenate
-hyphenated
-hyphenation
-hyphens
-hypnoses
-hypnosis
-hypnotherapy
-hypnotic
-hypnotically
-hypnotism
-hypnotist
-hypnotize
-hypo
-hypo-
-hypoallergenic
-hypochondria
-hypochondriac
-hypocrisies
-hypocrisy
-hypocrite
-hypocrites
-hypocritical
-hypocritically
-hypodermal
-hypodermic
-hypodermics
-hypoglycemia
-hypoglycemic
-hyponym
-hypostatize
-hypotaxis
-hypotenuse
-hypothalami
-hypothalamus
-hypothec
-hypothecate
-hypothermia
-hypotheses
-hypothesis
-hypothesize
-hypothesized
-hypothesizer
-hypothesizes
-hypothesizing
-hypothetical
-hypothetically
-hypothyroid
-hypothyroidism
-hyssop
-hysterectomy
-hysteresis
-hysteria
-hysteric
-hysterical
-hysterically
-hysterics
-hysterotomy
-Hz
-I
-I'd
-I'll
-I'm
-I've
-I-R
-i.e.
-I/O
-iac.
-IAL
-iamb
-iambic
-iambus
-Ian
-IAS
-Ibadan
-Iberia
-Iberian
-Ibero-
-ibex
-IBI
-ibices
-Ibid
-ibid.
-ibidem
-ibis
-Ibn
-Ibsen
-ibuprofen
-ICA
-Icarus
-ICBM
-ICC
-ice
-ice-axe
-ice-berg
-ice-breaker
-ice-cold
-ice-cream
-ice-field
-ice-float
-ice-floe
-ice-glazed
-ice-hockey
-ice-house
-ice-pudding
-ice-ridge
-ice-skate
-ice-skater
-ice-stadium
-iceberg
-icebergs
-iceboat
-icebound
-icebox
-icebreaker
-icecap
-iced
-Iceland
-Icelander
-Icelandic
-iceman
-ices
-iceskating
-ichthyologist
-ichthyology
-icicle
-icily
-iciness
-icing
-icings
-icky
-icon
-iconic
-iconoclasm
-iconoclast
-iconoclastic
-iconography
-icons
-icosahedra
-icosahedral
-icosahedron
-ICSU
-ICSU-CODATA
-ictus
-ICU
-icy
-Ida
-Idaho
-Idahoan
-IDD
-IDDS
-idea
-ideal
-idealism
-idealist
-idealistic
-idealistically
-idealization
-idealizations
-idealize
-idealized
-idealizes
-idealizing
-ideally
-idem
-idempotency
-idempotent
-identical
-identically
-identifiable
-identifiably
-identification
-identifications
-identified
-identifier
-identifiers
-identifies
-identify
-identifying
-identities
-identity
-ideogram
-ideograph
-ideolect
-ideological
-ideologically
-ideologist
-ideologue
-ideology
-ides
-idiocy
-idiom
-idiomatic
-idiomatically
-idiopathic
-idiosyncrasies
-idiosyncrasy
-idiosyncratic
-idiosyncratically
-idiot
-idiotic
-idiotically
-idioticon
-idiotism
-idiots
-idle
-idled
-idleness
-idler
-idlers
-idles
-idlest
-idling
-idly
-IDMS
-idol
-idolater
-idolatress
-idolatrous
-idolatry
-idolization
-idolize
-idols
-idyl
-idyll
-idyllic
-idyllically
-IE
-if
-IFD
-iffiness
-iffy
-IFIP
-IFLA
-IFLA-UBC
-Ifni
-igloo
-igneous
-ignitable
-ignite
-igniter
-ignitible
-ignition
-ignoble
-ignobly
-ignominious
-ignominiously
-ignominy
-ignoramus
-ignorance
-ignorant
-ignorantly
-ignore
-ignored
-ignores
-ignoring
-Igor
-iguana
-IIA
-IIASA
-IISORID
-Ike
-ikon
-IL
-ilea
-ileitis
-ileum
-ilex
-Iliad
-Iliadize
-Iliadizes
-ilium
-ilk
-ill
-ill-advised
-ill-advisedly
-ill-bred
-ill-disposed
-ill-equipped
-ill-fated
-ill-favored
-ill-favoured
-ill-gotten
-ill-humor
-ill-humored
-ill-luck
-ill-mannered
-ill-nature
-ill-natured
-ill-naturedly
-ill-naturedness
-ill-spent
-ill-starred
-ill-structured
-ill-suited
-ill-tempered
-ill-timed
-ill-treat
-ill-treatment
-ill-usage
-ill-use
-ill-will
-illative
-illegal
-illegalities
-illegality
-illegally
-illegibility
-illegible
-illegibly
-illegitimacy
-illegitimate
-illegitimately
-illiberal
-illiberality
-illiberally
-illicit
-illicitly
-illicitness
-illimitable
-Illinois
-Illinoisan
-illiteracy
-illiterate
-illiterately
-illness
-illnesses
-illogical
-illogicality
-illogically
-ills
-illuminable
-illuminate
-illuminated
-illuminates
-illuminating
-illuminatingly
-illumination
-illuminations
-illuminative
-illuminator
-illumine
-illusion
-illusionist
-illusions
-illusive
-illusively
-illusory
-illustrate
-illustrated
-illustrates
-illustrating
-illustration
-illustrations
-illustrative
-illustratively
-illustrator
-illustrators
-illustrious
-illustriously
-illustriousness
-illy
-ILO
-Ilona
-Ilyushin
-image
-Imagen
-imagery
-images
-imaginable
-imaginably
-imaginary
-imagination
-imaginations
-imaginative
-imaginatively
-imagine
-imagined
-imagines
-imaging
-imagining
-imaginings
-imago
-imbalance
-imbalances
-imbecile
-imbecilic
-imbecility
-imbed
-imbibe
-imbiber
-imbrication
-Imbrium
-imbroglio
-imbrue
-imbrute
-imbue
-IMF
-imitable
-imitate
-imitated
-imitates
-imitating
-imitation
-imitations
-imitative
-imitatively
-imitativeness
-imitator
-immaculate
-immaculately
-immaculateness
-immanence
-immanency
-immanent
-immanently
-immaterial
-immateriality
-immaterially
-immaterialness
-immature
-immaturely
-immaturity
-immeasurable
-immeasurably
-immediacies
-immediacy
-immediate
-immediately
-immediateness
-immemorial
-immemorially
-immense
-immensely
-immensity
-immerge
-immerse
-immersed
-immerses
-immersible
-immersion
-immigrant
-immigrants
-immigrate
-immigrated
-immigrates
-immigrating
-immigration
-imminence
-imminent
-imminently
-immiscibility
-Immiserate
-Immiserating
-immobile
-immobility
-immobilization
-immobilize
-immoderate
-immoderately
-immodest
-immodestly
-immodesty
-immolate
-immolation
-immoral
-immorality
-immorally
-immortal
-immortality
-immortalize
-immortally
-immortelle
-immovability
-immovable
-immovably
-immune
-immunities
-immunity
-immunization
-immunize
-immunodeficiency
-immunodeficient
-immunologic
-immunological
-immunologist
-immunology
-immure
-immutability
-immutable
-immutably
-imp
-impact
-impacted
-impacting
-impaction
-impactor
-impactors
-impacts
-impair
-impaired
-impairing
-impairment
-impairs
-impala
-impale
-impalement
-impalpable
-impalpably
-impanel
-impart
-imparted
-impartial
-impartiality
-impartially
-imparts
-impassable
-impassably
-impasse
-impassibility
-impassible
-impassibly
-impassion
-impassioned
-impassive
-impassively
-impassiveness
-impassivity
-impaste
-impasto
-impatience
-impatiens
-impatient
-impatiently
-impawn
-impeach
-impeachable
-impeached
-impeacher
-impeachment
-impeccability
-impeccable
-impeccably
-impecunious
-impecuniously
-impecuniousness
-impedance
-impedances
-impede
-impeded
-impedes
-impediment
-impedimenta
-impediments
-impeding
-impel
-impelled
-impellent
-impeller
-impelling
-impend
-impendence
-impending
-impenetrability
-impenetrable
-impenetrably
-impenitence
-impenitent
-impenitently
-imperative
-imperatively
-imperatives
-imperceivable
-imperceptibility
-imperceptible
-imperceptibly
-imperceptive
-imperfect
-imperfection
-imperfections
-imperfectly
-imperfectness
-imperial
-imperialism
-imperialist
-imperialistic
-imperialistically
-imperialists
-imperially
-imperil
-imperiled
-imperilment
-imperious
-imperiously
-imperiousness
-imperishable
-imperishably
-impermanence
-impermanent
-impermanently
-impermeability
-impermeable
-impermeably
-impermissible
-impersonal
-impersonally
-impersonate
-impersonated
-impersonates
-impersonating
-impersonation
-impersonations
-impersonator
-impertinence
-impertinent
-impertinently
-imperturbability
-imperturbable
-imperturbably
-impervious
-imperviously
-impetigo
-impetuosity
-impetuous
-impetuously
-impetuousness
-impetus
-impetus-wheel
-impiety
-impinge
-impinged
-impingement
-impinges
-impinging
-impious
-impiously
-impiousness
-impish
-impishly
-impishness
-implacability
-implacable
-implacably
-implant
-implantable
-implantation
-implanted
-implanting
-implants
-implausibility
-implausible
-implausibly
-implement
-implementable
-implementation
-implementations
-implemented
-implementer
-implementing
-implementor
-implementors
-implements
-implicant
-implicants
-implicate
-implicated
-implicates
-implicating
-implication
-implications
-implicit
-implicitly
-implicitness
-implied
-implies
-implode
-implore
-implored
-imploring
-imploringly
-implosion
-implosive
-imply
-implying
-impolite
-impolitely
-impoliteness
-impolitic
-imponderable
-import
-importable
-importance
-important
-importantly
-importation
-imported
-importer
-importers
-importing
-imports
-importunate
-importunately
-importune
-importunity
-impose
-imposed
-imposer
-imposes
-imposing
-imposingly
-imposition
-impositions
-impossibilities
-impossibility
-impossible
-impossibly
-impost
-impost-take
-imposter
-impostor
-impostors
-imposture
-impotence
-impotency
-impotent
-impotently
-impound
-impoverish
-impoverished
-impoverishment
-impracticable
-impracticably
-impractical
-impracticality
-impractically
-imprecate
-imprecation
-imprecise
-imprecisely
-impreciseness
-imprecision
-impregnability
-impregnable
-impregnably
-impregnate
-impregnation
-impresario
-impress
-impressed
-impresser
-impresses
-impressibility
-impressible
-impressing
-impression
-impressionability
-impressionable
-impressionism
-impressionist
-impressionistic
-impressions
-impressive
-impressively
-impressiveness
-impressment
-impressum
-imprest
-imprimatur
-imprint
-imprinted
-imprinter
-imprinting
-imprints
-imprison
-imprisoned
-imprisoning
-imprisonment
-imprisonments
-imprisons
-improbability
-improbable
-improbably
-improbity
-improfitable
-impromptu
-improper
-improperly
-impropriate
-impropriety
-improvable
-improve
-improved
-improvement
-improvements
-improver
-improves
-improvidence
-improvident
-improvidently
-improving
-improvisation
-improvisational
-improvisations
-improvise
-improvised
-improviser
-improvisers
-improvises
-improvising
-improvisor
-imprudence
-imprudent
-imprudently
-imps
-impudence
-impudent
-impudently
-impugn
-impugner
-impuissant
-impulse
-impulses
-impulsion
-impulsive
-impulsively
-impulsiveness
-impunity
-impure
-impurely
-impurities
-impurity
-imputable
-imputation
-impute
-imputed
-IMS
-in
-in-basket
-in-between
-in-centre
-in-circle
-in-depth
-in-flight
-in-house
-in-knees
-in-law
-in-laws
-in-patient
-in-processing
-in-road
-in-service
-in-your-face
-inability
-inaccessibility
-inaccessible
-inaccessibly
-inaccuracies
-inaccuracy
-inaccurate
-inaccurately
-inaction
-inactivate
-inactivation
-inactive
-inactively
-inactivity
-inadequacies
-inadequacy
-inadequate
-inadequately
-inadequateness
-inadmissibility
-inadmissible
-inadvertance
-inadvertence
-inadvertent
-inadvertently
-inadvisability
-inadvisable
-inalienability
-inalienable
-inalienably
-inalterable
-inamorata
-inamorato
-inane
-inanely
-inanimate
-inanimately
-inanimateness
-inanity
-Inanna
-inapplicable
-inappreciable
-inappreciably
-inapproachable
-inappropriate
-inappropriately
-inappropriateness
-inapt
-inaptitude
-inaptly
-inaptness
-inarguable
-inarticulate
-inarticulately
-inarticulateness
-inartistic
-inasmuch
-inaspicious
-inattention
-inattentive
-inattentively
-inattentiveness
-inaudibility
-inaudible
-inaudibly
-inaugural
-inaugurate
-inaugurated
-inaugurating
-inauguration
-inauspicious
-inauspiciously
-inauthentic
-inboard
-inborn
-inbound
-inbounds
-inbred
-inbreed
-inbreeding
-Inca
-incalculable
-incalculably
-incandescence
-incandescent
-incandescently
-incantation
-incapability
-incapable
-incapably
-incapacitate
-incapacitating
-incapacity
-incarcerate
-incarceration
-incarnadine
-incarnate
-incarnation
-incarnations
-Incas
-incase
-incaution
-incautious
-incendiaries
-incendiarism
-incendiary
-incense
-incensed
-incenses
-incentive
-incentives
-inception
-inceptive
-incertitude
-incessant
-incessantly
-incest
-incestuous
-incestuously
-incestuousness
-inch
-inched
-inches
-inching
-inchoate
-inchoative
-Inchon
-inchworm
-incidence
-incident
-incidental
-incidentally
-incidentals
-incidents
-incinerate
-incineration
-incinerator
-incipience
-incipient
-incipiently
-incipit
-incise
-incision
-incisive
-incisively
-incisiveness
-incisor
-incitation
-incite
-incited
-incitement
-inciter
-incites
-inciting
-incivility
-inclemency
-inclement
-inclinable
-inclination
-inclinations
-incline
-inclined
-inclines
-inclining
-inclose
-inclosed
-incloses
-inclosing
-inclosure
-include
-included
-includes
-including
-inclusion
-inclusions
-inclusive
-inclusively
-inclusiveness
-incogitant
-incognito
-incoherence
-incoherency
-incoherent
-incoherently
-incombustible
-income
-incomes
-incoming
-incommensurable
-incommensurate
-incommensurately
-incommode
-incommodious
-incommodity
-incommunicable
-incommunicado
-incommutable
-incomparable
-incomparably
-incompatibilities
-incompatibility
-incompatible
-incompatibly
-incompetence
-incompetency
-incompetent
-incompetently
-incompetents
-incomplete
-incompletely
-incompleteness
-incompliant
-incomprehensibility
-incomprehensible
-incomprehensibly
-incomprehension
-incompressible
-incomputable
-inconceivability
-inconceivable
-inconceivably
-inconclusive
-inconclusively
-inconclusiveness
-incongruity
-incongruous
-incongruously
-incongruousness
-inconsequence
-inconsequent
-inconsequential
-inconsequentially
-inconsiderable
-inconsiderate
-inconsiderately
-inconsiderateness
-inconsideration
-inconsistence
-inconsistencies
-inconsistency
-inconsistent
-inconsistently
-inconsolable
-inconsolably
-inconspicuous
-inconspicuously
-inconspicuousness
-inconstancy
-inconstant
-inconstantly
-inconsumable
-incontestability
-incontestable
-incontestably
-incontinence
-incontinent
-incontrovertible
-incontrovertibly
-inconvenience
-inconvenienced
-inconveniences
-inconveniencing
-inconvenient
-inconveniently
-inconvertible
-inconvincible
-incorporate
-incorporated
-incorporates
-incorporating
-incorporation
-incorporeal
-incorrect
-incorrectly
-incorrectness
-incorrigibility
-incorrigible
-incorrigibly
-incorrodible
-incorrupt
-incorruptibility
-incorruptible
-incorruptibly
-incorruption
-increase
-increased
-increases
-increasing
-increasingly
-incredibility
-incredible
-incredibly
-incredulity
-incredulous
-incredulously
-increment
-incremental
-incrementally
-incremented
-incrementer
-incrementing
-increments
-incriminate
-incriminating
-incrimination
-incriminatory
-incrust
-incrustation
-incubate
-incubated
-incubates
-incubating
-incubation
-incubator
-incubators
-incubi
-incubus
-inculcate
-inculcation
-inculpable
-inculpate
-incumbency
-incumbent
-incumber
-incunabula
-incunabulum
-incur
-incurable
-incurably
-incurious
-incurred
-incurring
-incurs
-incursion
-incurvate
-incurvation
-Ind
-indebt
-indebted
-indebtedness
-indecency
-indecent
-indecently
-indecipherable
-indecision
-indecisive
-indecisively
-indecisiveness
-indeclinable
-indecorous
-indecorously
-indeed
-indefatigable
-indefatigably
-indefeasible
-indefeasibly
-indefensible
-indefensibly
-indefinable
-indefinably
-indefinite
-indefinitely
-indefiniteness
-indeliberate
-indelible
-indelibly
-indelicacy
-indelicate
-indelicately
-indemnification
-indemnify
-indemnity
-indemonstrable
-indent
-indentation
-indentations
-indented
-indenting
-indention
-indents
-indenture
-independence
-independent
-independently
-indescribable
-indescribably
-indestructibility
-indestructible
-indestructibly
-indeterminable
-indeterminably
-indeterminacies
-indeterminacy
-indeterminate
-indeterminately
-indeterminateness
-index
-indexable
-indexation
-indexed
-indexer
-indexes
-indexical
-indexing
-India
-Indian
-Indianan
-Indianian
-Indians
-indicate
-indicated
-indicates
-indicating
-indication
-indications
-indicative
-indicatively
-indicator
-indicators
-indices
-indict
-indictable
-indictee
-indictment
-indictments
-Indies
-indifference
-indifferent
-indifferently
-indigence
-indigenous
-indigenously
-indigenousness
-indigent
-indigently
-indigested
-indigestible
-indigestion
-indignant
-indignantly
-indignation
-indignities
-indignity
-indigo
-Indira
-indirect
-indirected
-indirecting
-indirection
-indirections
-indirectly
-indirectness
-indirects
-indiscernible
-indiscreet
-indiscreetly
-indiscretion
-indiscriminate
-indiscriminately
-indiscrimination
-indispensability
-indispensable
-indispensably
-indispose
-indisposed
-indisposition
-indisputable
-indisputably
-indissoluble
-indissolubly
-indistinct
-indistinctly
-indistinctness
-indistinguishable
-indistinguishably
-indite
-indium
-individual
-individualism
-individualist
-individualistic
-individualistically
-individuality
-individualization
-individualize
-individualized
-individualizes
-individualizing
-individually
-individuals
-individuate
-individuation
-indivisibility
-indivisible
-indivisibly
-Indo
-Indo-China
-Indo-European
-Indochina
-Indochinese
-indocile
-indoctrinate
-indoctrinated
-indoctrinates
-indoctrinating
-indoctrination
-Indoeuropean
-indolence
-indolent
-indolently
-indomitable
-indomitably
-Indonesia
-Indonesian
-indoor
-indoors
-Indore
-indorse
-indubitable
-indubitably
-induce
-induced
-inducement
-inducements
-inducer
-induces
-inducing
-induct
-inductance
-inductances
-inducted
-inductee
-inducting
-induction
-inductions
-inductive
-inductively
-inductor
-inductors
-inducts
-indue
-indulge
-indulged
-indulgence
-indulgences
-indulgent
-indulgently
-indulging
-indurate
-Indus
-industrial
-industrial-strength
-industrialism
-industrialist
-industrialists
-industrialization
-industrialize
-industrialized
-industrially
-industrials
-industries
-industrious
-industriously
-industriousness
-industry
-indwell
-Indy
-inebriate
-inebriated
-inebriation
-inebriety
-inedible
-ineducable
-ineffability
-ineffable
-ineffably
-ineffective
-ineffectively
-ineffectiveness
-ineffectual
-ineffectually
-inefficacious
-inefficacy
-inefficiencies
-inefficiency
-inefficient
-inefficiently
-inegalitarian
-inelastic
-inelegance
-inelegant
-inelegantly
-ineligibility
-ineligible
-ineligibly
-ineluctable
-ineluctably
-inept
-ineptitude
-ineptly
-ineptness
-inequalities
-inequality
-inequation
-inequitable
-inequitably
-inequity
-ineradicable
-inerrant
-inert
-inertia
-inertial
-inertly
-inertness
-inescapable
-inescapably
-inessential
-inestimable
-inestimably
-inevitabilities
-inevitability
-inevitable
-inevitably
-inexact
-inexactitude
-inexactly
-inexactness
-inexcusable
-inexcusably
-inexhaustible
-inexhaustibly
-inexorable
-inexorably
-inexpedience
-inexpediency
-inexpedient
-inexpensive
-inexpensively
-inexpensiveness
-inexperience
-inexperienced
-inexpert
-inexpertly
-inexpiable
-inexplicable
-inexplicably
-inexplicit
-inexpressible
-inexpressibles
-inexpressibly
-inexpressive
-inexpugnable
-inextinguishable
-inextirpable
-inextricable
-inextricably
-infallibility
-infallible
-infallibly
-infamous
-infamously
-infamy
-infancy
-infant
-infanticide
-infantile
-infantry
-infantryman
-infantrymen
-infants
-infarct
-infarction
-infatuate
-infatuated
-infatuation
-infeasible
-infect
-infected
-infecting
-infection
-infections
-infectious
-infectiously
-infectiousness
-infective
-infects
-infecund
-infelicitous
-infelicity
-infer
-inference
-inferences
-inferential
-inferior
-inferiority
-inferiors
-infernal
-infernally
-inferno
-infernos
-inferred
-inferring
-infers
-infertile
-infertility
-infest
-infestation
-infested
-infesting
-infests
-infidel
-infidelity
-infidels
-infield
-infielder
-infighter
-infighting
-infiltrate
-infiltration
-infiltrator
-infinite
-infinitely
-infiniteness
-infinitesimal
-infinitesimally
-infinitival
-infinitive
-infinitives
-infinitude
-infinitum
-infinity
-infirm
-infirmary
-infirmity
-infix
-inflame
-inflamed
-inflammability
-inflammable
-inflammation
-inflammatory
-inflatable
-inflate
-inflated
-inflater
-inflates
-inflating
-inflation
-inflationary
-inflect
-inflection
-inflectional
-inflexed
-inflexibility
-inflexible
-inflexibly
-inflexion
-inflexional
-inflict
-inflicted
-inflicting
-infliction
-inflictive
-inflicts
-inflight
-inflorescence
-inflorescent
-inflow
-influence
-influenced
-influences
-influencing
-influential
-influentially
-influenza
-influx
-info
-infold
-infology
-infomercial
-inform
-informal
-informality
-informally
-informant
-informants
-Informatica
-informatics
-information
-informational
-informative
-informatively
-informativeness
-informatization
-informatology
-informatory
-informed
-informedness
-informer
-informers
-informetrics
-informing
-informology
-informs
-informware
-infotainment
-INFOTERM
-infra
-infra-red
-infraction
-infrangible
-infrared
-infrasonic
-infrastructure
-infrequence
-infrequency
-infrequent
-infrequently
-infringe
-infringed
-infringement
-infringements
-infringes
-infringing
-infuriate
-infuriated
-infuriates
-infuriating
-infuriatingly
-infuriation
-infuse
-infused
-infuser
-infuses
-infusing
-infusion
-infusions
-ingathering
-ingenious
-ingeniously
-ingeniousness
-ingenue
-ingenuity
-ingenuous
-ingenuously
-ingenuousness
-Ingersoll
-ingest
-ingestion
-ingle
-ingle-nook
-inglenook
-Inglewood
-inglorious
-ingloriously
-ingoing
-ingot
-ingot-iron
-ingraft
-ingrain
-ingrained
-Ingram
-ingrate
-ingratiate
-ingratiating
-ingratiatingly
-ingratiation
-ingratitude
-ingredient
-ingredients
-ingress
-ingression
-ingrow
-ingrowing
-ingrown
-inguinal
-ingurgitate
-inhabit
-inhabitable
-inhabitance
-inhabitant
-inhabitants
-inhabitation
-inhabited
-inhabiting
-inhabits
-inhalant
-inhalation
-inhalator
-inhale
-inhaled
-inhaler
-inhales
-inhaling
-inharmonic
-inharmonious
-inhere
-inherence
-inherency
-inherent
-inherently
-inheres
-inherit
-inheritable
-inheritance
-inheritances
-inherited
-inheriting
-inheritor
-inheritors
-inheritress
-inheritresses
-inheritrices
-inheritrix
-inherits
-inhibit
-inhibited
-inhibiting
-inhibition
-inhibitions
-inhibitor
-inhibitors
-inhibitory
-inhibits
-inhomogeneities
-inhomogeneity
-inhomogeneous
-inhospitable
-inhospitably
-inhuman
-inhumane
-inhumanely
-inhumanity
-inhumanly
-inhumation
-inhume
-inimical
-inimically
-inimitable
-inimitably
-iniquities
-iniquitous
-iniquitously
-iniquity
-INIS
-init.
-inital
-initial
-initialed
-initialing
-initialism
-initialization
-initializations
-initialize
-initialized
-initializer
-initializers
-initializes
-initializing
-initially
-initials
-initiate
-initiated
-initiates
-initiating
-initiation
-initiations
-initiative
-initiatives
-initiator
-initiators
-initiatory
-inject
-injected
-injecting
-injection
-injections
-injective
-injector
-injects
-injudicious
-injudiciously
-injudiciousness
-Injun
-injunction
-injunctions
-Injuns
-injure
-injured
-injurer
-injures
-injuries
-injuring
-injurious
-injury
-injustice
-injustices
-ink
-ink-bottle
-ink-box
-ink-jerker
-ink-lines
-ink-pot
-ink-slinger
-ink-stand
-inkblot
-inked
-inker
-inkers
-inkiness
-inking
-inkings
-inkle
-inkling
-inklings
-inks
-inks-well
-inkstand
-inkwell
-inky
-inlaid
-inland
-inlander
-inlay
-inlayer
-inlet
-inlets
-inline
-Inman
-inmate
-inmates
-inmost
-inn
-inn-holder
-inn-keeper
-innards
-innate
-innately
-innateness
-innavigable
-inner
-inner-city
-inner-directed
-innermost
-innersole
-innerspring
-innervate
-innervation
-inning
-innings
-innkeeper
-innocence
-innocent
-innocently
-innocents
-innocuous
-innocuously
-innocuousness
-innovate
-innovation
-innovations
-innovative
-innovator
-innoxious
-inns
-Innsbruck
-innuendo
-innumerability
-innumerable
-innumerably
-innumeracy
-innumerate
-innumerous
-innutritious
-inoculate
-inoculation
-inodorous
-inoffensive
-inoffensively
-inoffensiveness
-inoperable
-inoperative
-inopportune
-inopportunely
-inordinate
-inordinately
-inorganic
-inorganically
-inosculate
-INPADOC
-inpatient
-input
-input-output
-inputs
-inquest
-inquiet
-inquietude
-inquire
-inquired
-inquirer
-inquirers
-inquires
-inquiries
-inquiring
-inquiringly
-inquiry
-inquiry-response
-inquisition
-inquisitional
-inquisitions
-inquisitive
-inquisitively
-inquisitiveness
-inquisitor
-inquisitorial
-INRI
-inroad
-inroads
-inrush
-INS
-insalubrious
-insane
-insanely
-insanitary
-insanity
-insatiability
-insatiable
-insatiably
-insatiate
-inscribe
-inscribed
-inscriber
-inscribes
-inscribing
-inscription
-inscriptions
-inscrutability
-inscrutable
-inscrutableness
-inscrutably
-inseam
-insect
-insect-eater
-insecticidal
-insecticide
-insectivore
-insectivorous
-insects
-insecure
-insecurely
-insecurity
-inseminate
-insemination
-insensate
-insensibility
-insensible
-insensibly
-insensitive
-insensitively
-insensitivity
-insentience
-insentient
-inseparability
-inseparable
-inseparably
-insert
-inserted
-inserting
-insertion
-insertions
-insertor
-inserts
-inset
-insetting
-inshore
-inside
-insider
-insiders
-insides
-insidious
-insidiously
-insidiousness
-insight
-insightful
-insights
-insigne
-insignia
-insignificance
-insignificancy
-insignificant
-insignificantly
-insincere
-insincerely
-insincerity
-insinuate
-insinuated
-insinuates
-insinuating
-insinuation
-insinuations
-insinuative
-insinuator
-insipid
-insipidity
-insipidly
-insist
-insisted
-insistence
-insistent
-insistently
-insisting
-insistingly
-insists
-insobriety
-insofar
-insolate
-insolation
-insole
-insolence
-insolent
-insolently
-insolubility
-insoluble
-insolubly
-insolvable
-insolvency
-insolvent
-insomnia
-insomniac
-insomuch
-insouciance
-insouciant
-INSPEC
-inspect
-inspected
-inspecting
-inspection
-inspections
-inspector
-inspectorate
-inspectors
-inspects
-inspiration
-inspirational
-inspirations
-inspire
-inspired
-inspirer
-inspires
-inspiring
-inspirit
-inspissate
-inspissation
-insquality
-inst.
-instabilities
-instability
-instable
-instal
-install
-installation
-installations
-installed
-installer
-installers
-installing
-installment
-installments
-installs
-instalment
-instance
-instances
-instant
-instantanenous
-instantaneous
-instantaneously
-instanter
-instantiate
-instantiated
-instantiates
-instantiating
-instantiation
-instantiations
-instantly
-instants
-instate
-instead
-instep
-instigate
-instigated
-instigates
-instigating
-instigation
-instigator
-instigators
-instil
-instill
-instillation
-instinct
-instinctive
-instinctively
-instincts
-instinctual
-institute
-instituted
-instituter
-instituters
-institutes
-instituting
-institution
-institutional
-institutionalization
-institutionalize
-institutionalized
-institutionalizes
-institutionalizing
-institutionally
-institutions
-institutor
-instruct
-instructed
-instructing
-instruction
-instructional
-instructions
-instructive
-instructively
-instructor
-instructors
-instructs
-instrument
-instrumental
-instrumentalist
-instrumentalists
-instrumentality
-instrumentally
-instrumentals
-instrumentation
-instrumented
-instrumenting
-instruments
-insubordinate
-insubordination
-insubstantial
-insubstantially
-insufferable
-insufferably
-insufficiency
-insufficient
-insufficiently
-insular
-insularity
-insulate
-insulated
-insulates
-insulating
-insulation
-insulator
-insulators
-insulin
-insult
-insulted
-insulting
-insultingly
-insults
-insuperable
-insuperably
-insupportable
-insurable
-insurance
-insure
-insured
-insurer
-insurers
-insures
-insurgence
-insurgency
-insurgent
-insurgents
-insuring
-insurmount
-insurmountable
-insurmountably
-insurrection
-insurrectionist
-insurrections
-insusceptible
-intact
-intaglio
-intake
-INTAMEL
-intangibility
-intangible
-intangibles
-intangibly
-integer
-integers
-integrable
-integral
-integrally
-integrals
-integrand
-integrate
-integrated
-integrates
-integrating
-integration
-integrations
-integrative
-integrity
-integument
-Intel
-inteligently
-intellect
-intellection
-intellects
-intellectual
-intellectualism
-intellectualize
-intellectually
-intellectuals
-intellelectronics
-intelligence
-intelligencer
-intelligent
-intelligently
-intelligentsia
-intelligibility
-intelligible
-intelligibly
-Intelsat
-intemperance
-intemperate
-intemperately
-intend
-intendant
-intended
-intending
-intends
-intense
-intensely
-intensification
-intensified
-intensifier
-intensifiers
-intensifies
-intensify
-intensifying
-intension
-intensities
-intensity
-intensive
-intensively
-intensiveness
-intent
-intention
-intentional
-intentionally
-intentioned
-intentions
-intently
-intentness
-intents
-inter
-interact
-interacted
-interacting
-interaction
-interactions
-interactive
-interactively
-interactivity
-interacts
-interbred
-interbreed
-intercabling
-intercalate
-intercalation
-intercalator
-intercede
-intercept
-intercepted
-intercepting
-interception
-interceptor
-intercepts
-intercession
-intercessor
-intercessory
-interchange
-interchangeability
-interchangeable
-interchangeably
-interchanged
-interchanger
-interchanges
-interchanging
-interchangings
-interchannel
-intercity
-intercollegiate
-intercom
-intercommon
-intercommunicate
-intercommunicated
-intercommunicates
-intercommunicating
-intercommunication
-intercommunity
-interconnect
-interconnected
-interconnecting
-interconnection
-interconnections
-interconnector
-interconnects
-intercontinental
-interconversion
-intercostal
-intercourse
-intercurrent
-Interdata
-interdenominational
-interdepartmental
-interdependence
-interdependencies
-interdependency
-interdependent
-interdependently
-interdict
-interdiction
-interdisciplinary
-interest
-interested
-interesting
-interestingly
-interests
-interface
-interfaced
-interfacer
-interfaces
-interfacing
-interfaith
-interfere
-interfered
-interference
-interferences
-interferes
-interfering
-interferingly
-interferometer
-interferometric
-interferometry
-interferon
-interfile
-interfluent
-interframe
-interfuse
-intergalactic
-intergroup
-interim
-interior
-interiors
-interject
-interjection
-interlace
-interlaced
-interlaces
-interlacing
-interlanguage
-interlard
-interleaf
-interleave
-interleaved
-interleaves
-interleaving
-interlending
-interleukin
-interline
-interlinear
-interlining
-interlink
-interlinked
-interlinks
-interlisp
-interlock
-interlocking
-interlocuter
-interlocution
-interlocutor
-interlocutory
-interlope
-interloper
-interlude
-intermarriage
-intermarry
-intermeddle
-intermediary
-intermediate
-intermediately
-intermediates
-interment
-intermezzo
-interminable
-interminably
-intermingle
-intermingled
-intermingles
-intermingling
-intermission
-intermit
-intermittent
-intermittently
-intermix
-intermixed
-intermixture
-intermodule
-intern
-internal
-internalization
-internalize
-internalized
-internalizes
-internalizing
-internally
-internals
-international
-internationalise
-internationalism
-internationalist
-internationality
-internationalize
-internationally
-interne
-internecine
-interned
-internee
-internetting
-internetwork
-interning
-internist
-internment
-interns
-internship
-interoffice
-interoperability
-interpellate
-interpellation
-interpenetrate
-interpersonal
-interplanetary
-interplay
-Interpol
-interpolate
-interpolated
-interpolates
-interpolating
-interpolation
-interpolations
-interpose
-interposed
-interposes
-interposing
-interposition
-interpret
-interpretable
-interpretation
-interpretations
-interpretative
-interpreted
-interpreter
-interpreters
-interpreting
-interpretive
-interpretively
-interpretress
-interprets
-interprocess
-interracial
-interregna
-interregnum
-interrelate
-interrelated
-interrelates
-interrelating
-interrelation
-interrelations
-interrelationship
-interrelationships
-interrogate
-interrogated
-interrogates
-interrogating
-interrogation
-interrogations
-interrogative
-interrogatively
-interrogator
-interrogatory
-interrupt
-interrupted
-interrupter
-interruptible
-interrupting
-interruption
-interruptions
-interruptive
-interrupts
-interscholastic
-intersect
-intersected
-intersecting
-intersection
-intersections
-intersects
-intersession
-intership
-interspace
-intersperse
-interspersed
-intersperses
-interspersing
-interspersion
-interstage
-interstate
-interstellar
-interstice
-interstitial
-intertexture
-intertwine
-intertwined
-intertwines
-intertwining
-intertwist
-interurban
-interval
-intervals
-intervene
-intervened
-intervenes
-intervening
-intervention
-interventionism
-interventionist
-interventions
-interview
-interviewed
-interviewee
-interviewer
-interviewers
-interviewing
-interviews
-intervocalic
-interweave
-interworking
-interwove
-interwoven
-interzonal
-intestacy
-intestate
-intestinal
-intestine
-intestines
-inthrall
-inthrone
-intimacy
-intimate
-intimated
-intimately
-intimating
-intimation
-intimations
-intimidate
-intimidated
-intimidates
-intimidating
-intimidatingly
-intimidation
-intitle
-into
-intolerable
-intolerably
-intolerance
-intolerant
-intolerantly
-intomb
-intonate
-intonation
-intonations
-intone
-intoner
-intoxicant
-intoxicate
-intoxicated
-intoxicating
-intoxication
-intra-
-intractability
-intractable
-intractably
-intragroup
-intraline
-intramural
-intramuscular
-intransigence
-intransigent
-intransigently
-intransitive
-intransitively
-intransivity
-intraoffice
-intraprocess
-intrastate
-intrauterine
-intravenous
-intravenously
-intreat
-intrench
-intrepid
-intrepidity
-intrepidly
-intricacies
-intricacy
-intricate
-intricately
-intrigue
-intrigued
-intriguer
-intrigues
-intriguing
-intriguingly
-intrinsic
-intrinsically
-intro
-introduce
-introduced
-introduces
-introducing
-introduction
-introductions
-introductory
-introit
-intromit
-introspect
-introspection
-introspections
-introspective
-introspectively
-introversion
-introvert
-introverted
-intrude
-intruded
-intruder
-intruders
-intrudes
-intruding
-intrusion
-intrusions
-intrusive
-intrusively
-intrusiveness
-intrust
-intubate
-intubated
-intubates
-intubation
-intuit
-intuition
-intuitionist
-intuitions
-intuitive
-intuitively
-intuitiveness
-intumescence
-intwine
-intwist
-Inuit
-inundate
-inundation
-inure
-inutility
-invade
-invaded
-invader
-invaders
-invades
-invading
-invalid
-invalidate
-invalidated
-invalidates
-invalidating
-invalidation
-invalidations
-invalidism
-invalidities
-invalidity
-invalidly
-invalids
-invaluable
-invaluably
-invar
-invariability
-invariable
-invariably
-invariance
-invariant
-invariantly
-invariants
-invasion
-invasions
-invasive
-invective
-inveigh
-inveigle
-inveigler
-invent
-invented
-inventing
-invention
-inventions
-inventive
-inventively
-inventiveness
-inventor
-inventories
-inventors
-inventory
-invents
-Inverness
-inverse
-inversely
-inverses
-inversion
-inversions
-invert
-invertebrate
-invertebrates
-inverted
-inverter
-inverters
-invertible
-inverting
-inverts
-invest
-invested
-investigate
-investigated
-investigates
-investigating
-investigation
-investigations
-investigative
-investigator
-investigators
-investigatory
-investing
-investiture
-investment
-investments
-investor
-investors
-invests
-inveteracy
-inveterate
-invidious
-invidiously
-invidiousness
-invigorate
-invigorated
-invigorating
-invigoratingly
-invigoration
-invincibility
-invincible
-invincibly
-inviolability
-inviolable
-inviolably
-inviolate
-invisibility
-invisible
-invisibly
-invitation
-invitational
-invitations
-invite
-invited
-invitee
-invites
-inviting
-invitingly
-invocable
-invocate
-invocation
-invocations
-invoice
-invoiced
-invoices
-invoicing
-invoke
-invoked
-invoker
-invokes
-invoking
-involuntarily
-involuntariness
-involuntary
-involution
-involve
-involved
-involvement
-involvements
-involves
-involving
-invulnerability
-invulnerable
-invulnerably
-inward
-inwardly
-inwardness
-inwards
-inweave
-inwrap
-inwrought
-Io
-iodate
-iodide
-iodine
-iodize
-iodoform
-ion
-Ionesco
-Ionian
-Ionians
-Ionic
-Ionicization
-Ionicizations
-Ionicize
-Ionicizes
-ionization
-ionize
-ionizer
-ionosphere
-ionospheric
-ions
-iota
-IOU
-Iowa
-Iowan
-IPA
-IPC
-ipecac
-Ipswich
-IQ
-Ir
-Irak
-Iran
-Iranian
-Iranians
-Iranize
-Iranizes
-Iraq
-Iraqi
-Iraqis
-irascibility
-irascible
-irascibly
-irate
-irately
-irateness
-IRC
-ire
-ireful
-Ireland
-Irene
-irenic
-ires
-irides
-iridescence
-iridescent
-iridescently
-iridium
-iris
-Irish
-Irishize
-Irishizes
-Irishman
-Irishmen
-Irishwoman
-irk
-irked
-irking
-irks
-irksome
-irksomely
-irksomeness
-Irkutsk
-IRM
-Irma
-iron
-iron-bound
-iron-clad
-iron-foundry
-iron-glance
-iron-mill
-iron-stone
-iron-witted
-iron-works
-ironclad
-ironed
-ironic
-ironical
-ironically
-ironies
-ironing
-ironings
-ironmonger
-ironmonger's
-ironmongery
-irons
-ironstone
-ironware
-ironwood
-ironwork
-irony
-Iroquoian
-Iroquois
-irradiate
-irradiation
-irrational
-irrationality
-irrationally
-irrationals
-Irrawaddy
-irreclaimable
-irreconcilability
-irreconcilable
-irreconcilably
-irrecoverable
-irrecoverably
-irredeemable
-irredeemably
-irreducible
-irreducibly
-irreflexive
-irrefragable
-irrefutable
-irrefutably
-irregardless
-irregular
-irregularities
-irregularity
-irregularly
-irregulars
-irrelevance
-irrelevances
-irrelevancy
-irrelevant
-irrelevantly
-irreligion
-irreligious
-irremediable
-irremediably
-irremissible
-irremovable
-irreparable
-irreparably
-irrepealable
-irreplaceable
-irrepressible
-irrepressibly
-irreproachable
-irreproachably
-irreproducibility
-irreproducible
-irresistible
-irresistibly
-irresolute
-irresolutely
-irresoluteness
-irresolution
-irrespective
-irrespectively
-irresponsibility
-irresponsible
-irresponsibly
-irretrievable
-irretrievably
-irreverence
-irreverent
-irreverently
-irreversibility
-irreversible
-irreversibly
-irrevocable
-irrevocably
-irrigable
-irrigate
-irrigated
-irrigates
-irrigating
-irrigation
-irritability
-irritable
-irritably
-irritant
-irritate
-irritated
-irritates
-irritating
-irritatingly
-irritation
-irritations
-irrupt
-irruption
-irruptive
-IRS
-Irvin
-Irvine
-Irving
-Irwin
-is
-ISA
-Isaacs
-Isaacson
-Isabel
-Isabella
-Isadore
-isagogycs
-Isaiah
-ISAM
-ISBD
-ISBD/A
-ISBD/G
-ISBD/M
-ISBD/NBM
-ISBD/S
-ISBN
-ISDN
-ISDS
-ISDS-IC
-Isfahan
-Ishtar
-ISI
-Ising
-isinglass
-Isis
-Islam
-Islamabad
-Islamic
-Islamization
-Islamizations
-Islamize
-Islamizes
-island
-islander
-islanders
-Islandia
-islands
-isle
-isles
-islet
-islets
-ism
-isn't
-ISO
-isobar
-isobaric
-isolate
-isolated
-isolates
-isolating
-isolation
-isolationism
-isolationist
-isolations
-Isolde
-isomer
-isomeric
-isomerism
-isometric
-isometrically
-isometrics
-isomorphic
-isomorphically
-isomorphism
-isomorphisms
-isosceles
-isotherm
-isotope
-isotopes
-isotopic
-Ispahan
-Israel
-Israeli
-Israelis
-Israelite
-Israelites
-Israelitize
-Israelitizes
-ISSN
-issuance
-issue
-issued
-issuer
-issuers
-issues
-issuing
-Istanbul
-isthmi
-isthmian
-isthmus
-Istvan
-it
-it'd
-it'll
-it's
-Italian
-Italianate
-Italianization
-Italianizations
-Italianize
-Italianizer
-Italianizers
-Italianizes
-Italians
-italic
-italicization
-italicize
-italicized
-italics
-Italy
-ITC
-itch
-itches
-itchiness
-itching
-itchy
-Itel
-item
-itemization
-itemizations
-itemize
-itemized
-itemizes
-itemizing
-items
-iterate
-iterated
-iterates
-iterating
-iteration
-iterations
-iterative
-iteratively
-iterator
-iterators
-Ithaca
-Ithacan
-itineracy
-itinerant
-itineraries
-itinerary
-Ito
-its
-itself
-itsy-bitsy
-itty-bitty
-ITU
-IUD
-Ivan
-Ivanhoe
-Iverson
-Ives
-ivied
-ivies
-ivories
-ivory
-ivy
-Izaak
-Izhevsk
-Izmir
-Izvestia
-jab
-jabbed
-jabber
-jabberer
-jabbing
-jabot
-jabs
-jacaranda
-jack
-jack-a-dandy
-jack-a-napes
-jack-at-a-pinch
-jack-boot
-jack-daw
-jack-in-office
-jack-in-the-box
-jack-in-the-pulpit
-jack-knife
-jack-o'-lantern
-jack-o-lantern
-jack-of-all-trades
-jack-out-of-office
-jack-plane
-jack-slave
-jack-tar
-jack-towel
-jackal
-jackass
-jackboot
-jackdaw
-jacket
-jacketed
-jacketing
-jackets
-jackhammer
-Jackie
-jacking
-jackknife
-jackknives
-Jackman
-jackpot
-jackrabbit
-jacks
-jacks-of-all-trades
-Jackson
-Jacksonian
-Jacksons
-Jacksonville
-jackstraw
-Jacky
-Jacob
-Jacobean
-Jacobi
-Jacobian
-Jacobinize
-Jacobite
-Jacobs
-Jacobsen
-Jacobson
-Jacobus
-Jacoby
-Jacqueline
-Jacques
-jaculate
-Jacuzzi
-jade
-jaded
-jadedly
-jadedness
-jadeite
-jadish
-Jaeger
-jag
-jagged
-jaggedly
-jaggedness
-jaguar
-jail
-jail-bird
-jailbird
-jailbreak
-jailed
-jailer
-jailers
-jailing
-jailor
-jails
-Jaime
-Jaipur
-Jakarta
-Jake
-Jakes
-jalapeno
-jalopy
-jalousie
-jam
-jam-pack
-jam-packed
-Jamaica
-Jamaican
-jamb
-jambalaya
-jamboree
-James
-Jameson
-Jamestown
-jammed
-jamming
-jams
-Jan
-Jane
-Janeiro
-Janesville
-Janet
-jangle
-jangler
-Janice
-Janis
-janitor
-janitorial
-janitors
-Janos
-Jansen
-Jansenist
-Januaries
-January
-Janus
-japan
-Japanese
-Japanization
-Japanizations
-Japanize
-Japanized
-Japanizes
-Japanizing
-jape
-jar
-jardiniere
-jarful
-jargon
-jarred
-jarring
-jarringly
-jars
-Jarvin
-jasey
-jasmine
-Jason
-jasper
-Jastrow
-jato
-jaundice
-jaundiced
-jaunt
-jauntily
-jauntiness
-jaunts
-jaunty
-Java
-Javanese
-javelin
-javelins
-jaw
-jaw-bone
-jaw-breaker
-jawbone
-jawbreaker
-jawed
-jaws
-jay
-jay-walker
-jaybird
-Jaycee
-Jaycees
-jaywalk
-jaywalker
-jaywalking
-jazz
-jazzband
-jazzy
-JCS
-JD
-jealous
-jealousies
-jealously
-jealousness
-jealousy
-jean
-Jeanne
-Jeannie
-jeans
-Jed
-jeep
-jeeps
-jeer
-jeering
-jeeringly
-jeers
-jeez
-Jeff
-Jefferson
-Jeffersonian
-Jeffersonians
-Jeffrey
-jehad
-Jehovah
-jejune
-jejunum
-jell
-Jell-O
-jellied
-jellies
-jelly
-jelly-fish
-jellybean
-jellyfish
-jellylike
-jellyroll
-jemmy
-Jenkins
-jennet
-Jennie
-Jennifer
-Jennings
-jenny
-Jensen
-jeopard
-jeopardize
-jeopardized
-jeopardizes
-jeopardizing
-jeopardy
-jeremiad
-Jeremiah
-Jeremy
-Jeres
-Jericho
-jerk
-jerk-town
-jerked
-jerkily
-jerkin
-jerkiness
-jerking
-jerkings
-jerks
-jerkwater
-jerky
-Jeroboam
-Jerome
-Jerry
-jerry-built
-jerrybuilt
-jersey
-jerseys
-Jerusalem
-jessamine
-Jesse
-Jessica
-Jessie
-Jessy
-jest
-jested
-jester
-jesting
-jestingly
-jests
-Jesuit
-Jesuitical
-Jesuitism
-Jesuitize
-Jesuitized
-Jesuitizes
-Jesuitizing
-Jesuits
-Jesus
-jet
-jet-black
-jet-lagged
-jet-propelled
-jet-setter
-jetliner
-jetport
-jets
-jetsam
-jetted
-jetting
-jettison
-jetty
-Jew
-jewel
-jeweled
-Jewell
-jeweller
-jeweller's
-jewellery
-jewellers
-jewelries
-jewelry
-jewels
-Jewess
-Jewett
-Jewish
-Jewishness
-Jewry
-Jews
-jezdec
-Jezebel
-jib
-jib-door
-jibe
-Jidda
-jiff
-jiffy
-jig
-jigger
-jiggle
-jiggly
-jignle
-jigs
-jihad
-jild
-Jilin
-Jill
-jilt
-Jim
-Jim-Crow
-jim-dandy
-Jimenez
-Jimmie
-jimmy
-jimsonweed
-Jinan
-jinga-ring
-jingle
-jingled
-jingling
-jingly
-jingo
-jingoism
-jingoist
-jingoistic
-jinn
-jinni
-Jinny
-jinricksha
-jinrikisha
-jinriksha
-jinx
-jinxed
-jitney
-jitter
-jitterbug
-jitterbugger
-jitters
-jittery
-jiu-jitsu
-jiujitsu
-jive
-JMMS
-JND
-jo
-Joan
-Joanna
-Joanne
-Joaquin
-job
-job-hopping
-job-printing
-job-share
-job-sharing
-job-switching
-job-work
-jobber
-jobbery
-jobholder
-jobless
-joblessness
-Jobrel
-jobs
-jock
-jockey
-jockstrap
-jocose
-jocosely
-jocoseness
-jocosity
-jocular
-jocularity
-jocularly
-jocund
-jocundity
-jocundly
-jodhpurs
-Jody
-joe
-Joel
-Joes
-jog
-jog-trot
-jogger
-jogging
-joggle
-joggling
-jogs
-Johann
-Johanna
-Johannes
-Johannesburg
-Johansen
-Johanson
-John
-Johnnie
-Johnny
-Johnny-on-the-spot
-johnnycake
-Johns
-Johnsen
-Johnson
-Johnston
-Johnstown
-Johny
-Johny-come-late
-join
-joinder
-joined
-joiner
-joiners
-joinery
-joining
-joins
-joint
-joint-heir
-jointed
-jointing
-jointly
-joints
-jointure
-joist
-joke
-joked
-joker
-jokers
-jokes
-jokey
-joking
-jokingly
-joky
-Joliet
-Jolla
-jollification
-jollify
-jollily
-jolliness
-jollity
-jolly
-jolt
-jolted
-jolter
-jolterhead
-jolting
-jolts
-Jon
-Jonah
-Jonas
-Jonathan
-Jonathanization
-Jonathanizations
-Jones
-Joneses
-jonquil
-Jonson
-Joplin
-Jordan
-Jordanian
-Jorge
-Jorgensen
-Jorgenson
-Jose
-Josef
-Joseph
-Josephine
-Josephson
-Josephus
-josh
-josher
-Joshua
-Josiah
-jostle
-jostled
-jostles
-jostling
-jot
-jots
-jotted
-jotter
-jotting
-joule
-jounce
-jouncy
-journal
-journalese
-journaling
-journalism
-journalist
-journalistic
-journalists
-journalize
-journalized
-journalizes
-journalizing
-journey
-journeyed
-journeyer
-journeying
-journeyings
-journeyman
-journeymen
-journeys
-joust
-jousted
-jouster
-jousting
-jousts
-Jovanovich
-Jove
-jovial
-joviality
-jovially
-Jovian
-jowl
-jowls
-jowly
-joy
-joy-ride
-joy-rider
-joyance
-Joyce
-joyful
-joyfully
-joyfulness
-joyless
-joylessly
-joylessness
-joyous
-joyously
-joyousness
-joyridden
-joyride
-joyrider
-joyriding
-joyrode
-joys
-joystick
-JP
-Juan
-Juanita
-Juarez
-Jubal
-jubilant
-jubilantly
-jubilate
-jubilation
-jubilee
-Judah
-Judaic
-Judaica
-Judaical
-Judaism
-Judas
-Judd
-Judder
-Juddered
-Juddering
-Judders
-Jude
-Judea
-judge
-judged
-judgement
-judges
-judgeship
-judging
-judgment
-judgmental
-judgmentally
-judgments
-judicative
-judicatory
-judicature
-judicial
-judicially
-judiciary
-judicious
-judiciously
-judiciousness
-Judith
-judo
-Judson
-Judy
-jug
-jug-bitten
-jugful
-juggernaut
-juggle
-juggler
-jugglers
-jugglery
-juggles
-juggling
-Jugoslavia
-jugs
-jugular
-jugulate
-juice
-juiced
-juicer
-juices
-juiciest
-juicily
-juiciness
-juicy
-jujitsu
-jujube
-jujutsu
-juke-box
-jukebox
-Jukes
-Jul
-julep
-Jules
-Julia
-Julian
-Julie
-julienne
-Julies
-Juliet
-Julio
-Julius
-July
-jumble
-jumbled
-jumbles
-jumblesale
-jumbo
-jump
-jump-start
-jumped
-jumper
-jumpers
-jumpily
-jumpiness
-jumping
-jumps
-jumpsuit
-jumpy
-Jun
-junco
-junction
-junctions
-juncture
-junctures
-June
-Juneau
-Junes
-Jung
-Jungian
-jungle
-jungles
-junior
-juniors
-juniper
-juniper-berry
-junk
-junkers
-junket
-junketeer
-junketer
-junkie
-junks
-junky
-junkyard
-Juno
-junta
-Jupiter
-Jura
-Juras
-Jurassic
-jure
-juridic
-juridical
-juridically
-juries
-jurisconsult
-jurisdiction
-jurisdictional
-jurisdictions
-jurisprudence
-jurist
-juristic
-juror
-jurors
-jury
-jury-rig
-jury-rigged
-juryman
-jurywoman
-just
-justice
-justices
-justiciary
-justifiable
-justifiably
-justification
-justifications
-justified
-justifier
-justifiers
-justifies
-justify
-justifying
-Justine
-Justinian
-justly
-justness
-jut
-jute
-Jutish
-Jutland
-jutting
-juvenile
-juveniles
-juvenilia
-juvenility
-juxtapose
-juxtaposed
-juxtaposes
-juxtaposing
-juxtaposition
-JV
-K
-K.O.
-kabob
-Kabul
-kaffeeklatch
-kaffeeklatsch
-Kafka
-Kafkaesque
-kaftan
-kahlua
-Kahn
-kail
-Kajar
-Kalahari
-Kalamazoo
-kale
-kaleidoscope
-kaleidoscopic
-kaleidoscopically
-Kali
-Kalmuk
-Kamchatka
-Kamikazes
-Kampala
-Kampuchea
-Kanarese
-Kandinsky
-Kane
-kangaroo
-kanji
-Kankakee
-Kannada
-Kano
-Kanpur
-Kans
-Kansan
-Kansas
-Kant
-Kantian
-Kaohsiung
-kaolin
-Kaplan
-kapok
-kappa
-kaput
-Karachi
-Karaganda
-karakul
-Karamazov
-karaoke
-karat
-karate
-Karen
-Karl
-karma
-karmic
-Karol
-Karp
-kart
-Kashmir
-Kaskaskia
-Kate
-Katharine
-Katherine
-Kathleen
-Kathmandu
-Kathy
-Katie
-Katmandu
-Katowice
-katydid
-Katz
-Kauai
-Kauffman
-Kaufman
-Kawasaki
-Kay
-kayak
-kayo
-Kazakhstan
-Kazan
-kazoo
-kB
-KC
-KDS
-KDT
-Keaton
-Keats
-kebab
-kebob
-keck
-kedge
-Keegan
-keel
-keeled
-keelhaul
-keeling
-keels
-keelson
-keen
-keen-set
-Keenan
-keener
-keenest
-keenly
-keenness
-keep
-keep-sake
-keeper
-keepers
-keeping
-keeping-room
-keeps
-keepsake
-keg
-Keith
-Keller
-Kelley
-Kellogg
-kelly
-kelp
-Kelsey
-Kelt
-Kemerovo
-Kemp
-ken
-Kendall
-Kenilworth
-Kennan
-Kennecott
-Kennedy
-kennel
-kennels
-Kenneth
-Kenney
-Kenning
-Kenny
-Kenosha
-Kensington
-Kent
-Kenton
-Kentuckian
-Kentucky
-Kenya
-Kenyan
-Kenyon
-kepi
-Kepler
-kept
-keratin
-kerb
-kerb-stone
-kerchief
-kerchiefs
-kerchieves
-kerf
-Kermit
-kern
-kernel
-kernels
-Kernighan
-kerosene
-kerosine
-Kerouac
-Kerr
-Kessler
-kestrel
-ketch
-ketchup
-Kettering
-kettle
-kettle-drum
-kettle-drums
-kettle-maker
-kettledrum
-kettles
-Kevin
-Kewaskum
-Kewaunee
-key
-key-board
-key-entry
-key-hole
-key-industry
-key-note
-key-stone
-keyblock
-keyboard
-keyboarder
-keyboardist
-keyboards
-keyed
-Keyes
-keyhole
-keying
-keylever
-Keynes
-Keynesian
-keynote
-keynoter
-keypad
-keypads
-keypoint
-keypunch
-keypuncher
-keys
-keyset
-keystation
-keystone
-keystoning
-keystroke
-keystrokes
-keyswitch
-keyway
-keyword
-keywords
-Khabarovsk
-khaki
-khakis
-khan
-Kharkov
-Khartoum
-Khmer
-Khrushchev
-Khrushchevs
-Khufu
-kHz
-KIA
-kibble
-kibbutz
-kibbutzim
-kibe
-kibitz
-kibitzer
-kibosh
-kick
-kick-off
-kick-start
-Kickapoo
-kickback
-kickball
-kicked
-kicker
-kickers
-kicking
-kickoff
-kicks
-kickstand
-kicky
-kid
-Kidd
-Kidde
-kidded
-kidder
-kiddie
-kidding
-kiddish
-kiddo
-kiddy
-kidnap
-kidnaper
-kidnapper
-kidnappers
-kidnapping
-kidnappings
-kidnaps
-kidney
-kidneys
-kids
-kidskin
-Kieffer
-Kiel
-kielbasa
-kielbasi
-kielbasy
-Kierkegaard
-Kiev
-Kiewit
-Kigali
-Kikuyu
-Kilauea
-Kilgore
-Kilimanjaro
-kill
-kill-joy
-killdeer
-Killebrew
-killed
-killer
-killers
-killing
-killingly
-killings
-killjoy
-kills
-kiln
-kilndry
-kilo
-kilo-man-hour
-kilobit
-kilobits
-kiloblock
-kilobyte
-kilobytes
-kilocycle
-kilogram
-kilograms
-kilohertz
-kilohm
-kilojoule
-kiloliter
-kilometer
-kilometers
-kilometre
-kiloton
-kilovolt
-kilowatt
-kilowatt-hour
-kiloword
-kilt
-kilter
-Kim
-Kimball
-Kimberly
-kimono
-kin
-kind
-kind-hearted
-kind-heartedly
-kind-heartedness
-kinder
-kindergarten
-kindergartener
-kindergartner
-kindest
-kindhearted
-kindheartedly
-kindheartedness
-kindle
-kindled
-kindles
-kindless
-kindliness
-kindling
-kindly
-kindness
-kindred
-kinds
-kine
-kinematic
-kinematics
-kinetic
-kinetically
-kinetics
-kinfolk
-kinfolks
-king
-king-cup
-king-fisher
-king-size
-king-sized
-kingdom
-kingdom-come
-kingfisher
-kingly
-kingpin
-kings
-Kingsbury
-kingship
-Kingsley
-Kingston
-Kingstown
-Kingwood
-kink
-kinkily
-kinkiness
-kinky
-Kinney
-Kinnickinnic
-Kinsey
-kinsfolk
-Kinshasa
-Kinshasha
-kinship
-kinsman
-kinswoman
-kiosk
-Kiowa
-kip
-Kipling
-kipper
-kippered
-Kirby
-Kirchner
-Kirchoff
-Kirghizia
-Kiribati
-kirk
-Kirkland
-Kirkpatrick
-Kirkwood
-Kirov
-kirsch
-Kishinev
-kismet
-kiss
-kiss-and-tell
-kissable
-kissed
-kisser
-kissers
-kisses
-kissing
-Kissinger
-kissproof
-kit
-Kitakyushu
-kitbag
-kitchen
-kitchen-garden
-kitchen-maid
-kitchen-range
-Kitchener
-kitchenette
-kitchens
-kitchenware
-kite
-kited
-kites
-kith
-kiting
-kits
-kitsch
-kitschy
-kitten
-kittenish
-kittens
-kittle
-kitty
-kitty-corner
-kitty-cornered
-Kiwanis
-kiwi
-kiwifruit
-KKK
-Klan
-Klaus
-klaxon
-Klee
-Kleenex
-Klein
-Kleinrock
-kleptomania
-kleptomaniac
-Kline
-Klondike
-kludge
-kludges
-klunk
-klutz
-klutziness
-klutzy
-Klux
-klystron
-knack
-knacker
-knackwurst
-knag
-knagy
-knap
-Knapp
-knapsack
-knapsacks
-knar
-Knauer
-knave
-knavery
-knaves
-knavish
-knavishly
-knead
-kneader
-kneading-trough
-kneads
-knee
-knee-cap
-knee-deep
-knee-high
-knee-hole
-knee-jerk
-knee-joint
-knee-slapper
-knee-socks
-kneecap
-kneed
-kneeing
-kneel
-kneeled
-kneeler
-kneeling
-kneels
-knees
-knell
-knells
-knelt
-knew
-knick-knack
-Knickerbocker
-knickerbockers
-knickers
-knickknack
-knife
-knife-edge
-knife-grinder
-knife-rest
-knifed
-knifes
-knifing
-knight
-knight-errant
-knighted
-knighthood
-knighting
-knightliness
-knightly
-knights
-knights-errant
-Knightsbridge
-knish
-knit
-knits
-knitted
-knitter
-knitting
-knitwear
-knives
-knob
-knobby
-Knobeloch
-knobs
-knock
-knock-knee
-knock-kneed
-knock-on
-knockdown
-knocked
-knocker
-knockers
-knocking
-knockoff
-knockout
-knocks
-knockwurst
-knoll
-knolls
-Knossos
-knot
-knothole
-knots
-Knott
-knotted
-knotting
-knotty
-knout
-know
-know!
-know-how
-know-it-all
-knowable
-knower
-knowhow
-knowing
-knowingly
-knowledge
-knowledgeable
-knowledgeably
-Knowles
-Knowlton
-known
-knows
-Knox
-Knoxville
-knuckle
-knuckled
-knucklehead
-knuckles
-Knudsen
-Knudson
-knur
-knurl
-knurr
-Knuth
-Knutsen
-Knutson
-KO
-koala
-Kobayashi
-Kobe
-Koch
-Kochab
-Kodachrome
-kodak
-Kodiak
-Koenig
-Koenigsberg
-Kohler
-kohlrabi
-kola
-Kong
-Konrad
-kook
-kookaburra
-kookie
-kookiness
-kooky
-kopeck
-kopek
-Koppers
-koran
-Koranic
-Korea
-Korean
-Koreans
-Kosciusko
-kosher
-Kovacs
-Kowalewski
-Kowalski
-Kowloon
-kowtow
-KP
-Kr
-kraal
-Kraemer
-Krakatau
-Krakatoa
-Krakow
-Kramer
-Krasnodar
-Krasnoyarsk
-Krause
-kraut
-Krebs
-Kremlin
-Kremlinologist
-Kremlinology
-Kresge
-Krieger
-krill
-Krishna
-Kristin
-krona
-krone
-Kronecker
-kroner
-kronor
-kronur
-Krueger
-Kruger
-Krugerrand
-Kruse
-krypton
-KS
-KSAM
-KTS
-Ku
-Kuala
-kuchen
-kudo
-kudos
-kudzu
-Kuenning
-Kuhn
-kulak
-Kumar
-kumquat
-Kunming
-Kurd
-Kurdish
-Kurdistan
-Kurt
-Kuwait
-Kuwaiti
-kvetch
-kW
-KWAC
-KWADE
-Kwangchow
-Kwangju
-Kwanza
-Kwanzaa
-kWh
-KWIC
-KWINDEX
-KWIP
-KWIT
-KWOC
-KWOT
-KWUC
-KYBD
-Kyoto
-Kyrgyzstan
-Kyushu
-L'vov
-la
-la-di-da
-lab
-Laban
-label
-labeled
-labeling
-labelled
-labeller
-labellers
-labelling
-labels
-labia
-labial
-labile
-labium
-labor
-labor-intensive
-labor-saving
-laboratories
-laboratory
-labored
-laborer
-laborers
-laboring
-laborings
-laborious
-laboriously
-laboriousness
-labors
-laborsaving
-labour
-labour-saving
-laboured
-labourer
-Labourite
-Labrador
-Labradorean
-Labradorian
-labs
-laburnum
-labyrinth
-labyrinthine
-labyrinths
-lace
-lace-woman
-laced
-lacerate
-lacerated
-lacerates
-lacerating
-laceration
-lacerations
-Lacerta
-lacewing
-Lacey
-laches
-Lachesis
-lachrymal
-lachrymation
-lachrymator
-lachrymose
-lacing
-lack
-lackadaisical
-lackadaisically
-Lackawanna
-lacked
-lacker
-lackey
-lacking
-lackland
-lackluster
-lacklustre
-lacks
-laconic
-laconically
-lacquer
-lacquered
-lacquers
-lacrimal
-lacrimator
-lacrosse
-lactate
-lactateous
-lactation
-lacteal
-lactic
-lactose
-lacuna
-lacunae
-lacy
-lad
-lad!
-ladder
-laddie
-lade
-laden
-ladies
-ladies-in-waiting
-ladies
-ladify
-lading
-ladle
-ladleful
-lads
-lady
-lady's-slipper
-lady-bird
-Lady-chapel
-lady-companion
-lady-in-waiting
-lady-killer
-lady-love
-lady-ship
-lady-slipper
-ladybird
-ladybug
-Ladyday
-ladyfinger
-ladyfy
-ladykin
-ladylike
-ladylove
-ladyslipper
-ladysmock
-laetrile
-laevogyrate
-Lafayette
-lag
-lager
-lagers
-laggard
-laggardly
-lagging
-lagnappe
-lagniappe
-lagoon
-lagoons
-Lagos
-Lagrange
-Lagrangian
-Laguerre
-Laguna
-Lahore
-laic
-laid
-laid-back
-Laidlaw
-lain
-lair
-laird
-lairs
-laisser-faire
-laissez
-laissez-faire
-laity
-lake
-lake-dwelling
-Lakehurst
-Lakewood
-lallygag
-lam
-lama
-Lamaism
-Lamar
-Lamarck
-lamasery
-lamb
-Lamb-Kid
-lambada
-lambast
-lambaste
-lambda
-lambdas
-lambency
-lambent
-lambently
-lambert
-lambkin
-lamblike
-lambrequin
-lambs
-lambskin
-lame
-lame-duck
-lamebrain
-lamed
-lamella
-lamely
-lameness
-lament
-lamentable
-lamentably
-lamentation
-lamentations
-lamented
-lamenting
-laments
-lames
-lamina
-laminae
-laminar
-laminate
-laminated
-lamination
-laming
-Lammas
-lamp
-lamp-black
-lamp-chimney
-lamp-lighter
-lamp-post
-lamp-socket
-lampblack
-lamplight
-lamplighter
-lampoon
-Lamport
-lamppost
-lamprey
-lamps
-lampshade
-LAN
-Lana
-lanai
-Lancashire
-Lancaster
-lance
-lanced
-Lancelot
-lancer
-lances
-lancet
-lancinate
-lancination
-land
-land-based
-land-fill
-land-holder
-land-jobber
-land-lubber
-land-mark
-land-owner
-land-reform
-land-service
-land-slide
-land-slip
-land-survey
-land-tax
-landau
-landed
-lander
-landers
-landfall
-landfill
-landholder
-landholding
-landing
-landing-place
-landing-stage
-landings
-Landis
-landladies
-landlady
-landless
-landlocked
-landlord
-landlords
-landlubber
-landmark
-landmarks
-landmass
-landowner
-landowners
-landowning
-lands
-landscape
-landscaped
-landscaper
-landscapes
-landscaping
-landslide
-landsman
-landward
-landwards
-Landwehr
-lane
-lanes
-Lang
-Lange
-Langeland
-Langford
-Langley
-Langmuir
-language
-language-independent
-languages
-langue
-languid
-languidly
-languidness
-languish
-languished
-languishes
-languishing
-languor
-languorous
-languorously
-lank
-Lanka
-lankiness
-lankly
-lankness
-lanky
-lanolin
-Lansing
-lantern
-lantern-jawed
-lanterns
-lanthanum
-lanyard
-Lanzhou
-Lao
-Lao-tse
-Laocoon
-Laos
-Laotian
-Laotians
-lap
-lapboard
-lapdog
-lapel
-lapels
-lapful
-lapidary
-lapin
-Laplace
-Laplacian
-Lapland
-Laplander
-Lapp
-lappet
-lapping
-laps
-lapse
-lapsed
-lapses
-lapsing
-laptop
-Laputa
-lapwing
-Laramie
-larboard
-larcenist
-larcenous
-larceny
-larch
-lard
-larder
-larding-pin
-lardy
-Laredo
-Lares
-large
-large-hearted
-large-minded
-large-scale
-large-sized
-largehearted
-largely
-largeness
-larger
-largess
-largesse
-largest
-largish
-largo
-lariat
-lark
-lark(s)
-lark-spur
-Larkin
-larks
-larkspur
-larky
-Larry
-Lars
-Larsen
-Larson
-larva
-larvae
-larval
-laryngeal
-larynges
-laryngitis
-larynx
-lasagna
-lasagne
-lascivious
-lasciviously
-lasciviousness
-laser
-lasers
-laserscan
-lash
-lashed
-lashes
-lashing
-lashings
-lass
-lasses
-lassie
-lassitude
-lasso
-last
-last-ditch
-lasted
-lasting
-lastingly
-lastly
-lasts
-Laszlo
-latch
-latch-key
-latched
-latches
-latchet
-latching
-latchkey
-late
-late-comer
-latecomer
-lately
-latency
-lateness
-latent
-later
-lateral
-laterally
-Lateran
-latest
-latex
-lath
-lathe
-lathe-hand
-lather
-lathery
-Lathrop
-lathy
-latices
-Latin
-Latin-American
-Latina
-Latinate
-Latinity
-Latinization
-Latinizations
-Latinize
-Latinized
-Latinizer
-Latinizers
-Latinizes
-Latinizing
-Latino
-latish
-latitude
-latitudes
-latitudinal
-latitudinarian
-latrine
-latrines
-Latrobe
-latte
-latter
-latter-day
-latterly
-lattice
-latticed
-lattices
-latticework
-Lattimer
-Latvia
-Latvian
-laud
-laudable
-laudably
-laudanum
-laudation
-laudatory
-Lauderdale
-Laue
-laugh
-laughable
-laughably
-laughed
-laugher
-laughing
-laughingly
-laughingstock
-Laughlin
-laughs
-laughter
-launch
-launched
-launcher
-launches
-launching
-launchings
-launchpad
-launder
-laundered
-launderer
-launderette
-laundering
-launderings
-launders
-laundress
-laundrette
-Laundromats
-laundry
-laundryman
-laundrywoman
-laureate
-laureateship
-laurel
-laurels
-Lauren
-Laurence
-Laurent
-Laurentian
-Laurie
-Lausanne
-lava
-lavage
-Laval
-lavalier
-lavaliere
-lavatories
-lavatory
-lave
-lavender
-lavish
-lavished
-lavishing
-lavishly
-lavishness
-Lavoisier
-law
-law-abiding
-law-breaker
-law-giver
-law-making
-law-suit
-lawbreaker
-lawbreaking
-Lawford
-lawful
-lawfully
-lawfulness
-lawgiver
-lawless
-lawlessly
-lawlessness
-lawmaker
-lawmaking
-lawn
-lawn-mower
-lawn-tennis
-lawnmower
-lawns
-Lawrence
-Lawrenceville
-lawrencium
-Lawson
-lawsuit
-lawsuits
-lawyer
-lawyers
-lax
-laxative
-laxity
-laxly
-laxness
-lay
-lay-by
-lay-down
-lay-off
-lay-up
-layaway
-laydays
-layer
-layered
-layering
-layers
-layette
-laying
-layman
-laymen
-layoff
-layoffs
-layout
-layover
-layperson
-lays
-Layton
-laywoman
-Lazarus
-laze
-lazed
-lazier
-laziest
-lazily
-laziness
-lazing
-lazy
-lazy-bed
-lazy-bones
-lazy-bones/boots
-lazy-tongs
-lazybones
-LC
-LCC
-LCD
-LCM
-LDC
-LDX
-lea
-leach
-lead
-lead-in
-lead-off
-lead-time
-leaded
-leaden
-leader
-leader-in
-leaderless
-leaders
-leadership
-leading
-leadings
-leads
-leaf
-leaf-beetle
-leaf-brass
-leaf-stalk
-leaf-turn
-leafage
-leafed
-leafiest
-leafing
-leafless
-leaflet
-leaflets
-leafstalk
-leafy
-league
-leagued
-leaguer
-leaguers
-leagues
-leak
-leakage
-leakages
-leaked
-leakiness
-leaking
-leakproof
-leaks
-leaky
-lean
-lean-to
-Leander
-leaned
-leaner
-leanest
-leaning
-leanness
-leans
-leant
-leap
-leap-frog
-leap-year
-leaped
-leaper
-leapfrog
-leaping
-leaps
-leapt
-Lear
-learn
-learned
-learnedly
-learner
-learners
-learning
-learning-disabled
-learns
-learnt
-Leary
-leasable
-lease
-leaseback
-leased
-leasehold
-leaseholder
-leaser
-leases
-leash
-leashes
-leasing
-least
-leastways
-leastwise
-leather
-leather-bound
-leather-dealer's
-leather-dresser
-leather-head
-leather-neck
-leatherboard
-leathercloth
-leathered
-leatherette
-leatherine
-leathering
-leathern
-leatherneck
-leathers
-leathery
-leave
-leave-taking
-leaved
-leaven
-leavened
-leavening
-Leavenworth
-leaver
-leaves
-leaving
-leavings
-Lebanese
-Lebanon
-Lebesgue
-lecher
-lecherous
-lecherously
-lecherousness
-lechery
-lecithin
-lectern
-lector
-lecture
-lectured
-lecturer
-lecturers
-lectures
-lectureship
-lecturing
-led
-ledge
-ledger
-ledger-bait
-ledger-line
-ledgers
-ledges
-lee
-lee-side
-leech
-leeches
-Leeds
-leek
-Leeks
-leer
-leeriness
-leery
-lees
-Leeuwenhoek
-leeward
-leeway
-left
-left-aligned
-left-hand
-left-handed
-left-handedness
-left-hander
-left-wing
-left-winger
-leftie
-leftism
-leftist
-leftists
-leftmost
-leftover
-leftovers
-leftward
-leftwards
-lefty
-leg
-legacies
-legacy
-legal
-legalese
-legalism
-legalistic
-legality
-legalization
-legalize
-legalized
-legalizes
-legalizing
-legally
-legate
-legatee
-legation
-legato
-legend
-legendarily
-legendary
-Legendre
-legends
-leger
-legerdemain
-Legers
-legged
-leggin
-legginess
-legging
-leggings
-leggy
-legibility
-legible
-legibly
-legion
-legionary
-legionnaire
-legions
-legislate
-legislated
-legislates
-legislating
-legislation
-legislative
-legislatively
-legislator
-legislators
-legislature
-legislatures
-legit
-legitimacy
-legitimate
-legitimately
-legitimatize
-legitimization
-legitimize
-legless
-legman
-legroom
-legs
-legume
-legumen
-Legumes
-leguminous
-legwork
-Lehigh
-Lehman
-lei
-Leibniz
-Leicester
-Leiden
-Leigh
-Leighton
-Leila
-Leipsic
-Leipzig
-leisure
-leisured
-leisureliness
-leisurely
-leisurewear
-leitmotif
-leitmotiv
-Leland
-Lemberg
-Lemke
-lemma
-lemmas
-lemmata
-lemmatization
-lemming
-lemmings
-lemniscate
-lemon
-lemonade
-lemons
-lemony
-Lemuel
-lemur
-Len
-Lena
-lend
-lend-lease
-lender
-lenders
-lending
-lending-library
-lends
-length
-lengthen
-lengthened
-lengthening
-lengthens
-lengthily
-lengthiness
-lengthly
-lengths
-lengthways
-lengthwise
-lengthy
-lenience
-leniency
-lenient
-leniently
-Lenin
-Leningrad
-Leninism
-Leninist
-lenitive
-lenity
-Lennox
-Lenny
-Lenore
-lens
-lenses
-lent
-Lenten
-lenticular
-lentil
-lentils
-lento
-Leo
-Leon
-Leona
-Leonard
-Leonardo
-Leone
-Leonid
-leonine
-leopard
-leopardess
-leopards
-Leopol
-Leopold
-Leopoldville
-leotard
-leper
-leprechaun
-leprosy
-leprous
-lepton
-Leroy
-lesbianism
-Lesbians
-lesion
-Leslie
-Lesotho
-less
-less-or-equal
-lessee
-lessen
-lessened
-lessening
-lessens
-lesser
-lesson
-lessons
-lessor
-lest
-Lester
-let
-let's
-let-down
-let-up
-letdown
-lethal
-lethally
-lethargic
-lethargically
-lethargy
-Lethe
-Letitia
-lets
-letter
-letter-board
-letter-box
-letter-card
-letter-head
-letter-perfect
-letter-quality
-lettered
-letterer
-letterhead
-lettering
-letterpress
-letters
-letterset
-Lettic
-letting
-Lettish
-lettuce
-letup
-leucoma
-leukaemia
-leukemia
-leukemic
-leukocyte
-Lev
-Levant
-Levantine
-levee
-levees
-level
-level-headed
-leveled
-leveler
-levelheaded
-levelheadedness
-leveling
-levelled
-leveller
-levellest
-levelling
-levelly
-levelness
-levels
-lever
-lever-watch
-leverage
-leveraging
-leveret
-levers
-Levi
-Levi's
-Leviable
-leviathan
-levied
-levier
-levies
-levigate
-Levin
-Levine
-Levis
-levitate
-levitation
-Levite
-Leviticus
-Levitt
-levity
-levy
-levying
-Lew
-lewd
-lewdly
-lewdness
-Lewellyn
-Lewis
-lexeme
-lexica
-lexical
-lexically
-lexicographer
-lexicographic
-lexicographical
-lexicographically
-lexicography
-lexicology
-lexicon
-lexicons
-Lexington
-Leyden
-Lhasa
-Li
-li-labour
-liabilities
-liability
-liable
-liaise
-liaison
-liaisons
-liar
-liars
-lib
-libation
-libel
-libeler
-libeller
-libellous
-libelous
-Liberace
-liberal
-liberalism
-liberality
-liberalization
-liberalize
-liberalized
-liberalizes
-liberalizing
-liberally
-liberalness
-liberals
-liberate
-liberated
-liberates
-liberating
-liberation
-liberator
-liberators
-Liberia
-Liberian
-libertarian
-liberties
-libertinage
-libertine
-liberty
-libidinal
-libidinous
-libido
-libname
-Libra
-librarian
-librarian-in-charge
-librarians
-librarianship
-libraries
-library
-libretti
-librettist
-libretto
-Libreville
-LIBRIS
-Libya
-Libyan
-lice
-licence
-license
-licensed
-licensee
-licenser
-licenses
-licensing
-licensor
-licentiate
-licentious
-licentiously
-licentiousness
-lichee
-lichen
-lichens
-Lichter
-licit
-licitly
-lick
-licked
-lickerish
-lickety-split
-licking
-licks
-licorice
-lid
-lidded
-lidless
-lido
-lids
-lie
-Lieberman
-Liechtenstein
-Liechtensteiner
-lied
-lieder
-lief
-liege
-liegeman
-lien
-liens
-lies
-lieu
-lieutenancy
-lieutenant
-lieutenant-general
-lieutenant-governor
-lieutenants
-life
-life-belt
-life-boat
-life-guard
-life-line
-life-preserver
-life-saver
-life-sentence
-life-size
-life-sized
-life-threatening
-life-work
-lifeblood
-lifeboat
-lifebuoy
-lifeguard
-lifeless
-lifelessly
-lifelessness
-lifelike
-lifeline
-lifelong
-lifer
-lifesaver
-lifesaving
-lifespan
-lifestyle
-lifestyles
-lifetime
-lifetimes
-lifework
-LIFO
-lift
-lift-off
-lifted
-lifter
-lifters
-lifting
-liftoff
-lifts
-ligament
-ligate
-ligation
-ligature
-Ligget
-Liggett
-light
-light(-coloured)
-light-bulb
-light-fingered
-light-footed
-light-headed
-light-headedness
-light-hearted
-light-heartedly
-light-house
-light-minded
-light-sensitive
-light-weight
-light-year
-lighted
-lighten
-lightener
-lightens
-lighter
-lighters
-lightest
-lightface
-lightfaced
-lightheaded
-lighthearted
-lightheartedly
-lightheartedness
-lighthouse
-lighthouses
-lighting
-lightly
-lightness
-lightning
-lightnings
-lightproof
-lights
-lights-out
-lightship
-lightsome
-lightweight
-lightwood
-ligneous
-lignite
-likability
-likable
-likableness
-like
-like-minded
-like-mindedness
-likeable
-liked
-likelier
-likeliest
-likelihood
-likelihoods
-likeliness
-likely
-liken
-likened
-likeness
-likenesses
-likening
-likens
-likes
-likewise
-liking
-Lila
-lilac
-lilacs
-liliaceous
-Lilian
-lilies
-lilies-of-the-valley
-Lillian
-Lilliput
-Lilliputianize
-Lilliputianizes
-Lilly
-Lilongwe
-lilt
-lilting
-lily
-lily-livered
-lily-white
-Lima
-Liman
-limb
-limber
-limberness
-limbless
-limbo
-limbs
-Limburger
-lime
-lime-kiln
-lime-light
-lime-slaking
-lime-tree
-limeade
-limelight
-limerick
-limes
-limestone
-limit
-limitability
-limitably
-limitation
-limitations
-limited
-limiter
-limiters
-limiting
-limitless
-limitlessness
-limits
-limn
-limner
-limo
-Limoges
-limousine
-limp
-limp-wrist
-limped
-limpet
-limpid
-limpidity
-limpidly
-limpidness
-limping
-limply
-limpness
-Limpopo
-limps
-limy
-Lin
-linage
-linchpin
-Lincoln
-Lind
-Linda
-Lindberg
-Lindbergh
-linden
-Lindholm
-Lindquist
-Lindsay
-Lindsey
-Lindstrom
-Lindy
-line
-line-drawing
-line-engraving
-line-up
-lineage
-lineal
-lineally
-lineament
-lineaments
-linear
-linearities
-linearity
-linearizable
-linearize
-linearized
-linearizes
-linearizing
-linearly
-linebacker
-lined
-lineman
-linen
-linens
-liner
-liners
-lines
-linesman
-linesmen
-lineup
-ling
-linger
-lingered
-lingerer
-lingerie
-lingering
-lingeringly
-lingers
-lingo
-lingua
-lingual
-linguine
-linguini
-linguist
-linguistic
-linguistically
-linguistics
-linguists
-liniment
-lining
-linings
-link
-linkage
-linkages
-linked
-linker
-linkers
-linking
-links
-linkup
-Linnaeus
-linnet
-lino-cut
-linocut
-linoleum
-linotype
-linseed
-lint
-lintel
-Linton
-linty
-Linus
-Linux
-liny
-lion
-lion-hearted
-Lionel
-lioness
-lionesses
-lionhearted
-lionization
-lionize
-lions
-lip
-lip-deep
-lip-read
-lip-reading
-lip-salve
-lip-stick
-lip-sync
-lip-synch
-lipid
-liposuction
-lipped
-Lippincott
-lippy
-lipread
-lipreader
-lipreading
-lips
-Lipschitz
-Lipscomb
-lipstick
-Lipton
-liquefaction
-liquefy
-liqueur
-liqueurs
-liquid
-liquidate
-liquidation
-liquidations
-liquidator
-liquidity
-liquidize
-liquidizer
-liquids
-liquify
-liquor
-liquorice
-liquorish
-liquors
-lira
-lire
-Lisa
-Lisbon
-Lise
-lisle
-lisp
-lisped
-lisper
-lisping
-lisps
-Liss
-Lissajous
-lissom
-lissome
-list
-listed
-listen
-listen!
-listened
-listener
-listeners
-listening
-listens
-Lister
-Listerize
-Listerizes
-listers
-listing
-listings
-listless
-listlessly
-listlessness
-Liston
-lists
-Liszt
-lit
-litany
-litchi
-lite
-liter
-literacy
-literal
-literally
-literalness
-literals
-literariness
-literary
-literate
-literately
-literati
-literation
-literature
-literatures
-liters
-litharge
-lithe
-lithely
-litheness
-lithesome
-lithium
-lithochromy
-lithograph
-lithographer
-lithographic
-lithographically
-lithography
-lithogravure
-lithophotography
-lithosphere
-Lithuania
-Lithuanian
-litigant
-litigate
-litigation
-litigator
-litigious
-litigiousness
-litmus
-litotes
-litre
-litter
-litter-bin
-litterateur
-litterbug
-littered
-litterer
-littering
-litters
-little
-little-go
-little-minded
-littleness
-littler
-littlest
-Littleton
-Litton
-littoral
-liturgical
-liturgically
-liturgist
-liturgy
-livability
-livable
-livably
-live
-live-in
-liveable
-lived
-lived-in
-livelihood
-liveliness
-livelong
-lively
-liven
-liveness
-liver
-liver-fluke
-liveried
-liverish
-Livermore
-Liverpool
-Liverpudlian
-livers
-liverwort
-liverwurst
-livery
-liveryman
-lives
-livestock
-liveware
-livewire
-livid
-lividly
-living
-living-room
-Livingston
-Livingstone
-Livonia
-lixiviate
-Liz
-lizard
-lizards
-Lizzie
-Lizzy
-Ljubljana
-llama
-llano
-llanos
-Lloyd
-Lloyd's
-lo
-load
-loaded
-loader
-loaders
-loading
-loadings
-loadingstone
-loads
-loadstar
-loadstone
-loaf
-loafed
-loafer
-loam
-loamy
-loan
-loan-shark
-loaned
-loaner
-loaning
-loans
-loansharking
-loanword
-loath
-loathe
-loathed
-loather
-loathing
-loathly
-loathsome
-loathsomely
-loathsomeness
-loaves
-lob
-lobar
-lobate
-lobber
-lobbied
-lobbies
-lobby
-lobbying
-lobbyist
-lobe
-lobed
-lobes
-lobotomize
-lobotomy
-lobster
-lobsters
-LOC
-local
-locale
-localities
-locality
-localization
-localize
-localized
-localizes
-localizing
-locally
-locally-attached
-locals
-locate
-located
-locates
-locating
-location
-locations
-locative
-locatives
-locator
-locators
-loch
-loci
-lock
-lock-picker
-lock-smith
-lock-up
-lockage
-Locke
-locked
-locker
-lockers
-locket
-Lockhart
-Lockheed
-Lockian
-locking
-lockings
-lockjaw
-lockout
-lockouts
-locks
-locksmith
-lockstep
-lockup
-lockups
-Lockwood
-loco
-locomotion
-locomotive
-locomotives
-locoweed
-locus
-locust
-locusts
-locution
-lode
-lodestar
-lodestone
-lodge
-lodged
-lodger
-lodges
-lodging
-lodging-house
-lodgingment
-lodgings
-Lodowick
-Lodz
-Loeb
-loft
-loftily
-loftiness
-lofts
-lofty
-log
-log-book
-log-cabin
-Logan
-loganberry
-logarithm
-logarithmic
-logarithmically
-logarithms
-logbook
-loge
-logged
-logger
-loggerhead
-loggerheads
-loggers
-loggia
-logging
-loghouse
-logic
-logical
-logicality
-logically
-logician
-logicians
-logics
-login
-logins
-logistic
-logistical
-logistically
-logistics
-logjam
-logoff
-logogram
-logon
-logotype
-logrolling
-logs
-logy
-loin
-loincloth
-loins
-Loire
-Lois
-loiter
-loitered
-loiterer
-loitering
-loiters
-Loki
-Lola
-loll
-lollipop
-lollygag
-lollypop
-Lomb
-Lombard
-Lombardy
-Lome
-Londer
-London
-Londonderry
-Londoner
-Londonization
-Londonizations
-Londonize
-Londonizes
-lone
-lonelier
-loneliest
-loneliness
-lonely
-loner
-loners
-lonesome
-lonesomely
-lonesomeness
-long
-long-ago
-long-awaited
-long-distance
-long-drawn-out
-long-eared
-long-faced
-long-head
-long-lasting
-long-lived
-long-lost
-long-player
-long-playing
-long-range
-long-running
-long-sighted
-long-standing
-long-suffering
-long-term
-long-time
-long-winded
-long-windedness
-longboat
-longbow
-longe
-longed
-longer
-longest
-longevity
-Longfellow
-longhair
-longhand
-longhorn
-longing
-longingly
-longings
-longish
-longitude
-longitudes
-longitudinal
-longitudinally
-longs
-longshafted
-longshoreman
-longsighted
-longstanding
-Longstreet
-longtime
-Longueuil
-longueur
-longwall
-longways
-longwise
-looby
-loofah
-look
-look!
-look-alike
-look-over
-look-see
-look-up
-lookahead
-lookalike
-looked
-looker
-looker-on
-lookers
-lookers-on
-looking
-looking-glass
-lookout
-looks
-lookup
-lookups
-loom
-loomed
-looming
-Loomis
-looms
-loon
-looney
-loony
-loop
-loop-hole
-looped
-loophole
-loopholes
-looping
-loops
-loopy
-loose
-loose-leaf
-loosed
-looseleaf
-loosely
-loosen
-loosened
-looseness
-loosening
-loosens
-looser
-looses
-loosest
-loosing
-loot
-looted
-looter
-looting
-loots
-lop
-lop-eared
-lope
-lopear
-Lopez
-lopsided
-lopsidedly
-lopsidedness
-loquacious
-loquaciousness
-loquacity
-lord
-Lord-a-mercy
-lordliness
-lordly
-lords
-lordship
-lore
-Lorelei
-Loren
-Lorentzian
-Lorenz
-Loretta
-lorgnette
-Lorinda
-loris
-lorn
-Lorraine
-lorry
-lorry-hop
-Los
-lose
-loser
-losers
-loses
-losing
-loss
-losses
-lossier
-lossiest
-lossless
-lossy
-lost
-lost-and-found
-lot
-loth
-Lothario
-lotion
-lots
-Lotte
-lottery
-lottery-ticket
-Lottie
-lotto
-lotus
-lotus-eater
-lotus-land
-Lou
-loud
-loud-hailer
-loud-speaker
-louder
-loudest
-loudhailer
-loudly
-loudmouth
-loudmouthed
-loudness
-loudspeaker
-loudspeakers
-Louis
-Louisa
-Louise
-Louisiana
-Louisianan
-Louisianian
-Louisville
-lounge
-lounge-lizard
-lounged
-lounger
-lounges
-lounging
-Lounsbury
-lour
-Lourdes
-louse
-lousily
-lousiness
-lousy
-lout
-loutish
-loutishly
-louver
-louvered
-louvre
-louvred
-lovable
-lovableness
-lovably
-love
-love-affair
-love-making
-love-match
-love-sick
-love-token
-loveable
-lovebird
-lovebirds
-lovechild
-loved
-Lovejoy
-Lovelace
-Loveland
-loveless
-lovelier
-lovelies
-loveliest
-loveliness
-lovelorn
-lovely
-lovemaking
-lover
-lovers
-loves
-loveseat
-lovesick
-loving
-lovingly
-low
-low-bred
-low-brow
-low-cal
-low-cost
-low-down
-low-end
-low-fat
-low-glare
-low-grade
-low-key
-low-keyed
-low-level
-low-level-bomb
-low-life
-low-lying
-low-minded
-low-pitched
-low-pressure
-low-rise
-low-spirited
-low-tech
-lowborn
-lowboy
-lowbrow
-lowdown
-Lowe
-Lowell
-lower
-lower-class
-lowercase
-lowered
-lowering
-lowermost
-lowers
-lowest
-lowland
-lowlander
-lowliest
-lowlife
-lowliness
-lowly
-lowness
-Lowry
-lows
-lox
-Loy
-loyal
-loyalism
-loyalist
-loyally
-loyalties
-loyalty
-Loyola
-lozenge
-LP
-LPG
-LPN
-Lr
-LSD
-LSI
-Lt
-Lu
-Luanda
-luau
-lubber
-lubberly
-Lubbock
-lube
-Lubell
-lubricant
-lubricate
-lubrication
-lubricator
-lubricious
-lubricity
-Lucas
-lucent
-lucerne
-Lucia
-Lucian
-lucid
-lucidity
-lucidly
-lucidness
-Lucien
-Lucifer
-Lucille
-Lucite
-Lucius
-luck
-lucked
-luckier
-luckiest
-luckily
-luckiness
-luckless
-Lucknow
-lucks
-lucky
-lucky-bag
-lucrative
-lucratively
-lucrativeness
-lucre
-Lucretia
-Lucretius
-lucubrate
-lucubration
-luculent
-Lucy
-Luddite
-ludic
-ludicrous
-ludicrously
-ludicrousness
-Ludlow
-Ludmilla
-Ludwig
-luff
-Lufthansa
-Luftwaffe
-lug
-luggage
-lugger
-lugsail
-lugubrious
-lugubriously
-lugubriousness
-Luis
-Luke
-lukewarm
-lukewarmly
-lukewarmness
-lull
-lullaby
-lulled
-lulls
-lumbago
-lumbar
-lumber
-lumber-room
-lumbered
-lumberer
-lumbering
-lumberjack
-lumberman
-lumberyard
-luminance
-luminary
-luminescence
-luminescent
-luminosity
-luminous
-luminously
-lummox
-lump
-lumped
-lumpiness
-lumping
-lumpish
-lumps
-Lumpur
-lumpy
-lunacy
-lunar
-lunate
-lunatic
-lunch
-lunched
-luncheon
-luncheonette
-luncheons
-lunches
-lunching
-lunchroom
-lunchtime
-Lund
-Lundberg
-Lundquist
-lunette
-lung
-lunge
-lunged
-lungfish
-lungs
-lunkhead
-lupin
-lupine
-lupus
-Lura
-lurch
-lurched
-lurches
-lurching
-lure
-lured
-lures
-lurex
-lurid
-luridly
-luridness
-luring
-lurk
-lurked
-lurking
-lurking-place
-lurks
-Lusaka
-luscious
-lusciously
-lusciousness
-lush
-lushly
-lushness
-lust
-luster
-lusterless
-lustful
-lustfully
-lustily
-lustiness
-lustre
-lustrous
-lustrously
-lusts
-lusty
-lutanist
-lute
-lutenist
-lutes
-lutetium
-Luther
-Lutheran
-Lutheranism
-Lutheranize
-Lutheranizer
-Lutheranizers
-Lutheranizes
-Lutz
-Luxembourg
-Luxembourger
-Luxembourgian
-Luxemburg
-luxmeter
-luxuriance
-luxuriant
-luxuriantly
-luxuriate
-luxuriation
-luxuries
-luxurious
-luxuriously
-luxuriousness
-luxury
-Luzon
-Lviv
-Lvov
-Lwow
-Lyallpur
-lyceum
-lychee
-Lycra
-Lydia
-Lydian
-lye
-lying
-lying-in
-lyings-in
-Lykes
-Lyle
-Lyman
-lymph
-lymphatic
-lymphocyte
-lymphoid
-lymphoma
-lymphomata
-lynch
-Lynchburg
-lynched
-lyncher
-lynches
-lynching
-lynchpin
-Lyndon
-Lynn
-lynx
-lynx-eyed
-lynxes
-Lyon
-Lyons
-Lyra
-lyre
-lyrebird
-lyric
-lyrical
-lyrically
-lyricism
-lyricist
-lyrics
-Lysenko
-m.p.h.
-MA
-ma'am
-Mabel
-macabre
-macadam
-Macadamia
-macadamize
-Macao
-macaque
-macaroni
-macaroon
-Macassar
-Macaulay
-Macaulayan
-Macaulayism
-Macaulayisms
-macaw
-Macbeth
-Maccabees
-MacDraw
-mace
-mace-bearer
-maced
-Macedon
-Macedonia
-Macedonian
-macer
-macerate
-maceration
-maces
-Mach
-machete
-Machiavelli
-Machiavellian
-machinate
-machination
-machinations
-machine
-machine-dependent
-machine-gun
-machine-made
-machine-readable
-machine-searcher
-machine-setting
-machine-shed
-machined
-machinelike
-machinery
-machines
-machining
-machinist
-machismo
-macho
-Macintosh
-mackerel
-Mackey
-Mackinac
-mackintosh
-mackling
-MacMahon
-Macon
-MacPaint
-macrame
-macro
-macrobiotic
-macrobiotics
-macrocosm
-macroeconomics
-macroevaluation
-macroform
-macromolecule
-macromolecules
-macron
-macrophage
-macrophotograph
-macroprogramming
-macros
-macroscopic
-macrostore
-macrostructure
-macrothesaurus
-macula
-mad
-mad-doctor
-mad-house
-Madagascan
-Madagascar
-madam
-Madames
-madcap
-madden
-maddening
-maddeningly
-madder
-maddest
-madding
-maddish
-Maddox
-made
-made-to-measure
-made-to-order
-made-up
-madedishes
-Madeira
-Madeleine
-Madeline
-mademoiselle
-madhouse
-Madhya
-Madison
-madly
-madman
-madmen
-madness
-Madonna
-Madonnas
-Madrid
-madrigal
-Madsen
-madwoman
-madwort
-Mae
-maecenas
-maelstrom
-maestri
-maestro
-mag
-magazine
-Magdalene
-mage
-Magellan
-Magellanic
-magenta
-Maggie
-maggot
-maggots
-maggoty
-magi
-magic
-magical
-magically
-magician
-magicians
-Magill
-magisterial
-magisterially
-magistracy
-magistral
-magistrate
-magistrates
-magma
-magna
-magnanimity
-magnanimous
-magnanimously
-magnate
-magnesia
-magnesium
-magnet
-magnetic
-magnetical
-magnetically
-magnetise
-magnetism
-magnetisms
-magnetite
-magnetizable
-magnetization
-magnetize
-magnetized
-magneto
-magneto-electric
-magnetometer
-magnification
-magnificence
-magnificent
-magnificently
-magnifico
-magnified
-magnifier
-magnifies
-magnify
-magnifying
-magniloquence
-magniloquent
-magnitude
-magnitudes
-magnolia
-magnum
-Magnuson
-Magog
-magpie
-magpie-moth
-Magruder
-Maguire
-Maguires
-magus
-Magyar
-mah-jongg
-maharaja
-maharajah
-maharanee
-maharani
-Maharashtra
-maharishi
-mahatma
-Mahayana
-Mahayanist
-Mahican
-mahjong
-Mahler
-mahogany
-Mahomet
-Mahometan
-Mahoney
-mahout
-maid
-maid-of-all-work
-maid-servant
-maiden
-maidenhair
-maidenhead
-maidenhood
-maidenly
-maidens
-maids
-maidservant
-Maier
-mail
-mail-car
-mail-cart
-mail-coach
-mail-order
-mail-train
-mailable
-mailbag
-mailbox
-mailboxes
-mailed
-mailer
-mailing
-mailings
-maillot
-mailman
-mailmen
-mails
-maim
-maimed
-maiming
-maims
-main
-Maine
-Mainer
-mainframe
-mainframes
-mainland
-mainline
-mainly
-mainmast
-mains
-mainsail
-mainspring
-mainstay
-mainstream
-maintain
-maintainability
-maintainable
-maintained
-maintainer
-maintainers
-maintaining
-maintains
-maintenance
-maintenances
-maintop
-maiolica
-maisonette
-maize
-Maj
-majestic
-majestical
-majestically
-majesties
-majesty
-majolica
-major
-major-domo
-major-general
-major-league
-Majorca
-majordomo
-majored
-majorette
-majoring
-majorities
-majority
-majors
-majuscule
-mak-peace
-mak-up
-makable
-make
-make-and-break
-make-believe
-make-belive
-make-do
-make-up
-make-work
-makeover
-maker
-makers
-makes
-makeshift
-makeup
-makeups
-makfast
-making
-making-ready
-makings
-makshift
-Malabar
-Malabo
-malachite
-maladies
-maladjusted
-maladjustment
-maladminister
-maladroit
-maladroitly
-maladroitness
-malady
-Malagasy
-malaise
-Malamud
-malamute
-malapropism
-malaria
-malarial
-malarkey
-malathion
-Malawi
-Malawian
-Malay
-Malaya
-Malayalam
-Malayan
-Malayize
-Malayizes
-Malaysia
-Malaysian
-Malcolm
-malcontent
-Malden
-maldistribution
-Maldive
-Maldives
-Maldivian
-male
-male-nurse
-malediction
-malefaction
-malefactor
-malefactors
-malefic
-maleficence
-maleficent
-maleness
-males
-malevolence
-malevolent
-malevolently
-malfeasance
-malformation
-malformed
-malfunction
-malfunctioned
-malfunctioning
-malfunctions
-Mali
-Malian
-Malibu
-malice
-malicious
-maliciously
-maliciousness
-malign
-malignancy
-malignant
-malignantly
-malignity
-MALIMET
-malinger
-malingerer
-mall
-mallard
-malleability
-malleable
-malleablize
-mallet
-mallets
-Mallory
-mallow
-malmsey
-malnourished
-malnutrition
-malocclusion
-malodorous
-Malone
-Maloney
-malpractice
-Malraux
-malt
-Malta
-malted
-Maltese
-Malthus
-Malthusian
-Malton
-maltose
-maltreat
-maltreatment
-malts
-maltster
-malty
-malversation
-mama
-mamba
-mambo
-mamm
-mamma
-mammal
-mammalia
-mammalian
-mammals
-mammary
-mammas
-mammogram
-mammography
-mammon
-mammoth
-mammy
-mammy-sick
-man
-man!
-man-at-arms
-man-eater
-man-eating
-man-hole
-man-hour
-man-made
-man-of-the-world
-man-of-war
-man-size
-man-sized
-man-to-man
-manacle
-manage
-manageability
-manageable
-manageableness
-managed
-management
-managements
-manager
-manageress
-managerial
-managers
-manages
-managing
-Managua
-Manama
-manana
-manatee
-Manchester
-Manchu
-Manchuria
-Manchurian
-manciple
-Mancunian
-mandala
-Mandalay
-mandamus
-mandate
-mandated
-mandates
-mandating
-mandatory
-Mandela
-Mandelbrot
-mandible
-mandibular
-mandolin
-mandoline
-mandrake
-mandrel
-mandril
-mandrill
-manducate
-mane
-maned
-manege
-manes
-Manet
-maneuver
-maneuverability
-maneuverable
-maneuvered
-maneuvering
-maneuvers
-maneuvre
-Manfred
-manful
-manfully
-manganate
-manganese
-mange
-manger
-mangers
-manginess
-mangle
-mangled
-mangler
-mangles
-mangling
-mango
-mangrove
-mangy
-manhandle
-Manhattan
-Manhattanize
-Manhattanizes
-manhole
-manhood
-manhunt
-mania
-maniac
-maniacal
-maniacally
-maniacs
-manic
-manic-depressive
-manically
-manicure
-manicured
-manicures
-manicuring
-manicurist
-manifest
-manifestation
-manifestations
-manifested
-manifesting
-manifestly
-manifesto
-manifests
-manifold
-manifolds
-manikin
-manila
-manilla
-manioc
-manipulability
-manipulable
-manipulatable
-manipulate
-manipulated
-manipulates
-manipulating
-manipulation
-manipulations
-manipulative
-manipulator
-manipulators
-manipulatory
-Manitoba
-Manitowoc
-mankind
-Mankowski
-Manley
-manlike
-manliness
-manly
-Mann
-manna
-manned
-mannequin
-manner
-mannered
-mannerism
-mannerly
-manners
-mannikin
-manning
-mannish
-mannishly
-mannishness
-manoeuvre
-manometer
-manometers
-manor
-manorial
-manors
-manpower
-manque
-Mans
-mansard
-manse
-manservant
-Mansfield
-mansion
-mansions
-manslaughter
-manta
-mantel
-mantel-piece
-mantelpiece
-mantels
-mantilla
-mantis
-mantissa
-mantissas
-mantle
-mantlepiece
-mantles
-mantra
-manual
-manually
-manually-operated
-manuals
-Manuel
-manufactory
-manufacture
-manufactured
-manufacturer
-manufacturers
-manufactures
-manufacturing
-manumission
-manumit
-manure
-manuscript
-manuscripts
-Manville
-manware
-Manx
-many
-many-sided
-many-to-one
-manycoloured
-mans
-Mao
-Maoism
-Maoist
-Maori
-map
-map-making
-maple
-Maplecrest
-maples
-mapmaker
-mappable
-mapped
-mapper
-mapping
-mappings
-maps
-Maputo
-mar
-mar-all
-marabou
-marabout
-maraca
-Maracaibo
-maraschino
-marathon
-marathoner
-maraud
-marauder
-marauding
-marble
-marble-slab
-marbled
-marbleize
-marbles
-marbling
-Marc
-Marceau
-Marcel
-Marcella
-Marcello
-march
-marched
-marcher
-marches
-marching
-marchioness
-marchpane
-Marcia
-Marco
-Marconi
-Marcotte
-Marcus
-Marcy
-Mardi
-Mardis
-mare
-mare's-nest
-mares
-Margaret
-margarine
-margarita
-Margery
-margin
-marginal
-marginalia
-marginalize
-marginally
-margins
-Margo
-margrave
-marguerite
-maria
-mariachi
-Marian
-Marianne
-Marie
-Marietta
-marigold
-marihuana
-marijuana
-Marilyn
-marimba
-Marin
-marina
-marinade
-marinara
-marinate
-marination
-marine
-mariner
-Marino
-Mario
-Marion
-marionette
-marital
-maritally
-maritime
-Mariupol
-marjoram
-Marjorie
-Marjory
-mark
-mark-place
-mark-up
-markable
-markdown
-marked
-markedly
-marker
-markers
-markerup
-markerwidth
-market
-marketability
-marketable
-marketed
-marketeer
-marketer
-marketing
-marketings
-marketplace
-marketplaces
-markets
-Markham
-marking
-markings
-Markism
-markka
-markkaa
-Markov
-Markovian
-Markovitz
-Marks
-marksman
-marksmanship
-markup
-marl
-Marlboro
-Marlborough
-Marlene
-marlin
-marlinespike
-marlinspike
-Marlowe
-marmalade
-Marmara
-marmelade
-marmoreal
-marmoset
-marmot
-maroon
-marque
-marquee
-marquess
-marquetry
-Marquette
-marquis
-marquise
-marquisette
-marriage
-marriageability
-marriageable
-marriages
-married
-marries
-Marriott
-marrow
-marry
-marrying
-Mars
-Marseillaise
-Marseille
-Marseilles
-marsh
-Marsha
-marshal
-marshaled
-marshaling
-Marshall
-Marshalled
-Marshalling
-marshallisation
-marshals
-marshes
-marshland
-marshmallow
-marshy
-marsupial
-mart
-marten
-Martha
-martial
-martially
-Martian
-Martians
-martin
-martinet
-Martinez
-martingale
-martini
-Martinique
-Martinson
-marts
-Marty
-martyr
-martyrdom
-martyrs
-marvel
-marveled
-marvelled
-marvelling
-marvellous
-marvellously
-marvelous
-marvelously
-marvelousness
-marvels
-Marvin
-Marx
-Marxian
-Marxism
-Marxisms
-marxist
-Mary
-Maryland
-Marylander
-Marylanders
-marzipan
-Mas
-mascara
-mascot
-mascotte
-masculine
-masculinely
-masculinity
-Masefield
-maser
-Maseru
-masfire
-mash
-mashed
-masher
-mashes
-Mashhad
-mashing
-mask
-maskable
-masked
-masker
-masking
-maskings
-masks
-masochism
-masochist
-masochistic
-masochistically
-masochists
-mason
-Masonic
-Masonite
-masonry
-masons
-masque
-masquerade
-masquerader
-masquerades
-masquerading
-mass
-mass-produce
-mass-produced
-Massachusetts
-massacre
-massacred
-massacres
-massage
-massages
-massaging
-massed
-masses
-masseur
-masseuse
-Massey
-massif
-massing
-massive
-massively
-massiveness
-mast
-mastectomy
-masted
-master
-master's
-master-key
-master-piece
-master-stroke
-mastered
-masterful
-masterfully
-mastering
-masterings
-masterly
-mastermind
-masterpiece
-masterpieces
-masters
-mastership
-masterstroke
-masterwork
-mastery
-masthead
-mastic
-masticate
-mastication
-masticator
-mastiff
-mastodon
-mastoid
-masts
-masturbate
-masturbated
-masturbates
-masturbating
-masturbation
-masturbatory
-mat
-matador
-match
-match-box
-match-maker
-matchable
-matchbook
-matchbox
-matched
-matcher
-matchers
-matches
-matching
-matchings
-matchless
-matchlock
-matchmaker
-matchmaking
-matchstick
-matchwood
-mate
-mated
-Mateo
-mater
-material
-materialise
-materialism
-materialist
-materialistic
-materialistically
-materialization
-materialize
-materialized
-materializes
-materializing
-materially
-materials
-materiel
-maternal
-maternally
-maternity
-mates
-math
-mathematic
-Mathematica
-mathematical
-mathematically
-mathematician
-mathematicians
-mathematics
-Mathematik
-Mathewson
-Mathias
-Mathieu
-Matilda
-matinee
-mating
-matings
-matins
-Matisse
-Matisses
-matriarch
-matriarchal
-matriarchy
-matrices
-matricidal
-matricide
-matriculate
-matriculation
-matrimonial
-matrimony
-matrix
-matroid
-matron
-matronly
-mats
-Matson
-Matsumoto
-matte
-matted
-matter
-matter-of-fact
-matter-of-factly
-matter-of-factness
-mattered
-Matterhorn
-matters
-Matthew
-Matthews
-Mattie
-matting
-mattins
-mattock
-mattress
-mattresses
-Mattson
-maturate
-maturation
-mature
-matured
-maturely
-matures
-maturing
-maturities
-maturity
-matutinal
-matzo
-matzot
-matzoth
-Maude
-maudlin
-mauger
-Maui
-maul
-mauler
-maulstick
-maunder
-Maupassant
-Maureen
-Maurice
-Mauricio
-Maurine
-Mauritania
-Mauritanian
-Mauritian
-Mauritius
-mausolea
-mausoleum
-mauve
-maven
-maverick
-mavin
-mavis
-maw
-mawkish
-mawkishly
-mawkishness
-Mawr
-maxi
-maxilla
-maxillae
-maxillary
-maxim
-maxima
-maximal
-maximally
-Maximilian
-maximization
-maximize
-maximized
-maximizer
-maximizers
-maximizes
-maximizing
-maxims
-maximum
-maximums
-Maxine
-Maxtor
-Maxwell
-Maxwellian
-may
-may-pole
-Maya
-Mayan
-Mayans
-maybe
-mayday
-Mayence
-Mayer
-Mayfair
-mayfly
-mayhap
-mayhem
-mayn't
-Maynard
-mayonnaise
-mayor
-mayoral
-mayoralty
-mayoress
-mayors
-maypole
-mayst
-mayweed
-Mazda
-maze
-mazes
-mazourka
-Mazovia
-Mazuria
-mazurka
-mazy
-MB
-MBA
-Mbabane
-MC
-McAdam
-McAdams
-McAllister
-McBride
-McCabe
-McCall
-McCallum
-McCann
-McCarthy
-McCarty
-McCauley
-McClain
-McClellan
-McClure
-McCluskey
-McConnel
-McConnell
-McCormick
-McCoy
-McCracken
-McCullough
-McDaniel
-McDermott
-McDonald
-McDonnell
-McDougall
-McDowell
-McElhaney
-McElroy
-McFadden
-McFarland
-McGee
-McGill
-McGinnis
-McGovern
-McGowan
-McGrath
-McGraw
-McGregor
-McGuire
-McHugh
-McIntosh
-McIntyre
-McKay
-McKee
-McKenna
-McKenzie
-McKeon
-McKesson
-McKinley
-McKinney
-McKnight
-McLanahan
-McLaughlin
-McLean
-McLeod
-McMahon
-McMartin
-McMillan
-McMullen
-McNally
-McNaughton
-McNeil
-McNulty
-McPherson
-me
-mead
-Meade
-meadow
-meadow-brown
-meadow-sweet
-meadowlark
-meadows
-meager
-meagerly
-meagerness
-meagre
-meal
-mealiness
-meals
-mealtime
-mealy
-mealy-mouthed
-mealybug
-mealymouthed
-mean
-mean-born
-meander
-meandered
-meandering
-meanderings
-meanders
-meaner
-meanest
-meanie
-meaning
-meaningful
-meaningfully
-meaningfulness
-meaningless
-meaninglessly
-meaninglessness
-meanings
-meanly
-meanness
-means
-meant
-meantime
-meanwhile
-meany
-measle
-measles
-measly
-measurable
-measurably
-measurand
-measure
-measured
-measureless
-measurement
-measurements
-measurer
-measures
-measuring
-meat
-meat-market
-meat-sausage
-meatball
-meatchopper
-meatiness
-meatless
-meatloaf
-meatpacking
-meats
-meaty
-mechanic
-mechanical
-mechanically
-mechanician
-mechanics
-mechanism
-mechanisms
-mechanistic
-mechanistically
-mechanization
-mechanizations
-mechanize
-mechanized
-mechanizes
-mechanizing
-MED
-medal
-medalist
-medallion
-medallions
-medallist
-medals
-Medan
-meddle
-meddled
-meddler
-meddles
-meddlesome
-meddling
-Medea
-Medellin
-Medfield
-Medford
-media
-mediaeval
-medial
-medially
-median
-medians
-mediate
-mediated
-mediates
-mediating
-mediation
-mediations
-mediator
-medic
-Medicaid
-medical
-medically
-medicament
-medicaments
-Medicare
-medicate
-medicated
-medication
-Medici
-medicinal
-medicinally
-medicine
-medicine-man
-medicines
-Medicis
-medico
-medics
-medieval
-medievalist
-mediocre
-mediocrity
-meditate
-meditated
-meditates
-meditating
-meditation
-meditations
-meditative
-meditatively
-Mediterranean
-Mediterraneanization
-Mediterraneanizations
-Mediterraneanize
-Mediterraneanizes
-medium
-medium-done
-mediums
-medlar
-MEDLARS
-medley
-MEDLINE
-medulla
-medullae
-medullary
-Medusa
-Medusan
-meed
-meek
-meeker
-meekest
-meekly
-meekness
-meerschaum
-meet
-meeting
-meeting-house
-meeting-place
-meeting-point
-meetinghouse
-meetings
-meets
-Meg
-mega
-megabaud
-megabit
-megabits
-megabucks
-megabyte
-megabytes
-megacycle
-megadeath
-megaflops
-megahertz
-megalith
-megalithic
-megalomania
-megalomaniac
-megalopolis
-megaminicomputer
-megaphone
-megaton
-megavolt
-megawatt
-megaword
-megawords
-megohm
-megrim
-Meier
-Meiji
-meiosis
-meiotic
-Meir
-Meister
-Meistersinger
-Mekong
-Mel
-melamine
-Melampus
-melancholia
-melancholic
-melancholy
-Melanesia
-Melanesian
-melange
-Melanie
-melanin
-melanoma
-melanomata
-Melbourne
-Melcher
-meld
-melee
-Melinda
-meliorate
-melioration
-meliorative
-Melisande
-Melissa
-melliferous
-mellifluent
-mellifluous
-mellifluously
-mellifluousness
-Mellon
-mellow
-mellowed
-mellowing
-mellowly
-mellowness
-mellows
-melodic
-melodically
-melodies
-melodious
-melodiously
-melodiousness
-melodrama
-melodramas
-melodramatic
-melodramatically
-melodramatics
-melody
-melon
-melons
-Melpomene
-melt
-meltdown
-melted
-melting
-melting-house
-melting-iron
-melting-pot
-meltingly
-melts
-Melville
-Melvin
-mele
-member
-members
-membership
-memberships
-membrane
-membranous
-memento
-memo
-memoir
-memoirs
-memorabilia
-memorability
-memorable
-memorableness
-memorably
-memoranda
-memorandum
-memorial
-memorialize
-memorially
-memorials
-memories
-memorization
-memorize
-memorized
-memorizer
-memorizes
-memorizing
-memory
-memoryless
-memos
-Memphis
-men
-men-of-war
-menace
-menaced
-menacing
-menacingly
-menage
-menagerie
-menarche
-Mencken
-mend
-mendacious
-mendaciously
-mendacity
-mended
-Mendel
-mendelevium
-Mendelian
-Mendelize
-Mendelizes
-Mendelssohn
-mender
-mendicancy
-mendicant
-mending
-Mendoza
-mends
-Menelaus
-menfolk
-menfolks
-menhaden
-menial
-menially
-menials
-meningeal
-meninges
-meningitis
-meninx
-menisci
-meniscus
-Menlo
-Mennonite
-Mennonites
-Menominee
-menopausal
-menopause
-menorah
-Menorca
-Menotti
-mens
-menservants
-menses
-menshevik
-menstrual
-menstruate
-menstruation
-mensurable
-mensuration
-menswear
-mental
-mentalist
-mentalities
-mentality
-mentally
-menthol
-mentholated
-mention
-mentionable
-mentioned
-mentioner
-mentioners
-mentioning
-mentions
-mentor
-mentors
-menu
-menus
-Menzies
-mens
-meow
-Mephistopheles
-mephitic
-mercantile
-Mercator
-Mercedes
-mercenaries
-mercenariness
-mercenary
-mercer
-mercerize
-mercery
-merchandise
-merchandiser
-merchandising
-merchandize
-merchant
-merchantable
-merchantman
-merchants
-merchantship
-merciful
-mercifully
-merciless
-mercilessly
-mercilessness
-Merck
-mercurial
-mercurially
-mercuric
-mercury
-mercy
-mere
-Meredith
-merely
-merest
-meretricious
-meretriciously
-meretriciousness
-merganser
-merge
-merge-match
-merged
-merger
-mergers
-merges
-merging
-meridian
-meridional
-meringue
-merino
-merit
-merited
-meriting
-meritocracy
-meritorious
-meritoriously
-meritoriousness
-merits
-Meriwether
-Merle
-merlin
-mermaid
-merman
-Merriam
-Merrick
-merriest
-Merrill
-merrily
-Merrimac
-Merrimack
-merriment
-merriness
-Merritt
-merry
-merry-andrew
-merry-go-round
-merry-go-rounds
-merry-making
-Merrymake
-merrymaker
-merrymaking
-Mervin
-mescal
-mescaline
-mesdames
-mesdemoiselles
-meseems
-mesh
-mesh-work
-Meshed
-meshes
-meshuga
-meshugga
-mesmerism
-mesmerize
-mesmerizer
-mesmerizing
-mesne
-Mesolithic
-mesomorph
-meson
-Mesopotamia
-Mesopotamian
-mesosphere
-mesothelioma
-Mesozoic
-mesquit
-mesquite
-mess
-mess-mate
-mess-tin
-message
-messages
-messaging
-messed
-messeigneurs
-messenger
-messengers
-messes
-Messiah
-messiahs
-messier
-messiest
-messieurs
-messily
-messiness
-messing
-messmate
-Messrs.
-messuage
-messy
-mestizo
-met
-meta
-metabolic
-metabolically
-metabolism
-metabolite
-metabolize
-metacarpal
-metacarpi
-metacarpus
-metacircular
-metacircularity
-metadata
-metafile
-metagraphy
-metaimplementation
-metainformation
-metal
-metalanguage
-metalinguistics
-metallic
-metallization
-metallizations
-metallography
-metallurgic
-metallurgical
-metallurgist
-metallurgy
-metals
-metalwork
-metalworker
-metalworking
-metamathematical
-metamorphic
-metamorphism
-metamorphose
-metamorphoses
-metamorphosis
-metaphor
-metaphoric
-metaphorical
-metaphorically
-metaphors
-metaphrase
-metaphysical
-metaphysically
-metaphysics
-metastases
-metastasis
-metastasize
-metastatic
-metasystem
-metatarsal
-metatarsi
-metatarsus
-metatheory
-metatheses
-metathesis
-metavariable
-Metcalf
-mete
-meted
-metempsychoses
-metempsychosis
-meteor
-meteoric
-meteorically
-meteorite
-meteoritic
-meteoroid
-meteorologic
-meteorological
-meteorologist
-meteorology
-meteors
-meter
-meter-kilogram-second
-metering
-meters
-metes
-methadon
-methadone
-methane
-methanol
-methinks
-method
-methodical
-methodically
-methodicalness
-methodics
-Methodism
-methodist
-methodists
-methodological
-methodologically
-methodologies
-methodologists
-methodology
-methods
-methought
-Methuen
-Methuselah
-Methuselahs
-methyl
-meticulous
-meticulously
-meticulousness
-metier
-meting
-metonymy
-metre
-Metrecal
-metric
-metrical
-metrically
-metricate
-metrication
-metricize
-metrics
-metro
-metronome
-metropolis
-metropolitan
-mets
-mettle
-mettlesome
-Metzler
-mew
-mewed
-mewl
-mews
-Mex
-Mexican
-Mexicanize
-Mexicanizes
-Mexicans
-Mexico
-Meyer
-Meyers
-mezzanine
-mezzo
-mezzo-soprano
-mezzotint
-MFA
-mg
-MHz
-MIA
-Miami
-miaow
-miasma
-miasmata
-mica
-mice
-Mich
-Michael
-Michaelmas
-Michaels
-Michel
-Michelangelo
-Michele
-Michelin
-Michelson
-Michigan
-Michigander
-Michiganite
-michurinism
-michurinist
-Mick
-Mickie
-Micky
-MICR
-micra
-micro
-micro-opaque
-microarchitects
-microarchitecture
-microarchitectures
-microbe
-microbial
-microbicidal
-microbicide
-microbiological
-microbiologist
-microbiology
-microbrewery
-microcard
-microchip
-microcircuit
-microcode
-microcoded
-microcodes
-microcoding
-microcomputer
-microcomputers
-microcopy
-microcopying
-microcosm
-microcosmic
-microcycle
-microcycles
-microdocuments
-microdot
-microeconomics
-microelectronic
-microelectronics
-microevaluation
-microfiber
-microfiche
-microfile
-microfilm
-microfilmer
-microfilming
-microfilms
-microfloppy
-microform
-microglossary
-microgramming
-micrographics
-microgroove
-microimage
-microinstruction
-microinstructions
-microjacket
-microjump
-microjumps
-microlevel
-microlight
-micromainframe
-micromanage
-micromanagement
-micromation
-micrometeorite
-micrometer
-micromini
-microminiaturization
-micron
-Micronesia
-Micronesian
-micronized
-microopaque
-microoperations
-microorganism
-microphone
-microphones
-microphoning
-microphotography
-microplanfilm
-microplate
-Microport
-microprinter
-microprocedure
-microprocedures
-microprocessing
-microprocessor
-microprocessors
-microprogram
-microprogrammable
-microprogrammed
-microprogrammer
-microprogramming
-microprograms
-micropublishing
-microroutine
-micros
-microscope
-microscopes
-microscopic
-microscopical
-microscopically
-microscopy
-microsecond
-microseconds
-microsheet
-microsoft
-microstorage
-microstore
-microstructure
-microsurgery
-microsystem
-microsystems
-microtext
-microthesaurus
-MicroVAX
-MicroVAXes
-microwavable
-microwave
-microwaveable
-microwaves
-microword
-microwords
-mid
-mid-ship
-midair
-Midas
-midday
-midden
-middle
-middle-aged
-middle-class
-middle-of-the-road
-middle-of-the-roader
-middle-sized
-middlebrow
-Middlebury
-middleman
-middlemen
-middlemost
-middles
-Middlesex
-Middleton
-Middletown
-middleweight
-middling
-middy
-Mideast
-Mideastern
-midge
-midget
-midi
-midland
-Midlandize
-Midlandizes
-Midlands
-midlife
-midmost
-midnight
-midnights
-midnoon
-midpoint
-midpoints
-midrange
-midrib
-midriff
-midscale
-midsection
-midshipman
-midshipmen
-midships
-midst
-midstream
-midsts
-midsummer
-midterm
-midtown
-midway
-midweek
-Midwest
-Midwestern
-Midwesterner
-Midwesterners
-midwife
-midwifery
-midwinter
-midwives
-midyear
-mien
-miff
-miffed
-miffy
-might
-mightier
-mightiest
-mightily
-mightiness
-mightn't
-mighty
-mignon
-mignonette
-migraine
-migrant
-migrate
-migrated
-migrates
-migrating
-migration
-migrations
-migratory
-migs
-Miguel
-mikado
-mike
-Mikhail
-Mikoyan
-mil
-milady
-milage
-Milan
-Milanese
-milch
-mild
-milder
-mildest
-mildew
-mildly
-mildness
-Mildred
-mile
-mileage
-milepost
-miler
-Miles
-milestone
-milestones
-milfoil
-milieu
-milieux
-milimeter
-militancy
-militant
-militantly
-militarily
-militarism
-militarist
-militaristic
-militarization
-militarize
-military
-militate
-militia
-militiaman
-milk
-milked
-milker
-milkers
-milkiness
-milking
-milklivered
-milkmaid
-milkmaids
-milkman
-milkpan
-milks
-milkshake
-milksop
-milktooth
-milkweed
-milky
-mill
-mill-board
-mill-race
-mill-stone
-mill-wheel
-millage
-Millard
-Millay
-millboard
-milled
-millennia
-millennial
-millennium
-millepede
-miller
-millesimal
-millet
-milliammeter
-milliampere
-milliard
-millibar
-millibyte
-Millie
-milligram
-millijoule
-Millikan
-milliliter
-millilitre
-millimeter
-millimeters
-millimetre
-millimicrosecond
-milliner
-milliner's
-millinery
-milling
-Millington
-million
-millionaire
-millionaires
-millionnaire
-millions
-millionth
-millipede
-millipedes
-millisecond
-milliseconds
-millivolt
-millivoltmeter
-milliwatt
-millpond
-millrace
-mills
-millstone
-millstones
-millstream
-millwright
-Milne
-milquetoast
-Milquetoasts
-milt
-milter
-Milton
-Miltonian
-Miltonic
-Miltonism
-Miltonist
-Miltonize
-Miltonized
-Miltonizes
-Miltonizing
-Milwaukee
-mime
-mimeograph
-mimetic
-Mimi
-mimic
-mimicked
-mimicker
-mimicking
-mimicry
-mimics
-mimosa
-minaret
-minatory
-mince
-minced
-mincemeat
-mincer
-minces
-mincing
-mind
-mind-bending
-mind-blowing
-mind-body
-mind-boggling
-mind-read
-mind-set
-Mindanao
-minded
-mindful
-mindfully
-mindfulness
-minding
-mindless
-mindlessly
-mindlessness
-minds
-mindset
-mine
-mine-sweeper
-mined
-minefield
-miner
-mineral
-mineralized
-mineralogical
-mineralogist
-mineralogy
-minerals
-miners
-Minerva
-mines
-minestrone
-minesweeper
-mingle
-mingled
-mingles
-mingling
-mini
-mini-cassette
-miniate
-miniature
-miniatures
-miniaturist
-miniaturization
-miniaturize
-miniaturized
-miniaturizes
-miniaturizing
-minibike
-minibus
-minicam
-minicomputer
-minicomputers
-minidisk
-minifile
-minifloppy
-minikin
-minim
-minima
-minimal
-minimalism
-minimalist
-minimally
-minimax
-minimization
-minimizations
-minimize
-minimized
-minimizer
-minimizers
-minimizes
-minimizing
-minimum
-mining
-minion
-minis
-miniscule
-miniseries
-miniskirt
-minister
-ministered
-ministerial
-ministering
-ministers
-ministrant
-ministration
-ministries
-ministry
-MINITEL
-minivan
-mink
-minks
-Minn
-Minneapolis
-minnesinger
-Minnesota
-Minnesotan
-Minnie
-minnow
-minnows
-Minoan
-minor
-minor-league
-minoring
-minorities
-minority
-minors
-Minos
-Minotaur
-minoxidil
-Minsk
-Minsky
-minster
-minstrel
-minstrels
-minstrelsy
-mint
-mintage
-minted
-minter
-minting
-mints
-minty
-minuend
-minuet
-Minuit
-minus
-minuscule
-minute
-minute-hand
-minutely
-minutemen
-minuteness
-minuter
-minutes
-minutia
-minutiae
-minx
-Miocene
-Mips
-Mira
-miracle
-miracles
-miraculous
-miraculously
-mirage
-Miranda
-mire
-mired
-mires
-Mirfak
-Miriam
-Miro
-mirror
-mirrored
-mirroring
-mirrors
-mirth
-mirthful
-mirthfully
-mirthfulness
-mirthless
-mirthlessly
-MIRV
-miry
-MIS
-misaddress
-misadventure
-misaligned
-misalignment
-misalliance
-misanthrope
-misanthropic
-misanthropically
-misanthropist
-misanthropy
-misapplication
-misapply
-misapprehend
-misapprehension
-misappropriate
-misappropriation
-misbecoming
-misbegotten
-misbehave
-misbehaving
-misbehavior
-misbehaviour
-misbeliever
-misbranding
-miscalculate
-miscalculation
-miscalculations
-miscall
-miscarriage
-miscarry
-miscast
-miscegenation
-miscellanea
-miscellaneous
-miscellaneously
-miscellaneousness
-miscellany
-mischance
-mischief
-mischievous
-mischievously
-mischievousness
-miscibility
-miscible
-misconceive
-misconceived
-misconception
-misconceptions
-misconduct
-misconstruction
-misconstrue
-misconstrued
-misconstrues
-miscount
-miscreant
-miscue
-misdeal
-misdealt
-misdeed
-misdemeanor
-misdemeanors
-misdemeanour
-misdiagnose
-misdirect
-misdirection
-misdivision
-misdo
-misdoer
-misdoing
-misdoubt
-mise-en-scene
-misease
-misentry
-miser
-miserable
-miserableness
-miserably
-miseries
-miserliness
-miserly
-misers
-misery
-misfeasance
-misfile
-misfire
-misfit
-misfits
-misfortune
-misfortunes
-misgive
-misgiving
-misgivings
-misgovern
-misgovernment
-misguidance
-misguide
-misguided
-misguidedly
-mishandle
-mishap
-mishaps
-mishear
-misheard
-mishmash
-misinform
-misinformation
-misinformed
-misinterpret
-misinterpretation
-misjudge
-misjudged
-misjudgment
-miskeying
-mislabel
-mislaid
-mislay
-mislead
-misleading
-misleadingly
-misleads
-misled
-mismanage
-mismanagement
-mismatch
-mismatched
-mismatches
-mismatching
-misname
-misneed
-misnomer
-misnumber
-misogamist
-misogamy
-misogynist
-misogynistic
-misogynous
-misogyny
-misplace
-misplaced
-misplacement
-misplaces
-misplacing
-misplay
-misprint
-misprision
-misprogram
-mispronounce
-mispronunciation
-misquotation
-misquote
-misread
-misreading
-misreport
-misrepresent
-misrepresentation
-misrepresentations
-misrule
-miss
-missal
-missed
-misses
-misshape
-misshapen
-missile
-missilery
-missiles
-missilry
-missing
-mission
-missionaries
-missionary
-missioner
-missions
-missis
-Mississauga
-Mississippi
-Mississippian
-Mississippians
-missive
-missort
-Missoula
-Missouri
-Missourian
-misspeak
-misspell
-misspelled
-misspelling
-misspellings
-misspells
-misspelt
-misspend
-misspent
-misstate
-misstatement
-misstep
-missus
-Missy
-mist
-mistakable
-mistake
-mistake-free
-mistaken
-mistakenly
-mistakes
-mistaking
-misted
-mister
-misters
-mistily
-mistime
-mistiness
-misting
-mistletoe
-mistook
-mistral
-mistreat
-mistreatment
-mistress
-mistrial
-mistrust
-mistrusted
-mistrustful
-mistrustfully
-mists
-misty
-mistype
-mistyped
-mistypes
-mistyping
-misunderstand
-misunderstander
-misunderstanders
-misunderstanding
-misunderstandings
-misunderstood
-misusage
-misuse
-misused
-misuses
-misusing
-misvalue
-Mitch
-Mitchell
-mite
-miter
-mitigable
-mitigate
-mitigated
-mitigates
-mitigating
-mitigation
-mitigative
-mitney
-mitoses
-mitosis
-mitotic
-mitre
-MITREs
-mitt
-mitten
-mittens
-mix
-mix-up
-mixable
-mixed
-mixed-up
-mixer
-mixers
-mixes
-mixing
-mixture
-mixtures
-mixup
-mixware
-Mizar
-mizzen
-mizzenmast
-mizzle
-Mk
-Mlle
-mm
-mnemonic
-mnemonically
-mnemonics
-MNTR
-moan
-moaned
-moaner
-moans
-moat
-moats
-mob
-Mobil
-mobile
-mobility
-mobilization
-mobilize
-mobilizer
-mobs
-mobster
-moccasin
-moccasins
-mocha
-mock
-mock-up
-mocked
-mocker
-mockery
-mocking
-mocking-bird
-mockingbird
-mockingly
-mocks
-mockup
-MOCR
-mocturnal
-mod
-modal
-modalities
-modality
-modally
-mode
-model
-modeled
-modeler
-modeling
-modelings
-models
-modem
-modems
-moderate
-moderated
-moderately
-moderateness
-moderates
-moderating
-moderation
-moderator
-modern
-modernism
-modernist
-modernistic
-modernity
-modernization
-modernize
-modernized
-modernizer
-modernizing
-modernly
-modernness
-moderns
-modes
-modest
-modestly
-Modesto
-modesty
-modicum
-modifiability
-modifiable
-modification
-modifications
-modified
-modifier
-modifiers
-modifies
-modify
-modifying
-Modigliani
-modish
-modishly
-modishness
-Modula
-Modula-2
-Modula-3
-modulant
-modular
-modularity
-modularization
-modularize
-modularized
-modularizes
-modularizing
-modularly
-modulate
-modulated
-modulates
-modulating
-modulation
-modulations
-modulator
-modulators
-module
-modules
-moduli
-modulo
-modulus
-modus
-Moe
-Moen
-Mogadiscio
-Mogadishu
-Moghul
-mohair
-Mohammed
-Mohammedan
-Mohammedanism
-Mohammedanization
-Mohammedanizations
-Mohammedanize
-Mohammedanizes
-Mohawk
-Mohegan
-Mohican
-Mohr
-moiety
-moil
-Moines
-moire
-Moiseyev
-moist
-moisten
-moistener
-moistly
-moistness
-moisture
-moisturize
-moisturizer
-moje
-molar
-molasses
-mold
-Moldavia
-Moldavian
-moldboard
-molded
-molder
-moldiness
-molding
-Moldova
-molds
-moldy
-mole
-mole-hill
-mole-skin
-molecular
-molecularity
-molecule
-molecules
-molehill
-moles
-moleskin
-molest
-molestation
-molested
-molester
-molesting
-molests
-Moliere
-Moline
-Mollie
-mollification
-mollify
-mollusc
-molluscan
-mollusk
-molluskan
-mollycoddle
-Moloch
-Molochize
-Molochizes
-Molokai
-Molotov
-molt
-molten
-molter
-Moluccas
-molybdenum
-mom
-mom-and-pop
-moment
-momenta
-momentarily
-momentariness
-momentary
-momentous
-momentously
-momentousness
-moments
-momentum
-momma
-mommie
-mommy
-momzer
-Mon
-mon-de-plume
-Mona
-Monaco
-monadic
-monarch
-monarchic
-monarchical
-monarchies
-monarchism
-monarchist
-monarchistic
-monarchs
-monarchy
-Monash
-monasteries
-monastery
-monastic
-monastical
-monastically
-monasticism
-monaural
-Monday
-Mondays
-Mondrian
-Monegasque
-Monet
-monetarily
-monetarism
-monetarist
-monetary
-monetize
-money
-money-bag
-money-box
-money-grubber
-money-grubbing
-money-lender
-money-market
-money-order
-money-value
-moneybag
-moneybags
-moneyed
-moneygrubber
-moneygrubbing
-moneylender
-moneymaker
-moneymaking
-moneys
-Monfort
-monger
-Mongol
-Mongolia
-Mongolian
-Mongolianism
-mongolic
-mongolism
-mongoose
-mongrel
-Monica
-monicker
-monied
-monies
-moniker
-monism
-monist
-monition
-monitor
-monitored
-monitoring
-monitors
-monitory
-monk
-monkey
-monkey-jacket
-monkey-wrench
-monkeyed
-monkeying
-monkeys
-monkeyshine
-monkeyshines
-monkhood
-monkish
-monks
-monkshood
-Monmouth
-mono
-mono-hierarchy
-monoalphabetic
-monobath
-Monoceros
-monochord
-monochromatic
-monochrome
-monocle
-monocled
-monoclonal
-monocotyledon
-monocotyledonous
-monocular
-monodic
-monodist
-monody
-monogamist
-monogamous
-monogamously
-monogamy
-monoglot
-monogram
-monogrammed
-monograms
-monograph
-monographes
-monographs
-monokini
-monolingual
-monolith
-monolithic
-monolog
-monologist
-monologue
-monologuist
-monomania
-monomaniac
-monomaniacal
-monomer
-Monongahela
-mononucleosis
-monophonic
-monophthong
-monoplane
-monopolies
-monopolist
-monopolistic
-monopolization
-monopolize
-monopolized
-monopolizer
-monopolizing
-monopoly
-monoprogrammed
-monoprogramming
-monorail
-monosemy
-monostable
-monosyllabic
-monosyllable
-monotheism
-monotheist
-monotheistic
-monotone
-monotonic
-monotonically
-monotonicity
-monotonous
-monotonously
-monotonousness
-monotony
-monoxide
-Monroe
-Monrovia
-Monsanto
-monseigneur
-monsieur
-monsignori
-monsoon
-monsoonal
-monster
-monsters
-monstrance
-monstrosity
-monstrous
-monstrously
-Mont
-montage
-Montague
-Montaigne
-Montana
-Montanan
-Montclair
-Montenegrin
-Montenegro
-Monterey
-Monterrey
-Montessori
-Monteverdi
-Montevideo
-Montezuma
-Montgomery
-month
-monthly
-months
-Monticello
-Montmartre
-Montpelier
-Montrachet
-Montreal
-Monty
-monument
-monumental
-monumentally
-monuments
-moo
-mooch
-moocher
-mood
-moodily
-moodiness
-moods
-moody
-moon
-moonbeam
-mooncalf
-mooned
-Mooney
-moonfall
-mooning
-moonless
-moonlight
-moonlighter
-moonlighting
-Moonlike
-moonlit
-moonrise
-moons
-moonscape
-moonset
-moonshine
-moonshiner
-moonshot
-moonstone
-moonstruck
-moonwalk
-moony
-moor
-moor-cock
-moor-game
-moor-hen
-moorage
-Moore
-moored
-mooring
-moorings
-Moorish
-moorland
-Moors
-moose
-moot
-mop
-mope
-moped
-moper
-mopey
-mopish
-moppet
-mopping-up
-mops
-mopy
-moraine
-moral
-morale
-moralist
-moralistic
-moralistically
-moralities
-morality
-moralization
-moralize
-moralizer
-morally
-morals
-Moran
-morass
-moratoria
-moratorium
-Moravia
-Moravian
-Moravianized
-Moravianizeds
-moray
-morbid
-morbidity
-morbidly
-morbidness
-mordancy
-mordant
-mordantly
-more
-Morehouse
-morel
-Moreland
-moreover
-mores
-Moresby
-Morgan
-morgue
-Moriarty
-moribund
-mork
-Morley
-Mormon
-Mormonism
-morn
-morning
-mornings
-morningstar
-Moroccan
-morocco
-morocco-lined
-moron
-Moroni
-moronic
-moronically
-morose
-morosely
-moroseness
-morph
-morpheme
-morphemic
-morphemics
-morphia
-morphine
-morphing
-morphism
-morphisms
-morphological
-morphology
-Morrill
-Morris
-Morrison
-Morrissey
-Morristown
-morrow
-morse
-morsel
-morsels
-mortal
-mortality
-mortally
-mortals
-mortar
-mortarboard
-mortared
-mortaring
-mortars
-mortem
-mortgage
-mortgagee
-mortgager
-mortgages
-mortgagor
-mortice
-mortician
-mortification
-mortified
-mortifier
-mortifies
-mortify
-mortifying
-Mortimer
-mortise
-Morton
-mortuary
-MOS
-mosaic
-Mosaical
-mosaics
-Moscone
-Moscow
-Moser
-Moses
-mosey
-Moslem
-Moslemize
-Moslemizes
-Moslems
-mosque
-mosquito
-mosquitoes
-moss
-moss-grown
-mossback
-Mossberg
-mosses
-mossy
-most
-mostly
-mot
-mot-case
-mote
-motel
-motels
-motet
-moth
-moth-eaten
-mothball
-mothballs
-mother
-mother-in-law
-mother-of-pearl
-motherboard
-mothered
-motherer
-motherers
-motherfucker
-motherfucking
-motherhood
-mothering
-motherland
-motherless
-motherliness
-motherly
-mothers
-mothers-in-law
-mothy
-motif
-motifs
-motile
-motility
-motion
-motioned
-motioning
-motionless
-motionlessly
-motionlessness
-motions
-motivate
-motivated
-motivates
-motivating
-motivation
-motivational
-motivations
-motivator
-motive
-motiveless
-motives
-motley
-motocross
-motor
-motor-boat
-motor-car
-motor-coach
-motor-cycle
-motor-drive
-motor-saw
-motorbike
-motorboat
-motorcade
-motorcar
-motorcars
-motorcycle
-motorcycles
-motorcyclist
-motored
-motoring
-motorist
-motorists
-motorization
-motorize
-motorized
-motorizes
-motorizing
-motorman
-motormouth
-Motorola
-motorway
-Mott
-mottle
-mottled
-motto
-mottoes
-mouch
-moue
-moujik
-mould
-moulder
-moulding
-mouldy
-moult
-Moulton
-mound
-mounded
-mounds
-mount
-mountable
-mountain
-mountaineer
-mountaineering
-mountaineers
-mountainous
-mountainously
-mountains
-mountainside
-mountaintop
-mountebank
-mounted
-mounter
-Mountie
-mounting
-mountings
-mounts
-mourn
-mourned
-mourner
-mourners
-mournful
-mournfully
-mournfulness
-mourning
-mourns
-mouse
-mouse-ear
-mouser
-mouses
-mousetrap
-mousey
-mousiness
-mousse
-moustache
-moustaches
-mousy
-mouth
-mouth-organ
-mouth-watering
-Mouthe
-mouthed
-mouther
-mouthes
-mouthful
-mouthiness
-mouthing
-mouthpiece
-mouths
-mouthwash
-mouthwatering
-mouthy
-movable
-move
-moveable
-moved
-movement
-movements
-mover
-movers
-moves
-movie
-movie-camera
-moviegoer
-movies
-moving
-movingly
-movings
-mow
-mowed
-mower
-mown
-mows
-moxie
-Moyer
-Mozambican
-Mozambique
-Mozart
-mozzarella
-MP
-Mr.
-MRI
-Mrs
-Mrs.
-MS
-MS-DOS
-MSCAN
-MSG
-MSI
-MST
-MSW
-mu
-much
-mucilage
-mucilaginous
-muck
-muckamuck
-mucker
-mucking
-muckrake
-muckraker
-muckraking
-mucky
-mucous
-mucus
-mud
-mud-guard
-mud-head
-Mudd
-muddied
-muddily
-muddiness
-muddle
-muddle-headed
-muddled
-muddlehead
-muddleheaded
-muddler
-muddler-through
-muddlers
-muddles
-muddling
-muddy
-mudflat
-mudguard
-mudguards
-mudroom
-mudslide
-mudslinger
-mudslinging
-Mueller
-muezzin
-muff
-muffin
-muffins
-muffle
-muffled
-muffler
-muffles
-muffling
-muffs
-mufti
-mug
-mugger
-mugginess
-mugging
-muggy
-mugs
-mugshot
-mugwump
-Muhammad
-Muhammadan
-Muhammadanism
-Muir
-mujahedin
-mujik
-Mukden
-mukluk
-mulatto
-mulberries
-mulberry
-mulch
-mulct
-mule
-mules
-muleskinner
-muleteer
-mulish
-mulishly
-mulishness
-mull
-mullah
-mullein
-Mullen
-mullet
-mulligan
-mulligatawny
-mulligrubs
-mullion
-mullioned
-Multan
-multi
-multi-access
-multi-engined
-multi-farious
-multi-player
-multibit
-Multibus
-multibyte
-multicalling
-multicast
-multicasting
-multicasts
-multicellular
-multichannel
-multicolored
-multicomputer
-multiconnection
-multicultural
-multiculturalism
-multidigit
-multidimensional
-multidisciplinary
-multifaceted
-multifamily
-multifarious
-multifariously
-multifariousness
-multifid
-multifile
-multifold
-multiform
-multijobbing
-multilateral
-multilaterally
-multilayer
-multilayered
-multilevel
-multilicence
-multilingual
-multilingualism
-multilink
-multimedia
-multimillionaire
-multinational
-multinomial
-multipede
-multiple
-multiple-choice
-multiple-journey
-multiples
-multiplex
-multiplex-precision
-multiplexed
-multiplexer
-multiplexers
-multiplexes
-multiplexing
-multiplexor
-multiplexors
-multiplicand
-multiplicands
-multiplication
-multiplications
-multiplicative
-multiplicatives
-multiplicity
-multiplied
-multiplier
-multipliers
-multiplies
-multiply
-multiplying
-multiport
-multiprocess
-multiprocessing
-multiprocessor
-multiprocessors
-multiprogram
-multiprogrammed
-multiprogramming
-multipunching
-multipurpose
-multiqueue
-multiracial
-multisafe
-multistage
-multistory
-multistructure
-multisystem
-multitasking
-multitrack
-multitude
-multitudes
-multitudinous
-multiuser
-multivalued
-multivariate
-multivitamin
-multivolume
-multiword
-mum
-mumble
-mumble-the-peg
-mumbled
-mumbler
-mumblers
-mumbles
-mumbletypeg
-mumbling
-mumblings
-mumbo-jumbo
-Mumford
-mummer
-mummery
-mummies
-mummification
-mummify
-mummy
-mumps
-munch
-munched
-munchies
-munching
-Muncie
-mundane
-mundanely
-Mundt
-mung
-Munich
-municipal
-municipalities
-municipality
-municipally
-munificence
-munificent
-munificently
-munition
-munitions
-Munroe
-Munsey
-Munson
-Munster
-Muong
-mural
-muralist
-Murcia
-murder
-murdered
-murderer
-murderers
-murderess
-murdering
-murderous
-murderously
-murders
-mure
-Muriel
-murk
-murkily
-murkiness
-murky
-Murmansk
-murmur
-murmured
-murmurer
-murmuring
-murmurous
-murmurs
-Murphy
-murrain
-Murray
-Murrow
-muscatel
-muscle
-muscle-bound
-musclebound
-muscled
-muscles
-muscling
-Muscovite
-Muscovy
-muscular
-muscularity
-muscularly
-musculature
-muse
-mused
-museography
-museology
-muses
-musette
-museum
-museums
-mush
-Mush!
-mushiness
-mushroom
-mushroomed
-mushrooming
-mushrooms
-mushy
-music
-music-hall
-music-master
-musical
-musicale
-musicality
-musically
-musicals
-musician
-musicianly
-musicians
-musicianship
-musicological
-musicologist
-musicology
-musing
-musingly
-musings
-musk
-muskeg
-Muskegon
-muskellunge
-musket
-musketeer
-musketry
-muskets
-muskie
-muskiness
-muskmelon
-muskox
-muskoxen
-muskrat
-muskrats
-musks
-musky
-Muslim
-Muslims
-muslin
-muss
-mussel
-mussels
-Mussolini
-Mussolinis
-Mussorgsky
-Mussulman
-mussy
-must
-mustache
-mustached
-mustaches
-mustachio
-mustang
-mustard
-muster
-mustily
-mustiness
-mustn't
-mustnt
-musts
-musty
-mutability
-mutable
-mutableness
-mutably
-mutagen
-mutandis
-mutant
-mutate
-mutated
-mutates
-mutating
-mutation
-mutational
-mutations
-mutatis
-mutative
-mute
-muted
-mutely
-muteness
-mutilate
-mutilated
-mutilates
-mutilating
-mutilation
-mutilator
-mutineer
-mutinies
-mutinous
-mutinously
-mutiny
-mutt
-mutter
-muttered
-mutterer
-mutterers
-muttering
-mutters
-mutton
-mutton-chop
-muttonchops
-muttonhead
-mutual
-mutuality
-mutually
-muumuu
-MUX
-Muzak
-muzhik
-muzjik
-Muzo
-muzzle
-muzzles
-muzzy
-MVP
-MW
-my
-Myanmar
-Mycenae
-Mycenaean
-mycologist
-mycology
-myelitis
-Myers
-Mylar
-myna
-mynah
-Mynheer
-myope
-myopia
-myopic
-myopically
-Myra
-myriad
-myrmidon
-Myron
-myrrh
-myrtle
-myself
-Mysore
-mysteries
-mysterious
-mysteriously
-mysteriousness
-mystery
-mystic
-mystical
-mystically
-mysticism
-mystics
-mystification
-mystify
-mystifying
-mystique
-myth
-mythic
-mythical
-mythological
-mythologies
-mythologist
-mythologize
-mythology
-N'Djamena
-N-protocol
-N/A
-NAACP
-nab
-Nabisco
-nabla
-nablas
-nabob
-Nabokov
-nacelle
-nacho
-nachos
-nacre
-nacreous
-Nadia
-Nadine
-nadir
-nae
-nag
-Nagasaki
-nagged
-nagger
-nagging
-Nagoya
-Nagpur
-nags
-Nagy
-Nahuatl
-naiad
-naiades
-nail
-nail-biter
-nailbrush
-nailed
-nailer
-nailing
-nails
-Nair
-Nairobi
-naive
-naively
-naiveness
-naivete
-naivety
-Nakamura
-Nakayama
-naked
-naked-micro
-nakedly
-nakedness
-Nakoma
-namby-pamby
-name
-name-calling
-name-day
-name-drop
-name-dropper
-name-dropping
-name-plate
-nameable
-named
-namedrop
-namedropping
-nameless
-namelessly
-namely
-nameplate
-namer
-namers
-names
-namesake
-namesakes
-Namibia
-Namibian
-naming
-Nan
-nance
-Nanchang
-Nancy
-Nanette
-Nanjing
-Nanking
-nanny
-nanny-goat
-nanocomputer
-nanoinstruction
-nanoinstructions
-Nanook
-nanoprocessor
-nanoprogram
-nanoprogramming
-nanosecond
-nanoseconds
-nanostore
-nanostores
-Nantucket
-Naomi
-nap
-napalm
-nape
-naphtha
-naphthalene
-napkin
-napkins
-Naples
-napless
-Napoleon
-Napoleonic
-Napoleonize
-Napoleonizes
-napoo
-napped
-napper
-nappies
-nappy
-naps
-Narbonne
-narc
-narcissi
-narcissism
-narcissist
-narcissistic
-narcissus
-narcoses
-narcosis
-narcotic
-narcotically
-narcotics
-narcotization
-narcotize
-narghile
-nargile
-nark
-narky
-Narragansett
-narrate
-narration
-narrative
-narratives
-narrator
-narrow
-narrow-gauge
-narrow-minded
-narrow-mindedly
-narrow-mindedness
-narrow-sighted
-narrowed
-narrower
-narrowest
-narrowing
-narrowly
-narrowness
-narrows
-narwhal
-nary
-NASA
-nasal
-nasality
-nasalization
-nasalize
-nasally
-NASAs
-nascence
-nascent
-Nash
-Nashua
-Nashville
-Nassau
-nastier
-nastiest
-nastily
-nastiness
-nasturtium
-nasty
-Nat
-natal
-Natalie
-natch
-Natchez
-Nate
-Nathan
-Nathaniel
-nation
-national
-nationalism
-nationalist
-nationalistic
-nationalistically
-nationalists
-nationalities
-nationality
-nationalization
-nationalize
-nationalized
-nationalizes
-nationalizing
-nationally
-nationals
-nationhood
-nations
-nationwide
-native
-native-born
-natively
-natives
-nativity
-NATO
-NATOs
-natter
-nattily
-nattiness
-natty
-natural
-naturalism
-naturalist
-naturalistic
-naturalization
-naturalize
-naturally
-naturalness
-naturals
-nature
-natured
-natures
-Naugahyde
-naught
-naughtier
-naughtily
-naughtiness
-naughty
-Naur
-Nauru
-nausea
-nauseate
-nauseated
-nauseating
-nauseatingly
-nauseous
-nauseousness
-nauseum
-nautical
-nautically
-nautili
-nautilus
-Navaho
-Navajo
-naval
-navally
-nave
-navel
-navies
-navigability
-navigable
-navigate
-navigated
-navigates
-navigating
-navigation
-navigational
-navigator
-navigators
-Navona
-navvy
-navy
-nay
-naysayer
-Nazarene
-Nazareth
-nazi
-Naziism
-Nazis
-nazism
-NBA
-NBC
-NBS
-NC
-NC-17
-NCAA
-NCO
-Ndjamena
-NE
-ne'er
-ne'er-do-well
-Neal
-Neanderthal
-neap
-Neapolitan
-near
-nearby
-neared
-nearer
-nearest
-nearing
-nearly
-nearness
-nearness-sighted
-nears
-nearsighted
-nearsightedly
-nearsightedness
-neat
-neaten
-neater
-neatest
-neath
-neatly
-neatness
-neb
-Nebr
-Nebraska
-Nebraskan
-Nebuchadnezzar
-nebula
-nebulae
-nebular
-nebulous
-nebulously
-nebulousness
-necessaries
-necessarily
-necessary
-necessitate
-necessitated
-necessitates
-necessitating
-necessitation
-necessities
-necessitous
-necessity
-neck
-neck-bearing
-neck-cloth
-necked
-neckerchief
-necking
-necklace
-necklaces
-necklet
-neckline
-necks
-necktie
-neckties
-necrology
-necromancer
-necromancy
-necropolis
-necroses
-necrosis
-necrotic
-nectar
-nectarine
-Ned
-nee
-need
-needed
-needful
-needfully
-Needham
-neediness
-needing
-needle
-needle-bearing
-needle-book
-needle-case
-needle-lace
-needle-point
-needled
-needleman
-needlepoint
-needler
-needlers
-needles
-needless
-needlessly
-needlessness
-needlewoman
-needlework
-needling
-needn't
-needs
-needy
-nefarious
-nefariously
-nefariousness
-negate
-negated
-negates
-negating
-negation
-negations
-negative
-negatively
-negativeness
-negatives
-negativism
-negativity
-negator
-negators
-negentropy
-neglect
-neglected
-neglectful
-neglectfully
-neglectfulness
-neglecting
-neglects
-neglige
-negligee
-negligence
-negligent
-negligently
-negligible
-negligibly
-negotiability
-negotiable
-negotiate
-negotiated
-negotiates
-negotiating
-negotiation
-negotiations
-negotiator
-negress
-negritude
-Negro
-Negroes
-Negroid
-Negroization
-Negroizations
-Negroize
-Negroizes
-Nehru
-neigh
-neighbor
-neighborhood
-neighborhoods
-neighboring
-neighborliness
-neighborly
-neighbors
-neighbour
-neighbourhood
-neighbouring
-neighbourly
-Neil
-neither
-Nell
-Nellie
-Nelsen
-nematode
-nemeses
-Nemesis
-Neo-Classicism
-neoclassic
-neoclassical
-neoclassicism
-neocolonialism
-neodymium
-neolithic
-neologism
-neon
-neonatal
-neonate
-neophyte
-neophytes
-neoplasm
-neoplastic
-neoprene
-Nepal
-Nepalese
-Nepali
-nepenthe
-nephew
-nephews
-nephrite
-nephritic
-nephritis
-nepotism
-nepotist
-Neptune
-neptunium
-nerd
-nerdy
-Nero
-nerve
-nerve-centre
-nerve-racking
-nerve-wracking
-nerveless
-nervelessly
-nervelessness
-nerves
-nerviness
-nervosity
-nervous
-nervously
-nervousness
-nervy
-nescient
-ness
-nest
-nest-egg
-nested
-nester
-nesting
-nestle
-nestled
-nestles
-nestling
-Nestor
-nests
-net
-nether
-Netherlander
-Netherlands
-nethermost
-netherworld
-netiquette
-nets
-netserver
-nett
-netted
-netting
-nettle
-nettled
-nettlesome
-netware
-network
-networked
-networking
-networks
-Neumann
-neural
-neuralgia
-neuralgic
-neurally
-neurasthenia
-neurasthenic
-neuritic
-neuritis
-neurological
-neurologically
-neurologist
-neurologists
-neurology
-neuron
-neuronal
-neurons
-neuroses
-neurosis
-neurosurgeon
-neurosurgery
-neurotic
-neurotically
-neurotransmitter
-neuter
-neutral
-neutralism
-neutralist
-neutralities
-neutrality
-neutralization
-neutralize
-neutralized
-neutralizer
-neutralizing
-neutrally
-neutrino
-neutrinos
-neutron
-Nev
-Neva
-Nevada
-Nevadan
-Nevadian
-never
-nevermore
-nevertheless
-nevi
-Nevins
-Nevis
-nevus
-new
-new-fashioned
-Newark
-newbie
-Newbold
-newborn
-Newbury
-Newburyport
-Newcastle
-newcomer
-newcomers
-newel
-Newell
-newer
-newest
-newfangled
-Newfoundland
-Newfoundlander
-newly
-newlywed
-newlyweds
-Newman
-Newmanize
-Newmanizes
-newness
-Newport
-news
-news-bulletin
-news-reel
-news-room
-news-sheet
-newsboy
-newscast
-newscaster
-newsdealer
-newsgirl
-newsgroup
-newsletter
-newsletters
-newsman
-newsmen
-newsmonger
-newspaper
-newspaperman
-newspapers
-newspaperwoman
-newsprint
-newsreader
-newsreel
-newsroom
-newsstand
-newsvendor
-Newsweek
-newswoman
-newswomen
-newsworthiness
-newsworthy
-newsy
-newt
-newton
-Newtonian
-next
-next-door
-nexus
-NF
-NFAIS
-NFC
-NFL
-Nguyen
-NH
-NHL
-Ni
-niacin
-Niagara
-Niamey
-nib
-nibble
-nibbled
-nibbler
-nibblers
-nibbles
-nibbling
-Nibelung
-nibs
-Nicaragua
-Nicaraguan
-Niccolo
-nice
-nice-looking
-nicely
-niceness
-nicer
-nicest
-niceties
-nicety
-niche
-Nicholas
-Nicholls
-Nichols
-Nicholson
-nick
-nicked
-nickel
-nickel-and-dime
-nickelodeon
-nickels
-nicker
-nicking
-Nicklaus
-nicknack
-nickname
-nicknamed
-nicknames
-nicks
-nicky-ticky
-Nicodemus
-Nicosia
-nicotian
-nicotin
-nicotine
-nictate
-nictitate
-nide
-niece
-nieces
-Nielsen
-Nielson
-Nietzsche
-niffy
-nifty
-Niger
-Nigeria
-Nigerian
-Nigerien
-niggard
-niggardliness
-niggardly
-nigger
-niggle
-niggler
-niggling
-nigh
-night
-night-bird
-night-cap
-night-dress
-night-gown
-night-school
-night-shift
-night-shirt
-night-stool
-night-suit
-night-tide
-night-time
-night-walker
-night-watch
-night-wear
-night-work
-nightcap
-nightclothes
-nightclub
-nightdress
-nightfall
-nightgown
-nighthawk
-nightie
-nightingale
-nightingales
-nightlife
-nightlong
-nightly
-nightmare
-nightmares
-nightmarish
-nights
-nightshade
-nightshirt
-nightspot
-nightstand
-nightstick
-nighttime
-nightwear
-nighty
-NIH
-nihilism
-nihilist
-nihilistic
-Nijinsky
-Nikko
-Nikolai
-Nikolayev
-nil
-niladic
-Nile
-Nilsen
-Nilsson
-nim
-nimbi
-nimble
-nimbleness
-nimbler
-nimbly
-nimbus
-NIMBY
-Nina
-nincompoop
-nine
-nine-to-five
-ninefold
-ninepin
-ninepins
-nines
-nineteen
-nineteens
-nineteenth
-nineties
-ninetieth
-ninety
-Nineveh
-ninja
-ninny
-ninth
-Niobe
-niobium
-nip
-nipper
-nippers
-nippiness
-nipple
-nipples
-Nippon
-Nipponese
-Nipponize
-Nipponizes
-nippy
-nips
-nirvana
-nit
-nit-picker
-nit-picking
-nit-wit
-niter
-nitpick
-nitpicker
-nitpicking
-nitrate
-nitration
-nitre
-nitric
-nitride
-nitrification
-nitrite
-nitrocellulose
-nitrogen
-nitrogenous
-nitroglycerin
-nitroglycerine
-nitrous
-nitty
-nitty-gritty
-nitwit
-nix
-Nixon
-nizy
-NJ
-NLRB
-NM
-NMA
-no
-no-account
-no-brainer
-no-fault
-no-frills
-no-go
-no-good
-no-goodnik
-no-jump
-no-load
-no-man's-land
-no-no
-no-nonsense
-no-one
-no-show
-no-trump
-no-voltage
-no-win
-Noah
-nob
-nobble
-Nobel
-Nobelist
-nobelium
-nobility
-noble
-nobleman
-nobleness
-nobler
-nobles
-noblest
-noblewoman
-nobly
-nobody
-nock
-noctambulation
-nocturnal
-nocturnally
-nocturne
-nod
-nodal
-nodded
-nodding
-noddle
-noddy
-node
-nodes
-nods
-nodular
-nodule
-noes
-Noetherian
-nog
-noggin
-nogging
-nohow
-noise
-noise-free
-noiseless
-noiselessly
-noiselessness
-noisemaker
-noises
-noisier
-noisily
-noisiness
-noisome
-noisy
-Nolan
-Noll
-nomad
-nomadic
-Nome
-nomenclature
-nominal
-nominally
-nominate
-nominated
-nominating
-nomination
-nominative
-nominator
-nominee
-non
-non-acceptance
-non-alphabetic
-non-availability
-non-Catholic
-non-Communist
-non-Congressional
-non-conjunction
-non-corrosive
-non-descriptor
-non-disjunction
-non-effective
-non-ego
-non-empty
-non-English
-non-equivalence
-non-event
-non-feasance
-non-fiction
-non-flickering
-non-format
-non-glare
-non-intelligent
-non-interference
-non-intervention
-non-language
-non-periodical
-non-profit
-non-renewable
-non-reversible
-non-smoker
-non-smudge
-non-soldier
-non-stop
-non-usage
-non-user
-nonabrasive
-nonabsorbent
-nonacademic
-nonacceptance
-nonacid
-nonactive
-nonadaptive
-nonaddictive
-nonadherent
-nonadhesive
-nonadjacent
-nonadjustable
-nonadministrative
-nonage
-nonagenarian
-nonagery
-nonaggression
-nonalcoholic
-nonaligned
-nonalignment
-nonallergic
-nonappearance
-nonary
-nonassignable
-nonathletic
-nonattendance
-nonautomotive
-nonavailability
-nonbasic
-nonbeliever
-nonbelligerent
-nonbiodegradable
-nonblocking
-nonbreakable
-nonburnable
-noncaloric
-noncancerous
-nonce
-nonchalance
-nonchalant
-nonchalantly
-nonchargeable
-nonclerical
-nonclinical
-noncollectable
-noncom
-noncombatant
-noncombustible
-noncommercial
-noncommittal
-noncommittally
-noncommunicable
-noncommunication
-noncommunist
-noncompeting
-noncompetitive
-noncompliance
-noncomplying
-noncomprehending
-nonconducting
-nonconductor
-nonconforming
-nonconformist
-nonconformity
-noncongressional
-nonconsecutive
-nonconsecutively
-nonconservative
-nonconstructive
-noncontagious
-noncontinuous
-noncontributing
-noncontributory
-noncontroversial
-nonconvertible
-noncooperation
-noncorroding
-noncorrosive
-noncredit
-noncriminal
-noncritical
-noncrystalline
-noncumulative
-noncustodial
-noncyclic
-nondairy
-nondecreasing
-nondeductible
-nondelivery
-nondemocratic
-nondenominational
-nondenumerability
-nondepartmental
-nondepreciating
-nondescript
-nondescriptly
-nondestructive
-nondestructively
-nondetachable
-nondeterminacy
-nondeterminate
-nondeterminately
-nondeterminism
-nondeterministic
-nondeterministically
-nondisciplinary
-nondiscrimination
-nondiscriminatory
-nondramatic
-nondrinker
-nondrying
-none
-noneducational
-noneffective
-nonelastic
-nonelectric
-nonelectrical
-nonempty
-nonenforceable
-nonentity
-nonequivalent
-nones
-nonessential
-nonesuch
-nonetheless
-nonevent
-nonexchangeable
-nonexclusive
-nonexempt
-nonexistence
-nonexistent
-nonexplosive
-nonextensible
-nonfactual
-nonfading
-nonfat
-nonfatal
-nonfattening
-nonferrous
-nonfiction
-nonfictional
-nonflammable
-nonflowering
-nonfluctuating
-nonflying
-nonfood
-nonfreezing
-nonfunctional
-nongovernmental
-nongranular
-nonhazardous
-nonhereditary
-nonhuman
-nonidempotent
-nonidentical
-noninclusive
-nonindependent
-nonindustrial
-noninfectious
-noninflammatory
-noninflationary
-noninflected
-nonintellectual
-noninteracting
-noninterchangeable
-noninterference
-noninterlaced
-noninterleaved
-nonintervention
-nonintoxicating
-nonintrusive
-nonintuitive
-noninvasive
-noninverting
-nonirritating
-nonjudgmental
-nonjudicial
-nonlegal
-nonlethal
-nonlinear
-nonlinearities
-nonlinearity
-nonlinearly
-nonliterary
-nonliving
-nonlocal
-nonmagnetic
-nonmalignant
-nonmaskable
-nonmathematical
-nonmember
-nonmetal
-nonmetallic
-nonmigratory
-nonmilitant
-nonmilitary
-nonnarcotic
-nonnative
-nonnegative
-nonnegligible
-nonnegotiable
-nonnuclear
-nonnumerical
-nonny
-nonobjective
-nonobligatory
-nonobservance
-nonobservant
-nonoccupational
-nonoccurence
-nonofficial
-nonogenarian
-nonoperational
-nonoperative
-nonorthogonal
-nonorthogonality
-nonparallel
-nonpareil
-nonparticipant
-nonparticipating
-nonpartisan
-nonpaying
-nonpayment
-nonperformance
-nonperforming
-nonperishable
-nonpersistent
-nonperson
-nonphysical
-nonphysically
-nonplus
-nonplussed
-nonpoisonous
-nonpolitical
-nonpolluting
-nonporous
-nonportable
-nonpracticing
-nonprejudicial
-nonprescription
-nonprocedural
-nonprocedurally
-nonproductive
-nonprofessional
-nonprofit
-nonprofitable
-nonprogrammable
-nonprogrammer
-nonproliferation
-nonpublic
-nonpunishable
-nonracial
-nonradioactive
-nonrandom
-nonreactive
-nonreciprocal
-nonreciprocating
-nonrecognition
-nonrecoverable
-nonrecurring
-nonrecursive
-nonredeemable
-nonrefillable
-nonrefundable
-nonreligious
-nonrenewable
-nonrepresentational
-nonresident
-nonresidential
-nonresidual
-nonresistance
-nonresistant
-nonrestrictive
-nonreturnable
-nonrhythmic
-nonrigid
-nonsalaried
-nonscheduled
-nonscientific
-nonscoring
-nonseasonal
-nonsectarian
-nonsecular
-nonsegmented
-nonsegregated
-nonsense
-nonsensical
-nonsensically
-nonsensitive
-nonsequential
-nonsexist
-nonsexual
-nonskid
-nonslip
-nonsmoker
-nonsmoking
-nonsocial
-nonspeaking
-nonspecialist
-nonspecialists
-nonspecializing
-nonspecific
-nonspiritual
-nonstaining
-nonstandard
-nonstarter
-nonstick
-nonstop
-nonstrategic
-nonstriking
-nonstructural
-nonsuccessive
-nonsuit
-nonsupport
-nonsupporting
-nonsurgical
-nonsustaining
-nonsympathizer
-nonsynchronous
-nontarnishable
-nontaxable
-nontechnical
-nontenured
-nonterminal
-nonterminals
-nonterminating
-nontermination
-nontheatrical
-nonthermal
-nonthinking
-nonthreatening
-nontoxic
-nontraditional
-nontransferable
-nontransparent
-nontrivial
-nontropical
-nonuniform
-nonuniformity
-nonunion
-nonuser
-nonvenomous
-nonverbal
-nonviable
-nonviolence
-nonviolent
-nonvirulent
-nonvocal
-nonvocational
-nonvolatile
-nonvoter
-nonvoting
-nonwhite
-nonworking
-nonyielding
-nonzero
-noodle
-Noodles-Spaghetti
-nook
-nooks
-noon
-noonday
-noons
-noontide
-noontime
-noose
-nope
-nor
-Nora
-Nordhoff
-Nordic
-Nordstrom
-Noreen
-Norfolk
-norm
-Norma
-normal
-normalcy
-normality
-normalization
-normalize
-normalized
-normalizes
-normalizing
-normally
-normals
-Norman
-Normandy
-Normanization
-Normanizations
-Normanize
-Normanizer
-Normanizers
-Normanizes
-normative
-norms
-Norris
-Norristown
-Norse
-Norseman
-north
-north-eastern
-North-Pole
-North-Star
-north-west
-Northampton
-northbound
-northeast
-northeaster
-northeasterly
-northeastern
-northeastward
-northeastwards
-norther
-northerly
-northern
-northerner
-northerners
-northernly
-northernmost
-Northfield
-Northrop
-Northrup
-Northumberland
-northward
-northwards
-northwest
-northwester
-northwesterly
-northwestern
-northwestward
-northwestwards
-Norton
-Norw
-Norwalk
-Norway
-Norwegian
-Norwich
-nose
-nose-bag
-nose-dive
-nose-gay
-nose-piece
-nosebleed
-nosecone
-nosed
-nosedive
-nosedove
-nosegay
-noses
-nosey
-nosh
-nosily
-nosiness
-nosing
-nostalgia
-nostalgic
-nostalgically
-Nostradamus
-Nostrand
-nostril
-nostrils
-nostrum
-nosy
-not
-not-for-profit
-notability
-notable
-notables
-notably
-notarial
-notarization
-notarize
-notarized
-notarizes
-notarizing
-notary
-notate
-notation
-notational
-notations
-notch
-notched
-notches
-notching
-note
-note-book
-note-paper
-notebook
-notebooks
-noted
-notepad
-notepaper
-notes
-noteworthiness
-noteworthy
-nothing
-nothingness
-nothings
-notice
-notice-board
-noticeable
-noticeably
-noticed
-notices
-noticing
-notification
-notifications
-notified
-notifier
-notifiers
-notifies
-notify
-notifying
-noting
-notion
-notional
-notions
-notoriety
-notorious
-notoriously
-Notre
-Nottingham
-notwithstanding
-Nouakchott
-nougat
-nought
-noun
-nouns
-nourish
-nourished
-nourishes
-nourishing
-nourishment
-nous
-Nov
-nova
-novae
-Novak
-novel
-novelette
-novelist
-novelistic
-novelists
-novelization
-novelize
-novella
-novels
-novelties
-novelty
-November
-Novembers
-novena
-novice
-novices
-novitiate
-Novocain
-Novocaine
-Novokuznetsk
-Novosibirsk
-now
-nowadays
-noway
-noways
-nowhere
-Nowheresville
-nowise
-noxious
-Noyes
-nozzle
-NT
-nth
-NTO
-nu
-nuance
-nuanced
-nuances
-nub
-nubbin
-nubby
-Nubia
-Nubian
-nubile
-nuclear
-nucleate
-nucleation
-nuclei
-nucleic
-nucleoli
-nucleolus
-nucleon
-nucleonics
-nucleotide
-nucleotides
-nucleus
-nuclide
-nude
-nudge
-nudged
-nudism
-nudist
-nudity
-nugatory
-Nugent
-nugget
-nuisance
-nuisances
-nuke
-Nukualofa
-null
-nullary
-nulled
-nullification
-nullified
-nullifiers
-nullifies
-nullify
-nullifying
-nullity
-nulls
-NUM
-numb
-numb-fish
-numbed
-number
-number-crunching
-numbered
-numberer
-numbering
-numberless
-numbers
-numbing
-numbly
-numbness
-numbs
-numbskull
-numerable
-numeracy
-numeral
-numerals
-numerate
-numeration
-numerator
-numerators
-numeric
-numerical
-numerically
-numerics
-numerologist
-numerology
-numerous
-numerously
-numinous
-numismatic
-numismatics
-numismatist
-numskull
-nun
-nuncio
-nunnery
-nuns
-nuptial
-nuptials
-Nuremberg
-Nureyev
-nurse
-nurse-child
-nurse-maid
-nursed
-nurseling
-nursemaid
-nurser
-nurseries
-nursery
-nurseryman
-nurses
-nursing
-nursling
-nurture
-nurtured
-nurturer
-nurtures
-nurturing
-nut
-nut-crackers
-nut-gall
-nut-shell
-nutate
-nutation
-nutcracker
-nuthatch
-nutmeat
-nutmeg
-nutpick
-nutria
-nutrient
-nutriment
-nutrition
-nutritional
-nutritionally
-nutritionist
-nutritious
-nutritiously
-nutritiousness
-nutritive
-nuts
-nutshell
-nutshells
-nutter
-nuttiness
-nutty
-nuzzle
-nuzzler
-NV
-NW
-NWT
-NY
-NYC
-nylon
-nylons
-nymph
-nymphet
-nymphomania
-nymphomaniac
-nymphs
-Nyquist
-NYSE
-NZ
-ne
-o
-o'
-O'Brien
-O'Casey
-o'clock
-O'Connell
-O'Connor
-O'Dell
-O'Donnell
-O'Dwyer
-o'er
-O'Hare
-O'Keeffe
-O'Leary
-O'Neill
-O'Shea
-O'Sullivan
-oaf
-oafish
-oafishly
-oafishness
-Oahu
-oak
-oak-apple
-oak-ball
-oak-cone
-oak-tree
-oaken
-Oakland
-oaklet
-Oakley
-oakling
-Oakmont
-oaks
-oakum
-oar
-oarlock
-oars
-oarsman
-oarswoman
-OAS
-oases
-oasis
-oast
-oat
-oat-flakes
-oatcake
-oaten
-oath
-oaths
-oatmeal
-oats
-obbligati
-obbligato
-obduracy
-obdurate
-obdurately
-obdurateness
-obedience
-obediences
-obedient
-obediently
-obeisance
-obeisant
-obelisk
-Oberlin
-Oberon
-obese
-obesity
-obey
-obeyed
-obeying
-obeys
-obfuscate
-obfuscation
-obfuscatory
-obi
-obit
-obituary
-object
-object-glass
-object-lens
-objected
-objectify
-objecting
-objection
-objectionable
-objectionably
-objections
-objective
-objectively
-objectiveness
-objectives
-objectivism
-objectivity
-objector
-objectors
-objects
-objurgate
-objurgation
-oblate
-oblation
-obligate
-obligated
-obligation
-obligations
-obligatorily
-obligatory
-oblige
-obliged
-obliges
-obliging
-obligingly
-oblique
-obliquely
-obliqueness
-obliquing
-obliquity
-obliterate
-obliterated
-obliterates
-obliterating
-obliteration
-oblivion
-oblivious
-obliviously
-obliviousness
-oblong
-obloquy
-obnoxious
-obnoxiously
-obnoxiousness
-oboe
-oboist
-obscene
-obscenely
-obscenity
-obscurant
-obscurantism
-obscurantist
-obscuration
-obscure
-obscured
-obscurely
-obscurer
-obscures
-obscuring
-obscurities
-obscurity
-obsecrate
-obsecration
-obsequies
-obsequious
-obsequiously
-obsequiousness
-obsequy
-observable
-observably
-observance
-observances
-observant
-observantly
-observation
-observational
-observations
-observatory
-observe
-observed
-observer
-observers
-observes
-observing
-obsess
-obsessed
-obsession
-obsessional
-obsessions
-obsessive
-obsessively
-obsessiveness
-obsidian
-obsolesce
-obsolescence
-obsolescent
-obsolete
-obsoleted
-obsoletes
-obsoleting
-obstacle
-obstacles
-obstetric
-obstetrical
-obstetrician
-obstetrics
-obstinacy
-obstinate
-obstinately
-obstreperous
-obstreperously
-obstreperousness
-obstruct
-obstructed
-obstructing
-obstruction
-obstructionism
-obstructionist
-obstructions
-obstructive
-obstructively
-obstructiveness
-obtain
-obtainable
-obtainably
-obtained
-obtaining
-obtainment
-obtains
-obtrude
-obtrusion
-obtrusive
-obtrusively
-obtrusiveness
-obturate
-obturator
-obtuse
-obtusely
-obtuseness
-obverse
-obviate
-obviated
-obviates
-obviating
-obviation
-obviations
-obvious
-obviously
-obviousness
-ocarina
-Occam
-occasion
-occasional
-occasionally
-occasioned
-occasioning
-occasionings
-occasions
-occident
-occidental
-Occidentalization
-Occidentalizations
-Occidentalize
-Occidentalized
-Occidentalizes
-Occidentalizing
-Occidentals
-occipital
-occiput
-occlude
-occluded
-occludes
-occlusion
-occlusions
-occlusive
-occult
-occultism
-occupancies
-occupancy
-occupant
-occupants
-occupation
-occupational
-occupationally
-occupations
-occupied
-occupier
-occupies
-occupy
-occupying
-occur
-occurred
-occurrence
-occurrences
-occurring
-occurs
-ocean
-ocean-going
-oceanfront
-oceangoing
-Oceania
-oceanic
-oceanographer
-oceanographic
-oceanography
-oceanology
-oceans
-Oceanside
-ocelot
-ocher
-ochre
-Oconomowoc
-OCR
-Oct
-octagon
-octagonal
-octahedra
-octahedral
-octahedron
-octal
-octane
-octave
-octaves
-Octavia
-Octavian
-octavo
-octet
-octets
-octette
-October
-Octobers
-octodecimo
-octogenarian
-octonary
-octopi
-octopus
-octuple
-ocular
-oculist
-OD
-odalisque
-odd
-odd-come-short
-oddball
-odder
-oddest
-oddities
-oddity
-oddly
-oddment
-oddments
-oddness
-odds
-odds-on
-ode
-Oder
-Oderberg
-Oderbergs
-odes
-Odessa
-Odin
-odious
-odiously
-odiousness
-odium
-odometer
-odor
-odored
-odoriferous
-odorless
-odorous
-odorously
-odorousness
-odors
-odour
-Odysseus
-OE
-OED
-oedema
-Oedipally
-Oedipus
-oeillade
-oenology
-oenophile
-oesophagus
-oeuvre
-of
-off
-off-bird
-off-color
-off-colored
-off-duty
-off-hand
-off-hour
-off-key
-off-limits
-off-line
-off-load
-off-loading
-off-peak
-off-position
-off-premise
-off-print
-off-putting
-off-ramp
-off-road
-off-scourings
-off-season
-off-set
-off-shoot
-off-side
-off-spring
-off-the-cuff
-off-the-rack
-off-the-record
-off-the-shelf
-off-the-wall
-off-time
-off-white
-offal
-offbeat
-Offenbach
-offence
-offend
-offended
-offender
-offenders
-offending
-offends
-offense
-offenses
-offensive
-offensively
-offensiveness
-offer
-offered
-offerer
-offerers
-offering
-offerings
-offers
-offertory
-offhand
-offhanded
-offhandedly
-offhandedness
-office
-officeholder
-officemate
-officer
-officers
-offices
-official
-officialdom
-officialese
-officialism
-officially
-officials
-officiant
-officiate
-officiator
-officinal
-officio
-officious
-officiously
-officiousness
-offing
-offish
-offline
-offload
-offprint
-offs
-offset
-offsets
-offsetting
-offshoot
-offshore
-offside
-offspring
-offstage
-offtake
-offtrack
-oft
-often
-oftentimes
-ofttimes
-Ogden
-ogee
-ogive
-ogle
-ogler
-Oglethorpe
-ogre
-ogreish
-ogress
-ogrish
-oh
-Ohio
-Ohioan
-ohm
-ohmmeter
-oho
-oil
-oil-cake
-oil-cloth
-oil-colour
-oil-field
-oil-gauge
-oil-press
-oil-stone
-oil-tank
-oil-tongued
-oilcloth
-oiled
-oiler
-oilers
-oilier
-oiliest
-oiliness
-oiling
-oils
-oilskin
-oilskins
-oily
-oink
-ointment
-OJ
-Ojibwa
-Ojibway
-OK
-Okamoto
-okapi
-okay
-Okayama
-Okefenokee
-okey-doke
-okey-dokey
-Okinawa
-Okinawan
-Okla
-Oklahoma
-Oklahoman
-okra
-Olaf
-Olav
-old
-old-fashioned
-old-line
-old-maidish
-old-time
-old-timer
-old-world
-olden
-Oldenburg
-older
-oldest
-oldie
-oldish
-oldman
-oldness
-Oldsmobile
-oldster
-Olduvai
-oldy
-ole
-oleaginous
-oleander
-oleaster
-Oleg
-oleo
-oleomargarin
-oleomargarine
-olfaction
-olfactory
-Olga
-oligarch
-oligarchic
-oligarchical
-oligarchy
-Oligocene
-Olin
-olive
-olive-branch
-Oliver
-Olivers
-olives
-Olivetti
-Olivia
-Olivier
-OLRT
-Olsen
-Olson
-Olympia
-olympiad
-Olympian
-Olympianize
-Olympianizes
-Olympic
-Olympics
-Olympus
-om
-Omaha
-Oman
-ombudsman
-omega
-omelet
-omelette
-omen
-omens
-omicron
-ominous
-ominously
-ominousness
-omission
-omissions
-omit
-omits
-omitted
-omitting
-omnibus
-omnidirectional
-omnious
-omnipotence
-omnipotent
-omnipresence
-omnipresent
-omniscience
-omniscient
-omnisciently
-omnivore
-omnivorous
-omnivorously
-omnivorousness
-Omsk
-on
-on-horseback
-on-line
-on-position
-on-timer
-onanism
-once
-once-over
-oncer
-oncogene
-oncologist
-oncology
-oncoming
-ondisc
-one
-one-eyed
-one-handed
-one-horse
-one-legged
-one-liner
-one-on-one
-one-part
-one-shot
-one-sided
-one-sidedness
-one-stage
-one-time
-one-to-one
-one-track
-one-up
-one-upmanship
-one-way
-Oneida
-oneness
-onerous
-onerously
-onerousness
-ones
-oneself
-onetime
-ongoing
-onion
-onions
-onionskin
-online
-onlooker
-onlookers
-onlooking
-only
-onomatopoeia
-onomatopoeic
-onomatopoetic
-Onondaga
-onrush
-onrushing
-onset
-onsets
-onshore
-onside
-onslaught
-Ontarian
-Ontario
-onto
-ontogeny
-ontological
-ontology
-onus
-onward
-onwards
-onyx
-oodles
-oof
-ooh
-ooon
-oops
-ooze
-oozed
-oozy
-op
-opacity
-opal
-opalescence
-opalescent
-opals
-opaque
-opaquely
-opaqueness
-opcode
-ope
-OPEC
-Opel
-open
-open-air
-open-and-shut
-open-eared
-open-ended
-open-eyed
-open-face
-open-faced
-open-grained
-open-handed
-open-hearted
-open-hearth
-open-minded
-open-mindedly
-open-mindedness
-open-mouthed
-open-plan
-opened
-opener
-openers
-openhanded
-openhandedness
-openhearted
-opening
-openings
-openly
-openness
-opens
-openwork
-opera
-opera-glass
-opera-hat
-operability
-operable
-operaion
-operand
-operandi
-operands
-operas
-operate
-operated
-operates
-operatic
-operatically
-operating
-operation
-operational
-operationally
-operations
-operative
-operatives
-operator
-operators
-operetta
-Ophiuchus
-Ophiucus
-ophthalmic
-ophthalmologist
-ophthalmology
-opiate
-opine
-opinion
-opinionated
-opinions
-opisthographic
-opium
-opossum
-Oppenheimer
-opponent
-opponents
-opportune
-opportunely
-opportunism
-opportunist
-opportunistic
-opportunities
-opportunity
-opposable
-oppose
-opposed
-opposes
-opposing
-opposite
-oppositely
-oppositeness
-opposites
-opposition
-oppress
-oppressed
-oppresses
-oppressing
-oppression
-oppressive
-oppressively
-oppressiveness
-oppressor
-oppressors
-opprobrious
-opprobriously
-opprobrium
-oppugn
-OPR
-opt
-optative
-opted
-opthalmic
-opththalmia
-optic
-optical
-optically
-optician
-optics
-optima
-optimal
-optimality
-optimally
-optimism
-optimist
-optimistic
-optimistically
-optimization
-optimizations
-optimize
-optimized
-optimizer
-optimizers
-optimizes
-optimizing
-optimum
-opting
-option
-optional
-optionally
-options
-optoacoustic
-optoelectronics
-optometrist
-optometry
-opts
-opulence
-opulent
-opulently
-opus
-opuscule
-or
-oracle
-oracles
-oracular
-oral
-orally
-orang-utang
-orange
-orangeade
-orangery
-oranges
-orangutan
-orangutang
-orate
-oration
-orations
-orator
-oratorical
-oratorically
-oratories
-oratorio
-orators
-oratory
-orb
-orbicular
-orbit
-orbital
-orbitally
-orbited
-orbiter
-orbiters
-orbiting
-orbits
-orchard
-orchards
-orchestra
-orchestral
-orchestras
-orchestrate
-orchestration
-orchestrion
-orchid
-orchids
-orchis
-ordain
-ordained
-ordaining
-ordainment
-ordains
-ordeal
-order
-order-book
-order-of-the-day
-ordered
-orderer
-ordering
-orderings
-orderless
-orderlies
-orderliness
-orderly
-orders
-ordinal
-ordinance
-ordinances
-ordinarily
-ordinariness
-ordinary
-ordinate
-ordinates
-ordination
-ordnance
-ordnance-map
-ordnance-sheet
-Ordovician
-ordure
-ore
-ore-bearing
-Oreg
-oregano
-Oregon
-Oregonian
-Oregonians
-ores
-Oresteia
-Orestes
-organ
-organ-grind
-organ-grinder
-organ-loft
-organdie
-organdy
-organelle
-organic
-organically
-organise
-organism
-organismic
-organisms
-organist
-organists
-organizable
-organization
-organizational
-organizationally
-organizations
-organize
-organized
-organizer
-organizers
-organizes
-organizing
-organs
-organza
-orgasm
-orgasmic
-orgiastic
-orgies
-orgware
-orgy
-oriel
-orient
-oriental
-orientalist
-Orientalization
-Orientalizations
-Orientalize
-Orientalized
-Orientalizes
-Orientalizing
-Orientals
-orientate
-orientation
-orientations
-oriented
-orienting
-orients
-orifice
-orifices
-origami
-origin
-original
-originality
-originally
-originals
-originate
-originated
-originates
-originating
-origination
-originator
-originators
-origins
-Orin
-Orinoco
-oriole
-Orion
-orison
-Orkney
-Orlando
-Orleans
-Orlick
-Orlon
-orlop
-Orly
-ormolu
-ornament
-ornamental
-ornamentally
-ornamentation
-ornamented
-ornamenting
-ornaments
-ornate
-ornately
-ornateness
-orneriness
-ornery
-ornithological
-ornithologist
-ornithology
-OROM
-Orono
-orotund
-orotundity
-orphan
-orphanage
-orphaned
-orphans
-Orpheus
-Orphic
-Orphically
-Orr
-orris
-Ortega
-orthant
-ortho-
-orthocode
-orthodontia
-orthodontic
-orthodontics
-orthodontist
-orthodox
-orthodoxy
-orthogonal
-orthogonality
-orthogonally
-orthographic
-orthographically
-orthography
-orthopaedic
-orthopaedics
-orthopaedist
-orthopedic
-orthopedics
-orthopedist
-orthoscanner
-ortolan
-Orville
-Orwell
-Orwellian
-OS
-os.
-Osage
-Osaka
-Osbert
-Osborn
-Osborne
-Oscar
-oscillate
-oscillated
-oscillates
-oscillating
-oscillation
-oscillations
-oscillator
-oscillators
-oscillatory
-oscilloscope
-oscilloscopes
-osculate
-osculation
-Osgood
-OSHA
-Oshawa
-Oshkosh
-osier
-Osiris
-Oslo
-osmium
-osmosis
-osmotic
-osprey
-osseous
-ossification
-ossify
-ossuary
-ostensible
-ostensibly
-ostensory
-ostentation
-ostentatious
-ostentatiously
-osteoarthritis
-osteopath
-osteopathic
-osteopathy
-osteoporosis
-ostler
-ostracism
-ostracize
-Ostrander
-ostrich
-ostriches
-Oswald
-OT
-OTB
-OTC
-Othello
-other
-others
-otherwhile
-otherwise
-otherwordly
-otherworldly
-otic
-otiose
-Otis
-Ott
-Ottawa
-otter
-otters
-Otto
-ottoman
-Ottomanization
-Ottomanizations
-Ottomanize
-Ottomanizes
-Ouagadougou
-oubliette
-ouch
-ought
-oughtn't
-Ouija
-ounce
-ounces
-our
-ours
-ourself
-ourselves
-ousel
-oust
-ouster
-out
-out-
-out-and-out
-out-of-body
-out-of-bounds
-out-of-date
-out-of-door
-out-of-doors
-out-of-the-way
-out-Yankee
-outage
-outargue
-outback
-outbalance
-outbid
-outboard
-outboast
-outbound
-outbreak
-outbreaks
-outbreathe
-outbuilding
-outburst
-outbursts
-outcast
-outcasts
-outclass
-outcome
-outcomes
-outconnector
-outcries
-outcrop
-outcropping
-outcry
-outdated
-outdid
-outdistance
-outdo
-outdone
-outdoor
-outdoors
-outdoorsy
-outdraw
-outer
-outermost
-outerwear
-outface
-outfall
-outfield
-outfielder
-outfight
-outfit
-outfits
-outfitted
-outfitter
-outflank
-outflow
-outfox
-outgo
-outgoing
-outgoings
-outgrew
-outgrow
-outgrowing
-outgrown
-outgrows
-outgrowth
-outguess
-outhit
-outhouse
-outing
-outlandish
-outlandishly
-outlandishness
-outlast
-outlasts
-outlaw
-outlawed
-outlawing
-outlaws
-outlay
-outlays
-outlet
-outlets
-outline
-outlined
-outlines
-outlining
-outlive
-outlived
-outlives
-outliving
-outlook
-outlying
-outmachine
-outmaneuver
-outmanoeuvre
-outmatch
-outmoded
-outmost
-outness
-outnumber
-outnumbered
-outpatient
-outperform
-outperformed
-outperforming
-outperforms
-outplacement
-outplay
-outpoint
-outpost
-outposts
-outpour
-outpouring
-outproduce
-output
-outputs
-outputting
-outrace
-outrage
-outraged
-outrageous
-outrageously
-outrages
-outragous
-outran
-outrank
-outre
-outreach
-outride
-outrider
-outrigger
-outright
-outroot
-outrun
-outruns
-outs
-outscore
-outsell
-outset
-outshine
-outshone
-outshout
-outside
-outsider
-outsiders
-outsit
-outsize
-outsized
-outskirt
-outskirts
-outsleep
-outsmart
-outsold
-outsort
-outsource
-outsourcing
-outspend
-outspoken
-outspokenly
-outspokenness
-outspread
-outstanding
-outstandingly
-outstation
-outstay
-outstep
-outstreet
-outstretch
-outstretched
-outstrip
-outstripped
-outstripping
-outstrips
-outtake
-outvalue
-outvie
-outvote
-outvoted
-outvotes
-outvoting
-outward
-outwardly
-outwards
-outwear
-outweigh
-outweighed
-outweighing
-outweighs
-outwit
-outwits
-outwitted
-outwitting
-outwore
-outwork
-outworn
-ouzel
-ouzo
-ova
-oval
-ovals
-ovarian
-ovaries
-ovary
-ovate
-ovation
-oven
-ovenbird
-ovens
-over
-over-
-over-copy
-over-employment
-over-estimate
-over-filled
-over-full
-over-ripe
-over-the-counter
-over-the-top
-overabundance
-overabundant
-overachieve
-overachiever
-overact
-overactive
-overage
-overaggressive
-overall
-overalls
-overambitious
-overanxious
-overarch
-overarm
-overate
-overattentive
-overawe
-overawed
-overbalance
-overbear
-overbearing
-overbearingly
-overbid
-overbite
-overblown
-overboard
-overbold
-overbook
-overbore
-overborne
-overbrim
-overbuild
-overburden
-overburn
-overbuy
-overcame
-overcapitalize
-overcare
-overcareful
-overcast
-overcautious
-overcharge
-overcloud
-overcoat
-overcoats
-overcolour
-overcome
-overcomes
-overcoming
-overcompensate
-overcompensation
-overconfidence
-overconfident
-overconscientious
-overcook
-overcooling
-overcritical
-overcrop
-overcrowd
-overcrowded
-overcrowding
-overcrowds
-overdecorate
-overdependent
-overdevelop
-overdid
-overdo
-overdone
-overdose
-overdraft
-overdrafts
-overdraw
-overdrawn
-overdress
-overdressed
-overdrew
-overdrive
-overdub
-overdue
-overeager
-overeat
-overeaten
-overemotional
-overemphasis
-overemphasize
-overemphasized
-overenthusiastic
-overestimate
-overestimated
-overestimates
-overestimating
-overestimation
-overexcite
-overexcited
-overexercise
-overexert
-overexertion
-overexpose
-overexposure
-overextend
-overextended
-overfeed
-overfill
-overflew
-overflight
-overflow
-overflowed
-overflowing
-overflown
-overflows
-overfly
-overfond
-overfreight
-overfull
-overfullfilment
-overgeneralize
-overgenerous
-overgraze
-overgrew
-overground
-overgrow
-overgrown
-overgrowth
-overhand
-overhanded
-overhang
-overhanging
-overhangs
-overhasty
-overhaul
-overhauling
-overhead
-overheads
-overhear
-overheard
-overhearing
-overhears
-overheat
-overhung
-overindulge
-overindulgence
-overindulgent
-overink
-overissues
-overjoy
-overjoyed
-overkill
-overlabour
-overlade
-overlaid
-overland
-overlap
-overlapped
-overlapping
-overlaps
-overlarge
-overlay
-overlaying
-overlays
-overleaf
-overleap
-overlie
-overlive
-overload
-overloaded
-overloading
-overloads
-overlong
-overlook
-overlooked
-overlooking
-overlooks
-overlord
-overly
-overmaster
-overmatch
-overmodest
-overmuch
-overnice
-overnight
-overnighter
-overnighters
-overoptimism
-overoptimistic
-overpaid
-overparticular
-overpass
-overpay
-overplay
-overplus
-overpoise
-overpopulate
-overpopulated
-overpopulation
-overpower
-overpowered
-overpowering
-overpoweringly
-overpowers
-overpraise
-overprecise
-overpress
-overpressure
-overprice
-overpriced
-overprint
-overprinted
-overprinting
-overprints
-overproduce
-overproduction
-overprotect
-overprotective
-overpunching
-overqualified
-overran
-overrate
-overreach
-overreact
-overreaction
-overrefined
-overridden
-override
-overrides
-overriding
-overripe
-overrode
-overrule
-overruled
-overrules
-overrun
-overrunning
-overruns
-overs
-oversalt
-oversalted
-oversaturation
-oversaw
-oversea
-overseas
-oversee
-overseeing
-overseen
-overseer
-overseers
-oversees
-oversell
-oversensitive
-oversensitiveness
-overset
-oversewing
-oversexed
-overshadow
-overshadowed
-overshadowing
-overshadows
-overshoe
-overshoes
-overshoot
-overshot
-oversight
-oversights
-oversimple
-oversimplification
-oversimplified
-oversimplifies
-oversimplify
-oversimplifying
-oversing
-oversize
-oversized
-overskip
-oversleep
-overslept
-overslip
-oversold
-overspecialization
-overspecialize
-overspend
-overspent
-overspill
-overspread
-overstate
-overstated
-overstatement
-overstatements
-overstates
-overstating
-overstay
-overstep
-overstimulate
-overstock
-overstocks
-overstoring
-overstrain
-overstrict
-overstrike
-overstrung
-overstuffed
-oversubscribe
-oversubscribed
-oversubtle
-oversupply
-oversuspicious
-overt
-overtake
-overtaken
-overtaker
-overtakers
-overtakes
-overtaking
-overtask
-overtax
-overthrew
-overthrow
-overthrown
-overtime
-overtire
-overtly
-overtoil
-overtone
-overtones
-overtook
-overture
-overtures
-overturn
-overturned
-overturning
-overturns
-overuse
-overused
-overvalue
-overview
-overviews
-overvoltage
-overweening
-overweigh
-overweight
-overwhelm
-overwhelmed
-overwhelming
-overwhelmingly
-overwhelms
-overwinter
-overwork
-overworked
-overworking
-overworks
-overwrite
-overwrites
-overwriting
-overwritten
-overwrought
-overzealous
-Ovid
-oviduct
-ovine
-oviparous
-ovoid
-ovoidum
-ovular
-ovulate
-ovulation
-ovule
-ovum
-ow
-owe
-owed
-Owen
-Owens
-owercome
-owes
-owing
-owl
-owl-light
-owlet
-owlish
-owlishly
-owls
-own
-owned
-owner
-owners
-ownership
-ownerships
-owning
-owns
-ox
-ox-eye
-ox-eye-daisy
-ox-fly
-ox-hide
-ox-lip
-oxblood
-oxbow
-oxcart
-oxen
-oxidant
-oxidate
-oxidation
-oxide
-oxides
-oxidization
-oxidize
-oxidized
-oxidizer
-Oxnard
-Oxonian
-oxyacetylene
-oxygen
-oxygenate
-oxygenation
-oxymora
-oxymoron
-oyer
-oyster
-oysters
-Oz
-Ozark
-Ozarks
-ozone
-ozone-friendly
-Ozzie
-P/L
-pa
-Pa.
-Pablo
-pablum
-Pabst
-pabulum
-PAC
-pace
-paced
-pacemaker
-pacer
-pacers
-paces
-pacesetter
-pachyderm
-pachysandra
-pacific
-pacifically
-pacification
-pacified
-pacifier
-pacifies
-pacifism
-pacifist
-pacifistic
-pacify
-pacing
-pack
-pack-cloth
-pack-horse
-pack-paper
-pack-saddle
-pack-thread
-package
-packaged
-packager
-packagers
-packages
-packaging
-packagings
-Packard
-Packards
-packed
-packer
-packers
-packet
-packet-boat
-packets
-packing
-packing-needle
-packinghouse
-packs
-packsaddle
-Packwood
-pact
-pacts
-pad
-Padang
-padded
-padding
-paddle
-paddler
-paddock
-paddy
-paddy-field
-padlock
-padre
-pads
-paean
-paediatric
-paediatrician
-paediatrics
-paek
-paella
-pagan
-Paganini
-paganism
-pagans
-page
-page-in
-pageant
-pageantry
-pageants
-pageboy
-paged
-pager
-pagers
-pages
-paginal
-paginate
-paginated
-paginates
-paginating
-pagination
-paging
-pagoda
-pah
-paid
-pail
-pailful
-paillasse
-pails
-pain
-Paine
-pained
-painful
-painfully
-painfulness
-painkiller
-painkilling
-painless
-painlessly
-painlessness
-pains
-painstaking
-painstakingly
-paint
-paintbox
-paintbrush
-painted
-painter
-painters
-painting
-paintings
-paintress
-paints
-pair
-pair-oar
-paired
-pairing
-pairings
-pairs
-pairwise
-paisley
-pajama
-pajamas
-Pakistan
-Pakistani
-Pakistanis
-pal
-palace
-palaces
-paladin
-palaeography
-palaeotypography
-palankeen
-palanquin
-palatable
-palatal
-palatalization
-palatalize
-palate
-palates
-palatial
-palatially
-Palatinate
-Palau
-palaver
-pale
-pale-face
-pale-hearted
-paled
-paleface
-palely
-Palembang
-paleness
-Paleocene
-paleographer
-paleography
-Paleolithic
-paleontologist
-paleontology
-Paleozoic
-paler
-Palermo
-pales
-palest
-Palestine
-Palestinian
-palette
-palfrey
-palimony
-palimpsest
-palindrome
-palindromic
-paling
-palisade
-palisades
-palish
-pall
-Palladian
-palladium
-pallbearer
-pallet
-palliasse
-palliate
-palliation
-palliative
-pallid
-pallidly
-pallidness
-pallor
-palm
-palmate
-palmed
-palmer
-palmetto
-palming
-palmist
-palmistry
-Palmolive
-palms
-palmtop
-palmy
-Palmyra
-Palo
-Palomar
-palomino
-palp
-palpable
-palpably
-palpate
-palpation
-palpitate
-palpitation
-palpitations
-pals
-palsied
-palsy
-palsy-walsy
-palter
-paltriness
-paltry
-Pam
-Pamela
-pampas
-pamper
-pamphlet
-pamphleteer
-pamphlets
-pan
-Pan-American
-pan-germanism
-pan-pie
-panacea
-panaceas
-panache
-Panama
-Panamanian
-pancake
-pancakes
-Pancho
-panchromatic
-pancreas
-pancreatic
-panda
-Pandanus
-pandas
-pandemic
-pandemonium
-pander
-panderer
-Pandora
-pane
-panegyric
-panel
-paneled
-paneling
-panelist
-panelists
-panelling
-panels
-panes
-pang
-Pangaea
-pangs
-panhandle
-panhandler
-panic
-panic-monger
-panic-stricken
-panic-striken
-panic-struck
-panicked
-panicking
-panicky
-panicle
-panics
-panier
-panned
-pannier
-pannikin
-panning
-panoply
-panorama
-panoramic
-panpipes
-pans
-pansies
-pansy
-pansy-boy
-pant
-pantaloons
-pantechnicon
-panted
-pantheism
-pantheist
-pantheistic
-pantheon
-panther
-panthers
-pantie
-pantie-stockings
-panties
-panting
-pantomime
-pantomimic
-pantomimist
-pantries
-pantry
-pants
-pantsuit
-panty
-panty-waist
-pantyhose
-pantyliner
-pantywaist
-Paoli
-pap
-papa
-papacy
-papal
-paparazzi
-papaverous
-papaw
-papaya
-paper
-paper-backed
-paper-clip
-paper-fastener
-paper-hanger
-paper-hangings
-paper-hardbacked
-paper-knife
-paper-mill
-paper-money
-paper-pulp
-paper-weight
-paperback
-paperbacks
-paperboard
-paperboy
-papered
-paperer
-paperers
-papergirl
-paperhanger
-paperhanging
-papering
-paperings
-papers
-paperweight
-paperwork
-papery
-papier-mache
-papilla
-papillae
-papillary
-papist
-papoose
-Pappas
-pappy
-paprika
-Papua
-papyri
-papyrograph
-papyrography
-papyrology
-papyrotype
-papyrus
-par
-para
-parable
-parabola
-parabolic
-paraboloid
-paraboloidal
-parachute
-parachuted
-parachutes
-parachutist
-parade
-paraded
-parader
-parades
-paradigm
-paradigmatic
-paradigms
-parading
-paradisaic
-paradisaical
-paradise
-paradontitis
-paradox
-paradoxes
-paradoxical
-paradoxically
-paraffin
-paragon
-paragons
-paragraph
-paragraphing
-paragraphs
-Paraguay
-Paraguayan
-Paraguayans
-parakeet
-paralegal
-parallax
-parallel
-paralleled
-parallelepiped
-paralleling
-parallelism
-parallelize
-parallelized
-parallelizes
-parallelizing
-parallelogram
-parallelograms
-parallels
-paralyse
-paralyses
-paralysis
-paralytic
-paralyze
-paralyzed
-paralyzes
-paralyzing
-paralyzingly
-Paramaribo
-paramecia
-paramecium
-paramedic
-paramedical
-parameter
-parameterizable
-parameterization
-parameterizations
-parameterize
-parameterized
-parameterizes
-parameterizing
-parameterless
-parameters
-parametric
-parametrized
-paramilitary
-paramount
-paramour
-Paramus
-Parana
-paranoia
-paranoiac
-paranoid
-paranormal
-parapet
-parapets
-paraph
-paraphernalia
-paraphrase
-paraphrased
-paraphrases
-paraphrasing
-paraplegia
-paraplegic
-paraprofessional
-parapsychologist
-parapsychology
-paraquat
-parasite
-parasites
-parasitic
-parasitically
-parasitics
-parasitism
-parasol
-parasympathetic
-parathion
-parathyroid
-paratrooper
-paratroops
-paratyphoid
-parboil
-parbuckle
-PARC
-parcel
-parceled
-parceling
-parcels
-parch
-parched
-parchment
-pard
-pardon
-pardon?
-pardonable
-pardonably
-pardoned
-pardoner
-pardoners
-pardoning
-pardons
-pare
-paregoric
-parent
-parentage
-parental
-parentheses
-parenthesis
-parenthesize
-parenthesized
-parenthesizes
-parenthesizing
-parenthetic
-parenthetical
-parenthetically
-parenthood
-parenting
-parents
-parer
-pares
-pareses
-paresis
-Pareto
-parfait
-parget
-pari-mutuel
-pariah
-parietal
-parimutuel
-paring
-parings
-Paris
-parish
-parishes
-parishioner
-Parisian
-Parisianization
-Parisianizations
-Parisianize
-Parisianizes
-parity
-park
-parka
-Parke
-parked
-parker
-parkers
-Parkersburg
-Parkhouse
-parking
-Parkinson
-Parkinsonian
-parkland
-parklike
-Parkman
-Parks
-parkway
-parlance
-parlay
-parley
-parliament
-parliamentarian
-parliamentary
-parliaments
-parlor
-parlors
-parlour
-parlour-maid
-parlous
-Parmesan
-parmigiana
-parmigiano
-Parnassus
-parochial
-parochialism
-parochially
-parodist
-parody
-parole
-paroled
-parolee
-paroles
-paroling
-parotid
-paroxysm
-paroxysmal
-parquet
-parquetry
-Parr
-parrakeet
-parricidal
-parricide
-parried
-Parrish
-parrot
-parroting
-parrots
-Parrs
-parry
-pars
-parse
-parsec
-parsed
-Parsee
-parser
-parsers
-parses
-Parsi
-Parsifal
-parsimonious
-parsimoniously
-parsimony
-parsing
-parsings
-parsley
-parsnip
-parson
-parsonage
-Parsons
-part
-part-song
-part-time
-part-timer
-partake
-partaken
-partaker
-partakes
-partaking
-parted
-parter
-parterre
-parters
-parthenogenesis
-Parthenon
-Parthia
-parti-colored
-partial
-partiality
-partially
-participant
-participants
-participate
-participated
-participates
-participating
-participation
-participator
-participatory
-participial
-participle
-particle
-particleboard
-particles
-particolored
-particular
-particularity
-particularization
-particularize
-particularly
-particulars
-particulate
-parties
-parting
-partings
-partisan
-partisans
-partisanship
-partition
-partitioned
-partitioning
-partitions
-partitive
-partizan
-partly
-partner
-partnered
-partners
-partnership
-partook
-partridge
-partridges
-parts
-parturient
-parturition
-partway
-party
-party-liner
-party-spirit
-parvenu
-Pasadena
-pascal
-paschal
-pasha
-Paso
-pasque-flower
-pass
-pass-book
-pass-fail
-pass-key
-passable
-passably
-passage
-passage(way)
-passages
-passageway
-Passaic
-PASSAT
-passbook
-passe
-passe-partout
-passed
-passel
-passenger
-passenger-boat
-passenger-train
-passengers
-passer
-passer-by
-passerby
-passers
-passers-by
-passersby
-passes
-passibility
-passim
-passing
-passing-bell
-passing-note
-passing-on
-passing-place
-passingly
-passion
-passion-flower
-passion-play
-passionate
-passionately
-passionflower
-passionless
-passions
-passivate
-passive
-passively
-passiveness
-passivity
-passkey
-Passover
-passport
-passports
-password
-passwords
-past
-pasta
-paste
-paste-board
-paste-down
-pasteboard
-pasted
-pastel
-paster
-pastern
-Pasternak
-pastes
-Pasteur
-pasteurization
-pasteurize
-pasteurizer
-pastiche
-pastille
-pastime
-pastimes
-pastiness
-pasting
-pastness
-pastor
-pastoral
-pastorate
-pastors
-pastrami
-pastry
-pasts
-pasturage
-pasture
-pastures
-pasty
-pat
-Patagonia
-Patagonians
-patch
-patch-work
-patchable
-patched
-patchery
-patches
-patchily
-patchiness
-patching
-patchwork
-patchy
-pate
-patella
-patellae
-paten
-patent
-patent-leather
-patentability
-patentable
-patented
-patentee
-patenter
-patenters
-patenting
-patently
-patents
-paterfamilias
-paternal
-paternalism
-paternalistic
-paternally
-paternity
-paternoster
-Paterson
-path
-pathetic
-pathetically
-pathfinder
-pathless
-pathname
-pathnames
-pathogen
-pathogenesis
-pathogenic
-pathological
-pathologically
-pathologist
-pathology
-pathos
-paths
-pathway
-pathways
-pathy
-patience
-patient
-patiently
-patients
-patina
-patio
-patisserie
-Patna
-patois
-patriarch
-patriarchal
-patriarchate
-patriarchs
-patriarchy
-Patrice
-Patricia
-patrician
-patricians
-patricide
-Patrick
-patrimonial
-patrimony
-patriot
-patriotic
-patriotically
-patriotism
-patriots
-patrol
-patrolled
-patrolling
-patrolman
-patrolmen
-patrols
-patrolwoman
-patron
-patronage
-patroness
-patronize
-patronized
-patronizer
-patronizes
-patronizing
-patronizingly
-patrons
-patronymic
-patronymically
-patroon
-pats
-Patsies
-patsy
-patten
-patter
-pattered
-pattering
-patterings
-pattern
-pattern-matching
-pattern-shop
-patterned
-patterning
-patterns
-patters
-Patterson
-Patti
-patties
-Patton
-patty
-Pat
-paucity
-Paul
-Paula
-Paulette
-Pauli
-Pauline
-Pauling
-Paulinize
-Paulinizes
-Paulo
-Paulsen
-Paulson
-Paulus
-paunch
-paunchy
-pauper
-pauperism
-pauperize
-pause
-paused
-pauses
-pausing
-Pavarotti
-pave
-paved
-pavement
-pavements
-paver
-paves
-pavilion
-pavilions
-paving
-Pavlov
-Pavlova
-Pavlovian
-paw
-pawing
-pawl
-pawn
-pawn-shop
-pawnbroker
-pawnbroking
-Pawnee
-pawns
-pawnshop
-pawpaw
-paws
-Pawtucket
-pay
-pay-day
-pay-load
-pay-per-view
-pay-TV
-payable
-payback
-paycheck
-paychecks
-payday
-payed
-payee
-payer
-payers
-paying
-payload
-paymaster
-paymasters
-payment
-payments
-Payne
-Paynes
-Paynize
-Paynizes
-payoff
-payoffs
-payola
-payout
-payroll
-payrolls
-pays
-payslip
-Payson
-Paz
-Pb
-PBS
-PBX
-PC
-PCB
-PCP
-PDT
-PE
-pea
-pea-hen
-pea-nut
-pea-shell
-pea-soup
-Peabody
-peace
-peace-pipe
-peaceable
-peaceably
-peaceful
-peacefully
-peacefulness
-peacekeeping
-peacemaker
-peacemaking
-peacetime
-peach
-peach-brandy
-peach-tree
-peaches
-Peachtree
-peachy
-peacock
-peacocks
-peafowl
-peahen
-peak
-peaked
-peaks
-peal
-Peale
-pealed
-pealing
-peals
-peanut
-peanuts
-pear
-pear-tree
-Pearce
-pearl
-pearls
-pearly
-pears
-Pearson
-Peary
-peas
-peasant
-peasantry
-peasants
-Pease
-peashooter
-peat
-peatbog
-peaty
-pebble
-pebbles
-pebbling
-pebbly
-pecan
-peccability
-peccable
-peccadillo
-peccancy
-peccant
-peccary
-peck
-pecked
-pecker
-pecking
-peckish
-pecks
-Pecos
-pectic
-pectin
-pectoral
-peculate
-peculation
-peculator
-peculiar
-peculiarities
-peculiarity
-peculiarly
-pecuniary
-pedagog
-pedagogic
-pedagogical
-pedagogically
-pedagogue
-pedagogy
-pedal
-pedals
-pedant
-pedantic
-pedantically
-pedantry
-peddle
-peddler
-peddlers
-peddling
-pederast
-pederasty
-pedestal
-pedestrian
-pedestrianize
-pedestrians
-pediatric
-pediatrician
-pediatrics
-pediatrist
-pedicab
-pedicure
-pedicurist
-pedigree
-pedigreed
-pediment
-pedlar
-pedlary
-pedometer
-Pedro
-peduncle
-pee
-pee-ka-boo
-peek
-peek-a-boo
-peekaboo
-peeked
-peeking
-peeks
-peel
-peeled
-peeler
-peeling
-peelings
-peels
-peen
-peep
-peep-hole
-peeped
-peeper
-peephole
-peeping
-peeps
-peepshow
-peer
-peerage
-peered
-peeress
-peering
-peerless
-peers
-peeve
-peevish
-peevishly
-peevishness
-peewee
-peewit
-peg
-Pegasus
-pegboard
-Peggy
-pegs
-peignoir
-Peiping
-pejoration
-pejorative
-pejoratively
-peke
-Peking
-pekoe
-PEL
-pelage
-pelagic
-pelargonium
-pelerine
-pelf
-Pelham
-pelican
-pell-mell
-pellagra
-pellet
-pellicle
-pellmell
-pellucid
-pelmet
-Peloponnese
-peloton
-pelt
-pelting
-pelts
-pelves
-pelvic
-pelvis
-Pembroke
-pemmican
-pen
-pen-holder
-pen-name
-penal
-penalization
-penalize
-penalized
-penalizes
-penalizing
-penalties
-penalty
-penance
-pence
-penchant
-pencil
-penciled
-pencils
-pend
-pendant
-pended
-pendent
-pending
-Pendleton
-pends
-pendulate
-pendulous
-pendulum
-pendulums
-Penelope
-penes
-penetrability
-penetrable
-penetrate
-penetrated
-penetrates
-penetrating
-penetratingly
-penetration
-penetrations
-penetrative
-penetrator
-penetrators
-penguin
-penguins
-Penh
-penicillin
-penile
-peninsula
-peninsular
-peninsulas
-penis
-penises
-penitence
-penitent
-penitential
-penitentiary
-penitently
-penknife
-penknives
-penlight
-penlite
-penman
-penmanship
-Penn
-Penna
-pennant
-penned
-pennies
-penniless
-penning
-pennon
-Pennsylvania
-Pennsylvanian
-penny
-penny-pincher
-penny-pinching
-penny-wise
-penny-wort
-penny-worth
-pennyroyal
-pennyweight
-penologist
-penology
-Penrose
-pens
-Pensacola
-pension
-pensionable
-pensionary
-pensioner
-pensions
-pensive
-pensively
-pensiveness
-penstock
-pent
-pent-up
-pentacle
-pentagon
-pentagonal
-pentagons
-pentagram
-pentameter
-Pentateuch
-pentathlete
-pentathlon
-Pentecost
-Pentecostalism
-penthouse
-pentode
-penuche
-penultimate
-penumbra
-penumbrae
-penurious
-penuriously
-penuriousness
-penury
-peon
-peonage
-peony
-people
-peopled
-peoples
-Peoria
-pep
-pepless
-pepper
-pepper(s)
-peppercorn
-peppered
-pepperer-box
-peppering
-peppermint
-pepperoni
-peppers
-peppery
-peppiness
-peppy
-Pepsi
-pepsin
-peptic
-peptide
-per
-peradventure
-perambulate
-perambulation
-perambulator
-percale
-perceivable
-perceivably
-perceive
-perceived
-perceiver
-perceivers
-perceives
-perceiving
-percent
-percentage
-percentages
-percentile
-percentiles
-percents
-perceptible
-perceptibly
-perception
-perceptional
-perceptions
-perceptive
-perceptively
-perceptiveness
-perceptual
-perceptually
-percevable
-perch
-perchance
-perched
-perches
-perching
-percipience
-percipient
-Percival
-percolate
-percolation
-percolator
-percussion
-percussionist
-percutaneous
-Percy
-Percy-pants
-perdition
-perdue
-perdurable
-peregrinate
-peregrination
-peregrinator
-peregrine
-peremptorily
-peremptory
-perennial
-perennially
-perestroika
-Perez
-perfect
-perfecta
-perfected
-perfectibility
-perfectible
-perfecting
-perfection
-perfectionism
-perfectionist
-perfectionists
-perfectly
-perfectness
-perfects
-perfidious
-perfidiously
-perfidy
-perforate
-perforated
-perforation
-perforator
-perforce
-perform
-performance
-performances
-performed
-performer
-performers
-performing
-performs
-perfume
-perfumed
-perfumer
-perfumery
-perfumes
-perfuming
-perfunctorily
-perfunctory
-Pergamon
-pergola
-perhaps
-perhydrase
-perianth
-periapt
-pericardia
-pericardium
-Periclean
-Pericles
-pericope
-periderm
-perigee
-perihelia
-perihelion
-peril
-Perilla
-perilous
-perilously
-perils
-perimeter
-perinea
-perineum
-period
-periodic
-periodical
-periodically
-periodicals
-periodicity
-periodontal
-periodontics
-periodontist
-periods
-periostitis
-peripatetic
-peripheral
-peripherally
-peripherals
-peripheries
-periphery
-periphrase
-periphrases
-periphrasis
-periphrastic
-periscope
-perish
-perishable
-perishables
-Perishables!
-perished
-perisher
-perishers
-perishes
-perishing
-peristalses
-peristalsis
-peristaltic
-peristyle
-peritonea
-peritoneal
-peritoneum
-peritonitis
-periwig
-periwinkle
-perjure
-perjurer
-perjurious
-perjury
-perk
-perkily
-perkiness
-Perkins
-perky
-Perle
-perm
-permafrost
-permanence
-permanency
-permanent
-permanently
-permeability
-permeable
-permeate
-permeated
-permeates
-permeating
-permeation
-Permian
-permissibility
-permissible
-permissibly
-permission
-permissions
-permissive
-permissively
-permissiveness
-permit
-permits
-permitted
-permitting
-permutate
-permutation
-permutations
-permute
-permuted
-permutes
-permuting
-pernicious
-perniciously
-perniciousness
-pernickety
-Pernod
-peroration
-peroxide
-perpendicular
-perpendicularity
-perpendicularly
-perpendiculars
-perpetrate
-perpetrated
-perpetrates
-perpetrating
-perpetration
-perpetrations
-perpetrator
-perpetrators
-perpetual
-perpetually
-perpetuate
-perpetuated
-perpetuates
-perpetuating
-perpetuation
-perpetuity
-perplex
-perplexed
-perplexedly
-perplexing
-perplexity
-perquisite
-perry
-persecute
-persecuted
-persecutes
-persecuting
-persecution
-persecutor
-persecutors
-Perseid
-Persephone
-Perseus
-perseverance
-persevere
-persevered
-perseveres
-persevering
-Pershing
-Persia
-Persian
-Persianization
-Persianizations
-Persianize
-Persianizes
-Persians
-persiennes
-persiflage
-persimmon
-persist
-persisted
-persistence
-persistency
-persistent
-persistently
-persisting
-persists
-persnickety
-person
-persona
-personable
-personae
-personage
-personages
-personal
-personalities
-personality
-personalization
-personalize
-personalized
-personalizes
-personalizing
-personally
-personalty
-personate
-personification
-personified
-personifies
-personify
-personifying
-personnel
-persons
-perspective
-perspectives
-perspicacious
-perspicaciously
-perspicacity
-perspicuity
-perspicuous
-perspicuously
-perspiration
-perspire
-persuadable
-persuade
-persuaded
-persuader
-persuaders
-persuades
-persuading
-persuasion
-persuasions
-persuasive
-persuasively
-persuasiveness
-pert
-pertain
-pertained
-pertaining
-pertains
-Perth
-pertinacious
-pertinaciously
-pertinacity
-pertinence
-pertinency
-pertinent
-pertinently
-pertly
-pertness
-perturb
-perturbation
-perturbations
-perturbed
-pertussis
-Peru
-peruke
-perusal
-peruse
-perused
-peruser
-perusers
-peruses
-perusing
-Peruvian
-Peruvianize
-Peruvianizes
-Peruvians
-pervade
-pervaded
-pervades
-pervading
-pervasion
-pervasive
-pervasively
-pervasiveness
-perverse
-perversely
-perverseness
-perversion
-perversity
-perversive
-pervert
-perverted
-perverts
-pervious
-peseta
-peskily
-peskiness
-pesky
-peso
-pessimism
-pessimist
-pessimistic
-pessimistically
-pest
-pester
-pesticide
-pestiferous
-pestilence
-pestilent
-pestilential
-pestle
-pesto
-pests
-pet
-petal
-petaled
-petals
-petard
-petcock
-Pete
-petebox
-peter
-peterman
-Peters
-Petersburg
-Petersen
-Peterson
-petiole
-petit-bourgeois
-petite
-petition
-petitioned
-petitioner
-petitioning
-petitions
-Petkiewicz
-petrel
-petri
-petrifaction
-petrified
-petrify
-petrochemical
-petrodollar
-petrodollars
-petrol
-petrolatum
-petroleum
-petrologist
-petrology
-pets
-petted
-petter
-petters
-Pettibone
-petticoat
-petticoats
-pettifog
-pettifogger
-pettily
-pettiness
-petting
-pettish
-pettishly
-pettishness
-pettitoes
-petty
-petty-bourgeois
-petty-minded
-petulance
-petulant
-petulantly
-petunia
-Peugeot
-pew
-Pewaukee
-pewee
-pewit
-pews
-pewter
-peyote
-PFC
-pfennig
-Pfizer
-PG
-PG-13
-pH
-Phaedra
-phaeton
-phagocyte
-phalange
-phalanger
-phalanges
-phalanx
-phalli
-phallic
-phallus
-phantasm
-phantasmagoria
-phantasmal
-phantasy
-phantom
-phantoming
-phantoms
-Pharisaic
-Pharisaical
-Pharisee
-pharmaceutic
-pharmaceutical
-pharmaceuticals
-pharmaceutics
-pharmacist
-pharmacological
-pharmacologist
-pharmacology
-pharmacopeia
-pharmacopoeia
-pharmacy
-pharyngeal
-pharynges
-pharyngitis
-pharynx
-phase
-phased
-phasemeter
-phaseout
-phaser
-phasers
-phases
-phasing
-PhD
-pheasant
-pheasantry
-pheasants
-phellem
-Phelps
-phenacetin
-phenobarbital
-phenol
-phenomen
-phenomena
-phenomenal
-phenomenally
-phenomenological
-phenomenologically
-phenomenologies
-phenomenology
-phenomenon
-pheromone
-phew
-phi
-phial
-PHIGS
-Phil
-Philadelphia
-philander
-philanderer
-philandering
-philanthropic
-philanthropically
-philanthropist
-philanthropy
-philatelic
-philatelist
-philately
-Philco
-philharmonic
-Philip
-Philippe
-Philippians
-philippic
-Philippine
-Philippines
-Philistine
-Philistines
-philistinism
-Philistinize
-Philistinizes
-Phillies
-Phillip
-Phillips
-Philly
-philodendra
-philodendron
-philological
-philologist
-philology
-philosopher
-philosophers
-philosophic
-philosophical
-philosophically
-philosophies
-philosophize
-philosophized
-philosophizer
-philosophizers
-philosophizes
-philosophizing
-philosophy
-philter
-philtre
-Phipps
-phiz
-phlebitis
-phlegm
-phlegmatic
-phlegmatically
-phloem
-phlox
-phobia
-phobic
-Phobos
-phoebe
-Phoenicia
-Phoenician
-phoenix
-phonate
-phone
-phoned
-phoneme
-phonemes
-phonemic
-phonemically
-phones
-phonetic
-phonetically
-phonetician
-phoneticism
-phoneticist
-phonetics
-phonetism
-phoney
-phonic
-phonically
-phonics
-phoniness
-phoning
-phonodisc
-phonogram
-phonograph
-phonographic
-phonographs
-phonological
-phonologically
-phonologist
-phonology
-phonorecord
-phonotype
-phonotypical
-phonus-bolonus
-phony
-phooey
-phosgene
-phosphate
-phosphates
-phosphor
-phosphoresce
-phosphorescence
-phosphorescent
-phosphorescently
-phosphoric
-phosphorous
-phosphorus
-photo
-photo-cell
-photo-flash
-photo-offset
-photo-recording
-photo-zinkography
-photocamera
-photocell
-photocomposition
-photoconductor
-photocopied
-photocopier
-photocopiers
-photocopies
-photocopy
-photocopying
-photodiode
-photodiodes
-photoduplicate
-photoduplicator
-photoelectric
-photoelectrically
-photoengrave
-photoengraver
-photoengraving
-photofinishing
-photogenic
-photogenically
-photograph
-photographed
-photographer
-photographers
-photographic
-photographically
-photographing
-photographs
-photography
-photogravure
-photojournalism
-photojournalist
-photolithography
-photomask
-photomaster
-photometer
-photomicrocopy
-photomicrograph
-photomicrography
-photomontage
-photon
-photophone
-photoprint
-photoreceptor
-photos
-photosensitive
-photosenzor
-photosetting
-photostat
-photostatic
-photosynthesis
-photosynthesize
-photosynthetic
-phototelegraphy
-phototypesetter
-phototypesetters
-phototypesetting
-photozincography
-phrasal
-phrase
-phrase-book
-phrased
-phraseological
-phraseology
-phrases
-phrasing
-phrasings
-phrenetic
-phrenologist
-phrenology
-phthisical
-phthisis
-phyla
-phylactery
-Phyllis
-phylogeny
-phylum
-physic
-physical
-physically
-physicalness
-physicals
-physician
-physicians
-physicist
-physicists
-physics
-physiognomic
-physiognomy
-physiography
-physiologic
-physiological
-physiologically
-physiologist
-physiology
-physiotherapist
-physiotherapy
-physique
-phytoplankton
-pi
-piaffe
-pianissimo
-pianist
-piano
-pianoforte
-pianos
-piaster
-piastre
-piazza
-piazze
-pibroch
-pica
-picador
-picaresque
-picaroon
-picas
-Picasso
-picayune
-Piccadilly
-piccalilli
-piccolo
-pick
-pick-me-up
-pick-up
-pickaback
-pickax
-pickaxe
-picked
-picker
-picker-upper
-pickerel
-Pickering
-pickers
-picket
-picketed
-picketer
-picketers
-picketing
-pickets
-Pickett
-Pickford
-picking
-pickings
-pickle
-pickled
-pickles
-pickling
-picklock
-Pickman
-pickpocket
-picks
-picktooth
-pickup
-pickups
-picky
-picnic
-picnicked
-picnicker
-picnicking
-picnics
-picofarad
-picojoule
-picoprocessor
-picosecond
-picot
-Pict
-pictogram
-pictograph
-pictographic
-pictography
-pictorial
-pictorially
-picture
-picture-book
-picture-gallery
-picture-phone
-picture-postcard
-picture-writing
-pictured
-pictures
-picturesque
-picturesquely
-picturesqueness
-picturing
-PID
-piddle
-piddling
-piddly
-pidgin
-pie
-pie-eyed
-piebald
-piece
-piece-rate
-pieced
-piecemeal
-pieces
-piecewise
-piecework
-pieceworker
-piecing
-pied
-pied-a-terre
-Piedfort
-Piedmont
-pieds-a-terre
-pier
-pierage
-pierce
-pierced
-pierces
-piercing
-piercingly
-Pierre
-piers
-Pierson
-pies
-piety
-piezoelectric
-piffle
-piffling
-pig
-pig-cote
-pig-headed
-pig-iron
-pig-out
-pig-sty
-pigeon
-pigeon-hearted
-pigeon-toed
-pigeonhole
-pigeons
-piggery
-piggish
-piggishly
-piggishness
-piggy
-piggy-bank
-piggyback
-piggybacked
-piggybacking
-piggybacks
-pigheaded
-pigheadedly
-pigheadedness
-piglet
-pigling
-pigment
-pigmentation
-pigmented
-pigments
-pigmy
-pignut
-pigpen
-pigs
-pigskin
-pigsty
-pigtail
-pike
-pikeman
-piker
-pikes
-pikestaff
-pilaf
-pilaff
-pilaster
-Pilate
-pilau
-pilchard
-pile
-pile-driver
-pile-plank
-pile-up
-piled
-pilers
-piles
-pileup
-pilfer
-pilferage
-pilferer
-pilgrim
-pilgrimage
-pilgrimages
-pilgrims
-piling
-pilings
-pill
-pillage
-pillaged
-pillager
-pillar
-pillar-box
-pillared
-pillars
-pillbox
-pillion
-pillory
-pillow
-pillow-case
-pillow-slip
-pillowcase
-pillows
-pillowslip
-pills
-Pillsbury
-pilose
-pilot
-pilothouse
-piloting
-pilots
-pilous
-pimento
-pimiento
-pimp
-pimpernel
-pimple
-pimpled
-pimply
-pin
-pin-artist
-pin-case
-pin-cushion
-pin-point
-pin-striped
-pin-up
-pinafore
-pinata
-pinball
-pinboard
-pince-nez
-pincer
-pincers
-pinch
-pinch-hit
-pinch-hitter
-pinchbeck
-pinched
-pinches
-pinchgut
-pinching
-pincushion
-pine
-pine-apple
-pine-martin
-pine-tree
-pine-wood
-pineapple
-pineapples
-pined
-Pinehurst
-pines
-piney
-pinfeather
-ping
-ping-pong
-pinguid
-pinhead
-pinhold
-pinhole
-pining
-pinion
-pink
-pink-eyed
-pinker
-pinkest
-pinkeye
-pinkie
-pinkish
-pinkly
-pinkness
-pinko
-pinks
-pinky
-pinnace
-pinnacle
-pinnacles
-pinnate
-pinned
-pinning
-pinnings
-pinochle
-pinocle
-pinon
-pinpoint
-pinpointing
-pinpoints
-pinprick
-pins
-pinscher
-pinsetter
-Pinsky
-pinstripe
-pinstriped
-pint
-pint-size
-pint-sized
-Pinter
-pintle
-pintle-hook
-pinto
-pints
-pinup
-pinwheel
-piny
-pinyon
-pion
-pioneer
-pioneered
-pioneering
-pioneers
-Piotr
-pious
-piously
-piousness
-pip
-pip-line
-pip-squeak
-pip-stick
-pip-tree
-pipe
-pipe-tongs
-piped
-pipeline
-pipelined
-pipelines
-pipelining
-piper
-pipers
-pipes
-Pipestone
-pipette
-piping
-pipistrel
-pipistrelle
-pipit
-pipkin
-pippin
-pipsqueak
-piquancy
-piquant
-piquantly
-pique
-piquet
-piracy
-Piraeus
-piragua
-piranha
-pirate
-pirates
-piratic
-piratical
-piratically
-pirogi
-piroshki
-pirouette
-pis
-Pisa
-Piscataway
-piscatorial
-piscatory
-Pisces
-pish
-pismire
-piss
-pissed
-pisser
-pisspoor
-pistachio
-pistil
-pistillate
-pistils
-pistol
-pistol-whip
-pistols
-piston
-piston-rod
-pistons
-pit
-pit-a-pat
-pita
-pitapat
-pitch
-pitch-black
-pitch-dark
-pitch-dark(ness)
-pitch-darkness
-pitchblende
-pitched
-pitcher
-pitchers
-pitches
-pitchfork
-pitching
-pitchman
-pitchy
-piteous
-piteously
-piteousness
-pitfall
-pitfalls
-pith
-pithed
-pithes
-pithier
-pithiest
-pithily
-pithiness
-pithing
-pithy
-pitiable
-pitiably
-pitied
-pitier
-pitiers
-pities
-pitiful
-pitifully
-pitiless
-pitilessly
-pitilessness
-pitman
-Pitney
-piton
-pits
-Pitt
-pittance
-pitted
-pitter-patter
-pitting
-Pittsburgh
-Pittsburghers
-Pittsfield
-Pittston
-pituitary
-pity
-pitying
-pityingly
-Pius
-pivot
-pivotal
-pivoted
-pivoting
-pivots
-pix
-pixel
-pixels
-pixie
-pixilated
-pixy
-Pizarro
-pizazz
-pizza
-pizzazz
-pizzeria
-pizzicato
-placability
-placable
-placard
-placards
-placate
-placation
-placatory
-place
-placebo
-placed
-placeholder
-placekick
-placement
-placements
-placenta
-placentae
-placental
-placer
-places
-placid
-placidity
-placidly
-placing
-placket
-plagiarism
-plagiarist
-plagiarize
-plagiarizer
-plagiary
-plague
-plagued
-plagues
-plaguing
-plaguy
-plaice
-plaid
-plaids
-plain
-plain-clothes
-plain-hearted
-plain-spoken
-plain-truth
-plainclothes
-plainclothesman
-plainer
-plainest
-Plainfield
-plainly
-plainness
-plains
-plainsman
-plainsong
-plainspoken
-plaint
-plaintext
-plaintexts
-plaintiff
-plaintiffs
-plaintive
-plaintively
-plaintiveness
-Plainview
-plait
-plaits
-plan
-planar
-planarity
-Planck
-plane
-planed
-planeload
-planer
-planers
-planes
-planet
-planetaria
-planetarium
-planetary
-planetesimal
-planetoid
-planets
-plangency
-plangent
-planing
-planish
-plank
-plank-bed
-planking
-planks
-plankton
-planned
-plannedness
-planner
-planners
-planning
-Plano
-planoconcave
-planoconvex
-planography
-plans
-plant
-plant-louse
-plantain
-plantar
-plantation
-plantations
-planted
-planter
-planters
-planting
-plantings
-plantlike
-plants
-plap
-plaque
-plaquette
-plash
-plasm
-plasma
-plasmatic
-plaster
-plasterboard
-plastered
-plasterer
-plastering
-plasters
-plastic
-plasticity
-plasticize
-plasticizer
-plastics
-plastron
-plat
-plate
-plate-basket
-plate-cover
-plate-glass
-plate-mark
-plate-rack
-plate-stand
-plateau
-plateaus
-plateaux
-plated
-plateful
-platelet
-platelets
-platen
-platens
-plates
-platform
-platforms
-plating
-platinum
-platitude
-platitudinous
-Plato
-Platonic
-Platonism
-Platonist
-platoon
-Platte
-platter
-platters
-Platteville
-platy
-platypi
-platypus
-platys
-plaudit
-plaudits
-plausibility
-plausible
-plausibly
-play
-play-act
-play-by-play
-play-ground
-play-off
-playable
-playact
-playacting
-playback
-playbill
-playboy
-played
-player
-players
-playfellow
-playful
-playfully
-playfulness
-playgirl
-playgoer
-playground
-playgrounds
-playhouse
-playing
-playing-cards
-playing-field
-playmate
-playmates
-playoff
-playout
-playpen
-playroom
-plays
-plaything
-playthings
-playtime
-playwright
-playwrights
-playwriting
-plaza
-plea
-plea-bargain
-plead
-pleaded
-pleader
-pleading
-pleads
-pleas
-pleasant
-pleasantly
-pleasantness
-pleasantry
-please
-pleased
-pleases
-pleasing
-pleasingly
-pleasurable
-pleasurably
-pleasure
-pleasure-ground
-pleasureful
-pleasures
-pleat
-pleated
-plebe
-plebeian
-plebian
-plebiscite
-plebiscites
-plectra
-plectrum
-pled
-pledge
-pledged
-pledger
-pledget
-Pleiades
-Pleistocene
-plenary
-plenipotentiary
-plenitude
-plenteous
-plentiful
-plentifully
-plenty
-plenum
-pleonasm
-plethora
-pleura
-pleurae
-pleurisy
-Plexiglas
-plexiglass
-plexure
-plexus
-pliability
-pliable
-pliancy
-pliant
-plied
-pliers
-plies
-plight
-Plimsoll
-plinth
-Pliny
-Pliocene
-PLO
-plod
-plodder
-plodding
-plop
-plot
-plots
-plotted
-plotter
-plotters
-plotting
-plough
-plough-beam
-plough-boy
-plough-land
-plough-share
-plough-tail
-plough-wright
-plougher
-ploughman
-ploughshare
-plover
-plow
-plowed
-plower
-plowing
-plowman
-plows
-plowshare
-ploy
-ploys
-pluck
-plucked
-pluckily
-pluckiness
-plucking
-plucks
-plucky
-plug
-plug-and-go
-plug-in
-plug-ugly
-plugboard
-pluggable
-plugged
-plugging
-plugs
-plum
-plumage
-plumb
-plumb-line
-plumbago
-plumbed
-plumbeous
-plumber
-plumbing
-plumbs
-plume
-plumed
-plumes
-plummet
-plummeting
-plump
-plumped
-plumply
-plumpness
-plums
-plumy
-plunder
-plundered
-plunderer
-plunderers
-plundering
-plunders
-plunge
-plunged
-plunger
-plungers
-plunges
-plunging
-plunk
-pluperfect
-plural
-pluralism
-pluralist
-pluralistic
-plurality
-pluralization
-pluralize
-plurals
-plus
-pluses
-plush
-plushly
-plushness
-plushy
-Plutarch
-Pluto
-plutocracy
-plutocrat
-plutocratic
-plutonium
-pluvial
-pluvious
-ply
-plyer
-Plymouth
-plywood
-PMS
-pneumatic
-pneumatically
-pneumatics
-pneumonia
-po-hunter
-poach
-poacher
-poaches
-Pocahontas
-pock
-pocked
-pocket
-pocket-book
-pocket-handkerchief
-pocket-knife
-pocket-money
-pocketbook
-pocketbooks
-pocketed
-pocketful
-pocketing
-pocketknife
-pocketknives
-pockets
-pockmark
-pockmarked
-pockwood
-pocky
-Pocono
-Poconos
-pod
-Podgorica
-podgy
-podia
-podiatrist
-podiatry
-podium
-pods
-Podunk
-Poe
-poem
-poems
-poesy
-poet
-poetaster
-poetess
-poetic
-poetical
-poetically
-poeticism
-poetics
-poetize
-poetries
-poetry
-poets
-pogey
-pogo
-pogrom
-poi
-poignancy
-poignant
-poignantly
-Poincare
-poinciana
-Poindexter
-poinsettia
-point
-point-blank
-point-device
-point-duty
-pointblank
-pointed
-pointedly
-pointedness
-pointer
-pointers
-pointillism
-pointillist
-pointing
-pointless
-pointlessly
-pointlessness
-points
-pointsman
-pointy
-poise
-poised
-poises
-poison
-poison-fang
-poison-gas
-poison-nut
-poisoned
-poisoner
-poisoning
-poisonous
-poisonously
-poisonousness
-poisons
-Poisson
-poke
-poke-pudding
-poked
-poker
-poker-faced
-pokerface
-pokes
-pokey
-poking
-poky
-pol
-polaire
-Poland
-polar
-Polaris
-polarities
-polarity
-polarization
-polarize
-polarizer
-Polaroid
-pole
-pole-cat
-pole-hedge
-pole-star
-pole-vault
-pole-vaulter
-polecat
-poled
-polemic
-polemical
-polemically
-polemicist
-polemics
-poles
-polestar
-police
-police-court
-police-office
-police-station
-policed
-policeman
-policemen
-polices
-policewoman
-policies
-policing
-policlinic
-policy
-policyholder
-poling
-polio
-poliomyelitis
-polish
-polished
-polisher
-polishers
-polishes
-polishing
-polite
-politely
-politeness
-politer
-politesse
-politest
-politic
-political
-politically
-politician
-politicians
-politicization
-politicize
-politicized
-politicking
-politico
-politics
-polity
-Polk
-polka
-polka-dot
-poll
-poll-day
-poll-degree
-poll-tax
-pollack
-pollard
-polled
-pollen
-pollinate
-pollination
-pollinator
-polling
-polliwog
-polloi
-polls
-pollster
-pollutant
-pollute
-polluted
-polluter
-pollutes
-polluting
-pollution
-Pollux
-pollywog
-polo
-polonaise
-polonium
-polony
-poltergeist
-poltroon
-poltroonery
-poly-
-polyalphabetic
-polyandrous
-polyandry
-polyanthus
-polychromy
-polyclinic
-polyester
-polyethylene
-polygamist
-polygamous
-polygamy
-polyglot
-polygon
-polygonal
-polygons
-polygraph
-polygraphy
-polyhedra
-polyhedral
-polyhedron
-Polyhymnia
-polyline
-polymarker
-polymath
-polymer
-polymeric
-polymerization
-polymerize
-polymers
-polymorphic
-Polynesia
-Polynesian
-polynomial
-polynomials
-polyp
-Polyphemus
-polyphonic
-polyphony
-polypi
-polypropylene
-polypus
-polypuses
-polysemy
-polystyrene
-polysyllabic
-polysyllable
-polytechnic
-polyterm
-polytheism
-polytheist
-polytheistic
-polythene
-polyunsaturated
-polyurethane
-polyvalent
-polyvinyl
-pom-pom
-pomace
-pomade
-pomander
-pomatum
-pome
-pomegranate
-pomelo
-Pomerania
-Pomeranian
-pomiculture
-pommel
-pomology
-Pomona
-pomp
-pompadour
-pompano
-Pompeian
-Pompeii
-Pompey
-pompom
-pompon
-pomposity
-pompous
-pompously
-pompousness
-Ponce
-Ponchartrain
-poncho
-pond
-ponder
-ponderability
-ponderable
-ponderables
-pondered
-ponderer
-pondering
-ponderous
-ponderously
-ponderousness
-ponders
-ponds
-pone
-pong
-pongee
-poniard
-ponies
-Pontchartrain
-Pontiac
-Pontic
-pontiff
-pontific
-pontifical
-pontifically
-pontificate
-pontoon
-pony
-ponytail
-pooch
-pood
-poodle
-poof
-pooh
-pooh-pooh
-pool
-pool-room
-Poole
-pooled
-pooling
-poolroom
-pools
-Poona
-poop
-pooped
-poor
-poor-house
-poor-law
-poor-mouth
-poorboy
-poorer
-poorest
-poorhouse
-poorly
-poorness
-pop
-pop-eyed
-pop-gun
-pop-up
-popcorn
-pope
-Popek
-Popeks
-popgun
-popinjay
-popish
-poplar
-poplin
-Popocatepetl
-popover
-poppa
-popped
-popper
-poppet
-poppies
-popping
-popple
-poppy
-poppy-head
-poppycock
-pops
-Popsicle
-Popsicles
-populace
-popular
-popularity
-popularization
-popularize
-popularized
-popularizes
-popularizing
-popularly
-populate
-populated
-populates
-populating
-population
-populations
-populism
-populist
-populous
-populousness
-poplenina
-porcelain
-porch
-porches
-porcine
-porcupine
-porcupines
-pore
-pored
-pores
-porgy
-poring
-pork
-pork-butcher's
-pork-pie
-porker
-porkling
-porky
-porn
-porno
-pornographer
-pornographic
-pornographically
-pornography
-porosity
-porous
-porousness
-porphyritic
-porphyry
-porpoise
-porridge
-porringer
-port
-Port-au-Prince
-port-hole
-Port-of-Spain
-portability
-portable
-portage
-portal
-portals
-portcullis
-Porte
-ported
-portend
-portended
-portending
-portends
-portent
-portentous
-portentously
-porter
-porter-house
-porterage
-porterhouse
-porters
-portfolio
-portfolios
-porthole
-portholes
-Portia
-portico
-portiere
-porting
-portion
-portions
-Portland
-portliness
-portly
-portmanteau
-portmanteaux
-Porto
-portrait
-portraitist
-portraits
-portraiture
-portray
-portrayal
-portrayed
-portraying
-portrays
-ports
-Portsmouth
-Portugal
-Portuguese
-portulaca
-poruchy
-pose
-posed
-Poseidon
-poser
-posers
-poses
-poseur
-posh
-posing
-posit
-posited
-positing
-position
-positional
-positioned
-positioner
-positioning
-positions
-positive
-positively
-positiveness
-positives
-positivism
-positron
-posits
-Posner
-posse
-possess
-possessed
-possesses
-possessing
-possession
-possessional
-possessions
-possessive
-possessively
-possessiveness
-possessor
-possessors
-possibilities
-possibility
-possible
-possibly
-possum
-possums
-post
-post-
-post-bag
-post-bill
-post-box
-post-boy
-post-chaise
-post-coach
-post-date
-post-editing
-post-free
-Post-it
-post-mortem
-post-office
-post-war
-postage
-postal
-postcard
-postcondition
-postconsonantal
-postcoordination
-postdate
-postdoctoral
-posted
-poster
-posterior
-posteriori
-posteriority
-posterity
-postern
-posters
-postface
-POSTFAX
-postfix
-postgraduate
-posthaste
-posthumous
-posthumously
-posthypnotic
-postilion
-postillion
-postindustrial
-posting
-postlude
-postman
-postmark
-postmaster
-postmasters
-postmeridian
-postmistress
-postmodern
-postmortem
-postnasal
-postnatal
-postoperative
-postorder
-postpaid
-postpartum
-postpone
-postponed
-postponement
-postponing
-postprandial
-postprocess
-postprocessing
-postprocessor
-posts
-postscript
-postscripts
-postulant
-postulate
-postulated
-postulates
-postulating
-postulation
-postulations
-posture
-postures
-postwar
-postwoman
-posy
-pot
-pot-boiler
-pot-boy
-pot-hat
-pot-herb
-pot-hole
-pot-hook
-pot-house
-pot-ladle
-pot-lid
-pot-luck
-pot-pan
-pot-sherd
-potability
-potable
-potables
-potash
-potassium
-potation
-potato
-potato-box
-potato-trap
-potatoes
-potbellied
-potbelly
-potboiler
-Potemkin
-potency
-potent
-potentate
-potentates
-potential
-potentialities
-potentiality
-potentially
-potentials
-potentiating
-potentiometer
-potentiometers
-potently
-potful
-pothead
-pother
-potherb
-potholder
-pothole
-pothook
-potion
-potlatch
-potlicker
-potluck
-Potomac
-potpie
-potpourri
-pots
-Potsdam
-potsherd
-potshot
-pottage
-Pottawatomie
-potted
-potter
-potters
-pottery
-potting
-Potts
-potty
-pouch
-pouches
-Poughkeepsie
-poult
-poulterer
-poulterer's
-poultice
-poultry
-pounce
-pounced
-pounces
-pouncing
-pound
-poundage
-pounded
-pounder
-pounders
-pounding
-pounds
-pour
-pourability
-poured
-pourer
-pourers
-pouring
-pours
-Poussin
-Poussins
-pout
-pouted
-pouter
-pouting
-pouts
-poverty
-poverty-line
-poverty-stricken
-POW
-pow-wow
-powder
-powder-magazine
-powder-mine
-powder-puff
-powdered
-powdering
-powderpuff
-powders
-powdery
-Powell
-power
-power-play
-powerboat
-powered
-powerful
-powerfully
-powerfulness
-powerhouse
-powering
-powerless
-powerlessly
-powerlessness
-Powers
-Powhatan
-powwow
-pox
-Poynting
-Poznan
-pP
-PPS
-practicability
-practicable
-practicably
-practical
-practicalities
-practicality
-practically
-practice
-practiced
-practices
-practician
-practicing
-practicum
-practile
-practise
-practised
-practitioner
-practitioners
-Pradesh
-Prado
-praetor
-praetorian
-pragmatic
-pragmatical
-pragmatically
-pragmaticism
-pragmatics
-pragmatism
-pragmatist
-Prague
-Praguer
-Praia
-prairie
-praise
-praised
-praiseful
-praiser
-praisers
-praises
-praiseworthiness
-praiseworthy
-praising
-praisingly
-praline
-pram
-prance
-pranced
-prancer
-prancing
-prancingly
-prank
-prankful
-prankish
-pranks
-prankster
-praseodymium
-prate
-prater
-pratfall
-praties
-Pratt
-prattle
-prattler
-Prattville
-Pravda
-prawn
-pray
-prayed
-prayer
-prayer-book
-prayer-wheel
-prayerful
-prayerfully
-prayers
-praying
-PRC
-pre
-pre-
-pre-authorization
-pre-capitalistic
-pre-Columbian
-pre-conscription
-pre-date
-pre-edit
-pre-editing
-pre-eminence
-pre-eminent
-pre-eminently
-pre-empt
-pre-exist
-pre-Marxist
-pre-mastering
-pre-Munich
-pre-plan
-pre-printed
-pre-processing
-pre-requisite
-pre-war
-preach
-preached
-preacher
-preachers
-preaches
-preaching
-preachment
-preachy
-preadolescence
-preallocate
-preallocated
-preallocating
-preamble
-preambles
-preapprehension
-prearrange
-prearranged
-prearrangement
-preassign
-preassigned
-preassigning
-preassigns
-prebend
-prebinding
-Precambrian
-precancel
-precancerous
-precapitalist
-precarious
-precariously
-precariousness
-precatory
-precaution
-precautionary
-precautions
-precede
-preceded
-precedence
-precedences
-precedent
-precedented
-precedents
-precedes
-preceding
-precentor
-precept
-preceptor
-precepts
-precess
-precession
-precinct
-precincts
-preciosity
-precious
-preciously
-preciousness
-precipice
-precipitable
-precipitance
-precipitant
-precipitate
-precipitated
-precipitately
-precipitateness
-precipitates
-precipitating
-precipitation
-precipitous
-precipitously
-precis
-precise
-precisely
-preciseness
-precisian
-precision
-precisions
-preclude
-precluded
-precludes
-precluding
-preclusion
-preclusive
-precocious
-precociously
-precociousness
-precocity
-precognition
-precognitive
-precolonial
-precompute
-precomputed
-precomputing
-preconceive
-preconceived
-preconception
-preconceptions
-precondition
-preconditioned
-preconditions
-preconsign
-precook
-precoordination
-precursor
-precursors
-precursory
-predacious
-predate
-predated
-predates
-predating
-predator
-predatory
-predecease
-predecessor
-predecessors
-predefine
-predefined
-predefines
-predefining
-predefinition
-predefinitions
-predesignate
-predestinate
-predestination
-predestine
-predestined
-predetermination
-predetermine
-predetermined
-predeterminer
-predetermines
-predetermining
-predial
-predicable
-predicament
-predicate
-predicated
-predicates
-predicating
-predication
-predications
-predicative
-predict
-predictability
-predictable
-predictably
-predicted
-predicting
-prediction
-predictions
-predictive
-predictor
-predicts
-predigest
-predilection
-predilections
-predispose
-predisposed
-predisposition
-predominance
-predominant
-predominantly
-predominate
-predominated
-predominately
-predominates
-predominating
-predomination
-preemie
-preeminence
-preeminent
-preeminently
-preempt
-preempted
-preempting
-preemption
-preemptive
-preemptor
-preempts
-preen
-preexist
-preexistence
-preexisting
-prefab
-prefabricate
-prefabricated
-prefabrication
-preface
-prefaced
-prefaces
-prefacing
-prefatory
-prefect
-prefecture
-prefer
-preferable
-preferably
-preference
-preferences
-preferential
-preferentially
-preferment
-preferred
-preferring
-prefers
-prefigure
-prefilling
-prefix
-prefixed
-prefixes
-prefixing
-preform
-preformatting
-pregnancy
-pregnant
-preheat
-prehensile
-prehension
-prehistoric
-prehistorical
-prehistorically
-prehistory
-preinitialize
-preinitialized
-preinitializes
-preinitializing
-prejudge
-prejudged
-prejudgment
-prejudice
-prejudiced
-prejudices
-prejudicial
-prekindergarten
-prelacy
-prelate
-prelect
-prelection
-preliminaries
-preliminary
-prelims
-prelisting
-preliterate
-preload
-prelude
-preludes
-prelusive
-premarital
-premark
-premature
-prematurely
-prematurity
-premed
-premedical
-premeditate
-premeditated
-premeditation
-premenstrual
-premier
-premiere
-premiers
-premiership
-premise
-premises
-premiss
-premium
-premiums
-premix
-premolar
-premonish
-premonition
-premonitory
-prenatal
-prenatally
-prentice
-Prenticed
-Prenticing
-prenuptial
-preoccupation
-preoccupied
-preoccupies
-preoccupy
-preoperative
-preopinion
-preordain
-preordained
-preordination
-prep
-prepackage
-prepaid
-preparation
-preparations
-preparative
-preparatives
-preparatory
-prepare
-prepared
-preparedness
-prepares
-preparing
-prepay
-prepayment
-prepend
-prepended
-prepending
-prepense
-preponderance
-preponderant
-preponderantly
-preponderate
-preposition
-prepositional
-prepositionally
-prepositions
-prepossess
-prepossessing
-prepossession
-preposterous
-preposterously
-preppie
-preppy
-preprint
-preprocessed
-preprocessing
-preprocessor
-preprocessors
-preproduction
-preprogrammed
-prepubescence
-prepubescent
-prepublication
-prepuce
-prepunching
-prequel
-prerecord
-prerecorded
-preregister
-preregistration
-prerelease
-prerequisite
-prerequisites
-prerogative
-prerogatives
-presage
-presbyopia
-presbyter
-presbyterian
-Presbyterianism
-Presbyterianize
-Presbyterianizes
-presbytery
-preschool
-preschooler
-prescience
-prescient
-presciently
-Prescott
-prescribe
-prescribed
-prescribes
-prescript
-prescription
-prescriptions
-prescriptive
-prescriptively
-preselect
-preselected
-preselecting
-preselection
-preselector
-preselects
-presence
-presence-chamber
-presences
-present
-present-day
-presentable
-presentably
-presentation
-presentations
-presented
-presentee
-presenter
-presentiment
-presenting
-presently
-presentment
-presentness
-presents
-presequenced
-preservable
-preservation
-preservationist
-preservations
-preservative
-preserve
-preserved
-preserver
-preservers
-preserves
-preserving
-preset
-preshrank
-preshrink
-preshrunk
-preside
-presided
-presidency
-president
-presidential
-presidents
-presides
-presidia
-presiding
-presidium
-Presley
-presort
-presorting
-press
-press-agency
-press-cutting
-press-mark
-press-office
-press-proof
-press-reader
-press-release
-press-room
-pressed
-presser
-presses
-pressing
-pressingly
-pressings
-pressman
-pressure
-pressure-height
-pressured
-pressures
-pressuring
-pressurise
-pressurization
-pressurize
-pressurized
-pressurizer
-presswurst
-PRESTEL
-prestidigitate
-prestidigitation
-prestige
-prestigious
-presto
-Preston
-prestore
-prestressing
-presumable
-presumably
-presume
-presumed
-presumes
-presuming
-presumption
-presumptions
-presumptive
-presumptuous
-presumptuously
-presumptuousness
-presuppose
-presupposed
-presupposes
-presupposing
-presupposition
-pretax
-preteen
-pretence
-pretend
-pretended
-pretender
-pretenders
-pretending
-pretends
-pretense
-pretenses
-pretension
-pretensions
-pretentious
-pretentiously
-pretentiousness
-preterit
-preterite
-pretermission
-pretermit
-preternatural
-preternaturally
-pretest
-pretext
-pretexts
-Pretoria
-Pretorian
-prettier
-prettiest
-prettify
-prettily
-prettiness
-pretty
-pretty-boy
-pretzel
-prevail
-prevailed
-prevailing
-prevailingly
-prevails
-prevalence
-prevalent
-prevalently
-prevalidation
-prevaricate
-prevarication
-prevaricator
-prevent
-preventable
-preventably
-preventative
-prevented
-preventible
-preventing
-prevention
-preventive
-preventives
-prevents
-preview
-previewed
-previewing
-previews
-previous
-previousle
-previously
-prevision
-prevue
-prewar
-prey
-preyed
-preying
-preys
-Priam
-priapic
-price
-price-current
-price-cut
-price-list
-priced
-priceless
-pricer
-pricers
-prices
-pricey
-pricing
-prick
-prick-down
-pricked
-pricker
-pricking
-prickle
-prickliness
-prickly
-pricks
-pricy
-pride
-prided
-prideful
-pridefully
-prides
-priding
-prie-dieu
-prier
-priest
-priestess
-priesthood
-Priestley
-priestliness
-priestly
-prig
-priggish
-priggishness
-prim
-prima
-primacy
-primaeval
-primal
-primaries
-primarily
-primarius
-primary
-primate
-primates
-prime
-prime-number
-primed
-primeness
-primer
-primers
-primes
-primeval
-priming
-primitive
-primitively
-primitiveness
-primitives
-primly
-primness
-primogenitor
-primogeniture
-primordial
-primordially
-primp
-primrose
-primula
-prince
-princedom
-princeliness
-princely
-princes
-princess
-princesses
-Princeton
-principal
-principalities
-principality
-principally
-principals
-Principe
-Principia
-principle
-principled
-principles
-prink
-print
-print-ink
-print-machine
-print-office
-print-press
-print-run
-print-seller
-print-works
-printable
-printably
-printball
-printed
-printer
-printers
-printery
-printing
-printing-ink
-printing-press
-printout
-prints
-prior
-prioress
-priori
-priorities
-prioritize
-priority
-priory
-Pripet
-Pripyat
-Priscilla
-prise
-prism
-prismatic
-prisms
-prison
-prisoner
-prisoners
-prisons
-prissily
-prissiness
-prissy
-pristine
-Pritchard
-prithee
-privacies
-privacy
-private
-privateer
-privately
-privateness
-privates
-privation
-privations
-privatise
-privative
-privatization
-privatize
-privet
-privies
-privilege
-privileged
-privileges
-privily
-priviti
-privy
-prize
-prize-fighter
-prized
-prizefight
-prizefighter
-prizefighting
-prizeman
-prizer
-prizers
-prizes
-prizewinner
-prizewinning
-prizing
-pro
-pro-
-pro-am
-pro-and-con
-pro-capitalist
-pro-choice
-pro-choicer
-pro-imperialist
-pro-life
-pro-lifer
-probabilistic
-probabilistically
-probabilities
-probability
-probable
-probably
-probate
-probated
-probates
-probating
-probation
-probational
-probationary
-probationer
-probative
-probe
-probed
-probes
-probing
-probings
-probity
-problem
-problematic
-problematical
-problematically
-problems
-proboscides
-proboscis
-procaine
-procedural
-procedurally
-procedure
-procedures
-proceed
-proceed-to-select
-proceeded
-proceeding
-proceedings
-proceeds
-process
-processed
-processes
-processing
-procession
-processional
-processor
-processors
-proclaim
-proclaimed
-proclaimer
-proclaimers
-proclaiming
-proclaims
-proclamation
-proclamations
-proclivities
-proclivity
-proconsul
-proconsular
-procotols
-procrastinate
-procrastinated
-procrastinates
-procrastinating
-procrastination
-procrastinator
-procreate
-procreation
-procreative
-procreator
-Procrustean
-Procrusteanize
-Procrusteanizes
-Procrustes
-Procter
-proctor
-procumbent
-procurabe
-procurable
-procuration
-procurator
-procure
-procured
-procurement
-procurements
-procurer
-procurers
-procures
-procuring
-Procyon
-prod
-prodigal
-prodigality
-prodigally
-prodigious
-prodigiously
-prodigy
-produce
-produced
-producer
-producers
-produces
-producible
-producing
-product
-production
-productions
-productive
-productively
-productiveness
-productivity
-products
-proem
-prof
-Prof.
-profanation
-profane
-profanely
-profaneness
-profanity
-profess
-professed
-professedly
-professes
-professing
-profession
-professional
-professionalism
-professionalization
-professionalize
-professionally
-professionals
-professions
-professor
-professorial
-professorially
-professors
-professorship
-proffer
-proffered
-proffers
-proficience
-proficiency
-proficient
-proficiently
-profile
-profiled
-profiles
-profiling
-profit
-profitability
-profitable
-profitably
-profited
-profiteer
-profiteering
-profiteers
-profiterole
-profiting
-profitless
-profits
-profitted
-profligacy
-profligate
-profligately
-profound
-profoundest
-profoundly
-profoundness
-profundity
-profuse
-profusely
-profuseness
-profusion
-prog
-progenitor
-progeniture
-progeny
-progesterone
-prognathous
-prognoses
-prognosis
-prognostic
-prognosticate
-prognostication
-prognosticator
-program
-programer
-programmability
-programmable
-programmatic
-programmatics
-programmation
-programme
-programmed
-programmer
-programmer-analyst
-programmers
-programming
-programs
-progress
-progressed
-progresses
-progressing
-progression
-progressions
-progressive
-progressively
-progressiveness
-prohibit
-prohibited
-prohibiting
-prohibition
-prohibitionist
-prohibitions
-prohibitive
-prohibitively
-prohibitory
-prohibits
-project
-projected
-projectile
-projecting
-projection
-projectionist
-projections
-projective
-projectively
-projector
-projectors
-projects
-projecture
-Prokofieff
-Prokofiev
-prolapse
-prolate
-prolegomena
-prolegomenon
-proletarian
-proletariat
-proletary
-proleenina
-proliferate
-proliferated
-proliferates
-proliferating
-proliferation
-prolific
-prolifically
-prolix
-prolixity
-prolixly
-prolog
-prologue
-prolong
-prolongate
-prolongation
-prolonged
-prolonging
-prolongs
-prom
-promenade
-promenades
-Promethean
-Prometheus
-promethium
-prominence
-prominency
-prominent
-prominently
-promiscuity
-promiscuous
-promiscuously
-promise
-promise-breaker
-promised
-promises
-promising
-promisingly
-promissory
-promo
-promontory
-promote
-promoted
-promoter
-promoters
-promotes
-promoting
-promotion
-promotional
-promotions
-prompt
-prompt-book
-prompt-box
-prompted
-prompter
-promptest
-prompting
-promptings
-promptitude
-promptly
-promptness
-prompts
-promulgate
-promulgated
-promulgates
-promulgating
-promulgation
-promulgator
-prone
-proneness
-prong
-pronged
-pronghorn
-prongs
-pronominal
-pronoun
-pronounce
-pronounceable
-pronounced
-pronouncement
-pronouncements
-pronounces
-pronouncing
-pronouns
-pronto
-pronuclear
-pronunciation
-pronunciations
-proof
-proof-copy
-proof-pulling
-proof-reader
-proof-run
-proofread
-proofreader
-proofreading
-proofs
-proofsheet
-prop
-propaedeutic
-propaedeutical
-propaganda
-propagandist
-propagandize
-propagate
-propagated
-propagates
-propagating
-propagation
-propagations
-propagator
-propane
-propel
-propellant
-propelled
-propellent
-propeller
-propellers
-propelling
-propels
-propensity
-proper
-properly
-properness
-propertied
-properties
-propertiless
-property
-prophecies
-prophecy
-prophesied
-prophesier
-prophesies
-prophesy
-prophet
-prophetess
-prophetic
-prophetical
-prophetically
-prophetize
-prophets
-prophylactic
-prophylaxes
-prophylaxis
-propinquity
-propitiable
-propitiate
-propitiation
-propitiator
-propitiatory
-propitious
-propitiously
-propjet
-proponent
-proponents
-proportion
-proportional
-proportionally
-proportionate
-proportionately
-proportioned
-proportioning
-proportionment
-proportions
-propos
-proposal
-proposals
-propose
-proposed
-proposer
-proposes
-proposing
-proposition
-propositional
-propositionally
-propositioned
-propositioning
-propositions
-propound
-propounded
-propounding
-propounds
-proprietary
-proprieties
-proprietor
-proprietorial
-proprietors
-proprietorship
-proprietress
-propriety
-props
-propulsion
-propulsions
-propulsive
-prorate
-prorated
-prorates
-prorogation
-prorogue
-pros
-prosaic
-prosaically
-prosaist
-proscenia
-proscenium
-prosciutto
-proscribe
-proscription
-prose
-prosecute
-prosecuted
-prosecutes
-prosecuting
-prosecution
-prosecutions
-prosecutor
-proselyte
-proselytism
-proselytize
-proselytized
-proselytizer
-proselytizes
-proselytizing
-Proserpine
-prosodic
-prosodics
-prosody
-prospect
-prospected
-prospecting
-prospection
-prospections
-prospective
-prospectively
-prospectives
-prospector
-prospectors
-prospects
-prospectus
-prosper
-prospered
-prospering
-prosperity
-prosperous
-prosperously
-prospers
-prossi
-prostate
-prostheses
-prosthesis
-prosthetic
-prostitute
-prostitution
-prostrate
-prostration
-prosy
-protactinium
-protagonist
-protean
-protect
-protected
-protecting
-protection
-protectionism
-protectionist
-protections
-protective
-protectively
-protectiveness
-protector
-protectorate
-protectors
-protects
-protege
-proteges
-protein
-proteins
-Proterozoic
-protest
-protestant
-protestantism
-Protestantize
-Protestantizes
-protestation
-protestations
-protested
-protester
-protesting
-protestingly
-protestor
-protests
-Protista
-protocol
-protocols
-proton
-protons
-Protophyta
-protoplasm
-protoplasmic
-protoplast
-prototype
-prototyped
-prototypes
-prototypical
-prototypically
-prototyping
-protozoan
-protozoic
-protozoon
-protract
-protracted
-protraction
-protractor
-protrude
-protruded
-protrudes
-protruding
-protrusile
-protrusion
-protrusions
-protuberance
-protuberant
-protg
-proud
-prouder
-proudest
-proudly
-Proust
-provability
-provable
-provably
-prove
-proved
-proven
-provenance
-Provencal
-Provence
-provender
-provenience
-prover
-proverb
-proverbial
-proverbially
-provers
-proves
-provide
-provided
-providence
-provident
-providential
-providentially
-providently
-provider
-providers
-provides
-providing
-province
-provinces
-provincial
-provincialism
-provincially
-proving
-provision
-provisional
-provisionally
-provisioned
-provisioning
-provisions
-proviso
-provisory
-provocation
-provocative
-provocatively
-provocativeness
-provoke
-provoked
-provoker
-provokes
-provoking
-provokingly
-provolone
-provost
-prow
-prowess
-prowl
-prowled
-prowler
-prowlers
-prowling
-prows
-proximal
-proximate
-proximity
-proximo
-Proxmire
-proxy
-prude
-prudence
-prudent
-prudential
-prudentially
-prudently
-prudery
-prudish
-prudishly
-prudishness
-prune
-pruned
-pruner
-pruners
-prunes
-pruning
-prurience
-prurient
-Prussia
-Prussian
-Prussianization
-Prussianizations
-Prussianize
-Prussianizer
-Prussianizers
-Prussianizes
-prussic
-pry
-pryer
-prying
-ps
-psalm
-psalmist
-psalter
-psaltery
-pseudo
-pseudo-
-pseudo-prophet
-pseudo-Socialists
-pseudobinary
-pseudocode
-pseudofiles
-pseudoinstruction
-pseudoinstructions
-pseudolanguage
-pseudonym
-pseudonymous
-pseudoparallelism
-pseudoscience
-pseudoscientific
-pshaw
-psi
-psilocybin
-psittacosis
-psora
-psoriasis
-psst
-PST
-psych
-psyche
-psychedelic
-psychedelically
-psyches
-psychiatric
-psychiatrist
-psychiatrists
-psychiatry
-psychic
-psychical
-psychically
-psycho
-psychoactive
-psychoanalysis
-psychoanalyst
-psychoanalytic
-psychoanalytical
-psychoanalyze
-psychobabble
-psychobiology
-psychodrama
-psychogenic
-psychoinformatics
-psychological
-psychologically
-psychologist
-psychologists
-psychology
-psychoneuroses
-psychoneurosis
-psychopath
-psychopathic
-psychopathy
-psychophysic
-psychoses
-psychosis
-psychosocial
-psychosomatic
-psychotherapeutic
-psychotherapist
-psychotherapy
-psychotic
-psychotically
-psychotropic
-PT
-PTA
-ptarmigan
-pterodactyl
-PTO
-Ptolemaic
-Ptolemaists
-Ptolemy
-ptomaine
-PTT
-Pu
-pub
-pubertal
-puberty
-pubes
-pubescence
-pubescent
-pubic
-pubis
-public
-public-spirited
-publican
-publication
-publications
-publicism
-publicist
-publicity
-publicize
-publicized
-publicizes
-publicizing
-publicly
-publish
-published
-publisher
-publishers
-publishes
-publishing
-pubs
-Puccini
-puce
-puck
-pucker
-puckered
-puckering
-puckers
-puckish
-puckishly
-puckishness
-pudding
-pudding-head
-pudding-heart
-pudding-stone
-puddings
-puddle
-puddles
-puddling
-pudency
-pudenda
-pudendum
-pudginess
-pudgy
-puerile
-puerility
-puerperal
-Puerto
-puff
-puff-ball
-puff-box
-puff-paste
-puff-stone
-puffball
-puffed
-puffer
-puffery
-puffin
-puffiness
-puffing
-puffs
-puffy
-pug
-pug-nose
-pug-nosed
-Pugh
-pugilism
-pugilist
-pugilistic
-pugnacious
-pugnaciously
-pugnaciousness
-pugnacity
-puissance
-puissant
-puke
-pukka
-Pulaski
-pulchritude
-pulchritudinous
-pule
-Pulitzer
-pull
-pull-over
-pull-rod
-pull-up
-pullback
-pulled
-puller
-pullet
-pulley
-pulleys
-pulling
-pullings
-Pullman
-Pullmanize
-Pullmanizes
-Pullmans
-pullout
-pullover
-pulls
-pullulate
-pullup
-pulmonary
-pulmonic
-pulp
-pulpiness
-pulping
-pulpit
-pulpits
-pulpous
-pulpwood
-pulpy
-pulsar
-pulsate
-pulsatile
-pulsation
-pulsations
-pulsatory
-pulse
-pulsed
-pulses
-pulsing
-pulverization
-pulverize
-pulverizer
-puma
-pumice
-pumice-stone
-pummel
-pump
-pump-room
-pump-ship
-pumped
-pumper
-pumpernickel
-pumping
-pumpkin
-pumpkins
-pumps
-pun
-punch
-punch-drunk
-punch-machine
-punched
-punched-card
-puncheon
-puncher
-punches
-punching
-punchy
-punctate
-punctilio
-punctilious
-punctiliously
-punctiliousness
-punctual
-punctuality
-punctually
-punctuate
-punctuation
-puncture
-punctured
-punctures
-puncturing
-pundit
-punditry
-pungency
-pungent
-pungently
-Punic
-puniness
-punish
-punishable
-punished
-punishes
-punishing
-punishment
-punishments
-punitive
-punitively
-punitory
-Punjab
-Punjabi
-punk
-punkin
-punnet
-puns
-punster
-punt
-punted
-punter
-punting
-punts
-puny
-pup
-pupa
-pupae
-pupal
-pupil
-pupilage
-pupilarity
-pupilary
-pupils
-puppet
-puppet-show
-puppeteer
-puppetry
-puppets
-puppies
-puppy
-puppydom
-puppyhood
-pups
-purblind
-Purcell
-purchasable
-purchase
-purchase-money
-purchased
-purchaser
-purchasers
-purchases
-purchasing
-purdah
-Purdue
-pure
-purebred
-puree
-purely
-pureness
-purer
-purest
-purfle
-purgation
-purgative
-purgatorial
-purgatory
-purge
-purged
-purger
-purges
-purging
-purification
-purifications
-purified
-purifier
-purifiers
-purifies
-purify
-purifying
-Purim
-Purina
-purine
-purism
-purist
-puristic
-puritan
-puritanic
-puritanical
-puritanically
-puritanism
-Puritanize
-Puritanizer
-Puritanizers
-Puritanizes
-purity
-purl
-purler
-purlieu
-purlieus
-purlin
-purloin
-purloiner
-purp
-purple
-purpler
-purplest
-purplish
-purport
-purported
-purportedly
-purporter
-purporters
-purporting
-purports
-purpose
-purposed
-purposeful
-purposefully
-purposefulness
-purposeless
-purposelessly
-purposely
-purposes
-purposive
-purr
-purred
-purring
-purrs
-purse
-purse-bearer
-purse-string
-pursed
-purser
-purses
-pursiness
-pursuance
-pursuant
-pursue
-pursued
-pursuer
-pursuers
-pursues
-pursuing
-pursuit
-pursuits
-pursy
-purulence
-purulent
-purvey
-purveyance
-purveyor
-purview
-pure
-pus
-Pusan
-Pusey
-push
-push-back
-push-bolt
-push-button
-push-chair
-push-ing
-push-over
-push-up
-pushbutton
-pushcart
-pushdown
-pushed
-pusher
-pushers
-pushes
-pushful
-pushily
-pushiness
-pushing
-pushover
-pushup
-pushy
-pusillanimity
-pusillanimous
-pusillanimously
-puss
-puss-foot
-puss-in-the-corner
-pussy
-pussy-cat
-pussy-foot(er)
-pussy-wants-a-corner
-pussy-willow
-pussycat
-pussyfoot
-pustular
-pustulate
-pustule
-put
-put-down
-put-off
-put-on
-put-to
-putative
-putdown
-putlock
-putlog
-Putnam
-putout
-putrefaction
-putrefactive
-putrefy
-putrescence
-putrescent
-putrid
-putridity
-puts
-putsch
-putt
-puttee
-putter
-putter-on
-putterer
-puttering
-putters
-putting
-putty
-putty-head
-putty-knife
-puzzle
-puzzled
-puzzlement
-puzzler
-puzzlers
-puzzles
-puzzling
-puzzlings
-PVC
-PW
-PX
-Pygmalion
-pygmies
-pygmy
-pyjamas
-Pyle
-pylon
-pylori
-pyloric
-pylorus
-Pyongyang
-pyorrhea
-pyorrhoea
-Pyotr
-pyramid
-pyramidal
-pyramids
-pyre
-Pyrenees
-pyretic
-Pyrex
-pyrimidine
-pyrite
-pyrites
-pyromania
-pyromaniac
-pyrotechnic
-pyrotechnical
-pyrotechnics
-pyrotechny
-Pyrrhic
-Pythagoras
-Pythagorean
-Pythagoreanize
-Pythagoreanizes
-Pythagoreans
-python
-pythoness
-pythonic
-pyx
-Q-tip
-QAM
-Qatar
-QB
-QC
-QED
-Qingdao
-QM
-QSAM
-QTAM
-qua
-quack
-quacked
-quackery
-quacks
-quad
-quadragenarian
-quadrangle
-quadrangular
-quadrant
-quadrants
-quadraphonic
-quadrat
-quadrate
-quadratic
-quadratical
-quadratically
-quadratics
-quadrature
-quadratures
-quadrennia
-quadrennial
-quadrennium
-quadriceps
-quadrilateral
-quadrille
-quadrillion
-quadripartite
-quadriplegia
-quadriplegic
-quadrivium
-quadruped
-quadrupedal
-quadruple
-quadrupled
-quadruples
-quadruplet
-quadruplets
-quadruplicate
-quadruplication
-quadrupling
-quadrupole
-quaff
-quag
-quaggy
-quagmire
-quagmires
-quahaug
-quahog
-quai
-quail
-quails
-quaint
-quaintly
-quaintness
-quake
-quaked
-quaker
-Quakeress
-Quakerism
-Quakerization
-Quakerizations
-Quakerize
-Quakerizes
-quakers
-quakes
-quaking
-quaky
-qualification
-qualifications
-qualified
-qualifier
-qualifiers
-qualifies
-qualify
-qualifying
-qualitative
-qualitatively
-qualities
-quality
-qualm
-qualmish
-quandaries
-quandary
-quanta
-Quantico
-quantifiable
-quantification
-quantifications
-quantified
-quantifier
-quantifiers
-quantifies
-quantify
-quantifying
-quantile
-quantitative
-quantitatively
-quantities
-quantity
-quantization
-quantize
-quantized
-quantizes
-quantizing
-quantum
-quarantine
-quarantines
-quarantining
-quark
-Quarker
-quarks
-quarrel
-quarreled
-quarreler
-quarreling
-quarrels
-quarrelsome
-quarrelsomeness
-quarries
-quarry
-quart
-quartan
-quarter
-quarter-day
-quarter-deck
-quarter-final
-quarter-master
-quarterage
-quarterback
-quarterdeck
-quartered
-quarterfinal
-quartering
-quarterly
-quartermaster
-quarters
-quarterstaff
-quartet
-quartet(te)
-quartets
-quartette
-quartile
-quarto
-quarts
-quartz
-quartzite
-quasar
-quash
-quashed
-quashes
-quashing
-quasi
-quasi-bastarda
-quasi-synonymity
-quasi-synonymy
-Quasimodo
-quaternary
-quaternion
-quatrain
-quatrefoil
-quaver
-quavered
-quavering
-quavers
-quavery
-quay
-quayage
-queasily
-queasiness
-queasy
-Quebec
-Quebecker
-queen
-queen-size
-queen-sized
-queenly
-Queensland
-queer
-queerer
-queerest
-queerly
-queerness
-quell
-quelling
-quench
-quenchable
-quenched
-quencher
-quenches
-quenching
-quenchless
-queried
-queries
-quern
-querulous
-querulously
-querulousness
-query
-querying
-quest
-quested
-quester
-questers
-questing
-question
-question-mark
-question-stop
-questionable
-questionably
-questionary
-questioned
-questioner
-questioners
-questioning
-questioningly
-questionings
-questionnaire
-questionnaires
-questions
-quests
-queue
-queued
-queueing
-queuer
-queuers
-queues
-queuing
-Quezon
-quibble
-quibbler
-quiche
-Quichua
-quick
-quick-ear
-quick-fastener
-quick-firing
-quick-freeze
-quick-froze
-quick-frozen
-quick-lime
-quick-match
-quick-sighted
-quick-silver
-quick-tempered
-quick-witted
-quick-wittedly
-quicken
-quickened
-quickening
-quickens
-quicker
-quickest
-quickie
-quicklime
-quickly
-quickness
-quicksand
-quicksilver
-quickstep
-quid
-quiddity
-quidnunc
-quiescence
-quiescent
-quiescently
-quiet
-quieted
-quieten
-quieter
-quietest
-quieting
-quietly
-quietness
-quiets
-quietude
-quietus
-QUIKTRAN
-quill
-quilt
-quilted
-quilter
-quilting
-quilts
-quince
-quinine
-Quinn
-quinquennial
-quinsy
-quint
-quintal
-quinteessence
-quintessence
-quintessential
-quintessentially
-quintet
-quintette
-quintillion
-quintuple
-quintuplet
-quintuplets
-quip
-quipster
-quire
-Quirinal
-quirk
-quirkiness
-quirky
-quirt
-QUISAM
-quisling
-quit
-quitclaim
-quite
-Quito
-quits
-quittance
-quitter
-quitters
-quitting
-quiver
-quivered
-quivering
-quivers
-quivery
-Quixote
-quixotic
-quixotically
-Quixotism
-quiz
-quizzed
-quizzer
-quizzes
-quizzical
-quizzically
-quizzing
-quo
-quod
-quoin
-quoit
-quoits
-quondam
-quonset
-quorum
-quota
-quotability
-quotable
-quotas
-quotation
-quotations
-quote
-quoted
-quotes
-quoth
-quotha
-quotidian
-quotient
-quotients
-quoting
-Qur'an
-qv
-R.I.P.
-r.t.
-Ra
-Rabat
-rabbet
-rabbi
-rabbinate
-rabbinic
-rabbinical
-rabbit
-rabbit-hutch
-rabbit-warren
-rabbits
-rabble
-rabble-rouser
-rabble-rousing
-Rabelais
-rabid
-rabidly
-rabidness
-rabies
-Rabin
-raccoon
-raccoons
-race
-race-course
-race-ground
-race-horse
-racecourse
-raced
-racehorse
-raceme
-racer
-racers
-races
-racetrack
-raceway
-Rachel
-Rachmaninoff
-racial
-racialism
-racialist
-racially
-racily
-Racine
-raciness
-racing
-racism
-racist
-rack
-rack-railway
-rack-rent
-rack-wheel
-racked
-racker
-racket
-racketeer
-racketeering
-racketeers
-rackets
-rackety
-racking
-racks
-raconteur
-racoon
-racquet
-racquetball
-racy
-rad
-radar
-radars
-radarscope
-Radcliffe
-raddle
-radial
-radially
-radian
-radiance
-radiant
-radiantly
-radiate
-radiated
-radiates
-radiating
-radiation
-radiations
-radiator
-radiators
-radical
-radicalism
-radicalization
-radicalize
-radically
-radicals
-radices
-radii
-radio
-radio-beacon
-radio-engineering
-radio-operator
-radio-receiver
-radio-transmitter
-radioactive
-radioactively
-radioactivity
-radioastronomy
-radiocarbon
-radioed
-radiogram
-radiograph
-radiographer
-radiography
-radioing
-radioisotope
-radiolocate
-radiologist
-radiology
-radioman
-radiometer
-radiometric
-radiometry
-radiophone
-radios
-radioscopy
-radiosonde
-radiotelegraph
-radiotelegraphy
-radiotelephone
-radioteletype
-radiotherapist
-radiotherapy
-radish
-radishes
-radium
-radius
-radix
-radon
-Rae
-Rafael
-raff
-Rafferty
-raffia
-raffish
-raffishly
-raffishness
-raffle
-raft
-rafter
-rafters
-rafting
-rafts
-raftsman
-rag
-rag-and-bone-man
-rag-chewing
-raga
-ragamuffin
-ragbag
-rage
-raged
-rageful
-rages
-ragged
-raggedly
-raggedness
-raggedy
-raging
-ragingly
-raglan
-ragman
-ragout
-rags
-ragstone
-ragtag
-ragtime
-Ragusan
-ragweed
-rah
-rah-rah
-raid
-raided
-raider
-raiders
-raiding
-raids
-rail
-rail-shifter
-rail-switch
-railed
-railer
-railers
-railing
-raillery
-railman
-railroad
-railroaded
-railroader
-railroaders
-railroading
-railroads
-rails
-railway
-railwayman
-railways
-raiment
-rain
-rain-bow
-rain-fed
-rain-gauge
-rain-proof
-rainbow
-raincape
-raincoat
-raincoats
-raindrop
-raindrops
-rained
-rainfall
-rainfall-map
-rainiest
-raining
-rainmaker
-rainmaking
-rainproof
-rains
-rainstorm
-rainwater
-rainwear
-rainy
-raise
-raised
-raiser
-raisers
-raises
-raisin
-raising
-raisins
-rait
-raja
-rajah
-rake
-rake-hell
-rake-helly
-rake-off
-raked
-raker
-rakes
-raking
-rakish
-rakishly
-rakishness
-Raleigh
-rallied
-rallies
-rally
-rallying
-Ralph
-Ralston
-ram
-ram-rod
-Ramada
-Ramadan
-Raman
-ramble
-rambler
-rambles
-rambling
-ramblings
-rambunctious
-rambunctiously
-rambunctiousness
-ramekin
-ramequin
-ramie
-ramification
-ramifications
-ramified
-ramify
-Ramirez
-ramjet
-rammer
-rammish
-Ramo
-Ramona
-ramp
-rampage
-rampancy
-rampant
-rampantly
-rampart
-ramps
-ramrod
-rams
-Ramses
-Ramsey
-ramshackle
-ran
-ranch
-ranched
-rancher
-ranchers
-ranches
-ranching
-rancid
-rancidity
-rancidness
-rancor
-rancorous
-rancorously
-rancour
-Randall
-randiness
-Randolph
-random
-random-access
-randomization
-randomize
-randomized
-randomizes
-randomly
-randomness
-randy
-ranee
-rang
-range
-range-finder
-ranged
-rangeland
-ranger
-rangers
-ranges
-ranginess
-ranging
-Rangoon
-rangy
-rani
-Ranier
-rank
-rank-badge
-ranked
-ranker
-rankers
-rankest
-Rankin
-Rankine
-ranking
-rankings
-rankle
-rankly
-rankness
-ranks
-ransack
-ransacked
-ransacking
-ransacks
-ransom
-ransomer
-ransoming
-ransoms
-rant
-ranted
-ranter
-ranters
-ranting
-rants
-ranunculus
-Raoul
-rap
-rapacious
-rapaciously
-rapaciousness
-rapacity
-rape
-raped
-raper
-rapes
-Raphael
-rapid
-rapid-fire
-rapidity
-rapidly
-rapidness
-rapids
-rapier
-rapier-fish
-rapine
-raping
-rapist
-rappee
-rappel
-rapper
-rapport
-rapprochement
-raps
-rapscallion
-rapt
-raptly
-raptness
-rapture
-raptures
-rapturous
-rapturously
-Rapunzel
-rare
-rarebit
-rarefaction
-rarefied
-rarefy
-rarely
-rareness
-rarer
-rarest
-raring
-Raritan
-rarity
-rascal
-rascality
-rascally
-rascals
-rash
-rasher
-rashly
-rashness
-Rasmussen
-rasp
-raspberries
-raspberry
-rasped
-rasper
-rasping
-raspings
-rasps
-Rasputin
-raspy
-raster
-Rastus
-rasure
-rat
-rat-catcher
-rat-trap
-ratable
-rataplan
-ratch
-ratchet
-rate
-rate-payer
-rated
-rater
-raters
-rates
-Ratfor
-rather
-rathskeller
-ratification
-ratified
-ratifier
-ratifies
-ratify
-ratifying
-rating
-ratings
-ratio
-ratiocinate
-ratiocination
-ration
-rational
-rationale
-rationales
-rationalism
-rationalist
-rationalistic
-rationalities
-rationality
-rationalization
-rationalizations
-rationalize
-rationalized
-rationalizes
-rationalizing
-rationally
-rationals
-rationing
-rations
-ratios
-ratlike
-ratlin
-ratline
-rats
-Rats!
-rattan
-ratter
-rattle
-rattle-mouse
-rattle-snake
-rattle-trap
-rattlebrain
-rattlebrained
-rattled
-rattlehead
-rattler
-rattlers
-rattles
-rattlesnake
-rattlesnakes
-rattletrap
-rattling
-rattly
-rattrap
-ratty
-raucous
-raucously
-raucousness
-raughty
-Raul
-raunchily
-raunchiness
-raunchy
-ravage
-ravaged
-ravager
-ravagers
-ravages
-ravaging
-rave
-raved
-ravel
-raven
-raven-haired
-ravening
-ravenous
-ravenously
-ravens
-raves
-ravine
-ravines
-raving
-ravings
-ravioli
-ravish
-ravisher
-ravishing
-ravishingly
-ravishment
-raw
-raw-boned
-Rawalpindi
-rawboned
-rawer
-rawest
-rawhide
-Rawlings
-Rawlins
-Rawlinson
-rawly
-rawness
-Rawson
-ray
-Rayburn
-Rayleigh
-Raymond
-Raymondville
-rayon
-rays
-Raytheon
-raze
-razee
-razor
-razor-blade
-razor-edge
-razor-sharp
-razor-shell
-razor-strap
-razorback
-razors
-razz
-razzia
-razzle-dazzle
-razzmatazz
-Rb
-RBI
-RC
-RD
-RDA
-RDT
-re
-re-
-re-cover
-re-dress
-re-echo
-re-edify
-re-edition
-re-educate
-re-education
-re-elect
-re-engage
-re-enter
-re-entrant
-re-entry
-re-equip
-re-establish
-re-examine
-re-exchange
-re-form
-re-join
-re-lay
-re-mount
-re-recording
-re-settlement
-re-sign
-re-surface
-re-thinking
-reabbreviate
-reabbreviated
-reabbreviates
-reabbreviating
-reabsorb
-reach
-reachability
-reachable
-reachably
-reached
-reacher
-reaches
-reaching
-reacquaint
-reacquire
-reacquired
-react
-reactant
-reacted
-reacting
-reaction
-reactionaries
-reactionary
-reactions
-reactivate
-reactivated
-reactivates
-reactivating
-reactivation
-reactive
-reactively
-reactivity
-reactor
-reactors
-reacts
-read
-read-made
-read-out
-readability
-readable
-readdress
-reader
-reader-copier
-reader-printer
-readers
-readership
-readied
-readier
-readies
-readiest
-readily
-readiness
-reading
-reading-book
-reading-desk
-reading-glass
-reading-lamp
-reading-room
-readings
-readjust
-readjusted
-readjustment
-readmission
-readmit
-readopt
-readout
-readouts
-reads
-ready
-ready-made
-ready-to-print
-ready-to-wear
-readying
-reaffirm
-reaffirmation
-Reagan
-reagent
-real
-real-life
-real-time
-REALCOM
-realest
-realia
-realign
-realigned
-realigning
-realignment
-realigns
-realise
-realism
-realist
-realistic
-realistically
-realists
-realities
-reality
-realizable
-realizably
-realization
-realizations
-realize
-realized
-realizes
-realizing
-reallocate
-reallocation
-really
-realm
-realms
-realness
-realpolitik
-reals
-realty
-ream
-reamer
-reams
-reanalysis
-reanalyze
-reanalyzes
-reanalyzing
-reanimate
-reanimation
-reap
-reaped
-reaper
-reaping
-reaping-hook
-reaping-machine
-reappear
-reappearance
-reappeared
-reappearing
-reappears
-reapplication
-reapply
-reappoint
-reappointment
-reapportion
-reapportionment
-reappraisal
-reappraisals
-reappraise
-reaps
-rear
-rear-admiral
-rear-end
-rear-guard
-rear-mouse
-reared
-rearguard
-rearing
-rearm
-rearmament
-rearmost
-rearrange
-rearrangeable
-rearranged
-rearrangement
-rearrangements
-rearranges
-rearranging
-rearrest
-rearrested
-rears
-rearward
-rearwards
-reascend
-reason
-reasonable
-reasonableness
-reasonably
-reasoned
-reasoner
-reasoning
-reasonings
-reasonless
-reasons
-reassemble
-reassembled
-reassembles
-reassembling
-reassembly
-reassert
-reassertion
-reassess
-reassessment
-reassessments
-reassign
-reassigned
-reassigning
-reassignment
-reassignments
-reassigns
-reassurance
-reassure
-reassured
-reassures
-reassuring
-reassuringly
-reattach
-reattachment
-reattain
-reattempt
-reauthorize
-reave
-reawaken
-reawakened
-reawakening
-reawakens
-rebarbative
-rebate
-rebates
-Rebecca
-Rebekah
-rebel
-rebelion
-rebelled
-rebelling
-rebellion
-rebellions
-rebellious
-rebelliously
-rebelliousness
-rebels
-rebid
-rebind
-rebinding
-rebinds
-rebirth
-reblend
-reboil
-reboot
-rebooted
-rebooting
-reboots
-reborn
-rebound
-rebounded
-rebounding
-rebounds
-rebroadcast
-rebroadcasting
-rebroadcasts
-rebuff
-rebuffed
-rebuild
-rebuilding
-rebuilds
-rebuilt
-rebuke
-rebuked
-rebukes
-rebuking
-rebukingly
-reburial
-rebury
-rebus
-rebut
-rebuttal
-rebutted
-rebutting
-rec
-recalcitrance
-recalcitrant
-recalculate
-recalculated
-recalculates
-recalculating
-recalculation
-recalculations
-recalibrate
-recalibrated
-recalibrates
-recalibrating
-recall
-recalled
-recalling
-recalls
-recant
-recantation
-recap
-recapitulate
-recapitulated
-recapitulates
-recapitulation
-recapture
-recaptured
-recaptures
-recapturing
-recase
-recast
-recasting
-recasts
-recatalogization
-recede
-receded
-recedes
-receding
-receipt
-receipts
-receivable
-receivables
-receive
-received
-receiver
-receivers
-receivership
-receives
-receiving
-recency
-recense
-recension
-recent
-recently
-recentness
-receptacle
-receptacles
-receptibility
-reception
-receptionist
-receptions
-receptive
-receptively
-receptiveness
-receptivity
-receptor
-recess
-recessed
-recesses
-recession
-recessional
-recessionary
-recessive
-recharge
-rechargeable
-recharter
-recheck
-recherche
-rechristen
-recidivation
-recidivism
-recidivist
-recidivous
-Recife
-recipe
-recipe-book
-recipes
-recipient
-reciprocal
-reciprocally
-reciprocate
-reciprocated
-reciprocates
-reciprocating
-reciprocation
-reciprocity
-recirculate
-recirculated
-recirculates
-recirculating
-recital
-recitalist
-recitals
-recitation
-recitations
-recitative
-recite
-recited
-reciter
-recites
-reciting
-reck
-reckless
-recklessly
-recklessness
-reckon
-reckoned
-reckoner
-reckoning
-reckonings
-reckons
-reclaim
-reclaimable
-reclaimant
-reclaimed
-reclaimer
-reclaimers
-reclaiming
-reclaims
-reclamation
-reclamations
-reclassification
-reclassified
-reclassifies
-reclassify
-reclassifying
-recline
-recliner
-reclining
-recluse
-reclusive
-recode
-recoded
-recodes
-recoding
-recognise
-recognition
-recognitions
-recognizability
-recognizable
-recognizably
-recognizance
-recognize
-recognized
-recognizer
-recognizers
-recognizes
-recognizing
-recoil
-recoil-liquid
-recoiled
-recoiling
-recoils
-recollect
-recollected
-recollecting
-recollection
-recollections
-recolonization
-recolonize
-recolor
-recombination
-recombine
-recombined
-recombines
-recombining
-recommence
-recommencement
-recommend
-recommendable
-recommendation
-recommendations
-recommended
-recommender
-recommending
-recommends
-recommission
-recommit
-recompensation
-recompense
-recompile
-recompiled
-recompiles
-recompiling
-recompose
-recompute
-recomputed
-recomputes
-recomputing
-reconcilable
-reconcile
-reconciled
-reconcilement
-reconciler
-reconciles
-reconciliation
-reconciling
-recondite
-recondition
-reconditory
-reconfigurable
-reconfiguration
-reconfigurations
-reconfigure
-reconfigured
-reconfigurer
-reconfigures
-reconfiguring
-reconfirm
-reconfirmation
-reconnaissance
-reconnect
-reconnected
-reconnecting
-reconnection
-reconnects
-reconnoiter
-reconnoitre
-reconquer
-reconquest
-reconsecrate
-reconsecration
-reconsider
-reconsideration
-reconsidered
-reconsidering
-reconsiders
-reconsign
-reconstitute
-reconstituted
-reconstitution
-reconstruct
-reconstructed
-reconstructing
-reconstruction
-reconstructs
-recontact
-recontaminate
-reconvene
-reconversion
-reconvert
-reconverted
-reconverts
-recook
-recopy
-record
-record-breaking
-record-changer
-record-player
-recorded
-recorder
-recorders
-recording
-recording-tape
-recordings
-records
-recount
-recounted
-recounting
-recounts
-recoup
-recourse
-recover
-recoverable
-recovered
-recoveries
-recovering
-recovers
-recovery
-recovery-function
-recreant
-recreate
-recreated
-recreates
-recreating
-recreation
-recreational
-recreations
-recreative
-recreive
-recrement
-recriminate
-recrimination
-recriminatory
-recross
-recrudesce
-recrudescence
-recrudescent
-recruit
-recruited
-recruiter
-recruiting
-recruitment
-recruits
-recrystallize
-recta
-rectal
-rectally
-rectangle
-rectangles
-rectangular
-rectifiable
-rectification
-rectifier
-rectify
-rectifying-tube
-rectilinear
-rectitude
-recto
-rector
-rectors
-rectory
-rectum
-rectums
-recumbency
-recumbent
-recuperate
-recuperation
-recuperative
-recur
-recurrence
-recurrences
-recurrent
-recurrently
-recurring
-recurs
-recurse
-recursed
-recurses
-recursing
-recursion
-recursions
-recursive
-recursively
-recurvate
-recurved
-recusancy
-recusant
-recyclable
-recycle
-recycled
-recycles
-recycling
-red
-red-bird
-red-blooded
-red-carpet
-red-clover
-red-currants
-red-deer
-red-eye
-red-haired
-red-handed
-red-herring
-red-hot
-red-lead
-red-letter
-red-lining
-red-pestilence
-red-plague
-red-poll
-red-tapism
-red-tapist
-red-wed
-redact
-redaction
-redactor
-redbird
-redbreast
-redcap
-redcoat
-redden
-reddened
-redder
-reddest
-reddish
-reddishness
-rede
-redeclare
-redeclared
-redeclares
-redeclaring
-redecorate
-redecoration
-rededicate
-redeem
-redeemable
-redeemed
-redeemer
-redeemers
-redeeming
-redeems
-redefine
-redefined
-redefines
-redefining
-redefinition
-redefinitions
-redeliver
-redemption
-redemptive
-redeploy
-redeployment
-redeposit
-redescription
-redesign
-redesigned
-redesigning
-redesigns
-redetermine
-redevelop
-redevelopment
-Redford
-redhead
-redheaded
-Redhook
-redial
-redid
-rediffusion
-redintegrate
-redintegration
-redirect
-redirected
-redirecting
-redirection
-redirections
-rediscover
-rediscovery
-redisplay
-redisplayed
-redisplaying
-redisplays
-redissolve
-redistribute
-redistributed
-redistributes
-redistributing
-redistribution
-redistrict
-redivide
-redivision
-redlining
-redly
-redman
-Redmond
-redneck
-redness
-redo
-redolence
-redolent
-redone
-redouble
-redoubled
-redoubt
-redoubtable
-redoubtably
-redound
-redraft
-redraw
-redrawn
-redress
-redressed
-redresses
-redressing
-reds
-redskin
-Redstone
-redtapism
-reduce
-reduced
-reducer
-reducers
-reduces
-reducibility
-reducible
-reducibly
-reducing
-reduction
-reductions
-reductive
-redundance
-redundancies
-redundancy
-redundant
-redundantly
-reduplicate
-reduplication
-redwood
-redye
-reecho
-reed
-reed-grass
-reed-mace
-reed-pipe
-reeden
-reediness
-reedit
-reeds
-reeducate
-reeducation
-Reedville
-reedy
-reef
-reefer
-reefs
-reek
-reel
-reelect
-reelected
-reelecting
-reelection
-reelects
-reeled
-reeler
-reeling
-reels
-reembark
-reembody
-reemerge
-reemergence
-reemphasize
-reemphasized
-reemphasizes
-reemphasizing
-reemploy
-reemployment
-reenabled
-reenact
-reenactment
-reenforce
-reenforcement
-reengage
-reenlargement
-reenlist
-reenlistment
-reenter
-reentered
-reentering
-reenters
-reentrant
-reentry
-reequip
-Reese
-reestablish
-reestablished
-reestablishes
-reestablishing
-reestablishment
-reevaluate
-reevaluated
-reevaluates
-reevaluating
-reevaluation
-reeve
-Reeves
-reexamination
-reexamine
-reexamined
-reexamines
-reexamining
-reexecuted
-reexplain
-reexport
-ref
-reface
-refashion
-refasten
-refection
-refectory
-refer
-referable
-referee
-refereed
-refereeing
-referees
-reference
-referenced
-referencer
-references
-referencing
-referenda
-referendary
-referendum
-referendums
-referent
-referential
-referentiality
-referentially
-referents
-referral
-referrals
-referred
-referrer
-referring
-refers
-refile
-refill
-refillable
-refilled
-refilling
-refills
-refinance
-refine
-refined
-refinement
-refinements
-refiner
-refinery
-refines
-refining
-refinish
-refit
-reflect
-reflectance
-reflected
-reflecting
-reflection
-reflections
-reflective
-reflectively
-reflectivity
-reflector
-reflectors
-reflects
-reflex
-reflex-camera
-reflexes
-reflexion
-reflexive
-reflexively
-reflexiveness
-reflexivity
-refluence
-reflux
-refocus
-refold
-reforest
-reforestation
-reforge
-reform
-reformable
-reformat
-reformation
-reformative
-reformatory
-reformats
-reformatted
-reformatting
-reformed
-reformer
-reformers
-reforming
-reforms
-reformulate
-reformulated
-reformulates
-reformulating
-reformulation
-refortify
-refract
-refracted
-refraction
-refractive
-refractor
-refractoriness
-refractory
-refragment
-refrain
-refrained
-refraining
-refrains
-refreeze
-refresh
-refreshed
-refresher
-refreshers
-refreshes
-refreshing
-refreshingly
-refreshment
-refreshments
-refrigerant
-refrigerate
-refrigeration
-refrigerator
-refrigerators
-refuel
-refueled
-refueling
-refuels
-refuge
-refugee
-refugees
-refulgence
-refulgency
-refulgent
-refund
-refundable
-refundment
-refurbish
-refurbishment
-refurnish
-refusal
-refuse
-refused
-refuses
-refusing
-refutable
-refutation
-refute
-refuted
-refuter
-refutes
-refuting
-regain
-regained
-regaining
-regains
-regal
-regale
-regaled
-regalement
-regalia
-regality
-regally
-regard
-regarded
-regardful
-regarding
-regardless
-regards
-regather
-regatta
-regency
-regeneracy
-regenerate
-regenerated
-regenerates
-regenerating
-regeneration
-regenerative
-regenerator
-regenerators
-regent
-regents
-reggae
-regicide
-regime
-regimen
-regiment
-regimental
-regimentation
-regimented
-regiments
-regimes
-Regina
-Reginald
-region
-regional
-regionalism
-regionally
-regions
-Regis
-register
-registered
-registering
-registers
-registrant
-registrar
-registration
-registrations
-registry
-reglet
-regnant
-regorge
-regrade
-regress
-regressed
-regresses
-regressing
-regression
-regressions
-regressive
-regret
-regretful
-regretfully
-regrets
-regrettable
-regrettably
-regretted
-regretting
-regrind
-regroup
-regrouped
-regrouping
-regrow
-regrowth
-reguest
-regular
-regularise
-regularities
-regularity
-regularization
-regularize
-regularly
-regulars
-regulate
-regulated
-regulates
-regulating
-regulation
-regulations
-regulative
-regulator
-regulators
-regulatory
-Regulus
-regurgitate
-regurgitation
-rehab
-rehabilitate
-rehabilitation
-rehabilitative
-rehang
-rehash
-rehear
-rehearing
-rehearsal
-rehearsals
-rehearse
-rehearsed
-rehearser
-rehearses
-rehearsing
-reheat
-rehire
-Rehnquist
-rehouse
-Reich
-Reichenberg
-Reichstag
-Reid
-reign
-reigned
-reigning
-reignite
-reigns
-Reilly
-reimbursable
-reimburse
-reimbursed
-reimbursement
-reimbursements
-reimpose
-reimpression
-rein
-reincarnate
-reincarnated
-reincarnation
-reincorporate
-reincorporation
-reindeer
-reined
-reinfect
-reinfection
-reinforce
-reinforced
-reinforcement
-reinforcements
-reinforcer
-reinforces
-reinforcing
-Reinhard
-Reinhardt
-Reinhold
-reinitialize
-reinitialized
-reinitializing
-reinless
-reinoculate
-reins
-reinsert
-reinserted
-reinserting
-reinsertion
-reinserts
-reinspect
-reinstall
-reinstate
-reinstated
-reinstatement
-reinstates
-reinstating
-reintegrate
-reintegration
-reinterpret
-reinterpretation
-reinterpreted
-reinterpreting
-reinterprets
-reintroduce
-reintroduced
-reintroduces
-reintroducing
-reintroduction
-reinvent
-reinvented
-reinventing
-reinvention
-reinvents
-reinvest
-reinvestment
-reinvigorate
-reissue
-REIT
-reiterate
-reiterated
-reiterates
-reiterating
-reiteration
-reiterative
-reive
-reject
-rejected
-rejecting
-rejection
-rejections
-rejector
-rejectors
-rejects
-rejoice
-rejoiced
-rejoicer
-rejoices
-rejoicing
-rejoin
-rejoinder
-rejoined
-rejoining
-rejoins
-rejolt
-rejudge
-rejuvenate
-rejuvenation
-rejuvenescence
-rekey
-rekindle
-relabel
-relabeled
-relabeling
-relabelled
-relabelling
-relabels
-relaid
-relapse
-relate
-related
-relatedness
-relater
-relates
-relating
-relation
-relational
-relationally
-relations
-relationship
-relationships
-relative
-relatively
-relativeness
-relatives
-relativism
-relativistic
-relativistically
-relativity
-relator
-relaunch
-relax
-relaxant
-relaxation
-relaxations
-relaxed
-relaxer
-relaxes
-relaxing
-relay
-relayed
-relaying
-relays
-relearn
-release
-released
-releases
-releasing
-relegate
-relegated
-relegates
-relegating
-relegation
-relent
-relented
-relenting
-relentless
-relentlessly
-relentlessness
-relents
-relevance
-relevances
-relevancy
-relevant
-relevantly
-reliability
-reliable
-reliably
-reliance
-reliant
-relic
-relics
-relict
-relied
-relief
-relies
-relieve
-relieved
-reliever
-relievers
-relieves
-relieving
-relight
-religion
-religionize
-religions
-religious
-religiously
-religiousness
-reline
-relink
-relinquish
-relinquished
-relinquishes
-relinquishing
-relinquishment
-reliquary
-relish
-relished
-relishes
-relishing
-relivable
-relive
-relives
-reliving
-reload
-reloaded
-reloader
-reloading
-reloads
-relocatable
-relocate
-relocated
-relocates
-relocating
-relocation
-relocations
-reluctance
-reluctancy
-reluctant
-reluctantly
-relume
-rely
-relying
-remade
-remagnify
-remain
-remainder
-remainders
-remained
-remaining
-remains
-remake
-remaker
-remand
-remap
-remark
-remarkable
-remarkableness
-remarkably
-remarked
-remarking
-remarks
-remarriage
-remarry
-rematch
-Rembrandt
-remeasure
-remediable
-remedial
-remedially
-remediation
-remedied
-remedies
-remediless
-remedy
-remedying
-remelt
-remember
-remembered
-remembering
-remembers
-remembrance
-remembrances
-remigrate
-remilitarization
-remilitarize
-remind
-reminded
-reminder
-reminders
-reminding
-reminds
-Remington
-reminisce
-reminiscence
-reminiscences
-reminiscent
-reminiscently
-remiss
-remissible
-remission
-remissly
-remissness
-remit
-remittance
-remittee
-remittent
-remitter
-remix
-remnant
-remnants
-remodel
-remodeled
-remodeling
-remodels
-remold
-remonstrance
-remonstrant
-remonstrate
-remonstrated
-remonstrates
-remonstrating
-remonstration
-remonstrative
-remorse
-remorseful
-remorsefully
-remorseless
-remorselessly
-remorselessness
-remote
-remote-controlled
-remotely
-remoteness
-remotest
-remould
-remount
-removable
-removal
-removals
-remove
-removed
-remover
-removes
-removing
-remunerate
-remuneration
-remunerative
-Remus
-Remy
-Rena
-renaissance
-renal
-rename
-renamed
-renames
-renaming
-renascence
-renascent
-Renault
-Renaults
-rend
-render
-rendered
-rendering
-renderings
-renders
-rendezvous
-rending
-rendition
-renditions
-rends
-Rene
-Renee
-renegade
-renege
-reneger
-renegotiable
-renegotiate
-renegotiation
-renew
-renewable
-renewal
-renewed
-renewer
-renewing
-renews
-rennet
-rennin
-Reno
-Renoir
-renominate
-renomination
-renounce
-renouncement
-renounces
-renouncing
-renovate
-renovated
-renovation
-renovator
-renown
-renowned
-Rensselaer
-rent
-rent-charge
-rent-free
-rent-roll
-rentable
-rental
-rentals
-rented
-renter
-renting
-rents
-renumber
-renumbering
-renumbers
-renunciate
-renunciation
-Renville
-reoccupation
-reoccupy
-reoccur
-reopen
-reopened
-reopening
-reopens
-reorder
-reordered
-reordering
-reorders
-reorganization
-reorganizations
-reorganize
-reorganized
-reorganizes
-reorganizing
-reorient
-reorientation
-rep
-repack
-repackage
-repagination
-repaid
-repaint
-repair
-repairable
-repaired
-repairer
-repairing
-repairman
-repairmen
-repairs
-reparable
-reparation
-reparations
-repartee
-repartition
-repast
-repasts
-repatriate
-repatriation
-repave
-repay
-repayable
-repaying
-repayment
-repays
-repeal
-repealed
-repealer
-repealing
-repeals
-repeat
-repeatable
-repeated
-repeatedly
-repeater
-repeaters
-repeating
-repeats
-repel
-repelent
-repellant
-repelled
-repellent
-repels
-repent
-repentance
-repentant
-repentantly
-repented
-repenting
-repents
-repercussion
-repercussions
-reperforator
-repertoire
-repertory
-repetition
-repetitions
-repetitious
-repetitiously
-repetitiousness
-repetitive
-repetitively
-repetitiveness
-rephotograph
-rephrase
-rephrased
-rephrases
-rephrasing
-repine
-replace
-replaceable
-replaced
-replacement
-replacements
-replacer
-replaces
-replacing
-replant
-replay
-replayed
-replaying
-replays
-replenish
-replenished
-replenishes
-replenishing
-replenishment
-replete
-repleteness
-repletion
-replevin
-replica
-replicas
-replicate
-replicated
-replicates
-replicating
-replication
-replications
-replied
-replies
-replot
-reply
-replying
-repopulate
-report
-reportage
-reported
-reportedly
-reporter
-reporters
-reporting
-reportorial
-reports
-reposal
-repose
-reposed
-reposeful
-reposes
-reposing
-reposition
-repositioned
-repositioning
-repositions
-repositories
-repository
-repossess
-repossession
-reprehend
-reprehensibility
-reprehensible
-reprehensibly
-reprehension
-reprehensive
-represent
-representable
-representably
-representation
-representational
-representationally
-representations
-representative
-representatively
-representativeness
-representatives
-represented
-representing
-represents
-repress
-repressed
-represses
-repressing
-repression
-repressions
-repressive
-repressively
-reprice
-reprieve
-reprieved
-reprieves
-reprieving
-reprimand
-reprint
-reprinted
-reprinting
-reprints
-reprisal
-reprisals
-reprise
-reproach
-reproachable
-reproached
-reproaches
-reproachful
-reproachfully
-reproaching
-reprobate
-reprocess
-reproduce
-reproduced
-reproducer
-reproducers
-reproduces
-reproducibilities
-reproducibility
-reproducible
-reproducibly
-reproducing
-reproduction
-reproductions
-reproductive
-reprogram
-reprogrammed
-reprogramming
-reprograms
-reprography
-reproof
-reprove
-reprover
-reprovingly
-reptile
-reptiles
-reptilian
-republic
-republican
-republicans
-republication
-republics
-republish
-repudiate
-repudiated
-repudiates
-repudiating
-repudiation
-repudiations
-repudiator
-repugnace
-repugnance
-repugnancy
-repugnant
-repulse
-repulsed
-repulses
-repulsing
-repulsion
-repulsions
-repulsive
-repulsively
-repulsiveness
-repump
-repurchase
-reputability
-reputable
-reputably
-reputation
-reputations
-repute
-reputed
-reputedly
-reputes
-request
-requested
-requester
-requesters
-requesting
-requests
-requeue
-requiem
-require
-required
-requirement
-requirements
-requires
-requiring
-requisite
-requisites
-requisition
-requisitioned
-requisitioning
-requisitions
-requital
-requite
-requiter
-reran
-reread
-rerecord
-reregister
-reroute
-rerouted
-reroutes
-rerouting
-rerun
-reruns
-resalable
-resale
-rescanning
-reschedule
-rescind
-rescission
-rescue
-rescued
-rescuer
-rescuers
-rescues
-rescuing
-reseal
-resealable
-research
-researched
-researcher
-researchers
-researches
-researching
-resect
-resection
-reseda
-reseed
-reselect
-reselected
-reselecting
-reselects
-resell
-reselling
-resemblance
-resemblances
-resemble
-resembled
-resembles
-resembling
-resent
-resented
-resentful
-resentfully
-resentfulness
-resenting
-resentment
-resents
-resequencing
-reserpine
-reservation
-reservations
-reserve
-reserved
-reservedly
-reservedness
-reserver
-reserves
-reserving
-reservist
-reservoir
-reservoirs
-reset
-resets
-resetting
-resettings
-resettle
-resettlement
-resew
-reshape
-resharpen
-reship
-reshipment
-reshow
-reshuffle
-reside
-resided
-residence
-residences
-residency
-resident
-residential
-residentially
-residents
-resides
-residing
-residua
-residual
-residuals
-residuary
-residue
-residues
-residuum
-resign
-resignation
-resignations
-resigned
-resignedly
-resigning
-resigns
-resilience
-resiliency
-resilient
-resiliently
-resin
-resinous
-resins
-resist
-resistable
-resistance
-resistances
-resistant
-resistantly
-resisted
-resister
-resistibility
-resistible
-resisting
-resistive
-resistivity
-resistless
-resistor
-resistors
-resists
-reskill
-resold
-resole
-resoluble
-resolute
-resolutely
-resoluteness
-resolution
-resolutions
-resolvable
-resolve
-resolved
-resolvent
-resolver
-resolvers
-resolves
-resolving
-resonance
-resonances
-resonant
-resonantly
-resonate
-resonator
-resorption
-resort
-resorted
-resorting
-resorts
-resound
-resounding
-resoundingly
-resounds
-resource
-resourceful
-resourcefully
-resourcefulness
-resources
-resow
-respect
-respectability
-respectable
-respectably
-respected
-respecter
-respectful
-respectfully
-respectfulness
-respecting
-respective
-respectively
-respects
-respell
-respiration
-respirator
-respiratory
-respire
-respite
-resplendence
-resplendency
-resplendent
-resplendently
-respond
-responded
-respondent
-respondents
-responder
-responding
-responds
-response
-responses
-responsibilities
-responsibility
-responsible
-responsibleness
-responsibly
-responsive
-responsively
-responsiveness
-respray
-rest
-restaff
-restart
-restarted
-restarting
-restarts
-restate
-restated
-restatement
-restates
-restating
-restaurant
-restauranteur
-restaurants
-restaurateur
-restauration
-rested
-restful
-restfully
-restfulness
-restiff
-resting
-restitch
-restitution
-restive
-restively
-restiveness
-restless
-restlessly
-restlessness
-restock
-restoration
-restorations
-restorative
-restore
-restored
-restorer
-restorers
-restores
-restoring
-restrain
-restrained
-restrainedly
-restrainer
-restrainers
-restraining
-restrains
-restraint
-restraints
-restrengthen
-restrict
-restricted
-restricting
-restriction
-restrictions
-restrictive
-restrictively
-restrictiveness
-restricts
-restring
-restroom
-restructure
-restructured
-restructures
-restructuring
-rests
-restudy
-restyle
-resubmit
-resubscribe
-result
-resultant
-resultantly
-resultants
-resulted
-resulting
-results
-resumable
-resume
-resumed
-resumes
-resuming
-resumption
-resumptions
-resupply
-resurface
-resurge
-resurgence
-resurgent
-resurrect
-resurrected
-resurrecting
-resurrection
-resurrections
-resurrector
-resurrectors
-resurrects
-resurvey
-resuscitate
-resuscitation
-resuscitator
-resynchronization
-resynchronize
-resynchronized
-resynchronizing
-ret
-retail
-retailer
-retailers
-retailing
-retain
-retained
-retainer
-retainers
-retaining
-retainment
-retains
-retake
-retaken
-retaliate
-retaliation
-retaliative
-retaliatory
-retard
-retardant
-retardation
-retarded
-retarder
-retarding
-retch
-reteach
-retell
-retention
-retentions
-retentive
-retentively
-retentiveness
-retest
-rethink
-rethinking
-rethought
-reticence
-reticent
-reticently
-reticle
-reticles
-reticular
-reticulate
-reticulated
-reticulately
-reticulates
-reticulating
-reticulation
-reticule
-retie
-retina
-retinae
-retinal
-retinas
-retinue
-retire
-retired
-retiree
-retirement
-retirements
-retires
-retiring
-retold
-retook
-retool
-retort
-retorted
-retortion
-retorts
-retouch
-retoucher
-retrace
-retraced
-retraces
-retracing
-retract
-retractable
-retracted
-retractile
-retracting
-retraction
-retractions
-retracts
-retrain
-retrained
-retraining
-retrains
-retranslate
-retranslated
-retransmission
-retransmissions
-retransmit
-retransmits
-retransmitted
-retransmitting
-retread
-retreat
-retreated
-retreating
-retreats
-retrench
-retrenchment
-retrial
-retribute
-retribution
-retributive
-retried
-retrier
-retriers
-retries
-retrievability
-retrievable
-retrieval
-retrievals
-retrieve
-retrieved
-retriever
-retrievers
-retrieves
-retrieving
-retro
-retro-
-retro-rocket
-retroact
-retroaction
-retroactive
-retroactively
-retrocede
-retrocession
-retrofire
-retrofit
-retrofitting
-retrograde
-retrogress
-retrogression
-retrogressive
-retrorocket
-retrospect
-retrospection
-retrospective
-retrospectively
-retrovirus
-retry
-retrying
-retsina
-return
-returnable
-returned
-returnee
-returner
-returning
-returns
-retype
-retyped
-retypes
-retyping
-Reub
-Reuben
-reunification
-reunify
-reunion
-reunions
-reunite
-reunited
-reuniting
-reupholster
-reusable
-reuse
-reused
-reuses
-reusing
-Reuters
-Reuther
-revaluation
-revalue
-revamp
-revamped
-revamping
-revamps
-reveal
-revealed
-revealing
-revealingly
-reveals
-reveille
-revel
-revelation
-revelations
-reveled
-reveler
-reveling
-reveller
-revelry
-revels
-revenage
-revenge
-revengeful
-revengefully
-revenger
-revenue
-revenuer
-revenuers
-revenues
-reverberate
-reverberation
-revere
-revered
-reverence
-reverend
-reverends
-reverent
-reverential
-reverentially
-reverently
-reveres
-reverie
-reverified
-reverifies
-reverify
-reverifying
-revering
-revers
-reversal
-reversals
-reverse
-reversed
-reversely
-reverser
-reverses
-reversible
-reversibly
-reversing
-reversion
-revert
-reverted
-revertible
-reverting
-reverts
-revery
-revet
-revetment
-review
-reviewed
-reviewer
-reviewers
-reviewing
-reviews
-revile
-reviled
-revilement
-reviler
-reviling
-revisal
-revise
-revised
-reviser
-revises
-revising
-revision
-revisionary
-revisionism
-revisionist
-revisions
-revisit
-revisited
-revisiting
-revisits
-revitalization
-revitalize
-revival
-revivalism
-revivalist
-revivals
-revive
-revived
-reviver
-revives
-revivification
-revivify
-reviving
-revocable
-revocation
-revokable
-revoke
-revoked
-revoker
-revokes
-revoking
-revolt
-revolted
-revolter
-revolting
-revoltingly
-revolts
-revolution
-revolutionaries
-revolutionary
-revolutionise
-revolutionist
-revolutionize
-revolutionized
-revolutionizer
-revolutions
-revolvable
-revolve
-revolved
-revolver
-revolvers
-revolves
-revolving
-revs
-revue
-revulsion
-reward
-rewarded
-rewarding
-rewardingly
-rewards
-rewarm
-rewash
-reweave
-rewed
-reweigh
-rewind
-rewinding
-rewinds
-rewire
-reword
-rework
-reworked
-reworking
-reworks
-rewound
-rewrite
-rewriter
-rewrites
-rewriting
-rewritten
-rewrote
-Rex
-rexine
-Reykjavik
-Reynolds
-rezone
-RFD
-Rh
-rhapsodic
-rhapsodical
-rhapsodize
-rhapsody
-Rheims
-Rheinholdt
-rheme
-Rhenish
-rhenium
-rheostat
-rhesus
-rhetoric
-rhetorical
-rhetorically
-rhetorician
-rheum
-rheumatic
-rheumatically
-rheumatism
-rheumatoid
-rheumy
-Rhine
-Rhineland
-rhinestone
-rhinitis
-rhino
-rhinoceros
-rhizome
-rhizomes
-rho
-Rhoda
-Rhode
-Rhodes
-Rhodesia
-Rhodesian
-rhodium
-rhododendron
-rhomb
-rhombi
-rhombic
-rhomboid
-rhomboidal
-rhombus
-Rhone
-rhubarb
-rhyme
-rhymed
-rhymer
-rhymes
-rhymester
-rhyming
-rhythm
-rhythmic
-rhythmical
-rhythmically
-rhythms
-RI
-rial
-rib
-ribald
-ribaldry
-riband
-ribbed
-ribber
-ribbing
-ribbon
-ribbons
-riboflavin
-ribonucleic
-ribs
-Rica
-Rican
-Ricanism
-Ricans
-rice
-ricer
-rich
-Richard
-Richards
-Richardson
-richer
-riches
-richest
-Richey
-Richfield
-Richland
-richly
-Richmond
-richness
-Richter
-rick
-Rickenbaugh
-rickets
-Rickettsia
-rickety
-rickrack
-ricksha
-rickshaw
-rickshaws
-Rico
-ricochet
-ricotta
-rid
-riddance
-ridden
-ridding
-riddle
-riddled
-riddles
-riddling
-ride
-rider
-riderless
-riders
-ridership
-rides
-ridge
-ridge-tile
-ridge-tree
-ridged
-Ridgefield
-ridgepole
-ridges
-Ridgway
-ridgy
-ridicule
-ridiculed
-ridicules
-ridiculing
-ridiculous
-ridiculously
-ridiculousness
-riding
-riding-breeches
-riding-habit
-riding-master
-riding-mistress
-riding-rod
-rids
-Riemann
-Riemannian
-Riesling
-rife
-rifeness
-riff
-riff-raff
-riffle
-riffraff
-rifle
-rifle-barrel
-rifle-shot
-rifled
-rifleman
-rifler
-rifles
-rifling
-rift
-rig
-rig-about
-rig-out
-rig-up
-Riga
-rigamarole
-rigatoni
-Rigel
-rigger
-rigging
-Riggs
-right
-right-angled
-right-hand
-right-handed
-right-handedly
-right-handedness
-right-hander
-right-minded
-right-of-way
-right-thinking
-right-to-life
-right-to-lifer
-right-wing
-right-winger
-righted
-righten
-righteous
-righteously
-righteousness
-righter
-rightful
-rightfully
-rightfulness
-righting
-rightism
-rightist
-rightly
-rightly-minded
-rightmost
-rightness
-rights
-rights-of-way
-rightsize
-rightward
-rightwards
-rigid
-rigidity
-rigidly
-rigidness
-rigmarole
-rigor
-rigorous
-rigorously
-rigorousness
-rigors
-rigour
-rigs
-rile
-Riley
-Rilke
-rill
-rim
-rime
-rimer
-rimless
-rimmed
-rims
-Rimsky-Korsakov
-rind
-rinds
-Rinehart
-ring
-ring-bone
-ring-dove
-ring-finger
-ring-flower
-ring-leader
-ring-off
-ring-out
-ring-pigeon
-ring-thimble
-ring-worm
-ringed
-ringer
-ringers
-ringing
-ringingly
-ringings
-ringleader
-ringlet
-ringlike
-ringmaster
-rings
-ringside
-ringworm
-rink
-rinky-dink
-rinse
-rinsed
-rinser
-rinses
-rinsing
-Rio
-Riordan
-riot
-rioted
-rioter
-rioters
-rioting
-riotous
-riotously
-riots
-rip
-rip-cord
-rip-off
-rip-roaring
-riparian
-ripcord
-ripe
-ripely
-ripen
-ripeness
-Ripley
-ripoff
-ripost
-riposte
-ripped
-ripper
-ripping
-ripple
-rippled
-ripples
-rippling
-ripply
-rips
-ripsaw
-riptide
-RISC
-rise
-risen
-riser
-risers
-rises
-risibility
-risible
-rising
-risings
-risk
-risked
-riskily
-riskiness
-risking
-risks
-risky
-risotto
-risque
-Ritchie
-rite
-rites
-Ritter
-ritual
-ritualism
-ritualistic
-ritualistically
-ritually
-rituals
-Ritz
-ritzy
-rival
-rivaled
-rivalled
-rivalling
-rivalries
-rivalry
-rive
-rivelled
-riven
-river
-river-horse
-Rivera
-riverain
-riverbank
-riverbed
-riverboat
-riverfront
-rivers
-riverside
-Riverview
-rivet
-riveter
-riveting
-riveting-machine
-rivets
-Riviera
-rivulet
-rivulets
-Riyadh
-riyal
-RNA
-roach
-road
-road-fence
-road-hog
-road-labourer
-road-metal
-road-roller
-road-side
-roadbed
-roadblock
-roadhouse
-roadie
-roadkill
-roadmanship
-roadrunner
-roads
-roadshow
-roadside
-roadstead
-roadster
-roadsters
-roadwasher
-roadway
-roadways
-roadwork
-roadworthy
-roam
-roamed
-roamer
-roaming
-roams
-roan
-roan-tree
-Roanoke
-roar
-roared
-roarer
-roaring
-roars
-roast
-roast-beef
-roast-meat
-roasted
-roaster
-roasting
-roasts
-rob
-robbed
-robber
-robberies
-robbers
-robbery
-Robbie
-Robbin
-robbing
-Robbins
-robe
-robed
-Robert
-Roberta
-Roberto
-Roberts
-Robertson
-Robertsons
-robes
-Robeson
-robin
-robing
-robins
-Robinson
-Robinsonville
-robot
-robotic
-robotics
-robotize
-robots
-robs
-robust
-robustious
-robustly
-robustness
-Rocco
-Rochester
-rochet
-Rochford
-rock
-rock(-music)
-rock-and-roll
-rock-bottom
-rock-cork
-rock-doe
-rock-garden
-rock-n-roll
-rock-ribbed
-rock-salt
-rock-steady
-rockabilly
-rockabye
-Rockaway
-Rockaways
-rockbound
-rocked
-Rockefeller
-rocker
-rockers
-rockery
-rocket
-rocketed
-rocketing
-rocketry
-rockets
-rockfall
-Rockford
-Rockies
-rockiness
-rocking
-rocking-chair
-rocking-horse
-Rockland
-rocks
-Rockville
-Rockwell
-rocky
-rococo
-rod
-rod-horse
-rode
-rodent
-rodents
-rodeo
-Rodgers
-Rodin
-Rodney
-rodomontade
-Rodriguez
-rods
-roe
-roe-buck
-roe-calf
-roe-stone
-roebuck
-rogation
-roger
-Rogers
-rogue
-roguery
-rogues
-roguish
-roguishly
-roguishness
-roil
-roister
-roisterer
-Roland
-role
-role-play
-role-playing
-roles
-roll
-roll-blind
-roll-film
-roll-top
-rollback
-rolled
-roller
-roller-skate
-roller-skates
-Rollerblade
-rollers
-rollerskating
-rollforward
-rollick
-rollicking
-Rollie
-rolling
-rolling-board
-rolling-chair
-rolling-mill
-rolling-pin
-rolling-press
-Rollins
-rollmicrofilm
-rollmop
-rollover
-rolls
-rollstop
-roly-poly
-ROM
-Romaic
-romaine
-Roman
-romance
-romancer
-romancers
-romances
-romancing
-Romanesque
-Romania
-Romanian
-Romanic
-romanization
-Romanizations
-romanize
-Romanizer
-Romanizers
-Romanizes
-Romano
-Romans
-romantic
-romantically
-romanticism
-romanticist
-romanticize
-romantics
-Romany
-Rome
-Romeldale
-Romish
-romp
-romped
-romper
-rompers
-romping
-romps
-Romulus
-Ron
-Ronald
-ronde
-rondo
-Ronnie
-Rontgen
-rood
-rood-arch
-roof
-roofed
-roofer
-roofing
-roofless
-roofs
-rooftop
-rook
-rookery
-rookie
-room
-roomage
-roomed
-roomer
-roomers
-roomette
-roomful
-roominess
-rooming
-roommate
-rooms
-roomy
-Rooney
-Roosevelt
-Rooseveltian
-roost
-rooster
-roosters
-root
-root-hog-or-die
-root-word
-rooted
-rooter
-rooting
-rootless
-rootlet
-roots
-rooty
-rope
-rope-dancer
-rope-drum
-rope-ladder
-rope-maker
-roped
-roper
-ropers
-ropes
-ropeway
-roping
-ropy
-Roquefort
-Roquemore
-Rorschach
-rorty
-Rosa
-Rosabelle
-Rosalie
-Rosario
-rosary
-rose
-rose-bay
-rose-chafer
-rose-colored
-rose-laurel
-rose-liniment
-rose-mallow
-rose-rash
-rose-vinegar
-rose-water
-rose-window
-roseate
-Roseau
-rosebud
-rosebuds
-rosebush
-Roseland
-Rosella
-roselle
-rosemary
-Rosen
-Rosenberg
-Rosenblum
-Rosenthal
-Rosenzweig
-roses
-Rosetta
-rosette
-rosewater
-rosewood
-Rosie
-rosily
-rosin
-rosiness
-Ross
-Rossi
-Rossini
-roster
-Rostov
-rostra
-rostrum
-Roswell
-rosy
-rot
-rota
-rotaprint
-Rotarian
-Rotarians
-rotary
-rotate
-rotated
-rotates
-rotating
-rotation
-rotational
-rotations
-rotator
-rotatory
-ROTC
-rote
-rotgut
-Roth
-Rothschild
-rotisserie
-rotograph
-rotogravure
-rotogravurer
-rotor
-rototiller
-rots
-rotten
-rottenly
-rottenness
-rotter
-Rotterdam
-rotting
-rotund
-rotunda
-rotundity
-rotundness
-rouble
-roue
-rouge
-rough
-rough-and-ready
-rough-and-tumble
-rough-cast
-rough-coat
-rough-draw
-rough-grind
-rough-hew
-rough-hewn
-rough-legged
-rough-machine
-rough-rider
-rough-shod
-rough-turn
-roughage
-roughed
-roughen
-rougher
-roughest
-roughhouse
-roughly
-roughneck
-roughness
-roughshod
-roulette
-Roumania
-round
-round-house
-round-shouldered
-round-the-clock
-round-trip
-round-up
-roundabout
-rounded
-roundedness
-roundelay
-rounder
-roundest
-roundhead
-roundheel
-roundhouse
-rounding
-roundish
-roundlog
-roundly
-roundness
-roundoff
-rounds
-roundtable
-roundup
-roundworm
-Rourke
-rouse
-roused
-rouses
-rousing
-Rousseau
-roust
-roustabout
-rout
-route
-routed
-router
-routers
-routes
-routine
-routinely
-routines
-routing
-routings
-routinize
-rove
-roved
-rover
-roves
-roving
-row
-rowan
-rowboat
-rowdily
-rowdiness
-rowdy
-rowdyism
-Rowe
-rowed
-rowel
-Rowena
-rower
-rowing
-Rowland
-Rowley
-rowlock
-rows
-Roxbury
-Roxy
-Roy
-royal
-royalist
-royalists
-royally
-royalties
-royalty
-Royce
-Rozelle
-rozliovat
-rozliovn
-RP
-RR
-RSFSR
-RSI
-RST
-RSV
-RSVP
-Ru
-Ruanda
-rub
-Rubaiyat
-rubato
-rubbed
-rubber
-rubber-stamp
-rubberize
-rubberneck
-rubbernecker
-rubbers
-rubbery
-rubbing
-rubbish
-rubbishy
-rubble
-rubdown
-rubella
-Ruben
-Rubens
-Rubicon
-rubicund
-rubidium
-rubies
-Rubin
-ruble
-rubles
-rubout
-rubric
-rubricate
-rubricator
-rubs
-ruby
-ruck
-rucksack
-ruckus
-ruction
-rudder
-rudderless
-rudders
-ruddiness
-ruddle
-ruddy
-rude
-rudely
-rudeness
-rudiment
-rudimentary
-rudiments
-Rudolf
-Rudolph
-Rudy
-Rudyard
-rue
-rueful
-ruefully
-ruefulness
-ruff
-ruffed
-ruffian
-ruffianly
-ruffians
-ruffle
-ruffled
-ruffler
-ruffles
-ruffly
-Rufus
-rug
-rugby
-rugged
-ruggedly
-ruggedness
-rugose
-rugs
-Ruhr
-ruin
-ruination
-ruinations
-ruined
-ruining
-ruinous
-ruinously
-ruins
-rule
-ruled
-ruler
-rulers
-rules
-ruling
-rulings
-ruly
-rum
-rum-hole
-rum-mill
-Rumania
-Rumanian
-Rumanians
-rumba
-rumble
-rumbled
-rumbler
-rumbles
-rumbling
-rumblings
-rumen
-Rumford
-ruminant
-ruminate
-rumination
-ruminative
-rummage
-Rummel
-rummer
-rummy
-rumor
-rumored
-rumormonger
-rumors
-rumour
-rumour-mongering
-rump
-rump-bone
-rump-steak
-rumple
-rumpled
-rumply
-rumpot
-rumpus
-run
-run!
-run-down
-run-in
-run-of-the-mill
-run-off
-run-on
-run-through
-run-up
-runabout
-runaround
-runaway
-rundle
-rundown
-rune
-rung
-Runge
-rungs
-runic
-runlet
-runnable
-runnel
-runner
-runner-up
-runners
-runners-up
-running
-running-knot
-running-place
-runny
-Runnymede
-runoff
-runs
-runt
-runtime
-runty
-runway
-Runyon
-rupee
-rupiah
-Ruppert
-rupture
-ruptured
-ruptures
-rupturing
-rural
-rurally
-Ruritania
-ruse
-rush
-rush-act
-rushed
-rusher
-rushes
-rushing
-Rushmore
-rushy
-rusk
-Russ
-Russell
-russet
-Russia
-Russian
-Russianizations
-Russianizes
-Russians
-Russo
-rust
-rusted
-rustic
-rustically
-rusticate
-rusticated
-rusticates
-rusticating
-rustication
-rusticity
-rustiness
-rusting
-rustle
-rustled
-rustler
-rustlers
-rustling
-rustproof
-rusts
-rusty
-rusty-dusty
-rut
-rutabaga
-Rutgers
-ruth
-Ruthenia
-Ruthenian
-ruthenium
-Rutherford
-rutherfordium
-ruthless
-ruthlessly
-ruthlessness
-Rutland
-Rutledge
-ruts
-rutting
-ruttish
-rutty
-RV
-RVT
-Rwanda
-Rwandan
-Rx
-Ryan
-Rydberg
-Ryder
-rye
-rye-grass
-rsum
-S&L
-s-mail
-s.n.
-s/he
-SA
-Saar
-Sabbath
-Sabbathize
-Sabbathizes
-sabbatical
-saber
-sabers
-Sabin
-Sabina
-Sabine
-sable
-sable-colored
-sables
-sabot
-sabotage
-saboteur
-sabra
-sabre
-sabulous
-sac
-saccharin
-saccharine
-sacerdotal
-sachem
-sachet
-Sachs
-sack
-sack-but
-sack-cloth
-sackcloth
-sacker
-sackful
-sacking
-sacks
-sacra
-sacral
-sacrament
-sacramental
-Sacramento
-sacred
-sacredly
-sacredness
-sacrifice
-sacrificed
-sacrificer
-sacrificers
-sacrifices
-sacrificial
-sacrificially
-sacrificing
-sacrilege
-sacrilegious
-sacrilegiously
-sacrist
-sacristan
-sacristy
-sacroiliac
-sacrosanct
-sacrosanctness
-sacrum
-sad
-sad-hearted
-Sadat
-sadden
-saddened
-saddens
-sadder
-saddest
-saddle
-saddle-bag
-saddle-horse
-saddle-maker
-saddlebag
-saddled
-saddler
-saddlery
-saddles
-Sadducee
-Sadie
-sadism
-sadist
-sadistic
-sadistically
-sadists
-Sadler
-sadly
-sadness
-sadomasochism
-sadomasochist
-sadomasochistic
-safari
-safe
-safe-conduct
-safe-deposit
-safeguard
-safeguarded
-safeguarding
-safeguards
-safekeeping
-safely
-safeness
-safer
-safes
-safest
-safeties
-safety
-safety-catch
-safety-cock
-safety-lamp
-safety-match
-safety-pin
-safety-valve
-safflower
-saffron
-sag
-saga
-sagacious
-sagaciously
-sagacity
-sage
-sagebrush
-sagely
-sages
-sagging
-saggy
-Saginaw
-sagittal
-Sagittarius
-sago
-sags
-saguaro
-Sahara
-Saharan
-Sahel
-sahib
-said
-Saigon
-sail
-sail-cloth
-sail-duck
-sail-plane
-sail-yard
-sailboard
-sailboat
-sailcloth
-sailed
-sailer
-sailfish
-sailing
-sailing-ship
-sailing-vessel
-sailor
-sailorly
-sailors
-sailplane
-sails
-saint
-sainted
-saintess
-sainthood
-saintlike
-saintliness
-saintly
-saints
-saith
-Sakai
-sake
-sakes
-saki
-Sal
-salable
-salacious
-salaciously
-salaciousness
-salacity
-salad
-salad-dressing
-salad-oil
-salad-parsley
-salads
-salamander
-salame
-salami
-salaried
-salaries
-salary
-sale
-saleable
-Salem
-Salerno
-sales
-salesclerk
-salesgirl
-Salesian
-saleslady
-salesman
-salesmanship
-salesmen
-salespeople
-salesperson
-saleswoman
-salience
-salient
-saliently
-Salina
-Salinas
-saline
-Salinger
-salinity
-Salisbury
-Salish
-saliva
-salivary
-salivate
-salivation
-Salk
-Salle
-sallies
-sallow
-sallowness
-sally
-sallying
-salmon
-salmonella
-salmonellae
-salon
-Salonica
-Salonika
-salons
-saloon
-saloons
-salsa
-salt
-salt-box
-salt-cellar
-salt-house
-salt-mine
-salt-water
-salt-works
-saltation
-saltcellar
-salted
-salter
-saltern
-salters
-saltier
-saltiest
-saltine
-saltiness
-salting
-Salton
-saltpeter
-saltpetre
-salts
-saltshaker
-saltwater
-salty
-salubrious
-salutary
-salutation
-salutations
-salutatory
-salute
-saluted
-salutes
-saluting
-Salvador
-Salvadoran
-Salvadorian
-salvage
-salvageable
-salvaged
-salvager
-salvages
-salvaging
-salvation
-Salvatore
-salve
-salver
-salves
-salvo
-Salz
-SAM
-Samara
-Samaria
-Samaritan
-samarium
-samba
-same
-same-sex
-sameness
-Sammy
-Samoa
-Samoan
-samovar
-sampan
-sample
-sampled
-sampler
-samplers
-samples
-sampling
-samplings
-Sampson
-Samson
-Samuel
-Samuels
-Samuelson
-samurai
-San
-San'a
-Sana
-Sanaa
-sanation
-sanative
-sanatoria
-sanatorium
-sanatory
-Sanborn
-Sanchez
-Sancho
-sancta
-sanctification
-sanctified
-sanctify
-sanctimonious
-sanctimoniously
-sanctimoniousness
-sanctimony
-sanction
-sanctioned
-sanctioning
-sanctions
-sanctitude
-sanctity
-sanctuaries
-sanctuary
-sanctum
-sand
-sand-bag
-sand-bank
-sand-bath
-sand-eel
-sand-glass
-sand-iron
-sand-paper
-sand-pit
-sand-stone
-sandal
-sandals
-sandalwood
-sandbag
-sandbank
-sandbar
-sandblast
-sandblaster
-sandbox
-Sandburg
-sandcastle
-sanded
-sander
-Sanderling
-Sanders
-Sanderson
-sandhog
-Sandia
-sandiness
-sanding
-sandlot
-sandlotter
-sandman
-sandpaper
-sandpiper
-Sandra
-sands
-sandstone
-sandstorm
-Sandusky
-sandwich
-sandwich-man
-sandwiches
-sandy
-sane
-sanely
-saneness
-saner
-sanest
-Sanford
-sang
-sang-froid
-sangfroid
-sangria
-sanguinary
-sanguine
-sanguinely
-sanguineous
-Sanhedrin
-sanitaria
-sanitarian
-sanitarium
-sanitary
-sanitation
-sanitize
-sanitorium
-sanity
-sank
-sans
-Sanscrit
-sanserif
-Sanskrit
-Sanskritic
-Sanskritize
-sansphrase
-Santa
-Santayana
-Santiago
-Santo
-Sao
-sap
-saphead
-sapid
-sapidity
-sapience
-sapiens
-sapient
-sapless
-sapling
-saplings
-saponaceous
-saponification
-sapper
-sapphire
-Sappho
-sappiness
-Sapporo
-sappy
-saprophyte
-saprophytic
-saps
-sapsucker
-sapwood
-Sara
-Saracen
-Saracens
-Sarah
-Sarajevo
-sarape
-Sarasota
-Saratoga
-Saratov
-sarcasm
-sarcasms
-sarcastic
-sarcastically
-sarcoma
-sarcomata
-sarcophagi
-sarcophagus
-sardine
-sardine-box
-Sardinia
-sardonic
-sardonically
-saree
-sarge
-Sargent
-sari
-sarmentous
-sarong
-sarsaparilla
-sartorial
-sartorially
-Sartre
-SASE
-sash
-sashay
-sashwindow
-Saskatchewan
-Saskatoon
-sass
-sassafras
-sassy
-sat
-satan
-satanic
-satanical
-satanically
-Satch
-satchel
-satchels
-sate
-sate-poll
-sated
-sateen
-sateless
-satellite
-satellites
-sates
-satiable
-satiate
-satiation
-satiety
-satin
-sating
-satinwood
-satiny
-satire
-satires
-satiric
-satirical
-satirically
-satirist
-satirize
-satisfaction
-satisfactions
-satisfactorily
-satisfactory
-satisfiability
-satisfiable
-satisfied
-satisfies
-satisfy
-satisfying
-satisfyingly
-satori
-satrap
-satrapy
-satsuma
-saturate
-saturated
-saturates
-saturating
-saturation
-Saturday
-Saturdays
-Saturn
-Saturnalia
-saturnalian
-saturnine
-Saturnism
-satyr
-satyriasis
-satyric
-sauce
-sauce-pan
-saucepan
-saucepans
-saucer
-saucers
-sauces
-saucily
-sauciness
-saucy
-Saud
-Saudi
-sauerkraut
-Saukville
-Saul
-Sault
-sauna
-Saunders
-saunter
-saurian
-sauropod
-sausage
-sausages
-saute
-sauterne
-savable
-savage
-savaged
-savagely
-savageness
-savager
-savagers
-savagery
-savages
-savaging
-savanna
-savannah
-savant
-save
-save-all
-saveable
-saved
-saveloy
-saver
-savers
-saves
-saving
-savings
-savings-bank
-saviors
-saviour
-savoir-faire
-Savonarola
-savor
-savored
-savoriness
-savoring
-savors
-savory
-savour
-savoury
-Savoy
-Savoyard
-Savoyards
-savvy
-saw
-saw-dust
-saw-fish
-saw-horse
-saw-mill
-saw-toothed
-sawbones
-sawbuck
-sawdust
-sawed
-sawed-off
-sawfish
-sawfly
-sawhorse
-sawing
-sawmill
-sawmills
-sawn
-saws
-sawtooth
-sawyer
-sax
-saxifrage
-Saxon
-Saxonization
-Saxonizations
-Saxonize
-Saxonizes
-Saxons
-Saxony
-saxophone
-saxophonist
-Saxton
-say
-say-so
-sayer
-sayers
-saying
-sayings
-says
-Sb
-SBA
-scab
-scab-wort
-scabbard
-scabbards
-scabbed
-scabbiness
-scabby
-scabies
-scabious
-scabrous
-scad
-scads
-scaffold
-scaffolding
-scaffoldings
-scaffolds
-Scala
-scalable
-scalar
-scalars
-scalawag
-scald
-scalded
-scalding
-scale
-scale-beam
-scaled
-scaleless
-scalene
-scales
-scaliness
-scaling
-scalings
-scallawag
-scallion
-scallop
-scalloped
-scallops
-scallywag
-scalp
-scalpel
-scalper
-scalps
-scaly
-scam
-scamp
-scamper
-scampering
-scampers
-scampi
-scan
-scandal
-scandal-grubber
-scandal-monger
-scandalize
-scandalmonger
-scandalous
-scandalously
-scandals
-Scandinavia
-Scandinavian
-Scandinavians
-scandium
-Scania
-scanned
-scanner
-scanners
-SCANNET
-scanning
-scans
-scansion
-scant
-scantier
-scantiest
-scantily
-scantiness
-scantling
-scantly
-scantness
-scanty
-scape
-scape-gallows
-scape-goat
-scape-grace
-scapegoat
-scapegrace
-scapula
-scapulae
-scapular
-scar
-scarab
-scaramouch
-Scarborough
-scarce
-scarcely
-scarceness
-scarcer
-scarcity
-scare
-scarecrow
-scared
-scaredy-cat
-scaremonger
-scares
-scarf
-scarification
-scarify
-scarily
-scariness
-scaring
-scarlatina
-Scarlatti
-scarlet
-scarp
-scarper
-scarred
-scars
-Scarsdale
-scarves
-scary
-scat
-scathe
-scathefull
-scatheless
-scathing
-scathingly
-scatological
-scatology
-scatter
-scatter-brained
-scatterbrain
-scatterbrained
-scattered
-scattering
-scatterling
-scatters
-scavage
-scavenge
-scavenger
-scenario
-scenarios
-scenarist
-scene
-scene-dock
-scene-painter
-scene-shifter
-scenery
-scenes
-scenic
-scenically
-scent
-scented
-scentless
-scents
-scepter
-scepters
-sceptic
-sceptical
-scepticism
-sceptre
-sceptred
-Schaefer
-Schaeffer
-Schafer
-Schaffner
-Schantz
-Schapiro
-schedulable
-schedule
-scheduled
-scheduler
-schedulers
-schedules
-scheduling
-Scheherazade
-Scheldt
-Schelling
-schema
-schemas
-schemata
-schematic
-schematically
-schematics
-scheme
-schemed
-schemer
-schemers
-schemes
-scheming
-Schenectady
-scherzi
-scherzo
-Schiller
-schilling
-schism
-schismatic
-schismatize
-schist
-schistose
-schizo
-schizoid
-schizophrenia
-schizophrenic
-schlemiel
-schlep
-schlep(per)
-schlepp
-schlepper
-Schlesinger
-schlimazel
-Schlitz
-schlock
-schlocky
-schloomp
-Schloss
-schmaltz
-schmaltzy
-schmalz
-schmear
-Schmidt
-Schmitt
-schmo
-schmoe
-schmooze
-schmuck
-Schnabel
-schnapps
-schnaps
-schnauzer
-Schneider
-schnitzel
-schnook
-schnorrer
-schnoz
-schnozz
-schnozzle
-Schoenberg
-Schofield
-scholar
-scholarly
-scholars
-scholarship
-scholarships
-scholastic
-scholastically
-scholastics
-school
-school-book
-school-boy
-school-fellow
-school-girl
-school-hire
-schoolbag
-schoolbook
-schoolboy
-schoolboys
-schoolchild
-schoolchildren
-schooled
-schooler
-schoolers
-schoolfellow
-schoolgirl
-schoolhouse
-schoolhouses
-schooling
-schoolman
-schoolmarm
-schoolmarmish
-schoolmaster
-schoolmasters
-schoolmate
-schoolmistress
-schoolroom
-schoolrooms
-schools
-schoolteacher
-schoolwork
-schoolyard
-schooner
-Schopenhauer
-Schottky
-schrod
-Schroeder
-Schroedinger
-Schubert
-Schultz
-Schulz
-Schumacher
-Schuman
-Schumann
-schuss
-schussboomer
-Schuster
-Schuyler
-Schuylkill
-schwa
-Schwab
-Schwabacher
-Schwartz
-Schweitzer
-SCI
-sci-fi
-sciatic
-sciatica
-science
-sciences
-scientific
-scientifically
-scientist
-scientists
-scientometrics
-scimitar
-scintilla
-scintillate
-scintillating
-scintillation
-sciolism
-scion
-scissible
-scission
-scissor
-scissorbill
-scissored
-scissoring
-scissors
-scissure
-scleroderma
-scleroses
-sclerosis
-sclerotic
-scoff
-scoffed
-scoffer
-scoffing
-scofflaw
-scoffs
-scold
-scolded
-scolding
-scolds
-scoliosis
-scollop
-sconce
-scone
-scoop
-scooped
-scooping
-scoops
-scoot
-scooter
-scope
-scoped
-scopes
-scoping
-scorbute
-scorbutic
-scorch
-scorched
-scorcher
-scorches
-scorching
-score
-scoreboard
-scorecard
-scored
-scorekeeper
-scoreless
-scorer
-scorers
-scores
-scoria
-scoring
-scorings
-scorn
-scorned
-scorner
-scornful
-scornfully
-scorning
-scorns
-Scorpio
-scorpion
-scorpion-grass
-scorpion-wort
-scorpions
-Scot
-scot-free
-scotch
-Scotchgard
-Scotchman
-Scotchwoman
-Scotia
-Scotian
-Scotland
-Scots
-Scotsman
-Scotsmen
-Scotswoman
-Scott
-Scottie
-Scottish
-Scottsdale
-Scotty
-scoundrel
-scoundrels
-scour
-scoured
-scourer
-scourge
-scouring
-scours
-scout
-scouted
-scouting
-scoutmaster
-scouts
-scow
-scowing
-scowl
-scowled
-scowling
-scowls
-scrabble
-scrabbler
-scrag
-scraggly
-scraggy
-scram
-Scram!
-scramble
-scrambled
-scrambler
-scrambles
-scrambling
-Scranton
-scrap
-scrap-heap
-scrapbook
-scrape
-scrape-penny
-scraped
-scraper
-scrapers
-scrapes
-scrapheap
-scraping
-scrapings
-scrapped
-scrapper
-scrappy
-scraps
-scratch
-scratch-cat
-scratchboard
-scratched
-scratcher
-scratchers
-scratches
-scratchily
-scratchiness
-scratching
-scratchy
-scrawl
-scrawled
-scrawling
-scrawls
-scrawly
-scrawniness
-scrawny
-screak
-scream
-screamed
-screamer
-screamers
-screaming
-screams
-scree
-screech
-screech-owl
-screech-thrush
-screeched
-screeches
-screeching
-screechy
-screed
-screen
-screen-wiper
-screen-writer
-screened
-screening
-screenings
-screenplay
-screens
-screenwriter
-screw
-screw-arbor
-screw-driver
-screw-jack
-screw-knob
-screw-propeller
-screw-thread
-screw-wrench
-screwball
-screwdriver
-screwed
-screwiness
-screwing
-screwlike
-screws
-screwworm
-screwy
-scribal
-scribble
-scribble-scrabble
-scribbled
-scribbler
-scribbles
-scribe
-scriber
-scribes
-scribing
-Scribners
-scrim
-scrimmage
-scrimp
-scrimpy
-scrimshaw
-scrip
-Scripps
-script
-scripted
-scriptorium
-scripts
-scriptural
-scripture
-scriptwriter
-scrivener
-scrod
-scrofula
-scrofulous
-scroll
-scrolled
-scrolling
-scrolls
-scroop
-scrota
-scrotal
-scrotum
-scrounge
-scrounger
-scroungy
-scrub
-scrubber
-scrubbing-brush
-scrubby
-scruff
-scruffily
-scruffiness
-scruffy
-scrumptious
-scrumptiously
-scrunch
-scrunchie
-scrunchy
-scruple
-scrupulosity
-scrupulous
-scrupulously
-scrupulousness
-scrutable
-scrutation
-scrutator
-scrutineer
-scrutineers
-scrutinize
-scrutinized
-scrutinizing
-scrutinous
-scrutiny
-scuba
-scud
-scuddle
-scuff
-scuffle
-scuffled
-scuffles
-scuffling
-sculk
-scull
-sculler
-scullery
-scullion
-scullionly
-sculp
-sculpt
-sculpted
-sculptor
-sculptors
-sculptress
-sculpts
-sculptural
-sculpture
-sculptured
-sculptures
-scum
-scumbag
-scumble
-scumming
-scummy
-scupper
-scurf
-scurfy
-scurried
-scurrility
-scurrilous
-scurrilously
-scurrilousness
-scurry
-scurvily
-scurvy
-scut
-scutcheon
-scutter
-scuttle
-scuttlebutt
-scuttled
-scuttles
-scuttling
-scuzzy
-Scylla
-scythe
-scythes
-Scythia
-SD
-SDI
-se-
-sea
-sea-bank
-sea-bear
-sea-bird
-sea-borne
-sea-boy
-sea-breeze
-sea-calf
-sea-coast
-sea-cob
-sea-cow
-sea-dog
-sea-duck
-sea-eagle
-sea-eel
-sea-fairy
-sea-farer
-sea-faring
-sea-gauge
-sea-grass
-sea-gull
-sea-horse
-sea-lion
-sea-maid
-sea-mew
-sea-moss
-sea-urchin
-sea-wall
-sea-weed
-seabed
-seabird
-seaboard
-Seaborg
-seaborne
-Seabrook
-seacoast
-seacoasts
-seafarer
-seafaring
-seafood
-seafront
-Seagate
-seagoing
-Seagram
-seagull
-seahorse
-seal
-seal-oil
-sealant
-sealed
-sealer
-sealing
-sealing-wax
-sealring
-seals
-sealskin
-sealy
-seam
-seaman
-seamanship
-seamed
-seamen
-seaming
-seamless
-seams
-seamstress
-seamy
-Sean
-seance
-seaplane
-seaport
-seaports
-Seaquarium
-sear
-search
-search-light
-searched
-searcher
-searchers
-searches
-searching
-searchingly
-searchings
-searchlight
-seared
-searing
-searingly
-Sears
-seas
-seascape
-seashell
-seashore
-seashores
-seasick
-seasickness
-seaside
-season
-seasonable
-seasonably
-seasonage
-seasonal
-seasonally
-seasoned
-seasoner
-seasoners
-seasoning
-seasonings
-seasons
-seat
-seated
-seating
-seats
-Seattle
-seawall
-seaward
-seawards
-seawater
-seaway
-seaweed
-seaworthiness
-seaworthy
-sebaceous
-Sebastian
-seborrhea
-seborrhoea
-secant
-secateur
-secateurs
-secede
-seceded
-secedes
-seceding
-secession
-secessionist
-seclude
-secluded
-seclusion
-seclusive
-second
-second-best
-second-class
-second-guess
-second-hand
-second-rate
-second-sight
-second-string
-second-stringer
-secondaries
-secondarily
-secondary
-seconded
-seconder
-seconders
-secondhand
-seconding
-secondly
-seconds
-secrecy
-secret
-secretarial
-secretariat
-secretaries
-secretary
-secretaryship
-secrete
-secreted
-secretes
-secreting
-secretion
-secretions
-secretive
-secretively
-secretiveness
-secretly
-secretory
-secrets
-sect
-sectarian
-sectarianism
-sectary
-section
-sectional
-sectionalism
-sectionalization
-sectioned
-sectioning
-sections
-sector
-sectors
-sects
-secular
-secularism
-secularist
-secularization
-secularize
-secure
-secured
-securely
-secures
-securing
-securings
-securities
-security
-sedan
-sedate
-sedately
-sedateness
-sedation
-sedative
-sedentary
-Seder
-sedge
-Sedgwick
-sedgy
-sediment
-sedimentary
-sedimentation
-sediments
-sedition
-seditious
-seduce
-seduced
-seducement
-seducer
-seducers
-seduces
-seducing
-seduction
-seductive
-seductively
-seductiveness
-seductress
-sedulity
-sedulous
-sedulously
-see
-see!
-see-saw
-see-through
-seed
-seed-bed
-seed-cover
-seed-drill
-seed-plot
-seed-sower
-seed-time
-seedbed
-seedcase
-seeded
-seeder
-seeders
-seediness
-seeding
-seedings
-seedless
-seedling
-seedlings
-seedlip
-seedlop
-seedpod
-seeds
-seedsman
-seedy
-seeing
-seek
-seeker
-seekers
-seeking
-seeks
-Seeley
-seem
-seemed
-seemer
-seeming
-seemingly
-seemless
-seemliness
-seemly
-seems
-seen
-seep
-seepage
-seeped
-seeping
-seeps
-seer
-seers
-seersucker
-sees
-seesaw
-seethe
-seethed
-seethes
-seething
-segment
-segmental
-segmentation
-segmentations
-segmented
-segmenting
-segments
-Segovia
-segregate
-segregated
-segregates
-segregating
-segregation
-segregationist
-segue
-Segundo
-Seidel
-seigneur
-seignior
-seigniorial
-seine
-seiner
-seisin
-seismic
-seismically
-seismograph
-seismographer
-seismographic
-seismography
-seismologic
-seismological
-seismologist
-seismology
-seismoscope
-seize
-seized
-seizer
-seizes
-seizin
-seizing
-seizure
-seizures
-seldom
-select
-selected
-selecting
-selection
-selections
-selective
-selectively
-selectiveness
-selectivity
-selectman
-selectmen
-selectness
-selector
-selectors
-Selectric
-selects
-Selena
-selenium
-selenographer
-selenography
-self
-self-abasement
-self-absorbed
-self-absorption
-self-abuse
-self-addressed
-self-advancement
-self-aggrandizement
-self-aggrandizing
-self-analysis
-self-applause
-self-appointed
-self-assertion
-self-assertive
-self-assumption
-self-assurance
-self-assured
-self-aware
-self-awareness
-self-cataloguing
-self-centered
-self-centeredness
-self-centred
-self-citation
-self-cleaning
-self-coloured
-self-command
-self-complacency
-self-complacent
-self-composure
-self-conceit
-self-confessed
-self-confidence
-self-confident
-self-confidently
-self-congratulation
-self-congratulatory
-self-conscious
-self-consciously
-self-consciousness
-self-contained
-self-contradiction
-self-contradictory
-self-control
-self-controlled
-self-criticism
-self-deceit
-self-deception
-self-defeating
-self-defence
-self-defense
-self-delusion
-self-denial
-self-denying
-self-deprecating
-self-deprecation
-self-destruct
-self-destruction
-self-destructive
-self-determination
-self-determined
-self-discipline
-self-disciplined
-self-doubt
-self-educated
-self-effacement
-self-effacing
-self-employed
-self-employment
-self-esteem
-self-evident
-self-evidently
-self-examination
-self-excitation
-self-explanatory
-self-expression
-self-fertilization
-self-fluxing
-self-fulfilling
-self-fulfillment
-self-governing
-self-government
-self-help
-self-homicide
-self-image
-self-importance
-self-important
-self-imposed
-self-imposture
-self-improvement
-self-incrimination
-self-induced
-self-indulgence
-self-indulgent
-self-inflicted
-self-interest
-self-knowledge
-self-love
-self-made
-self-negating
-self-opinion
-self-perpetuating
-self-pity
-self-pitying
-self-pollination
-self-portrait
-self-positive
-self-possessed
-self-possession
-self-preservation
-self-proclaimed
-self-propelled
-self-propelling
-self-protection
-self-realization
-self-regard
-self-regulating
-self-regulation
-self-regulatory
-self-release
-self-reliance
-self-reliant
-self-renunciation
-self-reproach
-self-respect
-self-respecting
-self-restraint
-self-righteous
-self-righteously
-self-righteousness
-self-rule
-self-sacrifice
-self-sacrificing
-self-satisfaction
-self-satisfied
-self-sealing
-self-seeker
-self-seeking
-self-serve
-self-service
-self-serving
-self-slaughter
-self-starter
-self-starting
-self-styled
-self-sufficiency
-self-sufficient
-self-supplier
-self-support
-self-supporting
-self-sustaining
-self-taught
-self-trailer
-self-will
-self-willed
-self-winding
-self-wise
-self-worth
-selfabuse
-selfacting
-selfactive
-selfish
-selfishly
-selfishness
-selfless
-selflessly
-selflessness
-selfmademan
-Selfridge
-selfsame
-Selkirk
-sell
-sell-out
-seller
-sellers
-selling
-sellotape
-sellout
-sells
-Selma
-seltzer
-selvage
-selvedge
-selves
-Selwyn
-semanteme
-semantic
-semantical
-semantically
-semanticise
-semanticist
-semanticists
-semantics
-semaphore
-semaphores
-Semarang
-semblance
-semen
-semester
-semesters
-semi
-semi-
-semi-annual
-semi-automatic
-semi-bright
-semi-circle
-semi-circular
-semi-colon
-semi-drunk
-semi-final
-semi-lies
-semi-literacy
-semi-monthly
-semi-proletarian
-semi-weekly
-semiannual
-semiannually
-semiarid
-semiautomated
-semiautomatic
-semibreve
-semicircle
-semicircular
-semicolon
-semicolons
-semiconductor
-semiconductors
-semiconscious
-semidetached
-semifinal
-semifinalist
-semigraphics
-semimicroform
-semimonthly
-seminal
-seminar
-seminarian
-seminaries
-seminars
-seminary
-semination
-seminole
-semiofficial
-semiotic
-semiotics
-semipermanent
-semipermanently
-semipermeable
-semiprecious
-semiprivate
-semiprofessional
-semiquaver
-Semiramis
-semiretired
-semis
-semiskilled
-semisolid
-semisweet
-Semite
-Semitic
-Semiticize
-Semiticizes
-Semitization
-Semitizations
-Semitize
-Semitizes
-semitone
-semitrailer
-semitransparent
-semitropical
-semivowel
-semiweekly
-semiyearly
-semolina
-sempiternal
-sempstress
-Semtex
-senate
-senates
-senator
-senatorial
-senators
-send
-send-off
-send-up
-Sendai
-sender
-senders
-sending
-sends
-Seneca
-Senegal
-Senegalese
-senescence
-senescent
-seneschal
-senile
-senility
-senior
-seniority
-seniors
-senna
-sennight
-senor
-senora
-senorita
-sensation
-sensational
-sensationalism
-sensationalist
-sensationalize
-sensationally
-sensations
-sense
-sensed
-senseless
-senselessly
-senselessness
-senses
-sensibilities
-sensibility
-sensible
-sensibleness
-sensibly
-sensing
-sensitive
-sensitively
-sensitiveness
-sensitives
-sensitivities
-sensitivity
-sensitization
-sensitize
-sensor
-sensorial
-sensorium
-sensors
-sensory
-sensual
-sensualist
-sensuality
-sensualize
-sensually
-sensuous
-sensuously
-sensuousness
-sent
-sentence
-sentence-semantics
-sentenced
-sentences
-sentencing
-sentential
-sententious
-sententiously
-sentience
-sentient
-sentiment
-sentimental
-sentimentalism
-sentimentalist
-sentimentality
-sentimentalization
-sentimentalize
-sentimentally
-sentiments
-sentinel
-sentinels
-sentries
-sentry
-sentry-box
-Seoul
-sepal
-separability
-separable
-separably
-separate
-separated
-separately
-separateness
-separates
-separating
-separation
-separations
-separatism
-separatist
-separative
-separator
-separators
-sepia
-Sepoy
-sepsis
-sept
-sept-
-septa
-September
-Septembers
-septenary
-septennial
-septet
-septette
-septic
-septicaemia
-septicemia
-septicemic
-septuagenarian
-septuagenary
-Septuagint
-septum
-septuple
-sepulcher
-sepulchers
-sepulchral
-sepulchre
-sepulture
-sequel
-sequels
-sequence
-sequenced
-sequencer
-sequencers
-sequences
-sequencing
-sequencings
-sequent
-sequential
-sequentiality
-sequentialize
-sequentialized
-sequentializes
-sequentializing
-sequentially
-sequester
-sequestrate
-sequestration
-sequestrator
-sequin
-sequined
-sequinned
-Sequoya
-sera
-Serafin
-seraglio
-serape
-seraph
-seraphic
-seraphim
-Serb
-Serbia
-Serbian
-Serbians
-Serbo-
-Serbo-Croatian
-sere
-serenade
-serendipitous
-serendipity
-serene
-serenely
-sereneness
-serenity
-serf
-serfdom
-serfs
-serge
-sergeant
-sergeant-at-arms
-sergeants
-sergeants-at-arms
-Sergei
-serial
-serializability
-serializable
-serialization
-serializations
-serialize
-serialized
-serializes
-serializing
-serially
-serials
-series
-serif
-serigraph
-serigraphy
-serious
-serious-minded
-seriously
-seriousness
-serjeant
-sermon
-sermonette
-sermonize
-sermonizer
-sermons
-serology
-serous
-Serpens
-serpent
-serpentine
-serpents
-Serra
-serrate
-serrated
-serration
-serried
-serum
-serums
-servant
-servants
-serve
-served
-server
-servers
-serves
-service
-service-dress
-service-kit
-service-pipe
-serviceability
-serviceable
-serviced
-serviceman
-servicemen
-services
-servicewoman
-servicing
-serviette
-servile
-servility
-serving
-servings
-servitor
-servitude
-servo
-servo-motor
-servomechanism
-servomotor
-sesame
-sesquicentennial
-sessile
-session
-sessions
-set
-set-back
-set-down
-set-off
-set-out
-set-to
-set-up
-setback
-Seth
-Seton
-sets
-setscrew
-settable
-settee
-setter
-setter-on
-setters
-setting
-setting-dog
-setting-in
-setting-off
-setting-out
-setting-pole
-setting-stick
-setting-up
-Settings
-settle
-settled
-settlement
-settlements
-settler
-settlers
-settles
-settling
-setup
-setups
-seven
-sevenfold
-sevens
-seventeen
-seventeens
-seventeenth
-seventh
-seventies
-seventieth
-seventy
-seventy-eight
-sever
-several
-severalfold
-severally
-severalty
-severance
-severe
-severed
-severely
-severeness
-severer
-severest
-severing
-severities
-severity
-Severn
-severs
-Seville
-sew
-sewage
-Seward
-sewed
-sewer
-sewerage
-sewers
-sewing
-sewing-machine
-sewing-press
-sewing-silk
-sewn
-sews
-sex
-sexagenarian
-sexed
-sexes
-sexily
-sexiness
-sexism
-sexist
-sexless
-sexologist
-sexology
-sexpot
-Sextans
-sextant
-sextet
-sextette
-sextillion
-sexto
-sexton
-sextuple
-sextuplet
-sexual
-sexuality
-sexually
-sexy
-Seychelles
-Seymour
-sgraffito
-Sgt
-sh
-shabbily
-shabbiness
-shabby
-shack
-shacked
-shackle
-shackled
-shackles
-shackling
-shacks
-shad
-shaddock
-shade
-shaded
-shades
-shadier
-shadiest
-shadily
-shadiness
-shading
-shadings
-shadow
-shadowbox
-shadowed
-shadowing
-shadows
-shadowy
-shady
-Shafer
-Shaffer
-shaft
-shaft-horse
-shafting
-shafts
-shag
-shagginess
-shaggy
-shagreen
-shah
-shakable
-shakably
-shake
-shake-down
-shake-off
-shake-up
-shakedown
-shaken
-shakeout
-shakers
-shakes
-Shakespeare
-Shakespearean
-Shakespearian
-Shakespearize
-Shakespearizes
-shakeup
-shakily
-shakiness
-shaking
-shako
-shaky
-shale
-shall
-shallop
-shallot
-shallow
-shallow-brained
-shallower
-shallowly
-shallowness
-shallows
-shalt
-sham
-sham-fight
-shaman
-shamanic
-shamble
-shambles
-shame
-shame-faced
-shamed
-shamefaced
-shamefacedly
-shameful
-shamefully
-shamefulness
-shameless
-shamelessly
-shamelessness
-shames
-shaming
-shammer
-shammy
-shamois
-shampoo
-shampooer
-shamrock
-shams
-shan't
-shandy
-Shanghaied
-Shanghaiing
-Shanghaiings
-Shanghais
-Shangri-la
-shank
-shannon
-shanties
-shanty
-shantytown
-shape
-shaped
-shapeless
-shapelessly
-shapelessness
-shapeliness
-shapely
-shaper
-shapers
-shapes
-shaping
-Shapiro
-sharable
-shard
-share
-share-out
-shareable
-sharecrop
-sharecropper
-sharecroppers
-shared
-shareholder
-shareholders
-sharer
-sharers
-shares
-shareware
-Shari
-sharia
-sharing
-shark
-sharker
-sharks
-sharkskin
-Sharon
-sharp
-sharp-edged
-sharp-eyed
-sharp-set
-sharp-shooter
-sharp-tongued
-sharp-witted
-Sharpe
-sharpen
-sharpened
-sharpener
-sharpening
-sharpens
-sharper
-sharpest
-sharpie
-sharping
-sharply
-sharpness
-sharpshoot
-sharpshooter
-sharpshooting
-sharpy
-Shasta
-shat
-shatter
-shattered
-shattering
-shatterproof
-shatters
-Shattuck
-shave
-shaved
-shaven
-shaver
-shaves
-shavetail
-shaving
-shaving-brush
-shavings
-Shaw
-Shawano
-shawl
-shawls
-shawm
-Shawnee
-shay
-she
-she'd
-she'll
-she's
-she-ass
-she-cousin
-she-friend
-she-goat
-she-servant
-she-wolf
-Shea
-sheaf
-shear
-sheared
-shearing
-shears
-sheath
-sheathe
-sheathing
-sheaths
-sheave
-sheaves
-shebang
-Sheboygan
-shed
-shedding
-Shedir
-sheds
-Sheehan
-sheen
-sheeny
-sheep
-sheep's-head
-sheep's-sorrel
-sheep-cot
-sheep-cote
-sheep-fold
-sheep-master
-sheep-pen
-sheep-shearing
-sheepdog
-sheepfold
-sheepherder
-sheepish
-sheepishly
-sheepishness
-sheepskin
-sheer
-sheered
-sheerness
-sheet
-sheeted
-sheeting
-sheetlike
-sheets
-Sheffield
-sheik
-sheikdom
-sheikh
-sheikhdom
-Sheila
-shekel
-shekels
-Shelby
-Sheldon
-shelf
-shelf-mark
-shelf-number
-shelf-reading
-shell
-shell-board
-shell-pit
-shell-proof
-shell-shocked
-shell-work
-shellac
-shellack
-shellacking
-shelled
-sheller
-Shelley
-shellfire
-shellfish
-shelling
-shells
-shelly
-shelter
-sheltered
-sheltering
-shelterless
-shelters
-Shelton
-shelve
-shelved
-shelves
-shelving
-Shenandoah
-shenanigan
-shenanigans
-Shenyang
-Shepard
-shepherd
-shepherdess
-shepherds
-Sheppard
-Sheraton
-sherbert
-sherbet
-sherd
-Sheridan
-sheriff
-sheriffdom
-sheriffs
-sheriffship
-sheriffwick
-Sherlock
-Sherman
-Sherpa
-Sherrill
-sherry
-Sherwin
-Sherwood
-shew
-shh
-shiatsu
-shibboleth
-shied
-shield
-shield-bearer
-shielded
-shielding
-Shields
-shier
-shies
-shiest
-shift
-shifted
-shifter
-shifters
-shiftier
-shiftiest
-shiftily
-shiftiness
-shifting
-shiftless
-shiftlessly
-shiftlessness
-shifts
-shifty
-Shiite
-Shiites
-Shijiazhuang
-Shikoku
-shill
-shillalah
-shillelagh
-shilling
-shillings
-Shillong
-shilly-shally
-Shiloh
-shim
-shimmer
-shimmering
-shimmery
-shimmy
-shin
-shinbone
-shindig
-shindy
-shine
-shined
-shiner
-shiners
-shines
-shingle
-shingles
-shinguard
-shininess
-shining
-shiningly
-shinny
-shinsplints
-Shinto
-Shintoism
-Shintoist
-Shintoize
-Shintoizes
-shiny
-ship
-ship-based
-ship-boy
-ship-broker
-ship-builder
-ship-carriage
-ship-owner
-ship-wright
-shipboard
-shipbuilder
-shipbuilding
-Shipley
-shipload
-shipman
-shipmate
-shipment
-shipments
-shipowner
-shipped
-shipper
-shippers
-shipping
-shipping-agent
-ships
-shipshape
-shipwreck
-shipwrecked
-shipwrecks
-shipwright
-shipyard
-shire
-shirk
-shirker
-shirking
-shirks
-Shirley
-shirr
-shirring
-shirt
-shirt-front
-shirtfront
-shirting
-shirtless
-shirts
-shirtsleeve
-shirtsleeves
-shirttail
-shirtwaist
-shirty
-shit
-shitty
-shiv
-Shiva
-shiver
-shivered
-shiverer
-shivering
-shivers
-shivery
-shlemiel
-shlep
-shlepp
-shlock
-shmaltz
-shmoe
-Shmuel
-shoal
-shoals
-shoaly
-shoat
-shock
-shocked
-shocker
-shockers
-shocking
-shockingly
-Shockley
-shockproof
-shocks
-shod
-shodden
-shoddily
-shoddiness
-shoddy
-shoe
-shoe-black
-shoe-blacking
-shoe-boy
-shoe-brush
-shoe-buckle
-shoe-horn
-shoe-knife
-Shoe-leather!
-shoe-maker
-shoe-nail
-shoe-string
-shoed
-shoehorn
-shoeing
-shoelace
-shoelast
-shoeless
-shoemaker
-shoemaker's
-shoemaking-trade
-shoes
-shoeshine
-shoestring
-shoetree
-shogun
-shogunate
-Shoji
-shone
-shoo
-shoo-in
-shook
-shook-up
-shoot
-shoot-out
-shooter
-shooters
-shooting
-shootings
-shootout
-shoots
-shop
-shop-assistant
-shop-boy
-shop-keeper
-shop-lifter
-shop-steward
-shop-walker
-shop-window
-shopkeeper
-shopkeepers
-shoplift
-shoplifter
-shoplifting
-shoppe
-shopped
-shopper
-shoppers
-shopping
-shops
-shoptalk
-shopworn
-shore
-shorebird
-shoreline
-shores
-Shorewood
-shoring
-shorn
-short
-short-change
-short-circuit
-short-handed
-short-lived
-short-order
-short-range
-short-sighted
-short-sightedly
-short-sightedness
-short-spoken
-short-tempered
-short-term
-short-termism
-short-termist
-short-winded
-short-witted
-shortage
-shortages
-shortbread
-shortcake
-shortchange
-shortcoming
-shortcomings
-shortcut
-shortcuts
-shorted
-shorten
-shortened
-shortening
-shortens
-shorter
-shortest
-shortfall
-shorthand
-shorthanded
-shorthorn
-shortie
-shorting
-shortish
-shortly
-shortness
-shorts
-shortsighted
-shortsightedly
-shortsightedness
-shortstop
-shortwave
-shorty
-Shoshone
-Shoshoni
-shot
-shot-putter
-shot-putting
-shotgun
-shotguns
-shots
-shotten
-should
-shoulder
-shoulder-blade
-shoulder-bone
-shoulder-chapper
-shoulder-head
-shoulder-note
-shouldered
-shouldering
-shoulders
-shouldn't
-Shoulet
-shout
-shouted
-shouter
-shouters
-shouting
-shouts
-shove
-shoved
-shovel
-shoveled
-shovelful
-shovels
-shoves
-shoving
-show
-show-case
-show-forth
-show-off
-show-room
-show-stopper
-show-through
-show-window
-showbiz
-showboat
-showcase
-showdown
-showed
-shower
-shower-bath
-showered
-showering
-showers
-showery
-showgirl
-showily
-showiness
-showing
-showings
-showman
-showmanship
-shown
-showoff
-showpiece
-showplace
-showroom
-shows
-showy
-shrank
-shrapnel
-shred
-shredder
-shredding
-shreds
-Shreveport
-shrew
-shrew-mouse
-shrewd
-shrewdest
-shrewdly
-shrewdness
-shrewish
-shrews
-shriek
-shrieked
-shrieking
-shrieks
-shrieval
-shrievalty
-shrift
-shrike
-shrill
-shrilled
-shrilling
-shrillness
-shrilly
-shrimp
-shrine
-shrines
-shrink
-shrink-back
-shrink-resistant
-shrink-wrap
-shrink-wrapped
-shrinkable
-shrinkage
-shrinking
-shrinks
-shrive
-shrivel
-shriveled
-shriven
-shroud
-shrouded
-shrove
-shroving
-shrub
-shrubbery
-shrubby
-shrubs
-shrug
-shrugs
-shrunk
-shrunken
-shtick
-Shu
-shuck
-shucks
-shudder
-shuddered
-shuddering
-shudders
-shuffle
-shuffleboard
-shuffled
-shuffler
-shuffles
-shuffling
-Shulman
-shun
-shunless
-shuns
-shunt
-shunter
-shush
-shut
-shut-eye
-shut-in
-shutdown
-shutdowns
-shuteye
-shutoff
-shutout
-shuts
-shutter
-shutterbug
-shuttered
-shutters
-shutting
-shuttle
-shuttle-cock
-shuttlecock
-shuttled
-shuttles
-shuttling
-shy
-Shylock
-Shylockian
-shyly
-shyness
-shyster
-Si
-Siam
-Siamese
-Sian
-Siberia
-Siberian
-sibilant
-Sibley
-sibling
-siblings
-sibyl
-sibylline
-sic
-siccative
-sice
-Sicilian
-Siciliana
-Sicilians
-Sicily
-sick
-sick-bed
-sick-fund
-sick-leave
-sickbed
-sicken
-sickener
-sickening
-sickeningly
-sicker
-sickest
-sickie
-sickish
-sickle
-sickle-shaped
-sickly
-sickness
-sicknesses
-sicknurse
-sicko
-sickout
-sickroom
-side
-side-box
-side-bracket
-side-by-side
-side-car
-side-dish
-side-face
-side-glance
-side-heading
-side-saddle
-side-split
-side-splitter
-side-table
-side-walk
-side-ways
-side-whiskers
-sidearm
-sideband
-sidebar
-sideboard
-sideboards
-sideburns
-sidecar
-sided
-sidekick
-sidelight
-sidelights
-sideline
-sidelines
-sidelong
-sideman
-sidepiece
-sidereal
-sides
-sidesaddle
-sideshow
-sidesplitting
-sidestep
-sidestroke
-sideswipe
-sidetrack
-sideview
-sidewalk
-sidewalks
-sidewall
-sideways
-sidewinder
-sidewise
-siding
-sidings
-sidle
-Sidney
-SIDS
-siege
-Siegel
-sieges
-Siegfried
-Sieglinda
-Siegmund
-Siemens
-Siena
-sienna
-sierra
-siesta
-sieve
-sieves
-Sifford
-sift
-sifted
-sifter
-sifting
-SIGGRAPH
-sigh
-sighed
-sighing
-sighs
-sight
-sight-hole
-sight-read
-sight-reader
-sight-see
-sight-seeing
-sighted
-sightfulness
-sighting
-sightings
-sightless
-sightly
-sightread
-sights
-sightseeing
-sightseer
-sigla
-siglum
-sigma
-Sigmund
-sign
-sign-off
-sign-post
-signal
-signaled
-signaler
-signaling
-signalization
-signalize
-signalled
-signaller
-signalling
-signally
-signalman
-signals
-signary
-signatory
-signature
-signatures
-signboard
-signed
-signer
-signers
-signet
-significance
-significancy
-significant
-significantly
-significants
-signification
-significative
-signified
-signifies
-signify
-signifying
-signing
-signor
-signora
-signore
-signori
-signorina
-signorine
-signpost
-signs
-Sikh
-Sikhes
-Sikhism
-Sikhs
-Sikkim
-Sikkimese
-Sikorsky
-silage
-Silas
-silence
-silenced
-silencer
-silencers
-silences
-silencing
-silent
-silently
-Silesia
-silex
-silhouette
-silhouetted
-silhouettes
-silica
-silicate
-siliceous
-silicious
-silicon
-silicone
-silicosis
-silk
-silk-husk
-silk-screen
-silk-worm
-silken
-silkier
-silkiest
-silkily
-Silkine
-silkiness
-silks
-silkscreen
-silkworm
-silky
-sill
-silliest
-silliness
-sills
-silly
-silo
-silt
-silted
-silting
-silts
-silty
-Silurian
-silvan
-silver
-silver-beater
-silver-mine
-silver-plated
-silver-smith
-silver-tongued
-silver-weed
-silvered
-silverfish
-silvering
-Silverman
-silvers
-silversmith
-Silverstein
-silverware
-silvery
-SIM
-simian
-similar
-similarities
-similarity
-similarly
-simile
-similitude
-Simla
-simmer
-simmered
-simmering
-simmers
-Simmons
-Simmonsville
-Simms
-Simon
-simon-pure
-simonize
-Simons
-Simonson
-simony
-simpatico
-simper
-simple
-simple-hearted
-simple-minded
-simple-mindedness
-simpleminded
-simpleness
-simpler
-simplest
-simpleton
-simplex
-simplicities
-simplicity
-simplification
-simplifications
-simplified
-simplifier
-simplifiers
-simplifies
-simplify
-simplifying
-simplistic
-simplistically
-simply
-Simpson
-Sims
-simulate
-simulated
-simulates
-simulating
-simulation
-simulations
-simulator
-simulators
-simulcast
-simultaneity
-simultaneous
-simultaneously
-sin
-Sinai
-sinapism
-Sinatra
-Sinbad
-since
-sincere
-sincerely
-sincerest
-sincerity
-sinciput
-Sinclair
-sine
-sinecure
-sines
-sinew
-sinews
-sinewy
-sinful
-sinfully
-sinfulness
-sing
-sing-along
-singable
-Singapore
-Singaporean
-Singborg
-singe
-singed
-singer
-singer-songwriter
-singers
-singing
-singing-bird
-singing-master
-singing-mistress
-singingly
-single
-single-bedded
-single-breasted
-single-chamber
-single-chip
-single-coloured
-single-engined
-single-handed
-single-handedly
-single-hearted
-single-journey
-single-minded
-single-mindedly
-single-mindedness
-single-sided
-singled
-singlehanded
-singleness
-singles
-singlet
-singleton
-singletons
-singletree
-singling
-singly
-sings
-singsong
-singular
-singularities
-singularity
-singularly
-Sinhalese
-sinister
-sinister-handed
-sink
-sinkable
-sinked
-sinker
-sinkers
-sinkhole
-sinking
-sinks
-sinless
-sinned
-sinner
-sinners
-sinning
-Sino-
-sinology
-sins
-sinter
-sinuate
-sinuation
-sinuosity
-sinuous
-sinus
-sinusitis
-sinusoid
-sinusoidal
-sinusoids
-Sioux
-sip
-siphon
-siphoning
-sipper
-sipping
-sips
-sir
-sir!
-sire
-sired
-siren
-sirens
-sires
-Sirius
-sirloin
-sirocco
-sirs
-sirup
-sis
-sisal
-siskin
-sissified
-sissy
-sister
-sister-in-law
-sister-in-aw
-sisterhood
-sisterliness
-sisterly
-sisters
-sisters-in-law
-Sistine
-Sisyphean
-Sisyphus
-sit
-sit-down
-sit-in
-sit-up
-sitar
-sitarist
-sitcom
-site
-sited
-sites
-siting
-siting-room
-sits
-sitter
-sitters
-sitting
-sitting-room
-sittings
-situ
-situate
-situated
-situates
-situating
-situation
-situational
-situationally
-situations
-situp
-Siva
-six
-six-gun
-six-pack
-six-shooter
-sixes
-sixfold
-sixfooter
-sixgun
-sixpence
-sixpenny
-sixshooter
-sixteen
-sixteenmo
-sixteens
-sixteenth
-sixth
-sixties
-sixtieth
-sixty
-sizable
-sizar
-size
-sizeable
-sized
-sizes
-sizing
-sizings
-sizy
-sizzle
-sizzler
-sizzling
-SJ
-SK
-ska
-skain
-skate
-skateboard
-skateboarder
-skateboarding
-skated
-skater
-skaters
-skates
-skating
-skating-ring
-skean
-skedaddle
-skeet
-skein
-skeletal
-skeleton
-skeleton-key
-skeletons
-skelp
-skelter
-skene
-skep
-skeptic
-skeptical
-skeptically
-skepticism
-skeptics
-sketch
-sketch-book
-sketch-map
-sketchbook
-sketched
-sketcher
-sketches
-sketchily
-sketchiness
-sketching
-sketchpad
-sketchy
-skew
-skewbald
-skewed
-skewer
-skewers
-skewing
-skews
-ski
-ski(ing)
-ski-tow
-skibby
-skid
-skidadle
-skidding
-skids
-skied
-skier
-skies
-skiff
-skiing
-skilful
-skill
-skilled
-skillet
-skillful
-skillfull
-skillfully
-skillfulness
-skills
-skim
-skimmed
-skimmer
-skimming
-skimp
-skimped
-skimpily
-skimpiness
-skimping
-skimps
-skimpy
-skims
-skin
-skin-deep
-skin-dive
-skin-diver
-skin-diving
-skin-tight
-skincare
-skindive
-skinflick
-skinflint
-skinful
-skinhead
-skinless
-skinned
-skinner
-skinners
-skinniness
-skinning
-skinny
-skinny-dip
-skinny-dipper
-skinny-dipping
-skins
-skintight
-skip
-skip-frog
-skip-kennel
-skipped
-skipper
-skippers
-skipping
-skipping-rope
-Skippy
-skips
-skirl
-skirmish
-skirmished
-skirmisher
-skirmishers
-skirmishes
-skirmishing
-skirt
-skirted
-skirting
-skirts
-skis
-skit
-skitter
-skittish
-skittishly
-skittishness
-skittle
-skittle-alley
-skittleground
-skittles!
-skive
-skiver
-skivvies
-skivvy
-skoal
-skookum-house
-Skopje
-skulduggery
-skulk
-skulked
-skulker
-skulking
-skulks
-skull
-skull-cap
-skullcap
-skullduggery
-skulls
-skunk
-skunks
-sky
-sky-blue
-sky-high
-sky-light
-sky-rocket
-skycap
-skycoloured
-skydiver
-skydiving
-Skye
-skyey
-skyhook
-skyish
-skyjack
-skyjacker
-skyjacking
-skylark
-skylarking
-skylarks
-skylight
-skylights
-skyline
-skyrocket
-skyrockets
-skyscraper
-skyscrapers
-skyward
-skywards
-skywriter
-skywriting
-sl
-slab
-slabber
-slabbing
-slabby
-slack
-slacken
-slacker
-slacking
-slackly
-slackness
-slacks
-slade
-slag
-slagging
-slain
-slake
-slalom
-slam
-slam-bang
-slam-dunk
-slammed
-slammer
-slamming
-slams
-slander
-slanderer
-slanderous
-slanders
-slang
-slangy
-slank
-slant
-slanted
-slanting
-slantingly
-slants
-slantwise
-slap
-slap-dash
-slap-happy
-slapdash
-slaphappy
-slapped
-slapping
-slaps
-slapstick
-slash
-slash-and-burn
-slashed
-slasher
-slashes
-slashing
-slat
-slate
-slate-board
-slate-pencil
-slate-quarry
-slated
-slater
-slates
-slather
-slathers
-slats
-slatter
-slattern
-slatternly
-slaty
-slaughter
-slaughter-house
-slaughtered
-slaughterer
-slaughterhouse
-slaughtering
-slaughters
-Slav
-slave
-slave-driver
-slave-holder
-slave-ship
-slave-trade
-slaveholder
-slavelike
-slaver
-slavery
-slaves
-slavey
-Slavic
-Slavicize
-Slavicizes
-slavish
-slavishly
-slavishness
-Slavization
-Slavizations
-Slavize
-Slavizes
-Slavonia
-Slavonian
-Slavonic
-Slavonicize
-Slavonicizes
-Slavs
-slaw
-slay
-slayer
-slayers
-slaying
-slays
-sleave
-sleaze
-sleazily
-sleaziness
-sleazy
-sled
-sledder
-sledding
-sledge
-sledge-hammer
-sledgehammer
-sledges
-sledging
-sleds
-sleek
-sleekly
-sleekness
-sleep
-sleep!
-sleeper
-sleepers
-sleepfull
-sleepily
-sleepiness
-sleeping
-sleeping-bag
-sleeping-car
-sleeping-carriage
-sleeping-draught
-sleeping-powder
-sleeping-room
-sleeping-sickness
-sleepless
-sleeplessly
-sleeplessness
-sleepover
-sleeps
-sleepwalk
-sleepwalker
-sleepwalking
-sleepwear
-sleepy
-sleepyhead
-sleet
-sleety
-sleeve
-sleeve-coupling
-sleeved
-sleeveless
-sleeves
-sleigh
-sleighs
-sleight
-slender
-slenderer
-slenderize
-slenderness
-slept
-Slesinger
-Sleswick
-sleuth
-sleuth-hound
-slew
-slewing
-slice
-sliced
-slicer
-slicers
-slices
-slicing
-slick
-slicker
-slickers
-slickly
-slickness
-slicks
-slid
-slide
-sliden
-slider
-sliders
-slides
-sliding
-sliding-knot
-sliding-place
-slier
-sliest
-slight
-slighted
-slighter
-slightest
-slighting
-slightly
-slightness
-slights
-slily
-slim
-slime
-slimed
-sliminess
-slimly
-slimming
-slimness
-slimy
-sliness
-sling
-sling-shot
-slinger
-slinging
-slings
-slingshot
-slink
-slinky
-slip
-slip-board
-slip-galley
-slip-on
-slip-ring
-slip-shod
-slip-shoe
-slip-slop
-slip-string
-slip-up
-slipcase
-slipcover
-slipknot
-slippage
-slipped
-slipper
-slipperiness
-slippers
-slippery
-slipping
-slippy
-slips
-slipshod
-slipstream
-slipway
-slit
-slither
-slithery
-slits
-sliver
-slivovitz
-Sloan
-Sloane
-slob
-slobber
-slobbery
-slocken
-Slocum
-sloe
-sloe-eyed
-slog
-slogan
-slogans
-sloop
-slop
-slop-basin
-slop-pail
-slop-shop
-slope
-sloped
-sloper
-slopers
-slopes
-sloping
-slopped
-sloppily
-sloppiness
-slopping
-sloppy
-slops
-slosh
-sloshed
-slot
-slot-machine
-sloth
-slothful
-slothfully
-slothfulness
-sloths
-slots
-slotted
-slotting
-slouch
-slouched
-sloucher
-slouches
-slouching
-slouchy
-slough
-sloughy
-Slovak
-Slovakia
-Slovakian
-sloven
-Slovene
-Slovenia
-Slovenian
-slovenliness
-slovenly
-slow
-slow-couch
-slow-down
-slow-gaited
-slow-motion
-slow-paced
-slow-pacing
-slow-witted
-slow-worm
-slowdown
-slowed
-slower
-slowest
-slowgoach
-slowing
-slowly
-slowness
-slowpoke
-slows
-SLR
-slub
-sludge
-sludgy
-slue
-slug
-sluggard
-slugger
-sluggish
-sluggishly
-sluggishness
-slugs
-sluice
-slum
-slumber
-slumbered
-slumberous
-slumbrous
-slumlord
-slumming
-slummy
-slump
-slumped
-slumps
-slums
-slung
-slunk
-slur
-slurp
-slurring
-slurry
-slurs
-slush
-slushiness
-slushy
-slut
-sluttish
-slutty
-sly
-slyboots
-slyly
-slyness
-Sm
-smack
-smacked
-smacker
-smacking
-smacks
-small
-small-arms
-small-clothes
-small-minded
-small-mindedness
-small-pox
-small-scale
-small-time
-small-timer
-smallage
-smaller
-smallest
-Smalley
-smallish
-smallness
-smallpox
-smalltime
-Smallwood
-smalt
-smart
-smart-aleck
-smart-alecky
-smarted
-smarten
-smarter
-smartest
-smartly
-smartness
-smarts
-smarty
-smartypants
-smash
-smash-up
-smashed
-smasher
-smashers
-smashes
-smashing
-smashingly
-smashup
-smatter
-smattering
-smear
-smeared
-smearing
-smears
-smeary
-smell
-smelled
-smeller
-smelliness
-smelling
-smellless
-smells
-smelly
-smelt
-smelter
-smeltery
-smelting
-smelting-furnace
-smelting-house
-smelts
-Smetana
-smew
-smidgen
-smidgeon
-smidgin
-smilax
-smile
-smiled
-smiles
-smiley
-smiling
-smilingly
-smirch
-smirk
-smit
-smite
-smith
-smithereens
-smithery
-Smithfield
-smiths
-Smithson
-Smithsonian
-Smithtown
-smithy
-smitten
-smock
-smock-frock
-smocking
-smocks
-smog
-smoggy
-smokable
-smoke
-smoke-black
-smoke-box
-smoke-dried
-smoke-dry
-smoke-filled
-smoke-flue
-smoke-stack
-smoked
-smokehouse
-smokeless
-smoker
-smokers
-smokes
-smokescreen
-smokestack
-smokies
-smokiness
-smoking
-smoking-room
-smoky
-smolder
-smoldered
-smoldering
-smolders
-smooch
-smooth
-smooth-bore
-smooth-faced
-smooth-tongued
-smoothbore
-smoothed
-smoothen
-smoother
-smoothes
-smoothest
-smoothie
-smoothing
-smoothing-iron
-smoothly
-smoothness
-smorgasbord
-smote
-smother
-smothered
-smothering
-smothers
-smoulder
-Smucker
-smudge
-smudgy
-smug
-smuggle
-smuggled
-smuggler
-smugglers
-smuggles
-smuggling
-smugly
-smugness
-smut
-smuttiness
-smutty
-Smyrna
-Smythe
-Sn
-snack
-snack-bar
-snaffle
-snafu
-snag
-snaggy
-snail
-snail-clover
-snails
-snake
-snakebite
-snaked
-snakelike
-snakes
-snaky
-snap
-snapdragon
-snapped
-snapper
-snappers
-snappily
-snappiness
-snapping
-snappish
-snappishly
-snappishness
-snappy
-snaps
-snapsack
-snapshot
-snapshots
-snare
-snared
-snarer
-snares
-snaring
-snark
-snarl
-snarl-up
-snarled
-snarling
-snarlingly
-snarly
-snatch
-snatched
-snatcher
-snatches
-snatching
-snatchingly
-snatchy
-snazzily
-snazzy
-Snead
-sneak
-sneaked
-sneaker
-sneakers
-sneakier
-sneakiest
-sneakily
-sneakiness
-sneaking
-sneakingly
-sneaks
-sneaky
-Sneed
-sneer
-sneered
-sneering
-sneeringly
-sneers
-sneeze
-sneeze-wort
-sneezed
-sneezes
-sneezing
-snick
-snicker
-snickersnee
-snide
-snidely
-Snider
-sniff
-sniffed
-sniffer
-sniffing
-sniffle
-sniffles
-sniffs
-sniffy
-snifter
-snigger
-snip
-snipe
-sniper
-snippet
-snippings
-snippy
-snips
-snipsnap
-snit
-snitch
-snivel
-sniveler
-sniveller
-snob
-snobbery
-snobbish
-snobbishly
-snobbishness
-snobby
-Snodgrass
-snollygoster
-snood
-snooker
-snoop
-snooped
-snooper
-snooping
-snoops
-snoopy
-snoot
-snootily
-snootiness
-snooty
-snooze
-snoozer
-snore
-snored
-snorer
-snores
-snoring
-snorkel
-snorkeler
-snorkeling
-snort
-snorted
-snorter
-snorting
-snorts
-snot
-snot-nosed
-snot-rag
-snottily
-snottiness
-snotty
-snotty-nosed
-snout
-snouts
-snow
-snow-ball
-snow-bank
-snow-blind
-snow-bound
-snow-drift
-snow-drop
-snow-slide
-snow-slip
-snow-track
-snow-white
-snowball
-snowbank
-Snowbelt
-snowbird
-snowboard
-snowboarder
-snowboarding
-snowbound
-snowdrift
-snowdrop
-snowed
-snowfall
-snowfield
-snowflake
-snowier
-snowiest
-snowily
-snowiness
-snowing
-snowman
-snowmen
-snowmobile
-snowplough
-snowplow
-snows
-snowshoe
-snowshoes
-snowstorm
-snowsuit
-snowy
-snub
-snub-nosed
-snuck
-snuff
-snuff-box
-snuff-taker
-snuffbox
-snuffed
-snuffer
-snuffing
-snuffle
-snuffly
-snuffs
-snuffy
-snug
-snuggle
-snuggled
-snuggles
-snuggling
-snugly
-snugness
-Snyder
-so
-so-and-so
-so-called
-so-so
-so.
-soak
-soaked
-soaker
-soaking
-soaks
-soap
-soap-boiler
-soap-bubble
-soap-house
-soap-stone
-soap-suds
-soap-weed
-soap-works
-soap-wort
-soapbox
-soaped
-soaper
-soapiness
-soaping
-soaps
-soapstone
-soapsuds
-soapy
-soar
-soared
-soaring
-soars
-sob
-sob-stuff
-sobbing
-sobbingly
-sober
-sober-sides
-sobered
-sobering
-soberly
-soberness
-sobers
-sobriety
-sobriquet
-sobs
-soccer
-sociability
-sociable
-sociably
-social
-social-chauvinism
-socialism
-socialist
-socialist-biased
-socialist-bound
-socialistic
-socialists
-socialite
-socialization
-socialize
-socialized
-socializes
-socializing
-socially
-societal
-societies
-society
-socioeconomic
-socioinformatics
-sociologic
-sociological
-sociologically
-sociologist
-sociologists
-sociology
-sociopath
-sock
-socked
-socker
-socket
-sockets
-socking
-socks
-socle
-Socrates
-Socratic
-sod
-soda
-sodality
-sodden
-soddenly
-Soddy
-sodium
-sodomite
-sodomize
-sodomy
-sods
-soever
-sofa
-sofabed
-sofas
-soffit
-Sofia
-soft
-soft-boiled
-soft-brained
-soft-core
-soft-hearted
-soft-pedal
-soft-soap
-soft-spoken
-softball
-softbound
-soften
-softened
-softener
-softening
-softens
-softer
-softest
-softhearted
-softie
-softish
-softling
-softly
-softness
-software
-softwares
-softwood
-softy
-soggily
-sogginess
-soggy
-soho!
-soigne
-soignee
-soil
-soiled
-soiling
-soils
-soiree
-sojourn
-sojourner
-sojourners
-solace
-solaced
-solander
-solar
-solaria
-solarium
-sold
-sold-out
-solder
-soldered
-solderer
-soldering
-soldier
-soldiering
-soldierlike
-soldierly
-soldiers
-soldiery
-sole
-solecism
-solely
-solemn
-solemness
-solemnify
-solemnity
-solemnization
-solemnize
-solemnly
-solemnness
-solenoid
-soles
-solicit
-solicitation
-solicited
-soliciting
-solicitor
-solicitous
-solicitously
-solicitousness
-solicits
-solicitude
-solid
-solid-state
-solidarity
-solidi
-solidification
-solidified
-solidifies
-solidify
-solidifying
-solidity
-solidly
-solidness
-solids
-solidus
-soliloquize
-soliloquy
-solipsism
-solitaire
-solitary
-solitude
-Solly
-solo
-soloist
-Solomon
-Solon
-solos
-Soloviev
-solstice
-solstitial
-solubility
-soluble
-solute
-solution
-solvability
-solvable
-solve
-solved
-solvency
-solvent
-solvents
-solver
-solvers
-solves
-solving
-Somali
-Somalia
-Somalian
-Somalis
-somatic
-somber
-somberly
-somberness
-sombre
-sombrero
-some
-somebody
-someday
-somehow
-someone
-someplace
-Somers
-somersault
-somerset
-Somerville
-something
-sometime
-sometimes
-someway
-someways
-somewhat
-somewhere
-sommelier
-Sommerfeld
-somnambulism
-somnambulist
-somniferous
-somnolence
-somnolent
-son
-son!
-son-in-law
-sonant
-sonar
-sonata
-sonatina
-Sonenberg
-song
-song-bird
-song-book
-songbird
-songbook
-songfest
-songs
-songster
-songstress
-songwriter
-sonic
-sonnet
-sonnets
-sonny
-Sonoma
-Sonora
-sonority
-sonorous
-sonorously
-sonorousness
-sons
-sons-in-law
-Sony
-soon
-sooner
-soonest
-soot
-sooth
-soothe
-soothed
-soother
-soothes
-soothing
-soothingly
-soothsay
-soothsayer
-soothsaying
-sootiness
-sooty
-sop
-Sophia
-Sophias
-Sophie
-sophism
-sophist
-sophistic
-sophistical
-sophisticate
-sophisticated
-sophistication
-sophistry
-Sophoclean
-Sophocles
-sophomore
-sophomores
-sophomoric
-soporific
-soporifically
-sopping
-soppy
-soprano
-sorbet
-sorcerer
-sorcerers
-sorceress
-sorcery
-sordid
-sordidly
-sordidness
-sore
-sorehead
-sorely
-soreness
-Sorensen
-Sorenson
-sorer
-sores
-sorest
-sorghum
-sorority
-sorrel
-sorrel-topped
-Sorrentine
-sorrier
-sorriest
-sorrily
-sorriness
-sorrow
-sorrowful
-sorrowfully
-sorrowfulness
-sorrows
-sorry
-sort
-sorted
-sorter
-sorters
-sortie
-sortilege
-sorting
-sortition
-sortment
-sorts
-SOS
-sot
-sottish
-sou
-sou'wester
-soubriquet
-Soudanese
-souffle
-sough
-sought
-sought-after
-soul
-soul-destroying
-soul-searching
-soul-vexed
-soulful
-soulfully
-soulfulness
-soulless
-soullessly
-souls
-sound
-sound-broadcasting
-sound-film
-soundboard
-sounded
-sounder
-soundest
-sounding
-sounding-board
-sounding-lead
-soundings
-soundless
-soundlessly
-soundly
-soundness
-soundproof
-soundproofing
-sounds
-soundtrack
-soup
-soup-plate
-soupcon
-souped
-souped-up
-soups
-soupy
-sour
-sour-ball
-sour-faced
-source
-sources
-sourcrout
-sourdough
-soured
-sourer
-sourest
-souring
-sourish
-sourly
-sourness
-sourpuss
-sours
-Sousa
-sousaphone
-souse
-soused
-soutane
-south
-south-west
-south-wester
-Southampton
-southbound
-Southeast
-southeaster
-southeasterly
-southeastern
-southeastward
-southeastwards
-southerly
-southern
-southerner
-southerners
-southernmost
-southernwood
-Southey
-Southfield
-southing
-southland
-southmost
-southpaw
-southward
-southwards
-southwest
-southwester
-southwesterly
-southwestern
-southwestward
-southwestwards
-souvenir
-sovereign
-sovereigns
-sovereignty
-Soviet
-soviets
-sow
-sow-baby
-sow-bread
-sow-thistle
-sower
-Soweto
-sown
-sows
-sox
-soy
-soya
-soybean
-Sp
-spa
-space
-space-age
-space-bar
-space-time
-spacecraft
-spaced
-spaced-out
-spaceflight
-spaceman
-spaceport
-spacer
-spacers
-spaces
-spaceship
-spaceships
-spacesuit
-spacewalk
-Spacewar
-spacewoman
-spacey
-spaciness
-spacing
-spacings
-spacious
-spaciously
-spaciousness
-spacy
-spade
-spaded
-spadeful
-spades
-spadework
-spadices
-spading
-spadix
-Spafford
-spaghetti
-Spahn
-Spain
-spake
-Spalding
-spall
-spam
-spamming
-span
-spandex
-spandrel
-spangle
-spangled
-Spanglish
-Spaniard
-Spaniardization
-Spaniardizations
-Spaniardize
-Spaniardizes
-Spaniards
-spaniel
-Spanish
-Spanish-American
-Spanishize
-Spanishizes
-spank
-spanked
-spanker
-spanking
-spanks
-spanned
-spanner
-spanners
-spanning
-spans
-spar
-SPARC
-SPARCstation
-spare
-spared
-sparely
-spareness
-sparer
-spareribs
-spares
-sparest
-sparing
-sparingly
-spark
-spark-coil
-spark-ignition
-spark-plug
-sparked
-sparkful
-sparking
-sparking-plug
-sparkish
-sparkle
-sparkler
-sparklet
-sparkling
-Sparkman
-sparks
-sparky
-sparring
-sparrow
-sparrow-bill
-sparrow-hawk
-sparrows
-sparse
-sparsely
-sparseness
-sparser
-sparsest
-sparsity
-Sparta
-Spartacus
-Spartanize
-Spartanizes
-spasm
-spasmodic
-spasmodically
-spastic
-spat
-spate
-spates
-spathe
-spatial
-spatially
-spatter
-spatterdash
-spattered
-spatula
-spatulae
-spatulas
-Spaulding
-spavin
-spavined
-spawn
-spawned
-spawner
-spawning
-spawns
-spay
-spayed
-SPCA
-speak
-speak-easy
-speakable
-speakeasy
-speaker
-Speakerphone
-Speakerphones
-speakers
-speakies
-speaking
-speaking-trumpet
-speaking-tube
-speaks
-spear
-speared
-spearfish
-spearhead
-spearmint
-spears
-spec
-special
-specialist
-specialists
-speciality
-specialization
-specializations
-specialize
-specialized
-specializes
-specializing
-specially
-specials
-specialties
-specialty
-specie
-species
-specifiable
-specific
-specifically
-specification
-specifications
-specificity
-specifics
-specified
-specifier
-specifiers
-specifies
-specify
-specifying
-specimen
-specimens
-specious
-speciously
-speciousness
-speck
-specked
-speckle
-speckled
-speckles
-speckling
-specks
-specs
-spectacle
-spectacle-case
-spectacle-snake
-spectacled
-spectacles
-spectacular
-spectacularly
-spectator
-spectators
-specter
-specters
-Spector
-spectra
-spectral
-spectre
-spectrogram
-spectrograms
-spectrograph
-spectrographic
-spectrography
-spectrometer
-spectrophotometer
-spectrophotometry
-spectroscope
-spectroscopic
-spectroscopy
-spectrum
-speculate
-speculated
-speculates
-speculating
-speculation
-speculations
-speculative
-speculatively
-speculator
-speculators
-speculum
-sped
-speech
-speech-fier
-speeches
-speechless
-speechlessly
-speechlessness
-speed
-speed-change
-speed-lever
-speedball
-speedboat
-speeded
-speeder
-speeders
-speedily
-speediness
-speeding
-speedometer
-speeds
-speedster
-speedup
-speedups
-speedway
-speedwell
-speedy
-speleologist
-speleology
-spell
-spell-bound
-spell-check
-spellbind
-spellbinder
-spellbinding
-spellbound
-spelldown
-spelled
-speller
-spellers
-spelling
-spelling-book
-spellings
-spells
-spelt
-spelter
-spelunker
-spelunking
-spence
-spencer
-Spencerian
-spend
-spendable
-spender
-spenders
-spending
-spends
-spendthrift
-Spenglerian
-spent
-sperm
-spermaceti
-spermatic
-spermatozoa
-spermatozoon
-spermicidal
-spermicide
-Sperry
-spew
-spewer
-SPF
-sphagnum
-sphere
-spheres
-spheric
-spherical
-spherically
-spheroid
-spheroidal
-spherule
-sphincter
-sphinges
-sphinx
-spic-and-span
-Spica
-spice
-spice-wort
-spiced
-spicery
-spices
-spicily
-spiciness
-spick-and-span
-spicule
-spicy
-spider
-spider-web
-spider-work
-spiders
-spiderweb
-spidery
-spied
-Spiegel
-spiel
-spies
-spifflicated
-spiffy
-spigot
-spike
-spiked
-spikelet
-spikes
-spiket
-spikiness
-spiky
-spile
-spill
-spillage
-spilled
-spiller
-spilling
-spills
-spillway
-spilt
-spin
-spin-off
-spinach
-spinage
-spinal
-spinally
-spindle
-spindle-shanks
-spindled
-spindling
-spindly
-spine
-spine-chilling
-spinel
-spineless
-spinelessly
-spinet
-spiniferous
-spinnaker
-spinner
-spinneret
-spinners
-spinnery
-spinney
-spinning
-spinning-factory
-spinning-frame
-spinning-mill
-spinning-wheel
-spinny
-spinoff
-spinose
-spinosity
-spinous
-Spinoza
-spins
-spinster
-spinsterhood
-spinsterish
-spiny
-spiracle
-spiraea
-spiral
-spiral-staircase
-spiraled
-spiraling
-spirally
-spirant
-spire
-spirea
-spires
-spirit
-spirit-level
-spirit-rapping
-spirited
-spiritedly
-spiriting
-spiritism
-spiritless
-spiritous
-spirits
-spiritual
-spiritualism
-spiritualist
-spiritualistic
-spirituality
-spiritually
-spirituals
-spirituous
-Spiro
-spirochete
-spirt
-spiry
-spit
-spit-fire
-spit-pin
-spitball
-spite
-spited
-spiteful
-spitefully
-spitefulness
-spites
-spitfire
-spiting
-spits
-spitten
-spitting
-spitting-box
-spittle
-spittoon
-Spitz
-spiv
-splash
-splash-board
-splashdown
-splashed
-splashes
-splashily
-splashiness
-splashing
-splashy
-splat
-splatter
-splay
-splayfeet
-splayfoot
-splayfooted
-spleen
-spleeny
-splendent
-splendid
-splendidly
-splendor
-splendorous
-splendour
-splenetic
-splenic
-splice
-spliced
-splicer
-splicers
-splices
-splicing
-splicings
-spline
-splines
-splint
-splinter
-splinter-bar
-splintered
-splinters
-splintery
-split
-split-level
-splits
-splitter
-splitters
-splitting
-splodge
-splotch
-splotchy
-splurge
-splutter
-spoil
-spoilage
-spoiled
-spoiler
-spoilers
-spoiling
-spoils
-spoilsport
-spoilt
-Spokane
-spoke
-spoked
-spoken
-spokes
-spokesman
-spokesmen
-spokespeople
-spokesperson
-spokeswoman
-spoliate
-spoliation
-sponge
-sponge-cake
-spongecake
-sponged
-sponger
-spongers
-sponges
-sponginess
-sponging
-spongy
-sponsion
-sponson
-sponsor
-sponsored
-sponsoring
-sponsors
-sponsorship
-spontaneity
-spontaneous
-spontaneously
-spoof
-spook
-spookiness
-spooky
-spool
-spooled
-spooler
-spoolers
-spooling
-spools
-spoon
-spoon-fed
-spoon-feed
-spoonbill
-spooned
-spoonerism
-spoonful
-spooning
-spoons
-spoony
-spoor
-sporadic
-sporadically
-spore
-spores
-sport
-sported
-sportful
-sportiness
-sporting
-sportingly
-sportive
-sportively
-sports
-sportscast
-sportscaster
-sportsman
-sportsmanlike
-sportsmanship
-sportsmen
-sportswear
-sportswoman
-sportswriter
-sportswriting
-sporty
-Sposato
-spot
-spot-check
-spot-welder
-spotless
-spotlessly
-spotlessness
-spotlight
-spotlights
-spotlit
-spots
-spotted
-spotter
-spotters
-spottily
-spottiness
-spotting
-spotty
-spousal
-spouse
-spouses
-spout
-spouted
-spouting
-spouts
-Sprague
-sprain
-sprang
-sprat
-sprawl
-sprawled
-sprawling
-sprawls
-spray
-sprayed
-sprayer
-spraying
-sprays
-spread
-spread-eagle
-spreadable
-spreader
-spreaders
-spreading
-spreadings
-spreads
-spreadsheet
-spree
-sprees
-sprig
-sprightliness
-sprightly
-spring
-spring-balance
-spring-board
-spring-box
-spring-clean
-spring-dividers
-spring-funnel
-spring-hammer
-springboard
-springbok
-springe
-springer
-springers
-Springfield
-springier
-springiest
-springily
-springiness
-springing
-springle
-springlike
-springs
-springtime
-springy
-sprinkle
-sprinkled
-sprinkler
-sprinkles
-sprinkling
-sprint
-sprinted
-sprinter
-sprinters
-sprinting
-sprints
-sprit
-sprite
-spritz
-spritzer
-sprocket
-Sproul
-sprout
-sprouted
-sprouting
-sprouts
-spruce
-spruce-fir
-spruced
-sprucely
-spruceness
-sprung
-spry
-spryly
-spryness
-spud
-Spuds
-spue
-spume
-spumone
-spumoni
-spumous
-spumy
-spun
-spunge
-spunk
-spunky
-spur
-spurge
-spurious
-spuriously
-spuriousness
-spurn
-spurned
-spurning
-spurns
-spurred
-spurs
-spurt
-spurted
-spurting
-spurts
-sputa
-sputnik
-sputter
-sputtered
-sputum
-spy
-spy-boat
-spy-glass
-spy-hole
-spyglass
-spying
-sqeamish
-squab
-squabble
-squabbled
-squabbler
-squabbles
-squabbling
-squabby
-squad
-squadron
-squadrons
-squads
-squalid
-squalidly
-squalidness
-squall
-squaller
-squalls
-squally
-squaloid
-squalor
-squamous
-squander
-squanderer
-Squanto
-square
-square-dance
-square-rigged
-square-toes
-squared
-squarehead
-squarely
-squareness
-squarer
-squares
-squarest
-Squaresville
-squaring
-squarish
-squash
-squashed
-squashing
-squashy
-squat
-squatness
-squats
-squatter
-squatting
-squaw
-squawk
-squawked
-squawker
-squawking
-squawks
-squeak
-squeaked
-squeaker
-squeakily
-squeakiness
-squeaking
-squeaks
-squeaky
-squeal
-squealed
-squealer
-squealing
-squeals
-squeamish
-squeamishly
-squeamishness
-squeegee
-squeezable
-squeeze
-squeezed
-squeezer
-squeezes
-squeezing
-squelch
-squelchy
-squib
-Squibb
-squid
-squiff
-squiffy
-squiggle
-squiggly
-squill
-squint
-squint-eyed
-squinted
-squinting
-squire
-squirelly
-squires
-squirm
-squirmed
-squirms
-squirmy
-squirrel
-squirreled
-squirreling
-squirrels
-squirt
-squirter
-squish
-squishy
-Sr
-Sri
-SRO
-SRQ
-SS
-SSA
-SSE
-ssh
-SSI
-SSS
-SST
-SSW
-st.
-stab
-stabbed
-stabber
-stabbing
-stabile
-stabilities
-stability
-stabilization
-stabilize
-stabilized
-stabilizer
-stabilizers
-stabilizes
-stabilizing
-stable
-stable-boy
-stable-bread
-stable-man
-stable-room
-stabled
-stableman
-stabler
-stables
-stabling
-stably
-stabs
-staccato
-stack
-stacked
-stacker
-stacking
-stacks
-Stacy
-stadia
-stadium
-staff
-staffed
-staffer
-staffers
-staffing
-Stafford
-Staffordshire
-staffs
-stag
-stag-beetle
-stag-horn
-stage
-stage-coach
-stage-fight
-stage-manager
-stage-struck
-stagecoach
-stagecoaches
-stagecraft
-staged
-stagehand
-stager
-stagers
-stages
-stagestruck
-stagflation
-stagger
-staggered
-staggerer
-staggering
-staggeringly
-staggers
-staghound
-staging
-stagnancy
-stagnant
-stagnantly
-stagnate
-stagnation
-stags
-stags-loyal
-stagy
-Stahl
-staid
-staidly
-staidness
-stain
-stained
-staining
-stainless
-stains
-stair
-staircase
-staircases
-stairs
-stairway
-stairways
-stairwell
-stake
-staked
-stakeholder
-stakeout
-stakes
-Stakhanovism
-Stakhanovite
-stalactical
-stalactite
-stalagmite
-stale
-stalemate
-staleness
-Staley
-Stalin
-Stalingrad
-Stalinist
-Stalins
-stalk
-stalked
-stalker
-stalking
-stall
-stall-boat
-stall-fed
-stall-reader
-stallage
-stalled
-stalling
-stallings
-stallion
-stallman
-stalls
-stalwart
-stalwartly
-stamen
-stamens
-Stamford
-stamina
-stammer
-stammered
-stammerer
-stammering
-stammeringly
-stammers
-stamp
-stamp-pad
-stamped
-stampede
-stampeded
-stampedes
-stampeding
-stamper
-stampers
-stamping
-stamps
-Stan
-stance
-stanch
-stanchest
-stanchion
-stand
-stand!
-stand(s)
-stand-alone
-stand-by
-stand-grass
-stand-in
-stand-offish
-stand-point
-stand-still
-stand-up
-standalone
-standard
-standard-bearer
-standard-gauge
-standardization
-standardize
-standardized
-standardizes
-standardizing
-standardly
-standards
-standby
-standee
-stander
-standing
-standings
-Standish
-standoff
-standoffish
-standout
-standpipe
-standpoint
-standpoints
-stands
-standstill
-standup
-Stanford
-stanhope
-stank
-Stanley
-stannary
-stannic
-Stans
-Stanton
-stanza
-stanzas
-staph
-staphylococcal
-staphylococci
-staphylococcus
-staple
-stapler
-staples
-Stapleton
-stapling
-star
-star-bright
-star-crossed
-star-gazer
-star-handle
-star-studded
-starboard
-starch
-starched
-starchily
-starchiness
-starchy
-stardom
-stardust
-stare
-stared
-starer
-stares
-starfish
-Stargate
-stargaze
-stargazer
-staring
-stark
-Starkey
-starkly
-starkness
-starless
-starlet
-starlight
-starling
-starlit
-Starr
-starred
-starring
-starry
-starry-eyed
-stars
-start
-start-up
-startbar
-started
-starter
-starters
-starting
-starting-crank
-starting-gate
-starting-post
-startle
-startled
-startles
-startling
-starts
-startup
-startups
-starvation
-starve
-starved
-starveling
-starves
-starving
-stash
-stasis
-stat
-state
-state-aided
-state-controlled
-state-of-the-art
-state-owned
-statecraft
-stated
-statehood
-stateless
-statelessness
-stateliness
-stately
-statement
-statements
-Staten
-stateroom
-states
-statesman
-statesmanlike
-statesmanship
-statesmen
-stateswoman
-statewide
-static
-statical
-statically
-statics
-stating
-station
-station-house
-station-master
-stationary
-stationed
-stationer
-stationer's
-stationery
-stationing
-stationmaster
-stations
-statism
-statist
-statistic
-statistical
-statistically
-statistician
-statisticians
-statistics
-Statler
-stator
-stats
-statuary
-statue
-statues
-statuesque
-statuesquely
-statuesqueness
-statuette
-stature
-status
-statuses
-statute
-statutes
-statutorily
-statutoriness
-statutory
-Stauffer
-staunch
-staunchest
-staunchly
-staunchness
-Staunton
-stave
-staved
-staves
-stay
-stay-down
-stay-lace
-stayed
-stayer
-staying
-stays
-STD
-stead
-steadfast
-steadfastly
-steadfastness
-steadied
-steadier
-steadies
-steadiest
-steadily
-steadiness
-steady
-steadying
-steak
-steaks
-steal
-stealer
-stealing
-stealingly
-steals
-stealth
-stealthily
-stealthiness
-stealthy
-steam
-steam-boat
-steam-boiler
-steam-cylinder
-steam-engine
-steam-gauge
-steam-generator
-steam-hammer
-steam-mill
-steam-navigation
-steam-piping
-steam-piston
-steam-press
-steam-roller
-steam-tug
-steam-valve
-steamboat
-steamboats
-steamed
-steamer
-steamers
-steamfitter
-steamfitting
-steaminess
-steaming
-steamroll
-steamroller
-steams
-steamship
-steamships
-steamy
-stearin
-Stearns
-steed
-steel
-steel-clad
-steel-foundry
-steel-girder
-steel-mill
-steel-plant
-steel-works
-steel-yard
-Steele
-steeled
-steelers
-steeliness
-steeling
-steelmaker
-steels
-steelworker
-steelworks
-steely
-steelyard
-Steen
-steep
-steeped
-steepen
-steeper
-steepest
-steeping
-steeple
-steeple-chase
-steeplechase
-steeplejack
-steeples
-steeply
-steepness
-steeps
-steer
-steerable
-steerage
-steered
-steerer
-steering
-steering-wheel
-steers
-steersman
-steeve
-Stefan
-Steinbeck
-Steinberg
-steinbock
-Steiner
-stele
-Stella
-stellar
-stem
-stem-turn
-stemless
-stemmed
-stemming
-stemple
-stems
-stemware
-stench
-stench-trap
-stenches
-stencil
-stencils
-Stendhal
-Stendler
-steno
-stenochromy
-stenograph
-stenographer
-stenographers
-stenographic
-stenographical
-stenographist
-stenography
-stenotype
-stentorian
-step
-step-
-step-after
-step-brother
-step-by-step
-step-child
-step-down
-step-father
-step-ins
-step-ladder
-step-mother
-step-son
-step-up
-stepbrother
-stepchild
-stepchildren
-stepdaughter
-stepfather
-Stephan
-Stephanie
-Stephen
-Stephens
-Stephenson
-stepladder
-stepmother
-stepmothers
-stepney
-stepparent
-steppe
-stepped
-stepped-up
-stepper
-stepping
-stepping-stone
-steppingstone
-steps
-stepsister
-stepson
-stepwise
-stercoraceous
-stere
-stereo
-stereograph
-stereometer
-stereophonic
-stereos
-stereoscope
-stereoscopic
-stereotape
-stereotype
-stereotyped
-stereotypes
-stereotypical
-sterile
-sterility
-sterilization
-sterilizations
-sterilize
-sterilized
-sterilizer
-sterilizes
-sterilizing
-sterling
-stern
-sterna
-Sternberg
-sternly
-sternmost
-sternness
-Sterno
-sterns
-sternum
-sternutation
-sternutative
-sternutatory
-steroid
-steroidal
-stertorous
-stet
-stethoscope
-Stetsons
-Steuben
-Steve
-stevedore
-Steven
-Stevens
-Stevenson
-Stevie
-stew
-stew-pan
-steward
-stewardess
-stewards
-stewardship
-Stewart
-stewbum
-stewed
-stewpot
-stews
-stibium
-stick
-stick-in-the-mud
-stick-out
-sticker
-stickers
-stickier
-stickiest
-stickily
-stickiness
-sticking
-stickle
-stickleback
-stickler
-stickpin
-sticks
-stickup
-sticky
-stiff
-stiff-arm
-stiff-hearted
-stiff-neck
-stiff-necked
-stiffen
-stiffener
-stiffening
-stiffens
-stiffer
-stiffest
-stiffly
-stiffness
-stiffs
-stifle
-stifled
-stifles
-stifling
-stiflingly
-stigma
-stigmata
-stigmatic
-stigmatise
-stigmatization
-stigmatize
-stilb
-stile
-stiles
-stiletto
-still
-still-born
-still-bottom
-still-house
-still-life
-stillbirth
-stillborn
-stilled
-stiller
-stillest
-stilling
-stillness
-stills
-stillstand
-Stillwell
-stilly
-stilt
-stilted
-Stilton
-stilts
-Stimson
-stimulant
-stimulants
-stimulate
-stimulated
-stimulates
-stimulating
-stimulation
-stimulations
-stimulative
-stimulator
-stimuli
-stimulus
-sting
-stinger
-stingily
-stinginess
-stinging
-stingray
-stings
-stingy
-stink
-stinkard
-stinkbug
-stinker
-stinkeroo
-stinkers
-stinking
-stinko
-stinks
-stinky
-stint
-stinting
-stipend
-stipendiary
-stipends
-stipple
-stippling
-stipulate
-stipulated
-stipulates
-stipulating
-stipulation
-stipulations
-stir
-stir-crazy
-stir-fry
-stire
-Stirling
-stirred
-stirrer
-stirrers
-stirring
-stirringly
-stirrings
-stirrup
-stirrup-cup
-stirrupglass
-stirs
-stirwise
-stitch
-stitch-book
-stitch-wort
-stitched
-stitchery
-stitches
-stitching
-stithy
-stoat
-stochastic
-stochastically
-stock
-stock-broker
-stock-dove
-stock-exchange
-stock-fish
-stock-holder
-stock-in-trade
-stock-jobber
-stock-still
-stock-taking
-stock-whip
-stock-yard
-stockade
-stockades
-stockbreeder
-stockbroker
-stockbroking
-stocked
-stocker
-stockers
-stockholder
-stockholders
-Stockholm
-stockily
-stockiness
-stockinet
-stockinette
-stocking
-stocking-frame
-stocking-machine
-stocking-weaver
-stockingloom
-stockings
-stockpile
-stockpot
-stockroom
-stocks
-stocktaking
-Stockton
-stocky
-stockyard
-stodge
-stodgily
-stodginess
-stodgy
-stogie
-stogy
-stoic
-stoical
-stoically
-stoichiometry
-stoicism
-stoke
-stoked
-stokehold
-stokehole
-stoker
-Stokes
-STOL
-stole
-stolen
-stoles
-stolid
-stolidity
-stolidly
-stolidness
-stolon
-stomach
-stomachache
-stomached
-stomacher
-stomaches
-stomachic
-stomaching
-stomp
-stone
-stone-blind
-stone-break
-stone-breaker
-stone-cast
-stone-cold
-stone-cutter
-stone-dead
-stone-deaf
-stone-fruit
-stone-hearted
-stone-mason
-stone-pitch
-stone-squarer
-stoneblue
-stoned
-Stonehenge
-stonemason
-stones
-stonewall
-stoneware
-stonewashed
-stonework
-stoney
-stonily
-stoniness
-stoning
-stony
-stony-faced
-stood
-stooge
-stook
-stool
-stoop
-stooped
-stooping
-stoops
-stop
-stop-cock
-stop-gap
-stop-lamp
-stop-valve
-stop-watch
-stopcock
-stopcocks
-stope
-stopgap
-stoping
-stoplight
-stopover
-stoppable
-stoppage
-stopped
-stopper
-stoppers
-stopping
-stopple
-stops
-stopwatch
-storage
-storages
-store
-store-bread
-store-keeper
-store-pond
-store-room
-stored
-storefront
-storehouse
-storehouses
-storekeeper
-storeroom
-stores
-storey
-Storeyed
-Storeys
-storied
-stories
-storing
-stork
-storks
-storm
-storm-beaten
-stormed
-stormier
-stormiest
-stormily
-storminess
-storming
-storms
-stormy
-story
-story-book
-story-teller
-storyboard
-storybook
-storyteller
-storytelling
-Stouffer
-stoup
-stout
-stout-hearted
-stouter
-stoutest
-stouthearted
-stoutly
-stoutness
-stouts
-stove
-stovepipe
-stoves
-stow
-stow-space
-stowage
-stowaway
-Stowe
-stowed
-strabismus
-straddle
-straddler
-Stradivari
-strafe
-straggle
-straggled
-straggler
-stragglers
-straggles
-straggling
-straggly
-straight
-straight-arm
-straight-faced
-straight-off
-straight-out
-straightaway
-straightedge
-straighten
-straightened
-straightener
-straightens
-straighter
-straightest
-straightforward
-straightforwardly
-straightforwardness
-straightforwards
-straightjacket
-straightly
-straightness
-straightway
-strain
-strained
-strainer
-strainers
-straining
-strains
-straint
-strait
-strait-jacket
-strait-laced
-strait-waistcoat
-straiten
-straitened
-straitjacket
-straitlaced
-straits
-strand
-stranded
-stranding
-strands
-strange
-strangely
-strangeness
-stranger
-strangers
-strangest
-strangle
-strangle-hold
-strangle-weed
-strangled
-stranglehold
-strangler
-stranglers
-strangles
-strangling
-stranglings
-strangulate
-strangulation
-strangulations
-strangury
-strap
-straphang
-straphanger
-strapless
-strapped
-strapping
-straps
-Strasbourg
-Strasburg
-strata
-stratagem
-stratagems
-strategic
-strategical
-strategically
-strategics
-strategies
-strategist
-strategy
-Stratford
-strath
-strati
-stratification
-stratifications
-stratified
-stratifies
-stratify
-stratosphere
-stratospheric
-Stratton
-stratum
-stratus
-Strauss
-Stravinsky
-straw
-straw-bed
-straw-berry
-straw-board
-straw-coloured
-straw-cutter
-straw-hat
-straw-mattress
-strawberries
-strawberry
-straws
-strawy
-stray
-strayed
-strays
-streak
-streaked
-streaker
-streaks
-streaky
-stream
-stream-feeder
-stream-line
-streamed
-streamer
-streamers
-streaming
-streamlet
-streamline
-streamlined
-streamliner
-streamlines
-streamlining
-streams
-street
-street-car
-street-smart
-street-sweeper
-street-walker
-streetcar
-streetcars
-streeters
-streetlight
-streets
-streetwalker
-streetwise
-strenghten
-strength
-strengthen
-strengthened
-strengthener
-strengthening
-strengthens
-strengths
-strenuous
-strenuously
-strenuousness
-strep
-streptococcal
-streptococci
-streptococcus
-streptomycin
-stress
-stressed
-stresses
-stressful
-stressing
-stretch
-stretch-nylon
-stretchable
-stretched
-stretcher
-stretchers
-stretches
-stretching
-stretchy
-strew
-strewn
-strews
-stria
-striae
-striated
-striation
-stricken
-Strickland
-strickle
-strict
-stricter
-strictest
-strictly
-strictness
-stricture
-stridden
-stride
-stridency
-strident
-stridently
-strider
-strides
-striding
-stridor
-stridulous
-strife
-strigil
-strike
-strike-breaker
-strike-breaking
-strikebreaker
-strikeout
-striker
-strikers
-strikes
-striking
-striking-distance
-strikingly
-Strindberg
-string
-stringed
-stringency
-stringent
-stringently
-stringer
-stringers
-stringier
-stringiest
-stringiness
-stringing
-strings
-stringy
-strip
-strip-mine
-strip-search
-stripe
-striped
-stripes
-stripling
-stripped
-stripper
-strippers
-stripping
-strips
-striptease
-stripteaser
-stripy
-strive
-striven
-strives
-striving
-strivings
-strobe
-strobed
-strobes
-stroboscope
-stroboscopic
-strode
-stroke
-stroked
-stroker
-strokers
-strokes
-stroking
-stroll
-strolled
-stroller
-strolling
-strolls
-Strom
-Stromberg
-strong
-strong-arm
-strong-minded
-strong-set
-strong-water
-strong-water-shop
-strong-willed
-strongbox
-stronger
-strongest
-Strongheart
-stronghold
-strongly
-strongman
-strontium
-strop
-strophe
-strophic
-strove
-strow
-strown
-struck
-structerm
-structural
-structurally
-structure
-structured
-structured-walk-through
-structurer
-structures
-structuring
-strudel
-struggle
-struggled
-struggles
-struggling
-strum
-strumous
-strumpet
-strung
-strung-out
-strut
-struts
-strutting
-strychnine
-Stu
-Stuart
-stub
-stubble
-stubble-field
-Stubblefield
-Stubblefields
-stubbly
-stubborn
-stubbornly
-stubbornness
-stubby
-stubs
-stucco
-stuck
-stuck-up
-stud
-stud-horse
-studbook
-studded
-studding
-Studebaker
-student
-student-assistant
-students
-studied
-studiedly
-studies
-studio
-studios
-studious
-studiously
-studiousness
-studs
-study
-studying
-stuff
-stuffed
-stuffed-up
-stuffier
-stuffiest
-stuffily
-stuffiness
-stuffing
-stuffs
-stuffy
-stultification
-stultify
-stum
-stumble
-stumblebum
-stumbled
-stumbler
-stumbles
-stumbling
-stumbling-block
-stumer
-stump
-stumped
-stumper
-stumping
-stumps
-stumpy
-stun
-stung
-stunk
-stunning
-stunningly
-stunt
-stuntman
-stunts
-stupe
-stupefaction
-stupefied
-stupefy
-stupefying
-stupendous
-stupendously
-stupid
-stupidest
-stupidities
-stupidity
-stupidly
-stupor
-Sturbridge
-sturdily
-sturdiness
-sturdy
-sturgeon
-Sturm
-stutter
-stutterer
-Stuttgart
-Stuyvesant
-sty
-stye
-Stygian
-style
-stylebook
-styled
-styler
-stylers
-styles
-styli
-styling
-stylish
-stylishly
-stylishness
-stylist
-stylistic
-stylistically
-stylistics
-stylize
-stylized
-stylus
-stymie
-stymy
-styptic
-styrene
-Styria
-Styrofoam
-Styx
-suable
-suasion
-suave
-suavely
-suaveness
-suavity
-sub
-sub-branch
-sub-continent
-sub-dean
-sub-editor
-sub-goal
-sub-librarian
-sub-professional
-sub-zero
-subacid
-subalphabet
-subaltern
-subaqueous
-subarctic
-subatomic
-subbranch
-subcategory
-subchannel
-subchannels
-subclass
-subclasses
-subclassify
-subcommittee
-subcommittees
-subcompact
-subcomponent
-subcomponents
-subcomputation
-subcomputations
-subconscious
-subconsciously
-subconsciousness
-subcontinent
-subcontinental
-subcontract
-subcontractor
-subculture
-subcultures
-subcutaneous
-subcutaneously
-subcycle
-subcycles
-subdirectories
-subdirectory
-subdivide
-subdivided
-subdivides
-subdividing
-subdivision
-subdivisions
-subdomains
-subdue
-subdued
-subdues
-subduing
-subentry
-subexpression
-subexpressions
-subfamily
-subfield
-subfields
-subfile
-subfiles
-subfreezing
-subgoal
-subgoals
-subgraph
-subgraphs
-subgroup
-subgroups
-subhead
-subheader
-subheading
-subhuman
-subinterval
-subintervals
-subjacent
-subject
-subjected
-subjecting
-subjection
-subjective
-subjectively
-subjectivity
-subjects
-subjoin
-subjugate
-subjugation
-subjunctive
-sublanguage
-sublanguages
-sublayer
-sublayers
-sublease
-sublet
-sublibrarian
-sublimate
-sublimation
-sublimations
-sublime
-sublimed
-sublimely
-subliminal
-sublimity
-sublist
-sublists
-submachine-gun
-submarginal
-submarine
-submariner
-submariners
-submarines
-submerge
-submerged
-submergence
-submerges
-submerging
-submerse
-submersible
-submersion
-submicroscopic
-submission
-submissions
-submissive
-submissively
-submissiveness
-submit
-submits
-submittal
-submitted
-submitting
-submode
-submodes
-submodule
-submodules
-submultiplexed
-subnet
-subnets
-subnetwork
-subnetworks
-subnormal
-suboptimal
-suborbital
-suborder
-subordinate
-subordinated
-subordinates
-subordination
-suborn
-subornation
-subparts
-subpena
-subphases
-subplot
-subpoena
-subproblem
-subproblems
-subprocesses
-subprofessional
-subprogram
-subprograms
-subproject
-subproof
-subproofs
-subquestion
-subqueue
-subrange
-subranges
-subroutine
-subroutines
-subs
-subschema
-subschemas
-subscribe
-subscribed
-subscriber
-subscribers
-subscribes
-subscribing
-subscript
-subscripted
-subscripting
-subscription
-subscriptions
-subscripts
-subsection
-subsections
-subsegment
-subsegments
-subsequence
-subsequences
-subsequent
-subsequently
-subseries
-subserve
-subservience
-subservient
-subserviently
-subset
-subsets
-subside
-subsided
-subsidence
-subsides
-subsidiaries
-subsidiary
-subsidies
-subsiding
-subsidization
-subsidize
-subsidized
-subsidizer
-subsidizes
-subsidizing
-subsidy
-subsist
-subsisted
-subsistence
-subsistent
-subsisting
-subsists
-subslot
-subslots
-subsoil
-subsonic
-subspace
-subspaces
-subspecies
-substance
-substances
-substandard
-substantial
-substantiality
-substantially
-substantiate
-substantiated
-substantiates
-substantiating
-substantiation
-substantiations
-substantive
-substantively
-substantivity
-substation
-substations
-substitutability
-substitutable
-substitute
-substituted
-substitutes
-substituting
-substitution
-substitutions
-substrata
-substrate
-substrates
-substratum
-substring
-substrings
-substruction
-substructure
-substructures
-subsume
-subsumed
-subsumes
-subsuming
-subsurface
-subsystem
-subsystems
-subtask
-subtasks
-subteen
-subtenancy
-subtenant
-subtend
-subterfuge
-subterranean
-subterraneous
-subtext
-subtile
-subtility
-subtilize
-subtitle
-subtitled
-subtitles
-subtle
-subtleness
-subtler
-subtlest
-subtleties
-subtlety
-subtly
-subtopic
-subtotal
-subtract
-subtracted
-subtracting
-subtraction
-subtractions
-subtractive
-subtractor
-subtractors
-subtracts
-subtrahend
-subtrahends
-subtree
-subtrees
-subtropic
-subtropical
-subtropics
-subunit
-subunits
-suburb
-suburb(s)
-suburban
-suburbanite
-suburbia
-suburbs
-subvention
-subversion
-subversive
-subversively
-subversiveness
-subvert
-subverted
-subverter
-subverting
-subverts
-subway
-subways
-subzero
-succeed
-succeeded
-succeeding
-succeeds
-success
-successes
-successful
-successfully
-succession
-successions
-successive
-successively
-successor
-successors
-succinct
-succinctly
-succinctness
-succor
-succory
-succotash
-succour
-succubus
-succulence
-succulency
-succulent
-succumb
-succumbed
-succumbing
-succumbs
-succursal
-such
-suchlike
-suck
-sucked
-sucker
-suckers
-sucking
-sucking-bag
-sucking-bottle
-sucking-pig
-sucking-pump
-suckle
-suckling
-sucks
-Sucre
-sucrose
-suction
-suction-fan
-suction-pump
-Sudan
-Sudanese
-Sudanic
-sudatory
-sudden
-suddenly
-suddenness
-sudorific
-suds
-sudsing
-sudsy
-sue
-sued
-suede
-sues
-suet
-suety
-Suez
-suffer
-sufferable
-sufferance
-suffered
-sufferer
-sufferers
-suffering
-sufferings
-suffers
-suffice
-sufficed
-suffices
-sufficiency
-sufficient
-sufficiently
-sufficing
-suffix
-suffixation
-suffixed
-suffixer
-suffixes
-suffixing
-suffocate
-suffocated
-suffocates
-suffocating
-suffocation
-Suffolk
-suffragan
-suffrage
-suffragette
-suffragist
-suffuse
-suffusion
-sugar
-sugar-basin
-sugar-beet
-sugar-box
-sugar-candy
-sugar-cane
-sugar-loaf
-sugar-nippers
-sugar-reed
-sugar-refinery
-sugar-tongs
-sugarcane
-sugarcoat
-sugared
-sugaring
-sugarings
-sugarless
-sugarplum
-sugars
-sugary
-suggest
-suggested
-suggestibility
-suggestible
-suggesting
-suggestion
-suggestions
-suggestive
-suggestively
-suggestiveness
-suggests
-suicidal
-suicidally
-suicide
-suicides
-suing
-suit
-suit-case
-suitability
-suitable
-suitableness
-suitably
-suitcase
-suitcases
-suite
-suited
-suiters
-suites
-suiting
-suitor
-suitors
-suits
-Sukarno
-sukiyaki
-Sukkot
-Sukkoth
-Sulawesi
-sulfa
-sulfate
-sulfide
-sulfur
-sulfuric
-sulfurous
-sulk
-sulked
-sulkily
-sulkiness
-sulking
-sulks
-sulky
-sullen
-sullenly
-sullenness
-Sullivan
-sully
-sulphate
-sulphide
-sulphite
-sulphur
-sulphured
-sulphureous
-sulphuric
-sulphurous
-sultan
-sultan-flower
-sultana
-sultanate
-sultans
-sultrily
-sultriness
-sultry
-Sulzberger
-sum
-sumac
-sumach
-Sumatra
-Sumatran
-Sumeria
-Sumerian
-summand
-summands
-summaries
-summarily
-summarization
-summarizations
-summarize
-summarized
-summarizes
-summarizing
-summary
-summation
-summations
-summed
-summer
-summer-house
-summer-set
-summer-solstice
-summer-time
-Summerdale
-summerhouse
-summers
-summersault
-summertime
-summery
-summing
-summit
-summitry
-summon
-summoned
-summoner
-summoners
-summoning
-summons
-summonses
-Sumner
-sumo
-sump
-sumpter
-sumptuary
-sumptuous
-sumptuously
-sumptuousness
-sums
-Sumter
-sumword
-sun
-sun-bath
-sun-beam
-sun-blind
-sun-blinkers
-sun-bright
-sun-burnt
-sun-dial
-sun-drenched
-sun-dried
-sun-flower
-sun-glasses
-sun-rise
-sun-set
-sun-spot
-sun-stroke
-sunbath
-sunbathe
-sunbather
-sunbathing
-sunbeam
-sunbeams
-Sunbelt
-sunblock
-sunbonnet
-sunburn
-sunburned
-sunburnt
-sunburst
-sundae
-Sunday
-Sundays
-sunder
-sundial
-sundown
-sundries
-sundry
-sunfish
-sunflower
-sung
-sunglass
-sunglasses
-sunk
-sunken
-sunlamp
-sunless
-sunlight
-sunlit
-sunned
-Sunni
-sunniness
-sunning
-Sunnite
-sunny
-Sunnyvale
-sunrays
-sunrise
-sunroof
-suns
-sunscreen
-sunset
-sunshade
-sunshine
-sunshiny
-sunspot
-sunstroke
-suntan
-suntanned
-suntanning
-sunup
-sunward
-sunwise
-sup
-super
-super-
-super-cargo
-super-duper
-super-monopoly
-super-profits
-superable
-superabundance
-superabundant
-superadd
-superannuate
-superannuated
-superannuation
-superb
-superblock
-superbly
-supercargo
-supercharge
-supercharger
-supercilious
-superciliously
-superciliousness
-supercity
-supercomputer
-supercomputers
-superconductivity
-superconductor
-supercooling
-superego
-superegos
-supererogation
-supererogatory
-superficial
-superficiality
-superficially
-superficies
-superfine
-superfinish
-superfinisher
-superfluities
-superfluity
-superfluous
-superfluously
-superfluousness
-supergroup
-supergroups
-superheat
-superhero
-superhighway
-superhuman
-superhumanly
-superimpose
-superimposed
-superimposes
-superimposing
-superimposition
-superinduce
-superintend
-superintendence
-superintendency
-superintendent
-superintendents
-superior
-superiority
-superiors
-superlative
-superlatively
-superlatives
-superman
-supermarket
-supermarkets
-supermart
-supermini
-superminis
-supermom
-supernal
-supernatural
-supernaturally
-supernova
-supernovae
-supernumerary
-superordination
-superphosphate
-superplan
-superpose
-superposed
-superposes
-superposing
-superposition
-superpower
-supersaturate
-supersaturation
-superscalar
-superscribe
-superscript
-superscripted
-superscripting
-superscription
-superscripts
-supersede
-superseded
-supersedes
-superseding
-superset
-supersets
-supersonic
-superstar
-superstition
-superstitions
-superstitious
-superstitiously
-superstore
-superstructure
-supertanker
-supertax
-superuser
-supervene
-supervention
-supervise
-supervised
-supervises
-supervising
-supervision
-supervisor
-supervisors
-supervisory
-superwoman
-supine
-supper
-suppers
-supplant
-supplanted
-supplanting
-supplants
-supple
-supplement
-supplemental
-supplementary
-supplementation
-supplemented
-supplementing
-supplements
-suppleness
-suppliant
-supplicant
-supplicate
-supplication
-supplicatory
-supplied
-supplier
-suppliers
-supplies
-supply
-supply-reel
-supply-side
-supplying
-support
-supportable
-supported
-supporter
-supporters
-supporting
-supportingly
-supportive
-supportively
-supports
-suppose
-supposed
-supposedly
-supposes
-supposing
-supposition
-suppositional
-suppositions
-supposititious
-suppository
-suppress
-suppressant
-suppressed
-suppresses
-suppressible
-suppressing
-suppression
-suppressive
-suppressor
-suppressors
-suppurate
-suppuration
-supra
-supra-
-supra-national
-supranational
-supremacist
-supremacy
-supreme
-supremely
-sur-
-Surabaja
-Surabaya
-surcease
-surcharge
-surcingle
-surd
-sure
-sure-fire
-sure-footed
-surefire
-surefooted
-surely
-sureness
-sureties
-surety
-surf
-surface
-surface-printing
-surfaced
-surfaceness
-surfaces
-surfacing
-surfboard
-surfeit
-surfer
-surfing
-surfusion
-surge
-surged
-surgeon
-surgeons
-surgery
-surges
-surgical
-surgically
-surging
-Surinam
-Suriname
-Surinamese
-surliness
-surly
-surmise
-surmised
-surmises
-surmount
-surmountable
-surmounted
-surmounting
-surmounts
-surmullet
-surname
-surnames
-surpass
-surpassed
-surpasses
-surpassing
-surplice
-surplus
-surpluses
-surprint
-surprise
-surprised
-surprises
-surprising
-surprisingly
-surreal
-surrealism
-surrealist
-surrealistic
-surrealistically
-surrender
-surrendered
-surrendering
-surrenders
-surreptitious
-surreptitiously
-surreptitiousness
-surrey
-surrogacy
-surrogate
-surrogates
-surround
-surrounded
-surrounding
-surroundings
-surrounds
-surtax
-surtout
-surveillance
-survey
-surveyed
-surveying
-surveyor
-surveyors
-surveys
-survival
-survivalist
-survivals
-survive
-survived
-survives
-surviving
-survivor
-survivors
-Sus
-Susan
-Susanne
-susceptibility
-susceptible
-susceptive
-sushi
-Susie
-suspect
-suspected
-suspecting
-suspects
-suspend
-suspended
-suspender
-suspenders
-suspending
-suspends
-suspense
-suspenseful
-suspenses
-suspension
-suspensions
-suspensive
-suspensory
-suspicion
-suspicions
-suspicious
-suspiciously
-suspire
-Susquehanna
-Sussex
-sustain
-sustainable
-sustained
-sustaining
-sustains
-sustenance
-sustentation
-Sutherland
-sutler
-Sutton
-suture
-sutures
-SUV
-Suva
-Suwanee
-Suzanne
-suzerain
-suzerainty
-Suzuki
-svelte
-Sverdlovsk
-Svetlana
-SW
-swab
-swabbing
-swaboff
-swaddle
-swag
-swage
-swagger
-swaggered
-swaggering
-Swahili
-swain
-swains
-SWAK
-swallow
-swallow-tail
-swallow-tailed
-swallowed
-swallowing
-swallows
-swallowtail
-swam
-swami
-swamp
-swamped
-swamping
-swampland
-swamps
-swampy
-swan
-swan's-down
-swan-song
-swank
-swankily
-swankiness
-swanky
-swanlike
-swans
-swansdown
-Swansea
-Swanson
-swap
-swapfile
-swapped
-swapping
-swaps
-sward
-swarf
-swarm
-swarmed
-swarming
-swarms
-swart
-Swarthmore
-Swarthout
-swarthy
-Swartz
-swash
-swash-buckler
-swashbuckler
-swashbuckling
-swastika
-swatch
-swath
-swathe
-swathing-band
-swatted
-swatter
-sway
-swayback
-swaybacked
-swayed
-swaying
-Swazi
-Swaziland
-swear
-swearer
-swearing
-swears
-swearword
-sweat
-sweatband
-sweated
-sweater
-sweaters
-sweating
-sweatpants
-sweats
-sweatshirt
-sweatshop
-sweaty
-swede
-Sweden
-Swedes
-Swedish
-Sweeney
-Sweeneys
-sweep
-sweeper
-sweepers
-sweeping
-sweepingly
-sweepings
-sweeps
-sweepstake
-sweepstakes
-sweepy
-sweet
-sweet-bread
-sweet-briar
-sweet-fennel
-sweet-john
-sweet-lipped
-sweet-root
-sweet-spoken
-sweet-talk
-sweet-tooth
-sweet-william
-sweetbread
-sweetbriar
-sweetbrier
-sweeten
-sweetened
-sweetener
-sweeteners
-sweetening
-sweetenings
-sweetens
-sweeter
-sweetest
-sweetheart
-sweethearts
-sweetie
-sweeting
-sweetish
-sweetly
-sweetmeat
-sweetness
-sweetpea
-sweets
-sweety
-swell
-swelled
-swellhead
-swellheaded
-swelling
-swellings
-swells
-swelter
-sweltering
-Swenson
-swept
-sweptback
-swerve
-swerved
-swerves
-swerving
-swift
-swift-footed
-swift-winged
-swifter
-swiftest
-swiftly
-swiftness
-swig
-swill
-swim
-swimmer
-swimmers
-swimming
-swimming-bath
-swimmingly
-swimmingplace
-swims
-swimsuit
-Swinburne
-swindle
-swindler
-swine
-swine-herd
-swineherd
-swing
-swing-bridge
-swing-door
-swing-wheel
-swinge
-swinge-buckler
-swingeing
-swinger
-swingers
-swinging
-swingle
-swings
-swinish
-swink
-swipe
-swirl
-swirled
-swirling
-swirly
-swish
-swished
-Swiss
-switch
-switch-back
-switch-board
-switch-hit
-switch-hitter
-switchback
-switchblade
-switchboard
-switchboards
-switched
-switcher
-switchers
-switches
-switching
-switchings
-switchman
-switchpoint
-Switzer
-Switzerland
-swivel
-swivel-chair
-swizzle
-swob
-swollen
-swoon
-swoop
-swooped
-swooping
-swoops
-swoosh
-swop
-sword
-sword-cane
-sword-cut
-sword-cutter
-sword-fish
-sword-flag
-sword-hilt
-sword-law
-swordfish
-swordplay
-swords
-swordsman
-swordsmanship
-swore
-sworn
-swot
-swum
-swung
-sybarite
-sybaritic
-Sybil
-sycamore
-sycophancy
-sycophant
-sycophantic
-Sydney
-Sykes
-syllabary
-syllabi
-syllabic
-syllabical
-syllabicate
-syllabication
-syllabification
-syllabify
-syllable
-syllables
-syllabus
-syllogism
-syllogisms
-syllogistic
-Sylow
-sylph
-sylphic
-sylphlike
-sylvan
-Sylvania
-Sylvester
-Sylvia
-Sylvie
-symbioses
-symbiosis
-symbiotic
-symbol
-symbolic
-symbolical
-symbolically
-symbolics
-symbolism
-symbolization
-symbolize
-symbolized
-symbolizes
-symbolizing
-symbols
-Symington
-symmetric
-symmetrical
-symmetrically
-symmetries
-symmetrize
-symmetry
-sympathetic
-sympathetical
-sympathetically
-sympathies
-sympathize
-sympathized
-sympathizer
-sympathizers
-sympathizes
-sympathizing
-sympathizingly
-sympathy
-symphonic
-symphonies
-symphony
-symposia
-symposium
-symposiums
-symptom
-symptomatic
-symptomatically
-symptoms
-synagog
-synagogal
-synagogue
-synapse
-synapses
-synaptic
-sync
-synch
-synchro
-synchroflash
-synchronic
-synchronical
-synchronism
-synchronization
-synchronize
-synchronized
-synchronizer
-synchronizers
-synchronizes
-synchronizing
-synchronous
-synchronously
-synchrony
-synchrotron
-syncopate
-syncopated
-syncopation
-syncope
-syndicalism
-syndicate
-syndicated
-syndicates
-syndication
-syndrome
-syndromes
-synergism
-synergistic
-synergy
-synfuel
-Synge
-synod
-synodical
-synonym
-synonymic
-synonymity
-synonymize
-synonymous
-synonymously
-synonyms
-synonymy
-synopses
-synopsis
-synoptic
-synoptical
-synovia
-syntactic
-syntactical
-syntactically
-syntactics
-syntagma
-syntax
-syntaxes
-syntheses
-synthesis
-synthesize
-synthesized
-synthesizer
-synthesizers
-synthesizes
-synthesizing
-synthetic
-synthetical
-synthetically
-synthetics
-synthetize
-syphilis
-syphilitic
-syphon
-Syracuse
-Syria
-Syriac
-Syrian
-Syrianize
-Syrianizes
-Syrians
-syringa
-syringe
-syringes
-syrup
-syrupy
-SYSLOG
-system
-systematic
-systematical
-systematically
-systematics
-systematization
-systematize
-systematized
-systematizes
-systematizing
-systemic
-systemically
-systemization
-systemless
-systems
-systemwide
-systole
-systolic
-Szilard
-t'other
-T-ball
-T-bar
-T-bill
-T-junction
-T-shirt
-T-square
-tab
-Tabasco
-tabbouleh
-tabby
-tabernacle
-tabernacles
-tabla
-table
-table-book
-table-cloth
-table-hop
-table-hopper
-table-lamp
-table-land
-table-linen
-table-money
-table-napkin
-table-talk
-table-tennis
-tableau
-tableaus
-tableaux
-tablecloth
-tablecloths
-tabled
-tableland
-tableman
-tables
-tablespoon
-tablespoonful
-tablespoonfuls
-tablespoons
-tablespoonsful
-tablet
-tablets
-tableware
-tabling
-tabloid
-taboo
-taboos
-tabor
-Taborite
-tabouret
-Tabriz
-tabs
-tabu
-tabular
-tabulate
-tabulated
-tabulates
-tabulating
-tabulation
-tabulations
-tabulator
-tabulators
-tachometer
-tachometers
-tachycardia
-tacit
-tacitly
-tacitness
-taciturn
-taciturnity
-taciturnly
-Tacitus
-tack
-tacked
-tacker
-tackiness
-tacking
-tackle
-tackler
-tackles
-tackling
-tacky
-taco
-Tacoma
-tact
-tactful
-tactfully
-tactfulness
-tactic
-tactical
-tactically
-tactician
-tactics
-tactile
-tactility
-tactless
-tactlessly
-tactlessness
-tad
-tadpole
-Tadzhikistan
-Taegu
-Taejon
-tafferel
-taffeta
-taffrail
-taffy
-Taft
-tag
-tag-rag
-Tagalog
-tagged
-tagger
-tagging
-tags
-Tahiti
-Tahitian
-Tahoe
-Taichung
-taiga
-tail
-tail-coat
-tail-light
-tail-ornament
-tailback
-tailcoat
-tailed
-tailgate
-tailing
-tailless
-taillight
-tailor
-tailor-made
-tailored
-tailoring
-tailors
-tailors
-tailpipe
-tails
-tailspin
-tailwind
-Tainan
-taint
-tainted
-taintless
-Taipei
-Taiwan
-Taiwanese
-Taiyuan
-Tajikistan
-take
-take!
-take-in
-take-no-prisoners
-take-off
-taken
-takeoff
-takeout
-takeover
-taker
-takers
-takes
-taking
-taking-over
-takings
-talc
-talcum
-tale
-tale-bearer
-talebearer
-talent
-talented
-talents
-tales
-tali
-talisman
-talk
-talkative
-talkatively
-talkativeness
-talked
-talker
-talkers
-talkie
-talking
-talking-book
-talking-to
-talks
-talkwriter
-tall
-Talladega
-Tallahassee
-Tallahatchie
-Tallahoosa
-tallboy
-Tallchief
-taller
-tallest
-Talleyrand
-tallier
-Tallinn
-tallish
-tallness
-tallow
-tallow-candle
-tallow-chandler
-tallowy
-tally
-tallyho
-talmud
-Talmudic
-Talmudism
-Talmudist
-Talmudization
-Talmudizations
-Talmudize
-Talmudizes
-talon
-talus
-tam
-tam-o'-shanter
-tamable
-tamale
-tamarack
-tamarind
-tambour
-tambour-work
-tambourine
-tame
-tameable
-tamed
-tameless
-tamely
-tameness
-tamer
-tames
-Tamil
-taming
-Tammany
-Tammanyize
-Tammanyizes
-tamp
-Tampa
-tamper
-tampered
-tamperer
-tampering
-tampers
-tamping
-tampion
-tampon
-tan
-tan-bark
-tan-house
-tanager
-Tanaka
-Tananarive
-tanbark
-tandem
-tandoori
-tang
-Tanganyika
-tangelo
-tangent
-tangential
-tangentially
-tangents
-tangerine
-tangibility
-tangible
-tangibleness
-tangibly
-Tangier
-Tangiers
-tangle
-tangled
-tango
-Tangshan
-tangy
-tank
-tank-buster
-tank-destroyer
-tank-engine
-tank-trap
-tank-truck
-tankard
-tanker
-tankers
-tankful
-tanks
-tanned
-Tannenbaum
-tanner
-tanners
-tannery
-tannic
-tannin
-tanning
-tansy
-tantalise
-tantalization
-tantalize
-tantalizer
-tantalizing
-tantalizingly
-tantalum
-Tantalus
-tantamount
-tantivy
-tantra
-tantrum
-tantrums
-Tanya
-Tanzania
-Tanzanian
-Taoism
-Taoist
-Taos
-tap
-tap-dance
-tap-dancer
-tap-room
-tape
-tape-record
-tape-recorder
-tape-worm
-taped
-tapeline
-taper
-taper-reamer
-tapered
-tapering
-tapers
-tapes
-tapestries
-tapestry
-tapeworm
-taping
-tapings
-tapioca
-tapir
-tapis
-tapped
-tapper
-tappers
-tappet
-tapping
-taproom
-taproot
-taproots
-taps
-tapster
-tar
-Tara
-tarantella
-tarantula
-tarantulae
-Tarbell
-tardily
-tardiness
-tardy
-tare
-target
-targeted
-targeting
-targets
-tariff
-tariffs
-tarmac
-tarn
-tarnal
-tarnation
-tarnish
-taro
-tarot
-tarp
-tarpaulin
-tarpon
-tarragon
-tarry
-Tarrytown
-tarsal
-tarsi
-tarsia
-tarsus
-tart
-tartan
-tartar
-tartaric
-Tartary
-tartly
-tartness
-Tartuffe
-Tarzan
-Tashkent
-task
-task-master
-task-work
-tasked
-tasking
-taskmaster
-taskmistress
-tasks
-Tasmania
-Tasmanian
-Tass
-tassel
-tasseled
-tassels
-taste
-tasted
-tasteful
-tastefully
-tastefulness
-tasteless
-tastelessly
-tastelessness
-taster
-tasters
-tastes
-tastily
-tastiness
-tasting
-tasty
-tat
-tata
-tatami
-Tatar
-Tate
-tater
-tatter
-tatterdemalion
-tattered
-tatters
-tatting
-tattle
-tattler
-tattletale
-tattoo
-tattooed
-tattooer
-tattooist
-tattoos
-tau
-taught
-taunt
-taunted
-taunter
-taunting
-tauntingly
-taunts
-taupe
-Taurus
-taut
-tauten
-tautly
-tautness
-tautological
-tautologically
-tautologies
-tautologous
-tautology
-tavern
-taverns
-taw
-tawdrily
-tawdriness
-tawdry
-Tawney
-tawny
-tax
-tax-deductible
-tax-deferred
-tax-exempt
-tax-free
-tax-sheltered
-taxable
-taxation
-taxed
-taxer
-taxes
-taxi
-taxi-cab
-taxicab
-taxicabs
-taxidermist
-taxidermy
-taxied
-taxiing
-taximeter
-taxing
-taxis
-taxonomic
-taxonomical
-taxonomically
-taxonomist
-taxonomy
-taxpayer
-taxpayers
-taxpaying
-Taylor
-Taylorize
-Taylorizes
-Taylors
-TBA
-Tbilisi
-Tc
-TCAM
-Tchaikovsky
-Tchajwan
-TD
-TDD
-Te
-tea
-tea-board
-tea-cake
-tea-cosy
-tea-cup
-tea-house
-tea-kettle
-tea-plant
-tea-pot
-tea-room
-tea-service
-tea-set
-tea-shop
-tea-spoon
-tea-things
-tea-tongs
-tea-tray
-tea-urn
-teacake
-teach
-teach-in
-teachable
-teacher
-teachers
-teaches
-teaching
-teachings
-teachware
-teacup
-teacupful
-teak
-teakettle
-teal
-team
-team-work
-teamed
-teaming
-teammate
-teams
-teamster
-teamwork
-teapot
-tear
-tear-gas
-teardrop
-teared
-tearful
-tearfully
-teargas
-tearing
-tearjerker
-tearoom
-tears
-teary
-teas
-tease
-teased
-teasel
-teaser
-teases
-teasing
-teaspoon
-teaspoonful
-teaspoonfuls
-teaspoons
-teaspoonsful
-teat
-teazel
-teazle
-tech
-technetium
-technical
-technicalities
-technicality
-technically
-technician
-technicians
-technicolor
-technics
-Technion
-technique
-techniques
-techno
-technocracy
-technocrat
-technocratic
-technological
-technologically
-technologies
-technologist
-technologists
-technology
-techy
-tectonic
-tectonics
-Tecumseh
-ted
-Teddy
-tedious
-tediously
-tediousness
-tedium
-tee
-teem
-teemed
-teeming
-teems
-teen
-teen-age
-teen-ager
-teen-agers
-teenage
-teenaged
-teenager
-teenagers
-teens
-teensy
-teensy-weensy
-teeny
-teeny-weeny
-teenybopper
-teepee
-teeshirt
-teeter
-teeter-totter
-teeth
-teethe
-teethed
-teethes
-teething
-teetotal
-teetotaler
-teetotalism
-teetotaller
-TEFL
-Teflon
-Tegucigalpa
-tegular
-tegument
-Teheran
-Tehran
-tektite
-Tektronix
-tele-bridge
-telecast
-telecaster
-telecommunication
-telecommunications
-telecommute
-telecommuter
-telecommuting
-teleconference
-teleconferencing
-telecontrol
-telecopier
-telecopying
-telecourse
-TELEDATA
-Teledyne
-TELEFACS
-telefax
-telefiles
-telefilm
-Telefunken
-telegenic
-telegram
-telegrams
-telegraph
-telegraphed
-telegrapher
-telegraphers
-telegraphic
-telegraphically
-telegraphing
-telegraphist
-telegraphs
-telegraphy
-teleinquiry
-telekinesis
-telekinetic
-telemail
-Telemann
-telemarketer
-telemarketing
-telematics
-telemeter
-telemetry
-TELENET
-teleological
-teleologically
-teleology
-telepathic
-telepathically
-telepathy
-telephone
-telephoned
-telephoner
-telephoners
-telephones
-telephonic
-telephoning
-telephonist
-telephony
-telephoto
-telephotography
-teleprint
-teleprinter
-teleprocessing
-TelePrompTer
-telerecord
-telerecording
-telereference
-telereferencing
-telescope
-telescoped
-telescopes
-telescopic
-telescopically
-telescoping
-telescreen
-teletex
-teletext
-telethon
-teletransmission
-teletype
-teletypes
-teletypesetter
-teletypewriter
-televangelism
-televangelist
-teleview
-televiewer
-televise
-televised
-televises
-televising
-television
-televisions
-televisor
-televisors
-telewriter
-telex
-tell
-teller
-tellers
-telling
-telling-off
-tellingly
-tells
-telltale
-tellurium
-telly
-TELPAK
-TELSET
-temblor
-temerity
-temp
-Tempe
-temper
-tempera
-temperament
-temperamental
-temperamentally
-temperaments
-temperance
-temperate
-temperately
-temperateness
-temperature
-temperatures
-tempered
-tempering
-tempers
-tempest
-tempestuous
-tempestuously
-tempestuousness
-tempi
-Templar
-template
-templates
-temple
-Templeman
-temples
-templet
-Templeton
-tempo
-temporal
-temporality
-temporally
-temporaries
-temporarily
-temporariness
-temporary
-temporization
-temporize
-temporizer
-tempt
-temptation
-temptations
-tempted
-tempter
-tempters
-tempting
-temptingly
-temptress
-tempts
-tempura
-ten
-tenability
-tenable
-tenably
-tenacious
-tenaciously
-tenaciousness
-tenacity
-tenancy
-tenant
-tenantry
-tenants
-tench
-tend
-tendance
-tended
-tendencies
-tendency
-tendentious
-tendentiously
-tendentiousness
-tender
-tender-hearted
-tender-minded
-tenderfeet
-tenderfoot
-tenderhearted
-tenderheartedly
-tenderheartedness
-tendering-procedure
-tenderize
-tenderizer
-tenderloin
-tenderly
-tenderness
-tenders
-tending
-tendinitis
-tendon
-tendonitis
-tendril
-tends
-tenebrous
-tenement
-tenements
-tenet
-tenfold
-tenht
-Tenn
-Tenneco
-Tennessean
-Tennessee
-Tenney
-tennis
-tennis-ball
-tennis-court
-Tennyson
-tenon
-tenor
-tenors
-tenpin
-tenpins
-tens
-tense
-tensed
-tensely
-tenseness
-tenser
-tenses
-tensest
-tensile
-tensing
-tension
-tensions
-tensity
-tensor
-tent
-tent-pegs
-tentacle
-tentacled
-tentacles
-tentative
-tentatively
-tentativeness
-tented
-tenter
-tenter-hook
-tenterhook
-tenth
-tenthly
-tenting
-tents
-tenuity
-tenuous
-tenuously
-tenuousness
-tenure
-tenured
-tepee
-tepefy
-tepid
-tepidity
-tepidly
-tepidness
-tequila
-terabyte
-terbium
-tercentenary
-tercentennial
-terebinth
-terebinthine
-Teresa
-tergiversate
-tergiversation
-term
-termagant
-termed
-terminable
-terminal
-terminally
-terminals
-terminate
-terminated
-terminates
-terminating
-termination
-terminations
-terminator
-terminators
-terming
-termini
-terminography
-terminological
-terminologically
-terminologies
-terminologist
-terminology
-terminus
-termiprinter
-termite
-termly
-terms
-termwise
-tern
-ternary
-Terpsichore
-terra
-terrace
-terraced
-terraces
-terracotta
-terrain
-terrains
-terramycin
-Terran
-terrapin
-terraria
-terrarium
-terrazzo
-Terre
-terrene
-terrestrial
-terrestrially
-terrestrials
-terrible
-terribleness
-terribly
-terrier
-terriers
-terrific
-terrifically
-terrified
-terrifies
-terrify
-terrifying
-terrifyingly
-territorial
-territories
-territory
-terror
-terror-stricken
-terror-struck
-terrorism
-terrorist
-terroristic
-terrorists
-terrorize
-terrorized
-terrorizes
-terrorizing
-terrors
-terry
-terry-cloth
-terrycloth
-terse
-tersely
-terseness
-tertiary
-terylene
-TESL
-TESOL
-Tess
-tessellate
-tessellated
-tessera
-Tessie
-test
-test-drive
-test-fly
-test-glass
-test-paper
-test-room
-test-tube
-testability
-testable
-testaceous
-testament
-testamentary
-testaments
-testate
-testator
-testatrix
-tested
-tester
-testers
-testes
-testicle
-testicles
-testification
-testified
-testifier
-testifiers
-testifies
-testify
-testifying
-testily
-testimonial
-testimonies
-testimony
-testiness
-testing
-testings
-testis
-testosterone
-tests
-testudinal
-testy
-tetanic
-tetanus
-tetchy
-tete-a-tete
-tether
-tetra
-tetracycline
-tetragon
-tetragonal
-tetrahedra
-tetrahedral
-tetrahedron
-tetrameter
-tetter
-Teuton
-Teutonic
-Tex-Mex
-Texaco
-Texan
-Texans
-Texas
-Texases
-text
-text-editor
-text-hand
-text-processor
-textbook
-textbooks
-textile
-textiles
-Textron
-texts
-textual
-textually
-textural
-texture
-textured
-textures
-textware
-Th
-Thai
-Thailand
-thalami
-thalamus
-Thalia
-thalidomide
-thallium
-Thames
-than
-than-that
-thane
-thank
-thank-you
-thanked
-thankful
-thankfully
-thankfulness
-thanking
-thankless
-thanklessly
-thanklessness
-thanks
-thanks-giving
-thanksgivings
-that
-thatch
-thatched
-thatcher
-thatches
-thatching
-thats
-thaumaturge
-thaumaturgic
-thaumaturgist
-thaumaturgy
-thaw
-thawed
-thawing
-thaws
-Thayer
-THC
-the
-Thea
-theater
-theatergoer
-theaters
-theatre
-theatrical
-theatricality
-theatrically
-theatricals
-theatrics
-Thebes
-thee
-theft
-thefts
-their
-theirs
-theism
-theist
-theistic
-Thelma
-them
-thematic
-thematically
-theme
-themes
-themselves
-then
-thence
-thence-forth
-thence-forward
-thenceforth
-thenceforward
-theocracy
-theocratic
-theodolite
-Theodore
-Theodosian
-Theodosius
-theologian
-theological
-theologically
-theologist
-theology
-theorem
-theorems
-theoretic
-theoretical
-theoretically
-theoretician
-theoreticians
-theories
-theorist
-theorists
-theorization
-theorizations
-theorize
-theorized
-theorizer
-theorizers
-theorizes
-theorizing
-theory
-theosophic
-theosophical
-theosophist
-theosophy
-therapeutic
-therapeutically
-therapeutics
-therapies
-therapist
-therapists
-therapy
-there
-there's
-thereabout
-thereabouts
-thereafter
-thereat
-thereby
-therefor
-therefore
-therefrom
-therein
-thereinto
-thereof
-thereon
-thereout
-Theresa
-thereto
-theretofore
-thereunder
-thereunto
-thereupon
-therewith
-therewithal
-therm
-thermal
-thermally
-thermals
-thermo-electric
-thermocopy
-thermocopying
-thermocouple
-thermodynamic
-thermodynamics
-Thermofax
-thermography
-thermometer
-thermometers
-thermometric
-thermonuclear
-thermoplastic
-thermos
-thermostat
-thermostatic
-thermostatically
-thermostats
-thesauri
-thesaurus
-these
-theses
-Theseus
-thesis
-Thessalonian
-Thessaly
-theta
-Thetis
-thew
-thews
-they
-they'd
-they'll
-they're
-they've
-thiamin
-thiamine
-thick
-thick-eyed
-thick-head
-thick-headed
-thick-skinned
-thick-skulled
-thicken
-thickener
-thickening
-thickens
-thicker
-thickest
-thicket
-thickets
-thickheaded
-thickly
-thickness
-thickset
-thief
-Thiensville
-thieve
-thievery
-thieves
-thieving
-thievish
-thigh
-thigh-bone
-thighbone
-thighs
-thill
-thiller
-thimble
-thimbleful
-thimblerig
-thimbles
-Thimbu
-Thimphu
-thin
-thin-bodied
-thin-skinned
-thine
-thing
-thingamabob
-thingamajig
-thingamy
-things
-thingumbob
-thingummy
-think
-thinkable
-thinkably
-thinker
-thinkers
-thinking
-thinks
-thinly
-thinner
-thinness
-thinnest
-thinnner
-third
-third-class
-third-rate
-thirdly
-thirds
-thirst
-thirsted
-thirstily
-thirstiness
-thirsts
-thirsty
-thirteen
-thirteens
-thirteenth
-thirties
-thirtieth
-thirty
-thirty-two-mo
-this
-thistle
-thistledown
-thistly
-thither
-thitherto
-thitherward(s)
-tho
-tho'
-thole
-Thomas
-Thomistic
-Thompson
-Thomson
-thong
-Thor
-thoraces
-thoracic
-thorax
-Thoreau
-thorium
-thorn
-Thornburg
-thorniness
-thorns
-Thornton
-thorny
-thorough
-thorough-bred
-thorough-paced
-thoroughbred
-thoroughfare
-thoroughfares
-thoroughgoing
-thoroughly
-thoroughness
-thorp
-Thorpe
-Thorstein
-those
-thou
-though
-thought
-thought-out
-thoughtful
-thoughtfully
-thoughtfulness
-thoughtless
-thoughtlessly
-thoughtlessness
-thoughts
-thousand
-thousandfold
-thousands
-thousandth
-Thrace
-Thracian
-thraldom
-thrall
-thralldom
-thrash
-thrashed
-thrasher
-thrashes
-thrashing
-thrashing-floor
-thrashing-machine
-thread
-threadbare
-threaded
-threader
-threaders
-threading
-threadlike
-threads
-thready
-threat
-threaten
-threatened
-threatening
-threateningly
-threatens
-threats
-three
-three-cornered
-three-D
-three-decker
-three-dimensional
-three-master
-three-part
-three-phase
-three-ply
-three-quarter
-three-quarters
-three-stage
-three-wheeler
-threefold
-threepence
-threepenny
-threes
-threescore
-threesome
-threnody
-thresh
-thresher
-threshold
-thresholds
-threw
-thrice
-thrid
-thrift
-thriftily
-thriftiness
-thriftless
-thrifty
-thrill
-thrilled
-thriller
-thrillers
-thrilling
-thrillingly
-thrills
-thrive
-thrived
-thriven
-thriver
-thriving
-thro'
-throat
-throat-pipe
-throated
-throatflap
-throatily
-throatiness
-throats
-throaty
-throb
-throbbed
-throbbing
-throbs
-throe
-throes
-thrombi
-thromboses
-thrombosis
-thrombotic
-thrombus
-throne
-Throneberry
-thrones
-throng
-throngs
-throstle
-throttle
-throttle-lever
-throttle-valve
-throttled
-throttler
-throttles
-throttling
-through
-throughout
-throughput
-throughway
-throve
-throw
-throw-away
-throw-in
-throw-out
-throw-outs
-throwaway
-throwback
-thrower
-throwing
-thrown
-throws
-thru
-thrum
-thrush
-thrust
-thruster
-thrusters
-thrusting
-thrusts
-thruway
-Thu
-Thuban
-Thucydides
-thud
-thuds
-thug
-thuggery
-thuggish
-thugs
-Thule
-thulium
-thumb
-thumb-stall
-thumbed
-thumbing
-thumbnail
-thumbs
-thumbscrew
-thumbtack
-thump
-thumped
-thumping
-thunder
-thunder-clap
-thunder-clouds
-thunder-storm
-thunder-stroke
-thunder-struck
-thunderation
-thunderbolt
-thunderbolts
-thunderclap
-thundercloud
-thundered
-thunderer
-thunderers
-thunderhead
-thundering
-thunderous
-thunderously
-thunders
-thundershower
-thunderstorm
-thunderstorms
-thunderstricken
-thunderstruck
-Thurber
-thurible
-Thuringia
-Thurman
-Thurs
-Thursday
-Thursdays
-thus
-thusly
-thwack
-thwacker
-thwaite
-thwart
-thwarted
-thwarting
-thwarts
-thy
-thyme
-thymine
-thymus
-thyroid
-thyroidal
-thyself
-Tianjin
-tiara
-Tiber
-Tiberius
-Tibet
-Tibetan
-tibia
-tibiae
-tibial
-Tiburon
-tic
-tic-tac-toe
-tick
-tick-tack
-tick-tack-toe
-ticked
-ticker
-tickers
-ticket
-ticket-collector
-ticket-office
-ticket-porter
-tickets
-ticking
-tickle
-tickled
-tickler
-tickles
-tickling
-ticklish
-ticklishly
-ticklishness
-ticks
-ticktacktoe
-ticktock
-Ticonderoga
-tidal
-tidally
-tidbit
-tiddley
-tiddly
-tiddlywinks
-tide
-tided
-tideland
-tides
-tidewater
-tideway
-tidied
-tidily
-tidiness
-tiding
-tidings
-tidy
-tidying
-tie
-tie-dye
-tie-dyed
-tie-dyeing
-tie-in
-tie-up
-tieback
-tiebreaker
-Tieck
-tied
-Tientsin
-tiepin
-tier
-tierce
-tiered
-tiers
-ties
-tiff
-tiffany
-tiffin
-tige
-tiger
-tigerish
-tigers
-tight
-tight-fisted
-tight-laced
-tight-lipped
-tight-listed
-tight-made
-tight-rope
-tighten
-tightened
-tightener
-tighteners
-tightening
-tightenings
-tightens
-tighter
-tightest
-tightfisted
-tightly
-tightness
-tightrope
-tights
-tightwad
-tigress
-Tigris
-Tijuana
-tike
-tilde
-tile
-tile-kiln
-tiled
-tiler
-tiles
-tiling
-till
-tillable
-tillage
-tilled
-tiller
-tillers
-Tillich
-Tillie
-tilling
-tills
-Tilsit
-tilt
-tilt-car
-tilt-yard
-tilted
-tilter
-tilth
-tilting
-tilting-trunk
-tilts
-Tim
-timber
-timber-headed
-timber-hut
-timber-wood
-timber-work
-timber-yard
-timbered
-timbering
-timberland
-timberline
-timbers
-timbre
-timbrel
-time
-time-consuming
-time-fuse
-time-honored
-time-honoured
-time-keeper
-time-killing
-time-lapse
-time-out
-time-recorder
-time-saving
-time-server
-time-serving
-time-share
-time-sharing
-time-table
-time-work
-timed
-timekeeper
-timekeeping
-timelag
-timeless
-timelessly
-timelessness
-timeliness
-timely
-timeout
-timeouts
-timepiece
-timer
-timers
-times
-timeserver
-timeserving
-timeshare
-timeshares
-timesharing
-timestamp
-timestamps
-timetable
-timetables
-timework
-timeworn
-Timex
-timid
-timidity
-timidly
-timidness
-timing
-timings
-Timmy
-Timon
-Timonize
-Timonizes
-timorous
-timorously
-timorousness
-timpani
-timpanist
-Tims
-tin
-tin-box
-tin-foil
-tin-pot
-Tina
-tincture
-tinder
-tinder-box
-tinderbox
-tine
-tinfoil
-ting
-tinge
-tinged
-tingle
-tingled
-tingles
-tingling
-tingly
-tinhorn
-tinier
-tiniest
-tinily
-tininess
-tinker
-tinkered
-tinkerer
-tinkering
-tinkers
-tinkle
-tinkled
-tinkles
-tinkling
-tinman
-tinner
-tinnier
-tinniest
-tinnily
-tinniness
-tinnitus
-tinny
-tinplate
-tins
-tinsel
-Tinseltown
-tinsmith
-tint
-tinted
-tinting
-tintinnabulation
-tints
-tintype
-tinware
-tiny
-Tioga
-tip
-tip-cart
-tip-merry
-tip-off
-tip-top
-tipi
-Tippecanoe
-tipped
-tipper
-Tipperary
-tippers
-tippet
-tipping
-tipple
-tippler
-tips
-tipsify
-tipsily
-tipsiness
-tipstaff
-tipster
-tipsy
-tiptoe
-tiptop
-tirade
-Tirana
-Tirane
-tire
-tire-casing
-tire-pump
-tire-tube
-tired
-tiredly
-tiredness
-tireless
-tirelessly
-tirelessness
-tires
-tiresome
-tiresomely
-tiresomeness
-tiring
-tiro
-Tirol
-Tirolean
-tirra-lirra
-TIS
-tissue
-tissues
-tit
-titanic
-titanium
-titbit
-tithe
-tither
-tithes
-tithing
-titillate
-titillating
-titillatingly
-titillation
-titivate
-titivation
-title
-title-deed
-title-line
-title-page
-title-signature
-titled
-titleholder
-titleless
-titles
-titling
-titmice
-titmouse
-Tito
-tits
-titter
-titters
-tittivate
-tittle
-tittle-tattle
-tittup
-titular
-Titus
-tizzy
-TKO
-Tl
-TLC
-TN
-TNT
-to
-to-and-fro
-to-do
-to-morrow
-to-night
-toad
-toad-eater
-toad-stool
-toads
-toadstool
-toady
-toast
-toast-master
-toasted
-toaster
-toasting
-toastmaster
-toastmistress
-toasts
-Toasts-Eggs
-toasty
-tobacco
-tobacco-pipe
-tobacco-pouch
-tobacconist
-tobacconist's
-tobacconists
-Tobago
-toboggan
-tobogganer
-tobogganing
-Toby
-Tocqueville
-tocsin
-today
-todays
-todays
-Todd
-toddle
-toddler
-toddy
-toe
-toecap
-toed
-TOEFL
-toehold
-toenail
-toes
-toff
-toffee
-toffees
-toffy
-tofu
-tog
-toga
-togaed
-together
-togetherness
-toggle
-toggled
-toggles
-toggling
-Togo
-Togolese
-togs
-toil
-toiled
-toiler
-toilet
-toilet-paper
-toilet-set
-toiletries
-toiletry
-toilets
-toilette
-toiling
-toils
-toilsome
-Tokany
-toke
-token
-tokenism
-tokens
-Tokyo
-Tokyoite
-Toland
-told
-tole
-Toledo
-tolerability
-tolerable
-tolerably
-tolerance
-tolerances
-tolerant
-tolerantly
-tolerate
-tolerated
-tolerates
-tolerating
-toleration
-Tolkien
-toll
-toll-cable
-toll-collector
-toll-free
-toll-house
-tollbooth
-tolled
-Tolley
-tollgate
-tolls
-tollway
-Tolstoy
-toluene
-tom
-tom-cat
-tom-noddy
-tom-tom
-tomahawk
-tomahawks
-tomato
-tomatoes
-tomb
-Tombigbee
-tomboy
-tomboyish
-tombs
-tombstone
-tomcat
-tome
-tomfool
-tomfoolery
-Tomlinson
-Tommie
-tommy
-tommy-gun
-tomographic
-tomography
-tomorrow
-tomorrows
-tomorrows
-Tompkins
-tomtit
-ton
-tonal
-tonality
-tonally
-tone
-tone-deaf
-tonearm
-toned
-toneless
-tonelessly
-toner
-tones
-tong
-Tonga
-Tongan
-tongs
-tongue
-tongue-in-cheek
-tongue-lash
-tongue-lashing
-tongue-tied
-tongued
-tonguelash
-tongueless
-tongues
-Toni
-tonic
-tonics
-tonight
-toning
-Tonio
-tonnage
-tonne
-tons
-tonsil
-tonsillectomy
-tonsillitis
-tonsils
-tonsorial
-tonsure
-tontine
-tony
-too
-took
-tool
-tool-kit
-tool-shed
-toolbox
-tooled
-tooler
-toolers
-tooling
-toolmaker
-tools
-Toomey
-toot
-tooter
-tooth
-tooth-ache
-tooth-brush
-tooth-paste
-tooth-powder
-tooth-wheel
-toothache
-toothbrush
-toothbrushes
-toothed
-toothful
-toothily
-toothing
-toothless
-toothpaste
-toothpick
-toothpicks
-toothsome
-toothy
-tootle
-top
-top-boots
-top-coat
-top-down
-top-drawer
-top-dress
-top-flight
-top-gallant
-top-hat
-top-heavy
-top-hole
-top-knot
-top-level
-top-notch
-top-of-form
-top-quality
-top-ranking
-top-secret
-topaz
-topcoat
-topdressing
-tope
-Topeka
-toper
-topflight
-topiary
-topic
-topical
-topicality
-topically
-topics
-topknot
-topless
-topmast
-topmost
-topnotch
-topographer
-topographic
-topographical
-topographically
-topography
-topological
-topologies
-topology
-topper
-topping
-topple
-toppled
-topples
-toppling
-tops
-topsail
-topside
-topsides
-topsoil
-topspin
-Topsy
-topsy-turvy
-topsyturvy
-toque
-tor
-torch
-torchbearer
-torches
-torchlight
-tore
-toreador
-Tories
-torment
-tormented
-tormenter
-tormenters
-tormenting
-tormentingly
-tormentor
-torments
-torn
-tornado
-tornadoes
-Toronto
-torpedo
-torpedo-craft
-torpedoes
-torpid
-torpidity
-torpidly
-torpitude
-torpor
-torque
-Torquemada
-Torrance
-torrefy
-torrent
-torrential
-torrents
-torrid
-torridity
-torridly
-torridness
-torsi
-torsion
-torsional
-torso
-tort
-torte
-tortellini
-tortilla
-tortoise
-tortoise-shell
-tortoises
-tortoiseshell
-tortoni
-tortuosity
-tortuous
-tortuously
-tortuousness
-torture
-tortured
-torturer
-torturers
-tortures
-torturing
-torturous
-torus
-toruses
-Tory
-Toryize
-Toryizes
-Tosca
-Toscanini
-Toshiba
-toss
-toss-up
-tossed
-tosses
-tossing
-tossup
-tost
-tot
-total
-totaled
-totaling
-totalisator
-totalitarian
-totalitarianism
-totalities
-totality
-totalizator
-totalize
-totalled
-totaller
-totallers
-totalling
-totally
-totals
-tote
-totem
-totemic
-Toto
-totter
-tottered
-totterer
-tottering
-totters
-toucan
-touch
-touch-and-go
-touch-body
-touch-corpuscle
-touch-down
-touch-hole
-touch-last
-touch-me-not
-touch-needle
-touch-type
-touch-up
-touchable
-touchdown
-touche
-touched
-touches
-touchier
-touchiest
-touchily
-touchiness
-touching
-touchingly
-touchscreen
-touchstone
-touchwood
-touchy
-tough
-toughen
-toughener
-tougher
-toughest
-toughie
-toughly
-toughness
-Toulouse
-toupee
-tour
-toured
-touring
-tourism
-tourist
-tourists
-tourmaline
-tournament
-tournaments
-tourney
-tourniquet
-tours
-tousle
-tousled
-tout
-tow
-tow-boat
-tow-row
-towage
-toward
-towards
-towed
-towel
-towel-horse
-towelette
-toweling
-towelled
-towelling
-towels
-tower
-tower-crane
-tower-wagon
-towered
-towering
-towers
-towhead
-towheaded
-towhee
-towline
-town
-town-clerk
-townhouse
-townie
-Townley
-towns
-Townsend
-townsfolk
-township
-townships
-townsman
-townspeople
-townswoman
-towpath
-towrope
-Towsley
-toxemia
-toxic
-toxicity
-toxicological
-toxicologist
-toxicology
-toxin
-toy
-toyed
-toying
-Toynbee
-Toyota
-toys
-toyshop
-TPI
-trace
-traceable
-traced
-tracer
-tracers
-tracery
-traces
-trachea
-tracheae
-tracheal
-tracheotomy
-tracing
-tracings
-track
-track-and-field
-trackball
-tracked
-tracker
-trackers
-tracking
-trackless
-tracks
-tract
-tractability
-tractable
-tractably
-Tractarians
-tractate
-traction
-tractive
-tractor
-tractor-trailer
-tractors
-tracts
-Tracy
-trade
-trade-in
-trade-mark
-trade-name
-trade-off
-trade-outlet
-traded
-trademark
-trademarks
-tradeoff
-tradeoffs
-trader
-traders
-trades
-tradesman
-tradespeople
-tradeswoman
-trading
-tradition
-traditional
-traditionalism
-traditionalist
-traditionally
-traditions
-traduce
-traducer
-traffic
-trafficked
-trafficker
-traffickers
-trafficking
-traffics
-tragedian
-tragedienne
-tragedies
-tragedy
-tragic
-tragical
-tragically
-tragicomedy
-tragicomic
-trail
-trailblazer
-trailblazing
-trailed
-trailer
-trailers
-trailing
-trailings
-trails
-train
-train-oil
-trainable
-trained
-trainee
-trainees
-trainer
-training
-training-college
-training-ground
-training-ship
-trainman
-trains
-traipse
-trait
-traitor
-traitoress
-traitorous
-traitorously
-traitors
-traits
-trajectories
-trajectory
-tram
-trammel
-trammels
-tramp
-tramped
-tramper
-tramping
-trample
-trampled
-trampler
-tramples
-trampling
-trampoline
-tramps
-tramway
-tramway-car
-trance
-trances
-tranquil
-tranquility
-tranquilize
-tranquilizer
-tranquillity
-tranquillize
-tranquillizer
-tranquilly
-trans-ship
-transact
-transacter
-transaction
-transactions
-transactor
-transalpine
-transatlantic
-transceive
-transceiver
-transceivers
-transcend
-transcended
-transcendence
-transcendency
-transcendent
-transcendental
-transcendentalism
-transcendentalist
-transcendentally
-transcending
-transcends
-transcoder
-transcontinental
-transcribe
-transcribed
-transcriber
-transcribers
-transcribes
-transcribing
-transcript
-transcription
-transcriptions
-transcripts
-transducer
-transect
-transept
-transfer
-transfer-paper
-transferability
-transferable
-transferal
-transferals
-transference
-transferred
-transferrer
-transferrers
-transferring
-transfers
-transfiguration
-transfigure
-transfinite
-transfix
-transfixed
-transfixt
-transform
-transformable
-transformation
-transformational
-transformations
-transformed
-transformer
-transformers
-transforming
-transforms
-transfuse
-transfusion
-transgress
-transgressed
-transgression
-transgressions
-transgressor
-transience
-transiency
-transient
-transiently
-transients
-transilumination
-transinformation
-transistor
-transistorize
-transistorized
-transistorizing
-transistors
-transit
-Transite
-transition
-transitional
-transitionally
-transitioned
-transitions
-transitive
-transitively
-transitiveness
-transitivity
-transitory
-translatability
-translatable
-translate
-translated
-translates
-translating
-translation
-translational
-translations
-translator
-translators
-transliterate
-transliteration
-transloading
-translocation
-translucence
-translucency
-translucent
-translucently
-transmarine
-transmigrate
-transmigration
-transmissibility
-transmissible
-transmission
-transmissions
-transmit
-transmits
-transmittable
-transmittal
-transmittance
-transmitted
-transmitter
-transmitters
-transmitting
-transmogrification
-transmogrify
-transmutable
-transmutation
-transmute
-transnational
-transoceanic
-transom
-TRANSPAC
-transpacific
-transparence
-transparencies
-transparency
-transparent
-transparently
-transpiration
-transpire
-transpired
-transpires
-transpiring
-transplant
-transplantation
-transplanted
-transplanting
-transplants
-transpolar
-transponder
-transponders
-transport
-transportability
-transportable
-transportation
-transported
-transporter
-transporters
-transporting
-transports
-transpose
-transposed
-transposes
-transposing
-transposition
-transputation
-transputer
-transsexual
-transsexualism
-transship
-transshipment
-transubstantiate
-transubstantiation
-transudation
-transude
-Transvaal
-transversal
-transverse
-transversely
-transvestism
-transvestite
-Transylvania
-trap
-trap-door
-trapan
-trapdoor
-trapeze
-trapezia
-trapezium
-trapezoid
-trapezoidal
-trapezoids
-trapped
-trapper
-trappers
-trapping
-trappings
-Trappist
-traps
-trapshooting
-trash
-trashiness
-trashy
-Trastevere
-trauma
-traumata
-traumatic
-traumatically
-traumatize
-travail
-travel
-traveled
-traveler
-travelers
-traveling
-travelings
-traveller
-travelling
-travelog
-travelogue
-travels
-traversal
-traversals
-traverse
-traversed
-traverses
-traversing
-travesties
-travesty
-Travis
-trawl
-trawler
-tray
-trays
-treacheries
-treacherous
-treacherously
-treacherousness
-treachery
-treacle
-treacly
-tread
-treading
-treadle
-treadmill
-treads
-Treadwell
-treason
-treasonable
-treasonous
-treasure
-treasure-bench
-treasure-bill
-treasure-trove
-treasured
-treasurer
-treasures
-treasuries
-treasuring
-treasury
-treat
-treatable
-treated
-treaties
-treating
-treatise
-treatises
-treatment
-treatments
-treats
-treaty
-treble
-tree
-tree-beetle
-tree-creeper
-tree-frog
-treeless
-treelike
-trees
-treetop
-treetops
-trefoil
-trek
-trekker
-treks
-trellis
-trematode
-tremble
-trembled
-trembler
-trembles
-trembling
-tremendous
-tremendously
-tremolite
-tremolo
-tremor
-tremors
-tremulous
-tremulously
-tremulousness
-trench
-trenchancy
-trenchant
-trenchantly
-trencher
-trencher-cap
-trencher-man
-trencherman
-trenches
-trend
-trendily
-trendiness
-trending
-trends
-trendy
-Trenton
-trepan
-trepidation
-treshing
-trespass
-trespassed
-trespasser
-trespassers
-trespasses
-tress
-tresses
-tresspass
-tressy
-trestle
-Trevelyan
-trevet
-trey
-triad
-triage
-trial
-trials
-triangle
-triangles
-triangular
-triangularly
-triangulate
-triangulation
-Triangulum
-Trianon
-Triassic
-triathlon
-tribal
-tribalism
-tribe
-tribes
-tribesman
-tribeswoman
-tribulation
-tribunal
-tribunals
-tribune
-tribunes
-tributary
-tribute
-tributes
-tricar
-trice
-tricentennial
-triceps
-tricessimo-secondo
-tricessimo-sexto
-trichina
-trichinae
-Trichinella
-trichinosis
-trichotomy
-trick
-tricked
-trickery
-trickier
-trickiest
-trickily
-trickiness
-tricking
-trickish
-trickle
-trickle-down
-trickled
-trickles
-trickling
-tricks
-trickster
-tricksy
-tricky
-tricolor
-tricolour
-tricoteen
-tricycle
-trident
-tried
-triennial
-triennially
-trier
-Triers
-tries
-Trieste
-trifid
-trifle
-trifler
-trifles
-trifling
-trifocals
-trig
-trigger
-trigger-happy
-triggered
-triggering
-triggers
-triglot
-triglyceride
-trigonal
-trigonometric
-trigonometrical
-trigonometry
-trigram
-trigrams
-trihedral
-trike
-trilateral
-trilby
-trilingual
-trill
-trilled
-trillion
-trillions
-trillionth
-trillium
-trilobite
-trilogy
-trim
-trimaran
-Trimble
-trimensual
-trimester
-trimly
-trimmed
-trimmer
-trimmest
-trimming
-trimmings
-trimness
-trimonthly
-trims
-trinal
-trine
-Trinidad
-triniscope
-trinitrotoluene
-trinity
-trinket
-trinkets
-trio
-triode
-trip
-tripartite
-tripe
-tripe-house
-tripes
-triplane
-triple
-tripled
-triples
-triplet
-triplets
-Triplett
-triplex
-triplicate
-triplicity
-tripling
-triply
-tripod
-tripodal
-Tripoli
-tripper
-tripping
-trips
-triptych
-triquetrous
-trireme
-trisect
-trisection
-Tristan
-trite
-tritely
-triteness
-tritium
-triturate
-triumph
-triumphal
-triumphant
-triumphantly
-triumphed
-triumphing
-triumphs
-triumvir
-triumvirate
-triune
-trivalent
-trivet
-trivia
-trivial
-trivialities
-triviality
-trivialization
-trivialize
-trivially
-trivium
-triweekly
-trizone
-troat
-Trobriand
-trochaic
-trochee
-trod
-trodden
-troglodyte
-troika
-Trojan
-troll
-trolley
-trolley-bus
-trolley-line
-trolleybus
-trolleys
-trollop
-trolls
-trolly
-trombone
-trombonist
-tromp
-troop
-troop-carrier
-troop-ship
-trooper
-troopers
-troops
-troopship
-trope
-Tropez
-trophies
-trophy
-tropic
-tropical
-tropically
-tropics
-tropism
-troposphere
-trot
-troth
-trots
-Trotsky
-trotter
-trotyl
-troubadour
-trouble
-trouble-free
-trouble-shooter
-troubled
-troublemaker
-troublemakers
-troubles
-troubleshoot
-troubleshooter
-troubleshooters
-troubleshooting
-troubleshoots
-troublesome
-troublesomely
-troubling
-troublous
-trough
-trounce
-trouncer
-troupe
-trouper
-trouser
-trousers
-trousseau
-trousseaux
-trout
-Troutman
-trove
-trow
-trowel
-trowels
-Troy
-truancy
-truant
-truants
-truce
-truck
-trucked
-Truckee
-trucker
-truckers
-trucking
-truckle
-truckler
-truckload
-trucks
-truculence
-truculent
-truculently
-Trudeau
-trudge
-trudged
-Trudy
-true
-true-blue
-true-born
-true-heartedness
-true-life
-true-love
-trued
-truelove
-truer
-trues
-truest
-truffle
-truing
-truism
-truisms
-Trujillo
-Truk
-trull
-truly
-Truman
-Trumbull
-trump
-trumped
-trumped-up
-trumpery
-trumpet
-trumpeter
-trumps
-truncate
-truncated
-truncates
-truncating
-truncation
-truncations
-truncheon
-trundle
-trundler
-trunk
-trunk-call
-trunk-drawers
-trunk-hose
-trunk-road
-trunks
-trunnion
-truss
-trust
-trusted
-trustee
-trustees
-trusteeship
-trustful
-trustfully
-trustfulness
-trusting
-trustingly
-trusts
-trustworthiness
-trustworthy
-trusty
-truth
-truthful
-truthfully
-truthfulness
-truths
-try
-trying
-tryingly
-tryout
-tryst
-tsar
-tsarina
-tsetse
-Tsingtao
-tsunami
-Tsunematsu
-tub
-tub-thumper
-tuba
-tubal
-tubby
-tube
-tubed
-tubeless
-tuber
-tubercle
-tubercular
-tuberculin
-tuberculosis
-tuberculous
-tuberose
-tuberous
-tubers
-tubes
-tubing
-Tubman
-tubs
-tubular
-tubule
-tuck
-tuck-net
-tucked
-tucker
-tucking
-tucks
-Tucson
-Tudor
-Tue
-Tues
-Tuesday
-Tuesdays
-tuft
-tufted
-tufter
-tufts
-tug
-tug-of-war
-tugboat
-tugs
-tugs-of-war
-tuition
-Tulane
-tularemia
-tulip
-tulips
-tulle
-Tulsa
-tumble
-tumble-down
-tumbled
-tumbledown
-tumbler
-tumblers
-tumbles
-tumbleweed
-tumbling
-tumbrel
-tumbril
-tumefy
-tumescence
-tumescent
-tumid
-tumidity
-tumify
-tummy
-tumor
-tumorous
-tumors
-tumour
-tumult
-tumults
-tumultuary
-tumultuous
-tumultuously
-tumulus
-tun
-tuna
-tunability
-tunable
-tundra
-tune
-tune-up
-tuned
-tuneful
-tunefully
-tunefulness
-tuneless
-tunelessly
-tuner
-tuners
-tunes
-tuneup
-tungsten
-tunic
-tunics
-tuning
-tuning-fork
-Tunis
-Tunisia
-Tunisian
-tunnel
-tunneled
-tunneler
-tunneller
-tunnels
-tunny
-tup
-tuple
-tuples
-Tupperware
-turban
-turbans
-turbary
-turbid
-turbidity
-turbine
-turbo
-turbocharger
-turbofan
-turbojet
-turboprop
-turbot
-turbulence
-turbulency
-turbulent
-turbulently
-Turcoman
-turd
-tureen
-turf
-turfy
-turgid
-turgidity
-turgidly
-Turin
-Turing
-Turk
-turkey
-turkey-hen
-turkeys
-Turkic
-Turkish
-Turkize
-Turkizes
-Turkmenistan
-turmeric
-turmoil
-turmoils
-turn
-turn-back
-turn-bench
-turn-buckle
-turn-coat
-turn-off
-turn-on
-turn-out
-turn-pike
-turn-screw
-turn-table
-turn-ups
-turnable
-turnabout
-turnaround
-turnbuckle
-turncoat
-turned
-turned-up
-turner
-turners
-turnery
-turning
-turning-in
-turning-lathe
-turning-point
-turning-table
-turnings
-turnip
-turnip-radish
-turnips
-turnkey
-turnoff
-turnout
-turnover
-turnpike
-turns
-turnstile
-turntable
-turpentine
-turpitude
-turquoise
-turret
-turreted
-turrets
-turtle
-turtle-soup
-turtledove
-turtleneck
-turtlenecked
-turtles
-turves
-Tuscaloosa
-Tuscan
-Tuscanize
-Tuscanizes
-Tuscany
-Tuscarora
-tush
-tusk
-tusked
-Tuskegee
-tussle
-tussock
-tussocky
-tut
-tut-tut
-Tutankhamen
-Tutankhamon
-Tutankhamun
-tutelage
-tutelary
-Tutenkhamon
-tutor
-tutored
-tutorial
-tutorials
-tutoring
-tutors
-tutorship
-tutti
-tutti-frutti
-Tuttle
-tutu
-Tuvalu
-tux
-tuxedo
-tuyere
-TV
-TVA
-twaddle
-twaddler
-twain
-twang
-twangy
-twas
-twat
-tweak
-tweed
-tweeds
-tweedy
-tween
-tweet
-tweeter
-tweezers
-twelfth
-Twelfth-night
-twelve
-twelvemonth
-twelves
-twenties
-twentieth
-twenty
-twenty-eight
-twenty-first
-twenty-one
-twenty-twenty
-twerp
-twice
-twiddle
-twiddly
-twig
-twiggy
-twigs
-twilight
-twilights
-twilit
-twill
-twilled
-twin
-twin-lead
-twin-set
-twin-size
-twin-town
-twine
-twined
-twiner
-twinge
-twinight
-twinkle
-twinkled
-twinkler
-twinkles
-twinkling
-twinkly
-twins
-twirl
-twirled
-twirler
-twirling
-twirls
-twirly
-twist
-twisted
-twister
-twisters
-twisting
-twists
-twit
-twitch
-twitched
-twitching
-twitchy
-twitter
-twittered
-twittering
-twittery
-twittle-twattle
-twixt
-two
-two-bedded
-two-bit
-two-by-four
-two-cleft
-two-column
-two-dimensional
-two-edged
-two-faced
-two-facedly
-two-fisted
-two-handed
-two-part
-two-phase
-two-piece
-two-ply
-two-seater
-two-seaters
-two-sided
-two-speed
-two-stage
-two-step
-two-storied
-two-time
-two-timer
-two-tone
-two-tongued
-two-way
-twofer
-twofold
-Twombly
-twopence
-twopenny
-twos
-twosome
-TWX
-TX
-Tyburn
-tycoon
-tying
-tyke
-Tyler
-Tylerize
-Tylerizes
-TYMNET
-tympan
-tympana
-tympani
-tympanist
-tympanitis
-tympanum
-Tyndall
-type
-type-bar
-type-facsimile
-type-setting
-typecast
-typed
-typeface
-typehead
-typeout
-types
-typescript
-typeset
-typesetter
-typesetting
-typewrite
-typewriter
-typewriters
-typewriting
-typewritten
-typewrote
-typhoid
-Typhon
-typhoon
-typhus
-typical
-typicality
-typically
-typicalness
-typification
-typified
-typifies
-typify
-typifying
-typing
-typist
-typists
-typo
-typographer
-typographic
-typographical
-typographically
-typography
-typology
-typotron
-tyrannic
-tyrannical
-tyrannically
-tyrannize
-tyrannizer
-tyrannosaur
-tyrannous
-tyranny
-tyrant
-tyrants
-tyre
-tyro
-Tyrol
-Tyrolean
-Tyson
-tzar
-tzarina
-Tzeltal
-Tzigane
-tzimmes
-U-boat
-U-turn
-UAD
-UADPS
-UAP
-UAR
-UAW
-UBC
-ubiquitous
-ubiquitously
-ubiquity
-UCC
-Udall
-UDC
-udder
-Ufa
-ufologist
-ufology
-Uganda
-Ugandan
-ugh
-ugh!
-uglier
-ugliest
-uglify
-ugliness
-ugly
-uh
-uh-huh
-uh-uh
-UHF
-uhlan
-UK
-ukase
-ukelele
-Ukraine
-Ukrainian
-Ukrainians
-ukulele
-UL
-Ulan
-ulcer
-ulcerate
-ulcerated
-ulceration
-ulcerous
-ulcers
-Ullman
-ulna
-ulnae
-ulnar
-ULSI
-ulster
-ulterior
-ultimata
-ultimate
-ultimately
-ultimatum
-ultimo
-ultra
-ultraconservative
-ultracritical
-ultrafiche
-ultrahigh
-ultralight
-ultramarine
-ultramodern
-ultramontane
-ultranationalism
-ultrared
-ultrasonic
-ultrasonically
-ultrasound
-ultraviolet
-ululate
-ululation
-Ulysses
-um
-umbel
-umbelate
-umber
-umbilical
-umbilici
-umbilicus
-umbra
-umbrae
-umbrage
-umbrageous
-umbrella
-umbrella-stand
-umbrellas
-Umbrian
-umiak
-umlaut
-ump
-umpire
-umpires
-umpteen
-umpteenth
-UN
-un-
-un-American
-un-fold
-un-marxian
-unabashed
-unabashedly
-unabated
-unabbreviated
-unabetted
-unable
-unabridged
-unaccented
-unacceptability
-unacceptable
-unacceptably
-unaccommodating
-unaccompanied
-unaccompany
-unaccomplished
-unaccountable
-unaccountably
-unaccounted
-unaccounted-for
-unaccredited
-unaccustomed
-unachievable
-unacknowledged
-unacquainted
-unadorned
-unadulterated
-unadventurous
-unadvertised
-unadvised
-unadvisedly
-unaesthetic
-unaesthetically
-unaffected
-unaffectedly
-unaffectedness
-unaffiliated
-unafraid
-unaided
-unaiming
-unalienability
-unalienable
-unaligned
-unalike
-unallowable
-unalloyed
-unalterable
-unalterably
-unaltered
-unambiguous
-unambiguously
-unambitious
-unanalyzable
-unanimity
-unanimous
-unanimously
-unannounced
-unanswerable
-unanswered
-unanticipated
-unapologetic
-unapparent
-unappealing
-unappealingly
-unappetizing
-unappreciated
-unappreciative
-unapproachable
-unappropriated
-unapprove
-unapproved
-unarguable
-unarguably
-unarm
-unarmed
-unarmored
-unarrest
-unary
-unashamed
-unashamedly
-unasked
-unassailable
-unassertive
-unassigned
-unassisted
-unassuming
-unassumingly
-unattached
-unattackable
-unattainability
-unattainable
-unattended
-unattested
-unattractive
-unattractively
-unauthentic
-unauthorized
-unavailability
-unavailable
-unavailing
-unavailingly
-unavoidable
-unavoidably
-unavoided
-unaware
-unawareness
-unawares
-unbacked
-unbailable
-unbaked
-unbalanced
-unballasted
-unbaptized
-unbar
-unbear
-unbearable
-unbearably
-unbearing
-unbeatable
-unbeaten
-unbecoming
-unbecomingly
-unbedded
-unbefriended
-unbeknown
-unbeknownst
-unbelief
-unbelievable
-unbelievably
-unbeliever
-unbelieving
-unbelt
-unbend
-unbending
-unbent
-unbiased
-unbiassed
-unbid
-unbidden
-unbind
-unbitted
-unblamable
-unblank
-unbleached
-unblemished
-unblinking
-unblock
-unblocked
-unblocking
-unblocks
-unblushing
-unblushingly
-unbodied
-unbolt
-unbolted
-unboned
-unbonneted
-unborn
-unbosom
-unbound
-unbounded
-unbowed
-unbowel
-unbrace
-unbraid
-unbrake
-unbreakable
-unbred
-unbribable
-unbridle
-unbridled
-unbroken
-unbruised
-unbuckle
-unbudget
-unbuffered
-unbuild
-unburden
-unburrow
-unbusied
-unbutton
-uncage
-uncalled
-uncalled-for
-uncancelled
-uncannily
-uncanny
-uncap
-uncapitalized
-uncared-for
-uncaring
-uncarpeted
-uncase
-uncatalog
-uncaught
-unceasing
-unceasingly
-uncensored
-unceremonious
-unceremoniously
-uncertain
-uncertainly
-uncertainties
-uncertainty
-unchain
-unchallenged
-unchangeable
-unchanged
-unchanging
-unchaperoned
-uncharacteristic
-uncharacteristically
-uncharge
-uncharged
-uncharitable
-uncharitably
-uncharted
-unchaste
-unchasteness
-unchecked
-unchristian
-unchurch
-uncial
-unciform
-uncircumcised
-uncivil
-uncivilised
-uncivilized
-uncivilly
-unclad
-unclaimed
-unclamp
-unclasp
-unclassified
-uncle
-unclean
-uncleaned
-uncleanliness
-uncleanly
-uncleanness
-unclear
-uncleared
-unclench
-uncles
-uncloak
-unclog
-unclose
-unclosed
-unclothe
-unclothed
-unclouded
-unclutch
-uncluttered
-unco
-uncoil
-uncollected
-uncolored
-uncombed
-uncombined
-uncomfortable
-uncomfortableness
-uncomfortably
-uncommitted
-uncommon
-uncommonly
-uncommonness
-uncommunicative
-uncompensated
-uncomplaining
-uncomplainingly
-uncompleted
-uncomplicated
-uncomplimentary
-uncompounded
-uncomprehending
-uncomprehendingly
-uncompromising
-uncompromisingly
-uncomputable
-unconcealed
-unconcern
-unconcerned
-unconcernedly
-unconditional
-unconditionally
-unconditioned
-unconfined
-unconfirmed
-unconformable
-uncongenial
-unconnected
-unconquerable
-unconquered
-unconscientious
-unconscientiously
-unconscionable
-unconscionably
-unconscious
-unconsciously
-unconsciousness
-unconsecrated
-unconsidered
-unconsolidated
-unconstant
-unconstitutional
-unconstitutionality
-unconstitutionally
-unconstrained
-unconsumed
-unconsummated
-uncontaminated
-uncontested
-uncontrollability
-uncontrollable
-uncontrollably
-uncontrolled
-unconventional
-unconventionality
-unconventionally
-unconverted
-unconvinced
-unconvincing
-unconvincingly
-uncooked
-uncool
-uncooperative
-uncoordinated
-uncord
-uncork
-uncorrectable
-uncorrected
-uncorroborated
-uncountable
-uncountably
-uncounted
-uncouple
-uncoupled
-uncouth
-uncouthly
-uncover
-uncovered
-uncovering
-uncovers
-uncreate
-uncritical
-uncritically
-uncross
-uncrossable
-uncrowded
-uncrown
-uncrowned
-unction
-unctuosity
-unctuous
-unctuously
-unctuousness
-uncultivated
-uncultured
-uncurb
-uncured
-uncurl
-uncustomary
-uncut
-undamaged
-undated
-undaunted
-undauntedly
-undeceive
-undecidable
-undecided
-undecipherable
-undeclared
-undecomposable
-undefeated
-undefended
-undefiled
-undefinability
-undefinable
-undefined
-undefrayed
-undeleted
-undemanding
-undemocratic
-undemonstrative
-undemonstratively
-undeniable
-undeniably
-undependable
-under
-under-
-under-developed
-under-done
-under-secretary
-under-the-counter
-under-the-table
-underachieve
-underachiever
-underact
-underage
-underarm
-underbelly
-underbid
-underbred
-underbridge
-underbrush
-underbuy
-undercarriage
-undercharge
-underclass
-underclassman
-underclothes
-underclothing
-undercoat
-undercoating
-undercool
-undercover
-undercroft
-undercurrent
-undercut
-underdeveloped
-underdevelopment
-underditch
-underdo
-underdog
-underdone
-underdrainage
-undereducate
-underemployed
-underemployment
-underestimate
-underestimated
-underestimates
-underestimating
-underestimation
-underexcitation
-underexpose
-underexposure
-underfed
-underfeed
-underfeeding
-underflow
-underflowed
-underflowing
-underflows
-underfoot
-underfur
-underfurnish
-undergarment
-undergo
-undergoes
-undergoing
-undergone
-undergraduate
-undergraduates
-underground
-undergrowth
-underhand
-underhanded
-underhandedly
-underhandedness
-underhung
-underlain
-underlay
-underlease
-underlet
-underlie
-underlies
-underline
-underlined
-underlines
-underling
-underlings
-underlining
-underlinings
-underlip
-underloaded
-underlying
-undermanned
-undermentioned
-undermine
-undermined
-undermines
-undermining
-undermost
-underneath
-undernourish
-undernourished
-undernourishment
-underpaid
-underpants
-underpart
-underpass
-underpay
-underpayment
-underpin
-underpinning
-underpinnings
-underplay
-underplayed
-underplaying
-underplays
-underplot
-underpopulated
-underpressure
-underprivileged
-underprize
-underproduction
-underprop
-underpunch
-underquote
-underrate
-underrun
-undersalted
-underscore
-underscored
-underscores
-undersea
-underseas
-undersecretary
-undersell
-underset
-undersexed
-undershirt
-undershoot
-undershorts
-undershot
-underside
-undersign
-undersigned
-undersize
-undersized
-underskirt
-undersold
-understaffed
-understamped
-understand
-understandability
-understandable
-understandably
-understanding
-understandingly
-understandings
-understands
-understate
-understated
-understatement
-understood
-understrapper
-understudy
-undertake
-undertaken
-undertaker
-undertaker's
-undertakers
-undertakes
-undertaking
-undertakings
-undertenant
-underthings
-undertone
-undertook
-undertow
-undertrain
-undervaluation
-undervalue
-undervest
-undervoltage
-underwater
-underway
-underwear
-underweight
-underwent
-underwhelm
-underwood
-underwork
-underworld
-underwrite
-underwriter
-underwriters
-underwrites
-underwriting
-underwritten
-underwrote
-undeserve
-undeserved
-undeservedly
-undeserving
-undesigning
-undesirability
-undesirable
-undesirably
-undesired
-undetectable
-undetected
-undetermined
-undeterred
-undeveloped
-undeviating
-undid
-undies
-undifferentiated
-undigested
-undignified
-undiluted
-undiminished
-undimmed
-undine
-undiplomatic
-undirected
-undiscerning
-undischarged
-undisciplined
-undisclosed
-undiscovered
-undiscriminating
-undisguised
-undismayed
-undisputed
-undissembled
-undissolved
-undistinguished
-undistributed
-undisturbed
-undivided
-undividedness
-undo
-undocumented
-undoes
-undoing
-undoings
-undomesticated
-undone
-undoubted
-undoubtedly
-undramatic
-undreamed
-undreamed-of
-undreamt
-undreamt-of
-undress
-undressed
-undresses
-undressing
-undried
-undrinkable
-undue
-undulant
-undulate
-undulation
-undulative
-unduly
-undying
-unearned
-unearth
-unearthliness
-unearthly
-unease
-uneasily
-uneasiness
-uneasy
-uneatable
-uneaten
-uneconomic
-uneconomical
-uneconomically
-unedifying
-unedited
-uneducated
-unembarrassed
-unembellished
-unemotional
-unemphatic
-unemployable
-unemployed
-unemployment
-unenclosed
-unencrypted
-unencumbered
-unending
-unendurable
-unenforced
-unEnglish
-unenlightened
-unenlightening
-unenterprising
-unenthusiastic
-unenviable
-unequal
-unequaled
-unequality
-unequalled
-unequally
-unequipped
-unequivocal
-unequivocally
-unerring
-unerringly
-unescapable
-UNESCO
-unessential
-unethical
-unethically
-unevaluated
-uneven
-unevenly
-unevenness
-uneventful
-uneventfully
-unexampled
-unexceptionable
-unexceptionably
-unexceptional
-unexceptionally
-unexcited
-unexciting
-unexcused
-unexpanded
-unexpected
-unexpectedly
-unexpectedness
-unexpired
-unexplain
-unexplained
-unexploited
-unexplored
-unexposed
-unexpressed
-unexpurgated
-unextended
-unfading
-unfailing
-unfailingly
-unfair
-unfairly
-unfairness
-unfaithful
-unfaithfully
-unfaithfulness
-unfaltering
-unfamiliar
-unfamiliarity
-unfamiliarly
-unfashionable
-unfashionably
-unfasten
-unfathomable
-unfathomably
-unfavorable
-unfavorably
-unfeasible
-unfeatured
-unfed
-unfeeling
-unfeelingly
-unfeigned
-unfeminine
-unfermented
-unfertilized
-unfetter
-unfettered
-unfiedged
-unfilled
-unfiltered
-unfinished
-unfit
-unfitness
-unfitting
-unfix
-unflagging
-unflaggingly
-unflappability
-unflappable
-unflappably
-unflattering
-unflavored
-unfledged
-unflinching
-unflinchingly
-unfocused
-unfold
-unfolded
-unfolding
-unfolds
-unforced
-unforeseeable
-unforeseen
-unforgeable
-unforgetable
-unforgettable
-unforgettably
-unforgivable
-unforgivably
-unforgiving
-unforgotten
-unformatted
-unformed
-unformulated
-unfortified
-unfortunate
-unfortunately
-unfortunates
-unfounded
-unframed
-unfreeze
-unfrequented
-unfriendliness
-unfriendly
-unfrock
-unfrocked
-unfroze
-unfrozen
-unfruitful
-unfulfilled
-unfunny
-unfurl
-unfurnished
-ungainliness
-ungainly
-ungallant
-ungear
-ungenerous
-ungenial
-ungentle
-ungentlemanly
-ungird
-unglue
-unglued
-ungodliness
-ungodly
-ungovernable
-ungoverned
-ungraceful
-ungracefully
-ungracious
-ungraciously
-ungraded
-ungrammatical
-ungrammatically
-ungrateful
-ungratefully
-ungratefulness
-ungrease
-ungrounded
-ungrudging
-unguarded
-unguent
-unguided
-ungulate
-unhallowed
-unhamper
-unhampered
-unhand
-unhandiness
-unhandsome
-unhandy
-unhang
-unhappier
-unhappiest
-unhappily
-unhappiness
-unhappy
-unhardened
-unharmed
-unharness
-unharvested
-unhat
-unhatched
-unhealed
-unhealthful
-unhealthily
-unhealthiness
-unhealthy
-unheard
-unheard-of
-unheated
-unheeded
-unhelpful
-unhelpfully
-unheralded
-unhesitating
-unhesitatingly
-unhinder
-unhindered
-unhinge
-unhinged
-unhistorical
-unhitch
-unholiness
-unholy
-unhood
-unhook
-unhoped
-unhoped-for
-unhorse
-unhouse
-unhuman
-unhurried
-unhurriedly
-unhurt
-unhusk
-uniaxial
-Unibus
-unicameral
-UNICEF
-unicellular
-unicorn
-unicorns
-unicycle
-unidentifiable
-unidentified
-unidiomatic
-unidirectional
-unidirectionality
-unidirectionally
-unific
-unification
-unifications
-unified
-unifier
-unifiers
-unifies
-uniform
-uniformalize
-uniformed
-uniformity
-uniformly
-uniforms
-unify
-unifying
-unilateral
-unilaterally
-unilingual
-uniliteral
-unilluminating
-unimaginable
-unimaginative
-unimaginatively
-unimpaired
-unimpeachable
-unimpeded
-unimplemented
-unimportant
-unimposing
-unimpressed
-unimpressive
-unimproved
-unincorporated
-unindented
-uninfected
-uninfluenced
-uninformative
-uninformed
-uninhabitable
-uninhabited
-uninhibited
-uninhibitedly
-uninitialized
-uninitiated
-uninjured
-uninspired
-uninspiring
-uninstructed
-uninsulated
-uninsured
-unintelligent
-unintelligible
-unintelligibly
-unintended
-unintentional
-unintentionally
-uninterested
-uninteresting
-uninterestingly
-uninterpreted
-uninterrupted
-uninterruptedly
-uninvited
-uninviting
-union
-unionism
-Unionist
-unionization
-unionize
-unionized
-unionizer
-unionizers
-unionizes
-unionizing
-unions
-uniphase
-UniPlus
-unipolar
-uniprocessing
-uniprocessor
-unipunch
-unique
-uniquely
-uniqueness
-Uniroyal
-unisex
-unisexual
-UNISIST
-UniSoft
-unison
-unit
-unitarian
-Unitarianism
-Unitarianize
-Unitarianizes
-Unitarians
-unitary
-unite
-united
-unitedly
-uniterm
-uniterming
-unites
-unities
-uniting
-unitize
-units
-unity
-Univac
-univalent
-univalve
-univalves
-universal
-universality
-universalize
-universally
-universals
-universe
-universes
-universities
-university
-unjoin
-unjoint
-unjust
-unjustifiable
-unjustifiably
-unjustified
-unjustly
-unkempt
-unkind
-unkindly
-unkindness
-unknit
-unknowable
-unknowing
-unknowingly
-unknown
-unknowns
-unlabeled
-unlabelled
-unlace
-unlade
-unladen
-unladylike
-unlatch
-unlawful
-unlawfully
-unlawfulness
-unlay
-unleaded
-unlearn
-unlearned
-unleash
-unleashed
-unleashes
-unleashing
-unleavened
-unless
-unlettered
-unlicensed
-unlighted
-unlikable
-unlike
-unlikelihood
-unlikeliness
-unlikely
-unlikeness
-unlimber
-unlimited
-unlined
-unlink
-unlinked
-unlinking
-unlinks
-unlisted
-unlit
-unlivable
-unload
-unloaded
-unloading
-unloads
-unlock
-unlocked
-unlocking
-unlocks
-unlooked-for
-unloose
-unloosen
-unlovable
-unloved
-unlovely
-unloving
-unluckily
-unluckiness
-unlucky
-unmachined
-unmade
-unmake
-unman
-unmanageable
-unmanageably
-unmanly
-unmanned
-unmannered
-unmannerly
-unmarked
-unmarketable
-unmarred
-unmarried
-unmask
-unmasked
-unmatched
-unmeaning
-unmeant
-unmeasured
-unmeet
-unmentionable
-unmentionables
-unmentioned
-unmerchantable
-unmerciful
-unmercifully
-unmerited
-unmindful
-unmistakable
-unmistakably
-unmitigated
-unmixed
-unmodified
-unmolested
-unmoor
-unmoral
-unmorality
-unmotivated
-unmount
-unmounted
-unmovable
-unmoved
-unmuffle
-unmusical
-unmuzzle
-unnail
-unnameable
-unnamed
-unnatural
-unnaturally
-unnaturalness
-unnecessarily
-unnecessary
-unneeded
-unnerve
-unnerved
-unnerves
-unnerving
-unnormalized
-unnoticeable
-unnoticed
-unnumbered
-UNO
-unobjectionable
-unobservable
-unobservant
-unobserved
-unobstructed
-unobtainable
-unobtrusive
-unobtrusively
-unobtrusiveness
-unoccupied
-unofficial
-unofficially
-unopened
-unoppased
-unopposed
-unordered
-unorganized
-unoriginal
-unorthodox
-unostentatious
-unowned
-unpack
-unpacked
-unpacking
-unpacks
-unpaid
-unpainted
-unpaired
-unpalatable
-unparalleled
-unparallelled
-unpardonable
-unpardonably
-unparsed
-unpasteurized
-unpatriotic
-unpaved
-unpeople
-unperceived
-unperceptive
-unperformed
-unperson
-unpersuaded
-unpersuasive
-unperturbed
-unpick
-unpin
-unplait
-unplanned
-unplanted
-unpleasant
-unpleasantly
-unpleasantness
-unpleasing
-unpledged
-unplug
-unplumbed
-unplume
-unpointed
-unpoised
-unpolished
-unpolitical
-unpolluted
-unpopular
-unpopularity
-unportioned
-unpractical
-unpracticed
-unpractised
-unprecedented
-unprecedentedly
-unpredictability
-unpredictable
-unpredictably
-unprejudiced
-unpremeditated
-unprepared
-unpreparedness
-unprepossessed
-unprepossessing
-unprescribed
-unpreserved
-unpressed
-unpretending
-unpretentious
-unpretentiously
-unpriced
-unprimed
-unprincipled
-unprintable
-unprinted
-unprized
-unprocessed
-unproductive
-unproductively
-unproductiveness
-unprofessional
-unprofessionally
-unprofitability
-unprofitable
-unprofitably
-unprojected
-unpromising
-unprompted
-unpronounceable
-unpropitious
-unprotected
-unprovability
-unprovable
-unprove
-unproved
-unproven
-unprovided
-unprovoked
-unpublished
-unpunished
-unqualified
-unqualifiedly
-unquenchable
-unquestionable
-unquestionably
-unquestioned
-unquestioning
-unquestioningly
-unquiet
-unquote
-unquoted
-unraised
-unravel
-unraveled
-unraveling
-unravels
-unreachable
-unread
-unreadable
-unready
-unreal
-unrealistic
-unrealistically
-unreality
-unrealized
-unreason
-unreasonable
-unreasonableness
-unreasonably
-unreasoning
-unrecognizable
-unrecognized
-unreconstructed
-unrecorded
-unredressed
-unreel
-unreeve
-unrefined
-unreformed
-unregarded
-unregenerate
-unregistered
-unregretted
-unregulated
-unrehearsed
-unreined
-unrelated
-unrelenting
-unrelentingly
-unreliability
-unreliable
-unreliably
-unrelieved
-unremarkable
-unremembered
-unremitting
-unremittingly
-unremunerative
-unrepaid
-unrepentant
-unreported
-unrepresentable
-unrepresentative
-unrepresented
-unrequited
-unresented
-unreserve
-unreserved
-unreservedly
-unresistant
-unresisted
-unresisting
-unresolved
-unresponsive
-unresponsively
-unresponsiveness
-unrest
-unrestrained
-unrestricted
-unrestrictedly
-unrestrictive
-unrewarded
-unrewarding
-unriddle
-unrighteous
-unrighteousness
-unrip
-unripe
-unripened
-unrivaled
-unrivalled
-unrivet
-unrobe
-unroll
-unrolled
-unrolling
-unrolls
-unromantic
-unroot
-unruffled
-unruliness
-unruly
-unsaddle
-unsafe
-unsafely
-unsaid
-unsalable
-unsalaried
-unsalted
-unsanctioned
-unsanitary
-unsatisfactorily
-unsatisfactory
-unsatisfiability
-unsatisfiable
-unsatisfied
-unsatisfying
-unsaturated
-unsaved
-unsavory
-unsavoury
-unsay
-unscalable
-unscale
-unscathed
-unscented
-unscheduled
-unschooled
-unscientific
-unscientifically
-unscramble
-unscratched
-unscreened
-unscrew
-unscripted
-unscrupulos
-unscrupulous
-unscrupulously
-unscrupulousness
-unseal
-unsealed
-unseam
-unsearchable
-unseasonable
-unseasonably
-unseasoned
-unseat
-unseaworthy
-unseeded
-unseeing
-unseeingly
-unseemliness
-unseemly
-unseen
-unsegmented
-unsegregated
-unselected
-unselfish
-unselfishly
-unselfishness
-unsent
-unsentimental
-unserviceable
-unsettle
-unsettled
-unsettling
-unsew
-unsewn
-unshackle
-unshakable
-unshakably
-unshakeable
-unshaken
-unshaped
-unshapely
-unshared
-unshaven
-unsheathe
-unsheltered
-unship
-unshod
-unshodden
-unshoe
-unshorn
-unshortened
-unshrinkable
-unshrinking
-unsifted
-unsighted
-unsightliness
-unsightly
-unsigned
-unsinkable
-unsized
-unskilful
-unskilled
-unskillful
-unskillfully
-unsleeping
-unsling
-unslotted
-unsmiling
-unsnap
-unsnarl
-unsociable
-unsocial
-unsoiled
-unsold
-unsolder
-unsolicited
-unsolvable
-unsolved
-unsophisticated
-unsorted
-unsought
-unsound
-unsoundly
-unsoundness
-unsparing
-unsparingly
-unspeak
-unspeakable
-unspeakably
-unspecific
-unspecified
-unspectacular
-unspent
-unspoiled
-unspoken
-unspool
-unsportsmanlike
-unspotted
-unstable
-unstably
-unstained
-unstamped
-unstate
-unstated
-unstatutable
-unsteadfast
-unsteadily
-unsteadiness
-unsteady
-unstick
-unstinted
-unstinting
-unstintingly
-unstop
-unstoppable
-unstrained
-unstrap
-unstressed
-unstring
-unstructured
-unstrung
-unstuck
-unstudied
-unsubstantial
-unsubstantiated
-unsuccessful
-unsuccessfully
-unsuccoured
-unsuitability
-unsuitable
-unsuitably
-unsuited
-unsullied
-unsung
-unsupervised
-unsupported
-unsure
-unsurpassable
-unsurpassed
-unsurprising
-unsurprisingly
-unsuspected
-unsuspecting
-unsuspectingly
-unsustainable
-unswathe
-unswayed
-unswear
-unsweetened
-unswerving
-unsymmetric
-unsymmetrical
-unsympathetic
-unsympathetically
-unsynchronized
-unsystematic
-unsystematically
-untack
-untactful
-untagged
-untainted
-untalented
-untamable
-untamed
-untangle
-untanned
-untapped
-untarnished
-untasted
-untaught
-unteach
-unteachable
-untenable
-untenanted
-untended
-unterminated
-untest
-untested
-unthinkable
-unthinkably
-unthinking
-unthinkingly
-unthought-of
-unthread
-unthrift
-unthrifty
-untidily
-untidiness
-untidy
-untie
-untied
-unties
-until
-untimeliness
-untimely
-untiring
-untiringly
-untitled
-unto
-untold
-untouchable
-untouchables
-untouched
-untoward
-untraceable
-untrained
-untrammeled
-untrammelled
-untranslatable
-untranslated
-untraveled
-untreated
-untried
-untrimmed
-untrod
-untroubled
-untrue
-untruly
-untrustworthy
-untruth
-untruthful
-untruthfully
-untruthfulness
-untuck
-untune
-unturn
-untutored
-untwine
-untwist
-untying
-untypical
-unum
-unusable
-unused
-unusual
-unusually
-unutterable
-unutterably
-unvaccinated
-unvalued
-unvaried
-unvarnished
-unvarying
-unveil
-unveiled
-unveiling
-unveils
-unventilated
-unverifiable
-unverified
-unversed
-unvoiced
-unvouched
-unwaited-for
-unwaited-on
-unwanted
-unwarily
-unwariness
-unwarlike
-unwarrantable
-unwarranted
-unwary
-unwashed
-unwatered
-unwavering
-unwaveringly
-unwearable
-unwearied
-unwearying
-unweave
-unwed
-unwedge
-unweighted
-unwelcome
-unwell
-unwholesome
-unwholesomeness
-unwieldiness
-unwieldy
-unwilling
-unwillingly
-unwillingness
-unwind
-unwinder
-unwinders
-unwinding
-unwinds
-unwise
-unwisely
-unwiser
-unwisest
-unwished
-unwitting
-unwittingly
-unwonted
-unworkable
-unworldliness
-unworldly
-unworn
-unworried
-unworthily
-unworthiness
-unworthy
-unwound
-unwoven
-unwrap
-unwrapped
-unwrapping
-unwraps
-unwreathe
-unwrinkle
-unwrinkled
-unwritten
-unwrought
-unyielding
-unyoke
-unzip
-up
-up-and-coming
-up-arrow
-up-front
-up-to-date
-up-to-the-minute
-upbeat
-upbraid
-upbringing
-UPC
-upcast
-upchuck
-upcoming
-upcountry
-update
-updated
-updater
-updates
-updating
-updraft
-upend
-upfront
-upgrade
-upgraded
-upgrades
-upgrading
-upheaval
-upheave
-upheld
-uphill
-uphold
-upholder
-upholders
-upholding
-upholds
-upholster
-upholstered
-upholsterer
-upholstering
-upholsters
-upholstery
-UPI
-upkeep
-upland
-uplands
-uplift
-uplifting
-uplink
-uplinks
-upload
-upmarket
-upon
-upper
-upper-class
-upper-cut
-uppercase
-upperclassman
-uppercut
-uppermost
-uppers
-uppish
-uppity
-upraise
-uprear
-upright
-uprightly
-uprightness
-uprise
-uprising
-uprisings
-upriver
-uproar
-uproarious
-uproariously
-uproot
-uprooted
-uprooting
-uproots
-upscale
-upset
-upsets
-upsetting
-upshot
-upshots
-upside
-upside-down
-upsilon
-upspacing
-upstage
-upstairs
-upstanding
-upstart
-upstate
-upstream
-upstroke
-upsurge
-upswing
-uptake
-upthrust
-uptight
-Upton
-uptown
-upturn
-upturned
-upturning
-upturns
-upward
-upwardly
-upwards
-upwind
-uracil
-Ural
-Urals
-Urania
-uranic
-uranium
-uranous
-Uranus
-urban
-Urbana
-urbane
-urbanely
-urbanity
-urbanization
-urbanize
-urbanologist
-urbanology
-urchin
-urchins
-Urdu
-urea
-uremia
-uremic
-ureter
-urethane
-urethra
-urethrae
-urethral
-urge
-urged
-urgency
-urgent
-urgently
-urges
-urging
-urgings
-Uri
-uric
-urinal
-urinalyses
-urinalysis
-urinary
-urinate
-urinated
-urinates
-urinating
-urination
-urine
-urinous
-Uris
-urn
-urns
-urogenital
-urological
-urologist
-urology
-Urquhart
-Ursa
-ursine
-Ursula
-Ursuline
-urticaceous
-urticaria
-urticate
-Uruguay
-Uruguay'a
-Uruguayan
-Uruguayans
-Urumqi
-us
-usability
-usable
-usably
-USAF
-usage
-usages
-usance
-USCG
-USDA
-use
-useability
-useable
-used
-useful
-usefully
-usefulness
-useless
-uselessly
-uselessness
-Usenet
-Usenix
-user
-user-controlled
-user-friendliness
-user-friendly
-user-oriented
-user-own
-user-to-user
-users
-uses
-usher
-ushered
-usherette
-ushering
-ushers
-USIA
-using
-USMC
-USN
-USO
-USP
-USPS
-USS
-USSR
-Ustinov
-usual
-usually
-usufruct
-usurer
-usurious
-usurp
-usurpation
-usurped
-usurper
-usury
-UT
-Utah
-Utahan
-Utahn
-utensil
-utensils
-uteri
-uterine
-uterus
-Utica
-utilitarian
-utilitarianism
-utilities
-utility
-utilization
-utilizations
-utilize
-utilized
-utilizes
-utilizing
-utmost
-utopia
-utopian
-Utopianize
-Utopianizes
-utopians
-Utrecht
-utricle
-utricular
-utter
-utterance
-utterances
-uttered
-uttering
-utterly
-uttermost
-utters
-UV
-uvula
-uvulae
-uvular
-uxoricide
-uxorious
-Uzbekistan
-Uzhgorod
-Uzhhorod
-Uzi
-V-chip
-V-day
-V-neck
-V-necked
-V/STOL
-vacancies
-vacancy
-vacant
-vacantly
-vacate
-vacated
-vacates
-vacating
-vacation
-vacationed
-vacationer
-vacationers
-vacationing
-vacationist
-vacations
-vaccinate
-vaccination
-vaccine
-vacillate
-vacillation
-vacua
-vacuity
-vacuo
-vacuole
-vacuous
-vacuously
-vacuousness
-vacuum
-vacuum-packed
-vacuumed
-vacuuming
-vademecum
-Vaduz
-vagabond
-vagabondage
-vagabonds
-vagaries
-vagarious
-vagary
-vagina
-vaginae
-vaginal
-vaginally
-vaginas
-vagrancy
-vagrant
-vagrantly
-vague
-vaguely
-vagueness
-vaguer
-vaguest
-vail
-vain
-vainglorious
-vaingloriously
-vainglory
-vainly
-valance
-vale
-valediction
-valedictorian
-valedictory
-valence
-valences
-Valencia
-valency
-valentine
-valentines
-valerian
-Valerie
-Valery
-vales
-valet
-valets
-valetudinarian
-valetudinarianism
-Valhalla
-valiance
-valiancy
-valiant
-valiantly
-valid
-validate
-validated
-validates
-validating
-validation
-validity
-validly
-validness
-valise
-Valium
-Valkyrie
-Vallejo
-Valletta
-valley
-valleys
-Valois
-valor
-valorize
-valorous
-valorously
-valour
-Valparaiso
-valuable
-valuables
-valuably
-valuate
-valuation
-valuations
-value
-value-forming
-value-in-use
-valued
-valueless
-valuer
-valuers
-values
-valuing
-valve
-valved
-valveless
-valves
-valvular
-vamoose
-Vamoose!
-vamp
-vampire
-van
-van-dragger
-vanadium
-Vance
-Vancement
-Vancouver
-vandal
-vandalise
-vandalism
-vandalize
-vandalized
-vandalizes
-vandalizing
-Vandenberg
-Vanderbilt
-Vanderburgh
-Vanderpoel
-Vandyke
-vane
-vanes
-Vanessa
-vanguard
-vanilla
-vanish
-vanished
-vanisher
-vanishes
-vanishing
-vanishingly
-vanities
-vanity
-vanity-bag
-vanquish
-vanquished
-vanquisher
-vanquishes
-vanquishing
-vans
-vantage
-vantage-ground
-Vanuatu
-vapid
-vapidity
-vapidly
-vapidness
-vapor
-vaporing
-vaporise
-vaporization
-vaporize
-vaporizer
-vaporous
-vapors
-vapory
-vapour
-vapoury
-vaquero
-Varanasi
-variability
-variable
-variableness
-variables
-variably
-Varian
-variance
-variances
-variant
-variantly
-variants
-variation
-variations
-varicolored
-varicose
-varied
-variegate
-variegated
-variegation
-varies
-varietal
-varieties
-variety
-variola
-various
-variously
-variplotter
-Varitype
-Varityper
-Varityping
-varlet
-varment
-varmint
-varnish
-varnisher
-varnishes
-varsity
-vary
-varying
-varyings
-vascular
-vase
-vasectomy
-vaseline
-vases
-vasomotor
-Vasquez
-vassal
-vassalage
-Vassar
-vast
-vaster
-vastest
-vastly
-vastness
-vat
-vatic
-vatical
-Vatican
-Vaticanization
-Vaticanizations
-Vaticanize
-Vaticanizes
-vaticinal
-vaticinate
-vaticination
-vats
-vaudeville
-vaudevillian
-Vaudois
-Vaughan
-Vaughn
-vault
-vaulted
-vaulter
-vaulting
-vaulting-horse
-vaults
-vaunt
-vaunted
-vaunty
-vavasour
-VAX
-VAXes
-VCR
-VD
-VDT
-VDU
-veal
-vector
-vectorization
-vectorizing
-vectors
-Veda
-vedette
-veejay
-veer
-veered
-veering
-veers
-veg
-Vega
-vegan
-Veganism
-Vegas
-vegetable
-vegetables
-vegetarian
-vegetarianism
-vegetarians
-vegetate
-vegetated
-vegetates
-vegetating
-vegetation
-vegetative
-veggie
-veggies
-vehemence
-vehemency
-vehement
-vehemently
-vehicle
-vehicles
-vehicular
-veil
-veiled
-veiling
-veils
-vein
-veined
-veining
-veins
-veiny
-velar
-velarize
-Velasquez
-Velazquez
-Velcro
-veld
-veldt
-Vella
-velleity
-vellum
-velocipede
-velocities
-velocity
-velour
-velours
-velum
-velvet
-velveteen
-velvety
-venal
-venality
-venally
-venatic
-venation
-vend
-vender
-vendetta
-vendible
-vendor
-vendors
-vendue
-veneer
-venerability
-venerable
-venerate
-veneration
-venerator
-venereal
-venery
-venesection
-Venetia
-Venetian
-Veneto
-Venezuela
-Venezuelan
-vengeance
-vengeful
-vengefully
-venial
-veniality
-Venice
-venireman
-venison
-Venn
-venom
-venomous
-venomously
-venose
-venous
-vent
-vented
-ventilate
-ventilated
-ventilates
-ventilating
-ventilation
-ventilator
-ventral
-ventricle
-ventricles
-ventricose
-ventricous
-ventricular
-ventriloquism
-ventriloquist
-ventriloquy
-vents
-Ventura
-venture
-ventured
-venturer
-venturers
-ventures
-venturesome
-venturesomely
-venturesomeness
-venturing
-venturings
-venturous
-venturously
-venturousness
-venue
-Venus
-Venusian
-Venusians
-Vera
-veracious
-veraciously
-veracity
-Veracruz
-veranda
-verandah
-verandas
-verb
-verbal
-verbalism
-verbalization
-verbalize
-verbalized
-verbalizes
-verbalizing
-verbally
-verbatim
-verbena
-verbiage
-verbose
-verbosely
-verbosity
-verboten
-verbs
-verdancy
-verdant
-verdantly
-Verde
-verderer
-Verdi
-verdict
-verdigris
-verdure
-verge
-verger
-verges
-Vergil
-Vergilian
-verifiability
-verifiable
-verification
-verifications
-verified
-verifier
-verifiers
-verifies
-verify
-verifying
-verily
-verisimilar
-verisimilitude
-veritable
-veritably
-verity
-verjuice
-Verlag
-Vermeer
-vermicelli
-vermicular
-vermiculate
-vermiculite
-vermiform
-vermilion
-vermillion
-vermin
-verminous
-Vermont
-Vermonter
-vermouth
-Vern
-Verna
-vernacular
-vernal
-Verne
-vernier
-Vernon
-Verona
-Veronese
-veronica
-verruca
-versa
-Versailles
-versal
-Versatec
-versatile
-versatility
-verse
-versed
-verses
-versification
-versifier
-versify
-versing
-version
-versions
-verso
-versus
-vert
-vertatur
-vertebra
-vertebrae
-vertebral
-vertebrate
-vertebrates
-vertex
-vertical
-vertically
-verticalness
-vertices
-vertiginous
-vertigo
-vervain
-verve
-very
-vesicate
-vesicatory
-vesicle
-vesicular
-vesiculate
-vesper
-vespertine
-vespiary
-Vespucci
-vessel
-vessels
-vest
-vest-pocket
-vestal
-vested
-vestibule
-vestige
-vestiges
-vestigial
-vestigially
-vesting
-vestment
-vestry
-vestry-keeper
-vestryman
-vests
-vesture
-Vesuvius
-vet
-vetch
-veteran
-veterans
-veterinarian
-veterinarians
-veterinary
-veto
-vetoed
-vetoer
-vetoes
-vetted
-vetting
-vex
-vexation
-vexatious
-vexatiously
-vexed
-vexes
-vexillary
-vexing
-VF
-VFW
-VG
-VGA
-VHF
-VHS
-VI
-via
-viability
-viable
-viably
-viaduct
-vial
-vials
-viand
-viands
-viatic
-viaticum
-vibe
-vibes
-vibraharp
-vibrancy
-vibrant
-vibrantly
-vibraphone
-vibraphonist
-vibrate
-vibrated
-vibrating
-vibration
-vibrations
-vibrato
-vibrator
-vibratory
-viburnum
-Vic
-vicar
-vicarage
-vicarious
-vicariously
-vicariousness
-vice
-vice-
-vice-admiral
-vice-chairman
-vice-gerent
-vice-presidency
-vice-president
-vice-rector
-vicegerent
-vicennial
-viceregal
-viceroy
-vices
-vicessimo-quatro
-Vichy
-vichyssoise
-vicinage
-vicinity
-vicious
-viciously
-viciousness
-vicissitude
-vicissitudes
-Vickers
-Vicksburg
-Vicky
-victim
-victimization
-victimize
-victimized
-victimizer
-victimizers
-victimizes
-victimizing
-victims
-victor
-Victoria
-Victorian
-Victorianism
-Victorianize
-Victorianizes
-Victorians
-victories
-victorious
-victoriously
-victors
-victory
-victress
-victrix
-Victrola
-victual
-victualer
-victuals
-vicuna
-Vida
-VIDAC
-Vidal
-videlicet
-video
-video-camera
-video-clip
-video-conference
-video-key-telephone
-videocassette
-videoconferencing
-videodisc
-videodisk
-videogram
-videograph
-videoize
-videophone
-videoplayer
-videorecorder
-videotape
-videotapes
-videotelephone
-videotelephony
-videoterminal
-videotex
-VIDITEL
-vie
-vied
-Vienna
-Viennese
-Vientiane
-vier
-vies
-Viet
-Vietcong
-Vietnam
-Vietnamese
-view
-view-finder
-viewable
-viewdata
-viewed
-viewer
-viewers
-viewfinder
-viewing
-viewless
-viewphone
-viewpoint
-viewpoints
-viewport
-views
-viewy
-vigesimal
-vigil
-vigilance
-vigilant
-vigilante
-vigilantes
-vigilantism
-vigilantist
-vigilantly
-vignette
-vignettes
-vignettist
-VIGOR
-vigorous
-vigorously
-vigour
-Viking
-Vikings
-Vikram
-Vila
-vile
-vilely
-vileness
-vilification
-vilifications
-vilified
-vilifies
-vilify
-vilifying
-villa
-village
-villager
-villagers
-villages
-villain
-villainage
-villainous
-villainously
-villainousness
-villains
-villainy
-villas
-villein
-villeinage
-villi
-villus
-Vilnius
-vim
-vinaceous
-vinaigrette
-Vince
-Vincent
-Vinci
-vincible
-vindicable
-vindicate
-vindicated
-vindication
-vindicator
-vindicatory
-vindictive
-vindictively
-vindictiveness
-vine
-vine-dresser
-vinegar
-vinegary
-vinery
-vines
-vineyard
-vineyards
-viniculture
-vino
-vinous
-Vinson
-vintage
-vintager
-vintner
-viny
-vinyl
-viol
-viola
-violable
-violaceous
-violate
-violated
-violates
-violating
-violation
-violations
-violator
-violators
-violence
-violent
-violently
-violet
-violets
-violin
-violinist
-violinists
-violins
-violist
-violoncellist
-violoncello
-violone
-VIP
-viper
-viperous
-vipers
-virago
-viral
-vireo
-virgate
-Virgil
-virgin
-virginal
-Virginia
-Virginian
-Virginians
-virginity
-virgins
-Virgo
-virgule
-virile
-virility
-virologist
-virology
-virtu
-virtual
-virtually
-virtue
-virtues
-virtuosi
-virtuosity
-virtuoso
-virtuosos
-virtuous
-virtuously
-virtuousness
-virulence
-virulent
-virulently
-virus
-viruses
-vis-a-vis
-vis--vis
-visa
-visage
-Visakhapatnam
-visas
-visavis
-viscera
-visceral
-viscerally
-viscid
-viscidity
-viscose
-viscosity
-viscount
-viscountcy
-viscountess
-viscounts
-viscous
-viscus
-vise
-Vishnu
-visibility
-visible
-visibly
-Visigoth
-Visigoths
-vision
-visional
-visionary
-visions
-visit
-visit-book
-visit-card
-visitant
-visitation
-visitations
-visited
-visiting
-visitor
-visitors
-visits
-visor
-visors
-vista
-vistas
-Vistula
-visual
-visualization
-visualize
-visualized
-visualizer
-visualizes
-visualizing
-visually
-vita
-vitae
-vital
-vitalism
-vitality
-vitalization
-vitalize
-vitally
-vitals
-vitamin
-vitelline
-vitellus
-vitiate
-vitiation
-viticulture
-viticulturist
-Vito
-vitreous
-vitric
-vitrifaction
-vitrification
-vitriform
-vitrify
-vitrine
-vitriol
-vitriolic
-vittles
-vituperate
-vituperation
-vituperative
-Vitus
-viva
-vivace
-vivacious
-vivaciously
-vivaciousness
-vivacity
-Vivaldi
-vivarium
-vivers
-Vivian
-vivid
-vividly
-vividness
-vivify
-viviparous
-vivisect
-vivisection
-vivisectional
-vivisectionist
-vixen
-vixenish
-vixenishly
-vizier
-vizir
-vizor
-VJ
-Vladimir
-Vladivostok
-VLF
-VLP
-VLSI
-VOA
-vocable
-vocabularies
-vocabulary
-vocal
-vocalic
-vocalism
-vocalist
-vocalization
-vocalize
-vocally
-vocals
-vocation
-vocational
-vocationally
-vocations
-vocative
-vociferate
-vociferation
-vociferous
-vociferously
-vociferousness
-vocoder
-vodka
-Vogel
-vogue
-voguish
-voice
-voice-over
-voiceband
-voiced
-voiceless
-voicelessly
-voicelessness
-voicer
-voicers
-voices
-voicing
-void
-voidable
-voided
-voider
-voiding
-voids
-voila
-voile
-vol.
-volant
-volatile
-volatilities
-volatility
-volatilize
-volcanic
-volcano
-volcanos
-vole
-Volga
-Volgograd
-Volhynia
-volitation
-volition
-volitional
-volitive
-Volkswagen
-Volkswagens
-volley
-volley-ball
-volleyball
-volleyballs
-volplane
-Volstead
-volt
-volt-ampere
-Volta
-voltage
-voltages
-voltaic
-Voltaire
-volte-face
-Volterra
-voltmeter
-volts
-volture
-volubility
-voluble
-volubly
-volume
-volume-control
-volume-produce
-volumed
-volumen
-volumes
-voluminosity
-voluminous
-voluminously
-voluminousness
-voluntarily
-voluntarism
-voluntary
-volunteer
-volunteered
-volunteering
-volunteers
-voluptuary
-voluptuous
-voluptuously
-voluptuousness
-volute
-volution
-Volvo
-vomit
-vomited
-vomiting
-vomitive
-vomitory
-vomits
-voodoo
-voodooism
-voracious
-voraciously
-voraciousness
-voracity
-Voronezh
-vortex
-vortices
-Voss
-votaress
-votarist
-votary
-vote
-voted
-voter
-voters
-votes
-voting
-votive
-votress
-vouch
-voucher
-vouchers
-vouches
-vouching
-vouchsafe
-vouchsafed
-Vought
-vow
-vowed
-vowel
-vowels
-vower
-vowing
-vows
-voyage
-voyaged
-voyager
-voyagers
-voyages
-voyageur
-voyaging
-voyagings
-voyeur
-voyeurism
-voyeuristic
-VP
-Vreeland
-VTOL
-VTR
-Vulcan
-Vulcanism
-vulcanite
-vulcanization
-vulcanize
-vulgar
-vulgarian
-vulgarism
-vulgarity
-vulgarization
-vulgarize
-vulgarizer
-vulgarly
-Vulgate
-vulnerabilities
-vulnerability
-vulnerable
-vulnerably
-vulnerary
-vulpine
-vulture
-vultures
-vulturine
-vulturous
-vulva
-vulvae
-vum
-vying
-w/
-w/o
-WA
-Waals
-Wabash
-wabble
-wack
-Wacke
-wackiness
-wacky
-Waco
-wad
-wadding
-waddle
-wade
-waded
-wader
-waders
-wades
-wadi
-wading
-wads
-Wadsworth
-wafer
-wafer-thin
-wafers
-waffle
-waffler
-waffles
-waft
-wag
-wage
-wage-earner
-wage-scale
-waged
-wager
-wagerer
-wagers
-wages
-waggery
-waggish
-waggishly
-waggishness
-waggle
-waggon
-waging
-Wagner
-Wagnerian
-Wagnerize
-Wagnerizes
-wagon
-wagoner
-wagons
-wags
-wagtail
-Wahl
-waif
-wail
-wailed
-wailer
-wailing
-wails
-wain
-wainscot
-wainscoting
-wainscotting
-waist
-waist-belt
-waist-deep
-waist-high
-waistband
-waistcoat
-waistcoats
-waistline
-waists
-wait
-wait!
-Waite
-waited
-waiter
-waiters
-waiting
-waiting-boy
-waiting-gentleman
-waiting-girl
-waiting-maid
-waiting-man
-waiting-room
-waiting-woman
-waitlist
-waitperson
-waitress
-waitresses
-waits
-waive
-waived
-waiver
-waiverable
-waives
-waiving
-wake
-waked
-Wakefield
-wakeful
-wakefully
-wakefulness
-waken
-wakened
-wakening
-wakes
-wakeup
-waking
-Walbridge
-Walcott
-Walden
-Waldensian
-Waldo
-Waldorf
-Waldron
-wale
-Wales
-Walford
-Walgreen
-walk
-walk-in
-walk-on
-walk-through
-walk-up
-walkaway
-walked
-walker
-walkers
-walkie-talkie
-walking
-walking-out
-walking-papers
-walking-stick
-walking-ticket
-walking-tour
-walkman
-walkout
-walkover
-walks
-walkway
-wall
-wall-face
-wall-newspaper
-wall-paper
-wall-socket
-wall-to-wall
-wallaby
-Wallace
-Wallachia
-wallboard
-walled
-Wallenstein
-Waller
-wallet
-wallets
-walleye
-walleyed
-wallflower
-wallflowers
-walling
-Wallis
-Wallonia
-Walloon
-wallop
-walloping
-wallow
-wallowed
-wallowing
-wallows
-wallpaper
-walls
-walnut
-walnuts
-Walpole
-walrus
-walruses
-Walsh
-Walt
-Walter
-Walters
-Waltham
-Walton
-waltz
-waltzed
-waltzer
-waltzes
-waltzing
-Walworth
-wampum
-wan
-wand
-wander
-wandered
-wanderer
-wanderers
-wandering
-wanderings
-wanderlust
-wanders
-wane
-waned
-wanes
-Wang
-wangle
-wangler
-waning
-wanly
-wanna
-wanna-be
-wannabe
-wanness
-Wansee
-Wansley
-want
-wantage
-wanted
-wanting
-wanton
-wantonly
-wantonness
-wants
-Wapato
-wapiti
-wapped
-Wappinger
-war
-war-cry
-war-horse
-war-monger
-war-ship
-war-torn
-war-whoop
-warble
-warbled
-warbler
-warbles
-warbling
-warbonnet
-Warburton
-ward
-warden
-wardens
-wardenship
-warder
-wardress
-wardrobe
-wardrobes
-wardroom
-wards
-wardship
-ware
-warehouse
-warehouseman
-warehouses
-warehousing
-wares
-warfare
-Warfield
-warhead
-warhorse
-warily
-wariness
-Waring
-warlike
-warlock
-warlord
-warm
-warm-blooded
-warm-bloodedness
-warm-hearted
-warm-heartedly
-warm-heartedness
-warm-up
-warmblooded
-warmed
-warmed-over
-warmer
-warmers
-warmest
-warmhearted
-warmheartedness
-warming
-warmish
-warmly
-warmness
-warmonger
-warmongering
-warms
-warmth
-warmup
-warn
-warned
-warner
-warning
-warningly
-warnings
-Warnock
-warns
-warp
-warpath
-warped
-warping
-warplane
-warps
-warrant
-warrantable
-warranted
-warrantee
-warranter
-warranties
-warranting
-warrantor
-warrants
-warranty
-warred
-warren
-warring
-warrior
-warriors
-wars
-Warsaw
-warship
-warships
-wart
-warthog
-wartime
-warts
-warty
-Warwick
-wary
-was
-wash
-wash-and-wear
-wash-basin
-wash-house
-wash-out
-wash-pot
-wash-room
-wash-tub
-washable
-washbasin
-washboard
-washbowl
-Washburn
-washcloth
-washed
-washed-out
-washed-up
-washer
-washer-woman
-washer-wringer
-washers
-washerwoman
-washes
-washing
-washing-blue
-washing-machine
-washing-powder
-washing-stand
-washing-tub
-washings
-Washington
-Washingtonian
-Washoe
-washout
-washrag
-washroom
-washstand
-washtub
-washwoman
-washy
-wasn't
-wasp
-waspish
-waspishly
-waspishness
-wasps
-wassail
-Wasserman
-wast
-wastage
-waste
-waste-good
-waste-paper-basket
-waste-water
-wastebasket
-wasted
-wasteful
-wastefully
-wastefulness
-wasteland
-wastepaper
-waster
-wastes
-wasting
-wastrel
-wastthrift
-Watanabe
-watch
-Watch!
-watch-case
-watch-dog
-watch-glass
-watch-hand
-watch-house
-watch-light
-watch-maker
-watch-word
-watchband
-watchdog
-watched
-watcher
-watchers
-watches
-watchful
-watchfully
-watchfulness
-watching
-watchings
-watchmaker
-watchmaking
-watchman
-watchtower
-watchword
-watchwords
-water
-water-bottle
-water-cart
-water-cask
-water-closet
-water-colour
-water-compress
-water-conduit
-water-course
-water-cress
-water-face
-water-gang
-water-gate
-water-gauge
-water-glass
-water-heater
-water-hen
-water-hose
-water-level
-water-lily
-water-line
-water-lock
-water-main
-water-melon
-water-mill
-water-plane
-water-power
-water-proof
-water-rat
-water-repellent
-water-seal
-water-shoot
-water-ski
-water-skier
-water-skiing
-water-station
-water-supply
-water-tower
-water-trough
-water-tub
-water-wave
-water-way
-water-wheel
-water-works
-waterbed
-waterbird
-waterborne
-Waterbury
-watercolor
-watercourse
-watercraft
-watercress
-watered
-watered-down
-waterer
-waterfall
-waterfalls
-waterfowl
-waterfront
-Watergate
-waterhole
-Waterhouse
-wateriness
-watering
-watering-place
-waterings
-waterlily
-waterline
-waterlog
-waterlogged
-Waterloo
-Waterman
-watermark
-watermelon
-watermill
-waterpower
-waterproof
-waterproofing
-watershed
-waterside
-waterspout
-watertight
-Watertown
-waterway
-waterways
-waterwheel
-waterworks
-watery
-Watkins
-WATS
-Watson
-watt
-wattage
-Wattenberg
-Watterson
-wattle
-wattled
-wattles
-Watts
-Waukesha
-waul
-Waunona
-Waupaca
-Waupun
-Wausau
-Wauwatosa
-wave
-wave-breaks
-waved
-waveform
-waveforms
-wavefront
-wavefronts
-waveguide
-waveguides
-Waveland
-wavelength
-wavelengths
-waveless
-wavelet
-wavelike
-waver
-waverer
-waveringly
-wavers
-waves
-waviness
-waving
-wavy
-wax
-wax-candle
-wax-cloth
-wax-paper
-waxed
-waxen
-waxer
-waxers
-waxes
-waxiness
-waxing
-waxwing
-waxwork
-waxworks
-waxy
-way
-way-bill
-way-bread
-Way-in
-way-out
-wayfarer
-wayfaring
-waylaid
-waylay
-waylayer
-wayless
-Wayne
-Waynesboro
-ways
-wayside
-wayward
-waywardly
-waywardness
-WC
-we
-we'd
-we'll
-we're
-we've
-weak
-weak-kneed
-weak-minded
-weaken
-weakened
-weakener
-weakening
-weakens
-weaker
-weakest
-weakfish
-weakling
-weakly
-weakness
-weaknesses
-weal
-weald
-wealth
-wealthiest
-wealthiness
-wealths
-wealthy
-wean
-weaned
-weaning
-weapon
-weaponless
-weaponry
-weapons
-wear
-wearable
-wearer
-wearied
-wearier
-weariest
-wearily
-weariness
-wearing
-wearisome
-wearisomely
-wears
-weary
-wearying
-weasel
-weasel-word
-weaselly
-weasels
-weather
-weather-beaten
-weather-bound
-weather-cock
-weather-glass
-weather-moulding
-weather-station
-weather-vane
-weather-worn
-weathercock
-weathercocks
-weathered
-Weatherford
-weathering
-weatherize
-weatherman
-weatherperson
-weatherproof
-weathers
-weatherstrip
-weatherstripping
-weatherwear
-weave
-weaver
-weaves
-weaving
-weaving-mill
-weazen
-web
-web-beam
-web-footed
-web-offset
-web-toed
-Webb
-webbed
-Webber
-webbing
-webfeet
-webfoot
-webmaster
-webs
-website
-Webster
-Websterville
-wed
-wedded
-wedding
-weddings
-wedge
-wedged
-wedges
-wedgie
-wedging
-wedlock
-Wednesday
-Wednesdays
-weds
-wee
-weed
-weeder
-weedery
-weeding
-weedless
-weeds
-weedy
-week
-week-end
-weekday
-weekend
-weekends
-weekly
-weeknight
-weeks
-ween
-weenie
-weeny
-weep
-weeper
-weeping
-weeps
-weepy
-weevil
-weft
-Wehr
-Wei
-Weibull
-Weider
-Weidman
-Weierstrass
-weigh
-weighed
-weighing
-weighings
-weighs
-weight
-weightage
-weighted
-weightily
-weightiness
-weighting
-weightless
-weightlessly
-weightlessness
-weightlifter
-weightlifting
-weights
-weighty
-Weinberg
-Weiner
-Weinstein
-weir
-weird
-weirdie
-weirdly
-weirdness
-weirdo
-weisenheim
-Weisenheimer
-Weiss
-Weissman
-Weissmuller
-Welcher
-Welches
-welcome
-welcome!
-welcomed
-welcomes
-welcoming
-weld
-weldable
-welded
-welder
-welding
-weldment
-Weldon
-welds
-Weldwood
-welfare
-welkin
-well
-well-
-well-adjusted
-well-advised
-well-aimed
-well-appointed
-well-baked
-well-balanced
-well-behaved
-well-being
-well-born
-well-bred
-well-bucket
-well-built
-well-conducted
-well-connected
-well-defined
-well-disposed
-well-doing
-well-done
-well-drain
-well-earned
-well-fed
-well-fixed
-well-founded
-well-groomed
-well-grounded
-well-heeled
-well-informed
-well-intentioned
-well-judged
-well-knit
-well-known
-well-made
-well-mannered
-well-meaning
-well-meant
-well-met
-well-nigh
-well-off
-well-oiled
-well-on
-well-ordered
-well-preserved
-well-read
-well-rounded
-well-seen
-well-spoken
-well-staircase
-well-thought-of
-well-timed
-well-to-do
-well-tried
-well-turned
-well-water
-well-wisher
-well-worn
-welladay
-welled
-Weller
-Welles
-Wellesley
-wellhead
-welling
-wellingtons
-Wellman
-wellness
-Wells
-wellspring
-Wellsville
-Welmers
-welsh
-welsher
-Welshman
-welt
-welter
-welterweight
-Welton
-wen
-Wenceslas
-wench
-wenches
-wend
-Wendell
-wendic
-wendish
-Wendy
-went
-Wentworth
-wept
-were
-weren't
-werewolf
-werewolves
-Werner
-Werther
-werwolf
-Wesley
-Wesleyan
-Wesson
-west
-westbound
-Westbrook
-Westchester
-westerly
-western
-westerner
-westerners
-westernization
-westernize
-westernmost
-Westfield
-Westhampton
-Westinghouse
-Westminster
-Westmore
-Weston
-Westphalia
-Westport
-westward
-westwards
-Westwood
-wet
-wet-head
-wet-nose
-wet-nurse
-wetback
-wether
-wetland
-wetlands
-wetly
-wetness
-wets
-wetted
-wetter
-wettest
-wetting
-Weyerhauser
-whack
-whacked
-whacker
-whacking
-whacks
-whacky
-whale
-whale-bone
-whale-calf
-whale-fin
-whale-oil
-whaleboat
-whalebone
-Whalen
-whaler
-whales
-whaling
-wham
-whammy
-whang
-wharf
-wharfage
-wharfinger
-Wharton
-wharves
-what
-what's
-whatchamacallit
-whatever
-Whatley
-whatnot
-whatsoever
-wheal
-wheat
-wheaten
-Wheatland
-Wheaton
-Wheatstone
-whee
-wheedle
-wheedler
-wheel
-wheel-barrow
-wheel-base
-wheel-centre
-wheel-chair
-wheel-crown
-wheel-gauge
-wheel-horse
-wheel-stretcher
-wheel-wright
-wheelbarrow
-wheelbase
-wheelchair
-wheeled
-wheeler
-wheeler-dealer
-wheelers
-wheelframe
-wheelhorse
-wheelhouse
-wheelie
-wheeling
-wheelings
-wheelman
-Wheelock
-wheels
-wheeltire
-wheeltyre
-wheelwright
-wheeze
-wheezily
-wheeziness
-wheezy
-Whelan
-whelk
-Wheller
-whelm
-whelp
-when
-whence
-whenever
-whensoever
-where
-where's
-whereabout
-whereabouts
-whereas
-whereat
-whereby
-wherefore
-wherein
-whereof
-whereon
-wheresoever
-whereto
-whereunto
-whereupon
-wherever
-wherewith
-wherewithal
-wherewithall
-wherry
-whet
-whether
-whetstone
-whew
-whey
-which
-whichever
-whichsoever
-whiff
-whiffit
-whiffle
-whiffletree
-whig
-while
-whilom
-whilst
-whim
-whim-wham
-whimper
-whimpered
-whimpering
-whimpers
-whims
-whimsey
-whimsical
-whimsicality
-whimsically
-whimsies
-whimsy
-whin
-whine
-whined
-whiner
-whines
-whinger
-whining
-whinny
-whiny
-whip
-whip-stitching
-whipcord
-whiplash
-Whippany
-whipped
-whipper
-whipper-snapper
-whippers
-whippersnapper
-whippet
-whipping
-whipping-boy
-whipping-top
-whippings
-Whipple
-whippletree
-whippoorwill
-whips
-whipsaw
-whipster
-whir
-whirl
-whirled
-whirligig
-whirling
-whirlpool
-whirlpools
-whirls
-whirlwind
-whirlybird
-whirr
-whirring
-whisk
-whisked
-whisker
-whiskered
-whiskers
-whiskery
-whiskey
-whisking
-whisks
-whisky
-whisper
-whispered
-whisperer
-whispering
-whisperings
-whispers
-whist
-whist-drive
-whistle
-whistle-blower
-whistle-blowing
-whistle-stop
-whistleblow
-whistled
-whistlers
-whistles
-whistling
-whit
-whit-limed
-Whitaker
-Whitcomb
-white
-white-bread
-white-collar
-white-grained
-white-hot
-white-livered
-white-man
-white-out
-white-smith
-white-squall
-whitebeard
-whitecap
-whitefish
-whitefriar
-whiteguard
-Whitehall
-whitehead
-whiteheaded
-Whitehorse
-Whiteleaf
-Whiteley
-whitelie
-whitely
-whiten
-whitened
-whitener
-whiteners
-whiteness
-whitening
-whitens
-whiteout
-whiter
-whites
-whitespace
-whitest
-whitetail
-whitethorn
-whitewall
-whitewash
-whitewashed
-whitey
-Whitfield
-whither
-whithersoever
-whitherward
-whiting
-whitish
-Whitlock
-whitlow
-Whitman
-Whitmanize
-Whitmanizes
-Whitney
-Whitsunday
-Whitsuntide
-Whittaker
-Whittier
-whittle
-whittled
-whittler
-whittles
-whittling
-whiz
-whiz-bang
-whizkid
-whizz
-whizzbang
-whizzed
-whizzes
-whizzing
-who
-who'd
-who'll
-who're
-who's
-who've
-whoa
-whodunit
-whodunnit
-whoever
-whole
-whole-hearted
-whole-heartedly
-whole-length
-whole-meal
-whole-wheat
-wholehearted
-wholeheartedly
-wholeheartedness
-wholeness
-wholes
-wholesale
-wholesaler
-wholesalers
-wholesome
-wholesomely
-wholesomeness
-wholly
-whom
-whomever
-whomsoever
-whoop
-whoop-la
-whooped
-whoopee
-whooper
-whooping
-whoops
-Whoops!
-whoosh
-whop
-whopper
-whopping
-whore
-whoredom
-whoreish
-whores
-whorish
-whorl
-whorled
-whorls
-whortleberry
-whose
-whosesoever
-whoso
-whosoever
-why
-WI
-Wichita
-wick
-wicked
-wickedly
-wickedness
-wicker
-wicker-work
-wickerwork
-wicket
-wicks
-wide
-wide-awake
-wide-eyed
-wide-open
-wide-spread
-wideband
-widely
-widemouthed
-widen
-widened
-widener
-wideness
-widening
-widens
-wider
-widespread
-widest
-widgeon
-widget
-widow
-widow's-bench
-widowed
-widower
-widowers
-widowhood
-widows
-width
-widths
-Wieland
-wield
-wielded
-wielder
-wielding
-wields
-wiener
-wienie
-Wier
-wife
-wifeless
-wifely
-wig
-wig-maker
-wig-weaver
-wigeon
-Wiggins
-wiggle
-wiggler
-wiggly
-wight
-Wightman
-wiglet
-wigs
-wigwag
-wigwam
-Wilbur
-Wilcox
-wild
-wild-brier
-wild-cat
-wild-eyed
-wild-fire
-wild-rose
-wild-succory
-wild-thyme
-wildcat
-wildcats
-wildcatter
-Wilde
-wildebeest
-wilderness
-wildest
-wildfire
-wildflower
-wildfowl
-wilding
-wildlife
-wildly
-wildness
-wilds
-wile
-wiles
-Wiley
-Wilfred
-wilful
-wilfully
-wilfulness
-Wilhelm
-Wilhelmina
-wiliness
-Wilkes
-Wilkie
-Wilkins
-Wilkinson
-will
-will-o'-the-wisp
-Willa
-Willamette
-Willard
-Willcox
-willed
-Willem
-willful
-willfully
-willfulness
-William
-Williams
-Williamsburg
-Williamson
-Willie
-Willied
-willing
-willingly
-willingness
-Willis
-Willisson
-williwaw
-Willoughby
-willow
-willow-plot
-willows
-willowy
-willpower
-Wills
-Willy
-willy-nilly
-Wilma
-Wilmette
-Wilmington
-Wilshire
-Wilson
-Wilsonian
-wilt
-wilted
-wilting
-wilts
-Wiltshire
-wily
-wimble
-wimp
-wimpish
-wimple
-wimpy
-win
-win-win
-wince
-winced
-winces
-winch
-Winchell
-Winchester
-wincing
-wind
-wind-breaks
-wind-broken
-wind-cheater
-wind-egg
-wind-gauge
-wind-hover
-wind-instrument
-wind-screen
-wind-screen-wiper
-wind-shield
-wind-swept
-wind-up
-windbag
-windblown
-windbreak
-windbreaker
-windburn
-windburned
-winded
-winder
-winders
-windfall
-windflower
-Windhoek
-windily
-windiness
-winding
-winding-sheet
-windjam
-windjammer
-windlass
-windless
-windmill
-windmills
-window
-window-blind
-window-case
-window-dress
-window-frame
-window-pane
-window-sash
-window-shop
-window-shopper
-window-shopping
-window-shutter
-windowing
-windowless
-windowpane
-windowsill
-windpipe
-windproof
-windrow
-winds
-windscreen
-windshield
-windsock
-Windsor
-windstorm
-windsurf
-windsurfer
-windsurfing
-windswept
-windup
-windward
-windy
-wine
-wine-cask
-wine-cellar
-wine-colored
-wine-glass
-wine-grower
-wine-press
-wined
-wineglass
-winegrower
-Winehead
-winepress
-winer
-winers
-winery
-wines
-winevault
-wineyard
-Winfield
-wing
-wing-case
-wing-mirror
-wing-stroke
-wingding
-winged
-winging
-wingless
-winglet
-winglike
-wings
-wingspan
-wingspread
-wingtip
-Winifred
-wining
-wink
-winked
-winker
-winkers
-winking
-winkle
-winkle-fishing
-winks
-Winnebago
-winner
-winners
-Winnetka
-Winnie
-winning
-winningly
-winnings
-Winnipeg
-Winnipesaukee
-winnow
-winnower
-wino
-Winograd
-Winooski
-wins
-Winsborough
-Winsett
-Winslow
-winsome
-winsomely
-winsomeness
-Winston
-Winston-Salem
-winter
-wintered
-wintergreen
-wintering
-winterize
-Winters
-wintertime
-wintery
-Winthrop
-wintry
-winy
-wipe
-wiped
-wiper
-wipers
-wipes
-wiping
-WIPO
-wire
-wire-bridge
-wire-cutters
-wire-entanglement
-wire-gauge
-wire-glass
-wire-guided
-wire-haired
-wire-line
-wire-mark
-wire-netting
-wire-pulling
-wire-worm
-wired
-wirehair
-wireless
-wires
-wiretap
-wiretapper
-wiretappers
-wiretapping
-wiretaps
-wiriness
-wiring
-wiry
-Wis
-Wisc
-Wisconsin
-Wisconsinite
-wisdom
-wisdom-tooth
-wisdoms
-wise
-wiseacre
-wisecrack
-wised
-wiseguy
-wisely
-Wisenheimer
-wiser
-wisest
-wish
-wish-wash
-wishbone
-wished
-wisher
-wishers
-wishes
-wishful
-wishfully
-wishing
-wishy-washy
-wisp
-wisps
-wispy
-wist
-wistaria
-wisteria
-wistful
-wistfully
-wistfulness
-wit
-wit-cracker
-witch
-witch-hunt
-witchcraft
-witchery
-witches
-witching
-with
-with-it
-withal
-withdraw
-withdrawal
-withdrawals
-withdrawing
-withdrawn
-withdraws
-withdrew
-withe
-wither
-withered
-withering
-witheringly
-withers
-Witherspoon
-withheld
-withhold
-withholder
-withholders
-withholding
-withholdings
-withholds
-within
-without
-withstand
-withstanding
-withstands
-withstood
-withy
-witless
-witlessly
-witlessness
-witling
-witness
-witnessed
-witnesses
-witnessing
-wits
-witsnapper
-Witt
-witted
-Wittgenstein
-witticism
-wittier
-wittily
-wittiness
-witting
-wittingly
-witty
-wive
-wivern
-wives
-wiz
-wizard
-wizardry
-wizards
-wizen
-wizened
-WNW
-wo
-woad
-wobble
-wobbliness
-wobbly
-woe
-woebegone
-woeful
-woefully
-woefulness
-woes
-wok
-woke
-woken
-Wolcott
-wold
-wolf
-wolf-dog
-wolf-whistle
-Wolfe
-Wolff
-Wolfgang
-wolfhound
-wolfing
-wolfish
-wolfman
-wolfram
-Wolverhampton
-wolverine
-Wolverton
-wolves
-woman
-woman's
-womanhood
-womanish
-womanize
-womanizer
-womankind
-womanlike
-womanliness
-womanly
-womb
-wombat
-wombs
-women
-womenfolk
-womenfolks
-won
-won't
-wonder
-wonder-stricken
-wonder-struck
-wondered
-wonderful
-wonderfully
-wonderfulness
-wondering
-wonderingly
-wonderland
-wonderment
-wonders
-wondrous
-wondrously
-Wong
-wonk
-wonky
-wont
-wonted
-wonton
-woo
-wood
-wood-anemone
-wood-carver
-wood-carving
-wood-coal
-wood-cock
-wood-cut
-wood-engraving
-wood-house
-wood-pulp
-wood-worm
-Woodard
-Woodberry
-woodbine
-woodblock
-Woodbury
-woodcarver
-woodcarving
-woodchuck
-woodchucks
-woodcock
-woodcocks
-woodcraft
-woodcut
-woodcutter
-woodcutting
-wooded
-wooden
-woodengraver
-woodengraving
-woodenly
-woodenness
-woodiness
-woodland
-Woodlawn
-woodlot
-woodman
-woodpecker
-woodpeckers
-woodpile
-Woodrow
-woodruff
-woods
-woodshed
-woodsiness
-woodsman
-Woodstock
-woodsy
-Woodward
-Woodwards
-woodwind
-woodwinds
-woodwork
-woodworker
-woodworking
-woody
-wooed
-wooer
-woof
-woofed
-woofer
-woofers
-woofing
-woofs
-wooing
-wool
-wool-carding
-wool-gathering
-wool-pack
-wool-pulling
-wool-sack
-woolcombing
-woolen
-woolens
-Woolf
-woolgathering
-woolie
-woollen
-woollen-draper
-woollen-stuff
-woolliness
-woolly
-wools
-Woolworth
-wooly
-Woonsocket
-woos
-Wooster
-woozily
-wooziness
-woozy
-Worcester
-Worcestershire
-word
-word-book
-word-building
-word-by-word
-word-division
-word-splitter
-wordage
-wordbook
-worded
-wordily
-wordiness
-wording
-wordless
-wordlessly
-wordplay
-words
-Wordsworth
-wordwise
-wordy
-wore
-work
-work-in-process
-work-people
-work-piece
-work-shy
-work-table
-work-up
-workability
-workable
-workably
-workaday
-workaholic
-workbench
-workbenches
-workbook
-workbooks
-workday
-worked
-worker
-workers
-workfare
-workforce
-workhorse
-workhorses
-workhouse
-working
-working-class
-working-day
-working-man
-workingman
-workings
-workingwoman
-workload
-workman
-workmanlike
-workmanship
-workmen
-workout
-workplace
-workroom
-works
-worksheet
-workshop
-workshops
-workshy
-workspace
-workstation
-workstations
-worktable
-worktables
-workup
-workweek
-workwoman
-world
-world-beater
-world-class
-world-dominating
-world-famous
-world-shaking
-world-weariness
-world-weary
-world-wide
-worldliness
-worldling
-worldly
-worldly-minded
-worldly-wise
-worlds
-worldwide
-worm
-worm-bore
-worm-conveyor
-worm-eaten
-worm-fishing
-worm-gear
-worm-hole
-worm-screw
-worm-seed
-worm-shaft
-worm-wheel
-wormed
-wormhole
-worming
-wormwood
-wormy
-worn
-worn-out
-worried
-worrier
-worriers
-worries
-worriment
-worrisome
-worry
-worrying
-worryingly
-worrywart
-worse
-worsen
-worship
-worshiped
-worshiper
-worshipful
-worshiping
-worshipper
-worships
-worst
-worsted
-wort
-worth
-worthiest
-worthily
-worthiness
-Worthington
-worthless
-worthlessly
-worthlessness
-worths
-worthwhile
-worthwhileness
-worthwile
-worthy
-Wotan
-would
-would've
-would-be
-wouldn't
-wouldst
-wound
-wounded
-wounding
-woundless
-wounds
-wove
-woven
-wow
-Wow!
-WP
-WPA
-WPI
-wrack
-wraith
-wrangle
-wrangled
-wrangler
-wrap
-wrap-up
-wraparound
-wrappage
-wrapped
-wrapper
-wrappers
-wrapping
-wrappings
-wrapt
-wrasse
-wrath
-wrathful
-wrathfully
-wreak
-wreaks
-wreath
-wreathe
-wreathed
-wreathes
-wreck
-wreckage
-wrecked
-wrecker
-wreckers
-wrecking
-wrecks
-wren
-wrench
-wrenched
-wrenches
-wrenching
-wrens
-wrest
-wrestle
-wrestler
-wrestles
-wrestling
-wrestlings
-wretch
-wretched
-wretchedly
-wretchedness
-wretches
-wrick
-wriggle
-wriggled
-wriggler
-wriggles
-wriggling
-wriggly
-wright
-Wrigley
-wring
-wringer
-wringing
-wrings
-wrinkle
-wrinkled
-wrinkles
-wrinkly
-wrist
-wrist-watch
-wristband
-wristlet
-wrists
-wristwatch
-wristwatches
-writ
-writable
-write
-write-in
-write-off
-write-to-operator
-write-up
-writer
-writers
-writes
-writhe
-writhed
-writhes
-writhing
-writing
-writing-desk
-writing-paper
-writings
-writs
-written
-Wroclaw
-wrong
-wrong-doer
-wrong-doing
-wrong-headed
-wrongdoer
-wrongdoing
-wronged
-wrongful
-wrongfully
-wrongfulness
-wrongheaded
-wrongheadedly
-wrongheadedness
-wronging
-wrongly
-wrongness
-wrongs
-Wronskian
-wrote
-wroth
-wrought
-wrought-iron
-wrought-up
-WRU
-wrung
-wry
-wry-mouthed
-wry-neck
-wryly
-wryness
-WSW
-Wu
-Wuhan
-wurst
-wuss
-wussy
-WV
-WW
-WWI
-WWII
-WWW
-WY
-Wyandotte
-Wyatt
-Wyeth
-Wylie
-Wyman
-wynd
-Wyner
-Wynn
-Wyo
-Wyoming
-Wyomingite
-WYSIWYG
-wyvern
-X
-X's
-x-axes
-x-axis
-x-decoder
-x-hair
-x-out
-x-punch
-x-ray
-xanthate
-xanthic
-xanthin
-xanthine
-xanthone
-xanthophyll
-xanthopterin
-xanthous
-Xanthus
-xanthydrol
-Xavier
-Xe
-Xebec
-Xenakis
-Xenia
-Xenix
-xenolith
-xenon
-xenophobe
-xenophobia
-xenophobic
-xerographic
-xerography
-xerox
-Xeroxed
-Xeroxes
-Xeroxing
-Xerxes
-Xhosa
-xi
-Xian
-XL
-Xmas
-XRL
-XXL
-xylem
-xylograph
-xylographer
-xylography
-xylonite
-xylophone
-xylophonist
-xylyl
-y'all
-y-axes
-y-axis
-Y-decoder
-Y-punch
-yacht
-yachting
-yachtsman
-yachtswoman
-yack
-yackety-yak
-Yagi
-yahoo
-Yahveh
-Yahweh
-yak
-Yakima
-Yale
-Yale-lock
-Yalies
-Yalta
-yam
-Yamaha
-yammer
-yammerer
-Yamoussoukro
-yang
-Yangon
-Yangtze
-yank
-yanked
-Yankee
-Yankees
-yanking
-yanks
-Yankton
-Yaounde
-yaourt
-yap
-Yaqui
-yard
-yard-measure
-yard-stick
-yardage
-yardarm
-yardman
-yardmaster
-yards
-yardstick
-yardsticks
-yarmelke
-Yarmouth
-yarmulke
-yarn
-yarns
-Yaroslavl
-yarrow
-Yates
-yatter
-Yaunde
-yaw
-yawl
-yawn
-yawner
-yawning
-yawny
-yaws
-Yb
-ye
-yea
-Yeager
-yeah
-yean
-yeanling
-year
-year-book
-year-long
-year-round
-yearbook
-yearling
-yearlong
-yearly
-yearn
-yearned
-yearning
-yearnings
-years
-yeas
-yeast
-yeasts
-yeasty
-Yeats
-yegg
-Yekaterinburg
-yelk
-yell
-yelled
-yeller
-yelling
-yellow
-yellow-bird
-yellow-hammer
-yellowback
-yellowed
-yellower
-yellowest
-yellowing
-yellowish
-Yellowknife
-yellowness
-yellows
-Yellowstone
-yellowy
-yelp
-yelped
-yelping
-yelps
-Yeltsin
-Yemen
-Yemeni
-Yemenite
-yen
-Yentl
-yeoman
-yeomanly
-yeomanry
-yeomen
-yep
-Yerevan
-Yerkes
-yes
-yes-man
-yeshiva
-yeshivah
-yeshivoth
-yesterday
-yesterdays
-yesterdays
-yesteryear
-yet
-yeti
-yew
-Yiddish
-yield
-yielded
-yielding
-yields
-yikes
-yin
-yip
-yipe
-yippee
-YMCA
-YMHA
-yo
-yo-yo
-yodel
-yodeler
-yodeller
-Yoder
-yoga
-yoghourt
-yoghurt
-yogi
-yogin
-yogurt
-yoke
-yokefellow
-yokel
-yokemate
-yokes
-Yoknapatawpha
-Yokohama
-Yokuts
-yolk
-yolked
-yon
-yonder
-Yonkers
-yoo-hoo
-yore
-Yorick
-York
-Yorker
-Yorkers
-Yorkshire
-Yorktown
-Yosemite
-Yost
-you
-you'd
-you'll
-you're
-you've
-young
-younger
-youngish
-youngling
-youngly
-youngster
-youngsters
-Youngstown
-younker
-your
-yours
-yourself
-yourselves
-youth
-youthes
-youthful
-youthfully
-youthfulness
-yowl
-Ypsilanti
-YT
-ytterbium
-yttrium
-yuan
-Yuba
-Yucatan
-yucca
-yuck
-yucky
-Yugoslav
-Yugoslavia
-Yugoslavian
-Yuh
-yuk
-Yuki
-Yukon
-yule
-yule-tide
-yum
-yummy
-yup
-yuppie
-yuppy
-Yuri
-yurt
-Yves
-Yvette
-YWCA
-YWHA
-Z's
-Zachary
-Zagreb
-Zaire
-Zairian
-Zambezi
-Zambia
-Zambian
-Zan
-zaniness
-zany
-Zanzibar
-zap
-zapper
-zapping
-zdarma
-zeal
-Zealand
-zealot
-zealotry
-zealous
-zealously
-zealousness
-zebra
-zebras
-zebu
-zed
-Zeffirelli
-Zeiss
-zeitgeist
-Zellerbach
-Zen
-zenith
-Zennist
-zephyr
-zero
-zero-address
-zero-sum
-zeroed
-zeroes
-zerofilling
-zeroing
-zeroize
-zeroizing
-zeros
-zeroth
-zest
-zestful
-zestfully
-zestfulness
-zesty
-zeta
-Zeus
-Zhdanov
-Zhengzhou
-Ziegfeld
-Ziegfelds
-Ziegler
-zig
-zig-zag
-Ziggy
-zigzag
-zilch
-zillion
-zillions
-Zimbabwe
-Zimbabwean
-Zimmerman
-zinc
-zincograph
-zincography
-zincotype
-zing
-zinger
-zingy
-zinnia
-Zion
-Zionism
-Zionist
-Zionists
-Zions
-zip
-zip-fastener
-zipper
-zippered
-zippy
-zircon
-zirconium
-zit
-zither
-zithern
-Zn
-zodiac
-zodiacal
-Zoe
-Zomba
-zombi
-zombie
-zonal
-zonally
-zone
-zone-setting
-zoned
-zones
-zoning
-zonked
-zoo
-zoological
-zoologically
-zoologist
-zoology
-zoom
-zoomer
-zooming
-zooms
-zoophyte
-zoophytic
-zoos
-zoot
-zoot-suiter
-zootechnicist
-zooter
-Zorn
-Zoroaster
-Zoroastrian
-Zoroastrianism
-zounds
-Zr
-Zs
-zucchini
-Zulu
-Zululand
-Zulus
-Zuni
-Zurich
-zwieback
-zydeco
-zygote
-zygotic
-zyme
-zymology
-zymotic
-zymurgy
-
-# common words in database names (the fact of specifying them more than once adds weight, each + also adds 1 weight point)
-
-sp
-+sel
-+upd
-+logo
-+sys
-++fk
-unit
-units
-date
-point
-+in
-+per
-stock
-linq
-id
-+int
+1st
+a
+A-1
+A-bomb
+A-OK
+A-Okay
+A.D.
+a.o.
+a/c
+A/P
+A/R
+A1
+AACR
+AALS
+abaci
+aback
+abacus
+abacuses
+abaft
+abalone
+abandon
+abandoned
+abandonee
+abandoner
+abandoning
+abandonment
+abase
+abased
+abasement
+abasements
+abases
+abash
+abashed
+abashedly
+abashes
+abashing
+abashment
+abate
+abatement
+abatements
+abater
+abates
+abating
+abatis
+abattis
+abattoir
+abbacy
+abbe
+abbess
+abbey
+abbeys
+abbot
+abbots
+Abbott
+abbreviate
+abbreviated
+abbreviates
+abbreviating
+abbreviation
+abbreviations
+Abby
+ABC
+ABC's
+ABCs
+Abdera
+abderite
+abdicate
+abdication
+abdomen
+abdomens
+abdominal
+abdominous
+abduct
+abducted
+abduction
+abductions
+abductor
+abductors
+abducts
+abeam
+abecedarian
+abed
+Abel
+Abelian
+Abelson
+Aberdeen
+Abernathy
+aberrant
+aberration
+aberrational
+aberrations
+abet
+abetment
+abets
+abetted
+abetter
+abetting
+abettor
+abeyance
+abhor
+abhorred
+abhorrence
+abhorrent
+abhorrently
+abhorrer
+abhorring
+abhors
+abidance
+abide
+abided
+abides
+abiding
+abidingly
+Abidjan
+Abigail
+Abilene
+abilities
+ability
+abject
+abjection
+abjections
+abjectly
+abjectness
+abjuration
+abjuratory
+abjure
+abjured
+abjurer
+abjures
+abjuring
+ablate
+ablated
+ablates
+ablating
+ablation
+ablative
+ablaze
+able
+able-bodied
+abler
+abloom
+ablution
+ablutions
+ably
+abnegate
+abnegated
+abnegation
+Abner
+abnormal
+abnormalities
+abnormality
+abnormally
+Abo
+aboard
+abode
+abolish
+abolished
+abolisher
+abolishers
+abolishes
+abolishing
+abolishment
+abolishments
+abolition
+abolitionism
+abolitionist
+abolitionists
+abominable
+abominably
+abominale
+abominate
+abomination
+abonent
+aboriginal
+aborigine
+aborigines
+aborning
+abort
+aborted
+aborting
+abortion
+abortionist
+abortions
+abortive
+abortively
+aborts
+Abos
+abound
+abounded
+abounding
+abounds
+about
+above
+above-board
+above-mentioned
+aboveboard
+aboveground
+abovementioned
+abracadabra
+abrade
+abraded
+abrades
+abrading
+Abraham
+Abram
+Abrams
+Abramson
+abrasion
+abrasions
+abrasive
+abrasively
+abrasiveness
+abreaction
+abreactions
+abreast
+abridge
+abridged
+abridgement
+abridges
+abridging
+abridgment
+abroad
+abrogate
+abrogated
+abrogates
+abrogating
+abrogation
+abrogator
+abrupt
+abruptly
+abruptness
+abscess
+abscessed
+abscesses
+abscissa
+abscissae
+abscissas
+abscission
+abscond
+absconded
+absconder
+absconding
+absconds
+absence
+absences
+absent
+absent-minded
+absent-mindedly
+absent-mindedness
+absented
+absentee
+absenteeism
+absentees
+absentia
+absenting
+absently
+absentminded
+absentmindedly
+absentmindedness
+absents
+absinth
+absinthe
+absolute
+absolutely
+absoluteness
+absolutes
+absolution
+absolutism
+absolutist
+absolve
+absolved
+absolves
+absolving
+absorb
+absorbed
+absorbency
+absorbent
+absorber
+absorbing
+absorbingly
+absorbs
+absorption
+absorptions
+absorptive
+abstain
+abstained
+abstainer
+abstaining
+abstains
+abstemious
+abstemiously
+abstemiousness
+abstention
+abstentions
+abstergent
+abstersion
+abstersive
+abstinence
+abstinent
+abstract
+abstracted
+abstractedly
+abstractedness
+abstracting
+abstraction
+abstractionism
+abstractionist
+abstractions
+abstractly
+abstractness
+abstractor
+abstractors
+abstracts
+abstruse
+abstrusely
+abstruseness
+absurd
+absurdities
+absurdity
+absurdly
+absurdness
+Abuja
+abundance
+abundant
+abundantly
+abuse
+abused
+abuser
+abuses
+abusing
+abusive
+abusively
+abusiveness
+abut
+abutment
+abuts
+abutted
+abutter
+abutters
+abutting
+abuzz
+abysm
+abysmal
+abysmally
+abyss
+abyssal
+abysses
+Abyssinia
+Abyssinian
+Abyssinians
+Ac
+AC/DC
+acacia
+academe
+academia
+academian
+academic
+academical
+academically
+academician
+academics
+academies
+academy
+Acadia
+acanthi
+acanthus
+Acapulco
+accede
+acceded
+accedes
+accelerant
+accelerate
+accelerated
+accelerates
+accelerating
+acceleration
+accelerations
+accelerator
+accelerators
+accelerometer
+accelerometers
+accent
+accented
+accenting
+accents
+accentual
+accentuate
+accentuated
+accentuates
+accentuating
+accentuation
+accept
+acceptability
+acceptable
+acceptableness
+acceptably
+acceptance
+acceptances
+acceptation
+accepted
+accepter
+accepters
+accepting
+acceptor
+acceptors
+accepts
+access
+accessary
+accessed
+accesses
+accessibility
+accessible
+accessibly
+accessing
+accession
+accessioning
+accessions
+accessories
+accessors
+accessory
+accidence
+accident
+accident-prone
+accidental
+accidentally
+accidently
+accidents
+acclaim
+acclaimed
+acclaiming
+acclaims
+acclamation
+acclimate
+acclimated
+acclimates
+acclimating
+acclimation
+acclimatization
+acclimatize
+acclimatized
+acclivity
+accolade
+accolades
+accommodate
+accommodated
+accommodates
+accommodating
+accommodatingly
+accommodation
+accommodations
+accompanied
+accompanies
+accompaniment
+accompaniments
+accompanist
+accompanists
+accompany
+accompanying
+accomplice
+accomplices
+accomplish
+accomplished
+accomplisher
+accomplishers
+accomplishes
+accomplishing
+accomplishment
+accomplishments
+accord
+accordance
+accordant
+accorded
+accorder
+accorders
+according
+accordingly
+accordion
+accordionist
+accordions
+accords
+accost
+accosted
+accosting
+accosts
+account
+accountability
+accountable
+accountably
+accountancy
+accountant
+accountants
+accounted
+accounting
+accounts
+accouter
+accouterments
+accoutre
+accoutred
+accoutrements
+Accra
+accredit
+accreditation
+accreditations
+accredited
+accretion
+accretions
+accrual
+accrue
+accrued
+accrues
+accruing
+acculturate
+acculturated
+acculturates
+acculturating
+acculturation
+accumulate
+accumulated
+accumulates
+accumulating
+accumulation
+accumulations
+accumulative
+accumulator
+accumulators
+accuracies
+accuracy
+accurate
+accurately
+accurateness
+accursed
+accursedness
+accurst
+accusal
+accusation
+accusations
+accusative
+accusatory
+accuse
+accused
+accuser
+accuses
+accusing
+accusingly
+accustom
+accustomed
+accustoming
+accustoms
+ace
+acerbate
+acerbic
+acerbically
+acerbity
+aces
+acetaminophen
+acetate
+acetic
+acetify
+acetone
+acetonic
+acetylene
+ACF
+Achaean
+Achaeans
+ache
+ached
+achene
+aches
+achievable
+achieve
+achieved
+achievement
+achievements
+achiever
+achievers
+achieves
+achieving
+Achilles
+aching
+achromatic
+achy
+acid
+acid-forming
+acid-proof
+acid-resisting
+acidic
+acidify
+acidities
+acidity
+acidly
+acidosis
+acids
+acidulated
+acidulous
+Ackerman
+Ackley
+acknowledge
+acknowledgeable
+acknowledged
+acknowledgement
+acknowledgements
+acknowledger
+acknowledgers
+acknowledges
+acknowledging
+acknowledgment
+acknowledgments
+ACL
+ACLU
+acme
+acne
+acolyte
+acolytes
+acoman
+Aconcagua
+aconite
+acorn
+acorns
+acoustic
+acoustical
+acoustically
+acoustician
+acoustics
+acquaint
+acquaintance
+acquaintances
+acquaintanceship
+acquainted
+acquainting
+acquaints
+acquiesce
+acquiesced
+acquiescence
+acquiescent
+acquiescently
+acquiesces
+acquiescing
+acquirable
+acquire
+acquired
+acquirement
+acquires
+acquiring
+acquiscence
+acquisition
+acquisitions
+acquisitive
+acquisitively
+acquisitiveness
+acquit
+acquits
+acquittal
+acquittance
+acquitted
+acquitter
+acquitting
+acre
+acreage
+acres
+acrid
+acridity
+acridly
+acridness
+acrimonious
+acrimoniously
+acrimoniousness
+acrimony
+acrobat
+acrobatic
+acrobatically
+acrobatics
+acrobats
+acronym
+acronyms
+acrophobia
+acropolis
+across
+acrostic
+acrylic
+act
+Acta
+Actaeon
+acted
+ACTH
+acting
+actinium
+actinometer
+actinometers
+action
+actionable
+actions
+activate
+activated
+activates
+activating
+activation
+activations
+activator
+activators
+active
+actively
+activeness
+activism
+activist
+activists
+activities
+activity
+Acton
+actor
+actors
+actress
+actresse
+actresses
+Acts
+actual
+actualities
+actuality
+actualization
+actualize
+actually
+actuals
+actuarial
+actuarially
+actuary
+actuate
+actuated
+actuates
+actuating
+actuation
+actuator
+actuators
+acuity
+acumen
+acupressure
+acupuncture
+acupuncturist
+acute
+acutely
+acuteness
+acyclic
+acyclically
+acyclovir
+AD
+ad-lib
+Ada
+adage
+adages
+adagio
+adagios
+Adair
+Adam
+adamant
+adamantly
+Adams
+Adamson
+adapt
+adaptability
+adaptable
+adaptation
+adaptations
+adapted
+adapter
+adapters
+adapting
+adaptive
+adaptively
+adaptor
+adaptors
+adapts
+ADC
+add
+add-on
+addable
+Addams
+added
+addend
+addenda
+addendum
+adder
+adders
+addible
+addict
+addicted
+addicting
+addiction
+addictions
+addictive
+addicts
+adding
+adding-machine
+Addis
+Addison
+addition
+additional
+additionally
+additions
+additive
+additives
+additivity
+addle
+addle-pate
+address
+addressability
+addressable
+addressed
+addressee
+addressees
+addresser
+addressers
+addresses
+addressing
+addressograph
+adds
+adduce
+adduced
+adduces
+adducible
+adducing
+adduct
+adducted
+adducting
+adduction
+adductor
+adducts
+Adelaide
+Adele
+Adelia
+Aden
+adenine
+adenoid
+adenoidal
+adenoids
+adept
+adeptly
+adeptness
+adequacies
+adequacy
+adequate
+adequately
+adequateness
+adhere
+adhered
+adherence
+adherent
+adherents
+adherer
+adherers
+adheres
+adhering
+adhesion
+adhesions
+adhesive
+adhesiveness
+adhesives
+adiabatic
+adiabatically
+adieu
+adieux
+adios
+adipose
+Adirondack
+Adirondacks
+ADIS
+adit
+adjacencies
+adjacency
+adjacent
+adjacently
+adjectival
+adjectivally
+adjective
+adjectives
+adjoin
+adjoined
+adjoining
+adjoins
+adjourn
+adjourned
+adjourning
+adjournment
+adjourns
+adjudge
+adjudged
+adjudges
+adjudging
+adjudicate
+adjudicated
+adjudicates
+adjudicating
+adjudication
+adjudications
+adjudicative
+adjudicator
+adjudicatory
+adjunct
+adjuncts
+adjuration
+adjure
+adjured
+adjures
+adjuring
+adjust
+adjustable
+adjustably
+adjusted
+adjuster
+adjusters
+adjusting
+adjustment
+adjustments
+adjustor
+adjustors
+adjusts
+adjutant
+adjutants
+Adkins
+Adler
+Adlerian
+adman
+admanmass
+admeasure
+admeasurement
+administer
+administered
+administering
+administerings
+administers
+administrable
+administrate
+administration
+administrations
+administrative
+administratively
+administrator
+administrators
+admirable
+admirably
+admiral
+admirals
+admiralty
+admiration
+admirations
+admire
+admired
+admirer
+admirers
+admires
+admiring
+admiringly
+admissibility
+admissible
+admissibly
+admission
+admissions
+admit
+admits
+admittance
+admitted
+admittedly
+admitter
+admitters
+admitting
+admix
+admixed
+admixes
+admixture
+admonish
+admonished
+admonishes
+admonishing
+admonishment
+admonishments
+admonition
+admonitions
+admonitory
+ado
+adobe
+adolescence
+adolescent
+adolescents
+Adolph
+Adolphus
+Adonis
+adopt
+adoptable
+adopted
+adopter
+adopters
+adopting
+adoption
+adoptions
+adoptive
+adopts
+adorable
+adorableness
+adorably
+adoration
+adore
+adored
+adorer
+adores
+adoring
+adoringly
+adorn
+adorned
+adornment
+adornments
+adorns
+ADP
+adrenal
+adrenalin
+adrenaline
+Adrian
+Adrianople
+Adriatic
+Adrienne
+adrift
+adroit
+adroitly
+adroitness
+ads
+adsorb
+adsorbed
+adsorbent
+adsorbing
+adsorbs
+adsorption
+adulate
+adulating
+adulation
+adulator
+adulatory
+adult
+adulterant
+adulterate
+adulterated
+adulterates
+adulterating
+adulteration
+adulterer
+adulterers
+adulteress
+adulterous
+adulterously
+adultery
+adulthood
+adults
+adumbrate
+adumbrated
+adumbrates
+adumbrating
+adumbration
+adust
+advance
+advanced
+advancement
+advancements
+advances
+advancing
+advantage
+advantaged
+advantageous
+advantageously
+advantages
+advent
+adventist
+adventists
+adventitious
+adventitiously
+adventure
+adventured
+adventurer
+adventurers
+adventures
+adventuresome
+adventuress
+adventuring
+adventurous
+adventurously
+adventurousness
+adverb
+adverbial
+adverbially
+adverbs
+adversarial
+adversaries
+adversary
+adversative
+adverse
+adversely
+adverseness
+adversities
+adversity
+advert
+advertise
+advertised
+advertisement
+advertisements
+advertiser
+advertisers
+advertises
+advertising
+advertisment
+advertize
+advertizement
+advertorial
+advice
+advisability
+advisable
+advisably
+advise
+advised
+advisedly
+advisee
+advisees
+advisement
+advisements
+adviser
+advisers
+advises
+advising
+advisor
+advisors
+advisory
+advocacy
+advocate
+advocated
+advocates
+advocating
+adz
+adze
+Aegean
+aegis
+Aeneas
+Aeneid
+Aeolus
+aeon
+aerate
+aerated
+aerates
+aerating
+aeration
+aerator
+aerators
+aerial
+aerialist
+aerially
+aerials
+aerie
+aero
+aeroacoustic
+Aerobacter
+aerobatics
+aerobe
+aerobic
+aerobically
+aerobics
+aerodrome
+aerodynamic
+aerodynamically
+aerodynamics
+aerolite
+aerolith
+aeronaut
+aeronautic
+aeronautical
+aeronautics
+aerophotography
+aeroplane
+aerosol
+aerosolize
+aerosols
+aerospace
+aery
+Aeschylus
+Aesop
+aesthete
+aesthetic
+aesthetical
+aesthetically
+aestheticism
+aesthetics
+aetiology
+AF
+afar
+AFB
+AFC
+AFDC
+affability
+affable
+affably
+affair
+affairs
+affarent
+affect
+affectation
+affectations
+affected
+affectedly
+affecting
+affectingly
+affection
+affectionate
+affectionately
+affections
+affective
+affects
+afferent
+affiance
+affianced
+affidavit
+affidavits
+affiliate
+affiliated
+affiliates
+affiliating
+affiliation
+affiliations
+affinities
+affinity
+affirm
+affirmation
+affirmations
+affirmative
+affirmatively
+affirmed
+affirming
+affirms
+affix
+affixation
+affixed
+affixes
+affixing
+afflatus
+afflict
+afflicted
+afflicting
+affliction
+afflictions
+afflictive
+afflicts
+affluence
+affluent
+affluently
+afflux
+afford
+affordable
+afforded
+affording
+affords
+afforest
+afforestation
+affranchise
+affray
+affricate
+affricates
+affright
+affront
+affronted
+affronting
+affronts
+Afghan
+Afghanistan
+Afghans
+aficionado
+afield
+afire
+aflame
+afloat
+aflutter
+afoot
+afore
+aforementioned
+aforesaid
+aforethought
+afoul
+afraid
+afresh
+Africa
+African
+Africanization
+Africanizations
+Africanize
+Africanized
+Africanizes
+Africanizing
+Africans
+Afrikaans
+Afrikaner
+Afrikaners
+Afro
+Afro-American
+Afrocentric
+Afrocentrism
+aft
+after
+after-image
+afterall
+afterbirth
+afterburner
+aftercare
+afterdamp
+aftereffect
+afterglow
+afterimage
+afterlife
+afterlives
+aftermath
+aftermost
+afternoon
+afternoons
+aftershave
+aftershock
+aftershocks
+aftertaste
+afterthought
+afterthoughts
+afterward
+afterwards
+afterword
+ag
+again
+against
+Agamemnon
+agape
+agar
+agate
+agates
+Agatha
+agave
+age
+age-band
+age-old
+aged
+Agee
+ageing
+ageism
+ageist
+ageless
+agelessly
+agelessness
+agencies
+agency
+agenda
+agendas
+agent
+agents
+ager
+ageratum
+agers
+ages
+Aggie
+Aggies
+agglomerate
+agglomerated
+agglomerates
+agglomeration
+agglutinade
+agglutinate
+agglutinated
+agglutinates
+agglutinating
+agglutination
+agglutinative
+agglutinin
+agglutinins
+aggrandize
+aggrandizement
+aggravate
+aggravated
+aggravates
+aggravating
+aggravatingly
+aggravation
+aggregate
+aggregated
+aggregately
+aggregates
+aggregating
+aggregation
+aggregations
+aggression
+aggressions
+aggressive
+aggressively
+aggressiveness
+aggressor
+aggressors
+aggrieve
+aggrieved
+aggrieves
+aggrieving
+aghast
+agile
+agilely
+agility
+aging
+agio
+agiotage
+agitate
+agitated
+agitates
+agitating
+agitation
+agitations
+agitator
+agitators
+agitprop
+agitpropist
+agleam
+aglitter
+aglow
+agnail
+agnate
+Agnes
+Agnew
+agnostic
+agnosticism
+agnostics
+ago
+agog
+agonies
+agonize
+agonized
+agonizes
+agonizing
+agonizingly
+agony
+agoraphobia
+agoraphobic
+Agra
+agrarian
+agrarianism
+agree
+agreeable
+agreeableness
+agreeably
+agreed
+agreeing
+agreement
+agreements
+agreer
+agreers
+agrees
+agribusiness
+Agricola
+agricultural
+agriculturalist
+agriculturally
+agriculture
+agriculturist
+AGRIS
+agronomic
+agronomical
+agronomist
+agronomy
+aground
+AGSI
+Aguascalientes
+ague
+aguish
+Agway
+ah
+aha
+ahead
+ahem
+Ahmadabad
+Ahmedabad
+ahoy
+AI
+aid
+aid-de-camp
+Aida
+aide
+aide-de-camp
+aided
+Aides
+aides-de-camp
+aiding
+aids-de-camp
+aigrette
+Aiken
+ail
+Aileen
+aileron
+ailerons
+ailing
+ailment
+ailments
+aim
+aimed
+aimer
+aimers
+aiming
+aimless
+aimlessly
+aimlessness
+aims
+ain't
+Ainu
+Ainus
+aipsh
+air
+air-condition
+air-conditioned
+air-conditioner
+air-conditioning
+air-cooled
+air-cushion
+air-fighter
+air-jacket
+air-line
+air-liner
+air-pump
+air-raid
+air-shaft
+air-space
+air-ticket
+air-to-air
+air-trap
+airbag
+airbags
+airbase
+airbed
+airborne
+airbrush
+Airbus
+aircraft
+aircraft-carrier
+airdrome
+airdrop
+airdrops
+aired
+Airedale
+airer
+airers
+Aires
+airfare
+airfield
+airfields
+airflow
+airfoil
+airfoils
+airframe
+airframes
+airfreight
+airhead
+airily
+airiness
+airing
+airings
+airless
+airlessness
+airlift
+airlifts
+airline
+airliner
+airlines
+airlock
+airlocks
+airmail
+airmails
+airman
+airmen
+airplane
+airplanes
+airplay
+airport
+airports
+airproof
+airs
+airship
+airships
+airsick
+airsickness
+airspace
+airspeed
+airstrike
+airstrip
+airstrips
+airtight
+airwaves
+airway
+airways
+airworthiness
+airworthy
+airy
+aisle
+aitch
+Aitken
+ajar
+AK
+Akers
+akimbo
+akin
+Akron
+Ala
+Alabama
+Alabaman
+Alabamans
+Alabamian
+alabaster
+alack
+alacrity
+Aladdin
+Alameda
+Alamo
+Alamos
+Alan
+Alar
+alarm
+alarm-clock
+alarmed
+alarming
+alarmingly
+alarmism
+alarmist
+alarms
+alas
+Alaska
+Alaskan
+Alastair
+alb
+alba
+albacore
+Albania
+Albanian
+Albanians
+Albany
+albatross
+albeit
+Alberich
+Albert
+Alberta
+Albertan
+Alberto
+albertype
+albinism
+albino
+Albion
+Albrecht
+Albright
+album
+albumen
+albumin
+albuminous
+albums
+Albuquerque
+Alcatraz
+Alcestis
+alchemist
+alchemy
+Alcibiades
+Alcmena
+Alcoa
+alcohol
+alcoholic
+alcoholically
+alcoholics
+alcoholism
+alcohols
+Alcott
+alcove
+alcoves
+alcuprint
+Aldebaran
+aldehyde
+Alden
+alder
+alderman
+aldermen
+alderwoman
+aldine
+Aldrich
+ale
+ale-house
+aleatory
+Alec
+Aleck
+alee
+alehouse
+alembic
+Aleppo
+alert
+alerted
+alertedly
+alerter
+alerters
+alerting
+alertly
+alertness
+alerts
+Aleut
+Aleutian
+Aleutians
+alewife
+alewives
+Alexander
+Alexandra
+Alexandre
+Alexandria
+Alexandrian
+Alexandrine
+Alexei
+Alexis
+Alfa
+alfalfa
+Alfonso
+Alfred
+Alfredo
+alfresco
+alga
+algae
+algaecide
+algal
+algebra
+algebraic
+algebraical
+algebraically
+algebras
+Algenib
+Alger
+Algeria
+Algerian
+Algiers
+alginate
+ALGOL
+Algonquian
+Algonquin
+algorithm
+algorithmic
+algorithmically
+algorithms
+algraphy
+Alhambra
+alias
+aliased
+aliases
+aliasing
+alibi
+alibis
+Alice
+Alicia
+alien
+alienable
+alienage
+alienate
+alienated
+alienates
+alienating
+alienation
+alienist
+aliens
+alight
+alighting
+align
+aligned
+aligner
+aligning
+alignment
+alignments
+aligns
+alike
+aliment
+alimentary
+alimentation
+aliments
+alimony
+aline
+alinement
+aliquot
+Alison
+Alistair
+alit
+alive
+aliveness
+aliyah
+alkali
+alkali-proof
+alkaline
+alkalinity
+alkalis
+alkalize
+alkaloid
+alkaloids
+alkyd
+alkyl
+all
+all-American
+all-around
+all-clear
+all-day
+all-fired
+all-important
+all-inclusive
+all-nighter
+all-out
+all-purpose
+all-round
+all-star
+all-time
+Allah
+allay
+allayed
+allaying
+allays
+allegation
+allegations
+allege
+alleged
+allegedly
+alleges
+Alleghenies
+Allegheny
+allegiance
+allegiances
+alleging
+allegoric
+allegorical
+allegorically
+allegories
+allegorist
+allegory
+Allegra
+allegretto
+allegrettos
+allegro
+allele
+alleles
+alleluia
+alleluiah
+allemande
+Allen
+Allendale
+Allentown
+allergen
+allergenic
+allergic
+allergically
+allergies
+allergist
+allergy
+alleviate
+alleviated
+alleviates
+alleviating
+alleviation
+alley
+alley-oop
+alleys
+alleyway
+alleyways
+Allhallows
+alliance
+alliances
+allied
+allies
+alligator
+alligators
+Allis
+Allison
+alliterate
+alliteration
+alliterations
+alliterative
+alliteratively
+allmanac
+allocatable
+allocate
+allocated
+allocates
+allocating
+allocation
+allocations
+allocator
+allocators
+allocution
+allodial
+allodium
+allonge
+allonym
+allophone
+allophones
+allophonic
+allot
+allotment
+allotments
+allots
+allotted
+allotter
+allotting
+allover
+allow
+allowable
+allowably
+allowance
+allowances
+allowed
+allowing
+allows
+alloy
+alloys
+allspice
+Allstate
+allude
+alluded
+alludes
+alluding
+allure
+allurement
+alluring
+alluringly
+allusion
+allusions
+allusive
+allusively
+allusiveness
+alluvia
+alluvial
+alluvium
+alluvium(s)
+ally
+allying
+Allyn
+alma
+Alma-Ata
+Almaden
+almanac
+almanacs
+almighty
+almond
+almond-tree
+almonds
+almoner
+almost
+alms
+alms-giving
+alms-house
+almshouse
+almsman
+almsman-folk
+alnico
+aloe
+aloes
+aloft
+aloha
+alone
+aloneness
+along
+alongshore
+alongside
+aloof
+aloofly
+aloofness
+aloud
+alp
+alpaca
+Alpert
+alpha
+alphabet
+alphabetic
+alphabetical
+alphabetically
+alphabetics
+alphabetization
+alphabetize
+alphabetized
+alphabetizer
+alphabetizes
+alphabetizing
+alphabets
+alphanumeric
+alphanumerical
+alphanumerically
+Alpheratz
+Alphonse
+alpine
+Alpinism
+Alpinist
+Alps
+already
+alright
+ALS
+Alsace-Lorraine
+Alsatia
+Alsatian
+Alsatians
+also
+also-ran
+Alsop
+Altair
+altar
+altar-piece
+altarpiece
+altars
+alte
+alter
+alterable
+alteration
+alterations
+altercate
+altercation
+altercations
+altered
+alterer
+alterers
+altering
+alternate
+alternated
+alternately
+alternates
+alternating
+alternation
+alternations
+alternative
+alternatively
+alternatives
+alternator
+alternators
+alters
+Althaea
+altho
+although
+altimeter
+altitude
+altitudes
+alto
+altogether
+Alton
+Altos
+altruism
+altruist
+altruistic
+altruistically
+alum
+alumina
+aluminium
+aluminography
+aluminum
+alumna
+alumnae
+alumni
+alumnus
+alundum
+Alva
+Alvarez
+alveolar
+alveoli
+alveolus
+Alvin
+always
+Alyssa
+AM
+Amadeus
+amain
+amalgam
+amalgamate
+amalgamated
+amalgamates
+amalgamating
+amalgamation
+amalgams
+Amanda
+amanuenses
+amanuensis
+amaranth
+amaretto
+Amarillo
+amaryllis
+amass
+amassed
+amasses
+amassing
+amateur
+amateurish
+amateurishly
+amateurishness
+amateurism
+amateurs
+amatol
+amatory
+amaze
+amazed
+amazedly
+amazement
+amazer
+amazers
+amazes
+amazing
+amazingly
+Amazon
+Amazons
+ambassador
+ambassadorial
+ambassadors
+ambassadorship
+ambassadress
+amber
+ambergris
+ambiance
+ambidexterity
+ambidextrous
+ambidextrously
+ambience
+ambient
+ambiguities
+ambiguity
+ambiguous
+ambiguously
+ambition
+ambitions
+ambitious
+ambitiously
+ambitiousness
+ambivalence
+ambivalent
+ambivalently
+amble
+ambled
+ambler
+ambles
+ambling
+ambrosia
+ambrosial
+ambrotyphy
+ambulance
+ambulances
+ambulant
+ambulate
+ambulation
+ambulatory
+ambuscade
+ambush
+ambushed
+ambushes
+Amdahl
+AME
+ameba
+amebae
+amebic
+ameboid
+ameer
+Amelia
+ameliorate
+ameliorated
+ameliorating
+amelioration
+ameliorative
+amen
+amenability
+amenable
+amenably
+amend
+amendable
+amended
+amender
+amending
+amendment
+amendments
+amends
+amenities
+amenity
+amenorrhea
+Amer
+Amerada
+Amerasian
+amerce
+amercement
+America
+American
+Americana
+Americanism
+Americanization
+Americanizations
+Americanize
+Americanizer
+Americanizers
+Americanizes
+Americans
+Americas
+americium
+Amerind
+Amerindian
+Ames
+amethyst
+AMFIS
+Amharic
+Amherst
+amiability
+amiable
+amiably
+amicability
+amicable
+amicableness
+amicably
+amid
+amide
+amidships
+amidst
+Amiga
+amigo
+amino
+amir
+Amish
+amiss
+amity
+Amman
+Ammerman
+ammeter
+ammo
+ammonia
+ammoniac
+ammoniacal
+ammonium
+ammunition
+amnesia
+amnesiac
+amnesic
+amnesty
+amnia
+amniocenteses
+amniocentesis
+amnion
+amniotic
+Amoco
+amoeba
+amoebae
+amoebas
+amoebic
+amok
+among
+amongst
+amoral
+amorality
+amorally
+amorist
+amorous
+amorously
+amorousness
+amorphous
+amorphously
+amorphousness
+amortizable
+amortization
+amortize
+amortized
+amortizes
+amortizing
+Amos
+amount
+amounted
+amounter
+amounters
+amounting
+amounts
+amour
+amour-propre
+amp
+amperage
+ampere
+amperes
+ampersand
+ampersands
+Ampex
+amphetamine
+amphetamines
+amphibian
+amphibians
+amphibious
+amphibiously
+amphiboles
+amphibology
+amphitheater
+amphitheaters
+amphitheatre
+amphora
+amphorae
+ample
+amplification
+amplified
+amplifier
+amplifiers
+amplifies
+amplify
+amplifying
+amplitude
+amplitudes
+amply
+ampoule
+ampoules
+ampul
+ampule
+amputate
+amputated
+amputates
+amputating
+amputation
+amputee
+Amsterdam
+Amtrak
+amuck
+amulet
+amulets
+Amundsen
+amuse
+amused
+amusedly
+amusement
+amusements
+amuser
+amusers
+amuses
+amusing
+amusingly
+Amy
+amygdalic
+amyl
+amylaceous
+amylaceousoid
+amylase
+an
+Anabaptist
+Anabaptists
+Anabel
+anabolism
+anachronism
+anachronisms
+anachronistic
+anachronistically
+anacolutha
+anacoluthon
+anaconda
+anacondas
+Anacreon
+anaemia
+anaemic
+anaerobe
+anaerobic
+anaerobically
+anaesthesia
+anaesthetic
+anaesthetist
+anaesthetize
+anagram
+anagrams
+Anaheim
+anal
+analecta
+Analects
+analet
+analgesia
+analgesic
+analgetic
+anally
+analog
+analogical
+analogically
+analogies
+analogize
+analogon
+analogous
+analogously
+analogousness
+analogue
+analogues
+analogy
+analysand
+analyse
+analyses
+analysis
+analyst
+analysts
+analytic
+analytical
+analytically
+analyticities
+analyticity
+analyzable
+analyze
+analyzed
+analyzer
+analyzers
+analyzes
+analyzing
+anamneses
+anamnesis
+ananym
+anapaest
+anapest
+anapestic
+anaphora
+anaphoric
+anaphorically
+anaplasmosis
+anarchic
+anarchical
+anarchically
+anarchism
+anarchist
+anarchistic
+anarchists
+anarchy
+Anastasia
+anastomoses
+anastomosis
+anastomotic
+anathema
+anathematize
+Anatole
+Anatolia
+Anatolian
+anatomic
+anatomical
+anatomically
+anatomist
+anatomize
+anatomy
+ancestor
+ancestors
+ancestral
+ancestrally
+ancestress
+ancestry
+anchor
+anchorage
+anchorages
+anchored
+anchoress
+anchoret
+anchoring
+anchorite
+anchoritism
+anchorman
+anchorperson
+anchors
+anchorwoman
+anchovies
+anchovy
+ancient
+anciently
+ancientness
+ancients
+ancillary
+ancress
+and
+and/or
+Andalusia
+Andalusian
+Andalusians
+andante
+Andean
+anders
+Andersen
+Anderson
+Andes
+anding
+andiron
+Andorra
+Andover
+Andre
+Andrea
+Andrei
+Andrew
+Andrews
+androgen
+androgenic
+androgynous
+androgyny
+android
+Andromache
+Andromeda
+Andy
+anecdotal
+anecdote
+anecdotes
+anecdotic
+anechoic
+anemia
+anemic
+anemically
+anemometer
+anemometers
+anemometry
+anemone
+anent
+anepigraphon
+aneroid
+anesthesia
+anesthesiologist
+anesthesiology
+anesthetic
+anesthetically
+anesthetics
+anesthetist
+anesthetization
+anesthetize
+anesthetized
+anesthetizes
+anesthetizing
+aneurism
+aneurysm
+anew
+angel
+Angela
+Angeleno
+Angelenos
+Angeles
+angelfish
+angelic
+angelical
+angelically
+Angelina
+Angeline
+Angelo
+angels
+anger
+angered
+angering
+angers
+Angie
+angina
+angiography
+angioplasty
+angiosperm
+angle
+angled
+angler
+anglers
+Angles
+Anglesea
+Anglesey
+angleworm
+Anglia
+Anglian
+Anglican
+Anglicanism
+Anglicanize
+Anglicanizes
+Anglicans
+Anglicism
+Anglicist
+Anglicization
+angling
+Anglistics
+Anglo
+Anglo-American
+Anglo-French
+Anglo-Saxon
+Anglophil
+Anglophile
+Anglophilia
+Anglophobe
+Anglophobia
+Angola
+Angolan
+angrier
+angrily
+angry
+angst
+angstrom
+anguish
+anguished
+angular
+angularity
+angularly
+Angus
+Anheuser
+anhtrax
+anhydrous
+anhydrously
+aniline
+animadversion
+animadvert
+animal
+animalcule
+animals
+animate
+animated
+animatedly
+animately
+animateness
+animates
+animating
+animation
+animations
+animator
+animators
+animism
+animist
+animistic
+animized
+animosity
+animus
+anion
+anionic
+anions
+anise
+aniseed
+aniseikonic
+anisette
+anisotropic
+anisotropy
+Anita
+Ankara
+ankh
+ankle
+anklebone
+ankles
+anklet
+Ann
+Anna
+annal
+Annalistic
+annals
+Annapolis
+Anne
+anneal
+annelid
+Annette
+annex
+annexation
+annexe
+annexed
+annexes
+annexing
+Annie
+annihilate
+annihilated
+annihilates
+annihilating
+annihilation
+annihilator
+anniversaries
+anniversary
+annotate
+annotated
+annotates
+annotating
+annotation
+annotations
+annotative
+annotator
+announce
+announced
+announcement
+announcements
+announcer
+announcers
+announces
+announcing
+annoy
+annoyance
+annoyances
+annoyed
+annoyer
+annoyers
+annoying
+annoyingly
+annoys
+annual
+annually
+annuals
+annuitant
+annuity
+annul
+annular
+annuli
+annulled
+annulling
+annulment
+annulments
+annuls
+annulus
+annum
+annunciate
+annunciated
+annunciates
+annunciating
+annunciation
+annunciator
+annunciators
+anode
+anodes
+anodic
+anodize
+anodized
+anodizes
+anodyne
+anoint
+anointed
+anointing
+anointment
+anoints
+anomalies
+anomalous
+anomalously
+anomaly
+anomic
+anomie
+anon
+anonym
+anonymity
+anonymous
+anonymously
+anopheles
+anorak
+anorectic
+anorexia
+anorexic
+another
+Anselm
+Anselmo
+anserine
+ANSI
+answer
+answerable
+answered
+answerer
+answerers
+answering
+answers
+ant
+ant-hill
+antacid
+Antaeus
+antagonism
+antagonisms
+antagonist
+antagonistic
+antagonistically
+antagonists
+antagonize
+antagonized
+antagonizes
+antagonizing
+Antananarivo
+antarctic
+Antarctica
+Antares
+ante
+ante-room
+anteater
+anteaters
+antebellum
+antecedence
+antecedent
+antecedents
+antechamber
+antedate
+antedated
+antediluvian
+antelope
+antelopes
+antenatal
+antenna
+antennae
+antennas
+anterior
+anteroom
+anthelmintic
+anthem
+anthems
+anther
+anthill
+anthologies
+anthologist
+anthologize
+anthology
+Anthony
+anthracite
+anthrax
+anthropocentric
+anthropoid
+anthropological
+anthropologically
+anthropologist
+anthropologists
+anthropology
+anthropomorphic
+anthropomorphically
+anthropomorphism
+anthropomorphous
+anti
+anti-aircraft
+anti-American
+anti-Catholic
+anti-clockwise
+anti-fascist
+anti-imperialism
+anti-imperialist
+anti-imperialistic
+anti-intellectual
+anti-Semite
+anti-Semitic
+anti-Semitically
+anti-Semitism
+anti-social
+antiabortion
+antiabortionist
+antiaircraft
+antibacterial
+antibiotic
+antibiotics
+antibodies
+antibody
+antic
+anticancer
+antichrist
+anticipate
+anticipated
+anticipates
+anticipating
+anticipation
+anticipations
+anticipatory
+anticlerical
+anticlimactic
+anticlimactically
+anticlimax
+anticline
+anticlockwise
+anticoagulant
+anticoagulation
+anticommunism
+anticommunist
+anticompetitive
+anticorrosive
+antics
+anticyclone
+anticyclonic
+antidemocratic
+antidepressant
+antidisestablishmentarianism
+antidote
+antidotes
+Antietam
+antifascist
+antiformant
+antifreeze
+antifundamentalist
+antigen
+antigenic
+antigenicity
+antigens
+Antigone
+antiguities
+antihero
+antihistamine
+antihistorical
+antiknock
+antilabor
+Antillean
+Antilles
+antilogarithm
+antimacassar
+antimalarial
+antimatter
+antimicrobial
+antimissile
+antimony
+antinomian
+antinomy
+antinuclear
+Antioch
+ANTIOPE
+antioxidant
+antiparticle
+antipasti
+antipasto
+antipathetic
+antipathy
+antipersonnel
+antiperspirant
+antiphon
+antiphonal
+antiphonally
+antiphonary
+antipodal
+antipode
+antipodean
+antipodes
+antipollution
+antipoverty
+antipyretic
+antiquarian
+antiquarianism
+antiquarians
+antiquary
+antiquate
+antiquated
+antique
+antiques
+antiquities
+antiquity
+antiredeposition
+antiresonance
+antiresonator
+antisemitic
+antisemitism
+antisepsis
+antiseptic
+antiseptically
+antisera
+antiserum
+antislavery
+antisocial
+antisocially
+antispasmodic
+antisubmarine
+antisymmetric
+antisymmetry
+antitank
+antitheses
+antithesis
+antithetic
+antithetical
+antithetically
+antithyroid
+antitoxin
+antitoxins
+antitrust
+antiunion
+antivenin
+antiviral
+antivivisectionist
+antiwar
+antler
+antlered
+antlers
+Antoine
+Antoinette
+Anton
+Antonio
+Antonovics
+Antony
+antonym
+antonymous
+ants
+antsy
+Antwerp
+anus
+anvil
+anvils
+anxieties
+anxiety
+anxious
+anxiously
+anxiousness
+any
+any-copy
+anybody
+anyhow
+anymore
+anyone
+anyplace
+anything
+anytime
+anyway
+anywhere
+anywise
+aorta
+aortae
+aortic
+AP
+apace
+Apache
+Apaches
+Apalachicola
+apanage
+apart
+apartheid
+apartment
+apartments
+apathetic
+apathetically
+apathy
+apatite
+APB
+ape
+aped
+apelike
+Apennines
+aperiodic
+aperiodicity
+aperitif
+apertitif
+aperture
+apes
+Apetalous
+apex
+apexes
+aphasia
+aphasic
+aphelia
+aphelion
+aphid
+aphides
+aphids
+aphis
+aphonic
+aphorism
+aphorisms
+aphoristic
+aphoristically
+aphrodisiac
+Aphrodite
+Apia
+apiaries
+apiarist
+apiary
+apical
+apically
+apices
+apicultural
+apiculture
+apiece
+aping
+apish
+apishly
+APL
+aplenty
+aplomb
+APO
+apocalypse
+apocalyptic
+apocryph
+apocrypha
+apocryphal
+apocryphally
+apodoses
+apodosis
+apogee
+apogees
+apograph
+apolitical
+apolitically
+Apollinaire
+Apollo
+Apollonian
+apologetic
+apologetically
+apologia
+apologies
+apologist
+apologists
+apologize
+apologized
+apologizes
+apologizing
+apology
+apoplectic
+apoplexy
+apostasy
+apostate
+apostatize
+apostle
+apostles
+apostleship
+apostolic
+apostrophe
+apostrophes
+apostrophize
+apothecary
+apothegm
+apotheoses
+apotheosis
+APP
+appal
+Appalachia
+Appalachian
+Appalachians
+appall
+appalled
+appalling
+appallingly
+Appaloosas
+appanage
+apparatus
+apparatuses
+apparel
+appareled
+apparent
+apparently
+apparition
+apparitions
+appeal
+appealed
+appealer
+appealers
+appealing
+appealingly
+appeals
+appear
+appearance
+appearances
+appeared
+appearence
+appearer
+appearers
+appearing
+appears
+appease
+appeased
+appeasement
+appeaser
+appeases
+appeasing
+appelation
+appelative
+appellant
+appellants
+appellate
+appellation
+append
+appendage
+appendages
+appendectomy
+appended
+appender
+appenders
+appendices
+appendicitis
+appending
+appendix
+appendixes
+appends
+appertain
+appertains
+appetite
+appetites
+appetizer
+appetizing
+appetizingly
+Appia
+Appian
+applaud
+applauded
+applauder
+applauding
+applauds
+applause
+apple
+apple-pie
+apple-sauce
+apple-tree
+Appleby
+applejack
+apples
+applesauce
+applet
+Appleton
+appliance
+appliances
+applicability
+applicable
+applicably
+applicant
+applicants
+application
+applications
+applicative
+applicatively
+applicator
+applicators
+applied
+applier
+appliers
+applies
+applique
+apply
+applying
+appoint
+appointed
+appointee
+appointees
+appointer
+appointers
+appointing
+appointive
+appointment
+appointments
+appoints
+Appomattox
+apportion
+apportioned
+apportioning
+apportionment
+apportionments
+apportions
+appose
+apposite
+appositely
+appositeness
+apposition
+appositive
+appraisal
+appraisals
+appraise
+appraised
+appraisement
+appraiser
+appraisers
+appraises
+appraising
+appraisingly
+appreciable
+appreciably
+appreciate
+appreciated
+appreciates
+appreciating
+appreciation
+appreciations
+appreciative
+appreciatively
+appreciator
+appreciatory
+apprehend
+apprehended
+apprehensible
+apprehension
+apprehensions
+apprehensive
+apprehensively
+apprehensiveness
+apprentice
+apprenticed
+apprentices
+apprenticeship
+apprise
+apprised
+apprises
+apprising
+apprize
+approach
+approachability
+approachable
+approached
+approacher
+approachers
+approaches
+approaching
+approbate
+approbation
+appropriate
+appropriated
+appropriately
+appropriateness
+appropriates
+appropriating
+appropriation
+appropriations
+appropriator
+appropriators
+approval
+approvals
+approve
+approved
+approver
+approvers
+approves
+approving
+approvingly
+approximate
+approximated
+approximately
+approximates
+approximating
+approximation
+approximations
+approximative
+appurtenance
+appurtenances
+appurtenant
+apricot
+apricots
+April
+Aprils
+apron
+aprons
+apropos
+apse
+apsis
+apt
+aptitude
+aptitudes
+aptly
+aptness
+Apulia
+aqua
+aquaculture
+aqualung
+aquamarine
+aquanaut
+aquaplane
+aquarelle
+aquaria
+aquarium
+Aquarius
+aquatic
+aquatically
+aquatics
+aquatint
+aquatone
+aquavit
+aqueduct
+aqueducts
+aqueous
+aquiculture
+aquifer
+aquifers
+Aquila
+aquiline
+Aquinas
+Arab
+arabesque
+arabia
+Arabian
+Arabianize
+Arabianizes
+Arabians
+Arabic
+Arabicize
+Arabicizes
+arability
+Arabist
+arable
+Arabs
+Araby
+arachnid
+arachnids
+Aramaic
+Aramco
+Arapaho
+Arapahoe
+Ararat
+arbiter
+arbiters
+arbitrage
+arbitrager
+arbitrageur
+arbitral
+arbitrament
+arbitrarily
+arbitrariness
+arbitrary
+arbitrate
+arbitrated
+arbitrates
+arbitrating
+arbitration
+arbitrator
+arbitrators
+arbor
+arboreal
+arboreous
+arborescent
+arboreta
+arboretum
+arboriculture
+arbors
+arborvitae
+arbour
+arbutus
+arc
+arc-lamp
+arc-light
+arcade
+arcaded
+arcades
+Arcadia
+Arcadian
+arcana
+arcane
+arcanum
+arced
+arch
+archaeological
+archaeologically
+archaeologist
+archaeology
+archaic
+archaically
+archaicness
+archaism
+archaist
+archaistic
+archaize
+archangel
+archangels
+archbishop
+archbishopric
+archdeacon
+archdiocesan
+archdiocese
+archdioceses
+archduchess
+archduchy
+archduke
+arched
+archenemy
+archeological
+archeologist
+archeology
+archer
+archers
+archery
+arches
+archetypal
+archetype
+archetypical
+archfiend
+archfool
+Archibald
+Archie
+archiepiscopal
+Archimedes
+arching
+archipelago
+archipelagoes
+architect
+architectonic
+architectonics
+architects
+architectural
+architecturally
+architecture
+architectures
+architrave
+archival
+archive
+archived
+archiver
+archivers
+archives
+archiving
+archivist
+archly
+archness
+archway
+arcing
+arclike
+ARCO
+arcs
+arcsine
+arctangent
+arctic
+Arcturus
+Ardabil
+Ardebil
+Arden
+ardency
+ardent
+ardently
+ardor
+ardour
+arduous
+arduously
+arduousness
+are
+area
+areal
+areas
+aren't
+arena
+arenaceous
+arenas
+areola
+Arequipa
+Ares
+argent
+Argentina
+Argentine
+Argentinean
+Argentinian
+argentotypy
+Argive
+Argo
+argon
+argonaut
+Argonauts
+Argonne
+Argos
+argosy
+argot
+arguable
+arguably
+argue
+argued
+arguer
+arguers
+argues
+arguing
+argument
+argumentation
+argumentative
+argumentatively
+argumentativeness
+arguments
+Argus
+argyle
+aria
+Ariadne
+Arianism
+Arianist
+Arianists
+arid
+aridity
+aridly
+Aries
+aright
+arise
+arisen
+ariser
+arises
+arising
+arisings
+aristocracy
+aristocrat
+aristocratic
+aristocratically
+aristocrats
+Aristophanes
+Aristotelian
+Aristotle
+arithmetic
+arithmetical
+arithmetically
+arithmetician
+arithmetics
+arithmetize
+arithmetized
+arithmetizes
+Ariz
+Arizona
+Arizonan
+Arizonian
+ark
+Arkansan
+Arkansas
+Arlen
+Arlene
+Arlington
+arm
+armada
+armadillo
+armadillos
+Armageddon
+Armagnac
+armament
+armaments
+armarian
+Armata
+armature
+armband
+armchair
+armchairs
+Armco
+armed
+Armenia
+Armenian
+armer
+armers
+armful
+armhole
+armies
+arming
+armistice
+armlet
+armload
+Armonk
+armor
+armored
+armorer
+armorial
+armory
+armour
+armour-plate
+armoury
+armpit
+armpits
+armrest
+arms
+Armstrong
+army
+Arnold
+aroma
+aromas
+aromatherapist
+aromatherapy
+aromatic
+aromatically
+arose
+around
+arousal
+arouse
+aroused
+arouses
+arousing
+ARPA
+ARPANET
+arpeggio
+arpeggios
+ARPT
+arrack
+Arragon
+arraign
+arraigned
+arraigning
+arraignment
+arraignments
+arraigns
+arrange
+arranged
+arrangement
+arrangements
+arranger
+arrangers
+arranges
+arranging
+arrant
+arras
+array
+arrayed
+arrays
+arrear
+arrears
+arrest
+arrested
+arrester
+arresters
+arresting
+arrestingly
+arrestor
+arrestors
+arrests
+Arrhenius
+arrhythmia
+arrhythmic
+arrhythmical
+arrival
+arrivals
+arrive
+arrived
+arrives
+arriving
+arrogance
+arrogant
+arrogantly
+arrogate
+arrogated
+arrogates
+arrogating
+arrogation
+arrow
+arrowed
+arrowhead
+arrowheads
+arrowroot
+arrows
+arroyo
+arroyos
+arse
+arsenal
+arsenals
+arsenic
+arsine
+arsis
+arson
+arsonist
+art
+artefact
+Artemia
+Artemis
+arterial
+arteries
+arteriolar
+arteriole
+arterioles
+arteriosclerosis
+artery
+artful
+artfully
+artfulness
+arthritic
+arthritis
+arthropod
+arthropods
+arthroscope
+arthroscopic
+Arthur
+Arthurian
+artichoke
+artichokes
+article
+articled
+articles
+articular
+articulate
+articulated
+articulately
+articulateness
+articulates
+articulating
+articulation
+articulations
+articulator
+articulators
+articulatory
+Artie
+artifact
+artifacts
+artifice
+artificer
+artifices
+artificial
+artificialities
+artificiality
+artificially
+artificialness
+artillerist
+artillery
+artilleryman
+artillerymen
+artiness
+artisan
+artisans
+artist
+artiste
+artistic
+artistically
+artistry
+artists
+artless
+artlessly
+artlessness
+artotype
+arts
+artsy
+Arturo
+artwork
+arty
+ARU
+Aruba
+arum
+Aryan
+Aryans
+as
+asap
+asbestos
+ascend
+ascendance
+ascendancy
+ascendant
+ascended
+ascendency
+ascendent
+ascender
+ascenders
+ascending
+ascends
+ascensions
+ascent
+ascertain
+ascertainable
+ascertained
+ascertaining
+ascertainment
+ascertains
+ascetic
+ascetical
+ascetically
+asceticism
+ascetics
+ASCII
+ascot
+ascribable
+ascribe
+ascribed
+ascribes
+ascribing
+ascription
+aseptic
+aseptically
+asexual
+asexuality
+asexually
+ash
+ash-bin
+ash-pan
+ash-tray
+ashamed
+ashamedly
+ashcan
+ashen
+Asher
+ashes
+Asheville
+Ashkhabad
+Ashland
+ashlar
+Ashley
+ashman
+Ashmolean
+ashore
+ashram
+ashtray
+ashtrays
+ashy
+Asia
+Asian
+Asian-American
+Asians
+Asiatic
+Asiaticization
+Asiaticizations
+Asiaticize
+Asiaticizes
+Asiatics
+aside
+Asilomar
+Asimov
+asinine
+asininely
+asininity
+ASIS
+ask
+askance
+askant
+asked
+asker
+askers
+askew
+asking
+asks
+ASL
+aslant
+asleep
+Asmara
+asocial
+asp
+asparagus
+aspartame
+ASPCA
+aspect
+aspects
+aspen
+asperity
+asperse
+aspersion
+aspersions
+asphalt
+asphodel
+asphyxia
+asphyxiate
+asphyxiation
+aspic
+aspidistra
+aspirant
+aspirants
+aspirate
+aspirated
+aspirates
+aspirating
+aspiration
+aspirations
+aspirator
+aspirators
+aspire
+aspired
+aspires
+aspirin
+aspiring
+aspirins
+ass
+assail
+assailable
+assailant
+assailants
+assailed
+assailing
+assails
+Assam
+assassin
+assassinate
+assassinated
+assassinates
+assassinating
+assassination
+assassinations
+assassins
+assault
+assaulted
+assaulting
+assaults
+assay
+assayed
+assayer
+assaying
+assemblage
+assemblages
+assemble
+assembled
+assembler
+assembles
+assemblies
+assembling
+assembly
+assemblyman
+assemblywoman
+assent
+assented
+assenter
+assenting
+assents
+assert
+asserted
+asserter
+asserters
+asserting
+assertion
+assertions
+assertive
+assertively
+assertiveness
+asserts
+asses
+assess
+assessable
+assessed
+assesses
+assessing
+assessment
+assessments
+assessor
+assessors
+asset
+assets
+asseverate
+asseveration
+asshole
+assiduity
+assiduous
+assiduously
+assiduousness
+assign
+assignable
+assignation
+assigned
+assignee
+assignees
+assigner
+assigners
+assigning
+assignment
+assignments
+assignor
+assigns
+assimilate
+assimilated
+assimilates
+assimilating
+assimilation
+assimilations
+assist
+assistance
+assistances
+assistant
+assistants
+assistantship
+assistantships
+assisted
+assisting
+assists
+assistshop
+assize
+assizes
+assman
+associate
+associated
+associates
+associating
+association
+associational
+associations
+associative
+associatively
+associativity
+associator
+associators
+assonance
+assonant
+assort
+assorted
+assortment
+assortments
+assorts
+assuage
+assuaged
+assuagement
+assuages
+assumable
+assume
+assumed
+assumes
+assuming
+assumption
+assumptions
+assumptive
+assurance
+assurances
+assure
+assured
+assuredly
+assurer
+assurers
+assures
+assuring
+assuringly
+Assyria
+Assyrian
+Assyrianize
+Assyrianizes
+Assyriology
+Astaire
+Astaires
+Astarte
+astatine
+aster
+asterisk
+asterisks
+astern
+asteroid
+asteroidal
+asteroids
+asters
+asthma
+asthmatic
+astigmatic
+astigmatism
+astir
+Aston
+astonish
+astonished
+astonishes
+astonishing
+astonishingly
+astonishment
+Astor
+Astoria
+astound
+astounded
+astounding
+astoundingly
+astounds
+astraddle
+astrakhan
+astral
+astray
+astrict
+astride
+astringency
+astringent
+astringently
+astrolabe
+astrologer
+astrological
+astrologically
+astrologist
+astrology
+astronaut
+astronautic
+astronautical
+astronautics
+astronauts
+astronomer
+astronomers
+astronomic
+astronomical
+astronomically
+astronomy
+astrophysical
+astrophysicist
+astrophysics
+AstroTurf
+astute
+astutely
+astuteness
+Asuncion
+asunder
+Aswan
+asylum
+asymmetric
+asymmetrical
+asymmetrically
+asymmetry
+asymptomatic
+asymptomatically
+asymptote
+asymptotes
+asymptotic
+asymptotically
+asynchronism
+asynchronous
+asynchronously
+asynchrony
+at
+at's
+Atalanta
+Atari
+atavism
+atavist
+atavistic
+ataxia
+ataxic
+Atchison
+ate
+atelier
+atemporal
+Athabascan
+Athabaska
+Athabaskan
+atheism
+atheist
+atheistic
+atheists
+Athena
+Athenian
+Athenians
+Athens
+atherosclerosis
+athirst
+athlete
+athletes
+athletic
+athletically
+athleticism
+athletics
+athrophy
+athwart
+atilt
+Atkins
+Atkinson
+Atlanta
+Atlantic
+Atlantica
+Atlantis
+atlas
+ATM
+atmosphere
+atmospheres
+atmospheric
+atmospherical
+atmospherically
+atmospherics
+atoll
+atolls
+atom
+atomic
+atomically
+atomics
+atomism
+atomist
+atomistic
+atomization
+atomize
+atomized
+atomizer
+atomizes
+atomizing
+atoms
+atonal
+atonality
+atonally
+atone
+atoned
+atonement
+atones
+atop
+ATP
+Atreus
+atria
+atrial
+atrium
+atrocious
+atrociously
+atrociousness
+atrocities
+atrocity
+atrophic
+atrophied
+atrophies
+atrophy
+atrophying
+atropine
+Atropos
+attaboy
+attach
+attachable
+attache
+attached
+attacher
+attachers
+attaches
+attaching
+attachment
+attachments
+attach
+attack
+attackable
+attacked
+attacker
+attackers
+attacking
+attacks
+attain
+attainability
+attainable
+attainably
+attainder
+attained
+attainer
+attainers
+attaining
+attainment
+attainments
+attains
+attar
+attempt
+attempted
+attempter
+attempters
+attempting
+attempts
+attend
+attendance
+attendances
+attendant
+attendants
+attended
+attendee
+attendees
+attender
+attenders
+attending
+attends
+attention
+attention!
+attentional
+attentionality
+attentions
+attentive
+attentively
+attentiveness
+attenuate
+attenuated
+attenuates
+attenuating
+attenuation
+attenuator
+attenuators
+attest
+attestation
+attested
+attesting
+attests
+attic
+Attica
+attics
+Attila
+attire
+attired
+attires
+attiring
+attitude
+attitudes
+attitudinal
+attitudinize
+Attlee
+attorney
+attorney-general
+attorneys
+attosecond
+attract
+attractable
+attractant
+attracted
+attracting
+attraction
+attractions
+attractive
+attractively
+attractiveness
+attractor
+attractors
+attracts
+attributable
+attribute
+attributed
+attributes
+attributing
+attribution
+attributions
+attributive
+attributively
+attrition
+Attucks
+attune
+attuned
+attunes
+attuning
+ATV
+Atwater
+atwitter
+Atwood
+atypical
+atypically
+Auberge
+aubergine
+Aubrey
+auburn
+Auckland
+auction
+auctioneer
+auctioneers
+audacious
+audaciously
+audaciousness
+audacity
+audibility
+audible
+audibly
+audience
+audiences
+audio
+audio-visual
+audiobook
+audiogram
+audiograms
+audiography
+audiological
+audiologist
+audiologists
+audiology
+audiometer
+audiometers
+audiometric
+audiometry
+audiophile
+audiorecording
+audiotape
+audiovideotex
+audiovisual
+audiovisuals
+audit
+audited
+auditing
+audition
+auditioned
+auditioning
+auditions
+auditive
+auditor
+auditoria
+auditorium
+auditors
+auditory
+audits
+Audrey
+Audubon
+Auerbach
+Aug
+Augean
+auger
+augers
+aught
+augite
+augment
+augmentation
+augmentative
+augmented
+augmenter
+augmenting
+augments
+augur
+augurs
+augury
+august
+Augusta
+Augustan
+Augustine
+Augustinian
+augustly
+augustness
+Augustus
+auk
+aunt
+auntie
+aunts
+aunty
+aura
+aural
+aurally
+auras
+Aurelius
+aureola
+aureole
+aureomycin
+auricle
+auricular
+auriferous
+Auriga
+aurist
+aurochs
+aurora
+aurorae
+Auschwitz
+auscultate
+auscultated
+auscultates
+auscultating
+auscultation
+auscultations
+auspice
+auspices
+auspicious
+auspiciously
+auspiciousness
+Aussie
+Austen
+austere
+austerely
+austerity
+Austin
+austral
+Australasia
+Australasian
+Australia
+Australian
+Australianize
+Australianizes
+Australis
+Austria
+Austria-Hungary
+Austrian
+Austrianize
+Austrianizes
+Austro-German
+Austro-Hungarian
+autarchic
+autarchy
+autarkic
+autarkical
+autarky
+authentic
+authentically
+authenticate
+authenticated
+authenticates
+authenticating
+authentication
+authentications
+authenticator
+authenticators
+authenticity
+author
+authored
+authoress
+authoring
+authoritarian
+authoritarianism
+authoritative
+authoritatively
+authoritativeness
+authorities
+authority
+authorization
+authorizations
+authorize
+authorized
+authorizer
+authorizers
+authorizes
+authorizing
+authors
+authorship
+autism
+autistic
+auto
+auto-answer
+auto-encoding
+auto-indexing
+auto-trip
+autoabstract
+autobahn
+autobiographer
+autobiographic
+autobiographical
+autobiographically
+autobiographies
+autobiography
+autobus
+autocephalous
+autochthon
+autochton
+autoclave
+autocode
+autocoder
+autocollimator
+autocorrelate
+autocorrelation
+autocracies
+autocracy
+autocrat
+autocratic
+autocratically
+autocrats
+autodecrement
+autodecremented
+autodecrements
+autodialer
+autodidact
+autofluorescence
+autograph
+autographed
+autographing
+autographs
+autography
+autoignition
+autoimmune
+autoimmunity
+autoincrement
+autoincremented
+autoincrements
+autoindex
+autoindexing
+autolithography
+automaker
+automata
+automate
+automated
+automates
+automatic
+automatically
+automatics
+automating
+automation
+automatism
+automatize
+automaton
+automobile
+automobiles
+automotive
+autonavigator
+autonavigators
+autonomic
+autonomous
+autonomously
+autonomy
+autopatch
+autopilot
+autopilots
+autoplotter
+autopsied
+autopsies
+autopsy
+autoregressive
+autos
+autosuggestibility
+autotransformer
+autotype
+autoworker
+autumn
+autumnal
+autumns
+auxiliaries
+auxiliary
+auxin
+AV
+avail
+availabilities
+availability
+available
+availably
+availed
+availer
+availers
+availing
+avails
+avalanche
+avalanched
+avalanches
+avalanching
+avarice
+avaricious
+avariciously
+avast
+avatar
+avaunt
+AVDU
+avenge
+avenged
+avenger
+avenges
+avenging
+Aventine
+Aventino
+avenue
+avenues
+aver
+average
+averaged
+averages
+averaging
+averment
+Avernus
+averred
+averrer
+averring
+avers
+averse
+aversion
+aversions
+avert
+averted
+averting
+averts
+Avery
+Avesta
+avian
+aviaries
+aviary
+aviate
+aviation
+aviator
+aviators
+aviatrices
+aviatrix
+avid
+avidity
+avidly
+Avignon
+avionic
+avionics
+Avis
+avitaminosis
+Aviv
+avocado
+avocados
+avocation
+avocational
+avocations
+Avogadro
+avoid
+avoidable
+avoidably
+avoidance
+avoided
+avoider
+avoiders
+avoiding
+avoids
+avoirdupois
+Avon
+avouch
+avow
+avowal
+avowed
+avowedly
+avows
+avuncular
+aw
+await
+awaited
+awaiting
+awaits
+awake
+awaken
+awakened
+awakening
+awakens
+awakes
+awaking
+award
+awarded
+awarder
+awarders
+awarding
+awards
+aware
+awareness
+awash
+away
+awe
+awe-inspiring
+awe-stricken
+awe-struck
+awed
+aweigh
+awesome
+awesomely
+awesomeness
+awestricken
+awestruck
+awful
+awfully
+awfulness
+awhile
+awkward
+awkwardly
+awkwardness
+awl
+awls
+awn
+awning
+awnings
+awoke
+awoken
+awry
+ax
+axe
+axed
+Axel
+axer
+axers
+axes
+axial
+axially
+axing
+axiological
+axiom
+axiomatic
+axiomatically
+axiomatization
+axiomatizations
+axiomatize
+axiomatized
+axiomatizes
+axiomatizing
+axioms
+axis
+axle
+axles
+axletree
+axolotl
+axolotls
+axon
+axons
+ay
+ay(e)
+ayah
+ayatollah
+aye
+Ayers
+ayes
+Aylesbury
+AZ
+azalea
+azaleas
+Azerbaidzhan
+Azerbaijan
+azimuth
+azimuths
+Azores
+Azov
+Aztec
+Aztecan
+azure
+B.S-ing
+BA
+baa
+Baal
+Babbage
+babbitt
+Babbitt-metal
+babble
+babbled
+babbler
+babbles
+babbling
+Babcock
+babe
+Babelize
+Babelizes
+babes
+babied
+babies
+Babka
+baboon
+baboons
+Babul
+babushka
+baby
+baby-faced
+baby-farmer
+baby-sat
+baby-sit
+baby-sitter
+baby-walker
+babyhood
+babying
+babyish
+Babylon
+Babylonia
+Babylonian
+Babylonians
+Babylonize
+Babylonizes
+babysat
+babysit
+babysitter
+babysitting
+baccalaureate
+baccarat
+bacchanal
+bacchanalia
+bacchanalian
+Bacchic
+Bacchus
+baccy
+Bach
+bachelor
+bachelorhood
+bachelors
+bacillary
+bacilli
+bacillus
+back
+back-comb
+back-formation
+back-pedal
+back-to-back
+back-up
+backache
+backaches
+backarrow
+backbencher
+backbend
+backbends
+backbit
+backbite
+backbiter
+backbiting
+backbitten
+backboard
+backbone
+backbones
+backbreaking
+backdate
+backdrop
+backdrops
+backed
+backer
+backers
+backfield
+backfile
+backfill
+backfire
+backfiring
+backgammon
+background
+backgrounder
+backgrounds
+backhand
+backhanded
+backhandedly
+backhander
+backhoe
+backing
+backlash
+backless
+backlight
+backlog
+backlogged
+backlogs
+backmost
+backorder
+backpack
+backpacker
+backpacking
+backpacks
+backpedal
+backplane
+backplanes
+backplate
+backrest
+backs
+backscatter
+backscattered
+backscattering
+backscatters
+backseat
+backside
+backslapper
+backslapping
+backslash
+backslashes
+backslid
+backslidden
+backslide
+backslider
+backspace
+backspaced
+backspaces
+backspacing
+backspin
+backstab
+backstage
+backstair
+backstairs
+backstitch
+backstitched
+backstitches
+backstitching
+backstop
+backstretch
+backstroke
+backtalk
+backtrack
+backtracked
+backtracker
+backtrackers
+backtracking
+backtracks
+backup
+backups
+Backus
+backward
+backwardly
+backwardness
+backwards
+backwash
+backwater
+backwaters
+backwoods
+backwoodsman
+backwoodsmen
+backyard
+backyards
+bacon
+bacteria
+bacterial
+bactericidal
+bactericide
+bacteriologic
+bacteriological
+bacteriologist
+bacteriology
+bacterium
+bad
+bad-mouth
+bad-tempered
+bad/biting/bitter/caustic/dangerous/wicked/shrewd/tongue
+baddie
+baddy
+bade
+Baden
+Baden-Powell
+badge
+badger
+badgered
+badgering
+badgers
+badges
+badinage
+badlands
+badly
+badman
+badminton
+badmouth
+badness
+Baedeker
+Baffin
+baffle
+baffled
+bafflement
+baffler
+bafflers
+baffling
+bag
+bagatelle
+bagatelles
+Bagdad
+bagel
+bagels
+bagful
+baggage
+bagged
+bagger
+baggers
+baggily
+bagginess
+bagging
+baggy
+Baghdad
+Bagley
+bagman
+bagpipe
+bagpiper
+bagpipes
+Bagrodia
+Bagrodias
+bags
+baguette
+bah
+Bahama
+Bahamanian
+Bahamas
+Bahamian
+Bahrain
+Bahrein
+bail
+bailable
+bailee
+Bailey
+Baileys
+bailie
+bailiff
+bailiffs
+bailing
+bailiwick
+bailment
+bailor
+bailout
+bailsman
+Baird
+Bairdi
+bait
+bait-and-switch
+baited
+baiter
+baiting
+baits
+baize
+Baja
+bake
+baked
+bakelite
+baker
+bakeries
+bakers
+Bakersfield
+bakery
+bakers
+bakes
+bakeshop
+Bakhtiari
+baking
+baklava
+baksheesh
+Baku
+balaclava
+balalaika
+balalaikas
+balance
+balance-sheet
+balance-wheel
+balanced
+balancer
+balancers
+balances
+Balanchine
+balancing
+balconies
+balcony
+bald
+bald-faced
+baldachin
+balderdash
+baldfaced
+balding
+baldly
+baldness
+baldric
+Baldwin
+bale
+baleen
+baleful
+balefully
+balefulness
+baler
+bales
+Balfour
+Bali
+Balinese
+balk
+Balkan
+Balkanization
+Balkanizations
+Balkanize
+balkanized
+Balkanizes
+balkanizing
+Balkans
+balked
+balkiness
+balking
+balks
+balky
+ball
+ball-bearing
+ball-boy
+ball-cartridge
+ball-firing
+ball-room
+ball-up
+ball-valve
+ballad
+ballade
+balladeer
+balladry
+ballads
+Ballard
+Ballards
+ballast
+ballasts
+ballcock
+balled
+baller
+ballerina
+ballerinas
+ballers
+ballet
+balletic
+ballets
+ballgame
+ballgown
+balling
+ballistic
+ballistics
+ballocks
+balloon
+ballooned
+ballooner
+ballooners
+ballooning
+balloonist
+balloons
+ballot
+ballot-box
+ballots
+ballpark
+ballparks
+ballplayer
+ballplayers
+ballpoint
+ballroom
+ballrooms
+balls
+ballyhoo
+balm
+balminess
+balms
+balmy
+baloney
+balsa
+balsam
+balsamic
+Baltic
+Baltimore
+Baltimorean
+Balto-Slavic
+Baluchistan
+baluster
+balustrade
+balustrades
+Balzac
+Bamako
+Bamberger
+Bambi
+bamboo
+bamboozle
+ban
+Banach
+banal
+banality
+banally
+banana
+bananas
+Banbury
+Bancroft
+band
+band-brake
+band-stand
+bandage
+bandaged
+bandages
+bandaging
+bandana
+bandanna
+bandbox
+bandeau
+bandeaux
+banded
+bandied
+bandies
+banding
+bandit
+banditry
+bandits
+bandmaster
+bandoleer
+bandolier
+bandpass
+bands
+bandsman
+bandstand
+bandstands
+Bandung
+bandwagon
+bandwagons
+bandwidth
+bandwidths
+bandy
+bandy-legged
+bandying
+bane
+baneful
+bang
+bang-up
+Bangalore
+banged
+banging
+Bangkok
+Bangladesh
+Bangladeshi
+bangle
+bangles
+Bangor
+bangs
+Bangui
+banish
+banished
+banishes
+banishing
+banishment
+banister
+banisters
+banjo
+banjoist
+banjos
+Banjul
+bank
+bank-bill
+bank-book
+bank-note
+bank-rate
+bankable
+bankbook
+bankcard
+banked
+banker
+bankers
+banking
+banknote
+bankroll
+bankrupcy
+bankrupt
+bankruptcies
+bankruptcy
+bankrupted
+bankrupting
+bankrupts
+banks
+banned
+banner
+banners
+banning
+bannister
+bannock
+banns
+banquet
+banqueter
+banqueting
+banquetings
+banquets
+banquette
+bans
+banshee
+banshees
+banshie
+bantam
+bantamweight
+banter
+bantered
+bantering
+banteringly
+banters
+Bantu
+Bantus
+banyan
+banzai
+baobab
+baptism
+baptismal
+baptisms
+baptist
+Baptiste
+baptistery
+baptistries
+baptistry
+Baptists
+baptize
+baptized
+baptizer
+baptizes
+baptizing
+bar
+bar-bell
+bar-room
+Barabbas
+barb
+Barbadian
+Barbados
+Barbara
+barbarian
+barbarianism
+barbarians
+barbaric
+barbarically
+barbarism
+barbarities
+barbarity
+barbarize
+barbarous
+barbarously
+barbecue
+barbecued
+barbecues
+barbed
+barbel
+barbell
+barbells
+barbeque
+barber
+barberry
+barbershop
+barbital
+barbiturate
+barbiturates
+Barbour
+barbs
+barbwire
+barcarole
+barcarolle
+Barcelona
+Barclay
+bard
+bardic
+bards
+bare
+bare-bones
+bareback
+barebacked
+bared
+barefaced
+barefacedly
+barefacedness
+barefoot
+barefooted
+barehanded
+bareheaded
+barelegged
+barell
+barely
+bareness
+barer
+bares
+barest
+barf
+barflies
+barfly
+bargain
+bargained
+bargainer
+bargaining
+bargains
+barge
+bargee
+bargeman
+barges
+barging
+baring
+baritone
+baritones
+barium
+bark
+barked
+barkeep
+barkeeper
+barker
+barkers
+barking
+barks
+barley
+barley-cap
+barleycorn
+Barlow
+barmaid
+barman
+barn
+Barnabas
+barnackle
+barnacle
+barnacled
+Barnard
+Barnaul
+Barnes
+Barnet
+Barnett
+Barney
+Barnhard
+barns
+barnstorm
+barnstormed
+barnstormer
+barnstorming
+barnstorms
+Barnum
+barnyard
+barnyards
+barometer
+barometers
+barometric
+barometrical
+barometrically
+baron
+baronage
+baroness
+baronet
+baronetcy
+baronial
+baronies
+barons
+barony
+baroque
+baroqueness
+barque
+Barr
+barrack
+barracks
+barracuda
+barrage
+barrages
+Barranquilla
+barre
+barred
+barrel
+barreled
+barrelled
+barrelling
+barrelorgan
+barrels
+barren
+barrenness
+barrens
+Barrett
+barrette
+barricade
+barricades
+Barrie
+barrier
+barriers
+barring
+barringer
+Barrington
+barrio
+barrister
+Barron
+barroom
+barrow
+Barry
+Barrymore
+Barrymores
+bars
+Barstow
+Bart
+bartender
+bartenders
+barter
+bartered
+barterer
+bartering
+barters
+Barth
+Bartholomew
+Bartlett
+Bartok
+Barton
+baryon
+barytone
+bas-relief
+basal
+basally
+basalt
+basaltic
+basan
+Bascom
+bascule
+base
+baseball
+baseballs
+baseband
+baseboard
+baseboards
+based
+Basel
+baseless
+baseline
+baselines
+basely
+baseman
+basement
+basements
+baseness
+baser
+bases
+bash
+bashed
+bashes
+bashful
+bashfully
+bashfulness
+bashing
+basic
+basically
+basicity
+basics
+Basie
+basil
+basilica
+basilisk
+basin
+basinful
+basing
+basins
+basis
+bask
+basked
+basket
+basket-ball
+basketball
+basketballs
+basketry
+baskets
+basketwork
+basking
+Basque
+Basra
+bass
+bass-baritone
+basses
+basset
+Basseterre
+Bassett
+bassi
+bassinet
+bassinets
+bassist
+basso
+bassoon
+bassoonist
+basswood
+bast
+bastard
+bastardization
+bastardize
+bastards
+bastardy
+baste
+basted
+baster
+bastes
+basting
+bastion
+bastions
+Basutoland
+bat
+Batavia
+batch
+batched
+Batchelder
+batches
+bate
+bated
+Bateman
+Bates
+bath
+bath-room
+bath-towel
+bath-tub
+bathe
+bathed
+bather
+bathers
+bathes
+bathetic
+bathhouse
+bathing
+bathing-costume
+bathing-drawers
+bathing-dress
+bathing-gown
+bathing-machine
+bathing-suit
+bathmat
+bathos
+bathrobe
+bathrobes
+bathroom
+bathrooms
+baths
+bathtub
+bathtubs
+Bathurst
+bathyscaph
+bathyscaphe
+bathysphere
+batik
+Batista
+batiste
+batman
+baton
+batons
+Bator
+bats
+batsman
+batt
+battalion
+battalions
+batted
+Battelle
+batten
+battens
+batter
+battered
+batterer
+batteries
+battering
+batters
+battery
+batting
+battle
+battle-ax
+battle-axe
+battle-cruiser
+battleax
+battleaxe
+battled
+battledore
+battledress
+battlefield
+battlefields
+battlefront
+battlefronts
+battleground
+battlegrounds
+battlement
+battlements
+battler
+battlers
+battles
+battleship
+battleships
+battling
+batty
+bauble
+baubles
+baud
+Baudelaire
+Bauer
+Bauhaus
+baulk
+Bausch
+bauxite
+Bavaria
+Bavarian
+bawd
+bawdily
+bawdiness
+bawdy
+bawl
+bawled
+bawling
+bawls
+Baxter
+bay
+Bayamon
+bayberry
+Bayda
+bayed
+Bayes
+Bayesian
+baying
+Baylor
+bayonet
+bayonet-joint
+bayonets
+Bayonne
+bayou
+bayous
+Bayport
+Bayreuth
+bays
+bazaar
+bazaars
+bazoo
+bazooka
+BB
+BBC
+BBQ
+BBS
+BC
+be
+be!
+beach
+beachcomber
+beached
+beaches
+beachhead
+beachheads
+beaching
+beachwear
+beacon
+beacons
+bead
+beaded
+beading
+beadle
+beadles
+beads
+beady
+beagle
+beagles
+beak
+beaked
+beaker
+beakers
+beaks
+beam
+beam-ends
+beamed
+beamer
+beamers
+beaming
+beams
+beamy
+bean
+bean-pod
+beanbag
+beaned
+beaner
+beaners
+beanie
+beaning
+beanpole
+beans
+beanstalk
+bear
+bearable
+bearably
+beard
+bearded
+beardless
+beards
+Beardsley
+bearer
+bearers
+bearing
+bearings
+bearish
+bearishly
+bearishness
+bearless
+bearlike
+bears
+bears-pessimists
+bearskin
+beast
+beastliness
+beastly
+beasts
+beat
+beat-up
+beatable
+beatably
+beaten
+beater
+beaters
+beatific
+beatifically
+beatification
+beatify
+beating
+beatings
+beatitude
+beatitudes
+beatnik
+beatniks
+Beatrice
+beats
+beau
+Beauchamps
+Beaujolais
+Beaumont
+Beauregard
+beaus
+beaut
+beauteous
+beauteously
+beautician
+beauties
+beautification
+beautifications
+beautified
+beautifier
+beautifiers
+beautifies
+beautiful
+beautifully
+beautify
+beautifying
+beauty
+beaux
+beaver
+beavers
+Beaverton
+bebop
+becalm
+becalmed
+becalming
+becalms
+became
+because
+Bechtel
+beck
+Becker
+Becket
+Beckett
+Beckman
+beckon
+beckoned
+beckoning
+beckons
+Becky
+becloud
+become
+becomes
+becoming
+becomingly
+bed
+bed-and-breakfast
+bed-bug
+bed-chamber
+bed-clothes
+bed-down
+bed-rock
+bed-wetter
+bedabble
+bedaub
+bedazzle
+bedazzled
+bedazzlement
+bedazzles
+bedazzling
+bedbug
+bedbugs
+bedclothes
+bedded
+bedder
+bedders
+bedding
+bedeck
+bedel
+bedell
+bedevil
+bedeviled
+bedeviling
+bedevilment
+bedevils
+bedew
+bedfast
+bedfellow
+Bedford
+bedgown
+bedim
+bedizen
+bedlam
+bedlinen
+bedouin
+bedpan
+bedpost
+bedposts
+bedraggle
+bedraggled
+bedrid
+bedridden
+bedrock
+bedroll
+bedroom
+bedrooms
+beds
+bedside
+bedsit
+bedsore
+bedspread
+bedspreads
+bedspring
+bedsprings
+bedstead
+bedsteads
+bedtime
+bee
+bee-hive
+bee-house
+bee-keeping
+bee-line
+Beebe
+beebread
+beech
+Beecham
+beechen
+beecher
+beechnut
+beef
+Beef-Tripe
+beefburger
+beefcake
+beefeater
+beefed
+beefer
+beefers
+beefiness
+beefing
+beefs
+beefsteak
+beefy
+beehive
+beehives
+beekeeper
+beekeeping
+beeline
+Beelzebub
+been
+beep
+beeper
+beeps
+beer
+beer-mat
+beerhouse
+beers
+beery
+bees
+beeswax
+beet
+beet-harvester
+beet-root
+Beethoven
+beetle
+beetle-browed
+beetled
+beetles
+beetling
+beetroot
+beets
+beeves
+befall
+befallen
+befalling
+befalls
+befell
+befit
+befits
+befitted
+befitting
+befittingly
+befog
+befogged
+befogging
+befool
+before
+beforehand
+befoul
+befouled
+befouling
+befouls
+befriend
+befriended
+befriending
+befriends
+befuddle
+befuddled
+befuddlement
+befuddles
+befuddling
+beg
+began
+begat
+beget
+begets
+begetting
+beggar
+beggarly
+beggars
+beggary
+begged
+begging
+begin
+beginner
+beginners
+beginning
+beginnings
+begins
+begone
+Begone!
+begonia
+begot
+begotten
+begrime
+begrudge
+begrudged
+begrudges
+begrudging
+begrudgingly
+begs
+beguile
+beguiled
+beguilement
+beguiler
+beguiles
+beguiling
+beguilingly
+beguine
+begum
+begun
+behalf
+behave
+behaved
+behaves
+behaving
+behavior
+behavioral
+behaviorally
+behaviorism
+behavioristic
+behaviors
+behaviour
+behaviourism
+behead
+beheading
+beheld
+behemoth
+behemoths
+behest
+behind
+behindhand
+behold
+beholden
+beholder
+beholders
+beholding
+beholds
+behoof
+behoove
+behooves
+behove
+beige
+Beijing
+being
+beings
+Beirut
+bejewel
+bejeweled
+bejewelled
+Bela
+belabor
+belabored
+belaboring
+belabors
+belabour
+Belarus
+belated
+belatedly
+belaud
+belay
+belayed
+belaying
+belays
+belch
+belched
+belches
+belching
+beleaguer
+Belfast
+belfries
+belfry
+Belgian
+Belgians
+Belgium
+Belgrade
+belie
+belied
+belief
+beliefs
+belies
+believable
+believably
+believe
+believed
+believer
+believers
+believes
+believing
+belittle
+belittled
+belittlement
+belittles
+belittling
+belive
+Belize
+bell
+bell-bottom
+bell-bottomed
+bell-bottoms
+bell-flower
+bell-founder
+bell-metal
+bell-ringer
+Bella
+belladonna
+Bellamy
+Bellatrix
+bellboy
+bellboys
+belle
+belles
+belles-lettres
+belletrist
+belletristic
+Belleville
+bellhop
+bellhops
+bellicose
+bellicosity
+bellies
+belligerence
+belligerency
+belligerent
+belligerently
+belligerents
+Bellingham
+Bellini
+bellman
+bellmen
+Bellovin
+bellow
+bellowed
+bellowing
+bellows
+bells
+bellum
+bellwether
+bellwethers
+Bellwood
+belly
+bellyache
+bellybutton
+bellyful
+bellyfull
+Belmont
+Belmopan
+Beloit
+belong
+belonged
+belonging
+belongings
+belongs
+Belorussia
+Belorussian
+beloved
+below
+Belshazzar
+belt
+belted
+belting
+Belton
+belts
+Beltsville
+beltway
+Beluchistan
+beluga
+Belushi
+bely
+belying
+bemire
+bemoan
+bemoaned
+bemoaning
+bemoans
+bemuse
+bemused
+bemusedly
+bemusement
+Ben
+Ben-Gurion
+Benares
+bench
+bench-mark
+bench-press
+benched
+benches
+benchmark
+benchmarking
+benchmarks
+benchtop
+bend
+bend-leather
+bendable
+benders
+bending
+Bendix
+bends
+beneath
+benedick
+Benedict
+Benedictine
+benediction
+benedictions
+benedictory
+Benedikt
+benefaction
+benefactor
+benefactors
+benefactress
+benefice
+beneficence
+beneficences
+beneficent
+beneficently
+beneficial
+beneficially
+beneficiaries
+beneficiary
+benefit
+benefited
+benefiting
+benefits
+benefitted
+benefitting
+Benelux
+Benet
+benevolence
+benevolent
+benevolently
+Bengal
+Bengali
+benighted
+benightedly
+benign
+benignant
+benignity
+benignly
+Benin
+Beninese
+Benjamin
+Bennett
+Bennington
+Benny
+Benson
+bent
+bent-grass
+bent-wood
+Bentham
+Bentley
+Bentleys
+Benton
+bentwood
+benumb
+benumbed
+Benz
+Benzedrine
+benzene
+benzine
+Beograd
+Beowulf
+bequeath
+bequeathal
+bequeathed
+bequeathing
+bequeaths
+bequest
+bequests
+berate
+berated
+berates
+berating
+Berber
+Berea
+bereau
+bereave
+bereaved
+bereavement
+bereavements
+bereaves
+bereaving
+bereft
+Berenices
+Beresford
+beret
+berets
+berg
+Bergen
+Bergland
+Berglund
+Bergman
+Bergson
+Bergsten
+Bergstrom
+beribboned
+beriberi
+Bering
+Beringer
+Berkeley
+berkelium
+Berkowitz
+Berkshire
+Berkshires
+Berlin
+Berliner
+Berliners
+Berlinize
+Berlinizes
+Berlioz
+Berlitz
+berm
+Berman
+Bermuda
+Bermudan
+Bermudas
+Bermudian
+Bern
+Bernadine
+Bernard
+Bernardine
+Bernardino
+Bernardo
+Bernese
+Bernet
+Bernhard
+Bernhardt
+Bernice
+Bernie
+Berniece
+Bernini
+Bernoulli
+Bernstein
+Berra
+berries
+berry
+berrylike
+berserk
+Bert
+berth
+Bertha
+berths
+Bertie
+Bertram
+Bertrand
+Berwick
+beryl
+berylliosis
+beryllium
+beseech
+beseecher
+beseeches
+beseeching
+beseechingly
+beseem
+besemerize
+beset
+besets
+besetting
+beside
+besides
+besiege
+besieged
+besieger
+besiegers
+besieging
+beslaver
+besmear
+besmirch
+besmirched
+besmirches
+besmirching
+besom
+besot
+besotted
+besotter
+besotting
+besought
+bespangle
+bespatter
+bespattered
+bespeak
+bespeaks
+bespectacled
+bespoke
+bespoken
+Bess
+Bessel
+Bessemer
+Bessemerize
+Bessemerizes
+Bessie
+best
+best-seller
+best-selling
+bested
+bestial
+bestiality
+bestially
+bestiary
+besting
+bestir
+bestirring
+bestow
+bestowal
+bestowed
+bestrew
+bestrewn
+bestrid
+bestridden
+bestride
+bestrode
+bests
+bestseller
+bestsellers
+bestselling
+bet
+beta
+betake
+betaken
+betatron
+betcha
+betel
+Betelgeuse
+Bethesda
+bethink
+Bethlehem
+bethought
+Bethune
+betide
+betimes
+betoken
+betook
+betray
+betrayal
+betrayed
+betrayer
+betraying
+betrays
+betroth
+betrothal
+betrothed
+bets
+Betsey
+Betsy
+Bette
+better
+bettered
+bettering
+betterment
+betterments
+betters
+Betties
+betting
+bettor
+Betty
+between
+betwixt
+bevel
+beveled
+beveling
+bevelled
+bevels
+beverage
+beverages
+Beverly
+bevy
+bewail
+bewailed
+bewailing
+bewails
+beware
+bewhiskered
+bewigged
+bewilder
+bewildered
+bewildering
+bewilderingly
+bewilderment
+bewilders
+bewitch
+bewitched
+bewitches
+bewitching
+bewitchingly
+bewitchment
+bey
+beyond
+bezel
+BFU
+Bhagavad-Gita
+Bhopal
+Bhutan
+Bhutanese
+bi-monthly
+bi-weekly
+Bialystok
+Bianco
+biannual
+biannually
+bias
+biased
+biases
+biasing
+biassed
+biathlon
+bib
+bibbed
+bibber
+bibbing
+bibelot
+Bible
+bibles
+biblical
+biblically
+biblid
+bibliographer
+bibliographic
+bibliographical
+bibliographically
+bibliographies
+bibliographing
+bibliography
+bibliology
+bibliomania
+bibliometrics
+bibliopedagogy
+bibliophile
+bibliophilism
+bibliophilist
+bibliophoby
+bibliopole
+bibliopoly
+bibliotheraphy
+bibliotist
+bibs
+bibulous
+bicameral
+bicameralism
+bicarb
+bicarbonate
+bicentenary
+bicentennial
+bicep
+biceps
+bicker
+bickered
+bickerer
+bickering
+bickers
+biconcave
+biconnected
+biconvex
+bicuspid
+bicycle
+bicycled
+bicycler
+bicyclers
+bicycles
+bicycling
+bicyclist
+bid
+biddable
+bidden
+bidder
+bidders
+biddies
+bidding
+Biddle
+biddy
+bide
+bidet
+bidirectional
+bidirectionally
+bids
+Bien
+biennia
+biennial
+biennially
+biennium
+Bienville
+bier
+Bierce
+bifocal
+bifocals
+bifurcate
+bifurcation
+big
+big-hearted
+big-league
+big-nosed
+big-ticket
+big-time
+bigamist
+bigamous
+bigamy
+Bigelow
+bigger
+biggest
+biggie
+biggish
+Biggs
+bighead
+bighearted
+bigheartedness
+bighorn
+bight
+bights
+bigmouth
+bigness
+bigory
+bigot
+bigoted
+bigotry
+bigots
+bigwig
+biharmonic
+bijection
+bijections
+bijective
+bijectively
+bijou
+bike
+biker
+bikes
+biking
+bikini
+bikinis
+bilabial
+bilateral
+bilaterally
+Bilbao
+bilberry
+Bilbo
+bile
+bilge
+bilges
+biliary
+bilinear
+bilingual
+bilingualism
+bilingually
+bilious
+biliousness
+biliteral
+bilk
+bilked
+bilker
+bilking
+bilks
+bill
+bill-posting
+billable
+billboard
+billboards
+billed
+biller
+billers
+billet
+billet-doux
+billeted
+billeting
+billets
+billets-doux
+billfold
+billiard
+billiards
+billibit
+Billie
+Billiken
+Billikens
+billing
+Billings
+billingsgate
+billion
+billionaire
+billions
+billionth
+billisecond
+billow
+billowed
+billows
+billowy
+bills
+billy
+Biltmore
+bimbo
+bimetallic
+bimetallism
+Bimini
+bimodal
+bimolecular
+bimonthlies
+bimonthly
+bin
+binaries
+binary
+binaural
+bind
+binder
+binders
+bindery
+binding
+bindings
+binds
+bindweed
+bine
+bing
+binge
+binges
+Bingham
+Binghamton
+bingo
+Bini
+binnacle
+binocular
+binoculars
+binomial
+bins
+binuclear
+biochemical
+biochemically
+biochemist
+biochemistry
+biodegradability
+biodegradable
+biodiversity
+bioethics
+biofeedback
+biographer
+biographers
+biographic
+biographical
+biographically
+biographies
+biography
+biologic
+biological
+biologically
+biologist
+biologists
+biology
+biomass
+biomedical
+biomedicine
+biomes
+bionic
+bionically
+bionics
+biophysical
+biophysicist
+biophysics
+biopic
+biopsies
+biopsy
+biorhythm
+BIOS
+bioscience
+biosphere
+biostatistic
+biosynthesize
+biota
+biotechnological
+biotechnology
+biotic
+biotin
+bipartisan
+bipartisanship
+bipartite
+biped
+bipedal
+bipeds
+biplane
+biplanes
+bipolar
+bipolarity
+biracial
+birch
+birchen
+birches
+bird
+bird's-eye
+bird-brained
+bird-fancier
+bird-seed
+birdbath
+birdbaths
+birdbrain
+birdbrained
+birder
+birdhouse
+birdie
+birdied
+birdies
+birdlike
+birdlime
+birds
+birdseed
+birdwatcher
+birefringence
+birefringent
+biretta
+Birgit
+Birmingham
+Birminghamize
+Birminghamizes
+biro
+birth
+birth-certificate
+birth-place
+birth-rate
+birthday
+birthdays
+birthed
+birthmark
+birthplace
+birthplaces
+birthrate
+birthright
+birthrights
+births
+birthstone
+Biscayne
+biscuit
+biscuits
+bisect
+bisected
+bisecting
+bisection
+bisections
+bisector
+bisectors
+bisects
+bisexual
+bisexuality
+bisexually
+Bishkek
+bishop
+bishopric
+bishops
+Bismarck
+Bismark
+bismuth
+bison
+bisons
+bisque
+bisques
+Bissau
+bistable
+bistate
+bistro
+bit
+bitch
+bitch-fox
+bitches
+bitchily
+bitchiness
+bitchy
+bite
+biter
+biters
+bites
+biting
+bitingly
+bitmap
+BITNET
+bitrate
+bits
+bitten
+bitter
+bitterer
+bitterest
+bitterly
+bittern
+bitterness
+bitternut
+bitterroot
+bitters
+bittersweet
+bitty
+bitumen
+bituminous
+bitwise
+bivalent
+bivalve
+bivalves
+bivariate
+bivouac
+bivouacs
+biweekly
+biyearly
+biz
+bizarre
+bizarrely
+Bizet
+Bk
+BL
+blab
+blabbed
+blabber
+blabberer
+blabbermouth
+blabbermouths
+blabbing
+blabs
+black
+black-box
+black-currant
+black-lead
+black-out
+black-smith
+black-tie
+blackamoor
+blackball
+blackberries
+blackberry
+blackbird
+blackbirds
+blackboard
+blackboards
+Blackburn
+blacked
+blacken
+blackened
+blackening
+blackens
+blacker
+blackest
+Blackfeet
+Blackfoot
+Blackfoots
+blackguard
+blackhead
+blacking
+blackish
+blackjack
+blackjacks
+blackleg
+blacklist
+blacklisted
+blacklisting
+blacklists
+blackly
+blackmail
+blackmailed
+blackmailer
+blackmailers
+blackmailing
+blackmails
+Blackman
+Blackmer
+blackness
+blackout
+blackouts
+Blackpool
+blacks
+blacksmith
+blacksmiths
+blacksnake
+Blackstone
+blackthorn
+blacktop
+Blackwell
+Blackwells
+bladder
+bladders
+blade
+blade-bone
+bladed
+blades
+blah
+blah-blah
+Blaine
+Blair
+BLAISE
+Blake
+Blakey
+blamable
+blame
+blameable
+blamed
+blameless
+blamelessly
+blamelessness
+blamer
+blamers
+blames
+blameworthiness
+blameworthy
+blaming
+blanch
+Blanchard
+Blanche
+blanched
+blanches
+blanching
+blancmange
+bland
+blandish
+blandishment
+blandishments
+blandly
+blandness
+blank
+blanked
+blanker
+blankest
+blanket
+blanketed
+blanketer
+blanketers
+blanketing
+blankets
+blanking
+blankly
+blankness
+blanks
+Blanton
+blare
+blared
+blares
+blaring
+blarney
+blase
+blaspheme
+blasphemed
+blasphemer
+blasphemes
+blasphemies
+blaspheming
+blasphemous
+blasphemously
+blasphemousness
+blasphemy
+blast
+blast-furnace
+blast-off
+blasted
+blaster
+blasters
+blasting
+blastoff
+blasts
+blatancy
+blatant
+blatantly
+blather
+Blatz
+blaze
+blazed
+blazer
+blazers
+blazes
+blazing
+blazon
+BLDSS
+bleach
+bleached
+bleacher
+bleachers
+bleaches
+bleaching
+bleaching-ground
+bleak
+bleaker
+bleakly
+bleakness
+blear
+blearily
+bleariness
+bleary
+bleary-eyed
+bleat
+bleating
+bleats
+bled
+bleed
+bleeder
+bleeding
+bleedings
+bleeds
+Bleeker
+bleep
+bleeper
+blemish
+blemished
+blemishes
+blench
+blend
+blended
+blender
+blending
+blends
+Blenheim
+bless
+blessed
+blessedly
+blessedness
+blessing
+blessings
+blest
+blew
+blight
+blighted
+blimey
+blimp
+blimps
+blind
+blinded
+blinder
+blinders
+blindfold
+blindfolded
+blindfolding
+blindfolds
+blinding
+blindingly
+blindly
+blindman's-buff
+blindness
+blinds
+blindside
+blindworm
+blink
+blinked
+blinker
+blinkered
+blinkers
+blinking
+blinks
+Blinn
+blintz
+blintze
+blip
+blips
+bliss
+blissful
+blissfully
+blissfulness
+blister
+blistered
+blistering
+blisteringly
+blisters
+blistery
+blithe
+blithely
+blitheness
+blithering
+blithesome
+blitz
+blitzes
+blitzkrieg
+blizzard
+blizzards
+bloat
+bloated
+bloater
+bloating
+bloats
+blob
+blobs
+bloc
+Bloch
+block
+blockade
+blockaded
+blockader
+blockades
+blockading
+blockage
+blockages
+blockbuster
+blockbusting
+blocked
+blocker
+blockers
+blockhead
+blockhouse
+blockhouses
+blocking
+blockish
+blocks
+blocs
+Bloemfontein
+bloke
+blokes
+Blomberg
+Blomquist
+blond
+blonde
+blondes
+blondish
+blondness
+blonds
+blood
+blood-curdling
+blood-poisoning
+blood-relation
+blood-thirsty
+blood-vessel
+bloodbath
+bloodcurdling
+blooded
+bloodhound
+bloodhounds
+bloodied
+bloodiest
+bloodiness
+bloodless
+bloodlessly
+bloodlessness
+bloodletting
+bloodline
+bloodmobile
+bloods
+bloods-and-guts
+bloodshed
+bloodshot
+bloodstain
+bloodstained
+bloodstains
+bloodstock
+bloodstream
+bloodsucker
+bloodsucking
+bloodthirstily
+bloodthirstiness
+bloodthirsty
+bloody
+bloom
+bloomed
+bloomer
+bloomers
+Bloomfield
+blooming
+Bloomington
+blooms
+bloop
+blooper
+blossom
+blossomed
+blossoms
+blossomy
+blot
+blotch
+blotched
+blotchy
+bloter
+bloting-paper
+blots
+blotted
+blotter
+blotting
+blotto
+blouse
+blouses
+blow
+blow-by-blow
+blow-dry
+blow-dryer
+blow-hard
+blow-hole
+blow-up
+blower
+blowers
+blowfish
+blowfly
+blowgun
+blowhard
+blowing
+blown
+blowout
+blowpipe
+blows
+blowsy
+blowtorch
+blowup
+blowy
+blowzy
+BLT
+blubber
+blubbery
+bludgeon
+bludgeoned
+bludgeoning
+bludgeons
+blue
+blue-blood
+blue-blooded
+blue-chip
+blue-collar
+blue-pencil
+blue-print
+bluebell
+blueberries
+blueberry
+bluebird
+bluebirds
+bluebonnet
+bluebonnets
+bluebottle
+bluefish
+bluegill
+bluegrass
+blueing
+blueish
+bluejacket
+bluejay
+bluejeans
+blueness
+bluenose
+bluepoint
+blueprint
+blueprinter
+blueprints
+bluer
+blues
+bluest
+bluestocking
+bluesy
+bluet
+bluff
+bluffer
+bluffing
+bluffly
+bluffness
+bluffs
+bluing
+bluish
+Blum
+Blumenthal
+blunder
+blunderbuss
+blundered
+blunderer
+blundering
+blunderings
+blunders
+blunt
+blunt-sighted
+blunted
+blunter
+bluntest
+blunting
+bluntly
+bluntness
+blunts
+blur
+blurb
+blurred
+blurriness
+blurring
+blurry
+blurs
+blurt
+blurted
+blurting
+blurts
+blush
+blush-on
+blushed
+blusher
+blushes
+blushing
+bluster
+blustered
+blusterer
+blustering
+blusterous
+blusters
+blustery
+Blythe
+BM
+BNB
+BO
+boa
+boar
+board
+boarded
+boarder
+boarders
+boarding
+boarding-house
+boarding-school
+boardinghouse
+boardinghouses
+boardroom
+boards
+boardwalk
+Boarsh
+boast
+boasted
+boaster
+boasters
+boastful
+boastfully
+boastfulness
+boasting
+boastings
+boasts
+boat
+boat-house
+boater
+boaters
+boathouse
+boathouses
+boating
+boating-man
+boatload
+boatloads
+boatman
+boatmen
+boats
+boatsman
+boatsmen
+boatswain
+boatswains
+boatyard
+boatyards
+bob
+bob-sled
+bob-sleigh
+bobbed
+Bobbie
+bobbin
+bobbin-lace
+bobbing
+bobbins
+bobble
+Bobbsey
+bobby
+bobbysoxer
+bobcat
+bobolink
+bobolinks
+Bobrow
+bobs
+bobsled
+bobsledder
+bobsleigh
+bobtail
+bobwhite
+bobwhites
+Boca
+Boccaccio
+bocce
+bocci
+boccie
+bock
+bod
+bode
+bodeful
+bodega
+Bodenheim
+bodes
+bodice
+bodied
+bodies
+bodily
+bodkin
+Bodleian
+body
+body-building
+body-guard
+bodybuilder
+bodybuilders
+bodybuilding
+bodycheck
+bodyguard
+bodyguards
+bodysuit
+bodyweight
+bodywork
+Boeing
+Boeotia
+Boeotian
+Boer
+Boers
+bog
+Bogart
+Bogartian
+bogey
+bogeyman
+bogeymen
+bogged
+boggle
+boggled
+boggles
+boggling
+boggy
+bogie
+Bogota
+bogs
+bogus
+bogy
+bogyman
+Boheme
+Bohemia
+Bohemian
+Bohr
+boil
+boiled
+boiler
+boilermaker
+boilerplate
+boilers
+boiling
+boiling-point
+boils
+Bois
+Boise
+boisterous
+boisterously
+boisterousness
+bola
+bold
+bold-faced
+bolder
+boldest
+boldface
+boldfaced
+boldly
+boldness
+bole
+bolero
+boletus
+Boleyn
+Bolivia
+Bolivian
+boll
+bollix
+boloney
+Bolshevik
+Bolsheviks
+Bolshevism
+Bolshevist
+Bolshevistic
+Bolshoi
+bolster
+bolstered
+bolstering
+bolsters
+bolt
+bolted
+bolting
+Bolton
+bolts
+Boltzmann
+bolus
+bomb
+bombard
+bombarded
+bombardier
+bombarding
+bombardment
+bombards
+bombast
+bombastic
+bombastically
+Bombay
+bombed
+bomber
+bombers
+bombing
+bombings
+bombproof
+bombs
+bombshell
+bon-bon
+bonanza
+bonanzas
+Bonaparte
+Bonaventure
+bonbon
+bond
+bondage
+bonded
+bonder
+bonders
+bondholder
+bonding
+bondman
+bonds
+bondsman
+bondsmen
+bondwoman
+bone
+bone-dry
+bone-head
+boned
+bonehead
+boneheaded
+boneless
+boner
+boners
+bones
+boney
+bonfire
+bonfires
+bong
+bongo
+bongos
+Bonham
+bonhomie
+Boniface
+boniness
+boning
+bonito
+bonkers
+Bonn
+bonnet
+bonneted
+bonnets
+Bonneville
+bonny
+bonsai
+Bontempo
+bonus
+bonuses
+bony
+boo
+boo-boo
+boob
+booboo
+boobs
+booby
+booby-hatch
+booby-trap
+booby-trapped
+boodle
+boogeyman
+boogie
+boogie-woogie
+boohoo
+book
+book-back
+book-binder
+book-keeper
+book-keeping
+book-louse
+book-mark(er)
+book-plate
+book-post
+book-rest
+book-shrine
+book-slide
+bookbinder
+bookbindery
+bookbinding
+bookcase
+bookcases
+booked
+bookend
+booker
+bookers
+bookie
+bookies
+booking
+booking-clerk
+booking-office
+bookings
+bookish
+bookkeeper
+bookkeepers
+bookkeeping
+booklet
+bookletmobile
+booklets
+booklover
+bookmaker
+bookmaking
+bookmark
+bookmobile
+bookplate
+books
+bookseller
+booksellers
+bookselling
+bookshelf
+bookshelves
+bookshop
+booksizer
+bookstacks
+bookstall
+bookstock
+bookstore
+bookstores
+bookworm
+boolean
+Booleans
+boom
+boombox
+boomed
+boomerang
+boomerangs
+booming
+booms
+boon
+boondocks
+boondoggle
+boondoggler
+Boone
+boonies
+boonlocks
+Boonton
+boor
+boorish
+boorishly
+boorishness
+boors
+boos
+boost
+boosted
+booster
+boosting
+boosts
+boot
+boot-tree
+bootable
+bootblack
+booted
+bootee
+Bootes
+booth
+booths
+bootie
+booting
+bootjack
+Bootle
+bootleg
+bootlegged
+bootlegger
+bootleggers
+bootlegging
+bootlegs
+bootless
+boots
+bootstrap
+bootstrapped
+bootstrapping
+bootstraps
+booty
+booze
+boozehound
+boozer
+boozy
+bop
+borate
+borates
+borax
+Bordeaux
+bordello
+bordellos
+Borden
+border
+bordered
+borderer
+bordering
+borderings
+borderland
+borderlands
+borderline
+borders
+bore
+Borealis
+Boreas
+bored
+boredom
+borer
+bores
+Borg
+boric
+boring
+Boris
+born
+born-again
+borne
+Borneo
+boron
+borough
+boroughs
+Borroughs
+borrow
+borrowed
+borrower
+borrowers
+borrowing
+borrowings
+borrows
+borsch
+borscht
+borzoi
+Bosch
+Bose
+bosh
+Bosnia
+Bosnian
+bosom
+bosoms
+bosomy
+Bosporus
+boss
+bossed
+bosses
+bossily
+bossiness
+bossism
+bossom
+bossy
+Bostitch
+Boston
+Bostonian
+Bostonians
+bosun
+Boswell
+Boswellize
+Boswellizes
+botanic
+botanical
+botanically
+botanist
+botanists
+botany
+botch
+botched
+botcher
+botchers
+botches
+botching
+both
+bother
+botheration
+bothered
+bothering
+bothers
+bothersome
+Botswana
+Botticelli
+bottle
+bottle-fed
+bottle-neck
+bottled
+bottleneck
+bottlenecks
+bottler
+bottlers
+bottles
+bottling
+bottom
+bottomed
+bottoming
+bottomless
+bottomry
+bottoms
+botulinus
+botulism
+Boucher
+boudoir
+bouffant
+bougainvillea
+bough
+boughs
+bought
+bouillabaisse
+bouillon
+boulder
+boulders
+boulevard
+boulevards
+bounce
+bounced
+bouncer
+bounces
+bouncily
+bounciness
+bouncing
+bouncy
+bound
+boundaries
+boundary
+bounded
+bounden
+bounder
+bounding
+boundless
+boundlessly
+boundlessness
+bounds
+bounteous
+bounteously
+bounteousness
+bounties
+bountiful
+bountifully
+bountifulness
+bounty
+bouquet
+bouquets
+bouquiniste
+Bourbaki
+bourgeois
+bourgeoisie
+Bourke-White
+Bourne
+Bournemouth
+boustrophedon
+boustrophedonic
+bout
+boutique
+boutonniere
+bouts
+Bouvier
+bovine
+bovines
+bow
+bow-legged
+bow-legs
+bow-string
+bow-wow
+Bowditch
+bowdlerization
+bowdlerize
+bowdlerized
+bowdlerizes
+bowdlerizing
+Bowdoin
+bowed
+bowel
+bowels
+Bowen
+bower
+bowers
+bowery
+Bowes
+bowie-knife
+bowie-knives
+bowing
+bowl
+bowlder
+bowled
+bowleg
+bowlegged
+bowler
+bowlers
+bowlful
+bowline
+bowlines
+bowling
+bowls
+bowman
+bows
+bowsprit
+bowstring
+bowstrings
+bowwow
+box
+box-calf
+box-office
+boxcar
+boxcars
+boxed
+boxer
+boxers
+boxes
+Boxford
+boxhead
+boxing
+Boxing-day
+boxing-gloves
+boxing-match
+boxing-weight
+boxlike
+boxtop
+boxtops
+boxwood
+boxy
+boy
+boy!
+boy-baby
+boy-child
+boy-cousin
+boy-friend
+boy-hood
+boy-husband
+boy-scout
+boyar
+Boyce
+boycott
+boycotted
+boycotts
+Boyd
+boyfriend
+boyfriends
+boyhood
+boyish
+boyishly
+boyishness
+Boyle
+Boylston
+boys
+boysenberry
+bozo
+bpi
+bra
+brace
+braced
+bracelet
+bracelets
+bracer
+braces
+brachial
+brachycephalic
+bracing
+bracken
+bracket
+bracketed
+bracketing
+brackets
+brackish
+brackishness
+bract
+brad
+bradawl
+bradbury
+Bradford
+Bradley
+Bradshaw
+Brady
+brae
+braes
+brag
+Bragg
+braggadocio
+braggart
+bragged
+bragger
+bragging
+brags
+Brahma
+brahman
+Brahmanism
+Brahmaputra
+brahmin
+brahminic
+brahminism
+Brahms
+Brahmsian
+braid
+braided
+braiding
+braids
+Braille
+brain
+brain-dead
+brain-drain
+brain-fag
+brain-fever
+brain-sick
+brain-work
+Brainard
+Brainards
+brainchild
+brained
+braininess
+braining
+brainless
+brainlessly
+brains
+brainstem
+brainstems
+brainstorm
+brainstorming
+brainstorms
+brainteaser
+brainwash
+brainwashed
+brainwashes
+brainwashing
+brainwriting
+brainy
+braise
+brake
+brake-block
+brake-drum
+braked
+brakeman
+brakesman
+braking
+bramble
+bramble-berry
+brambles
+brambly
+bran
+branch
+branch-establishment
+branched
+branches
+branching
+branchings
+branchlike
+Branchville
+branchy
+brand
+brand-name
+brand-new
+branded
+Brandeis
+Brandel
+Brandenburg
+brander
+branding
+branding-iron
+brandish
+brandishes
+brandishing
+Brandon
+brands
+Brandt
+brandy
+brandywine
+Braniff
+Brannon
+bras
+brash
+brash-ice
+brashly
+brashness
+Brasilia
+brass
+brasserie
+brasses
+brassiere
+brassily
+brassiness
+Brasstown
+brassy
+brat
+Bratislava
+brats
+bratty
+bratwurst
+Braun
+bravado
+brave
+braved
+bravely
+braveness
+braver
+bravery
+braves
+bravest
+braving
+bravo
+bravos
+bravura
+brawl
+brawler
+brawling
+brawn
+brawniness
+brawny
+braxy
+bray
+brayed
+brayer
+braying
+brays
+braze
+brazed
+brazen
+brazen-faced
+brazenly
+brazenness
+brazer
+brazes
+brazier
+braziers
+Brazil
+Brazil-nut
+Brazilian
+brazing
+Brazzaville
+breach
+breached
+breacher
+breachers
+breaches
+breaching
+bread
+bread-and-butter
+bread-crumb
+bread-room
+bread-winner
+bread/rolls
+breadbasket
+breadboard
+breadboards
+breadbox
+breadboxes
+breadcrumb
+breadcrumbs
+breaded
+breadfruit
+breading
+breadline
+breads
+breadth
+breadthways
+breadthwise
+breadwinner
+breadwinners
+break
+break-away
+break-down
+break-even
+break-in
+break-up
+breakable
+breakables
+breakage
+breakaway
+breakdown
+breakdowns
+breaker
+breakers
+breakeven
+breakfast
+breakfasted
+breakfaster
+breakfasters
+breakfasting
+breakfasts
+breakfront
+breaking
+breakneck
+breakout
+breakpoint
+breakpoints
+breaks
+breakthrough
+breakthroughes
+breakthroughs
+breakup
+breakwater
+breakwaters
+bream
+breast
+breast-bone
+breast-fed
+breast-feed
+breast-high
+breast-summer
+breastbone
+breasted
+breastplate
+breasts
+breaststroke
+breastwork
+breastworks
+breath
+breathable
+Breathalyzer
+breathe
+breathed
+breather
+breathers
+breathes
+breathing
+breathless
+breathlessly
+breathlessness
+breaths
+breathtaking
+breathtakingly
+breathy
+brecelets
+Brecht
+bred
+breech
+breeches
+breed
+breeder
+breeding
+breeds
+breeze
+breezes
+breezeway
+breezily
+breeziness
+breezy
+Bremen
+bremsstrahlung
+Bren
+Brenda
+Brendan
+Brennan
+Brenner
+Brent
+brer
+Bresenham
+Breslau
+Brest
+brethren
+Breton
+Bretons
+Brett
+breve
+brevet
+breveted
+breveting
+brevets
+breviary
+brevier
+brevity
+brew
+brewed
+brewer
+breweries
+brewers
+brewery
+brewing
+brewpub
+brews
+Brewster
+Brezhnev
+Brian
+briar
+Briar-rose
+briars
+bribable
+bribe
+bribed
+briber
+bribers
+bribery
+bribes
+bribing
+bric-a-brac
+bric--brac
+Brice
+brick
+brick-clay
+brick-kiln
+brick-work
+brickbat
+bricked
+bricker
+bricklayer
+bricklayers
+bricklaying
+brickmaker
+bricks
+brickwork
+bridal
+bride
+bridegroom
+brides
+bridesmaid
+bridesmaids
+bridesman
+Bridewell
+bridge
+bridge-head
+bridgeable
+bridged
+bridgehead
+bridgeheads
+Bridgeport
+bridges
+Bridget
+Bridgetown
+bridgeware
+Bridgewater
+bridgework
+bridging
+bridle
+bridled
+bridles
+bridling
+Brie
+brief
+briefcase
+briefcases
+briefed
+briefer
+briefest
+briefing
+briefings
+briefly
+briefness
+briefs
+Brien
+brier
+Brier-rose
+brig
+brigade
+brigade-work
+brigade-worker
+brigades
+brigadier
+brigadier-general
+brigadiers
+Brigadoon
+brigand
+brigandage
+brigantine
+Briggs
+Brigham
+bright
+bright-eyed
+brighten
+brightened
+brightener
+brighteners
+brightening
+brightens
+brighter
+brightest
+brightly
+brightness
+Brighton
+brights
+brigs
+BRIL
+brill
+brilliance
+brilliancy
+brilliant
+brilliantine
+brilliantly
+Brillouin
+brim
+brimful
+brimfull
+brimless
+brimmed
+brimming
+brimstone
+Brindisi
+brindle
+brindled
+brine
+bring
+bringer
+bringers
+bringing
+brings
+brininess
+brink
+Brinkley
+brinkmanship
+brinksmanship
+briny
+brioche
+briquet
+briquette
+Brisbane
+brise-bise
+brisk
+brisker
+brisket
+briskly
+briskness
+bristle
+bristled
+bristles
+bristling
+bristly
+Bristol
+Bristol-board
+Brit
+Britain
+Britannic
+Britannica
+britches
+briticism
+British
+Britisher
+Britishism
+Britishly
+Briton
+Britons
+Brittany
+Britten
+brittle
+brittleness
+bro
+broach
+broached
+broaches
+broaching
+broad
+broad-brimmed
+broad-gauge
+broad-gauged
+broad-glass
+broad-minded
+broad-mindedly
+broad-mindedness
+broad-spectrum
+broadband
+broadcast
+broadcasted
+broadcaster
+broadcasters
+broadcasting
+broadcastings
+broadcasts
+broadcloth
+broaden
+broadened
+broadener
+broadeners
+broadening
+broadenings
+broadens
+broader
+broadest
+broadloom
+broadly
+broadminded
+broadness
+broadsheet
+broadside
+broadsword
+Broadway
+Brobdingnag
+brocade
+brocaded
+broccoli
+brochette
+brochure
+brochures
+Brock
+brogan
+Broglie
+brogue
+broil
+broiled
+broiler
+broilers
+broiling
+broils
+broke
+broken
+broken-down
+broken-hearted
+brokenhearted
+brokenheartedly
+brokenly
+brokenness
+broker
+brokerage
+brokers
+Bromfield
+bromide
+bromides
+bromidic
+bromine
+Bromley
+bronc
+bronchi
+bronchial
+bronchiole
+bronchioles
+bronchitic
+bronchitis
+broncho
+bronchus
+bronco
+broncobuster
+Bronte
+brontosaur
+Bronx
+bronze
+bronzed
+bronzes
+brooch
+brooches
+brood
+brood-hen
+brooder
+brooding
+broodingly
+broodmare
+broods
+broody
+brook
+Brookdale
+Brooke
+brooked
+Brookfield
+Brookhaven
+brooklet
+Brookline
+Brooklyn
+Brookmont
+brooks
+broom
+brooms
+broomstick
+broomsticks
+broth
+brothel
+brothels
+brother
+brother-hood
+brother-in-law
+brotherhood
+brotherliness
+brotherly
+brothers
+brothers-in-law
+brougham
+brought
+brouhaha
+brow
+browbeat
+browbeaten
+browbeating
+browbeats
+brown
+brown-bag
+brown-bagger
+brown-nose
+Browne
+browned
+Brownell
+browner
+brownest
+Brownian
+brownish
+brownness
+brownnoser
+brownout
+browns
+brownstone
+Brownsville
+brows
+browse
+browser
+browsing
+Bruce
+Bruckner
+Bruegel
+bruin
+bruise
+bruised
+bruiser
+bruises
+bruising
+bruit
+Brumidi
+brunch
+brunches
+Brunei
+brunet
+brunette
+Brunhilde
+Bruno
+Brunswick
+brunt
+brush
+brush-off
+brush-proof
+brush-stroke
+brushed
+brushes
+brushfire
+brushfires
+brushing
+brushlike
+brushoff
+brushwood
+brushwork
+brushy
+brusk
+brusque
+brusquely
+brusqueness
+Brussels
+brutal
+brutalities
+brutality
+brutalization
+brutalize
+brutalized
+brutalizes
+brutalizing
+brutally
+brute
+brutes
+brutish
+brutishly
+brutishness
+Brutus
+Bruxelles
+Bryan
+Bryant
+Bryce
+Bryn
+BS
+BSA
+BSO
+Bt
+BTAM
+btw.
+bub
+bubble
+bubbled
+bubblegum
+bubbles
+bubbling
+bubbly
+bubo
+buccaneer
+Buchanan
+Bucharest
+Buchenwald
+Buchwald
+buck
+buck-passer
+buck-toothed
+buckaroo
+buckboard
+buckboards
+bucked
+bucket
+bucketful
+buckets
+buckeye
+bucking
+buckle
+buckled
+buckler
+buckles
+Buckley
+buckling
+Bucknell
+buckra
+buckram
+bucks
+bucksaw
+buckshot
+buckskin
+buckskins
+buckteeth
+bucktooth
+bucktoothed
+buckwheat
+Bucky
+bucolic
+bucolically
+bud
+Budapest
+Budd
+budded
+Buddha
+Buddhism
+Buddhist
+Buddhists
+buddies
+budding
+buddy
+buddyroo
+budge
+budged
+budgerigar
+budges
+budget
+budgetary
+budgeted
+budgeter
+budgeters
+budgeting
+budgets
+budgie
+budging
+buds
+Budweiser
+Budweisers
+Buehring
+Buena
+Buenos
+buff
+buffalo
+buffaloes
+buffer
+buffered
+buffering
+buffers
+buffet
+buffeted
+buffeting
+buffetings
+buffets
+buffoon
+buffoonery
+buffoonish
+buffoons
+buffs
+bug
+bug-eyed
+bugaboo
+Bugatti
+bugbear
+bugeyed
+bugged
+bugger
+buggered
+buggers
+buggies
+bugging
+buggy
+bughouse
+bugjuice
+bugle
+bugled
+bugler
+bugles
+bugling
+bugs
+Buick
+build
+build-up
+builder
+builders
+building
+building-lease
+building-society
+buildings
+builds
+buildup
+buildups
+built
+built-in
+built-up
+builtin
+Bujumbura
+bulb
+Bulba
+bulbous
+bulbs
+Bulgaria
+Bulgarian
+bulge
+bulged
+bulging
+bulgy
+bulimarexia
+bulimia
+bulimic
+bulk
+bulked
+bulkhead
+bulkheads
+bulkiness
+bulks
+bulky
+bull
+bull's-eye
+bull-headed
+bulldog
+bulldogs
+bulldoze
+bulldozed
+bulldozer
+bulldozes
+bulldozing
+bulled
+bullet
+bullet-proof
+bulletin
+bulletins
+bulletproof
+bullets
+bullfight
+bullfighter
+bullfighting
+bullfinch
+bullfrog
+bullhead
+bullheaded
+bullheadedly
+bullheadedness
+bullhorn
+bullied
+bullies
+bulling
+bullion
+bullish
+bullishly
+bullishness
+bullneck
+bullock
+bullpen
+bullring
+bulls
+bulls-optimists
+bullseye
+bullshit
+bullshitter
+bully
+bullying
+bullyrag
+bulrush
+bulwark
+bulwarks
+bum
+bumble
+bumble-bee
+bumblebee
+bumblebees
+bumbled
+bumbler
+bumblers
+bumbles
+bumbling
+Bumbry
+bummed
+bummer
+bumming
+bump
+bumped
+bumper
+bumper-to-bumper
+bumpers
+bumpiness
+bumping
+bumpkin
+bumps
+bumptious
+bumptiously
+bumptiousness
+bumpy
+bums
+bun
+buna
+bunch
+bunched
+bunches
+bunching
+bunchy
+bunco
+buncombe
+Bundestag
+bundle
+bundled
+bundles
+bundling
+Bundoora
+Bundy
+bung
+bungalow
+bungalows
+bungee
+bunghole
+bungle
+bungled
+bungler
+bunglers
+bungles
+bungling
+bunion
+bunions
+bunk
+bunker
+bunkered
+bunkers
+bunkhouse
+bunkhouses
+bunkmate
+bunkmates
+bunko
+bunks
+bunkum
+bunnies
+bunny
+buns
+Bunsen
+bunt
+bunted
+bunter
+bunters
+bunting
+bunts
+Bunyan
+buoy
+buoyancy
+buoyant
+buoyantly
+buoyed
+buoys
+bur
+Burbank
+burble
+burbs
+Burch
+burden
+burdened
+burdening
+burdens
+burdensome
+burdock
+bureau
+bureaucracies
+bureaucracy
+bureaucrat
+bureaucratic
+bureaucratically
+bureaucratism
+bureaucratization
+bureaucratize
+bureaucrats
+BUREAUFAX
+bureaus
+bureaux
+burette
+burg
+burgeon
+burgeoned
+burgeoning
+burger
+burgess
+burgesses
+burgh
+burgher
+burghers
+burglar
+burglaries
+burglarize
+burglarized
+burglarizes
+burglarizing
+burglarproof
+burglarproofed
+burglarproofing
+burglarproofs
+burglars
+burglary
+burgle
+burgomaster
+Burgundian
+Burgundies
+burgundy
+burial
+burial-ground
+buried
+buries
+burin
+burke
+Burkes
+burl
+burlap
+burled
+burlesque
+burlesques
+burliness
+Burlingame
+Burlington
+burly
+Burma
+Burmese
+burn
+burnable
+Burne
+burned
+burner
+burners
+Burnes
+Burnett
+Burnham
+burning
+burningly
+burnings
+burnish
+burnished
+burnisher
+burnishes
+burnishing
+burnoose
+burnous
+burnout
+Burnside
+Burnsides
+burnt
+burntly
+burntness
+burp
+burped
+burping
+burps
+burr
+burr-drill
+burrito
+burro
+Burroughs
+burrow
+burrowed
+burrower
+burrowing
+burrows
+burrs
+bursa
+bursae
+bursar
+bursary
+bursitis
+burst
+burster
+burstiness
+bursting
+bursts
+bursty
+Burt
+Burton
+Burtt
+Burundi
+Burundian
+bury
+burying
+burying-ground
+bus
+bus-boy
+busboy
+busboys
+busby
+Busch
+bused
+buses
+busgirl
+bush
+bush-league
+bush-leaguer
+bush-ranger
+bushed
+bushel
+bushels
+bushes
+bushiness
+bushing
+bushman
+bushmaster
+Bushnell
+bushwhack
+bushwhacked
+bushwhacker
+bushwhacking
+bushwhacks
+bushy
+busied
+busier
+busiest
+busily
+business
+business-like
+businesses
+businesslike
+businessman
+businessmen
+businessperson
+businesswoman
+busing
+buskin
+busman
+buss
+bussed
+busses
+bussing
+bust
+bustard
+bustards
+busted
+buster
+bustle
+bustling
+busts
+busty
+busy
+busy-body
+busybody
+busyness
+busywork
+but
+butane
+butch
+butcher
+butcher's
+butchered
+butchers
+butchery
+butchers
+butler
+butlers
+butt
+butte
+butted
+butter
+butter-bean
+butter-finger
+butterball
+butterbur
+buttercup
+buttered
+butterer
+butterers
+butterfat
+Butterfield
+butterfingered
+butterfingers
+butterflies
+butterfly
+butterine
+buttering
+buttermilk
+butternut
+butters
+butterscotch
+buttery
+buttes
+butting
+buttock
+buttocks
+button
+button-down
+buttoned
+buttonhole
+buttonholes
+buttoning
+buttons
+buttonwood
+buttress
+buttressed
+buttresses
+buttressing
+Buttrick
+butts
+butyl
+butyrate
+butyric
+buxom
+Buxtehude
+Buxton
+buy
+buyback
+buyer
+buyers
+buying
+buyout
+buys
+buzz
+buzzard
+buzzards
+buzzed
+buzzer
+buzzes
+buzzing
+buzzword
+buzzwords
+buzzy
+by
+by-and-by
+by-blow
+by-election
+by-law
+by-line
+by-pass
+by-path
+by-product
+by-road
+by-stander
+by-way
+bye
+bye-bye
+bye-election
+bye-law
+byelaw
+Byelorussia
+Byers
+bygone
+bygones
+bylaw
+bylaws
+byline
+bylines
+BYOB
+bypass
+bypassed
+bypasses
+bypassing
+bypath
+byplay
+byproduct
+byproducts
+Byrd
+Byrne
+byroad
+Byron
+Byronic
+Byronism
+Byronize
+Byronizes
+byssinosis
+bystander
+bystanders
+byte
+bytes
+byway
+byways
+byword
+bywords
+Byzantine
+Byzantinize
+Byzantinizes
+Byzantium
+c
+C-note
+c.
+Ca
+ca'canny
+cab
+cab-stand
+cabal
+cabala
+caballero
+cabana
+cabaret
+cabbage
+cabbage-head
+cabbage-lettuce
+cabbage-rose
+cabbages
+cabbal
+cabbala
+cabbie
+cabby
+cabdriver
+cabhood
+cabin
+cabin-lift
+cabinet
+cabinet-maker
+cabinetmaker
+cabinetmaking
+cabinetry
+cabinets
+cabinetwork
+cabins
+cable
+cable-car
+cable-railway
+cablecast
+cablecasting
+cabled
+cablegram
+cables
+cablet
+cabling
+CABLIS
+cabman
+cabochon
+caboodle
+caboose
+Cabot
+cabotage
+Cabrini
+cabriolet
+cabs
+cabstand
+CAC
+cacao
+cacao-tree
+cache
+cached
+cachepot
+caches
+cachet
+cachexy
+caching
+cackle
+cackled
+cackler
+cackles
+cackling
+CACON
+cacophonous
+cacophony
+cacteous
+cacti
+cactus
+cactuses
+cacuminal
+cad
+CAD/CAM
+cadaver
+cadaverous
+caddie
+caddish
+caddishly
+caddishness
+caddy
+cadence
+cadenced
+cadenza
+cadet
+Cadette
+cadge
+cadger
+Cadillac
+Cadillacs
+cadmium
+cadre
+cadres
+caducei
+caduceus
+Cady
+Caesar
+Caesarean
+Caesarian
+Caesarize
+Caesarizes
+caesium
+caesura
+caesurae
+cafeteria
+caffeine
+caftan
+caf
+cafs
+cage
+caged
+cager
+cagers
+cages
+cagey
+cagily
+caginess
+caging
+cagy
+Cahill
+cahoot
+cahoots
+CAI
+caiman
+Cain
+Caine
+cairn
+Cairo
+caisson
+caitiff
+Cajan
+cajole
+cajoled
+cajolement
+cajoler
+cajolery
+cajoles
+cajoling
+Cajun
+Cajuns
+cake
+caked
+cakes
+cakewalk
+caking
+caky
+Cal
+calabash
+calaboose
+Calais
+calamari
+calamine
+calamities
+calamitous
+calamitously
+calamity
+calamity-howling
+calcareous
+Calceolaria
+calciferous
+calcification
+calcify
+calcimine
+calcine
+calcite
+calcium
+Calcomp
+calculable
+calculate
+calculated
+calculatedly
+calculates
+calculating
+calculatingly
+calculation
+calculations
+calculative
+calculator
+calculators
+calculi
+calculus
+calculuses
+Calcutta
+Calder
+caldera
+caldron
+Caldwell
+Caleb
+calendar
+calendars
+calender
+calf
+calfskin
+Calgary
+Calhoun
+Cali
+caliber
+calibers
+calibrate
+calibrated
+calibrates
+calibrating
+calibration
+calibrations
+calibrator
+calibre
+calico
+Calif
+California
+Californian
+Californians
+californium
+Caligula
+caliper
+calipers
+caliph
+caliphate
+caliphs
+calisthenic
+calisthenics
+calix
+Calixtin
+calk
+Calkins
+call
+call-back
+call-box
+call-girl
+call-in
+call-up
+calla
+callable
+Callaghan
+Callahan
+Callan
+callback
+called
+caller
+callers
+calligrapher
+calligraphic
+calligraphist
+calligraphy
+calling
+calliope
+calliper
+callipers
+callisthenics
+Callisto
+callosity
+callous
+calloused
+callously
+callousness
+callow
+callowness
+calls
+callus
+callused
+calm
+calmed
+calmer
+calmest
+calming
+calmingly
+calmly
+calmness
+calms
+calomel
+caloric
+calorie
+calories
+calorific
+calorimeter
+calorimetric
+calorimetry
+calory
+Caltech
+calumet
+calumniate
+calumniation
+calumniator
+calumnious
+calumny
+Calvary
+calve
+Calvert
+calves
+Calvin
+Calvinism
+Calvinist
+Calvinistic
+Calvinize
+Calvinizes
+calyces
+calypso
+calyx
+cam
+camaraderie
+camber
+cambia
+cambial
+cambium
+Cambodia
+Cambodian
+Cambrian
+cambric
+Cambridge
+camcorder
+Camden
+came
+camel
+camel's-hair
+camelhair
+camellia
+Camelot
+camels
+Camembert
+cameo
+camera
+cameraman
+cameramen
+cameras
+camerawoman
+Cameron
+Cameroon
+Cameroonian
+Cameroun
+Camilla
+Camille
+Camino
+camisole
+camomile
+camouflage
+camouflaged
+camouflager
+camouflages
+camouflaging
+camp
+camp-on
+campaign
+campaigned
+campaigner
+campaigners
+campaigning
+campaigns
+campanile
+campanili
+campanologist
+campanology
+Campbell
+Campbellsport
+camped
+camper
+campers
+campesino
+campfire
+campground
+camphor
+camping
+camps
+campsite
+campus
+campuses
+campy
+Campylobacter
+camshaft
+Camus
+can
+can't
+can-do
+Canaan
+Canaanite
+Canad
+Canada
+Canadian
+Canadianism
+Canadianization
+Canadianizations
+Canadianize
+Canadianizes
+Canadians
+canal
+canalization
+canalize
+canals
+canape
+canard
+canaries
+canary
+canasta
+Canaveral
+Canberra
+cancan
+cancel
+cancelation
+canceled
+canceler
+canceling
+cancellation
+cancellations
+canceller
+cancels
+cancer
+cancerous
+cancers
+Candace
+candelabra
+candelabrum
+candid
+candidacy
+candidate
+candidates
+candidature
+Candide
+candidly
+candidness
+candied
+candies
+candle
+candlelight
+Candlemas
+candlepower
+candler
+candles
+candlestick
+candlesticks
+candlewoman
+candor
+candour
+candy
+cane
+cane-sugar
+canebrake
+caner
+Canfield
+canine
+Canis
+canister
+canker
+cankerous
+cankerworm
+cannabis
+canned
+cannel
+cannelloni
+canner
+canners
+cannery
+cannibal
+cannibalism
+cannibalistic
+cannibalization
+cannibalize
+cannibalized
+cannibalizes
+cannibalizing
+cannibals
+cannily
+canniness
+canning
+cannister
+cannisters
+cannon
+cannon-fodder
+cannonade
+cannonball
+cannons
+cannot
+canny
+canoe
+canoeing
+canoeist
+canoes
+Canoga
+canon
+canonic
+canonical
+canonicalization
+canonicalize
+canonicalized
+canonicalizes
+canonicalizing
+canonically
+canonicals
+canonization
+canonize
+canons
+canopied
+Canopus
+canopy
+cans
+canst
+cant
+cantabile
+Cantabrigian
+cantaloup
+cantaloupe
+cantankerous
+cantankerously
+cantankerousness
+cantata
+canteen
+canter
+Canterbury
+canticle
+cantilever
+cantilevered
+canting
+canto
+canton
+cantonal
+Cantonese
+cantonment
+cantons
+cantor
+cantors
+Canute
+canvas
+canvasback
+canvases
+canvass
+canvassed
+canvasser
+canvassers
+canvasses
+canvassing
+canyon
+canyons
+cant
+caoutchouc
+cap
+cap-a-pie
+capabilities
+capability
+capable
+capably
+capacious
+capaciously
+capaciousness
+capacitance
+capacitances
+capacitate
+capacities
+capacitive
+capacitor
+capacitors
+capacity
+caparison
+cape
+caped
+caper
+capers
+capes
+capeskin
+Capet
+Capetown
+capias
+capilary
+capillarity
+capillary
+Capistrano
+capita
+capital
+capitalism
+capitalist
+capitalistic
+capitalistically
+capitalists
+capitalization
+capitalizations
+capitalize
+capitalized
+capitalizer
+capitalizers
+capitalizes
+capitalizing
+capitally
+capitals
+Capitan
+capitation
+Capitol
+Capitoline
+capitols
+capitulate
+capitulation
+caplet
+capo
+capon
+capped
+capping
+cappuccino
+Cappy
+caprice
+capricious
+capriciously
+capriciousness
+Capricorn
+caps
+capsize
+capstan
+capstone
+capsular
+capsule
+capsulize
+Capt
+Capt.
+captain
+captaincy
+captained
+captaining
+captains
+caption
+captions
+captious
+captiously
+captiousness
+captivate
+captivated
+captivates
+captivating
+captivation
+captivator
+captive
+captives
+captivity
+captor
+captors
+capture
+captured
+capturer
+capturers
+captures
+capturing
+Caputo
+capybara
+car
+car-pool
+car-pooler
+car-wax
+Caracas
+caracul
+carafe
+caramel
+caramelize
+carapace
+carat
+caravan
+caravans
+caravansary
+caravanserai
+caravel
+caraway
+carbide
+carbine
+carbocaneous
+carbohydrate
+carbolic
+Carboloy
+carbon
+carbon-date
+carbon-paper
+carbonaceous
+carbonate
+carbonated
+carbonates
+carbonation
+Carbondale
+Carbone
+Carbones
+carbonic
+carboniferous
+carbonization
+carbonize
+carbonized
+carbonizer
+carbonizers
+carbonizes
+carbonizing
+carbons
+Carborundum
+carboy
+carbuncle
+carbuncular
+carburetor
+carburetter
+carburettor
+carcase
+carcass
+carcasses
+carcinogen
+carcinogenic
+carcinogenicity
+carcinoma
+carcinomata
+card
+card-carrying
+card-sharper
+cardamom
+cardboard
+carder
+cardiac
+Cardiff
+cardigan
+cardinal
+cardinalities
+cardinality
+cardinally
+cardinals
+Cardiod
+cardiogram
+cardiograph
+cardiologist
+cardiology
+cardiopulmonary
+cardiovascular
+cards
+cardsharp
+cardsharper
+care
+cared
+careen
+career
+careerist
+careers
+carefree
+carefreely
+carefreeness
+careful
+careful!
+carefull
+carefully
+carefulness
+caregiver
+careless
+carelessly
+carelessness
+carer
+cares
+caress
+caressed
+caresser
+caresses
+caressing
+caressingly
+caret
+caretaker
+careworn
+Carey
+carfare
+Cargill
+cargo
+cargoes
+carhop
+Carib
+Caribbean
+caribou
+caricature
+caricaturist
+caries
+carillon
+caring
+Carinthia
+carious
+carjack
+carjacker
+carjacking
+Carl
+Carl(e)
+Carla
+Carleton
+Carletonian
+Carlin
+Carlisle
+Carlo
+carload
+Carlsbad
+Carlsbads
+Carlson
+Carlton
+Carlyle
+carman
+Carmela
+Carmen
+Carmichael
+carmine
+carnage
+carnal
+carnality
+carnally
+carnation
+Carnegie
+carnelian
+carney
+Carniola
+carnival
+carnivals
+carnivore
+carnivorous
+carnivorously
+carnivorousness
+carny
+carob
+carol
+caroler
+Carolina
+Carolinas
+Caroline
+Carolingian
+Carolinian
+Carolinians
+caroller
+carols
+Carolyn
+carom
+carotene
+carotid
+carousal
+carouse
+carousel
+carouser
+carp
+carpal
+Carpathia
+Carpathian
+Carpathians
+carpel
+carpenter
+carpenters
+carpentry
+carper
+carpet
+carpet-knight
+carpetbag
+carpetbagger
+carpeted
+carpeting
+carpets
+carpi
+carpool
+carport
+carpus
+Carr
+Carrara
+carrel
+carrell
+carriage
+carriage-forward
+carriage-free
+carriages
+carriageway
+Carrie
+carried
+carrier
+carrier-pigeon
+carriers
+carries
+carrion
+Carroll
+carrot
+carrot(s)
+carrots
+carrottop
+carroty
+carrousel
+Carruthers
+carry
+carry-on
+carry-out
+carry-over
+carryall
+carrying
+carryout
+carryover
+carryovers
+cars
+carsick
+carsickness
+Carson
+cart
+cart-horse
+cart-load
+cart-road
+cart-wright
+cartage
+carted
+cartel
+carter
+carters
+Cartesian
+Carthage
+Carthaginian
+carthorse
+Cartier
+cartilage
+cartilaginous
+carting
+cartload
+cartogram
+cartographer
+cartographic
+cartography
+carton
+cartons
+cartoon
+cartoonist
+cartoons
+cartouche
+cartridge
+cartridges
+carts
+cartway
+cartwheel
+Carty
+Caruso
+carve
+carved
+carver
+carves
+carving
+carving-knife
+carvings
+caryatid
+caryatides
+CAS
+casaba
+Casablanca
+Casanova
+cascadable
+cascade
+cascaded
+cascades
+cascading
+cascara
+case
+case-hardened
+case-law
+cased
+caseharden
+casein
+caseload
+casemate
+casement
+casements
+cases
+casework
+caseworker
+Casey
+cash
+cash-book
+cash-strapped
+cashbook
+cashed
+casher
+cashers
+cashes
+cashew
+cashier
+cashiers
+cashing
+cashless
+cashmere
+casing
+casings
+casino
+cask
+casked
+casket
+caskets
+casks
+Caspian
+casque
+Cassandra
+Cassatt
+cassava
+casserole
+casseroles
+cassette
+cassia
+cassino
+Cassiopeia
+Cassite
+Cassites
+Cassius
+cassock
+cassowary
+cast
+cast-iron
+cast-off
+castanet
+castanets
+castaway
+caste
+castellated
+caster
+casters
+castes
+castigate
+castigation
+castigator
+Castile
+Castillo
+casting
+casting-vote
+castle
+castled
+castles
+castoff
+castor
+castrate
+castration
+Castries
+Castro
+Castroism
+casts
+casual
+casually
+casualness
+casuals
+casualties
+casualty
+casuist
+casuistic
+casuistry
+cat
+cat's-paw
+cat-o'-nine-tails
+cataclysm
+cataclysmal
+cataclysmic
+catacomb
+catacombs
+catafalque
+Catalan
+catalepsy
+cataleptic
+Catalina
+catalog
+cataloged
+cataloger
+cataloging
+catalogs
+catalogue
+cataloguer
+cataloguing
+Catalonia
+catalpa
+catalyses
+catalysis
+catalyst
+catalysts
+catalytic
+catalyze
+catalyzer
+catamaran
+catapult
+cataract
+catarrh
+catastrophe
+catastrophes
+catastrophic
+catastrophically
+catatonia
+catatonic
+Catawba
+catbird
+catboat
+catcall
+catch
+Catch-22
+catch-as-catch-can
+catch-fly
+catch-title
+catchable
+catchall
+catcher
+catchers
+catches
+catching
+catchment
+catchpenny
+catchphrase
+catchpole
+catchpoll
+catchup
+catchword
+catchy
+catechism
+catechist
+catechize
+categorical
+categorically
+categories
+categorization
+categorize
+categorized
+categorizer
+categorizers
+categorizes
+categorizing
+category
+catenate
+catenati
+catenation
+cater
+cater-cornered
+catercorner
+catered
+caterer
+catering
+caterpillar
+caterpillar-wheeled
+caterpillars
+caters
+caterwaul
+catfish
+catgut
+catharses
+catharsis
+cathartic
+cathedral
+cathedrals
+Cather
+Catherine
+Catherwood
+catheter
+catheterize
+catheters
+cathode
+cathodes
+cathodic
+catholic
+catholicism
+Catholicisms
+catholicity
+catholicize
+Catholics
+Cathy
+cation
+catkin
+catlike
+catnap
+catnip
+cats
+Catskill
+Catskills
+catsup
+cattail
+cattily
+cattiness
+cattle
+cattle-lifter
+cattle-pen
+cattle-shed
+cattleman
+cattlemen
+cattleshow
+catty
+catty-corner
+catty-cornered
+CATV
+catwalk
+Caucasian
+Caucasians
+Caucasoid
+Caucasus
+Cauchy
+caucus
+caudal
+caudally
+caught
+cauldron
+cauldrons
+cauliflower
+caulk
+caulker
+caulking
+causal
+causality
+causally
+causation
+causations
+causative
+cause
+caused
+causeless
+causer
+causerie
+causes
+causeway
+causeways
+causey
+causing
+caustic
+caustically
+causticity
+causticly
+caustics
+cauterization
+cauterize
+cautery
+caution
+cautionary
+cautioned
+cautioner
+cautioners
+cautioning
+cautionings
+cautions
+cautious
+cautiously
+cautiousness
+cavalcade
+cavalier
+cavalierly
+cavalierness
+cavalry
+cavalryman
+cave
+cave-dweller
+cave-in
+cave-man
+caveat
+caveats
+caved
+caveman
+cavemen
+Cavendish
+cavern
+cavernous
+cavernously
+caverns
+caves
+caviar
+caviare
+cavil
+caviler
+caviller
+Caviness
+caving
+cavities
+cavity
+cavort
+caw
+cawing
+cay
+cayenne
+Cayley
+cayman
+Cayuga
+cayuse
+CBC
+CBS
+CC
+CCC
+CCCC
+CCL
+CCTV
+CCU
+CD
+CD-AUDIO
+CD-PROM
+CDC
+CDI
+CDT
+CDV
+Ce
+cease
+cease-fire
+ceased
+ceasefire
+ceaseless
+ceaselessly
+ceaselessness
+ceases
+ceasing
+ceca
+cecal
+Cecil
+Cecilia
+cecograph
+Cecropia
+cecum
+cedar
+cede
+ceded
+ceder
+cedilla
+ceding
+Cedric
+CEEFAX
+ceiling
+ceilings
+celandine
+Celanese
+Celebes
+celebrant
+celebrate
+celebrated
+celebrates
+celebrating
+celebration
+celebrations
+celebrator
+celebratory
+celebrities
+celebrity
+celerity
+celery
+celesta
+Celeste
+celestial
+celestially
+Celia
+celibacy
+celibate
+cell
+cellar
+cellarage
+cellars
+celled
+Cellini
+cellist
+cellists
+cello
+cellophane
+cellotape
+cells
+cellular
+cellulite
+celluloid
+cellulose
+Celsius
+celt
+Celtic
+Celticize
+Celticizes
+cemant
+cemballo
+cement
+cementation
+cemented
+cementer
+cementery
+cementing
+cements
+cementum
+cemeteries
+cemetery
+cenobite
+cenobitic
+cenotaph
+Cenozoic
+cense
+censer
+censor
+censored
+censorial
+censoring
+censorious
+censoriously
+censoriousness
+censoriuos
+censors
+censorship
+censurable
+censure
+censured
+censurer
+censures
+census
+censuses
+cent
+centaur
+centaury
+centavo
+centenarian
+centenary
+centennial
+centennially
+center
+centerboard
+centered
+centerfold
+centering
+centerpiece
+centerpieces
+centers
+centesimal
+centigrade
+centigram
+centigramme
+centiliter
+centilitre
+centime
+centimeter
+centimeters
+centimetre
+centipede
+centipedes
+centner
+central
+Centralia
+centralism
+centralist
+centrality
+centralization
+centralize
+centralized
+centralizer
+centralizes
+centralizing
+centrally
+centre
+centrepiece
+centrifugal
+centrifugally
+centrifuge
+centripetal
+centripetally
+centrist
+centroid
+cents
+centuple
+centuries
+centurion
+century
+CEO
+cephalic
+Cepheus
+ceramic
+ceramicist
+ceramics
+ceramist
+Cerberus
+cereal
+cereals
+cerebella
+cerebellar
+cerebellum
+cerebra
+cerebral
+cerebrate
+cerebration
+cerebro-spinal
+cerebrum
+cerement
+ceremonial
+ceremonially
+ceremonialness
+ceremonies
+ceremonious
+ceremoniously
+ceremoniousness
+ceremony
+Ceres
+cerise
+cerium
+cermet
+CERN
+certain
+certainly
+certainties
+certainty
+certifiable
+certifiably
+certificate
+certificated
+certificates
+certification
+certifications
+certified
+certifier
+certifiers
+certifies
+certify
+certifying
+certitude
+cerulean
+Cervantes
+cervical
+cervices
+cervix
+Cesare
+Cesarian
+cesium
+cessation
+cessations
+cession
+cessionary
+Cessna
+cesspool
+cetacean
+cetaceous
+Cetus
+Ceylon
+Ceylonese
+Cezanne
+Cezannes
+CF
+CFC
+CFO
+cha-cha
+Chablis
+Chablises
+Chad
+Chadian
+Chadwick
+chafe
+chafer
+chaff
+chaffer
+Chaffey
+chaffinch
+chaffing
+chafing
+Chagall
+chagrin
+chain
+chain-saw
+chain-smoke
+chain-smoker
+chain-stitch
+chain-store
+chained
+chaining
+chains
+chainsaw
+chair
+chair-lift
+chaired
+chairing
+chairlady
+chairlift
+chairman
+chairmanship
+chairmen
+chairperson
+chairpersons
+chairs
+chairwoman
+chairwomen
+chaise
+chalcedony
+chalcography
+Chaldea
+chalet
+chalice
+chalices
+chalk
+chalkboard
+chalked
+chalkiness
+chalking
+chalks
+chalky
+challenge
+challenge-cup
+challenged
+challenger
+challengers
+challenges
+challenging
+challis
+Chalmers
+chamber
+chamber-maid
+chamber-pot
+chambered
+chamberlain
+chamberlains
+chambermaid
+chambray
+chameleon
+chamfer
+chammy
+chamois
+chamoix
+chamomile
+champ
+champagne
+champaign
+champion
+championed
+championing
+champions
+championship
+championships
+Champlain
+chance
+chanced
+chancel
+chancellery
+chancellor
+chancellorship
+Chancellorsville
+chancellory
+chancelry
+chancery
+chances
+chanciness
+chancing
+chancre
+chancy
+chandelier
+chandeliers
+Chandigarh
+chandler
+Chang
+Changchun
+change
+changeability
+changeable
+changeableness
+changeably
+changed
+changeful
+changeless
+changeling
+changeover
+changer
+changers
+changes
+changing
+Changsha
+channel
+channeled
+channeling
+channelization
+channelize
+channelizing
+channelled
+channeller
+channellers
+channelling
+channels
+Channing
+chanson
+chant
+chanted
+chanter
+chanteuse
+chantey
+chanticleer
+chanticleers
+Chantilly
+chanting
+chants
+chanty
+Chanukah
+Chao
+chaos
+chaotic
+chaotically
+chap
+chap-book
+chaparral
+chapbook
+chapeau
+chapeaux
+chapel
+chapels
+chaperon
+chaperonage
+chaperone
+chaperoned
+chaplain
+chaplaincy
+chaplains
+chaplet
+Chaplin
+Chapman
+chapped
+chaps
+chapter
+chapters
+char
+char-a-banc
+char-broil
+charabanc
+character
+characteristic
+characteristically
+characteristics
+characterizable
+characterization
+characterizations
+characterize
+characterized
+characterizer
+characterizers
+characterizes
+characterizing
+characterless
+characters
+charactron
+charade
+charades
+charbroil
+charcoal
+charcoaled
+chard
+chardonnay
+chare
+charge
+chargeable
+charged
+charger
+chargers
+charges
+charging
+charily
+chariness
+chariot
+charioteer
+chariots
+charisma
+charismatic
+charitable
+charitableness
+charitably
+charities
+charity
+charlatan
+charlatanism
+charlatanry
+Charlemagne
+Charlemagnes
+Charles
+Charleston
+Charley
+Charlie
+Charlotte
+Charlottesville
+Charlottetown
+charm
+charmed
+charmer
+charmers
+charming
+charmingly
+charms
+charnel-house
+Charon
+charred
+chars
+chart
+Charta
+chartable
+charted
+charter
+charter-party
+chartered
+charterer
+chartering
+charters
+charting
+chartings
+chartism
+chartist
+Chartres
+chartreuse
+charts
+chartulary
+charwoman
+chary
+Charybdis
+chase
+chased
+chaser
+chasers
+chases
+chasing
+chasm
+chasms
+chassis
+chaste
+chastely
+chasten
+chasteness
+chastise
+chastised
+chastisement
+chastiser
+chastisers
+chastises
+chastising
+chastity
+chasuble
+chat
+chateau
+chateaus
+chateaux
+chatelaine
+Chatham
+Chattahoochee
+Chattanooga
+chattel
+chatter
+chatterbox
+chattered
+chatterer
+chattering
+chatters
+chattily
+chattiness
+chatting
+chatty
+Chaucer
+chauffeur
+chauffeured
+Chauncey
+Chautauqua
+chauvinism
+chauvinist
+chauvinistic
+chauvinistically
+cheap
+cheap-jack
+cheapen
+cheapened
+cheapening
+cheapens
+cheaper
+cheapest
+cheaply
+cheapness
+cheapskate
+cheat
+cheated
+cheater
+cheaters
+cheating
+cheats
+chechako
+Chechen
+Chechenian
+check
+check-clock
+check-in
+check-up
+checkable
+checkbook
+checkbooks
+checked
+checker
+checkerboard
+checkerboarded
+checkerboarding
+checkered
+checkers
+checking
+checklist
+checkmate
+checkoff
+checkout
+checkpoint
+checkpoints
+checkroom
+checks
+checksum
+checksummed
+checksumming
+checksums
+checkup
+cheek
+cheekbone
+cheekily
+cheekiness
+cheeks
+cheeky
+cheep
+cheer
+Cheer-oh
+cheered
+cheerer
+cheerful
+cheerfully
+cheerfulness
+cheeriby
+cheerily
+cheeriness
+cheering
+cheerio
+cheerleader
+cheerless
+cheerlessly
+cheerlessness
+cheers
+cheery
+cheese
+cheese-cake
+cheese-eater
+cheese-paring
+cheeseburger
+cheesecake
+cheesecloth
+cheesehead
+cheesemonger
+cheeseparing
+cheeses
+cheesiness
+cheesy
+cheetah
+Cheezit!
+chef
+chefs
+Chekhov
+chelation
+Chelsea
+Chelyabinsk
+chemical
+chemically
+chemicals
+chemise
+chemisette
+chemist
+chemist's
+chemistries
+chemistry
+chemists
+chemotherapeutic
+chemotherapy
+chemurgy
+Chen
+Cheney
+Cheng
+Chengdu
+chenille
+Cheops
+chep
+cheque
+chequeer
+chequered
+cherish
+cherished
+cherishes
+cherishing
+Cheriton
+Cherokee
+Cherokees
+cheroot
+cherries
+cherry
+cherry-tree
+chert
+cherub
+cherubic
+cherubim
+cherubs
+chervil
+Cheryl
+Chesapeake
+Cheshire
+chess
+chess-board
+chessboard
+chessman
+chessmen
+chest
+chested
+Chester
+Chesterton
+chestful
+chestnut
+chestnuts
+chests
+chesty
+chevalier
+cheviot
+Chevrolet
+chevron
+chevy
+chew
+chewed
+chewer
+chewers
+chewiness
+chewing
+chewing-gum
+chews
+chewy
+Cheyenne
+Cheyennes
+chi
+chi-chi
+Chiang
+Chianti
+chiaroscuro
+Chiba
+chic
+Chicago
+Chicagoan
+Chicagoans
+Chicana
+Chicanas
+chicane
+chicanery
+Chicano
+Chicanos
+chichi
+chick
+chick-pea
+chickadee
+chickadees
+Chickasaw
+Chickasaws
+chicken
+chicken-hearted
+chicken-livered
+chicken-pox
+chickenfeed
+chickenhearted
+chickenpox
+chickens
+Chickie!
+chickpea
+chicks
+chickweed
+chicle
+chicness
+chicory
+chid
+chidden
+chide
+chided
+chides
+chiding
+chidingly
+chief
+chiefdom
+chiefly
+chiefs
+chieftain
+chieftains
+chiffon
+chiffonier
+chigger
+chignon
+chilblain
+chilblained
+child
+childbearing
+childbirth
+childcare
+childe
+childhood
+childish
+childishly
+childishness
+childless
+childlessness
+childlike
+childproof
+children
+childrens
+childs
+Chilean
+Chiles
+chili
+chill
+chilled
+chiller
+chillers
+chilli
+chillier
+chilliness
+chilling
+chillingly
+chillness
+chills
+chilly
+chimaera
+chime
+chimer
+chimera
+chimeric
+chimerical
+chimes
+chimney
+chimney-corner
+chimney-pot
+chimney-sweep
+chimneyer
+chimneys
+chimp
+chimpanzee
+chin
+chin-chin
+chin-up
+chin-wag
+china
+china-clay
+china-closet
+China-town
+Chinaman
+Chinamen
+Chinas
+Chinatown
+chinaware
+Chinawoman
+chinchilla
+chine
+Chinese
+Ching
+chink
+chinked
+chinks
+chinned
+chinner
+chinners
+chinning
+chino
+Chinook
+chinos
+chins
+chintz
+chintzy
+chip
+chipmunk
+chipmunks
+Chippendale
+chipper
+Chippewa
+chippie
+chips
+chirograph
+chirography
+chiropodist
+chiropody
+chiropractic
+chiropractor
+chirp
+chirped
+chirping
+chirps
+chirpy
+chirr
+chirrup
+chisel
+chiseled
+chiseler
+chiseller
+chisels
+Chisholm
+chit
+chit-chat
+chitchat
+chitin
+chitinous
+chitlings
+chitlins
+Chittagong
+chitterlings
+chivalrous
+chivalrously
+chivalrousness
+chivalry
+chive
+chives
+chlamydia
+Chloe
+chloral
+chlordane
+chloride
+chlorinate
+chlorination
+chlorine
+chlorofluorocarbon
+chloroform
+chlorophyl
+chlorophyll
+chloroplast
+chloroplasts
+chlorosis
+chlorous
+choc-ice
+chocaholic
+chock
+chock-a-block
+chock-full
+chockablock
+chocks
+chocoholic
+chocolate
+chocolates
+chocolatey
+chocolaty
+Choctaw
+Choctaws
+choice
+choices
+choicest
+choir
+choir-master
+choirboy
+choirmaster
+choirs
+choke
+chokecherry
+choked
+choker
+chokers
+chokes
+choking
+choky
+cholecyst
+choledoch
+choler
+cholera
+choleric
+cholerie
+cholesterin
+cholesterol
+chomp
+Chomsky
+Chongqing
+choo-choo
+choose
+choose!
+chooser
+choosers
+chooses
+choosey
+choosiness
+choosing
+choosy
+chop
+chophouse
+Chopin
+chopped
+chopper
+choppers
+choppily
+choppiness
+chopping
+choppy
+chops
+chopstick
+chopsticks
+chopy
+choral
+chorale
+chorally
+chord
+chordal
+chordate
+chorded
+chording
+chords
+chore
+chorea
+choreograph
+choreographer
+choreographic
+choreographically
+choreography
+chores
+choring
+chorist
+chorister
+choroid
+chortle
+chortler
+chorus
+chorus-singer
+chorused
+choruses
+chose
+chosen
+Chou
+chow
+chowder
+chrestomathy
+Chris
+chrism
+Christ
+Christchurch
+christen
+Christendom
+christened
+christening
+christens
+Christensen
+Christenson
+Christian
+Christiana
+Christianity
+Christianization
+Christianizations
+Christianize
+Christianizer
+Christianizers
+Christianizes
+Christianizing
+Christians
+Christiansen
+Christianson
+Christie
+Christina
+Christine
+Christlike
+Christmas
+Christmastide
+Christmastime
+Christoffel
+Christoph
+Christopher
+Christy
+chromatic
+chromatically
+chromatin
+chromatogram
+chromatograph
+chromatography
+chrome
+chromium
+chromium-plated
+chromo-paper
+chromograph
+chromolithograph
+chromolithography
+chromophotography
+chromosomal
+chromosome
+chromosphere
+chromoxylography
+chronic
+chronically
+chronicle
+chronicled
+chronicler
+chroniclers
+chronicles
+chronogram
+chronograph
+chronography
+chronological
+chronologically
+chronologies
+chronologist
+chronology
+chronometer
+chrysalides
+chrysalis
+chrysanthemum
+Chrysler
+chub
+chubbier
+chubbiest
+chubbiness
+chubby
+chuck
+chuck-full
+chuckhole
+chuckle
+chuckled
+chucklehead
+chuckles
+chucks
+chug
+chug-a-lug
+chukka
+chum
+chummily
+chumminess
+chummy
+chump
+Chungking
+chunk
+chunkiness
+chunks
+chunky
+church
+church-goer
+church-rate
+churches
+churchgoer
+churchgoing
+Churchill
+Churchillian
+churchly
+churchman
+churchmen
+churchwarden
+churchwoman
+churchwomen
+churchy
+churchyard
+churchyards
+churl
+churlish
+churlishly
+churlishness
+churn
+churned
+churner
+churning
+churns
+chute
+chutes
+chutney
+chutzpa
+chutzpah
+chyme
+CIA
+ciao
+cicada
+cicadae
+cicatrice
+cicatrices
+cicatrix
+cicatrization
+cicatrize
+cicero
+cicerone
+Ciceronian
+Ciceronianize
+Ciceronianizes
+CID
+cider
+cigar
+cigaret
+cigarette
+cigarettes
+cigarillo
+cigars
+cilantro
+cilia
+cilium
+cinch
+cinchona
+Cincinnati
+cincture
+cinder
+Cinderella
+cinders
+Cindy
+cine-camera
+cine-film
+cine-mogul
+cine-projektor
+cinema
+cinema-goer
+cinema-star
+cinemascope
+cinematheque
+cinematic
+cinematization
+cinematograph
+cinematographer
+cinematographic
+cinematography
+cinemicrography
+cineprojector
+cinerama
+cinerary
+cinnabar
+cinnamon
+cinquefoil
+CIP
+cipher
+cipherer
+ciphering
+ciphers
+ciphertext
+ciphertexts
+circa
+circadian
+Circe
+circle
+circled
+circles
+circlet
+circling
+circuit
+circuital
+circuitous
+circuitously
+circuitousness
+circuitry
+circuits
+circuity
+circulant
+circular
+circularity
+circularize
+circularly
+circulate
+circulated
+circulates
+circulating
+circulation
+circulative
+circulator
+circulatory
+circumcise
+circumcision
+circumference
+circumferential
+circumflex
+circumfluent
+circumjacent
+circumlocution
+circumlocutions
+circumlocutory
+circumnavigate
+circumnavigated
+circumnavigates
+circumnavigation
+circumpolar
+circumscribe
+circumscribed
+circumscribing
+circumscription
+circumspect
+circumspection
+circumspectly
+circumstance
+circumstanced
+circumstances
+circumstantial
+circumstantially
+circumstantials
+circumvent
+circumventable
+circumvented
+circumventing
+circumvention
+circumvents
+circus
+circuses
+Ciriolanus
+ciritique
+cirque
+cirrhosis
+cirrhotic
+cirri
+cirricula
+cirrus
+cisalpine
+cistern
+cisterns
+citadel
+citadels
+citation
+citations
+cite
+cited
+cites
+cities
+citified
+citing
+citizen
+citizenry
+citizens
+citizenship
+citreous
+citric
+Citroen
+citron
+citronella
+citrous
+citrus
+city
+city-state
+cityscape
+citywide
+civet
+civic
+civics
+civies
+civil
+civilian
+civilians
+civilisation
+civilise
+civility
+civilization
+civilizations
+civilize
+civilized
+civilizes
+civilizing
+civilly
+civvies
+Cl
+clack
+clack-valve
+clad
+cladding
+claim
+claimable
+claimant
+claimants
+claimed
+claimer
+claiming
+claims
+Claire
+clairvoyance
+clairvoyant
+clairvoyantly
+clam
+clamant
+clambake
+clamber
+clambered
+clamberer
+clambering
+clambers
+clammily
+clamminess
+clammy
+clamor
+clamored
+clamoring
+clamorous
+clamors
+clamour
+clamp
+clampdown
+clamped
+clamping
+clamps
+clams
+clan
+clandestine
+clandestinely
+clang
+clanged
+clanging
+clangor
+clangorous
+clangorously
+clangour
+clangs
+clank
+clannish
+clannishness
+clansman
+clap
+clapboard
+Clapeyron
+clapper
+clapping
+claps
+claptrap
+claque
+Clara
+Clare
+Claremont
+Clarence
+Clarendon
+claret
+clarification
+clarifications
+clarified
+clarifies
+clarify
+clarifying
+clarinet
+clarinetist
+clarinettist
+clarion
+claritist
+clarity
+Clark
+Clarke
+Clarridge
+clash
+clashed
+clashes
+clashing
+clasp
+clasp-knife
+clasped
+clasping
+clasps
+class
+class-book
+class-conscious
+class-consciousness
+class-mate
+class-room
+class-struggle
+classaurus
+classed
+classes
+classfellow
+classic
+classical
+classically
+classicism
+classicist
+classics
+classifiable
+classification
+classifications
+classificator
+classified
+classifier
+classifiers
+classifies
+classifile
+classify
+classifying
+classiness
+classing
+classless
+classman
+classmate
+classmates
+classroom
+classrooms
+classwork
+classy
+clatter
+clattered
+clattering
+Claude
+Claudia
+Claudio
+Claus
+clausal
+clause
+Clausen
+clauses
+Clausius
+claustrophobia
+claustrophobic
+clavichord
+clavicle
+clavier
+claw
+clawed
+clawing
+claws
+clay
+clayey
+clays
+Clayton
+clean
+clean-cut
+clean-shaven
+cleanable
+cleaned
+cleaner
+cleaners
+cleanest
+cleaning
+cleanliness
+cleanly
+cleanness
+cleans
+cleanse
+cleansed
+cleanser
+cleansers
+cleanses
+cleansing
+cleanup
+clear
+clear-cut
+clear-headed
+clear-headedness
+clear-sighted
+clearance
+clearances
+cleared
+clearer
+clearest
+clearheaded
+clearing
+clearinghouse
+clearings
+clearly
+clearness
+clears
+Clearwater
+cleat
+cleats
+cleavage
+cleave
+cleaved
+cleaver
+cleavers
+cleaves
+cleaving
+clef
+cleft
+clefts
+clematis
+clemency
+Clemens
+clement
+Clemente
+clemently
+Clemson
+clench
+clenched
+clenches
+Cleopatra
+clerestory
+clergy
+clergyman
+clergymen
+clergywoman
+cleric
+clerical
+clericalism
+clerically
+clerk
+clerked
+clerking
+clerks
+clerkship
+Cleveland
+clever
+cleverer
+cleverest
+cleverly
+cleverness
+clevis
+clew
+cliche
+cliched
+cliches
+clich
+click
+clicked
+clicker
+clicking
+clicks
+client
+clientage
+clientele
+clients
+cliff
+cliff-hanger
+cliffhanger
+Clifford
+cliffs
+Clifton
+climacteric
+climactic
+climate
+climates
+climatic
+climatically
+climatologist
+climatology
+climax
+climaxed
+climaxes
+climb
+climb-down
+climbable
+climbed
+climber
+climbers
+climbing
+climbing-iron
+climbs
+clime
+climes
+clinch
+clinched
+clincher
+clinches
+cling
+clinger
+clinging
+clings
+clingy
+clinic
+clinical
+clinically
+clinician
+clinics
+clink
+clinked
+clinker
+clinometer
+Clint
+Clinton
+Clio
+cliometric
+cliometrician
+cliometrics
+clip
+clip-on
+clipboard
+cliping
+clipped
+clipper
+clippers
+clippie
+clipping
+clippings
+clips
+clique
+cliques
+cliquey
+cliquish
+cliquishly
+cliquishness
+clit
+clitoral
+clitorides
+clitoris
+Clive
+cloaca
+cloacae
+cloak
+cloak-and-dagger
+cloak-room
+cloakroom
+cloaks
+clobber
+clobbered
+clobbering
+clobbers
+cloche
+clock
+clock-work
+clocked
+clocker
+clockers
+clocking
+clockings
+clocks
+clockwatcher
+clockwise
+clockwork
+clod
+cloddish
+clodhopper
+clodhoppers
+clods
+clog
+clogged
+clogging
+clogs
+cloisonne
+cloister
+cloistered
+cloisters
+cloistral
+clomp
+clonal
+clone
+cloned
+clones
+cloning
+clonk
+clop
+close
+close-fisted
+close-fitting
+close-grained
+close-knit
+close-mouthed
+close-set
+close-up
+closed
+closed-captioned
+closed-circuit
+closefisted
+closely
+closemouthed
+closeness
+closenesses
+closeout
+closer
+closers
+closes
+closest
+closet
+closeted
+closets
+closeup
+closing
+closure
+closures
+clot
+cloth
+clothe
+clothed
+clothes
+clothes-brush
+clothes-line
+clothes-peg
+clothes-pin
+clothes-wringer
+clotheshorse
+clothesline
+clothespin
+clothier
+clothier's
+clothing
+Clotho
+clotting
+cloture
+cloud
+cloudburst
+clouded
+cloudier
+cloudiest
+cloudiness
+clouding
+cloudless
+clouds
+cloudy
+clout
+clove
+clove(s)
+cloven
+clover
+cloverleaf
+cloverleaves
+cloves
+clown
+clowning
+clownish
+clownishly
+clownishness
+clowns
+cloy
+cloying
+club
+club-law
+club-room
+club-shaped
+clubbed
+clubbing
+clubfeet
+clubfoot
+clubfooted
+clubhouse
+clublaw
+clubroom
+clubs
+cluck
+clucked
+clucking
+clucks
+clue
+clueless
+clues
+Cluj
+clump
+clump-sole
+clumped
+clumping
+clumps
+clumpy
+clumsily
+clumsiness
+clumsy
+clung
+clunk
+clunker
+clunkhead
+clunky
+cluster
+clustered
+clustering
+clusterings
+clusters
+clutch
+clutched
+clutches
+clutching
+clutter
+cluttered
+cluttering
+clutters
+Clyde
+Clytemnestra
+Cm
+CMI
+cnidarian
+CNN
+CNS
+co-author
+co-authorship
+co-citation
+co-ed
+co-editor
+co-education
+co-educational
+co-existence
+co-occurrence
+co-op
+co-operate
+co-operation
+co-operative
+co-operator
+co-opt
+co-optation
+co-ordinal
+co-ordinate
+co-ordination
+co-star
+co-worker
+coacervate
+coach
+coach-and-four
+coach-box
+coached
+coacher
+coaches
+coaching
+coachman
+coachmen
+coadjutor
+coagulant
+coagulate
+coagulation
+coagulator
+coal
+coal-bed
+coal-black
+coal-carrier
+coal-factor
+coal-fields
+coal-gas
+coal-mine
+coal-mining
+coal-pit
+coal-scuttle
+coal-seam
+coal-tar
+coalesce
+coalesced
+coalescence
+coalescent
+coalesces
+coalescing
+coalface
+coaling
+coalition
+coalitionist
+coals
+coarse
+coarse-grained
+coarsely
+coarsen
+coarsened
+coarseness
+coarser
+coarsest
+coast
+coastal
+coasted
+coastee
+coaster
+coasters
+coastguard
+coasting
+coastline
+coasts
+coastwise
+coat
+coat-of-arms
+coat-tail
+coated
+Coates
+coating
+coatings
+coats
+coattail
+coauthor
+coax
+coaxed
+coaxer
+coaxes
+coaxial
+coaxing
+coaxingly
+cob
+cob(-loaf)
+cob(-nut)
+cobalt
+Cobb
+cobble
+cobble(-stone)
+cobbled
+cobbler
+cobblers
+cobblestone
+cobblestones
+COBOL
+cobra
+cobweb
+cobwebby
+cobwebs
+coca
+coca-cola
+cocain
+cocaine
+cocci
+coccus
+coccyges
+coccyx
+cochineal
+Cochise
+cochlea
+cochleae
+cochlear
+Cochran
+Cochrane
+cock
+cock-a-doodle-doo
+cock-a-hoop
+cock-crow(ing)
+cock-eyed
+cock-fighting
+cock-horse
+cock-sure
+cock-tailed
+cockade
+cockamamie
+cockatoo
+cockatrice
+cockboat
+cockchafer
+cockcrow
+cocked
+cocker
+cockerel
+cockeyed
+cockfight
+cockfighting
+cockily
+cockiness
+cocking
+cockle
+cockleshell
+cockney
+cockney-bred
+cockpit
+cockroach
+cocks
+cockscomb
+cocksure
+cocksy
+cocktail
+cocktails
+cocky
+coco
+coco-nut
+cocoa
+cocoanut
+coconut
+coconuts
+cocoon
+cocoons
+cocroach
+cod
+coda
+CODATA
+Coddington
+coddle
+code
+codebook
+CODEC
+coded
+codeine
+CODEN
+codependency
+codependent
+coder
+coders
+codes
+codeword
+codewords
+codex
+codfish
+codger
+codices
+codicil
+codicology
+codification
+codifications
+codified
+codifier
+codifiers
+codifies
+codify
+codifying
+coding
+codings
+codpiece
+Cody
+coed
+coeditor
+coeducation
+coeducational
+coefficient
+coefficients
+coelenterate
+coequal
+coequally
+coerce
+coerced
+coercer
+coerces
+coercible
+coercing
+coercion
+coercive
+coeval
+coevally
+coexist
+coexisted
+coexistence
+coexistent
+coexisting
+coexists
+coextensive
+cofactor
+coffe
+coffee
+coffee-bar
+coffee-bean
+coffee-cup
+coffee-grinder
+coffee-grounds
+coffee-house
+coffee-mill
+coffee-palace
+coffee-pot
+coffee-room
+coffee-set
+coffee-stall
+coffeecake
+coffeecup
+coffeehouse
+coffeemaker
+coffeepot
+coffees
+coffer
+coffer-dam
+cofferdam
+coffers
+Coffey
+coffin
+coffins
+Coffman
+cog
+cog-wheel
+cogency
+cogent
+cogently
+cogged
+cogitable
+cogitate
+cogitated
+cogitates
+cogitating
+cogitation
+cogitative
+cogitator
+cognac
+cognate
+cognition
+cognitional
+cognitive
+cognitively
+cognizable
+cognizance
+cognizant
+cognize
+cognomen
+cognomina
+cognoscente
+cognoscenti
+cogs
+cogwheel
+cohabit
+cohabitant
+cohabitation
+cohabitations
+Cohan
+coheir
+coheiress
+Cohen
+cohere
+cohered
+coherence
+coherency
+coherent
+coherently
+coherer
+coheres
+cohering
+cohesion
+cohesive
+cohesively
+cohesiveness
+Cohn
+coho
+cohort
+coif
+coiffure
+coil
+coiled
+coiling
+coils
+Coimbatore
+coin
+coinage
+coincide
+coincided
+coincidence
+coincidences
+coincident
+coincidental
+coincidentally
+coincides
+coinciding
+coined
+coiner
+coining
+coins
+coinsurance
+coir
+coital
+coitus
+coke
+coke-oven
+cokes
+col
+cola
+colander
+Colby
+colchicum
+cold
+cold-blooded
+cold-bloodedly
+cold-bloodedness
+cold-footed
+cold-footer
+cold-hearted
+cold-heartedly
+cold-heartedness
+cold-shoulder
+coldblooded
+colder
+coldest
+coldly
+coldness
+colds
+Cole
+Coleman
+Coleridge
+coleslaw
+Colette
+coleus
+Colgate
+colic
+colicky
+coliform
+coliseum
+colitis
+collaborate
+collaborated
+collaborates
+collaborating
+collaboration
+collaborationist
+collaborations
+collaborative
+collaborator
+collaborators
+collage
+collagen
+collapse
+collapsed
+collapses
+collapsible
+collapsing
+collar
+collar-bone
+collar-work
+collarbone
+collard
+collared
+collaring
+collarless
+collars
+collate
+collateral
+collaterally
+collation
+collator
+colleague
+colleagues
+collect
+collectable
+collectanea
+collected
+collectedly
+collectible
+collecting
+collection
+collections
+collective
+collectively
+collectives
+collectivism
+collectivist
+collectivity
+collectivization
+collectivize
+collector
+collectors
+collects
+colleen
+college
+colleger
+colleges
+collegiality
+collegian
+collegiate
+collide
+collided
+collides
+colliding
+collie
+collier
+colliery
+collies
+collinear
+Collins
+collision
+collisions
+collocate
+collocation
+collodion
+colloid
+colloidal
+collop
+colloq
+colloquia
+colloquial
+colloquialism
+colloquiality
+colloquially
+colloquium
+colloquy
+collotype
+collude
+collusion
+collusive
+Colo
+Cologne
+Colombia
+Colombian
+Colombians
+Colombo
+colon
+colonel
+colonelcy
+colonels
+colonial
+colonialism
+colonialist
+colonially
+colonials
+colonies
+colonist
+colonists
+colonization
+colonize
+colonized
+colonizer
+colonizers
+colonizes
+colonizing
+colonnade
+colonnaded
+colons
+colony
+colophon
+colophony
+color
+color-blind
+color-coordinated
+Coloradan
+Colorado
+Coloradoan
+colorant
+coloration
+coloratura
+colorblind
+colorblindness
+colored
+colorer
+colorers
+colorfast
+colorfastness
+colorful
+colorfully
+colorfulness
+colorimeter
+coloring
+colorings
+colorization
+colorize
+colorless
+colorlessly
+colorlessness
+colormap
+colors
+colossal
+colossally
+Colosseum
+colossi
+colossus
+colostomy
+colostrum
+colour
+colour-bearer
+colour-blind
+colour-box
+colour-fast
+colour-man
+colour-rinse
+colourable
+coloured
+colourist
+colourless
+coloury
+colportage
+colporteur
+colt
+coltish
+colts
+coltsfoot
+columbarium
+Columbia
+Columbian
+columbine
+Columbus
+column
+columna
+columnar
+columned
+columnist
+columnize
+columnized
+columnizes
+columnizing
+columns
+colza
+COM
+coma
+comaker
+Comanche
+comatose
+comb
+combat
+combatant
+combatants
+combated
+combating
+combative
+combativeness
+combats
+combed
+comber
+combers
+combinable
+combination
+combinational
+combinations
+combinative
+combinator
+combinatorial
+combinatorially
+combinatoric
+combinatorics
+combinators
+combine
+combine-harvester
+combined
+combiner
+combines
+combing
+combings
+combining
+combo
+combs
+combustibility
+combustible
+combustion
+combustive
+Comdex
+come
+come!
+come-at-able
+come-down
+come-hither
+come-on
+comeback
+comedian
+comedians
+comedic
+comedienne
+comedies
+comedown
+comedy
+comeliness
+comely
+comer
+comers
+comes
+comestible
+comestibles
+comet
+cometary
+comets
+comeuppance
+comfit
+comfort
+comfortabilities
+comfortability
+comfortable
+comfortableness
+comfortably
+comforted
+comforter
+comforters
+comforting
+comfortingly
+comfortless
+comforts
+comfrey
+comfy
+comic
+comical
+comicality
+comically
+comics
+Cominform
+coming
+comings
+comity
+comma
+command
+commandant
+commandants
+commanded
+commandeer
+commander
+commander-in-chief
+commanderment
+commandero
+commanders
+commandery
+commanding
+commandingly
+commandment
+commandments
+commando
+commands
+commas
+commemorate
+commemorated
+commemorates
+commemorating
+commemoration
+commemorative
+commemorator
+commence
+commenced
+commencement
+commencements
+commences
+commencing
+commend
+commendable
+commendably
+commendation
+commendations
+commendatory
+commended
+commending
+commends
+commensurable
+commensurate
+commensurately
+comment
+commentaries
+commentary
+commentate
+commentator
+commentators
+commented
+commenting
+comments
+commerce
+commercial
+commercialism
+commercialization
+commercialize
+commercially
+commercialness
+commercials
+commie
+commingle
+commiserate
+commiseration
+commiserative
+commision
+commissar
+commissariat
+commissary
+commission
+commission-agency
+commission-agent
+commissionaire
+commissioned
+commissioner
+commissioners
+commissioning
+commissions
+commisure
+commit
+commitment
+commitments
+commits
+committal
+committed
+committee
+committeeman
+committeemen
+committees
+committeewoman
+committeewomen
+committing
+commix
+commixture
+commode
+commodious
+commodities
+commodity
+commodore
+commodores
+common
+common-law
+commonalities
+commonality
+commonalty
+commoner
+commoners
+commonest
+commonly
+commonness
+commonplace
+commonplaces
+commons
+commonsense
+commonweal
+commonwealth
+commonwealths
+commotion
+communal
+communally
+commune
+communes
+communicability
+communicable
+communicably
+communicant
+communicants
+communicate
+communicated
+communicates
+communicating
+communication
+communications
+communicative
+communicativeness
+communicator
+communicators
+communion
+communique
+communiqu
+communism
+communist
+communistic
+communists
+communities
+community
+commutable
+commutation
+commutative
+commutativity
+commutator
+commute
+commuted
+commuter
+commuters
+commutes
+commuting
+Comoros
+comp
+compact
+compacted
+compacter
+compactest
+compacting
+compaction
+compactly
+compactness
+compactor
+compactors
+compacts
+compade
+companies
+companion
+companionable
+companionably
+companions
+companionship
+companionway
+company
+comparability
+comparable
+comparably
+comparand
+comparative
+comparatively
+comparatives
+comparator
+comparators
+compare
+compared
+compares
+comparing
+comparison
+comparisons
+compartment
+compartmental
+compartmentalization
+compartmentalize
+compartmentalized
+compartmentalizes
+compartmentalizing
+compartmented
+compartments
+compass
+compass-card
+compasses
+compassion
+compassionate
+compassionately
+compatibilities
+compatibility
+compatible
+compatibles
+compatibly
+compatriot
+compeer
+compel
+compelled
+compelling
+compellingly
+compels
+compend
+COMPENDEX
+compendia
+compendious
+compendium
+compensate
+compensated
+compensates
+compensating
+compensation
+compensations
+compensator
+compensatory
+compete
+competed
+competence
+competency
+competent
+competently
+competes
+competing
+competition
+competitions
+competitive
+competitively
+competitiveness
+competitor
+competitors
+compilation
+compilations
+compilator
+compile
+compiled
+compiler
+compilers
+compiles
+compiling
+complacence
+complacency
+complacent
+complacently
+complain
+complainant
+complained
+complainer
+complainers
+complaining
+complains
+complaint
+complaints
+complaisance
+complaisant
+complaisantly
+complected
+complement
+complementary
+complementation
+complemented
+complementer
+complementers
+complementing
+complements
+complete
+completed
+completely
+completeness
+completes
+completing
+completion
+completions
+complex
+complexes
+complexion
+complexional
+complexioned
+complexities
+complexity
+complexly
+compliance
+compliant
+compliantly
+complicacy
+complicate
+complicated
+complicatedly
+complicates
+complicating
+complication
+complications
+complicator
+complicators
+complicit
+complicity
+complied
+compliment
+complimentary
+complimented
+complimenter
+complimenters
+complimenting
+compliments
+comply
+complying
+component
+componentry
+components
+componentwise
+comport
+comportment
+compose
+composed
+composedly
+composer
+composers
+composes
+composing
+composing-machine
+composite
+compositely
+composites
+composition
+compositional
+compositions
+compositor
+compost
+composure
+compote
+compound
+compoundable
+compounded
+compounding
+compounds
+comprehend
+comprehended
+comprehending
+comprehends
+comprehensibility
+comprehensible
+comprehensibly
+comprehension
+comprehensive
+comprehensively
+comprehensiveness
+compress
+compressed
+compresses
+compressibility
+compressible
+compressing
+compression
+compressive
+compressor
+comprise
+comprised
+comprises
+comprising
+compromise
+compromised
+compromiser
+compromisers
+compromises
+compromising
+compromisingly
+Compton
+comptroller
+comptrollers
+compulsion
+compulsions
+compulsive
+compulsively
+compulsiveness
+compulsorily
+compulsory
+compunction
+Compuserve
+computability
+computable
+computation
+computational
+computationally
+computations
+compute
+computed
+computer
+computer-aided
+computer-assisted
+computerist
+computerization
+computerize
+computerized
+computerizes
+computerizing
+computers
+computes
+computing
+comrade
+comradely
+comrades
+comradeship
+con
+Conakry
+Conant
+conation
+conative
+concatenate
+concatenated
+concatenates
+concatenating
+concatenation
+concatenations
+concave
+concavely
+concaveness
+concavity
+conceal
+concealable
+concealed
+concealer
+concealers
+concealing
+concealment
+conceals
+concede
+conceded
+concedes
+conceding
+conceit
+conceited
+conceitedly
+conceitedness
+conceits
+conceivable
+conceivably
+conceive
+conceived
+conceives
+conceiving
+concentrate
+concentrated
+concentrates
+concentrating
+concentration
+concentrations
+concentrator
+concentrators
+concentric
+concentrically
+concentrity
+Concepcion
+concept
+conception
+conceptional
+conceptions
+concepts
+conceptual
+conceptualization
+conceptualizations
+conceptualize
+conceptualized
+conceptualizes
+conceptualizing
+conceptually
+concerment
+concern
+concerned
+concernedly
+concerning
+concerns
+concert
+concert-hall
+concerted
+concertedly
+concerti
+concertina
+concertize
+concertmaster
+concerto
+concerts
+concession
+concessionaire
+concessional
+concessionary
+concessions
+concessive
+conch
+concierge
+conciliate
+conciliation
+conciliator
+conciliatory
+conciness
+concise
+concisely
+conciseness
+concision
+conclave
+conclude
+concluded
+concludes
+concluding
+conclusion
+conclusions
+conclusive
+conclusively
+conclusiveness
+concoct
+concoction
+concomitans
+concomitant
+concomitantly
+concord
+concordance
+concordant
+concordat
+Concorde
+Concordia
+concourse
+concrete
+concretely
+concreteness
+concretes
+concretion
+concubinage
+concubine
+concupiscence
+concupiscent
+concur
+concurred
+concurrence
+concurrencies
+concurrency
+concurrent
+concurrently
+concurring
+concurs
+concuss
+concussion
+concussive
+condemn
+condemnation
+condemnations
+condemnatory
+condemned
+condemner
+condemners
+condemning
+condemns
+condensable
+condensate
+condensation
+condense
+condensed
+condenser
+condenses
+condensing
+condescend
+condescending
+condescendingly
+condescension
+condign
+condiment
+condition
+conditional
+conditionally
+conditionals
+conditioned
+conditioner
+conditioners
+conditioning
+conditions
+condo
+condole
+condolence
+condom
+condominium
+condonation
+condone
+condoned
+condones
+condoning
+condor
+conduce
+conducive
+conduciveness
+conduct
+conductance
+conducted
+conductibility
+conductible
+conducting
+conduction
+conductive
+conductivity
+conductor
+conductors
+conductress
+conducts
+conduit
+cone
+cones
+Conestoga
+coney
+confab
+confabulate
+confabulation
+confection
+confectioner
+confectioner's
+confectionery
+confectioners
+confederacy
+confederate
+confederates
+confederation
+confederations
+confer
+conferable
+conferee
+conference
+conferences
+conferment
+conferral
+conferred
+conferrer
+conferrers
+conferring
+confers
+confess
+confessed
+confessedly
+confesses
+confessing
+confession
+confessional
+confessions
+confessor
+confessors
+confetti
+confidant
+confidante
+confidants
+confide
+confided
+confidence
+confidences
+confident
+confidental
+confidential
+confidentiality
+confidentially
+confidently
+confider
+confides
+confiding
+confidingly
+configurable
+configuration
+configurations
+configure
+configured
+configures
+configuring
+confine
+confined
+confinement
+confinements
+confiner
+confines
+confining
+confirm
+confirmand
+confirmation
+confirmations
+confirmative
+confirmatory
+confirmed
+confirmee
+confirming
+confirms
+confiscate
+confiscated
+confiscates
+confiscating
+confiscation
+confiscations
+confiscator
+confiscatory
+conflagration
+conflate
+conflation
+conflict
+conflicted
+conflicting
+conflicts
+confluence
+confluent
+conflux
+confocal
+conform
+conformable
+conformal
+conformance
+conformation
+conformed
+conformer
+conforming
+conformism
+conformist
+conformity
+conforms
+confound
+confounded
+confounding
+confounds
+confraternity
+confrere
+confreres
+confront
+confrontation
+confrontational
+confrontations
+confronted
+confronter
+confronters
+confronting
+confronts
+Confucian
+Confucianism
+Confucius
+confuse
+confused
+confusedly
+confuser
+confusers
+confuses
+confusing
+confusingly
+confusion
+confusions
+confutation
+confute
+conga
+congeal
+congealment
+congenial
+congeniality
+congenially
+congenital
+congenitally
+conger
+congeries
+congest
+congested
+congestion
+congestive
+conglomerate
+conglomeration
+Congo
+Congolese
+congrats
+congratulant
+congratulate
+congratulated
+congratulation
+congratulations
+congratulator
+congratulatory
+congregate
+congregated
+congregates
+congregating
+congregation
+congregational
+congregationalism
+congregations
+congress
+congresses
+congressional
+congressionally
+congressman
+congressmen
+congressperson
+congresswoman
+congresswomen
+congruence
+congruent
+congruently
+congruity
+congruous
+conic
+conical
+conically
+conics
+conifer
+coniferous
+conjectural
+conjecture
+conjectured
+conjectures
+conjecturing
+conjoin
+conjoined
+conjoiner
+conjoint
+conjointly
+conjugal
+conjugality
+conjugally
+conjugate
+conjugation
+conjunct
+conjuncted
+conjunction
+conjunctions
+conjunctiva
+conjunctivae
+conjunctive
+conjunctively
+conjunctivitis
+conjuncts
+conjuncture
+conjuration
+conjure
+conjured
+conjurer
+conjures
+conjuring
+conjuror
+conk
+Conklin
+conky
+Conley
+conman
+Conn
+Connally
+connatural
+connect
+connectable
+connected
+connectedness
+connecter
+connectible
+Connecticut
+connecting
+connection
+connectionless
+connections
+connective
+connectives
+connectivity
+connector
+connectors
+connects
+Connelly
+Conner
+connexion
+connexity
+Connie
+conning-tower
+conniption
+connivance
+connive
+conniver
+conniving
+connoisseur
+connoisseurs
+Connors
+connotation
+connotative
+connote
+connoted
+connotes
+connoting
+connubial
+conquer
+conquerable
+conquered
+conquerer
+conquerers
+conquering
+conqueror
+conquerors
+conquers
+conquest
+conquests
+conquistador
+conquistadores
+Conrad
+Conrail
+consanguineous
+consanguinity
+conscience
+conscienceless
+consciences
+conscientious
+conscientiously
+conscientiousness
+conscious
+consciously
+consciousness
+conscribe
+conscript
+conscription
+consecrate
+consecration
+consecution
+consecutive
+consecutively
+consensual
+consensus
+consent
+consented
+consenter
+consenters
+consentient
+consenting
+consents
+consequence
+consequences
+consequent
+consequential
+consequentialities
+consequentiality
+consequentially
+consequently
+consequents
+conservancy
+conservation
+conservationism
+conservationist
+conservationists
+conservations
+conservatism
+conservative
+conservatively
+conservatives
+conservatoire
+conservator
+conservatory
+conserve
+conserved
+conserves
+conserving
+consider
+considerable
+considerably
+considerate
+considerately
+considerateness
+consideration
+considerations
+considered
+considering
+considers
+consign
+consignation
+consigned
+consignee
+consigning
+consignment
+consignor
+consigns
+consist
+consisted
+consistence
+consistency
+consistent
+consistently
+consisting
+consistory
+consists
+consolable
+consolation
+consolations
+consolatory
+console
+consoled
+consoler
+consolers
+consoles
+consolidate
+consolidated
+consolidates
+consolidating
+consolidation
+consolidator
+consoling
+consolingly
+consols
+consomm
+consonance
+consonant
+consonantal
+consonantly
+consonants
+consort
+consorted
+consortia
+consorting
+consortium
+consorts
+conspectus
+conspicuous
+conspicuously
+conspicuousness
+conspiracies
+conspiracy
+conspirator
+conspiratorial
+conspiratorially
+conspirators
+conspire
+conspired
+conspires
+conspiring
+constable
+constables
+constabulary
+Constance
+constancy
+constant
+Constantine
+Constantinople
+constantly
+constants
+constellation
+constellations
+consternation
+constipate
+constipated
+constipation
+constituencies
+constituency
+constituent
+constituents
+constitute
+constituted
+constitutes
+constituting
+constitution
+constitutional
+constitutionality
+constitutionally
+constitutions
+constitutive
+constrain
+constrained
+constraining
+constrains
+constraint
+constraints
+constrict
+constriction
+constrictive
+constrictor
+construable
+construct
+constructed
+constructibility
+constructible
+constructing
+construction
+constructional
+constructionist
+constructions
+constructive
+constructively
+constructiveness
+constructor
+constructors
+constructs
+construe
+construed
+construing
+consubstantiation
+consul
+consular
+consulate
+consulates
+consuls
+consulship
+consult
+consultancy
+consultant
+consultants
+consultation
+consultations
+consultative
+consulted
+consulting
+consults
+consumable
+consume
+consumed
+consumer
+consumerism
+consumerist
+consumers
+consumes
+consuming
+consummate
+consummated
+consummately
+consummation
+consumption
+consumptions
+consumptive
+consumptively
+contact
+contacted
+contacting
+contacts
+contagion
+contagious
+contagiously
+contagiousness
+contain
+containable
+contained
+container
+containerization
+containerize
+containers
+containing
+containment
+containments
+contains
+contaminant
+contaminate
+contaminated
+contaminates
+contaminating
+contamination
+contaminator
+contemn
+contemplate
+contemplated
+contemplates
+contemplating
+contemplation
+contemplations
+contemplative
+contemporaneity
+contemporaneous
+contemporaneously
+contemporaries
+contemporariness
+contemporary
+contempt
+contemptible
+contemptibly
+contemptuous
+contemptuously
+contemptuousness
+contend
+contended
+contender
+contenders
+contending
+contends
+content
+contented
+contentedly
+contentedness
+contenting
+contention
+contentions
+contentious
+contentiously
+contentiousness
+contently
+contentment
+contents
+conterminous
+conterminously
+contest
+contestable
+contestant
+contested
+contester
+contesters
+contesting
+contests
+context
+context-free
+contexts
+contextual
+contextualize
+contextually
+contexture
+contiguity
+contiguous
+contiguously
+continence
+continent
+continental
+continentally
+continents
+contingencies
+contingency
+contingent
+contingently
+contingents
+continua
+continual
+continually
+continuance
+continuances
+continuation
+continuations
+continue
+continued
+continues
+continuing
+continuities
+continuity
+continuous
+continuously
+continuum
+contort
+contortion
+contortionist
+contortions
+contour
+contoured
+contouring
+contours
+contra
+contraband
+contrabass
+contraception
+contraceptive
+contract
+contracted
+contractible
+contractile
+contracting
+contraction
+contractions
+contractor
+contractors
+contracts
+contractual
+contractually
+contradict
+contradicted
+contradicting
+contradiction
+contradictions
+contradictory
+contradicts
+contradistinction
+contradistinctions
+contrail
+contraindicate
+contraindication
+contralto
+contrapositive
+contrapositives
+contraption
+contraptions
+contrapuntal
+contrapuntally
+contrapuntist
+contrariety
+contrarily
+contrariness
+contrariwise
+contrary
+contrast
+contrasted
+contraster
+contrasters
+contrasting
+contrastingly
+contrasts
+contravenation
+contravene
+contravention
+contretemps
+contribute
+contributed
+contributes
+contributing
+contribution
+contributions
+contributor
+contributorily
+contributors
+contributory
+contrick
+contrite
+contritely
+contriteness
+contrition
+contrivance
+contrivances
+contrive
+contrived
+contriver
+contrives
+contriving
+control
+controllability
+controllable
+controllably
+controlled
+controller
+controllers
+controlling
+controls
+controversial
+controversially
+controversies
+controversy
+controvert
+controvertible
+contumacious
+contumaciously
+contumacy
+contumelious
+contumely
+contuse
+contusion
+conundrum
+conundrums
+conurbation
+Convair
+convalesce
+convalescence
+convalescent
+convect
+convection
+convectional
+convective
+convene
+convened
+convener
+convenes
+convenience
+conveniences
+convenient
+conveniently
+convening
+convent
+conventicle
+convention
+conventional
+conventionality
+conventionalize
+conventionally
+conventions
+convents
+converational
+converge
+converged
+convergence
+convergent
+converges
+converging
+conversable
+conversant
+conversantly
+conversation
+conversational
+conversationalist
+conversationally
+conversations
+converse
+conversed
+conversely
+converses
+conversing
+conversion
+conversions
+convert
+converted
+converter
+converters
+convertibility
+convertible
+converting
+convertor
+converts
+convex
+convexity
+convexly
+convey
+conveyable
+conveyance
+conveyances
+conveyed
+conveyer
+conveyers
+conveying
+conveyor
+conveys
+convict
+convicted
+convicting
+conviction
+convictions
+convicts
+convince
+convinced
+convincer
+convincers
+convinces
+convincing
+convincingly
+convivial
+conviviality
+convivially
+convocation
+convoke
+convolute
+convoluted
+convolution
+convolvulus
+convoy
+convoyed
+convoying
+convoys
+convulse
+convulsion
+convulsions
+convulsive
+convulsively
+Conway
+cony
+coo
+cooing
+cook
+cook-house
+cook-shop
+cookbook
+Cooke
+cooked
+cooker
+cookery
+cookery-book
+cookie
+cookie-cutter
+cookies
+cooking
+cooking-range
+cooking-stove
+cookout
+cooks
+cookware
+cooky
+cool
+cool-headed
+coolant
+cooled
+cooler
+coolers
+coolest
+Cooley
+Coolidge
+coolie
+coolies
+cooling
+coolly
+coolness
+cools
+cooly
+coomb
+coombe
+coon
+coons
+coonskin
+coop
+cooped
+cooper
+cooperage
+cooperate
+cooperated
+cooperates
+cooperating
+cooperation
+cooperations
+cooperative
+cooperatively
+cooperativeness
+cooperatives
+cooperator
+cooperators
+coopers
+coops
+coordinate
+coordinated
+coordinately
+coordinates
+coordinating
+coordination
+coordinations
+coordinator
+coordinators
+Coors
+coot
+cootie
+cooties
+cop
+cop-out
+copartner
+copartnership
+copartnery
+copay
+cope
+copeck
+coped
+Copeland
+Copenhagen
+Copernican
+Copernicus
+copes
+copied
+copier
+copiers
+copies
+copilot
+coping
+copings
+copious
+copiously
+copiousness
+coplanar
+Copland
+Copley
+copper
+copper-top
+Copperfield
+copperhead
+copperplate
+coppers
+coppery
+coppice
+copra
+coprocessor
+cops
+copse
+copter
+Coptic
+copula
+copulate
+copulation
+copulative
+copy
+copy-book
+copybook
+copycat
+copyhold
+copyholder
+copying
+copying-ink
+copyist
+copyreader
+copyright
+copyrightable
+copyrighted
+copyrights
+copywriter
+coquet
+coquete
+coquetish
+coquetry
+coquette
+coquettish
+coquettishly
+coquettishness
+coracle
+coral
+corbel
+Corbett
+Corcoran
+cord
+cordage
+corded
+corder
+cordial
+cordiality
+cordially
+cordillera
+cordite
+cordless
+Cordoba
+cordon
+cordovan
+cords
+corduroy
+corduroys
+core
+cored
+coreference
+corer
+corers
+cores
+corespondent
+Corey
+corgi
+coriander
+coring
+Corinth
+Corinthian
+Corinthianize
+Corinthianizes
+Corinthians
+Coriolanus
+cork
+cork-screw
+corked
+corker
+corkers
+corking
+corks
+corkscrew
+corky
+corm
+cormorant
+corn
+corn-bread
+corn-chandler
+corn-crake
+corn-exchange
+corn-flour
+corn-flower
+corn-laws
+corn-loft
+cornball
+cornbread
+corncob
+cornea
+corneal
+corned
+cornel
+Cornelia
+cornelian
+Cornelius
+Cornell
+corner
+corner-stone
+cornered
+corners
+cornerstone
+cornerstones
+cornet
+Cornets
+cornfield
+cornfields
+cornflakes
+cornflower
+cornice
+cornily
+corniness
+corning
+Cornish
+cornmeal
+cornrow
+corns
+cornstalk
+cornstarch
+cornucopia
+Cornwall
+Cornwallis
+corny
+corolla
+corollaries
+corollary
+corona
+Coronado
+coronae
+coronal
+coronaries
+coronary
+coronation
+coroner
+coronet
+coronets
+coroutine
+coroutines
+corpora
+corporal
+corporality
+corporals
+corporate
+corporately
+corporation
+corporations
+corporeal
+corporeality
+corporeally
+corps
+corpse
+corpses
+corpsman
+corpulence
+corpulency
+corpulent
+corpus
+corpuscle
+corpuscular
+corpusele
+corral
+correct
+correctable
+corrected
+correcting
+correction
+correctional
+corrections
+corrective
+correctively
+correctives
+correctly
+correctness
+corrector
+corrects
+correlate
+correlated
+correlates
+correlating
+correlation
+correlations
+correlative
+correspond
+corresponded
+correspondence
+correspondences
+correspondent
+correspondents
+corresponding
+correspondingly
+corresponds
+corridor
+corridors
+corrigenda
+corrigendum
+corrigible
+corroborate
+corroborated
+corroborates
+corroborating
+corroboration
+corroborations
+corroborative
+corroborator
+corroboratory
+corrode
+corrosion
+corrosive
+corrosively
+corrugate
+corrugated
+corrugation
+corrupt
+corrupted
+corrupter
+corruptibility
+corruptible
+corrupting
+corruption
+corruptions
+corruptly
+corruptness
+corrupts
+corsage
+corsair
+corselet
+corset
+Corsica
+Corsican
+corslet
+cortege
+Cortes
+cortex
+Cortez
+cortical
+cortices
+cortisone
+Cortland
+corundum
+coruscate
+coruscation
+Corvallis
+corvette
+corvine
+Corvus
+Corydoras
+corymb
+coryphaeus
+cos
+cosecant
+Cosgrove
+cosign
+cosignatory
+cosigner
+cosily
+cosine
+cosines
+cosiness
+cosmetic
+cosmetically
+cosmetician
+cosmetics
+cosmetologist
+cosmetology
+cosmic
+cosmically
+cosmogonist
+cosmogony
+cosmological
+cosmologist
+cosmology
+cosmonaut
+cosmopolitan
+cosmopolitanism
+cosmopolitical
+cosmos
+cosponsor
+cossack
+cosset
+cost
+cost(s)
+cost-effective
+cost-effectiveness
+Costa
+costal
+costar
+costard
+costed
+Costello
+costing
+costliness
+costly
+costs
+costume
+costumed
+costumer
+costumes
+costuming
+cosy
+cot
+cotangent
+cote
+coterie
+coterminous
+cothurnus
+cotillion
+cots
+cottage
+cottager
+cottages
+cottar
+cotter
+cotton
+cotton-mill
+cotton-pickin'
+cotton-picking
+cotton-plant
+cotton-spinner
+cotton-wool
+cottonmouth
+cottons
+cottonseed
+cottontail
+cottonwood
+cottony
+Cottrell
+cotyledon
+cotyledons
+couch
+couched
+couches
+couchette
+couching
+cougar
+cough
+coughed
+coughing
+coughs
+could
+couldn't
+couldnt
+coulee
+coulisse
+coulomb
+Coulter
+council
+councillor
+councillors
+councilman
+councilmen
+councilor
+councilperson
+councils
+councilwoman
+councilwomen
+counsel
+counseled
+counseling
+counselled
+counselling
+counsellor
+counsellors
+counselor
+counselors
+counsels
+count
+countable
+countably
+countdown
+counted
+countenance
+counter
+counter-attack
+counter-blow
+counter-claim
+counter-clockwise
+counter-espionage
+counter-reformation
+counter-revolution
+counter-sign
+counter-stroke
+counter-vail
+counteract
+counteracted
+counteracting
+counteraction
+counteractive
+counterargument
+counterattack
+counterbalance
+countercharge
+counterclaim
+counterclockwise
+counterculture
+countered
+counterespionage
+counterexample
+counterexamples
+counterfeit
+counterfeited
+counterfeiter
+counterfeiting
+counterflow
+counterfoil
+countering
+counterinsurgency
+counterintelligence
+counterintuitive
+counterman
+countermand
+countermarch
+countermeasure
+countermeasures
+countermen
+countermine
+countermove
+counteroffensive
+counteroffer
+counterpane
+counterpart
+counterparts
+counterpoint
+counterpointing
+counterpoise
+counterproductive
+counterproposal
+counterrevolution
+counterrevolutionary
+counters
+countersign
+countersignature
+countersink
+counterspy
+countersunk
+countertenor
+countervail
+counterweight
+counterwork
+countess
+counties
+counting
+counting-house
+counting-room
+countless
+countries
+countrified
+country
+country-and-western
+country-house
+country-side
+countryman
+countrymen
+countryside
+countrywide
+countrywoman
+counts
+county
+countywide
+coup
+coupe
+couple
+coupled
+coupler
+couplers
+couples
+couplet
+coupling
+couplings
+coupon
+coupons
+coup
+courage
+courageous
+courageously
+courageousness
+couragous
+courier
+couriers
+Courland
+course
+coursed
+courser
+courses
+coursing
+court
+court-martial
+courted
+courteous
+courteously
+courteousness
+courter
+courters
+courtesan
+courtesies
+courtesy
+courtezan
+courthouse
+courthouses
+courtier
+courtiers
+courting
+courtliness
+courtly
+Courtney
+courtroom
+courtrooms
+courts
+courts-martial
+courtship
+courty-promises
+courtyard
+courtyards
+couscous
+cousin
+cousins
+couture
+couturier
+covalent
+covariant
+cove
+coven
+covenant
+covenants
+Covent
+Coventry
+cover
+cover-up
+coverable
+coverage
+coverall
+coveralls
+covered
+covering
+coverings
+coverlet
+coverlets
+covers
+covert
+covertly
+covertness
+coverup
+coves
+covet
+coveted
+coveting
+covetous
+covetously
+covetousness
+covets
+covey
+cow
+cow-boy
+cow-herd
+cow-hide
+cow-house
+cow-pox
+cow-shed
+Cowan
+coward
+cowardice
+cowardliness
+cowardly
+cowbell
+cowbird
+cowboy
+cowboys
+cowcatcher
+cowed
+cower
+cowered
+cowerer
+cowerers
+cowering
+coweringly
+cowers
+cowgirl
+cowhand
+cowherd
+cowhide
+cowing
+cowl
+cowlick
+cowling
+cowls
+cowman
+coworker
+cowpoke
+cowpox
+cowpuncher
+cowrie
+cows
+cowslip
+cowslips
+cowson
+cox
+coxcomb
+coxswain
+coy
+coyly
+coyness
+coyote
+coyotes
+coypu
+cozen
+cozenage
+cozier
+cozily
+coziness
+cozy
+CPA
+CPI
+CPM
+CPO
+CPR
+CPU
+Cr
+crab
+crabapple
+crabbed
+crabber
+crabbily
+crabbiness
+crabby
+crabgrass
+crablike
+crabs
+crack
+crack-brained
+crack-up
+crackdown
+cracked
+cracker
+crackerjack
+crackers
+cracking
+crackle
+crackled
+crackles
+crackling
+cracklings
+crackly
+crackpot
+cracks
+crackup
+cracky
+Cracow
+cradle
+cradled
+cradles
+craft
+crafted
+crafter
+craftily
+craftiness
+crafting
+craftman
+craftperson
+crafts
+craftsman
+craftsmanship
+craftsmen
+craftspeople
+craftsperson
+craftswoman
+crafty
+crag
+cragged
+cragginess
+craggy
+crags
+Craig
+crake
+cram
+Cramer
+crammed
+cramming
+cramp
+cramped
+crampon
+crampons
+cramps
+crams
+cranberries
+cranberry
+Crandall
+crane
+cranes
+Cranford
+crania
+cranial
+cranium
+crank
+crank-shaft
+crankcase
+cranked
+crankier
+crankiest
+crankily
+crankiness
+cranking
+cranks
+crankshaft
+cranky
+crannied
+cranny
+Cranston
+crap
+crape
+crapper
+crappie
+crappy
+craps
+crapshooter
+crapulence
+crash
+crash-land
+crash-landing
+crashed
+crasher
+crashers
+crashes
+crashing
+crass
+crassly
+crassness
+crate
+crater
+craters
+crates
+cravat
+cravats
+crave
+craved
+craven
+cravenly
+cravenness
+craves
+craving
+craw
+crawdad
+crawfish
+Crawford
+crawl
+crawled
+crawler
+crawlers
+crawling
+crawls
+crawlspace
+crawly
+Cray
+crayfish
+crayon
+Crays
+craze
+crazed
+crazes
+crazier
+craziest
+crazily
+craziness
+crazing
+crazy
+crazy-bone
+CRC
+creak
+creaked
+creakily
+creakiness
+creaking
+creaks
+creaky
+cream
+creamed
+creamer
+creamers
+creamery
+creamily
+creaminess
+creaming
+creams
+creamy
+crease
+crease-resistant
+creased
+creases
+creasing
+create
+created
+creates
+creating
+creation
+Creation!
+creationism
+creationist
+creations
+creative
+creatively
+creativeness
+creativity
+creator
+creators
+creature
+creatures
+creche
+credence
+credencetials
+credential
+credentials
+credenza
+credibility
+credible
+credibly
+credit
+creditable
+creditably
+credited
+crediting
+creditor
+creditors
+credits
+credo
+credulity
+credulous
+credulously
+credulousness
+Cree
+creed
+creeds
+creek
+creeks
+creel
+creep
+creeper
+creepers
+creepily
+creepiness
+creeping
+creeps
+creepy
+Creighton
+cremate
+cremated
+cremates
+cremating
+cremation
+cremations
+crematoria
+crematorium
+crematory
+creme
+crenelate
+crenelated
+crenelation
+crenellate
+crenellated
+crenellation
+Creole
+Creon
+creosote
+crepe
+crepehanger
+crept
+crepuscular
+crescendi
+crescendo
+crescent
+crescents
+cress
+cresset
+Cressy
+crest
+crested
+crestfallen
+crestless
+crests
+Crestview
+cretaceous
+Cretaceously
+Cretan
+Crete
+cretin
+cretinism
+cretinous
+cretonne
+crevasse
+crevice
+crevices
+crew
+crew-cut
+crewcut
+crewed
+crewel
+crewelwork
+crewing
+crewman
+crews
+crib
+cribbage
+cribber
+cribs
+crick
+cricket
+cricketer
+crickets
+cried
+crier
+criers
+cries
+crikey
+crime
+Crimea
+Crimean
+crimes
+criminal
+criminality
+criminally
+criminals
+criminate
+criminologist
+criminology
+crimp
+crimplene
+crimson
+crimsoning
+cringe
+cringed
+cringes
+cringing
+crinkle
+crinkled
+crinkly
+crinolie
+crinoline
+cripple
+crippled
+crippler
+cripples
+crippling
+crises
+crisis
+crisp
+Crispin
+crispiness
+crisply
+crispness
+crispy
+criss-cross
+crisscross
+criteria
+criterion
+critic
+critical
+critically
+criticise
+criticism
+criticisms
+criticize
+criticized
+criticizer
+criticizes
+criticizing
+critics
+critique
+critiques
+critiquing
+critter
+Cro-Magnon
+croak
+croaked
+croaker
+croaking
+croaks
+croaky
+Croat
+Croatia
+Croatian
+crochet
+crocheter
+crocheting
+crochets
+crock
+crocked
+crockery
+Crockett
+crocks
+crocodile
+crocus
+Croesus
+croft
+crofter
+croissant
+Croix
+Cromwell
+Cromwellian
+crone
+crony
+crook
+crookdom
+crooked
+crookedly
+crookedness
+crookneck
+crooks
+croon
+crooner
+crop
+crop-dusting
+cropland
+cropped
+cropper
+croppers
+cropping
+crops
+croquet
+croquette
+Crosby
+crosier
+cross
+cross-bar
+cross-beam
+cross-bow
+cross-bred
+cross-breed
+cross-country
+cross-cultural
+cross-dress
+cross-dresser
+cross-dressing
+cross-examination
+cross-examine
+cross-examiner
+cross-eye
+cross-eyed
+cross-fertilization
+cross-fertilize
+cross-fire
+cross-grained
+cross-hatching
+cross-head
+cross-legged
+cross-pollinate
+cross-pollination
+cross-purpose
+cross-purposes
+cross-question
+cross-refer
+cross-reference
+cross-road
+cross-roads
+cross-section
+cross-sectional
+cross-stitch
+cross-town
+cross-train
+cross-wise
+crossable
+crossbar
+crossbars
+crossbeam
+crossbones
+crossbow
+crossbowman
+crossbred
+crossbreed
+crosscheck
+crosscurrent
+crosscut
+crossed
+crosser
+crossers
+crosses
+crossfire
+crossfooting
+crosshatch
+crosshatching
+crosshead
+crossheading
+crossing
+crossings
+crossly
+crossness
+crossover
+crossovers
+crosspatch
+crosspiece
+crosspoint
+crossroad
+crossroads
+crosstalk
+crosstown
+crosswalk
+crossways
+crosswind
+crosswise
+crossword
+crosswords
+crotch
+crotchet
+crotchety
+crouch
+crouched
+crouching
+croup
+croupier
+croupy
+crouton
+crow
+crow's-feet
+crow's-foot
+crow's-nest
+crow-bar
+crowbar
+crowd
+crowded
+crowder
+crowding
+crowds
+crowed
+crowfoot
+crowing
+Crowley
+crown
+crowned
+crowning
+crowns
+crows
+crowsfoot
+Croydon
+crozier
+CRT
+cruces
+crucial
+crucially
+crucible
+crucified
+crucifies
+crucifix
+crucifixion
+cruciform
+crucify
+crucifying
+crud
+cruddy
+crude
+crudely
+crudeness
+cruder
+crudest
+crudites
+crudity
+cruel
+crueler
+cruelest
+cruelly
+cruelness
+cruelty
+cruet
+Cruickshank
+cruise
+cruiser
+cruisers
+cruises
+cruising
+cruller
+crumb
+crumble
+crumbled
+crumbles
+crumbliness
+crumbling
+crumbly
+crumbs
+crumby
+crumminess
+crummy
+crumpet
+crumple
+crumpled
+crumples
+crumpling
+crunch
+crunched
+crunches
+crunchier
+crunchiest
+crunchiness
+crunching
+crunchy
+crunk
+crupper
+crusade
+crusader
+crusaders
+crusades
+crusading
+cruse
+crused
+crush
+crushable
+crushed
+crusher
+crushers
+crushes
+crushing
+crushingly
+Crusoe
+crust
+crustacean
+crustaceans
+crustal
+crustily
+crustiness
+crusts
+crusty
+crut
+Crut!
+crutch
+crutches
+crux
+cruxes
+Cruz
+cry
+crybaby
+crying
+cryogenic
+cryogenics
+cryosurgery
+crypt
+cryptanalysis
+cryptanalyst
+cryptanalytic
+cryptic
+cryptically
+cryptobibliography
+cryptocenter
+cryptogam
+cryptogram
+cryptographer
+cryptographic
+cryptographically
+cryptography
+cryptologist
+cryptology
+cryptonym
+crystal
+crystalline
+crystallization
+crystallize
+crystallized
+crystallizes
+crystallizing
+crystals
+crche
+Cs
+CST
+CT
+Cu
+cub
+Cuba
+Cuban
+Cubanize
+Cubanizes
+Cubans
+cubbyhole
+cube
+cube-root
+cubed
+cuber
+cubes
+cubic
+cubical
+cubicle
+cubism
+cubist
+cubit
+cubs
+cuckold
+cuckoldry
+cuckoo
+cuckoos
+cucumber
+cucumbers
+cud
+cuddle
+cuddled
+cuddly
+cudgel
+cudgels
+cue
+cued
+cues
+cuff
+cufflink
+cuffs
+Cuiavia
+cuirass
+cuirassier
+cuisine
+cul-de-sac
+Culbertson
+culinary
+cull
+culled
+cullender
+culler
+culling
+culls
+culminate
+culminated
+culminates
+culminating
+culmination
+culotte
+culottes
+culpa
+culpability
+culpable
+culpably
+culprit
+culprits
+culs-de-sac
+cult
+cultism
+cultist
+cultivable
+cultivatable
+cultivate
+cultivated
+cultivates
+cultivating
+cultivation
+cultivations
+cultivator
+cultivators
+cults
+cultural
+culturally
+culture
+cultured
+cultures
+culturing
+Culver
+Culvers
+culvert
+cum
+cumber
+Cumberland
+cumbersome
+cumbersomeness
+cumbrous
+cumdach
+cumin
+cummerbund
+cummin
+Cummings
+Cummins
+cumquat
+cumulate
+cumulative
+cumulatively
+cumuli
+cumulonimbus
+cumulus
+Cunard
+cuneiform
+cunnilingus
+cunning
+Cunningham
+cunningly
+cunt
+cup
+cupboard
+cupboards
+cupcake
+Cupertino
+cupful
+cupidity
+cupola
+cupolaed
+cupped
+cupping
+cupreous
+cuprib
+cupric
+cups
+cur
+curability
+curable
+curably
+curacy
+curare
+curate
+curative
+curator
+curatorial
+curb
+curbing
+curbs
+curbstone
+curd
+curdle
+curdy
+cure
+cure-all
+cured
+curer
+cures
+curettage
+curfew
+curfews
+curia
+curiae
+curing
+curio
+curiosa
+curiosities
+curiosity
+curious
+curiouser
+curiousest
+curiously
+curiousness
+Curitiba
+curium
+curl
+curled
+curler
+curlers
+curlew
+curlicue
+curliness
+curling
+curling-irons
+curling-tongs
+curls
+curly
+curlycue
+curmudgeon
+curmudgeonly
+curpuscule
+Curran
+currant
+currants
+currencies
+currency
+current
+currently
+currentness
+currents
+curricula
+curricular
+curriculum
+curriculums
+curried
+currier
+curries
+curry
+currycomb
+currying
+curs
+curse
+cursed
+cursedly
+curses
+cursing
+cursive
+cursively
+cursor
+cursorily
+cursoriness
+cursors
+cursory
+curst
+curt
+curtail
+curtailed
+curtailment
+curtails
+curtain
+curtained
+curtains
+curtate
+Curtis
+curtly
+curtness
+curtsey
+curtsies
+curtsy
+curvaceous
+curvaceousness
+curvacious
+curvature
+curve
+curved
+curves
+curvilinear
+curving
+curvy
+Cushing
+cushion
+cushioned
+cushioning
+cushions
+Cushman
+cushy
+cusp
+cuspid
+cuspidor
+cusps
+cuss
+cussed
+custard
+Custer
+custodial
+custodian
+custodians
+custodianship
+custody
+custom
+custom-built
+custom-house
+custom-made
+customarily
+customary
+customer
+customers
+customhouse
+customizable
+customization
+customizations
+customize
+customized
+customizer
+customizers
+customizes
+customizing
+customs
+cut
+cut-and-dried
+cut-and-dry
+cut-away
+cut-down
+cut-out
+cut-price
+cut-rate
+cut-throat
+cutaneous
+cutaway
+cutback
+cute
+cutely
+cuteness
+cutesie
+cutest
+cutesy
+cuticle
+cutie-pie
+cutlas
+cutlass
+cutler
+cutlery
+cutlet
+cutoff
+cutoffs
+cutout
+cutover
+cuts
+cutter
+cutters
+cutthroat
+cutting
+cuttingly
+cuttings
+cuttlefish
+cutup
+cutworm
+Cuvier
+Cuzco
+CV
+cwt
+CX
+cyan
+Cyanamid
+cyanide
+CYBERNET
+cybernetic
+cybernetics
+cyberpunk
+cyberspace
+cyborg
+Cyclades
+cyclamen
+cycle
+cycled
+cycles
+cyclic
+cyclical
+cyclically
+cycling
+cyclist
+cycloid
+cycloidal
+cycloids
+cyclometer
+cyclone
+cyclones
+cyclonic
+cyclopaedia
+cyclopedia
+Cyclopes
+cyclostyle
+cyclotron
+cyclotrons
+cyder
+cygnet
+Cygnus
+cylinder
+cylinders
+cylindrical
+cymbal
+cymbalist
+cymbalo
+cymbals
+cyme
+Cymric
+cynic
+cynical
+cynically
+cynicism
+cynosure
+Cynthia
+cypher
+CYPHERNET
+cypress
+Cyprian
+Cypriot
+Cyprius
+Cyprus
+Cyril
+Cyrillic
+Cyrus
+cyst
+cystic
+cystitis
+cysts
+cytologist
+cytology
+cytoplasm
+cytoplasmic
+cytosine
+CZ
+czar
+czarevitch
+czarewich
+czarina
+czarist
+Czech
+Czechia
+Czechization
+Czechizations
+Czechoslovak
+Czechoslovakia
+Czechoslovakian
+Czechs
+Czerniak
+D.S.
+d/b/a
+DA
+dab
+dabble
+dabbled
+dabbler
+dabbles
+dabbling
+Dacca
+dace
+dacha
+dachshund
+Dacron
+dactyl
+dactylic
+dad
+Dada
+Dadaistic
+daddle
+daddy
+daddy-longlegs
+Dade
+dado
+dads
+Daedalus
+daemon
+daemonic
+daemons
+daffiness
+daffodil
+daffodils
+daffy
+daft
+daftly
+daftness
+dagger
+dago
+daguerreotype
+Dahl
+dahlia
+Dahomey
+Dailey
+dailies
+dailiness
+daily
+Daimler
+daintily
+daintiness
+dainty
+daiquiri
+dairy
+dairy-maid
+dairy-man
+dairying
+Dairylea
+dairymaid
+dairyman
+dairywoman
+dais
+daisies
+daisy
+Dakar
+Dakota
+dale
+dales
+Daley
+Dalhousie
+Dali
+Dallas
+dalliance
+dallier
+dally
+Dalmatia
+Dalmatian
+Dalton
+Daly
+Dalzell
+dam
+damage
+damageable
+damaged
+damager
+damagers
+damages
+damaging
+Damascene
+Damascus
+damask
+dame
+damming
+dammit
+damn
+damnable
+damnably
+damnation
+damndest
+damned
+damnedest
+damning
+damns
+Damocles
+Damon
+damp
+damp-dry
+dampen
+dampener
+dampens
+damper
+damping
+damply
+dampness
+dams
+damsel
+damselfly
+damsels
+damson
+Dan
+Dana
+Danbury
+dance
+danced
+dancer
+dancers
+dances
+dancing
+dandelion
+dandelions
+dander
+dandified
+dandify
+dandle
+dandriff
+dandruff
+dandy
+Dane
+Danes
+dang
+danger
+dangerous
+dangerously
+dangers
+dangle
+dangled
+dangler
+dangles
+dangling
+Daniel
+Daniels
+Danielson
+Danish
+Danization
+Danizations
+Danize
+Danizes
+dank
+dankly
+dankness
+Danny
+danseuse
+Dante
+Dantzic
+Danube
+Danubian
+Danville
+Danzig
+Daphne
+dapper
+dapple
+dappled
+Dar
+Dardanelles
+dare
+dare-devil
+dared
+daredevil
+daredevilry
+daredeviltry
+darer
+darers
+dares
+daresay
+daring
+daringly
+Darius
+dark
+dark-room
+darke
+darken
+darkener
+darker
+darkest
+darkey
+darkly
+darkness
+darkroom
+darksome
+Darlene
+darling
+darlings
+Darlington
+darn
+darned
+darner
+darning
+darns
+DARPA
+Darrell
+Darrow
+Darry
+dart
+dartboard
+darted
+darter
+darting
+Dartmouth
+darts
+Darwin
+Darwinian
+Darwinism
+Darwinist
+Darwinistic
+Darwinize
+Darwinizes
+dash
+dash!
+dash-board
+dashboard
+dashed
+dasher
+dashers
+dashes
+dashiki
+dashing
+dashingly
+dastard
+dastardliness
+dastardly
+DAT
+data
+databank
+database
+databases
+datagram
+datagrams
+datalogy
+Datamation
+Datamedia
+dataphone
+DATAVISION
+DATAX
+date
+date-book
+date-line
+dated
+DATEL
+dateless
+dateline
+dater
+dates
+dating
+dative
+Datsun
+datum
+daub
+dauber
+Daugherty
+daughter
+daughter-in-law
+daughterly
+daughters
+daughters-in-law
+Daumier
+daunt
+daunted
+daunting
+dauntingly
+dauntless
+dauntlessly
+dauntlessness
+dauphin
+Davao
+Dave
+David
+Davidson
+Davie
+Davies
+Davinich
+Davis
+Davison
+davit
+Davy
+daw
+dawdle
+dawdler
+dawn
+dawned
+dawning
+dawns
+Dawson
+day
+day-boarder
+day-book
+day-break
+day-care
+day-fly
+Day-Glo
+day-labourer
+day-long
+day-time
+day-to-day
+day-tripper
+daybed
+daybreak
+daycare
+daydream
+daydreamer
+daydreaming
+daydreams
+daylight
+daylights
+days
+daytime
+Dayton
+Daytona
+daze
+dazed
+dazedly
+dazzle
+dazzled
+dazzler
+dazzles
+dazzling
+dazzlingly
+dB
+DBDA
+DBMS
+DBOS
+DC
+DCS
+DD
+DDS
+DDT
+de-emphasis
+de-emphasize
+de-escalate
+de-escalation
+de-ice
+de-icer
+de-ration
+deacon
+deaconess
+deacons
+deactivate
+deactivation
+dead
+dead-alive
+dead-beat
+dead-center
+dead-end
+dead-fire
+dead-head
+dead-heat
+dead-light
+dead-lock
+dead-point
+deadbeat
+deadbolt
+deaden
+deadhead
+deadline
+deadlines
+deadliness
+deadlock
+deadlocked
+deadlocking
+deadlocks
+deadly
+deadness
+deadpan
+deadweight
+deadwood
+deaf
+deaf-mute
+deafen
+deafening
+deafeningly
+deafer
+deafest
+deafness
+deal
+dealer
+dealers
+dealership
+dealing
+dealings
+deallocate
+deallocated
+deallocating
+deallocation
+deallocations
+deals
+dealt
+dean
+Deane
+deanery
+Deanna
+deans
+deanship
+dear
+Dearborn
+dearer
+dearest
+dearie
+dearly
+dearness
+dearrest
+dearth
+dearths
+deary
+death
+death-bed
+death-bell
+death-blow
+death-roll
+death-watch
+deathbed
+deathblow
+deathless
+deathlessly
+deathlike
+deathly
+deaths
+deathtrap
+deathwatch
+deb
+debacle
+debar
+debark
+debarkation
+debarment
+debase
+debasement
+debatable
+debate
+debated
+debater
+debaters
+debates
+debating
+debauch
+debauched
+debauchee
+debauchery
+Debbie
+Debby
+debenture
+debiliate
+debilitate
+debilitated
+debilitates
+debilitating
+debilitation
+debility
+DEBIS
+debit
+debited
+debonair
+debonaire
+debonairly
+debonairness
+Deborah
+debouch
+Debra
+debrief
+debriefing
+debris
+Debs
+debt
+debtor
+debts
+debug
+debugged
+debugger
+debuggers
+debugging
+debugs
+debunk
+Debussy
+debut
+debutante
+decade
+decadence
+decadency
+decadent
+decadently
+decades
+decaf
+decaffeinate
+decaffeinated
+decagon
+decagram
+decal
+Decalog
+decalogue
+decamp
+decampment
+decant
+decanter
+decapitate
+decapitation
+decapitator
+decathlon
+Decatur
+decay
+decayed
+decaying
+decays
+Decca
+decease
+deceased
+deceases
+deceasing
+decedent
+deceit
+deceitful
+deceitfully
+deceitfulness
+deceive
+deceived
+deceiver
+deceivers
+deceives
+deceiving
+deceivingly
+decelerate
+decelerated
+decelerates
+decelerating
+deceleration
+decelerator
+December
+Decembers
+decencies
+decency
+decennial
+decent
+decently
+decentralization
+decentralize
+decentralized
+deception
+deceptions
+deceptive
+deceptively
+deceptiveness
+decertify
+decibel
+decidability
+decidable
+decide
+decided
+decidedly
+decides
+deciding
+deciduous
+decile
+deciliter
+decilitre
+decimal
+decimals
+decimate
+decimated
+decimates
+decimating
+decimation
+decimeter
+decimetre
+decipher
+decipherable
+deciphered
+decipherer
+deciphering
+deciphers
+decision
+decision-making
+decision-taking
+decisions
+decisive
+decisively
+decisiveness
+deck
+deck-chair
+deckchair
+decked
+Decker
+deckhand
+decking
+deckings
+decks
+declaim
+declaimer
+declamation
+declamatory
+declarable
+declaration
+declarations
+declarative
+declaratively
+declaratives
+declarator
+declaratory
+declare
+declared
+declarer
+declarers
+declares
+declaring
+declassification
+declassify
+declension
+declination
+declinations
+decline
+declined
+decliner
+decliners
+declines
+declining
+declivity
+DECnet
+decoction
+decode
+decoded
+decoder
+decoders
+decodes
+decoding
+decodings
+decolletage
+decollete
+decollimate
+decolonization
+decolonize
+decolorize
+decolouration
+decolourize
+decolourizer
+decommission
+decompile
+decomposability
+decomposable
+decompose
+decomposed
+decomposes
+decomposing
+decomposition
+decompositions
+decompress
+decompression
+decondition
+decongestant
+deconstruction
+decontaminate
+decontamination
+decontrol
+decor
+decorate
+decorated
+decorates
+decorating
+decoration
+decorations
+decorative
+decoratively
+decorator
+decorous
+decorously
+decorousness
+decorum
+decoupage
+decouple
+decoupled
+decouples
+decoupling
+decoy
+decoys
+decrease
+decreased
+decreases
+decreasing
+decreasingly
+decree
+decreed
+decreeing
+decrees
+decrement
+decremented
+decrementing
+decrements
+decrepit
+decrepitude
+decrescendo
+decriminalization
+decriminalize
+decry
+decrypt
+decrypted
+decrypting
+decryption
+decrypts
+DECstation
+DECsystem
+DECtape
+decussate
+dedicate
+dedicated
+dedicates
+dedicating
+dedication
+dedicator
+dedicatory
+deduce
+deduced
+deducer
+deduces
+deducible
+deducing
+deduct
+deducted
+deductible
+deducting
+deduction
+deductions
+deductive
+deductively
+Dee
+deed
+deeded
+deeding
+deedless
+deeds
+deejay
+deem
+deemed
+deeming
+deemphasize
+deemphasized
+deemphasizes
+deemphasizing
+deems
+deep
+deep-freeze
+deep-froze
+deep-frozen
+deep-fry
+deep-read
+deep-rooted
+deep-sea
+deep-seated
+deep-six
+deepen
+deepened
+deepening
+deepens
+deeper
+deepest
+deeply
+deepmined
+deepness
+deeps
+deer
+deer's-foot
+deer-field
+deer-hound
+deer-skin
+deer-stalking
+Deere
+deerskin
+deescalate
+deescalation
+def
+deface
+defacement
+defacer
+defalcate
+defalcation
+defamation
+defamatory
+defame
+defamer
+default
+defaulted
+defaulter
+defaulting
+defaults
+defeasance
+defeasible
+defeat
+defeated
+defeater
+defeating
+defeatism
+defeatist
+defeats
+defecate
+defecation
+defect
+defected
+defecting
+defection
+defections
+defective
+defectively
+defectiveness
+defector
+defects
+defence
+defend
+defendant
+defendants
+defended
+defendent
+defender
+defenders
+defending
+defends
+defenestrate
+defenestrated
+defenestrates
+defenestrating
+defenestration
+defense
+defenseless
+defenselessly
+defenselessness
+defenses
+defensible
+defensibly
+defensive
+defensively
+defensiveness
+defer
+deference
+deferential
+deferentially
+deferment
+deferments
+deferrable
+deferral
+deferred
+deferrer
+deferrers
+deferring
+defers
+defiance
+defiant
+defiantly
+deficiencies
+deficiency
+deficient
+deficit
+deficits
+defied
+defies
+defile
+defilement
+defiler
+defiling
+definable
+define
+defined
+definer
+defines
+defining
+definite
+definitely
+definiteness
+definition
+definitional
+definitions
+definitive
+definitively
+deflate
+deflater
+deflation
+deflationary
+deflect
+deflection
+deflective
+deflector
+deflexion
+defloration
+deflower
+defocus
+Defoe
+defog
+defogger
+defoliant
+defoliate
+defoliation
+defoliator
+deforest
+deforestation
+deform
+deformation
+deformations
+deformed
+deformities
+deformity
+defraud
+defrauder
+defray
+defrayal
+defrock
+defrost
+defroster
+deft
+deftly
+deftness
+defunct
+defuse
+defy
+defying
+degauss
+degeneracy
+degenerate
+degenerated
+degenerates
+degenerating
+degeneration
+degenerative
+degradable
+degradation
+degradations
+degrade
+degraded
+degrades
+degrading
+degree
+degrees
+degust
+degustation
+dehumanization
+dehumanize
+dehumanizing
+dehumidifier
+dehumidify
+dehydrate
+dehydrated
+dehydration
+dehydrator
+dehydrogenate
+deice
+deicer
+deification
+deify
+deign
+deigned
+deigning
+deigns
+Deimos
+Deirdre
+Deirdres
+deism
+deist
+deistic
+deities
+deity
+deixis
+deject
+dejecta
+dejected
+dejectedly
+dejection
+DeKalb
+DeKastere
+Del
+delaine
+Delaney
+Delano
+Delaware
+Delawarean
+delay
+delayed
+delayer
+delaying
+delays
+deleatur
+delectable
+delectably
+delectation
+delegacy
+delegate
+delegated
+delegates
+delegating
+delegation
+delegations
+delete
+deleted
+deleter
+deleterious
+deletes
+deleting
+deletion
+deletions
+delftware
+Delhi
+deli
+Delia
+deliberate
+deliberated
+deliberately
+deliberateness
+deliberates
+deliberating
+deliberation
+deliberations
+deliberative
+deliberator
+deliberators
+delicacies
+delicacy
+delicate
+delicately
+delicateness
+delicatessen
+delicious
+deliciously
+deliciousness
+delight
+delighted
+delightedly
+delightful
+delightfully
+delighting
+delights
+Delilah
+delimit
+delimitation
+delimited
+delimiter
+delimiters
+delimiting
+delimits
+delineament
+delineate
+delineated
+delineates
+delineating
+delineation
+delinquency
+delinquent
+delinquently
+deliquesce
+deliquescent
+deliria
+delirious
+deliriously
+deliriousness
+delirium
+deliver
+deliverable
+deliverables
+deliverance
+delivered
+deliverer
+deliverers
+deliveries
+delivering
+delivers
+delivery
+delivery-book
+delivery-note
+delivery-order
+delivery-van
+deliveryman
+dell
+Della
+dells
+Dellwood
+Delmarva
+Delmarwa
+delouse
+Delphi
+Delphic
+Delphically
+delphinium
+Delphinus
+delta
+deltas
+delude
+deluded
+deludes
+deluding
+deluge
+deluged
+deluges
+delusion
+delusional
+delusions
+delusive
+delusively
+deluxe
+delve
+delver
+delves
+delving
+Dem
+demagnetization
+demagnetize
+demagnify
+demagog
+demagogic
+demagogue
+demagoguery
+demagogy
+demand
+demanded
+demander
+demanding
+demandingly
+demands
+demarcate
+demarcation
+demean
+demeaning
+demeanor
+demeanour
+demented
+dementedly
+dementia
+demerit
+demesne
+Demeter
+demi-semiquaver
+demigod
+demijohn
+demilitarization
+demilitarize
+demimondaine
+demimonde
+demise
+demission
+demitasse
+demo
+demobbed
+demobilization
+demobilize
+democracies
+democracy
+democrat
+democratic
+democratical
+democratically
+democratization
+democratize
+democrats
+demode
+demodulate
+demodulation
+demodulator
+demographer
+demographic
+demographically
+demographics
+demography
+demolish
+demolished
+demolishes
+demolition
+demon
+demonetization
+demonetize
+demoniac
+demoniacal
+demoniacally
+demonic
+demonically
+demons
+demonstrable
+demonstrably
+demonstrate
+demonstrated
+demonstrates
+demonstrating
+demonstration
+demonstrationist
+demonstrations
+demonstrative
+demonstratively
+demonstrativeness
+demonstrator
+demonstrators
+demoralization
+demoralize
+demoralized
+demoralizes
+demoralizing
+DeMorgan
+Demosthenes
+demote
+demotic
+demotion
+demountable
+Dempsey
+demulcent
+demultiplex
+demultiplexed
+demultiplexer
+demultiplexers
+demultiplexing
+demur
+demure
+demurely
+demureness
+demurrage
+demurral
+demurrer
+demystification
+demystify
+demythologize
+den
+denationalize
+denature
+denazification
+denazify
+dendrite
+Deneb
+Denebola
+Deneen
+dengue
+deniable
+denial
+denials
+denied
+denier
+denies
+denigrate
+denigrated
+denigrates
+denigrating
+denigration
+denim
+denims
+Denizen
+Denmark
+Dennis
+Denny
+denominate
+denomination
+denominational
+denominations
+denominator
+denominators
+denotable
+denotation
+denotational
+denotationally
+denotations
+denotative
+denote
+denoted
+denotes
+denoting
+denouement
+denounce
+denounced
+denouncement
+denounces
+denouncing
+dens
+dense
+densely
+denseness
+denser
+densest
+densities
+density
+dent
+dental
+dentally
+dentate
+dented
+dentifrice
+dentin
+dentine
+denting
+dentist
+dentistry
+dentists
+dentition
+Denton
+dents
+denture
+dentures
+denuclearize
+denudate
+denudation
+denude
+denumerable
+denunciate
+denunciation
+Denver
+deny
+denying
+deodorant
+deodorization
+deodorize
+deodorizer
+deoxyribonucleic
+depart
+departed
+departing
+department
+departmental
+departmentalization
+departmentalize
+departmentally
+departments
+departs
+departure
+departures
+depend
+dependability
+dependable
+dependably
+dependance
+dependant
+depended
+dependence
+dependencies
+dependency
+dependent
+dependently
+dependents
+depending
+depends
+depersonalize
+depict
+depicted
+depicting
+depiction
+depicts
+depilatory
+deplane
+deplete
+depleted
+depletes
+depleting
+depletion
+depletions
+deplorable
+deplorably
+deplore
+deplored
+deplores
+deploring
+deploy
+deployed
+deploying
+deployment
+deployments
+deploys
+deplume
+depolarization
+depolarize
+depoliticize
+deponent
+depopulate
+depopulation
+deport
+deportation
+deportee
+deportment
+deposal
+depose
+deposed
+deposes
+deposit
+depositary
+deposited
+depositing
+deposition
+depositions
+depositor
+depositors
+depository
+deposits
+depot
+depots
+depravation
+deprave
+depraved
+depravity
+deprecate
+deprecating
+deprecation
+deprecatory
+depreciate
+depreciated
+depreciates
+depreciation
+depredate
+depredation
+depress
+depressant
+depressed
+depresses
+depressing
+depressingly
+depression
+depressions
+depressive
+depressor
+deprivation
+deprivations
+deprive
+deprived
+deprives
+depriving
+deprogram
+depth
+depths
+deputation
+depute
+deputies
+deputize
+deputy
+dequeue
+dequeued
+dequeues
+dequeuing
+derail
+derailed
+derailing
+derailleur
+derailment
+derails
+derange
+deranged
+derangement
+Derbyshire
+dereference
+deregulate
+deregulated
+deregulation
+Derek
+derelict
+dereliction
+deride
+derision
+derisive
+derisively
+derisiveness
+derisory
+derivable
+derivation
+derivations
+derivative
+derivatives
+derive
+derived
+derives
+deriving
+dermal
+dermatitis
+dermatological
+dermatologist
+dermatology
+dermis
+derogate
+derogation
+derogatorily
+derogatory
+derrick
+derriere
+derring-do
+derringer
+dervish
+Des
+desalinate
+desalination
+desalinization
+desalinize
+desalt
+descale
+descant
+Descartes
+descend
+descendand
+descendant
+descendants
+descended
+descendent
+descender
+descenders
+descending
+descends
+descent
+descents
+descramble
+describable
+describe
+described
+describer
+describes
+describing
+description
+descriptions
+descriptive
+descriptively
+descriptiveness
+descriptives
+descriptor
+descriptors
+descry
+desecrate
+desecration
+desegregate
+desegregation
+desensitization
+desensitize
+desert
+deserted
+deserter
+deserters
+deserting
+desertion
+desertions
+deserts
+deserve
+deserved
+deservedly
+deserves
+deserving
+deservingly
+deservings
+deshabille
+desiccant
+desiccate
+desiccation
+desiccator
+desiderata
+desiderate
+desideratum
+design
+designate
+designated
+designates
+designating
+designation
+designations
+designator
+designators
+designatum
+designed
+designer
+designers
+designing
+designs
+desirability
+desirable
+desirableness
+desirably
+desire
+desired
+desires
+desiring
+desirous
+desist
+desk
+deskill
+desks
+desktop
+Desmond
+desolate
+desolately
+desolateness
+desolation
+desolations
+despair
+despaired
+despairing
+despairingly
+despairs
+despatch
+despatched
+desperado
+desperate
+desperately
+desperateness
+desperation
+despicable
+despicably
+despise
+despised
+despises
+despising
+despite
+despiteful
+despoil
+despoiler
+despoilment
+despoliation
+despondence
+despondency
+despondent
+despondently
+despot
+despotic
+despotically
+despotism
+despots
+dessert
+dessert-spoon
+desserts
+destabilization
+destabilize
+destination
+destinations
+destine
+destined
+destinies
+destiny
+destitute
+destitution
+destroy
+destroyed
+destroyer
+destroyers
+destroying
+destroys
+destruct
+destructibility
+destructible
+destruction
+destructions
+destructive
+destructively
+destructiveness
+destructor
+destuff
+destuffing
+destuffs
+desuetude
+desultorily
+desultory
+desynchronize
+detach
+detachable
+detached
+detacher
+detaches
+detaching
+detachment
+detachments
+detail
+detailed
+detailing
+details
+detain
+detained
+detainee
+detaining
+detainment
+detains
+detect
+detectable
+detectably
+detected
+detectible
+detecting
+detection
+detections
+detective
+detectives
+detector
+detectors
+detects
+detente
+detention
+deter
+detergent
+deteriorate
+deteriorated
+deteriorates
+deteriorating
+deterioration
+determent
+determinable
+determinacy
+determinant
+determinants
+determinate
+determinately
+determination
+determinations
+determinative
+determine
+determined
+determinedly
+determiner
+determiners
+determines
+determining
+determinism
+deterministic
+deterministically
+deterred
+deterrence
+deterrent
+deterring
+detest
+detestable
+detestably
+detestation
+detested
+dethrone
+dethronement
+detonate
+detonation
+detonator
+detour
+detox
+detoxification
+detoxify
+detract
+detraction
+detractor
+detractors
+detracts
+detriment
+detrimental
+detrimentally
+detrition
+detritus
+Detroit
+deuce
+deuce!
+deus
+deuterium
+Deuteronomy
+Deutsch
+Deutschmark
+devaluation
+devalue
+devastate
+devastated
+devastates
+devastating
+devastatingly
+devastation
+devastator
+develop
+developed
+developer
+developers
+developing
+development
+developmental
+developmentally
+developments
+develops
+deviance
+deviancy
+deviant
+deviantly
+deviants
+deviate
+deviated
+deviates
+deviating
+deviation
+deviationist
+deviations
+device
+devices
+devil
+devil!
+devil-dodger
+devil-may-care
+deviled
+devilish
+devilishly
+devilishness
+devilkin
+devilled
+devilment
+devilry
+devils
+deviltry
+devious
+deviously
+deviousness
+devise
+devised
+devises
+devising
+devisings
+devitalize
+devoid
+devolution
+devolve
+Devon
+Devonian
+Devonshire
+devote
+devoted
+devotedly
+devotee
+devotees
+devotes
+devoting
+devotion
+devotional
+devotions
+devour
+devoured
+devourer
+devours
+devout
+devoutly
+devoutness
+dew
+dew-berry
+dew-lap
+dew-point
+dewberry
+dewclaw
+dewdrop
+dewdrops
+Dewey
+dewiness
+Dewitt
+dewlap
+dewy
+Dexedrine
+dexter
+dexterity
+dexterous
+dexterously
+dexterousness
+dextran
+dextrone
+dextrose
+dextrous
+DF
+DFR
+DH
+Dhabi
+Dhaka
+dhoti
+dhow
+DI
+diabetes
+diabetic
+diabolic
+diabolical
+diabolically
+diachronic
+diacritic
+diacritical
+diadem
+diaereses
+diaeresis
+diafilm
+diagnosable
+diagnose
+diagnosed
+diagnoses
+diagnosing
+diagnosis
+diagnostic
+diagnostically
+diagnostician
+diagnostics
+diagonal
+diagonally
+diagonals
+diagram
+diagrammable
+diagrammatic
+diagrammatically
+diagrammed
+diagrammer
+diagrammers
+diagramming
+diagrams
+diagraph
+dial
+dial-plate
+dialect
+dialectal
+dialectic
+dialectic(s)
+dialectical
+dialectics
+dialects
+dialed
+dialer
+dialers
+dialing
+dialog
+dialogical
+dialogs
+dialogue
+dialogues
+dials
+dialup
+dialyses
+dialysis
+diamagnetic
+diameter
+diameters
+diametric
+diametrical
+diametrically
+diamond
+diamondback
+diamonds
+Diana
+Diane
+Dianne
+diapason
+diaper
+diapers
+diaphanous
+diaphragm
+diaphragmatic
+diaphragms
+diapositive
+diaries
+diarist
+diarrhea
+diarrhoea
+diarrhoeia
+diary
+diascope
+Diaspora
+diastase
+diastole
+diastolic
+diathermy
+diatom
+diatomic
+diatonic
+diatribe
+diatribes
+diazo-film
+diazo-print
+diazotype
+dibble
+dibs
+dice
+dice-box
+dice-insulator
+diced
+dicey
+dichotomize
+dichotomous
+dichotomy
+dichromatic
+dichromic
+dick
+dickens
+dickens!
+Dickensian
+dicker
+Dickerson
+dickey
+Dickie
+Dickinson
+Dickson
+dicky
+dicotyledon
+dicotyledonous
+dicta
+dictaphone
+dictate
+dictated
+dictates
+dictating
+dictation
+dictations
+dictator
+dictatorial
+dictatorially
+dictators
+dictatorship
+diction
+dictionaries
+dictionary
+dictograph
+dictum
+dictums
+did
+didactic
+didactically
+didactics
+diddle
+diddler
+didn't
+didst
+die
+die-hard
+Diebold
+died
+Diego
+diehard
+dielectric
+dielectrics
+diem
+diereses
+dieresis
+dies
+diesel
+diesis
+diet
+dietary
+dieter
+dieters
+dietetic
+dietetics
+dietician
+dietitian
+dietitians
+Dietrich
+diets
+Dietz
+differ
+differed
+difference
+differences
+different
+differentia
+differentiable
+differentiae
+differential
+differentials
+differentiate
+differentiated
+differentiates
+differentiating
+differentiation
+differentiations
+differentiators
+differently
+differer
+differers
+differing
+differs
+difficult
+difficulties
+difficultly
+difficulty
+diffidence
+diffident
+diffidently
+diffract
+diffraction
+diffuse
+diffused
+diffusely
+diffuseness
+diffuser
+diffusers
+diffuses
+diffusible
+diffusing
+diffusion
+diffusions
+diffusive
+dig
+digerati
+digest
+digested
+digestibility
+digestible
+digesting
+digestion
+digestive
+digests
+digger
+diggers
+digging
+diggings
+digit
+digital
+digitalis
+digitally
+digitization
+digitize
+digitized
+digitizer
+digitizes
+digitizing
+digits
+dignified
+dignify
+dignitaries
+dignitary
+dignities
+dignity
+digram
+digraph
+digress
+digressed
+digresses
+digressing
+digression
+digressions
+digressive
+digs
+dihedral
+Dijkstra
+Dijon
+dike
+dikes
+dilacerate
+dilapidate
+dilapidated
+dilapidation
+dilatation
+dilate
+dilated
+dilates
+dilating
+dilation
+dilator
+dilatory
+dildo
+dilemma
+dilemmas
+dilettante
+dilettanti
+dilettantish
+dilettantism
+diligence
+diligent
+diligently
+dill
+Dillon
+dilly
+dilly-dally
+dillydally
+dilogarithm
+diluent
+dilute
+diluted
+dilutee
+dilutes
+diluting
+dilution
+dim
+DiMaggio
+dime
+dimension
+dimensional
+dimensionality
+dimensionally
+dimensioned
+dimensioning
+dimensions
+dimes
+diminish
+diminished
+diminishes
+diminishing
+diminuendo
+diminution
+diminutive
+dimity
+dimly
+dimmed
+dimmer
+dimmers
+dimmest
+dimming
+dimness
+dimple
+dimpled
+dimply
+dims
+dimwit
+dimwitted
+din
+Dinah
+dinar
+dine
+dined
+diner
+diners
+dines
+dinette
+ding
+ding-a-ling
+ding-dong
+dingbat
+dingbats
+dingdong
+dinghy
+dingily
+dinginess
+dingle
+dingo
+dingus
+dingy
+dining
+dining-room
+dinkum
+dinky
+dinner
+dinners
+dinnertime
+dinnerware
+dinning-car
+dinosaur
+dint
+diocesan
+diocese
+Diocletian
+diode
+diodes
+Diogenes
+Dion
+Dionysian
+Dionysus
+Diophantine
+diopter
+diorama
+dioxide
+dioxin
+dip
+diphtheria
+diphthong
+diploid
+diploma
+diplomacy
+diplomas
+diplomat
+diplomatic
+diplomatically
+diplomatics
+diplomatist
+diplomats
+dipole
+dipped
+dipper
+dippermouth
+dippers
+dipping
+dippings
+dippy
+dips
+dipso
+dipsomania
+dipsomaniac
+dipstick
+dipterous
+diptych
+Dirac
+dire
+direct
+directed
+directing
+direction
+directional
+directionality
+directionally
+directions
+directive
+directives
+directly
+directness
+director
+directorate
+directorial
+directories
+directors
+directorship
+directory
+directrices
+directrix
+directs
+direful
+direly
+dirge
+dirges
+Dirichlet
+dirigible
+dirk
+dirndl
+DIRS
+dirt
+dirt-cheap
+dirt-poor
+dirtier
+dirtiest
+dirtily
+dirtiness
+dirts
+dirty
+disabilities
+disability
+disable
+disabled
+disablement
+disabler
+disablers
+disables
+disabling
+disabuse
+disaccord
+disadvantage
+disadvantaged
+disadvantageous
+disadvantageously
+disadvantages
+disaffect
+disaffected
+disaffection
+disaffiliate
+disaffiliation
+disaffirm
+disagree
+disagreeable
+disagreeableness
+disagreeably
+disagreed
+disagreeing
+disagreement
+disagreements
+disagrees
+disallow
+disallowed
+disallowing
+disallows
+disambiguate
+disambiguated
+disambiguates
+disambiguating
+disambiguation
+disambiguations
+disappear
+disappearance
+disappearances
+disappeared
+disappearing
+disappears
+disappoint
+disappointed
+disappointing
+disappointingly
+disappointment
+disappointments
+disapprobation
+disapproval
+disapprove
+disapproved
+disapproves
+disapprovingly
+disarm
+disarmament
+disarmed
+disarming
+disarmingly
+disarms
+disarrange
+disarrangement
+disarray
+disassemble
+disassembled
+disassembles
+disassembling
+disassembly
+disassociate
+disassociation
+disaster
+disasters
+disastrous
+disastrously
+disavow
+disavowal
+disband
+disbanded
+disbanding
+disbandment
+disbands
+disbar
+disbarment
+disbelief
+disbelieve
+disbeliever
+disbelieving
+disburden
+disbursal
+disburse
+disbursed
+disbursement
+disbursements
+disburses
+disbursing
+disc
+discard
+discarded
+discarding
+discards
+discern
+discerned
+discernibility
+discernible
+discernibly
+discerning
+discerningly
+discernment
+discerns
+discharge
+discharged
+discharges
+discharging
+disciple
+disciples
+discipleship
+disciplinarian
+disciplinary
+discipline
+disciplined
+disciplines
+disciplining
+disclaim
+disclaimed
+disclaimer
+disclaims
+disclose
+disclosed
+discloses
+disclosing
+disclosure
+disclosures
+discman
+disco
+discography
+discolor
+discoloration
+discolour
+discombobulate
+discombobulation
+discomfit
+discomfiture
+discomfort
+discomfortable
+discommode
+discompose
+discomposure
+disconcert
+disconcerted
+disconcerting
+disconcertingly
+disconnect
+disconnected
+disconnectedly
+disconnectedness
+disconnecting
+disconnection
+disconnects
+disconsolate
+disconsolately
+discontent
+discontented
+discontentedly
+discontentment
+discontinuance
+discontinuation
+discontinue
+discontinued
+discontinues
+discontinuities
+discontinuity
+discontinuous
+discontinuously
+discord
+discordance
+discordant
+discordantly
+discotheque
+discount
+discounted
+discountenance
+discounter
+discounting
+discounts
+discourage
+discouraged
+discouragement
+discourages
+discouraging
+discouragingly
+discourse
+discourses
+discourteous
+discourteously
+discourtesy
+discover
+discovered
+discoverer
+discoverers
+discoveries
+discovering
+discovers
+discovery
+discredit
+discreditable
+discreditably
+discredited
+discreet
+discreetly
+discreetness
+discrepancies
+discrepancy
+discrepant
+discrete
+discretely
+discreteness
+discretion
+discretionary
+discriminant
+discriminate
+discriminated
+discriminates
+discriminating
+discrimination
+discriminator
+discriminatory
+discs
+discursive
+discursively
+discursiveness
+discus
+discuss
+discussant
+discussed
+discusses
+discussing
+discussion
+discussions
+disdain
+disdainful
+disdainfully
+disdaining
+disdains
+disease
+diseased
+diseases
+disembark
+disembarkation
+disembarkment
+disembodied
+disembodiment
+disembody
+disembowel
+disembowelment
+disempower
+disenchant
+disenchanted
+disenchantment
+disencumber
+disenfranchise
+disenfranchisement
+disengage
+disengaged
+disengagement
+disengages
+disengaging
+disentangle
+disentanglement
+disentangling
+disequilibrium
+disestablish
+disestablishment
+disesteem
+disfavor
+disfavour
+disfigure
+disfigured
+disfigurement
+disfigures
+disfiguring
+disfranchise
+disfranchisement
+disgorge
+disgrace
+disgraced
+disgraceful
+disgracefully
+disgracefulness
+disgraces
+disgruntle
+disgruntled
+disgruntlement
+disguise
+disguised
+disguises
+disgust
+disgusted
+disgustedly
+disgustful
+disgusting
+disgustingly
+disgusts
+dish
+dish-cloth
+dish-cover
+dish-towel
+dish-washer
+dishabille
+disharmonious
+disharmony
+dishcloth
+dishearten
+disheartened
+disheartening
+dishearteningly
+dished
+dishes
+dishevel
+disheveled
+dishevelled
+dishevelment
+dishing
+dishonest
+dishonestly
+dishonesty
+dishonor
+dishonorable
+dishonorably
+dishonored
+dishonoring
+dishonors
+dishonour
+dishonourable
+dishpan
+dishrag
+dishtowel
+dishwasher
+dishwashers
+dishwashing
+dishwater
+disillusion
+disillusioned
+disillusioning
+disillusionize
+disillusionment
+disillusionments
+disinclination
+disincline
+disinclined
+disinfect
+disinfectant
+disinfection
+disinfestation
+disinflation
+disinformation
+disingenuous
+disingenuously
+disinherit
+disinheritance
+disintegrate
+disintegration
+disinter
+disinterest
+disinterested
+disinterestedly
+disinterestedness
+disinterment
+disinvest
+disinvestment
+disjoin
+disjoint
+disjointed
+disjointedly
+disjointedness
+disjointly
+disjointness
+disjunct
+disjunction
+disjunctions
+disjunctive
+disjunctively
+disjuncts
+disk
+diskette
+diskettes
+disks
+dislike
+disliked
+dislikes
+disliking
+dislocate
+dislocated
+dislocates
+dislocating
+dislocation
+dislocations
+dislodge
+dislodged
+disloyal
+disloyally
+disloyalty
+dismal
+dismally
+dismantle
+dismantlement
+dismay
+dismayed
+dismaying
+dismember
+dismembered
+dismemberment
+dismembers
+dismiss
+dismiss!
+dismissal
+dismissals
+dismissed
+dismisser
+dismissers
+dismisses
+dismissing
+dismission
+dismissive
+dismissively
+dismount
+dismounted
+dismounting
+dismounts
+Disney
+Disneyland
+disobedent
+disobedience
+disobedient
+disobediently
+disobey
+disobeyed
+disobeying
+disobeys
+disoblige
+disobliging
+disorder
+disordered
+disorderliness
+disorderly
+disorders
+disorganization
+disorganize
+disorganized
+disorient
+disorientate
+disorientation
+disown
+disowned
+disowning
+disowns
+disparage
+disparagement
+disparaging
+disparagingly
+disparate
+disparately
+disparities
+disparity
+dispassion
+dispassionate
+dispassionately
+dispatch
+dispatch-note
+dispatched
+dispatcher
+dispatchers
+dispatches
+dispatching
+dispel
+dispell
+dispelled
+dispelling
+dispels
+dispensable
+dispensary
+dispensation
+dispensations
+dispensatory
+dispense
+dispensed
+dispenser
+dispensers
+dispenses
+dispensing
+dispersal
+disperse
+dispersed
+disperses
+dispersing
+dispersion
+dispersions
+dispirit
+dispirited
+displace
+displaced
+displacement
+displacements
+displaces
+displacing
+display
+displayable
+displayed
+displayer
+displaying
+displays
+displease
+displeased
+displeases
+displeasing
+displeasure
+disport
+disposable
+disposal
+disposals
+dispose
+disposed
+disposer
+disposes
+disposing
+disposition
+dispositions
+dispossess
+dispossessed
+dispossession
+dispraise
+disproof
+disproportion
+disproportional
+disproportionate
+disproportionately
+disprovable
+disprove
+disproved
+disproves
+disproving
+disputable
+disputably
+disputant
+disputation
+disputatious
+disputatiously
+disputative
+dispute
+disputed
+disputer
+disputers
+disputes
+disputing
+disqualification
+disqualified
+disqualifies
+disqualify
+disqualifying
+disquiet
+disquieting
+disquietude
+disquisition
+Disraeli
+disregard
+disregarded
+disregardful
+disregarding
+disregards
+disrelish
+disrepair
+disreputable
+disreputably
+disreputation
+disrepute
+disrespect
+disrespectful
+disrespectfully
+disrobe
+disrupt
+disrupted
+disrupting
+disruption
+disruptions
+disruptive
+disruptively
+disrupts
+diss
+dissarrange
+dissatisfaction
+dissatisfactions
+dissatisfactory
+dissatisfied
+dissatisfy
+dissect
+dissection
+dissector
+dissects
+dissemblance
+dissemble
+dissembler
+disseminate
+disseminated
+disseminates
+disseminating
+dissemination
+dissension
+dissensions
+dissent
+dissented
+dissenter
+dissenters
+dissenting
+dissents
+dissert
+dissertation
+dissertations
+disservice
+dissever
+dissidence
+dissident
+dissidents
+dissimilar
+dissimilarities
+dissimilarity
+dissimilitude
+dissimulate
+dissimulation
+dissimulator
+dissipate
+dissipated
+dissipates
+dissipating
+dissipation
+dissociate
+dissociated
+dissociates
+dissociating
+dissociation
+dissoluble
+dissolute
+dissolutely
+dissoluteness
+dissolution
+dissolutions
+dissolve
+dissolved
+dissolvent
+dissolves
+dissolving
+dissonance
+dissonant
+dissuade
+dissuasion
+dissuasive
+distaff
+distal
+distally
+distance
+distances
+distant
+distantly
+distaste
+distasteful
+distastefully
+distastefulness
+distastes
+distemper
+distempered
+distempers
+distend
+distension
+distention
+distil
+distill
+distillate
+distillation
+distilled
+distiller
+distillers
+distillery
+distilling
+distills
+distinct
+distinction
+distinctions
+distinctive
+distinctively
+distinctiveness
+distinctly
+distinctness
+distinguish
+distinguishable
+distinguished
+distinguisher
+distinguishes
+distinguishing
+distort
+distorted
+distorting
+distortion
+distortionist
+distortions
+distorts
+distract
+distracted
+distractedly
+distracting
+distraction
+distractions
+distracts
+distrain
+distrait
+distraught
+distress
+distress-gun
+distress-rocket
+distressed
+distresses
+distressful
+distressing
+distressingly
+distributary
+distribute
+distributed
+distributes
+distributing
+distribution
+distributional
+distributions
+distributive
+distributively
+distributivity
+distributor
+distributors
+district
+districts
+distrust
+distrusted
+distrustful
+distrustfully
+disturb
+disturbance
+disturbances
+disturbed
+disturber
+disturbing
+disturbingly
+disturbs
+disunion
+disunite
+disunity
+disuse
+disused
+disvalue
+ditch
+ditches
+dither
+ditherer
+dithering
+ditsy
+ditto
+ditty
+ditz
+Ditzel
+ditzy
+diuretic
+diurnal
+diurnally
+diva
+divalent
+divan
+divans
+divaricate
+dive
+dive-bomber
+dived
+diver
+diverge
+diverged
+divergence
+divergences
+divergent
+diverges
+diverging
+divers
+diverse
+diversely
+diverseness
+diversifiable
+diversification
+diversified
+diversifies
+diversiform
+diversify
+diversifying
+diversion
+diversionary
+diversionist
+diversions
+diversities
+diversity
+divert
+diverted
+diverticulitis
+diverting
+diverts
+dives
+divest
+divested
+divesting
+divestiture
+divestment
+divests
+dividable
+divide
+divided
+dividend
+dividends
+divider
+dividers
+divides
+dividing
+divination
+divine
+divinely
+diviner
+diving
+diving-bell
+divining
+divinities
+divinity
+divisibility
+divisible
+division
+divisional
+divisions
+divisive
+divisively
+divisiveness
+divisor
+divisors
+divorce
+divorced
+divorcee
+divorcement
+divot
+divulge
+divulged
+divulges
+divulging
+divulsion
+divvy
+Dixie
+Dixiecrats
+Dixon
+dizzily
+dizziness
+dizzy
+dizzying
+DJ
+Djakarta
+djellaba
+djellabah
+Djibouti
+djinn
+DMD
+Dmitri
+DMZ
+DNA
+Dnepr
+Dnepropetrovsk
+Dnieper
+Dniester
+Dnipropetrovsk
+do
+do-all
+do-gooder
+do-it-yourself
+do-it-yourselfer
+do-nothing
+DOA
+doable
+DOB
+Dobbs
+Doberman
+docent
+docile
+docilely
+docility
+dock
+dock-dues
+dock-warrant
+dock-yard
+dockage
+docked
+docket
+docks
+dockside
+dockworker
+dockyard
+doctor
+doctoral
+doctorate
+doctorates
+doctored
+doctors
+doctrinaire
+doctrinal
+doctrine
+doctrines
+docudrama
+document
+documentalist
+documentaries
+documentarist
+documentary
+documentation
+documentations
+documentator
+documented
+documenter
+documenters
+documenting
+documentography
+documents
+docuterm
+DOD
+Dodd
+dodder
+doddering
+dodecahedra
+dodecahedral
+dodecahedron
+dodge
+dodged
+dodger
+dodgers
+dodging
+Dodgson
+Dodington
+dodo
+Dodson
+doe
+doer
+doers
+does
+doeskin
+doesn't
+doff
+dog
+dog's-ear
+dog-cart
+dog-cheap
+dog-collar
+dog-ear
+dog-eared
+dog-ears
+dog-eat-dog
+dog-flea
+dog-fox
+dog-grass
+dog-kennel
+dog-like
+dog-nap
+dog-tired
+dog-tooth
+dogcart
+dogcatcher
+dogear
+dogeared
+dogfight
+dogfish
+dogged
+doggedly
+doggedness
+doggerel
+doggery
+doggie
+dogging
+doggone
+doggoned
+doggy
+doghouse
+dogie
+dogleg
+dogma
+dogmas
+dogmata
+dogmatic
+dogmatically
+dogmatism
+dogmatist
+dogs
+dogsbody
+Dogtown
+dogtrot
+dogwood
+dogy
+doh
+Doha
+Doherty
+doily
+doing
+doings
+Dolan
+Dolby
+doldrum
+doldrums
+dole
+doled
+doleful
+dolefully
+dolefulness
+doles
+doll
+dollar
+dollars
+dollies
+dollop
+dolls
+dolly
+dolmen
+dolomite
+dolor
+Dolores
+dolorous
+dolorously
+dolphin
+dolphins
+dolt
+doltish
+doltishly
+doltishness
+domain
+domains
+dome
+domed
+Domenico
+domes
+domesday
+domestic
+domestically
+domesticate
+domesticated
+domesticates
+domesticating
+domestication
+domesticity
+domicile
+domiciled
+domiciliary
+domiciliate
+dominance
+dominancy
+dominant
+dominantly
+dominate
+dominated
+dominates
+dominating
+domination
+dominative
+dominator
+dominatrix
+domineer
+domineering
+domineeringly
+Domingo
+Dominic
+Dominica
+Dominican
+Dominicans
+Dominick
+dominion
+Dominique
+domino
+dominoes
+don
+don't
+dona
+Donahue
+Donald
+Donaldson
+donate
+donated
+donates
+donating
+donation
+donator
+done
+Done!
+Doneck
+Donetsk
+dong
+dongle
+donkey
+donkeys
+Donna
+Donne
+Donnelly
+Donner
+donnybrook
+donor
+Donovan
+dons
+donut
+doodad
+doodle
+doodlebug
+doodler
+doohickey
+Dooley
+Doolittle
+doom
+doomed
+dooming
+dooms
+doomsday
+door
+door-bell
+door-handle
+door-keeper
+door-leaf
+door-mat
+door-money
+door-plate
+door-post
+door-sill
+door-to-door
+door-way
+doorbell
+doorkeeper
+doorknob
+doorman
+doormat
+doormen
+doorplate
+doors
+doorstep
+doorsteps
+doorstop
+doorway
+doorways
+dooryard
+dopa
+dopadnout
+dope
+doped
+doper
+dopers
+dopes
+dopey
+dopiness
+doping
+Doppler
+dopy
+Dora
+Dorado
+Dorcas
+Dorchester
+Doreen
+Doria
+Doric
+Doricize
+Doricizes
+Doris
+dork
+dorky
+dorm
+dormancy
+dormant
+dormer
+dormice
+dormitories
+dormitory
+dormouse
+Dorothea
+Dorothy
+dorsal
+dorsally
+dorse
+Dorset
+Dortmund
+dory
+DOS
+dosage
+dose
+dosed
+doses
+dosimeter
+doss
+dossier
+dossiers
+dost
+Dostoevsky
+dot
+dot-matrix
+dotage
+dotard
+dotation
+dote
+doted
+doter
+dotes
+doth
+doting
+dotingly
+dots
+dotted
+dotting
+dotty
+double
+double-barreled
+double-blind
+double-breasted
+double-check
+double-clock
+double-columned
+double-cross
+double-crosser
+double-date
+double-dealer
+double-dealing
+double-decker
+double-digit
+double-dip
+double-Dutch
+double-edged
+double-faced
+double-header
+double-jointed
+double-knit
+double-minded
+double-park
+double-quick
+double-reed
+double-talk
+doubled
+Doubleday
+doubleheader
+doubler
+doublers
+doubles
+doublespeak
+doublet
+doubleton
+doublets
+doubleword
+doubling
+doubloon
+doubly
+doubt
+doubtable
+doubted
+doubter
+doubters
+doubtful
+doubtfully
+doubtfulness
+doubting
+doubtingly
+doubtless
+doubtlessly
+doubts
+douche
+Doug
+dough
+doughboy
+Dougherty
+doughnut
+doughnuts
+doughty
+doughy
+Douglas
+Douglass
+dour
+dourly
+dourness
+dousabel
+douse
+dove
+dove-cot
+dove-cote
+dovecote
+doves
+dovetail
+dovish
+Dow
+dowager
+dowdily
+dowdiness
+dowdy
+dowel
+dower
+dowery
+Dowling
+down
+down-and-out
+down-bow
+down-hearted
+down-home
+down-to-earth
+downbeat
+downcast
+downed
+downer
+downers
+Downey
+downfall
+downfallen
+downgrade
+downhearted
+downheartedly
+downheartedness
+downhill
+Downing
+downlink
+downlinks
+download
+downloaded
+downloading
+downloads
+downplay
+downplayed
+downplaying
+downplays
+downpour
+downrange
+downright
+downriver
+Downs
+downscale
+downside
+downsize
+downsizing
+downspout
+downstage
+downstairs
+downstate
+downstream
+downswing
+downthrow
+downtime
+downtown
+downtowns
+downtrain
+downtrodden
+downturn
+downward
+downward(s)
+downwards
+downwind
+downy
+dowry
+dowse
+dowser
+doxology
+doyen
+doyenne
+Doyle
+doze
+dozed
+dozen
+dozens
+dozenth
+dozes
+dozing
+DP
+DPH
+DPT
+Dr
+drab
+drably
+drabness
+drachm
+drachma
+drachmae
+Draco
+draff
+draft
+drafted
+draftee
+drafter
+drafters
+draftily
+draftiness
+drafting
+drafts
+draftsman
+draftsmanship
+draftsmen
+draftswoman
+drafty
+drag
+dragged
+dragging
+draggle
+draggy
+dragnet
+dragon
+dragon-fly
+dragonfly
+dragonhead
+dragons
+dragoon
+dragooned
+dragoons
+drags
+drain
+drain-pipe
+drainage
+drainboard
+drained
+drainer
+draining
+drainpipe
+drains
+drake
+dram
+drama
+Dramamine
+dramas
+dramatic
+dramatically
+dramatics
+dramatist
+dramatists
+dramatization
+dramatize
+dramshop
+drank
+drape
+draped
+draper
+draper's
+draperies
+drapers
+drapery
+drapes
+drastic
+drastically
+drat
+draught
+draught-beer
+draught-proof
+draughts
+draughtsman
+draughtsmen
+draughty
+Dravidian
+draw
+draw-board
+draw-bridge
+draw-pin
+drawback
+drawbacks
+drawbore
+drawbridge
+drawbridges
+drawee
+drawer
+drawers
+drawing
+drawing-kit
+drawing-pen
+drawing-room
+drawings
+drawl
+drawled
+drawling
+drawls
+drawn
+drawnly
+drawnness
+draws
+drawstring
+dray
+dread
+dreaded
+dreadful
+dreadfully
+dreadfulness
+dreading
+dreadlocks
+dreadnaught
+dreadnought
+dreads
+dream
+dreamboat
+dreamed
+dreamer
+dreamers
+dreamily
+dreaminess
+dreaming
+dreamland
+dreamless
+dreamlike
+dreams
+dreamt
+dreamworld
+dreamy
+drear
+drearily
+dreariness
+dreary
+dredge
+dredger
+dree
+dreg
+dregs
+Dreiser
+drench
+drenched
+drenches
+drenching
+Dresden
+dress
+dress-coat
+dress-improver
+dress-maker
+dress-rehearsal
+dressage
+dressed
+dresser
+dressers
+dresses
+dressiness
+dressing
+dressing-case
+dressing-down
+dressing-gown
+dressing-table
+dressings
+dressmaker
+dressmakers
+dressmakers
+dressmaking
+dressy
+drew
+Drexel
+Dreyfuss
+dribble
+dribbler
+dribbling
+driblet
+dried
+drier
+driers
+dries
+driest
+drift
+drifted
+drifter
+drifters
+drifting
+drifts
+driftwood
+drill
+drilled
+driller
+drilling
+drillmaster
+drills
+drily
+drink
+drinkable
+drinker
+drinkers
+drinking
+drinking-companion
+drinks
+drip
+drip-dry
+dripping
+dripping-flap
+dripping-pan
+drippings
+drippy
+drips
+dripstone
+Driscoll
+drive
+drive-by
+drive-in
+drive-through
+drivel
+driveler
+driven
+driver
+drivers
+drives
+driveway
+driveways
+driving
+driving-belt
+driving-putter
+driving-wheel
+drizzle
+drizzly
+drogue
+droll
+droll-looking
+drollery
+drollness
+drolly
+drome
+dromedary
+drone
+droner
+drones
+drool
+droop
+drooped
+droopiness
+drooping
+droops
+droopy
+drop
+drop-kick
+drop-kicker
+drop-off
+drop-out
+drop-shutter
+dropkick
+droplet
+dropout
+dropped
+dropper
+droppers
+dropping
+droppings
+drops
+dropsical
+dropsy
+droshky
+drosky
+drosophila
+dross
+drought
+droughts
+drouth
+drove
+drover
+drovers
+droves
+drown
+drowned
+drowning
+drownings
+drowns
+drowse
+drowsily
+drowsiness
+drowsy
+drsnost
+drub
+drubber
+drubbing
+drudge
+drudgery
+drug
+drug-store
+druggie
+druggist
+druggists
+druggy
+drugs
+drugstore
+druidism
+drum
+drum-head
+drum-major
+drum-stick
+drumbeat
+drumfire
+drumhead
+drumlin
+drummed
+drummer
+drummers
+drumming
+Drummond
+drums
+drumstick
+drunk
+drunkard
+drunkards
+drunken
+drunkenly
+drunkenness
+drunker
+drunkly
+drunks
+drupe
+Drury
+druthers
+dry
+dry-clean
+dry-cleaner
+dry-cleaners
+dry-cleaning
+dry-eyed
+dry-nurse
+dry-salter
+dryad
+Dryden
+dryer
+drying
+dryly
+dryness
+drywall
+DSAM
+DST
+DTP
+dual
+dualism
+dualities
+duality
+Duane
+dub
+Dubai
+dubbed
+dubber
+dubbin
+dubbing
+Dubhe
+dubiety
+dubious
+dubiously
+dubiousness
+dubitation
+Dublin
+dubs
+Dubuque
+ducal
+ducat
+Duchamp
+duchess
+duchesses
+duchy
+duck
+duckbill
+ducked
+ducking
+duckling
+duckpins
+ducks
+duckweed
+ducky
+duct
+ductile
+ductility
+ductless
+ducts
+dud
+dude
+dudgeon
+Dudley
+dudman
+duds
+due
+duel
+dueler
+dueling
+duelist
+duellist
+duels
+duenna
+dues
+duet
+duff
+duffer
+Duffy
+dug
+dug-out
+Dugan
+dugout
+duh
+DUI
+Duisburg
+duke
+dukedom
+dukes
+dulcet
+dulcimer
+dull
+dullard
+dulled
+duller
+Dulles
+dullest
+dulling
+dullness
+dulls
+Dullsville
+dully
+dulness
+Duluth
+duly
+dum-dum
+Dumas
+dumb
+dumb-bell
+dumbbell
+dumbbells
+dumber
+dumbest
+dumbfound
+dumbfounded
+dumbhead
+dumbly
+dumbness
+dumbstruck
+dumbwaiter
+dumdum
+dumfound
+dummies
+dummkopf
+dummy
+dump
+dumped
+dumper
+dumpiness
+dumping
+dumpling
+dumplings
+dumps
+Dumpty
+dumpy
+dun
+Dunbar
+Duncan
+dunce
+dunces
+Dundee
+dunderhead
+dune
+Dunedin
+dunes
+dung
+dung-hill
+dung-water
+dung-yard
+dungaree
+dungarees
+dungeon
+dungeons
+dunghill
+Dunham
+dunk
+Dunkirk
+Dunlap
+Dunlop
+Dunn
+Dunne
+dunno
+duo
+duodecimal
+duodecimo
+duodena
+duodenal
+duodenum
+dupe
+duper
+duple
+duplex
+duplicable
+duplicate
+duplicated
+duplicates
+duplicating
+duplication
+duplications
+duplicator
+duplicators
+duplicitous
+duplicity
+Duquesne
+durabilities
+durability
+durable
+durably
+durance
+Durango
+duration
+durations
+Durban
+Durer
+Durers
+duress
+Durham
+during
+Durkee
+Durkin
+Durrell
+durst
+durum
+Durward
+Dusenberg
+Dusenbury
+Dushanbe
+dusk
+duskiness
+dusky
+Dusseldorf
+dust
+dust-basket
+dust-bin
+dust-brush
+dust-cover
+dust-pan
+dustbin
+dusted
+duster
+dusters
+dustier
+dustiest
+Dustin
+dustiness
+dusting
+dustless
+dustman
+dustpan
+dusts
+dusty
+Dutch
+dutchess
+Dutchman
+Dutchmen
+Dutchwoman
+duteous
+duteously
+dutiable
+duties
+dutiful
+dutifully
+dutifulness
+Dutton
+duty
+duty-free
+duvet
+Dvorak
+dwarf
+dwarf-pine
+dwarfed
+dwarfish
+dwarfism
+dwarfs
+dwarves
+dweeb
+dwell
+dwelled
+dweller
+dwellers
+dwelling
+dwellings
+dwells
+dwelt
+DWI
+Dwight
+dwindle
+dwindled
+dwindling
+Dwyer
+Dy
+dyad
+dyadic
+dybbuk
+dye
+dyed
+dyed-in-the-wool
+dyeing
+dyeline
+dyer
+dyers
+dyes
+dyestuff
+dying
+dyke
+Dylan
+dynamic
+dynamical
+dynamically
+dynamics
+dynamism
+dynamite
+dynamited
+dynamiter
+dynamites
+dynamiting
+dynamo
+dynastic
+dynasties
+dynasty
+dyne
+dysentery
+dysfunction
+dysfunctional
+dyslectic
+dyslexia
+dyslexic
+dyspepsia
+dyspeptic
+dysprosium
+dystrophy
+e'en
+e'er
+e-book
+e-mail
+e.g.
+each
+Eagan
+eager
+eagerly
+eagerness
+eagle
+eagle-eyed
+eagle-owl
+eagles
+eaglet
+ear
+ear-ache
+ear-bender
+ear-drop
+ear-drum
+ear-lobe
+ear-phone
+ear-ring
+ear-rings
+ear-splitting
+ear-trumpet
+ear-wax
+ear-wig
+earache
+eardrum
+eared
+earful
+Earhart
+earl
+earldom
+earlier
+earliest
+earliness
+earlobe
+earls
+early
+earmark
+earmarked
+earmarking
+earmarkings
+earmarks
+EARMON
+earmuff
+earmuffs
+earn
+earned
+earner
+earners
+earnest
+earnestly
+earnestness
+earning
+earnings
+earns
+Earp
+earphone
+earphones
+earplug
+earring
+earrings
+ears
+earshot
+earsplitting
+earth
+earth-board
+earth-bound
+earth-bred
+earth-shattering
+earthbound
+earthen
+earthenware
+earthiness
+earthliness
+earthling
+earthly
+Earthman
+Earthmen
+earthmover
+earthquake
+earthquakes
+earths
+earthshaking
+earthward
+earthwards
+earthwork
+earthworm
+earthworms
+earthy
+earwax
+earwig
+ease
+eased
+easeful
+easel
+easement
+easements
+eases
+easier
+easiest
+easily
+easiness
+easing
+east
+eastbound
+easter
+Easter-eve
+easterly
+eastern
+easterners
+easternmost
+Easthampton
+Eastland
+Eastman
+eastward
+eastward(s)
+eastwards
+Eastwick
+Eastwood
+easy
+easy-chair
+easy-going
+easygoing
+eat
+eat!
+eatable
+eaten
+eater
+eaters
+eatery
+eating
+eating-house
+eatings
+Eaton
+eats
+eave
+eaves
+eavesdrop
+eavesdropped
+eavesdropper
+eavesdroppers
+eavesdropping
+eavesdrops
+ebb
+ebbing
+ebbs
+EBCDIC
+Eben
+ebony
+ebriety
+ebullience
+ebullient
+ebulliently
+ebullition
+EC
+ECC
+eccentric
+eccentrical
+eccentrically
+eccentricities
+eccentricity
+eccentrics
+Eccles
+Ecclesiastes
+ecclesiastic
+ecclesiastical
+ecclesiastically
+ECG
+echelon
+echinoderm
+echinus
+echo
+echoed
+echoes
+echoic
+echoing
+echolocation
+ECI
+eclair
+eclat
+eclectic
+eclectically
+eclecticism
+eclipse
+eclipsed
+eclipses
+eclipsing
+ecliptic
+eclogue
+ecocide
+Ecole
+ecologic
+ecological
+ecologically
+ecologist
+ecology
+ECOM
+econometric
+Econometrica
+economic
+economical
+economically
+economics
+economies
+economist
+economists
+economize
+economized
+economizer
+economizers
+economizes
+economizing
+economy
+ecosystem
+ecru
+ECSS
+ecstasize
+ecstasy
+ecstatic
+ecstatically
+Ecuador
+Ecuadoran
+Ecuadorean
+Ecuadorian
+ecumenical
+ecumenically
+ecumenicism
+ecumenism
+eczema
+Ed
+edacious
+Edam
+Eddie
+eddies
+eddy
+edelweiss
+edema
+edemata
+Eden
+Edenization
+Edenizations
+Edenize
+Edenizes
+Edgar
+edge
+edge-bone
+edge-tool
+edged
+edger
+Edgerton
+edges
+Edgewater
+edgeways
+edgewise
+Edgewood
+edgily
+edginess
+edging
+edgy
+edibility
+edible
+edibleness
+edict
+edicts
+edification
+edifice
+edifices
+edifier
+edify
+Edinburgh
+Edison
+edit
+edited
+Edith
+editing
+edition
+editions
+editor
+editor-in-chief
+editorial
+editorialize
+editorially
+editorials
+editors
+editorship
+edits
+Edmonds
+Edmondson
+Edmonton
+Edmund
+Edna
+EDP
+Edsger
+EDT
+Eduard
+Eduardo
+educability
+educable
+educate
+educated
+educates
+educating
+education
+educational
+educationally
+educations
+educator
+educators
+educe
+educt
+edutainment
+Edward
+Edwardian
+Edwardine
+Edwards
+Edwin
+Edwina
+EEC
+EEG
+eek
+eel
+eel-pout
+eelgrass
+eels
+EEO
+EEOC
+eerie
+eerily
+eeriness
+eery
+efface
+effacement
+effect
+effected
+effecting
+effective
+effectively
+effectiveness
+effector
+effectors
+effects
+effectual
+effectually
+effectuate
+effeminacy
+effeminate
+effeminately
+effendi
+efferent
+effervesce
+effervescence
+effervescent
+effervescently
+effete
+effetely
+effeteness
+efficacious
+efficaciously
+efficacy
+efficasy
+efficiencies
+efficiency
+efficient
+efficiently
+Effie
+effigy
+effloresce
+efflorescence
+efflorescent
+effluence
+effluent
+effluvia
+effluvium
+effort
+effortless
+effortlessly
+effortlessness
+efforts
+effrontery
+effulge
+effulgence
+effulgent
+effuse
+effusion
+effusive
+effusively
+effusiveness
+EFL
+eft
+eftsoon
+egad
+Egad!
+egalitarian
+egalitarianism
+Egan
+egg
+egg-cup
+egg-flip
+egg-nog
+egg-sucker
+egg-whisk
+eggbeater
+eggcup
+egged
+egghead
+egging
+eggnog
+eggplant
+eggs
+eggshell
+egis
+eglantine
+ego
+egocentric
+egocentrically
+egocentricity
+egoism
+egoist
+egoistic
+egoistical
+egoistically
+egomania
+egomaniac
+egos
+egotism
+egotist
+egotistic
+egotistical
+egotistically
+egregious
+egregiously
+egregiousness
+egress
+egret
+Egypt
+Egyptian
+Egyptianization
+Egyptianizations
+Egyptianize
+Egyptianizes
+Egyptians
+Egyptize
+Egyptizes
+Egyptology
+eh
+Ehrlich
+#EI
+Eichmann
+eider
+eider-down
+eiderdown
+Eiffel
+eigenfunction
+eigenstate
+eigenvalue
+eigenvalues
+eigenvector
+eight
+eighteen
+eighteenmo
+eighteens
+eighteenth
+eightfold
+eighth
+eighthes
+eighties
+eightieth
+eights
+eighty
+Eileen
+EIN
+Einstein
+Einsteinian
+einsteinium
+Eire
+Eisenhower
+Eisner
+either
+either-or-operation
+ejaculate
+ejaculated
+ejaculates
+ejaculating
+ejaculation
+ejaculations
+ejaculatory
+eject
+ejected
+ejecting
+ejection
+ejector
+ejects
+Ekaterinoslav
+Ekberg
+eke
+eked
+ekes
+EKG
+Ekstrom
+Ektachrome
+elaborate
+elaborated
+elaborately
+elaborateness
+elaborates
+elaborating
+elaboration
+elaborations
+elaborators
+Elaine
+elan
+eland
+elapse
+elapsed
+elapses
+elapsing
+elastic
+elastically
+elasticity
+elasticize
+elastity
+elastoplast
+elate
+elated
+elatedly
+elation
+Elba
+Elbe
+elbow
+elbow-grease
+elbowing
+elbowroom
+elbows
+elder
+elder-berries
+elder-flower
+elderberry
+elderly
+elders
+eldest
+Eldon
+Eldorado
+Eleanor
+Eleazar
+elect
+electable
+elected
+electing
+election
+electioneer
+electioneerer
+electioneering
+elections
+elective
+electives
+elector
+electoral
+electorate
+electors
+Electra
+electress
+electric
+electrical
+electrically
+electricalness
+electrician
+electricity
+electrification
+electrified
+electrifier
+electrify
+electrifying
+electro
+electrocardiogram
+electrocardiograph
+electrocardiography
+electrocute
+electrocuted
+electrocutes
+electrocuting
+electrocution
+electrocutions
+electrode
+electrodes
+electroencephalogram
+electroencephalograph
+electroencephalographic
+electroencephalography
+electrography
+electrolier
+electrologist
+electrolysis
+electrolyte
+electrolytes
+electrolytic
+electromagnet
+electromagnetic
+electromagnetically
+electromagnetism
+electromechanical
+electrometer
+electromotive
+electromotor
+electron
+electronic
+electronically
+electronics
+electrons
+electrophoresis
+electrophorus
+electrophotography
+electroplate
+electroplating
+electroscope
+electroscopic
+electroshock
+electrostatic
+electrostatics
+electrotype
+elects
+electuary
+eleemosynary
+elegance
+elegant
+elegantly
+elegiac
+elegiacal
+elegy
+element
+elemental
+elementally
+elementals
+elementary
+elements
+Elena
+elephant
+elephantiasis
+elephantine
+elephants
+elevate
+elevated
+elevates
+elevation
+elevator
+elevators
+eleven
+elevens
+eleventh
+elf
+elf-lock
+elfin
+elfish
+Elgin
+Eli
+elicit
+elicitation
+elicited
+eliciting
+elicits
+elide
+eligibility
+eligible
+Elijah
+eliminate
+eliminated
+eliminates
+eliminating
+elimination
+eliminations
+eliminator
+eliminators
+Elinor
+Eliot
+Elisabeth
+Elisha
+elision
+elite
+elitism
+elitist
+elixir
+Elizabeth
+Elizabethan
+Elizabethanize
+Elizabethanizes
+Elizabethans
+elk
+Elkhart
+elks
+ell
+Ella
+Ellen
+Ellie
+Ellington
+Elliot
+Elliott
+ellipse
+ellipses
+ellipsis
+ellipsoid
+ellipsoidal
+ellipsoids
+elliptic
+elliptical
+elliptically
+Ellis
+Ellison
+Ellsworth
+Ellwood
+elm
+Elmer
+Elmhurst
+Elmira
+elms
+Elmsford
+elocution
+elocutionary
+elocutionist
+elodea
+Eloise
+elongate
+elongated
+elongation
+elope
+elopement
+eloquence
+eloquent
+eloquently
+Elroy
+else
+else-where
+Elsevier
+elsewhere
+ELSI
+Elsie
+Elsinore
+Elton
+elucidate
+elucidated
+elucidates
+elucidating
+elucidation
+elude
+eluded
+eludes
+eluding
+elusion
+elusive
+elusively
+elusiveness
+elver
+elves
+Elvis
+Ely
+Elysee
+Elysees
+Elysian
+Elysium
+EM
+em-dash
+em-quad
+em-rule
+emaciate
+emaciated
+emaciation
+emacs
+email
+emanate
+emanating
+emanation
+emancipate
+emancipated
+emancipation
+emancipator
+Emanuel
+emasculate
+emasculation
+embalm
+embalmer
+embank
+embankment
+embargo
+embargoes
+embark
+embarkation
+embarked
+embarks
+embarrass
+embarrassed
+embarrasses
+embarrassing
+embarrassingly
+embarrassment
+EMBASE
+embassador
+embassies
+embassy
+embattle
+embattled
+embay
+embed
+embedded
+embedding
+embeds
+embellish
+embellished
+embellishes
+embellishing
+embellishment
+embellishments
+ember
+emberg
+embers
+embezzle
+embezzlement
+embezzler
+embitter
+embittered
+embitterment
+emblaze
+emblazon
+emblazonment
+emblem
+emblematic
+emblematical
+embodied
+embodies
+embodiment
+embodiments
+embody
+embodying
+embolden
+emboldening
+embolism
+embosom
+emboss
+embossed
+embosser
+embossment
+embouchure
+embowel
+embower
+embrace
+embraceable
+embraced
+embraces
+embracing
+embrasure
+embrocate
+embrocation
+embroider
+embroidered
+embroiderer
+embroideries
+embroiders
+embroidery
+embroil
+embroilment
+embryo
+embryologist
+embryology
+embryonic
+embryos
+embus
+emcee
+EMCLAS
+emend
+emendation
+emerald
+emeralds
+emerge
+emerged
+emergence
+emergencies
+emergency
+emergency-brake
+emergent
+emerges
+emerging
+emerita
+emeritus
+Emerson
+emery
+emetic
+emigrant
+emigrants
+emigrate
+emigrated
+emigrates
+emigrating
+emigration
+emigre
+Emil
+Emile
+Emilio
+Emily
+eminence
+eminency
+eminent
+eminently
+emir
+emirate
+emissary
+emission
+emit
+emits
+emitted
+emitter
+emitting
+Emma
+Emmanuel
+Emmental
+Emmett
+EMMS
+Emmy
+emollient
+emolument
+emoluments
+Emory
+emote
+emotion
+emotional
+emotionalism
+emotionalize
+emotionally
+emotions
+emotive
+empale
+empanel
+empathetic
+empathize
+empathy
+emperor
+emperors
+emphases
+emphasis
+emphasize
+emphasized
+emphasizes
+emphasizing
+emphatic
+emphatical
+emphatically
+emphysema
+empire
+empires
+empiric
+empirical
+empirically
+empiricism
+empiricist
+empiricists
+emplacement
+employ
+employable
+employe
+employed
+employee
+employees
+employer
+employers
+employing
+employment
+employments
+employs
+emporia
+emporium
+empower
+empowered
+empowering
+empowerment
+empowers
+empress
+emptied
+emptier
+empties
+emptiest
+emptily
+emptiness
+empty
+empty-handed
+empty-headed
+emptying
+empurple
+empyrean
+EMS
+EMT
+EMTAGS
+emu
+emulate
+emulated
+emulates
+emulating
+emulation
+emulations
+emulative
+emulator
+emulators
+emulous
+emulsification
+emulsifier
+emulsify
+emulsion
+en
+enable
+enabled
+enabler
+enablers
+enables
+enabling
+enact
+enacted
+enacting
+enactment
+enacts
+enamel
+enameled
+enameler
+enameling
+enamels
+enamelware
+enamor
+enamored
+enamour
+enamoured
+encage
+encajes
+encamp
+encamped
+encamping
+encampment
+encamps
+encapsulate
+encapsulated
+encapsulates
+encapsulating
+encapsulation
+encase
+encased
+encasement
+enceinte
+encephalitic
+encephalitis
+enchain
+enchant
+enchanted
+enchanter
+enchanting
+enchantingly
+enchantment
+enchantress
+enchants
+enchase
+enchilada
+enciente
+encipher
+enciphered
+enciphering
+enciphers
+encircle
+encircled
+encirclement
+encircles
+enclasp
+enclave
+enclitic
+enclose
+enclosed
+encloses
+enclosing
+enclosure
+enclosures
+encode
+encoded
+encoder
+encoders
+encodes
+encoding
+encodings
+encomia
+encomium
+encompass
+encompassed
+encompasses
+encompassing
+encore
+encounter
+encountered
+encountering
+encounters
+encourage
+encouraged
+encouragement
+encouragements
+encourages
+encouraging
+encouragingly
+encroach
+encroachment
+encrust
+encrustation
+encrusted
+encrypt
+encrypted
+encrypting
+encryption
+encryptions
+encrypts
+encumber
+encumberance
+encumbered
+encumbering
+encumbers
+encumbrance
+encyclical
+encyclopaedia
+encyclopaedic
+encyclopedia
+encyclopedias
+encyclopedic
+encyst
+encystment
+end
+end-piece
+endanger
+endangered
+endangering
+endangerment
+endangers
+endear
+endeared
+endearing
+endearingly
+endearment
+endears
+endeavor
+endeavored
+endeavoring
+endeavors
+endeavour
+ended
+endemic
+endemically
+ender
+enders
+endgame
+Endicott
+ending
+endingless
+endings
+endive
+endless
+endlessly
+endlessness
+endmost
+endocrine
+endocrinologist
+endocrinology
+endogenous
+endogenously
+endorse
+endorsed
+endorsee
+endorsement
+endorser
+endorses
+endorsing
+endoscope
+endoscopic
+endoscopy
+endothermic
+endow
+endowed
+endowing
+endowment
+endowments
+endows
+endpoint
+ends
+endue
+endurable
+endurably
+endurance
+endure
+endured
+endures
+enduring
+enduringly
+endways
+endwise
+ENE
+enema
+enemas
+enemies
+enemy
+energetic
+energetical
+energetically
+energetics
+energies
+energize
+energizer
+energy
+enervate
+enervation
+enfeeble
+enfeebled
+enfeeblement
+enfeoff
+Enfield
+enfilade
+enfold
+enforce
+enforceable
+enforced
+enforcement
+enforcer
+enforcers
+enforces
+enforcing
+enfranchise
+enfranchisement
+Eng
+engage
+engaged
+engagement
+engagements
+engages
+engaging
+engagingly
+Engel
+Engels
+engender
+engendered
+engendering
+engenders
+engine
+engine-builder
+engine-driver
+engineer
+engineered
+engineering
+engineers
+enginery
+engines
+enginshaft
+England
+Englander
+Englanders
+Engle
+Englewood
+English
+Englishize
+Englishizes
+Englishman
+Englishmen
+Englishwoman
+engorge
+engorgement
+engraft
+engrain
+engram
+engrave
+engraved
+engraver
+engraves
+engraving
+engravings
+engross
+engrossed
+engrossing
+engrossment
+engulf
+engulfment
+enhance
+enhanced
+enhancement
+enhancements
+enhances
+enhancing
+Enid
+enigma
+enigmatic
+enigmatically
+enjambement
+enjambment
+enjoin
+enjoined
+enjoining
+enjoins
+enjoy
+enjoyable
+enjoyably
+enjoyed
+enjoying
+enjoyment
+enjoys
+enkindle
+enlace
+enlarge
+enlargeable
+enlarged
+enlargement
+enlargements
+enlarger
+enlarger-printer
+enlargers
+enlarges
+enlarging
+enlighten
+enlightened
+enlightening
+enlightenment
+enlist
+enlisted
+enlistee
+enlistment
+enlists
+enliven
+enlivened
+enlivening
+enlivenment
+enlivens
+enmesh
+enmeshed
+enmeshment
+enmities
+enmity
+ennoble
+ennobled
+ennoblement
+ennobles
+ennobling
+ennui
+Enoch
+enormities
+enormity
+enormous
+enormously
+enormousness
+Enos
+enough
+enounce
+enplane
+enqueue
+enqueued
+enqueues
+enquire
+enquired
+enquirer
+enquires
+enquiry
+enrage
+enraged
+enrages
+enraging
+enrapture
+enregister
+enrich
+enriched
+enriches
+enriching
+enrichment
+Enrico
+enrobe
+enrol
+enroll
+enrolled
+enrolling
+enrollment
+enrollments
+enrolls
+enrolment
+ensconce
+ensemble
+ensembles
+enserf
+enshrine
+enshrinement
+enshroud
+ensign
+ensigns
+ensilage
+enslave
+enslaved
+enslavement
+enslaves
+enslaving
+ensnare
+ensnared
+ensnarement
+ensnares
+ensnaring
+Ensolite
+ensue
+ensued
+ensues
+ensuing
+ensure
+ensured
+ensurer
+ensurers
+ensures
+ensuring
+entail
+entailed
+entailing
+entailment
+entails
+entangle
+entanglement
+entente
+enter
+entered
+enteric
+entering
+enteritis
+enterprise
+enterprises
+enterprising
+enterprisingly
+enters
+entertain
+entertained
+entertainer
+entertainers
+entertaining
+entertainingly
+entertainment
+entertainments
+entertains
+enthral
+enthrall
+enthralling
+enthrallment
+enthrone
+enthronement
+enthuse
+enthusiasm
+enthusiasms
+enthusiast
+enthusiastic
+enthusiastically
+enthusiasts
+entice
+enticed
+enticement
+enticer
+enticers
+entices
+enticing
+enticingly
+entire
+entirely
+entireties
+entirety
+entities
+entitle
+entitled
+entitlement
+entitles
+entitling
+entity
+entomb
+entombment
+entomological
+entomologist
+entomology
+entourage
+entr'acte
+entrails
+entrain
+entrance
+entranced
+entrancement
+entrances
+entrancing
+entrancingly
+entrant
+entrap
+entrapment
+entreat
+entreated
+entreatingly
+entreaty
+entree
+Entrees
+entrench
+entrenched
+entrenches
+entrenching
+entrenchment
+entrepot
+entrepreneur
+entrepreneurial
+entrepreneurs
+entries
+entropy
+entrust
+entrusted
+entrusting
+entrusts
+entry
+entry-level
+entryway
+entwine
+entwist
+enucleate
+enucleation
+enumerable
+enumerate
+enumerated
+enumerates
+enumerating
+enumeration
+enumerative
+enumerator
+enumerators
+enunciate
+enunciation
+enure
+enuresis
+envelop
+envelope
+enveloped
+enveloper
+envelopes
+enveloping
+envelopment
+envelops
+envenom
+enviable
+enviably
+envied
+envies
+envious
+enviously
+enviousness
+environ
+environing
+environment
+environmental
+environmentalism
+environmentalist
+environmentally
+environments
+environs
+envisage
+envisaged
+envisages
+envision
+envisioned
+envisioning
+envisions
+envoy
+envoys
+envy
+envyingly
+enwrap
+enzymatic
+enzyme
+Eocene
+EOE
+eolian
+eon
+EPA
+epaulet
+epaulets
+epaulette
+epee
+ephedrine
+ephemera
+ephemeral
+ephemerally
+ephemerides
+ephemeris
+Ephesian
+Ephesians
+Ephesus
+Ephraim
+epic
+epical
+epicene
+epicenter
+epicentre
+epics
+epicure
+epicurean
+Epicurize
+Epicurizes
+Epicurus
+epidemic
+epidemical
+epidemically
+epidemics
+epidemiologist
+epidemiology
+epidermal
+epidermic
+epidermis
+epidiascope
+epiglottis
+epigon
+epigram
+epigrammatic
+epigraph
+epigraphy
+epilepsy
+epileptic
+epilog
+epilogue
+epinephrin
+epinephrine
+epiphany
+episcopacy
+episcopal
+episcopalian
+Episcopalianize
+Episcopalianizes
+episcopate
+episcope
+episode
+episodes
+episodic
+episodically
+epistemological
+epistemology
+epistle
+epistles
+epistolary
+epitaph
+epitaphs
+epitaxial
+epitaxially
+epithelia
+epithelial
+epithelium
+epithet
+epithets
+epitome
+epitomize
+epitomized
+epitomizes
+epitomizing
+epoch
+epochal
+epochs
+epos
+epoxy
+EPROM
+epsilon
+Epsom
+Epstein
+equability
+equable
+equably
+equal
+equaled
+equaling
+equalities
+equality
+equalization
+equalize
+equalized
+equalizer
+equalizers
+equalizes
+equalizing
+equally
+equals
+equanimity
+equatable
+equate
+equated
+equates
+equating
+equation
+equations
+equator
+equatorial
+equators
+equerry
+equestrian
+equestrianism
+equestrienne
+equiangular
+equidistant
+equidistantly
+equifinality
+equilateral
+equilibrate
+equilibria
+equilibrist
+equilibrium
+equilibriums
+equine
+equinoctial
+equinox
+equip
+equipage
+equipment
+equipoise
+equipollence
+equipollent
+equipotential
+equipped
+equipping
+equips
+equitable
+equitably
+equitation
+equity
+equivalence
+equivalences
+equivalent
+equivalently
+equivalents
+equivocal
+equivocally
+equivocalness
+equivocate
+equivocation
+equivocator
+era
+eradiate
+eradicable
+eradicate
+eradicated
+eradicates
+eradicating
+eradication
+eradicator
+eras
+erasable
+erase
+erased
+erasement
+eraser
+erasers
+erases
+erasing
+Erasmus
+Erastus
+erasure
+Erato
+Eratosthenes
+erbium
+ere
+erect
+erected
+erectile
+erecting
+erection
+erections
+erectly
+erectness
+erector
+erectors
+erects
+erelong
+eremite
+erg
+ergo
+ergodic
+ergometrics
+ergonomic
+ergonomically
+ergonomics
+ergosterol
+ergot
+Eric
+erica
+Erich
+Erickson
+Ericson
+Ericsson
+Erie
+Erik
+Erikson
+Eriksson
+Erin
+Eris
+Eritrea
+Erlang
+Erlenmeyer
+Erlenmeyers
+ermine
+ermines
+Erne
+Ernest
+Ernestine
+Ernie
+Ernst
+erode
+erodible
+erogenous
+Eros
+erosion
+erosive
+erotic
+erotica
+erotically
+eroticism
+err
+errand
+errand-boy
+errant
+errata
+erratic
+erratically
+erratum
+erred
+erring
+erringly
+Errol
+erroneous
+erroneously
+erroneousness
+error
+errors
+errs
+ersatz
+Erse
+Erskine
+erst
+erstwhile
+erubescent
+eruct
+eructation
+erudite
+eruditely
+erudition
+erupt
+eruption
+eruptive
+Ervin
+Erwin
+erysipelas
+erythrocyte
+Es
+ESA-IRS/QUEST
+ESANET
+Esau
+escalate
+escalated
+escalates
+escalating
+escalation
+escalator
+escallop
+escalop
+escapable
+escapade
+escapades
+escape
+escaped
+escapee
+escapees
+escapement
+escapes
+escaping
+escapism
+escapist
+escarole
+escarp
+escarpment
+eschar
+eschatology
+Escherichia
+eschew
+eschewed
+eschewing
+eschews
+Escondido
+escort
+escorted
+escorting
+escorts
+escritoire
+escrow
+escudo
+esculent
+escutcheon
+ESE
+Eskimauan
+Eskimo
+Eskimoan
+Eskimoized
+Eskimoizeds
+Eskimos
+ESL
+Esmark
+esophageal
+esophagi
+esophagus
+esoteric
+esoterically
+esoterik
+ESP
+espadrille
+Espagnol
+espalier
+especial
+especially
+Esperanto
+espial
+espionage
+esplanade
+Esposito
+espousal
+espouse
+espoused
+espouses
+espousing
+espresso
+esprit
+espy
+Esq
+Esquimau
+esquires
+essay
+essayed
+essayer
+essayist
+essays
+Essen
+essence
+essences
+Essene
+Essenize
+Essenizes
+essential
+essentially
+essentials
+Essex
+EST
+establish
+established
+establishes
+establishing
+establishment
+establishments
+estate
+estates
+esteem
+esteemed
+esteeming
+esteems
+Estella
+ester
+Estes
+Esther
+esthete
+esthetic
+esthetically
+esthetics
+Esthonia
+estimable
+estimate
+estimated
+estimates
+estimating
+estimation
+estimations
+estimator
+estivate
+Estonia
+Estonian
+estop
+estrade
+estrange
+estranged
+estrangement
+estray
+estrogen
+estrous
+estrus
+estuary
+etc.
+etch
+etcher
+etching
+ETD
+eternal
+eternally
+eternalness
+eternities
+eternity
+eternize
+Ethan
+ethane
+ethanol
+Ethel
+ether
+ethereal
+ethereally
+etherize
+Ethernet
+Ethernets
+ethers
+ethic
+ethical
+ethically
+ethics
+Ethiopia
+Ethiopian
+Ethiopians
+ethnic
+ethnically
+ethnicity
+ethnocentric
+ethnocentrism
+ethnography
+ethnological
+ethnologist
+ethnology
+ethological
+ethologist
+ethology
+ethos
+ethyl
+ethylene
+etiolation
+etiologic
+etiological
+etiology
+etiquette
+Etna
+Etruria
+Etruscan
+ETU
+etude
+etymological
+etymologically
+etymologist
+etymology
+eucalypti
+eucalyptus
+Eucharist
+Eucharistic
+euchre
+Euclid
+Eugene
+Eugenia
+eugenic
+eugenically
+eugenicist
+eugenics
+Euler
+Eulerian
+eulogist
+eulogistic
+eulogize
+eulogizer
+eulogy
+Eumenides
+Eunice
+eunuch
+eunuchs
+euphamism
+euphemism
+euphemisms
+euphemistic
+euphemistically
+euphemize
+euphonic
+euphonious
+euphoniously
+euphony
+euphoria
+euphoric
+euphorically
+Euphrates
+euphuism
+Eurasia
+Eurasian
+eureka
+Euripides
+Euro
+Eurocheque
+Eurodollar
+EURONET
+Europa
+Europe
+European
+Europeanization
+Europeanizations
+Europeanize
+Europeanized
+Europeanizes
+Europeans
+europium
+Eurydice
+Euterpe
+euthanasia
+euthenics
+Eva
+evacuant
+evacuate
+evacuated
+evacuation
+evacuee
+evade
+evaded
+evader
+evades
+evading
+evaluate
+evaluated
+evaluates
+evaluating
+evaluation
+evaluations
+evaluative
+evaluator
+evaluators
+evanesce
+evanescence
+evanescent
+evangel
+evangelic
+evangelical
+evangelicalism
+evangelically
+Evangeline
+evangelism
+evangelist
+evangelistic
+evangelize
+Evans
+Evanston
+Evansville
+evaporate
+evaporated
+evaporating
+evaporation
+evaporative
+evaporator
+evasion
+evasive
+evasively
+evasiveness
+eve
+Evelyn
+even
+even-handed
+even-tempered
+even-toed
+evened
+evenhanded
+evenhandedly
+evenhandedness
+evening
+evenings
+evenly
+evenness
+evens
+Evensen
+evensong
+event
+eventful
+eventfully
+eventfulness
+eventide
+events
+eventual
+eventualities
+eventuality
+eventually
+eventuate
+ever
+Eveready
+Everest
+Everett
+Everglades
+evergreen
+Everhart
+everlasting
+everlastingly
+evermore
+eversion
+every
+everybody
+everyday
+everyone
+everyplace
+everything
+everyway
+everywhere
+evict
+evicted
+evicting
+eviction
+evictions
+evicts
+evidence
+evidenced
+evidences
+evidencing
+evident
+evidential
+evidently
+evil
+evil-affected
+evil-doer
+evil-minded
+evil-speaking
+evildoer
+evildoing
+eviller
+evilly
+evilminded
+evilness
+evils
+evince
+evinced
+evinces
+eviscerate
+evisceration
+evitable
+evitation
+evocation
+evocative
+evocatively
+evoke
+evoked
+evokes
+evoking
+evolute
+evolutes
+evolution
+evolutionary
+evolutionist
+evolutions
+evolve
+evolved
+evolves
+evolving
+EVR
+evulsion
+ewe
+Ewen
+ewer
+ewes
+Ewing
+ex
+ex-libris
+ex-serviceman
+exacerbate
+exacerbated
+exacerbates
+exacerbating
+exacerbation
+exacerbations
+exact
+exacted
+exacter
+exacting
+exactingly
+exaction
+exactions
+exactitude
+exactly
+exactness
+exactor
+exacts
+exaggerate
+exaggerated
+exaggeratedly
+exaggerates
+exaggerating
+exaggeration
+exaggerations
+exaggerator
+exalt
+exaltation
+exalted
+exalting
+exalts
+exam
+examination
+examinations
+examine
+examined
+examinee
+examiner
+examiners
+examines
+examining
+example
+examples
+exams
+exasperate
+exasperated
+exasperates
+exasperating
+exasperation
+excavate
+excavated
+excavates
+excavating
+excavation
+excavations
+excavator
+exceed
+exceeded
+exceeding
+exceedingly
+exceeds
+excel
+excelled
+excellence
+excellences
+excellency
+excellent
+excellently
+excelling
+excels
+excelsior
+except
+excepted
+excepting
+exception
+exceptionable
+exceptional
+exceptionally
+exceptions
+excepts
+excerpt
+excerpted
+excerption
+excerpts
+excess
+excesses
+excessive
+excessively
+exchange
+exchangeable
+exchanged
+exchanges
+exchanging
+exchequer
+exchequers
+excise
+excised
+exciseman
+excises
+excising
+excision
+excitability
+excitable
+excitably
+excitant
+excitation
+excitations
+excite
+excited
+excitedly
+excitement
+exciter
+excites
+exciting
+excitingly
+exciton
+exclaim
+exclaimed
+exclaimer
+exclaimers
+exclaiming
+exclaims
+exclamation
+exclamations
+exclamatory
+exclude
+excluded
+excludes
+excluding
+exclusion
+exclusionary
+exclusions
+exclusive
+exclusively
+exclusiveness
+exclusivity
+excogitate
+excogitation
+excommunicate
+excommunicated
+excommunicates
+excommunicating
+excommunication
+excoriate
+excoriation
+excrement
+excremental
+excrescence
+excrescent
+excresent
+excreta
+excrete
+excreted
+excretes
+excreting
+excretion
+excretions
+excretory
+excruciate
+excruciating
+excruciatingly
+excruciation
+exculpable
+exculpate
+exculpation
+excursion
+excursionist
+excursions
+excursive
+excursively
+excursiveness
+excusable
+excusably
+excusatory
+excuse
+excused
+excuses
+excusing
+exec
+execrable
+execrably
+execrate
+execration
+executable
+execute
+executed
+executer
+executes
+executing
+execution
+executional
+executioner
+executions
+executive
+executives
+executor
+executors
+executrices
+executrix
+exegeses
+exegesis
+exegetic
+exegetical
+exemplar
+exemplary
+exemplification
+exemplified
+exemplifier
+exemplifiers
+exemplifies
+exemplify
+exemplifying
+exempt
+exempted
+exempting
+exemption
+exempts
+exequatur
+exequies
+exercise
+exerciser
+exercisers
+exercises
+exercising
+exert
+exerted
+exerting
+exertion
+exertions
+exerts
+Exeter
+exeunt
+exfoliate
+exhalation
+exhale
+exhaled
+exhales
+exhaling
+exhaust
+exhausted
+exhaustedly
+exhaustible
+exhausting
+exhaustion
+exhaustive
+exhaustively
+exhaustiveness
+exhausts
+exhibit
+exhibited
+exhibiting
+exhibition
+exhibitioner
+exhibitionism
+exhibitionist
+exhibitions
+exhibitor
+exhibitors
+exhibits
+exhilarate
+exhilarated
+exhilarating
+exhilaration
+exhort
+exhortation
+exhortations
+exhumation
+exhume
+exigence
+exigencies
+exigency
+exigent
+exiguity
+exiguous
+exile
+exiled
+exiles
+exiling
+exist
+existed
+existence
+existent
+existential
+existentialism
+existentialist
+existentialists
+existentially
+existing
+exists
+exit
+exiting
+exits
+exjunction
+exobiology
+exodus
+exogenous
+exonerate
+exoneration
+exorbitanant
+exorbitance
+exorbitancy
+exorbitant
+exorbitantly
+exorcise
+exorcism
+exorcist
+exorcize
+exordium
+exoskeleton
+exosphere
+exoteric
+exothermic
+exotic
+exotically
+exoticism
+expand
+expandability
+expandable
+expanded
+expander
+expanders
+expanding
+expands
+expanse
+expanses
+expansibility
+expansible
+expansion
+expansionary
+expansionism
+expansionist
+expansions
+expansive
+expansively
+expansiveness
+expatiate
+expatiation
+expatriate
+expatriation
+expect
+expectance
+expectancy
+expectant
+expectantly
+expectation
+expectations
+expected
+expectedly
+expecting
+expectingly
+expectorant
+expectorate
+expectoration
+expects
+expedience
+expediency
+expedient
+expediently
+expedite
+expedited
+expediter
+expedites
+expediting
+expedition
+expeditionary
+expeditions
+expeditious
+expeditiously
+expeditiousness
+expeditor
+expel
+expelled
+expellee
+expelling
+expels
+expend
+expendable
+expended
+expending
+expenditure
+expenditures
+expends
+expense
+expenses
+expensive
+expensively
+expensiveness
+experience
+experienced
+experiences
+experiencing
+experiment
+experimental
+experimentally
+experimentation
+experimentations
+experimented
+experimenter
+experimenters
+experimenting
+experiments
+expert
+expertise
+expertly
+expertness
+experts
+expiable
+expiate
+expiation
+expiatory
+expiration
+expirations
+expiratory
+expire
+expired
+expires
+expiring
+expiry
+explain
+explainable
+explained
+explainer
+explainers
+explaining
+explains
+explanation
+explanations
+explanatory
+expletive
+explicable
+explicandum
+explicate
+explication
+explicatory
+explicatum
+explicit
+explicitly
+explicitness
+explode
+exploded
+explodes
+exploding
+exploit
+exploitable
+exploitation
+exploitations
+exploitative
+exploited
+exploiter
+exploiters
+exploiting
+exploits
+exploration
+explorations
+exploratory
+explore
+explored
+explorer
+explorers
+explores
+exploring
+explosion
+explosion-proof
+explosions
+explosive
+explosively
+explosiveness
+explosives
+expo
+exponent
+exponential
+exponentially
+exponentials
+exponentiate
+exponentiated
+exponentiates
+exponentiating
+exponentiation
+exponentiations
+exponents
+export
+exportable
+exportation
+exported
+exporter
+exporters
+exporting
+exports
+expose
+exposed
+exposer
+exposers
+exposes
+exposing
+exposition
+expositions
+expositive
+expositor
+expository
+expostulate
+expostulation
+exposure
+exposure-scale
+exposures
+expound
+expounded
+expounder
+expounding
+expounds
+express
+expressed
+expresses
+expressibility
+expressible
+expressibly
+expressing
+expression
+expressionism
+expressionist
+expressionistic
+expressionless
+expressions
+expressive
+expressively
+expressiveness
+expressly
+expressway
+expropriate
+expropriation
+expropriator
+expulsion
+expunction
+expunge
+expunged
+expunges
+expunging
+expurgate
+expurgation
+expurgatory
+exquisite
+exquisitely
+exquisiteness
+exsiccate
+extant
+extemporal
+extemporaneous
+extemporaneously
+extemporaneousness
+extemporary
+extempore
+extemporization
+extemporize
+extend
+extendable
+extended
+extender
+extendible
+extending
+extends
+extensibility
+extensible
+extensile
+extension
+extensions
+extensive
+extensively
+extensiveness
+extent
+extents
+extenuate
+extenuated
+extenuating
+extenuation
+exterior
+exteriors
+exterminate
+exterminated
+exterminates
+exterminating
+extermination
+exterminator
+exterminatory
+external
+externalization
+externalize
+externally
+externals
+extinct
+extinction
+extinguish
+extinguishable
+extinguished
+extinguisher
+extinguishes
+extinguishing
+extinguishment
+extirpate
+extirpation
+extirpator
+extol
+extoll
+extort
+extorted
+extorter
+extortion
+extortionate
+extortionately
+extortioner
+extortionist
+extra
+extra-time
+extract
+extracted
+extracting
+extraction
+extractions
+extractor
+extractors
+extracts
+extracurricular
+extraditable
+extradite
+extradition
+extralegal
+extralinguistic
+extramarital
+extramural
+extraneous
+extraneously
+extraneousness
+extraordinaries
+extraordinarily
+extraordinariness
+extraordinary
+extrapolate
+extrapolated
+extrapolates
+extrapolating
+extrapolation
+extrapolations
+extras
+extrasensory
+extraterrestrial
+extraterritorial
+extraterritoriality
+extravagance
+extravagancy
+extravagant
+extravagantly
+extravaganza
+extravehicular
+extravert
+extrawork
+extrema
+extremal
+extreme
+extremely
+extremeness
+extremes
+extremism
+extremist
+extremists
+extremities
+extremity
+extremum
+extricable
+extricate
+extrication
+extrinsic
+extrinsically
+extroversion
+extrovert
+extroverted
+extrude
+extrusion
+extrusive
+exuberance
+exuberant
+exuberantly
+exuberate
+exudate
+exudation
+exude
+exult
+exultant
+exultantly
+exultation
+exurb
+exurban
+exurbanite
+exurbia
+exuviae
+Exxon
+eye
+eye-catcher
+eye-catching
+eye-flap
+eye-glasses
+eye-lid
+eye-opener
+eye-popper
+eye-shade
+eye-tentacles
+eye-tooth
+eye-wink
+eyeball
+eyebeam
+eyebrow
+eyebrows
+eyed
+eyedropper
+eyeful
+eyeglass
+eyeglasses
+eyeing
+eyelash
+eyeless
+eyelet
+eyelid
+eyelids
+eyeliner
+eyeopener
+eyeopening
+eyepiece
+eyepieces
+eyer
+eyers
+eyes
+eyeshot
+eyesight
+eyesore
+eyestrain
+eyeteeth
+eyetooth
+eyewash
+eyewitness
+eyewitnesses
+eying
+eyrie
+eyry
+Ezekiel
+Ezra
+f-number
+fa
+FAA
+Faber
+Fabian
+fable
+fabled
+fables
+fabric
+fabricate
+fabricated
+fabricates
+fabricating
+fabrication
+fabricator
+fabrics
+fabulous
+fabulously
+fac
+facade
+facaded
+facades
+face
+face-cloth
+face-lift
+face-off
+face-pack
+face-saving
+face-to-face
+facecloth
+faced
+faceless
+facelift
+faceplate
+facer
+faces
+facet
+faceted
+facetiae
+facetious
+facetiously
+facetiousness
+facets
+facial
+facially
+facile
+facilely
+facilitate
+facilitated
+facilitates
+facilitating
+facilitation
+facilitator
+facilities
+facility
+facing
+facing-brick
+facings
+facsimile
+facsimiles
+fact
+fact-finding
+faction
+factional
+factionalism
+factions
+factious
+factitious
+facto
+factoid
+factor
+factorage
+factored
+factorial
+factories
+factoring
+factorization
+factorizations
+factors
+factory
+factotum
+facts
+factual
+factually
+facultative
+faculties
+faculty
+fad
+faddish
+faddist
+fade
+faded
+fadeout
+fader
+faders
+fades
+fadge
+fading
+faecal
+faeces
+faerie
+faery
+Fafnir
+fag
+faggot
+faggoting
+Fagin
+fagot
+fagoting
+fags
+Fahey
+Fahrenheit
+Fahrenheits
+faience
+fail
+fail-safe
+failed
+failing
+failings
+faille
+fails
+failsoft
+failure
+failure-analysis
+failureless
+failures
+fain
+faint
+faint-heart
+faint-hearted
+fainted
+fainter
+faintest
+fainthearted
+fainting
+faintly
+faintness
+faints
+fair
+fair-haired
+fair-hand
+fair-minded
+fair-spoken
+fair-weather
+Fairbanks
+Fairchild
+fairer
+fairest
+Fairfax
+Fairfield
+fairground
+fairgrounds
+fairies
+fairing
+fairish
+fairly
+Fairmont
+fairness
+Fairport
+fairs
+Fairview
+fairway
+fairy
+fairy-story
+fairy-tale
+fairyland
+Faisalabad
+faith
+faithful
+faithfully
+faithfulness
+faithless
+faithlessly
+faithlessness
+faiths
+fajitas
+fake
+faked
+fakeer
+faker
+fakes
+faking
+fakir
+falcon
+falconer
+falconry
+falcons
+Falk
+Falkland
+Falklands
+fall
+fall-guy
+fall-out
+fallacies
+fallacious
+fallaciously
+fallacy
+fallen
+fallibility
+fallible
+fallibleness
+fallibly
+falling
+falling-down
+falling-in
+falling-off
+falling-out
+falling-stone
+fallings-out
+falloff
+Fallopian
+fallout
+fallow
+fallow-deer
+falls
+Falmouth
+false
+false-hearted
+falsehood
+falsehoods
+falsely
+falseness
+falsetto
+falsie
+falsies
+falsification
+falsified
+falsifier
+falsifies
+falsify
+falsifying
+falsity
+Falstaff
+falter
+faltered
+faltering
+falteringly
+falters
+fame
+famed
+fames
+familial
+familiar
+familiarities
+familiarity
+familiarization
+familiarize
+familiarized
+familiarizes
+familiarizing
+familiarly
+familiarness
+families
+familism
+family
+famine
+famines
+famish
+famished
+famous
+famously
+fan
+fanatic
+fanatical
+fanatically
+fanaticism
+fanatics
+fancied
+fancier
+fanciers
+fancies
+fanciest
+fanciful
+fancifully
+fancifulness
+fancily
+fanciness
+fancy
+fancy-dress
+fancy-free
+fancy-work
+fancying
+fancywork
+fandango
+fanfare
+fanfold
+fang
+fanged
+fangled
+fangs
+fanlight
+fanned
+fanner
+Fannies
+fanning
+fanny
+fanout
+fans
+fantail
+fantasia
+fantasies
+fantasize
+fantasm
+fantastic
+fantastical
+fantastically
+fantasy
+fantom
+fanzine
+far
+far-away
+far-between
+far-famed
+far-fetched
+far-flung
+far-off
+far-out
+far-reaching
+far-right
+far-seeing
+far-sighted
+farad
+Faraday
+faraway
+Farber
+farce
+farces
+farcical
+farcically
+fare
+fared
+fares
+farewell
+farewells
+farfetched
+Fargo
+farina
+farinaceous
+faring
+Farkas
+Farley
+farm
+farmed
+farmer
+farmers
+farmery
+farmhand
+farmhouse
+farmhouses
+farming
+Farmington
+farmland
+farms
+farmstead
+farmyard
+farmyards
+Farnsworth
+faro
+farrago
+Farragut
+Farrell
+farrier
+farrow
+farseeing
+farsighted
+farsightedness
+fart
+farther
+farthermost
+farthest
+farthing
+fascia
+fascicle
+fascinate
+fascinated
+fascinates
+fascinating
+fascinatingly
+fascination
+fascine
+fascism
+fascist
+fascistic
+Fascization
+fashion
+fashionable
+fashionably
+fashioned
+fashioner
+fashioning
+fashions
+fast
+fast-food
+fast-forward
+fast-talk
+fast-track
+fastback
+fastball
+fasted
+fasten
+fastened
+fastener
+fasteners
+fastening
+fastenings
+fastens
+faster
+fastest
+fastidious
+fastidiously
+fastidiousness
+fasting
+fastness
+fasts
+fat
+fat-free
+fat-guts
+fat-head
+fat-soluble
+fatal
+fatalism
+fatalist
+fatalistic
+fatalistically
+fatalities
+fatality
+fatally
+fatals
+fatback
+fate
+fated
+fateful
+fatefully
+fatefulness
+fathead
+fatheaded
+father
+father-in-law
+fathered
+fatherhood
+fatherland
+fatherless
+fatherly
+fathers
+fathers-in-law
+fathom
+fathomable
+fathomed
+fathoming
+fathomless
+fathoms
+fatigue
+fatigue-dress
+fatigued
+fatigues
+fatiguing
+Fatima
+fatling
+fatness
+fats
+fatten
+fattened
+fattener
+fatteners
+fattening
+fattens
+fatter
+fattest
+fattiness
+fattish
+fatty
+fatuity
+fatuous
+fatuously
+fatuousness
+fatwa
+fauces
+faucet
+faugh
+Faulkner
+Faulknerian
+fault
+faulted
+faultfinder
+faultfinding
+faultily
+faultiness
+faulting
+faultless
+faultlessly
+faultlessness
+faults
+faulty
+faun
+fauna
+faunae
+Fauntleroy
+Faust
+Faustian
+Faustus
+fauvism
+favor
+favorable
+favorably
+favored
+favorer
+favoring
+favorite
+favorites
+favoritism
+favors
+favour
+favourable
+favourer
+favourite
+Fawkes
+fawn
+fawned
+fawner
+fawning
+fawns
+fax
+fay
+Fayette
+Fayetteville
+faze
+FCT
+FD
+FDA
+Fe
+fealty
+fear
+feared
+fearful
+fearfully
+fearfulness
+fearing
+fearless
+fearlessly
+fearlessness
+fearnaught
+fearnought
+fears
+fearsome
+feasibility
+feasible
+feasibly
+feast
+feasted
+feasting
+feasts
+feat
+feather
+feather-bed
+feather-brain
+feather-head
+feather-stitch
+feather-weight
+featherbed
+featherbedding
+feathered
+featherer
+featherers
+feathering
+featherless
+Featherman
+feathers
+featherweight
+feathery
+feats
+feature
+featured
+featureless
+features
+featuring
+feaze
+Feb
+febrifuge
+febrile
+Februaries
+February
+fecal
+feces
+feckless
+fecklessly
+feculent
+fecund
+fecundate
+fecundation
+fecundity
+fed
+Fedders
+federacy
+federal
+federalism
+federalist
+federalization
+federalize
+federally
+federals
+federate
+federation
+federative
+fee
+feeb
+feeble
+feeble-minded
+feeble-mindedness
+feebleness
+feebler
+feeblest
+feebly
+feed
+feed-pipe
+feed-tank
+feed-trough
+feedback
+feedbag
+feeder
+feeders
+feeding
+feeding-bottle
+feedings
+feedlot
+feeds
+feel
+feeler
+feelers
+feeling
+feelingly
+feelings
+feels
+Feeney
+fees
+feet
+feetus
+feign
+feigned
+feigning
+feint
+feist
+feisty
+Felder
+Feldman
+feldspar
+Felice
+Felicia
+felicitate
+felicitation
+felicitations
+felicities
+felicitous
+felicitously
+felicity
+feline
+Felix
+fell
+fell-monger
+fellatio
+felled
+feller
+felling
+Fellini
+felloe
+fellow
+fellow-countryman
+fellow-feeling
+fellow-worker
+fellowman
+fellows
+fellowship
+fellowships
+felly
+felon
+felonious
+felony
+felspar
+felt
+felts
+female
+femaleness
+females
+feminality
+femine
+feminine
+femininely
+femininity
+feminism
+feminist
+feminity
+femora
+femoral
+femur
+femurs
+fen
+fence
+fence-sitter
+fenced
+fencer
+fencers
+fences
+fencing
+fend
+fender
+fender-bender
+fenestration
+fennel
+fenny
+Fenton
+Fenwick
+feoff
+feoffee
+feoffer
+feral
+Ferber
+Ferdinand
+Ferdinando
+Ferguson
+ferine
+Fermat
+ferment
+fermentation
+fermentations
+fermented
+fermenting
+ferments
+Fermi
+fermium
+fern
+Fernando
+ferns
+ferny
+ferocious
+ferociously
+ferociousness
+ferocity
+Ferreira
+Ferrer
+ferret
+ferriage
+ferric
+ferried
+ferries
+ferriferous
+ferrite
+ferro-concrete
+ferrography
+ferromagnetic
+ferrous
+ferruginous
+ferrule
+ferry
+ferry-boat
+ferryboat
+ferryman
+fershman
+fertile
+fertilely
+fertility
+fertilization
+fertilize
+fertilized
+fertilizer
+fertilizers
+fertilizes
+fertilizing
+ferule
+fervency
+fervent
+fervently
+fervid
+fervidly
+fervor
+fervors
+fervour
+fescue
+festal
+fester
+festival
+festivale
+festivality
+festivals
+festive
+festively
+festiveness
+festivities
+festivity
+festoon
+festschrift
+feta
+fetal
+fetch
+fetched
+fetcher
+fetches
+fetching
+fetchingly
+fete
+fetich
+fetichism
+fetid
+fetidness
+fetish
+fetishism
+fetishist
+fetishistic
+fetlock
+fetter
+fettered
+fetters
+fettle
+fettuccine
+fetus
+fetuses
+feud
+feudal
+feudalism
+feudalistic
+feudality
+feudatory
+feuds
+feuilleton
+fever
+fevered
+feverish
+feverishly
+feverishness
+fevers
+few
+fewer
+fewest
+fewness
+fey
+fez
+FHA
+fiance
+fiancee
+fianc
+fiance
+fiasco
+fiat
+fib
+fibber
+fibbing
+fiber
+fiber-optic
+fiberboard
+fiberfill
+Fiberglas
+fiberglass
+fibers
+Fibonacci
+fibre
+fibreboard
+fibril
+fibrillate
+fibrillation
+fibrin
+fibroid
+fibrosis
+fibrosities
+fibrosity
+fibrous
+fibrously
+fibster
+fibula
+fibulae
+fibular
+FICA
+fiche
+fichu
+fickle
+fickleness
+fiction
+fictional
+fictionalization
+fictionalize
+fictionally
+fictions
+fictitious
+fictitiously
+fictive
+ficus
+FID
+FID/ET
+fiddle
+Fiddle!
+fiddle-de-dee
+fiddle-dedee
+fiddle-faddle
+fiddled
+fiddler
+fiddles
+fiddlestick
+fiddlesticks
+Fiddlesticks!
+fiddling
+Fidel
+fidelity
+fidget
+fidgets
+fidgety
+fiducial
+fiduciary
+fie
+fief
+fiefdom
+field
+field-engineering
+field-glass
+field-hospital
+field-marshal
+field-marshall
+field-mouse
+field-piece
+field-test
+field-work
+fielded
+fielder
+fielders
+Fields
+fieldwork
+fieldworker
+fiend
+fiendish
+fiendishly
+fierce
+fiercely
+fierceness
+fiercer
+fiercest
+fieriness
+fiery
+fiesta
+fife
+fifer
+fifteen
+fifteens
+fifteenth
+fifth
+fifthly
+fifties
+fiftieth
+fifty
+fifty-fifty
+fig
+fig-tree
+Figaro
+fight
+fighter
+fighter-bomber
+fighters
+fighting
+fights
+figment
+figs
+figuration
+figurative
+figuratively
+figure
+figured
+figurehead
+figures
+figurine
+figuring
+figurings
+Fiji
+Fijian
+Fijians
+filament
+filamentous
+filaments
+filbert
+filch
+file
+file-boner
+file-cabinet
+file-punch
+filed
+filename
+filenames
+filer
+files
+filesystem
+filet
+filial
+filiation
+filibuster
+filibusterer
+filigree
+filigreed
+filing
+filings
+Filipino
+Filipinos
+Filippo
+fill
+fill-in
+fillable
+filled
+filler
+fillers
+fillet
+filling
+fillings
+fillip
+Fillmore
+fills
+filly
+film
+film-camera
+film-star
+filmed
+filminess
+filming
+filmmaker
+filmography
+films
+filmstrip
+filmy
+Filofax
+filter
+filterable
+filtered
+filterer
+filtering
+filters
+filth
+filthier
+filthiest
+filthily
+filthiness
+filthy
+filtrable
+filtrate
+filtration
+fin
+finagle
+finagler
+final
+finale
+finalist
+finality
+finalization
+finalize
+finalized
+finalizes
+finalizing
+finally
+finals
+finance
+financed
+finances
+financial
+financially
+financier
+financiers
+financing
+finch
+find
+finder
+finders
+finding
+findings
+finds
+fine
+fine-tune
+fined
+finely
+fineness
+finer
+finery
+fines
+finespun
+finesse
+finessed
+finessing
+finest
+finger
+finger-board
+finger-nail
+finger-paint
+finger-post
+finger-print
+finger-stall
+finger-tip
+fingerboard
+fingered
+fingering
+fingerings
+fingerling
+fingernail
+fingerprint
+fingerprints
+fingers
+fingertip
+finial
+finical
+finickiness
+finicky
+fining
+finis
+finish
+finished
+finisher
+finishers
+finishes
+finishing
+finite
+finitely
+finiteness
+fink
+Finland
+Finley
+Finn
+finned
+Finnegan
+Finnish
+Finns
+finny
+fins
+fiord
+Fiorello
+Fiori
+fir
+fir-needles
+fire
+fire!
+fire-arm
+fire-ball
+Fire-bird
+fire-brand
+fire-brigade
+fire-cracker
+fire-eater
+fire-engine
+fire-guard
+fire-hook
+fire-insurance
+fire-irons
+fire-light
+fire-new
+fire-policy
+fire-proof
+fire-screen
+fire-side
+fire-wood
+fire-works
+firearm
+firearms
+fireball
+fireboat
+firebomb
+firebox
+firebrand
+firebreak
+firebrick
+firebug
+firecracker
+fired
+firedamp
+firefight
+firefighter
+firefighting
+fireflies
+firefly
+fireguard
+firehouse
+firelight
+fireman
+firemen
+fireplace
+fireplaces
+fireplug
+firepower
+fireproof
+firer
+firers
+fires
+fireside
+Firestone
+firetruck
+firewall
+firewater
+firewood
+firework
+fireworks
+firing
+firings
+firkin
+firm
+firmament
+firmed
+firmer
+firmest
+firming
+firmly
+firmness
+firms
+firmware
+first
+first-aid
+first-born
+first-class
+first-cost
+first-form
+first-fruits
+first-generation
+first-grader
+first-hand
+first-rate
+first-string
+first-stringer
+firstborn
+firsthand
+firstling
+firstly
+firsts
+firth
+fisc
+fiscal
+fiscally
+Fischbein
+Fischer
+fish
+fish-pond
+fishbowl
+fishcake
+fished
+fisher
+fisherman
+fishermen
+fishers
+fishery
+fishhook
+fishily
+fishiness
+fishing
+fishing-rod
+Fishkill
+fishmonger
+fishmonger's
+fishnet
+fishpond
+fishtail
+fishwife
+fishwives
+fishy
+fisk
+Fiske
+fissile
+fission
+fissionable
+fissure
+fissured
+fist
+fisted
+fistfight
+fistful
+fisticuff
+fisticuffs
+fists
+fistula
+fistulae
+fistulous
+fit
+fitch
+Fitchburg
+fitchet
+fitchew
+fitful
+fitfully
+fitfulness
+fitly
+fitment
+fitness
+fits
+fitted
+fitter
+fitters
+fitting
+fittingly
+fittings
+Fitzgerald
+Fitzpatrick
+Fitzroy
+five
+five-and-dime
+five-and-ten
+fivefold
+fiver
+fives
+fix
+fixable
+fixate
+fixated
+fixates
+fixating
+fixation
+fixations
+fixative
+fixed
+fixedly
+fixedness
+fixer
+fixers
+fixes
+fixing
+fixings
+fixity
+fixture
+fixtures
+Fizeau
+fizgig
+fizz
+fizzle
+fizzled
+fizzy
+fjord
+FL
+Fla
+flab
+flabbergast
+flabbergasted
+flabbily
+flabbiness
+flabby
+flaccid
+flaccidity
+flaccidly
+flack
+flag
+flag-ship
+flagella
+flagellant
+flagellate
+flagellation
+flagellum
+flagged
+flagging
+flaggy
+flagitious
+Flagler
+flagman
+flagon
+flagpole
+flagrance
+flagrancy
+flagrant
+flagrantly
+flags
+flagship
+flagstone
+flail
+flair
+flak
+flake
+flaked
+flakes
+flakiness
+flaking
+flaky
+flam
+flambe
+flambeau
+flamboyance
+flamboyancy
+flamboyant
+flamboyantly
+flame
+flame-projector
+flame-thrower
+flamed
+flamenco
+flameproof
+flamer
+flamers
+flames
+flamethrower
+flaming
+flamingo
+flammability
+flammable
+flamy
+flan
+Flanagan
+Flanders
+flange
+flank
+flanked
+flanker
+flanking
+flanks
+flannel
+flannelet
+flannelette
+flannels
+flap
+flap-doodle
+flapdoodle
+flapjack
+flapjaw
+flapper
+flaps
+flare
+flare-up
+flared
+flares
+flareup
+flaring
+flash
+flash-bulb
+flash-gun
+flash-light
+flash-point
+flashback
+flashbulb
+flashcard
+flashcube
+flashed
+flasher
+flashers
+flashes
+flashgun
+flashily
+flashiness
+flashing
+flashlight
+flashlights
+flashpoint
+flashy
+flask
+flasket
+flat
+flat-chested
+flat-fish
+flat-foot(ed)
+flat-footed
+flat-iron
+flat-out
+flatbed
+flatboat
+flatcar
+flatfeet
+flatfish
+flatfoot
+flatfooted
+flathead
+flatiron
+flatland
+flatly
+flatness
+flats
+flatten
+flattened
+flattening
+flatter
+flattered
+flatterer
+flattering
+flatteringly
+flattery
+flattest
+flatties
+flattish
+flattop
+flatulence
+flatulent
+flatus
+flatware
+flatworm
+Flaubert
+flaunt
+flaunted
+flaunting
+flauntingly
+flaunts
+flautist
+flavor
+flavored
+flavorful
+flavoring
+flavorings
+flavorless
+flavors
+flavorsome
+flavour
+flaw
+flawed
+flawless
+flawlessly
+flawlessness
+flaws
+flax
+flax-comb
+flax-seed
+flaxen
+flay
+flea
+flea-bite
+flea-bitten
+fleabag
+fleas
+fleck
+flecked
+flection
+fled
+Fledermaus
+fledge
+fledged
+fledgeling
+fledgling
+fledglings
+flee
+fleece
+fleecer
+fleeces
+fleeciness
+fleecy
+fleeing
+fleer
+flees
+fleet
+fleetest
+fleeting
+fleetingly
+fleetingness
+fleetly
+fleetness
+fleets
+Fleischman
+Fleisher
+Fleming
+Flemings
+Flemish
+Flemished
+Flemishes
+Flemishing
+flesh
+flesh-coloured
+flesh-fly
+flesh-hook
+flesh-pot
+fleshed
+fleshes
+fleshing
+fleshly
+fleshpot
+fleshy
+Fletcher
+Fletcherize
+Fletcherizes
+fleur-de-lis
+fleur-de-lys
+fleuron
+fleurs-de-lis
+fleurs-de-lys
+flew
+flex
+flexibilities
+flexibility
+flexible
+flexibly
+flexion
+flexitime
+flexography
+flexowriter
+flextime
+flexuous
+flexure
+flibbertigibbet
+flick
+flicked
+flicker
+flickering
+flicking
+flicks
+flied
+flier
+fliers
+flies
+flight
+flightiness
+flightless
+flights
+flighty
+flim-flamer
+flim-flammery
+flimflam
+flimsily
+flimsiness
+flimsy
+flinch
+flinched
+flinches
+flinching
+fling
+flings
+flint
+flintlock
+flinty
+flip
+flip-flap
+flip-flop
+flipflop
+flippancy
+flippant
+flippantly
+flipped
+flipper
+flipping
+flips
+flirt
+flirtation
+flirtatious
+flirtatiously
+flirtatiousness
+flirted
+flirting
+flirts
+flit
+flitch
+flitting
+flivver
+Flo
+float
+floatage
+floated
+floater
+floating
+floats
+flock
+flocked
+flocking
+flocks
+floe
+flog
+flogger
+flogging
+flood
+flood-gate
+flooded
+floodgate
+flooding
+floodlight
+floodlights
+floodlit
+floodplain
+floodwater
+floor
+floor-cloth
+floor-length
+floor-walker
+floorboard
+floored
+flooring
+floorings
+floors
+floorwalker
+floozie
+floozy
+flop
+Flop!
+flophouse
+floppies
+floppily
+floppiness
+flopping
+floppy
+flops
+flora
+floraal
+florae
+floral
+Florence
+Florentine
+florescence
+florescent
+floret
+floriculture
+florid
+Florida
+Floridan
+Floridian
+Floridians
+floridly
+floridness
+florin
+florist
+florist's
+florists
+floss
+flossed
+flosses
+flossing
+flossy
+flotation
+flotilla
+flotsam
+flounce
+flouncy
+flounder
+floundered
+floundering
+flounders
+flour
+flour-mill
+floured
+flourish
+flourished
+flourishes
+flourishing
+floury
+flout
+flouter
+flow
+flowchart
+flowcharting
+flowcharts
+flowed
+flower
+flower-girl
+flower-pot
+flowerbed
+flowered
+floweriness
+flowering
+flowerless
+flowerpot
+flowers
+flowery
+flowing
+flowline
+flown
+flows
+Floyd
+flu
+flub
+flubdub
+fluctuate
+fluctuates
+fluctuating
+fluctuation
+fluctuations
+flue
+fluency
+fluent
+fluently
+fluff
+fluffier
+fluffiest
+fluffiness
+fluffy
+fluid
+fluidity
+fluidly
+fluids
+fluke
+flukey
+fluky
+flume
+flummox
+flung
+flunk
+flunked
+flunkey
+flunky
+fluor
+fluoresce
+fluorescence
+fluorescent
+fluoridate
+fluoridation
+fluoride
+fluorine
+fluorite
+fluorocarbon
+fluoroscope
+fluoroscopic
+flurried
+flurry
+flush
+flushed
+flushes
+flushing
+fluster
+flustered
+flute
+fluted
+fluting
+flutist
+flutter
+fluttered
+fluttering
+flutters
+fluttery
+flux
+fluxion
+fly
+fly-by
+fly-by-night
+fly-fishing
+fly-leaf
+fly-wheel
+flyable
+flyblown
+flyby
+flycatcher
+flyer
+flyers
+flying
+flying-boat
+flying-bridge
+flying-machine
+flying-officer
+flyleaf
+flyleaves
+Flynn
+flyover
+flypaper
+flyspeck
+flyswatter
+flyway
+flyweight
+flywheel
+foal
+foam
+foamed
+foaminess
+foaming
+foams
+foamy
+fob
+fobbing
+focal
+focally
+foci
+focus
+focused
+focuses
+focusing
+focussed
+fodder
+fodderer
+foe
+foes
+foetal
+foetus
+foetuses
+fog
+fog-bound
+fog-lamp
+Fogarty
+fogbound
+fogey
+fogged
+foggier
+foggiest
+foggily
+fogginess
+fogging
+foggy
+foghorn
+fogs
+fogy
+fogyish
+foible
+foil
+foiled
+foiling
+foils
+foist
+fold
+foldaway
+folded
+folder
+folders
+folding
+foldout
+folds
+Foley
+foliage
+foliate
+foliation
+folio
+folk
+folk-lore
+folk-song
+folk-tale
+folklore
+folkloric
+folklorist
+folks
+folksiness
+folksinger
+folksinging
+folksong
+folksy
+folktale
+folkway
+follicle
+follies
+follow
+follow-through
+follow-up
+followed
+follower
+followers
+following
+followings
+follows
+folly
+Folsom
+FOM
+Fomalhaut
+foment
+fomentation
+fond
+fondant
+fonder
+fondle
+fondled
+fondles
+fondling
+fondly
+fondness
+fondu
+fondue
+font
+Fontaine
+Fontainebleau
+Fontana
+fontanel
+fontanelle
+fonts
+food
+food-stuffs
+foodborne
+foodie
+foods
+foodstuff
+foodstuffs
+fool
+fooled
+foolery
+foolhardily
+foolhardiness
+foolhardy
+fooling
+foolish
+foolishly
+foolishness
+foolproof
+fools
+foolscap
+foot
+foot-bridge
+foot-candle
+foot-fall
+foot-gear
+foot-lights
+foot-mark
+foot-note
+foot-notes
+foot-pad
+foot-passenger
+foot-path
+foot-pound
+foot-print
+foot-rag
+foot-soldier
+footage
+football
+footballer
+footballs
+footboard
+footboy
+footbrake
+footbridge
+Foote
+footed
+footer
+footers
+footfall
+foothill
+foothold
+footing
+footle
+footless
+footlights
+footling
+footlocker
+footloose
+footman
+footnote
+footnotes
+footpath
+footprint
+footprints
+footrace
+footrest
+footsie
+footsore
+footstep
+footsteps
+footstool
+footus
+footwear
+footwork
+foozle
+fop
+foppery
+foppish
+foppishness
+for
+fora
+forage
+foraged
+forager
+forages
+foraging
+foramen
+foray
+forays
+forbad
+forbade
+forbear
+forbearance
+forbears
+Forbes
+forbid
+forbidden
+forbidding
+forbiddingly
+forbids
+forbore
+forborne
+force
+force-fed
+force-feed
+forced
+forceful
+forcefully
+forcefulness
+forceps
+forcer
+forces
+forcible
+forcibly
+forcing
+ford
+fordable
+Fordham
+fords
+fore
+fore-and-aft
+fore-edge
+forearm
+forearms
+forebear
+forebode
+foreboding
+forecast
+forecasted
+forecaster
+forecasters
+forecasting
+forecastle
+forecasts
+foreclose
+foreclosure
+forecourt
+foredoom
+forefather
+forefathers
+forefeet
+forefinger
+forefingers
+forefoot
+forefront
+foregather
+forego
+foregoer
+foregoes
+foregoing
+foregone
+foreground
+foregrounding
+forehand
+forehanded
+forehead
+foreheads
+foreign
+foreign-language
+foreigner
+foreigners
+foreignness
+foreigns
+foreing
+foreknew
+foreknow
+foreknowledge
+foreknown
+forel
+foreleg
+forelimb
+forelock
+foreman
+foremast
+foremost
+forename
+forenamed
+forenoon
+forensic
+forensically
+forensics
+foreordain
+forepart
+foreperson
+foreplay
+forequarter
+forerunner
+forerunners
+foresail
+foresaw
+foresee
+foreseeable
+foreseen
+foreseer
+foresees
+foreshadow
+foreshorten
+foresight
+foresighted
+foresightedness
+foreskin
+forest
+forestage
+forestall
+forestalled
+forestalling
+forestallment
+forestalls
+forestation
+forested
+forester
+foresters
+forestland
+forestry
+forests
+foreswear
+foretaste
+foretell
+foretelling
+foretells
+forethought
+foretitle
+foretold
+foretop
+forever
+forevermore
+forewarn
+forewarned
+forewarning
+forewarnings
+forewarns
+forewent
+forewoman
+foreword
+forfeit
+forfeited
+forfeiture
+forgather
+forgave
+forge
+forged
+forger
+forgeries
+forgery
+forges
+forget
+forget-me-not
+forget-me-nots
+forgetful
+forgetfully
+forgetfulness
+forgets
+forgettable
+forgettably
+forgetting
+forging
+forgivable
+forgivably
+forgive
+forgive!
+forgiven
+forgiveness
+forgiver
+forgives
+forgiving
+forgivingly
+forgo
+forgoer
+forgone
+forgot
+forgotten
+fork
+fork-lift
+forked
+forkful
+forking
+forklift
+forks
+forky
+forlorn
+forlornly
+form
+formal
+formaldehyde
+formalism
+formalisms
+formalist
+formalities
+formality
+formalization
+formalizations
+formalize
+formalized
+formalizes
+formalizing
+formally
+formant
+formants
+format
+formation
+formations
+formative
+formatively
+formatless
+formats
+formatted
+formatter
+formatters
+formatting
+formed
+former
+formerly
+formfitting
+formic
+Formica
+formicary
+Formicas
+formidable
+formidably
+forming
+formless
+formlessly
+formlessness
+Formosa
+Formosan
+forms
+formula
+formulae
+formulaic
+formulas
+formulate
+formulated
+formulates
+formulating
+formulation
+formulations
+formulator
+formulators
+fornicate
+fornication
+fornicator
+forrel
+Forrest
+forril
+forsake
+forsaken
+forsakes
+forsaking
+forsook
+forsooth
+Forster
+forswear
+forswore
+forsworn
+Forsythe
+forsythia
+fort
+Fortaleza
+forte
+Fortescue
+forth
+forthcoming
+forthright
+forthrightly
+forthrightness
+forthwith
+fortier
+forties
+fortieth
+fortification
+fortifications
+fortified
+fortifier
+fortifies
+fortify
+fortifying
+fortiori
+fortissimo
+fortitude
+fortnight
+fortnight's
+fortnightly
+FORTRAN
+fortress
+fortresses
+forts
+fortuitous
+fortuitously
+fortuitousness
+fortuity
+fortunate
+fortunately
+fortune
+fortune-teller
+fortune-telling
+fortunes
+fortuneteller
+fortunetelling
+forty
+forty-five
+forty-niner
+forum
+forums
+forward
+forward(s)
+forward-looking
+forwarded
+forwarder
+forwarding
+forwardly
+forwardness
+forwards
+forwent
+foss
+fosse
+fossil
+fossilization
+fossilize
+foster
+foster-father
+foster-mother
+fostered
+fostering
+fosters
+fought
+foul
+foul-mouth
+foul-mouthed
+foul-up
+foulard
+fouled
+foulest
+fouling
+foully
+foulmouth
+foulmouthed
+foulness
+fouls
+found
+foundation
+foundations
+founded
+founder
+foundered
+founders
+founding
+foundling
+foundries
+foundry
+founds
+fount
+fountain
+fountain-head
+fountain-pen
+fountainhead
+fountains
+founts
+four
+four-dimensional
+four-flush
+four-flusher
+four-footed
+four-in-hand
+four-legged
+four-o'clock
+four-oar
+four-poster
+four-seater
+four-square
+four-stroke
+four-wheel
+fourfold
+Fourier
+fourpence
+fourpenny
+fourposter
+fours
+fourscore
+foursome
+foursquare
+fourteen
+fourteen-year-old
+fourteens
+fourteenth
+fourth
+fourth-class
+fourthly
+fowl
+fowler
+fowls
+fox
+fox-glove
+fox-hound
+fox-terrier
+fox-trot
+foxed
+foxes
+foxfire
+foxglove
+Foxhall
+foxhole
+foxhound
+foxily
+foxiness
+foxtrot
+foxy
+foyer
+FPO
+Fr
+fracas
+fraction
+fractional
+fractionally
+fractions
+fractious
+fractiously
+fractiousness
+fracture
+fractured
+fractures
+fracturing
+fragile
+fragility
+fragment
+fragmentary
+fragmentation
+fragmented
+fragmenting
+fragments
+fragrance
+fragrances
+fragrant
+fragrantly
+frail
+frailest
+frailly
+frailness
+frailty
+fraily
+Fraktur
+frame
+frame-aerial
+frame-saw
+frame-up
+framed
+framer
+frames
+framework
+frameworks
+framing
+Fran
+franc
+Francaise
+France
+Frances
+Francesca
+Francesco
+franchise
+franchisee
+franchiser
+franchises
+franchisor
+Francie
+Francine
+Francis
+franciscan
+Franciscans
+Francisco
+francium
+Francize
+Francizes
+Franck
+Franco
+Francois
+Francoise
+francs
+frangibility
+frangible
+frank
+franked
+Frankel
+Frankenstein
+franker
+frankest
+Frankfort
+Frankfurt
+frankfurter
+frankfurters
+Frankie
+frankincense
+franking
+Frankish
+Franklin
+Franklinization
+Franklinizations
+frankly
+frankness
+franks
+Franny
+frantic
+frantically
+Franz
+frappe
+Fraser
+frat
+fraternal
+fraternally
+fraternities
+fraternity
+fraternization
+fraternize
+fraternizer
+fratricidal
+fratricide
+Frau
+fraud
+frauds
+fraudulence
+fraudulent
+fraudulently
+Frauen
+fraught
+Fraulein
+fray
+frayed
+fraying
+Frayne
+frays
+Frazier
+frazzle
+frazzled
+freak
+freak-out
+freaked
+freakish
+freakishly
+freakishness
+freakout
+freaks
+freaky
+freckle
+freckled
+freckles
+freckly
+Fred
+Freddie
+Freddy
+Frederic
+Frederick
+Fredericks
+Fredericksburg
+Frederico
+Fredericton
+Fredholm
+Fredrick
+Fredrickson
+free
+free-base
+free-floating
+free-for-all
+free-handed
+free-lance
+free-lancer
+free-living
+freebase
+freebee
+freebie
+freeboot
+freebooter
+freeborn
+freed
+freedom
+freedoms
+freehand
+freehold
+freeholder
+freeing
+freeings
+freelance
+freelancer
+freeload
+freeloader
+freely
+freeman
+freemason
+Freemasonry
+Freemasons
+freeness
+Freeport
+freer
+frees
+freest
+freestanding
+freestone
+freestyle
+freethinker
+freethinking
+Freetown
+freeware
+freeway
+freewheel
+freewheeling
+freewill
+freezable
+freeze
+freeze-dried
+freeze-dry
+freezer
+freezers
+freezes
+freezing
+freezing-point
+Freida
+freight
+freight-train
+freightage
+freighted
+freighter
+freighters
+freighting
+freights
+Fremont
+French
+French-fry
+Frenchize
+Frenchizes
+Frenchman
+Frenchmen
+Frenchwoman
+frenetic
+frenetically
+frenzied
+frenziedly
+frenzy
+frequencies
+frequency
+frequent
+frequent-flier
+frequented
+frequenter
+frequenters
+frequenting
+frequently
+frequents
+fresco
+frescoes
+fresh
+freshen
+freshened
+freshener
+fresheners
+freshening
+freshens
+fresher
+freshest
+freshet
+freshly
+freshman
+freshmen
+freshness
+freshwater
+Fresnel
+Fresno
+fret
+fret-saw
+fretful
+fretfully
+fretfulness
+fretsaw
+fretted
+fretwork
+Freud
+Freudian
+Freudianism
+Freudianisms
+Freudians
+Frey
+Freya
+Fri
+friable
+friar
+friars
+friary
+fribble
+fricassee
+fricative
+fricatives
+Frick
+friction
+frictional
+frictionless
+frictions
+Friday
+Fridays
+fridge
+fried
+friedcake
+Friedman
+Friedrich
+friend
+friendless
+friendlier
+friendliest
+friendliness
+friendly
+friends
+friendship
+friendships
+frier
+fries
+Friesland
+frieze
+friezes
+frig
+frigate
+frigates
+Frigga
+frigging
+fright
+frighten
+frightened
+frightening
+frighteningly
+frightens
+frightful
+frightfully
+frightfulness
+frigid
+Frigidaire
+frigidity
+frigidly
+frigidness
+frill
+frills
+frilly
+fringe
+fringed
+fringemaker
+frippery
+Frisbee
+Frisia
+Frisian
+frisk
+frisked
+friskily
+friskiness
+frisking
+frisks
+frisky
+Frito
+fritter
+frivolity
+frivolous
+frivolously
+frivolousness
+friz
+frizz
+frizzle
+frizzly
+frizzy
+fro
+frock
+frocks
+frog
+frogflower
+frogman
+frogs
+frogwort
+frolic
+frolicker
+frolics
+frolicsome
+from
+frond
+fronsy
+front
+front-runner
+frontage
+frontal
+frontally
+fronted
+frontier
+frontier-guard
+frontiers
+frontiersman
+frontiersmen
+fronting
+frontispiece
+frontless
+frontrunner
+fronts
+frontside
+frontward
+frontwards
+fronzy
+frosh
+frost
+frost-bite
+frost-bound
+Frostbelt
+frostbit
+frostbite
+frostbitten
+frosted
+frostily
+frostiness
+frosting
+frosts
+frosty
+froth
+frother
+frothiness
+frothing
+frothy
+froufrou
+froward
+frowardness
+frown
+frowned
+frowning
+frowns
+frowst
+frowsty
+frowsy
+frowzily
+frowziness
+frowzy
+froze
+frozen
+frozenly
+fructiferous
+fructification
+fructify
+fructose
+Fruehauf
+frugal
+frugality
+frugally
+frugivorous
+fruit
+fruitage
+fruitcake
+fruited
+fruiter
+fruiterer
+fruiterer's
+fruitful
+fruitfully
+fruitfulness
+fruitiness
+fruition
+fruitless
+fruitlessly
+fruitlessness
+fruits
+fruity
+frumentaceous
+frump
+frumpish
+frumpy
+Frunze
+frusta
+frustrate
+frustrated
+frustrates
+frustrating
+frustratingly
+frustration
+frustrations
+frustum
+fruticose
+fry
+Frye
+fryer
+frying-pan
+FSL
+FSLIC
+FTC
+FTH
+Fuchs
+fuchsia
+fuchsine
+fuck
+fucker
+fucking
+fucus
+fud
+fuddle
+fuddy-duddy
+fudge
+fuehrer
+fuel
+fueled
+fueling
+fuels
+fugacious
+fugal
+fuggle
+fugitive
+fugitives
+fugleman
+fugue
+fuhrer
+Fuji
+Fujitsu
+Fujiyama
+Fukuoka
+Fulbright
+Fulbrights
+fulcra
+fulcrum
+fulfil
+fulfill
+fulfilled
+fulfilling
+fulfillment
+fulfillments
+fulfills
+fulfilment
+fulgent
+fulgurant
+fulgurate
+fuliginous
+full
+full-back
+full-blooded
+full-blown
+full-bodied
+full-dress
+full-fledged
+full-grown
+full-length
+full-mouthed
+full-out
+full-scale
+full-size
+full-time
+full-timer
+fullback
+fullbound
+fuller
+Fullerton
+fullest
+fullness
+fullstop
+fully
+fulminate
+fulmination
+fulness
+fulsome
+fulsomely
+fulsomeness
+Fulton
+fulvous
+fumble
+fumbled
+fumbler
+fumbling
+fumblingly
+fume
+fumed
+fumes
+fumigant
+fumigate
+fumigation
+fumigator
+fuming
+fumy
+fun
+Funafuti
+funambulist
+function
+functional
+functionalities
+functionality
+functionally
+functionals
+functionary
+functioned
+functioning
+functions
+functor
+functors
+fund
+fund-raiser
+fund-raising
+fundament
+fundamental
+fundamentalism
+fundamentalist
+fundamentally
+fundamentals
+funded
+funder
+funders
+funding
+funds
+Fundy
+funeral
+funerals
+funerary
+funereal
+funereally
+funfair
+fungal
+fungi
+fungible
+fungicidal
+fungicide
+fungoid
+fungous
+fungus
+funicle
+funicular
+funk
+funkiness
+funky
+funnel
+funneled
+funneling
+funnels
+funnier
+funnies
+funniest
+funnily
+funniness
+funny
+funny-bone
+fur
+furbelow
+furbish
+furcate
+furies
+furious
+furiouser
+furiously
+furl
+furlong
+furlough
+Furman
+furnace
+furnaces
+furnish
+furnished
+furnisher
+furnishes
+furnishing
+furnishings
+furniture
+furor
+furore
+furred
+furrier
+furriers
+furriness
+furring
+furrow
+furrowed
+furrows
+furry
+furs
+further
+furtherance
+furthered
+furthering
+furthermore
+furthermost
+furthers
+furthest
+furtive
+furtively
+furtiveness
+furuncle
+fury
+furze
+fuscous
+fuse
+fuse-maker
+fusebox
+fused
+fusee
+fuselage
+fuses
+Fushun
+fusibility
+fusible
+fusil
+fusileer
+fusilier
+fusillade
+fusing
+fusion
+fuss
+fussbudget
+fussily
+fussiness
+fussing
+fusspot
+fussy
+fust
+fustian
+fustic
+fustigate
+fustigation
+fustiness
+fusty
+futile
+futilely
+futility
+futon
+future
+futures
+futurism
+futurist
+futuristic
+futurity
+futurologist
+futurology
+futz
+fuze
+fuzee
+fuzz
+fuzzier
+fuzzily
+fuzziness
+fuzzy
+FWD
+FY
+FYI
+fyke
+G-man
+G-string
+gab
+gabardine
+gabbiness
+gabbing
+gabble
+gabby
+gaberdine
+Gaberones
+gabfest
+gabion
+gable
+gabled
+gabler
+gables
+Gabon
+Gabonese
+Gaborone
+Gabriel
+Gabrielle
+gad
+gadabout
+gadder
+gadfly
+gadget
+gadgeteer
+gadgetry
+gadgets
+gadolinium
+Gael
+Gaelic
+Gaelicization
+Gaelicizations
+Gaelicize
+Gaelicizes
+gaff
+gaffe
+gaffer
+gag
+gaga
+Gagarin
+gage
+gagged
+gagging
+gaggle
+gaging
+gags
+gaieties
+gaiety
+Gail
+gaily
+gain
+gained
+gainer
+gainers
+Gaines
+Gainesville
+gainful
+gainfully
+gaining
+gainings
+gainless
+gains
+gainsaid
+gainsay
+gainsayer
+gait
+gaited
+gaiter
+gaiters
+Gaithersburg
+gal
+gala
+galactic
+Galahad
+Galantine
+Galapagos
+Galatea
+Galatean
+Galateans
+Galatia
+Galatians
+galaxies
+galaxy
+Galbreath
+gale
+Galen
+galena
+Galicia
+Galilean
+Galilee
+Galileo
+gall
+gall-bladder
+gall-nut
+gall-stone
+Gallagher
+gallant
+gallantly
+gallantry
+gallants
+gallbladder
+galled
+galleon
+galleria
+galleried
+galleries
+gallery
+galley
+galley-proof
+galley-slave
+galleys
+Gallia
+Gallic
+Gallicism
+gallimaufry
+galling
+gallium
+gallivant
+gallon
+gallons
+galloon
+gallop
+galloped
+galloper
+galloping
+gallops
+Galloway
+gallows
+gallows-bird
+gallows-ripe
+galls
+gallstone
+Gallup
+Galois
+galoot
+galore
+galosh
+galoshe
+galoshes
+Galt
+galumph
+galvanic
+galvanical
+galvanise
+galvanism
+galvanization
+galvanize
+galvanized
+galvanometer
+galvanoplastics
+Galveston
+Galvin
+Galway
+Gama
+Gambia
+Gambian
+gambit
+gamble
+gambled
+gambler
+gambler-house
+gamblers
+gambles
+gambling
+gambol
+game
+game-bag
+game-keeper
+gamecock
+gamed
+gamekeeper
+gamely
+gameness
+games
+gamesmanship
+gamesome
+gamester
+gamete
+gametic
+gamey
+gamin
+gamine
+gaminess
+gaming
+gamma
+gammon
+gamut
+gamy
+gander
+Gandhi
+Gandhian
+gang
+gangbusters
+ganger
+Ganges
+gangland
+ganglia
+gangling
+ganglion
+ganglionic
+gangly
+gangplank
+gangrene
+gangrenous
+gangs
+gangster
+gangsters
+gangue
+gangway
+gannet
+Gannett
+ganster
+gantlet
+gantry
+Ganymede
+GAO
+gaol
+gaol/jail/bird
+gaoler
+gap
+gape
+gaped
+gapes
+gaping
+gaps
+gar
+garage
+garaged
+garages
+garamond
+garb
+garbage
+garbages
+garbanzo
+garbed
+garble
+garbled
+Garcia
+garcon
+garden
+garden-husbandry
+garden-party
+garden-plot
+garden-pot
+garden-tillage
+garden-variety
+gardened
+gardener
+gardeners
+gardenia
+gardening
+gardens
+Gardner
+Garfield
+garfish
+Garfunkel
+gargantuan
+gargle
+gargled
+gargles
+gargling
+gargoyle
+Garibaldi
+garish
+garishly
+garishness
+garland
+garlanded
+garlic
+garlicky
+garment
+garments
+garner
+garnered
+garnet
+Garnett
+garnish
+garnishee
+garnishment
+garniture
+garote
+garotte
+garret
+Garrett
+garrison
+garrisoned
+Garrisonian
+garrote
+garroter
+garrotte
+garrulity
+garrulous
+garrulously
+garrulousness
+Garry
+garter
+garters
+Garth
+Garvey
+Gary
+gas
+gas-bag
+gas-bracket
+gas-burner
+gas-coal
+gas-engine
+gas-fitter
+gas-guzzler
+gas-helmet
+gas-holder
+gas-light
+gas-main
+gas-mask
+gas-meter
+gas-motor
+gas-oven
+gas-pipe
+gas-proof
+gas-works
+gasateria
+gasbag
+Gascony
+gaseous
+gaseously
+gases
+gash
+gashes
+gasholder
+gasification
+gasify
+gasket
+gaslight
+gasohol
+gasolene
+gasoline
+gasometer
+gasonline
+gasp
+gasped
+Gaspee
+gasping
+gasps
+gassed
+gasser
+Gasset
+gassing
+gassings
+gassy
+Gaston
+gastric
+gastritis
+gastroenteritis
+gastrointestinal
+gastronome
+gastronomic
+gastronomical
+gastronomically
+gastronomy
+gastropod
+gaswork
+gasworks
+gate
+gate-crasher
+gate-keeper
+gate-money
+gateau
+gatecrash
+gatecrasher
+gated
+gatehouse
+gatekeeper
+gateman
+gatepost
+gates
+gateway
+gateways
+gather
+gathered
+gatherer
+gatherers
+gathering
+gatherings
+gathers
+gating
+Gatlinburg
+gator
+Gatsby
+gauche
+gauchely
+gaucheness
+gaucherie
+gaucho
+gaud
+gaudily
+gaudiness
+gaudy
+gauffer
+gauge
+gauged
+gauges
+Gauguin
+Gaul
+Gaulish
+Gaulle
+Gauls
+gaunt
+gauntlet
+Gauntley
+gauntness
+Gauss
+Gaussian
+Gautama
+gauze
+gauziness
+gauzy
+gave
+gavel
+gavelkind
+Gavin
+gavotte
+gawk
+gawkily
+gawkiness
+gawky
+gawry
+gay
+gaycat
+gayer
+gayest
+gayety
+Gaylor
+Gaylord
+gayly
+gayness
+Gaynor
+gaze
+gazebo
+gazed
+gazelle
+gazer
+gazers
+gazes
+gazette
+gazetteer
+gazing
+gazpacho
+GB
+Gd
+Gdansk
+GDBMS
+GDP
+Ge
+gear
+gear-box
+gear-lever
+gearbox
+geared
+gearing
+gears
+gearshift
+gearwheel
+Geary
+gecko
+GED
+gee
+Gee!
+geegaw
+geek
+geeky
+geese
+geest
+geez
+geezer
+Gehrig
+Geiger
+Geigy
+geisha
+gel
+gelatin
+gelatine
+gelatinous
+gelcap
+geld
+gelding
+gelid
+gelignite
+gelled
+gelling
+gels
+gem
+geminate
+gemination
+Gemini
+Geminid
+Gemma
+gemmation
+gemmology
+gemological
+gemologist
+gemology
+gems
+gemstone
+gen
+gendarme
+gender
+genders
+gene
+genealogical
+genealogically
+genealogist
+genealogy
+genera
+general
+generalia
+generalissimo
+generalist
+generalists
+generalities
+generality
+generalization
+generalizations
+generalize
+generalized
+generalizer
+generalizers
+generalizes
+generalizing
+generally
+generals
+generalship
+generate
+generated
+generates
+generating
+generation
+generational
+generations
+generative
+generator
+generators
+generatrix
+generic
+generically
+generosities
+generosity
+generous
+generously
+generousness
+genes
+Genesco
+geneses
+genetic
+genetically
+geneticist
+genetics
+Geneva
+Genevan
+Genevieve
+genial
+geniality
+genially
+genie
+genii
+genital
+genitalia
+genitally
+genitals
+genitive
+genitourinary
+genius
+geniuses
+Genoa
+genocidal
+genocide
+genome
+genre
+genres
+gent
+genteel
+genteelly
+genteelness
+gentian
+gentile
+gentility
+gentle
+gentlefolk
+gentlefolks
+gentleman
+gentlemanlike
+gentlemanly
+gentlemen
+gentleness
+gentler
+gentlest
+gentlewoman
+gently
+gentrification
+gentrify
+gentry
+genuflect
+genuflection
+genuine
+genuinely
+genuineness
+genus
+geocentric
+geocentrically
+geochemistry
+geode
+geodesic
+geodesy
+geodetic
+Geoff
+Geoffrey
+geographer
+geographic
+geographical
+geographically
+geography
+geologic
+geological
+geologically
+geologist
+geologists
+geology
+geomagnetic
+geomagnetism
+geometer
+geometric
+geometrical
+geometrically
+geometrician
+geometries
+geometry
+geophysical
+geophysicist
+geophysics
+geopolitical
+geopolitics
+George
+Georges
+Georgetown
+georgette
+Georgia
+Georgian
+Georgians
+geostationary
+geosynchronous
+geosyncline
+geothermal
+geothermic
+GEPOS
+Gerald
+Geraldine
+geranium
+Gerard
+Gerber
+gerbil
+Gerhard
+Gerhardt
+geriatric
+geriatrics
+germ
+germ-cell
+german
+germane
+Germania
+Germanic
+Germanism
+germanium
+germanize
+Germans
+Germantown
+Germany
+germicidal
+germicide
+germinal
+germinate
+germinated
+germinates
+germinating
+germination
+Gerome
+Geronimo
+gerontological
+gerontologist
+gerontology
+Gerry
+gerrymander
+gerrymandering
+Gershwin
+Gershwins
+Gertrude
+gerund
+gestate
+gestation
+gestational
+gesticulate
+gesticulation
+gestural
+gesture
+gestured
+gestures
+gesturing
+gesundheit
+get
+get-at-able
+get-away
+get-together
+get-up
+get-up-and-go
+getaway
+geting
+gets
+getter
+getters
+getting
+Getty
+Gettysburg
+getup
+gewgaw
+geyser
+Ghana
+Ghanaian
+Ghanian
+ghastliness
+ghastly
+ghat
+Ghent
+gherkin
+ghetto
+ghettoize
+ghost
+ghost-writer
+ghosted
+ghosting
+ghostliness
+ghostly
+ghosts
+ghostwrite
+ghostwriter
+ghostwritten
+ghostwrote
+ghoul
+ghoulish
+ghoulishly
+ghoulishness
+GHQ
+GI
+Giacomo
+giant
+giantess
+giants
+gib
+gibber
+gibberish
+gibbet
+gibbon
+Gibbons
+gibbous
+Gibbs
+Gibby
+gibe
+giblet
+giblets
+Gibraltar
+Gibson
+giddily
+giddiness
+Giddings
+giddy
+Gide
+Gideon
+Gifford
+gift
+gift-over
+gift-wrap
+gifted
+gifts
+gig
+gigabit
+gigabits
+gigabyte
+gigabytes
+gigacycle
+gigahertz
+gigantic
+gigantically
+gigavolt
+gigawatt
+giggle
+giggled
+giggler
+giggles
+giggling
+giggly
+GIGI
+GIGO
+gigolo
+Gil
+Gilbert
+Gilbertson
+Gilchrist
+gild
+gilded
+gilder
+gilding
+gilds
+Gilead
+Giles
+Gilkson
+gill
+gill-arches
+gill-openings
+Gillespie
+Gillette
+Gilligan
+gills
+gillyflower
+Gilmore
+gilt
+gilt-edge
+gilt-edged
+gimbal-jawed
+gimbals
+Gimbel
+gimcrack
+gimcrackery
+gimlet
+gimme
+gimmick
+gimmickry
+gimmicks
+gimmicky
+gimp
+gimpy
+gin
+Gina
+ginger
+ginger-beer
+ginger-bread
+ginger-hackled
+gingerbread
+gingerly
+gingersnap
+gingery
+gingham
+ginghams
+gingivitis
+gingko
+ginhead
+ginkgo
+Ginn
+Gino
+gins
+Ginsberg
+Ginsburg
+ginseng
+Gioconda
+Giorgio
+Giovanni
+GIP
+Gipsies
+gipsy
+giraffe
+giraffes
+gird
+girder
+girders
+girdle
+girl
+girl's
+girlfriend
+girlhood
+girlie
+girlish
+girlishly
+girlishness
+girls
+girly
+girt
+girth
+gismo
+gist
+Giuliano
+Giuseppe
+give
+give!
+give-and-take
+giveaway
+giveback
+given
+giver
+givers
+gives
+giving
+Giza
+gizmo
+gizzard
+glabrous
+glace
+glacial
+glacially
+glaciate
+glaciation
+glacier
+glaciers
+glacis
+glad
+glad-hand
+glad-hander
+gladden
+gladder
+gladdest
+glade
+gladiator
+gladiatorial
+gladiola
+gladioli
+gladiolus
+gladly
+gladness
+gladsome
+Gladstone
+Gladys
+glair
+glamor
+glamorization
+glamorize
+glamorous
+glamorously
+glamour
+glamourize
+glamourous
+glance
+glanced
+glances
+glancing
+gland
+glanders
+glandes
+glands
+glandular
+glans
+glare
+glared
+glares
+glaring
+glaringly
+Glasgow
+glasnost
+glass
+Glass!
+glass-blower
+glass-cutter
+glass-grinder
+glass-house
+glass-paper
+glass-work
+glassblower
+glassblowing
+glassed
+glasses
+glassful
+glasshouse
+glassily
+glassiness
+glassman
+glassware
+glassy
+glassy-eyed
+Glaswegian
+glaucoma
+glaze
+glazed
+glazer
+glazes
+glazier
+glazing
+gleam
+gleamed
+gleaming
+gleams
+gleamy
+glean
+gleaned
+gleaner
+gleaning
+gleanings
+gleans
+Gleason
+glebe
+glee
+gleeful
+gleefully
+gleefulness
+glees
+glen
+Glenda
+Glendale
+Glenn
+glens
+glib
+glibly
+glibness
+Glidden
+glide
+glided
+glider
+gliders
+glides
+gliding
+glimmer
+glimmered
+glimmering
+glimmers
+glimpse
+glimpsed
+glimpses
+glint
+glinted
+glinting
+glints
+glissandi
+glissando
+glisten
+glistened
+glistening
+glistens
+glister
+glitch
+glitter
+glittered
+glittering
+glitters
+glittery
+glitz
+glitzy
+gloaming
+gloat
+gloatingly
+glob
+global
+globalism
+globalist
+globally
+globe
+globe-flower
+globe-trotter
+globe-trotting
+globes
+globetrotter
+globular
+globularity
+globule
+globulin
+glockenspiel
+glom
+gloom
+gloomily
+gloominess
+gloomy
+glop
+gloppy
+Gloria
+Gloriana
+glories
+glorification
+glorified
+glorifies
+glorify
+glorious
+gloriously
+glory
+glorying
+gloss
+glossaries
+glossary
+glossed
+glosses
+glossily
+glossiness
+glossing
+glossolalia
+glossy
+glottal
+glottides
+glottis
+Gloucester
+glove
+gloved
+glover
+glovers
+gloves
+gloving
+glow
+glow-worm
+glowed
+glower
+glowering
+glowers
+glowing
+glowingly
+glows
+glowworm
+gloze
+glucose
+glue
+glued
+glues
+gluey
+gluing
+glum
+glumly
+glumness
+glut
+gluten
+glutenous
+glutinous
+glutinously
+glutton
+gluttonize
+gluttonous
+gluttonously
+gluttony
+glycerin
+glycerine
+glycerol
+glycogen
+Glynn
+glyph
+GM
+GMT
+gnar
+gnarl
+gnarled
+gnarly
+gnash
+gnat
+gnat-flower
+gnats
+gnaw
+gnawed
+gnawing
+gnaws
+gneiss
+Gnocchi
+gnome
+gnomic
+gnomish
+gnomon
+gnoseology
+gnosis
+gnostic
+GNP
+gnu
+go
+go-ahead
+go-as-you-please
+go-between
+go-by
+go-cart
+go-fer
+go-getter
+go-getting
+go-go
+go-off
+Goa
+goad
+goaded
+goal
+goal-keeper
+goal-line
+goalie
+goalkeeper
+goalkeeping
+goalpost
+goals
+goaltender
+goat
+goat-god
+goat-herd
+goat-sucker
+goatee
+goatees
+goatherd
+goatish
+goats
+goatskin
+gob
+gobbet
+gobble
+gobbled
+gobbledegook
+gobbledygook
+gobbler
+gobblers
+gobbles
+Gobi
+goblet
+goblets
+goblin
+goblins
+gobs
+God
+God!
+god-awful
+God-child
+God-father
+god-fearing
+God-mother
+god-son
+God-speed
+godchild
+godchildren
+Goddam
+goddammit
+goddamn
+goddamned
+Goddard
+goddaughter
+goddess
+goddesses
+godfather
+godforsaken
+Godfrey
+godhead
+godhood
+Godiva
+godless
+godlessness
+godlike
+godliness
+godly
+godmother
+godmothers
+Godot
+godown
+godparent
+gods
+godsend
+godson
+Godspeed
+Godwin
+Godzilla
+goer
+goes
+Goethe
+gofer
+Goff
+goffer
+goffering
+goggle
+goggle-eyed
+goggles
+Gogh
+going
+going-over
+goings
+goings-on
+goiter
+goitre
+gold
+gold-beater
+gold-digger
+gold-field
+gold-filled
+gold-finch
+gold-foil
+gold-leaf
+gold-mine
+gold-plated
+gold-proof
+gold-rush
+gold-smith
+Golda
+Goldberg
+goldbrick
+goldbricker
+golden
+golden-knop
+golden-rod
+goldenly
+goldenness
+goldenrod
+Goldfield
+goldfinch
+goldfish
+golding
+Goldman
+goldmine
+golds
+goldsmith
+Goldstein
+Goldstine
+Goldwater
+Goldwyn
+Goleta
+golf
+golf-club
+golfer
+golfers
+golfing
+Goliath
+golly
+Golly!
+golosh
+Gomez
+Gompers
+gonad
+gonadal
+gondola
+gondolier
+gone
+gone-by
+goner
+gong
+gongs
+gonna
+gonorrhea
+gonorrheal
+gonorrhoe
+gonorrhoea
+Gonzales
+Gonzalez
+goo
+goober
+good
+good-by
+good-bye
+good-for-nothing
+good-hearted
+good-heartedly
+good-heartedness
+good-humored
+good-humoredly
+good-looking
+good-natured
+good-naturedly
+good-naturedness
+good-quality
+good-sized
+good-tempered
+good-will
+goodby
+goodbye
+Goode
+goodhearted
+goodie
+goodies
+goodish
+goodlooker
+goodly
+goodman
+goodness
+Goodrich
+goods
+goodwife
+goodwill
+Goodwin
+goody
+goody-goody
+goody-two-shoes
+Goodyear
+gooey
+goof
+goof-off
+goofed
+goofiness
+goofs
+goofy
+gook
+goon
+goop
+goose
+goose-berry
+goose-drowner
+goose-flesh
+goose-flesh(-skin)
+goose-pimples
+goose-quill
+goose-skin
+goose-step
+gooseberry
+goosebumps
+gooseflesh
+GOP
+gopher
+Gorbachev
+Gordian
+Gordon
+gore
+Goren
+gorge
+gorgeous
+gorgeously
+gorgeousness
+gorger
+gorges
+gorging
+Gorham
+gorilla
+gorillas
+gorily
+goriness
+Gorky
+gormand
+gormandize
+gormandizer
+gorp
+gorse
+Gorton
+gory
+gosh
+goshawk
+gosling
+gospel
+gospelers
+gospels
+gossamer
+gossip
+gossiped
+gossiper
+gossiping
+gossips
+gossipy
+got
+gotcha
+Goth
+Gotham
+Gothic
+Gothically
+Gothicism
+Gothicize
+Gothicized
+Gothicizer
+Gothicizers
+Gothicizes
+Gothicizing
+GOTO
+GOTOs
+gotta
+gotten
+Gottfried
+Goucher
+Gouda
+gouge
+gouged
+gouger
+gouges
+gouging
+goulash
+Gould
+gourd
+gourde
+gourmand
+gourmet
+gout
+gouty
+govern
+governable
+governance
+governed
+governess
+governing
+government
+governmental
+governmentally
+governments
+governor
+governors
+governorship
+governs
+gowk
+gown
+gowned
+gowns
+Goya
+GP
+GPA
+GPO
+grab
+grabbed
+grabber
+grabbers
+grabbing
+grabbings
+grabble
+grabs
+grace
+graced
+graceful
+gracefully
+gracefulness
+graceless
+gracelessly
+gracelessness
+graces
+Gracie
+gracing
+gracious
+graciously
+graciousness
+grackle
+grad
+gradate
+gradation
+gradations
+grade
+graded
+grader
+graders
+grades
+gradient
+gradients
+grading
+gradings
+gradual
+gradualism
+gradually
+gradualness
+graduate
+graduated
+graduates
+graduating
+graduation
+graduations
+Grady
+Graff
+graffiti
+graffito
+graft
+grafted
+grafter
+grafting
+Grafton
+grafts
+grahams
+grain
+grained
+graininess
+graining
+grains
+grainy
+gram
+grammar
+grammarian
+grammars
+grammatic
+grammatical
+grammaticality
+grammatically
+gramme
+Grammy
+gramophone
+Grampians
+grampus
+grams
+Granada
+granaries
+granary
+grand
+grand-duchess
+grand-duke
+grandam
+grandaunt
+grandchild
+grandchildren
+granddad
+granddaddy
+granddaughter
+grandee
+grander
+grandest
+grandeur
+grandfather
+grandfatherly
+grandfathers
+grandiloquence
+grandiloquent
+grandiose
+grandiosely
+grandiosity
+grandly
+grandma
+grandmamma
+grandmother
+grandmotherly
+grandmothers
+grandnephew
+grandness
+grandniece
+grandpa
+grandparent
+grandparents
+grands
+grandson
+grandsons
+grandstand
+granduncle
+grange
+granite
+granitic
+grannie
+granny
+granola
+grant
+grant-in-aid
+granted
+grantee
+granter
+granting
+grantor
+grants
+grantsmanship
+granular
+granularity
+granulate
+granulated
+granulates
+granulating
+granulation
+granule
+Granville
+grape
+grape-fruit
+grape-sugar
+grape-vine
+grapefruit
+grapes
+grapeshot
+grapevine
+graph
+graphed
+grapheme
+graphic
+graphical
+graphically
+graphics
+graphing
+graphite
+graphologist
+graphology
+graphs
+grapnel
+grapple
+grappled
+grappling
+grasp
+graspable
+grasped
+grasping
+graspingly
+grasps
+grass
+grass-roots
+grass-snake
+grass-widow
+grass-widower
+grassed
+grassers
+grasses
+grasshopper
+grassier
+grassiest
+grassland
+grassplot
+grassroots
+grassy
+grate
+grated
+grateful
+gratefully
+gratefulness
+grater
+grates
+graticule
+gratification
+gratified
+gratify
+gratifying
+grating
+gratingly
+gratings
+gratis
+gratitude
+gratuities
+gratuitous
+gratuitously
+gratuitousness
+gratuity
+gratulate
+gratulatory
+graunch
+gravamen
+gravamina
+grave
+grave-clothes
+grave-digger
+gravedigger
+gravel
+gravelled
+gravelly
+gravely
+graven
+graveness
+graver
+Graves
+graveside
+gravest
+gravestone
+graveyard
+gravid
+gravidity
+gravimeter
+gravitate
+gravitation
+gravitational
+gravity
+gravy
+gray
+graybeard
+grayed
+grayer
+grayest
+graying
+grayish
+grayness
+Grayson
+graze
+grazed
+grazer
+grazier
+grazing
+grease
+grease-proof
+grease/oil
+greased
+greasepaint
+greaser
+greases
+greasily
+greasiness
+greasing
+greasy
+great
+great-aunt
+great-coat
+great-grandchild
+great-grandchildren
+great-granddaughter
+great-grandfather
+great-grandmother
+great-grandparent
+great-grandson
+great-uncle
+greatcoat
+greater
+greatest
+greathearted
+greatly
+greatness
+greave
+grebe
+Grecian
+Grecianize
+Grecianizes
+Greece
+greed
+greedily
+greediness
+greedy
+Greek
+Greekize
+Greekizes
+Greeks
+Greeley
+green
+green-blue
+green-eyed
+green-finch
+green-sickness
+greenback
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greener
+greenery
+greenest
+Greenfeld
+Greenfield
+greenfly
+greengage
+greengrocer
+greengrocer's
+greengrocers
+greenhorn
+greenhouse
+greenhouses
+greening
+greenish
+Greenland
+greenly
+greenmail
+greenness
+greenroom
+greens
+Greensboro
+greenstone
+Greensville
+greensward
+Greentree
+Greenville
+greenware
+Greenwich
+greenwood
+Greer
+greet
+greeted
+greeter
+greeting
+greetings
+greets
+Greg
+gregarious
+gregariously
+gregariousness
+Gregg
+Gregorian
+Gregory
+gremlin
+Grenada
+grenade
+grenades
+Grenadian
+grenadier
+grenadine
+Grendel
+Grenier
+Grenoble
+Grenville
+Gresham
+Greta
+Gretchen
+grew
+grey
+grey-beard
+greyest
+greygoose
+greyhound
+greying
+greylag
+greystone
+grid
+griddle
+griddlecake
+gride
+gridiron
+gridlock
+gridlocked
+grids
+grief
+grief-stricken
+griefs
+Grieg
+grievance
+grievances
+grieve
+grieved
+griever
+grievers
+grieves
+grieving
+grievingly
+grievous
+grievously
+grievousness
+griffin
+Griffith
+griffon
+grig
+grill
+grill-room
+grille
+grilled
+grilling
+grills
+grim
+grimace
+Grimaldi
+grime
+grimed
+Grimes
+griminess
+grimly
+Grimm
+grimness
+grimy
+grin
+grind
+grinder
+grinders
+grinding
+grindings
+grinds
+grindstone
+grindstones
+gringo
+grinning
+grins
+grip
+grip-brake
+gripe
+griped
+griper
+gripes
+griping
+grippe
+gripped
+gripper
+gripping
+grippingly
+grips
+Gris
+gris-gris
+grisliness
+grisly
+grist
+gristle
+gristly
+gristmill
+Griswold
+grit
+grits
+gritter
+grittiness
+gritty
+grizzle
+grizzled
+grizzly
+groan
+groaned
+groaner
+groaners
+groaning
+groans
+groat
+groats
+grocer
+grocer's
+groceries
+grocers
+grocery
+grocers
+grog
+groggily
+grogginess
+groggy
+groin
+grommet
+groom
+groomed
+groomer
+grooming
+grooms
+groomsman
+Groot
+groove
+grooved
+grooves
+groovy
+grope
+groped
+groper
+gropes
+groping
+Gropius
+grosbeak
+grosgrain
+gross
+grossed
+grosser
+grosses
+grossest
+Grosset
+grossing
+grossly
+Grossman
+grossness
+Grosvenor
+grotesque
+grotesquely
+grotesqueness
+grotesques
+Groton
+grotto
+grottos
+grouch
+grouchily
+grouchiness
+grouchy
+ground
+ground-floor
+ground-hog
+ground-note
+ground-plan
+ground-rent
+ground-tone
+groundage
+groundbreaking
+grounded
+grounder
+grounders
+groundglass
+groundhog
+grounding
+groundless
+groundlessly
+groundling
+groundnut
+grounds
+groundsel
+groundswell
+groundwater
+groundwork
+group
+grouped
+grouper
+groupie
+grouping
+groupings
+groups
+grouse
+grouser
+grout
+grouty
+grove
+grovel
+groveled
+groveler
+groveling
+groveller
+grovels
+Grover
+grovers
+groves
+grow
+grower
+growers
+growing
+growl
+growled
+growler
+growling
+growls
+grown
+grown-up
+grownup
+grownups
+grows
+growth
+growths
+grub
+grubber
+grubbily
+grubbiness
+grubby
+grubs
+grubstake
+grudge
+grudges
+grudging
+grudgingly
+gruel
+grueling
+gruelling
+gruesome
+gruesomely
+gruesomeness
+gruff
+gruffly
+gruffness
+grumble
+grumbled
+grumbleer
+grumbler
+grumbles
+grumbling
+Grumman
+grump
+grumpily
+grumpiness
+grumpy
+grunge
+grungy
+grunion
+grunt
+grunted
+grunting
+grunts
+Grusky
+gruyere
+gryphon
+GSA
+GSAM
+GU
+guacamole
+Guadalajara
+Guadalcanal
+Guadalupe
+Guadeloupe
+Guam
+Guamanian
+Guangzhou
+guanine
+guano
+guarani
+guarantee
+guaranteed
+guaranteeing
+guaranteer
+guaranteers
+guarantees
+guarantor
+guaranty
+guard
+guard-boat
+guard-book
+guard-house
+guard-room
+guarded
+guardedly
+guarder
+guardhouse
+Guardia
+guardian
+guardians
+guardianship
+guarding
+guardrail
+guardroom
+guards
+guardsman
+Guatemala
+Guatemalan
+guava
+Guayaquil
+gubernatorial
+guck
+gudgeon
+guelder-rose
+Guelph
+Guenther
+guerilla
+Guernsey
+guerrilla
+guerrillas
+guess
+guess-work
+guessed
+guesser
+guesses
+guessing
+guesstimate
+guesswork
+guest
+guest-house
+guests
+guff
+guffaw
+Guggenheim
+Guhleman
+GUI
+Guiana
+guidance
+guide
+guide-board
+guide-book
+guide-post
+guide-screw
+guide-wheel
+guidebook
+guidebooks
+guided
+guideline
+guidelines
+guidepost
+guider
+guides
+guiding
+guidon
+guild
+guilder
+guilders
+guildhall
+guile
+guileful
+guileless
+guilelessly
+guilelessness
+Guilford
+guillotine
+guilt
+guilt-ridden
+guiltier
+guiltiest
+guiltily
+guiltiness
+guiltless
+guiltlessly
+guilty
+guinea
+Guinea-Bissau
+guinea-fowl
+guinea-hen
+guinea-pig
+Guinean
+Guinevere
+guinness
+guise
+guises
+guitar
+guitarist
+guitars
+Guiyang
+Gujarat
+Gujarati
+gulag
+gulch
+gulches
+gulden
+gulf
+gulfs
+gull
+Gullah
+gulled
+gullet
+gulley
+gullibility
+gullible
+gullies
+gulling
+gulls
+gully
+gullywasher
+gulp
+gulped
+gulper
+gulps
+gum
+gum-boil
+gum-tree
+gumbo
+gumboil
+gumdrop
+gumming
+gummy
+gumption
+gums
+gumshoe
+gun
+gun-barrel
+gun-boat
+gun-cotton
+gun-metal
+gun-powder
+gun-shot
+gun-shy
+gun-stick
+gun-stock
+gunboat
+guncase
+Gunderson
+gunfight
+gunfighter
+gunfire
+gung-ho
+gunk
+gunky
+gunman
+gunmen
+gunmetal
+Gunnar
+gunned
+gunnel
+gunner
+gunners
+gunnery
+gunning
+gunny
+gunnysack
+gunplay
+gunpoint
+gunpowder
+gunrunner
+gunrunning
+guns
+gunship
+gunshot
+gunslinger
+gunsmith
+Gunther
+gunwale
+guppy
+gurgle
+gurgling
+Gurkha
+gurney
+guru
+Gus
+gush
+gushed
+gusher
+gushes
+gushing
+gushy
+gusset
+gussy
+gust
+Gustafson
+gustatory
+Gustav
+Gustave
+Gustavus
+gustily
+gusto
+gusts
+gusty
+gut
+gutbucket
+Gutenberg
+Guthrie
+gutless
+gutlessness
+guts
+gutsy
+gutta-percha
+gutter
+gutter-pipe
+guttered
+gutters
+guttersnipe
+gutting
+guttural
+gutty
+guy
+Guyana
+Guyanese
+guyed
+guyer
+guyers
+guying
+guys
+guzzle
+guzzler
+guzzles
+Gwen
+Gwyn
+gym
+gymkhana
+gymnasia
+gymnasium
+gymnasiums
+gymnast
+gymnastic
+gymnastically
+gymnastics
+gymnasts
+gymnosperm
+gynaecologist
+gynaecology
+gynecologic
+gynecological
+gynecologist
+gynecology
+gyp
+gypper
+gypsies
+gypster
+gypsum
+gypsy
+gyrate
+gyration
+gyrator
+gyratory
+gyre
+gyrfalcon
+gyro
+gyrocompass
+gyroplane
+gyroscope
+gyroscopes
+gyroscopic
+gyve
+h'm
+H-bomb
+ha
+ha-ha
+Haag
+Haas
+habeas
+haberdasher
+haberdasher's
+haberdashery
+Haberman
+Habib
+habiliment
+habiliments
+habilitate
+habit
+habit-forming
+habitability
+habitable
+habitant
+habitat
+habitation
+habitational
+habitations
+habitats
+habits
+habitual
+habitually
+habitualness
+habituate
+habituation
+habitude
+habitue
+habitu
+hacienda
+hack
+hack-saw
+hacked
+hacker
+hackers
+Hackett
+hacking
+hackle
+hackles
+hackney
+hackneyed
+hacks
+hacksaw
+hackwork
+had
+Hadamard
+Haddad
+haddock
+Hades
+hadj
+hadji
+Hadley
+hadn't
+Hadrian
+hadst
+haemal
+haemoglobin
+haemophilia
+haemorrhage
+haemorrhoids
+Hafiz
+hafnium
+haft
+hag
+hag-ridden
+Hagen
+Hager
+haggard
+haggardly
+haggardness
+haggis
+haggish
+haggle
+haggler
+hagiographer
+hagiography
+Hagstrom
+Hague
+hah
+Hahn
+hahnium
+Haifa
+haiku
+hail
+hail-stones
+hail-storm
+hailed
+hailing
+hails
+hailstone
+hailstorm
+Haines
+hair
+hair's-breadth
+hair-breadth
+hair-brush
+hair-cloth
+hair-dresser
+hair-escape
+hair-piece
+hair-pin
+hair-raising
+hair-shirt
+hair-splitter
+hair-splitting
+hair-spring
+hair-stroke
+hair-style
+hair-trigger
+hairball
+hairbreadth
+hairbrush
+haircloth
+haircut
+haircuts
+hairdo
+hairdresser
+hairdressing
+hairdryer
+haired
+hairier
+hairiness
+hairless
+hairlike
+hairline
+hairnet
+hairpiece
+hairpin
+hairs
+hairsbreadth
+hairsplitter
+hairsplitting
+hairspring
+hairstyle
+hairstylist
+hairy
+Haiti
+Haitian
+hajj
+hajji
+hake
+Hal
+halal
+halation
+halberd
+halberdier
+halbert
+halbertier
+halcyon
+hale
+haler
+Haley
+half
+half-and-half
+half-assed
+half-back
+half-baked
+half-binding
+half-bound
+half-breed
+half-brother
+half-byte
+half-caste
+half-cocked
+half-crown
+half-dollar
+half-hearted
+half-hose
+half-hour
+half-hourly
+half-life
+half-lives
+half-mast
+half-moon
+half-price
+half-scholar
+half-seas-over
+half-sheet
+half-sister
+half-sovereign
+half-spacing
+half-staff
+half-step
+half-time
+half-title
+half-tone
+half-track
+half-truth
+half-volume
+half-wit
+half-witted
+half-yearly
+halfback
+halfhearted
+halfheartedly
+halfheartedness
+halfpence
+halfpenny
+halftime
+halftone
+halfway
+halfword
+halibut
+Halifax
+halite
+halitosis
+hall
+hall-mark
+halleluiah
+hallelujah
+Halley
+halliard
+Hallinan
+hallmark
+hallmarks
+hallo
+Hallo(a)!
+halloo
+Halloo!
+hallow
+Hallowe'en
+hallowed
+Halloween
+Hallowmas
+halls
+hallucinate
+hallucination
+hallucinatory
+hallucinogen
+hallucinogenic
+hallway
+hallways
+halm
+halo
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halted
+halter
+halters
+halting
+haltingly
+halts
+halve
+halved
+halvers
+Halverson
+halves
+halving
+halyard
+ham
+ham-fisted
+ham-handed
+Hamal
+hamburg
+hamburger
+hamburgers
+Hamey
+Hamilton
+Hamiltonian
+Hamiltonians
+hamlet
+hamlets
+Hamlin
+hammer
+hammer-block
+hammer-eye
+hammer-head
+hammered
+hammerer
+hammerhead
+hammering
+hammerlock
+hammers
+Hammerstein
+hammertoe
+Hammett
+hamming
+hammock
+hammocks
+Hammond
+Hammurabi
+hammy
+hamper
+hampered
+hampers
+Hampshire
+Hampton
+hams
+hamster
+hamstring
+hamstrung
+Han
+Hancock
+hand
+hand-bag
+hand-barrow
+hand-bell
+hand-brake
+hand-brush
+hand-cart
+hand-glass
+hand-me-down
+hand-medowns
+hand-picked
+hand-to-hand
+hand-to-mouth
+hand-towel
+handbag
+handbags
+handball
+handbarrow
+handbill
+handbook
+handbooks
+handcar
+handcart
+handclasp
+handcraft
+handcrafted
+handcuff
+handcuffed
+handcuffing
+handcuffs
+handed
+Handel
+handful
+handfuls
+handgrip
+handgun
+handicap
+handicapped
+handicapper
+handicaps
+handicraft
+handicrafts
+handier
+handiest
+handily
+handiness
+handing
+handiwork
+handkerchief
+handkerchiefs
+handle
+handlebar
+handlebars
+handled
+handler
+handlers
+handles
+handling
+handlist
+handloom
+handmade
+handmaid
+handmaiden
+handout
+handover
+handpick
+handpicked
+handpress
+handprint
+handrail
+hands
+hands-off
+hands-on
+handsaw
+handsel
+handset
+handsful
+handshake
+handshakes
+handshaking
+handsome
+handsomely
+handsomeness
+handsomer
+handsomest
+handspring
+handstand
+handwheel
+handwork
+handwoven
+handwriting
+handwritten
+handy
+handy-dandy
+handy-man
+handyman
+Haney
+Hanford
+hang
+hang-up
+hangar
+hangars
+hangdog
+hanged
+hanger
+hanger-gallows
+hanger-on
+hangers
+hangers-on
+hanging
+hangman
+hangmen
+hangnail
+hangover
+hangovers
+hangs
+hangup
+Hangzhou
+hank
+Hankel
+hanker
+hankering
+hankie
+hanky
+hanky-panky
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hanoverianize
+Hanoverianizes
+Hanoverize
+Hanoverizes
+Hans
+hansel
+Hansen
+hansom
+hanson
+Hanuka
+Hanukah
+Hanukkah
+hap
+hap-hazard
+Hapgood
+haphazard
+haphazardly
+haphazardness
+hapless
+haplessly
+haplessness
+haploid
+haply
+happen
+happened
+happening
+happenings
+happens
+happenstance
+happier
+happiest
+happify
+happily
+happiness
+happy
+happy-go-lucky
+Hapsburg
+hara-kiri
+harangue
+Harare
+harass
+harassed
+harasser
+harasses
+harassing
+harassment
+Harbin
+harbinger
+harbor
+harbored
+harboring
+harbors
+harbour
+harbour-authorities
+harbourage
+Harcourt
+hard
+hard-and-fast
+hard-bitten
+hard-boiled
+hard-core
+hard-earned
+hard-favoured
+hard-featured
+hard-headed
+hard-hearted
+hard-heartedness
+hard-hitting
+hard-line
+hard-liner
+hard-nosed
+hard-pressed
+hard-set
+hard-shell
+hard-tack
+hard-wired
+hard-working
+hardback
+hardball
+hardboard
+hardboiled
+hardbound
+hardcopy
+hardcore
+hardcover
+harden
+hardened
+hardener
+hardening
+harder
+hardest
+hardhat
+hardheaded
+hardheadedly
+hardheadedness
+hardhearted
+hardheartedly
+hardheartedness
+hardihood
+hardily
+Hardin
+hardiness
+Harding
+hardline
+hardliner
+hardly
+hardness
+hardscrabble
+hardship
+hardships
+hardstand
+hardtack
+hardtop
+hardware
+hardwired
+hardwood
+hardworking
+hardy
+hare
+hare-brained
+hare-lip
+harebell
+harebrained
+harelip
+harelipped
+harem
+hares
+haricot
+hark
+hark!
+harken
+Harlan
+Harlem
+harlequin
+Harley
+harlot
+harlotry
+harlots
+harm
+harmed
+harmful
+harmfully
+harmfulness
+harming
+harmless
+harmlessly
+harmlessness
+Harmon
+harmonic
+harmonica
+harmonically
+harmonicon
+harmonics
+harmonies
+harmonious
+harmoniously
+harmoniousness
+Harmonist
+Harmonistic
+Harmonistically
+harmonium
+harmonization
+harmonize
+harmonizer
+harmony
+harms
+harness
+harnessed
+harnessing
+Harold
+harp
+harper
+harpers
+harping
+harpist
+harpoon
+harpooner
+harpsichord
+harpsichordist
+harpy
+harridan
+harried
+harrier
+Harriet
+Harriman
+Harrington
+Harris
+Harrisburg
+Harrison
+Harrisonburg
+harrow
+harrowed
+harrowing
+harrows
+harry
+harsh
+harsher
+harshly
+harshness
+hart
+Harte
+Hartford
+hartley
+Hartman
+harum-scarum
+Harvard
+Harvardize
+Harvardizes
+harvest
+harvest-festival
+harvest-field
+harvest-home
+harvested
+harvester
+harvesting
+harvestman
+harvests
+Harvey
+Harveyize
+Harveyizes
+Harveys
+has
+has-been
+hash
+hashed
+hasheesh
+hasher
+hashes
+hashing
+hashish
+Haskell
+Haskins
+haslet
+hasn't
+hasp
+hassle
+hassling
+hassock
+hast
+haste
+hasten
+hastened
+hastening
+hastens
+hastily
+hastiness
+Hastings
+hasty
+hat
+hat-band
+hatch
+hatch-system
+hatchback
+hatcheck
+hatched
+hatchery
+hatches
+hatchet
+hatchets
+hatching
+Hatchure
+hatchway
+hate
+hated
+hateful
+hatefully
+hatefulness
+hater
+hates
+Hatfield
+hath
+Hathaway
+hating
+hatless
+hatred
+hats
+hatter
+hatter's
+Hatteras
+Hattie
+Hattiesburg
+Hattize
+Hattizes
+hauberk
+Haugen
+haughtily
+haughtiness
+haughty
+haul
+haulage
+hauled
+hauler
+hauling
+haulm
+hauls
+haulyard
+haunch
+haunches
+haunt
+haunted
+haunter
+haunting
+hauntingly
+haunts
+Hausa
+Hausdorff
+Hauser
+hautboy
+hauteur
+Havana
+have
+have!
+have-not
+have-nots
+Havel
+haven
+haven't
+havens
+haversack
+haves
+Havilland
+having
+havoc
+haw
+haw-haw
+Hawaii
+Hawaiian
+hawfinch
+hawk
+hawk-eyed
+hawked
+hawker
+hawkers
+Hawking
+Hawkins
+hawkish
+hawkishness
+hawks
+Hawley
+haws-hole
+hawse
+hawser
+hawthorn
+Hawthorne
+hay
+hay-barrow
+hay-fever
+hay-fork
+hay-loft
+hay-mow
+haycock
+Hayden
+Haydn
+Hayes
+haying
+hayloft
+haymaking
+haymow
+Haynes
+hayrick
+hayride
+Hays
+hayseed
+haystack
+Hayward
+haywire
+Haywood
+hazard
+hazardous
+hazardously
+hazards
+haze
+hazel
+hazelnut
+hazer
+hazes
+hazily
+haziness
+hazing
+hazy
+HDR
+HDTV
+he
+he'd
+he'll
+he's
+he-goat
+he-man
+head
+head-dress
+head-gear
+head-light
+head-line
+head-office
+head-on
+head-ornament
+head-piece
+head-quarters
+head-to-foot
+head-to-head
+head-waters
+headache
+headaches
+headband
+headboard
+headbone
+headcrash
+headdress
+headed
+headend
+header
+headers
+headfirst
+headgear
+headhunt
+headhunter
+headhunting
+headily
+headiness
+heading
+headings
+headlamp
+headland
+headlands
+headless
+headlight
+headline
+headlined
+headliner
+headlines
+headlining
+headlock
+headlong
+headman
+headmaster
+headmistress
+headmost
+headphone
+headphones
+headpiece
+headpin
+headquarter
+headquarters
+headrest
+headroom
+heads
+headscarf
+headset
+headship
+headshrinker
+headsman
+headspring
+headstall
+headstand
+headstone
+headstrong
+headwaiter
+headwaters
+headway
+headwind
+headword
+heady
+heal
+healed
+healer
+healers
+Healey
+healing
+heals
+health
+healthful
+healthfully
+healthfulness
+healthier
+healthiest
+healthily
+healthiness
+healthy
+Healy
+heap
+heaped
+heaping
+heaps
+hear
+heard
+hearer
+hearers
+hearing
+hearing-impaired
+hearings
+hearken
+hears
+hearsay
+hearse
+Hearst
+heart
+heart's-ease
+heart-beat
+heart-blood
+heart-breaking
+heart-burn
+heart-burning
+heart-complaint
+heart-disease
+heart-felt
+heart-rending
+heart-sore
+heart-to-heart
+heartache
+heartbeat
+heartbreak
+heartbreaking
+heartbroken
+heartburn
+hearten
+heartening
+heartfelt
+hearth
+hearthstone
+heartiest
+heartily
+heartiness
+heartland
+heartless
+heartlessly
+heartlessness
+heartrending
+heartrendingly
+hearts
+heartsick
+heartsickness
+heartstrings
+heartthrob
+heartwarming
+hearty
+heat
+heat-stroke
+heatable
+heated
+heatedly
+heater
+heaters
+heath
+heath-bell
+heath-berry
+heath-cock
+heathen
+heathendom
+heathenish
+heathenism
+heather
+Heathman
+heating
+heatproof
+heats
+heatstroke
+heave
+heave-ho
+heaved
+heaven
+heavenly
+heavens
+heavenward
+heavenwards
+heaver
+heavers
+heaves
+heavier
+heavily
+heaviness
+heaving
+heavy
+heavy-duty
+heavy-handed
+heavy-handedly
+heavy-handedness
+heavy-hearted
+heavy-weight
+heavyhearted
+heavyset
+heavyweight
+Heb
+Hebe
+Hebraic
+Hebraicize
+Hebraicizes
+Hebraism
+Hebrew
+Hebrews
+Hebrides
+Hecate
+heck
+heckle
+heckler
+heckling
+Heckman
+hectare
+hectic
+hectically
+hectogram
+hectograph
+hectography
+hectolitre
+hectometer
+hector
+Hecuba
+Hedda
+hedge
+hedge-business
+hedge-creeper
+hedge-sparrow
+hedged
+hedgehog
+hedgehogs
+hedgehop
+hedger
+hedgerow
+hedges
+hedonism
+hedonist
+hedonistic
+heebie-jeebies
+heed
+heeded
+heedful
+heedfully
+heedless
+heedlessly
+heedlessness
+heeds
+heehaw
+heel
+heeled
+heeler
+heelers
+heeling
+heelless
+heels
+heft
+heftily
+heftiness
+hefty
+Hegel
+Hegelian
+Hegelianize
+Hegelianizes
+hegemony
+heholder
+Heidegger
+Heidelberg
+heifer
+Heifetz
+heigh
+heigh-ho
+height
+heighten
+heightened
+heightening
+heightens
+heights
+Heine
+Heinlein
+heinous
+heinously
+heinousness
+Heinrich
+Heinz
+Heinze
+heir
+heiress
+heiresses
+heirloom
+heirs
+heirship
+Heisenberg
+Heiser
+heist
+Hejira
+held
+Helen
+Helena
+Helene
+Helga
+helianthus
+helical
+helices
+helicopter
+heliocentric
+Heliopolis
+heliotrope
+heliport
+helium
+helix
+hell
+hell-bent
+hell-raiser
+hellbender
+hellbent
+hellcat
+hellebore
+Hellene
+Hellenic
+Hellenism
+Hellenist
+Hellenistic
+Hellenization
+Hellenizations
+Hellenize
+Hellenized
+Hellenizes
+Hellenizing
+heller
+Hellespont
+hellfire
+hellhole
+hellion
+hellish
+hellishly
+hellishness
+Hellman
+hello
+hells
+helm
+helmet
+helmeted
+helmets
+Helmholtz
+helminth
+helmsman
+Helmut
+helot
+help
+help-mater
+helped
+helper
+helpers
+helpful
+helpfully
+helpfulness
+helping
+helpless
+helplessly
+helplessness
+helpmate
+helpmeet
+helps
+Helsinki
+helter-skelter
+helve
+Helvetian
+Helvetic
+Helvetica
+hem
+hematite
+hematologic
+hematological
+hematologist
+hematology
+heme
+hemi-demi-semiquaver
+Hemingway
+hemisphere
+hemispheres
+hemispheric
+hemispherical
+hemline
+hemlock
+hemlocks
+hemmer
+hemoglobin
+hemophilia
+hemophiliac
+hemorrhage
+hemorrhagic
+hemorrhoid
+hemorrhoids
+hemostat
+hemostats
+hemp
+hemp-kiln
+hemp-seed
+hempen
+Hempstead
+hems
+hemstitch
+hen
+hen-bane
+hen-bit
+hen-coop
+hen-cote
+hen-house
+hen-pecked
+hen-roost
+hence
+Hence!
+henceforth
+henceforward
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+Hendrix
+Henley
+henna
+hennery
+Hennessey
+Hennessy
+Henning
+henpeck
+henpecked
+Henri
+Henrietta
+Henry
+hens
+hep
+heparin
+hepatic
+hepatitis
+Hepburn
+heptagon
+heptagonal
+heptathlon
+her
+Hera
+Heracles
+Heraclitus
+herald
+heralded
+heraldic
+heralding
+heraldry
+heralds
+herb
+herbaceous
+herbage
+herbal
+herbalist
+herbarium
+Herbert
+herbicidal
+herbicide
+herbivore
+herbivorous
+herborize
+herbs
+Hercules
+herd
+herded
+herder
+herding
+herds
+herdsman
+here
+here's
+hereabout
+hereabouts
+hereafter
+hereat
+hereby
+hereditable
+hereditary
+heredity
+Hereford
+herefrom
+herein
+hereinafter
+hereinbefore
+hereinto
+hereof
+hereon
+heres
+heresy
+heretic
+heretical
+heretics
+hereto
+heretofore
+hereunder
+hereunto
+hereupon
+herewith
+heritable
+heritage
+heritages
+Herkimer
+Herman
+Hermann
+hermaphrodite
+hermaphroditic
+hermeneutics
+Hermes
+hermetic
+hermetical
+hermetically
+hermit
+hermit-crab
+hermitage
+Hermite
+hermitian
+hermits
+Hermosa
+Hernandez
+hernia
+herniae
+hernial
+herniate
+herniation
+hero
+Herod
+Herodotus
+heroes
+heroic
+heroically
+heroics
+heroin
+heroine
+heroines
+heroism
+heron
+herons
+herpes
+herpetologist
+herpetology
+Herr
+herring
+herringbone
+herrings
+Herrington
+hers
+Herschel
+herself
+Hersey
+Hershel
+Hershey
+hertz
+Hertzog
+hesitance
+hesitancy
+hesitant
+hesitantly
+hesitate
+hesitated
+hesitates
+hesitating
+hesitatingly
+hesitation
+hesitations
+Hesperus
+Hess
+Hesse
+Hessian
+Hessians
+Hester
+het-up
+heterodox
+heterodoxy
+heterogeneity
+heterogeneous
+heterogeneously
+heterogeneousness
+heterogenous
+heterosexual
+heterosexuality
+Hetman
+Hettie
+Hetty
+Heublein
+Heurige(r)
+heuristic
+heuristically
+heuristics
+Heusen
+Heuser
+hew
+hewed
+hewer
+Hewett
+Hewitt
+Hewlett
+hewn
+hews
+hex
+hexadecimal
+hexagon
+hexagonal
+hexagonally
+hexagons
+hexagram
+hexameter
+hey
+heyday
+Heyerdahl
+Heywood
+Hg
+HHS
+hi
+hi-fi
+hi-tech
+Hialeah
+Hiatt
+hiatus
+Hiawatha
+hibachi
+Hibbard
+hibernal
+hibernate
+hibernation
+hibernator
+Hibernia
+Hibernian
+hibiscus
+hiccough
+hiccup
+hiccups
+hick
+hick-town
+Hickeys
+Hickman
+Hickok
+hickory
+Hicks
+hid
+hidden
+hide
+hide-and-go-seek
+hide-and-seek
+hide-out
+hideaway
+hidebound
+hideous
+hideously
+hideousness
+hideout
+hideouts
+hider
+hides
+hiding
+hie
+hierarch
+hierarchal
+hierarchic
+hierarchical
+hierarchically
+hierarchies
+hierarchy
+hieroglyph
+hieroglyphic
+hieroglyphics
+Hieronymus
+Higashiosaka
+Higgins
+higgle
+higgledy-piggledy
+higgler
+high
+high-born
+high-bred
+high-class
+high-day
+high-faluting
+high-five
+high-flier
+high-flown
+high-flyer
+high-grade
+high-handed
+high-handedly
+high-handedness
+high-hat
+high-hatter
+high-heeled
+high-jump
+high-level
+high-light
+high-minded
+high-mindedly
+high-mindedness
+high-pitched
+high-powered
+high-principled
+high-profile
+high-rise
+high-road
+high-sounding
+high-speed
+high-spirited
+high-strung
+high-tech
+high-tension
+high-test
+high-toned
+highball
+highborn
+highboy
+highbrow
+highchair
+higher
+higher-up
+highfalutin
+highfaluting
+Highfield
+highhanded
+highhandedly
+highhandedness
+highjack
+highland
+highlands
+highlight
+highlighted
+highlighter
+highlighting
+highlights
+highly
+highmuckamuck
+highness
+highnesses
+highpockets
+highroad
+hightail
+highty-tighty
+highway
+highwayman
+highwaymen
+highways
+hijack
+hijacked
+hijacker
+hijacking
+hike
+hiked
+hiker
+hikes
+hiking
+hilarious
+hilariously
+hilariousness
+hilarity
+Hilbert
+Hildebrand
+hill
+Hillary
+hillbilly
+Hillcrest
+Hillel
+hilliness
+hillock
+hills
+Hillsboro
+Hillsdale
+hillside
+hillsides
+hilltop
+hilltops
+hilly
+hilt
+Hilton
+hilts
+him
+Himalaya
+Himalayan
+Himalayas
+Himmler
+himself
+hind
+hind-limbs
+Hindemith
+hinder
+hindered
+hindering
+hinders
+Hindi
+hindmost
+Hindoo
+hindquarter
+hindquarters
+hindrance
+hindrances
+hindsight
+Hindu
+Hinduism
+Hindus
+Hindustan
+Hindustani
+Hines
+hinge
+hinged
+hinges
+Hinkle
+Hinman
+hinny
+Hinsdale
+hint
+hinted
+hinter
+hinterland
+hinting
+hints
+hip
+hip-bath
+hip-bone
+hip-hop
+hip-tile
+hipbone
+hipness
+hipped
+hippie
+hippo
+Hippocrates
+Hippocratic
+hippodrome
+hippopotami
+hippopotamus
+hippy
+hips
+hipshot
+Hiram
+hire
+hired
+hireling
+hirer
+hirers
+hires
+Hirey
+hiring
+hirings
+Hirohito
+Hiroshi
+Hiroshima
+Hirsch
+hirsute
+hirsuteness
+his
+Hispanic
+Hispanicize
+Hispanicizes
+Hispanics
+Hispaniola
+hiss
+hissed
+hisses
+hissing
+hist
+histamine
+histogram
+histograms
+histologist
+histology
+historian
+historians
+historic
+historical
+historically
+historicity
+histories
+historiographer
+historiography
+history
+histrion
+histrionic
+histrionically
+histrionics
+hit
+hit-and-miss
+hit-and-run
+hit-on-the-line
+hit-or-miss
+hit-skip
+Hitachi
+hitch
+hitch-hiker
+hitch-ride
+Hitchcock
+hitched
+hitcher
+hitchhike
+hitchhiked
+hitchhiker
+hitchhikers
+hitchhikes
+hitchhiking
+hitching
+hither
+hithermost
+hitherto
+hitherward
+hitherwards
+Hitler
+Hitlerian
+Hitlerism
+Hitlerite
+Hitlerites
+hits
+hitter
+hitters
+hitting
+Hittite
+HIV
+hive
+hives
+HM
+hmm
+HMO
+HMS
+ho
+ho-hum
+hoa
+hoagie
+Hoagland
+hoagy
+hoar
+hoar-frost
+hoar-stone
+hoard
+hoarder
+hoarding
+hoarfrost
+hoariness
+hoarse
+hoarsely
+hoarsen
+hoarseness
+hoary
+hoax
+hoaxer
+hob
+hob-and-nob
+hob-goblin
+hob-nob
+Hobart
+Hobbes
+hobbies
+hobble
+hobbled
+hobbledehoy
+hobbler
+hobbles
+hobbling
+Hobbs
+hobby
+hobby-horse
+hobbyhorse
+hobbyist
+hobbyists
+Hobday
+hobgoblin
+hobnail
+hobnailed
+hobnob
+hobo
+Hoboken
+hock
+hockey
+hockshop
+hocus
+hocus-pocus
+hod
+hod-man
+hodge-podge
+hodgepodge
+Hodges
+Hodgkin
+hoe
+hoecake
+hoedown
+hoer
+hoes
+Hoff
+Hoffman
+hog
+hog-sty
+hog-tie
+hog-wild
+hogan
+hogback
+hogget
+hogging
+hoggish
+hoggishly
+hogs
+hogshead
+hogtie
+hogwash
+hogwild
+hoist
+hoisted
+hoisting
+hoists
+hoity-toity
+Hokan
+hoke
+hokey
+Hokkaido
+hokum
+Holbrook
+Holcomb
+hold
+hold!
+hold-all
+hold-back
+hold-up
+holden
+holder
+holders
+holdfast
+holding
+holdings
+holdout
+holdover
+holds
+holdup
+hole
+hole-and-corner
+hole-in-the-wall
+hole-punch
+holed
+holes
+holey
+holiday
+holiday-maker
+holidays
+holier-than-thou
+holies
+holiness
+holistic
+holistically
+Holland
+Hollandaise
+Hollander
+holler
+Hollerith
+Hollingsworth
+Hollister
+hollow
+hollow-eyed
+hollow-hearted
+Holloway
+hollowed
+hollowing
+hollowly
+hollowness
+hollows
+holly
+hollyhock
+Hollywood
+Hollywoodize
+Hollywoodizes
+holm
+Holman
+Holmdel
+holme
+Holmes
+holmium
+holocaust
+Holocene
+hologram
+holograms
+holograph
+holographic
+holography
+Holst
+Holstein
+holster
+holt
+holy
+Holyoke
+Holzman
+Hom
+homage
+homager
+hombre
+homburg
+home
+home-bred
+home-brew
+home-defence
+home-felt
+home-made
+home-nurse
+home-rule
+home-sick
+home-spun
+home-stead
+homebody
+homeboy
+homecoming
+homed
+homegrown
+homeland
+homeless
+homelessness
+homelike
+homeliness
+homely
+homemade
+homemaker
+homemakers
+homemaking
+homeomorphic
+homeomorphism
+homeomorphisms
+homeopath
+homeopathic
+homeopathy
+homeostasis
+homeostatic
+homeowner
+homepage
+Homeric
+homeroom
+homers
+homes
+homeschooling
+homesick
+homesickness
+homespun
+homestead
+homesteader
+homesteaders
+homesteads
+homestretch
+hometown
+homeward
+homewards
+homework
+homey
+homeyness
+homicidal
+homicide
+homiletic
+homily
+hominess
+homing
+hominid
+hominy
+homo
+homo-
+homogeneities
+homogeneity
+homogeneous
+homogeneously
+homogeneousness
+homogenization
+homogenize
+homogenized
+homogenous
+homograph
+homologization
+homologous
+homomorphic
+homomorphism
+homomorphisms
+homonym
+homonymous
+homonymy
+homophobia
+homophobic
+homophone
+homosexual
+homosexuality
+homy
+hon
+honcho
+Honda
+Hondo
+Honduran
+Honduras
+hone
+honed
+honer
+hones
+honest
+honestly
+honesty
+honey
+honey-bee
+honey-tongued
+honeybee
+honeycomb
+honeycombed
+honeydew
+honeyed
+honeylocust
+honeymoon
+honeymooned
+honeymooner
+honeymooners
+honeymooning
+honeymoons
+honeysucker
+honeysuckle
+Honeywell
+Honiara
+honied
+honing
+honk
+honker
+honkie
+honky
+honky-tonk
+Honolulu
+honor
+honorable
+honorableness
+honorably
+honoraria
+honoraries
+honorarily
+honorarium
+honorary
+honored
+honoree
+honorer
+honorific
+honoring
+honors
+honour
+honourable
+Honshu
+hooch
+hood
+hooded
+hoodlum
+hoodman-blind
+hoodoo
+hoods
+hoodwink
+hoodwinked
+hoodwinking
+hoodwinks
+hooey
+hoof
+hoofed
+hoofs
+hook
+hooka
+hookah
+hooked
+hooker
+hookers
+hookey
+hooking
+hooks
+hookup
+hookups
+hookworm
+hooky
+hooligan
+hooliganish
+hooliganism
+hoop
+hooper
+hooper-dooper
+hooping-cough
+hoopla
+hoopoe
+hoops
+hooray
+hoosegow
+Hoosier
+Hoosierize
+Hoosierizes
+hoot
+hootch
+hooted
+hootenanny
+hooter
+hooting
+hoots
+Hoover
+Hooverize
+Hooverizes
+hooves
+hop
+hop-garden
+Hop-o-my-thumb
+hop-pole
+hope
+hoped
+hopeful
+hopefully
+hopefulness
+hopefuls
+hopeless
+hopelessly
+hopelessness
+hopes
+Hopi
+hoping
+Hopkins
+Hopkinsian
+hopped-up
+hopper
+hoppers
+hopping
+hops
+hopscotch
+hopstep-and-jump
+Horace
+Horatio
+horde
+hordes
+horehound
+horizon
+horizons
+horizontal
+horizontally
+hormonal
+hormone
+hormones
+horn
+horn-beam
+horn-beetle
+horn-blower
+horn-rimmed
+horn-shape)
+hornbeam
+hornblende
+Hornblower
+hornbook
+horned
+hornet
+hornets
+hornless
+hornlike
+hornpipe
+horns
+hornswoggle
+horny
+horologe
+horologic
+horological
+horologist
+horology
+horoscope
+Horowitz
+horrendous
+horrendously
+horrible
+horribleness
+horribly
+horrid
+horridly
+horrific
+horrifically
+horrified
+horrifies
+horrify
+horrifying
+horror
+horror-stricken
+horror-struck
+horrors
+horse
+horse-cloth
+horse-collar
+horse-fly
+horse-hair
+horse-meat
+horse-play
+horse-power
+horse-race
+horse-racing
+horse-radish
+horse-sense
+horse-shoe
+horse-trappings
+horse-whip
+horse-woman
+horseback
+horseflesh
+horsefly
+horsehair
+horsehide
+horselaugh
+horseless
+horseman
+horsemanship
+horseplay
+horsepower
+horseradish
+horses
+horseshoe
+horseshoer
+horseshoes
+horsetail
+horsewhip
+horsewoman
+horsey
+horsy
+hortative
+hortatory
+horticultural
+horticulture
+horticulturist
+Horton
+Horus
+hosanna
+hose
+hoses
+hosier
+hosiery
+hosiery's
+hospice
+hospitable
+hospitably
+hospital
+hospitality
+hospitalization
+hospitalize
+hospitalized
+hospitalizes
+hospitalizing
+hospitals
+host
+hostage
+hostages
+hosted
+hostel
+hosteler
+hostelry
+hostess
+hostesses
+hostile
+hostilely
+hostilities
+hostility
+hosting
+hostler
+hosts
+hot
+hot-bed
+hot-blooded
+hot-button
+hot-head
+hot-headed
+hot-house
+hot-spur
+hot-tempered
+hot-wire
+hotbed
+hotblooded
+hotbox
+hotcake
+hotchpotch
+hotdog
+hotel
+hotelier
+hotels
+hotfoot
+hothead
+hotheaded
+hotheadedly
+hotheadedness
+hothouse
+hotline
+hotly
+hotness
+hotplate
+hots
+hotshot
+Hottentot
+hotter
+hottest
+Houdaille
+Houdini
+Houghton
+hound
+hounded
+hounding
+hounds
+hour
+hour-glass
+hour-hand
+hour-rate
+hourglass
+houri
+hourly
+hours
+house
+house-boat
+house-breaker
+house-breaking
+house-dog
+house-fly
+house-hold
+house-holder
+house-journal
+house-keeper
+house-maid
+house-martin
+house-sit
+house-sitter
+houseboat
+housebound
+houseboy
+housebreak
+housebreaker
+housebreaking
+housebroke
+housebroken
+houseclean
+housecleaning
+housecoat
+housed
+houseflies
+housefly
+houseful
+household
+householder
+householders
+households
+househusband
+housekeeper
+housekeepers
+housekeeping
+houselights
+housemaid
+houseman
+housemother
+houseparent
+houseplant
+houses
+housetop
+housetops
+housewares
+housewarming
+housewife
+housewifely
+housewives
+housework
+housing
+Houston
+HOV
+hove
+hovel
+hovels
+hover
+hovercraft
+hovered
+hovering
+hovers
+how
+how's
+how-manyeth
+how-to
+Howard
+howbeit
+howdah
+howdy
+Howe
+Howell
+however
+howitzer
+howl
+howled
+howler
+howling
+howls
+Howrah
+howsoever
+hoy
+hoyden
+hoydenish
+Hoyle
+Hoyt
+HP
+HQ
+HR
+HRH
+Hrothgar
+HS
+HST
+Huang
+huarache
+hub
+hub-cap
+Hubbard
+Hubbell
+hubble-bubble
+hubbub
+hubby
+hubcap
+Huber
+Hubert
+hubris
+hubs
+huck
+huckle
+huckle-backed
+huckleberry
+huckster
+HUD
+Huddersfield
+huddle
+huddled
+huddling
+Hudson
+hue
+hued
+hues
+Huey
+huff
+huffily
+huffiness
+huffish
+Huffman
+huffy
+hug
+huge
+hugely
+hugeness
+huggermugger
+hugging
+Huggins
+Hugh
+Hughes
+Hugo
+Huguenot
+huh
+hula
+hula-hula
+hulk
+hulking
+hulky
+hull
+hullabaloo
+huller
+hullo
+hulls
+hum
+human
+humane
+humanely
+humaneness
+humanism
+humanist
+humanistic
+humanitarian
+humanitarianism
+humanities
+humanity
+humanization
+humanize
+humanizer
+humankind
+humanly
+humanness
+humanoid
+humans
+humble
+humble-bee
+humble-plant
+humbled
+humbleness
+humbler
+humblest
+humbling
+humbly
+Humboldt
+humbug
+humdinger
+humdrum
+Hume
+humeral
+humeri
+humerus
+humid
+humidification
+humidified
+humidifier
+humidifiers
+humidifies
+humidify
+humidifying
+humidity
+humidly
+humidor
+humiliate
+humiliated
+humiliates
+humiliating
+humiliatingly
+humiliation
+humiliations
+humility
+hummed
+Hummel
+hummer
+humming
+humming-bird
+hummingbird
+hummock
+hummocky
+hummus
+humongous
+humor
+humored
+humorer
+humorers
+humoring
+humorist
+humorless
+humorlessly
+humorlessness
+humorous
+humorously
+humorousness
+humors
+humour
+humourist
+hump
+humpback
+humpbacked
+humped
+humph
+Humphrey
+Humpty
+humpy
+hums
+humungous
+humus
+Hun
+hunch
+hunchback
+hunchbacked
+hunched
+hunches
+hundred
+hundred(s)
+hundredfold
+hundreds
+hundredth
+hundredweight
+hung
+hung-up
+Hungarian
+Hungary
+hunger
+hungered
+hungering
+hungers
+hungover
+hungrier
+hungriest
+hungrily
+hungriness
+hungry
+hunk
+hunker
+hunkers
+hunks
+hunky
+hunky-dory
+Huns
+hunt
+hunted
+hunter
+hunters
+hunting
+hunting-grounds
+hunting-horn
+Huntington
+Huntley
+huntress
+hunts
+huntsman
+Huntsville
+Hurd
+hurdle
+hurdler
+hurdling
+hurds
+hurdy-gurdy
+hurl
+hurled
+hurler
+hurlers
+hurling
+hurly-burly
+Huron
+Hurons
+hurrah
+hurray
+hurricane
+hurricane-deck
+hurricane-lamp
+hurricanes
+hurried
+hurriedly
+hurries
+hurry
+hurry-scurry
+hurrying
+Hurst
+hurt
+hurtful
+hurtfully
+hurtfulness
+hurting
+hurtle
+hurtling
+hurts
+Hurwitz
+husband
+husbandman
+husbandry
+husbands
+hush
+hush-hush
+hushed
+hushes
+hushing
+Husittism
+husk
+husked
+husker
+huskily
+huskiness
+husking
+husks
+husky
+hussar
+Hussein
+hussif
+Hussite
+hussy
+hustings
+hustle
+hustled
+hustler
+hustles
+hustling
+Huston
+hut
+hutch
+Hutchins
+Hutchinson
+Hutchison
+huts
+hutzpa
+hutzpah
+Huxley
+Huxtable
+huzza
+huzzah
+huzzy
+hyacinth
+Hyades
+hyaena
+hyaline
+Hyannis
+hybrid
+hybridism
+hybridization
+hybridize
+Hyde
+Hyderabad
+hydra
+hydrangea
+hydrant
+hydrate
+hydration
+hydraulic
+hydraulically
+hydraulics
+hydro
+hydrocarbon
+hydrocephalus
+hydrodynamic
+hydrodynamics
+hydroelectric
+hydroelectrically
+hydroelectricity
+hydrofoil
+hydrogen
+hydrogenate
+hydrogenation
+hydrogenous
+hydrogens
+hydrography
+hydrologist
+hydrology
+hydrolyses
+hydrolysis
+hydrolyze
+hydrometer
+hydrometry
+hydrophobia
+hydrophobic
+hydrophone
+hydroplane
+hydroponic
+hydroponics
+hydrosphere
+hydrotherapy
+hydrous
+hydroxide
+hyena
+hyena-dog
+hygieist
+hygiene
+hygienic
+hygienically
+hygienist
+hygrometer
+hygroscopic
+hying
+Hyman
+hymen
+hymeneal
+hymn
+hymn-book
+hymnal
+hymnbook
+hymns
+hype
+hyper
+hyper-
+hyperactive
+hyperactivity
+hyperbola
+hyperbolae
+hyperbole
+hyperbolic
+hypercritical
+hypercritically
+hyperglycemia
+hypermedia
+hypersensitive
+hypersensitiveness
+hypersensitivity
+hypertape
+hypertension
+hypertensive
+hypertext
+hyperthyroid
+hyperthyroidism
+hypertrophy
+hyperventilate
+hyperventilation
+hyphen
+hyphenate
+hyphenated
+hyphenation
+hyphens
+hypnoses
+hypnosis
+hypnotherapy
+hypnotic
+hypnotically
+hypnotism
+hypnotist
+hypnotize
+hypo
+hypo-
+hypoallergenic
+hypochondria
+hypochondriac
+hypocrisies
+hypocrisy
+hypocrite
+hypocrites
+hypocritical
+hypocritically
+hypodermal
+hypodermic
+hypodermics
+hypoglycemia
+hypoglycemic
+hyponym
+hypostatize
+hypotaxis
+hypotenuse
+hypothalami
+hypothalamus
+hypothec
+hypothecate
+hypothermia
+hypotheses
+hypothesis
+hypothesize
+hypothesized
+hypothesizer
+hypothesizes
+hypothesizing
+hypothetical
+hypothetically
+hypothyroid
+hypothyroidism
+hyssop
+hysterectomy
+hysteresis
+hysteria
+hysteric
+hysterical
+hysterically
+hysterics
+hysterotomy
+Hz
+I
+I'd
+I'll
+I'm
+I've
+I-R
+i.e.
+I/O
+iac.
+IAL
+iamb
+iambic
+iambus
+Ian
+IAS
+Ibadan
+Iberia
+Iberian
+Ibero-
+ibex
+IBI
+ibices
+Ibid
+ibid.
+ibidem
+ibis
+Ibn
+Ibsen
+ibuprofen
+ICA
+Icarus
+ICBM
+ICC
+ice
+ice-axe
+ice-berg
+ice-breaker
+ice-cold
+ice-cream
+ice-field
+ice-float
+ice-floe
+ice-glazed
+ice-hockey
+ice-house
+ice-pudding
+ice-ridge
+ice-skate
+ice-skater
+ice-stadium
+iceberg
+icebergs
+iceboat
+icebound
+icebox
+icebreaker
+icecap
+iced
+Iceland
+Icelander
+Icelandic
+iceman
+ices
+iceskating
+ichthyologist
+ichthyology
+icicle
+icily
+iciness
+icing
+icings
+icky
+icon
+iconic
+iconoclasm
+iconoclast
+iconoclastic
+iconography
+icons
+icosahedra
+icosahedral
+icosahedron
+ICSU
+ICSU-CODATA
+ictus
+ICU
+icy
+Ida
+Idaho
+Idahoan
+IDD
+IDDS
+idea
+ideal
+idealism
+idealist
+idealistic
+idealistically
+idealization
+idealizations
+idealize
+idealized
+idealizes
+idealizing
+ideally
+idem
+idempotency
+idempotent
+identical
+identically
+identifiable
+identifiably
+identification
+identifications
+identified
+identifier
+identifiers
+identifies
+identify
+identifying
+identities
+identity
+ideogram
+ideograph
+ideolect
+ideological
+ideologically
+ideologist
+ideologue
+ideology
+ides
+idiocy
+idiom
+idiomatic
+idiomatically
+idiopathic
+idiosyncrasies
+idiosyncrasy
+idiosyncratic
+idiosyncratically
+idiot
+idiotic
+idiotically
+idioticon
+idiotism
+idiots
+idle
+idled
+idleness
+idler
+idlers
+idles
+idlest
+idling
+idly
+IDMS
+idol
+idolater
+idolatress
+idolatrous
+idolatry
+idolization
+idolize
+idols
+idyl
+idyll
+idyllic
+idyllically
+IE
+if
+IFD
+iffiness
+iffy
+IFIP
+IFLA
+IFLA-UBC
+Ifni
+igloo
+igneous
+ignitable
+ignite
+igniter
+ignitible
+ignition
+ignoble
+ignobly
+ignominious
+ignominiously
+ignominy
+ignoramus
+ignorance
+ignorant
+ignorantly
+ignore
+ignored
+ignores
+ignoring
+Igor
+iguana
+IIA
+IIASA
+IISORID
+Ike
+ikon
+IL
+ilea
+ileitis
+ileum
+ilex
+Iliad
+Iliadize
+Iliadizes
+ilium
+ilk
+ill
+ill-advised
+ill-advisedly
+ill-bred
+ill-disposed
+ill-equipped
+ill-fated
+ill-favored
+ill-favoured
+ill-gotten
+ill-humor
+ill-humored
+ill-luck
+ill-mannered
+ill-nature
+ill-natured
+ill-naturedly
+ill-naturedness
+ill-spent
+ill-starred
+ill-structured
+ill-suited
+ill-tempered
+ill-timed
+ill-treat
+ill-treatment
+ill-usage
+ill-use
+ill-will
+illative
+illegal
+illegalities
+illegality
+illegally
+illegibility
+illegible
+illegibly
+illegitimacy
+illegitimate
+illegitimately
+illiberal
+illiberality
+illiberally
+illicit
+illicitly
+illicitness
+illimitable
+Illinois
+Illinoisan
+illiteracy
+illiterate
+illiterately
+illness
+illnesses
+illogical
+illogicality
+illogically
+ills
+illuminable
+illuminate
+illuminated
+illuminates
+illuminating
+illuminatingly
+illumination
+illuminations
+illuminative
+illuminator
+illumine
+illusion
+illusionist
+illusions
+illusive
+illusively
+illusory
+illustrate
+illustrated
+illustrates
+illustrating
+illustration
+illustrations
+illustrative
+illustratively
+illustrator
+illustrators
+illustrious
+illustriously
+illustriousness
+illy
+ILO
+Ilona
+Ilyushin
+image
+Imagen
+imagery
+images
+imaginable
+imaginably
+imaginary
+imagination
+imaginations
+imaginative
+imaginatively
+imagine
+imagined
+imagines
+imaging
+imagining
+imaginings
+imago
+imbalance
+imbalances
+imbecile
+imbecilic
+imbecility
+imbed
+imbibe
+imbiber
+imbrication
+Imbrium
+imbroglio
+imbrue
+imbrute
+imbue
+IMF
+imitable
+imitate
+imitated
+imitates
+imitating
+imitation
+imitations
+imitative
+imitatively
+imitativeness
+imitator
+immaculate
+immaculately
+immaculateness
+immanence
+immanency
+immanent
+immanently
+immaterial
+immateriality
+immaterially
+immaterialness
+immature
+immaturely
+immaturity
+immeasurable
+immeasurably
+immediacies
+immediacy
+immediate
+immediately
+immediateness
+immemorial
+immemorially
+immense
+immensely
+immensity
+immerge
+immerse
+immersed
+immerses
+immersible
+immersion
+immigrant
+immigrants
+immigrate
+immigrated
+immigrates
+immigrating
+immigration
+imminence
+imminent
+imminently
+immiscibility
+Immiserate
+Immiserating
+immobile
+immobility
+immobilization
+immobilize
+immoderate
+immoderately
+immodest
+immodestly
+immodesty
+immolate
+immolation
+immoral
+immorality
+immorally
+immortal
+immortality
+immortalize
+immortally
+immortelle
+immovability
+immovable
+immovably
+immune
+immunities
+immunity
+immunization
+immunize
+immunodeficiency
+immunodeficient
+immunologic
+immunological
+immunologist
+immunology
+immure
+immutability
+immutable
+immutably
+imp
+impact
+impacted
+impacting
+impaction
+impactor
+impactors
+impacts
+impair
+impaired
+impairing
+impairment
+impairs
+impala
+impale
+impalement
+impalpable
+impalpably
+impanel
+impart
+imparted
+impartial
+impartiality
+impartially
+imparts
+impassable
+impassably
+impasse
+impassibility
+impassible
+impassibly
+impassion
+impassioned
+impassive
+impassively
+impassiveness
+impassivity
+impaste
+impasto
+impatience
+impatiens
+impatient
+impatiently
+impawn
+impeach
+impeachable
+impeached
+impeacher
+impeachment
+impeccability
+impeccable
+impeccably
+impecunious
+impecuniously
+impecuniousness
+impedance
+impedances
+impede
+impeded
+impedes
+impediment
+impedimenta
+impediments
+impeding
+impel
+impelled
+impellent
+impeller
+impelling
+impend
+impendence
+impending
+impenetrability
+impenetrable
+impenetrably
+impenitence
+impenitent
+impenitently
+imperative
+imperatively
+imperatives
+imperceivable
+imperceptibility
+imperceptible
+imperceptibly
+imperceptive
+imperfect
+imperfection
+imperfections
+imperfectly
+imperfectness
+imperial
+imperialism
+imperialist
+imperialistic
+imperialistically
+imperialists
+imperially
+imperil
+imperiled
+imperilment
+imperious
+imperiously
+imperiousness
+imperishable
+imperishably
+impermanence
+impermanent
+impermanently
+impermeability
+impermeable
+impermeably
+impermissible
+impersonal
+impersonally
+impersonate
+impersonated
+impersonates
+impersonating
+impersonation
+impersonations
+impersonator
+impertinence
+impertinent
+impertinently
+imperturbability
+imperturbable
+imperturbably
+impervious
+imperviously
+impetigo
+impetuosity
+impetuous
+impetuously
+impetuousness
+impetus
+impetus-wheel
+impiety
+impinge
+impinged
+impingement
+impinges
+impinging
+impious
+impiously
+impiousness
+impish
+impishly
+impishness
+implacability
+implacable
+implacably
+implant
+implantable
+implantation
+implanted
+implanting
+implants
+implausibility
+implausible
+implausibly
+implement
+implementable
+implementation
+implementations
+implemented
+implementer
+implementing
+implementor
+implementors
+implements
+implicant
+implicants
+implicate
+implicated
+implicates
+implicating
+implication
+implications
+implicit
+implicitly
+implicitness
+implied
+implies
+implode
+implore
+implored
+imploring
+imploringly
+implosion
+implosive
+imply
+implying
+impolite
+impolitely
+impoliteness
+impolitic
+imponderable
+import
+importable
+importance
+important
+importantly
+importation
+imported
+importer
+importers
+importing
+imports
+importunate
+importunately
+importune
+importunity
+impose
+imposed
+imposer
+imposes
+imposing
+imposingly
+imposition
+impositions
+impossibilities
+impossibility
+impossible
+impossibly
+impost
+impost-take
+imposter
+impostor
+impostors
+imposture
+impotence
+impotency
+impotent
+impotently
+impound
+impoverish
+impoverished
+impoverishment
+impracticable
+impracticably
+impractical
+impracticality
+impractically
+imprecate
+imprecation
+imprecise
+imprecisely
+impreciseness
+imprecision
+impregnability
+impregnable
+impregnably
+impregnate
+impregnation
+impresario
+impress
+impressed
+impresser
+impresses
+impressibility
+impressible
+impressing
+impression
+impressionability
+impressionable
+impressionism
+impressionist
+impressionistic
+impressions
+impressive
+impressively
+impressiveness
+impressment
+impressum
+imprest
+imprimatur
+imprint
+imprinted
+imprinter
+imprinting
+imprints
+imprison
+imprisoned
+imprisoning
+imprisonment
+imprisonments
+imprisons
+improbability
+improbable
+improbably
+improbity
+improfitable
+impromptu
+improper
+improperly
+impropriate
+impropriety
+improvable
+improve
+improved
+improvement
+improvements
+improver
+improves
+improvidence
+improvident
+improvidently
+improving
+improvisation
+improvisational
+improvisations
+improvise
+improvised
+improviser
+improvisers
+improvises
+improvising
+improvisor
+imprudence
+imprudent
+imprudently
+imps
+impudence
+impudent
+impudently
+impugn
+impugner
+impuissant
+impulse
+impulses
+impulsion
+impulsive
+impulsively
+impulsiveness
+impunity
+impure
+impurely
+impurities
+impurity
+imputable
+imputation
+impute
+imputed
+IMS
+in
+in-basket
+in-between
+in-centre
+in-circle
+in-depth
+in-flight
+in-house
+in-knees
+in-law
+in-laws
+in-patient
+in-processing
+in-road
+in-service
+in-your-face
+inability
+inaccessibility
+inaccessible
+inaccessibly
+inaccuracies
+inaccuracy
+inaccurate
+inaccurately
+inaction
+inactivate
+inactivation
+inactive
+inactively
+inactivity
+inadequacies
+inadequacy
+inadequate
+inadequately
+inadequateness
+inadmissibility
+inadmissible
+inadvertance
+inadvertence
+inadvertent
+inadvertently
+inadvisability
+inadvisable
+inalienability
+inalienable
+inalienably
+inalterable
+inamorata
+inamorato
+inane
+inanely
+inanimate
+inanimately
+inanimateness
+inanity
+Inanna
+inapplicable
+inappreciable
+inappreciably
+inapproachable
+inappropriate
+inappropriately
+inappropriateness
+inapt
+inaptitude
+inaptly
+inaptness
+inarguable
+inarticulate
+inarticulately
+inarticulateness
+inartistic
+inasmuch
+inaspicious
+inattention
+inattentive
+inattentively
+inattentiveness
+inaudibility
+inaudible
+inaudibly
+inaugural
+inaugurate
+inaugurated
+inaugurating
+inauguration
+inauspicious
+inauspiciously
+inauthentic
+inboard
+inborn
+inbound
+inbounds
+inbred
+inbreed
+inbreeding
+Inca
+incalculable
+incalculably
+incandescence
+incandescent
+incandescently
+incantation
+incapability
+incapable
+incapably
+incapacitate
+incapacitating
+incapacity
+incarcerate
+incarceration
+incarnadine
+incarnate
+incarnation
+incarnations
+Incas
+incase
+incaution
+incautious
+incendiaries
+incendiarism
+incendiary
+incense
+incensed
+incenses
+incentive
+incentives
+inception
+inceptive
+incertitude
+incessant
+incessantly
+incest
+incestuous
+incestuously
+incestuousness
+inch
+inched
+inches
+inching
+inchoate
+inchoative
+Inchon
+inchworm
+incidence
+incident
+incidental
+incidentally
+incidentals
+incidents
+incinerate
+incineration
+incinerator
+incipience
+incipient
+incipiently
+incipit
+incise
+incision
+incisive
+incisively
+incisiveness
+incisor
+incitation
+incite
+incited
+incitement
+inciter
+incites
+inciting
+incivility
+inclemency
+inclement
+inclinable
+inclination
+inclinations
+incline
+inclined
+inclines
+inclining
+inclose
+inclosed
+incloses
+inclosing
+inclosure
+include
+included
+includes
+including
+inclusion
+inclusions
+inclusive
+inclusively
+inclusiveness
+incogitant
+incognito
+incoherence
+incoherency
+incoherent
+incoherently
+incombustible
+income
+incomes
+incoming
+incommensurable
+incommensurate
+incommensurately
+incommode
+incommodious
+incommodity
+incommunicable
+incommunicado
+incommutable
+incomparable
+incomparably
+incompatibilities
+incompatibility
+incompatible
+incompatibly
+incompetence
+incompetency
+incompetent
+incompetently
+incompetents
+incomplete
+incompletely
+incompleteness
+incompliant
+incomprehensibility
+incomprehensible
+incomprehensibly
+incomprehension
+incompressible
+incomputable
+inconceivability
+inconceivable
+inconceivably
+inconclusive
+inconclusively
+inconclusiveness
+incongruity
+incongruous
+incongruously
+incongruousness
+inconsequence
+inconsequent
+inconsequential
+inconsequentially
+inconsiderable
+inconsiderate
+inconsiderately
+inconsiderateness
+inconsideration
+inconsistence
+inconsistencies
+inconsistency
+inconsistent
+inconsistently
+inconsolable
+inconsolably
+inconspicuous
+inconspicuously
+inconspicuousness
+inconstancy
+inconstant
+inconstantly
+inconsumable
+incontestability
+incontestable
+incontestably
+incontinence
+incontinent
+incontrovertible
+incontrovertibly
+inconvenience
+inconvenienced
+inconveniences
+inconveniencing
+inconvenient
+inconveniently
+inconvertible
+inconvincible
+incorporate
+incorporated
+incorporates
+incorporating
+incorporation
+incorporeal
+incorrect
+incorrectly
+incorrectness
+incorrigibility
+incorrigible
+incorrigibly
+incorrodible
+incorrupt
+incorruptibility
+incorruptible
+incorruptibly
+incorruption
+increase
+increased
+increases
+increasing
+increasingly
+incredibility
+incredible
+incredibly
+incredulity
+incredulous
+incredulously
+increment
+incremental
+incrementally
+incremented
+incrementer
+incrementing
+increments
+incriminate
+incriminating
+incrimination
+incriminatory
+incrust
+incrustation
+incubate
+incubated
+incubates
+incubating
+incubation
+incubator
+incubators
+incubi
+incubus
+inculcate
+inculcation
+inculpable
+inculpate
+incumbency
+incumbent
+incumber
+incunabula
+incunabulum
+incur
+incurable
+incurably
+incurious
+incurred
+incurring
+incurs
+incursion
+incurvate
+incurvation
+Ind
+indebt
+indebted
+indebtedness
+indecency
+indecent
+indecently
+indecipherable
+indecision
+indecisive
+indecisively
+indecisiveness
+indeclinable
+indecorous
+indecorously
+indeed
+indefatigable
+indefatigably
+indefeasible
+indefeasibly
+indefensible
+indefensibly
+indefinable
+indefinably
+indefinite
+indefinitely
+indefiniteness
+indeliberate
+indelible
+indelibly
+indelicacy
+indelicate
+indelicately
+indemnification
+indemnify
+indemnity
+indemonstrable
+indent
+indentation
+indentations
+indented
+indenting
+indention
+indents
+indenture
+independence
+independent
+independently
+indescribable
+indescribably
+indestructibility
+indestructible
+indestructibly
+indeterminable
+indeterminably
+indeterminacies
+indeterminacy
+indeterminate
+indeterminately
+indeterminateness
+index
+indexable
+indexation
+indexed
+indexer
+indexes
+indexical
+indexing
+India
+Indian
+Indianan
+Indianian
+Indians
+indicate
+indicated
+indicates
+indicating
+indication
+indications
+indicative
+indicatively
+indicator
+indicators
+indices
+indict
+indictable
+indictee
+indictment
+indictments
+Indies
+indifference
+indifferent
+indifferently
+indigence
+indigenous
+indigenously
+indigenousness
+indigent
+indigently
+indigested
+indigestible
+indigestion
+indignant
+indignantly
+indignation
+indignities
+indignity
+indigo
+Indira
+indirect
+indirected
+indirecting
+indirection
+indirections
+indirectly
+indirectness
+indirects
+indiscernible
+indiscreet
+indiscreetly
+indiscretion
+indiscriminate
+indiscriminately
+indiscrimination
+indispensability
+indispensable
+indispensably
+indispose
+indisposed
+indisposition
+indisputable
+indisputably
+indissoluble
+indissolubly
+indistinct
+indistinctly
+indistinctness
+indistinguishable
+indistinguishably
+indite
+indium
+individual
+individualism
+individualist
+individualistic
+individualistically
+individuality
+individualization
+individualize
+individualized
+individualizes
+individualizing
+individually
+individuals
+individuate
+individuation
+indivisibility
+indivisible
+indivisibly
+Indo
+Indo-China
+Indo-European
+Indochina
+Indochinese
+indocile
+indoctrinate
+indoctrinated
+indoctrinates
+indoctrinating
+indoctrination
+Indoeuropean
+indolence
+indolent
+indolently
+indomitable
+indomitably
+Indonesia
+Indonesian
+indoor
+indoors
+Indore
+indorse
+indubitable
+indubitably
+induce
+induced
+inducement
+inducements
+inducer
+induces
+inducing
+induct
+inductance
+inductances
+inducted
+inductee
+inducting
+induction
+inductions
+inductive
+inductively
+inductor
+inductors
+inducts
+indue
+indulge
+indulged
+indulgence
+indulgences
+indulgent
+indulgently
+indulging
+indurate
+Indus
+industrial
+industrial-strength
+industrialism
+industrialist
+industrialists
+industrialization
+industrialize
+industrialized
+industrially
+industrials
+industries
+industrious
+industriously
+industriousness
+industry
+indwell
+Indy
+inebriate
+inebriated
+inebriation
+inebriety
+inedible
+ineducable
+ineffability
+ineffable
+ineffably
+ineffective
+ineffectively
+ineffectiveness
+ineffectual
+ineffectually
+inefficacious
+inefficacy
+inefficiencies
+inefficiency
+inefficient
+inefficiently
+inegalitarian
+inelastic
+inelegance
+inelegant
+inelegantly
+ineligibility
+ineligible
+ineligibly
+ineluctable
+ineluctably
+inept
+ineptitude
+ineptly
+ineptness
+inequalities
+inequality
+inequation
+inequitable
+inequitably
+inequity
+ineradicable
+inerrant
+inert
+inertia
+inertial
+inertly
+inertness
+inescapable
+inescapably
+inessential
+inestimable
+inestimably
+inevitabilities
+inevitability
+inevitable
+inevitably
+inexact
+inexactitude
+inexactly
+inexactness
+inexcusable
+inexcusably
+inexhaustible
+inexhaustibly
+inexorable
+inexorably
+inexpedience
+inexpediency
+inexpedient
+inexpensive
+inexpensively
+inexpensiveness
+inexperience
+inexperienced
+inexpert
+inexpertly
+inexpiable
+inexplicable
+inexplicably
+inexplicit
+inexpressible
+inexpressibles
+inexpressibly
+inexpressive
+inexpugnable
+inextinguishable
+inextirpable
+inextricable
+inextricably
+infallibility
+infallible
+infallibly
+infamous
+infamously
+infamy
+infancy
+infant
+infanticide
+infantile
+infantry
+infantryman
+infantrymen
+infants
+infarct
+infarction
+infatuate
+infatuated
+infatuation
+infeasible
+infect
+infected
+infecting
+infection
+infections
+infectious
+infectiously
+infectiousness
+infective
+infects
+infecund
+infelicitous
+infelicity
+infer
+inference
+inferences
+inferential
+inferior
+inferiority
+inferiors
+infernal
+infernally
+inferno
+infernos
+inferred
+inferring
+infers
+infertile
+infertility
+infest
+infestation
+infested
+infesting
+infests
+infidel
+infidelity
+infidels
+infield
+infielder
+infighter
+infighting
+infiltrate
+infiltration
+infiltrator
+infinite
+infinitely
+infiniteness
+infinitesimal
+infinitesimally
+infinitival
+infinitive
+infinitives
+infinitude
+infinitum
+infinity
+infirm
+infirmary
+infirmity
+infix
+inflame
+inflamed
+inflammability
+inflammable
+inflammation
+inflammatory
+inflatable
+inflate
+inflated
+inflater
+inflates
+inflating
+inflation
+inflationary
+inflect
+inflection
+inflectional
+inflexed
+inflexibility
+inflexible
+inflexibly
+inflexion
+inflexional
+inflict
+inflicted
+inflicting
+infliction
+inflictive
+inflicts
+inflight
+inflorescence
+inflorescent
+inflow
+influence
+influenced
+influences
+influencing
+influential
+influentially
+influenza
+influx
+info
+infold
+infology
+infomercial
+inform
+informal
+informality
+informally
+informant
+informants
+Informatica
+informatics
+information
+informational
+informative
+informatively
+informativeness
+informatization
+informatology
+informatory
+informed
+informedness
+informer
+informers
+informetrics
+informing
+informology
+informs
+informware
+infotainment
+INFOTERM
+infra
+infra-red
+infraction
+infrangible
+infrared
+infrasonic
+infrastructure
+infrequence
+infrequency
+infrequent
+infrequently
+infringe
+infringed
+infringement
+infringements
+infringes
+infringing
+infuriate
+infuriated
+infuriates
+infuriating
+infuriatingly
+infuriation
+infuse
+infused
+infuser
+infuses
+infusing
+infusion
+infusions
+ingathering
+ingenious
+ingeniously
+ingeniousness
+ingenue
+ingenuity
+ingenuous
+ingenuously
+ingenuousness
+Ingersoll
+ingest
+ingestion
+ingle
+ingle-nook
+inglenook
+Inglewood
+inglorious
+ingloriously
+ingoing
+ingot
+ingot-iron
+ingraft
+ingrain
+ingrained
+Ingram
+ingrate
+ingratiate
+ingratiating
+ingratiatingly
+ingratiation
+ingratitude
+ingredient
+ingredients
+ingress
+ingression
+ingrow
+ingrowing
+ingrown
+inguinal
+ingurgitate
+inhabit
+inhabitable
+inhabitance
+inhabitant
+inhabitants
+inhabitation
+inhabited
+inhabiting
+inhabits
+inhalant
+inhalation
+inhalator
+inhale
+inhaled
+inhaler
+inhales
+inhaling
+inharmonic
+inharmonious
+inhere
+inherence
+inherency
+inherent
+inherently
+inheres
+inherit
+inheritable
+inheritance
+inheritances
+inherited
+inheriting
+inheritor
+inheritors
+inheritress
+inheritresses
+inheritrices
+inheritrix
+inherits
+inhibit
+inhibited
+inhibiting
+inhibition
+inhibitions
+inhibitor
+inhibitors
+inhibitory
+inhibits
+inhomogeneities
+inhomogeneity
+inhomogeneous
+inhospitable
+inhospitably
+inhuman
+inhumane
+inhumanely
+inhumanity
+inhumanly
+inhumation
+inhume
+inimical
+inimically
+inimitable
+inimitably
+iniquities
+iniquitous
+iniquitously
+iniquity
+INIS
+init.
+inital
+initial
+initialed
+initialing
+initialism
+initialization
+initializations
+initialize
+initialized
+initializer
+initializers
+initializes
+initializing
+initially
+initials
+initiate
+initiated
+initiates
+initiating
+initiation
+initiations
+initiative
+initiatives
+initiator
+initiators
+initiatory
+inject
+injected
+injecting
+injection
+injections
+injective
+injector
+injects
+injudicious
+injudiciously
+injudiciousness
+Injun
+injunction
+injunctions
+Injuns
+injure
+injured
+injurer
+injures
+injuries
+injuring
+injurious
+injury
+injustice
+injustices
+ink
+ink-bottle
+ink-box
+ink-jerker
+ink-lines
+ink-pot
+ink-slinger
+ink-stand
+inkblot
+inked
+inker
+inkers
+inkiness
+inking
+inkings
+inkle
+inkling
+inklings
+inks
+inks-well
+inkstand
+inkwell
+inky
+inlaid
+inland
+inlander
+inlay
+inlayer
+inlet
+inlets
+inline
+Inman
+inmate
+inmates
+inmost
+inn
+inn-holder
+inn-keeper
+innards
+innate
+innately
+innateness
+innavigable
+inner
+inner-city
+inner-directed
+innermost
+innersole
+innerspring
+innervate
+innervation
+inning
+innings
+innkeeper
+innocence
+innocent
+innocently
+innocents
+innocuous
+innocuously
+innocuousness
+innovate
+innovation
+innovations
+innovative
+innovator
+innoxious
+inns
+Innsbruck
+innuendo
+innumerability
+innumerable
+innumerably
+innumeracy
+innumerate
+innumerous
+innutritious
+inoculate
+inoculation
+inodorous
+inoffensive
+inoffensively
+inoffensiveness
+inoperable
+inoperative
+inopportune
+inopportunely
+inordinate
+inordinately
+inorganic
+inorganically
+inosculate
+INPADOC
+inpatient
+input
+input-output
+inputs
+inquest
+inquiet
+inquietude
+inquire
+inquired
+inquirer
+inquirers
+inquires
+inquiries
+inquiring
+inquiringly
+inquiry
+inquiry-response
+inquisition
+inquisitional
+inquisitions
+inquisitive
+inquisitively
+inquisitiveness
+inquisitor
+inquisitorial
+INRI
+inroad
+inroads
+inrush
+INS
+insalubrious
+insane
+insanely
+insanitary
+insanity
+insatiability
+insatiable
+insatiably
+insatiate
+inscribe
+inscribed
+inscriber
+inscribes
+inscribing
+inscription
+inscriptions
+inscrutability
+inscrutable
+inscrutableness
+inscrutably
+inseam
+insect
+insect-eater
+insecticidal
+insecticide
+insectivore
+insectivorous
+insects
+insecure
+insecurely
+insecurity
+inseminate
+insemination
+insensate
+insensibility
+insensible
+insensibly
+insensitive
+insensitively
+insensitivity
+insentience
+insentient
+inseparability
+inseparable
+inseparably
+insert
+inserted
+inserting
+insertion
+insertions
+insertor
+inserts
+inset
+insetting
+inshore
+inside
+insider
+insiders
+insides
+insidious
+insidiously
+insidiousness
+insight
+insightful
+insights
+insigne
+insignia
+insignificance
+insignificancy
+insignificant
+insignificantly
+insincere
+insincerely
+insincerity
+insinuate
+insinuated
+insinuates
+insinuating
+insinuation
+insinuations
+insinuative
+insinuator
+insipid
+insipidity
+insipidly
+insist
+insisted
+insistence
+insistent
+insistently
+insisting
+insistingly
+insists
+insobriety
+insofar
+insolate
+insolation
+insole
+insolence
+insolent
+insolently
+insolubility
+insoluble
+insolubly
+insolvable
+insolvency
+insolvent
+insomnia
+insomniac
+insomuch
+insouciance
+insouciant
+INSPEC
+inspect
+inspected
+inspecting
+inspection
+inspections
+inspector
+inspectorate
+inspectors
+inspects
+inspiration
+inspirational
+inspirations
+inspire
+inspired
+inspirer
+inspires
+inspiring
+inspirit
+inspissate
+inspissation
+insquality
+inst.
+instabilities
+instability
+instable
+instal
+install
+installation
+installations
+installed
+installer
+installers
+installing
+installment
+installments
+installs
+instalment
+instance
+instances
+instant
+instantanenous
+instantaneous
+instantaneously
+instanter
+instantiate
+instantiated
+instantiates
+instantiating
+instantiation
+instantiations
+instantly
+instants
+instate
+instead
+instep
+instigate
+instigated
+instigates
+instigating
+instigation
+instigator
+instigators
+instil
+instill
+instillation
+instinct
+instinctive
+instinctively
+instincts
+instinctual
+institute
+instituted
+instituter
+instituters
+institutes
+instituting
+institution
+institutional
+institutionalization
+institutionalize
+institutionalized
+institutionalizes
+institutionalizing
+institutionally
+institutions
+institutor
+instruct
+instructed
+instructing
+instruction
+instructional
+instructions
+instructive
+instructively
+instructor
+instructors
+instructs
+instrument
+instrumental
+instrumentalist
+instrumentalists
+instrumentality
+instrumentally
+instrumentals
+instrumentation
+instrumented
+instrumenting
+instruments
+insubordinate
+insubordination
+insubstantial
+insubstantially
+insufferable
+insufferably
+insufficiency
+insufficient
+insufficiently
+insular
+insularity
+insulate
+insulated
+insulates
+insulating
+insulation
+insulator
+insulators
+insulin
+insult
+insulted
+insulting
+insultingly
+insults
+insuperable
+insuperably
+insupportable
+insurable
+insurance
+insure
+insured
+insurer
+insurers
+insures
+insurgence
+insurgency
+insurgent
+insurgents
+insuring
+insurmount
+insurmountable
+insurmountably
+insurrection
+insurrectionist
+insurrections
+insusceptible
+intact
+intaglio
+intake
+INTAMEL
+intangibility
+intangible
+intangibles
+intangibly
+integer
+integers
+integrable
+integral
+integrally
+integrals
+integrand
+integrate
+integrated
+integrates
+integrating
+integration
+integrations
+integrative
+integrity
+integument
+Intel
+inteligently
+intellect
+intellection
+intellects
+intellectual
+intellectualism
+intellectualize
+intellectually
+intellectuals
+intellelectronics
+intelligence
+intelligencer
+intelligent
+intelligently
+intelligentsia
+intelligibility
+intelligible
+intelligibly
+Intelsat
+intemperance
+intemperate
+intemperately
+intend
+intendant
+intended
+intending
+intends
+intense
+intensely
+intensification
+intensified
+intensifier
+intensifiers
+intensifies
+intensify
+intensifying
+intension
+intensities
+intensity
+intensive
+intensively
+intensiveness
+intent
+intention
+intentional
+intentionally
+intentioned
+intentions
+intently
+intentness
+intents
+inter
+interact
+interacted
+interacting
+interaction
+interactions
+interactive
+interactively
+interactivity
+interacts
+interbred
+interbreed
+intercabling
+intercalate
+intercalation
+intercalator
+intercede
+intercept
+intercepted
+intercepting
+interception
+interceptor
+intercepts
+intercession
+intercessor
+intercessory
+interchange
+interchangeability
+interchangeable
+interchangeably
+interchanged
+interchanger
+interchanges
+interchanging
+interchangings
+interchannel
+intercity
+intercollegiate
+intercom
+intercommon
+intercommunicate
+intercommunicated
+intercommunicates
+intercommunicating
+intercommunication
+intercommunity
+interconnect
+interconnected
+interconnecting
+interconnection
+interconnections
+interconnector
+interconnects
+intercontinental
+interconversion
+intercostal
+intercourse
+intercurrent
+Interdata
+interdenominational
+interdepartmental
+interdependence
+interdependencies
+interdependency
+interdependent
+interdependently
+interdict
+interdiction
+interdisciplinary
+interest
+interested
+interesting
+interestingly
+interests
+interface
+interfaced
+interfacer
+interfaces
+interfacing
+interfaith
+interfere
+interfered
+interference
+interferences
+interferes
+interfering
+interferingly
+interferometer
+interferometric
+interferometry
+interferon
+interfile
+interfluent
+interframe
+interfuse
+intergalactic
+intergroup
+interim
+interior
+interiors
+interject
+interjection
+interlace
+interlaced
+interlaces
+interlacing
+interlanguage
+interlard
+interleaf
+interleave
+interleaved
+interleaves
+interleaving
+interlending
+interleukin
+interline
+interlinear
+interlining
+interlink
+interlinked
+interlinks
+interlisp
+interlock
+interlocking
+interlocuter
+interlocution
+interlocutor
+interlocutory
+interlope
+interloper
+interlude
+intermarriage
+intermarry
+intermeddle
+intermediary
+intermediate
+intermediately
+intermediates
+interment
+intermezzo
+interminable
+interminably
+intermingle
+intermingled
+intermingles
+intermingling
+intermission
+intermit
+intermittent
+intermittently
+intermix
+intermixed
+intermixture
+intermodule
+intern
+internal
+internalization
+internalize
+internalized
+internalizes
+internalizing
+internally
+internals
+international
+internationalise
+internationalism
+internationalist
+internationality
+internationalize
+internationally
+interne
+internecine
+interned
+internee
+internetting
+internetwork
+interning
+internist
+internment
+interns
+internship
+interoffice
+interoperability
+interpellate
+interpellation
+interpenetrate
+interpersonal
+interplanetary
+interplay
+Interpol
+interpolate
+interpolated
+interpolates
+interpolating
+interpolation
+interpolations
+interpose
+interposed
+interposes
+interposing
+interposition
+interpret
+interpretable
+interpretation
+interpretations
+interpretative
+interpreted
+interpreter
+interpreters
+interpreting
+interpretive
+interpretively
+interpretress
+interprets
+interprocess
+interracial
+interregna
+interregnum
+interrelate
+interrelated
+interrelates
+interrelating
+interrelation
+interrelations
+interrelationship
+interrelationships
+interrogate
+interrogated
+interrogates
+interrogating
+interrogation
+interrogations
+interrogative
+interrogatively
+interrogator
+interrogatory
+interrupt
+interrupted
+interrupter
+interruptible
+interrupting
+interruption
+interruptions
+interruptive
+interrupts
+interscholastic
+intersect
+intersected
+intersecting
+intersection
+intersections
+intersects
+intersession
+intership
+interspace
+intersperse
+interspersed
+intersperses
+interspersing
+interspersion
+interstage
+interstate
+interstellar
+interstice
+interstitial
+intertexture
+intertwine
+intertwined
+intertwines
+intertwining
+intertwist
+interurban
+interval
+intervals
+intervene
+intervened
+intervenes
+intervening
+intervention
+interventionism
+interventionist
+interventions
+interview
+interviewed
+interviewee
+interviewer
+interviewers
+interviewing
+interviews
+intervocalic
+interweave
+interworking
+interwove
+interwoven
+interzonal
+intestacy
+intestate
+intestinal
+intestine
+intestines
+inthrall
+inthrone
+intimacy
+intimate
+intimated
+intimately
+intimating
+intimation
+intimations
+intimidate
+intimidated
+intimidates
+intimidating
+intimidatingly
+intimidation
+intitle
+into
+intolerable
+intolerably
+intolerance
+intolerant
+intolerantly
+intomb
+intonate
+intonation
+intonations
+intone
+intoner
+intoxicant
+intoxicate
+intoxicated
+intoxicating
+intoxication
+intra-
+intractability
+intractable
+intractably
+intragroup
+intraline
+intramural
+intramuscular
+intransigence
+intransigent
+intransigently
+intransitive
+intransitively
+intransivity
+intraoffice
+intraprocess
+intrastate
+intrauterine
+intravenous
+intravenously
+intreat
+intrench
+intrepid
+intrepidity
+intrepidly
+intricacies
+intricacy
+intricate
+intricately
+intrigue
+intrigued
+intriguer
+intrigues
+intriguing
+intriguingly
+intrinsic
+intrinsically
+intro
+introduce
+introduced
+introduces
+introducing
+introduction
+introductions
+introductory
+introit
+intromit
+introspect
+introspection
+introspections
+introspective
+introspectively
+introversion
+introvert
+introverted
+intrude
+intruded
+intruder
+intruders
+intrudes
+intruding
+intrusion
+intrusions
+intrusive
+intrusively
+intrusiveness
+intrust
+intubate
+intubated
+intubates
+intubation
+intuit
+intuition
+intuitionist
+intuitions
+intuitive
+intuitively
+intuitiveness
+intumescence
+intwine
+intwist
+Inuit
+inundate
+inundation
+inure
+inutility
+invade
+invaded
+invader
+invaders
+invades
+invading
+invalid
+invalidate
+invalidated
+invalidates
+invalidating
+invalidation
+invalidations
+invalidism
+invalidities
+invalidity
+invalidly
+invalids
+invaluable
+invaluably
+invar
+invariability
+invariable
+invariably
+invariance
+invariant
+invariantly
+invariants
+invasion
+invasions
+invasive
+invective
+inveigh
+inveigle
+inveigler
+invent
+invented
+inventing
+invention
+inventions
+inventive
+inventively
+inventiveness
+inventor
+inventories
+inventors
+inventory
+invents
+Inverness
+inverse
+inversely
+inverses
+inversion
+inversions
+invert
+invertebrate
+invertebrates
+inverted
+inverter
+inverters
+invertible
+inverting
+inverts
+invest
+invested
+investigate
+investigated
+investigates
+investigating
+investigation
+investigations
+investigative
+investigator
+investigators
+investigatory
+investing
+investiture
+investment
+investments
+investor
+investors
+invests
+inveteracy
+inveterate
+invidious
+invidiously
+invidiousness
+invigorate
+invigorated
+invigorating
+invigoratingly
+invigoration
+invincibility
+invincible
+invincibly
+inviolability
+inviolable
+inviolably
+inviolate
+invisibility
+invisible
+invisibly
+invitation
+invitational
+invitations
+invite
+invited
+invitee
+invites
+inviting
+invitingly
+invocable
+invocate
+invocation
+invocations
+invoice
+invoiced
+invoices
+invoicing
+invoke
+invoked
+invoker
+invokes
+invoking
+involuntarily
+involuntariness
+involuntary
+involution
+involve
+involved
+involvement
+involvements
+involves
+involving
+invulnerability
+invulnerable
+invulnerably
+inward
+inwardly
+inwardness
+inwards
+inweave
+inwrap
+inwrought
+Io
+iodate
+iodide
+iodine
+iodize
+iodoform
+ion
+Ionesco
+Ionian
+Ionians
+Ionic
+Ionicization
+Ionicizations
+Ionicize
+Ionicizes
+ionization
+ionize
+ionizer
+ionosphere
+ionospheric
+ions
+iota
+IOU
+Iowa
+Iowan
+IPA
+IPC
+ipecac
+Ipswich
+IQ
+Ir
+Irak
+Iran
+Iranian
+Iranians
+Iranize
+Iranizes
+Iraq
+Iraqi
+Iraqis
+irascibility
+irascible
+irascibly
+irate
+irately
+irateness
+IRC
+ire
+ireful
+Ireland
+Irene
+irenic
+ires
+irides
+iridescence
+iridescent
+iridescently
+iridium
+iris
+Irish
+Irishize
+Irishizes
+Irishman
+Irishmen
+Irishwoman
+irk
+irked
+irking
+irks
+irksome
+irksomely
+irksomeness
+Irkutsk
+IRM
+Irma
+iron
+iron-bound
+iron-clad
+iron-foundry
+iron-glance
+iron-mill
+iron-stone
+iron-witted
+iron-works
+ironclad
+ironed
+ironic
+ironical
+ironically
+ironies
+ironing
+ironings
+ironmonger
+ironmonger's
+ironmongery
+irons
+ironstone
+ironware
+ironwood
+ironwork
+irony
+Iroquoian
+Iroquois
+irradiate
+irradiation
+irrational
+irrationality
+irrationally
+irrationals
+Irrawaddy
+irreclaimable
+irreconcilability
+irreconcilable
+irreconcilably
+irrecoverable
+irrecoverably
+irredeemable
+irredeemably
+irreducible
+irreducibly
+irreflexive
+irrefragable
+irrefutable
+irrefutably
+irregardless
+irregular
+irregularities
+irregularity
+irregularly
+irregulars
+irrelevance
+irrelevances
+irrelevancy
+irrelevant
+irrelevantly
+irreligion
+irreligious
+irremediable
+irremediably
+irremissible
+irremovable
+irreparable
+irreparably
+irrepealable
+irreplaceable
+irrepressible
+irrepressibly
+irreproachable
+irreproachably
+irreproducibility
+irreproducible
+irresistible
+irresistibly
+irresolute
+irresolutely
+irresoluteness
+irresolution
+irrespective
+irrespectively
+irresponsibility
+irresponsible
+irresponsibly
+irretrievable
+irretrievably
+irreverence
+irreverent
+irreverently
+irreversibility
+irreversible
+irreversibly
+irrevocable
+irrevocably
+irrigable
+irrigate
+irrigated
+irrigates
+irrigating
+irrigation
+irritability
+irritable
+irritably
+irritant
+irritate
+irritated
+irritates
+irritating
+irritatingly
+irritation
+irritations
+irrupt
+irruption
+irruptive
+IRS
+Irvin
+Irvine
+Irving
+Irwin
+is
+ISA
+Isaacs
+Isaacson
+Isabel
+Isabella
+Isadore
+isagogycs
+Isaiah
+ISAM
+ISBD
+ISBD/A
+ISBD/G
+ISBD/M
+ISBD/NBM
+ISBD/S
+ISBN
+ISDN
+ISDS
+ISDS-IC
+Isfahan
+Ishtar
+ISI
+Ising
+isinglass
+Isis
+Islam
+Islamabad
+Islamic
+Islamization
+Islamizations
+Islamize
+Islamizes
+island
+islander
+islanders
+Islandia
+islands
+isle
+isles
+islet
+islets
+ism
+isn't
+ISO
+isobar
+isobaric
+isolate
+isolated
+isolates
+isolating
+isolation
+isolationism
+isolationist
+isolations
+Isolde
+isomer
+isomeric
+isomerism
+isometric
+isometrically
+isometrics
+isomorphic
+isomorphically
+isomorphism
+isomorphisms
+isosceles
+isotherm
+isotope
+isotopes
+isotopic
+Ispahan
+Israel
+Israeli
+Israelis
+Israelite
+Israelites
+Israelitize
+Israelitizes
+ISSN
+issuance
+issue
+issued
+issuer
+issuers
+issues
+issuing
+Istanbul
+isthmi
+isthmian
+isthmus
+Istvan
+it
+it'd
+it'll
+it's
+Italian
+Italianate
+Italianization
+Italianizations
+Italianize
+Italianizer
+Italianizers
+Italianizes
+Italians
+italic
+italicization
+italicize
+italicized
+italics
+Italy
+ITC
+itch
+itches
+itchiness
+itching
+itchy
+Itel
+item
+itemization
+itemizations
+itemize
+itemized
+itemizes
+itemizing
+items
+iterate
+iterated
+iterates
+iterating
+iteration
+iterations
+iterative
+iteratively
+iterator
+iterators
+Ithaca
+Ithacan
+itineracy
+itinerant
+itineraries
+itinerary
+Ito
+its
+itself
+itsy-bitsy
+itty-bitty
+ITU
+IUD
+Ivan
+Ivanhoe
+Iverson
+Ives
+ivied
+ivies
+ivories
+ivory
+ivy
+Izaak
+Izhevsk
+Izmir
+Izvestia
+jab
+jabbed
+jabber
+jabberer
+jabbing
+jabot
+jabs
+jacaranda
+jack
+jack-a-dandy
+jack-a-napes
+jack-at-a-pinch
+jack-boot
+jack-daw
+jack-in-office
+jack-in-the-box
+jack-in-the-pulpit
+jack-knife
+jack-o'-lantern
+jack-o-lantern
+jack-of-all-trades
+jack-out-of-office
+jack-plane
+jack-slave
+jack-tar
+jack-towel
+jackal
+jackass
+jackboot
+jackdaw
+jacket
+jacketed
+jacketing
+jackets
+jackhammer
+Jackie
+jacking
+jackknife
+jackknives
+Jackman
+jackpot
+jackrabbit
+jacks
+jacks-of-all-trades
+Jackson
+Jacksonian
+Jacksons
+Jacksonville
+jackstraw
+Jacky
+Jacob
+Jacobean
+Jacobi
+Jacobian
+Jacobinize
+Jacobite
+Jacobs
+Jacobsen
+Jacobson
+Jacobus
+Jacoby
+Jacqueline
+Jacques
+jaculate
+Jacuzzi
+jade
+jaded
+jadedly
+jadedness
+jadeite
+jadish
+Jaeger
+jag
+jagged
+jaggedly
+jaggedness
+jaguar
+jail
+jail-bird
+jailbird
+jailbreak
+jailed
+jailer
+jailers
+jailing
+jailor
+jails
+Jaime
+Jaipur
+Jakarta
+Jake
+Jakes
+jalapeno
+jalopy
+jalousie
+jam
+jam-pack
+jam-packed
+Jamaica
+Jamaican
+jamb
+jambalaya
+jamboree
+James
+Jameson
+Jamestown
+jammed
+jamming
+jams
+Jan
+Jane
+Janeiro
+Janesville
+Janet
+jangle
+jangler
+Janice
+Janis
+janitor
+janitorial
+janitors
+Janos
+Jansen
+Jansenist
+Januaries
+January
+Janus
+japan
+Japanese
+Japanization
+Japanizations
+Japanize
+Japanized
+Japanizes
+Japanizing
+jape
+jar
+jardiniere
+jarful
+jargon
+jarred
+jarring
+jarringly
+jars
+Jarvin
+jasey
+jasmine
+Jason
+jasper
+Jastrow
+jato
+jaundice
+jaundiced
+jaunt
+jauntily
+jauntiness
+jaunts
+jaunty
+Java
+Javanese
+javelin
+javelins
+jaw
+jaw-bone
+jaw-breaker
+jawbone
+jawbreaker
+jawed
+jaws
+jay
+jay-walker
+jaybird
+Jaycee
+Jaycees
+jaywalk
+jaywalker
+jaywalking
+jazz
+jazzband
+jazzy
+JCS
+JD
+jealous
+jealousies
+jealously
+jealousness
+jealousy
+jean
+Jeanne
+Jeannie
+jeans
+Jed
+jeep
+jeeps
+jeer
+jeering
+jeeringly
+jeers
+jeez
+Jeff
+Jefferson
+Jeffersonian
+Jeffersonians
+Jeffrey
+jehad
+Jehovah
+jejune
+jejunum
+jell
+Jell-O
+jellied
+jellies
+jelly
+jelly-fish
+jellybean
+jellyfish
+jellylike
+jellyroll
+jemmy
+Jenkins
+jennet
+Jennie
+Jennifer
+Jennings
+jenny
+Jensen
+jeopard
+jeopardize
+jeopardized
+jeopardizes
+jeopardizing
+jeopardy
+jeremiad
+Jeremiah
+Jeremy
+Jeres
+Jericho
+jerk
+jerk-town
+jerked
+jerkily
+jerkin
+jerkiness
+jerking
+jerkings
+jerks
+jerkwater
+jerky
+Jeroboam
+Jerome
+Jerry
+jerry-built
+jerrybuilt
+jersey
+jerseys
+Jerusalem
+jessamine
+Jesse
+Jessica
+Jessie
+Jessy
+jest
+jested
+jester
+jesting
+jestingly
+jests
+Jesuit
+Jesuitical
+Jesuitism
+Jesuitize
+Jesuitized
+Jesuitizes
+Jesuitizing
+Jesuits
+Jesus
+jet
+jet-black
+jet-lagged
+jet-propelled
+jet-setter
+jetliner
+jetport
+jets
+jetsam
+jetted
+jetting
+jettison
+jetty
+Jew
+jewel
+jeweled
+Jewell
+jeweller
+jeweller's
+jewellery
+jewellers
+jewelries
+jewelry
+jewels
+Jewess
+Jewett
+Jewish
+Jewishness
+Jewry
+Jews
+jezdec
+Jezebel
+jib
+jib-door
+jibe
+Jidda
+jiff
+jiffy
+jig
+jigger
+jiggle
+jiggly
+jignle
+jigs
+jihad
+jild
+Jilin
+Jill
+jilt
+Jim
+Jim-Crow
+jim-dandy
+Jimenez
+Jimmie
+jimmy
+jimsonweed
+Jinan
+jinga-ring
+jingle
+jingled
+jingling
+jingly
+jingo
+jingoism
+jingoist
+jingoistic
+jinn
+jinni
+Jinny
+jinricksha
+jinrikisha
+jinriksha
+jinx
+jinxed
+jitney
+jitter
+jitterbug
+jitterbugger
+jitters
+jittery
+jiu-jitsu
+jiujitsu
+jive
+JMMS
+JND
+jo
+Joan
+Joanna
+Joanne
+Joaquin
+job
+job-hopping
+job-printing
+job-share
+job-sharing
+job-switching
+job-work
+jobber
+jobbery
+jobholder
+jobless
+joblessness
+Jobrel
+jobs
+jock
+jockey
+jockstrap
+jocose
+jocosely
+jocoseness
+jocosity
+jocular
+jocularity
+jocularly
+jocund
+jocundity
+jocundly
+jodhpurs
+Jody
+joe
+Joel
+Joes
+jog
+jog-trot
+jogger
+jogging
+joggle
+joggling
+jogs
+Johann
+Johanna
+Johannes
+Johannesburg
+Johansen
+Johanson
+John
+Johnnie
+Johnny
+Johnny-on-the-spot
+johnnycake
+Johns
+Johnsen
+Johnson
+Johnston
+Johnstown
+Johny
+Johny-come-late
+join
+joinder
+joined
+joiner
+joiners
+joinery
+joining
+joins
+joint
+joint-heir
+jointed
+jointing
+jointly
+joints
+jointure
+joist
+joke
+joked
+joker
+jokers
+jokes
+jokey
+joking
+jokingly
+joky
+Joliet
+Jolla
+jollification
+jollify
+jollily
+jolliness
+jollity
+jolly
+jolt
+jolted
+jolter
+jolterhead
+jolting
+jolts
+Jon
+Jonah
+Jonas
+Jonathan
+Jonathanization
+Jonathanizations
+Jones
+Joneses
+jonquil
+Jonson
+Joplin
+Jordan
+Jordanian
+Jorge
+Jorgensen
+Jorgenson
+Jose
+Josef
+Joseph
+Josephine
+Josephson
+Josephus
+josh
+josher
+Joshua
+Josiah
+jostle
+jostled
+jostles
+jostling
+jot
+jots
+jotted
+jotter
+jotting
+joule
+jounce
+jouncy
+journal
+journalese
+journaling
+journalism
+journalist
+journalistic
+journalists
+journalize
+journalized
+journalizes
+journalizing
+journey
+journeyed
+journeyer
+journeying
+journeyings
+journeyman
+journeymen
+journeys
+joust
+jousted
+jouster
+jousting
+jousts
+Jovanovich
+Jove
+jovial
+joviality
+jovially
+Jovian
+jowl
+jowls
+jowly
+joy
+joy-ride
+joy-rider
+joyance
+Joyce
+joyful
+joyfully
+joyfulness
+joyless
+joylessly
+joylessness
+joyous
+joyously
+joyousness
+joyridden
+joyride
+joyrider
+joyriding
+joyrode
+joys
+joystick
+JP
+Juan
+Juanita
+Juarez
+Jubal
+jubilant
+jubilantly
+jubilate
+jubilation
+jubilee
+Judah
+Judaic
+Judaica
+Judaical
+Judaism
+Judas
+Judd
+Judder
+Juddered
+Juddering
+Judders
+Jude
+Judea
+judge
+judged
+judgement
+judges
+judgeship
+judging
+judgment
+judgmental
+judgmentally
+judgments
+judicative
+judicatory
+judicature
+judicial
+judicially
+judiciary
+judicious
+judiciously
+judiciousness
+Judith
+judo
+Judson
+Judy
+jug
+jug-bitten
+jugful
+juggernaut
+juggle
+juggler
+jugglers
+jugglery
+juggles
+juggling
+Jugoslavia
+jugs
+jugular
+jugulate
+juice
+juiced
+juicer
+juices
+juiciest
+juicily
+juiciness
+juicy
+jujitsu
+jujube
+jujutsu
+juke-box
+jukebox
+Jukes
+Jul
+julep
+Jules
+Julia
+Julian
+Julie
+julienne
+Julies
+Juliet
+Julio
+Julius
+July
+jumble
+jumbled
+jumbles
+jumblesale
+jumbo
+jump
+jump-start
+jumped
+jumper
+jumpers
+jumpily
+jumpiness
+jumping
+jumps
+jumpsuit
+jumpy
+Jun
+junco
+junction
+junctions
+juncture
+junctures
+June
+Juneau
+Junes
+Jung
+Jungian
+jungle
+jungles
+junior
+juniors
+juniper
+juniper-berry
+junk
+junkers
+junket
+junketeer
+junketer
+junkie
+junks
+junky
+junkyard
+Juno
+junta
+Jupiter
+Jura
+Juras
+Jurassic
+jure
+juridic
+juridical
+juridically
+juries
+jurisconsult
+jurisdiction
+jurisdictional
+jurisdictions
+jurisprudence
+jurist
+juristic
+juror
+jurors
+jury
+jury-rig
+jury-rigged
+juryman
+jurywoman
+just
+justice
+justices
+justiciary
+justifiable
+justifiably
+justification
+justifications
+justified
+justifier
+justifiers
+justifies
+justify
+justifying
+Justine
+Justinian
+justly
+justness
+jut
+jute
+Jutish
+Jutland
+jutting
+juvenile
+juveniles
+juvenilia
+juvenility
+juxtapose
+juxtaposed
+juxtaposes
+juxtaposing
+juxtaposition
+JV
+K
+K.O.
+kabob
+Kabul
+kaffeeklatch
+kaffeeklatsch
+Kafka
+Kafkaesque
+kaftan
+kahlua
+Kahn
+kail
+Kajar
+Kalahari
+Kalamazoo
+kale
+kaleidoscope
+kaleidoscopic
+kaleidoscopically
+Kali
+Kalmuk
+Kamchatka
+Kamikazes
+Kampala
+Kampuchea
+Kanarese
+Kandinsky
+Kane
+kangaroo
+kanji
+Kankakee
+Kannada
+Kano
+Kanpur
+Kans
+Kansan
+Kansas
+Kant
+Kantian
+Kaohsiung
+kaolin
+Kaplan
+kapok
+kappa
+kaput
+Karachi
+Karaganda
+karakul
+Karamazov
+karaoke
+karat
+karate
+Karen
+Karl
+karma
+karmic
+Karol
+Karp
+kart
+Kashmir
+Kaskaskia
+Kate
+Katharine
+Katherine
+Kathleen
+Kathmandu
+Kathy
+Katie
+Katmandu
+Katowice
+katydid
+Katz
+Kauai
+Kauffman
+Kaufman
+Kawasaki
+Kay
+kayak
+kayo
+Kazakhstan
+Kazan
+kazoo
+kB
+KC
+KDS
+KDT
+Keaton
+Keats
+kebab
+kebob
+keck
+kedge
+Keegan
+keel
+keeled
+keelhaul
+keeling
+keels
+keelson
+keen
+keen-set
+Keenan
+keener
+keenest
+keenly
+keenness
+keep
+keep-sake
+keeper
+keepers
+keeping
+keeping-room
+keeps
+keepsake
+keg
+Keith
+Keller
+Kelley
+Kellogg
+kelly
+kelp
+Kelsey
+Kelt
+Kemerovo
+Kemp
+ken
+Kendall
+Kenilworth
+Kennan
+Kennecott
+Kennedy
+kennel
+kennels
+Kenneth
+Kenney
+Kenning
+Kenny
+Kenosha
+Kensington
+Kent
+Kenton
+Kentuckian
+Kentucky
+Kenya
+Kenyan
+Kenyon
+kepi
+Kepler
+kept
+keratin
+kerb
+kerb-stone
+kerchief
+kerchiefs
+kerchieves
+kerf
+Kermit
+kern
+kernel
+kernels
+Kernighan
+kerosene
+kerosine
+Kerouac
+Kerr
+Kessler
+kestrel
+ketch
+ketchup
+Kettering
+kettle
+kettle-drum
+kettle-drums
+kettle-maker
+kettledrum
+kettles
+Kevin
+Kewaskum
+Kewaunee
+key
+key-board
+key-entry
+key-hole
+key-industry
+key-note
+key-stone
+keyblock
+keyboard
+keyboarder
+keyboardist
+keyboards
+keyed
+Keyes
+keyhole
+keying
+keylever
+Keynes
+Keynesian
+keynote
+keynoter
+keypad
+keypads
+keypoint
+keypunch
+keypuncher
+keys
+keyset
+keystation
+keystone
+keystoning
+keystroke
+keystrokes
+keyswitch
+keyway
+keyword
+keywords
+Khabarovsk
+khaki
+khakis
+khan
+Kharkov
+Khartoum
+Khmer
+Khrushchev
+Khrushchevs
+Khufu
+kHz
+KIA
+kibble
+kibbutz
+kibbutzim
+kibe
+kibitz
+kibitzer
+kibosh
+kick
+kick-off
+kick-start
+Kickapoo
+kickback
+kickball
+kicked
+kicker
+kickers
+kicking
+kickoff
+kicks
+kickstand
+kicky
+kid
+Kidd
+Kidde
+kidded
+kidder
+kiddie
+kidding
+kiddish
+kiddo
+kiddy
+kidnap
+kidnaper
+kidnapper
+kidnappers
+kidnapping
+kidnappings
+kidnaps
+kidney
+kidneys
+kids
+kidskin
+Kieffer
+Kiel
+kielbasa
+kielbasi
+kielbasy
+Kierkegaard
+Kiev
+Kiewit
+Kigali
+Kikuyu
+Kilauea
+Kilgore
+Kilimanjaro
+kill
+kill-joy
+killdeer
+Killebrew
+killed
+killer
+killers
+killing
+killingly
+killings
+killjoy
+kills
+kiln
+kilndry
+kilo
+kilo-man-hour
+kilobit
+kilobits
+kiloblock
+kilobyte
+kilobytes
+kilocycle
+kilogram
+kilograms
+kilohertz
+kilohm
+kilojoule
+kiloliter
+kilometer
+kilometers
+kilometre
+kiloton
+kilovolt
+kilowatt
+kilowatt-hour
+kiloword
+kilt
+kilter
+Kim
+Kimball
+Kimberly
+kimono
+kin
+kind
+kind-hearted
+kind-heartedly
+kind-heartedness
+kinder
+kindergarten
+kindergartener
+kindergartner
+kindest
+kindhearted
+kindheartedly
+kindheartedness
+kindle
+kindled
+kindles
+kindless
+kindliness
+kindling
+kindly
+kindness
+kindred
+kinds
+kine
+kinematic
+kinematics
+kinetic
+kinetically
+kinetics
+kinfolk
+kinfolks
+king
+king-cup
+king-fisher
+king-size
+king-sized
+kingdom
+kingdom-come
+kingfisher
+kingly
+kingpin
+kings
+Kingsbury
+kingship
+Kingsley
+Kingston
+Kingstown
+Kingwood
+kink
+kinkily
+kinkiness
+kinky
+Kinney
+Kinnickinnic
+Kinsey
+kinsfolk
+Kinshasa
+Kinshasha
+kinship
+kinsman
+kinswoman
+kiosk
+Kiowa
+kip
+Kipling
+kipper
+kippered
+Kirby
+Kirchner
+Kirchoff
+Kirghizia
+Kiribati
+kirk
+Kirkland
+Kirkpatrick
+Kirkwood
+Kirov
+kirsch
+Kishinev
+kismet
+kiss
+kiss-and-tell
+kissable
+kissed
+kisser
+kissers
+kisses
+kissing
+Kissinger
+kissproof
+kit
+Kitakyushu
+kitbag
+kitchen
+kitchen-garden
+kitchen-maid
+kitchen-range
+Kitchener
+kitchenette
+kitchens
+kitchenware
+kite
+kited
+kites
+kith
+kiting
+kits
+kitsch
+kitschy
+kitten
+kittenish
+kittens
+kittle
+kitty
+kitty-corner
+kitty-cornered
+Kiwanis
+kiwi
+kiwifruit
+KKK
+Klan
+Klaus
+klaxon
+Klee
+Kleenex
+Klein
+Kleinrock
+kleptomania
+kleptomaniac
+Kline
+Klondike
+kludge
+kludges
+klunk
+klutz
+klutziness
+klutzy
+Klux
+klystron
+knack
+knacker
+knackwurst
+knag
+knagy
+knap
+Knapp
+knapsack
+knapsacks
+knar
+Knauer
+knave
+knavery
+knaves
+knavish
+knavishly
+knead
+kneader
+kneading-trough
+kneads
+knee
+knee-cap
+knee-deep
+knee-high
+knee-hole
+knee-jerk
+knee-joint
+knee-slapper
+knee-socks
+kneecap
+kneed
+kneeing
+kneel
+kneeled
+kneeler
+kneeling
+kneels
+knees
+knell
+knells
+knelt
+knew
+knick-knack
+Knickerbocker
+knickerbockers
+knickers
+knickknack
+knife
+knife-edge
+knife-grinder
+knife-rest
+knifed
+knifes
+knifing
+knight
+knight-errant
+knighted
+knighthood
+knighting
+knightliness
+knightly
+knights
+knights-errant
+Knightsbridge
+knish
+knit
+knits
+knitted
+knitter
+knitting
+knitwear
+knives
+knob
+knobby
+Knobeloch
+knobs
+knock
+knock-knee
+knock-kneed
+knock-on
+knockdown
+knocked
+knocker
+knockers
+knocking
+knockoff
+knockout
+knocks
+knockwurst
+knoll
+knolls
+Knossos
+knot
+knothole
+knots
+Knott
+knotted
+knotting
+knotty
+knout
+know
+know!
+know-how
+know-it-all
+knowable
+knower
+knowhow
+knowing
+knowingly
+knowledge
+knowledgeable
+knowledgeably
+Knowles
+Knowlton
+known
+knows
+Knox
+Knoxville
+knuckle
+knuckled
+knucklehead
+knuckles
+Knudsen
+Knudson
+knur
+knurl
+knurr
+Knuth
+Knutsen
+Knutson
+KO
+koala
+Kobayashi
+Kobe
+Koch
+Kochab
+Kodachrome
+kodak
+Kodiak
+Koenig
+Koenigsberg
+Kohler
+kohlrabi
+kola
+Kong
+Konrad
+kook
+kookaburra
+kookie
+kookiness
+kooky
+kopeck
+kopek
+Koppers
+koran
+Koranic
+Korea
+Korean
+Koreans
+Kosciusko
+kosher
+Kovacs
+Kowalewski
+Kowalski
+Kowloon
+kowtow
+KP
+Kr
+kraal
+Kraemer
+Krakatau
+Krakatoa
+Krakow
+Kramer
+Krasnodar
+Krasnoyarsk
+Krause
+kraut
+Krebs
+Kremlin
+Kremlinologist
+Kremlinology
+Kresge
+Krieger
+krill
+Krishna
+Kristin
+krona
+krone
+Kronecker
+kroner
+kronor
+kronur
+Krueger
+Kruger
+Krugerrand
+Kruse
+krypton
+KS
+KSAM
+KTS
+Ku
+Kuala
+kuchen
+kudo
+kudos
+kudzu
+Kuenning
+Kuhn
+kulak
+Kumar
+kumquat
+Kunming
+Kurd
+Kurdish
+Kurdistan
+Kurt
+Kuwait
+Kuwaiti
+kvetch
+kW
+KWAC
+KWADE
+Kwangchow
+Kwangju
+Kwanza
+Kwanzaa
+kWh
+KWIC
+KWINDEX
+KWIP
+KWIT
+KWOC
+KWOT
+KWUC
+KYBD
+Kyoto
+Kyrgyzstan
+Kyushu
+L'vov
+la
+la-di-da
+lab
+Laban
+label
+labeled
+labeling
+labelled
+labeller
+labellers
+labelling
+labels
+labia
+labial
+labile
+labium
+labor
+labor-intensive
+labor-saving
+laboratories
+laboratory
+labored
+laborer
+laborers
+laboring
+laborings
+laborious
+laboriously
+laboriousness
+labors
+laborsaving
+labour
+labour-saving
+laboured
+labourer
+Labourite
+Labrador
+Labradorean
+Labradorian
+labs
+laburnum
+labyrinth
+labyrinthine
+labyrinths
+lace
+lace-woman
+laced
+lacerate
+lacerated
+lacerates
+lacerating
+laceration
+lacerations
+Lacerta
+lacewing
+Lacey
+laches
+Lachesis
+lachrymal
+lachrymation
+lachrymator
+lachrymose
+lacing
+lack
+lackadaisical
+lackadaisically
+Lackawanna
+lacked
+lacker
+lackey
+lacking
+lackland
+lackluster
+lacklustre
+lacks
+laconic
+laconically
+lacquer
+lacquered
+lacquers
+lacrimal
+lacrimator
+lacrosse
+lactate
+lactateous
+lactation
+lacteal
+lactic
+lactose
+lacuna
+lacunae
+lacy
+lad
+lad!
+ladder
+laddie
+lade
+laden
+ladies
+ladies-in-waiting
+ladies
+ladify
+lading
+ladle
+ladleful
+lads
+lady
+lady's-slipper
+lady-bird
+Lady-chapel
+lady-companion
+lady-in-waiting
+lady-killer
+lady-love
+lady-ship
+lady-slipper
+ladybird
+ladybug
+Ladyday
+ladyfinger
+ladyfy
+ladykin
+ladylike
+ladylove
+ladyslipper
+ladysmock
+laetrile
+laevogyrate
+Lafayette
+lag
+lager
+lagers
+laggard
+laggardly
+lagging
+lagnappe
+lagniappe
+lagoon
+lagoons
+Lagos
+Lagrange
+Lagrangian
+Laguerre
+Laguna
+Lahore
+laic
+laid
+laid-back
+Laidlaw
+lain
+lair
+laird
+lairs
+laisser-faire
+laissez
+laissez-faire
+laity
+lake
+lake-dwelling
+Lakehurst
+Lakewood
+lallygag
+lam
+lama
+Lamaism
+Lamar
+Lamarck
+lamasery
+lamb
+Lamb-Kid
+lambada
+lambast
+lambaste
+lambda
+lambdas
+lambency
+lambent
+lambently
+lambert
+lambkin
+lamblike
+lambrequin
+lambs
+lambskin
+lame
+lame-duck
+lamebrain
+lamed
+lamella
+lamely
+lameness
+lament
+lamentable
+lamentably
+lamentation
+lamentations
+lamented
+lamenting
+laments
+lames
+lamina
+laminae
+laminar
+laminate
+laminated
+lamination
+laming
+Lammas
+lamp
+lamp-black
+lamp-chimney
+lamp-lighter
+lamp-post
+lamp-socket
+lampblack
+lamplight
+lamplighter
+lampoon
+Lamport
+lamppost
+lamprey
+lamps
+lampshade
+LAN
+Lana
+lanai
+Lancashire
+Lancaster
+lance
+lanced
+Lancelot
+lancer
+lances
+lancet
+lancinate
+lancination
+land
+land-based
+land-fill
+land-holder
+land-jobber
+land-lubber
+land-mark
+land-owner
+land-reform
+land-service
+land-slide
+land-slip
+land-survey
+land-tax
+landau
+landed
+lander
+landers
+landfall
+landfill
+landholder
+landholding
+landing
+landing-place
+landing-stage
+landings
+Landis
+landladies
+landlady
+landless
+landlocked
+landlord
+landlords
+landlubber
+landmark
+landmarks
+landmass
+landowner
+landowners
+landowning
+lands
+landscape
+landscaped
+landscaper
+landscapes
+landscaping
+landslide
+landsman
+landward
+landwards
+Landwehr
+lane
+lanes
+Lang
+Lange
+Langeland
+Langford
+Langley
+Langmuir
+language
+language-independent
+languages
+langue
+languid
+languidly
+languidness
+languish
+languished
+languishes
+languishing
+languor
+languorous
+languorously
+lank
+Lanka
+lankiness
+lankly
+lankness
+lanky
+lanolin
+Lansing
+lantern
+lantern-jawed
+lanterns
+lanthanum
+lanyard
+Lanzhou
+Lao
+Lao-tse
+Laocoon
+Laos
+Laotian
+Laotians
+lap
+lapboard
+lapdog
+lapel
+lapels
+lapful
+lapidary
+lapin
+Laplace
+Laplacian
+Lapland
+Laplander
+Lapp
+lappet
+lapping
+laps
+lapse
+lapsed
+lapses
+lapsing
+laptop
+Laputa
+lapwing
+Laramie
+larboard
+larcenist
+larcenous
+larceny
+larch
+lard
+larder
+larding-pin
+lardy
+Laredo
+Lares
+large
+large-hearted
+large-minded
+large-scale
+large-sized
+largehearted
+largely
+largeness
+larger
+largess
+largesse
+largest
+largish
+largo
+lariat
+lark
+lark(s)
+lark-spur
+Larkin
+larks
+larkspur
+larky
+Larry
+Lars
+Larsen
+Larson
+larva
+larvae
+larval
+laryngeal
+larynges
+laryngitis
+larynx
+lasagna
+lasagne
+lascivious
+lasciviously
+lasciviousness
+laser
+lasers
+laserscan
+lash
+lashed
+lashes
+lashing
+lashings
+lass
+lasses
+lassie
+lassitude
+lasso
+last
+last-ditch
+lasted
+lasting
+lastingly
+lastly
+lasts
+Laszlo
+latch
+latch-key
+latched
+latches
+latchet
+latching
+latchkey
+late
+late-comer
+latecomer
+lately
+latency
+lateness
+latent
+later
+lateral
+laterally
+Lateran
+latest
+latex
+lath
+lathe
+lathe-hand
+lather
+lathery
+Lathrop
+lathy
+latices
+Latin
+Latin-American
+Latina
+Latinate
+Latinity
+Latinization
+Latinizations
+Latinize
+Latinized
+Latinizer
+Latinizers
+Latinizes
+Latinizing
+Latino
+latish
+latitude
+latitudes
+latitudinal
+latitudinarian
+latrine
+latrines
+Latrobe
+latte
+latter
+latter-day
+latterly
+lattice
+latticed
+lattices
+latticework
+Lattimer
+Latvia
+Latvian
+laud
+laudable
+laudably
+laudanum
+laudation
+laudatory
+Lauderdale
+Laue
+laugh
+laughable
+laughably
+laughed
+laugher
+laughing
+laughingly
+laughingstock
+Laughlin
+laughs
+laughter
+launch
+launched
+launcher
+launches
+launching
+launchings
+launchpad
+launder
+laundered
+launderer
+launderette
+laundering
+launderings
+launders
+laundress
+laundrette
+Laundromats
+laundry
+laundryman
+laundrywoman
+laureate
+laureateship
+laurel
+laurels
+Lauren
+Laurence
+Laurent
+Laurentian
+Laurie
+Lausanne
+lava
+lavage
+Laval
+lavalier
+lavaliere
+lavatories
+lavatory
+lave
+lavender
+lavish
+lavished
+lavishing
+lavishly
+lavishness
+Lavoisier
+law
+law-abiding
+law-breaker
+law-giver
+law-making
+law-suit
+lawbreaker
+lawbreaking
+Lawford
+lawful
+lawfully
+lawfulness
+lawgiver
+lawless
+lawlessly
+lawlessness
+lawmaker
+lawmaking
+lawn
+lawn-mower
+lawn-tennis
+lawnmower
+lawns
+Lawrence
+Lawrenceville
+lawrencium
+Lawson
+lawsuit
+lawsuits
+lawyer
+lawyers
+lax
+laxative
+laxity
+laxly
+laxness
+lay
+lay-by
+lay-down
+lay-off
+lay-up
+layaway
+laydays
+layer
+layered
+layering
+layers
+layette
+laying
+layman
+laymen
+layoff
+layoffs
+layout
+layover
+layperson
+lays
+Layton
+laywoman
+Lazarus
+laze
+lazed
+lazier
+laziest
+lazily
+laziness
+lazing
+lazy
+lazy-bed
+lazy-bones
+lazy-bones/boots
+lazy-tongs
+lazybones
+LC
+LCC
+LCD
+LCM
+LDC
+LDX
+lea
+leach
+lead
+lead-in
+lead-off
+lead-time
+leaded
+leaden
+leader
+leader-in
+leaderless
+leaders
+leadership
+leading
+leadings
+leads
+leaf
+leaf-beetle
+leaf-brass
+leaf-stalk
+leaf-turn
+leafage
+leafed
+leafiest
+leafing
+leafless
+leaflet
+leaflets
+leafstalk
+leafy
+league
+leagued
+leaguer
+leaguers
+leagues
+leak
+leakage
+leakages
+leaked
+leakiness
+leaking
+leakproof
+leaks
+leaky
+lean
+lean-to
+Leander
+leaned
+leaner
+leanest
+leaning
+leanness
+leans
+leant
+leap
+leap-frog
+leap-year
+leaped
+leaper
+leapfrog
+leaping
+leaps
+leapt
+Lear
+learn
+learned
+learnedly
+learner
+learners
+learning
+learning-disabled
+learns
+learnt
+Leary
+leasable
+lease
+leaseback
+leased
+leasehold
+leaseholder
+leaser
+leases
+leash
+leashes
+leasing
+least
+leastways
+leastwise
+leather
+leather-bound
+leather-dealer's
+leather-dresser
+leather-head
+leather-neck
+leatherboard
+leathercloth
+leathered
+leatherette
+leatherine
+leathering
+leathern
+leatherneck
+leathers
+leathery
+leave
+leave-taking
+leaved
+leaven
+leavened
+leavening
+Leavenworth
+leaver
+leaves
+leaving
+leavings
+Lebanese
+Lebanon
+Lebesgue
+lecher
+lecherous
+lecherously
+lecherousness
+lechery
+lecithin
+lectern
+lector
+lecture
+lectured
+lecturer
+lecturers
+lectures
+lectureship
+lecturing
+led
+ledge
+ledger
+ledger-bait
+ledger-line
+ledgers
+ledges
+lee
+lee-side
+leech
+leeches
+Leeds
+leek
+Leeks
+leer
+leeriness
+leery
+lees
+Leeuwenhoek
+leeward
+leeway
+left
+left-aligned
+left-hand
+left-handed
+left-handedness
+left-hander
+left-wing
+left-winger
+leftie
+leftism
+leftist
+leftists
+leftmost
+leftover
+leftovers
+leftward
+leftwards
+lefty
+leg
+legacies
+legacy
+legal
+legalese
+legalism
+legalistic
+legality
+legalization
+legalize
+legalized
+legalizes
+legalizing
+legally
+legate
+legatee
+legation
+legato
+legend
+legendarily
+legendary
+Legendre
+legends
+leger
+legerdemain
+Legers
+legged
+leggin
+legginess
+legging
+leggings
+leggy
+legibility
+legible
+legibly
+legion
+legionary
+legionnaire
+legions
+legislate
+legislated
+legislates
+legislating
+legislation
+legislative
+legislatively
+legislator
+legislators
+legislature
+legislatures
+legit
+legitimacy
+legitimate
+legitimately
+legitimatize
+legitimization
+legitimize
+legless
+legman
+legroom
+legs
+legume
+legumen
+Legumes
+leguminous
+legwork
+Lehigh
+Lehman
+lei
+Leibniz
+Leicester
+Leiden
+Leigh
+Leighton
+Leila
+Leipsic
+Leipzig
+leisure
+leisured
+leisureliness
+leisurely
+leisurewear
+leitmotif
+leitmotiv
+Leland
+Lemberg
+Lemke
+lemma
+lemmas
+lemmata
+lemmatization
+lemming
+lemmings
+lemniscate
+lemon
+lemonade
+lemons
+lemony
+Lemuel
+lemur
+Len
+Lena
+lend
+lend-lease
+lender
+lenders
+lending
+lending-library
+lends
+length
+lengthen
+lengthened
+lengthening
+lengthens
+lengthily
+lengthiness
+lengthly
+lengths
+lengthways
+lengthwise
+lengthy
+lenience
+leniency
+lenient
+leniently
+Lenin
+Leningrad
+Leninism
+Leninist
+lenitive
+lenity
+Lennox
+Lenny
+Lenore
+lens
+lenses
+lent
+Lenten
+lenticular
+lentil
+lentils
+lento
+Leo
+Leon
+Leona
+Leonard
+Leonardo
+Leone
+Leonid
+leonine
+leopard
+leopardess
+leopards
+Leopol
+Leopold
+Leopoldville
+leotard
+leper
+leprechaun
+leprosy
+leprous
+lepton
+Leroy
+lesbianism
+Lesbians
+lesion
+Leslie
+Lesotho
+less
+less-or-equal
+lessee
+lessen
+lessened
+lessening
+lessens
+lesser
+lesson
+lessons
+lessor
+lest
+Lester
+let
+let's
+let-down
+let-up
+letdown
+lethal
+lethally
+lethargic
+lethargically
+lethargy
+Lethe
+Letitia
+lets
+letter
+letter-board
+letter-box
+letter-card
+letter-head
+letter-perfect
+letter-quality
+lettered
+letterer
+letterhead
+lettering
+letterpress
+letters
+letterset
+Lettic
+letting
+Lettish
+lettuce
+letup
+leucoma
+leukaemia
+leukemia
+leukemic
+leukocyte
+Lev
+Levant
+Levantine
+levee
+levees
+level
+level-headed
+leveled
+leveler
+levelheaded
+levelheadedness
+leveling
+levelled
+leveller
+levellest
+levelling
+levelly
+levelness
+levels
+lever
+lever-watch
+leverage
+leveraging
+leveret
+levers
+Levi
+Levi's
+Leviable
+leviathan
+levied
+levier
+levies
+levigate
+Levin
+Levine
+Levis
+levitate
+levitation
+Levite
+Leviticus
+Levitt
+levity
+levy
+levying
+Lew
+lewd
+lewdly
+lewdness
+Lewellyn
+Lewis
+lexeme
+lexica
+lexical
+lexically
+lexicographer
+lexicographic
+lexicographical
+lexicographically
+lexicography
+lexicology
+lexicon
+lexicons
+Lexington
+Leyden
+Lhasa
+Li
+li-labour
+liabilities
+liability
+liable
+liaise
+liaison
+liaisons
+liar
+liars
+lib
+libation
+libel
+libeler
+libeller
+libellous
+libelous
+Liberace
+liberal
+liberalism
+liberality
+liberalization
+liberalize
+liberalized
+liberalizes
+liberalizing
+liberally
+liberalness
+liberals
+liberate
+liberated
+liberates
+liberating
+liberation
+liberator
+liberators
+Liberia
+Liberian
+libertarian
+liberties
+libertinage
+libertine
+liberty
+libidinal
+libidinous
+libido
+libname
+Libra
+librarian
+librarian-in-charge
+librarians
+librarianship
+libraries
+library
+libretti
+librettist
+libretto
+Libreville
+LIBRIS
+Libya
+Libyan
+lice
+licence
+license
+licensed
+licensee
+licenser
+licenses
+licensing
+licensor
+licentiate
+licentious
+licentiously
+licentiousness
+lichee
+lichen
+lichens
+Lichter
+licit
+licitly
+lick
+licked
+lickerish
+lickety-split
+licking
+licks
+licorice
+lid
+lidded
+lidless
+lido
+lids
+lie
+Lieberman
+Liechtenstein
+Liechtensteiner
+lied
+lieder
+lief
+liege
+liegeman
+lien
+liens
+lies
+lieu
+lieutenancy
+lieutenant
+lieutenant-general
+lieutenant-governor
+lieutenants
+life
+life-belt
+life-boat
+life-guard
+life-line
+life-preserver
+life-saver
+life-sentence
+life-size
+life-sized
+life-threatening
+life-work
+lifeblood
+lifeboat
+lifebuoy
+lifeguard
+lifeless
+lifelessly
+lifelessness
+lifelike
+lifeline
+lifelong
+lifer
+lifesaver
+lifesaving
+lifespan
+lifestyle
+lifestyles
+lifetime
+lifetimes
+lifework
+LIFO
+lift
+lift-off
+lifted
+lifter
+lifters
+lifting
+liftoff
+lifts
+ligament
+ligate
+ligation
+ligature
+Ligget
+Liggett
+light
+light(-coloured)
+light-bulb
+light-fingered
+light-footed
+light-headed
+light-headedness
+light-hearted
+light-heartedly
+light-house
+light-minded
+light-sensitive
+light-weight
+light-year
+lighted
+lighten
+lightener
+lightens
+lighter
+lighters
+lightest
+lightface
+lightfaced
+lightheaded
+lighthearted
+lightheartedly
+lightheartedness
+lighthouse
+lighthouses
+lighting
+lightly
+lightness
+lightning
+lightnings
+lightproof
+lights
+lights-out
+lightship
+lightsome
+lightweight
+lightwood
+ligneous
+lignite
+likability
+likable
+likableness
+like
+like-minded
+like-mindedness
+likeable
+liked
+likelier
+likeliest
+likelihood
+likelihoods
+likeliness
+likely
+liken
+likened
+likeness
+likenesses
+likening
+likens
+likes
+likewise
+liking
+Lila
+lilac
+lilacs
+liliaceous
+Lilian
+lilies
+lilies-of-the-valley
+Lillian
+Lilliput
+Lilliputianize
+Lilliputianizes
+Lilly
+Lilongwe
+lilt
+lilting
+lily
+lily-livered
+lily-white
+Lima
+Liman
+limb
+limber
+limberness
+limbless
+limbo
+limbs
+Limburger
+lime
+lime-kiln
+lime-light
+lime-slaking
+lime-tree
+limeade
+limelight
+limerick
+limes
+limestone
+limit
+limitability
+limitably
+limitation
+limitations
+limited
+limiter
+limiters
+limiting
+limitless
+limitlessness
+limits
+limn
+limner
+limo
+Limoges
+limousine
+limp
+limp-wrist
+limped
+limpet
+limpid
+limpidity
+limpidly
+limpidness
+limping
+limply
+limpness
+Limpopo
+limps
+limy
+Lin
+linage
+linchpin
+Lincoln
+Lind
+Linda
+Lindberg
+Lindbergh
+linden
+Lindholm
+Lindquist
+Lindsay
+Lindsey
+Lindstrom
+Lindy
+line
+line-drawing
+line-engraving
+line-up
+lineage
+lineal
+lineally
+lineament
+lineaments
+linear
+linearities
+linearity
+linearizable
+linearize
+linearized
+linearizes
+linearizing
+linearly
+linebacker
+lined
+lineman
+linen
+linens
+liner
+liners
+lines
+linesman
+linesmen
+lineup
+ling
+linger
+lingered
+lingerer
+lingerie
+lingering
+lingeringly
+lingers
+lingo
+lingua
+lingual
+linguine
+linguini
+linguist
+linguistic
+linguistically
+linguistics
+linguists
+liniment
+lining
+linings
+link
+linkage
+linkages
+linked
+linker
+linkers
+linking
+links
+linkup
+Linnaeus
+linnet
+lino-cut
+linocut
+linoleum
+linotype
+linseed
+lint
+lintel
+Linton
+linty
+Linus
+Linux
+liny
+lion
+lion-hearted
+Lionel
+lioness
+lionesses
+lionhearted
+lionization
+lionize
+lions
+lip
+lip-deep
+lip-read
+lip-reading
+lip-salve
+lip-stick
+lip-sync
+lip-synch
+lipid
+liposuction
+lipped
+Lippincott
+lippy
+lipread
+lipreader
+lipreading
+lips
+Lipschitz
+Lipscomb
+lipstick
+Lipton
+liquefaction
+liquefy
+liqueur
+liqueurs
+liquid
+liquidate
+liquidation
+liquidations
+liquidator
+liquidity
+liquidize
+liquidizer
+liquids
+liquify
+liquor
+liquorice
+liquorish
+liquors
+lira
+lire
+Lisa
+Lisbon
+Lise
+lisle
+lisp
+lisped
+lisper
+lisping
+lisps
+Liss
+Lissajous
+lissom
+lissome
+list
+listed
+listen
+listen!
+listened
+listener
+listeners
+listening
+listens
+Lister
+Listerize
+Listerizes
+listers
+listing
+listings
+listless
+listlessly
+listlessness
+Liston
+lists
+Liszt
+lit
+litany
+litchi
+lite
+liter
+literacy
+literal
+literally
+literalness
+literals
+literariness
+literary
+literate
+literately
+literati
+literation
+literature
+literatures
+liters
+litharge
+lithe
+lithely
+litheness
+lithesome
+lithium
+lithochromy
+lithograph
+lithographer
+lithographic
+lithographically
+lithography
+lithogravure
+lithophotography
+lithosphere
+Lithuania
+Lithuanian
+litigant
+litigate
+litigation
+litigator
+litigious
+litigiousness
+litmus
+litotes
+litre
+litter
+litter-bin
+litterateur
+litterbug
+littered
+litterer
+littering
+litters
+little
+little-go
+little-minded
+littleness
+littler
+littlest
+Littleton
+Litton
+littoral
+liturgical
+liturgically
+liturgist
+liturgy
+livability
+livable
+livably
+live
+live-in
+liveable
+lived
+lived-in
+livelihood
+liveliness
+livelong
+lively
+liven
+liveness
+liver
+liver-fluke
+liveried
+liverish
+Livermore
+Liverpool
+Liverpudlian
+livers
+liverwort
+liverwurst
+livery
+liveryman
+lives
+livestock
+liveware
+livewire
+livid
+lividly
+living
+living-room
+Livingston
+Livingstone
+Livonia
+lixiviate
+Liz
+lizard
+lizards
+Lizzie
+Lizzy
+Ljubljana
+llama
+llano
+llanos
+Lloyd
+Lloyd's
+lo
+load
+loaded
+loader
+loaders
+loading
+loadings
+loadingstone
+loads
+loadstar
+loadstone
+loaf
+loafed
+loafer
+loam
+loamy
+loan
+loan-shark
+loaned
+loaner
+loaning
+loans
+loansharking
+loanword
+loath
+loathe
+loathed
+loather
+loathing
+loathly
+loathsome
+loathsomely
+loathsomeness
+loaves
+lob
+lobar
+lobate
+lobber
+lobbied
+lobbies
+lobby
+lobbying
+lobbyist
+lobe
+lobed
+lobes
+lobotomize
+lobotomy
+lobster
+lobsters
+LOC
+local
+locale
+localities
+locality
+localization
+localize
+localized
+localizes
+localizing
+locally
+locally-attached
+locals
+locate
+located
+locates
+locating
+location
+locations
+locative
+locatives
+locator
+locators
+loch
+loci
+lock
+lock-picker
+lock-smith
+lock-up
+lockage
+Locke
+locked
+locker
+lockers
+locket
+Lockhart
+Lockheed
+Lockian
+locking
+lockings
+lockjaw
+lockout
+lockouts
+locks
+locksmith
+lockstep
+lockup
+lockups
+Lockwood
+loco
+locomotion
+locomotive
+locomotives
+locoweed
+locus
+locust
+locusts
+locution
+lode
+lodestar
+lodestone
+lodge
+lodged
+lodger
+lodges
+lodging
+lodging-house
+lodgingment
+lodgings
+Lodowick
+Lodz
+Loeb
+loft
+loftily
+loftiness
+lofts
+lofty
+log
+log-book
+log-cabin
+Logan
+loganberry
+logarithm
+logarithmic
+logarithmically
+logarithms
+logbook
+loge
+logged
+logger
+loggerhead
+loggerheads
+loggers
+loggia
+logging
+loghouse
+logic
+logical
+logicality
+logically
+logician
+logicians
+logics
+login
+logins
+logistic
+logistical
+logistically
+logistics
+logjam
+logoff
+logogram
+logon
+logotype
+logrolling
+logs
+logy
+loin
+loincloth
+loins
+Loire
+Lois
+loiter
+loitered
+loiterer
+loitering
+loiters
+Loki
+Lola
+loll
+lollipop
+lollygag
+lollypop
+Lomb
+Lombard
+Lombardy
+Lome
+Londer
+London
+Londonderry
+Londoner
+Londonization
+Londonizations
+Londonize
+Londonizes
+lone
+lonelier
+loneliest
+loneliness
+lonely
+loner
+loners
+lonesome
+lonesomely
+lonesomeness
+long
+long-ago
+long-awaited
+long-distance
+long-drawn-out
+long-eared
+long-faced
+long-head
+long-lasting
+long-lived
+long-lost
+long-player
+long-playing
+long-range
+long-running
+long-sighted
+long-standing
+long-suffering
+long-term
+long-time
+long-winded
+long-windedness
+longboat
+longbow
+longe
+longed
+longer
+longest
+longevity
+Longfellow
+longhair
+longhand
+longhorn
+longing
+longingly
+longings
+longish
+longitude
+longitudes
+longitudinal
+longitudinally
+longs
+longshafted
+longshoreman
+longsighted
+longstanding
+Longstreet
+longtime
+Longueuil
+longueur
+longwall
+longways
+longwise
+looby
+loofah
+look
+look!
+look-alike
+look-over
+look-see
+look-up
+lookahead
+lookalike
+looked
+looker
+looker-on
+lookers
+lookers-on
+looking
+looking-glass
+lookout
+looks
+lookup
+lookups
+loom
+loomed
+looming
+Loomis
+looms
+loon
+looney
+loony
+loop
+loop-hole
+looped
+loophole
+loopholes
+looping
+loops
+loopy
+loose
+loose-leaf
+loosed
+looseleaf
+loosely
+loosen
+loosened
+looseness
+loosening
+loosens
+looser
+looses
+loosest
+loosing
+loot
+looted
+looter
+looting
+loots
+lop
+lop-eared
+lope
+lopear
+Lopez
+lopsided
+lopsidedly
+lopsidedness
+loquacious
+loquaciousness
+loquacity
+lord
+Lord-a-mercy
+lordliness
+lordly
+lords
+lordship
+lore
+Lorelei
+Loren
+Lorentzian
+Lorenz
+Loretta
+lorgnette
+Lorinda
+loris
+lorn
+Lorraine
+lorry
+lorry-hop
+Los
+lose
+loser
+losers
+loses
+losing
+loss
+losses
+lossier
+lossiest
+lossless
+lossy
+lost
+lost-and-found
+lot
+loth
+Lothario
+lotion
+lots
+Lotte
+lottery
+lottery-ticket
+Lottie
+lotto
+lotus
+lotus-eater
+lotus-land
+Lou
+loud
+loud-hailer
+loud-speaker
+louder
+loudest
+loudhailer
+loudly
+loudmouth
+loudmouthed
+loudness
+loudspeaker
+loudspeakers
+Louis
+Louisa
+Louise
+Louisiana
+Louisianan
+Louisianian
+Louisville
+lounge
+lounge-lizard
+lounged
+lounger
+lounges
+lounging
+Lounsbury
+lour
+Lourdes
+louse
+lousily
+lousiness
+lousy
+lout
+loutish
+loutishly
+louver
+louvered
+louvre
+louvred
+lovable
+lovableness
+lovably
+love
+love-affair
+love-making
+love-match
+love-sick
+love-token
+loveable
+lovebird
+lovebirds
+lovechild
+loved
+Lovejoy
+Lovelace
+Loveland
+loveless
+lovelier
+lovelies
+loveliest
+loveliness
+lovelorn
+lovely
+lovemaking
+lover
+lovers
+loves
+loveseat
+lovesick
+loving
+lovingly
+low
+low-bred
+low-brow
+low-cal
+low-cost
+low-down
+low-end
+low-fat
+low-glare
+low-grade
+low-key
+low-keyed
+low-level
+low-level-bomb
+low-life
+low-lying
+low-minded
+low-pitched
+low-pressure
+low-rise
+low-spirited
+low-tech
+lowborn
+lowboy
+lowbrow
+lowdown
+Lowe
+Lowell
+lower
+lower-class
+lowercase
+lowered
+lowering
+lowermost
+lowers
+lowest
+lowland
+lowlander
+lowliest
+lowlife
+lowliness
+lowly
+lowness
+Lowry
+lows
+lox
+Loy
+loyal
+loyalism
+loyalist
+loyally
+loyalties
+loyalty
+Loyola
+lozenge
+LP
+LPG
+LPN
+Lr
+LSD
+LSI
+Lt
+Lu
+Luanda
+luau
+lubber
+lubberly
+Lubbock
+lube
+Lubell
+lubricant
+lubricate
+lubrication
+lubricator
+lubricious
+lubricity
+Lucas
+lucent
+lucerne
+Lucia
+Lucian
+lucid
+lucidity
+lucidly
+lucidness
+Lucien
+Lucifer
+Lucille
+Lucite
+Lucius
+luck
+lucked
+luckier
+luckiest
+luckily
+luckiness
+luckless
+Lucknow
+lucks
+lucky
+lucky-bag
+lucrative
+lucratively
+lucrativeness
+lucre
+Lucretia
+Lucretius
+lucubrate
+lucubration
+luculent
+Lucy
+Luddite
+ludic
+ludicrous
+ludicrously
+ludicrousness
+Ludlow
+Ludmilla
+Ludwig
+luff
+Lufthansa
+Luftwaffe
+lug
+luggage
+lugger
+lugsail
+lugubrious
+lugubriously
+lugubriousness
+Luis
+Luke
+lukewarm
+lukewarmly
+lukewarmness
+lull
+lullaby
+lulled
+lulls
+lumbago
+lumbar
+lumber
+lumber-room
+lumbered
+lumberer
+lumbering
+lumberjack
+lumberman
+lumberyard
+luminance
+luminary
+luminescence
+luminescent
+luminosity
+luminous
+luminously
+lummox
+lump
+lumped
+lumpiness
+lumping
+lumpish
+lumps
+Lumpur
+lumpy
+lunacy
+lunar
+lunate
+lunatic
+lunch
+lunched
+luncheon
+luncheonette
+luncheons
+lunches
+lunching
+lunchroom
+lunchtime
+Lund
+Lundberg
+Lundquist
+lunette
+lung
+lunge
+lunged
+lungfish
+lungs
+lunkhead
+lupin
+lupine
+lupus
+Lura
+lurch
+lurched
+lurches
+lurching
+lure
+lured
+lures
+lurex
+lurid
+luridly
+luridness
+luring
+lurk
+lurked
+lurking
+lurking-place
+lurks
+Lusaka
+luscious
+lusciously
+lusciousness
+lush
+lushly
+lushness
+lust
+luster
+lusterless
+lustful
+lustfully
+lustily
+lustiness
+lustre
+lustrous
+lustrously
+lusts
+lusty
+lutanist
+lute
+lutenist
+lutes
+lutetium
+Luther
+Lutheran
+Lutheranism
+Lutheranize
+Lutheranizer
+Lutheranizers
+Lutheranizes
+Lutz
+Luxembourg
+Luxembourger
+Luxembourgian
+Luxemburg
+luxmeter
+luxuriance
+luxuriant
+luxuriantly
+luxuriate
+luxuriation
+luxuries
+luxurious
+luxuriously
+luxuriousness
+luxury
+Luzon
+Lviv
+Lvov
+Lwow
+Lyallpur
+lyceum
+lychee
+Lycra
+Lydia
+Lydian
+lye
+lying
+lying-in
+lyings-in
+Lykes
+Lyle
+Lyman
+lymph
+lymphatic
+lymphocyte
+lymphoid
+lymphoma
+lymphomata
+lynch
+Lynchburg
+lynched
+lyncher
+lynches
+lynching
+lynchpin
+Lyndon
+Lynn
+lynx
+lynx-eyed
+lynxes
+Lyon
+Lyons
+Lyra
+lyre
+lyrebird
+lyric
+lyrical
+lyrically
+lyricism
+lyricist
+lyrics
+Lysenko
+m.p.h.
+MA
+ma'am
+Mabel
+macabre
+macadam
+Macadamia
+macadamize
+Macao
+macaque
+macaroni
+macaroon
+Macassar
+Macaulay
+Macaulayan
+Macaulayism
+Macaulayisms
+macaw
+Macbeth
+Maccabees
+MacDraw
+mace
+mace-bearer
+maced
+Macedon
+Macedonia
+Macedonian
+macer
+macerate
+maceration
+maces
+Mach
+machete
+Machiavelli
+Machiavellian
+machinate
+machination
+machinations
+machine
+machine-dependent
+machine-gun
+machine-made
+machine-readable
+machine-searcher
+machine-setting
+machine-shed
+machined
+machinelike
+machinery
+machines
+machining
+machinist
+machismo
+macho
+Macintosh
+mackerel
+Mackey
+Mackinac
+mackintosh
+mackling
+MacMahon
+Macon
+MacPaint
+macrame
+macro
+macrobiotic
+macrobiotics
+macrocosm
+macroeconomics
+macroevaluation
+macroform
+macromolecule
+macromolecules
+macron
+macrophage
+macrophotograph
+macroprogramming
+macros
+macroscopic
+macrostore
+macrostructure
+macrothesaurus
+macula
+mad
+mad-doctor
+mad-house
+Madagascan
+Madagascar
+madam
+Madames
+madcap
+madden
+maddening
+maddeningly
+madder
+maddest
+madding
+maddish
+Maddox
+made
+made-to-measure
+made-to-order
+made-up
+madedishes
+Madeira
+Madeleine
+Madeline
+mademoiselle
+madhouse
+Madhya
+Madison
+madly
+madman
+madmen
+madness
+Madonna
+Madonnas
+Madrid
+madrigal
+Madsen
+madwoman
+madwort
+Mae
+maecenas
+maelstrom
+maestri
+maestro
+mag
+magazine
+Magdalene
+mage
+Magellan
+Magellanic
+magenta
+Maggie
+maggot
+maggots
+maggoty
+magi
+magic
+magical
+magically
+magician
+magicians
+Magill
+magisterial
+magisterially
+magistracy
+magistral
+magistrate
+magistrates
+magma
+magna
+magnanimity
+magnanimous
+magnanimously
+magnate
+magnesia
+magnesium
+magnet
+magnetic
+magnetical
+magnetically
+magnetise
+magnetism
+magnetisms
+magnetite
+magnetizable
+magnetization
+magnetize
+magnetized
+magneto
+magneto-electric
+magnetometer
+magnification
+magnificence
+magnificent
+magnificently
+magnifico
+magnified
+magnifier
+magnifies
+magnify
+magnifying
+magniloquence
+magniloquent
+magnitude
+magnitudes
+magnolia
+magnum
+Magnuson
+Magog
+magpie
+magpie-moth
+Magruder
+Maguire
+Maguires
+magus
+Magyar
+mah-jongg
+maharaja
+maharajah
+maharanee
+maharani
+Maharashtra
+maharishi
+mahatma
+Mahayana
+Mahayanist
+Mahican
+mahjong
+Mahler
+mahogany
+Mahomet
+Mahometan
+Mahoney
+mahout
+maid
+maid-of-all-work
+maid-servant
+maiden
+maidenhair
+maidenhead
+maidenhood
+maidenly
+maidens
+maids
+maidservant
+Maier
+mail
+mail-car
+mail-cart
+mail-coach
+mail-order
+mail-train
+mailable
+mailbag
+mailbox
+mailboxes
+mailed
+mailer
+mailing
+mailings
+maillot
+mailman
+mailmen
+mails
+maim
+maimed
+maiming
+maims
+main
+Maine
+Mainer
+mainframe
+mainframes
+mainland
+mainline
+mainly
+mainmast
+mains
+mainsail
+mainspring
+mainstay
+mainstream
+maintain
+maintainability
+maintainable
+maintained
+maintainer
+maintainers
+maintaining
+maintains
+maintenance
+maintenances
+maintop
+maiolica
+maisonette
+maize
+Maj
+majestic
+majestical
+majestically
+majesties
+majesty
+majolica
+major
+major-domo
+major-general
+major-league
+Majorca
+majordomo
+majored
+majorette
+majoring
+majorities
+majority
+majors
+majuscule
+mak-peace
+mak-up
+makable
+make
+make-and-break
+make-believe
+make-belive
+make-do
+make-up
+make-work
+makeover
+maker
+makers
+makes
+makeshift
+makeup
+makeups
+makfast
+making
+making-ready
+makings
+makshift
+Malabar
+Malabo
+malachite
+maladies
+maladjusted
+maladjustment
+maladminister
+maladroit
+maladroitly
+maladroitness
+malady
+Malagasy
+malaise
+Malamud
+malamute
+malapropism
+malaria
+malarial
+malarkey
+malathion
+Malawi
+Malawian
+Malay
+Malaya
+Malayalam
+Malayan
+Malayize
+Malayizes
+Malaysia
+Malaysian
+Malcolm
+malcontent
+Malden
+maldistribution
+Maldive
+Maldives
+Maldivian
+male
+male-nurse
+malediction
+malefaction
+malefactor
+malefactors
+malefic
+maleficence
+maleficent
+maleness
+males
+malevolence
+malevolent
+malevolently
+malfeasance
+malformation
+malformed
+malfunction
+malfunctioned
+malfunctioning
+malfunctions
+Mali
+Malian
+Malibu
+malice
+malicious
+maliciously
+maliciousness
+malign
+malignancy
+malignant
+malignantly
+malignity
+MALIMET
+malinger
+malingerer
+mall
+mallard
+malleability
+malleable
+malleablize
+mallet
+mallets
+Mallory
+mallow
+malmsey
+malnourished
+malnutrition
+malocclusion
+malodorous
+Malone
+Maloney
+malpractice
+Malraux
+malt
+Malta
+malted
+Maltese
+Malthus
+Malthusian
+Malton
+maltose
+maltreat
+maltreatment
+malts
+maltster
+malty
+malversation
+mama
+mamba
+mambo
+mamm
+mamma
+mammal
+mammalia
+mammalian
+mammals
+mammary
+mammas
+mammogram
+mammography
+mammon
+mammoth
+mammy
+mammy-sick
+man
+man!
+man-at-arms
+man-eater
+man-eating
+man-hole
+man-hour
+man-made
+man-of-the-world
+man-of-war
+man-size
+man-sized
+man-to-man
+manacle
+manage
+manageability
+manageable
+manageableness
+managed
+management
+managements
+manager
+manageress
+managerial
+managers
+manages
+managing
+Managua
+Manama
+manana
+manatee
+Manchester
+Manchu
+Manchuria
+Manchurian
+manciple
+Mancunian
+mandala
+Mandalay
+mandamus
+mandate
+mandated
+mandates
+mandating
+mandatory
+Mandela
+Mandelbrot
+mandible
+mandibular
+mandolin
+mandoline
+mandrake
+mandrel
+mandril
+mandrill
+manducate
+mane
+maned
+manege
+manes
+Manet
+maneuver
+maneuverability
+maneuverable
+maneuvered
+maneuvering
+maneuvers
+maneuvre
+Manfred
+manful
+manfully
+manganate
+manganese
+mange
+manger
+mangers
+manginess
+mangle
+mangled
+mangler
+mangles
+mangling
+mango
+mangrove
+mangy
+manhandle
+Manhattan
+Manhattanize
+Manhattanizes
+manhole
+manhood
+manhunt
+mania
+maniac
+maniacal
+maniacally
+maniacs
+manic
+manic-depressive
+manically
+manicure
+manicured
+manicures
+manicuring
+manicurist
+manifest
+manifestation
+manifestations
+manifested
+manifesting
+manifestly
+manifesto
+manifests
+manifold
+manifolds
+manikin
+manila
+manilla
+manioc
+manipulability
+manipulable
+manipulatable
+manipulate
+manipulated
+manipulates
+manipulating
+manipulation
+manipulations
+manipulative
+manipulator
+manipulators
+manipulatory
+Manitoba
+Manitowoc
+mankind
+Mankowski
+Manley
+manlike
+manliness
+manly
+Mann
+manna
+manned
+mannequin
+manner
+mannered
+mannerism
+mannerly
+manners
+mannikin
+manning
+mannish
+mannishly
+mannishness
+manoeuvre
+manometer
+manometers
+manor
+manorial
+manors
+manpower
+manque
+Mans
+mansard
+manse
+manservant
+Mansfield
+mansion
+mansions
+manslaughter
+manta
+mantel
+mantel-piece
+mantelpiece
+mantels
+mantilla
+mantis
+mantissa
+mantissas
+mantle
+mantlepiece
+mantles
+mantra
+manual
+manually
+manually-operated
+manuals
+Manuel
+manufactory
+manufacture
+manufactured
+manufacturer
+manufacturers
+manufactures
+manufacturing
+manumission
+manumit
+manure
+manuscript
+manuscripts
+Manville
+manware
+Manx
+many
+many-sided
+many-to-one
+manycoloured
+mans
+Mao
+Maoism
+Maoist
+Maori
+map
+map-making
+maple
+Maplecrest
+maples
+mapmaker
+mappable
+mapped
+mapper
+mapping
+mappings
+maps
+Maputo
+mar
+mar-all
+marabou
+marabout
+maraca
+Maracaibo
+maraschino
+marathon
+marathoner
+maraud
+marauder
+marauding
+marble
+marble-slab
+marbled
+marbleize
+marbles
+marbling
+Marc
+Marceau
+Marcel
+Marcella
+Marcello
+march
+marched
+marcher
+marches
+marching
+marchioness
+marchpane
+Marcia
+Marco
+Marconi
+Marcotte
+Marcus
+Marcy
+Mardi
+Mardis
+mare
+mare's-nest
+mares
+Margaret
+margarine
+margarita
+Margery
+margin
+marginal
+marginalia
+marginalize
+marginally
+margins
+Margo
+margrave
+marguerite
+maria
+mariachi
+Marian
+Marianne
+Marie
+Marietta
+marigold
+marihuana
+marijuana
+Marilyn
+marimba
+Marin
+marina
+marinade
+marinara
+marinate
+marination
+marine
+mariner
+Marino
+Mario
+Marion
+marionette
+marital
+maritally
+maritime
+Mariupol
+marjoram
+Marjorie
+Marjory
+mark
+mark-place
+mark-up
+markable
+markdown
+marked
+markedly
+marker
+markers
+markerup
+markerwidth
+market
+marketability
+marketable
+marketed
+marketeer
+marketer
+marketing
+marketings
+marketplace
+marketplaces
+markets
+Markham
+marking
+markings
+Markism
+markka
+markkaa
+Markov
+Markovian
+Markovitz
+Marks
+marksman
+marksmanship
+markup
+marl
+Marlboro
+Marlborough
+Marlene
+marlin
+marlinespike
+marlinspike
+Marlowe
+marmalade
+Marmara
+marmelade
+marmoreal
+marmoset
+marmot
+maroon
+marque
+marquee
+marquess
+marquetry
+Marquette
+marquis
+marquise
+marquisette
+marriage
+marriageability
+marriageable
+marriages
+married
+marries
+Marriott
+marrow
+marry
+marrying
+Mars
+Marseillaise
+Marseille
+Marseilles
+marsh
+Marsha
+marshal
+marshaled
+marshaling
+Marshall
+Marshalled
+Marshalling
+marshallisation
+marshals
+marshes
+marshland
+marshmallow
+marshy
+marsupial
+mart
+marten
+Martha
+martial
+martially
+Martian
+Martians
+martin
+martinet
+Martinez
+martingale
+martini
+Martinique
+Martinson
+marts
+Marty
+martyr
+martyrdom
+martyrs
+marvel
+marveled
+marvelled
+marvelling
+marvellous
+marvellously
+marvelous
+marvelously
+marvelousness
+marvels
+Marvin
+Marx
+Marxian
+Marxism
+Marxisms
+marxist
+Mary
+Maryland
+Marylander
+Marylanders
+marzipan
+Mas
+mascara
+mascot
+mascotte
+masculine
+masculinely
+masculinity
+Masefield
+maser
+Maseru
+masfire
+mash
+mashed
+masher
+mashes
+Mashhad
+mashing
+mask
+maskable
+masked
+masker
+masking
+maskings
+masks
+masochism
+masochist
+masochistic
+masochistically
+masochists
+mason
+Masonic
+Masonite
+masonry
+masons
+masque
+masquerade
+masquerader
+masquerades
+masquerading
+mass
+mass-produce
+mass-produced
+Massachusetts
+massacre
+massacred
+massacres
+massage
+massages
+massaging
+massed
+masses
+masseur
+masseuse
+Massey
+massif
+massing
+massive
+massively
+massiveness
+mast
+mastectomy
+masted
+master
+master's
+master-key
+master-piece
+master-stroke
+mastered
+masterful
+masterfully
+mastering
+masterings
+masterly
+mastermind
+masterpiece
+masterpieces
+masters
+mastership
+masterstroke
+masterwork
+mastery
+masthead
+mastic
+masticate
+mastication
+masticator
+mastiff
+mastodon
+mastoid
+masts
+masturbate
+masturbated
+masturbates
+masturbating
+masturbation
+masturbatory
+mat
+matador
+match
+match-box
+match-maker
+matchable
+matchbook
+matchbox
+matched
+matcher
+matchers
+matches
+matching
+matchings
+matchless
+matchlock
+matchmaker
+matchmaking
+matchstick
+matchwood
+mate
+mated
+Mateo
+mater
+material
+materialise
+materialism
+materialist
+materialistic
+materialistically
+materialization
+materialize
+materialized
+materializes
+materializing
+materially
+materials
+materiel
+maternal
+maternally
+maternity
+mates
+math
+mathematic
+Mathematica
+mathematical
+mathematically
+mathematician
+mathematicians
+mathematics
+Mathematik
+Mathewson
+Mathias
+Mathieu
+Matilda
+matinee
+mating
+matings
+matins
+Matisse
+Matisses
+matriarch
+matriarchal
+matriarchy
+matrices
+matricidal
+matricide
+matriculate
+matriculation
+matrimonial
+matrimony
+matrix
+matroid
+matron
+matronly
+mats
+Matson
+Matsumoto
+matte
+matted
+matter
+matter-of-fact
+matter-of-factly
+matter-of-factness
+mattered
+Matterhorn
+matters
+Matthew
+Matthews
+Mattie
+matting
+mattins
+mattock
+mattress
+mattresses
+Mattson
+maturate
+maturation
+mature
+matured
+maturely
+matures
+maturing
+maturities
+maturity
+matutinal
+matzo
+matzot
+matzoth
+Maude
+maudlin
+mauger
+Maui
+maul
+mauler
+maulstick
+maunder
+Maupassant
+Maureen
+Maurice
+Mauricio
+Maurine
+Mauritania
+Mauritanian
+Mauritian
+Mauritius
+mausolea
+mausoleum
+mauve
+maven
+maverick
+mavin
+mavis
+maw
+mawkish
+mawkishly
+mawkishness
+Mawr
+maxi
+maxilla
+maxillae
+maxillary
+maxim
+maxima
+maximal
+maximally
+Maximilian
+maximization
+maximize
+maximized
+maximizer
+maximizers
+maximizes
+maximizing
+maxims
+maximum
+maximums
+Maxine
+Maxtor
+Maxwell
+Maxwellian
+may
+may-pole
+Maya
+Mayan
+Mayans
+maybe
+mayday
+Mayence
+Mayer
+Mayfair
+mayfly
+mayhap
+mayhem
+mayn't
+Maynard
+mayonnaise
+mayor
+mayoral
+mayoralty
+mayoress
+mayors
+maypole
+mayst
+mayweed
+Mazda
+maze
+mazes
+mazourka
+Mazovia
+Mazuria
+mazurka
+mazy
+MB
+MBA
+Mbabane
+MC
+McAdam
+McAdams
+McAllister
+McBride
+McCabe
+McCall
+McCallum
+McCann
+McCarthy
+McCarty
+McCauley
+McClain
+McClellan
+McClure
+McCluskey
+McConnel
+McConnell
+McCormick
+McCoy
+McCracken
+McCullough
+McDaniel
+McDermott
+McDonald
+McDonnell
+McDougall
+McDowell
+McElhaney
+McElroy
+McFadden
+McFarland
+McGee
+McGill
+McGinnis
+McGovern
+McGowan
+McGrath
+McGraw
+McGregor
+McGuire
+McHugh
+McIntosh
+McIntyre
+McKay
+McKee
+McKenna
+McKenzie
+McKeon
+McKesson
+McKinley
+McKinney
+McKnight
+McLanahan
+McLaughlin
+McLean
+McLeod
+McMahon
+McMartin
+McMillan
+McMullen
+McNally
+McNaughton
+McNeil
+McNulty
+McPherson
+me
+mead
+Meade
+meadow
+meadow-brown
+meadow-sweet
+meadowlark
+meadows
+meager
+meagerly
+meagerness
+meagre
+meal
+mealiness
+meals
+mealtime
+mealy
+mealy-mouthed
+mealybug
+mealymouthed
+mean
+mean-born
+meander
+meandered
+meandering
+meanderings
+meanders
+meaner
+meanest
+meanie
+meaning
+meaningful
+meaningfully
+meaningfulness
+meaningless
+meaninglessly
+meaninglessness
+meanings
+meanly
+meanness
+means
+meant
+meantime
+meanwhile
+meany
+measle
+measles
+measly
+measurable
+measurably
+measurand
+measure
+measured
+measureless
+measurement
+measurements
+measurer
+measures
+measuring
+meat
+meat-market
+meat-sausage
+meatball
+meatchopper
+meatiness
+meatless
+meatloaf
+meatpacking
+meats
+meaty
+mechanic
+mechanical
+mechanically
+mechanician
+mechanics
+mechanism
+mechanisms
+mechanistic
+mechanistically
+mechanization
+mechanizations
+mechanize
+mechanized
+mechanizes
+mechanizing
+MED
+medal
+medalist
+medallion
+medallions
+medallist
+medals
+Medan
+meddle
+meddled
+meddler
+meddles
+meddlesome
+meddling
+Medea
+Medellin
+Medfield
+Medford
+media
+mediaeval
+medial
+medially
+median
+medians
+mediate
+mediated
+mediates
+mediating
+mediation
+mediations
+mediator
+medic
+Medicaid
+medical
+medically
+medicament
+medicaments
+Medicare
+medicate
+medicated
+medication
+Medici
+medicinal
+medicinally
+medicine
+medicine-man
+medicines
+Medicis
+medico
+medics
+medieval
+medievalist
+mediocre
+mediocrity
+meditate
+meditated
+meditates
+meditating
+meditation
+meditations
+meditative
+meditatively
+Mediterranean
+Mediterraneanization
+Mediterraneanizations
+Mediterraneanize
+Mediterraneanizes
+medium
+medium-done
+mediums
+medlar
+MEDLARS
+medley
+MEDLINE
+medulla
+medullae
+medullary
+Medusa
+Medusan
+meed
+meek
+meeker
+meekest
+meekly
+meekness
+meerschaum
+meet
+meeting
+meeting-house
+meeting-place
+meeting-point
+meetinghouse
+meetings
+meets
+Meg
+mega
+megabaud
+megabit
+megabits
+megabucks
+megabyte
+megabytes
+megacycle
+megadeath
+megaflops
+megahertz
+megalith
+megalithic
+megalomania
+megalomaniac
+megalopolis
+megaminicomputer
+megaphone
+megaton
+megavolt
+megawatt
+megaword
+megawords
+megohm
+megrim
+Meier
+Meiji
+meiosis
+meiotic
+Meir
+Meister
+Meistersinger
+Mekong
+Mel
+melamine
+Melampus
+melancholia
+melancholic
+melancholy
+Melanesia
+Melanesian
+melange
+Melanie
+melanin
+melanoma
+melanomata
+Melbourne
+Melcher
+meld
+melee
+Melinda
+meliorate
+melioration
+meliorative
+Melisande
+Melissa
+melliferous
+mellifluent
+mellifluous
+mellifluously
+mellifluousness
+Mellon
+mellow
+mellowed
+mellowing
+mellowly
+mellowness
+mellows
+melodic
+melodically
+melodies
+melodious
+melodiously
+melodiousness
+melodrama
+melodramas
+melodramatic
+melodramatically
+melodramatics
+melody
+melon
+melons
+Melpomene
+melt
+meltdown
+melted
+melting
+melting-house
+melting-iron
+melting-pot
+meltingly
+melts
+Melville
+Melvin
+mele
+member
+members
+membership
+memberships
+membrane
+membranous
+memento
+memo
+memoir
+memoirs
+memorabilia
+memorability
+memorable
+memorableness
+memorably
+memoranda
+memorandum
+memorial
+memorialize
+memorially
+memorials
+memories
+memorization
+memorize
+memorized
+memorizer
+memorizes
+memorizing
+memory
+memoryless
+memos
+Memphis
+men
+men-of-war
+menace
+menaced
+menacing
+menacingly
+menage
+menagerie
+menarche
+Mencken
+mend
+mendacious
+mendaciously
+mendacity
+mended
+Mendel
+mendelevium
+Mendelian
+Mendelize
+Mendelizes
+Mendelssohn
+mender
+mendicancy
+mendicant
+mending
+Mendoza
+mends
+Menelaus
+menfolk
+menfolks
+menhaden
+menial
+menially
+menials
+meningeal
+meninges
+meningitis
+meninx
+menisci
+meniscus
+Menlo
+Mennonite
+Mennonites
+Menominee
+menopausal
+menopause
+menorah
+Menorca
+Menotti
+mens
+menservants
+menses
+menshevik
+menstrual
+menstruate
+menstruation
+mensurable
+mensuration
+menswear
+mental
+mentalist
+mentalities
+mentality
+mentally
+menthol
+mentholated
+mention
+mentionable
+mentioned
+mentioner
+mentioners
+mentioning
+mentions
+mentor
+mentors
+menu
+menus
+Menzies
+mens
+meow
+Mephistopheles
+mephitic
+mercantile
+Mercator
+Mercedes
+mercenaries
+mercenariness
+mercenary
+mercer
+mercerize
+mercery
+merchandise
+merchandiser
+merchandising
+merchandize
+merchant
+merchantable
+merchantman
+merchants
+merchantship
+merciful
+mercifully
+merciless
+mercilessly
+mercilessness
+Merck
+mercurial
+mercurially
+mercuric
+mercury
+mercy
+mere
+Meredith
+merely
+merest
+meretricious
+meretriciously
+meretriciousness
+merganser
+merge
+merge-match
+merged
+merger
+mergers
+merges
+merging
+meridian
+meridional
+meringue
+merino
+merit
+merited
+meriting
+meritocracy
+meritorious
+meritoriously
+meritoriousness
+merits
+Meriwether
+Merle
+merlin
+mermaid
+merman
+Merriam
+Merrick
+merriest
+Merrill
+merrily
+Merrimac
+Merrimack
+merriment
+merriness
+Merritt
+merry
+merry-andrew
+merry-go-round
+merry-go-rounds
+merry-making
+Merrymake
+merrymaker
+merrymaking
+Mervin
+mescal
+mescaline
+mesdames
+mesdemoiselles
+meseems
+mesh
+mesh-work
+Meshed
+meshes
+meshuga
+meshugga
+mesmerism
+mesmerize
+mesmerizer
+mesmerizing
+mesne
+Mesolithic
+mesomorph
+meson
+Mesopotamia
+Mesopotamian
+mesosphere
+mesothelioma
+Mesozoic
+mesquit
+mesquite
+mess
+mess-mate
+mess-tin
+message
+messages
+messaging
+messed
+messeigneurs
+messenger
+messengers
+messes
+Messiah
+messiahs
+messier
+messiest
+messieurs
+messily
+messiness
+messing
+messmate
+Messrs.
+messuage
+messy
+mestizo
+met
+meta
+metabolic
+metabolically
+metabolism
+metabolite
+metabolize
+metacarpal
+metacarpi
+metacarpus
+metacircular
+metacircularity
+metadata
+metafile
+metagraphy
+metaimplementation
+metainformation
+metal
+metalanguage
+metalinguistics
+metallic
+metallization
+metallizations
+metallography
+metallurgic
+metallurgical
+metallurgist
+metallurgy
+metals
+metalwork
+metalworker
+metalworking
+metamathematical
+metamorphic
+metamorphism
+metamorphose
+metamorphoses
+metamorphosis
+metaphor
+metaphoric
+metaphorical
+metaphorically
+metaphors
+metaphrase
+metaphysical
+metaphysically
+metaphysics
+metastases
+metastasis
+metastasize
+metastatic
+metasystem
+metatarsal
+metatarsi
+metatarsus
+metatheory
+metatheses
+metathesis
+metavariable
+Metcalf
+mete
+meted
+metempsychoses
+metempsychosis
+meteor
+meteoric
+meteorically
+meteorite
+meteoritic
+meteoroid
+meteorologic
+meteorological
+meteorologist
+meteorology
+meteors
+meter
+meter-kilogram-second
+metering
+meters
+metes
+methadon
+methadone
+methane
+methanol
+methinks
+method
+methodical
+methodically
+methodicalness
+methodics
+Methodism
+methodist
+methodists
+methodological
+methodologically
+methodologies
+methodologists
+methodology
+methods
+methought
+Methuen
+Methuselah
+Methuselahs
+methyl
+meticulous
+meticulously
+meticulousness
+metier
+meting
+metonymy
+metre
+Metrecal
+metric
+metrical
+metrically
+metricate
+metrication
+metricize
+metrics
+metro
+metronome
+metropolis
+metropolitan
+mets
+mettle
+mettlesome
+Metzler
+mew
+mewed
+mewl
+mews
+Mex
+Mexican
+Mexicanize
+Mexicanizes
+Mexicans
+Mexico
+Meyer
+Meyers
+mezzanine
+mezzo
+mezzo-soprano
+mezzotint
+MFA
+mg
+MHz
+MIA
+Miami
+miaow
+miasma
+miasmata
+mica
+mice
+Mich
+Michael
+Michaelmas
+Michaels
+Michel
+Michelangelo
+Michele
+Michelin
+Michelson
+Michigan
+Michigander
+Michiganite
+michurinism
+michurinist
+Mick
+Mickie
+Micky
+MICR
+micra
+micro
+micro-opaque
+microarchitects
+microarchitecture
+microarchitectures
+microbe
+microbial
+microbicidal
+microbicide
+microbiological
+microbiologist
+microbiology
+microbrewery
+microcard
+microchip
+microcircuit
+microcode
+microcoded
+microcodes
+microcoding
+microcomputer
+microcomputers
+microcopy
+microcopying
+microcosm
+microcosmic
+microcycle
+microcycles
+microdocuments
+microdot
+microeconomics
+microelectronic
+microelectronics
+microevaluation
+microfiber
+microfiche
+microfile
+microfilm
+microfilmer
+microfilming
+microfilms
+microfloppy
+microform
+microglossary
+microgramming
+micrographics
+microgroove
+microimage
+microinstruction
+microinstructions
+microjacket
+microjump
+microjumps
+microlevel
+microlight
+micromainframe
+micromanage
+micromanagement
+micromation
+micrometeorite
+micrometer
+micromini
+microminiaturization
+micron
+Micronesia
+Micronesian
+micronized
+microopaque
+microoperations
+microorganism
+microphone
+microphones
+microphoning
+microphotography
+microplanfilm
+microplate
+Microport
+microprinter
+microprocedure
+microprocedures
+microprocessing
+microprocessor
+microprocessors
+microprogram
+microprogrammable
+microprogrammed
+microprogrammer
+microprogramming
+microprograms
+micropublishing
+microroutine
+micros
+microscope
+microscopes
+microscopic
+microscopical
+microscopically
+microscopy
+microsecond
+microseconds
+microsheet
+microsoft
+microstorage
+microstore
+microstructure
+microsurgery
+microsystem
+microsystems
+microtext
+microthesaurus
+MicroVAX
+MicroVAXes
+microwavable
+microwave
+microwaveable
+microwaves
+microword
+microwords
+mid
+mid-ship
+midair
+Midas
+midday
+midden
+middle
+middle-aged
+middle-class
+middle-of-the-road
+middle-of-the-roader
+middle-sized
+middlebrow
+Middlebury
+middleman
+middlemen
+middlemost
+middles
+Middlesex
+Middleton
+Middletown
+middleweight
+middling
+middy
+Mideast
+Mideastern
+midge
+midget
+midi
+midland
+Midlandize
+Midlandizes
+Midlands
+midlife
+midmost
+midnight
+midnights
+midnoon
+midpoint
+midpoints
+midrange
+midrib
+midriff
+midscale
+midsection
+midshipman
+midshipmen
+midships
+midst
+midstream
+midsts
+midsummer
+midterm
+midtown
+midway
+midweek
+Midwest
+Midwestern
+Midwesterner
+Midwesterners
+midwife
+midwifery
+midwinter
+midwives
+midyear
+mien
+miff
+miffed
+miffy
+might
+mightier
+mightiest
+mightily
+mightiness
+mightn't
+mighty
+mignon
+mignonette
+migraine
+migrant
+migrate
+migrated
+migrates
+migrating
+migration
+migrations
+migratory
+migs
+Miguel
+mikado
+mike
+Mikhail
+Mikoyan
+mil
+milady
+milage
+Milan
+Milanese
+milch
+mild
+milder
+mildest
+mildew
+mildly
+mildness
+Mildred
+mile
+mileage
+milepost
+miler
+Miles
+milestone
+milestones
+milfoil
+milieu
+milieux
+milimeter
+militancy
+militant
+militantly
+militarily
+militarism
+militarist
+militaristic
+militarization
+militarize
+military
+militate
+militia
+militiaman
+milk
+milked
+milker
+milkers
+milkiness
+milking
+milklivered
+milkmaid
+milkmaids
+milkman
+milkpan
+milks
+milkshake
+milksop
+milktooth
+milkweed
+milky
+mill
+mill-board
+mill-race
+mill-stone
+mill-wheel
+millage
+Millard
+Millay
+millboard
+milled
+millennia
+millennial
+millennium
+millepede
+miller
+millesimal
+millet
+milliammeter
+milliampere
+milliard
+millibar
+millibyte
+Millie
+milligram
+millijoule
+Millikan
+milliliter
+millilitre
+millimeter
+millimeters
+millimetre
+millimicrosecond
+milliner
+milliner's
+millinery
+milling
+Millington
+million
+millionaire
+millionaires
+millionnaire
+millions
+millionth
+millipede
+millipedes
+millisecond
+milliseconds
+millivolt
+millivoltmeter
+milliwatt
+millpond
+millrace
+mills
+millstone
+millstones
+millstream
+millwright
+Milne
+milquetoast
+Milquetoasts
+milt
+milter
+Milton
+Miltonian
+Miltonic
+Miltonism
+Miltonist
+Miltonize
+Miltonized
+Miltonizes
+Miltonizing
+Milwaukee
+mime
+mimeograph
+mimetic
+Mimi
+mimic
+mimicked
+mimicker
+mimicking
+mimicry
+mimics
+mimosa
+minaret
+minatory
+mince
+minced
+mincemeat
+mincer
+minces
+mincing
+mind
+mind-bending
+mind-blowing
+mind-body
+mind-boggling
+mind-read
+mind-set
+Mindanao
+minded
+mindful
+mindfully
+mindfulness
+minding
+mindless
+mindlessly
+mindlessness
+minds
+mindset
+mine
+mine-sweeper
+mined
+minefield
+miner
+mineral
+mineralized
+mineralogical
+mineralogist
+mineralogy
+minerals
+miners
+Minerva
+mines
+minestrone
+minesweeper
+mingle
+mingled
+mingles
+mingling
+mini
+mini-cassette
+miniate
+miniature
+miniatures
+miniaturist
+miniaturization
+miniaturize
+miniaturized
+miniaturizes
+miniaturizing
+minibike
+minibus
+minicam
+minicomputer
+minicomputers
+minidisk
+minifile
+minifloppy
+minikin
+minim
+minima
+minimal
+minimalism
+minimalist
+minimally
+minimax
+minimization
+minimizations
+minimize
+minimized
+minimizer
+minimizers
+minimizes
+minimizing
+minimum
+mining
+minion
+minis
+miniscule
+miniseries
+miniskirt
+minister
+ministered
+ministerial
+ministering
+ministers
+ministrant
+ministration
+ministries
+ministry
+MINITEL
+minivan
+mink
+minks
+Minn
+Minneapolis
+minnesinger
+Minnesota
+Minnesotan
+Minnie
+minnow
+minnows
+Minoan
+minor
+minor-league
+minoring
+minorities
+minority
+minors
+Minos
+Minotaur
+minoxidil
+Minsk
+Minsky
+minster
+minstrel
+minstrels
+minstrelsy
+mint
+mintage
+minted
+minter
+minting
+mints
+minty
+minuend
+minuet
+Minuit
+minus
+minuscule
+minute
+minute-hand
+minutely
+minutemen
+minuteness
+minuter
+minutes
+minutia
+minutiae
+minx
+Miocene
+Mips
+Mira
+miracle
+miracles
+miraculous
+miraculously
+mirage
+Miranda
+mire
+mired
+mires
+Mirfak
+Miriam
+Miro
+mirror
+mirrored
+mirroring
+mirrors
+mirth
+mirthful
+mirthfully
+mirthfulness
+mirthless
+mirthlessly
+MIRV
+miry
+MIS
+misaddress
+misadventure
+misaligned
+misalignment
+misalliance
+misanthrope
+misanthropic
+misanthropically
+misanthropist
+misanthropy
+misapplication
+misapply
+misapprehend
+misapprehension
+misappropriate
+misappropriation
+misbecoming
+misbegotten
+misbehave
+misbehaving
+misbehavior
+misbehaviour
+misbeliever
+misbranding
+miscalculate
+miscalculation
+miscalculations
+miscall
+miscarriage
+miscarry
+miscast
+miscegenation
+miscellanea
+miscellaneous
+miscellaneously
+miscellaneousness
+miscellany
+mischance
+mischief
+mischievous
+mischievously
+mischievousness
+miscibility
+miscible
+misconceive
+misconceived
+misconception
+misconceptions
+misconduct
+misconstruction
+misconstrue
+misconstrued
+misconstrues
+miscount
+miscreant
+miscue
+misdeal
+misdealt
+misdeed
+misdemeanor
+misdemeanors
+misdemeanour
+misdiagnose
+misdirect
+misdirection
+misdivision
+misdo
+misdoer
+misdoing
+misdoubt
+mise-en-scene
+misease
+misentry
+miser
+miserable
+miserableness
+miserably
+miseries
+miserliness
+miserly
+misers
+misery
+misfeasance
+misfile
+misfire
+misfit
+misfits
+misfortune
+misfortunes
+misgive
+misgiving
+misgivings
+misgovern
+misgovernment
+misguidance
+misguide
+misguided
+misguidedly
+mishandle
+mishap
+mishaps
+mishear
+misheard
+mishmash
+misinform
+misinformation
+misinformed
+misinterpret
+misinterpretation
+misjudge
+misjudged
+misjudgment
+miskeying
+mislabel
+mislaid
+mislay
+mislead
+misleading
+misleadingly
+misleads
+misled
+mismanage
+mismanagement
+mismatch
+mismatched
+mismatches
+mismatching
+misname
+misneed
+misnomer
+misnumber
+misogamist
+misogamy
+misogynist
+misogynistic
+misogynous
+misogyny
+misplace
+misplaced
+misplacement
+misplaces
+misplacing
+misplay
+misprint
+misprision
+misprogram
+mispronounce
+mispronunciation
+misquotation
+misquote
+misread
+misreading
+misreport
+misrepresent
+misrepresentation
+misrepresentations
+misrule
+miss
+missal
+missed
+misses
+misshape
+misshapen
+missile
+missilery
+missiles
+missilry
+missing
+mission
+missionaries
+missionary
+missioner
+missions
+missis
+Mississauga
+Mississippi
+Mississippian
+Mississippians
+missive
+missort
+Missoula
+Missouri
+Missourian
+misspeak
+misspell
+misspelled
+misspelling
+misspellings
+misspells
+misspelt
+misspend
+misspent
+misstate
+misstatement
+misstep
+missus
+Missy
+mist
+mistakable
+mistake
+mistake-free
+mistaken
+mistakenly
+mistakes
+mistaking
+misted
+mister
+misters
+mistily
+mistime
+mistiness
+misting
+mistletoe
+mistook
+mistral
+mistreat
+mistreatment
+mistress
+mistrial
+mistrust
+mistrusted
+mistrustful
+mistrustfully
+mists
+misty
+mistype
+mistyped
+mistypes
+mistyping
+misunderstand
+misunderstander
+misunderstanders
+misunderstanding
+misunderstandings
+misunderstood
+misusage
+misuse
+misused
+misuses
+misusing
+misvalue
+Mitch
+Mitchell
+mite
+miter
+mitigable
+mitigate
+mitigated
+mitigates
+mitigating
+mitigation
+mitigative
+mitney
+mitoses
+mitosis
+mitotic
+mitre
+MITREs
+mitt
+mitten
+mittens
+mix
+mix-up
+mixable
+mixed
+mixed-up
+mixer
+mixers
+mixes
+mixing
+mixture
+mixtures
+mixup
+mixware
+Mizar
+mizzen
+mizzenmast
+mizzle
+Mk
+Mlle
+mm
+mnemonic
+mnemonically
+mnemonics
+MNTR
+moan
+moaned
+moaner
+moans
+moat
+moats
+mob
+Mobil
+mobile
+mobility
+mobilization
+mobilize
+mobilizer
+mobs
+mobster
+moccasin
+moccasins
+mocha
+mock
+mock-up
+mocked
+mocker
+mockery
+mocking
+mocking-bird
+mockingbird
+mockingly
+mocks
+mockup
+MOCR
+mocturnal
+mod
+modal
+modalities
+modality
+modally
+mode
+model
+modeled
+modeler
+modeling
+modelings
+models
+modem
+modems
+moderate
+moderated
+moderately
+moderateness
+moderates
+moderating
+moderation
+moderator
+modern
+modernism
+modernist
+modernistic
+modernity
+modernization
+modernize
+modernized
+modernizer
+modernizing
+modernly
+modernness
+moderns
+modes
+modest
+modestly
+Modesto
+modesty
+modicum
+modifiability
+modifiable
+modification
+modifications
+modified
+modifier
+modifiers
+modifies
+modify
+modifying
+Modigliani
+modish
+modishly
+modishness
+Modula
+Modula-2
+Modula-3
+modulant
+modular
+modularity
+modularization
+modularize
+modularized
+modularizes
+modularizing
+modularly
+modulate
+modulated
+modulates
+modulating
+modulation
+modulations
+modulator
+modulators
+module
+modules
+moduli
+modulo
+modulus
+modus
+Moe
+Moen
+Mogadiscio
+Mogadishu
+Moghul
+mohair
+Mohammed
+Mohammedan
+Mohammedanism
+Mohammedanization
+Mohammedanizations
+Mohammedanize
+Mohammedanizes
+Mohawk
+Mohegan
+Mohican
+Mohr
+moiety
+moil
+Moines
+moire
+Moiseyev
+moist
+moisten
+moistener
+moistly
+moistness
+moisture
+moisturize
+moisturizer
+moje
+molar
+molasses
+mold
+Moldavia
+Moldavian
+moldboard
+molded
+molder
+moldiness
+molding
+Moldova
+molds
+moldy
+mole
+mole-hill
+mole-skin
+molecular
+molecularity
+molecule
+molecules
+molehill
+moles
+moleskin
+molest
+molestation
+molested
+molester
+molesting
+molests
+Moliere
+Moline
+Mollie
+mollification
+mollify
+mollusc
+molluscan
+mollusk
+molluskan
+mollycoddle
+Moloch
+Molochize
+Molochizes
+Molokai
+Molotov
+molt
+molten
+molter
+Moluccas
+molybdenum
+mom
+mom-and-pop
+moment
+momenta
+momentarily
+momentariness
+momentary
+momentous
+momentously
+momentousness
+moments
+momentum
+momma
+mommie
+mommy
+momzer
+Mon
+mon-de-plume
+Mona
+Monaco
+monadic
+monarch
+monarchic
+monarchical
+monarchies
+monarchism
+monarchist
+monarchistic
+monarchs
+monarchy
+Monash
+monasteries
+monastery
+monastic
+monastical
+monastically
+monasticism
+monaural
+Monday
+Mondays
+Mondrian
+Monegasque
+Monet
+monetarily
+monetarism
+monetarist
+monetary
+monetize
+money
+money-bag
+money-box
+money-grubber
+money-grubbing
+money-lender
+money-market
+money-order
+money-value
+moneybag
+moneybags
+moneyed
+moneygrubber
+moneygrubbing
+moneylender
+moneymaker
+moneymaking
+moneys
+Monfort
+monger
+Mongol
+Mongolia
+Mongolian
+Mongolianism
+mongolic
+mongolism
+mongoose
+mongrel
+Monica
+monicker
+monied
+monies
+moniker
+monism
+monist
+monition
+monitor
+monitored
+monitoring
+monitors
+monitory
+monk
+monkey
+monkey-jacket
+monkey-wrench
+monkeyed
+monkeying
+monkeys
+monkeyshine
+monkeyshines
+monkhood
+monkish
+monks
+monkshood
+Monmouth
+mono
+mono-hierarchy
+monoalphabetic
+monobath
+Monoceros
+monochord
+monochromatic
+monochrome
+monocle
+monocled
+monoclonal
+monocotyledon
+monocotyledonous
+monocular
+monodic
+monodist
+monody
+monogamist
+monogamous
+monogamously
+monogamy
+monoglot
+monogram
+monogrammed
+monograms
+monograph
+monographes
+monographs
+monokini
+monolingual
+monolith
+monolithic
+monolog
+monologist
+monologue
+monologuist
+monomania
+monomaniac
+monomaniacal
+monomer
+Monongahela
+mononucleosis
+monophonic
+monophthong
+monoplane
+monopolies
+monopolist
+monopolistic
+monopolization
+monopolize
+monopolized
+monopolizer
+monopolizing
+monopoly
+monoprogrammed
+monoprogramming
+monorail
+monosemy
+monostable
+monosyllabic
+monosyllable
+monotheism
+monotheist
+monotheistic
+monotone
+monotonic
+monotonically
+monotonicity
+monotonous
+monotonously
+monotonousness
+monotony
+monoxide
+Monroe
+Monrovia
+Monsanto
+monseigneur
+monsieur
+monsignori
+monsoon
+monsoonal
+monster
+monsters
+monstrance
+monstrosity
+monstrous
+monstrously
+Mont
+montage
+Montague
+Montaigne
+Montana
+Montanan
+Montclair
+Montenegrin
+Montenegro
+Monterey
+Monterrey
+Montessori
+Monteverdi
+Montevideo
+Montezuma
+Montgomery
+month
+monthly
+months
+Monticello
+Montmartre
+Montpelier
+Montrachet
+Montreal
+Monty
+monument
+monumental
+monumentally
+monuments
+moo
+mooch
+moocher
+mood
+moodily
+moodiness
+moods
+moody
+moon
+moonbeam
+mooncalf
+mooned
+Mooney
+moonfall
+mooning
+moonless
+moonlight
+moonlighter
+moonlighting
+Moonlike
+moonlit
+moonrise
+moons
+moonscape
+moonset
+moonshine
+moonshiner
+moonshot
+moonstone
+moonstruck
+moonwalk
+moony
+moor
+moor-cock
+moor-game
+moor-hen
+moorage
+Moore
+moored
+mooring
+moorings
+Moorish
+moorland
+Moors
+moose
+moot
+mop
+mope
+moped
+moper
+mopey
+mopish
+moppet
+mopping-up
+mops
+mopy
+moraine
+moral
+morale
+moralist
+moralistic
+moralistically
+moralities
+morality
+moralization
+moralize
+moralizer
+morally
+morals
+Moran
+morass
+moratoria
+moratorium
+Moravia
+Moravian
+Moravianized
+Moravianizeds
+moray
+morbid
+morbidity
+morbidly
+morbidness
+mordancy
+mordant
+mordantly
+more
+Morehouse
+morel
+Moreland
+moreover
+mores
+Moresby
+Morgan
+morgue
+Moriarty
+moribund
+mork
+Morley
+Mormon
+Mormonism
+morn
+morning
+mornings
+morningstar
+Moroccan
+morocco
+morocco-lined
+moron
+Moroni
+moronic
+moronically
+morose
+morosely
+moroseness
+morph
+morpheme
+morphemic
+morphemics
+morphia
+morphine
+morphing
+morphism
+morphisms
+morphological
+morphology
+Morrill
+Morris
+Morrison
+Morrissey
+Morristown
+morrow
+morse
+morsel
+morsels
+mortal
+mortality
+mortally
+mortals
+mortar
+mortarboard
+mortared
+mortaring
+mortars
+mortem
+mortgage
+mortgagee
+mortgager
+mortgages
+mortgagor
+mortice
+mortician
+mortification
+mortified
+mortifier
+mortifies
+mortify
+mortifying
+Mortimer
+mortise
+Morton
+mortuary
+MOS
+mosaic
+Mosaical
+mosaics
+Moscone
+Moscow
+Moser
+Moses
+mosey
+Moslem
+Moslemize
+Moslemizes
+Moslems
+mosque
+mosquito
+mosquitoes
+moss
+moss-grown
+mossback
+Mossberg
+mosses
+mossy
+most
+mostly
+mot
+mot-case
+mote
+motel
+motels
+motet
+moth
+moth-eaten
+mothball
+mothballs
+mother
+mother-in-law
+mother-of-pearl
+motherboard
+mothered
+motherer
+motherers
+motherfucker
+motherfucking
+motherhood
+mothering
+motherland
+motherless
+motherliness
+motherly
+mothers
+mothers-in-law
+mothy
+motif
+motifs
+motile
+motility
+motion
+motioned
+motioning
+motionless
+motionlessly
+motionlessness
+motions
+motivate
+motivated
+motivates
+motivating
+motivation
+motivational
+motivations
+motivator
+motive
+motiveless
+motives
+motley
+motocross
+motor
+motor-boat
+motor-car
+motor-coach
+motor-cycle
+motor-drive
+motor-saw
+motorbike
+motorboat
+motorcade
+motorcar
+motorcars
+motorcycle
+motorcycles
+motorcyclist
+motored
+motoring
+motorist
+motorists
+motorization
+motorize
+motorized
+motorizes
+motorizing
+motorman
+motormouth
+Motorola
+motorway
+Mott
+mottle
+mottled
+motto
+mottoes
+mouch
+moue
+moujik
+mould
+moulder
+moulding
+mouldy
+moult
+Moulton
+mound
+mounded
+mounds
+mount
+mountable
+mountain
+mountaineer
+mountaineering
+mountaineers
+mountainous
+mountainously
+mountains
+mountainside
+mountaintop
+mountebank
+mounted
+mounter
+Mountie
+mounting
+mountings
+mounts
+mourn
+mourned
+mourner
+mourners
+mournful
+mournfully
+mournfulness
+mourning
+mourns
+mouse
+mouse-ear
+mouser
+mouses
+mousetrap
+mousey
+mousiness
+mousse
+moustache
+moustaches
+mousy
+mouth
+mouth-organ
+mouth-watering
+Mouthe
+mouthed
+mouther
+mouthes
+mouthful
+mouthiness
+mouthing
+mouthpiece
+mouths
+mouthwash
+mouthwatering
+mouthy
+movable
+move
+moveable
+moved
+movement
+movements
+mover
+movers
+moves
+movie
+movie-camera
+moviegoer
+movies
+moving
+movingly
+movings
+mow
+mowed
+mower
+mown
+mows
+moxie
+Moyer
+Mozambican
+Mozambique
+Mozart
+mozzarella
+MP
+Mr.
+MRI
+Mrs
+Mrs.
+MS
+MS-DOS
+MSCAN
+MSG
+MSI
+MST
+MSW
+mu
+much
+mucilage
+mucilaginous
+muck
+muckamuck
+mucker
+mucking
+muckrake
+muckraker
+muckraking
+mucky
+mucous
+mucus
+mud
+mud-guard
+mud-head
+Mudd
+muddied
+muddily
+muddiness
+muddle
+muddle-headed
+muddled
+muddlehead
+muddleheaded
+muddler
+muddler-through
+muddlers
+muddles
+muddling
+muddy
+mudflat
+mudguard
+mudguards
+mudroom
+mudslide
+mudslinger
+mudslinging
+Mueller
+muezzin
+muff
+muffin
+muffins
+muffle
+muffled
+muffler
+muffles
+muffling
+muffs
+mufti
+mug
+mugger
+mugginess
+mugging
+muggy
+mugs
+mugshot
+mugwump
+Muhammad
+Muhammadan
+Muhammadanism
+Muir
+mujahedin
+mujik
+Mukden
+mukluk
+mulatto
+mulberries
+mulberry
+mulch
+mulct
+mule
+mules
+muleskinner
+muleteer
+mulish
+mulishly
+mulishness
+mull
+mullah
+mullein
+Mullen
+mullet
+mulligan
+mulligatawny
+mulligrubs
+mullion
+mullioned
+Multan
+multi
+multi-access
+multi-engined
+multi-farious
+multi-player
+multibit
+Multibus
+multibyte
+multicalling
+multicast
+multicasting
+multicasts
+multicellular
+multichannel
+multicolored
+multicomputer
+multiconnection
+multicultural
+multiculturalism
+multidigit
+multidimensional
+multidisciplinary
+multifaceted
+multifamily
+multifarious
+multifariously
+multifariousness
+multifid
+multifile
+multifold
+multiform
+multijobbing
+multilateral
+multilaterally
+multilayer
+multilayered
+multilevel
+multilicence
+multilingual
+multilingualism
+multilink
+multimedia
+multimillionaire
+multinational
+multinomial
+multipede
+multiple
+multiple-choice
+multiple-journey
+multiples
+multiplex
+multiplex-precision
+multiplexed
+multiplexer
+multiplexers
+multiplexes
+multiplexing
+multiplexor
+multiplexors
+multiplicand
+multiplicands
+multiplication
+multiplications
+multiplicative
+multiplicatives
+multiplicity
+multiplied
+multiplier
+multipliers
+multiplies
+multiply
+multiplying
+multiport
+multiprocess
+multiprocessing
+multiprocessor
+multiprocessors
+multiprogram
+multiprogrammed
+multiprogramming
+multipunching
+multipurpose
+multiqueue
+multiracial
+multisafe
+multistage
+multistory
+multistructure
+multisystem
+multitasking
+multitrack
+multitude
+multitudes
+multitudinous
+multiuser
+multivalued
+multivariate
+multivitamin
+multivolume
+multiword
+mum
+mumble
+mumble-the-peg
+mumbled
+mumbler
+mumblers
+mumbles
+mumbletypeg
+mumbling
+mumblings
+mumbo-jumbo
+Mumford
+mummer
+mummery
+mummies
+mummification
+mummify
+mummy
+mumps
+munch
+munched
+munchies
+munching
+Muncie
+mundane
+mundanely
+Mundt
+mung
+Munich
+municipal
+municipalities
+municipality
+municipally
+munificence
+munificent
+munificently
+munition
+munitions
+Munroe
+Munsey
+Munson
+Munster
+Muong
+mural
+muralist
+Murcia
+murder
+murdered
+murderer
+murderers
+murderess
+murdering
+murderous
+murderously
+murders
+mure
+Muriel
+murk
+murkily
+murkiness
+murky
+Murmansk
+murmur
+murmured
+murmurer
+murmuring
+murmurous
+murmurs
+Murphy
+murrain
+Murray
+Murrow
+muscatel
+muscle
+muscle-bound
+musclebound
+muscled
+muscles
+muscling
+Muscovite
+Muscovy
+muscular
+muscularity
+muscularly
+musculature
+muse
+mused
+museography
+museology
+muses
+musette
+museum
+museums
+mush
+Mush!
+mushiness
+mushroom
+mushroomed
+mushrooming
+mushrooms
+mushy
+music
+music-hall
+music-master
+musical
+musicale
+musicality
+musically
+musicals
+musician
+musicianly
+musicians
+musicianship
+musicological
+musicologist
+musicology
+musing
+musingly
+musings
+musk
+muskeg
+Muskegon
+muskellunge
+musket
+musketeer
+musketry
+muskets
+muskie
+muskiness
+muskmelon
+muskox
+muskoxen
+muskrat
+muskrats
+musks
+musky
+Muslim
+Muslims
+muslin
+muss
+mussel
+mussels
+Mussolini
+Mussolinis
+Mussorgsky
+Mussulman
+mussy
+must
+mustache
+mustached
+mustaches
+mustachio
+mustang
+mustard
+muster
+mustily
+mustiness
+mustn't
+mustnt
+musts
+musty
+mutability
+mutable
+mutableness
+mutably
+mutagen
+mutandis
+mutant
+mutate
+mutated
+mutates
+mutating
+mutation
+mutational
+mutations
+mutatis
+mutative
+mute
+muted
+mutely
+muteness
+mutilate
+mutilated
+mutilates
+mutilating
+mutilation
+mutilator
+mutineer
+mutinies
+mutinous
+mutinously
+mutiny
+mutt
+mutter
+muttered
+mutterer
+mutterers
+muttering
+mutters
+mutton
+mutton-chop
+muttonchops
+muttonhead
+mutual
+mutuality
+mutually
+muumuu
+MUX
+Muzak
+muzhik
+muzjik
+Muzo
+muzzle
+muzzles
+muzzy
+MVP
+MW
+my
+Myanmar
+Mycenae
+Mycenaean
+mycologist
+mycology
+myelitis
+Myers
+Mylar
+myna
+mynah
+Mynheer
+myope
+myopia
+myopic
+myopically
+Myra
+myriad
+myrmidon
+Myron
+myrrh
+myrtle
+myself
+Mysore
+mysteries
+mysterious
+mysteriously
+mysteriousness
+mystery
+mystic
+mystical
+mystically
+mysticism
+mystics
+mystification
+mystify
+mystifying
+mystique
+myth
+mythic
+mythical
+mythological
+mythologies
+mythologist
+mythologize
+mythology
+N'Djamena
+N-protocol
+N/A
+NAACP
+nab
+Nabisco
+nabla
+nablas
+nabob
+Nabokov
+nacelle
+nacho
+nachos
+nacre
+nacreous
+Nadia
+Nadine
+nadir
+nae
+nag
+Nagasaki
+nagged
+nagger
+nagging
+Nagoya
+Nagpur
+nags
+Nagy
+Nahuatl
+naiad
+naiades
+nail
+nail-biter
+nailbrush
+nailed
+nailer
+nailing
+nails
+Nair
+Nairobi
+naive
+naively
+naiveness
+naivete
+naivety
+Nakamura
+Nakayama
+naked
+naked-micro
+nakedly
+nakedness
+Nakoma
+namby-pamby
+name
+name-calling
+name-day
+name-drop
+name-dropper
+name-dropping
+name-plate
+nameable
+named
+namedrop
+namedropping
+nameless
+namelessly
+namely
+nameplate
+namer
+namers
+names
+namesake
+namesakes
+Namibia
+Namibian
+naming
+Nan
+nance
+Nanchang
+Nancy
+Nanette
+Nanjing
+Nanking
+nanny
+nanny-goat
+nanocomputer
+nanoinstruction
+nanoinstructions
+Nanook
+nanoprocessor
+nanoprogram
+nanoprogramming
+nanosecond
+nanoseconds
+nanostore
+nanostores
+Nantucket
+Naomi
+nap
+napalm
+nape
+naphtha
+naphthalene
+napkin
+napkins
+Naples
+napless
+Napoleon
+Napoleonic
+Napoleonize
+Napoleonizes
+napoo
+napped
+napper
+nappies
+nappy
+naps
+Narbonne
+narc
+narcissi
+narcissism
+narcissist
+narcissistic
+narcissus
+narcoses
+narcosis
+narcotic
+narcotically
+narcotics
+narcotization
+narcotize
+narghile
+nargile
+nark
+narky
+Narragansett
+narrate
+narration
+narrative
+narratives
+narrator
+narrow
+narrow-gauge
+narrow-minded
+narrow-mindedly
+narrow-mindedness
+narrow-sighted
+narrowed
+narrower
+narrowest
+narrowing
+narrowly
+narrowness
+narrows
+narwhal
+nary
+NASA
+nasal
+nasality
+nasalization
+nasalize
+nasally
+NASAs
+nascence
+nascent
+Nash
+Nashua
+Nashville
+Nassau
+nastier
+nastiest
+nastily
+nastiness
+nasturtium
+nasty
+Nat
+natal
+Natalie
+natch
+Natchez
+Nate
+Nathan
+Nathaniel
+nation
+national
+nationalism
+nationalist
+nationalistic
+nationalistically
+nationalists
+nationalities
+nationality
+nationalization
+nationalize
+nationalized
+nationalizes
+nationalizing
+nationally
+nationals
+nationhood
+nations
+nationwide
+native
+native-born
+natively
+natives
+nativity
+NATO
+NATOs
+natter
+nattily
+nattiness
+natty
+natural
+naturalism
+naturalist
+naturalistic
+naturalization
+naturalize
+naturally
+naturalness
+naturals
+nature
+natured
+natures
+Naugahyde
+naught
+naughtier
+naughtily
+naughtiness
+naughty
+Naur
+Nauru
+nausea
+nauseate
+nauseated
+nauseating
+nauseatingly
+nauseous
+nauseousness
+nauseum
+nautical
+nautically
+nautili
+nautilus
+Navaho
+Navajo
+naval
+navally
+nave
+navel
+navies
+navigability
+navigable
+navigate
+navigated
+navigates
+navigating
+navigation
+navigational
+navigator
+navigators
+Navona
+navvy
+navy
+nay
+naysayer
+Nazarene
+Nazareth
+nazi
+Naziism
+Nazis
+nazism
+NBA
+NBC
+NBS
+NC
+NC-17
+NCAA
+NCO
+Ndjamena
+NE
+ne'er
+ne'er-do-well
+Neal
+Neanderthal
+neap
+Neapolitan
+near
+nearby
+neared
+nearer
+nearest
+nearing
+nearly
+nearness
+nearness-sighted
+nears
+nearsighted
+nearsightedly
+nearsightedness
+neat
+neaten
+neater
+neatest
+neath
+neatly
+neatness
+neb
+Nebr
+Nebraska
+Nebraskan
+Nebuchadnezzar
+nebula
+nebulae
+nebular
+nebulous
+nebulously
+nebulousness
+necessaries
+necessarily
+necessary
+necessitate
+necessitated
+necessitates
+necessitating
+necessitation
+necessities
+necessitous
+necessity
+neck
+neck-bearing
+neck-cloth
+necked
+neckerchief
+necking
+necklace
+necklaces
+necklet
+neckline
+necks
+necktie
+neckties
+necrology
+necromancer
+necromancy
+necropolis
+necroses
+necrosis
+necrotic
+nectar
+nectarine
+Ned
+nee
+need
+needed
+needful
+needfully
+Needham
+neediness
+needing
+needle
+needle-bearing
+needle-book
+needle-case
+needle-lace
+needle-point
+needled
+needleman
+needlepoint
+needler
+needlers
+needles
+needless
+needlessly
+needlessness
+needlewoman
+needlework
+needling
+needn't
+needs
+needy
+nefarious
+nefariously
+nefariousness
+negate
+negated
+negates
+negating
+negation
+negations
+negative
+negatively
+negativeness
+negatives
+negativism
+negativity
+negator
+negators
+negentropy
+neglect
+neglected
+neglectful
+neglectfully
+neglectfulness
+neglecting
+neglects
+neglige
+negligee
+negligence
+negligent
+negligently
+negligible
+negligibly
+negotiability
+negotiable
+negotiate
+negotiated
+negotiates
+negotiating
+negotiation
+negotiations
+negotiator
+negress
+negritude
+Negro
+Negroes
+Negroid
+Negroization
+Negroizations
+Negroize
+Negroizes
+Nehru
+neigh
+neighbor
+neighborhood
+neighborhoods
+neighboring
+neighborliness
+neighborly
+neighbors
+neighbour
+neighbourhood
+neighbouring
+neighbourly
+Neil
+neither
+Nell
+Nellie
+Nelsen
+nematode
+nemeses
+Nemesis
+Neo-Classicism
+neoclassic
+neoclassical
+neoclassicism
+neocolonialism
+neodymium
+neolithic
+neologism
+neon
+neonatal
+neonate
+neophyte
+neophytes
+neoplasm
+neoplastic
+neoprene
+Nepal
+Nepalese
+Nepali
+nepenthe
+nephew
+nephews
+nephrite
+nephritic
+nephritis
+nepotism
+nepotist
+Neptune
+neptunium
+nerd
+nerdy
+Nero
+nerve
+nerve-centre
+nerve-racking
+nerve-wracking
+nerveless
+nervelessly
+nervelessness
+nerves
+nerviness
+nervosity
+nervous
+nervously
+nervousness
+nervy
+nescient
+ness
+nest
+nest-egg
+nested
+nester
+nesting
+nestle
+nestled
+nestles
+nestling
+Nestor
+nests
+net
+nether
+Netherlander
+Netherlands
+nethermost
+netherworld
+netiquette
+nets
+netserver
+nett
+netted
+netting
+nettle
+nettled
+nettlesome
+netware
+network
+networked
+networking
+networks
+Neumann
+neural
+neuralgia
+neuralgic
+neurally
+neurasthenia
+neurasthenic
+neuritic
+neuritis
+neurological
+neurologically
+neurologist
+neurologists
+neurology
+neuron
+neuronal
+neurons
+neuroses
+neurosis
+neurosurgeon
+neurosurgery
+neurotic
+neurotically
+neurotransmitter
+neuter
+neutral
+neutralism
+neutralist
+neutralities
+neutrality
+neutralization
+neutralize
+neutralized
+neutralizer
+neutralizing
+neutrally
+neutrino
+neutrinos
+neutron
+Nev
+Neva
+Nevada
+Nevadan
+Nevadian
+never
+nevermore
+nevertheless
+nevi
+Nevins
+Nevis
+nevus
+new
+new-fashioned
+Newark
+newbie
+Newbold
+newborn
+Newbury
+Newburyport
+Newcastle
+newcomer
+newcomers
+newel
+Newell
+newer
+newest
+newfangled
+Newfoundland
+Newfoundlander
+newly
+newlywed
+newlyweds
+Newman
+Newmanize
+Newmanizes
+newness
+Newport
+news
+news-bulletin
+news-reel
+news-room
+news-sheet
+newsboy
+newscast
+newscaster
+newsdealer
+newsgirl
+newsgroup
+newsletter
+newsletters
+newsman
+newsmen
+newsmonger
+newspaper
+newspaperman
+newspapers
+newspaperwoman
+newsprint
+newsreader
+newsreel
+newsroom
+newsstand
+newsvendor
+Newsweek
+newswoman
+newswomen
+newsworthiness
+newsworthy
+newsy
+newt
+newton
+Newtonian
+next
+next-door
+nexus
+NF
+NFAIS
+NFC
+NFL
+Nguyen
+NH
+NHL
+Ni
+niacin
+Niagara
+Niamey
+nib
+nibble
+nibbled
+nibbler
+nibblers
+nibbles
+nibbling
+Nibelung
+nibs
+Nicaragua
+Nicaraguan
+Niccolo
+nice
+nice-looking
+nicely
+niceness
+nicer
+nicest
+niceties
+nicety
+niche
+Nicholas
+Nicholls
+Nichols
+Nicholson
+nick
+nicked
+nickel
+nickel-and-dime
+nickelodeon
+nickels
+nicker
+nicking
+Nicklaus
+nicknack
+nickname
+nicknamed
+nicknames
+nicks
+nicky-ticky
+Nicodemus
+Nicosia
+nicotian
+nicotin
+nicotine
+nictate
+nictitate
+nide
+niece
+nieces
+Nielsen
+Nielson
+Nietzsche
+niffy
+nifty
+Niger
+Nigeria
+Nigerian
+Nigerien
+niggard
+niggardliness
+niggardly
+nigger
+niggle
+niggler
+niggling
+nigh
+night
+night-bird
+night-cap
+night-dress
+night-gown
+night-school
+night-shift
+night-shirt
+night-stool
+night-suit
+night-tide
+night-time
+night-walker
+night-watch
+night-wear
+night-work
+nightcap
+nightclothes
+nightclub
+nightdress
+nightfall
+nightgown
+nighthawk
+nightie
+nightingale
+nightingales
+nightlife
+nightlong
+nightly
+nightmare
+nightmares
+nightmarish
+nights
+nightshade
+nightshirt
+nightspot
+nightstand
+nightstick
+nighttime
+nightwear
+nighty
+NIH
+nihilism
+nihilist
+nihilistic
+Nijinsky
+Nikko
+Nikolai
+Nikolayev
+nil
+niladic
+Nile
+Nilsen
+Nilsson
+nim
+nimbi
+nimble
+nimbleness
+nimbler
+nimbly
+nimbus
+NIMBY
+Nina
+nincompoop
+nine
+nine-to-five
+ninefold
+ninepin
+ninepins
+nines
+nineteen
+nineteens
+nineteenth
+nineties
+ninetieth
+ninety
+Nineveh
+ninja
+ninny
+ninth
+Niobe
+niobium
+nip
+nipper
+nippers
+nippiness
+nipple
+nipples
+Nippon
+Nipponese
+Nipponize
+Nipponizes
+nippy
+nips
+nirvana
+nit
+nit-picker
+nit-picking
+nit-wit
+niter
+nitpick
+nitpicker
+nitpicking
+nitrate
+nitration
+nitre
+nitric
+nitride
+nitrification
+nitrite
+nitrocellulose
+nitrogen
+nitrogenous
+nitroglycerin
+nitroglycerine
+nitrous
+nitty
+nitty-gritty
+nitwit
+nix
+Nixon
+nizy
+NJ
+NLRB
+NM
+NMA
+no
+no-account
+no-brainer
+no-fault
+no-frills
+no-go
+no-good
+no-goodnik
+no-jump
+no-load
+no-man's-land
+no-no
+no-nonsense
+no-one
+no-show
+no-trump
+no-voltage
+no-win
+Noah
+nob
+nobble
+Nobel
+Nobelist
+nobelium
+nobility
+noble
+nobleman
+nobleness
+nobler
+nobles
+noblest
+noblewoman
+nobly
+nobody
+nock
+noctambulation
+nocturnal
+nocturnally
+nocturne
+nod
+nodal
+nodded
+nodding
+noddle
+noddy
+node
+nodes
+nods
+nodular
+nodule
+noes
+Noetherian
+nog
+noggin
+nogging
+nohow
+noise
+noise-free
+noiseless
+noiselessly
+noiselessness
+noisemaker
+noises
+noisier
+noisily
+noisiness
+noisome
+noisy
+Nolan
+Noll
+nomad
+nomadic
+Nome
+nomenclature
+nominal
+nominally
+nominate
+nominated
+nominating
+nomination
+nominative
+nominator
+nominee
+non
+non-acceptance
+non-alphabetic
+non-availability
+non-Catholic
+non-Communist
+non-Congressional
+non-conjunction
+non-corrosive
+non-descriptor
+non-disjunction
+non-effective
+non-ego
+non-empty
+non-English
+non-equivalence
+non-event
+non-feasance
+non-fiction
+non-flickering
+non-format
+non-glare
+non-intelligent
+non-interference
+non-intervention
+non-language
+non-periodical
+non-profit
+non-renewable
+non-reversible
+non-smoker
+non-smudge
+non-soldier
+non-stop
+non-usage
+non-user
+nonabrasive
+nonabsorbent
+nonacademic
+nonacceptance
+nonacid
+nonactive
+nonadaptive
+nonaddictive
+nonadherent
+nonadhesive
+nonadjacent
+nonadjustable
+nonadministrative
+nonage
+nonagenarian
+nonagery
+nonaggression
+nonalcoholic
+nonaligned
+nonalignment
+nonallergic
+nonappearance
+nonary
+nonassignable
+nonathletic
+nonattendance
+nonautomotive
+nonavailability
+nonbasic
+nonbeliever
+nonbelligerent
+nonbiodegradable
+nonblocking
+nonbreakable
+nonburnable
+noncaloric
+noncancerous
+nonce
+nonchalance
+nonchalant
+nonchalantly
+nonchargeable
+nonclerical
+nonclinical
+noncollectable
+noncom
+noncombatant
+noncombustible
+noncommercial
+noncommittal
+noncommittally
+noncommunicable
+noncommunication
+noncommunist
+noncompeting
+noncompetitive
+noncompliance
+noncomplying
+noncomprehending
+nonconducting
+nonconductor
+nonconforming
+nonconformist
+nonconformity
+noncongressional
+nonconsecutive
+nonconsecutively
+nonconservative
+nonconstructive
+noncontagious
+noncontinuous
+noncontributing
+noncontributory
+noncontroversial
+nonconvertible
+noncooperation
+noncorroding
+noncorrosive
+noncredit
+noncriminal
+noncritical
+noncrystalline
+noncumulative
+noncustodial
+noncyclic
+nondairy
+nondecreasing
+nondeductible
+nondelivery
+nondemocratic
+nondenominational
+nondenumerability
+nondepartmental
+nondepreciating
+nondescript
+nondescriptly
+nondestructive
+nondestructively
+nondetachable
+nondeterminacy
+nondeterminate
+nondeterminately
+nondeterminism
+nondeterministic
+nondeterministically
+nondisciplinary
+nondiscrimination
+nondiscriminatory
+nondramatic
+nondrinker
+nondrying
+none
+noneducational
+noneffective
+nonelastic
+nonelectric
+nonelectrical
+nonempty
+nonenforceable
+nonentity
+nonequivalent
+nones
+nonessential
+nonesuch
+nonetheless
+nonevent
+nonexchangeable
+nonexclusive
+nonexempt
+nonexistence
+nonexistent
+nonexplosive
+nonextensible
+nonfactual
+nonfading
+nonfat
+nonfatal
+nonfattening
+nonferrous
+nonfiction
+nonfictional
+nonflammable
+nonflowering
+nonfluctuating
+nonflying
+nonfood
+nonfreezing
+nonfunctional
+nongovernmental
+nongranular
+nonhazardous
+nonhereditary
+nonhuman
+nonidempotent
+nonidentical
+noninclusive
+nonindependent
+nonindustrial
+noninfectious
+noninflammatory
+noninflationary
+noninflected
+nonintellectual
+noninteracting
+noninterchangeable
+noninterference
+noninterlaced
+noninterleaved
+nonintervention
+nonintoxicating
+nonintrusive
+nonintuitive
+noninvasive
+noninverting
+nonirritating
+nonjudgmental
+nonjudicial
+nonlegal
+nonlethal
+nonlinear
+nonlinearities
+nonlinearity
+nonlinearly
+nonliterary
+nonliving
+nonlocal
+nonmagnetic
+nonmalignant
+nonmaskable
+nonmathematical
+nonmember
+nonmetal
+nonmetallic
+nonmigratory
+nonmilitant
+nonmilitary
+nonnarcotic
+nonnative
+nonnegative
+nonnegligible
+nonnegotiable
+nonnuclear
+nonnumerical
+nonny
+nonobjective
+nonobligatory
+nonobservance
+nonobservant
+nonoccupational
+nonoccurence
+nonofficial
+nonogenarian
+nonoperational
+nonoperative
+nonorthogonal
+nonorthogonality
+nonparallel
+nonpareil
+nonparticipant
+nonparticipating
+nonpartisan
+nonpaying
+nonpayment
+nonperformance
+nonperforming
+nonperishable
+nonpersistent
+nonperson
+nonphysical
+nonphysically
+nonplus
+nonplussed
+nonpoisonous
+nonpolitical
+nonpolluting
+nonporous
+nonportable
+nonpracticing
+nonprejudicial
+nonprescription
+nonprocedural
+nonprocedurally
+nonproductive
+nonprofessional
+nonprofit
+nonprofitable
+nonprogrammable
+nonprogrammer
+nonproliferation
+nonpublic
+nonpunishable
+nonracial
+nonradioactive
+nonrandom
+nonreactive
+nonreciprocal
+nonreciprocating
+nonrecognition
+nonrecoverable
+nonrecurring
+nonrecursive
+nonredeemable
+nonrefillable
+nonrefundable
+nonreligious
+nonrenewable
+nonrepresentational
+nonresident
+nonresidential
+nonresidual
+nonresistance
+nonresistant
+nonrestrictive
+nonreturnable
+nonrhythmic
+nonrigid
+nonsalaried
+nonscheduled
+nonscientific
+nonscoring
+nonseasonal
+nonsectarian
+nonsecular
+nonsegmented
+nonsegregated
+nonsense
+nonsensical
+nonsensically
+nonsensitive
+nonsequential
+nonsexist
+nonsexual
+nonskid
+nonslip
+nonsmoker
+nonsmoking
+nonsocial
+nonspeaking
+nonspecialist
+nonspecialists
+nonspecializing
+nonspecific
+nonspiritual
+nonstaining
+nonstandard
+nonstarter
+nonstick
+nonstop
+nonstrategic
+nonstriking
+nonstructural
+nonsuccessive
+nonsuit
+nonsupport
+nonsupporting
+nonsurgical
+nonsustaining
+nonsympathizer
+nonsynchronous
+nontarnishable
+nontaxable
+nontechnical
+nontenured
+nonterminal
+nonterminals
+nonterminating
+nontermination
+nontheatrical
+nonthermal
+nonthinking
+nonthreatening
+nontoxic
+nontraditional
+nontransferable
+nontransparent
+nontrivial
+nontropical
+nonuniform
+nonuniformity
+nonunion
+nonuser
+nonvenomous
+nonverbal
+nonviable
+nonviolence
+nonviolent
+nonvirulent
+nonvocal
+nonvocational
+nonvolatile
+nonvoter
+nonvoting
+nonwhite
+nonworking
+nonyielding
+nonzero
+noodle
+Noodles-Spaghetti
+nook
+nooks
+noon
+noonday
+noons
+noontide
+noontime
+noose
+nope
+nor
+Nora
+Nordhoff
+Nordic
+Nordstrom
+Noreen
+Norfolk
+norm
+Norma
+normal
+normalcy
+normality
+normalization
+normalize
+normalized
+normalizes
+normalizing
+normally
+normals
+Norman
+Normandy
+Normanization
+Normanizations
+Normanize
+Normanizer
+Normanizers
+Normanizes
+normative
+norms
+Norris
+Norristown
+Norse
+Norseman
+north
+north-eastern
+North-Pole
+North-Star
+north-west
+Northampton
+northbound
+northeast
+northeaster
+northeasterly
+northeastern
+northeastward
+northeastwards
+norther
+northerly
+northern
+northerner
+northerners
+northernly
+northernmost
+Northfield
+Northrop
+Northrup
+Northumberland
+northward
+northwards
+northwest
+northwester
+northwesterly
+northwestern
+northwestward
+northwestwards
+Norton
+Norw
+Norwalk
+Norway
+Norwegian
+Norwich
+nose
+nose-bag
+nose-dive
+nose-gay
+nose-piece
+nosebleed
+nosecone
+nosed
+nosedive
+nosedove
+nosegay
+noses
+nosey
+nosh
+nosily
+nosiness
+nosing
+nostalgia
+nostalgic
+nostalgically
+Nostradamus
+Nostrand
+nostril
+nostrils
+nostrum
+nosy
+not
+not-for-profit
+notability
+notable
+notables
+notably
+notarial
+notarization
+notarize
+notarized
+notarizes
+notarizing
+notary
+notate
+notation
+notational
+notations
+notch
+notched
+notches
+notching
+note
+note-book
+note-paper
+notebook
+notebooks
+noted
+notepad
+notepaper
+notes
+noteworthiness
+noteworthy
+nothing
+nothingness
+nothings
+notice
+notice-board
+noticeable
+noticeably
+noticed
+notices
+noticing
+notification
+notifications
+notified
+notifier
+notifiers
+notifies
+notify
+notifying
+noting
+notion
+notional
+notions
+notoriety
+notorious
+notoriously
+Notre
+Nottingham
+notwithstanding
+Nouakchott
+nougat
+nought
+noun
+nouns
+nourish
+nourished
+nourishes
+nourishing
+nourishment
+nous
+Nov
+nova
+novae
+Novak
+novel
+novelette
+novelist
+novelistic
+novelists
+novelization
+novelize
+novella
+novels
+novelties
+novelty
+November
+Novembers
+novena
+novice
+novices
+novitiate
+Novocain
+Novocaine
+Novokuznetsk
+Novosibirsk
+now
+nowadays
+noway
+noways
+nowhere
+Nowheresville
+nowise
+noxious
+Noyes
+nozzle
+NT
+nth
+NTO
+nu
+nuance
+nuanced
+nuances
+nub
+nubbin
+nubby
+Nubia
+Nubian
+nubile
+nuclear
+nucleate
+nucleation
+nuclei
+nucleic
+nucleoli
+nucleolus
+nucleon
+nucleonics
+nucleotide
+nucleotides
+nucleus
+nuclide
+nude
+nudge
+nudged
+nudism
+nudist
+nudity
+nugatory
+Nugent
+nugget
+nuisance
+nuisances
+nuke
+Nukualofa
+null
+nullary
+nulled
+nullification
+nullified
+nullifiers
+nullifies
+nullify
+nullifying
+nullity
+nulls
+NUM
+numb
+numb-fish
+numbed
+number
+number-crunching
+numbered
+numberer
+numbering
+numberless
+numbers
+numbing
+numbly
+numbness
+numbs
+numbskull
+numerable
+numeracy
+numeral
+numerals
+numerate
+numeration
+numerator
+numerators
+numeric
+numerical
+numerically
+numerics
+numerologist
+numerology
+numerous
+numerously
+numinous
+numismatic
+numismatics
+numismatist
+numskull
+nun
+nuncio
+nunnery
+nuns
+nuptial
+nuptials
+Nuremberg
+Nureyev
+nurse
+nurse-child
+nurse-maid
+nursed
+nurseling
+nursemaid
+nurser
+nurseries
+nursery
+nurseryman
+nurses
+nursing
+nursling
+nurture
+nurtured
+nurturer
+nurtures
+nurturing
+nut
+nut-crackers
+nut-gall
+nut-shell
+nutate
+nutation
+nutcracker
+nuthatch
+nutmeat
+nutmeg
+nutpick
+nutria
+nutrient
+nutriment
+nutrition
+nutritional
+nutritionally
+nutritionist
+nutritious
+nutritiously
+nutritiousness
+nutritive
+nuts
+nutshell
+nutshells
+nutter
+nuttiness
+nutty
+nuzzle
+nuzzler
+NV
+NW
+NWT
+NY
+NYC
+nylon
+nylons
+nymph
+nymphet
+nymphomania
+nymphomaniac
+nymphs
+Nyquist
+NYSE
+NZ
+ne
+o
+o'
+O'Brien
+O'Casey
+o'clock
+O'Connell
+O'Connor
+O'Dell
+O'Donnell
+O'Dwyer
+o'er
+O'Hare
+O'Keeffe
+O'Leary
+O'Neill
+O'Shea
+O'Sullivan
+oaf
+oafish
+oafishly
+oafishness
+Oahu
+oak
+oak-apple
+oak-ball
+oak-cone
+oak-tree
+oaken
+Oakland
+oaklet
+Oakley
+oakling
+Oakmont
+oaks
+oakum
+oar
+oarlock
+oars
+oarsman
+oarswoman
+OAS
+oases
+oasis
+oast
+oat
+oat-flakes
+oatcake
+oaten
+oath
+oaths
+oatmeal
+oats
+obbligati
+obbligato
+obduracy
+obdurate
+obdurately
+obdurateness
+obedience
+obediences
+obedient
+obediently
+obeisance
+obeisant
+obelisk
+Oberlin
+Oberon
+obese
+obesity
+obey
+obeyed
+obeying
+obeys
+obfuscate
+obfuscation
+obfuscatory
+obi
+obit
+obituary
+object
+object-glass
+object-lens
+objected
+objectify
+objecting
+objection
+objectionable
+objectionably
+objections
+objective
+objectively
+objectiveness
+objectives
+objectivism
+objectivity
+objector
+objectors
+objects
+objurgate
+objurgation
+oblate
+oblation
+obligate
+obligated
+obligation
+obligations
+obligatorily
+obligatory
+oblige
+obliged
+obliges
+obliging
+obligingly
+oblique
+obliquely
+obliqueness
+obliquing
+obliquity
+obliterate
+obliterated
+obliterates
+obliterating
+obliteration
+oblivion
+oblivious
+obliviously
+obliviousness
+oblong
+obloquy
+obnoxious
+obnoxiously
+obnoxiousness
+oboe
+oboist
+obscene
+obscenely
+obscenity
+obscurant
+obscurantism
+obscurantist
+obscuration
+obscure
+obscured
+obscurely
+obscurer
+obscures
+obscuring
+obscurities
+obscurity
+obsecrate
+obsecration
+obsequies
+obsequious
+obsequiously
+obsequiousness
+obsequy
+observable
+observably
+observance
+observances
+observant
+observantly
+observation
+observational
+observations
+observatory
+observe
+observed
+observer
+observers
+observes
+observing
+obsess
+obsessed
+obsession
+obsessional
+obsessions
+obsessive
+obsessively
+obsessiveness
+obsidian
+obsolesce
+obsolescence
+obsolescent
+obsolete
+obsoleted
+obsoletes
+obsoleting
+obstacle
+obstacles
+obstetric
+obstetrical
+obstetrician
+obstetrics
+obstinacy
+obstinate
+obstinately
+obstreperous
+obstreperously
+obstreperousness
+obstruct
+obstructed
+obstructing
+obstruction
+obstructionism
+obstructionist
+obstructions
+obstructive
+obstructively
+obstructiveness
+obtain
+obtainable
+obtainably
+obtained
+obtaining
+obtainment
+obtains
+obtrude
+obtrusion
+obtrusive
+obtrusively
+obtrusiveness
+obturate
+obturator
+obtuse
+obtusely
+obtuseness
+obverse
+obviate
+obviated
+obviates
+obviating
+obviation
+obviations
+obvious
+obviously
+obviousness
+ocarina
+Occam
+occasion
+occasional
+occasionally
+occasioned
+occasioning
+occasionings
+occasions
+occident
+occidental
+Occidentalization
+Occidentalizations
+Occidentalize
+Occidentalized
+Occidentalizes
+Occidentalizing
+Occidentals
+occipital
+occiput
+occlude
+occluded
+occludes
+occlusion
+occlusions
+occlusive
+occult
+occultism
+occupancies
+occupancy
+occupant
+occupants
+occupation
+occupational
+occupationally
+occupations
+occupied
+occupier
+occupies
+occupy
+occupying
+occur
+occurred
+occurrence
+occurrences
+occurring
+occurs
+ocean
+ocean-going
+oceanfront
+oceangoing
+Oceania
+oceanic
+oceanographer
+oceanographic
+oceanography
+oceanology
+oceans
+Oceanside
+ocelot
+ocher
+ochre
+Oconomowoc
+OCR
+Oct
+octagon
+octagonal
+octahedra
+octahedral
+octahedron
+octal
+octane
+octave
+octaves
+Octavia
+Octavian
+octavo
+octet
+octets
+octette
+October
+Octobers
+octodecimo
+octogenarian
+octonary
+octopi
+octopus
+octuple
+ocular
+oculist
+OD
+odalisque
+odd
+odd-come-short
+oddball
+odder
+oddest
+oddities
+oddity
+oddly
+oddment
+oddments
+oddness
+odds
+odds-on
+ode
+Oder
+Oderberg
+Oderbergs
+odes
+Odessa
+Odin
+odious
+odiously
+odiousness
+odium
+odometer
+odor
+odored
+odoriferous
+odorless
+odorous
+odorously
+odorousness
+odors
+odour
+Odysseus
+OE
+OED
+oedema
+Oedipally
+Oedipus
+oeillade
+oenology
+oenophile
+oesophagus
+oeuvre
+of
+off
+off-bird
+off-color
+off-colored
+off-duty
+off-hand
+off-hour
+off-key
+off-limits
+off-line
+off-load
+off-loading
+off-peak
+off-position
+off-premise
+off-print
+off-putting
+off-ramp
+off-road
+off-scourings
+off-season
+off-set
+off-shoot
+off-side
+off-spring
+off-the-cuff
+off-the-rack
+off-the-record
+off-the-shelf
+off-the-wall
+off-time
+off-white
+offal
+offbeat
+Offenbach
+offence
+offend
+offended
+offender
+offenders
+offending
+offends
+offense
+offenses
+offensive
+offensively
+offensiveness
+offer
+offered
+offerer
+offerers
+offering
+offerings
+offers
+offertory
+offhand
+offhanded
+offhandedly
+offhandedness
+office
+officeholder
+officemate
+officer
+officers
+offices
+official
+officialdom
+officialese
+officialism
+officially
+officials
+officiant
+officiate
+officiator
+officinal
+officio
+officious
+officiously
+officiousness
+offing
+offish
+offline
+offload
+offprint
+offs
+offset
+offsets
+offsetting
+offshoot
+offshore
+offside
+offspring
+offstage
+offtake
+offtrack
+oft
+often
+oftentimes
+ofttimes
+Ogden
+ogee
+ogive
+ogle
+ogler
+Oglethorpe
+ogre
+ogreish
+ogress
+ogrish
+oh
+Ohio
+Ohioan
+ohm
+ohmmeter
+oho
+oil
+oil-cake
+oil-cloth
+oil-colour
+oil-field
+oil-gauge
+oil-press
+oil-stone
+oil-tank
+oil-tongued
+oilcloth
+oiled
+oiler
+oilers
+oilier
+oiliest
+oiliness
+oiling
+oils
+oilskin
+oilskins
+oily
+oink
+ointment
+OJ
+Ojibwa
+Ojibway
+OK
+Okamoto
+okapi
+okay
+Okayama
+Okefenokee
+okey-doke
+okey-dokey
+Okinawa
+Okinawan
+Okla
+Oklahoma
+Oklahoman
+okra
+Olaf
+Olav
+old
+old-fashioned
+old-line
+old-maidish
+old-time
+old-timer
+old-world
+olden
+Oldenburg
+older
+oldest
+oldie
+oldish
+oldman
+oldness
+Oldsmobile
+oldster
+Olduvai
+oldy
+ole
+oleaginous
+oleander
+oleaster
+Oleg
+oleo
+oleomargarin
+oleomargarine
+olfaction
+olfactory
+Olga
+oligarch
+oligarchic
+oligarchical
+oligarchy
+Oligocene
+Olin
+olive
+olive-branch
+Oliver
+Olivers
+olives
+Olivetti
+Olivia
+Olivier
+OLRT
+Olsen
+Olson
+Olympia
+olympiad
+Olympian
+Olympianize
+Olympianizes
+Olympic
+Olympics
+Olympus
+om
+Omaha
+Oman
+ombudsman
+omega
+omelet
+omelette
+omen
+omens
+omicron
+ominous
+ominously
+ominousness
+omission
+omissions
+omit
+omits
+omitted
+omitting
+omnibus
+omnidirectional
+omnious
+omnipotence
+omnipotent
+omnipresence
+omnipresent
+omniscience
+omniscient
+omnisciently
+omnivore
+omnivorous
+omnivorously
+omnivorousness
+Omsk
+on
+on-horseback
+on-line
+on-position
+on-timer
+onanism
+once
+once-over
+oncer
+oncogene
+oncologist
+oncology
+oncoming
+ondisc
+one
+one-eyed
+one-handed
+one-horse
+one-legged
+one-liner
+one-on-one
+one-part
+one-shot
+one-sided
+one-sidedness
+one-stage
+one-time
+one-to-one
+one-track
+one-up
+one-upmanship
+one-way
+Oneida
+oneness
+onerous
+onerously
+onerousness
+ones
+oneself
+onetime
+ongoing
+onion
+onions
+onionskin
+online
+onlooker
+onlookers
+onlooking
+only
+onomatopoeia
+onomatopoeic
+onomatopoetic
+Onondaga
+onrush
+onrushing
+onset
+onsets
+onshore
+onside
+onslaught
+Ontarian
+Ontario
+onto
+ontogeny
+ontological
+ontology
+onus
+onward
+onwards
+onyx
+oodles
+oof
+ooh
+ooon
+oops
+ooze
+oozed
+oozy
+op
+opacity
+opal
+opalescence
+opalescent
+opals
+opaque
+opaquely
+opaqueness
+opcode
+ope
+OPEC
+Opel
+open
+open-air
+open-and-shut
+open-eared
+open-ended
+open-eyed
+open-face
+open-faced
+open-grained
+open-handed
+open-hearted
+open-hearth
+open-minded
+open-mindedly
+open-mindedness
+open-mouthed
+open-plan
+opened
+opener
+openers
+openhanded
+openhandedness
+openhearted
+opening
+openings
+openly
+openness
+opens
+openwork
+opera
+opera-glass
+opera-hat
+operability
+operable
+operaion
+operand
+operandi
+operands
+operas
+operate
+operated
+operates
+operatic
+operatically
+operating
+operation
+operational
+operationally
+operations
+operative
+operatives
+operator
+operators
+operetta
+Ophiuchus
+Ophiucus
+ophthalmic
+ophthalmologist
+ophthalmology
+opiate
+opine
+opinion
+opinionated
+opinions
+opisthographic
+opium
+opossum
+Oppenheimer
+opponent
+opponents
+opportune
+opportunely
+opportunism
+opportunist
+opportunistic
+opportunities
+opportunity
+opposable
+oppose
+opposed
+opposes
+opposing
+opposite
+oppositely
+oppositeness
+opposites
+opposition
+oppress
+oppressed
+oppresses
+oppressing
+oppression
+oppressive
+oppressively
+oppressiveness
+oppressor
+oppressors
+opprobrious
+opprobriously
+opprobrium
+oppugn
+OPR
+opt
+optative
+opted
+opthalmic
+opththalmia
+optic
+optical
+optically
+optician
+optics
+optima
+optimal
+optimality
+optimally
+optimism
+optimist
+optimistic
+optimistically
+optimization
+optimizations
+optimize
+optimized
+optimizer
+optimizers
+optimizes
+optimizing
+optimum
+opting
+option
+optional
+optionally
+options
+optoacoustic
+optoelectronics
+optometrist
+optometry
+opts
+opulence
+opulent
+opulently
+opus
+opuscule
+or
+oracle
+oracles
+oracular
+oral
+orally
+orang-utang
+orange
+orangeade
+orangery
+oranges
+orangutan
+orangutang
+orate
+oration
+orations
+orator
+oratorical
+oratorically
+oratories
+oratorio
+orators
+oratory
+orb
+orbicular
+orbit
+orbital
+orbitally
+orbited
+orbiter
+orbiters
+orbiting
+orbits
+orchard
+orchards
+orchestra
+orchestral
+orchestras
+orchestrate
+orchestration
+orchestrion
+orchid
+orchids
+orchis
+ordain
+ordained
+ordaining
+ordainment
+ordains
+ordeal
+order
+order-book
+order-of-the-day
+ordered
+orderer
+ordering
+orderings
+orderless
+orderlies
+orderliness
+orderly
+orders
+ordinal
+ordinance
+ordinances
+ordinarily
+ordinariness
+ordinary
+ordinate
+ordinates
+ordination
+ordnance
+ordnance-map
+ordnance-sheet
+Ordovician
+ordure
+ore
+ore-bearing
+Oreg
+oregano
+Oregon
+Oregonian
+Oregonians
+ores
+Oresteia
+Orestes
+organ
+organ-grind
+organ-grinder
+organ-loft
+organdie
+organdy
+organelle
+organic
+organically
+organise
+organism
+organismic
+organisms
+organist
+organists
+organizable
+organization
+organizational
+organizationally
+organizations
+organize
+organized
+organizer
+organizers
+organizes
+organizing
+organs
+organza
+orgasm
+orgasmic
+orgiastic
+orgies
+orgware
+orgy
+oriel
+orient
+oriental
+orientalist
+Orientalization
+Orientalizations
+Orientalize
+Orientalized
+Orientalizes
+Orientalizing
+Orientals
+orientate
+orientation
+orientations
+oriented
+orienting
+orients
+orifice
+orifices
+origami
+origin
+original
+originality
+originally
+originals
+originate
+originated
+originates
+originating
+origination
+originator
+originators
+origins
+Orin
+Orinoco
+oriole
+Orion
+orison
+Orkney
+Orlando
+Orleans
+Orlick
+Orlon
+orlop
+Orly
+ormolu
+ornament
+ornamental
+ornamentally
+ornamentation
+ornamented
+ornamenting
+ornaments
+ornate
+ornately
+ornateness
+orneriness
+ornery
+ornithological
+ornithologist
+ornithology
+OROM
+Orono
+orotund
+orotundity
+orphan
+orphanage
+orphaned
+orphans
+Orpheus
+Orphic
+Orphically
+Orr
+orris
+Ortega
+orthant
+ortho-
+orthocode
+orthodontia
+orthodontic
+orthodontics
+orthodontist
+orthodox
+orthodoxy
+orthogonal
+orthogonality
+orthogonally
+orthographic
+orthographically
+orthography
+orthopaedic
+orthopaedics
+orthopaedist
+orthopedic
+orthopedics
+orthopedist
+orthoscanner
+ortolan
+Orville
+Orwell
+Orwellian
+OS
+os.
+Osage
+Osaka
+Osbert
+Osborn
+Osborne
+Oscar
+oscillate
+oscillated
+oscillates
+oscillating
+oscillation
+oscillations
+oscillator
+oscillators
+oscillatory
+oscilloscope
+oscilloscopes
+osculate
+osculation
+Osgood
+OSHA
+Oshawa
+Oshkosh
+osier
+Osiris
+Oslo
+osmium
+osmosis
+osmotic
+osprey
+osseous
+ossification
+ossify
+ossuary
+ostensible
+ostensibly
+ostensory
+ostentation
+ostentatious
+ostentatiously
+osteoarthritis
+osteopath
+osteopathic
+osteopathy
+osteoporosis
+ostler
+ostracism
+ostracize
+Ostrander
+ostrich
+ostriches
+Oswald
+OT
+OTB
+OTC
+Othello
+other
+others
+otherwhile
+otherwise
+otherwordly
+otherworldly
+otic
+otiose
+Otis
+Ott
+Ottawa
+otter
+otters
+Otto
+ottoman
+Ottomanization
+Ottomanizations
+Ottomanize
+Ottomanizes
+Ouagadougou
+oubliette
+ouch
+ought
+oughtn't
+Ouija
+ounce
+ounces
+our
+ours
+ourself
+ourselves
+ousel
+oust
+ouster
+out
+out-
+out-and-out
+out-of-body
+out-of-bounds
+out-of-date
+out-of-door
+out-of-doors
+out-of-the-way
+out-Yankee
+outage
+outargue
+outback
+outbalance
+outbid
+outboard
+outboast
+outbound
+outbreak
+outbreaks
+outbreathe
+outbuilding
+outburst
+outbursts
+outcast
+outcasts
+outclass
+outcome
+outcomes
+outconnector
+outcries
+outcrop
+outcropping
+outcry
+outdated
+outdid
+outdistance
+outdo
+outdone
+outdoor
+outdoors
+outdoorsy
+outdraw
+outer
+outermost
+outerwear
+outface
+outfall
+outfield
+outfielder
+outfight
+outfit
+outfits
+outfitted
+outfitter
+outflank
+outflow
+outfox
+outgo
+outgoing
+outgoings
+outgrew
+outgrow
+outgrowing
+outgrown
+outgrows
+outgrowth
+outguess
+outhit
+outhouse
+outing
+outlandish
+outlandishly
+outlandishness
+outlast
+outlasts
+outlaw
+outlawed
+outlawing
+outlaws
+outlay
+outlays
+outlet
+outlets
+outline
+outlined
+outlines
+outlining
+outlive
+outlived
+outlives
+outliving
+outlook
+outlying
+outmachine
+outmaneuver
+outmanoeuvre
+outmatch
+outmoded
+outmost
+outness
+outnumber
+outnumbered
+outpatient
+outperform
+outperformed
+outperforming
+outperforms
+outplacement
+outplay
+outpoint
+outpost
+outposts
+outpour
+outpouring
+outproduce
+output
+outputs
+outputting
+outrace
+outrage
+outraged
+outrageous
+outrageously
+outrages
+outragous
+outran
+outrank
+outre
+outreach
+outride
+outrider
+outrigger
+outright
+outroot
+outrun
+outruns
+outs
+outscore
+outsell
+outset
+outshine
+outshone
+outshout
+outside
+outsider
+outsiders
+outsit
+outsize
+outsized
+outskirt
+outskirts
+outsleep
+outsmart
+outsold
+outsort
+outsource
+outsourcing
+outspend
+outspoken
+outspokenly
+outspokenness
+outspread
+outstanding
+outstandingly
+outstation
+outstay
+outstep
+outstreet
+outstretch
+outstretched
+outstrip
+outstripped
+outstripping
+outstrips
+outtake
+outvalue
+outvie
+outvote
+outvoted
+outvotes
+outvoting
+outward
+outwardly
+outwards
+outwear
+outweigh
+outweighed
+outweighing
+outweighs
+outwit
+outwits
+outwitted
+outwitting
+outwore
+outwork
+outworn
+ouzel
+ouzo
+ova
+oval
+ovals
+ovarian
+ovaries
+ovary
+ovate
+ovation
+oven
+ovenbird
+ovens
+over
+over-
+over-copy
+over-employment
+over-estimate
+over-filled
+over-full
+over-ripe
+over-the-counter
+over-the-top
+overabundance
+overabundant
+overachieve
+overachiever
+overact
+overactive
+overage
+overaggressive
+overall
+overalls
+overambitious
+overanxious
+overarch
+overarm
+overate
+overattentive
+overawe
+overawed
+overbalance
+overbear
+overbearing
+overbearingly
+overbid
+overbite
+overblown
+overboard
+overbold
+overbook
+overbore
+overborne
+overbrim
+overbuild
+overburden
+overburn
+overbuy
+overcame
+overcapitalize
+overcare
+overcareful
+overcast
+overcautious
+overcharge
+overcloud
+overcoat
+overcoats
+overcolour
+overcome
+overcomes
+overcoming
+overcompensate
+overcompensation
+overconfidence
+overconfident
+overconscientious
+overcook
+overcooling
+overcritical
+overcrop
+overcrowd
+overcrowded
+overcrowding
+overcrowds
+overdecorate
+overdependent
+overdevelop
+overdid
+overdo
+overdone
+overdose
+overdraft
+overdrafts
+overdraw
+overdrawn
+overdress
+overdressed
+overdrew
+overdrive
+overdub
+overdue
+overeager
+overeat
+overeaten
+overemotional
+overemphasis
+overemphasize
+overemphasized
+overenthusiastic
+overestimate
+overestimated
+overestimates
+overestimating
+overestimation
+overexcite
+overexcited
+overexercise
+overexert
+overexertion
+overexpose
+overexposure
+overextend
+overextended
+overfeed
+overfill
+overflew
+overflight
+overflow
+overflowed
+overflowing
+overflown
+overflows
+overfly
+overfond
+overfreight
+overfull
+overfullfilment
+overgeneralize
+overgenerous
+overgraze
+overgrew
+overground
+overgrow
+overgrown
+overgrowth
+overhand
+overhanded
+overhang
+overhanging
+overhangs
+overhasty
+overhaul
+overhauling
+overhead
+overheads
+overhear
+overheard
+overhearing
+overhears
+overheat
+overhung
+overindulge
+overindulgence
+overindulgent
+overink
+overissues
+overjoy
+overjoyed
+overkill
+overlabour
+overlade
+overlaid
+overland
+overlap
+overlapped
+overlapping
+overlaps
+overlarge
+overlay
+overlaying
+overlays
+overleaf
+overleap
+overlie
+overlive
+overload
+overloaded
+overloading
+overloads
+overlong
+overlook
+overlooked
+overlooking
+overlooks
+overlord
+overly
+overmaster
+overmatch
+overmodest
+overmuch
+overnice
+overnight
+overnighter
+overnighters
+overoptimism
+overoptimistic
+overpaid
+overparticular
+overpass
+overpay
+overplay
+overplus
+overpoise
+overpopulate
+overpopulated
+overpopulation
+overpower
+overpowered
+overpowering
+overpoweringly
+overpowers
+overpraise
+overprecise
+overpress
+overpressure
+overprice
+overpriced
+overprint
+overprinted
+overprinting
+overprints
+overproduce
+overproduction
+overprotect
+overprotective
+overpunching
+overqualified
+overran
+overrate
+overreach
+overreact
+overreaction
+overrefined
+overridden
+override
+overrides
+overriding
+overripe
+overrode
+overrule
+overruled
+overrules
+overrun
+overrunning
+overruns
+overs
+oversalt
+oversalted
+oversaturation
+oversaw
+oversea
+overseas
+oversee
+overseeing
+overseen
+overseer
+overseers
+oversees
+oversell
+oversensitive
+oversensitiveness
+overset
+oversewing
+oversexed
+overshadow
+overshadowed
+overshadowing
+overshadows
+overshoe
+overshoes
+overshoot
+overshot
+oversight
+oversights
+oversimple
+oversimplification
+oversimplified
+oversimplifies
+oversimplify
+oversimplifying
+oversing
+oversize
+oversized
+overskip
+oversleep
+overslept
+overslip
+oversold
+overspecialization
+overspecialize
+overspend
+overspent
+overspill
+overspread
+overstate
+overstated
+overstatement
+overstatements
+overstates
+overstating
+overstay
+overstep
+overstimulate
+overstock
+overstocks
+overstoring
+overstrain
+overstrict
+overstrike
+overstrung
+overstuffed
+oversubscribe
+oversubscribed
+oversubtle
+oversupply
+oversuspicious
+overt
+overtake
+overtaken
+overtaker
+overtakers
+overtakes
+overtaking
+overtask
+overtax
+overthrew
+overthrow
+overthrown
+overtime
+overtire
+overtly
+overtoil
+overtone
+overtones
+overtook
+overture
+overtures
+overturn
+overturned
+overturning
+overturns
+overuse
+overused
+overvalue
+overview
+overviews
+overvoltage
+overweening
+overweigh
+overweight
+overwhelm
+overwhelmed
+overwhelming
+overwhelmingly
+overwhelms
+overwinter
+overwork
+overworked
+overworking
+overworks
+overwrite
+overwrites
+overwriting
+overwritten
+overwrought
+overzealous
+Ovid
+oviduct
+ovine
+oviparous
+ovoid
+ovoidum
+ovular
+ovulate
+ovulation
+ovule
+ovum
+ow
+owe
+owed
+Owen
+Owens
+owercome
+owes
+owing
+owl
+owl-light
+owlet
+owlish
+owlishly
+owls
+own
+owned
+owner
+owners
+ownership
+ownerships
+owning
+owns
+ox
+ox-eye
+ox-eye-daisy
+ox-fly
+ox-hide
+ox-lip
+oxblood
+oxbow
+oxcart
+oxen
+oxidant
+oxidate
+oxidation
+oxide
+oxides
+oxidization
+oxidize
+oxidized
+oxidizer
+Oxnard
+Oxonian
+oxyacetylene
+oxygen
+oxygenate
+oxygenation
+oxymora
+oxymoron
+oyer
+oyster
+oysters
+Oz
+Ozark
+Ozarks
+ozone
+ozone-friendly
+Ozzie
+P/L
+pa
+Pa.
+Pablo
+pablum
+Pabst
+pabulum
+PAC
+pace
+paced
+pacemaker
+pacer
+pacers
+paces
+pacesetter
+pachyderm
+pachysandra
+pacific
+pacifically
+pacification
+pacified
+pacifier
+pacifies
+pacifism
+pacifist
+pacifistic
+pacify
+pacing
+pack
+pack-cloth
+pack-horse
+pack-paper
+pack-saddle
+pack-thread
+package
+packaged
+packager
+packagers
+packages
+packaging
+packagings
+Packard
+Packards
+packed
+packer
+packers
+packet
+packet-boat
+packets
+packing
+packing-needle
+packinghouse
+packs
+packsaddle
+Packwood
+pact
+pacts
+pad
+Padang
+padded
+padding
+paddle
+paddler
+paddock
+paddy
+paddy-field
+padlock
+padre
+pads
+paean
+paediatric
+paediatrician
+paediatrics
+paek
+paella
+pagan
+Paganini
+paganism
+pagans
+page
+page-in
+pageant
+pageantry
+pageants
+pageboy
+paged
+pager
+pagers
+pages
+paginal
+paginate
+paginated
+paginates
+paginating
+pagination
+paging
+pagoda
+pah
+paid
+pail
+pailful
+paillasse
+pails
+pain
+Paine
+pained
+painful
+painfully
+painfulness
+painkiller
+painkilling
+painless
+painlessly
+painlessness
+pains
+painstaking
+painstakingly
+paint
+paintbox
+paintbrush
+painted
+painter
+painters
+painting
+paintings
+paintress
+paints
+pair
+pair-oar
+paired
+pairing
+pairings
+pairs
+pairwise
+paisley
+pajama
+pajamas
+Pakistan
+Pakistani
+Pakistanis
+pal
+palace
+palaces
+paladin
+palaeography
+palaeotypography
+palankeen
+palanquin
+palatable
+palatal
+palatalization
+palatalize
+palate
+palates
+palatial
+palatially
+Palatinate
+Palau
+palaver
+pale
+pale-face
+pale-hearted
+paled
+paleface
+palely
+Palembang
+paleness
+Paleocene
+paleographer
+paleography
+Paleolithic
+paleontologist
+paleontology
+Paleozoic
+paler
+Palermo
+pales
+palest
+Palestine
+Palestinian
+palette
+palfrey
+palimony
+palimpsest
+palindrome
+palindromic
+paling
+palisade
+palisades
+palish
+pall
+Palladian
+palladium
+pallbearer
+pallet
+palliasse
+palliate
+palliation
+palliative
+pallid
+pallidly
+pallidness
+pallor
+palm
+palmate
+palmed
+palmer
+palmetto
+palming
+palmist
+palmistry
+Palmolive
+palms
+palmtop
+palmy
+Palmyra
+Palo
+Palomar
+palomino
+palp
+palpable
+palpably
+palpate
+palpation
+palpitate
+palpitation
+palpitations
+pals
+palsied
+palsy
+palsy-walsy
+palter
+paltriness
+paltry
+Pam
+Pamela
+pampas
+pamper
+pamphlet
+pamphleteer
+pamphlets
+pan
+Pan-American
+pan-germanism
+pan-pie
+panacea
+panaceas
+panache
+Panama
+Panamanian
+pancake
+pancakes
+Pancho
+panchromatic
+pancreas
+pancreatic
+panda
+Pandanus
+pandas
+pandemic
+pandemonium
+pander
+panderer
+Pandora
+pane
+panegyric
+panel
+paneled
+paneling
+panelist
+panelists
+panelling
+panels
+panes
+pang
+Pangaea
+pangs
+panhandle
+panhandler
+panic
+panic-monger
+panic-stricken
+panic-striken
+panic-struck
+panicked
+panicking
+panicky
+panicle
+panics
+panier
+panned
+pannier
+pannikin
+panning
+panoply
+panorama
+panoramic
+panpipes
+pans
+pansies
+pansy
+pansy-boy
+pant
+pantaloons
+pantechnicon
+panted
+pantheism
+pantheist
+pantheistic
+pantheon
+panther
+panthers
+pantie
+pantie-stockings
+panties
+panting
+pantomime
+pantomimic
+pantomimist
+pantries
+pantry
+pants
+pantsuit
+panty
+panty-waist
+pantyhose
+pantyliner
+pantywaist
+Paoli
+pap
+papa
+papacy
+papal
+paparazzi
+papaverous
+papaw
+papaya
+paper
+paper-backed
+paper-clip
+paper-fastener
+paper-hanger
+paper-hangings
+paper-hardbacked
+paper-knife
+paper-mill
+paper-money
+paper-pulp
+paper-weight
+paperback
+paperbacks
+paperboard
+paperboy
+papered
+paperer
+paperers
+papergirl
+paperhanger
+paperhanging
+papering
+paperings
+papers
+paperweight
+paperwork
+papery
+papier-mache
+papilla
+papillae
+papillary
+papist
+papoose
+Pappas
+pappy
+paprika
+Papua
+papyri
+papyrograph
+papyrography
+papyrology
+papyrotype
+papyrus
+par
+para
+parable
+parabola
+parabolic
+paraboloid
+paraboloidal
+parachute
+parachuted
+parachutes
+parachutist
+parade
+paraded
+parader
+parades
+paradigm
+paradigmatic
+paradigms
+parading
+paradisaic
+paradisaical
+paradise
+paradontitis
+paradox
+paradoxes
+paradoxical
+paradoxically
+paraffin
+paragon
+paragons
+paragraph
+paragraphing
+paragraphs
+Paraguay
+Paraguayan
+Paraguayans
+parakeet
+paralegal
+parallax
+parallel
+paralleled
+parallelepiped
+paralleling
+parallelism
+parallelize
+parallelized
+parallelizes
+parallelizing
+parallelogram
+parallelograms
+parallels
+paralyse
+paralyses
+paralysis
+paralytic
+paralyze
+paralyzed
+paralyzes
+paralyzing
+paralyzingly
+Paramaribo
+paramecia
+paramecium
+paramedic
+paramedical
+parameter
+parameterizable
+parameterization
+parameterizations
+parameterize
+parameterized
+parameterizes
+parameterizing
+parameterless
+parameters
+parametric
+parametrized
+paramilitary
+paramount
+paramour
+Paramus
+Parana
+paranoia
+paranoiac
+paranoid
+paranormal
+parapet
+parapets
+paraph
+paraphernalia
+paraphrase
+paraphrased
+paraphrases
+paraphrasing
+paraplegia
+paraplegic
+paraprofessional
+parapsychologist
+parapsychology
+paraquat
+parasite
+parasites
+parasitic
+parasitically
+parasitics
+parasitism
+parasol
+parasympathetic
+parathion
+parathyroid
+paratrooper
+paratroops
+paratyphoid
+parboil
+parbuckle
+PARC
+parcel
+parceled
+parceling
+parcels
+parch
+parched
+parchment
+pard
+pardon
+pardon?
+pardonable
+pardonably
+pardoned
+pardoner
+pardoners
+pardoning
+pardons
+pare
+paregoric
+parent
+parentage
+parental
+parentheses
+parenthesis
+parenthesize
+parenthesized
+parenthesizes
+parenthesizing
+parenthetic
+parenthetical
+parenthetically
+parenthood
+parenting
+parents
+parer
+pares
+pareses
+paresis
+Pareto
+parfait
+parget
+pari-mutuel
+pariah
+parietal
+parimutuel
+paring
+parings
+Paris
+parish
+parishes
+parishioner
+Parisian
+Parisianization
+Parisianizations
+Parisianize
+Parisianizes
+parity
+park
+parka
+Parke
+parked
+parker
+parkers
+Parkersburg
+Parkhouse
+parking
+Parkinson
+Parkinsonian
+parkland
+parklike
+Parkman
+Parks
+parkway
+parlance
+parlay
+parley
+parliament
+parliamentarian
+parliamentary
+parliaments
+parlor
+parlors
+parlour
+parlour-maid
+parlous
+Parmesan
+parmigiana
+parmigiano
+Parnassus
+parochial
+parochialism
+parochially
+parodist
+parody
+parole
+paroled
+parolee
+paroles
+paroling
+parotid
+paroxysm
+paroxysmal
+parquet
+parquetry
+Parr
+parrakeet
+parricidal
+parricide
+parried
+Parrish
+parrot
+parroting
+parrots
+Parrs
+parry
+pars
+parse
+parsec
+parsed
+Parsee
+parser
+parsers
+parses
+Parsi
+Parsifal
+parsimonious
+parsimoniously
+parsimony
+parsing
+parsings
+parsley
+parsnip
+parson
+parsonage
+Parsons
+part
+part-song
+part-time
+part-timer
+partake
+partaken
+partaker
+partakes
+partaking
+parted
+parter
+parterre
+parters
+parthenogenesis
+Parthenon
+Parthia
+parti-colored
+partial
+partiality
+partially
+participant
+participants
+participate
+participated
+participates
+participating
+participation
+participator
+participatory
+participial
+participle
+particle
+particleboard
+particles
+particolored
+particular
+particularity
+particularization
+particularize
+particularly
+particulars
+particulate
+parties
+parting
+partings
+partisan
+partisans
+partisanship
+partition
+partitioned
+partitioning
+partitions
+partitive
+partizan
+partly
+partner
+partnered
+partners
+partnership
+partook
+partridge
+partridges
+parts
+parturient
+parturition
+partway
+party
+party-liner
+party-spirit
+parvenu
+Pasadena
+pascal
+paschal
+pasha
+Paso
+pasque-flower
+pass
+pass-book
+pass-fail
+pass-key
+passable
+passably
+passage
+passage(way)
+passages
+passageway
+Passaic
+PASSAT
+passbook
+passe
+passe-partout
+passed
+passel
+passenger
+passenger-boat
+passenger-train
+passengers
+passer
+passer-by
+passerby
+passers
+passers-by
+passersby
+passes
+passibility
+passim
+passing
+passing-bell
+passing-note
+passing-on
+passing-place
+passingly
+passion
+passion-flower
+passion-play
+passionate
+passionately
+passionflower
+passionless
+passions
+passivate
+passive
+passively
+passiveness
+passivity
+passkey
+Passover
+passport
+passports
+password
+passwords
+past
+pasta
+paste
+paste-board
+paste-down
+pasteboard
+pasted
+pastel
+paster
+pastern
+Pasternak
+pastes
+Pasteur
+pasteurization
+pasteurize
+pasteurizer
+pastiche
+pastille
+pastime
+pastimes
+pastiness
+pasting
+pastness
+pastor
+pastoral
+pastorate
+pastors
+pastrami
+pastry
+pasts
+pasturage
+pasture
+pastures
+pasty
+pat
+Patagonia
+Patagonians
+patch
+patch-work
+patchable
+patched
+patchery
+patches
+patchily
+patchiness
+patching
+patchwork
+patchy
+pate
+patella
+patellae
+paten
+patent
+patent-leather
+patentability
+patentable
+patented
+patentee
+patenter
+patenters
+patenting
+patently
+patents
+paterfamilias
+paternal
+paternalism
+paternalistic
+paternally
+paternity
+paternoster
+Paterson
+path
+pathetic
+pathetically
+pathfinder
+pathless
+pathname
+pathnames
+pathogen
+pathogenesis
+pathogenic
+pathological
+pathologically
+pathologist
+pathology
+pathos
+paths
+pathway
+pathways
+pathy
+patience
+patient
+patiently
+patients
+patina
+patio
+patisserie
+Patna
+patois
+patriarch
+patriarchal
+patriarchate
+patriarchs
+patriarchy
+Patrice
+Patricia
+patrician
+patricians
+patricide
+Patrick
+patrimonial
+patrimony
+patriot
+patriotic
+patriotically
+patriotism
+patriots
+patrol
+patrolled
+patrolling
+patrolman
+patrolmen
+patrols
+patrolwoman
+patron
+patronage
+patroness
+patronize
+patronized
+patronizer
+patronizes
+patronizing
+patronizingly
+patrons
+patronymic
+patronymically
+patroon
+pats
+Patsies
+patsy
+patten
+patter
+pattered
+pattering
+patterings
+pattern
+pattern-matching
+pattern-shop
+patterned
+patterning
+patterns
+patters
+Patterson
+Patti
+patties
+Patton
+patty
+Pat
+paucity
+Paul
+Paula
+Paulette
+Pauli
+Pauline
+Pauling
+Paulinize
+Paulinizes
+Paulo
+Paulsen
+Paulson
+Paulus
+paunch
+paunchy
+pauper
+pauperism
+pauperize
+pause
+paused
+pauses
+pausing
+Pavarotti
+pave
+paved
+pavement
+pavements
+paver
+paves
+pavilion
+pavilions
+paving
+Pavlov
+Pavlova
+Pavlovian
+paw
+pawing
+pawl
+pawn
+pawn-shop
+pawnbroker
+pawnbroking
+Pawnee
+pawns
+pawnshop
+pawpaw
+paws
+Pawtucket
+pay
+pay-day
+pay-load
+pay-per-view
+pay-TV
+payable
+payback
+paycheck
+paychecks
+payday
+payed
+payee
+payer
+payers
+paying
+payload
+paymaster
+paymasters
+payment
+payments
+Payne
+Paynes
+Paynize
+Paynizes
+payoff
+payoffs
+payola
+payout
+payroll
+payrolls
+pays
+payslip
+Payson
+Paz
+Pb
+PBS
+PBX
+PC
+PCB
+PCP
+PDT
+PE
+pea
+pea-hen
+pea-nut
+pea-shell
+pea-soup
+Peabody
+peace
+peace-pipe
+peaceable
+peaceably
+peaceful
+peacefully
+peacefulness
+peacekeeping
+peacemaker
+peacemaking
+peacetime
+peach
+peach-brandy
+peach-tree
+peaches
+Peachtree
+peachy
+peacock
+peacocks
+peafowl
+peahen
+peak
+peaked
+peaks
+peal
+Peale
+pealed
+pealing
+peals
+peanut
+peanuts
+pear
+pear-tree
+Pearce
+pearl
+pearls
+pearly
+pears
+Pearson
+Peary
+peas
+peasant
+peasantry
+peasants
+Pease
+peashooter
+peat
+peatbog
+peaty
+pebble
+pebbles
+pebbling
+pebbly
+pecan
+peccability
+peccable
+peccadillo
+peccancy
+peccant
+peccary
+peck
+pecked
+pecker
+pecking
+peckish
+pecks
+Pecos
+pectic
+pectin
+pectoral
+peculate
+peculation
+peculator
+peculiar
+peculiarities
+peculiarity
+peculiarly
+pecuniary
+pedagog
+pedagogic
+pedagogical
+pedagogically
+pedagogue
+pedagogy
+pedal
+pedals
+pedant
+pedantic
+pedantically
+pedantry
+peddle
+peddler
+peddlers
+peddling
+pederast
+pederasty
+pedestal
+pedestrian
+pedestrianize
+pedestrians
+pediatric
+pediatrician
+pediatrics
+pediatrist
+pedicab
+pedicure
+pedicurist
+pedigree
+pedigreed
+pediment
+pedlar
+pedlary
+pedometer
+Pedro
+peduncle
+pee
+pee-ka-boo
+peek
+peek-a-boo
+peekaboo
+peeked
+peeking
+peeks
+peel
+peeled
+peeler
+peeling
+peelings
+peels
+peen
+peep
+peep-hole
+peeped
+peeper
+peephole
+peeping
+peeps
+peepshow
+peer
+peerage
+peered
+peeress
+peering
+peerless
+peers
+peeve
+peevish
+peevishly
+peevishness
+peewee
+peewit
+peg
+Pegasus
+pegboard
+Peggy
+pegs
+peignoir
+Peiping
+pejoration
+pejorative
+pejoratively
+peke
+Peking
+pekoe
+PEL
+pelage
+pelagic
+pelargonium
+pelerine
+pelf
+Pelham
+pelican
+pell-mell
+pellagra
+pellet
+pellicle
+pellmell
+pellucid
+pelmet
+Peloponnese
+peloton
+pelt
+pelting
+pelts
+pelves
+pelvic
+pelvis
+Pembroke
+pemmican
+pen
+pen-holder
+pen-name
+penal
+penalization
+penalize
+penalized
+penalizes
+penalizing
+penalties
+penalty
+penance
+pence
+penchant
+pencil
+penciled
+pencils
+pend
+pendant
+pended
+pendent
+pending
+Pendleton
+pends
+pendulate
+pendulous
+pendulum
+pendulums
+Penelope
+penes
+penetrability
+penetrable
+penetrate
+penetrated
+penetrates
+penetrating
+penetratingly
+penetration
+penetrations
+penetrative
+penetrator
+penetrators
+penguin
+penguins
+Penh
+penicillin
+penile
+peninsula
+peninsular
+peninsulas
+penis
+penises
+penitence
+penitent
+penitential
+penitentiary
+penitently
+penknife
+penknives
+penlight
+penlite
+penman
+penmanship
+Penn
+Penna
+pennant
+penned
+pennies
+penniless
+penning
+pennon
+Pennsylvania
+Pennsylvanian
+penny
+penny-pincher
+penny-pinching
+penny-wise
+penny-wort
+penny-worth
+pennyroyal
+pennyweight
+penologist
+penology
+Penrose
+pens
+Pensacola
+pension
+pensionable
+pensionary
+pensioner
+pensions
+pensive
+pensively
+pensiveness
+penstock
+pent
+pent-up
+pentacle
+pentagon
+pentagonal
+pentagons
+pentagram
+pentameter
+Pentateuch
+pentathlete
+pentathlon
+Pentecost
+Pentecostalism
+penthouse
+pentode
+penuche
+penultimate
+penumbra
+penumbrae
+penurious
+penuriously
+penuriousness
+penury
+peon
+peonage
+peony
+people
+peopled
+peoples
+Peoria
+pep
+pepless
+pepper
+pepper(s)
+peppercorn
+peppered
+pepperer-box
+peppering
+peppermint
+pepperoni
+peppers
+peppery
+peppiness
+peppy
+Pepsi
+pepsin
+peptic
+peptide
+per
+peradventure
+perambulate
+perambulation
+perambulator
+percale
+perceivable
+perceivably
+perceive
+perceived
+perceiver
+perceivers
+perceives
+perceiving
+percent
+percentage
+percentages
+percentile
+percentiles
+percents
+perceptible
+perceptibly
+perception
+perceptional
+perceptions
+perceptive
+perceptively
+perceptiveness
+perceptual
+perceptually
+percevable
+perch
+perchance
+perched
+perches
+perching
+percipience
+percipient
+Percival
+percolate
+percolation
+percolator
+percussion
+percussionist
+percutaneous
+Percy
+Percy-pants
+perdition
+perdue
+perdurable
+peregrinate
+peregrination
+peregrinator
+peregrine
+peremptorily
+peremptory
+perennial
+perennially
+perestroika
+Perez
+perfect
+perfecta
+perfected
+perfectibility
+perfectible
+perfecting
+perfection
+perfectionism
+perfectionist
+perfectionists
+perfectly
+perfectness
+perfects
+perfidious
+perfidiously
+perfidy
+perforate
+perforated
+perforation
+perforator
+perforce
+perform
+performance
+performances
+performed
+performer
+performers
+performing
+performs
+perfume
+perfumed
+perfumer
+perfumery
+perfumes
+perfuming
+perfunctorily
+perfunctory
+Pergamon
+pergola
+perhaps
+perhydrase
+perianth
+periapt
+pericardia
+pericardium
+Periclean
+Pericles
+pericope
+periderm
+perigee
+perihelia
+perihelion
+peril
+Perilla
+perilous
+perilously
+perils
+perimeter
+perinea
+perineum
+period
+periodic
+periodical
+periodically
+periodicals
+periodicity
+periodontal
+periodontics
+periodontist
+periods
+periostitis
+peripatetic
+peripheral
+peripherally
+peripherals
+peripheries
+periphery
+periphrase
+periphrases
+periphrasis
+periphrastic
+periscope
+perish
+perishable
+perishables
+Perishables!
+perished
+perisher
+perishers
+perishes
+perishing
+peristalses
+peristalsis
+peristaltic
+peristyle
+peritonea
+peritoneal
+peritoneum
+peritonitis
+periwig
+periwinkle
+perjure
+perjurer
+perjurious
+perjury
+perk
+perkily
+perkiness
+Perkins
+perky
+Perle
+perm
+permafrost
+permanence
+permanency
+permanent
+permanently
+permeability
+permeable
+permeate
+permeated
+permeates
+permeating
+permeation
+Permian
+permissibility
+permissible
+permissibly
+permission
+permissions
+permissive
+permissively
+permissiveness
+permit
+permits
+permitted
+permitting
+permutate
+permutation
+permutations
+permute
+permuted
+permutes
+permuting
+pernicious
+perniciously
+perniciousness
+pernickety
+Pernod
+peroration
+peroxide
+perpendicular
+perpendicularity
+perpendicularly
+perpendiculars
+perpetrate
+perpetrated
+perpetrates
+perpetrating
+perpetration
+perpetrations
+perpetrator
+perpetrators
+perpetual
+perpetually
+perpetuate
+perpetuated
+perpetuates
+perpetuating
+perpetuation
+perpetuity
+perplex
+perplexed
+perplexedly
+perplexing
+perplexity
+perquisite
+perry
+persecute
+persecuted
+persecutes
+persecuting
+persecution
+persecutor
+persecutors
+Perseid
+Persephone
+Perseus
+perseverance
+persevere
+persevered
+perseveres
+persevering
+Pershing
+Persia
+Persian
+Persianization
+Persianizations
+Persianize
+Persianizes
+Persians
+persiennes
+persiflage
+persimmon
+persist
+persisted
+persistence
+persistency
+persistent
+persistently
+persisting
+persists
+persnickety
+person
+persona
+personable
+personae
+personage
+personages
+personal
+personalities
+personality
+personalization
+personalize
+personalized
+personalizes
+personalizing
+personally
+personalty
+personate
+personification
+personified
+personifies
+personify
+personifying
+personnel
+persons
+perspective
+perspectives
+perspicacious
+perspicaciously
+perspicacity
+perspicuity
+perspicuous
+perspicuously
+perspiration
+perspire
+persuadable
+persuade
+persuaded
+persuader
+persuaders
+persuades
+persuading
+persuasion
+persuasions
+persuasive
+persuasively
+persuasiveness
+pert
+pertain
+pertained
+pertaining
+pertains
+Perth
+pertinacious
+pertinaciously
+pertinacity
+pertinence
+pertinency
+pertinent
+pertinently
+pertly
+pertness
+perturb
+perturbation
+perturbations
+perturbed
+pertussis
+Peru
+peruke
+perusal
+peruse
+perused
+peruser
+perusers
+peruses
+perusing
+Peruvian
+Peruvianize
+Peruvianizes
+Peruvians
+pervade
+pervaded
+pervades
+pervading
+pervasion
+pervasive
+pervasively
+pervasiveness
+perverse
+perversely
+perverseness
+perversion
+perversity
+perversive
+pervert
+perverted
+perverts
+pervious
+peseta
+peskily
+peskiness
+pesky
+peso
+pessimism
+pessimist
+pessimistic
+pessimistically
+pest
+pester
+pesticide
+pestiferous
+pestilence
+pestilent
+pestilential
+pestle
+pesto
+pests
+pet
+petal
+petaled
+petals
+petard
+petcock
+Pete
+petebox
+peter
+peterman
+Peters
+Petersburg
+Petersen
+Peterson
+petiole
+petit-bourgeois
+petite
+petition
+petitioned
+petitioner
+petitioning
+petitions
+Petkiewicz
+petrel
+petri
+petrifaction
+petrified
+petrify
+petrochemical
+petrodollar
+petrodollars
+petrol
+petrolatum
+petroleum
+petrologist
+petrology
+pets
+petted
+petter
+petters
+Pettibone
+petticoat
+petticoats
+pettifog
+pettifogger
+pettily
+pettiness
+petting
+pettish
+pettishly
+pettishness
+pettitoes
+petty
+petty-bourgeois
+petty-minded
+petulance
+petulant
+petulantly
+petunia
+Peugeot
+pew
+Pewaukee
+pewee
+pewit
+pews
+pewter
+peyote
+PFC
+pfennig
+Pfizer
+PG
+PG-13
+pH
+Phaedra
+phaeton
+phagocyte
+phalange
+phalanger
+phalanges
+phalanx
+phalli
+phallic
+phallus
+phantasm
+phantasmagoria
+phantasmal
+phantasy
+phantom
+phantoming
+phantoms
+Pharisaic
+Pharisaical
+Pharisee
+pharmaceutic
+pharmaceutical
+pharmaceuticals
+pharmaceutics
+pharmacist
+pharmacological
+pharmacologist
+pharmacology
+pharmacopeia
+pharmacopoeia
+pharmacy
+pharyngeal
+pharynges
+pharyngitis
+pharynx
+phase
+phased
+phasemeter
+phaseout
+phaser
+phasers
+phases
+phasing
+PhD
+pheasant
+pheasantry
+pheasants
+phellem
+Phelps
+phenacetin
+phenobarbital
+phenol
+phenomen
+phenomena
+phenomenal
+phenomenally
+phenomenological
+phenomenologically
+phenomenologies
+phenomenology
+phenomenon
+pheromone
+phew
+phi
+phial
+PHIGS
+Phil
+Philadelphia
+philander
+philanderer
+philandering
+philanthropic
+philanthropically
+philanthropist
+philanthropy
+philatelic
+philatelist
+philately
+Philco
+philharmonic
+Philip
+Philippe
+Philippians
+philippic
+Philippine
+Philippines
+Philistine
+Philistines
+philistinism
+Philistinize
+Philistinizes
+Phillies
+Phillip
+Phillips
+Philly
+philodendra
+philodendron
+philological
+philologist
+philology
+philosopher
+philosophers
+philosophic
+philosophical
+philosophically
+philosophies
+philosophize
+philosophized
+philosophizer
+philosophizers
+philosophizes
+philosophizing
+philosophy
+philter
+philtre
+Phipps
+phiz
+phlebitis
+phlegm
+phlegmatic
+phlegmatically
+phloem
+phlox
+phobia
+phobic
+Phobos
+phoebe
+Phoenicia
+Phoenician
+phoenix
+phonate
+phone
+phoned
+phoneme
+phonemes
+phonemic
+phonemically
+phones
+phonetic
+phonetically
+phonetician
+phoneticism
+phoneticist
+phonetics
+phonetism
+phoney
+phonic
+phonically
+phonics
+phoniness
+phoning
+phonodisc
+phonogram
+phonograph
+phonographic
+phonographs
+phonological
+phonologically
+phonologist
+phonology
+phonorecord
+phonotype
+phonotypical
+phonus-bolonus
+phony
+phooey
+phosgene
+phosphate
+phosphates
+phosphor
+phosphoresce
+phosphorescence
+phosphorescent
+phosphorescently
+phosphoric
+phosphorous
+phosphorus
+photo
+photo-cell
+photo-flash
+photo-offset
+photo-recording
+photo-zinkography
+photocamera
+photocell
+photocomposition
+photoconductor
+photocopied
+photocopier
+photocopiers
+photocopies
+photocopy
+photocopying
+photodiode
+photodiodes
+photoduplicate
+photoduplicator
+photoelectric
+photoelectrically
+photoengrave
+photoengraver
+photoengraving
+photofinishing
+photogenic
+photogenically
+photograph
+photographed
+photographer
+photographers
+photographic
+photographically
+photographing
+photographs
+photography
+photogravure
+photojournalism
+photojournalist
+photolithography
+photomask
+photomaster
+photometer
+photomicrocopy
+photomicrograph
+photomicrography
+photomontage
+photon
+photophone
+photoprint
+photoreceptor
+photos
+photosensitive
+photosenzor
+photosetting
+photostat
+photostatic
+photosynthesis
+photosynthesize
+photosynthetic
+phototelegraphy
+phototypesetter
+phototypesetters
+phototypesetting
+photozincography
+phrasal
+phrase
+phrase-book
+phrased
+phraseological
+phraseology
+phrases
+phrasing
+phrasings
+phrenetic
+phrenologist
+phrenology
+phthisical
+phthisis
+phyla
+phylactery
+Phyllis
+phylogeny
+phylum
+physic
+physical
+physically
+physicalness
+physicals
+physician
+physicians
+physicist
+physicists
+physics
+physiognomic
+physiognomy
+physiography
+physiologic
+physiological
+physiologically
+physiologist
+physiology
+physiotherapist
+physiotherapy
+physique
+phytoplankton
+pi
+piaffe
+pianissimo
+pianist
+piano
+pianoforte
+pianos
+piaster
+piastre
+piazza
+piazze
+pibroch
+pica
+picador
+picaresque
+picaroon
+picas
+Picasso
+picayune
+Piccadilly
+piccalilli
+piccolo
+pick
+pick-me-up
+pick-up
+pickaback
+pickax
+pickaxe
+picked
+picker
+picker-upper
+pickerel
+Pickering
+pickers
+picket
+picketed
+picketer
+picketers
+picketing
+pickets
+Pickett
+Pickford
+picking
+pickings
+pickle
+pickled
+pickles
+pickling
+picklock
+Pickman
+pickpocket
+picks
+picktooth
+pickup
+pickups
+picky
+picnic
+picnicked
+picnicker
+picnicking
+picnics
+picofarad
+picojoule
+picoprocessor
+picosecond
+picot
+Pict
+pictogram
+pictograph
+pictographic
+pictography
+pictorial
+pictorially
+picture
+picture-book
+picture-gallery
+picture-phone
+picture-postcard
+picture-writing
+pictured
+pictures
+picturesque
+picturesquely
+picturesqueness
+picturing
+PID
+piddle
+piddling
+piddly
+pidgin
+pie
+pie-eyed
+piebald
+piece
+piece-rate
+pieced
+piecemeal
+pieces
+piecewise
+piecework
+pieceworker
+piecing
+pied
+pied-a-terre
+Piedfort
+Piedmont
+pieds-a-terre
+pier
+pierage
+pierce
+pierced
+pierces
+piercing
+piercingly
+Pierre
+piers
+Pierson
+pies
+piety
+piezoelectric
+piffle
+piffling
+pig
+pig-cote
+pig-headed
+pig-iron
+pig-out
+pig-sty
+pigeon
+pigeon-hearted
+pigeon-toed
+pigeonhole
+pigeons
+piggery
+piggish
+piggishly
+piggishness
+piggy
+piggy-bank
+piggyback
+piggybacked
+piggybacking
+piggybacks
+pigheaded
+pigheadedly
+pigheadedness
+piglet
+pigling
+pigment
+pigmentation
+pigmented
+pigments
+pigmy
+pignut
+pigpen
+pigs
+pigskin
+pigsty
+pigtail
+pike
+pikeman
+piker
+pikes
+pikestaff
+pilaf
+pilaff
+pilaster
+Pilate
+pilau
+pilchard
+pile
+pile-driver
+pile-plank
+pile-up
+piled
+pilers
+piles
+pileup
+pilfer
+pilferage
+pilferer
+pilgrim
+pilgrimage
+pilgrimages
+pilgrims
+piling
+pilings
+pill
+pillage
+pillaged
+pillager
+pillar
+pillar-box
+pillared
+pillars
+pillbox
+pillion
+pillory
+pillow
+pillow-case
+pillow-slip
+pillowcase
+pillows
+pillowslip
+pills
+Pillsbury
+pilose
+pilot
+pilothouse
+piloting
+pilots
+pilous
+pimento
+pimiento
+pimp
+pimpernel
+pimple
+pimpled
+pimply
+pin
+pin-artist
+pin-case
+pin-cushion
+pin-point
+pin-striped
+pin-up
+pinafore
+pinata
+pinball
+pinboard
+pince-nez
+pincer
+pincers
+pinch
+pinch-hit
+pinch-hitter
+pinchbeck
+pinched
+pinches
+pinchgut
+pinching
+pincushion
+pine
+pine-apple
+pine-martin
+pine-tree
+pine-wood
+pineapple
+pineapples
+pined
+Pinehurst
+pines
+piney
+pinfeather
+ping
+ping-pong
+pinguid
+pinhead
+pinhold
+pinhole
+pining
+pinion
+pink
+pink-eyed
+pinker
+pinkest
+pinkeye
+pinkie
+pinkish
+pinkly
+pinkness
+pinko
+pinks
+pinky
+pinnace
+pinnacle
+pinnacles
+pinnate
+pinned
+pinning
+pinnings
+pinochle
+pinocle
+pinon
+pinpoint
+pinpointing
+pinpoints
+pinprick
+pins
+pinscher
+pinsetter
+Pinsky
+pinstripe
+pinstriped
+pint
+pint-size
+pint-sized
+Pinter
+pintle
+pintle-hook
+pinto
+pints
+pinup
+pinwheel
+piny
+pinyon
+pion
+pioneer
+pioneered
+pioneering
+pioneers
+Piotr
+pious
+piously
+piousness
+pip
+pip-line
+pip-squeak
+pip-stick
+pip-tree
+pipe
+pipe-tongs
+piped
+pipeline
+pipelined
+pipelines
+pipelining
+piper
+pipers
+pipes
+Pipestone
+pipette
+piping
+pipistrel
+pipistrelle
+pipit
+pipkin
+pippin
+pipsqueak
+piquancy
+piquant
+piquantly
+pique
+piquet
+piracy
+Piraeus
+piragua
+piranha
+pirate
+pirates
+piratic
+piratical
+piratically
+pirogi
+piroshki
+pirouette
+pis
+Pisa
+Piscataway
+piscatorial
+piscatory
+Pisces
+pish
+pismire
+piss
+pissed
+pisser
+pisspoor
+pistachio
+pistil
+pistillate
+pistils
+pistol
+pistol-whip
+pistols
+piston
+piston-rod
+pistons
+pit
+pit-a-pat
+pita
+pitapat
+pitch
+pitch-black
+pitch-dark
+pitch-dark(ness)
+pitch-darkness
+pitchblende
+pitched
+pitcher
+pitchers
+pitches
+pitchfork
+pitching
+pitchman
+pitchy
+piteous
+piteously
+piteousness
+pitfall
+pitfalls
+pith
+pithed
+pithes
+pithier
+pithiest
+pithily
+pithiness
+pithing
+pithy
+pitiable
+pitiably
+pitied
+pitier
+pitiers
+pities
+pitiful
+pitifully
+pitiless
+pitilessly
+pitilessness
+pitman
+Pitney
+piton
+pits
+Pitt
+pittance
+pitted
+pitter-patter
+pitting
+Pittsburgh
+Pittsburghers
+Pittsfield
+Pittston
+pituitary
+pity
+pitying
+pityingly
+Pius
+pivot
+pivotal
+pivoted
+pivoting
+pivots
+pix
+pixel
+pixels
+pixie
+pixilated
+pixy
+Pizarro
+pizazz
+pizza
+pizzazz
+pizzeria
+pizzicato
+placability
+placable
+placard
+placards
+placate
+placation
+placatory
+place
+placebo
+placed
+placeholder
+placekick
+placement
+placements
+placenta
+placentae
+placental
+placer
+places
+placid
+placidity
+placidly
+placing
+placket
+plagiarism
+plagiarist
+plagiarize
+plagiarizer
+plagiary
+plague
+plagued
+plagues
+plaguing
+plaguy
+plaice
+plaid
+plaids
+plain
+plain-clothes
+plain-hearted
+plain-spoken
+plain-truth
+plainclothes
+plainclothesman
+plainer
+plainest
+Plainfield
+plainly
+plainness
+plains
+plainsman
+plainsong
+plainspoken
+plaint
+plaintext
+plaintexts
+plaintiff
+plaintiffs
+plaintive
+plaintively
+plaintiveness
+Plainview
+plait
+plaits
+plan
+planar
+planarity
+Planck
+plane
+planed
+planeload
+planer
+planers
+planes
+planet
+planetaria
+planetarium
+planetary
+planetesimal
+planetoid
+planets
+plangency
+plangent
+planing
+planish
+plank
+plank-bed
+planking
+planks
+plankton
+planned
+plannedness
+planner
+planners
+planning
+Plano
+planoconcave
+planoconvex
+planography
+plans
+plant
+plant-louse
+plantain
+plantar
+plantation
+plantations
+planted
+planter
+planters
+planting
+plantings
+plantlike
+plants
+plap
+plaque
+plaquette
+plash
+plasm
+plasma
+plasmatic
+plaster
+plasterboard
+plastered
+plasterer
+plastering
+plasters
+plastic
+plasticity
+plasticize
+plasticizer
+plastics
+plastron
+plat
+plate
+plate-basket
+plate-cover
+plate-glass
+plate-mark
+plate-rack
+plate-stand
+plateau
+plateaus
+plateaux
+plated
+plateful
+platelet
+platelets
+platen
+platens
+plates
+platform
+platforms
+plating
+platinum
+platitude
+platitudinous
+Plato
+Platonic
+Platonism
+Platonist
+platoon
+Platte
+platter
+platters
+Platteville
+platy
+platypi
+platypus
+platys
+plaudit
+plaudits
+plausibility
+plausible
+plausibly
+play
+play-act
+play-by-play
+play-ground
+play-off
+playable
+playact
+playacting
+playback
+playbill
+playboy
+played
+player
+players
+playfellow
+playful
+playfully
+playfulness
+playgirl
+playgoer
+playground
+playgrounds
+playhouse
+playing
+playing-cards
+playing-field
+playmate
+playmates
+playoff
+playout
+playpen
+playroom
+plays
+plaything
+playthings
+playtime
+playwright
+playwrights
+playwriting
+plaza
+plea
+plea-bargain
+plead
+pleaded
+pleader
+pleading
+pleads
+pleas
+pleasant
+pleasantly
+pleasantness
+pleasantry
+please
+pleased
+pleases
+pleasing
+pleasingly
+pleasurable
+pleasurably
+pleasure
+pleasure-ground
+pleasureful
+pleasures
+pleat
+pleated
+plebe
+plebeian
+plebian
+plebiscite
+plebiscites
+plectra
+plectrum
+pled
+pledge
+pledged
+pledger
+pledget
+Pleiades
+Pleistocene
+plenary
+plenipotentiary
+plenitude
+plenteous
+plentiful
+plentifully
+plenty
+plenum
+pleonasm
+plethora
+pleura
+pleurae
+pleurisy
+Plexiglas
+plexiglass
+plexure
+plexus
+pliability
+pliable
+pliancy
+pliant
+plied
+pliers
+plies
+plight
+Plimsoll
+plinth
+Pliny
+Pliocene
+PLO
+plod
+plodder
+plodding
+plop
+plot
+plots
+plotted
+plotter
+plotters
+plotting
+plough
+plough-beam
+plough-boy
+plough-land
+plough-share
+plough-tail
+plough-wright
+plougher
+ploughman
+ploughshare
+plover
+plow
+plowed
+plower
+plowing
+plowman
+plows
+plowshare
+ploy
+ploys
+pluck
+plucked
+pluckily
+pluckiness
+plucking
+plucks
+plucky
+plug
+plug-and-go
+plug-in
+plug-ugly
+plugboard
+pluggable
+plugged
+plugging
+plugs
+plum
+plumage
+plumb
+plumb-line
+plumbago
+plumbed
+plumbeous
+plumber
+plumbing
+plumbs
+plume
+plumed
+plumes
+plummet
+plummeting
+plump
+plumped
+plumply
+plumpness
+plums
+plumy
+plunder
+plundered
+plunderer
+plunderers
+plundering
+plunders
+plunge
+plunged
+plunger
+plungers
+plunges
+plunging
+plunk
+pluperfect
+plural
+pluralism
+pluralist
+pluralistic
+plurality
+pluralization
+pluralize
+plurals
+plus
+pluses
+plush
+plushly
+plushness
+plushy
+Plutarch
+Pluto
+plutocracy
+plutocrat
+plutocratic
+plutonium
+pluvial
+pluvious
+ply
+plyer
+Plymouth
+plywood
+PMS
+pneumatic
+pneumatically
+pneumatics
+pneumonia
+po-hunter
+poach
+poacher
+poaches
+Pocahontas
+pock
+pocked
+pocket
+pocket-book
+pocket-handkerchief
+pocket-knife
+pocket-money
+pocketbook
+pocketbooks
+pocketed
+pocketful
+pocketing
+pocketknife
+pocketknives
+pockets
+pockmark
+pockmarked
+pockwood
+pocky
+Pocono
+Poconos
+pod
+Podgorica
+podgy
+podia
+podiatrist
+podiatry
+podium
+pods
+Podunk
+Poe
+poem
+poems
+poesy
+poet
+poetaster
+poetess
+poetic
+poetical
+poetically
+poeticism
+poetics
+poetize
+poetries
+poetry
+poets
+pogey
+pogo
+pogrom
+poi
+poignancy
+poignant
+poignantly
+Poincare
+poinciana
+Poindexter
+poinsettia
+point
+point-blank
+point-device
+point-duty
+pointblank
+pointed
+pointedly
+pointedness
+pointer
+pointers
+pointillism
+pointillist
+pointing
+pointless
+pointlessly
+pointlessness
+points
+pointsman
+pointy
+poise
+poised
+poises
+poison
+poison-fang
+poison-gas
+poison-nut
+poisoned
+poisoner
+poisoning
+poisonous
+poisonously
+poisonousness
+poisons
+Poisson
+poke
+poke-pudding
+poked
+poker
+poker-faced
+pokerface
+pokes
+pokey
+poking
+poky
+pol
+polaire
+Poland
+polar
+Polaris
+polarities
+polarity
+polarization
+polarize
+polarizer
+Polaroid
+pole
+pole-cat
+pole-hedge
+pole-star
+pole-vault
+pole-vaulter
+polecat
+poled
+polemic
+polemical
+polemically
+polemicist
+polemics
+poles
+polestar
+police
+police-court
+police-office
+police-station
+policed
+policeman
+policemen
+polices
+policewoman
+policies
+policing
+policlinic
+policy
+policyholder
+poling
+polio
+poliomyelitis
+polish
+polished
+polisher
+polishers
+polishes
+polishing
+polite
+politely
+politeness
+politer
+politesse
+politest
+politic
+political
+politically
+politician
+politicians
+politicization
+politicize
+politicized
+politicking
+politico
+politics
+polity
+Polk
+polka
+polka-dot
+poll
+poll-day
+poll-degree
+poll-tax
+pollack
+pollard
+polled
+pollen
+pollinate
+pollination
+pollinator
+polling
+polliwog
+polloi
+polls
+pollster
+pollutant
+pollute
+polluted
+polluter
+pollutes
+polluting
+pollution
+Pollux
+pollywog
+polo
+polonaise
+polonium
+polony
+poltergeist
+poltroon
+poltroonery
+poly-
+polyalphabetic
+polyandrous
+polyandry
+polyanthus
+polychromy
+polyclinic
+polyester
+polyethylene
+polygamist
+polygamous
+polygamy
+polyglot
+polygon
+polygonal
+polygons
+polygraph
+polygraphy
+polyhedra
+polyhedral
+polyhedron
+Polyhymnia
+polyline
+polymarker
+polymath
+polymer
+polymeric
+polymerization
+polymerize
+polymers
+polymorphic
+Polynesia
+Polynesian
+polynomial
+polynomials
+polyp
+Polyphemus
+polyphonic
+polyphony
+polypi
+polypropylene
+polypus
+polypuses
+polysemy
+polystyrene
+polysyllabic
+polysyllable
+polytechnic
+polyterm
+polytheism
+polytheist
+polytheistic
+polythene
+polyunsaturated
+polyurethane
+polyvalent
+polyvinyl
+pom-pom
+pomace
+pomade
+pomander
+pomatum
+pome
+pomegranate
+pomelo
+Pomerania
+Pomeranian
+pomiculture
+pommel
+pomology
+Pomona
+pomp
+pompadour
+pompano
+Pompeian
+Pompeii
+Pompey
+pompom
+pompon
+pomposity
+pompous
+pompously
+pompousness
+Ponce
+Ponchartrain
+poncho
+pond
+ponder
+ponderability
+ponderable
+ponderables
+pondered
+ponderer
+pondering
+ponderous
+ponderously
+ponderousness
+ponders
+ponds
+pone
+pong
+pongee
+poniard
+ponies
+Pontchartrain
+Pontiac
+Pontic
+pontiff
+pontific
+pontifical
+pontifically
+pontificate
+pontoon
+pony
+ponytail
+pooch
+pood
+poodle
+poof
+pooh
+pooh-pooh
+pool
+pool-room
+Poole
+pooled
+pooling
+poolroom
+pools
+Poona
+poop
+pooped
+poor
+poor-house
+poor-law
+poor-mouth
+poorboy
+poorer
+poorest
+poorhouse
+poorly
+poorness
+pop
+pop-eyed
+pop-gun
+pop-up
+popcorn
+pope
+Popek
+Popeks
+popgun
+popinjay
+popish
+poplar
+poplin
+Popocatepetl
+popover
+poppa
+popped
+popper
+poppet
+poppies
+popping
+popple
+poppy
+poppy-head
+poppycock
+pops
+Popsicle
+Popsicles
+populace
+popular
+popularity
+popularization
+popularize
+popularized
+popularizes
+popularizing
+popularly
+populate
+populated
+populates
+populating
+population
+populations
+populism
+populist
+populous
+populousness
+poplenina
+porcelain
+porch
+porches
+porcine
+porcupine
+porcupines
+pore
+pored
+pores
+porgy
+poring
+pork
+pork-butcher's
+pork-pie
+porker
+porkling
+porky
+porn
+porno
+pornographer
+pornographic
+pornographically
+pornography
+porosity
+porous
+porousness
+porphyritic
+porphyry
+porpoise
+porridge
+porringer
+port
+Port-au-Prince
+port-hole
+Port-of-Spain
+portability
+portable
+portage
+portal
+portals
+portcullis
+Porte
+ported
+portend
+portended
+portending
+portends
+portent
+portentous
+portentously
+porter
+porter-house
+porterage
+porterhouse
+porters
+portfolio
+portfolios
+porthole
+portholes
+Portia
+portico
+portiere
+porting
+portion
+portions
+Portland
+portliness
+portly
+portmanteau
+portmanteaux
+Porto
+portrait
+portraitist
+portraits
+portraiture
+portray
+portrayal
+portrayed
+portraying
+portrays
+ports
+Portsmouth
+Portugal
+Portuguese
+portulaca
+poruchy
+pose
+posed
+Poseidon
+poser
+posers
+poses
+poseur
+posh
+posing
+posit
+posited
+positing
+position
+positional
+positioned
+positioner
+positioning
+positions
+positive
+positively
+positiveness
+positives
+positivism
+positron
+posits
+Posner
+posse
+possess
+possessed
+possesses
+possessing
+possession
+possessional
+possessions
+possessive
+possessively
+possessiveness
+possessor
+possessors
+possibilities
+possibility
+possible
+possibly
+possum
+possums
+post
+post-
+post-bag
+post-bill
+post-box
+post-boy
+post-chaise
+post-coach
+post-date
+post-editing
+post-free
+Post-it
+post-mortem
+post-office
+post-war
+postage
+postal
+postcard
+postcondition
+postconsonantal
+postcoordination
+postdate
+postdoctoral
+posted
+poster
+posterior
+posteriori
+posteriority
+posterity
+postern
+posters
+postface
+POSTFAX
+postfix
+postgraduate
+posthaste
+posthumous
+posthumously
+posthypnotic
+postilion
+postillion
+postindustrial
+posting
+postlude
+postman
+postmark
+postmaster
+postmasters
+postmeridian
+postmistress
+postmodern
+postmortem
+postnasal
+postnatal
+postoperative
+postorder
+postpaid
+postpartum
+postpone
+postponed
+postponement
+postponing
+postprandial
+postprocess
+postprocessing
+postprocessor
+posts
+postscript
+postscripts
+postulant
+postulate
+postulated
+postulates
+postulating
+postulation
+postulations
+posture
+postures
+postwar
+postwoman
+posy
+pot
+pot-boiler
+pot-boy
+pot-hat
+pot-herb
+pot-hole
+pot-hook
+pot-house
+pot-ladle
+pot-lid
+pot-luck
+pot-pan
+pot-sherd
+potability
+potable
+potables
+potash
+potassium
+potation
+potato
+potato-box
+potato-trap
+potatoes
+potbellied
+potbelly
+potboiler
+Potemkin
+potency
+potent
+potentate
+potentates
+potential
+potentialities
+potentiality
+potentially
+potentials
+potentiating
+potentiometer
+potentiometers
+potently
+potful
+pothead
+pother
+potherb
+potholder
+pothole
+pothook
+potion
+potlatch
+potlicker
+potluck
+Potomac
+potpie
+potpourri
+pots
+Potsdam
+potsherd
+potshot
+pottage
+Pottawatomie
+potted
+potter
+potters
+pottery
+potting
+Potts
+potty
+pouch
+pouches
+Poughkeepsie
+poult
+poulterer
+poulterer's
+poultice
+poultry
+pounce
+pounced
+pounces
+pouncing
+pound
+poundage
+pounded
+pounder
+pounders
+pounding
+pounds
+pour
+pourability
+poured
+pourer
+pourers
+pouring
+pours
+Poussin
+Poussins
+pout
+pouted
+pouter
+pouting
+pouts
+poverty
+poverty-line
+poverty-stricken
+POW
+pow-wow
+powder
+powder-magazine
+powder-mine
+powder-puff
+powdered
+powdering
+powderpuff
+powders
+powdery
+Powell
+power
+power-play
+powerboat
+powered
+powerful
+powerfully
+powerfulness
+powerhouse
+powering
+powerless
+powerlessly
+powerlessness
+Powers
+Powhatan
+powwow
+pox
+Poynting
+Poznan
+pP
+PPS
+practicability
+practicable
+practicably
+practical
+practicalities
+practicality
+practically
+practice
+practiced
+practices
+practician
+practicing
+practicum
+practile
+practise
+practised
+practitioner
+practitioners
+Pradesh
+Prado
+praetor
+praetorian
+pragmatic
+pragmatical
+pragmatically
+pragmaticism
+pragmatics
+pragmatism
+pragmatist
+Prague
+Praguer
+Praia
+prairie
+praise
+praised
+praiseful
+praiser
+praisers
+praises
+praiseworthiness
+praiseworthy
+praising
+praisingly
+praline
+pram
+prance
+pranced
+prancer
+prancing
+prancingly
+prank
+prankful
+prankish
+pranks
+prankster
+praseodymium
+prate
+prater
+pratfall
+praties
+Pratt
+prattle
+prattler
+Prattville
+Pravda
+prawn
+pray
+prayed
+prayer
+prayer-book
+prayer-wheel
+prayerful
+prayerfully
+prayers
+praying
+PRC
+pre
+pre-
+pre-authorization
+pre-capitalistic
+pre-Columbian
+pre-conscription
+pre-date
+pre-edit
+pre-editing
+pre-eminence
+pre-eminent
+pre-eminently
+pre-empt
+pre-exist
+pre-Marxist
+pre-mastering
+pre-Munich
+pre-plan
+pre-printed
+pre-processing
+pre-requisite
+pre-war
+preach
+preached
+preacher
+preachers
+preaches
+preaching
+preachment
+preachy
+preadolescence
+preallocate
+preallocated
+preallocating
+preamble
+preambles
+preapprehension
+prearrange
+prearranged
+prearrangement
+preassign
+preassigned
+preassigning
+preassigns
+prebend
+prebinding
+Precambrian
+precancel
+precancerous
+precapitalist
+precarious
+precariously
+precariousness
+precatory
+precaution
+precautionary
+precautions
+precede
+preceded
+precedence
+precedences
+precedent
+precedented
+precedents
+precedes
+preceding
+precentor
+precept
+preceptor
+precepts
+precess
+precession
+precinct
+precincts
+preciosity
+precious
+preciously
+preciousness
+precipice
+precipitable
+precipitance
+precipitant
+precipitate
+precipitated
+precipitately
+precipitateness
+precipitates
+precipitating
+precipitation
+precipitous
+precipitously
+precis
+precise
+precisely
+preciseness
+precisian
+precision
+precisions
+preclude
+precluded
+precludes
+precluding
+preclusion
+preclusive
+precocious
+precociously
+precociousness
+precocity
+precognition
+precognitive
+precolonial
+precompute
+precomputed
+precomputing
+preconceive
+preconceived
+preconception
+preconceptions
+precondition
+preconditioned
+preconditions
+preconsign
+precook
+precoordination
+precursor
+precursors
+precursory
+predacious
+predate
+predated
+predates
+predating
+predator
+predatory
+predecease
+predecessor
+predecessors
+predefine
+predefined
+predefines
+predefining
+predefinition
+predefinitions
+predesignate
+predestinate
+predestination
+predestine
+predestined
+predetermination
+predetermine
+predetermined
+predeterminer
+predetermines
+predetermining
+predial
+predicable
+predicament
+predicate
+predicated
+predicates
+predicating
+predication
+predications
+predicative
+predict
+predictability
+predictable
+predictably
+predicted
+predicting
+prediction
+predictions
+predictive
+predictor
+predicts
+predigest
+predilection
+predilections
+predispose
+predisposed
+predisposition
+predominance
+predominant
+predominantly
+predominate
+predominated
+predominately
+predominates
+predominating
+predomination
+preemie
+preeminence
+preeminent
+preeminently
+preempt
+preempted
+preempting
+preemption
+preemptive
+preemptor
+preempts
+preen
+preexist
+preexistence
+preexisting
+prefab
+prefabricate
+prefabricated
+prefabrication
+preface
+prefaced
+prefaces
+prefacing
+prefatory
+prefect
+prefecture
+prefer
+preferable
+preferably
+preference
+preferences
+preferential
+preferentially
+preferment
+preferred
+preferring
+prefers
+prefigure
+prefilling
+prefix
+prefixed
+prefixes
+prefixing
+preform
+preformatting
+pregnancy
+pregnant
+preheat
+prehensile
+prehension
+prehistoric
+prehistorical
+prehistorically
+prehistory
+preinitialize
+preinitialized
+preinitializes
+preinitializing
+prejudge
+prejudged
+prejudgment
+prejudice
+prejudiced
+prejudices
+prejudicial
+prekindergarten
+prelacy
+prelate
+prelect
+prelection
+preliminaries
+preliminary
+prelims
+prelisting
+preliterate
+preload
+prelude
+preludes
+prelusive
+premarital
+premark
+premature
+prematurely
+prematurity
+premed
+premedical
+premeditate
+premeditated
+premeditation
+premenstrual
+premier
+premiere
+premiers
+premiership
+premise
+premises
+premiss
+premium
+premiums
+premix
+premolar
+premonish
+premonition
+premonitory
+prenatal
+prenatally
+prentice
+Prenticed
+Prenticing
+prenuptial
+preoccupation
+preoccupied
+preoccupies
+preoccupy
+preoperative
+preopinion
+preordain
+preordained
+preordination
+prep
+prepackage
+prepaid
+preparation
+preparations
+preparative
+preparatives
+preparatory
+prepare
+prepared
+preparedness
+prepares
+preparing
+prepay
+prepayment
+prepend
+prepended
+prepending
+prepense
+preponderance
+preponderant
+preponderantly
+preponderate
+preposition
+prepositional
+prepositionally
+prepositions
+prepossess
+prepossessing
+prepossession
+preposterous
+preposterously
+preppie
+preppy
+preprint
+preprocessed
+preprocessing
+preprocessor
+preprocessors
+preproduction
+preprogrammed
+prepubescence
+prepubescent
+prepublication
+prepuce
+prepunching
+prequel
+prerecord
+prerecorded
+preregister
+preregistration
+prerelease
+prerequisite
+prerequisites
+prerogative
+prerogatives
+presage
+presbyopia
+presbyter
+presbyterian
+Presbyterianism
+Presbyterianize
+Presbyterianizes
+presbytery
+preschool
+preschooler
+prescience
+prescient
+presciently
+Prescott
+prescribe
+prescribed
+prescribes
+prescript
+prescription
+prescriptions
+prescriptive
+prescriptively
+preselect
+preselected
+preselecting
+preselection
+preselector
+preselects
+presence
+presence-chamber
+presences
+present
+present-day
+presentable
+presentably
+presentation
+presentations
+presented
+presentee
+presenter
+presentiment
+presenting
+presently
+presentment
+presentness
+presents
+presequenced
+preservable
+preservation
+preservationist
+preservations
+preservative
+preserve
+preserved
+preserver
+preservers
+preserves
+preserving
+preset
+preshrank
+preshrink
+preshrunk
+preside
+presided
+presidency
+president
+presidential
+presidents
+presides
+presidia
+presiding
+presidium
+Presley
+presort
+presorting
+press
+press-agency
+press-cutting
+press-mark
+press-office
+press-proof
+press-reader
+press-release
+press-room
+pressed
+presser
+presses
+pressing
+pressingly
+pressings
+pressman
+pressure
+pressure-height
+pressured
+pressures
+pressuring
+pressurise
+pressurization
+pressurize
+pressurized
+pressurizer
+presswurst
+PRESTEL
+prestidigitate
+prestidigitation
+prestige
+prestigious
+presto
+Preston
+prestore
+prestressing
+presumable
+presumably
+presume
+presumed
+presumes
+presuming
+presumption
+presumptions
+presumptive
+presumptuous
+presumptuously
+presumptuousness
+presuppose
+presupposed
+presupposes
+presupposing
+presupposition
+pretax
+preteen
+pretence
+pretend
+pretended
+pretender
+pretenders
+pretending
+pretends
+pretense
+pretenses
+pretension
+pretensions
+pretentious
+pretentiously
+pretentiousness
+preterit
+preterite
+pretermission
+pretermit
+preternatural
+preternaturally
+pretest
+pretext
+pretexts
+Pretoria
+Pretorian
+prettier
+prettiest
+prettify
+prettily
+prettiness
+pretty
+pretty-boy
+pretzel
+prevail
+prevailed
+prevailing
+prevailingly
+prevails
+prevalence
+prevalent
+prevalently
+prevalidation
+prevaricate
+prevarication
+prevaricator
+prevent
+preventable
+preventably
+preventative
+prevented
+preventible
+preventing
+prevention
+preventive
+preventives
+prevents
+preview
+previewed
+previewing
+previews
+previous
+previousle
+previously
+prevision
+prevue
+prewar
+prey
+preyed
+preying
+preys
+Priam
+priapic
+price
+price-current
+price-cut
+price-list
+priced
+priceless
+pricer
+pricers
+prices
+pricey
+pricing
+prick
+prick-down
+pricked
+pricker
+pricking
+prickle
+prickliness
+prickly
+pricks
+pricy
+pride
+prided
+prideful
+pridefully
+prides
+priding
+prie-dieu
+prier
+priest
+priestess
+priesthood
+Priestley
+priestliness
+priestly
+prig
+priggish
+priggishness
+prim
+prima
+primacy
+primaeval
+primal
+primaries
+primarily
+primarius
+primary
+primate
+primates
+prime
+prime-number
+primed
+primeness
+primer
+primers
+primes
+primeval
+priming
+primitive
+primitively
+primitiveness
+primitives
+primly
+primness
+primogenitor
+primogeniture
+primordial
+primordially
+primp
+primrose
+primula
+prince
+princedom
+princeliness
+princely
+princes
+princess
+princesses
+Princeton
+principal
+principalities
+principality
+principally
+principals
+Principe
+Principia
+principle
+principled
+principles
+prink
+print
+print-ink
+print-machine
+print-office
+print-press
+print-run
+print-seller
+print-works
+printable
+printably
+printball
+printed
+printer
+printers
+printery
+printing
+printing-ink
+printing-press
+printout
+prints
+prior
+prioress
+priori
+priorities
+prioritize
+priority
+priory
+Pripet
+Pripyat
+Priscilla
+prise
+prism
+prismatic
+prisms
+prison
+prisoner
+prisoners
+prisons
+prissily
+prissiness
+prissy
+pristine
+Pritchard
+prithee
+privacies
+privacy
+private
+privateer
+privately
+privateness
+privates
+privation
+privations
+privatise
+privative
+privatization
+privatize
+privet
+privies
+privilege
+privileged
+privileges
+privily
+priviti
+privy
+prize
+prize-fighter
+prized
+prizefight
+prizefighter
+prizefighting
+prizeman
+prizer
+prizers
+prizes
+prizewinner
+prizewinning
+prizing
+pro
+pro-
+pro-am
+pro-and-con
+pro-capitalist
+pro-choice
+pro-choicer
+pro-imperialist
+pro-life
+pro-lifer
+probabilistic
+probabilistically
+probabilities
+probability
+probable
+probably
+probate
+probated
+probates
+probating
+probation
+probational
+probationary
+probationer
+probative
+probe
+probed
+probes
+probing
+probings
+probity
+problem
+problematic
+problematical
+problematically
+problems
+proboscides
+proboscis
+procaine
+procedural
+procedurally
+procedure
+procedures
+proceed
+proceed-to-select
+proceeded
+proceeding
+proceedings
+proceeds
+process
+processed
+processes
+processing
+procession
+processional
+processor
+processors
+proclaim
+proclaimed
+proclaimer
+proclaimers
+proclaiming
+proclaims
+proclamation
+proclamations
+proclivities
+proclivity
+proconsul
+proconsular
+procotols
+procrastinate
+procrastinated
+procrastinates
+procrastinating
+procrastination
+procrastinator
+procreate
+procreation
+procreative
+procreator
+Procrustean
+Procrusteanize
+Procrusteanizes
+Procrustes
+Procter
+proctor
+procumbent
+procurabe
+procurable
+procuration
+procurator
+procure
+procured
+procurement
+procurements
+procurer
+procurers
+procures
+procuring
+Procyon
+prod
+prodigal
+prodigality
+prodigally
+prodigious
+prodigiously
+prodigy
+produce
+produced
+producer
+producers
+produces
+producible
+producing
+product
+production
+productions
+productive
+productively
+productiveness
+productivity
+products
+proem
+prof
+Prof.
+profanation
+profane
+profanely
+profaneness
+profanity
+profess
+professed
+professedly
+professes
+professing
+profession
+professional
+professionalism
+professionalization
+professionalize
+professionally
+professionals
+professions
+professor
+professorial
+professorially
+professors
+professorship
+proffer
+proffered
+proffers
+proficience
+proficiency
+proficient
+proficiently
+profile
+profiled
+profiles
+profiling
+profit
+profitability
+profitable
+profitably
+profited
+profiteer
+profiteering
+profiteers
+profiterole
+profiting
+profitless
+profits
+profitted
+profligacy
+profligate
+profligately
+profound
+profoundest
+profoundly
+profoundness
+profundity
+profuse
+profusely
+profuseness
+profusion
+prog
+progenitor
+progeniture
+progeny
+progesterone
+prognathous
+prognoses
+prognosis
+prognostic
+prognosticate
+prognostication
+prognosticator
+program
+programer
+programmability
+programmable
+programmatic
+programmatics
+programmation
+programme
+programmed
+programmer
+programmer-analyst
+programmers
+programming
+programs
+progress
+progressed
+progresses
+progressing
+progression
+progressions
+progressive
+progressively
+progressiveness
+prohibit
+prohibited
+prohibiting
+prohibition
+prohibitionist
+prohibitions
+prohibitive
+prohibitively
+prohibitory
+prohibits
+project
+projected
+projectile
+projecting
+projection
+projectionist
+projections
+projective
+projectively
+projector
+projectors
+projects
+projecture
+Prokofieff
+Prokofiev
+prolapse
+prolate
+prolegomena
+prolegomenon
+proletarian
+proletariat
+proletary
+proleenina
+proliferate
+proliferated
+proliferates
+proliferating
+proliferation
+prolific
+prolifically
+prolix
+prolixity
+prolixly
+prolog
+prologue
+prolong
+prolongate
+prolongation
+prolonged
+prolonging
+prolongs
+prom
+promenade
+promenades
+Promethean
+Prometheus
+promethium
+prominence
+prominency
+prominent
+prominently
+promiscuity
+promiscuous
+promiscuously
+promise
+promise-breaker
+promised
+promises
+promising
+promisingly
+promissory
+promo
+promontory
+promote
+promoted
+promoter
+promoters
+promotes
+promoting
+promotion
+promotional
+promotions
+prompt
+prompt-book
+prompt-box
+prompted
+prompter
+promptest
+prompting
+promptings
+promptitude
+promptly
+promptness
+prompts
+promulgate
+promulgated
+promulgates
+promulgating
+promulgation
+promulgator
+prone
+proneness
+prong
+pronged
+pronghorn
+prongs
+pronominal
+pronoun
+pronounce
+pronounceable
+pronounced
+pronouncement
+pronouncements
+pronounces
+pronouncing
+pronouns
+pronto
+pronuclear
+pronunciation
+pronunciations
+proof
+proof-copy
+proof-pulling
+proof-reader
+proof-run
+proofread
+proofreader
+proofreading
+proofs
+proofsheet
+prop
+propaedeutic
+propaedeutical
+propaganda
+propagandist
+propagandize
+propagate
+propagated
+propagates
+propagating
+propagation
+propagations
+propagator
+propane
+propel
+propellant
+propelled
+propellent
+propeller
+propellers
+propelling
+propels
+propensity
+proper
+properly
+properness
+propertied
+properties
+propertiless
+property
+prophecies
+prophecy
+prophesied
+prophesier
+prophesies
+prophesy
+prophet
+prophetess
+prophetic
+prophetical
+prophetically
+prophetize
+prophets
+prophylactic
+prophylaxes
+prophylaxis
+propinquity
+propitiable
+propitiate
+propitiation
+propitiator
+propitiatory
+propitious
+propitiously
+propjet
+proponent
+proponents
+proportion
+proportional
+proportionally
+proportionate
+proportionately
+proportioned
+proportioning
+proportionment
+proportions
+propos
+proposal
+proposals
+propose
+proposed
+proposer
+proposes
+proposing
+proposition
+propositional
+propositionally
+propositioned
+propositioning
+propositions
+propound
+propounded
+propounding
+propounds
+proprietary
+proprieties
+proprietor
+proprietorial
+proprietors
+proprietorship
+proprietress
+propriety
+props
+propulsion
+propulsions
+propulsive
+prorate
+prorated
+prorates
+prorogation
+prorogue
+pros
+prosaic
+prosaically
+prosaist
+proscenia
+proscenium
+prosciutto
+proscribe
+proscription
+prose
+prosecute
+prosecuted
+prosecutes
+prosecuting
+prosecution
+prosecutions
+prosecutor
+proselyte
+proselytism
+proselytize
+proselytized
+proselytizer
+proselytizes
+proselytizing
+Proserpine
+prosodic
+prosodics
+prosody
+prospect
+prospected
+prospecting
+prospection
+prospections
+prospective
+prospectively
+prospectives
+prospector
+prospectors
+prospects
+prospectus
+prosper
+prospered
+prospering
+prosperity
+prosperous
+prosperously
+prospers
+prossi
+prostate
+prostheses
+prosthesis
+prosthetic
+prostitute
+prostitution
+prostrate
+prostration
+prosy
+protactinium
+protagonist
+protean
+protect
+protected
+protecting
+protection
+protectionism
+protectionist
+protections
+protective
+protectively
+protectiveness
+protector
+protectorate
+protectors
+protects
+protege
+proteges
+protein
+proteins
+Proterozoic
+protest
+protestant
+protestantism
+Protestantize
+Protestantizes
+protestation
+protestations
+protested
+protester
+protesting
+protestingly
+protestor
+protests
+Protista
+protocol
+protocols
+proton
+protons
+Protophyta
+protoplasm
+protoplasmic
+protoplast
+prototype
+prototyped
+prototypes
+prototypical
+prototypically
+prototyping
+protozoan
+protozoic
+protozoon
+protract
+protracted
+protraction
+protractor
+protrude
+protruded
+protrudes
+protruding
+protrusile
+protrusion
+protrusions
+protuberance
+protuberant
+protg
+proud
+prouder
+proudest
+proudly
+Proust
+provability
+provable
+provably
+prove
+proved
+proven
+provenance
+Provencal
+Provence
+provender
+provenience
+prover
+proverb
+proverbial
+proverbially
+provers
+proves
+provide
+provided
+providence
+provident
+providential
+providentially
+providently
+provider
+providers
+provides
+providing
+province
+provinces
+provincial
+provincialism
+provincially
+proving
+provision
+provisional
+provisionally
+provisioned
+provisioning
+provisions
+proviso
+provisory
+provocation
+provocative
+provocatively
+provocativeness
+provoke
+provoked
+provoker
+provokes
+provoking
+provokingly
+provolone
+provost
+prow
+prowess
+prowl
+prowled
+prowler
+prowlers
+prowling
+prows
+proximal
+proximate
+proximity
+proximo
+Proxmire
+proxy
+prude
+prudence
+prudent
+prudential
+prudentially
+prudently
+prudery
+prudish
+prudishly
+prudishness
+prune
+pruned
+pruner
+pruners
+prunes
+pruning
+prurience
+prurient
+Prussia
+Prussian
+Prussianization
+Prussianizations
+Prussianize
+Prussianizer
+Prussianizers
+Prussianizes
+prussic
+pry
+pryer
+prying
+ps
+psalm
+psalmist
+psalter
+psaltery
+pseudo
+pseudo-
+pseudo-prophet
+pseudo-Socialists
+pseudobinary
+pseudocode
+pseudofiles
+pseudoinstruction
+pseudoinstructions
+pseudolanguage
+pseudonym
+pseudonymous
+pseudoparallelism
+pseudoscience
+pseudoscientific
+pshaw
+psi
+psilocybin
+psittacosis
+psora
+psoriasis
+psst
+PST
+psych
+psyche
+psychedelic
+psychedelically
+psyches
+psychiatric
+psychiatrist
+psychiatrists
+psychiatry
+psychic
+psychical
+psychically
+psycho
+psychoactive
+psychoanalysis
+psychoanalyst
+psychoanalytic
+psychoanalytical
+psychoanalyze
+psychobabble
+psychobiology
+psychodrama
+psychogenic
+psychoinformatics
+psychological
+psychologically
+psychologist
+psychologists
+psychology
+psychoneuroses
+psychoneurosis
+psychopath
+psychopathic
+psychopathy
+psychophysic
+psychoses
+psychosis
+psychosocial
+psychosomatic
+psychotherapeutic
+psychotherapist
+psychotherapy
+psychotic
+psychotically
+psychotropic
+PT
+PTA
+ptarmigan
+pterodactyl
+PTO
+Ptolemaic
+Ptolemaists
+Ptolemy
+ptomaine
+PTT
+Pu
+pub
+pubertal
+puberty
+pubes
+pubescence
+pubescent
+pubic
+pubis
+public
+public-spirited
+publican
+publication
+publications
+publicism
+publicist
+publicity
+publicize
+publicized
+publicizes
+publicizing
+publicly
+publish
+published
+publisher
+publishers
+publishes
+publishing
+pubs
+Puccini
+puce
+puck
+pucker
+puckered
+puckering
+puckers
+puckish
+puckishly
+puckishness
+pudding
+pudding-head
+pudding-heart
+pudding-stone
+puddings
+puddle
+puddles
+puddling
+pudency
+pudenda
+pudendum
+pudginess
+pudgy
+puerile
+puerility
+puerperal
+Puerto
+puff
+puff-ball
+puff-box
+puff-paste
+puff-stone
+puffball
+puffed
+puffer
+puffery
+puffin
+puffiness
+puffing
+puffs
+puffy
+pug
+pug-nose
+pug-nosed
+Pugh
+pugilism
+pugilist
+pugilistic
+pugnacious
+pugnaciously
+pugnaciousness
+pugnacity
+puissance
+puissant
+puke
+pukka
+Pulaski
+pulchritude
+pulchritudinous
+pule
+Pulitzer
+pull
+pull-over
+pull-rod
+pull-up
+pullback
+pulled
+puller
+pullet
+pulley
+pulleys
+pulling
+pullings
+Pullman
+Pullmanize
+Pullmanizes
+Pullmans
+pullout
+pullover
+pulls
+pullulate
+pullup
+pulmonary
+pulmonic
+pulp
+pulpiness
+pulping
+pulpit
+pulpits
+pulpous
+pulpwood
+pulpy
+pulsar
+pulsate
+pulsatile
+pulsation
+pulsations
+pulsatory
+pulse
+pulsed
+pulses
+pulsing
+pulverization
+pulverize
+pulverizer
+puma
+pumice
+pumice-stone
+pummel
+pump
+pump-room
+pump-ship
+pumped
+pumper
+pumpernickel
+pumping
+pumpkin
+pumpkins
+pumps
+pun
+punch
+punch-drunk
+punch-machine
+punched
+punched-card
+puncheon
+puncher
+punches
+punching
+punchy
+punctate
+punctilio
+punctilious
+punctiliously
+punctiliousness
+punctual
+punctuality
+punctually
+punctuate
+punctuation
+puncture
+punctured
+punctures
+puncturing
+pundit
+punditry
+pungency
+pungent
+pungently
+Punic
+puniness
+punish
+punishable
+punished
+punishes
+punishing
+punishment
+punishments
+punitive
+punitively
+punitory
+Punjab
+Punjabi
+punk
+punkin
+punnet
+puns
+punster
+punt
+punted
+punter
+punting
+punts
+puny
+pup
+pupa
+pupae
+pupal
+pupil
+pupilage
+pupilarity
+pupilary
+pupils
+puppet
+puppet-show
+puppeteer
+puppetry
+puppets
+puppies
+puppy
+puppydom
+puppyhood
+pups
+purblind
+Purcell
+purchasable
+purchase
+purchase-money
+purchased
+purchaser
+purchasers
+purchases
+purchasing
+purdah
+Purdue
+pure
+purebred
+puree
+purely
+pureness
+purer
+purest
+purfle
+purgation
+purgative
+purgatorial
+purgatory
+purge
+purged
+purger
+purges
+purging
+purification
+purifications
+purified
+purifier
+purifiers
+purifies
+purify
+purifying
+Purim
+Purina
+purine
+purism
+purist
+puristic
+puritan
+puritanic
+puritanical
+puritanically
+puritanism
+Puritanize
+Puritanizer
+Puritanizers
+Puritanizes
+purity
+purl
+purler
+purlieu
+purlieus
+purlin
+purloin
+purloiner
+purp
+purple
+purpler
+purplest
+purplish
+purport
+purported
+purportedly
+purporter
+purporters
+purporting
+purports
+purpose
+purposed
+purposeful
+purposefully
+purposefulness
+purposeless
+purposelessly
+purposely
+purposes
+purposive
+purr
+purred
+purring
+purrs
+purse
+purse-bearer
+purse-string
+pursed
+purser
+purses
+pursiness
+pursuance
+pursuant
+pursue
+pursued
+pursuer
+pursuers
+pursues
+pursuing
+pursuit
+pursuits
+pursy
+purulence
+purulent
+purvey
+purveyance
+purveyor
+purview
+pure
+pus
+Pusan
+Pusey
+push
+push-back
+push-bolt
+push-button
+push-chair
+push-ing
+push-over
+push-up
+pushbutton
+pushcart
+pushdown
+pushed
+pusher
+pushers
+pushes
+pushful
+pushily
+pushiness
+pushing
+pushover
+pushup
+pushy
+pusillanimity
+pusillanimous
+pusillanimously
+puss
+puss-foot
+puss-in-the-corner
+pussy
+pussy-cat
+pussy-foot(er)
+pussy-wants-a-corner
+pussy-willow
+pussycat
+pussyfoot
+pustular
+pustulate
+pustule
+put
+put-down
+put-off
+put-on
+put-to
+putative
+putdown
+putlock
+putlog
+Putnam
+putout
+putrefaction
+putrefactive
+putrefy
+putrescence
+putrescent
+putrid
+putridity
+puts
+putsch
+putt
+puttee
+putter
+putter-on
+putterer
+puttering
+putters
+putting
+putty
+putty-head
+putty-knife
+puzzle
+puzzled
+puzzlement
+puzzler
+puzzlers
+puzzles
+puzzling
+puzzlings
+PVC
+PW
+PX
+Pygmalion
+pygmies
+pygmy
+pyjamas
+Pyle
+pylon
+pylori
+pyloric
+pylorus
+Pyongyang
+pyorrhea
+pyorrhoea
+Pyotr
+pyramid
+pyramidal
+pyramids
+pyre
+Pyrenees
+pyretic
+Pyrex
+pyrimidine
+pyrite
+pyrites
+pyromania
+pyromaniac
+pyrotechnic
+pyrotechnical
+pyrotechnics
+pyrotechny
+Pyrrhic
+Pythagoras
+Pythagorean
+Pythagoreanize
+Pythagoreanizes
+Pythagoreans
+python
+pythoness
+pythonic
+pyx
+Q-tip
+QAM
+Qatar
+QB
+QC
+QED
+Qingdao
+QM
+QSAM
+QTAM
+qua
+quack
+quacked
+quackery
+quacks
+quad
+quadragenarian
+quadrangle
+quadrangular
+quadrant
+quadrants
+quadraphonic
+quadrat
+quadrate
+quadratic
+quadratical
+quadratically
+quadratics
+quadrature
+quadratures
+quadrennia
+quadrennial
+quadrennium
+quadriceps
+quadrilateral
+quadrille
+quadrillion
+quadripartite
+quadriplegia
+quadriplegic
+quadrivium
+quadruped
+quadrupedal
+quadruple
+quadrupled
+quadruples
+quadruplet
+quadruplets
+quadruplicate
+quadruplication
+quadrupling
+quadrupole
+quaff
+quag
+quaggy
+quagmire
+quagmires
+quahaug
+quahog
+quai
+quail
+quails
+quaint
+quaintly
+quaintness
+quake
+quaked
+quaker
+Quakeress
+Quakerism
+Quakerization
+Quakerizations
+Quakerize
+Quakerizes
+quakers
+quakes
+quaking
+quaky
+qualification
+qualifications
+qualified
+qualifier
+qualifiers
+qualifies
+qualify
+qualifying
+qualitative
+qualitatively
+qualities
+quality
+qualm
+qualmish
+quandaries
+quandary
+quanta
+Quantico
+quantifiable
+quantification
+quantifications
+quantified
+quantifier
+quantifiers
+quantifies
+quantify
+quantifying
+quantile
+quantitative
+quantitatively
+quantities
+quantity
+quantization
+quantize
+quantized
+quantizes
+quantizing
+quantum
+quarantine
+quarantines
+quarantining
+quark
+Quarker
+quarks
+quarrel
+quarreled
+quarreler
+quarreling
+quarrels
+quarrelsome
+quarrelsomeness
+quarries
+quarry
+quart
+quartan
+quarter
+quarter-day
+quarter-deck
+quarter-final
+quarter-master
+quarterage
+quarterback
+quarterdeck
+quartered
+quarterfinal
+quartering
+quarterly
+quartermaster
+quarters
+quarterstaff
+quartet
+quartet(te)
+quartets
+quartette
+quartile
+quarto
+quarts
+quartz
+quartzite
+quasar
+quash
+quashed
+quashes
+quashing
+quasi
+quasi-bastarda
+quasi-synonymity
+quasi-synonymy
+Quasimodo
+quaternary
+quaternion
+quatrain
+quatrefoil
+quaver
+quavered
+quavering
+quavers
+quavery
+quay
+quayage
+queasily
+queasiness
+queasy
+Quebec
+Quebecker
+queen
+queen-size
+queen-sized
+queenly
+Queensland
+queer
+queerer
+queerest
+queerly
+queerness
+quell
+quelling
+quench
+quenchable
+quenched
+quencher
+quenches
+quenching
+quenchless
+queried
+queries
+quern
+querulous
+querulously
+querulousness
+query
+querying
+quest
+quested
+quester
+questers
+questing
+question
+question-mark
+question-stop
+questionable
+questionably
+questionary
+questioned
+questioner
+questioners
+questioning
+questioningly
+questionings
+questionnaire
+questionnaires
+questions
+quests
+queue
+queued
+queueing
+queuer
+queuers
+queues
+queuing
+Quezon
+quibble
+quibbler
+quiche
+Quichua
+quick
+quick-ear
+quick-fastener
+quick-firing
+quick-freeze
+quick-froze
+quick-frozen
+quick-lime
+quick-match
+quick-sighted
+quick-silver
+quick-tempered
+quick-witted
+quick-wittedly
+quicken
+quickened
+quickening
+quickens
+quicker
+quickest
+quickie
+quicklime
+quickly
+quickness
+quicksand
+quicksilver
+quickstep
+quid
+quiddity
+quidnunc
+quiescence
+quiescent
+quiescently
+quiet
+quieted
+quieten
+quieter
+quietest
+quieting
+quietly
+quietness
+quiets
+quietude
+quietus
+QUIKTRAN
+quill
+quilt
+quilted
+quilter
+quilting
+quilts
+quince
+quinine
+Quinn
+quinquennial
+quinsy
+quint
+quintal
+quinteessence
+quintessence
+quintessential
+quintessentially
+quintet
+quintette
+quintillion
+quintuple
+quintuplet
+quintuplets
+quip
+quipster
+quire
+Quirinal
+quirk
+quirkiness
+quirky
+quirt
+QUISAM
+quisling
+quit
+quitclaim
+quite
+Quito
+quits
+quittance
+quitter
+quitters
+quitting
+quiver
+quivered
+quivering
+quivers
+quivery
+Quixote
+quixotic
+quixotically
+Quixotism
+quiz
+quizzed
+quizzer
+quizzes
+quizzical
+quizzically
+quizzing
+quo
+quod
+quoin
+quoit
+quoits
+quondam
+quonset
+quorum
+quota
+quotability
+quotable
+quotas
+quotation
+quotations
+quote
+quoted
+quotes
+quoth
+quotha
+quotidian
+quotient
+quotients
+quoting
+Qur'an
+qv
+R.I.P.
+r.t.
+Ra
+Rabat
+rabbet
+rabbi
+rabbinate
+rabbinic
+rabbinical
+rabbit
+rabbit-hutch
+rabbit-warren
+rabbits
+rabble
+rabble-rouser
+rabble-rousing
+Rabelais
+rabid
+rabidly
+rabidness
+rabies
+Rabin
+raccoon
+raccoons
+race
+race-course
+race-ground
+race-horse
+racecourse
+raced
+racehorse
+raceme
+racer
+racers
+races
+racetrack
+raceway
+Rachel
+Rachmaninoff
+racial
+racialism
+racialist
+racially
+racily
+Racine
+raciness
+racing
+racism
+racist
+rack
+rack-railway
+rack-rent
+rack-wheel
+racked
+racker
+racket
+racketeer
+racketeering
+racketeers
+rackets
+rackety
+racking
+racks
+raconteur
+racoon
+racquet
+racquetball
+racy
+rad
+radar
+radars
+radarscope
+Radcliffe
+raddle
+radial
+radially
+radian
+radiance
+radiant
+radiantly
+radiate
+radiated
+radiates
+radiating
+radiation
+radiations
+radiator
+radiators
+radical
+radicalism
+radicalization
+radicalize
+radically
+radicals
+radices
+radii
+radio
+radio-beacon
+radio-engineering
+radio-operator
+radio-receiver
+radio-transmitter
+radioactive
+radioactively
+radioactivity
+radioastronomy
+radiocarbon
+radioed
+radiogram
+radiograph
+radiographer
+radiography
+radioing
+radioisotope
+radiolocate
+radiologist
+radiology
+radioman
+radiometer
+radiometric
+radiometry
+radiophone
+radios
+radioscopy
+radiosonde
+radiotelegraph
+radiotelegraphy
+radiotelephone
+radioteletype
+radiotherapist
+radiotherapy
+radish
+radishes
+radium
+radius
+radix
+radon
+Rae
+Rafael
+raff
+Rafferty
+raffia
+raffish
+raffishly
+raffishness
+raffle
+raft
+rafter
+rafters
+rafting
+rafts
+raftsman
+rag
+rag-and-bone-man
+rag-chewing
+raga
+ragamuffin
+ragbag
+rage
+raged
+rageful
+rages
+ragged
+raggedly
+raggedness
+raggedy
+raging
+ragingly
+raglan
+ragman
+ragout
+rags
+ragstone
+ragtag
+ragtime
+Ragusan
+ragweed
+rah
+rah-rah
+raid
+raided
+raider
+raiders
+raiding
+raids
+rail
+rail-shifter
+rail-switch
+railed
+railer
+railers
+railing
+raillery
+railman
+railroad
+railroaded
+railroader
+railroaders
+railroading
+railroads
+rails
+railway
+railwayman
+railways
+raiment
+rain
+rain-bow
+rain-fed
+rain-gauge
+rain-proof
+rainbow
+raincape
+raincoat
+raincoats
+raindrop
+raindrops
+rained
+rainfall
+rainfall-map
+rainiest
+raining
+rainmaker
+rainmaking
+rainproof
+rains
+rainstorm
+rainwater
+rainwear
+rainy
+raise
+raised
+raiser
+raisers
+raises
+raisin
+raising
+raisins
+rait
+raja
+rajah
+rake
+rake-hell
+rake-helly
+rake-off
+raked
+raker
+rakes
+raking
+rakish
+rakishly
+rakishness
+Raleigh
+rallied
+rallies
+rally
+rallying
+Ralph
+Ralston
+ram
+ram-rod
+Ramada
+Ramadan
+Raman
+ramble
+rambler
+rambles
+rambling
+ramblings
+rambunctious
+rambunctiously
+rambunctiousness
+ramekin
+ramequin
+ramie
+ramification
+ramifications
+ramified
+ramify
+Ramirez
+ramjet
+rammer
+rammish
+Ramo
+Ramona
+ramp
+rampage
+rampancy
+rampant
+rampantly
+rampart
+ramps
+ramrod
+rams
+Ramses
+Ramsey
+ramshackle
+ran
+ranch
+ranched
+rancher
+ranchers
+ranches
+ranching
+rancid
+rancidity
+rancidness
+rancor
+rancorous
+rancorously
+rancour
+Randall
+randiness
+Randolph
+random
+random-access
+randomization
+randomize
+randomized
+randomizes
+randomly
+randomness
+randy
+ranee
+rang
+range
+range-finder
+ranged
+rangeland
+ranger
+rangers
+ranges
+ranginess
+ranging
+Rangoon
+rangy
+rani
+Ranier
+rank
+rank-badge
+ranked
+ranker
+rankers
+rankest
+Rankin
+Rankine
+ranking
+rankings
+rankle
+rankly
+rankness
+ranks
+ransack
+ransacked
+ransacking
+ransacks
+ransom
+ransomer
+ransoming
+ransoms
+rant
+ranted
+ranter
+ranters
+ranting
+rants
+ranunculus
+Raoul
+rap
+rapacious
+rapaciously
+rapaciousness
+rapacity
+rape
+raped
+raper
+rapes
+Raphael
+rapid
+rapid-fire
+rapidity
+rapidly
+rapidness
+rapids
+rapier
+rapier-fish
+rapine
+raping
+rapist
+rappee
+rappel
+rapper
+rapport
+rapprochement
+raps
+rapscallion
+rapt
+raptly
+raptness
+rapture
+raptures
+rapturous
+rapturously
+Rapunzel
+rare
+rarebit
+rarefaction
+rarefied
+rarefy
+rarely
+rareness
+rarer
+rarest
+raring
+Raritan
+rarity
+rascal
+rascality
+rascally
+rascals
+rash
+rasher
+rashly
+rashness
+Rasmussen
+rasp
+raspberries
+raspberry
+rasped
+rasper
+rasping
+raspings
+rasps
+Rasputin
+raspy
+raster
+Rastus
+rasure
+rat
+rat-catcher
+rat-trap
+ratable
+rataplan
+ratch
+ratchet
+rate
+rate-payer
+rated
+rater
+raters
+rates
+Ratfor
+rather
+rathskeller
+ratification
+ratified
+ratifier
+ratifies
+ratify
+ratifying
+rating
+ratings
+ratio
+ratiocinate
+ratiocination
+ration
+rational
+rationale
+rationales
+rationalism
+rationalist
+rationalistic
+rationalities
+rationality
+rationalization
+rationalizations
+rationalize
+rationalized
+rationalizes
+rationalizing
+rationally
+rationals
+rationing
+rations
+ratios
+ratlike
+ratlin
+ratline
+rats
+Rats!
+rattan
+ratter
+rattle
+rattle-mouse
+rattle-snake
+rattle-trap
+rattlebrain
+rattlebrained
+rattled
+rattlehead
+rattler
+rattlers
+rattles
+rattlesnake
+rattlesnakes
+rattletrap
+rattling
+rattly
+rattrap
+ratty
+raucous
+raucously
+raucousness
+raughty
+Raul
+raunchily
+raunchiness
+raunchy
+ravage
+ravaged
+ravager
+ravagers
+ravages
+ravaging
+rave
+raved
+ravel
+raven
+raven-haired
+ravening
+ravenous
+ravenously
+ravens
+raves
+ravine
+ravines
+raving
+ravings
+ravioli
+ravish
+ravisher
+ravishing
+ravishingly
+ravishment
+raw
+raw-boned
+Rawalpindi
+rawboned
+rawer
+rawest
+rawhide
+Rawlings
+Rawlins
+Rawlinson
+rawly
+rawness
+Rawson
+ray
+Rayburn
+Rayleigh
+Raymond
+Raymondville
+rayon
+rays
+Raytheon
+raze
+razee
+razor
+razor-blade
+razor-edge
+razor-sharp
+razor-shell
+razor-strap
+razorback
+razors
+razz
+razzia
+razzle-dazzle
+razzmatazz
+Rb
+RBI
+RC
+RD
+RDA
+RDT
+re
+re-
+re-cover
+re-dress
+re-echo
+re-edify
+re-edition
+re-educate
+re-education
+re-elect
+re-engage
+re-enter
+re-entrant
+re-entry
+re-equip
+re-establish
+re-examine
+re-exchange
+re-form
+re-join
+re-lay
+re-mount
+re-recording
+re-settlement
+re-sign
+re-surface
+re-thinking
+reabbreviate
+reabbreviated
+reabbreviates
+reabbreviating
+reabsorb
+reach
+reachability
+reachable
+reachably
+reached
+reacher
+reaches
+reaching
+reacquaint
+reacquire
+reacquired
+react
+reactant
+reacted
+reacting
+reaction
+reactionaries
+reactionary
+reactions
+reactivate
+reactivated
+reactivates
+reactivating
+reactivation
+reactive
+reactively
+reactivity
+reactor
+reactors
+reacts
+read
+read-made
+read-out
+readability
+readable
+readdress
+reader
+reader-copier
+reader-printer
+readers
+readership
+readied
+readier
+readies
+readiest
+readily
+readiness
+reading
+reading-book
+reading-desk
+reading-glass
+reading-lamp
+reading-room
+readings
+readjust
+readjusted
+readjustment
+readmission
+readmit
+readopt
+readout
+readouts
+reads
+ready
+ready-made
+ready-to-print
+ready-to-wear
+readying
+reaffirm
+reaffirmation
+Reagan
+reagent
+real
+real-life
+real-time
+REALCOM
+realest
+realia
+realign
+realigned
+realigning
+realignment
+realigns
+realise
+realism
+realist
+realistic
+realistically
+realists
+realities
+reality
+realizable
+realizably
+realization
+realizations
+realize
+realized
+realizes
+realizing
+reallocate
+reallocation
+really
+realm
+realms
+realness
+realpolitik
+reals
+realty
+ream
+reamer
+reams
+reanalysis
+reanalyze
+reanalyzes
+reanalyzing
+reanimate
+reanimation
+reap
+reaped
+reaper
+reaping
+reaping-hook
+reaping-machine
+reappear
+reappearance
+reappeared
+reappearing
+reappears
+reapplication
+reapply
+reappoint
+reappointment
+reapportion
+reapportionment
+reappraisal
+reappraisals
+reappraise
+reaps
+rear
+rear-admiral
+rear-end
+rear-guard
+rear-mouse
+reared
+rearguard
+rearing
+rearm
+rearmament
+rearmost
+rearrange
+rearrangeable
+rearranged
+rearrangement
+rearrangements
+rearranges
+rearranging
+rearrest
+rearrested
+rears
+rearward
+rearwards
+reascend
+reason
+reasonable
+reasonableness
+reasonably
+reasoned
+reasoner
+reasoning
+reasonings
+reasonless
+reasons
+reassemble
+reassembled
+reassembles
+reassembling
+reassembly
+reassert
+reassertion
+reassess
+reassessment
+reassessments
+reassign
+reassigned
+reassigning
+reassignment
+reassignments
+reassigns
+reassurance
+reassure
+reassured
+reassures
+reassuring
+reassuringly
+reattach
+reattachment
+reattain
+reattempt
+reauthorize
+reave
+reawaken
+reawakened
+reawakening
+reawakens
+rebarbative
+rebate
+rebates
+Rebecca
+Rebekah
+rebel
+rebelion
+rebelled
+rebelling
+rebellion
+rebellions
+rebellious
+rebelliously
+rebelliousness
+rebels
+rebid
+rebind
+rebinding
+rebinds
+rebirth
+reblend
+reboil
+reboot
+rebooted
+rebooting
+reboots
+reborn
+rebound
+rebounded
+rebounding
+rebounds
+rebroadcast
+rebroadcasting
+rebroadcasts
+rebuff
+rebuffed
+rebuild
+rebuilding
+rebuilds
+rebuilt
+rebuke
+rebuked
+rebukes
+rebuking
+rebukingly
+reburial
+rebury
+rebus
+rebut
+rebuttal
+rebutted
+rebutting
+rec
+recalcitrance
+recalcitrant
+recalculate
+recalculated
+recalculates
+recalculating
+recalculation
+recalculations
+recalibrate
+recalibrated
+recalibrates
+recalibrating
+recall
+recalled
+recalling
+recalls
+recant
+recantation
+recap
+recapitulate
+recapitulated
+recapitulates
+recapitulation
+recapture
+recaptured
+recaptures
+recapturing
+recase
+recast
+recasting
+recasts
+recatalogization
+recede
+receded
+recedes
+receding
+receipt
+receipts
+receivable
+receivables
+receive
+received
+receiver
+receivers
+receivership
+receives
+receiving
+recency
+recense
+recension
+recent
+recently
+recentness
+receptacle
+receptacles
+receptibility
+reception
+receptionist
+receptions
+receptive
+receptively
+receptiveness
+receptivity
+receptor
+recess
+recessed
+recesses
+recession
+recessional
+recessionary
+recessive
+recharge
+rechargeable
+recharter
+recheck
+recherche
+rechristen
+recidivation
+recidivism
+recidivist
+recidivous
+Recife
+recipe
+recipe-book
+recipes
+recipient
+reciprocal
+reciprocally
+reciprocate
+reciprocated
+reciprocates
+reciprocating
+reciprocation
+reciprocity
+recirculate
+recirculated
+recirculates
+recirculating
+recital
+recitalist
+recitals
+recitation
+recitations
+recitative
+recite
+recited
+reciter
+recites
+reciting
+reck
+reckless
+recklessly
+recklessness
+reckon
+reckoned
+reckoner
+reckoning
+reckonings
+reckons
+reclaim
+reclaimable
+reclaimant
+reclaimed
+reclaimer
+reclaimers
+reclaiming
+reclaims
+reclamation
+reclamations
+reclassification
+reclassified
+reclassifies
+reclassify
+reclassifying
+recline
+recliner
+reclining
+recluse
+reclusive
+recode
+recoded
+recodes
+recoding
+recognise
+recognition
+recognitions
+recognizability
+recognizable
+recognizably
+recognizance
+recognize
+recognized
+recognizer
+recognizers
+recognizes
+recognizing
+recoil
+recoil-liquid
+recoiled
+recoiling
+recoils
+recollect
+recollected
+recollecting
+recollection
+recollections
+recolonization
+recolonize
+recolor
+recombination
+recombine
+recombined
+recombines
+recombining
+recommence
+recommencement
+recommend
+recommendable
+recommendation
+recommendations
+recommended
+recommender
+recommending
+recommends
+recommission
+recommit
+recompensation
+recompense
+recompile
+recompiled
+recompiles
+recompiling
+recompose
+recompute
+recomputed
+recomputes
+recomputing
+reconcilable
+reconcile
+reconciled
+reconcilement
+reconciler
+reconciles
+reconciliation
+reconciling
+recondite
+recondition
+reconditory
+reconfigurable
+reconfiguration
+reconfigurations
+reconfigure
+reconfigured
+reconfigurer
+reconfigures
+reconfiguring
+reconfirm
+reconfirmation
+reconnaissance
+reconnect
+reconnected
+reconnecting
+reconnection
+reconnects
+reconnoiter
+reconnoitre
+reconquer
+reconquest
+reconsecrate
+reconsecration
+reconsider
+reconsideration
+reconsidered
+reconsidering
+reconsiders
+reconsign
+reconstitute
+reconstituted
+reconstitution
+reconstruct
+reconstructed
+reconstructing
+reconstruction
+reconstructs
+recontact
+recontaminate
+reconvene
+reconversion
+reconvert
+reconverted
+reconverts
+recook
+recopy
+record
+record-breaking
+record-changer
+record-player
+recorded
+recorder
+recorders
+recording
+recording-tape
+recordings
+records
+recount
+recounted
+recounting
+recounts
+recoup
+recourse
+recover
+recoverable
+recovered
+recoveries
+recovering
+recovers
+recovery
+recovery-function
+recreant
+recreate
+recreated
+recreates
+recreating
+recreation
+recreational
+recreations
+recreative
+recreive
+recrement
+recriminate
+recrimination
+recriminatory
+recross
+recrudesce
+recrudescence
+recrudescent
+recruit
+recruited
+recruiter
+recruiting
+recruitment
+recruits
+recrystallize
+recta
+rectal
+rectally
+rectangle
+rectangles
+rectangular
+rectifiable
+rectification
+rectifier
+rectify
+rectifying-tube
+rectilinear
+rectitude
+recto
+rector
+rectors
+rectory
+rectum
+rectums
+recumbency
+recumbent
+recuperate
+recuperation
+recuperative
+recur
+recurrence
+recurrences
+recurrent
+recurrently
+recurring
+recurs
+recurse
+recursed
+recurses
+recursing
+recursion
+recursions
+recursive
+recursively
+recurvate
+recurved
+recusancy
+recusant
+recyclable
+recycle
+recycled
+recycles
+recycling
+red
+red-bird
+red-blooded
+red-carpet
+red-clover
+red-currants
+red-deer
+red-eye
+red-haired
+red-handed
+red-herring
+red-hot
+red-lead
+red-letter
+red-lining
+red-pestilence
+red-plague
+red-poll
+red-tapism
+red-tapist
+red-wed
+redact
+redaction
+redactor
+redbird
+redbreast
+redcap
+redcoat
+redden
+reddened
+redder
+reddest
+reddish
+reddishness
+rede
+redeclare
+redeclared
+redeclares
+redeclaring
+redecorate
+redecoration
+rededicate
+redeem
+redeemable
+redeemed
+redeemer
+redeemers
+redeeming
+redeems
+redefine
+redefined
+redefines
+redefining
+redefinition
+redefinitions
+redeliver
+redemption
+redemptive
+redeploy
+redeployment
+redeposit
+redescription
+redesign
+redesigned
+redesigning
+redesigns
+redetermine
+redevelop
+redevelopment
+Redford
+redhead
+redheaded
+Redhook
+redial
+redid
+rediffusion
+redintegrate
+redintegration
+redirect
+redirected
+redirecting
+redirection
+redirections
+rediscover
+rediscovery
+redisplay
+redisplayed
+redisplaying
+redisplays
+redissolve
+redistribute
+redistributed
+redistributes
+redistributing
+redistribution
+redistrict
+redivide
+redivision
+redlining
+redly
+redman
+Redmond
+redneck
+redness
+redo
+redolence
+redolent
+redone
+redouble
+redoubled
+redoubt
+redoubtable
+redoubtably
+redound
+redraft
+redraw
+redrawn
+redress
+redressed
+redresses
+redressing
+reds
+redskin
+Redstone
+redtapism
+reduce
+reduced
+reducer
+reducers
+reduces
+reducibility
+reducible
+reducibly
+reducing
+reduction
+reductions
+reductive
+redundance
+redundancies
+redundancy
+redundant
+redundantly
+reduplicate
+reduplication
+redwood
+redye
+reecho
+reed
+reed-grass
+reed-mace
+reed-pipe
+reeden
+reediness
+reedit
+reeds
+reeducate
+reeducation
+Reedville
+reedy
+reef
+reefer
+reefs
+reek
+reel
+reelect
+reelected
+reelecting
+reelection
+reelects
+reeled
+reeler
+reeling
+reels
+reembark
+reembody
+reemerge
+reemergence
+reemphasize
+reemphasized
+reemphasizes
+reemphasizing
+reemploy
+reemployment
+reenabled
+reenact
+reenactment
+reenforce
+reenforcement
+reengage
+reenlargement
+reenlist
+reenlistment
+reenter
+reentered
+reentering
+reenters
+reentrant
+reentry
+reequip
+Reese
+reestablish
+reestablished
+reestablishes
+reestablishing
+reestablishment
+reevaluate
+reevaluated
+reevaluates
+reevaluating
+reevaluation
+reeve
+Reeves
+reexamination
+reexamine
+reexamined
+reexamines
+reexamining
+reexecuted
+reexplain
+reexport
+ref
+reface
+refashion
+refasten
+refection
+refectory
+refer
+referable
+referee
+refereed
+refereeing
+referees
+reference
+referenced
+referencer
+references
+referencing
+referenda
+referendary
+referendum
+referendums
+referent
+referential
+referentiality
+referentially
+referents
+referral
+referrals
+referred
+referrer
+referring
+refers
+refile
+refill
+refillable
+refilled
+refilling
+refills
+refinance
+refine
+refined
+refinement
+refinements
+refiner
+refinery
+refines
+refining
+refinish
+refit
+reflect
+reflectance
+reflected
+reflecting
+reflection
+reflections
+reflective
+reflectively
+reflectivity
+reflector
+reflectors
+reflects
+reflex
+reflex-camera
+reflexes
+reflexion
+reflexive
+reflexively
+reflexiveness
+reflexivity
+refluence
+reflux
+refocus
+refold
+reforest
+reforestation
+reforge
+reform
+reformable
+reformat
+reformation
+reformative
+reformatory
+reformats
+reformatted
+reformatting
+reformed
+reformer
+reformers
+reforming
+reforms
+reformulate
+reformulated
+reformulates
+reformulating
+reformulation
+refortify
+refract
+refracted
+refraction
+refractive
+refractor
+refractoriness
+refractory
+refragment
+refrain
+refrained
+refraining
+refrains
+refreeze
+refresh
+refreshed
+refresher
+refreshers
+refreshes
+refreshing
+refreshingly
+refreshment
+refreshments
+refrigerant
+refrigerate
+refrigeration
+refrigerator
+refrigerators
+refuel
+refueled
+refueling
+refuels
+refuge
+refugee
+refugees
+refulgence
+refulgency
+refulgent
+refund
+refundable
+refundment
+refurbish
+refurbishment
+refurnish
+refusal
+refuse
+refused
+refuses
+refusing
+refutable
+refutation
+refute
+refuted
+refuter
+refutes
+refuting
+regain
+regained
+regaining
+regains
+regal
+regale
+regaled
+regalement
+regalia
+regality
+regally
+regard
+regarded
+regardful
+regarding
+regardless
+regards
+regather
+regatta
+regency
+regeneracy
+regenerate
+regenerated
+regenerates
+regenerating
+regeneration
+regenerative
+regenerator
+regenerators
+regent
+regents
+reggae
+regicide
+regime
+regimen
+regiment
+regimental
+regimentation
+regimented
+regiments
+regimes
+Regina
+Reginald
+region
+regional
+regionalism
+regionally
+regions
+Regis
+register
+registered
+registering
+registers
+registrant
+registrar
+registration
+registrations
+registry
+reglet
+regnant
+regorge
+regrade
+regress
+regressed
+regresses
+regressing
+regression
+regressions
+regressive
+regret
+regretful
+regretfully
+regrets
+regrettable
+regrettably
+regretted
+regretting
+regrind
+regroup
+regrouped
+regrouping
+regrow
+regrowth
+reguest
+regular
+regularise
+regularities
+regularity
+regularization
+regularize
+regularly
+regulars
+regulate
+regulated
+regulates
+regulating
+regulation
+regulations
+regulative
+regulator
+regulators
+regulatory
+Regulus
+regurgitate
+regurgitation
+rehab
+rehabilitate
+rehabilitation
+rehabilitative
+rehang
+rehash
+rehear
+rehearing
+rehearsal
+rehearsals
+rehearse
+rehearsed
+rehearser
+rehearses
+rehearsing
+reheat
+rehire
+Rehnquist
+rehouse
+Reich
+Reichenberg
+Reichstag
+Reid
+reign
+reigned
+reigning
+reignite
+reigns
+Reilly
+reimbursable
+reimburse
+reimbursed
+reimbursement
+reimbursements
+reimpose
+reimpression
+rein
+reincarnate
+reincarnated
+reincarnation
+reincorporate
+reincorporation
+reindeer
+reined
+reinfect
+reinfection
+reinforce
+reinforced
+reinforcement
+reinforcements
+reinforcer
+reinforces
+reinforcing
+Reinhard
+Reinhardt
+Reinhold
+reinitialize
+reinitialized
+reinitializing
+reinless
+reinoculate
+reins
+reinsert
+reinserted
+reinserting
+reinsertion
+reinserts
+reinspect
+reinstall
+reinstate
+reinstated
+reinstatement
+reinstates
+reinstating
+reintegrate
+reintegration
+reinterpret
+reinterpretation
+reinterpreted
+reinterpreting
+reinterprets
+reintroduce
+reintroduced
+reintroduces
+reintroducing
+reintroduction
+reinvent
+reinvented
+reinventing
+reinvention
+reinvents
+reinvest
+reinvestment
+reinvigorate
+reissue
+REIT
+reiterate
+reiterated
+reiterates
+reiterating
+reiteration
+reiterative
+reive
+reject
+rejected
+rejecting
+rejection
+rejections
+rejector
+rejectors
+rejects
+rejoice
+rejoiced
+rejoicer
+rejoices
+rejoicing
+rejoin
+rejoinder
+rejoined
+rejoining
+rejoins
+rejolt
+rejudge
+rejuvenate
+rejuvenation
+rejuvenescence
+rekey
+rekindle
+relabel
+relabeled
+relabeling
+relabelled
+relabelling
+relabels
+relaid
+relapse
+relate
+related
+relatedness
+relater
+relates
+relating
+relation
+relational
+relationally
+relations
+relationship
+relationships
+relative
+relatively
+relativeness
+relatives
+relativism
+relativistic
+relativistically
+relativity
+relator
+relaunch
+relax
+relaxant
+relaxation
+relaxations
+relaxed
+relaxer
+relaxes
+relaxing
+relay
+relayed
+relaying
+relays
+relearn
+release
+released
+releases
+releasing
+relegate
+relegated
+relegates
+relegating
+relegation
+relent
+relented
+relenting
+relentless
+relentlessly
+relentlessness
+relents
+relevance
+relevances
+relevancy
+relevant
+relevantly
+reliability
+reliable
+reliably
+reliance
+reliant
+relic
+relics
+relict
+relied
+relief
+relies
+relieve
+relieved
+reliever
+relievers
+relieves
+relieving
+relight
+religion
+religionize
+religions
+religious
+religiously
+religiousness
+reline
+relink
+relinquish
+relinquished
+relinquishes
+relinquishing
+relinquishment
+reliquary
+relish
+relished
+relishes
+relishing
+relivable
+relive
+relives
+reliving
+reload
+reloaded
+reloader
+reloading
+reloads
+relocatable
+relocate
+relocated
+relocates
+relocating
+relocation
+relocations
+reluctance
+reluctancy
+reluctant
+reluctantly
+relume
+rely
+relying
+remade
+remagnify
+remain
+remainder
+remainders
+remained
+remaining
+remains
+remake
+remaker
+remand
+remap
+remark
+remarkable
+remarkableness
+remarkably
+remarked
+remarking
+remarks
+remarriage
+remarry
+rematch
+Rembrandt
+remeasure
+remediable
+remedial
+remedially
+remediation
+remedied
+remedies
+remediless
+remedy
+remedying
+remelt
+remember
+remembered
+remembering
+remembers
+remembrance
+remembrances
+remigrate
+remilitarization
+remilitarize
+remind
+reminded
+reminder
+reminders
+reminding
+reminds
+Remington
+reminisce
+reminiscence
+reminiscences
+reminiscent
+reminiscently
+remiss
+remissible
+remission
+remissly
+remissness
+remit
+remittance
+remittee
+remittent
+remitter
+remix
+remnant
+remnants
+remodel
+remodeled
+remodeling
+remodels
+remold
+remonstrance
+remonstrant
+remonstrate
+remonstrated
+remonstrates
+remonstrating
+remonstration
+remonstrative
+remorse
+remorseful
+remorsefully
+remorseless
+remorselessly
+remorselessness
+remote
+remote-controlled
+remotely
+remoteness
+remotest
+remould
+remount
+removable
+removal
+removals
+remove
+removed
+remover
+removes
+removing
+remunerate
+remuneration
+remunerative
+Remus
+Remy
+Rena
+renaissance
+renal
+rename
+renamed
+renames
+renaming
+renascence
+renascent
+Renault
+Renaults
+rend
+render
+rendered
+rendering
+renderings
+renders
+rendezvous
+rending
+rendition
+renditions
+rends
+Rene
+Renee
+renegade
+renege
+reneger
+renegotiable
+renegotiate
+renegotiation
+renew
+renewable
+renewal
+renewed
+renewer
+renewing
+renews
+rennet
+rennin
+Reno
+Renoir
+renominate
+renomination
+renounce
+renouncement
+renounces
+renouncing
+renovate
+renovated
+renovation
+renovator
+renown
+renowned
+Rensselaer
+rent
+rent-charge
+rent-free
+rent-roll
+rentable
+rental
+rentals
+rented
+renter
+renting
+rents
+renumber
+renumbering
+renumbers
+renunciate
+renunciation
+Renville
+reoccupation
+reoccupy
+reoccur
+reopen
+reopened
+reopening
+reopens
+reorder
+reordered
+reordering
+reorders
+reorganization
+reorganizations
+reorganize
+reorganized
+reorganizes
+reorganizing
+reorient
+reorientation
+rep
+repack
+repackage
+repagination
+repaid
+repaint
+repair
+repairable
+repaired
+repairer
+repairing
+repairman
+repairmen
+repairs
+reparable
+reparation
+reparations
+repartee
+repartition
+repast
+repasts
+repatriate
+repatriation
+repave
+repay
+repayable
+repaying
+repayment
+repays
+repeal
+repealed
+repealer
+repealing
+repeals
+repeat
+repeatable
+repeated
+repeatedly
+repeater
+repeaters
+repeating
+repeats
+repel
+repelent
+repellant
+repelled
+repellent
+repels
+repent
+repentance
+repentant
+repentantly
+repented
+repenting
+repents
+repercussion
+repercussions
+reperforator
+repertoire
+repertory
+repetition
+repetitions
+repetitious
+repetitiously
+repetitiousness
+repetitive
+repetitively
+repetitiveness
+rephotograph
+rephrase
+rephrased
+rephrases
+rephrasing
+repine
+replace
+replaceable
+replaced
+replacement
+replacements
+replacer
+replaces
+replacing
+replant
+replay
+replayed
+replaying
+replays
+replenish
+replenished
+replenishes
+replenishing
+replenishment
+replete
+repleteness
+repletion
+replevin
+replica
+replicas
+replicate
+replicated
+replicates
+replicating
+replication
+replications
+replied
+replies
+replot
+reply
+replying
+repopulate
+report
+reportage
+reported
+reportedly
+reporter
+reporters
+reporting
+reportorial
+reports
+reposal
+repose
+reposed
+reposeful
+reposes
+reposing
+reposition
+repositioned
+repositioning
+repositions
+repositories
+repository
+repossess
+repossession
+reprehend
+reprehensibility
+reprehensible
+reprehensibly
+reprehension
+reprehensive
+represent
+representable
+representably
+representation
+representational
+representationally
+representations
+representative
+representatively
+representativeness
+representatives
+represented
+representing
+represents
+repress
+repressed
+represses
+repressing
+repression
+repressions
+repressive
+repressively
+reprice
+reprieve
+reprieved
+reprieves
+reprieving
+reprimand
+reprint
+reprinted
+reprinting
+reprints
+reprisal
+reprisals
+reprise
+reproach
+reproachable
+reproached
+reproaches
+reproachful
+reproachfully
+reproaching
+reprobate
+reprocess
+reproduce
+reproduced
+reproducer
+reproducers
+reproduces
+reproducibilities
+reproducibility
+reproducible
+reproducibly
+reproducing
+reproduction
+reproductions
+reproductive
+reprogram
+reprogrammed
+reprogramming
+reprograms
+reprography
+reproof
+reprove
+reprover
+reprovingly
+reptile
+reptiles
+reptilian
+republic
+republican
+republicans
+republication
+republics
+republish
+repudiate
+repudiated
+repudiates
+repudiating
+repudiation
+repudiations
+repudiator
+repugnace
+repugnance
+repugnancy
+repugnant
+repulse
+repulsed
+repulses
+repulsing
+repulsion
+repulsions
+repulsive
+repulsively
+repulsiveness
+repump
+repurchase
+reputability
+reputable
+reputably
+reputation
+reputations
+repute
+reputed
+reputedly
+reputes
+request
+requested
+requester
+requesters
+requesting
+requests
+requeue
+requiem
+require
+required
+requirement
+requirements
+requires
+requiring
+requisite
+requisites
+requisition
+requisitioned
+requisitioning
+requisitions
+requital
+requite
+requiter
+reran
+reread
+rerecord
+reregister
+reroute
+rerouted
+reroutes
+rerouting
+rerun
+reruns
+resalable
+resale
+rescanning
+reschedule
+rescind
+rescission
+rescue
+rescued
+rescuer
+rescuers
+rescues
+rescuing
+reseal
+resealable
+research
+researched
+researcher
+researchers
+researches
+researching
+resect
+resection
+reseda
+reseed
+reselect
+reselected
+reselecting
+reselects
+resell
+reselling
+resemblance
+resemblances
+resemble
+resembled
+resembles
+resembling
+resent
+resented
+resentful
+resentfully
+resentfulness
+resenting
+resentment
+resents
+resequencing
+reserpine
+reservation
+reservations
+reserve
+reserved
+reservedly
+reservedness
+reserver
+reserves
+reserving
+reservist
+reservoir
+reservoirs
+reset
+resets
+resetting
+resettings
+resettle
+resettlement
+resew
+reshape
+resharpen
+reship
+reshipment
+reshow
+reshuffle
+reside
+resided
+residence
+residences
+residency
+resident
+residential
+residentially
+residents
+resides
+residing
+residua
+residual
+residuals
+residuary
+residue
+residues
+residuum
+resign
+resignation
+resignations
+resigned
+resignedly
+resigning
+resigns
+resilience
+resiliency
+resilient
+resiliently
+resin
+resinous
+resins
+resist
+resistable
+resistance
+resistances
+resistant
+resistantly
+resisted
+resister
+resistibility
+resistible
+resisting
+resistive
+resistivity
+resistless
+resistor
+resistors
+resists
+reskill
+resold
+resole
+resoluble
+resolute
+resolutely
+resoluteness
+resolution
+resolutions
+resolvable
+resolve
+resolved
+resolvent
+resolver
+resolvers
+resolves
+resolving
+resonance
+resonances
+resonant
+resonantly
+resonate
+resonator
+resorption
+resort
+resorted
+resorting
+resorts
+resound
+resounding
+resoundingly
+resounds
+resource
+resourceful
+resourcefully
+resourcefulness
+resources
+resow
+respect
+respectability
+respectable
+respectably
+respected
+respecter
+respectful
+respectfully
+respectfulness
+respecting
+respective
+respectively
+respects
+respell
+respiration
+respirator
+respiratory
+respire
+respite
+resplendence
+resplendency
+resplendent
+resplendently
+respond
+responded
+respondent
+respondents
+responder
+responding
+responds
+response
+responses
+responsibilities
+responsibility
+responsible
+responsibleness
+responsibly
+responsive
+responsively
+responsiveness
+respray
+rest
+restaff
+restart
+restarted
+restarting
+restarts
+restate
+restated
+restatement
+restates
+restating
+restaurant
+restauranteur
+restaurants
+restaurateur
+restauration
+rested
+restful
+restfully
+restfulness
+restiff
+resting
+restitch
+restitution
+restive
+restively
+restiveness
+restless
+restlessly
+restlessness
+restock
+restoration
+restorations
+restorative
+restore
+restored
+restorer
+restorers
+restores
+restoring
+restrain
+restrained
+restrainedly
+restrainer
+restrainers
+restraining
+restrains
+restraint
+restraints
+restrengthen
+restrict
+restricted
+restricting
+restriction
+restrictions
+restrictive
+restrictively
+restrictiveness
+restricts
+restring
+restroom
+restructure
+restructured
+restructures
+restructuring
+rests
+restudy
+restyle
+resubmit
+resubscribe
+result
+resultant
+resultantly
+resultants
+resulted
+resulting
+results
+resumable
+resume
+resumed
+resumes
+resuming
+resumption
+resumptions
+resupply
+resurface
+resurge
+resurgence
+resurgent
+resurrect
+resurrected
+resurrecting
+resurrection
+resurrections
+resurrector
+resurrectors
+resurrects
+resurvey
+resuscitate
+resuscitation
+resuscitator
+resynchronization
+resynchronize
+resynchronized
+resynchronizing
+ret
+retail
+retailer
+retailers
+retailing
+retain
+retained
+retainer
+retainers
+retaining
+retainment
+retains
+retake
+retaken
+retaliate
+retaliation
+retaliative
+retaliatory
+retard
+retardant
+retardation
+retarded
+retarder
+retarding
+retch
+reteach
+retell
+retention
+retentions
+retentive
+retentively
+retentiveness
+retest
+rethink
+rethinking
+rethought
+reticence
+reticent
+reticently
+reticle
+reticles
+reticular
+reticulate
+reticulated
+reticulately
+reticulates
+reticulating
+reticulation
+reticule
+retie
+retina
+retinae
+retinal
+retinas
+retinue
+retire
+retired
+retiree
+retirement
+retirements
+retires
+retiring
+retold
+retook
+retool
+retort
+retorted
+retortion
+retorts
+retouch
+retoucher
+retrace
+retraced
+retraces
+retracing
+retract
+retractable
+retracted
+retractile
+retracting
+retraction
+retractions
+retracts
+retrain
+retrained
+retraining
+retrains
+retranslate
+retranslated
+retransmission
+retransmissions
+retransmit
+retransmits
+retransmitted
+retransmitting
+retread
+retreat
+retreated
+retreating
+retreats
+retrench
+retrenchment
+retrial
+retribute
+retribution
+retributive
+retried
+retrier
+retriers
+retries
+retrievability
+retrievable
+retrieval
+retrievals
+retrieve
+retrieved
+retriever
+retrievers
+retrieves
+retrieving
+retro
+retro-
+retro-rocket
+retroact
+retroaction
+retroactive
+retroactively
+retrocede
+retrocession
+retrofire
+retrofit
+retrofitting
+retrograde
+retrogress
+retrogression
+retrogressive
+retrorocket
+retrospect
+retrospection
+retrospective
+retrospectively
+retrovirus
+retry
+retrying
+retsina
+return
+returnable
+returned
+returnee
+returner
+returning
+returns
+retype
+retyped
+retypes
+retyping
+Reub
+Reuben
+reunification
+reunify
+reunion
+reunions
+reunite
+reunited
+reuniting
+reupholster
+reusable
+reuse
+reused
+reuses
+reusing
+Reuters
+Reuther
+revaluation
+revalue
+revamp
+revamped
+revamping
+revamps
+reveal
+revealed
+revealing
+revealingly
+reveals
+reveille
+revel
+revelation
+revelations
+reveled
+reveler
+reveling
+reveller
+revelry
+revels
+revenage
+revenge
+revengeful
+revengefully
+revenger
+revenue
+revenuer
+revenuers
+revenues
+reverberate
+reverberation
+revere
+revered
+reverence
+reverend
+reverends
+reverent
+reverential
+reverentially
+reverently
+reveres
+reverie
+reverified
+reverifies
+reverify
+reverifying
+revering
+revers
+reversal
+reversals
+reverse
+reversed
+reversely
+reverser
+reverses
+reversible
+reversibly
+reversing
+reversion
+revert
+reverted
+revertible
+reverting
+reverts
+revery
+revet
+revetment
+review
+reviewed
+reviewer
+reviewers
+reviewing
+reviews
+revile
+reviled
+revilement
+reviler
+reviling
+revisal
+revise
+revised
+reviser
+revises
+revising
+revision
+revisionary
+revisionism
+revisionist
+revisions
+revisit
+revisited
+revisiting
+revisits
+revitalization
+revitalize
+revival
+revivalism
+revivalist
+revivals
+revive
+revived
+reviver
+revives
+revivification
+revivify
+reviving
+revocable
+revocation
+revokable
+revoke
+revoked
+revoker
+revokes
+revoking
+revolt
+revolted
+revolter
+revolting
+revoltingly
+revolts
+revolution
+revolutionaries
+revolutionary
+revolutionise
+revolutionist
+revolutionize
+revolutionized
+revolutionizer
+revolutions
+revolvable
+revolve
+revolved
+revolver
+revolvers
+revolves
+revolving
+revs
+revue
+revulsion
+reward
+rewarded
+rewarding
+rewardingly
+rewards
+rewarm
+rewash
+reweave
+rewed
+reweigh
+rewind
+rewinding
+rewinds
+rewire
+reword
+rework
+reworked
+reworking
+reworks
+rewound
+rewrite
+rewriter
+rewrites
+rewriting
+rewritten
+rewrote
+Rex
+rexine
+Reykjavik
+Reynolds
+rezone
+RFD
+Rh
+rhapsodic
+rhapsodical
+rhapsodize
+rhapsody
+Rheims
+Rheinholdt
+rheme
+Rhenish
+rhenium
+rheostat
+rhesus
+rhetoric
+rhetorical
+rhetorically
+rhetorician
+rheum
+rheumatic
+rheumatically
+rheumatism
+rheumatoid
+rheumy
+Rhine
+Rhineland
+rhinestone
+rhinitis
+rhino
+rhinoceros
+rhizome
+rhizomes
+rho
+Rhoda
+Rhode
+Rhodes
+Rhodesia
+Rhodesian
+rhodium
+rhododendron
+rhomb
+rhombi
+rhombic
+rhomboid
+rhomboidal
+rhombus
+Rhone
+rhubarb
+rhyme
+rhymed
+rhymer
+rhymes
+rhymester
+rhyming
+rhythm
+rhythmic
+rhythmical
+rhythmically
+rhythms
+RI
+rial
+rib
+ribald
+ribaldry
+riband
+ribbed
+ribber
+ribbing
+ribbon
+ribbons
+riboflavin
+ribonucleic
+ribs
+Rica
+Rican
+Ricanism
+Ricans
+rice
+ricer
+rich
+Richard
+Richards
+Richardson
+richer
+riches
+richest
+Richey
+Richfield
+Richland
+richly
+Richmond
+richness
+Richter
+rick
+Rickenbaugh
+rickets
+Rickettsia
+rickety
+rickrack
+ricksha
+rickshaw
+rickshaws
+Rico
+ricochet
+ricotta
+rid
+riddance
+ridden
+ridding
+riddle
+riddled
+riddles
+riddling
+ride
+rider
+riderless
+riders
+ridership
+rides
+ridge
+ridge-tile
+ridge-tree
+ridged
+Ridgefield
+ridgepole
+ridges
+Ridgway
+ridgy
+ridicule
+ridiculed
+ridicules
+ridiculing
+ridiculous
+ridiculously
+ridiculousness
+riding
+riding-breeches
+riding-habit
+riding-master
+riding-mistress
+riding-rod
+rids
+Riemann
+Riemannian
+Riesling
+rife
+rifeness
+riff
+riff-raff
+riffle
+riffraff
+rifle
+rifle-barrel
+rifle-shot
+rifled
+rifleman
+rifler
+rifles
+rifling
+rift
+rig
+rig-about
+rig-out
+rig-up
+Riga
+rigamarole
+rigatoni
+Rigel
+rigger
+rigging
+Riggs
+right
+right-angled
+right-hand
+right-handed
+right-handedly
+right-handedness
+right-hander
+right-minded
+right-of-way
+right-thinking
+right-to-life
+right-to-lifer
+right-wing
+right-winger
+righted
+righten
+righteous
+righteously
+righteousness
+righter
+rightful
+rightfully
+rightfulness
+righting
+rightism
+rightist
+rightly
+rightly-minded
+rightmost
+rightness
+rights
+rights-of-way
+rightsize
+rightward
+rightwards
+rigid
+rigidity
+rigidly
+rigidness
+rigmarole
+rigor
+rigorous
+rigorously
+rigorousness
+rigors
+rigour
+rigs
+rile
+Riley
+Rilke
+rill
+rim
+rime
+rimer
+rimless
+rimmed
+rims
+Rimsky-Korsakov
+rind
+rinds
+Rinehart
+ring
+ring-bone
+ring-dove
+ring-finger
+ring-flower
+ring-leader
+ring-off
+ring-out
+ring-pigeon
+ring-thimble
+ring-worm
+ringed
+ringer
+ringers
+ringing
+ringingly
+ringings
+ringleader
+ringlet
+ringlike
+ringmaster
+rings
+ringside
+ringworm
+rink
+rinky-dink
+rinse
+rinsed
+rinser
+rinses
+rinsing
+Rio
+Riordan
+riot
+rioted
+rioter
+rioters
+rioting
+riotous
+riotously
+riots
+rip
+rip-cord
+rip-off
+rip-roaring
+riparian
+ripcord
+ripe
+ripely
+ripen
+ripeness
+Ripley
+ripoff
+ripost
+riposte
+ripped
+ripper
+ripping
+ripple
+rippled
+ripples
+rippling
+ripply
+rips
+ripsaw
+riptide
+RISC
+rise
+risen
+riser
+risers
+rises
+risibility
+risible
+rising
+risings
+risk
+risked
+riskily
+riskiness
+risking
+risks
+risky
+risotto
+risque
+Ritchie
+rite
+rites
+Ritter
+ritual
+ritualism
+ritualistic
+ritualistically
+ritually
+rituals
+Ritz
+ritzy
+rival
+rivaled
+rivalled
+rivalling
+rivalries
+rivalry
+rive
+rivelled
+riven
+river
+river-horse
+Rivera
+riverain
+riverbank
+riverbed
+riverboat
+riverfront
+rivers
+riverside
+Riverview
+rivet
+riveter
+riveting
+riveting-machine
+rivets
+Riviera
+rivulet
+rivulets
+Riyadh
+riyal
+RNA
+roach
+road
+road-fence
+road-hog
+road-labourer
+road-metal
+road-roller
+road-side
+roadbed
+roadblock
+roadhouse
+roadie
+roadkill
+roadmanship
+roadrunner
+roads
+roadshow
+roadside
+roadstead
+roadster
+roadsters
+roadwasher
+roadway
+roadways
+roadwork
+roadworthy
+roam
+roamed
+roamer
+roaming
+roams
+roan
+roan-tree
+Roanoke
+roar
+roared
+roarer
+roaring
+roars
+roast
+roast-beef
+roast-meat
+roasted
+roaster
+roasting
+roasts
+rob
+robbed
+robber
+robberies
+robbers
+robbery
+Robbie
+Robbin
+robbing
+Robbins
+robe
+robed
+Robert
+Roberta
+Roberto
+Roberts
+Robertson
+Robertsons
+robes
+Robeson
+robin
+robing
+robins
+Robinson
+Robinsonville
+robot
+robotic
+robotics
+robotize
+robots
+robs
+robust
+robustious
+robustly
+robustness
+Rocco
+Rochester
+rochet
+Rochford
+rock
+rock(-music)
+rock-and-roll
+rock-bottom
+rock-cork
+rock-doe
+rock-garden
+rock-n-roll
+rock-ribbed
+rock-salt
+rock-steady
+rockabilly
+rockabye
+Rockaway
+Rockaways
+rockbound
+rocked
+Rockefeller
+rocker
+rockers
+rockery
+rocket
+rocketed
+rocketing
+rocketry
+rockets
+rockfall
+Rockford
+Rockies
+rockiness
+rocking
+rocking-chair
+rocking-horse
+Rockland
+rocks
+Rockville
+Rockwell
+rocky
+rococo
+rod
+rod-horse
+rode
+rodent
+rodents
+rodeo
+Rodgers
+Rodin
+Rodney
+rodomontade
+Rodriguez
+rods
+roe
+roe-buck
+roe-calf
+roe-stone
+roebuck
+rogation
+roger
+Rogers
+rogue
+roguery
+rogues
+roguish
+roguishly
+roguishness
+roil
+roister
+roisterer
+Roland
+role
+role-play
+role-playing
+roles
+roll
+roll-blind
+roll-film
+roll-top
+rollback
+rolled
+roller
+roller-skate
+roller-skates
+Rollerblade
+rollers
+rollerskating
+rollforward
+rollick
+rollicking
+Rollie
+rolling
+rolling-board
+rolling-chair
+rolling-mill
+rolling-pin
+rolling-press
+Rollins
+rollmicrofilm
+rollmop
+rollover
+rolls
+rollstop
+roly-poly
+ROM
+Romaic
+romaine
+Roman
+romance
+romancer
+romancers
+romances
+romancing
+Romanesque
+Romania
+Romanian
+Romanic
+romanization
+Romanizations
+romanize
+Romanizer
+Romanizers
+Romanizes
+Romano
+Romans
+romantic
+romantically
+romanticism
+romanticist
+romanticize
+romantics
+Romany
+Rome
+Romeldale
+Romish
+romp
+romped
+romper
+rompers
+romping
+romps
+Romulus
+Ron
+Ronald
+ronde
+rondo
+Ronnie
+Rontgen
+rood
+rood-arch
+roof
+roofed
+roofer
+roofing
+roofless
+roofs
+rooftop
+rook
+rookery
+rookie
+room
+roomage
+roomed
+roomer
+roomers
+roomette
+roomful
+roominess
+rooming
+roommate
+rooms
+roomy
+Rooney
+Roosevelt
+Rooseveltian
+roost
+rooster
+roosters
+root
+root-hog-or-die
+root-word
+rooted
+rooter
+rooting
+rootless
+rootlet
+roots
+rooty
+rope
+rope-dancer
+rope-drum
+rope-ladder
+rope-maker
+roped
+roper
+ropers
+ropes
+ropeway
+roping
+ropy
+Roquefort
+Roquemore
+Rorschach
+rorty
+Rosa
+Rosabelle
+Rosalie
+Rosario
+rosary
+rose
+rose-bay
+rose-chafer
+rose-colored
+rose-laurel
+rose-liniment
+rose-mallow
+rose-rash
+rose-vinegar
+rose-water
+rose-window
+roseate
+Roseau
+rosebud
+rosebuds
+rosebush
+Roseland
+Rosella
+roselle
+rosemary
+Rosen
+Rosenberg
+Rosenblum
+Rosenthal
+Rosenzweig
+roses
+Rosetta
+rosette
+rosewater
+rosewood
+Rosie
+rosily
+rosin
+rosiness
+Ross
+Rossi
+Rossini
+roster
+Rostov
+rostra
+rostrum
+Roswell
+rosy
+rot
+rota
+rotaprint
+Rotarian
+Rotarians
+rotary
+rotate
+rotated
+rotates
+rotating
+rotation
+rotational
+rotations
+rotator
+rotatory
+ROTC
+rote
+rotgut
+Roth
+Rothschild
+rotisserie
+rotograph
+rotogravure
+rotogravurer
+rotor
+rototiller
+rots
+rotten
+rottenly
+rottenness
+rotter
+Rotterdam
+rotting
+rotund
+rotunda
+rotundity
+rotundness
+rouble
+roue
+rouge
+rough
+rough-and-ready
+rough-and-tumble
+rough-cast
+rough-coat
+rough-draw
+rough-grind
+rough-hew
+rough-hewn
+rough-legged
+rough-machine
+rough-rider
+rough-shod
+rough-turn
+roughage
+roughed
+roughen
+rougher
+roughest
+roughhouse
+roughly
+roughneck
+roughness
+roughshod
+roulette
+Roumania
+round
+round-house
+round-shouldered
+round-the-clock
+round-trip
+round-up
+roundabout
+rounded
+roundedness
+roundelay
+rounder
+roundest
+roundhead
+roundheel
+roundhouse
+rounding
+roundish
+roundlog
+roundly
+roundness
+roundoff
+rounds
+roundtable
+roundup
+roundworm
+Rourke
+rouse
+roused
+rouses
+rousing
+Rousseau
+roust
+roustabout
+rout
+route
+routed
+router
+routers
+routes
+routine
+routinely
+routines
+routing
+routings
+routinize
+rove
+roved
+rover
+roves
+roving
+row
+rowan
+rowboat
+rowdily
+rowdiness
+rowdy
+rowdyism
+Rowe
+rowed
+rowel
+Rowena
+rower
+rowing
+Rowland
+Rowley
+rowlock
+rows
+Roxbury
+Roxy
+Roy
+royal
+royalist
+royalists
+royally
+royalties
+royalty
+Royce
+Rozelle
+rozliovat
+rozliovn
+RP
+RR
+RSFSR
+RSI
+RST
+RSV
+RSVP
+Ru
+Ruanda
+rub
+Rubaiyat
+rubato
+rubbed
+rubber
+rubber-stamp
+rubberize
+rubberneck
+rubbernecker
+rubbers
+rubbery
+rubbing
+rubbish
+rubbishy
+rubble
+rubdown
+rubella
+Ruben
+Rubens
+Rubicon
+rubicund
+rubidium
+rubies
+Rubin
+ruble
+rubles
+rubout
+rubric
+rubricate
+rubricator
+rubs
+ruby
+ruck
+rucksack
+ruckus
+ruction
+rudder
+rudderless
+rudders
+ruddiness
+ruddle
+ruddy
+rude
+rudely
+rudeness
+rudiment
+rudimentary
+rudiments
+Rudolf
+Rudolph
+Rudy
+Rudyard
+rue
+rueful
+ruefully
+ruefulness
+ruff
+ruffed
+ruffian
+ruffianly
+ruffians
+ruffle
+ruffled
+ruffler
+ruffles
+ruffly
+Rufus
+rug
+rugby
+rugged
+ruggedly
+ruggedness
+rugose
+rugs
+Ruhr
+ruin
+ruination
+ruinations
+ruined
+ruining
+ruinous
+ruinously
+ruins
+rule
+ruled
+ruler
+rulers
+rules
+ruling
+rulings
+ruly
+rum
+rum-hole
+rum-mill
+Rumania
+Rumanian
+Rumanians
+rumba
+rumble
+rumbled
+rumbler
+rumbles
+rumbling
+rumblings
+rumen
+Rumford
+ruminant
+ruminate
+rumination
+ruminative
+rummage
+Rummel
+rummer
+rummy
+rumor
+rumored
+rumormonger
+rumors
+rumour
+rumour-mongering
+rump
+rump-bone
+rump-steak
+rumple
+rumpled
+rumply
+rumpot
+rumpus
+run
+run!
+run-down
+run-in
+run-of-the-mill
+run-off
+run-on
+run-through
+run-up
+runabout
+runaround
+runaway
+rundle
+rundown
+rune
+rung
+Runge
+rungs
+runic
+runlet
+runnable
+runnel
+runner
+runner-up
+runners
+runners-up
+running
+running-knot
+running-place
+runny
+Runnymede
+runoff
+runs
+runt
+runtime
+runty
+runway
+Runyon
+rupee
+rupiah
+Ruppert
+rupture
+ruptured
+ruptures
+rupturing
+rural
+rurally
+Ruritania
+ruse
+rush
+rush-act
+rushed
+rusher
+rushes
+rushing
+Rushmore
+rushy
+rusk
+Russ
+Russell
+russet
+Russia
+Russian
+Russianizations
+Russianizes
+Russians
+Russo
+rust
+rusted
+rustic
+rustically
+rusticate
+rusticated
+rusticates
+rusticating
+rustication
+rusticity
+rustiness
+rusting
+rustle
+rustled
+rustler
+rustlers
+rustling
+rustproof
+rusts
+rusty
+rusty-dusty
+rut
+rutabaga
+Rutgers
+ruth
+Ruthenia
+Ruthenian
+ruthenium
+Rutherford
+rutherfordium
+ruthless
+ruthlessly
+ruthlessness
+Rutland
+Rutledge
+ruts
+rutting
+ruttish
+rutty
+RV
+RVT
+Rwanda
+Rwandan
+Rx
+Ryan
+Rydberg
+Ryder
+rye
+rye-grass
+rsum
+S&L
+s-mail
+s.n.
+s/he
+SA
+Saar
+Sabbath
+Sabbathize
+Sabbathizes
+sabbatical
+saber
+sabers
+Sabin
+Sabina
+Sabine
+sable
+sable-colored
+sables
+sabot
+sabotage
+saboteur
+sabra
+sabre
+sabulous
+sac
+saccharin
+saccharine
+sacerdotal
+sachem
+sachet
+Sachs
+sack
+sack-but
+sack-cloth
+sackcloth
+sacker
+sackful
+sacking
+sacks
+sacra
+sacral
+sacrament
+sacramental
+Sacramento
+sacred
+sacredly
+sacredness
+sacrifice
+sacrificed
+sacrificer
+sacrificers
+sacrifices
+sacrificial
+sacrificially
+sacrificing
+sacrilege
+sacrilegious
+sacrilegiously
+sacrist
+sacristan
+sacristy
+sacroiliac
+sacrosanct
+sacrosanctness
+sacrum
+sad
+sad-hearted
+Sadat
+sadden
+saddened
+saddens
+sadder
+saddest
+saddle
+saddle-bag
+saddle-horse
+saddle-maker
+saddlebag
+saddled
+saddler
+saddlery
+saddles
+Sadducee
+Sadie
+sadism
+sadist
+sadistic
+sadistically
+sadists
+Sadler
+sadly
+sadness
+sadomasochism
+sadomasochist
+sadomasochistic
+safari
+safe
+safe-conduct
+safe-deposit
+safeguard
+safeguarded
+safeguarding
+safeguards
+safekeeping
+safely
+safeness
+safer
+safes
+safest
+safeties
+safety
+safety-catch
+safety-cock
+safety-lamp
+safety-match
+safety-pin
+safety-valve
+safflower
+saffron
+sag
+saga
+sagacious
+sagaciously
+sagacity
+sage
+sagebrush
+sagely
+sages
+sagging
+saggy
+Saginaw
+sagittal
+Sagittarius
+sago
+sags
+saguaro
+Sahara
+Saharan
+Sahel
+sahib
+said
+Saigon
+sail
+sail-cloth
+sail-duck
+sail-plane
+sail-yard
+sailboard
+sailboat
+sailcloth
+sailed
+sailer
+sailfish
+sailing
+sailing-ship
+sailing-vessel
+sailor
+sailorly
+sailors
+sailplane
+sails
+saint
+sainted
+saintess
+sainthood
+saintlike
+saintliness
+saintly
+saints
+saith
+Sakai
+sake
+sakes
+saki
+Sal
+salable
+salacious
+salaciously
+salaciousness
+salacity
+salad
+salad-dressing
+salad-oil
+salad-parsley
+salads
+salamander
+salame
+salami
+salaried
+salaries
+salary
+sale
+saleable
+Salem
+Salerno
+sales
+salesclerk
+salesgirl
+Salesian
+saleslady
+salesman
+salesmanship
+salesmen
+salespeople
+salesperson
+saleswoman
+salience
+salient
+saliently
+Salina
+Salinas
+saline
+Salinger
+salinity
+Salisbury
+Salish
+saliva
+salivary
+salivate
+salivation
+Salk
+Salle
+sallies
+sallow
+sallowness
+sally
+sallying
+salmon
+salmonella
+salmonellae
+salon
+Salonica
+Salonika
+salons
+saloon
+saloons
+salsa
+salt
+salt-box
+salt-cellar
+salt-house
+salt-mine
+salt-water
+salt-works
+saltation
+saltcellar
+salted
+salter
+saltern
+salters
+saltier
+saltiest
+saltine
+saltiness
+salting
+Salton
+saltpeter
+saltpetre
+salts
+saltshaker
+saltwater
+salty
+salubrious
+salutary
+salutation
+salutations
+salutatory
+salute
+saluted
+salutes
+saluting
+Salvador
+Salvadoran
+Salvadorian
+salvage
+salvageable
+salvaged
+salvager
+salvages
+salvaging
+salvation
+Salvatore
+salve
+salver
+salves
+salvo
+Salz
+SAM
+Samara
+Samaria
+Samaritan
+samarium
+samba
+same
+same-sex
+sameness
+Sammy
+Samoa
+Samoan
+samovar
+sampan
+sample
+sampled
+sampler
+samplers
+samples
+sampling
+samplings
+Sampson
+Samson
+Samuel
+Samuels
+Samuelson
+samurai
+San
+San'a
+Sana
+Sanaa
+sanation
+sanative
+sanatoria
+sanatorium
+sanatory
+Sanborn
+Sanchez
+Sancho
+sancta
+sanctification
+sanctified
+sanctify
+sanctimonious
+sanctimoniously
+sanctimoniousness
+sanctimony
+sanction
+sanctioned
+sanctioning
+sanctions
+sanctitude
+sanctity
+sanctuaries
+sanctuary
+sanctum
+sand
+sand-bag
+sand-bank
+sand-bath
+sand-eel
+sand-glass
+sand-iron
+sand-paper
+sand-pit
+sand-stone
+sandal
+sandals
+sandalwood
+sandbag
+sandbank
+sandbar
+sandblast
+sandblaster
+sandbox
+Sandburg
+sandcastle
+sanded
+sander
+Sanderling
+Sanders
+Sanderson
+sandhog
+Sandia
+sandiness
+sanding
+sandlot
+sandlotter
+sandman
+sandpaper
+sandpiper
+Sandra
+sands
+sandstone
+sandstorm
+Sandusky
+sandwich
+sandwich-man
+sandwiches
+sandy
+sane
+sanely
+saneness
+saner
+sanest
+Sanford
+sang
+sang-froid
+sangfroid
+sangria
+sanguinary
+sanguine
+sanguinely
+sanguineous
+Sanhedrin
+sanitaria
+sanitarian
+sanitarium
+sanitary
+sanitation
+sanitize
+sanitorium
+sanity
+sank
+sans
+Sanscrit
+sanserif
+Sanskrit
+Sanskritic
+Sanskritize
+sansphrase
+Santa
+Santayana
+Santiago
+Santo
+Sao
+sap
+saphead
+sapid
+sapidity
+sapience
+sapiens
+sapient
+sapless
+sapling
+saplings
+saponaceous
+saponification
+sapper
+sapphire
+Sappho
+sappiness
+Sapporo
+sappy
+saprophyte
+saprophytic
+saps
+sapsucker
+sapwood
+Sara
+Saracen
+Saracens
+Sarah
+Sarajevo
+sarape
+Sarasota
+Saratoga
+Saratov
+sarcasm
+sarcasms
+sarcastic
+sarcastically
+sarcoma
+sarcomata
+sarcophagi
+sarcophagus
+sardine
+sardine-box
+Sardinia
+sardonic
+sardonically
+saree
+sarge
+Sargent
+sari
+sarmentous
+sarong
+sarsaparilla
+sartorial
+sartorially
+Sartre
+SASE
+sash
+sashay
+sashwindow
+Saskatchewan
+Saskatoon
+sass
+sassafras
+sassy
+sat
+satan
+satanic
+satanical
+satanically
+Satch
+satchel
+satchels
+sate
+sate-poll
+sated
+sateen
+sateless
+satellite
+satellites
+sates
+satiable
+satiate
+satiation
+satiety
+satin
+sating
+satinwood
+satiny
+satire
+satires
+satiric
+satirical
+satirically
+satirist
+satirize
+satisfaction
+satisfactions
+satisfactorily
+satisfactory
+satisfiability
+satisfiable
+satisfied
+satisfies
+satisfy
+satisfying
+satisfyingly
+satori
+satrap
+satrapy
+satsuma
+saturate
+saturated
+saturates
+saturating
+saturation
+Saturday
+Saturdays
+Saturn
+Saturnalia
+saturnalian
+saturnine
+Saturnism
+satyr
+satyriasis
+satyric
+sauce
+sauce-pan
+saucepan
+saucepans
+saucer
+saucers
+sauces
+saucily
+sauciness
+saucy
+Saud
+Saudi
+sauerkraut
+Saukville
+Saul
+Sault
+sauna
+Saunders
+saunter
+saurian
+sauropod
+sausage
+sausages
+saute
+sauterne
+savable
+savage
+savaged
+savagely
+savageness
+savager
+savagers
+savagery
+savages
+savaging
+savanna
+savannah
+savant
+save
+save-all
+saveable
+saved
+saveloy
+saver
+savers
+saves
+saving
+savings
+savings-bank
+saviors
+saviour
+savoir-faire
+Savonarola
+savor
+savored
+savoriness
+savoring
+savors
+savory
+savour
+savoury
+Savoy
+Savoyard
+Savoyards
+savvy
+saw
+saw-dust
+saw-fish
+saw-horse
+saw-mill
+saw-toothed
+sawbones
+sawbuck
+sawdust
+sawed
+sawed-off
+sawfish
+sawfly
+sawhorse
+sawing
+sawmill
+sawmills
+sawn
+saws
+sawtooth
+sawyer
+sax
+saxifrage
+Saxon
+Saxonization
+Saxonizations
+Saxonize
+Saxonizes
+Saxons
+Saxony
+saxophone
+saxophonist
+Saxton
+say
+say-so
+sayer
+sayers
+saying
+sayings
+says
+Sb
+SBA
+scab
+scab-wort
+scabbard
+scabbards
+scabbed
+scabbiness
+scabby
+scabies
+scabious
+scabrous
+scad
+scads
+scaffold
+scaffolding
+scaffoldings
+scaffolds
+Scala
+scalable
+scalar
+scalars
+scalawag
+scald
+scalded
+scalding
+scale
+scale-beam
+scaled
+scaleless
+scalene
+scales
+scaliness
+scaling
+scalings
+scallawag
+scallion
+scallop
+scalloped
+scallops
+scallywag
+scalp
+scalpel
+scalper
+scalps
+scaly
+scam
+scamp
+scamper
+scampering
+scampers
+scampi
+scan
+scandal
+scandal-grubber
+scandal-monger
+scandalize
+scandalmonger
+scandalous
+scandalously
+scandals
+Scandinavia
+Scandinavian
+Scandinavians
+scandium
+Scania
+scanned
+scanner
+scanners
+SCANNET
+scanning
+scans
+scansion
+scant
+scantier
+scantiest
+scantily
+scantiness
+scantling
+scantly
+scantness
+scanty
+scape
+scape-gallows
+scape-goat
+scape-grace
+scapegoat
+scapegrace
+scapula
+scapulae
+scapular
+scar
+scarab
+scaramouch
+Scarborough
+scarce
+scarcely
+scarceness
+scarcer
+scarcity
+scare
+scarecrow
+scared
+scaredy-cat
+scaremonger
+scares
+scarf
+scarification
+scarify
+scarily
+scariness
+scaring
+scarlatina
+Scarlatti
+scarlet
+scarp
+scarper
+scarred
+scars
+Scarsdale
+scarves
+scary
+scat
+scathe
+scathefull
+scatheless
+scathing
+scathingly
+scatological
+scatology
+scatter
+scatter-brained
+scatterbrain
+scatterbrained
+scattered
+scattering
+scatterling
+scatters
+scavage
+scavenge
+scavenger
+scenario
+scenarios
+scenarist
+scene
+scene-dock
+scene-painter
+scene-shifter
+scenery
+scenes
+scenic
+scenically
+scent
+scented
+scentless
+scents
+scepter
+scepters
+sceptic
+sceptical
+scepticism
+sceptre
+sceptred
+Schaefer
+Schaeffer
+Schafer
+Schaffner
+Schantz
+Schapiro
+schedulable
+schedule
+scheduled
+scheduler
+schedulers
+schedules
+scheduling
+Scheherazade
+Scheldt
+Schelling
+schema
+schemas
+schemata
+schematic
+schematically
+schematics
+scheme
+schemed
+schemer
+schemers
+schemes
+scheming
+Schenectady
+scherzi
+scherzo
+Schiller
+schilling
+schism
+schismatic
+schismatize
+schist
+schistose
+schizo
+schizoid
+schizophrenia
+schizophrenic
+schlemiel
+schlep
+schlep(per)
+schlepp
+schlepper
+Schlesinger
+schlimazel
+Schlitz
+schlock
+schlocky
+schloomp
+Schloss
+schmaltz
+schmaltzy
+schmalz
+schmear
+Schmidt
+Schmitt
+schmo
+schmoe
+schmooze
+schmuck
+Schnabel
+schnapps
+schnaps
+schnauzer
+Schneider
+schnitzel
+schnook
+schnorrer
+schnoz
+schnozz
+schnozzle
+Schoenberg
+Schofield
+scholar
+scholarly
+scholars
+scholarship
+scholarships
+scholastic
+scholastically
+scholastics
+school
+school-book
+school-boy
+school-fellow
+school-girl
+school-hire
+schoolbag
+schoolbook
+schoolboy
+schoolboys
+schoolchild
+schoolchildren
+schooled
+schooler
+schoolers
+schoolfellow
+schoolgirl
+schoolhouse
+schoolhouses
+schooling
+schoolman
+schoolmarm
+schoolmarmish
+schoolmaster
+schoolmasters
+schoolmate
+schoolmistress
+schoolroom
+schoolrooms
+schools
+schoolteacher
+schoolwork
+schoolyard
+schooner
+Schopenhauer
+Schottky
+schrod
+Schroeder
+Schroedinger
+Schubert
+Schultz
+Schulz
+Schumacher
+Schuman
+Schumann
+schuss
+schussboomer
+Schuster
+Schuyler
+Schuylkill
+schwa
+Schwab
+Schwabacher
+Schwartz
+Schweitzer
+SCI
+sci-fi
+sciatic
+sciatica
+science
+sciences
+scientific
+scientifically
+scientist
+scientists
+scientometrics
+scimitar
+scintilla
+scintillate
+scintillating
+scintillation
+sciolism
+scion
+scissible
+scission
+scissor
+scissorbill
+scissored
+scissoring
+scissors
+scissure
+scleroderma
+scleroses
+sclerosis
+sclerotic
+scoff
+scoffed
+scoffer
+scoffing
+scofflaw
+scoffs
+scold
+scolded
+scolding
+scolds
+scoliosis
+scollop
+sconce
+scone
+scoop
+scooped
+scooping
+scoops
+scoot
+scooter
+scope
+scoped
+scopes
+scoping
+scorbute
+scorbutic
+scorch
+scorched
+scorcher
+scorches
+scorching
+score
+scoreboard
+scorecard
+scored
+scorekeeper
+scoreless
+scorer
+scorers
+scores
+scoria
+scoring
+scorings
+scorn
+scorned
+scorner
+scornful
+scornfully
+scorning
+scorns
+Scorpio
+scorpion
+scorpion-grass
+scorpion-wort
+scorpions
+Scot
+scot-free
+scotch
+Scotchgard
+Scotchman
+Scotchwoman
+Scotia
+Scotian
+Scotland
+Scots
+Scotsman
+Scotsmen
+Scotswoman
+Scott
+Scottie
+Scottish
+Scottsdale
+Scotty
+scoundrel
+scoundrels
+scour
+scoured
+scourer
+scourge
+scouring
+scours
+scout
+scouted
+scouting
+scoutmaster
+scouts
+scow
+scowing
+scowl
+scowled
+scowling
+scowls
+scrabble
+scrabbler
+scrag
+scraggly
+scraggy
+scram
+Scram!
+scramble
+scrambled
+scrambler
+scrambles
+scrambling
+Scranton
+scrap
+scrap-heap
+scrapbook
+scrape
+scrape-penny
+scraped
+scraper
+scrapers
+scrapes
+scrapheap
+scraping
+scrapings
+scrapped
+scrapper
+scrappy
+scraps
+scratch
+scratch-cat
+scratchboard
+scratched
+scratcher
+scratchers
+scratches
+scratchily
+scratchiness
+scratching
+scratchy
+scrawl
+scrawled
+scrawling
+scrawls
+scrawly
+scrawniness
+scrawny
+screak
+scream
+screamed
+screamer
+screamers
+screaming
+screams
+scree
+screech
+screech-owl
+screech-thrush
+screeched
+screeches
+screeching
+screechy
+screed
+screen
+screen-wiper
+screen-writer
+screened
+screening
+screenings
+screenplay
+screens
+screenwriter
+screw
+screw-arbor
+screw-driver
+screw-jack
+screw-knob
+screw-propeller
+screw-thread
+screw-wrench
+screwball
+screwdriver
+screwed
+screwiness
+screwing
+screwlike
+screws
+screwworm
+screwy
+scribal
+scribble
+scribble-scrabble
+scribbled
+scribbler
+scribbles
+scribe
+scriber
+scribes
+scribing
+Scribners
+scrim
+scrimmage
+scrimp
+scrimpy
+scrimshaw
+scrip
+Scripps
+script
+scripted
+scriptorium
+scripts
+scriptural
+scripture
+scriptwriter
+scrivener
+scrod
+scrofula
+scrofulous
+scroll
+scrolled
+scrolling
+scrolls
+scroop
+scrota
+scrotal
+scrotum
+scrounge
+scrounger
+scroungy
+scrub
+scrubber
+scrubbing-brush
+scrubby
+scruff
+scruffily
+scruffiness
+scruffy
+scrumptious
+scrumptiously
+scrunch
+scrunchie
+scrunchy
+scruple
+scrupulosity
+scrupulous
+scrupulously
+scrupulousness
+scrutable
+scrutation
+scrutator
+scrutineer
+scrutineers
+scrutinize
+scrutinized
+scrutinizing
+scrutinous
+scrutiny
+scuba
+scud
+scuddle
+scuff
+scuffle
+scuffled
+scuffles
+scuffling
+sculk
+scull
+sculler
+scullery
+scullion
+scullionly
+sculp
+sculpt
+sculpted
+sculptor
+sculptors
+sculptress
+sculpts
+sculptural
+sculpture
+sculptured
+sculptures
+scum
+scumbag
+scumble
+scumming
+scummy
+scupper
+scurf
+scurfy
+scurried
+scurrility
+scurrilous
+scurrilously
+scurrilousness
+scurry
+scurvily
+scurvy
+scut
+scutcheon
+scutter
+scuttle
+scuttlebutt
+scuttled
+scuttles
+scuttling
+scuzzy
+Scylla
+scythe
+scythes
+Scythia
+SD
+SDI
+se-
+sea
+sea-bank
+sea-bear
+sea-bird
+sea-borne
+sea-boy
+sea-breeze
+sea-calf
+sea-coast
+sea-cob
+sea-cow
+sea-dog
+sea-duck
+sea-eagle
+sea-eel
+sea-fairy
+sea-farer
+sea-faring
+sea-gauge
+sea-grass
+sea-gull
+sea-horse
+sea-lion
+sea-maid
+sea-mew
+sea-moss
+sea-urchin
+sea-wall
+sea-weed
+seabed
+seabird
+seaboard
+Seaborg
+seaborne
+Seabrook
+seacoast
+seacoasts
+seafarer
+seafaring
+seafood
+seafront
+Seagate
+seagoing
+Seagram
+seagull
+seahorse
+seal
+seal-oil
+sealant
+sealed
+sealer
+sealing
+sealing-wax
+sealring
+seals
+sealskin
+sealy
+seam
+seaman
+seamanship
+seamed
+seamen
+seaming
+seamless
+seams
+seamstress
+seamy
+Sean
+seance
+seaplane
+seaport
+seaports
+Seaquarium
+sear
+search
+search-light
+searched
+searcher
+searchers
+searches
+searching
+searchingly
+searchings
+searchlight
+seared
+searing
+searingly
+Sears
+seas
+seascape
+seashell
+seashore
+seashores
+seasick
+seasickness
+seaside
+season
+seasonable
+seasonably
+seasonage
+seasonal
+seasonally
+seasoned
+seasoner
+seasoners
+seasoning
+seasonings
+seasons
+seat
+seated
+seating
+seats
+Seattle
+seawall
+seaward
+seawards
+seawater
+seaway
+seaweed
+seaworthiness
+seaworthy
+sebaceous
+Sebastian
+seborrhea
+seborrhoea
+secant
+secateur
+secateurs
+secede
+seceded
+secedes
+seceding
+secession
+secessionist
+seclude
+secluded
+seclusion
+seclusive
+second
+second-best
+second-class
+second-guess
+second-hand
+second-rate
+second-sight
+second-string
+second-stringer
+secondaries
+secondarily
+secondary
+seconded
+seconder
+seconders
+secondhand
+seconding
+secondly
+seconds
+secrecy
+secret
+secretarial
+secretariat
+secretaries
+secretary
+secretaryship
+secrete
+secreted
+secretes
+secreting
+secretion
+secretions
+secretive
+secretively
+secretiveness
+secretly
+secretory
+secrets
+sect
+sectarian
+sectarianism
+sectary
+section
+sectional
+sectionalism
+sectionalization
+sectioned
+sectioning
+sections
+sector
+sectors
+sects
+secular
+secularism
+secularist
+secularization
+secularize
+secure
+secured
+securely
+secures
+securing
+securings
+securities
+security
+sedan
+sedate
+sedately
+sedateness
+sedation
+sedative
+sedentary
+Seder
+sedge
+Sedgwick
+sedgy
+sediment
+sedimentary
+sedimentation
+sediments
+sedition
+seditious
+seduce
+seduced
+seducement
+seducer
+seducers
+seduces
+seducing
+seduction
+seductive
+seductively
+seductiveness
+seductress
+sedulity
+sedulous
+sedulously
+see
+see!
+see-saw
+see-through
+seed
+seed-bed
+seed-cover
+seed-drill
+seed-plot
+seed-sower
+seed-time
+seedbed
+seedcase
+seeded
+seeder
+seeders
+seediness
+seeding
+seedings
+seedless
+seedling
+seedlings
+seedlip
+seedlop
+seedpod
+seeds
+seedsman
+seedy
+seeing
+seek
+seeker
+seekers
+seeking
+seeks
+Seeley
+seem
+seemed
+seemer
+seeming
+seemingly
+seemless
+seemliness
+seemly
+seems
+seen
+seep
+seepage
+seeped
+seeping
+seeps
+seer
+seers
+seersucker
+sees
+seesaw
+seethe
+seethed
+seethes
+seething
+segment
+segmental
+segmentation
+segmentations
+segmented
+segmenting
+segments
+Segovia
+segregate
+segregated
+segregates
+segregating
+segregation
+segregationist
+segue
+Segundo
+Seidel
+seigneur
+seignior
+seigniorial
+seine
+seiner
+seisin
+seismic
+seismically
+seismograph
+seismographer
+seismographic
+seismography
+seismologic
+seismological
+seismologist
+seismology
+seismoscope
+seize
+seized
+seizer
+seizes
+seizin
+seizing
+seizure
+seizures
+seldom
+select
+selected
+selecting
+selection
+selections
+selective
+selectively
+selectiveness
+selectivity
+selectman
+selectmen
+selectness
+selector
+selectors
+Selectric
+selects
+Selena
+selenium
+selenographer
+selenography
+self
+self-abasement
+self-absorbed
+self-absorption
+self-abuse
+self-addressed
+self-advancement
+self-aggrandizement
+self-aggrandizing
+self-analysis
+self-applause
+self-appointed
+self-assertion
+self-assertive
+self-assumption
+self-assurance
+self-assured
+self-aware
+self-awareness
+self-cataloguing
+self-centered
+self-centeredness
+self-centred
+self-citation
+self-cleaning
+self-coloured
+self-command
+self-complacency
+self-complacent
+self-composure
+self-conceit
+self-confessed
+self-confidence
+self-confident
+self-confidently
+self-congratulation
+self-congratulatory
+self-conscious
+self-consciously
+self-consciousness
+self-contained
+self-contradiction
+self-contradictory
+self-control
+self-controlled
+self-criticism
+self-deceit
+self-deception
+self-defeating
+self-defence
+self-defense
+self-delusion
+self-denial
+self-denying
+self-deprecating
+self-deprecation
+self-destruct
+self-destruction
+self-destructive
+self-determination
+self-determined
+self-discipline
+self-disciplined
+self-doubt
+self-educated
+self-effacement
+self-effacing
+self-employed
+self-employment
+self-esteem
+self-evident
+self-evidently
+self-examination
+self-excitation
+self-explanatory
+self-expression
+self-fertilization
+self-fluxing
+self-fulfilling
+self-fulfillment
+self-governing
+self-government
+self-help
+self-homicide
+self-image
+self-importance
+self-important
+self-imposed
+self-imposture
+self-improvement
+self-incrimination
+self-induced
+self-indulgence
+self-indulgent
+self-inflicted
+self-interest
+self-knowledge
+self-love
+self-made
+self-negating
+self-opinion
+self-perpetuating
+self-pity
+self-pitying
+self-pollination
+self-portrait
+self-positive
+self-possessed
+self-possession
+self-preservation
+self-proclaimed
+self-propelled
+self-propelling
+self-protection
+self-realization
+self-regard
+self-regulating
+self-regulation
+self-regulatory
+self-release
+self-reliance
+self-reliant
+self-renunciation
+self-reproach
+self-respect
+self-respecting
+self-restraint
+self-righteous
+self-righteously
+self-righteousness
+self-rule
+self-sacrifice
+self-sacrificing
+self-satisfaction
+self-satisfied
+self-sealing
+self-seeker
+self-seeking
+self-serve
+self-service
+self-serving
+self-slaughter
+self-starter
+self-starting
+self-styled
+self-sufficiency
+self-sufficient
+self-supplier
+self-support
+self-supporting
+self-sustaining
+self-taught
+self-trailer
+self-will
+self-willed
+self-winding
+self-wise
+self-worth
+selfabuse
+selfacting
+selfactive
+selfish
+selfishly
+selfishness
+selfless
+selflessly
+selflessness
+selfmademan
+Selfridge
+selfsame
+Selkirk
+sell
+sell-out
+seller
+sellers
+selling
+sellotape
+sellout
+sells
+Selma
+seltzer
+selvage
+selvedge
+selves
+Selwyn
+semanteme
+semantic
+semantical
+semantically
+semanticise
+semanticist
+semanticists
+semantics
+semaphore
+semaphores
+Semarang
+semblance
+semen
+semester
+semesters
+semi
+semi-
+semi-annual
+semi-automatic
+semi-bright
+semi-circle
+semi-circular
+semi-colon
+semi-drunk
+semi-final
+semi-lies
+semi-literacy
+semi-monthly
+semi-proletarian
+semi-weekly
+semiannual
+semiannually
+semiarid
+semiautomated
+semiautomatic
+semibreve
+semicircle
+semicircular
+semicolon
+semicolons
+semiconductor
+semiconductors
+semiconscious
+semidetached
+semifinal
+semifinalist
+semigraphics
+semimicroform
+semimonthly
+seminal
+seminar
+seminarian
+seminaries
+seminars
+seminary
+semination
+seminole
+semiofficial
+semiotic
+semiotics
+semipermanent
+semipermanently
+semipermeable
+semiprecious
+semiprivate
+semiprofessional
+semiquaver
+Semiramis
+semiretired
+semis
+semiskilled
+semisolid
+semisweet
+Semite
+Semitic
+Semiticize
+Semiticizes
+Semitization
+Semitizations
+Semitize
+Semitizes
+semitone
+semitrailer
+semitransparent
+semitropical
+semivowel
+semiweekly
+semiyearly
+semolina
+sempiternal
+sempstress
+Semtex
+senate
+senates
+senator
+senatorial
+senators
+send
+send-off
+send-up
+Sendai
+sender
+senders
+sending
+sends
+Seneca
+Senegal
+Senegalese
+senescence
+senescent
+seneschal
+senile
+senility
+senior
+seniority
+seniors
+senna
+sennight
+senor
+senora
+senorita
+sensation
+sensational
+sensationalism
+sensationalist
+sensationalize
+sensationally
+sensations
+sense
+sensed
+senseless
+senselessly
+senselessness
+senses
+sensibilities
+sensibility
+sensible
+sensibleness
+sensibly
+sensing
+sensitive
+sensitively
+sensitiveness
+sensitives
+sensitivities
+sensitivity
+sensitization
+sensitize
+sensor
+sensorial
+sensorium
+sensors
+sensory
+sensual
+sensualist
+sensuality
+sensualize
+sensually
+sensuous
+sensuously
+sensuousness
+sent
+sentence
+sentence-semantics
+sentenced
+sentences
+sentencing
+sentential
+sententious
+sententiously
+sentience
+sentient
+sentiment
+sentimental
+sentimentalism
+sentimentalist
+sentimentality
+sentimentalization
+sentimentalize
+sentimentally
+sentiments
+sentinel
+sentinels
+sentries
+sentry
+sentry-box
+Seoul
+sepal
+separability
+separable
+separably
+separate
+separated
+separately
+separateness
+separates
+separating
+separation
+separations
+separatism
+separatist
+separative
+separator
+separators
+sepia
+Sepoy
+sepsis
+sept
+sept-
+septa
+September
+Septembers
+septenary
+septennial
+septet
+septette
+septic
+septicaemia
+septicemia
+septicemic
+septuagenarian
+septuagenary
+Septuagint
+septum
+septuple
+sepulcher
+sepulchers
+sepulchral
+sepulchre
+sepulture
+sequel
+sequels
+sequence
+sequenced
+sequencer
+sequencers
+sequences
+sequencing
+sequencings
+sequent
+sequential
+sequentiality
+sequentialize
+sequentialized
+sequentializes
+sequentializing
+sequentially
+sequester
+sequestrate
+sequestration
+sequestrator
+sequin
+sequined
+sequinned
+Sequoya
+sera
+Serafin
+seraglio
+serape
+seraph
+seraphic
+seraphim
+Serb
+Serbia
+Serbian
+Serbians
+Serbo-
+Serbo-Croatian
+sere
+serenade
+serendipitous
+serendipity
+serene
+serenely
+sereneness
+serenity
+serf
+serfdom
+serfs
+serge
+sergeant
+sergeant-at-arms
+sergeants
+sergeants-at-arms
+Sergei
+serial
+serializability
+serializable
+serialization
+serializations
+serialize
+serialized
+serializes
+serializing
+serially
+serials
+series
+serif
+serigraph
+serigraphy
+serious
+serious-minded
+seriously
+seriousness
+serjeant
+sermon
+sermonette
+sermonize
+sermonizer
+sermons
+serology
+serous
+Serpens
+serpent
+serpentine
+serpents
+Serra
+serrate
+serrated
+serration
+serried
+serum
+serums
+servant
+servants
+serve
+served
+server
+servers
+serves
+service
+service-dress
+service-kit
+service-pipe
+serviceability
+serviceable
+serviced
+serviceman
+servicemen
+services
+servicewoman
+servicing
+serviette
+servile
+servility
+serving
+servings
+servitor
+servitude
+servo
+servo-motor
+servomechanism
+servomotor
+sesame
+sesquicentennial
+sessile
+session
+sessions
+set
+set-back
+set-down
+set-off
+set-out
+set-to
+set-up
+setback
+Seth
+Seton
+sets
+setscrew
+settable
+settee
+setter
+setter-on
+setters
+setting
+setting-dog
+setting-in
+setting-off
+setting-out
+setting-pole
+setting-stick
+setting-up
+Settings
+settle
+settled
+settlement
+settlements
+settler
+settlers
+settles
+settling
+setup
+setups
+seven
+sevenfold
+sevens
+seventeen
+seventeens
+seventeenth
+seventh
+seventies
+seventieth
+seventy
+seventy-eight
+sever
+several
+severalfold
+severally
+severalty
+severance
+severe
+severed
+severely
+severeness
+severer
+severest
+severing
+severities
+severity
+Severn
+severs
+Seville
+sew
+sewage
+Seward
+sewed
+sewer
+sewerage
+sewers
+sewing
+sewing-machine
+sewing-press
+sewing-silk
+sewn
+sews
+sex
+sexagenarian
+sexed
+sexes
+sexily
+sexiness
+sexism
+sexist
+sexless
+sexologist
+sexology
+sexpot
+Sextans
+sextant
+sextet
+sextette
+sextillion
+sexto
+sexton
+sextuple
+sextuplet
+sexual
+sexuality
+sexually
+sexy
+Seychelles
+Seymour
+sgraffito
+Sgt
+sh
+shabbily
+shabbiness
+shabby
+shack
+shacked
+shackle
+shackled
+shackles
+shackling
+shacks
+shad
+shaddock
+shade
+shaded
+shades
+shadier
+shadiest
+shadily
+shadiness
+shading
+shadings
+shadow
+shadowbox
+shadowed
+shadowing
+shadows
+shadowy
+shady
+Shafer
+Shaffer
+shaft
+shaft-horse
+shafting
+shafts
+shag
+shagginess
+shaggy
+shagreen
+shah
+shakable
+shakably
+shake
+shake-down
+shake-off
+shake-up
+shakedown
+shaken
+shakeout
+shakers
+shakes
+Shakespeare
+Shakespearean
+Shakespearian
+Shakespearize
+Shakespearizes
+shakeup
+shakily
+shakiness
+shaking
+shako
+shaky
+shale
+shall
+shallop
+shallot
+shallow
+shallow-brained
+shallower
+shallowly
+shallowness
+shallows
+shalt
+sham
+sham-fight
+shaman
+shamanic
+shamble
+shambles
+shame
+shame-faced
+shamed
+shamefaced
+shamefacedly
+shameful
+shamefully
+shamefulness
+shameless
+shamelessly
+shamelessness
+shames
+shaming
+shammer
+shammy
+shamois
+shampoo
+shampooer
+shamrock
+shams
+shan't
+shandy
+Shanghaied
+Shanghaiing
+Shanghaiings
+Shanghais
+Shangri-la
+shank
+shannon
+shanties
+shanty
+shantytown
+shape
+shaped
+shapeless
+shapelessly
+shapelessness
+shapeliness
+shapely
+shaper
+shapers
+shapes
+shaping
+Shapiro
+sharable
+shard
+share
+share-out
+shareable
+sharecrop
+sharecropper
+sharecroppers
+shared
+shareholder
+shareholders
+sharer
+sharers
+shares
+shareware
+Shari
+sharia
+sharing
+shark
+sharker
+sharks
+sharkskin
+Sharon
+sharp
+sharp-edged
+sharp-eyed
+sharp-set
+sharp-shooter
+sharp-tongued
+sharp-witted
+Sharpe
+sharpen
+sharpened
+sharpener
+sharpening
+sharpens
+sharper
+sharpest
+sharpie
+sharping
+sharply
+sharpness
+sharpshoot
+sharpshooter
+sharpshooting
+sharpy
+Shasta
+shat
+shatter
+shattered
+shattering
+shatterproof
+shatters
+Shattuck
+shave
+shaved
+shaven
+shaver
+shaves
+shavetail
+shaving
+shaving-brush
+shavings
+Shaw
+Shawano
+shawl
+shawls
+shawm
+Shawnee
+shay
+she
+she'd
+she'll
+she's
+she-ass
+she-cousin
+she-friend
+she-goat
+she-servant
+she-wolf
+Shea
+sheaf
+shear
+sheared
+shearing
+shears
+sheath
+sheathe
+sheathing
+sheaths
+sheave
+sheaves
+shebang
+Sheboygan
+shed
+shedding
+Shedir
+sheds
+Sheehan
+sheen
+sheeny
+sheep
+sheep's-head
+sheep's-sorrel
+sheep-cot
+sheep-cote
+sheep-fold
+sheep-master
+sheep-pen
+sheep-shearing
+sheepdog
+sheepfold
+sheepherder
+sheepish
+sheepishly
+sheepishness
+sheepskin
+sheer
+sheered
+sheerness
+sheet
+sheeted
+sheeting
+sheetlike
+sheets
+Sheffield
+sheik
+sheikdom
+sheikh
+sheikhdom
+Sheila
+shekel
+shekels
+Shelby
+Sheldon
+shelf
+shelf-mark
+shelf-number
+shelf-reading
+shell
+shell-board
+shell-pit
+shell-proof
+shell-shocked
+shell-work
+shellac
+shellack
+shellacking
+shelled
+sheller
+Shelley
+shellfire
+shellfish
+shelling
+shells
+shelly
+shelter
+sheltered
+sheltering
+shelterless
+shelters
+Shelton
+shelve
+shelved
+shelves
+shelving
+Shenandoah
+shenanigan
+shenanigans
+Shenyang
+Shepard
+shepherd
+shepherdess
+shepherds
+Sheppard
+Sheraton
+sherbert
+sherbet
+sherd
+Sheridan
+sheriff
+sheriffdom
+sheriffs
+sheriffship
+sheriffwick
+Sherlock
+Sherman
+Sherpa
+Sherrill
+sherry
+Sherwin
+Sherwood
+shew
+shh
+shiatsu
+shibboleth
+shied
+shield
+shield-bearer
+shielded
+shielding
+Shields
+shier
+shies
+shiest
+shift
+shifted
+shifter
+shifters
+shiftier
+shiftiest
+shiftily
+shiftiness
+shifting
+shiftless
+shiftlessly
+shiftlessness
+shifts
+shifty
+Shiite
+Shiites
+Shijiazhuang
+Shikoku
+shill
+shillalah
+shillelagh
+shilling
+shillings
+Shillong
+shilly-shally
+Shiloh
+shim
+shimmer
+shimmering
+shimmery
+shimmy
+shin
+shinbone
+shindig
+shindy
+shine
+shined
+shiner
+shiners
+shines
+shingle
+shingles
+shinguard
+shininess
+shining
+shiningly
+shinny
+shinsplints
+Shinto
+Shintoism
+Shintoist
+Shintoize
+Shintoizes
+shiny
+ship
+ship-based
+ship-boy
+ship-broker
+ship-builder
+ship-carriage
+ship-owner
+ship-wright
+shipboard
+shipbuilder
+shipbuilding
+Shipley
+shipload
+shipman
+shipmate
+shipment
+shipments
+shipowner
+shipped
+shipper
+shippers
+shipping
+shipping-agent
+ships
+shipshape
+shipwreck
+shipwrecked
+shipwrecks
+shipwright
+shipyard
+shire
+shirk
+shirker
+shirking
+shirks
+Shirley
+shirr
+shirring
+shirt
+shirt-front
+shirtfront
+shirting
+shirtless
+shirts
+shirtsleeve
+shirtsleeves
+shirttail
+shirtwaist
+shirty
+shit
+shitty
+shiv
+Shiva
+shiver
+shivered
+shiverer
+shivering
+shivers
+shivery
+shlemiel
+shlep
+shlepp
+shlock
+shmaltz
+shmoe
+Shmuel
+shoal
+shoals
+shoaly
+shoat
+shock
+shocked
+shocker
+shockers
+shocking
+shockingly
+Shockley
+shockproof
+shocks
+shod
+shodden
+shoddily
+shoddiness
+shoddy
+shoe
+shoe-black
+shoe-blacking
+shoe-boy
+shoe-brush
+shoe-buckle
+shoe-horn
+shoe-knife
+Shoe-leather!
+shoe-maker
+shoe-nail
+shoe-string
+shoed
+shoehorn
+shoeing
+shoelace
+shoelast
+shoeless
+shoemaker
+shoemaker's
+shoemaking-trade
+shoes
+shoeshine
+shoestring
+shoetree
+shogun
+shogunate
+Shoji
+shone
+shoo
+shoo-in
+shook
+shook-up
+shoot
+shoot-out
+shooter
+shooters
+shooting
+shootings
+shootout
+shoots
+shop
+shop-assistant
+shop-boy
+shop-keeper
+shop-lifter
+shop-steward
+shop-walker
+shop-window
+shopkeeper
+shopkeepers
+shoplift
+shoplifter
+shoplifting
+shoppe
+shopped
+shopper
+shoppers
+shopping
+shops
+shoptalk
+shopworn
+shore
+shorebird
+shoreline
+shores
+Shorewood
+shoring
+shorn
+short
+short-change
+short-circuit
+short-handed
+short-lived
+short-order
+short-range
+short-sighted
+short-sightedly
+short-sightedness
+short-spoken
+short-tempered
+short-term
+short-termism
+short-termist
+short-winded
+short-witted
+shortage
+shortages
+shortbread
+shortcake
+shortchange
+shortcoming
+shortcomings
+shortcut
+shortcuts
+shorted
+shorten
+shortened
+shortening
+shortens
+shorter
+shortest
+shortfall
+shorthand
+shorthanded
+shorthorn
+shortie
+shorting
+shortish
+shortly
+shortness
+shorts
+shortsighted
+shortsightedly
+shortsightedness
+shortstop
+shortwave
+shorty
+Shoshone
+Shoshoni
+shot
+shot-putter
+shot-putting
+shotgun
+shotguns
+shots
+shotten
+should
+shoulder
+shoulder-blade
+shoulder-bone
+shoulder-chapper
+shoulder-head
+shoulder-note
+shouldered
+shouldering
+shoulders
+shouldn't
+Shoulet
+shout
+shouted
+shouter
+shouters
+shouting
+shouts
+shove
+shoved
+shovel
+shoveled
+shovelful
+shovels
+shoves
+shoving
+show
+show-case
+show-forth
+show-off
+show-room
+show-stopper
+show-through
+show-window
+showbiz
+showboat
+showcase
+showdown
+showed
+shower
+shower-bath
+showered
+showering
+showers
+showery
+showgirl
+showily
+showiness
+showing
+showings
+showman
+showmanship
+shown
+showoff
+showpiece
+showplace
+showroom
+shows
+showy
+shrank
+shrapnel
+shred
+shredder
+shredding
+shreds
+Shreveport
+shrew
+shrew-mouse
+shrewd
+shrewdest
+shrewdly
+shrewdness
+shrewish
+shrews
+shriek
+shrieked
+shrieking
+shrieks
+shrieval
+shrievalty
+shrift
+shrike
+shrill
+shrilled
+shrilling
+shrillness
+shrilly
+shrimp
+shrine
+shrines
+shrink
+shrink-back
+shrink-resistant
+shrink-wrap
+shrink-wrapped
+shrinkable
+shrinkage
+shrinking
+shrinks
+shrive
+shrivel
+shriveled
+shriven
+shroud
+shrouded
+shrove
+shroving
+shrub
+shrubbery
+shrubby
+shrubs
+shrug
+shrugs
+shrunk
+shrunken
+shtick
+Shu
+shuck
+shucks
+shudder
+shuddered
+shuddering
+shudders
+shuffle
+shuffleboard
+shuffled
+shuffler
+shuffles
+shuffling
+Shulman
+shun
+shunless
+shuns
+shunt
+shunter
+shush
+shut
+shut-eye
+shut-in
+shutdown
+shutdowns
+shuteye
+shutoff
+shutout
+shuts
+shutter
+shutterbug
+shuttered
+shutters
+shutting
+shuttle
+shuttle-cock
+shuttlecock
+shuttled
+shuttles
+shuttling
+shy
+Shylock
+Shylockian
+shyly
+shyness
+shyster
+Si
+Siam
+Siamese
+Sian
+Siberia
+Siberian
+sibilant
+Sibley
+sibling
+siblings
+sibyl
+sibylline
+sic
+siccative
+sice
+Sicilian
+Siciliana
+Sicilians
+Sicily
+sick
+sick-bed
+sick-fund
+sick-leave
+sickbed
+sicken
+sickener
+sickening
+sickeningly
+sicker
+sickest
+sickie
+sickish
+sickle
+sickle-shaped
+sickly
+sickness
+sicknesses
+sicknurse
+sicko
+sickout
+sickroom
+side
+side-box
+side-bracket
+side-by-side
+side-car
+side-dish
+side-face
+side-glance
+side-heading
+side-saddle
+side-split
+side-splitter
+side-table
+side-walk
+side-ways
+side-whiskers
+sidearm
+sideband
+sidebar
+sideboard
+sideboards
+sideburns
+sidecar
+sided
+sidekick
+sidelight
+sidelights
+sideline
+sidelines
+sidelong
+sideman
+sidepiece
+sidereal
+sides
+sidesaddle
+sideshow
+sidesplitting
+sidestep
+sidestroke
+sideswipe
+sidetrack
+sideview
+sidewalk
+sidewalks
+sidewall
+sideways
+sidewinder
+sidewise
+siding
+sidings
+sidle
+Sidney
+SIDS
+siege
+Siegel
+sieges
+Siegfried
+Sieglinda
+Siegmund
+Siemens
+Siena
+sienna
+sierra
+siesta
+sieve
+sieves
+Sifford
+sift
+sifted
+sifter
+sifting
+SIGGRAPH
+sigh
+sighed
+sighing
+sighs
+sight
+sight-hole
+sight-read
+sight-reader
+sight-see
+sight-seeing
+sighted
+sightfulness
+sighting
+sightings
+sightless
+sightly
+sightread
+sights
+sightseeing
+sightseer
+sigla
+siglum
+sigma
+Sigmund
+sign
+sign-off
+sign-post
+signal
+signaled
+signaler
+signaling
+signalization
+signalize
+signalled
+signaller
+signalling
+signally
+signalman
+signals
+signary
+signatory
+signature
+signatures
+signboard
+signed
+signer
+signers
+signet
+significance
+significancy
+significant
+significantly
+significants
+signification
+significative
+signified
+signifies
+signify
+signifying
+signing
+signor
+signora
+signore
+signori
+signorina
+signorine
+signpost
+signs
+Sikh
+Sikhes
+Sikhism
+Sikhs
+Sikkim
+Sikkimese
+Sikorsky
+silage
+Silas
+silence
+silenced
+silencer
+silencers
+silences
+silencing
+silent
+silently
+Silesia
+silex
+silhouette
+silhouetted
+silhouettes
+silica
+silicate
+siliceous
+silicious
+silicon
+silicone
+silicosis
+silk
+silk-husk
+silk-screen
+silk-worm
+silken
+silkier
+silkiest
+silkily
+Silkine
+silkiness
+silks
+silkscreen
+silkworm
+silky
+sill
+silliest
+silliness
+sills
+silly
+silo
+silt
+silted
+silting
+silts
+silty
+Silurian
+silvan
+silver
+silver-beater
+silver-mine
+silver-plated
+silver-smith
+silver-tongued
+silver-weed
+silvered
+silverfish
+silvering
+Silverman
+silvers
+silversmith
+Silverstein
+silverware
+silvery
+SIM
+simian
+similar
+similarities
+similarity
+similarly
+simile
+similitude
+Simla
+simmer
+simmered
+simmering
+simmers
+Simmons
+Simmonsville
+Simms
+Simon
+simon-pure
+simonize
+Simons
+Simonson
+simony
+simpatico
+simper
+simple
+simple-hearted
+simple-minded
+simple-mindedness
+simpleminded
+simpleness
+simpler
+simplest
+simpleton
+simplex
+simplicities
+simplicity
+simplification
+simplifications
+simplified
+simplifier
+simplifiers
+simplifies
+simplify
+simplifying
+simplistic
+simplistically
+simply
+Simpson
+Sims
+simulate
+simulated
+simulates
+simulating
+simulation
+simulations
+simulator
+simulators
+simulcast
+simultaneity
+simultaneous
+simultaneously
+sin
+Sinai
+sinapism
+Sinatra
+Sinbad
+since
+sincere
+sincerely
+sincerest
+sincerity
+sinciput
+Sinclair
+sine
+sinecure
+sines
+sinew
+sinews
+sinewy
+sinful
+sinfully
+sinfulness
+sing
+sing-along
+singable
+Singapore
+Singaporean
+Singborg
+singe
+singed
+singer
+singer-songwriter
+singers
+singing
+singing-bird
+singing-master
+singing-mistress
+singingly
+single
+single-bedded
+single-breasted
+single-chamber
+single-chip
+single-coloured
+single-engined
+single-handed
+single-handedly
+single-hearted
+single-journey
+single-minded
+single-mindedly
+single-mindedness
+single-sided
+singled
+singlehanded
+singleness
+singles
+singlet
+singleton
+singletons
+singletree
+singling
+singly
+sings
+singsong
+singular
+singularities
+singularity
+singularly
+Sinhalese
+sinister
+sinister-handed
+sink
+sinkable
+sinked
+sinker
+sinkers
+sinkhole
+sinking
+sinks
+sinless
+sinned
+sinner
+sinners
+sinning
+Sino-
+sinology
+sins
+sinter
+sinuate
+sinuation
+sinuosity
+sinuous
+sinus
+sinusitis
+sinusoid
+sinusoidal
+sinusoids
+Sioux
+sip
+siphon
+siphoning
+sipper
+sipping
+sips
+sir
+sir!
+sire
+sired
+siren
+sirens
+sires
+Sirius
+sirloin
+sirocco
+sirs
+sirup
+sis
+sisal
+siskin
+sissified
+sissy
+sister
+sister-in-law
+sister-in-aw
+sisterhood
+sisterliness
+sisterly
+sisters
+sisters-in-law
+Sistine
+Sisyphean
+Sisyphus
+sit
+sit-down
+sit-in
+sit-up
+sitar
+sitarist
+sitcom
+site
+sited
+sites
+siting
+siting-room
+sits
+sitter
+sitters
+sitting
+sitting-room
+sittings
+situ
+situate
+situated
+situates
+situating
+situation
+situational
+situationally
+situations
+situp
+Siva
+six
+six-gun
+six-pack
+six-shooter
+sixes
+sixfold
+sixfooter
+sixgun
+sixpence
+sixpenny
+sixshooter
+sixteen
+sixteenmo
+sixteens
+sixteenth
+sixth
+sixties
+sixtieth
+sixty
+sizable
+sizar
+size
+sizeable
+sized
+sizes
+sizing
+sizings
+sizy
+sizzle
+sizzler
+sizzling
+SJ
+SK
+ska
+skain
+skate
+skateboard
+skateboarder
+skateboarding
+skated
+skater
+skaters
+skates
+skating
+skating-ring
+skean
+skedaddle
+skeet
+skein
+skeletal
+skeleton
+skeleton-key
+skeletons
+skelp
+skelter
+skene
+skep
+skeptic
+skeptical
+skeptically
+skepticism
+skeptics
+sketch
+sketch-book
+sketch-map
+sketchbook
+sketched
+sketcher
+sketches
+sketchily
+sketchiness
+sketching
+sketchpad
+sketchy
+skew
+skewbald
+skewed
+skewer
+skewers
+skewing
+skews
+ski
+ski(ing)
+ski-tow
+skibby
+skid
+skidadle
+skidding
+skids
+skied
+skier
+skies
+skiff
+skiing
+skilful
+skill
+skilled
+skillet
+skillful
+skillfull
+skillfully
+skillfulness
+skills
+skim
+skimmed
+skimmer
+skimming
+skimp
+skimped
+skimpily
+skimpiness
+skimping
+skimps
+skimpy
+skims
+skin
+skin-deep
+skin-dive
+skin-diver
+skin-diving
+skin-tight
+skincare
+skindive
+skinflick
+skinflint
+skinful
+skinhead
+skinless
+skinned
+skinner
+skinners
+skinniness
+skinning
+skinny
+skinny-dip
+skinny-dipper
+skinny-dipping
+skins
+skintight
+skip
+skip-frog
+skip-kennel
+skipped
+skipper
+skippers
+skipping
+skipping-rope
+Skippy
+skips
+skirl
+skirmish
+skirmished
+skirmisher
+skirmishers
+skirmishes
+skirmishing
+skirt
+skirted
+skirting
+skirts
+skis
+skit
+skitter
+skittish
+skittishly
+skittishness
+skittle
+skittle-alley
+skittleground
+skittles!
+skive
+skiver
+skivvies
+skivvy
+skoal
+skookum-house
+Skopje
+skulduggery
+skulk
+skulked
+skulker
+skulking
+skulks
+skull
+skull-cap
+skullcap
+skullduggery
+skulls
+skunk
+skunks
+sky
+sky-blue
+sky-high
+sky-light
+sky-rocket
+skycap
+skycoloured
+skydiver
+skydiving
+Skye
+skyey
+skyhook
+skyish
+skyjack
+skyjacker
+skyjacking
+skylark
+skylarking
+skylarks
+skylight
+skylights
+skyline
+skyrocket
+skyrockets
+skyscraper
+skyscrapers
+skyward
+skywards
+skywriter
+skywriting
+sl
+slab
+slabber
+slabbing
+slabby
+slack
+slacken
+slacker
+slacking
+slackly
+slackness
+slacks
+slade
+slag
+slagging
+slain
+slake
+slalom
+slam
+slam-bang
+slam-dunk
+slammed
+slammer
+slamming
+slams
+slander
+slanderer
+slanderous
+slanders
+slang
+slangy
+slank
+slant
+slanted
+slanting
+slantingly
+slants
+slantwise
+slap
+slap-dash
+slap-happy
+slapdash
+slaphappy
+slapped
+slapping
+slaps
+slapstick
+slash
+slash-and-burn
+slashed
+slasher
+slashes
+slashing
+slat
+slate
+slate-board
+slate-pencil
+slate-quarry
+slated
+slater
+slates
+slather
+slathers
+slats
+slatter
+slattern
+slatternly
+slaty
+slaughter
+slaughter-house
+slaughtered
+slaughterer
+slaughterhouse
+slaughtering
+slaughters
+Slav
+slave
+slave-driver
+slave-holder
+slave-ship
+slave-trade
+slaveholder
+slavelike
+slaver
+slavery
+slaves
+slavey
+Slavic
+Slavicize
+Slavicizes
+slavish
+slavishly
+slavishness
+Slavization
+Slavizations
+Slavize
+Slavizes
+Slavonia
+Slavonian
+Slavonic
+Slavonicize
+Slavonicizes
+Slavs
+slaw
+slay
+slayer
+slayers
+slaying
+slays
+sleave
+sleaze
+sleazily
+sleaziness
+sleazy
+sled
+sledder
+sledding
+sledge
+sledge-hammer
+sledgehammer
+sledges
+sledging
+sleds
+sleek
+sleekly
+sleekness
+sleep
+sleep!
+sleeper
+sleepers
+sleepfull
+sleepily
+sleepiness
+sleeping
+sleeping-bag
+sleeping-car
+sleeping-carriage
+sleeping-draught
+sleeping-powder
+sleeping-room
+sleeping-sickness
+sleepless
+sleeplessly
+sleeplessness
+sleepover
+sleeps
+sleepwalk
+sleepwalker
+sleepwalking
+sleepwear
+sleepy
+sleepyhead
+sleet
+sleety
+sleeve
+sleeve-coupling
+sleeved
+sleeveless
+sleeves
+sleigh
+sleighs
+sleight
+slender
+slenderer
+slenderize
+slenderness
+slept
+Slesinger
+Sleswick
+sleuth
+sleuth-hound
+slew
+slewing
+slice
+sliced
+slicer
+slicers
+slices
+slicing
+slick
+slicker
+slickers
+slickly
+slickness
+slicks
+slid
+slide
+sliden
+slider
+sliders
+slides
+sliding
+sliding-knot
+sliding-place
+slier
+sliest
+slight
+slighted
+slighter
+slightest
+slighting
+slightly
+slightness
+slights
+slily
+slim
+slime
+slimed
+sliminess
+slimly
+slimming
+slimness
+slimy
+sliness
+sling
+sling-shot
+slinger
+slinging
+slings
+slingshot
+slink
+slinky
+slip
+slip-board
+slip-galley
+slip-on
+slip-ring
+slip-shod
+slip-shoe
+slip-slop
+slip-string
+slip-up
+slipcase
+slipcover
+slipknot
+slippage
+slipped
+slipper
+slipperiness
+slippers
+slippery
+slipping
+slippy
+slips
+slipshod
+slipstream
+slipway
+slit
+slither
+slithery
+slits
+sliver
+slivovitz
+Sloan
+Sloane
+slob
+slobber
+slobbery
+slocken
+Slocum
+sloe
+sloe-eyed
+slog
+slogan
+slogans
+sloop
+slop
+slop-basin
+slop-pail
+slop-shop
+slope
+sloped
+sloper
+slopers
+slopes
+sloping
+slopped
+sloppily
+sloppiness
+slopping
+sloppy
+slops
+slosh
+sloshed
+slot
+slot-machine
+sloth
+slothful
+slothfully
+slothfulness
+sloths
+slots
+slotted
+slotting
+slouch
+slouched
+sloucher
+slouches
+slouching
+slouchy
+slough
+sloughy
+Slovak
+Slovakia
+Slovakian
+sloven
+Slovene
+Slovenia
+Slovenian
+slovenliness
+slovenly
+slow
+slow-couch
+slow-down
+slow-gaited
+slow-motion
+slow-paced
+slow-pacing
+slow-witted
+slow-worm
+slowdown
+slowed
+slower
+slowest
+slowgoach
+slowing
+slowly
+slowness
+slowpoke
+slows
+SLR
+slub
+sludge
+sludgy
+slue
+slug
+sluggard
+slugger
+sluggish
+sluggishly
+sluggishness
+slugs
+sluice
+slum
+slumber
+slumbered
+slumberous
+slumbrous
+slumlord
+slumming
+slummy
+slump
+slumped
+slumps
+slums
+slung
+slunk
+slur
+slurp
+slurring
+slurry
+slurs
+slush
+slushiness
+slushy
+slut
+sluttish
+slutty
+sly
+slyboots
+slyly
+slyness
+Sm
+smack
+smacked
+smacker
+smacking
+smacks
+small
+small-arms
+small-clothes
+small-minded
+small-mindedness
+small-pox
+small-scale
+small-time
+small-timer
+smallage
+smaller
+smallest
+Smalley
+smallish
+smallness
+smallpox
+smalltime
+Smallwood
+smalt
+smart
+smart-aleck
+smart-alecky
+smarted
+smarten
+smarter
+smartest
+smartly
+smartness
+smarts
+smarty
+smartypants
+smash
+smash-up
+smashed
+smasher
+smashers
+smashes
+smashing
+smashingly
+smashup
+smatter
+smattering
+smear
+smeared
+smearing
+smears
+smeary
+smell
+smelled
+smeller
+smelliness
+smelling
+smellless
+smells
+smelly
+smelt
+smelter
+smeltery
+smelting
+smelting-furnace
+smelting-house
+smelts
+Smetana
+smew
+smidgen
+smidgeon
+smidgin
+smilax
+smile
+smiled
+smiles
+smiley
+smiling
+smilingly
+smirch
+smirk
+smit
+smite
+smith
+smithereens
+smithery
+Smithfield
+smiths
+Smithson
+Smithsonian
+Smithtown
+smithy
+smitten
+smock
+smock-frock
+smocking
+smocks
+smog
+smoggy
+smokable
+smoke
+smoke-black
+smoke-box
+smoke-dried
+smoke-dry
+smoke-filled
+smoke-flue
+smoke-stack
+smoked
+smokehouse
+smokeless
+smoker
+smokers
+smokes
+smokescreen
+smokestack
+smokies
+smokiness
+smoking
+smoking-room
+smoky
+smolder
+smoldered
+smoldering
+smolders
+smooch
+smooth
+smooth-bore
+smooth-faced
+smooth-tongued
+smoothbore
+smoothed
+smoothen
+smoother
+smoothes
+smoothest
+smoothie
+smoothing
+smoothing-iron
+smoothly
+smoothness
+smorgasbord
+smote
+smother
+smothered
+smothering
+smothers
+smoulder
+Smucker
+smudge
+smudgy
+smug
+smuggle
+smuggled
+smuggler
+smugglers
+smuggles
+smuggling
+smugly
+smugness
+smut
+smuttiness
+smutty
+Smyrna
+Smythe
+Sn
+snack
+snack-bar
+snaffle
+snafu
+snag
+snaggy
+snail
+snail-clover
+snails
+snake
+snakebite
+snaked
+snakelike
+snakes
+snaky
+snap
+snapdragon
+snapped
+snapper
+snappers
+snappily
+snappiness
+snapping
+snappish
+snappishly
+snappishness
+snappy
+snaps
+snapsack
+snapshot
+snapshots
+snare
+snared
+snarer
+snares
+snaring
+snark
+snarl
+snarl-up
+snarled
+snarling
+snarlingly
+snarly
+snatch
+snatched
+snatcher
+snatches
+snatching
+snatchingly
+snatchy
+snazzily
+snazzy
+Snead
+sneak
+sneaked
+sneaker
+sneakers
+sneakier
+sneakiest
+sneakily
+sneakiness
+sneaking
+sneakingly
+sneaks
+sneaky
+Sneed
+sneer
+sneered
+sneering
+sneeringly
+sneers
+sneeze
+sneeze-wort
+sneezed
+sneezes
+sneezing
+snick
+snicker
+snickersnee
+snide
+snidely
+Snider
+sniff
+sniffed
+sniffer
+sniffing
+sniffle
+sniffles
+sniffs
+sniffy
+snifter
+snigger
+snip
+snipe
+sniper
+snippet
+snippings
+snippy
+snips
+snipsnap
+snit
+snitch
+snivel
+sniveler
+sniveller
+snob
+snobbery
+snobbish
+snobbishly
+snobbishness
+snobby
+Snodgrass
+snollygoster
+snood
+snooker
+snoop
+snooped
+snooper
+snooping
+snoops
+snoopy
+snoot
+snootily
+snootiness
+snooty
+snooze
+snoozer
+snore
+snored
+snorer
+snores
+snoring
+snorkel
+snorkeler
+snorkeling
+snort
+snorted
+snorter
+snorting
+snorts
+snot
+snot-nosed
+snot-rag
+snottily
+snottiness
+snotty
+snotty-nosed
+snout
+snouts
+snow
+snow-ball
+snow-bank
+snow-blind
+snow-bound
+snow-drift
+snow-drop
+snow-slide
+snow-slip
+snow-track
+snow-white
+snowball
+snowbank
+Snowbelt
+snowbird
+snowboard
+snowboarder
+snowboarding
+snowbound
+snowdrift
+snowdrop
+snowed
+snowfall
+snowfield
+snowflake
+snowier
+snowiest
+snowily
+snowiness
+snowing
+snowman
+snowmen
+snowmobile
+snowplough
+snowplow
+snows
+snowshoe
+snowshoes
+snowstorm
+snowsuit
+snowy
+snub
+snub-nosed
+snuck
+snuff
+snuff-box
+snuff-taker
+snuffbox
+snuffed
+snuffer
+snuffing
+snuffle
+snuffly
+snuffs
+snuffy
+snug
+snuggle
+snuggled
+snuggles
+snuggling
+snugly
+snugness
+Snyder
+so
+so-and-so
+so-called
+so-so
+so.
+soak
+soaked
+soaker
+soaking
+soaks
+soap
+soap-boiler
+soap-bubble
+soap-house
+soap-stone
+soap-suds
+soap-weed
+soap-works
+soap-wort
+soapbox
+soaped
+soaper
+soapiness
+soaping
+soaps
+soapstone
+soapsuds
+soapy
+soar
+soared
+soaring
+soars
+sob
+sob-stuff
+sobbing
+sobbingly
+sober
+sober-sides
+sobered
+sobering
+soberly
+soberness
+sobers
+sobriety
+sobriquet
+sobs
+soccer
+sociability
+sociable
+sociably
+social
+social-chauvinism
+socialism
+socialist
+socialist-biased
+socialist-bound
+socialistic
+socialists
+socialite
+socialization
+socialize
+socialized
+socializes
+socializing
+socially
+societal
+societies
+society
+socioeconomic
+socioinformatics
+sociologic
+sociological
+sociologically
+sociologist
+sociologists
+sociology
+sociopath
+sock
+socked
+socker
+socket
+sockets
+socking
+socks
+socle
+Socrates
+Socratic
+sod
+soda
+sodality
+sodden
+soddenly
+Soddy
+sodium
+sodomite
+sodomize
+sodomy
+sods
+soever
+sofa
+sofabed
+sofas
+soffit
+Sofia
+soft
+soft-boiled
+soft-brained
+soft-core
+soft-hearted
+soft-pedal
+soft-soap
+soft-spoken
+softball
+softbound
+soften
+softened
+softener
+softening
+softens
+softer
+softest
+softhearted
+softie
+softish
+softling
+softly
+softness
+software
+softwares
+softwood
+softy
+soggily
+sogginess
+soggy
+soho!
+soigne
+soignee
+soil
+soiled
+soiling
+soils
+soiree
+sojourn
+sojourner
+sojourners
+solace
+solaced
+solander
+solar
+solaria
+solarium
+sold
+sold-out
+solder
+soldered
+solderer
+soldering
+soldier
+soldiering
+soldierlike
+soldierly
+soldiers
+soldiery
+sole
+solecism
+solely
+solemn
+solemness
+solemnify
+solemnity
+solemnization
+solemnize
+solemnly
+solemnness
+solenoid
+soles
+solicit
+solicitation
+solicited
+soliciting
+solicitor
+solicitous
+solicitously
+solicitousness
+solicits
+solicitude
+solid
+solid-state
+solidarity
+solidi
+solidification
+solidified
+solidifies
+solidify
+solidifying
+solidity
+solidly
+solidness
+solids
+solidus
+soliloquize
+soliloquy
+solipsism
+solitaire
+solitary
+solitude
+Solly
+solo
+soloist
+Solomon
+Solon
+solos
+Soloviev
+solstice
+solstitial
+solubility
+soluble
+solute
+solution
+solvability
+solvable
+solve
+solved
+solvency
+solvent
+solvents
+solver
+solvers
+solves
+solving
+Somali
+Somalia
+Somalian
+Somalis
+somatic
+somber
+somberly
+somberness
+sombre
+sombrero
+some
+somebody
+someday
+somehow
+someone
+someplace
+Somers
+somersault
+somerset
+Somerville
+something
+sometime
+sometimes
+someway
+someways
+somewhat
+somewhere
+sommelier
+Sommerfeld
+somnambulism
+somnambulist
+somniferous
+somnolence
+somnolent
+son
+son!
+son-in-law
+sonant
+sonar
+sonata
+sonatina
+Sonenberg
+song
+song-bird
+song-book
+songbird
+songbook
+songfest
+songs
+songster
+songstress
+songwriter
+sonic
+sonnet
+sonnets
+sonny
+Sonoma
+Sonora
+sonority
+sonorous
+sonorously
+sonorousness
+sons
+sons-in-law
+Sony
+soon
+sooner
+soonest
+soot
+sooth
+soothe
+soothed
+soother
+soothes
+soothing
+soothingly
+soothsay
+soothsayer
+soothsaying
+sootiness
+sooty
+sop
+Sophia
+Sophias
+Sophie
+sophism
+sophist
+sophistic
+sophistical
+sophisticate
+sophisticated
+sophistication
+sophistry
+Sophoclean
+Sophocles
+sophomore
+sophomores
+sophomoric
+soporific
+soporifically
+sopping
+soppy
+soprano
+sorbet
+sorcerer
+sorcerers
+sorceress
+sorcery
+sordid
+sordidly
+sordidness
+sore
+sorehead
+sorely
+soreness
+Sorensen
+Sorenson
+sorer
+sores
+sorest
+sorghum
+sorority
+sorrel
+sorrel-topped
+Sorrentine
+sorrier
+sorriest
+sorrily
+sorriness
+sorrow
+sorrowful
+sorrowfully
+sorrowfulness
+sorrows
+sorry
+sort
+sorted
+sorter
+sorters
+sortie
+sortilege
+sorting
+sortition
+sortment
+sorts
+SOS
+sot
+sottish
+sou
+sou'wester
+soubriquet
+Soudanese
+souffle
+sough
+sought
+sought-after
+soul
+soul-destroying
+soul-searching
+soul-vexed
+soulful
+soulfully
+soulfulness
+soulless
+soullessly
+souls
+sound
+sound-broadcasting
+sound-film
+soundboard
+sounded
+sounder
+soundest
+sounding
+sounding-board
+sounding-lead
+soundings
+soundless
+soundlessly
+soundly
+soundness
+soundproof
+soundproofing
+sounds
+soundtrack
+soup
+soup-plate
+soupcon
+souped
+souped-up
+soups
+soupy
+sour
+sour-ball
+sour-faced
+source
+sources
+sourcrout
+sourdough
+soured
+sourer
+sourest
+souring
+sourish
+sourly
+sourness
+sourpuss
+sours
+Sousa
+sousaphone
+souse
+soused
+soutane
+south
+south-west
+south-wester
+Southampton
+southbound
+Southeast
+southeaster
+southeasterly
+southeastern
+southeastward
+southeastwards
+southerly
+southern
+southerner
+southerners
+southernmost
+southernwood
+Southey
+Southfield
+southing
+southland
+southmost
+southpaw
+southward
+southwards
+southwest
+southwester
+southwesterly
+southwestern
+southwestward
+southwestwards
+souvenir
+sovereign
+sovereigns
+sovereignty
+Soviet
+soviets
+sow
+sow-baby
+sow-bread
+sow-thistle
+sower
+Soweto
+sown
+sows
+sox
+soy
+soya
+soybean
+Sp
+spa
+space
+space-age
+space-bar
+space-time
+spacecraft
+spaced
+spaced-out
+spaceflight
+spaceman
+spaceport
+spacer
+spacers
+spaces
+spaceship
+spaceships
+spacesuit
+spacewalk
+Spacewar
+spacewoman
+spacey
+spaciness
+spacing
+spacings
+spacious
+spaciously
+spaciousness
+spacy
+spade
+spaded
+spadeful
+spades
+spadework
+spadices
+spading
+spadix
+Spafford
+spaghetti
+Spahn
+Spain
+spake
+Spalding
+spall
+spam
+spamming
+span
+spandex
+spandrel
+spangle
+spangled
+Spanglish
+Spaniard
+Spaniardization
+Spaniardizations
+Spaniardize
+Spaniardizes
+Spaniards
+spaniel
+Spanish
+Spanish-American
+Spanishize
+Spanishizes
+spank
+spanked
+spanker
+spanking
+spanks
+spanned
+spanner
+spanners
+spanning
+spans
+spar
+SPARC
+SPARCstation
+spare
+spared
+sparely
+spareness
+sparer
+spareribs
+spares
+sparest
+sparing
+sparingly
+spark
+spark-coil
+spark-ignition
+spark-plug
+sparked
+sparkful
+sparking
+sparking-plug
+sparkish
+sparkle
+sparkler
+sparklet
+sparkling
+Sparkman
+sparks
+sparky
+sparring
+sparrow
+sparrow-bill
+sparrow-hawk
+sparrows
+sparse
+sparsely
+sparseness
+sparser
+sparsest
+sparsity
+Sparta
+Spartacus
+Spartanize
+Spartanizes
+spasm
+spasmodic
+spasmodically
+spastic
+spat
+spate
+spates
+spathe
+spatial
+spatially
+spatter
+spatterdash
+spattered
+spatula
+spatulae
+spatulas
+Spaulding
+spavin
+spavined
+spawn
+spawned
+spawner
+spawning
+spawns
+spay
+spayed
+SPCA
+speak
+speak-easy
+speakable
+speakeasy
+speaker
+Speakerphone
+Speakerphones
+speakers
+speakies
+speaking
+speaking-trumpet
+speaking-tube
+speaks
+spear
+speared
+spearfish
+spearhead
+spearmint
+spears
+spec
+special
+specialist
+specialists
+speciality
+specialization
+specializations
+specialize
+specialized
+specializes
+specializing
+specially
+specials
+specialties
+specialty
+specie
+species
+specifiable
+specific
+specifically
+specification
+specifications
+specificity
+specifics
+specified
+specifier
+specifiers
+specifies
+specify
+specifying
+specimen
+specimens
+specious
+speciously
+speciousness
+speck
+specked
+speckle
+speckled
+speckles
+speckling
+specks
+specs
+spectacle
+spectacle-case
+spectacle-snake
+spectacled
+spectacles
+spectacular
+spectacularly
+spectator
+spectators
+specter
+specters
+Spector
+spectra
+spectral
+spectre
+spectrogram
+spectrograms
+spectrograph
+spectrographic
+spectrography
+spectrometer
+spectrophotometer
+spectrophotometry
+spectroscope
+spectroscopic
+spectroscopy
+spectrum
+speculate
+speculated
+speculates
+speculating
+speculation
+speculations
+speculative
+speculatively
+speculator
+speculators
+speculum
+sped
+speech
+speech-fier
+speeches
+speechless
+speechlessly
+speechlessness
+speed
+speed-change
+speed-lever
+speedball
+speedboat
+speeded
+speeder
+speeders
+speedily
+speediness
+speeding
+speedometer
+speeds
+speedster
+speedup
+speedups
+speedway
+speedwell
+speedy
+speleologist
+speleology
+spell
+spell-bound
+spell-check
+spellbind
+spellbinder
+spellbinding
+spellbound
+spelldown
+spelled
+speller
+spellers
+spelling
+spelling-book
+spellings
+spells
+spelt
+spelter
+spelunker
+spelunking
+spence
+spencer
+Spencerian
+spend
+spendable
+spender
+spenders
+spending
+spends
+spendthrift
+Spenglerian
+spent
+sperm
+spermaceti
+spermatic
+spermatozoa
+spermatozoon
+spermicidal
+spermicide
+Sperry
+spew
+spewer
+SPF
+sphagnum
+sphere
+spheres
+spheric
+spherical
+spherically
+spheroid
+spheroidal
+spherule
+sphincter
+sphinges
+sphinx
+spic-and-span
+Spica
+spice
+spice-wort
+spiced
+spicery
+spices
+spicily
+spiciness
+spick-and-span
+spicule
+spicy
+spider
+spider-web
+spider-work
+spiders
+spiderweb
+spidery
+spied
+Spiegel
+spiel
+spies
+spifflicated
+spiffy
+spigot
+spike
+spiked
+spikelet
+spikes
+spiket
+spikiness
+spiky
+spile
+spill
+spillage
+spilled
+spiller
+spilling
+spills
+spillway
+spilt
+spin
+spin-off
+spinach
+spinage
+spinal
+spinally
+spindle
+spindle-shanks
+spindled
+spindling
+spindly
+spine
+spine-chilling
+spinel
+spineless
+spinelessly
+spinet
+spiniferous
+spinnaker
+spinner
+spinneret
+spinners
+spinnery
+spinney
+spinning
+spinning-factory
+spinning-frame
+spinning-mill
+spinning-wheel
+spinny
+spinoff
+spinose
+spinosity
+spinous
+Spinoza
+spins
+spinster
+spinsterhood
+spinsterish
+spiny
+spiracle
+spiraea
+spiral
+spiral-staircase
+spiraled
+spiraling
+spirally
+spirant
+spire
+spirea
+spires
+spirit
+spirit-level
+spirit-rapping
+spirited
+spiritedly
+spiriting
+spiritism
+spiritless
+spiritous
+spirits
+spiritual
+spiritualism
+spiritualist
+spiritualistic
+spirituality
+spiritually
+spirituals
+spirituous
+Spiro
+spirochete
+spirt
+spiry
+spit
+spit-fire
+spit-pin
+spitball
+spite
+spited
+spiteful
+spitefully
+spitefulness
+spites
+spitfire
+spiting
+spits
+spitten
+spitting
+spitting-box
+spittle
+spittoon
+Spitz
+spiv
+splash
+splash-board
+splashdown
+splashed
+splashes
+splashily
+splashiness
+splashing
+splashy
+splat
+splatter
+splay
+splayfeet
+splayfoot
+splayfooted
+spleen
+spleeny
+splendent
+splendid
+splendidly
+splendor
+splendorous
+splendour
+splenetic
+splenic
+splice
+spliced
+splicer
+splicers
+splices
+splicing
+splicings
+spline
+splines
+splint
+splinter
+splinter-bar
+splintered
+splinters
+splintery
+split
+split-level
+splits
+splitter
+splitters
+splitting
+splodge
+splotch
+splotchy
+splurge
+splutter
+spoil
+spoilage
+spoiled
+spoiler
+spoilers
+spoiling
+spoils
+spoilsport
+spoilt
+Spokane
+spoke
+spoked
+spoken
+spokes
+spokesman
+spokesmen
+spokespeople
+spokesperson
+spokeswoman
+spoliate
+spoliation
+sponge
+sponge-cake
+spongecake
+sponged
+sponger
+spongers
+sponges
+sponginess
+sponging
+spongy
+sponsion
+sponson
+sponsor
+sponsored
+sponsoring
+sponsors
+sponsorship
+spontaneity
+spontaneous
+spontaneously
+spoof
+spook
+spookiness
+spooky
+spool
+spooled
+spooler
+spoolers
+spooling
+spools
+spoon
+spoon-fed
+spoon-feed
+spoonbill
+spooned
+spoonerism
+spoonful
+spooning
+spoons
+spoony
+spoor
+sporadic
+sporadically
+spore
+spores
+sport
+sported
+sportful
+sportiness
+sporting
+sportingly
+sportive
+sportively
+sports
+sportscast
+sportscaster
+sportsman
+sportsmanlike
+sportsmanship
+sportsmen
+sportswear
+sportswoman
+sportswriter
+sportswriting
+sporty
+Sposato
+spot
+spot-check
+spot-welder
+spotless
+spotlessly
+spotlessness
+spotlight
+spotlights
+spotlit
+spots
+spotted
+spotter
+spotters
+spottily
+spottiness
+spotting
+spotty
+spousal
+spouse
+spouses
+spout
+spouted
+spouting
+spouts
+Sprague
+sprain
+sprang
+sprat
+sprawl
+sprawled
+sprawling
+sprawls
+spray
+sprayed
+sprayer
+spraying
+sprays
+spread
+spread-eagle
+spreadable
+spreader
+spreaders
+spreading
+spreadings
+spreads
+spreadsheet
+spree
+sprees
+sprig
+sprightliness
+sprightly
+spring
+spring-balance
+spring-board
+spring-box
+spring-clean
+spring-dividers
+spring-funnel
+spring-hammer
+springboard
+springbok
+springe
+springer
+springers
+Springfield
+springier
+springiest
+springily
+springiness
+springing
+springle
+springlike
+springs
+springtime
+springy
+sprinkle
+sprinkled
+sprinkler
+sprinkles
+sprinkling
+sprint
+sprinted
+sprinter
+sprinters
+sprinting
+sprints
+sprit
+sprite
+spritz
+spritzer
+sprocket
+Sproul
+sprout
+sprouted
+sprouting
+sprouts
+spruce
+spruce-fir
+spruced
+sprucely
+spruceness
+sprung
+spry
+spryly
+spryness
+spud
+Spuds
+spue
+spume
+spumone
+spumoni
+spumous
+spumy
+spun
+spunge
+spunk
+spunky
+spur
+spurge
+spurious
+spuriously
+spuriousness
+spurn
+spurned
+spurning
+spurns
+spurred
+spurs
+spurt
+spurted
+spurting
+spurts
+sputa
+sputnik
+sputter
+sputtered
+sputum
+spy
+spy-boat
+spy-glass
+spy-hole
+spyglass
+spying
+sqeamish
+squab
+squabble
+squabbled
+squabbler
+squabbles
+squabbling
+squabby
+squad
+squadron
+squadrons
+squads
+squalid
+squalidly
+squalidness
+squall
+squaller
+squalls
+squally
+squaloid
+squalor
+squamous
+squander
+squanderer
+Squanto
+square
+square-dance
+square-rigged
+square-toes
+squared
+squarehead
+squarely
+squareness
+squarer
+squares
+squarest
+Squaresville
+squaring
+squarish
+squash
+squashed
+squashing
+squashy
+squat
+squatness
+squats
+squatter
+squatting
+squaw
+squawk
+squawked
+squawker
+squawking
+squawks
+squeak
+squeaked
+squeaker
+squeakily
+squeakiness
+squeaking
+squeaks
+squeaky
+squeal
+squealed
+squealer
+squealing
+squeals
+squeamish
+squeamishly
+squeamishness
+squeegee
+squeezable
+squeeze
+squeezed
+squeezer
+squeezes
+squeezing
+squelch
+squelchy
+squib
+Squibb
+squid
+squiff
+squiffy
+squiggle
+squiggly
+squill
+squint
+squint-eyed
+squinted
+squinting
+squire
+squirelly
+squires
+squirm
+squirmed
+squirms
+squirmy
+squirrel
+squirreled
+squirreling
+squirrels
+squirt
+squirter
+squish
+squishy
+Sr
+Sri
+SRO
+SRQ
+SS
+SSA
+SSE
+ssh
+SSI
+SSS
+SST
+SSW
+st.
+stab
+stabbed
+stabber
+stabbing
+stabile
+stabilities
+stability
+stabilization
+stabilize
+stabilized
+stabilizer
+stabilizers
+stabilizes
+stabilizing
+stable
+stable-boy
+stable-bread
+stable-man
+stable-room
+stabled
+stableman
+stabler
+stables
+stabling
+stably
+stabs
+staccato
+stack
+stacked
+stacker
+stacking
+stacks
+Stacy
+stadia
+stadium
+staff
+staffed
+staffer
+staffers
+staffing
+Stafford
+Staffordshire
+staffs
+stag
+stag-beetle
+stag-horn
+stage
+stage-coach
+stage-fight
+stage-manager
+stage-struck
+stagecoach
+stagecoaches
+stagecraft
+staged
+stagehand
+stager
+stagers
+stages
+stagestruck
+stagflation
+stagger
+staggered
+staggerer
+staggering
+staggeringly
+staggers
+staghound
+staging
+stagnancy
+stagnant
+stagnantly
+stagnate
+stagnation
+stags
+stags-loyal
+stagy
+Stahl
+staid
+staidly
+staidness
+stain
+stained
+staining
+stainless
+stains
+stair
+staircase
+staircases
+stairs
+stairway
+stairways
+stairwell
+stake
+staked
+stakeholder
+stakeout
+stakes
+Stakhanovism
+Stakhanovite
+stalactical
+stalactite
+stalagmite
+stale
+stalemate
+staleness
+Staley
+Stalin
+Stalingrad
+Stalinist
+Stalins
+stalk
+stalked
+stalker
+stalking
+stall
+stall-boat
+stall-fed
+stall-reader
+stallage
+stalled
+stalling
+stallings
+stallion
+stallman
+stalls
+stalwart
+stalwartly
+stamen
+stamens
+Stamford
+stamina
+stammer
+stammered
+stammerer
+stammering
+stammeringly
+stammers
+stamp
+stamp-pad
+stamped
+stampede
+stampeded
+stampedes
+stampeding
+stamper
+stampers
+stamping
+stamps
+Stan
+stance
+stanch
+stanchest
+stanchion
+stand
+stand!
+stand(s)
+stand-alone
+stand-by
+stand-grass
+stand-in
+stand-offish
+stand-point
+stand-still
+stand-up
+standalone
+standard
+standard-bearer
+standard-gauge
+standardization
+standardize
+standardized
+standardizes
+standardizing
+standardly
+standards
+standby
+standee
+stander
+standing
+standings
+Standish
+standoff
+standoffish
+standout
+standpipe
+standpoint
+standpoints
+stands
+standstill
+standup
+Stanford
+stanhope
+stank
+Stanley
+stannary
+stannic
+Stans
+Stanton
+stanza
+stanzas
+staph
+staphylococcal
+staphylococci
+staphylococcus
+staple
+stapler
+staples
+Stapleton
+stapling
+star
+star-bright
+star-crossed
+star-gazer
+star-handle
+star-studded
+starboard
+starch
+starched
+starchily
+starchiness
+starchy
+stardom
+stardust
+stare
+stared
+starer
+stares
+starfish
+Stargate
+stargaze
+stargazer
+staring
+stark
+Starkey
+starkly
+starkness
+starless
+starlet
+starlight
+starling
+starlit
+Starr
+starred
+starring
+starry
+starry-eyed
+stars
+start
+start-up
+startbar
+started
+starter
+starters
+starting
+starting-crank
+starting-gate
+starting-post
+startle
+startled
+startles
+startling
+starts
+startup
+startups
+starvation
+starve
+starved
+starveling
+starves
+starving
+stash
+stasis
+stat
+state
+state-aided
+state-controlled
+state-of-the-art
+state-owned
+statecraft
+stated
+statehood
+stateless
+statelessness
+stateliness
+stately
+statement
+statements
+Staten
+stateroom
+states
+statesman
+statesmanlike
+statesmanship
+statesmen
+stateswoman
+statewide
+static
+statical
+statically
+statics
+stating
+station
+station-house
+station-master
+stationary
+stationed
+stationer
+stationer's
+stationery
+stationing
+stationmaster
+stations
+statism
+statist
+statistic
+statistical
+statistically
+statistician
+statisticians
+statistics
+Statler
+stator
+stats
+statuary
+statue
+statues
+statuesque
+statuesquely
+statuesqueness
+statuette
+stature
+status
+statuses
+statute
+statutes
+statutorily
+statutoriness
+statutory
+Stauffer
+staunch
+staunchest
+staunchly
+staunchness
+Staunton
+stave
+staved
+staves
+stay
+stay-down
+stay-lace
+stayed
+stayer
+staying
+stays
+STD
+stead
+steadfast
+steadfastly
+steadfastness
+steadied
+steadier
+steadies
+steadiest
+steadily
+steadiness
+steady
+steadying
+steak
+steaks
+steal
+stealer
+stealing
+stealingly
+steals
+stealth
+stealthily
+stealthiness
+stealthy
+steam
+steam-boat
+steam-boiler
+steam-cylinder
+steam-engine
+steam-gauge
+steam-generator
+steam-hammer
+steam-mill
+steam-navigation
+steam-piping
+steam-piston
+steam-press
+steam-roller
+steam-tug
+steam-valve
+steamboat
+steamboats
+steamed
+steamer
+steamers
+steamfitter
+steamfitting
+steaminess
+steaming
+steamroll
+steamroller
+steams
+steamship
+steamships
+steamy
+stearin
+Stearns
+steed
+steel
+steel-clad
+steel-foundry
+steel-girder
+steel-mill
+steel-plant
+steel-works
+steel-yard
+Steele
+steeled
+steelers
+steeliness
+steeling
+steelmaker
+steels
+steelworker
+steelworks
+steely
+steelyard
+Steen
+steep
+steeped
+steepen
+steeper
+steepest
+steeping
+steeple
+steeple-chase
+steeplechase
+steeplejack
+steeples
+steeply
+steepness
+steeps
+steer
+steerable
+steerage
+steered
+steerer
+steering
+steering-wheel
+steers
+steersman
+steeve
+Stefan
+Steinbeck
+Steinberg
+steinbock
+Steiner
+stele
+Stella
+stellar
+stem
+stem-turn
+stemless
+stemmed
+stemming
+stemple
+stems
+stemware
+stench
+stench-trap
+stenches
+stencil
+stencils
+Stendhal
+Stendler
+steno
+stenochromy
+stenograph
+stenographer
+stenographers
+stenographic
+stenographical
+stenographist
+stenography
+stenotype
+stentorian
+step
+step-
+step-after
+step-brother
+step-by-step
+step-child
+step-down
+step-father
+step-ins
+step-ladder
+step-mother
+step-son
+step-up
+stepbrother
+stepchild
+stepchildren
+stepdaughter
+stepfather
+Stephan
+Stephanie
+Stephen
+Stephens
+Stephenson
+stepladder
+stepmother
+stepmothers
+stepney
+stepparent
+steppe
+stepped
+stepped-up
+stepper
+stepping
+stepping-stone
+steppingstone
+steps
+stepsister
+stepson
+stepwise
+stercoraceous
+stere
+stereo
+stereograph
+stereometer
+stereophonic
+stereos
+stereoscope
+stereoscopic
+stereotape
+stereotype
+stereotyped
+stereotypes
+stereotypical
+sterile
+sterility
+sterilization
+sterilizations
+sterilize
+sterilized
+sterilizer
+sterilizes
+sterilizing
+sterling
+stern
+sterna
+Sternberg
+sternly
+sternmost
+sternness
+Sterno
+sterns
+sternum
+sternutation
+sternutative
+sternutatory
+steroid
+steroidal
+stertorous
+stet
+stethoscope
+Stetsons
+Steuben
+Steve
+stevedore
+Steven
+Stevens
+Stevenson
+Stevie
+stew
+stew-pan
+steward
+stewardess
+stewards
+stewardship
+Stewart
+stewbum
+stewed
+stewpot
+stews
+stibium
+stick
+stick-in-the-mud
+stick-out
+sticker
+stickers
+stickier
+stickiest
+stickily
+stickiness
+sticking
+stickle
+stickleback
+stickler
+stickpin
+sticks
+stickup
+sticky
+stiff
+stiff-arm
+stiff-hearted
+stiff-neck
+stiff-necked
+stiffen
+stiffener
+stiffening
+stiffens
+stiffer
+stiffest
+stiffly
+stiffness
+stiffs
+stifle
+stifled
+stifles
+stifling
+stiflingly
+stigma
+stigmata
+stigmatic
+stigmatise
+stigmatization
+stigmatize
+stilb
+stile
+stiles
+stiletto
+still
+still-born
+still-bottom
+still-house
+still-life
+stillbirth
+stillborn
+stilled
+stiller
+stillest
+stilling
+stillness
+stills
+stillstand
+Stillwell
+stilly
+stilt
+stilted
+Stilton
+stilts
+Stimson
+stimulant
+stimulants
+stimulate
+stimulated
+stimulates
+stimulating
+stimulation
+stimulations
+stimulative
+stimulator
+stimuli
+stimulus
+sting
+stinger
+stingily
+stinginess
+stinging
+stingray
+stings
+stingy
+stink
+stinkard
+stinkbug
+stinker
+stinkeroo
+stinkers
+stinking
+stinko
+stinks
+stinky
+stint
+stinting
+stipend
+stipendiary
+stipends
+stipple
+stippling
+stipulate
+stipulated
+stipulates
+stipulating
+stipulation
+stipulations
+stir
+stir-crazy
+stir-fry
+stire
+Stirling
+stirred
+stirrer
+stirrers
+stirring
+stirringly
+stirrings
+stirrup
+stirrup-cup
+stirrupglass
+stirs
+stirwise
+stitch
+stitch-book
+stitch-wort
+stitched
+stitchery
+stitches
+stitching
+stithy
+stoat
+stochastic
+stochastically
+stock
+stock-broker
+stock-dove
+stock-exchange
+stock-fish
+stock-holder
+stock-in-trade
+stock-jobber
+stock-still
+stock-taking
+stock-whip
+stock-yard
+stockade
+stockades
+stockbreeder
+stockbroker
+stockbroking
+stocked
+stocker
+stockers
+stockholder
+stockholders
+Stockholm
+stockily
+stockiness
+stockinet
+stockinette
+stocking
+stocking-frame
+stocking-machine
+stocking-weaver
+stockingloom
+stockings
+stockpile
+stockpot
+stockroom
+stocks
+stocktaking
+Stockton
+stocky
+stockyard
+stodge
+stodgily
+stodginess
+stodgy
+stogie
+stogy
+stoic
+stoical
+stoically
+stoichiometry
+stoicism
+stoke
+stoked
+stokehold
+stokehole
+stoker
+Stokes
+STOL
+stole
+stolen
+stoles
+stolid
+stolidity
+stolidly
+stolidness
+stolon
+stomach
+stomachache
+stomached
+stomacher
+stomaches
+stomachic
+stomaching
+stomp
+stone
+stone-blind
+stone-break
+stone-breaker
+stone-cast
+stone-cold
+stone-cutter
+stone-dead
+stone-deaf
+stone-fruit
+stone-hearted
+stone-mason
+stone-pitch
+stone-squarer
+stoneblue
+stoned
+Stonehenge
+stonemason
+stones
+stonewall
+stoneware
+stonewashed
+stonework
+stoney
+stonily
+stoniness
+stoning
+stony
+stony-faced
+stood
+stooge
+stook
+stool
+stoop
+stooped
+stooping
+stoops
+stop
+stop-cock
+stop-gap
+stop-lamp
+stop-valve
+stop-watch
+stopcock
+stopcocks
+stope
+stopgap
+stoping
+stoplight
+stopover
+stoppable
+stoppage
+stopped
+stopper
+stoppers
+stopping
+stopple
+stops
+stopwatch
+storage
+storages
+store
+store-bread
+store-keeper
+store-pond
+store-room
+stored
+storefront
+storehouse
+storehouses
+storekeeper
+storeroom
+stores
+storey
+Storeyed
+Storeys
+storied
+stories
+storing
+stork
+storks
+storm
+storm-beaten
+stormed
+stormier
+stormiest
+stormily
+storminess
+storming
+storms
+stormy
+story
+story-book
+story-teller
+storyboard
+storybook
+storyteller
+storytelling
+Stouffer
+stoup
+stout
+stout-hearted
+stouter
+stoutest
+stouthearted
+stoutly
+stoutness
+stouts
+stove
+stovepipe
+stoves
+stow
+stow-space
+stowage
+stowaway
+Stowe
+stowed
+strabismus
+straddle
+straddler
+Stradivari
+strafe
+straggle
+straggled
+straggler
+stragglers
+straggles
+straggling
+straggly
+straight
+straight-arm
+straight-faced
+straight-off
+straight-out
+straightaway
+straightedge
+straighten
+straightened
+straightener
+straightens
+straighter
+straightest
+straightforward
+straightforwardly
+straightforwardness
+straightforwards
+straightjacket
+straightly
+straightness
+straightway
+strain
+strained
+strainer
+strainers
+straining
+strains
+straint
+strait
+strait-jacket
+strait-laced
+strait-waistcoat
+straiten
+straitened
+straitjacket
+straitlaced
+straits
+strand
+stranded
+stranding
+strands
+strange
+strangely
+strangeness
+stranger
+strangers
+strangest
+strangle
+strangle-hold
+strangle-weed
+strangled
+stranglehold
+strangler
+stranglers
+strangles
+strangling
+stranglings
+strangulate
+strangulation
+strangulations
+strangury
+strap
+straphang
+straphanger
+strapless
+strapped
+strapping
+straps
+Strasbourg
+Strasburg
+strata
+stratagem
+stratagems
+strategic
+strategical
+strategically
+strategics
+strategies
+strategist
+strategy
+Stratford
+strath
+strati
+stratification
+stratifications
+stratified
+stratifies
+stratify
+stratosphere
+stratospheric
+Stratton
+stratum
+stratus
+Strauss
+Stravinsky
+straw
+straw-bed
+straw-berry
+straw-board
+straw-coloured
+straw-cutter
+straw-hat
+straw-mattress
+strawberries
+strawberry
+straws
+strawy
+stray
+strayed
+strays
+streak
+streaked
+streaker
+streaks
+streaky
+stream
+stream-feeder
+stream-line
+streamed
+streamer
+streamers
+streaming
+streamlet
+streamline
+streamlined
+streamliner
+streamlines
+streamlining
+streams
+street
+street-car
+street-smart
+street-sweeper
+street-walker
+streetcar
+streetcars
+streeters
+streetlight
+streets
+streetwalker
+streetwise
+strenghten
+strength
+strengthen
+strengthened
+strengthener
+strengthening
+strengthens
+strengths
+strenuous
+strenuously
+strenuousness
+strep
+streptococcal
+streptococci
+streptococcus
+streptomycin
+stress
+stressed
+stresses
+stressful
+stressing
+stretch
+stretch-nylon
+stretchable
+stretched
+stretcher
+stretchers
+stretches
+stretching
+stretchy
+strew
+strewn
+strews
+stria
+striae
+striated
+striation
+stricken
+Strickland
+strickle
+strict
+stricter
+strictest
+strictly
+strictness
+stricture
+stridden
+stride
+stridency
+strident
+stridently
+strider
+strides
+striding
+stridor
+stridulous
+strife
+strigil
+strike
+strike-breaker
+strike-breaking
+strikebreaker
+strikeout
+striker
+strikers
+strikes
+striking
+striking-distance
+strikingly
+Strindberg
+string
+stringed
+stringency
+stringent
+stringently
+stringer
+stringers
+stringier
+stringiest
+stringiness
+stringing
+strings
+stringy
+strip
+strip-mine
+strip-search
+stripe
+striped
+stripes
+stripling
+stripped
+stripper
+strippers
+stripping
+strips
+striptease
+stripteaser
+stripy
+strive
+striven
+strives
+striving
+strivings
+strobe
+strobed
+strobes
+stroboscope
+stroboscopic
+strode
+stroke
+stroked
+stroker
+strokers
+strokes
+stroking
+stroll
+strolled
+stroller
+strolling
+strolls
+Strom
+Stromberg
+strong
+strong-arm
+strong-minded
+strong-set
+strong-water
+strong-water-shop
+strong-willed
+strongbox
+stronger
+strongest
+Strongheart
+stronghold
+strongly
+strongman
+strontium
+strop
+strophe
+strophic
+strove
+strow
+strown
+struck
+structerm
+structural
+structurally
+structure
+structured
+structured-walk-through
+structurer
+structures
+structuring
+strudel
+struggle
+struggled
+struggles
+struggling
+strum
+strumous
+strumpet
+strung
+strung-out
+strut
+struts
+strutting
+strychnine
+Stu
+Stuart
+stub
+stubble
+stubble-field
+Stubblefield
+Stubblefields
+stubbly
+stubborn
+stubbornly
+stubbornness
+stubby
+stubs
+stucco
+stuck
+stuck-up
+stud
+stud-horse
+studbook
+studded
+studding
+Studebaker
+student
+student-assistant
+students
+studied
+studiedly
+studies
+studio
+studios
+studious
+studiously
+studiousness
+studs
+study
+studying
+stuff
+stuffed
+stuffed-up
+stuffier
+stuffiest
+stuffily
+stuffiness
+stuffing
+stuffs
+stuffy
+stultification
+stultify
+stum
+stumble
+stumblebum
+stumbled
+stumbler
+stumbles
+stumbling
+stumbling-block
+stumer
+stump
+stumped
+stumper
+stumping
+stumps
+stumpy
+stun
+stung
+stunk
+stunning
+stunningly
+stunt
+stuntman
+stunts
+stupe
+stupefaction
+stupefied
+stupefy
+stupefying
+stupendous
+stupendously
+stupid
+stupidest
+stupidities
+stupidity
+stupidly
+stupor
+Sturbridge
+sturdily
+sturdiness
+sturdy
+sturgeon
+Sturm
+stutter
+stutterer
+Stuttgart
+Stuyvesant
+sty
+stye
+Stygian
+style
+stylebook
+styled
+styler
+stylers
+styles
+styli
+styling
+stylish
+stylishly
+stylishness
+stylist
+stylistic
+stylistically
+stylistics
+stylize
+stylized
+stylus
+stymie
+stymy
+styptic
+styrene
+Styria
+Styrofoam
+Styx
+suable
+suasion
+suave
+suavely
+suaveness
+suavity
+sub
+sub-branch
+sub-continent
+sub-dean
+sub-editor
+sub-goal
+sub-librarian
+sub-professional
+sub-zero
+subacid
+subalphabet
+subaltern
+subaqueous
+subarctic
+subatomic
+subbranch
+subcategory
+subchannel
+subchannels
+subclass
+subclasses
+subclassify
+subcommittee
+subcommittees
+subcompact
+subcomponent
+subcomponents
+subcomputation
+subcomputations
+subconscious
+subconsciously
+subconsciousness
+subcontinent
+subcontinental
+subcontract
+subcontractor
+subculture
+subcultures
+subcutaneous
+subcutaneously
+subcycle
+subcycles
+subdirectories
+subdirectory
+subdivide
+subdivided
+subdivides
+subdividing
+subdivision
+subdivisions
+subdomains
+subdue
+subdued
+subdues
+subduing
+subentry
+subexpression
+subexpressions
+subfamily
+subfield
+subfields
+subfile
+subfiles
+subfreezing
+subgoal
+subgoals
+subgraph
+subgraphs
+subgroup
+subgroups
+subhead
+subheader
+subheading
+subhuman
+subinterval
+subintervals
+subjacent
+subject
+subjected
+subjecting
+subjection
+subjective
+subjectively
+subjectivity
+subjects
+subjoin
+subjugate
+subjugation
+subjunctive
+sublanguage
+sublanguages
+sublayer
+sublayers
+sublease
+sublet
+sublibrarian
+sublimate
+sublimation
+sublimations
+sublime
+sublimed
+sublimely
+subliminal
+sublimity
+sublist
+sublists
+submachine-gun
+submarginal
+submarine
+submariner
+submariners
+submarines
+submerge
+submerged
+submergence
+submerges
+submerging
+submerse
+submersible
+submersion
+submicroscopic
+submission
+submissions
+submissive
+submissively
+submissiveness
+submit
+submits
+submittal
+submitted
+submitting
+submode
+submodes
+submodule
+submodules
+submultiplexed
+subnet
+subnets
+subnetwork
+subnetworks
+subnormal
+suboptimal
+suborbital
+suborder
+subordinate
+subordinated
+subordinates
+subordination
+suborn
+subornation
+subparts
+subpena
+subphases
+subplot
+subpoena
+subproblem
+subproblems
+subprocesses
+subprofessional
+subprogram
+subprograms
+subproject
+subproof
+subproofs
+subquestion
+subqueue
+subrange
+subranges
+subroutine
+subroutines
+subs
+subschema
+subschemas
+subscribe
+subscribed
+subscriber
+subscribers
+subscribes
+subscribing
+subscript
+subscripted
+subscripting
+subscription
+subscriptions
+subscripts
+subsection
+subsections
+subsegment
+subsegments
+subsequence
+subsequences
+subsequent
+subsequently
+subseries
+subserve
+subservience
+subservient
+subserviently
+subset
+subsets
+subside
+subsided
+subsidence
+subsides
+subsidiaries
+subsidiary
+subsidies
+subsiding
+subsidization
+subsidize
+subsidized
+subsidizer
+subsidizes
+subsidizing
+subsidy
+subsist
+subsisted
+subsistence
+subsistent
+subsisting
+subsists
+subslot
+subslots
+subsoil
+subsonic
+subspace
+subspaces
+subspecies
+substance
+substances
+substandard
+substantial
+substantiality
+substantially
+substantiate
+substantiated
+substantiates
+substantiating
+substantiation
+substantiations
+substantive
+substantively
+substantivity
+substation
+substations
+substitutability
+substitutable
+substitute
+substituted
+substitutes
+substituting
+substitution
+substitutions
+substrata
+substrate
+substrates
+substratum
+substring
+substrings
+substruction
+substructure
+substructures
+subsume
+subsumed
+subsumes
+subsuming
+subsurface
+subsystem
+subsystems
+subtask
+subtasks
+subteen
+subtenancy
+subtenant
+subtend
+subterfuge
+subterranean
+subterraneous
+subtext
+subtile
+subtility
+subtilize
+subtitle
+subtitled
+subtitles
+subtle
+subtleness
+subtler
+subtlest
+subtleties
+subtlety
+subtly
+subtopic
+subtotal
+subtract
+subtracted
+subtracting
+subtraction
+subtractions
+subtractive
+subtractor
+subtractors
+subtracts
+subtrahend
+subtrahends
+subtree
+subtrees
+subtropic
+subtropical
+subtropics
+subunit
+subunits
+suburb
+suburb(s)
+suburban
+suburbanite
+suburbia
+suburbs
+subvention
+subversion
+subversive
+subversively
+subversiveness
+subvert
+subverted
+subverter
+subverting
+subverts
+subway
+subways
+subzero
+succeed
+succeeded
+succeeding
+succeeds
+success
+successes
+successful
+successfully
+succession
+successions
+successive
+successively
+successor
+successors
+succinct
+succinctly
+succinctness
+succor
+succory
+succotash
+succour
+succubus
+succulence
+succulency
+succulent
+succumb
+succumbed
+succumbing
+succumbs
+succursal
+such
+suchlike
+suck
+sucked
+sucker
+suckers
+sucking
+sucking-bag
+sucking-bottle
+sucking-pig
+sucking-pump
+suckle
+suckling
+sucks
+Sucre
+sucrose
+suction
+suction-fan
+suction-pump
+Sudan
+Sudanese
+Sudanic
+sudatory
+sudden
+suddenly
+suddenness
+sudorific
+suds
+sudsing
+sudsy
+sue
+sued
+suede
+sues
+suet
+suety
+Suez
+suffer
+sufferable
+sufferance
+suffered
+sufferer
+sufferers
+suffering
+sufferings
+suffers
+suffice
+sufficed
+suffices
+sufficiency
+sufficient
+sufficiently
+sufficing
+suffix
+suffixation
+suffixed
+suffixer
+suffixes
+suffixing
+suffocate
+suffocated
+suffocates
+suffocating
+suffocation
+Suffolk
+suffragan
+suffrage
+suffragette
+suffragist
+suffuse
+suffusion
+sugar
+sugar-basin
+sugar-beet
+sugar-box
+sugar-candy
+sugar-cane
+sugar-loaf
+sugar-nippers
+sugar-reed
+sugar-refinery
+sugar-tongs
+sugarcane
+sugarcoat
+sugared
+sugaring
+sugarings
+sugarless
+sugarplum
+sugars
+sugary
+suggest
+suggested
+suggestibility
+suggestible
+suggesting
+suggestion
+suggestions
+suggestive
+suggestively
+suggestiveness
+suggests
+suicidal
+suicidally
+suicide
+suicides
+suing
+suit
+suit-case
+suitability
+suitable
+suitableness
+suitably
+suitcase
+suitcases
+suite
+suited
+suiters
+suites
+suiting
+suitor
+suitors
+suits
+Sukarno
+sukiyaki
+Sukkot
+Sukkoth
+Sulawesi
+sulfa
+sulfate
+sulfide
+sulfur
+sulfuric
+sulfurous
+sulk
+sulked
+sulkily
+sulkiness
+sulking
+sulks
+sulky
+sullen
+sullenly
+sullenness
+Sullivan
+sully
+sulphate
+sulphide
+sulphite
+sulphur
+sulphured
+sulphureous
+sulphuric
+sulphurous
+sultan
+sultan-flower
+sultana
+sultanate
+sultans
+sultrily
+sultriness
+sultry
+Sulzberger
+sum
+sumac
+sumach
+Sumatra
+Sumatran
+Sumeria
+Sumerian
+summand
+summands
+summaries
+summarily
+summarization
+summarizations
+summarize
+summarized
+summarizes
+summarizing
+summary
+summation
+summations
+summed
+summer
+summer-house
+summer-set
+summer-solstice
+summer-time
+Summerdale
+summerhouse
+summers
+summersault
+summertime
+summery
+summing
+summit
+summitry
+summon
+summoned
+summoner
+summoners
+summoning
+summons
+summonses
+Sumner
+sumo
+sump
+sumpter
+sumptuary
+sumptuous
+sumptuously
+sumptuousness
+sums
+Sumter
+sumword
+sun
+sun-bath
+sun-beam
+sun-blind
+sun-blinkers
+sun-bright
+sun-burnt
+sun-dial
+sun-drenched
+sun-dried
+sun-flower
+sun-glasses
+sun-rise
+sun-set
+sun-spot
+sun-stroke
+sunbath
+sunbathe
+sunbather
+sunbathing
+sunbeam
+sunbeams
+Sunbelt
+sunblock
+sunbonnet
+sunburn
+sunburned
+sunburnt
+sunburst
+sundae
+Sunday
+Sundays
+sunder
+sundial
+sundown
+sundries
+sundry
+sunfish
+sunflower
+sung
+sunglass
+sunglasses
+sunk
+sunken
+sunlamp
+sunless
+sunlight
+sunlit
+sunned
+Sunni
+sunniness
+sunning
+Sunnite
+sunny
+Sunnyvale
+sunrays
+sunrise
+sunroof
+suns
+sunscreen
+sunset
+sunshade
+sunshine
+sunshiny
+sunspot
+sunstroke
+suntan
+suntanned
+suntanning
+sunup
+sunward
+sunwise
+sup
+super
+super-
+super-cargo
+super-duper
+super-monopoly
+super-profits
+superable
+superabundance
+superabundant
+superadd
+superannuate
+superannuated
+superannuation
+superb
+superblock
+superbly
+supercargo
+supercharge
+supercharger
+supercilious
+superciliously
+superciliousness
+supercity
+supercomputer
+supercomputers
+superconductivity
+superconductor
+supercooling
+superego
+superegos
+supererogation
+supererogatory
+superficial
+superficiality
+superficially
+superficies
+superfine
+superfinish
+superfinisher
+superfluities
+superfluity
+superfluous
+superfluously
+superfluousness
+supergroup
+supergroups
+superheat
+superhero
+superhighway
+superhuman
+superhumanly
+superimpose
+superimposed
+superimposes
+superimposing
+superimposition
+superinduce
+superintend
+superintendence
+superintendency
+superintendent
+superintendents
+superior
+superiority
+superiors
+superlative
+superlatively
+superlatives
+superman
+supermarket
+supermarkets
+supermart
+supermini
+superminis
+supermom
+supernal
+supernatural
+supernaturally
+supernova
+supernovae
+supernumerary
+superordination
+superphosphate
+superplan
+superpose
+superposed
+superposes
+superposing
+superposition
+superpower
+supersaturate
+supersaturation
+superscalar
+superscribe
+superscript
+superscripted
+superscripting
+superscription
+superscripts
+supersede
+superseded
+supersedes
+superseding
+superset
+supersets
+supersonic
+superstar
+superstition
+superstitions
+superstitious
+superstitiously
+superstore
+superstructure
+supertanker
+supertax
+superuser
+supervene
+supervention
+supervise
+supervised
+supervises
+supervising
+supervision
+supervisor
+supervisors
+supervisory
+superwoman
+supine
+supper
+suppers
+supplant
+supplanted
+supplanting
+supplants
+supple
+supplement
+supplemental
+supplementary
+supplementation
+supplemented
+supplementing
+supplements
+suppleness
+suppliant
+supplicant
+supplicate
+supplication
+supplicatory
+supplied
+supplier
+suppliers
+supplies
+supply
+supply-reel
+supply-side
+supplying
+support
+supportable
+supported
+supporter
+supporters
+supporting
+supportingly
+supportive
+supportively
+supports
+suppose
+supposed
+supposedly
+supposes
+supposing
+supposition
+suppositional
+suppositions
+supposititious
+suppository
+suppress
+suppressant
+suppressed
+suppresses
+suppressible
+suppressing
+suppression
+suppressive
+suppressor
+suppressors
+suppurate
+suppuration
+supra
+supra-
+supra-national
+supranational
+supremacist
+supremacy
+supreme
+supremely
+sur-
+Surabaja
+Surabaya
+surcease
+surcharge
+surcingle
+surd
+sure
+sure-fire
+sure-footed
+surefire
+surefooted
+surely
+sureness
+sureties
+surety
+surf
+surface
+surface-printing
+surfaced
+surfaceness
+surfaces
+surfacing
+surfboard
+surfeit
+surfer
+surfing
+surfusion
+surge
+surged
+surgeon
+surgeons
+surgery
+surges
+surgical
+surgically
+surging
+Surinam
+Suriname
+Surinamese
+surliness
+surly
+surmise
+surmised
+surmises
+surmount
+surmountable
+surmounted
+surmounting
+surmounts
+surmullet
+surname
+surnames
+surpass
+surpassed
+surpasses
+surpassing
+surplice
+surplus
+surpluses
+surprint
+surprise
+surprised
+surprises
+surprising
+surprisingly
+surreal
+surrealism
+surrealist
+surrealistic
+surrealistically
+surrender
+surrendered
+surrendering
+surrenders
+surreptitious
+surreptitiously
+surreptitiousness
+surrey
+surrogacy
+surrogate
+surrogates
+surround
+surrounded
+surrounding
+surroundings
+surrounds
+surtax
+surtout
+surveillance
+survey
+surveyed
+surveying
+surveyor
+surveyors
+surveys
+survival
+survivalist
+survivals
+survive
+survived
+survives
+surviving
+survivor
+survivors
+Sus
+Susan
+Susanne
+susceptibility
+susceptible
+susceptive
+sushi
+Susie
+suspect
+suspected
+suspecting
+suspects
+suspend
+suspended
+suspender
+suspenders
+suspending
+suspends
+suspense
+suspenseful
+suspenses
+suspension
+suspensions
+suspensive
+suspensory
+suspicion
+suspicions
+suspicious
+suspiciously
+suspire
+Susquehanna
+Sussex
+sustain
+sustainable
+sustained
+sustaining
+sustains
+sustenance
+sustentation
+Sutherland
+sutler
+Sutton
+suture
+sutures
+SUV
+Suva
+Suwanee
+Suzanne
+suzerain
+suzerainty
+Suzuki
+svelte
+Sverdlovsk
+Svetlana
+SW
+swab
+swabbing
+swaboff
+swaddle
+swag
+swage
+swagger
+swaggered
+swaggering
+Swahili
+swain
+swains
+SWAK
+swallow
+swallow-tail
+swallow-tailed
+swallowed
+swallowing
+swallows
+swallowtail
+swam
+swami
+swamp
+swamped
+swamping
+swampland
+swamps
+swampy
+swan
+swan's-down
+swan-song
+swank
+swankily
+swankiness
+swanky
+swanlike
+swans
+swansdown
+Swansea
+Swanson
+swap
+swapfile
+swapped
+swapping
+swaps
+sward
+swarf
+swarm
+swarmed
+swarming
+swarms
+swart
+Swarthmore
+Swarthout
+swarthy
+Swartz
+swash
+swash-buckler
+swashbuckler
+swashbuckling
+swastika
+swatch
+swath
+swathe
+swathing-band
+swatted
+swatter
+sway
+swayback
+swaybacked
+swayed
+swaying
+Swazi
+Swaziland
+swear
+swearer
+swearing
+swears
+swearword
+sweat
+sweatband
+sweated
+sweater
+sweaters
+sweating
+sweatpants
+sweats
+sweatshirt
+sweatshop
+sweaty
+swede
+Sweden
+Swedes
+Swedish
+Sweeney
+Sweeneys
+sweep
+sweeper
+sweepers
+sweeping
+sweepingly
+sweepings
+sweeps
+sweepstake
+sweepstakes
+sweepy
+sweet
+sweet-bread
+sweet-briar
+sweet-fennel
+sweet-john
+sweet-lipped
+sweet-root
+sweet-spoken
+sweet-talk
+sweet-tooth
+sweet-william
+sweetbread
+sweetbriar
+sweetbrier
+sweeten
+sweetened
+sweetener
+sweeteners
+sweetening
+sweetenings
+sweetens
+sweeter
+sweetest
+sweetheart
+sweethearts
+sweetie
+sweeting
+sweetish
+sweetly
+sweetmeat
+sweetness
+sweetpea
+sweets
+sweety
+swell
+swelled
+swellhead
+swellheaded
+swelling
+swellings
+swells
+swelter
+sweltering
+Swenson
+swept
+sweptback
+swerve
+swerved
+swerves
+swerving
+swift
+swift-footed
+swift-winged
+swifter
+swiftest
+swiftly
+swiftness
+swig
+swill
+swim
+swimmer
+swimmers
+swimming
+swimming-bath
+swimmingly
+swimmingplace
+swims
+swimsuit
+Swinburne
+swindle
+swindler
+swine
+swine-herd
+swineherd
+swing
+swing-bridge
+swing-door
+swing-wheel
+swinge
+swinge-buckler
+swingeing
+swinger
+swingers
+swinging
+swingle
+swings
+swinish
+swink
+swipe
+swirl
+swirled
+swirling
+swirly
+swish
+swished
+Swiss
+switch
+switch-back
+switch-board
+switch-hit
+switch-hitter
+switchback
+switchblade
+switchboard
+switchboards
+switched
+switcher
+switchers
+switches
+switching
+switchings
+switchman
+switchpoint
+Switzer
+Switzerland
+swivel
+swivel-chair
+swizzle
+swob
+swollen
+swoon
+swoop
+swooped
+swooping
+swoops
+swoosh
+swop
+sword
+sword-cane
+sword-cut
+sword-cutter
+sword-fish
+sword-flag
+sword-hilt
+sword-law
+swordfish
+swordplay
+swords
+swordsman
+swordsmanship
+swore
+sworn
+swot
+swum
+swung
+sybarite
+sybaritic
+Sybil
+sycamore
+sycophancy
+sycophant
+sycophantic
+Sydney
+Sykes
+syllabary
+syllabi
+syllabic
+syllabical
+syllabicate
+syllabication
+syllabification
+syllabify
+syllable
+syllables
+syllabus
+syllogism
+syllogisms
+syllogistic
+Sylow
+sylph
+sylphic
+sylphlike
+sylvan
+Sylvania
+Sylvester
+Sylvia
+Sylvie
+symbioses
+symbiosis
+symbiotic
+symbol
+symbolic
+symbolical
+symbolically
+symbolics
+symbolism
+symbolization
+symbolize
+symbolized
+symbolizes
+symbolizing
+symbols
+Symington
+symmetric
+symmetrical
+symmetrically
+symmetries
+symmetrize
+symmetry
+sympathetic
+sympathetical
+sympathetically
+sympathies
+sympathize
+sympathized
+sympathizer
+sympathizers
+sympathizes
+sympathizing
+sympathizingly
+sympathy
+symphonic
+symphonies
+symphony
+symposia
+symposium
+symposiums
+symptom
+symptomatic
+symptomatically
+symptoms
+synagog
+synagogal
+synagogue
+synapse
+synapses
+synaptic
+sync
+synch
+synchro
+synchroflash
+synchronic
+synchronical
+synchronism
+synchronization
+synchronize
+synchronized
+synchronizer
+synchronizers
+synchronizes
+synchronizing
+synchronous
+synchronously
+synchrony
+synchrotron
+syncopate
+syncopated
+syncopation
+syncope
+syndicalism
+syndicate
+syndicated
+syndicates
+syndication
+syndrome
+syndromes
+synergism
+synergistic
+synergy
+synfuel
+Synge
+synod
+synodical
+synonym
+synonymic
+synonymity
+synonymize
+synonymous
+synonymously
+synonyms
+synonymy
+synopses
+synopsis
+synoptic
+synoptical
+synovia
+syntactic
+syntactical
+syntactically
+syntactics
+syntagma
+syntax
+syntaxes
+syntheses
+synthesis
+synthesize
+synthesized
+synthesizer
+synthesizers
+synthesizes
+synthesizing
+synthetic
+synthetical
+synthetically
+synthetics
+synthetize
+syphilis
+syphilitic
+syphon
+Syracuse
+Syria
+Syriac
+Syrian
+Syrianize
+Syrianizes
+Syrians
+syringa
+syringe
+syringes
+syrup
+syrupy
+SYSLOG
+system
+systematic
+systematical
+systematically
+systematics
+systematization
+systematize
+systematized
+systematizes
+systematizing
+systemic
+systemically
+systemization
+systemless
+systems
+systemwide
+systole
+systolic
+Szilard
+t'other
+T-ball
+T-bar
+T-bill
+T-junction
+T-shirt
+T-square
+tab
+Tabasco
+tabbouleh
+tabby
+tabernacle
+tabernacles
+tabla
+table
+table-book
+table-cloth
+table-hop
+table-hopper
+table-lamp
+table-land
+table-linen
+table-money
+table-napkin
+table-talk
+table-tennis
+tableau
+tableaus
+tableaux
+tablecloth
+tablecloths
+tabled
+tableland
+tableman
+tables
+tablespoon
+tablespoonful
+tablespoonfuls
+tablespoons
+tablespoonsful
+tablet
+tablets
+tableware
+tabling
+tabloid
+taboo
+taboos
+tabor
+Taborite
+tabouret
+Tabriz
+tabs
+tabu
+tabular
+tabulate
+tabulated
+tabulates
+tabulating
+tabulation
+tabulations
+tabulator
+tabulators
+tachometer
+tachometers
+tachycardia
+tacit
+tacitly
+tacitness
+taciturn
+taciturnity
+taciturnly
+Tacitus
+tack
+tacked
+tacker
+tackiness
+tacking
+tackle
+tackler
+tackles
+tackling
+tacky
+taco
+Tacoma
+tact
+tactful
+tactfully
+tactfulness
+tactic
+tactical
+tactically
+tactician
+tactics
+tactile
+tactility
+tactless
+tactlessly
+tactlessness
+tad
+tadpole
+Tadzhikistan
+Taegu
+Taejon
+tafferel
+taffeta
+taffrail
+taffy
+Taft
+tag
+tag-rag
+Tagalog
+tagged
+tagger
+tagging
+tags
+Tahiti
+Tahitian
+Tahoe
+Taichung
+taiga
+tail
+tail-coat
+tail-light
+tail-ornament
+tailback
+tailcoat
+tailed
+tailgate
+tailing
+tailless
+taillight
+tailor
+tailor-made
+tailored
+tailoring
+tailors
+tailors
+tailpipe
+tails
+tailspin
+tailwind
+Tainan
+taint
+tainted
+taintless
+Taipei
+Taiwan
+Taiwanese
+Taiyuan
+Tajikistan
+take
+take!
+take-in
+take-no-prisoners
+take-off
+taken
+takeoff
+takeout
+takeover
+taker
+takers
+takes
+taking
+taking-over
+takings
+talc
+talcum
+tale
+tale-bearer
+talebearer
+talent
+talented
+talents
+tales
+tali
+talisman
+talk
+talkative
+talkatively
+talkativeness
+talked
+talker
+talkers
+talkie
+talking
+talking-book
+talking-to
+talks
+talkwriter
+tall
+Talladega
+Tallahassee
+Tallahatchie
+Tallahoosa
+tallboy
+Tallchief
+taller
+tallest
+Talleyrand
+tallier
+Tallinn
+tallish
+tallness
+tallow
+tallow-candle
+tallow-chandler
+tallowy
+tally
+tallyho
+talmud
+Talmudic
+Talmudism
+Talmudist
+Talmudization
+Talmudizations
+Talmudize
+Talmudizes
+talon
+talus
+tam
+tam-o'-shanter
+tamable
+tamale
+tamarack
+tamarind
+tambour
+tambour-work
+tambourine
+tame
+tameable
+tamed
+tameless
+tamely
+tameness
+tamer
+tames
+Tamil
+taming
+Tammany
+Tammanyize
+Tammanyizes
+tamp
+Tampa
+tamper
+tampered
+tamperer
+tampering
+tampers
+tamping
+tampion
+tampon
+tan
+tan-bark
+tan-house
+tanager
+Tanaka
+Tananarive
+tanbark
+tandem
+tandoori
+tang
+Tanganyika
+tangelo
+tangent
+tangential
+tangentially
+tangents
+tangerine
+tangibility
+tangible
+tangibleness
+tangibly
+Tangier
+Tangiers
+tangle
+tangled
+tango
+Tangshan
+tangy
+tank
+tank-buster
+tank-destroyer
+tank-engine
+tank-trap
+tank-truck
+tankard
+tanker
+tankers
+tankful
+tanks
+tanned
+Tannenbaum
+tanner
+tanners
+tannery
+tannic
+tannin
+tanning
+tansy
+tantalise
+tantalization
+tantalize
+tantalizer
+tantalizing
+tantalizingly
+tantalum
+Tantalus
+tantamount
+tantivy
+tantra
+tantrum
+tantrums
+Tanya
+Tanzania
+Tanzanian
+Taoism
+Taoist
+Taos
+tap
+tap-dance
+tap-dancer
+tap-room
+tape
+tape-record
+tape-recorder
+tape-worm
+taped
+tapeline
+taper
+taper-reamer
+tapered
+tapering
+tapers
+tapes
+tapestries
+tapestry
+tapeworm
+taping
+tapings
+tapioca
+tapir
+tapis
+tapped
+tapper
+tappers
+tappet
+tapping
+taproom
+taproot
+taproots
+taps
+tapster
+tar
+Tara
+tarantella
+tarantula
+tarantulae
+Tarbell
+tardily
+tardiness
+tardy
+tare
+target
+targeted
+targeting
+targets
+tariff
+tariffs
+tarmac
+tarn
+tarnal
+tarnation
+tarnish
+taro
+tarot
+tarp
+tarpaulin
+tarpon
+tarragon
+tarry
+Tarrytown
+tarsal
+tarsi
+tarsia
+tarsus
+tart
+tartan
+tartar
+tartaric
+Tartary
+tartly
+tartness
+Tartuffe
+Tarzan
+Tashkent
+task
+task-master
+task-work
+tasked
+tasking
+taskmaster
+taskmistress
+tasks
+Tasmania
+Tasmanian
+Tass
+tassel
+tasseled
+tassels
+taste
+tasted
+tasteful
+tastefully
+tastefulness
+tasteless
+tastelessly
+tastelessness
+taster
+tasters
+tastes
+tastily
+tastiness
+tasting
+tasty
+tat
+tata
+tatami
+Tatar
+Tate
+tater
+tatter
+tatterdemalion
+tattered
+tatters
+tatting
+tattle
+tattler
+tattletale
+tattoo
+tattooed
+tattooer
+tattooist
+tattoos
+tau
+taught
+taunt
+taunted
+taunter
+taunting
+tauntingly
+taunts
+taupe
+Taurus
+taut
+tauten
+tautly
+tautness
+tautological
+tautologically
+tautologies
+tautologous
+tautology
+tavern
+taverns
+taw
+tawdrily
+tawdriness
+tawdry
+Tawney
+tawny
+tax
+tax-deductible
+tax-deferred
+tax-exempt
+tax-free
+tax-sheltered
+taxable
+taxation
+taxed
+taxer
+taxes
+taxi
+taxi-cab
+taxicab
+taxicabs
+taxidermist
+taxidermy
+taxied
+taxiing
+taximeter
+taxing
+taxis
+taxonomic
+taxonomical
+taxonomically
+taxonomist
+taxonomy
+taxpayer
+taxpayers
+taxpaying
+Taylor
+Taylorize
+Taylorizes
+Taylors
+TBA
+Tbilisi
+Tc
+TCAM
+Tchaikovsky
+Tchajwan
+TD
+TDD
+Te
+tea
+tea-board
+tea-cake
+tea-cosy
+tea-cup
+tea-house
+tea-kettle
+tea-plant
+tea-pot
+tea-room
+tea-service
+tea-set
+tea-shop
+tea-spoon
+tea-things
+tea-tongs
+tea-tray
+tea-urn
+teacake
+teach
+teach-in
+teachable
+teacher
+teachers
+teaches
+teaching
+teachings
+teachware
+teacup
+teacupful
+teak
+teakettle
+teal
+team
+team-work
+teamed
+teaming
+teammate
+teams
+teamster
+teamwork
+teapot
+tear
+tear-gas
+teardrop
+teared
+tearful
+tearfully
+teargas
+tearing
+tearjerker
+tearoom
+tears
+teary
+teas
+tease
+teased
+teasel
+teaser
+teases
+teasing
+teaspoon
+teaspoonful
+teaspoonfuls
+teaspoons
+teaspoonsful
+teat
+teazel
+teazle
+tech
+technetium
+technical
+technicalities
+technicality
+technically
+technician
+technicians
+technicolor
+technics
+Technion
+technique
+techniques
+techno
+technocracy
+technocrat
+technocratic
+technological
+technologically
+technologies
+technologist
+technologists
+technology
+techy
+tectonic
+tectonics
+Tecumseh
+ted
+Teddy
+tedious
+tediously
+tediousness
+tedium
+tee
+teem
+teemed
+teeming
+teems
+teen
+teen-age
+teen-ager
+teen-agers
+teenage
+teenaged
+teenager
+teenagers
+teens
+teensy
+teensy-weensy
+teeny
+teeny-weeny
+teenybopper
+teepee
+teeshirt
+teeter
+teeter-totter
+teeth
+teethe
+teethed
+teethes
+teething
+teetotal
+teetotaler
+teetotalism
+teetotaller
+TEFL
+Teflon
+Tegucigalpa
+tegular
+tegument
+Teheran
+Tehran
+tektite
+Tektronix
+tele-bridge
+telecast
+telecaster
+telecommunication
+telecommunications
+telecommute
+telecommuter
+telecommuting
+teleconference
+teleconferencing
+telecontrol
+telecopier
+telecopying
+telecourse
+TELEDATA
+Teledyne
+TELEFACS
+telefax
+telefiles
+telefilm
+Telefunken
+telegenic
+telegram
+telegrams
+telegraph
+telegraphed
+telegrapher
+telegraphers
+telegraphic
+telegraphically
+telegraphing
+telegraphist
+telegraphs
+telegraphy
+teleinquiry
+telekinesis
+telekinetic
+telemail
+Telemann
+telemarketer
+telemarketing
+telematics
+telemeter
+telemetry
+TELENET
+teleological
+teleologically
+teleology
+telepathic
+telepathically
+telepathy
+telephone
+telephoned
+telephoner
+telephoners
+telephones
+telephonic
+telephoning
+telephonist
+telephony
+telephoto
+telephotography
+teleprint
+teleprinter
+teleprocessing
+TelePrompTer
+telerecord
+telerecording
+telereference
+telereferencing
+telescope
+telescoped
+telescopes
+telescopic
+telescopically
+telescoping
+telescreen
+teletex
+teletext
+telethon
+teletransmission
+teletype
+teletypes
+teletypesetter
+teletypewriter
+televangelism
+televangelist
+teleview
+televiewer
+televise
+televised
+televises
+televising
+television
+televisions
+televisor
+televisors
+telewriter
+telex
+tell
+teller
+tellers
+telling
+telling-off
+tellingly
+tells
+telltale
+tellurium
+telly
+TELPAK
+TELSET
+temblor
+temerity
+temp
+Tempe
+temper
+tempera
+temperament
+temperamental
+temperamentally
+temperaments
+temperance
+temperate
+temperately
+temperateness
+temperature
+temperatures
+tempered
+tempering
+tempers
+tempest
+tempestuous
+tempestuously
+tempestuousness
+tempi
+Templar
+template
+templates
+temple
+Templeman
+temples
+templet
+Templeton
+tempo
+temporal
+temporality
+temporally
+temporaries
+temporarily
+temporariness
+temporary
+temporization
+temporize
+temporizer
+tempt
+temptation
+temptations
+tempted
+tempter
+tempters
+tempting
+temptingly
+temptress
+tempts
+tempura
+ten
+tenability
+tenable
+tenably
+tenacious
+tenaciously
+tenaciousness
+tenacity
+tenancy
+tenant
+tenantry
+tenants
+tench
+tend
+tendance
+tended
+tendencies
+tendency
+tendentious
+tendentiously
+tendentiousness
+tender
+tender-hearted
+tender-minded
+tenderfeet
+tenderfoot
+tenderhearted
+tenderheartedly
+tenderheartedness
+tendering-procedure
+tenderize
+tenderizer
+tenderloin
+tenderly
+tenderness
+tenders
+tending
+tendinitis
+tendon
+tendonitis
+tendril
+tends
+tenebrous
+tenement
+tenements
+tenet
+tenfold
+tenht
+Tenn
+Tenneco
+Tennessean
+Tennessee
+Tenney
+tennis
+tennis-ball
+tennis-court
+Tennyson
+tenon
+tenor
+tenors
+tenpin
+tenpins
+tens
+tense
+tensed
+tensely
+tenseness
+tenser
+tenses
+tensest
+tensile
+tensing
+tension
+tensions
+tensity
+tensor
+tent
+tent-pegs
+tentacle
+tentacled
+tentacles
+tentative
+tentatively
+tentativeness
+tented
+tenter
+tenter-hook
+tenterhook
+tenth
+tenthly
+tenting
+tents
+tenuity
+tenuous
+tenuously
+tenuousness
+tenure
+tenured
+tepee
+tepefy
+tepid
+tepidity
+tepidly
+tepidness
+tequila
+terabyte
+terbium
+tercentenary
+tercentennial
+terebinth
+terebinthine
+Teresa
+tergiversate
+tergiversation
+term
+termagant
+termed
+terminable
+terminal
+terminally
+terminals
+terminate
+terminated
+terminates
+terminating
+termination
+terminations
+terminator
+terminators
+terming
+termini
+terminography
+terminological
+terminologically
+terminologies
+terminologist
+terminology
+terminus
+termiprinter
+termite
+termly
+terms
+termwise
+tern
+ternary
+Terpsichore
+terra
+terrace
+terraced
+terraces
+terracotta
+terrain
+terrains
+terramycin
+Terran
+terrapin
+terraria
+terrarium
+terrazzo
+Terre
+terrene
+terrestrial
+terrestrially
+terrestrials
+terrible
+terribleness
+terribly
+terrier
+terriers
+terrific
+terrifically
+terrified
+terrifies
+terrify
+terrifying
+terrifyingly
+territorial
+territories
+territory
+terror
+terror-stricken
+terror-struck
+terrorism
+terrorist
+terroristic
+terrorists
+terrorize
+terrorized
+terrorizes
+terrorizing
+terrors
+terry
+terry-cloth
+terrycloth
+terse
+tersely
+terseness
+tertiary
+terylene
+TESL
+TESOL
+Tess
+tessellate
+tessellated
+tessera
+Tessie
+test
+test-drive
+test-fly
+test-glass
+test-paper
+test-room
+test-tube
+testability
+testable
+testaceous
+testament
+testamentary
+testaments
+testate
+testator
+testatrix
+tested
+tester
+testers
+testes
+testicle
+testicles
+testification
+testified
+testifier
+testifiers
+testifies
+testify
+testifying
+testily
+testimonial
+testimonies
+testimony
+testiness
+testing
+testings
+testis
+testosterone
+tests
+testudinal
+testy
+tetanic
+tetanus
+tetchy
+tete-a-tete
+tether
+tetra
+tetracycline
+tetragon
+tetragonal
+tetrahedra
+tetrahedral
+tetrahedron
+tetrameter
+tetter
+Teuton
+Teutonic
+Tex-Mex
+Texaco
+Texan
+Texans
+Texas
+Texases
+text
+text-editor
+text-hand
+text-processor
+textbook
+textbooks
+textile
+textiles
+Textron
+texts
+textual
+textually
+textural
+texture
+textured
+textures
+textware
+Th
+Thai
+Thailand
+thalami
+thalamus
+Thalia
+thalidomide
+thallium
+Thames
+than
+than-that
+thane
+thank
+thank-you
+thanked
+thankful
+thankfully
+thankfulness
+thanking
+thankless
+thanklessly
+thanklessness
+thanks
+thanks-giving
+thanksgivings
+that
+thatch
+thatched
+thatcher
+thatches
+thatching
+thats
+thaumaturge
+thaumaturgic
+thaumaturgist
+thaumaturgy
+thaw
+thawed
+thawing
+thaws
+Thayer
+THC
+the
+Thea
+theater
+theatergoer
+theaters
+theatre
+theatrical
+theatricality
+theatrically
+theatricals
+theatrics
+Thebes
+thee
+theft
+thefts
+their
+theirs
+theism
+theist
+theistic
+Thelma
+them
+thematic
+thematically
+theme
+themes
+themselves
+then
+thence
+thence-forth
+thence-forward
+thenceforth
+thenceforward
+theocracy
+theocratic
+theodolite
+Theodore
+Theodosian
+Theodosius
+theologian
+theological
+theologically
+theologist
+theology
+theorem
+theorems
+theoretic
+theoretical
+theoretically
+theoretician
+theoreticians
+theories
+theorist
+theorists
+theorization
+theorizations
+theorize
+theorized
+theorizer
+theorizers
+theorizes
+theorizing
+theory
+theosophic
+theosophical
+theosophist
+theosophy
+therapeutic
+therapeutically
+therapeutics
+therapies
+therapist
+therapists
+therapy
+there
+there's
+thereabout
+thereabouts
+thereafter
+thereat
+thereby
+therefor
+therefore
+therefrom
+therein
+thereinto
+thereof
+thereon
+thereout
+Theresa
+thereto
+theretofore
+thereunder
+thereunto
+thereupon
+therewith
+therewithal
+therm
+thermal
+thermally
+thermals
+thermo-electric
+thermocopy
+thermocopying
+thermocouple
+thermodynamic
+thermodynamics
+Thermofax
+thermography
+thermometer
+thermometers
+thermometric
+thermonuclear
+thermoplastic
+thermos
+thermostat
+thermostatic
+thermostatically
+thermostats
+thesauri
+thesaurus
+these
+theses
+Theseus
+thesis
+Thessalonian
+Thessaly
+theta
+Thetis
+thew
+thews
+they
+they'd
+they'll
+they're
+they've
+thiamin
+thiamine
+thick
+thick-eyed
+thick-head
+thick-headed
+thick-skinned
+thick-skulled
+thicken
+thickener
+thickening
+thickens
+thicker
+thickest
+thicket
+thickets
+thickheaded
+thickly
+thickness
+thickset
+thief
+Thiensville
+thieve
+thievery
+thieves
+thieving
+thievish
+thigh
+thigh-bone
+thighbone
+thighs
+thill
+thiller
+thimble
+thimbleful
+thimblerig
+thimbles
+Thimbu
+Thimphu
+thin
+thin-bodied
+thin-skinned
+thine
+thing
+thingamabob
+thingamajig
+thingamy
+things
+thingumbob
+thingummy
+think
+thinkable
+thinkably
+thinker
+thinkers
+thinking
+thinks
+thinly
+thinner
+thinness
+thinnest
+thinnner
+third
+third-class
+third-rate
+thirdly
+thirds
+thirst
+thirsted
+thirstily
+thirstiness
+thirsts
+thirsty
+thirteen
+thirteens
+thirteenth
+thirties
+thirtieth
+thirty
+thirty-two-mo
+this
+thistle
+thistledown
+thistly
+thither
+thitherto
+thitherward(s)
+tho
+tho'
+thole
+Thomas
+Thomistic
+Thompson
+Thomson
+thong
+Thor
+thoraces
+thoracic
+thorax
+Thoreau
+thorium
+thorn
+Thornburg
+thorniness
+thorns
+Thornton
+thorny
+thorough
+thorough-bred
+thorough-paced
+thoroughbred
+thoroughfare
+thoroughfares
+thoroughgoing
+thoroughly
+thoroughness
+thorp
+Thorpe
+Thorstein
+those
+thou
+though
+thought
+thought-out
+thoughtful
+thoughtfully
+thoughtfulness
+thoughtless
+thoughtlessly
+thoughtlessness
+thoughts
+thousand
+thousandfold
+thousands
+thousandth
+Thrace
+Thracian
+thraldom
+thrall
+thralldom
+thrash
+thrashed
+thrasher
+thrashes
+thrashing
+thrashing-floor
+thrashing-machine
+thread
+threadbare
+threaded
+threader
+threaders
+threading
+threadlike
+threads
+thready
+threat
+threaten
+threatened
+threatening
+threateningly
+threatens
+threats
+three
+three-cornered
+three-D
+three-decker
+three-dimensional
+three-master
+three-part
+three-phase
+three-ply
+three-quarter
+three-quarters
+three-stage
+three-wheeler
+threefold
+threepence
+threepenny
+threes
+threescore
+threesome
+threnody
+thresh
+thresher
+threshold
+thresholds
+threw
+thrice
+thrid
+thrift
+thriftily
+thriftiness
+thriftless
+thrifty
+thrill
+thrilled
+thriller
+thrillers
+thrilling
+thrillingly
+thrills
+thrive
+thrived
+thriven
+thriver
+thriving
+thro'
+throat
+throat-pipe
+throated
+throatflap
+throatily
+throatiness
+throats
+throaty
+throb
+throbbed
+throbbing
+throbs
+throe
+throes
+thrombi
+thromboses
+thrombosis
+thrombotic
+thrombus
+throne
+Throneberry
+thrones
+throng
+throngs
+throstle
+throttle
+throttle-lever
+throttle-valve
+throttled
+throttler
+throttles
+throttling
+through
+throughout
+throughput
+throughway
+throve
+throw
+throw-away
+throw-in
+throw-out
+throw-outs
+throwaway
+throwback
+thrower
+throwing
+thrown
+throws
+thru
+thrum
+thrush
+thrust
+thruster
+thrusters
+thrusting
+thrusts
+thruway
+Thu
+Thuban
+Thucydides
+thud
+thuds
+thug
+thuggery
+thuggish
+thugs
+Thule
+thulium
+thumb
+thumb-stall
+thumbed
+thumbing
+thumbnail
+thumbs
+thumbscrew
+thumbtack
+thump
+thumped
+thumping
+thunder
+thunder-clap
+thunder-clouds
+thunder-storm
+thunder-stroke
+thunder-struck
+thunderation
+thunderbolt
+thunderbolts
+thunderclap
+thundercloud
+thundered
+thunderer
+thunderers
+thunderhead
+thundering
+thunderous
+thunderously
+thunders
+thundershower
+thunderstorm
+thunderstorms
+thunderstricken
+thunderstruck
+Thurber
+thurible
+Thuringia
+Thurman
+Thurs
+Thursday
+Thursdays
+thus
+thusly
+thwack
+thwacker
+thwaite
+thwart
+thwarted
+thwarting
+thwarts
+thy
+thyme
+thymine
+thymus
+thyroid
+thyroidal
+thyself
+Tianjin
+tiara
+Tiber
+Tiberius
+Tibet
+Tibetan
+tibia
+tibiae
+tibial
+Tiburon
+tic
+tic-tac-toe
+tick
+tick-tack
+tick-tack-toe
+ticked
+ticker
+tickers
+ticket
+ticket-collector
+ticket-office
+ticket-porter
+tickets
+ticking
+tickle
+tickled
+tickler
+tickles
+tickling
+ticklish
+ticklishly
+ticklishness
+ticks
+ticktacktoe
+ticktock
+Ticonderoga
+tidal
+tidally
+tidbit
+tiddley
+tiddly
+tiddlywinks
+tide
+tided
+tideland
+tides
+tidewater
+tideway
+tidied
+tidily
+tidiness
+tiding
+tidings
+tidy
+tidying
+tie
+tie-dye
+tie-dyed
+tie-dyeing
+tie-in
+tie-up
+tieback
+tiebreaker
+Tieck
+tied
+Tientsin
+tiepin
+tier
+tierce
+tiered
+tiers
+ties
+tiff
+tiffany
+tiffin
+tige
+tiger
+tigerish
+tigers
+tight
+tight-fisted
+tight-laced
+tight-lipped
+tight-listed
+tight-made
+tight-rope
+tighten
+tightened
+tightener
+tighteners
+tightening
+tightenings
+tightens
+tighter
+tightest
+tightfisted
+tightly
+tightness
+tightrope
+tights
+tightwad
+tigress
+Tigris
+Tijuana
+tike
+tilde
+tile
+tile-kiln
+tiled
+tiler
+tiles
+tiling
+till
+tillable
+tillage
+tilled
+tiller
+tillers
+Tillich
+Tillie
+tilling
+tills
+Tilsit
+tilt
+tilt-car
+tilt-yard
+tilted
+tilter
+tilth
+tilting
+tilting-trunk
+tilts
+Tim
+timber
+timber-headed
+timber-hut
+timber-wood
+timber-work
+timber-yard
+timbered
+timbering
+timberland
+timberline
+timbers
+timbre
+timbrel
+time
+time-consuming
+time-fuse
+time-honored
+time-honoured
+time-keeper
+time-killing
+time-lapse
+time-out
+time-recorder
+time-saving
+time-server
+time-serving
+time-share
+time-sharing
+time-table
+time-work
+timed
+timekeeper
+timekeeping
+timelag
+timeless
+timelessly
+timelessness
+timeliness
+timely
+timeout
+timeouts
+timepiece
+timer
+timers
+times
+timeserver
+timeserving
+timeshare
+timeshares
+timesharing
+timestamp
+timestamps
+timetable
+timetables
+timework
+timeworn
+Timex
+timid
+timidity
+timidly
+timidness
+timing
+timings
+Timmy
+Timon
+Timonize
+Timonizes
+timorous
+timorously
+timorousness
+timpani
+timpanist
+Tims
+tin
+tin-box
+tin-foil
+tin-pot
+Tina
+tincture
+tinder
+tinder-box
+tinderbox
+tine
+tinfoil
+ting
+tinge
+tinged
+tingle
+tingled
+tingles
+tingling
+tingly
+tinhorn
+tinier
+tiniest
+tinily
+tininess
+tinker
+tinkered
+tinkerer
+tinkering
+tinkers
+tinkle
+tinkled
+tinkles
+tinkling
+tinman
+tinner
+tinnier
+tinniest
+tinnily
+tinniness
+tinnitus
+tinny
+tinplate
+tins
+tinsel
+Tinseltown
+tinsmith
+tint
+tinted
+tinting
+tintinnabulation
+tints
+tintype
+tinware
+tiny
+Tioga
+tip
+tip-cart
+tip-merry
+tip-off
+tip-top
+tipi
+Tippecanoe
+tipped
+tipper
+Tipperary
+tippers
+tippet
+tipping
+tipple
+tippler
+tips
+tipsify
+tipsily
+tipsiness
+tipstaff
+tipster
+tipsy
+tiptoe
+tiptop
+tirade
+Tirana
+Tirane
+tire
+tire-casing
+tire-pump
+tire-tube
+tired
+tiredly
+tiredness
+tireless
+tirelessly
+tirelessness
+tires
+tiresome
+tiresomely
+tiresomeness
+tiring
+tiro
+Tirol
+Tirolean
+tirra-lirra
+TIS
+tissue
+tissues
+tit
+titanic
+titanium
+titbit
+tithe
+tither
+tithes
+tithing
+titillate
+titillating
+titillatingly
+titillation
+titivate
+titivation
+title
+title-deed
+title-line
+title-page
+title-signature
+titled
+titleholder
+titleless
+titles
+titling
+titmice
+titmouse
+Tito
+tits
+titter
+titters
+tittivate
+tittle
+tittle-tattle
+tittup
+titular
+Titus
+tizzy
+TKO
+Tl
+TLC
+TN
+TNT
+to
+to-and-fro
+to-do
+to-morrow
+to-night
+toad
+toad-eater
+toad-stool
+toads
+toadstool
+toady
+toast
+toast-master
+toasted
+toaster
+toasting
+toastmaster
+toastmistress
+toasts
+Toasts-Eggs
+toasty
+tobacco
+tobacco-pipe
+tobacco-pouch
+tobacconist
+tobacconist's
+tobacconists
+Tobago
+toboggan
+tobogganer
+tobogganing
+Toby
+Tocqueville
+tocsin
+today
+todays
+todays
+Todd
+toddle
+toddler
+toddy
+toe
+toecap
+toed
+TOEFL
+toehold
+toenail
+toes
+toff
+toffee
+toffees
+toffy
+tofu
+tog
+toga
+togaed
+together
+togetherness
+toggle
+toggled
+toggles
+toggling
+Togo
+Togolese
+togs
+toil
+toiled
+toiler
+toilet
+toilet-paper
+toilet-set
+toiletries
+toiletry
+toilets
+toilette
+toiling
+toils
+toilsome
+Tokany
+toke
+token
+tokenism
+tokens
+Tokyo
+Tokyoite
+Toland
+told
+tole
+Toledo
+tolerability
+tolerable
+tolerably
+tolerance
+tolerances
+tolerant
+tolerantly
+tolerate
+tolerated
+tolerates
+tolerating
+toleration
+Tolkien
+toll
+toll-cable
+toll-collector
+toll-free
+toll-house
+tollbooth
+tolled
+Tolley
+tollgate
+tolls
+tollway
+Tolstoy
+toluene
+tom
+tom-cat
+tom-noddy
+tom-tom
+tomahawk
+tomahawks
+tomato
+tomatoes
+tomb
+Tombigbee
+tomboy
+tomboyish
+tombs
+tombstone
+tomcat
+tome
+tomfool
+tomfoolery
+Tomlinson
+Tommie
+tommy
+tommy-gun
+tomographic
+tomography
+tomorrow
+tomorrows
+tomorrows
+Tompkins
+tomtit
+ton
+tonal
+tonality
+tonally
+tone
+tone-deaf
+tonearm
+toned
+toneless
+tonelessly
+toner
+tones
+tong
+Tonga
+Tongan
+tongs
+tongue
+tongue-in-cheek
+tongue-lash
+tongue-lashing
+tongue-tied
+tongued
+tonguelash
+tongueless
+tongues
+Toni
+tonic
+tonics
+tonight
+toning
+Tonio
+tonnage
+tonne
+tons
+tonsil
+tonsillectomy
+tonsillitis
+tonsils
+tonsorial
+tonsure
+tontine
+tony
+too
+took
+tool
+tool-kit
+tool-shed
+toolbox
+tooled
+tooler
+toolers
+tooling
+toolmaker
+tools
+Toomey
+toot
+tooter
+tooth
+tooth-ache
+tooth-brush
+tooth-paste
+tooth-powder
+tooth-wheel
+toothache
+toothbrush
+toothbrushes
+toothed
+toothful
+toothily
+toothing
+toothless
+toothpaste
+toothpick
+toothpicks
+toothsome
+toothy
+tootle
+top
+top-boots
+top-coat
+top-down
+top-drawer
+top-dress
+top-flight
+top-gallant
+top-hat
+top-heavy
+top-hole
+top-knot
+top-level
+top-notch
+top-of-form
+top-quality
+top-ranking
+top-secret
+topaz
+topcoat
+topdressing
+tope
+Topeka
+toper
+topflight
+topiary
+topic
+topical
+topicality
+topically
+topics
+topknot
+topless
+topmast
+topmost
+topnotch
+topographer
+topographic
+topographical
+topographically
+topography
+topological
+topologies
+topology
+topper
+topping
+topple
+toppled
+topples
+toppling
+tops
+topsail
+topside
+topsides
+topsoil
+topspin
+Topsy
+topsy-turvy
+topsyturvy
+toque
+tor
+torch
+torchbearer
+torches
+torchlight
+tore
+toreador
+Tories
+torment
+tormented
+tormenter
+tormenters
+tormenting
+tormentingly
+tormentor
+torments
+torn
+tornado
+tornadoes
+Toronto
+torpedo
+torpedo-craft
+torpedoes
+torpid
+torpidity
+torpidly
+torpitude
+torpor
+torque
+Torquemada
+Torrance
+torrefy
+torrent
+torrential
+torrents
+torrid
+torridity
+torridly
+torridness
+torsi
+torsion
+torsional
+torso
+tort
+torte
+tortellini
+tortilla
+tortoise
+tortoise-shell
+tortoises
+tortoiseshell
+tortoni
+tortuosity
+tortuous
+tortuously
+tortuousness
+torture
+tortured
+torturer
+torturers
+tortures
+torturing
+torturous
+torus
+toruses
+Tory
+Toryize
+Toryizes
+Tosca
+Toscanini
+Toshiba
+toss
+toss-up
+tossed
+tosses
+tossing
+tossup
+tost
+tot
+total
+totaled
+totaling
+totalisator
+totalitarian
+totalitarianism
+totalities
+totality
+totalizator
+totalize
+totalled
+totaller
+totallers
+totalling
+totally
+totals
+tote
+totem
+totemic
+Toto
+totter
+tottered
+totterer
+tottering
+totters
+toucan
+touch
+touch-and-go
+touch-body
+touch-corpuscle
+touch-down
+touch-hole
+touch-last
+touch-me-not
+touch-needle
+touch-type
+touch-up
+touchable
+touchdown
+touche
+touched
+touches
+touchier
+touchiest
+touchily
+touchiness
+touching
+touchingly
+touchscreen
+touchstone
+touchwood
+touchy
+tough
+toughen
+toughener
+tougher
+toughest
+toughie
+toughly
+toughness
+Toulouse
+toupee
+tour
+toured
+touring
+tourism
+tourist
+tourists
+tourmaline
+tournament
+tournaments
+tourney
+tourniquet
+tours
+tousle
+tousled
+tout
+tow
+tow-boat
+tow-row
+towage
+toward
+towards
+towed
+towel
+towel-horse
+towelette
+toweling
+towelled
+towelling
+towels
+tower
+tower-crane
+tower-wagon
+towered
+towering
+towers
+towhead
+towheaded
+towhee
+towline
+town
+town-clerk
+townhouse
+townie
+Townley
+towns
+Townsend
+townsfolk
+township
+townships
+townsman
+townspeople
+townswoman
+towpath
+towrope
+Towsley
+toxemia
+toxic
+toxicity
+toxicological
+toxicologist
+toxicology
+toxin
+toy
+toyed
+toying
+Toynbee
+Toyota
+toys
+toyshop
+TPI
+trace
+traceable
+traced
+tracer
+tracers
+tracery
+traces
+trachea
+tracheae
+tracheal
+tracheotomy
+tracing
+tracings
+track
+track-and-field
+trackball
+tracked
+tracker
+trackers
+tracking
+trackless
+tracks
+tract
+tractability
+tractable
+tractably
+Tractarians
+tractate
+traction
+tractive
+tractor
+tractor-trailer
+tractors
+tracts
+Tracy
+trade
+trade-in
+trade-mark
+trade-name
+trade-off
+trade-outlet
+traded
+trademark
+trademarks
+tradeoff
+tradeoffs
+trader
+traders
+trades
+tradesman
+tradespeople
+tradeswoman
+trading
+tradition
+traditional
+traditionalism
+traditionalist
+traditionally
+traditions
+traduce
+traducer
+traffic
+trafficked
+trafficker
+traffickers
+trafficking
+traffics
+tragedian
+tragedienne
+tragedies
+tragedy
+tragic
+tragical
+tragically
+tragicomedy
+tragicomic
+trail
+trailblazer
+trailblazing
+trailed
+trailer
+trailers
+trailing
+trailings
+trails
+train
+train-oil
+trainable
+trained
+trainee
+trainees
+trainer
+training
+training-college
+training-ground
+training-ship
+trainman
+trains
+traipse
+trait
+traitor
+traitoress
+traitorous
+traitorously
+traitors
+traits
+trajectories
+trajectory
+tram
+trammel
+trammels
+tramp
+tramped
+tramper
+tramping
+trample
+trampled
+trampler
+tramples
+trampling
+trampoline
+tramps
+tramway
+tramway-car
+trance
+trances
+tranquil
+tranquility
+tranquilize
+tranquilizer
+tranquillity
+tranquillize
+tranquillizer
+tranquilly
+trans-ship
+transact
+transacter
+transaction
+transactions
+transactor
+transalpine
+transatlantic
+transceive
+transceiver
+transceivers
+transcend
+transcended
+transcendence
+transcendency
+transcendent
+transcendental
+transcendentalism
+transcendentalist
+transcendentally
+transcending
+transcends
+transcoder
+transcontinental
+transcribe
+transcribed
+transcriber
+transcribers
+transcribes
+transcribing
+transcript
+transcription
+transcriptions
+transcripts
+transducer
+transect
+transept
+transfer
+transfer-paper
+transferability
+transferable
+transferal
+transferals
+transference
+transferred
+transferrer
+transferrers
+transferring
+transfers
+transfiguration
+transfigure
+transfinite
+transfix
+transfixed
+transfixt
+transform
+transformable
+transformation
+transformational
+transformations
+transformed
+transformer
+transformers
+transforming
+transforms
+transfuse
+transfusion
+transgress
+transgressed
+transgression
+transgressions
+transgressor
+transience
+transiency
+transient
+transiently
+transients
+transilumination
+transinformation
+transistor
+transistorize
+transistorized
+transistorizing
+transistors
+transit
+Transite
+transition
+transitional
+transitionally
+transitioned
+transitions
+transitive
+transitively
+transitiveness
+transitivity
+transitory
+translatability
+translatable
+translate
+translated
+translates
+translating
+translation
+translational
+translations
+translator
+translators
+transliterate
+transliteration
+transloading
+translocation
+translucence
+translucency
+translucent
+translucently
+transmarine
+transmigrate
+transmigration
+transmissibility
+transmissible
+transmission
+transmissions
+transmit
+transmits
+transmittable
+transmittal
+transmittance
+transmitted
+transmitter
+transmitters
+transmitting
+transmogrification
+transmogrify
+transmutable
+transmutation
+transmute
+transnational
+transoceanic
+transom
+TRANSPAC
+transpacific
+transparence
+transparencies
+transparency
+transparent
+transparently
+transpiration
+transpire
+transpired
+transpires
+transpiring
+transplant
+transplantation
+transplanted
+transplanting
+transplants
+transpolar
+transponder
+transponders
+transport
+transportability
+transportable
+transportation
+transported
+transporter
+transporters
+transporting
+transports
+transpose
+transposed
+transposes
+transposing
+transposition
+transputation
+transputer
+transsexual
+transsexualism
+transship
+transshipment
+transubstantiate
+transubstantiation
+transudation
+transude
+Transvaal
+transversal
+transverse
+transversely
+transvestism
+transvestite
+Transylvania
+trap
+trap-door
+trapan
+trapdoor
+trapeze
+trapezia
+trapezium
+trapezoid
+trapezoidal
+trapezoids
+trapped
+trapper
+trappers
+trapping
+trappings
+Trappist
+traps
+trapshooting
+trash
+trashiness
+trashy
+Trastevere
+trauma
+traumata
+traumatic
+traumatically
+traumatize
+travail
+travel
+traveled
+traveler
+travelers
+traveling
+travelings
+traveller
+travelling
+travelog
+travelogue
+travels
+traversal
+traversals
+traverse
+traversed
+traverses
+traversing
+travesties
+travesty
+Travis
+trawl
+trawler
+tray
+trays
+treacheries
+treacherous
+treacherously
+treacherousness
+treachery
+treacle
+treacly
+tread
+treading
+treadle
+treadmill
+treads
+Treadwell
+treason
+treasonable
+treasonous
+treasure
+treasure-bench
+treasure-bill
+treasure-trove
+treasured
+treasurer
+treasures
+treasuries
+treasuring
+treasury
+treat
+treatable
+treated
+treaties
+treating
+treatise
+treatises
+treatment
+treatments
+treats
+treaty
+treble
+tree
+tree-beetle
+tree-creeper
+tree-frog
+treeless
+treelike
+trees
+treetop
+treetops
+trefoil
+trek
+trekker
+treks
+trellis
+trematode
+tremble
+trembled
+trembler
+trembles
+trembling
+tremendous
+tremendously
+tremolite
+tremolo
+tremor
+tremors
+tremulous
+tremulously
+tremulousness
+trench
+trenchancy
+trenchant
+trenchantly
+trencher
+trencher-cap
+trencher-man
+trencherman
+trenches
+trend
+trendily
+trendiness
+trending
+trends
+trendy
+Trenton
+trepan
+trepidation
+treshing
+trespass
+trespassed
+trespasser
+trespassers
+trespasses
+tress
+tresses
+tresspass
+tressy
+trestle
+Trevelyan
+trevet
+trey
+triad
+triage
+trial
+trials
+triangle
+triangles
+triangular
+triangularly
+triangulate
+triangulation
+Triangulum
+Trianon
+Triassic
+triathlon
+tribal
+tribalism
+tribe
+tribes
+tribesman
+tribeswoman
+tribulation
+tribunal
+tribunals
+tribune
+tribunes
+tributary
+tribute
+tributes
+tricar
+trice
+tricentennial
+triceps
+tricessimo-secondo
+tricessimo-sexto
+trichina
+trichinae
+Trichinella
+trichinosis
+trichotomy
+trick
+tricked
+trickery
+trickier
+trickiest
+trickily
+trickiness
+tricking
+trickish
+trickle
+trickle-down
+trickled
+trickles
+trickling
+tricks
+trickster
+tricksy
+tricky
+tricolor
+tricolour
+tricoteen
+tricycle
+trident
+tried
+triennial
+triennially
+trier
+Triers
+tries
+Trieste
+trifid
+trifle
+trifler
+trifles
+trifling
+trifocals
+trig
+trigger
+trigger-happy
+triggered
+triggering
+triggers
+triglot
+triglyceride
+trigonal
+trigonometric
+trigonometrical
+trigonometry
+trigram
+trigrams
+trihedral
+trike
+trilateral
+trilby
+trilingual
+trill
+trilled
+trillion
+trillions
+trillionth
+trillium
+trilobite
+trilogy
+trim
+trimaran
+Trimble
+trimensual
+trimester
+trimly
+trimmed
+trimmer
+trimmest
+trimming
+trimmings
+trimness
+trimonthly
+trims
+trinal
+trine
+Trinidad
+triniscope
+trinitrotoluene
+trinity
+trinket
+trinkets
+trio
+triode
+trip
+tripartite
+tripe
+tripe-house
+tripes
+triplane
+triple
+tripled
+triples
+triplet
+triplets
+Triplett
+triplex
+triplicate
+triplicity
+tripling
+triply
+tripod
+tripodal
+Tripoli
+tripper
+tripping
+trips
+triptych
+triquetrous
+trireme
+trisect
+trisection
+Tristan
+trite
+tritely
+triteness
+tritium
+triturate
+triumph
+triumphal
+triumphant
+triumphantly
+triumphed
+triumphing
+triumphs
+triumvir
+triumvirate
+triune
+trivalent
+trivet
+trivia
+trivial
+trivialities
+triviality
+trivialization
+trivialize
+trivially
+trivium
+triweekly
+trizone
+troat
+Trobriand
+trochaic
+trochee
+trod
+trodden
+troglodyte
+troika
+Trojan
+troll
+trolley
+trolley-bus
+trolley-line
+trolleybus
+trolleys
+trollop
+trolls
+trolly
+trombone
+trombonist
+tromp
+troop
+troop-carrier
+troop-ship
+trooper
+troopers
+troops
+troopship
+trope
+Tropez
+trophies
+trophy
+tropic
+tropical
+tropically
+tropics
+tropism
+troposphere
+trot
+troth
+trots
+Trotsky
+trotter
+trotyl
+troubadour
+trouble
+trouble-free
+trouble-shooter
+troubled
+troublemaker
+troublemakers
+troubles
+troubleshoot
+troubleshooter
+troubleshooters
+troubleshooting
+troubleshoots
+troublesome
+troublesomely
+troubling
+troublous
+trough
+trounce
+trouncer
+troupe
+trouper
+trouser
+trousers
+trousseau
+trousseaux
+trout
+Troutman
+trove
+trow
+trowel
+trowels
+Troy
+truancy
+truant
+truants
+truce
+truck
+trucked
+Truckee
+trucker
+truckers
+trucking
+truckle
+truckler
+truckload
+trucks
+truculence
+truculent
+truculently
+Trudeau
+trudge
+trudged
+Trudy
+true
+true-blue
+true-born
+true-heartedness
+true-life
+true-love
+trued
+truelove
+truer
+trues
+truest
+truffle
+truing
+truism
+truisms
+Trujillo
+Truk
+trull
+truly
+Truman
+Trumbull
+trump
+trumped
+trumped-up
+trumpery
+trumpet
+trumpeter
+trumps
+truncate
+truncated
+truncates
+truncating
+truncation
+truncations
+truncheon
+trundle
+trundler
+trunk
+trunk-call
+trunk-drawers
+trunk-hose
+trunk-road
+trunks
+trunnion
+truss
+trust
+trusted
+trustee
+trustees
+trusteeship
+trustful
+trustfully
+trustfulness
+trusting
+trustingly
+trusts
+trustworthiness
+trustworthy
+trusty
+truth
+truthful
+truthfully
+truthfulness
+truths
+try
+trying
+tryingly
+tryout
+tryst
+tsar
+tsarina
+tsetse
+Tsingtao
+tsunami
+Tsunematsu
+tub
+tub-thumper
+tuba
+tubal
+tubby
+tube
+tubed
+tubeless
+tuber
+tubercle
+tubercular
+tuberculin
+tuberculosis
+tuberculous
+tuberose
+tuberous
+tubers
+tubes
+tubing
+Tubman
+tubs
+tubular
+tubule
+tuck
+tuck-net
+tucked
+tucker
+tucking
+tucks
+Tucson
+Tudor
+Tue
+Tues
+Tuesday
+Tuesdays
+tuft
+tufted
+tufter
+tufts
+tug
+tug-of-war
+tugboat
+tugs
+tugs-of-war
+tuition
+Tulane
+tularemia
+tulip
+tulips
+tulle
+Tulsa
+tumble
+tumble-down
+tumbled
+tumbledown
+tumbler
+tumblers
+tumbles
+tumbleweed
+tumbling
+tumbrel
+tumbril
+tumefy
+tumescence
+tumescent
+tumid
+tumidity
+tumify
+tummy
+tumor
+tumorous
+tumors
+tumour
+tumult
+tumults
+tumultuary
+tumultuous
+tumultuously
+tumulus
+tun
+tuna
+tunability
+tunable
+tundra
+tune
+tune-up
+tuned
+tuneful
+tunefully
+tunefulness
+tuneless
+tunelessly
+tuner
+tuners
+tunes
+tuneup
+tungsten
+tunic
+tunics
+tuning
+tuning-fork
+Tunis
+Tunisia
+Tunisian
+tunnel
+tunneled
+tunneler
+tunneller
+tunnels
+tunny
+tup
+tuple
+tuples
+Tupperware
+turban
+turbans
+turbary
+turbid
+turbidity
+turbine
+turbo
+turbocharger
+turbofan
+turbojet
+turboprop
+turbot
+turbulence
+turbulency
+turbulent
+turbulently
+Turcoman
+turd
+tureen
+turf
+turfy
+turgid
+turgidity
+turgidly
+Turin
+Turing
+Turk
+turkey
+turkey-hen
+turkeys
+Turkic
+Turkish
+Turkize
+Turkizes
+Turkmenistan
+turmeric
+turmoil
+turmoils
+turn
+turn-back
+turn-bench
+turn-buckle
+turn-coat
+turn-off
+turn-on
+turn-out
+turn-pike
+turn-screw
+turn-table
+turn-ups
+turnable
+turnabout
+turnaround
+turnbuckle
+turncoat
+turned
+turned-up
+turner
+turners
+turnery
+turning
+turning-in
+turning-lathe
+turning-point
+turning-table
+turnings
+turnip
+turnip-radish
+turnips
+turnkey
+turnoff
+turnout
+turnover
+turnpike
+turns
+turnstile
+turntable
+turpentine
+turpitude
+turquoise
+turret
+turreted
+turrets
+turtle
+turtle-soup
+turtledove
+turtleneck
+turtlenecked
+turtles
+turves
+Tuscaloosa
+Tuscan
+Tuscanize
+Tuscanizes
+Tuscany
+Tuscarora
+tush
+tusk
+tusked
+Tuskegee
+tussle
+tussock
+tussocky
+tut
+tut-tut
+Tutankhamen
+Tutankhamon
+Tutankhamun
+tutelage
+tutelary
+Tutenkhamon
+tutor
+tutored
+tutorial
+tutorials
+tutoring
+tutors
+tutorship
+tutti
+tutti-frutti
+Tuttle
+tutu
+Tuvalu
+tux
+tuxedo
+tuyere
+TV
+TVA
+twaddle
+twaddler
+twain
+twang
+twangy
+twas
+twat
+tweak
+tweed
+tweeds
+tweedy
+tween
+tweet
+tweeter
+tweezers
+twelfth
+Twelfth-night
+twelve
+twelvemonth
+twelves
+twenties
+twentieth
+twenty
+twenty-eight
+twenty-first
+twenty-one
+twenty-twenty
+twerp
+twice
+twiddle
+twiddly
+twig
+twiggy
+twigs
+twilight
+twilights
+twilit
+twill
+twilled
+twin
+twin-lead
+twin-set
+twin-size
+twin-town
+twine
+twined
+twiner
+twinge
+twinight
+twinkle
+twinkled
+twinkler
+twinkles
+twinkling
+twinkly
+twins
+twirl
+twirled
+twirler
+twirling
+twirls
+twirly
+twist
+twisted
+twister
+twisters
+twisting
+twists
+twit
+twitch
+twitched
+twitching
+twitchy
+twitter
+twittered
+twittering
+twittery
+twittle-twattle
+twixt
+two
+two-bedded
+two-bit
+two-by-four
+two-cleft
+two-column
+two-dimensional
+two-edged
+two-faced
+two-facedly
+two-fisted
+two-handed
+two-part
+two-phase
+two-piece
+two-ply
+two-seater
+two-seaters
+two-sided
+two-speed
+two-stage
+two-step
+two-storied
+two-time
+two-timer
+two-tone
+two-tongued
+two-way
+twofer
+twofold
+Twombly
+twopence
+twopenny
+twos
+twosome
+TWX
+TX
+Tyburn
+tycoon
+tying
+tyke
+Tyler
+Tylerize
+Tylerizes
+TYMNET
+tympan
+tympana
+tympani
+tympanist
+tympanitis
+tympanum
+Tyndall
+type
+type-bar
+type-facsimile
+type-setting
+typecast
+typed
+typeface
+typehead
+typeout
+types
+typescript
+typeset
+typesetter
+typesetting
+typewrite
+typewriter
+typewriters
+typewriting
+typewritten
+typewrote
+typhoid
+Typhon
+typhoon
+typhus
+typical
+typicality
+typically
+typicalness
+typification
+typified
+typifies
+typify
+typifying
+typing
+typist
+typists
+typo
+typographer
+typographic
+typographical
+typographically
+typography
+typology
+typotron
+tyrannic
+tyrannical
+tyrannically
+tyrannize
+tyrannizer
+tyrannosaur
+tyrannous
+tyranny
+tyrant
+tyrants
+tyre
+tyro
+Tyrol
+Tyrolean
+Tyson
+tzar
+tzarina
+Tzeltal
+Tzigane
+tzimmes
+U-boat
+U-turn
+UAD
+UADPS
+UAP
+UAR
+UAW
+UBC
+ubiquitous
+ubiquitously
+ubiquity
+UCC
+Udall
+UDC
+udder
+Ufa
+ufologist
+ufology
+Uganda
+Ugandan
+ugh
+ugh!
+uglier
+ugliest
+uglify
+ugliness
+ugly
+uh
+uh-huh
+uh-uh
+UHF
+uhlan
+UK
+ukase
+ukelele
+Ukraine
+Ukrainian
+Ukrainians
+ukulele
+UL
+Ulan
+ulcer
+ulcerate
+ulcerated
+ulceration
+ulcerous
+ulcers
+Ullman
+ulna
+ulnae
+ulnar
+ULSI
+ulster
+ulterior
+ultimata
+ultimate
+ultimately
+ultimatum
+ultimo
+ultra
+ultraconservative
+ultracritical
+ultrafiche
+ultrahigh
+ultralight
+ultramarine
+ultramodern
+ultramontane
+ultranationalism
+ultrared
+ultrasonic
+ultrasonically
+ultrasound
+ultraviolet
+ululate
+ululation
+Ulysses
+um
+umbel
+umbelate
+umber
+umbilical
+umbilici
+umbilicus
+umbra
+umbrae
+umbrage
+umbrageous
+umbrella
+umbrella-stand
+umbrellas
+Umbrian
+umiak
+umlaut
+ump
+umpire
+umpires
+umpteen
+umpteenth
+UN
+un-
+un-American
+un-fold
+un-marxian
+unabashed
+unabashedly
+unabated
+unabbreviated
+unabetted
+unable
+unabridged
+unaccented
+unacceptability
+unacceptable
+unacceptably
+unaccommodating
+unaccompanied
+unaccompany
+unaccomplished
+unaccountable
+unaccountably
+unaccounted
+unaccounted-for
+unaccredited
+unaccustomed
+unachievable
+unacknowledged
+unacquainted
+unadorned
+unadulterated
+unadventurous
+unadvertised
+unadvised
+unadvisedly
+unaesthetic
+unaesthetically
+unaffected
+unaffectedly
+unaffectedness
+unaffiliated
+unafraid
+unaided
+unaiming
+unalienability
+unalienable
+unaligned
+unalike
+unallowable
+unalloyed
+unalterable
+unalterably
+unaltered
+unambiguous
+unambiguously
+unambitious
+unanalyzable
+unanimity
+unanimous
+unanimously
+unannounced
+unanswerable
+unanswered
+unanticipated
+unapologetic
+unapparent
+unappealing
+unappealingly
+unappetizing
+unappreciated
+unappreciative
+unapproachable
+unappropriated
+unapprove
+unapproved
+unarguable
+unarguably
+unarm
+unarmed
+unarmored
+unarrest
+unary
+unashamed
+unashamedly
+unasked
+unassailable
+unassertive
+unassigned
+unassisted
+unassuming
+unassumingly
+unattached
+unattackable
+unattainability
+unattainable
+unattended
+unattested
+unattractive
+unattractively
+unauthentic
+unauthorized
+unavailability
+unavailable
+unavailing
+unavailingly
+unavoidable
+unavoidably
+unavoided
+unaware
+unawareness
+unawares
+unbacked
+unbailable
+unbaked
+unbalanced
+unballasted
+unbaptized
+unbar
+unbear
+unbearable
+unbearably
+unbearing
+unbeatable
+unbeaten
+unbecoming
+unbecomingly
+unbedded
+unbefriended
+unbeknown
+unbeknownst
+unbelief
+unbelievable
+unbelievably
+unbeliever
+unbelieving
+unbelt
+unbend
+unbending
+unbent
+unbiased
+unbiassed
+unbid
+unbidden
+unbind
+unbitted
+unblamable
+unblank
+unbleached
+unblemished
+unblinking
+unblock
+unblocked
+unblocking
+unblocks
+unblushing
+unblushingly
+unbodied
+unbolt
+unbolted
+unboned
+unbonneted
+unborn
+unbosom
+unbound
+unbounded
+unbowed
+unbowel
+unbrace
+unbraid
+unbrake
+unbreakable
+unbred
+unbribable
+unbridle
+unbridled
+unbroken
+unbruised
+unbuckle
+unbudget
+unbuffered
+unbuild
+unburden
+unburrow
+unbusied
+unbutton
+uncage
+uncalled
+uncalled-for
+uncancelled
+uncannily
+uncanny
+uncap
+uncapitalized
+uncared-for
+uncaring
+uncarpeted
+uncase
+uncatalog
+uncaught
+unceasing
+unceasingly
+uncensored
+unceremonious
+unceremoniously
+uncertain
+uncertainly
+uncertainties
+uncertainty
+unchain
+unchallenged
+unchangeable
+unchanged
+unchanging
+unchaperoned
+uncharacteristic
+uncharacteristically
+uncharge
+uncharged
+uncharitable
+uncharitably
+uncharted
+unchaste
+unchasteness
+unchecked
+unchristian
+unchurch
+uncial
+unciform
+uncircumcised
+uncivil
+uncivilised
+uncivilized
+uncivilly
+unclad
+unclaimed
+unclamp
+unclasp
+unclassified
+uncle
+unclean
+uncleaned
+uncleanliness
+uncleanly
+uncleanness
+unclear
+uncleared
+unclench
+uncles
+uncloak
+unclog
+unclose
+unclosed
+unclothe
+unclothed
+unclouded
+unclutch
+uncluttered
+unco
+uncoil
+uncollected
+uncolored
+uncombed
+uncombined
+uncomfortable
+uncomfortableness
+uncomfortably
+uncommitted
+uncommon
+uncommonly
+uncommonness
+uncommunicative
+uncompensated
+uncomplaining
+uncomplainingly
+uncompleted
+uncomplicated
+uncomplimentary
+uncompounded
+uncomprehending
+uncomprehendingly
+uncompromising
+uncompromisingly
+uncomputable
+unconcealed
+unconcern
+unconcerned
+unconcernedly
+unconditional
+unconditionally
+unconditioned
+unconfined
+unconfirmed
+unconformable
+uncongenial
+unconnected
+unconquerable
+unconquered
+unconscientious
+unconscientiously
+unconscionable
+unconscionably
+unconscious
+unconsciously
+unconsciousness
+unconsecrated
+unconsidered
+unconsolidated
+unconstant
+unconstitutional
+unconstitutionality
+unconstitutionally
+unconstrained
+unconsumed
+unconsummated
+uncontaminated
+uncontested
+uncontrollability
+uncontrollable
+uncontrollably
+uncontrolled
+unconventional
+unconventionality
+unconventionally
+unconverted
+unconvinced
+unconvincing
+unconvincingly
+uncooked
+uncool
+uncooperative
+uncoordinated
+uncord
+uncork
+uncorrectable
+uncorrected
+uncorroborated
+uncountable
+uncountably
+uncounted
+uncouple
+uncoupled
+uncouth
+uncouthly
+uncover
+uncovered
+uncovering
+uncovers
+uncreate
+uncritical
+uncritically
+uncross
+uncrossable
+uncrowded
+uncrown
+uncrowned
+unction
+unctuosity
+unctuous
+unctuously
+unctuousness
+uncultivated
+uncultured
+uncurb
+uncured
+uncurl
+uncustomary
+uncut
+undamaged
+undated
+undaunted
+undauntedly
+undeceive
+undecidable
+undecided
+undecipherable
+undeclared
+undecomposable
+undefeated
+undefended
+undefiled
+undefinability
+undefinable
+undefined
+undefrayed
+undeleted
+undemanding
+undemocratic
+undemonstrative
+undemonstratively
+undeniable
+undeniably
+undependable
+under
+under-
+under-developed
+under-done
+under-secretary
+under-the-counter
+under-the-table
+underachieve
+underachiever
+underact
+underage
+underarm
+underbelly
+underbid
+underbred
+underbridge
+underbrush
+underbuy
+undercarriage
+undercharge
+underclass
+underclassman
+underclothes
+underclothing
+undercoat
+undercoating
+undercool
+undercover
+undercroft
+undercurrent
+undercut
+underdeveloped
+underdevelopment
+underditch
+underdo
+underdog
+underdone
+underdrainage
+undereducate
+underemployed
+underemployment
+underestimate
+underestimated
+underestimates
+underestimating
+underestimation
+underexcitation
+underexpose
+underexposure
+underfed
+underfeed
+underfeeding
+underflow
+underflowed
+underflowing
+underflows
+underfoot
+underfur
+underfurnish
+undergarment
+undergo
+undergoes
+undergoing
+undergone
+undergraduate
+undergraduates
+underground
+undergrowth
+underhand
+underhanded
+underhandedly
+underhandedness
+underhung
+underlain
+underlay
+underlease
+underlet
+underlie
+underlies
+underline
+underlined
+underlines
+underling
+underlings
+underlining
+underlinings
+underlip
+underloaded
+underlying
+undermanned
+undermentioned
+undermine
+undermined
+undermines
+undermining
+undermost
+underneath
+undernourish
+undernourished
+undernourishment
+underpaid
+underpants
+underpart
+underpass
+underpay
+underpayment
+underpin
+underpinning
+underpinnings
+underplay
+underplayed
+underplaying
+underplays
+underplot
+underpopulated
+underpressure
+underprivileged
+underprize
+underproduction
+underprop
+underpunch
+underquote
+underrate
+underrun
+undersalted
+underscore
+underscored
+underscores
+undersea
+underseas
+undersecretary
+undersell
+underset
+undersexed
+undershirt
+undershoot
+undershorts
+undershot
+underside
+undersign
+undersigned
+undersize
+undersized
+underskirt
+undersold
+understaffed
+understamped
+understand
+understandability
+understandable
+understandably
+understanding
+understandingly
+understandings
+understands
+understate
+understated
+understatement
+understood
+understrapper
+understudy
+undertake
+undertaken
+undertaker
+undertaker's
+undertakers
+undertakes
+undertaking
+undertakings
+undertenant
+underthings
+undertone
+undertook
+undertow
+undertrain
+undervaluation
+undervalue
+undervest
+undervoltage
+underwater
+underway
+underwear
+underweight
+underwent
+underwhelm
+underwood
+underwork
+underworld
+underwrite
+underwriter
+underwriters
+underwrites
+underwriting
+underwritten
+underwrote
+undeserve
+undeserved
+undeservedly
+undeserving
+undesigning
+undesirability
+undesirable
+undesirably
+undesired
+undetectable
+undetected
+undetermined
+undeterred
+undeveloped
+undeviating
+undid
+undies
+undifferentiated
+undigested
+undignified
+undiluted
+undiminished
+undimmed
+undine
+undiplomatic
+undirected
+undiscerning
+undischarged
+undisciplined
+undisclosed
+undiscovered
+undiscriminating
+undisguised
+undismayed
+undisputed
+undissembled
+undissolved
+undistinguished
+undistributed
+undisturbed
+undivided
+undividedness
+undo
+undocumented
+undoes
+undoing
+undoings
+undomesticated
+undone
+undoubted
+undoubtedly
+undramatic
+undreamed
+undreamed-of
+undreamt
+undreamt-of
+undress
+undressed
+undresses
+undressing
+undried
+undrinkable
+undue
+undulant
+undulate
+undulation
+undulative
+unduly
+undying
+unearned
+unearth
+unearthliness
+unearthly
+unease
+uneasily
+uneasiness
+uneasy
+uneatable
+uneaten
+uneconomic
+uneconomical
+uneconomically
+unedifying
+unedited
+uneducated
+unembarrassed
+unembellished
+unemotional
+unemphatic
+unemployable
+unemployed
+unemployment
+unenclosed
+unencrypted
+unencumbered
+unending
+unendurable
+unenforced
+unEnglish
+unenlightened
+unenlightening
+unenterprising
+unenthusiastic
+unenviable
+unequal
+unequaled
+unequality
+unequalled
+unequally
+unequipped
+unequivocal
+unequivocally
+unerring
+unerringly
+unescapable
+UNESCO
+unessential
+unethical
+unethically
+unevaluated
+uneven
+unevenly
+unevenness
+uneventful
+uneventfully
+unexampled
+unexceptionable
+unexceptionably
+unexceptional
+unexceptionally
+unexcited
+unexciting
+unexcused
+unexpanded
+unexpected
+unexpectedly
+unexpectedness
+unexpired
+unexplain
+unexplained
+unexploited
+unexplored
+unexposed
+unexpressed
+unexpurgated
+unextended
+unfading
+unfailing
+unfailingly
+unfair
+unfairly
+unfairness
+unfaithful
+unfaithfully
+unfaithfulness
+unfaltering
+unfamiliar
+unfamiliarity
+unfamiliarly
+unfashionable
+unfashionably
+unfasten
+unfathomable
+unfathomably
+unfavorable
+unfavorably
+unfeasible
+unfeatured
+unfed
+unfeeling
+unfeelingly
+unfeigned
+unfeminine
+unfermented
+unfertilized
+unfetter
+unfettered
+unfiedged
+unfilled
+unfiltered
+unfinished
+unfit
+unfitness
+unfitting
+unfix
+unflagging
+unflaggingly
+unflappability
+unflappable
+unflappably
+unflattering
+unflavored
+unfledged
+unflinching
+unflinchingly
+unfocused
+unfold
+unfolded
+unfolding
+unfolds
+unforced
+unforeseeable
+unforeseen
+unforgeable
+unforgetable
+unforgettable
+unforgettably
+unforgivable
+unforgivably
+unforgiving
+unforgotten
+unformatted
+unformed
+unformulated
+unfortified
+unfortunate
+unfortunately
+unfortunates
+unfounded
+unframed
+unfreeze
+unfrequented
+unfriendliness
+unfriendly
+unfrock
+unfrocked
+unfroze
+unfrozen
+unfruitful
+unfulfilled
+unfunny
+unfurl
+unfurnished
+ungainliness
+ungainly
+ungallant
+ungear
+ungenerous
+ungenial
+ungentle
+ungentlemanly
+ungird
+unglue
+unglued
+ungodliness
+ungodly
+ungovernable
+ungoverned
+ungraceful
+ungracefully
+ungracious
+ungraciously
+ungraded
+ungrammatical
+ungrammatically
+ungrateful
+ungratefully
+ungratefulness
+ungrease
+ungrounded
+ungrudging
+unguarded
+unguent
+unguided
+ungulate
+unhallowed
+unhamper
+unhampered
+unhand
+unhandiness
+unhandsome
+unhandy
+unhang
+unhappier
+unhappiest
+unhappily
+unhappiness
+unhappy
+unhardened
+unharmed
+unharness
+unharvested
+unhat
+unhatched
+unhealed
+unhealthful
+unhealthily
+unhealthiness
+unhealthy
+unheard
+unheard-of
+unheated
+unheeded
+unhelpful
+unhelpfully
+unheralded
+unhesitating
+unhesitatingly
+unhinder
+unhindered
+unhinge
+unhinged
+unhistorical
+unhitch
+unholiness
+unholy
+unhood
+unhook
+unhoped
+unhoped-for
+unhorse
+unhouse
+unhuman
+unhurried
+unhurriedly
+unhurt
+unhusk
+uniaxial
+Unibus
+unicameral
+UNICEF
+unicellular
+unicorn
+unicorns
+unicycle
+unidentifiable
+unidentified
+unidiomatic
+unidirectional
+unidirectionality
+unidirectionally
+unific
+unification
+unifications
+unified
+unifier
+unifiers
+unifies
+uniform
+uniformalize
+uniformed
+uniformity
+uniformly
+uniforms
+unify
+unifying
+unilateral
+unilaterally
+unilingual
+uniliteral
+unilluminating
+unimaginable
+unimaginative
+unimaginatively
+unimpaired
+unimpeachable
+unimpeded
+unimplemented
+unimportant
+unimposing
+unimpressed
+unimpressive
+unimproved
+unincorporated
+unindented
+uninfected
+uninfluenced
+uninformative
+uninformed
+uninhabitable
+uninhabited
+uninhibited
+uninhibitedly
+uninitialized
+uninitiated
+uninjured
+uninspired
+uninspiring
+uninstructed
+uninsulated
+uninsured
+unintelligent
+unintelligible
+unintelligibly
+unintended
+unintentional
+unintentionally
+uninterested
+uninteresting
+uninterestingly
+uninterpreted
+uninterrupted
+uninterruptedly
+uninvited
+uninviting
+union
+unionism
+Unionist
+unionization
+unionize
+unionized
+unionizer
+unionizers
+unionizes
+unionizing
+unions
+uniphase
+UniPlus
+unipolar
+uniprocessing
+uniprocessor
+unipunch
+unique
+uniquely
+uniqueness
+Uniroyal
+unisex
+unisexual
+UNISIST
+UniSoft
+unison
+unit
+unitarian
+Unitarianism
+Unitarianize
+Unitarianizes
+Unitarians
+unitary
+unite
+united
+unitedly
+uniterm
+uniterming
+unites
+unities
+uniting
+unitize
+units
+unity
+Univac
+univalent
+univalve
+univalves
+universal
+universality
+universalize
+universally
+universals
+universe
+universes
+universities
+university
+unjoin
+unjoint
+unjust
+unjustifiable
+unjustifiably
+unjustified
+unjustly
+unkempt
+unkind
+unkindly
+unkindness
+unknit
+unknowable
+unknowing
+unknowingly
+unknown
+unknowns
+unlabeled
+unlabelled
+unlace
+unlade
+unladen
+unladylike
+unlatch
+unlawful
+unlawfully
+unlawfulness
+unlay
+unleaded
+unlearn
+unlearned
+unleash
+unleashed
+unleashes
+unleashing
+unleavened
+unless
+unlettered
+unlicensed
+unlighted
+unlikable
+unlike
+unlikelihood
+unlikeliness
+unlikely
+unlikeness
+unlimber
+unlimited
+unlined
+unlink
+unlinked
+unlinking
+unlinks
+unlisted
+unlit
+unlivable
+unload
+unloaded
+unloading
+unloads
+unlock
+unlocked
+unlocking
+unlocks
+unlooked-for
+unloose
+unloosen
+unlovable
+unloved
+unlovely
+unloving
+unluckily
+unluckiness
+unlucky
+unmachined
+unmade
+unmake
+unman
+unmanageable
+unmanageably
+unmanly
+unmanned
+unmannered
+unmannerly
+unmarked
+unmarketable
+unmarred
+unmarried
+unmask
+unmasked
+unmatched
+unmeaning
+unmeant
+unmeasured
+unmeet
+unmentionable
+unmentionables
+unmentioned
+unmerchantable
+unmerciful
+unmercifully
+unmerited
+unmindful
+unmistakable
+unmistakably
+unmitigated
+unmixed
+unmodified
+unmolested
+unmoor
+unmoral
+unmorality
+unmotivated
+unmount
+unmounted
+unmovable
+unmoved
+unmuffle
+unmusical
+unmuzzle
+unnail
+unnameable
+unnamed
+unnatural
+unnaturally
+unnaturalness
+unnecessarily
+unnecessary
+unneeded
+unnerve
+unnerved
+unnerves
+unnerving
+unnormalized
+unnoticeable
+unnoticed
+unnumbered
+UNO
+unobjectionable
+unobservable
+unobservant
+unobserved
+unobstructed
+unobtainable
+unobtrusive
+unobtrusively
+unobtrusiveness
+unoccupied
+unofficial
+unofficially
+unopened
+unoppased
+unopposed
+unordered
+unorganized
+unoriginal
+unorthodox
+unostentatious
+unowned
+unpack
+unpacked
+unpacking
+unpacks
+unpaid
+unpainted
+unpaired
+unpalatable
+unparalleled
+unparallelled
+unpardonable
+unpardonably
+unparsed
+unpasteurized
+unpatriotic
+unpaved
+unpeople
+unperceived
+unperceptive
+unperformed
+unperson
+unpersuaded
+unpersuasive
+unperturbed
+unpick
+unpin
+unplait
+unplanned
+unplanted
+unpleasant
+unpleasantly
+unpleasantness
+unpleasing
+unpledged
+unplug
+unplumbed
+unplume
+unpointed
+unpoised
+unpolished
+unpolitical
+unpolluted
+unpopular
+unpopularity
+unportioned
+unpractical
+unpracticed
+unpractised
+unprecedented
+unprecedentedly
+unpredictability
+unpredictable
+unpredictably
+unprejudiced
+unpremeditated
+unprepared
+unpreparedness
+unprepossessed
+unprepossessing
+unprescribed
+unpreserved
+unpressed
+unpretending
+unpretentious
+unpretentiously
+unpriced
+unprimed
+unprincipled
+unprintable
+unprinted
+unprized
+unprocessed
+unproductive
+unproductively
+unproductiveness
+unprofessional
+unprofessionally
+unprofitability
+unprofitable
+unprofitably
+unprojected
+unpromising
+unprompted
+unpronounceable
+unpropitious
+unprotected
+unprovability
+unprovable
+unprove
+unproved
+unproven
+unprovided
+unprovoked
+unpublished
+unpunished
+unqualified
+unqualifiedly
+unquenchable
+unquestionable
+unquestionably
+unquestioned
+unquestioning
+unquestioningly
+unquiet
+unquote
+unquoted
+unraised
+unravel
+unraveled
+unraveling
+unravels
+unreachable
+unread
+unreadable
+unready
+unreal
+unrealistic
+unrealistically
+unreality
+unrealized
+unreason
+unreasonable
+unreasonableness
+unreasonably
+unreasoning
+unrecognizable
+unrecognized
+unreconstructed
+unrecorded
+unredressed
+unreel
+unreeve
+unrefined
+unreformed
+unregarded
+unregenerate
+unregistered
+unregretted
+unregulated
+unrehearsed
+unreined
+unrelated
+unrelenting
+unrelentingly
+unreliability
+unreliable
+unreliably
+unrelieved
+unremarkable
+unremembered
+unremitting
+unremittingly
+unremunerative
+unrepaid
+unrepentant
+unreported
+unrepresentable
+unrepresentative
+unrepresented
+unrequited
+unresented
+unreserve
+unreserved
+unreservedly
+unresistant
+unresisted
+unresisting
+unresolved
+unresponsive
+unresponsively
+unresponsiveness
+unrest
+unrestrained
+unrestricted
+unrestrictedly
+unrestrictive
+unrewarded
+unrewarding
+unriddle
+unrighteous
+unrighteousness
+unrip
+unripe
+unripened
+unrivaled
+unrivalled
+unrivet
+unrobe
+unroll
+unrolled
+unrolling
+unrolls
+unromantic
+unroot
+unruffled
+unruliness
+unruly
+unsaddle
+unsafe
+unsafely
+unsaid
+unsalable
+unsalaried
+unsalted
+unsanctioned
+unsanitary
+unsatisfactorily
+unsatisfactory
+unsatisfiability
+unsatisfiable
+unsatisfied
+unsatisfying
+unsaturated
+unsaved
+unsavory
+unsavoury
+unsay
+unscalable
+unscale
+unscathed
+unscented
+unscheduled
+unschooled
+unscientific
+unscientifically
+unscramble
+unscratched
+unscreened
+unscrew
+unscripted
+unscrupulos
+unscrupulous
+unscrupulously
+unscrupulousness
+unseal
+unsealed
+unseam
+unsearchable
+unseasonable
+unseasonably
+unseasoned
+unseat
+unseaworthy
+unseeded
+unseeing
+unseeingly
+unseemliness
+unseemly
+unseen
+unsegmented
+unsegregated
+unselected
+unselfish
+unselfishly
+unselfishness
+unsent
+unsentimental
+unserviceable
+unsettle
+unsettled
+unsettling
+unsew
+unsewn
+unshackle
+unshakable
+unshakably
+unshakeable
+unshaken
+unshaped
+unshapely
+unshared
+unshaven
+unsheathe
+unsheltered
+unship
+unshod
+unshodden
+unshoe
+unshorn
+unshortened
+unshrinkable
+unshrinking
+unsifted
+unsighted
+unsightliness
+unsightly
+unsigned
+unsinkable
+unsized
+unskilful
+unskilled
+unskillful
+unskillfully
+unsleeping
+unsling
+unslotted
+unsmiling
+unsnap
+unsnarl
+unsociable
+unsocial
+unsoiled
+unsold
+unsolder
+unsolicited
+unsolvable
+unsolved
+unsophisticated
+unsorted
+unsought
+unsound
+unsoundly
+unsoundness
+unsparing
+unsparingly
+unspeak
+unspeakable
+unspeakably
+unspecific
+unspecified
+unspectacular
+unspent
+unspoiled
+unspoken
+unspool
+unsportsmanlike
+unspotted
+unstable
+unstably
+unstained
+unstamped
+unstate
+unstated
+unstatutable
+unsteadfast
+unsteadily
+unsteadiness
+unsteady
+unstick
+unstinted
+unstinting
+unstintingly
+unstop
+unstoppable
+unstrained
+unstrap
+unstressed
+unstring
+unstructured
+unstrung
+unstuck
+unstudied
+unsubstantial
+unsubstantiated
+unsuccessful
+unsuccessfully
+unsuccoured
+unsuitability
+unsuitable
+unsuitably
+unsuited
+unsullied
+unsung
+unsupervised
+unsupported
+unsure
+unsurpassable
+unsurpassed
+unsurprising
+unsurprisingly
+unsuspected
+unsuspecting
+unsuspectingly
+unsustainable
+unswathe
+unswayed
+unswear
+unsweetened
+unswerving
+unsymmetric
+unsymmetrical
+unsympathetic
+unsympathetically
+unsynchronized
+unsystematic
+unsystematically
+untack
+untactful
+untagged
+untainted
+untalented
+untamable
+untamed
+untangle
+untanned
+untapped
+untarnished
+untasted
+untaught
+unteach
+unteachable
+untenable
+untenanted
+untended
+unterminated
+untest
+untested
+unthinkable
+unthinkably
+unthinking
+unthinkingly
+unthought-of
+unthread
+unthrift
+unthrifty
+untidily
+untidiness
+untidy
+untie
+untied
+unties
+until
+untimeliness
+untimely
+untiring
+untiringly
+untitled
+unto
+untold
+untouchable
+untouchables
+untouched
+untoward
+untraceable
+untrained
+untrammeled
+untrammelled
+untranslatable
+untranslated
+untraveled
+untreated
+untried
+untrimmed
+untrod
+untroubled
+untrue
+untruly
+untrustworthy
+untruth
+untruthful
+untruthfully
+untruthfulness
+untuck
+untune
+unturn
+untutored
+untwine
+untwist
+untying
+untypical
+unum
+unusable
+unused
+unusual
+unusually
+unutterable
+unutterably
+unvaccinated
+unvalued
+unvaried
+unvarnished
+unvarying
+unveil
+unveiled
+unveiling
+unveils
+unventilated
+unverifiable
+unverified
+unversed
+unvoiced
+unvouched
+unwaited-for
+unwaited-on
+unwanted
+unwarily
+unwariness
+unwarlike
+unwarrantable
+unwarranted
+unwary
+unwashed
+unwatered
+unwavering
+unwaveringly
+unwearable
+unwearied
+unwearying
+unweave
+unwed
+unwedge
+unweighted
+unwelcome
+unwell
+unwholesome
+unwholesomeness
+unwieldiness
+unwieldy
+unwilling
+unwillingly
+unwillingness
+unwind
+unwinder
+unwinders
+unwinding
+unwinds
+unwise
+unwisely
+unwiser
+unwisest
+unwished
+unwitting
+unwittingly
+unwonted
+unworkable
+unworldliness
+unworldly
+unworn
+unworried
+unworthily
+unworthiness
+unworthy
+unwound
+unwoven
+unwrap
+unwrapped
+unwrapping
+unwraps
+unwreathe
+unwrinkle
+unwrinkled
+unwritten
+unwrought
+unyielding
+unyoke
+unzip
+up
+up-and-coming
+up-arrow
+up-front
+up-to-date
+up-to-the-minute
+upbeat
+upbraid
+upbringing
+UPC
+upcast
+upchuck
+upcoming
+upcountry
+update
+updated
+updater
+updates
+updating
+updraft
+upend
+upfront
+upgrade
+upgraded
+upgrades
+upgrading
+upheaval
+upheave
+upheld
+uphill
+uphold
+upholder
+upholders
+upholding
+upholds
+upholster
+upholstered
+upholsterer
+upholstering
+upholsters
+upholstery
+UPI
+upkeep
+upland
+uplands
+uplift
+uplifting
+uplink
+uplinks
+upload
+upmarket
+upon
+upper
+upper-class
+upper-cut
+uppercase
+upperclassman
+uppercut
+uppermost
+uppers
+uppish
+uppity
+upraise
+uprear
+upright
+uprightly
+uprightness
+uprise
+uprising
+uprisings
+upriver
+uproar
+uproarious
+uproariously
+uproot
+uprooted
+uprooting
+uproots
+upscale
+upset
+upsets
+upsetting
+upshot
+upshots
+upside
+upside-down
+upsilon
+upspacing
+upstage
+upstairs
+upstanding
+upstart
+upstate
+upstream
+upstroke
+upsurge
+upswing
+uptake
+upthrust
+uptight
+Upton
+uptown
+upturn
+upturned
+upturning
+upturns
+upward
+upwardly
+upwards
+upwind
+uracil
+Ural
+Urals
+Urania
+uranic
+uranium
+uranous
+Uranus
+urban
+Urbana
+urbane
+urbanely
+urbanity
+urbanization
+urbanize
+urbanologist
+urbanology
+urchin
+urchins
+Urdu
+urea
+uremia
+uremic
+ureter
+urethane
+urethra
+urethrae
+urethral
+urge
+urged
+urgency
+urgent
+urgently
+urges
+urging
+urgings
+Uri
+uric
+urinal
+urinalyses
+urinalysis
+urinary
+urinate
+urinated
+urinates
+urinating
+urination
+urine
+urinous
+Uris
+urn
+urns
+urogenital
+urological
+urologist
+urology
+Urquhart
+Ursa
+ursine
+Ursula
+Ursuline
+urticaceous
+urticaria
+urticate
+Uruguay
+Uruguay'a
+Uruguayan
+Uruguayans
+Urumqi
+us
+usability
+usable
+usably
+USAF
+usage
+usages
+usance
+USCG
+USDA
+use
+useability
+useable
+used
+useful
+usefully
+usefulness
+useless
+uselessly
+uselessness
+Usenet
+Usenix
+user
+user-controlled
+user-friendliness
+user-friendly
+user-oriented
+user-own
+user-to-user
+users
+uses
+usher
+ushered
+usherette
+ushering
+ushers
+USIA
+using
+USMC
+USN
+USO
+USP
+USPS
+USS
+USSR
+Ustinov
+usual
+usually
+usufruct
+usurer
+usurious
+usurp
+usurpation
+usurped
+usurper
+usury
+UT
+Utah
+Utahan
+Utahn
+utensil
+utensils
+uteri
+uterine
+uterus
+Utica
+utilitarian
+utilitarianism
+utilities
+utility
+utilization
+utilizations
+utilize
+utilized
+utilizes
+utilizing
+utmost
+utopia
+utopian
+Utopianize
+Utopianizes
+utopians
+Utrecht
+utricle
+utricular
+utter
+utterance
+utterances
+uttered
+uttering
+utterly
+uttermost
+utters
+UV
+uvula
+uvulae
+uvular
+uxoricide
+uxorious
+Uzbekistan
+Uzhgorod
+Uzhhorod
+Uzi
+V-chip
+V-day
+V-neck
+V-necked
+V/STOL
+vacancies
+vacancy
+vacant
+vacantly
+vacate
+vacated
+vacates
+vacating
+vacation
+vacationed
+vacationer
+vacationers
+vacationing
+vacationist
+vacations
+vaccinate
+vaccination
+vaccine
+vacillate
+vacillation
+vacua
+vacuity
+vacuo
+vacuole
+vacuous
+vacuously
+vacuousness
+vacuum
+vacuum-packed
+vacuumed
+vacuuming
+vademecum
+Vaduz
+vagabond
+vagabondage
+vagabonds
+vagaries
+vagarious
+vagary
+vagina
+vaginae
+vaginal
+vaginally
+vaginas
+vagrancy
+vagrant
+vagrantly
+vague
+vaguely
+vagueness
+vaguer
+vaguest
+vail
+vain
+vainglorious
+vaingloriously
+vainglory
+vainly
+valance
+vale
+valediction
+valedictorian
+valedictory
+valence
+valences
+Valencia
+valency
+valentine
+valentines
+valerian
+Valerie
+Valery
+vales
+valet
+valets
+valetudinarian
+valetudinarianism
+Valhalla
+valiance
+valiancy
+valiant
+valiantly
+valid
+validate
+validated
+validates
+validating
+validation
+validity
+validly
+validness
+valise
+Valium
+Valkyrie
+Vallejo
+Valletta
+valley
+valleys
+Valois
+valor
+valorize
+valorous
+valorously
+valour
+Valparaiso
+valuable
+valuables
+valuably
+valuate
+valuation
+valuations
+value
+value-forming
+value-in-use
+valued
+valueless
+valuer
+valuers
+values
+valuing
+valve
+valved
+valveless
+valves
+valvular
+vamoose
+Vamoose!
+vamp
+vampire
+van
+van-dragger
+vanadium
+Vance
+Vancement
+Vancouver
+vandal
+vandalise
+vandalism
+vandalize
+vandalized
+vandalizes
+vandalizing
+Vandenberg
+Vanderbilt
+Vanderburgh
+Vanderpoel
+Vandyke
+vane
+vanes
+Vanessa
+vanguard
+vanilla
+vanish
+vanished
+vanisher
+vanishes
+vanishing
+vanishingly
+vanities
+vanity
+vanity-bag
+vanquish
+vanquished
+vanquisher
+vanquishes
+vanquishing
+vans
+vantage
+vantage-ground
+Vanuatu
+vapid
+vapidity
+vapidly
+vapidness
+vapor
+vaporing
+vaporise
+vaporization
+vaporize
+vaporizer
+vaporous
+vapors
+vapory
+vapour
+vapoury
+vaquero
+Varanasi
+variability
+variable
+variableness
+variables
+variably
+Varian
+variance
+variances
+variant
+variantly
+variants
+variation
+variations
+varicolored
+varicose
+varied
+variegate
+variegated
+variegation
+varies
+varietal
+varieties
+variety
+variola
+various
+variously
+variplotter
+Varitype
+Varityper
+Varityping
+varlet
+varment
+varmint
+varnish
+varnisher
+varnishes
+varsity
+vary
+varying
+varyings
+vascular
+vase
+vasectomy
+vaseline
+vases
+vasomotor
+Vasquez
+vassal
+vassalage
+Vassar
+vast
+vaster
+vastest
+vastly
+vastness
+vat
+vatic
+vatical
+Vatican
+Vaticanization
+Vaticanizations
+Vaticanize
+Vaticanizes
+vaticinal
+vaticinate
+vaticination
+vats
+vaudeville
+vaudevillian
+Vaudois
+Vaughan
+Vaughn
+vault
+vaulted
+vaulter
+vaulting
+vaulting-horse
+vaults
+vaunt
+vaunted
+vaunty
+vavasour
+VAX
+VAXes
+VCR
+VD
+VDT
+VDU
+veal
+vector
+vectorization
+vectorizing
+vectors
+Veda
+vedette
+veejay
+veer
+veered
+veering
+veers
+veg
+Vega
+vegan
+Veganism
+Vegas
+vegetable
+vegetables
+vegetarian
+vegetarianism
+vegetarians
+vegetate
+vegetated
+vegetates
+vegetating
+vegetation
+vegetative
+veggie
+veggies
+vehemence
+vehemency
+vehement
+vehemently
+vehicle
+vehicles
+vehicular
+veil
+veiled
+veiling
+veils
+vein
+veined
+veining
+veins
+veiny
+velar
+velarize
+Velasquez
+Velazquez
+Velcro
+veld
+veldt
+Vella
+velleity
+vellum
+velocipede
+velocities
+velocity
+velour
+velours
+velum
+velvet
+velveteen
+velvety
+venal
+venality
+venally
+venatic
+venation
+vend
+vender
+vendetta
+vendible
+vendor
+vendors
+vendue
+veneer
+venerability
+venerable
+venerate
+veneration
+venerator
+venereal
+venery
+venesection
+Venetia
+Venetian
+Veneto
+Venezuela
+Venezuelan
+vengeance
+vengeful
+vengefully
+venial
+veniality
+Venice
+venireman
+venison
+Venn
+venom
+venomous
+venomously
+venose
+venous
+vent
+vented
+ventilate
+ventilated
+ventilates
+ventilating
+ventilation
+ventilator
+ventral
+ventricle
+ventricles
+ventricose
+ventricous
+ventricular
+ventriloquism
+ventriloquist
+ventriloquy
+vents
+Ventura
+venture
+ventured
+venturer
+venturers
+ventures
+venturesome
+venturesomely
+venturesomeness
+venturing
+venturings
+venturous
+venturously
+venturousness
+venue
+Venus
+Venusian
+Venusians
+Vera
+veracious
+veraciously
+veracity
+Veracruz
+veranda
+verandah
+verandas
+verb
+verbal
+verbalism
+verbalization
+verbalize
+verbalized
+verbalizes
+verbalizing
+verbally
+verbatim
+verbena
+verbiage
+verbose
+verbosely
+verbosity
+verboten
+verbs
+verdancy
+verdant
+verdantly
+Verde
+verderer
+Verdi
+verdict
+verdigris
+verdure
+verge
+verger
+verges
+Vergil
+Vergilian
+verifiability
+verifiable
+verification
+verifications
+verified
+verifier
+verifiers
+verifies
+verify
+verifying
+verily
+verisimilar
+verisimilitude
+veritable
+veritably
+verity
+verjuice
+Verlag
+Vermeer
+vermicelli
+vermicular
+vermiculate
+vermiculite
+vermiform
+vermilion
+vermillion
+vermin
+verminous
+Vermont
+Vermonter
+vermouth
+Vern
+Verna
+vernacular
+vernal
+Verne
+vernier
+Vernon
+Verona
+Veronese
+veronica
+verruca
+versa
+Versailles
+versal
+Versatec
+versatile
+versatility
+verse
+versed
+verses
+versification
+versifier
+versify
+versing
+version
+versions
+verso
+versus
+vert
+vertatur
+vertebra
+vertebrae
+vertebral
+vertebrate
+vertebrates
+vertex
+vertical
+vertically
+verticalness
+vertices
+vertiginous
+vertigo
+vervain
+verve
+very
+vesicate
+vesicatory
+vesicle
+vesicular
+vesiculate
+vesper
+vespertine
+vespiary
+Vespucci
+vessel
+vessels
+vest
+vest-pocket
+vestal
+vested
+vestibule
+vestige
+vestiges
+vestigial
+vestigially
+vesting
+vestment
+vestry
+vestry-keeper
+vestryman
+vests
+vesture
+Vesuvius
+vet
+vetch
+veteran
+veterans
+veterinarian
+veterinarians
+veterinary
+veto
+vetoed
+vetoer
+vetoes
+vetted
+vetting
+vex
+vexation
+vexatious
+vexatiously
+vexed
+vexes
+vexillary
+vexing
+VF
+VFW
+VG
+VGA
+VHF
+VHS
+VI
+via
+viability
+viable
+viably
+viaduct
+vial
+vials
+viand
+viands
+viatic
+viaticum
+vibe
+vibes
+vibraharp
+vibrancy
+vibrant
+vibrantly
+vibraphone
+vibraphonist
+vibrate
+vibrated
+vibrating
+vibration
+vibrations
+vibrato
+vibrator
+vibratory
+viburnum
+Vic
+vicar
+vicarage
+vicarious
+vicariously
+vicariousness
+vice
+vice-
+vice-admiral
+vice-chairman
+vice-gerent
+vice-presidency
+vice-president
+vice-rector
+vicegerent
+vicennial
+viceregal
+viceroy
+vices
+vicessimo-quatro
+Vichy
+vichyssoise
+vicinage
+vicinity
+vicious
+viciously
+viciousness
+vicissitude
+vicissitudes
+Vickers
+Vicksburg
+Vicky
+victim
+victimization
+victimize
+victimized
+victimizer
+victimizers
+victimizes
+victimizing
+victims
+victor
+Victoria
+Victorian
+Victorianism
+Victorianize
+Victorianizes
+Victorians
+victories
+victorious
+victoriously
+victors
+victory
+victress
+victrix
+Victrola
+victual
+victualer
+victuals
+vicuna
+Vida
+VIDAC
+Vidal
+videlicet
+video
+video-camera
+video-clip
+video-conference
+video-key-telephone
+videocassette
+videoconferencing
+videodisc
+videodisk
+videogram
+videograph
+videoize
+videophone
+videoplayer
+videorecorder
+videotape
+videotapes
+videotelephone
+videotelephony
+videoterminal
+videotex
+VIDITEL
+vie
+vied
+Vienna
+Viennese
+Vientiane
+vier
+vies
+Viet
+Vietcong
+Vietnam
+Vietnamese
+view
+view-finder
+viewable
+viewdata
+viewed
+viewer
+viewers
+viewfinder
+viewing
+viewless
+viewphone
+viewpoint
+viewpoints
+viewport
+views
+viewy
+vigesimal
+vigil
+vigilance
+vigilant
+vigilante
+vigilantes
+vigilantism
+vigilantist
+vigilantly
+vignette
+vignettes
+vignettist
+VIGOR
+vigorous
+vigorously
+vigour
+Viking
+Vikings
+Vikram
+Vila
+vile
+vilely
+vileness
+vilification
+vilifications
+vilified
+vilifies
+vilify
+vilifying
+villa
+village
+villager
+villagers
+villages
+villain
+villainage
+villainous
+villainously
+villainousness
+villains
+villainy
+villas
+villein
+villeinage
+villi
+villus
+Vilnius
+vim
+vinaceous
+vinaigrette
+Vince
+Vincent
+Vinci
+vincible
+vindicable
+vindicate
+vindicated
+vindication
+vindicator
+vindicatory
+vindictive
+vindictively
+vindictiveness
+vine
+vine-dresser
+vinegar
+vinegary
+vinery
+vines
+vineyard
+vineyards
+viniculture
+vino
+vinous
+Vinson
+vintage
+vintager
+vintner
+viny
+vinyl
+viol
+viola
+violable
+violaceous
+violate
+violated
+violates
+violating
+violation
+violations
+violator
+violators
+violence
+violent
+violently
+violet
+violets
+violin
+violinist
+violinists
+violins
+violist
+violoncellist
+violoncello
+violone
+VIP
+viper
+viperous
+vipers
+virago
+viral
+vireo
+virgate
+Virgil
+virgin
+virginal
+Virginia
+Virginian
+Virginians
+virginity
+virgins
+Virgo
+virgule
+virile
+virility
+virologist
+virology
+virtu
+virtual
+virtually
+virtue
+virtues
+virtuosi
+virtuosity
+virtuoso
+virtuosos
+virtuous
+virtuously
+virtuousness
+virulence
+virulent
+virulently
+virus
+viruses
+vis-a-vis
+vis--vis
+visa
+visage
+Visakhapatnam
+visas
+visavis
+viscera
+visceral
+viscerally
+viscid
+viscidity
+viscose
+viscosity
+viscount
+viscountcy
+viscountess
+viscounts
+viscous
+viscus
+vise
+Vishnu
+visibility
+visible
+visibly
+Visigoth
+Visigoths
+vision
+visional
+visionary
+visions
+visit
+visit-book
+visit-card
+visitant
+visitation
+visitations
+visited
+visiting
+visitor
+visitors
+visits
+visor
+visors
+vista
+vistas
+Vistula
+visual
+visualization
+visualize
+visualized
+visualizer
+visualizes
+visualizing
+visually
+vita
+vitae
+vital
+vitalism
+vitality
+vitalization
+vitalize
+vitally
+vitals
+vitamin
+vitelline
+vitellus
+vitiate
+vitiation
+viticulture
+viticulturist
+Vito
+vitreous
+vitric
+vitrifaction
+vitrification
+vitriform
+vitrify
+vitrine
+vitriol
+vitriolic
+vittles
+vituperate
+vituperation
+vituperative
+Vitus
+viva
+vivace
+vivacious
+vivaciously
+vivaciousness
+vivacity
+Vivaldi
+vivarium
+vivers
+Vivian
+vivid
+vividly
+vividness
+vivify
+viviparous
+vivisect
+vivisection
+vivisectional
+vivisectionist
+vixen
+vixenish
+vixenishly
+vizier
+vizir
+vizor
+VJ
+Vladimir
+Vladivostok
+VLF
+VLP
+VLSI
+VOA
+vocable
+vocabularies
+vocabulary
+vocal
+vocalic
+vocalism
+vocalist
+vocalization
+vocalize
+vocally
+vocals
+vocation
+vocational
+vocationally
+vocations
+vocative
+vociferate
+vociferation
+vociferous
+vociferously
+vociferousness
+vocoder
+vodka
+Vogel
+vogue
+voguish
+voice
+voice-over
+voiceband
+voiced
+voiceless
+voicelessly
+voicelessness
+voicer
+voicers
+voices
+voicing
+void
+voidable
+voided
+voider
+voiding
+voids
+voila
+voile
+vol.
+volant
+volatile
+volatilities
+volatility
+volatilize
+volcanic
+volcano
+volcanos
+vole
+Volga
+Volgograd
+Volhynia
+volitation
+volition
+volitional
+volitive
+Volkswagen
+Volkswagens
+volley
+volley-ball
+volleyball
+volleyballs
+volplane
+Volstead
+volt
+volt-ampere
+Volta
+voltage
+voltages
+voltaic
+Voltaire
+volte-face
+Volterra
+voltmeter
+volts
+volture
+volubility
+voluble
+volubly
+volume
+volume-control
+volume-produce
+volumed
+volumen
+volumes
+voluminosity
+voluminous
+voluminously
+voluminousness
+voluntarily
+voluntarism
+voluntary
+volunteer
+volunteered
+volunteering
+volunteers
+voluptuary
+voluptuous
+voluptuously
+voluptuousness
+volute
+volution
+Volvo
+vomit
+vomited
+vomiting
+vomitive
+vomitory
+vomits
+voodoo
+voodooism
+voracious
+voraciously
+voraciousness
+voracity
+Voronezh
+vortex
+vortices
+Voss
+votaress
+votarist
+votary
+vote
+voted
+voter
+voters
+votes
+voting
+votive
+votress
+vouch
+voucher
+vouchers
+vouches
+vouching
+vouchsafe
+vouchsafed
+Vought
+vow
+vowed
+vowel
+vowels
+vower
+vowing
+vows
+voyage
+voyaged
+voyager
+voyagers
+voyages
+voyageur
+voyaging
+voyagings
+voyeur
+voyeurism
+voyeuristic
+VP
+Vreeland
+VTOL
+VTR
+Vulcan
+Vulcanism
+vulcanite
+vulcanization
+vulcanize
+vulgar
+vulgarian
+vulgarism
+vulgarity
+vulgarization
+vulgarize
+vulgarizer
+vulgarly
+Vulgate
+vulnerabilities
+vulnerability
+vulnerable
+vulnerably
+vulnerary
+vulpine
+vulture
+vultures
+vulturine
+vulturous
+vulva
+vulvae
+vum
+vying
+w/
+w/o
+WA
+Waals
+Wabash
+wabble
+wack
+Wacke
+wackiness
+wacky
+Waco
+wad
+wadding
+waddle
+wade
+waded
+wader
+waders
+wades
+wadi
+wading
+wads
+Wadsworth
+wafer
+wafer-thin
+wafers
+waffle
+waffler
+waffles
+waft
+wag
+wage
+wage-earner
+wage-scale
+waged
+wager
+wagerer
+wagers
+wages
+waggery
+waggish
+waggishly
+waggishness
+waggle
+waggon
+waging
+Wagner
+Wagnerian
+Wagnerize
+Wagnerizes
+wagon
+wagoner
+wagons
+wags
+wagtail
+Wahl
+waif
+wail
+wailed
+wailer
+wailing
+wails
+wain
+wainscot
+wainscoting
+wainscotting
+waist
+waist-belt
+waist-deep
+waist-high
+waistband
+waistcoat
+waistcoats
+waistline
+waists
+wait
+wait!
+Waite
+waited
+waiter
+waiters
+waiting
+waiting-boy
+waiting-gentleman
+waiting-girl
+waiting-maid
+waiting-man
+waiting-room
+waiting-woman
+waitlist
+waitperson
+waitress
+waitresses
+waits
+waive
+waived
+waiver
+waiverable
+waives
+waiving
+wake
+waked
+Wakefield
+wakeful
+wakefully
+wakefulness
+waken
+wakened
+wakening
+wakes
+wakeup
+waking
+Walbridge
+Walcott
+Walden
+Waldensian
+Waldo
+Waldorf
+Waldron
+wale
+Wales
+Walford
+Walgreen
+walk
+walk-in
+walk-on
+walk-through
+walk-up
+walkaway
+walked
+walker
+walkers
+walkie-talkie
+walking
+walking-out
+walking-papers
+walking-stick
+walking-ticket
+walking-tour
+walkman
+walkout
+walkover
+walks
+walkway
+wall
+wall-face
+wall-newspaper
+wall-paper
+wall-socket
+wall-to-wall
+wallaby
+Wallace
+Wallachia
+wallboard
+walled
+Wallenstein
+Waller
+wallet
+wallets
+walleye
+walleyed
+wallflower
+wallflowers
+walling
+Wallis
+Wallonia
+Walloon
+wallop
+walloping
+wallow
+wallowed
+wallowing
+wallows
+wallpaper
+walls
+walnut
+walnuts
+Walpole
+walrus
+walruses
+Walsh
+Walt
+Walter
+Walters
+Waltham
+Walton
+waltz
+waltzed
+waltzer
+waltzes
+waltzing
+Walworth
+wampum
+wan
+wand
+wander
+wandered
+wanderer
+wanderers
+wandering
+wanderings
+wanderlust
+wanders
+wane
+waned
+wanes
+Wang
+wangle
+wangler
+waning
+wanly
+wanna
+wanna-be
+wannabe
+wanness
+Wansee
+Wansley
+want
+wantage
+wanted
+wanting
+wanton
+wantonly
+wantonness
+wants
+Wapato
+wapiti
+wapped
+Wappinger
+war
+war-cry
+war-horse
+war-monger
+war-ship
+war-torn
+war-whoop
+warble
+warbled
+warbler
+warbles
+warbling
+warbonnet
+Warburton
+ward
+warden
+wardens
+wardenship
+warder
+wardress
+wardrobe
+wardrobes
+wardroom
+wards
+wardship
+ware
+warehouse
+warehouseman
+warehouses
+warehousing
+wares
+warfare
+Warfield
+warhead
+warhorse
+warily
+wariness
+Waring
+warlike
+warlock
+warlord
+warm
+warm-blooded
+warm-bloodedness
+warm-hearted
+warm-heartedly
+warm-heartedness
+warm-up
+warmblooded
+warmed
+warmed-over
+warmer
+warmers
+warmest
+warmhearted
+warmheartedness
+warming
+warmish
+warmly
+warmness
+warmonger
+warmongering
+warms
+warmth
+warmup
+warn
+warned
+warner
+warning
+warningly
+warnings
+Warnock
+warns
+warp
+warpath
+warped
+warping
+warplane
+warps
+warrant
+warrantable
+warranted
+warrantee
+warranter
+warranties
+warranting
+warrantor
+warrants
+warranty
+warred
+warren
+warring
+warrior
+warriors
+wars
+Warsaw
+warship
+warships
+wart
+warthog
+wartime
+warts
+warty
+Warwick
+wary
+was
+wash
+wash-and-wear
+wash-basin
+wash-house
+wash-out
+wash-pot
+wash-room
+wash-tub
+washable
+washbasin
+washboard
+washbowl
+Washburn
+washcloth
+washed
+washed-out
+washed-up
+washer
+washer-woman
+washer-wringer
+washers
+washerwoman
+washes
+washing
+washing-blue
+washing-machine
+washing-powder
+washing-stand
+washing-tub
+washings
+Washington
+Washingtonian
+Washoe
+washout
+washrag
+washroom
+washstand
+washtub
+washwoman
+washy
+wasn't
+wasp
+waspish
+waspishly
+waspishness
+wasps
+wassail
+Wasserman
+wast
+wastage
+waste
+waste-good
+waste-paper-basket
+waste-water
+wastebasket
+wasted
+wasteful
+wastefully
+wastefulness
+wasteland
+wastepaper
+waster
+wastes
+wasting
+wastrel
+wastthrift
+Watanabe
+watch
+Watch!
+watch-case
+watch-dog
+watch-glass
+watch-hand
+watch-house
+watch-light
+watch-maker
+watch-word
+watchband
+watchdog
+watched
+watcher
+watchers
+watches
+watchful
+watchfully
+watchfulness
+watching
+watchings
+watchmaker
+watchmaking
+watchman
+watchtower
+watchword
+watchwords
+water
+water-bottle
+water-cart
+water-cask
+water-closet
+water-colour
+water-compress
+water-conduit
+water-course
+water-cress
+water-face
+water-gang
+water-gate
+water-gauge
+water-glass
+water-heater
+water-hen
+water-hose
+water-level
+water-lily
+water-line
+water-lock
+water-main
+water-melon
+water-mill
+water-plane
+water-power
+water-proof
+water-rat
+water-repellent
+water-seal
+water-shoot
+water-ski
+water-skier
+water-skiing
+water-station
+water-supply
+water-tower
+water-trough
+water-tub
+water-wave
+water-way
+water-wheel
+water-works
+waterbed
+waterbird
+waterborne
+Waterbury
+watercolor
+watercourse
+watercraft
+watercress
+watered
+watered-down
+waterer
+waterfall
+waterfalls
+waterfowl
+waterfront
+Watergate
+waterhole
+Waterhouse
+wateriness
+watering
+watering-place
+waterings
+waterlily
+waterline
+waterlog
+waterlogged
+Waterloo
+Waterman
+watermark
+watermelon
+watermill
+waterpower
+waterproof
+waterproofing
+watershed
+waterside
+waterspout
+watertight
+Watertown
+waterway
+waterways
+waterwheel
+waterworks
+watery
+Watkins
+WATS
+Watson
+watt
+wattage
+Wattenberg
+Watterson
+wattle
+wattled
+wattles
+Watts
+Waukesha
+waul
+Waunona
+Waupaca
+Waupun
+Wausau
+Wauwatosa
+wave
+wave-breaks
+waved
+waveform
+waveforms
+wavefront
+wavefronts
+waveguide
+waveguides
+Waveland
+wavelength
+wavelengths
+waveless
+wavelet
+wavelike
+waver
+waverer
+waveringly
+wavers
+waves
+waviness
+waving
+wavy
+wax
+wax-candle
+wax-cloth
+wax-paper
+waxed
+waxen
+waxer
+waxers
+waxes
+waxiness
+waxing
+waxwing
+waxwork
+waxworks
+waxy
+way
+way-bill
+way-bread
+Way-in
+way-out
+wayfarer
+wayfaring
+waylaid
+waylay
+waylayer
+wayless
+Wayne
+Waynesboro
+ways
+wayside
+wayward
+waywardly
+waywardness
+WC
+we
+we'd
+we'll
+we're
+we've
+weak
+weak-kneed
+weak-minded
+weaken
+weakened
+weakener
+weakening
+weakens
+weaker
+weakest
+weakfish
+weakling
+weakly
+weakness
+weaknesses
+weal
+weald
+wealth
+wealthiest
+wealthiness
+wealths
+wealthy
+wean
+weaned
+weaning
+weapon
+weaponless
+weaponry
+weapons
+wear
+wearable
+wearer
+wearied
+wearier
+weariest
+wearily
+weariness
+wearing
+wearisome
+wearisomely
+wears
+weary
+wearying
+weasel
+weasel-word
+weaselly
+weasels
+weather
+weather-beaten
+weather-bound
+weather-cock
+weather-glass
+weather-moulding
+weather-station
+weather-vane
+weather-worn
+weathercock
+weathercocks
+weathered
+Weatherford
+weathering
+weatherize
+weatherman
+weatherperson
+weatherproof
+weathers
+weatherstrip
+weatherstripping
+weatherwear
+weave
+weaver
+weaves
+weaving
+weaving-mill
+weazen
+web
+web-beam
+web-footed
+web-offset
+web-toed
+Webb
+webbed
+Webber
+webbing
+webfeet
+webfoot
+webmaster
+webs
+website
+Webster
+Websterville
+wed
+wedded
+wedding
+weddings
+wedge
+wedged
+wedges
+wedgie
+wedging
+wedlock
+Wednesday
+Wednesdays
+weds
+wee
+weed
+weeder
+weedery
+weeding
+weedless
+weeds
+weedy
+week
+week-end
+weekday
+weekend
+weekends
+weekly
+weeknight
+weeks
+ween
+weenie
+weeny
+weep
+weeper
+weeping
+weeps
+weepy
+weevil
+weft
+Wehr
+Wei
+Weibull
+Weider
+Weidman
+Weierstrass
+weigh
+weighed
+weighing
+weighings
+weighs
+weight
+weightage
+weighted
+weightily
+weightiness
+weighting
+weightless
+weightlessly
+weightlessness
+weightlifter
+weightlifting
+weights
+weighty
+Weinberg
+Weiner
+Weinstein
+weir
+weird
+weirdie
+weirdly
+weirdness
+weirdo
+weisenheim
+Weisenheimer
+Weiss
+Weissman
+Weissmuller
+Welcher
+Welches
+welcome
+welcome!
+welcomed
+welcomes
+welcoming
+weld
+weldable
+welded
+welder
+welding
+weldment
+Weldon
+welds
+Weldwood
+welfare
+welkin
+well
+well-
+well-adjusted
+well-advised
+well-aimed
+well-appointed
+well-baked
+well-balanced
+well-behaved
+well-being
+well-born
+well-bred
+well-bucket
+well-built
+well-conducted
+well-connected
+well-defined
+well-disposed
+well-doing
+well-done
+well-drain
+well-earned
+well-fed
+well-fixed
+well-founded
+well-groomed
+well-grounded
+well-heeled
+well-informed
+well-intentioned
+well-judged
+well-knit
+well-known
+well-made
+well-mannered
+well-meaning
+well-meant
+well-met
+well-nigh
+well-off
+well-oiled
+well-on
+well-ordered
+well-preserved
+well-read
+well-rounded
+well-seen
+well-spoken
+well-staircase
+well-thought-of
+well-timed
+well-to-do
+well-tried
+well-turned
+well-water
+well-wisher
+well-worn
+welladay
+welled
+Weller
+Welles
+Wellesley
+wellhead
+welling
+wellingtons
+Wellman
+wellness
+Wells
+wellspring
+Wellsville
+Welmers
+welsh
+welsher
+Welshman
+welt
+welter
+welterweight
+Welton
+wen
+Wenceslas
+wench
+wenches
+wend
+Wendell
+wendic
+wendish
+Wendy
+went
+Wentworth
+wept
+were
+weren't
+werewolf
+werewolves
+Werner
+Werther
+werwolf
+Wesley
+Wesleyan
+Wesson
+west
+westbound
+Westbrook
+Westchester
+westerly
+western
+westerner
+westerners
+westernization
+westernize
+westernmost
+Westfield
+Westhampton
+Westinghouse
+Westminster
+Westmore
+Weston
+Westphalia
+Westport
+westward
+westwards
+Westwood
+wet
+wet-head
+wet-nose
+wet-nurse
+wetback
+wether
+wetland
+wetlands
+wetly
+wetness
+wets
+wetted
+wetter
+wettest
+wetting
+Weyerhauser
+whack
+whacked
+whacker
+whacking
+whacks
+whacky
+whale
+whale-bone
+whale-calf
+whale-fin
+whale-oil
+whaleboat
+whalebone
+Whalen
+whaler
+whales
+whaling
+wham
+whammy
+whang
+wharf
+wharfage
+wharfinger
+Wharton
+wharves
+what
+what's
+whatchamacallit
+whatever
+Whatley
+whatnot
+whatsoever
+wheal
+wheat
+wheaten
+Wheatland
+Wheaton
+Wheatstone
+whee
+wheedle
+wheedler
+wheel
+wheel-barrow
+wheel-base
+wheel-centre
+wheel-chair
+wheel-crown
+wheel-gauge
+wheel-horse
+wheel-stretcher
+wheel-wright
+wheelbarrow
+wheelbase
+wheelchair
+wheeled
+wheeler
+wheeler-dealer
+wheelers
+wheelframe
+wheelhorse
+wheelhouse
+wheelie
+wheeling
+wheelings
+wheelman
+Wheelock
+wheels
+wheeltire
+wheeltyre
+wheelwright
+wheeze
+wheezily
+wheeziness
+wheezy
+Whelan
+whelk
+Wheller
+whelm
+whelp
+when
+whence
+whenever
+whensoever
+where
+where's
+whereabout
+whereabouts
+whereas
+whereat
+whereby
+wherefore
+wherein
+whereof
+whereon
+wheresoever
+whereto
+whereunto
+whereupon
+wherever
+wherewith
+wherewithal
+wherewithall
+wherry
+whet
+whether
+whetstone
+whew
+whey
+which
+whichever
+whichsoever
+whiff
+whiffit
+whiffle
+whiffletree
+whig
+while
+whilom
+whilst
+whim
+whim-wham
+whimper
+whimpered
+whimpering
+whimpers
+whims
+whimsey
+whimsical
+whimsicality
+whimsically
+whimsies
+whimsy
+whin
+whine
+whined
+whiner
+whines
+whinger
+whining
+whinny
+whiny
+whip
+whip-stitching
+whipcord
+whiplash
+Whippany
+whipped
+whipper
+whipper-snapper
+whippers
+whippersnapper
+whippet
+whipping
+whipping-boy
+whipping-top
+whippings
+Whipple
+whippletree
+whippoorwill
+whips
+whipsaw
+whipster
+whir
+whirl
+whirled
+whirligig
+whirling
+whirlpool
+whirlpools
+whirls
+whirlwind
+whirlybird
+whirr
+whirring
+whisk
+whisked
+whisker
+whiskered
+whiskers
+whiskery
+whiskey
+whisking
+whisks
+whisky
+whisper
+whispered
+whisperer
+whispering
+whisperings
+whispers
+whist
+whist-drive
+whistle
+whistle-blower
+whistle-blowing
+whistle-stop
+whistleblow
+whistled
+whistlers
+whistles
+whistling
+whit
+whit-limed
+Whitaker
+Whitcomb
+white
+white-bread
+white-collar
+white-grained
+white-hot
+white-livered
+white-man
+white-out
+white-smith
+white-squall
+whitebeard
+whitecap
+whitefish
+whitefriar
+whiteguard
+Whitehall
+whitehead
+whiteheaded
+Whitehorse
+Whiteleaf
+Whiteley
+whitelie
+whitely
+whiten
+whitened
+whitener
+whiteners
+whiteness
+whitening
+whitens
+whiteout
+whiter
+whites
+whitespace
+whitest
+whitetail
+whitethorn
+whitewall
+whitewash
+whitewashed
+whitey
+Whitfield
+whither
+whithersoever
+whitherward
+whiting
+whitish
+Whitlock
+whitlow
+Whitman
+Whitmanize
+Whitmanizes
+Whitney
+Whitsunday
+Whitsuntide
+Whittaker
+Whittier
+whittle
+whittled
+whittler
+whittles
+whittling
+whiz
+whiz-bang
+whizkid
+whizz
+whizzbang
+whizzed
+whizzes
+whizzing
+who
+who'd
+who'll
+who're
+who's
+who've
+whoa
+whodunit
+whodunnit
+whoever
+whole
+whole-hearted
+whole-heartedly
+whole-length
+whole-meal
+whole-wheat
+wholehearted
+wholeheartedly
+wholeheartedness
+wholeness
+wholes
+wholesale
+wholesaler
+wholesalers
+wholesome
+wholesomely
+wholesomeness
+wholly
+whom
+whomever
+whomsoever
+whoop
+whoop-la
+whooped
+whoopee
+whooper
+whooping
+whoops
+Whoops!
+whoosh
+whop
+whopper
+whopping
+whore
+whoredom
+whoreish
+whores
+whorish
+whorl
+whorled
+whorls
+whortleberry
+whose
+whosesoever
+whoso
+whosoever
+why
+WI
+Wichita
+wick
+wicked
+wickedly
+wickedness
+wicker
+wicker-work
+wickerwork
+wicket
+wicks
+wide
+wide-awake
+wide-eyed
+wide-open
+wide-spread
+wideband
+widely
+widemouthed
+widen
+widened
+widener
+wideness
+widening
+widens
+wider
+widespread
+widest
+widgeon
+widget
+widow
+widow's-bench
+widowed
+widower
+widowers
+widowhood
+widows
+width
+widths
+Wieland
+wield
+wielded
+wielder
+wielding
+wields
+wiener
+wienie
+Wier
+wife
+wifeless
+wifely
+wig
+wig-maker
+wig-weaver
+wigeon
+Wiggins
+wiggle
+wiggler
+wiggly
+wight
+Wightman
+wiglet
+wigs
+wigwag
+wigwam
+Wilbur
+Wilcox
+wild
+wild-brier
+wild-cat
+wild-eyed
+wild-fire
+wild-rose
+wild-succory
+wild-thyme
+wildcat
+wildcats
+wildcatter
+Wilde
+wildebeest
+wilderness
+wildest
+wildfire
+wildflower
+wildfowl
+wilding
+wildlife
+wildly
+wildness
+wilds
+wile
+wiles
+Wiley
+Wilfred
+wilful
+wilfully
+wilfulness
+Wilhelm
+Wilhelmina
+wiliness
+Wilkes
+Wilkie
+Wilkins
+Wilkinson
+will
+will-o'-the-wisp
+Willa
+Willamette
+Willard
+Willcox
+willed
+Willem
+willful
+willfully
+willfulness
+William
+Williams
+Williamsburg
+Williamson
+Willie
+Willied
+willing
+willingly
+willingness
+Willis
+Willisson
+williwaw
+Willoughby
+willow
+willow-plot
+willows
+willowy
+willpower
+Wills
+Willy
+willy-nilly
+Wilma
+Wilmette
+Wilmington
+Wilshire
+Wilson
+Wilsonian
+wilt
+wilted
+wilting
+wilts
+Wiltshire
+wily
+wimble
+wimp
+wimpish
+wimple
+wimpy
+win
+win-win
+wince
+winced
+winces
+winch
+Winchell
+Winchester
+wincing
+wind
+wind-breaks
+wind-broken
+wind-cheater
+wind-egg
+wind-gauge
+wind-hover
+wind-instrument
+wind-screen
+wind-screen-wiper
+wind-shield
+wind-swept
+wind-up
+windbag
+windblown
+windbreak
+windbreaker
+windburn
+windburned
+winded
+winder
+winders
+windfall
+windflower
+Windhoek
+windily
+windiness
+winding
+winding-sheet
+windjam
+windjammer
+windlass
+windless
+windmill
+windmills
+window
+window-blind
+window-case
+window-dress
+window-frame
+window-pane
+window-sash
+window-shop
+window-shopper
+window-shopping
+window-shutter
+windowing
+windowless
+windowpane
+windowsill
+windpipe
+windproof
+windrow
+winds
+windscreen
+windshield
+windsock
+Windsor
+windstorm
+windsurf
+windsurfer
+windsurfing
+windswept
+windup
+windward
+windy
+wine
+wine-cask
+wine-cellar
+wine-colored
+wine-glass
+wine-grower
+wine-press
+wined
+wineglass
+winegrower
+Winehead
+winepress
+winer
+winers
+winery
+wines
+winevault
+wineyard
+Winfield
+wing
+wing-case
+wing-mirror
+wing-stroke
+wingding
+winged
+winging
+wingless
+winglet
+winglike
+wings
+wingspan
+wingspread
+wingtip
+Winifred
+wining
+wink
+winked
+winker
+winkers
+winking
+winkle
+winkle-fishing
+winks
+Winnebago
+winner
+winners
+Winnetka
+Winnie
+winning
+winningly
+winnings
+Winnipeg
+Winnipesaukee
+winnow
+winnower
+wino
+Winograd
+Winooski
+wins
+Winsborough
+Winsett
+Winslow
+winsome
+winsomely
+winsomeness
+Winston
+Winston-Salem
+winter
+wintered
+wintergreen
+wintering
+winterize
+Winters
+wintertime
+wintery
+Winthrop
+wintry
+winy
+wipe
+wiped
+wiper
+wipers
+wipes
+wiping
+WIPO
+wire
+wire-bridge
+wire-cutters
+wire-entanglement
+wire-gauge
+wire-glass
+wire-guided
+wire-haired
+wire-line
+wire-mark
+wire-netting
+wire-pulling
+wire-worm
+wired
+wirehair
+wireless
+wires
+wiretap
+wiretapper
+wiretappers
+wiretapping
+wiretaps
+wiriness
+wiring
+wiry
+Wis
+Wisc
+Wisconsin
+Wisconsinite
+wisdom
+wisdom-tooth
+wisdoms
+wise
+wiseacre
+wisecrack
+wised
+wiseguy
+wisely
+Wisenheimer
+wiser
+wisest
+wish
+wish-wash
+wishbone
+wished
+wisher
+wishers
+wishes
+wishful
+wishfully
+wishing
+wishy-washy
+wisp
+wisps
+wispy
+wist
+wistaria
+wisteria
+wistful
+wistfully
+wistfulness
+wit
+wit-cracker
+witch
+witch-hunt
+witchcraft
+witchery
+witches
+witching
+with
+with-it
+withal
+withdraw
+withdrawal
+withdrawals
+withdrawing
+withdrawn
+withdraws
+withdrew
+withe
+wither
+withered
+withering
+witheringly
+withers
+Witherspoon
+withheld
+withhold
+withholder
+withholders
+withholding
+withholdings
+withholds
+within
+without
+withstand
+withstanding
+withstands
+withstood
+withy
+witless
+witlessly
+witlessness
+witling
+witness
+witnessed
+witnesses
+witnessing
+wits
+witsnapper
+Witt
+witted
+Wittgenstein
+witticism
+wittier
+wittily
+wittiness
+witting
+wittingly
+witty
+wive
+wivern
+wives
+wiz
+wizard
+wizardry
+wizards
+wizen
+wizened
+WNW
+wo
+woad
+wobble
+wobbliness
+wobbly
+woe
+woebegone
+woeful
+woefully
+woefulness
+woes
+wok
+woke
+woken
+Wolcott
+wold
+wolf
+wolf-dog
+wolf-whistle
+Wolfe
+Wolff
+Wolfgang
+wolfhound
+wolfing
+wolfish
+wolfman
+wolfram
+Wolverhampton
+wolverine
+Wolverton
+wolves
+woman
+woman's
+womanhood
+womanish
+womanize
+womanizer
+womankind
+womanlike
+womanliness
+womanly
+womb
+wombat
+wombs
+women
+womenfolk
+womenfolks
+won
+won't
+wonder
+wonder-stricken
+wonder-struck
+wondered
+wonderful
+wonderfully
+wonderfulness
+wondering
+wonderingly
+wonderland
+wonderment
+wonders
+wondrous
+wondrously
+Wong
+wonk
+wonky
+wont
+wonted
+wonton
+woo
+wood
+wood-anemone
+wood-carver
+wood-carving
+wood-coal
+wood-cock
+wood-cut
+wood-engraving
+wood-house
+wood-pulp
+wood-worm
+Woodard
+Woodberry
+woodbine
+woodblock
+Woodbury
+woodcarver
+woodcarving
+woodchuck
+woodchucks
+woodcock
+woodcocks
+woodcraft
+woodcut
+woodcutter
+woodcutting
+wooded
+wooden
+woodengraver
+woodengraving
+woodenly
+woodenness
+woodiness
+woodland
+Woodlawn
+woodlot
+woodman
+woodpecker
+woodpeckers
+woodpile
+Woodrow
+woodruff
+woods
+woodshed
+woodsiness
+woodsman
+Woodstock
+woodsy
+Woodward
+Woodwards
+woodwind
+woodwinds
+woodwork
+woodworker
+woodworking
+woody
+wooed
+wooer
+woof
+woofed
+woofer
+woofers
+woofing
+woofs
+wooing
+wool
+wool-carding
+wool-gathering
+wool-pack
+wool-pulling
+wool-sack
+woolcombing
+woolen
+woolens
+Woolf
+woolgathering
+woolie
+woollen
+woollen-draper
+woollen-stuff
+woolliness
+woolly
+wools
+Woolworth
+wooly
+Woonsocket
+woos
+Wooster
+woozily
+wooziness
+woozy
+Worcester
+Worcestershire
+word
+word-book
+word-building
+word-by-word
+word-division
+word-splitter
+wordage
+wordbook
+worded
+wordily
+wordiness
+wording
+wordless
+wordlessly
+wordplay
+words
+Wordsworth
+wordwise
+wordy
+wore
+work
+work-in-process
+work-people
+work-piece
+work-shy
+work-table
+work-up
+workability
+workable
+workably
+workaday
+workaholic
+workbench
+workbenches
+workbook
+workbooks
+workday
+worked
+worker
+workers
+workfare
+workforce
+workhorse
+workhorses
+workhouse
+working
+working-class
+working-day
+working-man
+workingman
+workings
+workingwoman
+workload
+workman
+workmanlike
+workmanship
+workmen
+workout
+workplace
+workroom
+works
+worksheet
+workshop
+workshops
+workshy
+workspace
+workstation
+workstations
+worktable
+worktables
+workup
+workweek
+workwoman
+world
+world-beater
+world-class
+world-dominating
+world-famous
+world-shaking
+world-weariness
+world-weary
+world-wide
+worldliness
+worldling
+worldly
+worldly-minded
+worldly-wise
+worlds
+worldwide
+worm
+worm-bore
+worm-conveyor
+worm-eaten
+worm-fishing
+worm-gear
+worm-hole
+worm-screw
+worm-seed
+worm-shaft
+worm-wheel
+wormed
+wormhole
+worming
+wormwood
+wormy
+worn
+worn-out
+worried
+worrier
+worriers
+worries
+worriment
+worrisome
+worry
+worrying
+worryingly
+worrywart
+worse
+worsen
+worship
+worshiped
+worshiper
+worshipful
+worshiping
+worshipper
+worships
+worst
+worsted
+wort
+worth
+worthiest
+worthily
+worthiness
+Worthington
+worthless
+worthlessly
+worthlessness
+worths
+worthwhile
+worthwhileness
+worthwile
+worthy
+Wotan
+would
+would've
+would-be
+wouldn't
+wouldst
+wound
+wounded
+wounding
+woundless
+wounds
+wove
+woven
+wow
+Wow!
+WP
+WPA
+WPI
+wrack
+wraith
+wrangle
+wrangled
+wrangler
+wrap
+wrap-up
+wraparound
+wrappage
+wrapped
+wrapper
+wrappers
+wrapping
+wrappings
+wrapt
+wrasse
+wrath
+wrathful
+wrathfully
+wreak
+wreaks
+wreath
+wreathe
+wreathed
+wreathes
+wreck
+wreckage
+wrecked
+wrecker
+wreckers
+wrecking
+wrecks
+wren
+wrench
+wrenched
+wrenches
+wrenching
+wrens
+wrest
+wrestle
+wrestler
+wrestles
+wrestling
+wrestlings
+wretch
+wretched
+wretchedly
+wretchedness
+wretches
+wrick
+wriggle
+wriggled
+wriggler
+wriggles
+wriggling
+wriggly
+wright
+Wrigley
+wring
+wringer
+wringing
+wrings
+wrinkle
+wrinkled
+wrinkles
+wrinkly
+wrist
+wrist-watch
+wristband
+wristlet
+wrists
+wristwatch
+wristwatches
+writ
+writable
+write
+write-in
+write-off
+write-to-operator
+write-up
+writer
+writers
+writes
+writhe
+writhed
+writhes
+writhing
+writing
+writing-desk
+writing-paper
+writings
+writs
+written
+Wroclaw
+wrong
+wrong-doer
+wrong-doing
+wrong-headed
+wrongdoer
+wrongdoing
+wronged
+wrongful
+wrongfully
+wrongfulness
+wrongheaded
+wrongheadedly
+wrongheadedness
+wronging
+wrongly
+wrongness
+wrongs
+Wronskian
+wrote
+wroth
+wrought
+wrought-iron
+wrought-up
+WRU
+wrung
+wry
+wry-mouthed
+wry-neck
+wryly
+wryness
+WSW
+Wu
+Wuhan
+wurst
+wuss
+wussy
+WV
+WW
+WWI
+WWII
+WWW
+WY
+Wyandotte
+Wyatt
+Wyeth
+Wylie
+Wyman
+wynd
+Wyner
+Wynn
+Wyo
+Wyoming
+Wyomingite
+WYSIWYG
+wyvern
+X
+X's
+x-axes
+x-axis
+x-decoder
+x-hair
+x-out
+x-punch
+x-ray
+xanthate
+xanthic
+xanthin
+xanthine
+xanthone
+xanthophyll
+xanthopterin
+xanthous
+Xanthus
+xanthydrol
+Xavier
+Xe
+Xebec
+Xenakis
+Xenia
+Xenix
+xenolith
+xenon
+xenophobe
+xenophobia
+xenophobic
+xerographic
+xerography
+xerox
+Xeroxed
+Xeroxes
+Xeroxing
+Xerxes
+Xhosa
+xi
+Xian
+XL
+Xmas
+XRL
+XXL
+xylem
+xylograph
+xylographer
+xylography
+xylonite
+xylophone
+xylophonist
+xylyl
+y'all
+y-axes
+y-axis
+Y-decoder
+Y-punch
+yacht
+yachting
+yachtsman
+yachtswoman
+yack
+yackety-yak
+Yagi
+yahoo
+Yahveh
+Yahweh
+yak
+Yakima
+Yale
+Yale-lock
+Yalies
+Yalta
+yam
+Yamaha
+yammer
+yammerer
+Yamoussoukro
+yang
+Yangon
+Yangtze
+yank
+yanked
+Yankee
+Yankees
+yanking
+yanks
+Yankton
+Yaounde
+yaourt
+yap
+Yaqui
+yard
+yard-measure
+yard-stick
+yardage
+yardarm
+yardman
+yardmaster
+yards
+yardstick
+yardsticks
+yarmelke
+Yarmouth
+yarmulke
+yarn
+yarns
+Yaroslavl
+yarrow
+Yates
+yatter
+Yaunde
+yaw
+yawl
+yawn
+yawner
+yawning
+yawny
+yaws
+Yb
+ye
+yea
+Yeager
+yeah
+yean
+yeanling
+year
+year-book
+year-long
+year-round
+yearbook
+yearling
+yearlong
+yearly
+yearn
+yearned
+yearning
+yearnings
+years
+yeas
+yeast
+yeasts
+yeasty
+Yeats
+yegg
+Yekaterinburg
+yelk
+yell
+yelled
+yeller
+yelling
+yellow
+yellow-bird
+yellow-hammer
+yellowback
+yellowed
+yellower
+yellowest
+yellowing
+yellowish
+Yellowknife
+yellowness
+yellows
+Yellowstone
+yellowy
+yelp
+yelped
+yelping
+yelps
+Yeltsin
+Yemen
+Yemeni
+Yemenite
+yen
+Yentl
+yeoman
+yeomanly
+yeomanry
+yeomen
+yep
+Yerevan
+Yerkes
+yes
+yes-man
+yeshiva
+yeshivah
+yeshivoth
+yesterday
+yesterdays
+yesterdays
+yesteryear
+yet
+yeti
+yew
+Yiddish
+yield
+yielded
+yielding
+yields
+yikes
+yin
+yip
+yipe
+yippee
+YMCA
+YMHA
+yo
+yo-yo
+yodel
+yodeler
+yodeller
+Yoder
+yoga
+yoghourt
+yoghurt
+yogi
+yogin
+yogurt
+yoke
+yokefellow
+yokel
+yokemate
+yokes
+Yoknapatawpha
+Yokohama
+Yokuts
+yolk
+yolked
+yon
+yonder
+Yonkers
+yoo-hoo
+yore
+Yorick
+York
+Yorker
+Yorkers
+Yorkshire
+Yorktown
+Yosemite
+Yost
+you
+you'd
+you'll
+you're
+you've
+young
+younger
+youngish
+youngling
+youngly
+youngster
+youngsters
+Youngstown
+younker
+your
+yours
+yourself
+yourselves
+youth
+youthes
+youthful
+youthfully
+youthfulness
+yowl
+Ypsilanti
+YT
+ytterbium
+yttrium
+yuan
+Yuba
+Yucatan
+yucca
+yuck
+yucky
+Yugoslav
+Yugoslavia
+Yugoslavian
+Yuh
+yuk
+Yuki
+Yukon
+yule
+yule-tide
+yum
+yummy
+yup
+yuppie
+yuppy
+Yuri
+yurt
+Yves
+Yvette
+YWCA
+YWHA
+Z's
+Zachary
+Zagreb
+Zaire
+Zairian
+Zambezi
+Zambia
+Zambian
+Zan
+zaniness
+zany
+Zanzibar
+zap
+zapper
+zapping
+zdarma
+zeal
+Zealand
+zealot
+zealotry
+zealous
+zealously
+zealousness
+zebra
+zebras
+zebu
+zed
+Zeffirelli
+Zeiss
+zeitgeist
+Zellerbach
+Zen
+zenith
+Zennist
+zephyr
+zero
+zero-address
+zero-sum
+zeroed
+zeroes
+zerofilling
+zeroing
+zeroize
+zeroizing
+zeros
+zeroth
+zest
+zestful
+zestfully
+zestfulness
+zesty
+zeta
+Zeus
+Zhdanov
+Zhengzhou
+Ziegfeld
+Ziegfelds
+Ziegler
+zig
+zig-zag
+Ziggy
+zigzag
+zilch
+zillion
+zillions
+Zimbabwe
+Zimbabwean
+Zimmerman
+zinc
+zincograph
+zincography
+zincotype
+zing
+zinger
+zingy
+zinnia
+Zion
+Zionism
+Zionist
+Zionists
+Zions
+zip
+zip-fastener
+zipper
+zippered
+zippy
+zircon
+zirconium
+zit
+zither
+zithern
+Zn
+zodiac
+zodiacal
+Zoe
+Zomba
+zombi
+zombie
+zonal
+zonally
+zone
+zone-setting
+zoned
+zones
+zoning
+zonked
+zoo
+zoological
+zoologically
+zoologist
+zoology
+zoom
+zoomer
+zooming
+zooms
+zoophyte
+zoophytic
+zoos
+zoot
+zoot-suiter
+zootechnicist
+zooter
+Zorn
+Zoroaster
+Zoroastrian
+Zoroastrianism
+zounds
+Zr
+Zs
+zucchini
+Zulu
+Zululand
+Zulus
+Zuni
+Zurich
+zwieback
+zydeco
+zygote
+zygotic
+zyme
+zymology
+zymotic
+zymurgy
+
+# common words in database names (the fact of specifying them more than once adds weight, each + also adds 1 weight point)
+
+sp
++sel
++upd
++logo
++sys
+++fk
+unit
+units
+date
+point
++in
++per
+stock
+linq
+id
++int
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Language/FrenchWords.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Language/FrenchWords.cs
@@ -1,89 +1,89 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-using DbLinq.Language.Implementation;
-
-namespace DbMetal.Language
-{
-    /// <summary>
-    /// Words for french language
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class FrenchWords : AbstractEndPluralWords
-    {
-        /// <summary>
-        /// Loads the words (operation may be slow, so it is excluded from ctor)
-        /// </summary>
-        public override void Load()
-        {
-            if (WordsWeights == null)
-                Load("FrenchWords.txt");
-        }
-
-        /// <summary>
-        /// Returns true if the required culture is supported
-        /// </summary>
-        /// <param name="cultureInfo"></param>
-        /// <returns></returns>
-        public override bool Supports(CultureInfo cultureInfo)
-        {
-            return cultureInfo.ThreeLetterISOLanguageName == "fra"
-                   || cultureInfo.ThreeLetterISOLanguageName == "fre";
-        }
-
-        /// <summary>
-        /// Gets the standard form for word (removes mixed letters, for example).
-        /// The goal is to make it usable from dictionary.
-        /// </summary>
-        /// <param name="word">The word.</param>
-        /// <returns></returns>
-        protected override string GetStandard(string word)
-        {
-            return word.Replace("œ", "oe").Replace("æ", "ae");
-        }
-
-        protected override SingularPlural[] SingularsPlurals
-        {
-            get { return singularsPlurals; }
-        }
-
-        // important: keep this from most specific to less specific
-        private readonly SingularPlural[] singularsPlurals =
-            {
-                new SingularPlural { Singular="al", Plural="aux" },
-                new SingularPlural { Singular="eu", Plural="eux" },
-                new SingularPlural { Singular="eau", Plural="eaux" },
-                new SingularPlural { Singular="au", Plural="aux" },
-                new SingularPlural { Singular="z", Plural="z" },
-                new SingularPlural { Singular="x", Plural="x" },
-                new SingularPlural { Singular="", Plural="s" }, // regular ending first
-                new SingularPlural { Singular="s", Plural="s" },
-            };
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+using DbLinq.Language.Implementation;
+
+namespace DbMetal.Language
+{
+    /// <summary>
+    /// Words for french language
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class FrenchWords : AbstractEndPluralWords
+    {
+        /// <summary>
+        /// Loads the words (operation may be slow, so it is excluded from ctor)
+        /// </summary>
+        public override void Load()
+        {
+            if (WordsWeights == null)
+                Load("FrenchWords.txt");
+        }
+
+        /// <summary>
+        /// Returns true if the required culture is supported
+        /// </summary>
+        /// <param name="cultureInfo"></param>
+        /// <returns></returns>
+        public override bool Supports(CultureInfo cultureInfo)
+        {
+            return cultureInfo.ThreeLetterISOLanguageName == "fra"
+                   || cultureInfo.ThreeLetterISOLanguageName == "fre";
+        }
+
+        /// <summary>
+        /// Gets the standard form for word (removes mixed letters, for example).
+        /// The goal is to make it usable from dictionary.
+        /// </summary>
+        /// <param name="word">The word.</param>
+        /// <returns></returns>
+        protected override string GetStandard(string word)
+        {
+            return word.Replace("œ", "oe").Replace("æ", "ae");
+        }
+
+        protected override SingularPlural[] SingularsPlurals
+        {
+            get { return singularsPlurals; }
+        }
+
+        // important: keep this from most specific to less specific
+        private readonly SingularPlural[] singularsPlurals =
+            {
+                new SingularPlural { Singular="al", Plural="aux" },
+                new SingularPlural { Singular="eu", Plural="eux" },
+                new SingularPlural { Singular="eau", Plural="eaux" },
+                new SingularPlural { Singular="au", Plural="aux" },
+                new SingularPlural { Singular="z", Plural="z" },
+                new SingularPlural { Singular="x", Plural="x" },
+                new SingularPlural { Singular="", Plural="s" }, // regular ending first
+                new SingularPlural { Singular="s", Plural="s" },
+            };
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Language/GermanWords.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Language/GermanWords.cs
@@ -1,71 +1,71 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-using DbLinq.Language.Implementation;
-
-namespace DbMetal.Language
-{
-    /// <summary>
-    /// German support
-    /// </summary>
-#if !MONO_STRICT
-    public
-#endif
-    class GermanWords : AbstractEndPluralWords
-    {
-        /// <summary>
-        /// Loads the words (operation may be slow, so it is excluded from ctor)
-        /// </summary>
-        public override void Load()
-        {
-            if (WordsWeights == null)
-                Load("GermanWords.txt");
-        }
-
-        /// <summary>
-        /// Returns true if the required culture is supported
-        /// </summary>
-        /// <param name="cultureInfo"></param>
-        /// <returns></returns>
-        public override bool Supports(CultureInfo cultureInfo)
-        {
-            return cultureInfo.ThreeLetterISOLanguageName == "deu";
-        }
-
-        protected override SingularPlural[] SingularsPlurals
-        {
-            get { return singularsPlurals; }
-        }
-
-        // important: keep this from most specific to less specific
-        private static readonly SingularPlural[] singularsPlurals =
-            {
-                new SingularPlural { Singular="e", Plural="en" },
-                new SingularPlural { Singular="", Plural="e" },
-            };
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+using DbLinq.Language.Implementation;
+
+namespace DbMetal.Language
+{
+    /// <summary>
+    /// German support
+    /// </summary>
+#if !MONO_STRICT
+    public
+#endif
+    class GermanWords : AbstractEndPluralWords
+    {
+        /// <summary>
+        /// Loads the words (operation may be slow, so it is excluded from ctor)
+        /// </summary>
+        public override void Load()
+        {
+            if (WordsWeights == null)
+                Load("GermanWords.txt");
+        }
+
+        /// <summary>
+        /// Returns true if the required culture is supported
+        /// </summary>
+        /// <param name="cultureInfo"></param>
+        /// <returns></returns>
+        public override bool Supports(CultureInfo cultureInfo)
+        {
+            return cultureInfo.ThreeLetterISOLanguageName == "deu";
+        }
+
+        protected override SingularPlural[] SingularsPlurals
+        {
+            get { return singularsPlurals; }
+        }
+
+        // important: keep this from most specific to less specific
+        private static readonly SingularPlural[] singularsPlurals =
+            {
+                new SingularPlural { Singular="e", Plural="en" },
+                new SingularPlural { Singular="", Plural="e" },
+            };
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Language/GermanWords.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Language/GermanWords.txt
@@ -1,10000 +1,10000 @@
-der
-die
-und
-in
-den
-von
-zu
-das
-mit
-sich
-des
-auf
-fr
-ist
-im
-dem
-nicht
-ein
-Die
-eine
-als
-auch
-es
-an
-werden
-aus
-er
-hat
-da
-sie
-nach
-wird
-bei
-einer
-Der
-um
-am
-sind
-noch
-wie
-einem
-ber
-einen
-Das
-so
-Sie
-zum
-war
-haben
-nur
-oder
-aber
-vor
-zur
-bis
-mehr
-durch
-man
-sein
-wurde
-sei
-In
-Prozent
-hatte
-kann
-gegen
-vom
-knnen
-schon
-wenn
-habe
-seine
-Mark
-ihre
-dann
-unter
-wir
-soll
-ich
-eines
-Es
-Jahr
-zwei
-Jahren
-diese
-dieser
-wieder
-keine
-Uhr
-seiner
-worden
-Und
-will
-zwischen
-Im
-immer
-Millionen
-Ein
-was
-sagte
-Er
-gibt
-alle
-DM
-diesem
-seit
-mu
-wurden
-beim
-doch
-jetzt
-waren
-drei
-Jahre
-Mit
-neue
-neuen
-damit
-bereits
-da
-Auch
-ihr
-seinen
-mssen
-ab
-ihrer
-Nach
-ohne
-sondern
-selbst
-ersten
-nun
-etwa
-Bei
-heute
-ihren
-weil
-ihm
-seien
-Menschen
-Deutschland
-anderen
-werde
-Ich
-sagt
-Wir
-Eine
-rund
-Fr
-Aber
-ihn
-Ende
-jedoch
-Zeit
-sollen
-ins
-Wenn
-So
-seinem
-uns
-Stadt
-geht
-Doch
-sehr
-hier
-ganz
-erst
-wollen
-Berlin
-vor allem
-sowie
-hatten
-kein
-deutschen
-machen
-lassen
-Als
-Unternehmen
-andere
-ob
-dieses
-steht
-dabei
-wegen
-weiter
-denn
-beiden
-einmal
-etwas
-Wie
-nichts
-allerdings
-vier
-gut
-viele
-wo
-viel
-dort
-alles
-Auf
-wre
-SPD
-kommt
-vergangenen
-denen
-fast
-fnf
-knnte
-nicht nur
-htten
-Frau
-Am
-dafr
-kommen
-diesen
-letzten
-zwar
-Diese
-groen
-dazu
-Von
-Mann
-Da
-sollte
-wrde
-also
-bisher
-Leben
-Milliarden
-Welt
-Regierung
-konnte
-ihrem
-Frauen
-whrend
-Land
-zehn
-wrden
-stehen
-ja
-USA
-heit
-dies
-zurck
-Kinder
-dessen
-ihnen
-deren
-sogar
-Frage
-gewesen
-erste
-gab
-liegt
-gar
-davon
-gestern
-geben
-Teil
-Polizei
-dass
-htte
-eigenen
-kaum
-sieht
-groe
-Denn
-weitere
-Was
-sehen
-macht
-Angaben
-weniger
-gerade
-lt
-Geld
-Mnchen
-deutsche
-allen
-darauf
-wohl
-spter
-knne
-deshalb
-aller
-kam
-Arbeit
-mich
-gegenber
-nchsten
-bleibt
-wenig
-lange
-gemacht
-Wer
-Dies
-Fall
-mir
-gehen
-Berliner
-mal
-Weg
-CDU
-wollte
-sechs
-keinen
-Woche
-dagegen
-alten
-mglich
-gilt
-erklrte
-msse
-Dabei
-knnten
-Geschichte
-zusammen
-finden
-Tag
-Art
-erhalten
-Man
-Dollar
-Wochen
-jeder
-nie
-bleiben
-besonders
-Jahres
-Deutschen
-Den
-Zu
-zunchst
-derzeit
-allein
-deutlich
-Entwicklung
-wei
-einige
-sollten
-Prsident
-geworden
-statt
-Bonn
-Platz
-inzwischen
-Nur
-Freitag
-Um
-pro
-seines
-Damit
-Montag
-Europa
-schlielich
-Sonntag
-einfach
-gehrt
-eher
-oft
-Zahl
-neben
-hlt
-weit
-Partei
-meisten
-Thema
-zeigt
-Politik
-Aus
-zweiten
-Januar
-insgesamt
-je
-mute
-Anfang
-hinter
-ebenfalls
-ging
-Mitarbeiter
-darber
-vielen
-Ziel
-darf
-Seite
-fest
-hin
-erklrt
-Namen
-Haus
-An
-Frankfurt
-Gesellschaft
-Mittwoch
-damals
-Dienstag
-Hilfe
-Mai
-Markt
-Seit
-Tage
-Donnerstag
-halten
-gleich
-nehmen
-solche
-Entscheidung
-besser
-alte
-Leute
-Ergebnis
-Samstag
-Da
-sagen
-System
-Mrz
-tun
-Monaten
-kleinen
-lang
-Nicht
-knapp
-bringen
-wissen
-Kosten
-Erfolg
-bekannt
-findet
-daran
-knftig
-wer
-acht
-Grnen
-schnell
-Grund
-scheint
-Zukunft
-Stuttgart
-bin
-liegen
-politischen
-Gruppe
-Rolle
-stellt
-Juni
-sieben
-September
-nmlich
-Mnner
-Oktober
-Mrd
-berhaupt
-eigene
-Dann
-gegeben
-Auerdem
-Stunden
-eigentlich
-Meter
-lie
-Probleme
-vielleicht
-ebenso
-Bereich
-zum Beispiel
-Bis
-Hhe
-Familie
-Whrend
-Bild
-Lndern
-Informationen
-Frankreich
-Tagen
-schwer
-zuvor
-Vor
-genau
-April
-stellen
-neu
-erwartet
-Hamburg
-sicher
-fhren
-Mal
-ber
-mehrere
-Wirtschaft
-Mio
-Programm
-offenbar
-Hier
-weiteren
-natrlich
-konnten
-stark
-Dezember
-Juli
-ganze
-kommenden
-Kunden
-bekommen
-eben
-kleine
-trotz
-wirklich
-Lage
-Lnder
-leicht
-gekommen
-Spiel
-laut
-November
-kurz
-politische
-fhrt
-innerhalb
-unsere
-meint
-immer wieder
-Form
-Mnchner
-AG
-anders
-ihres
-vllig
-beispielsweise
-gute
-bislang
-August
-Hand
-jede
-GmbH
-Film
-Minuten
-erreicht
-beide
-Musik
-Kritik
-Mitte
-Verfgung
-Buch
-drfen
-Unter
-jeweils
-einigen
-Zum
-Umsatz
-spielen
-Daten
-welche
-mten
-hie
-paar
-nachdem
-Kunst
-Euro
-gebracht
-Problem
-Noch
-jeden
-Ihre
-Sprecher
-recht
-erneut
-lngst
-europischen
-Sein
-Eltern
-Beginn
-besteht
-Seine
-mindestens
-machte
-Jetzt
-bietet
-auerdem
-Brger
-Trainer
-bald
-Deutsche
-Schon
-Fragen
-klar
-Durch
-Seiten
-gehren
-Dort
-erstmals
-Februar
-zeigen
-Titel
-Stck
-grten
-FDP
-setzt
-Wert
-Frankfurter
-Staat
-mchte
-daher
-wolle
-Bundesregierung
-lediglich
-Nacht
-Krieg
-Opfer
-Tod
-nimmt
-Firma
-zuletzt
-Werk
-hohen
-leben
-unter anderem
-Dieser
-Kirche
-weiterhin
-gebe
-gestellt
-Mitglieder
-Rahmen
-zweite
-Paris
-Situation
-gefunden
-Wochenende
-internationalen
-Wasser
-Recht
-sonst
-stand
-Hlfte
-Mglichkeit
-versucht
-blieb
-junge
-Mehrheit
-Strae
-Sache
-arbeiten
-Monate
-Mutter
-berichtet
-letzte
-Gericht
-wollten
-Ihr
-zwlf
-zumindest
-Wahl
-genug
-Weise
-Vater
-Bericht
-amerikanischen
-hoch
-beginnt
-Wort
-obwohl
-Kopf
-spielt
-Interesse
-Westen
-verloren
-Preis
-Erst
-jedem
-erreichen
-setzen
-spricht
-frher
-teilte
-Landes
-zudem
-einzelnen
-bereit
-Blick
-Druck
-Bayern
-Kilometer
-gemeinsam
-Bedeutung
-Chance
-Politiker
-Dazu
-Zwei
-besten
-Ansicht
-endlich
-Stelle
-direkt
-Beim
-Bevlkerung
-Viele
-solchen
-Alle
-solle
-jungen
-Einsatz
-richtig
-grte
-sofort
-neuer
-ehemaligen
-unserer
-drfte
-schaffen
-Augen
-Ruland
-Internet
-Allerdings
-Raum
-Mannschaft
-neun
-kamen
-Ausstellung
-Zeiten
-Dem
-einzige
-meine
-Nun
-Verfahren
-Angebot
-Richtung
-Projekt
-niemand
-Kampf
-weder
-tatschlich
-Personen
-dpa
-Heute
-gefhrt
-Gesprch
-Kreis
-Hamburger
-Schule
-guten
-Hauptstadt
-durchaus
-Zusammenarbeit
-darin
-Amt
-Schritt
-meist
-gro
-zufolge
-Sprache
-Region
-Punkte
-Vergleich
-genommen
-gleichen
-du
-Ob
-Soldaten
-Universitt
-verschiedenen
-Kollegen
-neues
-Brgermeister
-Angst
-stellte
-Sommer
-danach
-anderer
-gesagt
-Sicherheit
-Macht
-Bau
-handelt
-Folge
-Bilder
-lag
-Osten
-Handel
-sprach
-Aufgabe
-Chef
-frei
-dennoch
-DDR
-hohe
-Firmen
-bzw
-Koalition
-Mdchen
-Zur
-entwickelt
-fand
-Diskussion
-bringt
-Deshalb
-Hause
-Gefahr
-per
-zugleich
-frheren
-dadurch
-ganzen
-abend
-erzhlt
-Streit
-Vergangenheit
-Parteien
-Verhandlungen
-jedenfalls
-gesehen
-franzsischen
-Trotz
-darunter
-Spieler
-forderte
-Beispiel
-Meinung
-wenigen
-Publikum
-sowohl
-meinte
-mag
-Auto
-Lsung
-Boden
-Einen
-Prsidenten
-hinaus
-Zwar
-verletzt
-weltweit
-Sohn
-bevor
-Peter
-muten
-keiner
-Produktion
-Ort
-braucht
-Zusammenhang
-Kind
-Verein
-sprechen
-Aktien
-gleichzeitig
-London
-sogenannten
-Richter
-geplant
-Italien
-Mittel
-her
-freilich
-Mensch
-groer
-Bonner
-wenige
-ffentlichen
-Untersttzung
-dritten
-nahm
-Bundesrepublik
-Arbeitspltze
-bedeutet
-Feld
-Dr.
-Bank
-oben
-gesetzt
-Ausland
-Ministerprsident
-Vertreter
-z.B.
-jedes
-ziehen
-Parlament
-berichtete
-Dieses
-China
-aufgrund
-Stellen
-warum
-Kindern
-heraus
-heutigen
-Anteil
-Herr
-ffentlichkeit
-Abend
-Selbst
-Liebe
-Neben
-rechnen
-fllt
-New York
-Industrie
-WELT
-Stuttgarter
-wren
-Vorjahr
-Sicht
-Idee
-Banken
-verlassen
-Leiter
-Bhne
-insbesondere
-offen
-stets
-Theater
-ndern
-entschieden
-Staaten
-Experten
-Gesetz
-Geschft
-Tochter
-angesichts
-gelten
-Mehr
-erwarten
-luft
-fordert
-Japan
-Sieg
-Ist
-Stimmen
-whlen
-russischen
-gewinnen
-CSU
-bieten
-Nhe
-jhrlich
-Bremen
-Schler
-Rede
-Funktion
-Zuschauer
-hingegen
-anderes
-Fhrung
-Besucher
-Drittel
-Moskau
-immerhin
-Vorsitzende
-Urteil
-Schlielich
-Kultur
-betonte
-mittlerweile
-Saison
-Konzept
-suchen
-Zahlen
-Roman
-Gewalt
-Kln
-gesamte
-indem
-EU
-Stunde
-ehemalige
-Auftrag
-entscheiden
-genannt
-tragen
-Brse
-langen
-hufig
-Chancen
-Vor allem
-Position
-alt
-Luft
-Studenten
-bernehmen
-strker
-ohnehin
-zeigte
-geplanten
-Reihe
-darum
-verhindern
-begann
-Medien
-verkauft
-Minister
-wichtig
-amerikanische
-sah
-gesamten
-einst
-verwendet
-vorbei
-Behrden
-helfen
-Folgen
-bezeichnet
-Weil
-Ihnen
-zur Zeit
-voll
-deutscher
-Worten
-pltzlich
-mte
-Vertrag
-Staatsanwaltschaft
-Monat
-Oder
-Herbst
-Israel
-zahlen
-Zeitung
-Grenzen
-Wissenschaftler
-Partner
-Patienten
-nutzen
-Bund
-setzte
-Betrieb
-Michael
-beteiligt
-Professor
-Fernsehen
-Knstler
-mehreren
-erinnert
-Liste
-Mglichkeiten
-Autor
-tglich
-eingesetzt
-Versuch
-Alter
-Autos
-Kohl
-auer
-Hoffnung
-Verkauf
-nennt
-erscheint
-fhrte
-Proze
-Tter
-bisherigen
-lnger
-erkennen
-treffen
-Kein
-unser
-begonnen
-Antrag
-beschftigt
-Opposition
-Manahmen
-brachte
-nchste
-Zudem
-gezeigt
-Dennoch
-Sinn
-Erde
-gefordert
-Wohnung
-all
-Menge
-gerne
-Hintergrund
-hren
-Deutschlands
-selten
-Weitere
-besttigt
-bestimmt
-Statt
-entstehen
-nannte
-schreibt
-Union
-brauchen
-gewhlt
-Kraft
-elf
-trgt
-zieht
-Grenze
-Geschftsfhrer
-Team
-Gebude
-Tonnen
-Wettbewerb
-Anspruch
-Polen
-morgen
-Bremer
-Wegen
-Gebiet
-glaubt
-Sa
-Natur
-Arbeiten
-jene
-Fllen
-Jahrhundert
-leisten
-Zeitpunkt
-internationale
-mein
-Konkurrenz
-nach wie vor
-nicht einmal
-stieg
-notwendig
-sogenannte
-fahren
-kostet
-entsprechenden
-geplante
-geschlossen
-Fehler
-Zweifel
-Erklrung
-wiederum
-erschienen
-gehe
-Glck
-erfolgreich
-fehlt
-Gruppen
-Aktion
-kndigte
-meinen
-manchmal
-verschiedene
-bernommen
-mglichst
-SZ
-lieber
-Vielleicht
-Warum
-Verantwortung
-Gesprche
-Suche
-gern
-fallen
-Organisation
-Preise
-weitgehend
-Basis
-Computer
-aufgenommen
-Schutz
-Eindruck
-fiel
-nahe
-schlecht
-lebt
-Verhltnis
-Forderung
-britischen
-sozialen
-Technik
-entstanden
-Vorstand
-verantwortlich
-of
-bestimmten
-jngsten
-geboren
-erhlt
-wobei
-Gegner
-Grnden
-Material
-Spitze
-Gewinn
-Punkten
-vertreten
-Schulen
-Studie
-Zeichen
-gewonnen
-Kurs
-Washington
-Trkei
-Erfahrungen
-wirkt
-Armee
-erhielt
-beginnen
-bichen
-entfernt
-vorgesehen
-Ergebnisse
-zahlreiche
-entgegen
-Ohne
-hielt
-privaten
-sucht
-Gemeinde
-Antwort
-Zentrum
-bilden
-legen
-Schweiz
-gemeinsamen
-weg
-teilweise
-Grobritannien
-Licht
-Hannover
-Produkte
-Stimme
-diesmal
-Schlu
-gingen
-angeboten
-Gesicht
-Treffen
-Nachdem
-lieen
-erffnet
-versuchen
-Konzern
-Leistungen
-Gste
-Wohnungen
-mglicherweise
-Dafr
-wichtige
-Neue
-Rund
-zog
-geraten
-Bewegung
-Gegen
-ntig
-Mitglied
-hundert
-Dsseldorf
-PDS
-wahrscheinlich
-Danach
-vermutlich
-selber
-stndig
-Senat
-Branche
-Journalisten
-enthlt
-laufen
-Vom
-Straen
-Einfhrung
-arbeitet
-verlangt
-Werke
-Insgesamt
-Runde
-Besuch
-untersttzt
-Manager
-Brssel
-de
-schweren
-sitzt
-geschrieben
-jemand
-franzsische
-Bereits
-Wachstum
-taz
-bestimmte
-Drei
-Freiheit
-entsprechende
-kennt
-Band
-Arbeitgeber
-glauben
-Wege
-verurteilt
-tritt
-Volk
-Plne
-R
-angekndigt
-Satz
-sitzen
-Vorschlag
-rechnet
-muss
-erhht
-Investitionen
-Aufgaben
-warten
-entdeckt
-wichtigsten
-Heimat
-verstehen
-schrieb
-trotzdem
-erfahren
-Unternehmens
-frhere
-bekommt
-Jugendlichen
-Dinge
-ffentliche
-Institut
-Wirkung
-sorgen
-trifft
-reden
-Werte
-Forscher
-Wo
-Sitzung
-zustzlich
-vielmehr
-Anla
-Beide
-gehalten
-Tel.
-Schweizer
-beschlossen
-Serben
-Bundestag
-Verwaltung
-vorher
-automatisch
-betont
-Leistung
-abgeschlossen
-Obwohl
-zufrieden
-Beschftigten
-Papier
-Thomas
-Verbindung
-Sinne
-ziemlich
-Debatte
-enthalten
-ausschlielich
-bestehen
-Flchtlinge
-Jugendliche
-Freund
-A
-Themen
-berall
-droht
-Gewerkschaften
-Bedingungen
-Beziehungen
-Text
-europische
-Punkt
-Erfahrung
-The
-I
-Auenminister
-soziale
-russische
-Tisch
-Republik
-hher
-reicht
-Million
-gehabt
-politisch
-folgen
-hnlich
-geschaffen
-Schaden
-erster
-Krper
-Amerikaner
-gettet
-Einige
-Frieden
-zhlt
-Beteiligung
-Wagen
-Bahn
-vergessen
-Verlust
-Tiere
-Museum
-gegrndet
-daraus
-Start
-Kontrolle
-Einflu
-sterreich
-Allein
-Norden
-Wunsch
-manche
-Wahlen
-Reise
-steigen
-gemeinsame
-Darstellung
-Demokratie
-Knig
-England
-nennen
-Teile
-Jahrhunderts
-denken
-Name
-Lehrer
-S.
-laufenden
-verbunden
-Qualitt
-zustzliche
-Widerstand
-schn
-Spanien
-gegangen
-Beamten
-Jeder
-Europas
-Freunde
-mitteilte
-erklren
-Familien
-Gerade
-gefallen
-Aktie
-Krise
-Baden-Wrttemberg
-Nummer
-wies
-auerhalb
-gestiegen
-Reform
-Literatur
-Arbeitslosigkeit
-Lebens
-Sozialdemokraten
-gewann
-Moment
-angeblich
-entsprechend
-Mill
-weiteres
-betrgt
-dritte
-wesentlich
-Amerika
-Insel
-britische
-Nachfolger
-entspricht
-dahin
-unseren
-solcher
-Juden
-Sport
-Rathaus
-verkaufen
-grere
-Frhjahr
-gebaut
-Wahrheit
-dar
-Kommission
-Polizisten
-Bosnien
-offensichtlich
-Grundlage
-relativ
-Nein
-Klasse
-tut
-hngt
-wenigstens
-aktuellen
-Modell
-Herstellung
-hinzu
-Gedanken
-bernahme
-entwickeln
-Quartal
-meiner
-drften
-Keine
-jener
-Zustimmung
-legt
-fordern
-Einheit
-Natrlich
-blieben
-Laut
-in Zukunft
-Szene
-Klaus
-Bundeskanzler
-Schwierigkeiten
-geblieben
-lesen
-Besonders
-getroffen
-keineswegs
-Abschlu
-Verlag
-Interessen
-Netz
-anschlieend
-Plan
-Ausbildung
-befindet
-zunehmend
-verzichten
-gespielt
-ermittelt
-legte
-Ruhe
-Hans
-Hndler
-genutzt
-hhere
-starke
-treten
-Veranstaltung
-Stimmung
-rzte
-erheblich
-standen
-Teilnehmer
-mchten
-starken
-Forderungen
-Stand
-Anlage
-siehe
-erfolgt
-Vertrieb
-beste
-gelungen
-Ordnung
-Andreas
-lautet
-kritisiert
-Schrder
-machten
-verstrkt
-Sden
-Haltung
-freien
-weist
-nahezu
-Motto
-abgelehnt
-gelang
-gezogen
-frhen
-schreiben
-aufs
-gleiche
-ffentlich
-Huser
-kleiner
-folgt
-Einer
-Ja
-Wien
-mglichen
-weiterer
-kaufen
-Gefhl
-wirtschaftlichen
-Initiative
-hofft
-drfe
-Person
-Telekom
-kennen
-interessiert
-Beitrag
-Geschftsjahr
-lernen
-gefragt
-bezeichnete
-Meister
-Bcher
-krzlich
-Tradition
-einzelne
-Vorsitzender
-Verband
-Grne
-berzeugt
-Rckkehr
-Also
-schwere
-falsch
-unten
-behandelt
-indes
-groes
-Worte
-getan
-Vorstellung
-somit
-langsam
-Whlen
-gedacht
-gendert
-Bisher
-hervor
-Hessen
-Stdte
-unbedingt
-Hotel
-Artikel
-ttig
-zahlreichen
-Geburtstag
-gesprochen
-schlieen
-Engagement
-Alles
-Grnde
-erlaubt
-Kl.
-Auslnder
-Anleger
-grer
-verlieren
-Verhalten
-ausgesprochen
-fanden
-Betriebe
-Praxis
-ums
-galt
-Gemeinden
-Wolfgang
-Kanzler
-Viertel
-private
-Zustand
-miteinander
-genauso
-prsentiert
-Planung
-Forschung
-staatlichen
-Gott
-einzigen
-wichtigen
-kosten
-Verkehr
-befinden
-Kauf
-Vorstellungen
-Halle
-Untersuchung
-s
-Rom
-bessere
-unserem
-jeweiligen
-angelegt
-beendet
-Flle
-Einschtzung
-stehe
-Dienst
-herrscht
-Begriff
-Sekunden
-Essen
-ans
-erfllt
-Krankenhaus
-Auskunft
-bauen
-Rechnung
-Arbeitnehmer
-endgltig
-Truppen
-Jungen
-Aufbau
-leider
-verpflichtet
-Auffassung
-komme
-Karriere
-bezahlen
-Telefon
-Rest
-Umwelt
-schlgt
-bewut
-wichtiger
-Sonne
-trat
-Inzwischen
-gelangen
-schneller
-Kandidaten
-Brief
-folgenden
-erscheinen
-wirtschaftliche
-Nr.
-Fahrer
-erforderlich
-Rennen
-Nachfrage
-Morgen
-Verdacht
-eigener
-Hinweis
-Umgebung
-besttigte
-Regelung
-Fenster
-dienen
-modernen
-zustndig
-Flughafen
-Generation
-gelegt
-ergeben
-nationalen
-Waffen
-Schicksal
-Entscheidungen
-Jugend
-Niederlage
-Spa
-Niveau
-Gelnde
-Trend
-heien
-Tatsache
-Presse
-Feuer
-bezahlt
-Frderung
-Ganz
-Bildung
-vorstellen
-grundstzlich
-voller
-Winter
-italienischen
-Botschaft
-Investoren
-Grad
-Geschfte
-Leser
-spielte
-bayerischen
-erzielt
-reichen
-Einrichtung
-Energie
-Gelegenheit
-regelmig
-bertragen
-Freude
-verndert
-Umgang
-Fans
-entweder
-Dauer
-Finanzierung
-Hersteller
-Gre
-eingestellt
-Kontakt
-frh
-ursprnglich
-m
-Prinzip
-Ausdruck
-definieren
-Mittelpunkt
-Wunder
-eindeutig
-Quadratmeter
-Mitarbeitern
-Behandlung
-greren
-Nachbarn
-Gleichzeitig
-Schriftsteller
-Himmel
-hoffen
-untersttzen
-Auge
-Risiko
-allgemeinen
-verdient
-Tor
-Finanzminister
-Maria
-behauptet
-Rcktritt
-schwarzen
-bewegen
-Immerhin
-plus
-mgliche
-passiert
-Angesichts
-betroffen
-durchgefhrt
-entsteht
-Vorwrfe
-nher
-bekam
-Aussage
-Verfassung
-Helmut Kohl
-Bewohner
-vorhanden
-richtige
-brigens
-Kommunen
-Stdten
-Werner
-verfgt
-Filme
-Tabelle
-historischen
-Werbung
-fragt
-Gegenteil
-Fischer
-Gegensatz
-Bauern
-Arzt
-Leitung
-voraussichtlich
-Dieter
-besondere
-Abgeordneten
-sehe
-DIE
-Arbeiter
-Beschlu
-festgenommen
-Ermittlungen
-Minute
-Anzahl
-Willen
-Ruf
-aktiv
-Zwischen
-Karlsruhe
-einiger
-westlichen
-Schweden
-technischen
-verwenden
-Vorwurf
-zwanzig
-the
-hheren
-offiziell
-tief
-in der Regel
-Du
-Ausbau
-Auswahl
-Voraussetzung
-Wissenschaft
-richtigen
-schien
-festgelegt
-Bilanz
-erhhen
-kurzem
-Fast
-Gang
-vorerst
-Hnde
-wirken
-Vertrauen
-denkt
-lsen
-Positionen
-zhlen
-Vernderungen
-besitzt
-Alternative
-Falle
-Entwurf
-Ziele
-sichern
-ernst
-positiv
-Tat
-ermglicht
-Ideen
-Damals
-ausgeschlossen
-nderung
-Ebene
-uerst
-Lager
-zweimal
-Brandenburg
-Tr
-dringend
-Regisseur
-Wechsel
-Begrndung
-alter
-Wirklichkeit
-Pfennig
-fehlen
-links
-Summe
-Aktivitten
-Erinnerung
-Zugang
-II
-praktisch
-geffnet
-Leipzig
-Frank
-Strecke
-japanischen
-fhrt
-Wende
-Herz
-Autoren
-frs
-brigen
-Andere
-Ausgabe
-Fuball
-Klner
-kritisierte
-Projekte
-versteht
-Stil
-letztlich
-Aussagen
-Oberbrgermeister
-herum
-Bundeswehr
-Verstndnis
-steigt
-kmpfen
-zugunsten
-glaube
-Fraktion
-Posten
-Dorf
-Post
-unmittelbar
-Bruder
-auen
-welcher
-Dagegen
-Rang
-Trotzdem
-Krankheit
-Heinz
-eingerichtet
-Auswirkungen
-Strom
-blo
-Auseinandersetzung
-zumal
-Struktur
-Linie
-Felder
-Ministerprsidenten
-dient
-Clinton
-wute
-falls
-entstand
-Herrn
-Autofahrer
-Information
-Erwartungen
-Sitz
-definiert
-warf
-Fusion
-Untersuchungen
-gaben
-verlor
-los
-daraufhin
-Zinsen
-scheinen
-Sowjetunion
-Bro
-angenommen
-Ursache
-Steuern
-fhlen
-Anlagen
-Jrgen
-Franzosen
-allzu
-liege
-verteilt
-soviel
-Jelzin
-Landtag
-Nrnberg
-Ab
-Bereichen
-stammt
-Service
-knftigen
-Kino
-Behrde
-gehandelt
-Nutzung
-ausgerechnet
-Interview
-Wissen
-zuerst
-aufgefordert
-Gewerkschaft
-davor
-Ausnahme
-Erhhung
-wchst
-gearbeitet
-Rechte
-eins
-unterschiedlichen
-Walter
-geradezu
-wirft
-international
-Zug
-erreichte
-Bedarf
-erlebt
-teuer
-Kritiker
-Flucht
-Klage
-nderungen
-u.
-informiert
-geschickt
-Gerhard
-erinnern
-Mnnern
-Unternehmer
-klingt
-Hinweise
-krftig
-fort
-rein
-eigenes
-Immer
-spt
-Erffnung
-Beratung
-Franz
-Gefngnis
-stdtischen
-angezeigt
-rasch
-vorgestellt
-erfllen
-freie
-fertig
-Haushalt
-bercksichtigt
-Dadurch
-schlagen
-Direktor
-Realitt
-Falls
-B
-Schreiben
-Sender
-Provinz
-Job
-festgestellt
-Standort
-Beruf
-gestorben
-voraus
-gesucht
-berwiegend
-Stellung
-Einigung
-Vorschlge
-Texte
-fhlt
-Schuld
-leichter
-vierten
-Halbjahr
-Rcken
-Innenminister
-Karten
-halben
-betrachtet
-schlug
-geschehen
-Zeitraum
-vermeiden
-stattfinden
-prfen
-unterdessen
-auslndischen
-vieler
-Formen
-Tore
-starb
-Regeln
-Einrichtungen
-Umfang
-fragen
-Konflikt
-Vereinigung
-Vier
-Je
-Teilen
-Vorsitzenden
-Voraussetzungen
-Pltze
-beraten
-Einwohner
-Verluste
-rechten
-zugeordnet
-tausend
-gerechnet
-offenen
-warnte
-verbessern
-unterwegs
-fhrenden
-Hauses
-Anbieter
-bernimmt
-diskutiert
-Herren
-Anstieg
-auslndische
-Objekte
-Geschichten
-versuchte
-bisherige
-beschreibt
-Etwa
-Hof
-Serie
-allem
-Unterschied
-weien
-trkischen
-Revolution
-Personal
-hilft
-Karl
-Grndung
-Martin
-verboten
-verhindert
-nahmen
-Lust
-Schauspieler
-Fahrt
-Veranstalter
-begrndet
-Wahlkampf
-Auftritt
-guter
-gutes
-ARD
-Dichter
-Vorbild
-finanziellen
-Allianz
-zerstrt
-hart
-rief
-Einnahmen
-ermglichen
-einig
-Beamte
-and
-gelingt
-in erster Linie
-Status
-gefhrdet
-Vorteil
-Strukturen
-rechts
-staatliche
-Kooperation
-Spiele
-Krfte
-persnlich
-wachsen
-Atmosphre
-Landesregierung
-wann
-Angriff
-Mller
-Regionen
-Dresden
-besetzt
-technische
-Plus
-Darber hinaus
-gesichert
-besonderen
-gehrte
-verspricht
-vergeben
-traf
-a
-wonach
-Inhalt
-Vorhaben
-plant
-Galerie
-Horst
-Protest
-Urlaub
-gelassen
-Traum
-Geben
-steckt
-Leuten
-bestimmen
-mehrfach
-Sollte
-Ttigkeit
-wesentlichen
-Josef
-Alexander
-beteiligen
-unabhngig
-finanzielle
-Anwalt
-Veranstaltungen
-berraschend
-gescheitert
-offiziellen
-pflegen
-roten
-bildet
-solange
-Erfolge
-schliet
-Helmut
-Innenstadt
-Junge
-Mitteln
-Peking
-aufgebaut
-Zeitungen
-Becker
-politischer
-Whler
-Software
-demnchst
-Konsequenzen
-Wird
-erzeugt
-retten
-unterschiedliche
-verffentlicht
-hchsten
-stimmt
-Reaktion
-Bernd
-halte
-reduziert
-moderne
-mache
-M.
-Rckgang
-schwierig
-produziert
-Ausgaben
-hrt
-Kassen
-Tokio
-General
-schlo
-Gnter
-deswegen
-organisiert
-ZDF
-Methode
-persnlichen
-Sorge
-Sorgen
-verfolgt
-Ungarn
-Nato
-Messe
-israelischen
-vollstndig
-Figuren
-kurzen
-Fest
-bosnischen
-welchen
-Angeklagten
-Hhepunkt
-knftige
-finanziert
-aktuelle
-zeigten
-bekannten
-sptestens
-Strategie
-vorgeworfen
-bemht
-sorgt
-Rat
-meinem
-Neuen
-Ostdeutschland
-gegenwrtig
-bentigt
-Spur
-Ball
-Finale
-keinem
-schne
-reagiert
-Manfred
-schtzen
-Ernst
-stammen
-Rande
-Schatten
-verbessert
-jdischen
-positive
-manchen
-entlassen
-Phase
-Vorgang
-Asien
-eng
-halbe
-beziehungsweise
-Vereinigten Staaten
-Gemeinschaft
-Abschnitt
-Verbrechen
-dank
-Geist
-tot
-eingefhrt
-berichten
-anlegen
-Kirchen
-Funktionen
-Sanierung
-Arbeitsplatz
-Sieger
-Aktionen
-vorgelegt
-verabschiedet
-Wind
-vorbereitet
-Fahrzeuge
-Kurse
-untersucht
-durfte
-u.a.
-Maschinen
-Unsere
-ausgelst
-Indien
-Haft
-bewegt
-Zweck
-Whrung
-bitte
-Jahrzehnten
-Wald
-wichtigste
-Zimmer
-Verlauf
-ausgesetzt
-Prfung
-Verwendung
-kurze
-Zunchst
-Blut
-Anwendung
-Anhnger
-Aufnahme
-Sammlung
-benutzt
-Angebote
-Einstellung
-Umsetzung
-Dach
-Irak
-gezwungen
-Premiere
-AP
-hoher
-starten
-Kasse
-Nichts
-Hektar
-persnliche
-Paul
-Termin
-gemeldet
-entwickelte
-Tatschlich
-Kontakte
-anbieten
-Rume
-Abgeordnete
-stellten
-Regierungschef
-menschlichen
-Abbau
-meldete
-Ton
-Unfall
-Touristen
-englischen
-Abkommen
-erfat
-Solche
-Metern
-selbstverstndlich
-Stiftung
-Existenz
-Zeugen
-Gold
-Absicht
-Objekt
-Anders
-Anklage
-Verbraucher
-funktioniert
-Groen
-bestehenden
-Einkommen
-beider
-sinnvoll
-Abstimmung
-liefern
-schafft
-Ecke
-Siemens
-Gutachten
-Version
-Kennzeichen
-Konferenz
-Pariser
-Bundesliga
-erhebliche
-erfolgen
-traditionellen
-Dialog
-Dutzend
-abhngig
-hngen
-ausgegeben
-Bedenken
-ergibt
-einschlielich
-Konkurrenten
-Iran
-vermutet
-aufnehmen
-verzichtet
-bundesweit
-bekannte
-betroffenen
-befrchten
-Bekl
-Anerkennung
-Ehe
-liest
-Gast
-damaligen
-Wiener
-gengend
-ersetzt
-Vereine
-beobachtet
-notwendigen
-verdienen
-niemals
-Brand
-verstanden
-stolz
-reagieren
-Laufe
-schnen
-vorgenommen
-erhoben
-Spuren
-mitten
-Reformen
-erschien
-Mut
-grnen
-Christian
-verliert
-Anna
-Aussicht
-andererseits
-Staates
-Charakter
-Spiegel
-Analyse
-Kapital
-Organisationen
-Beschftigung
-Herzen
-einiges
-Landwirtschaft
-bedroht
-linken
-Deutscher
-Russen
-Derzeit
-stellvertretende
-eingeladen
-verlangen
-langem
-Stadtrat
-Beitrge
-erkannt
-historische
-Zuschauern
-trug
-Afrika
-Schritte
-hchste
-Mord
-Dortmund
-Studium
-erlutert
-Alltag
-Teilnahme
-befrchtet
-geschafft
-Betrag
-Nachmittag
-solches
-Betroffenen
-ausdrcklich
-jenen
-prsentieren
-Bildern
-Flche
-Berichte
-Wiesbaden
-klassischen
-heftig
-uerte
-Gewinne
-Gesprchen
-klare
-umgesetzt
-Justiz
-soweit
-wiederholt
-Bislang
-durchsetzen
-ausreichend
-endet
-Atlanta
-holen
-Abstand
-geprgt
-Nation
-Meer
-Berlins
-keinerlei
-aufgerufen
-Mitgliedern
-gewisse
-Programme
-Musiker
-Unabhngigkeit
-einsetzen
-Auftrge
-Pflege
-Management
-behaupten
-Bier
-gewinnt
-Verbesserung
-Jahresende
-belegt
-besseren
-Nachrichten
-beschrieben
-Zuge
-SAP
-Saal
-Berufung
-schwarze
-Farbe
-Georg
-Konzert
-Umfeld
-gelernt
-Besitz
-Wand
-Anforderungen
-Kabinett
-Kosovo
-Sachsen
-Pause
-erstes
-Waren
-Landgericht
-Hnden
-Integration
-fuhr
-gebeten
-gering
-Vorlage
-New Yorker
-www
-Schlo
-zustndigen
-Risiken
-smtliche
-gelegen
-Aufklrung
-Fnf
-Daher
-erleben
-Pflanzen
-spren
-feiern
-schwerer
-drauen
-Beweis
-Gewicht
-umgerechnet
-Europischen Union
-lagen
-Fonds
-Kompromi
-handeln
-Training
-Kunde
-geschlagen
-hinweg
-Hochschulen
-Verhltnisse
-gelte
-Gesundheit
-Nachricht
-Mein
-junger
-Kapitel
-frdern
-Kamera
-greifen
-hierzulande
-normalen
-Augenblick
-Waigel
-werfen
-Verletzungen
-uerungen
-Tausende
-begleitet
-blichen
-Materialien
-Blatt
-Bereiche
-Abteilung
-Arbeitsschritt
-erzhlen
-dauert
-Heinrich
-belastet
-Vertrge
-Wetter
-Keller
-Farben
-entlang
-begrndete
-Welche
-fielen
-Vereinbarung
-Whrungsunion
-Zugleich
-Sprecherin
-Fhrer
-Gegenwart
-Erste
-zustzlichen
-Londoner
-angewiesen
-Kriterien
-Kurz
-hergestellt
-vereinbart
-lasse
-Ihren
-Ministerium
-Pfund
-schlechte
-Kanada
-Vereinten Nationen
-Bundesbank
-Dividende
-investiert
-italienische
-Gut
-Sdafrika
-Gestern
-getragen
-profitieren
-japanische
-Internationalen
-geprft
-sparen
-Systems
-Stadtteil
-hauptschlich
-Robert
-versichert
-vorgeschlagen
-hinein
-Co
-Brasilien
-spten
-Gesetze
-Neues
-irgendwann
-Nordrhein-Westfalen
-unseres
-Maschine
-ostdeutschen
-beobachten
-Typ
-Seele
-Not
-Dienstleistungen
-Bord
-rechtzeitig
-BMW
-zuviel
-Zentimeter
-katholischen
-Spter
-Ereignisse
-offene
-Identitt
-folgte
-Bahnhof
-hielten
-allenfalls
-spanischen
-chinesischen
-Anfrage
-serbischen
-Produkt
-Australien
-A.
-Landschaft
-Regierungen
-Niedersachsen
-Schmidt
-beschftigen
-Groe
-Vorteile
-leiden
-arbeitete
-bayerische
-passieren
-Regie
-Eigentlich
-brig
-kleines
-hchstens
-Bemhungen
-Mrkte
-wert
-Pfarrer
-ungefhr
-zentrale
-warnt
-beinahe
-Microsoft
-vor Ort
-Mischung
-desto
-Vorgehen
-Oper
-zentralen
-sowieso
-liefert
-ruft
-Niemand
-Weltmeister
-Kern
-Beziehung
-jngste
-aufmerksam
-seitdem
-Reisen
-fhrten
-Arbeitsmarkt
-Fu
-bleibe
-leer
-Beobachter
-vermitteln
-Republikaner
-Verteidigung
-berrascht
-unverndert
-Werken
-klein
-Manche
-ffnen
-schtzt
-Bus
-Toten
-zogen
-mancher
-besitzen
-Hotels
-Rebellen
-Ausgleich
-gefeiert
-Ereignis
-Benutzer
-erhhte
-Reuter
-Methoden
-Feuerwehr
-angegeben
-Darin
-Reihen
-erzielte
-WM
-bernahm
-Abschied
-behalten
-Lande
-nationale
-entscheidenden
-wartet
-israelische
-Universitten
-Strke
-nunmehr
-gelegentlich
-anzeigen
-verndern
-trkische
-Bume
-finanzieren
-Briten
-gert
-selben
-Ihrer
-Vortrag
-Kommunikation
-bedeuten
-halt
-IG Metall
-Analysten
-Hongkong
-schlechter
-Vorbereitung
-Davon
-Katastrophe
-getrennt
-Figur
-derart
-Schlssel
-Stcke
-Bndnis
-geschieht
-Liter
-in Kraft
-Mauer
-Erkenntnis
-pat
-Kongre
-Hoffnungen
-spteren
-Marke
-Kenntnis
-Mannes
-Umstnden
-greift
-sa
-Details
-unmglich
-Nachrichtenagentur
-fragte
-gewi
-Belastung
-namens
-beweisen
-verfgen
-Anschlag
-Gebieten
-zahlt
-Kaum
-hchst
-Pressekonferenz
-falschen
-Bundeslnder
-langfristig
-schlechten
-Lsungen
-gestartet
-Andererseits
-konkrete
-Hat
-Fortsetzung
-Bundesrat
-Gesellschaften
-Tendenz
-falsche
-lehnte
-zustndige
-Helden
-sichtbar
-Aufmerksamkeit
-setzten
-Stefan
-Regen
-vorne
-lief
-geboten
-solch
-Genehmigung
-Milliarde
-dauern
-hufiger
-Kilogramm
-Bereitschaft
-Meine
-Besitzer
-eigentliche
-Partie
-Elisabeth
-Magistrat
-Unser
-doppelt
-Auseinandersetzungen
-dich
-Kollege
-militrischen
-ltere
-frchten
-Problemen
-Arten
-diejenigen
-Holz
-Erweiterung
-Denken
-Bewertung
-deutliche
-Europischen
-entscheidende
-Spielen
-Landkreis
-Dsseldorfer
-informieren
-geringer
-Jede
-Bundeslndern
-Aufgrund
-Variante
-Schwester
-Aufsichtsrat
-festlegen
-fortgesetzt
-Beteiligten
-Brgern
-Schden
-Sind
-nein
-betreiben
-positiven
-neuen Bundeslndern
-bergeben
-Frankreichs
-Internationale
-Zeitschrift
-Mitteilung
-Lehre
-gefrdert
-kleinere
-geeignet
-Weihnachten
-Umfrage
-Mieter
-halb
-Berg
-Kroatien
-Herbert
-nochmals
-registriert
-Tempo
-Spannung
-Klima
-Alten
-allgemeine
-See
-Bewerber
-irgendwie
-Freundin
-Pflicht
-erweitert
-Papst
-Widerspruch
-teilnehmen
-Trennung
-welchem
-erstellt
-Nase
-erklrten
-unterscheiden
-sicherlich
-Schulden
-senken
-Herzog
-entscheidend
-Stoff
-gerecht
-VW
-besucht
-enttuscht
-Architekten
-Anzeige
-berlegungen
-festen
-hessischen
-stiegen
-ersetzen
-Aktionre
-verhandelt
-zweiter
-sorgte
-Otto
-Privatisierung
-Auftakt
-zweier
-richtet
-Einheiten
-Versuche
-Zellen
-Mengen
-beziehen
-fhrende
-Schiff
-umfat
-Inszenierung
-Begegnung
-hnliche
-Groteil
-Theorie
-Gerhard Schrder
-denke
-vermittelt
-in Sachen
-demokratischen
-Zrich
-Stellungnahme
-welches
-erschossen
-gekauft
-Ma
-Dienste
-gesperrt
-Gestalt
-Stein
-Neubau
-weisen
-harten
-forderten
-feiert
-extrem
-allgemein
-Diesen
-voran
-Versorgung
-Eis
-billiger
-berprfen
-Mannheim
-betrifft
-verwies
-Demonstranten
-minus
-mgen
-Notwendigkeit
-berlassen
-ldt
-schicken
-vorhandenen
-notwendige
-Foto
-Bezeichnung
-finanziell
-Dank
-Schneider
-ehe
-Image
-Belgien
-gefhrlich
-betrieben
-Freiburg
-Steigerung
-durchschnittlich
-Schwerpunkt
-baut
-elektronischen
-Rulands
-Dokumentation
-Ablehnung
-dargestellt
-geklrt
-Brcke
-dreiig
-Bewutsein
-glcklich
-alleine
-Einstellungen
-ferner
-gewachsen
-empfiehlt
-errichtet
-egal
-legten
-Einstieg
-beteiligten
-Osteuropa
-scheinbar
-Reich
-kostenlos
-Anteile
-lteren
-geriet
-rger
-Lnge
-Verzicht
-Elemente
-gesorgt
-Menschenrechte
-weie
-Gestaltung
-Teams
-gebildet
-ruhig
-Premierminister
-kurzfristig
-Jerusalem
-Gerte
-Mund
-Lafontaine
-Vereins
-gefahren
-Frher
-Jugoslawien
-L
-jenseits
-wechseln
-versuchten
-sank
-samt
-polnischen
-Autobahn
-grne
-gehrten
-Herkunft
-Rckzug
-David
-Potsdam
-Hinzu
-Bill Clinton
-Garten
-betragen
-dpa-AFX
-diskutieren
-Architektur
-sterben
-Teufel
-Kommunisten
-erzielen
-Verteidigungsminister
-Fahrzeug
-Bestand
-Moderne
-John
-Institutionen
-Viel
-womglich
-Lauf
-beschrnkt
-Glas
-aufgehoben
-Szenen
-wahr
-lebenden
-auftreten
-Vorfeld
-ansonsten
-Transport
-zeichnet
-Strafe
-hinten
-jetzigen
-neuesten
-Bett
-besttigen
-gesunken
-erhielten
-Parteitag
-Krieges
-Verbot
-Beispiele
-sahen
-Sendung
-verbreitet
-erfolgreichen
-Vielmehr
-Eintritt
-gezahlt
-Belgrad
-kmmern
-zustande
-Durchschnitt
-Vordergrund
-antreten
-teurer
-Solidaritt
-steigern
-wnschen
-Philosophie
-gesetzlichen
-Ganze
-Tren
-US-Dollar
-Alfred
-riesigen
-vergeblich
-zumeist
-konzentrieren
-Maler
-Manchmal
-raus
-schlicht
-bereitet
-Hochschule
-Bundestrainer
-veranstaltet
-unklar
-Vorgnge
-groem
-Perspektive
-bewertet
-Kaiser
-breit
-lehnt
-blich
-Signal
-maximal
-Klinik
-Kufer
-Dame
-entschlossen
-reagierte
-einziger
-bestehe
-Auflsung
-Forum
-brachten
-Beine
-Kche
-Glauben
-schwierigen
-Customizing
-gelst
-Griff
-wahren
-Zge
-akzeptieren
-gemeint
-Betreuung
-gestalten
-betrug
-inneren
-erteilt
-Ausschu
-dreimal
-Dax
-Gedichte
-investieren
-verhaftet
-Yen
-sowjetischen
-Mexiko
-vorigen
-abends
-Palstinenser
-menschliche
-erwiesen
-bot
-Hauptversammlung
-innen
-Dnemark
-militrische
-Argument
-Verantwortlichen
-Haut
-Angeklagte
-Aufwand
-reine
-Distanz
-einstellen
-Betrieben
-Zuvor
-RTL
-Konjunktur
-Bernhard
-irgendwo
-Park
-sagten
-Damen
-unterschiedlich
-offizielle
-umstrittenen
-harte
-Beschftigte
-Amtszeit
-gesellschaftlichen
-laufende
-Hinter
-Konto
-International
-Ursachen
-im brigen
-vorn
-ausgezeichnet
-gelesen
-teilen
-akzeptiert
-absolut
-bestellt
-verweist
-vieles
-berzeugung
-Vermgen
-Politikern
-schnellen
-denkbar
-Fotos
-gemessen
-freuen
-Sprung
-stimmen
-reichlich
-Restaurant
-gestrichen
-gewarnt
-achten
-abgeben
-Friedrich
-Akten
-Kste
-wirtschaftlich
-jngst
-berufen
-schnelle
-Briefe
-rumte
-Kaffee
-Gelder
-Symbol
-Gebhren
-kleineren
-Europer
-Johann
-Interessenten
-entscheidet
-teilt
-Italiener
-Parameter
-Freunden
-verschwunden
-stecken
-garantiert
-Zuwachs
-Gerechtigkeit
-Rand
-Angestellten
-Haushalte
-weltweiten
-ausgestattet
-Club
-nieder
-bestehende
-einfache
-geschtzt
-UNO
-B.
-Moskauer
-Spekulationen
-nachmittag
-produzieren
-Ebenso
-Mhe
-Phantasie
-Berater
-Medizin
-geleistet
-stt
-Tode
-teil
-vorwiegend
-konzentriert
-Umweltschutz
-vgl
-freiwillig
-verursacht
-H.
-Alte
-Steuerreform
-FR
-Hafen
-allmhlich
-von Anfang an
-Wirtschaftsminister
-berzeugen
-Kurden
-teils
-Diskussionen
-Vorgnger
-Konzentration
-verschiedener
-Jahrzehnte
-verffentlichten
-begeistert
-beenden
-Richard
-Tagesordnung
-Fleisch
-Barcelona
-Schnitt
-Drogen
-mitgeteilt
-leitet
-nachts
-Anwohner
-Export
-Regel
-mittels
-besuchen
-Handlung
-erworben
-brach
-breiten
-Gert
-Ohren
-konkreten
-Wrde
-gbe
-Ablauf
-flieen
-Bezug
-Ukraine
-Eingang
-entschied
-Flugzeug
-Erkenntnisse
-Stock
-aussehen
-froh
-treibt
-Haben
-einfachen
-gepflegt
-gestanden
-beitragen
-Zhler
-beantragt
-Gefhle
-ergab
-Wesen
-betreibt
-brauche
-berprft
-Auflage
-besetzten
-Erinnerungen
-Jazz
-untergebracht
-Stern
-Mangel
-interessant
-Tasche
-Scharping
-verschoben
-Hund
-Barbara
-volle
-melden
-d.h.
-Demonstration
-weshalb
-berhmten
-Dokument
-l
-EU-Kommission
-anerkannt
-genannten
-berichteten
-echte
-DW
-reduzieren
-Bundes
-komplett
-Verbindungen
-Mainz
-sprachen
-fliegen
-liebsten
-folgende
-Manahme
-Konzerns
-Gemeinderat
-Hinsicht
-benutzen
-richten
-Mehrere
-Adresse
-Asylbewerber
-eine Reihe von
-Ludwigsburg
-Meldung
-Modelle
-Schlieung
-Umbau
-speziell
-Vaters
-verlangte
-Fachleute
-Chaos
-Zehn
-abgesehen
-auf jeden Fall
-Reaktionen
-monatlich
-Operation
-geuert
-hinnehmen
-gebraucht
-Krankenkassen
-fnfzig
-bestand
-Report
-Trken
-Kroaten
-dachte
-verbindet
-Papiere
-Liga
-Mir
-Kombination
-Studien
-Mae
-einerseits
-Bros
-Entwicklungen
-scharf
-wissenschaftlichen
-teure
-ausgebaut
-teuren
-Gremium
-Bildschirm
-Eigenschaften
-Zum Beispiel
-Staatsanwalt
-Geschwindigkeit
-optimistisch
-innere
-berlegen
-hoffe
-dir
-Stze
-gefat
-anhand
-formuliert
-Chinas
-rumt
-Ehefrau
-gewissen
-morgens
-erfassen
-J.
-Stars
-Absatz
-Sturm
-begrenzt
-im Gegensatz zu
-Eigentmer
-klagt
-lst
-Staatssekretr
-Ihrem
-Militrs
-finde
-Aufstieg
-Gebiete
-Genossen
-Kinkel
-Rente
-kommende
-Marktanteil
-Ware
-kmen
-ergnzt
-Genf
-gestaltet
-normale
-Katalog
-stnden
-heutige
-Vernderung
-Systeme
-vierte
-Datum
-Arbeitspltzen
-Finger
-Zufall
-Wolf
-Standard
-Griechenland
-Rechtsanwalt
-Unterschiede
-verschwinden
-betreut
-demnach
-Dokumente
-Armut
-verfolgen
-erfolgreiche
-Gebrauch
-Steuer
-Prag
-zurckzufhren
-hinterher
-S
-Kampagne
-Tanz
-bezieht
-Geburt
-existiert
-startet
-Hermann
-Geheimnis
-Ansprche
-Arm
-Lange
-wirkte
-Rudolf
-Arme
-treiben
-Umzug
-Verletzung
-Lasten
-lsst
-Theo Waigel
-Premier
-Scheitern
-unterzeichnet
-Muster
-Lufthansa
-befand
-Sicherung
-abgegeben
-gewnschten
-jahrelang
-aufgegeben
-abgebaut
-Masse
-Abzug
-begrt
-kme
-zitiert
-drcken
-niedriger
-kurzer
-kontrolliert
-Radio
-verlegt
-freut
-Anschlieend
-erheblichen
-versprochen
-spezielle
-fnften
-breite
-Verlngerung
-Angehrigen
-Star
-Gegend
-direkten
-Karte
-Schtzungen
-letzter
-erinnerte
-Instituts
-Generalsekretr
-schauen
-seinerzeit
-Turnier
-leichte
-i
-Technologie
-Ost
-Profis
-Kiel
-Genau
-engen
-absolute
-Fritz
-Handeln
-Aufschwung
-Vertretern
-Nazis
-Wilhelm
-aufgestellt
-Kilometern
-gesteigert
-Unterdessen
-Minus
-Zentrale
-Paar
-Religion
-Seitdem
-sterreichischen
-Beifall
-Merkmale
-Grundstck
-TAGESSPIEGEL
-halbes
-Tschetschenien
-Sarajewo
-Kurt
-Herrschaft
-verbinden
-wissenschaftliche
-Tier
-gesenkt
-Verteidiger
-ffnung
-drohen
-einziges
-umgekehrt
-Konflikte
-hnlich
-Baum
-Kapitn
-planen
-U
-ots
-betrachten
-Front
-geliefert
-Gastgeber
-entsprechen
-Angelegenheit
-Stadion
-trennen
-lebte
-lngere
-Gefahren
-Produkten
-Senkung
-kritisch
-Anschlu
-gegenseitig
-Darmstadt
-wachsenden
-Bblingen
-wuchs
-Spenden
-zugelassen
-Lastwagen
-klren
-Ulrich
-Schnheit
-Antworten
-Milosevic
-Bezirk
-Liberalen
-Vielzahl
-feststellen
-Abschaffung
-in der Tat
-geringen
-erkennt
-Sozialhilfe
-Stabilitt
-Einzelheiten
-Orchester
-Eigener
-Deutsch
-Snger
-durchs
-Kmpfe
-Fraktionen
-klaren
-Weiter
-erzeugen
-vorbergehend
-Franc
-beklagt
-elektronische
-gibt's
-bezogen
-Anlegen
-derzeitigen
-Graf
-Unterricht
-Stadtverwaltung
-Krankheiten
-Kommentar
-Etat
-tiefer
-Minderheit
-Index
-Ankndigung
-Brigitte
-eigentlichen
-beigetragen
-Umstze
-tat
-einstigen
-durchgesetzt
-seither
-Aufruf
-rufen
-Rumnien
-Augsburg
-Einladung
-gewhrt
-bewiesen
-Regelungen
-West
-bricht
-Landrat
-zugute
-hingewiesen
-langer
-versicherte
-streng
-Hunderte
-Unterlagen
-Schlag
-sammeln
-Instrument
-Bischof
-holte
-Aussichten
-Kredite
-uern
-TV
-Verteilung
-achtziger Jahre
-Proteste
-hohem
-geringe
-Bestandteil
-Vorschriften
-Israels
-Westdeutschland
-Joachim
-jederzeit
-suchte
-Botschafter
-Tageszeitung
-Infrastruktur
-ndert
-Bayerischen
-NATO
-verlngert
-aller Welt
-geworfen
-Respekt
-Subventionen
-derartige
-lieben
-Ring
-technisch
-Plnen
-angesehen
-Deutsche Bank
-englische
-Akt
-Vogel
-sinken
-Mercedes
-Herausforderung
-wenden
-lsw
-Frankfurt/Main
-hierzu
-Wandel
-Angestellte
-Handwerk
-Tote
-Stoiber
-singen
-Bekmpfung
-Ensemble
-Besetzung
-Erstmals
-belegen
-perfekt
-gem
-gesammelt
-Helfer
-Definition
-wider
-versorgt
-Jobs
-Show
-Volkes
-Verbnde
-Bearbeitung
-Flchen
-Rainer
-empfangen
-konsequent
-sozusagen
-lauter
-Datenbank
-wohnen
-Institute
-dicht
-Darauf
-Delegierten
-Offenbach
-Alkohol
-eingeleitet
-Bevor
-vermuten
-Hanau
-ca
-drohte
-Jan
-Daneben
-ehemaliger
-Erzhlung
-Uwe
-Arbeitslosen
-ernsthaft
-Streik
-gefllt
-Armen
-schaut
-jenem
-schuldig
-erfhrt
-Niederlanden
-Statistik
-Kreisen
-Medikamente
-Brgerhaus
-verhandeln
-Gegenstand
-Oberflche
-befreit
-verhalten
-griechischen
-PC
-ermordet
-amerikanischer
-binnen
-kulturellen
-Konsequenz
-drngen
-Heidelberg
-hab
-erluterte
-City
-strken
-anllich
-verkndet
-Zusammen
-stie
-Gas
-gezielt
-Quelle
-Volumen
-Schaffung
-Malerei
-Madrid
-Sechs
-K.
-Verpflichtung
-handele
-Tiefe
-Stufe
-Mtter
-Zeilen
-Leider
-studierte
-engagiert
-verweigert
-Ihm
-eines Tages
-dran
-verteidigen
-stelle
-Laden
-daneben
-einzig
-Temperaturen
-Preisen
-bedient
-rechte
-rote
-jdische
-Trger
-genaue
-berschritten
-Ehre
-wahre
-wieviel
-ausgefhrt
-Antrge
-Esslingen
-endete
-Angriffe
-Chemie
-Serbien
-mehrmals
-Kleinen
-Einsparungen
-einander
-internen
-eigens
-Sponsoren
-Streitkrfte
-leidet
-vorsichtig
-genauer
-Klassen
-Bitte
-darstellen
-politisches
-Husern
-Truppe
-bedarf
-normal
-Telephon
-Kassel
-Rundfunk
-Schnee
-Abrechnung
-stoppen
-damalige
-Kriminalitt
-erwarteten
-Thringen
-rtlichen
-Schau
-versehen
-durchfhren
-speziellen
-vollen
-Nutzen
-Hinblick
-Tagung
-versetzt
-Zuordnung
-sdlich
-D
-schtzen
-Sprachen
-zurckkehren
-chinesische
-riesige
-kmpft
-Stich
-Begeisterung
-Innerhalb
-umfassende
-zustimmen
-Bewegungen
-Nrnberger
-inszeniert
-kritischen
-kologischen
-zugestimmt
-Tour
-genehmigt
-Nummer eins
-Ausgang
-These
-Sachen
-Mode
-Mll
-zufllig
-zurckgewiesen
-Absage
-Sand
-Profil
-gerufen
-Vernunft
-Unglck
-Entlastung
-Korruption
-Amsterdam
-dreht
-feste
-Zerstrung
-Rhein
-Mrder
-fehlte
-Niederlande
-All
-Tourismus
-Lohn
-durchzusetzen
-Autorin
-zurckgegangen
-Gottes
-direkte
-mittleren
-Komponenten
-C
-Ansatz
-Einzelhandel
-Element
-live
-Historiker
-frisch
-kritische
-singt
-Last
-Vielfalt
-klassische
-erlitten
-Moral
-Beschreibung
-trafen
-Schiedsrichter
-deutsch
-Vorsprung
-Hitler
-kulturelle
-Sekunde
-Erich
-grter
-Kandidat
-enge
-Flu
-hnlichen
-gefolgt
-Einmal
-meistens
-Gegenber
-westdeutschen
-passen
-regionalen
-Boris Jelzin
-quer
-Mediziner
-Gnther
-genieen
-Fortschritt
-Gramm
-essen
-traditionelle
-Prof
-Marktwirtschaft
-leichten
-entwickelten
-ursprnglichen
-Militr
-berraschung
-Vision
-FC Bayern
-Norwegen
-wnscht
-Strmer
-gegenwrtigen
-FRANKFURT
-inklusive
-Journalist
-Station
-sozialistischen
-Rolf
-zuversichtlich
-Zweiten Weltkrieg
-geeinigt
-Ferner
-liebt
-ausgehen
-internationaler
-unterscheidet
-Museen
-Affre
-serbische
-Tne
-intensiv
-deutlicher
-fassen
-Auffhrung
-Zahlung
-Transaktion
-Prognose
-War
-versprach
-Wein
-Mailand
-Uni
-Ursula
-evangelischen
-Portugal
-Vortag
-Bchern
-normalerweise
-meldet
-Motiv
-liee
-Schleswig-Holstein
-Durchbruch
-Wnsche
-erkennbar
-vornehmen
-erleichtert
-ausgewiesen
-Schumacher
-Lieder
-Fr
-Geschehen
-arabischen
-drin
-niedrigen
-nutzt
-vielfach
-Christen
-Wieder
-Versicherungen
-umstrittene
-OB
-Quellen
-Wiedervereinigung
-folgten
-Fakten
-aufgelst
-gypten
-erffnen
-bentigen
-grndete
-vertraut
-Zuschsse
-erhltlich
-fortsetzen
-Hals
-Inseln
-Zustzlich
-Bayerns
-n
-prsentierte
-Klub
-ermitteln
-Buches
-Therapie
-fter
-verdanken
-Schlagzeilen
-Erwachsene
-Konsens
-katholische
-Explosion
-fgte
-dunklen
-beschlo
-wachsende
-Generationen
-sobald
-ungewhnlich
-ffnet
-Parlaments
-Jedes
-schwieriger
-drauf
-enger
-Argumente
-Gipfel
-erstellen
-Perspektiven
-Bauer
-gelingen
-verlt
-Kann
-Parteichef
-Phnomen
-umstritten
-scheiterte
-bemerkt
-Alternativen
-Johannes
-Gerchte
-III
-Ausma
-Treffer
-Insbesondere
-Lebensmittel
-Stolz
-IWF
-heftigen
-bemhen
-Kammer
-Schlern
-globalen
-Branchen
-redet
-Passagiere
-gebunden
-Rcksicht
-drastisch
-Option
-Lieferung
-Menschheit
-reinen
-Haare
-kologische
-Schfer
-Los Angeles
-entdecken
-Pltzen
-Durchfhrung
-frchtet
-angeben
-Jrg
-beherrscht
-Sturz
-weitaus
-sofern
-existieren
-reisen
-organisieren
-Skandal
-Rumen
-auseinander
-zugrunde
-IBM
-Tieren
-Nachwuchs
-St.
-Treffpunkt
-gelangt
-derweil
-Sozialisten
-Rollen
-wendet
-hinterlassen
-Greenpeace
-berflssig
-Lohnfortzahlung
-Vorgaben
-niederlndischen
-spielten
-verringert
-Abwehr
-geschtzt
-Annahme
-getrieben
-erreichten
-Japaner
-strksten
-Kreise
-Belegschaft
-generell
-Solange
-stdtische
-Einsicht
-Anzeigen
-bse
-parallel
-Wagner
-kontrollieren
-erstenmal
-Vorstandsmitglied
-Fhigkeit
-Anliegen
-Befreiung
-total
-Mannschaften
-Bundesprsident
-Test
-vorlufig
-Zeile
-gebucht
-Abends
-Mythos
-Verffentlichung
-vierzig
-umfassenden
-Ansonsten
-werben
-Gehirn
-erwerben
-Substanz
-unteren
-Rostock
-berprfung
-Rentner
-zweites
-DGB
-Vorsto
-sichergestellt
-deutlichen
-musste
-Gesetzgeber
-gleichermaen
-bewahren
-Motive
-erledigt
-vorlegen
-Kindergarten
-vertritt
-Deren
-weiten
-Sowohl
-Schwarz
-demokratische
-Akademie
-lste
-aufzunehmen
-Luxemburg
-euch
-empfehlen
-linke
-erwhnt
-vergleichsweise
-schnsten
-Kleine
-Entdeckung
-Taten
-Waffe
-lschen
-Golf
-etliche
-Zugriff
-Leverkusen
-einzelner
-jenes
-Stellvertreter
-Mittlerweile
-hierfr
-Loch
-verwandelt
-kehrt
-eingerumt
-Holding
-Ansehen
-ausfallen
-Merkmal
-Regierungschefs
-DFB
-ffentlicher
-Immer wieder
-Fen
-letztes
-Stoffe
-Regime
-Schweigen
-Periode
-feierte
-durften
-for
-Abenteuer
-endgltige
-bittet
-Redaktion
-Reden
-Gsten
-versteckt
-Immobilien
-Kilo
-gerichtet
-Ludwig
-Brsen
-benachbarten
-echten
-bezeichnen
-berblick
-konservativen
-Kndigung
-Ausstattung
-Belastungen
-verarbeitet
-Staatsprsident
-Zumindest
-Qualifikation
-krank
-stehenden
-Faust
-Freistaat
-Soll
-angesprochen
-untersuchen
-Landeshauptstadt
-Fazit
-jemals
-Umstellung
-spanische
-Enttuschung
-Komponente
-Verbandes
-gewut
-brechen
-handelte
-Lediglich
-bercksichtigen
-rot-grnen
-gerettet
-verffentlichte
-mde
-vorgesehenen
-streiten
-gengt
-Kulturen
-Telekommunikation
-ehemals
-Sachsen-Anhalt
-herrschte
-beschreiben
-steigenden
-Meldungen
-Kindheit
-bewlkt
-Oft
-freundlich
-Betreiber
-Hanauer
-besorgt
-restlichen
-erlauben
-Etwas
-UN
-gestoen
-Bibliothek
-verschaffen
-Berichten
-kommunistischen
-Gute
-Lied
-Agentur
-christlichen
-Gemeinsam
-Erwerb
-Sportler
-Nationalspieler
-geborene
-Quote
-berechnet
-Partnerschaft
-Komdie
-Brgerkrieg
-religisen
-Offenbar
-Mnchener
-Einzug
-schwach
-quasi
-schildert
-Sonst
-Motor
-Rettung
-aufgeben
-drngt
-geholfen
-Dialogfenster
-Schu
-verglichen
-Protokoll
-sozial
-Christine
-Zunahme
-Brsengang
-Wohl
-vermag
-gestoppt
-Offensive
-Versprechen
-gehre
-behandeln
-Sogar
-gelaufen
-Do
-Brder
-mitunter
-Entlassung
-Steffi Graf
-aufgefhrt
-Inflation
-bergang
-Monika
-bearbeitet
-Sicher
-Lhne
-Filmen
-Arbeitsgruppe
-voneinander
-heimischen
-Bundesverfassungsgericht
-keinesfalls
-gefllt
-Unrecht
-eingegangen
-Im brigen
-Magazin
-Detail
-Innenministerium
-Krzungen
-begannen
-begegnen
-entdeckte
-geholt
-massiven
-umgehen
-Potential
-einfacher
-verlie
-weite
-Mnster
-Rock
-Franken
-Sanktionen
-anfangs
-jngeren
-Vizeprsident
-Kpfe
-Bayer
-verstndlich
-Weniger
-eingeben
-zugesagt
-mit Blick auf
-mehrerer
-Eines
-Besuchern
-blauen
-Ehemann
-Haar
-hinsichtlich
-Defizit
-Bach
-Halbfinale
-Fortschritte
-Fax
-Zur Zeit
-lebende
-skeptisch
-Vermittlung
-reichte
-Karin
-Irland
-Gesetzentwurf
-realisiert
-Verfolgung
-Freundschaft
-Fhigkeiten
-geleitet
-Tages
-Reduzierung
-Andrea
-Senator
-Optimismus
-Trnen
-westliche
-Singapur
-leeren
-zwingen
-zeitweise
-Ersatz
-to
-Linken
-Flgel
-Erhalt
-jung
-stimmten
-Auer
-Anstrengungen
-Kalifornien
-Bedrohung
-durchschnittliche
-festgehalten
-Romans
-natrlichen
-Versammlung
-scheitern
-Arbeitszeit
-oberen
-locker
-eventuell
-Impulse
-Opfern
-gestohlen
-vorliegen
-wandte
-drehen
-einstimmig
-v.Chr.
-unabhngigen
-Bertelsmann
-Koch
-tglichen
-darstellt
-verteidigt
-massiv
-Brsseler
-verteilen
-Messer
-erforderlichen
-entfallen
-Aufhebung
-klagen
-Weber
-Prognosen
-Flugzeuge
-vergangene
-Karlsruher
-Angehrige
-geltend
-Geschmack
-Vlker
-Wall Street
-derselben
-Flchtlingen
-Holland
-fhre
-Nationalmannschaft
-gekennzeichnet
-kommunalen
-lokalen
-Fassung
-Nationen
-PKK
-Ruhestand
-empfohlen
-Flug
-Dimension
-verdoppelt
-dortigen
-islamischen
-Films
-ausgegangen
-gegrndete
-aufbauen
-angeschlossen
-steigende
-wohin
-Gegenzug
-Erbe
-gesellschaftliche
-Taiwan
-wohnt
-bearbeiten
-Verarbeitung
-schner
-Festival
-Arbeitslose
-Ausstellungen
-Argentinien
-Versicherung
-bedeute
-lautete
-Sozialismus
-Held
-aufeinander
-Auflagen
-Aktienmarkt
-bekanntlich
-nehme
-angeht
-Kompetenz
-Christdemokraten
-im Grunde
-Freizeit
-Leidenschaft
-stoen
-Fabrik
-reiche
-deutet
-organisierten
-Wann
-berwinden
-Deutschen Bank
-blickt
-studiert
-Beratungen
-lebten
-Finanzen
-Spielern
-Chor
-freier
-Laufzeit
-Ali
-Harald
-vollkommen
-stattfindet
-Photo
-hob
-Ministerin
-Prsenz
-ausgeliefert
-angegriffen
-gewohnt
-Delegation
-geltenden
-Sonnabend
-exakt
-Architekt
-Anton
-Helga
-zum anderen
-Abs
-heftige
-schwarz
-Release
-Altstadt
-Modernisierung
-Leiden
-Italiens
-Schiffe
-Bruch
-fllen
-diesjhrigen
-EG
-unterhalten
-Werden
-begangen
-Wohnungsbau
-zugnglich
-Oskar Lafontaine
-Erika
-Ausnahmen
-Gehalt
-polnische
-Diesmal
-N
-Varianten
-Nerven
-Flammen
-Abhngigkeit
-Zeuge
-befreien
-zeige
-europischer
-nrdlich
-Kandidatur
-lohnt
-kommentierte
-steuern
-Islam
-still
-Programms
-wesentliche
-Kleidung
-neuerdings
-anderswo
-sage
-Max
-dorthin
-verbesserte
-auslndischer
-grnden
-errichten
-Rahmenbedingungen
-Mrkten
-Komponisten
-Mrchen
-Inhalte
-Null
-Kubikmeter
-Marketing
-ntigen
-Arbeitsamt
-Planungen
-Bezirksausschu
-Pressesprecher
-Unterhaltung
-dokumentiert
-Bedingung
-Tbingen
-Weder
-Zeichnungen
-gewannen
-Sabine
-Dass
-pldiert
-bertragung
-bist
-gekostet
-Bearbeiten
-Lesen
-getreten
-USD
-leise
-berdies
-Mibrauch
-Klubs
-berleben
-Termine
-verantworten
-stirbt
-Exil
-kommentiert
-Effekt
-palstinensischen
-konfrontiert
-Leiche
-Prozesse
-dramatisch
-stimmte
-Stadtwerke
-Lcheln
-Berechnungen
-fgt
-negativ
-griff
-Verlierer
-bersehen
-Mitternacht
-Orten
-CD
-Kindes
-wirksam
-Goethe
-Instanz
-fraglich
-Erziehung
-medizinische
-Tschechien
-Frist
-gelscht
-Klagen
-Brot
-einzusetzen
-Miete
-Gppingen
-Professoren
-Wut
-sdlichen
-schlimmer
-Gesichter
-Ralf
-Einbruch
-verraten
-interne
-neuem
-W.
-Anzeichen
-eineinhalb
-zuordnen
-Zusammenschlu
-Villa
-schwierige
-Sieben
-Auswertung
-Berechnung
-Sehr
-befassen
-gewnschte
-unabhngige
-Aspekt
-bekamen
-Witz
-Austausch
-schwachen
-Schuble
-demonstrieren
-angemeldet
-fhlte
-interessieren
-Konkurs
-geschah
-Meisterschaft
-Erfllung
-Engel
-Lieferanten
-Neuer
-Inland
-massive
-Gerd
-angehren
-aktiven
-fremden
-gebrochen
-geregelt
-Persnlichkeit
-Dresdner Bank
-Zwecke
-gesetzliche
-Daran
-zugenommen
-Gerichte
-Jury
-Humor
-Entfernung
-Rmer
-vorliegenden
-genannte
-angebracht
-gewhrleistet
-Betriebsrat
-Beteiligungen
-gestrigen
-Fraktionschef
-UdSSR
-Marktes
-Zurckhaltung
-befat
-Auenpolitik
-zurckgekehrt
-wuten
-Gertrud
-Wei
-Disziplin
-Zusammenbruch
-Bestimmungen
-Stahl
-Center
-kroatischen
-bunten
-Geschftsfhrung
-Rechner
-Furcht
-verzeichnet
-gnstig
-tiefe
-bewltigen
-ffnungszeiten
-heie
-Autors
-Bndnis 90/Die Grnen
-Sehnsucht
-Gefangenen
-Flle
-lter
-Mecklenburg-Vorpommern
-weltweite
-Skepsis
-erweist
-ganzes
-ausgewhlt
-Magdeburg
-gleichwohl
-Grundgesetz
-organisierte
-Siegfried
-Gewissen
-kndigt
-geschossen
-bekrftigte
-Mannesmann
-sprbar
-Spielraum
-integriert
-verkndete
-traditionell
-Syrien
-fliet
-Eva
-installiert
-Zum einen
-Anwendungen
-Lob
-stabil
-eigenem
-Kinos
-Gleich
-starben
-literarischen
-aussieht
-Straftaten
-heran
-Vorstandschef
-moderner
-Krze
-km
-verstrken
-Dresdner
-Amtsgericht
-Ebenfalls
-ernannt
-vertrieben
-Planeten
-illegal
-digitalen
-hrte
-momentan
-medizinischen
-kalt
-Vorjahres
-weiblichen
-brauchte
-Commerzbank
-Knnen
-erheben
-sozialer
-Entschdigung
-warnen
-Juristen
-besonderer
-Schwche
-zweieinhalb
-vermieden
-Konzepte
-rot-grne
-beantworten
-Bombe
-Spannungen
-Faktoren
-dahinter
-via
-demonstriert
-Halbzeit
-Ausstieg
-Ausweitung
-Gemlde
-Opel
-Empfang
-aktive
-entziehen
-berfall
-Rendite
-rckt
-erhofft
-Tunnel
-berhmte
-gelegenen
-erarbeitet
-messen
-individuelle
-schaffte
-funktionieren
-Behauptung
-Athen
-drckt
-Petra
-Geiseln
-hast
-Sachschaden
-gesetzlich
-Ufer
-Anpassung
-Gesetzes
-Ohr
-berleben
-ZEIT
-Nahrung
-Indonesien
-Ergebnissen
-Vergabe
-vorzeitig
-weitem
-konkret
-verwiesen
-Nachfolge
-kriegen
-Feststellung
-bestanden
-versprechen
-Mission
-unbekannte
-Situationen
-Tabellen
-Lrm
-Erzhlungen
-Diplomaten
-Spanier
-Prsentation
-leitete
-Senioren
-Leipziger
-beeinflussen
-bereiten
-Gabriele
-erleichtern
-Amerikas
-erstaunlich
-Kontrollen
-Beleg
-Lden
-erfuhr
-mnnlichen
-markiert
-Business
-gewidmet
-R.
-zum einen
-Kreuz
-tiefen
-umfangreiche
-annehmen
-Hollywood
-erzhlte
-Klarheit
-enden
-Erster
-holt
-Senats
-Sitze
-Wurzeln
-verlaufen
-Matthias
-Rechten
-regiert
-Partnern
-Vogts
-Claudia
-niedrig
-Formel
-bestraft
-Grn
-beauftragt
-erffnete
-Renate
-Signale
-Olympia
-grndlich
-Fertigung
-Athleten
-Ausfhrung
-Jungs
-Knie
-Gesellschafter
-beraus
-hebt
-Errichtung
-sicheren
-Arafat
-Institution
-korrekt
-Drama
-kenne
-Studio
-verringern
-aufzubauen
-Konzerne
-Zeitalter
-Tests
-Substanzen
-Jedenfalls
-Betten
-Beute
-Grundsatz
-bitten
-Aspekte
-Umweltminister
-Ha
-stndigen
-Knigin
-Erwachsenen
-BGB
-manches
-is
-erlitt
-begreifen
-verliehen
-erhhten
-Bauch
-Schrift
-leiten
-jhrlichen
-eingeschrnkt
-allemal
-Wiederaufbau
-Gisela
-zunehmende
-Hut
-indischen
-Entstehung
-studieren
-nachgewiesen
-Angabe
-orientieren
-ra
-Zentralbank
-Rheinland-Pfalz
-Bltter
-negativen
-eingehen
-geschlossenen
-bedienen
-bevorstehenden
-Runden
-Hoechst
-benannt
-weichen
-Bakterien
-Daniel
-glaubte
-Vorsitz
-Konstruktion
-bat
-Klaus Kinkel
-Balkan
-beschdigt
-Weltmeisterschaft
-dicken
-Befragten
-a.
-Brust
-schlossen
-Gewinner
-rmischen
-Christoph
-meines
-erlebte
-anfangen
-Chirac
-niemanden
-wehren
-bisweilen
-strzte
-Leichen
-Seinen
-Empfehlung
-erlassen
-Di
-gleicher
-regionale
-BGH
-gefhrden
-trinken
-Vorsicht
-dramatischen
-Englisch
-lobte
-Warnung
-gnstigen
-Inc.
-nachweisen
-unterbrochen
-Verbreitung
-stlichen
-Anwlte
-Vorstandsvorsitzende
-eingebracht
-Norbert
-geht's
-Sdwesten
-Finnland
-profitiert
-Sdkorea
-markieren
-Krzung
-Gleichwohl
-ben
-Umfragen
-Auslndern
-Berge
-fehlende
-Schrecken
-Jagd
-angesagt
-rechtlich
-sorgten
-verweisen
-erfordert
-hessische
-VfB
-erweitern
-Abschiebung
-begegnet
-Demokraten
-bers
-bevorzugt
-dauerte
-beruht
-Blumen
-gezhlt
-Ulm
-Trume
-einbezogen
-fnfzehn
-gekrzt
-Photos
-fester
-kehrte
-wechselt
-Resultat
-Beschwerden
-zweifellos
-Denkmal
-zurckgezogen
-Design
-Erholung
-gelebt
-Frankfurt am Main
-gedroht
-Lateinamerika
-Mo
-Prinz
-Marktplatz
-Dirk
-Caf
-Acht
-unbekannten
-Mandat
-Haftbefehl
-sptere
-diente
-Parkplatz
-Knstlern
-Materials
-G.
-zwangslufig
-Vgel
-zhlte
-Busse
-Video
-digitale
-Albert
-Rezession
-Pferde
-Schriften
-bekmpfen
-Wirtschaftspolitik
-Bestellung
-Hunde
-Quadratmetern
-Orte
-schlimm
-Gedanke
-Beste
-nichts zu tun
-Legislaturperiode
-Interviews
-fnfte
-untereinander
-trugen
-Selbstmord
-frherer
-Schuhe
-ausgeglichen
-Unsicherheit
-privat
-Medium
-Unbekannte
-etc.
-abgelegt
-schwedischen
-sichere
-bosnische
-Initiativen
-Friedhof
-Wnde
-strkere
-e.V.
-Bayerische
-Konten
-wem
-Empfnger
-Renten
-typisch
-Arbeitsgemeinschaft
-heuer
-Strecken
-US-Prsident
-Tal
-Linke
-beeinflut
-Votum
-natrliche
-vorhandene
-angemessen
-komplette
-Weimar
-Demonstrationen
-Milch
-Anmeldung
-vergleichen
-Monats
-sportlichen
-chemische
-Moslems
-reich
-Rhythmus
-Werten
-Japans
-Glaubwrdigkeit
-mangelnde
-bersetzt
-landen
-F.
-Ehepaar
-wiederholen
-Netanjahu
-Genu
-Mngel
-garantieren
-Coach
-Reihenfolge
-Siedlung
-kletterte
-illegalen
-schickt
-Instrumente
-Globalisierung
-sorgfltig
-Springen
-Kieler
-Welle
-fehlten
-traten
-Schock
-negative
-ntige
-Mglicherweise
-RWE
-Ford
-Glanz
-Schlacht
-wirbt
-kostete
-Anordnung
-vereinbarten
-erwies
-signalisiert
-Bochum
-Charme
-begrte
-Freilassung
-Ankunft
-Ingrid
-Gibt
-kologisch
-Bundestagswahl
-Verhandlung
-Klavier
-Faktor
-endgltigen
-Bundesfinanzminister
-schickte
-Shne
-Liberalisierung
-Verleger
-Vereinbarungen
-Terroristen
-Toren
-Pakistan
-Aufregung
-unterhalb
-bersetzung
-Texten
-strategische
-Pflegeversicherung
-Investor
-Konditionen
-vorgesehene
-kannte
-unbekannt
-Krebs
-Infotyp
-Jahresbeginn
-offener
-Rhe
-Triumph
-rt
-Zahlungen
-Englnder
-chemischen
-mhsam
-ausbauen
-auszuschlieen
-konservative
-E.
-stattgefunden
-notfalls
-bedingt
-umgehend
-Wste
-Zuschu
-wenigsten
-Kommune
-Gewerbe
-Experiment
-Darber
-angepat
-transportiert
-indessen
-D-Mark
-Dortmunder
-vernderten
-Daraus
-gnzlich
-sterreicher
-Dasa
-bester
-Zahlreiche
-Interpretation
-Bundestages
-Daraufhin
-Jahrestag
-Christa
-Bergen
-geladen
-Grundlagen
-Dingen
-belasten
-Steine
-Feldern
-Landstrae
-Ermittler
-HSV
-knstlerischen
-Ausbruch
-Beschlsse
-auerordentlich
-anzubieten
-liebe
-ausgestellt
-streichen
-Stadthalle
-Pferd
-Vietnam
-lngeren
-ausgeben
-erzielten
-Whrungen
-Darlehen
-bekanntgegeben
-Klte
-Tennis
-EM
-siebziger Jahre
-Lektre
-Zelle
-Chinesen
-prft
-Projekts
-Ermordung
-Lesung
-Einzelfall
-Erkenntnissen
-fern
-hei
-vornehmlich
-Logik
-Gattung
-Schwung
-Staatschef
-Stasi
-Hildegard
-Bestehen
-derzeitige
-indirekt
-fllig
-Aids
-Anleihen
-Warschau
-womit
-Fernseher
-Weltbank
-Hauptbahnhof
-rumen
-gedreht
-stellvertretender
-vor Steuern
-Gedicht
-Male
-siebziger Jahren
-beschrnken
-gewhren
-angeordnet
-Rekord
-Vergngen
-Erklrungen
-erfunden
-beseitigt
-zulssig
-Koalitionspartner
-Gutachter
-rechtlichen
-erwarte
-nrdlichen
-Auschwitz
-Europische
-beantwortet
-geniet
-achtziger Jahren
-erfolgte
-Fe
-wechselte
-Gerichtshof
-Wichtig
-anstatt
-lteste
-Baustelle
-arbeitslos
-Nord
-Geduld
-beweist
-verbundenen
-eingetragen
-Drfer
-Steuerzahler
-Nachbarschaft
-unterschiedlicher
-Muslime
-Tips
-Elf
-Krankenhuser
-Aufnahmen
-Vermarktung
-Kontinent
-beseitigen
-billig
-prsent
-jetzige
-musikalischen
-Jahresberschu
-ihrerseits
-Ach
-verwirklichen
-Mainzer
-Schichten
-rzten
-erwartete
-Sex
-Lyrik
-gespeichert
-Torwart
-vornherein
-Platte
-Ressourcen
-Restaurants
-saen
-enorm
-orientiert
-Verfahrens
-Knapp
-Ersten
-prompt
-Vereinen
-Markus
-Differenzen
-Prsidium
-taucht
-Bad Homburg
-blockiert
-hohes
-Leiterin
-Justizminister
-Umstnde
-festhalten
-fortan
-strikt
-Einwohnern
-musikalische
-Entsprechend
-Feier
-Vter
-Israelis
-Filialen
-http
-verzeichnen
-asiatischen
-erweisen
-franzsischer
-Ursprnglich
-Deswegen
-mochte
-knappen
-krftigen
-Bein
-Klar
-konomischen
-individuellen
-verkaufte
-derer
-Auszeichnung
-Teilnehmern
-Songs
-beachten
-gleichsam
-Parlamentarier
-schweigen
-Schwchen
-brgerlichen
-lachen
-Bundesland
-Strkung
-Anwender
-Boeing
-usw
-schieen
-Gebudes
-Tchter
-Wre
-Chefredakteur
-Absturz
-mehrheitlich
-Boot
-Alpen
-landete
-Fahrbahn
-verschrft
-locken
-Dessen
-SPD-Fraktion
-gewordenen
-kmmert
-ggf
-ffentlichen Dienst
-Fnftel
-religise
-Mehrzahl
-Feind
-beklagen
-Unruhe
-fhle
-Dichtung
-Fahrzeugen
-verrt
-z. B.
-Nutzer
-verbringen
-beides
-Wahrscheinlich
-Priester
-nutzte
-armen
-berlebt
-Talent
-sterreichische
-herkmmlichen
-Festnahme
-ltesten
-einrichten
-Angelika
-berechtigt
-Student
-kauft
-Kuba
-angesetzt
-rechtliche
-Stichwort
-Dynamik
-Budapest
-Lcke
-versorgen
-bersicht
-Chefs
-gewaltigen
-Mond
-Tragdie
-Krften
-Landtagswahl
-Neu
-Legende
-niederlndische
-Zivilisten
-Mi
-Sptestens
-Bosnien-Herzegowina
-Volkshochschule
-vergleichbar
-Ruanda
-Fahrrad
-bescheiden
-selbstndig
-Ankara
-weibliche
-Nachteil
-Wenig
-Staatsregierung
-aktuell
-identifiziert
-Zulassung
-Pa
-Revision
-mittlere
-Pro
-Linien
-gutem
-infolge
-Kmpfer
-Grundschule
-Verzweiflung
-Autonomie
-Bewhrung
-unternommen
-Ertrge
-umfangreichen
-jngster
-bestimmter
-wichtiges
-Hoffmann
-Eintrag
-Patient
-frdert
-Eigentum
-Grundstcke
-besuchte
-eingehalten
-Stationen
-Jubilum
-Bad
-Freien
-Erwartung
-knstlerische
-gestrkt
-weitergehen
-zusammengefat
-rcken
-Vorbereitungen
-Biographie
-annhernd
-Physiker
-Reporter
-Strich
-privater
-sechsten
-strkste
-strebt
-Boris Becker
-suchten
-lernt
-Bestimmung
-abgesetzt
-wisse
-van
-Rechts
-TV
-Hunger
-manuell
-notiert
-strt
-Group
-angefangen
-Marktfhrer
-Heim
-Rtsel
-beurteilen
-Jger
-gedrngt
-gedruckt
-schriftlich
-Installation
-unternehmen
-schuld
-lacht
-Einhaltung
-Stille
-Schwarzen
-Lothar
-gesteckt
-Zuhrer
-Museums
-STUTTGART
-Urlauber
-Orientierung
-nchster
-bestreiten
-oftmals
-Bagdad
-ewig
-Untersuchungshaft
-Roland
-Prinzipien
-steuert
-heutzutage
-unwahrscheinlich
-Piloten
-mageblich
-Hubschrauber
-herstellen
-globale
-einigermaen
-Bulgarien
-geredet
-Keiner
-absoluten
-sinkt
-Eingriff
-berwunden
-Werkstatt
-Chicago
-Rentenversicherung
-springen
-Zusage
-angesiedelt
-stren
-Verurteilung
-interessante
-verlief
-Erscheinung
-Birgit
-Main
-argumentiert
-New
-ergnzen
-abgestimmt
-berwachung
-Kapazitt
-Kapazitten
-Mehrwertsteuer
-Grenordnung
-Ertrag
-bewahrt
-erkannte
-baden-wrttembergischen
-anstehenden
-sportliche
-gefhrlichen
-Hilfen
-Mastab
-Geste
-ausgewhlten
-auswhlen
-Verwaltungsgericht
-Freilich
-realisieren
-bestritten
-gebrtige
-Knoten
-blicken
-Zone
-wen
-anderthalb
-Aufenthalt
-Rad
-Wille
-richtete
-versagt
-Zuletzt
-Exemplare
-Schulter
-Expansion
-angetreten
-gewnscht
-Edmund Stoiber
-begriffen
-Trost
-Verfasser
-Zum anderen
-Abitur
-Wenige
-lieferte
-liefen
-Kohle
-unterschrieben
-Zuschlag
-Brgerinitiative
-Geschften
-Mitrauen
-Schmerzen
-entlastet
-Reinhard
-Bayern Mnchen
-Europische Union
-Tatsachen
-tatschlichen
-Freiburger
-wirkliche
-strengen
-Ironie
-Asyl
-stndige
-unlngst
-Kapitalerhhung
-trumen
-praktische
-moralische
-deutsches
-zunehmenden
-bedeutendsten
-Kommunalwahl
-Emprung
-jngere
-fehlenden
-herzustellen
-verteidigte
-Russland
-Mittelalter
-Buchstaben
-Zorn
-Nordamerika
-baute
-Begriffe
-angekommen
-Knochen
-fremde
-Mieten
-Konsolidierung
-leistet
-Produzenten
-zeichnen
-abgeschafft
-bewirkt
-Bercksichtigung
-Wiesbadener
-Frchte
-fremd
-Umwandlung
-wagen
-nachhaltig
-K
-Hftlinge
-zerstren
-Listen
-afrikanischen
-Abbruch
-Richtlinien
-en
-niederschsischen
-Demnach
-Sparte
-Thailand
-vorlufigen
-Siehe
-notierte
-schwache
-Aufforderung
-ausschlieen
-Broschre
-Stuhl
-lauten
-Wahrscheinlichkeit
-Wrme
-verwirklicht
-Devise
-Konservativen
-Kameras
-ausfhrlich
-wirklichen
-Vorfall
-Mafia
-ngste
-Polizist
-starker
-Decke
-auslsen
-Mannheimer
-freigegeben
-Passanten
-Bald
-aufkommen
-ndern
-Sollten
-Bruno
-beschlieen
-unterrichtet
-Budget
-Katholiken
-gefhrliche
-sowjetische
-begleiten
-attraktiv
-Krone
-Sterne
-Jahrzehnt
-Wiese
-jegliche
-Block
-Grab
-entnehmen
-Viertelfinale
-kritisieren
-dicke
-Freigabe
-Autoritt
-Streiks
-soeben
-dieselbe
-Dilemma
-Wohlstand
-beruflichen
-Selbstbewutsein
-Aussteller
-Standorte
-fngt
-Fisch
-Hitze
-Epoche
-Rckstand
-entdeckten
-lgen
-angeklagt
-bentigten
-rechtfertigen
-Gestalten
-Pltzlich
-verknpft
-Bundesamt
-Erls
-Rudolf Scharping
-Finanzministerium
-Ost und West
-real
-Trio
-Seoul
-verluft
-klagte
-Schauspielerin
-Anhrung
-Rasen
-Prozentpunkte
-Ferne
-Vorrang
-verfgbar
-Mandanten
-Cursor
-Jelzins
-verurteilte
-Projekten
-begren
-insofern
-bedeutende
-gewhlten
-com
-Annherung
-Mindestens
-La
-Erfindung
-Bauten
-Verbesserungen
-Drohung
-gegrndeten
-verabschieden
-beklagte
-geistigen
-lngerem
-protestiert
-Zigaretten
-Mitgliedschaft
-C.
-D.
-bedenken
-spiegelt
-Verwandten
-fliegt
-merkt
-Schulz
-Gerichts
-gemeinsames
-vernichtet
-Unruhen
-Friedensproze
-Leinwand
-tdlich
-ausgebildet
-dunkle
-bestreitet
-nebenbei
-Verschiebung
-Ausweg
-irakischen
-Rot
-einstige
-Unterschriften
-Panik
-untersagt
-literarische
-Inhaber
-Rache
-Differenz
-Duisburg
-Prioritt
-Susanne
-Willi
-Legen
-versammelt
-Ebenen
-Kpfen
-Original
-online
-Ingenieure
-schuf
-Kirch
-Gaststtte
-inmitten
-Beurteilung
-sicherte
-fehle
-Kliniken
-Sarajevo
-Schreibtisch
-gesund
-strzen
-Jens
-typischen
-lokale
-Neuwahlen
-Mller
-Turm
-tanzen
-Party
-warfen
-Appell
-erreichbar
-Albanien
-VfB Stuttgart
-Erwin
-Meyer
-Spielzeit
-beliebt
-Konzerte
-Sd
-angekndigten
-X
-besonderes
-vorliegt
-ausgerichtet
-Technologien
-zusammenarbeiten
-bewerten
-Grosny
-Soldat
-Hochzeit
-verstrkte
-umsonst
-belgischen
-Akteure
-Intendant
-Akzeptanz
-berlegt
-sprt
-Silber
-Metropole
-nachtrglich
-Terror
-Bundesverband
-setze
-Standards
-nchstes
-Krankenversicherung
-gegebenenfalls
-Entsorgung
-antwortete
-frhzeitig
-Vershnung
-befanden
-Fremde
-Arbeitgebern
-lehnen
-ausgetragen
-Erfurt
-Lachen
-Strand
-mibraucht
-Grnder
-Ruhm
-extra
-Parkett
-abgebrochen
-zuweilen
-Wolken
-Spezialisten
-whlt
-Datei
-Areal
-Stammdaten
-Hang
-gespart
-russischer
-Unter anderem
-grerer
-Heroin
-Besttigung
-Ahnung
-Beobachtung
-Die Zeit
-Mittelfeld
-Trauer
-sonstigen
-Florida
-tten
-Toleranz
-strategischen
-beurteilt
-Defizite
-Gedchtnis
-Behinderte
-Antonio
-Teheran
-Daimler
-grauen
-vollzogen
-Tschernobyl
-auf keinen Fall
-sechziger Jahren
-Vorstandsvorsitzender
-angehoben
-Wahrnehmung
-Schwestern
-Weiterbildung
-Kategorie
-gestrt
-berhrt
-Ortsbeirat
-umsetzen
-Men
-gespannt
-Unmut
-Wohnen
-o
-AFP
-berfallen
-verabschiedete
-keine Rede
-radikalen
-bliche
-gestrzt
-Zeitschriften
-Olympiasieger
-Erneuerung
-Venedig
-Axel
-mittelfristig
-Verordnung
-moralischen
-Bar
-Kloster
-vermit
-Einem
-Staub
-betreten
-S-Bahn
-Istanbul
-illegale
-angekndigte
-gewhrleisten
-Schmerz
-Zeitgenossen
-Elend
-Erdbeben
-gewhnt
-obersten
-schlugen
-bestens
-basiert
-Summen
-jeweilige
-abgelst
-potentiellen
-erhebt
-Potsdamer
-erneuten
-decken
-verlautete
-Theaters
-Wissenschaftlern
-Na
-Knstlerin
-engagieren
-scharfe
-kalten
-entzogen
-bedeckt
-Benzin
-Strungen
-Seither
-Joschka Fischer
-Diktatur
-Kanal
-Hansestadt
-gnstige
-getestet
-Attentat
-Beck
-Lbeck
-Sir
-Pech
-verbieten
-Eier
-zeitlich
-Libanon
-angeblichen
-verwaltet
-vorsieht
-Holocaust
-Untergang
-spannend
-umgewandelt
-zuwenig
-mchtigen
-P.
-verwandeln
-zukommen
-Rentenmarkt
-Komponist
-Aktivitt
-Schwerpunkte
-einbringen
-Zwang
-unterstellt
-dauerhaft
-Eintrge
-sichtlich
-Schmuck
-Romane
-Atem
-Urauffhrung
-Betrge
-dasselbe
-behauptete
-angehrt
-BUND
-klingen
-Gene
-verheiratet
-Zaire
-Anstze
-irgend
-Archiv
-BASF
-Resonanz
-enorme
-Landwirte
-Handwerker
-Algerien
-Reiz
-Plattform
-Telefonnummer
-Einschrnkung
-Zagreb
-Beweise
-Erstellung
-historisch
-BRD
-Burg
-Anfragen
-Kriegsende
-Stockholm
-Anweisung
-Kreises
-verpflichten
-Hlle
-Betrachter
-Vermieter
-Beitritt
-Rechtsprechung
-altes
-Anlauf
-Reichtum
-Persnlichkeiten
-reagierten
-Blm
-fit
-beherrschen
-Markieren
-ginge
-verleihen
-analysiert
-Den Haag
-heiligen
-Eingabe
-enormen
-Einfluss
-Konfrontation
-Kairo
-Kmpfen
-tschechischen
-beschftigte
-typische
-Zuerst
-Dritten Welt
-Bedrfnisse
-emprt
-Befehl
-Operationen
-Gemse
-Aachen
-langjhrige
-verweigern
-vernderte
-zahlreicher
-beendete
-Massaker
-Mordes
-korrigiert
-eingestuft
-Borussia Dortmund
-ausgefallen
-Typen
-anstelle
-CDU/CSU
-Illusion
-Grunde
-Landesbank
-James
-Organisatoren
-Klrung
-daheim
-umzusetzen
-Endlich
-Fach
-Landsleute
-realen
-Poesie
-Bahnen
-eingereicht
-wirtschaftlicher
-Berger
-stellvertretenden
-Gremien
-Konzeption
-Wirtschaftswachstum
-Zustnde
-AOL
-Euphorie
-Libero
-umgeben
-langfristige
-staatlicher
-sexuellen
-Gebuden
-bunte
-Duell
-Fahrgste
-Sdamerika
-Spektrum
-verschwindet
-half
-Charles
-olympischen
-rot
-Staatsbrgerschaft
-Einkauf
-verlegen
-Traditionen
-neunziger Jahre
-Neuregelung
-verhngt
-gedrckt
-Zusammensetzung
-wahrgenommen
-Fuchs
-ordentlich
-Marken
-evangelische
-KG
-gedeckt
-hierbei
-berfordert
-antwortet
-Einordnung
-Satelliten
-Sektor
-Paket
-Charlotte
-gnstiger
-befragt
-verwickelt
-freitags
-allerlei
-Verpflichtungen
-Ministerien
-geltende
-iranischen
-Flexibilitt
-problemlos
-vollem
-Massen
-sicherer
-beeindruckt
-widmen
-liegenden
-jhrliche
-erwischt
-entsprechender
-diversen
-Straburg
-drohenden
-doppelte
-genauen
-Polizeisprecher
-Sommerpause
-Ruber
-zwingt
-Experimente
-Major
-allesamt
-mutmalichen
-Hamburgs
-montags
-Ernhrung
-Auftreten
-Streifen
-Rechnungen
-Bundesstaat
-Marianne
-Wrzburg
-Fassade
-Kenntnisse
-gekmpft
-schlimmsten
-einverstanden
-mge
-Adressen
-Beendigung
-einheitliche
-Baby
-abgesagt
-Umsatzes
-Daimler-Benz
-beliebig
-Ferien
-Griechen
-Flaschen
-Panzer
-traurig
-verdrngt
-verstoen
-mter
-Klinsmann
-Labor
-Noten
-legendren
-Nachweis
-gewhnlich
-trainiert
-Basel
-b
-betreffenden
-Materie
-Herausgeber
-behindert
-Anschlge
-niedrige
-Polizeiangaben
-Abstieg
-Rexrodt
-Kindergrten
-engagierte
-Kreuzberg
-Kreuzung
-beschlossene
-sttzen
-Wellen
-dritter
-Anhebung
-Ermittlung
-Volker
-Gebhr
-gewissermaen
-Treuhand
-zuknftigen
-Nahen Osten
-Bundesrepublik Deutschland
-Tagesspiegel
-Grostadt
-Aufsehen
-Evangelischen
-Experte
-parlamentarischen
-liberalen
-kassiert
-Abwesenheit
-vehement
-Bundesanstalt fr Arbeit
-Laufbahn
-Reichstag
-Unflle
-Darum
-versuche
-gleicht
-Ritter
-Physik
-vollstndige
-einmalige
-gerechtfertigt
-przise
-biete
-vorgelegten
-Welten
-SED
-Leib
-Niederlagen
-Thyssen
-Darunter
-Schwarze
-beantragen
-Tatort
-Objekten
-juristischen
-Westeuropa
-gelben
-Visionen
-berhmt
-Resolution
-jemanden
-eingetreten
-spektakulren
-Katharina
-Aufstand
-teilten
-erwirtschaftet
-mchtig
-Beschwerde
-jugoslawischen
-festzustellen
-auf den ersten Blick
-Kette
-zurckhaltend
-Clintons
-Minderheiten
-Unterkunft
-Gymnasium
-Einstiegsbild
-Profi
-Bibel
-Buchungskreis
-beschuldigt
-griechische
-Mu
-Meinungen
-Sobald
-erfolglos
-anscheinend
-Roth
-Lippen
-Mbel
-Frhstck
-Basler
-Dritter
-Bauarbeiten
-verbirgt
-Diepgen
-bildeten
-Schicht
-Freie
-besetzen
-Leere
-Klassiker
-Weile
-vergangener
-realistisch
-berzeugend
-schlafen
-Paradies
-protestieren
-Waffenstillstand
-Unterschrift
-Angelegenheiten
-startete
-Elke
-ostdeutsche
-dnischen
-Schlange
-Virus
-schsischen
-Zurck
-Huber
-spiele
-Geschenk
-ausgemacht
-Lizenz
-aufgefallen
-dramatische
-Mario
-Bndnisgrnen
-Betracht
-George
-II.
-mangels
-Gitarre
-U-Bahn
-Beobachtungen
-arbeiteten
-bitter
-anhaltenden
-Brcken
-Gesang
-Rassismus
-Lwen
-oberste
-Palstinensern
-errechnet
-Elbe
-Taktik
-Begegnungen
-hervorragend
-Verhltnissen
-Fische
-seitens
-bewhrt
-Umstand
-wiesen
-Gerten
-Funktionre
-Erhaltung
-ueren
-Heiligen
-bewaffneten
-siegte
-pflegt
-geforderte
-unterstrich
-PS
-Logistik
-unzureichend
-Nie
-Vertreibung
-belegte
-Insofern
-sonntags
-Leid
-Format
-entstandenen
-Bogen
-E
-regeln
-durchzufhren
-Handy
-gewaltige
-Kabel
-dazwischen
-Renaissance
-Beseitigung
-identisch
-Gottesdienst
-Anwesenheit
-nah
-Onkel
-Berechtigung
-abwarten
-gewhnlichen
-Vernichtung
-interessierte
-Mozart
-Gegenstnde
-Proben
-Sparkassen
-abgenommen
-Rot-Grn
-entlasten
-Realisierung
-IOC
-verschieben
-breiter
-kanadischen
-Schwaben
-Niederlnder
-echt
-treu
-systematisch
-Techniken
-Stephan
-fhrender
-Jahrtausendwende
-Lupe
-Fluggesellschaft
-Braun
-Wettbewerbs
-Befrchtungen
-Fugnger
-Abwicklung
-testen
-anzunehmen
-Pkw
-Saarland
-spontan
-Nationalsozialismus
-Kaiserslautern
-Raketen
-bsen
-zulegen
-geeignete
-Verletzte
-bedauert
-Liebhaber
-Henkel
-Platten
-Adolf
-laden
-worauf
-Billionen
-Beinen
-gengen
-Untergrund
-Ansichten
-einzustellen
-Jeden
-Verbrauch
-wissenschaftlich
-veranlat
-wodurch
-berhaupt
-Geschftsleute
-Inneren
-Zumal
-Nebel
-Favoriten
-Jahrhunderte
-Vermutlich
-lustig
-ignoriert
-Seminar
-buchen
-Befrworter
-Landratsamt
-Begleitung
-bringe
-wovon
-begrnden
-Zusammenhnge
-ebensowenig
-offenkundig
-Neigung
-Jurist
-bedeutenden
-zurckziehen
-Dimensionen
-verlngern
-Reiter
-erspart
-Entscheidend
-vorbereiten
-Tnzer
-Parlamentswahlen
-friedlich
-Boom
-fertiggestellt
-lebendig
-Harmonie
-berholt
-pldierte
-Spalte
-Siedler
-Kohls
-scharfen
-World
-Temperatur
-Paare
-technischer
-drehte
-fuhren
-sauber
-gesteuert
-anbietet
-Maske
-ausmachen
-hnliches
-Container
-Transparenz
-Werkzeuge
-sechziger Jahre
-schwcher
-begeben
-Schultern
-Ding
-diverse
-Luftwaffe
-Offiziere
-Westens
-Sendungen
-vorgefhrt
-schwedische
-ordnen
-Belege
-angebliche
-bereitgestellt
-zivilen
-scho
-Erben
-geistige
-Ministeriums
-Matthus
-Klein
-Bekenntnis
-minder
-vorkommen
-Insassen
-in Wirklichkeit
-Schild
-Lehrerin
-Berichterstattung
-verbt
-Angeboten
-Verfassungsschutz
-Foyer
-Erfassung
-verwendeten
-Kundschaft
-Focus
-Formulierung
-zulassen
-Zhlern
-Ferrari
-gltig
-einzurichten
-Kundgebung
-frhestens
-Werkes
-Aufstellung
-Horizont
-beziffert
-Innensenator
-Rubel
-gekndigt
-bedeutete
-appellierte
-Semester
-Kripo
-verpat
-Bescheid
-erfreut
-Produktivitt
-Kapitalismus
-Abfall
-Flughfen
-Knigs
-Multimedia
-Korrektur
-bekrftigt
-spekuliert
-Kredit
-Buche
-Auslieferung
-Breite
-aufbringen
-springt
-mglicher
-empfunden
-zu Fu
-staatlich
-Flasche
-langjhrigen
-Boris
-Uns
-Performance
-amtlichen
-Hessischen
-Intelligenz
-Torhter
-praktischen
-Die Welt
-Protagonisten
-on
-Olympischen Spielen
-mitmachen
-zuknftig
-wilden
-Chile
-Schsse
-Kompetenzen
-Irgendwann
-Netzwerk
-eingelegt
-wenngleich
-Passagen
-potentielle
-In der Tat
-ehrlich
-kontinuierlich
-80er Jahre
-v.
-Erlebnis
-unerwartet
-zitierte
-Schottland
-verstorbenen
-Gutes
-Bumen
-Jahrtausend
-Aufwendungen
-Erstens
-Vormittag
-bundesdeutschen
-Steuerung
-fat
-Beispielsweise
-Schuster
-Mauern
-Kreml
-Slowakei
-Vermutung
-Wohnzimmer
-westlich
-radikale
-Windows
-solide
-Investition
-Comeback
-Dritte
-kroatische
-G
-Karadzic
-Edith
-ausgebrochen
-Amerikanern
-wertete
-Endspiel
-Bezahlung
-Abgeordnetenhaus
-vermeintlich
-Vulkan
-freute
-Gehlter
-deuten
-so genannten
-stetig
-M
-Joseph
-neueste
-Hallen
-Hierzu
-Kriege
-Koffer
-Herrscher
-Laune
-individuell
-Brunnen
-Wettbewerbsfhigkeit
-langfristigen
-gltigen
-verschafft
-wehrt
-willkommen
-Grundstzlich
-ansehen
-geglaubt
-berufliche
-Audi
-erschpft
-zusammengestellt
-Fachhochschule
-ungewhnliche
-billigen
-bertroffen
-Stolpe
-ABAP
-stehende
-Htte
-BONN
-Besatzung
-gefhrten
-betonen
-nahen
-Visier
-aufrufen
-Applaus
-Esslinger
-ertragen
-Bielefeld
-Blues
-vorbehalten
-Amtes
-juristische
-Nationalen
-seltener
-Gewi
-viermal
-Krperverletzung
-Entfhrung
-beschert
-gesteht
-erneute
-heimlich
-Verabschiedung
-geforderten
-nannten
-klarer
-Stirn
-Lieferungen
-Wlder
-Ruth
-mnnliche
-lockt
-junge Mann
-Schlaf
-Bargeld
-Motivation
-Ideologie
-peinlich
-Urteile
-Ausrichtung
-anzusehen
-merken
-Gttingen
-Standpunkt
-nervs
-Hrte
-Versto
-entfllt
-verlangten
-tgliche
-geflogen
-Einsamkeit
-Zeitplan
-derartigen
-schieben
-uert
-Einschrnkungen
-Siege
-Rau
-Schauspiel
-Festlegung
-hintereinander
-Vertretung
-Kommunalwahlen
-Simon
-Seehofer
-bildete
-kriegt
-Weichen
-Werks
-interpretiert
-Augsburger
-Verkufer
-betreffen
-seiten
-Margarete
-aufgetreten
-industriellen
-Lebensjahr
-konomische
-Debatten
-Wolfgang Schuble
-Ergnzung
-Eisen
-verdankt
-Geldes
-wild
-Allen
-Detlef
-Betriebsergebnis
-Publikums
-beschrieb
-sprang
-Knftig
-Staatskanzlei
-vertreiben
-schmalen
-bloe
-Abgabe
-wunderbar
-lernte
-Umland
-Lire
-kaufte
-Prsidentin
-ideale
-operativen
-eingenommen
-Argumentation
-aufhalten
-Pistole
-zugelegt
-Schein
-Sympathie
-kirchlichen
-hherer
-Bundesbrger
-Stufen
-werdenden
-Flut
-Rindfleisch
-drohe
-Knstlers
-verkauften
-fernen
-Kanzleramt
-Anblick
-Ringen
-Aktionren
-Souvernitt
-verzweifelt
-abgewickelt
-Geschftsjahres
-Will
-bedacht
-tauchen
-Erlse
-galten
-Vorjahreszeitraum
-heben
-Residenz
-Teilung
-stammende
-Doris
-Einwohnerzahl
-besa
-Moderator
-Lutz
-Ausknfte
-Geheimdienst
-Nordirland
-Bewerbung
-Elfriede
-Westjordanland
-Spieltag
-stillen
-Lehrern
-Sparpaket
-Auslser
-Auftraggeber
-mssten
-Veba
-Programmen
-Besteuerung
-Neuordnung
-Gouverneur
-wertvolle
-Zeug
-berall
-Mnchens
-ausben
-in letzter Zeit
-Bande
-Fernsehsender
-durchweg
-ausfhren
-trainieren
-ffentlich-rechtlichen
-goldenen
-berstunden
-Exporte
-Einblick
-Ausfhrungen
-O
-herausgegeben
-Polens
-Ausgangspunkt
-Vorzge
-spezialisiert
-sttzt
-Heike
-Vergewaltigung
-kalte
-Echo
-Witwe
-Gleichgewicht
-Ehrgeiz
-Ehren
-sozialdemokratischen
-Kaufpreis
-Feinde
-Betrug
-eingeschaltet
-Skulpturen
-Telecom
-erobert
-eingebaut
-nationaler
-angeregt
-Arbeitskreis
-Kanther
-Naturschutz
-Auftritte
-Energien
-Umweltministerium
-eintreten
-regelrecht
-elektrischen
-dankbar
-Sichern
-Sngerin
-kompliziert
-verstndigt
-verlagert
-BA
-bremsen
-Unschuld
-aktiviert
-Palette
-Kultusminister
-Braunschweig
-ursprngliche
-dieselben
-Finanzamt
-Kreativitt
-Nachteile
-Hitlers
-Gerda
-Nigeria
-bewirken
-bezglich
-uerung
-Hrden
-Bleibt
-Ostern
-beeintrchtigt
-Regensburg
-Richtig
-Glaube
-Harry
-automatische
-Einfhrungsleitfaden
-verbreiten
-durchschnittlichen
-manch
-Ursprung
-Oliver
-erschlieen
-Umstrukturierung
-Analysen
-formulierte
-erarbeiten
-entfernten
-rechne
-Bndnis fr Arbeit
-sogleich
-Erzhler
-flog
-intern
-zuknftige
-Volkswagen
-Emotionen
-Empfehlungen
-virtuellen
-beschleunigt
-ungewhnlichen
-intensive
-blaue
-Konsumenten
-Prinzessin
-Sydney
-Intellektuellen
-geringere
-schade
-Elektronik
-gewisser
-teilgenommen
-auswirken
-samstags
-Maschinenbau
-Filiale
-Hierarchie
-abgezogen
-etabliert
-Verwirklichung
-Shell
-herangezogen
-ttigen
-Kids
-Radfahrer
-optimal
-Millionenhhe
-Kuchen
-bereinstimmung
-sexuelle
-Mars
-Gefangene
-verbergen
-festgelegten
-Kaufmann
-strenge
-friedliche
-Metall
-Terrorismus
-Kranken
-identifizieren
-Zhne
-niemandem
-schwarzer
-Inflationsrate
-verlorenen
-ausgelegt
-Berti Vogts
-Maastricht
-Verlage
-seinerseits
-wandern
-gebilligt
-Verwirrung
-liberale
-sterreichs
-leere
-Bemhen
-Landgerichts
-Einbuen
-Strafen
-Spitzenreiter
-stlich
-Verdachts
-Stzen
-Eingriffe
-Wnden
-unterm
-bt
-Kommunismus
-Brgerschaft
-Umweltschtzer
-verliebt
-erfolgreicher
-Deutsche Telekom
-widmet
-lobt
-IRA
-Neun
-Millimeter
-vorgehen
-Titelverteidiger
-Porsche
-Spruch
-Stellenwert
-langweilig
-schiebt
-widerspricht
-tdlichen
-Bomben
-beinhaltet
-kurzerhand
-Zweiter
-Leistungsfhigkeit
-Hrer
-gestand
-Einwnde
-jedermann
-christliche
-Enkel
-entfernen
-nachgedacht
-unterhlt
-Paragraph
-Auenministerium
-unsicher
-Thesen
-American
-San Francisco
-Aufbruch
-verbesserten
-Buchung
-Beachtung
-ausgeht
-Gesetzen
-lebe
-Strategien
-Systemen
-handle
-Hauch
-einzufhren
-Fronten
-Podium
-einheitlichen
-abgeschoben
-Lcher
-feinen
-wagt
-trage
-bewegte
-Mehmet
-Erleichterung
-Brandenburger
-Jesus
-Roman Herzog
-Versicherten
-National
-zweitens
-vorab
-uerten
-la
-Gerhardt
-Ilse
-amtierende
-Protesten
-Lernen
-Klang
-bemerkbar
-Zeugnis
-Ttigkeiten
-William
-ehemaligen Jugoslawien
-Jena
-Philosophen
-ungewi
-rollen
-gewertet
-sonstige
-verrckt
-bezeichneten
-gegenwrtige
-Vorwrfen
-souvern
-geschlossene
-blutigen
-Gter
-Lokal
-ausreichen
-abgerissen
-Marsch
-Frhling
-aufhren
-T
-osteuropischen
-sozialistische
-Verhaftung
-Hahn
-mutmaliche
-Optionen
-Bremerhaven
-erforderliche
-gegeneinander
-Erfinder
-bewerben
-ungarischen
-Momente
-kleinste
-entfhrt
-krftige
-V.
-einnehmen
-Anstalt
-Krpers
-frhe
-Zimmermann
-Mathematik
-Texas
-DAG
-befrdert
-externen
-Schwere
-Malaysia
-einseitig
-vereint
-Company
-geeigneten
-untersttzte
-gebt
-begraben
-Volkspartei
-geteilt
-Prfungen
-Konsum
-Arena
-nachdenken
-theoretisch
-kg
-Insekten
-grundlegende
-Entwrfe
-empfinden
-Haufen
-zunehmen
-Betrachtung
-umfassen
-Offenheit
-Albaner
-Szenario
-kopieren
-glatt
-wchentlich
-verkraften
-Techniker
-hervorragende
-saniert
-Todes
-dominiert
-sichert
-Netze
-Kalkulation
-Heft
-Aufsteiger
-verffentlichen
-Tonne
-Tel
-kehren
-verfat
-Champions League
-Fderation
-Fertigstellung
-Formular
-Herausforderungen
-Landschaften
-angegebenen
-verbreitete
-entworfen
-Referendum
-attraktiver
-rtliche
-warm
-Niedergang
-meldeten
-Eintracht
-verrgert
-komplizierten
-kommunale
-Bestellungen
-Spektakel
-einfhren
-Donau
-Krankenhusern
-Luxus
-geringeren
-Diagnose
-Stre
-Wiederholung
-Wahlgang
-berraschungen
-veranschlagt
-Weiterhin
-Geschftsmann
-Verfall
-morgigen
-toten
-grozgig
-Europameisterschaft
-bestellen
-kurdischen
-Kollegin
-wozu
-besseres
-Prozesses
-Plakate
-Heidelberger
-Selbstndigkeit
-korrigieren
-Tendenzen
-hinauf
-zerstrten
-Clubs
-Stamm
-fein
-entgehen
-abgelaufenen
-heftiger
-SPD-Politiker
-nebenan
-gesunden
-ausgetauscht
-Bosniens
-schtzt
-Standorten
-gewaltig
-Angela
-Sparkasse
-Duo
-Bedrfnis
-Friedens
-Stcken
-Lschen
-herrschen
-beschleunigen
-Beamter
-Nordkorea
-regelmigen
-Wrter
-fliehen
-transportieren
-Nachdruck
-Erna
-Jacques Chirac
-einzeln
-Ausschlu
-Portrt
-doppelten
-jedesmal
-BVG
-erledigen
-trocken
-Rckgabe
-kennengelernt
-Flge
-Etappe
-whlte
-Tochtergesellschaft
-Vorurteile
-reist
-Eher
-Mittelstand
-Beton
-Abfahrt
-Anhngern
-eindeutige
-Gieen
-anmelden
-Tee
-Spiels
-Bundesinnenminister
-Umlaufrendite
-hinterlegt
-palstinensische
-lndlichen
-entkommen
-Sicherheitskrfte
-Brokratie
-diplomatischen
-Botschaften
-siebten
-stnde
-Ausgerechnet
-Wiederwahl
-verstehe
-Sonstige
-las
-Mnchengladbach
-Bundesgebiet
-gewartet
-Regierungskoalition
-Lbecker
-verfehlt
-Tschechen
-Versuchen
-Freiheitsstrafe
-Hose
-Schwerin
-Chemnitz
-ausgenommen
-hiesigen
-Segen
-sthetik
-Verstndigung
-elektrische
-geschenkt
-schrittweise
-Somalia
-bergabe
-Somit
-entspreche
-schier
-Maus
-Erkrankung
-abbauen
-Redner
-internationales
-parlamentarische
-Sammler
-Kommando
-erregt
-Bischfe
-Saarbrcken
-feierten
-ausgerstet
-Mr.
-Unsinn
-fnfziger Jahren
-knappe
-kritisierten
-Album
-Media
-Durchgang
-radikal
-aufgestockt
-Kneipe
-Kopenhagen
-Zweite
-Dichters
-anzulegen
-bezweifelt
-Offenbacher
-Systematische
-Gesundheitswesen
-Funk
-hrter
-verbrannt
-Bad Vilbel
-Vertrages
-Corporation
-Geldstrafe
-berwachen
-Wiederaufnahme
-gelegene
-knstlich
-gefangen
-gewordene
-Bekannten
-Scheidung
-isoliert
-rasche
-bestritt
-Schlerinnen
-Psychologie
-gewollt
-veranstalten
-eingegeben
-qm
-Zweitens
-Arbeitslosenquote
-Salzburg
-gerissen
-erobern
-Verlusten
-Favorit
-Betroffene
-empfahl
-Produktionen
-Sagen
-Flughafens
-sechzig
-trieb
-t
-Wirtschaftsministerium
-Neuseeland
-Kolumbien
-Aufteilung
-Schritten
-schnste
-grtenteils
-Handlungen
-Hammer
-denselben
-Doktor
-ungeachtet
-Erhebung
-Heimatstadt
-vorrangig
-Meisterschaften
-Martina
-Profit
-Belange
-net
-SAP-System
-verursachen
-Zivilisation
-umgebracht
-Guten
-Sohnes
-Entweder
-Kranke
-zwingend
-wofr
-bentigte
-sammelt
-rtr
-Gift
-Vermittler
-langsamer
-Buchungen
-Unterbringung
-Bindung
-Durchmesser
-eigenstndige
-Richtungen
-renommierten
-Verdienst
-pnktlich
-bekanntesten
-Kennzahlen
-Kader
-verfallen
-verbraucht
-friedlichen
-gelandet
-Sindelfingen
-BSE
-Jahrhundertwende
-Fuballer
-Handels
-Intervention
-Klientel
-aufgeteilt
-belohnt
-StZ
-Gefhrdung
-hilflos
-Adam
-problematisch
-freiwilligen
-Spaniens
-null
-aktivieren
-abzubauen
-Sports
-dokumentieren
-Anbau
-wecken
-erschttert
-westlicher
-kommerziellen
-beachtet
-arbeite
-Kugel
-Tpfer
-Anregungen
-WDR
-ewigen
-gerieten
-Kardinal
-Afghanistan
-Terrain
-beschlagnahmt
-bemerkte
-schwebt
-berschu
-verbotenen
-knstlichen
-Abteilungsleiter
-Krisen
-Olympiastadion
-Nordosten
-abschlieen
-ausgeweitet
-Reifen
-Rabin
-Bestnde
-Einspruch
-fhlten
-Sparen
-Grten
-Vernehmen
-zurckliegenden
-aufweisen
-Wahnsinn
-versammelten
-Autobahnen
-birgt
-Schauplatz
-Folter
-Bauen
-interessierten
-Match
-Bundesstrae
-Siedlungen
-befunden
-etablieren
-Ausscheiden
-Services
-Indianer
-Ausrstung
-AOK
-Jahrhunderten
-zeitgenssischen
-Weien
-Mitarbeiterin
-auskommen
-Sat 1
-blockieren
-Aktiengesellschaft
-verletzte
-Lebensmitteln
-Tragen
-Kasten
-besichtigen
-Vorliebe
-entnommen
-Georgios
-Halbinsel
-verschwand
-Hauptsache
-britischer
-GUS
-Verzgerung
-Unterzeichnung
-ergaben
-inhaltlich
-Streichung
-kologie
-Irmgard
-ergriffen
-erteilen
-Zielgruppe
-grundstzliche
-zeichnete
-reit
-Holger
-gestimmt
-Blten
-Pathos
-gewechselt
-bte
-darzustellen
-Ludwigsburger
-Nachkriegszeit
-Island
-Jahrgang
-intensiver
-berwacht
-Pflichten
-verschont
-operiert
-knstliche
-drohende
-Medikamenten
-aufgebracht
-Sterben
-Arbeitnehmern
-Reserven
-Strahlung
-Verlagerung
-bekennt
-Konzernumsatz
-klappt
-Wortes
-Versagen
-Ecken
-Regierungsprsidium
-Rezept
-Attraktivitt
-gestattet
-Fahnen
-Turbulenzen
-US-Regierung
-Tel Aviv
-reichten
-Fremden
-nutzten
-Warten
-Johnson
-grn
-zgig
-hnlicher
-erstreckt
-Johanna
-baden-wrttembergische
-absolviert
-Misere
-Ingenieur
-Montage
-kandidieren
-Gruppierungen
-scheitert
-Gesten
-Realismus
-Trends
-europaweit
-Volker Rhe
-dumm
-Briefen
-Inge
-psychisch
-vereinbarte
-Attacken
-energisch
-Treppe
-Abteilungen
-Sperre
-Entspannung
-Wegfall
-Sehen
-Todesstrafe
-Hndlern
-gerckt
-Zwlf
-Einigkeit
-Dublin
-niedrigeren
-ausreichende
-vergleichbaren
-alternative
-Achtung
-wahrnehmen
-riefen
-Kirchengemeinde
-unglaublich
-Provinzen
-Freispruch
-ergreifen
-gezielte
-qualifiziert
-erfolgreichsten
-spart
-trauen
-Vorbehalte
-Jubel
-Mittag
-Absprache
-vermehrt
-rckte
-bestenfalls
-Ihres
-Darsteller
-ablehnen
-vorausgesetzt
-sozialdemokratische
-konzipiert
-Alliierten
-Laien
-Geister
-gewhlte
-Gorbatschow
-Ulrike
-Bemerkung
-abseits
-kontrollierten
-Auenseiter
-Bauarbeiter
-Weltrangliste
-Erkrankungen
-mahnte
-Bezge
-gesunde
-Geht
-Ansto
-Essener
-Ausstrahlung
-Server
-Abgaben
-wundert
-just
-gezeichnet
-Probe
-Brgermeisterin
-Potsdamer Platz
-Drehbuch
-echter
-tatschliche
-Medaille
-beginnenden
-ehemaligen DDR
-Sekte
-sonderlich
-kannst
-CDU-Politiker
-Musical
-In- und Ausland
-binden
-Prosa
-schlechtes
-freigelassen
-Aufsicht
-zielt
-vertrat
-Lieber
-heiraten
-Vorschrift
-krperliche
-lehrt
-Kontinuitt
-verstand
-hilfreich
-ahnen
-Hannelore
-Gewebe
-Verteidigungsministerium
-Garantie
-Darmstdter
-Offizier
-verbietet
-vermeintlichen
-schnes
-Import
-agieren
-Kleider
-Eberhard
-Kulisse
-Gestndnis
-verzeichnete
-Per
-Ermittlungsverfahren
-Siegen
-freundliche
-Gentechnik
-Einstze
-verleiht
-andern
-integrieren
-herunter
-verbuchen
-Verringerung
-Bush
-gewandt
-zurckgetreten
-gestiegenen
-bermittelt
-Auffhrungen
-Schne
-bedrohten
-verletzten
-offenbart
-Regierungssprecher
-Begleiter
-Propaganda
-erschwert
-kommunistische
-Rttgers
-Feiern
-verbreiteten
-definierten
-Tarife
-Jahreswechsel
-komisch
-fhig
-entsprechendes
-Bands
-Jeans
-komplizierte
-Gewerkschafter
-Helsinki
-Zuversicht
-rgert
-Mastbe
-Stau
-geborgen
-beruhigt
-zurckgenommen
-Nasdaq
-Ausschreitungen
-Anmeldungen
-Stadtparlament
-Gebot
-uere
-verhlt
-Rehhagel
-d.
-Song
-Popularitt
-Kategorien
-Viktor
-Saddam Hussein
-berzogen
-Reste
-winzigen
-spreche
-Parkpltze
-Atomwaffen
-Wimbledon
-Messungen
-Studierenden
-Jedoch
-Einklang
-verborgen
-Bnde
-vereinbaren
-Problematik
-Kuwait
-berschreiten
-Pop
-Wettkampf
-Marie
-absurd
-irgendwelche
-Zentren
-Meist
-Disposition
-Dutzende
-persnlicher
-angestrebt
-Oslo
-Wirt
-Ausflug
-Verdienste
-englischer
-Ernte
-Private
-warmen
-Ude
-OLG
-beabsichtigt
-Wollen
-Weltmarkt
-positives
-gen
-Fundamentalisten
-regierenden
-anschlieenden
-Lngst
-leid
-gentechnisch
-woher
-gehrende
-trennt
-Sternen
-geistig
-Tricks
-Eintracht Frankfurt
-Lehmann
-Obst
-eingebunden
-Konsortium
-f
-Diskriminierung
-Fehlen
-reale
-Vorschlgen
-freiwillige
-Hchst
-Mitarbeit
-Alleingang
-Viren
-Sdosten
-operative
-Drohungen
-Gorleben
-Olympischen Spiele
-Grovater
-Antike
-erbracht
-Rivalen
-F
-zugegeben
-Besten
-aufgewachsen
-Hemd
-Kommt
-Spree
-Bundesgerichtshof
-gerumt
-brasilianischen
-relevanten
-Kontext
-Springer
-brutal
-reien
-fasziniert
-Allgemeinen
-deutschsprachigen
-Mitgliedsstaaten
-Sicherheitsrat
-Besserung
-Bezirke
-alternativen
-Nahverkehr
-einziehen
-Zielen
-Notenbank
-Unterdrckung
-erholt
-Friedberg
-Oldenburg
-Eduard
-Jugendarbeit
-behlt
-Rckfhrung
-Textilien
-Postbank
-Genfer
-Treiben
-Bewohnern
-Verkehrsminister
-willen
-Viag
-Besondere
-Hosen
-landet
-Ereignissen
-entstandene
-Michel
-Novelle
-Klger
-Kapitals
-Nahrungsmittel
-stabile
-entfielen
-Frust
-stieen
-Norbert Blm
-beiseite
-weh
-Hill
-menschlicher
-Effekte
-sofortige
-Langen
-Chemikalien
-historischer
-gefhrte
-reserviert
-berstanden
-Untersuchungsausschu
-Dritten
-Qualitten
-tschetschenischen
-Bundesverfassungsgerichts
-Auslegung
-Wettbewerber
-gleichnamigen
-Lkw
-konomie
-Rose
-wilde
-verfgbaren
-verdoppeln
-Eigenschaft
-Oberlandesgericht
-Verstrkung
-strzt
-Einbrecher
-Weiterentwicklung
-kostenlose
-Normen
-begrenzen
-zurecht
-attraktive
-Know-how
-dick
-anschlieen
-Schilling
-Marokko
-Kreistag
-verschlechtert
-Verletzten
-belgische
-besttigten
-lehnten
-vergangen
-Zehntausende
-angestrebte
-Nummern
-irischen
-niederschsische
-FC Bayern Mnchen
-sogenannter
-zhlten
-eingespart
-beschlossenen
-prinzipiell
-aufzugeben
-angemessene
-Prager
-Bronze
-beibehalten
-Hartmann
-Anlegern
-sprich
-Transaktionen
-Beratungsstelle
-Landsmann
-anpassen
-T.
-IV
-abermals
-regieren
-Gegnern
-Funktionsbaustein
-unmittelbaren
-Stmme
-Rder
-Stillstand
-nirgendwo
-Kartoffeln
-industrielle
-Kriminalpolizei
-Franzose
-qualifizierte
-Erlaubnis
-Strau
-Schwangerschaft
-fing
-Eberhard Diepgen
-Transrapid
-Fabriken
-ANC
-Airbus
-Tagebuch
-islamische
-Reparatur
-Befragung
-geheimen
-rollt
-Jutta
-Ulmer
-Fotografen
-Seen
-Sozialpolitik
-berschrift
-eingesetzten
-angelegten
-EZB
-eingreifen
-traut
-kleinsten
-Zusagen
-Milieu
-mithin
-Hgel
-anhaltende
-krzen
-Faszination
-Zyklus
-Wolfsburg
-Flsse
-betreuen
-Sitzungen
-Durchsetzung
-Abgang
-bequem
-schwrmt
-appelliert
-Anneliese
-angetan
-welch
-Auftragseingang
-beteuert
-ankommt
-demselben
-ausgezahlt
-harter
-Intel
-Politische
-Grafik
-Anzug
-iranische
-Metro
-verkrpert
-zehnten
-vorgetragen
-di
-meinten
-Treue
-errtert
-widersprach
-Hunderttausende
-Vorstandssprecher
-flexibel
-Gras
-Tenor
-Versionen
-Kontrahenten
-Nordsee
-Absichten
-abzugeben
-schaden
-Wehrmacht
-Utopie
-Marion
-australischen
-steigerte
-untersuchten
-Henry
-dementiert
-unmittelbarer
-Irrtum
-gleichfalls
-Paragraphen
-Blicke
-reprsentiert
-gelbe
-Irene
-senden
-geringfgig
-Dunkelheit
-Vortrge
-Slowenien
-Referent
-stationiert
-Entlassungen
-einigten
-bunt
-hoffentlich
-Verbnden
-entsprach
-verbrachte
-prsentierten
-Fahne
-folglich
-Erscheinen
-oberhalb
-gyptischen
-trumt
-ausgewertet
-Hohe
-drckte
-festgeschrieben
-University
-verbucht
-Bewag
-Nordwesten
-kaputt
-Einbeziehung
-SV
-verdiente
-Pilot
-Gromutter
-erfreulich
-reiste
-bundesweiten
-Soweit
-Lohnarten
-Kokain
-Pressemitteilung
-nachzudenken
-angebotenen
-Sozialversicherung
-Vernehmung
-Zustndigkeit
-Tempel
-erschienenen
-Fernsehens
-Lebed
-Dietrich
-Repertoire
-Verbndeten
-frischen
-Geschftsbereich
-Theologie
-Zucker
-schwersten
-verstrkten
-lchelt
-Gtter
-Abbildung
-zweitgrte
-taten
-Schafe
-bar
-vergrert
-Philippinen
-Kursen
-Zimmern
-Angreifer
-Bundesprsidenten
-Organe
-Peru
-mussten
-lcherlich
-gesungen
-aufgeklrt
-Getrnke
-externe
-Fund
-DDR-Zeiten
-bezog
-feine
-Ingeborg
-Territorium
-Reis
-Gesamtjahr
-Hubert
-beschliet
-Beate
-Gesprchspartner
-Supermarkt
-Sparmanahmen
-Statistiken
-bliebe
-hchster
-Gnter Rexrodt
-Geschlecht
-Dom
-Betreuer
-zueinander
-vorzubereiten
-Boykott
-Fachleuten
-Dietmar
-Computern
-Marktanteile
-Hartmut
-Volkswirtschaft
-Ostsee
-bekmpft
-Nhere
-gescheiterten
-Schiene
-selbstbewut
-Bundeswirtschaftsminister
-Ausschreibung
-Z
-irakische
-Anweisungen
-Verlegung
-Spalten
-Rio
-Bauwirtschaft
-Getreide
-Konrad
-Selektion
-Litauen
-Intensitt
-Elite
-Baden-Baden
-Anruf
-Strken
-vernnftige
-nachdrcklich
-Kopie
-einmalig
-wundern
-vernachlssigt
-Pldoyer
-Messen
-verlieen
-Los
-Handvoll
-Sitzen
-manchem
-Nehmen
-verhelfen
-Angriffen
-Peres
-Sparten
-indische
-zivile
-Symbole
-gehrenden
-Kommentare
-Provokation
-Wnschen
-auerordentlichen
-Whlern
-auftritt
-Prenzlauer Berg
-herausgefunden
-Arbeitskrfte
-dringt
-Fhrerschein
-registrieren
-befragten
-runter
-Dirigent
-vernnftig
-Schmitt
-Festivals
-angenehm
-Wiederherstellung
-virtuelle
-Mustafa
-Grad Celsius
-ntzt
-Zgen
-schienen
-Grohandel
-jdischer
-Sony
-Geplant
-Sondersitzung
-Nagel
-Einwanderer
-Entschuldigung
-Evangelische
-Erforschung
-Gulden
-Ambiente
-eingetroffen
-Schreiber
-seltsam
-Kleinstadt
-gelitten
-mitteilt
-Philips
-Weiruland
-Angela Merkel
-Steuerhinterziehung
-Finanzpolitik
-Hafenstadt
-derlei
-dunkel
-Typs
-Halt
-abzusehen
-Story
-bevorstehende
-weitergegeben
-Hierbei
-Mittelfeldspieler
-Schmid
-Kurve
-engagierten
-Heer
-analysieren
-einheimischen
-Abri
-Absicherung
-Besonderes
-Kritikern
-jeglicher
-Bundesbahn
-abgewiesen
-Einerseits
-obendrein
-Wohnraum
-Widersprche
-Mostar
-Initiatoren
-Haaren
-wartete
-Merkel
-militrisch
-bung
-tagsber
-unterliegen
-Romantik
-vierzehn
-nebeneinander
-Eroberung
-Winkel
-gefhrlicher
-Oberstaatsanwalt
-Bundesauenminister
-Wahlsieg
-Global
-Quartett
-erneuert
-Grundstze
-sog
-Effizienz
-Philosoph
-Treff
-glaubten
-Amtsantritt
-Drfern
-Bhnen
-ne
-herzlich
-Nachdenken
-ergnzte
-Sponsor
-Entschlu
-Behinderten
-meiste
-Wunden
-Personalabbau
-geflohen
-geehrt
-Hhen
-gelernte
-Recherchen
-Helene
-sportlich
-angehen
-etablierten
-unterlag
-Rinder
-Dreck
-Ei
-e
-Allgemeine
-Grundgesetzes
-Ostberliner
-Hindernis
-Technische
-Reprsentanten
-umgebaut
-Scheibe
-nominiert
-Statistische
-Kenia
-drastische
-angefhrt
-berdies
-Fiskus
-Plastik
-verbliebenen
-verzichtete
-Blockade
-Mama
-Entwicklungshilfe
-Verbund
-Tiger
-ruhen
-fortgeschrieben
-mithalten
-namentlich
-verwandt
-Engagements
-Anne
-absehbarer
-Schluss
-Konstanz
-Gen
-Veto
-knapper
-wiederholte
-Scheiben
-frische
-verknden
-wirkten
-Anbietern
-mchtige
-Jakob
-Vorgehensweise
-Haushalten
-Olga
-Saudi-Arabien
-schtzungsweise
-abgerechnet
-Vorhang
-Weltweit
-Spaltung
-Langeweile
-Pleite
-Innenministeriums
-Symptome
-Abgeordneter
-bekannter
-Stalin
-sachlich
-mittag
-Tante
-Drucker
-Route
-antiken
-starkes
-kompletten
-Brgermeisters
-hufigsten
-Brsianer
-unntig
-CDU-Fraktion
-Sdostasien
-Vorabend
-hinunter
-konstant
-weier
-Ethik
-V
-Abflle
-tschechische
-Mailnder
-Ivan
-Mohamed
-Wieviel
-frhlich
-Zoo
-greres
-Hintergrnde
-Sauerstoff
-Eichel
-bertrieben
-Stckliste
-deutschem
-amtierenden
-sinnvolle
-Bibliotheken
-kmpfte
-Trinkwasser
-SPD-Fraktionschef
-Salz
-Martha
-Rauch
-Videos
-drucken
-eingeschlossen
-gesttzt
-Plutonium
-lterer
-Ingolstadt
-Menschlichkeit
-Heimspiel
-Adler
-angerichtet
-ri
-Phasen
-boten
-verbracht
-erweiterten
-Menschenrechtsverletzungen
-Nikolaus
-Mitleid
-Parolen
-bekomme
-Besser
-Zustze
-abgeschnitten
-arg
-Routine
-Ttern
-Afrikas
-Stadtverordnetenversammlung
-Beschrnkung
-Morde
-Erfolgen
-Red
-ausgeschrieben
-Hebron
-US
-d
-unverzglich
-Zunge
-Nationalisten
-praktiziert
-wiegt
-Felix
-Kunststoff
-Reichweite
-deutete
-zurckzukehren
-Smith
-Satzung
-Ladung
-Stichtag
-Ltd
-zugehrigen
-zutiefst
-eingeplant
-Albrecht
-Konkurrent
-Motoren
-Normalitt
-Eigenkapital
-Rckschlag
-griffen
-erweiterte
-keines
-erteilte
-Kalender
-khl
-vage
-bewies
-Beachten
-NRW
-Personenwagen
-gefertigt
-begrndeten
-Dasein
-einfallen
-entfalten
-fangen
-Gelassenheit
-demonstrierten
-Psychologen
-erwarb
-auszubauen
-juristisch
-Automobilindustrie
-normaler
-Brille
-formal
-ausgleichen
-mittelstndischen
-US-amerikanischen
-Bundesanstalt
-mitgebracht
-rckgngig
-Buben
-verdammt
-strkeren
-empfindet
-ffnete
-Lge
-Makler
-flchtete
-ernsthafte
-Polizeibeamte
-drohten
-Nchte
-Mercedes-Benz
-vormittag
-Anschein
-ffentlichkeitsarbeit
-Personalkosten
-Erwin Teufel
-Innovation
-ausgeschieden
-Befrchtung
-Rufnummer
-Reisenden
-Verstand
-Elementen
-dienten
-nderte
-Problems
-Nach wie vor
-Kenner
-Taxifahrer
-Verfassungsgericht
-Ad
-dienstags
-Tbinger
-Komposition
-Haustr
-Stadtgebiet
-runden
-verzgert
-Dateien
-Dimitrios
-gereicht
-sanft
-Gehen
-Research
-Oskar
-Tribne
-unzufrieden
-Gltigkeit
-verstecken
-Kunsthalle
-hinterlegen
-Antisemitismus
-Vorfahren
-Akzente
-Begrenzung
-Reisende
-Wahlbeteiligung
-de la
-Schnittstelle
-Jordanien
-Alarm
-eignet
-Wirkungen
-Fhrungskrfte
-Christel
-Wobei
-angewandt
-aufgetaucht
-vielfltigen
-Schtzung
-Sexualitt
-gewrdigt
-arme
-Diktator
-Verschrfung
-Fenstern
-Arnold
-schiet
-verkrzt
-Oberbayern
-vorzunehmen
-Landtagswahlen
-jeher
-Mitgliederversammlung
-Aufzeichnungen
-Entwicklungslnder
-Gefhlen
-vwd
-seltenen
-et
-serviert
-Dahinter
-Vatikan
-Korrekturen
-Neubauten
-logische
-versumt
-umzugehen
-Ambitionen
-geprgten
-eingezogen
-Bundesanwaltschaft
-Analyst
-zurckgehen
-deine
-schloss
-FC
-Stabilisierung
-Teils
-Euch
-Nationale
-Innere
-Kabarett
-Fundament
-Ernennung
-vertagt
-Williams
-Krupp
-wahrlich
-verwundert
-Zelt
-Motiven
-laufe
-Reichen
-Lcken
-Beihilfe
-Bebauung
-Mehrheiten
-brgerliche
-Abgesehen
-Sound
-nchtlichen
-ethnischen
-mittelstndische
-telefonisch
-Fulda
-einsteigen
-raten
-Versicherer
-Tarifverhandlungen
-Gewiheit
-Regisseure
-Kostenstelle
-Weit
-Glubiger
-nochmal
-Christiane
-Wehr
-Renovierung
-gemalt
-Diesem
-Note
-Palast
-verfolgte
-graue
-Schrders
-Nationalismus
-umliegenden
-Normalerweise
-sauer
-begngen
-Ttung
-Roten
-anderem
-verbundene
-strahlt
-abgestellt
-Nachbar
-Libyen
-verarbeiten
-Talente
-Gedichten
-Korea
-Haftstrafe
-Beckenbauer
-Networks
-Fraktionsvorsitzende
-bekennen
-erstattet
-Horn
-bemerkenswert
-Werkzeug
-Trick
-Rckblick
-Kunstwerke
-berlebenden
-regulren
-Papa
-Indiz
-Kiew
-gewagt
-halbwegs
-Stattdessen
-schlechthin
-besiegt
-verschiedensten
-Bemerkungen
-Udo
-beruhigen
-toll
-dotierten
-vollstndigen
-SPD-Chef
-Miami
-Plakat
-Sddeutschen Zeitung
-Zitat
-ungeklrt
-Arbeitern
-Einflsse
-BND
-Satire
-Akte
-enthaltenen
-Geldpolitik
-durchsucht
-gab's
-brav
-Stadtteilen
-Segment
-Wochenenden
-aufgebrochen
-geraumer
-mitteilen
-klang
-Gepck
-effektiv
-berwiesen
-rmische
-Warnungen
-Landesverband
-Flagge
-formulieren
-Ballett
-professionellen
-ausgebt
-Landung
-Weisheit
-Slobodan Milosevic
-schlichten
-prophezeit
-festzulegen
-donnerstags
-Mantel
-eh
-berraschenden
-berein
-Oberursel
-liebevoll
-Baden
-Taschen
-Werksttten
-ADAC
-Flecken
-verankert
-Jochen
-Gunst
-populr
-Regierungspartei
-prominente
-beruft
-Kanle
-Allee
-Abweichungen
-ganzer
-zurckgreifen
-klug
-hierher
-demokratisch
-eigen
-Boston
-Abtreibung
-arabische
-siebzig
-Bebauungsplan
-Anschlgen
-wissenschaftlicher
-Des
-WTO
-kassieren
-Kriterium
-Auftrgen
-Tausenden
-Redakteur
-Klischees
-Grostdten
-Lehrstellen
-dein
-vorstellbar
-Sucht
-erhob
-verschickt
-freundlichen
-umfasst
-Leder
-Eins
-bezug
-Arzneimittel
-Staatsprsidenten
-auszugleichen
-Absolventen
-Brecht
-abstimmen
-Straenbahn
-Nationalsozialisten
-Thringer
-lieferten
-dnische
-entspannt
-befrwortet
-prognostiziert
-Rektor
-Beitrgen
-gestritten
-fllt
-Ressorts
-zutage
-letztendlich
-krzer
-dnn
-Baumann
-umso
-Hrde
-verunsichert
-Technischen
-Planer
-Belebung
-Infos
-Anja
-Desaster
-erstens
-Buenos Aires
-Bse
-Verknpfung
-regt
-Christian Ude
-lenken
-Geschftsttigkeit
-ausverkauft
-steigender
-kndigen
-besetzte
-90er Jahre
-gegriffen
-billige
-beliebten
-wnsche
-sang
-Kultusministerium
-eindrucksvoll
-Zensur
-Ost-Berlin
-Staatsanwlte
-Preuen
-Johannes Rau
-Marine
-Erdgas
-erzwingen
-anwesend
-Schlge
-unheimlich
-Pflanze
-Khe
-litt
-derjenigen
-grnes Licht
-nett
-achtzig
-Gren
-Heilbronn
-Globus
-hindurch
-Bodensee
-Atelier
-Jugendlicher
-Geliebten
-kopiert
-Tarifvertrag
-Kanzlers
-angrenzenden
-einmaligen
-Mitarbeiters
-Gehr
-gemein
-Fluggesellschaften
-Leitungen
-erstmal
-Offensichtlich
-eingeweiht
-befindlichen
-inwieweit
-Konvention
-auftauchen
-vorsorglich
-Florenz
-Avantgarde
-Ablsung
-versichern
-Teilchen
-Anbindung
-sicherstellen
-Lee
-Diana
-berdurchschnittlich
-professionelle
-ereignete
-Gesundheitsreform
-Mobilitt
-Darstellungen
-hellen
-Jean
-Monitor
-Versptung
-Innovationen
-Christina
-25jhrige
-Hollnder
-abzuwarten
-vorangegangenen
-Neugier
-mangelt
-Hauptquartier
-humanitre
-Kindergeld
-Filmemacher
-Deal
-Europameister
-drastischen
-Kohlendioxid
-erprobt
-aggressiv
-angestellt
-De
-erheblicher
-Entwicklungslndern
-Bden
-SG
-blind
-innovative
-zustzlicher
-Astronomen
-vorgeschrieben
-Augenzeugen
-norwegischen
-Tiergarten
-regelmige
-Kernenergie
-Eisenbahn
-Sensation
-Bekannte
-widersprechen
-Zehntel
-nachfolgenden
-brauchten
-kombiniert
-Pdagogen
-steuerliche
-Srebrenica
-fnfziger Jahre
-Sozialdemokrat
-Goethes
-Intendanten
-rutschte
-Ostdeutschen
-begrenzten
-Bremens
-wertet
-Kronen
-nhert
-Nebenwirkungen
-moralisch
-Jenseits
-vorweisen
-Tankstelle
-Bayer Leverkusen
-Schwelle
-liegende
-begrenzte
-optimale
-parat
-Nationalpark
-Einschnitte
-Interessierte
-Hauptrolle
-Sich
-Rover
-Anstalten
-Raumfahrt
-Steinen
-Hindernisse
-Entgegen
-lud
-Erschlieung
-Alptraum
-herrschenden
-Dayton
-Sozialamt
-Jahreszeit
-Verwertung
-angerufen
-kndigten
-Wrden
-Munition
-dreieinhalb
-unterliegt
-Sauna
-Sporthalle
-Aufschrift
-amtliche
-Pence
-In der Regel
-Magen
-Jude
-steckte
-Belgrader
-Gnade
-aufrechterhalten
-weithin
-heimische
-Letzte
-DTB
-Unbekannten
-Aufarbeitung
-Reisebros
-niedrigere
-Mazedonien
-zentral
-wiederholten
-schimpft
-Faschismus
-Verrat
-Islamisten
-Bekanntgabe
-rcklufig
-zusammengeschlossen
-orientierten
-30jhrige
-Blttern
-Mandate
-buchstblich
-betrchtlich
-verwalten
-Zeichnung
-westdeutsche
-Aktienkurse
-Verste
-Friedrichstrae
-Ratten
-Knigreich
-Pension
-Deckung
-Erdgescho
-unverstndlich
-Mythen
-englisch
-Lagern
-Arbeitszeiten
-Sozialstaat
-jnger
-Geruch
-aufstellen
-wrtlich
-musikalisch
-Zigarette
-Hauptstrae
-Entsetzen
-angewendet
-Le
-Sprengstoff
-Coup
-Strung
-Uniform
-steigert
-Seminare
-Gegenspieler
-Fehlern
-mittelalterlichen
-Orden
-Thron
-Agenten
-spektakulre
-OSZE
-Kontrast
-Senders
-Teppich
-Titeln
-EUR
-Erreger
-satt
-Strafkammer
-Ute
-Julia
-frage
-zahlte
-Prinzen
-stabilen
-Reports
-Schade
-belaufen
-beantragte
-Carl
-Einnahme
-aneinander
-sid
-beluft
-Fahrten
-Rems-Murr-Kreis
-Sdafrikas
-Uhren
-Rosa
-Brauerei
-erstaunt
-bescheidenen
-berraschende
-angefordert
-Parallel
-Michael Schumacher
-Jordan
-antworten
-Araber
-Bayreuth
-Bundesverbandes
-Beirat
-ewige
-Mnzen
-passende
-profitierten
-St. Pauli
-packen
-King
-Vorgngen
-Zuwachsraten
-Schilderung
-drben
-Archivierung
-Apple
-Beethoven
-Ampel
-Kabul
-krperlich
-verstndigen
-warteten
-angestrebten
-Parks
-teilzunehmen
-Jahresumsatz
-jahrzehntelang
-Obersten
-Zirkus
-Straenverkehr
-ausgehandelt
-Wiesen
-bezifferte
-Renditen
-Diplomat
-Weite
-bewegten
-beschwert
-Tony Blair
-Kunstwerk
-Banker
-Baustellen
-steuerlichen
-BDI
-vergebens
-erwartenden
-Minen
-geschtzten
-DAX
-hinreichend
-abgesichert
-extremen
-jugendlichen
-Erlebnisse
-Spekulation
-Belohnung
-Volksabstimmung
-Wichtigste
-komplexen
-Erzeugnisse
-zerstrte
-Trendwende
-Hamburger SV
-eingeschlagen
-plaziert
-wechselnden
-gltige
-Schubert
-Hoch
-Vergessen
-totale
-psychologische
-betrieblichen
-Buchen
-Gewinnen
-Moskaus
-Innern
-Christopher
-ntzlich
-orientierte
-Kompositionen
-bedauerte
-Formel 1
-nix
-Kse
-Erzbischof
-Ausfall
-Konflikts
-goldene
-Marx
-erhoffen
-protestierten
-landwirtschaftlichen
-lngerer
-Geliebte
-Vllig
-landesweit
-Abschreibungen
-dominieren
-bittere
-versetzen
-detaillierte
-abgehalten
-Chemiker
-einsam
-Blau
-Anregung
-Kameraden
-Kooperationen
-Wilfried
-Schalke
-Zusatz
-geschrumpft
-stundenlang
-unweit
-Illusionen
-krperlichen
-bemhte
-finanzieller
-klares
-Werder Bremen
-einsparen
-Anfhrer
-berwindung
-Fliegen
-bedrohte
-vorlufige
-Vorbilder
-betonten
-verfgte
-Extremisten
-bloen
-bert
-gemerkt
-verwehrt
-Htte
-John Major
-nebst
-Theorien
-Angeblich
-Kaufhaus
-Atlantik
-Tief
-Hertha
-ausgewhlte
-gngigen
-leuchtet
-Berufe
-Bezirken
+der
+die
+und
+in
+den
+von
+zu
+das
+mit
+sich
+des
+auf
+fr
+ist
+im
+dem
+nicht
+ein
+Die
+eine
+als
+auch
+es
+an
+werden
+aus
+er
+hat
+da
+sie
+nach
+wird
+bei
+einer
+Der
+um
+am
+sind
+noch
+wie
+einem
+ber
+einen
+Das
+so
+Sie
+zum
+war
+haben
+nur
+oder
+aber
+vor
+zur
+bis
+mehr
+durch
+man
+sein
+wurde
+sei
+In
+Prozent
+hatte
+kann
+gegen
+vom
+knnen
+schon
+wenn
+habe
+seine
+Mark
+ihre
+dann
+unter
+wir
+soll
+ich
+eines
+Es
+Jahr
+zwei
+Jahren
+diese
+dieser
+wieder
+keine
+Uhr
+seiner
+worden
+Und
+will
+zwischen
+Im
+immer
+Millionen
+Ein
+was
+sagte
+Er
+gibt
+alle
+DM
+diesem
+seit
+mu
+wurden
+beim
+doch
+jetzt
+waren
+drei
+Jahre
+Mit
+neue
+neuen
+damit
+bereits
+da
+Auch
+ihr
+seinen
+mssen
+ab
+ihrer
+Nach
+ohne
+sondern
+selbst
+ersten
+nun
+etwa
+Bei
+heute
+ihren
+weil
+ihm
+seien
+Menschen
+Deutschland
+anderen
+werde
+Ich
+sagt
+Wir
+Eine
+rund
+Fr
+Aber
+ihn
+Ende
+jedoch
+Zeit
+sollen
+ins
+Wenn
+So
+seinem
+uns
+Stadt
+geht
+Doch
+sehr
+hier
+ganz
+erst
+wollen
+Berlin
+vor allem
+sowie
+hatten
+kein
+deutschen
+machen
+lassen
+Als
+Unternehmen
+andere
+ob
+dieses
+steht
+dabei
+wegen
+weiter
+denn
+beiden
+einmal
+etwas
+Wie
+nichts
+allerdings
+vier
+gut
+viele
+wo
+viel
+dort
+alles
+Auf
+wre
+SPD
+kommt
+vergangenen
+denen
+fast
+fnf
+knnte
+nicht nur
+htten
+Frau
+Am
+dafr
+kommen
+diesen
+letzten
+zwar
+Diese
+groen
+dazu
+Von
+Mann
+Da
+sollte
+wrde
+also
+bisher
+Leben
+Milliarden
+Welt
+Regierung
+konnte
+ihrem
+Frauen
+whrend
+Land
+zehn
+wrden
+stehen
+ja
+USA
+heit
+dies
+zurck
+Kinder
+dessen
+ihnen
+deren
+sogar
+Frage
+gewesen
+erste
+gab
+liegt
+gar
+davon
+gestern
+geben
+Teil
+Polizei
+dass
+htte
+eigenen
+kaum
+sieht
+groe
+Denn
+weitere
+Was
+sehen
+macht
+Angaben
+weniger
+gerade
+lt
+Geld
+Mnchen
+deutsche
+allen
+darauf
+wohl
+spter
+knne
+deshalb
+aller
+kam
+Arbeit
+mich
+gegenber
+nchsten
+bleibt
+wenig
+lange
+gemacht
+Wer
+Dies
+Fall
+mir
+gehen
+Berliner
+mal
+Weg
+CDU
+wollte
+sechs
+keinen
+Woche
+dagegen
+alten
+mglich
+gilt
+erklrte
+msse
+Dabei
+knnten
+Geschichte
+zusammen
+finden
+Tag
+Art
+erhalten
+Man
+Dollar
+Wochen
+jeder
+nie
+bleiben
+besonders
+Jahres
+Deutschen
+Den
+Zu
+zunchst
+derzeit
+allein
+deutlich
+Entwicklung
+wei
+einige
+sollten
+Prsident
+geworden
+statt
+Bonn
+Platz
+inzwischen
+Nur
+Freitag
+Um
+pro
+seines
+Damit
+Montag
+Europa
+schlielich
+Sonntag
+einfach
+gehrt
+eher
+oft
+Zahl
+neben
+hlt
+weit
+Partei
+meisten
+Thema
+zeigt
+Politik
+Aus
+zweiten
+Januar
+insgesamt
+je
+mute
+Anfang
+hinter
+ebenfalls
+ging
+Mitarbeiter
+darber
+vielen
+Ziel
+darf
+Seite
+fest
+hin
+erklrt
+Namen
+Haus
+An
+Frankfurt
+Gesellschaft
+Mittwoch
+damals
+Dienstag
+Hilfe
+Mai
+Markt
+Seit
+Tage
+Donnerstag
+halten
+gleich
+nehmen
+solche
+Entscheidung
+besser
+alte
+Leute
+Ergebnis
+Samstag
+Da
+sagen
+System
+Mrz
+tun
+Monaten
+kleinen
+lang
+Nicht
+knapp
+bringen
+wissen
+Kosten
+Erfolg
+bekannt
+findet
+daran
+knftig
+wer
+acht
+Grnen
+schnell
+Grund
+scheint
+Zukunft
+Stuttgart
+bin
+liegen
+politischen
+Gruppe
+Rolle
+stellt
+Juni
+sieben
+September
+nmlich
+Mnner
+Oktober
+Mrd
+berhaupt
+eigene
+Dann
+gegeben
+Auerdem
+Stunden
+eigentlich
+Meter
+lie
+Probleme
+vielleicht
+ebenso
+Bereich
+zum Beispiel
+Bis
+Hhe
+Familie
+Whrend
+Bild
+Lndern
+Informationen
+Frankreich
+Tagen
+schwer
+zuvor
+Vor
+genau
+April
+stellen
+neu
+erwartet
+Hamburg
+sicher
+fhren
+Mal
+ber
+mehrere
+Wirtschaft
+Mio
+Programm
+offenbar
+Hier
+weiteren
+natrlich
+konnten
+stark
+Dezember
+Juli
+ganze
+kommenden
+Kunden
+bekommen
+eben
+kleine
+trotz
+wirklich
+Lage
+Lnder
+leicht
+gekommen
+Spiel
+laut
+November
+kurz
+politische
+fhrt
+innerhalb
+unsere
+meint
+immer wieder
+Form
+Mnchner
+AG
+anders
+ihres
+vllig
+beispielsweise
+gute
+bislang
+August
+Hand
+jede
+GmbH
+Film
+Minuten
+erreicht
+beide
+Musik
+Kritik
+Mitte
+Verfgung
+Buch
+drfen
+Unter
+jeweils
+einigen
+Zum
+Umsatz
+spielen
+Daten
+welche
+mten
+hie
+paar
+nachdem
+Kunst
+Euro
+gebracht
+Problem
+Noch
+jeden
+Ihre
+Sprecher
+recht
+erneut
+lngst
+europischen
+Sein
+Eltern
+Beginn
+besteht
+Seine
+mindestens
+machte
+Jetzt
+bietet
+auerdem
+Brger
+Trainer
+bald
+Deutsche
+Schon
+Fragen
+klar
+Durch
+Seiten
+gehren
+Dort
+erstmals
+Februar
+zeigen
+Titel
+Stck
+grten
+FDP
+setzt
+Wert
+Frankfurter
+Staat
+mchte
+daher
+wolle
+Bundesregierung
+lediglich
+Nacht
+Krieg
+Opfer
+Tod
+nimmt
+Firma
+zuletzt
+Werk
+hohen
+leben
+unter anderem
+Dieser
+Kirche
+weiterhin
+gebe
+gestellt
+Mitglieder
+Rahmen
+zweite
+Paris
+Situation
+gefunden
+Wochenende
+internationalen
+Wasser
+Recht
+sonst
+stand
+Hlfte
+Mglichkeit
+versucht
+blieb
+junge
+Mehrheit
+Strae
+Sache
+arbeiten
+Monate
+Mutter
+berichtet
+letzte
+Gericht
+wollten
+Ihr
+zwlf
+zumindest
+Wahl
+genug
+Weise
+Vater
+Bericht
+amerikanischen
+hoch
+beginnt
+Wort
+obwohl
+Kopf
+spielt
+Interesse
+Westen
+verloren
+Preis
+Erst
+jedem
+erreichen
+setzen
+spricht
+frher
+teilte
+Landes
+zudem
+einzelnen
+bereit
+Blick
+Druck
+Bayern
+Kilometer
+gemeinsam
+Bedeutung
+Chance
+Politiker
+Dazu
+Zwei
+besten
+Ansicht
+endlich
+Stelle
+direkt
+Beim
+Bevlkerung
+Viele
+solchen
+Alle
+solle
+jungen
+Einsatz
+richtig
+grte
+sofort
+neuer
+ehemaligen
+unserer
+drfte
+schaffen
+Augen
+Ruland
+Internet
+Allerdings
+Raum
+Mannschaft
+neun
+kamen
+Ausstellung
+Zeiten
+Dem
+einzige
+meine
+Nun
+Verfahren
+Angebot
+Richtung
+Projekt
+niemand
+Kampf
+weder
+tatschlich
+Personen
+dpa
+Heute
+gefhrt
+Gesprch
+Kreis
+Hamburger
+Schule
+guten
+Hauptstadt
+durchaus
+Zusammenarbeit
+darin
+Amt
+Schritt
+meist
+gro
+zufolge
+Sprache
+Region
+Punkte
+Vergleich
+genommen
+gleichen
+du
+Ob
+Soldaten
+Universitt
+verschiedenen
+Kollegen
+neues
+Brgermeister
+Angst
+stellte
+Sommer
+danach
+anderer
+gesagt
+Sicherheit
+Macht
+Bau
+handelt
+Folge
+Bilder
+lag
+Osten
+Handel
+sprach
+Aufgabe
+Chef
+frei
+dennoch
+DDR
+hohe
+Firmen
+bzw
+Koalition
+Mdchen
+Zur
+entwickelt
+fand
+Diskussion
+bringt
+Deshalb
+Hause
+Gefahr
+per
+zugleich
+frheren
+dadurch
+ganzen
+abend
+erzhlt
+Streit
+Vergangenheit
+Parteien
+Verhandlungen
+jedenfalls
+gesehen
+franzsischen
+Trotz
+darunter
+Spieler
+forderte
+Beispiel
+Meinung
+wenigen
+Publikum
+sowohl
+meinte
+mag
+Auto
+Lsung
+Boden
+Einen
+Prsidenten
+hinaus
+Zwar
+verletzt
+weltweit
+Sohn
+bevor
+Peter
+muten
+keiner
+Produktion
+Ort
+braucht
+Zusammenhang
+Kind
+Verein
+sprechen
+Aktien
+gleichzeitig
+London
+sogenannten
+Richter
+geplant
+Italien
+Mittel
+her
+freilich
+Mensch
+groer
+Bonner
+wenige
+ffentlichen
+Untersttzung
+dritten
+nahm
+Bundesrepublik
+Arbeitspltze
+bedeutet
+Feld
+Dr.
+Bank
+oben
+gesetzt
+Ausland
+Ministerprsident
+Vertreter
+z.B.
+jedes
+ziehen
+Parlament
+berichtete
+Dieses
+China
+aufgrund
+Stellen
+warum
+Kindern
+heraus
+heutigen
+Anteil
+Herr
+ffentlichkeit
+Abend
+Selbst
+Liebe
+Neben
+rechnen
+fllt
+New York
+Industrie
+WELT
+Stuttgarter
+wren
+Vorjahr
+Sicht
+Idee
+Banken
+verlassen
+Leiter
+Bhne
+insbesondere
+offen
+stets
+Theater
+ndern
+entschieden
+Staaten
+Experten
+Gesetz
+Geschft
+Tochter
+angesichts
+gelten
+Mehr
+erwarten
+luft
+fordert
+Japan
+Sieg
+Ist
+Stimmen
+whlen
+russischen
+gewinnen
+CSU
+bieten
+Nhe
+jhrlich
+Bremen
+Schler
+Rede
+Funktion
+Zuschauer
+hingegen
+anderes
+Fhrung
+Besucher
+Drittel
+Moskau
+immerhin
+Vorsitzende
+Urteil
+Schlielich
+Kultur
+betonte
+mittlerweile
+Saison
+Konzept
+suchen
+Zahlen
+Roman
+Gewalt
+Kln
+gesamte
+indem
+EU
+Stunde
+ehemalige
+Auftrag
+entscheiden
+genannt
+tragen
+Brse
+langen
+hufig
+Chancen
+Vor allem
+Position
+alt
+Luft
+Studenten
+bernehmen
+strker
+ohnehin
+zeigte
+geplanten
+Reihe
+darum
+verhindern
+begann
+Medien
+verkauft
+Minister
+wichtig
+amerikanische
+sah
+gesamten
+einst
+verwendet
+vorbei
+Behrden
+helfen
+Folgen
+bezeichnet
+Weil
+Ihnen
+zur Zeit
+voll
+deutscher
+Worten
+pltzlich
+mte
+Vertrag
+Staatsanwaltschaft
+Monat
+Oder
+Herbst
+Israel
+zahlen
+Zeitung
+Grenzen
+Wissenschaftler
+Partner
+Patienten
+nutzen
+Bund
+setzte
+Betrieb
+Michael
+beteiligt
+Professor
+Fernsehen
+Knstler
+mehreren
+erinnert
+Liste
+Mglichkeiten
+Autor
+tglich
+eingesetzt
+Versuch
+Alter
+Autos
+Kohl
+auer
+Hoffnung
+Verkauf
+nennt
+erscheint
+fhrte
+Proze
+Tter
+bisherigen
+lnger
+erkennen
+treffen
+Kein
+unser
+begonnen
+Antrag
+beschftigt
+Opposition
+Manahmen
+brachte
+nchste
+Zudem
+gezeigt
+Dennoch
+Sinn
+Erde
+gefordert
+Wohnung
+all
+Menge
+gerne
+Hintergrund
+hren
+Deutschlands
+selten
+Weitere
+besttigt
+bestimmt
+Statt
+entstehen
+nannte
+schreibt
+Union
+brauchen
+gewhlt
+Kraft
+elf
+trgt
+zieht
+Grenze
+Geschftsfhrer
+Team
+Gebude
+Tonnen
+Wettbewerb
+Anspruch
+Polen
+morgen
+Bremer
+Wegen
+Gebiet
+glaubt
+Sa
+Natur
+Arbeiten
+jene
+Fllen
+Jahrhundert
+leisten
+Zeitpunkt
+internationale
+mein
+Konkurrenz
+nach wie vor
+nicht einmal
+stieg
+notwendig
+sogenannte
+fahren
+kostet
+entsprechenden
+geplante
+geschlossen
+Fehler
+Zweifel
+Erklrung
+wiederum
+erschienen
+gehe
+Glck
+erfolgreich
+fehlt
+Gruppen
+Aktion
+kndigte
+meinen
+manchmal
+verschiedene
+bernommen
+mglichst
+SZ
+lieber
+Vielleicht
+Warum
+Verantwortung
+Gesprche
+Suche
+gern
+fallen
+Organisation
+Preise
+weitgehend
+Basis
+Computer
+aufgenommen
+Schutz
+Eindruck
+fiel
+nahe
+schlecht
+lebt
+Verhltnis
+Forderung
+britischen
+sozialen
+Technik
+entstanden
+Vorstand
+verantwortlich
+of
+bestimmten
+jngsten
+geboren
+erhlt
+wobei
+Gegner
+Grnden
+Material
+Spitze
+Gewinn
+Punkten
+vertreten
+Schulen
+Studie
+Zeichen
+gewonnen
+Kurs
+Washington
+Trkei
+Erfahrungen
+wirkt
+Armee
+erhielt
+beginnen
+bichen
+entfernt
+vorgesehen
+Ergebnisse
+zahlreiche
+entgegen
+Ohne
+hielt
+privaten
+sucht
+Gemeinde
+Antwort
+Zentrum
+bilden
+legen
+Schweiz
+gemeinsamen
+weg
+teilweise
+Grobritannien
+Licht
+Hannover
+Produkte
+Stimme
+diesmal
+Schlu
+gingen
+angeboten
+Gesicht
+Treffen
+Nachdem
+lieen
+erffnet
+versuchen
+Konzern
+Leistungen
+Gste
+Wohnungen
+mglicherweise
+Dafr
+wichtige
+Neue
+Rund
+zog
+geraten
+Bewegung
+Gegen
+ntig
+Mitglied
+hundert
+Dsseldorf
+PDS
+wahrscheinlich
+Danach
+vermutlich
+selber
+stndig
+Senat
+Branche
+Journalisten
+enthlt
+laufen
+Vom
+Straen
+Einfhrung
+arbeitet
+verlangt
+Werke
+Insgesamt
+Runde
+Besuch
+untersttzt
+Manager
+Brssel
+de
+schweren
+sitzt
+geschrieben
+jemand
+franzsische
+Bereits
+Wachstum
+taz
+bestimmte
+Drei
+Freiheit
+entsprechende
+kennt
+Band
+Arbeitgeber
+glauben
+Wege
+verurteilt
+tritt
+Volk
+Plne
+R
+angekndigt
+Satz
+sitzen
+Vorschlag
+rechnet
+muss
+erhht
+Investitionen
+Aufgaben
+warten
+entdeckt
+wichtigsten
+Heimat
+verstehen
+schrieb
+trotzdem
+erfahren
+Unternehmens
+frhere
+bekommt
+Jugendlichen
+Dinge
+ffentliche
+Institut
+Wirkung
+sorgen
+trifft
+reden
+Werte
+Forscher
+Wo
+Sitzung
+zustzlich
+vielmehr
+Anla
+Beide
+gehalten
+Tel.
+Schweizer
+beschlossen
+Serben
+Bundestag
+Verwaltung
+vorher
+automatisch
+betont
+Leistung
+abgeschlossen
+Obwohl
+zufrieden
+Beschftigten
+Papier
+Thomas
+Verbindung
+Sinne
+ziemlich
+Debatte
+enthalten
+ausschlielich
+bestehen
+Flchtlinge
+Jugendliche
+Freund
+A
+Themen
+berall
+droht
+Gewerkschaften
+Bedingungen
+Beziehungen
+Text
+europische
+Punkt
+Erfahrung
+The
+I
+Auenminister
+soziale
+russische
+Tisch
+Republik
+hher
+reicht
+Million
+gehabt
+politisch
+folgen
+hnlich
+geschaffen
+Schaden
+erster
+Krper
+Amerikaner
+gettet
+Einige
+Frieden
+zhlt
+Beteiligung
+Wagen
+Bahn
+vergessen
+Verlust
+Tiere
+Museum
+gegrndet
+daraus
+Start
+Kontrolle
+Einflu
+sterreich
+Allein
+Norden
+Wunsch
+manche
+Wahlen
+Reise
+steigen
+gemeinsame
+Darstellung
+Demokratie
+Knig
+England
+nennen
+Teile
+Jahrhunderts
+denken
+Name
+Lehrer
+S.
+laufenden
+verbunden
+Qualitt
+zustzliche
+Widerstand
+schn
+Spanien
+gegangen
+Beamten
+Jeder
+Europas
+Freunde
+mitteilte
+erklren
+Familien
+Gerade
+gefallen
+Aktie
+Krise
+Baden-Wrttemberg
+Nummer
+wies
+auerhalb
+gestiegen
+Reform
+Literatur
+Arbeitslosigkeit
+Lebens
+Sozialdemokraten
+gewann
+Moment
+angeblich
+entsprechend
+Mill
+weiteres
+betrgt
+dritte
+wesentlich
+Amerika
+Insel
+britische
+Nachfolger
+entspricht
+dahin
+unseren
+solcher
+Juden
+Sport
+Rathaus
+verkaufen
+grere
+Frhjahr
+gebaut
+Wahrheit
+dar
+Kommission
+Polizisten
+Bosnien
+offensichtlich
+Grundlage
+relativ
+Nein
+Klasse
+tut
+hngt
+wenigstens
+aktuellen
+Modell
+Herstellung
+hinzu
+Gedanken
+bernahme
+entwickeln
+Quartal
+meiner
+drften
+Keine
+jener
+Zustimmung
+legt
+fordern
+Einheit
+Natrlich
+blieben
+Laut
+in Zukunft
+Szene
+Klaus
+Bundeskanzler
+Schwierigkeiten
+geblieben
+lesen
+Besonders
+getroffen
+keineswegs
+Abschlu
+Verlag
+Interessen
+Netz
+anschlieend
+Plan
+Ausbildung
+befindet
+zunehmend
+verzichten
+gespielt
+ermittelt
+legte
+Ruhe
+Hans
+Hndler
+genutzt
+hhere
+starke
+treten
+Veranstaltung
+Stimmung
+rzte
+erheblich
+standen
+Teilnehmer
+mchten
+starken
+Forderungen
+Stand
+Anlage
+siehe
+erfolgt
+Vertrieb
+beste
+gelungen
+Ordnung
+Andreas
+lautet
+kritisiert
+Schrder
+machten
+verstrkt
+Sden
+Haltung
+freien
+weist
+nahezu
+Motto
+abgelehnt
+gelang
+gezogen
+frhen
+schreiben
+aufs
+gleiche
+ffentlich
+Huser
+kleiner
+folgt
+Einer
+Ja
+Wien
+mglichen
+weiterer
+kaufen
+Gefhl
+wirtschaftlichen
+Initiative
+hofft
+drfe
+Person
+Telekom
+kennen
+interessiert
+Beitrag
+Geschftsjahr
+lernen
+gefragt
+bezeichnete
+Meister
+Bcher
+krzlich
+Tradition
+einzelne
+Vorsitzender
+Verband
+Grne
+berzeugt
+Rckkehr
+Also
+schwere
+falsch
+unten
+behandelt
+indes
+groes
+Worte
+getan
+Vorstellung
+somit
+langsam
+Whlen
+gedacht
+gendert
+Bisher
+hervor
+Hessen
+Stdte
+unbedingt
+Hotel
+Artikel
+ttig
+zahlreichen
+Geburtstag
+gesprochen
+schlieen
+Engagement
+Alles
+Grnde
+erlaubt
+Kl.
+Auslnder
+Anleger
+grer
+verlieren
+Verhalten
+ausgesprochen
+fanden
+Betriebe
+Praxis
+ums
+galt
+Gemeinden
+Wolfgang
+Kanzler
+Viertel
+private
+Zustand
+miteinander
+genauso
+prsentiert
+Planung
+Forschung
+staatlichen
+Gott
+einzigen
+wichtigen
+kosten
+Verkehr
+befinden
+Kauf
+Vorstellungen
+Halle
+Untersuchung
+s
+Rom
+bessere
+unserem
+jeweiligen
+angelegt
+beendet
+Flle
+Einschtzung
+stehe
+Dienst
+herrscht
+Begriff
+Sekunden
+Essen
+ans
+erfllt
+Krankenhaus
+Auskunft
+bauen
+Rechnung
+Arbeitnehmer
+endgltig
+Truppen
+Jungen
+Aufbau
+leider
+verpflichtet
+Auffassung
+komme
+Karriere
+bezahlen
+Telefon
+Rest
+Umwelt
+schlgt
+bewut
+wichtiger
+Sonne
+trat
+Inzwischen
+gelangen
+schneller
+Kandidaten
+Brief
+folgenden
+erscheinen
+wirtschaftliche
+Nr.
+Fahrer
+erforderlich
+Rennen
+Nachfrage
+Morgen
+Verdacht
+eigener
+Hinweis
+Umgebung
+besttigte
+Regelung
+Fenster
+dienen
+modernen
+zustndig
+Flughafen
+Generation
+gelegt
+ergeben
+nationalen
+Waffen
+Schicksal
+Entscheidungen
+Jugend
+Niederlage
+Spa
+Niveau
+Gelnde
+Trend
+heien
+Tatsache
+Presse
+Feuer
+bezahlt
+Frderung
+Ganz
+Bildung
+vorstellen
+grundstzlich
+voller
+Winter
+italienischen
+Botschaft
+Investoren
+Grad
+Geschfte
+Leser
+spielte
+bayerischen
+erzielt
+reichen
+Einrichtung
+Energie
+Gelegenheit
+regelmig
+bertragen
+Freude
+verndert
+Umgang
+Fans
+entweder
+Dauer
+Finanzierung
+Hersteller
+Gre
+eingestellt
+Kontakt
+frh
+ursprnglich
+m
+Prinzip
+Ausdruck
+definieren
+Mittelpunkt
+Wunder
+eindeutig
+Quadratmeter
+Mitarbeitern
+Behandlung
+greren
+Nachbarn
+Gleichzeitig
+Schriftsteller
+Himmel
+hoffen
+untersttzen
+Auge
+Risiko
+allgemeinen
+verdient
+Tor
+Finanzminister
+Maria
+behauptet
+Rcktritt
+schwarzen
+bewegen
+Immerhin
+plus
+mgliche
+passiert
+Angesichts
+betroffen
+durchgefhrt
+entsteht
+Vorwrfe
+nher
+bekam
+Aussage
+Verfassung
+Helmut Kohl
+Bewohner
+vorhanden
+richtige
+brigens
+Kommunen
+Stdten
+Werner
+verfgt
+Filme
+Tabelle
+historischen
+Werbung
+fragt
+Gegenteil
+Fischer
+Gegensatz
+Bauern
+Arzt
+Leitung
+voraussichtlich
+Dieter
+besondere
+Abgeordneten
+sehe
+DIE
+Arbeiter
+Beschlu
+festgenommen
+Ermittlungen
+Minute
+Anzahl
+Willen
+Ruf
+aktiv
+Zwischen
+Karlsruhe
+einiger
+westlichen
+Schweden
+technischen
+verwenden
+Vorwurf
+zwanzig
+the
+hheren
+offiziell
+tief
+in der Regel
+Du
+Ausbau
+Auswahl
+Voraussetzung
+Wissenschaft
+richtigen
+schien
+festgelegt
+Bilanz
+erhhen
+kurzem
+Fast
+Gang
+vorerst
+Hnde
+wirken
+Vertrauen
+denkt
+lsen
+Positionen
+zhlen
+Vernderungen
+besitzt
+Alternative
+Falle
+Entwurf
+Ziele
+sichern
+ernst
+positiv
+Tat
+ermglicht
+Ideen
+Damals
+ausgeschlossen
+nderung
+Ebene
+uerst
+Lager
+zweimal
+Brandenburg
+Tr
+dringend
+Regisseur
+Wechsel
+Begrndung
+alter
+Wirklichkeit
+Pfennig
+fehlen
+links
+Summe
+Aktivitten
+Erinnerung
+Zugang
+II
+praktisch
+geffnet
+Leipzig
+Frank
+Strecke
+japanischen
+fhrt
+Wende
+Herz
+Autoren
+frs
+brigen
+Andere
+Ausgabe
+Fuball
+Klner
+kritisierte
+Projekte
+versteht
+Stil
+letztlich
+Aussagen
+Oberbrgermeister
+herum
+Bundeswehr
+Verstndnis
+steigt
+kmpfen
+zugunsten
+glaube
+Fraktion
+Posten
+Dorf
+Post
+unmittelbar
+Bruder
+auen
+welcher
+Dagegen
+Rang
+Trotzdem
+Krankheit
+Heinz
+eingerichtet
+Auswirkungen
+Strom
+blo
+Auseinandersetzung
+zumal
+Struktur
+Linie
+Felder
+Ministerprsidenten
+dient
+Clinton
+wute
+falls
+entstand
+Herrn
+Autofahrer
+Information
+Erwartungen
+Sitz
+definiert
+warf
+Fusion
+Untersuchungen
+gaben
+verlor
+los
+daraufhin
+Zinsen
+scheinen
+Sowjetunion
+Bro
+angenommen
+Ursache
+Steuern
+fhlen
+Anlagen
+Jrgen
+Franzosen
+allzu
+liege
+verteilt
+soviel
+Jelzin
+Landtag
+Nrnberg
+Ab
+Bereichen
+stammt
+Service
+knftigen
+Kino
+Behrde
+gehandelt
+Nutzung
+ausgerechnet
+Interview
+Wissen
+zuerst
+aufgefordert
+Gewerkschaft
+davor
+Ausnahme
+Erhhung
+wchst
+gearbeitet
+Rechte
+eins
+unterschiedlichen
+Walter
+geradezu
+wirft
+international
+Zug
+erreichte
+Bedarf
+erlebt
+teuer
+Kritiker
+Flucht
+Klage
+nderungen
+u.
+informiert
+geschickt
+Gerhard
+erinnern
+Mnnern
+Unternehmer
+klingt
+Hinweise
+krftig
+fort
+rein
+eigenes
+Immer
+spt
+Erffnung
+Beratung
+Franz
+Gefngnis
+stdtischen
+angezeigt
+rasch
+vorgestellt
+erfllen
+freie
+fertig
+Haushalt
+bercksichtigt
+Dadurch
+schlagen
+Direktor
+Realitt
+Falls
+B
+Schreiben
+Sender
+Provinz
+Job
+festgestellt
+Standort
+Beruf
+gestorben
+voraus
+gesucht
+berwiegend
+Stellung
+Einigung
+Vorschlge
+Texte
+fhlt
+Schuld
+leichter
+vierten
+Halbjahr
+Rcken
+Innenminister
+Karten
+halben
+betrachtet
+schlug
+geschehen
+Zeitraum
+vermeiden
+stattfinden
+prfen
+unterdessen
+auslndischen
+vieler
+Formen
+Tore
+starb
+Regeln
+Einrichtungen
+Umfang
+fragen
+Konflikt
+Vereinigung
+Vier
+Je
+Teilen
+Vorsitzenden
+Voraussetzungen
+Pltze
+beraten
+Einwohner
+Verluste
+rechten
+zugeordnet
+tausend
+gerechnet
+offenen
+warnte
+verbessern
+unterwegs
+fhrenden
+Hauses
+Anbieter
+bernimmt
+diskutiert
+Herren
+Anstieg
+auslndische
+Objekte
+Geschichten
+versuchte
+bisherige
+beschreibt
+Etwa
+Hof
+Serie
+allem
+Unterschied
+weien
+trkischen
+Revolution
+Personal
+hilft
+Karl
+Grndung
+Martin
+verboten
+verhindert
+nahmen
+Lust
+Schauspieler
+Fahrt
+Veranstalter
+begrndet
+Wahlkampf
+Auftritt
+guter
+gutes
+ARD
+Dichter
+Vorbild
+finanziellen
+Allianz
+zerstrt
+hart
+rief
+Einnahmen
+ermglichen
+einig
+Beamte
+and
+gelingt
+in erster Linie
+Status
+gefhrdet
+Vorteil
+Strukturen
+rechts
+staatliche
+Kooperation
+Spiele
+Krfte
+persnlich
+wachsen
+Atmosphre
+Landesregierung
+wann
+Angriff
+Mller
+Regionen
+Dresden
+besetzt
+technische
+Plus
+Darber hinaus
+gesichert
+besonderen
+gehrte
+verspricht
+vergeben
+traf
+a
+wonach
+Inhalt
+Vorhaben
+plant
+Galerie
+Horst
+Protest
+Urlaub
+gelassen
+Traum
+Geben
+steckt
+Leuten
+bestimmen
+mehrfach
+Sollte
+Ttigkeit
+wesentlichen
+Josef
+Alexander
+beteiligen
+unabhngig
+finanzielle
+Anwalt
+Veranstaltungen
+berraschend
+gescheitert
+offiziellen
+pflegen
+roten
+bildet
+solange
+Erfolge
+schliet
+Helmut
+Innenstadt
+Junge
+Mitteln
+Peking
+aufgebaut
+Zeitungen
+Becker
+politischer
+Whler
+Software
+demnchst
+Konsequenzen
+Wird
+erzeugt
+retten
+unterschiedliche
+verffentlicht
+hchsten
+stimmt
+Reaktion
+Bernd
+halte
+reduziert
+moderne
+mache
+M.
+Rckgang
+schwierig
+produziert
+Ausgaben
+hrt
+Kassen
+Tokio
+General
+schlo
+Gnter
+deswegen
+organisiert
+ZDF
+Methode
+persnlichen
+Sorge
+Sorgen
+verfolgt
+Ungarn
+Nato
+Messe
+israelischen
+vollstndig
+Figuren
+kurzen
+Fest
+bosnischen
+welchen
+Angeklagten
+Hhepunkt
+knftige
+finanziert
+aktuelle
+zeigten
+bekannten
+sptestens
+Strategie
+vorgeworfen
+bemht
+sorgt
+Rat
+meinem
+Neuen
+Ostdeutschland
+gegenwrtig
+bentigt
+Spur
+Ball
+Finale
+keinem
+schne
+reagiert
+Manfred
+schtzen
+Ernst
+stammen
+Rande
+Schatten
+verbessert
+jdischen
+positive
+manchen
+entlassen
+Phase
+Vorgang
+Asien
+eng
+halbe
+beziehungsweise
+Vereinigten Staaten
+Gemeinschaft
+Abschnitt
+Verbrechen
+dank
+Geist
+tot
+eingefhrt
+berichten
+anlegen
+Kirchen
+Funktionen
+Sanierung
+Arbeitsplatz
+Sieger
+Aktionen
+vorgelegt
+verabschiedet
+Wind
+vorbereitet
+Fahrzeuge
+Kurse
+untersucht
+durfte
+u.a.
+Maschinen
+Unsere
+ausgelst
+Indien
+Haft
+bewegt
+Zweck
+Whrung
+bitte
+Jahrzehnten
+Wald
+wichtigste
+Zimmer
+Verlauf
+ausgesetzt
+Prfung
+Verwendung
+kurze
+Zunchst
+Blut
+Anwendung
+Anhnger
+Aufnahme
+Sammlung
+benutzt
+Angebote
+Einstellung
+Umsetzung
+Dach
+Irak
+gezwungen
+Premiere
+AP
+hoher
+starten
+Kasse
+Nichts
+Hektar
+persnliche
+Paul
+Termin
+gemeldet
+entwickelte
+Tatschlich
+Kontakte
+anbieten
+Rume
+Abgeordnete
+stellten
+Regierungschef
+menschlichen
+Abbau
+meldete
+Ton
+Unfall
+Touristen
+englischen
+Abkommen
+erfat
+Solche
+Metern
+selbstverstndlich
+Stiftung
+Existenz
+Zeugen
+Gold
+Absicht
+Objekt
+Anders
+Anklage
+Verbraucher
+funktioniert
+Groen
+bestehenden
+Einkommen
+beider
+sinnvoll
+Abstimmung
+liefern
+schafft
+Ecke
+Siemens
+Gutachten
+Version
+Kennzeichen
+Konferenz
+Pariser
+Bundesliga
+erhebliche
+erfolgen
+traditionellen
+Dialog
+Dutzend
+abhngig
+hngen
+ausgegeben
+Bedenken
+ergibt
+einschlielich
+Konkurrenten
+Iran
+vermutet
+aufnehmen
+verzichtet
+bundesweit
+bekannte
+betroffenen
+befrchten
+Bekl
+Anerkennung
+Ehe
+liest
+Gast
+damaligen
+Wiener
+gengend
+ersetzt
+Vereine
+beobachtet
+notwendigen
+verdienen
+niemals
+Brand
+verstanden
+stolz
+reagieren
+Laufe
+schnen
+vorgenommen
+erhoben
+Spuren
+mitten
+Reformen
+erschien
+Mut
+grnen
+Christian
+verliert
+Anna
+Aussicht
+andererseits
+Staates
+Charakter
+Spiegel
+Analyse
+Kapital
+Organisationen
+Beschftigung
+Herzen
+einiges
+Landwirtschaft
+bedroht
+linken
+Deutscher
+Russen
+Derzeit
+stellvertretende
+eingeladen
+verlangen
+langem
+Stadtrat
+Beitrge
+erkannt
+historische
+Zuschauern
+trug
+Afrika
+Schritte
+hchste
+Mord
+Dortmund
+Studium
+erlutert
+Alltag
+Teilnahme
+befrchtet
+geschafft
+Betrag
+Nachmittag
+solches
+Betroffenen
+ausdrcklich
+jenen
+prsentieren
+Bildern
+Flche
+Berichte
+Wiesbaden
+klassischen
+heftig
+uerte
+Gewinne
+Gesprchen
+klare
+umgesetzt
+Justiz
+soweit
+wiederholt
+Bislang
+durchsetzen
+ausreichend
+endet
+Atlanta
+holen
+Abstand
+geprgt
+Nation
+Meer
+Berlins
+keinerlei
+aufgerufen
+Mitgliedern
+gewisse
+Programme
+Musiker
+Unabhngigkeit
+einsetzen
+Auftrge
+Pflege
+Management
+behaupten
+Bier
+gewinnt
+Verbesserung
+Jahresende
+belegt
+besseren
+Nachrichten
+beschrieben
+Zuge
+SAP
+Saal
+Berufung
+schwarze
+Farbe
+Georg
+Konzert
+Umfeld
+gelernt
+Besitz
+Wand
+Anforderungen
+Kabinett
+Kosovo
+Sachsen
+Pause
+erstes
+Waren
+Landgericht
+Hnden
+Integration
+fuhr
+gebeten
+gering
+Vorlage
+New Yorker
+www
+Schlo
+zustndigen
+Risiken
+smtliche
+gelegen
+Aufklrung
+Fnf
+Daher
+erleben
+Pflanzen
+spren
+feiern
+schwerer
+drauen
+Beweis
+Gewicht
+umgerechnet
+Europischen Union
+lagen
+Fonds
+Kompromi
+handeln
+Training
+Kunde
+geschlagen
+hinweg
+Hochschulen
+Verhltnisse
+gelte
+Gesundheit
+Nachricht
+Mein
+junger
+Kapitel
+frdern
+Kamera
+greifen
+hierzulande
+normalen
+Augenblick
+Waigel
+werfen
+Verletzungen
+uerungen
+Tausende
+begleitet
+blichen
+Materialien
+Blatt
+Bereiche
+Abteilung
+Arbeitsschritt
+erzhlen
+dauert
+Heinrich
+belastet
+Vertrge
+Wetter
+Keller
+Farben
+entlang
+begrndete
+Welche
+fielen
+Vereinbarung
+Whrungsunion
+Zugleich
+Sprecherin
+Fhrer
+Gegenwart
+Erste
+zustzlichen
+Londoner
+angewiesen
+Kriterien
+Kurz
+hergestellt
+vereinbart
+lasse
+Ihren
+Ministerium
+Pfund
+schlechte
+Kanada
+Vereinten Nationen
+Bundesbank
+Dividende
+investiert
+italienische
+Gut
+Sdafrika
+Gestern
+getragen
+profitieren
+japanische
+Internationalen
+geprft
+sparen
+Systems
+Stadtteil
+hauptschlich
+Robert
+versichert
+vorgeschlagen
+hinein
+Co
+Brasilien
+spten
+Gesetze
+Neues
+irgendwann
+Nordrhein-Westfalen
+unseres
+Maschine
+ostdeutschen
+beobachten
+Typ
+Seele
+Not
+Dienstleistungen
+Bord
+rechtzeitig
+BMW
+zuviel
+Zentimeter
+katholischen
+Spter
+Ereignisse
+offene
+Identitt
+folgte
+Bahnhof
+hielten
+allenfalls
+spanischen
+chinesischen
+Anfrage
+serbischen
+Produkt
+Australien
+A.
+Landschaft
+Regierungen
+Niedersachsen
+Schmidt
+beschftigen
+Groe
+Vorteile
+leiden
+arbeitete
+bayerische
+passieren
+Regie
+Eigentlich
+brig
+kleines
+hchstens
+Bemhungen
+Mrkte
+wert
+Pfarrer
+ungefhr
+zentrale
+warnt
+beinahe
+Microsoft
+vor Ort
+Mischung
+desto
+Vorgehen
+Oper
+zentralen
+sowieso
+liefert
+ruft
+Niemand
+Weltmeister
+Kern
+Beziehung
+jngste
+aufmerksam
+seitdem
+Reisen
+fhrten
+Arbeitsmarkt
+Fu
+bleibe
+leer
+Beobachter
+vermitteln
+Republikaner
+Verteidigung
+berrascht
+unverndert
+Werken
+klein
+Manche
+ffnen
+schtzt
+Bus
+Toten
+zogen
+mancher
+besitzen
+Hotels
+Rebellen
+Ausgleich
+gefeiert
+Ereignis
+Benutzer
+erhhte
+Reuter
+Methoden
+Feuerwehr
+angegeben
+Darin
+Reihen
+erzielte
+WM
+bernahm
+Abschied
+behalten
+Lande
+nationale
+entscheidenden
+wartet
+israelische
+Universitten
+Strke
+nunmehr
+gelegentlich
+anzeigen
+verndern
+trkische
+Bume
+finanzieren
+Briten
+gert
+selben
+Ihrer
+Vortrag
+Kommunikation
+bedeuten
+halt
+IG Metall
+Analysten
+Hongkong
+schlechter
+Vorbereitung
+Davon
+Katastrophe
+getrennt
+Figur
+derart
+Schlssel
+Stcke
+Bndnis
+geschieht
+Liter
+in Kraft
+Mauer
+Erkenntnis
+pat
+Kongre
+Hoffnungen
+spteren
+Marke
+Kenntnis
+Mannes
+Umstnden
+greift
+sa
+Details
+unmglich
+Nachrichtenagentur
+fragte
+gewi
+Belastung
+namens
+beweisen
+verfgen
+Anschlag
+Gebieten
+zahlt
+Kaum
+hchst
+Pressekonferenz
+falschen
+Bundeslnder
+langfristig
+schlechten
+Lsungen
+gestartet
+Andererseits
+konkrete
+Hat
+Fortsetzung
+Bundesrat
+Gesellschaften
+Tendenz
+falsche
+lehnte
+zustndige
+Helden
+sichtbar
+Aufmerksamkeit
+setzten
+Stefan
+Regen
+vorne
+lief
+geboten
+solch
+Genehmigung
+Milliarde
+dauern
+hufiger
+Kilogramm
+Bereitschaft
+Meine
+Besitzer
+eigentliche
+Partie
+Elisabeth
+Magistrat
+Unser
+doppelt
+Auseinandersetzungen
+dich
+Kollege
+militrischen
+ltere
+frchten
+Problemen
+Arten
+diejenigen
+Holz
+Erweiterung
+Denken
+Bewertung
+deutliche
+Europischen
+entscheidende
+Spielen
+Landkreis
+Dsseldorfer
+informieren
+geringer
+Jede
+Bundeslndern
+Aufgrund
+Variante
+Schwester
+Aufsichtsrat
+festlegen
+fortgesetzt
+Beteiligten
+Brgern
+Schden
+Sind
+nein
+betreiben
+positiven
+neuen Bundeslndern
+bergeben
+Frankreichs
+Internationale
+Zeitschrift
+Mitteilung
+Lehre
+gefrdert
+kleinere
+geeignet
+Weihnachten
+Umfrage
+Mieter
+halb
+Berg
+Kroatien
+Herbert
+nochmals
+registriert
+Tempo
+Spannung
+Klima
+Alten
+allgemeine
+See
+Bewerber
+irgendwie
+Freundin
+Pflicht
+erweitert
+Papst
+Widerspruch
+teilnehmen
+Trennung
+welchem
+erstellt
+Nase
+erklrten
+unterscheiden
+sicherlich
+Schulden
+senken
+Herzog
+entscheidend
+Stoff
+gerecht
+VW
+besucht
+enttuscht
+Architekten
+Anzeige
+berlegungen
+festen
+hessischen
+stiegen
+ersetzen
+Aktionre
+verhandelt
+zweiter
+sorgte
+Otto
+Privatisierung
+Auftakt
+zweier
+richtet
+Einheiten
+Versuche
+Zellen
+Mengen
+beziehen
+fhrende
+Schiff
+umfat
+Inszenierung
+Begegnung
+hnliche
+Groteil
+Theorie
+Gerhard Schrder
+denke
+vermittelt
+in Sachen
+demokratischen
+Zrich
+Stellungnahme
+welches
+erschossen
+gekauft
+Ma
+Dienste
+gesperrt
+Gestalt
+Stein
+Neubau
+weisen
+harten
+forderten
+feiert
+extrem
+allgemein
+Diesen
+voran
+Versorgung
+Eis
+billiger
+berprfen
+Mannheim
+betrifft
+verwies
+Demonstranten
+minus
+mgen
+Notwendigkeit
+berlassen
+ldt
+schicken
+vorhandenen
+notwendige
+Foto
+Bezeichnung
+finanziell
+Dank
+Schneider
+ehe
+Image
+Belgien
+gefhrlich
+betrieben
+Freiburg
+Steigerung
+durchschnittlich
+Schwerpunkt
+baut
+elektronischen
+Rulands
+Dokumentation
+Ablehnung
+dargestellt
+geklrt
+Brcke
+dreiig
+Bewutsein
+glcklich
+alleine
+Einstellungen
+ferner
+gewachsen
+empfiehlt
+errichtet
+egal
+legten
+Einstieg
+beteiligten
+Osteuropa
+scheinbar
+Reich
+kostenlos
+Anteile
+lteren
+geriet
+rger
+Lnge
+Verzicht
+Elemente
+gesorgt
+Menschenrechte
+weie
+Gestaltung
+Teams
+gebildet
+ruhig
+Premierminister
+kurzfristig
+Jerusalem
+Gerte
+Mund
+Lafontaine
+Vereins
+gefahren
+Frher
+Jugoslawien
+L
+jenseits
+wechseln
+versuchten
+sank
+samt
+polnischen
+Autobahn
+grne
+gehrten
+Herkunft
+Rckzug
+David
+Potsdam
+Hinzu
+Bill Clinton
+Garten
+betragen
+dpa-AFX
+diskutieren
+Architektur
+sterben
+Teufel
+Kommunisten
+erzielen
+Verteidigungsminister
+Fahrzeug
+Bestand
+Moderne
+John
+Institutionen
+Viel
+womglich
+Lauf
+beschrnkt
+Glas
+aufgehoben
+Szenen
+wahr
+lebenden
+auftreten
+Vorfeld
+ansonsten
+Transport
+zeichnet
+Strafe
+hinten
+jetzigen
+neuesten
+Bett
+besttigen
+gesunken
+erhielten
+Parteitag
+Krieges
+Verbot
+Beispiele
+sahen
+Sendung
+verbreitet
+erfolgreichen
+Vielmehr
+Eintritt
+gezahlt
+Belgrad
+kmmern
+zustande
+Durchschnitt
+Vordergrund
+antreten
+teurer
+Solidaritt
+steigern
+wnschen
+Philosophie
+gesetzlichen
+Ganze
+Tren
+US-Dollar
+Alfred
+riesigen
+vergeblich
+zumeist
+konzentrieren
+Maler
+Manchmal
+raus
+schlicht
+bereitet
+Hochschule
+Bundestrainer
+veranstaltet
+unklar
+Vorgnge
+groem
+Perspektive
+bewertet
+Kaiser
+breit
+lehnt
+blich
+Signal
+maximal
+Klinik
+Kufer
+Dame
+entschlossen
+reagierte
+einziger
+bestehe
+Auflsung
+Forum
+brachten
+Beine
+Kche
+Glauben
+schwierigen
+Customizing
+gelst
+Griff
+wahren
+Zge
+akzeptieren
+gemeint
+Betreuung
+gestalten
+betrug
+inneren
+erteilt
+Ausschu
+dreimal
+Dax
+Gedichte
+investieren
+verhaftet
+Yen
+sowjetischen
+Mexiko
+vorigen
+abends
+Palstinenser
+menschliche
+erwiesen
+bot
+Hauptversammlung
+innen
+Dnemark
+militrische
+Argument
+Verantwortlichen
+Haut
+Angeklagte
+Aufwand
+reine
+Distanz
+einstellen
+Betrieben
+Zuvor
+RTL
+Konjunktur
+Bernhard
+irgendwo
+Park
+sagten
+Damen
+unterschiedlich
+offizielle
+umstrittenen
+harte
+Beschftigte
+Amtszeit
+gesellschaftlichen
+laufende
+Hinter
+Konto
+International
+Ursachen
+im brigen
+vorn
+ausgezeichnet
+gelesen
+teilen
+akzeptiert
+absolut
+bestellt
+verweist
+vieles
+berzeugung
+Vermgen
+Politikern
+schnellen
+denkbar
+Fotos
+gemessen
+freuen
+Sprung
+stimmen
+reichlich
+Restaurant
+gestrichen
+gewarnt
+achten
+abgeben
+Friedrich
+Akten
+Kste
+wirtschaftlich
+jngst
+berufen
+schnelle
+Briefe
+rumte
+Kaffee
+Gelder
+Symbol
+Gebhren
+kleineren
+Europer
+Johann
+Interessenten
+entscheidet
+teilt
+Italiener
+Parameter
+Freunden
+verschwunden
+stecken
+garantiert
+Zuwachs
+Gerechtigkeit
+Rand
+Angestellten
+Haushalte
+weltweiten
+ausgestattet
+Club
+nieder
+bestehende
+einfache
+geschtzt
+UNO
+B.
+Moskauer
+Spekulationen
+nachmittag
+produzieren
+Ebenso
+Mhe
+Phantasie
+Berater
+Medizin
+geleistet
+stt
+Tode
+teil
+vorwiegend
+konzentriert
+Umweltschutz
+vgl
+freiwillig
+verursacht
+H.
+Alte
+Steuerreform
+FR
+Hafen
+allmhlich
+von Anfang an
+Wirtschaftsminister
+berzeugen
+Kurden
+teils
+Diskussionen
+Vorgnger
+Konzentration
+verschiedener
+Jahrzehnte
+verffentlichten
+begeistert
+beenden
+Richard
+Tagesordnung
+Fleisch
+Barcelona
+Schnitt
+Drogen
+mitgeteilt
+leitet
+nachts
+Anwohner
+Export
+Regel
+mittels
+besuchen
+Handlung
+erworben
+brach
+breiten
+Gert
+Ohren
+konkreten
+Wrde
+gbe
+Ablauf
+flieen
+Bezug
+Ukraine
+Eingang
+entschied
+Flugzeug
+Erkenntnisse
+Stock
+aussehen
+froh
+treibt
+Haben
+einfachen
+gepflegt
+gestanden
+beitragen
+Zhler
+beantragt
+Gefhle
+ergab
+Wesen
+betreibt
+brauche
+berprft
+Auflage
+besetzten
+Erinnerungen
+Jazz
+untergebracht
+Stern
+Mangel
+interessant
+Tasche
+Scharping
+verschoben
+Hund
+Barbara
+volle
+melden
+d.h.
+Demonstration
+weshalb
+berhmten
+Dokument
+l
+EU-Kommission
+anerkannt
+genannten
+berichteten
+echte
+DW
+reduzieren
+Bundes
+komplett
+Verbindungen
+Mainz
+sprachen
+fliegen
+liebsten
+folgende
+Manahme
+Konzerns
+Gemeinderat
+Hinsicht
+benutzen
+richten
+Mehrere
+Adresse
+Asylbewerber
+eine Reihe von
+Ludwigsburg
+Meldung
+Modelle
+Schlieung
+Umbau
+speziell
+Vaters
+verlangte
+Fachleute
+Chaos
+Zehn
+abgesehen
+auf jeden Fall
+Reaktionen
+monatlich
+Operation
+geuert
+hinnehmen
+gebraucht
+Krankenkassen
+fnfzig
+bestand
+Report
+Trken
+Kroaten
+dachte
+verbindet
+Papiere
+Liga
+Mir
+Kombination
+Studien
+Mae
+einerseits
+Bros
+Entwicklungen
+scharf
+wissenschaftlichen
+teure
+ausgebaut
+teuren
+Gremium
+Bildschirm
+Eigenschaften
+Zum Beispiel
+Staatsanwalt
+Geschwindigkeit
+optimistisch
+innere
+berlegen
+hoffe
+dir
+Stze
+gefat
+anhand
+formuliert
+Chinas
+rumt
+Ehefrau
+gewissen
+morgens
+erfassen
+J.
+Stars
+Absatz
+Sturm
+begrenzt
+im Gegensatz zu
+Eigentmer
+klagt
+lst
+Staatssekretr
+Ihrem
+Militrs
+finde
+Aufstieg
+Gebiete
+Genossen
+Kinkel
+Rente
+kommende
+Marktanteil
+Ware
+kmen
+ergnzt
+Genf
+gestaltet
+normale
+Katalog
+stnden
+heutige
+Vernderung
+Systeme
+vierte
+Datum
+Arbeitspltzen
+Finger
+Zufall
+Wolf
+Standard
+Griechenland
+Rechtsanwalt
+Unterschiede
+verschwinden
+betreut
+demnach
+Dokumente
+Armut
+verfolgen
+erfolgreiche
+Gebrauch
+Steuer
+Prag
+zurckzufhren
+hinterher
+S
+Kampagne
+Tanz
+bezieht
+Geburt
+existiert
+startet
+Hermann
+Geheimnis
+Ansprche
+Arm
+Lange
+wirkte
+Rudolf
+Arme
+treiben
+Umzug
+Verletzung
+Lasten
+lsst
+Theo Waigel
+Premier
+Scheitern
+unterzeichnet
+Muster
+Lufthansa
+befand
+Sicherung
+abgegeben
+gewnschten
+jahrelang
+aufgegeben
+abgebaut
+Masse
+Abzug
+begrt
+kme
+zitiert
+drcken
+niedriger
+kurzer
+kontrolliert
+Radio
+verlegt
+freut
+Anschlieend
+erheblichen
+versprochen
+spezielle
+fnften
+breite
+Verlngerung
+Angehrigen
+Star
+Gegend
+direkten
+Karte
+Schtzungen
+letzter
+erinnerte
+Instituts
+Generalsekretr
+schauen
+seinerzeit
+Turnier
+leichte
+i
+Technologie
+Ost
+Profis
+Kiel
+Genau
+engen
+absolute
+Fritz
+Handeln
+Aufschwung
+Vertretern
+Nazis
+Wilhelm
+aufgestellt
+Kilometern
+gesteigert
+Unterdessen
+Minus
+Zentrale
+Paar
+Religion
+Seitdem
+sterreichischen
+Beifall
+Merkmale
+Grundstck
+TAGESSPIEGEL
+halbes
+Tschetschenien
+Sarajewo
+Kurt
+Herrschaft
+verbinden
+wissenschaftliche
+Tier
+gesenkt
+Verteidiger
+ffnung
+drohen
+einziges
+umgekehrt
+Konflikte
+hnlich
+Baum
+Kapitn
+planen
+U
+ots
+betrachten
+Front
+geliefert
+Gastgeber
+entsprechen
+Angelegenheit
+Stadion
+trennen
+lebte
+lngere
+Gefahren
+Produkten
+Senkung
+kritisch
+Anschlu
+gegenseitig
+Darmstadt
+wachsenden
+Bblingen
+wuchs
+Spenden
+zugelassen
+Lastwagen
+klren
+Ulrich
+Schnheit
+Antworten
+Milosevic
+Bezirk
+Liberalen
+Vielzahl
+feststellen
+Abschaffung
+in der Tat
+geringen
+erkennt
+Sozialhilfe
+Stabilitt
+Einzelheiten
+Orchester
+Eigener
+Deutsch
+Snger
+durchs
+Kmpfe
+Fraktionen
+klaren
+Weiter
+erzeugen
+vorbergehend
+Franc
+beklagt
+elektronische
+gibt's
+bezogen
+Anlegen
+derzeitigen
+Graf
+Unterricht
+Stadtverwaltung
+Krankheiten
+Kommentar
+Etat
+tiefer
+Minderheit
+Index
+Ankndigung
+Brigitte
+eigentlichen
+beigetragen
+Umstze
+tat
+einstigen
+durchgesetzt
+seither
+Aufruf
+rufen
+Rumnien
+Augsburg
+Einladung
+gewhrt
+bewiesen
+Regelungen
+West
+bricht
+Landrat
+zugute
+hingewiesen
+langer
+versicherte
+streng
+Hunderte
+Unterlagen
+Schlag
+sammeln
+Instrument
+Bischof
+holte
+Aussichten
+Kredite
+uern
+TV
+Verteilung
+achtziger Jahre
+Proteste
+hohem
+geringe
+Bestandteil
+Vorschriften
+Israels
+Westdeutschland
+Joachim
+jederzeit
+suchte
+Botschafter
+Tageszeitung
+Infrastruktur
+ndert
+Bayerischen
+NATO
+verlngert
+aller Welt
+geworfen
+Respekt
+Subventionen
+derartige
+lieben
+Ring
+technisch
+Plnen
+angesehen
+Deutsche Bank
+englische
+Akt
+Vogel
+sinken
+Mercedes
+Herausforderung
+wenden
+lsw
+Frankfurt/Main
+hierzu
+Wandel
+Angestellte
+Handwerk
+Tote
+Stoiber
+singen
+Bekmpfung
+Ensemble
+Besetzung
+Erstmals
+belegen
+perfekt
+gem
+gesammelt
+Helfer
+Definition
+wider
+versorgt
+Jobs
+Show
+Volkes
+Verbnde
+Bearbeitung
+Flchen
+Rainer
+empfangen
+konsequent
+sozusagen
+lauter
+Datenbank
+wohnen
+Institute
+dicht
+Darauf
+Delegierten
+Offenbach
+Alkohol
+eingeleitet
+Bevor
+vermuten
+Hanau
+ca
+drohte
+Jan
+Daneben
+ehemaliger
+Erzhlung
+Uwe
+Arbeitslosen
+ernsthaft
+Streik
+gefllt
+Armen
+schaut
+jenem
+schuldig
+erfhrt
+Niederlanden
+Statistik
+Kreisen
+Medikamente
+Brgerhaus
+verhandeln
+Gegenstand
+Oberflche
+befreit
+verhalten
+griechischen
+PC
+ermordet
+amerikanischer
+binnen
+kulturellen
+Konsequenz
+drngen
+Heidelberg
+hab
+erluterte
+City
+strken
+anllich
+verkndet
+Zusammen
+stie
+Gas
+gezielt
+Quelle
+Volumen
+Schaffung
+Malerei
+Madrid
+Sechs
+K.
+Verpflichtung
+handele
+Tiefe
+Stufe
+Mtter
+Zeilen
+Leider
+studierte
+engagiert
+verweigert
+Ihm
+eines Tages
+dran
+verteidigen
+stelle
+Laden
+daneben
+einzig
+Temperaturen
+Preisen
+bedient
+rechte
+rote
+jdische
+Trger
+genaue
+berschritten
+Ehre
+wahre
+wieviel
+ausgefhrt
+Antrge
+Esslingen
+endete
+Angriffe
+Chemie
+Serbien
+mehrmals
+Kleinen
+Einsparungen
+einander
+internen
+eigens
+Sponsoren
+Streitkrfte
+leidet
+vorsichtig
+genauer
+Klassen
+Bitte
+darstellen
+politisches
+Husern
+Truppe
+bedarf
+normal
+Telephon
+Kassel
+Rundfunk
+Schnee
+Abrechnung
+stoppen
+damalige
+Kriminalitt
+erwarteten
+Thringen
+rtlichen
+Schau
+versehen
+durchfhren
+speziellen
+vollen
+Nutzen
+Hinblick
+Tagung
+versetzt
+Zuordnung
+sdlich
+D
+schtzen
+Sprachen
+zurckkehren
+chinesische
+riesige
+kmpft
+Stich
+Begeisterung
+Innerhalb
+umfassende
+zustimmen
+Bewegungen
+Nrnberger
+inszeniert
+kritischen
+kologischen
+zugestimmt
+Tour
+genehmigt
+Nummer eins
+Ausgang
+These
+Sachen
+Mode
+Mll
+zufllig
+zurckgewiesen
+Absage
+Sand
+Profil
+gerufen
+Vernunft
+Unglck
+Entlastung
+Korruption
+Amsterdam
+dreht
+feste
+Zerstrung
+Rhein
+Mrder
+fehlte
+Niederlande
+All
+Tourismus
+Lohn
+durchzusetzen
+Autorin
+zurckgegangen
+Gottes
+direkte
+mittleren
+Komponenten
+C
+Ansatz
+Einzelhandel
+Element
+live
+Historiker
+frisch
+kritische
+singt
+Last
+Vielfalt
+klassische
+erlitten
+Moral
+Beschreibung
+trafen
+Schiedsrichter
+deutsch
+Vorsprung
+Hitler
+kulturelle
+Sekunde
+Erich
+grter
+Kandidat
+enge
+Flu
+hnlichen
+gefolgt
+Einmal
+meistens
+Gegenber
+westdeutschen
+passen
+regionalen
+Boris Jelzin
+quer
+Mediziner
+Gnther
+genieen
+Fortschritt
+Gramm
+essen
+traditionelle
+Prof
+Marktwirtschaft
+leichten
+entwickelten
+ursprnglichen
+Militr
+berraschung
+Vision
+FC Bayern
+Norwegen
+wnscht
+Strmer
+gegenwrtigen
+FRANKFURT
+inklusive
+Journalist
+Station
+sozialistischen
+Rolf
+zuversichtlich
+Zweiten Weltkrieg
+geeinigt
+Ferner
+liebt
+ausgehen
+internationaler
+unterscheidet
+Museen
+Affre
+serbische
+Tne
+intensiv
+deutlicher
+fassen
+Auffhrung
+Zahlung
+Transaktion
+Prognose
+War
+versprach
+Wein
+Mailand
+Uni
+Ursula
+evangelischen
+Portugal
+Vortag
+Bchern
+normalerweise
+meldet
+Motiv
+liee
+Schleswig-Holstein
+Durchbruch
+Wnsche
+erkennbar
+vornehmen
+erleichtert
+ausgewiesen
+Schumacher
+Lieder
+Fr
+Geschehen
+arabischen
+drin
+niedrigen
+nutzt
+vielfach
+Christen
+Wieder
+Versicherungen
+umstrittene
+OB
+Quellen
+Wiedervereinigung
+folgten
+Fakten
+aufgelst
+gypten
+erffnen
+bentigen
+grndete
+vertraut
+Zuschsse
+erhltlich
+fortsetzen
+Hals
+Inseln
+Zustzlich
+Bayerns
+n
+prsentierte
+Klub
+ermitteln
+Buches
+Therapie
+fter
+verdanken
+Schlagzeilen
+Erwachsene
+Konsens
+katholische
+Explosion
+fgte
+dunklen
+beschlo
+wachsende
+Generationen
+sobald
+ungewhnlich
+ffnet
+Parlaments
+Jedes
+schwieriger
+drauf
+enger
+Argumente
+Gipfel
+erstellen
+Perspektiven
+Bauer
+gelingen
+verlt
+Kann
+Parteichef
+Phnomen
+umstritten
+scheiterte
+bemerkt
+Alternativen
+Johannes
+Gerchte
+III
+Ausma
+Treffer
+Insbesondere
+Lebensmittel
+Stolz
+IWF
+heftigen
+bemhen
+Kammer
+Schlern
+globalen
+Branchen
+redet
+Passagiere
+gebunden
+Rcksicht
+drastisch
+Option
+Lieferung
+Menschheit
+reinen
+Haare
+kologische
+Schfer
+Los Angeles
+entdecken
+Pltzen
+Durchfhrung
+frchtet
+angeben
+Jrg
+beherrscht
+Sturz
+weitaus
+sofern
+existieren
+reisen
+organisieren
+Skandal
+Rumen
+auseinander
+zugrunde
+IBM
+Tieren
+Nachwuchs
+St.
+Treffpunkt
+gelangt
+derweil
+Sozialisten
+Rollen
+wendet
+hinterlassen
+Greenpeace
+berflssig
+Lohnfortzahlung
+Vorgaben
+niederlndischen
+spielten
+verringert
+Abwehr
+geschtzt
+Annahme
+getrieben
+erreichten
+Japaner
+strksten
+Kreise
+Belegschaft
+generell
+Solange
+stdtische
+Einsicht
+Anzeigen
+bse
+parallel
+Wagner
+kontrollieren
+erstenmal
+Vorstandsmitglied
+Fhigkeit
+Anliegen
+Befreiung
+total
+Mannschaften
+Bundesprsident
+Test
+vorlufig
+Zeile
+gebucht
+Abends
+Mythos
+Verffentlichung
+vierzig
+umfassenden
+Ansonsten
+werben
+Gehirn
+erwerben
+Substanz
+unteren
+Rostock
+berprfung
+Rentner
+zweites
+DGB
+Vorsto
+sichergestellt
+deutlichen
+musste
+Gesetzgeber
+gleichermaen
+bewahren
+Motive
+erledigt
+vorlegen
+Kindergarten
+vertritt
+Deren
+weiten
+Sowohl
+Schwarz
+demokratische
+Akademie
+lste
+aufzunehmen
+Luxemburg
+euch
+empfehlen
+linke
+erwhnt
+vergleichsweise
+schnsten
+Kleine
+Entdeckung
+Taten
+Waffe
+lschen
+Golf
+etliche
+Zugriff
+Leverkusen
+einzelner
+jenes
+Stellvertreter
+Mittlerweile
+hierfr
+Loch
+verwandelt
+kehrt
+eingerumt
+Holding
+Ansehen
+ausfallen
+Merkmal
+Regierungschefs
+DFB
+ffentlicher
+Immer wieder
+Fen
+letztes
+Stoffe
+Regime
+Schweigen
+Periode
+feierte
+durften
+for
+Abenteuer
+endgltige
+bittet
+Redaktion
+Reden
+Gsten
+versteckt
+Immobilien
+Kilo
+gerichtet
+Ludwig
+Brsen
+benachbarten
+echten
+bezeichnen
+berblick
+konservativen
+Kndigung
+Ausstattung
+Belastungen
+verarbeitet
+Staatsprsident
+Zumindest
+Qualifikation
+krank
+stehenden
+Faust
+Freistaat
+Soll
+angesprochen
+untersuchen
+Landeshauptstadt
+Fazit
+jemals
+Umstellung
+spanische
+Enttuschung
+Komponente
+Verbandes
+gewut
+brechen
+handelte
+Lediglich
+bercksichtigen
+rot-grnen
+gerettet
+verffentlichte
+mde
+vorgesehenen
+streiten
+gengt
+Kulturen
+Telekommunikation
+ehemals
+Sachsen-Anhalt
+herrschte
+beschreiben
+steigenden
+Meldungen
+Kindheit
+bewlkt
+Oft
+freundlich
+Betreiber
+Hanauer
+besorgt
+restlichen
+erlauben
+Etwas
+UN
+gestoen
+Bibliothek
+verschaffen
+Berichten
+kommunistischen
+Gute
+Lied
+Agentur
+christlichen
+Gemeinsam
+Erwerb
+Sportler
+Nationalspieler
+geborene
+Quote
+berechnet
+Partnerschaft
+Komdie
+Brgerkrieg
+religisen
+Offenbar
+Mnchener
+Einzug
+schwach
+quasi
+schildert
+Sonst
+Motor
+Rettung
+aufgeben
+drngt
+geholfen
+Dialogfenster
+Schu
+verglichen
+Protokoll
+sozial
+Christine
+Zunahme
+Brsengang
+Wohl
+vermag
+gestoppt
+Offensive
+Versprechen
+gehre
+behandeln
+Sogar
+gelaufen
+Do
+Brder
+mitunter
+Entlassung
+Steffi Graf
+aufgefhrt
+Inflation
+bergang
+Monika
+bearbeitet
+Sicher
+Lhne
+Filmen
+Arbeitsgruppe
+voneinander
+heimischen
+Bundesverfassungsgericht
+keinesfalls
+gefllt
+Unrecht
+eingegangen
+Im brigen
+Magazin
+Detail
+Innenministerium
+Krzungen
+begannen
+begegnen
+entdeckte
+geholt
+massiven
+umgehen
+Potential
+einfacher
+verlie
+weite
+Mnster
+Rock
+Franken
+Sanktionen
+anfangs
+jngeren
+Vizeprsident
+Kpfe
+Bayer
+verstndlich
+Weniger
+eingeben
+zugesagt
+mit Blick auf
+mehrerer
+Eines
+Besuchern
+blauen
+Ehemann
+Haar
+hinsichtlich
+Defizit
+Bach
+Halbfinale
+Fortschritte
+Fax
+Zur Zeit
+lebende
+skeptisch
+Vermittlung
+reichte
+Karin
+Irland
+Gesetzentwurf
+realisiert
+Verfolgung
+Freundschaft
+Fhigkeiten
+geleitet
+Tages
+Reduzierung
+Andrea
+Senator
+Optimismus
+Trnen
+westliche
+Singapur
+leeren
+zwingen
+zeitweise
+Ersatz
+to
+Linken
+Flgel
+Erhalt
+jung
+stimmten
+Auer
+Anstrengungen
+Kalifornien
+Bedrohung
+durchschnittliche
+festgehalten
+Romans
+natrlichen
+Versammlung
+scheitern
+Arbeitszeit
+oberen
+locker
+eventuell
+Impulse
+Opfern
+gestohlen
+vorliegen
+wandte
+drehen
+einstimmig
+v.Chr.
+unabhngigen
+Bertelsmann
+Koch
+tglichen
+darstellt
+verteidigt
+massiv
+Brsseler
+verteilen
+Messer
+erforderlichen
+entfallen
+Aufhebung
+klagen
+Weber
+Prognosen
+Flugzeuge
+vergangene
+Karlsruher
+Angehrige
+geltend
+Geschmack
+Vlker
+Wall Street
+derselben
+Flchtlingen
+Holland
+fhre
+Nationalmannschaft
+gekennzeichnet
+kommunalen
+lokalen
+Fassung
+Nationen
+PKK
+Ruhestand
+empfohlen
+Flug
+Dimension
+verdoppelt
+dortigen
+islamischen
+Films
+ausgegangen
+gegrndete
+aufbauen
+angeschlossen
+steigende
+wohin
+Gegenzug
+Erbe
+gesellschaftliche
+Taiwan
+wohnt
+bearbeiten
+Verarbeitung
+schner
+Festival
+Arbeitslose
+Ausstellungen
+Argentinien
+Versicherung
+bedeute
+lautete
+Sozialismus
+Held
+aufeinander
+Auflagen
+Aktienmarkt
+bekanntlich
+nehme
+angeht
+Kompetenz
+Christdemokraten
+im Grunde
+Freizeit
+Leidenschaft
+stoen
+Fabrik
+reiche
+deutet
+organisierten
+Wann
+berwinden
+Deutschen Bank
+blickt
+studiert
+Beratungen
+lebten
+Finanzen
+Spielern
+Chor
+freier
+Laufzeit
+Ali
+Harald
+vollkommen
+stattfindet
+Photo
+hob
+Ministerin
+Prsenz
+ausgeliefert
+angegriffen
+gewohnt
+Delegation
+geltenden
+Sonnabend
+exakt
+Architekt
+Anton
+Helga
+zum anderen
+Abs
+heftige
+schwarz
+Release
+Altstadt
+Modernisierung
+Leiden
+Italiens
+Schiffe
+Bruch
+fllen
+diesjhrigen
+EG
+unterhalten
+Werden
+begangen
+Wohnungsbau
+zugnglich
+Oskar Lafontaine
+Erika
+Ausnahmen
+Gehalt
+polnische
+Diesmal
+N
+Varianten
+Nerven
+Flammen
+Abhngigkeit
+Zeuge
+befreien
+zeige
+europischer
+nrdlich
+Kandidatur
+lohnt
+kommentierte
+steuern
+Islam
+still
+Programms
+wesentliche
+Kleidung
+neuerdings
+anderswo
+sage
+Max
+dorthin
+verbesserte
+auslndischer
+grnden
+errichten
+Rahmenbedingungen
+Mrkten
+Komponisten
+Mrchen
+Inhalte
+Null
+Kubikmeter
+Marketing
+ntigen
+Arbeitsamt
+Planungen
+Bezirksausschu
+Pressesprecher
+Unterhaltung
+dokumentiert
+Bedingung
+Tbingen
+Weder
+Zeichnungen
+gewannen
+Sabine
+Dass
+pldiert
+bertragung
+bist
+gekostet
+Bearbeiten
+Lesen
+getreten
+USD
+leise
+berdies
+Mibrauch
+Klubs
+berleben
+Termine
+verantworten
+stirbt
+Exil
+kommentiert
+Effekt
+palstinensischen
+konfrontiert
+Leiche
+Prozesse
+dramatisch
+stimmte
+Stadtwerke
+Lcheln
+Berechnungen
+fgt
+negativ
+griff
+Verlierer
+bersehen
+Mitternacht
+Orten
+CD
+Kindes
+wirksam
+Goethe
+Instanz
+fraglich
+Erziehung
+medizinische
+Tschechien
+Frist
+gelscht
+Klagen
+Brot
+einzusetzen
+Miete
+Gppingen
+Professoren
+Wut
+sdlichen
+schlimmer
+Gesichter
+Ralf
+Einbruch
+verraten
+interne
+neuem
+W.
+Anzeichen
+eineinhalb
+zuordnen
+Zusammenschlu
+Villa
+schwierige
+Sieben
+Auswertung
+Berechnung
+Sehr
+befassen
+gewnschte
+unabhngige
+Aspekt
+bekamen
+Witz
+Austausch
+schwachen
+Schuble
+demonstrieren
+angemeldet
+fhlte
+interessieren
+Konkurs
+geschah
+Meisterschaft
+Erfllung
+Engel
+Lieferanten
+Neuer
+Inland
+massive
+Gerd
+angehren
+aktiven
+fremden
+gebrochen
+geregelt
+Persnlichkeit
+Dresdner Bank
+Zwecke
+gesetzliche
+Daran
+zugenommen
+Gerichte
+Jury
+Humor
+Entfernung
+Rmer
+vorliegenden
+genannte
+angebracht
+gewhrleistet
+Betriebsrat
+Beteiligungen
+gestrigen
+Fraktionschef
+UdSSR
+Marktes
+Zurckhaltung
+befat
+Auenpolitik
+zurckgekehrt
+wuten
+Gertrud
+Wei
+Disziplin
+Zusammenbruch
+Bestimmungen
+Stahl
+Center
+kroatischen
+bunten
+Geschftsfhrung
+Rechner
+Furcht
+verzeichnet
+gnstig
+tiefe
+bewltigen
+ffnungszeiten
+heie
+Autors
+Bndnis 90/Die Grnen
+Sehnsucht
+Gefangenen
+Flle
+lter
+Mecklenburg-Vorpommern
+weltweite
+Skepsis
+erweist
+ganzes
+ausgewhlt
+Magdeburg
+gleichwohl
+Grundgesetz
+organisierte
+Siegfried
+Gewissen
+kndigt
+geschossen
+bekrftigte
+Mannesmann
+sprbar
+Spielraum
+integriert
+verkndete
+traditionell
+Syrien
+fliet
+Eva
+installiert
+Zum einen
+Anwendungen
+Lob
+stabil
+eigenem
+Kinos
+Gleich
+starben
+literarischen
+aussieht
+Straftaten
+heran
+Vorstandschef
+moderner
+Krze
+km
+verstrken
+Dresdner
+Amtsgericht
+Ebenfalls
+ernannt
+vertrieben
+Planeten
+illegal
+digitalen
+hrte
+momentan
+medizinischen
+kalt
+Vorjahres
+weiblichen
+brauchte
+Commerzbank
+Knnen
+erheben
+sozialer
+Entschdigung
+warnen
+Juristen
+besonderer
+Schwche
+zweieinhalb
+vermieden
+Konzepte
+rot-grne
+beantworten
+Bombe
+Spannungen
+Faktoren
+dahinter
+via
+demonstriert
+Halbzeit
+Ausstieg
+Ausweitung
+Gemlde
+Opel
+Empfang
+aktive
+entziehen
+berfall
+Rendite
+rckt
+erhofft
+Tunnel
+berhmte
+gelegenen
+erarbeitet
+messen
+individuelle
+schaffte
+funktionieren
+Behauptung
+Athen
+drckt
+Petra
+Geiseln
+hast
+Sachschaden
+gesetzlich
+Ufer
+Anpassung
+Gesetzes
+Ohr
+berleben
+ZEIT
+Nahrung
+Indonesien
+Ergebnissen
+Vergabe
+vorzeitig
+weitem
+konkret
+verwiesen
+Nachfolge
+kriegen
+Feststellung
+bestanden
+versprechen
+Mission
+unbekannte
+Situationen
+Tabellen
+Lrm
+Erzhlungen
+Diplomaten
+Spanier
+Prsentation
+leitete
+Senioren
+Leipziger
+beeinflussen
+bereiten
+Gabriele
+erleichtern
+Amerikas
+erstaunlich
+Kontrollen
+Beleg
+Lden
+erfuhr
+mnnlichen
+markiert
+Business
+gewidmet
+R.
+zum einen
+Kreuz
+tiefen
+umfangreiche
+annehmen
+Hollywood
+erzhlte
+Klarheit
+enden
+Erster
+holt
+Senats
+Sitze
+Wurzeln
+verlaufen
+Matthias
+Rechten
+regiert
+Partnern
+Vogts
+Claudia
+niedrig
+Formel
+bestraft
+Grn
+beauftragt
+erffnete
+Renate
+Signale
+Olympia
+grndlich
+Fertigung
+Athleten
+Ausfhrung
+Jungs
+Knie
+Gesellschafter
+beraus
+hebt
+Errichtung
+sicheren
+Arafat
+Institution
+korrekt
+Drama
+kenne
+Studio
+verringern
+aufzubauen
+Konzerne
+Zeitalter
+Tests
+Substanzen
+Jedenfalls
+Betten
+Beute
+Grundsatz
+bitten
+Aspekte
+Umweltminister
+Ha
+stndigen
+Knigin
+Erwachsenen
+BGB
+manches
+is
+erlitt
+begreifen
+verliehen
+erhhten
+Bauch
+Schrift
+leiten
+jhrlichen
+eingeschrnkt
+allemal
+Wiederaufbau
+Gisela
+zunehmende
+Hut
+indischen
+Entstehung
+studieren
+nachgewiesen
+Angabe
+orientieren
+ra
+Zentralbank
+Rheinland-Pfalz
+Bltter
+negativen
+eingehen
+geschlossenen
+bedienen
+bevorstehenden
+Runden
+Hoechst
+benannt
+weichen
+Bakterien
+Daniel
+glaubte
+Vorsitz
+Konstruktion
+bat
+Klaus Kinkel
+Balkan
+beschdigt
+Weltmeisterschaft
+dicken
+Befragten
+a.
+Brust
+schlossen
+Gewinner
+rmischen
+Christoph
+meines
+erlebte
+anfangen
+Chirac
+niemanden
+wehren
+bisweilen
+strzte
+Leichen
+Seinen
+Empfehlung
+erlassen
+Di
+gleicher
+regionale
+BGH
+gefhrden
+trinken
+Vorsicht
+dramatischen
+Englisch
+lobte
+Warnung
+gnstigen
+Inc.
+nachweisen
+unterbrochen
+Verbreitung
+stlichen
+Anwlte
+Vorstandsvorsitzende
+eingebracht
+Norbert
+geht's
+Sdwesten
+Finnland
+profitiert
+Sdkorea
+markieren
+Krzung
+Gleichwohl
+ben
+Umfragen
+Auslndern
+Berge
+fehlende
+Schrecken
+Jagd
+angesagt
+rechtlich
+sorgten
+verweisen
+erfordert
+hessische
+VfB
+erweitern
+Abschiebung
+begegnet
+Demokraten
+bers
+bevorzugt
+dauerte
+beruht
+Blumen
+gezhlt
+Ulm
+Trume
+einbezogen
+fnfzehn
+gekrzt
+Photos
+fester
+kehrte
+wechselt
+Resultat
+Beschwerden
+zweifellos
+Denkmal
+zurckgezogen
+Design
+Erholung
+gelebt
+Frankfurt am Main
+gedroht
+Lateinamerika
+Mo
+Prinz
+Marktplatz
+Dirk
+Caf
+Acht
+unbekannten
+Mandat
+Haftbefehl
+sptere
+diente
+Parkplatz
+Knstlern
+Materials
+G.
+zwangslufig
+Vgel
+zhlte
+Busse
+Video
+digitale
+Albert
+Rezession
+Pferde
+Schriften
+bekmpfen
+Wirtschaftspolitik
+Bestellung
+Hunde
+Quadratmetern
+Orte
+schlimm
+Gedanke
+Beste
+nichts zu tun
+Legislaturperiode
+Interviews
+fnfte
+untereinander
+trugen
+Selbstmord
+frherer
+Schuhe
+ausgeglichen
+Unsicherheit
+privat
+Medium
+Unbekannte
+etc.
+abgelegt
+schwedischen
+sichere
+bosnische
+Initiativen
+Friedhof
+Wnde
+strkere
+e.V.
+Bayerische
+Konten
+wem
+Empfnger
+Renten
+typisch
+Arbeitsgemeinschaft
+heuer
+Strecken
+US-Prsident
+Tal
+Linke
+beeinflut
+Votum
+natrliche
+vorhandene
+angemessen
+komplette
+Weimar
+Demonstrationen
+Milch
+Anmeldung
+vergleichen
+Monats
+sportlichen
+chemische
+Moslems
+reich
+Rhythmus
+Werten
+Japans
+Glaubwrdigkeit
+mangelnde
+bersetzt
+landen
+F.
+Ehepaar
+wiederholen
+Netanjahu
+Genu
+Mngel
+garantieren
+Coach
+Reihenfolge
+Siedlung
+kletterte
+illegalen
+schickt
+Instrumente
+Globalisierung
+sorgfltig
+Springen
+Kieler
+Welle
+fehlten
+traten
+Schock
+negative
+ntige
+Mglicherweise
+RWE
+Ford
+Glanz
+Schlacht
+wirbt
+kostete
+Anordnung
+vereinbarten
+erwies
+signalisiert
+Bochum
+Charme
+begrte
+Freilassung
+Ankunft
+Ingrid
+Gibt
+kologisch
+Bundestagswahl
+Verhandlung
+Klavier
+Faktor
+endgltigen
+Bundesfinanzminister
+schickte
+Shne
+Liberalisierung
+Verleger
+Vereinbarungen
+Terroristen
+Toren
+Pakistan
+Aufregung
+unterhalb
+bersetzung
+Texten
+strategische
+Pflegeversicherung
+Investor
+Konditionen
+vorgesehene
+kannte
+unbekannt
+Krebs
+Infotyp
+Jahresbeginn
+offener
+Rhe
+Triumph
+rt
+Zahlungen
+Englnder
+chemischen
+mhsam
+ausbauen
+auszuschlieen
+konservative
+E.
+stattgefunden
+notfalls
+bedingt
+umgehend
+Wste
+Zuschu
+wenigsten
+Kommune
+Gewerbe
+Experiment
+Darber
+angepat
+transportiert
+indessen
+D-Mark
+Dortmunder
+vernderten
+Daraus
+gnzlich
+sterreicher
+Dasa
+bester
+Zahlreiche
+Interpretation
+Bundestages
+Daraufhin
+Jahrestag
+Christa
+Bergen
+geladen
+Grundlagen
+Dingen
+belasten
+Steine
+Feldern
+Landstrae
+Ermittler
+HSV
+knstlerischen
+Ausbruch
+Beschlsse
+auerordentlich
+anzubieten
+liebe
+ausgestellt
+streichen
+Stadthalle
+Pferd
+Vietnam
+lngeren
+ausgeben
+erzielten
+Whrungen
+Darlehen
+bekanntgegeben
+Klte
+Tennis
+EM
+siebziger Jahre
+Lektre
+Zelle
+Chinesen
+prft
+Projekts
+Ermordung
+Lesung
+Einzelfall
+Erkenntnissen
+fern
+hei
+vornehmlich
+Logik
+Gattung
+Schwung
+Staatschef
+Stasi
+Hildegard
+Bestehen
+derzeitige
+indirekt
+fllig
+Aids
+Anleihen
+Warschau
+womit
+Fernseher
+Weltbank
+Hauptbahnhof
+rumen
+gedreht
+stellvertretender
+vor Steuern
+Gedicht
+Male
+siebziger Jahren
+beschrnken
+gewhren
+angeordnet
+Rekord
+Vergngen
+Erklrungen
+erfunden
+beseitigt
+zulssig
+Koalitionspartner
+Gutachter
+rechtlichen
+erwarte
+nrdlichen
+Auschwitz
+Europische
+beantwortet
+geniet
+achtziger Jahren
+erfolgte
+Fe
+wechselte
+Gerichtshof
+Wichtig
+anstatt
+lteste
+Baustelle
+arbeitslos
+Nord
+Geduld
+beweist
+verbundenen
+eingetragen
+Drfer
+Steuerzahler
+Nachbarschaft
+unterschiedlicher
+Muslime
+Tips
+Elf
+Krankenhuser
+Aufnahmen
+Vermarktung
+Kontinent
+beseitigen
+billig
+prsent
+jetzige
+musikalischen
+Jahresberschu
+ihrerseits
+Ach
+verwirklichen
+Mainzer
+Schichten
+rzten
+erwartete
+Sex
+Lyrik
+gespeichert
+Torwart
+vornherein
+Platte
+Ressourcen
+Restaurants
+saen
+enorm
+orientiert
+Verfahrens
+Knapp
+Ersten
+prompt
+Vereinen
+Markus
+Differenzen
+Prsidium
+taucht
+Bad Homburg
+blockiert
+hohes
+Leiterin
+Justizminister
+Umstnde
+festhalten
+fortan
+strikt
+Einwohnern
+musikalische
+Entsprechend
+Feier
+Vter
+Israelis
+Filialen
+http
+verzeichnen
+asiatischen
+erweisen
+franzsischer
+Ursprnglich
+Deswegen
+mochte
+knappen
+krftigen
+Bein
+Klar
+konomischen
+individuellen
+verkaufte
+derer
+Auszeichnung
+Teilnehmern
+Songs
+beachten
+gleichsam
+Parlamentarier
+schweigen
+Schwchen
+brgerlichen
+lachen
+Bundesland
+Strkung
+Anwender
+Boeing
+usw
+schieen
+Gebudes
+Tchter
+Wre
+Chefredakteur
+Absturz
+mehrheitlich
+Boot
+Alpen
+landete
+Fahrbahn
+verschrft
+locken
+Dessen
+SPD-Fraktion
+gewordenen
+kmmert
+ggf
+ffentlichen Dienst
+Fnftel
+religise
+Mehrzahl
+Feind
+beklagen
+Unruhe
+fhle
+Dichtung
+Fahrzeugen
+verrt
+z. B.
+Nutzer
+verbringen
+beides
+Wahrscheinlich
+Priester
+nutzte
+armen
+berlebt
+Talent
+sterreichische
+herkmmlichen
+Festnahme
+ltesten
+einrichten
+Angelika
+berechtigt
+Student
+kauft
+Kuba
+angesetzt
+rechtliche
+Stichwort
+Dynamik
+Budapest
+Lcke
+versorgen
+bersicht
+Chefs
+gewaltigen
+Mond
+Tragdie
+Krften
+Landtagswahl
+Neu
+Legende
+niederlndische
+Zivilisten
+Mi
+Sptestens
+Bosnien-Herzegowina
+Volkshochschule
+vergleichbar
+Ruanda
+Fahrrad
+bescheiden
+selbstndig
+Ankara
+weibliche
+Nachteil
+Wenig
+Staatsregierung
+aktuell
+identifiziert
+Zulassung
+Pa
+Revision
+mittlere
+Pro
+Linien
+gutem
+infolge
+Kmpfer
+Grundschule
+Verzweiflung
+Autonomie
+Bewhrung
+unternommen
+Ertrge
+umfangreichen
+jngster
+bestimmter
+wichtiges
+Hoffmann
+Eintrag
+Patient
+frdert
+Eigentum
+Grundstcke
+besuchte
+eingehalten
+Stationen
+Jubilum
+Bad
+Freien
+Erwartung
+knstlerische
+gestrkt
+weitergehen
+zusammengefat
+rcken
+Vorbereitungen
+Biographie
+annhernd
+Physiker
+Reporter
+Strich
+privater
+sechsten
+strkste
+strebt
+Boris Becker
+suchten
+lernt
+Bestimmung
+abgesetzt
+wisse
+van
+Rechts
+TV
+Hunger
+manuell
+notiert
+strt
+Group
+angefangen
+Marktfhrer
+Heim
+Rtsel
+beurteilen
+Jger
+gedrngt
+gedruckt
+schriftlich
+Installation
+unternehmen
+schuld
+lacht
+Einhaltung
+Stille
+Schwarzen
+Lothar
+gesteckt
+Zuhrer
+Museums
+STUTTGART
+Urlauber
+Orientierung
+nchster
+bestreiten
+oftmals
+Bagdad
+ewig
+Untersuchungshaft
+Roland
+Prinzipien
+steuert
+heutzutage
+unwahrscheinlich
+Piloten
+mageblich
+Hubschrauber
+herstellen
+globale
+einigermaen
+Bulgarien
+geredet
+Keiner
+absoluten
+sinkt
+Eingriff
+berwunden
+Werkstatt
+Chicago
+Rentenversicherung
+springen
+Zusage
+angesiedelt
+stren
+Verurteilung
+interessante
+verlief
+Erscheinung
+Birgit
+Main
+argumentiert
+New
+ergnzen
+abgestimmt
+berwachung
+Kapazitt
+Kapazitten
+Mehrwertsteuer
+Grenordnung
+Ertrag
+bewahrt
+erkannte
+baden-wrttembergischen
+anstehenden
+sportliche
+gefhrlichen
+Hilfen
+Mastab
+Geste
+ausgewhlten
+auswhlen
+Verwaltungsgericht
+Freilich
+realisieren
+bestritten
+gebrtige
+Knoten
+blicken
+Zone
+wen
+anderthalb
+Aufenthalt
+Rad
+Wille
+richtete
+versagt
+Zuletzt
+Exemplare
+Schulter
+Expansion
+angetreten
+gewnscht
+Edmund Stoiber
+begriffen
+Trost
+Verfasser
+Zum anderen
+Abitur
+Wenige
+lieferte
+liefen
+Kohle
+unterschrieben
+Zuschlag
+Brgerinitiative
+Geschften
+Mitrauen
+Schmerzen
+entlastet
+Reinhard
+Bayern Mnchen
+Europische Union
+Tatsachen
+tatschlichen
+Freiburger
+wirkliche
+strengen
+Ironie
+Asyl
+stndige
+unlngst
+Kapitalerhhung
+trumen
+praktische
+moralische
+deutsches
+zunehmenden
+bedeutendsten
+Kommunalwahl
+Emprung
+jngere
+fehlenden
+herzustellen
+verteidigte
+Russland
+Mittelalter
+Buchstaben
+Zorn
+Nordamerika
+baute
+Begriffe
+angekommen
+Knochen
+fremde
+Mieten
+Konsolidierung
+leistet
+Produzenten
+zeichnen
+abgeschafft
+bewirkt
+Bercksichtigung
+Wiesbadener
+Frchte
+fremd
+Umwandlung
+wagen
+nachhaltig
+K
+Hftlinge
+zerstren
+Listen
+afrikanischen
+Abbruch
+Richtlinien
+en
+niederschsischen
+Demnach
+Sparte
+Thailand
+vorlufigen
+Siehe
+notierte
+schwache
+Aufforderung
+ausschlieen
+Broschre
+Stuhl
+lauten
+Wahrscheinlichkeit
+Wrme
+verwirklicht
+Devise
+Konservativen
+Kameras
+ausfhrlich
+wirklichen
+Vorfall
+Mafia
+ngste
+Polizist
+starker
+Decke
+auslsen
+Mannheimer
+freigegeben
+Passanten
+Bald
+aufkommen
+ndern
+Sollten
+Bruno
+beschlieen
+unterrichtet
+Budget
+Katholiken
+gefhrliche
+sowjetische
+begleiten
+attraktiv
+Krone
+Sterne
+Jahrzehnt
+Wiese
+jegliche
+Block
+Grab
+entnehmen
+Viertelfinale
+kritisieren
+dicke
+Freigabe
+Autoritt
+Streiks
+soeben
+dieselbe
+Dilemma
+Wohlstand
+beruflichen
+Selbstbewutsein
+Aussteller
+Standorte
+fngt
+Fisch
+Hitze
+Epoche
+Rckstand
+entdeckten
+lgen
+angeklagt
+bentigten
+rechtfertigen
+Gestalten
+Pltzlich
+verknpft
+Bundesamt
+Erls
+Rudolf Scharping
+Finanzministerium
+Ost und West
+real
+Trio
+Seoul
+verluft
+klagte
+Schauspielerin
+Anhrung
+Rasen
+Prozentpunkte
+Ferne
+Vorrang
+verfgbar
+Mandanten
+Cursor
+Jelzins
+verurteilte
+Projekten
+begren
+insofern
+bedeutende
+gewhlten
+com
+Annherung
+Mindestens
+La
+Erfindung
+Bauten
+Verbesserungen
+Drohung
+gegrndeten
+verabschieden
+beklagte
+geistigen
+lngerem
+protestiert
+Zigaretten
+Mitgliedschaft
+C.
+D.
+bedenken
+spiegelt
+Verwandten
+fliegt
+merkt
+Schulz
+Gerichts
+gemeinsames
+vernichtet
+Unruhen
+Friedensproze
+Leinwand
+tdlich
+ausgebildet
+dunkle
+bestreitet
+nebenbei
+Verschiebung
+Ausweg
+irakischen
+Rot
+einstige
+Unterschriften
+Panik
+untersagt
+literarische
+Inhaber
+Rache
+Differenz
+Duisburg
+Prioritt
+Susanne
+Willi
+Legen
+versammelt
+Ebenen
+Kpfen
+Original
+online
+Ingenieure
+schuf
+Kirch
+Gaststtte
+inmitten
+Beurteilung
+sicherte
+fehle
+Kliniken
+Sarajevo
+Schreibtisch
+gesund
+strzen
+Jens
+typischen
+lokale
+Neuwahlen
+Mller
+Turm
+tanzen
+Party
+warfen
+Appell
+erreichbar
+Albanien
+VfB Stuttgart
+Erwin
+Meyer
+Spielzeit
+beliebt
+Konzerte
+Sd
+angekndigten
+X
+besonderes
+vorliegt
+ausgerichtet
+Technologien
+zusammenarbeiten
+bewerten
+Grosny
+Soldat
+Hochzeit
+verstrkte
+umsonst
+belgischen
+Akteure
+Intendant
+Akzeptanz
+berlegt
+sprt
+Silber
+Metropole
+nachtrglich
+Terror
+Bundesverband
+setze
+Standards
+nchstes
+Krankenversicherung
+gegebenenfalls
+Entsorgung
+antwortete
+frhzeitig
+Vershnung
+befanden
+Fremde
+Arbeitgebern
+lehnen
+ausgetragen
+Erfurt
+Lachen
+Strand
+mibraucht
+Grnder
+Ruhm
+extra
+Parkett
+abgebrochen
+zuweilen
+Wolken
+Spezialisten
+whlt
+Datei
+Areal
+Stammdaten
+Hang
+gespart
+russischer
+Unter anderem
+grerer
+Heroin
+Besttigung
+Ahnung
+Beobachtung
+Die Zeit
+Mittelfeld
+Trauer
+sonstigen
+Florida
+tten
+Toleranz
+strategischen
+beurteilt
+Defizite
+Gedchtnis
+Behinderte
+Antonio
+Teheran
+Daimler
+grauen
+vollzogen
+Tschernobyl
+auf keinen Fall
+sechziger Jahren
+Vorstandsvorsitzender
+angehoben
+Wahrnehmung
+Schwestern
+Weiterbildung
+Kategorie
+gestrt
+berhrt
+Ortsbeirat
+umsetzen
+Men
+gespannt
+Unmut
+Wohnen
+o
+AFP
+berfallen
+verabschiedete
+keine Rede
+radikalen
+bliche
+gestrzt
+Zeitschriften
+Olympiasieger
+Erneuerung
+Venedig
+Axel
+mittelfristig
+Verordnung
+moralischen
+Bar
+Kloster
+vermit
+Einem
+Staub
+betreten
+S-Bahn
+Istanbul
+illegale
+angekndigte
+gewhrleisten
+Schmerz
+Zeitgenossen
+Elend
+Erdbeben
+gewhnt
+obersten
+schlugen
+bestens
+basiert
+Summen
+jeweilige
+abgelst
+potentiellen
+erhebt
+Potsdamer
+erneuten
+decken
+verlautete
+Theaters
+Wissenschaftlern
+Na
+Knstlerin
+engagieren
+scharfe
+kalten
+entzogen
+bedeckt
+Benzin
+Strungen
+Seither
+Joschka Fischer
+Diktatur
+Kanal
+Hansestadt
+gnstige
+getestet
+Attentat
+Beck
+Lbeck
+Sir
+Pech
+verbieten
+Eier
+zeitlich
+Libanon
+angeblichen
+verwaltet
+vorsieht
+Holocaust
+Untergang
+spannend
+umgewandelt
+zuwenig
+mchtigen
+P.
+verwandeln
+zukommen
+Rentenmarkt
+Komponist
+Aktivitt
+Schwerpunkte
+einbringen
+Zwang
+unterstellt
+dauerhaft
+Eintrge
+sichtlich
+Schmuck
+Romane
+Atem
+Urauffhrung
+Betrge
+dasselbe
+behauptete
+angehrt
+BUND
+klingen
+Gene
+verheiratet
+Zaire
+Anstze
+irgend
+Archiv
+BASF
+Resonanz
+enorme
+Landwirte
+Handwerker
+Algerien
+Reiz
+Plattform
+Telefonnummer
+Einschrnkung
+Zagreb
+Beweise
+Erstellung
+historisch
+BRD
+Burg
+Anfragen
+Kriegsende
+Stockholm
+Anweisung
+Kreises
+verpflichten
+Hlle
+Betrachter
+Vermieter
+Beitritt
+Rechtsprechung
+altes
+Anlauf
+Reichtum
+Persnlichkeiten
+reagierten
+Blm
+fit
+beherrschen
+Markieren
+ginge
+verleihen
+analysiert
+Den Haag
+heiligen
+Eingabe
+enormen
+Einfluss
+Konfrontation
+Kairo
+Kmpfen
+tschechischen
+beschftigte
+typische
+Zuerst
+Dritten Welt
+Bedrfnisse
+emprt
+Befehl
+Operationen
+Gemse
+Aachen
+langjhrige
+verweigern
+vernderte
+zahlreicher
+beendete
+Massaker
+Mordes
+korrigiert
+eingestuft
+Borussia Dortmund
+ausgefallen
+Typen
+anstelle
+CDU/CSU
+Illusion
+Grunde
+Landesbank
+James
+Organisatoren
+Klrung
+daheim
+umzusetzen
+Endlich
+Fach
+Landsleute
+realen
+Poesie
+Bahnen
+eingereicht
+wirtschaftlicher
+Berger
+stellvertretenden
+Gremien
+Konzeption
+Wirtschaftswachstum
+Zustnde
+AOL
+Euphorie
+Libero
+umgeben
+langfristige
+staatlicher
+sexuellen
+Gebuden
+bunte
+Duell
+Fahrgste
+Sdamerika
+Spektrum
+verschwindet
+half
+Charles
+olympischen
+rot
+Staatsbrgerschaft
+Einkauf
+verlegen
+Traditionen
+neunziger Jahre
+Neuregelung
+verhngt
+gedrckt
+Zusammensetzung
+wahrgenommen
+Fuchs
+ordentlich
+Marken
+evangelische
+KG
+gedeckt
+hierbei
+berfordert
+antwortet
+Einordnung
+Satelliten
+Sektor
+Paket
+Charlotte
+gnstiger
+befragt
+verwickelt
+freitags
+allerlei
+Verpflichtungen
+Ministerien
+geltende
+iranischen
+Flexibilitt
+problemlos
+vollem
+Massen
+sicherer
+beeindruckt
+widmen
+liegenden
+jhrliche
+erwischt
+entsprechender
+diversen
+Straburg
+drohenden
+doppelte
+genauen
+Polizeisprecher
+Sommerpause
+Ruber
+zwingt
+Experimente
+Major
+allesamt
+mutmalichen
+Hamburgs
+montags
+Ernhrung
+Auftreten
+Streifen
+Rechnungen
+Bundesstaat
+Marianne
+Wrzburg
+Fassade
+Kenntnisse
+gekmpft
+schlimmsten
+einverstanden
+mge
+Adressen
+Beendigung
+einheitliche
+Baby
+abgesagt
+Umsatzes
+Daimler-Benz
+beliebig
+Ferien
+Griechen
+Flaschen
+Panzer
+traurig
+verdrngt
+verstoen
+mter
+Klinsmann
+Labor
+Noten
+legendren
+Nachweis
+gewhnlich
+trainiert
+Basel
+b
+betreffenden
+Materie
+Herausgeber
+behindert
+Anschlge
+niedrige
+Polizeiangaben
+Abstieg
+Rexrodt
+Kindergrten
+engagierte
+Kreuzberg
+Kreuzung
+beschlossene
+sttzen
+Wellen
+dritter
+Anhebung
+Ermittlung
+Volker
+Gebhr
+gewissermaen
+Treuhand
+zuknftigen
+Nahen Osten
+Bundesrepublik Deutschland
+Tagesspiegel
+Grostadt
+Aufsehen
+Evangelischen
+Experte
+parlamentarischen
+liberalen
+kassiert
+Abwesenheit
+vehement
+Bundesanstalt fr Arbeit
+Laufbahn
+Reichstag
+Unflle
+Darum
+versuche
+gleicht
+Ritter
+Physik
+vollstndige
+einmalige
+gerechtfertigt
+przise
+biete
+vorgelegten
+Welten
+SED
+Leib
+Niederlagen
+Thyssen
+Darunter
+Schwarze
+beantragen
+Tatort
+Objekten
+juristischen
+Westeuropa
+gelben
+Visionen
+berhmt
+Resolution
+jemanden
+eingetreten
+spektakulren
+Katharina
+Aufstand
+teilten
+erwirtschaftet
+mchtig
+Beschwerde
+jugoslawischen
+festzustellen
+auf den ersten Blick
+Kette
+zurckhaltend
+Clintons
+Minderheiten
+Unterkunft
+Gymnasium
+Einstiegsbild
+Profi
+Bibel
+Buchungskreis
+beschuldigt
+griechische
+Mu
+Meinungen
+Sobald
+erfolglos
+anscheinend
+Roth
+Lippen
+Mbel
+Frhstck
+Basler
+Dritter
+Bauarbeiten
+verbirgt
+Diepgen
+bildeten
+Schicht
+Freie
+besetzen
+Leere
+Klassiker
+Weile
+vergangener
+realistisch
+berzeugend
+schlafen
+Paradies
+protestieren
+Waffenstillstand
+Unterschrift
+Angelegenheiten
+startete
+Elke
+ostdeutsche
+dnischen
+Schlange
+Virus
+schsischen
+Zurck
+Huber
+spiele
+Geschenk
+ausgemacht
+Lizenz
+aufgefallen
+dramatische
+Mario
+Bndnisgrnen
+Betracht
+George
+II.
+mangels
+Gitarre
+U-Bahn
+Beobachtungen
+arbeiteten
+bitter
+anhaltenden
+Brcken
+Gesang
+Rassismus
+Lwen
+oberste
+Palstinensern
+errechnet
+Elbe
+Taktik
+Begegnungen
+hervorragend
+Verhltnissen
+Fische
+seitens
+bewhrt
+Umstand
+wiesen
+Gerten
+Funktionre
+Erhaltung
+ueren
+Heiligen
+bewaffneten
+siegte
+pflegt
+geforderte
+unterstrich
+PS
+Logistik
+unzureichend
+Nie
+Vertreibung
+belegte
+Insofern
+sonntags
+Leid
+Format
+entstandenen
+Bogen
+E
+regeln
+durchzufhren
+Handy
+gewaltige
+Kabel
+dazwischen
+Renaissance
+Beseitigung
+identisch
+Gottesdienst
+Anwesenheit
+nah
+Onkel
+Berechtigung
+abwarten
+gewhnlichen
+Vernichtung
+interessierte
+Mozart
+Gegenstnde
+Proben
+Sparkassen
+abgenommen
+Rot-Grn
+entlasten
+Realisierung
+IOC
+verschieben
+breiter
+kanadischen
+Schwaben
+Niederlnder
+echt
+treu
+systematisch
+Techniken
+Stephan
+fhrender
+Jahrtausendwende
+Lupe
+Fluggesellschaft
+Braun
+Wettbewerbs
+Befrchtungen
+Fugnger
+Abwicklung
+testen
+anzunehmen
+Pkw
+Saarland
+spontan
+Nationalsozialismus
+Kaiserslautern
+Raketen
+bsen
+zulegen
+geeignete
+Verletzte
+bedauert
+Liebhaber
+Henkel
+Platten
+Adolf
+laden
+worauf
+Billionen
+Beinen
+gengen
+Untergrund
+Ansichten
+einzustellen
+Jeden
+Verbrauch
+wissenschaftlich
+veranlat
+wodurch
+berhaupt
+Geschftsleute
+Inneren
+Zumal
+Nebel
+Favoriten
+Jahrhunderte
+Vermutlich
+lustig
+ignoriert
+Seminar
+buchen
+Befrworter
+Landratsamt
+Begleitung
+bringe
+wovon
+begrnden
+Zusammenhnge
+ebensowenig
+offenkundig
+Neigung
+Jurist
+bedeutenden
+zurckziehen
+Dimensionen
+verlngern
+Reiter
+erspart
+Entscheidend
+vorbereiten
+Tnzer
+Parlamentswahlen
+friedlich
+Boom
+fertiggestellt
+lebendig
+Harmonie
+berholt
+pldierte
+Spalte
+Siedler
+Kohls
+scharfen
+World
+Temperatur
+Paare
+technischer
+drehte
+fuhren
+sauber
+gesteuert
+anbietet
+Maske
+ausmachen
+hnliches
+Container
+Transparenz
+Werkzeuge
+sechziger Jahre
+schwcher
+begeben
+Schultern
+Ding
+diverse
+Luftwaffe
+Offiziere
+Westens
+Sendungen
+vorgefhrt
+schwedische
+ordnen
+Belege
+angebliche
+bereitgestellt
+zivilen
+scho
+Erben
+geistige
+Ministeriums
+Matthus
+Klein
+Bekenntnis
+minder
+vorkommen
+Insassen
+in Wirklichkeit
+Schild
+Lehrerin
+Berichterstattung
+verbt
+Angeboten
+Verfassungsschutz
+Foyer
+Erfassung
+verwendeten
+Kundschaft
+Focus
+Formulierung
+zulassen
+Zhlern
+Ferrari
+gltig
+einzurichten
+Kundgebung
+frhestens
+Werkes
+Aufstellung
+Horizont
+beziffert
+Innensenator
+Rubel
+gekndigt
+bedeutete
+appellierte
+Semester
+Kripo
+verpat
+Bescheid
+erfreut
+Produktivitt
+Kapitalismus
+Abfall
+Flughfen
+Knigs
+Multimedia
+Korrektur
+bekrftigt
+spekuliert
+Kredit
+Buche
+Auslieferung
+Breite
+aufbringen
+springt
+mglicher
+empfunden
+zu Fu
+staatlich
+Flasche
+langjhrigen
+Boris
+Uns
+Performance
+amtlichen
+Hessischen
+Intelligenz
+Torhter
+praktischen
+Die Welt
+Protagonisten
+on
+Olympischen Spielen
+mitmachen
+zuknftig
+wilden
+Chile
+Schsse
+Kompetenzen
+Irgendwann
+Netzwerk
+eingelegt
+wenngleich
+Passagen
+potentielle
+In der Tat
+ehrlich
+kontinuierlich
+80er Jahre
+v.
+Erlebnis
+unerwartet
+zitierte
+Schottland
+verstorbenen
+Gutes
+Bumen
+Jahrtausend
+Aufwendungen
+Erstens
+Vormittag
+bundesdeutschen
+Steuerung
+fat
+Beispielsweise
+Schuster
+Mauern
+Kreml
+Slowakei
+Vermutung
+Wohnzimmer
+westlich
+radikale
+Windows
+solide
+Investition
+Comeback
+Dritte
+kroatische
+G
+Karadzic
+Edith
+ausgebrochen
+Amerikanern
+wertete
+Endspiel
+Bezahlung
+Abgeordnetenhaus
+vermeintlich
+Vulkan
+freute
+Gehlter
+deuten
+so genannten
+stetig
+M
+Joseph
+neueste
+Hallen
+Hierzu
+Kriege
+Koffer
+Herrscher
+Laune
+individuell
+Brunnen
+Wettbewerbsfhigkeit
+langfristigen
+gltigen
+verschafft
+wehrt
+willkommen
+Grundstzlich
+ansehen
+geglaubt
+berufliche
+Audi
+erschpft
+zusammengestellt
+Fachhochschule
+ungewhnliche
+billigen
+bertroffen
+Stolpe
+ABAP
+stehende
+Htte
+BONN
+Besatzung
+gefhrten
+betonen
+nahen
+Visier
+aufrufen
+Applaus
+Esslinger
+ertragen
+Bielefeld
+Blues
+vorbehalten
+Amtes
+juristische
+Nationalen
+seltener
+Gewi
+viermal
+Krperverletzung
+Entfhrung
+beschert
+gesteht
+erneute
+heimlich
+Verabschiedung
+geforderten
+nannten
+klarer
+Stirn
+Lieferungen
+Wlder
+Ruth
+mnnliche
+lockt
+junge Mann
+Schlaf
+Bargeld
+Motivation
+Ideologie
+peinlich
+Urteile
+Ausrichtung
+anzusehen
+merken
+Gttingen
+Standpunkt
+nervs
+Hrte
+Versto
+entfllt
+verlangten
+tgliche
+geflogen
+Einsamkeit
+Zeitplan
+derartigen
+schieben
+uert
+Einschrnkungen
+Siege
+Rau
+Schauspiel
+Festlegung
+hintereinander
+Vertretung
+Kommunalwahlen
+Simon
+Seehofer
+bildete
+kriegt
+Weichen
+Werks
+interpretiert
+Augsburger
+Verkufer
+betreffen
+seiten
+Margarete
+aufgetreten
+industriellen
+Lebensjahr
+konomische
+Debatten
+Wolfgang Schuble
+Ergnzung
+Eisen
+verdankt
+Geldes
+wild
+Allen
+Detlef
+Betriebsergebnis
+Publikums
+beschrieb
+sprang
+Knftig
+Staatskanzlei
+vertreiben
+schmalen
+bloe
+Abgabe
+wunderbar
+lernte
+Umland
+Lire
+kaufte
+Prsidentin
+ideale
+operativen
+eingenommen
+Argumentation
+aufhalten
+Pistole
+zugelegt
+Schein
+Sympathie
+kirchlichen
+hherer
+Bundesbrger
+Stufen
+werdenden
+Flut
+Rindfleisch
+drohe
+Knstlers
+verkauften
+fernen
+Kanzleramt
+Anblick
+Ringen
+Aktionren
+Souvernitt
+verzweifelt
+abgewickelt
+Geschftsjahres
+Will
+bedacht
+tauchen
+Erlse
+galten
+Vorjahreszeitraum
+heben
+Residenz
+Teilung
+stammende
+Doris
+Einwohnerzahl
+besa
+Moderator
+Lutz
+Ausknfte
+Geheimdienst
+Nordirland
+Bewerbung
+Elfriede
+Westjordanland
+Spieltag
+stillen
+Lehrern
+Sparpaket
+Auslser
+Auftraggeber
+mssten
+Veba
+Programmen
+Besteuerung
+Neuordnung
+Gouverneur
+wertvolle
+Zeug
+berall
+Mnchens
+ausben
+in letzter Zeit
+Bande
+Fernsehsender
+durchweg
+ausfhren
+trainieren
+ffentlich-rechtlichen
+goldenen
+berstunden
+Exporte
+Einblick
+Ausfhrungen
+O
+herausgegeben
+Polens
+Ausgangspunkt
+Vorzge
+spezialisiert
+sttzt
+Heike
+Vergewaltigung
+kalte
+Echo
+Witwe
+Gleichgewicht
+Ehrgeiz
+Ehren
+sozialdemokratischen
+Kaufpreis
+Feinde
+Betrug
+eingeschaltet
+Skulpturen
+Telecom
+erobert
+eingebaut
+nationaler
+angeregt
+Arbeitskreis
+Kanther
+Naturschutz
+Auftritte
+Energien
+Umweltministerium
+eintreten
+regelrecht
+elektrischen
+dankbar
+Sichern
+Sngerin
+kompliziert
+verstndigt
+verlagert
+BA
+bremsen
+Unschuld
+aktiviert
+Palette
+Kultusminister
+Braunschweig
+ursprngliche
+dieselben
+Finanzamt
+Kreativitt
+Nachteile
+Hitlers
+Gerda
+Nigeria
+bewirken
+bezglich
+uerung
+Hrden
+Bleibt
+Ostern
+beeintrchtigt
+Regensburg
+Richtig
+Glaube
+Harry
+automatische
+Einfhrungsleitfaden
+verbreiten
+durchschnittlichen
+manch
+Ursprung
+Oliver
+erschlieen
+Umstrukturierung
+Analysen
+formulierte
+erarbeiten
+entfernten
+rechne
+Bndnis fr Arbeit
+sogleich
+Erzhler
+flog
+intern
+zuknftige
+Volkswagen
+Emotionen
+Empfehlungen
+virtuellen
+beschleunigt
+ungewhnlichen
+intensive
+blaue
+Konsumenten
+Prinzessin
+Sydney
+Intellektuellen
+geringere
+schade
+Elektronik
+gewisser
+teilgenommen
+auswirken
+samstags
+Maschinenbau
+Filiale
+Hierarchie
+abgezogen
+etabliert
+Verwirklichung
+Shell
+herangezogen
+ttigen
+Kids
+Radfahrer
+optimal
+Millionenhhe
+Kuchen
+bereinstimmung
+sexuelle
+Mars
+Gefangene
+verbergen
+festgelegten
+Kaufmann
+strenge
+friedliche
+Metall
+Terrorismus
+Kranken
+identifizieren
+Zhne
+niemandem
+schwarzer
+Inflationsrate
+verlorenen
+ausgelegt
+Berti Vogts
+Maastricht
+Verlage
+seinerseits
+wandern
+gebilligt
+Verwirrung
+liberale
+sterreichs
+leere
+Bemhen
+Landgerichts
+Einbuen
+Strafen
+Spitzenreiter
+stlich
+Verdachts
+Stzen
+Eingriffe
+Wnden
+unterm
+bt
+Kommunismus
+Brgerschaft
+Umweltschtzer
+verliebt
+erfolgreicher
+Deutsche Telekom
+widmet
+lobt
+IRA
+Neun
+Millimeter
+vorgehen
+Titelverteidiger
+Porsche
+Spruch
+Stellenwert
+langweilig
+schiebt
+widerspricht
+tdlichen
+Bomben
+beinhaltet
+kurzerhand
+Zweiter
+Leistungsfhigkeit
+Hrer
+gestand
+Einwnde
+jedermann
+christliche
+Enkel
+entfernen
+nachgedacht
+unterhlt
+Paragraph
+Auenministerium
+unsicher
+Thesen
+American
+San Francisco
+Aufbruch
+verbesserten
+Buchung
+Beachtung
+ausgeht
+Gesetzen
+lebe
+Strategien
+Systemen
+handle
+Hauch
+einzufhren
+Fronten
+Podium
+einheitlichen
+abgeschoben
+Lcher
+feinen
+wagt
+trage
+bewegte
+Mehmet
+Erleichterung
+Brandenburger
+Jesus
+Roman Herzog
+Versicherten
+National
+zweitens
+vorab
+uerten
+la
+Gerhardt
+Ilse
+amtierende
+Protesten
+Lernen
+Klang
+bemerkbar
+Zeugnis
+Ttigkeiten
+William
+ehemaligen Jugoslawien
+Jena
+Philosophen
+ungewi
+rollen
+gewertet
+sonstige
+verrckt
+bezeichneten
+gegenwrtige
+Vorwrfen
+souvern
+geschlossene
+blutigen
+Gter
+Lokal
+ausreichen
+abgerissen
+Marsch
+Frhling
+aufhren
+T
+osteuropischen
+sozialistische
+Verhaftung
+Hahn
+mutmaliche
+Optionen
+Bremerhaven
+erforderliche
+gegeneinander
+Erfinder
+bewerben
+ungarischen
+Momente
+kleinste
+entfhrt
+krftige
+V.
+einnehmen
+Anstalt
+Krpers
+frhe
+Zimmermann
+Mathematik
+Texas
+DAG
+befrdert
+externen
+Schwere
+Malaysia
+einseitig
+vereint
+Company
+geeigneten
+untersttzte
+gebt
+begraben
+Volkspartei
+geteilt
+Prfungen
+Konsum
+Arena
+nachdenken
+theoretisch
+kg
+Insekten
+grundlegende
+Entwrfe
+empfinden
+Haufen
+zunehmen
+Betrachtung
+umfassen
+Offenheit
+Albaner
+Szenario
+kopieren
+glatt
+wchentlich
+verkraften
+Techniker
+hervorragende
+saniert
+Todes
+dominiert
+sichert
+Netze
+Kalkulation
+Heft
+Aufsteiger
+verffentlichen
+Tonne
+Tel
+kehren
+verfat
+Champions League
+Fderation
+Fertigstellung
+Formular
+Herausforderungen
+Landschaften
+angegebenen
+verbreitete
+entworfen
+Referendum
+attraktiver
+rtliche
+warm
+Niedergang
+meldeten
+Eintracht
+verrgert
+komplizierten
+kommunale
+Bestellungen
+Spektakel
+einfhren
+Donau
+Krankenhusern
+Luxus
+geringeren
+Diagnose
+Stre
+Wiederholung
+Wahlgang
+berraschungen
+veranschlagt
+Weiterhin
+Geschftsmann
+Verfall
+morgigen
+toten
+grozgig
+Europameisterschaft
+bestellen
+kurdischen
+Kollegin
+wozu
+besseres
+Prozesses
+Plakate
+Heidelberger
+Selbstndigkeit
+korrigieren
+Tendenzen
+hinauf
+zerstrten
+Clubs
+Stamm
+fein
+entgehen
+abgelaufenen
+heftiger
+SPD-Politiker
+nebenan
+gesunden
+ausgetauscht
+Bosniens
+schtzt
+Standorten
+gewaltig
+Angela
+Sparkasse
+Duo
+Bedrfnis
+Friedens
+Stcken
+Lschen
+herrschen
+beschleunigen
+Beamter
+Nordkorea
+regelmigen
+Wrter
+fliehen
+transportieren
+Nachdruck
+Erna
+Jacques Chirac
+einzeln
+Ausschlu
+Portrt
+doppelten
+jedesmal
+BVG
+erledigen
+trocken
+Rckgabe
+kennengelernt
+Flge
+Etappe
+whlte
+Tochtergesellschaft
+Vorurteile
+reist
+Eher
+Mittelstand
+Beton
+Abfahrt
+Anhngern
+eindeutige
+Gieen
+anmelden
+Tee
+Spiels
+Bundesinnenminister
+Umlaufrendite
+hinterlegt
+palstinensische
+lndlichen
+entkommen
+Sicherheitskrfte
+Brokratie
+diplomatischen
+Botschaften
+siebten
+stnde
+Ausgerechnet
+Wiederwahl
+verstehe
+Sonstige
+las
+Mnchengladbach
+Bundesgebiet
+gewartet
+Regierungskoalition
+Lbecker
+verfehlt
+Tschechen
+Versuchen
+Freiheitsstrafe
+Hose
+Schwerin
+Chemnitz
+ausgenommen
+hiesigen
+Segen
+sthetik
+Verstndigung
+elektrische
+geschenkt
+schrittweise
+Somalia
+bergabe
+Somit
+entspreche
+schier
+Maus
+Erkrankung
+abbauen
+Redner
+internationales
+parlamentarische
+Sammler
+Kommando
+erregt
+Bischfe
+Saarbrcken
+feierten
+ausgerstet
+Mr.
+Unsinn
+fnfziger Jahren
+knappe
+kritisierten
+Album
+Media
+Durchgang
+radikal
+aufgestockt
+Kneipe
+Kopenhagen
+Zweite
+Dichters
+anzulegen
+bezweifelt
+Offenbacher
+Systematische
+Gesundheitswesen
+Funk
+hrter
+verbrannt
+Bad Vilbel
+Vertrages
+Corporation
+Geldstrafe
+berwachen
+Wiederaufnahme
+gelegene
+knstlich
+gefangen
+gewordene
+Bekannten
+Scheidung
+isoliert
+rasche
+bestritt
+Schlerinnen
+Psychologie
+gewollt
+veranstalten
+eingegeben
+qm
+Zweitens
+Arbeitslosenquote
+Salzburg
+gerissen
+erobern
+Verlusten
+Favorit
+Betroffene
+empfahl
+Produktionen
+Sagen
+Flughafens
+sechzig
+trieb
+t
+Wirtschaftsministerium
+Neuseeland
+Kolumbien
+Aufteilung
+Schritten
+schnste
+grtenteils
+Handlungen
+Hammer
+denselben
+Doktor
+ungeachtet
+Erhebung
+Heimatstadt
+vorrangig
+Meisterschaften
+Martina
+Profit
+Belange
+net
+SAP-System
+verursachen
+Zivilisation
+umgebracht
+Guten
+Sohnes
+Entweder
+Kranke
+zwingend
+wofr
+bentigte
+sammelt
+rtr
+Gift
+Vermittler
+langsamer
+Buchungen
+Unterbringung
+Bindung
+Durchmesser
+eigenstndige
+Richtungen
+renommierten
+Verdienst
+pnktlich
+bekanntesten
+Kennzahlen
+Kader
+verfallen
+verbraucht
+friedlichen
+gelandet
+Sindelfingen
+BSE
+Jahrhundertwende
+Fuballer
+Handels
+Intervention
+Klientel
+aufgeteilt
+belohnt
+StZ
+Gefhrdung
+hilflos
+Adam
+problematisch
+freiwilligen
+Spaniens
+null
+aktivieren
+abzubauen
+Sports
+dokumentieren
+Anbau
+wecken
+erschttert
+westlicher
+kommerziellen
+beachtet
+arbeite
+Kugel
+Tpfer
+Anregungen
+WDR
+ewigen
+gerieten
+Kardinal
+Afghanistan
+Terrain
+beschlagnahmt
+bemerkte
+schwebt
+berschu
+verbotenen
+knstlichen
+Abteilungsleiter
+Krisen
+Olympiastadion
+Nordosten
+abschlieen
+ausgeweitet
+Reifen
+Rabin
+Bestnde
+Einspruch
+fhlten
+Sparen
+Grten
+Vernehmen
+zurckliegenden
+aufweisen
+Wahnsinn
+versammelten
+Autobahnen
+birgt
+Schauplatz
+Folter
+Bauen
+interessierten
+Match
+Bundesstrae
+Siedlungen
+befunden
+etablieren
+Ausscheiden
+Services
+Indianer
+Ausrstung
+AOK
+Jahrhunderten
+zeitgenssischen
+Weien
+Mitarbeiterin
+auskommen
+Sat 1
+blockieren
+Aktiengesellschaft
+verletzte
+Lebensmitteln
+Tragen
+Kasten
+besichtigen
+Vorliebe
+entnommen
+Georgios
+Halbinsel
+verschwand
+Hauptsache
+britischer
+GUS
+Verzgerung
+Unterzeichnung
+ergaben
+inhaltlich
+Streichung
+kologie
+Irmgard
+ergriffen
+erteilen
+Zielgruppe
+grundstzliche
+zeichnete
+reit
+Holger
+gestimmt
+Blten
+Pathos
+gewechselt
+bte
+darzustellen
+Ludwigsburger
+Nachkriegszeit
+Island
+Jahrgang
+intensiver
+berwacht
+Pflichten
+verschont
+operiert
+knstliche
+drohende
+Medikamenten
+aufgebracht
+Sterben
+Arbeitnehmern
+Reserven
+Strahlung
+Verlagerung
+bekennt
+Konzernumsatz
+klappt
+Wortes
+Versagen
+Ecken
+Regierungsprsidium
+Rezept
+Attraktivitt
+gestattet
+Fahnen
+Turbulenzen
+US-Regierung
+Tel Aviv
+reichten
+Fremden
+nutzten
+Warten
+Johnson
+grn
+zgig
+hnlicher
+erstreckt
+Johanna
+baden-wrttembergische
+absolviert
+Misere
+Ingenieur
+Montage
+kandidieren
+Gruppierungen
+scheitert
+Gesten
+Realismus
+Trends
+europaweit
+Volker Rhe
+dumm
+Briefen
+Inge
+psychisch
+vereinbarte
+Attacken
+energisch
+Treppe
+Abteilungen
+Sperre
+Entspannung
+Wegfall
+Sehen
+Todesstrafe
+Hndlern
+gerckt
+Zwlf
+Einigkeit
+Dublin
+niedrigeren
+ausreichende
+vergleichbaren
+alternative
+Achtung
+wahrnehmen
+riefen
+Kirchengemeinde
+unglaublich
+Provinzen
+Freispruch
+ergreifen
+gezielte
+qualifiziert
+erfolgreichsten
+spart
+trauen
+Vorbehalte
+Jubel
+Mittag
+Absprache
+vermehrt
+rckte
+bestenfalls
+Ihres
+Darsteller
+ablehnen
+vorausgesetzt
+sozialdemokratische
+konzipiert
+Alliierten
+Laien
+Geister
+gewhlte
+Gorbatschow
+Ulrike
+Bemerkung
+abseits
+kontrollierten
+Auenseiter
+Bauarbeiter
+Weltrangliste
+Erkrankungen
+mahnte
+Bezge
+gesunde
+Geht
+Ansto
+Essener
+Ausstrahlung
+Server
+Abgaben
+wundert
+just
+gezeichnet
+Probe
+Brgermeisterin
+Potsdamer Platz
+Drehbuch
+echter
+tatschliche
+Medaille
+beginnenden
+ehemaligen DDR
+Sekte
+sonderlich
+kannst
+CDU-Politiker
+Musical
+In- und Ausland
+binden
+Prosa
+schlechtes
+freigelassen
+Aufsicht
+zielt
+vertrat
+Lieber
+heiraten
+Vorschrift
+krperliche
+lehrt
+Kontinuitt
+verstand
+hilfreich
+ahnen
+Hannelore
+Gewebe
+Verteidigungsministerium
+Garantie
+Darmstdter
+Offizier
+verbietet
+vermeintlichen
+schnes
+Import
+agieren
+Kleider
+Eberhard
+Kulisse
+Gestndnis
+verzeichnete
+Per
+Ermittlungsverfahren
+Siegen
+freundliche
+Gentechnik
+Einstze
+verleiht
+andern
+integrieren
+herunter
+verbuchen
+Verringerung
+Bush
+gewandt
+zurckgetreten
+gestiegenen
+bermittelt
+Auffhrungen
+Schne
+bedrohten
+verletzten
+offenbart
+Regierungssprecher
+Begleiter
+Propaganda
+erschwert
+kommunistische
+Rttgers
+Feiern
+verbreiteten
+definierten
+Tarife
+Jahreswechsel
+komisch
+fhig
+entsprechendes
+Bands
+Jeans
+komplizierte
+Gewerkschafter
+Helsinki
+Zuversicht
+rgert
+Mastbe
+Stau
+geborgen
+beruhigt
+zurckgenommen
+Nasdaq
+Ausschreitungen
+Anmeldungen
+Stadtparlament
+Gebot
+uere
+verhlt
+Rehhagel
+d.
+Song
+Popularitt
+Kategorien
+Viktor
+Saddam Hussein
+berzogen
+Reste
+winzigen
+spreche
+Parkpltze
+Atomwaffen
+Wimbledon
+Messungen
+Studierenden
+Jedoch
+Einklang
+verborgen
+Bnde
+vereinbaren
+Problematik
+Kuwait
+berschreiten
+Pop
+Wettkampf
+Marie
+absurd
+irgendwelche
+Zentren
+Meist
+Disposition
+Dutzende
+persnlicher
+angestrebt
+Oslo
+Wirt
+Ausflug
+Verdienste
+englischer
+Ernte
+Private
+warmen
+Ude
+OLG
+beabsichtigt
+Wollen
+Weltmarkt
+positives
+gen
+Fundamentalisten
+regierenden
+anschlieenden
+Lngst
+leid
+gentechnisch
+woher
+gehrende
+trennt
+Sternen
+geistig
+Tricks
+Eintracht Frankfurt
+Lehmann
+Obst
+eingebunden
+Konsortium
+f
+Diskriminierung
+Fehlen
+reale
+Vorschlgen
+freiwillige
+Hchst
+Mitarbeit
+Alleingang
+Viren
+Sdosten
+operative
+Drohungen
+Gorleben
+Olympischen Spiele
+Grovater
+Antike
+erbracht
+Rivalen
+F
+zugegeben
+Besten
+aufgewachsen
+Hemd
+Kommt
+Spree
+Bundesgerichtshof
+gerumt
+brasilianischen
+relevanten
+Kontext
+Springer
+brutal
+reien
+fasziniert
+Allgemeinen
+deutschsprachigen
+Mitgliedsstaaten
+Sicherheitsrat
+Besserung
+Bezirke
+alternativen
+Nahverkehr
+einziehen
+Zielen
+Notenbank
+Unterdrckung
+erholt
+Friedberg
+Oldenburg
+Eduard
+Jugendarbeit
+behlt
+Rckfhrung
+Textilien
+Postbank
+Genfer
+Treiben
+Bewohnern
+Verkehrsminister
+willen
+Viag
+Besondere
+Hosen
+landet
+Ereignissen
+entstandene
+Michel
+Novelle
+Klger
+Kapitals
+Nahrungsmittel
+stabile
+entfielen
+Frust
+stieen
+Norbert Blm
+beiseite
+weh
+Hill
+menschlicher
+Effekte
+sofortige
+Langen
+Chemikalien
+historischer
+gefhrte
+reserviert
+berstanden
+Untersuchungsausschu
+Dritten
+Qualitten
+tschetschenischen
+Bundesverfassungsgerichts
+Auslegung
+Wettbewerber
+gleichnamigen
+Lkw
+konomie
+Rose
+wilde
+verfgbaren
+verdoppeln
+Eigenschaft
+Oberlandesgericht
+Verstrkung
+strzt
+Einbrecher
+Weiterentwicklung
+kostenlose
+Normen
+begrenzen
+zurecht
+attraktive
+Know-how
+dick
+anschlieen
+Schilling
+Marokko
+Kreistag
+verschlechtert
+Verletzten
+belgische
+besttigten
+lehnten
+vergangen
+Zehntausende
+angestrebte
+Nummern
+irischen
+niederschsische
+FC Bayern Mnchen
+sogenannter
+zhlten
+eingespart
+beschlossenen
+prinzipiell
+aufzugeben
+angemessene
+Prager
+Bronze
+beibehalten
+Hartmann
+Anlegern
+sprich
+Transaktionen
+Beratungsstelle
+Landsmann
+anpassen
+T.
+IV
+abermals
+regieren
+Gegnern
+Funktionsbaustein
+unmittelbaren
+Stmme
+Rder
+Stillstand
+nirgendwo
+Kartoffeln
+industrielle
+Kriminalpolizei
+Franzose
+qualifizierte
+Erlaubnis
+Strau
+Schwangerschaft
+fing
+Eberhard Diepgen
+Transrapid
+Fabriken
+ANC
+Airbus
+Tagebuch
+islamische
+Reparatur
+Befragung
+geheimen
+rollt
+Jutta
+Ulmer
+Fotografen
+Seen
+Sozialpolitik
+berschrift
+eingesetzten
+angelegten
+EZB
+eingreifen
+traut
+kleinsten
+Zusagen
+Milieu
+mithin
+Hgel
+anhaltende
+krzen
+Faszination
+Zyklus
+Wolfsburg
+Flsse
+betreuen
+Sitzungen
+Durchsetzung
+Abgang
+bequem
+schwrmt
+appelliert
+Anneliese
+angetan
+welch
+Auftragseingang
+beteuert
+ankommt
+demselben
+ausgezahlt
+harter
+Intel
+Politische
+Grafik
+Anzug
+iranische
+Metro
+verkrpert
+zehnten
+vorgetragen
+di
+meinten
+Treue
+errtert
+widersprach
+Hunderttausende
+Vorstandssprecher
+flexibel
+Gras
+Tenor
+Versionen
+Kontrahenten
+Nordsee
+Absichten
+abzugeben
+schaden
+Wehrmacht
+Utopie
+Marion
+australischen
+steigerte
+untersuchten
+Henry
+dementiert
+unmittelbarer
+Irrtum
+gleichfalls
+Paragraphen
+Blicke
+reprsentiert
+gelbe
+Irene
+senden
+geringfgig
+Dunkelheit
+Vortrge
+Slowenien
+Referent
+stationiert
+Entlassungen
+einigten
+bunt
+hoffentlich
+Verbnden
+entsprach
+verbrachte
+prsentierten
+Fahne
+folglich
+Erscheinen
+oberhalb
+gyptischen
+trumt
+ausgewertet
+Hohe
+drckte
+festgeschrieben
+University
+verbucht
+Bewag
+Nordwesten
+kaputt
+Einbeziehung
+SV
+verdiente
+Pilot
+Gromutter
+erfreulich
+reiste
+bundesweiten
+Soweit
+Lohnarten
+Kokain
+Pressemitteilung
+nachzudenken
+angebotenen
+Sozialversicherung
+Vernehmung
+Zustndigkeit
+Tempel
+erschienenen
+Fernsehens
+Lebed
+Dietrich
+Repertoire
+Verbndeten
+frischen
+Geschftsbereich
+Theologie
+Zucker
+schwersten
+verstrkten
+lchelt
+Gtter
+Abbildung
+zweitgrte
+taten
+Schafe
+bar
+vergrert
+Philippinen
+Kursen
+Zimmern
+Angreifer
+Bundesprsidenten
+Organe
+Peru
+mussten
+lcherlich
+gesungen
+aufgeklrt
+Getrnke
+externe
+Fund
+DDR-Zeiten
+bezog
+feine
+Ingeborg
+Territorium
+Reis
+Gesamtjahr
+Hubert
+beschliet
+Beate
+Gesprchspartner
+Supermarkt
+Sparmanahmen
+Statistiken
+bliebe
+hchster
+Gnter Rexrodt
+Geschlecht
+Dom
+Betreuer
+zueinander
+vorzubereiten
+Boykott
+Fachleuten
+Dietmar
+Computern
+Marktanteile
+Hartmut
+Volkswirtschaft
+Ostsee
+bekmpft
+Nhere
+gescheiterten
+Schiene
+selbstbewut
+Bundeswirtschaftsminister
+Ausschreibung
+Z
+irakische
+Anweisungen
+Verlegung
+Spalten
+Rio
+Bauwirtschaft
+Getreide
+Konrad
+Selektion
+Litauen
+Intensitt
+Elite
+Baden-Baden
+Anruf
+Strken
+vernnftige
+nachdrcklich
+Kopie
+einmalig
+wundern
+vernachlssigt
+Pldoyer
+Messen
+verlieen
+Los
+Handvoll
+Sitzen
+manchem
+Nehmen
+verhelfen
+Angriffen
+Peres
+Sparten
+indische
+zivile
+Symbole
+gehrenden
+Kommentare
+Provokation
+Wnschen
+auerordentlichen
+Whlern
+auftritt
+Prenzlauer Berg
+herausgefunden
+Arbeitskrfte
+dringt
+Fhrerschein
+registrieren
+befragten
+runter
+Dirigent
+vernnftig
+Schmitt
+Festivals
+angenehm
+Wiederherstellung
+virtuelle
+Mustafa
+Grad Celsius
+ntzt
+Zgen
+schienen
+Grohandel
+jdischer
+Sony
+Geplant
+Sondersitzung
+Nagel
+Einwanderer
+Entschuldigung
+Evangelische
+Erforschung
+Gulden
+Ambiente
+eingetroffen
+Schreiber
+seltsam
+Kleinstadt
+gelitten
+mitteilt
+Philips
+Weiruland
+Angela Merkel
+Steuerhinterziehung
+Finanzpolitik
+Hafenstadt
+derlei
+dunkel
+Typs
+Halt
+abzusehen
+Story
+bevorstehende
+weitergegeben
+Hierbei
+Mittelfeldspieler
+Schmid
+Kurve
+engagierten
+Heer
+analysieren
+einheimischen
+Abri
+Absicherung
+Besonderes
+Kritikern
+jeglicher
+Bundesbahn
+abgewiesen
+Einerseits
+obendrein
+Wohnraum
+Widersprche
+Mostar
+Initiatoren
+Haaren
+wartete
+Merkel
+militrisch
+bung
+tagsber
+unterliegen
+Romantik
+vierzehn
+nebeneinander
+Eroberung
+Winkel
+gefhrlicher
+Oberstaatsanwalt
+Bundesauenminister
+Wahlsieg
+Global
+Quartett
+erneuert
+Grundstze
+sog
+Effizienz
+Philosoph
+Treff
+glaubten
+Amtsantritt
+Drfern
+Bhnen
+ne
+herzlich
+Nachdenken
+ergnzte
+Sponsor
+Entschlu
+Behinderten
+meiste
+Wunden
+Personalabbau
+geflohen
+geehrt
+Hhen
+gelernte
+Recherchen
+Helene
+sportlich
+angehen
+etablierten
+unterlag
+Rinder
+Dreck
+Ei
+e
+Allgemeine
+Grundgesetzes
+Ostberliner
+Hindernis
+Technische
+Reprsentanten
+umgebaut
+Scheibe
+nominiert
+Statistische
+Kenia
+drastische
+angefhrt
+berdies
+Fiskus
+Plastik
+verbliebenen
+verzichtete
+Blockade
+Mama
+Entwicklungshilfe
+Verbund
+Tiger
+ruhen
+fortgeschrieben
+mithalten
+namentlich
+verwandt
+Engagements
+Anne
+absehbarer
+Schluss
+Konstanz
+Gen
+Veto
+knapper
+wiederholte
+Scheiben
+frische
+verknden
+wirkten
+Anbietern
+mchtige
+Jakob
+Vorgehensweise
+Haushalten
+Olga
+Saudi-Arabien
+schtzungsweise
+abgerechnet
+Vorhang
+Weltweit
+Spaltung
+Langeweile
+Pleite
+Innenministeriums
+Symptome
+Abgeordneter
+bekannter
+Stalin
+sachlich
+mittag
+Tante
+Drucker
+Route
+antiken
+starkes
+kompletten
+Brgermeisters
+hufigsten
+Brsianer
+unntig
+CDU-Fraktion
+Sdostasien
+Vorabend
+hinunter
+konstant
+weier
+Ethik
+V
+Abflle
+tschechische
+Mailnder
+Ivan
+Mohamed
+Wieviel
+frhlich
+Zoo
+greres
+Hintergrnde
+Sauerstoff
+Eichel
+bertrieben
+Stckliste
+deutschem
+amtierenden
+sinnvolle
+Bibliotheken
+kmpfte
+Trinkwasser
+SPD-Fraktionschef
+Salz
+Martha
+Rauch
+Videos
+drucken
+eingeschlossen
+gesttzt
+Plutonium
+lterer
+Ingolstadt
+Menschlichkeit
+Heimspiel
+Adler
+angerichtet
+ri
+Phasen
+boten
+verbracht
+erweiterten
+Menschenrechtsverletzungen
+Nikolaus
+Mitleid
+Parolen
+bekomme
+Besser
+Zustze
+abgeschnitten
+arg
+Routine
+Ttern
+Afrikas
+Stadtverordnetenversammlung
+Beschrnkung
+Morde
+Erfolgen
+Red
+ausgeschrieben
+Hebron
+US
+d
+unverzglich
+Zunge
+Nationalisten
+praktiziert
+wiegt
+Felix
+Kunststoff
+Reichweite
+deutete
+zurckzukehren
+Smith
+Satzung
+Ladung
+Stichtag
+Ltd
+zugehrigen
+zutiefst
+eingeplant
+Albrecht
+Konkurrent
+Motoren
+Normalitt
+Eigenkapital
+Rckschlag
+griffen
+erweiterte
+keines
+erteilte
+Kalender
+khl
+vage
+bewies
+Beachten
+NRW
+Personenwagen
+gefertigt
+begrndeten
+Dasein
+einfallen
+entfalten
+fangen
+Gelassenheit
+demonstrierten
+Psychologen
+erwarb
+auszubauen
+juristisch
+Automobilindustrie
+normaler
+Brille
+formal
+ausgleichen
+mittelstndischen
+US-amerikanischen
+Bundesanstalt
+mitgebracht
+rckgngig
+Buben
+verdammt
+strkeren
+empfindet
+ffnete
+Lge
+Makler
+flchtete
+ernsthafte
+Polizeibeamte
+drohten
+Nchte
+Mercedes-Benz
+vormittag
+Anschein
+ffentlichkeitsarbeit
+Personalkosten
+Erwin Teufel
+Innovation
+ausgeschieden
+Befrchtung
+Rufnummer
+Reisenden
+Verstand
+Elementen
+dienten
+nderte
+Problems
+Nach wie vor
+Kenner
+Taxifahrer
+Verfassungsgericht
+Ad
+dienstags
+Tbinger
+Komposition
+Haustr
+Stadtgebiet
+runden
+verzgert
+Dateien
+Dimitrios
+gereicht
+sanft
+Gehen
+Research
+Oskar
+Tribne
+unzufrieden
+Gltigkeit
+verstecken
+Kunsthalle
+hinterlegen
+Antisemitismus
+Vorfahren
+Akzente
+Begrenzung
+Reisende
+Wahlbeteiligung
+de la
+Schnittstelle
+Jordanien
+Alarm
+eignet
+Wirkungen
+Fhrungskrfte
+Christel
+Wobei
+angewandt
+aufgetaucht
+vielfltigen
+Schtzung
+Sexualitt
+gewrdigt
+arme
+Diktator
+Verschrfung
+Fenstern
+Arnold
+schiet
+verkrzt
+Oberbayern
+vorzunehmen
+Landtagswahlen
+jeher
+Mitgliederversammlung
+Aufzeichnungen
+Entwicklungslnder
+Gefhlen
+vwd
+seltenen
+et
+serviert
+Dahinter
+Vatikan
+Korrekturen
+Neubauten
+logische
+versumt
+umzugehen
+Ambitionen
+geprgten
+eingezogen
+Bundesanwaltschaft
+Analyst
+zurckgehen
+deine
+schloss
+FC
+Stabilisierung
+Teils
+Euch
+Nationale
+Innere
+Kabarett
+Fundament
+Ernennung
+vertagt
+Williams
+Krupp
+wahrlich
+verwundert
+Zelt
+Motiven
+laufe
+Reichen
+Lcken
+Beihilfe
+Bebauung
+Mehrheiten
+brgerliche
+Abgesehen
+Sound
+nchtlichen
+ethnischen
+mittelstndische
+telefonisch
+Fulda
+einsteigen
+raten
+Versicherer
+Tarifverhandlungen
+Gewiheit
+Regisseure
+Kostenstelle
+Weit
+Glubiger
+nochmal
+Christiane
+Wehr
+Renovierung
+gemalt
+Diesem
+Note
+Palast
+verfolgte
+graue
+Schrders
+Nationalismus
+umliegenden
+Normalerweise
+sauer
+begngen
+Ttung
+Roten
+anderem
+verbundene
+strahlt
+abgestellt
+Nachbar
+Libyen
+verarbeiten
+Talente
+Gedichten
+Korea
+Haftstrafe
+Beckenbauer
+Networks
+Fraktionsvorsitzende
+bekennen
+erstattet
+Horn
+bemerkenswert
+Werkzeug
+Trick
+Rckblick
+Kunstwerke
+berlebenden
+regulren
+Papa
+Indiz
+Kiew
+gewagt
+halbwegs
+Stattdessen
+schlechthin
+besiegt
+verschiedensten
+Bemerkungen
+Udo
+beruhigen
+toll
+dotierten
+vollstndigen
+SPD-Chef
+Miami
+Plakat
+Sddeutschen Zeitung
+Zitat
+ungeklrt
+Arbeitern
+Einflsse
+BND
+Satire
+Akte
+enthaltenen
+Geldpolitik
+durchsucht
+gab's
+brav
+Stadtteilen
+Segment
+Wochenenden
+aufgebrochen
+geraumer
+mitteilen
+klang
+Gepck
+effektiv
+berwiesen
+rmische
+Warnungen
+Landesverband
+Flagge
+formulieren
+Ballett
+professionellen
+ausgebt
+Landung
+Weisheit
+Slobodan Milosevic
+schlichten
+prophezeit
+festzulegen
+donnerstags
+Mantel
+eh
+berraschenden
+berein
+Oberursel
+liebevoll
+Baden
+Taschen
+Werksttten
+ADAC
+Flecken
+verankert
+Jochen
+Gunst
+populr
+Regierungspartei
+prominente
+beruft
+Kanle
+Allee
+Abweichungen
+ganzer
+zurckgreifen
+klug
+hierher
+demokratisch
+eigen
+Boston
+Abtreibung
+arabische
+siebzig
+Bebauungsplan
+Anschlgen
+wissenschaftlicher
+Des
+WTO
+kassieren
+Kriterium
+Auftrgen
+Tausenden
+Redakteur
+Klischees
+Grostdten
+Lehrstellen
+dein
+vorstellbar
+Sucht
+erhob
+verschickt
+freundlichen
+umfasst
+Leder
+Eins
+bezug
+Arzneimittel
+Staatsprsidenten
+auszugleichen
+Absolventen
+Brecht
+abstimmen
+Straenbahn
+Nationalsozialisten
+Thringer
+lieferten
+dnische
+entspannt
+befrwortet
+prognostiziert
+Rektor
+Beitrgen
+gestritten
+fllt
+Ressorts
+zutage
+letztendlich
+krzer
+dnn
+Baumann
+umso
+Hrde
+verunsichert
+Technischen
+Planer
+Belebung
+Infos
+Anja
+Desaster
+erstens
+Buenos Aires
+Bse
+Verknpfung
+regt
+Christian Ude
+lenken
+Geschftsttigkeit
+ausverkauft
+steigender
+kndigen
+besetzte
+90er Jahre
+gegriffen
+billige
+beliebten
+wnsche
+sang
+Kultusministerium
+eindrucksvoll
+Zensur
+Ost-Berlin
+Staatsanwlte
+Preuen
+Johannes Rau
+Marine
+Erdgas
+erzwingen
+anwesend
+Schlge
+unheimlich
+Pflanze
+Khe
+litt
+derjenigen
+grnes Licht
+nett
+achtzig
+Gren
+Heilbronn
+Globus
+hindurch
+Bodensee
+Atelier
+Jugendlicher
+Geliebten
+kopiert
+Tarifvertrag
+Kanzlers
+angrenzenden
+einmaligen
+Mitarbeiters
+Gehr
+gemein
+Fluggesellschaften
+Leitungen
+erstmal
+Offensichtlich
+eingeweiht
+befindlichen
+inwieweit
+Konvention
+auftauchen
+vorsorglich
+Florenz
+Avantgarde
+Ablsung
+versichern
+Teilchen
+Anbindung
+sicherstellen
+Lee
+Diana
+berdurchschnittlich
+professionelle
+ereignete
+Gesundheitsreform
+Mobilitt
+Darstellungen
+hellen
+Jean
+Monitor
+Versptung
+Innovationen
+Christina
+25jhrige
+Hollnder
+abzuwarten
+vorangegangenen
+Neugier
+mangelt
+Hauptquartier
+humanitre
+Kindergeld
+Filmemacher
+Deal
+Europameister
+drastischen
+Kohlendioxid
+erprobt
+aggressiv
+angestellt
+De
+erheblicher
+Entwicklungslndern
+Bden
+SG
+blind
+innovative
+zustzlicher
+Astronomen
+vorgeschrieben
+Augenzeugen
+norwegischen
+Tiergarten
+regelmige
+Kernenergie
+Eisenbahn
+Sensation
+Bekannte
+widersprechen
+Zehntel
+nachfolgenden
+brauchten
+kombiniert
+Pdagogen
+steuerliche
+Srebrenica
+fnfziger Jahre
+Sozialdemokrat
+Goethes
+Intendanten
+rutschte
+Ostdeutschen
+begrenzten
+Bremens
+wertet
+Kronen
+nhert
+Nebenwirkungen
+moralisch
+Jenseits
+vorweisen
+Tankstelle
+Bayer Leverkusen
+Schwelle
+liegende
+begrenzte
+optimale
+parat
+Nationalpark
+Einschnitte
+Interessierte
+Hauptrolle
+Sich
+Rover
+Anstalten
+Raumfahrt
+Steinen
+Hindernisse
+Entgegen
+lud
+Erschlieung
+Alptraum
+herrschenden
+Dayton
+Sozialamt
+Jahreszeit
+Verwertung
+angerufen
+kndigten
+Wrden
+Munition
+dreieinhalb
+unterliegt
+Sauna
+Sporthalle
+Aufschrift
+amtliche
+Pence
+In der Regel
+Magen
+Jude
+steckte
+Belgrader
+Gnade
+aufrechterhalten
+weithin
+heimische
+Letzte
+DTB
+Unbekannten
+Aufarbeitung
+Reisebros
+niedrigere
+Mazedonien
+zentral
+wiederholten
+schimpft
+Faschismus
+Verrat
+Islamisten
+Bekanntgabe
+rcklufig
+zusammengeschlossen
+orientierten
+30jhrige
+Blttern
+Mandate
+buchstblich
+betrchtlich
+verwalten
+Zeichnung
+westdeutsche
+Aktienkurse
+Verste
+Friedrichstrae
+Ratten
+Knigreich
+Pension
+Deckung
+Erdgescho
+unverstndlich
+Mythen
+englisch
+Lagern
+Arbeitszeiten
+Sozialstaat
+jnger
+Geruch
+aufstellen
+wrtlich
+musikalisch
+Zigarette
+Hauptstrae
+Entsetzen
+angewendet
+Le
+Sprengstoff
+Coup
+Strung
+Uniform
+steigert
+Seminare
+Gegenspieler
+Fehlern
+mittelalterlichen
+Orden
+Thron
+Agenten
+spektakulre
+OSZE
+Kontrast
+Senders
+Teppich
+Titeln
+EUR
+Erreger
+satt
+Strafkammer
+Ute
+Julia
+frage
+zahlte
+Prinzen
+stabilen
+Reports
+Schade
+belaufen
+beantragte
+Carl
+Einnahme
+aneinander
+sid
+beluft
+Fahrten
+Rems-Murr-Kreis
+Sdafrikas
+Uhren
+Rosa
+Brauerei
+erstaunt
+bescheidenen
+berraschende
+angefordert
+Parallel
+Michael Schumacher
+Jordan
+antworten
+Araber
+Bayreuth
+Bundesverbandes
+Beirat
+ewige
+Mnzen
+passende
+profitierten
+St. Pauli
+packen
+King
+Vorgngen
+Zuwachsraten
+Schilderung
+drben
+Archivierung
+Apple
+Beethoven
+Ampel
+Kabul
+krperlich
+verstndigen
+warteten
+angestrebten
+Parks
+teilzunehmen
+Jahresumsatz
+jahrzehntelang
+Obersten
+Zirkus
+Straenverkehr
+ausgehandelt
+Wiesen
+bezifferte
+Renditen
+Diplomat
+Weite
+bewegten
+beschwert
+Tony Blair
+Kunstwerk
+Banker
+Baustellen
+steuerlichen
+BDI
+vergebens
+erwartenden
+Minen
+geschtzten
+DAX
+hinreichend
+abgesichert
+extremen
+jugendlichen
+Erlebnisse
+Spekulation
+Belohnung
+Volksabstimmung
+Wichtigste
+komplexen
+Erzeugnisse
+zerstrte
+Trendwende
+Hamburger SV
+eingeschlagen
+plaziert
+wechselnden
+gltige
+Schubert
+Hoch
+Vergessen
+totale
+psychologische
+betrieblichen
+Buchen
+Gewinnen
+Moskaus
+Innern
+Christopher
+ntzlich
+orientierte
+Kompositionen
+bedauerte
+Formel 1
+nix
+Kse
+Erzbischof
+Ausfall
+Konflikts
+goldene
+Marx
+erhoffen
+protestierten
+landwirtschaftlichen
+lngerer
+Geliebte
+Vllig
+landesweit
+Abschreibungen
+dominieren
+bittere
+versetzen
+detaillierte
+abgehalten
+Chemiker
+einsam
+Blau
+Anregung
+Kameraden
+Kooperationen
+Wilfried
+Schalke
+Zusatz
+geschrumpft
+stundenlang
+unweit
+Illusionen
+krperlichen
+bemhte
+finanzieller
+klares
+Werder Bremen
+einsparen
+Anfhrer
+berwindung
+Fliegen
+bedrohte
+vorlufige
+Vorbilder
+betonten
+verfgte
+Extremisten
+bloen
+bert
+gemerkt
+verwehrt
+Htte
+John Major
+nebst
+Theorien
+Angeblich
+Kaufhaus
+Atlantik
+Tief
+Hertha
+ausgewhlte
+gngigen
+leuchtet
+Berufe
+Bezirken
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Parameters.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Parameters.cs
@@ -1,436 +1,436 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Text;
-using System.IO;
-using System.Reflection;
-using DbLinq.Util;
-
-using Mono.Options;
-
-namespace DbMetal
-{
-    [DebuggerDisplay("Parameters from {Provider}, server={Server}")]
-    public class Parameters
-    {
-        /// <summary>
-        /// user name for database access
-        /// </summary>
-        public string User { get; set; }
-
-        /// <summary>
-        /// user password for database access
-        /// </summary>
-        public string Password { get; set; }
-
-        /// <summary>
-        /// server host name
-        /// </summary>
-        public string Server { get; set; }
-
-        /// <summary>
-        /// database name
-        /// </summary>
-        public string Database { get; set; }
-
-        /// <summary>
-        /// This connection string if present overrides User, Password, Server.
-        /// Database is always used to generate the specific DataContext name
-        /// </summary>
-        public string Conn { get; set; }
-
-        /// <summary>
-        /// the namespace to put our classes into
-        /// </summary>
-        public string Namespace { get; set; }
-
-        /// <summary>
-        /// the language to generate classes for
-        /// </summary>
-        public string Language { get; set; }
-
-        /// <summary>
-        /// If present, write out C# code
-        /// </summary>
-        public string Code { get; set; }
-
-        /// <summary>
-        /// if present, write out DBML XML representing the DB
-        /// </summary>
-        public string Dbml { get; set; }
-
-        /// <summary>
-        /// when true, we will call Singularize()/Pluralize() functions.
-        /// </summary>
-        public bool Pluralize { get; set; }
-
-        /// <summary>
-        /// the culture used for word recognition and pluralization
-        /// </summary>
-        public string Culture { get; set; }
-
-        /// <summary>
-        /// load object renamings from an xml file
-        /// </summary>
-        public string Aliases { get; set; }
-
-        /// <summary>
-        /// this is the "input file" parameter
-        /// </summary>
-        public string SchemaXmlFile
-        {
-            get
-            {
-                return Extra.Count > 0 ? Extra[0] : null;
-            }
-        }
-
-        public bool Schema { get; set; }
-
-        /// <summary>
-        /// base class from which all generated entities will inherit
-        /// </summary>
-        public string EntityBase { get; set; }
-
-        /// <summary>
-        /// interfaces to be implemented
-        /// </summary>
-        public string[] EntityInterfaces { get; set; }
-
-        /// <summary>
-        /// extra attributes to be implemented by class members
-        /// </summary>
-        public IList<string> MemberAttributes { get; set; }
-
-        /// <summary>
-        /// generate Equals() and GetHashCode()
-        /// </summary>
-        public bool GenerateEqualsHash { get; set; }
-
-        /// <summary>
-        /// export stored procedures
-        /// </summary>
-        public bool Sprocs { get; set; }
-
-        /// <summary>
-        /// preserve case of database names
-        /// </summary>
-        public string Case { get; set; }
-
-        /// <summary>
-        /// force a Console.ReadKey at end of program.
-        /// Useful when running from Studio, so the output window does not disappear
-        /// picrap comment: you may use the tool to write output to Visual Studio output window instead of a console window
-        /// </summary>
-        public bool Readline { get; set; }
-
-        /// <summary>
-        /// specifies a provider (which here is a pair or ISchemaLoader and IDbConnection implementors)
-        /// </summary>
-        public string Provider { get; set; }
-
-        /// <summary>
-        /// for fine tuning, we allow to specifiy an ISchemaLoader
-        /// </summary>
-        public string DbLinqSchemaLoaderProvider { get; set; }
-
-        /// <summary>
-        /// for fine tuning, we allow to specifiy an IDbConnection
-        /// </summary>
-        public string DatabaseConnectionProvider { get; set; }
-
-        /// <summary>
-        /// the SQL dialect used by the database
-        /// </summary>
-        public string SqlDialectType { get; set; }
-
-        /// <summary>
-        /// the types to be generated
-        /// </summary>
-        public IList<string> GenerateTypes { get; set; }
-
-        /// <summary>
-        /// if true, put a timestamp comment before the generated code
-        /// </summary>
-        public bool GenerateTimestamps { get; set; }
-
-        /// <summary>
-        /// show help
-        /// </summary>
-        public bool Help { get; set; }
-
-        /// <summary>
-        /// Show stack traces in error messages, etc., instead of just the message.
-        /// </summary>
-        public bool Debug { get; set; }
-
-        /// <summary>
-        /// non-option parameters
-        /// </summary>
-        public IList<string> Extra = new List<string>();
-
-        TextWriter log;
-        public TextWriter Log
-        {
-            get { return log ?? Console.Out; }
-            set { log = value; }
-        }
-
-
-        protected OptionSet Options;
-
-        public Parameters()
-        {
-            Schema = true;
-            Culture = "en";
-            GenerateTypes = new List<string>();
-            MemberAttributes = new List<string>();
-            GenerateTimestamps = true;
-            EntityInterfaces = new []{ "INotifyPropertyChanging", "INotifyPropertyChanged" };
-        }
-
-        public void Parse(IList<string> args)
-        {
-            Options = new OptionSet() {
-                 // SQLMetal compatible
-                { "c|conn=",
-                  "Database {CONNECTION STRING}. Cannot be used with /server, "
-                  +"/user or /password options.",
-                  conn => Conn = conn },
-                 // SQLMetal compatible
-                { "u|user=",
-                  "Login user {NAME}.",
-                  name => User = name },
-                 // SQLMetal compatible
-                { "p|password=",
-                  "Login {PASSWORD}.",
-                  password => Password = password },
-                 // SQLMetal compatible
-                { "s|server=",
-                  "Database server {NAME}.",
-                  name => Server = name },
-                 // SQLMetal compatible
-                { "d|database=",
-                  "Database catalog {NAME} on server.",
-                  name => Database = name },
-                { "provider=",
-                  "Specify {PROVIDER}. May be Ingres, MySql, Oracle, OracleODP, PostgreSql or Sqlite.",
-                  provider => Provider = provider },
-                { "with-schema-loader=",
-                  "ISchemaLoader implementation {TYPE}.",
-                  type => DbLinqSchemaLoaderProvider = type },
-                { "with-dbconnection=",
-                  "IDbConnection implementation {TYPE}.",
-                  type => DatabaseConnectionProvider = type },
-                { "with-sql-dialect=",
-                  "IVendor implementation {TYPE}.",
-                  type => SqlDialectType = type },
-                 // SQLMetal compatible
-                { "code=",
-                  "Output as source code to {FILE}. Cannot be used with /dbml option.",
-                  file => Code = file },
-                 // SQLMetal compatible
-                { "dbml=",
-                  "Output as dbml to {FILE}. Cannot be used with /map option.",
-                  file => Dbml = file },
-                 // SQLMetal compatible
-                { "language=",
-                  "Language {NAME} for source code: C#, C#2 or VB "
-                  +"(default: derived from extension on code file name).",
-                  name => Language = name },
-                { "aliases=",
-                  "Use mapping {FILE}.",
-                  file => Aliases = file },
-                { "schema",
-                  "Generate schema in code files (default: enabled).",
-                  v => Schema = v != null },
-                 // SQLMetal compatible
-                { "namespace=",
-                  "Namespace {NAME} of generated code (default: no namespace).",
-                  name => Namespace = name },
-                 // SQLMetal compatible
-                { "entitybase=",
-                  "Base {TYPE} of entity classes in the generated code "
-                  +"(default: entities have no base class).",
-                  type => EntityBase = type },
-                { "member-attribute=",
-                  "{ATTRIBUTE} for entity members in the generated code, "
-                  +"can be specified multiple times.",
-                  attribute => MemberAttributes.Add(attribute) },
-                { "generate-type=",
-                  "Generate only the {TYPE} selected, can be specified multiple times "
-                  +"and does not prevent references from being generated (default: "
-                  +"generate a DataContex subclass and all the entities in the schema).",
-                  type => GenerateTypes.Add(type) },
-                { "generate-equals-hash",
-                  "Generates overrides for Equals() and GetHashCode() methods.",
-                  v => GenerateEqualsHash = v != null },
-                 // SQLMetal compatible
-                { "sprocs",
-                  "Extract stored procedures.",
-                  v => Sprocs = v != null},
-                 // SQLMetal compatible
-                { "pluralize",
-                  "Automatically pluralize or singularize class and member names "
-                  +"using specified culture rules.",
-                  v => Pluralize = v != null},
-                { "culture=",
-                  "Specify {CULTURE} for word recognition and pluralization (default: \"en\").",
-                  culture => Culture = culture },
-                { "case=",
-                  "Transform names with the indicated {STYLE} "
-                  +"(default: net; may be: leave, pascal, camel, net).",
-                  style => Case = style },
-                { "generate-timestamps",
-                  "Generate timestampes in the generated code (default: enabled).",
-                  v => GenerateTimestamps = v != null },
-                { "readline",
-                  "Wait for a key to be pressed after processing.",
-                  v => Readline = v != null },
-                { "debug",
-                  "Enables additional information to help with debugging, " + 
-                  "such as full stack traces in error messages.",
-                  v => Debug = v != null },
-                { "h|?|help",
-                  "Show this help",
-                  v => Help = v != null }
-            };
-
-            Extra = Options.Parse(args);
-        }
-
-        #region Help
-
-        public void WriteHelp()
-        {
-            WriteHeader(); // includes a WriteLine()
-            WriteSyntax();
-            WriteLine();
-            WriteSummary();
-            WriteLine();
-            Options.WriteOptionDescriptions(Log);
-            WriteLine();
-            WriteExamples();
-        }
-
-        bool headerWritten;
-
-        /// <summary>
-        /// Writes the application header
-        /// </summary>
-        public void WriteHeader()
-        {
-            if (!headerWritten)
-            {
-                WriteHeaderContents();
-                WriteLine();
-                headerWritten = true;
-            }
-        }
-
-        protected void WriteHeaderContents()
-        {
-            var version = ApplicationVersion;
-            Write("DbLinq Database mapping generator 2008 version {0}.{1}", version.Major, version.Minor);
-            Write("for Microsoft (R) .NET Framework version 3.5");
-            Write("Distributed under the MIT licence (http://linq.to/db/license)");
-        }
-
-        /// <summary>
-        /// Writes a small summary
-        /// </summary>
-        public void WriteSummary()
-        {
-            Write("  Generates code and mapping for DbLinq. SqlMetal can:");
-            Write("  - Generate source code and mapping attributes or a mapping file from a database.");
-            Write("  - Generate an intermediate dbml file for customization from the database.");
-            Write("  - Generate code and mapping attributes or mapping file from a dbml file.");
-        }
-
-        public void WriteSyntax()
-        {
-            var syntax = new StringBuilder();
-            syntax.AppendFormat("{0} [OPTIONS] [<DBML INPUT FILE>]", ApplicationName);
-            Write(syntax.ToString());
-        }
-
-        /// <summary>
-        /// Writes examples
-        /// </summary>
-        public void WriteExamples()
-        {
-        }
-
-        /// <summary>
-        /// Outputs a formatted string to the console.
-        /// We're not using the ILogger here, since we want console output.
-        /// </summary>
-        /// <param name="format"></param>
-        /// <param name="args"></param>
-        public void Write(string format, params object[] args)
-        {
-            Output.WriteLine(Log, OutputLevel.Information, format, args);
-        }
-
-        /// <summary>
-        /// Outputs an empty line
-        /// </summary>
-        public void WriteLine()
-        {
-            Output.WriteLine(Log, OutputLevel.Information, string.Empty);
-        }
-
-        /// <summary>
-        /// Returns the application (assembly) name (without extension)
-        /// </summary>
-        protected static string ApplicationName
-        {
-            get
-            {
-                return Assembly.GetEntryAssembly().GetName().Name;
-            }
-        }
-
-        /// <summary>
-        /// Returns the application (assembly) version
-        /// </summary>
-        protected static Version ApplicationVersion
-        {
-            get
-            {
-                // Assembly.GetEntryAssembly() is null when loading from the
-                // non-default AppDomain.
-                var a = Assembly.GetEntryAssembly();
-                return a != null ? a.GetName().Version : new Version();
-            }
-        }
-
-        #endregion
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Reflection;
+using DbLinq.Util;
+
+using Mono.Options;
+
+namespace DbMetal
+{
+    [DebuggerDisplay("Parameters from {Provider}, server={Server}")]
+    public class Parameters
+    {
+        /// <summary>
+        /// user name for database access
+        /// </summary>
+        public string User { get; set; }
+
+        /// <summary>
+        /// user password for database access
+        /// </summary>
+        public string Password { get; set; }
+
+        /// <summary>
+        /// server host name
+        /// </summary>
+        public string Server { get; set; }
+
+        /// <summary>
+        /// database name
+        /// </summary>
+        public string Database { get; set; }
+
+        /// <summary>
+        /// This connection string if present overrides User, Password, Server.
+        /// Database is always used to generate the specific DataContext name
+        /// </summary>
+        public string Conn { get; set; }
+
+        /// <summary>
+        /// the namespace to put our classes into
+        /// </summary>
+        public string Namespace { get; set; }
+
+        /// <summary>
+        /// the language to generate classes for
+        /// </summary>
+        public string Language { get; set; }
+
+        /// <summary>
+        /// If present, write out C# code
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// if present, write out DBML XML representing the DB
+        /// </summary>
+        public string Dbml { get; set; }
+
+        /// <summary>
+        /// when true, we will call Singularize()/Pluralize() functions.
+        /// </summary>
+        public bool Pluralize { get; set; }
+
+        /// <summary>
+        /// the culture used for word recognition and pluralization
+        /// </summary>
+        public string Culture { get; set; }
+
+        /// <summary>
+        /// load object renamings from an xml file
+        /// </summary>
+        public string Aliases { get; set; }
+
+        /// <summary>
+        /// this is the "input file" parameter
+        /// </summary>
+        public string SchemaXmlFile
+        {
+            get
+            {
+                return Extra.Count > 0 ? Extra[0] : null;
+            }
+        }
+
+        public bool Schema { get; set; }
+
+        /// <summary>
+        /// base class from which all generated entities will inherit
+        /// </summary>
+        public string EntityBase { get; set; }
+
+        /// <summary>
+        /// interfaces to be implemented
+        /// </summary>
+        public string[] EntityInterfaces { get; set; }
+
+        /// <summary>
+        /// extra attributes to be implemented by class members
+        /// </summary>
+        public IList<string> MemberAttributes { get; set; }
+
+        /// <summary>
+        /// generate Equals() and GetHashCode()
+        /// </summary>
+        public bool GenerateEqualsHash { get; set; }
+
+        /// <summary>
+        /// export stored procedures
+        /// </summary>
+        public bool Sprocs { get; set; }
+
+        /// <summary>
+        /// preserve case of database names
+        /// </summary>
+        public string Case { get; set; }
+
+        /// <summary>
+        /// force a Console.ReadKey at end of program.
+        /// Useful when running from Studio, so the output window does not disappear
+        /// picrap comment: you may use the tool to write output to Visual Studio output window instead of a console window
+        /// </summary>
+        public bool Readline { get; set; }
+
+        /// <summary>
+        /// specifies a provider (which here is a pair or ISchemaLoader and IDbConnection implementors)
+        /// </summary>
+        public string Provider { get; set; }
+
+        /// <summary>
+        /// for fine tuning, we allow to specifiy an ISchemaLoader
+        /// </summary>
+        public string DbLinqSchemaLoaderProvider { get; set; }
+
+        /// <summary>
+        /// for fine tuning, we allow to specifiy an IDbConnection
+        /// </summary>
+        public string DatabaseConnectionProvider { get; set; }
+
+        /// <summary>
+        /// the SQL dialect used by the database
+        /// </summary>
+        public string SqlDialectType { get; set; }
+
+        /// <summary>
+        /// the types to be generated
+        /// </summary>
+        public IList<string> GenerateTypes { get; set; }
+
+        /// <summary>
+        /// if true, put a timestamp comment before the generated code
+        /// </summary>
+        public bool GenerateTimestamps { get; set; }
+
+        /// <summary>
+        /// show help
+        /// </summary>
+        public bool Help { get; set; }
+
+        /// <summary>
+        /// Show stack traces in error messages, etc., instead of just the message.
+        /// </summary>
+        public bool Debug { get; set; }
+
+        /// <summary>
+        /// non-option parameters
+        /// </summary>
+        public IList<string> Extra = new List<string>();
+
+        TextWriter log;
+        public TextWriter Log
+        {
+            get { return log ?? Console.Out; }
+            set { log = value; }
+        }
+
+
+        protected OptionSet Options;
+
+        public Parameters()
+        {
+            Schema = true;
+            Culture = "en";
+            GenerateTypes = new List<string>();
+            MemberAttributes = new List<string>();
+            GenerateTimestamps = true;
+            EntityInterfaces = new []{ "INotifyPropertyChanging", "INotifyPropertyChanged" };
+        }
+
+        public void Parse(IList<string> args)
+        {
+            Options = new OptionSet() {
+                 // SQLMetal compatible
+                { "c|conn=",
+                  "Database {CONNECTION STRING}. Cannot be used with /server, "
+                  +"/user or /password options.",
+                  conn => Conn = conn },
+                 // SQLMetal compatible
+                { "u|user=",
+                  "Login user {NAME}.",
+                  name => User = name },
+                 // SQLMetal compatible
+                { "p|password=",
+                  "Login {PASSWORD}.",
+                  password => Password = password },
+                 // SQLMetal compatible
+                { "s|server=",
+                  "Database server {NAME}.",
+                  name => Server = name },
+                 // SQLMetal compatible
+                { "d|database=",
+                  "Database catalog {NAME} on server.",
+                  name => Database = name },
+                { "provider=",
+                  "Specify {PROVIDER}. May be Ingres, MySql, Oracle, OracleODP, PostgreSql or Sqlite.",
+                  provider => Provider = provider },
+                { "with-schema-loader=",
+                  "ISchemaLoader implementation {TYPE}.",
+                  type => DbLinqSchemaLoaderProvider = type },
+                { "with-dbconnection=",
+                  "IDbConnection implementation {TYPE}.",
+                  type => DatabaseConnectionProvider = type },
+                { "with-sql-dialect=",
+                  "IVendor implementation {TYPE}.",
+                  type => SqlDialectType = type },
+                 // SQLMetal compatible
+                { "code=",
+                  "Output as source code to {FILE}. Cannot be used with /dbml option.",
+                  file => Code = file },
+                 // SQLMetal compatible
+                { "dbml=",
+                  "Output as dbml to {FILE}. Cannot be used with /map option.",
+                  file => Dbml = file },
+                 // SQLMetal compatible
+                { "language=",
+                  "Language {NAME} for source code: C#, C#2 or VB "
+                  +"(default: derived from extension on code file name).",
+                  name => Language = name },
+                { "aliases=",
+                  "Use mapping {FILE}.",
+                  file => Aliases = file },
+                { "schema",
+                  "Generate schema in code files (default: enabled).",
+                  v => Schema = v != null },
+                 // SQLMetal compatible
+                { "namespace=",
+                  "Namespace {NAME} of generated code (default: no namespace).",
+                  name => Namespace = name },
+                 // SQLMetal compatible
+                { "entitybase=",
+                  "Base {TYPE} of entity classes in the generated code "
+                  +"(default: entities have no base class).",
+                  type => EntityBase = type },
+                { "member-attribute=",
+                  "{ATTRIBUTE} for entity members in the generated code, "
+                  +"can be specified multiple times.",
+                  attribute => MemberAttributes.Add(attribute) },
+                { "generate-type=",
+                  "Generate only the {TYPE} selected, can be specified multiple times "
+                  +"and does not prevent references from being generated (default: "
+                  +"generate a DataContex subclass and all the entities in the schema).",
+                  type => GenerateTypes.Add(type) },
+                { "generate-equals-hash",
+                  "Generates overrides for Equals() and GetHashCode() methods.",
+                  v => GenerateEqualsHash = v != null },
+                 // SQLMetal compatible
+                { "sprocs",
+                  "Extract stored procedures.",
+                  v => Sprocs = v != null},
+                 // SQLMetal compatible
+                { "pluralize",
+                  "Automatically pluralize or singularize class and member names "
+                  +"using specified culture rules.",
+                  v => Pluralize = v != null},
+                { "culture=",
+                  "Specify {CULTURE} for word recognition and pluralization (default: \"en\").",
+                  culture => Culture = culture },
+                { "case=",
+                  "Transform names with the indicated {STYLE} "
+                  +"(default: net; may be: leave, pascal, camel, net).",
+                  style => Case = style },
+                { "generate-timestamps",
+                  "Generate timestampes in the generated code (default: enabled).",
+                  v => GenerateTimestamps = v != null },
+                { "readline",
+                  "Wait for a key to be pressed after processing.",
+                  v => Readline = v != null },
+                { "debug",
+                  "Enables additional information to help with debugging, " + 
+                  "such as full stack traces in error messages.",
+                  v => Debug = v != null },
+                { "h|?|help",
+                  "Show this help",
+                  v => Help = v != null }
+            };
+
+            Extra = Options.Parse(args);
+        }
+
+        #region Help
+
+        public void WriteHelp()
+        {
+            WriteHeader(); // includes a WriteLine()
+            WriteSyntax();
+            WriteLine();
+            WriteSummary();
+            WriteLine();
+            Options.WriteOptionDescriptions(Log);
+            WriteLine();
+            WriteExamples();
+        }
+
+        bool headerWritten;
+
+        /// <summary>
+        /// Writes the application header
+        /// </summary>
+        public void WriteHeader()
+        {
+            if (!headerWritten)
+            {
+                WriteHeaderContents();
+                WriteLine();
+                headerWritten = true;
+            }
+        }
+
+        protected void WriteHeaderContents()
+        {
+            var version = ApplicationVersion;
+            Write("DbLinq Database mapping generator 2008 version {0}.{1}", version.Major, version.Minor);
+            Write("for Microsoft (R) .NET Framework version 3.5");
+            Write("Distributed under the MIT licence (http://linq.to/db/license)");
+        }
+
+        /// <summary>
+        /// Writes a small summary
+        /// </summary>
+        public void WriteSummary()
+        {
+            Write("  Generates code and mapping for DbLinq. SqlMetal can:");
+            Write("  - Generate source code and mapping attributes or a mapping file from a database.");
+            Write("  - Generate an intermediate dbml file for customization from the database.");
+            Write("  - Generate code and mapping attributes or mapping file from a dbml file.");
+        }
+
+        public void WriteSyntax()
+        {
+            var syntax = new StringBuilder();
+            syntax.AppendFormat("{0} [OPTIONS] [<DBML INPUT FILE>]", ApplicationName);
+            Write(syntax.ToString());
+        }
+
+        /// <summary>
+        /// Writes examples
+        /// </summary>
+        public void WriteExamples()
+        {
+        }
+
+        /// <summary>
+        /// Outputs a formatted string to the console.
+        /// We're not using the ILogger here, since we want console output.
+        /// </summary>
+        /// <param name="format"></param>
+        /// <param name="args"></param>
+        public void Write(string format, params object[] args)
+        {
+            Output.WriteLine(Log, OutputLevel.Information, format, args);
+        }
+
+        /// <summary>
+        /// Outputs an empty line
+        /// </summary>
+        public void WriteLine()
+        {
+            Output.WriteLine(Log, OutputLevel.Information, string.Empty);
+        }
+
+        /// <summary>
+        /// Returns the application (assembly) name (without extension)
+        /// </summary>
+        protected static string ApplicationName
+        {
+            get
+            {
+                return Assembly.GetEntryAssembly().GetName().Name;
+            }
+        }
+
+        /// <summary>
+        /// Returns the application (assembly) version
+        /// </summary>
+        protected static Version ApplicationVersion
+        {
+            get
+            {
+                // Assembly.GetEntryAssembly() is null when loading from the
+                // non-default AppDomain.
+                var a = Assembly.GetEntryAssembly();
+                return a != null ? a.GetName().Version : new Version();
+            }
+        }
+
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Program.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Program.cs
@@ -1,44 +1,44 @@
-#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using DbLinq.Factory;
-using DbMetal.Generator;
-
-namespace DbMetal
-{
-    public class Program
-    {
-        public static void Main(string[] args)
-        {
-            // get the default processor...
-            var processor = ObjectFactory.Get<IProcessor>();
-            processor.Log = Console.Out;
-            // ... and process
-            processor.Process(args);
-        }
-    }
-}
+#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using DbLinq.Factory;
+using DbMetal.Generator;
+
+namespace DbMetal
+{
+    public class Program
+    {
+        public static void Main(string[] args)
+        {
+            // get the default processor...
+            var processor = ObjectFactory.Get<IProcessor>();
+            processor.Log = Console.Out;
+            // ... and process
+            processor.Process(args);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Properties/AssemblyInfo.cs
@@ -1,44 +1,44 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Reflection;
-using System.Runtime.InteropServices;
-using DbLinq.Factory;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DbMetal")]
-[assembly: AssemblyDescription("DbLinq DbMetal code generator")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("7ae782c4-e495-44ff-821d-8580dbe184d4")]
-
-[assembly: DbLinq]
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Reflection;
+using System.Runtime.InteropServices;
+using DbLinq.Factory;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DbMetal")]
+[assembly: AssemblyDescription("DbLinq DbMetal code generator")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7ae782c4-e495-44ff-821d-8580dbe184d4")]
+
+[assembly: DbLinq]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Properties/Settings.Designer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Properties/Settings.Designer.cs
@@ -1,26 +1,26 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.4927
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace DbMetal.Properties {
-    
-    
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-        
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-        
-        public static Settings Default {
-            get {
-                return defaultInstance;
-            }
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.4927
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace DbMetal.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Reference.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Reference.cs
@@ -1,38 +1,38 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace DbMetal
-{
-    public static class Reference
-    {
-        /// <summary>
-        /// This method does nothing (as you can see), but forces assembly loading and reference
-        /// </summary>
-        public static void DbLinqLocalizations()
-        {
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace DbMetal
+{
+    public static class Reference
+    {
+        /// <summary>
+        /// This method does nothing (as you can see), but forces assembly loading and reference
+        /// </summary>
+        public static void DbLinqLocalizations()
+        {
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Schema/DbmlRename.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Schema/DbmlRename.cs
@@ -1,203 +1,203 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Linq;
-using System.Xml.Serialization;
-using DbLinq.Vendor;
-
-namespace DbMetal.Schema
-{
-    /// <summary>
-    /// This class main purpose is to allow renamings.
-    /// It is based on DBML format (but simpler).
-    /// </summary>
-    //[XmlRoot("Database")]
-    [XmlRoot("Database", Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007", IsNullable = false)]
-    class DbmlRename : INameAliases
-    {
-        [XmlNamespaceDeclarations]
-        public XmlSerializerNamespaces XmlNamespaceDeclarations { get; set; }
-
-        [XmlAttribute("Name")]
-        public string Name { get; set; }
-
-        [XmlAttribute("Class")]
-        public string Class { get; set; }
-
-        [XmlElement("Table")]
-        public Table[] Tables { get; set; }
-
-        public class Table
-        {
-            [XmlAttribute("Name")]
-            public string Name { get; set; }
-
-            [XmlAttribute("Member")]
-            public string Member { get; set; }
-
-            [XmlElement("Type")]
-            public Type Type { get; set; }
-        }
-
-        public class Type
-        {
-            [XmlAttribute("Name")]
-            public string Name { get; set; }
-
-            [XmlElement("Column")]
-            public Column[] Columns { get; set; }
-        }
-
-        public class Column
-        {
-            [XmlAttribute("Name")]
-            public string Name { get; set; }
-
-            [XmlAttribute("Member")]
-            public string Member { get; set; }
-
-            [XmlAttribute("Storage")]
-            public string Storage { get; set; }
-
-            [XmlAttribute("Type")]
-            public string Type { get; set; }
-
-            [XmlAttribute("IsDbGenerated")]
-            public bool IsDbGeneratedXml
-            {
-                get
-                {
-                    return IsDbGenerated.HasValue ? IsDbGenerated.Value : default(bool);
-                }
-                set
-                {
-                    IsDbGenerated = value;
-                }
-            }
-
-            public bool? IsDbGenerated
-            {
-                get;
-                set;
-            }
-
-            [XmlAttribute("AutoSync")]
-            public DbLinq.Schema.Dbml.AutoSync AutoSyncXml
-            {
-                get
-                {
-                    return AutoSync.HasValue ? AutoSync.Value : DbLinq.Schema.Dbml.AutoSync.Default;
-                }
-                set
-                {
-                    AutoSync = value;
-                }
-            }
-
-            public DbLinq.Schema.Dbml.AutoSync? AutoSync
-            {
-                get;
-                set;
-            }
-        }
-
-        protected Table GetTable(string table, string schema)
-        {
-            string qualifiedName;
-            if (!string.IsNullOrEmpty(schema))
-                qualifiedName = string.Format("{0}.{1}", schema, table);
-            else
-                qualifiedName = table;
-            return (from t in Tables where t.Name == qualifiedName select t).SingleOrDefault();
-        }
-
-        protected Column GetColumn(string column, string table, string schema)
-        {
-            var t = GetTable(table, schema);
-            if (t == null || t.Type == null || t.Type.Columns == null)
-                return null;
-            return (from c in t.Type.Columns where c.Name == column select c).SingleOrDefault();
-        }
-
-        public string GetTableTypeAlias(string table, string schema)
-        {
-            var t = GetTable(table, schema);
-            if (t == null || t.Type == null)
-                return null;
-            return t.Type.Name;
-        }
-
-        public string GetTableMemberAlias(string table, string schema)
-        {
-            var t = GetTable(table, schema);
-            if (t == null)
-                return null;
-            return t.Member;
-        }
-
-        public string GetColumnMemberAlias(string column, string table, string schema)
-        {
-            var c = GetColumn(column, table, schema);
-            if (c == null)
-                return null;
-            return c.Member;
-        }
-
-        public string GetColumnForcedType(string column, string table, string schema)
-        {
-            var c = GetColumn(column, table, schema);
-            if (c == null)
-                return null;
-            return c.Type;
-        }
-
-        public bool? GetColumnGenerated(string column, string table, string schema)
-        {
-            var c = GetColumn(column, table, schema);
-            if (c == null)
-                return null;
-            return c.IsDbGenerated;
-        }
-
-        public DbLinq.Schema.Dbml.AutoSync? GetColumnAutoSync(string column, string table, string schema)
-        {
-            var c = GetColumn(column, table, schema);
-            if (c == null)
-                return null;
-            return c.AutoSync;
-        }
-
-        public string GetDatabaseNameAlias(string databaseName)
-        {
-            return Name;
-        }
-
-        public string GetClassNameAlias(string className)
-        {
-            return Class;
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Linq;
+using System.Xml.Serialization;
+using DbLinq.Vendor;
+
+namespace DbMetal.Schema
+{
+    /// <summary>
+    /// This class main purpose is to allow renamings.
+    /// It is based on DBML format (but simpler).
+    /// </summary>
+    //[XmlRoot("Database")]
+    [XmlRoot("Database", Namespace = "http://schemas.microsoft.com/linqtosql/dbml/2007", IsNullable = false)]
+    class DbmlRename : INameAliases
+    {
+        [XmlNamespaceDeclarations]
+        public XmlSerializerNamespaces XmlNamespaceDeclarations { get; set; }
+
+        [XmlAttribute("Name")]
+        public string Name { get; set; }
+
+        [XmlAttribute("Class")]
+        public string Class { get; set; }
+
+        [XmlElement("Table")]
+        public Table[] Tables { get; set; }
+
+        public class Table
+        {
+            [XmlAttribute("Name")]
+            public string Name { get; set; }
+
+            [XmlAttribute("Member")]
+            public string Member { get; set; }
+
+            [XmlElement("Type")]
+            public Type Type { get; set; }
+        }
+
+        public class Type
+        {
+            [XmlAttribute("Name")]
+            public string Name { get; set; }
+
+            [XmlElement("Column")]
+            public Column[] Columns { get; set; }
+        }
+
+        public class Column
+        {
+            [XmlAttribute("Name")]
+            public string Name { get; set; }
+
+            [XmlAttribute("Member")]
+            public string Member { get; set; }
+
+            [XmlAttribute("Storage")]
+            public string Storage { get; set; }
+
+            [XmlAttribute("Type")]
+            public string Type { get; set; }
+
+            [XmlAttribute("IsDbGenerated")]
+            public bool IsDbGeneratedXml
+            {
+                get
+                {
+                    return IsDbGenerated.HasValue ? IsDbGenerated.Value : default(bool);
+                }
+                set
+                {
+                    IsDbGenerated = value;
+                }
+            }
+
+            public bool? IsDbGenerated
+            {
+                get;
+                set;
+            }
+
+            [XmlAttribute("AutoSync")]
+            public DbLinq.Schema.Dbml.AutoSync AutoSyncXml
+            {
+                get
+                {
+                    return AutoSync.HasValue ? AutoSync.Value : DbLinq.Schema.Dbml.AutoSync.Default;
+                }
+                set
+                {
+                    AutoSync = value;
+                }
+            }
+
+            public DbLinq.Schema.Dbml.AutoSync? AutoSync
+            {
+                get;
+                set;
+            }
+        }
+
+        protected Table GetTable(string table, string schema)
+        {
+            string qualifiedName;
+            if (!string.IsNullOrEmpty(schema))
+                qualifiedName = string.Format("{0}.{1}", schema, table);
+            else
+                qualifiedName = table;
+            return (from t in Tables where t.Name == qualifiedName select t).SingleOrDefault();
+        }
+
+        protected Column GetColumn(string column, string table, string schema)
+        {
+            var t = GetTable(table, schema);
+            if (t == null || t.Type == null || t.Type.Columns == null)
+                return null;
+            return (from c in t.Type.Columns where c.Name == column select c).SingleOrDefault();
+        }
+
+        public string GetTableTypeAlias(string table, string schema)
+        {
+            var t = GetTable(table, schema);
+            if (t == null || t.Type == null)
+                return null;
+            return t.Type.Name;
+        }
+
+        public string GetTableMemberAlias(string table, string schema)
+        {
+            var t = GetTable(table, schema);
+            if (t == null)
+                return null;
+            return t.Member;
+        }
+
+        public string GetColumnMemberAlias(string column, string table, string schema)
+        {
+            var c = GetColumn(column, table, schema);
+            if (c == null)
+                return null;
+            return c.Member;
+        }
+
+        public string GetColumnForcedType(string column, string table, string schema)
+        {
+            var c = GetColumn(column, table, schema);
+            if (c == null)
+                return null;
+            return c.Type;
+        }
+
+        public bool? GetColumnGenerated(string column, string table, string schema)
+        {
+            var c = GetColumn(column, table, schema);
+            if (c == null)
+                return null;
+            return c.IsDbGenerated;
+        }
+
+        public DbLinq.Schema.Dbml.AutoSync? GetColumnAutoSync(string column, string table, string schema)
+        {
+            var c = GetColumn(column, table, schema);
+            if (c == null)
+                return null;
+            return c.AutoSync;
+        }
+
+        public string GetDatabaseNameAlias(string databaseName)
+        {
+            return Name;
+        }
+
+        public string GetClassNameAlias(string className)
+        {
+            return Class;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Schema/DbmlRenameLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Schema/DbmlRenameLoader.cs
@@ -1,50 +1,50 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.IO;
-using System.Xml.Serialization;
-
-namespace DbMetal.Schema
-{
-    /// <summary>
-    /// Loads a DbmlRename class from a DBML file
-    /// </summary>
-    static class DbmlRenameLoader
-    {
-        public static DbmlRename Load(Stream stream)
-        {
-            var xmlReader = new XmlSerializer(typeof(DbmlRename));
-            return (DbmlRename)xmlReader.Deserialize(stream);
-        }
-
-        public static DbmlRename Load(string path)
-        {
-            using (var stream = File.OpenRead(path))
-            {
-                return Load(stream);
-            }
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.IO;
+using System.Xml.Serialization;
+
+namespace DbMetal.Schema
+{
+    /// <summary>
+    /// Loads a DbmlRename class from a DBML file
+    /// </summary>
+    static class DbmlRenameLoader
+    {
+        public static DbmlRename Load(Stream stream)
+        {
+            var xmlReader = new XmlSerializer(typeof(DbmlRename));
+            return (DbmlRename)xmlReader.Deserialize(stream);
+        }
+
+        public static DbmlRename Load(string path)
+        {
+            using (var stream = File.OpenRead(path))
+            {
+                return Load(stream);
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Schema/NameAliasesLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Schema/NameAliasesLoader.cs
@@ -1,54 +1,54 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using DbLinq.Vendor;
-
-namespace DbMetal.Schema
-{
-#if !MONO_STRICT
-    public
-#endif
-    static class NameAliasesLoader
-    {
-        public static INameAliases Load(string path)
-        {
-            if (string.IsNullOrEmpty(path))
-                return null;
-            try
-            {
-                return DbmlRenameLoader.Load(path);
-            }
-            catch { }
-            try
-            {
-                return TableAlias.Load(path);
-            }
-            catch { }
-            throw new ArgumentException("");
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using DbLinq.Vendor;
+
+namespace DbMetal.Schema
+{
+#if !MONO_STRICT
+    public
+#endif
+    static class NameAliasesLoader
+    {
+        public static INameAliases Load(string path)
+        {
+            if (string.IsNullOrEmpty(path))
+                return null;
+            try
+            {
+                return DbmlRenameLoader.Load(path);
+            }
+            catch { }
+            try
+            {
+                return TableAlias.Load(path);
+            }
+            catch { }
+            throw new ArgumentException("");
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Schema/SchemaPostprocess.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Schema/SchemaPostprocess.cs
@@ -1,131 +1,131 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using DbLinq.Schema;
-using DbLinq.Util;
-
-namespace DbMetal.Schema
-{
-    /// <summary>
-    /// this class contains functionality common to all vendors -
-    /// a) rename field Alltypes.Alltypes to Alltypes.Contents
-    /// b) rename field Employees.Employees to Employees.RefersToEmployees
-    /// c) rename field Alltypes.int to Alltypes.int_
-    /// </summary>
-    public class SchemaPostprocess
-    {
-        public static void PostProcess_DB(DbLinq.Schema.Dbml.Database schema)
-        {
-            if (schema == null)
-                return;
-
-            //sort tables, parent tables first
-            // picrap: how useful was this?
-            //TableSorter sorter = new TableSorter(schema.Tables);
-            //schema.Tables.Sort(sorter);
-
-            foreach (var tbl in schema.Tables)
-            {
-                PostProcess_Table(tbl);
-            }
-        }
-
-        public static void PostProcess_Table(DbLinq.Schema.Dbml.Table table)
-        {
-            // picrap: this is processed earlier
-            //table.Member = Util.FormatTableName(table.Type.Name, util.PluralEnum.Pluralize);
-            //table.Type.Name = Util.FormatTableName(table.Type.Name, util.PluralEnum.Singularize);
-
-            //if (mmConfig.renamesFile != null)
-            //{
-            //    table.Member = Util.Rename(table.Member);
-            //}
-
-            foreach (DbLinq.Schema.Dbml.Column col in table.Type.Columns)
-            {
-                if (col.Member == table.Type.Name)
-                    col.Member = "Contents"; //rename field Alltypes.Alltypes to Alltypes.Contents
-
-                // picrap processed earlier
-                //col.Storage = "_" + col.Name;
-
-                // picrap moved to CSCodeWriter
-                //if (CSharp.IsCsharpKeyword(col.Storage))
-                //    col.Storage += "_"; //rename column 'int' -> 'int_'
-
-                //if (CSharp.IsCsharpKeyword(col.Member))
-                //    col.Member += "_"; //rename column 'int' -> 'int_'
-            }
-
-            Dictionary<string, bool> knownAssocs = new Dictionary<string, bool>();
-            foreach (DbLinq.Schema.Dbml.Association assoc in table.Type.Associations)
-            {
-                // picrap: processed earlier
-                //assoc.Type = Util.FormatTableName(assoc.Type, util.PluralEnum.Singularize);
-
-                //util.PluralEnum pluralEnum = assoc.IsForeignKey
-                //    ? util.PluralEnum.Singularize
-                //    : util.PluralEnum.Pluralize;
-
-                //referring to parent: "public Employee Employee" 
-                //referring to child:  "public EntityMSet<Product> Products"
-                //assoc.Member = Util.FormatTableName(assoc.Member, pluralEnum);
-
-                if (assoc.Member == table.Type.Name)
-                {
-                    string thisKey = assoc.ThisKey ?? "_TODO_L35";
-                    //self-join: rename field Employees.Employees to Employees.RefersToEmployees
-                    assoc.Member = thisKey + assoc.Member;
-                }
-
-                if (knownAssocs.ContainsKey(assoc.Member))
-                {
-                    //this is the Andrus test case in Pgsql:
-                    //  create table t1 ( private int primary key);
-                    //  create table t2 ( f1 int references t1, f2 int references t1 );
-
-                    assoc.Member += "_" + assoc.Name;
-
-                }
-
-                // picrap: handled previously
-                //if (mmConfig.renamesFile != null)
-                //{
-                //    assoc.Member = Util.Rename(assoc.Member);
-                //}
-
-                //if (assoc.Member == "employeeterritories" || assoc.Member == "Employeeterritories")
-                //    assoc.Member = "EmployeeTerritories"; //hack to help with Northwind
-
-                knownAssocs[assoc.Member] = true;
-            }
-
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using DbLinq.Schema;
+using DbLinq.Util;
+
+namespace DbMetal.Schema
+{
+    /// <summary>
+    /// this class contains functionality common to all vendors -
+    /// a) rename field Alltypes.Alltypes to Alltypes.Contents
+    /// b) rename field Employees.Employees to Employees.RefersToEmployees
+    /// c) rename field Alltypes.int to Alltypes.int_
+    /// </summary>
+    public class SchemaPostprocess
+    {
+        public static void PostProcess_DB(DbLinq.Schema.Dbml.Database schema)
+        {
+            if (schema == null)
+                return;
+
+            //sort tables, parent tables first
+            // picrap: how useful was this?
+            //TableSorter sorter = new TableSorter(schema.Tables);
+            //schema.Tables.Sort(sorter);
+
+            foreach (var tbl in schema.Tables)
+            {
+                PostProcess_Table(tbl);
+            }
+        }
+
+        public static void PostProcess_Table(DbLinq.Schema.Dbml.Table table)
+        {
+            // picrap: this is processed earlier
+            //table.Member = Util.FormatTableName(table.Type.Name, util.PluralEnum.Pluralize);
+            //table.Type.Name = Util.FormatTableName(table.Type.Name, util.PluralEnum.Singularize);
+
+            //if (mmConfig.renamesFile != null)
+            //{
+            //    table.Member = Util.Rename(table.Member);
+            //}
+
+            foreach (DbLinq.Schema.Dbml.Column col in table.Type.Columns)
+            {
+                if (col.Member == table.Type.Name)
+                    col.Member = "Contents"; //rename field Alltypes.Alltypes to Alltypes.Contents
+
+                // picrap processed earlier
+                //col.Storage = "_" + col.Name;
+
+                // picrap moved to CSCodeWriter
+                //if (CSharp.IsCsharpKeyword(col.Storage))
+                //    col.Storage += "_"; //rename column 'int' -> 'int_'
+
+                //if (CSharp.IsCsharpKeyword(col.Member))
+                //    col.Member += "_"; //rename column 'int' -> 'int_'
+            }
+
+            Dictionary<string, bool> knownAssocs = new Dictionary<string, bool>();
+            foreach (DbLinq.Schema.Dbml.Association assoc in table.Type.Associations)
+            {
+                // picrap: processed earlier
+                //assoc.Type = Util.FormatTableName(assoc.Type, util.PluralEnum.Singularize);
+
+                //util.PluralEnum pluralEnum = assoc.IsForeignKey
+                //    ? util.PluralEnum.Singularize
+                //    : util.PluralEnum.Pluralize;
+
+                //referring to parent: "public Employee Employee" 
+                //referring to child:  "public EntityMSet<Product> Products"
+                //assoc.Member = Util.FormatTableName(assoc.Member, pluralEnum);
+
+                if (assoc.Member == table.Type.Name)
+                {
+                    string thisKey = assoc.ThisKey ?? "_TODO_L35";
+                    //self-join: rename field Employees.Employees to Employees.RefersToEmployees
+                    assoc.Member = thisKey + assoc.Member;
+                }
+
+                if (knownAssocs.ContainsKey(assoc.Member))
+                {
+                    //this is the Andrus test case in Pgsql:
+                    //  create table t1 ( private int primary key);
+                    //  create table t2 ( f1 int references t1, f2 int references t1 );
+
+                    assoc.Member += "_" + assoc.Name;
+
+                }
+
+                // picrap: handled previously
+                //if (mmConfig.renamesFile != null)
+                //{
+                //    assoc.Member = Util.Rename(assoc.Member);
+                //}
+
+                //if (assoc.Member == "employeeterritories" || assoc.Member == "Employeeterritories")
+                //    assoc.Member = "EmployeeTerritories"; //hack to help with Northwind
+
+                knownAssocs[assoc.Member] = true;
+            }
+
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Schema/TableAlias.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Schema/TableAlias.cs
@@ -1,142 +1,142 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Xml.Serialization;
-using DbLinq.Vendor;
-using DbMetal;
-
-namespace DbMetal.Schema
-{
-#if !MONO_STRICT
-    public
-#endif
-    class TableAlias
-    {
-        public class Renamings : INameAliases
-        {
-            [XmlAttribute("Name")]
-            public string Name { get; set; }
-
-            [XmlAttribute("Class")]
-            public string Class { get; set; }
-
-            [XmlElement("Renaming")]
-            public readonly List<Renaming> Arr = new List<Renaming>();
-
-            protected string GetAlias(string name)
-            {
-                return (from r in Arr where r.old == name select r.@new).SingleOrDefault();
-            }
-
-            public string GetTableTypeAlias(string table, string schema)
-            {
-                return GetAlias(table);
-            }
-
-            public string GetTableMemberAlias(string table, string schema)
-            {
-                return null;
-            }
-
-            public string GetColumnMemberAlias(string column, string table, string schema)
-            {
-                return GetAlias(column);
-            }
-
-            public string GetColumnForcedType(string column, string table, string schema)
-            {
-                return null;
-            }
-
-            public bool? GetColumnGenerated(string column, string table, string schema)
-            {
-                return null;
-            }
-
-            public DbLinq.Schema.Dbml.AutoSync? GetColumnAutoSync(string column, string table, string schema)
-            {
-                return null;
-            }
-
-            public string GetDatabaseNameAlias(string databaseName)
-            {
-                return Name;
-            }
-
-            public string GetClassNameAlias(string className)
-            {
-                return Class;
-            }
-        }
-
-        public class Renaming
-        {
-            [XmlAttribute]
-            public string old;
-            [XmlAttribute]
-            public string @new;
-        }
-
-        public static Renamings Load(string fileName)
-        {
-            using (var stream = File.OpenRead(fileName))
-            {
-                var renamingsXmlSerializer = new XmlSerializer(typeof(Renamings));
-                var renamings = (Renamings)renamingsXmlSerializer.Deserialize(stream);
-                return renamings;
-            }
-        }
-
-        public static IDictionary<string, string> Load(string fileName, Parameters parameters)
-        {
-            if (!System.IO.File.Exists(fileName))
-                throw new ArgumentException("Renames file missing:" + parameters.Aliases);
-
-            Console.WriteLine("Loading renames file: " + fileName);
-
-            Renamings renamings = Load(parameters.Aliases);
-
-            Dictionary<string, string> aliases = new Dictionary<string, string>();
-            foreach (Renaming renaming in renamings.Arr)
-            {
-                aliases[renaming.old] = renaming.@new;
-            }
-            return aliases;
-        }
-
-        public static IDictionary<string, string> Load(Parameters parameters)
-        {
-            if (parameters.Aliases == null)
-                return new Dictionary<string, string>();
-            return Load(parameters.Aliases, parameters);
-        }
-
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Xml.Serialization;
+using DbLinq.Vendor;
+using DbMetal;
+
+namespace DbMetal.Schema
+{
+#if !MONO_STRICT
+    public
+#endif
+    class TableAlias
+    {
+        public class Renamings : INameAliases
+        {
+            [XmlAttribute("Name")]
+            public string Name { get; set; }
+
+            [XmlAttribute("Class")]
+            public string Class { get; set; }
+
+            [XmlElement("Renaming")]
+            public readonly List<Renaming> Arr = new List<Renaming>();
+
+            protected string GetAlias(string name)
+            {
+                return (from r in Arr where r.old == name select r.@new).SingleOrDefault();
+            }
+
+            public string GetTableTypeAlias(string table, string schema)
+            {
+                return GetAlias(table);
+            }
+
+            public string GetTableMemberAlias(string table, string schema)
+            {
+                return null;
+            }
+
+            public string GetColumnMemberAlias(string column, string table, string schema)
+            {
+                return GetAlias(column);
+            }
+
+            public string GetColumnForcedType(string column, string table, string schema)
+            {
+                return null;
+            }
+
+            public bool? GetColumnGenerated(string column, string table, string schema)
+            {
+                return null;
+            }
+
+            public DbLinq.Schema.Dbml.AutoSync? GetColumnAutoSync(string column, string table, string schema)
+            {
+                return null;
+            }
+
+            public string GetDatabaseNameAlias(string databaseName)
+            {
+                return Name;
+            }
+
+            public string GetClassNameAlias(string className)
+            {
+                return Class;
+            }
+        }
+
+        public class Renaming
+        {
+            [XmlAttribute]
+            public string old;
+            [XmlAttribute]
+            public string @new;
+        }
+
+        public static Renamings Load(string fileName)
+        {
+            using (var stream = File.OpenRead(fileName))
+            {
+                var renamingsXmlSerializer = new XmlSerializer(typeof(Renamings));
+                var renamings = (Renamings)renamingsXmlSerializer.Deserialize(stream);
+                return renamings;
+            }
+        }
+
+        public static IDictionary<string, string> Load(string fileName, Parameters parameters)
+        {
+            if (!System.IO.File.Exists(fileName))
+                throw new ArgumentException("Renames file missing:" + parameters.Aliases);
+
+            Console.WriteLine("Loading renames file: " + fileName);
+
+            Renamings renamings = Load(parameters.Aliases);
+
+            Dictionary<string, string> aliases = new Dictionary<string, string>();
+            foreach (Renaming renaming in renamings.Arr)
+            {
+                aliases[renaming.old] = renaming.@new;
+            }
+            return aliases;
+        }
+
+        public static IDictionary<string, string> Load(Parameters parameters)
+        {
+            if (parameters.Aliases == null)
+                return new Dictionary<string, string>();
+            return Load(parameters.Aliases, parameters);
+        }
+
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Test/AppRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Test/AppRunner.cs
@@ -1,108 +1,108 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2010 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using DbMetal;
-using NUnit.Framework;
-
-namespace DbMetal_Test_Sqlite
-{
-    class DbMetalAppDomainSetup : MarshalByRefObject
-    {
-        public void SetStandardError(TextWriter stderr)
-        {
-            Console.SetError(stderr);
-        }
-
-        public void Run(string[] args)
-        {
-            Program.Main(args);
-        }
-    }
-
-    static class AppRunner
-    {
-#if MONO_STRICT
-        const string Program                = "sqlmetal";
-        const string DbConnectionProvider   = "Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite";
-        const string DbLinqSchemaLoader     = "DbLinq.Vendor.DbSchemaLoader, System.Data.Linq";
-        const string SqlDialect             = "DbLinq.Sqlite.SqliteVendor, System.Data.Linq";
-#else
-        const string Program                = "DbMetal";
-        const string DbConnectionProvider   = "System.Data.SQLite.SQLiteConnection, System.Data.SQLite";
-        const string DbLinqSchemaLoader     = "DbLinq.Vendor.DbSchemaLoader, DbLinq";
-        const string SqlDialect             = "DbLinq.Sqlite.SqliteVendor, DbLinq.Sqlite";
-#endif
-
-        public static void WithinAppDomain(string expectedFile, string createdFile, IEnumerable<string> args)
-        {
-            var bd = AppDomain.CurrentDomain.BaseDirectory;
-            var info = new AppDomainSetup()
-            {
-                ApplicationBase     = bd,
-                ApplicationName     = Program + ".exe",
-                ConfigurationFile   = Program + ".exe.config",
-            };
-            AppDomain ad = AppDomain.CreateDomain("DbMetal Sqlite Test", null, info);
-            var t = typeof(DbMetalAppDomainSetup);
-            var s = (DbMetalAppDomainSetup)ad.CreateInstanceAndUnwrap(t.Assembly.GetName().Name, t.FullName);
-            var stderr = new StringWriter();
-            s.SetStandardError(stderr);
-            var testdir = Path.Combine(bd, Path.Combine("..", "tests"));
-            var expectedDir = Path.Combine(testdir, "expected");
-            s.Run(new []{
-                "/provider:Sqlite",
-                "/conn:Data Source=" + Path.Combine(testdir, "Northwind.db3"),
-            }.Concat(args).ToArray());
-            AppDomain.Unload(ad);
-            if (stderr.GetStringBuilder().Length != 0)
-                Console.Error.Write(stderr.GetStringBuilder().ToString());
-            Assert.AreEqual(0, stderr.GetStringBuilder().Length);
-            FileAssert.AreEqual(Path.Combine(expectedDir, string.Format (expectedFile, Program)), createdFile);
-            File.Delete(createdFile);
-        }
-
-        public static void WithDbSchemaLoader(string expectedFile, string createdFile, IEnumerable<string> args)
-        {
-            var bd = AppDomain.CurrentDomain.BaseDirectory;
-            var testdir = Path.Combine(bd, Path.Combine("..", "tests"));
-            var expectedDir = Path.Combine(testdir, "expected");
-
-            DbMetal.Program.Main(new []{
-                "/conn:Data Source=" + Path.Combine(testdir, "Northwind.db3"),
-                "--with-dbconnection=" + DbConnectionProvider,
-                "--with-schema-loader=" + DbLinqSchemaLoader,
-                "--with-sql-dialect=" + SqlDialect,
-            }.Concat(args).ToArray());
-
-            FileAssert.AreEqual(Path.Combine(expectedDir, string.Format(expectedFile, Program)), createdFile);
-            File.Delete(createdFile);
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2010 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using DbMetal;
+using NUnit.Framework;
+
+namespace DbMetal_Test_Sqlite
+{
+    class DbMetalAppDomainSetup : MarshalByRefObject
+    {
+        public void SetStandardError(TextWriter stderr)
+        {
+            Console.SetError(stderr);
+        }
+
+        public void Run(string[] args)
+        {
+            Program.Main(args);
+        }
+    }
+
+    static class AppRunner
+    {
+#if MONO_STRICT
+        const string Program                = "sqlmetal";
+        const string DbConnectionProvider   = "Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite";
+        const string DbLinqSchemaLoader     = "DbLinq.Vendor.DbSchemaLoader, System.Data.Linq";
+        const string SqlDialect             = "DbLinq.Sqlite.SqliteVendor, System.Data.Linq";
+#else
+        const string Program                = "DbMetal";
+        const string DbConnectionProvider   = "System.Data.SQLite.SQLiteConnection, System.Data.SQLite";
+        const string DbLinqSchemaLoader     = "DbLinq.Vendor.DbSchemaLoader, DbLinq";
+        const string SqlDialect             = "DbLinq.Sqlite.SqliteVendor, DbLinq.Sqlite";
+#endif
+
+        public static void WithinAppDomain(string expectedFile, string createdFile, IEnumerable<string> args)
+        {
+            var bd = AppDomain.CurrentDomain.BaseDirectory;
+            var info = new AppDomainSetup()
+            {
+                ApplicationBase     = bd,
+                ApplicationName     = Program + ".exe",
+                ConfigurationFile   = Program + ".exe.config",
+            };
+            AppDomain ad = AppDomain.CreateDomain("DbMetal Sqlite Test", null, info);
+            var t = typeof(DbMetalAppDomainSetup);
+            var s = (DbMetalAppDomainSetup)ad.CreateInstanceAndUnwrap(t.Assembly.GetName().Name, t.FullName);
+            var stderr = new StringWriter();
+            s.SetStandardError(stderr);
+            var testdir = Path.Combine(bd, Path.Combine("..", "tests"));
+            var expectedDir = Path.Combine(testdir, "expected");
+            s.Run(new []{
+                "/provider:Sqlite",
+                "/conn:Data Source=" + Path.Combine(testdir, "Northwind.db3"),
+            }.Concat(args).ToArray());
+            AppDomain.Unload(ad);
+            if (stderr.GetStringBuilder().Length != 0)
+                Console.Error.Write(stderr.GetStringBuilder().ToString());
+            Assert.AreEqual(0, stderr.GetStringBuilder().Length);
+            FileAssert.AreEqual(Path.Combine(expectedDir, string.Format (expectedFile, Program)), createdFile);
+            File.Delete(createdFile);
+        }
+
+        public static void WithDbSchemaLoader(string expectedFile, string createdFile, IEnumerable<string> args)
+        {
+            var bd = AppDomain.CurrentDomain.BaseDirectory;
+            var testdir = Path.Combine(bd, Path.Combine("..", "tests"));
+            var expectedDir = Path.Combine(testdir, "expected");
+
+            DbMetal.Program.Main(new []{
+                "/conn:Data Source=" + Path.Combine(testdir, "Northwind.db3"),
+                "--with-dbconnection=" + DbConnectionProvider,
+                "--with-schema-loader=" + DbLinqSchemaLoader,
+                "--with-sql-dialect=" + SqlDialect,
+            }.Concat(args).ToArray());
+
+            FileAssert.AreEqual(Path.Combine(expectedDir, string.Format(expectedFile, Program)), createdFile);
+            File.Delete(createdFile);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Test/CreateDbmlFromSqliteDbTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Test/CreateDbmlFromSqliteDbTest.cs
@@ -1,55 +1,55 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2010 Novell, Inc.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.IO;
-using DbMetal;
-using NUnit.Framework;
-
-namespace DbMetal_Test_Sqlite
-{
-    [TestFixture]
-    public class CreateDbmlFromSqliteDbTest
-    {
-        [Test]
-        public void CreateViaProvider()
-        {
-            var created = "Northwind.dbml";
-            AppRunner.WithinAppDomain("Northwind.Sqlite-{0}.dbml", created, new[]{
-                "/dbml:" + created,
-            });
-        }
-
-        [Test]
-        public void CreateViaDbSchemaLoader()
-        {
-            var created = "Northwind.dbml";
-            AppRunner.WithDbSchemaLoader("Northwind.Sqlite+DbSchemaLoader-{0}.dbml", created, new[]{
-                "/dbml:" + created,
-            });
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2010 Novell, Inc.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.IO;
+using DbMetal;
+using NUnit.Framework;
+
+namespace DbMetal_Test_Sqlite
+{
+    [TestFixture]
+    public class CreateDbmlFromSqliteDbTest
+    {
+        [Test]
+        public void CreateViaProvider()
+        {
+            var created = "Northwind.dbml";
+            AppRunner.WithinAppDomain("Northwind.Sqlite-{0}.dbml", created, new[]{
+                "/dbml:" + created,
+            });
+        }
+
+        [Test]
+        public void CreateViaDbSchemaLoader()
+        {
+            var created = "Northwind.dbml";
+            AppRunner.WithDbSchemaLoader("Northwind.Sqlite+DbSchemaLoader-{0}.dbml", created, new[]{
+                "/dbml:" + created,
+            });
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Test/CreateEntitiesFromSqliteDbTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Test/CreateEntitiesFromSqliteDbTest.cs
@@ -1,65 +1,65 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System;
-using System.IO;
-using DbMetal;
-using NUnit.Framework;
-
-namespace DbMetal_Test_Sqlite
-{
-    [TestFixture]
-    public class CreateEntitiesFromSqliteDbTest
-    {
-        [Test]
-        public void CreateViaProvider()
-        {
-            var created = "Northwind.Sqlite.cs";
-            AppRunner.WithinAppDomain("Northwind.Sqlite-{0}.cs", created, new[]{
-                "/code:" + created,
-                "/database:Northwind",
-                "--generate-equals-hash",
-                "--generate-timestamps-",
-                "/namespace:nwind",
-                "/pluralize",
-            });
-        }
-
-        [Test]
-        public void CreateViaDbSchemaLoader()
-        {
-            var created = "Northwind.Sqlite.cs";
-            AppRunner.WithDbSchemaLoader("Northwind.Sqlite+DbSchemaLoader-{0}.cs", created, new[]{
-                "/code:" + created,
-                "/database:Northwind",
-                "--generate-equals-hash",
-                "--generate-timestamps-",
-                "/namespace:nwind",
-                "/pluralize",
-            });
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System;
+using System.IO;
+using DbMetal;
+using NUnit.Framework;
+
+namespace DbMetal_Test_Sqlite
+{
+    [TestFixture]
+    public class CreateEntitiesFromSqliteDbTest
+    {
+        [Test]
+        public void CreateViaProvider()
+        {
+            var created = "Northwind.Sqlite.cs";
+            AppRunner.WithinAppDomain("Northwind.Sqlite-{0}.cs", created, new[]{
+                "/code:" + created,
+                "/database:Northwind",
+                "--generate-equals-hash",
+                "--generate-timestamps-",
+                "/namespace:nwind",
+                "/pluralize",
+            });
+        }
+
+        [Test]
+        public void CreateViaDbSchemaLoader()
+        {
+            var created = "Northwind.Sqlite.cs";
+            AppRunner.WithDbSchemaLoader("Northwind.Sqlite+DbSchemaLoader-{0}.cs", created, new[]{
+                "/code:" + created,
+                "/database:Northwind",
+                "--generate-equals-hash",
+                "--generate-timestamps-",
+                "/namespace:nwind",
+                "/pluralize",
+            });
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Test/EnglishWordsTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Test/EnglishWordsTest.cs
@@ -1,172 +1,172 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using DbMetal.Language;
-using System.Collections.Generic;
-using NUnit.Framework;
-
-// These don't build in tools/sqlmetal
-#if FALSE
-
-namespace DbLinqTest
-{
-
-
-    /// <summary>
-    ///This is a test class for EnglishWordsTest and is intended
-    ///to contain all EnglishWordsTest Unit Tests
-    ///</summary>
-    [TestFixture]
-    public class EnglishWordsTest
-    {
-        public EnglishWordsTest()
-        {
-            englishWords = new EnglishWords();
-            englishWords.Load();
-        }
-
-        public static void AssertAreIListEqual(IList<string> a, IList<string> b)
-        {
-            Assert.AreEqual(b.Count, a.Count);
-            for (int index = 0; index < a.Count; index++)
-                Assert.AreEqual(b[index], a[index]);
-        }
-
-        public static void AssertAreEqual(IList<string> a, params string[] b)
-        {
-            AssertAreIListEqual(a, b);
-        }
-
-        /*
-        hiredate
-        quantityperunit
-        unitsinstock
-        fkterrregion
-        fkprodcatg
-        */
-
-        private EnglishWords englishWords;
-
-        [Test]
-        public void GetWordsTest_HelloWorld()
-        {
-            var actual = englishWords.GetWords("helloworld");
-            AssertAreEqual(actual, "hello", "world");
-        }
-
-        [Test]
-        public void GetWordsTest_HireDate()
-        {
-            var actual = englishWords.GetWords("hiredate");
-            AssertAreEqual(actual, "hire", "date");
-        }
-
-        [Test]
-        public void GetWordsTest_QuantityPerUnit()
-        {
-            var actual = englishWords.GetWords("quantityperunit");
-            AssertAreEqual(actual, "quantity", "per", "unit");
-        }
-
-        [Test]
-        public void GetWordsTest_UnitsInStock()
-        {
-            var actual = englishWords.GetWords("unitsinstock");
-            AssertAreEqual(actual, "units", "in", "stock");
-        }
-        // we can't rely on this test, since "terr" is not a word, so the algorithm returs "ft" "t" "err" "region"
-        //[Test]
-        //public void GetWords4Test()
-        //{
-        //    var actual = englishWords.GetWords("fkterrregion");
-        //    AssertAreEqual(actual, "fk", "terr", "region");
-        //}
-        [Test]
-        public void GetWordsTest_FkProdCatG()
-        {
-            var actual = englishWords.GetWords("fkprodcatg");
-            AssertAreEqual(actual, "fk", "prod", "cat", "g");
-        }
-
-        [Test]
-        public void GetWordsTest_CatG()
-        {
-            var actual = englishWords.GetWords("catg");
-            AssertAreEqual(actual, "cat", "g");
-        }
-
-        [Test]
-        public void GetWordsTest_CustomerId()
-        {
-            var actual = englishWords.GetWords("customerid");
-            AssertAreEqual(actual, "customer", "id");
-        }
-
-        [Test]
-        public void GetWordsTest_SupplierId()
-        {
-            var actual = englishWords.GetWords("supplierid");
-            AssertAreEqual(actual, "supplier", "id");
-        }
-
-        // picrap: this one's failing, and I think we're at the limits of words recognition
-        // (at least at the limits of what I'm able to do)
-        //[TestMethod]
-        //[Test]
-        //public void GetWordsTest_IntType()
-        //{
-        //    var actual = englishWords.GetWords("inttype");
-        //    AssertAreEqual(actual, "int", "type");
-        //}
-
-        [Test]
-        public void GetWordsTest_AllIntType()
-        {
-            var actual = englishWords.GetWords("allinttype");
-            AssertAreEqual(actual, "all", "int", "type");
-        }
-
-        [Test]
-        public void GetNoteTest_ToothPaste()
-        {
-            Assert.IsTrue(englishWords.GetNote(new[] { "toothpaste" }) > englishWords.GetNote(new[] { "tooth", "paste" }));
-        }
-
-        [Test]
-        public void GetNoteTest_PerUnit()
-        {
-            Assert.IsTrue(englishWords.GetNote(new[] { "per", "unit" }) > englishWords.GetNote(new[] { "peru", "nit" }));
-        }
-
-        [Test]
-        public void GetNoteTest_Hello()
-        {
-            Assert.IsTrue(englishWords.GetNote(new[] { "hello" }) > englishWords.GetNote(new[] { "h", "e", "l", "l", "o" }));
-        }
-    }
-}
-
-#endif
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using DbMetal.Language;
+using System.Collections.Generic;
+using NUnit.Framework;
+
+// These don't build in tools/sqlmetal
+#if FALSE
+
+namespace DbLinqTest
+{
+
+
+    /// <summary>
+    ///This is a test class for EnglishWordsTest and is intended
+    ///to contain all EnglishWordsTest Unit Tests
+    ///</summary>
+    [TestFixture]
+    public class EnglishWordsTest
+    {
+        public EnglishWordsTest()
+        {
+            englishWords = new EnglishWords();
+            englishWords.Load();
+        }
+
+        public static void AssertAreIListEqual(IList<string> a, IList<string> b)
+        {
+            Assert.AreEqual(b.Count, a.Count);
+            for (int index = 0; index < a.Count; index++)
+                Assert.AreEqual(b[index], a[index]);
+        }
+
+        public static void AssertAreEqual(IList<string> a, params string[] b)
+        {
+            AssertAreIListEqual(a, b);
+        }
+
+        /*
+        hiredate
+        quantityperunit
+        unitsinstock
+        fkterrregion
+        fkprodcatg
+        */
+
+        private EnglishWords englishWords;
+
+        [Test]
+        public void GetWordsTest_HelloWorld()
+        {
+            var actual = englishWords.GetWords("helloworld");
+            AssertAreEqual(actual, "hello", "world");
+        }
+
+        [Test]
+        public void GetWordsTest_HireDate()
+        {
+            var actual = englishWords.GetWords("hiredate");
+            AssertAreEqual(actual, "hire", "date");
+        }
+
+        [Test]
+        public void GetWordsTest_QuantityPerUnit()
+        {
+            var actual = englishWords.GetWords("quantityperunit");
+            AssertAreEqual(actual, "quantity", "per", "unit");
+        }
+
+        [Test]
+        public void GetWordsTest_UnitsInStock()
+        {
+            var actual = englishWords.GetWords("unitsinstock");
+            AssertAreEqual(actual, "units", "in", "stock");
+        }
+        // we can't rely on this test, since "terr" is not a word, so the algorithm returs "ft" "t" "err" "region"
+        //[Test]
+        //public void GetWords4Test()
+        //{
+        //    var actual = englishWords.GetWords("fkterrregion");
+        //    AssertAreEqual(actual, "fk", "terr", "region");
+        //}
+        [Test]
+        public void GetWordsTest_FkProdCatG()
+        {
+            var actual = englishWords.GetWords("fkprodcatg");
+            AssertAreEqual(actual, "fk", "prod", "cat", "g");
+        }
+
+        [Test]
+        public void GetWordsTest_CatG()
+        {
+            var actual = englishWords.GetWords("catg");
+            AssertAreEqual(actual, "cat", "g");
+        }
+
+        [Test]
+        public void GetWordsTest_CustomerId()
+        {
+            var actual = englishWords.GetWords("customerid");
+            AssertAreEqual(actual, "customer", "id");
+        }
+
+        [Test]
+        public void GetWordsTest_SupplierId()
+        {
+            var actual = englishWords.GetWords("supplierid");
+            AssertAreEqual(actual, "supplier", "id");
+        }
+
+        // picrap: this one's failing, and I think we're at the limits of words recognition
+        // (at least at the limits of what I'm able to do)
+        //[TestMethod]
+        //[Test]
+        //public void GetWordsTest_IntType()
+        //{
+        //    var actual = englishWords.GetWords("inttype");
+        //    AssertAreEqual(actual, "int", "type");
+        //}
+
+        [Test]
+        public void GetWordsTest_AllIntType()
+        {
+            var actual = englishWords.GetWords("allinttype");
+            AssertAreEqual(actual, "all", "int", "type");
+        }
+
+        [Test]
+        public void GetNoteTest_ToothPaste()
+        {
+            Assert.IsTrue(englishWords.GetNote(new[] { "toothpaste" }) > englishWords.GetNote(new[] { "tooth", "paste" }));
+        }
+
+        [Test]
+        public void GetNoteTest_PerUnit()
+        {
+            Assert.IsTrue(englishWords.GetNote(new[] { "per", "unit" }) > englishWords.GetNote(new[] { "peru", "nit" }));
+        }
+
+        [Test]
+        public void GetNoteTest_Hello()
+        {
+            Assert.IsTrue(englishWords.GetNote(new[] { "hello" }) > englishWords.GetNote(new[] { "h", "e", "l", "l", "o" }));
+        }
+    }
+}
+
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Test/FrenchWordsTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Test/FrenchWordsTest.cs
@@ -1,117 +1,117 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using DbMetal.Language;
-using System.Collections.Generic;
-using NUnit.Framework;
-
-// These don't build in tools/sqlmetal
-#if FALSE
-
-namespace DbLinqTest
-{
-
-
-    /// <summary>
-    ///This is a test class for EnglishWordsTest and is intended
-    ///to contain all EnglishWordsTest Unit Tests
-    ///</summary>
-    [TestFixture]
-    public class FrenchWordsTest
-    {
-        public FrenchWordsTest()
-        {
-            frenchWords = new FrenchWords();
-            frenchWords.Load();
-        }
-
-        public static void AssertAreIListEqual(IList<string> a, IList<string> b)
-        {
-            Assert.AreEqual(b.Count, a.Count);
-            for (int index = 0; index < a.Count; index++)
-                Assert.AreEqual(b[index], a[index]);
-        }
-
-        public static void AssertAreEqual(IList<string> a, params string[] b)
-        {
-            AssertAreIListEqual(a, b);
-        }
-
-        /*
-        hiredate
-        quantityperunit
-        unitsinstock
-        fkterrregion
-        fkprodcatg
-        */
-
-        private FrenchWords frenchWords;
-
-        [Test]
-        public void GetWordsTest_SalutMonde()
-        {
-            var actual = frenchWords.GetWords("salutmonde");
-            AssertAreEqual(actual, "salut", "monde");
-        }
-
-        [Test]
-        public void GetWordsTest_MTER()
-        {
-            var actual = frenchWords.GetWords("montailleurestriche");
-            AssertAreEqual(actual, "mon", "tailleur", "est", "riche");
-        }
-
-        [Test]
-        public void PluralizeTest_Oeuf()
-        {
-            var actual = frenchWords.Pluralize("œuf");
-            Assert.AreEqual("œufs", actual);
-        }
-
-        [Test]
-        public void PluralizeTest_Bijou()
-        {
-            var actual = frenchWords.Pluralize("bijou");
-            Assert.AreEqual("bijoux", actual);
-        }
-
-        [Test]
-        public void PluralizeTest_Cou()
-        {
-            var actual = frenchWords.Pluralize("cou");
-            Assert.AreEqual("cous", actual);
-        }
-
-        [Test]
-        public void PluralizeTest_Gas()
-        {
-            var actual = frenchWords.Pluralize("gas");
-            Assert.AreEqual("gas", actual);
-        }
-    }
-}
-
-#endif
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using DbMetal.Language;
+using System.Collections.Generic;
+using NUnit.Framework;
+
+// These don't build in tools/sqlmetal
+#if FALSE
+
+namespace DbLinqTest
+{
+
+
+    /// <summary>
+    ///This is a test class for EnglishWordsTest and is intended
+    ///to contain all EnglishWordsTest Unit Tests
+    ///</summary>
+    [TestFixture]
+    public class FrenchWordsTest
+    {
+        public FrenchWordsTest()
+        {
+            frenchWords = new FrenchWords();
+            frenchWords.Load();
+        }
+
+        public static void AssertAreIListEqual(IList<string> a, IList<string> b)
+        {
+            Assert.AreEqual(b.Count, a.Count);
+            for (int index = 0; index < a.Count; index++)
+                Assert.AreEqual(b[index], a[index]);
+        }
+
+        public static void AssertAreEqual(IList<string> a, params string[] b)
+        {
+            AssertAreIListEqual(a, b);
+        }
+
+        /*
+        hiredate
+        quantityperunit
+        unitsinstock
+        fkterrregion
+        fkprodcatg
+        */
+
+        private FrenchWords frenchWords;
+
+        [Test]
+        public void GetWordsTest_SalutMonde()
+        {
+            var actual = frenchWords.GetWords("salutmonde");
+            AssertAreEqual(actual, "salut", "monde");
+        }
+
+        [Test]
+        public void GetWordsTest_MTER()
+        {
+            var actual = frenchWords.GetWords("montailleurestriche");
+            AssertAreEqual(actual, "mon", "tailleur", "est", "riche");
+        }
+
+        [Test]
+        public void PluralizeTest_Oeuf()
+        {
+            var actual = frenchWords.Pluralize("œuf");
+            Assert.AreEqual("œufs", actual);
+        }
+
+        [Test]
+        public void PluralizeTest_Bijou()
+        {
+            var actual = frenchWords.Pluralize("bijou");
+            Assert.AreEqual("bijoux", actual);
+        }
+
+        [Test]
+        public void PluralizeTest_Cou()
+        {
+            var actual = frenchWords.Pluralize("cou");
+            Assert.AreEqual("cous", actual);
+        }
+
+        [Test]
+        public void PluralizeTest_Gas()
+        {
+            var actual = frenchWords.Pluralize("gas");
+            Assert.AreEqual("gas", actual);
+        }
+    }
+}
+
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Test/NameFormatterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Test/NameFormatterTest.cs
@@ -1,161 +1,161 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-using System.Globalization;
-using DbLinq;
-using DbLinq.Factory;
-using DbLinq.Schema;
-using DbLinq.Schema.Implementation;
-using DbLinq.Util;
-using DbMetal;
-using DbMetal.Language;
-using NUnit.Framework;
-
-// These don't build in tools/sqlmetal
-#if FALSE
-
-using Case = DbLinq.Schema.Case;
-using WordsExtraction = DbLinq.Schema.WordsExtraction;
-
-namespace DbLinqTest
-{
-    /// <summary>
-    /// Test for NameFormatter
-    /// </summary>
-    [TestFixture]
-    public class NameFormatterTest
-    {
-        private NameFormat InvariantNameFormat
-        {
-            get
-            {
-                return new NameFormat(false, Case.PascalCase, CultureInfo.InvariantCulture);
-            }
-        }
-
-        private NameFormat EnglishNameFormat
-        {
-            get
-            {
-                Reference.DbLinqLocalizations();
-                return new NameFormat(false, Case.NetCase, new CultureInfo("en-us"));
-            }
-        }
-
-        private NameFormat EnglishNameFormatCamelCase
-        {
-            get
-            {
-                Reference.DbLinqLocalizations();
-                return new NameFormat(false, Case.camelCase, new CultureInfo("en-us"));
-            }
-        }
-
-        [Test]
-        public void InvalidCharactersCaseTest()
-        {
-            var nf = new NameFormatter();
-            var tn = nf.GetTableName("A#?", WordsExtraction.FromCase, InvariantNameFormat);
-            Assert.AreEqual("A__", tn.ClassName);
-        }
-
-        [Test]
-        public void InvalidCharactersLanguageTest()
-        {
-            var nf = new NameFormatter();
-            var tn = nf.GetTableName("A#?", WordsExtraction.FromDictionary, InvariantNameFormat);
-            Assert.AreEqual("A__", tn.ClassName);
-        }
-
-        [Test]
-        public void InvalidCharactersLanguage2Test()
-        {
-            try
-            {
-                ObjectFactory.Current.Register(typeof(EnglishWords));
-                var nf = new NameFormatter();
-                var tn = nf.GetTableName("Test#?", WordsExtraction.FromDictionary, EnglishNameFormat);
-                Assert.AreEqual("Test__", tn.ClassName);
-            }
-            finally
-            {
-                ObjectFactory.Current.Unregister(typeof(EnglishWords));
-            }
-        }
-
-        [Test]
-        public void GetWordsTest_MyTableName()
-        {
-            try
-            {
-                ObjectFactory.Current.Register(typeof(EnglishWords));
-                var nf = new NameFormatter();
-                var tn = nf.GetTableName("MY_TABLE_NAME_", WordsExtraction.FromDictionary, EnglishNameFormat);
-                Assert.AreEqual("MyTableName", tn.ClassName);
-            }
-            finally
-            {
-                ObjectFactory.Current.Unregister(typeof(EnglishWords));
-            }
-        }
-
-        [Test]
-        public void GetWordsTest_MyTableName2()
-        {
-            try
-            {
-                ObjectFactory.Current.Register(typeof(EnglishWords));
-                var nf = new NameFormatter();
-                var tn = nf.GetTableName("_MY_TABLE__NAME", WordsExtraction.FromDictionary, EnglishNameFormat);
-                Assert.AreEqual("MyTableName", tn.ClassName);
-            }
-            finally
-            {
-                ObjectFactory.Current.Unregister(typeof(EnglishWords));
-            }
-        }
-
-        [Test]
-        public void GetWordsTest_MyColumnName()
-        {
-            try
-            {
-                ObjectFactory.Current.Register(typeof(EnglishWords));
-                var nf = new NameFormatter();
-                ColumnName cn = nf.GetColumnName("MY_COLUMN_NAME_", WordsExtraction.FromDictionary, EnglishNameFormat);
-                Assert.AreEqual("MyColumnName", cn.PropertyName);
-                cn = nf.GetColumnName("MY_COLUMN_NAME_", WordsExtraction.FromDictionary, EnglishNameFormatCamelCase);
-                Assert.AreEqual("myColumnName", cn.PropertyName);
-            }
-            finally
-            {
-                ObjectFactory.Current.Unregister(typeof(EnglishWords));
-            }
-        }
-    }
-}
-
-#endif
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+using System.Globalization;
+using DbLinq;
+using DbLinq.Factory;
+using DbLinq.Schema;
+using DbLinq.Schema.Implementation;
+using DbLinq.Util;
+using DbMetal;
+using DbMetal.Language;
+using NUnit.Framework;
+
+// These don't build in tools/sqlmetal
+#if FALSE
+
+using Case = DbLinq.Schema.Case;
+using WordsExtraction = DbLinq.Schema.WordsExtraction;
+
+namespace DbLinqTest
+{
+    /// <summary>
+    /// Test for NameFormatter
+    /// </summary>
+    [TestFixture]
+    public class NameFormatterTest
+    {
+        private NameFormat InvariantNameFormat
+        {
+            get
+            {
+                return new NameFormat(false, Case.PascalCase, CultureInfo.InvariantCulture);
+            }
+        }
+
+        private NameFormat EnglishNameFormat
+        {
+            get
+            {
+                Reference.DbLinqLocalizations();
+                return new NameFormat(false, Case.NetCase, new CultureInfo("en-us"));
+            }
+        }
+
+        private NameFormat EnglishNameFormatCamelCase
+        {
+            get
+            {
+                Reference.DbLinqLocalizations();
+                return new NameFormat(false, Case.camelCase, new CultureInfo("en-us"));
+            }
+        }
+
+        [Test]
+        public void InvalidCharactersCaseTest()
+        {
+            var nf = new NameFormatter();
+            var tn = nf.GetTableName("A#?", WordsExtraction.FromCase, InvariantNameFormat);
+            Assert.AreEqual("A__", tn.ClassName);
+        }
+
+        [Test]
+        public void InvalidCharactersLanguageTest()
+        {
+            var nf = new NameFormatter();
+            var tn = nf.GetTableName("A#?", WordsExtraction.FromDictionary, InvariantNameFormat);
+            Assert.AreEqual("A__", tn.ClassName);
+        }
+
+        [Test]
+        public void InvalidCharactersLanguage2Test()
+        {
+            try
+            {
+                ObjectFactory.Current.Register(typeof(EnglishWords));
+                var nf = new NameFormatter();
+                var tn = nf.GetTableName("Test#?", WordsExtraction.FromDictionary, EnglishNameFormat);
+                Assert.AreEqual("Test__", tn.ClassName);
+            }
+            finally
+            {
+                ObjectFactory.Current.Unregister(typeof(EnglishWords));
+            }
+        }
+
+        [Test]
+        public void GetWordsTest_MyTableName()
+        {
+            try
+            {
+                ObjectFactory.Current.Register(typeof(EnglishWords));
+                var nf = new NameFormatter();
+                var tn = nf.GetTableName("MY_TABLE_NAME_", WordsExtraction.FromDictionary, EnglishNameFormat);
+                Assert.AreEqual("MyTableName", tn.ClassName);
+            }
+            finally
+            {
+                ObjectFactory.Current.Unregister(typeof(EnglishWords));
+            }
+        }
+
+        [Test]
+        public void GetWordsTest_MyTableName2()
+        {
+            try
+            {
+                ObjectFactory.Current.Register(typeof(EnglishWords));
+                var nf = new NameFormatter();
+                var tn = nf.GetTableName("_MY_TABLE__NAME", WordsExtraction.FromDictionary, EnglishNameFormat);
+                Assert.AreEqual("MyTableName", tn.ClassName);
+            }
+            finally
+            {
+                ObjectFactory.Current.Unregister(typeof(EnglishWords));
+            }
+        }
+
+        [Test]
+        public void GetWordsTest_MyColumnName()
+        {
+            try
+            {
+                ObjectFactory.Current.Register(typeof(EnglishWords));
+                var nf = new NameFormatter();
+                ColumnName cn = nf.GetColumnName("MY_COLUMN_NAME_", WordsExtraction.FromDictionary, EnglishNameFormat);
+                Assert.AreEqual("MyColumnName", cn.PropertyName);
+                cn = nf.GetColumnName("MY_COLUMN_NAME_", WordsExtraction.FromDictionary, EnglishNameFormatCamelCase);
+                Assert.AreEqual("myColumnName", cn.PropertyName);
+            }
+            finally
+            {
+                ObjectFactory.Current.Unregister(typeof(EnglishWords));
+            }
+        }
+    }
+}
+
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Util/TableSorter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Util/TableSorter.cs
@@ -1,126 +1,126 @@
-﻿#region MIT license
-////////////////////////////////////////////////////////////////////
-// MIT license:
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-//
-// Authors:
-//        Jiri George Moudry
-//        Andrey Shchekin
-////////////////////////////////////////////////////////////////////
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using DbLinq.Schema;
-
-namespace DbMetal.Util
-{
-    /// <summary>
-    /// sort tables - parent tables first, child tables next.
-    /// </summary>
-    public class TableSorter : IComparer<DbLinq.Schema.Dbml.Table>
-    {
-        Dictionary<string, DbLinq.Schema.Dbml.Table> _typeNameToTableMap; // = tables.ToDictionary(t => t.Name);
-        //Dictionary<DbLinq.Schema.Dbml.Table, int> _originalOrder = new Dictionary<DbLinq.Schema.Dbml.Table, int>();
-
-        public TableSorter(IEnumerable<DbLinq.Schema.Dbml.Table> tables)
-        {
-            _typeNameToTableMap = tables.ToDictionary(t => t.Type.Name);
-
-            //int indx = 0;
-            foreach (DbLinq.Schema.Dbml.Table t in tables)
-            {
-                //_originalOrder[t] = indx++;
-                foreach (DbLinq.Schema.Dbml.Table child in EnumChildTables(t))
-                {
-                    child._isChild = true;
-                }
-            }
-        }
-
-        #region IComparer<Table> Members
-
-        public int Compare(DbLinq.Schema.Dbml.Table x, DbLinq.Schema.Dbml.Table y)
-        {
-            if (x == y)
-                return 0; //crappy sort implementation in .NET framework?!
-
-            foreach (DbLinq.Schema.Dbml.Table child_of_x in EnumChildTables(x))
-            {
-                if (y == child_of_x)
-                    return -1;
-            }
-            foreach (DbLinq.Schema.Dbml.Table child_of_y in EnumChildTables(y))
-            {
-                if (x == child_of_y)
-                    return +1;
-            }
-
-            //if we get here, x/y are not above or below each other.
-            return x._isChild.CompareTo(y._isChild);
-            //return 0;
-        }
-        #endregion
-
-        #region recursive walk through child table hierarchy
-        private IEnumerable<DbLinq.Schema.Dbml.Table> EnumChildTables(DbLinq.Schema.Dbml.Table parent)
-        {
-            Dictionary<DbLinq.Schema.Dbml.Table, bool> visitedMap = new Dictionary<DbLinq.Schema.Dbml.Table, bool>();
-            return EnumChildTables_(parent, visitedMap);
-        }
-
-        /// <summary>
-        /// recursively list all child tables.
-        /// We use visitedMap to prevent duplicates.
-        /// </summary>
-        private IEnumerable<DbLinq.Schema.Dbml.Table> EnumChildTables_(DbLinq.Schema.Dbml.Table parent, Dictionary<DbLinq.Schema.Dbml.Table, bool> visitedMap)
-        {
-            //In Northwind DB, Employee.ReportsTo points back to itself, 
-            //mark as visited to prevent recursion
-            visitedMap[parent] = true; 
-
-            var q1 = parent.Type.Associations.Where(a => !a.IsForeignKey
-                                                         && a.OtherKey != null
-                                                         && _typeNameToTableMap.ContainsKey(a.Type));
-            var q = q1.ToList(); //for debugging
-
-            //loop through direct child tables ...
-            foreach (var assoc in q)
-            {
-                DbLinq.Schema.Dbml.Table child = _typeNameToTableMap[assoc.Type];
-                if (visitedMap.ContainsKey(child))
-                    continue;
-
-                visitedMap[child] = true;
-                yield return child;
-
-                //... and recurse into children of children:
-                foreach (DbLinq.Schema.Dbml.Table child2 in EnumChildTables_(child, visitedMap))
-                {
-                    yield return child2;
-                }
-
-            }
-        }
-
-        #endregion
-    }
+﻿#region MIT license
+////////////////////////////////////////////////////////////////////
+// MIT license:
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+//
+// Authors:
+//        Jiri George Moudry
+//        Andrey Shchekin
+////////////////////////////////////////////////////////////////////
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using DbLinq.Schema;
+
+namespace DbMetal.Util
+{
+    /// <summary>
+    /// sort tables - parent tables first, child tables next.
+    /// </summary>
+    public class TableSorter : IComparer<DbLinq.Schema.Dbml.Table>
+    {
+        Dictionary<string, DbLinq.Schema.Dbml.Table> _typeNameToTableMap; // = tables.ToDictionary(t => t.Name);
+        //Dictionary<DbLinq.Schema.Dbml.Table, int> _originalOrder = new Dictionary<DbLinq.Schema.Dbml.Table, int>();
+
+        public TableSorter(IEnumerable<DbLinq.Schema.Dbml.Table> tables)
+        {
+            _typeNameToTableMap = tables.ToDictionary(t => t.Type.Name);
+
+            //int indx = 0;
+            foreach (DbLinq.Schema.Dbml.Table t in tables)
+            {
+                //_originalOrder[t] = indx++;
+                foreach (DbLinq.Schema.Dbml.Table child in EnumChildTables(t))
+                {
+                    child._isChild = true;
+                }
+            }
+        }
+
+        #region IComparer<Table> Members
+
+        public int Compare(DbLinq.Schema.Dbml.Table x, DbLinq.Schema.Dbml.Table y)
+        {
+            if (x == y)
+                return 0; //crappy sort implementation in .NET framework?!
+
+            foreach (DbLinq.Schema.Dbml.Table child_of_x in EnumChildTables(x))
+            {
+                if (y == child_of_x)
+                    return -1;
+            }
+            foreach (DbLinq.Schema.Dbml.Table child_of_y in EnumChildTables(y))
+            {
+                if (x == child_of_y)
+                    return +1;
+            }
+
+            //if we get here, x/y are not above or below each other.
+            return x._isChild.CompareTo(y._isChild);
+            //return 0;
+        }
+        #endregion
+
+        #region recursive walk through child table hierarchy
+        private IEnumerable<DbLinq.Schema.Dbml.Table> EnumChildTables(DbLinq.Schema.Dbml.Table parent)
+        {
+            Dictionary<DbLinq.Schema.Dbml.Table, bool> visitedMap = new Dictionary<DbLinq.Schema.Dbml.Table, bool>();
+            return EnumChildTables_(parent, visitedMap);
+        }
+
+        /// <summary>
+        /// recursively list all child tables.
+        /// We use visitedMap to prevent duplicates.
+        /// </summary>
+        private IEnumerable<DbLinq.Schema.Dbml.Table> EnumChildTables_(DbLinq.Schema.Dbml.Table parent, Dictionary<DbLinq.Schema.Dbml.Table, bool> visitedMap)
+        {
+            //In Northwind DB, Employee.ReportsTo points back to itself, 
+            //mark as visited to prevent recursion
+            visitedMap[parent] = true; 
+
+            var q1 = parent.Type.Associations.Where(a => !a.IsForeignKey
+                                                         && a.OtherKey != null
+                                                         && _typeNameToTableMap.ContainsKey(a.Type));
+            var q = q1.ToList(); //for debugging
+
+            //loop through direct child tables ...
+            foreach (var assoc in q)
+            {
+                DbLinq.Schema.Dbml.Table child = _typeNameToTableMap[assoc.Type];
+                if (visitedMap.ContainsKey(child))
+                    continue;
+
+                visitedMap[child] = true;
+                yield return child;
+
+                //... and recurse into children of children:
+                foreach (DbLinq.Schema.Dbml.Table child2 in EnumChildTables_(child, visitedMap))
+                {
+                    yield return child2;
+                }
+
+            }
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Utility/EnvironmentExtension.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Utility/EnvironmentExtension.cs
@@ -1,53 +1,53 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Text.RegularExpressions;
-
-namespace DbMetal.Utility
-{
-    public static class EnvironmentExtension
-    {
-        // syntax: %envVar or %envVar??defaultValue
-        private static Regex Variable = new Regex(@"\%(?<var>[\w.]+)(\?\?(?<default>[\w.]+))?", RegexOptions.Singleline | RegexOptions.Compiled);
-
-        public static string EvaluateEnvironment(this string expression)
-        {
-            if (expression == null)
-                return null;
-            return Variable.Replace(expression, delegate(Match e)
-                                                    {
-                                                        string k = e.Result("${var}");
-                                                        string def = e.Result("${default}");
-                                                        string value = Environment.GetEnvironmentVariable(k);
-                                                        if (value == null)
-                                                            value = def;
-                                                        return value;
-                                                    });
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Text.RegularExpressions;
+
+namespace DbMetal.Utility
+{
+    public static class EnvironmentExtension
+    {
+        // syntax: %envVar or %envVar??defaultValue
+        private static Regex Variable = new Regex(@"\%(?<var>[\w.]+)(\?\?(?<default>[\w.]+))?", RegexOptions.Singleline | RegexOptions.Compiled);
+
+        public static string EvaluateEnvironment(this string expression)
+        {
+            if (expression == null)
+                return null;
+            return Variable.Replace(expression, delegate(Match e)
+                                                    {
+                                                        string k = e.Result("${var}");
+                                                        string def = e.Result("${default}");
+                                                        string value = Environment.GetEnvironmentVariable(k);
+                                                        if (value == null)
+                                                            value = def;
+                                                        return value;
+                                                    });
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/Utility/VariablesExtension.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/Utility/VariablesExtension.cs
@@ -1,86 +1,86 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-using System.Collections.Generic;
-using System.Reflection;
-using System.Text.RegularExpressions;
-
-namespace DbMetal.Utility
-{
-    public static class VariableExtension
-    {
-        private static Regex Variable = new Regex(@"\$\{(?<var>[\w.]+)\}", RegexOptions.Singleline | RegexOptions.Compiled);
-
-        private static object EvaluateMember<T>(IDictionary<string, T> variables, string memberPath, string[] extraParameters)
-        {
-            string[] parts = memberPath.Split('.');
-            object o = null;
-            if (variables.ContainsKey(parts[0]))
-                o = variables[parts[0]];
-            else
-            {
-                int index;
-                if (int.TryParse(parts[0], out index))
-                {
-                    if (index < extraParameters.Length)
-                        o = extraParameters[index];
-                }
-            }
-            for (int memberIndex = 1; memberIndex < parts.Length; memberIndex++)
-            {
-                if (o == null)
-                    break;
-                PropertyInfo info = o.GetType().GetProperty(parts[memberIndex]);
-                if (info != null)
-                    o = info.GetGetMethod().Invoke(o, new object[0]);
-                else
-                    o = null;
-            }
-            return o;
-        }
-
-        public static string Evaluate<T>(this IDictionary<string, T> variables, string expression, params string[] extraParameters)
-        {
-            if (expression == null)
-                return null;
-            return Variable.Replace(expression, delegate(Match e)
-                                                    {
-                                                        string k = e.Result("${var}");
-                                                        object o = EvaluateMember(variables, k, extraParameters);
-                                                        return o != null ? o.ToString() : string.Empty;
-                                                    });
-        }
-
-        public static IDictionary<string, T> LocalCopy<T>(this IDictionary<string, T> variables, params object[] localValues)
-        {
-            IDictionary<string, T> localCopy = new Dictionary<string, T>(variables);
-            for (int valueIndex = 0; valueIndex < localValues.Length; valueIndex += 2)
-            {
-                localCopy[(string)localValues[valueIndex]] = (T)localValues[valueIndex + 1];
-            }
-            return localCopy;
-        }
-    }
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+using System.Collections.Generic;
+using System.Reflection;
+using System.Text.RegularExpressions;
+
+namespace DbMetal.Utility
+{
+    public static class VariableExtension
+    {
+        private static Regex Variable = new Regex(@"\$\{(?<var>[\w.]+)\}", RegexOptions.Singleline | RegexOptions.Compiled);
+
+        private static object EvaluateMember<T>(IDictionary<string, T> variables, string memberPath, string[] extraParameters)
+        {
+            string[] parts = memberPath.Split('.');
+            object o = null;
+            if (variables.ContainsKey(parts[0]))
+                o = variables[parts[0]];
+            else
+            {
+                int index;
+                if (int.TryParse(parts[0], out index))
+                {
+                    if (index < extraParameters.Length)
+                        o = extraParameters[index];
+                }
+            }
+            for (int memberIndex = 1; memberIndex < parts.Length; memberIndex++)
+            {
+                if (o == null)
+                    break;
+                PropertyInfo info = o.GetType().GetProperty(parts[memberIndex]);
+                if (info != null)
+                    o = info.GetGetMethod().Invoke(o, new object[0]);
+                else
+                    o = null;
+            }
+            return o;
+        }
+
+        public static string Evaluate<T>(this IDictionary<string, T> variables, string expression, params string[] extraParameters)
+        {
+            if (expression == null)
+                return null;
+            return Variable.Replace(expression, delegate(Match e)
+                                                    {
+                                                        string k = e.Result("${var}");
+                                                        object o = EvaluateMember(variables, k, extraParameters);
+                                                        return o != null ? o.ToString() : string.Empty;
+                                                    });
+        }
+
+        public static IDictionary<string, T> LocalCopy<T>(this IDictionary<string, T> variables, params object[] localValues)
+        {
+            IDictionary<string, T> localCopy = new Dictionary<string, T>(variables);
+            for (int valueIndex = 0; valueIndex < localValues.Length; valueIndex += 2)
+            {
+                localCopy[(string)localValues[valueIndex]] = (T)localValues[valueIndex + 1];
+            }
+            return localCopy;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/oraFieldRenames.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/oraFieldRenames.xml
@@ -1,44 +1,44 @@
-<?xml version="1.0"?>
-<Renamings>
-  <!-- modify field names so that they match Microsot example names -->
-  <Renaming old="COMPANYNAME" new="CompanyName" />
-  <Renaming old="CONTACTNAME" new="ContactName" />
-  <Renaming old="CONTACTTITLE" new="ContactTitle" />
-  <Renaming old="QUANTITYPERUNIT" new="QuantityPerUnit" />
-  <Renaming old="POSTALCODE" new="PostalCode" />
-  <Renaming old="PRODUCTNAME" new="ProductName" />
-  <Renaming old="PRODUCTID" new="ProductID" />
-  <Renaming old="ORDERDATE" new="OrderDate" />
-  <Renaming old="ORDERID" new="OrderID" />
-  <Renaming old="SHIPVIA" new="ShipVia" />
-  <Renaming old="REQUIREDDATE" new="RequiredDate" />
-  <Renaming old="SHIPPEDDATE" new="ShippedDate" />
-  <Renaming old="FREIGHT" new="Freight" />
-  <Renaming old="CUSTOMERID" new="CustomerID" />
-  <Renaming old="CATEGORYID" new="CategoryID" />
-  <Renaming old="CITY" new="City" />
-  <Renaming old="PHONE" new="Phone" />
-  <Renaming old="FAX" new="Fax" />
-  <Renaming old="UNITPRICE" new="UnitPrice" />
-  <Renaming old="UNITSONORDER" new="UnitsOnOrder" />
-  <Renaming old="REORDERLEVEL" new="ReorderLevel" />
-  <Renaming old="DISCONTINUED" new="Discontinued" />
-  <Renaming old="SUPPLIERID" new="SupplierID" />
-  <Renaming old="REPORTSTO" new="ReportsTo" />
-  <Renaming old="FIRSTNAME" new="FirstName" />
-  <Renaming old="LASTNAME" new="LastName" />
-  <Renaming old="HIREDATE" new="HireDate" />
-  <Renaming old="ADDRESS" new="Address" />
-  <Renaming old="HOMEPHONE" new="HomePhone" />
-  <Renaming old="HOMEPHONE" new="HomePhone" />
-  <Renaming old="UNITSINSTOCK" new="UnitsInStock" />
-  <Renaming old="SUPPLIER" new="Supplier" />
-  <Renaming old="EMPLOYEEID" new="EmployeeID" />
-  <Renaming old="COUNTRY" new="Country" />
-  <Renaming old="REGION" new="Region" />
-  <Renaming old="EMPLOYEETERRITORY" new="EmployeeTerritory" />
-  <Renaming old="TERRITORYDESCRIPTION" new="TerritoryDescription" />
-  <Renaming old="SHIPCITY" new="ShipCity" />
-  <Renaming old="SHIPREGION" new="ShipRegion" />
-  <Renaming old="LinqTestDB" new="LinqTestDB" />
+<?xml version="1.0"?>
+<Renamings>
+  <!-- modify field names so that they match Microsot example names -->
+  <Renaming old="COMPANYNAME" new="CompanyName" />
+  <Renaming old="CONTACTNAME" new="ContactName" />
+  <Renaming old="CONTACTTITLE" new="ContactTitle" />
+  <Renaming old="QUANTITYPERUNIT" new="QuantityPerUnit" />
+  <Renaming old="POSTALCODE" new="PostalCode" />
+  <Renaming old="PRODUCTNAME" new="ProductName" />
+  <Renaming old="PRODUCTID" new="ProductID" />
+  <Renaming old="ORDERDATE" new="OrderDate" />
+  <Renaming old="ORDERID" new="OrderID" />
+  <Renaming old="SHIPVIA" new="ShipVia" />
+  <Renaming old="REQUIREDDATE" new="RequiredDate" />
+  <Renaming old="SHIPPEDDATE" new="ShippedDate" />
+  <Renaming old="FREIGHT" new="Freight" />
+  <Renaming old="CUSTOMERID" new="CustomerID" />
+  <Renaming old="CATEGORYID" new="CategoryID" />
+  <Renaming old="CITY" new="City" />
+  <Renaming old="PHONE" new="Phone" />
+  <Renaming old="FAX" new="Fax" />
+  <Renaming old="UNITPRICE" new="UnitPrice" />
+  <Renaming old="UNITSONORDER" new="UnitsOnOrder" />
+  <Renaming old="REORDERLEVEL" new="ReorderLevel" />
+  <Renaming old="DISCONTINUED" new="Discontinued" />
+  <Renaming old="SUPPLIERID" new="SupplierID" />
+  <Renaming old="REPORTSTO" new="ReportsTo" />
+  <Renaming old="FIRSTNAME" new="FirstName" />
+  <Renaming old="LASTNAME" new="LastName" />
+  <Renaming old="HIREDATE" new="HireDate" />
+  <Renaming old="ADDRESS" new="Address" />
+  <Renaming old="HOMEPHONE" new="HomePhone" />
+  <Renaming old="HOMEPHONE" new="HomePhone" />
+  <Renaming old="UNITSINSTOCK" new="UnitsInStock" />
+  <Renaming old="SUPPLIER" new="Supplier" />
+  <Renaming old="EMPLOYEEID" new="EmployeeID" />
+  <Renaming old="COUNTRY" new="Country" />
+  <Renaming old="REGION" new="Region" />
+  <Renaming old="EMPLOYEETERRITORY" new="EmployeeTerritory" />
+  <Renaming old="TERRITORYDESCRIPTION" new="TerritoryDescription" />
+  <Renaming old="SHIPCITY" new="ShipCity" />
+  <Renaming old="SHIPREGION" new="ShipRegion" />
+  <Renaming old="LinqTestDB" new="LinqTestDB" />
 </Renamings>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/DbMetal/pgsqlFieldRenames.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/DbMetal/pgsqlFieldRenames.xml
@@ -1,25 +1,25 @@
-<?xml version="1.0"?>
-<Renamings>
-  <!-- modify field names so that they match Microsot example names -->
-  <Renaming old="companyname" new="CompanyName" />
-  <Renaming old="contactname" new="ContactName" />
-  <Renaming old="firstname" new="FirstName" />
-  <Renaming old="lastname" new="LastName" />
-  <Renaming old="quantityperunit" new="QuantityPerUnit" />
-  <Renaming old="postalcode" new="PostalCode" />
-  <Renaming old="productname" new="ProductName" />
-  <Renaming old="orderdate" new="OrderDate" />
-  <Renaming old="linqtestdb" new="LinqTestDB" />
-  <Renaming old="getordercount" new="getOrderCount" />
-  <Renaming old="unitprice" new="UnitPrice" />
-  <Renaming old="unitsonorder" new="UnitsOnOrder" />
-  <Renaming old="unitsinstock" new="UnitsInStock" />
-  <Renaming old="hiredate" new="HireDate" />
-  <Renaming old="reportsto" new="ReportsTo" />
-  <Renaming old="territorydescription" new="TerritoryDescription" />
-  <Renaming old="orderdetail" new="OrderDetail" />
-  <Renaming old="orderdetails" new="OrderDetails" />
-  <Renaming old="Orderdetails" new="OrderDetails" />
-  <Renaming old="Shipcity" new="ShipCity" />
-  <Renaming old="Shipregion" new="ShipRegion" />
+<?xml version="1.0"?>
+<Renamings>
+  <!-- modify field names so that they match Microsot example names -->
+  <Renaming old="companyname" new="CompanyName" />
+  <Renaming old="contactname" new="ContactName" />
+  <Renaming old="firstname" new="FirstName" />
+  <Renaming old="lastname" new="LastName" />
+  <Renaming old="quantityperunit" new="QuantityPerUnit" />
+  <Renaming old="postalcode" new="PostalCode" />
+  <Renaming old="productname" new="ProductName" />
+  <Renaming old="orderdate" new="OrderDate" />
+  <Renaming old="linqtestdb" new="LinqTestDB" />
+  <Renaming old="getordercount" new="getOrderCount" />
+  <Renaming old="unitprice" new="UnitPrice" />
+  <Renaming old="unitsonorder" new="UnitsOnOrder" />
+  <Renaming old="unitsinstock" new="UnitsInStock" />
+  <Renaming old="hiredate" new="HireDate" />
+  <Renaming old="reportsto" new="ReportsTo" />
+  <Renaming old="territorydescription" new="TerritoryDescription" />
+  <Renaming old="orderdetail" new="OrderDetail" />
+  <Renaming old="orderdetails" new="OrderDetails" />
+  <Renaming old="Orderdetails" new="OrderDetails" />
+  <Renaming old="Shipcity" new="ShipCity" />
+  <Renaming old="Shipregion" new="ShipRegion" />
 </Renamings>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Program.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Program.cs
@@ -1,20 +1,20 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Windows.Forms;
-
-namespace NUnitConsoleRunner
-{
-    static class Program
-    {
-        /// <summary>
-        /// The main entry point for the application.
-        /// </summary>
-        [STAThread]
-        static void Main()
-        {
-            string[] args = new string[] { "../DbLinq-Sqlite-Sqlserver.nunit" };
-            NUnit.Gui.AppEntry.Main(args);
-        }
-    }
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace NUnitConsoleRunner
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            string[] args = new string[] { "../DbLinq-Sqlite-Sqlserver.nunit" };
+            NUnit.Gui.AppEntry.Main(args);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Properties/AssemblyInfo.cs
@@ -1,23 +1,23 @@
-﻿using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("NUnitConsoleRunner")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("NUnitConsoleRunner")]
-[assembly: AssemblyCopyright("Copyright ©  2009")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("2e39c94e-8988-41cf-a6a4-81a82fa02066")]
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("NUnitConsoleRunner")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NUnitConsoleRunner")]
+[assembly: AssemblyCopyright("Copyright ©  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("2e39c94e-8988-41cf-a6a4-81a82fa02066")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Properties/Resources.Designer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Properties/Resources.Designer.cs
@@ -1,71 +1,71 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3082
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace NUnitConsoleRunner.Properties
-{
-
-
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources
-    {
-
-        private static global::System.Resources.ResourceManager resourceMan;
-
-        private static global::System.Globalization.CultureInfo resourceCulture;
-
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources()
-        {
-        }
-
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if ((resourceMan == null))
-                {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NUnitConsoleRunner.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
-                return resourceCulture;
-            }
-            set
-            {
-                resourceCulture = value;
-            }
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3082
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace NUnitConsoleRunner.Properties
+{
+
+
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NUnitConsoleRunner.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Properties/Settings.Designer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/Tools/NUnitRunner/Properties/Settings.Designer.cs
@@ -1,30 +1,30 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.3082
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace NUnitConsoleRunner.Properties
-{
-
-
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
-    {
-
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
-        public static Settings Default
-        {
-            get
-            {
-                return defaultInstance;
-            }
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3082
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace NUnitConsoleRunner.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/Tools/TestNamespaceWriter/Program.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/Tools/TestNamespaceWriter/Program.cs
@@ -1,133 +1,133 @@
-﻿#region MIT license
-// 
-// MIT license
-//
-// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
-// 
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-// 
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-// 
-#endregion
-
-namespace TestNamespaceWriter
-{
-    using System;
-    using System.Configuration;
-    using System.IO;
-    using System.Text;
-    using System.Text.RegularExpressions;
-
-    class Program
-    {
-        /// <summary>
-        /// Processes the specified directory.
-        /// </summary>
-        /// <param name="directory">The directory.</param>
-        static void ProcessDirectory(string directory)
-        {
-            foreach (var file in Directory.GetFiles(directory, "*.cs"))
-            {
-                ProcessFile(file);
-            }
-            foreach (var subDirectory in Directory.GetDirectories(directory))
-            {
-                ProcessDirectory(subDirectory);
-            }
-        }
-
-        /// <summary>
-        /// Processes the file.
-        /// </summary>
-        /// <param name="file">The file.</param>
-        private static void ProcessFile(string file)
-        {
-            string codeText;
-            using (var textStream = File.OpenText(file))
-            {
-                codeText = textStream.ReadToEnd();
-            }
-            if (IsTest(codeText))
-            {
-                Console.WriteLine("Processing {0}", Path.GetFileName(file));
-                codeText = SetNamespaces(codeText);
-                using (var fileStream = File.Create(file))
-                using (var textStream = new StreamWriter(fileStream, Encoding.UTF8))
-                {
-                    textStream.Write(codeText);
-                }
-            }
-        }
-
-        private const string Marker = "// test ns";
-
-        private static readonly Regex HeaderEx = new Regex(Regex.Escape(Marker) + "(?<ns>[^\n\r]*)?" + "(?<holder>.*?){",
-                                                           RegexOptions.Compiled | RegexOptions.Singleline);
-
-        /// <summary>
-        /// Sets the namespaces.
-        /// </summary>
-        /// <param name="text">The text.</param>
-        /// <returns></returns>
-        private static string SetNamespaces(string text)
-        {
-            return HeaderEx.Replace(text, delegate(Match match)
-                                              {
-                                                  var ns = match.Groups["ns"].Value.Trim();
-                                                  var newHeader = Marker + " " + ns + "\r\n" + GetNamespaces(ns) + "{";
-                                                  return newHeader;
-                                              });
-        }
-
-        private static string GetNamespaces(string ns)
-        {
-            var namespacesBuilder = new StringBuilder();
-            foreach (string key in ConfigurationManager.AppSettings)
-            {
-                if (namespacesBuilder.Length == 0)
-                    namespacesBuilder.Append("#if ");
-                else
-                    namespacesBuilder.Append("#elif ");
-
-                var keys = key.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
-                var literalKeys = string.Join(" && ", keys);
-                namespacesBuilder.AppendLine(literalKeys);
-                namespacesBuilder.AppendFormat("    namespace {0}{1}\r\n", ConfigurationManager.AppSettings[key],
-                    string.IsNullOrEmpty(ns) ? "" : "." + ns);
-            }
-            namespacesBuilder.AppendLine("#endif");
-            return namespacesBuilder.ToString();
-        }
-
-        /// <summary>
-        /// Determines whether the specified code text is test.
-        /// </summary>
-        /// <param name="codeText">The code text.</param>
-        /// <returns>
-        /// 	<c>true</c> if the specified code text is test; otherwise, <c>false</c>.
-        /// </returns>
-        private static bool IsTest(string codeText)
-        {
-            return codeText.Contains("\r\n" + Marker);
-        }
-
-        static void Main(string[] args)
-        {
-            ProcessDirectory(@"..\..\..\..");
-        }
-    }
-}
+﻿#region MIT license
+// 
+// MIT license
+//
+// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+#endregion
+
+namespace TestNamespaceWriter
+{
+    using System;
+    using System.Configuration;
+    using System.IO;
+    using System.Text;
+    using System.Text.RegularExpressions;
+
+    class Program
+    {
+        /// <summary>
+        /// Processes the specified directory.
+        /// </summary>
+        /// <param name="directory">The directory.</param>
+        static void ProcessDirectory(string directory)
+        {
+            foreach (var file in Directory.GetFiles(directory, "*.cs"))
+            {
+                ProcessFile(file);
+            }
+            foreach (var subDirectory in Directory.GetDirectories(directory))
+            {
+                ProcessDirectory(subDirectory);
+            }
+        }
+
+        /// <summary>
+        /// Processes the file.
+        /// </summary>
+        /// <param name="file">The file.</param>
+        private static void ProcessFile(string file)
+        {
+            string codeText;
+            using (var textStream = File.OpenText(file))
+            {
+                codeText = textStream.ReadToEnd();
+            }
+            if (IsTest(codeText))
+            {
+                Console.WriteLine("Processing {0}", Path.GetFileName(file));
+                codeText = SetNamespaces(codeText);
+                using (var fileStream = File.Create(file))
+                using (var textStream = new StreamWriter(fileStream, Encoding.UTF8))
+                {
+                    textStream.Write(codeText);
+                }
+            }
+        }
+
+        private const string Marker = "// test ns";
+
+        private static readonly Regex HeaderEx = new Regex(Regex.Escape(Marker) + "(?<ns>[^\n\r]*)?" + "(?<holder>.*?){",
+                                                           RegexOptions.Compiled | RegexOptions.Singleline);
+
+        /// <summary>
+        /// Sets the namespaces.
+        /// </summary>
+        /// <param name="text">The text.</param>
+        /// <returns></returns>
+        private static string SetNamespaces(string text)
+        {
+            return HeaderEx.Replace(text, delegate(Match match)
+                                              {
+                                                  var ns = match.Groups["ns"].Value.Trim();
+                                                  var newHeader = Marker + " " + ns + "\r\n" + GetNamespaces(ns) + "{";
+                                                  return newHeader;
+                                              });
+        }
+
+        private static string GetNamespaces(string ns)
+        {
+            var namespacesBuilder = new StringBuilder();
+            foreach (string key in ConfigurationManager.AppSettings)
+            {
+                if (namespacesBuilder.Length == 0)
+                    namespacesBuilder.Append("#if ");
+                else
+                    namespacesBuilder.Append("#elif ");
+
+                var keys = key.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
+                var literalKeys = string.Join(" && ", keys);
+                namespacesBuilder.AppendLine(literalKeys);
+                namespacesBuilder.AppendFormat("    namespace {0}{1}\r\n", ConfigurationManager.AppSettings[key],
+                    string.IsNullOrEmpty(ns) ? "" : "." + ns);
+            }
+            namespacesBuilder.AppendLine("#endif");
+            return namespacesBuilder.ToString();
+        }
+
+        /// <summary>
+        /// Determines whether the specified code text is test.
+        /// </summary>
+        /// <param name="codeText">The code text.</param>
+        /// <returns>
+        /// 	<c>true</c> if the specified code text is test; otherwise, <c>false</c>.
+        /// </returns>
+        private static bool IsTest(string codeText)
+        {
+            return codeText.Contains("\r\n" + Marker);
+        }
+
+        static void Main(string[] args)
+        {
+            ProcessDirectory(@"..\..\..\..");
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/Tools/TestNamespaceWriter/Properties/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/Tools/TestNamespaceWriter/Properties/AssemblyInfo.cs
@@ -1,23 +1,23 @@
-﻿using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("TestNamespaceWriter")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("TestNamespaceWriter")]
-[assembly: AssemblyCopyright("Copyright ©  2009")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("a4b927a0-9719-47b5-ad36-21ecf88d7978")]
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("TestNamespaceWriter")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("TestNamespaceWriter")]
+[assembly: AssemblyCopyright("Copyright ©  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a4b927a0-9719-47b5-ad36-21ecf88d7978")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Linq/src/readme.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Linq/src/readme.txt
@@ -1,6 +1,6 @@
-DbLinq 0.18
-
-We are in need of additional developers.  If you'd like to help out with the
-project please talk to us.
-
-Report bugs to our google project at http://code.google.com/p/dblinq2007/
+DbLinq 0.18
+
+We are in need of additional developers.  If you'd like to help out with the
+project please talk to us.
+
+Report bugs to our google project at http://code.google.com/p/dblinq2007/
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/Parameterized.System.Data.Services.Client.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/Parameterized.System.Data.Services.Client.cs
@@ -1,1018 +1,1018 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client {
-    using System;
-    using System.Resources;
-
-    internal static class Strings {
-        internal static string BatchStream_MissingBoundary {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingBoundary);
-            }
-        }
-
-        internal static string BatchStream_ContentExpected(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_ContentExpected,p0);
-        }
-
-        internal static string BatchStream_ContentUnexpected(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_ContentUnexpected,p0);
-        }
-
-        internal static string BatchStream_GetMethodNotSupportedInChangeset {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_GetMethodNotSupportedInChangeset);
-            }
-        }
-
-        internal static string BatchStream_InvalidBatchFormat {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidBatchFormat);
-            }
-        }
-
-        internal static string BatchStream_InvalidDelimiter(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidDelimiter,p0);
-        }
-
-        internal static string BatchStream_MissingEndChangesetDelimiter {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingEndChangesetDelimiter);
-            }
-        }
-
-        internal static string BatchStream_InvalidHeaderValueSpecified(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidHeaderValueSpecified,p0);
-        }
-
-        internal static string BatchStream_InvalidContentLengthSpecified(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidContentLengthSpecified,p0);
-        }
-
-        internal static string BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch);
-            }
-        }
-
-        internal static string BatchStream_InvalidOperationHeaderSpecified {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidOperationHeaderSpecified);
-            }
-        }
-
-        internal static string BatchStream_InvalidHttpMethodName(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidHttpMethodName,p0);
-        }
-
-        internal static string BatchStream_MoreDataAfterEndOfBatch {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MoreDataAfterEndOfBatch);
-            }
-        }
-
-        internal static string BatchStream_InternalBufferRequestTooSmall {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InternalBufferRequestTooSmall);
-            }
-        }
-
-        internal static string BatchStream_InvalidMethodHeaderSpecified(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidMethodHeaderSpecified,p0);
-        }
-
-        internal static string BatchStream_InvalidHttpVersionSpecified(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidHttpVersionSpecified,p0,p1);
-        }
-
-        internal static string BatchStream_InvalidNumberOfHeadersAtOperationStart(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidNumberOfHeadersAtOperationStart,p0,p1);
-        }
-
-        internal static string BatchStream_MissingOrInvalidContentEncodingHeader(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingOrInvalidContentEncodingHeader,p0,p1);
-        }
-
-        internal static string BatchStream_InvalidNumberOfHeadersAtChangeSetStart(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidNumberOfHeadersAtChangeSetStart,p0,p1);
-        }
-
-        internal static string BatchStream_MissingContentTypeHeader(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingContentTypeHeader,p0);
-        }
-
-        internal static string BatchStream_InvalidContentTypeSpecified(object p0, object p1, object p2, object p3) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidContentTypeSpecified,p0,p1,p2,p3);
-        }
-
-        internal static string Batch_ExpectedContentType(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_ExpectedContentType,p0);
-        }
-
-        internal static string Batch_ExpectedResponse(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_ExpectedResponse,p0);
-        }
-
-        internal static string Batch_IncompleteResponseCount {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_IncompleteResponseCount);
-            }
-        }
-
-        internal static string Batch_UnexpectedContent(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_UnexpectedContent,p0);
-        }
-
-        internal static string Context_BaseUri {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_BaseUri);
-            }
-        }
-
-        internal static string Context_CannotConvertKey(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_CannotConvertKey,p0);
-        }
-
-        internal static string Context_TrackingExpectsAbsoluteUri {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_TrackingExpectsAbsoluteUri);
-            }
-        }
-
-        internal static string Context_LinkResourceInsertFailure {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_LinkResourceInsertFailure);
-            }
-        }
-
-        internal static string Context_InternalError(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_InternalError,p0);
-        }
-
-        internal static string Context_BatchExecuteError {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_BatchExecuteError);
-            }
-        }
-
-        internal static string Context_EntitySetName {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntitySetName);
-            }
-        }
-
-        internal static string Context_MissingEditLinkInResponseBody {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MissingEditLinkInResponseBody);
-            }
-        }
-
-        internal static string Context_MissingSelfLinkInResponseBody {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MissingSelfLinkInResponseBody);
-            }
-        }
-
-        internal static string Context_MissingEditMediaLinkInResponseBody {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MissingEditMediaLinkInResponseBody);
-            }
-        }
-
-        internal static string Content_EntityWithoutKey {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Content_EntityWithoutKey);
-            }
-        }
-
-        internal static string Content_EntityIsNotEntityType {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Content_EntityIsNotEntityType);
-            }
-        }
-
-        internal static string Context_EntityNotContained {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntityNotContained);
-            }
-        }
-
-        internal static string Context_EntityAlreadyContained {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntityAlreadyContained);
-            }
-        }
-
-        internal static string Context_DifferentEntityAlreadyContained {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_DifferentEntityAlreadyContained);
-            }
-        }
-
-        internal static string Context_DidNotOriginateAsync {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_DidNotOriginateAsync);
-            }
-        }
-
-        internal static string Context_AsyncAlreadyDone {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AsyncAlreadyDone);
-            }
-        }
-
-        internal static string Context_OperationCanceled {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_OperationCanceled);
-            }
-        }
-
-        internal static string Context_NoLoadWithInsertEnd {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoLoadWithInsertEnd);
-            }
-        }
-
-        internal static string Context_NoRelationWithInsertEnd {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoRelationWithInsertEnd);
-            }
-        }
-
-        internal static string Context_NoRelationWithDeleteEnd {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoRelationWithDeleteEnd);
-            }
-        }
-
-        internal static string Context_RelationAlreadyContained {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_RelationAlreadyContained);
-            }
-        }
-
-        internal static string Context_RelationNotRefOrCollection {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_RelationNotRefOrCollection);
-            }
-        }
-
-        internal static string Context_AddLinkCollectionOnly {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AddLinkCollectionOnly);
-            }
-        }
-
-        internal static string Context_AddRelatedObjectCollectionOnly {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AddRelatedObjectCollectionOnly);
-            }
-        }
-
-        internal static string Context_AddRelatedObjectSourceDeleted {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AddRelatedObjectSourceDeleted);
-            }
-        }
-
-        internal static string Context_SetLinkReferenceOnly {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SetLinkReferenceOnly);
-            }
-        }
-
-        internal static string Context_NoContentTypeForMediaLink(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoContentTypeForMediaLink,p0,p1);
-        }
-
-        internal static string Context_BatchNotSupportedForMediaLink {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_BatchNotSupportedForMediaLink);
-            }
-        }
-
-        internal static string Context_UnexpectedZeroRawRead {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_UnexpectedZeroRawRead);
-            }
-        }
-
-        internal static string Context_VersionNotSupported(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_VersionNotSupported,p0,p1);
-        }
-
-        internal static string Context_SendingRequestEventArgsNotHttp {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SendingRequestEventArgsNotHttp);
-            }
-        }
-
-        internal static string Context_ChildResourceExists {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_ChildResourceExists);
-            }
-        }
-
-        internal static string Context_EntityNotMediaLinkEntry {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntityNotMediaLinkEntry);
-            }
-        }
-
-        internal static string Context_MLEWithoutSaveStream(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MLEWithoutSaveStream,p0);
-        }
-
-        internal static string Context_SetSaveStreamOnMediaEntryProperty(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SetSaveStreamOnMediaEntryProperty,p0);
-        }
-
-        internal static string Context_SetSaveStreamWithoutEditMediaLink {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SetSaveStreamWithoutEditMediaLink);
-            }
-        }
-
-        internal static string Collection_NullCollectionReference(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Collection_NullCollectionReference,p0,p1);
-        }
-
-        internal static string ClientType_MissingOpenProperty(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingOpenProperty,p0,p1);
-        }
-
-        internal static string Clienttype_MultipleOpenProperty(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Clienttype_MultipleOpenProperty,p0);
-        }
-
-        internal static string ClientType_MissingProperty(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingProperty,p0,p1);
-        }
-
-        internal static string ClientType_KeysMustBeSimpleTypes(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_KeysMustBeSimpleTypes,p0);
-        }
-
-        internal static string ClientType_KeysOnDifferentDeclaredType(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_KeysOnDifferentDeclaredType,p0);
-        }
-
-        internal static string ClientType_MissingMimeTypeProperty(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingMimeTypeProperty,p0,p1);
-        }
-
-        internal static string ClientType_MissingMediaEntryProperty(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingMediaEntryProperty,p0);
-        }
-
-        internal static string ClientType_NoSettableFields(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_NoSettableFields,p0);
-        }
-
-        internal static string ClientType_MultipleImplementationNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MultipleImplementationNotSupported);
-            }
-        }
-
-        internal static string ClientType_NullOpenProperties(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_NullOpenProperties,p0);
-        }
-
-        internal static string ClientType_CollectionOfNonEntities {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_CollectionOfNonEntities);
-            }
-        }
-
-        internal static string ClientType_Ambiguous(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_Ambiguous,p0,p1);
-        }
-
-        internal static string DataServiceException_GeneralError {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceException_GeneralError);
-            }
-        }
-
-        internal static string DataServiceRequest_FailGetCount {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceRequest_FailGetCount);
-            }
-        }
-
-        internal static string Deserialize_GetEnumerator {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_GetEnumerator);
-            }
-        }
-
-        internal static string Deserialize_Current(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_Current,p0,p1);
-        }
-
-        internal static string Deserialize_MixedTextWithComment {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MixedTextWithComment);
-            }
-        }
-
-        internal static string Deserialize_ExpectingSimpleValue {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ExpectingSimpleValue);
-            }
-        }
-
-        internal static string Deserialize_NotApplicationXml {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_NotApplicationXml);
-            }
-        }
-
-        internal static string Deserialize_MismatchAtomLinkLocalSimple {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MismatchAtomLinkLocalSimple);
-            }
-        }
-
-        internal static string Deserialize_MismatchAtomLinkFeedPropertyNotCollection(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MismatchAtomLinkFeedPropertyNotCollection,p0);
-        }
-
-        internal static string Deserialize_MismatchAtomLinkEntryPropertyIsCollection(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MismatchAtomLinkEntryPropertyIsCollection,p0);
-        }
-
-        internal static string Deserialize_UnknownMimeTypeSpecified(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_UnknownMimeTypeSpecified,p0);
-        }
-
-        internal static string Deserialize_ExpectedEmptyMediaLinkEntryContent {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ExpectedEmptyMediaLinkEntryContent);
-            }
-        }
-
-        internal static string Deserialize_ContentPlusPropertiesNotAllowed {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ContentPlusPropertiesNotAllowed);
-            }
-        }
-
-        internal static string Deserialize_NoLocationHeader {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_NoLocationHeader);
-            }
-        }
-
-        internal static string Deserialize_ServerException(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ServerException,p0);
-        }
-
-        internal static string Deserialize_MissingIdElement {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MissingIdElement);
-            }
-        }
-
-        internal static string EpmClientType_PropertyIsComplex(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmClientType_PropertyIsComplex,p0);
-        }
-
-        internal static string EpmClientType_PropertyIsPrimitive(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmClientType_PropertyIsPrimitive,p0);
-        }
-
-        internal static string EpmSourceTree_InvalidSourcePath(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmSourceTree_InvalidSourcePath,p0,p1);
-        }
-
-        internal static string EpmSourceTree_DuplicateEpmAttrsWithSameSourceName(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmSourceTree_DuplicateEpmAttrsWithSameSourceName,p0,p1);
-        }
-
-        internal static string EpmSourceTree_InaccessiblePropertyOnType(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmSourceTree_InaccessiblePropertyOnType,p0,p1);
-        }
-
-        internal static string EpmTargetTree_InvalidTargetPath(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmTargetTree_InvalidTargetPath,p0);
-        }
-
-        internal static string EpmTargetTree_AttributeInMiddle(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmTargetTree_AttributeInMiddle,p0);
-        }
-
-        internal static string EpmTargetTree_DuplicateEpmAttrsWithSameTargetName(object p0, object p1, object p2, object p3) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmTargetTree_DuplicateEpmAttrsWithSameTargetName,p0,p1,p2,p3);
-        }
-
-        internal static string EntityPropertyMapping_EpmAttribute(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EntityPropertyMapping_EpmAttribute,p0);
-        }
-
-        internal static string EntityPropertyMapping_TargetNamespaceUriNotValid(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EntityPropertyMapping_TargetNamespaceUriNotValid,p0);
-        }
-
-        internal static string HttpProcessUtility_ContentTypeMissing {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_ContentTypeMissing);
-            }
-        }
-
-        internal static string HttpProcessUtility_MediaTypeMissingValue {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeMissingValue);
-            }
-        }
-
-        internal static string HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter);
-            }
-        }
-
-        internal static string HttpProcessUtility_MediaTypeRequiresSlash {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeRequiresSlash);
-            }
-        }
-
-        internal static string HttpProcessUtility_MediaTypeRequiresSubType {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeRequiresSubType);
-            }
-        }
-
-        internal static string HttpProcessUtility_MediaTypeUnspecified {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeUnspecified);
-            }
-        }
-
-        internal static string HttpProcessUtility_EncodingNotSupported(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_EncodingNotSupported,p0);
-        }
-
-        internal static string HttpProcessUtility_EscapeCharWithoutQuotes(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_EscapeCharWithoutQuotes,p0);
-        }
-
-        internal static string HttpProcessUtility_EscapeCharAtEnd(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_EscapeCharAtEnd,p0);
-        }
-
-        internal static string HttpProcessUtility_ClosingQuoteNotFound(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_ClosingQuoteNotFound,p0);
-        }
-
-        internal static string MaterializeFromAtom_CountNotPresent {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_CountNotPresent);
-            }
-        }
-
-        internal static string MaterializeFromAtom_CountFormatError {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_CountFormatError);
-            }
-        }
-
-        internal static string MaterializeFromAtom_TopLevelLinkNotAvailable {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_TopLevelLinkNotAvailable);
-            }
-        }
-
-        internal static string MaterializeFromAtom_CollectionKeyNotPresentInLinkTable {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_CollectionKeyNotPresentInLinkTable);
-            }
-        }
-
-        internal static string MaterializeFromAtom_GetNestLinkForFlatCollection {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_GetNestLinkForFlatCollection);
-            }
-        }
-
-        internal static string Serializer_NullKeysAreNotSupported(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Serializer_NullKeysAreNotSupported,p0);
-        }
-
-        internal static string Util_EmptyString {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Util_EmptyString);
-            }
-        }
-
-        internal static string Util_EmptyArray {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Util_EmptyArray);
-            }
-        }
-
-        internal static string Util_NullArrayElement {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Util_NullArrayElement);
-            }
-        }
-
-        internal static string ALinq_UnsupportedExpression(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_UnsupportedExpression,p0);
-        }
-
-        internal static string ALinq_CouldNotConvert(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CouldNotConvert,p0);
-        }
-
-        internal static string ALinq_MethodNotSupported(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_MethodNotSupported,p0);
-        }
-
-        internal static string ALinq_UnaryNotSupported(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_UnaryNotSupported,p0);
-        }
-
-        internal static string ALinq_BinaryNotSupported(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_BinaryNotSupported,p0);
-        }
-
-        internal static string ALinq_ConstantNotSupported(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ConstantNotSupported,p0);
-        }
-
-        internal static string ALinq_TypeBinaryNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_TypeBinaryNotSupported);
-            }
-        }
-
-        internal static string ALinq_ConditionalNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ConditionalNotSupported);
-            }
-        }
-
-        internal static string ALinq_ParameterNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ParameterNotSupported);
-            }
-        }
-
-        internal static string ALinq_MemberAccessNotSupported(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_MemberAccessNotSupported,p0);
-        }
-
-        internal static string ALinq_LambdaNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_LambdaNotSupported);
-            }
-        }
-
-        internal static string ALinq_NewNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_NewNotSupported);
-            }
-        }
-
-        internal static string ALinq_MemberInitNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_MemberInitNotSupported);
-            }
-        }
-
-        internal static string ALinq_ListInitNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ListInitNotSupported);
-            }
-        }
-
-        internal static string ALinq_NewArrayNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_NewArrayNotSupported);
-            }
-        }
-
-        internal static string ALinq_InvocationNotSupported {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_InvocationNotSupported);
-            }
-        }
-
-        internal static string ALinq_QueryOptionsOnlyAllowedOnLeafNodes {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_QueryOptionsOnlyAllowedOnLeafNodes);
-            }
-        }
-
-        internal static string ALinq_CantExpand {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantExpand);
-            }
-        }
-
-        internal static string ALinq_CantCastToUnsupportedPrimitive(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantCastToUnsupportedPrimitive,p0);
-        }
-
-        internal static string ALinq_CantNavigateWithoutKeyPredicate {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantNavigateWithoutKeyPredicate);
-            }
-        }
-
-        internal static string ALinq_CanOnlyApplyOneKeyPredicate {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CanOnlyApplyOneKeyPredicate);
-            }
-        }
-
-        internal static string ALinq_CantTranslateExpression(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantTranslateExpression,p0);
-        }
-
-        internal static string ALinq_TranslationError(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_TranslationError,p0);
-        }
-
-        internal static string ALinq_CantAddQueryOption {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddQueryOption);
-            }
-        }
-
-        internal static string ALinq_CantAddDuplicateQueryOption(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddDuplicateQueryOption,p0);
-        }
-
-        internal static string ALinq_CantAddAstoriaQueryOption(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddAstoriaQueryOption,p0);
-        }
-
-        internal static string ALinq_CantAddQueryOptionStartingWithDollarSign(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddQueryOptionStartingWithDollarSign,p0);
-        }
-
-        internal static string ALinq_CantReferToPublicField(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantReferToPublicField,p0);
-        }
-
-        internal static string ALinq_QueryOptionsOnlyAllowedOnSingletons {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_QueryOptionsOnlyAllowedOnSingletons);
-            }
-        }
-
-        internal static string ALinq_QueryOptionOutOfOrder(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_QueryOptionOutOfOrder,p0,p1);
-        }
-
-        internal static string ALinq_CannotAddCountOption {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotAddCountOption);
-            }
-        }
-
-        internal static string ALinq_CannotAddCountOptionConflict {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotAddCountOptionConflict);
-            }
-        }
-
-        internal static string ALinq_ProjectionOnlyAllowedOnLeafNodes {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ProjectionOnlyAllowedOnLeafNodes);
-            }
-        }
-
-        internal static string ALinq_ProjectionCanOnlyHaveOneProjection {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ProjectionCanOnlyHaveOneProjection);
-            }
-        }
-
-        internal static string ALinq_ProjectionMemberAssignmentMismatch(object p0, object p1, object p2) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ProjectionMemberAssignmentMismatch,p0,p1,p2);
-        }
-
-        internal static string ALinq_ExpressionNotSupportedInProjectionToEntity(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ExpressionNotSupportedInProjectionToEntity,p0,p1);
-        }
-
-        internal static string ALinq_ExpressionNotSupportedInProjection(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ExpressionNotSupportedInProjection,p0,p1);
-        }
-
-        internal static string ALinq_CannotConstructKnownEntityTypes {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotConstructKnownEntityTypes);
-            }
-        }
-
-        internal static string ALinq_CannotCreateConstantEntity {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotCreateConstantEntity);
-            }
-        }
-
-        internal static string ALinq_PropertyNamesMustMatchInProjections(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_PropertyNamesMustMatchInProjections,p0,p1);
-        }
-
-        internal static string ALinq_CanOnlyProjectTheLeaf {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CanOnlyProjectTheLeaf);
-            }
-        }
-
-        internal static string ALinq_CannotProjectWithExplicitExpansion {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotProjectWithExplicitExpansion);
-            }
-        }
-
-        internal static string DSKAttribute_MustSpecifyAtleastOnePropertyName {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DSKAttribute_MustSpecifyAtleastOnePropertyName);
-            }
-        }
-
-        internal static string DataServiceCollection_LoadRequiresTargetCollectionObserved {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_LoadRequiresTargetCollectionObserved);
-            }
-        }
-
-        internal static string DataServiceCollection_CannotStopTrackingChildCollection {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_CannotStopTrackingChildCollection);
-            }
-        }
-
-        internal static string DataServiceCollection_OperationForTrackedOnly {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_OperationForTrackedOnly);
-            }
-        }
-
-        internal static string DataServiceCollection_CannotDetermineContextFromItems {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_CannotDetermineContextFromItems);
-            }
-        }
-
-        internal static string DataServiceCollection_InsertIntoTrackedButNotLoadedCollection {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_InsertIntoTrackedButNotLoadedCollection);
-            }
-        }
-
-        internal static string DataBinding_DataServiceCollectionArgumentMustHaveEntityType(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_DataServiceCollectionArgumentMustHaveEntityType,p0);
-        }
-
-        internal static string DataBinding_CollectionPropertySetterValueHasObserver(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_CollectionPropertySetterValueHasObserver,p0,p1);
-        }
-
-        internal static string DataBinding_CollectionChangedUnknownAction(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_CollectionChangedUnknownAction,p0);
-        }
-
-        internal static string DataBinding_BindingOperation_DetachedSource {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_BindingOperation_DetachedSource);
-            }
-        }
-
-        internal static string DataBinding_BindingOperation_ArrayItemNull(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_BindingOperation_ArrayItemNull,p0);
-        }
-
-        internal static string DataBinding_BindingOperation_ArrayItemNotEntity(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_BindingOperation_ArrayItemNotEntity,p0);
-        }
-
-        internal static string DataBinding_Util_UnknownEntitySetName(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_Util_UnknownEntitySetName,p0);
-        }
-
-        internal static string DataBinding_EntityAlreadyInCollection(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_EntityAlreadyInCollection,p0);
-        }
-
-        internal static string DataBinding_NotifyPropertyChangedNotImpl(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_NotifyPropertyChangedNotImpl,p0);
-        }
-
-        internal static string DataBinding_ComplexObjectAssociatedWithMultipleEntities(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_ComplexObjectAssociatedWithMultipleEntities,p0);
-        }
-
-        internal static string AtomParser_FeedUnexpected {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_FeedUnexpected);
-            }
-        }
-
-        internal static string AtomParser_PagingLinkOutsideOfFeed {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_PagingLinkOutsideOfFeed);
-            }
-        }
-
-        internal static string AtomParser_ManyFeedCounts {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_ManyFeedCounts);
-            }
-        }
-
-        internal static string AtomParser_FeedCountNotUnderFeed {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_FeedCountNotUnderFeed);
-            }
-        }
-
-        internal static string AtomParser_UnexpectedContentUnderExpandedLink {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_UnexpectedContentUnderExpandedLink);
-            }
-        }
-
-        internal static string AtomMaterializer_CannotAssignNull(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_CannotAssignNull,p0,p1);
-        }
-
-        internal static string AtomMaterializer_DuplicatedNextLink {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_DuplicatedNextLink);
-            }
-        }
-
-        internal static string AtomMaterializer_EntryIntoCollectionMismatch(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_EntryIntoCollectionMismatch,p0,p1);
-        }
-
-        internal static string AtomMaterializer_EntryToAccessIsNull(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_EntryToAccessIsNull,p0);
-        }
-
-        internal static string AtomMaterializer_EntryToInitializeIsNull(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_EntryToInitializeIsNull,p0);
-        }
-
-        internal static string AtomMaterializer_ProjectEntityTypeMismatch(object p0, object p1, object p2) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_ProjectEntityTypeMismatch,p0,p1,p2);
-        }
-
-        internal static string AtomMaterializer_LinksMissingHref {
-            get {
-                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_LinksMissingHref);
-            }
-        }
-
-        internal static string AtomMaterializer_PropertyMissing(object p0) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_PropertyMissing,p0);
-        }
-
-        internal static string AtomMaterializer_PropertyMissingFromEntry(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_PropertyMissingFromEntry,p0,p1);
-        }
-
-        internal static string AtomMaterializer_PropertyNotExpectedEntry(object p0, object p1) {
-            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_PropertyNotExpectedEntry,p0,p1);
-        }
-
-    }
-
-    internal static partial class Error {
-
-        internal static Exception ArgumentNull(string paramName) {
-            return new ArgumentNullException(paramName);
-        }
-        
-        internal static Exception ArgumentOutOfRange(string paramName) {
-            return new ArgumentOutOfRangeException(paramName);
-        }
-
-        internal static Exception NotImplemented() {
-            return new NotImplementedException();
-        }
-
-        internal static Exception NotSupported() {
-            return new NotSupportedException();
-        }        
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client {
+    using System;
+    using System.Resources;
+
+    internal static class Strings {
+        internal static string BatchStream_MissingBoundary {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingBoundary);
+            }
+        }
+
+        internal static string BatchStream_ContentExpected(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_ContentExpected,p0);
+        }
+
+        internal static string BatchStream_ContentUnexpected(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_ContentUnexpected,p0);
+        }
+
+        internal static string BatchStream_GetMethodNotSupportedInChangeset {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_GetMethodNotSupportedInChangeset);
+            }
+        }
+
+        internal static string BatchStream_InvalidBatchFormat {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidBatchFormat);
+            }
+        }
+
+        internal static string BatchStream_InvalidDelimiter(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidDelimiter,p0);
+        }
+
+        internal static string BatchStream_MissingEndChangesetDelimiter {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingEndChangesetDelimiter);
+            }
+        }
+
+        internal static string BatchStream_InvalidHeaderValueSpecified(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidHeaderValueSpecified,p0);
+        }
+
+        internal static string BatchStream_InvalidContentLengthSpecified(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidContentLengthSpecified,p0);
+        }
+
+        internal static string BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch);
+            }
+        }
+
+        internal static string BatchStream_InvalidOperationHeaderSpecified {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidOperationHeaderSpecified);
+            }
+        }
+
+        internal static string BatchStream_InvalidHttpMethodName(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidHttpMethodName,p0);
+        }
+
+        internal static string BatchStream_MoreDataAfterEndOfBatch {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MoreDataAfterEndOfBatch);
+            }
+        }
+
+        internal static string BatchStream_InternalBufferRequestTooSmall {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InternalBufferRequestTooSmall);
+            }
+        }
+
+        internal static string BatchStream_InvalidMethodHeaderSpecified(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidMethodHeaderSpecified,p0);
+        }
+
+        internal static string BatchStream_InvalidHttpVersionSpecified(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidHttpVersionSpecified,p0,p1);
+        }
+
+        internal static string BatchStream_InvalidNumberOfHeadersAtOperationStart(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidNumberOfHeadersAtOperationStart,p0,p1);
+        }
+
+        internal static string BatchStream_MissingOrInvalidContentEncodingHeader(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingOrInvalidContentEncodingHeader,p0,p1);
+        }
+
+        internal static string BatchStream_InvalidNumberOfHeadersAtChangeSetStart(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidNumberOfHeadersAtChangeSetStart,p0,p1);
+        }
+
+        internal static string BatchStream_MissingContentTypeHeader(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_MissingContentTypeHeader,p0);
+        }
+
+        internal static string BatchStream_InvalidContentTypeSpecified(object p0, object p1, object p2, object p3) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.BatchStream_InvalidContentTypeSpecified,p0,p1,p2,p3);
+        }
+
+        internal static string Batch_ExpectedContentType(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_ExpectedContentType,p0);
+        }
+
+        internal static string Batch_ExpectedResponse(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_ExpectedResponse,p0);
+        }
+
+        internal static string Batch_IncompleteResponseCount {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_IncompleteResponseCount);
+            }
+        }
+
+        internal static string Batch_UnexpectedContent(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Batch_UnexpectedContent,p0);
+        }
+
+        internal static string Context_BaseUri {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_BaseUri);
+            }
+        }
+
+        internal static string Context_CannotConvertKey(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_CannotConvertKey,p0);
+        }
+
+        internal static string Context_TrackingExpectsAbsoluteUri {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_TrackingExpectsAbsoluteUri);
+            }
+        }
+
+        internal static string Context_LinkResourceInsertFailure {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_LinkResourceInsertFailure);
+            }
+        }
+
+        internal static string Context_InternalError(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_InternalError,p0);
+        }
+
+        internal static string Context_BatchExecuteError {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_BatchExecuteError);
+            }
+        }
+
+        internal static string Context_EntitySetName {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntitySetName);
+            }
+        }
+
+        internal static string Context_MissingEditLinkInResponseBody {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MissingEditLinkInResponseBody);
+            }
+        }
+
+        internal static string Context_MissingSelfLinkInResponseBody {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MissingSelfLinkInResponseBody);
+            }
+        }
+
+        internal static string Context_MissingEditMediaLinkInResponseBody {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MissingEditMediaLinkInResponseBody);
+            }
+        }
+
+        internal static string Content_EntityWithoutKey {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Content_EntityWithoutKey);
+            }
+        }
+
+        internal static string Content_EntityIsNotEntityType {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Content_EntityIsNotEntityType);
+            }
+        }
+
+        internal static string Context_EntityNotContained {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntityNotContained);
+            }
+        }
+
+        internal static string Context_EntityAlreadyContained {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntityAlreadyContained);
+            }
+        }
+
+        internal static string Context_DifferentEntityAlreadyContained {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_DifferentEntityAlreadyContained);
+            }
+        }
+
+        internal static string Context_DidNotOriginateAsync {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_DidNotOriginateAsync);
+            }
+        }
+
+        internal static string Context_AsyncAlreadyDone {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AsyncAlreadyDone);
+            }
+        }
+
+        internal static string Context_OperationCanceled {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_OperationCanceled);
+            }
+        }
+
+        internal static string Context_NoLoadWithInsertEnd {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoLoadWithInsertEnd);
+            }
+        }
+
+        internal static string Context_NoRelationWithInsertEnd {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoRelationWithInsertEnd);
+            }
+        }
+
+        internal static string Context_NoRelationWithDeleteEnd {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoRelationWithDeleteEnd);
+            }
+        }
+
+        internal static string Context_RelationAlreadyContained {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_RelationAlreadyContained);
+            }
+        }
+
+        internal static string Context_RelationNotRefOrCollection {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_RelationNotRefOrCollection);
+            }
+        }
+
+        internal static string Context_AddLinkCollectionOnly {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AddLinkCollectionOnly);
+            }
+        }
+
+        internal static string Context_AddRelatedObjectCollectionOnly {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AddRelatedObjectCollectionOnly);
+            }
+        }
+
+        internal static string Context_AddRelatedObjectSourceDeleted {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_AddRelatedObjectSourceDeleted);
+            }
+        }
+
+        internal static string Context_SetLinkReferenceOnly {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SetLinkReferenceOnly);
+            }
+        }
+
+        internal static string Context_NoContentTypeForMediaLink(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_NoContentTypeForMediaLink,p0,p1);
+        }
+
+        internal static string Context_BatchNotSupportedForMediaLink {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_BatchNotSupportedForMediaLink);
+            }
+        }
+
+        internal static string Context_UnexpectedZeroRawRead {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_UnexpectedZeroRawRead);
+            }
+        }
+
+        internal static string Context_VersionNotSupported(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_VersionNotSupported,p0,p1);
+        }
+
+        internal static string Context_SendingRequestEventArgsNotHttp {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SendingRequestEventArgsNotHttp);
+            }
+        }
+
+        internal static string Context_ChildResourceExists {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_ChildResourceExists);
+            }
+        }
+
+        internal static string Context_EntityNotMediaLinkEntry {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_EntityNotMediaLinkEntry);
+            }
+        }
+
+        internal static string Context_MLEWithoutSaveStream(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_MLEWithoutSaveStream,p0);
+        }
+
+        internal static string Context_SetSaveStreamOnMediaEntryProperty(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SetSaveStreamOnMediaEntryProperty,p0);
+        }
+
+        internal static string Context_SetSaveStreamWithoutEditMediaLink {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Context_SetSaveStreamWithoutEditMediaLink);
+            }
+        }
+
+        internal static string Collection_NullCollectionReference(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Collection_NullCollectionReference,p0,p1);
+        }
+
+        internal static string ClientType_MissingOpenProperty(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingOpenProperty,p0,p1);
+        }
+
+        internal static string Clienttype_MultipleOpenProperty(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Clienttype_MultipleOpenProperty,p0);
+        }
+
+        internal static string ClientType_MissingProperty(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingProperty,p0,p1);
+        }
+
+        internal static string ClientType_KeysMustBeSimpleTypes(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_KeysMustBeSimpleTypes,p0);
+        }
+
+        internal static string ClientType_KeysOnDifferentDeclaredType(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_KeysOnDifferentDeclaredType,p0);
+        }
+
+        internal static string ClientType_MissingMimeTypeProperty(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingMimeTypeProperty,p0,p1);
+        }
+
+        internal static string ClientType_MissingMediaEntryProperty(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MissingMediaEntryProperty,p0);
+        }
+
+        internal static string ClientType_NoSettableFields(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_NoSettableFields,p0);
+        }
+
+        internal static string ClientType_MultipleImplementationNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_MultipleImplementationNotSupported);
+            }
+        }
+
+        internal static string ClientType_NullOpenProperties(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_NullOpenProperties,p0);
+        }
+
+        internal static string ClientType_CollectionOfNonEntities {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_CollectionOfNonEntities);
+            }
+        }
+
+        internal static string ClientType_Ambiguous(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ClientType_Ambiguous,p0,p1);
+        }
+
+        internal static string DataServiceException_GeneralError {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceException_GeneralError);
+            }
+        }
+
+        internal static string DataServiceRequest_FailGetCount {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceRequest_FailGetCount);
+            }
+        }
+
+        internal static string Deserialize_GetEnumerator {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_GetEnumerator);
+            }
+        }
+
+        internal static string Deserialize_Current(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_Current,p0,p1);
+        }
+
+        internal static string Deserialize_MixedTextWithComment {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MixedTextWithComment);
+            }
+        }
+
+        internal static string Deserialize_ExpectingSimpleValue {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ExpectingSimpleValue);
+            }
+        }
+
+        internal static string Deserialize_NotApplicationXml {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_NotApplicationXml);
+            }
+        }
+
+        internal static string Deserialize_MismatchAtomLinkLocalSimple {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MismatchAtomLinkLocalSimple);
+            }
+        }
+
+        internal static string Deserialize_MismatchAtomLinkFeedPropertyNotCollection(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MismatchAtomLinkFeedPropertyNotCollection,p0);
+        }
+
+        internal static string Deserialize_MismatchAtomLinkEntryPropertyIsCollection(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MismatchAtomLinkEntryPropertyIsCollection,p0);
+        }
+
+        internal static string Deserialize_UnknownMimeTypeSpecified(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_UnknownMimeTypeSpecified,p0);
+        }
+
+        internal static string Deserialize_ExpectedEmptyMediaLinkEntryContent {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ExpectedEmptyMediaLinkEntryContent);
+            }
+        }
+
+        internal static string Deserialize_ContentPlusPropertiesNotAllowed {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ContentPlusPropertiesNotAllowed);
+            }
+        }
+
+        internal static string Deserialize_NoLocationHeader {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_NoLocationHeader);
+            }
+        }
+
+        internal static string Deserialize_ServerException(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_ServerException,p0);
+        }
+
+        internal static string Deserialize_MissingIdElement {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Deserialize_MissingIdElement);
+            }
+        }
+
+        internal static string EpmClientType_PropertyIsComplex(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmClientType_PropertyIsComplex,p0);
+        }
+
+        internal static string EpmClientType_PropertyIsPrimitive(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmClientType_PropertyIsPrimitive,p0);
+        }
+
+        internal static string EpmSourceTree_InvalidSourcePath(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmSourceTree_InvalidSourcePath,p0,p1);
+        }
+
+        internal static string EpmSourceTree_DuplicateEpmAttrsWithSameSourceName(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmSourceTree_DuplicateEpmAttrsWithSameSourceName,p0,p1);
+        }
+
+        internal static string EpmSourceTree_InaccessiblePropertyOnType(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmSourceTree_InaccessiblePropertyOnType,p0,p1);
+        }
+
+        internal static string EpmTargetTree_InvalidTargetPath(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmTargetTree_InvalidTargetPath,p0);
+        }
+
+        internal static string EpmTargetTree_AttributeInMiddle(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmTargetTree_AttributeInMiddle,p0);
+        }
+
+        internal static string EpmTargetTree_DuplicateEpmAttrsWithSameTargetName(object p0, object p1, object p2, object p3) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EpmTargetTree_DuplicateEpmAttrsWithSameTargetName,p0,p1,p2,p3);
+        }
+
+        internal static string EntityPropertyMapping_EpmAttribute(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EntityPropertyMapping_EpmAttribute,p0);
+        }
+
+        internal static string EntityPropertyMapping_TargetNamespaceUriNotValid(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.EntityPropertyMapping_TargetNamespaceUriNotValid,p0);
+        }
+
+        internal static string HttpProcessUtility_ContentTypeMissing {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_ContentTypeMissing);
+            }
+        }
+
+        internal static string HttpProcessUtility_MediaTypeMissingValue {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeMissingValue);
+            }
+        }
+
+        internal static string HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter);
+            }
+        }
+
+        internal static string HttpProcessUtility_MediaTypeRequiresSlash {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeRequiresSlash);
+            }
+        }
+
+        internal static string HttpProcessUtility_MediaTypeRequiresSubType {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeRequiresSubType);
+            }
+        }
+
+        internal static string HttpProcessUtility_MediaTypeUnspecified {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_MediaTypeUnspecified);
+            }
+        }
+
+        internal static string HttpProcessUtility_EncodingNotSupported(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_EncodingNotSupported,p0);
+        }
+
+        internal static string HttpProcessUtility_EscapeCharWithoutQuotes(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_EscapeCharWithoutQuotes,p0);
+        }
+
+        internal static string HttpProcessUtility_EscapeCharAtEnd(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_EscapeCharAtEnd,p0);
+        }
+
+        internal static string HttpProcessUtility_ClosingQuoteNotFound(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.HttpProcessUtility_ClosingQuoteNotFound,p0);
+        }
+
+        internal static string MaterializeFromAtom_CountNotPresent {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_CountNotPresent);
+            }
+        }
+
+        internal static string MaterializeFromAtom_CountFormatError {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_CountFormatError);
+            }
+        }
+
+        internal static string MaterializeFromAtom_TopLevelLinkNotAvailable {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_TopLevelLinkNotAvailable);
+            }
+        }
+
+        internal static string MaterializeFromAtom_CollectionKeyNotPresentInLinkTable {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_CollectionKeyNotPresentInLinkTable);
+            }
+        }
+
+        internal static string MaterializeFromAtom_GetNestLinkForFlatCollection {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.MaterializeFromAtom_GetNestLinkForFlatCollection);
+            }
+        }
+
+        internal static string Serializer_NullKeysAreNotSupported(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Serializer_NullKeysAreNotSupported,p0);
+        }
+
+        internal static string Util_EmptyString {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Util_EmptyString);
+            }
+        }
+
+        internal static string Util_EmptyArray {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Util_EmptyArray);
+            }
+        }
+
+        internal static string Util_NullArrayElement {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.Util_NullArrayElement);
+            }
+        }
+
+        internal static string ALinq_UnsupportedExpression(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_UnsupportedExpression,p0);
+        }
+
+        internal static string ALinq_CouldNotConvert(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CouldNotConvert,p0);
+        }
+
+        internal static string ALinq_MethodNotSupported(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_MethodNotSupported,p0);
+        }
+
+        internal static string ALinq_UnaryNotSupported(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_UnaryNotSupported,p0);
+        }
+
+        internal static string ALinq_BinaryNotSupported(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_BinaryNotSupported,p0);
+        }
+
+        internal static string ALinq_ConstantNotSupported(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ConstantNotSupported,p0);
+        }
+
+        internal static string ALinq_TypeBinaryNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_TypeBinaryNotSupported);
+            }
+        }
+
+        internal static string ALinq_ConditionalNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ConditionalNotSupported);
+            }
+        }
+
+        internal static string ALinq_ParameterNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ParameterNotSupported);
+            }
+        }
+
+        internal static string ALinq_MemberAccessNotSupported(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_MemberAccessNotSupported,p0);
+        }
+
+        internal static string ALinq_LambdaNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_LambdaNotSupported);
+            }
+        }
+
+        internal static string ALinq_NewNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_NewNotSupported);
+            }
+        }
+
+        internal static string ALinq_MemberInitNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_MemberInitNotSupported);
+            }
+        }
+
+        internal static string ALinq_ListInitNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ListInitNotSupported);
+            }
+        }
+
+        internal static string ALinq_NewArrayNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_NewArrayNotSupported);
+            }
+        }
+
+        internal static string ALinq_InvocationNotSupported {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_InvocationNotSupported);
+            }
+        }
+
+        internal static string ALinq_QueryOptionsOnlyAllowedOnLeafNodes {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_QueryOptionsOnlyAllowedOnLeafNodes);
+            }
+        }
+
+        internal static string ALinq_CantExpand {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantExpand);
+            }
+        }
+
+        internal static string ALinq_CantCastToUnsupportedPrimitive(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantCastToUnsupportedPrimitive,p0);
+        }
+
+        internal static string ALinq_CantNavigateWithoutKeyPredicate {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantNavigateWithoutKeyPredicate);
+            }
+        }
+
+        internal static string ALinq_CanOnlyApplyOneKeyPredicate {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CanOnlyApplyOneKeyPredicate);
+            }
+        }
+
+        internal static string ALinq_CantTranslateExpression(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantTranslateExpression,p0);
+        }
+
+        internal static string ALinq_TranslationError(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_TranslationError,p0);
+        }
+
+        internal static string ALinq_CantAddQueryOption {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddQueryOption);
+            }
+        }
+
+        internal static string ALinq_CantAddDuplicateQueryOption(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddDuplicateQueryOption,p0);
+        }
+
+        internal static string ALinq_CantAddAstoriaQueryOption(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddAstoriaQueryOption,p0);
+        }
+
+        internal static string ALinq_CantAddQueryOptionStartingWithDollarSign(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantAddQueryOptionStartingWithDollarSign,p0);
+        }
+
+        internal static string ALinq_CantReferToPublicField(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CantReferToPublicField,p0);
+        }
+
+        internal static string ALinq_QueryOptionsOnlyAllowedOnSingletons {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_QueryOptionsOnlyAllowedOnSingletons);
+            }
+        }
+
+        internal static string ALinq_QueryOptionOutOfOrder(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_QueryOptionOutOfOrder,p0,p1);
+        }
+
+        internal static string ALinq_CannotAddCountOption {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotAddCountOption);
+            }
+        }
+
+        internal static string ALinq_CannotAddCountOptionConflict {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotAddCountOptionConflict);
+            }
+        }
+
+        internal static string ALinq_ProjectionOnlyAllowedOnLeafNodes {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ProjectionOnlyAllowedOnLeafNodes);
+            }
+        }
+
+        internal static string ALinq_ProjectionCanOnlyHaveOneProjection {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ProjectionCanOnlyHaveOneProjection);
+            }
+        }
+
+        internal static string ALinq_ProjectionMemberAssignmentMismatch(object p0, object p1, object p2) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ProjectionMemberAssignmentMismatch,p0,p1,p2);
+        }
+
+        internal static string ALinq_ExpressionNotSupportedInProjectionToEntity(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ExpressionNotSupportedInProjectionToEntity,p0,p1);
+        }
+
+        internal static string ALinq_ExpressionNotSupportedInProjection(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_ExpressionNotSupportedInProjection,p0,p1);
+        }
+
+        internal static string ALinq_CannotConstructKnownEntityTypes {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotConstructKnownEntityTypes);
+            }
+        }
+
+        internal static string ALinq_CannotCreateConstantEntity {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotCreateConstantEntity);
+            }
+        }
+
+        internal static string ALinq_PropertyNamesMustMatchInProjections(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_PropertyNamesMustMatchInProjections,p0,p1);
+        }
+
+        internal static string ALinq_CanOnlyProjectTheLeaf {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CanOnlyProjectTheLeaf);
+            }
+        }
+
+        internal static string ALinq_CannotProjectWithExplicitExpansion {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.ALinq_CannotProjectWithExplicitExpansion);
+            }
+        }
+
+        internal static string DSKAttribute_MustSpecifyAtleastOnePropertyName {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DSKAttribute_MustSpecifyAtleastOnePropertyName);
+            }
+        }
+
+        internal static string DataServiceCollection_LoadRequiresTargetCollectionObserved {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_LoadRequiresTargetCollectionObserved);
+            }
+        }
+
+        internal static string DataServiceCollection_CannotStopTrackingChildCollection {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_CannotStopTrackingChildCollection);
+            }
+        }
+
+        internal static string DataServiceCollection_OperationForTrackedOnly {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_OperationForTrackedOnly);
+            }
+        }
+
+        internal static string DataServiceCollection_CannotDetermineContextFromItems {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_CannotDetermineContextFromItems);
+            }
+        }
+
+        internal static string DataServiceCollection_InsertIntoTrackedButNotLoadedCollection {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataServiceCollection_InsertIntoTrackedButNotLoadedCollection);
+            }
+        }
+
+        internal static string DataBinding_DataServiceCollectionArgumentMustHaveEntityType(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_DataServiceCollectionArgumentMustHaveEntityType,p0);
+        }
+
+        internal static string DataBinding_CollectionPropertySetterValueHasObserver(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_CollectionPropertySetterValueHasObserver,p0,p1);
+        }
+
+        internal static string DataBinding_CollectionChangedUnknownAction(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_CollectionChangedUnknownAction,p0);
+        }
+
+        internal static string DataBinding_BindingOperation_DetachedSource {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_BindingOperation_DetachedSource);
+            }
+        }
+
+        internal static string DataBinding_BindingOperation_ArrayItemNull(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_BindingOperation_ArrayItemNull,p0);
+        }
+
+        internal static string DataBinding_BindingOperation_ArrayItemNotEntity(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_BindingOperation_ArrayItemNotEntity,p0);
+        }
+
+        internal static string DataBinding_Util_UnknownEntitySetName(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_Util_UnknownEntitySetName,p0);
+        }
+
+        internal static string DataBinding_EntityAlreadyInCollection(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_EntityAlreadyInCollection,p0);
+        }
+
+        internal static string DataBinding_NotifyPropertyChangedNotImpl(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_NotifyPropertyChangedNotImpl,p0);
+        }
+
+        internal static string DataBinding_ComplexObjectAssociatedWithMultipleEntities(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.DataBinding_ComplexObjectAssociatedWithMultipleEntities,p0);
+        }
+
+        internal static string AtomParser_FeedUnexpected {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_FeedUnexpected);
+            }
+        }
+
+        internal static string AtomParser_PagingLinkOutsideOfFeed {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_PagingLinkOutsideOfFeed);
+            }
+        }
+
+        internal static string AtomParser_ManyFeedCounts {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_ManyFeedCounts);
+            }
+        }
+
+        internal static string AtomParser_FeedCountNotUnderFeed {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_FeedCountNotUnderFeed);
+            }
+        }
+
+        internal static string AtomParser_UnexpectedContentUnderExpandedLink {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomParser_UnexpectedContentUnderExpandedLink);
+            }
+        }
+
+        internal static string AtomMaterializer_CannotAssignNull(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_CannotAssignNull,p0,p1);
+        }
+
+        internal static string AtomMaterializer_DuplicatedNextLink {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_DuplicatedNextLink);
+            }
+        }
+
+        internal static string AtomMaterializer_EntryIntoCollectionMismatch(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_EntryIntoCollectionMismatch,p0,p1);
+        }
+
+        internal static string AtomMaterializer_EntryToAccessIsNull(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_EntryToAccessIsNull,p0);
+        }
+
+        internal static string AtomMaterializer_EntryToInitializeIsNull(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_EntryToInitializeIsNull,p0);
+        }
+
+        internal static string AtomMaterializer_ProjectEntityTypeMismatch(object p0, object p1, object p2) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_ProjectEntityTypeMismatch,p0,p1,p2);
+        }
+
+        internal static string AtomMaterializer_LinksMissingHref {
+            get {
+                return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_LinksMissingHref);
+            }
+        }
+
+        internal static string AtomMaterializer_PropertyMissing(object p0) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_PropertyMissing,p0);
+        }
+
+        internal static string AtomMaterializer_PropertyMissingFromEntry(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_PropertyMissingFromEntry,p0,p1);
+        }
+
+        internal static string AtomMaterializer_PropertyNotExpectedEntry(object p0, object p1) {
+            return System.Data.Services.Client.TextRes.GetString(System.Data.Services.Client.TextRes.AtomMaterializer_PropertyNotExpectedEntry,p0,p1);
+        }
+
+    }
+
+    internal static partial class Error {
+
+        internal static Exception ArgumentNull(string paramName) {
+            return new ArgumentNullException(paramName);
+        }
+        
+        internal static Exception ArgumentOutOfRange(string paramName) {
+            return new ArgumentOutOfRangeException(paramName);
+        }
+
+        internal static Exception NotImplemented() {
+            return new NotImplementedException();
+        }
+
+        internal static Exception NotSupported() {
+            return new NotSupportedException();
+        }        
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System.Data.Services.Client.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System.Data.Services.Client.cs
@@ -1,313 +1,313 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client {
-    using System;
-    using System.Reflection;
-    using System.Globalization;
-    using System.Resources;
-    using System.Text;
-    using System.Threading;
-    using System.ComponentModel;
-    using System.Security.Permissions;
-
-    [AttributeUsage(AttributeTargets.All)]
-    internal sealed class TextResDescriptionAttribute : DescriptionAttribute {
-
-        private bool replaced;
-
-
-        public TextResDescriptionAttribute(string description) : base(description) {
-        }
-
-        public override string Description {
-            get {
-                if (!replaced) {
-                    replaced = true;
-                    DescriptionValue = TextRes.GetString(base.Description);
-                }
-                return base.Description;
-            }
-        }
-    }
-
-    [AttributeUsage(AttributeTargets.All)]
-    internal sealed class TextResCategoryAttribute : CategoryAttribute {
-
-        public TextResCategoryAttribute(string category) : base(category) {
-        }
-
-        protected override string GetLocalizedString(string value) {
-            return TextRes.GetString(value);
-        }
-    }
-
-    
-    internal sealed class TextRes {
-        internal const string BatchStream_MissingBoundary = "BatchStream_MissingBoundary";
-        internal const string BatchStream_ContentExpected = "BatchStream_ContentExpected";
-        internal const string BatchStream_ContentUnexpected = "BatchStream_ContentUnexpected";
-        internal const string BatchStream_GetMethodNotSupportedInChangeset = "BatchStream_GetMethodNotSupportedInChangeset";
-        internal const string BatchStream_InvalidBatchFormat = "BatchStream_InvalidBatchFormat";
-        internal const string BatchStream_InvalidDelimiter = "BatchStream_InvalidDelimiter";
-        internal const string BatchStream_MissingEndChangesetDelimiter = "BatchStream_MissingEndChangesetDelimiter";
-        internal const string BatchStream_InvalidHeaderValueSpecified = "BatchStream_InvalidHeaderValueSpecified";
-        internal const string BatchStream_InvalidContentLengthSpecified = "BatchStream_InvalidContentLengthSpecified";
-        internal const string BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch = "BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch";
-        internal const string BatchStream_InvalidOperationHeaderSpecified = "BatchStream_InvalidOperationHeaderSpecified";
-        internal const string BatchStream_InvalidHttpMethodName = "BatchStream_InvalidHttpMethodName";
-        internal const string BatchStream_MoreDataAfterEndOfBatch = "BatchStream_MoreDataAfterEndOfBatch";
-        internal const string BatchStream_InternalBufferRequestTooSmall = "BatchStream_InternalBufferRequestTooSmall";
-        internal const string BatchStream_InvalidMethodHeaderSpecified = "BatchStream_InvalidMethodHeaderSpecified";
-        internal const string BatchStream_InvalidHttpVersionSpecified = "BatchStream_InvalidHttpVersionSpecified";
-        internal const string BatchStream_InvalidNumberOfHeadersAtOperationStart = "BatchStream_InvalidNumberOfHeadersAtOperationStart";
-        internal const string BatchStream_MissingOrInvalidContentEncodingHeader = "BatchStream_MissingOrInvalidContentEncodingHeader";
-        internal const string BatchStream_InvalidNumberOfHeadersAtChangeSetStart = "BatchStream_InvalidNumberOfHeadersAtChangeSetStart";
-        internal const string BatchStream_MissingContentTypeHeader = "BatchStream_MissingContentTypeHeader";
-        internal const string BatchStream_InvalidContentTypeSpecified = "BatchStream_InvalidContentTypeSpecified";
-        internal const string Batch_ExpectedContentType = "Batch_ExpectedContentType";
-        internal const string Batch_ExpectedResponse = "Batch_ExpectedResponse";
-        internal const string Batch_IncompleteResponseCount = "Batch_IncompleteResponseCount";
-        internal const string Batch_UnexpectedContent = "Batch_UnexpectedContent";
-        internal const string Context_BaseUri = "Context_BaseUri";
-        internal const string Context_CannotConvertKey = "Context_CannotConvertKey";
-        internal const string Context_TrackingExpectsAbsoluteUri = "Context_TrackingExpectsAbsoluteUri";
-        internal const string Context_LinkResourceInsertFailure = "Context_LinkResourceInsertFailure";
-        internal const string Context_InternalError = "Context_InternalError";
-        internal const string Context_BatchExecuteError = "Context_BatchExecuteError";
-        internal const string Context_EntitySetName = "Context_EntitySetName";
-        internal const string Context_MissingEditLinkInResponseBody = "Context_MissingEditLinkInResponseBody";
-        internal const string Context_MissingSelfLinkInResponseBody = "Context_MissingSelfLinkInResponseBody";
-        internal const string Context_MissingEditMediaLinkInResponseBody = "Context_MissingEditMediaLinkInResponseBody";
-        internal const string Content_EntityWithoutKey = "Content_EntityWithoutKey";
-        internal const string Content_EntityIsNotEntityType = "Content_EntityIsNotEntityType";
-        internal const string Context_EntityNotContained = "Context_EntityNotContained";
-        internal const string Context_EntityAlreadyContained = "Context_EntityAlreadyContained";
-        internal const string Context_DifferentEntityAlreadyContained = "Context_DifferentEntityAlreadyContained";
-        internal const string Context_DidNotOriginateAsync = "Context_DidNotOriginateAsync";
-        internal const string Context_AsyncAlreadyDone = "Context_AsyncAlreadyDone";
-        internal const string Context_OperationCanceled = "Context_OperationCanceled";
-        internal const string Context_NoLoadWithInsertEnd = "Context_NoLoadWithInsertEnd";
-        internal const string Context_NoRelationWithInsertEnd = "Context_NoRelationWithInsertEnd";
-        internal const string Context_NoRelationWithDeleteEnd = "Context_NoRelationWithDeleteEnd";
-        internal const string Context_RelationAlreadyContained = "Context_RelationAlreadyContained";
-        internal const string Context_RelationNotRefOrCollection = "Context_RelationNotRefOrCollection";
-        internal const string Context_AddLinkCollectionOnly = "Context_AddLinkCollectionOnly";
-        internal const string Context_AddRelatedObjectCollectionOnly = "Context_AddRelatedObjectCollectionOnly";
-        internal const string Context_AddRelatedObjectSourceDeleted = "Context_AddRelatedObjectSourceDeleted";
-        internal const string Context_SetLinkReferenceOnly = "Context_SetLinkReferenceOnly";
-        internal const string Context_NoContentTypeForMediaLink = "Context_NoContentTypeForMediaLink";
-        internal const string Context_BatchNotSupportedForMediaLink = "Context_BatchNotSupportedForMediaLink";
-        internal const string Context_UnexpectedZeroRawRead = "Context_UnexpectedZeroRawRead";
-        internal const string Context_VersionNotSupported = "Context_VersionNotSupported";
-        internal const string Context_SendingRequestEventArgsNotHttp = "Context_SendingRequestEventArgsNotHttp";
-        internal const string Context_ChildResourceExists = "Context_ChildResourceExists";
-        internal const string Context_EntityNotMediaLinkEntry = "Context_EntityNotMediaLinkEntry";
-        internal const string Context_MLEWithoutSaveStream = "Context_MLEWithoutSaveStream";
-        internal const string Context_SetSaveStreamOnMediaEntryProperty = "Context_SetSaveStreamOnMediaEntryProperty";
-        internal const string Context_SetSaveStreamWithoutEditMediaLink = "Context_SetSaveStreamWithoutEditMediaLink";
-        internal const string Collection_NullCollectionReference = "Collection_NullCollectionReference";
-        internal const string ClientType_MissingOpenProperty = "ClientType_MissingOpenProperty";
-        internal const string Clienttype_MultipleOpenProperty = "Clienttype_MultipleOpenProperty";
-        internal const string ClientType_MissingProperty = "ClientType_MissingProperty";
-        internal const string ClientType_KeysMustBeSimpleTypes = "ClientType_KeysMustBeSimpleTypes";
-        internal const string ClientType_KeysOnDifferentDeclaredType = "ClientType_KeysOnDifferentDeclaredType";
-        internal const string ClientType_MissingMimeTypeProperty = "ClientType_MissingMimeTypeProperty";
-        internal const string ClientType_MissingMediaEntryProperty = "ClientType_MissingMediaEntryProperty";
-        internal const string ClientType_NoSettableFields = "ClientType_NoSettableFields";
-        internal const string ClientType_MultipleImplementationNotSupported = "ClientType_MultipleImplementationNotSupported";
-        internal const string ClientType_NullOpenProperties = "ClientType_NullOpenProperties";
-        internal const string ClientType_CollectionOfNonEntities = "ClientType_CollectionOfNonEntities";
-        internal const string ClientType_Ambiguous = "ClientType_Ambiguous";
-        internal const string DataServiceException_GeneralError = "DataServiceException_GeneralError";
-        internal const string DataServiceRequest_FailGetCount = "DataServiceRequest_FailGetCount";
-        internal const string Deserialize_GetEnumerator = "Deserialize_GetEnumerator";
-        internal const string Deserialize_Current = "Deserialize_Current";
-        internal const string Deserialize_MixedTextWithComment = "Deserialize_MixedTextWithComment";
-        internal const string Deserialize_ExpectingSimpleValue = "Deserialize_ExpectingSimpleValue";
-        internal const string Deserialize_NotApplicationXml = "Deserialize_NotApplicationXml";
-        internal const string Deserialize_MismatchAtomLinkLocalSimple = "Deserialize_MismatchAtomLinkLocalSimple";
-        internal const string Deserialize_MismatchAtomLinkFeedPropertyNotCollection = "Deserialize_MismatchAtomLinkFeedPropertyNotCollection";
-        internal const string Deserialize_MismatchAtomLinkEntryPropertyIsCollection = "Deserialize_MismatchAtomLinkEntryPropertyIsCollection";
-        internal const string Deserialize_UnknownMimeTypeSpecified = "Deserialize_UnknownMimeTypeSpecified";
-        internal const string Deserialize_ExpectedEmptyMediaLinkEntryContent = "Deserialize_ExpectedEmptyMediaLinkEntryContent";
-        internal const string Deserialize_ContentPlusPropertiesNotAllowed = "Deserialize_ContentPlusPropertiesNotAllowed";
-        internal const string Deserialize_NoLocationHeader = "Deserialize_NoLocationHeader";
-        internal const string Deserialize_ServerException = "Deserialize_ServerException";
-        internal const string Deserialize_MissingIdElement = "Deserialize_MissingIdElement";
-        internal const string EpmClientType_PropertyIsComplex = "EpmClientType_PropertyIsComplex";
-        internal const string EpmClientType_PropertyIsPrimitive = "EpmClientType_PropertyIsPrimitive";
-        internal const string EpmSourceTree_InvalidSourcePath = "EpmSourceTree_InvalidSourcePath";
-        internal const string EpmSourceTree_DuplicateEpmAttrsWithSameSourceName = "EpmSourceTree_DuplicateEpmAttrsWithSameSourceName";
-        internal const string EpmSourceTree_InaccessiblePropertyOnType = "EpmSourceTree_InaccessiblePropertyOnType";
-        internal const string EpmTargetTree_InvalidTargetPath = "EpmTargetTree_InvalidTargetPath";
-        internal const string EpmTargetTree_AttributeInMiddle = "EpmTargetTree_AttributeInMiddle";
-        internal const string EpmTargetTree_DuplicateEpmAttrsWithSameTargetName = "EpmTargetTree_DuplicateEpmAttrsWithSameTargetName";
-        internal const string EntityPropertyMapping_EpmAttribute = "EntityPropertyMapping_EpmAttribute";
-        internal const string EntityPropertyMapping_TargetNamespaceUriNotValid = "EntityPropertyMapping_TargetNamespaceUriNotValid";
-        internal const string HttpProcessUtility_ContentTypeMissing = "HttpProcessUtility_ContentTypeMissing";
-        internal const string HttpProcessUtility_MediaTypeMissingValue = "HttpProcessUtility_MediaTypeMissingValue";
-        internal const string HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter = "HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter";
-        internal const string HttpProcessUtility_MediaTypeRequiresSlash = "HttpProcessUtility_MediaTypeRequiresSlash";
-        internal const string HttpProcessUtility_MediaTypeRequiresSubType = "HttpProcessUtility_MediaTypeRequiresSubType";
-        internal const string HttpProcessUtility_MediaTypeUnspecified = "HttpProcessUtility_MediaTypeUnspecified";
-        internal const string HttpProcessUtility_EncodingNotSupported = "HttpProcessUtility_EncodingNotSupported";
-        internal const string HttpProcessUtility_EscapeCharWithoutQuotes = "HttpProcessUtility_EscapeCharWithoutQuotes";
-        internal const string HttpProcessUtility_EscapeCharAtEnd = "HttpProcessUtility_EscapeCharAtEnd";
-        internal const string HttpProcessUtility_ClosingQuoteNotFound = "HttpProcessUtility_ClosingQuoteNotFound";
-        internal const string MaterializeFromAtom_CountNotPresent = "MaterializeFromAtom_CountNotPresent";
-        internal const string MaterializeFromAtom_CountFormatError = "MaterializeFromAtom_CountFormatError";
-        internal const string MaterializeFromAtom_TopLevelLinkNotAvailable = "MaterializeFromAtom_TopLevelLinkNotAvailable";
-        internal const string MaterializeFromAtom_CollectionKeyNotPresentInLinkTable = "MaterializeFromAtom_CollectionKeyNotPresentInLinkTable";
-        internal const string MaterializeFromAtom_GetNestLinkForFlatCollection = "MaterializeFromAtom_GetNestLinkForFlatCollection";
-        internal const string Serializer_NullKeysAreNotSupported = "Serializer_NullKeysAreNotSupported";
-        internal const string Util_EmptyString = "Util_EmptyString";
-        internal const string Util_EmptyArray = "Util_EmptyArray";
-        internal const string Util_NullArrayElement = "Util_NullArrayElement";
-        internal const string ALinq_UnsupportedExpression = "ALinq_UnsupportedExpression";
-        internal const string ALinq_CouldNotConvert = "ALinq_CouldNotConvert";
-        internal const string ALinq_MethodNotSupported = "ALinq_MethodNotSupported";
-        internal const string ALinq_UnaryNotSupported = "ALinq_UnaryNotSupported";
-        internal const string ALinq_BinaryNotSupported = "ALinq_BinaryNotSupported";
-        internal const string ALinq_ConstantNotSupported = "ALinq_ConstantNotSupported";
-        internal const string ALinq_TypeBinaryNotSupported = "ALinq_TypeBinaryNotSupported";
-        internal const string ALinq_ConditionalNotSupported = "ALinq_ConditionalNotSupported";
-        internal const string ALinq_ParameterNotSupported = "ALinq_ParameterNotSupported";
-        internal const string ALinq_MemberAccessNotSupported = "ALinq_MemberAccessNotSupported";
-        internal const string ALinq_LambdaNotSupported = "ALinq_LambdaNotSupported";
-        internal const string ALinq_NewNotSupported = "ALinq_NewNotSupported";
-        internal const string ALinq_MemberInitNotSupported = "ALinq_MemberInitNotSupported";
-        internal const string ALinq_ListInitNotSupported = "ALinq_ListInitNotSupported";
-        internal const string ALinq_NewArrayNotSupported = "ALinq_NewArrayNotSupported";
-        internal const string ALinq_InvocationNotSupported = "ALinq_InvocationNotSupported";
-        internal const string ALinq_QueryOptionsOnlyAllowedOnLeafNodes = "ALinq_QueryOptionsOnlyAllowedOnLeafNodes";
-        internal const string ALinq_CantExpand = "ALinq_CantExpand";
-        internal const string ALinq_CantCastToUnsupportedPrimitive = "ALinq_CantCastToUnsupportedPrimitive";
-        internal const string ALinq_CantNavigateWithoutKeyPredicate = "ALinq_CantNavigateWithoutKeyPredicate";
-        internal const string ALinq_CanOnlyApplyOneKeyPredicate = "ALinq_CanOnlyApplyOneKeyPredicate";
-        internal const string ALinq_CantTranslateExpression = "ALinq_CantTranslateExpression";
-        internal const string ALinq_TranslationError = "ALinq_TranslationError";
-        internal const string ALinq_CantAddQueryOption = "ALinq_CantAddQueryOption";
-        internal const string ALinq_CantAddDuplicateQueryOption = "ALinq_CantAddDuplicateQueryOption";
-        internal const string ALinq_CantAddAstoriaQueryOption = "ALinq_CantAddAstoriaQueryOption";
-        internal const string ALinq_CantAddQueryOptionStartingWithDollarSign = "ALinq_CantAddQueryOptionStartingWithDollarSign";
-        internal const string ALinq_CantReferToPublicField = "ALinq_CantReferToPublicField";
-        internal const string ALinq_QueryOptionsOnlyAllowedOnSingletons = "ALinq_QueryOptionsOnlyAllowedOnSingletons";
-        internal const string ALinq_QueryOptionOutOfOrder = "ALinq_QueryOptionOutOfOrder";
-        internal const string ALinq_CannotAddCountOption = "ALinq_CannotAddCountOption";
-        internal const string ALinq_CannotAddCountOptionConflict = "ALinq_CannotAddCountOptionConflict";
-        internal const string ALinq_ProjectionOnlyAllowedOnLeafNodes = "ALinq_ProjectionOnlyAllowedOnLeafNodes";
-        internal const string ALinq_ProjectionCanOnlyHaveOneProjection = "ALinq_ProjectionCanOnlyHaveOneProjection";
-        internal const string ALinq_ProjectionMemberAssignmentMismatch = "ALinq_ProjectionMemberAssignmentMismatch";
-        internal const string ALinq_ExpressionNotSupportedInProjectionToEntity = "ALinq_ExpressionNotSupportedInProjectionToEntity";
-        internal const string ALinq_ExpressionNotSupportedInProjection = "ALinq_ExpressionNotSupportedInProjection";
-        internal const string ALinq_CannotConstructKnownEntityTypes = "ALinq_CannotConstructKnownEntityTypes";
-        internal const string ALinq_CannotCreateConstantEntity = "ALinq_CannotCreateConstantEntity";
-        internal const string ALinq_PropertyNamesMustMatchInProjections = "ALinq_PropertyNamesMustMatchInProjections";
-        internal const string ALinq_CanOnlyProjectTheLeaf = "ALinq_CanOnlyProjectTheLeaf";
-        internal const string ALinq_CannotProjectWithExplicitExpansion = "ALinq_CannotProjectWithExplicitExpansion";
-        internal const string DSKAttribute_MustSpecifyAtleastOnePropertyName = "DSKAttribute_MustSpecifyAtleastOnePropertyName";
-        internal const string DataServiceCollection_LoadRequiresTargetCollectionObserved = "DataServiceCollection_LoadRequiresTargetCollectionObserved";
-        internal const string DataServiceCollection_CannotStopTrackingChildCollection = "DataServiceCollection_CannotStopTrackingChildCollection";
-        internal const string DataServiceCollection_OperationForTrackedOnly = "DataServiceCollection_OperationForTrackedOnly";
-        internal const string DataServiceCollection_CannotDetermineContextFromItems = "DataServiceCollection_CannotDetermineContextFromItems";
-        internal const string DataServiceCollection_InsertIntoTrackedButNotLoadedCollection = "DataServiceCollection_InsertIntoTrackedButNotLoadedCollection";
-        internal const string DataBinding_DataServiceCollectionArgumentMustHaveEntityType = "DataBinding_DataServiceCollectionArgumentMustHaveEntityType";
-        internal const string DataBinding_CollectionPropertySetterValueHasObserver = "DataBinding_CollectionPropertySetterValueHasObserver";
-        internal const string DataBinding_CollectionChangedUnknownAction = "DataBinding_CollectionChangedUnknownAction";
-        internal const string DataBinding_BindingOperation_DetachedSource = "DataBinding_BindingOperation_DetachedSource";
-        internal const string DataBinding_BindingOperation_ArrayItemNull = "DataBinding_BindingOperation_ArrayItemNull";
-        internal const string DataBinding_BindingOperation_ArrayItemNotEntity = "DataBinding_BindingOperation_ArrayItemNotEntity";
-        internal const string DataBinding_Util_UnknownEntitySetName = "DataBinding_Util_UnknownEntitySetName";
-        internal const string DataBinding_EntityAlreadyInCollection = "DataBinding_EntityAlreadyInCollection";
-        internal const string DataBinding_NotifyPropertyChangedNotImpl = "DataBinding_NotifyPropertyChangedNotImpl";
-        internal const string DataBinding_ComplexObjectAssociatedWithMultipleEntities = "DataBinding_ComplexObjectAssociatedWithMultipleEntities";
-        internal const string AtomParser_FeedUnexpected = "AtomParser_FeedUnexpected";
-        internal const string AtomParser_PagingLinkOutsideOfFeed = "AtomParser_PagingLinkOutsideOfFeed";
-        internal const string AtomParser_ManyFeedCounts = "AtomParser_ManyFeedCounts";
-        internal const string AtomParser_FeedCountNotUnderFeed = "AtomParser_FeedCountNotUnderFeed";
-        internal const string AtomParser_UnexpectedContentUnderExpandedLink = "AtomParser_UnexpectedContentUnderExpandedLink";
-        internal const string AtomMaterializer_CannotAssignNull = "AtomMaterializer_CannotAssignNull";
-        internal const string AtomMaterializer_DuplicatedNextLink = "AtomMaterializer_DuplicatedNextLink";
-        internal const string AtomMaterializer_EntryIntoCollectionMismatch = "AtomMaterializer_EntryIntoCollectionMismatch";
-        internal const string AtomMaterializer_EntryToAccessIsNull = "AtomMaterializer_EntryToAccessIsNull";
-        internal const string AtomMaterializer_EntryToInitializeIsNull = "AtomMaterializer_EntryToInitializeIsNull";
-        internal const string AtomMaterializer_ProjectEntityTypeMismatch = "AtomMaterializer_ProjectEntityTypeMismatch";
-        internal const string AtomMaterializer_LinksMissingHref = "AtomMaterializer_LinksMissingHref";
-        internal const string AtomMaterializer_PropertyMissing = "AtomMaterializer_PropertyMissing";
-        internal const string AtomMaterializer_PropertyMissingFromEntry = "AtomMaterializer_PropertyMissingFromEntry";
-        internal const string AtomMaterializer_PropertyNotExpectedEntry = "AtomMaterializer_PropertyNotExpectedEntry";
-
-        static TextRes loader;
-        ResourceManager resources;
-
-        internal TextRes() {
-            resources = new System.Resources.ResourceManager("System.Data.Services.Client", this.GetType().Assembly);
-        }
-        
-        private static TextRes GetLoader() {
-            if (loader == null) {
-                TextRes sr = new TextRes();
-                Interlocked.CompareExchange(ref loader, sr, null);
-            }
-            return loader;
-        }
-
-        private static CultureInfo Culture {
-            get { return null; }
-        }
-        
-#if !TEXTRES_ONLYGETSTRING
-        public static ResourceManager Resources {
-            get {
-                return GetLoader().resources;
-            }
-        }
-        
-#endif
-        public static string GetString(string name, params object[] args) {
-            TextRes sys = GetLoader();
-            if (sys == null)
-                return null;
-            string res = sys.resources.GetString(name, TextRes.Culture);
-
-            if (args != null && args.Length > 0) {
-                for (int i = 0; i < args.Length; i ++) {
-                    String value = args[i] as String;
-                    if (value != null && value.Length > 1024) {
-                        args[i] = value.Substring(0, 1024 - 3) + "...";
-                    }
-                }
-                return String.Format(CultureInfo.CurrentCulture, res, args);
-            }
-            else {
-                return res;
-            }
-        }
-
-        public static string GetString(string name) {
-            TextRes sys = GetLoader();
-            if (sys == null)
-                return null;
-            return sys.resources.GetString(name, TextRes.Culture);
-        }
-        
-#if !TEXTRES_ONLYGETSTRING
-        public static object GetObject(string name) {
-            TextRes sys = GetLoader();
-            if (sys == null)
-                return null;
-            return sys.resources.GetObject(name, TextRes.Culture);
-        }
-#endif
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client {
+    using System;
+    using System.Reflection;
+    using System.Globalization;
+    using System.Resources;
+    using System.Text;
+    using System.Threading;
+    using System.ComponentModel;
+    using System.Security.Permissions;
+
+    [AttributeUsage(AttributeTargets.All)]
+    internal sealed class TextResDescriptionAttribute : DescriptionAttribute {
+
+        private bool replaced;
+
+
+        public TextResDescriptionAttribute(string description) : base(description) {
+        }
+
+        public override string Description {
+            get {
+                if (!replaced) {
+                    replaced = true;
+                    DescriptionValue = TextRes.GetString(base.Description);
+                }
+                return base.Description;
+            }
+        }
+    }
+
+    [AttributeUsage(AttributeTargets.All)]
+    internal sealed class TextResCategoryAttribute : CategoryAttribute {
+
+        public TextResCategoryAttribute(string category) : base(category) {
+        }
+
+        protected override string GetLocalizedString(string value) {
+            return TextRes.GetString(value);
+        }
+    }
+
+    
+    internal sealed class TextRes {
+        internal const string BatchStream_MissingBoundary = "BatchStream_MissingBoundary";
+        internal const string BatchStream_ContentExpected = "BatchStream_ContentExpected";
+        internal const string BatchStream_ContentUnexpected = "BatchStream_ContentUnexpected";
+        internal const string BatchStream_GetMethodNotSupportedInChangeset = "BatchStream_GetMethodNotSupportedInChangeset";
+        internal const string BatchStream_InvalidBatchFormat = "BatchStream_InvalidBatchFormat";
+        internal const string BatchStream_InvalidDelimiter = "BatchStream_InvalidDelimiter";
+        internal const string BatchStream_MissingEndChangesetDelimiter = "BatchStream_MissingEndChangesetDelimiter";
+        internal const string BatchStream_InvalidHeaderValueSpecified = "BatchStream_InvalidHeaderValueSpecified";
+        internal const string BatchStream_InvalidContentLengthSpecified = "BatchStream_InvalidContentLengthSpecified";
+        internal const string BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch = "BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch";
+        internal const string BatchStream_InvalidOperationHeaderSpecified = "BatchStream_InvalidOperationHeaderSpecified";
+        internal const string BatchStream_InvalidHttpMethodName = "BatchStream_InvalidHttpMethodName";
+        internal const string BatchStream_MoreDataAfterEndOfBatch = "BatchStream_MoreDataAfterEndOfBatch";
+        internal const string BatchStream_InternalBufferRequestTooSmall = "BatchStream_InternalBufferRequestTooSmall";
+        internal const string BatchStream_InvalidMethodHeaderSpecified = "BatchStream_InvalidMethodHeaderSpecified";
+        internal const string BatchStream_InvalidHttpVersionSpecified = "BatchStream_InvalidHttpVersionSpecified";
+        internal const string BatchStream_InvalidNumberOfHeadersAtOperationStart = "BatchStream_InvalidNumberOfHeadersAtOperationStart";
+        internal const string BatchStream_MissingOrInvalidContentEncodingHeader = "BatchStream_MissingOrInvalidContentEncodingHeader";
+        internal const string BatchStream_InvalidNumberOfHeadersAtChangeSetStart = "BatchStream_InvalidNumberOfHeadersAtChangeSetStart";
+        internal const string BatchStream_MissingContentTypeHeader = "BatchStream_MissingContentTypeHeader";
+        internal const string BatchStream_InvalidContentTypeSpecified = "BatchStream_InvalidContentTypeSpecified";
+        internal const string Batch_ExpectedContentType = "Batch_ExpectedContentType";
+        internal const string Batch_ExpectedResponse = "Batch_ExpectedResponse";
+        internal const string Batch_IncompleteResponseCount = "Batch_IncompleteResponseCount";
+        internal const string Batch_UnexpectedContent = "Batch_UnexpectedContent";
+        internal const string Context_BaseUri = "Context_BaseUri";
+        internal const string Context_CannotConvertKey = "Context_CannotConvertKey";
+        internal const string Context_TrackingExpectsAbsoluteUri = "Context_TrackingExpectsAbsoluteUri";
+        internal const string Context_LinkResourceInsertFailure = "Context_LinkResourceInsertFailure";
+        internal const string Context_InternalError = "Context_InternalError";
+        internal const string Context_BatchExecuteError = "Context_BatchExecuteError";
+        internal const string Context_EntitySetName = "Context_EntitySetName";
+        internal const string Context_MissingEditLinkInResponseBody = "Context_MissingEditLinkInResponseBody";
+        internal const string Context_MissingSelfLinkInResponseBody = "Context_MissingSelfLinkInResponseBody";
+        internal const string Context_MissingEditMediaLinkInResponseBody = "Context_MissingEditMediaLinkInResponseBody";
+        internal const string Content_EntityWithoutKey = "Content_EntityWithoutKey";
+        internal const string Content_EntityIsNotEntityType = "Content_EntityIsNotEntityType";
+        internal const string Context_EntityNotContained = "Context_EntityNotContained";
+        internal const string Context_EntityAlreadyContained = "Context_EntityAlreadyContained";
+        internal const string Context_DifferentEntityAlreadyContained = "Context_DifferentEntityAlreadyContained";
+        internal const string Context_DidNotOriginateAsync = "Context_DidNotOriginateAsync";
+        internal const string Context_AsyncAlreadyDone = "Context_AsyncAlreadyDone";
+        internal const string Context_OperationCanceled = "Context_OperationCanceled";
+        internal const string Context_NoLoadWithInsertEnd = "Context_NoLoadWithInsertEnd";
+        internal const string Context_NoRelationWithInsertEnd = "Context_NoRelationWithInsertEnd";
+        internal const string Context_NoRelationWithDeleteEnd = "Context_NoRelationWithDeleteEnd";
+        internal const string Context_RelationAlreadyContained = "Context_RelationAlreadyContained";
+        internal const string Context_RelationNotRefOrCollection = "Context_RelationNotRefOrCollection";
+        internal const string Context_AddLinkCollectionOnly = "Context_AddLinkCollectionOnly";
+        internal const string Context_AddRelatedObjectCollectionOnly = "Context_AddRelatedObjectCollectionOnly";
+        internal const string Context_AddRelatedObjectSourceDeleted = "Context_AddRelatedObjectSourceDeleted";
+        internal const string Context_SetLinkReferenceOnly = "Context_SetLinkReferenceOnly";
+        internal const string Context_NoContentTypeForMediaLink = "Context_NoContentTypeForMediaLink";
+        internal const string Context_BatchNotSupportedForMediaLink = "Context_BatchNotSupportedForMediaLink";
+        internal const string Context_UnexpectedZeroRawRead = "Context_UnexpectedZeroRawRead";
+        internal const string Context_VersionNotSupported = "Context_VersionNotSupported";
+        internal const string Context_SendingRequestEventArgsNotHttp = "Context_SendingRequestEventArgsNotHttp";
+        internal const string Context_ChildResourceExists = "Context_ChildResourceExists";
+        internal const string Context_EntityNotMediaLinkEntry = "Context_EntityNotMediaLinkEntry";
+        internal const string Context_MLEWithoutSaveStream = "Context_MLEWithoutSaveStream";
+        internal const string Context_SetSaveStreamOnMediaEntryProperty = "Context_SetSaveStreamOnMediaEntryProperty";
+        internal const string Context_SetSaveStreamWithoutEditMediaLink = "Context_SetSaveStreamWithoutEditMediaLink";
+        internal const string Collection_NullCollectionReference = "Collection_NullCollectionReference";
+        internal const string ClientType_MissingOpenProperty = "ClientType_MissingOpenProperty";
+        internal const string Clienttype_MultipleOpenProperty = "Clienttype_MultipleOpenProperty";
+        internal const string ClientType_MissingProperty = "ClientType_MissingProperty";
+        internal const string ClientType_KeysMustBeSimpleTypes = "ClientType_KeysMustBeSimpleTypes";
+        internal const string ClientType_KeysOnDifferentDeclaredType = "ClientType_KeysOnDifferentDeclaredType";
+        internal const string ClientType_MissingMimeTypeProperty = "ClientType_MissingMimeTypeProperty";
+        internal const string ClientType_MissingMediaEntryProperty = "ClientType_MissingMediaEntryProperty";
+        internal const string ClientType_NoSettableFields = "ClientType_NoSettableFields";
+        internal const string ClientType_MultipleImplementationNotSupported = "ClientType_MultipleImplementationNotSupported";
+        internal const string ClientType_NullOpenProperties = "ClientType_NullOpenProperties";
+        internal const string ClientType_CollectionOfNonEntities = "ClientType_CollectionOfNonEntities";
+        internal const string ClientType_Ambiguous = "ClientType_Ambiguous";
+        internal const string DataServiceException_GeneralError = "DataServiceException_GeneralError";
+        internal const string DataServiceRequest_FailGetCount = "DataServiceRequest_FailGetCount";
+        internal const string Deserialize_GetEnumerator = "Deserialize_GetEnumerator";
+        internal const string Deserialize_Current = "Deserialize_Current";
+        internal const string Deserialize_MixedTextWithComment = "Deserialize_MixedTextWithComment";
+        internal const string Deserialize_ExpectingSimpleValue = "Deserialize_ExpectingSimpleValue";
+        internal const string Deserialize_NotApplicationXml = "Deserialize_NotApplicationXml";
+        internal const string Deserialize_MismatchAtomLinkLocalSimple = "Deserialize_MismatchAtomLinkLocalSimple";
+        internal const string Deserialize_MismatchAtomLinkFeedPropertyNotCollection = "Deserialize_MismatchAtomLinkFeedPropertyNotCollection";
+        internal const string Deserialize_MismatchAtomLinkEntryPropertyIsCollection = "Deserialize_MismatchAtomLinkEntryPropertyIsCollection";
+        internal const string Deserialize_UnknownMimeTypeSpecified = "Deserialize_UnknownMimeTypeSpecified";
+        internal const string Deserialize_ExpectedEmptyMediaLinkEntryContent = "Deserialize_ExpectedEmptyMediaLinkEntryContent";
+        internal const string Deserialize_ContentPlusPropertiesNotAllowed = "Deserialize_ContentPlusPropertiesNotAllowed";
+        internal const string Deserialize_NoLocationHeader = "Deserialize_NoLocationHeader";
+        internal const string Deserialize_ServerException = "Deserialize_ServerException";
+        internal const string Deserialize_MissingIdElement = "Deserialize_MissingIdElement";
+        internal const string EpmClientType_PropertyIsComplex = "EpmClientType_PropertyIsComplex";
+        internal const string EpmClientType_PropertyIsPrimitive = "EpmClientType_PropertyIsPrimitive";
+        internal const string EpmSourceTree_InvalidSourcePath = "EpmSourceTree_InvalidSourcePath";
+        internal const string EpmSourceTree_DuplicateEpmAttrsWithSameSourceName = "EpmSourceTree_DuplicateEpmAttrsWithSameSourceName";
+        internal const string EpmSourceTree_InaccessiblePropertyOnType = "EpmSourceTree_InaccessiblePropertyOnType";
+        internal const string EpmTargetTree_InvalidTargetPath = "EpmTargetTree_InvalidTargetPath";
+        internal const string EpmTargetTree_AttributeInMiddle = "EpmTargetTree_AttributeInMiddle";
+        internal const string EpmTargetTree_DuplicateEpmAttrsWithSameTargetName = "EpmTargetTree_DuplicateEpmAttrsWithSameTargetName";
+        internal const string EntityPropertyMapping_EpmAttribute = "EntityPropertyMapping_EpmAttribute";
+        internal const string EntityPropertyMapping_TargetNamespaceUriNotValid = "EntityPropertyMapping_TargetNamespaceUriNotValid";
+        internal const string HttpProcessUtility_ContentTypeMissing = "HttpProcessUtility_ContentTypeMissing";
+        internal const string HttpProcessUtility_MediaTypeMissingValue = "HttpProcessUtility_MediaTypeMissingValue";
+        internal const string HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter = "HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter";
+        internal const string HttpProcessUtility_MediaTypeRequiresSlash = "HttpProcessUtility_MediaTypeRequiresSlash";
+        internal const string HttpProcessUtility_MediaTypeRequiresSubType = "HttpProcessUtility_MediaTypeRequiresSubType";
+        internal const string HttpProcessUtility_MediaTypeUnspecified = "HttpProcessUtility_MediaTypeUnspecified";
+        internal const string HttpProcessUtility_EncodingNotSupported = "HttpProcessUtility_EncodingNotSupported";
+        internal const string HttpProcessUtility_EscapeCharWithoutQuotes = "HttpProcessUtility_EscapeCharWithoutQuotes";
+        internal const string HttpProcessUtility_EscapeCharAtEnd = "HttpProcessUtility_EscapeCharAtEnd";
+        internal const string HttpProcessUtility_ClosingQuoteNotFound = "HttpProcessUtility_ClosingQuoteNotFound";
+        internal const string MaterializeFromAtom_CountNotPresent = "MaterializeFromAtom_CountNotPresent";
+        internal const string MaterializeFromAtom_CountFormatError = "MaterializeFromAtom_CountFormatError";
+        internal const string MaterializeFromAtom_TopLevelLinkNotAvailable = "MaterializeFromAtom_TopLevelLinkNotAvailable";
+        internal const string MaterializeFromAtom_CollectionKeyNotPresentInLinkTable = "MaterializeFromAtom_CollectionKeyNotPresentInLinkTable";
+        internal const string MaterializeFromAtom_GetNestLinkForFlatCollection = "MaterializeFromAtom_GetNestLinkForFlatCollection";
+        internal const string Serializer_NullKeysAreNotSupported = "Serializer_NullKeysAreNotSupported";
+        internal const string Util_EmptyString = "Util_EmptyString";
+        internal const string Util_EmptyArray = "Util_EmptyArray";
+        internal const string Util_NullArrayElement = "Util_NullArrayElement";
+        internal const string ALinq_UnsupportedExpression = "ALinq_UnsupportedExpression";
+        internal const string ALinq_CouldNotConvert = "ALinq_CouldNotConvert";
+        internal const string ALinq_MethodNotSupported = "ALinq_MethodNotSupported";
+        internal const string ALinq_UnaryNotSupported = "ALinq_UnaryNotSupported";
+        internal const string ALinq_BinaryNotSupported = "ALinq_BinaryNotSupported";
+        internal const string ALinq_ConstantNotSupported = "ALinq_ConstantNotSupported";
+        internal const string ALinq_TypeBinaryNotSupported = "ALinq_TypeBinaryNotSupported";
+        internal const string ALinq_ConditionalNotSupported = "ALinq_ConditionalNotSupported";
+        internal const string ALinq_ParameterNotSupported = "ALinq_ParameterNotSupported";
+        internal const string ALinq_MemberAccessNotSupported = "ALinq_MemberAccessNotSupported";
+        internal const string ALinq_LambdaNotSupported = "ALinq_LambdaNotSupported";
+        internal const string ALinq_NewNotSupported = "ALinq_NewNotSupported";
+        internal const string ALinq_MemberInitNotSupported = "ALinq_MemberInitNotSupported";
+        internal const string ALinq_ListInitNotSupported = "ALinq_ListInitNotSupported";
+        internal const string ALinq_NewArrayNotSupported = "ALinq_NewArrayNotSupported";
+        internal const string ALinq_InvocationNotSupported = "ALinq_InvocationNotSupported";
+        internal const string ALinq_QueryOptionsOnlyAllowedOnLeafNodes = "ALinq_QueryOptionsOnlyAllowedOnLeafNodes";
+        internal const string ALinq_CantExpand = "ALinq_CantExpand";
+        internal const string ALinq_CantCastToUnsupportedPrimitive = "ALinq_CantCastToUnsupportedPrimitive";
+        internal const string ALinq_CantNavigateWithoutKeyPredicate = "ALinq_CantNavigateWithoutKeyPredicate";
+        internal const string ALinq_CanOnlyApplyOneKeyPredicate = "ALinq_CanOnlyApplyOneKeyPredicate";
+        internal const string ALinq_CantTranslateExpression = "ALinq_CantTranslateExpression";
+        internal const string ALinq_TranslationError = "ALinq_TranslationError";
+        internal const string ALinq_CantAddQueryOption = "ALinq_CantAddQueryOption";
+        internal const string ALinq_CantAddDuplicateQueryOption = "ALinq_CantAddDuplicateQueryOption";
+        internal const string ALinq_CantAddAstoriaQueryOption = "ALinq_CantAddAstoriaQueryOption";
+        internal const string ALinq_CantAddQueryOptionStartingWithDollarSign = "ALinq_CantAddQueryOptionStartingWithDollarSign";
+        internal const string ALinq_CantReferToPublicField = "ALinq_CantReferToPublicField";
+        internal const string ALinq_QueryOptionsOnlyAllowedOnSingletons = "ALinq_QueryOptionsOnlyAllowedOnSingletons";
+        internal const string ALinq_QueryOptionOutOfOrder = "ALinq_QueryOptionOutOfOrder";
+        internal const string ALinq_CannotAddCountOption = "ALinq_CannotAddCountOption";
+        internal const string ALinq_CannotAddCountOptionConflict = "ALinq_CannotAddCountOptionConflict";
+        internal const string ALinq_ProjectionOnlyAllowedOnLeafNodes = "ALinq_ProjectionOnlyAllowedOnLeafNodes";
+        internal const string ALinq_ProjectionCanOnlyHaveOneProjection = "ALinq_ProjectionCanOnlyHaveOneProjection";
+        internal const string ALinq_ProjectionMemberAssignmentMismatch = "ALinq_ProjectionMemberAssignmentMismatch";
+        internal const string ALinq_ExpressionNotSupportedInProjectionToEntity = "ALinq_ExpressionNotSupportedInProjectionToEntity";
+        internal const string ALinq_ExpressionNotSupportedInProjection = "ALinq_ExpressionNotSupportedInProjection";
+        internal const string ALinq_CannotConstructKnownEntityTypes = "ALinq_CannotConstructKnownEntityTypes";
+        internal const string ALinq_CannotCreateConstantEntity = "ALinq_CannotCreateConstantEntity";
+        internal const string ALinq_PropertyNamesMustMatchInProjections = "ALinq_PropertyNamesMustMatchInProjections";
+        internal const string ALinq_CanOnlyProjectTheLeaf = "ALinq_CanOnlyProjectTheLeaf";
+        internal const string ALinq_CannotProjectWithExplicitExpansion = "ALinq_CannotProjectWithExplicitExpansion";
+        internal const string DSKAttribute_MustSpecifyAtleastOnePropertyName = "DSKAttribute_MustSpecifyAtleastOnePropertyName";
+        internal const string DataServiceCollection_LoadRequiresTargetCollectionObserved = "DataServiceCollection_LoadRequiresTargetCollectionObserved";
+        internal const string DataServiceCollection_CannotStopTrackingChildCollection = "DataServiceCollection_CannotStopTrackingChildCollection";
+        internal const string DataServiceCollection_OperationForTrackedOnly = "DataServiceCollection_OperationForTrackedOnly";
+        internal const string DataServiceCollection_CannotDetermineContextFromItems = "DataServiceCollection_CannotDetermineContextFromItems";
+        internal const string DataServiceCollection_InsertIntoTrackedButNotLoadedCollection = "DataServiceCollection_InsertIntoTrackedButNotLoadedCollection";
+        internal const string DataBinding_DataServiceCollectionArgumentMustHaveEntityType = "DataBinding_DataServiceCollectionArgumentMustHaveEntityType";
+        internal const string DataBinding_CollectionPropertySetterValueHasObserver = "DataBinding_CollectionPropertySetterValueHasObserver";
+        internal const string DataBinding_CollectionChangedUnknownAction = "DataBinding_CollectionChangedUnknownAction";
+        internal const string DataBinding_BindingOperation_DetachedSource = "DataBinding_BindingOperation_DetachedSource";
+        internal const string DataBinding_BindingOperation_ArrayItemNull = "DataBinding_BindingOperation_ArrayItemNull";
+        internal const string DataBinding_BindingOperation_ArrayItemNotEntity = "DataBinding_BindingOperation_ArrayItemNotEntity";
+        internal const string DataBinding_Util_UnknownEntitySetName = "DataBinding_Util_UnknownEntitySetName";
+        internal const string DataBinding_EntityAlreadyInCollection = "DataBinding_EntityAlreadyInCollection";
+        internal const string DataBinding_NotifyPropertyChangedNotImpl = "DataBinding_NotifyPropertyChangedNotImpl";
+        internal const string DataBinding_ComplexObjectAssociatedWithMultipleEntities = "DataBinding_ComplexObjectAssociatedWithMultipleEntities";
+        internal const string AtomParser_FeedUnexpected = "AtomParser_FeedUnexpected";
+        internal const string AtomParser_PagingLinkOutsideOfFeed = "AtomParser_PagingLinkOutsideOfFeed";
+        internal const string AtomParser_ManyFeedCounts = "AtomParser_ManyFeedCounts";
+        internal const string AtomParser_FeedCountNotUnderFeed = "AtomParser_FeedCountNotUnderFeed";
+        internal const string AtomParser_UnexpectedContentUnderExpandedLink = "AtomParser_UnexpectedContentUnderExpandedLink";
+        internal const string AtomMaterializer_CannotAssignNull = "AtomMaterializer_CannotAssignNull";
+        internal const string AtomMaterializer_DuplicatedNextLink = "AtomMaterializer_DuplicatedNextLink";
+        internal const string AtomMaterializer_EntryIntoCollectionMismatch = "AtomMaterializer_EntryIntoCollectionMismatch";
+        internal const string AtomMaterializer_EntryToAccessIsNull = "AtomMaterializer_EntryToAccessIsNull";
+        internal const string AtomMaterializer_EntryToInitializeIsNull = "AtomMaterializer_EntryToInitializeIsNull";
+        internal const string AtomMaterializer_ProjectEntityTypeMismatch = "AtomMaterializer_ProjectEntityTypeMismatch";
+        internal const string AtomMaterializer_LinksMissingHref = "AtomMaterializer_LinksMissingHref";
+        internal const string AtomMaterializer_PropertyMissing = "AtomMaterializer_PropertyMissing";
+        internal const string AtomMaterializer_PropertyMissingFromEntry = "AtomMaterializer_PropertyMissingFromEntry";
+        internal const string AtomMaterializer_PropertyNotExpectedEntry = "AtomMaterializer_PropertyNotExpectedEntry";
+
+        static TextRes loader;
+        ResourceManager resources;
+
+        internal TextRes() {
+            resources = new System.Resources.ResourceManager("System.Data.Services.Client", this.GetType().Assembly);
+        }
+        
+        private static TextRes GetLoader() {
+            if (loader == null) {
+                TextRes sr = new TextRes();
+                Interlocked.CompareExchange(ref loader, sr, null);
+            }
+            return loader;
+        }
+
+        private static CultureInfo Culture {
+            get { return null; }
+        }
+        
+#if !TEXTRES_ONLYGETSTRING
+        public static ResourceManager Resources {
+            get {
+                return GetLoader().resources;
+            }
+        }
+        
+#endif
+        public static string GetString(string name, params object[] args) {
+            TextRes sys = GetLoader();
+            if (sys == null)
+                return null;
+            string res = sys.resources.GetString(name, TextRes.Culture);
+
+            if (args != null && args.Length > 0) {
+                for (int i = 0; i < args.Length; i ++) {
+                    String value = args[i] as String;
+                    if (value != null && value.Length > 1024) {
+                        args[i] = value.Substring(0, 1024 - 3) + "...";
+                    }
+                }
+                return String.Format(CultureInfo.CurrentCulture, res, args);
+            }
+            else {
+                return res;
+            }
+        }
+
+        public static string GetString(string name) {
+            TextRes sys = GetLoader();
+            if (sys == null)
+                return null;
+            return sys.resources.GetString(name, TextRes.Culture);
+        }
+        
+#if !TEXTRES_ONLYGETSTRING
+        public static object GetObject(string name) {
+            TextRes sys = GetLoader();
+            if (sys == null)
+                return null;
+            return sys.resources.GetObject(name, TextRes.Culture);
+        }
+#endif
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System.Data.Services.Client.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System.Data.Services.Client.txt
@@ -1,241 +1,241 @@
-; Copyright 2010 Microsoft Corporation
-; 
-; Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-; You may obtain a copy of the License at 
-; 
-; http://www.apache.org/licenses/LICENSE-2.0 
-;
-; Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-; See the License for the specific language governing permissions and limitations under the License.
-
-
-; NOTE: see AS/URT bug 15116
-; NOTE: don't use \", use ' instead
-; NOTE: don't use #, use ; instead for comments
-; NOTE: leave the [strings] alone
-
-; See ResourceManager documentation and the ResGen tool.
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Error Messages
-
-BatchStream_MissingBoundary=Missing or repeated the required content-type boundary parameter.
-BatchStream_ContentExpected=Content was expected for the {0} operation.
-BatchStream_ContentUnexpected=Content is unexpected for the {0} operation.
-BatchStream_GetMethodNotSupportedInChangeset=GET operation cannot be specified in a change set. Only PUT, POST and DELETE operations can be specified in a change set.
-BatchStream_InvalidBatchFormat=Error processing batch response. The response is not a valid batch response.
-BatchStream_InvalidDelimiter=The boundary delimiter '{0}' is not valid. Please specify a valid boundary delimiter or make sure that the content length specified is correct.
-BatchStream_MissingEndChangesetDelimiter=Missing change set boundary delimiter. Please make sure that change set boundary delimiter is specified to mark the end of a change set.
-BatchStream_InvalidHeaderValueSpecified=The header value '{0}' is not valid. The header value must be of the format '<header name>: <header value>'.
-BatchStream_InvalidContentLengthSpecified=The content length '{0}' is not valid. The content length must be a valid Int32 literal and must be greater than 0.
-BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch=Only GET operations can be specified in a batch. POST, PUT and DELETE operations must be specified within a change set.
-BatchStream_InvalidOperationHeaderSpecified=Header containing the HTTP method name, request url and version can only be specified for GET operations in a batch or POST, PUT, DELETE operations in a change set.
-BatchStream_InvalidHttpMethodName='{0}' is not a supported HTTP method name. Please specify a supported HTTP method name.
-BatchStream_MoreDataAfterEndOfBatch=No data should be specified after the batch delimiter.
-BatchStream_InternalBufferRequestTooSmall=Error processing batch response. An internal read request was too small.
-BatchStream_InvalidMethodHeaderSpecified=Error processing batch response. The following header is not valid '{0}'. The first header at the start of the each operation must be of the following format: 'HttpMethod RequestUrl HttpVersion'.
-BatchStream_InvalidHttpVersionSpecified=Error processing batch response. The HTTP version '{0}' is not valid. The value must be '{1}'.
-BatchStream_InvalidNumberOfHeadersAtOperationStart=Error processing batch response. At the start of every operation, exactly two headers need to be specified: '{0}' and '{1}'. Make sure these headers are present and have the correct values.
-BatchStream_MissingOrInvalidContentEncodingHeader=Error processing batch response. At the start of every operation, '{0}' header must be specified and its value must be '{1}'.
-BatchStream_InvalidNumberOfHeadersAtChangeSetStart=Error processing batch response. At the start of each change set, only two headers can be specified - '{0}' and '{1}'. Custom headers are allowed only within each operation, along with the standard HTTP headers.
-BatchStream_MissingContentTypeHeader=Error processing batch response. Missing '{0}' header. This header must be specified at the start of each operation and change set.
-BatchStream_InvalidContentTypeSpecified=Error processing batch response. The '{0}' header value '{1}' is not valid. If this is the start of the change set, then the value must be '{2}', otherwise it must be '{3}'.
-
-Batch_ExpectedContentType=The expected content type for a batch requests is "multipart/mixed;boundary=batch" not "{0}".
-Batch_ExpectedResponse=The POST request expected a response with content. ID={0}
-Batch_IncompleteResponseCount=Not all requests in the batch had a response.
-Batch_UnexpectedContent=The web response contained unexpected sections. ID={0}
-
-Context_BaseUri=Expected an absolute, well formed http URL without a query or fragment.
-Context_CannotConvertKey=Unable to convert value '{0}' into a key string for a URI.
-Context_TrackingExpectsAbsoluteUri=The ATOM payload is required to specify an absolute URI as the Id.
-Context_LinkResourceInsertFailure=One of the link's resources failed to insert.
-Context_InternalError=System.Data.Services.Client internal error {0}.
-Context_BatchExecuteError=An error occurred for this query during batch execution.  See the inner exception for details.
-Context_EntitySetName=Expected a relative URL path without query or fragment.
-Context_MissingEditLinkInResponseBody=Error processing response stream. Missing href attribute in the edit link element in the response.
-Context_MissingSelfLinkInResponseBody=Error processing response stream. Missing href attribute in the self link element in the response.
-Context_MissingEditMediaLinkInResponseBody=Error processing response stream. Missing href attribute in the edit-Media link element in the response.
-
-Content_EntityWithoutKey=This operation requires the entity be of an Entity Type, and has at least one key property.
-Content_EntityIsNotEntityType=This operation requires the entity to be of an Entity Type, either mark its key properties, or attribute the class with DataServiceEntityAttribute
-Context_EntityNotContained=The context is not currently tracking the entity.
-Context_EntityAlreadyContained=The context is already tracking the entity.
-Context_DifferentEntityAlreadyContained=The context is already tracking a different entity with the same resource Uri.
-Context_DidNotOriginateAsync=The current object did not originate the async result.
-Context_AsyncAlreadyDone=The asynchronous result has already been completed.
-Context_OperationCanceled=The operation has been canceled.
-
-Context_NoLoadWithInsertEnd=The context can not load the related collection or reference for objects in the added state.
-Context_NoRelationWithInsertEnd=One or both of the ends of the relationship is in the added state.
-Context_NoRelationWithDeleteEnd=One or both of the ends of the relationship is in the deleted state.
-Context_RelationAlreadyContained=The context is already tracking the relationship.
-Context_RelationNotRefOrCollection=The sourceProperty is not a reference or collection of the target's object type.
-Context_AddLinkCollectionOnly=AddLink and DeleteLink methods only work when the sourceProperty is a collection.
-Context_AddRelatedObjectCollectionOnly=AddRelatedObject method only works when the sourceProperty is a collection.
-Context_AddRelatedObjectSourceDeleted=AddRelatedObject method only works if the source entity is in a non-deleted state.
-Context_SetLinkReferenceOnly=SetLink method only works when the sourceProperty is not a collection.
-
-Context_NoContentTypeForMediaLink=Media link object of type '{0}' is configured to use the MIME type specified in the property '{1}'. However, that property's value is null or empty.
-Context_BatchNotSupportedForMediaLink=Saving entities with the [MediaEntry] attribute is not currently supported in batch mode. Use non-batched mode instead.
-Context_UnexpectedZeroRawRead=Unexpected result (<= 0) from stream.Read() while reading raw data for this property.
-Context_VersionNotSupported=Response version '{0}' is not supported. The only supported versions are: {1}.
-
-Context_SendingRequestEventArgsNotHttp=Only instances of HttpWebRequest are currently allowed for this property. Other subtypes of WebRequest are not supported.
-
-Context_ChildResourceExists=Attempt to delete a link between two objects failed because the identity of the target object of the link depends on the source object of the link.
-
-Context_EntityNotMediaLinkEntry=This operation requires the specified entity to represent a Media Link Entry.
-Context_MLEWithoutSaveStream=The entity type {0} is marked with MediaEntry attribute but no save stream was set for the entity.
-Context_SetSaveStreamOnMediaEntryProperty=Can't use SetSaveStream on entity with type {0} which has a media entry property defined.
-Context_SetSaveStreamWithoutEditMediaLink=The binary property on the entity cannot be modified as a stream because the corresponding entry in the response does not have an edit-media link. Ensure that the entity has a binary property that is accessible as a stream in the data model.
-
-Collection_NullCollectionReference={0}.{1} must return a non-null open property collection.
-
-ClientType_MissingOpenProperty=The open object property '{0}:{1}' is not defined.
-Clienttype_MultipleOpenProperty={0} has multiple definitions for OpenObjectAttribute.
-ClientType_MissingProperty=The closed type {0} does not have a corresponding {1} settable property.
-ClientType_KeysMustBeSimpleTypes={0} has key properties declared on a non-simple type.
-ClientType_KeysOnDifferentDeclaredType={0} has key properties declared at different levels within its type hierarchy.
-ClientType_MissingMimeTypeProperty=Property '{0}' has a MimeTypeAttribute indicating that '{1}' contains its mime type. However, this type does not have a property '{1}'.
-ClientType_MissingMediaEntryProperty=The MediaLink attribute in this type points to a property called '{0}', but the type has not property with that name.
-ClientType_NoSettableFields=The type '{0}' has no settable properties.
-ClientType_MultipleImplementationNotSupported=Multiple implementations of ICollection<T> is not supported.
-ClientType_NullOpenProperties=The open type property '{0}' returned a null instance.
-ClientType_CollectionOfNonEntities=Only collections of entities are supported.
-ClientType_Ambiguous=Resolving type from '{0}' that inherits from '{1}' is ambiguous.
-
-DataServiceException_GeneralError=An error occurred while processing this request.
-
-DataServiceRequest_FailGetCount=Failed to get the count value from the server.
-
-Deserialize_GetEnumerator=Only a single enumeration is supported by this IEnumerable.
-Deserialize_Current=The current value '{1}' type is not compatible with the expected '{0}' type.
-Deserialize_MixedTextWithComment=Error processing response stream. Element value interspersed with a comment is not supported.
-Deserialize_ExpectingSimpleValue=Error processing response stream. The XML element contains mixed content.
-Deserialize_NotApplicationXml=Error processing response stream.  The expected content of "application/xml" not found.
-Deserialize_MismatchAtomLinkLocalSimple=Error processing response stream. Atom payload has a link, local object has a simple value.
-Deserialize_MismatchAtomLinkFeedPropertyNotCollection=Error processing response stream. Atom payload has a feed and the property '{0}' is not a collection.
-Deserialize_MismatchAtomLinkEntryPropertyIsCollection=Error processing response stream. Atom payload has an entry and the property '{0}' is a collection.
-Deserialize_UnknownMimeTypeSpecified=Error processing response's mime-type type '{0}'.  The only supported mime-type is 'application/atom+xml'.
-Deserialize_ExpectedEmptyMediaLinkEntryContent=Error processing response stream. The ATOM content element is expected to be empty if it has a source attribute.
-Deserialize_ContentPlusPropertiesNotAllowed=Error processing response stream. An ATOM entry should either be a regular entry (with data in the 'content' element) or a media link entry (with an empty 'content' element and data in the 'properties' element), it cannot have data in both 'content' and 'properties' elements.
-Deserialize_NoLocationHeader=The response to this POST request did not contain a 'location' header. That is not supported by this client.
-Deserialize_ServerException=Error processing response stream. Server failed with following message:\r\n{0}
-Deserialize_MissingIdElement=Error processing response stream. Missing id element in the response.
-
-EpmClientType_PropertyIsComplex=The property '{0}' specified in source path for EntityPropertyMappingAttribute is of non-primitive type while it is provided as the last segment in the path.
-EpmClientType_PropertyIsPrimitive=The property '{0}' specified in source path for EntityPropertyMappingAttribute is of primitive type while it is not provided as the last segment in the path.
-EpmSourceTree_InvalidSourcePath=The PropertyName property value '{1}' of EntityPropertyMappingAttribute on type '{0}' is not valid.
-EpmSourceTree_DuplicateEpmAttrsWithSameSourceName=The PropertyName property value '{0}' on more than one EntityPropertyMappingAttribute on resource type '{1}' is provided more than once.
-EpmSourceTree_InaccessiblePropertyOnType=The property '{0}' on type '{1}' is not present or is inaccessible.
-EpmTargetTree_InvalidTargetPath=The TargetName property path '{0}' of EntityPropertyMappingAttribute is not valid.
-EpmTargetTree_AttributeInMiddle=The attribute identifier '{0}' is provided in the middle of the TargetName property of EntityPropertyMappingAttribute.
-EpmTargetTree_DuplicateEpmAttrsWithSameTargetName=The TargetName property '{0}' on more than one EntityPropertyMappingAttribute on resource type '{1}' have the same value. Conflicting properties are '{2}' and '{3}'.
-EntityPropertyMapping_EpmAttribute=The '{0}' value provided for the EntityPropertyMappingAttribute is not valid.
-EntityPropertyMapping_TargetNamespaceUriNotValid=The targetNamespaceUri value '{0}' provided for the EntityPropertyMappingAttribute does not have a valid URI format.
-
-HttpProcessUtility_ContentTypeMissing=Content-Type header value missing.
-HttpProcessUtility_MediaTypeMissingValue=Media type is missing a parameter value.
-HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter=Media type requires a ';' character before a parameter definition.
-HttpProcessUtility_MediaTypeRequiresSlash=Media type requires a '/' character.
-HttpProcessUtility_MediaTypeRequiresSubType=Media type requires a subtype definition.
-HttpProcessUtility_MediaTypeUnspecified=Media type is unspecified.
-HttpProcessUtility_EncodingNotSupported=Character set '{0}' is not supported.
-HttpProcessUtility_EscapeCharWithoutQuotes=Value for MIME type parameter '{0}' is incorrect because it contained escape characters even though it was not quoted.
-HttpProcessUtility_EscapeCharAtEnd=Value for MIME type parameter '{0}' is incorrect because it terminated with escape character. Escape characters must always be followed by a character in a parameter value.
-HttpProcessUtility_ClosingQuoteNotFound=Value for MIME type parameter '{0}' is incorrect because the closing quote character could not be found while the parameter value started with a quote character.
-
-MaterializeFromAtom_CountNotPresent=Count value is not part of the response stream.
-MaterializeFromAtom_CountFormatError=application/atom+xml payload not correct formatted for <count>.  Expecting positive integer value.
-MaterializeFromAtom_TopLevelLinkNotAvailable=The top level link is only available after the response has been enumerated.
-MaterializeFromAtom_CollectionKeyNotPresentInLinkTable=The collection is not part of the current entry
-MaterializeFromAtom_GetNestLinkForFlatCollection=This response does not contain any nested collections. Use null as Key instead.
-
-Serializer_NullKeysAreNotSupported=The serialized resource has a null value in key member '{0}'. Null values are not supported in key members.
-
-Util_EmptyString=Empty string.
-Util_EmptyArray=Empty array.
-Util_NullArrayElement=Array contains a null element.
-
-ALinq_UnsupportedExpression=The expression type {0} is not supported.
-ALinq_CouldNotConvert=Could not convert constant {0} expression to string.
-ALinq_MethodNotSupported=The method '{0}' is not supported.
-ALinq_UnaryNotSupported=The unary operator '{0}' is not supported.
-ALinq_BinaryNotSupported=The binary operator '{0}' is not supported.
-ALinq_ConstantNotSupported=The constant for '{0}' is not supported.
-ALinq_TypeBinaryNotSupported=An operation between an expression and a type is not supported.
-ALinq_ConditionalNotSupported=The conditional expression is not supported.
-ALinq_ParameterNotSupported=The parameter expression is not supported.
-ALinq_MemberAccessNotSupported=The member access of '{0}' is not supported.
-ALinq_LambdaNotSupported=Lambda Expressions not supported.
-ALinq_NewNotSupported=New Expressions not supported.
-ALinq_MemberInitNotSupported=Member Init Expressions not supported.
-ALinq_ListInitNotSupported=List Init Expressions not supported.
-ALinq_NewArrayNotSupported=New Array Expressions not supported.
-ALinq_InvocationNotSupported=Invocation Expressions not supported.
-ALinq_QueryOptionsOnlyAllowedOnLeafNodes=Can only specify query options (orderby, where, take, skip) after last navigation.
-ALinq_CantExpand=Expand query option not allowed.
-ALinq_CantCastToUnsupportedPrimitive=Can't cast to unsupported type '{0}'
-ALinq_CantNavigateWithoutKeyPredicate=Navigation properties can only be selected from a single resource. Specify a key predicate to restrict the entity set to a single instance.
-ALinq_CanOnlyApplyOneKeyPredicate=Multiple key predicates cannot be specified for the same entity set.
-ALinq_CantTranslateExpression=The expression {0} is not supported.
-ALinq_TranslationError=Error translating Linq expression to URI: {0}
-ALinq_CantAddQueryOption=Custom query option not allowed.
-ALinq_CantAddDuplicateQueryOption=Can't add duplicate query option '{0}'.
-ALinq_CantAddAstoriaQueryOption=Can't add query option '{0}' because it would conflict with the query options from the translated Linq expression.
-ALinq_CantAddQueryOptionStartingWithDollarSign=Can't add query option '{0}' because it begins with reserved character '$'.
-ALinq_CantReferToPublicField=Referencing public field '{0}' not supported in query option expression.  Use public property instead.
-ALinq_QueryOptionsOnlyAllowedOnSingletons=Cannot specify query options (orderby, where, take, skip) on single resource.
-ALinq_QueryOptionOutOfOrder=The {0} query option cannot be specified after the {1} query option.
-ALinq_CannotAddCountOption=Cannot add count option to the resource set.
-ALinq_CannotAddCountOptionConflict=Cannot add count option to the resource set because it would conflict with existing count options.
-ALinq_ProjectionOnlyAllowedOnLeafNodes=Can only specify 'select' query option after last navigation.
-ALinq_ProjectionCanOnlyHaveOneProjection=Cannot translate multiple Linq Select operations in a single 'select' query option.
-ALinq_ProjectionMemberAssignmentMismatch=Cannot initialize an instance of entity type '{0}' because '{1}' and '{2}' do not refer to the same source entity.
-ALinq_ExpressionNotSupportedInProjectionToEntity=Initializing instances of the entity type {0} with the expression {1} is not supported.
-ALinq_ExpressionNotSupportedInProjection=Constructing or initializing instances of the type {0} with the expression {1} is not supported.
-ALinq_CannotConstructKnownEntityTypes=Construction of entity type instances must use object initializer with default constructor.
-ALinq_CannotCreateConstantEntity=Referencing of local entity type instances not supported when projecting results.
-ALinq_PropertyNamesMustMatchInProjections=Cannot assign the value from the {0} property to the {1} property.  When projecting results into a entity type, the property names of the source type and the target type must match for the properties being projected.
-ALinq_CanOnlyProjectTheLeaf=Can only project the last entity type in the query being translated.
-ALinq_CannotProjectWithExplicitExpansion=Cannot create projection while there is an explicit expansion specified on the same query.
-
-DSKAttribute_MustSpecifyAtleastOnePropertyName=DataServiceKey attribute must specify at least one property name.
-
-DataServiceCollection_LoadRequiresTargetCollectionObserved=Target collection for the Load operation must have an associated DataServiceContext.
-DataServiceCollection_CannotStopTrackingChildCollection=The tracking of DataServiceCollection can not be stopped for child collections.
-DataServiceCollection_OperationForTrackedOnly=This operation is only supported on collections that are being tracked.
-DataServiceCollection_CannotDetermineContextFromItems=The DataServiceContext to which the DataServiceCollection instance belongs could not be determined. The DataServiceContext must either be supplied in the DataServiceCollection constructor or be used to create the DataServiceQuery or QueryOperationResponse object that is the source of the items in the DataServiceCollection.
-DataServiceCollection_InsertIntoTrackedButNotLoadedCollection=An item could not be added to the collection. When items in a DataServiceCollection are tracked by the DataServiceContext, new items cannot be added before items have been loaded into the collection.
-
-DataBinding_DataServiceCollectionArgumentMustHaveEntityType=The DataServiceCollection to be tracked must contain entity typed elements with at least one key property. The element type '{0}' does not have any key property.
-DataBinding_CollectionPropertySetterValueHasObserver=Setting an instance of DataServiceCollection to an entity property is disallowed if the instance is already being tracked. Error occurred on property '{0}' for entity type '{1}'.
-DataBinding_CollectionChangedUnknownAction=Unexpected action '{0}' on the OnCollectionChanged event raised by DataServiceCollection.
-DataBinding_BindingOperation_DetachedSource=Add/Update/Delete operation cannot be performed on a child entity, if the parent entity is already detached.
-DataBinding_BindingOperation_ArrayItemNull=Null values are disallowed during '{0}' operations on DataServiceCollection.
-DataBinding_BindingOperation_ArrayItemNotEntity=A value provided during '{0}' operation on DataServiceCollection is not of an entity type with key.
-DataBinding_Util_UnknownEntitySetName=Entity set name has not been provided for an entity of type '{0}'.
-DataBinding_EntityAlreadyInCollection=An attempt was made to add entity of type '{0}' to a collection in which the same entity already exists.
-DataBinding_NotifyPropertyChangedNotImpl=An attempt to track an entity or complex type failed because the entity or complex type '{0}' does not implement the INotifyPropertyChanged interface.
-DataBinding_ComplexObjectAssociatedWithMultipleEntities=An attempt to track a complex property of an entity with type '{0}' failed because the complex object was already being tracked as part of another entity.
-
-AtomParser_FeedUnexpected=Atom feed unexpected after other content has been found.
-AtomParser_PagingLinkOutsideOfFeed=The link element used for paging must be a child of the atom:feed element.
-AtomParser_ManyFeedCounts=Only one feed count element is supported, but more than one was found.
-AtomParser_FeedCountNotUnderFeed=A feed count element cannot be used outside of a feed.
-AtomParser_UnexpectedContentUnderExpandedLink=Unexpected content was found under the expanded link.
-AtomMaterializer_CannotAssignNull=The null value from property '{0}' cannot be assigned to a type '{1}'.
-AtomMaterializer_DuplicatedNextLink=There cannot be more than one next link entry for the same collection in the feed.
-
-AtomMaterializer_EntryIntoCollectionMismatch=An entry of type '{0}' cannot be added to a collection that contains instances of type '{1}'. This may occur when an existing entry of a different type has the same identity value or when the same entity is projected into two different types in a single query.
-AtomMaterializer_EntryToAccessIsNull=An entry returned by the navigation property '{0}' is null and cannot be initialized. You should check for a null value before accessing this property.
-AtomMaterializer_EntryToInitializeIsNull=An entry that contains the data required to create an instance of type '{0}' is null and cannot be initialized. You should check for a null value before accessing this entry.
-AtomMaterializer_ProjectEntityTypeMismatch=An entity of type '{0}' cannot be projected because there is already an instance of type '{1}' for '{2}'.
-AtomMaterializer_LinksMissingHref=The link element must define an href attribute.
-AtomMaterializer_PropertyMissing=The expected property '{0}' could not be found while processing Atom results.
-AtomMaterializer_PropertyMissingFromEntry=The expected property '{0}' could not be found while processing entry '{1}'.
-AtomMaterializer_PropertyNotExpectedEntry=Property '{0}' of entity '{1}' is not an entity.
-
-;END
+; Copyright 2010 Microsoft Corporation
+; 
+; Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+; You may obtain a copy of the License at 
+; 
+; http://www.apache.org/licenses/LICENSE-2.0 
+;
+; Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+; See the License for the specific language governing permissions and limitations under the License.
+
+
+; NOTE: see AS/URT bug 15116
+; NOTE: don't use \", use ' instead
+; NOTE: don't use #, use ; instead for comments
+; NOTE: leave the [strings] alone
+
+; See ResourceManager documentation and the ResGen tool.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error Messages
+
+BatchStream_MissingBoundary=Missing or repeated the required content-type boundary parameter.
+BatchStream_ContentExpected=Content was expected for the {0} operation.
+BatchStream_ContentUnexpected=Content is unexpected for the {0} operation.
+BatchStream_GetMethodNotSupportedInChangeset=GET operation cannot be specified in a change set. Only PUT, POST and DELETE operations can be specified in a change set.
+BatchStream_InvalidBatchFormat=Error processing batch response. The response is not a valid batch response.
+BatchStream_InvalidDelimiter=The boundary delimiter '{0}' is not valid. Please specify a valid boundary delimiter or make sure that the content length specified is correct.
+BatchStream_MissingEndChangesetDelimiter=Missing change set boundary delimiter. Please make sure that change set boundary delimiter is specified to mark the end of a change set.
+BatchStream_InvalidHeaderValueSpecified=The header value '{0}' is not valid. The header value must be of the format '<header name>: <header value>'.
+BatchStream_InvalidContentLengthSpecified=The content length '{0}' is not valid. The content length must be a valid Int32 literal and must be greater than 0.
+BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch=Only GET operations can be specified in a batch. POST, PUT and DELETE operations must be specified within a change set.
+BatchStream_InvalidOperationHeaderSpecified=Header containing the HTTP method name, request url and version can only be specified for GET operations in a batch or POST, PUT, DELETE operations in a change set.
+BatchStream_InvalidHttpMethodName='{0}' is not a supported HTTP method name. Please specify a supported HTTP method name.
+BatchStream_MoreDataAfterEndOfBatch=No data should be specified after the batch delimiter.
+BatchStream_InternalBufferRequestTooSmall=Error processing batch response. An internal read request was too small.
+BatchStream_InvalidMethodHeaderSpecified=Error processing batch response. The following header is not valid '{0}'. The first header at the start of the each operation must be of the following format: 'HttpMethod RequestUrl HttpVersion'.
+BatchStream_InvalidHttpVersionSpecified=Error processing batch response. The HTTP version '{0}' is not valid. The value must be '{1}'.
+BatchStream_InvalidNumberOfHeadersAtOperationStart=Error processing batch response. At the start of every operation, exactly two headers need to be specified: '{0}' and '{1}'. Make sure these headers are present and have the correct values.
+BatchStream_MissingOrInvalidContentEncodingHeader=Error processing batch response. At the start of every operation, '{0}' header must be specified and its value must be '{1}'.
+BatchStream_InvalidNumberOfHeadersAtChangeSetStart=Error processing batch response. At the start of each change set, only two headers can be specified - '{0}' and '{1}'. Custom headers are allowed only within each operation, along with the standard HTTP headers.
+BatchStream_MissingContentTypeHeader=Error processing batch response. Missing '{0}' header. This header must be specified at the start of each operation and change set.
+BatchStream_InvalidContentTypeSpecified=Error processing batch response. The '{0}' header value '{1}' is not valid. If this is the start of the change set, then the value must be '{2}', otherwise it must be '{3}'.
+
+Batch_ExpectedContentType=The expected content type for a batch requests is "multipart/mixed;boundary=batch" not "{0}".
+Batch_ExpectedResponse=The POST request expected a response with content. ID={0}
+Batch_IncompleteResponseCount=Not all requests in the batch had a response.
+Batch_UnexpectedContent=The web response contained unexpected sections. ID={0}
+
+Context_BaseUri=Expected an absolute, well formed http URL without a query or fragment.
+Context_CannotConvertKey=Unable to convert value '{0}' into a key string for a URI.
+Context_TrackingExpectsAbsoluteUri=The ATOM payload is required to specify an absolute URI as the Id.
+Context_LinkResourceInsertFailure=One of the link's resources failed to insert.
+Context_InternalError=System.Data.Services.Client internal error {0}.
+Context_BatchExecuteError=An error occurred for this query during batch execution.  See the inner exception for details.
+Context_EntitySetName=Expected a relative URL path without query or fragment.
+Context_MissingEditLinkInResponseBody=Error processing response stream. Missing href attribute in the edit link element in the response.
+Context_MissingSelfLinkInResponseBody=Error processing response stream. Missing href attribute in the self link element in the response.
+Context_MissingEditMediaLinkInResponseBody=Error processing response stream. Missing href attribute in the edit-Media link element in the response.
+
+Content_EntityWithoutKey=This operation requires the entity be of an Entity Type, and has at least one key property.
+Content_EntityIsNotEntityType=This operation requires the entity to be of an Entity Type, either mark its key properties, or attribute the class with DataServiceEntityAttribute
+Context_EntityNotContained=The context is not currently tracking the entity.
+Context_EntityAlreadyContained=The context is already tracking the entity.
+Context_DifferentEntityAlreadyContained=The context is already tracking a different entity with the same resource Uri.
+Context_DidNotOriginateAsync=The current object did not originate the async result.
+Context_AsyncAlreadyDone=The asynchronous result has already been completed.
+Context_OperationCanceled=The operation has been canceled.
+
+Context_NoLoadWithInsertEnd=The context can not load the related collection or reference for objects in the added state.
+Context_NoRelationWithInsertEnd=One or both of the ends of the relationship is in the added state.
+Context_NoRelationWithDeleteEnd=One or both of the ends of the relationship is in the deleted state.
+Context_RelationAlreadyContained=The context is already tracking the relationship.
+Context_RelationNotRefOrCollection=The sourceProperty is not a reference or collection of the target's object type.
+Context_AddLinkCollectionOnly=AddLink and DeleteLink methods only work when the sourceProperty is a collection.
+Context_AddRelatedObjectCollectionOnly=AddRelatedObject method only works when the sourceProperty is a collection.
+Context_AddRelatedObjectSourceDeleted=AddRelatedObject method only works if the source entity is in a non-deleted state.
+Context_SetLinkReferenceOnly=SetLink method only works when the sourceProperty is not a collection.
+
+Context_NoContentTypeForMediaLink=Media link object of type '{0}' is configured to use the MIME type specified in the property '{1}'. However, that property's value is null or empty.
+Context_BatchNotSupportedForMediaLink=Saving entities with the [MediaEntry] attribute is not currently supported in batch mode. Use non-batched mode instead.
+Context_UnexpectedZeroRawRead=Unexpected result (<= 0) from stream.Read() while reading raw data for this property.
+Context_VersionNotSupported=Response version '{0}' is not supported. The only supported versions are: {1}.
+
+Context_SendingRequestEventArgsNotHttp=Only instances of HttpWebRequest are currently allowed for this property. Other subtypes of WebRequest are not supported.
+
+Context_ChildResourceExists=Attempt to delete a link between two objects failed because the identity of the target object of the link depends on the source object of the link.
+
+Context_EntityNotMediaLinkEntry=This operation requires the specified entity to represent a Media Link Entry.
+Context_MLEWithoutSaveStream=The entity type {0} is marked with MediaEntry attribute but no save stream was set for the entity.
+Context_SetSaveStreamOnMediaEntryProperty=Can't use SetSaveStream on entity with type {0} which has a media entry property defined.
+Context_SetSaveStreamWithoutEditMediaLink=The binary property on the entity cannot be modified as a stream because the corresponding entry in the response does not have an edit-media link. Ensure that the entity has a binary property that is accessible as a stream in the data model.
+
+Collection_NullCollectionReference={0}.{1} must return a non-null open property collection.
+
+ClientType_MissingOpenProperty=The open object property '{0}:{1}' is not defined.
+Clienttype_MultipleOpenProperty={0} has multiple definitions for OpenObjectAttribute.
+ClientType_MissingProperty=The closed type {0} does not have a corresponding {1} settable property.
+ClientType_KeysMustBeSimpleTypes={0} has key properties declared on a non-simple type.
+ClientType_KeysOnDifferentDeclaredType={0} has key properties declared at different levels within its type hierarchy.
+ClientType_MissingMimeTypeProperty=Property '{0}' has a MimeTypeAttribute indicating that '{1}' contains its mime type. However, this type does not have a property '{1}'.
+ClientType_MissingMediaEntryProperty=The MediaLink attribute in this type points to a property called '{0}', but the type has not property with that name.
+ClientType_NoSettableFields=The type '{0}' has no settable properties.
+ClientType_MultipleImplementationNotSupported=Multiple implementations of ICollection<T> is not supported.
+ClientType_NullOpenProperties=The open type property '{0}' returned a null instance.
+ClientType_CollectionOfNonEntities=Only collections of entities are supported.
+ClientType_Ambiguous=Resolving type from '{0}' that inherits from '{1}' is ambiguous.
+
+DataServiceException_GeneralError=An error occurred while processing this request.
+
+DataServiceRequest_FailGetCount=Failed to get the count value from the server.
+
+Deserialize_GetEnumerator=Only a single enumeration is supported by this IEnumerable.
+Deserialize_Current=The current value '{1}' type is not compatible with the expected '{0}' type.
+Deserialize_MixedTextWithComment=Error processing response stream. Element value interspersed with a comment is not supported.
+Deserialize_ExpectingSimpleValue=Error processing response stream. The XML element contains mixed content.
+Deserialize_NotApplicationXml=Error processing response stream.  The expected content of "application/xml" not found.
+Deserialize_MismatchAtomLinkLocalSimple=Error processing response stream. Atom payload has a link, local object has a simple value.
+Deserialize_MismatchAtomLinkFeedPropertyNotCollection=Error processing response stream. Atom payload has a feed and the property '{0}' is not a collection.
+Deserialize_MismatchAtomLinkEntryPropertyIsCollection=Error processing response stream. Atom payload has an entry and the property '{0}' is a collection.
+Deserialize_UnknownMimeTypeSpecified=Error processing response's mime-type type '{0}'.  The only supported mime-type is 'application/atom+xml'.
+Deserialize_ExpectedEmptyMediaLinkEntryContent=Error processing response stream. The ATOM content element is expected to be empty if it has a source attribute.
+Deserialize_ContentPlusPropertiesNotAllowed=Error processing response stream. An ATOM entry should either be a regular entry (with data in the 'content' element) or a media link entry (with an empty 'content' element and data in the 'properties' element), it cannot have data in both 'content' and 'properties' elements.
+Deserialize_NoLocationHeader=The response to this POST request did not contain a 'location' header. That is not supported by this client.
+Deserialize_ServerException=Error processing response stream. Server failed with following message:\r\n{0}
+Deserialize_MissingIdElement=Error processing response stream. Missing id element in the response.
+
+EpmClientType_PropertyIsComplex=The property '{0}' specified in source path for EntityPropertyMappingAttribute is of non-primitive type while it is provided as the last segment in the path.
+EpmClientType_PropertyIsPrimitive=The property '{0}' specified in source path for EntityPropertyMappingAttribute is of primitive type while it is not provided as the last segment in the path.
+EpmSourceTree_InvalidSourcePath=The PropertyName property value '{1}' of EntityPropertyMappingAttribute on type '{0}' is not valid.
+EpmSourceTree_DuplicateEpmAttrsWithSameSourceName=The PropertyName property value '{0}' on more than one EntityPropertyMappingAttribute on resource type '{1}' is provided more than once.
+EpmSourceTree_InaccessiblePropertyOnType=The property '{0}' on type '{1}' is not present or is inaccessible.
+EpmTargetTree_InvalidTargetPath=The TargetName property path '{0}' of EntityPropertyMappingAttribute is not valid.
+EpmTargetTree_AttributeInMiddle=The attribute identifier '{0}' is provided in the middle of the TargetName property of EntityPropertyMappingAttribute.
+EpmTargetTree_DuplicateEpmAttrsWithSameTargetName=The TargetName property '{0}' on more than one EntityPropertyMappingAttribute on resource type '{1}' have the same value. Conflicting properties are '{2}' and '{3}'.
+EntityPropertyMapping_EpmAttribute=The '{0}' value provided for the EntityPropertyMappingAttribute is not valid.
+EntityPropertyMapping_TargetNamespaceUriNotValid=The targetNamespaceUri value '{0}' provided for the EntityPropertyMappingAttribute does not have a valid URI format.
+
+HttpProcessUtility_ContentTypeMissing=Content-Type header value missing.
+HttpProcessUtility_MediaTypeMissingValue=Media type is missing a parameter value.
+HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter=Media type requires a ';' character before a parameter definition.
+HttpProcessUtility_MediaTypeRequiresSlash=Media type requires a '/' character.
+HttpProcessUtility_MediaTypeRequiresSubType=Media type requires a subtype definition.
+HttpProcessUtility_MediaTypeUnspecified=Media type is unspecified.
+HttpProcessUtility_EncodingNotSupported=Character set '{0}' is not supported.
+HttpProcessUtility_EscapeCharWithoutQuotes=Value for MIME type parameter '{0}' is incorrect because it contained escape characters even though it was not quoted.
+HttpProcessUtility_EscapeCharAtEnd=Value for MIME type parameter '{0}' is incorrect because it terminated with escape character. Escape characters must always be followed by a character in a parameter value.
+HttpProcessUtility_ClosingQuoteNotFound=Value for MIME type parameter '{0}' is incorrect because the closing quote character could not be found while the parameter value started with a quote character.
+
+MaterializeFromAtom_CountNotPresent=Count value is not part of the response stream.
+MaterializeFromAtom_CountFormatError=application/atom+xml payload not correct formatted for <count>.  Expecting positive integer value.
+MaterializeFromAtom_TopLevelLinkNotAvailable=The top level link is only available after the response has been enumerated.
+MaterializeFromAtom_CollectionKeyNotPresentInLinkTable=The collection is not part of the current entry
+MaterializeFromAtom_GetNestLinkForFlatCollection=This response does not contain any nested collections. Use null as Key instead.
+
+Serializer_NullKeysAreNotSupported=The serialized resource has a null value in key member '{0}'. Null values are not supported in key members.
+
+Util_EmptyString=Empty string.
+Util_EmptyArray=Empty array.
+Util_NullArrayElement=Array contains a null element.
+
+ALinq_UnsupportedExpression=The expression type {0} is not supported.
+ALinq_CouldNotConvert=Could not convert constant {0} expression to string.
+ALinq_MethodNotSupported=The method '{0}' is not supported.
+ALinq_UnaryNotSupported=The unary operator '{0}' is not supported.
+ALinq_BinaryNotSupported=The binary operator '{0}' is not supported.
+ALinq_ConstantNotSupported=The constant for '{0}' is not supported.
+ALinq_TypeBinaryNotSupported=An operation between an expression and a type is not supported.
+ALinq_ConditionalNotSupported=The conditional expression is not supported.
+ALinq_ParameterNotSupported=The parameter expression is not supported.
+ALinq_MemberAccessNotSupported=The member access of '{0}' is not supported.
+ALinq_LambdaNotSupported=Lambda Expressions not supported.
+ALinq_NewNotSupported=New Expressions not supported.
+ALinq_MemberInitNotSupported=Member Init Expressions not supported.
+ALinq_ListInitNotSupported=List Init Expressions not supported.
+ALinq_NewArrayNotSupported=New Array Expressions not supported.
+ALinq_InvocationNotSupported=Invocation Expressions not supported.
+ALinq_QueryOptionsOnlyAllowedOnLeafNodes=Can only specify query options (orderby, where, take, skip) after last navigation.
+ALinq_CantExpand=Expand query option not allowed.
+ALinq_CantCastToUnsupportedPrimitive=Can't cast to unsupported type '{0}'
+ALinq_CantNavigateWithoutKeyPredicate=Navigation properties can only be selected from a single resource. Specify a key predicate to restrict the entity set to a single instance.
+ALinq_CanOnlyApplyOneKeyPredicate=Multiple key predicates cannot be specified for the same entity set.
+ALinq_CantTranslateExpression=The expression {0} is not supported.
+ALinq_TranslationError=Error translating Linq expression to URI: {0}
+ALinq_CantAddQueryOption=Custom query option not allowed.
+ALinq_CantAddDuplicateQueryOption=Can't add duplicate query option '{0}'.
+ALinq_CantAddAstoriaQueryOption=Can't add query option '{0}' because it would conflict with the query options from the translated Linq expression.
+ALinq_CantAddQueryOptionStartingWithDollarSign=Can't add query option '{0}' because it begins with reserved character '$'.
+ALinq_CantReferToPublicField=Referencing public field '{0}' not supported in query option expression.  Use public property instead.
+ALinq_QueryOptionsOnlyAllowedOnSingletons=Cannot specify query options (orderby, where, take, skip) on single resource.
+ALinq_QueryOptionOutOfOrder=The {0} query option cannot be specified after the {1} query option.
+ALinq_CannotAddCountOption=Cannot add count option to the resource set.
+ALinq_CannotAddCountOptionConflict=Cannot add count option to the resource set because it would conflict with existing count options.
+ALinq_ProjectionOnlyAllowedOnLeafNodes=Can only specify 'select' query option after last navigation.
+ALinq_ProjectionCanOnlyHaveOneProjection=Cannot translate multiple Linq Select operations in a single 'select' query option.
+ALinq_ProjectionMemberAssignmentMismatch=Cannot initialize an instance of entity type '{0}' because '{1}' and '{2}' do not refer to the same source entity.
+ALinq_ExpressionNotSupportedInProjectionToEntity=Initializing instances of the entity type {0} with the expression {1} is not supported.
+ALinq_ExpressionNotSupportedInProjection=Constructing or initializing instances of the type {0} with the expression {1} is not supported.
+ALinq_CannotConstructKnownEntityTypes=Construction of entity type instances must use object initializer with default constructor.
+ALinq_CannotCreateConstantEntity=Referencing of local entity type instances not supported when projecting results.
+ALinq_PropertyNamesMustMatchInProjections=Cannot assign the value from the {0} property to the {1} property.  When projecting results into a entity type, the property names of the source type and the target type must match for the properties being projected.
+ALinq_CanOnlyProjectTheLeaf=Can only project the last entity type in the query being translated.
+ALinq_CannotProjectWithExplicitExpansion=Cannot create projection while there is an explicit expansion specified on the same query.
+
+DSKAttribute_MustSpecifyAtleastOnePropertyName=DataServiceKey attribute must specify at least one property name.
+
+DataServiceCollection_LoadRequiresTargetCollectionObserved=Target collection for the Load operation must have an associated DataServiceContext.
+DataServiceCollection_CannotStopTrackingChildCollection=The tracking of DataServiceCollection can not be stopped for child collections.
+DataServiceCollection_OperationForTrackedOnly=This operation is only supported on collections that are being tracked.
+DataServiceCollection_CannotDetermineContextFromItems=The DataServiceContext to which the DataServiceCollection instance belongs could not be determined. The DataServiceContext must either be supplied in the DataServiceCollection constructor or be used to create the DataServiceQuery or QueryOperationResponse object that is the source of the items in the DataServiceCollection.
+DataServiceCollection_InsertIntoTrackedButNotLoadedCollection=An item could not be added to the collection. When items in a DataServiceCollection are tracked by the DataServiceContext, new items cannot be added before items have been loaded into the collection.
+
+DataBinding_DataServiceCollectionArgumentMustHaveEntityType=The DataServiceCollection to be tracked must contain entity typed elements with at least one key property. The element type '{0}' does not have any key property.
+DataBinding_CollectionPropertySetterValueHasObserver=Setting an instance of DataServiceCollection to an entity property is disallowed if the instance is already being tracked. Error occurred on property '{0}' for entity type '{1}'.
+DataBinding_CollectionChangedUnknownAction=Unexpected action '{0}' on the OnCollectionChanged event raised by DataServiceCollection.
+DataBinding_BindingOperation_DetachedSource=Add/Update/Delete operation cannot be performed on a child entity, if the parent entity is already detached.
+DataBinding_BindingOperation_ArrayItemNull=Null values are disallowed during '{0}' operations on DataServiceCollection.
+DataBinding_BindingOperation_ArrayItemNotEntity=A value provided during '{0}' operation on DataServiceCollection is not of an entity type with key.
+DataBinding_Util_UnknownEntitySetName=Entity set name has not been provided for an entity of type '{0}'.
+DataBinding_EntityAlreadyInCollection=An attempt was made to add entity of type '{0}' to a collection in which the same entity already exists.
+DataBinding_NotifyPropertyChangedNotImpl=An attempt to track an entity or complex type failed because the entity or complex type '{0}' does not implement the INotifyPropertyChanged interface.
+DataBinding_ComplexObjectAssociatedWithMultipleEntities=An attempt to track a complex property of an entity with type '{0}' failed because the complex object was already being tracked as part of another entity.
+
+AtomParser_FeedUnexpected=Atom feed unexpected after other content has been found.
+AtomParser_PagingLinkOutsideOfFeed=The link element used for paging must be a child of the atom:feed element.
+AtomParser_ManyFeedCounts=Only one feed count element is supported, but more than one was found.
+AtomParser_FeedCountNotUnderFeed=A feed count element cannot be used outside of a feed.
+AtomParser_UnexpectedContentUnderExpandedLink=Unexpected content was found under the expanded link.
+AtomMaterializer_CannotAssignNull=The null value from property '{0}' cannot be assigned to a type '{1}'.
+AtomMaterializer_DuplicatedNextLink=There cannot be more than one next link entry for the same collection in the feed.
+
+AtomMaterializer_EntryIntoCollectionMismatch=An entry of type '{0}' cannot be added to a collection that contains instances of type '{1}'. This may occur when an existing entry of a different type has the same identity value or when the same entity is projected into two different types in a single query.
+AtomMaterializer_EntryToAccessIsNull=An entry returned by the navigation property '{0}' is null and cannot be initialized. You should check for a null value before accessing this property.
+AtomMaterializer_EntryToInitializeIsNull=An entry that contains the data required to create an instance of type '{0}' is null and cannot be initialized. You should check for a null value before accessing this entry.
+AtomMaterializer_ProjectEntityTypeMismatch=An entity of type '{0}' cannot be projected because there is already an instance of type '{1}' for '{2}'.
+AtomMaterializer_LinksMissingHref=The link element must define an href attribute.
+AtomMaterializer_PropertyMissing=The expected property '{0}' could not be found while processing Atom results.
+AtomMaterializer_PropertyMissingFromEntry=The expected property '{0}' could not be found while processing entry '{1}'.
+AtomMaterializer_PropertyNotExpectedEntry=Property '{0}' of entity '{1}' is not an entity.
+
+;END
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/DataServiceExpressionVisitor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/DataServiceExpressionVisitor.cs
@@ -1,75 +1,75 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal abstract class DataServiceExpressionVisitor : ExpressionVisitor
-    {
-        internal override Expression Visit(Expression exp)
-        {
-            if (exp == null)
-            {
-                return null;
-            }
-
-            switch ((ResourceExpressionType)exp.NodeType)
-            {
-                case ResourceExpressionType.RootResourceSet:
-                case ResourceExpressionType.ResourceNavigationProperty:
-                    return this.VisitResourceSetExpression((ResourceSetExpression)exp);
-                case ResourceExpressionType.ResourceNavigationPropertySingleton:
-                    return this.VisitNavigationPropertySingletonExpression((NavigationPropertySingletonExpression)exp);
-                case ResourceExpressionType.InputReference:
-                    return this.VisitInputReferenceExpression((InputReferenceExpression)exp);
-                default:
-                    return base.Visit(exp);
-            }
-        }
-
-        internal virtual Expression VisitResourceSetExpression(ResourceSetExpression rse)
-        {
-            Expression source = this.Visit(rse.Source);
-
-            if (source != rse.Source)
-            {
-                rse = new ResourceSetExpression(rse.Type, source, rse.MemberExpression, rse.ResourceType, rse.ExpandPaths, rse.CountOption, rse.CustomQueryOptions, rse.Projection);
-            }
-
-            return rse;
-        }
-
-        internal virtual Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
-        {
-            Expression source = this.Visit(npse.Source);
-
-            if (source != npse.Source)
-            {
-                npse = new NavigationPropertySingletonExpression(npse.Type, source, npse.MemberExpression, npse.MemberExpression.Type, npse.ExpandPaths, npse.CountOption, npse.CustomQueryOptions, npse.Projection);
-            }
-
-            return npse;
-        }
-
-        internal virtual Expression VisitInputReferenceExpression(InputReferenceExpression ire)
-        {
-            Debug.Assert(ire != null, "ire != null -- otherwise caller never should have visited here");
-            ResourceExpression re = (ResourceExpression)this.Visit(ire.Target);
-            return re.CreateReference();
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal abstract class DataServiceExpressionVisitor : ExpressionVisitor
+    {
+        internal override Expression Visit(Expression exp)
+        {
+            if (exp == null)
+            {
+                return null;
+            }
+
+            switch ((ResourceExpressionType)exp.NodeType)
+            {
+                case ResourceExpressionType.RootResourceSet:
+                case ResourceExpressionType.ResourceNavigationProperty:
+                    return this.VisitResourceSetExpression((ResourceSetExpression)exp);
+                case ResourceExpressionType.ResourceNavigationPropertySingleton:
+                    return this.VisitNavigationPropertySingletonExpression((NavigationPropertySingletonExpression)exp);
+                case ResourceExpressionType.InputReference:
+                    return this.VisitInputReferenceExpression((InputReferenceExpression)exp);
+                default:
+                    return base.Visit(exp);
+            }
+        }
+
+        internal virtual Expression VisitResourceSetExpression(ResourceSetExpression rse)
+        {
+            Expression source = this.Visit(rse.Source);
+
+            if (source != rse.Source)
+            {
+                rse = new ResourceSetExpression(rse.Type, source, rse.MemberExpression, rse.ResourceType, rse.ExpandPaths, rse.CountOption, rse.CustomQueryOptions, rse.Projection);
+            }
+
+            return rse;
+        }
+
+        internal virtual Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
+        {
+            Expression source = this.Visit(npse.Source);
+
+            if (source != npse.Source)
+            {
+                npse = new NavigationPropertySingletonExpression(npse.Type, source, npse.MemberExpression, npse.MemberExpression.Type, npse.ExpandPaths, npse.CountOption, npse.CustomQueryOptions, npse.Projection);
+            }
+
+            return npse;
+        }
+
+        internal virtual Expression VisitInputReferenceExpression(InputReferenceExpression ire)
+        {
+            Debug.Assert(ire != null, "ire != null -- otherwise caller never should have visited here");
+            ResourceExpression re = (ResourceExpression)this.Visit(ire.Target);
+            return re.CreateReference();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/DataServiceQueryProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/DataServiceQueryProvider.cs
@@ -1,132 +1,132 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    internal sealed class DataServiceQueryProvider : IQueryProvider
-    {
-        internal readonly DataServiceContext Context;
-
-        internal DataServiceQueryProvider(DataServiceContext context)
-        {
-            this.Context = context;
-        }
-
-        #region IQueryProvider implementation
-
-        public IQueryable CreateQuery(Expression expression)
-        {
-            Util.CheckArgumentNull(expression, "expression");
-            Type et = TypeSystem.GetElementType(expression.Type);
-            Type qt = typeof(DataServiceQuery<>.DataServiceOrderedQuery).MakeGenericType(et);
-            object[] args = new object[] { expression, this };
-
-            ConstructorInfo ci = qt.GetConstructor(
-                BindingFlags.NonPublic | BindingFlags.Instance, 
-                null, 
-                new Type[] { typeof(Expression), typeof(DataServiceQueryProvider) }, 
-                null);
-
-            return (IQueryable)Util.ConstructorInvoke(ci, args);
-        }
-
-        public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
-        {
-            Util.CheckArgumentNull(expression, "expression");
-            return new DataServiceQuery<TElement>.DataServiceOrderedQuery(expression, this);
-        }
-
-        public object Execute(Expression expression)
-        {
-            Util.CheckArgumentNull(expression, "expression");
-
-            MethodInfo mi = typeof(DataServiceQueryProvider).GetMethod("ReturnSingleton", BindingFlags.NonPublic | BindingFlags.Instance);
-            return mi.MakeGenericMethod(expression.Type).Invoke(this, new object[] { expression });
-        }
-
-        public TResult Execute<TResult>(Expression expression)
-        {
-            Util.CheckArgumentNull(expression, "expression");
-            return ReturnSingleton<TResult>(expression);
-        }
-
-        #endregion
-
-        internal TElement ReturnSingleton<TElement>(Expression expression)
-        {
-            IQueryable<TElement> query = new DataServiceQuery<TElement>.DataServiceOrderedQuery(expression, this);
-
-            MethodCallExpression mce = expression as MethodCallExpression;
-            Debug.Assert(mce != null, "mce != null");
-
-            SequenceMethod sequenceMethod;
-            if (ReflectionUtil.TryIdentifySequenceMethod(mce.Method, out sequenceMethod))
-            {
-                switch (sequenceMethod)
-                {
-                    case SequenceMethod.Single:
-                        return query.AsEnumerable().Single();
-                    case SequenceMethod.SingleOrDefault:
-                        return query.AsEnumerable().SingleOrDefault();
-                    case SequenceMethod.First:
-                        return query.AsEnumerable().First();
-                    case SequenceMethod.FirstOrDefault:
-                        return query.AsEnumerable().FirstOrDefault();
-#if !ASTORIA_LIGHT
-                    case SequenceMethod.LongCount:
-                    case SequenceMethod.Count:
-                        return (TElement)Convert.ChangeType(((DataServiceQuery<TElement>)query).GetQuerySetCount(this.Context), typeof(TElement), System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
-#endif
-                    default:
-                        throw Error.MethodNotSupported(mce);
-                }
-            }
-
-            Debug.Assert(false, "Not supported singleton operator not caught by Resource Binder");
-            throw Error.MethodNotSupported(mce);
-        }
-
-        internal QueryComponents Translate(Expression e)
-        {
-            Uri uri;
-            Version version;
-            bool addTrailingParens = false;
-            Dictionary<Expression, Expression> normalizerRewrites = null;
-
-            if (!(e is ResourceSetExpression))
-            {
-                normalizerRewrites = new Dictionary<Expression, Expression>(ReferenceEqualityComparer<Expression>.Instance);
-                e = Evaluator.PartialEval(e);
-                e = ExpressionNormalizer.Normalize(e, normalizerRewrites);
-                e = ResourceBinder.Bind(e);
-                addTrailingParens = true;
-            }
-
-            UriWriter.Translate(this.Context, addTrailingParens, e, out uri, out version);
-            ResourceExpression re = e as ResourceExpression;
-            Type lastSegmentType = re.Projection == null ? re.ResourceType : re.Projection.Selector.Parameters[0].Type;
-            LambdaExpression selector = re.Projection == null ? null : re.Projection.Selector;
-            return new QueryComponents(uri, version, lastSegmentType, selector, normalizerRewrites); 
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    internal sealed class DataServiceQueryProvider : IQueryProvider
+    {
+        internal readonly DataServiceContext Context;
+
+        internal DataServiceQueryProvider(DataServiceContext context)
+        {
+            this.Context = context;
+        }
+
+        #region IQueryProvider implementation
+
+        public IQueryable CreateQuery(Expression expression)
+        {
+            Util.CheckArgumentNull(expression, "expression");
+            Type et = TypeSystem.GetElementType(expression.Type);
+            Type qt = typeof(DataServiceQuery<>.DataServiceOrderedQuery).MakeGenericType(et);
+            object[] args = new object[] { expression, this };
+
+            ConstructorInfo ci = qt.GetConstructor(
+                BindingFlags.NonPublic | BindingFlags.Instance, 
+                null, 
+                new Type[] { typeof(Expression), typeof(DataServiceQueryProvider) }, 
+                null);
+
+            return (IQueryable)Util.ConstructorInvoke(ci, args);
+        }
+
+        public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
+        {
+            Util.CheckArgumentNull(expression, "expression");
+            return new DataServiceQuery<TElement>.DataServiceOrderedQuery(expression, this);
+        }
+
+        public object Execute(Expression expression)
+        {
+            Util.CheckArgumentNull(expression, "expression");
+
+            MethodInfo mi = typeof(DataServiceQueryProvider).GetMethod("ReturnSingleton", BindingFlags.NonPublic | BindingFlags.Instance);
+            return mi.MakeGenericMethod(expression.Type).Invoke(this, new object[] { expression });
+        }
+
+        public TResult Execute<TResult>(Expression expression)
+        {
+            Util.CheckArgumentNull(expression, "expression");
+            return ReturnSingleton<TResult>(expression);
+        }
+
+        #endregion
+
+        internal TElement ReturnSingleton<TElement>(Expression expression)
+        {
+            IQueryable<TElement> query = new DataServiceQuery<TElement>.DataServiceOrderedQuery(expression, this);
+
+            MethodCallExpression mce = expression as MethodCallExpression;
+            Debug.Assert(mce != null, "mce != null");
+
+            SequenceMethod sequenceMethod;
+            if (ReflectionUtil.TryIdentifySequenceMethod(mce.Method, out sequenceMethod))
+            {
+                switch (sequenceMethod)
+                {
+                    case SequenceMethod.Single:
+                        return query.AsEnumerable().Single();
+                    case SequenceMethod.SingleOrDefault:
+                        return query.AsEnumerable().SingleOrDefault();
+                    case SequenceMethod.First:
+                        return query.AsEnumerable().First();
+                    case SequenceMethod.FirstOrDefault:
+                        return query.AsEnumerable().FirstOrDefault();
+#if !ASTORIA_LIGHT
+                    case SequenceMethod.LongCount:
+                    case SequenceMethod.Count:
+                        return (TElement)Convert.ChangeType(((DataServiceQuery<TElement>)query).GetQuerySetCount(this.Context), typeof(TElement), System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
+#endif
+                    default:
+                        throw Error.MethodNotSupported(mce);
+                }
+            }
+
+            Debug.Assert(false, "Not supported singleton operator not caught by Resource Binder");
+            throw Error.MethodNotSupported(mce);
+        }
+
+        internal QueryComponents Translate(Expression e)
+        {
+            Uri uri;
+            Version version;
+            bool addTrailingParens = false;
+            Dictionary<Expression, Expression> normalizerRewrites = null;
+
+            if (!(e is ResourceSetExpression))
+            {
+                normalizerRewrites = new Dictionary<Expression, Expression>(ReferenceEqualityComparer<Expression>.Instance);
+                e = Evaluator.PartialEval(e);
+                e = ExpressionNormalizer.Normalize(e, normalizerRewrites);
+                e = ResourceBinder.Bind(e);
+                addTrailingParens = true;
+            }
+
+            UriWriter.Translate(this.Context, addTrailingParens, e, out uri, out version);
+            ResourceExpression re = e as ResourceExpression;
+            Type lastSegmentType = re.Projection == null ? re.ResourceType : re.Projection.Selector.Parameters[0].Type;
+            LambdaExpression selector = re.Projection == null ? null : re.Projection.Selector;
+            return new QueryComponents(uri, version, lastSegmentType, selector, normalizerRewrites); 
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/Evaluator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/Evaluator.cs
@@ -1,178 +1,178 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-#if ASTORIA_LIGHT    
-    internal class HashSet<T> : Dictionary<T, T>, IEnumerable<T> where T : class
-    {
-        public HashSet() { }
-
-        public HashSet(IEqualityComparer<T> comparer) : base(comparer) { }
-
-        public HashSet(IEnumerable<T> collection, IEqualityComparer<T> comparer) : base(comparer)
-        {
-           this.UnionWith(collection);
-        }
-
-        public bool Add(T value) { if (!base.ContainsKey(value)) { base.Add(value, value); return true; } return false; }
-
-        public bool Contains(T value) { return base.ContainsKey(value); }
-
-        new public bool Remove(T value) { return base.Remove(value); }
-
-        new public IEnumerator<T> GetEnumerator() { return base.Keys.GetEnumerator(); }
-
-        public void UnionWith(IEnumerable<T> other)
-        {
-            if (other == null)
-            {
-                throw new ArgumentNullException("other");
-            }
-        
-            foreach (T local in other)
-            {
-                this.Add(local);
-            }
-        }
-    }
-#endif
-    
-    internal static class Evaluator
-    {
-        internal static Expression PartialEval(Expression expression, Func<Expression, bool> canBeEvaluated)
-        {
-            Nominator nominator = new Nominator(canBeEvaluated);
-            HashSet<Expression> candidates = nominator.Nominate(expression);
-            return new SubtreeEvaluator(candidates).Eval(expression);
-        }
-
-        internal static Expression PartialEval(Expression expression)
-        {
-            return PartialEval(expression, Evaluator.CanBeEvaluatedLocally);
-        }
-
-        private static bool CanBeEvaluatedLocally(Expression expression)
-        {
-            return expression.NodeType != ExpressionType.Parameter &&
-                expression.NodeType != ExpressionType.Lambda &&
-                expression.NodeType != (ExpressionType) ResourceExpressionType.RootResourceSet;
-        }
-
-        internal class SubtreeEvaluator : DataServiceExpressionVisitor
-        {
-            private HashSet<Expression> candidates;
-
-            internal SubtreeEvaluator(HashSet<Expression> candidates)
-            {
-                this.candidates = candidates;
-            }
-
-            internal Expression Eval(Expression exp)
-            {
-                return this.Visit(exp);
-            }
-
-            internal override Expression Visit(Expression exp)
-            {
-                if (exp == null)
-                {
-                    return null;
-                }
-
-                if (this.candidates.Contains(exp))
-                {
-                    return Evaluate(exp);
-                }
-
-                return base.Visit(exp);
-            }
-
-            private static Expression Evaluate(Expression e)
-            {
-                if (e.NodeType == ExpressionType.Constant)
-                {
-                    return e;
-                }
-
-#if ASTORIA_LIGHT
-                LambdaExpression lambda = ExpressionHelpers.CreateLambda(e, new ParameterExpression[0]); 
-#else
-                LambdaExpression lambda = Expression.Lambda(e);
-#endif
-                Delegate fn = lambda.Compile();
-                object constantValue = fn.DynamicInvoke(null);
-                Debug.Assert(!(constantValue is Expression), "!(constantValue is Expression)");
-                
-                Type constantType = e.Type;
-                if (constantValue != null && constantType.IsArray && constantType.GetElementType() == constantValue.GetType().GetElementType())
-                {
-                    constantType = constantValue.GetType();
-                }
-
-                return Expression.Constant(constantValue, constantType);
-            }
-        }
-
-        internal class Nominator : DataServiceExpressionVisitor
-        {
-            private Func<Expression, bool> functionCanBeEvaluated;
-
-            private HashSet<Expression> candidates;
-
-            private bool cannotBeEvaluated;
-
-            internal Nominator(Func<Expression, bool> functionCanBeEvaluated)
-            {
-                this.functionCanBeEvaluated = functionCanBeEvaluated;
-            }
-
-            internal HashSet<Expression> Nominate(Expression expression)
-            {
-                this.candidates = new HashSet<Expression>(EqualityComparer<Expression>.Default);
-                this.Visit(expression);
-                return this.candidates;
-            }
-
-            internal override Expression Visit(Expression expression)
-            {
-                if (expression != null)
-                {
-                    bool saveCannotBeEvaluated = this.cannotBeEvaluated;
-                    this.cannotBeEvaluated = false;
-
-                    base.Visit(expression);
-
-                    if (!this.cannotBeEvaluated)
-                    {
-                        if (this.functionCanBeEvaluated(expression))
-                        {
-                            this.candidates.Add(expression);
-                        }
-                        else
-                        {
-                            this.cannotBeEvaluated = true;
-                        }
-                    }
-
-                    this.cannotBeEvaluated |= saveCannotBeEvaluated;
-                }
-
-                return expression;
-            }
-        }
-    } 
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+#if ASTORIA_LIGHT    
+    internal class HashSet<T> : Dictionary<T, T>, IEnumerable<T> where T : class
+    {
+        public HashSet() { }
+
+        public HashSet(IEqualityComparer<T> comparer) : base(comparer) { }
+
+        public HashSet(IEnumerable<T> collection, IEqualityComparer<T> comparer) : base(comparer)
+        {
+           this.UnionWith(collection);
+        }
+
+        public bool Add(T value) { if (!base.ContainsKey(value)) { base.Add(value, value); return true; } return false; }
+
+        public bool Contains(T value) { return base.ContainsKey(value); }
+
+        new public bool Remove(T value) { return base.Remove(value); }
+
+        new public IEnumerator<T> GetEnumerator() { return base.Keys.GetEnumerator(); }
+
+        public void UnionWith(IEnumerable<T> other)
+        {
+            if (other == null)
+            {
+                throw new ArgumentNullException("other");
+            }
+        
+            foreach (T local in other)
+            {
+                this.Add(local);
+            }
+        }
+    }
+#endif
+    
+    internal static class Evaluator
+    {
+        internal static Expression PartialEval(Expression expression, Func<Expression, bool> canBeEvaluated)
+        {
+            Nominator nominator = new Nominator(canBeEvaluated);
+            HashSet<Expression> candidates = nominator.Nominate(expression);
+            return new SubtreeEvaluator(candidates).Eval(expression);
+        }
+
+        internal static Expression PartialEval(Expression expression)
+        {
+            return PartialEval(expression, Evaluator.CanBeEvaluatedLocally);
+        }
+
+        private static bool CanBeEvaluatedLocally(Expression expression)
+        {
+            return expression.NodeType != ExpressionType.Parameter &&
+                expression.NodeType != ExpressionType.Lambda &&
+                expression.NodeType != (ExpressionType) ResourceExpressionType.RootResourceSet;
+        }
+
+        internal class SubtreeEvaluator : DataServiceExpressionVisitor
+        {
+            private HashSet<Expression> candidates;
+
+            internal SubtreeEvaluator(HashSet<Expression> candidates)
+            {
+                this.candidates = candidates;
+            }
+
+            internal Expression Eval(Expression exp)
+            {
+                return this.Visit(exp);
+            }
+
+            internal override Expression Visit(Expression exp)
+            {
+                if (exp == null)
+                {
+                    return null;
+                }
+
+                if (this.candidates.Contains(exp))
+                {
+                    return Evaluate(exp);
+                }
+
+                return base.Visit(exp);
+            }
+
+            private static Expression Evaluate(Expression e)
+            {
+                if (e.NodeType == ExpressionType.Constant)
+                {
+                    return e;
+                }
+
+#if ASTORIA_LIGHT
+                LambdaExpression lambda = ExpressionHelpers.CreateLambda(e, new ParameterExpression[0]); 
+#else
+                LambdaExpression lambda = Expression.Lambda(e);
+#endif
+                Delegate fn = lambda.Compile();
+                object constantValue = fn.DynamicInvoke(null);
+                Debug.Assert(!(constantValue is Expression), "!(constantValue is Expression)");
+                
+                Type constantType = e.Type;
+                if (constantValue != null && constantType.IsArray && constantType.GetElementType() == constantValue.GetType().GetElementType())
+                {
+                    constantType = constantValue.GetType();
+                }
+
+                return Expression.Constant(constantValue, constantType);
+            }
+        }
+
+        internal class Nominator : DataServiceExpressionVisitor
+        {
+            private Func<Expression, bool> functionCanBeEvaluated;
+
+            private HashSet<Expression> candidates;
+
+            private bool cannotBeEvaluated;
+
+            internal Nominator(Func<Expression, bool> functionCanBeEvaluated)
+            {
+                this.functionCanBeEvaluated = functionCanBeEvaluated;
+            }
+
+            internal HashSet<Expression> Nominate(Expression expression)
+            {
+                this.candidates = new HashSet<Expression>(EqualityComparer<Expression>.Default);
+                this.Visit(expression);
+                return this.candidates;
+            }
+
+            internal override Expression Visit(Expression expression)
+            {
+                if (expression != null)
+                {
+                    bool saveCannotBeEvaluated = this.cannotBeEvaluated;
+                    this.cannotBeEvaluated = false;
+
+                    base.Visit(expression);
+
+                    if (!this.cannotBeEvaluated)
+                    {
+                        if (this.functionCanBeEvaluated(expression))
+                        {
+                            this.candidates.Add(expression);
+                        }
+                        else
+                        {
+                            this.cannotBeEvaluated = true;
+                        }
+                    }
+
+                    this.cannotBeEvaluated |= saveCannotBeEvaluated;
+                }
+
+                return expression;
+            }
+        }
+    } 
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ExpressionNormalizer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ExpressionNormalizer.cs
@@ -1,466 +1,466 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    internal class ExpressionNormalizer : DataServiceExpressionVisitor
-    {
-        #region Private fields.
-
-        private const bool LiftToNull = false;
-
-        private readonly Dictionary<Expression, Pattern> _patterns = new Dictionary<Expression, Pattern>(ReferenceEqualityComparer<Expression>.Instance);
-
-        private readonly Dictionary<Expression, Expression> normalizerRewrites;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        private ExpressionNormalizer(Dictionary<Expression, Expression> normalizerRewrites)
-        {
-            Debug.Assert(normalizerRewrites != null, "normalizerRewrites != null");
-            this.normalizerRewrites = normalizerRewrites;
-        }
-
-        #endregion Constructors.
-
-        #region Internal properties.
-
-        internal Dictionary<Expression, Expression> NormalizerRewrites
-        {
-            get { return this.normalizerRewrites; }
-        }
-
-        #endregion Internal properties.
-
-        internal static Expression Normalize(Expression expression, Dictionary<Expression, Expression> rewrites)
-        {
-            Debug.Assert(expression != null, "expression != null");
-            Debug.Assert(rewrites != null, "rewrites != null");
-
-            ExpressionNormalizer normalizer = new ExpressionNormalizer(rewrites);
-            Expression result = normalizer.Visit(expression);
-            return result;
-        }
-
-        internal override Expression VisitBinary(BinaryExpression b)
-        {
-            BinaryExpression visited = (BinaryExpression)base.VisitBinary(b);
-
-            if (visited.NodeType == ExpressionType.Equal)
-            {
-                Expression normalizedLeft = UnwrapObjectConvert(visited.Left);
-                Expression normalizedRight = UnwrapObjectConvert(visited.Right);
-                if (normalizedLeft != visited.Left || normalizedRight != visited.Right)
-                {
-                    visited = CreateRelationalOperator(ExpressionType.Equal, normalizedLeft, normalizedRight);
-                }
-            }
-
-            Pattern pattern;
-            if (_patterns.TryGetValue(visited.Left, out pattern) && pattern.Kind == PatternKind.Compare && IsConstantZero(visited.Right))
-            {
-                ComparePattern comparePattern = (ComparePattern)pattern;
-                BinaryExpression relationalExpression;
-                if (TryCreateRelationalOperator(visited.NodeType, comparePattern.Left, comparePattern.Right, out relationalExpression))
-                {
-                    visited = relationalExpression;
-                }
-            }
-
-            this.RecordRewrite(b, visited);
-
-            return visited;
-        }
-
-        internal override Expression VisitUnary(UnaryExpression u)
-        {
-            UnaryExpression visited = (UnaryExpression)base.VisitUnary(u);
-            Expression result = visited;
-
-            this.RecordRewrite(u, result);
-
-            if ((visited.NodeType == ExpressionType.Convert || visited.NodeType == ExpressionType.TypeAs) && visited.Type.IsAssignableFrom(visited.Operand.Type))
-            {
-                if (!ClientConvert.IsKnownNullableType(visited.Operand.Type) && !ClientConvert.IsKnownNullableType(visited.Type) || visited.Operand.Type == visited.Type)
-                {
-                    if(!(ClientType.CheckElementTypeIsEntity(visited.Operand.Type) && ProjectionAnalyzer.IsCollectionProducingExpression(visited.Operand)))
-                    {
-                        result = visited.Operand;
-                    }
-                }
-            }
-
-            return result;
-        }
-
-        private static Expression UnwrapObjectConvert(Expression input)
-        {
-            if (input.NodeType == ExpressionType.Constant && input.Type == typeof(object))
-            {
-                ConstantExpression constant = (ConstantExpression)input;
-
-                if (constant.Value != null &&
-                    constant.Value.GetType() != typeof(object))
-                {
-                    return Expression.Constant(constant.Value, constant.Value.GetType());
-                }
-            }
-
-            while (ExpressionType.Convert == input.NodeType && typeof(object) == input.Type)
-            {
-                input = ((UnaryExpression)input).Operand;
-            }
-
-            return input;
-        }
-
-        private static bool IsConstantZero(Expression expression)
-        {
-            return expression.NodeType == ExpressionType.Constant &&
-                ((ConstantExpression)expression).Value.Equals(0);
-        }
-
-        internal override Expression VisitMethodCall(MethodCallExpression call)
-        {
-            Expression visited = this.VisitMethodCallNoRewrite(call);
-            this.RecordRewrite(call, visited);
-            return visited;
-        }
-
-        internal Expression VisitMethodCallNoRewrite(MethodCallExpression call)
-        {
-            MethodCallExpression visited = (MethodCallExpression)base.VisitMethodCall(call);
-
-            if (visited.Method.IsStatic && visited.Method.Name.StartsWith("op_", StringComparison.Ordinal))
-            {
-                if (visited.Arguments.Count == 2)
-                {
-                    switch (visited.Method.Name)
-                    {
-                        case "op_Equality":
-                            return Expression.Equal(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
-
-                        case "op_Inequality":
-                            return Expression.NotEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
-
-                        case "op_GreaterThan":
-                            return Expression.GreaterThan(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
-
-                        case "op_GreaterThanOrEqual":
-                            return Expression.GreaterThanOrEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
-
-                        case "op_LessThan":
-                            return Expression.LessThan(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
-
-                        case "op_LessThanOrEqual":
-                            return Expression.LessThanOrEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
-
-                        case "op_Multiply":
-                            return Expression.Multiply(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        case "op_Subtraction":
-                            return Expression.Subtract(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        case "op_Addition":
-                            return Expression.Add(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        case "op_Division":
-                            return Expression.Divide(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        case "op_Modulus":
-                            return Expression.Modulo(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        case "op_BitwiseAnd":
-                            return Expression.And(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        case "op_BitwiseOr":
-                            return Expression.Or(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        case "op_ExclusiveOr":
-                            return Expression.ExclusiveOr(visited.Arguments[0], visited.Arguments[1], visited.Method);
-
-                        default:
-                            break;
-                    }
-                }
-
-                if (visited.Arguments.Count == 1)
-                {
-                    switch (visited.Method.Name)
-                    {
-                        case "op_UnaryNegation":
-                            return Expression.Negate(visited.Arguments[0], visited.Method);
-
-                        case "op_UnaryPlus":
-                            return Expression.UnaryPlus(visited.Arguments[0], visited.Method);
-
-                        case "op_Explicit":
-                        case "op_Implicit":
-                            return Expression.Convert(visited.Arguments[0], visited.Type, visited.Method);
-
-                        case "op_OnesComplement":
-                        case "op_False":
-                            return Expression.Not(visited.Arguments[0], visited.Method);
-
-                        default:
-                            break;
-                    }
-                }
-            }
-
-            if (visited.Method.IsStatic && visited.Method.Name == "Equals" && visited.Arguments.Count > 1)
-            {
-                return Expression.Equal(visited.Arguments[0], visited.Arguments[1], false, visited.Method);
-            }
-
-            if (!visited.Method.IsStatic && visited.Method.Name == "Equals" && visited.Arguments.Count > 0)
-            {
-                return CreateRelationalOperator(ExpressionType.Equal, visited.Object, visited.Arguments[0]);
-            }
-
-            if (visited.Method.IsStatic && visited.Method.Name == "CompareString" && visited.Method.DeclaringType.FullName == "Microsoft.VisualBasic.CompilerServices.Operators")
-            {
-                return CreateCompareExpression(visited.Arguments[0], visited.Arguments[1]);
-            }
-
-            if (!visited.Method.IsStatic && visited.Method.Name == "CompareTo" && visited.Arguments.Count == 1 && visited.Method.ReturnType == typeof(int))
-            {
-                return CreateCompareExpression(visited.Object, visited.Arguments[0]);
-            }
-
-            if (visited.Method.IsStatic && visited.Method.Name == "Compare" && visited.Arguments.Count > 1 && visited.Method.ReturnType == typeof(int))
-            {
-                return CreateCompareExpression(visited.Arguments[0], visited.Arguments[1]);
-            }
-
-            MethodCallExpression normalizedResult = NormalizePredicateArgument(visited);
-
-            return normalizedResult;
-        }
-
-        private static MethodCallExpression NormalizePredicateArgument(MethodCallExpression callExpression)
-        {
-            MethodCallExpression result;
-
-            int argumentOrdinal;
-            Expression normalizedArgument;
-            if (HasPredicateArgument(callExpression, out argumentOrdinal) &&
-                TryMatchCoalescePattern(callExpression.Arguments[argumentOrdinal], out normalizedArgument))
-            {
-                List<Expression> normalizedArguments = new List<Expression>(callExpression.Arguments);
-
-                normalizedArguments[argumentOrdinal] = normalizedArgument;
-
-                result = Expression.Call(callExpression.Object, callExpression.Method, normalizedArguments);
-            }
-            else
-            {
-                result = callExpression;
-            }
-
-            return result;
-        }
-
-        private static bool HasPredicateArgument(MethodCallExpression callExpression, out int argumentOrdinal)
-        {
-            argumentOrdinal = default(int);
-            bool result = false;
-
-            SequenceMethod sequenceMethod;
-            if (2 <= callExpression.Arguments.Count &&
-                ReflectionUtil.TryIdentifySequenceMethod(callExpression.Method, out sequenceMethod))
-            {
-                switch (sequenceMethod)
-                {
-                    case SequenceMethod.FirstPredicate:
-                    case SequenceMethod.FirstOrDefaultPredicate:
-                    case SequenceMethod.SinglePredicate:
-                    case SequenceMethod.SingleOrDefaultPredicate:
-                    case SequenceMethod.LastPredicate:
-                    case SequenceMethod.LastOrDefaultPredicate:
-                    case SequenceMethod.Where:
-                    case SequenceMethod.WhereOrdinal:
-                    case SequenceMethod.CountPredicate:
-                    case SequenceMethod.LongCountPredicate:
-                    case SequenceMethod.AnyPredicate:
-                    case SequenceMethod.All:
-                    case SequenceMethod.SkipWhile:
-                    case SequenceMethod.SkipWhileOrdinal:
-                    case SequenceMethod.TakeWhile:
-                    case SequenceMethod.TakeWhileOrdinal:
-                        argumentOrdinal = 1;                        result = true;
-                        break;
-                }
-            }
-
-            return result;
-        }
-
-        private static bool TryMatchCoalescePattern(Expression expression, out Expression normalized)
-        {
-            normalized = null;
-            bool result = false;
-
-            if (expression.NodeType == ExpressionType.Quote)
-            {
-                UnaryExpression quote = (UnaryExpression)expression;
-                if (TryMatchCoalescePattern(quote.Operand, out normalized))
-                {
-                    result = true;
-                    normalized = Expression.Quote(normalized);
-                }
-            }
-            else if (expression.NodeType == ExpressionType.Lambda)
-            {
-                LambdaExpression lambda = (LambdaExpression)expression;
-
-                if (lambda.Body.NodeType == ExpressionType.Coalesce && lambda.Body.Type == typeof(bool))
-                {
-                    BinaryExpression coalesce = (BinaryExpression)lambda.Body;
-                    if (coalesce.Right.NodeType == ExpressionType.Constant && false.Equals(((ConstantExpression)coalesce.Right).Value))
-                    {
-                        normalized = Expression.Lambda(lambda.Type, Expression.Convert(coalesce.Left, typeof(bool)), lambda.Parameters);
-                        result = true;
-                    }
-                }
-            }
-
-            return result;
-        }
-
-        private static readonly MethodInfo s_relationalOperatorPlaceholderMethod = typeof(ExpressionNormalizer).GetMethod("RelationalOperatorPlaceholder", BindingFlags.Static | BindingFlags.NonPublic);
-
-        private static bool RelationalOperatorPlaceholder<TLeft, TRight>(TLeft left, TRight right)
-        {
-            Debug.Assert(false, "This method should never be called. It exists merely to support creation of relational LINQ expressions.");
-            return object.ReferenceEquals(left, right);
-        }
-
-        private static BinaryExpression CreateRelationalOperator(ExpressionType op, Expression left, Expression right)
-        {
-            BinaryExpression result;
-            if (!TryCreateRelationalOperator(op, left, right, out result))
-            {
-                Debug.Assert(false, "CreateRelationalOperator has unknown op " + op);
-            }
-
-            return result;
-        }
-
-        private static bool TryCreateRelationalOperator(ExpressionType op, Expression left, Expression right, out BinaryExpression result)
-        {
-            MethodInfo relationalOperatorPlaceholderMethod = s_relationalOperatorPlaceholderMethod.MakeGenericMethod(left.Type, right.Type);
-
-            switch (op)
-            {
-                case ExpressionType.Equal:
-                    result = Expression.Equal(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
-                    return true;
-
-                case ExpressionType.NotEqual:
-                    result = Expression.NotEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
-                    return true;
-
-                case ExpressionType.LessThan:
-                    result = Expression.LessThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
-                    return true;
-
-                case ExpressionType.LessThanOrEqual:
-                    result = Expression.LessThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
-                    return true;
-
-                case ExpressionType.GreaterThan:
-                    result = Expression.GreaterThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
-                    return true;
-
-                case ExpressionType.GreaterThanOrEqual:
-                    result = Expression.GreaterThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
-                    return true;
-
-                default:
-                    result = null;
-                    return false;
-            }
-        }
-
-        private Expression CreateCompareExpression(Expression left, Expression right)
-        {
-            Expression result = Expression.Condition(
-                CreateRelationalOperator(ExpressionType.Equal, left, right),
-                Expression.Constant(0),
-                Expression.Condition(
-                    CreateRelationalOperator(ExpressionType.GreaterThan, left, right),
-                    Expression.Constant(1),
-                    Expression.Constant(-1)));
-
-            _patterns[result] = new ComparePattern(left, right);
-
-            return result;
-        }
-
-        private void RecordRewrite(Expression source, Expression rewritten)
-        {
-            Debug.Assert(source != null, "source != null");
-            Debug.Assert(rewritten != null, "rewritten != null");
-            Debug.Assert(this.NormalizerRewrites != null, "this.NormalizerRewrites != null");
-
-            if (source != rewritten)
-            {
-                this.NormalizerRewrites.Add(rewritten, source);
-            }
-        }
-
-        #region Inner types.
-
-        private abstract class Pattern
-        {
-            internal abstract PatternKind Kind { get; }
-        }
-
-        private enum PatternKind
-        {
-            Compare,
-        }
-
-        private sealed class ComparePattern : Pattern
-        {
-            internal ComparePattern(Expression left, Expression right)
-            {
-                this.Left = left;
-                this.Right = right;
-            }
-
-            internal readonly Expression Left;
-
-            internal readonly Expression Right;
-
-
-            internal override PatternKind Kind
-            {
-                get { return PatternKind.Compare; }
-            }
-        }
-
-        #endregion Inner types.
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    internal class ExpressionNormalizer : DataServiceExpressionVisitor
+    {
+        #region Private fields.
+
+        private const bool LiftToNull = false;
+
+        private readonly Dictionary<Expression, Pattern> _patterns = new Dictionary<Expression, Pattern>(ReferenceEqualityComparer<Expression>.Instance);
+
+        private readonly Dictionary<Expression, Expression> normalizerRewrites;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        private ExpressionNormalizer(Dictionary<Expression, Expression> normalizerRewrites)
+        {
+            Debug.Assert(normalizerRewrites != null, "normalizerRewrites != null");
+            this.normalizerRewrites = normalizerRewrites;
+        }
+
+        #endregion Constructors.
+
+        #region Internal properties.
+
+        internal Dictionary<Expression, Expression> NormalizerRewrites
+        {
+            get { return this.normalizerRewrites; }
+        }
+
+        #endregion Internal properties.
+
+        internal static Expression Normalize(Expression expression, Dictionary<Expression, Expression> rewrites)
+        {
+            Debug.Assert(expression != null, "expression != null");
+            Debug.Assert(rewrites != null, "rewrites != null");
+
+            ExpressionNormalizer normalizer = new ExpressionNormalizer(rewrites);
+            Expression result = normalizer.Visit(expression);
+            return result;
+        }
+
+        internal override Expression VisitBinary(BinaryExpression b)
+        {
+            BinaryExpression visited = (BinaryExpression)base.VisitBinary(b);
+
+            if (visited.NodeType == ExpressionType.Equal)
+            {
+                Expression normalizedLeft = UnwrapObjectConvert(visited.Left);
+                Expression normalizedRight = UnwrapObjectConvert(visited.Right);
+                if (normalizedLeft != visited.Left || normalizedRight != visited.Right)
+                {
+                    visited = CreateRelationalOperator(ExpressionType.Equal, normalizedLeft, normalizedRight);
+                }
+            }
+
+            Pattern pattern;
+            if (_patterns.TryGetValue(visited.Left, out pattern) && pattern.Kind == PatternKind.Compare && IsConstantZero(visited.Right))
+            {
+                ComparePattern comparePattern = (ComparePattern)pattern;
+                BinaryExpression relationalExpression;
+                if (TryCreateRelationalOperator(visited.NodeType, comparePattern.Left, comparePattern.Right, out relationalExpression))
+                {
+                    visited = relationalExpression;
+                }
+            }
+
+            this.RecordRewrite(b, visited);
+
+            return visited;
+        }
+
+        internal override Expression VisitUnary(UnaryExpression u)
+        {
+            UnaryExpression visited = (UnaryExpression)base.VisitUnary(u);
+            Expression result = visited;
+
+            this.RecordRewrite(u, result);
+
+            if ((visited.NodeType == ExpressionType.Convert || visited.NodeType == ExpressionType.TypeAs) && visited.Type.IsAssignableFrom(visited.Operand.Type))
+            {
+                if (!ClientConvert.IsKnownNullableType(visited.Operand.Type) && !ClientConvert.IsKnownNullableType(visited.Type) || visited.Operand.Type == visited.Type)
+                {
+                    if(!(ClientType.CheckElementTypeIsEntity(visited.Operand.Type) && ProjectionAnalyzer.IsCollectionProducingExpression(visited.Operand)))
+                    {
+                        result = visited.Operand;
+                    }
+                }
+            }
+
+            return result;
+        }
+
+        private static Expression UnwrapObjectConvert(Expression input)
+        {
+            if (input.NodeType == ExpressionType.Constant && input.Type == typeof(object))
+            {
+                ConstantExpression constant = (ConstantExpression)input;
+
+                if (constant.Value != null &&
+                    constant.Value.GetType() != typeof(object))
+                {
+                    return Expression.Constant(constant.Value, constant.Value.GetType());
+                }
+            }
+
+            while (ExpressionType.Convert == input.NodeType && typeof(object) == input.Type)
+            {
+                input = ((UnaryExpression)input).Operand;
+            }
+
+            return input;
+        }
+
+        private static bool IsConstantZero(Expression expression)
+        {
+            return expression.NodeType == ExpressionType.Constant &&
+                ((ConstantExpression)expression).Value.Equals(0);
+        }
+
+        internal override Expression VisitMethodCall(MethodCallExpression call)
+        {
+            Expression visited = this.VisitMethodCallNoRewrite(call);
+            this.RecordRewrite(call, visited);
+            return visited;
+        }
+
+        internal Expression VisitMethodCallNoRewrite(MethodCallExpression call)
+        {
+            MethodCallExpression visited = (MethodCallExpression)base.VisitMethodCall(call);
+
+            if (visited.Method.IsStatic && visited.Method.Name.StartsWith("op_", StringComparison.Ordinal))
+            {
+                if (visited.Arguments.Count == 2)
+                {
+                    switch (visited.Method.Name)
+                    {
+                        case "op_Equality":
+                            return Expression.Equal(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
+
+                        case "op_Inequality":
+                            return Expression.NotEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
+
+                        case "op_GreaterThan":
+                            return Expression.GreaterThan(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
+
+                        case "op_GreaterThanOrEqual":
+                            return Expression.GreaterThanOrEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
+
+                        case "op_LessThan":
+                            return Expression.LessThan(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
+
+                        case "op_LessThanOrEqual":
+                            return Expression.LessThanOrEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method);
+
+                        case "op_Multiply":
+                            return Expression.Multiply(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        case "op_Subtraction":
+                            return Expression.Subtract(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        case "op_Addition":
+                            return Expression.Add(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        case "op_Division":
+                            return Expression.Divide(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        case "op_Modulus":
+                            return Expression.Modulo(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        case "op_BitwiseAnd":
+                            return Expression.And(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        case "op_BitwiseOr":
+                            return Expression.Or(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        case "op_ExclusiveOr":
+                            return Expression.ExclusiveOr(visited.Arguments[0], visited.Arguments[1], visited.Method);
+
+                        default:
+                            break;
+                    }
+                }
+
+                if (visited.Arguments.Count == 1)
+                {
+                    switch (visited.Method.Name)
+                    {
+                        case "op_UnaryNegation":
+                            return Expression.Negate(visited.Arguments[0], visited.Method);
+
+                        case "op_UnaryPlus":
+                            return Expression.UnaryPlus(visited.Arguments[0], visited.Method);
+
+                        case "op_Explicit":
+                        case "op_Implicit":
+                            return Expression.Convert(visited.Arguments[0], visited.Type, visited.Method);
+
+                        case "op_OnesComplement":
+                        case "op_False":
+                            return Expression.Not(visited.Arguments[0], visited.Method);
+
+                        default:
+                            break;
+                    }
+                }
+            }
+
+            if (visited.Method.IsStatic && visited.Method.Name == "Equals" && visited.Arguments.Count > 1)
+            {
+                return Expression.Equal(visited.Arguments[0], visited.Arguments[1], false, visited.Method);
+            }
+
+            if (!visited.Method.IsStatic && visited.Method.Name == "Equals" && visited.Arguments.Count > 0)
+            {
+                return CreateRelationalOperator(ExpressionType.Equal, visited.Object, visited.Arguments[0]);
+            }
+
+            if (visited.Method.IsStatic && visited.Method.Name == "CompareString" && visited.Method.DeclaringType.FullName == "Microsoft.VisualBasic.CompilerServices.Operators")
+            {
+                return CreateCompareExpression(visited.Arguments[0], visited.Arguments[1]);
+            }
+
+            if (!visited.Method.IsStatic && visited.Method.Name == "CompareTo" && visited.Arguments.Count == 1 && visited.Method.ReturnType == typeof(int))
+            {
+                return CreateCompareExpression(visited.Object, visited.Arguments[0]);
+            }
+
+            if (visited.Method.IsStatic && visited.Method.Name == "Compare" && visited.Arguments.Count > 1 && visited.Method.ReturnType == typeof(int))
+            {
+                return CreateCompareExpression(visited.Arguments[0], visited.Arguments[1]);
+            }
+
+            MethodCallExpression normalizedResult = NormalizePredicateArgument(visited);
+
+            return normalizedResult;
+        }
+
+        private static MethodCallExpression NormalizePredicateArgument(MethodCallExpression callExpression)
+        {
+            MethodCallExpression result;
+
+            int argumentOrdinal;
+            Expression normalizedArgument;
+            if (HasPredicateArgument(callExpression, out argumentOrdinal) &&
+                TryMatchCoalescePattern(callExpression.Arguments[argumentOrdinal], out normalizedArgument))
+            {
+                List<Expression> normalizedArguments = new List<Expression>(callExpression.Arguments);
+
+                normalizedArguments[argumentOrdinal] = normalizedArgument;
+
+                result = Expression.Call(callExpression.Object, callExpression.Method, normalizedArguments);
+            }
+            else
+            {
+                result = callExpression;
+            }
+
+            return result;
+        }
+
+        private static bool HasPredicateArgument(MethodCallExpression callExpression, out int argumentOrdinal)
+        {
+            argumentOrdinal = default(int);
+            bool result = false;
+
+            SequenceMethod sequenceMethod;
+            if (2 <= callExpression.Arguments.Count &&
+                ReflectionUtil.TryIdentifySequenceMethod(callExpression.Method, out sequenceMethod))
+            {
+                switch (sequenceMethod)
+                {
+                    case SequenceMethod.FirstPredicate:
+                    case SequenceMethod.FirstOrDefaultPredicate:
+                    case SequenceMethod.SinglePredicate:
+                    case SequenceMethod.SingleOrDefaultPredicate:
+                    case SequenceMethod.LastPredicate:
+                    case SequenceMethod.LastOrDefaultPredicate:
+                    case SequenceMethod.Where:
+                    case SequenceMethod.WhereOrdinal:
+                    case SequenceMethod.CountPredicate:
+                    case SequenceMethod.LongCountPredicate:
+                    case SequenceMethod.AnyPredicate:
+                    case SequenceMethod.All:
+                    case SequenceMethod.SkipWhile:
+                    case SequenceMethod.SkipWhileOrdinal:
+                    case SequenceMethod.TakeWhile:
+                    case SequenceMethod.TakeWhileOrdinal:
+                        argumentOrdinal = 1;                        result = true;
+                        break;
+                }
+            }
+
+            return result;
+        }
+
+        private static bool TryMatchCoalescePattern(Expression expression, out Expression normalized)
+        {
+            normalized = null;
+            bool result = false;
+
+            if (expression.NodeType == ExpressionType.Quote)
+            {
+                UnaryExpression quote = (UnaryExpression)expression;
+                if (TryMatchCoalescePattern(quote.Operand, out normalized))
+                {
+                    result = true;
+                    normalized = Expression.Quote(normalized);
+                }
+            }
+            else if (expression.NodeType == ExpressionType.Lambda)
+            {
+                LambdaExpression lambda = (LambdaExpression)expression;
+
+                if (lambda.Body.NodeType == ExpressionType.Coalesce && lambda.Body.Type == typeof(bool))
+                {
+                    BinaryExpression coalesce = (BinaryExpression)lambda.Body;
+                    if (coalesce.Right.NodeType == ExpressionType.Constant && false.Equals(((ConstantExpression)coalesce.Right).Value))
+                    {
+                        normalized = Expression.Lambda(lambda.Type, Expression.Convert(coalesce.Left, typeof(bool)), lambda.Parameters);
+                        result = true;
+                    }
+                }
+            }
+
+            return result;
+        }
+
+        private static readonly MethodInfo s_relationalOperatorPlaceholderMethod = typeof(ExpressionNormalizer).GetMethod("RelationalOperatorPlaceholder", BindingFlags.Static | BindingFlags.NonPublic);
+
+        private static bool RelationalOperatorPlaceholder<TLeft, TRight>(TLeft left, TRight right)
+        {
+            Debug.Assert(false, "This method should never be called. It exists merely to support creation of relational LINQ expressions.");
+            return object.ReferenceEquals(left, right);
+        }
+
+        private static BinaryExpression CreateRelationalOperator(ExpressionType op, Expression left, Expression right)
+        {
+            BinaryExpression result;
+            if (!TryCreateRelationalOperator(op, left, right, out result))
+            {
+                Debug.Assert(false, "CreateRelationalOperator has unknown op " + op);
+            }
+
+            return result;
+        }
+
+        private static bool TryCreateRelationalOperator(ExpressionType op, Expression left, Expression right, out BinaryExpression result)
+        {
+            MethodInfo relationalOperatorPlaceholderMethod = s_relationalOperatorPlaceholderMethod.MakeGenericMethod(left.Type, right.Type);
+
+            switch (op)
+            {
+                case ExpressionType.Equal:
+                    result = Expression.Equal(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
+                    return true;
+
+                case ExpressionType.NotEqual:
+                    result = Expression.NotEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
+                    return true;
+
+                case ExpressionType.LessThan:
+                    result = Expression.LessThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
+                    return true;
+
+                case ExpressionType.LessThanOrEqual:
+                    result = Expression.LessThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
+                    return true;
+
+                case ExpressionType.GreaterThan:
+                    result = Expression.GreaterThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
+                    return true;
+
+                case ExpressionType.GreaterThanOrEqual:
+                    result = Expression.GreaterThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod);
+                    return true;
+
+                default:
+                    result = null;
+                    return false;
+            }
+        }
+
+        private Expression CreateCompareExpression(Expression left, Expression right)
+        {
+            Expression result = Expression.Condition(
+                CreateRelationalOperator(ExpressionType.Equal, left, right),
+                Expression.Constant(0),
+                Expression.Condition(
+                    CreateRelationalOperator(ExpressionType.GreaterThan, left, right),
+                    Expression.Constant(1),
+                    Expression.Constant(-1)));
+
+            _patterns[result] = new ComparePattern(left, right);
+
+            return result;
+        }
+
+        private void RecordRewrite(Expression source, Expression rewritten)
+        {
+            Debug.Assert(source != null, "source != null");
+            Debug.Assert(rewritten != null, "rewritten != null");
+            Debug.Assert(this.NormalizerRewrites != null, "this.NormalizerRewrites != null");
+
+            if (source != rewritten)
+            {
+                this.NormalizerRewrites.Add(rewritten, source);
+            }
+        }
+
+        #region Inner types.
+
+        private abstract class Pattern
+        {
+            internal abstract PatternKind Kind { get; }
+        }
+
+        private enum PatternKind
+        {
+            Compare,
+        }
+
+        private sealed class ComparePattern : Pattern
+        {
+            internal ComparePattern(Expression left, Expression right)
+            {
+                this.Left = left;
+                this.Right = right;
+            }
+
+            internal readonly Expression Left;
+
+            internal readonly Expression Right;
+
+
+            internal override PatternKind Kind
+            {
+                get { return PatternKind.Compare; }
+            }
+        }
+
+        #endregion Inner types.
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ExpressionVisitor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ExpressionVisitor.cs
@@ -1,604 +1,604 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.Linq.Expressions;
-#if ASTORIA_LIGHT
-    using System.Reflection;
-    using System.Security;
-    using System.Security.Permissions;
-
-    
-    
-    
-    
-    internal static class ExpressionHelpers
-    {
-        private static MethodInfo lambdaFunc;
-        internal static LambdaExpression CreateLambda(Expression body, params ParameterExpression[] parameters)
-        {
-            return CreateLambda(InferDelegateType(body, parameters), body, parameters);
-        }
-
-        
-        internal static LambdaExpression CreateLambda(Type delegateType, Expression body, params ParameterExpression[] parameters)
-        {
-            
-            
-
-            var args = new[] { Expression.Parameter(typeof(Expression), "body"), Expression.Parameter(typeof(ParameterExpression[]), "parameters") };
-
-            var lambdaFactory = Expression.Lambda<Func<Expression, ParameterExpression[], LambdaExpression>>(
-                Expression.Call(GetLambdaFactoryMethod(delegateType), args), args
-            );
-
-            return lambdaFactory.Compile().Invoke(body, parameters);
-        }
-
-        private static Type InferDelegateType(Expression body, params ParameterExpression[] parameters)
-        {
-            bool isVoid = body.Type == typeof(void);
-            int length = (parameters == null) ? 0 : parameters.Length;
-
-            var typeArgs = new Type[length + (isVoid ? 0 : 1)];
-            for (int i = 0; i < length; i++)
-            {
-                typeArgs[i] = parameters[i].Type;
-            }
-            if (isVoid)
-            {
-                return Expression.GetActionType(typeArgs);
-            }
-            else
-            {
-                typeArgs[length] = body.Type;
-                return Expression.GetFuncType(typeArgs);
-            }
-        }
-
-        private static MethodInfo GetLambdaFactoryMethod(Type delegateType)
-        {
-            
-            if (lambdaFunc == null)
-            {
-                lambdaFunc = new Func<Expression, ParameterExpression[], Expression<Action>>(Expression.Lambda<Action>).Method.GetGenericMethodDefinition();
-            }
-
-            
-            return lambdaFunc.MakeGenericMethod(delegateType);
-        }
-    }
-#endif
-
-
-
-
-    internal abstract class ExpressionVisitor
-    {
-
-
-
-
-
-        internal virtual Expression Visit(Expression exp)
-        {
-            if (exp == null)
-            {
-                return exp;
-            }
-
-            switch (exp.NodeType)
-            {
-                case ExpressionType.UnaryPlus:
-                case ExpressionType.Negate:
-                case ExpressionType.NegateChecked:
-                case ExpressionType.Not:
-                case ExpressionType.Convert:
-                case ExpressionType.ConvertChecked:
-                case ExpressionType.ArrayLength:
-                case ExpressionType.Quote:
-                case ExpressionType.TypeAs:
-                    return this.VisitUnary((UnaryExpression)exp);
-                case ExpressionType.Add:
-                case ExpressionType.AddChecked:
-                case ExpressionType.Subtract:
-                case ExpressionType.SubtractChecked:
-                case ExpressionType.Multiply:
-                case ExpressionType.MultiplyChecked:
-                case ExpressionType.Divide:
-                case ExpressionType.Modulo:
-
-                case ExpressionType.And:
-                case ExpressionType.AndAlso:
-                case ExpressionType.Or:
-                case ExpressionType.OrElse:
-                case ExpressionType.LessThan:
-                case ExpressionType.LessThanOrEqual:
-                case ExpressionType.GreaterThan:
-                case ExpressionType.GreaterThanOrEqual:
-                case ExpressionType.Equal:
-                case ExpressionType.NotEqual:
-                case ExpressionType.Coalesce:
-                case ExpressionType.ArrayIndex:
-                case ExpressionType.RightShift:
-                case ExpressionType.LeftShift:
-                case ExpressionType.ExclusiveOr:
-                    return this.VisitBinary((BinaryExpression)exp);
-                case ExpressionType.TypeIs:
-                    return this.VisitTypeIs((TypeBinaryExpression)exp);
-                case ExpressionType.Conditional:
-                    return this.VisitConditional((ConditionalExpression)exp);
-                case ExpressionType.Constant:
-                    return this.VisitConstant((ConstantExpression)exp);
-                case ExpressionType.Parameter:
-                    return this.VisitParameter((ParameterExpression)exp);
-                case ExpressionType.MemberAccess:
-                    return this.VisitMemberAccess((MemberExpression)exp);
-                case ExpressionType.Call:
-                    return this.VisitMethodCall((MethodCallExpression)exp);
-                case ExpressionType.Lambda:
-                    return this.VisitLambda((LambdaExpression)exp);
-                case ExpressionType.New:
-                    return this.VisitNew((NewExpression)exp);
-                case ExpressionType.NewArrayInit:
-                case ExpressionType.NewArrayBounds:
-                    return this.VisitNewArray((NewArrayExpression)exp);
-                case ExpressionType.Invoke:
-                    return this.VisitInvocation((InvocationExpression)exp);
-                case ExpressionType.MemberInit:
-                    return this.VisitMemberInit((MemberInitExpression)exp);
-                case ExpressionType.ListInit:
-                    return this.VisitListInit((ListInitExpression)exp);
-                default:
-                    throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(exp.NodeType.ToString()));
-            }
-        }
-
-
-        internal virtual MemberBinding VisitBinding(MemberBinding binding)
-        {
-            switch (binding.BindingType)
-            {
-                case MemberBindingType.Assignment:
-                    return this.VisitMemberAssignment((MemberAssignment)binding);
-                case MemberBindingType.MemberBinding:
-                    return this.VisitMemberMemberBinding((MemberMemberBinding)binding);
-                case MemberBindingType.ListBinding:
-                    return this.VisitMemberListBinding((MemberListBinding)binding);
-                default:
-                    throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(binding.BindingType.ToString()));
-            }
-        }
-
-
-
-
-
-
-        internal virtual ElementInit VisitElementInitializer(ElementInit initializer)
-        {
-            ReadOnlyCollection<Expression> arguments = this.VisitExpressionList(initializer.Arguments);
-            if (arguments != initializer.Arguments)
-            {
-                return Expression.ElementInit(initializer.AddMethod, arguments);
-            }
-
-            return initializer;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitUnary(UnaryExpression u)
-        {
-            Expression operand = this.Visit(u.Operand);
-            if (operand != u.Operand)
-            {
-                return Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method);
-            }
-
-            return u;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitBinary(BinaryExpression b)
-        {
-            Expression left = this.Visit(b.Left);
-            Expression right = this.Visit(b.Right);
-            Expression conversion = this.Visit(b.Conversion);
-            if (left != b.Left || right != b.Right || conversion != b.Conversion)
-            {
-                if (b.NodeType == ExpressionType.Coalesce && b.Conversion != null)
-                {
-                    return Expression.Coalesce(left, right, conversion as LambdaExpression);
-                }
-                else
-                {
-                    return Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method);
-                }
-            }
-
-            return b;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitTypeIs(TypeBinaryExpression b)
-        {
-            Expression expr = this.Visit(b.Expression);
-            if (expr != b.Expression)
-            {
-                return Expression.TypeIs(expr, b.TypeOperand);
-            }
-
-            return b;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitConstant(ConstantExpression c)
-        {
-            return c;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitConditional(ConditionalExpression c)
-        {
-            Expression test = this.Visit(c.Test);
-            Expression iftrue = this.Visit(c.IfTrue);
-            Expression iffalse = this.Visit(c.IfFalse);
-            if (test != c.Test || iftrue != c.IfTrue || iffalse != c.IfFalse)
-            {
-                return Expression.Condition(test, iftrue, iffalse);
-            }
-
-            return c;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitParameter(ParameterExpression p)
-        {
-            return p;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitMemberAccess(MemberExpression m)
-        {
-            Expression exp = this.Visit(m.Expression);
-            if (exp != m.Expression)
-            {
-                return Expression.MakeMemberAccess(exp, m.Member);
-            }
-
-            return m;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitMethodCall(MethodCallExpression m)
-        {
-            Expression obj = this.Visit(m.Object);
-            IEnumerable<Expression> args = this.VisitExpressionList(m.Arguments);
-            if (obj != m.Object || args != m.Arguments)
-            {
-                return Expression.Call(obj, m.Method, args);
-            }
-
-            return m;
-        }
-
-
-
-
-
-
-        internal virtual ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original)
-        {
-            List<Expression> list = null;
-            for (int i = 0, n = original.Count; i < n; i++)
-            {
-                Expression p = this.Visit(original[i]);
-                if (list != null)
-                {
-                    list.Add(p);
-                }
-                else if (p != original[i])
-                {
-                    list = new List<Expression>(n);
-                    for (int j = 0; j < i; j++)
-                    {
-                        list.Add(original[j]);
-                    }
-
-                    list.Add(p);
-                }
-            }
-
-            if (list != null)
-            {
-                return new ReadOnlyCollection<Expression>(list);
-            }
-
-            return original;
-        }
-
-
-
-
-
-
-        internal virtual MemberAssignment VisitMemberAssignment(MemberAssignment assignment)
-        {
-            Expression e = this.Visit(assignment.Expression);
-            if (e != assignment.Expression)
-            {
-                return Expression.Bind(assignment.Member, e);
-            }
-
-            return assignment;
-        }
-
-
-
-
-
-
-        internal virtual MemberMemberBinding VisitMemberMemberBinding(MemberMemberBinding binding)
-        {
-            IEnumerable<MemberBinding> bindings = this.VisitBindingList(binding.Bindings);
-            if (bindings != binding.Bindings)
-            {
-                return Expression.MemberBind(binding.Member, bindings);
-            }
-
-            return binding;
-        }
-
-
-
-
-
-
-        internal virtual MemberListBinding VisitMemberListBinding(MemberListBinding binding)
-        {
-            IEnumerable<ElementInit> initializers = this.VisitElementInitializerList(binding.Initializers);
-            if (initializers != binding.Initializers)
-            {
-                return Expression.ListBind(binding.Member, initializers);
-            }
-
-            return binding;
-        }
-
-
-
-
-
-
-        internal virtual IEnumerable<MemberBinding> VisitBindingList(ReadOnlyCollection<MemberBinding> original)
-        {
-            List<MemberBinding> list = null;
-            for (int i = 0, n = original.Count; i < n; i++)
-            {
-                MemberBinding b = this.VisitBinding(original[i]);
-                if (list != null)
-                {
-                    list.Add(b);
-                }
-                else if (b != original[i])
-                {
-                    list = new List<MemberBinding>(n);
-                    for (int j = 0; j < i; j++)
-                    {
-                        list.Add(original[j]);
-                    }
-
-                    list.Add(b);
-                }
-            }
-
-            if (list != null)
-            {
-                return list;
-            }
-
-            return original;
-        }
-
-
-
-
-
-
-        internal virtual IEnumerable<ElementInit> VisitElementInitializerList(ReadOnlyCollection<ElementInit> original)
-        {
-            List<ElementInit> list = null;
-            for (int i = 0, n = original.Count; i < n; i++)
-            {
-                ElementInit init = this.VisitElementInitializer(original[i]);
-                if (list != null)
-                {
-                    list.Add(init);
-                }
-                else if (init != original[i])
-                {
-                    list = new List<ElementInit>(n);
-                    for (int j = 0; j < i; j++)
-                    {
-                        list.Add(original[j]);
-                    }
-
-                    list.Add(init);
-                }
-            }
-
-            if (list != null)
-            {
-                return list;
-            }
-
-            return original;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitLambda(LambdaExpression lambda)
-        {
-            Expression body = this.Visit(lambda.Body);
-            if (body != lambda.Body)
-            {
-#if !ASTORIA_LIGHT
-                return Expression.Lambda(lambda.Type, body, lambda.Parameters);
-#else
-                ParameterExpression[] parameters = new ParameterExpression[lambda.Parameters.Count];
-                lambda.Parameters.CopyTo(parameters, 0);
-                return ExpressionHelpers.CreateLambda(lambda.Type, body, parameters);
-#endif
-            }
-
-            return lambda;
-        }
-
-
-
-
-
-
-        internal virtual NewExpression VisitNew(NewExpression nex)
-        {
-            IEnumerable<Expression> args = this.VisitExpressionList(nex.Arguments);
-            if (args != nex.Arguments)
-            {
-                if (nex.Members != null)
-                {
-                    return Expression.New(nex.Constructor, args, nex.Members);
-                }
-                else
-                {
-                    return Expression.New(nex.Constructor, args);
-                }
-            }
-
-            return nex;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitMemberInit(MemberInitExpression init)
-        {
-            NewExpression n = this.VisitNew(init.NewExpression);
-            IEnumerable<MemberBinding> bindings = this.VisitBindingList(init.Bindings);
-            if (n != init.NewExpression || bindings != init.Bindings)
-            {
-                return Expression.MemberInit(n, bindings);
-            }
-
-            return init;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitListInit(ListInitExpression init)
-        {
-            NewExpression n = this.VisitNew(init.NewExpression);
-            IEnumerable<ElementInit> initializers = this.VisitElementInitializerList(init.Initializers);
-            if (n != init.NewExpression || initializers != init.Initializers)
-            {
-                return Expression.ListInit(n, initializers);
-            }
-
-            return init;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitNewArray(NewArrayExpression na)
-        {
-            IEnumerable<Expression> exprs = this.VisitExpressionList(na.Expressions);
-            if (exprs != na.Expressions)
-            {
-                if (na.NodeType == ExpressionType.NewArrayInit)
-                {
-                    return Expression.NewArrayInit(na.Type.GetElementType(), exprs);
-                }
-                else
-                {
-                    return Expression.NewArrayBounds(na.Type.GetElementType(), exprs);
-                }
-            }
-
-            return na;
-        }
-
-
-
-
-
-
-        internal virtual Expression VisitInvocation(InvocationExpression iv)
-        {
-            IEnumerable<Expression> args = this.VisitExpressionList(iv.Arguments);
-            Expression expr = this.Visit(iv.Expression);
-            if (args != iv.Arguments || expr != iv.Expression)
-            {
-                return Expression.Invoke(expr, args);
-            }
-
-            return iv;
-        }
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.Linq.Expressions;
+#if ASTORIA_LIGHT
+    using System.Reflection;
+    using System.Security;
+    using System.Security.Permissions;
+
+    
+    
+    
+    
+    internal static class ExpressionHelpers
+    {
+        private static MethodInfo lambdaFunc;
+        internal static LambdaExpression CreateLambda(Expression body, params ParameterExpression[] parameters)
+        {
+            return CreateLambda(InferDelegateType(body, parameters), body, parameters);
+        }
+
+        
+        internal static LambdaExpression CreateLambda(Type delegateType, Expression body, params ParameterExpression[] parameters)
+        {
+            
+            
+
+            var args = new[] { Expression.Parameter(typeof(Expression), "body"), Expression.Parameter(typeof(ParameterExpression[]), "parameters") };
+
+            var lambdaFactory = Expression.Lambda<Func<Expression, ParameterExpression[], LambdaExpression>>(
+                Expression.Call(GetLambdaFactoryMethod(delegateType), args), args
+            );
+
+            return lambdaFactory.Compile().Invoke(body, parameters);
+        }
+
+        private static Type InferDelegateType(Expression body, params ParameterExpression[] parameters)
+        {
+            bool isVoid = body.Type == typeof(void);
+            int length = (parameters == null) ? 0 : parameters.Length;
+
+            var typeArgs = new Type[length + (isVoid ? 0 : 1)];
+            for (int i = 0; i < length; i++)
+            {
+                typeArgs[i] = parameters[i].Type;
+            }
+            if (isVoid)
+            {
+                return Expression.GetActionType(typeArgs);
+            }
+            else
+            {
+                typeArgs[length] = body.Type;
+                return Expression.GetFuncType(typeArgs);
+            }
+        }
+
+        private static MethodInfo GetLambdaFactoryMethod(Type delegateType)
+        {
+            
+            if (lambdaFunc == null)
+            {
+                lambdaFunc = new Func<Expression, ParameterExpression[], Expression<Action>>(Expression.Lambda<Action>).Method.GetGenericMethodDefinition();
+            }
+
+            
+            return lambdaFunc.MakeGenericMethod(delegateType);
+        }
+    }
+#endif
+
+
+
+
+    internal abstract class ExpressionVisitor
+    {
+
+
+
+
+
+        internal virtual Expression Visit(Expression exp)
+        {
+            if (exp == null)
+            {
+                return exp;
+            }
+
+            switch (exp.NodeType)
+            {
+                case ExpressionType.UnaryPlus:
+                case ExpressionType.Negate:
+                case ExpressionType.NegateChecked:
+                case ExpressionType.Not:
+                case ExpressionType.Convert:
+                case ExpressionType.ConvertChecked:
+                case ExpressionType.ArrayLength:
+                case ExpressionType.Quote:
+                case ExpressionType.TypeAs:
+                    return this.VisitUnary((UnaryExpression)exp);
+                case ExpressionType.Add:
+                case ExpressionType.AddChecked:
+                case ExpressionType.Subtract:
+                case ExpressionType.SubtractChecked:
+                case ExpressionType.Multiply:
+                case ExpressionType.MultiplyChecked:
+                case ExpressionType.Divide:
+                case ExpressionType.Modulo:
+
+                case ExpressionType.And:
+                case ExpressionType.AndAlso:
+                case ExpressionType.Or:
+                case ExpressionType.OrElse:
+                case ExpressionType.LessThan:
+                case ExpressionType.LessThanOrEqual:
+                case ExpressionType.GreaterThan:
+                case ExpressionType.GreaterThanOrEqual:
+                case ExpressionType.Equal:
+                case ExpressionType.NotEqual:
+                case ExpressionType.Coalesce:
+                case ExpressionType.ArrayIndex:
+                case ExpressionType.RightShift:
+                case ExpressionType.LeftShift:
+                case ExpressionType.ExclusiveOr:
+                    return this.VisitBinary((BinaryExpression)exp);
+                case ExpressionType.TypeIs:
+                    return this.VisitTypeIs((TypeBinaryExpression)exp);
+                case ExpressionType.Conditional:
+                    return this.VisitConditional((ConditionalExpression)exp);
+                case ExpressionType.Constant:
+                    return this.VisitConstant((ConstantExpression)exp);
+                case ExpressionType.Parameter:
+                    return this.VisitParameter((ParameterExpression)exp);
+                case ExpressionType.MemberAccess:
+                    return this.VisitMemberAccess((MemberExpression)exp);
+                case ExpressionType.Call:
+                    return this.VisitMethodCall((MethodCallExpression)exp);
+                case ExpressionType.Lambda:
+                    return this.VisitLambda((LambdaExpression)exp);
+                case ExpressionType.New:
+                    return this.VisitNew((NewExpression)exp);
+                case ExpressionType.NewArrayInit:
+                case ExpressionType.NewArrayBounds:
+                    return this.VisitNewArray((NewArrayExpression)exp);
+                case ExpressionType.Invoke:
+                    return this.VisitInvocation((InvocationExpression)exp);
+                case ExpressionType.MemberInit:
+                    return this.VisitMemberInit((MemberInitExpression)exp);
+                case ExpressionType.ListInit:
+                    return this.VisitListInit((ListInitExpression)exp);
+                default:
+                    throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(exp.NodeType.ToString()));
+            }
+        }
+
+
+        internal virtual MemberBinding VisitBinding(MemberBinding binding)
+        {
+            switch (binding.BindingType)
+            {
+                case MemberBindingType.Assignment:
+                    return this.VisitMemberAssignment((MemberAssignment)binding);
+                case MemberBindingType.MemberBinding:
+                    return this.VisitMemberMemberBinding((MemberMemberBinding)binding);
+                case MemberBindingType.ListBinding:
+                    return this.VisitMemberListBinding((MemberListBinding)binding);
+                default:
+                    throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(binding.BindingType.ToString()));
+            }
+        }
+
+
+
+
+
+
+        internal virtual ElementInit VisitElementInitializer(ElementInit initializer)
+        {
+            ReadOnlyCollection<Expression> arguments = this.VisitExpressionList(initializer.Arguments);
+            if (arguments != initializer.Arguments)
+            {
+                return Expression.ElementInit(initializer.AddMethod, arguments);
+            }
+
+            return initializer;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitUnary(UnaryExpression u)
+        {
+            Expression operand = this.Visit(u.Operand);
+            if (operand != u.Operand)
+            {
+                return Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method);
+            }
+
+            return u;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitBinary(BinaryExpression b)
+        {
+            Expression left = this.Visit(b.Left);
+            Expression right = this.Visit(b.Right);
+            Expression conversion = this.Visit(b.Conversion);
+            if (left != b.Left || right != b.Right || conversion != b.Conversion)
+            {
+                if (b.NodeType == ExpressionType.Coalesce && b.Conversion != null)
+                {
+                    return Expression.Coalesce(left, right, conversion as LambdaExpression);
+                }
+                else
+                {
+                    return Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method);
+                }
+            }
+
+            return b;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitTypeIs(TypeBinaryExpression b)
+        {
+            Expression expr = this.Visit(b.Expression);
+            if (expr != b.Expression)
+            {
+                return Expression.TypeIs(expr, b.TypeOperand);
+            }
+
+            return b;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitConstant(ConstantExpression c)
+        {
+            return c;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitConditional(ConditionalExpression c)
+        {
+            Expression test = this.Visit(c.Test);
+            Expression iftrue = this.Visit(c.IfTrue);
+            Expression iffalse = this.Visit(c.IfFalse);
+            if (test != c.Test || iftrue != c.IfTrue || iffalse != c.IfFalse)
+            {
+                return Expression.Condition(test, iftrue, iffalse);
+            }
+
+            return c;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitParameter(ParameterExpression p)
+        {
+            return p;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitMemberAccess(MemberExpression m)
+        {
+            Expression exp = this.Visit(m.Expression);
+            if (exp != m.Expression)
+            {
+                return Expression.MakeMemberAccess(exp, m.Member);
+            }
+
+            return m;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitMethodCall(MethodCallExpression m)
+        {
+            Expression obj = this.Visit(m.Object);
+            IEnumerable<Expression> args = this.VisitExpressionList(m.Arguments);
+            if (obj != m.Object || args != m.Arguments)
+            {
+                return Expression.Call(obj, m.Method, args);
+            }
+
+            return m;
+        }
+
+
+
+
+
+
+        internal virtual ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original)
+        {
+            List<Expression> list = null;
+            for (int i = 0, n = original.Count; i < n; i++)
+            {
+                Expression p = this.Visit(original[i]);
+                if (list != null)
+                {
+                    list.Add(p);
+                }
+                else if (p != original[i])
+                {
+                    list = new List<Expression>(n);
+                    for (int j = 0; j < i; j++)
+                    {
+                        list.Add(original[j]);
+                    }
+
+                    list.Add(p);
+                }
+            }
+
+            if (list != null)
+            {
+                return new ReadOnlyCollection<Expression>(list);
+            }
+
+            return original;
+        }
+
+
+
+
+
+
+        internal virtual MemberAssignment VisitMemberAssignment(MemberAssignment assignment)
+        {
+            Expression e = this.Visit(assignment.Expression);
+            if (e != assignment.Expression)
+            {
+                return Expression.Bind(assignment.Member, e);
+            }
+
+            return assignment;
+        }
+
+
+
+
+
+
+        internal virtual MemberMemberBinding VisitMemberMemberBinding(MemberMemberBinding binding)
+        {
+            IEnumerable<MemberBinding> bindings = this.VisitBindingList(binding.Bindings);
+            if (bindings != binding.Bindings)
+            {
+                return Expression.MemberBind(binding.Member, bindings);
+            }
+
+            return binding;
+        }
+
+
+
+
+
+
+        internal virtual MemberListBinding VisitMemberListBinding(MemberListBinding binding)
+        {
+            IEnumerable<ElementInit> initializers = this.VisitElementInitializerList(binding.Initializers);
+            if (initializers != binding.Initializers)
+            {
+                return Expression.ListBind(binding.Member, initializers);
+            }
+
+            return binding;
+        }
+
+
+
+
+
+
+        internal virtual IEnumerable<MemberBinding> VisitBindingList(ReadOnlyCollection<MemberBinding> original)
+        {
+            List<MemberBinding> list = null;
+            for (int i = 0, n = original.Count; i < n; i++)
+            {
+                MemberBinding b = this.VisitBinding(original[i]);
+                if (list != null)
+                {
+                    list.Add(b);
+                }
+                else if (b != original[i])
+                {
+                    list = new List<MemberBinding>(n);
+                    for (int j = 0; j < i; j++)
+                    {
+                        list.Add(original[j]);
+                    }
+
+                    list.Add(b);
+                }
+            }
+
+            if (list != null)
+            {
+                return list;
+            }
+
+            return original;
+        }
+
+
+
+
+
+
+        internal virtual IEnumerable<ElementInit> VisitElementInitializerList(ReadOnlyCollection<ElementInit> original)
+        {
+            List<ElementInit> list = null;
+            for (int i = 0, n = original.Count; i < n; i++)
+            {
+                ElementInit init = this.VisitElementInitializer(original[i]);
+                if (list != null)
+                {
+                    list.Add(init);
+                }
+                else if (init != original[i])
+                {
+                    list = new List<ElementInit>(n);
+                    for (int j = 0; j < i; j++)
+                    {
+                        list.Add(original[j]);
+                    }
+
+                    list.Add(init);
+                }
+            }
+
+            if (list != null)
+            {
+                return list;
+            }
+
+            return original;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitLambda(LambdaExpression lambda)
+        {
+            Expression body = this.Visit(lambda.Body);
+            if (body != lambda.Body)
+            {
+#if !ASTORIA_LIGHT
+                return Expression.Lambda(lambda.Type, body, lambda.Parameters);
+#else
+                ParameterExpression[] parameters = new ParameterExpression[lambda.Parameters.Count];
+                lambda.Parameters.CopyTo(parameters, 0);
+                return ExpressionHelpers.CreateLambda(lambda.Type, body, parameters);
+#endif
+            }
+
+            return lambda;
+        }
+
+
+
+
+
+
+        internal virtual NewExpression VisitNew(NewExpression nex)
+        {
+            IEnumerable<Expression> args = this.VisitExpressionList(nex.Arguments);
+            if (args != nex.Arguments)
+            {
+                if (nex.Members != null)
+                {
+                    return Expression.New(nex.Constructor, args, nex.Members);
+                }
+                else
+                {
+                    return Expression.New(nex.Constructor, args);
+                }
+            }
+
+            return nex;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitMemberInit(MemberInitExpression init)
+        {
+            NewExpression n = this.VisitNew(init.NewExpression);
+            IEnumerable<MemberBinding> bindings = this.VisitBindingList(init.Bindings);
+            if (n != init.NewExpression || bindings != init.Bindings)
+            {
+                return Expression.MemberInit(n, bindings);
+            }
+
+            return init;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitListInit(ListInitExpression init)
+        {
+            NewExpression n = this.VisitNew(init.NewExpression);
+            IEnumerable<ElementInit> initializers = this.VisitElementInitializerList(init.Initializers);
+            if (n != init.NewExpression || initializers != init.Initializers)
+            {
+                return Expression.ListInit(n, initializers);
+            }
+
+            return init;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitNewArray(NewArrayExpression na)
+        {
+            IEnumerable<Expression> exprs = this.VisitExpressionList(na.Expressions);
+            if (exprs != na.Expressions)
+            {
+                if (na.NodeType == ExpressionType.NewArrayInit)
+                {
+                    return Expression.NewArrayInit(na.Type.GetElementType(), exprs);
+                }
+                else
+                {
+                    return Expression.NewArrayBounds(na.Type.GetElementType(), exprs);
+                }
+            }
+
+            return na;
+        }
+
+
+
+
+
+
+        internal virtual Expression VisitInvocation(InvocationExpression iv)
+        {
+            IEnumerable<Expression> args = this.VisitExpressionList(iv.Arguments);
+            Expression expr = this.Visit(iv.Expression);
+            if (args != iv.Arguments || expr != iv.Expression)
+            {
+                return Expression.Invoke(expr, args);
+            }
+
+            return iv;
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ExpressionWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ExpressionWriter.cs
@@ -1,408 +1,408 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-    using System.Reflection;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    internal class ExpressionWriter : DataServiceExpressionVisitor
-    {
-        #region Private fields.
-
-        private readonly StringBuilder builder;
-
-        private readonly DataServiceContext context;
-
-        private readonly Stack<Expression> expressionStack;
-
-        private bool cantTranslateExpression;
-
-        private Expression parent;
-
-        #endregion Private fields.
-
-        private ExpressionWriter(DataServiceContext context)
-        {
-            Debug.Assert(context != null, "context != null");
-            this.context = context;
-            this.builder = new StringBuilder();
-            this.expressionStack = new Stack<Expression>();
-            this.expressionStack.Push(null);
-        }
-
-        internal static string ExpressionToString(DataServiceContext context, Expression e)
-        {
-            ExpressionWriter ew = new ExpressionWriter(context);
-            string serialized = ew.Translate(e);
-            if (ew.cantTranslateExpression)
-            {
-                throw new NotSupportedException(Strings.ALinq_CantTranslateExpression(e.ToString()));
-            }
-
-            return serialized;
-        }
-
-        internal override Expression Visit(Expression exp)
-        {
-            this.parent = this.expressionStack.Peek();
-            this.expressionStack.Push(exp);
-            Expression result = base.Visit(exp);
-            this.expressionStack.Pop();
-            return result;
-        }
-
-        internal override Expression VisitConditional(ConditionalExpression c)
-        {
-            this.cantTranslateExpression = true;
-            return c;
-        }
-
-        internal override Expression VisitLambda(LambdaExpression lambda)
-        {
-            this.cantTranslateExpression = true;
-            return lambda;
-        }
-
-        internal override NewExpression VisitNew(NewExpression nex)
-        {
-            this.cantTranslateExpression = true;
-            return nex;
-        }
-
-        internal override Expression VisitMemberInit(MemberInitExpression init)
-        {
-            this.cantTranslateExpression = true;
-            return init;
-        }
-
-        internal override Expression VisitListInit(ListInitExpression init)
-        {
-            this.cantTranslateExpression = true;
-            return init;
-        }
-
-        internal override Expression VisitNewArray(NewArrayExpression na)
-        {
-            this.cantTranslateExpression = true;
-            return na;
-        }
-
-        internal override Expression VisitInvocation(InvocationExpression iv)
-        {
-            this.cantTranslateExpression = true;
-            return iv;
-        }
-
-        internal override Expression VisitInputReferenceExpression(InputReferenceExpression ire)
-        {
-            Debug.Assert(ire != null, "ire != null");
-            if (this.parent == null || this.parent.NodeType != ExpressionType.MemberAccess)
-            {
-                string expressionText = (this.parent != null) ? this.parent.ToString() : ire.ToString();
-                throw new NotSupportedException(Strings.ALinq_CantTranslateExpression(expressionText));
-            }
-
-            return ire;
-        }
-
-        internal override Expression VisitMethodCall(MethodCallExpression m)
-        {
-            string methodName;
-            if (TypeSystem.TryGetQueryOptionMethod(m.Method, out methodName))
-            {
-                this.builder.Append(methodName);
-                this.builder.Append(UriHelper.LEFTPAREN);
-
-                if (methodName == "substringof")
-                {
-                    Debug.Assert(m.Method.Name == "Contains", "m.Method.Name == 'Contains'");
-                    Debug.Assert(m.Object != null, "m.Object != null");
-                    Debug.Assert(m.Arguments.Count == 1, "m.Arguments.Count == 1");
-                    this.Visit(m.Arguments[0]);
-                    this.builder.Append(UriHelper.COMMA);
-                    this.Visit(m.Object);
-                }
-                else
-                {
-                    if (m.Object != null)
-                    {
-                        this.Visit(m.Object);
-                    }
-
-                    if (m.Arguments.Count > 0)
-                    {
-                        if (m.Object != null)
-                        {
-                            this.builder.Append(UriHelper.COMMA);
-                        }
-
-                        for (int ii = 0; ii < m.Arguments.Count; ii++)
-                        {
-                            this.Visit(m.Arguments[ii]);
-                            if (ii < m.Arguments.Count - 1)
-                            {
-                                this.builder.Append(UriHelper.COMMA);
-                            }
-                        }
-                    }
-                }
-
-                this.builder.Append(UriHelper.RIGHTPAREN);
-            }
-            else
-            {
-                this.cantTranslateExpression = true;
-            }
-
-            return m;
-        }
-
-        internal override Expression VisitMemberAccess(MemberExpression m)
-        {
-            if (m.Member is FieldInfo)
-            {
-                throw new NotSupportedException(Strings.ALinq_CantReferToPublicField(m.Member.Name));
-            }
-
-            Expression e = this.Visit(m.Expression);
-
-            if (m.Member.Name == "Value" && m.Member.DeclaringType.IsGenericType
-                && m.Member.DeclaringType.GetGenericTypeDefinition() == typeof(Nullable<>))
-            {
-                return m;
-            }
-
-            if (!IsInputReference(e))
-            {
-                this.builder.Append(UriHelper.FORWARDSLASH);
-            }
-
-            this.builder.Append(m.Member.Name);
-
-            return m;
-        }
-
-        internal override Expression VisitConstant(ConstantExpression c)
-        {
-            string result = null;
-            if (c.Value == null)
-            {
-                this.builder.Append(UriHelper.NULL);
-                return c;
-            }
-            else if (!ClientConvert.TryKeyPrimitiveToString(c.Value, out result))
-            {
-                throw new InvalidOperationException(Strings.ALinq_CouldNotConvert(c.Value));
-            }
-
-            Debug.Assert(result != null, "result != null");
-            this.builder.Append(System.Uri.EscapeDataString(result));
-            return c;
-        }
-
-        internal override Expression VisitUnary(UnaryExpression u)
-        {
-            switch (u.NodeType)
-            {
-                case ExpressionType.Not:
-                    this.builder.Append(UriHelper.NOT);
-                    this.builder.Append(UriHelper.SPACE);
-                    this.VisitOperand(u.Operand);
-                    break;
-                case ExpressionType.Negate:
-                case ExpressionType.NegateChecked:
-                    this.builder.Append(UriHelper.SPACE);
-                    this.builder.Append(UriHelper.NEGATE);
-                    this.VisitOperand(u.Operand);
-                    break;
-                case ExpressionType.Convert:
-                case ExpressionType.ConvertChecked:
-                    if (u.Type != typeof(object))
-                    {
-                        this.builder.Append(UriHelper.CAST);
-                        this.builder.Append(UriHelper.LEFTPAREN);
-                        if (!IsInputReference(u.Operand))
-                        {
-                            this.Visit(u.Operand);
-                            this.builder.Append(UriHelper.COMMA);
-                        }
-
-                        this.builder.Append(UriHelper.QUOTE);
-                        this.builder.Append(this.TypeNameForUri(u.Type));
-                        this.builder.Append(UriHelper.QUOTE);
-                        this.builder.Append(UriHelper.RIGHTPAREN);
-                    }
-                    else
-                    {
-                        if (!IsInputReference(u.Operand))
-                        {
-                            this.Visit(u.Operand);
-                        }
-                    }
-
-                    break;
-                case ExpressionType.UnaryPlus:
-                    break;
-                default:
-                    this.cantTranslateExpression = true;
-                    break;
-            }
-
-            return u;
-        }
-
-        internal override Expression VisitBinary(BinaryExpression b)
-        {
-            this.VisitOperand(b.Left);
-            this.builder.Append(UriHelper.SPACE);
-            switch (b.NodeType)
-            {
-                case ExpressionType.AndAlso:
-                case ExpressionType.And:
-                    this.builder.Append(UriHelper.AND);
-                    break;
-                case ExpressionType.OrElse:
-                case ExpressionType.Or:
-                    this.builder.Append(UriHelper.OR);
-                    break;
-                case ExpressionType.Equal:
-                    this.builder.Append(UriHelper.EQ);
-                    break;
-                case ExpressionType.NotEqual:
-                    this.builder.Append(UriHelper.NE);
-                    break;
-                case ExpressionType.LessThan:
-                    this.builder.Append(UriHelper.LT);
-                    break;
-                case ExpressionType.LessThanOrEqual:
-                    this.builder.Append(UriHelper.LE);
-                    break;
-                case ExpressionType.GreaterThan:
-                    this.builder.Append(UriHelper.GT);
-                    break;
-                case ExpressionType.GreaterThanOrEqual:
-                    this.builder.Append(UriHelper.GE);
-                    break;
-                case ExpressionType.Add:
-                case ExpressionType.AddChecked:
-                    this.builder.Append(UriHelper.ADD);
-                    break;
-                case ExpressionType.Subtract:
-                case ExpressionType.SubtractChecked:
-                    this.builder.Append(UriHelper.SUB);
-                    break;
-                case ExpressionType.Multiply:
-                case ExpressionType.MultiplyChecked:
-                    this.builder.Append(UriHelper.MUL);
-                    break;
-                case ExpressionType.Divide:
-                    this.builder.Append(UriHelper.DIV);
-                    break;
-                case ExpressionType.Modulo:
-                    this.builder.Append(UriHelper.MOD);
-                    break;
-                case ExpressionType.ArrayIndex:
-                case ExpressionType.Power:
-                case ExpressionType.Coalesce:
-                case ExpressionType.ExclusiveOr:
-                case ExpressionType.LeftShift:
-                case ExpressionType.RightShift:
-                default:
-                    this.cantTranslateExpression = true;
-                    break;
-            }
-
-            this.builder.Append(UriHelper.SPACE);
-            this.VisitOperand(b.Right);
-            return b;
-        }
-
-        internal override Expression VisitTypeIs(TypeBinaryExpression b)
-        {
-            this.builder.Append(UriHelper.ISOF);
-            this.builder.Append(UriHelper.LEFTPAREN);
-
-            if (!IsInputReference(b.Expression))
-            {
-                this.Visit(b.Expression);
-                this.builder.Append(UriHelper.COMMA);
-                this.builder.Append(UriHelper.SPACE);
-            }
-
-            this.builder.Append(UriHelper.QUOTE);
-            this.builder.Append(this.TypeNameForUri(b.TypeOperand));
-            this.builder.Append(UriHelper.QUOTE);
-            this.builder.Append(UriHelper.RIGHTPAREN);
-
-            return b;
-        }
-
-        internal override Expression VisitParameter(ParameterExpression p)
-        {
-            return p;
-        }
-
-        private static bool IsInputReference(Expression exp)
-        {
-            return (exp is InputReferenceExpression || exp is ParameterExpression);
-        }
-
-        private string TypeNameForUri(Type type)
-        {
-            Debug.Assert(type != null, "type != null");
-            type = Nullable.GetUnderlyingType(type) ?? type;
-
-            if (ClientConvert.IsKnownType(type))
-            {
-                if (ClientConvert.IsSupportedPrimitiveTypeForUri(type))
-                {
-                    return ClientConvert.ToTypeName(type);
-                }
-
-                throw new NotSupportedException(Strings.ALinq_CantCastToUnsupportedPrimitive(type.Name));
-            }
-            else
-            {
-                return this.context.ResolveNameFromType(type) ?? type.FullName;
-            }
-        }
-
-        private void VisitOperand(Expression e)
-        {
-            if (e is BinaryExpression || e is UnaryExpression)
-            {
-                this.builder.Append(UriHelper.LEFTPAREN);
-                this.Visit(e);
-                this.builder.Append(UriHelper.RIGHTPAREN);
-            }
-            else
-            {
-                this.Visit(e);
-            }
-        }
-
-        private string Translate(Expression e)
-        {
-            this.Visit(e);
-            return this.builder.ToString();
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+    using System.Reflection;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    internal class ExpressionWriter : DataServiceExpressionVisitor
+    {
+        #region Private fields.
+
+        private readonly StringBuilder builder;
+
+        private readonly DataServiceContext context;
+
+        private readonly Stack<Expression> expressionStack;
+
+        private bool cantTranslateExpression;
+
+        private Expression parent;
+
+        #endregion Private fields.
+
+        private ExpressionWriter(DataServiceContext context)
+        {
+            Debug.Assert(context != null, "context != null");
+            this.context = context;
+            this.builder = new StringBuilder();
+            this.expressionStack = new Stack<Expression>();
+            this.expressionStack.Push(null);
+        }
+
+        internal static string ExpressionToString(DataServiceContext context, Expression e)
+        {
+            ExpressionWriter ew = new ExpressionWriter(context);
+            string serialized = ew.Translate(e);
+            if (ew.cantTranslateExpression)
+            {
+                throw new NotSupportedException(Strings.ALinq_CantTranslateExpression(e.ToString()));
+            }
+
+            return serialized;
+        }
+
+        internal override Expression Visit(Expression exp)
+        {
+            this.parent = this.expressionStack.Peek();
+            this.expressionStack.Push(exp);
+            Expression result = base.Visit(exp);
+            this.expressionStack.Pop();
+            return result;
+        }
+
+        internal override Expression VisitConditional(ConditionalExpression c)
+        {
+            this.cantTranslateExpression = true;
+            return c;
+        }
+
+        internal override Expression VisitLambda(LambdaExpression lambda)
+        {
+            this.cantTranslateExpression = true;
+            return lambda;
+        }
+
+        internal override NewExpression VisitNew(NewExpression nex)
+        {
+            this.cantTranslateExpression = true;
+            return nex;
+        }
+
+        internal override Expression VisitMemberInit(MemberInitExpression init)
+        {
+            this.cantTranslateExpression = true;
+            return init;
+        }
+
+        internal override Expression VisitListInit(ListInitExpression init)
+        {
+            this.cantTranslateExpression = true;
+            return init;
+        }
+
+        internal override Expression VisitNewArray(NewArrayExpression na)
+        {
+            this.cantTranslateExpression = true;
+            return na;
+        }
+
+        internal override Expression VisitInvocation(InvocationExpression iv)
+        {
+            this.cantTranslateExpression = true;
+            return iv;
+        }
+
+        internal override Expression VisitInputReferenceExpression(InputReferenceExpression ire)
+        {
+            Debug.Assert(ire != null, "ire != null");
+            if (this.parent == null || this.parent.NodeType != ExpressionType.MemberAccess)
+            {
+                string expressionText = (this.parent != null) ? this.parent.ToString() : ire.ToString();
+                throw new NotSupportedException(Strings.ALinq_CantTranslateExpression(expressionText));
+            }
+
+            return ire;
+        }
+
+        internal override Expression VisitMethodCall(MethodCallExpression m)
+        {
+            string methodName;
+            if (TypeSystem.TryGetQueryOptionMethod(m.Method, out methodName))
+            {
+                this.builder.Append(methodName);
+                this.builder.Append(UriHelper.LEFTPAREN);
+
+                if (methodName == "substringof")
+                {
+                    Debug.Assert(m.Method.Name == "Contains", "m.Method.Name == 'Contains'");
+                    Debug.Assert(m.Object != null, "m.Object != null");
+                    Debug.Assert(m.Arguments.Count == 1, "m.Arguments.Count == 1");
+                    this.Visit(m.Arguments[0]);
+                    this.builder.Append(UriHelper.COMMA);
+                    this.Visit(m.Object);
+                }
+                else
+                {
+                    if (m.Object != null)
+                    {
+                        this.Visit(m.Object);
+                    }
+
+                    if (m.Arguments.Count > 0)
+                    {
+                        if (m.Object != null)
+                        {
+                            this.builder.Append(UriHelper.COMMA);
+                        }
+
+                        for (int ii = 0; ii < m.Arguments.Count; ii++)
+                        {
+                            this.Visit(m.Arguments[ii]);
+                            if (ii < m.Arguments.Count - 1)
+                            {
+                                this.builder.Append(UriHelper.COMMA);
+                            }
+                        }
+                    }
+                }
+
+                this.builder.Append(UriHelper.RIGHTPAREN);
+            }
+            else
+            {
+                this.cantTranslateExpression = true;
+            }
+
+            return m;
+        }
+
+        internal override Expression VisitMemberAccess(MemberExpression m)
+        {
+            if (m.Member is FieldInfo)
+            {
+                throw new NotSupportedException(Strings.ALinq_CantReferToPublicField(m.Member.Name));
+            }
+
+            Expression e = this.Visit(m.Expression);
+
+            if (m.Member.Name == "Value" && m.Member.DeclaringType.IsGenericType
+                && m.Member.DeclaringType.GetGenericTypeDefinition() == typeof(Nullable<>))
+            {
+                return m;
+            }
+
+            if (!IsInputReference(e))
+            {
+                this.builder.Append(UriHelper.FORWARDSLASH);
+            }
+
+            this.builder.Append(m.Member.Name);
+
+            return m;
+        }
+
+        internal override Expression VisitConstant(ConstantExpression c)
+        {
+            string result = null;
+            if (c.Value == null)
+            {
+                this.builder.Append(UriHelper.NULL);
+                return c;
+            }
+            else if (!ClientConvert.TryKeyPrimitiveToString(c.Value, out result))
+            {
+                throw new InvalidOperationException(Strings.ALinq_CouldNotConvert(c.Value));
+            }
+
+            Debug.Assert(result != null, "result != null");
+            this.builder.Append(System.Uri.EscapeDataString(result));
+            return c;
+        }
+
+        internal override Expression VisitUnary(UnaryExpression u)
+        {
+            switch (u.NodeType)
+            {
+                case ExpressionType.Not:
+                    this.builder.Append(UriHelper.NOT);
+                    this.builder.Append(UriHelper.SPACE);
+                    this.VisitOperand(u.Operand);
+                    break;
+                case ExpressionType.Negate:
+                case ExpressionType.NegateChecked:
+                    this.builder.Append(UriHelper.SPACE);
+                    this.builder.Append(UriHelper.NEGATE);
+                    this.VisitOperand(u.Operand);
+                    break;
+                case ExpressionType.Convert:
+                case ExpressionType.ConvertChecked:
+                    if (u.Type != typeof(object))
+                    {
+                        this.builder.Append(UriHelper.CAST);
+                        this.builder.Append(UriHelper.LEFTPAREN);
+                        if (!IsInputReference(u.Operand))
+                        {
+                            this.Visit(u.Operand);
+                            this.builder.Append(UriHelper.COMMA);
+                        }
+
+                        this.builder.Append(UriHelper.QUOTE);
+                        this.builder.Append(this.TypeNameForUri(u.Type));
+                        this.builder.Append(UriHelper.QUOTE);
+                        this.builder.Append(UriHelper.RIGHTPAREN);
+                    }
+                    else
+                    {
+                        if (!IsInputReference(u.Operand))
+                        {
+                            this.Visit(u.Operand);
+                        }
+                    }
+
+                    break;
+                case ExpressionType.UnaryPlus:
+                    break;
+                default:
+                    this.cantTranslateExpression = true;
+                    break;
+            }
+
+            return u;
+        }
+
+        internal override Expression VisitBinary(BinaryExpression b)
+        {
+            this.VisitOperand(b.Left);
+            this.builder.Append(UriHelper.SPACE);
+            switch (b.NodeType)
+            {
+                case ExpressionType.AndAlso:
+                case ExpressionType.And:
+                    this.builder.Append(UriHelper.AND);
+                    break;
+                case ExpressionType.OrElse:
+                case ExpressionType.Or:
+                    this.builder.Append(UriHelper.OR);
+                    break;
+                case ExpressionType.Equal:
+                    this.builder.Append(UriHelper.EQ);
+                    break;
+                case ExpressionType.NotEqual:
+                    this.builder.Append(UriHelper.NE);
+                    break;
+                case ExpressionType.LessThan:
+                    this.builder.Append(UriHelper.LT);
+                    break;
+                case ExpressionType.LessThanOrEqual:
+                    this.builder.Append(UriHelper.LE);
+                    break;
+                case ExpressionType.GreaterThan:
+                    this.builder.Append(UriHelper.GT);
+                    break;
+                case ExpressionType.GreaterThanOrEqual:
+                    this.builder.Append(UriHelper.GE);
+                    break;
+                case ExpressionType.Add:
+                case ExpressionType.AddChecked:
+                    this.builder.Append(UriHelper.ADD);
+                    break;
+                case ExpressionType.Subtract:
+                case ExpressionType.SubtractChecked:
+                    this.builder.Append(UriHelper.SUB);
+                    break;
+                case ExpressionType.Multiply:
+                case ExpressionType.MultiplyChecked:
+                    this.builder.Append(UriHelper.MUL);
+                    break;
+                case ExpressionType.Divide:
+                    this.builder.Append(UriHelper.DIV);
+                    break;
+                case ExpressionType.Modulo:
+                    this.builder.Append(UriHelper.MOD);
+                    break;
+                case ExpressionType.ArrayIndex:
+                case ExpressionType.Power:
+                case ExpressionType.Coalesce:
+                case ExpressionType.ExclusiveOr:
+                case ExpressionType.LeftShift:
+                case ExpressionType.RightShift:
+                default:
+                    this.cantTranslateExpression = true;
+                    break;
+            }
+
+            this.builder.Append(UriHelper.SPACE);
+            this.VisitOperand(b.Right);
+            return b;
+        }
+
+        internal override Expression VisitTypeIs(TypeBinaryExpression b)
+        {
+            this.builder.Append(UriHelper.ISOF);
+            this.builder.Append(UriHelper.LEFTPAREN);
+
+            if (!IsInputReference(b.Expression))
+            {
+                this.Visit(b.Expression);
+                this.builder.Append(UriHelper.COMMA);
+                this.builder.Append(UriHelper.SPACE);
+            }
+
+            this.builder.Append(UriHelper.QUOTE);
+            this.builder.Append(this.TypeNameForUri(b.TypeOperand));
+            this.builder.Append(UriHelper.QUOTE);
+            this.builder.Append(UriHelper.RIGHTPAREN);
+
+            return b;
+        }
+
+        internal override Expression VisitParameter(ParameterExpression p)
+        {
+            return p;
+        }
+
+        private static bool IsInputReference(Expression exp)
+        {
+            return (exp is InputReferenceExpression || exp is ParameterExpression);
+        }
+
+        private string TypeNameForUri(Type type)
+        {
+            Debug.Assert(type != null, "type != null");
+            type = Nullable.GetUnderlyingType(type) ?? type;
+
+            if (ClientConvert.IsKnownType(type))
+            {
+                if (ClientConvert.IsSupportedPrimitiveTypeForUri(type))
+                {
+                    return ClientConvert.ToTypeName(type);
+                }
+
+                throw new NotSupportedException(Strings.ALinq_CantCastToUnsupportedPrimitive(type.Name));
+            }
+            else
+            {
+                return this.context.ResolveNameFromType(type) ?? type.FullName;
+            }
+        }
+
+        private void VisitOperand(Expression e)
+        {
+            if (e is BinaryExpression || e is UnaryExpression)
+            {
+                this.builder.Append(UriHelper.LEFTPAREN);
+                this.Visit(e);
+                this.builder.Append(UriHelper.RIGHTPAREN);
+            }
+            else
+            {
+                this.Visit(e);
+            }
+        }
+
+        private string Translate(Expression e)
+        {
+            this.Visit(e);
+            return this.builder.ToString();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/FilterQueryOptionExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/FilterQueryOptionExpression.cs
@@ -1,36 +1,36 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Linq.Expressions;
-
-    internal class FilterQueryOptionExpression : QueryOptionExpression
-    {
-        private Expression predicate;
-
-        internal FilterQueryOptionExpression(Type type, Expression predicate)
-            : base((ExpressionType)ResourceExpressionType.FilterQueryOption, type)
-        {
-            this.predicate = predicate;
-        }
-
-        internal Expression Predicate
-        {
-            get
-            {
-                return this.predicate;
-            }
-        }
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Linq.Expressions;
+
+    internal class FilterQueryOptionExpression : QueryOptionExpression
+    {
+        private Expression predicate;
+
+        internal FilterQueryOptionExpression(Type type, Expression predicate)
+            : base((ExpressionType)ResourceExpressionType.FilterQueryOption, type)
+        {
+            this.predicate = predicate;
+        }
+
+        internal Expression Predicate
+        {
+            get
+            {
+                return this.predicate;
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/InputBinder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/InputBinder.cs
@@ -1,169 +1,169 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    internal sealed class InputBinder : DataServiceExpressionVisitor
-    {
-        #region Private fields.
-
-        private readonly HashSet<ResourceExpression> referencedInputs = new HashSet<ResourceExpression>(EqualityComparer<ResourceExpression>.Default);
-
-        private readonly ResourceExpression input;
-
-        private readonly ResourceSetExpression inputSet;
-        
-        private readonly ParameterExpression inputParameter;
-
-        #endregion Private fields.
-
-        private InputBinder(ResourceExpression resource, ParameterExpression setReferenceParam)
-        {
-            this.input = resource;
-            this.inputSet = resource as ResourceSetExpression;
-            this.inputParameter = setReferenceParam;
-        }
-
-        internal static Expression Bind(Expression e, ResourceExpression currentInput, ParameterExpression inputParameter, List<ResourceExpression> referencedInputs)
-        {
-            Debug.Assert(e != null, "Expression cannot be null");
-            Debug.Assert(currentInput != null, "A current input resource set is required");
-            Debug.Assert(inputParameter != null, "The input lambda parameter is required");
-            Debug.Assert(referencedInputs != null, "The referenced inputs list is required");
-
-            InputBinder binder = new InputBinder(currentInput, inputParameter);
-            Expression result = binder.Visit(e);
-            referencedInputs.AddRange(binder.referencedInputs);
-            return result;
-        }
-                
-        internal override Expression VisitMemberAccess(MemberExpression m)
-        {
-            if (this.inputSet == null ||
-                !this.inputSet.HasTransparentScope)
-            {
-                return base.VisitMemberAccess(m);
-            }
-
-            ParameterExpression innerParamRef = null;
-            Stack<PropertyInfo> nestedAccesses = new Stack<PropertyInfo>();
-            MemberExpression memberRef = m;
-            while (memberRef != null &&
-                   memberRef.Member.MemberType == MemberTypes.Property &&
-                   memberRef.Expression != null)
-            {
-                nestedAccesses.Push((PropertyInfo)memberRef.Member);
-
-                if (memberRef.Expression.NodeType == ExpressionType.Parameter)
-                {
-                    innerParamRef = (ParameterExpression)memberRef.Expression;
-                }
-
-                memberRef = memberRef.Expression as MemberExpression;
-            }
-
-            if (innerParamRef != this.inputParameter || nestedAccesses.Count == 0)
-            {
-                return m;
-            }
-
-            ResourceExpression target = this.input;
-            ResourceSetExpression targetSet = this.inputSet;
-            bool transparentScopeTraversed = false;
-
-            while (nestedAccesses.Count > 0)
-            {
-                if (targetSet == null || !targetSet.HasTransparentScope)
-                {
-                    break;
-                }
-
-                PropertyInfo currentProp = nestedAccesses.Peek();
-
-                if (currentProp.Name.Equals(targetSet.TransparentScope.Accessor, StringComparison.Ordinal))
-                {
-                    target = targetSet;
-                    nestedAccesses.Pop();
-                    transparentScopeTraversed = true;
-                    continue;
-                }
-
-                Expression source;
-                if (!targetSet.TransparentScope.SourceAccessors.TryGetValue(currentProp.Name, out source))
-                {
-                    break;
-                }
-
-                transparentScopeTraversed = true;
-                nestedAccesses.Pop();
-                Debug.Assert(source != null, "source != null -- otherwise ResourceBinder created an accessor to nowhere");
-                InputReferenceExpression sourceReference = source as InputReferenceExpression;
-                if (sourceReference == null)
-                {
-                    targetSet = source as ResourceSetExpression;
-                    if (targetSet == null || !targetSet.HasTransparentScope)
-                    {
-                        target = (ResourceExpression)source;
-                    }
-                }
-                else
-                {
-                    targetSet = sourceReference.Target as ResourceSetExpression;
-                    target = targetSet;
-                }
-            }
-
-            if (!transparentScopeTraversed)
-            {
-                return m;
-            }
-
-            Expression result = this.CreateReference(target);
-            while (nestedAccesses.Count > 0)
-            {
-                result = Expression.Property(result, nestedAccesses.Pop());
-            }
-
-            return result;
-        }
-
-        internal override Expression VisitParameter(ParameterExpression p)
-        {
-            if ((this.inputSet == null || !this.inputSet.HasTransparentScope) &&
-               p == this.inputParameter)
-            {
-                return this.CreateReference(this.input);
-            }
-            else
-            {
-                return base.VisitParameter(p);
-            }
-        }
-
-        private Expression CreateReference(ResourceExpression resource)
-        {
-            this.referencedInputs.Add(resource);
-            return resource.CreateReference();
-        }
-    }
-}
-
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    internal sealed class InputBinder : DataServiceExpressionVisitor
+    {
+        #region Private fields.
+
+        private readonly HashSet<ResourceExpression> referencedInputs = new HashSet<ResourceExpression>(EqualityComparer<ResourceExpression>.Default);
+
+        private readonly ResourceExpression input;
+
+        private readonly ResourceSetExpression inputSet;
+        
+        private readonly ParameterExpression inputParameter;
+
+        #endregion Private fields.
+
+        private InputBinder(ResourceExpression resource, ParameterExpression setReferenceParam)
+        {
+            this.input = resource;
+            this.inputSet = resource as ResourceSetExpression;
+            this.inputParameter = setReferenceParam;
+        }
+
+        internal static Expression Bind(Expression e, ResourceExpression currentInput, ParameterExpression inputParameter, List<ResourceExpression> referencedInputs)
+        {
+            Debug.Assert(e != null, "Expression cannot be null");
+            Debug.Assert(currentInput != null, "A current input resource set is required");
+            Debug.Assert(inputParameter != null, "The input lambda parameter is required");
+            Debug.Assert(referencedInputs != null, "The referenced inputs list is required");
+
+            InputBinder binder = new InputBinder(currentInput, inputParameter);
+            Expression result = binder.Visit(e);
+            referencedInputs.AddRange(binder.referencedInputs);
+            return result;
+        }
+                
+        internal override Expression VisitMemberAccess(MemberExpression m)
+        {
+            if (this.inputSet == null ||
+                !this.inputSet.HasTransparentScope)
+            {
+                return base.VisitMemberAccess(m);
+            }
+
+            ParameterExpression innerParamRef = null;
+            Stack<PropertyInfo> nestedAccesses = new Stack<PropertyInfo>();
+            MemberExpression memberRef = m;
+            while (memberRef != null &&
+                   memberRef.Member.MemberType == MemberTypes.Property &&
+                   memberRef.Expression != null)
+            {
+                nestedAccesses.Push((PropertyInfo)memberRef.Member);
+
+                if (memberRef.Expression.NodeType == ExpressionType.Parameter)
+                {
+                    innerParamRef = (ParameterExpression)memberRef.Expression;
+                }
+
+                memberRef = memberRef.Expression as MemberExpression;
+            }
+
+            if (innerParamRef != this.inputParameter || nestedAccesses.Count == 0)
+            {
+                return m;
+            }
+
+            ResourceExpression target = this.input;
+            ResourceSetExpression targetSet = this.inputSet;
+            bool transparentScopeTraversed = false;
+
+            while (nestedAccesses.Count > 0)
+            {
+                if (targetSet == null || !targetSet.HasTransparentScope)
+                {
+                    break;
+                }
+
+                PropertyInfo currentProp = nestedAccesses.Peek();
+
+                if (currentProp.Name.Equals(targetSet.TransparentScope.Accessor, StringComparison.Ordinal))
+                {
+                    target = targetSet;
+                    nestedAccesses.Pop();
+                    transparentScopeTraversed = true;
+                    continue;
+                }
+
+                Expression source;
+                if (!targetSet.TransparentScope.SourceAccessors.TryGetValue(currentProp.Name, out source))
+                {
+                    break;
+                }
+
+                transparentScopeTraversed = true;
+                nestedAccesses.Pop();
+                Debug.Assert(source != null, "source != null -- otherwise ResourceBinder created an accessor to nowhere");
+                InputReferenceExpression sourceReference = source as InputReferenceExpression;
+                if (sourceReference == null)
+                {
+                    targetSet = source as ResourceSetExpression;
+                    if (targetSet == null || !targetSet.HasTransparentScope)
+                    {
+                        target = (ResourceExpression)source;
+                    }
+                }
+                else
+                {
+                    targetSet = sourceReference.Target as ResourceSetExpression;
+                    target = targetSet;
+                }
+            }
+
+            if (!transparentScopeTraversed)
+            {
+                return m;
+            }
+
+            Expression result = this.CreateReference(target);
+            while (nestedAccesses.Count > 0)
+            {
+                result = Expression.Property(result, nestedAccesses.Pop());
+            }
+
+            return result;
+        }
+
+        internal override Expression VisitParameter(ParameterExpression p)
+        {
+            if ((this.inputSet == null || !this.inputSet.HasTransparentScope) &&
+               p == this.inputParameter)
+            {
+                return this.CreateReference(this.input);
+            }
+            else
+            {
+                return base.VisitParameter(p);
+            }
+        }
+
+        private Expression CreateReference(ResourceExpression resource)
+        {
+            this.referencedInputs.Add(resource);
+            return resource.CreateReference();
+        }
+    }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/InputReferenceExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/InputReferenceExpression.cs
@@ -1,44 +1,44 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-        
-    [DebuggerDisplay("InputReferenceExpression -> {Type}")]
-    internal sealed class InputReferenceExpression : Expression
-    {
-        private ResourceExpression target;
-
-        internal InputReferenceExpression(ResourceExpression target)
-            : base((ExpressionType)ResourceExpressionType.InputReference, target.ResourceType)
-        {
-            Debug.Assert(target != null, "Target resource set cannot be null");
-            this.target = target;
-        }
-
-        internal ResourceExpression Target
-        { 
-            get { return this.target; }
-        }
-
-        internal void OverrideTarget(ResourceSetExpression newTarget)
-        {
-            Debug.Assert(newTarget != null, "Resource set cannot be null");
-            Debug.Assert(newTarget.ResourceType.Equals(this.Type), "Cannot reference a resource set with a different resource type");
-
-            this.target = newTarget;
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+        
+    [DebuggerDisplay("InputReferenceExpression -> {Type}")]
+    internal sealed class InputReferenceExpression : Expression
+    {
+        private ResourceExpression target;
+
+        internal InputReferenceExpression(ResourceExpression target)
+            : base((ExpressionType)ResourceExpressionType.InputReference, target.ResourceType)
+        {
+            Debug.Assert(target != null, "Target resource set cannot be null");
+            this.target = target;
+        }
+
+        internal ResourceExpression Target
+        { 
+            get { return this.target; }
+        }
+
+        internal void OverrideTarget(ResourceSetExpression newTarget)
+        {
+            Debug.Assert(newTarget != null, "Resource set cannot be null");
+            Debug.Assert(newTarget.ResourceType.Equals(this.Type), "Cannot reference a resource set with a different resource type");
+
+            this.target = newTarget;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/NavigationPropertySingletonExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/NavigationPropertySingletonExpression.cs
@@ -1,88 +1,88 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-
-namespace System.Data.Services.Client
-{
-    #region Private fields.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-
-    #endregion Private fields.
-
-    internal class NavigationPropertySingletonExpression : ResourceExpression
-    {
-        #region Private fields.
-
-        private readonly Expression memberExpression;
-
-        private readonly Type resourceType;
-
-        #endregion Private fields.
-
-        internal NavigationPropertySingletonExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection)
-            : base(source, (ExpressionType)ResourceExpressionType.ResourceNavigationPropertySingleton, type, expandPaths, countOption, customQueryOptions, projection)
-        {
-            Debug.Assert(memberExpression != null, "memberExpression != null");
-            Debug.Assert(resourceType != null, "resourceType != null");
-
-            this.memberExpression = memberExpression;
-            this.resourceType = resourceType;
-        }
-
-        internal MemberExpression MemberExpression
-        {
-            get
-            {
-                return (MemberExpression)this.memberExpression;
-            }
-        }
-
-        internal override Type ResourceType
-        {
-            get { return this.resourceType; }
-        }
-
-        internal override bool IsSingleton
-        {
-            get { return true; }
-        }
-
-        internal override bool HasQueryOptions
-        {
-            get
-            {
-                return this.ExpandPaths.Count > 0 ||
-                    this.CountOption == CountOption.InlineAll || 
-                    this.CustomQueryOptions.Count > 0  || 
-                    this.Projection != null;
-            }
-        }
-
-        internal override ResourceExpression CreateCloneWithNewType(Type type)
-        {
-            return new NavigationPropertySingletonExpression(
-                type, 
-                this.source, 
-                this.MemberExpression,
-                TypeSystem.GetElementType(type),
-                this.ExpandPaths.ToList(),
-                this.CountOption,
-                this.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value),
-                this.Projection);
-        }
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+
+namespace System.Data.Services.Client
+{
+    #region Private fields.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+
+    #endregion Private fields.
+
+    internal class NavigationPropertySingletonExpression : ResourceExpression
+    {
+        #region Private fields.
+
+        private readonly Expression memberExpression;
+
+        private readonly Type resourceType;
+
+        #endregion Private fields.
+
+        internal NavigationPropertySingletonExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection)
+            : base(source, (ExpressionType)ResourceExpressionType.ResourceNavigationPropertySingleton, type, expandPaths, countOption, customQueryOptions, projection)
+        {
+            Debug.Assert(memberExpression != null, "memberExpression != null");
+            Debug.Assert(resourceType != null, "resourceType != null");
+
+            this.memberExpression = memberExpression;
+            this.resourceType = resourceType;
+        }
+
+        internal MemberExpression MemberExpression
+        {
+            get
+            {
+                return (MemberExpression)this.memberExpression;
+            }
+        }
+
+        internal override Type ResourceType
+        {
+            get { return this.resourceType; }
+        }
+
+        internal override bool IsSingleton
+        {
+            get { return true; }
+        }
+
+        internal override bool HasQueryOptions
+        {
+            get
+            {
+                return this.ExpandPaths.Count > 0 ||
+                    this.CountOption == CountOption.InlineAll || 
+                    this.CustomQueryOptions.Count > 0  || 
+                    this.Projection != null;
+            }
+        }
+
+        internal override ResourceExpression CreateCloneWithNewType(Type type)
+        {
+            return new NavigationPropertySingletonExpression(
+                type, 
+                this.source, 
+                this.MemberExpression,
+                TypeSystem.GetElementType(type),
+                this.ExpandPaths.ToList(),
+                this.CountOption,
+                this.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value),
+                this.Projection);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/OrderByQueryOptionExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/OrderByQueryOptionExpression.cs
@@ -1,49 +1,49 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Linq.Expressions;
-
-    internal class OrderByQueryOptionExpression : QueryOptionExpression
-    {
-        private List<Selector> selectors;
-
-        internal OrderByQueryOptionExpression(Type type, List<Selector> selectors)
-            : base((ExpressionType)ResourceExpressionType.OrderByQueryOption, type)
-        {
-            this.selectors = selectors; 
-        }
-
-        internal List<Selector> Selectors
-        {
-            get
-            {
-                return this.selectors;
-            }
-        }
-
-        internal struct Selector
-        {
-            internal readonly Expression Expression;
-
-            internal readonly bool Descending;
-
-            internal Selector(Expression e, bool descending)
-            {
-                this.Expression = e;
-                this.Descending = descending;
-            }
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Linq.Expressions;
+
+    internal class OrderByQueryOptionExpression : QueryOptionExpression
+    {
+        private List<Selector> selectors;
+
+        internal OrderByQueryOptionExpression(Type type, List<Selector> selectors)
+            : base((ExpressionType)ResourceExpressionType.OrderByQueryOption, type)
+        {
+            this.selectors = selectors; 
+        }
+
+        internal List<Selector> Selectors
+        {
+            get
+            {
+                return this.selectors;
+            }
+        }
+
+        internal struct Selector
+        {
+            internal readonly Expression Expression;
+
+            internal readonly bool Descending;
+
+            internal Selector(Expression e, bool descending)
+            {
+                this.Expression = e;
+                this.Descending = descending;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ParameterReplacerVisitor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ParameterReplacerVisitor.cs
@@ -1,49 +1,49 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-    internal class ParameterReplacerVisitor : ExpressionVisitor
-    {
-        private Expression newExpression;
-
-        private ParameterExpression oldParameter;
-
-        private ParameterReplacerVisitor(ParameterExpression oldParameter, Expression newExpression)
-        {
-            this.oldParameter = oldParameter;
-            this.newExpression = newExpression;
-        }
-
-        internal static Expression Replace(Expression expression, ParameterExpression oldParameter, Expression newExpression)
-        {
-            Debug.Assert(expression != null, "expression != null");
-            Debug.Assert(oldParameter != null, "oldParameter != null");
-            Debug.Assert(newExpression != null, "newExpression != null");
-            return new ParameterReplacerVisitor(oldParameter, newExpression).Visit(expression);
-        }
-
-        internal override Expression VisitParameter(ParameterExpression p)
-        {
-            if (p == this.oldParameter)
-            {
-                return this.newExpression;
-            }
-            else
-            {
-                return p;
-            }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+    internal class ParameterReplacerVisitor : ExpressionVisitor
+    {
+        private Expression newExpression;
+
+        private ParameterExpression oldParameter;
+
+        private ParameterReplacerVisitor(ParameterExpression oldParameter, Expression newExpression)
+        {
+            this.oldParameter = oldParameter;
+            this.newExpression = newExpression;
+        }
+
+        internal static Expression Replace(Expression expression, ParameterExpression oldParameter, Expression newExpression)
+        {
+            Debug.Assert(expression != null, "expression != null");
+            Debug.Assert(oldParameter != null, "oldParameter != null");
+            Debug.Assert(newExpression != null, "newExpression != null");
+            return new ParameterReplacerVisitor(oldParameter, newExpression).Visit(expression);
+        }
+
+        internal override Expression VisitParameter(ParameterExpression p)
+        {
+            if (p == this.oldParameter)
+            {
+                return this.newExpression;
+            }
+            else
+            {
+                return p;
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/PathBox.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/PathBox.cs
@@ -1,155 +1,155 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Text;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Reflection;
-    using System.Linq;
-    using System.Linq.Expressions;
-    
-    #endregion Namespaces.
-
-    internal class PathBox
-    {
-        #region Private fields.
-
-        private const char EntireEntityMarker = UriHelper.ASTERISK;
-
-        private readonly List<StringBuilder> projectionPaths = new List<StringBuilder>();
-
-        private readonly List<StringBuilder> expandPaths = new List<StringBuilder>();
-
-        private readonly Stack<ParameterExpression> parameterExpressions = new Stack<ParameterExpression>();
-
-        private readonly Dictionary<ParameterExpression, string> basePaths = new Dictionary<ParameterExpression, string>(ReferenceEqualityComparer<ParameterExpression>.Instance);
-
-        #endregion Private fields.
-
-        internal PathBox()
-        {
-            projectionPaths.Add(new StringBuilder());
-        }
-
-        internal IEnumerable<string> ProjectionPaths
-        {
-            get
-            {
-                return projectionPaths.Where(s => s.Length > 0).Select(s => s.ToString()).Distinct();
-            }
-        }
-
-        internal IEnumerable<string> ExpandPaths
-        {
-            get
-            {
-                return expandPaths.Where(s => s.Length > 0).Select(s => s.ToString()).Distinct();
-            }
-        }
-
-        internal void PushParamExpression(ParameterExpression pe)
-        {
-            StringBuilder basePath = projectionPaths.Last();
-            basePaths.Add(pe, basePath.ToString());
-            projectionPaths.Remove(basePath);
-            parameterExpressions.Push(pe);
-        }
-
-        internal void PopParamExpression()
-        {
-            parameterExpressions.Pop();
-        }
-
-        internal ParameterExpression ParamExpressionInScope
-        {
-            get
-            {
-                Debug.Assert(parameterExpressions.Count > 0);
-                return parameterExpressions.Peek();
-            }
-        }
-
-        internal void StartNewPath()
-        {
-            Debug.Assert(this.ParamExpressionInScope != null, "this.ParamExpressionInScope != null -- should not be starting new path with no lambda parameter in scope.");
-
-            StringBuilder sb = new StringBuilder(basePaths[this.ParamExpressionInScope]);
-            RemoveEntireEntityMarkerIfPresent(sb);
-            expandPaths.Add(new StringBuilder(sb.ToString()));
-            AddEntireEntityMarker(sb);
-            projectionPaths.Add(sb);
-        }
-
-        internal void AppendToPath(PropertyInfo pi)
-        {
-            Debug.Assert(pi != null, "pi != null");
-
-            StringBuilder sb;
-            Type t = TypeSystem.GetElementType(pi.PropertyType);
-
-            if (ClientType.CheckElementTypeIsEntity(t))
-            {
-                sb = expandPaths.Last();
-                Debug.Assert(sb != null);                if (sb.Length > 0)
-                {
-                    sb.Append(UriHelper.FORWARDSLASH);
-                }
-
-                sb.Append(pi.Name);
-            }
-
-            sb = projectionPaths.Last();
-            Debug.Assert(sb != null, "sb != null -- we are always building paths in the context of a parameter");
-
-            RemoveEntireEntityMarkerIfPresent(sb);
-
-            if (sb.Length > 0)
-            {
-                sb.Append(UriHelper.FORWARDSLASH);
-            }
-
-            sb.Append(pi.Name);
-
-            if (ClientType.CheckElementTypeIsEntity(t))
-            {
-                AddEntireEntityMarker(sb);
-            }
-        }
-
-        private static void RemoveEntireEntityMarkerIfPresent(StringBuilder sb)
-        {
-            if (sb.Length > 0 && sb[sb.Length - 1] == EntireEntityMarker)
-            {
-                sb.Remove(sb.Length - 1, 1);
-            }
-
-            if (sb.Length > 0 && sb[sb.Length - 1] == UriHelper.FORWARDSLASH)
-            {
-                sb.Remove(sb.Length - 1, 1);
-            }
-        }
-
-        private static void AddEntireEntityMarker(StringBuilder sb)
-        {
-            if (sb.Length > 0)
-            {
-                sb.Append(UriHelper.FORWARDSLASH);
-            }
-
-            sb.Append(EntireEntityMarker);
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Text;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Reflection;
+    using System.Linq;
+    using System.Linq.Expressions;
+    
+    #endregion Namespaces.
+
+    internal class PathBox
+    {
+        #region Private fields.
+
+        private const char EntireEntityMarker = UriHelper.ASTERISK;
+
+        private readonly List<StringBuilder> projectionPaths = new List<StringBuilder>();
+
+        private readonly List<StringBuilder> expandPaths = new List<StringBuilder>();
+
+        private readonly Stack<ParameterExpression> parameterExpressions = new Stack<ParameterExpression>();
+
+        private readonly Dictionary<ParameterExpression, string> basePaths = new Dictionary<ParameterExpression, string>(ReferenceEqualityComparer<ParameterExpression>.Instance);
+
+        #endregion Private fields.
+
+        internal PathBox()
+        {
+            projectionPaths.Add(new StringBuilder());
+        }
+
+        internal IEnumerable<string> ProjectionPaths
+        {
+            get
+            {
+                return projectionPaths.Where(s => s.Length > 0).Select(s => s.ToString()).Distinct();
+            }
+        }
+
+        internal IEnumerable<string> ExpandPaths
+        {
+            get
+            {
+                return expandPaths.Where(s => s.Length > 0).Select(s => s.ToString()).Distinct();
+            }
+        }
+
+        internal void PushParamExpression(ParameterExpression pe)
+        {
+            StringBuilder basePath = projectionPaths.Last();
+            basePaths.Add(pe, basePath.ToString());
+            projectionPaths.Remove(basePath);
+            parameterExpressions.Push(pe);
+        }
+
+        internal void PopParamExpression()
+        {
+            parameterExpressions.Pop();
+        }
+
+        internal ParameterExpression ParamExpressionInScope
+        {
+            get
+            {
+                Debug.Assert(parameterExpressions.Count > 0);
+                return parameterExpressions.Peek();
+            }
+        }
+
+        internal void StartNewPath()
+        {
+            Debug.Assert(this.ParamExpressionInScope != null, "this.ParamExpressionInScope != null -- should not be starting new path with no lambda parameter in scope.");
+
+            StringBuilder sb = new StringBuilder(basePaths[this.ParamExpressionInScope]);
+            RemoveEntireEntityMarkerIfPresent(sb);
+            expandPaths.Add(new StringBuilder(sb.ToString()));
+            AddEntireEntityMarker(sb);
+            projectionPaths.Add(sb);
+        }
+
+        internal void AppendToPath(PropertyInfo pi)
+        {
+            Debug.Assert(pi != null, "pi != null");
+
+            StringBuilder sb;
+            Type t = TypeSystem.GetElementType(pi.PropertyType);
+
+            if (ClientType.CheckElementTypeIsEntity(t))
+            {
+                sb = expandPaths.Last();
+                Debug.Assert(sb != null);                if (sb.Length > 0)
+                {
+                    sb.Append(UriHelper.FORWARDSLASH);
+                }
+
+                sb.Append(pi.Name);
+            }
+
+            sb = projectionPaths.Last();
+            Debug.Assert(sb != null, "sb != null -- we are always building paths in the context of a parameter");
+
+            RemoveEntireEntityMarkerIfPresent(sb);
+
+            if (sb.Length > 0)
+            {
+                sb.Append(UriHelper.FORWARDSLASH);
+            }
+
+            sb.Append(pi.Name);
+
+            if (ClientType.CheckElementTypeIsEntity(t))
+            {
+                AddEntireEntityMarker(sb);
+            }
+        }
+
+        private static void RemoveEntireEntityMarkerIfPresent(StringBuilder sb)
+        {
+            if (sb.Length > 0 && sb[sb.Length - 1] == EntireEntityMarker)
+            {
+                sb.Remove(sb.Length - 1, 1);
+            }
+
+            if (sb.Length > 0 && sb[sb.Length - 1] == UriHelper.FORWARDSLASH)
+            {
+                sb.Remove(sb.Length - 1, 1);
+            }
+        }
+
+        private static void AddEntireEntityMarker(StringBuilder sb)
+        {
+            if (sb.Length > 0)
+            {
+                sb.Append(UriHelper.FORWARDSLASH);
+            }
+
+            sb.Append(EntireEntityMarker);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ProjectionAnalyzer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ProjectionAnalyzer.cs
@@ -1,615 +1,615 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.ObjectModel;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Collections;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    internal static class ProjectionAnalyzer
-    {
-        #region Internal methods.
-
-        internal static bool Analyze(LambdaExpression le, ResourceExpression re, bool matchMembers)
-        {
-            Debug.Assert(le != null, "le != null");
-
-            if (le.Body.NodeType == ExpressionType.Constant)
-            {
-                if (ClientType.CheckElementTypeIsEntity(le.Body.Type))
-                {
-                    throw new NotSupportedException(Strings.ALinq_CannotCreateConstantEntity);
-                }
-
-                re.Projection = new ProjectionQueryOptionExpression(le.Body.Type, le, new List<string>());
-                return true;
-            }
-
-            if (le.Body.NodeType == ExpressionType.MemberInit || le.Body.NodeType == ExpressionType.New)
-            {
-                AnalyzeResourceExpression(le, re);
-                return true;
-            }
-
-            if (matchMembers)
-            {
-                Expression withoutConverts = SkipConverts(le.Body);
-                if (withoutConverts.NodeType == ExpressionType.MemberAccess)
-                {
-                    AnalyzeResourceExpression(le, re);
-                    return true;
-                }
-            }
-
-            return false;
-        }
-
-        internal static void Analyze(LambdaExpression e, PathBox pb)
-        {
-            bool knownEntityType = ClientType.CheckElementTypeIsEntity(e.Body.Type);
-            pb.PushParamExpression(e.Parameters.Last());
-
-            if (!knownEntityType)
-            {
-                NonEntityProjectionAnalyzer.Analyze(e.Body, pb);
-            }
-            else
-            {
-                switch (e.Body.NodeType)
-                {
-                    case ExpressionType.MemberInit:
-                        EntityProjectionAnalyzer.Analyze((MemberInitExpression)e.Body, pb);
-                        break;
-                    case ExpressionType.New:
-                        throw new NotSupportedException(Strings.ALinq_CannotConstructKnownEntityTypes);
-                    case ExpressionType.Constant:
-                        throw new NotSupportedException(Strings.ALinq_CannotCreateConstantEntity);
-                    default:
-                        NonEntityProjectionAnalyzer.Analyze(e.Body, pb);
-                        break;
-                }
-            }
-
-            pb.PopParamExpression();
-        }
-
-        internal static bool IsMethodCallAllowedEntitySequence(MethodCallExpression call)
-        {
-            Debug.Assert(call != null, "call != null");
-            return
-                ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.ToList) ||
-                ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Select);
-        }
-
-        internal static void CheckChainedSequence(MethodCallExpression call, Type type)
-        {
-            if (ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Select))
-            {
-                MethodCallExpression insideCall = ResourceBinder.StripTo<MethodCallExpression>(call.Arguments[0]);
-                if (insideCall != null && ReflectionUtil.IsSequenceMethod(insideCall.Method, SequenceMethod.Select))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(type, call.ToString()));
-                }
-            }
-        }
-
-        internal static bool IsCollectionProducingExpression(Expression e)
-        {
-            if (TypeSystem.FindIEnumerable(e.Type) != null)
-            {
-                Type elementType = TypeSystem.GetElementType(e.Type);
-                Debug.Assert(elementType != null, "elementType == null");
-                Type dscType = WebUtil.GetDataServiceCollectionOfT(elementType);
-                if (typeof(List<>).MakeGenericType(elementType).IsAssignableFrom(e.Type) ||
-                    (dscType != null && dscType.IsAssignableFrom(e.Type)))
-                {
-                    return true;
-                }
-            }
-
-            return false;
-        }
-
-        internal static bool IsDisallowedExpressionForMethodCall(Expression e)
-        {
-            MemberExpression me = e as MemberExpression;
-            if (me != null && ClientType.Create(me.Expression.Type, false).IsEntityType)
-            {
-                return false;
-            }
-
-            return IsCollectionProducingExpression(e);
-        }
-
-
-        #endregion Internal methods.
-
-        #region Private methods.
-
-        private static void Analyze(MemberInitExpression mie, PathBox pb)
-        {
-            Debug.Assert(mie != null, "mie != null");
-            Debug.Assert(pb != null, "pb != null");
-
-            bool knownEntityType = ClientType.CheckElementTypeIsEntity(mie.Type);
-            if (knownEntityType)
-            {
-                EntityProjectionAnalyzer.Analyze(mie, pb);
-            }
-            else
-            {
-                NonEntityProjectionAnalyzer.Analyze(mie, pb);
-            }
-        }
-
-        private static void AnalyzeResourceExpression(LambdaExpression lambda, ResourceExpression resource)
-        {
-            PathBox pb = new PathBox();
-            ProjectionAnalyzer.Analyze(lambda, pb);
-            resource.Projection = new ProjectionQueryOptionExpression(lambda.Body.Type, lambda, pb.ProjectionPaths.ToList());
-            resource.ExpandPaths = pb.ExpandPaths.Union(resource.ExpandPaths, StringComparer.Ordinal).ToList();
-        }
-
-        private static Expression SkipConverts(Expression expression)
-        {
-            Expression result = expression;
-            while (result.NodeType == ExpressionType.Convert || result.NodeType == ExpressionType.ConvertChecked)
-            {
-                result = ((UnaryExpression)result).Operand;
-            }
-
-            return result;
-        }
-
-        #endregion Private methods.
-
-        #region Inner types.
-
-        private class EntityProjectionAnalyzer : ExpressionVisitor
-        {
-            #region Private fields.
-
-            private readonly PathBox box;
-
-            private readonly Type type;
-
-            #endregion Private fields.
-
-            private EntityProjectionAnalyzer(PathBox pb, Type type)
-            {
-                Debug.Assert(pb != null, "pb != null");
-                Debug.Assert(type != null, "type != null");
-                
-                this.box = pb;
-                this.type = type;
-            }
-
-            internal static void Analyze(MemberInitExpression mie, PathBox pb)
-            {
-                Debug.Assert(mie != null, "mie != null");
-
-                var epa = new EntityProjectionAnalyzer(pb, mie.Type);
-
-                MemberAssignmentAnalysis targetEntityPath = null;
-                foreach (MemberBinding mb in mie.Bindings)
-                {
-                    MemberAssignment ma = mb as MemberAssignment;
-                    epa.Visit(ma.Expression);
-                    if (ma != null)
-                    {
-                        var analysis = MemberAssignmentAnalysis.Analyze(pb.ParamExpressionInScope, ma.Expression);
-                        if (analysis.IncompatibleAssignmentsException != null)
-                        {
-                            throw analysis.IncompatibleAssignmentsException;
-                        }
-
-                        Type targetType = GetMemberType(ma.Member);
-                        Expression[] lastExpressions = analysis.GetExpressionsBeyondTargetEntity();
-                        if (lastExpressions.Length == 0)
-                        {
-                            throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(targetType, ma.Expression));
-                        }
-
-                        MemberExpression lastExpression = lastExpressions[lastExpressions.Length - 1] as MemberExpression;
-                        Debug.Assert(
-                            !analysis.MultiplePathsFound, 
-                            "!analysis.MultiplePathsFound -- the initilizer has been visited, and cannot be empty, and expressions that can combine paths should have thrown exception during initializer analysis");
-                        Debug.Assert(
-                            lastExpression != null,
-                            "lastExpression != null -- the initilizer has been visited, and cannot be empty, and the only expressions that are allowed can be formed off the parameter, so this is always correlatd");
-                        if (lastExpression != null && (lastExpression.Member.Name != ma.Member.Name))
-                        {
-                            throw new NotSupportedException(Strings.ALinq_PropertyNamesMustMatchInProjections(lastExpression.Member.Name, ma.Member.Name));
-                        }
-
-                        analysis.CheckCompatibleAssignments(mie.Type, ref targetEntityPath);
-
-                        bool targetIsEntity = ClientType.CheckElementTypeIsEntity(targetType);
-                        bool sourceIsEntity = ClientType.CheckElementTypeIsEntity(lastExpression.Type);
-                        if (sourceIsEntity && !targetIsEntity)
-                        {
-                            throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(targetType, ma.Expression));
-                        }
-                    }
-                }
-            }
-
-            internal override Expression VisitUnary(UnaryExpression u)
-            {
-                Debug.Assert(u != null, "u != null");
-
-                if (ResourceBinder.PatternRules.MatchConvertToAssignable(u))
-                {
-                    return base.VisitUnary(u);
-                }
-
-                if ((u.NodeType == ExpressionType.Convert) || (u.NodeType == ExpressionType.ConvertChecked))
-                {
-                    Type sourceType = Nullable.GetUnderlyingType(u.Operand.Type) ?? u.Operand.Type;
-                    Type targetType = Nullable.GetUnderlyingType(u.Type) ?? u.Type;
-
-                    if (ClientConvert.IsKnownType(sourceType) && ClientConvert.IsKnownType(targetType))
-                    {
-                        return base.Visit(u.Operand);
-                    }
-                }
-
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, u.ToString()));
-            }
-
-            internal override Expression VisitBinary(BinaryExpression b)
-            {
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, b.ToString()));
-            }
-
-            internal override Expression VisitTypeIs(TypeBinaryExpression b)
-            {
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, b.ToString()));
-            }
-
-            internal override Expression VisitConditional(ConditionalExpression c)
-            {
-                var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.box.ParamExpressionInScope, c);
-                if (nullCheck.Match)
-                {
-                    this.Visit(nullCheck.AssignExpression);
-                    return c;
-                }
-
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, c.ToString()));
-            }
-
-            internal override Expression VisitConstant(ConstantExpression c)
-            {
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, c.ToString()));
-            }
-
-            internal override Expression VisitMemberAccess(MemberExpression m)
-            {
-                Debug.Assert(m != null, "m != null");
-
-                if (!ClientType.CheckElementTypeIsEntity(m.Expression.Type) || IsCollectionProducingExpression(m.Expression))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, m.ToString()));
-                }
-
-                PropertyInfo pi = null;
-                if (ResourceBinder.PatternRules.MatchNonPrivateReadableProperty(m, out pi))
-                {
-                    Expression e = base.VisitMemberAccess(m);
-                    box.AppendToPath(pi);
-                    return e;
-                }
-
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, m.ToString()));
-            }
-
-            internal override Expression VisitMethodCall(MethodCallExpression m)
-            {
-                if ((m.Object != null && IsDisallowedExpressionForMethodCall(m.Object))
-                    || m.Arguments.Any(a => IsDisallowedExpressionForMethodCall(a)))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
-                }
-
-                if (ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m))
-                {
-                    CheckChainedSequence(m, this.type);
-
-                    return base.VisitMethodCall(m);
-                }
-
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, m.ToString()));
-            }
-
-            internal override Expression VisitInvocation(InvocationExpression iv)
-            {
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, iv.ToString()));
-            }
-
-            internal override Expression VisitLambda(LambdaExpression lambda)
-            {
-                ProjectionAnalyzer.Analyze(lambda, this.box);
-                return lambda;
-            }
-
-            internal override Expression VisitListInit(ListInitExpression init)
-            {
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, init.ToString()));
-            }
-
-            internal override Expression VisitNewArray(NewArrayExpression na)
-            {
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, na.ToString()));
-            }
-
-            internal override Expression VisitMemberInit(MemberInitExpression init)
-            {
-                ProjectionAnalyzer.Analyze(init, this.box);
-                return init;
-            }
-
-            internal override NewExpression VisitNew(NewExpression nex)
-            {
-                if (ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex))
-                {
-                    if (ClientType.CheckElementTypeIsEntity(nex.Type))
-                    {
-                        foreach (Expression e in nex.Arguments)
-                        {
-                            if (e.NodeType != ExpressionType.Constant)
-                            {
-                                base.Visit(e);
-                            }
-                        }
-
-                        return nex;
-                    }
-                }
-
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, nex.ToString()));
-            }
-
-            internal override Expression VisitParameter(ParameterExpression p)
-            {
-                if (p != box.ParamExpressionInScope)
-                {
-                    throw new NotSupportedException(Strings.ALinq_CanOnlyProjectTheLeaf);
-                }
-                
-                this.box.StartNewPath();
-                return p;
-            }
-
-            private static Type GetMemberType(MemberInfo member)
-            {
-                Debug.Assert(member != null, "member != null");
-
-                PropertyInfo propertyInfo = member as PropertyInfo;
-                if (propertyInfo != null)
-                {
-                    return propertyInfo.PropertyType;
-                }
-
-                FieldInfo fieldInfo = member as FieldInfo;
-                Debug.Assert(fieldInfo != null, "fieldInfo != null -- otherwise Expression.Member factory should have thrown an argument exception");
-                return fieldInfo.FieldType;
-            }
-        }
-
-        private class NonEntityProjectionAnalyzer : DataServiceExpressionVisitor
-        {
-            private PathBox box;
-
-            private Type type;
-
-            private NonEntityProjectionAnalyzer(PathBox pb, Type type)
-            {
-                this.box = pb;
-                this.type = type;
-            }
-
-            internal static void Analyze(Expression e, PathBox pb)
-            {
-                var nepa = new NonEntityProjectionAnalyzer(pb, e.Type);
-
-                MemberInitExpression mie = e as MemberInitExpression;
-
-                if (mie != null)
-                {
-                    foreach (MemberBinding mb in mie.Bindings)
-                    {
-                        MemberAssignment ma = mb as MemberAssignment;
-                        if (ma != null)
-                        {
-                            nepa.Visit(ma.Expression);
-                        }
-                    }
-                }
-                else
-                {
-                    nepa.Visit(e);
-                }
-            }
-
-            internal override Expression VisitUnary(UnaryExpression u)
-            {
-                Debug.Assert(u != null, "u != null");
-
-                if (!ResourceBinder.PatternRules.MatchConvertToAssignable(u))
-                {
-                    if (ClientType.CheckElementTypeIsEntity(u.Operand.Type))
-                    {
-                        throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, u.ToString()));
-                    }
-                }
-                
-                return base.VisitUnary(u);
-            }
-
-            internal override Expression VisitBinary(BinaryExpression b)
-            {
-                if (ClientType.CheckElementTypeIsEntity(b.Left.Type) || ClientType.CheckElementTypeIsEntity(b.Right.Type)
-                    || IsCollectionProducingExpression(b.Left) || IsCollectionProducingExpression(b.Right))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, b.ToString()));
-                }
-                
-                return base.VisitBinary(b);
-            }
-
-            internal override Expression VisitTypeIs(TypeBinaryExpression b)
-            {
-                if (ClientType.CheckElementTypeIsEntity(b.Expression.Type) || IsCollectionProducingExpression(b.Expression))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, b.ToString()));
-                }
-                
-                return base.VisitTypeIs(b);
-            }
-
-            internal override Expression VisitConditional(ConditionalExpression c)
-            {
-                var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.box.ParamExpressionInScope, c);
-                if (nullCheck.Match)
-                {
-                    this.Visit(nullCheck.AssignExpression);
-                    return c;
-                }
-
-                if (ClientType.CheckElementTypeIsEntity(c.Test.Type) || ClientType.CheckElementTypeIsEntity(c.IfTrue.Type) || ClientType.CheckElementTypeIsEntity(c.IfFalse.Type)
-                    || IsCollectionProducingExpression(c.Test) || IsCollectionProducingExpression(c.IfTrue) || IsCollectionProducingExpression(c.IfFalse))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, c.ToString()));
-                }
-                
-                return base.VisitConditional(c);
-            }
-
-            internal override Expression VisitMemberAccess(MemberExpression m)
-            {
-                Debug.Assert(m != null, "m != null");
-
-                if (ClientConvert.IsKnownNullableType(m.Expression.Type))
-                {
-                    return base.VisitMemberAccess(m);
-                }
-
-                if (!ClientType.CheckElementTypeIsEntity(m.Expression.Type) || IsCollectionProducingExpression(m.Expression))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
-                }
-
-                PropertyInfo pi = null;
-                if (ResourceBinder.PatternRules.MatchNonPrivateReadableProperty(m, out pi))
-                {
-                    Expression e = base.VisitMemberAccess(m);
-                    box.AppendToPath(pi);
-                    return e;
-                }
-
-                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
-            }
-
-            internal override Expression VisitMethodCall(MethodCallExpression m)
-            {
-                if ((m.Object != null && IsDisallowedExpressionForMethodCall(m.Object))
-                    || m.Arguments.Any(a => IsDisallowedExpressionForMethodCall(a)))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
-                }
-
-                if (ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m))
-                {
-                    CheckChainedSequence(m, this.type);
-
-                    return base.VisitMethodCall(m);
-                }
-
-                if ((m.Object != null ? ClientType.CheckElementTypeIsEntity(m.Object.Type) : false) 
-                    || m.Arguments.Any(a => ClientType.CheckElementTypeIsEntity(a.Type)))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
-                }
-
-                return base.VisitMethodCall(m);
-            }
-
-            internal override Expression VisitInvocation(InvocationExpression iv)
-            {
-                if (ClientType.CheckElementTypeIsEntity(iv.Expression.Type) || IsCollectionProducingExpression(iv.Expression) 
-                    || iv.Arguments.Any(a => ClientType.CheckElementTypeIsEntity(a.Type) || IsCollectionProducingExpression(a)))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, iv.ToString()));
-                }
-
-                return base.VisitInvocation(iv);
-            }
-
-            internal override Expression VisitLambda(LambdaExpression lambda)
-            {
-                ProjectionAnalyzer.Analyze(lambda, this.box);
-                return lambda;
-            }
-
-            internal override Expression VisitMemberInit(MemberInitExpression init)
-            {
-                ProjectionAnalyzer.Analyze(init, this.box);
-                return init;
-            }
-
-            internal override NewExpression VisitNew(NewExpression nex)
-            {
-                if (ClientType.CheckElementTypeIsEntity(nex.Type) &&
-                    !ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, nex.ToString()));
-                }
-
-                return base.VisitNew(nex);
-            }
-
-            internal override Expression VisitParameter(ParameterExpression p)
-            {
-                if (p != box.ParamExpressionInScope)
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, p.ToString()));
-                }
-
-                this.box.StartNewPath();
-                return p;
-            }
-
-            internal override Expression VisitConstant(ConstantExpression c)
-            {
-                if (ClientType.CheckElementTypeIsEntity(c.Type))
-                {
-                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, c.ToString()));
-                }
-
-                return base.VisitConstant(c);
-            }
-        }
-
-        #endregion Inner types.
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.ObjectModel;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Collections;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    internal static class ProjectionAnalyzer
+    {
+        #region Internal methods.
+
+        internal static bool Analyze(LambdaExpression le, ResourceExpression re, bool matchMembers)
+        {
+            Debug.Assert(le != null, "le != null");
+
+            if (le.Body.NodeType == ExpressionType.Constant)
+            {
+                if (ClientType.CheckElementTypeIsEntity(le.Body.Type))
+                {
+                    throw new NotSupportedException(Strings.ALinq_CannotCreateConstantEntity);
+                }
+
+                re.Projection = new ProjectionQueryOptionExpression(le.Body.Type, le, new List<string>());
+                return true;
+            }
+
+            if (le.Body.NodeType == ExpressionType.MemberInit || le.Body.NodeType == ExpressionType.New)
+            {
+                AnalyzeResourceExpression(le, re);
+                return true;
+            }
+
+            if (matchMembers)
+            {
+                Expression withoutConverts = SkipConverts(le.Body);
+                if (withoutConverts.NodeType == ExpressionType.MemberAccess)
+                {
+                    AnalyzeResourceExpression(le, re);
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
+        internal static void Analyze(LambdaExpression e, PathBox pb)
+        {
+            bool knownEntityType = ClientType.CheckElementTypeIsEntity(e.Body.Type);
+            pb.PushParamExpression(e.Parameters.Last());
+
+            if (!knownEntityType)
+            {
+                NonEntityProjectionAnalyzer.Analyze(e.Body, pb);
+            }
+            else
+            {
+                switch (e.Body.NodeType)
+                {
+                    case ExpressionType.MemberInit:
+                        EntityProjectionAnalyzer.Analyze((MemberInitExpression)e.Body, pb);
+                        break;
+                    case ExpressionType.New:
+                        throw new NotSupportedException(Strings.ALinq_CannotConstructKnownEntityTypes);
+                    case ExpressionType.Constant:
+                        throw new NotSupportedException(Strings.ALinq_CannotCreateConstantEntity);
+                    default:
+                        NonEntityProjectionAnalyzer.Analyze(e.Body, pb);
+                        break;
+                }
+            }
+
+            pb.PopParamExpression();
+        }
+
+        internal static bool IsMethodCallAllowedEntitySequence(MethodCallExpression call)
+        {
+            Debug.Assert(call != null, "call != null");
+            return
+                ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.ToList) ||
+                ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Select);
+        }
+
+        internal static void CheckChainedSequence(MethodCallExpression call, Type type)
+        {
+            if (ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Select))
+            {
+                MethodCallExpression insideCall = ResourceBinder.StripTo<MethodCallExpression>(call.Arguments[0]);
+                if (insideCall != null && ReflectionUtil.IsSequenceMethod(insideCall.Method, SequenceMethod.Select))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(type, call.ToString()));
+                }
+            }
+        }
+
+        internal static bool IsCollectionProducingExpression(Expression e)
+        {
+            if (TypeSystem.FindIEnumerable(e.Type) != null)
+            {
+                Type elementType = TypeSystem.GetElementType(e.Type);
+                Debug.Assert(elementType != null, "elementType == null");
+                Type dscType = WebUtil.GetDataServiceCollectionOfT(elementType);
+                if (typeof(List<>).MakeGenericType(elementType).IsAssignableFrom(e.Type) ||
+                    (dscType != null && dscType.IsAssignableFrom(e.Type)))
+                {
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
+        internal static bool IsDisallowedExpressionForMethodCall(Expression e)
+        {
+            MemberExpression me = e as MemberExpression;
+            if (me != null && ClientType.Create(me.Expression.Type, false).IsEntityType)
+            {
+                return false;
+            }
+
+            return IsCollectionProducingExpression(e);
+        }
+
+
+        #endregion Internal methods.
+
+        #region Private methods.
+
+        private static void Analyze(MemberInitExpression mie, PathBox pb)
+        {
+            Debug.Assert(mie != null, "mie != null");
+            Debug.Assert(pb != null, "pb != null");
+
+            bool knownEntityType = ClientType.CheckElementTypeIsEntity(mie.Type);
+            if (knownEntityType)
+            {
+                EntityProjectionAnalyzer.Analyze(mie, pb);
+            }
+            else
+            {
+                NonEntityProjectionAnalyzer.Analyze(mie, pb);
+            }
+        }
+
+        private static void AnalyzeResourceExpression(LambdaExpression lambda, ResourceExpression resource)
+        {
+            PathBox pb = new PathBox();
+            ProjectionAnalyzer.Analyze(lambda, pb);
+            resource.Projection = new ProjectionQueryOptionExpression(lambda.Body.Type, lambda, pb.ProjectionPaths.ToList());
+            resource.ExpandPaths = pb.ExpandPaths.Union(resource.ExpandPaths, StringComparer.Ordinal).ToList();
+        }
+
+        private static Expression SkipConverts(Expression expression)
+        {
+            Expression result = expression;
+            while (result.NodeType == ExpressionType.Convert || result.NodeType == ExpressionType.ConvertChecked)
+            {
+                result = ((UnaryExpression)result).Operand;
+            }
+
+            return result;
+        }
+
+        #endregion Private methods.
+
+        #region Inner types.
+
+        private class EntityProjectionAnalyzer : ExpressionVisitor
+        {
+            #region Private fields.
+
+            private readonly PathBox box;
+
+            private readonly Type type;
+
+            #endregion Private fields.
+
+            private EntityProjectionAnalyzer(PathBox pb, Type type)
+            {
+                Debug.Assert(pb != null, "pb != null");
+                Debug.Assert(type != null, "type != null");
+                
+                this.box = pb;
+                this.type = type;
+            }
+
+            internal static void Analyze(MemberInitExpression mie, PathBox pb)
+            {
+                Debug.Assert(mie != null, "mie != null");
+
+                var epa = new EntityProjectionAnalyzer(pb, mie.Type);
+
+                MemberAssignmentAnalysis targetEntityPath = null;
+                foreach (MemberBinding mb in mie.Bindings)
+                {
+                    MemberAssignment ma = mb as MemberAssignment;
+                    epa.Visit(ma.Expression);
+                    if (ma != null)
+                    {
+                        var analysis = MemberAssignmentAnalysis.Analyze(pb.ParamExpressionInScope, ma.Expression);
+                        if (analysis.IncompatibleAssignmentsException != null)
+                        {
+                            throw analysis.IncompatibleAssignmentsException;
+                        }
+
+                        Type targetType = GetMemberType(ma.Member);
+                        Expression[] lastExpressions = analysis.GetExpressionsBeyondTargetEntity();
+                        if (lastExpressions.Length == 0)
+                        {
+                            throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(targetType, ma.Expression));
+                        }
+
+                        MemberExpression lastExpression = lastExpressions[lastExpressions.Length - 1] as MemberExpression;
+                        Debug.Assert(
+                            !analysis.MultiplePathsFound, 
+                            "!analysis.MultiplePathsFound -- the initilizer has been visited, and cannot be empty, and expressions that can combine paths should have thrown exception during initializer analysis");
+                        Debug.Assert(
+                            lastExpression != null,
+                            "lastExpression != null -- the initilizer has been visited, and cannot be empty, and the only expressions that are allowed can be formed off the parameter, so this is always correlatd");
+                        if (lastExpression != null && (lastExpression.Member.Name != ma.Member.Name))
+                        {
+                            throw new NotSupportedException(Strings.ALinq_PropertyNamesMustMatchInProjections(lastExpression.Member.Name, ma.Member.Name));
+                        }
+
+                        analysis.CheckCompatibleAssignments(mie.Type, ref targetEntityPath);
+
+                        bool targetIsEntity = ClientType.CheckElementTypeIsEntity(targetType);
+                        bool sourceIsEntity = ClientType.CheckElementTypeIsEntity(lastExpression.Type);
+                        if (sourceIsEntity && !targetIsEntity)
+                        {
+                            throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(targetType, ma.Expression));
+                        }
+                    }
+                }
+            }
+
+            internal override Expression VisitUnary(UnaryExpression u)
+            {
+                Debug.Assert(u != null, "u != null");
+
+                if (ResourceBinder.PatternRules.MatchConvertToAssignable(u))
+                {
+                    return base.VisitUnary(u);
+                }
+
+                if ((u.NodeType == ExpressionType.Convert) || (u.NodeType == ExpressionType.ConvertChecked))
+                {
+                    Type sourceType = Nullable.GetUnderlyingType(u.Operand.Type) ?? u.Operand.Type;
+                    Type targetType = Nullable.GetUnderlyingType(u.Type) ?? u.Type;
+
+                    if (ClientConvert.IsKnownType(sourceType) && ClientConvert.IsKnownType(targetType))
+                    {
+                        return base.Visit(u.Operand);
+                    }
+                }
+
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, u.ToString()));
+            }
+
+            internal override Expression VisitBinary(BinaryExpression b)
+            {
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, b.ToString()));
+            }
+
+            internal override Expression VisitTypeIs(TypeBinaryExpression b)
+            {
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, b.ToString()));
+            }
+
+            internal override Expression VisitConditional(ConditionalExpression c)
+            {
+                var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.box.ParamExpressionInScope, c);
+                if (nullCheck.Match)
+                {
+                    this.Visit(nullCheck.AssignExpression);
+                    return c;
+                }
+
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, c.ToString()));
+            }
+
+            internal override Expression VisitConstant(ConstantExpression c)
+            {
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, c.ToString()));
+            }
+
+            internal override Expression VisitMemberAccess(MemberExpression m)
+            {
+                Debug.Assert(m != null, "m != null");
+
+                if (!ClientType.CheckElementTypeIsEntity(m.Expression.Type) || IsCollectionProducingExpression(m.Expression))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, m.ToString()));
+                }
+
+                PropertyInfo pi = null;
+                if (ResourceBinder.PatternRules.MatchNonPrivateReadableProperty(m, out pi))
+                {
+                    Expression e = base.VisitMemberAccess(m);
+                    box.AppendToPath(pi);
+                    return e;
+                }
+
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, m.ToString()));
+            }
+
+            internal override Expression VisitMethodCall(MethodCallExpression m)
+            {
+                if ((m.Object != null && IsDisallowedExpressionForMethodCall(m.Object))
+                    || m.Arguments.Any(a => IsDisallowedExpressionForMethodCall(a)))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
+                }
+
+                if (ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m))
+                {
+                    CheckChainedSequence(m, this.type);
+
+                    return base.VisitMethodCall(m);
+                }
+
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, m.ToString()));
+            }
+
+            internal override Expression VisitInvocation(InvocationExpression iv)
+            {
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, iv.ToString()));
+            }
+
+            internal override Expression VisitLambda(LambdaExpression lambda)
+            {
+                ProjectionAnalyzer.Analyze(lambda, this.box);
+                return lambda;
+            }
+
+            internal override Expression VisitListInit(ListInitExpression init)
+            {
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, init.ToString()));
+            }
+
+            internal override Expression VisitNewArray(NewArrayExpression na)
+            {
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, na.ToString()));
+            }
+
+            internal override Expression VisitMemberInit(MemberInitExpression init)
+            {
+                ProjectionAnalyzer.Analyze(init, this.box);
+                return init;
+            }
+
+            internal override NewExpression VisitNew(NewExpression nex)
+            {
+                if (ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex))
+                {
+                    if (ClientType.CheckElementTypeIsEntity(nex.Type))
+                    {
+                        foreach (Expression e in nex.Arguments)
+                        {
+                            if (e.NodeType != ExpressionType.Constant)
+                            {
+                                base.Visit(e);
+                            }
+                        }
+
+                        return nex;
+                    }
+                }
+
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjectionToEntity(this.type, nex.ToString()));
+            }
+
+            internal override Expression VisitParameter(ParameterExpression p)
+            {
+                if (p != box.ParamExpressionInScope)
+                {
+                    throw new NotSupportedException(Strings.ALinq_CanOnlyProjectTheLeaf);
+                }
+                
+                this.box.StartNewPath();
+                return p;
+            }
+
+            private static Type GetMemberType(MemberInfo member)
+            {
+                Debug.Assert(member != null, "member != null");
+
+                PropertyInfo propertyInfo = member as PropertyInfo;
+                if (propertyInfo != null)
+                {
+                    return propertyInfo.PropertyType;
+                }
+
+                FieldInfo fieldInfo = member as FieldInfo;
+                Debug.Assert(fieldInfo != null, "fieldInfo != null -- otherwise Expression.Member factory should have thrown an argument exception");
+                return fieldInfo.FieldType;
+            }
+        }
+
+        private class NonEntityProjectionAnalyzer : DataServiceExpressionVisitor
+        {
+            private PathBox box;
+
+            private Type type;
+
+            private NonEntityProjectionAnalyzer(PathBox pb, Type type)
+            {
+                this.box = pb;
+                this.type = type;
+            }
+
+            internal static void Analyze(Expression e, PathBox pb)
+            {
+                var nepa = new NonEntityProjectionAnalyzer(pb, e.Type);
+
+                MemberInitExpression mie = e as MemberInitExpression;
+
+                if (mie != null)
+                {
+                    foreach (MemberBinding mb in mie.Bindings)
+                    {
+                        MemberAssignment ma = mb as MemberAssignment;
+                        if (ma != null)
+                        {
+                            nepa.Visit(ma.Expression);
+                        }
+                    }
+                }
+                else
+                {
+                    nepa.Visit(e);
+                }
+            }
+
+            internal override Expression VisitUnary(UnaryExpression u)
+            {
+                Debug.Assert(u != null, "u != null");
+
+                if (!ResourceBinder.PatternRules.MatchConvertToAssignable(u))
+                {
+                    if (ClientType.CheckElementTypeIsEntity(u.Operand.Type))
+                    {
+                        throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, u.ToString()));
+                    }
+                }
+                
+                return base.VisitUnary(u);
+            }
+
+            internal override Expression VisitBinary(BinaryExpression b)
+            {
+                if (ClientType.CheckElementTypeIsEntity(b.Left.Type) || ClientType.CheckElementTypeIsEntity(b.Right.Type)
+                    || IsCollectionProducingExpression(b.Left) || IsCollectionProducingExpression(b.Right))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, b.ToString()));
+                }
+                
+                return base.VisitBinary(b);
+            }
+
+            internal override Expression VisitTypeIs(TypeBinaryExpression b)
+            {
+                if (ClientType.CheckElementTypeIsEntity(b.Expression.Type) || IsCollectionProducingExpression(b.Expression))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, b.ToString()));
+                }
+                
+                return base.VisitTypeIs(b);
+            }
+
+            internal override Expression VisitConditional(ConditionalExpression c)
+            {
+                var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.box.ParamExpressionInScope, c);
+                if (nullCheck.Match)
+                {
+                    this.Visit(nullCheck.AssignExpression);
+                    return c;
+                }
+
+                if (ClientType.CheckElementTypeIsEntity(c.Test.Type) || ClientType.CheckElementTypeIsEntity(c.IfTrue.Type) || ClientType.CheckElementTypeIsEntity(c.IfFalse.Type)
+                    || IsCollectionProducingExpression(c.Test) || IsCollectionProducingExpression(c.IfTrue) || IsCollectionProducingExpression(c.IfFalse))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, c.ToString()));
+                }
+                
+                return base.VisitConditional(c);
+            }
+
+            internal override Expression VisitMemberAccess(MemberExpression m)
+            {
+                Debug.Assert(m != null, "m != null");
+
+                if (ClientConvert.IsKnownNullableType(m.Expression.Type))
+                {
+                    return base.VisitMemberAccess(m);
+                }
+
+                if (!ClientType.CheckElementTypeIsEntity(m.Expression.Type) || IsCollectionProducingExpression(m.Expression))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
+                }
+
+                PropertyInfo pi = null;
+                if (ResourceBinder.PatternRules.MatchNonPrivateReadableProperty(m, out pi))
+                {
+                    Expression e = base.VisitMemberAccess(m);
+                    box.AppendToPath(pi);
+                    return e;
+                }
+
+                throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
+            }
+
+            internal override Expression VisitMethodCall(MethodCallExpression m)
+            {
+                if ((m.Object != null && IsDisallowedExpressionForMethodCall(m.Object))
+                    || m.Arguments.Any(a => IsDisallowedExpressionForMethodCall(a)))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
+                }
+
+                if (ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m))
+                {
+                    CheckChainedSequence(m, this.type);
+
+                    return base.VisitMethodCall(m);
+                }
+
+                if ((m.Object != null ? ClientType.CheckElementTypeIsEntity(m.Object.Type) : false) 
+                    || m.Arguments.Any(a => ClientType.CheckElementTypeIsEntity(a.Type)))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, m.ToString()));
+                }
+
+                return base.VisitMethodCall(m);
+            }
+
+            internal override Expression VisitInvocation(InvocationExpression iv)
+            {
+                if (ClientType.CheckElementTypeIsEntity(iv.Expression.Type) || IsCollectionProducingExpression(iv.Expression) 
+                    || iv.Arguments.Any(a => ClientType.CheckElementTypeIsEntity(a.Type) || IsCollectionProducingExpression(a)))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, iv.ToString()));
+                }
+
+                return base.VisitInvocation(iv);
+            }
+
+            internal override Expression VisitLambda(LambdaExpression lambda)
+            {
+                ProjectionAnalyzer.Analyze(lambda, this.box);
+                return lambda;
+            }
+
+            internal override Expression VisitMemberInit(MemberInitExpression init)
+            {
+                ProjectionAnalyzer.Analyze(init, this.box);
+                return init;
+            }
+
+            internal override NewExpression VisitNew(NewExpression nex)
+            {
+                if (ClientType.CheckElementTypeIsEntity(nex.Type) &&
+                    !ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, nex.ToString()));
+                }
+
+                return base.VisitNew(nex);
+            }
+
+            internal override Expression VisitParameter(ParameterExpression p)
+            {
+                if (p != box.ParamExpressionInScope)
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, p.ToString()));
+                }
+
+                this.box.StartNewPath();
+                return p;
+            }
+
+            internal override Expression VisitConstant(ConstantExpression c)
+            {
+                if (ClientType.CheckElementTypeIsEntity(c.Type))
+                {
+                    throw new NotSupportedException(Strings.ALinq_ExpressionNotSupportedInProjection(this.type, c.ToString()));
+                }
+
+                return base.VisitConstant(c);
+            }
+        }
+
+        #endregion Inner types.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ProjectionQueryOptionExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ProjectionQueryOptionExpression.cs
@@ -1,65 +1,65 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal class ProjectionQueryOptionExpression : QueryOptionExpression
-    {
-        #region Private fields.
-
-        private readonly LambdaExpression lambda;
-
-        private readonly List<string> paths;
-
-        #endregion Private fields.
-
-        internal ProjectionQueryOptionExpression(Type type, LambdaExpression lambda, List<string> paths)
-            : base((ExpressionType)ResourceExpressionType.ProjectionQueryOption, type)
-        {
-            Debug.Assert(type != null, "type != null");
-            Debug.Assert(lambda != null, "lambda != null");
-            Debug.Assert(paths != null, "paths != null");
-
-            this.lambda = lambda;
-            this.paths = paths;
-        }
-
-        #region Internal properties.
-
-        internal LambdaExpression Selector
-        {
-            get
-            {
-                return this.lambda;
-            }
-        }
-
-        internal List<string> Paths
-        {
-            get
-            {
-                return this.paths;
-            }
-        }
-
-        #endregion Internal properties.
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal class ProjectionQueryOptionExpression : QueryOptionExpression
+    {
+        #region Private fields.
+
+        private readonly LambdaExpression lambda;
+
+        private readonly List<string> paths;
+
+        #endregion Private fields.
+
+        internal ProjectionQueryOptionExpression(Type type, LambdaExpression lambda, List<string> paths)
+            : base((ExpressionType)ResourceExpressionType.ProjectionQueryOption, type)
+        {
+            Debug.Assert(type != null, "type != null");
+            Debug.Assert(lambda != null, "lambda != null");
+            Debug.Assert(paths != null, "paths != null");
+
+            this.lambda = lambda;
+            this.paths = paths;
+        }
+
+        #region Internal properties.
+
+        internal LambdaExpression Selector
+        {
+            get
+            {
+                return this.lambda;
+            }
+        }
+
+        internal List<string> Paths
+        {
+            get
+            {
+                return this.paths;
+            }
+        }
+
+        #endregion Internal properties.
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ProjectionRewriter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ProjectionRewriter.cs
@@ -1,99 +1,99 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal class ProjectionRewriter : ExpressionVisitor
-    {
-        #region Private fields.
-
-        private readonly ParameterExpression newLambdaParameter;
-
-        private ParameterExpression oldLambdaParameter;
-
-        private bool sucessfulRebind;
-
-        #endregion Private fields.
-
-        private ProjectionRewriter(Type proposedParameterType)
-        {
-            Debug.Assert(proposedParameterType != null, "proposedParameterType != null");
-            this.newLambdaParameter = Expression.Parameter(proposedParameterType, "it");
-        }
-
-        #region Internal methods.
-
-        internal static LambdaExpression TryToRewrite(LambdaExpression le, Type proposedParameterType)
-        {
-            LambdaExpression result;
-            if (!ResourceBinder.PatternRules.MatchSingleArgumentLambda(le, out le) ||                ClientType.CheckElementTypeIsEntity(le.Parameters[0].Type) ||                !(le.Parameters[0].Type.GetProperties().Any(p => p.PropertyType == proposedParameterType)))            {
-                result = le;
-            }
-            else
-            {
-                ProjectionRewriter rewriter = new ProjectionRewriter(proposedParameterType);
-                result = rewriter.Rebind(le);
-            }
-
-            return result;
-        }
-
-        internal LambdaExpression Rebind(LambdaExpression lambda)
-        {
-            this.sucessfulRebind = true;
-            this.oldLambdaParameter = lambda.Parameters[0];
-
-            Expression body = this.Visit(lambda.Body);
-            if (this.sucessfulRebind)
-            {
-                Type delegateType = typeof(Func<,>).MakeGenericType(new Type[] { newLambdaParameter.Type, lambda.Body.Type });
-#if ASTORIA_LIGHT
-                return ExpressionHelpers.CreateLambda(delegateType, body, new ParameterExpression[] { this.newLambdaParameter });
-#else
-                return Expression.Lambda(delegateType, body, new ParameterExpression[] { this.newLambdaParameter });
-#endif
-            }
-            else
-            {
-                throw new NotSupportedException(Strings.ALinq_CanOnlyProjectTheLeaf);
-            }
-        }
-
-        internal override Expression VisitMemberAccess(MemberExpression m)
-        {
-            if (m.Expression == this.oldLambdaParameter)
-            {
-                if (m.Type == this.newLambdaParameter.Type)
-                {
-                    return this.newLambdaParameter;
-                }
-                else
-                {
-                    this.sucessfulRebind = false;
-                }
-            }
-
-            return base.VisitMemberAccess(m);
-        }
-
-        #endregion Internal methods.
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal class ProjectionRewriter : ExpressionVisitor
+    {
+        #region Private fields.
+
+        private readonly ParameterExpression newLambdaParameter;
+
+        private ParameterExpression oldLambdaParameter;
+
+        private bool sucessfulRebind;
+
+        #endregion Private fields.
+
+        private ProjectionRewriter(Type proposedParameterType)
+        {
+            Debug.Assert(proposedParameterType != null, "proposedParameterType != null");
+            this.newLambdaParameter = Expression.Parameter(proposedParameterType, "it");
+        }
+
+        #region Internal methods.
+
+        internal static LambdaExpression TryToRewrite(LambdaExpression le, Type proposedParameterType)
+        {
+            LambdaExpression result;
+            if (!ResourceBinder.PatternRules.MatchSingleArgumentLambda(le, out le) ||                ClientType.CheckElementTypeIsEntity(le.Parameters[0].Type) ||                !(le.Parameters[0].Type.GetProperties().Any(p => p.PropertyType == proposedParameterType)))            {
+                result = le;
+            }
+            else
+            {
+                ProjectionRewriter rewriter = new ProjectionRewriter(proposedParameterType);
+                result = rewriter.Rebind(le);
+            }
+
+            return result;
+        }
+
+        internal LambdaExpression Rebind(LambdaExpression lambda)
+        {
+            this.sucessfulRebind = true;
+            this.oldLambdaParameter = lambda.Parameters[0];
+
+            Expression body = this.Visit(lambda.Body);
+            if (this.sucessfulRebind)
+            {
+                Type delegateType = typeof(Func<,>).MakeGenericType(new Type[] { newLambdaParameter.Type, lambda.Body.Type });
+#if ASTORIA_LIGHT
+                return ExpressionHelpers.CreateLambda(delegateType, body, new ParameterExpression[] { this.newLambdaParameter });
+#else
+                return Expression.Lambda(delegateType, body, new ParameterExpression[] { this.newLambdaParameter });
+#endif
+            }
+            else
+            {
+                throw new NotSupportedException(Strings.ALinq_CanOnlyProjectTheLeaf);
+            }
+        }
+
+        internal override Expression VisitMemberAccess(MemberExpression m)
+        {
+            if (m.Expression == this.oldLambdaParameter)
+            {
+                if (m.Type == this.newLambdaParameter.Type)
+                {
+                    return this.newLambdaParameter;
+                }
+                else
+                {
+                    this.sucessfulRebind = false;
+                }
+            }
+
+            return base.VisitMemberAccess(m);
+        }
+
+        #endregion Internal methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/QueryComponents.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/QueryComponents.cs
@@ -1,100 +1,100 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal class QueryComponents
-    {
-        #region Private fields.
-
-        private readonly Uri uri;
-
-        private readonly Type lastSegmentType;
-
-        private readonly Dictionary<Expression, Expression> normalizerRewrites;
-
-        private readonly LambdaExpression projection;
-
-        private Version version;
-
-        #endregion Private fields.
-
-        internal QueryComponents(Uri uri, Version version, Type lastSegmentType, LambdaExpression projection, Dictionary<Expression, Expression> normalizerRewrites)
-        {
-            this.projection = projection;
-            this.normalizerRewrites = normalizerRewrites;
-            this.lastSegmentType = lastSegmentType;
-            this.uri = uri;
-            this.version = version;
-        }
-
-        #region Internal properties.
-
-        internal Uri Uri
-        {
-            get
-            {
-                return this.uri;
-            }
-        }
-
-        internal Dictionary<Expression, Expression> NormalizerRewrites
-        {
-            get 
-            { 
-                return this.normalizerRewrites; 
-            }
-        }
-
-        internal LambdaExpression Projection
-        {
-            get
-            {
-                return this.projection;
-            }
-        }
-
-        internal Type LastSegmentType
-        {
-            get
-            {
-                return this.lastSegmentType;
-            }
-        }
-
-        internal Version Version
-        {
-            get
-            {
-                return this.version;
-            }
-
-#if !ASTORIA_LIGHT            
-            
-           set
-            {
-                this.version = value;
-            }
-#endif
-        }
-
-        #endregion Internal properties.
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal class QueryComponents
+    {
+        #region Private fields.
+
+        private readonly Uri uri;
+
+        private readonly Type lastSegmentType;
+
+        private readonly Dictionary<Expression, Expression> normalizerRewrites;
+
+        private readonly LambdaExpression projection;
+
+        private Version version;
+
+        #endregion Private fields.
+
+        internal QueryComponents(Uri uri, Version version, Type lastSegmentType, LambdaExpression projection, Dictionary<Expression, Expression> normalizerRewrites)
+        {
+            this.projection = projection;
+            this.normalizerRewrites = normalizerRewrites;
+            this.lastSegmentType = lastSegmentType;
+            this.uri = uri;
+            this.version = version;
+        }
+
+        #region Internal properties.
+
+        internal Uri Uri
+        {
+            get
+            {
+                return this.uri;
+            }
+        }
+
+        internal Dictionary<Expression, Expression> NormalizerRewrites
+        {
+            get 
+            { 
+                return this.normalizerRewrites; 
+            }
+        }
+
+        internal LambdaExpression Projection
+        {
+            get
+            {
+                return this.projection;
+            }
+        }
+
+        internal Type LastSegmentType
+        {
+            get
+            {
+                return this.lastSegmentType;
+            }
+        }
+
+        internal Version Version
+        {
+            get
+            {
+                return this.version;
+            }
+
+#if !ASTORIA_LIGHT            
+            
+           set
+            {
+                this.version = value;
+            }
+#endif
+        }
+
+        #endregion Internal properties.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/QueryOptionExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/QueryOptionExpression.cs
@@ -1,31 +1,31 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-    internal abstract class QueryOptionExpression : Expression
-    {
-        internal QueryOptionExpression(ExpressionType nodeType, Type type) : base(nodeType, type)
-        {
-        }
-
-        internal virtual QueryOptionExpression ComposeMultipleSpecification(QueryOptionExpression previous)
-        {
-            Debug.Assert(previous != null, "other != null");
-            Debug.Assert(previous.GetType() == this.GetType(), "other.GetType == this.GetType() -- otherwise it's not the same specification");
-            return this;
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+    internal abstract class QueryOptionExpression : Expression
+    {
+        internal QueryOptionExpression(ExpressionType nodeType, Type type) : base(nodeType, type)
+        {
+        }
+
+        internal virtual QueryOptionExpression ComposeMultipleSpecification(QueryOptionExpression previous)
+        {
+            Debug.Assert(previous != null, "other != null");
+            Debug.Assert(previous.GetType() == this.GetType(), "other.GetType == this.GetType() -- otherwise it's not the same specification");
+            return this;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ReflectionUtil.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ReflectionUtil.cs
@@ -1,642 +1,642 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Collections.Generic;
-    using System.Globalization;
-    using System.Linq;
-    using System.Reflection;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    internal static class ReflectionUtil
-    {
-        #region Static information on sequence methods
-        private static readonly Dictionary<MethodInfo, SequenceMethod> s_methodMap;
-        private static readonly Dictionary<SequenceMethod, MethodInfo> s_inverseMap;
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
-        static ReflectionUtil()
-        {
-            Dictionary<String, SequenceMethod> map = new Dictionary<string, SequenceMethod>(EqualityComparer<string>.Default);
-
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Double>>)->Double", SequenceMethod.SumDoubleSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Double>>>)->Nullable`1<Double>", SequenceMethod.SumNullableDoubleSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Decimal>>)->Decimal", SequenceMethod.SumDecimalSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Decimal>>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimalSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Int32>>)->Double", SequenceMethod.AverageIntSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int32>>>)->Nullable`1<Double>", SequenceMethod.AverageNullableIntSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Single>>)->Single", SequenceMethod.AverageSingleSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Single>>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingleSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Int64>>)->Double", SequenceMethod.AverageLongSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int64>>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLongSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Double>>)->Double", SequenceMethod.AverageDoubleSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Double>>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDoubleSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Decimal>>)->Decimal", SequenceMethod.AverageDecimalSelector);
-            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Decimal>>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimalSelector);
-            map.Add(@"Aggregate(IQueryable`1<T0>, Expression`1<Func`3<T0, T0, T0>>)->T0", SequenceMethod.Aggregate);
-            map.Add(@"Aggregate(IQueryable`1<T0>, T1, Expression`1<Func`3<T1, T0, T1>>)->T1", SequenceMethod.AggregateSeed);
-            map.Add(@"Aggregate(IQueryable`1<T0>, T1, Expression`1<Func`3<T1, T0, T1>>, Expression`1<Func`2<T1, T2>>)->T2", SequenceMethod.AggregateSeedSelector);
-            map.Add(@"AsQueryable(IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.AsQueryableGeneric);
-            map.Add(@"Where(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->IQueryable`1<T0>", SequenceMethod.Where);
-            map.Add(@"Where(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, Boolean>>)->IQueryable`1<T0>", SequenceMethod.WhereOrdinal);
-            map.Add(@"OfType(IQueryable)->IQueryable`1<T0>", SequenceMethod.OfType);
-            map.Add(@"Cast(IQueryable)->IQueryable`1<T0>", SequenceMethod.Cast);
-            map.Add(@"Select(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IQueryable`1<T1>", SequenceMethod.Select);
-            map.Add(@"Select(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, T1>>)->IQueryable`1<T1>", SequenceMethod.SelectOrdinal);
-            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`2<T0, IEnumerable`1<T1>>>)->IQueryable`1<T1>", SequenceMethod.SelectMany);
-            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, IEnumerable`1<T1>>>)->IQueryable`1<T1>", SequenceMethod.SelectManyOrdinal);
-            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, IEnumerable`1<T1>>>, Expression`1<Func`3<T0, T1, T2>>)->IQueryable`1<T2>", SequenceMethod.SelectManyOrdinalResultSelector);
-            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`2<T0, IEnumerable`1<T1>>>, Expression`1<Func`3<T0, T1, T2>>)->IQueryable`1<T2>", SequenceMethod.SelectManyResultSelector);
-            map.Add(@"Join(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, T1, T3>>)->IQueryable`1<T3>", SequenceMethod.Join);
-            map.Add(@"Join(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, T1, T3>>, IEqualityComparer`1<T2>)->IQueryable`1<T3>", SequenceMethod.JoinComparer);
-            map.Add(@"GroupJoin(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, IEnumerable`1<T1>, T3>>)->IQueryable`1<T3>", SequenceMethod.GroupJoin);
-            map.Add(@"GroupJoin(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, IEnumerable`1<T1>, T3>>, IEqualityComparer`1<T2>)->IQueryable`1<T3>", SequenceMethod.GroupJoinComparer);
-            map.Add(@"OrderBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderBy);
-            map.Add(@"OrderBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderByComparer);
-            map.Add(@"OrderByDescending(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderByDescending);
-            map.Add(@"OrderByDescending(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderByDescendingComparer);
-            map.Add(@"ThenBy(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenBy);
-            map.Add(@"ThenBy(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenByComparer);
-            map.Add(@"ThenByDescending(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenByDescending);
-            map.Add(@"ThenByDescending(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenByDescendingComparer);
-            map.Add(@"Take(IQueryable`1<T0>, Int32)->IQueryable`1<T0>", SequenceMethod.Take);
-            map.Add(@"TakeWhile(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->IQueryable`1<T0>", SequenceMethod.TakeWhile);
-            map.Add(@"TakeWhile(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, Boolean>>)->IQueryable`1<T0>", SequenceMethod.TakeWhileOrdinal);
-            map.Add(@"Skip(IQueryable`1<T0>, Int32)->IQueryable`1<T0>", SequenceMethod.Skip);
-            map.Add(@"SkipWhile(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->IQueryable`1<T0>", SequenceMethod.SkipWhile);
-            map.Add(@"SkipWhile(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, Boolean>>)->IQueryable`1<T0>", SequenceMethod.SkipWhileOrdinal);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IQueryable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupBy);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>)->IQueryable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelector);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IEqualityComparer`1<T1>)->IQueryable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupByComparer);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>, IEqualityComparer`1<T1>)->IQueryable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelectorComparer);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`3<T1, IEnumerable`1<T2>, T3>>)->IQueryable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelector);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`3<T1, IEnumerable`1<T0>, T2>>)->IQueryable`1<T2>", SequenceMethod.GroupByResultSelector);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`3<T1, IEnumerable`1<T0>, T2>>, IEqualityComparer`1<T1>)->IQueryable`1<T2>", SequenceMethod.GroupByResultSelectorComparer);
-            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`3<T1, IEnumerable`1<T2>, T3>>, IEqualityComparer`1<T1>)->IQueryable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelectorComparer);
-            map.Add(@"Distinct(IQueryable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Distinct);
-            map.Add(@"Distinct(IQueryable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.DistinctComparer);
-            map.Add(@"Concat(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Concat);
-            map.Add(@"Union(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Union);
-            map.Add(@"Union(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.UnionComparer);
-            map.Add(@"Intersect(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Intersect);
-            map.Add(@"Intersect(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.IntersectComparer);
-            map.Add(@"Except(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Except);
-            map.Add(@"Except(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.ExceptComparer);
-            map.Add(@"First(IQueryable`1<T0>)->T0", SequenceMethod.First);
-            map.Add(@"First(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.FirstPredicate);
-            map.Add(@"FirstOrDefault(IQueryable`1<T0>)->T0", SequenceMethod.FirstOrDefault);
-            map.Add(@"FirstOrDefault(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.FirstOrDefaultPredicate);
-            map.Add(@"Last(IQueryable`1<T0>)->T0", SequenceMethod.Last);
-            map.Add(@"Last(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.LastPredicate);
-            map.Add(@"LastOrDefault(IQueryable`1<T0>)->T0", SequenceMethod.LastOrDefault);
-            map.Add(@"LastOrDefault(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.LastOrDefaultPredicate);
-            map.Add(@"Single(IQueryable`1<T0>)->T0", SequenceMethod.Single);
-            map.Add(@"Single(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.SinglePredicate);
-            map.Add(@"SingleOrDefault(IQueryable`1<T0>)->T0", SequenceMethod.SingleOrDefault);
-            map.Add(@"SingleOrDefault(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.SingleOrDefaultPredicate);
-            map.Add(@"ElementAt(IQueryable`1<T0>, Int32)->T0", SequenceMethod.ElementAt);
-            map.Add(@"ElementAtOrDefault(IQueryable`1<T0>, Int32)->T0", SequenceMethod.ElementAtOrDefault);
-            map.Add(@"DefaultIfEmpty(IQueryable`1<T0>)->IQueryable`1<T0>", SequenceMethod.DefaultIfEmpty);
-            map.Add(@"DefaultIfEmpty(IQueryable`1<T0>, T0)->IQueryable`1<T0>", SequenceMethod.DefaultIfEmptyValue);
-            map.Add(@"Contains(IQueryable`1<T0>, T0)->Boolean", SequenceMethod.Contains);
-            map.Add(@"Contains(IQueryable`1<T0>, T0, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.ContainsComparer);
-            map.Add(@"Reverse(IQueryable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Reverse);
-            map.Add(@"SequenceEqual(IQueryable`1<T0>, IEnumerable`1<T0>)->Boolean", SequenceMethod.SequenceEqual);
-            map.Add(@"SequenceEqual(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.SequenceEqualComparer);
-            map.Add(@"Any(IQueryable`1<T0>)->Boolean", SequenceMethod.Any);
-            map.Add(@"Any(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Boolean", SequenceMethod.AnyPredicate);
-            map.Add(@"All(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Boolean", SequenceMethod.All);
-            map.Add(@"Count(IQueryable`1<T0>)->Int32", SequenceMethod.Count);
-            map.Add(@"Count(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Int32", SequenceMethod.CountPredicate);
-            map.Add(@"LongCount(IQueryable`1<T0>)->Int64", SequenceMethod.LongCount);
-            map.Add(@"LongCount(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Int64", SequenceMethod.LongCountPredicate);
-            map.Add(@"Min(IQueryable`1<T0>)->T0", SequenceMethod.Min);
-            map.Add(@"Min(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->T1", SequenceMethod.MinSelector);
-            map.Add(@"Max(IQueryable`1<T0>)->T0", SequenceMethod.Max);
-            map.Add(@"Max(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->T1", SequenceMethod.MaxSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Int32>>)->Int32", SequenceMethod.SumIntSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int32>>>)->Nullable`1<Int32>", SequenceMethod.SumNullableIntSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Int64>>)->Int64", SequenceMethod.SumLongSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int64>>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLongSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Single>>)->Single", SequenceMethod.SumSingleSelector);
-            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Single>>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingleSelector);
-            map.Add(@"AsQueryable(IEnumerable)->IQueryable", SequenceMethod.AsQueryable);
-            map.Add(@"Sum(IQueryable`1<Int32>)->Int32", SequenceMethod.SumInt);
-            map.Add(@"Sum(IQueryable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.SumNullableInt);
-            map.Add(@"Sum(IQueryable`1<Int64>)->Int64", SequenceMethod.SumLong);
-            map.Add(@"Sum(IQueryable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLong);
-            map.Add(@"Sum(IQueryable`1<Single>)->Single", SequenceMethod.SumSingle);
-            map.Add(@"Sum(IQueryable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingle);
-            map.Add(@"Sum(IQueryable`1<Double>)->Double", SequenceMethod.SumDouble);
-            map.Add(@"Sum(IQueryable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.SumNullableDouble);
-            map.Add(@"Sum(IQueryable`1<Decimal>)->Decimal", SequenceMethod.SumDecimal);
-            map.Add(@"Sum(IQueryable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimal);
-            map.Add(@"Average(IQueryable`1<Int32>)->Double", SequenceMethod.AverageInt);
-            map.Add(@"Average(IQueryable`1<Nullable`1<Int32>>)->Nullable`1<Double>", SequenceMethod.AverageNullableInt);
-            map.Add(@"Average(IQueryable`1<Int64>)->Double", SequenceMethod.AverageLong);
-            map.Add(@"Average(IQueryable`1<Nullable`1<Int64>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLong);
-            map.Add(@"Average(IQueryable`1<Single>)->Single", SequenceMethod.AverageSingle);
-            map.Add(@"Average(IQueryable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingle);
-            map.Add(@"Average(IQueryable`1<Double>)->Double", SequenceMethod.AverageDouble);
-            map.Add(@"Average(IQueryable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDouble);
-            map.Add(@"Average(IQueryable`1<Decimal>)->Decimal", SequenceMethod.AverageDecimal);
-            map.Add(@"Average(IQueryable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimal);
-            map.Add(@"First(IEnumerable`1<T0>)->T0", SequenceMethod.First);
-            map.Add(@"First(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.FirstPredicate);
-            map.Add(@"FirstOrDefault(IEnumerable`1<T0>)->T0", SequenceMethod.FirstOrDefault);
-            map.Add(@"FirstOrDefault(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.FirstOrDefaultPredicate);
-            map.Add(@"Last(IEnumerable`1<T0>)->T0", SequenceMethod.Last);
-            map.Add(@"Last(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.LastPredicate);
-            map.Add(@"LastOrDefault(IEnumerable`1<T0>)->T0", SequenceMethod.LastOrDefault);
-            map.Add(@"LastOrDefault(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.LastOrDefaultPredicate);
-            map.Add(@"Single(IEnumerable`1<T0>)->T0", SequenceMethod.Single);
-            map.Add(@"Single(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.SinglePredicate);
-            map.Add(@"SingleOrDefault(IEnumerable`1<T0>)->T0", SequenceMethod.SingleOrDefault);
-            map.Add(@"SingleOrDefault(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.SingleOrDefaultPredicate);
-            map.Add(@"ElementAt(IEnumerable`1<T0>, Int32)->T0", SequenceMethod.ElementAt);
-            map.Add(@"ElementAtOrDefault(IEnumerable`1<T0>, Int32)->T0", SequenceMethod.ElementAtOrDefault);
-            map.Add(@"Repeat(T0, Int32)->IEnumerable`1<T0>", SequenceMethod.NotSupported);
-            map.Add(@"Empty()->IEnumerable`1<T0>", SequenceMethod.Empty);
-            map.Add(@"Any(IEnumerable`1<T0>)->Boolean", SequenceMethod.Any);
-            map.Add(@"Any(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Boolean", SequenceMethod.AnyPredicate);
-            map.Add(@"All(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Boolean", SequenceMethod.All);
-            map.Add(@"Count(IEnumerable`1<T0>)->Int32", SequenceMethod.Count);
-            map.Add(@"Count(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Int32", SequenceMethod.CountPredicate);
-            map.Add(@"LongCount(IEnumerable`1<T0>)->Int64", SequenceMethod.LongCount);
-            map.Add(@"LongCount(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Int64", SequenceMethod.LongCountPredicate);
-            map.Add(@"Contains(IEnumerable`1<T0>, T0)->Boolean", SequenceMethod.Contains);
-            map.Add(@"Contains(IEnumerable`1<T0>, T0, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.ContainsComparer);
-            map.Add(@"Aggregate(IEnumerable`1<T0>, Func`3<T0, T0, T0>)->T0", SequenceMethod.Aggregate);
-            map.Add(@"Aggregate(IEnumerable`1<T0>, T1, Func`3<T1, T0, T1>)->T1", SequenceMethod.AggregateSeed);
-            map.Add(@"Aggregate(IEnumerable`1<T0>, T1, Func`3<T1, T0, T1>, Func`2<T1, T2>)->T2", SequenceMethod.AggregateSeedSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Int32>)->Int32", SequenceMethod.SumIntSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.SumNullableIntSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Int64>)->Int64", SequenceMethod.SumLongSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLongSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.SumSingleSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingleSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.SumDoubleSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.SumNullableDoubleSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.SumDecimalSelector);
-            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimalSelector);
-            map.Add(@"Min(IEnumerable`1<T0>)->T0", SequenceMethod.Min);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Int32>)->Int32", SequenceMethod.MinIntSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MinNullableIntSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Int64>)->Int64", SequenceMethod.MinLongSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MinNullableLongSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.MinSingleSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MinNullableSingleSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.MinDoubleSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MinNullableDoubleSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.MinDecimalSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MinNullableDecimalSelector);
-            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, T1>)->T1", SequenceMethod.MinSelector);
-            map.Add(@"Max(IEnumerable`1<T0>)->T0", SequenceMethod.Max);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Int32>)->Int32", SequenceMethod.MaxIntSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MaxNullableIntSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Int64>)->Int64", SequenceMethod.MaxLongSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MaxNullableLongSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.MaxSingleSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MaxNullableSingleSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.MaxDoubleSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MaxNullableDoubleSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.MaxDecimalSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MaxNullableDecimalSelector);
-            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, T1>)->T1", SequenceMethod.MaxSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Int32>)->Double", SequenceMethod.AverageIntSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Double>", SequenceMethod.AverageNullableIntSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Int64>)->Double", SequenceMethod.AverageLongSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLongSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.AverageSingleSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingleSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.AverageDoubleSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDoubleSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.AverageDecimalSelector);
-            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimalSelector);
-            map.Add(@"Where(IEnumerable`1<T0>, Func`2<T0, Boolean>)->IEnumerable`1<T0>", SequenceMethod.Where);
-            map.Add(@"Where(IEnumerable`1<T0>, Func`3<T0, Int32, Boolean>)->IEnumerable`1<T0>", SequenceMethod.WhereOrdinal);
-            map.Add(@"Select(IEnumerable`1<T0>, Func`2<T0, T1>)->IEnumerable`1<T1>", SequenceMethod.Select);
-            map.Add(@"Select(IEnumerable`1<T0>, Func`3<T0, Int32, T1>)->IEnumerable`1<T1>", SequenceMethod.SelectOrdinal);
-            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`2<T0, IEnumerable`1<T1>>)->IEnumerable`1<T1>", SequenceMethod.SelectMany);
-            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`3<T0, Int32, IEnumerable`1<T1>>)->IEnumerable`1<T1>", SequenceMethod.SelectManyOrdinal);
-            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`3<T0, Int32, IEnumerable`1<T1>>, Func`3<T0, T1, T2>)->IEnumerable`1<T2>", SequenceMethod.SelectManyOrdinalResultSelector);
-            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`2<T0, IEnumerable`1<T1>>, Func`3<T0, T1, T2>)->IEnumerable`1<T2>", SequenceMethod.SelectManyResultSelector);
-            map.Add(@"Take(IEnumerable`1<T0>, Int32)->IEnumerable`1<T0>", SequenceMethod.Take);
-            map.Add(@"TakeWhile(IEnumerable`1<T0>, Func`2<T0, Boolean>)->IEnumerable`1<T0>", SequenceMethod.TakeWhile);
-            map.Add(@"TakeWhile(IEnumerable`1<T0>, Func`3<T0, Int32, Boolean>)->IEnumerable`1<T0>", SequenceMethod.TakeWhileOrdinal);
-            map.Add(@"Skip(IEnumerable`1<T0>, Int32)->IEnumerable`1<T0>", SequenceMethod.Skip);
-            map.Add(@"SkipWhile(IEnumerable`1<T0>, Func`2<T0, Boolean>)->IEnumerable`1<T0>", SequenceMethod.SkipWhile);
-            map.Add(@"SkipWhile(IEnumerable`1<T0>, Func`3<T0, Int32, Boolean>)->IEnumerable`1<T0>", SequenceMethod.SkipWhileOrdinal);
-            map.Add(@"Join(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, T1, T3>)->IEnumerable`1<T3>", SequenceMethod.Join);
-            map.Add(@"Join(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, T1, T3>, IEqualityComparer`1<T2>)->IEnumerable`1<T3>", SequenceMethod.JoinComparer);
-            map.Add(@"GroupJoin(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, IEnumerable`1<T1>, T3>)->IEnumerable`1<T3>", SequenceMethod.GroupJoin);
-            map.Add(@"GroupJoin(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, IEnumerable`1<T1>, T3>, IEqualityComparer`1<T2>)->IEnumerable`1<T3>", SequenceMethod.GroupJoinComparer);
-            map.Add(@"OrderBy(IEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderBy);
-            map.Add(@"OrderBy(IEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderByComparer);
-            map.Add(@"OrderByDescending(IEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderByDescending);
-            map.Add(@"OrderByDescending(IEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderByDescendingComparer);
-            map.Add(@"ThenBy(IOrderedEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenBy);
-            map.Add(@"ThenBy(IOrderedEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenByComparer);
-            map.Add(@"ThenByDescending(IOrderedEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenByDescending);
-            map.Add(@"ThenByDescending(IOrderedEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenByDescendingComparer);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>)->IEnumerable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupBy);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, IEqualityComparer`1<T1>)->IEnumerable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupByComparer);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>)->IEnumerable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelector);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, IEqualityComparer`1<T1>)->IEnumerable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelectorComparer);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`3<T1, IEnumerable`1<T0>, T2>)->IEnumerable`1<T2>", SequenceMethod.GroupByResultSelector);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, Func`3<T1, IEnumerable`1<T2>, T3>)->IEnumerable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelector);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`3<T1, IEnumerable`1<T0>, T2>, IEqualityComparer`1<T1>)->IEnumerable`1<T2>", SequenceMethod.GroupByResultSelectorComparer);
-            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, Func`3<T1, IEnumerable`1<T2>, T3>, IEqualityComparer`1<T1>)->IEnumerable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelectorComparer);
-            map.Add(@"Concat(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Concat);
-            map.Add(@"Distinct(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Distinct);
-            map.Add(@"Distinct(IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.DistinctComparer);
-            map.Add(@"Union(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Union);
-            map.Add(@"Union(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.UnionComparer);
-            map.Add(@"Intersect(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Intersect);
-            map.Add(@"Intersect(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.IntersectComparer);
-            map.Add(@"Except(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Except);
-            map.Add(@"Except(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.ExceptComparer);
-            map.Add(@"Reverse(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Reverse);
-            map.Add(@"SequenceEqual(IEnumerable`1<T0>, IEnumerable`1<T0>)->Boolean", SequenceMethod.SequenceEqual);
-            map.Add(@"SequenceEqual(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.SequenceEqualComparer);
-            map.Add(@"AsEnumerable(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.AsEnumerable);
-            map.Add(@"ToArray(IEnumerable`1<T0>)->TSource[]", SequenceMethod.NotSupported);
-            map.Add(@"ToList(IEnumerable`1<T0>)->List`1<T0>", SequenceMethod.ToList);
-            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>)->Dictionary`2<T1, T0>", SequenceMethod.NotSupported);
-            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>, IEqualityComparer`1<T1>)->Dictionary`2<T1, T0>", SequenceMethod.NotSupported);
-            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>)->Dictionary`2<T1, T2>", SequenceMethod.NotSupported);
-            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, IEqualityComparer`1<T1>)->Dictionary`2<T1, T2>", SequenceMethod.NotSupported);
-            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>)->ILookup`2<T1, T0>", SequenceMethod.NotSupported);
-            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>, IEqualityComparer`1<T1>)->ILookup`2<T1, T0>", SequenceMethod.NotSupported);
-            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>)->ILookup`2<T1, T2>", SequenceMethod.NotSupported);
-            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, IEqualityComparer`1<T1>)->ILookup`2<T1, T2>", SequenceMethod.NotSupported);
-            map.Add(@"DefaultIfEmpty(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.DefaultIfEmpty);
-            map.Add(@"DefaultIfEmpty(IEnumerable`1<T0>, T0)->IEnumerable`1<T0>", SequenceMethod.DefaultIfEmptyValue);
-            map.Add(@"OfType(IEnumerable)->IEnumerable`1<T0>", SequenceMethod.OfType);
-            map.Add(@"Cast(IEnumerable)->IEnumerable`1<T0>", SequenceMethod.Cast);
-            map.Add(@"Range(Int32, Int32)->IEnumerable`1<Int32>", SequenceMethod.NotSupported);
-            map.Add(@"Sum(IEnumerable`1<Int32>)->Int32", SequenceMethod.SumInt);
-            map.Add(@"Sum(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.SumNullableInt);
-            map.Add(@"Sum(IEnumerable`1<Int64>)->Int64", SequenceMethod.SumLong);
-            map.Add(@"Sum(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLong);
-            map.Add(@"Sum(IEnumerable`1<Single>)->Single", SequenceMethod.SumSingle);
-            map.Add(@"Sum(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingle);
-            map.Add(@"Sum(IEnumerable`1<Double>)->Double", SequenceMethod.SumDouble);
-            map.Add(@"Sum(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.SumNullableDouble);
-            map.Add(@"Sum(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.SumDecimal);
-            map.Add(@"Sum(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimal);
-            map.Add(@"Min(IEnumerable`1<Int32>)->Int32", SequenceMethod.MinInt);
-            map.Add(@"Min(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MinNullableInt);
-            map.Add(@"Min(IEnumerable`1<Int64>)->Int64", SequenceMethod.MinLong);
-            map.Add(@"Min(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MinNullableLong);
-            map.Add(@"Min(IEnumerable`1<Single>)->Single", SequenceMethod.MinSingle);
-            map.Add(@"Min(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MinNullableSingle);
-            map.Add(@"Min(IEnumerable`1<Double>)->Double", SequenceMethod.MinDouble);
-            map.Add(@"Min(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MinNullableDouble);
-            map.Add(@"Min(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.MinDecimal);
-            map.Add(@"Min(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MinNullableDecimal);
-            map.Add(@"Max(IEnumerable`1<Int32>)->Int32", SequenceMethod.MaxInt);
-            map.Add(@"Max(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MaxNullableInt);
-            map.Add(@"Max(IEnumerable`1<Int64>)->Int64", SequenceMethod.MaxLong);
-            map.Add(@"Max(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MaxNullableLong);
-            map.Add(@"Max(IEnumerable`1<Double>)->Double", SequenceMethod.MaxDouble);
-            map.Add(@"Max(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MaxNullableDouble);
-            map.Add(@"Max(IEnumerable`1<Single>)->Single", SequenceMethod.MaxSingle);
-            map.Add(@"Max(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MaxNullableSingle);
-            map.Add(@"Max(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.MaxDecimal);
-            map.Add(@"Max(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MaxNullableDecimal);
-            map.Add(@"Average(IEnumerable`1<Int32>)->Double", SequenceMethod.AverageInt);
-            map.Add(@"Average(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Double>", SequenceMethod.AverageNullableInt);
-            map.Add(@"Average(IEnumerable`1<Int64>)->Double", SequenceMethod.AverageLong);
-            map.Add(@"Average(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLong);
-            map.Add(@"Average(IEnumerable`1<Single>)->Single", SequenceMethod.AverageSingle);
-            map.Add(@"Average(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingle);
-            map.Add(@"Average(IEnumerable`1<Double>)->Double", SequenceMethod.AverageDouble);
-            map.Add(@"Average(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDouble);
-            map.Add(@"Average(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.AverageDecimal);
-            map.Add(@"Average(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimal);
-
-            s_methodMap = new Dictionary<MethodInfo, SequenceMethod>(EqualityComparer<MethodInfo>.Default);
-            s_inverseMap = new Dictionary<SequenceMethod, MethodInfo>(EqualityComparer<SequenceMethod>.Default);
-            foreach (MethodInfo method in GetAllLinqOperators())
-            {
-                SequenceMethod sequenceMethod;
-                string canonicalMethod = GetCanonicalMethodDescription(method);
-                if (map.TryGetValue(canonicalMethod, out sequenceMethod))
-                {
-                    s_methodMap.Add(method, sequenceMethod);
-                    s_inverseMap[sequenceMethod] = method;
-                }
-            }
-        }
-        #endregion
-
-        internal static bool TryIdentifySequenceMethod(MethodInfo method, out SequenceMethod sequenceMethod)
-        {
-            method = method.IsGenericMethod ? method.GetGenericMethodDefinition() :
-                method;
-            return s_methodMap.TryGetValue(method, out sequenceMethod);
-        }
-
-        internal static bool IsSequenceMethod(MethodInfo method, SequenceMethod sequenceMethod)
-        {
-            bool result;
-            SequenceMethod foundSequenceMethod;
-            if (ReflectionUtil.TryIdentifySequenceMethod(method, out foundSequenceMethod))
-            {
-                result = foundSequenceMethod == sequenceMethod;
-            }
-            else
-            {
-                result = false;
-            }
-
-            return result;
-        }
-
-#if false
-        internal static bool TryIdentifySequenceMethod(Expression expression, bool unwrapLambda, out SequenceMethod sequenceMethod)
-        {
-            if (expression.NodeType == ExpressionType.Lambda && unwrapLambda)
-            {
-                expression = ((LambdaExpression)expression).Body;
-            }
-
-            if (expression.NodeType == ExpressionType.Call)
-            {
-                MethodCallExpression methodCall = (MethodCallExpression)expression;
-                return ReflectionUtil.TryIdentifySequenceMethod(methodCall.Method, out sequenceMethod);
-            }
-
-            sequenceMethod = default(SequenceMethod);
-            return false;
-        }
-
-        internal static bool TryLookupMethod(SequenceMethod sequenceMethod, out MethodInfo method)
-        {
-            return s_inverseMap.TryGetValue(sequenceMethod, out method);
-        }
-#endif
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies")]
-        internal static string GetCanonicalMethodDescription(MethodInfo method)
-        {
-            Dictionary<Type, int> genericArgumentOrdinals = null;
-            if (method.IsGenericMethodDefinition)
-            {
-                genericArgumentOrdinals = method.GetGenericArguments()
-                    .Where(t => t.IsGenericParameter)
-                    .Select((t, i) => new KeyValuePair<Type, int>(t, i))
-                    .ToDictionary(r => r.Key, r => r.Value);
-            }
-
-            StringBuilder description = new StringBuilder();
-            description.Append(method.Name).Append("(");
-
-            bool first = true;
-            foreach (ParameterInfo parameter in method.GetParameters())
-            {
-                if (first) { first = false; }
-                else { description.Append(", "); }
-                AppendCanonicalTypeDescription(parameter.ParameterType, genericArgumentOrdinals, description);
-            }
-
-            description.Append(")");
-
-            if (null != method.ReturnType)
-            {
-                description.Append("->");
-                AppendCanonicalTypeDescription(method.ReturnType, genericArgumentOrdinals, description);
-            }
-
-            return description.ToString();
-        }
-
-        private static void AppendCanonicalTypeDescription(Type type, Dictionary<Type, int> genericArgumentOrdinals, StringBuilder description)
-        {
-            int ordinal;
-
-            if (null != genericArgumentOrdinals && genericArgumentOrdinals.TryGetValue(type, out ordinal))
-            {
-                description.Append("T").Append(ordinal.ToString(CultureInfo.InvariantCulture));
-                return;
-            }
-
-            description.Append(type.Name);
-
-            if (type.IsGenericType)
-            {
-                description.Append("<");
-                bool first = true;
-                foreach (Type genericArgument in type.GetGenericArguments())
-                {
-                    if (first) { first = false; }
-                    else { description.Append(", "); }
-                    AppendCanonicalTypeDescription(genericArgument, genericArgumentOrdinals, description);
-                }
-                description.Append(">");
-            }
-        }
-
-        internal static IEnumerable<MethodInfo> GetAllLinqOperators()
-        {
-            return typeof(Queryable).GetMethods(BindingFlags.Static | BindingFlags.Public).Concat(
-                typeof(Enumerable).GetMethods(BindingFlags.Static | BindingFlags.Public));
-        }
-    }
-
-    internal enum SequenceMethod
-    {
-        Where,
-        WhereOrdinal,
-        OfType,
-        Cast,
-        Select,
-        SelectOrdinal,
-        SelectMany,
-        SelectManyOrdinal,
-        SelectManyResultSelector,
-        SelectManyOrdinalResultSelector,
-        Join,
-        JoinComparer,
-        GroupJoin,
-        GroupJoinComparer,
-        OrderBy,
-        OrderByComparer,
-        OrderByDescending,
-        OrderByDescendingComparer,
-        ThenBy,
-        ThenByComparer,
-        ThenByDescending,
-        ThenByDescendingComparer,
-        Take,
-        TakeWhile,
-        TakeWhileOrdinal,
-        Skip,
-        SkipWhile,
-        SkipWhileOrdinal,
-        GroupBy,
-        GroupByComparer,
-        GroupByElementSelector,
-        GroupByElementSelectorComparer,
-        GroupByResultSelector,
-        GroupByResultSelectorComparer,
-        GroupByElementSelectorResultSelector,
-        GroupByElementSelectorResultSelectorComparer,
-        Distinct,
-        DistinctComparer,
-        Concat,
-        Union,
-        UnionComparer,
-        Intersect,
-        IntersectComparer,
-        Except,
-        ExceptComparer,
-        First,
-        FirstPredicate,
-        FirstOrDefault,
-        FirstOrDefaultPredicate,
-        Last,
-        LastPredicate,
-        LastOrDefault,
-        LastOrDefaultPredicate,
-        Single,
-        SinglePredicate,
-        SingleOrDefault,
-        SingleOrDefaultPredicate,
-        ElementAt,
-        ElementAtOrDefault,
-        DefaultIfEmpty,
-        DefaultIfEmptyValue,
-        Contains,
-        ContainsComparer,
-        Reverse,
-        Empty,
-        SequenceEqual,
-        SequenceEqualComparer,
-
-        Any,
-        AnyPredicate,
-        All,
-
-        Count,
-        CountPredicate,
-        LongCount,
-        LongCountPredicate,
-
-        Min,
-        MinSelector,
-        Max,
-        MaxSelector,
-
-        MinInt,
-        MinNullableInt,
-        MinLong,
-        MinNullableLong,
-        MinDouble,
-        MinNullableDouble,
-        MinDecimal,
-        MinNullableDecimal,
-        MinSingle,
-        MinNullableSingle,
-        MinIntSelector,
-        MinNullableIntSelector,
-        MinLongSelector,
-        MinNullableLongSelector,
-        MinDoubleSelector,
-        MinNullableDoubleSelector,
-        MinDecimalSelector,
-        MinNullableDecimalSelector,
-        MinSingleSelector,
-        MinNullableSingleSelector,
-
-        MaxInt,
-        MaxNullableInt,
-        MaxLong,
-        MaxNullableLong,
-        MaxDouble,
-        MaxNullableDouble,
-        MaxDecimal,
-        MaxNullableDecimal,
-        MaxSingle,
-        MaxNullableSingle,
-        MaxIntSelector,
-        MaxNullableIntSelector,
-        MaxLongSelector,
-        MaxNullableLongSelector,
-        MaxDoubleSelector,
-        MaxNullableDoubleSelector,
-        MaxDecimalSelector,
-        MaxNullableDecimalSelector,
-        MaxSingleSelector,
-        MaxNullableSingleSelector,
-
-        SumInt,
-        SumNullableInt,
-        SumLong,
-        SumNullableLong,
-        SumDouble,
-        SumNullableDouble,
-        SumDecimal,
-        SumNullableDecimal,
-        SumSingle,
-        SumNullableSingle,
-        SumIntSelector,
-        SumNullableIntSelector,
-        SumLongSelector,
-        SumNullableLongSelector,
-        SumDoubleSelector,
-        SumNullableDoubleSelector,
-        SumDecimalSelector,
-        SumNullableDecimalSelector,
-        SumSingleSelector,
-        SumNullableSingleSelector,
-
-        AverageInt,
-        AverageNullableInt,
-        AverageLong,
-        AverageNullableLong,
-        AverageDouble,
-        AverageNullableDouble,
-        AverageDecimal,
-        AverageNullableDecimal,
-        AverageSingle,
-        AverageNullableSingle,
-        AverageIntSelector,
-        AverageNullableIntSelector,
-        AverageLongSelector,
-        AverageNullableLongSelector,
-        AverageDoubleSelector,
-        AverageNullableDoubleSelector,
-        AverageDecimalSelector,
-        AverageNullableDecimalSelector,
-        AverageSingleSelector,
-        AverageNullableSingleSelector,
-
-        Aggregate,
-        AggregateSeed,
-        AggregateSeedSelector,
-
-        AsQueryable,
-        AsQueryableGeneric,
-        AsEnumerable,
-
-        ToList,
-
-        NotSupported,
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Collections.Generic;
+    using System.Globalization;
+    using System.Linq;
+    using System.Reflection;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    internal static class ReflectionUtil
+    {
+        #region Static information on sequence methods
+        private static readonly Dictionary<MethodInfo, SequenceMethod> s_methodMap;
+        private static readonly Dictionary<SequenceMethod, MethodInfo> s_inverseMap;
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")]
+        static ReflectionUtil()
+        {
+            Dictionary<String, SequenceMethod> map = new Dictionary<string, SequenceMethod>(EqualityComparer<string>.Default);
+
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Double>>)->Double", SequenceMethod.SumDoubleSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Double>>>)->Nullable`1<Double>", SequenceMethod.SumNullableDoubleSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Decimal>>)->Decimal", SequenceMethod.SumDecimalSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Decimal>>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimalSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Int32>>)->Double", SequenceMethod.AverageIntSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int32>>>)->Nullable`1<Double>", SequenceMethod.AverageNullableIntSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Single>>)->Single", SequenceMethod.AverageSingleSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Single>>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingleSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Int64>>)->Double", SequenceMethod.AverageLongSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int64>>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLongSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Double>>)->Double", SequenceMethod.AverageDoubleSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Double>>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDoubleSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Decimal>>)->Decimal", SequenceMethod.AverageDecimalSelector);
+            map.Add(@"Average(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Decimal>>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimalSelector);
+            map.Add(@"Aggregate(IQueryable`1<T0>, Expression`1<Func`3<T0, T0, T0>>)->T0", SequenceMethod.Aggregate);
+            map.Add(@"Aggregate(IQueryable`1<T0>, T1, Expression`1<Func`3<T1, T0, T1>>)->T1", SequenceMethod.AggregateSeed);
+            map.Add(@"Aggregate(IQueryable`1<T0>, T1, Expression`1<Func`3<T1, T0, T1>>, Expression`1<Func`2<T1, T2>>)->T2", SequenceMethod.AggregateSeedSelector);
+            map.Add(@"AsQueryable(IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.AsQueryableGeneric);
+            map.Add(@"Where(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->IQueryable`1<T0>", SequenceMethod.Where);
+            map.Add(@"Where(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, Boolean>>)->IQueryable`1<T0>", SequenceMethod.WhereOrdinal);
+            map.Add(@"OfType(IQueryable)->IQueryable`1<T0>", SequenceMethod.OfType);
+            map.Add(@"Cast(IQueryable)->IQueryable`1<T0>", SequenceMethod.Cast);
+            map.Add(@"Select(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IQueryable`1<T1>", SequenceMethod.Select);
+            map.Add(@"Select(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, T1>>)->IQueryable`1<T1>", SequenceMethod.SelectOrdinal);
+            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`2<T0, IEnumerable`1<T1>>>)->IQueryable`1<T1>", SequenceMethod.SelectMany);
+            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, IEnumerable`1<T1>>>)->IQueryable`1<T1>", SequenceMethod.SelectManyOrdinal);
+            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, IEnumerable`1<T1>>>, Expression`1<Func`3<T0, T1, T2>>)->IQueryable`1<T2>", SequenceMethod.SelectManyOrdinalResultSelector);
+            map.Add(@"SelectMany(IQueryable`1<T0>, Expression`1<Func`2<T0, IEnumerable`1<T1>>>, Expression`1<Func`3<T0, T1, T2>>)->IQueryable`1<T2>", SequenceMethod.SelectManyResultSelector);
+            map.Add(@"Join(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, T1, T3>>)->IQueryable`1<T3>", SequenceMethod.Join);
+            map.Add(@"Join(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, T1, T3>>, IEqualityComparer`1<T2>)->IQueryable`1<T3>", SequenceMethod.JoinComparer);
+            map.Add(@"GroupJoin(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, IEnumerable`1<T1>, T3>>)->IQueryable`1<T3>", SequenceMethod.GroupJoin);
+            map.Add(@"GroupJoin(IQueryable`1<T0>, IEnumerable`1<T1>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`2<T1, T2>>, Expression`1<Func`3<T0, IEnumerable`1<T1>, T3>>, IEqualityComparer`1<T2>)->IQueryable`1<T3>", SequenceMethod.GroupJoinComparer);
+            map.Add(@"OrderBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderBy);
+            map.Add(@"OrderBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderByComparer);
+            map.Add(@"OrderByDescending(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderByDescending);
+            map.Add(@"OrderByDescending(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.OrderByDescendingComparer);
+            map.Add(@"ThenBy(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenBy);
+            map.Add(@"ThenBy(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenByComparer);
+            map.Add(@"ThenByDescending(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenByDescending);
+            map.Add(@"ThenByDescending(IOrderedQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IComparer`1<T1>)->IOrderedQueryable`1<T0>", SequenceMethod.ThenByDescendingComparer);
+            map.Add(@"Take(IQueryable`1<T0>, Int32)->IQueryable`1<T0>", SequenceMethod.Take);
+            map.Add(@"TakeWhile(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->IQueryable`1<T0>", SequenceMethod.TakeWhile);
+            map.Add(@"TakeWhile(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, Boolean>>)->IQueryable`1<T0>", SequenceMethod.TakeWhileOrdinal);
+            map.Add(@"Skip(IQueryable`1<T0>, Int32)->IQueryable`1<T0>", SequenceMethod.Skip);
+            map.Add(@"SkipWhile(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->IQueryable`1<T0>", SequenceMethod.SkipWhile);
+            map.Add(@"SkipWhile(IQueryable`1<T0>, Expression`1<Func`3<T0, Int32, Boolean>>)->IQueryable`1<T0>", SequenceMethod.SkipWhileOrdinal);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->IQueryable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupBy);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>)->IQueryable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelector);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, IEqualityComparer`1<T1>)->IQueryable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupByComparer);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>, IEqualityComparer`1<T1>)->IQueryable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelectorComparer);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`3<T1, IEnumerable`1<T2>, T3>>)->IQueryable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelector);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`3<T1, IEnumerable`1<T0>, T2>>)->IQueryable`1<T2>", SequenceMethod.GroupByResultSelector);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`3<T1, IEnumerable`1<T0>, T2>>, IEqualityComparer`1<T1>)->IQueryable`1<T2>", SequenceMethod.GroupByResultSelectorComparer);
+            map.Add(@"GroupBy(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>, Expression`1<Func`2<T0, T2>>, Expression`1<Func`3<T1, IEnumerable`1<T2>, T3>>, IEqualityComparer`1<T1>)->IQueryable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelectorComparer);
+            map.Add(@"Distinct(IQueryable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Distinct);
+            map.Add(@"Distinct(IQueryable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.DistinctComparer);
+            map.Add(@"Concat(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Concat);
+            map.Add(@"Union(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Union);
+            map.Add(@"Union(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.UnionComparer);
+            map.Add(@"Intersect(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Intersect);
+            map.Add(@"Intersect(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.IntersectComparer);
+            map.Add(@"Except(IQueryable`1<T0>, IEnumerable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Except);
+            map.Add(@"Except(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IQueryable`1<T0>", SequenceMethod.ExceptComparer);
+            map.Add(@"First(IQueryable`1<T0>)->T0", SequenceMethod.First);
+            map.Add(@"First(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.FirstPredicate);
+            map.Add(@"FirstOrDefault(IQueryable`1<T0>)->T0", SequenceMethod.FirstOrDefault);
+            map.Add(@"FirstOrDefault(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.FirstOrDefaultPredicate);
+            map.Add(@"Last(IQueryable`1<T0>)->T0", SequenceMethod.Last);
+            map.Add(@"Last(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.LastPredicate);
+            map.Add(@"LastOrDefault(IQueryable`1<T0>)->T0", SequenceMethod.LastOrDefault);
+            map.Add(@"LastOrDefault(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.LastOrDefaultPredicate);
+            map.Add(@"Single(IQueryable`1<T0>)->T0", SequenceMethod.Single);
+            map.Add(@"Single(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.SinglePredicate);
+            map.Add(@"SingleOrDefault(IQueryable`1<T0>)->T0", SequenceMethod.SingleOrDefault);
+            map.Add(@"SingleOrDefault(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->T0", SequenceMethod.SingleOrDefaultPredicate);
+            map.Add(@"ElementAt(IQueryable`1<T0>, Int32)->T0", SequenceMethod.ElementAt);
+            map.Add(@"ElementAtOrDefault(IQueryable`1<T0>, Int32)->T0", SequenceMethod.ElementAtOrDefault);
+            map.Add(@"DefaultIfEmpty(IQueryable`1<T0>)->IQueryable`1<T0>", SequenceMethod.DefaultIfEmpty);
+            map.Add(@"DefaultIfEmpty(IQueryable`1<T0>, T0)->IQueryable`1<T0>", SequenceMethod.DefaultIfEmptyValue);
+            map.Add(@"Contains(IQueryable`1<T0>, T0)->Boolean", SequenceMethod.Contains);
+            map.Add(@"Contains(IQueryable`1<T0>, T0, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.ContainsComparer);
+            map.Add(@"Reverse(IQueryable`1<T0>)->IQueryable`1<T0>", SequenceMethod.Reverse);
+            map.Add(@"SequenceEqual(IQueryable`1<T0>, IEnumerable`1<T0>)->Boolean", SequenceMethod.SequenceEqual);
+            map.Add(@"SequenceEqual(IQueryable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.SequenceEqualComparer);
+            map.Add(@"Any(IQueryable`1<T0>)->Boolean", SequenceMethod.Any);
+            map.Add(@"Any(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Boolean", SequenceMethod.AnyPredicate);
+            map.Add(@"All(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Boolean", SequenceMethod.All);
+            map.Add(@"Count(IQueryable`1<T0>)->Int32", SequenceMethod.Count);
+            map.Add(@"Count(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Int32", SequenceMethod.CountPredicate);
+            map.Add(@"LongCount(IQueryable`1<T0>)->Int64", SequenceMethod.LongCount);
+            map.Add(@"LongCount(IQueryable`1<T0>, Expression`1<Func`2<T0, Boolean>>)->Int64", SequenceMethod.LongCountPredicate);
+            map.Add(@"Min(IQueryable`1<T0>)->T0", SequenceMethod.Min);
+            map.Add(@"Min(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->T1", SequenceMethod.MinSelector);
+            map.Add(@"Max(IQueryable`1<T0>)->T0", SequenceMethod.Max);
+            map.Add(@"Max(IQueryable`1<T0>, Expression`1<Func`2<T0, T1>>)->T1", SequenceMethod.MaxSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Int32>>)->Int32", SequenceMethod.SumIntSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int32>>>)->Nullable`1<Int32>", SequenceMethod.SumNullableIntSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Int64>>)->Int64", SequenceMethod.SumLongSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Int64>>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLongSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Single>>)->Single", SequenceMethod.SumSingleSelector);
+            map.Add(@"Sum(IQueryable`1<T0>, Expression`1<Func`2<T0, Nullable`1<Single>>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingleSelector);
+            map.Add(@"AsQueryable(IEnumerable)->IQueryable", SequenceMethod.AsQueryable);
+            map.Add(@"Sum(IQueryable`1<Int32>)->Int32", SequenceMethod.SumInt);
+            map.Add(@"Sum(IQueryable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.SumNullableInt);
+            map.Add(@"Sum(IQueryable`1<Int64>)->Int64", SequenceMethod.SumLong);
+            map.Add(@"Sum(IQueryable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLong);
+            map.Add(@"Sum(IQueryable`1<Single>)->Single", SequenceMethod.SumSingle);
+            map.Add(@"Sum(IQueryable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingle);
+            map.Add(@"Sum(IQueryable`1<Double>)->Double", SequenceMethod.SumDouble);
+            map.Add(@"Sum(IQueryable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.SumNullableDouble);
+            map.Add(@"Sum(IQueryable`1<Decimal>)->Decimal", SequenceMethod.SumDecimal);
+            map.Add(@"Sum(IQueryable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimal);
+            map.Add(@"Average(IQueryable`1<Int32>)->Double", SequenceMethod.AverageInt);
+            map.Add(@"Average(IQueryable`1<Nullable`1<Int32>>)->Nullable`1<Double>", SequenceMethod.AverageNullableInt);
+            map.Add(@"Average(IQueryable`1<Int64>)->Double", SequenceMethod.AverageLong);
+            map.Add(@"Average(IQueryable`1<Nullable`1<Int64>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLong);
+            map.Add(@"Average(IQueryable`1<Single>)->Single", SequenceMethod.AverageSingle);
+            map.Add(@"Average(IQueryable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingle);
+            map.Add(@"Average(IQueryable`1<Double>)->Double", SequenceMethod.AverageDouble);
+            map.Add(@"Average(IQueryable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDouble);
+            map.Add(@"Average(IQueryable`1<Decimal>)->Decimal", SequenceMethod.AverageDecimal);
+            map.Add(@"Average(IQueryable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimal);
+            map.Add(@"First(IEnumerable`1<T0>)->T0", SequenceMethod.First);
+            map.Add(@"First(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.FirstPredicate);
+            map.Add(@"FirstOrDefault(IEnumerable`1<T0>)->T0", SequenceMethod.FirstOrDefault);
+            map.Add(@"FirstOrDefault(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.FirstOrDefaultPredicate);
+            map.Add(@"Last(IEnumerable`1<T0>)->T0", SequenceMethod.Last);
+            map.Add(@"Last(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.LastPredicate);
+            map.Add(@"LastOrDefault(IEnumerable`1<T0>)->T0", SequenceMethod.LastOrDefault);
+            map.Add(@"LastOrDefault(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.LastOrDefaultPredicate);
+            map.Add(@"Single(IEnumerable`1<T0>)->T0", SequenceMethod.Single);
+            map.Add(@"Single(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.SinglePredicate);
+            map.Add(@"SingleOrDefault(IEnumerable`1<T0>)->T0", SequenceMethod.SingleOrDefault);
+            map.Add(@"SingleOrDefault(IEnumerable`1<T0>, Func`2<T0, Boolean>)->T0", SequenceMethod.SingleOrDefaultPredicate);
+            map.Add(@"ElementAt(IEnumerable`1<T0>, Int32)->T0", SequenceMethod.ElementAt);
+            map.Add(@"ElementAtOrDefault(IEnumerable`1<T0>, Int32)->T0", SequenceMethod.ElementAtOrDefault);
+            map.Add(@"Repeat(T0, Int32)->IEnumerable`1<T0>", SequenceMethod.NotSupported);
+            map.Add(@"Empty()->IEnumerable`1<T0>", SequenceMethod.Empty);
+            map.Add(@"Any(IEnumerable`1<T0>)->Boolean", SequenceMethod.Any);
+            map.Add(@"Any(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Boolean", SequenceMethod.AnyPredicate);
+            map.Add(@"All(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Boolean", SequenceMethod.All);
+            map.Add(@"Count(IEnumerable`1<T0>)->Int32", SequenceMethod.Count);
+            map.Add(@"Count(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Int32", SequenceMethod.CountPredicate);
+            map.Add(@"LongCount(IEnumerable`1<T0>)->Int64", SequenceMethod.LongCount);
+            map.Add(@"LongCount(IEnumerable`1<T0>, Func`2<T0, Boolean>)->Int64", SequenceMethod.LongCountPredicate);
+            map.Add(@"Contains(IEnumerable`1<T0>, T0)->Boolean", SequenceMethod.Contains);
+            map.Add(@"Contains(IEnumerable`1<T0>, T0, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.ContainsComparer);
+            map.Add(@"Aggregate(IEnumerable`1<T0>, Func`3<T0, T0, T0>)->T0", SequenceMethod.Aggregate);
+            map.Add(@"Aggregate(IEnumerable`1<T0>, T1, Func`3<T1, T0, T1>)->T1", SequenceMethod.AggregateSeed);
+            map.Add(@"Aggregate(IEnumerable`1<T0>, T1, Func`3<T1, T0, T1>, Func`2<T1, T2>)->T2", SequenceMethod.AggregateSeedSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Int32>)->Int32", SequenceMethod.SumIntSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.SumNullableIntSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Int64>)->Int64", SequenceMethod.SumLongSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLongSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.SumSingleSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingleSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.SumDoubleSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.SumNullableDoubleSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.SumDecimalSelector);
+            map.Add(@"Sum(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimalSelector);
+            map.Add(@"Min(IEnumerable`1<T0>)->T0", SequenceMethod.Min);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Int32>)->Int32", SequenceMethod.MinIntSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MinNullableIntSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Int64>)->Int64", SequenceMethod.MinLongSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MinNullableLongSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.MinSingleSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MinNullableSingleSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.MinDoubleSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MinNullableDoubleSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.MinDecimalSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MinNullableDecimalSelector);
+            map.Add(@"Min(IEnumerable`1<T0>, Func`2<T0, T1>)->T1", SequenceMethod.MinSelector);
+            map.Add(@"Max(IEnumerable`1<T0>)->T0", SequenceMethod.Max);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Int32>)->Int32", SequenceMethod.MaxIntSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MaxNullableIntSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Int64>)->Int64", SequenceMethod.MaxLongSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MaxNullableLongSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.MaxSingleSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MaxNullableSingleSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.MaxDoubleSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MaxNullableDoubleSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.MaxDecimalSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MaxNullableDecimalSelector);
+            map.Add(@"Max(IEnumerable`1<T0>, Func`2<T0, T1>)->T1", SequenceMethod.MaxSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Int32>)->Double", SequenceMethod.AverageIntSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int32>>)->Nullable`1<Double>", SequenceMethod.AverageNullableIntSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Int64>)->Double", SequenceMethod.AverageLongSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Int64>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLongSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Single>)->Single", SequenceMethod.AverageSingleSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingleSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Double>)->Double", SequenceMethod.AverageDoubleSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDoubleSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Decimal>)->Decimal", SequenceMethod.AverageDecimalSelector);
+            map.Add(@"Average(IEnumerable`1<T0>, Func`2<T0, Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimalSelector);
+            map.Add(@"Where(IEnumerable`1<T0>, Func`2<T0, Boolean>)->IEnumerable`1<T0>", SequenceMethod.Where);
+            map.Add(@"Where(IEnumerable`1<T0>, Func`3<T0, Int32, Boolean>)->IEnumerable`1<T0>", SequenceMethod.WhereOrdinal);
+            map.Add(@"Select(IEnumerable`1<T0>, Func`2<T0, T1>)->IEnumerable`1<T1>", SequenceMethod.Select);
+            map.Add(@"Select(IEnumerable`1<T0>, Func`3<T0, Int32, T1>)->IEnumerable`1<T1>", SequenceMethod.SelectOrdinal);
+            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`2<T0, IEnumerable`1<T1>>)->IEnumerable`1<T1>", SequenceMethod.SelectMany);
+            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`3<T0, Int32, IEnumerable`1<T1>>)->IEnumerable`1<T1>", SequenceMethod.SelectManyOrdinal);
+            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`3<T0, Int32, IEnumerable`1<T1>>, Func`3<T0, T1, T2>)->IEnumerable`1<T2>", SequenceMethod.SelectManyOrdinalResultSelector);
+            map.Add(@"SelectMany(IEnumerable`1<T0>, Func`2<T0, IEnumerable`1<T1>>, Func`3<T0, T1, T2>)->IEnumerable`1<T2>", SequenceMethod.SelectManyResultSelector);
+            map.Add(@"Take(IEnumerable`1<T0>, Int32)->IEnumerable`1<T0>", SequenceMethod.Take);
+            map.Add(@"TakeWhile(IEnumerable`1<T0>, Func`2<T0, Boolean>)->IEnumerable`1<T0>", SequenceMethod.TakeWhile);
+            map.Add(@"TakeWhile(IEnumerable`1<T0>, Func`3<T0, Int32, Boolean>)->IEnumerable`1<T0>", SequenceMethod.TakeWhileOrdinal);
+            map.Add(@"Skip(IEnumerable`1<T0>, Int32)->IEnumerable`1<T0>", SequenceMethod.Skip);
+            map.Add(@"SkipWhile(IEnumerable`1<T0>, Func`2<T0, Boolean>)->IEnumerable`1<T0>", SequenceMethod.SkipWhile);
+            map.Add(@"SkipWhile(IEnumerable`1<T0>, Func`3<T0, Int32, Boolean>)->IEnumerable`1<T0>", SequenceMethod.SkipWhileOrdinal);
+            map.Add(@"Join(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, T1, T3>)->IEnumerable`1<T3>", SequenceMethod.Join);
+            map.Add(@"Join(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, T1, T3>, IEqualityComparer`1<T2>)->IEnumerable`1<T3>", SequenceMethod.JoinComparer);
+            map.Add(@"GroupJoin(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, IEnumerable`1<T1>, T3>)->IEnumerable`1<T3>", SequenceMethod.GroupJoin);
+            map.Add(@"GroupJoin(IEnumerable`1<T0>, IEnumerable`1<T1>, Func`2<T0, T2>, Func`2<T1, T2>, Func`3<T0, IEnumerable`1<T1>, T3>, IEqualityComparer`1<T2>)->IEnumerable`1<T3>", SequenceMethod.GroupJoinComparer);
+            map.Add(@"OrderBy(IEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderBy);
+            map.Add(@"OrderBy(IEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderByComparer);
+            map.Add(@"OrderByDescending(IEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderByDescending);
+            map.Add(@"OrderByDescending(IEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.OrderByDescendingComparer);
+            map.Add(@"ThenBy(IOrderedEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenBy);
+            map.Add(@"ThenBy(IOrderedEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenByComparer);
+            map.Add(@"ThenByDescending(IOrderedEnumerable`1<T0>, Func`2<T0, T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenByDescending);
+            map.Add(@"ThenByDescending(IOrderedEnumerable`1<T0>, Func`2<T0, T1>, IComparer`1<T1>)->IOrderedEnumerable`1<T0>", SequenceMethod.ThenByDescendingComparer);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>)->IEnumerable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupBy);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, IEqualityComparer`1<T1>)->IEnumerable`1<IGrouping`2<T1, T0>>", SequenceMethod.GroupByComparer);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>)->IEnumerable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelector);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, IEqualityComparer`1<T1>)->IEnumerable`1<IGrouping`2<T1, T2>>", SequenceMethod.GroupByElementSelectorComparer);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`3<T1, IEnumerable`1<T0>, T2>)->IEnumerable`1<T2>", SequenceMethod.GroupByResultSelector);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, Func`3<T1, IEnumerable`1<T2>, T3>)->IEnumerable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelector);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`3<T1, IEnumerable`1<T0>, T2>, IEqualityComparer`1<T1>)->IEnumerable`1<T2>", SequenceMethod.GroupByResultSelectorComparer);
+            map.Add(@"GroupBy(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, Func`3<T1, IEnumerable`1<T2>, T3>, IEqualityComparer`1<T1>)->IEnumerable`1<T3>", SequenceMethod.GroupByElementSelectorResultSelectorComparer);
+            map.Add(@"Concat(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Concat);
+            map.Add(@"Distinct(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Distinct);
+            map.Add(@"Distinct(IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.DistinctComparer);
+            map.Add(@"Union(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Union);
+            map.Add(@"Union(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.UnionComparer);
+            map.Add(@"Intersect(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Intersect);
+            map.Add(@"Intersect(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.IntersectComparer);
+            map.Add(@"Except(IEnumerable`1<T0>, IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Except);
+            map.Add(@"Except(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->IEnumerable`1<T0>", SequenceMethod.ExceptComparer);
+            map.Add(@"Reverse(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.Reverse);
+            map.Add(@"SequenceEqual(IEnumerable`1<T0>, IEnumerable`1<T0>)->Boolean", SequenceMethod.SequenceEqual);
+            map.Add(@"SequenceEqual(IEnumerable`1<T0>, IEnumerable`1<T0>, IEqualityComparer`1<T0>)->Boolean", SequenceMethod.SequenceEqualComparer);
+            map.Add(@"AsEnumerable(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.AsEnumerable);
+            map.Add(@"ToArray(IEnumerable`1<T0>)->TSource[]", SequenceMethod.NotSupported);
+            map.Add(@"ToList(IEnumerable`1<T0>)->List`1<T0>", SequenceMethod.ToList);
+            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>)->Dictionary`2<T1, T0>", SequenceMethod.NotSupported);
+            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>, IEqualityComparer`1<T1>)->Dictionary`2<T1, T0>", SequenceMethod.NotSupported);
+            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>)->Dictionary`2<T1, T2>", SequenceMethod.NotSupported);
+            map.Add(@"ToDictionary(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, IEqualityComparer`1<T1>)->Dictionary`2<T1, T2>", SequenceMethod.NotSupported);
+            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>)->ILookup`2<T1, T0>", SequenceMethod.NotSupported);
+            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>, IEqualityComparer`1<T1>)->ILookup`2<T1, T0>", SequenceMethod.NotSupported);
+            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>)->ILookup`2<T1, T2>", SequenceMethod.NotSupported);
+            map.Add(@"ToLookup(IEnumerable`1<T0>, Func`2<T0, T1>, Func`2<T0, T2>, IEqualityComparer`1<T1>)->ILookup`2<T1, T2>", SequenceMethod.NotSupported);
+            map.Add(@"DefaultIfEmpty(IEnumerable`1<T0>)->IEnumerable`1<T0>", SequenceMethod.DefaultIfEmpty);
+            map.Add(@"DefaultIfEmpty(IEnumerable`1<T0>, T0)->IEnumerable`1<T0>", SequenceMethod.DefaultIfEmptyValue);
+            map.Add(@"OfType(IEnumerable)->IEnumerable`1<T0>", SequenceMethod.OfType);
+            map.Add(@"Cast(IEnumerable)->IEnumerable`1<T0>", SequenceMethod.Cast);
+            map.Add(@"Range(Int32, Int32)->IEnumerable`1<Int32>", SequenceMethod.NotSupported);
+            map.Add(@"Sum(IEnumerable`1<Int32>)->Int32", SequenceMethod.SumInt);
+            map.Add(@"Sum(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.SumNullableInt);
+            map.Add(@"Sum(IEnumerable`1<Int64>)->Int64", SequenceMethod.SumLong);
+            map.Add(@"Sum(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.SumNullableLong);
+            map.Add(@"Sum(IEnumerable`1<Single>)->Single", SequenceMethod.SumSingle);
+            map.Add(@"Sum(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.SumNullableSingle);
+            map.Add(@"Sum(IEnumerable`1<Double>)->Double", SequenceMethod.SumDouble);
+            map.Add(@"Sum(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.SumNullableDouble);
+            map.Add(@"Sum(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.SumDecimal);
+            map.Add(@"Sum(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.SumNullableDecimal);
+            map.Add(@"Min(IEnumerable`1<Int32>)->Int32", SequenceMethod.MinInt);
+            map.Add(@"Min(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MinNullableInt);
+            map.Add(@"Min(IEnumerable`1<Int64>)->Int64", SequenceMethod.MinLong);
+            map.Add(@"Min(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MinNullableLong);
+            map.Add(@"Min(IEnumerable`1<Single>)->Single", SequenceMethod.MinSingle);
+            map.Add(@"Min(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MinNullableSingle);
+            map.Add(@"Min(IEnumerable`1<Double>)->Double", SequenceMethod.MinDouble);
+            map.Add(@"Min(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MinNullableDouble);
+            map.Add(@"Min(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.MinDecimal);
+            map.Add(@"Min(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MinNullableDecimal);
+            map.Add(@"Max(IEnumerable`1<Int32>)->Int32", SequenceMethod.MaxInt);
+            map.Add(@"Max(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Int32>", SequenceMethod.MaxNullableInt);
+            map.Add(@"Max(IEnumerable`1<Int64>)->Int64", SequenceMethod.MaxLong);
+            map.Add(@"Max(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Int64>", SequenceMethod.MaxNullableLong);
+            map.Add(@"Max(IEnumerable`1<Double>)->Double", SequenceMethod.MaxDouble);
+            map.Add(@"Max(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.MaxNullableDouble);
+            map.Add(@"Max(IEnumerable`1<Single>)->Single", SequenceMethod.MaxSingle);
+            map.Add(@"Max(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.MaxNullableSingle);
+            map.Add(@"Max(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.MaxDecimal);
+            map.Add(@"Max(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.MaxNullableDecimal);
+            map.Add(@"Average(IEnumerable`1<Int32>)->Double", SequenceMethod.AverageInt);
+            map.Add(@"Average(IEnumerable`1<Nullable`1<Int32>>)->Nullable`1<Double>", SequenceMethod.AverageNullableInt);
+            map.Add(@"Average(IEnumerable`1<Int64>)->Double", SequenceMethod.AverageLong);
+            map.Add(@"Average(IEnumerable`1<Nullable`1<Int64>>)->Nullable`1<Double>", SequenceMethod.AverageNullableLong);
+            map.Add(@"Average(IEnumerable`1<Single>)->Single", SequenceMethod.AverageSingle);
+            map.Add(@"Average(IEnumerable`1<Nullable`1<Single>>)->Nullable`1<Single>", SequenceMethod.AverageNullableSingle);
+            map.Add(@"Average(IEnumerable`1<Double>)->Double", SequenceMethod.AverageDouble);
+            map.Add(@"Average(IEnumerable`1<Nullable`1<Double>>)->Nullable`1<Double>", SequenceMethod.AverageNullableDouble);
+            map.Add(@"Average(IEnumerable`1<Decimal>)->Decimal", SequenceMethod.AverageDecimal);
+            map.Add(@"Average(IEnumerable`1<Nullable`1<Decimal>>)->Nullable`1<Decimal>", SequenceMethod.AverageNullableDecimal);
+
+            s_methodMap = new Dictionary<MethodInfo, SequenceMethod>(EqualityComparer<MethodInfo>.Default);
+            s_inverseMap = new Dictionary<SequenceMethod, MethodInfo>(EqualityComparer<SequenceMethod>.Default);
+            foreach (MethodInfo method in GetAllLinqOperators())
+            {
+                SequenceMethod sequenceMethod;
+                string canonicalMethod = GetCanonicalMethodDescription(method);
+                if (map.TryGetValue(canonicalMethod, out sequenceMethod))
+                {
+                    s_methodMap.Add(method, sequenceMethod);
+                    s_inverseMap[sequenceMethod] = method;
+                }
+            }
+        }
+        #endregion
+
+        internal static bool TryIdentifySequenceMethod(MethodInfo method, out SequenceMethod sequenceMethod)
+        {
+            method = method.IsGenericMethod ? method.GetGenericMethodDefinition() :
+                method;
+            return s_methodMap.TryGetValue(method, out sequenceMethod);
+        }
+
+        internal static bool IsSequenceMethod(MethodInfo method, SequenceMethod sequenceMethod)
+        {
+            bool result;
+            SequenceMethod foundSequenceMethod;
+            if (ReflectionUtil.TryIdentifySequenceMethod(method, out foundSequenceMethod))
+            {
+                result = foundSequenceMethod == sequenceMethod;
+            }
+            else
+            {
+                result = false;
+            }
+
+            return result;
+        }
+
+#if false
+        internal static bool TryIdentifySequenceMethod(Expression expression, bool unwrapLambda, out SequenceMethod sequenceMethod)
+        {
+            if (expression.NodeType == ExpressionType.Lambda && unwrapLambda)
+            {
+                expression = ((LambdaExpression)expression).Body;
+            }
+
+            if (expression.NodeType == ExpressionType.Call)
+            {
+                MethodCallExpression methodCall = (MethodCallExpression)expression;
+                return ReflectionUtil.TryIdentifySequenceMethod(methodCall.Method, out sequenceMethod);
+            }
+
+            sequenceMethod = default(SequenceMethod);
+            return false;
+        }
+
+        internal static bool TryLookupMethod(SequenceMethod sequenceMethod, out MethodInfo method)
+        {
+            return s_inverseMap.TryGetValue(sequenceMethod, out method);
+        }
+#endif
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.MSInternal", "CA908:AvoidTypesThatRequireJitCompilationInPrecompiledAssemblies")]
+        internal static string GetCanonicalMethodDescription(MethodInfo method)
+        {
+            Dictionary<Type, int> genericArgumentOrdinals = null;
+            if (method.IsGenericMethodDefinition)
+            {
+                genericArgumentOrdinals = method.GetGenericArguments()
+                    .Where(t => t.IsGenericParameter)
+                    .Select((t, i) => new KeyValuePair<Type, int>(t, i))
+                    .ToDictionary(r => r.Key, r => r.Value);
+            }
+
+            StringBuilder description = new StringBuilder();
+            description.Append(method.Name).Append("(");
+
+            bool first = true;
+            foreach (ParameterInfo parameter in method.GetParameters())
+            {
+                if (first) { first = false; }
+                else { description.Append(", "); }
+                AppendCanonicalTypeDescription(parameter.ParameterType, genericArgumentOrdinals, description);
+            }
+
+            description.Append(")");
+
+            if (null != method.ReturnType)
+            {
+                description.Append("->");
+                AppendCanonicalTypeDescription(method.ReturnType, genericArgumentOrdinals, description);
+            }
+
+            return description.ToString();
+        }
+
+        private static void AppendCanonicalTypeDescription(Type type, Dictionary<Type, int> genericArgumentOrdinals, StringBuilder description)
+        {
+            int ordinal;
+
+            if (null != genericArgumentOrdinals && genericArgumentOrdinals.TryGetValue(type, out ordinal))
+            {
+                description.Append("T").Append(ordinal.ToString(CultureInfo.InvariantCulture));
+                return;
+            }
+
+            description.Append(type.Name);
+
+            if (type.IsGenericType)
+            {
+                description.Append("<");
+                bool first = true;
+                foreach (Type genericArgument in type.GetGenericArguments())
+                {
+                    if (first) { first = false; }
+                    else { description.Append(", "); }
+                    AppendCanonicalTypeDescription(genericArgument, genericArgumentOrdinals, description);
+                }
+                description.Append(">");
+            }
+        }
+
+        internal static IEnumerable<MethodInfo> GetAllLinqOperators()
+        {
+            return typeof(Queryable).GetMethods(BindingFlags.Static | BindingFlags.Public).Concat(
+                typeof(Enumerable).GetMethods(BindingFlags.Static | BindingFlags.Public));
+        }
+    }
+
+    internal enum SequenceMethod
+    {
+        Where,
+        WhereOrdinal,
+        OfType,
+        Cast,
+        Select,
+        SelectOrdinal,
+        SelectMany,
+        SelectManyOrdinal,
+        SelectManyResultSelector,
+        SelectManyOrdinalResultSelector,
+        Join,
+        JoinComparer,
+        GroupJoin,
+        GroupJoinComparer,
+        OrderBy,
+        OrderByComparer,
+        OrderByDescending,
+        OrderByDescendingComparer,
+        ThenBy,
+        ThenByComparer,
+        ThenByDescending,
+        ThenByDescendingComparer,
+        Take,
+        TakeWhile,
+        TakeWhileOrdinal,
+        Skip,
+        SkipWhile,
+        SkipWhileOrdinal,
+        GroupBy,
+        GroupByComparer,
+        GroupByElementSelector,
+        GroupByElementSelectorComparer,
+        GroupByResultSelector,
+        GroupByResultSelectorComparer,
+        GroupByElementSelectorResultSelector,
+        GroupByElementSelectorResultSelectorComparer,
+        Distinct,
+        DistinctComparer,
+        Concat,
+        Union,
+        UnionComparer,
+        Intersect,
+        IntersectComparer,
+        Except,
+        ExceptComparer,
+        First,
+        FirstPredicate,
+        FirstOrDefault,
+        FirstOrDefaultPredicate,
+        Last,
+        LastPredicate,
+        LastOrDefault,
+        LastOrDefaultPredicate,
+        Single,
+        SinglePredicate,
+        SingleOrDefault,
+        SingleOrDefaultPredicate,
+        ElementAt,
+        ElementAtOrDefault,
+        DefaultIfEmpty,
+        DefaultIfEmptyValue,
+        Contains,
+        ContainsComparer,
+        Reverse,
+        Empty,
+        SequenceEqual,
+        SequenceEqualComparer,
+
+        Any,
+        AnyPredicate,
+        All,
+
+        Count,
+        CountPredicate,
+        LongCount,
+        LongCountPredicate,
+
+        Min,
+        MinSelector,
+        Max,
+        MaxSelector,
+
+        MinInt,
+        MinNullableInt,
+        MinLong,
+        MinNullableLong,
+        MinDouble,
+        MinNullableDouble,
+        MinDecimal,
+        MinNullableDecimal,
+        MinSingle,
+        MinNullableSingle,
+        MinIntSelector,
+        MinNullableIntSelector,
+        MinLongSelector,
+        MinNullableLongSelector,
+        MinDoubleSelector,
+        MinNullableDoubleSelector,
+        MinDecimalSelector,
+        MinNullableDecimalSelector,
+        MinSingleSelector,
+        MinNullableSingleSelector,
+
+        MaxInt,
+        MaxNullableInt,
+        MaxLong,
+        MaxNullableLong,
+        MaxDouble,
+        MaxNullableDouble,
+        MaxDecimal,
+        MaxNullableDecimal,
+        MaxSingle,
+        MaxNullableSingle,
+        MaxIntSelector,
+        MaxNullableIntSelector,
+        MaxLongSelector,
+        MaxNullableLongSelector,
+        MaxDoubleSelector,
+        MaxNullableDoubleSelector,
+        MaxDecimalSelector,
+        MaxNullableDecimalSelector,
+        MaxSingleSelector,
+        MaxNullableSingleSelector,
+
+        SumInt,
+        SumNullableInt,
+        SumLong,
+        SumNullableLong,
+        SumDouble,
+        SumNullableDouble,
+        SumDecimal,
+        SumNullableDecimal,
+        SumSingle,
+        SumNullableSingle,
+        SumIntSelector,
+        SumNullableIntSelector,
+        SumLongSelector,
+        SumNullableLongSelector,
+        SumDoubleSelector,
+        SumNullableDoubleSelector,
+        SumDecimalSelector,
+        SumNullableDecimalSelector,
+        SumSingleSelector,
+        SumNullableSingleSelector,
+
+        AverageInt,
+        AverageNullableInt,
+        AverageLong,
+        AverageNullableLong,
+        AverageDouble,
+        AverageNullableDouble,
+        AverageDecimal,
+        AverageNullableDecimal,
+        AverageSingle,
+        AverageNullableSingle,
+        AverageIntSelector,
+        AverageNullableIntSelector,
+        AverageLongSelector,
+        AverageNullableLongSelector,
+        AverageDoubleSelector,
+        AverageNullableDoubleSelector,
+        AverageDecimalSelector,
+        AverageNullableDecimalSelector,
+        AverageSingleSelector,
+        AverageNullableSingleSelector,
+
+        Aggregate,
+        AggregateSeed,
+        AggregateSeedSelector,
+
+        AsQueryable,
+        AsQueryableGeneric,
+        AsEnumerable,
+
+        ToList,
+
+        NotSupported,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceBinder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceBinder.cs
@@ -1,1945 +1,1945 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-    
-    internal class ResourceBinder : DataServiceExpressionVisitor
-    {
-        internal static Expression Bind(Expression e)
-        {
-            Debug.Assert(e != null, "e != null");
-
-            ResourceBinder rb = new ResourceBinder();
-            Expression boundExpression = rb.Visit(e);
-            VerifyKeyPredicates(boundExpression);
-            VerifyNotSelectManyProjection(boundExpression);
-            return boundExpression;
-        }
-
-        internal static bool IsMissingKeyPredicates(Expression expression)
-        {
-            ResourceExpression re = expression as ResourceExpression;
-            if (re != null)
-            {
-                if (IsMissingKeyPredicates(re.Source))
-                {
-                    return true;
-                }
-
-                if (re.Source != null)
-                {
-                    ResourceSetExpression rse = re.Source as ResourceSetExpression;
-                    if ((rse != null) && !rse.HasKeyPredicate)
-                    {
-                        return true;
-                    }
-                }
-            }
-
-            return false;
-        }
-
-        internal static void VerifyKeyPredicates(Expression e)
-        {
-            if (IsMissingKeyPredicates(e))
-            {
-                throw new NotSupportedException(Strings.ALinq_CantNavigateWithoutKeyPredicate);
-            }
-        }
-
-        internal static void VerifyNotSelectManyProjection(Expression expression)
-        {
-            Debug.Assert(expression != null, "expression != null");
-
-            ResourceSetExpression resourceSet = expression as ResourceSetExpression;
-            if (resourceSet != null)
-            {
-                ProjectionQueryOptionExpression projection = resourceSet.Projection;
-                if (projection != null)
-                {
-                    Debug.Assert(projection.Selector != null, "projection.Selector != null -- otherwise incorrectly constructed");
-                    MethodCallExpression call = StripTo<MethodCallExpression>(projection.Selector.Body);
-                    if (call != null && call.Method.Name == "SelectMany")
-                    {
-                        throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(call));
-                    }
-                }
-                else if (resourceSet.HasTransparentScope)
-                {
-                    throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(resourceSet));
-                }
-            }
-        }
-
-        private static Expression AnalyzePredicate(MethodCallExpression mce)
-        {
-            Debug.Assert(mce != null, "mce != null -- caller couldn't have know the expression kind otherwise");
-            Debug.Assert(mce.Method.Name == "Where", "mce.Method.Name == 'Where' -- otherwise this isn't a predicate");
-
-            ResourceSetExpression input;
-            LambdaExpression le;
-            if (!TryGetResourceSetMethodArguments(mce, out input, out le))
-            {
-                ValidationRules.RequireNonSingleton(mce.Arguments[0]);
-                return mce;
-            }
-
-
-            List<Expression> conjuncts = new List<Expression>();
-            AddConjuncts(le.Body, conjuncts);
-
-            Dictionary<ResourceSetExpression, List<Expression>> predicatesByTarget = new Dictionary<ResourceSetExpression, List<Expression>>(ReferenceEqualityComparer<ResourceSetExpression>.Instance);
-            List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
-            foreach (Expression e in conjuncts)
-            {
-                Expression reboundPredicate = InputBinder.Bind(e, input, le.Parameters[0], referencedInputs);
-                if (referencedInputs.Count > 1)
-                {
-                    return mce;
-                }
-
-                ResourceSetExpression boundTarget = (referencedInputs.Count == 0 ? input : referencedInputs[0] as ResourceSetExpression);
-                if (boundTarget == null)
-                {
-                    return mce;
-                }
-
-                List<Expression> targetPredicates = null;
-                if (!predicatesByTarget.TryGetValue(boundTarget, out targetPredicates))
-                {
-                    targetPredicates = new List<Expression>();
-                    predicatesByTarget[boundTarget] = targetPredicates;
-                }
-
-                targetPredicates.Add(reboundPredicate);
-                referencedInputs.Clear();
-            }
-
-            conjuncts = null;
-            List<Expression> inputPredicates;
-            if (predicatesByTarget.TryGetValue(input, out inputPredicates))
-            {
-                predicatesByTarget.Remove(input);
-            }
-            else
-            {
-                inputPredicates = null;
-            }
-
-            foreach (KeyValuePair<ResourceSetExpression, List<Expression>> predicates in predicatesByTarget)
-            {
-                ResourceSetExpression target = predicates.Key;
-                List<Expression> clauses = predicates.Value;
-
-                Dictionary<PropertyInfo, ConstantExpression> keyValues;
-                if (!ExtractKeyPredicate(target, clauses, out keyValues) ||
-                    clauses.Count > 0)
-                {
-                    return mce;
-                }
-
-                Debug.Assert(!target.HasQueryOptions, "Navigation source had query options?");
-
-                SetKeyPredicate(target, keyValues);
-            }
-
-            if (inputPredicates != null)
-            {
-                Dictionary<PropertyInfo, ConstantExpression> inputKeyValues;
-                if (ExtractKeyPredicate(input, inputPredicates, out inputKeyValues))
-                {
-                    if (input.HasSequenceQueryOptions)
-                    {
-                        Expression predicateFilter = BuildKeyPredicateFilter(input.CreateReference(), inputKeyValues);
-                        inputPredicates.Add(predicateFilter);
-                    }
-                    else
-                    {
-                        SetKeyPredicate(input, inputKeyValues);
-                    }
-                }
-
-                if (inputPredicates.Count > 0)
-                {
-                    if (input.KeyPredicate != null)
-                    {
-                        Expression predicateFilter = BuildKeyPredicateFilter(input.CreateReference(), input.KeyPredicate);
-                        inputPredicates.Add(predicateFilter);
-                        input.KeyPredicate = null;
-                    }
-
-                    int start;
-                    Expression newFilter;
-                    if (input.Filter != null)
-                    {
-                        start = 0;
-                        newFilter = input.Filter.Predicate;
-                    }
-                    else
-                    {
-                        start = 1;
-                        newFilter = inputPredicates[0];
-                    }
-
-                    for (int idx = start; idx < inputPredicates.Count; idx++)
-                    {
-                        newFilter = Expression.And(newFilter, inputPredicates[idx]);
-                    }
-
-                    AddSequenceQueryOption(input, new FilterQueryOptionExpression(mce.Method.ReturnType, newFilter));
-                }
-            }
-
-            return input;        }
-
-        private static void SetKeyPredicate(ResourceSetExpression rse, Dictionary<PropertyInfo, ConstantExpression> keyValues)
-        {
-            Debug.Assert(rse != null, "rse != null");
-            Debug.Assert(keyValues != null, "keyValues != null");
-
-            if (rse.KeyPredicate == null)
-            {
-                rse.KeyPredicate = new Dictionary<PropertyInfo, ConstantExpression>(EqualityComparer<PropertyInfo>.Default);
-            }
-
-            foreach(var g in keyValues)
-            {
-                if (rse.KeyPredicate.Keys.Contains(g.Key))
-                {
-                    throw Error.NotSupported(Strings.ALinq_CanOnlyApplyOneKeyPredicate);
-                }
-
-                rse.KeyPredicate.Add(g.Key, g.Value);
-            }
-        }
-
-        private static bool CollectionContentsEqual<T>(ICollection<T> left, ICollection<T> right, IEqualityComparer<T> comparer) where T : class
-        {
-            Debug.Assert(left != null, "left != null");
-            Debug.Assert(right != null, "right != null");
-            Debug.Assert(comparer != null, "comparer != null");
-
-            if (left.Count != right.Count)
-            {
-                return false;
-            }
-
-            if (left.Count == 1)
-            {
-                return comparer.Equals(left.First(), right.First());
-            }
-            else
-            {
-#if ASTORIA_LIGHT                
-                HashSet<T> leftElements = new HashSet<T>(comparer);
-                foreach (var l in left)
-                {
-                    leftElements.Add(l);
-                }
-#else
-                HashSet<T> leftElements = new HashSet<T>(left, comparer);
-#endif
-                foreach (T rightElement in right)
-                {
-                    if (!leftElements.Contains(rightElement))
-                    {
-                        return false;
-                    }
-                }
-
-                return true;
-            }
-        }
-
-        private static bool ExtractKeyPredicate(
-            ResourceSetExpression target, 
-            List<Expression> predicates, 
-            out Dictionary<PropertyInfo, ConstantExpression> keyValues)
-        {
-            Debug.Assert(target != null, "target != null");
-            Debug.Assert(predicates != null, "predicates != null");
-
-            keyValues = null;
-            List<Expression> nonKeyPredicates = null;
-
-            foreach (Expression predicate in predicates)
-            {
-                PropertyInfo property;
-                ConstantExpression constantValue;
-                if (PatternRules.MatchKeyComparison(predicate, out property, out constantValue))
-                {
-                    if (keyValues == null)
-                    {
-                        keyValues = new Dictionary<PropertyInfo, ConstantExpression>(EqualityComparer<PropertyInfo>.Default);
-                    }
-                    else if (keyValues.ContainsKey(property))
-                    {
-                        throw Error.NotSupported(Strings.ALinq_CanOnlyApplyOneKeyPredicate);
-                    }
-
-                    keyValues.Add(property, constantValue);
-                }
-                else
-                {
-                    if (nonKeyPredicates == null)
-                    {
-                        nonKeyPredicates = new List<Expression>();
-                    }
-
-                    nonKeyPredicates.Add(predicate);
-                }
-            }
-
-            Debug.Assert(keyValues != null || nonKeyPredicates != null, "No key predicates or non-key predicates found?");
-            if (keyValues != null)
-            {
-                var properties = PatternRules.GetKeyProperties(target.CreateReference().Type);
-                if (!CollectionContentsEqual(properties, keyValues.Keys, PropertyInfoEqualityComparer.Instance))
-                {
-                    keyValues = null;
-                    return false;
-                }
-            } 
-
-            if (keyValues != null)
-            {
-                predicates.Clear();
-
-                if (nonKeyPredicates != null)
-                {
-                    predicates.AddRange(nonKeyPredicates);
-                }
-            }
-
-            return keyValues != null;
-        }
-
-        private static Expression BuildKeyPredicateFilter(InputReferenceExpression input, Dictionary<PropertyInfo, ConstantExpression> keyValuesDictionary)
-        {
-            Debug.Assert(input != null, "input != null");
-            Debug.Assert(keyValuesDictionary != null, "keyValuesDictionary != null");
-            Debug.Assert(keyValuesDictionary.Count > 0, "At least one key property is required in a key predicate");
-
-            Expression retExpr = null;
-            foreach (KeyValuePair<PropertyInfo, ConstantExpression> keyValue in keyValuesDictionary)
-            {
-                Expression clause = Expression.Equal(Expression.Property(input, keyValue.Key), keyValue.Value);
-                if (retExpr == null)
-                {
-                    retExpr = clause;
-                }
-                else
-                {
-                    retExpr = Expression.And(retExpr, clause);
-                }
-            }
-
-            return retExpr;
-        }
-
-        private static void AddConjuncts(Expression e, List<Expression> conjuncts)
-        {
-            Debug.Assert(conjuncts != null, "conjuncts != null");
-            if (PatternRules.MatchAnd(e))
-            {
-                BinaryExpression be = (BinaryExpression)e;
-                AddConjuncts(be.Left, conjuncts);
-                AddConjuncts(be.Right, conjuncts);
-            }
-            else
-            {
-                conjuncts.Add(e);
-            }
-        }
-
-        internal bool AnalyzeProjection(MethodCallExpression mce, SequenceMethod sequenceMethod, out Expression e)
-        {
-            Debug.Assert(mce != null, "mce != null");
-            Debug.Assert(
-                sequenceMethod == SequenceMethod.Select || sequenceMethod == SequenceMethod.SelectManyResultSelector,
-                "sequenceMethod == SequenceMethod.Select(ManyResultSelector)");
-
-            e = mce;
-
-            bool matchMembers = sequenceMethod == SequenceMethod.SelectManyResultSelector;
-            ResourceExpression source = this.Visit(mce.Arguments[0]) as ResourceExpression;
-            if (source == null)
-            {
-                return false;
-            }
-
-            if (sequenceMethod == SequenceMethod.SelectManyResultSelector)
-            {
-                Expression collectionSelector = mce.Arguments[1];
-                if (!PatternRules.MatchParameterMemberAccess(collectionSelector))
-                {
-                    return false;
-                }
-
-                Expression resultSelector = mce.Arguments[2];
-                LambdaExpression resultLambda;
-                if (!PatternRules.MatchDoubleArgumentLambda(resultSelector, out resultLambda))
-                {
-                    return false;
-                }
-
-                if (ExpressionPresenceVisitor.IsExpressionPresent(resultLambda.Parameters[0], resultLambda.Body))
-                {
-                    return false;
-                }
-
-                List<ResourceExpression> referencedExpressions = new List<ResourceExpression>();
-                LambdaExpression collectionLambda = StripTo<LambdaExpression>(collectionSelector);
-                Expression collectorReference = InputBinder.Bind(collectionLambda.Body, source, collectionLambda.Parameters[0], referencedExpressions);
-                collectorReference = StripCastMethodCalls(collectorReference);
-                MemberExpression navigationMember;
-                if (!PatternRules.MatchPropertyProjectionSet(source, collectorReference, out navigationMember))
-                {
-                    return false;
-                }
-
-                collectorReference = navigationMember;
-
-                ResourceExpression resultSelectorSource = CreateResourceSetExpression(mce.Method.ReturnType, source, collectorReference, TypeSystem.GetElementType(collectorReference.Type));
-
-                if (!PatternRules.MatchMemberInitExpressionWithDefaultConstructor(resultSelectorSource, resultLambda) &&
-                    !PatternRules.MatchNewExpression(resultSelectorSource, resultLambda))
-                {
-                    return false;
-                }
-
-#if ASTORIA_LIGHT
-                resultLambda = ExpressionHelpers.CreateLambda(resultLambda.Body, new ParameterExpression[] { resultLambda.Parameters[1] });
-#else
-                resultLambda = Expression.Lambda(resultLambda.Body, new ParameterExpression[] { resultLambda.Parameters[1] });
-#endif
-
-                ResourceExpression resultWithProjection = resultSelectorSource.CreateCloneWithNewType(mce.Type);
-                bool isProjection;
-                try
-                {
-                    isProjection = ProjectionAnalyzer.Analyze(resultLambda, resultWithProjection, false);
-                }
-                catch (NotSupportedException)
-                {
-                    isProjection = false;
-                }
-
-                if (!isProjection)
-                {
-                    return false;
-                }
-
-                e = resultWithProjection;
-                ValidationRules.RequireCanProject(resultSelectorSource);
-            }
-            else
-            {
-                LambdaExpression lambda;
-                if (!PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out lambda))
-                {
-                    return false;
-                }
-
-                lambda = ProjectionRewriter.TryToRewrite(lambda, source.ResourceType);
-
-                ResourceExpression re = source.CreateCloneWithNewType(mce.Type);
-
-                if (!ProjectionAnalyzer.Analyze(lambda, re, matchMembers))
-                {
-                    return false;
-                }
-
-                ValidationRules.RequireCanProject(source);
-                e = re;
-            }
-
-            return true;
-        }
-
-        internal static Expression AnalyzeNavigation(MethodCallExpression mce)
-        {
-            Debug.Assert(mce != null, "mce != null");
-            Expression input = mce.Arguments[0];
-            LambdaExpression le;
-            ResourceExpression navSource;
-            Expression boundProjection;
-            MemberExpression navigationMember;
-
-            if (!PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out le))
-            {
-                return mce;
-            }         
-            else if (PatternRules.MatchIdentitySelector(le))
-            {
-                return input;
-            }
-            else if (PatternRules.MatchTransparentIdentitySelector(input, le))
-            {
-                return RemoveTransparentScope(mce.Method.ReturnType, (ResourceSetExpression)input);
-            }
-            else if (IsValidNavigationSource(input, out navSource) &&
-                TryBindToInput(navSource, le, out boundProjection) &&
-                PatternRules.MatchPropertyProjectionSingleton(navSource, boundProjection, out navigationMember))
-            {
-                boundProjection = navigationMember;
-                return CreateNavigationPropertySingletonExpression(mce.Method.ReturnType, navSource, boundProjection);
-            }
-
-            return mce;
-        }
-
-        private static bool IsValidNavigationSource(Expression input, out ResourceExpression sourceExpression)
-        {
-            ValidationRules.RequireCanNavigate(input);
-            sourceExpression = input as ResourceExpression;
-            return sourceExpression != null;
-        }
-
-        internal static Expression AnalyzeSelectMany(MethodCallExpression mce)
-        {
-            Debug.Assert(mce != null, "mce != null");
-
-            if (mce.Arguments.Count != 2 && mce.Arguments.Count != 3)
-            {
-                return mce;
-            }
-
-            ResourceExpression input;
-            if (!IsValidNavigationSource(mce.Arguments[0], out input))
-            {
-                return mce;
-            }
-
-            LambdaExpression collectorSelector;
-            if (!PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out collectorSelector))
-            {
-                return mce;
-            }
-
-            List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
-            Expression navPropRef = InputBinder.Bind(collectorSelector.Body, input, collectorSelector.Parameters[0], referencedInputs);
-            Type resourceType = TypeSystem.GetElementType(navPropRef.Type);
-
-            navPropRef = StripCastMethodCalls(navPropRef);
-
-            ResourceSetExpression rse = null;
-            MemberExpression navigationMember;
-            if (PatternRules.MatchPropertyProjectionSet(input, navPropRef, out navigationMember))
-            {
-                navPropRef = navigationMember;
-                rse = CreateResourceSetExpression(mce.Method.ReturnType, input, navPropRef, resourceType);
-            }
-            else
-            {
-                return mce;
-            }
-
-            if (mce.Arguments.Count == 3)
-            {
-                return AnalyzeSelectManySelector(mce, rse);
-            }
-            else
-            {
-                return rse;
-            }
-        }
-
-        private static Expression AnalyzeSelectManySelector(MethodCallExpression selectManyCall, ResourceSetExpression sourceResourceSet)
-        {
-            Debug.Assert(selectManyCall != null, "selectManyCall != null");
-
-            LambdaExpression selector = StripTo<LambdaExpression>(selectManyCall.Arguments[2]);
-            
-            Expression result;
-            ResourceSetExpression.TransparentAccessors transparentScope;
-            if (PatternRules.MatchTransparentScopeSelector(sourceResourceSet, selector, out transparentScope))
-            {
-                sourceResourceSet.TransparentScope = transparentScope;
-                result = sourceResourceSet;
-            }
-            else if (PatternRules.MatchIdentityProjectionResultSelector(selector))
-            {
-                result = sourceResourceSet;
-            }
-            else if (PatternRules.MatchMemberInitExpressionWithDefaultConstructor(sourceResourceSet, selector) || PatternRules.MatchNewExpression(sourceResourceSet, selector))
-            {
-#if ASTORIA_LIGHT
-                selector = ExpressionHelpers.CreateLambda(selector.Body, new ParameterExpression[] { selector.Parameters[1] }); 
-#else
-                selector = Expression.Lambda(selector.Body, new ParameterExpression[] { selector.Parameters[1] });
-#endif
-                if (!ProjectionAnalyzer.Analyze(selector, sourceResourceSet, false))
-                {
-                    result = selectManyCall;
-                }
-                else
-                {
-                    result = sourceResourceSet;
-                }
-            }
-            else
-            {
-                result = selectManyCall;
-            }
-
-            return result;
-        }
-
-        internal static Expression ApplyOrdering(MethodCallExpression mce, ResourceSetExpression input, Expression selector, bool descending, bool thenBy)
-        {
-            List<OrderByQueryOptionExpression.Selector> selectors;
-            if (!thenBy)
-            {
-                selectors = new List<OrderByQueryOptionExpression.Selector>();
-                AddSequenceQueryOption(input, new OrderByQueryOptionExpression(mce.Type, selectors));
-            }
-            else
-            {
-                Debug.Assert(input.OrderBy != null, "input.OrderBy != null");
-                selectors = input.OrderBy.Selectors;
-            }
-
-            selectors.Add(new OrderByQueryOptionExpression.Selector(selector, descending));
-
-            return input;
-        }
-
-#if !ASTORIA_LIGHT
-        private static Expression LimitCardinality(MethodCallExpression mce, int maxCardinality)
-        {
-            Debug.Assert(mce != null, "mce != null");
-            Debug.Assert(maxCardinality > 0, "Cardinality must be at least 1");
-
-            if (mce.Arguments.Count != 1)
-            {
-                return mce;
-            }
-
-            ResourceSetExpression rse = mce.Arguments[0] as ResourceSetExpression;
-            if (rse != null)
-            {
-                if (!rse.HasKeyPredicate &&                    (ResourceExpressionType)rse.NodeType != ResourceExpressionType.ResourceNavigationProperty)
-                {
-                    if (rse.Take == null || (int)rse.Take.TakeAmount.Value > maxCardinality)
-                    {
-                        AddSequenceQueryOption(rse, new TakeQueryOptionExpression(mce.Type, Expression.Constant(maxCardinality)));
-                    }
-                }
-                return mce.Arguments[0];
-            }
-            else if (mce.Arguments[0] is NavigationPropertySingletonExpression)
-            {
-                return mce.Arguments[0];
-            }
-
-            return mce;
-        }
-
-#endif
-
-        private static Expression AnalyzeCast(MethodCallExpression mce)
-        {
-            ResourceExpression re = mce.Arguments[0] as ResourceExpression;
-            if (re != null)
-            {
-                return re.CreateCloneWithNewType(mce.Method.ReturnType);
-            }
-
-            return mce;
-        }
-
-        private static Expression StripConvert(Expression e)
-        {
-            UnaryExpression ue = e as UnaryExpression;
-
-            if (ue != null &&
-                ue.NodeType == ExpressionType.Convert &&
-                ue.Type.IsGenericType && 
-                (ue.Type.GetGenericTypeDefinition() == typeof(DataServiceQuery<>) ||
-                 ue.Type.GetGenericTypeDefinition() == typeof(DataServiceQuery<>.DataServiceOrderedQuery)))
-            {
-                e = ue.Operand;
-                ResourceExpression re = e as ResourceExpression;
-                if (re != null)
-                {
-                    e = re.CreateCloneWithNewType(ue.Type);
-                }
-            }
-
-            return e;
-        }
-
-        private static Expression AnalyzeExpand(MethodCallExpression mce)
-        {
-            Expression obj = StripConvert(mce.Object);
-            ResourceExpression re = obj as ResourceExpression;
-            if (re == null)
-            {
-                return mce;
-            }
-
-            ValidationRules.RequireCanExpand(re);
-            ConstantExpression ce = StripTo<ConstantExpression>(mce.Arguments[0]);
-            string path = (string)ce.Value;
-            if (!re.ExpandPaths.Contains(path))
-            {
-                re.ExpandPaths.Add(path);
-            }
-
-            return re;
-        }
-        
-        private static Expression AnalyzeAddCustomQueryOption(MethodCallExpression mce)
-        {
-            Expression obj = StripConvert(mce.Object);
-            ResourceExpression re = obj as ResourceExpression;
-            if (re == null)
-            {
-                return mce;
-            }
-
-            ValidationRules.RequireCanAddCustomQueryOption(re);
-
-            ConstantExpression name = StripTo<ConstantExpression>(mce.Arguments[0]);
-            ConstantExpression value = StripTo<ConstantExpression>(mce.Arguments[1]);
-
-            if (((string)name.Value).Trim() == UriHelper.DOLLARSIGN + UriHelper.OPTIONEXPAND)
-            {
-                ValidationRules.RequireCanExpand(re);
-                re.ExpandPaths = re.ExpandPaths.Union(new string[] { (string) value.Value }, StringComparer.Ordinal).ToList();
-            }
-            else
-            {
-                ValidationRules.RequireLegalCustomQueryOption(mce.Arguments[0], re);
-                re.CustomQueryOptions.Add(name, value);
-            }
-
-            return re;
-        }
-
-        private static Expression AnalyzeAddCountOption(MethodCallExpression mce, CountOption countOption)
-        {
-            Expression obj = StripConvert(mce.Object);
-            ResourceExpression re = obj as ResourceExpression;
-            if (re == null)
-            {
-                return mce;
-            }
-
-            ValidationRules.RequireCanAddCount(re);
-            ValidationRules.RequireNonSingleton(re);
-            re.CountOption = countOption;
-
-            return re;
-        }
-
-        private static ResourceSetExpression CreateResourceSetExpression(Type type, ResourceExpression source, Expression memberExpression, Type resourceType)
-        {
-            Debug.Assert(type != null, "type != null");
-            Debug.Assert(source != null, "source != null");
-            Debug.Assert(memberExpression != null, "memberExpression != null");
-            Debug.Assert(resourceType != null, "resourceType != null");
-
-            Type elementType = TypeSystem.GetElementType(type);
-            Debug.Assert(elementType != null, "elementType != null -- otherwise the set isn't going to act like a collection");
-            Type expressionType = typeof(IOrderedQueryable<>).MakeGenericType(elementType);
-
-            ResourceSetExpression newResource = new ResourceSetExpression(expressionType, source, memberExpression, resourceType, source.ExpandPaths.ToList(), source.CountOption, source.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value), null);
-            source.ExpandPaths.Clear();
-            source.CountOption = CountOption.None;
-            source.CustomQueryOptions.Clear();
-            return newResource;
-        }
-
-        private static NavigationPropertySingletonExpression CreateNavigationPropertySingletonExpression(Type type, ResourceExpression source, Expression memberExpression)
-        {
-            NavigationPropertySingletonExpression newResource = new NavigationPropertySingletonExpression(type, source, memberExpression, memberExpression.Type, source.ExpandPaths.ToList(), source.CountOption, source.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value), null);
-            source.ExpandPaths.Clear();
-            source.CountOption = CountOption.None;
-            source.CustomQueryOptions.Clear();
-            return newResource;
-        }
-
-        private static ResourceSetExpression RemoveTransparentScope(Type expectedResultType, ResourceSetExpression input)
-        {
-            ResourceSetExpression newResource = new ResourceSetExpression(expectedResultType, input.Source, input.MemberExpression, input.ResourceType, input.ExpandPaths, input.CountOption, input.CustomQueryOptions, input.Projection);
-            
-            newResource.KeyPredicate = input.KeyPredicate;
-            foreach (QueryOptionExpression queryOption in input.SequenceQueryOptions)
-            {
-                newResource.AddSequenceQueryOption(queryOption);
-            }
-
-            newResource.OverrideInputReference(input);
-
-            return newResource;
-        }
-
-        internal static Expression StripConvertToAssignable(Expression e)
-        {
-            Debug.Assert(e != null, "e != null");
-            
-            Expression result;
-            UnaryExpression unary = e as UnaryExpression;
-            if (unary != null && PatternRules.MatchConvertToAssignable(unary))
-            {
-                result = unary.Operand;
-            }
-            else
-            {
-                result = e;
-            }
-
-            return result;
-        }
-
-        internal static T StripTo<T>(Expression expression) where T : Expression
-        {
-            Debug.Assert(expression != null, "expression != null");
-
-            Expression result;
-            do
-            {
-                result = expression;
-                expression = expression.NodeType == ExpressionType.Quote ? ((UnaryExpression)expression).Operand : expression;
-                expression = StripConvertToAssignable(expression);
-            }
-            while (result != expression);
-
-            return result as T;
-        }
-
-        internal override Expression VisitResourceSetExpression(ResourceSetExpression rse)
-        {
-            Debug.Assert(rse != null, "rse != null");
-
-            if ((ResourceExpressionType)rse.NodeType == ResourceExpressionType.RootResourceSet)
-            {
-
-                return new ResourceSetExpression(rse.Type, rse.Source, rse.MemberExpression, rse.ResourceType, null, CountOption.None, null, null);
-            }
-
-            return rse;
-        }
-
-        private static bool TryGetResourceSetMethodArguments(MethodCallExpression mce, out ResourceSetExpression input, out LambdaExpression lambda)
-        {
-            input = null;
-            lambda = null;
-
-            input = mce.Arguments[0] as ResourceSetExpression;
-            if (input != null &&
-                PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out lambda))
-            {
-                return true;
-            }
-
-            return false;
-        }
-
-        private static bool TryBindToInput(ResourceExpression input, LambdaExpression le, out Expression bound)
-        {
-            List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
-            bound = InputBinder.Bind(le.Body, input, le.Parameters[0], referencedInputs);
-            if (referencedInputs.Count > 1 || (referencedInputs.Count == 1 && referencedInputs[0] != input))
-            {
-                bound = null;
-            }
-
-            return bound != null;
-        }
-
-        private static Expression AnalyzeResourceSetMethod(MethodCallExpression mce, Func<MethodCallExpression, ResourceSetExpression, Expression, Expression> sequenceMethodAnalyzer)
-        {
-            ResourceSetExpression input;
-            LambdaExpression le;
-            if (!TryGetResourceSetMethodArguments(mce, out input, out le))
-            {
-                return mce;
-            }
-
-            Expression lambdaBody;
-            if (!TryBindToInput(input, le, out lambdaBody))
-            {
-                return mce;
-            }
-
-            return sequenceMethodAnalyzer(mce, input, lambdaBody);
-        }
-
-        private static Expression AnalyzeResourceSetConstantMethod(MethodCallExpression mce, Func<MethodCallExpression, ResourceExpression, ConstantExpression, Expression> constantMethodAnalyzer)
-        {
-            ResourceExpression input = (ResourceExpression)mce.Arguments[0];
-            ConstantExpression constantArg = StripTo<ConstantExpression>(mce.Arguments[1]);
-            if (null == constantArg)
-            {
-                return mce;
-            }
-
-            return constantMethodAnalyzer(mce, input, constantArg);
-        }
-
-        private static Expression AnalyzeCountMethod(MethodCallExpression mce)
-        {
-            ResourceExpression re = (ResourceExpression)mce.Arguments[0];
-            if (re == null)
-            {
-                return mce;
-            }
-
-            ValidationRules.RequireCanAddCount(re);
-            ValidationRules.RequireNonSingleton(re);
-            re.CountOption = CountOption.ValueOnly;
-
-            return re;
-        }
-
-        private static void AddSequenceQueryOption(ResourceExpression target, QueryOptionExpression qoe)
-        {
-            ValidationRules.RequireNonSingleton(target);
-            ResourceSetExpression rse = (ResourceSetExpression)target;
-
-            switch (qoe.NodeType)
-            {
-                case (ExpressionType)ResourceExpressionType.FilterQueryOption:
-                    if (rse.Skip != null)
-                    {
-                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("filter", "skip"));
-                    }
-                    else if (rse.Take != null)
-                    {
-                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("filter", "top"));
-                    }
-                    else if (rse.Projection != null)
-                    {
-                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("filter", "select"));
-                    }
-                    break;
-                case (ExpressionType)ResourceExpressionType.OrderByQueryOption:
-                    if (rse.Skip != null)
-                    {
-                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("orderby", "skip"));
-                    }
-                    else if (rse.Take != null)
-                    {
-                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("orderby", "top"));
-                    }
-                    else if (rse.Projection != null)
-                    {
-                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("orderby", "select"));
-                    }
-                    break;
-                case (ExpressionType)ResourceExpressionType.SkipQueryOption:
-                    if (rse.Take != null)
-                    {
-                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("skip", "top"));
-                    }
-                    break;
-                default:
-                    break;
-            }
-
-            rse.AddSequenceQueryOption(qoe);
-        }
-
-        internal override Expression VisitBinary(BinaryExpression b)
-        {
-            Expression e = base.VisitBinary(b);
-            if (PatternRules.MatchStringAddition(e))
-            {
-                BinaryExpression be = StripTo<BinaryExpression>(e);
-                MethodInfo mi = typeof(string).GetMethod("Concat", new Type[] { typeof(string), typeof(string)});
-                return Expression.Call(mi, new Expression[] {be.Left, be.Right});
-            }
-
-            return e;
-        }
-
-        internal override Expression VisitMemberAccess(MemberExpression m)
-        {
-            Expression e = base.VisitMemberAccess(m);
-            MemberExpression me = StripTo<MemberExpression>(e);
-            PropertyInfo pi;
-            MethodInfo mi;
-            if (me != null &&
-                PatternRules.MatchNonPrivateReadableProperty(me, out pi) &&
-                TypeSystem.TryGetPropertyAsMethod(pi, out mi))
-            {
-                return Expression.Call(me.Expression, mi);
-            }
-
-            return e;
-        }
-
-        internal override Expression VisitMethodCall(MethodCallExpression mce)
-        {
-            Expression e;
-
-            SequenceMethod sequenceMethod;
-            if (ReflectionUtil.TryIdentifySequenceMethod(mce.Method, out sequenceMethod))
-            {
-                if (sequenceMethod == SequenceMethod.Select ||
-                    sequenceMethod == SequenceMethod.SelectManyResultSelector)
-                {
-                    if (this.AnalyzeProjection(mce, sequenceMethod, out e))
-                    {
-                        return e;
-                    }
-                }
-            }
-
-            e = base.VisitMethodCall(mce);
-            mce = e as MethodCallExpression;
-
-            if (mce != null)
-            {
-                if (ReflectionUtil.TryIdentifySequenceMethod(mce.Method, out sequenceMethod))
-                {
-                    switch (sequenceMethod)
-                    {
-                        case SequenceMethod.Where:
-                            return AnalyzePredicate(mce);
-                        case SequenceMethod.Select:
-                            return AnalyzeNavigation(mce);
-                        case SequenceMethod.SelectMany:
-                        case SequenceMethod.SelectManyResultSelector:
-                            {
-                                Expression result = AnalyzeSelectMany(mce);
-                                return result;
-                            }
-
-                        case SequenceMethod.Take:
-                            return AnalyzeResourceSetConstantMethod(mce, (callExp, resource, takeCount) => { AddSequenceQueryOption(resource, new TakeQueryOptionExpression(callExp.Type, takeCount)); return resource; });
-                        case SequenceMethod.Skip:
-                            return AnalyzeResourceSetConstantMethod(mce, (callExp, resource, skipCount) => { AddSequenceQueryOption(resource, new SkipQueryOptionExpression(callExp.Type, skipCount)); return resource; });
-                        case SequenceMethod.OrderBy:
-                            return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector,false, false));
-                        case SequenceMethod.ThenBy:
-                            return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector, false,true));
-                        case SequenceMethod.OrderByDescending:
-                            return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector, true, false));
-                        case SequenceMethod.ThenByDescending:
-                             return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector,true, true));
-#if !ASTORIA_LIGHT      
-                        case SequenceMethod.First:
-                        case SequenceMethod.FirstOrDefault:
-                            return LimitCardinality(mce, 1);
-                        case SequenceMethod.Single:
-                        case SequenceMethod.SingleOrDefault:
-                            return LimitCardinality(mce, 2);
-#endif
-                        case SequenceMethod.Cast:
-                            return AnalyzeCast(mce);
-                        case SequenceMethod.LongCount:
-                        case SequenceMethod.Count:
-                            return AnalyzeCountMethod(mce);
-                        default:
-                            throw Error.MethodNotSupported(mce);
-                    }
-                }
-                else if (mce.Method.DeclaringType.IsGenericType &&
-                    mce.Method.DeclaringType.GetGenericTypeDefinition() == typeof(DataServiceQuery<>))
-                {
-                    Type t = typeof(DataServiceQuery<>).MakeGenericType(mce.Method.DeclaringType.GetGenericArguments()[0]);
-
-                    if (mce.Method == t.GetMethod("Expand", new Type[] { typeof(string) }))
-                    {
-                        return AnalyzeExpand(mce);
-                    }
-                    else if (mce.Method == t.GetMethod("AddQueryOption", new Type[] { typeof(string), typeof(object) }))
-                    {
-                        return AnalyzeAddCustomQueryOption(mce);
-                    }
-                    else if (mce.Method == t.GetMethod("IncludeTotalCount"))
-                    {
-                        return AnalyzeAddCountOption(mce, CountOption.InlineAll);
-                    }
-                    else
-                    {
-                        throw Error.MethodNotSupported(mce);
-                    }
-                }
-                return mce;
-            }
-
-            return e;
-        }
-
- 
-        private static Expression StripCastMethodCalls(Expression expression)
-        {
-            Debug.Assert(expression != null, "expression != null");
-
-            MethodCallExpression call = StripTo<MethodCallExpression>(expression);
-            while (call != null && ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Cast))
-            {
-                expression = call.Arguments[0];
-                call = StripTo<MethodCallExpression>(expression);
-            }
-
-            return expression;
-        }
-
-
-
-        internal static class PatternRules
-        {
-            internal static bool MatchConvertToAssignable(UnaryExpression expression)
-            {
-                Debug.Assert(expression != null, "expression != null");
-
-                if (expression.NodeType != ExpressionType.Convert &&
-                    expression.NodeType != ExpressionType.ConvertChecked &&
-                    expression.NodeType != ExpressionType.TypeAs)
-                {
-                    return false;
-                }
-
-                return expression.Type.IsAssignableFrom(expression.Operand.Type);
-            }
-
-            internal static bool MatchParameterMemberAccess(Expression expression)
-            {
-                Debug.Assert(expression != null, "lambda != null");
-
-                LambdaExpression lambda = StripTo<LambdaExpression>(expression);
-                if (lambda == null || lambda.Parameters.Count != 1)
-                {
-                    return false;
-                }
-
-                ParameterExpression parameter = lambda.Parameters[0];
-                Expression body = StripCastMethodCalls(lambda.Body);
-                MemberExpression memberAccess = StripTo<MemberExpression>(body);
-                while (memberAccess != null)
-                {
-                    if (memberAccess.Expression == parameter)
-                    {
-                        return true;
-                    }
-
-                    memberAccess = StripTo<MemberExpression>(memberAccess.Expression);
-                }
-
-                return false;
-            }
-
-            internal static bool MatchPropertyAccess(Expression e, out MemberExpression member, out Expression instance, out List<string> propertyPath)
-            {
-                instance = null;
-                propertyPath = null;
-
-                MemberExpression me = StripTo<MemberExpression>(e);
-                member = me;
-                while (me != null)
-                {
-                    PropertyInfo pi;
-                    if (MatchNonPrivateReadableProperty(me, out pi))
-                    {
-                        if (propertyPath == null)
-                        {
-                            propertyPath = new List<string>();
-                        }
-
-                        propertyPath.Insert(0, pi.Name);
-                        e = me.Expression;
-                        me = StripTo<MemberExpression>(e);
-                    }
-                    else
-                    {
-                        me = null;
-                    }
-                }
-
-                if (propertyPath != null)
-                {
-                    instance = e;
-                    return true;
-                }
-
-                return false;
-            }
-
-            internal static bool MatchConstant(Expression e, out ConstantExpression constExpr)
-            {
-                constExpr = e as ConstantExpression;
-                return constExpr != null;
-            }
-
-            internal static bool MatchAnd(Expression e)
-            {
-                BinaryExpression be = e as BinaryExpression;
-                return (be != null && (be.NodeType == ExpressionType.And || be.NodeType == ExpressionType.AndAlso));
-            }
-
-            internal static bool MatchNonPrivateReadableProperty(Expression e, out PropertyInfo propInfo)
-            {
-                MemberExpression me = e as MemberExpression;
-                if (me == null)
-                {
-                    propInfo = null;
-                    return false;
-                }
-
-                return MatchNonPrivateReadableProperty(me, out propInfo);
-            }
-
-           internal static bool MatchNonPrivateReadableProperty(MemberExpression me, out PropertyInfo propInfo)
-            {
-                Debug.Assert(me != null, "me != null");
-
-                propInfo = null;
-
-                if (me.Member.MemberType == MemberTypes.Property)
-                {
-                    PropertyInfo pi = (PropertyInfo)me.Member;
-                    if (pi.CanRead && !TypeSystem.IsPrivate(pi))
-                    {
-                        propInfo = pi;
-                        return true;
-                    }
-                }
-
-                return false;
-            }
-
-           internal static bool MatchKeyProperty(Expression expression, out PropertyInfo property)
-            {
-                property = null;
-
-                 PropertyInfo pi;
-                if (!PatternRules.MatchNonPrivateReadableProperty(expression, out pi))
-                {
-                    return false;
-                }
-
-                if (GetKeyProperties(pi.ReflectedType).Contains(pi, PropertyInfoEqualityComparer.Instance))
-                {
-                    property = pi;
-                    return true;
-                }
-
-                return false;
-            }
-
-            internal static List<PropertyInfo> GetKeyProperties(Type type)
-            {
-                Debug.Assert(type != null, "type != null");
-                ClientType clientType = ClientType.Create(type, false );
-                var result = new List<PropertyInfo>();
-                foreach (var property in clientType.Properties)
-                {
-                    if (property.KeyProperty)
-                    {
-                        result.Add(property.DeclaringType.GetProperty(property.PropertyName));
-                    }
-                }
-
-                return result;
-            }
-
-            internal static bool MatchKeyComparison(Expression e, out PropertyInfo keyProperty, out ConstantExpression keyValue)
-            {
-                if (PatternRules.MatchBinaryEquality(e))
-                {
-                    BinaryExpression be = (BinaryExpression)e;
-                    if ((PatternRules.MatchKeyProperty(be.Left, out keyProperty) && PatternRules.MatchConstant(be.Right, out keyValue)) ||
-                        (PatternRules.MatchKeyProperty(be.Right, out keyProperty) && PatternRules.MatchConstant(be.Left, out keyValue)))
-                    {
-                        return keyValue.Value != null;
-                    }
-                }
-
-                keyProperty = null;
-                keyValue = null;
-                return false;
-            }
-
-           internal static bool MatchReferenceEquals(Expression expression)
-            {
-                Debug.Assert(expression != null, "expression != null");
-                MethodCallExpression call = expression as MethodCallExpression;
-                if (call == null)
-                {
-                    return false;
-                }
-
-                return call.Method == typeof(object).GetMethod("ReferenceEquals");
-            }
-
-            internal static bool MatchResource(Expression expression, out ResourceExpression resource)
-            {
-                resource = expression as ResourceExpression;
-                return resource != null;
-            }
-
-               internal static bool MatchDoubleArgumentLambda(Expression expression, out LambdaExpression lambda)
-            {
-                return MatchNaryLambda(expression, 2, out lambda);
-            }
-
-            internal static bool MatchIdentitySelector(LambdaExpression lambda)
-            {
-                Debug.Assert(lambda != null, "lambda != null");
-
-                ParameterExpression parameter = lambda.Parameters[0];
-                return parameter == StripTo<ParameterExpression>(lambda.Body);
-            }
-
-            internal static bool MatchSingleArgumentLambda(Expression expression, out LambdaExpression lambda)
-            {
-                return MatchNaryLambda(expression, 1, out lambda);
-            }
-
-            internal static bool MatchTransparentIdentitySelector(Expression input, LambdaExpression selector)
-            {
-                if (selector.Parameters.Count != 1)
-                {
-                    return false;
-                }
-
-                ResourceSetExpression rse = input as ResourceSetExpression;
-                if (rse == null || rse.TransparentScope == null)
-                {
-                    return false;
-                }
-
-                Expression potentialRef = selector.Body;
-                ParameterExpression expectedTarget = selector.Parameters[0];
-
-                MemberExpression propertyMember;
-                Expression paramRef;
-                List<string> refPath;
-                if (!MatchPropertyAccess(potentialRef, out propertyMember, out paramRef, out refPath))
-                {
-                    return false;
-                }
-
-                Debug.Assert(refPath != null, "refPath != null -- otherwise MatchPropertyAccess should not have returned true");
-                return paramRef == expectedTarget && refPath.Count == 1 && refPath[0] == rse.TransparentScope.Accessor;
-            }
-
-            internal static bool MatchIdentityProjectionResultSelector(Expression e)
-            {
-                LambdaExpression le = (LambdaExpression)e;
-                return (le.Body == le.Parameters[1]);
-            }
-
-            internal static bool MatchTransparentScopeSelector(ResourceSetExpression input, LambdaExpression resultSelector, out ResourceSetExpression.TransparentAccessors transparentScope)
-            {
-                transparentScope = null;
-
-                if (resultSelector.Body.NodeType != ExpressionType.New)
-                {
-                    return false;
-                }
-                
-                NewExpression ne = (NewExpression)resultSelector.Body;
-                if (ne.Arguments.Count < 2)
-                {
-                    return false;
-                }
-
-                if (ne.Type.BaseType != typeof(object))
-                {
-                    return false;
-                }
-
-                ParameterInfo[] constructorParams = ne.Constructor.GetParameters();
-                if (ne.Members.Count != constructorParams.Length)
-                {
-                    return false;
-                }
-
-                ResourceSetExpression inputSourceSet = input.Source as ResourceSetExpression;
-                int introducedMemberIndex = -1;
-                ParameterExpression collectorSourceParameter = resultSelector.Parameters[0];
-                ParameterExpression introducedRangeParameter = resultSelector.Parameters[1];
-                MemberInfo[] memberProperties = new MemberInfo[ne.Members.Count];
-                PropertyInfo[] properties = ne.Type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
-                Dictionary<string, Expression> sourceAccessors = new Dictionary<string, Expression>(constructorParams.Length - 1, StringComparer.Ordinal);
-                for (int i = 0; i < ne.Arguments.Count; i++)
-                {
-                    Expression argument = ne.Arguments[i];
-                    MemberInfo member = ne.Members[i];
-
-                    if (!ExpressionIsSimpleAccess(argument, resultSelector.Parameters))
-                    {
-                        return false;
-                    }
-
-                    if (member.MemberType == MemberTypes.Method)
-                    {
-                        member = properties.Where(property => property.GetGetMethod() == member).FirstOrDefault();
-                        if (member == null)
-                        {
-                            return false;
-                        }
-                    }
-
-                    if (member.Name != constructorParams[i].Name)
-                    {
-                        return false;
-                    }
-
-                    memberProperties[i] = member;
-
-                    ParameterExpression argumentAsParameter = StripTo<ParameterExpression>(argument);
-                    if (introducedRangeParameter == argumentAsParameter)
-                    {
-                        if (introducedMemberIndex != -1)
-                        {
-                            return false;
-                        }
-
-                        introducedMemberIndex = i;
-                    }
-                    else if (collectorSourceParameter == argumentAsParameter)
-                    {
-                        sourceAccessors[member.Name] = inputSourceSet.CreateReference();
-                    }
-                    else
-                    {
-                        List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
-                        Expression boundArgument = InputBinder.Bind(argument, inputSourceSet, resultSelector.Parameters[0], referencedInputs);
-                        if (referencedInputs.Count != 1)
-                        {
-                            return false;
-                        }
-
-                        sourceAccessors[member.Name] = referencedInputs[0].CreateReference();
-                    }
-                }
-
-                if (introducedMemberIndex == -1)
-                {
-                    return false;
-                }
-
-                string resultAccessor = memberProperties[introducedMemberIndex].Name;
-                transparentScope = new ResourceSetExpression.TransparentAccessors(resultAccessor, sourceAccessors);
-
-                return true;
-            }
-
-            internal static bool MatchPropertyProjectionSet(ResourceExpression input, Expression potentialPropertyRef, out MemberExpression navigationMember)
-            {
-                return MatchNavigationPropertyProjection(input, potentialPropertyRef, true, out navigationMember);
-            }
-
-            internal static bool MatchPropertyProjectionSingleton(ResourceExpression input, Expression potentialPropertyRef, out MemberExpression navigationMember)
-            {
-                return MatchNavigationPropertyProjection(input, potentialPropertyRef, false, out navigationMember);
-            }
-
-            private static bool MatchNavigationPropertyProjection(ResourceExpression input, Expression potentialPropertyRef, bool requireSet, out MemberExpression navigationMember)
-            {
-                if (PatternRules.MatchNonSingletonProperty(potentialPropertyRef) == requireSet)
-                {
-                    Expression foundInstance;
-                    List<string> propertyNames;
-                    if (MatchPropertyAccess(potentialPropertyRef, out navigationMember, out foundInstance, out propertyNames))
-                    {
-                        if (foundInstance == input.CreateReference())
-                        {
-                            return true;
-                        }
-                    }
-                }
-
-                navigationMember = null;
-                return false;
-            }
-
-            internal static bool MatchMemberInitExpressionWithDefaultConstructor(Expression source, LambdaExpression e)
-            {
-                MemberInitExpression mie = StripTo<MemberInitExpression>(e.Body);
-                ResourceExpression resource;
-                return MatchResource(source, out resource) && (mie != null) && (mie.NewExpression.Arguments.Count == 0);
-            }
-
-            internal static bool MatchNewExpression(Expression source, LambdaExpression e)
-            {
-                ResourceExpression resource;
-                return MatchResource(source, out resource) && (e.Body is NewExpression);
-            }
-
-            internal static bool MatchNot(Expression expression)
-            {
-                Debug.Assert(expression != null, "expression != null");
-                return expression.NodeType == ExpressionType.Not;
-            }
-
-            internal static bool MatchNonSingletonProperty(Expression e)
-            {
-                return (TypeSystem.FindIEnumerable(e.Type) != null) && 
-                    e.Type != typeof(char[]) &&
-                    e.Type != typeof(byte[]);
-            }
-
-            internal static MatchNullCheckResult MatchNullCheck(Expression entityInScope, ConditionalExpression conditional)
-            {
-                Debug.Assert(conditional != null, "conditional != null");
-
-                MatchNullCheckResult result = new MatchNullCheckResult();
-                MatchEqualityCheckResult equalityCheck = MatchEquality(conditional.Test);
-                if (!equalityCheck.Match)
-                {
-                    return result;
-                }
-
-                Expression assignedCandidate;
-                if (equalityCheck.EqualityYieldsTrue)
-                {
-                    if (!MatchNullConstant(conditional.IfTrue))
-                    {
-                        return result;
-                    }
-
-                    assignedCandidate = conditional.IfFalse;
-                }
-                else
-                {
-                    if (!MatchNullConstant(conditional.IfFalse))
-                    {
-                        return result;
-                    }
-
-                    assignedCandidate = conditional.IfTrue;
-                }
-
-                Expression memberCandidate;
-                if (MatchNullConstant(equalityCheck.TestLeft))
-                {
-                    memberCandidate = equalityCheck.TestRight;
-                }
-                else if (MatchNullConstant(equalityCheck.TestRight))
-                {
-                    memberCandidate = equalityCheck.TestLeft;
-                }
-                else
-                {
-                    return result;
-                }
-
-                Debug.Assert(assignedCandidate != null, "assignedCandidate != null");
-                Debug.Assert(memberCandidate != null, "memberCandidate != null");
-
-                MemberAssignmentAnalysis assignedAnalysis = MemberAssignmentAnalysis.Analyze(entityInScope, assignedCandidate);
-                if (assignedAnalysis.MultiplePathsFound)
-                {
-                    return result;
-                }
-
-                MemberAssignmentAnalysis memberAnalysis = MemberAssignmentAnalysis.Analyze(entityInScope, memberCandidate);
-                if (memberAnalysis.MultiplePathsFound)
-                {
-                    return result;
-                }
-
-                Expression[] assignedExpressions = assignedAnalysis.GetExpressionsToTargetEntity();
-                Expression[] memberExpressions = memberAnalysis.GetExpressionsToTargetEntity();
-                if (memberExpressions.Length > assignedExpressions.Length)
-                {
-                    return result;
-                }
-
-                for (int i = 0; i < memberExpressions.Length; i++)
-                {
-                    Expression assigned = assignedExpressions[i];
-                    Expression member = memberExpressions[i];
-                    if (assigned == member)
-                    {
-                        continue;
-                    }
-
-                    if (assigned.NodeType != member.NodeType || assigned.NodeType != ExpressionType.MemberAccess)
-                    {
-                        return result;
-                    }
-
-                    if (((MemberExpression)assigned).Member != ((MemberExpression)member).Member)
-                    {
-                        return result;
-                    }
-                }
-
-                result.AssignExpression = assignedCandidate;
-                result.Match = true;
-                result.TestToNullExpression = memberCandidate;
-                return result;
-            }
-
-            internal static bool MatchNullConstant(Expression expression)
-            {
-                Debug.Assert(expression != null, "expression != null");
-                ConstantExpression constant = expression as ConstantExpression;
-                if (constant != null && constant.Value == null)
-                {
-                    return true;
-                }
-
-                return false;
-            }
-
-            internal static bool MatchBinaryExpression(Expression e)
-            {
-                return (e is BinaryExpression);
-            }
-
-            internal static bool MatchBinaryEquality(Expression e)
-            {
-                return (PatternRules.MatchBinaryExpression(e) && ((BinaryExpression)e).NodeType == ExpressionType.Equal);
-            }
-
-            internal static bool MatchStringAddition(Expression e)
-            {
-                if (e.NodeType == ExpressionType.Add)
-                {
-                    BinaryExpression be = e as BinaryExpression;
-                    return be != null &&
-                        be.Left.Type == typeof(string) &&
-                        be.Right.Type == typeof(string);
-                }
-                return false;
-            }
-
-            internal static bool MatchNewDataServiceCollectionOfT(NewExpression nex)
-            {
-                return nex.Type.IsGenericType && WebUtil.IsDataServiceCollectionType(nex.Type.GetGenericTypeDefinition());
-            }
-
-            internal static MatchEqualityCheckResult MatchEquality(Expression expression)
-            {
-                Debug.Assert(expression != null, "expression != null");
-
-                MatchEqualityCheckResult result = new MatchEqualityCheckResult();
-                result.Match = false;
-                result.EqualityYieldsTrue = true;
-
-                while (true)
-                {
-                    if (MatchReferenceEquals(expression))
-                    {
-                        MethodCallExpression call = (MethodCallExpression)expression;
-                        result.Match = true;
-                        result.TestLeft = call.Arguments[0];
-                        result.TestRight = call.Arguments[1];
-                        break;
-                    }
-                    else if (MatchNot(expression))
-                    {
-                        result.EqualityYieldsTrue = !result.EqualityYieldsTrue;
-                        expression = ((UnaryExpression)expression).Operand;
-                    }
-                    else
-                    {
-                        BinaryExpression test = expression as BinaryExpression;
-                        if (test == null)
-                        {
-                            break;
-                        }
-
-                        if (test.NodeType == ExpressionType.NotEqual)
-                        {
-                            result.EqualityYieldsTrue = !result.EqualityYieldsTrue;
-                        }
-                        else if (test.NodeType != ExpressionType.Equal)
-                        {
-                            break;
-                        }
-
-                        result.TestLeft = test.Left;
-                        result.TestRight = test.Right;
-                        result.Match = true;
-                        break;
-                    }
-                }
-
-                return result;
-            }
-
-            private static bool ExpressionIsSimpleAccess(Expression argument, ReadOnlyCollection<ParameterExpression> expressions)
-            {
-                Debug.Assert(argument != null, "argument != null");
-                Debug.Assert(expressions != null, "expressions != null");
-
-                Expression source = argument;
-                MemberExpression member;
-                do
-                {
-                    member = source as MemberExpression;
-                    if (member != null)
-                    {
-                        source = member.Expression;
-                    }
-                }
-                while (member != null);
-
-                ParameterExpression parameter = source as ParameterExpression;
-                if (parameter == null)
-                {
-                    return false;
-                }
-
-                return expressions.Contains(parameter);
-            }
-
-            private static bool MatchNaryLambda(Expression expression, int parameterCount, out LambdaExpression lambda)
-            {
-                lambda = null;
-
-                LambdaExpression le = StripTo<LambdaExpression>(expression);
-                if (le != null && le.Parameters.Count == parameterCount)
-                {
-                    lambda = le;
-                }
-
-                return lambda != null;
-            }
-
-            internal struct MatchNullCheckResult
-            {
-                internal Expression AssignExpression;
-
-                internal bool Match;
-
-                internal Expression TestToNullExpression;
-            }
-
-            internal struct MatchEqualityCheckResult
-            {
-                internal bool EqualityYieldsTrue;
-
-                internal bool Match;
-
-                internal Expression TestLeft;
-
-                internal Expression TestRight;
-            }
-        }
-
-        private static class ValidationRules
-        {
-            internal static void RequireCanNavigate(Expression e)
-            {
-                ResourceSetExpression resourceSet = e as ResourceSetExpression;
-                if (resourceSet != null && resourceSet.HasSequenceQueryOptions)
-                {
-                    throw new NotSupportedException(Strings.ALinq_QueryOptionsOnlyAllowedOnLeafNodes);
-                }
-
-                ResourceExpression resource;
-                if (PatternRules.MatchResource(e, out resource) && resource.Projection != null)
-                {
-                    throw new NotSupportedException(Strings.ALinq_ProjectionOnlyAllowedOnLeafNodes);
-                }
-            }
-
-            internal static void RequireCanProject(Expression e)
-            {
-                ResourceExpression re = (ResourceExpression)e;
-                if (!PatternRules.MatchResource(e, out re))
-                {
-                    throw new NotSupportedException(Strings.ALinq_CanOnlyProjectTheLeaf);
-                }
-
-                if (re.Projection != null)
-                {
-                    throw new NotSupportedException(Strings.ALinq_ProjectionCanOnlyHaveOneProjection);
-                }
-
-                if (re.ExpandPaths.Count > 0)
-                {
-                    throw new NotSupportedException(Strings.ALinq_CannotProjectWithExplicitExpansion);
-                }
-            }
-
-            internal static void RequireCanExpand(Expression e)
-            {
-                ResourceExpression re = (ResourceExpression)e;
-                if (!PatternRules.MatchResource(e, out re))
-                {
-                    throw new NotSupportedException(Strings.ALinq_CantExpand);
-                }
-
-                if (re.Projection != null)
-                {
-                    throw new NotSupportedException(Strings.ALinq_CannotProjectWithExplicitExpansion);
-                }
-            }
-
-            internal static void RequireCanAddCount(Expression e)
-            {
-                ResourceExpression re = (ResourceExpression)e;
-                if (!PatternRules.MatchResource(e, out re))
-                {
-                    throw new NotSupportedException(Strings.ALinq_CannotAddCountOption);
-                }
-
-                if (re.CountOption != CountOption.None)
-                {
-                    throw new NotSupportedException(Strings.ALinq_CannotAddCountOptionConflict);
-                }
-            }
-
-            internal static void RequireCanAddCustomQueryOption(Expression e)
-            {
-                ResourceExpression re = (ResourceExpression)e;
-                if (!PatternRules.MatchResource(e, out re))
-                {
-                    throw new NotSupportedException(Strings.ALinq_CantAddQueryOption);
-                }
-            }
-
-            internal static void RequireNonSingleton(Expression e)
-            {
-                ResourceExpression re = e as ResourceExpression;
-                if (re != null && re.IsSingleton)
-                {
-                    throw new NotSupportedException(Strings.ALinq_QueryOptionsOnlyAllowedOnSingletons);
-                }
-            }
-
-            internal static void RequireLegalCustomQueryOption(Expression e, ResourceExpression target)
-            {
-                string name = ((string)(e as ConstantExpression).Value).Trim();
-
-                if (name[0] == UriHelper.DOLLARSIGN)
-                {
-                    if (target.CustomQueryOptions.Any(c => (string)c.Key.Value == name))
-                    {
-                        throw new NotSupportedException(Strings.ALinq_CantAddDuplicateQueryOption(name));
-                    }
-
-                    ResourceSetExpression rse = target as ResourceSetExpression;
-                    if (rse != null)
-                    {
-                        switch (name.Substring(1))
-                        {
-                            case UriHelper.OPTIONFILTER:
-                                if (rse.Filter != null)
-                                {
-                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
-                                }
-                                break;
-                            case UriHelper.OPTIONORDERBY:
-                                if (rse.OrderBy != null)
-                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
-                                break;
-                            case UriHelper.OPTIONEXPAND:
-                                break;
-                            case UriHelper.OPTIONSKIP:
-                                if (rse.Skip != null)
-                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
-                                break;
-                            case UriHelper.OPTIONTOP:
-                                if (rse.Take != null)
-                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
-                                break;
-                            case UriHelper.OPTIONCOUNT:
-                                if (rse.CountOption != CountOption.None)
-                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
-                                break;
-                            default:
-                                throw new NotSupportedException(Strings.ALinq_CantAddQueryOptionStartingWithDollarSign(name));
-                        }
-                    }
-                }
-            }
-        }
-
-
-        private sealed class PropertyInfoEqualityComparer : IEqualityComparer<PropertyInfo>
-        {
-            private PropertyInfoEqualityComparer() { }
-
-            internal static readonly PropertyInfoEqualityComparer Instance = new PropertyInfoEqualityComparer();
-
-            #region IEqualityComparer<TypeUsage> Members
-
-            public bool Equals(PropertyInfo left, PropertyInfo right)
-            {
-                if (object.ReferenceEquals(left, right)) { return true; }
-
-                if (null == left || null == right) { return false; }
-
-                return object.ReferenceEquals(left.DeclaringType, right.DeclaringType) && left.Name.Equals(right.Name);
-            }
-
-            public int GetHashCode(PropertyInfo obj)
-            {
-                Debug.Assert(obj != null, "obj != null");
-                return obj.GetHashCode();
-            }
-
-            #endregion
-        }
-
-        private sealed class ExpressionPresenceVisitor : DataServiceExpressionVisitor
-        {
-            #region Private fields.
-
-            private readonly Expression target;
-
-            private bool found;
-
-            #endregion Private fields.
-
-            private ExpressionPresenceVisitor(Expression target)
-            {
-                Debug.Assert(target != null, "target != null");
-                this.target = target;
-            }
-
-            internal static bool IsExpressionPresent(Expression target, Expression tree)
-            {
-                Debug.Assert(target != null, "target != null");
-                Debug.Assert(tree != null, "tree != null");
-
-                ExpressionPresenceVisitor visitor = new ExpressionPresenceVisitor(target);
-                visitor.Visit(tree);
-                return visitor.found;
-            }
-
-            internal override Expression Visit(Expression exp)
-            {
-                Expression result;
-                
-                if (this.found || object.ReferenceEquals(this.target, exp))
-                {
-                    this.found = true;
-                    result = exp;
-                }
-                else
-                {
-                    result = base.Visit(exp);
-                }
-
-                return result;
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+    
+    internal class ResourceBinder : DataServiceExpressionVisitor
+    {
+        internal static Expression Bind(Expression e)
+        {
+            Debug.Assert(e != null, "e != null");
+
+            ResourceBinder rb = new ResourceBinder();
+            Expression boundExpression = rb.Visit(e);
+            VerifyKeyPredicates(boundExpression);
+            VerifyNotSelectManyProjection(boundExpression);
+            return boundExpression;
+        }
+
+        internal static bool IsMissingKeyPredicates(Expression expression)
+        {
+            ResourceExpression re = expression as ResourceExpression;
+            if (re != null)
+            {
+                if (IsMissingKeyPredicates(re.Source))
+                {
+                    return true;
+                }
+
+                if (re.Source != null)
+                {
+                    ResourceSetExpression rse = re.Source as ResourceSetExpression;
+                    if ((rse != null) && !rse.HasKeyPredicate)
+                    {
+                        return true;
+                    }
+                }
+            }
+
+            return false;
+        }
+
+        internal static void VerifyKeyPredicates(Expression e)
+        {
+            if (IsMissingKeyPredicates(e))
+            {
+                throw new NotSupportedException(Strings.ALinq_CantNavigateWithoutKeyPredicate);
+            }
+        }
+
+        internal static void VerifyNotSelectManyProjection(Expression expression)
+        {
+            Debug.Assert(expression != null, "expression != null");
+
+            ResourceSetExpression resourceSet = expression as ResourceSetExpression;
+            if (resourceSet != null)
+            {
+                ProjectionQueryOptionExpression projection = resourceSet.Projection;
+                if (projection != null)
+                {
+                    Debug.Assert(projection.Selector != null, "projection.Selector != null -- otherwise incorrectly constructed");
+                    MethodCallExpression call = StripTo<MethodCallExpression>(projection.Selector.Body);
+                    if (call != null && call.Method.Name == "SelectMany")
+                    {
+                        throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(call));
+                    }
+                }
+                else if (resourceSet.HasTransparentScope)
+                {
+                    throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(resourceSet));
+                }
+            }
+        }
+
+        private static Expression AnalyzePredicate(MethodCallExpression mce)
+        {
+            Debug.Assert(mce != null, "mce != null -- caller couldn't have know the expression kind otherwise");
+            Debug.Assert(mce.Method.Name == "Where", "mce.Method.Name == 'Where' -- otherwise this isn't a predicate");
+
+            ResourceSetExpression input;
+            LambdaExpression le;
+            if (!TryGetResourceSetMethodArguments(mce, out input, out le))
+            {
+                ValidationRules.RequireNonSingleton(mce.Arguments[0]);
+                return mce;
+            }
+
+
+            List<Expression> conjuncts = new List<Expression>();
+            AddConjuncts(le.Body, conjuncts);
+
+            Dictionary<ResourceSetExpression, List<Expression>> predicatesByTarget = new Dictionary<ResourceSetExpression, List<Expression>>(ReferenceEqualityComparer<ResourceSetExpression>.Instance);
+            List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
+            foreach (Expression e in conjuncts)
+            {
+                Expression reboundPredicate = InputBinder.Bind(e, input, le.Parameters[0], referencedInputs);
+                if (referencedInputs.Count > 1)
+                {
+                    return mce;
+                }
+
+                ResourceSetExpression boundTarget = (referencedInputs.Count == 0 ? input : referencedInputs[0] as ResourceSetExpression);
+                if (boundTarget == null)
+                {
+                    return mce;
+                }
+
+                List<Expression> targetPredicates = null;
+                if (!predicatesByTarget.TryGetValue(boundTarget, out targetPredicates))
+                {
+                    targetPredicates = new List<Expression>();
+                    predicatesByTarget[boundTarget] = targetPredicates;
+                }
+
+                targetPredicates.Add(reboundPredicate);
+                referencedInputs.Clear();
+            }
+
+            conjuncts = null;
+            List<Expression> inputPredicates;
+            if (predicatesByTarget.TryGetValue(input, out inputPredicates))
+            {
+                predicatesByTarget.Remove(input);
+            }
+            else
+            {
+                inputPredicates = null;
+            }
+
+            foreach (KeyValuePair<ResourceSetExpression, List<Expression>> predicates in predicatesByTarget)
+            {
+                ResourceSetExpression target = predicates.Key;
+                List<Expression> clauses = predicates.Value;
+
+                Dictionary<PropertyInfo, ConstantExpression> keyValues;
+                if (!ExtractKeyPredicate(target, clauses, out keyValues) ||
+                    clauses.Count > 0)
+                {
+                    return mce;
+                }
+
+                Debug.Assert(!target.HasQueryOptions, "Navigation source had query options?");
+
+                SetKeyPredicate(target, keyValues);
+            }
+
+            if (inputPredicates != null)
+            {
+                Dictionary<PropertyInfo, ConstantExpression> inputKeyValues;
+                if (ExtractKeyPredicate(input, inputPredicates, out inputKeyValues))
+                {
+                    if (input.HasSequenceQueryOptions)
+                    {
+                        Expression predicateFilter = BuildKeyPredicateFilter(input.CreateReference(), inputKeyValues);
+                        inputPredicates.Add(predicateFilter);
+                    }
+                    else
+                    {
+                        SetKeyPredicate(input, inputKeyValues);
+                    }
+                }
+
+                if (inputPredicates.Count > 0)
+                {
+                    if (input.KeyPredicate != null)
+                    {
+                        Expression predicateFilter = BuildKeyPredicateFilter(input.CreateReference(), input.KeyPredicate);
+                        inputPredicates.Add(predicateFilter);
+                        input.KeyPredicate = null;
+                    }
+
+                    int start;
+                    Expression newFilter;
+                    if (input.Filter != null)
+                    {
+                        start = 0;
+                        newFilter = input.Filter.Predicate;
+                    }
+                    else
+                    {
+                        start = 1;
+                        newFilter = inputPredicates[0];
+                    }
+
+                    for (int idx = start; idx < inputPredicates.Count; idx++)
+                    {
+                        newFilter = Expression.And(newFilter, inputPredicates[idx]);
+                    }
+
+                    AddSequenceQueryOption(input, new FilterQueryOptionExpression(mce.Method.ReturnType, newFilter));
+                }
+            }
+
+            return input;        }
+
+        private static void SetKeyPredicate(ResourceSetExpression rse, Dictionary<PropertyInfo, ConstantExpression> keyValues)
+        {
+            Debug.Assert(rse != null, "rse != null");
+            Debug.Assert(keyValues != null, "keyValues != null");
+
+            if (rse.KeyPredicate == null)
+            {
+                rse.KeyPredicate = new Dictionary<PropertyInfo, ConstantExpression>(EqualityComparer<PropertyInfo>.Default);
+            }
+
+            foreach(var g in keyValues)
+            {
+                if (rse.KeyPredicate.Keys.Contains(g.Key))
+                {
+                    throw Error.NotSupported(Strings.ALinq_CanOnlyApplyOneKeyPredicate);
+                }
+
+                rse.KeyPredicate.Add(g.Key, g.Value);
+            }
+        }
+
+        private static bool CollectionContentsEqual<T>(ICollection<T> left, ICollection<T> right, IEqualityComparer<T> comparer) where T : class
+        {
+            Debug.Assert(left != null, "left != null");
+            Debug.Assert(right != null, "right != null");
+            Debug.Assert(comparer != null, "comparer != null");
+
+            if (left.Count != right.Count)
+            {
+                return false;
+            }
+
+            if (left.Count == 1)
+            {
+                return comparer.Equals(left.First(), right.First());
+            }
+            else
+            {
+#if ASTORIA_LIGHT                
+                HashSet<T> leftElements = new HashSet<T>(comparer);
+                foreach (var l in left)
+                {
+                    leftElements.Add(l);
+                }
+#else
+                HashSet<T> leftElements = new HashSet<T>(left, comparer);
+#endif
+                foreach (T rightElement in right)
+                {
+                    if (!leftElements.Contains(rightElement))
+                    {
+                        return false;
+                    }
+                }
+
+                return true;
+            }
+        }
+
+        private static bool ExtractKeyPredicate(
+            ResourceSetExpression target, 
+            List<Expression> predicates, 
+            out Dictionary<PropertyInfo, ConstantExpression> keyValues)
+        {
+            Debug.Assert(target != null, "target != null");
+            Debug.Assert(predicates != null, "predicates != null");
+
+            keyValues = null;
+            List<Expression> nonKeyPredicates = null;
+
+            foreach (Expression predicate in predicates)
+            {
+                PropertyInfo property;
+                ConstantExpression constantValue;
+                if (PatternRules.MatchKeyComparison(predicate, out property, out constantValue))
+                {
+                    if (keyValues == null)
+                    {
+                        keyValues = new Dictionary<PropertyInfo, ConstantExpression>(EqualityComparer<PropertyInfo>.Default);
+                    }
+                    else if (keyValues.ContainsKey(property))
+                    {
+                        throw Error.NotSupported(Strings.ALinq_CanOnlyApplyOneKeyPredicate);
+                    }
+
+                    keyValues.Add(property, constantValue);
+                }
+                else
+                {
+                    if (nonKeyPredicates == null)
+                    {
+                        nonKeyPredicates = new List<Expression>();
+                    }
+
+                    nonKeyPredicates.Add(predicate);
+                }
+            }
+
+            Debug.Assert(keyValues != null || nonKeyPredicates != null, "No key predicates or non-key predicates found?");
+            if (keyValues != null)
+            {
+                var properties = PatternRules.GetKeyProperties(target.CreateReference().Type);
+                if (!CollectionContentsEqual(properties, keyValues.Keys, PropertyInfoEqualityComparer.Instance))
+                {
+                    keyValues = null;
+                    return false;
+                }
+            } 
+
+            if (keyValues != null)
+            {
+                predicates.Clear();
+
+                if (nonKeyPredicates != null)
+                {
+                    predicates.AddRange(nonKeyPredicates);
+                }
+            }
+
+            return keyValues != null;
+        }
+
+        private static Expression BuildKeyPredicateFilter(InputReferenceExpression input, Dictionary<PropertyInfo, ConstantExpression> keyValuesDictionary)
+        {
+            Debug.Assert(input != null, "input != null");
+            Debug.Assert(keyValuesDictionary != null, "keyValuesDictionary != null");
+            Debug.Assert(keyValuesDictionary.Count > 0, "At least one key property is required in a key predicate");
+
+            Expression retExpr = null;
+            foreach (KeyValuePair<PropertyInfo, ConstantExpression> keyValue in keyValuesDictionary)
+            {
+                Expression clause = Expression.Equal(Expression.Property(input, keyValue.Key), keyValue.Value);
+                if (retExpr == null)
+                {
+                    retExpr = clause;
+                }
+                else
+                {
+                    retExpr = Expression.And(retExpr, clause);
+                }
+            }
+
+            return retExpr;
+        }
+
+        private static void AddConjuncts(Expression e, List<Expression> conjuncts)
+        {
+            Debug.Assert(conjuncts != null, "conjuncts != null");
+            if (PatternRules.MatchAnd(e))
+            {
+                BinaryExpression be = (BinaryExpression)e;
+                AddConjuncts(be.Left, conjuncts);
+                AddConjuncts(be.Right, conjuncts);
+            }
+            else
+            {
+                conjuncts.Add(e);
+            }
+        }
+
+        internal bool AnalyzeProjection(MethodCallExpression mce, SequenceMethod sequenceMethod, out Expression e)
+        {
+            Debug.Assert(mce != null, "mce != null");
+            Debug.Assert(
+                sequenceMethod == SequenceMethod.Select || sequenceMethod == SequenceMethod.SelectManyResultSelector,
+                "sequenceMethod == SequenceMethod.Select(ManyResultSelector)");
+
+            e = mce;
+
+            bool matchMembers = sequenceMethod == SequenceMethod.SelectManyResultSelector;
+            ResourceExpression source = this.Visit(mce.Arguments[0]) as ResourceExpression;
+            if (source == null)
+            {
+                return false;
+            }
+
+            if (sequenceMethod == SequenceMethod.SelectManyResultSelector)
+            {
+                Expression collectionSelector = mce.Arguments[1];
+                if (!PatternRules.MatchParameterMemberAccess(collectionSelector))
+                {
+                    return false;
+                }
+
+                Expression resultSelector = mce.Arguments[2];
+                LambdaExpression resultLambda;
+                if (!PatternRules.MatchDoubleArgumentLambda(resultSelector, out resultLambda))
+                {
+                    return false;
+                }
+
+                if (ExpressionPresenceVisitor.IsExpressionPresent(resultLambda.Parameters[0], resultLambda.Body))
+                {
+                    return false;
+                }
+
+                List<ResourceExpression> referencedExpressions = new List<ResourceExpression>();
+                LambdaExpression collectionLambda = StripTo<LambdaExpression>(collectionSelector);
+                Expression collectorReference = InputBinder.Bind(collectionLambda.Body, source, collectionLambda.Parameters[0], referencedExpressions);
+                collectorReference = StripCastMethodCalls(collectorReference);
+                MemberExpression navigationMember;
+                if (!PatternRules.MatchPropertyProjectionSet(source, collectorReference, out navigationMember))
+                {
+                    return false;
+                }
+
+                collectorReference = navigationMember;
+
+                ResourceExpression resultSelectorSource = CreateResourceSetExpression(mce.Method.ReturnType, source, collectorReference, TypeSystem.GetElementType(collectorReference.Type));
+
+                if (!PatternRules.MatchMemberInitExpressionWithDefaultConstructor(resultSelectorSource, resultLambda) &&
+                    !PatternRules.MatchNewExpression(resultSelectorSource, resultLambda))
+                {
+                    return false;
+                }
+
+#if ASTORIA_LIGHT
+                resultLambda = ExpressionHelpers.CreateLambda(resultLambda.Body, new ParameterExpression[] { resultLambda.Parameters[1] });
+#else
+                resultLambda = Expression.Lambda(resultLambda.Body, new ParameterExpression[] { resultLambda.Parameters[1] });
+#endif
+
+                ResourceExpression resultWithProjection = resultSelectorSource.CreateCloneWithNewType(mce.Type);
+                bool isProjection;
+                try
+                {
+                    isProjection = ProjectionAnalyzer.Analyze(resultLambda, resultWithProjection, false);
+                }
+                catch (NotSupportedException)
+                {
+                    isProjection = false;
+                }
+
+                if (!isProjection)
+                {
+                    return false;
+                }
+
+                e = resultWithProjection;
+                ValidationRules.RequireCanProject(resultSelectorSource);
+            }
+            else
+            {
+                LambdaExpression lambda;
+                if (!PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out lambda))
+                {
+                    return false;
+                }
+
+                lambda = ProjectionRewriter.TryToRewrite(lambda, source.ResourceType);
+
+                ResourceExpression re = source.CreateCloneWithNewType(mce.Type);
+
+                if (!ProjectionAnalyzer.Analyze(lambda, re, matchMembers))
+                {
+                    return false;
+                }
+
+                ValidationRules.RequireCanProject(source);
+                e = re;
+            }
+
+            return true;
+        }
+
+        internal static Expression AnalyzeNavigation(MethodCallExpression mce)
+        {
+            Debug.Assert(mce != null, "mce != null");
+            Expression input = mce.Arguments[0];
+            LambdaExpression le;
+            ResourceExpression navSource;
+            Expression boundProjection;
+            MemberExpression navigationMember;
+
+            if (!PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out le))
+            {
+                return mce;
+            }         
+            else if (PatternRules.MatchIdentitySelector(le))
+            {
+                return input;
+            }
+            else if (PatternRules.MatchTransparentIdentitySelector(input, le))
+            {
+                return RemoveTransparentScope(mce.Method.ReturnType, (ResourceSetExpression)input);
+            }
+            else if (IsValidNavigationSource(input, out navSource) &&
+                TryBindToInput(navSource, le, out boundProjection) &&
+                PatternRules.MatchPropertyProjectionSingleton(navSource, boundProjection, out navigationMember))
+            {
+                boundProjection = navigationMember;
+                return CreateNavigationPropertySingletonExpression(mce.Method.ReturnType, navSource, boundProjection);
+            }
+
+            return mce;
+        }
+
+        private static bool IsValidNavigationSource(Expression input, out ResourceExpression sourceExpression)
+        {
+            ValidationRules.RequireCanNavigate(input);
+            sourceExpression = input as ResourceExpression;
+            return sourceExpression != null;
+        }
+
+        internal static Expression AnalyzeSelectMany(MethodCallExpression mce)
+        {
+            Debug.Assert(mce != null, "mce != null");
+
+            if (mce.Arguments.Count != 2 && mce.Arguments.Count != 3)
+            {
+                return mce;
+            }
+
+            ResourceExpression input;
+            if (!IsValidNavigationSource(mce.Arguments[0], out input))
+            {
+                return mce;
+            }
+
+            LambdaExpression collectorSelector;
+            if (!PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out collectorSelector))
+            {
+                return mce;
+            }
+
+            List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
+            Expression navPropRef = InputBinder.Bind(collectorSelector.Body, input, collectorSelector.Parameters[0], referencedInputs);
+            Type resourceType = TypeSystem.GetElementType(navPropRef.Type);
+
+            navPropRef = StripCastMethodCalls(navPropRef);
+
+            ResourceSetExpression rse = null;
+            MemberExpression navigationMember;
+            if (PatternRules.MatchPropertyProjectionSet(input, navPropRef, out navigationMember))
+            {
+                navPropRef = navigationMember;
+                rse = CreateResourceSetExpression(mce.Method.ReturnType, input, navPropRef, resourceType);
+            }
+            else
+            {
+                return mce;
+            }
+
+            if (mce.Arguments.Count == 3)
+            {
+                return AnalyzeSelectManySelector(mce, rse);
+            }
+            else
+            {
+                return rse;
+            }
+        }
+
+        private static Expression AnalyzeSelectManySelector(MethodCallExpression selectManyCall, ResourceSetExpression sourceResourceSet)
+        {
+            Debug.Assert(selectManyCall != null, "selectManyCall != null");
+
+            LambdaExpression selector = StripTo<LambdaExpression>(selectManyCall.Arguments[2]);
+            
+            Expression result;
+            ResourceSetExpression.TransparentAccessors transparentScope;
+            if (PatternRules.MatchTransparentScopeSelector(sourceResourceSet, selector, out transparentScope))
+            {
+                sourceResourceSet.TransparentScope = transparentScope;
+                result = sourceResourceSet;
+            }
+            else if (PatternRules.MatchIdentityProjectionResultSelector(selector))
+            {
+                result = sourceResourceSet;
+            }
+            else if (PatternRules.MatchMemberInitExpressionWithDefaultConstructor(sourceResourceSet, selector) || PatternRules.MatchNewExpression(sourceResourceSet, selector))
+            {
+#if ASTORIA_LIGHT
+                selector = ExpressionHelpers.CreateLambda(selector.Body, new ParameterExpression[] { selector.Parameters[1] }); 
+#else
+                selector = Expression.Lambda(selector.Body, new ParameterExpression[] { selector.Parameters[1] });
+#endif
+                if (!ProjectionAnalyzer.Analyze(selector, sourceResourceSet, false))
+                {
+                    result = selectManyCall;
+                }
+                else
+                {
+                    result = sourceResourceSet;
+                }
+            }
+            else
+            {
+                result = selectManyCall;
+            }
+
+            return result;
+        }
+
+        internal static Expression ApplyOrdering(MethodCallExpression mce, ResourceSetExpression input, Expression selector, bool descending, bool thenBy)
+        {
+            List<OrderByQueryOptionExpression.Selector> selectors;
+            if (!thenBy)
+            {
+                selectors = new List<OrderByQueryOptionExpression.Selector>();
+                AddSequenceQueryOption(input, new OrderByQueryOptionExpression(mce.Type, selectors));
+            }
+            else
+            {
+                Debug.Assert(input.OrderBy != null, "input.OrderBy != null");
+                selectors = input.OrderBy.Selectors;
+            }
+
+            selectors.Add(new OrderByQueryOptionExpression.Selector(selector, descending));
+
+            return input;
+        }
+
+#if !ASTORIA_LIGHT
+        private static Expression LimitCardinality(MethodCallExpression mce, int maxCardinality)
+        {
+            Debug.Assert(mce != null, "mce != null");
+            Debug.Assert(maxCardinality > 0, "Cardinality must be at least 1");
+
+            if (mce.Arguments.Count != 1)
+            {
+                return mce;
+            }
+
+            ResourceSetExpression rse = mce.Arguments[0] as ResourceSetExpression;
+            if (rse != null)
+            {
+                if (!rse.HasKeyPredicate &&                    (ResourceExpressionType)rse.NodeType != ResourceExpressionType.ResourceNavigationProperty)
+                {
+                    if (rse.Take == null || (int)rse.Take.TakeAmount.Value > maxCardinality)
+                    {
+                        AddSequenceQueryOption(rse, new TakeQueryOptionExpression(mce.Type, Expression.Constant(maxCardinality)));
+                    }
+                }
+                return mce.Arguments[0];
+            }
+            else if (mce.Arguments[0] is NavigationPropertySingletonExpression)
+            {
+                return mce.Arguments[0];
+            }
+
+            return mce;
+        }
+
+#endif
+
+        private static Expression AnalyzeCast(MethodCallExpression mce)
+        {
+            ResourceExpression re = mce.Arguments[0] as ResourceExpression;
+            if (re != null)
+            {
+                return re.CreateCloneWithNewType(mce.Method.ReturnType);
+            }
+
+            return mce;
+        }
+
+        private static Expression StripConvert(Expression e)
+        {
+            UnaryExpression ue = e as UnaryExpression;
+
+            if (ue != null &&
+                ue.NodeType == ExpressionType.Convert &&
+                ue.Type.IsGenericType && 
+                (ue.Type.GetGenericTypeDefinition() == typeof(DataServiceQuery<>) ||
+                 ue.Type.GetGenericTypeDefinition() == typeof(DataServiceQuery<>.DataServiceOrderedQuery)))
+            {
+                e = ue.Operand;
+                ResourceExpression re = e as ResourceExpression;
+                if (re != null)
+                {
+                    e = re.CreateCloneWithNewType(ue.Type);
+                }
+            }
+
+            return e;
+        }
+
+        private static Expression AnalyzeExpand(MethodCallExpression mce)
+        {
+            Expression obj = StripConvert(mce.Object);
+            ResourceExpression re = obj as ResourceExpression;
+            if (re == null)
+            {
+                return mce;
+            }
+
+            ValidationRules.RequireCanExpand(re);
+            ConstantExpression ce = StripTo<ConstantExpression>(mce.Arguments[0]);
+            string path = (string)ce.Value;
+            if (!re.ExpandPaths.Contains(path))
+            {
+                re.ExpandPaths.Add(path);
+            }
+
+            return re;
+        }
+        
+        private static Expression AnalyzeAddCustomQueryOption(MethodCallExpression mce)
+        {
+            Expression obj = StripConvert(mce.Object);
+            ResourceExpression re = obj as ResourceExpression;
+            if (re == null)
+            {
+                return mce;
+            }
+
+            ValidationRules.RequireCanAddCustomQueryOption(re);
+
+            ConstantExpression name = StripTo<ConstantExpression>(mce.Arguments[0]);
+            ConstantExpression value = StripTo<ConstantExpression>(mce.Arguments[1]);
+
+            if (((string)name.Value).Trim() == UriHelper.DOLLARSIGN + UriHelper.OPTIONEXPAND)
+            {
+                ValidationRules.RequireCanExpand(re);
+                re.ExpandPaths = re.ExpandPaths.Union(new string[] { (string) value.Value }, StringComparer.Ordinal).ToList();
+            }
+            else
+            {
+                ValidationRules.RequireLegalCustomQueryOption(mce.Arguments[0], re);
+                re.CustomQueryOptions.Add(name, value);
+            }
+
+            return re;
+        }
+
+        private static Expression AnalyzeAddCountOption(MethodCallExpression mce, CountOption countOption)
+        {
+            Expression obj = StripConvert(mce.Object);
+            ResourceExpression re = obj as ResourceExpression;
+            if (re == null)
+            {
+                return mce;
+            }
+
+            ValidationRules.RequireCanAddCount(re);
+            ValidationRules.RequireNonSingleton(re);
+            re.CountOption = countOption;
+
+            return re;
+        }
+
+        private static ResourceSetExpression CreateResourceSetExpression(Type type, ResourceExpression source, Expression memberExpression, Type resourceType)
+        {
+            Debug.Assert(type != null, "type != null");
+            Debug.Assert(source != null, "source != null");
+            Debug.Assert(memberExpression != null, "memberExpression != null");
+            Debug.Assert(resourceType != null, "resourceType != null");
+
+            Type elementType = TypeSystem.GetElementType(type);
+            Debug.Assert(elementType != null, "elementType != null -- otherwise the set isn't going to act like a collection");
+            Type expressionType = typeof(IOrderedQueryable<>).MakeGenericType(elementType);
+
+            ResourceSetExpression newResource = new ResourceSetExpression(expressionType, source, memberExpression, resourceType, source.ExpandPaths.ToList(), source.CountOption, source.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value), null);
+            source.ExpandPaths.Clear();
+            source.CountOption = CountOption.None;
+            source.CustomQueryOptions.Clear();
+            return newResource;
+        }
+
+        private static NavigationPropertySingletonExpression CreateNavigationPropertySingletonExpression(Type type, ResourceExpression source, Expression memberExpression)
+        {
+            NavigationPropertySingletonExpression newResource = new NavigationPropertySingletonExpression(type, source, memberExpression, memberExpression.Type, source.ExpandPaths.ToList(), source.CountOption, source.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value), null);
+            source.ExpandPaths.Clear();
+            source.CountOption = CountOption.None;
+            source.CustomQueryOptions.Clear();
+            return newResource;
+        }
+
+        private static ResourceSetExpression RemoveTransparentScope(Type expectedResultType, ResourceSetExpression input)
+        {
+            ResourceSetExpression newResource = new ResourceSetExpression(expectedResultType, input.Source, input.MemberExpression, input.ResourceType, input.ExpandPaths, input.CountOption, input.CustomQueryOptions, input.Projection);
+            
+            newResource.KeyPredicate = input.KeyPredicate;
+            foreach (QueryOptionExpression queryOption in input.SequenceQueryOptions)
+            {
+                newResource.AddSequenceQueryOption(queryOption);
+            }
+
+            newResource.OverrideInputReference(input);
+
+            return newResource;
+        }
+
+        internal static Expression StripConvertToAssignable(Expression e)
+        {
+            Debug.Assert(e != null, "e != null");
+            
+            Expression result;
+            UnaryExpression unary = e as UnaryExpression;
+            if (unary != null && PatternRules.MatchConvertToAssignable(unary))
+            {
+                result = unary.Operand;
+            }
+            else
+            {
+                result = e;
+            }
+
+            return result;
+        }
+
+        internal static T StripTo<T>(Expression expression) where T : Expression
+        {
+            Debug.Assert(expression != null, "expression != null");
+
+            Expression result;
+            do
+            {
+                result = expression;
+                expression = expression.NodeType == ExpressionType.Quote ? ((UnaryExpression)expression).Operand : expression;
+                expression = StripConvertToAssignable(expression);
+            }
+            while (result != expression);
+
+            return result as T;
+        }
+
+        internal override Expression VisitResourceSetExpression(ResourceSetExpression rse)
+        {
+            Debug.Assert(rse != null, "rse != null");
+
+            if ((ResourceExpressionType)rse.NodeType == ResourceExpressionType.RootResourceSet)
+            {
+
+                return new ResourceSetExpression(rse.Type, rse.Source, rse.MemberExpression, rse.ResourceType, null, CountOption.None, null, null);
+            }
+
+            return rse;
+        }
+
+        private static bool TryGetResourceSetMethodArguments(MethodCallExpression mce, out ResourceSetExpression input, out LambdaExpression lambda)
+        {
+            input = null;
+            lambda = null;
+
+            input = mce.Arguments[0] as ResourceSetExpression;
+            if (input != null &&
+                PatternRules.MatchSingleArgumentLambda(mce.Arguments[1], out lambda))
+            {
+                return true;
+            }
+
+            return false;
+        }
+
+        private static bool TryBindToInput(ResourceExpression input, LambdaExpression le, out Expression bound)
+        {
+            List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
+            bound = InputBinder.Bind(le.Body, input, le.Parameters[0], referencedInputs);
+            if (referencedInputs.Count > 1 || (referencedInputs.Count == 1 && referencedInputs[0] != input))
+            {
+                bound = null;
+            }
+
+            return bound != null;
+        }
+
+        private static Expression AnalyzeResourceSetMethod(MethodCallExpression mce, Func<MethodCallExpression, ResourceSetExpression, Expression, Expression> sequenceMethodAnalyzer)
+        {
+            ResourceSetExpression input;
+            LambdaExpression le;
+            if (!TryGetResourceSetMethodArguments(mce, out input, out le))
+            {
+                return mce;
+            }
+
+            Expression lambdaBody;
+            if (!TryBindToInput(input, le, out lambdaBody))
+            {
+                return mce;
+            }
+
+            return sequenceMethodAnalyzer(mce, input, lambdaBody);
+        }
+
+        private static Expression AnalyzeResourceSetConstantMethod(MethodCallExpression mce, Func<MethodCallExpression, ResourceExpression, ConstantExpression, Expression> constantMethodAnalyzer)
+        {
+            ResourceExpression input = (ResourceExpression)mce.Arguments[0];
+            ConstantExpression constantArg = StripTo<ConstantExpression>(mce.Arguments[1]);
+            if (null == constantArg)
+            {
+                return mce;
+            }
+
+            return constantMethodAnalyzer(mce, input, constantArg);
+        }
+
+        private static Expression AnalyzeCountMethod(MethodCallExpression mce)
+        {
+            ResourceExpression re = (ResourceExpression)mce.Arguments[0];
+            if (re == null)
+            {
+                return mce;
+            }
+
+            ValidationRules.RequireCanAddCount(re);
+            ValidationRules.RequireNonSingleton(re);
+            re.CountOption = CountOption.ValueOnly;
+
+            return re;
+        }
+
+        private static void AddSequenceQueryOption(ResourceExpression target, QueryOptionExpression qoe)
+        {
+            ValidationRules.RequireNonSingleton(target);
+            ResourceSetExpression rse = (ResourceSetExpression)target;
+
+            switch (qoe.NodeType)
+            {
+                case (ExpressionType)ResourceExpressionType.FilterQueryOption:
+                    if (rse.Skip != null)
+                    {
+                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("filter", "skip"));
+                    }
+                    else if (rse.Take != null)
+                    {
+                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("filter", "top"));
+                    }
+                    else if (rse.Projection != null)
+                    {
+                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("filter", "select"));
+                    }
+                    break;
+                case (ExpressionType)ResourceExpressionType.OrderByQueryOption:
+                    if (rse.Skip != null)
+                    {
+                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("orderby", "skip"));
+                    }
+                    else if (rse.Take != null)
+                    {
+                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("orderby", "top"));
+                    }
+                    else if (rse.Projection != null)
+                    {
+                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("orderby", "select"));
+                    }
+                    break;
+                case (ExpressionType)ResourceExpressionType.SkipQueryOption:
+                    if (rse.Take != null)
+                    {
+                        throw new NotSupportedException(Strings.ALinq_QueryOptionOutOfOrder("skip", "top"));
+                    }
+                    break;
+                default:
+                    break;
+            }
+
+            rse.AddSequenceQueryOption(qoe);
+        }
+
+        internal override Expression VisitBinary(BinaryExpression b)
+        {
+            Expression e = base.VisitBinary(b);
+            if (PatternRules.MatchStringAddition(e))
+            {
+                BinaryExpression be = StripTo<BinaryExpression>(e);
+                MethodInfo mi = typeof(string).GetMethod("Concat", new Type[] { typeof(string), typeof(string)});
+                return Expression.Call(mi, new Expression[] {be.Left, be.Right});
+            }
+
+            return e;
+        }
+
+        internal override Expression VisitMemberAccess(MemberExpression m)
+        {
+            Expression e = base.VisitMemberAccess(m);
+            MemberExpression me = StripTo<MemberExpression>(e);
+            PropertyInfo pi;
+            MethodInfo mi;
+            if (me != null &&
+                PatternRules.MatchNonPrivateReadableProperty(me, out pi) &&
+                TypeSystem.TryGetPropertyAsMethod(pi, out mi))
+            {
+                return Expression.Call(me.Expression, mi);
+            }
+
+            return e;
+        }
+
+        internal override Expression VisitMethodCall(MethodCallExpression mce)
+        {
+            Expression e;
+
+            SequenceMethod sequenceMethod;
+            if (ReflectionUtil.TryIdentifySequenceMethod(mce.Method, out sequenceMethod))
+            {
+                if (sequenceMethod == SequenceMethod.Select ||
+                    sequenceMethod == SequenceMethod.SelectManyResultSelector)
+                {
+                    if (this.AnalyzeProjection(mce, sequenceMethod, out e))
+                    {
+                        return e;
+                    }
+                }
+            }
+
+            e = base.VisitMethodCall(mce);
+            mce = e as MethodCallExpression;
+
+            if (mce != null)
+            {
+                if (ReflectionUtil.TryIdentifySequenceMethod(mce.Method, out sequenceMethod))
+                {
+                    switch (sequenceMethod)
+                    {
+                        case SequenceMethod.Where:
+                            return AnalyzePredicate(mce);
+                        case SequenceMethod.Select:
+                            return AnalyzeNavigation(mce);
+                        case SequenceMethod.SelectMany:
+                        case SequenceMethod.SelectManyResultSelector:
+                            {
+                                Expression result = AnalyzeSelectMany(mce);
+                                return result;
+                            }
+
+                        case SequenceMethod.Take:
+                            return AnalyzeResourceSetConstantMethod(mce, (callExp, resource, takeCount) => { AddSequenceQueryOption(resource, new TakeQueryOptionExpression(callExp.Type, takeCount)); return resource; });
+                        case SequenceMethod.Skip:
+                            return AnalyzeResourceSetConstantMethod(mce, (callExp, resource, skipCount) => { AddSequenceQueryOption(resource, new SkipQueryOptionExpression(callExp.Type, skipCount)); return resource; });
+                        case SequenceMethod.OrderBy:
+                            return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector,false, false));
+                        case SequenceMethod.ThenBy:
+                            return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector, false,true));
+                        case SequenceMethod.OrderByDescending:
+                            return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector, true, false));
+                        case SequenceMethod.ThenByDescending:
+                             return AnalyzeResourceSetMethod(mce, (callExp, resource, selector) => ApplyOrdering(callExp, resource, selector,true, true));
+#if !ASTORIA_LIGHT      
+                        case SequenceMethod.First:
+                        case SequenceMethod.FirstOrDefault:
+                            return LimitCardinality(mce, 1);
+                        case SequenceMethod.Single:
+                        case SequenceMethod.SingleOrDefault:
+                            return LimitCardinality(mce, 2);
+#endif
+                        case SequenceMethod.Cast:
+                            return AnalyzeCast(mce);
+                        case SequenceMethod.LongCount:
+                        case SequenceMethod.Count:
+                            return AnalyzeCountMethod(mce);
+                        default:
+                            throw Error.MethodNotSupported(mce);
+                    }
+                }
+                else if (mce.Method.DeclaringType.IsGenericType &&
+                    mce.Method.DeclaringType.GetGenericTypeDefinition() == typeof(DataServiceQuery<>))
+                {
+                    Type t = typeof(DataServiceQuery<>).MakeGenericType(mce.Method.DeclaringType.GetGenericArguments()[0]);
+
+                    if (mce.Method == t.GetMethod("Expand", new Type[] { typeof(string) }))
+                    {
+                        return AnalyzeExpand(mce);
+                    }
+                    else if (mce.Method == t.GetMethod("AddQueryOption", new Type[] { typeof(string), typeof(object) }))
+                    {
+                        return AnalyzeAddCustomQueryOption(mce);
+                    }
+                    else if (mce.Method == t.GetMethod("IncludeTotalCount"))
+                    {
+                        return AnalyzeAddCountOption(mce, CountOption.InlineAll);
+                    }
+                    else
+                    {
+                        throw Error.MethodNotSupported(mce);
+                    }
+                }
+                return mce;
+            }
+
+            return e;
+        }
+
+ 
+        private static Expression StripCastMethodCalls(Expression expression)
+        {
+            Debug.Assert(expression != null, "expression != null");
+
+            MethodCallExpression call = StripTo<MethodCallExpression>(expression);
+            while (call != null && ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Cast))
+            {
+                expression = call.Arguments[0];
+                call = StripTo<MethodCallExpression>(expression);
+            }
+
+            return expression;
+        }
+
+
+
+        internal static class PatternRules
+        {
+            internal static bool MatchConvertToAssignable(UnaryExpression expression)
+            {
+                Debug.Assert(expression != null, "expression != null");
+
+                if (expression.NodeType != ExpressionType.Convert &&
+                    expression.NodeType != ExpressionType.ConvertChecked &&
+                    expression.NodeType != ExpressionType.TypeAs)
+                {
+                    return false;
+                }
+
+                return expression.Type.IsAssignableFrom(expression.Operand.Type);
+            }
+
+            internal static bool MatchParameterMemberAccess(Expression expression)
+            {
+                Debug.Assert(expression != null, "lambda != null");
+
+                LambdaExpression lambda = StripTo<LambdaExpression>(expression);
+                if (lambda == null || lambda.Parameters.Count != 1)
+                {
+                    return false;
+                }
+
+                ParameterExpression parameter = lambda.Parameters[0];
+                Expression body = StripCastMethodCalls(lambda.Body);
+                MemberExpression memberAccess = StripTo<MemberExpression>(body);
+                while (memberAccess != null)
+                {
+                    if (memberAccess.Expression == parameter)
+                    {
+                        return true;
+                    }
+
+                    memberAccess = StripTo<MemberExpression>(memberAccess.Expression);
+                }
+
+                return false;
+            }
+
+            internal static bool MatchPropertyAccess(Expression e, out MemberExpression member, out Expression instance, out List<string> propertyPath)
+            {
+                instance = null;
+                propertyPath = null;
+
+                MemberExpression me = StripTo<MemberExpression>(e);
+                member = me;
+                while (me != null)
+                {
+                    PropertyInfo pi;
+                    if (MatchNonPrivateReadableProperty(me, out pi))
+                    {
+                        if (propertyPath == null)
+                        {
+                            propertyPath = new List<string>();
+                        }
+
+                        propertyPath.Insert(0, pi.Name);
+                        e = me.Expression;
+                        me = StripTo<MemberExpression>(e);
+                    }
+                    else
+                    {
+                        me = null;
+                    }
+                }
+
+                if (propertyPath != null)
+                {
+                    instance = e;
+                    return true;
+                }
+
+                return false;
+            }
+
+            internal static bool MatchConstant(Expression e, out ConstantExpression constExpr)
+            {
+                constExpr = e as ConstantExpression;
+                return constExpr != null;
+            }
+
+            internal static bool MatchAnd(Expression e)
+            {
+                BinaryExpression be = e as BinaryExpression;
+                return (be != null && (be.NodeType == ExpressionType.And || be.NodeType == ExpressionType.AndAlso));
+            }
+
+            internal static bool MatchNonPrivateReadableProperty(Expression e, out PropertyInfo propInfo)
+            {
+                MemberExpression me = e as MemberExpression;
+                if (me == null)
+                {
+                    propInfo = null;
+                    return false;
+                }
+
+                return MatchNonPrivateReadableProperty(me, out propInfo);
+            }
+
+           internal static bool MatchNonPrivateReadableProperty(MemberExpression me, out PropertyInfo propInfo)
+            {
+                Debug.Assert(me != null, "me != null");
+
+                propInfo = null;
+
+                if (me.Member.MemberType == MemberTypes.Property)
+                {
+                    PropertyInfo pi = (PropertyInfo)me.Member;
+                    if (pi.CanRead && !TypeSystem.IsPrivate(pi))
+                    {
+                        propInfo = pi;
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+
+           internal static bool MatchKeyProperty(Expression expression, out PropertyInfo property)
+            {
+                property = null;
+
+                 PropertyInfo pi;
+                if (!PatternRules.MatchNonPrivateReadableProperty(expression, out pi))
+                {
+                    return false;
+                }
+
+                if (GetKeyProperties(pi.ReflectedType).Contains(pi, PropertyInfoEqualityComparer.Instance))
+                {
+                    property = pi;
+                    return true;
+                }
+
+                return false;
+            }
+
+            internal static List<PropertyInfo> GetKeyProperties(Type type)
+            {
+                Debug.Assert(type != null, "type != null");
+                ClientType clientType = ClientType.Create(type, false );
+                var result = new List<PropertyInfo>();
+                foreach (var property in clientType.Properties)
+                {
+                    if (property.KeyProperty)
+                    {
+                        result.Add(property.DeclaringType.GetProperty(property.PropertyName));
+                    }
+                }
+
+                return result;
+            }
+
+            internal static bool MatchKeyComparison(Expression e, out PropertyInfo keyProperty, out ConstantExpression keyValue)
+            {
+                if (PatternRules.MatchBinaryEquality(e))
+                {
+                    BinaryExpression be = (BinaryExpression)e;
+                    if ((PatternRules.MatchKeyProperty(be.Left, out keyProperty) && PatternRules.MatchConstant(be.Right, out keyValue)) ||
+                        (PatternRules.MatchKeyProperty(be.Right, out keyProperty) && PatternRules.MatchConstant(be.Left, out keyValue)))
+                    {
+                        return keyValue.Value != null;
+                    }
+                }
+
+                keyProperty = null;
+                keyValue = null;
+                return false;
+            }
+
+           internal static bool MatchReferenceEquals(Expression expression)
+            {
+                Debug.Assert(expression != null, "expression != null");
+                MethodCallExpression call = expression as MethodCallExpression;
+                if (call == null)
+                {
+                    return false;
+                }
+
+                return call.Method == typeof(object).GetMethod("ReferenceEquals");
+            }
+
+            internal static bool MatchResource(Expression expression, out ResourceExpression resource)
+            {
+                resource = expression as ResourceExpression;
+                return resource != null;
+            }
+
+               internal static bool MatchDoubleArgumentLambda(Expression expression, out LambdaExpression lambda)
+            {
+                return MatchNaryLambda(expression, 2, out lambda);
+            }
+
+            internal static bool MatchIdentitySelector(LambdaExpression lambda)
+            {
+                Debug.Assert(lambda != null, "lambda != null");
+
+                ParameterExpression parameter = lambda.Parameters[0];
+                return parameter == StripTo<ParameterExpression>(lambda.Body);
+            }
+
+            internal static bool MatchSingleArgumentLambda(Expression expression, out LambdaExpression lambda)
+            {
+                return MatchNaryLambda(expression, 1, out lambda);
+            }
+
+            internal static bool MatchTransparentIdentitySelector(Expression input, LambdaExpression selector)
+            {
+                if (selector.Parameters.Count != 1)
+                {
+                    return false;
+                }
+
+                ResourceSetExpression rse = input as ResourceSetExpression;
+                if (rse == null || rse.TransparentScope == null)
+                {
+                    return false;
+                }
+
+                Expression potentialRef = selector.Body;
+                ParameterExpression expectedTarget = selector.Parameters[0];
+
+                MemberExpression propertyMember;
+                Expression paramRef;
+                List<string> refPath;
+                if (!MatchPropertyAccess(potentialRef, out propertyMember, out paramRef, out refPath))
+                {
+                    return false;
+                }
+
+                Debug.Assert(refPath != null, "refPath != null -- otherwise MatchPropertyAccess should not have returned true");
+                return paramRef == expectedTarget && refPath.Count == 1 && refPath[0] == rse.TransparentScope.Accessor;
+            }
+
+            internal static bool MatchIdentityProjectionResultSelector(Expression e)
+            {
+                LambdaExpression le = (LambdaExpression)e;
+                return (le.Body == le.Parameters[1]);
+            }
+
+            internal static bool MatchTransparentScopeSelector(ResourceSetExpression input, LambdaExpression resultSelector, out ResourceSetExpression.TransparentAccessors transparentScope)
+            {
+                transparentScope = null;
+
+                if (resultSelector.Body.NodeType != ExpressionType.New)
+                {
+                    return false;
+                }
+                
+                NewExpression ne = (NewExpression)resultSelector.Body;
+                if (ne.Arguments.Count < 2)
+                {
+                    return false;
+                }
+
+                if (ne.Type.BaseType != typeof(object))
+                {
+                    return false;
+                }
+
+                ParameterInfo[] constructorParams = ne.Constructor.GetParameters();
+                if (ne.Members.Count != constructorParams.Length)
+                {
+                    return false;
+                }
+
+                ResourceSetExpression inputSourceSet = input.Source as ResourceSetExpression;
+                int introducedMemberIndex = -1;
+                ParameterExpression collectorSourceParameter = resultSelector.Parameters[0];
+                ParameterExpression introducedRangeParameter = resultSelector.Parameters[1];
+                MemberInfo[] memberProperties = new MemberInfo[ne.Members.Count];
+                PropertyInfo[] properties = ne.Type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
+                Dictionary<string, Expression> sourceAccessors = new Dictionary<string, Expression>(constructorParams.Length - 1, StringComparer.Ordinal);
+                for (int i = 0; i < ne.Arguments.Count; i++)
+                {
+                    Expression argument = ne.Arguments[i];
+                    MemberInfo member = ne.Members[i];
+
+                    if (!ExpressionIsSimpleAccess(argument, resultSelector.Parameters))
+                    {
+                        return false;
+                    }
+
+                    if (member.MemberType == MemberTypes.Method)
+                    {
+                        member = properties.Where(property => property.GetGetMethod() == member).FirstOrDefault();
+                        if (member == null)
+                        {
+                            return false;
+                        }
+                    }
+
+                    if (member.Name != constructorParams[i].Name)
+                    {
+                        return false;
+                    }
+
+                    memberProperties[i] = member;
+
+                    ParameterExpression argumentAsParameter = StripTo<ParameterExpression>(argument);
+                    if (introducedRangeParameter == argumentAsParameter)
+                    {
+                        if (introducedMemberIndex != -1)
+                        {
+                            return false;
+                        }
+
+                        introducedMemberIndex = i;
+                    }
+                    else if (collectorSourceParameter == argumentAsParameter)
+                    {
+                        sourceAccessors[member.Name] = inputSourceSet.CreateReference();
+                    }
+                    else
+                    {
+                        List<ResourceExpression> referencedInputs = new List<ResourceExpression>();
+                        Expression boundArgument = InputBinder.Bind(argument, inputSourceSet, resultSelector.Parameters[0], referencedInputs);
+                        if (referencedInputs.Count != 1)
+                        {
+                            return false;
+                        }
+
+                        sourceAccessors[member.Name] = referencedInputs[0].CreateReference();
+                    }
+                }
+
+                if (introducedMemberIndex == -1)
+                {
+                    return false;
+                }
+
+                string resultAccessor = memberProperties[introducedMemberIndex].Name;
+                transparentScope = new ResourceSetExpression.TransparentAccessors(resultAccessor, sourceAccessors);
+
+                return true;
+            }
+
+            internal static bool MatchPropertyProjectionSet(ResourceExpression input, Expression potentialPropertyRef, out MemberExpression navigationMember)
+            {
+                return MatchNavigationPropertyProjection(input, potentialPropertyRef, true, out navigationMember);
+            }
+
+            internal static bool MatchPropertyProjectionSingleton(ResourceExpression input, Expression potentialPropertyRef, out MemberExpression navigationMember)
+            {
+                return MatchNavigationPropertyProjection(input, potentialPropertyRef, false, out navigationMember);
+            }
+
+            private static bool MatchNavigationPropertyProjection(ResourceExpression input, Expression potentialPropertyRef, bool requireSet, out MemberExpression navigationMember)
+            {
+                if (PatternRules.MatchNonSingletonProperty(potentialPropertyRef) == requireSet)
+                {
+                    Expression foundInstance;
+                    List<string> propertyNames;
+                    if (MatchPropertyAccess(potentialPropertyRef, out navigationMember, out foundInstance, out propertyNames))
+                    {
+                        if (foundInstance == input.CreateReference())
+                        {
+                            return true;
+                        }
+                    }
+                }
+
+                navigationMember = null;
+                return false;
+            }
+
+            internal static bool MatchMemberInitExpressionWithDefaultConstructor(Expression source, LambdaExpression e)
+            {
+                MemberInitExpression mie = StripTo<MemberInitExpression>(e.Body);
+                ResourceExpression resource;
+                return MatchResource(source, out resource) && (mie != null) && (mie.NewExpression.Arguments.Count == 0);
+            }
+
+            internal static bool MatchNewExpression(Expression source, LambdaExpression e)
+            {
+                ResourceExpression resource;
+                return MatchResource(source, out resource) && (e.Body is NewExpression);
+            }
+
+            internal static bool MatchNot(Expression expression)
+            {
+                Debug.Assert(expression != null, "expression != null");
+                return expression.NodeType == ExpressionType.Not;
+            }
+
+            internal static bool MatchNonSingletonProperty(Expression e)
+            {
+                return (TypeSystem.FindIEnumerable(e.Type) != null) && 
+                    e.Type != typeof(char[]) &&
+                    e.Type != typeof(byte[]);
+            }
+
+            internal static MatchNullCheckResult MatchNullCheck(Expression entityInScope, ConditionalExpression conditional)
+            {
+                Debug.Assert(conditional != null, "conditional != null");
+
+                MatchNullCheckResult result = new MatchNullCheckResult();
+                MatchEqualityCheckResult equalityCheck = MatchEquality(conditional.Test);
+                if (!equalityCheck.Match)
+                {
+                    return result;
+                }
+
+                Expression assignedCandidate;
+                if (equalityCheck.EqualityYieldsTrue)
+                {
+                    if (!MatchNullConstant(conditional.IfTrue))
+                    {
+                        return result;
+                    }
+
+                    assignedCandidate = conditional.IfFalse;
+                }
+                else
+                {
+                    if (!MatchNullConstant(conditional.IfFalse))
+                    {
+                        return result;
+                    }
+
+                    assignedCandidate = conditional.IfTrue;
+                }
+
+                Expression memberCandidate;
+                if (MatchNullConstant(equalityCheck.TestLeft))
+                {
+                    memberCandidate = equalityCheck.TestRight;
+                }
+                else if (MatchNullConstant(equalityCheck.TestRight))
+                {
+                    memberCandidate = equalityCheck.TestLeft;
+                }
+                else
+                {
+                    return result;
+                }
+
+                Debug.Assert(assignedCandidate != null, "assignedCandidate != null");
+                Debug.Assert(memberCandidate != null, "memberCandidate != null");
+
+                MemberAssignmentAnalysis assignedAnalysis = MemberAssignmentAnalysis.Analyze(entityInScope, assignedCandidate);
+                if (assignedAnalysis.MultiplePathsFound)
+                {
+                    return result;
+                }
+
+                MemberAssignmentAnalysis memberAnalysis = MemberAssignmentAnalysis.Analyze(entityInScope, memberCandidate);
+                if (memberAnalysis.MultiplePathsFound)
+                {
+                    return result;
+                }
+
+                Expression[] assignedExpressions = assignedAnalysis.GetExpressionsToTargetEntity();
+                Expression[] memberExpressions = memberAnalysis.GetExpressionsToTargetEntity();
+                if (memberExpressions.Length > assignedExpressions.Length)
+                {
+                    return result;
+                }
+
+                for (int i = 0; i < memberExpressions.Length; i++)
+                {
+                    Expression assigned = assignedExpressions[i];
+                    Expression member = memberExpressions[i];
+                    if (assigned == member)
+                    {
+                        continue;
+                    }
+
+                    if (assigned.NodeType != member.NodeType || assigned.NodeType != ExpressionType.MemberAccess)
+                    {
+                        return result;
+                    }
+
+                    if (((MemberExpression)assigned).Member != ((MemberExpression)member).Member)
+                    {
+                        return result;
+                    }
+                }
+
+                result.AssignExpression = assignedCandidate;
+                result.Match = true;
+                result.TestToNullExpression = memberCandidate;
+                return result;
+            }
+
+            internal static bool MatchNullConstant(Expression expression)
+            {
+                Debug.Assert(expression != null, "expression != null");
+                ConstantExpression constant = expression as ConstantExpression;
+                if (constant != null && constant.Value == null)
+                {
+                    return true;
+                }
+
+                return false;
+            }
+
+            internal static bool MatchBinaryExpression(Expression e)
+            {
+                return (e is BinaryExpression);
+            }
+
+            internal static bool MatchBinaryEquality(Expression e)
+            {
+                return (PatternRules.MatchBinaryExpression(e) && ((BinaryExpression)e).NodeType == ExpressionType.Equal);
+            }
+
+            internal static bool MatchStringAddition(Expression e)
+            {
+                if (e.NodeType == ExpressionType.Add)
+                {
+                    BinaryExpression be = e as BinaryExpression;
+                    return be != null &&
+                        be.Left.Type == typeof(string) &&
+                        be.Right.Type == typeof(string);
+                }
+                return false;
+            }
+
+            internal static bool MatchNewDataServiceCollectionOfT(NewExpression nex)
+            {
+                return nex.Type.IsGenericType && WebUtil.IsDataServiceCollectionType(nex.Type.GetGenericTypeDefinition());
+            }
+
+            internal static MatchEqualityCheckResult MatchEquality(Expression expression)
+            {
+                Debug.Assert(expression != null, "expression != null");
+
+                MatchEqualityCheckResult result = new MatchEqualityCheckResult();
+                result.Match = false;
+                result.EqualityYieldsTrue = true;
+
+                while (true)
+                {
+                    if (MatchReferenceEquals(expression))
+                    {
+                        MethodCallExpression call = (MethodCallExpression)expression;
+                        result.Match = true;
+                        result.TestLeft = call.Arguments[0];
+                        result.TestRight = call.Arguments[1];
+                        break;
+                    }
+                    else if (MatchNot(expression))
+                    {
+                        result.EqualityYieldsTrue = !result.EqualityYieldsTrue;
+                        expression = ((UnaryExpression)expression).Operand;
+                    }
+                    else
+                    {
+                        BinaryExpression test = expression as BinaryExpression;
+                        if (test == null)
+                        {
+                            break;
+                        }
+
+                        if (test.NodeType == ExpressionType.NotEqual)
+                        {
+                            result.EqualityYieldsTrue = !result.EqualityYieldsTrue;
+                        }
+                        else if (test.NodeType != ExpressionType.Equal)
+                        {
+                            break;
+                        }
+
+                        result.TestLeft = test.Left;
+                        result.TestRight = test.Right;
+                        result.Match = true;
+                        break;
+                    }
+                }
+
+                return result;
+            }
+
+            private static bool ExpressionIsSimpleAccess(Expression argument, ReadOnlyCollection<ParameterExpression> expressions)
+            {
+                Debug.Assert(argument != null, "argument != null");
+                Debug.Assert(expressions != null, "expressions != null");
+
+                Expression source = argument;
+                MemberExpression member;
+                do
+                {
+                    member = source as MemberExpression;
+                    if (member != null)
+                    {
+                        source = member.Expression;
+                    }
+                }
+                while (member != null);
+
+                ParameterExpression parameter = source as ParameterExpression;
+                if (parameter == null)
+                {
+                    return false;
+                }
+
+                return expressions.Contains(parameter);
+            }
+
+            private static bool MatchNaryLambda(Expression expression, int parameterCount, out LambdaExpression lambda)
+            {
+                lambda = null;
+
+                LambdaExpression le = StripTo<LambdaExpression>(expression);
+                if (le != null && le.Parameters.Count == parameterCount)
+                {
+                    lambda = le;
+                }
+
+                return lambda != null;
+            }
+
+            internal struct MatchNullCheckResult
+            {
+                internal Expression AssignExpression;
+
+                internal bool Match;
+
+                internal Expression TestToNullExpression;
+            }
+
+            internal struct MatchEqualityCheckResult
+            {
+                internal bool EqualityYieldsTrue;
+
+                internal bool Match;
+
+                internal Expression TestLeft;
+
+                internal Expression TestRight;
+            }
+        }
+
+        private static class ValidationRules
+        {
+            internal static void RequireCanNavigate(Expression e)
+            {
+                ResourceSetExpression resourceSet = e as ResourceSetExpression;
+                if (resourceSet != null && resourceSet.HasSequenceQueryOptions)
+                {
+                    throw new NotSupportedException(Strings.ALinq_QueryOptionsOnlyAllowedOnLeafNodes);
+                }
+
+                ResourceExpression resource;
+                if (PatternRules.MatchResource(e, out resource) && resource.Projection != null)
+                {
+                    throw new NotSupportedException(Strings.ALinq_ProjectionOnlyAllowedOnLeafNodes);
+                }
+            }
+
+            internal static void RequireCanProject(Expression e)
+            {
+                ResourceExpression re = (ResourceExpression)e;
+                if (!PatternRules.MatchResource(e, out re))
+                {
+                    throw new NotSupportedException(Strings.ALinq_CanOnlyProjectTheLeaf);
+                }
+
+                if (re.Projection != null)
+                {
+                    throw new NotSupportedException(Strings.ALinq_ProjectionCanOnlyHaveOneProjection);
+                }
+
+                if (re.ExpandPaths.Count > 0)
+                {
+                    throw new NotSupportedException(Strings.ALinq_CannotProjectWithExplicitExpansion);
+                }
+            }
+
+            internal static void RequireCanExpand(Expression e)
+            {
+                ResourceExpression re = (ResourceExpression)e;
+                if (!PatternRules.MatchResource(e, out re))
+                {
+                    throw new NotSupportedException(Strings.ALinq_CantExpand);
+                }
+
+                if (re.Projection != null)
+                {
+                    throw new NotSupportedException(Strings.ALinq_CannotProjectWithExplicitExpansion);
+                }
+            }
+
+            internal static void RequireCanAddCount(Expression e)
+            {
+                ResourceExpression re = (ResourceExpression)e;
+                if (!PatternRules.MatchResource(e, out re))
+                {
+                    throw new NotSupportedException(Strings.ALinq_CannotAddCountOption);
+                }
+
+                if (re.CountOption != CountOption.None)
+                {
+                    throw new NotSupportedException(Strings.ALinq_CannotAddCountOptionConflict);
+                }
+            }
+
+            internal static void RequireCanAddCustomQueryOption(Expression e)
+            {
+                ResourceExpression re = (ResourceExpression)e;
+                if (!PatternRules.MatchResource(e, out re))
+                {
+                    throw new NotSupportedException(Strings.ALinq_CantAddQueryOption);
+                }
+            }
+
+            internal static void RequireNonSingleton(Expression e)
+            {
+                ResourceExpression re = e as ResourceExpression;
+                if (re != null && re.IsSingleton)
+                {
+                    throw new NotSupportedException(Strings.ALinq_QueryOptionsOnlyAllowedOnSingletons);
+                }
+            }
+
+            internal static void RequireLegalCustomQueryOption(Expression e, ResourceExpression target)
+            {
+                string name = ((string)(e as ConstantExpression).Value).Trim();
+
+                if (name[0] == UriHelper.DOLLARSIGN)
+                {
+                    if (target.CustomQueryOptions.Any(c => (string)c.Key.Value == name))
+                    {
+                        throw new NotSupportedException(Strings.ALinq_CantAddDuplicateQueryOption(name));
+                    }
+
+                    ResourceSetExpression rse = target as ResourceSetExpression;
+                    if (rse != null)
+                    {
+                        switch (name.Substring(1))
+                        {
+                            case UriHelper.OPTIONFILTER:
+                                if (rse.Filter != null)
+                                {
+                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
+                                }
+                                break;
+                            case UriHelper.OPTIONORDERBY:
+                                if (rse.OrderBy != null)
+                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
+                                break;
+                            case UriHelper.OPTIONEXPAND:
+                                break;
+                            case UriHelper.OPTIONSKIP:
+                                if (rse.Skip != null)
+                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
+                                break;
+                            case UriHelper.OPTIONTOP:
+                                if (rse.Take != null)
+                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
+                                break;
+                            case UriHelper.OPTIONCOUNT:
+                                if (rse.CountOption != CountOption.None)
+                                    throw new NotSupportedException(Strings.ALinq_CantAddAstoriaQueryOption(name));
+                                break;
+                            default:
+                                throw new NotSupportedException(Strings.ALinq_CantAddQueryOptionStartingWithDollarSign(name));
+                        }
+                    }
+                }
+            }
+        }
+
+
+        private sealed class PropertyInfoEqualityComparer : IEqualityComparer<PropertyInfo>
+        {
+            private PropertyInfoEqualityComparer() { }
+
+            internal static readonly PropertyInfoEqualityComparer Instance = new PropertyInfoEqualityComparer();
+
+            #region IEqualityComparer<TypeUsage> Members
+
+            public bool Equals(PropertyInfo left, PropertyInfo right)
+            {
+                if (object.ReferenceEquals(left, right)) { return true; }
+
+                if (null == left || null == right) { return false; }
+
+                return object.ReferenceEquals(left.DeclaringType, right.DeclaringType) && left.Name.Equals(right.Name);
+            }
+
+            public int GetHashCode(PropertyInfo obj)
+            {
+                Debug.Assert(obj != null, "obj != null");
+                return obj.GetHashCode();
+            }
+
+            #endregion
+        }
+
+        private sealed class ExpressionPresenceVisitor : DataServiceExpressionVisitor
+        {
+            #region Private fields.
+
+            private readonly Expression target;
+
+            private bool found;
+
+            #endregion Private fields.
+
+            private ExpressionPresenceVisitor(Expression target)
+            {
+                Debug.Assert(target != null, "target != null");
+                this.target = target;
+            }
+
+            internal static bool IsExpressionPresent(Expression target, Expression tree)
+            {
+                Debug.Assert(target != null, "target != null");
+                Debug.Assert(tree != null, "tree != null");
+
+                ExpressionPresenceVisitor visitor = new ExpressionPresenceVisitor(target);
+                visitor.Visit(tree);
+                return visitor.found;
+            }
+
+            internal override Expression Visit(Expression exp)
+            {
+                Expression result;
+                
+                if (this.found || object.ReferenceEquals(this.target, exp))
+                {
+                    this.found = true;
+                    result = exp;
+                }
+                else
+                {
+                    result = base.Visit(exp);
+                }
+
+                return result;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceExpression.cs
@@ -1,110 +1,110 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal enum CountOption
-    {
-        None,
-
-        ValueOnly,
-
-        InlineAll
-    }
-
-    internal abstract class ResourceExpression : Expression
-    {
-        #region Fields.
-
-        protected readonly Expression source;
-
-        protected InputReferenceExpression inputRef;
-
-        private List<string> expandPaths;
-
-        private CountOption countOption;
-
-        private Dictionary<ConstantExpression, ConstantExpression> customQueryOptions;
-
-        private ProjectionQueryOptionExpression projection;
-
-        #endregion Fields.
-
-        internal ResourceExpression(Expression source, ExpressionType nodeType, Type type, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection)
-            : base(nodeType, type)
-        {
-            this.expandPaths = expandPaths ?? new List<string>();
-            this.countOption = countOption;
-            this.customQueryOptions = customQueryOptions ?? new Dictionary<ConstantExpression, ConstantExpression>(ReferenceEqualityComparer<ConstantExpression>.Instance);
-            this.projection = projection;
-            this.source = source;
-        }
-
-        abstract internal ResourceExpression CreateCloneWithNewType(Type type);
-
-        abstract internal bool HasQueryOptions { get; }
-
-        internal abstract Type ResourceType { get; }
-
-        abstract internal bool IsSingleton { get; }
-
-        internal virtual List<string> ExpandPaths
-        {
-            get { return this.expandPaths; }
-            set { this.expandPaths = value; }
-        }
-
-        internal virtual CountOption CountOption
-        {
-            get { return this.countOption; }
-            set { this.countOption = value; }
-        }
-
-        internal virtual Dictionary<ConstantExpression, ConstantExpression> CustomQueryOptions
-        {
-            get { return this.customQueryOptions; }
-            set { this.customQueryOptions = value; }
-        }
-
-        internal ProjectionQueryOptionExpression Projection
-        {
-            get { return this.projection; }
-            set { this.projection = value; }
-        }
-
-        internal Expression Source
-        {
-            get
-            {
-                return this.source;
-            }
-        }
-
-        internal InputReferenceExpression CreateReference()
-        {
-            if (this.inputRef == null)
-            {
-                this.inputRef = new InputReferenceExpression(this);
-            }
-
-            return this.inputRef;
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal enum CountOption
+    {
+        None,
+
+        ValueOnly,
+
+        InlineAll
+    }
+
+    internal abstract class ResourceExpression : Expression
+    {
+        #region Fields.
+
+        protected readonly Expression source;
+
+        protected InputReferenceExpression inputRef;
+
+        private List<string> expandPaths;
+
+        private CountOption countOption;
+
+        private Dictionary<ConstantExpression, ConstantExpression> customQueryOptions;
+
+        private ProjectionQueryOptionExpression projection;
+
+        #endregion Fields.
+
+        internal ResourceExpression(Expression source, ExpressionType nodeType, Type type, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection)
+            : base(nodeType, type)
+        {
+            this.expandPaths = expandPaths ?? new List<string>();
+            this.countOption = countOption;
+            this.customQueryOptions = customQueryOptions ?? new Dictionary<ConstantExpression, ConstantExpression>(ReferenceEqualityComparer<ConstantExpression>.Instance);
+            this.projection = projection;
+            this.source = source;
+        }
+
+        abstract internal ResourceExpression CreateCloneWithNewType(Type type);
+
+        abstract internal bool HasQueryOptions { get; }
+
+        internal abstract Type ResourceType { get; }
+
+        abstract internal bool IsSingleton { get; }
+
+        internal virtual List<string> ExpandPaths
+        {
+            get { return this.expandPaths; }
+            set { this.expandPaths = value; }
+        }
+
+        internal virtual CountOption CountOption
+        {
+            get { return this.countOption; }
+            set { this.countOption = value; }
+        }
+
+        internal virtual Dictionary<ConstantExpression, ConstantExpression> CustomQueryOptions
+        {
+            get { return this.customQueryOptions; }
+            set { this.customQueryOptions = value; }
+        }
+
+        internal ProjectionQueryOptionExpression Projection
+        {
+            get { return this.projection; }
+            set { this.projection = value; }
+        }
+
+        internal Expression Source
+        {
+            get
+            {
+                return this.source;
+            }
+        }
+
+        internal InputReferenceExpression CreateReference()
+        {
+            if (this.inputRef == null)
+            {
+                this.inputRef = new InputReferenceExpression(this);
+            }
+
+            return this.inputRef;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceExpressionType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceExpressionType.cs
@@ -1,34 +1,34 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    internal enum ResourceExpressionType
-    {
-        RootResourceSet = 10000,
-
-        ResourceNavigationProperty,
-
-        ResourceNavigationPropertySingleton,
-
-        TakeQueryOption,
-
-        SkipQueryOption,
-
-        OrderByQueryOption,
-
-        FilterQueryOption,
-
-        InputReference,
-
-        ProjectionQueryOption
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    internal enum ResourceExpressionType
+    {
+        RootResourceSet = 10000,
+
+        ResourceNavigationProperty,
+
+        ResourceNavigationPropertySingleton,
+
+        TakeQueryOption,
+
+        SkipQueryOption,
+
+        OrderByQueryOption,
+
+        FilterQueryOption,
+
+        InputReference,
+
+        ProjectionQueryOption
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceSetExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/ResourceSetExpression.cs
@@ -1,218 +1,218 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("ResourceSetExpression {Source}.{MemberExpression}")]
-    internal class ResourceSetExpression : ResourceExpression
-    {
-        #region Private fields.
-
-        private readonly Type resourceType;
-
-        private readonly Expression member;
-
-        private Dictionary<PropertyInfo, ConstantExpression> keyFilter;
-
-        private List<QueryOptionExpression> sequenceQueryOptions;
-
-        private TransparentAccessors transparentScope;
-
-        #endregion Private fields.
-
-        internal ResourceSetExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection)
-            : base(source, source != null ? (ExpressionType)ResourceExpressionType.ResourceNavigationProperty : (ExpressionType)ResourceExpressionType.RootResourceSet, type, expandPaths, countOption, customQueryOptions, projection)
-        {
-            Debug.Assert(type != null, "type != null");
-            Debug.Assert(memberExpression != null, "memberExpression != null");
-            Debug.Assert(resourceType != null, "resourceType != null");
-            Debug.Assert(
-                (source == null && memberExpression is ConstantExpression) ||
-                (source != null && memberExpression is MemberExpression),
-                "source is null with constant entity set name, or not null with member expression");
-
-            this.member = memberExpression;
-            this.resourceType = resourceType;
-            this.sequenceQueryOptions = new List<QueryOptionExpression>();
-        }
-
-        #region Internal properties.
-
-        internal Expression MemberExpression
-        {
-            get { return this.member; }
-        }
-
-        internal override Type ResourceType
-        {
-            get { return this.resourceType; }
-        }
-
-        internal bool HasTransparentScope
-        {
-            get { return this.transparentScope != null; } 
-        }
-
-        internal TransparentAccessors TransparentScope
-        {
-            get { return this.transparentScope;  }
-            set { this.transparentScope = value; }
-        }
-
-        internal bool HasKeyPredicate
-        {
-            get { return this.keyFilter != null; }
-        }
-
-        internal Dictionary<PropertyInfo, ConstantExpression> KeyPredicate
-        {
-            get { return this.keyFilter; }
-            set { this.keyFilter = value; }
-        }
-
-        internal override bool IsSingleton
-        {
-            get { return this.HasKeyPredicate; }
-        }
-
-        internal override bool HasQueryOptions
-        {
-	        get 
-            { 
-                return this.sequenceQueryOptions.Count > 0 ||
-                    this.ExpandPaths.Count > 0 ||
-                    this.CountOption == CountOption.InlineAll ||                    this.CustomQueryOptions.Count > 0 ||
-                    this.Projection != null;
-            }
-        }
-
-        internal FilterQueryOptionExpression Filter
-        {
-            get
-            {
-                return this.sequenceQueryOptions.OfType<FilterQueryOptionExpression>().SingleOrDefault();
-            }
-        }
-
-        internal OrderByQueryOptionExpression OrderBy
-        {
-            get { return this.sequenceQueryOptions.OfType<OrderByQueryOptionExpression>().SingleOrDefault(); }
-        }
-
-        internal SkipQueryOptionExpression Skip
-        {
-            get { return this.sequenceQueryOptions.OfType<SkipQueryOptionExpression>().SingleOrDefault(); }
-        }
-
-        internal TakeQueryOptionExpression Take
-        {
-            get { return this.sequenceQueryOptions.OfType<TakeQueryOptionExpression>().SingleOrDefault(); }
-        }
-
-        internal IEnumerable<QueryOptionExpression> SequenceQueryOptions
-        {
-            get { return this.sequenceQueryOptions.ToList(); }
-        }
-
-        internal bool HasSequenceQueryOptions
-        {
-            get { return this.sequenceQueryOptions.Count > 0; }
-        }
-
-        #endregion Internal properties.
-
-        #region Internal methods.
-
-        internal override ResourceExpression CreateCloneWithNewType(Type type)
-        {
-            ResourceSetExpression rse = new ResourceSetExpression(
-                type, 
-                this.source, 
-                this.MemberExpression, 
-                TypeSystem.GetElementType(type),
-                this.ExpandPaths.ToList(),
-                this.CountOption,
-                this.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value),
-                this.Projection);
-            rse.keyFilter = this.keyFilter;
-            rse.sequenceQueryOptions = this.sequenceQueryOptions;
-            rse.transparentScope = this.transparentScope;
-            return rse;
-        }
-
-        internal void AddSequenceQueryOption(QueryOptionExpression qoe)
-        {
-            Debug.Assert(qoe != null, "qoe != null");
-            QueryOptionExpression old = this.sequenceQueryOptions.Where(o => o.GetType() == qoe.GetType()).FirstOrDefault();
-            if (old != null)
-            {
-                qoe = qoe.ComposeMultipleSpecification(old);
-                this.sequenceQueryOptions.Remove(old);
-            }
-
-            this.sequenceQueryOptions.Add(qoe);
-        }
-
-        internal void OverrideInputReference(ResourceSetExpression newInput)
-        {
-            Debug.Assert(newInput != null, "Original resource set cannot be null");
-            Debug.Assert(this.inputRef == null, "OverrideInputReference cannot be called if the target has already been referenced");
-
-            InputReferenceExpression inputRef = newInput.inputRef;
-            if (inputRef != null)
-            {
-                this.inputRef = inputRef;
-                inputRef.OverrideTarget(this);
-            }
-        }
-
-        #endregion Internal methods.
-
-        [DebuggerDisplay("{ToString()}")]
-        internal class TransparentAccessors
-        {
-            #region Internal fields.
-
-            internal readonly string Accessor;
-
-            internal readonly Dictionary<string, Expression> SourceAccessors;
-
-            #endregion Internal fields.
-
-            internal TransparentAccessors(string acc, Dictionary<string, Expression> sourceAccesors)
-            {
-                Debug.Assert(!string.IsNullOrEmpty(acc), "Set accessor cannot be null or empty");
-                Debug.Assert(sourceAccesors != null, "sourceAccesors != null");
-
-                this.Accessor = acc;
-                this.SourceAccessors = sourceAccesors;
-            }
-
-            public override string ToString()
-            {
-                string result = "SourceAccessors=[" + string.Join(",", this.SourceAccessors.Keys.ToArray());
-                result += "] ->* Accessor=" + this.Accessor;
-                return result;
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("ResourceSetExpression {Source}.{MemberExpression}")]
+    internal class ResourceSetExpression : ResourceExpression
+    {
+        #region Private fields.
+
+        private readonly Type resourceType;
+
+        private readonly Expression member;
+
+        private Dictionary<PropertyInfo, ConstantExpression> keyFilter;
+
+        private List<QueryOptionExpression> sequenceQueryOptions;
+
+        private TransparentAccessors transparentScope;
+
+        #endregion Private fields.
+
+        internal ResourceSetExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection)
+            : base(source, source != null ? (ExpressionType)ResourceExpressionType.ResourceNavigationProperty : (ExpressionType)ResourceExpressionType.RootResourceSet, type, expandPaths, countOption, customQueryOptions, projection)
+        {
+            Debug.Assert(type != null, "type != null");
+            Debug.Assert(memberExpression != null, "memberExpression != null");
+            Debug.Assert(resourceType != null, "resourceType != null");
+            Debug.Assert(
+                (source == null && memberExpression is ConstantExpression) ||
+                (source != null && memberExpression is MemberExpression),
+                "source is null with constant entity set name, or not null with member expression");
+
+            this.member = memberExpression;
+            this.resourceType = resourceType;
+            this.sequenceQueryOptions = new List<QueryOptionExpression>();
+        }
+
+        #region Internal properties.
+
+        internal Expression MemberExpression
+        {
+            get { return this.member; }
+        }
+
+        internal override Type ResourceType
+        {
+            get { return this.resourceType; }
+        }
+
+        internal bool HasTransparentScope
+        {
+            get { return this.transparentScope != null; } 
+        }
+
+        internal TransparentAccessors TransparentScope
+        {
+            get { return this.transparentScope;  }
+            set { this.transparentScope = value; }
+        }
+
+        internal bool HasKeyPredicate
+        {
+            get { return this.keyFilter != null; }
+        }
+
+        internal Dictionary<PropertyInfo, ConstantExpression> KeyPredicate
+        {
+            get { return this.keyFilter; }
+            set { this.keyFilter = value; }
+        }
+
+        internal override bool IsSingleton
+        {
+            get { return this.HasKeyPredicate; }
+        }
+
+        internal override bool HasQueryOptions
+        {
+	        get 
+            { 
+                return this.sequenceQueryOptions.Count > 0 ||
+                    this.ExpandPaths.Count > 0 ||
+                    this.CountOption == CountOption.InlineAll ||                    this.CustomQueryOptions.Count > 0 ||
+                    this.Projection != null;
+            }
+        }
+
+        internal FilterQueryOptionExpression Filter
+        {
+            get
+            {
+                return this.sequenceQueryOptions.OfType<FilterQueryOptionExpression>().SingleOrDefault();
+            }
+        }
+
+        internal OrderByQueryOptionExpression OrderBy
+        {
+            get { return this.sequenceQueryOptions.OfType<OrderByQueryOptionExpression>().SingleOrDefault(); }
+        }
+
+        internal SkipQueryOptionExpression Skip
+        {
+            get { return this.sequenceQueryOptions.OfType<SkipQueryOptionExpression>().SingleOrDefault(); }
+        }
+
+        internal TakeQueryOptionExpression Take
+        {
+            get { return this.sequenceQueryOptions.OfType<TakeQueryOptionExpression>().SingleOrDefault(); }
+        }
+
+        internal IEnumerable<QueryOptionExpression> SequenceQueryOptions
+        {
+            get { return this.sequenceQueryOptions.ToList(); }
+        }
+
+        internal bool HasSequenceQueryOptions
+        {
+            get { return this.sequenceQueryOptions.Count > 0; }
+        }
+
+        #endregion Internal properties.
+
+        #region Internal methods.
+
+        internal override ResourceExpression CreateCloneWithNewType(Type type)
+        {
+            ResourceSetExpression rse = new ResourceSetExpression(
+                type, 
+                this.source, 
+                this.MemberExpression, 
+                TypeSystem.GetElementType(type),
+                this.ExpandPaths.ToList(),
+                this.CountOption,
+                this.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value),
+                this.Projection);
+            rse.keyFilter = this.keyFilter;
+            rse.sequenceQueryOptions = this.sequenceQueryOptions;
+            rse.transparentScope = this.transparentScope;
+            return rse;
+        }
+
+        internal void AddSequenceQueryOption(QueryOptionExpression qoe)
+        {
+            Debug.Assert(qoe != null, "qoe != null");
+            QueryOptionExpression old = this.sequenceQueryOptions.Where(o => o.GetType() == qoe.GetType()).FirstOrDefault();
+            if (old != null)
+            {
+                qoe = qoe.ComposeMultipleSpecification(old);
+                this.sequenceQueryOptions.Remove(old);
+            }
+
+            this.sequenceQueryOptions.Add(qoe);
+        }
+
+        internal void OverrideInputReference(ResourceSetExpression newInput)
+        {
+            Debug.Assert(newInput != null, "Original resource set cannot be null");
+            Debug.Assert(this.inputRef == null, "OverrideInputReference cannot be called if the target has already been referenced");
+
+            InputReferenceExpression inputRef = newInput.inputRef;
+            if (inputRef != null)
+            {
+                this.inputRef = inputRef;
+                inputRef.OverrideTarget(this);
+            }
+        }
+
+        #endregion Internal methods.
+
+        [DebuggerDisplay("{ToString()}")]
+        internal class TransparentAccessors
+        {
+            #region Internal fields.
+
+            internal readonly string Accessor;
+
+            internal readonly Dictionary<string, Expression> SourceAccessors;
+
+            #endregion Internal fields.
+
+            internal TransparentAccessors(string acc, Dictionary<string, Expression> sourceAccesors)
+            {
+                Debug.Assert(!string.IsNullOrEmpty(acc), "Set accessor cannot be null or empty");
+                Debug.Assert(sourceAccesors != null, "sourceAccesors != null");
+
+                this.Accessor = acc;
+                this.SourceAccessors = sourceAccesors;
+            }
+
+            public override string ToString()
+            {
+                string result = "SourceAccessors=[" + string.Join(",", this.SourceAccessors.Keys.ToArray());
+                result += "] ->* Accessor=" + this.Accessor;
+                return result;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/SkipQueryOptionExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/SkipQueryOptionExpression.cs
@@ -1,51 +1,51 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-    [DebuggerDisplay("SkipQueryOptionExpression {SkipAmount}")]
-    internal class SkipQueryOptionExpression : QueryOptionExpression
-    {
-        private ConstantExpression skipAmount;
-
-        internal SkipQueryOptionExpression(Type type, ConstantExpression skipAmount)
-            : base((ExpressionType)ResourceExpressionType.SkipQueryOption, type)
-        {
-            this.skipAmount = skipAmount;
-        }
-
-        internal ConstantExpression SkipAmount
-        {
-            get
-            {
-                return this.skipAmount;
-            }
-        }
-
-        internal override QueryOptionExpression ComposeMultipleSpecification(QueryOptionExpression previous)
-        {
-            Debug.Assert(previous != null, "other != null");
-            Debug.Assert(previous.GetType() == this.GetType(), "other.GetType == this.GetType() -- otherwise it's not the same specification");
-            Debug.Assert(this.skipAmount != null, "this.skipAmount != null");
-            Debug.Assert(
-                this.skipAmount.Type == typeof(int),
-                "this.skipAmount.Type == typeof(int) -- otherwise it wouldn't have matched the Enumerable.Skip(source, int count) signature");
-            int thisValue = (int)this.skipAmount.Value;
-            int previousValue = (int)((SkipQueryOptionExpression)previous).skipAmount.Value;
-            return new SkipQueryOptionExpression(this.Type, Expression.Constant(thisValue + previousValue, typeof(int)));
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+    [DebuggerDisplay("SkipQueryOptionExpression {SkipAmount}")]
+    internal class SkipQueryOptionExpression : QueryOptionExpression
+    {
+        private ConstantExpression skipAmount;
+
+        internal SkipQueryOptionExpression(Type type, ConstantExpression skipAmount)
+            : base((ExpressionType)ResourceExpressionType.SkipQueryOption, type)
+        {
+            this.skipAmount = skipAmount;
+        }
+
+        internal ConstantExpression SkipAmount
+        {
+            get
+            {
+                return this.skipAmount;
+            }
+        }
+
+        internal override QueryOptionExpression ComposeMultipleSpecification(QueryOptionExpression previous)
+        {
+            Debug.Assert(previous != null, "other != null");
+            Debug.Assert(previous.GetType() == this.GetType(), "other.GetType == this.GetType() -- otherwise it's not the same specification");
+            Debug.Assert(this.skipAmount != null, "this.skipAmount != null");
+            Debug.Assert(
+                this.skipAmount.Type == typeof(int),
+                "this.skipAmount.Type == typeof(int) -- otherwise it wouldn't have matched the Enumerable.Skip(source, int count) signature");
+            int thisValue = (int)this.skipAmount.Value;
+            int previousValue = (int)((SkipQueryOptionExpression)previous).skipAmount.Value;
+            return new SkipQueryOptionExpression(this.Type, Expression.Constant(thisValue + previousValue, typeof(int)));
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/TakeQueryOptionExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/TakeQueryOptionExpression.cs
@@ -1,51 +1,51 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-    [DebuggerDisplay("TakeQueryOptionExpression {TakeAmount}")]
-    internal class TakeQueryOptionExpression : QueryOptionExpression
-    {
-        private ConstantExpression takeAmount;
-
-        internal TakeQueryOptionExpression(Type type, ConstantExpression takeAmount)
-            : base((ExpressionType)ResourceExpressionType.TakeQueryOption, type)
-        {
-            this.takeAmount = takeAmount;
-        }
-
-        internal ConstantExpression TakeAmount
-        {
-            get
-            {
-                return this.takeAmount;
-            }
-        }
-
-        internal override QueryOptionExpression ComposeMultipleSpecification(QueryOptionExpression previous)
-        {
-            Debug.Assert(previous != null, "other != null");
-            Debug.Assert(previous.GetType() == this.GetType(), "other.GetType == this.GetType() -- otherwise it's not the same specification");
-            Debug.Assert(this.takeAmount != null, "this.takeAmount != null");
-            Debug.Assert(
-                this.takeAmount.Type == typeof(int),
-                "this.takeAmount.Type == typeof(int) -- otherwise it wouldn't have matched the Enumerable.Take(source, int count) signature");
-            int thisValue = (int)this.takeAmount.Value;
-            int previousValue = (int)((TakeQueryOptionExpression)previous).takeAmount.Value;
-            return (thisValue < previousValue) ? this : previous;
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+    [DebuggerDisplay("TakeQueryOptionExpression {TakeAmount}")]
+    internal class TakeQueryOptionExpression : QueryOptionExpression
+    {
+        private ConstantExpression takeAmount;
+
+        internal TakeQueryOptionExpression(Type type, ConstantExpression takeAmount)
+            : base((ExpressionType)ResourceExpressionType.TakeQueryOption, type)
+        {
+            this.takeAmount = takeAmount;
+        }
+
+        internal ConstantExpression TakeAmount
+        {
+            get
+            {
+                return this.takeAmount;
+            }
+        }
+
+        internal override QueryOptionExpression ComposeMultipleSpecification(QueryOptionExpression previous)
+        {
+            Debug.Assert(previous != null, "other != null");
+            Debug.Assert(previous.GetType() == this.GetType(), "other.GetType == this.GetType() -- otherwise it's not the same specification");
+            Debug.Assert(this.takeAmount != null, "this.takeAmount != null");
+            Debug.Assert(
+                this.takeAmount.Type == typeof(int),
+                "this.takeAmount.Type == typeof(int) -- otherwise it wouldn't have matched the Enumerable.Take(source, int count) signature");
+            int thisValue = (int)this.takeAmount.Value;
+            int previousValue = (int)((TakeQueryOptionExpression)previous).takeAmount.Value;
+            return (thisValue < previousValue) ? this : previous;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/TypeSystem.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/TypeSystem.cs
@@ -1,196 +1,196 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Reflection;
-
-    internal static class TypeSystem
-    {
-        private static readonly Dictionary<MethodInfo, string> expressionMethodMap;
-
-        private static readonly Dictionary<string, string> expressionVBMethodMap;
-
-        private static readonly Dictionary<PropertyInfo, MethodInfo> propertiesAsMethodsMap;
-
-#if !ASTORIA_LIGHT
-        private const string VisualBasicAssemblyFullName = "Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=" + AssemblyRef.MicrosoftPublicKeyToken;
-#else
-        private const string VisualBasicAssemblyFullName = "Microsoft.VisualBasic, Version=2.0.5.0, Culture=neutral, PublicKeyToken=" + AssemblyRef.MicrosoftSilverlightPublicKeyToken;
-#endif
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline", Justification = "Cleaner code")]
-        static TypeSystem()
-        {
-#if !ASTORIA_LIGHT
-            const int ExpectedCount = 24;
-#else
-            const int ExpectedCount = 22;
-#endif
-            expressionMethodMap = new Dictionary<MethodInfo, string>(ExpectedCount, EqualityComparer<MethodInfo>.Default);
-            expressionMethodMap.Add(typeof(string).GetMethod("Contains", new Type[] { typeof(string) }), @"substringof");
-            expressionMethodMap.Add(typeof(string).GetMethod("EndsWith", new Type[] { typeof(string) }), @"endswith");
-            expressionMethodMap.Add(typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) }), @"startswith");
-            expressionMethodMap.Add(typeof(string).GetMethod("IndexOf", new Type[] { typeof(string) }), @"indexof");
-            expressionMethodMap.Add(typeof(string).GetMethod("Replace", new Type[] { typeof(string), typeof(string) }), @"replace");
-            expressionMethodMap.Add(typeof(string).GetMethod("Substring", new Type[] { typeof(int) }), @"substring");
-            expressionMethodMap.Add(typeof(string).GetMethod("Substring", new Type[] { typeof(int), typeof(int) }), @"substring");
-            expressionMethodMap.Add(typeof(string).GetMethod("ToLower", Type.EmptyTypes), @"tolower");
-            expressionMethodMap.Add(typeof(string).GetMethod("ToUpper", Type.EmptyTypes), @"toupper");
-            expressionMethodMap.Add(typeof(string).GetMethod("Trim", Type.EmptyTypes), @"trim");
-            expressionMethodMap.Add(typeof(string).GetMethod("Concat", new Type[] { typeof(string), typeof(string) }, null), @"concat");   
-            expressionMethodMap.Add(typeof(string).GetProperty("Length", typeof(int)).GetGetMethod(), @"length");
-
-            expressionMethodMap.Add(typeof(DateTime).GetProperty("Day", typeof(int)).GetGetMethod(), @"day");
-            expressionMethodMap.Add(typeof(DateTime).GetProperty("Hour", typeof(int)).GetGetMethod(), @"hour");
-            expressionMethodMap.Add(typeof(DateTime).GetProperty("Month", typeof(int)).GetGetMethod(), @"month");
-            expressionMethodMap.Add(typeof(DateTime).GetProperty("Minute", typeof(int)).GetGetMethod(), @"minute");
-            expressionMethodMap.Add(typeof(DateTime).GetProperty("Second", typeof(int)).GetGetMethod(), @"second");
-            expressionMethodMap.Add(typeof(DateTime).GetProperty("Year", typeof(int)).GetGetMethod(), @"year");
-
-            expressionMethodMap.Add(typeof(Math).GetMethod("Round", new Type[] { typeof(double) }), @"round");
-            expressionMethodMap.Add(typeof(Math).GetMethod("Round", new Type[] { typeof(decimal) }), @"round");
-            expressionMethodMap.Add(typeof(Math).GetMethod("Floor", new Type[] { typeof(double) }), @"floor");
-#if !ASTORIA_LIGHT            
-            expressionMethodMap.Add(typeof(Math).GetMethod("Floor", new Type[] { typeof(decimal) }), @"floor");
-#endif
-            expressionMethodMap.Add(typeof(Math).GetMethod("Ceiling", new Type[] { typeof(double) }), @"ceiling");
-#if !ASTORIA_LIGHT            
-            expressionMethodMap.Add(typeof(Math).GetMethod("Ceiling", new Type[] { typeof(decimal) }), @"ceiling");
-#endif
-
-            Debug.Assert(expressionMethodMap.Count == ExpectedCount, "expressionMethodMap.Count == ExpectedCount");
-
-            expressionVBMethodMap = new Dictionary<string, string>(EqualityComparer<string>.Default);
-
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.Trim", @"trim");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.Len", @"length");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.Mid", @"substring");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.UCase", @"toupper");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.LCase", @"tolower");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Year", @"year");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Month", @"month");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Day", @"day");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Hour", @"hour");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Minute", @"minute");
-            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Second", @"second");
-
-            Debug.Assert(expressionVBMethodMap.Count == 11, "expressionVBMethodMap.Count == 11");
-
-            propertiesAsMethodsMap = new Dictionary<PropertyInfo, MethodInfo>(EqualityComparer<PropertyInfo>.Default);
-            propertiesAsMethodsMap.Add(
-                typeof(string).GetProperty("Length", typeof(int)), 
-                typeof(string).GetProperty("Length", typeof(int)).GetGetMethod());
-            propertiesAsMethodsMap.Add(
-                typeof(DateTime).GetProperty("Day", typeof(int)), 
-                typeof(DateTime).GetProperty("Day", typeof(int)).GetGetMethod());
-            propertiesAsMethodsMap.Add(
-                typeof(DateTime).GetProperty("Hour", typeof(int)), 
-                typeof(DateTime).GetProperty("Hour", typeof(int)).GetGetMethod());
-            propertiesAsMethodsMap.Add(
-                typeof(DateTime).GetProperty("Minute", typeof(int)), 
-                typeof(DateTime).GetProperty("Minute", typeof(int)).GetGetMethod());
-            propertiesAsMethodsMap.Add(
-                typeof(DateTime).GetProperty("Second", typeof(int)), 
-                typeof(DateTime).GetProperty("Second", typeof(int)).GetGetMethod());
-            propertiesAsMethodsMap.Add(
-                typeof(DateTime).GetProperty("Month", typeof(int)),
-                typeof(DateTime).GetProperty("Month", typeof(int)).GetGetMethod());
-            propertiesAsMethodsMap.Add(
-                typeof(DateTime).GetProperty("Year", typeof(int)), 
-                typeof(DateTime).GetProperty("Year", typeof(int)).GetGetMethod());
-
-            Debug.Assert(propertiesAsMethodsMap.Count == 7, "propertiesAsMethodsMap.Count == 7");
-        }
-
-        internal static bool TryGetQueryOptionMethod(MethodInfo mi, out string methodName)
-        {
-            return (expressionMethodMap.TryGetValue(mi, out methodName) ||
-                (mi.DeclaringType.Assembly.FullName == VisualBasicAssemblyFullName &&
-                 expressionVBMethodMap.TryGetValue(mi.DeclaringType.FullName + "." + mi.Name, out methodName)));
-        }
-
-        internal static bool TryGetPropertyAsMethod(PropertyInfo pi, out MethodInfo mi)
-        {
-            return propertiesAsMethodsMap.TryGetValue(pi, out mi);
-        }
-
-        internal static Type GetElementType(Type seqType)
-        {
-            Type ienum = FindIEnumerable(seqType);
-            if (ienum == null) 
-            {
-                return seqType;
-            }
-
-            return ienum.GetGenericArguments()[0];
-        }
-
-        internal static bool IsPrivate(PropertyInfo pi)
-        {
-            MethodInfo mi = pi.GetGetMethod() ?? pi.GetSetMethod();
-            if (mi != null)
-            {
-                return mi.IsPrivate;
-            }
-
-            return true;
-        }
-
-        internal static Type FindIEnumerable(Type seqType)
-        {
-            if (seqType == null || seqType == typeof(string))
-            {
-                return null;
-            }
-
-            if (seqType.IsArray)
-            {
-                return typeof(IEnumerable<>).MakeGenericType(seqType.GetElementType());
-            }
-
-            if (seqType.IsGenericType)
-            {
-                foreach (Type arg in seqType.GetGenericArguments())
-                {
-                    Type ienum = typeof(IEnumerable<>).MakeGenericType(arg);
-                    if (ienum.IsAssignableFrom(seqType))
-                    {
-                        return ienum;
-                    }
-                }
-            }
-
-            Type[] ifaces = seqType.GetInterfaces();
-            if (ifaces != null && ifaces.Length > 0)
-            {
-                foreach (Type iface in ifaces)
-                {
-                    Type ienum = FindIEnumerable(iface);
-                    if (ienum != null)
-                    {
-                        return ienum;
-                    }
-                }
-            }
-
-            if (seqType.BaseType != null && seqType.BaseType != typeof(object))
-            {
-                return FindIEnumerable(seqType.BaseType);
-            }
-
-            return null;
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Reflection;
+
+    internal static class TypeSystem
+    {
+        private static readonly Dictionary<MethodInfo, string> expressionMethodMap;
+
+        private static readonly Dictionary<string, string> expressionVBMethodMap;
+
+        private static readonly Dictionary<PropertyInfo, MethodInfo> propertiesAsMethodsMap;
+
+#if !ASTORIA_LIGHT
+        private const string VisualBasicAssemblyFullName = "Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=" + AssemblyRef.MicrosoftPublicKeyToken;
+#else
+        private const string VisualBasicAssemblyFullName = "Microsoft.VisualBasic, Version=2.0.5.0, Culture=neutral, PublicKeyToken=" + AssemblyRef.MicrosoftSilverlightPublicKeyToken;
+#endif
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline", Justification = "Cleaner code")]
+        static TypeSystem()
+        {
+#if !ASTORIA_LIGHT
+            const int ExpectedCount = 24;
+#else
+            const int ExpectedCount = 22;
+#endif
+            expressionMethodMap = new Dictionary<MethodInfo, string>(ExpectedCount, EqualityComparer<MethodInfo>.Default);
+            expressionMethodMap.Add(typeof(string).GetMethod("Contains", new Type[] { typeof(string) }), @"substringof");
+            expressionMethodMap.Add(typeof(string).GetMethod("EndsWith", new Type[] { typeof(string) }), @"endswith");
+            expressionMethodMap.Add(typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) }), @"startswith");
+            expressionMethodMap.Add(typeof(string).GetMethod("IndexOf", new Type[] { typeof(string) }), @"indexof");
+            expressionMethodMap.Add(typeof(string).GetMethod("Replace", new Type[] { typeof(string), typeof(string) }), @"replace");
+            expressionMethodMap.Add(typeof(string).GetMethod("Substring", new Type[] { typeof(int) }), @"substring");
+            expressionMethodMap.Add(typeof(string).GetMethod("Substring", new Type[] { typeof(int), typeof(int) }), @"substring");
+            expressionMethodMap.Add(typeof(string).GetMethod("ToLower", Type.EmptyTypes), @"tolower");
+            expressionMethodMap.Add(typeof(string).GetMethod("ToUpper", Type.EmptyTypes), @"toupper");
+            expressionMethodMap.Add(typeof(string).GetMethod("Trim", Type.EmptyTypes), @"trim");
+            expressionMethodMap.Add(typeof(string).GetMethod("Concat", new Type[] { typeof(string), typeof(string) }, null), @"concat");   
+            expressionMethodMap.Add(typeof(string).GetProperty("Length", typeof(int)).GetGetMethod(), @"length");
+
+            expressionMethodMap.Add(typeof(DateTime).GetProperty("Day", typeof(int)).GetGetMethod(), @"day");
+            expressionMethodMap.Add(typeof(DateTime).GetProperty("Hour", typeof(int)).GetGetMethod(), @"hour");
+            expressionMethodMap.Add(typeof(DateTime).GetProperty("Month", typeof(int)).GetGetMethod(), @"month");
+            expressionMethodMap.Add(typeof(DateTime).GetProperty("Minute", typeof(int)).GetGetMethod(), @"minute");
+            expressionMethodMap.Add(typeof(DateTime).GetProperty("Second", typeof(int)).GetGetMethod(), @"second");
+            expressionMethodMap.Add(typeof(DateTime).GetProperty("Year", typeof(int)).GetGetMethod(), @"year");
+
+            expressionMethodMap.Add(typeof(Math).GetMethod("Round", new Type[] { typeof(double) }), @"round");
+            expressionMethodMap.Add(typeof(Math).GetMethod("Round", new Type[] { typeof(decimal) }), @"round");
+            expressionMethodMap.Add(typeof(Math).GetMethod("Floor", new Type[] { typeof(double) }), @"floor");
+#if !ASTORIA_LIGHT            
+            expressionMethodMap.Add(typeof(Math).GetMethod("Floor", new Type[] { typeof(decimal) }), @"floor");
+#endif
+            expressionMethodMap.Add(typeof(Math).GetMethod("Ceiling", new Type[] { typeof(double) }), @"ceiling");
+#if !ASTORIA_LIGHT            
+            expressionMethodMap.Add(typeof(Math).GetMethod("Ceiling", new Type[] { typeof(decimal) }), @"ceiling");
+#endif
+
+            Debug.Assert(expressionMethodMap.Count == ExpectedCount, "expressionMethodMap.Count == ExpectedCount");
+
+            expressionVBMethodMap = new Dictionary<string, string>(EqualityComparer<string>.Default);
+
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.Trim", @"trim");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.Len", @"length");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.Mid", @"substring");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.UCase", @"toupper");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.Strings.LCase", @"tolower");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Year", @"year");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Month", @"month");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Day", @"day");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Hour", @"hour");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Minute", @"minute");
+            expressionVBMethodMap.Add("Microsoft.VisualBasic.DateAndTime.Second", @"second");
+
+            Debug.Assert(expressionVBMethodMap.Count == 11, "expressionVBMethodMap.Count == 11");
+
+            propertiesAsMethodsMap = new Dictionary<PropertyInfo, MethodInfo>(EqualityComparer<PropertyInfo>.Default);
+            propertiesAsMethodsMap.Add(
+                typeof(string).GetProperty("Length", typeof(int)), 
+                typeof(string).GetProperty("Length", typeof(int)).GetGetMethod());
+            propertiesAsMethodsMap.Add(
+                typeof(DateTime).GetProperty("Day", typeof(int)), 
+                typeof(DateTime).GetProperty("Day", typeof(int)).GetGetMethod());
+            propertiesAsMethodsMap.Add(
+                typeof(DateTime).GetProperty("Hour", typeof(int)), 
+                typeof(DateTime).GetProperty("Hour", typeof(int)).GetGetMethod());
+            propertiesAsMethodsMap.Add(
+                typeof(DateTime).GetProperty("Minute", typeof(int)), 
+                typeof(DateTime).GetProperty("Minute", typeof(int)).GetGetMethod());
+            propertiesAsMethodsMap.Add(
+                typeof(DateTime).GetProperty("Second", typeof(int)), 
+                typeof(DateTime).GetProperty("Second", typeof(int)).GetGetMethod());
+            propertiesAsMethodsMap.Add(
+                typeof(DateTime).GetProperty("Month", typeof(int)),
+                typeof(DateTime).GetProperty("Month", typeof(int)).GetGetMethod());
+            propertiesAsMethodsMap.Add(
+                typeof(DateTime).GetProperty("Year", typeof(int)), 
+                typeof(DateTime).GetProperty("Year", typeof(int)).GetGetMethod());
+
+            Debug.Assert(propertiesAsMethodsMap.Count == 7, "propertiesAsMethodsMap.Count == 7");
+        }
+
+        internal static bool TryGetQueryOptionMethod(MethodInfo mi, out string methodName)
+        {
+            return (expressionMethodMap.TryGetValue(mi, out methodName) ||
+                (mi.DeclaringType.Assembly.FullName == VisualBasicAssemblyFullName &&
+                 expressionVBMethodMap.TryGetValue(mi.DeclaringType.FullName + "." + mi.Name, out methodName)));
+        }
+
+        internal static bool TryGetPropertyAsMethod(PropertyInfo pi, out MethodInfo mi)
+        {
+            return propertiesAsMethodsMap.TryGetValue(pi, out mi);
+        }
+
+        internal static Type GetElementType(Type seqType)
+        {
+            Type ienum = FindIEnumerable(seqType);
+            if (ienum == null) 
+            {
+                return seqType;
+            }
+
+            return ienum.GetGenericArguments()[0];
+        }
+
+        internal static bool IsPrivate(PropertyInfo pi)
+        {
+            MethodInfo mi = pi.GetGetMethod() ?? pi.GetSetMethod();
+            if (mi != null)
+            {
+                return mi.IsPrivate;
+            }
+
+            return true;
+        }
+
+        internal static Type FindIEnumerable(Type seqType)
+        {
+            if (seqType == null || seqType == typeof(string))
+            {
+                return null;
+            }
+
+            if (seqType.IsArray)
+            {
+                return typeof(IEnumerable<>).MakeGenericType(seqType.GetElementType());
+            }
+
+            if (seqType.IsGenericType)
+            {
+                foreach (Type arg in seqType.GetGenericArguments())
+                {
+                    Type ienum = typeof(IEnumerable<>).MakeGenericType(arg);
+                    if (ienum.IsAssignableFrom(seqType))
+                    {
+                        return ienum;
+                    }
+                }
+            }
+
+            Type[] ifaces = seqType.GetInterfaces();
+            if (ifaces != null && ifaces.Length > 0)
+            {
+                foreach (Type iface in ifaces)
+                {
+                    Type ienum = FindIEnumerable(iface);
+                    if (ienum != null)
+                    {
+                        return ienum;
+                    }
+                }
+            }
+
+            if (seqType.BaseType != null && seqType.BaseType != typeof(object))
+            {
+                return FindIEnumerable(seqType.BaseType);
+            }
+
+            return null;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/UriHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/UriHelper.cs
@@ -1,94 +1,94 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    internal static class UriHelper
-    {
-        internal const char FORWARDSLASH = '/';
-
-        internal const char LEFTPAREN = '(';
-
-        internal const char RIGHTPAREN = ')';
-
-        internal const char QUESTIONMARK = '?';
-
-        internal const char AMPERSAND = '&';
-
-        internal const char EQUALSSIGN = '=';
-
-        internal const char DOLLARSIGN = '$';
-
-        internal const char SPACE = ' ';
-
-        internal const char COMMA = ',';
-
-        internal const char QUOTE = '\'';
-
-        internal const char ASTERISK = '*';
-
-        internal const string OPTIONTOP = "top";
-
-        internal const string OPTIONSKIP = "skip";
-
-        internal const string OPTIONORDERBY = "orderby";
-
-        internal const string OPTIONFILTER = "filter";
-
-        internal const string OPTIONDESC = "desc";
-
-        internal const string OPTIONEXPAND = "expand";
-
-        internal const string OPTIONCOUNT = "inlinecount";
-
-        internal const string OPTIONSELECT = "select";
-
-        internal const string COUNTALL = "allpages";
-
-        internal const string COUNT = "count";
-
-        internal const string AND = "and";
-
-        internal const string OR = "or";
-
-        internal const string EQ = "eq";
-
-        internal const string NE = "ne";
-
-        internal const string LT = "lt";
-
-        internal const string LE = "le";
-
-        internal const string GT = "gt";
-
-        internal const string GE = "ge";
-
-        internal const string ADD = "add";
-
-        internal const string SUB = "sub";
-
-        internal const string MUL = "mul";
-
-        internal const string DIV = "div";
-
-        internal const string MOD = "mod";
-
-        internal const string NEGATE = "-";
-
-        internal const string NOT = "not";
-
-        internal const string NULL = "null";
-
-        internal const string ISOF = "isof";
-
-        internal const string CAST = "cast";
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    internal static class UriHelper
+    {
+        internal const char FORWARDSLASH = '/';
+
+        internal const char LEFTPAREN = '(';
+
+        internal const char RIGHTPAREN = ')';
+
+        internal const char QUESTIONMARK = '?';
+
+        internal const char AMPERSAND = '&';
+
+        internal const char EQUALSSIGN = '=';
+
+        internal const char DOLLARSIGN = '$';
+
+        internal const char SPACE = ' ';
+
+        internal const char COMMA = ',';
+
+        internal const char QUOTE = '\'';
+
+        internal const char ASTERISK = '*';
+
+        internal const string OPTIONTOP = "top";
+
+        internal const string OPTIONSKIP = "skip";
+
+        internal const string OPTIONORDERBY = "orderby";
+
+        internal const string OPTIONFILTER = "filter";
+
+        internal const string OPTIONDESC = "desc";
+
+        internal const string OPTIONEXPAND = "expand";
+
+        internal const string OPTIONCOUNT = "inlinecount";
+
+        internal const string OPTIONSELECT = "select";
+
+        internal const string COUNTALL = "allpages";
+
+        internal const string COUNT = "count";
+
+        internal const string AND = "and";
+
+        internal const string OR = "or";
+
+        internal const string EQ = "eq";
+
+        internal const string NE = "ne";
+
+        internal const string LT = "lt";
+
+        internal const string LE = "le";
+
+        internal const string GT = "gt";
+
+        internal const string GE = "ge";
+
+        internal const string ADD = "add";
+
+        internal const string SUB = "sub";
+
+        internal const string MUL = "mul";
+
+        internal const string DIV = "div";
+
+        internal const string MOD = "mod";
+
+        internal const string NEGATE = "-";
+
+        internal const string NOT = "not";
+
+        internal const string NULL = "null";
+
+        internal const string ISOF = "isof";
+
+        internal const string CAST = "cast";
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/UriWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ALinq/UriWriter.cs
@@ -1,420 +1,420 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    internal class UriWriter : DataServiceExpressionVisitor
-    {
-        private readonly DataServiceContext context;
-
-        private readonly StringBuilder uriBuilder;
-        
-        private Version uriVersion;
-
-        private ResourceSetExpression leafResourceSet;
-        
-        private UriWriter(DataServiceContext context)
-        {
-            Debug.Assert(context != null, "context != null");
-            this.context = context;
-            this.uriBuilder = new StringBuilder();
-            this.uriVersion = Util.DataServiceVersion1;
-        }
-
-        internal static void Translate(DataServiceContext context, bool addTrailingParens, Expression e, out Uri uri, out Version version)
-        {
-            var writer = new UriWriter(context);
-            writer.leafResourceSet = addTrailingParens ? (e as ResourceSetExpression) : null;
-            writer.Visit(e);
-            uri = Util.CreateUri(context.BaseUriWithSlash, Util.CreateUri(writer.uriBuilder.ToString(), UriKind.Relative));
-            version = writer.uriVersion;
-        }
-
-        internal override Expression VisitMethodCall(MethodCallExpression m)
-        {
-            throw Error.MethodNotSupported(m);
-        }
-
-        internal override Expression VisitUnary(UnaryExpression u)
-        {
-            throw new NotSupportedException(Strings.ALinq_UnaryNotSupported(u.NodeType.ToString()));
-        }
-
-        internal override Expression VisitBinary(BinaryExpression b)
-        {
-            throw new NotSupportedException(Strings.ALinq_BinaryNotSupported(b.NodeType.ToString()));
-        }
-
-        internal override Expression VisitConstant(ConstantExpression c)
-        {
-            throw new NotSupportedException(Strings.ALinq_ConstantNotSupported(c.Value));
-        }
-
-        internal override Expression VisitTypeIs(TypeBinaryExpression b)
-        {
-            throw new NotSupportedException(Strings.ALinq_TypeBinaryNotSupported);
-        }
-
-        internal override Expression VisitConditional(ConditionalExpression c)
-        {
-            throw new NotSupportedException(Strings.ALinq_ConditionalNotSupported);
-        }
-
-        internal override Expression VisitParameter(ParameterExpression p)
-        {
-            throw new NotSupportedException(Strings.ALinq_ParameterNotSupported);
-        }
-
-        internal override Expression VisitMemberAccess(MemberExpression m)
-        {
-            throw new NotSupportedException(Strings.ALinq_MemberAccessNotSupported(m.Member.Name));
-        }
-
-        internal override Expression VisitLambda(LambdaExpression lambda)
-        {
-            throw new NotSupportedException(Strings.ALinq_LambdaNotSupported);
-        }
-
-        internal override NewExpression VisitNew(NewExpression nex)
-        {
-            throw new NotSupportedException(Strings.ALinq_NewNotSupported);
-        }
-
-        internal override Expression VisitMemberInit(MemberInitExpression init)
-        {
-            throw new NotSupportedException(Strings.ALinq_MemberInitNotSupported);
-        }
-
-        internal override Expression VisitListInit(ListInitExpression init)
-        {
-            throw new NotSupportedException(Strings.ALinq_ListInitNotSupported);
-        }
-
-        internal override Expression VisitNewArray(NewArrayExpression na)
-        {
-            throw new NotSupportedException(Strings.ALinq_NewArrayNotSupported);
-        }
-
-        internal override Expression VisitInvocation(InvocationExpression iv)
-        {
-            throw new NotSupportedException(Strings.ALinq_InvocationNotSupported);
-        }
-
-        internal override Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
-        {
-            this.Visit(npse.Source);
-            this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(npse.MemberExpression));
-            this.VisitQueryOptions(npse);
-            return npse;
-        }
-
-        internal override Expression VisitResourceSetExpression(ResourceSetExpression rse)
-        {
-            if ((ResourceExpressionType)rse.NodeType == ResourceExpressionType.ResourceNavigationProperty)
-            {
-                this.Visit(rse.Source);
-                this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(rse.MemberExpression));
-            }
-            else
-            {
-                this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append((string)((ConstantExpression)rse.MemberExpression).Value);
-            }
-
-            if (rse.KeyPredicate != null)
-            {
-                this.uriBuilder.Append(UriHelper.LEFTPAREN);
-                if (rse.KeyPredicate.Count == 1)
-                {
-                    this.uriBuilder.Append(this.ExpressionToString(rse.KeyPredicate.Values.First()));
-                }
-                else
-                {
-                    bool addComma = false;
-                    foreach (var kvp in rse.KeyPredicate)
-                    {
-                        if (addComma)
-                        {
-                            this.uriBuilder.Append(UriHelper.COMMA);
-                        }
-
-                        this.uriBuilder.Append(kvp.Key.Name);
-                        this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-                        this.uriBuilder.Append(this.ExpressionToString(kvp.Value));
-                        addComma = true;
-                    }
-                }
-
-                this.uriBuilder.Append(UriHelper.RIGHTPAREN);
-            }
-            else if (rse == this.leafResourceSet)
-            {
-                this.uriBuilder.Append(UriHelper.LEFTPAREN);
-                this.uriBuilder.Append(UriHelper.RIGHTPAREN);
-            }
-
-            if (rse.CountOption == CountOption.ValueOnly)
-            {
-                this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(UriHelper.DOLLARSIGN).Append(UriHelper.COUNT);
-                this.EnsureMinimumVersion(2, 0);
-            }
-
-            this.VisitQueryOptions(rse);
-            return rse;
-        }
-
-        internal void VisitQueryOptions(ResourceExpression re)
-        {
-            bool needAmpersand = false;
-
-            if (re.HasQueryOptions)
-            {
-                this.uriBuilder.Append(UriHelper.QUESTIONMARK);
-
-                ResourceSetExpression rse = re as ResourceSetExpression;
-                if (rse != null)
-                {
-                    IEnumerator options = rse.SequenceQueryOptions.GetEnumerator();
-                    while (options.MoveNext())
-                    {
-                        if (needAmpersand)
-                        {
-                            this.uriBuilder.Append(UriHelper.AMPERSAND);
-                        }
-
-                        Expression e = ((Expression)options.Current);
-                        ResourceExpressionType et = (ResourceExpressionType)e.NodeType;
-                        switch (et)
-                        {
-                            case ResourceExpressionType.SkipQueryOption:
-                                this.VisitQueryOptionExpression((SkipQueryOptionExpression)e);
-                                break;
-                            case ResourceExpressionType.TakeQueryOption:
-                                this.VisitQueryOptionExpression((TakeQueryOptionExpression)e);
-                                break;
-                            case ResourceExpressionType.OrderByQueryOption:
-                                this.VisitQueryOptionExpression((OrderByQueryOptionExpression)e);
-                                break;
-                            case ResourceExpressionType.FilterQueryOption:
-                                this.VisitQueryOptionExpression((FilterQueryOptionExpression)e);
-                                break;
-                            default:
-                                Debug.Assert(false, "Unexpected expression type " + (int)et);
-                                break;
-                        }
-
-                        needAmpersand = true;
-                    }
-                }
-
-                if (re.ExpandPaths.Count > 0)
-                {
-                    if (needAmpersand)
-                    {
-                        this.uriBuilder.Append(UriHelper.AMPERSAND);
-                    }
-
-                    this.VisitExpandOptions(re.ExpandPaths);
-                    needAmpersand = true;
-                }
-
-                if (re.Projection != null && re.Projection.Paths.Count > 0)
-                {
-                    if (needAmpersand)
-                    {
-                        this.uriBuilder.Append(UriHelper.AMPERSAND);
-                    }
-
-                    this.VisitProjectionPaths(re.Projection.Paths);
-                    needAmpersand = true;
-                }
-
-                if (re.CountOption == CountOption.InlineAll)
-                {
-                    if (needAmpersand)
-                    {
-                        this.uriBuilder.Append(UriHelper.AMPERSAND);
-                    }
-
-                    this.VisitCountOptions();
-                    needAmpersand = true;
-                }
-
-                if (re.CustomQueryOptions.Count > 0)
-                {
-                    if (needAmpersand)
-                    {
-                        this.uriBuilder.Append(UriHelper.AMPERSAND);
-                    }
-
-                    this.VisitCustomQueryOptions(re.CustomQueryOptions);
-                    needAmpersand = true;
-                }
-            }
-        }
-
-        internal void VisitQueryOptionExpression(SkipQueryOptionExpression sqoe)
-        {
-            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
-            this.uriBuilder.Append(UriHelper.OPTIONSKIP);
-            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-            this.uriBuilder.Append(this.ExpressionToString(sqoe.SkipAmount));
-        }
-
-        internal void VisitQueryOptionExpression(TakeQueryOptionExpression tqoe)
-        {
-            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
-            this.uriBuilder.Append(UriHelper.OPTIONTOP);
-            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-            this.uriBuilder.Append(this.ExpressionToString(tqoe.TakeAmount));
-        }
-
-        internal void VisitQueryOptionExpression(FilterQueryOptionExpression fqoe)
-        {
-            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
-            this.uriBuilder.Append(UriHelper.OPTIONFILTER);
-            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-            this.uriBuilder.Append(this.ExpressionToString(fqoe.Predicate));
-        }
-
-        internal void VisitQueryOptionExpression(OrderByQueryOptionExpression oboe)
-        {
-            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
-            this.uriBuilder.Append(UriHelper.OPTIONORDERBY);
-            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-
-            int ii = 0;
-            while (true)
-            {
-                var selector = oboe.Selectors[ii];
-
-                this.uriBuilder.Append(this.ExpressionToString(selector.Expression));
-                if (selector.Descending)
-                {
-                    this.uriBuilder.Append(UriHelper.SPACE);
-                    this.uriBuilder.Append(UriHelper.OPTIONDESC);
-                }
-
-                if (++ii == oboe.Selectors.Count)
-                {
-                    break;
-                }
-
-                this.uriBuilder.Append(UriHelper.COMMA);
-            }
-        }
-
-        internal void VisitExpandOptions(List<string> paths)
-        {
-            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
-            this.uriBuilder.Append(UriHelper.OPTIONEXPAND);
-            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-
-            int ii = 0;
-            while (true)
-            {
-                this.uriBuilder.Append(paths[ii]);
-
-                if (++ii == paths.Count)
-                {
-                    break;
-                }
-
-                this.uriBuilder.Append(UriHelper.COMMA);
-            }
-        }
-
-        internal void VisitProjectionPaths(List<string> paths)
-        {
-            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
-            this.uriBuilder.Append(UriHelper.OPTIONSELECT);
-            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-
-            int ii = 0;
-            while (true)
-            {
-                string path = paths[ii];
-
-                this.uriBuilder.Append(path);
-
-                if (++ii == paths.Count)
-                {
-                    break;
-                }
-
-                this.uriBuilder.Append(UriHelper.COMMA);
-            }
-
-            this.EnsureMinimumVersion(2, 0);
-        }
-
-        internal void VisitCountOptions()
-        {
-            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
-            this.uriBuilder.Append(UriHelper.OPTIONCOUNT);
-            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-            this.uriBuilder.Append(UriHelper.COUNTALL);
-            this.EnsureMinimumVersion(2, 0);
-        }
-
-        internal void VisitCustomQueryOptions(Dictionary<ConstantExpression, ConstantExpression> options)
-        {
-            List<ConstantExpression> keys = options.Keys.ToList();
-            List<ConstantExpression> values = options.Values.ToList();
-
-            int ii = 0;
-            while (true)
-            {
-                this.uriBuilder.Append(keys[ii].Value);
-                this.uriBuilder.Append(UriHelper.EQUALSSIGN);
-                this.uriBuilder.Append(values[ii].Value);
-
-                if (keys[ii].Value.ToString().Equals(UriHelper.DOLLARSIGN + UriHelper.OPTIONCOUNT, StringComparison.OrdinalIgnoreCase))
-                {
-                    this.EnsureMinimumVersion(2, 0);
-                }
-
-                if (++ii == keys.Count)
-                {
-                    break;
-                }
-
-                this.uriBuilder.Append(UriHelper.AMPERSAND);
-            }
-        }
-
-        private string ExpressionToString(Expression expression)
-        {
-            return ExpressionWriter.ExpressionToString(this.context, expression);
-        }
-
-        private void EnsureMinimumVersion(int major, int minor)
-        {
-            if (major > this.uriVersion.Major ||
-                (major == this.uriVersion.Major && minor > this.uriVersion.Minor))
-            {
-                this.uriVersion = new Version(major, minor);
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    internal class UriWriter : DataServiceExpressionVisitor
+    {
+        private readonly DataServiceContext context;
+
+        private readonly StringBuilder uriBuilder;
+        
+        private Version uriVersion;
+
+        private ResourceSetExpression leafResourceSet;
+        
+        private UriWriter(DataServiceContext context)
+        {
+            Debug.Assert(context != null, "context != null");
+            this.context = context;
+            this.uriBuilder = new StringBuilder();
+            this.uriVersion = Util.DataServiceVersion1;
+        }
+
+        internal static void Translate(DataServiceContext context, bool addTrailingParens, Expression e, out Uri uri, out Version version)
+        {
+            var writer = new UriWriter(context);
+            writer.leafResourceSet = addTrailingParens ? (e as ResourceSetExpression) : null;
+            writer.Visit(e);
+            uri = Util.CreateUri(context.BaseUriWithSlash, Util.CreateUri(writer.uriBuilder.ToString(), UriKind.Relative));
+            version = writer.uriVersion;
+        }
+
+        internal override Expression VisitMethodCall(MethodCallExpression m)
+        {
+            throw Error.MethodNotSupported(m);
+        }
+
+        internal override Expression VisitUnary(UnaryExpression u)
+        {
+            throw new NotSupportedException(Strings.ALinq_UnaryNotSupported(u.NodeType.ToString()));
+        }
+
+        internal override Expression VisitBinary(BinaryExpression b)
+        {
+            throw new NotSupportedException(Strings.ALinq_BinaryNotSupported(b.NodeType.ToString()));
+        }
+
+        internal override Expression VisitConstant(ConstantExpression c)
+        {
+            throw new NotSupportedException(Strings.ALinq_ConstantNotSupported(c.Value));
+        }
+
+        internal override Expression VisitTypeIs(TypeBinaryExpression b)
+        {
+            throw new NotSupportedException(Strings.ALinq_TypeBinaryNotSupported);
+        }
+
+        internal override Expression VisitConditional(ConditionalExpression c)
+        {
+            throw new NotSupportedException(Strings.ALinq_ConditionalNotSupported);
+        }
+
+        internal override Expression VisitParameter(ParameterExpression p)
+        {
+            throw new NotSupportedException(Strings.ALinq_ParameterNotSupported);
+        }
+
+        internal override Expression VisitMemberAccess(MemberExpression m)
+        {
+            throw new NotSupportedException(Strings.ALinq_MemberAccessNotSupported(m.Member.Name));
+        }
+
+        internal override Expression VisitLambda(LambdaExpression lambda)
+        {
+            throw new NotSupportedException(Strings.ALinq_LambdaNotSupported);
+        }
+
+        internal override NewExpression VisitNew(NewExpression nex)
+        {
+            throw new NotSupportedException(Strings.ALinq_NewNotSupported);
+        }
+
+        internal override Expression VisitMemberInit(MemberInitExpression init)
+        {
+            throw new NotSupportedException(Strings.ALinq_MemberInitNotSupported);
+        }
+
+        internal override Expression VisitListInit(ListInitExpression init)
+        {
+            throw new NotSupportedException(Strings.ALinq_ListInitNotSupported);
+        }
+
+        internal override Expression VisitNewArray(NewArrayExpression na)
+        {
+            throw new NotSupportedException(Strings.ALinq_NewArrayNotSupported);
+        }
+
+        internal override Expression VisitInvocation(InvocationExpression iv)
+        {
+            throw new NotSupportedException(Strings.ALinq_InvocationNotSupported);
+        }
+
+        internal override Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse)
+        {
+            this.Visit(npse.Source);
+            this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(npse.MemberExpression));
+            this.VisitQueryOptions(npse);
+            return npse;
+        }
+
+        internal override Expression VisitResourceSetExpression(ResourceSetExpression rse)
+        {
+            if ((ResourceExpressionType)rse.NodeType == ResourceExpressionType.ResourceNavigationProperty)
+            {
+                this.Visit(rse.Source);
+                this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(this.ExpressionToString(rse.MemberExpression));
+            }
+            else
+            {
+                this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append((string)((ConstantExpression)rse.MemberExpression).Value);
+            }
+
+            if (rse.KeyPredicate != null)
+            {
+                this.uriBuilder.Append(UriHelper.LEFTPAREN);
+                if (rse.KeyPredicate.Count == 1)
+                {
+                    this.uriBuilder.Append(this.ExpressionToString(rse.KeyPredicate.Values.First()));
+                }
+                else
+                {
+                    bool addComma = false;
+                    foreach (var kvp in rse.KeyPredicate)
+                    {
+                        if (addComma)
+                        {
+                            this.uriBuilder.Append(UriHelper.COMMA);
+                        }
+
+                        this.uriBuilder.Append(kvp.Key.Name);
+                        this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+                        this.uriBuilder.Append(this.ExpressionToString(kvp.Value));
+                        addComma = true;
+                    }
+                }
+
+                this.uriBuilder.Append(UriHelper.RIGHTPAREN);
+            }
+            else if (rse == this.leafResourceSet)
+            {
+                this.uriBuilder.Append(UriHelper.LEFTPAREN);
+                this.uriBuilder.Append(UriHelper.RIGHTPAREN);
+            }
+
+            if (rse.CountOption == CountOption.ValueOnly)
+            {
+                this.uriBuilder.Append(UriHelper.FORWARDSLASH).Append(UriHelper.DOLLARSIGN).Append(UriHelper.COUNT);
+                this.EnsureMinimumVersion(2, 0);
+            }
+
+            this.VisitQueryOptions(rse);
+            return rse;
+        }
+
+        internal void VisitQueryOptions(ResourceExpression re)
+        {
+            bool needAmpersand = false;
+
+            if (re.HasQueryOptions)
+            {
+                this.uriBuilder.Append(UriHelper.QUESTIONMARK);
+
+                ResourceSetExpression rse = re as ResourceSetExpression;
+                if (rse != null)
+                {
+                    IEnumerator options = rse.SequenceQueryOptions.GetEnumerator();
+                    while (options.MoveNext())
+                    {
+                        if (needAmpersand)
+                        {
+                            this.uriBuilder.Append(UriHelper.AMPERSAND);
+                        }
+
+                        Expression e = ((Expression)options.Current);
+                        ResourceExpressionType et = (ResourceExpressionType)e.NodeType;
+                        switch (et)
+                        {
+                            case ResourceExpressionType.SkipQueryOption:
+                                this.VisitQueryOptionExpression((SkipQueryOptionExpression)e);
+                                break;
+                            case ResourceExpressionType.TakeQueryOption:
+                                this.VisitQueryOptionExpression((TakeQueryOptionExpression)e);
+                                break;
+                            case ResourceExpressionType.OrderByQueryOption:
+                                this.VisitQueryOptionExpression((OrderByQueryOptionExpression)e);
+                                break;
+                            case ResourceExpressionType.FilterQueryOption:
+                                this.VisitQueryOptionExpression((FilterQueryOptionExpression)e);
+                                break;
+                            default:
+                                Debug.Assert(false, "Unexpected expression type " + (int)et);
+                                break;
+                        }
+
+                        needAmpersand = true;
+                    }
+                }
+
+                if (re.ExpandPaths.Count > 0)
+                {
+                    if (needAmpersand)
+                    {
+                        this.uriBuilder.Append(UriHelper.AMPERSAND);
+                    }
+
+                    this.VisitExpandOptions(re.ExpandPaths);
+                    needAmpersand = true;
+                }
+
+                if (re.Projection != null && re.Projection.Paths.Count > 0)
+                {
+                    if (needAmpersand)
+                    {
+                        this.uriBuilder.Append(UriHelper.AMPERSAND);
+                    }
+
+                    this.VisitProjectionPaths(re.Projection.Paths);
+                    needAmpersand = true;
+                }
+
+                if (re.CountOption == CountOption.InlineAll)
+                {
+                    if (needAmpersand)
+                    {
+                        this.uriBuilder.Append(UriHelper.AMPERSAND);
+                    }
+
+                    this.VisitCountOptions();
+                    needAmpersand = true;
+                }
+
+                if (re.CustomQueryOptions.Count > 0)
+                {
+                    if (needAmpersand)
+                    {
+                        this.uriBuilder.Append(UriHelper.AMPERSAND);
+                    }
+
+                    this.VisitCustomQueryOptions(re.CustomQueryOptions);
+                    needAmpersand = true;
+                }
+            }
+        }
+
+        internal void VisitQueryOptionExpression(SkipQueryOptionExpression sqoe)
+        {
+            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
+            this.uriBuilder.Append(UriHelper.OPTIONSKIP);
+            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+            this.uriBuilder.Append(this.ExpressionToString(sqoe.SkipAmount));
+        }
+
+        internal void VisitQueryOptionExpression(TakeQueryOptionExpression tqoe)
+        {
+            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
+            this.uriBuilder.Append(UriHelper.OPTIONTOP);
+            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+            this.uriBuilder.Append(this.ExpressionToString(tqoe.TakeAmount));
+        }
+
+        internal void VisitQueryOptionExpression(FilterQueryOptionExpression fqoe)
+        {
+            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
+            this.uriBuilder.Append(UriHelper.OPTIONFILTER);
+            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+            this.uriBuilder.Append(this.ExpressionToString(fqoe.Predicate));
+        }
+
+        internal void VisitQueryOptionExpression(OrderByQueryOptionExpression oboe)
+        {
+            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
+            this.uriBuilder.Append(UriHelper.OPTIONORDERBY);
+            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+
+            int ii = 0;
+            while (true)
+            {
+                var selector = oboe.Selectors[ii];
+
+                this.uriBuilder.Append(this.ExpressionToString(selector.Expression));
+                if (selector.Descending)
+                {
+                    this.uriBuilder.Append(UriHelper.SPACE);
+                    this.uriBuilder.Append(UriHelper.OPTIONDESC);
+                }
+
+                if (++ii == oboe.Selectors.Count)
+                {
+                    break;
+                }
+
+                this.uriBuilder.Append(UriHelper.COMMA);
+            }
+        }
+
+        internal void VisitExpandOptions(List<string> paths)
+        {
+            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
+            this.uriBuilder.Append(UriHelper.OPTIONEXPAND);
+            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+
+            int ii = 0;
+            while (true)
+            {
+                this.uriBuilder.Append(paths[ii]);
+
+                if (++ii == paths.Count)
+                {
+                    break;
+                }
+
+                this.uriBuilder.Append(UriHelper.COMMA);
+            }
+        }
+
+        internal void VisitProjectionPaths(List<string> paths)
+        {
+            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
+            this.uriBuilder.Append(UriHelper.OPTIONSELECT);
+            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+
+            int ii = 0;
+            while (true)
+            {
+                string path = paths[ii];
+
+                this.uriBuilder.Append(path);
+
+                if (++ii == paths.Count)
+                {
+                    break;
+                }
+
+                this.uriBuilder.Append(UriHelper.COMMA);
+            }
+
+            this.EnsureMinimumVersion(2, 0);
+        }
+
+        internal void VisitCountOptions()
+        {
+            this.uriBuilder.Append(UriHelper.DOLLARSIGN);
+            this.uriBuilder.Append(UriHelper.OPTIONCOUNT);
+            this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+            this.uriBuilder.Append(UriHelper.COUNTALL);
+            this.EnsureMinimumVersion(2, 0);
+        }
+
+        internal void VisitCustomQueryOptions(Dictionary<ConstantExpression, ConstantExpression> options)
+        {
+            List<ConstantExpression> keys = options.Keys.ToList();
+            List<ConstantExpression> values = options.Values.ToList();
+
+            int ii = 0;
+            while (true)
+            {
+                this.uriBuilder.Append(keys[ii].Value);
+                this.uriBuilder.Append(UriHelper.EQUALSSIGN);
+                this.uriBuilder.Append(values[ii].Value);
+
+                if (keys[ii].Value.ToString().Equals(UriHelper.DOLLARSIGN + UriHelper.OPTIONCOUNT, StringComparison.OrdinalIgnoreCase))
+                {
+                    this.EnsureMinimumVersion(2, 0);
+                }
+
+                if (++ii == keys.Count)
+                {
+                    break;
+                }
+
+                this.uriBuilder.Append(UriHelper.AMPERSAND);
+            }
+        }
+
+        private string ExpressionToString(Expression expression)
+        {
+            return ExpressionWriter.ExpressionToString(this.context, expression);
+        }
+
+        private void EnsureMinimumVersion(int major, int minor)
+        {
+            if (major > this.uriVersion.Major ||
+                (major == this.uriVersion.Major && minor > this.uriVersion.Minor))
+            {
+                this.uriVersion = new Version(major, minor);
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ArraySet.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ArraySet.cs
@@ -1,180 +1,180 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-
-    [DebuggerDisplay("Count = {count}")]
-    internal struct ArraySet<T> : IEnumerable<T> where T : class
-    {
-        private T[] items;
-
-        private int count;
-
-        private int version;
-
-        public ArraySet(int capacity)
-        {
-            this.items = new T[capacity];
-            this.count = 0;
-            this.version = 0;
-        }
-
-        public int Count
-        {
-            get { return this.count; }
-        }
-
-        public T this[int index]
-        {
-            get
-            {
-                Debug.Assert(index < this.count);
-                return this.items[index];
-            }
-        }
-
-        public bool Add(T item, Func<T, T, bool> equalityComparer)
-        {
-            if ((null != equalityComparer) && this.Contains(item, equalityComparer))
-            {
-                return false;
-            }
-
-            int index = this.count++;
-            if ((null == this.items) || (index == this.items.Length))
-            {                Array.Resize<T>(ref this.items, Math.Min(Math.Max(index, 16), Int32.MaxValue / 2) * 2);
-            }
-
-            this.items[index] = item;
-            unchecked
-            {
-                this.version++;
-            }
-
-            return true;
-        }
-
-        public bool Contains(T item, Func<T, T, bool> equalityComparer)
-        {
-            return (0 <= this.IndexOf(item, equalityComparer));
-        }
-
-        public IEnumerator<T> GetEnumerator()
-        {
-            for (int i = 0; i < this.count; ++i)
-            {
-                yield return this.items[i];
-            }
-        }
-
-        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
-        {
-            return this.GetEnumerator();
-        }
-        
-        public int IndexOf(T item, Func<T, T, bool> comparer)
-        {
-            return this.IndexOf(item, IdentitySelect, comparer);
-        }
-
-        public int IndexOf<K>(K item, Func<T, K> select, Func<K, K, bool> comparer)
-        {
-            T[] array = this.items;
-            if (null != array)
-            {
-                int length = this.count;
-                for (int i = 0; i < length; ++i)
-                {
-                    if (comparer(item, select(array[i])))
-                    {
-                        return i;
-                    }
-                }
-            }
-
-            return -1;
-        }
-
-        public T Remove(T item, Func<T, T, bool> equalityComparer)
-        {
-            int index = this.IndexOf(item, equalityComparer);
-            if (0 <= index)
-            {
-                item = this.items[index];
-                this.RemoveAt(index);
-                return item;
-            }
-
-            return default(T);
-        }
-
-        public void RemoveAt(int index)
-        {
-            Debug.Assert(unchecked((uint)index < (uint)this.count), "index out of range");
-            T[] array = this.items;
-            int lastIndex = --this.count;
-            array[index] = array[lastIndex];
-            array[lastIndex] = default(T);
-
-            if ((0 == lastIndex) && (256 <= array.Length))
-            {
-                this.items = null;
-            }
-            else if ((256 < array.Length) && (lastIndex < array.Length / 4))
-            {                Array.Resize(ref this.items, array.Length / 2);
-            }
-
-            unchecked
-            {
-                this.version++;
-            }
-        }
-
-        public void Sort<K>(Func<T, K> selector, Func<K, K, int> comparer)
-        {
-            if (null != this.items)
-            {
-                SelectorComparer<K> scomp;
-                scomp.Selector = selector;
-                scomp.Comparer = comparer;
-                Array.Sort<T>(this.items, 0, this.count, scomp);
-            }
-        }
-
-        public void TrimToSize()
-        {
-            Array.Resize(ref this.items, this.count);
-        }
-
-        private static T IdentitySelect(T arg)
-        {
-            return arg;
-        }
-
-        private struct SelectorComparer<K> : IComparer<T>
-        {
-            internal Func<T, K> Selector;
-
-            internal Func<K, K, int> Comparer;
-
-            int IComparer<T>.Compare(T x, T y)
-            {
-                return this.Comparer(this.Selector(x), this.Selector(y));
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+
+    [DebuggerDisplay("Count = {count}")]
+    internal struct ArraySet<T> : IEnumerable<T> where T : class
+    {
+        private T[] items;
+
+        private int count;
+
+        private int version;
+
+        public ArraySet(int capacity)
+        {
+            this.items = new T[capacity];
+            this.count = 0;
+            this.version = 0;
+        }
+
+        public int Count
+        {
+            get { return this.count; }
+        }
+
+        public T this[int index]
+        {
+            get
+            {
+                Debug.Assert(index < this.count);
+                return this.items[index];
+            }
+        }
+
+        public bool Add(T item, Func<T, T, bool> equalityComparer)
+        {
+            if ((null != equalityComparer) && this.Contains(item, equalityComparer))
+            {
+                return false;
+            }
+
+            int index = this.count++;
+            if ((null == this.items) || (index == this.items.Length))
+            {                Array.Resize<T>(ref this.items, Math.Min(Math.Max(index, 16), Int32.MaxValue / 2) * 2);
+            }
+
+            this.items[index] = item;
+            unchecked
+            {
+                this.version++;
+            }
+
+            return true;
+        }
+
+        public bool Contains(T item, Func<T, T, bool> equalityComparer)
+        {
+            return (0 <= this.IndexOf(item, equalityComparer));
+        }
+
+        public IEnumerator<T> GetEnumerator()
+        {
+            for (int i = 0; i < this.count; ++i)
+            {
+                yield return this.items[i];
+            }
+        }
+
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+            return this.GetEnumerator();
+        }
+        
+        public int IndexOf(T item, Func<T, T, bool> comparer)
+        {
+            return this.IndexOf(item, IdentitySelect, comparer);
+        }
+
+        public int IndexOf<K>(K item, Func<T, K> select, Func<K, K, bool> comparer)
+        {
+            T[] array = this.items;
+            if (null != array)
+            {
+                int length = this.count;
+                for (int i = 0; i < length; ++i)
+                {
+                    if (comparer(item, select(array[i])))
+                    {
+                        return i;
+                    }
+                }
+            }
+
+            return -1;
+        }
+
+        public T Remove(T item, Func<T, T, bool> equalityComparer)
+        {
+            int index = this.IndexOf(item, equalityComparer);
+            if (0 <= index)
+            {
+                item = this.items[index];
+                this.RemoveAt(index);
+                return item;
+            }
+
+            return default(T);
+        }
+
+        public void RemoveAt(int index)
+        {
+            Debug.Assert(unchecked((uint)index < (uint)this.count), "index out of range");
+            T[] array = this.items;
+            int lastIndex = --this.count;
+            array[index] = array[lastIndex];
+            array[lastIndex] = default(T);
+
+            if ((0 == lastIndex) && (256 <= array.Length))
+            {
+                this.items = null;
+            }
+            else if ((256 < array.Length) && (lastIndex < array.Length / 4))
+            {                Array.Resize(ref this.items, array.Length / 2);
+            }
+
+            unchecked
+            {
+                this.version++;
+            }
+        }
+
+        public void Sort<K>(Func<T, K> selector, Func<K, K, int> comparer)
+        {
+            if (null != this.items)
+            {
+                SelectorComparer<K> scomp;
+                scomp.Selector = selector;
+                scomp.Comparer = comparer;
+                Array.Sort<T>(this.items, 0, this.count, scomp);
+            }
+        }
+
+        public void TrimToSize()
+        {
+            Array.Resize(ref this.items, this.count);
+        }
+
+        private static T IdentitySelect(T arg)
+        {
+            return arg;
+        }
+
+        private struct SelectorComparer<K> : IComparer<T>
+        {
+            internal Func<T, K> Selector;
+
+            internal Func<K, K, int> Comparer;
+
+            int IComparer<T>.Compare(T x, T y)
+            {
+                return this.Comparer(this.Selector(x), this.Selector(y));
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomContentProperty.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomContentProperty.cs
@@ -1,88 +1,88 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    using System.Xml;
-    using System.Xml.Linq;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("AtomContentProperty {TypeName} {Name}")]
-    internal class AtomContentProperty
-    {
-        public bool IsNull 
-        { 
-            get; 
-            set; 
-        }
-
-        public string Name 
-        { 
-            get; 
-            set; 
-        }
-
-        public string TypeName 
-        { 
-            get; 
-            set; 
-        }
-
-        public string Text 
-        { 
-            get; 
-            set; 
-        }
-
-        public List<AtomContentProperty> Properties 
-        { 
-            get; 
-            set; 
-        }
-
-        public AtomFeed Feed 
-        { 
-            get; 
-            set; 
-        }
-
-        public AtomEntry Entry 
-        { 
-            get; 
-            set; 
-        }
-
-        public object MaterializedValue 
-        { 
-            get; 
-            set; 
-        }
-
-        public void EnsureProperties()
-        {
-            if (this.Properties == null)
-            {
-                this.Properties = new List<AtomContentProperty>();
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    using System.Xml;
+    using System.Xml.Linq;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("AtomContentProperty {TypeName} {Name}")]
+    internal class AtomContentProperty
+    {
+        public bool IsNull 
+        { 
+            get; 
+            set; 
+        }
+
+        public string Name 
+        { 
+            get; 
+            set; 
+        }
+
+        public string TypeName 
+        { 
+            get; 
+            set; 
+        }
+
+        public string Text 
+        { 
+            get; 
+            set; 
+        }
+
+        public List<AtomContentProperty> Properties 
+        { 
+            get; 
+            set; 
+        }
+
+        public AtomFeed Feed 
+        { 
+            get; 
+            set; 
+        }
+
+        public AtomEntry Entry 
+        { 
+            get; 
+            set; 
+        }
+
+        public object MaterializedValue 
+        { 
+            get; 
+            set; 
+        }
+
+        public void EnsureProperties()
+        {
+            if (this.Properties == null)
+            {
+                this.Properties = new List<AtomContentProperty>();
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomDataKind.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomDataKind.cs
@@ -1,31 +1,31 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    internal enum AtomDataKind
-    {
-        None = 0,
-
-        Custom,
-
-        Entry,
-
-        Feed,
-
-        FeedCount,
-
-        PagingLinks,
-
-        Finished,
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    internal enum AtomDataKind
+    {
+        None = 0,
+
+        Custom,
+
+        Entry,
+
+        Feed,
+
+        FeedCount,
+
+        PagingLinks,
+
+        Finished,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomEntry.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomEntry.cs
@@ -1,198 +1,198 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    using System.Xml;
-    using System.Xml.Linq;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("AtomEntry {ResolvedObject} @ {Identity}")]
-    internal class AtomEntry
-    {
-        #region Private fields.
-
-        private EntryFlags flags;
-
-        [Flags]
-        private enum EntryFlags
-        {
-            ShouldUpdateFromPayload = 0x01,
-            
-            CreatedByMaterializer = 0x02,
-
-            EntityHasBeenResolved = 0x04,
-
-            MediaLinkEntryValue = 0x08,
-
-            MediaLinkEntryAssigned = 0x10,
-
-            EntityPropertyMappingsApplied = 0x20,
-
-            IsNull = 0x40
-        }
-
-        #endregion Private fields.
-
-        #region Public properties.
-
-        public bool? MediaLinkEntry
-        {
-            get 
-            {
-                return this.GetFlagValue(EntryFlags.MediaLinkEntryAssigned) ? (bool?)this.GetFlagValue(EntryFlags.MediaLinkEntryValue) : null; 
-            }
-
-            set 
-            {
-                Debug.Assert(value.HasValue, "value.HasValue -- callers shouldn't set the value to unknown");
-                this.SetFlagValue(EntryFlags.MediaLinkEntryAssigned, true);
-                this.SetFlagValue(EntryFlags.MediaLinkEntryValue, value.Value);
-            }
-        }
-
-        public Uri MediaContentUri 
-        { 
-            get; 
-            set; 
-        }
-
-        public Uri MediaEditUri 
-        { 
-            get; 
-            set; 
-        }
-
-        public string TypeName 
-        { 
-            get; 
-            set; 
-        }
-
-        public ClientType ActualType 
-        { 
-            get; 
-            set; 
-        }
-
-        public Uri EditLink 
-        { 
-            get; 
-            set; 
-        }
-
-        public Uri QueryLink
-        {
-            get;
-            set;
-        }
-
-        public string Identity 
-        { 
-            get; 
-            set; 
-        }
-
-        public bool IsNull
-        {
-            get { return this.GetFlagValue(EntryFlags.IsNull); }
-            set { this.SetFlagValue(EntryFlags.IsNull, value); }
-        }
-
-        public List<AtomContentProperty> DataValues 
-        { 
-            get; 
-            set; 
-        }
-
-        public object ResolvedObject 
-        { 
-            get; 
-            set; 
-        }
-
-        public object Tag 
-        { 
-            get; 
-            set; 
-        }
-
-        public string ETagText 
-        { 
-            get; 
-            set; 
-        }
-
-        public string StreamETagText
-        {
-            get;
-            set;
-        }
-
-        public bool ShouldUpdateFromPayload
-        {
-            get { return this.GetFlagValue(EntryFlags.ShouldUpdateFromPayload); }
-            set { this.SetFlagValue(EntryFlags.ShouldUpdateFromPayload, value); }
-        }
-
-        public bool CreatedByMaterializer
-        {
-            get { return this.GetFlagValue(EntryFlags.CreatedByMaterializer); }
-            set { this.SetFlagValue(EntryFlags.CreatedByMaterializer, value); }
-        }
-
-        public bool EntityHasBeenResolved
-        {
-            get { return this.GetFlagValue(EntryFlags.EntityHasBeenResolved); }
-            set { this.SetFlagValue(EntryFlags.EntityHasBeenResolved, value); }
-        }
-
-        public bool EntityPropertyMappingsApplied
-        {
-            get { return this.GetFlagValue(EntryFlags.EntityPropertyMappingsApplied); }
-            set { this.SetFlagValue(EntryFlags.EntityPropertyMappingsApplied, value); }
-        }
-
-        #endregion Public properties.
-
-        #region Private methods.
-
-        private bool GetFlagValue(EntryFlags mask)
-        {
-            return (this.flags & mask) != 0;
-        }
-
-        private void SetFlagValue(EntryFlags mask, bool value)
-        {
-            if (value)
-            {
-                this.flags |= mask;
-            }
-            else
-            {
-                this.flags &= (~mask);
-            }
-        }
-
-        #endregion Private methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    using System.Xml;
+    using System.Xml.Linq;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("AtomEntry {ResolvedObject} @ {Identity}")]
+    internal class AtomEntry
+    {
+        #region Private fields.
+
+        private EntryFlags flags;
+
+        [Flags]
+        private enum EntryFlags
+        {
+            ShouldUpdateFromPayload = 0x01,
+            
+            CreatedByMaterializer = 0x02,
+
+            EntityHasBeenResolved = 0x04,
+
+            MediaLinkEntryValue = 0x08,
+
+            MediaLinkEntryAssigned = 0x10,
+
+            EntityPropertyMappingsApplied = 0x20,
+
+            IsNull = 0x40
+        }
+
+        #endregion Private fields.
+
+        #region Public properties.
+
+        public bool? MediaLinkEntry
+        {
+            get 
+            {
+                return this.GetFlagValue(EntryFlags.MediaLinkEntryAssigned) ? (bool?)this.GetFlagValue(EntryFlags.MediaLinkEntryValue) : null; 
+            }
+
+            set 
+            {
+                Debug.Assert(value.HasValue, "value.HasValue -- callers shouldn't set the value to unknown");
+                this.SetFlagValue(EntryFlags.MediaLinkEntryAssigned, true);
+                this.SetFlagValue(EntryFlags.MediaLinkEntryValue, value.Value);
+            }
+        }
+
+        public Uri MediaContentUri 
+        { 
+            get; 
+            set; 
+        }
+
+        public Uri MediaEditUri 
+        { 
+            get; 
+            set; 
+        }
+
+        public string TypeName 
+        { 
+            get; 
+            set; 
+        }
+
+        public ClientType ActualType 
+        { 
+            get; 
+            set; 
+        }
+
+        public Uri EditLink 
+        { 
+            get; 
+            set; 
+        }
+
+        public Uri QueryLink
+        {
+            get;
+            set;
+        }
+
+        public string Identity 
+        { 
+            get; 
+            set; 
+        }
+
+        public bool IsNull
+        {
+            get { return this.GetFlagValue(EntryFlags.IsNull); }
+            set { this.SetFlagValue(EntryFlags.IsNull, value); }
+        }
+
+        public List<AtomContentProperty> DataValues 
+        { 
+            get; 
+            set; 
+        }
+
+        public object ResolvedObject 
+        { 
+            get; 
+            set; 
+        }
+
+        public object Tag 
+        { 
+            get; 
+            set; 
+        }
+
+        public string ETagText 
+        { 
+            get; 
+            set; 
+        }
+
+        public string StreamETagText
+        {
+            get;
+            set;
+        }
+
+        public bool ShouldUpdateFromPayload
+        {
+            get { return this.GetFlagValue(EntryFlags.ShouldUpdateFromPayload); }
+            set { this.SetFlagValue(EntryFlags.ShouldUpdateFromPayload, value); }
+        }
+
+        public bool CreatedByMaterializer
+        {
+            get { return this.GetFlagValue(EntryFlags.CreatedByMaterializer); }
+            set { this.SetFlagValue(EntryFlags.CreatedByMaterializer, value); }
+        }
+
+        public bool EntityHasBeenResolved
+        {
+            get { return this.GetFlagValue(EntryFlags.EntityHasBeenResolved); }
+            set { this.SetFlagValue(EntryFlags.EntityHasBeenResolved, value); }
+        }
+
+        public bool EntityPropertyMappingsApplied
+        {
+            get { return this.GetFlagValue(EntryFlags.EntityPropertyMappingsApplied); }
+            set { this.SetFlagValue(EntryFlags.EntityPropertyMappingsApplied, value); }
+        }
+
+        #endregion Public properties.
+
+        #region Private methods.
+
+        private bool GetFlagValue(EntryFlags mask)
+        {
+            return (this.flags & mask) != 0;
+        }
+
+        private void SetFlagValue(EntryFlags mask, bool value)
+        {
+            if (value)
+            {
+                this.flags |= mask;
+            }
+            else
+            {
+                this.flags &= (~mask);
+            }
+        }
+
+        #endregion Private methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomFeed.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomFeed.cs
@@ -1,49 +1,49 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    using System.Xml;
-    using System.Xml.Linq;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    internal class AtomFeed
-    {
-        public long? Count 
-        { 
-            get; 
-            set; 
-        }
-
-        public Uri NextLink
-        {
-            get;
-            set;
-        }
-
-        public IEnumerable<AtomEntry> Entries 
-        { 
-            get; 
-            set; 
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    using System.Xml;
+    using System.Xml.Linq;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    internal class AtomFeed
+    {
+        public long? Count 
+        { 
+            get; 
+            set; 
+        }
+
+        public Uri NextLink
+        {
+            get;
+            set;
+        }
+
+        public IEnumerable<AtomEntry> Entries 
+        { 
+            get; 
+            set; 
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomMaterializer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomMaterializer.cs
@@ -1,1511 +1,1511 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Data.Services.Common;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-    using System.Xml;
-    using System.Xml.Linq;
-
-    #endregion Namespaces.
-
-    internal static class AtomMaterializerInvoker
-    {
-        internal static IEnumerable<T> EnumerateAsElementType<T>(IEnumerable source)
-        {
-            return AtomMaterializer.EnumerateAsElementType<T>(source);
-        }
-
-        internal static List<TTarget> ListAsElementType<T, TTarget>(object materializer, IEnumerable<T> source) where T : TTarget
-        {
-            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
-            return AtomMaterializer.ListAsElementType<T, TTarget>((AtomMaterializer)materializer, source);
-        }
-
-        internal static bool ProjectionCheckValueForPathIsNull(
-            object entry,
-            Type expectedType,
-            object path)
-        {
-            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
-            Debug.Assert(path.GetType() == typeof(ProjectionPath), "path.GetType() == typeof(ProjectionPath)");
-            return AtomMaterializer.ProjectionCheckValueForPathIsNull((AtomEntry)entry, expectedType, (ProjectionPath)path);
-        }
-
-        internal static IEnumerable ProjectionSelect(
-            object materializer,
-            object entry,
-            Type expectedType,
-            Type resultType,
-            object path,
-            Func<object, object, Type, object> selector)
-        {
-            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
-            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
-            Debug.Assert(path.GetType() == typeof(ProjectionPath), "path.GetType() == typeof(ProjectionPath)");
-            return AtomMaterializer.ProjectionSelect((AtomMaterializer)materializer, (AtomEntry)entry, expectedType, resultType, (ProjectionPath)path, selector);
-        }
-
-        internal static AtomEntry ProjectionGetEntry(object entry, string name)
-        {
-            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
-            return AtomMaterializer.ProjectionGetEntry((AtomEntry)entry, name);
-        }
-
-        internal static object ProjectionInitializeEntity(
-            object materializer,
-            object entry,
-            Type expectedType,
-            Type resultType,
-            string[] properties,
-            Func<object, object, Type, object>[] propertyValues)
-        {
-            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
-            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
-            return AtomMaterializer.ProjectionInitializeEntity((AtomMaterializer)materializer, (AtomEntry)entry, expectedType, resultType, properties, propertyValues);
-        }
-
-        internal static object ProjectionValueForPath(object materializer, object entry, Type expectedType, object path)
-        {
-            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
-            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
-            Debug.Assert(path.GetType() == typeof(ProjectionPath), "path.GetType() == typeof(ProjectionPath)");
-            return AtomMaterializer.ProjectionValueForPath((AtomMaterializer)materializer, (AtomEntry)entry, expectedType, (ProjectionPath)path);
-        }
-
-        internal static object DirectMaterializePlan(object materializer, object entry, Type expectedEntryType)
-        {
-            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
-            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
-            return AtomMaterializer.DirectMaterializePlan((AtomMaterializer)materializer, (AtomEntry)entry, expectedEntryType);
-        }
-
-        internal static object ShallowMaterializePlan(object materializer, object entry, Type expectedEntryType)
-        {
-            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
-            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
-            return AtomMaterializer.ShallowMaterializePlan((AtomMaterializer)materializer, (AtomEntry)entry, expectedEntryType);
-        }
-    }
-
-    [DebuggerDisplay("AtomMaterializer {parser}")]
-    internal class AtomMaterializer
-    {
-        #region Private fields.
-
-        private readonly DataServiceContext context;
-
-        private readonly Type expectedType;
-
-
-        private readonly AtomMaterializerLog log;
-
-        private readonly ProjectionPlan materializeEntryPlan;
-
-        private readonly Action<object, object> materializedObjectCallback;
-
-        private readonly MergeOption mergeOption;
-
-        private readonly Dictionary<IEnumerable, DataServiceQueryContinuation> nextLinkTable;
-
-        private readonly AtomParser parser;
-
-        private object currentValue;
-
-        private bool ignoreMissingProperties;
-
-        private object targetInstance;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        internal AtomMaterializer(
-            AtomParser parser, 
-            DataServiceContext context, 
-            Type expectedType, 
-            bool ignoreMissingProperties, 
-            MergeOption mergeOption, 
-            AtomMaterializerLog log, 
-            Action<object, object> materializedObjectCallback,
-            QueryComponents queryComponents,
-            ProjectionPlan plan)
-        {
-            Debug.Assert(context != null, "context != null");
-            Debug.Assert(parser != null, "parser != null");
-            Debug.Assert(log != null, "log != null");
-
-            this.context = context;
-            this.parser = parser;
-            this.expectedType = expectedType;
-            this.ignoreMissingProperties = ignoreMissingProperties;
-            this.mergeOption = mergeOption;
-            this.log = log;
-            this.materializedObjectCallback = materializedObjectCallback;
-            this.nextLinkTable = new Dictionary<IEnumerable, DataServiceQueryContinuation>(ReferenceEqualityComparer<IEnumerable>.Instance);
-            this.materializeEntryPlan = plan ?? CreatePlan(queryComponents);
-        }
-
-        #endregion Constructors.
-
-        #region Internal properties.
-
-        internal DataServiceContext Context
-        {
-            get { return this.context; }
-        }
-
-        internal ProjectionPlan MaterializeEntryPlan
-        {
-            get { return this.materializeEntryPlan; }
-        }
-
-        internal object TargetInstance
-        {
-            get 
-            { 
-                return this.targetInstance;
-            }
-
-            set
-            {
-                Debug.Assert(value != null, "value != null -- otherwise we have no instance target.");
-                this.targetInstance = value;
-            }
-        }
-
-        internal AtomFeed CurrentFeed
-        {
-            get
-            {
-                return this.parser.CurrentFeed;
-            }
-        }
-
-        internal AtomEntry CurrentEntry
-        {
-            get
-            {
-                return this.parser.CurrentEntry;
-            }
-        }
-
-        internal object CurrentValue
-        {
-            get
-            {
-                return this.currentValue;
-            }
-        }
-
-        internal AtomMaterializerLog Log
-        {
-            get { return this.log; }
-        }
-
-        internal Dictionary<IEnumerable, DataServiceQueryContinuation> NextLinkTable
-        {
-            get { return this.nextLinkTable; }
-        }
-
-        internal bool IsEndOfStream
-        {
-            get { return this.parser.DataKind == AtomDataKind.Finished; }
-        }
-
-        #endregion Internal properties.
-
-        #region Projection support.
-
-        internal static IEnumerable<T> EnumerateAsElementType<T>(IEnumerable source)
-        {
-            Debug.Assert(source != null, "source != null");
-
-            IEnumerable<T> typedSource = source as IEnumerable<T>;
-            if (typedSource != null)
-            {
-                return typedSource;
-            }
-            else
-            {
-                return EnumerateAsElementTypeInternal<T>(source);
-            }
-        }
-
-        internal static IEnumerable<T> EnumerateAsElementTypeInternal<T>(IEnumerable source)
-        {
-            Debug.Assert(source != null, "source != null");
-
-            foreach (object item in source)
-            {
-                yield return (T)item;
-            }
-        }
-
-        internal static bool IsDataServiceCollection(Type type)
-        {
-            while (type != null)
-            {
-                if (type.IsGenericType && WebUtil.IsDataServiceCollectionType(type.GetGenericTypeDefinition()))
-                {
-                    return true;
-                }
-
-                type = type.BaseType;
-            }
-
-            return false;
-        }
-
-        internal static List<TTarget> ListAsElementType<T, TTarget>(AtomMaterializer materializer, IEnumerable<T> source) where T : TTarget
-        {
-            Debug.Assert(materializer != null, "materializer != null");
-            Debug.Assert(source != null, "source != null");
-
-            List<TTarget> typedSource = source as List<TTarget>;
-            if (typedSource != null)
-            {
-                return typedSource;
-            }
-
-            List<TTarget> list;
-            IList sourceList = source as IList;
-            if (sourceList != null)
-            {
-                list = new List<TTarget>(sourceList.Count);
-            }
-            else
-            {
-                list = new List<TTarget>();
-            }
-
-            foreach (T item in source)
-            {
-                list.Add((TTarget)item);
-            }
-
-            DataServiceQueryContinuation continuation;
-            if (materializer.nextLinkTable.TryGetValue(source, out continuation))
-            {
-                materializer.nextLinkTable[list] = continuation;
-            }
-
-            return list;
-        }
-
-        internal static bool ProjectionCheckValueForPathIsNull(
-            AtomEntry entry,
-            Type expectedType,
-            ProjectionPath path)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(path != null, "path != null");
-
-            if (path.Count == 0 || path.Count == 1 && path[0].Member == null)
-            {
-                return entry.IsNull;
-            }
-
-            bool result = false;
-            AtomContentProperty atomProperty = null;
-            List<AtomContentProperty> properties = entry.DataValues;
-            for (int i = 0; i < path.Count; i++)
-            {
-                var segment = path[i];
-                if (segment.Member == null)
-                {
-                    continue;
-                }
-
-                bool segmentIsLeaf = i == path.Count - 1;
-                string propertyName = segment.Member;
-                ClientType.ClientProperty property = ClientType.Create(expectedType).GetProperty(propertyName, false);
-                atomProperty = GetPropertyOrThrow(properties, propertyName);
-                ValidatePropertyMatch(property, atomProperty);
-                if (atomProperty.Feed != null)
-                {
-                    Debug.Assert(segmentIsLeaf, "segmentIsLeaf -- otherwise the path generated traverses a feed, which should be disallowed");
-                    result = false;
-                }
-                else
-                {
-                    Debug.Assert(
-                        atomProperty.Entry != null,
-                        "atomProperty.Entry != null -- otherwise a primitive property / complex type is being rewritte with a null check; this is only supported for entities and collection");
-                    if (segmentIsLeaf)
-                    {
-                        result = atomProperty.Entry.IsNull;
-                    }
-
-                    properties = atomProperty.Entry.DataValues;
-                    entry = atomProperty.Entry;
-                }
-
-                expectedType = property.PropertyType;
-            }
-
-            return result;
-        }
-
-        internal static IEnumerable ProjectionSelect(
-            AtomMaterializer materializer,
-            AtomEntry entry,
-            Type expectedType,
-            Type resultType,
-            ProjectionPath path,
-            Func<object, object, Type, object> selector)
-        {
-            ClientType entryType = entry.ActualType ?? ClientType.Create(expectedType);
-            IEnumerable list = (IEnumerable)Util.ActivatorCreateInstance(typeof(List<>).MakeGenericType(resultType));
-            AtomContentProperty atomProperty = null;
-            ClientType.ClientProperty property = null;
-            for (int i = 0; i < path.Count; i++)
-            {
-                var segment = path[i];
-                if (segment.Member == null)
-                {
-                    continue;
-                }
-
-                string propertyName = segment.Member;
-                property = entryType.GetProperty(propertyName, false);
-                atomProperty = GetPropertyOrThrow(entry, propertyName);
-
-                if (atomProperty.Entry != null)
-                {
-                    entry = atomProperty.Entry;
-                    entryType = ClientType.Create(property.NullablePropertyType, false);
-                } 
-            }
-
-            ValidatePropertyMatch(property, atomProperty);
-            AtomFeed sourceFeed = atomProperty.Feed;
-            Debug.Assert(
-                sourceFeed != null, 
-                "sourceFeed != null -- otherwise ValidatePropertyMatch should have thrown or property isn't a collection (and should be part of this plan)");
-
-            Action<object, object> addMethod = GetAddToCollectionDelegate(list.GetType());
-            foreach (var paramEntry in sourceFeed.Entries)
-            {
-                object projected = selector(materializer, paramEntry, property.CollectionType );
-                addMethod(list, projected);
-            }
-
-            ProjectionPlan plan = new ProjectionPlan();
-            plan.LastSegmentType = property.CollectionType;
-            plan.Plan = selector;
-            plan.ProjectedType = resultType;
-
-            materializer.FoundNextLinkForCollection(list, sourceFeed.NextLink, plan);
-
-            return list;
-        }
-        
-                internal static AtomEntry ProjectionGetEntry(AtomEntry entry, string name)
-        {
-            Debug.Assert(entry != null, "entry != null -- ProjectionGetEntry never returns a null entry, and top-level materialization shouldn't pass one in");
-
-            AtomContentProperty property = GetPropertyOrThrow(entry, name);
-            if (property.Entry == null)
-            {
-                throw new InvalidOperationException(Strings.AtomMaterializer_PropertyNotExpectedEntry(name, entry.Identity));
-            }
-
-            CheckEntryToAccessNotNull(property.Entry, name);
-
-            return property.Entry;
-        }
-
-        internal static object ProjectionInitializeEntity(
-            AtomMaterializer materializer,
-            AtomEntry entry,
-            Type expectedType,
-            Type resultType,
-            string[] properties,
-            Func<object, object, Type, object>[] propertyValues)
-        {
-            if (entry == null || entry.IsNull)
-            {
-                throw new NullReferenceException(Strings.AtomMaterializer_EntryToInitializeIsNull(resultType.FullName));
-            }
-
-            object result;
-            if (!entry.EntityHasBeenResolved)
-            {
-                AtomMaterializer.ProjectionEnsureEntryAvailableOfType(materializer, entry, resultType);
-            }
-            else if (!resultType.IsAssignableFrom(entry.ActualType.ElementType))
-            {
-                string message = Strings.AtomMaterializer_ProjectEntityTypeMismatch(
-                    resultType.FullName,
-                    entry.ActualType.ElementType.FullName,
-                    entry.Identity);
-                throw new InvalidOperationException(message);
-            }
-
-            result = entry.ResolvedObject;
-            
-            for (int i = 0; i < properties.Length; i++)
-            {
-                var property = entry.ActualType.GetProperty(properties[i], materializer.ignoreMissingProperties);
-                object value = propertyValues[i](materializer, entry, expectedType);
-                if (entry.ShouldUpdateFromPayload && ClientType.Create(property.NullablePropertyType, false).IsEntityType)
-                {
-                    materializer.Log.SetLink(entry, property.PropertyName, value);
-                }
-
-                bool isEntity = property.CollectionType == null || !ClientType.CheckElementTypeIsEntity(property.CollectionType);
-                if (entry.ShouldUpdateFromPayload)
-                {
-                    if (isEntity)
-                    {
-                        property.SetValue(result, value, property.PropertyName, false);
-                    }
-                    else
-                    {
-                        IEnumerable valueAsEnumerable = (IEnumerable)value;
-                        DataServiceQueryContinuation continuation = materializer.nextLinkTable[valueAsEnumerable];
-                        Uri nextLinkUri = continuation == null ? null : continuation.NextLinkUri;
-                        ProjectionPlan plan = continuation == null ? null : continuation.Plan;
-                        materializer.MergeLists(entry, property, valueAsEnumerable, nextLinkUri, plan);
-                    }
-                }
-                else if (!isEntity)
-                {
-                    materializer.FoundNextLinkForUnmodifiedCollection(property.GetValue(entry.ResolvedObject) as IEnumerable);
-                }
-            }
-
-            return result;
-        }
-
-        internal static object ProjectionValueForPath(AtomMaterializer materializer, AtomEntry entry, Type expectedType, ProjectionPath path)
-        {
-            Debug.Assert(materializer != null, "materializer != null");
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(path != null, "path != null");
-
-            if (path.Count == 0 || path.Count == 1 && path[0].Member == null)
-            {
-                if (!entry.EntityHasBeenResolved)
-                {
-                    materializer.Materialize(entry, expectedType, false);
-                }
-
-                return entry.ResolvedObject;
-            }
-
-            object result = null;
-            AtomContentProperty atomProperty = null;
-            List<AtomContentProperty> properties = entry.DataValues;
-            for (int i = 0; i < path.Count; i++)
-            {
-                var segment = path[i];
-                if (segment.Member == null)
-                {
-                    continue;
-                }
-
-                bool segmentIsLeaf = i == path.Count - 1;
-                string propertyName = segment.Member;
-
-                if (segmentIsLeaf)
-                {
-                    CheckEntryToAccessNotNull(entry, propertyName);
-                    if (!entry.EntityPropertyMappingsApplied)
-                    {
-                        ClientType attributeSourceType = MaterializeAtom.GetEntryClientType(entry.TypeName, materializer.context, expectedType, false);
-                        ApplyEntityPropertyMappings(entry, attributeSourceType);
-                    }
-                }
-
-                ClientType.ClientProperty property = ClientType.Create(expectedType).GetProperty(propertyName, false);
-                atomProperty = GetPropertyOrThrow(properties, propertyName);
-
-                ValidatePropertyMatch(property, atomProperty);
-
-                AtomFeed feedValue = atomProperty.Feed;
-                if (feedValue != null)
-                {
-                    Debug.Assert(segmentIsLeaf, "segmentIsLeaf -- otherwise the path generated traverses a feed, which should be disallowed");
-
-                    Type collectionType = ClientType.GetImplementationType(segment.ProjectionType, typeof(ICollection<>));
-                    if (collectionType == null)
-                    {
-                        collectionType = ClientType.GetImplementationType(segment.ProjectionType, typeof(IEnumerable<>));
-                    }
-
-                    Debug.Assert(
-                        collectionType != null, 
-                        "collectionType != null -- otherwise the property should never have been recognized as a collection");
-                    
-                    Type nestedExpectedType = collectionType.GetGenericArguments()[0];
-                    Type feedType = segment.ProjectionType;
-                    if (feedType.IsInterface || IsDataServiceCollection(feedType))
-                    {
-                        feedType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(nestedExpectedType);
-                    }
-
-                    IEnumerable list = (IEnumerable)Util.ActivatorCreateInstance(feedType);
-                    MaterializeToList(materializer, list, nestedExpectedType, feedValue.Entries);
-
-                    if (IsDataServiceCollection(segment.ProjectionType))
-                    {
-                        Type dataServiceCollectionType = WebUtil.GetDataServiceCollectionOfT(nestedExpectedType);
-                        list = (IEnumerable)Util.ActivatorCreateInstance(
-                            dataServiceCollectionType,
-                            list,                            
-                            TrackingMode.None);                    }
-
-                    ProjectionPlan plan = CreatePlanForShallowMaterialization(nestedExpectedType);
-                    materializer.FoundNextLinkForCollection(list, feedValue.NextLink, plan);
-                    result = list;
-                }
-                else if (atomProperty.Entry != null)
-                {
-                    if (segmentIsLeaf && !atomProperty.Entry.EntityHasBeenResolved && !atomProperty.IsNull)
-                    {
-                        materializer.Materialize(atomProperty.Entry, property.PropertyType, false);
-                    }
-
-                    properties = atomProperty.Entry.DataValues;
-                    result = atomProperty.Entry.ResolvedObject;
-                    entry = atomProperty.Entry;
-                }
-                else
-                {
-                    if (atomProperty.Properties != null)
-                    {
-                        if (atomProperty.MaterializedValue == null && !atomProperty.IsNull)
-                        {
-                            ClientType complexType = ClientType.Create(property.PropertyType);
-                            object complexInstance = Util.ActivatorCreateInstance(property.PropertyType);
-                            MaterializeDataValues(complexType, atomProperty.Properties, materializer.ignoreMissingProperties, materializer.context);
-                            ApplyDataValues(complexType, atomProperty.Properties, materializer.ignoreMissingProperties, materializer.context, complexInstance);
-                            atomProperty.MaterializedValue = complexInstance;
-                        }
-                    }
-                    else
-                    {
-                        MaterializeDataValue(property.NullablePropertyType, atomProperty, materializer.context);
-                    }
-
-                    properties = atomProperty.Properties;
-                    result = atomProperty.MaterializedValue;
-                }
-
-                expectedType = property.PropertyType;
-            }
-
-            return result;
-        }
-
-        internal static void ProjectionEnsureEntryAvailableOfType(AtomMaterializer materializer, AtomEntry entry, Type requiredType)
-        {
-            Debug.Assert(materializer != null, "materializer != null");
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(
-                materializer.targetInstance == null,
-                "materializer.targetInstance == null -- projection shouldn't have a target instance set; that's only used for POST replies");
-
-            if (entry.EntityHasBeenResolved)
-            {
-                if (!requiredType.IsAssignableFrom(entry.ResolvedObject.GetType()))
-                {
-                    throw new InvalidOperationException(
-                        "Expecting type '" + requiredType + "' for '" + entry.Identity + "', but found " +
-                        "a previously created instance of type '" + entry.ResolvedObject.GetType());
-                }
-
-                return;
-            }
-
-            if (entry.Identity == null)
-            {
-                throw Error.InvalidOperation(Strings.Deserialize_MissingIdElement);
-            }
-
-            if (!materializer.TryResolveAsCreated(entry) && 
-                !materializer.TryResolveFromContext(entry, requiredType))
-            {
-                materializer.ResolveByCreatingWithType(entry, requiredType);
-            }
-            else
-            {
-                if (!requiredType.IsAssignableFrom(entry.ResolvedObject.GetType()))
-                {
-                    throw Error.InvalidOperation(Strings.Deserialize_Current(requiredType, entry.ResolvedObject.GetType()));
-                }
-            }
-        }
-
-        internal static object DirectMaterializePlan(AtomMaterializer materializer, AtomEntry entry, Type expectedEntryType)
-        {
-            materializer.Materialize(entry, expectedEntryType, true);
-            return entry.ResolvedObject;
-        }
-
-        internal static object ShallowMaterializePlan(AtomMaterializer materializer, AtomEntry entry, Type expectedEntryType)
-        {
-            materializer.Materialize(entry, expectedEntryType, false);
-            return entry.ResolvedObject;
-        }
-
-        internal static void ValidatePropertyMatch(ClientType.ClientProperty property, AtomContentProperty atomProperty)
-        {
-            Debug.Assert(property != null, "property != null");
-            Debug.Assert(atomProperty != null, "atomProperty != null");
-
-            if (property.IsKnownType && (atomProperty.Feed != null || atomProperty.Entry != null))
-            {
-                throw Error.InvalidOperation(Strings.Deserialize_MismatchAtomLinkLocalSimple);
-            }
-
-            if (atomProperty.Feed != null && property.CollectionType == null)
-            {
-                throw Error.InvalidOperation(Strings.Deserialize_MismatchAtomLinkFeedPropertyNotCollection(property.PropertyName));
-            }
-
-            if (atomProperty.Entry != null && property.CollectionType != null)
-            {
-                throw Error.InvalidOperation(Strings.Deserialize_MismatchAtomLinkEntryPropertyIsCollection(property.PropertyName));
-            }
-        }
-
-        #endregion Projection support.
-        
-        #region Internal methods.
-
-        internal bool Read()
-        {
-            this.currentValue = null;
-
-            this.nextLinkTable.Clear();
-            while (this.parser.Read())
-            {
-                Debug.Assert(
-                    this.parser.DataKind != AtomDataKind.None,
-                    "parser.DataKind != AtomDataKind.None -- otherwise parser.Read() didn't update its state");
-                Debug.Assert(
-                    this.parser.DataKind != AtomDataKind.Finished,
-                    "parser.DataKind != AtomDataKind.Finished -- otherwise parser.Read() shouldn't have returned true");
-
-                switch (this.parser.DataKind)
-                {
-                    case AtomDataKind.Feed:
-                    case AtomDataKind.FeedCount:
-                        break;
-                    case AtomDataKind.Entry:
-                        Debug.Assert(
-                            this.parser.CurrentEntry != null,
-                            "parser.CurrentEntry != null -- otherwise parser.DataKind shouldn't be Entry");
-                        this.CurrentEntry.ResolvedObject = this.TargetInstance;
-                        this.currentValue = this.materializeEntryPlan.Run(this, this.CurrentEntry, this.expectedType);
-                        return true;
-                    case AtomDataKind.PagingLinks:
-                        break;
-                    default:
-                        Debug.Assert(
-                            this.parser.DataKind == AtomDataKind.Custom,
-                            "parser.DataKind == AtomDataKind.Custom -- otherwise AtomMaterializer.Read switch is missing a case");
-
-                        Type underlyingExpectedType = Nullable.GetUnderlyingType(this.expectedType) ?? this.expectedType;
-                        ClientType targetType = ClientType.Create(underlyingExpectedType);
-                        if (ClientConvert.IsKnownType(underlyingExpectedType))
-                        {
-                            string elementText = this.parser.ReadCustomElementString();
-                            if (elementText != null)
-                            {
-                                this.currentValue = ClientConvert.ChangeType(elementText, underlyingExpectedType);
-                            }
-
-                            return true;
-                        }
-                        else if (!targetType.IsEntityType && this.parser.IsDataWebElement)
-                        {
-                            AtomContentProperty property = this.parser.ReadCurrentPropertyValue();
-                            if (property == null || property.IsNull)
-                            {
-                                this.currentValue = null;
-                            }
-                            else
-                            {
-                                this.currentValue = targetType.CreateInstance();
-                                MaterializeDataValues(targetType, property.Properties, this.ignoreMissingProperties, this.context);
-                                ApplyDataValues(targetType, property.Properties, this.ignoreMissingProperties, this.context, this.currentValue);
-                            }
-
-                            return true;
-                        }
-
-                        break;
-                }
-            }
-
-            Debug.Assert(this.parser.DataKind == AtomDataKind.Finished, "parser.DataKind == AtomDataKind.None");
-            Debug.Assert(this.parser.CurrentEntry == null, "parser.Current == null");
-            return false;
-        }
-
-        internal void PropagateContinuation<T>(IEnumerable<T> from, DataServiceCollection<T> to)
-        {
-            DataServiceQueryContinuation continuation;
-            if (this.nextLinkTable.TryGetValue(from, out continuation))
-            {
-                this.nextLinkTable.Add(to, continuation);
-                Util.SetNextLinkForCollection(to, continuation);
-            }
-        }
-
-        #endregion Internal methods.
-
-        #region Private methods.
-
-        private static void CheckEntryToAccessNotNull(AtomEntry entry, string name)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(name != null, "name != null");
-
-            if (entry.IsNull)
-            {
-                throw new NullReferenceException(Strings.AtomMaterializer_EntryToAccessIsNull(name));
-            }
-        }
-
-        private static ProjectionPlan CreatePlan(QueryComponents queryComponents)
-        {
-            LambdaExpression projection = queryComponents.Projection;
-            ProjectionPlan result;
-            if (projection == null)
-            {
-                result = CreatePlanForDirectMaterialization(queryComponents.LastSegmentType);
-            }
-            else
-            {
-                result = ProjectionPlanCompiler.CompilePlan(projection, queryComponents.NormalizerRewrites);
-                result.LastSegmentType = queryComponents.LastSegmentType;
-            }
-
-            return result;
-        }
-
-        private static ProjectionPlan CreatePlanForDirectMaterialization(Type lastSegmentType)
-        {
-            ProjectionPlan result = new ProjectionPlan();
-            result.Plan = AtomMaterializerInvoker.DirectMaterializePlan;
-            result.ProjectedType = lastSegmentType;
-            result.LastSegmentType = lastSegmentType;
-            return result;
-        }
-
-        private static ProjectionPlan CreatePlanForShallowMaterialization(Type lastSegmentType)
-        {
-            ProjectionPlan result = new ProjectionPlan();
-            result.Plan = AtomMaterializerInvoker.ShallowMaterializePlan;
-            result.ProjectedType = lastSegmentType;
-            result.LastSegmentType = lastSegmentType;
-            return result;
-        }
-
-        private static Action<object, object> GetAddToCollectionDelegate(Type listType)
-        {
-            Debug.Assert(listType != null, "listType != null");
-            
-            Type listElementType;
-            MethodInfo addMethod = ClientType.GetAddToCollectionMethod(listType, out listElementType);
-            ParameterExpression list = Expression.Parameter(typeof(object), "list");
-            ParameterExpression item = Expression.Parameter(typeof(object), "element");
-            Expression body = Expression.Call(Expression.Convert(list, listType), addMethod, Expression.Convert(item, listElementType));
-#if ASTORIA_LIGHT
-            LambdaExpression lambda = ExpressionHelpers.CreateLambda(body, list, item);
-#else
-            LambdaExpression lambda = Expression.Lambda(body, list, item);
-#endif
-            return (Action<object, object>)lambda.Compile();
-        }
-
-        private static object GetOrCreateCollectionProperty(object instance, ClientType.ClientProperty property, Type collectionType)
-        {
-            Debug.Assert(instance != null, "instance != null");
-            Debug.Assert(property != null, "property != null");
-            Debug.Assert(property.CollectionType != null, "property.CollectionType != null -- otherwise property isn't a collection");
-
-            object result;
-            result = property.GetValue(instance);
-            if (result == null)
-            {
-                if (collectionType == null)
-                {
-                    collectionType = property.PropertyType;
-                    if (collectionType.IsInterface)
-                    {
-                        collectionType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(property.CollectionType);
-                    }
-                }
-
-                result = Activator.CreateInstance(collectionType);
-                property.SetValue(instance, result, property.PropertyName, false );
-            }
-
-            Debug.Assert(result != null, "result != null -- otherwise GetOrCreateCollectionProperty didn't fall back to creation");
-            return result;
-        }
-
-        private static void MaterializeToList(
-            AtomMaterializer materializer,
-            IEnumerable list,
-            Type nestedExpectedType,
-            IEnumerable<AtomEntry> entries)
-        {
-            Debug.Assert(materializer != null, "materializer != null");
-            Debug.Assert(list != null, "list != null");
-
-            Action<object, object> addMethod = GetAddToCollectionDelegate(list.GetType());
-            foreach (AtomEntry feedEntry in entries)
-            {
-                if (!feedEntry.EntityHasBeenResolved)
-                {
-                    materializer.Materialize(feedEntry, nestedExpectedType,  false);
-                }
-
-                addMethod(list, feedEntry.ResolvedObject);
-            }
-        }
-
-         private static bool MaterializeDataValue(Type type, AtomContentProperty atomProperty, DataServiceContext context)
-        {
-            Debug.Assert(type != null, "type != null");
-            Debug.Assert(atomProperty != null, "atomProperty != null");
-            Debug.Assert(context != null, "context != null");
-
-            string propertyTypeName = atomProperty.TypeName;
-            string propertyValueText = atomProperty.Text;
-
-            ClientType nestedElementType = null;
-            Type underlyingType = Nullable.GetUnderlyingType(type) ?? type;
-            bool knownType = ClientConvert.IsKnownType(underlyingType);
-            if (!knownType)
-            {
-                nestedElementType = MaterializeAtom.GetEntryClientType(propertyTypeName, context, type, true);
-                Debug.Assert(nestedElementType != null, "nestedElementType != null -- otherwise ReadTypeAttribute (or someone!) should throw");
-                knownType = ClientConvert.IsKnownType(nestedElementType.ElementType);
-            }
-
-            if (knownType)
-            {
-                if (atomProperty.IsNull)
-                {
-                    if (!ClientType.CanAssignNull(type))
-                    {
-                        throw new InvalidOperationException(Strings.AtomMaterializer_CannotAssignNull(atomProperty.Name, type.FullName));
-                    }
-
-                    atomProperty.MaterializedValue = null;
-                    return true;
-                }
-                else
-                {
-                    object value = propertyValueText;
-                    if (propertyValueText != null)
-                    {
-                        value = ClientConvert.ChangeType(propertyValueText, (null != nestedElementType ? nestedElementType.ElementType : underlyingType));
-                    }
-
-                    atomProperty.MaterializedValue = value;
-                    return true;
-                }
-            }
-
-            return false;
-        }
-
-        private static void MaterializeDataValues(
-            ClientType actualType, 
-            List<AtomContentProperty> values,
-            bool ignoreMissingProperties,
-            DataServiceContext context)
-        {
-            Debug.Assert(actualType != null, "actualType != null");
-            Debug.Assert(values != null, "values != null");
-            Debug.Assert(context != null, "context != null");
-
-            foreach (var atomProperty in values)
-            {
-                string propertyName = atomProperty.Name;
-                
-                var property = actualType.GetProperty(propertyName, ignoreMissingProperties); // may throw
-                if (property == null)
-                {
-                    continue;
-                }
-
-                if (atomProperty.Feed == null && atomProperty.Entry == null)
-                {
-                    bool materialized = MaterializeDataValue(property.NullablePropertyType, atomProperty, context);
-                    if (!materialized && property.CollectionType != null)
-                    {
-                        throw Error.NotSupported(Strings.ClientType_CollectionOfNonEntities);
-                    }
-                }
-            }
-        }
-
-        private static void ApplyDataValue(ClientType type, AtomContentProperty property, bool ignoreMissingProperties, DataServiceContext context, object instance)
-        {
-            Debug.Assert(type != null, "type != null");
-            Debug.Assert(property != null, "property != null");
-            Debug.Assert(context != null, "context != null");
-            Debug.Assert(instance != null, "instance != context");
-
-            var prop = type.GetProperty(property.Name, ignoreMissingProperties);
-            if (prop == null)
-            {
-                return;
-            }
-
-            if (property.Properties != null)
-            {
-                if (prop.IsKnownType ||
-                    ClientConvert.IsKnownType(MaterializeAtom.GetEntryClientType(property.TypeName, context, prop.PropertyType, true).ElementType))
-                {
-                    throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
-                }
-
-                 bool needToSet = false;
-                ClientType complexType = ClientType.Create(prop.PropertyType);
-                object complexInstance = prop.GetValue(instance);
-                if (complexInstance == null)
-                {
-                    complexInstance = complexType.CreateInstance();
-                    needToSet = true;
-                }
-
-                MaterializeDataValues(complexType, property.Properties, ignoreMissingProperties, context);
-                ApplyDataValues(complexType, property.Properties, ignoreMissingProperties, context, complexInstance);
-
-                if (needToSet)
-                {
-                    prop.SetValue(instance, complexInstance, property.Name, true );
-                }
-            }
-            else
-            {
-                prop.SetValue(instance, property.MaterializedValue, property.Name, true );
-            }
-        }
-
-        private static void ApplyDataValues(ClientType type, IEnumerable<AtomContentProperty> properties, bool ignoreMissingProperties, DataServiceContext context, object instance)
-        {
-            Debug.Assert(type != null, "type != null");
-            Debug.Assert(properties != null, "properties != null");
-            Debug.Assert(context != null, "properties != context");
-            Debug.Assert(instance != null, "instance != context");
-
-            foreach (var p in properties)
-            {
-                ApplyDataValue(type, p, ignoreMissingProperties, context, instance);
-            }
-        }
-
-        private static void SetValueOnPath(List<AtomContentProperty> values, string path, string value, string typeName)
-        {
-            Debug.Assert(values != null, "values != null");
-            Debug.Assert(path != null, "path != null");
-
-            bool existing = true;
-            AtomContentProperty property = null;
-            foreach (string step in path.Split('/'))
-            {
-                if (values == null)
-                {
-                    Debug.Assert(property != null, "property != null -- if values is null then this isn't the first step");
-                    property.EnsureProperties();
-                    values = property.Properties;
-                }
-
-                property = values.Where(v => v.Name == step).FirstOrDefault();
-                if (property == null)
-                {
-                    AtomContentProperty newProperty = new AtomContentProperty();
-                    existing = false;
-                    newProperty.Name = step;
-                    values.Add(newProperty);
-                    property = newProperty;
-                }
-                else
-                {
-                    if (property.IsNull)
-                    {
-                        return;
-                    }
-                }
-
-                values = property.Properties;
-            }
-
-            Debug.Assert(property != null, "property != null -- property path should have at least one segment");
-            
-            if (existing == false)
-            {
-                property.TypeName = typeName;
-                property.Text = value;
-            }
-        }
-
-        private static void ApplyEntityPropertyMappings(AtomEntry entry, ClientType entryType)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(entry.Tag is XElement, "entry.Tag is XElement");
-            Debug.Assert(entryType != null, "entryType != null -- othewise how would we know to apply property mappings (note that for projections entry.ActualType may be different that entryType)?");
-            Debug.Assert(!entry.EntityPropertyMappingsApplied, "!entry.EntityPropertyMappingsApplied -- EPM should happen only once per entry");
-
-            if (entryType.HasEntityPropertyMappings)
-            {
-                XElement entryElement = entry.Tag as XElement;
-                Debug.Assert(entryElement != null, "entryElement != null");
-                ApplyEntityPropertyMappings(entry, entryElement, entryType.EpmTargetTree.SyndicationRoot);
-                ApplyEntityPropertyMappings(entry, entryElement, entryType.EpmTargetTree.NonSyndicationRoot);
-            }
-
-            entry.EntityPropertyMappingsApplied = true;
-        }
-
-        private static void ApplyEntityPropertyMappings(AtomEntry entry, XElement entryElement, EpmTargetPathSegment target)
-        {
-            Debug.Assert(target != null, "target != null");
-            Debug.Assert(!target.HasContent, "!target.HasContent");
-
-            Stack<System.Data.Services.Common.EpmTargetPathSegment> segments = new Stack<System.Data.Services.Common.EpmTargetPathSegment>();
-            Stack<XElement> elements = new Stack<XElement>();
-
-            segments.Push(target);
-            elements.Push(entryElement);
-
-            while (segments.Count > 0)
-            {
-                System.Data.Services.Common.EpmTargetPathSegment segment = segments.Pop();
-                XElement element = elements.Pop();
-                if (segment.HasContent)
-                {
-                    var node = element.Nodes().Where(n => n.NodeType == XmlNodeType.Text || n.NodeType == XmlNodeType.SignificantWhitespace).FirstOrDefault();
-                    string elementValue = (node == null) ? null : ((XText)node).Value;
-                    Debug.Assert(segment.EpmInfo != null, "segment.EpmInfo != null -- otherwise segment.HasValue should be false");
-
-                    string path = segment.EpmInfo.Attribute.SourcePath;
-                    string typeName = (string)element.Attribute(XName.Get(XmlConstants.AtomTypeAttributeName, XmlConstants.DataWebMetadataNamespace));
-
-                    SetValueOnPath(entry.DataValues, path, elementValue, typeName);
-                }
-
-                foreach (var item in segment.SubSegments)
-                {
-                    if (item.IsAttribute)
-                    {
-                        string localName = item.SegmentName.Substring(1);
-                        var attribute = element.Attribute(XName.Get(localName, item.SegmentNamespaceUri));
-                        if (attribute != null)
-                        {
-                            SetValueOnPath(entry.DataValues, item.EpmInfo.Attribute.SourcePath, attribute.Value, null);
-                        }
-                    }
-                    else
-                    {
-                        var child = element.Element(XName.Get(item.SegmentName, item.SegmentNamespaceUri));
-                        if (child != null)
-                        {
-                            segments.Push(item);
-                            elements.Push(child);
-                        }
-                    }
-                }
-
-                Debug.Assert(segments.Count == elements.Count, "segments.Count == elements.Count -- otherwise they're out of sync");
-            }
-        }
-
-        private static AtomContentProperty GetPropertyOrThrow(List<AtomContentProperty> properties, string propertyName)
-        {
-            AtomContentProperty atomProperty = null;
-            if (properties != null)
-            {
-                atomProperty = properties.Where(p => p.Name == propertyName).FirstOrDefault();
-            }
-
-            if (atomProperty == null)
-            {
-                throw new InvalidOperationException(Strings.AtomMaterializer_PropertyMissing(propertyName));
-            }
-
-            Debug.Assert(atomProperty != null, "atomProperty != null");
-            return atomProperty;
-        }
-
-        private static AtomContentProperty GetPropertyOrThrow(AtomEntry entry, string propertyName)
-        {
-            AtomContentProperty atomProperty = null;
-            var properties = entry.DataValues;
-            if (properties != null)
-            {
-                atomProperty = properties.Where(p => p.Name == propertyName).FirstOrDefault();
-            }
-
-            if (atomProperty == null)
-            {
-                throw new InvalidOperationException(Strings.AtomMaterializer_PropertyMissingFromEntry(propertyName, entry.Identity));
-            }
-
-            Debug.Assert(atomProperty != null, "atomProperty != null");
-            return atomProperty;
-        }
-
-        private void MergeLists(AtomEntry entry, ClientType.ClientProperty property, IEnumerable list, Uri nextLink, ProjectionPlan plan)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null");
-            Debug.Assert(property != null, "property != null");
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(plan != null || nextLink == null, "plan != null || nextLink == null");
-
-            if (entry.ShouldUpdateFromPayload && 
-                property.NullablePropertyType == list.GetType() && 
-                property.GetValue(entry.ResolvedObject) == null)
-            {
-                property.SetValue(entry.ResolvedObject, list, property.PropertyName, false );
-                this.FoundNextLinkForCollection(list, nextLink, plan);
-
-                foreach (object item in list)
-                {
-                    this.log.AddedLink(entry, property.PropertyName, item);
-                }
-
-                return;
-            }
-
-            this.ApplyItemsToCollection(entry, property, list, nextLink, plan);
-        }
-
-        private bool TryResolveAsTarget(AtomEntry entry)
-        {
-            if (entry.ResolvedObject == null)
-            {
-                return false;
-            }
-
-            Debug.Assert(
-                entry.ResolvedObject == this.TargetInstance,
-                "entry.ResolvedObject == this.TargetInstance -- otherwise there we ResolveOrCreateInstance more than once on the same entry");
-            Debug.Assert(
-                this.mergeOption == MergeOption.OverwriteChanges || this.mergeOption == MergeOption.PreserveChanges,
-                "MergeOption.OverwriteChanges and MergeOption.PreserveChanges are the only expected values during SaveChanges");
-            entry.ActualType = ClientType.Create(entry.ResolvedObject.GetType());
-            this.log.FoundTargetInstance(entry);
-            entry.ShouldUpdateFromPayload = this.mergeOption == MergeOption.PreserveChanges ? false : true;
-            entry.EntityHasBeenResolved = true;
-            return true;
-        }
-
-        private bool TryResolveFromContext(AtomEntry entry, Type expectedEntryType)
-        {
-            bool tracking = this.mergeOption != MergeOption.NoTracking;
-            if (tracking)
-            {
-                EntityStates state;
-                entry.ResolvedObject = this.context.TryGetEntity(entry.Identity, entry.ETagText, this.mergeOption, out state);
-                if (entry.ResolvedObject != null)
-                {
-                    if (!expectedEntryType.IsInstanceOfType(entry.ResolvedObject))
-                    {
-                        throw Error.InvalidOperation(Strings.Deserialize_Current(expectedEntryType, entry.ResolvedObject.GetType()));
-                    }
-
-                    entry.ActualType = ClientType.Create(entry.ResolvedObject.GetType());
-                    entry.EntityHasBeenResolved = true;
-
-                     entry.ShouldUpdateFromPayload =
-                        this.mergeOption == MergeOption.OverwriteChanges ||
-                        (this.mergeOption == MergeOption.PreserveChanges && state == EntityStates.Unchanged) ||
-                        (this.mergeOption == MergeOption.PreserveChanges && state == EntityStates.Deleted);
-                    this.log.FoundExistingInstance(entry);
-
-                    return true;
-                }
-            }
-
-            return false;
-        }
-
-        private void ResolveByCreatingWithType(AtomEntry entry, Type type)
-        {
-            Debug.Assert(
-                entry.ResolvedObject == null,
-                "entry.ResolvedObject == null -- otherwise we're about to overwrite - should never be called");
-            entry.ActualType = ClientType.Create(type);
-            entry.ResolvedObject = Activator.CreateInstance(type);
-            entry.CreatedByMaterializer = true;
-            entry.ShouldUpdateFromPayload = true;
-            entry.EntityHasBeenResolved = true;
-            this.log.CreatedInstance(entry);
-        }
-
-        private void ResolveByCreating(AtomEntry entry, Type expectedEntryType)
-        {
-            Debug.Assert(
-                entry.ResolvedObject == null,
-                "entry.ResolvedObject == null -- otherwise we're about to overwrite - should never be called");
-
-            ClientType actualType = MaterializeAtom.GetEntryClientType(entry.TypeName, this.context, expectedEntryType, true);
-
-            Debug.Assert(actualType != null, "actualType != null -- otherwise ClientType.Create returned a null value");
-            this.ResolveByCreatingWithType(entry, actualType.ElementType);
-        }
-
-        private bool TryResolveAsCreated(AtomEntry entry)
-        {
-            AtomEntry existingEntry;
-            if (!this.log.TryResolve(entry, out existingEntry))
-            {
-                return false;
-            }
-
-            Debug.Assert(
-                existingEntry.ResolvedObject != null, 
-                "existingEntry.ResolvedObject != null -- how did it get there otherwise?");
-            entry.ActualType = existingEntry.ActualType;
-            entry.ResolvedObject = existingEntry.ResolvedObject;
-            entry.CreatedByMaterializer = existingEntry.CreatedByMaterializer;
-            entry.ShouldUpdateFromPayload = existingEntry.ShouldUpdateFromPayload;
-            entry.EntityHasBeenResolved = true;
-            return true;
-        }
-
-        private void ResolveOrCreateInstance(AtomEntry entry, Type expectedEntryType)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(expectedEntryType != null, "expectedEntryType != null");
-            Debug.Assert(entry.EntityHasBeenResolved == false, "entry.EntityHasBeenResolved == false");
-
-            if (!this.TryResolveAsTarget(entry))
-            {
-                if (entry.Identity == null)
-                {
-                    throw Error.InvalidOperation(Strings.Deserialize_MissingIdElement);
-                }
-
-                if (!this.TryResolveAsCreated(entry))
-                {
-                    if (!this.TryResolveFromContext(entry, expectedEntryType))
-                    {
-                        this.ResolveByCreating(entry, expectedEntryType);
-                    }
-                }
-            }
-
-            Debug.Assert(entry.ActualType != null, "entry.ActualType != null");
-            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null");
-            Debug.Assert(entry.EntityHasBeenResolved, "entry.EntityHasBeenResolved");
-
-            return;
-        }
-
-        private void ApplyFeedToCollection(
-            AtomEntry entry,
-            ClientType.ClientProperty property,
-            AtomFeed feed,
-            bool includeLinks)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(property != null, "property != null");
-            Debug.Assert(feed != null, "feed != null");
-
-            ClientType collectionType = ClientType.Create(property.CollectionType);
-            foreach (AtomEntry feedEntry in feed.Entries)
-            {
-                this.Materialize(feedEntry, collectionType.ElementType, includeLinks);
-            }
-
-            ProjectionPlan continuationPlan = includeLinks ? CreatePlanForDirectMaterialization(property.CollectionType) : CreatePlanForShallowMaterialization(property.CollectionType);
-            this.ApplyItemsToCollection(entry, property, feed.Entries.Select(e => e.ResolvedObject), feed.NextLink, continuationPlan);
-        }
-
-        private void ApplyItemsToCollection(
-            AtomEntry entry,
-            ClientType.ClientProperty property,
-            IEnumerable items,
-            Uri nextLink,
-            ProjectionPlan continuationPlan)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(property != null, "property != null");
-            Debug.Assert(items != null, "items != null");
-
-            object collection = entry.ShouldUpdateFromPayload ? GetOrCreateCollectionProperty(entry.ResolvedObject, property, null) : null;
-            ClientType collectionType = ClientType.Create(property.CollectionType);
-            foreach (object item in items)
-            {
-                if (!collectionType.ElementType.IsAssignableFrom(item.GetType()))
-                {
-                    string message = Strings.AtomMaterializer_EntryIntoCollectionMismatch(
-                        item.GetType().FullName,
-                        collectionType.ElementType.FullName);
-                    throw new InvalidOperationException(message);
-                }
-
-                if (entry.ShouldUpdateFromPayload)
-                {
-                    property.SetValue(collection, item, property.PropertyName, true );
-                    this.log.AddedLink(entry, property.PropertyName, item);
-                }
-            }
-
-            if (entry.ShouldUpdateFromPayload)
-            {
-                this.FoundNextLinkForCollection(collection as IEnumerable, nextLink, continuationPlan);
-            }
-            else
-            {
-                this.FoundNextLinkForUnmodifiedCollection(property.GetValue(entry.ResolvedObject) as IEnumerable);
-            }
-
-            if (this.mergeOption == MergeOption.OverwriteChanges || this.mergeOption == MergeOption.PreserveChanges)
-            {
-                var itemsToRemove =
-                    from x in this.context.GetLinks(entry.ResolvedObject, property.PropertyName)
-                    where MergeOption.OverwriteChanges == this.mergeOption || EntityStates.Added != x.State
-                    select x.Target;
-                itemsToRemove = itemsToRemove.Except(EnumerateAsElementType<object>(items));
-                foreach (var item in itemsToRemove)
-                {
-                    if (collection != null)
-                    {
-                        property.RemoveValue(collection, item);
-                    }
-
-                    this.log.RemovedLink(entry, property.PropertyName, item);
-                }
-            }
-        }
-
-        private void FoundNextLinkForCollection(IEnumerable collection, Uri link, ProjectionPlan plan)
-        {
-            Debug.Assert(plan != null || link == null, "plan != null || link == null");
-
-            if (collection != null && !this.nextLinkTable.ContainsKey(collection))
-            {
-                DataServiceQueryContinuation continuation = DataServiceQueryContinuation.Create(link, plan);
-                this.nextLinkTable.Add(collection, continuation);
-                Util.SetNextLinkForCollection(collection, continuation);
-            }
-        }
-
-        private void FoundNextLinkForUnmodifiedCollection(IEnumerable collection)
-        {
-            if (collection != null && !this.nextLinkTable.ContainsKey(collection))
-            {
-                this.nextLinkTable.Add(collection, null);
-            }
-        }
-
-        private void Materialize(AtomEntry entry, Type expectedEntryType, bool includeLinks)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(entry.DataValues != null, "entry.DataValues != null -- otherwise not correctly initialized");
-            Debug.Assert(
-                entry.ResolvedObject == null || entry.ResolvedObject == this.targetInstance,
-                "entry.ResolvedObject == null || entry.ResolvedObject == this.targetInstance -- otherwise getting called twice");
-            Debug.Assert(expectedEntryType != null, "expectedType != null");
-
-            this.ResolveOrCreateInstance(entry, expectedEntryType);
-            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise ResolveOrCreateInstnace didn't do its job");
-
-            this.MaterializeResolvedEntry(entry, includeLinks);
-        }
-
-         private void MaterializeResolvedEntry(AtomEntry entry, bool includeLinks)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise not resolved/created!");
-
-            ClientType actualType = entry.ActualType;
-
-            if (!entry.EntityPropertyMappingsApplied)
-            {
-                ApplyEntityPropertyMappings(entry, entry.ActualType);
-            }
-
-            MaterializeDataValues(actualType, entry.DataValues, this.ignoreMissingProperties, this.context);
-
-            foreach (var e in entry.DataValues)
-            {
-                var prop = actualType.GetProperty(e.Name, this.ignoreMissingProperties);
-                if (prop == null)
-                {
-                    continue;
-                }
-
-                if (entry.ShouldUpdateFromPayload == false && e.Entry == null && e.Feed == null)
-                {
-                    continue;
-                }
-
-                if (!includeLinks && (e.Entry != null || e.Feed != null))
-                {
-                    continue;
-                }
-
-                ValidatePropertyMatch(prop, e);
-
-                AtomFeed feedValue = e.Feed;
-                if (feedValue != null)
-                {
-                    Debug.Assert(includeLinks, "includeLinks -- otherwise we shouldn't be materializing this entry");
-                    this.ApplyFeedToCollection(entry, prop, feedValue, includeLinks);
-                }
-                else if (e.Entry != null)
-                {
-                    if (!e.IsNull)
-                    {
-                        Debug.Assert(includeLinks, "includeLinks -- otherwise we shouldn't be materializing this entry");
-                        this.Materialize(e.Entry, prop.PropertyType, includeLinks);
-                    }
-
-                    if (entry.ShouldUpdateFromPayload)
-                    {
-                        prop.SetValue(entry.ResolvedObject, e.Entry.ResolvedObject, e.Name, true );
-                        this.log.SetLink(entry, prop.PropertyName, e.Entry.ResolvedObject);
-                    }
-                }
-                else
-                {
-                    Debug.Assert(entry.ShouldUpdateFromPayload, "entry.ShouldUpdateFromPayload -- otherwise we're about to set a property we shouldn't");
-                    ApplyDataValue(actualType, e, this.ignoreMissingProperties, this.context, entry.ResolvedObject);
-                }
-            }
-
-            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise we didn't do any useful work");
-            if (this.materializedObjectCallback != null)
-            {
-                this.materializedObjectCallback(entry.Tag, entry.ResolvedObject);
-            }
-        }
-
-        #endregion Private methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Data.Services.Common;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+    using System.Xml;
+    using System.Xml.Linq;
+
+    #endregion Namespaces.
+
+    internal static class AtomMaterializerInvoker
+    {
+        internal static IEnumerable<T> EnumerateAsElementType<T>(IEnumerable source)
+        {
+            return AtomMaterializer.EnumerateAsElementType<T>(source);
+        }
+
+        internal static List<TTarget> ListAsElementType<T, TTarget>(object materializer, IEnumerable<T> source) where T : TTarget
+        {
+            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
+            return AtomMaterializer.ListAsElementType<T, TTarget>((AtomMaterializer)materializer, source);
+        }
+
+        internal static bool ProjectionCheckValueForPathIsNull(
+            object entry,
+            Type expectedType,
+            object path)
+        {
+            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
+            Debug.Assert(path.GetType() == typeof(ProjectionPath), "path.GetType() == typeof(ProjectionPath)");
+            return AtomMaterializer.ProjectionCheckValueForPathIsNull((AtomEntry)entry, expectedType, (ProjectionPath)path);
+        }
+
+        internal static IEnumerable ProjectionSelect(
+            object materializer,
+            object entry,
+            Type expectedType,
+            Type resultType,
+            object path,
+            Func<object, object, Type, object> selector)
+        {
+            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
+            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
+            Debug.Assert(path.GetType() == typeof(ProjectionPath), "path.GetType() == typeof(ProjectionPath)");
+            return AtomMaterializer.ProjectionSelect((AtomMaterializer)materializer, (AtomEntry)entry, expectedType, resultType, (ProjectionPath)path, selector);
+        }
+
+        internal static AtomEntry ProjectionGetEntry(object entry, string name)
+        {
+            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
+            return AtomMaterializer.ProjectionGetEntry((AtomEntry)entry, name);
+        }
+
+        internal static object ProjectionInitializeEntity(
+            object materializer,
+            object entry,
+            Type expectedType,
+            Type resultType,
+            string[] properties,
+            Func<object, object, Type, object>[] propertyValues)
+        {
+            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
+            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
+            return AtomMaterializer.ProjectionInitializeEntity((AtomMaterializer)materializer, (AtomEntry)entry, expectedType, resultType, properties, propertyValues);
+        }
+
+        internal static object ProjectionValueForPath(object materializer, object entry, Type expectedType, object path)
+        {
+            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
+            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
+            Debug.Assert(path.GetType() == typeof(ProjectionPath), "path.GetType() == typeof(ProjectionPath)");
+            return AtomMaterializer.ProjectionValueForPath((AtomMaterializer)materializer, (AtomEntry)entry, expectedType, (ProjectionPath)path);
+        }
+
+        internal static object DirectMaterializePlan(object materializer, object entry, Type expectedEntryType)
+        {
+            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
+            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
+            return AtomMaterializer.DirectMaterializePlan((AtomMaterializer)materializer, (AtomEntry)entry, expectedEntryType);
+        }
+
+        internal static object ShallowMaterializePlan(object materializer, object entry, Type expectedEntryType)
+        {
+            Debug.Assert(materializer.GetType() == typeof(AtomMaterializer), "materializer.GetType() == typeof(AtomMaterializer)");
+            Debug.Assert(entry.GetType() == typeof(AtomEntry), "entry.GetType() == typeof(AtomEntry)");
+            return AtomMaterializer.ShallowMaterializePlan((AtomMaterializer)materializer, (AtomEntry)entry, expectedEntryType);
+        }
+    }
+
+    [DebuggerDisplay("AtomMaterializer {parser}")]
+    internal class AtomMaterializer
+    {
+        #region Private fields.
+
+        private readonly DataServiceContext context;
+
+        private readonly Type expectedType;
+
+
+        private readonly AtomMaterializerLog log;
+
+        private readonly ProjectionPlan materializeEntryPlan;
+
+        private readonly Action<object, object> materializedObjectCallback;
+
+        private readonly MergeOption mergeOption;
+
+        private readonly Dictionary<IEnumerable, DataServiceQueryContinuation> nextLinkTable;
+
+        private readonly AtomParser parser;
+
+        private object currentValue;
+
+        private bool ignoreMissingProperties;
+
+        private object targetInstance;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        internal AtomMaterializer(
+            AtomParser parser, 
+            DataServiceContext context, 
+            Type expectedType, 
+            bool ignoreMissingProperties, 
+            MergeOption mergeOption, 
+            AtomMaterializerLog log, 
+            Action<object, object> materializedObjectCallback,
+            QueryComponents queryComponents,
+            ProjectionPlan plan)
+        {
+            Debug.Assert(context != null, "context != null");
+            Debug.Assert(parser != null, "parser != null");
+            Debug.Assert(log != null, "log != null");
+
+            this.context = context;
+            this.parser = parser;
+            this.expectedType = expectedType;
+            this.ignoreMissingProperties = ignoreMissingProperties;
+            this.mergeOption = mergeOption;
+            this.log = log;
+            this.materializedObjectCallback = materializedObjectCallback;
+            this.nextLinkTable = new Dictionary<IEnumerable, DataServiceQueryContinuation>(ReferenceEqualityComparer<IEnumerable>.Instance);
+            this.materializeEntryPlan = plan ?? CreatePlan(queryComponents);
+        }
+
+        #endregion Constructors.
+
+        #region Internal properties.
+
+        internal DataServiceContext Context
+        {
+            get { return this.context; }
+        }
+
+        internal ProjectionPlan MaterializeEntryPlan
+        {
+            get { return this.materializeEntryPlan; }
+        }
+
+        internal object TargetInstance
+        {
+            get 
+            { 
+                return this.targetInstance;
+            }
+
+            set
+            {
+                Debug.Assert(value != null, "value != null -- otherwise we have no instance target.");
+                this.targetInstance = value;
+            }
+        }
+
+        internal AtomFeed CurrentFeed
+        {
+            get
+            {
+                return this.parser.CurrentFeed;
+            }
+        }
+
+        internal AtomEntry CurrentEntry
+        {
+            get
+            {
+                return this.parser.CurrentEntry;
+            }
+        }
+
+        internal object CurrentValue
+        {
+            get
+            {
+                return this.currentValue;
+            }
+        }
+
+        internal AtomMaterializerLog Log
+        {
+            get { return this.log; }
+        }
+
+        internal Dictionary<IEnumerable, DataServiceQueryContinuation> NextLinkTable
+        {
+            get { return this.nextLinkTable; }
+        }
+
+        internal bool IsEndOfStream
+        {
+            get { return this.parser.DataKind == AtomDataKind.Finished; }
+        }
+
+        #endregion Internal properties.
+
+        #region Projection support.
+
+        internal static IEnumerable<T> EnumerateAsElementType<T>(IEnumerable source)
+        {
+            Debug.Assert(source != null, "source != null");
+
+            IEnumerable<T> typedSource = source as IEnumerable<T>;
+            if (typedSource != null)
+            {
+                return typedSource;
+            }
+            else
+            {
+                return EnumerateAsElementTypeInternal<T>(source);
+            }
+        }
+
+        internal static IEnumerable<T> EnumerateAsElementTypeInternal<T>(IEnumerable source)
+        {
+            Debug.Assert(source != null, "source != null");
+
+            foreach (object item in source)
+            {
+                yield return (T)item;
+            }
+        }
+
+        internal static bool IsDataServiceCollection(Type type)
+        {
+            while (type != null)
+            {
+                if (type.IsGenericType && WebUtil.IsDataServiceCollectionType(type.GetGenericTypeDefinition()))
+                {
+                    return true;
+                }
+
+                type = type.BaseType;
+            }
+
+            return false;
+        }
+
+        internal static List<TTarget> ListAsElementType<T, TTarget>(AtomMaterializer materializer, IEnumerable<T> source) where T : TTarget
+        {
+            Debug.Assert(materializer != null, "materializer != null");
+            Debug.Assert(source != null, "source != null");
+
+            List<TTarget> typedSource = source as List<TTarget>;
+            if (typedSource != null)
+            {
+                return typedSource;
+            }
+
+            List<TTarget> list;
+            IList sourceList = source as IList;
+            if (sourceList != null)
+            {
+                list = new List<TTarget>(sourceList.Count);
+            }
+            else
+            {
+                list = new List<TTarget>();
+            }
+
+            foreach (T item in source)
+            {
+                list.Add((TTarget)item);
+            }
+
+            DataServiceQueryContinuation continuation;
+            if (materializer.nextLinkTable.TryGetValue(source, out continuation))
+            {
+                materializer.nextLinkTable[list] = continuation;
+            }
+
+            return list;
+        }
+
+        internal static bool ProjectionCheckValueForPathIsNull(
+            AtomEntry entry,
+            Type expectedType,
+            ProjectionPath path)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(path != null, "path != null");
+
+            if (path.Count == 0 || path.Count == 1 && path[0].Member == null)
+            {
+                return entry.IsNull;
+            }
+
+            bool result = false;
+            AtomContentProperty atomProperty = null;
+            List<AtomContentProperty> properties = entry.DataValues;
+            for (int i = 0; i < path.Count; i++)
+            {
+                var segment = path[i];
+                if (segment.Member == null)
+                {
+                    continue;
+                }
+
+                bool segmentIsLeaf = i == path.Count - 1;
+                string propertyName = segment.Member;
+                ClientType.ClientProperty property = ClientType.Create(expectedType).GetProperty(propertyName, false);
+                atomProperty = GetPropertyOrThrow(properties, propertyName);
+                ValidatePropertyMatch(property, atomProperty);
+                if (atomProperty.Feed != null)
+                {
+                    Debug.Assert(segmentIsLeaf, "segmentIsLeaf -- otherwise the path generated traverses a feed, which should be disallowed");
+                    result = false;
+                }
+                else
+                {
+                    Debug.Assert(
+                        atomProperty.Entry != null,
+                        "atomProperty.Entry != null -- otherwise a primitive property / complex type is being rewritte with a null check; this is only supported for entities and collection");
+                    if (segmentIsLeaf)
+                    {
+                        result = atomProperty.Entry.IsNull;
+                    }
+
+                    properties = atomProperty.Entry.DataValues;
+                    entry = atomProperty.Entry;
+                }
+
+                expectedType = property.PropertyType;
+            }
+
+            return result;
+        }
+
+        internal static IEnumerable ProjectionSelect(
+            AtomMaterializer materializer,
+            AtomEntry entry,
+            Type expectedType,
+            Type resultType,
+            ProjectionPath path,
+            Func<object, object, Type, object> selector)
+        {
+            ClientType entryType = entry.ActualType ?? ClientType.Create(expectedType);
+            IEnumerable list = (IEnumerable)Util.ActivatorCreateInstance(typeof(List<>).MakeGenericType(resultType));
+            AtomContentProperty atomProperty = null;
+            ClientType.ClientProperty property = null;
+            for (int i = 0; i < path.Count; i++)
+            {
+                var segment = path[i];
+                if (segment.Member == null)
+                {
+                    continue;
+                }
+
+                string propertyName = segment.Member;
+                property = entryType.GetProperty(propertyName, false);
+                atomProperty = GetPropertyOrThrow(entry, propertyName);
+
+                if (atomProperty.Entry != null)
+                {
+                    entry = atomProperty.Entry;
+                    entryType = ClientType.Create(property.NullablePropertyType, false);
+                } 
+            }
+
+            ValidatePropertyMatch(property, atomProperty);
+            AtomFeed sourceFeed = atomProperty.Feed;
+            Debug.Assert(
+                sourceFeed != null, 
+                "sourceFeed != null -- otherwise ValidatePropertyMatch should have thrown or property isn't a collection (and should be part of this plan)");
+
+            Action<object, object> addMethod = GetAddToCollectionDelegate(list.GetType());
+            foreach (var paramEntry in sourceFeed.Entries)
+            {
+                object projected = selector(materializer, paramEntry, property.CollectionType );
+                addMethod(list, projected);
+            }
+
+            ProjectionPlan plan = new ProjectionPlan();
+            plan.LastSegmentType = property.CollectionType;
+            plan.Plan = selector;
+            plan.ProjectedType = resultType;
+
+            materializer.FoundNextLinkForCollection(list, sourceFeed.NextLink, plan);
+
+            return list;
+        }
+        
+                internal static AtomEntry ProjectionGetEntry(AtomEntry entry, string name)
+        {
+            Debug.Assert(entry != null, "entry != null -- ProjectionGetEntry never returns a null entry, and top-level materialization shouldn't pass one in");
+
+            AtomContentProperty property = GetPropertyOrThrow(entry, name);
+            if (property.Entry == null)
+            {
+                throw new InvalidOperationException(Strings.AtomMaterializer_PropertyNotExpectedEntry(name, entry.Identity));
+            }
+
+            CheckEntryToAccessNotNull(property.Entry, name);
+
+            return property.Entry;
+        }
+
+        internal static object ProjectionInitializeEntity(
+            AtomMaterializer materializer,
+            AtomEntry entry,
+            Type expectedType,
+            Type resultType,
+            string[] properties,
+            Func<object, object, Type, object>[] propertyValues)
+        {
+            if (entry == null || entry.IsNull)
+            {
+                throw new NullReferenceException(Strings.AtomMaterializer_EntryToInitializeIsNull(resultType.FullName));
+            }
+
+            object result;
+            if (!entry.EntityHasBeenResolved)
+            {
+                AtomMaterializer.ProjectionEnsureEntryAvailableOfType(materializer, entry, resultType);
+            }
+            else if (!resultType.IsAssignableFrom(entry.ActualType.ElementType))
+            {
+                string message = Strings.AtomMaterializer_ProjectEntityTypeMismatch(
+                    resultType.FullName,
+                    entry.ActualType.ElementType.FullName,
+                    entry.Identity);
+                throw new InvalidOperationException(message);
+            }
+
+            result = entry.ResolvedObject;
+            
+            for (int i = 0; i < properties.Length; i++)
+            {
+                var property = entry.ActualType.GetProperty(properties[i], materializer.ignoreMissingProperties);
+                object value = propertyValues[i](materializer, entry, expectedType);
+                if (entry.ShouldUpdateFromPayload && ClientType.Create(property.NullablePropertyType, false).IsEntityType)
+                {
+                    materializer.Log.SetLink(entry, property.PropertyName, value);
+                }
+
+                bool isEntity = property.CollectionType == null || !ClientType.CheckElementTypeIsEntity(property.CollectionType);
+                if (entry.ShouldUpdateFromPayload)
+                {
+                    if (isEntity)
+                    {
+                        property.SetValue(result, value, property.PropertyName, false);
+                    }
+                    else
+                    {
+                        IEnumerable valueAsEnumerable = (IEnumerable)value;
+                        DataServiceQueryContinuation continuation = materializer.nextLinkTable[valueAsEnumerable];
+                        Uri nextLinkUri = continuation == null ? null : continuation.NextLinkUri;
+                        ProjectionPlan plan = continuation == null ? null : continuation.Plan;
+                        materializer.MergeLists(entry, property, valueAsEnumerable, nextLinkUri, plan);
+                    }
+                }
+                else if (!isEntity)
+                {
+                    materializer.FoundNextLinkForUnmodifiedCollection(property.GetValue(entry.ResolvedObject) as IEnumerable);
+                }
+            }
+
+            return result;
+        }
+
+        internal static object ProjectionValueForPath(AtomMaterializer materializer, AtomEntry entry, Type expectedType, ProjectionPath path)
+        {
+            Debug.Assert(materializer != null, "materializer != null");
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(path != null, "path != null");
+
+            if (path.Count == 0 || path.Count == 1 && path[0].Member == null)
+            {
+                if (!entry.EntityHasBeenResolved)
+                {
+                    materializer.Materialize(entry, expectedType, false);
+                }
+
+                return entry.ResolvedObject;
+            }
+
+            object result = null;
+            AtomContentProperty atomProperty = null;
+            List<AtomContentProperty> properties = entry.DataValues;
+            for (int i = 0; i < path.Count; i++)
+            {
+                var segment = path[i];
+                if (segment.Member == null)
+                {
+                    continue;
+                }
+
+                bool segmentIsLeaf = i == path.Count - 1;
+                string propertyName = segment.Member;
+
+                if (segmentIsLeaf)
+                {
+                    CheckEntryToAccessNotNull(entry, propertyName);
+                    if (!entry.EntityPropertyMappingsApplied)
+                    {
+                        ClientType attributeSourceType = MaterializeAtom.GetEntryClientType(entry.TypeName, materializer.context, expectedType, false);
+                        ApplyEntityPropertyMappings(entry, attributeSourceType);
+                    }
+                }
+
+                ClientType.ClientProperty property = ClientType.Create(expectedType).GetProperty(propertyName, false);
+                atomProperty = GetPropertyOrThrow(properties, propertyName);
+
+                ValidatePropertyMatch(property, atomProperty);
+
+                AtomFeed feedValue = atomProperty.Feed;
+                if (feedValue != null)
+                {
+                    Debug.Assert(segmentIsLeaf, "segmentIsLeaf -- otherwise the path generated traverses a feed, which should be disallowed");
+
+                    Type collectionType = ClientType.GetImplementationType(segment.ProjectionType, typeof(ICollection<>));
+                    if (collectionType == null)
+                    {
+                        collectionType = ClientType.GetImplementationType(segment.ProjectionType, typeof(IEnumerable<>));
+                    }
+
+                    Debug.Assert(
+                        collectionType != null, 
+                        "collectionType != null -- otherwise the property should never have been recognized as a collection");
+                    
+                    Type nestedExpectedType = collectionType.GetGenericArguments()[0];
+                    Type feedType = segment.ProjectionType;
+                    if (feedType.IsInterface || IsDataServiceCollection(feedType))
+                    {
+                        feedType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(nestedExpectedType);
+                    }
+
+                    IEnumerable list = (IEnumerable)Util.ActivatorCreateInstance(feedType);
+                    MaterializeToList(materializer, list, nestedExpectedType, feedValue.Entries);
+
+                    if (IsDataServiceCollection(segment.ProjectionType))
+                    {
+                        Type dataServiceCollectionType = WebUtil.GetDataServiceCollectionOfT(nestedExpectedType);
+                        list = (IEnumerable)Util.ActivatorCreateInstance(
+                            dataServiceCollectionType,
+                            list,                            
+                            TrackingMode.None);                    }
+
+                    ProjectionPlan plan = CreatePlanForShallowMaterialization(nestedExpectedType);
+                    materializer.FoundNextLinkForCollection(list, feedValue.NextLink, plan);
+                    result = list;
+                }
+                else if (atomProperty.Entry != null)
+                {
+                    if (segmentIsLeaf && !atomProperty.Entry.EntityHasBeenResolved && !atomProperty.IsNull)
+                    {
+                        materializer.Materialize(atomProperty.Entry, property.PropertyType, false);
+                    }
+
+                    properties = atomProperty.Entry.DataValues;
+                    result = atomProperty.Entry.ResolvedObject;
+                    entry = atomProperty.Entry;
+                }
+                else
+                {
+                    if (atomProperty.Properties != null)
+                    {
+                        if (atomProperty.MaterializedValue == null && !atomProperty.IsNull)
+                        {
+                            ClientType complexType = ClientType.Create(property.PropertyType);
+                            object complexInstance = Util.ActivatorCreateInstance(property.PropertyType);
+                            MaterializeDataValues(complexType, atomProperty.Properties, materializer.ignoreMissingProperties, materializer.context);
+                            ApplyDataValues(complexType, atomProperty.Properties, materializer.ignoreMissingProperties, materializer.context, complexInstance);
+                            atomProperty.MaterializedValue = complexInstance;
+                        }
+                    }
+                    else
+                    {
+                        MaterializeDataValue(property.NullablePropertyType, atomProperty, materializer.context);
+                    }
+
+                    properties = atomProperty.Properties;
+                    result = atomProperty.MaterializedValue;
+                }
+
+                expectedType = property.PropertyType;
+            }
+
+            return result;
+        }
+
+        internal static void ProjectionEnsureEntryAvailableOfType(AtomMaterializer materializer, AtomEntry entry, Type requiredType)
+        {
+            Debug.Assert(materializer != null, "materializer != null");
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(
+                materializer.targetInstance == null,
+                "materializer.targetInstance == null -- projection shouldn't have a target instance set; that's only used for POST replies");
+
+            if (entry.EntityHasBeenResolved)
+            {
+                if (!requiredType.IsAssignableFrom(entry.ResolvedObject.GetType()))
+                {
+                    throw new InvalidOperationException(
+                        "Expecting type '" + requiredType + "' for '" + entry.Identity + "', but found " +
+                        "a previously created instance of type '" + entry.ResolvedObject.GetType());
+                }
+
+                return;
+            }
+
+            if (entry.Identity == null)
+            {
+                throw Error.InvalidOperation(Strings.Deserialize_MissingIdElement);
+            }
+
+            if (!materializer.TryResolveAsCreated(entry) && 
+                !materializer.TryResolveFromContext(entry, requiredType))
+            {
+                materializer.ResolveByCreatingWithType(entry, requiredType);
+            }
+            else
+            {
+                if (!requiredType.IsAssignableFrom(entry.ResolvedObject.GetType()))
+                {
+                    throw Error.InvalidOperation(Strings.Deserialize_Current(requiredType, entry.ResolvedObject.GetType()));
+                }
+            }
+        }
+
+        internal static object DirectMaterializePlan(AtomMaterializer materializer, AtomEntry entry, Type expectedEntryType)
+        {
+            materializer.Materialize(entry, expectedEntryType, true);
+            return entry.ResolvedObject;
+        }
+
+        internal static object ShallowMaterializePlan(AtomMaterializer materializer, AtomEntry entry, Type expectedEntryType)
+        {
+            materializer.Materialize(entry, expectedEntryType, false);
+            return entry.ResolvedObject;
+        }
+
+        internal static void ValidatePropertyMatch(ClientType.ClientProperty property, AtomContentProperty atomProperty)
+        {
+            Debug.Assert(property != null, "property != null");
+            Debug.Assert(atomProperty != null, "atomProperty != null");
+
+            if (property.IsKnownType && (atomProperty.Feed != null || atomProperty.Entry != null))
+            {
+                throw Error.InvalidOperation(Strings.Deserialize_MismatchAtomLinkLocalSimple);
+            }
+
+            if (atomProperty.Feed != null && property.CollectionType == null)
+            {
+                throw Error.InvalidOperation(Strings.Deserialize_MismatchAtomLinkFeedPropertyNotCollection(property.PropertyName));
+            }
+
+            if (atomProperty.Entry != null && property.CollectionType != null)
+            {
+                throw Error.InvalidOperation(Strings.Deserialize_MismatchAtomLinkEntryPropertyIsCollection(property.PropertyName));
+            }
+        }
+
+        #endregion Projection support.
+        
+        #region Internal methods.
+
+        internal bool Read()
+        {
+            this.currentValue = null;
+
+            this.nextLinkTable.Clear();
+            while (this.parser.Read())
+            {
+                Debug.Assert(
+                    this.parser.DataKind != AtomDataKind.None,
+                    "parser.DataKind != AtomDataKind.None -- otherwise parser.Read() didn't update its state");
+                Debug.Assert(
+                    this.parser.DataKind != AtomDataKind.Finished,
+                    "parser.DataKind != AtomDataKind.Finished -- otherwise parser.Read() shouldn't have returned true");
+
+                switch (this.parser.DataKind)
+                {
+                    case AtomDataKind.Feed:
+                    case AtomDataKind.FeedCount:
+                        break;
+                    case AtomDataKind.Entry:
+                        Debug.Assert(
+                            this.parser.CurrentEntry != null,
+                            "parser.CurrentEntry != null -- otherwise parser.DataKind shouldn't be Entry");
+                        this.CurrentEntry.ResolvedObject = this.TargetInstance;
+                        this.currentValue = this.materializeEntryPlan.Run(this, this.CurrentEntry, this.expectedType);
+                        return true;
+                    case AtomDataKind.PagingLinks:
+                        break;
+                    default:
+                        Debug.Assert(
+                            this.parser.DataKind == AtomDataKind.Custom,
+                            "parser.DataKind == AtomDataKind.Custom -- otherwise AtomMaterializer.Read switch is missing a case");
+
+                        Type underlyingExpectedType = Nullable.GetUnderlyingType(this.expectedType) ?? this.expectedType;
+                        ClientType targetType = ClientType.Create(underlyingExpectedType);
+                        if (ClientConvert.IsKnownType(underlyingExpectedType))
+                        {
+                            string elementText = this.parser.ReadCustomElementString();
+                            if (elementText != null)
+                            {
+                                this.currentValue = ClientConvert.ChangeType(elementText, underlyingExpectedType);
+                            }
+
+                            return true;
+                        }
+                        else if (!targetType.IsEntityType && this.parser.IsDataWebElement)
+                        {
+                            AtomContentProperty property = this.parser.ReadCurrentPropertyValue();
+                            if (property == null || property.IsNull)
+                            {
+                                this.currentValue = null;
+                            }
+                            else
+                            {
+                                this.currentValue = targetType.CreateInstance();
+                                MaterializeDataValues(targetType, property.Properties, this.ignoreMissingProperties, this.context);
+                                ApplyDataValues(targetType, property.Properties, this.ignoreMissingProperties, this.context, this.currentValue);
+                            }
+
+                            return true;
+                        }
+
+                        break;
+                }
+            }
+
+            Debug.Assert(this.parser.DataKind == AtomDataKind.Finished, "parser.DataKind == AtomDataKind.None");
+            Debug.Assert(this.parser.CurrentEntry == null, "parser.Current == null");
+            return false;
+        }
+
+        internal void PropagateContinuation<T>(IEnumerable<T> from, DataServiceCollection<T> to)
+        {
+            DataServiceQueryContinuation continuation;
+            if (this.nextLinkTable.TryGetValue(from, out continuation))
+            {
+                this.nextLinkTable.Add(to, continuation);
+                Util.SetNextLinkForCollection(to, continuation);
+            }
+        }
+
+        #endregion Internal methods.
+
+        #region Private methods.
+
+        private static void CheckEntryToAccessNotNull(AtomEntry entry, string name)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(name != null, "name != null");
+
+            if (entry.IsNull)
+            {
+                throw new NullReferenceException(Strings.AtomMaterializer_EntryToAccessIsNull(name));
+            }
+        }
+
+        private static ProjectionPlan CreatePlan(QueryComponents queryComponents)
+        {
+            LambdaExpression projection = queryComponents.Projection;
+            ProjectionPlan result;
+            if (projection == null)
+            {
+                result = CreatePlanForDirectMaterialization(queryComponents.LastSegmentType);
+            }
+            else
+            {
+                result = ProjectionPlanCompiler.CompilePlan(projection, queryComponents.NormalizerRewrites);
+                result.LastSegmentType = queryComponents.LastSegmentType;
+            }
+
+            return result;
+        }
+
+        private static ProjectionPlan CreatePlanForDirectMaterialization(Type lastSegmentType)
+        {
+            ProjectionPlan result = new ProjectionPlan();
+            result.Plan = AtomMaterializerInvoker.DirectMaterializePlan;
+            result.ProjectedType = lastSegmentType;
+            result.LastSegmentType = lastSegmentType;
+            return result;
+        }
+
+        private static ProjectionPlan CreatePlanForShallowMaterialization(Type lastSegmentType)
+        {
+            ProjectionPlan result = new ProjectionPlan();
+            result.Plan = AtomMaterializerInvoker.ShallowMaterializePlan;
+            result.ProjectedType = lastSegmentType;
+            result.LastSegmentType = lastSegmentType;
+            return result;
+        }
+
+        private static Action<object, object> GetAddToCollectionDelegate(Type listType)
+        {
+            Debug.Assert(listType != null, "listType != null");
+            
+            Type listElementType;
+            MethodInfo addMethod = ClientType.GetAddToCollectionMethod(listType, out listElementType);
+            ParameterExpression list = Expression.Parameter(typeof(object), "list");
+            ParameterExpression item = Expression.Parameter(typeof(object), "element");
+            Expression body = Expression.Call(Expression.Convert(list, listType), addMethod, Expression.Convert(item, listElementType));
+#if ASTORIA_LIGHT
+            LambdaExpression lambda = ExpressionHelpers.CreateLambda(body, list, item);
+#else
+            LambdaExpression lambda = Expression.Lambda(body, list, item);
+#endif
+            return (Action<object, object>)lambda.Compile();
+        }
+
+        private static object GetOrCreateCollectionProperty(object instance, ClientType.ClientProperty property, Type collectionType)
+        {
+            Debug.Assert(instance != null, "instance != null");
+            Debug.Assert(property != null, "property != null");
+            Debug.Assert(property.CollectionType != null, "property.CollectionType != null -- otherwise property isn't a collection");
+
+            object result;
+            result = property.GetValue(instance);
+            if (result == null)
+            {
+                if (collectionType == null)
+                {
+                    collectionType = property.PropertyType;
+                    if (collectionType.IsInterface)
+                    {
+                        collectionType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(property.CollectionType);
+                    }
+                }
+
+                result = Activator.CreateInstance(collectionType);
+                property.SetValue(instance, result, property.PropertyName, false );
+            }
+
+            Debug.Assert(result != null, "result != null -- otherwise GetOrCreateCollectionProperty didn't fall back to creation");
+            return result;
+        }
+
+        private static void MaterializeToList(
+            AtomMaterializer materializer,
+            IEnumerable list,
+            Type nestedExpectedType,
+            IEnumerable<AtomEntry> entries)
+        {
+            Debug.Assert(materializer != null, "materializer != null");
+            Debug.Assert(list != null, "list != null");
+
+            Action<object, object> addMethod = GetAddToCollectionDelegate(list.GetType());
+            foreach (AtomEntry feedEntry in entries)
+            {
+                if (!feedEntry.EntityHasBeenResolved)
+                {
+                    materializer.Materialize(feedEntry, nestedExpectedType,  false);
+                }
+
+                addMethod(list, feedEntry.ResolvedObject);
+            }
+        }
+
+         private static bool MaterializeDataValue(Type type, AtomContentProperty atomProperty, DataServiceContext context)
+        {
+            Debug.Assert(type != null, "type != null");
+            Debug.Assert(atomProperty != null, "atomProperty != null");
+            Debug.Assert(context != null, "context != null");
+
+            string propertyTypeName = atomProperty.TypeName;
+            string propertyValueText = atomProperty.Text;
+
+            ClientType nestedElementType = null;
+            Type underlyingType = Nullable.GetUnderlyingType(type) ?? type;
+            bool knownType = ClientConvert.IsKnownType(underlyingType);
+            if (!knownType)
+            {
+                nestedElementType = MaterializeAtom.GetEntryClientType(propertyTypeName, context, type, true);
+                Debug.Assert(nestedElementType != null, "nestedElementType != null -- otherwise ReadTypeAttribute (or someone!) should throw");
+                knownType = ClientConvert.IsKnownType(nestedElementType.ElementType);
+            }
+
+            if (knownType)
+            {
+                if (atomProperty.IsNull)
+                {
+                    if (!ClientType.CanAssignNull(type))
+                    {
+                        throw new InvalidOperationException(Strings.AtomMaterializer_CannotAssignNull(atomProperty.Name, type.FullName));
+                    }
+
+                    atomProperty.MaterializedValue = null;
+                    return true;
+                }
+                else
+                {
+                    object value = propertyValueText;
+                    if (propertyValueText != null)
+                    {
+                        value = ClientConvert.ChangeType(propertyValueText, (null != nestedElementType ? nestedElementType.ElementType : underlyingType));
+                    }
+
+                    atomProperty.MaterializedValue = value;
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
+        private static void MaterializeDataValues(
+            ClientType actualType, 
+            List<AtomContentProperty> values,
+            bool ignoreMissingProperties,
+            DataServiceContext context)
+        {
+            Debug.Assert(actualType != null, "actualType != null");
+            Debug.Assert(values != null, "values != null");
+            Debug.Assert(context != null, "context != null");
+
+            foreach (var atomProperty in values)
+            {
+                string propertyName = atomProperty.Name;
+                
+                var property = actualType.GetProperty(propertyName, ignoreMissingProperties); // may throw
+                if (property == null)
+                {
+                    continue;
+                }
+
+                if (atomProperty.Feed == null && atomProperty.Entry == null)
+                {
+                    bool materialized = MaterializeDataValue(property.NullablePropertyType, atomProperty, context);
+                    if (!materialized && property.CollectionType != null)
+                    {
+                        throw Error.NotSupported(Strings.ClientType_CollectionOfNonEntities);
+                    }
+                }
+            }
+        }
+
+        private static void ApplyDataValue(ClientType type, AtomContentProperty property, bool ignoreMissingProperties, DataServiceContext context, object instance)
+        {
+            Debug.Assert(type != null, "type != null");
+            Debug.Assert(property != null, "property != null");
+            Debug.Assert(context != null, "context != null");
+            Debug.Assert(instance != null, "instance != context");
+
+            var prop = type.GetProperty(property.Name, ignoreMissingProperties);
+            if (prop == null)
+            {
+                return;
+            }
+
+            if (property.Properties != null)
+            {
+                if (prop.IsKnownType ||
+                    ClientConvert.IsKnownType(MaterializeAtom.GetEntryClientType(property.TypeName, context, prop.PropertyType, true).ElementType))
+                {
+                    throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
+                }
+
+                 bool needToSet = false;
+                ClientType complexType = ClientType.Create(prop.PropertyType);
+                object complexInstance = prop.GetValue(instance);
+                if (complexInstance == null)
+                {
+                    complexInstance = complexType.CreateInstance();
+                    needToSet = true;
+                }
+
+                MaterializeDataValues(complexType, property.Properties, ignoreMissingProperties, context);
+                ApplyDataValues(complexType, property.Properties, ignoreMissingProperties, context, complexInstance);
+
+                if (needToSet)
+                {
+                    prop.SetValue(instance, complexInstance, property.Name, true );
+                }
+            }
+            else
+            {
+                prop.SetValue(instance, property.MaterializedValue, property.Name, true );
+            }
+        }
+
+        private static void ApplyDataValues(ClientType type, IEnumerable<AtomContentProperty> properties, bool ignoreMissingProperties, DataServiceContext context, object instance)
+        {
+            Debug.Assert(type != null, "type != null");
+            Debug.Assert(properties != null, "properties != null");
+            Debug.Assert(context != null, "properties != context");
+            Debug.Assert(instance != null, "instance != context");
+
+            foreach (var p in properties)
+            {
+                ApplyDataValue(type, p, ignoreMissingProperties, context, instance);
+            }
+        }
+
+        private static void SetValueOnPath(List<AtomContentProperty> values, string path, string value, string typeName)
+        {
+            Debug.Assert(values != null, "values != null");
+            Debug.Assert(path != null, "path != null");
+
+            bool existing = true;
+            AtomContentProperty property = null;
+            foreach (string step in path.Split('/'))
+            {
+                if (values == null)
+                {
+                    Debug.Assert(property != null, "property != null -- if values is null then this isn't the first step");
+                    property.EnsureProperties();
+                    values = property.Properties;
+                }
+
+                property = values.Where(v => v.Name == step).FirstOrDefault();
+                if (property == null)
+                {
+                    AtomContentProperty newProperty = new AtomContentProperty();
+                    existing = false;
+                    newProperty.Name = step;
+                    values.Add(newProperty);
+                    property = newProperty;
+                }
+                else
+                {
+                    if (property.IsNull)
+                    {
+                        return;
+                    }
+                }
+
+                values = property.Properties;
+            }
+
+            Debug.Assert(property != null, "property != null -- property path should have at least one segment");
+            
+            if (existing == false)
+            {
+                property.TypeName = typeName;
+                property.Text = value;
+            }
+        }
+
+        private static void ApplyEntityPropertyMappings(AtomEntry entry, ClientType entryType)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(entry.Tag is XElement, "entry.Tag is XElement");
+            Debug.Assert(entryType != null, "entryType != null -- othewise how would we know to apply property mappings (note that for projections entry.ActualType may be different that entryType)?");
+            Debug.Assert(!entry.EntityPropertyMappingsApplied, "!entry.EntityPropertyMappingsApplied -- EPM should happen only once per entry");
+
+            if (entryType.HasEntityPropertyMappings)
+            {
+                XElement entryElement = entry.Tag as XElement;
+                Debug.Assert(entryElement != null, "entryElement != null");
+                ApplyEntityPropertyMappings(entry, entryElement, entryType.EpmTargetTree.SyndicationRoot);
+                ApplyEntityPropertyMappings(entry, entryElement, entryType.EpmTargetTree.NonSyndicationRoot);
+            }
+
+            entry.EntityPropertyMappingsApplied = true;
+        }
+
+        private static void ApplyEntityPropertyMappings(AtomEntry entry, XElement entryElement, EpmTargetPathSegment target)
+        {
+            Debug.Assert(target != null, "target != null");
+            Debug.Assert(!target.HasContent, "!target.HasContent");
+
+            Stack<System.Data.Services.Common.EpmTargetPathSegment> segments = new Stack<System.Data.Services.Common.EpmTargetPathSegment>();
+            Stack<XElement> elements = new Stack<XElement>();
+
+            segments.Push(target);
+            elements.Push(entryElement);
+
+            while (segments.Count > 0)
+            {
+                System.Data.Services.Common.EpmTargetPathSegment segment = segments.Pop();
+                XElement element = elements.Pop();
+                if (segment.HasContent)
+                {
+                    var node = element.Nodes().Where(n => n.NodeType == XmlNodeType.Text || n.NodeType == XmlNodeType.SignificantWhitespace).FirstOrDefault();
+                    string elementValue = (node == null) ? null : ((XText)node).Value;
+                    Debug.Assert(segment.EpmInfo != null, "segment.EpmInfo != null -- otherwise segment.HasValue should be false");
+
+                    string path = segment.EpmInfo.Attribute.SourcePath;
+                    string typeName = (string)element.Attribute(XName.Get(XmlConstants.AtomTypeAttributeName, XmlConstants.DataWebMetadataNamespace));
+
+                    SetValueOnPath(entry.DataValues, path, elementValue, typeName);
+                }
+
+                foreach (var item in segment.SubSegments)
+                {
+                    if (item.IsAttribute)
+                    {
+                        string localName = item.SegmentName.Substring(1);
+                        var attribute = element.Attribute(XName.Get(localName, item.SegmentNamespaceUri));
+                        if (attribute != null)
+                        {
+                            SetValueOnPath(entry.DataValues, item.EpmInfo.Attribute.SourcePath, attribute.Value, null);
+                        }
+                    }
+                    else
+                    {
+                        var child = element.Element(XName.Get(item.SegmentName, item.SegmentNamespaceUri));
+                        if (child != null)
+                        {
+                            segments.Push(item);
+                            elements.Push(child);
+                        }
+                    }
+                }
+
+                Debug.Assert(segments.Count == elements.Count, "segments.Count == elements.Count -- otherwise they're out of sync");
+            }
+        }
+
+        private static AtomContentProperty GetPropertyOrThrow(List<AtomContentProperty> properties, string propertyName)
+        {
+            AtomContentProperty atomProperty = null;
+            if (properties != null)
+            {
+                atomProperty = properties.Where(p => p.Name == propertyName).FirstOrDefault();
+            }
+
+            if (atomProperty == null)
+            {
+                throw new InvalidOperationException(Strings.AtomMaterializer_PropertyMissing(propertyName));
+            }
+
+            Debug.Assert(atomProperty != null, "atomProperty != null");
+            return atomProperty;
+        }
+
+        private static AtomContentProperty GetPropertyOrThrow(AtomEntry entry, string propertyName)
+        {
+            AtomContentProperty atomProperty = null;
+            var properties = entry.DataValues;
+            if (properties != null)
+            {
+                atomProperty = properties.Where(p => p.Name == propertyName).FirstOrDefault();
+            }
+
+            if (atomProperty == null)
+            {
+                throw new InvalidOperationException(Strings.AtomMaterializer_PropertyMissingFromEntry(propertyName, entry.Identity));
+            }
+
+            Debug.Assert(atomProperty != null, "atomProperty != null");
+            return atomProperty;
+        }
+
+        private void MergeLists(AtomEntry entry, ClientType.ClientProperty property, IEnumerable list, Uri nextLink, ProjectionPlan plan)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null");
+            Debug.Assert(property != null, "property != null");
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(plan != null || nextLink == null, "plan != null || nextLink == null");
+
+            if (entry.ShouldUpdateFromPayload && 
+                property.NullablePropertyType == list.GetType() && 
+                property.GetValue(entry.ResolvedObject) == null)
+            {
+                property.SetValue(entry.ResolvedObject, list, property.PropertyName, false );
+                this.FoundNextLinkForCollection(list, nextLink, plan);
+
+                foreach (object item in list)
+                {
+                    this.log.AddedLink(entry, property.PropertyName, item);
+                }
+
+                return;
+            }
+
+            this.ApplyItemsToCollection(entry, property, list, nextLink, plan);
+        }
+
+        private bool TryResolveAsTarget(AtomEntry entry)
+        {
+            if (entry.ResolvedObject == null)
+            {
+                return false;
+            }
+
+            Debug.Assert(
+                entry.ResolvedObject == this.TargetInstance,
+                "entry.ResolvedObject == this.TargetInstance -- otherwise there we ResolveOrCreateInstance more than once on the same entry");
+            Debug.Assert(
+                this.mergeOption == MergeOption.OverwriteChanges || this.mergeOption == MergeOption.PreserveChanges,
+                "MergeOption.OverwriteChanges and MergeOption.PreserveChanges are the only expected values during SaveChanges");
+            entry.ActualType = ClientType.Create(entry.ResolvedObject.GetType());
+            this.log.FoundTargetInstance(entry);
+            entry.ShouldUpdateFromPayload = this.mergeOption == MergeOption.PreserveChanges ? false : true;
+            entry.EntityHasBeenResolved = true;
+            return true;
+        }
+
+        private bool TryResolveFromContext(AtomEntry entry, Type expectedEntryType)
+        {
+            bool tracking = this.mergeOption != MergeOption.NoTracking;
+            if (tracking)
+            {
+                EntityStates state;
+                entry.ResolvedObject = this.context.TryGetEntity(entry.Identity, entry.ETagText, this.mergeOption, out state);
+                if (entry.ResolvedObject != null)
+                {
+                    if (!expectedEntryType.IsInstanceOfType(entry.ResolvedObject))
+                    {
+                        throw Error.InvalidOperation(Strings.Deserialize_Current(expectedEntryType, entry.ResolvedObject.GetType()));
+                    }
+
+                    entry.ActualType = ClientType.Create(entry.ResolvedObject.GetType());
+                    entry.EntityHasBeenResolved = true;
+
+                     entry.ShouldUpdateFromPayload =
+                        this.mergeOption == MergeOption.OverwriteChanges ||
+                        (this.mergeOption == MergeOption.PreserveChanges && state == EntityStates.Unchanged) ||
+                        (this.mergeOption == MergeOption.PreserveChanges && state == EntityStates.Deleted);
+                    this.log.FoundExistingInstance(entry);
+
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
+        private void ResolveByCreatingWithType(AtomEntry entry, Type type)
+        {
+            Debug.Assert(
+                entry.ResolvedObject == null,
+                "entry.ResolvedObject == null -- otherwise we're about to overwrite - should never be called");
+            entry.ActualType = ClientType.Create(type);
+            entry.ResolvedObject = Activator.CreateInstance(type);
+            entry.CreatedByMaterializer = true;
+            entry.ShouldUpdateFromPayload = true;
+            entry.EntityHasBeenResolved = true;
+            this.log.CreatedInstance(entry);
+        }
+
+        private void ResolveByCreating(AtomEntry entry, Type expectedEntryType)
+        {
+            Debug.Assert(
+                entry.ResolvedObject == null,
+                "entry.ResolvedObject == null -- otherwise we're about to overwrite - should never be called");
+
+            ClientType actualType = MaterializeAtom.GetEntryClientType(entry.TypeName, this.context, expectedEntryType, true);
+
+            Debug.Assert(actualType != null, "actualType != null -- otherwise ClientType.Create returned a null value");
+            this.ResolveByCreatingWithType(entry, actualType.ElementType);
+        }
+
+        private bool TryResolveAsCreated(AtomEntry entry)
+        {
+            AtomEntry existingEntry;
+            if (!this.log.TryResolve(entry, out existingEntry))
+            {
+                return false;
+            }
+
+            Debug.Assert(
+                existingEntry.ResolvedObject != null, 
+                "existingEntry.ResolvedObject != null -- how did it get there otherwise?");
+            entry.ActualType = existingEntry.ActualType;
+            entry.ResolvedObject = existingEntry.ResolvedObject;
+            entry.CreatedByMaterializer = existingEntry.CreatedByMaterializer;
+            entry.ShouldUpdateFromPayload = existingEntry.ShouldUpdateFromPayload;
+            entry.EntityHasBeenResolved = true;
+            return true;
+        }
+
+        private void ResolveOrCreateInstance(AtomEntry entry, Type expectedEntryType)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(expectedEntryType != null, "expectedEntryType != null");
+            Debug.Assert(entry.EntityHasBeenResolved == false, "entry.EntityHasBeenResolved == false");
+
+            if (!this.TryResolveAsTarget(entry))
+            {
+                if (entry.Identity == null)
+                {
+                    throw Error.InvalidOperation(Strings.Deserialize_MissingIdElement);
+                }
+
+                if (!this.TryResolveAsCreated(entry))
+                {
+                    if (!this.TryResolveFromContext(entry, expectedEntryType))
+                    {
+                        this.ResolveByCreating(entry, expectedEntryType);
+                    }
+                }
+            }
+
+            Debug.Assert(entry.ActualType != null, "entry.ActualType != null");
+            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null");
+            Debug.Assert(entry.EntityHasBeenResolved, "entry.EntityHasBeenResolved");
+
+            return;
+        }
+
+        private void ApplyFeedToCollection(
+            AtomEntry entry,
+            ClientType.ClientProperty property,
+            AtomFeed feed,
+            bool includeLinks)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(property != null, "property != null");
+            Debug.Assert(feed != null, "feed != null");
+
+            ClientType collectionType = ClientType.Create(property.CollectionType);
+            foreach (AtomEntry feedEntry in feed.Entries)
+            {
+                this.Materialize(feedEntry, collectionType.ElementType, includeLinks);
+            }
+
+            ProjectionPlan continuationPlan = includeLinks ? CreatePlanForDirectMaterialization(property.CollectionType) : CreatePlanForShallowMaterialization(property.CollectionType);
+            this.ApplyItemsToCollection(entry, property, feed.Entries.Select(e => e.ResolvedObject), feed.NextLink, continuationPlan);
+        }
+
+        private void ApplyItemsToCollection(
+            AtomEntry entry,
+            ClientType.ClientProperty property,
+            IEnumerable items,
+            Uri nextLink,
+            ProjectionPlan continuationPlan)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(property != null, "property != null");
+            Debug.Assert(items != null, "items != null");
+
+            object collection = entry.ShouldUpdateFromPayload ? GetOrCreateCollectionProperty(entry.ResolvedObject, property, null) : null;
+            ClientType collectionType = ClientType.Create(property.CollectionType);
+            foreach (object item in items)
+            {
+                if (!collectionType.ElementType.IsAssignableFrom(item.GetType()))
+                {
+                    string message = Strings.AtomMaterializer_EntryIntoCollectionMismatch(
+                        item.GetType().FullName,
+                        collectionType.ElementType.FullName);
+                    throw new InvalidOperationException(message);
+                }
+
+                if (entry.ShouldUpdateFromPayload)
+                {
+                    property.SetValue(collection, item, property.PropertyName, true );
+                    this.log.AddedLink(entry, property.PropertyName, item);
+                }
+            }
+
+            if (entry.ShouldUpdateFromPayload)
+            {
+                this.FoundNextLinkForCollection(collection as IEnumerable, nextLink, continuationPlan);
+            }
+            else
+            {
+                this.FoundNextLinkForUnmodifiedCollection(property.GetValue(entry.ResolvedObject) as IEnumerable);
+            }
+
+            if (this.mergeOption == MergeOption.OverwriteChanges || this.mergeOption == MergeOption.PreserveChanges)
+            {
+                var itemsToRemove =
+                    from x in this.context.GetLinks(entry.ResolvedObject, property.PropertyName)
+                    where MergeOption.OverwriteChanges == this.mergeOption || EntityStates.Added != x.State
+                    select x.Target;
+                itemsToRemove = itemsToRemove.Except(EnumerateAsElementType<object>(items));
+                foreach (var item in itemsToRemove)
+                {
+                    if (collection != null)
+                    {
+                        property.RemoveValue(collection, item);
+                    }
+
+                    this.log.RemovedLink(entry, property.PropertyName, item);
+                }
+            }
+        }
+
+        private void FoundNextLinkForCollection(IEnumerable collection, Uri link, ProjectionPlan plan)
+        {
+            Debug.Assert(plan != null || link == null, "plan != null || link == null");
+
+            if (collection != null && !this.nextLinkTable.ContainsKey(collection))
+            {
+                DataServiceQueryContinuation continuation = DataServiceQueryContinuation.Create(link, plan);
+                this.nextLinkTable.Add(collection, continuation);
+                Util.SetNextLinkForCollection(collection, continuation);
+            }
+        }
+
+        private void FoundNextLinkForUnmodifiedCollection(IEnumerable collection)
+        {
+            if (collection != null && !this.nextLinkTable.ContainsKey(collection))
+            {
+                this.nextLinkTable.Add(collection, null);
+            }
+        }
+
+        private void Materialize(AtomEntry entry, Type expectedEntryType, bool includeLinks)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(entry.DataValues != null, "entry.DataValues != null -- otherwise not correctly initialized");
+            Debug.Assert(
+                entry.ResolvedObject == null || entry.ResolvedObject == this.targetInstance,
+                "entry.ResolvedObject == null || entry.ResolvedObject == this.targetInstance -- otherwise getting called twice");
+            Debug.Assert(expectedEntryType != null, "expectedType != null");
+
+            this.ResolveOrCreateInstance(entry, expectedEntryType);
+            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise ResolveOrCreateInstnace didn't do its job");
+
+            this.MaterializeResolvedEntry(entry, includeLinks);
+        }
+
+         private void MaterializeResolvedEntry(AtomEntry entry, bool includeLinks)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise not resolved/created!");
+
+            ClientType actualType = entry.ActualType;
+
+            if (!entry.EntityPropertyMappingsApplied)
+            {
+                ApplyEntityPropertyMappings(entry, entry.ActualType);
+            }
+
+            MaterializeDataValues(actualType, entry.DataValues, this.ignoreMissingProperties, this.context);
+
+            foreach (var e in entry.DataValues)
+            {
+                var prop = actualType.GetProperty(e.Name, this.ignoreMissingProperties);
+                if (prop == null)
+                {
+                    continue;
+                }
+
+                if (entry.ShouldUpdateFromPayload == false && e.Entry == null && e.Feed == null)
+                {
+                    continue;
+                }
+
+                if (!includeLinks && (e.Entry != null || e.Feed != null))
+                {
+                    continue;
+                }
+
+                ValidatePropertyMatch(prop, e);
+
+                AtomFeed feedValue = e.Feed;
+                if (feedValue != null)
+                {
+                    Debug.Assert(includeLinks, "includeLinks -- otherwise we shouldn't be materializing this entry");
+                    this.ApplyFeedToCollection(entry, prop, feedValue, includeLinks);
+                }
+                else if (e.Entry != null)
+                {
+                    if (!e.IsNull)
+                    {
+                        Debug.Assert(includeLinks, "includeLinks -- otherwise we shouldn't be materializing this entry");
+                        this.Materialize(e.Entry, prop.PropertyType, includeLinks);
+                    }
+
+                    if (entry.ShouldUpdateFromPayload)
+                    {
+                        prop.SetValue(entry.ResolvedObject, e.Entry.ResolvedObject, e.Name, true );
+                        this.log.SetLink(entry, prop.PropertyName, e.Entry.ResolvedObject);
+                    }
+                }
+                else
+                {
+                    Debug.Assert(entry.ShouldUpdateFromPayload, "entry.ShouldUpdateFromPayload -- otherwise we're about to set a property we shouldn't");
+                    ApplyDataValue(actualType, e, this.ignoreMissingProperties, this.context, entry.ResolvedObject);
+                }
+            }
+
+            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise we didn't do any useful work");
+            if (this.materializedObjectCallback != null)
+            {
+                this.materializedObjectCallback(entry.Tag, entry.ResolvedObject);
+            }
+        }
+
+        #endregion Private methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomMaterializerLog.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomMaterializerLog.cs
@@ -1,332 +1,332 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    using System.Xml;
-    using System.Xml.Linq;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    internal class AtomMaterializerLog
-    {
-        #region Private fields.
-
-        private readonly DataServiceContext context;
-
-        private readonly Dictionary<String, AtomEntry> appendOnlyEntries;
-
-        private readonly Dictionary<String, AtomEntry> foundEntriesWithMedia;
-
-        private readonly Dictionary<String, AtomEntry> identityStack;
-
-        private readonly List<LinkDescriptor> links;
-
-        private readonly MergeOption mergeOption;
-
-        private object insertRefreshObject;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        internal AtomMaterializerLog(DataServiceContext context, MergeOption mergeOption)
-        {
-            Debug.Assert(context != null, "context != null");
-            this.appendOnlyEntries = new Dictionary<string, AtomEntry>(EqualityComparer<String>.Default);
-            this.context = context;
-            this.mergeOption = mergeOption;
-            this.foundEntriesWithMedia = new Dictionary<String, AtomEntry>(EqualityComparer<String>.Default);
-            this.identityStack = new Dictionary<String, AtomEntry>(EqualityComparer<String>.Default);
-            this.links = new List<LinkDescriptor>();
-        }
-
-        #endregion Constructors.
-
-        #region Internal properties.
-
-        internal bool Tracking
-        {
-            get 
-            { 
-                return this.mergeOption != MergeOption.NoTracking; 
-            }
-        }
-
-        #endregion Internal properties.
-
-        #region Internal methods.
-
-        internal void ApplyToContext()
-        {
-            Debug.Assert(
-                this.mergeOption != MergeOption.OverwriteChanges || this.foundEntriesWithMedia.Count == 0,
-                "mergeOption != MergeOption.OverwriteChanges || foundEntriesWithMedia.Count == 0 - we only use the 'entries-with-media' lookaside when we're not in overwrite mode, otherwise we track everything through identity stack");
-
-            if (!this.Tracking)
-            {
-                return;
-            }
-
-            foreach (KeyValuePair<String, AtomEntry> entity in this.identityStack)
-            {
-                AtomEntry entry = entity.Value;
-                if (entry.CreatedByMaterializer ||
-                    entry.ResolvedObject == this.insertRefreshObject ||
-                    entry.ShouldUpdateFromPayload)
-                {
-                    EntityDescriptor descriptor = new EntityDescriptor(entity.Key, entry.QueryLink, entry.EditLink, entry.ResolvedObject, null, null, null, entry.ETagText, EntityStates.Unchanged);
-                    descriptor = this.context.InternalAttachEntityDescriptor(descriptor, false);
-
-                    descriptor.State = EntityStates.Unchanged;
-
-                    this.ApplyMediaEntryInformation(entry, descriptor);
-                    descriptor.ServerTypeName = entry.TypeName;
-                }
-                else
-                {
-                    EntityStates state;
-                    this.context.TryGetEntity(entity.Key, entry.ETagText, this.mergeOption, out state);
-                }
-            }
-
-            foreach (AtomEntry entry in this.foundEntriesWithMedia.Values)
-            {
-                Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise it wasn't found");
-                EntityDescriptor descriptor = this.context.GetEntityDescriptor(entry.ResolvedObject);
-                this.ApplyMediaEntryInformation(entry, descriptor);
-            }
-
-            foreach (LinkDescriptor link in this.links)
-            {
-                if (EntityStates.Added == link.State)
-                {
-                    if ((EntityStates.Deleted == this.context.GetEntityDescriptor(link.Target).State) ||
-                        (EntityStates.Deleted == this.context.GetEntityDescriptor(link.Source).State))
-                    {
-                        this.context.DeleteLink(link.Source, link.SourceProperty, link.Target);
-                    }
-                    else
-                    {
-                        this.context.AttachLink(link.Source, link.SourceProperty, link.Target, this.mergeOption);
-                    }
-                }
-                else if (EntityStates.Modified == link.State)
-                {
-                    object target = link.Target;
-                    if (MergeOption.PreserveChanges == this.mergeOption)
-                    {
-                        LinkDescriptor end = this.context.GetLinks(link.Source, link.SourceProperty).FirstOrDefault();
-                        if (null != end && null == end.Target)
-                        {
-                            continue;
-                        }
-
-                        if ((null != target) && (EntityStates.Deleted == this.context.GetEntityDescriptor(target).State) ||
-                            (EntityStates.Deleted == this.context.GetEntityDescriptor(link.Source).State))
-                        {
-                            target = null;
-                        }
-                    }
-
-                    this.context.AttachLink(link.Source, link.SourceProperty, target, this.mergeOption);
-                }
-                else
-                {
-                    Debug.Assert(EntityStates.Detached == link.State, "not detached link");
-                    this.context.DetachLink(link.Source, link.SourceProperty, link.Target);
-                }
-            }
-        }
-
-        internal void Clear()
-        {
-            this.foundEntriesWithMedia.Clear();
-            this.identityStack.Clear();
-            this.links.Clear();
-            this.insertRefreshObject = null;
-        }
-
-        internal void FoundExistingInstance(AtomEntry entry)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(ShouldTrackWithContext(entry), "Existing entries should be entity");
-
-            if (this.mergeOption == MergeOption.OverwriteChanges)
-            {
-                this.identityStack[entry.Identity] = entry;
-            }
-            else if (this.Tracking && entry.MediaLinkEntry == true)
-            {
-                this.foundEntriesWithMedia[entry.Identity] = entry;
-            }
-        }
-
-        internal void FoundTargetInstance(AtomEntry entry)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise this is not a target");
-
-            if (ShouldTrackWithContext(entry))
-            {
-                this.context.AttachIdentity(entry.Identity, entry.QueryLink, entry.EditLink, entry.ResolvedObject, entry.ETagText);
-                this.identityStack.Add(entry.Identity, entry);
-                this.insertRefreshObject = entry.ResolvedObject;
-            }
-        }
-
-        internal bool TryResolve(AtomEntry entry, out AtomEntry existingEntry)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(entry.Identity != null, "entry.Identity != null");
-
-            if (this.identityStack.TryGetValue(entry.Identity, out existingEntry))
-            {
-                return true;
-            }
-
-            if (this.appendOnlyEntries.TryGetValue(entry.Identity, out existingEntry))
-            {
-                EntityStates state;
-                this.context.TryGetEntity(entry.Identity, entry.ETagText, this.mergeOption, out state);
-                if (state == EntityStates.Unchanged)
-                {
-                    return true;
-                }
-                else
-                {
-                    this.appendOnlyEntries.Remove(entry.Identity);
-                }
-            }
-
-            existingEntry = null;
-            return false;
-        }
-
-        internal void AddedLink(AtomEntry source, string propertyName, object target)
-        {
-            Debug.Assert(source != null, "source != null");
-            Debug.Assert(propertyName != null, "propertyName != null");
-
-            if (!this.Tracking)
-            {
-                return;
-            }
-
-            if (ShouldTrackWithContext(source) && ShouldTrackWithContext(target))
-            {
-                LinkDescriptor item = new LinkDescriptor(source.ResolvedObject, propertyName, target, EntityStates.Added);
-                this.links.Add(item);
-            }
-        }
-
-        internal void CreatedInstance(AtomEntry entry)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise, what did we create?");
-            Debug.Assert(entry.CreatedByMaterializer, "entry.CreatedByMaterializer -- otherwise we shouldn't be calling this");
-
-            if (ShouldTrackWithContext(entry))
-            {
-                this.identityStack.Add(entry.Identity, entry);
-                if (this.mergeOption == MergeOption.AppendOnly)
-                {
-                    this.appendOnlyEntries.Add(entry.Identity, entry);
-                }
-            }
-        }
-
-        internal void RemovedLink(AtomEntry source, string propertyName, object target)
-        {
-            Debug.Assert(source != null, "source != null");
-            Debug.Assert(propertyName != null, "propertyName != null");
-
-            if (ShouldTrackWithContext(source) && ShouldTrackWithContext(target))
-            {
-                Debug.Assert(this.Tracking, "this.Tracking -- otherwise there's an 'if' missing (it happens to be that the assert holds for all current callers");
-                LinkDescriptor item = new LinkDescriptor(source.ResolvedObject, propertyName, target, EntityStates.Detached);
-                this.links.Add(item);
-            }
-        }
-
-        internal void SetLink(AtomEntry source, string propertyName, object target)
-        {
-            Debug.Assert(source != null, "source != null");
-            Debug.Assert(propertyName != null, "propertyName != null");
-
-            if (!this.Tracking)
-            {
-                return;
-            }
-
-            if (ShouldTrackWithContext(source) && ShouldTrackWithContext(target))
-            {
-                Debug.Assert(this.Tracking, "this.Tracking -- otherwise there's an 'if' missing (it happens to be that the assert holds for all current callers");
-                LinkDescriptor item = new LinkDescriptor(source.ResolvedObject, propertyName, target, EntityStates.Modified);
-                this.links.Add(item);
-            }
-        }
-
-        #endregion Internal methods.
-
-        #region Private methods.
-
-        private static bool ShouldTrackWithContext(AtomEntry entry)
-        {
-            Debug.Assert(entry.ActualType != null, "Entry with no type added to log");
-            return entry.ActualType.IsEntityType;
-        }
-
-        private static bool ShouldTrackWithContext(object entity)
-        {
-            if (entity == null)
-            {
-                return true;
-            }
-
-            ClientType type = ClientType.Create(entity.GetType());
-            return type.IsEntityType;
-        }
-
-        private void ApplyMediaEntryInformation(AtomEntry entry, EntityDescriptor descriptor)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(descriptor != null, "descriptor != null");
-
-            if (entry.MediaEditUri != null || entry.MediaContentUri != null)
-            {
-                if (entry.MediaEditUri != null)
-                {
-                    descriptor.EditStreamUri = new Uri(this.context.BaseUriWithSlash, entry.MediaEditUri);
-                }
-
-                if (entry.MediaContentUri != null)
-                {
-                    descriptor.ReadStreamUri = new Uri(this.context.BaseUriWithSlash, entry.MediaContentUri);
-                }
-
-                descriptor.StreamETag = entry.StreamETagText;
-            }
-        }
-
-        #endregion Private methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    using System.Xml;
+    using System.Xml.Linq;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    internal class AtomMaterializerLog
+    {
+        #region Private fields.
+
+        private readonly DataServiceContext context;
+
+        private readonly Dictionary<String, AtomEntry> appendOnlyEntries;
+
+        private readonly Dictionary<String, AtomEntry> foundEntriesWithMedia;
+
+        private readonly Dictionary<String, AtomEntry> identityStack;
+
+        private readonly List<LinkDescriptor> links;
+
+        private readonly MergeOption mergeOption;
+
+        private object insertRefreshObject;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        internal AtomMaterializerLog(DataServiceContext context, MergeOption mergeOption)
+        {
+            Debug.Assert(context != null, "context != null");
+            this.appendOnlyEntries = new Dictionary<string, AtomEntry>(EqualityComparer<String>.Default);
+            this.context = context;
+            this.mergeOption = mergeOption;
+            this.foundEntriesWithMedia = new Dictionary<String, AtomEntry>(EqualityComparer<String>.Default);
+            this.identityStack = new Dictionary<String, AtomEntry>(EqualityComparer<String>.Default);
+            this.links = new List<LinkDescriptor>();
+        }
+
+        #endregion Constructors.
+
+        #region Internal properties.
+
+        internal bool Tracking
+        {
+            get 
+            { 
+                return this.mergeOption != MergeOption.NoTracking; 
+            }
+        }
+
+        #endregion Internal properties.
+
+        #region Internal methods.
+
+        internal void ApplyToContext()
+        {
+            Debug.Assert(
+                this.mergeOption != MergeOption.OverwriteChanges || this.foundEntriesWithMedia.Count == 0,
+                "mergeOption != MergeOption.OverwriteChanges || foundEntriesWithMedia.Count == 0 - we only use the 'entries-with-media' lookaside when we're not in overwrite mode, otherwise we track everything through identity stack");
+
+            if (!this.Tracking)
+            {
+                return;
+            }
+
+            foreach (KeyValuePair<String, AtomEntry> entity in this.identityStack)
+            {
+                AtomEntry entry = entity.Value;
+                if (entry.CreatedByMaterializer ||
+                    entry.ResolvedObject == this.insertRefreshObject ||
+                    entry.ShouldUpdateFromPayload)
+                {
+                    EntityDescriptor descriptor = new EntityDescriptor(entity.Key, entry.QueryLink, entry.EditLink, entry.ResolvedObject, null, null, null, entry.ETagText, EntityStates.Unchanged);
+                    descriptor = this.context.InternalAttachEntityDescriptor(descriptor, false);
+
+                    descriptor.State = EntityStates.Unchanged;
+
+                    this.ApplyMediaEntryInformation(entry, descriptor);
+                    descriptor.ServerTypeName = entry.TypeName;
+                }
+                else
+                {
+                    EntityStates state;
+                    this.context.TryGetEntity(entity.Key, entry.ETagText, this.mergeOption, out state);
+                }
+            }
+
+            foreach (AtomEntry entry in this.foundEntriesWithMedia.Values)
+            {
+                Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise it wasn't found");
+                EntityDescriptor descriptor = this.context.GetEntityDescriptor(entry.ResolvedObject);
+                this.ApplyMediaEntryInformation(entry, descriptor);
+            }
+
+            foreach (LinkDescriptor link in this.links)
+            {
+                if (EntityStates.Added == link.State)
+                {
+                    if ((EntityStates.Deleted == this.context.GetEntityDescriptor(link.Target).State) ||
+                        (EntityStates.Deleted == this.context.GetEntityDescriptor(link.Source).State))
+                    {
+                        this.context.DeleteLink(link.Source, link.SourceProperty, link.Target);
+                    }
+                    else
+                    {
+                        this.context.AttachLink(link.Source, link.SourceProperty, link.Target, this.mergeOption);
+                    }
+                }
+                else if (EntityStates.Modified == link.State)
+                {
+                    object target = link.Target;
+                    if (MergeOption.PreserveChanges == this.mergeOption)
+                    {
+                        LinkDescriptor end = this.context.GetLinks(link.Source, link.SourceProperty).FirstOrDefault();
+                        if (null != end && null == end.Target)
+                        {
+                            continue;
+                        }
+
+                        if ((null != target) && (EntityStates.Deleted == this.context.GetEntityDescriptor(target).State) ||
+                            (EntityStates.Deleted == this.context.GetEntityDescriptor(link.Source).State))
+                        {
+                            target = null;
+                        }
+                    }
+
+                    this.context.AttachLink(link.Source, link.SourceProperty, target, this.mergeOption);
+                }
+                else
+                {
+                    Debug.Assert(EntityStates.Detached == link.State, "not detached link");
+                    this.context.DetachLink(link.Source, link.SourceProperty, link.Target);
+                }
+            }
+        }
+
+        internal void Clear()
+        {
+            this.foundEntriesWithMedia.Clear();
+            this.identityStack.Clear();
+            this.links.Clear();
+            this.insertRefreshObject = null;
+        }
+
+        internal void FoundExistingInstance(AtomEntry entry)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(ShouldTrackWithContext(entry), "Existing entries should be entity");
+
+            if (this.mergeOption == MergeOption.OverwriteChanges)
+            {
+                this.identityStack[entry.Identity] = entry;
+            }
+            else if (this.Tracking && entry.MediaLinkEntry == true)
+            {
+                this.foundEntriesWithMedia[entry.Identity] = entry;
+            }
+        }
+
+        internal void FoundTargetInstance(AtomEntry entry)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise this is not a target");
+
+            if (ShouldTrackWithContext(entry))
+            {
+                this.context.AttachIdentity(entry.Identity, entry.QueryLink, entry.EditLink, entry.ResolvedObject, entry.ETagText);
+                this.identityStack.Add(entry.Identity, entry);
+                this.insertRefreshObject = entry.ResolvedObject;
+            }
+        }
+
+        internal bool TryResolve(AtomEntry entry, out AtomEntry existingEntry)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(entry.Identity != null, "entry.Identity != null");
+
+            if (this.identityStack.TryGetValue(entry.Identity, out existingEntry))
+            {
+                return true;
+            }
+
+            if (this.appendOnlyEntries.TryGetValue(entry.Identity, out existingEntry))
+            {
+                EntityStates state;
+                this.context.TryGetEntity(entry.Identity, entry.ETagText, this.mergeOption, out state);
+                if (state == EntityStates.Unchanged)
+                {
+                    return true;
+                }
+                else
+                {
+                    this.appendOnlyEntries.Remove(entry.Identity);
+                }
+            }
+
+            existingEntry = null;
+            return false;
+        }
+
+        internal void AddedLink(AtomEntry source, string propertyName, object target)
+        {
+            Debug.Assert(source != null, "source != null");
+            Debug.Assert(propertyName != null, "propertyName != null");
+
+            if (!this.Tracking)
+            {
+                return;
+            }
+
+            if (ShouldTrackWithContext(source) && ShouldTrackWithContext(target))
+            {
+                LinkDescriptor item = new LinkDescriptor(source.ResolvedObject, propertyName, target, EntityStates.Added);
+                this.links.Add(item);
+            }
+        }
+
+        internal void CreatedInstance(AtomEntry entry)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(entry.ResolvedObject != null, "entry.ResolvedObject != null -- otherwise, what did we create?");
+            Debug.Assert(entry.CreatedByMaterializer, "entry.CreatedByMaterializer -- otherwise we shouldn't be calling this");
+
+            if (ShouldTrackWithContext(entry))
+            {
+                this.identityStack.Add(entry.Identity, entry);
+                if (this.mergeOption == MergeOption.AppendOnly)
+                {
+                    this.appendOnlyEntries.Add(entry.Identity, entry);
+                }
+            }
+        }
+
+        internal void RemovedLink(AtomEntry source, string propertyName, object target)
+        {
+            Debug.Assert(source != null, "source != null");
+            Debug.Assert(propertyName != null, "propertyName != null");
+
+            if (ShouldTrackWithContext(source) && ShouldTrackWithContext(target))
+            {
+                Debug.Assert(this.Tracking, "this.Tracking -- otherwise there's an 'if' missing (it happens to be that the assert holds for all current callers");
+                LinkDescriptor item = new LinkDescriptor(source.ResolvedObject, propertyName, target, EntityStates.Detached);
+                this.links.Add(item);
+            }
+        }
+
+        internal void SetLink(AtomEntry source, string propertyName, object target)
+        {
+            Debug.Assert(source != null, "source != null");
+            Debug.Assert(propertyName != null, "propertyName != null");
+
+            if (!this.Tracking)
+            {
+                return;
+            }
+
+            if (ShouldTrackWithContext(source) && ShouldTrackWithContext(target))
+            {
+                Debug.Assert(this.Tracking, "this.Tracking -- otherwise there's an 'if' missing (it happens to be that the assert holds for all current callers");
+                LinkDescriptor item = new LinkDescriptor(source.ResolvedObject, propertyName, target, EntityStates.Modified);
+                this.links.Add(item);
+            }
+        }
+
+        #endregion Internal methods.
+
+        #region Private methods.
+
+        private static bool ShouldTrackWithContext(AtomEntry entry)
+        {
+            Debug.Assert(entry.ActualType != null, "Entry with no type added to log");
+            return entry.ActualType.IsEntityType;
+        }
+
+        private static bool ShouldTrackWithContext(object entity)
+        {
+            if (entity == null)
+            {
+                return true;
+            }
+
+            ClientType type = ClientType.Create(entity.GetType());
+            return type.IsEntityType;
+        }
+
+        private void ApplyMediaEntryInformation(AtomEntry entry, EntityDescriptor descriptor)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(descriptor != null, "descriptor != null");
+
+            if (entry.MediaEditUri != null || entry.MediaContentUri != null)
+            {
+                if (entry.MediaEditUri != null)
+                {
+                    descriptor.EditStreamUri = new Uri(this.context.BaseUriWithSlash, entry.MediaEditUri);
+                }
+
+                if (entry.MediaContentUri != null)
+                {
+                    descriptor.ReadStreamUri = new Uri(this.context.BaseUriWithSlash, entry.MediaContentUri);
+                }
+
+                descriptor.StreamETag = entry.StreamETagText;
+            }
+        }
+
+        #endregion Private methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomParser.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/AtomParser.cs
@@ -1,817 +1,817 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    using System.Xml;
-    using System.Xml.Linq;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("AtomParser {kind} {reader}")]
-    internal class AtomParser
-    {
-        #region Private fields.
-
-        private readonly Func<XmlReader, KeyValuePair<XmlReader, object>> entryCallback;
-
-        private readonly Stack<XmlReader> readers;
-
-        private readonly string typeScheme;
-
-        private AtomEntry entry;
-
-        private AtomFeed feed;
-
-        private AtomDataKind kind;
-
-        private XmlReader reader;
-
-        private string currentDataNamespace;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        internal AtomParser(XmlReader reader, Func<XmlReader, KeyValuePair<XmlReader, object>> entryCallback, string typeScheme, string currentDataNamespace)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(typeScheme != null, "typeScheme != null");
-            Debug.Assert(entryCallback != null, "entryCallback != null");
-            Debug.Assert(!String.IsNullOrEmpty(currentDataNamespace), "currentDataNamespace is empty or null");
-
-            this.reader = reader;
-            this.readers = new Stack<XmlReader>();
-            this.entryCallback = entryCallback;
-            this.typeScheme = typeScheme;
-            this.currentDataNamespace = currentDataNamespace;
-            
-            Debug.Assert(this.kind == AtomDataKind.None, "this.kind == AtomDataKind.None -- otherwise not initialized correctly");
-        }
-
-        #endregion Constructors.
-
-        #region Internal properties.
-
-        internal AtomEntry CurrentEntry
-        {
-            get
-            {
-                return this.entry;
-            }
-        }
-
-        internal AtomFeed CurrentFeed
-        {
-            get
-            {
-                return this.feed;
-            }
-        }
-
-        internal AtomDataKind DataKind
-        {
-            get
-            {
-                return this.kind;
-            }
-        }
-
-        internal bool IsDataWebElement
-        {
-            get { return this.reader.NamespaceURI == this.currentDataNamespace; }
-        }
-
-        #endregion Internal properties.
-
-        #region Internal methods.
-
-        internal static KeyValuePair<XmlReader, object> XElementBuilderCallback(XmlReader reader)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(reader is Xml.XmlWrappingReader, "reader must be a instance of XmlWrappingReader");
-            
-            string readerBaseUri = reader.BaseURI;
-            XElement element = XElement.Load(reader.ReadSubtree(), LoadOptions.None);
-            return new KeyValuePair<XmlReader, object>(Xml.XmlWrappingReader.CreateReader(readerBaseUri, element.CreateReader()), element);
-        }
-
-        #endregion Internal methods.
-
-        #region Internal methods.
-
-        internal bool Read()
-        {
-            if (this.DataKind == AtomDataKind.Finished)
-            {
-                return false;
-            }
-
-            while (this.reader.Read())
-            {
-                if (ShouldIgnoreNode(this.reader))
-                {
-                    continue;
-                }
-
-                Debug.Assert(
-                    this.reader.NodeType == XmlNodeType.Element || this.reader.NodeType == XmlNodeType.EndElement,
-                    "this.reader.NodeType == XmlNodeType.Element || this.reader.NodeType == XmlNodeType.EndElement -- otherwise we should have ignored or thrown");
-
-                AtomDataKind readerData = ParseStateForReader(this.reader);
-
-                if (this.reader.NodeType == XmlNodeType.EndElement)
-                {
-                    break;
-                }
-
-                switch (readerData)
-                {
-                    case AtomDataKind.Custom:
-                        if (this.DataKind == AtomDataKind.None)
-                        {
-                            this.kind = AtomDataKind.Custom;
-                            return true;
-                        }
-                        else
-                        {
-                            MaterializeAtom.SkipToEnd(this.reader);
-                            continue;
-                        }
-
-                    case AtomDataKind.Entry:
-                        this.kind = AtomDataKind.Entry;
-                        this.ParseCurrentEntry(out this.entry);
-                        return true;
-
-                    case AtomDataKind.Feed:
-                        if (this.DataKind == AtomDataKind.None)
-                        {
-                            this.feed = new AtomFeed();
-                            this.kind = AtomDataKind.Feed;
-                            return true;
-                        }
-
-                        throw new InvalidOperationException(Strings.AtomParser_FeedUnexpected);
-
-                    case AtomDataKind.FeedCount:
-                        this.ParseCurrentFeedCount();
-                        break;
-
-                    case AtomDataKind.PagingLinks:
-                        if (this.feed == null)
-                        {
-                            throw new InvalidOperationException(Strings.AtomParser_PagingLinkOutsideOfFeed);
-                        }
-
-                        this.kind = AtomDataKind.PagingLinks;
-                        this.ParseCurrentFeedPagingLinks();
-                        return true;
-
-                    default:
-                        Debug.Assert(false, "Atom Parser is in a wrong state...Did you add a new AtomDataKind?");
-                        break;
-                }
-            }
-
-            this.kind = AtomDataKind.Finished;
-            this.entry = null;            
-            return false;
-        }
-
-        internal AtomContentProperty ReadCurrentPropertyValue()
-        {
-            Debug.Assert(
-                this.kind == AtomDataKind.Custom,
-                "this.kind == AtomDataKind.Custom -- otherwise caller shouldn't invoke ReadCurrentPropertyValue");
-            return this.ReadPropertyValue();
-        }
-
-        internal string ReadCustomElementString()
-        {
-            Debug.Assert(
-                this.kind == AtomDataKind.Custom,
-                "this.kind == AtomDataKind.Custom -- otherwise caller shouldn't invoke ReadCustomElementString");
-            return MaterializeAtom.ReadElementString(this.reader, true);
-        }
-
-        internal void ReplaceReader(XmlReader newReader)
-        {
-            Debug.Assert(newReader != null, "newReader != null");
-            this.reader = newReader;
-        }
-
-        #endregion Internal methods.
-
-        #region Private methods.
-
-        private static AtomDataKind ParseStateForReader(XmlReader reader)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(
-                reader.NodeType == XmlNodeType.Element || reader.NodeType == XmlNodeType.EndElement,
-                "reader.NodeType == XmlNodeType.Element || EndElement -- otherwise can't determine");
-
-            AtomDataKind result = AtomDataKind.Custom;
-            string elementName = reader.LocalName;
-            string namespaceURI = reader.NamespaceURI;
-            if (Util.AreSame(XmlConstants.AtomNamespace, namespaceURI))
-            {
-                if (Util.AreSame(XmlConstants.AtomEntryElementName, elementName))
-                {
-                    result = AtomDataKind.Entry;
-                }
-                else if (Util.AreSame(XmlConstants.AtomFeedElementName, elementName))
-                {
-                    result = AtomDataKind.Feed;
-                }
-                else if (Util.AreSame(XmlConstants.AtomLinkElementName, elementName) &&
-                    Util.AreSame(XmlConstants.AtomLinkNextAttributeString, reader.GetAttribute(XmlConstants.AtomLinkRelationAttributeName)))
-                {
-                    result = AtomDataKind.PagingLinks;
-                }
-            }
-            else if (Util.AreSame(XmlConstants.DataWebMetadataNamespace, namespaceURI))
-            {
-                if (Util.AreSame(XmlConstants.RowCountElement, elementName))
-                {
-                    result = AtomDataKind.FeedCount;
-                }
-            }
-
-            return result;
-        }
-
-        private static bool ReadChildElement(XmlReader reader, string localName, string namespaceUri)
-        {
-            Debug.Assert(localName != null, "localName != null");
-            Debug.Assert(namespaceUri != null, "namespaceUri != null");
-            Debug.Assert(!reader.IsEmptyElement, "!reader.IsEmptyElement");
-            Debug.Assert(reader.NodeType != XmlNodeType.EndElement, "reader.NodeType != XmlNodeType.EndElement");
-
-            return reader.Read() && reader.IsStartElement(localName, namespaceUri);
-        }
-
-        private static void SkipToEndAtDepth(XmlReader reader, int depth)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(reader.Depth >= depth, "reader.Depth >= depth");
-
-            while (!(reader.Depth == depth && 
-                     (reader.NodeType == XmlNodeType.EndElement ||
-                      (reader.NodeType == XmlNodeType.Element && reader.IsEmptyElement))))
-            {
-                reader.Read();
-            }
-        }
-
-        private static string ReadElementStringForText(XmlReader reader)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            if (reader.IsEmptyElement)
-            {
-                return String.Empty;
-            }
-
-            StringBuilder result = new StringBuilder();
-            int depth = reader.Depth;
-            while (reader.Read())
-            {
-                if (reader.Depth == depth)
-                {
-                    Debug.Assert(
-                        reader.NodeType == XmlNodeType.EndElement, 
-                        "reader.NodeType == XmlNodeType.EndElement -- otherwise XmlReader is acting odd");
-                    break;
-                }
-
-                if (reader.NodeType == XmlNodeType.SignificantWhitespace ||
-                    reader.NodeType == XmlNodeType.Text)
-                {
-                    result.Append(reader.Value);
-                }
-            }
-
-            return result.ToString();
-        }
-
-        private static bool ShouldIgnoreNode(XmlReader reader)
-        {
-            Debug.Assert(reader != null, "reader != null");
-
-            switch (reader.NodeType)
-            {
-                case XmlNodeType.CDATA:
-                case XmlNodeType.EntityReference:
-                case XmlNodeType.EndEntity:
-                    Error.ThrowInternalError(InternalError.UnexpectedXmlNodeTypeWhenReading);
-                    break;
-                case XmlNodeType.Text:
-                case XmlNodeType.SignificantWhitespace:
-                    Error.ThrowInternalError(InternalError.UnexpectedXmlNodeTypeWhenReading);
-                    break;
-                case XmlNodeType.Element:
-                case XmlNodeType.EndElement:
-                    return false;
-                default:
-                    break;
-            }
-
-            return true;
-        }
-
-        private static bool IsAllowedContentType(string contentType)
-        {
-            return (String.Equals(XmlConstants.MimeApplicationXml, contentType, StringComparison.OrdinalIgnoreCase) ||
-                    String.Equals(XmlConstants.MimeApplicationAtom, contentType, StringComparison.OrdinalIgnoreCase));
-        }
-
-        private static bool IsAllowedLinkType(string linkType, out bool isFeed)
-        {
-            isFeed = String.Equals(XmlConstants.LinkMimeTypeFeed, linkType, StringComparison.OrdinalIgnoreCase);
-            return isFeed ? true : String.Equals(XmlConstants.LinkMimeTypeEntry, linkType, StringComparison.OrdinalIgnoreCase);
-        }
-
-        private void ParseCurrentContent(AtomEntry targetEntry)
-        {
-            Debug.Assert(targetEntry != null, "targetEntry != null");
-            Debug.Assert(this.reader.NodeType == XmlNodeType.Element, "this.reader.NodeType == XmlNodeType.Element");
-            
-            string propertyValue = this.reader.GetAttributeEx(XmlConstants.AtomContentSrcAttributeName, XmlConstants.AtomNamespace);
-            if (propertyValue != null)
-            {
-                if (!this.reader.IsEmptyElement)
-                {
-                    throw Error.InvalidOperation(Strings.Deserialize_ExpectedEmptyMediaLinkEntryContent);
-                }
-
-                targetEntry.MediaLinkEntry = true;
-                targetEntry.MediaContentUri = new Uri(propertyValue, UriKind.RelativeOrAbsolute);
-            }
-            else
-            {
-                if (targetEntry.MediaLinkEntry.HasValue && targetEntry.MediaLinkEntry.Value)
-                {
-                    throw Error.InvalidOperation(Strings.Deserialize_ContentPlusPropertiesNotAllowed);
-                }
-
-                targetEntry.MediaLinkEntry = false;
-
-                propertyValue = this.reader.GetAttributeEx(XmlConstants.AtomTypeAttributeName, XmlConstants.AtomNamespace);
-                if (AtomParser.IsAllowedContentType(propertyValue))
-                {
-                    if (this.reader.IsEmptyElement)
-                    {
-                        return;
-                    }
-
-                    if (ReadChildElement(this.reader, XmlConstants.AtomPropertiesElementName, XmlConstants.DataWebMetadataNamespace))
-                    {
-                        this.ReadCurrentProperties(targetEntry.DataValues);
-                    }
-                    else
-                    if (this.reader.NodeType != XmlNodeType.EndElement)
-                    {
-                        throw Error.InvalidOperation(Strings.Deserialize_NotApplicationXml);
-                    }
-                }
-            }
-        }
-
-        private void ParseCurrentLink(AtomEntry targetEntry)
-        {
-            Debug.Assert(targetEntry != null, "targetEntry != null");
-            Debug.Assert(
-                this.reader.NodeType == XmlNodeType.Element, 
-                "this.reader.NodeType == XmlNodeType.Element -- otherwise we shouldn't try to parse a link");
-            Debug.Assert(
-                this.reader.LocalName == "link",
-                "this.reader.LocalName == 'link' -- otherwise we shouldn't try to parse a link");
-
-            string relation = this.reader.GetAttribute(XmlConstants.AtomLinkRelationAttributeName);
-            if (relation == null)
-            {
-                return;
-            }
-
-            if (relation == XmlConstants.AtomEditRelationAttributeValue && targetEntry.EditLink == null)
-            {
-                string href = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
-                if (String.IsNullOrEmpty(href))
-                {
-                    throw Error.InvalidOperation(Strings.Context_MissingEditLinkInResponseBody);
-                }
-
-                targetEntry.EditLink = this.ConvertHRefAttributeValueIntoURI(href);
-            }
-            else if (relation == XmlConstants.AtomSelfRelationAttributeValue && targetEntry.QueryLink == null)
-            {
-                string href = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
-                if (String.IsNullOrEmpty(href))
-                {
-                    throw Error.InvalidOperation(Strings.Context_MissingSelfLinkInResponseBody);
-                }
-
-                targetEntry.QueryLink = this.ConvertHRefAttributeValueIntoURI(href);
-            }
-            else if (relation == XmlConstants.AtomEditMediaRelationAttributeValue && targetEntry.MediaEditUri == null)
-            {
-                string href = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
-                if (String.IsNullOrEmpty(href))
-                {
-                    throw Error.InvalidOperation(Strings.Context_MissingEditMediaLinkInResponseBody);
-                }
-
-                targetEntry.MediaEditUri = this.ConvertHRefAttributeValueIntoURI(href);
-                targetEntry.StreamETagText = this.reader.GetAttribute(XmlConstants.AtomETagAttributeName, XmlConstants.DataWebMetadataNamespace);
-            }
-
-            if (!this.reader.IsEmptyElement)
-            {
-                string propertyName = UriUtil.GetNameFromAtomLinkRelationAttribute(relation);
-                if (propertyName == null)
-                {
-                    return;
-                }
-
-                string propertyValueText = this.reader.GetAttribute(XmlConstants.AtomTypeAttributeName);
-                bool isFeed;
-
-                if (!IsAllowedLinkType(propertyValueText, out isFeed))
-                {
-                    return;
-                }
-
-                if (!ReadChildElement(this.reader, XmlConstants.AtomInlineElementName, XmlConstants.DataWebMetadataNamespace))
-                {
-                    return;
-                }
-
-                bool emptyInlineCollection = this.reader.IsEmptyElement;
-                object propertyValue = null;
-
-                if (!emptyInlineCollection)
-                {
-                    AtomFeed nestedFeed = null;
-                    AtomEntry nestedEntry = null;
-                    List<AtomEntry> feedEntries = null;
-
-                    Debug.Assert(this.reader is Xml.XmlWrappingReader, "reader must be a instance of XmlWrappingReader");
-                    string readerBaseUri = this.reader.BaseURI;
-                    XmlReader nestedReader = Xml.XmlWrappingReader.CreateReader(readerBaseUri, this.reader.ReadSubtree());
-                    nestedReader.Read();
-                    Debug.Assert(nestedReader.LocalName == "inline", "nestedReader.LocalName == 'inline'");
-
-                    AtomParser nested = new AtomParser(nestedReader, this.entryCallback, this.typeScheme, this.currentDataNamespace);
-                    while (nested.Read())
-                    {
-                        switch (nested.DataKind)
-                        {
-                            case AtomDataKind.Feed:
-                                feedEntries = new List<AtomEntry>();
-                                nestedFeed = nested.CurrentFeed;
-                                propertyValue = nestedFeed;
-                                break;
-                            case AtomDataKind.Entry:
-                                nestedEntry = nested.CurrentEntry;
-                                if (feedEntries != null)
-                                {
-                                    feedEntries.Add(nestedEntry);
-                                }
-                                else
-                                {
-                                    propertyValue = nestedEntry;
-                                }
-
-                                break;
-                            case AtomDataKind.PagingLinks:
-                                break;
-                            default:
-                                throw new InvalidOperationException(Strings.AtomParser_UnexpectedContentUnderExpandedLink);
-                        }
-                    }
-
-                    if (nestedFeed != null)
-                    {
-                        Debug.Assert(
-                            nestedFeed.Entries == null,
-                            "nestedFeed.Entries == null -- otherwise someone initialized this for us");
-                        nestedFeed.Entries = feedEntries;
-                    }
-                }
-
-                AtomContentProperty property = new AtomContentProperty();
-                property.Name = propertyName;
-
-                if (emptyInlineCollection || propertyValue == null)
-                {
-                    property.IsNull = true;
-                    if (isFeed)
-                    {
-                        property.Feed = new AtomFeed();
-                        property.Feed.Entries = Enumerable.Empty<AtomEntry>();
-                    }
-                    else
-                    {
-                        property.Entry = new AtomEntry();
-                        property.Entry.IsNull = true;
-                    }
-                }
-                else
-                {
-                    property.Feed = propertyValue as AtomFeed;
-                    property.Entry = propertyValue as AtomEntry;
-                }
-
-                targetEntry.DataValues.Add(property);
-            }
-        }
-        
-        private void ReadPropertyValueIntoResult(AtomContentProperty property)
-        {
-            Debug.Assert(this.reader != null, "reader != null");
-            Debug.Assert(property != null, "property != null");
-
-            switch (this.reader.NodeType)
-            {
-                case XmlNodeType.CDATA:
-                case XmlNodeType.SignificantWhitespace:
-                case XmlNodeType.Text:
-                    if (!String.IsNullOrEmpty(property.Text))
-                    {
-                        throw Error.InvalidOperation(Strings.Deserialize_MixedTextWithComment);
-                    }
-
-                    property.Text = this.reader.Value;
-                    break;
-
-                case XmlNodeType.Comment:
-                case XmlNodeType.Whitespace:
-                case XmlNodeType.ProcessingInstruction:
-                case XmlNodeType.EndElement:
-                    break;
-
-                case XmlNodeType.Element:
-                    if (!String.IsNullOrEmpty(property.Text))
-                    {
-                        throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
-                    }
-
-                    property.EnsureProperties();
-                    AtomContentProperty prop = this.ReadPropertyValue();
-
-                    if (prop != null)
-                    {
-                        property.Properties.Add(prop);
-                    }
-
-                    break;
-
-                default:
-                    throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
-            }
-        }
-
-        private AtomContentProperty ReadPropertyValue()
-        {
-            Debug.Assert(this.reader != null, "reader != null");
-            Debug.Assert(
-                this.reader.NodeType == XmlNodeType.Element,
-                "reader.NodeType == XmlNodeType.Element -- otherwise caller is confused as to where the reader is");
-
-            if (!this.IsDataWebElement)
-            {
-                SkipToEndAtDepth(this.reader, this.reader.Depth);
-                return null;
-            }
-
-            AtomContentProperty result = new AtomContentProperty();
-            result.Name = this.reader.LocalName;
-            result.TypeName = this.reader.GetAttributeEx(XmlConstants.AtomTypeAttributeName, XmlConstants.DataWebMetadataNamespace);
-            result.IsNull = Util.DoesNullAttributeSayTrue(this.reader);
-            result.Text = result.IsNull ? null : String.Empty;
-
-            if (!this.reader.IsEmptyElement)
-            {
-                int depth = this.reader.Depth;
-                while (this.reader.Read())
-                {
-                    this.ReadPropertyValueIntoResult(result);
-                    if (this.reader.Depth == depth)
-                    {
-                        break;
-                    }
-                }
-            }
-
-            return result;
-        }
-
-        private void ReadCurrentProperties(List<AtomContentProperty> values)
-        {
-            Debug.Assert(values != null, "values != null");
-            Debug.Assert(this.reader.NodeType == XmlNodeType.Element, "this.reader.NodeType == XmlNodeType.Element");
-
-            while (this.reader.Read())
-            {
-                if (ShouldIgnoreNode(this.reader))
-                {
-                    continue;
-                }
-
-                if (this.reader.NodeType == XmlNodeType.EndElement)
-                {
-                    return;
-                }
-
-                if (this.reader.NodeType == XmlNodeType.Element)
-                {
-                    AtomContentProperty prop = this.ReadPropertyValue();
-
-                    if (prop != null)
-                    {
-                        values.Add(prop);
-                    }
-                }
-            }
-        }
-
-        private void ParseCurrentEntry(out AtomEntry targetEntry)
-        {
-            Debug.Assert(this.reader.NodeType == XmlNodeType.Element, "this.reader.NodeType == XmlNodeType.Element");
-
-            var callbackResult = this.entryCallback(this.reader);
-            Debug.Assert(callbackResult.Key != null, "callbackResult.Key != null");
-            this.readers.Push(this.reader);
-            this.reader = callbackResult.Key;
-
-            this.reader.Read();
-            Debug.Assert(this.reader.LocalName == "entry", "this.reader.LocalName == 'entry' - otherwise we're not reading the subtree");
-
-            bool hasContent = false;
-            targetEntry = new AtomEntry();
-            targetEntry.DataValues = new List<AtomContentProperty>();
-            targetEntry.Tag = callbackResult.Value;
-            targetEntry.ETagText = this.reader.GetAttribute(XmlConstants.AtomETagAttributeName, XmlConstants.DataWebMetadataNamespace);
-
-            while (this.reader.Read())
-            {
-                if (ShouldIgnoreNode(this.reader))
-                {
-                    continue;
-                }
-
-                if (this.reader.NodeType == XmlNodeType.Element)
-                {
-                    int depth = this.reader.Depth;
-                    string elementName = this.reader.LocalName;
-                    string namespaceURI = this.reader.NamespaceURI;
-                    if (namespaceURI == XmlConstants.AtomNamespace)
-                    {
-                        if (elementName == XmlConstants.AtomCategoryElementName && targetEntry.TypeName == null)
-                        {
-                            string text = this.reader.GetAttributeEx(XmlConstants.AtomCategorySchemeAttributeName, XmlConstants.AtomNamespace);
-                            if (text == this.typeScheme)
-                            {
-                                targetEntry.TypeName = this.reader.GetAttributeEx(XmlConstants.AtomCategoryTermAttributeName, XmlConstants.AtomNamespace);
-                            }
-                        }
-                        else if (elementName == XmlConstants.AtomContentElementName)
-                        {
-                            hasContent = true;
-                            this.ParseCurrentContent(targetEntry);
-                        }
-                        else if (elementName == XmlConstants.AtomIdElementName && targetEntry.Identity == null)
-                        {
-                            string idText = ReadElementStringForText(this.reader);
-                            idText = Util.ReferenceIdentity(idText);
-                            
-                            Uri idUri = Util.CreateUri(idText, UriKind.RelativeOrAbsolute);
-                            if (!idUri.IsAbsoluteUri)
-                            {
-                                throw Error.InvalidOperation(Strings.Context_TrackingExpectsAbsoluteUri);
-                            }
-
-                            targetEntry.Identity = idText;
-                        }
-                        else if (elementName == XmlConstants.AtomLinkElementName)
-                        {
-                            this.ParseCurrentLink(targetEntry);
-                        }
-                    }
-                    else if (namespaceURI == XmlConstants.DataWebMetadataNamespace)
-                    {
-                        if (elementName == XmlConstants.AtomPropertiesElementName)
-                        {
-                            if (targetEntry.MediaLinkEntry.HasValue && !targetEntry.MediaLinkEntry.Value)
-                            {
-                                throw Error.InvalidOperation(Strings.Deserialize_ContentPlusPropertiesNotAllowed);
-                            }
-
-                            targetEntry.MediaLinkEntry = true;
-
-                            if (!this.reader.IsEmptyElement)
-                            {
-                                this.ReadCurrentProperties(targetEntry.DataValues);
-                            }
-                        }
-                    }
-
-                    SkipToEndAtDepth(this.reader, depth);
-                }
-            }
-
-            if (targetEntry.Identity == null)
-            {
-                throw Error.InvalidOperation(Strings.Deserialize_MissingIdElement);
-            }
-
-            if (!hasContent)
-            {
-                throw Error.BatchStreamContentExpected(BatchStreamState.GetResponse);
-            }
-
-            this.reader = this.readers.Pop();
-        }
-
-        private void ParseCurrentFeedCount()
-        {
-            if (this.feed == null)
-            {
-                throw new InvalidOperationException(Strings.AtomParser_FeedCountNotUnderFeed);
-            }
-
-            if (this.feed.Count.HasValue)
-            {
-                throw new InvalidOperationException(Strings.AtomParser_ManyFeedCounts);
-            }
-
-            long countValue;
-            if (!long.TryParse(MaterializeAtom.ReadElementString(this.reader, true), System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out countValue))
-            {
-                throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
-            }
-
-            if (countValue < 0)
-            {
-                throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
-            }
-
-            this.feed.Count = countValue;
-        }
-
-        private void ParseCurrentFeedPagingLinks()
-        {
-            Debug.Assert(this.feed != null, "Trying to parser paging links but feed is null.");
-
-            if (this.feed.NextLink != null)
-            {
-                throw new InvalidOperationException(Strings.AtomMaterializer_DuplicatedNextLink);
-            }
-
-            string nextLink = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
-
-            if (nextLink == null)
-            {
-                throw new InvalidOperationException(Strings.AtomMaterializer_LinksMissingHref);
-            }
-            else
-            {
-                this.feed.NextLink = this.ConvertHRefAttributeValueIntoURI(nextLink);
-            }
-        }
-
-        private Uri ConvertHRefAttributeValueIntoURI(string href)
-        {
-            Uri uri = Util.CreateUri(href, UriKind.RelativeOrAbsolute);
-            if (!uri.IsAbsoluteUri && !String.IsNullOrEmpty(this.reader.BaseURI))
-            {
-                Uri baseUri = Util.CreateUri(this.reader.BaseURI, UriKind.RelativeOrAbsolute);
-
-                uri = new Uri(baseUri, uri);
-            }
-
-            return uri;
-        }
-
-        #endregion Private methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    using System.Xml;
+    using System.Xml.Linq;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("AtomParser {kind} {reader}")]
+    internal class AtomParser
+    {
+        #region Private fields.
+
+        private readonly Func<XmlReader, KeyValuePair<XmlReader, object>> entryCallback;
+
+        private readonly Stack<XmlReader> readers;
+
+        private readonly string typeScheme;
+
+        private AtomEntry entry;
+
+        private AtomFeed feed;
+
+        private AtomDataKind kind;
+
+        private XmlReader reader;
+
+        private string currentDataNamespace;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        internal AtomParser(XmlReader reader, Func<XmlReader, KeyValuePair<XmlReader, object>> entryCallback, string typeScheme, string currentDataNamespace)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(typeScheme != null, "typeScheme != null");
+            Debug.Assert(entryCallback != null, "entryCallback != null");
+            Debug.Assert(!String.IsNullOrEmpty(currentDataNamespace), "currentDataNamespace is empty or null");
+
+            this.reader = reader;
+            this.readers = new Stack<XmlReader>();
+            this.entryCallback = entryCallback;
+            this.typeScheme = typeScheme;
+            this.currentDataNamespace = currentDataNamespace;
+            
+            Debug.Assert(this.kind == AtomDataKind.None, "this.kind == AtomDataKind.None -- otherwise not initialized correctly");
+        }
+
+        #endregion Constructors.
+
+        #region Internal properties.
+
+        internal AtomEntry CurrentEntry
+        {
+            get
+            {
+                return this.entry;
+            }
+        }
+
+        internal AtomFeed CurrentFeed
+        {
+            get
+            {
+                return this.feed;
+            }
+        }
+
+        internal AtomDataKind DataKind
+        {
+            get
+            {
+                return this.kind;
+            }
+        }
+
+        internal bool IsDataWebElement
+        {
+            get { return this.reader.NamespaceURI == this.currentDataNamespace; }
+        }
+
+        #endregion Internal properties.
+
+        #region Internal methods.
+
+        internal static KeyValuePair<XmlReader, object> XElementBuilderCallback(XmlReader reader)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(reader is Xml.XmlWrappingReader, "reader must be a instance of XmlWrappingReader");
+            
+            string readerBaseUri = reader.BaseURI;
+            XElement element = XElement.Load(reader.ReadSubtree(), LoadOptions.None);
+            return new KeyValuePair<XmlReader, object>(Xml.XmlWrappingReader.CreateReader(readerBaseUri, element.CreateReader()), element);
+        }
+
+        #endregion Internal methods.
+
+        #region Internal methods.
+
+        internal bool Read()
+        {
+            if (this.DataKind == AtomDataKind.Finished)
+            {
+                return false;
+            }
+
+            while (this.reader.Read())
+            {
+                if (ShouldIgnoreNode(this.reader))
+                {
+                    continue;
+                }
+
+                Debug.Assert(
+                    this.reader.NodeType == XmlNodeType.Element || this.reader.NodeType == XmlNodeType.EndElement,
+                    "this.reader.NodeType == XmlNodeType.Element || this.reader.NodeType == XmlNodeType.EndElement -- otherwise we should have ignored or thrown");
+
+                AtomDataKind readerData = ParseStateForReader(this.reader);
+
+                if (this.reader.NodeType == XmlNodeType.EndElement)
+                {
+                    break;
+                }
+
+                switch (readerData)
+                {
+                    case AtomDataKind.Custom:
+                        if (this.DataKind == AtomDataKind.None)
+                        {
+                            this.kind = AtomDataKind.Custom;
+                            return true;
+                        }
+                        else
+                        {
+                            MaterializeAtom.SkipToEnd(this.reader);
+                            continue;
+                        }
+
+                    case AtomDataKind.Entry:
+                        this.kind = AtomDataKind.Entry;
+                        this.ParseCurrentEntry(out this.entry);
+                        return true;
+
+                    case AtomDataKind.Feed:
+                        if (this.DataKind == AtomDataKind.None)
+                        {
+                            this.feed = new AtomFeed();
+                            this.kind = AtomDataKind.Feed;
+                            return true;
+                        }
+
+                        throw new InvalidOperationException(Strings.AtomParser_FeedUnexpected);
+
+                    case AtomDataKind.FeedCount:
+                        this.ParseCurrentFeedCount();
+                        break;
+
+                    case AtomDataKind.PagingLinks:
+                        if (this.feed == null)
+                        {
+                            throw new InvalidOperationException(Strings.AtomParser_PagingLinkOutsideOfFeed);
+                        }
+
+                        this.kind = AtomDataKind.PagingLinks;
+                        this.ParseCurrentFeedPagingLinks();
+                        return true;
+
+                    default:
+                        Debug.Assert(false, "Atom Parser is in a wrong state...Did you add a new AtomDataKind?");
+                        break;
+                }
+            }
+
+            this.kind = AtomDataKind.Finished;
+            this.entry = null;            
+            return false;
+        }
+
+        internal AtomContentProperty ReadCurrentPropertyValue()
+        {
+            Debug.Assert(
+                this.kind == AtomDataKind.Custom,
+                "this.kind == AtomDataKind.Custom -- otherwise caller shouldn't invoke ReadCurrentPropertyValue");
+            return this.ReadPropertyValue();
+        }
+
+        internal string ReadCustomElementString()
+        {
+            Debug.Assert(
+                this.kind == AtomDataKind.Custom,
+                "this.kind == AtomDataKind.Custom -- otherwise caller shouldn't invoke ReadCustomElementString");
+            return MaterializeAtom.ReadElementString(this.reader, true);
+        }
+
+        internal void ReplaceReader(XmlReader newReader)
+        {
+            Debug.Assert(newReader != null, "newReader != null");
+            this.reader = newReader;
+        }
+
+        #endregion Internal methods.
+
+        #region Private methods.
+
+        private static AtomDataKind ParseStateForReader(XmlReader reader)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(
+                reader.NodeType == XmlNodeType.Element || reader.NodeType == XmlNodeType.EndElement,
+                "reader.NodeType == XmlNodeType.Element || EndElement -- otherwise can't determine");
+
+            AtomDataKind result = AtomDataKind.Custom;
+            string elementName = reader.LocalName;
+            string namespaceURI = reader.NamespaceURI;
+            if (Util.AreSame(XmlConstants.AtomNamespace, namespaceURI))
+            {
+                if (Util.AreSame(XmlConstants.AtomEntryElementName, elementName))
+                {
+                    result = AtomDataKind.Entry;
+                }
+                else if (Util.AreSame(XmlConstants.AtomFeedElementName, elementName))
+                {
+                    result = AtomDataKind.Feed;
+                }
+                else if (Util.AreSame(XmlConstants.AtomLinkElementName, elementName) &&
+                    Util.AreSame(XmlConstants.AtomLinkNextAttributeString, reader.GetAttribute(XmlConstants.AtomLinkRelationAttributeName)))
+                {
+                    result = AtomDataKind.PagingLinks;
+                }
+            }
+            else if (Util.AreSame(XmlConstants.DataWebMetadataNamespace, namespaceURI))
+            {
+                if (Util.AreSame(XmlConstants.RowCountElement, elementName))
+                {
+                    result = AtomDataKind.FeedCount;
+                }
+            }
+
+            return result;
+        }
+
+        private static bool ReadChildElement(XmlReader reader, string localName, string namespaceUri)
+        {
+            Debug.Assert(localName != null, "localName != null");
+            Debug.Assert(namespaceUri != null, "namespaceUri != null");
+            Debug.Assert(!reader.IsEmptyElement, "!reader.IsEmptyElement");
+            Debug.Assert(reader.NodeType != XmlNodeType.EndElement, "reader.NodeType != XmlNodeType.EndElement");
+
+            return reader.Read() && reader.IsStartElement(localName, namespaceUri);
+        }
+
+        private static void SkipToEndAtDepth(XmlReader reader, int depth)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(reader.Depth >= depth, "reader.Depth >= depth");
+
+            while (!(reader.Depth == depth && 
+                     (reader.NodeType == XmlNodeType.EndElement ||
+                      (reader.NodeType == XmlNodeType.Element && reader.IsEmptyElement))))
+            {
+                reader.Read();
+            }
+        }
+
+        private static string ReadElementStringForText(XmlReader reader)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            if (reader.IsEmptyElement)
+            {
+                return String.Empty;
+            }
+
+            StringBuilder result = new StringBuilder();
+            int depth = reader.Depth;
+            while (reader.Read())
+            {
+                if (reader.Depth == depth)
+                {
+                    Debug.Assert(
+                        reader.NodeType == XmlNodeType.EndElement, 
+                        "reader.NodeType == XmlNodeType.EndElement -- otherwise XmlReader is acting odd");
+                    break;
+                }
+
+                if (reader.NodeType == XmlNodeType.SignificantWhitespace ||
+                    reader.NodeType == XmlNodeType.Text)
+                {
+                    result.Append(reader.Value);
+                }
+            }
+
+            return result.ToString();
+        }
+
+        private static bool ShouldIgnoreNode(XmlReader reader)
+        {
+            Debug.Assert(reader != null, "reader != null");
+
+            switch (reader.NodeType)
+            {
+                case XmlNodeType.CDATA:
+                case XmlNodeType.EntityReference:
+                case XmlNodeType.EndEntity:
+                    Error.ThrowInternalError(InternalError.UnexpectedXmlNodeTypeWhenReading);
+                    break;
+                case XmlNodeType.Text:
+                case XmlNodeType.SignificantWhitespace:
+                    Error.ThrowInternalError(InternalError.UnexpectedXmlNodeTypeWhenReading);
+                    break;
+                case XmlNodeType.Element:
+                case XmlNodeType.EndElement:
+                    return false;
+                default:
+                    break;
+            }
+
+            return true;
+        }
+
+        private static bool IsAllowedContentType(string contentType)
+        {
+            return (String.Equals(XmlConstants.MimeApplicationXml, contentType, StringComparison.OrdinalIgnoreCase) ||
+                    String.Equals(XmlConstants.MimeApplicationAtom, contentType, StringComparison.OrdinalIgnoreCase));
+        }
+
+        private static bool IsAllowedLinkType(string linkType, out bool isFeed)
+        {
+            isFeed = String.Equals(XmlConstants.LinkMimeTypeFeed, linkType, StringComparison.OrdinalIgnoreCase);
+            return isFeed ? true : String.Equals(XmlConstants.LinkMimeTypeEntry, linkType, StringComparison.OrdinalIgnoreCase);
+        }
+
+        private void ParseCurrentContent(AtomEntry targetEntry)
+        {
+            Debug.Assert(targetEntry != null, "targetEntry != null");
+            Debug.Assert(this.reader.NodeType == XmlNodeType.Element, "this.reader.NodeType == XmlNodeType.Element");
+            
+            string propertyValue = this.reader.GetAttributeEx(XmlConstants.AtomContentSrcAttributeName, XmlConstants.AtomNamespace);
+            if (propertyValue != null)
+            {
+                if (!this.reader.IsEmptyElement)
+                {
+                    throw Error.InvalidOperation(Strings.Deserialize_ExpectedEmptyMediaLinkEntryContent);
+                }
+
+                targetEntry.MediaLinkEntry = true;
+                targetEntry.MediaContentUri = new Uri(propertyValue, UriKind.RelativeOrAbsolute);
+            }
+            else
+            {
+                if (targetEntry.MediaLinkEntry.HasValue && targetEntry.MediaLinkEntry.Value)
+                {
+                    throw Error.InvalidOperation(Strings.Deserialize_ContentPlusPropertiesNotAllowed);
+                }
+
+                targetEntry.MediaLinkEntry = false;
+
+                propertyValue = this.reader.GetAttributeEx(XmlConstants.AtomTypeAttributeName, XmlConstants.AtomNamespace);
+                if (AtomParser.IsAllowedContentType(propertyValue))
+                {
+                    if (this.reader.IsEmptyElement)
+                    {
+                        return;
+                    }
+
+                    if (ReadChildElement(this.reader, XmlConstants.AtomPropertiesElementName, XmlConstants.DataWebMetadataNamespace))
+                    {
+                        this.ReadCurrentProperties(targetEntry.DataValues);
+                    }
+                    else
+                    if (this.reader.NodeType != XmlNodeType.EndElement)
+                    {
+                        throw Error.InvalidOperation(Strings.Deserialize_NotApplicationXml);
+                    }
+                }
+            }
+        }
+
+        private void ParseCurrentLink(AtomEntry targetEntry)
+        {
+            Debug.Assert(targetEntry != null, "targetEntry != null");
+            Debug.Assert(
+                this.reader.NodeType == XmlNodeType.Element, 
+                "this.reader.NodeType == XmlNodeType.Element -- otherwise we shouldn't try to parse a link");
+            Debug.Assert(
+                this.reader.LocalName == "link",
+                "this.reader.LocalName == 'link' -- otherwise we shouldn't try to parse a link");
+
+            string relation = this.reader.GetAttribute(XmlConstants.AtomLinkRelationAttributeName);
+            if (relation == null)
+            {
+                return;
+            }
+
+            if (relation == XmlConstants.AtomEditRelationAttributeValue && targetEntry.EditLink == null)
+            {
+                string href = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
+                if (String.IsNullOrEmpty(href))
+                {
+                    throw Error.InvalidOperation(Strings.Context_MissingEditLinkInResponseBody);
+                }
+
+                targetEntry.EditLink = this.ConvertHRefAttributeValueIntoURI(href);
+            }
+            else if (relation == XmlConstants.AtomSelfRelationAttributeValue && targetEntry.QueryLink == null)
+            {
+                string href = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
+                if (String.IsNullOrEmpty(href))
+                {
+                    throw Error.InvalidOperation(Strings.Context_MissingSelfLinkInResponseBody);
+                }
+
+                targetEntry.QueryLink = this.ConvertHRefAttributeValueIntoURI(href);
+            }
+            else if (relation == XmlConstants.AtomEditMediaRelationAttributeValue && targetEntry.MediaEditUri == null)
+            {
+                string href = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
+                if (String.IsNullOrEmpty(href))
+                {
+                    throw Error.InvalidOperation(Strings.Context_MissingEditMediaLinkInResponseBody);
+                }
+
+                targetEntry.MediaEditUri = this.ConvertHRefAttributeValueIntoURI(href);
+                targetEntry.StreamETagText = this.reader.GetAttribute(XmlConstants.AtomETagAttributeName, XmlConstants.DataWebMetadataNamespace);
+            }
+
+            if (!this.reader.IsEmptyElement)
+            {
+                string propertyName = UriUtil.GetNameFromAtomLinkRelationAttribute(relation);
+                if (propertyName == null)
+                {
+                    return;
+                }
+
+                string propertyValueText = this.reader.GetAttribute(XmlConstants.AtomTypeAttributeName);
+                bool isFeed;
+
+                if (!IsAllowedLinkType(propertyValueText, out isFeed))
+                {
+                    return;
+                }
+
+                if (!ReadChildElement(this.reader, XmlConstants.AtomInlineElementName, XmlConstants.DataWebMetadataNamespace))
+                {
+                    return;
+                }
+
+                bool emptyInlineCollection = this.reader.IsEmptyElement;
+                object propertyValue = null;
+
+                if (!emptyInlineCollection)
+                {
+                    AtomFeed nestedFeed = null;
+                    AtomEntry nestedEntry = null;
+                    List<AtomEntry> feedEntries = null;
+
+                    Debug.Assert(this.reader is Xml.XmlWrappingReader, "reader must be a instance of XmlWrappingReader");
+                    string readerBaseUri = this.reader.BaseURI;
+                    XmlReader nestedReader = Xml.XmlWrappingReader.CreateReader(readerBaseUri, this.reader.ReadSubtree());
+                    nestedReader.Read();
+                    Debug.Assert(nestedReader.LocalName == "inline", "nestedReader.LocalName == 'inline'");
+
+                    AtomParser nested = new AtomParser(nestedReader, this.entryCallback, this.typeScheme, this.currentDataNamespace);
+                    while (nested.Read())
+                    {
+                        switch (nested.DataKind)
+                        {
+                            case AtomDataKind.Feed:
+                                feedEntries = new List<AtomEntry>();
+                                nestedFeed = nested.CurrentFeed;
+                                propertyValue = nestedFeed;
+                                break;
+                            case AtomDataKind.Entry:
+                                nestedEntry = nested.CurrentEntry;
+                                if (feedEntries != null)
+                                {
+                                    feedEntries.Add(nestedEntry);
+                                }
+                                else
+                                {
+                                    propertyValue = nestedEntry;
+                                }
+
+                                break;
+                            case AtomDataKind.PagingLinks:
+                                break;
+                            default:
+                                throw new InvalidOperationException(Strings.AtomParser_UnexpectedContentUnderExpandedLink);
+                        }
+                    }
+
+                    if (nestedFeed != null)
+                    {
+                        Debug.Assert(
+                            nestedFeed.Entries == null,
+                            "nestedFeed.Entries == null -- otherwise someone initialized this for us");
+                        nestedFeed.Entries = feedEntries;
+                    }
+                }
+
+                AtomContentProperty property = new AtomContentProperty();
+                property.Name = propertyName;
+
+                if (emptyInlineCollection || propertyValue == null)
+                {
+                    property.IsNull = true;
+                    if (isFeed)
+                    {
+                        property.Feed = new AtomFeed();
+                        property.Feed.Entries = Enumerable.Empty<AtomEntry>();
+                    }
+                    else
+                    {
+                        property.Entry = new AtomEntry();
+                        property.Entry.IsNull = true;
+                    }
+                }
+                else
+                {
+                    property.Feed = propertyValue as AtomFeed;
+                    property.Entry = propertyValue as AtomEntry;
+                }
+
+                targetEntry.DataValues.Add(property);
+            }
+        }
+        
+        private void ReadPropertyValueIntoResult(AtomContentProperty property)
+        {
+            Debug.Assert(this.reader != null, "reader != null");
+            Debug.Assert(property != null, "property != null");
+
+            switch (this.reader.NodeType)
+            {
+                case XmlNodeType.CDATA:
+                case XmlNodeType.SignificantWhitespace:
+                case XmlNodeType.Text:
+                    if (!String.IsNullOrEmpty(property.Text))
+                    {
+                        throw Error.InvalidOperation(Strings.Deserialize_MixedTextWithComment);
+                    }
+
+                    property.Text = this.reader.Value;
+                    break;
+
+                case XmlNodeType.Comment:
+                case XmlNodeType.Whitespace:
+                case XmlNodeType.ProcessingInstruction:
+                case XmlNodeType.EndElement:
+                    break;
+
+                case XmlNodeType.Element:
+                    if (!String.IsNullOrEmpty(property.Text))
+                    {
+                        throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
+                    }
+
+                    property.EnsureProperties();
+                    AtomContentProperty prop = this.ReadPropertyValue();
+
+                    if (prop != null)
+                    {
+                        property.Properties.Add(prop);
+                    }
+
+                    break;
+
+                default:
+                    throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
+            }
+        }
+
+        private AtomContentProperty ReadPropertyValue()
+        {
+            Debug.Assert(this.reader != null, "reader != null");
+            Debug.Assert(
+                this.reader.NodeType == XmlNodeType.Element,
+                "reader.NodeType == XmlNodeType.Element -- otherwise caller is confused as to where the reader is");
+
+            if (!this.IsDataWebElement)
+            {
+                SkipToEndAtDepth(this.reader, this.reader.Depth);
+                return null;
+            }
+
+            AtomContentProperty result = new AtomContentProperty();
+            result.Name = this.reader.LocalName;
+            result.TypeName = this.reader.GetAttributeEx(XmlConstants.AtomTypeAttributeName, XmlConstants.DataWebMetadataNamespace);
+            result.IsNull = Util.DoesNullAttributeSayTrue(this.reader);
+            result.Text = result.IsNull ? null : String.Empty;
+
+            if (!this.reader.IsEmptyElement)
+            {
+                int depth = this.reader.Depth;
+                while (this.reader.Read())
+                {
+                    this.ReadPropertyValueIntoResult(result);
+                    if (this.reader.Depth == depth)
+                    {
+                        break;
+                    }
+                }
+            }
+
+            return result;
+        }
+
+        private void ReadCurrentProperties(List<AtomContentProperty> values)
+        {
+            Debug.Assert(values != null, "values != null");
+            Debug.Assert(this.reader.NodeType == XmlNodeType.Element, "this.reader.NodeType == XmlNodeType.Element");
+
+            while (this.reader.Read())
+            {
+                if (ShouldIgnoreNode(this.reader))
+                {
+                    continue;
+                }
+
+                if (this.reader.NodeType == XmlNodeType.EndElement)
+                {
+                    return;
+                }
+
+                if (this.reader.NodeType == XmlNodeType.Element)
+                {
+                    AtomContentProperty prop = this.ReadPropertyValue();
+
+                    if (prop != null)
+                    {
+                        values.Add(prop);
+                    }
+                }
+            }
+        }
+
+        private void ParseCurrentEntry(out AtomEntry targetEntry)
+        {
+            Debug.Assert(this.reader.NodeType == XmlNodeType.Element, "this.reader.NodeType == XmlNodeType.Element");
+
+            var callbackResult = this.entryCallback(this.reader);
+            Debug.Assert(callbackResult.Key != null, "callbackResult.Key != null");
+            this.readers.Push(this.reader);
+            this.reader = callbackResult.Key;
+
+            this.reader.Read();
+            Debug.Assert(this.reader.LocalName == "entry", "this.reader.LocalName == 'entry' - otherwise we're not reading the subtree");
+
+            bool hasContent = false;
+            targetEntry = new AtomEntry();
+            targetEntry.DataValues = new List<AtomContentProperty>();
+            targetEntry.Tag = callbackResult.Value;
+            targetEntry.ETagText = this.reader.GetAttribute(XmlConstants.AtomETagAttributeName, XmlConstants.DataWebMetadataNamespace);
+
+            while (this.reader.Read())
+            {
+                if (ShouldIgnoreNode(this.reader))
+                {
+                    continue;
+                }
+
+                if (this.reader.NodeType == XmlNodeType.Element)
+                {
+                    int depth = this.reader.Depth;
+                    string elementName = this.reader.LocalName;
+                    string namespaceURI = this.reader.NamespaceURI;
+                    if (namespaceURI == XmlConstants.AtomNamespace)
+                    {
+                        if (elementName == XmlConstants.AtomCategoryElementName && targetEntry.TypeName == null)
+                        {
+                            string text = this.reader.GetAttributeEx(XmlConstants.AtomCategorySchemeAttributeName, XmlConstants.AtomNamespace);
+                            if (text == this.typeScheme)
+                            {
+                                targetEntry.TypeName = this.reader.GetAttributeEx(XmlConstants.AtomCategoryTermAttributeName, XmlConstants.AtomNamespace);
+                            }
+                        }
+                        else if (elementName == XmlConstants.AtomContentElementName)
+                        {
+                            hasContent = true;
+                            this.ParseCurrentContent(targetEntry);
+                        }
+                        else if (elementName == XmlConstants.AtomIdElementName && targetEntry.Identity == null)
+                        {
+                            string idText = ReadElementStringForText(this.reader);
+                            idText = Util.ReferenceIdentity(idText);
+                            
+                            Uri idUri = Util.CreateUri(idText, UriKind.RelativeOrAbsolute);
+                            if (!idUri.IsAbsoluteUri)
+                            {
+                                throw Error.InvalidOperation(Strings.Context_TrackingExpectsAbsoluteUri);
+                            }
+
+                            targetEntry.Identity = idText;
+                        }
+                        else if (elementName == XmlConstants.AtomLinkElementName)
+                        {
+                            this.ParseCurrentLink(targetEntry);
+                        }
+                    }
+                    else if (namespaceURI == XmlConstants.DataWebMetadataNamespace)
+                    {
+                        if (elementName == XmlConstants.AtomPropertiesElementName)
+                        {
+                            if (targetEntry.MediaLinkEntry.HasValue && !targetEntry.MediaLinkEntry.Value)
+                            {
+                                throw Error.InvalidOperation(Strings.Deserialize_ContentPlusPropertiesNotAllowed);
+                            }
+
+                            targetEntry.MediaLinkEntry = true;
+
+                            if (!this.reader.IsEmptyElement)
+                            {
+                                this.ReadCurrentProperties(targetEntry.DataValues);
+                            }
+                        }
+                    }
+
+                    SkipToEndAtDepth(this.reader, depth);
+                }
+            }
+
+            if (targetEntry.Identity == null)
+            {
+                throw Error.InvalidOperation(Strings.Deserialize_MissingIdElement);
+            }
+
+            if (!hasContent)
+            {
+                throw Error.BatchStreamContentExpected(BatchStreamState.GetResponse);
+            }
+
+            this.reader = this.readers.Pop();
+        }
+
+        private void ParseCurrentFeedCount()
+        {
+            if (this.feed == null)
+            {
+                throw new InvalidOperationException(Strings.AtomParser_FeedCountNotUnderFeed);
+            }
+
+            if (this.feed.Count.HasValue)
+            {
+                throw new InvalidOperationException(Strings.AtomParser_ManyFeedCounts);
+            }
+
+            long countValue;
+            if (!long.TryParse(MaterializeAtom.ReadElementString(this.reader, true), System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out countValue))
+            {
+                throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
+            }
+
+            if (countValue < 0)
+            {
+                throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
+            }
+
+            this.feed.Count = countValue;
+        }
+
+        private void ParseCurrentFeedPagingLinks()
+        {
+            Debug.Assert(this.feed != null, "Trying to parser paging links but feed is null.");
+
+            if (this.feed.NextLink != null)
+            {
+                throw new InvalidOperationException(Strings.AtomMaterializer_DuplicatedNextLink);
+            }
+
+            string nextLink = this.reader.GetAttribute(XmlConstants.AtomHRefAttributeName);
+
+            if (nextLink == null)
+            {
+                throw new InvalidOperationException(Strings.AtomMaterializer_LinksMissingHref);
+            }
+            else
+            {
+                this.feed.NextLink = this.ConvertHRefAttributeValueIntoURI(nextLink);
+            }
+        }
+
+        private Uri ConvertHRefAttributeValueIntoURI(string href)
+        {
+            Uri uri = Util.CreateUri(href, UriKind.RelativeOrAbsolute);
+            if (!uri.IsAbsoluteUri && !String.IsNullOrEmpty(this.reader.BaseURI))
+            {
+                Uri baseUri = Util.CreateUri(this.reader.BaseURI, UriKind.RelativeOrAbsolute);
+
+                uri = new Uri(baseUri, uri);
+            }
+
+            return uri;
+        }
+
+        #endregion Private methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/BaseAsyncResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/BaseAsyncResult.cs
@@ -1,286 +1,286 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Diagnostics;
-
-#if !ASTORIA_LIGHT    
-    using System.Net;
-#else
-    using System.Data.Services.Http;
-#endif
-
-    internal abstract class BaseAsyncResult : IAsyncResult
-    {
-        internal readonly object Source;
-
-        internal readonly string Method;
-
-        private readonly AsyncCallback userCallback;
-
-        private readonly object userState;
-
-        private System.Threading.ManualResetEvent asyncWait;
-
-        private Exception failure;
-
-        private WebRequest abortable;
-
-        private bool completedSynchronously = true;
-
-        private bool userCompleted;
-
-        private int completed;
-
-        private int userNotified;
-
-        private int done;
-
-        private bool asyncWaitDisposed;
-
-        private object asyncWaitDisposeLock;
-
-        internal BaseAsyncResult(object source, string method, AsyncCallback callback, object state)
-        {
-            Debug.Assert(null != source, "null source");
-            this.Source = source;
-            this.Method = method;
-            this.userCallback = callback;
-            this.userState = state;
-        }
-
-        internal delegate TResult Func<T1, T2, T3, T4, T5, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
-
-        #region IAsyncResult implmentation - AsyncState, AsyncWaitHandle, CompletedSynchronously, IsCompleted
-
-        public object AsyncState
-        {
-            get { return this.userState; }
-        }
-
-        [DebuggerBrowsable(DebuggerBrowsableState.Never)]
-        public System.Threading.WaitHandle AsyncWaitHandle
-        {
-            get
-            {
-                if (null == this.asyncWait)
-                {                    System.Threading.Interlocked.CompareExchange(ref this.asyncWait, new System.Threading.ManualResetEvent(this.IsCompleted), null);
-
-                    if (this.IsCompleted)
-                    {                        this.SetAsyncWaitHandle();
-                    }
-                }
-
-                return this.asyncWait;
-            }
-        }
-
-        public bool CompletedSynchronously
-        {
-            get { return this.completedSynchronously; }
-            internal set { this.completedSynchronously = value; }
-        }
-
-        public bool IsCompleted
-        {
-            get { return this.userCompleted; }
-        }
-
-        internal bool IsCompletedInternally
-        {
-            get { return (0 != this.completed); }
-        }
-
-        internal bool IsAborted
-        {
-            get { return (2 == this.completed); }
-        }
-
-        #endregion
-
-        internal WebRequest Abortable
-        {
-            get
-            {
-                return this.abortable;
-            }
-
-            set
-            {
-                this.abortable = value;
-                if ((null != value) && this.IsAborted)
-                {                    value.Abort();
-                }
-            }
-        }
-
-        internal Exception Failure
-        {
-            get { return this.failure; }
-        }
-
-        internal static T EndExecute<T>(object source, string method, IAsyncResult asyncResult) where T : BaseAsyncResult
-        {
-            Util.CheckArgumentNull(asyncResult, "asyncResult");
-
-            T result = (asyncResult as T);
-            if ((null == result) || (source != result.Source) || (result.Method != method))
-            {
-                throw Error.Argument(Strings.Context_DidNotOriginateAsync, "asyncResult");
-            }
-
-            Debug.Assert((result.CompletedSynchronously && result.IsCompleted) || !result.CompletedSynchronously, "CompletedSynchronously && !IsCompleted");
-
-            if (!result.IsCompleted)
-            {                result.AsyncWaitHandle.WaitOne();
-
-                Debug.Assert(result.IsCompleted, "not completed after waiting");
-            }
-
-            if (System.Threading.Interlocked.Exchange(ref result.done, 1) != 0)
-            {
-                throw Error.Argument(Strings.Context_AsyncAlreadyDone, "asyncResult");
-            }
-
-            if (null != result.asyncWait)
-            {
-                System.Threading.Interlocked.CompareExchange(ref result.asyncWaitDisposeLock, new object(), null);
-                lock (result.asyncWaitDisposeLock)
-                {
-                    result.asyncWaitDisposed = true;
-                    Util.Dispose(result.asyncWait);
-                }
-            }
-
-            if (result.IsAborted)
-            {
-                throw Error.InvalidOperation(Strings.Context_OperationCanceled);
-            }
-
-            if (null != result.Failure)
-            {
-                if (Util.IsKnownClientExcption(result.Failure))
-                {
-                    throw result.Failure;
-                }
-
-                throw Error.InvalidOperation(Strings.DataServiceException_GeneralError, result.Failure);
-            }
-
-            return result;
-        }
-
-        internal static IAsyncResult InvokeAsync(Func<AsyncCallback, object, IAsyncResult> asyncAction, AsyncCallback callback, object state)
-        {
-            IAsyncResult asyncResult = asyncAction(BaseAsyncResult.GetDataServiceAsyncCallback(callback), state);
-            return PostInvokeAsync(asyncResult, callback);
-        }
-
-        internal static IAsyncResult InvokeAsync(Func<byte[], int, int, AsyncCallback, object, IAsyncResult> asyncAction, byte[] buffer, int offset, int length, AsyncCallback callback, object state)
-        {
-            IAsyncResult asyncResult = asyncAction(buffer, offset, length, BaseAsyncResult.GetDataServiceAsyncCallback(callback), state);
-            return PostInvokeAsync(asyncResult, callback);
-        }
-
-        internal void HandleCompleted()
-        {
-            if (this.IsCompletedInternally && (System.Threading.Interlocked.Exchange(ref this.userNotified, 1) == 0))
-            {
-                this.abortable = null;                try
-                {
-                    if (!Util.DoNotHandleException(this.Failure))
-                    {
-                        this.CompletedRequest();
-                    }
-                }
-                catch (Exception ex)
-                {
-                    if (this.HandleFailure(ex))
-                    {
-                        throw;
-                    }
-                }
-                finally
-                {
-                    this.userCompleted = true;
-
-                    this.SetAsyncWaitHandle();
-
-                    if ((null != this.userCallback) && !(this.Failure is System.Threading.ThreadAbortException) && !(this.Failure is System.StackOverflowException))
-                    {                        this.userCallback(this);
-                    }
-                }
-            }
-        }
-
-        internal bool HandleFailure(Exception e)
-        {
-            System.Threading.Interlocked.CompareExchange(ref this.failure, e, null);
-            this.SetCompleted();
-            return Util.DoNotHandleException(e);
-        }
-
-        internal void SetAborted()
-        {
-            System.Threading.Interlocked.Exchange(ref this.completed, 2);
-        }
-
-        internal void SetCompleted()
-        {
-            System.Threading.Interlocked.CompareExchange(ref this.completed, 1, 0);
-        }
-
-        protected abstract void CompletedRequest();
-
-        private static IAsyncResult PostInvokeAsync(IAsyncResult asyncResult, AsyncCallback callback)
-        {
-            Debug.Assert(asyncResult != null, "asyncResult != null");
-            if (asyncResult.CompletedSynchronously)
-            {
-                Debug.Assert(asyncResult.IsCompleted, "asyncResult.IsCompleted");
-                callback(asyncResult);
-            }
-
-            return asyncResult;
-        }
-
-        private static AsyncCallback GetDataServiceAsyncCallback(AsyncCallback callback)
-        {
-            return (asyncResult) =>
-            {
-                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult != null && asyncResult.IsCompleted");
-                if (asyncResult.CompletedSynchronously)
-                {
-                    return;
-                }
-
-                callback(asyncResult);
-            };
-        }
-
-        private void SetAsyncWaitHandle()
-        {
-            if (null != this.asyncWait)
-            {
-                System.Threading.Interlocked.CompareExchange(ref this.asyncWaitDisposeLock, new object(), null);
-                lock (this.asyncWaitDisposeLock)
-                {
-                    if (!this.asyncWaitDisposed)
-                    {
-                        this.asyncWait.Set();
-                    }
-                }
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Diagnostics;
+
+#if !ASTORIA_LIGHT    
+    using System.Net;
+#else
+    using System.Data.Services.Http;
+#endif
+
+    internal abstract class BaseAsyncResult : IAsyncResult
+    {
+        internal readonly object Source;
+
+        internal readonly string Method;
+
+        private readonly AsyncCallback userCallback;
+
+        private readonly object userState;
+
+        private System.Threading.ManualResetEvent asyncWait;
+
+        private Exception failure;
+
+        private WebRequest abortable;
+
+        private bool completedSynchronously = true;
+
+        private bool userCompleted;
+
+        private int completed;
+
+        private int userNotified;
+
+        private int done;
+
+        private bool asyncWaitDisposed;
+
+        private object asyncWaitDisposeLock;
+
+        internal BaseAsyncResult(object source, string method, AsyncCallback callback, object state)
+        {
+            Debug.Assert(null != source, "null source");
+            this.Source = source;
+            this.Method = method;
+            this.userCallback = callback;
+            this.userState = state;
+        }
+
+        internal delegate TResult Func<T1, T2, T3, T4, T5, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
+
+        #region IAsyncResult implmentation - AsyncState, AsyncWaitHandle, CompletedSynchronously, IsCompleted
+
+        public object AsyncState
+        {
+            get { return this.userState; }
+        }
+
+        [DebuggerBrowsable(DebuggerBrowsableState.Never)]
+        public System.Threading.WaitHandle AsyncWaitHandle
+        {
+            get
+            {
+                if (null == this.asyncWait)
+                {                    System.Threading.Interlocked.CompareExchange(ref this.asyncWait, new System.Threading.ManualResetEvent(this.IsCompleted), null);
+
+                    if (this.IsCompleted)
+                    {                        this.SetAsyncWaitHandle();
+                    }
+                }
+
+                return this.asyncWait;
+            }
+        }
+
+        public bool CompletedSynchronously
+        {
+            get { return this.completedSynchronously; }
+            internal set { this.completedSynchronously = value; }
+        }
+
+        public bool IsCompleted
+        {
+            get { return this.userCompleted; }
+        }
+
+        internal bool IsCompletedInternally
+        {
+            get { return (0 != this.completed); }
+        }
+
+        internal bool IsAborted
+        {
+            get { return (2 == this.completed); }
+        }
+
+        #endregion
+
+        internal WebRequest Abortable
+        {
+            get
+            {
+                return this.abortable;
+            }
+
+            set
+            {
+                this.abortable = value;
+                if ((null != value) && this.IsAborted)
+                {                    value.Abort();
+                }
+            }
+        }
+
+        internal Exception Failure
+        {
+            get { return this.failure; }
+        }
+
+        internal static T EndExecute<T>(object source, string method, IAsyncResult asyncResult) where T : BaseAsyncResult
+        {
+            Util.CheckArgumentNull(asyncResult, "asyncResult");
+
+            T result = (asyncResult as T);
+            if ((null == result) || (source != result.Source) || (result.Method != method))
+            {
+                throw Error.Argument(Strings.Context_DidNotOriginateAsync, "asyncResult");
+            }
+
+            Debug.Assert((result.CompletedSynchronously && result.IsCompleted) || !result.CompletedSynchronously, "CompletedSynchronously && !IsCompleted");
+
+            if (!result.IsCompleted)
+            {                result.AsyncWaitHandle.WaitOne();
+
+                Debug.Assert(result.IsCompleted, "not completed after waiting");
+            }
+
+            if (System.Threading.Interlocked.Exchange(ref result.done, 1) != 0)
+            {
+                throw Error.Argument(Strings.Context_AsyncAlreadyDone, "asyncResult");
+            }
+
+            if (null != result.asyncWait)
+            {
+                System.Threading.Interlocked.CompareExchange(ref result.asyncWaitDisposeLock, new object(), null);
+                lock (result.asyncWaitDisposeLock)
+                {
+                    result.asyncWaitDisposed = true;
+                    Util.Dispose(result.asyncWait);
+                }
+            }
+
+            if (result.IsAborted)
+            {
+                throw Error.InvalidOperation(Strings.Context_OperationCanceled);
+            }
+
+            if (null != result.Failure)
+            {
+                if (Util.IsKnownClientExcption(result.Failure))
+                {
+                    throw result.Failure;
+                }
+
+                throw Error.InvalidOperation(Strings.DataServiceException_GeneralError, result.Failure);
+            }
+
+            return result;
+        }
+
+        internal static IAsyncResult InvokeAsync(Func<AsyncCallback, object, IAsyncResult> asyncAction, AsyncCallback callback, object state)
+        {
+            IAsyncResult asyncResult = asyncAction(BaseAsyncResult.GetDataServiceAsyncCallback(callback), state);
+            return PostInvokeAsync(asyncResult, callback);
+        }
+
+        internal static IAsyncResult InvokeAsync(Func<byte[], int, int, AsyncCallback, object, IAsyncResult> asyncAction, byte[] buffer, int offset, int length, AsyncCallback callback, object state)
+        {
+            IAsyncResult asyncResult = asyncAction(buffer, offset, length, BaseAsyncResult.GetDataServiceAsyncCallback(callback), state);
+            return PostInvokeAsync(asyncResult, callback);
+        }
+
+        internal void HandleCompleted()
+        {
+            if (this.IsCompletedInternally && (System.Threading.Interlocked.Exchange(ref this.userNotified, 1) == 0))
+            {
+                this.abortable = null;                try
+                {
+                    if (!Util.DoNotHandleException(this.Failure))
+                    {
+                        this.CompletedRequest();
+                    }
+                }
+                catch (Exception ex)
+                {
+                    if (this.HandleFailure(ex))
+                    {
+                        throw;
+                    }
+                }
+                finally
+                {
+                    this.userCompleted = true;
+
+                    this.SetAsyncWaitHandle();
+
+                    if ((null != this.userCallback) && !(this.Failure is System.Threading.ThreadAbortException) && !(this.Failure is System.StackOverflowException))
+                    {                        this.userCallback(this);
+                    }
+                }
+            }
+        }
+
+        internal bool HandleFailure(Exception e)
+        {
+            System.Threading.Interlocked.CompareExchange(ref this.failure, e, null);
+            this.SetCompleted();
+            return Util.DoNotHandleException(e);
+        }
+
+        internal void SetAborted()
+        {
+            System.Threading.Interlocked.Exchange(ref this.completed, 2);
+        }
+
+        internal void SetCompleted()
+        {
+            System.Threading.Interlocked.CompareExchange(ref this.completed, 1, 0);
+        }
+
+        protected abstract void CompletedRequest();
+
+        private static IAsyncResult PostInvokeAsync(IAsyncResult asyncResult, AsyncCallback callback)
+        {
+            Debug.Assert(asyncResult != null, "asyncResult != null");
+            if (asyncResult.CompletedSynchronously)
+            {
+                Debug.Assert(asyncResult.IsCompleted, "asyncResult.IsCompleted");
+                callback(asyncResult);
+            }
+
+            return asyncResult;
+        }
+
+        private static AsyncCallback GetDataServiceAsyncCallback(AsyncCallback callback)
+        {
+            return (asyncResult) =>
+            {
+                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult != null && asyncResult.IsCompleted");
+                if (asyncResult.CompletedSynchronously)
+                {
+                    return;
+                }
+
+                callback(asyncResult);
+            };
+        }
+
+        private void SetAsyncWaitHandle()
+        {
+            if (null != this.asyncWait)
+            {
+                System.Threading.Interlocked.CompareExchange(ref this.asyncWaitDisposeLock, new object(), null);
+                lock (this.asyncWaitDisposeLock)
+                {
+                    if (!this.asyncWaitDisposed)
+                    {
+                        this.asyncWait.Set();
+                    }
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/BatchStream.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/BatchStream.cs
@@ -1,1280 +1,1280 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Globalization;
-    using System.IO;
-    using System.Text;
-
-#if !ASTORIA_LIGHT    
-    using System.Net;
-#else
-    using System.Data.Services.Http;
-#endif
-
-    internal class BatchStream : Stream
-    {
-        private const int DefaultBufferSize = 8000;
-
-        private readonly bool batchRequest;
-
-        private readonly byte[] byteBuffer;
-
-        private Stream reader;
-
-        private int byteLength;
-
-        private int bytePosition;
-
-        private Encoding batchEncoding;
-
-        private bool checkPreamble;
-
-        private string batchBoundary;
-
-        private int batchLength;
-
-        private int totalCount;
-
-        private string changesetBoundary;
-
-        private Encoding changesetEncoding;
-
-        private Dictionary<string, string> contentHeaders;
-
-        private Stream contentStream;
-
-        private bool disposeWithContentStreamDispose;
-
-
-        private string statusCode;
-
-        private BatchStreamState batchState;
-
-#if DEBUG && !ASTORIA_LIGHT
-        private MemoryStream writer = new MemoryStream();
-#else
-#pragma warning disable 649
-        private MemoryStream writer;
-#pragma warning restore 649
-#endif
-
-        internal BatchStream(Stream stream, string boundary, Encoding batchEncoding, bool requestStream)
-        {
-            Debug.Assert(null != stream, "null stream");
-
-            this.reader = stream;
-            this.byteBuffer = new byte[DefaultBufferSize];
-            this.batchBoundary = VerifyBoundary(boundary);
-            this.batchState = BatchStreamState.StartBatch;
-            this.batchEncoding = batchEncoding;
-            this.checkPreamble = (null != batchEncoding);
-            this.batchRequest = requestStream;
-        }
-
-        #region batch properties ContentHeaders, ContentStream, Encoding, Sate
-        public Dictionary<string, string> ContentHeaders
-        {
-            get { return this.contentHeaders; }
-        }
-
-        public Encoding Encoding
-        {
-            get { return this.changesetEncoding ?? this.batchEncoding; }
-        }
-
-        public BatchStreamState State
-        {
-            get { return this.batchState; }
-        }
-        #endregion
-
-        #region Stream properties
-        public override bool CanRead
-        {
-            get { return (null != this.reader && this.reader.CanRead); }
-        }
-
-        public override bool CanSeek
-        {
-            get { return false; }
-        }
-
-        public override bool CanWrite
-        {
-            get { return false; }
-        }
-
-        public override long Length
-        {
-            get { throw Error.NotSupported(); }
-        }
-
-        public override long Position
-        {
-            get { throw Error.NotSupported(); }
-            set { throw Error.NotSupported(); }
-        }
-        #endregion
-
-        #region Stream methods
-        public override void Flush()
-        {
-            this.reader.Flush();
-        }
-
-        public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
-        {
-            throw Error.NotSupported();
-        }
-
-        public override int Read(byte[] buffer, int offset, int count)
-        {
-            throw Error.NotSupported();
-        }
-
-        public override long Seek(long offset, SeekOrigin origin)
-        {
-            this.AssertOpen();
-
-            if (offset < 0)
-            {
-                throw Error.ArgumentOutOfRange("offset");
-            }
-
-            if (SeekOrigin.Current != origin)
-            {
-                throw Error.ArgumentOutOfRange("origin");
-            }
-
-            if (Int32.MaxValue == offset)
-            {                byte[] buffer = new byte[256];                while (0 < this.ReadDelimiter(buffer, 0, buffer.Length))
-                {
-                }
-            }
-            else if (0 < offset)
-            {                do
-                {
-                    int count = Math.Min(checked((int)offset), Math.Min(this.byteLength, this.batchLength));
-                    this.totalCount += count;
-                    this.bytePosition += count;
-                    this.byteLength -= count;
-                    this.batchLength -= count;
-                    offset -= count;
-
-                }
-                while ((0 < offset) && (this.batchLength != 0) && this.ReadBuffer());
-            }
-
-            Debug.Assert(0 <= this.byteLength, "negative byteLength");
-            Debug.Assert(0 <= this.batchLength, "negative batchLength");
-            return 0;
-        }
-
-        public override void SetLength(long value)
-        {
-            throw Error.NotSupported();
-        }
-
-        public override void Write(byte[] buffer, int offset, int count)
-        {
-            throw Error.NotSupported();
-        }
-        #endregion
-
-        internal static bool GetBoundaryAndEncodingFromMultipartMixedContentType(string contentType, out string boundary, out Encoding encoding)
-        {
-            boundary = null;
-            encoding = null;
-
-            string mime;
-            KeyValuePair<string, string>[] parameters = HttpProcessUtility.ReadContentType(contentType, out mime, out encoding);
-
-            if (String.Equals(XmlConstants.MimeMultiPartMixed, mime, StringComparison.OrdinalIgnoreCase))
-            {
-                if (null != parameters)
-                {
-                    foreach (KeyValuePair<string, string> parameter in parameters)
-                    {
-                        if (String.Equals(parameter.Key, XmlConstants.HttpMultipartBoundary, StringComparison.OrdinalIgnoreCase))
-                        {
-                            if (boundary != null)
-                            {                                boundary = null;
-                                break;
-                            }
-
-                            boundary = parameter.Value;
-                        }
-                    }
-                }
-
-                if (String.IsNullOrEmpty(boundary))
-                {                    throw Error.BatchStreamMissingBoundary();
-                }
-            }
-
-            return (null != boundary);
-        }
-
-
-        internal string GetResponseVersion()
-        {
-            string result;
-            this.ContentHeaders.TryGetValue(XmlConstants.HttpDataServiceVersion, out result);
-            return result;
-        }
-
-        internal HttpStatusCode GetStatusCode()
-        {
-            return (HttpStatusCode)(null != this.statusCode ? Int32.Parse(this.statusCode, CultureInfo.InvariantCulture) : 500);
-        }
-
-        internal bool MoveNext()
-        {
-            #region dispose previous content stream
-            if (null == this.reader || this.disposeWithContentStreamDispose)
-            {
-                return false;
-            }
-
-            if (null != this.contentStream)
-            {
-                this.contentStream.Dispose();
-            }
-
-            Debug.Assert(0 <= this.byteLength, "negative byteLength");
-            Debug.Assert(0 <= this.batchLength, "negative batchLength");
-            #endregion
-
-            #region initialize start state to EndBatch or EndChangeSet
-            switch (this.batchState)
-            {
-                case BatchStreamState.EndBatch:
-                    Debug.Assert(null == this.batchBoundary, "non-null batch boundary");
-                    Debug.Assert(null == this.changesetBoundary, "non-null changesetBoundary boundary");
-                    throw Error.BatchStreamInvalidBatchFormat();
-
-                case BatchStreamState.Get:
-                case BatchStreamState.GetResponse:
-                    this.ClearPreviousOperationInformation();
-                    goto case BatchStreamState.StartBatch;
-
-                case BatchStreamState.StartBatch:
-                case BatchStreamState.EndChangeSet:
-                    Debug.Assert(null != this.batchBoundary, "null batch boundary");
-                    Debug.Assert(null == this.changesetBoundary, "non-null changeset boundary");
-                    this.batchState = BatchStreamState.EndBatch;
-                    this.batchLength = Int32.MaxValue;
-                    break;
-
-                case BatchStreamState.BeginChangeSet:
-                    Debug.Assert(null != this.batchBoundary, "null batch boundary");
-                    Debug.Assert(null != this.contentHeaders, "null contentHeaders");
-                    Debug.Assert(null != this.changesetBoundary, "null changeset boundary");
-                    this.contentHeaders = null;
-                    this.changesetEncoding = null;
-                    this.batchState = BatchStreamState.EndChangeSet;
-                    break;
-
-                case BatchStreamState.ChangeResponse:
-                case BatchStreamState.Delete:
-                    Debug.Assert(null != this.changesetBoundary, "null changeset boundary");
-                    this.ClearPreviousOperationInformation();
-                    this.batchState = BatchStreamState.EndChangeSet;
-                    break;
-
-                case BatchStreamState.Post:
-                case BatchStreamState.Put:
-                case BatchStreamState.Merge:
-                    Debug.Assert(null != this.changesetBoundary, "null changeset boundary");
-                    this.batchState = BatchStreamState.EndChangeSet;
-                    break;
-
-                default:
-                    Debug.Assert(false, "unknown state");
-                    throw Error.BatchStreamInvalidBatchFormat();
-            }
-
-            Debug.Assert(null == this.contentHeaders, "non-null content headers");
-            Debug.Assert(null == this.contentStream, "non-null content stream");
-
-            Debug.Assert(null == this.statusCode, "non-null statusCode");
-
-            Debug.Assert(
-                this.batchState == BatchStreamState.EndBatch ||
-                this.batchState == BatchStreamState.EndChangeSet,
-                "unexpected state at start");
-            #endregion
-
-            #region read --delimiter
-            string delimiter = this.ReadLine();
-            if (String.IsNullOrEmpty(delimiter))
-            {                delimiter = this.ReadLine();
-            }
-
-            if (String.IsNullOrEmpty(delimiter))
-            {
-                throw Error.BatchStreamInvalidBatchFormat();
-            }
-
-            if (delimiter.EndsWith("--", StringComparison.Ordinal))
-            {
-                delimiter = delimiter.Substring(0, delimiter.Length - 2);
-
-                if ((null != this.changesetBoundary) && (delimiter == this.changesetBoundary))
-                {
-                    Debug.Assert(this.batchState == BatchStreamState.EndChangeSet, "bad changeset boundary state");
-
-                    this.changesetBoundary = null;
-                    return true;
-                }
-                else if (delimiter == this.batchBoundary)
-                {
-                    if (BatchStreamState.EndChangeSet == this.batchState)
-                    {                        throw Error.BatchStreamMissingEndChangesetDelimiter();
-                    }
-
-                    this.changesetBoundary = null;
-                    this.batchBoundary = null;
-                    if (this.byteLength != 0)
-                    {
-                        throw Error.BatchStreamMoreDataAfterEndOfBatch();
-                    }
-
-                    return false;
-                }
-                else
-                {
-                    throw Error.BatchStreamInvalidDelimiter(delimiter);
-                }
-            }
-            else if ((null != this.changesetBoundary) && (delimiter == this.changesetBoundary))
-            {
-                Debug.Assert(this.batchState == BatchStreamState.EndChangeSet, "bad changeset boundary state");
-            }
-            else if (delimiter == this.batchBoundary)
-            {
-                if (this.batchState != BatchStreamState.EndBatch)
-                {
-                    if (this.batchState == BatchStreamState.EndChangeSet)
-                    {                        throw Error.BatchStreamMissingEndChangesetDelimiter();
-                    }
-                    else
-                    {
-                        throw Error.BatchStreamInvalidBatchFormat();
-                    }
-                }
-            }
-            else
-            {                throw Error.BatchStreamInvalidDelimiter(delimiter);
-            }
-
-            #endregion
-
-            #region read header with values in this form (([^:]*:.*)\r\n)*\r\n
-            this.ReadContentHeaders();
-            #endregion
-
-            #region should start changeset?
-            string contentType;
-            bool readHttpHeaders = false;
-            if (this.contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType))
-            {
-                if (String.Equals(contentType, XmlConstants.MimeApplicationHttp, StringComparison.OrdinalIgnoreCase))
-                {
-                    if (this.contentHeaders.Count != 2)
-                    {
-                        throw Error.BatchStreamInvalidNumberOfHeadersAtOperationStart(
-                            XmlConstants.HttpContentType,
-                            XmlConstants.HttpContentTransferEncoding);
-                    }
-
-                    string transferEncoding;
-                    if (!this.contentHeaders.TryGetValue(XmlConstants.HttpContentTransferEncoding, out transferEncoding) ||
-                        XmlConstants.BatchRequestContentTransferEncoding != transferEncoding)
-                    {
-                        throw Error.BatchStreamMissingOrInvalidContentEncodingHeader(
-                            XmlConstants.HttpContentTransferEncoding,
-                            XmlConstants.BatchRequestContentTransferEncoding);
-                    }
-
-                    readHttpHeaders = true;
-                }
-                else if (BatchStreamState.EndBatch == this.batchState)
-                {
-                    string boundary;
-                    Encoding encoding;
-                    if (GetBoundaryAndEncodingFromMultipartMixedContentType(contentType, out boundary, out encoding))
-                    {
-                        this.changesetBoundary = VerifyBoundary(boundary);
-                        this.changesetEncoding = encoding;
-                        this.batchState = BatchStreamState.BeginChangeSet;
-                    }
-                    else
-                    {
-                        throw Error.BatchStreamInvalidContentTypeSpecified(
-                            XmlConstants.HttpContentType,
-                            contentType,
-                            XmlConstants.MimeApplicationHttp,
-                            XmlConstants.MimeMultiPartMixed);
-                    }
-
-                    if (this.contentHeaders.Count > 2 ||
-                        (this.contentHeaders.Count == 2 && !this.contentHeaders.ContainsKey(XmlConstants.HttpContentLength)))
-                    {
-                        throw Error.BatchStreamInvalidNumberOfHeadersAtChangeSetStart(XmlConstants.HttpContentType, XmlConstants.HttpContentLength);
-                    }
-                }
-                else
-                {
-                    throw Error.BatchStreamInvalidContentTypeSpecified(
-                        XmlConstants.HttpContentType,
-                        contentType,
-                        XmlConstants.MimeApplicationHttp,
-                        XmlConstants.MimeMultiPartMixed);
-                }
-            }
-            else
-            {
-                throw Error.BatchStreamMissingContentTypeHeader(XmlConstants.HttpContentType);
-            }
-            #endregion
-
-            #region what is the operation and uri?
-            if (readHttpHeaders)
-            {
-                this.ReadHttpHeaders();
-
-                this.contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType);
-            }
-            #endregion
-
-
-            #region does content have a fixed length?
-            string text = null;
-            int length = -1;
-            if (this.contentHeaders.TryGetValue(XmlConstants.HttpContentLength, out text))
-            {
-                length = Int32.Parse(text, CultureInfo.InvariantCulture);
-                if (length < 0)
-                {
-                    throw Error.BatchStreamInvalidContentLengthSpecified(text);
-                }
-
-                if (this.batchState == BatchStreamState.BeginChangeSet)
-                {
-                    this.batchLength = length;
-                }
-                else if (length != 0)
-                {
-                    Debug.Assert(
-                        this.batchState == BatchStreamState.Delete ||
-                        this.batchState == BatchStreamState.Get ||
-                        this.batchState == BatchStreamState.Post ||
-                        this.batchState == BatchStreamState.Put ||
-                        this.batchState == BatchStreamState.Merge,
-                        "unexpected contentlength location");
-                    this.contentStream = new StreamWithLength(this, length);
-                }
-            }
-            else
-            {
-                if (this.batchState == BatchStreamState.EndBatch)
-                {
-                    this.batchLength = Int32.MaxValue;
-                }
-
-                if (this.batchState != BatchStreamState.BeginChangeSet)
-                {
-                    this.contentStream = new StreamWithDelimiter(this);
-                }
-            }
-
-            #endregion
-
-            Debug.Assert(
-                this.batchState == BatchStreamState.BeginChangeSet ||
-                (this.batchRequest && (this.batchState == BatchStreamState.Delete ||
-                                       this.batchState == BatchStreamState.Get ||
-                                       this.batchState == BatchStreamState.Post ||
-                                       this.batchState == BatchStreamState.Put ||
-                                       this.batchState == BatchStreamState.Merge)) ||
-                (!this.batchRequest && (this.batchState == BatchStreamState.GetResponse ||
-                                        this.batchState == BatchStreamState.ChangeResponse)),
-                "unexpected state at return");
-
-            #region enforce if contentStream is expected, caller needs to enforce if contentStream is not expected
-            if (null == this.contentStream)
-            {
-                switch (this.batchState)
-                {
-                    case BatchStreamState.BeginChangeSet:
-                    case BatchStreamState.Delete:
-                    case BatchStreamState.Get:
-                    case BatchStreamState.ChangeResponse:                    case BatchStreamState.GetResponse:                        break;
-
-                    case BatchStreamState.Post:
-                    case BatchStreamState.Put:
-                    case BatchStreamState.Merge:
-                    default:
-                        throw Error.BatchStreamContentExpected(this.batchState);
-                }
-            }
-            #endregion
-
-            #region enforce if contentType not is expected, caller needs to enforce if contentType is expected
-            if (!String.IsNullOrEmpty(contentType))
-            {
-                switch (this.batchState)
-                {
-                    case BatchStreamState.BeginChangeSet:
-                    case BatchStreamState.Post:
-                    case BatchStreamState.Put:
-                    case BatchStreamState.Merge:
-                    case BatchStreamState.GetResponse:
-                    case BatchStreamState.ChangeResponse:
-                        break;
-
-                    case BatchStreamState.Get:                    case BatchStreamState.Delete:                    default:
-                        throw Error.BatchStreamContentUnexpected(this.batchState);
-                }
-            }
-            #endregion
-
-            return true;
-        }
-
-        internal Stream GetContentStream()
-        {
-            return this.contentStream;
-        }
-
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing)
-            {
-                if (null != this.contentStream)
-                {                    this.disposeWithContentStreamDispose = true;
-                }
-                else
-                {
-                    this.byteLength = 0;
-                    if (null != this.reader)
-                    {
-                        this.reader.Dispose();
-                        this.reader = null;
-                    }
-
-                    this.contentHeaders = null;
-                    if (null != this.contentStream)
-                    {
-                        this.contentStream.Dispose();
-                    }
-
-                    if (null != this.writer)
-                    {
-                        this.writer.Dispose();
-                    }
-                }
-            }
-
-            base.Dispose(disposing);
-        }
-
-        private static BatchStreamState GetStateBasedOnHttpMethodName(string methodName)
-        {
-            if (XmlConstants.HttpMethodGet.Equals(methodName, StringComparison.Ordinal))
-            {
-                return BatchStreamState.Get;
-            }
-            else if (XmlConstants.HttpMethodDelete.Equals(methodName, StringComparison.Ordinal))
-            {
-                return BatchStreamState.Delete;
-            }
-            else if (XmlConstants.HttpMethodPost.Equals(methodName, StringComparison.Ordinal))
-            {
-                return BatchStreamState.Post;
-            }
-            else if (XmlConstants.HttpMethodPut.Equals(methodName, StringComparison.Ordinal))
-            {
-                return BatchStreamState.Put;
-            }
-            else if (XmlConstants.HttpMethodMerge.Equals(methodName, StringComparison.Ordinal))
-            {
-                return BatchStreamState.Merge;
-            }
-            else
-            {
-                throw Error.BatchStreamInvalidHttpMethodName(methodName);
-            }
-        }
-
-        private static string VerifyBoundary(string boundary)
-        {
-            if ((null == boundary) || (70 < boundary.Length))
-            {
-                throw Error.BatchStreamInvalidDelimiter(boundary);
-            }
-
-            foreach (char c in boundary)
-            {
-                if ((127 < (int)c) || Char.IsWhiteSpace(c) || Char.IsControl(c))
-                {                    throw Error.BatchStreamInvalidDelimiter(boundary);
-                }
-            }
-
-            return "--" + boundary;
-        }
-
-        private void ClearPreviousOperationInformation()
-        {
-            this.contentHeaders = null;
-            this.contentStream = null;
-
-            this.statusCode = null;
-        }
-
-        private void Append(ref byte[] buffer, int count)
-        {
-            int oldSize = (null != buffer) ? buffer.Length : 0;
-
-            byte[] tmp = new byte[oldSize + count];
-            if (0 < oldSize)
-            {
-                Buffer.BlockCopy(buffer, 0, tmp, 0, oldSize);
-            }
-
-            Buffer.BlockCopy(this.byteBuffer, this.bytePosition, tmp, oldSize, count);
-            buffer = tmp;
-
-            this.totalCount += count;
-            this.bytePosition += count;
-            this.byteLength -= count;
-            this.batchLength -= count;
-
-            Debug.Assert(0 <= this.byteLength, "negative byteLength");
-            Debug.Assert(0 <= this.batchLength, "negative batchLength");
-        }
-
-        private void AssertOpen()
-        {
-            if (null == this.reader)
-            {
-                Error.ThrowObjectDisposed(this.GetType());
-            }
-        }
-
-        private bool ReadBuffer()
-        {
-            this.AssertOpen();
-
-            if (0 == this.byteLength)
-            {
-                this.bytePosition = 0;
-                this.byteLength = this.reader.Read(this.byteBuffer, this.bytePosition, this.byteBuffer.Length);
-                if (null != this.writer)
-                {
-                    this.writer.Write(this.byteBuffer, this.bytePosition, this.byteLength);
-                }
-
-                if (null == this.batchEncoding)
-                {
-                    this.batchEncoding = this.DetectEncoding();
-                }
-                else if (null != this.changesetEncoding)
-                {
-                    this.changesetEncoding = this.DetectEncoding();
-                }
-                else if (this.checkPreamble)
-                {
-                    bool match = true;
-                    byte[] preamble = this.batchEncoding.GetPreamble();
-                    if (preamble.Length <= this.byteLength)
-                    {
-                        for (int i = 0; i < preamble.Length; ++i)
-                        {
-                            if (preamble[i] != this.byteBuffer[i])
-                            {
-                                match = false;
-                                break;
-                            }
-                        }
-
-                        if (match)
-                        {
-                            this.byteLength -= preamble.Length;
-                            this.bytePosition += preamble.Length;
-                        }
-                    }
-
-                    this.checkPreamble = false;
-                }
-
-                return (0 < this.byteLength);
-            }
-
-            return true;
-        }
-
-        private String ReadLine()
-        {
-            if ((0 == this.batchLength) || !this.ReadBuffer())
-            {
-                return null;
-            }
-
-            byte[] buffer = null;
-            do
-            {
-                Debug.Assert(0 < this.byteLength, "out of bytes");
-                Debug.Assert(this.bytePosition + this.byteLength <= this.byteBuffer.Length, "byte tracking out of range");
-                int i = this.bytePosition;
-                int end = i + Math.Min(this.byteLength, this.batchLength);
-                do
-                {
-                    char ch = (char)this.byteBuffer[i];
-
-                    if (('\r' == ch) || ('\n' == ch))
-                    {
-                        string s;
-
-                        i -= this.bytePosition;
-                        if (null != buffer)
-                        {
-                            this.Append(ref buffer, i);
-                            s = this.Encoding.GetString(buffer, 0, buffer.Length);
-                        }
-                        else
-                        {
-                            s = this.Encoding.GetString(this.byteBuffer, this.bytePosition, i);
-
-                            this.totalCount += i;
-                            this.bytePosition += i;
-                            this.byteLength -= i;
-                            this.batchLength -= i;
-                        }
-
-                        this.totalCount++;
-                        this.bytePosition++;
-                        this.byteLength--;
-                        this.batchLength--;
-                        if (('\r' == ch) && ((0 < this.byteLength) || this.ReadBuffer()) && (0 < this.batchLength))
-                        {
-                            ch = (char)this.byteBuffer[this.bytePosition];
-                            if ('\n' == ch)
-                            {
-                                this.totalCount++;
-                                this.bytePosition++;
-                                this.byteLength--;
-                                this.batchLength--;
-                            }
-                        }
-
-                        Debug.Assert(0 <= this.byteLength, "negative byteLength");
-                        Debug.Assert(0 <= this.batchLength, "negative batchLength");
-                        return s;
-                    }
-
-                    i++;
-                }
-                while (i < end);
-
-                i -= this.bytePosition;
-                this.Append(ref buffer, i);
-            }
-            while (this.ReadBuffer() && (0 < this.batchLength));
-
-            Debug.Assert(0 <= this.byteLength, "negative byteLength");
-            Debug.Assert(0 <= this.batchLength, "negative batchLength");
-            return this.Encoding.GetString(buffer, 0, buffer.Length);
-        }
-
-        private Encoding DetectEncoding()
-        {
-            if (this.byteLength < 2)
-            {
-#if !ASTORIA_LIGHT                
-                return Encoding.ASCII;
-#else
-                return HttpProcessUtility.FallbackEncoding;
-#endif
-            }
-            else if (this.byteBuffer[0] == 0xFE && this.byteBuffer[1] == 0xFF)
-            {                this.bytePosition = 2;
-                this.byteLength -= 2;
-                return new UnicodeEncoding(true, true);
-            }
-            else if (this.byteBuffer[0] == 0xFF && this.byteBuffer[1] == 0xFE)
-            {                if (this.byteLength >= 4 &&
-                    this.byteBuffer[2] == 0 &&
-                    this.byteBuffer[3] == 0)
-                {
-#if !ASTORIA_LIGHT                    
-                this.bytePosition = 4;
-                    this.byteLength -= 4;
-                    return new UTF32Encoding(false, true);
-#else
-                    throw Error.NotSupported();
-#endif
-                }
-                else
-                {
-                    this.bytePosition = 2;
-                    this.byteLength -= 2;
-                    return new UnicodeEncoding(false, true);
-                }
-            }
-            else if (this.byteLength >= 3 &&
-                     this.byteBuffer[0] == 0xEF &&
-                     this.byteBuffer[1] == 0xBB &&
-                     this.byteBuffer[2] == 0xBF)
-            {                this.bytePosition = 3;
-                this.byteLength -= 3;
-                return Encoding.UTF8;
-            }
-            else if (this.byteLength >= 4 &&
-                     this.byteBuffer[0] == 0 &&
-                     this.byteBuffer[1] == 0 &&
-                     this.byteBuffer[2] == 0xFE &&
-                     this.byteBuffer[3] == 0xFF)
-            {
-#if !ASTORIA_LIGHT                
-                this.bytePosition = 4;
-                this.byteLength -= 4;
-                return new UTF32Encoding(true, true);
-#else
-                throw Error.NotSupported();
-#endif
-            }
-            else
-            {
-#if !ASTORIA_LIGHT                
-                return Encoding.ASCII;
-#else
-                return HttpProcessUtility.FallbackEncoding;
-#endif
-            }
-        }
-
-        private int ReadDelimiter(byte[] buffer, int offset, int count)
-        {
-            Debug.Assert(null != buffer, "null != buffer");
-            Debug.Assert(0 <= offset, "0 <= offset");
-            Debug.Assert(0 <= count, "0 <= count");
-            Debug.Assert(offset + count <= buffer.Length, "offset + count <= buffer.Length");
-            int copied = 0;
-
-            string boundary = null;
-            string boundary1 = this.batchBoundary;
-            string boundary2 = this.changesetBoundary;
-
-            while ((0 < count) && (0 < this.batchLength) && this.ReadBuffer())
-            {
-                int boundaryIndex = 0;
-                int boundary1Index = 0;
-                int boundary2Index = 0;
-
-                int size = Math.Min(Math.Min(count, this.byteLength), this.batchLength) + this.bytePosition;
-
-                byte[] data = this.byteBuffer;
-                for (int i = this.bytePosition; i < size; ++i)
-                {
-                    byte value = data[i];
-                    buffer[offset++] = value;
-                    if ((char)value == boundary1[boundary1Index])
-                    {
-                        if (boundary1.Length == ++boundary1Index)
-                        {                            size = (1 + i) - boundary1Index;
-                            offset -= boundary1Index;
-                            Debug.Assert(this.bytePosition <= size, "negative size");
-                            break;
-                        }
-                    }
-                    else
-                    {
-                        boundary1Index = 0;
-                    }
-
-                    if ((null != boundary2) && ((char)value == boundary2[boundary2Index]))
-                    {
-                        if (boundary2.Length == ++boundary2Index)
-                        {                            size = (1 + i) - boundary2Index;
-                            offset -= boundary2Index;
-                            Debug.Assert(this.bytePosition <= size, "negative size");
-                            break;
-                        }
-                    }
-                    else
-                    {
-                        boundary2Index = 0;
-                    }
-                }
-
-                size -= this.bytePosition;
-                Debug.Assert(0 <= size, "negative size");
-
-                if (boundary1Index < boundary2Index)
-                {
-                    boundaryIndex = boundary2Index;
-                    boundary = boundary2;
-                }
-                else
-                {
-                    Debug.Assert(null != boundary1, "batch boundary shouldn't be null");
-                    boundaryIndex = boundary1Index;
-                    boundary = boundary1;
-                }
-
-                if (size == this.batchLength)
-                {                    boundaryIndex = 0;
-                }
-
-                if ((0 < boundaryIndex) && (boundary.Length != boundaryIndex))
-                {                    if ((size + copied == boundaryIndex) && (boundaryIndex < this.byteLength))
-                    {
-                        throw Error.BatchStreamInternalBufferRequestTooSmall();
-                    }
-                    else
-                    {                        size -= boundaryIndex;
-                        offset -= boundaryIndex;
-                    }
-                }
-
-                this.totalCount += size;
-                this.bytePosition += size;
-                this.byteLength -= size;
-                this.batchLength -= size;
-
-                count -= size;
-                copied += size;
-
-                if (boundaryIndex > 0 && copied >= 2 && buffer[copied - 2] == '\r' && buffer[copied - 1] == '\n')
-                {
-                    copied -= 2;
-                }
-
-                if (boundary.Length == boundaryIndex)
-                {
-                    break;
-                }
-                else if (0 < boundaryIndex)
-                {
-                    if (boundaryIndex == this.byteLength)
-                    {                        if (0 < this.bytePosition)
-                        {                            Buffer.BlockCopy(data, this.bytePosition, data, 0, this.byteLength);
-                            this.bytePosition = 0;
-                        }
-
-                        int tmp = this.reader.Read(this.byteBuffer, this.byteLength, this.byteBuffer.Length - this.byteLength);
-                        if (null != this.writer)
-                        {
-                            this.writer.Write(this.byteBuffer, this.byteLength, tmp);
-                        }
-
-                        if (0 == tmp)
-                        {                            this.totalCount += boundaryIndex;
-                            this.bytePosition += boundaryIndex;
-                            this.byteLength -= boundaryIndex;
-                            this.batchLength -= boundaryIndex;
-
-                            offset += boundaryIndex;
-                            count -= boundaryIndex;
-                            copied += boundaryIndex;
-                            break;
-                        }
-
-                        this.byteLength += tmp;
-                    }
-                    else
-                    {                        break;
-                    }
-                }
-            }
-
-            return copied;
-        }
-
-        private int ReadLength(byte[] buffer, int offset, int count)
-        {
-            Debug.Assert(null != buffer, "null != buffer");
-            Debug.Assert(0 <= offset, "0 <= offset");
-            Debug.Assert(0 <= count, "0 <= count");
-            Debug.Assert(offset + count <= buffer.Length, "offset + count <= buffer.Length");
-            int copied = 0;
-
-            if (0 < this.byteLength)
-            {                int size = Math.Min(Math.Min(count, this.byteLength), this.batchLength);
-                Buffer.BlockCopy(this.byteBuffer, this.bytePosition, buffer, offset, size);
-                this.totalCount += size;
-                this.bytePosition += size;
-                this.byteLength -= size;
-                this.batchLength -= size;
-
-                offset += size;
-                count -= size;
-                copied = size;
-            }
-
-            if (0 < count && this.batchLength > 0)
-            {                int size = this.reader.Read(buffer, offset, Math.Min(count, this.batchLength));
-                if (null != this.writer)
-                {
-                    this.writer.Write(buffer, offset, size);
-                }
-
-                this.totalCount += size;
-                this.batchLength -= size;
-                copied += size;
-            }
-
-            Debug.Assert(0 <= this.byteLength, "negative byteLength");
-            Debug.Assert(0 <= this.batchLength, "negative batchLength");
-            return copied;
-        }
-
-        private void ReadContentHeaders()
-        {
-            this.contentHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            while (true)
-            {
-                string line = this.ReadLine();
-                if (0 < line.Length)
-                {
-                    int colon = line.IndexOf(':');
-                    if (colon <= 0)
-                    {                        throw Error.BatchStreamInvalidHeaderValueSpecified(line);
-                    }
-
-                    string name = line.Substring(0, colon).Trim();
-                    string value = line.Substring(colon + 1).Trim();
-                    this.contentHeaders.Add(name, value);
-                }
-                else
-                {
-                    break;
-                }
-            }
-        }
-
-        private void ReadHttpHeaders()
-        {
-            string line = this.ReadLine();
-
-
-            int index1 = line.IndexOf(' ');
-            if ((index1 <= 0) || ((line.Length - 3) <= index1))
-            {
-                throw Error.BatchStreamInvalidMethodHeaderSpecified(line);
-            }
-
-            int index2 = (this.batchRequest ? line.LastIndexOf(' ') : line.IndexOf(' ', index1 + 1));
-            if ((index2 < 0) || (index2 - index1 - 1 <= 0) || ((line.Length - 1) <= index2))
-            {
-                throw Error.BatchStreamInvalidMethodHeaderSpecified(line);
-            }
-
-            string segment1 = line.Substring(0, index1);            string segment2 = line.Substring(index1 + 1, index2 - index1 - 1);            string segment3 = line.Substring(index2 + 1);
-            #region validate HttpVersion
-            string httpVersion = this.batchRequest ? segment3 : segment1;
-            if (httpVersion != XmlConstants.HttpVersionInBatching)
-            {
-                throw Error.BatchStreamInvalidHttpVersionSpecified(httpVersion, XmlConstants.HttpVersionInBatching);
-            }
-            #endregion
-
-            this.ReadContentHeaders();
-
-            BatchStreamState state;
-            if (this.batchRequest)
-            {
-                state = GetStateBasedOnHttpMethodName(segment1);
-            }
-            else
-            {
-                state = (BatchStreamState.EndBatch == this.batchState) ? BatchStreamState.GetResponse : BatchStreamState.ChangeResponse;
-                this.statusCode = segment2;
-            }
-
-            #region validate state change
-            Debug.Assert(
-                BatchStreamState.EndBatch == this.batchState ||
-                BatchStreamState.EndChangeSet == this.batchState,
-                "unexpected BatchStreamState");
-
-            if (this.batchState == BatchStreamState.EndBatch)
-            {
-                if ((this.batchRequest && (state == BatchStreamState.Get)) ||
-                    (!this.batchRequest && (state == BatchStreamState.GetResponse)))
-                {
-                    this.batchState = state;
-                }
-                else
-                {
-                    throw Error.BatchStreamOnlyGETOperationsCanBeSpecifiedInBatch();
-                }
-            }
-            else if (this.batchState == BatchStreamState.EndChangeSet)
-            {
-                if ((this.batchRequest && ((BatchStreamState.Post == state) || (BatchStreamState.Put == state) || (BatchStreamState.Delete == state) || (BatchStreamState.Merge == state))) ||
-                    (!this.batchRequest && (state == BatchStreamState.ChangeResponse)))
-                {
-                    this.batchState = state;
-                }
-                else
-                {
-                    this.batchState = BatchStreamState.Post;
-
-                    throw Error.BatchStreamGetMethodNotSupportInChangeset();
-                }
-            }
-            else
-            {                throw Error.BatchStreamInvalidOperationHeaderSpecified();
-            }
-            #endregion
-        }
-
-        private sealed class StreamWithDelimiter : StreamWithLength
-        {
-            internal StreamWithDelimiter(BatchStream stream)
-                : base(stream, Int32.MaxValue)
-            {
-            }
-
-            public override int Read(byte[] buffer, int offset, int count)
-            {
-                if (null == this.Target)
-                {
-                    Error.ThrowObjectDisposed(this.GetType());
-                }
-
-                int result = this.Target.ReadDelimiter(buffer, offset, count);
-                return result;
-            }
-        }
-
-        private class StreamWithLength : Stream
-        {
-            private BatchStream target;
-
-            private int length;
-
-            internal StreamWithLength(BatchStream stream, int contentLength)
-            {
-                Debug.Assert(null != stream, "null != stream");
-                Debug.Assert(0 < contentLength, "0 < contentLength");
-                this.target = stream;
-                this.length = contentLength;
-            }
-
-            public override bool CanRead
-            {
-                get { return (null != this.target && this.target.CanRead); }
-            }
-
-            public override bool CanSeek
-            {
-                get { return false; }
-            }
-
-            public override bool CanWrite
-            {
-                get { return false; }
-            }
-
-            public override long Length
-            {
-                get { throw Error.NotSupported(); }
-            }
-
-            public override long Position
-            {
-                get { throw Error.NotSupported(); }
-                set { throw Error.NotSupported(); }
-            }
-
-            internal BatchStream Target
-            {
-                get { return this.target; }
-            }
-
-            public override void Flush()
-            {
-            }
-
-#if DEBUG && !ASTORIA_LIGHT            
-            public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
-            {
-                throw Error.NotSupported();
-            }
-#endif
-
-            public override int Read(byte[] buffer, int offset, int count)
-            {
-                if (null == this.target)
-                {
-                    Error.ThrowObjectDisposed(this.GetType());
-                }
-
-                int result = this.target.ReadLength(buffer, offset, Math.Min(count, this.length));
-                this.length -= result;
-                Debug.Assert(0 <= this.length, "Read beyond expected length");
-                return result;
-            }
-
-            public override long Seek(long offset, SeekOrigin origin)
-            {
-                throw Error.NotSupported();
-            }
-
-            public override void SetLength(long value)
-            {
-                throw Error.NotSupported();
-            }
-
-            public override void Write(byte[] buffer, int offset, int count)
-            {
-                throw Error.NotSupported();
-            }
-
-            protected override void Dispose(bool disposing)
-            {
-                base.Dispose(disposing);
-
-                if (disposing && (null != this.target))
-                {
-                    if (this.target.disposeWithContentStreamDispose)
-                    {
-                        this.target.contentStream = null;
-                        this.target.Dispose();
-                    }
-                    else if (0 < this.length)
-                    {
-                        if (null != this.target.reader)
-                        {
-                            this.target.Seek(this.length, SeekOrigin.Current);
-                        }
-
-                        this.length = 0;
-                    }
-
-                    this.target.ClearPreviousOperationInformation();
-                }
-
-                this.target = null;
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Globalization;
+    using System.IO;
+    using System.Text;
+
+#if !ASTORIA_LIGHT    
+    using System.Net;
+#else
+    using System.Data.Services.Http;
+#endif
+
+    internal class BatchStream : Stream
+    {
+        private const int DefaultBufferSize = 8000;
+
+        private readonly bool batchRequest;
+
+        private readonly byte[] byteBuffer;
+
+        private Stream reader;
+
+        private int byteLength;
+
+        private int bytePosition;
+
+        private Encoding batchEncoding;
+
+        private bool checkPreamble;
+
+        private string batchBoundary;
+
+        private int batchLength;
+
+        private int totalCount;
+
+        private string changesetBoundary;
+
+        private Encoding changesetEncoding;
+
+        private Dictionary<string, string> contentHeaders;
+
+        private Stream contentStream;
+
+        private bool disposeWithContentStreamDispose;
+
+
+        private string statusCode;
+
+        private BatchStreamState batchState;
+
+#if DEBUG && !ASTORIA_LIGHT
+        private MemoryStream writer = new MemoryStream();
+#else
+#pragma warning disable 649
+        private MemoryStream writer;
+#pragma warning restore 649
+#endif
+
+        internal BatchStream(Stream stream, string boundary, Encoding batchEncoding, bool requestStream)
+        {
+            Debug.Assert(null != stream, "null stream");
+
+            this.reader = stream;
+            this.byteBuffer = new byte[DefaultBufferSize];
+            this.batchBoundary = VerifyBoundary(boundary);
+            this.batchState = BatchStreamState.StartBatch;
+            this.batchEncoding = batchEncoding;
+            this.checkPreamble = (null != batchEncoding);
+            this.batchRequest = requestStream;
+        }
+
+        #region batch properties ContentHeaders, ContentStream, Encoding, Sate
+        public Dictionary<string, string> ContentHeaders
+        {
+            get { return this.contentHeaders; }
+        }
+
+        public Encoding Encoding
+        {
+            get { return this.changesetEncoding ?? this.batchEncoding; }
+        }
+
+        public BatchStreamState State
+        {
+            get { return this.batchState; }
+        }
+        #endregion
+
+        #region Stream properties
+        public override bool CanRead
+        {
+            get { return (null != this.reader && this.reader.CanRead); }
+        }
+
+        public override bool CanSeek
+        {
+            get { return false; }
+        }
+
+        public override bool CanWrite
+        {
+            get { return false; }
+        }
+
+        public override long Length
+        {
+            get { throw Error.NotSupported(); }
+        }
+
+        public override long Position
+        {
+            get { throw Error.NotSupported(); }
+            set { throw Error.NotSupported(); }
+        }
+        #endregion
+
+        #region Stream methods
+        public override void Flush()
+        {
+            this.reader.Flush();
+        }
+
+        public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+        {
+            throw Error.NotSupported();
+        }
+
+        public override int Read(byte[] buffer, int offset, int count)
+        {
+            throw Error.NotSupported();
+        }
+
+        public override long Seek(long offset, SeekOrigin origin)
+        {
+            this.AssertOpen();
+
+            if (offset < 0)
+            {
+                throw Error.ArgumentOutOfRange("offset");
+            }
+
+            if (SeekOrigin.Current != origin)
+            {
+                throw Error.ArgumentOutOfRange("origin");
+            }
+
+            if (Int32.MaxValue == offset)
+            {                byte[] buffer = new byte[256];                while (0 < this.ReadDelimiter(buffer, 0, buffer.Length))
+                {
+                }
+            }
+            else if (0 < offset)
+            {                do
+                {
+                    int count = Math.Min(checked((int)offset), Math.Min(this.byteLength, this.batchLength));
+                    this.totalCount += count;
+                    this.bytePosition += count;
+                    this.byteLength -= count;
+                    this.batchLength -= count;
+                    offset -= count;
+
+                }
+                while ((0 < offset) && (this.batchLength != 0) && this.ReadBuffer());
+            }
+
+            Debug.Assert(0 <= this.byteLength, "negative byteLength");
+            Debug.Assert(0 <= this.batchLength, "negative batchLength");
+            return 0;
+        }
+
+        public override void SetLength(long value)
+        {
+            throw Error.NotSupported();
+        }
+
+        public override void Write(byte[] buffer, int offset, int count)
+        {
+            throw Error.NotSupported();
+        }
+        #endregion
+
+        internal static bool GetBoundaryAndEncodingFromMultipartMixedContentType(string contentType, out string boundary, out Encoding encoding)
+        {
+            boundary = null;
+            encoding = null;
+
+            string mime;
+            KeyValuePair<string, string>[] parameters = HttpProcessUtility.ReadContentType(contentType, out mime, out encoding);
+
+            if (String.Equals(XmlConstants.MimeMultiPartMixed, mime, StringComparison.OrdinalIgnoreCase))
+            {
+                if (null != parameters)
+                {
+                    foreach (KeyValuePair<string, string> parameter in parameters)
+                    {
+                        if (String.Equals(parameter.Key, XmlConstants.HttpMultipartBoundary, StringComparison.OrdinalIgnoreCase))
+                        {
+                            if (boundary != null)
+                            {                                boundary = null;
+                                break;
+                            }
+
+                            boundary = parameter.Value;
+                        }
+                    }
+                }
+
+                if (String.IsNullOrEmpty(boundary))
+                {                    throw Error.BatchStreamMissingBoundary();
+                }
+            }
+
+            return (null != boundary);
+        }
+
+
+        internal string GetResponseVersion()
+        {
+            string result;
+            this.ContentHeaders.TryGetValue(XmlConstants.HttpDataServiceVersion, out result);
+            return result;
+        }
+
+        internal HttpStatusCode GetStatusCode()
+        {
+            return (HttpStatusCode)(null != this.statusCode ? Int32.Parse(this.statusCode, CultureInfo.InvariantCulture) : 500);
+        }
+
+        internal bool MoveNext()
+        {
+            #region dispose previous content stream
+            if (null == this.reader || this.disposeWithContentStreamDispose)
+            {
+                return false;
+            }
+
+            if (null != this.contentStream)
+            {
+                this.contentStream.Dispose();
+            }
+
+            Debug.Assert(0 <= this.byteLength, "negative byteLength");
+            Debug.Assert(0 <= this.batchLength, "negative batchLength");
+            #endregion
+
+            #region initialize start state to EndBatch or EndChangeSet
+            switch (this.batchState)
+            {
+                case BatchStreamState.EndBatch:
+                    Debug.Assert(null == this.batchBoundary, "non-null batch boundary");
+                    Debug.Assert(null == this.changesetBoundary, "non-null changesetBoundary boundary");
+                    throw Error.BatchStreamInvalidBatchFormat();
+
+                case BatchStreamState.Get:
+                case BatchStreamState.GetResponse:
+                    this.ClearPreviousOperationInformation();
+                    goto case BatchStreamState.StartBatch;
+
+                case BatchStreamState.StartBatch:
+                case BatchStreamState.EndChangeSet:
+                    Debug.Assert(null != this.batchBoundary, "null batch boundary");
+                    Debug.Assert(null == this.changesetBoundary, "non-null changeset boundary");
+                    this.batchState = BatchStreamState.EndBatch;
+                    this.batchLength = Int32.MaxValue;
+                    break;
+
+                case BatchStreamState.BeginChangeSet:
+                    Debug.Assert(null != this.batchBoundary, "null batch boundary");
+                    Debug.Assert(null != this.contentHeaders, "null contentHeaders");
+                    Debug.Assert(null != this.changesetBoundary, "null changeset boundary");
+                    this.contentHeaders = null;
+                    this.changesetEncoding = null;
+                    this.batchState = BatchStreamState.EndChangeSet;
+                    break;
+
+                case BatchStreamState.ChangeResponse:
+                case BatchStreamState.Delete:
+                    Debug.Assert(null != this.changesetBoundary, "null changeset boundary");
+                    this.ClearPreviousOperationInformation();
+                    this.batchState = BatchStreamState.EndChangeSet;
+                    break;
+
+                case BatchStreamState.Post:
+                case BatchStreamState.Put:
+                case BatchStreamState.Merge:
+                    Debug.Assert(null != this.changesetBoundary, "null changeset boundary");
+                    this.batchState = BatchStreamState.EndChangeSet;
+                    break;
+
+                default:
+                    Debug.Assert(false, "unknown state");
+                    throw Error.BatchStreamInvalidBatchFormat();
+            }
+
+            Debug.Assert(null == this.contentHeaders, "non-null content headers");
+            Debug.Assert(null == this.contentStream, "non-null content stream");
+
+            Debug.Assert(null == this.statusCode, "non-null statusCode");
+
+            Debug.Assert(
+                this.batchState == BatchStreamState.EndBatch ||
+                this.batchState == BatchStreamState.EndChangeSet,
+                "unexpected state at start");
+            #endregion
+
+            #region read --delimiter
+            string delimiter = this.ReadLine();
+            if (String.IsNullOrEmpty(delimiter))
+            {                delimiter = this.ReadLine();
+            }
+
+            if (String.IsNullOrEmpty(delimiter))
+            {
+                throw Error.BatchStreamInvalidBatchFormat();
+            }
+
+            if (delimiter.EndsWith("--", StringComparison.Ordinal))
+            {
+                delimiter = delimiter.Substring(0, delimiter.Length - 2);
+
+                if ((null != this.changesetBoundary) && (delimiter == this.changesetBoundary))
+                {
+                    Debug.Assert(this.batchState == BatchStreamState.EndChangeSet, "bad changeset boundary state");
+
+                    this.changesetBoundary = null;
+                    return true;
+                }
+                else if (delimiter == this.batchBoundary)
+                {
+                    if (BatchStreamState.EndChangeSet == this.batchState)
+                    {                        throw Error.BatchStreamMissingEndChangesetDelimiter();
+                    }
+
+                    this.changesetBoundary = null;
+                    this.batchBoundary = null;
+                    if (this.byteLength != 0)
+                    {
+                        throw Error.BatchStreamMoreDataAfterEndOfBatch();
+                    }
+
+                    return false;
+                }
+                else
+                {
+                    throw Error.BatchStreamInvalidDelimiter(delimiter);
+                }
+            }
+            else if ((null != this.changesetBoundary) && (delimiter == this.changesetBoundary))
+            {
+                Debug.Assert(this.batchState == BatchStreamState.EndChangeSet, "bad changeset boundary state");
+            }
+            else if (delimiter == this.batchBoundary)
+            {
+                if (this.batchState != BatchStreamState.EndBatch)
+                {
+                    if (this.batchState == BatchStreamState.EndChangeSet)
+                    {                        throw Error.BatchStreamMissingEndChangesetDelimiter();
+                    }
+                    else
+                    {
+                        throw Error.BatchStreamInvalidBatchFormat();
+                    }
+                }
+            }
+            else
+            {                throw Error.BatchStreamInvalidDelimiter(delimiter);
+            }
+
+            #endregion
+
+            #region read header with values in this form (([^:]*:.*)\r\n)*\r\n
+            this.ReadContentHeaders();
+            #endregion
+
+            #region should start changeset?
+            string contentType;
+            bool readHttpHeaders = false;
+            if (this.contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType))
+            {
+                if (String.Equals(contentType, XmlConstants.MimeApplicationHttp, StringComparison.OrdinalIgnoreCase))
+                {
+                    if (this.contentHeaders.Count != 2)
+                    {
+                        throw Error.BatchStreamInvalidNumberOfHeadersAtOperationStart(
+                            XmlConstants.HttpContentType,
+                            XmlConstants.HttpContentTransferEncoding);
+                    }
+
+                    string transferEncoding;
+                    if (!this.contentHeaders.TryGetValue(XmlConstants.HttpContentTransferEncoding, out transferEncoding) ||
+                        XmlConstants.BatchRequestContentTransferEncoding != transferEncoding)
+                    {
+                        throw Error.BatchStreamMissingOrInvalidContentEncodingHeader(
+                            XmlConstants.HttpContentTransferEncoding,
+                            XmlConstants.BatchRequestContentTransferEncoding);
+                    }
+
+                    readHttpHeaders = true;
+                }
+                else if (BatchStreamState.EndBatch == this.batchState)
+                {
+                    string boundary;
+                    Encoding encoding;
+                    if (GetBoundaryAndEncodingFromMultipartMixedContentType(contentType, out boundary, out encoding))
+                    {
+                        this.changesetBoundary = VerifyBoundary(boundary);
+                        this.changesetEncoding = encoding;
+                        this.batchState = BatchStreamState.BeginChangeSet;
+                    }
+                    else
+                    {
+                        throw Error.BatchStreamInvalidContentTypeSpecified(
+                            XmlConstants.HttpContentType,
+                            contentType,
+                            XmlConstants.MimeApplicationHttp,
+                            XmlConstants.MimeMultiPartMixed);
+                    }
+
+                    if (this.contentHeaders.Count > 2 ||
+                        (this.contentHeaders.Count == 2 && !this.contentHeaders.ContainsKey(XmlConstants.HttpContentLength)))
+                    {
+                        throw Error.BatchStreamInvalidNumberOfHeadersAtChangeSetStart(XmlConstants.HttpContentType, XmlConstants.HttpContentLength);
+                    }
+                }
+                else
+                {
+                    throw Error.BatchStreamInvalidContentTypeSpecified(
+                        XmlConstants.HttpContentType,
+                        contentType,
+                        XmlConstants.MimeApplicationHttp,
+                        XmlConstants.MimeMultiPartMixed);
+                }
+            }
+            else
+            {
+                throw Error.BatchStreamMissingContentTypeHeader(XmlConstants.HttpContentType);
+            }
+            #endregion
+
+            #region what is the operation and uri?
+            if (readHttpHeaders)
+            {
+                this.ReadHttpHeaders();
+
+                this.contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType);
+            }
+            #endregion
+
+
+            #region does content have a fixed length?
+            string text = null;
+            int length = -1;
+            if (this.contentHeaders.TryGetValue(XmlConstants.HttpContentLength, out text))
+            {
+                length = Int32.Parse(text, CultureInfo.InvariantCulture);
+                if (length < 0)
+                {
+                    throw Error.BatchStreamInvalidContentLengthSpecified(text);
+                }
+
+                if (this.batchState == BatchStreamState.BeginChangeSet)
+                {
+                    this.batchLength = length;
+                }
+                else if (length != 0)
+                {
+                    Debug.Assert(
+                        this.batchState == BatchStreamState.Delete ||
+                        this.batchState == BatchStreamState.Get ||
+                        this.batchState == BatchStreamState.Post ||
+                        this.batchState == BatchStreamState.Put ||
+                        this.batchState == BatchStreamState.Merge,
+                        "unexpected contentlength location");
+                    this.contentStream = new StreamWithLength(this, length);
+                }
+            }
+            else
+            {
+                if (this.batchState == BatchStreamState.EndBatch)
+                {
+                    this.batchLength = Int32.MaxValue;
+                }
+
+                if (this.batchState != BatchStreamState.BeginChangeSet)
+                {
+                    this.contentStream = new StreamWithDelimiter(this);
+                }
+            }
+
+            #endregion
+
+            Debug.Assert(
+                this.batchState == BatchStreamState.BeginChangeSet ||
+                (this.batchRequest && (this.batchState == BatchStreamState.Delete ||
+                                       this.batchState == BatchStreamState.Get ||
+                                       this.batchState == BatchStreamState.Post ||
+                                       this.batchState == BatchStreamState.Put ||
+                                       this.batchState == BatchStreamState.Merge)) ||
+                (!this.batchRequest && (this.batchState == BatchStreamState.GetResponse ||
+                                        this.batchState == BatchStreamState.ChangeResponse)),
+                "unexpected state at return");
+
+            #region enforce if contentStream is expected, caller needs to enforce if contentStream is not expected
+            if (null == this.contentStream)
+            {
+                switch (this.batchState)
+                {
+                    case BatchStreamState.BeginChangeSet:
+                    case BatchStreamState.Delete:
+                    case BatchStreamState.Get:
+                    case BatchStreamState.ChangeResponse:                    case BatchStreamState.GetResponse:                        break;
+
+                    case BatchStreamState.Post:
+                    case BatchStreamState.Put:
+                    case BatchStreamState.Merge:
+                    default:
+                        throw Error.BatchStreamContentExpected(this.batchState);
+                }
+            }
+            #endregion
+
+            #region enforce if contentType not is expected, caller needs to enforce if contentType is expected
+            if (!String.IsNullOrEmpty(contentType))
+            {
+                switch (this.batchState)
+                {
+                    case BatchStreamState.BeginChangeSet:
+                    case BatchStreamState.Post:
+                    case BatchStreamState.Put:
+                    case BatchStreamState.Merge:
+                    case BatchStreamState.GetResponse:
+                    case BatchStreamState.ChangeResponse:
+                        break;
+
+                    case BatchStreamState.Get:                    case BatchStreamState.Delete:                    default:
+                        throw Error.BatchStreamContentUnexpected(this.batchState);
+                }
+            }
+            #endregion
+
+            return true;
+        }
+
+        internal Stream GetContentStream()
+        {
+            return this.contentStream;
+        }
+
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing)
+            {
+                if (null != this.contentStream)
+                {                    this.disposeWithContentStreamDispose = true;
+                }
+                else
+                {
+                    this.byteLength = 0;
+                    if (null != this.reader)
+                    {
+                        this.reader.Dispose();
+                        this.reader = null;
+                    }
+
+                    this.contentHeaders = null;
+                    if (null != this.contentStream)
+                    {
+                        this.contentStream.Dispose();
+                    }
+
+                    if (null != this.writer)
+                    {
+                        this.writer.Dispose();
+                    }
+                }
+            }
+
+            base.Dispose(disposing);
+        }
+
+        private static BatchStreamState GetStateBasedOnHttpMethodName(string methodName)
+        {
+            if (XmlConstants.HttpMethodGet.Equals(methodName, StringComparison.Ordinal))
+            {
+                return BatchStreamState.Get;
+            }
+            else if (XmlConstants.HttpMethodDelete.Equals(methodName, StringComparison.Ordinal))
+            {
+                return BatchStreamState.Delete;
+            }
+            else if (XmlConstants.HttpMethodPost.Equals(methodName, StringComparison.Ordinal))
+            {
+                return BatchStreamState.Post;
+            }
+            else if (XmlConstants.HttpMethodPut.Equals(methodName, StringComparison.Ordinal))
+            {
+                return BatchStreamState.Put;
+            }
+            else if (XmlConstants.HttpMethodMerge.Equals(methodName, StringComparison.Ordinal))
+            {
+                return BatchStreamState.Merge;
+            }
+            else
+            {
+                throw Error.BatchStreamInvalidHttpMethodName(methodName);
+            }
+        }
+
+        private static string VerifyBoundary(string boundary)
+        {
+            if ((null == boundary) || (70 < boundary.Length))
+            {
+                throw Error.BatchStreamInvalidDelimiter(boundary);
+            }
+
+            foreach (char c in boundary)
+            {
+                if ((127 < (int)c) || Char.IsWhiteSpace(c) || Char.IsControl(c))
+                {                    throw Error.BatchStreamInvalidDelimiter(boundary);
+                }
+            }
+
+            return "--" + boundary;
+        }
+
+        private void ClearPreviousOperationInformation()
+        {
+            this.contentHeaders = null;
+            this.contentStream = null;
+
+            this.statusCode = null;
+        }
+
+        private void Append(ref byte[] buffer, int count)
+        {
+            int oldSize = (null != buffer) ? buffer.Length : 0;
+
+            byte[] tmp = new byte[oldSize + count];
+            if (0 < oldSize)
+            {
+                Buffer.BlockCopy(buffer, 0, tmp, 0, oldSize);
+            }
+
+            Buffer.BlockCopy(this.byteBuffer, this.bytePosition, tmp, oldSize, count);
+            buffer = tmp;
+
+            this.totalCount += count;
+            this.bytePosition += count;
+            this.byteLength -= count;
+            this.batchLength -= count;
+
+            Debug.Assert(0 <= this.byteLength, "negative byteLength");
+            Debug.Assert(0 <= this.batchLength, "negative batchLength");
+        }
+
+        private void AssertOpen()
+        {
+            if (null == this.reader)
+            {
+                Error.ThrowObjectDisposed(this.GetType());
+            }
+        }
+
+        private bool ReadBuffer()
+        {
+            this.AssertOpen();
+
+            if (0 == this.byteLength)
+            {
+                this.bytePosition = 0;
+                this.byteLength = this.reader.Read(this.byteBuffer, this.bytePosition, this.byteBuffer.Length);
+                if (null != this.writer)
+                {
+                    this.writer.Write(this.byteBuffer, this.bytePosition, this.byteLength);
+                }
+
+                if (null == this.batchEncoding)
+                {
+                    this.batchEncoding = this.DetectEncoding();
+                }
+                else if (null != this.changesetEncoding)
+                {
+                    this.changesetEncoding = this.DetectEncoding();
+                }
+                else if (this.checkPreamble)
+                {
+                    bool match = true;
+                    byte[] preamble = this.batchEncoding.GetPreamble();
+                    if (preamble.Length <= this.byteLength)
+                    {
+                        for (int i = 0; i < preamble.Length; ++i)
+                        {
+                            if (preamble[i] != this.byteBuffer[i])
+                            {
+                                match = false;
+                                break;
+                            }
+                        }
+
+                        if (match)
+                        {
+                            this.byteLength -= preamble.Length;
+                            this.bytePosition += preamble.Length;
+                        }
+                    }
+
+                    this.checkPreamble = false;
+                }
+
+                return (0 < this.byteLength);
+            }
+
+            return true;
+        }
+
+        private String ReadLine()
+        {
+            if ((0 == this.batchLength) || !this.ReadBuffer())
+            {
+                return null;
+            }
+
+            byte[] buffer = null;
+            do
+            {
+                Debug.Assert(0 < this.byteLength, "out of bytes");
+                Debug.Assert(this.bytePosition + this.byteLength <= this.byteBuffer.Length, "byte tracking out of range");
+                int i = this.bytePosition;
+                int end = i + Math.Min(this.byteLength, this.batchLength);
+                do
+                {
+                    char ch = (char)this.byteBuffer[i];
+
+                    if (('\r' == ch) || ('\n' == ch))
+                    {
+                        string s;
+
+                        i -= this.bytePosition;
+                        if (null != buffer)
+                        {
+                            this.Append(ref buffer, i);
+                            s = this.Encoding.GetString(buffer, 0, buffer.Length);
+                        }
+                        else
+                        {
+                            s = this.Encoding.GetString(this.byteBuffer, this.bytePosition, i);
+
+                            this.totalCount += i;
+                            this.bytePosition += i;
+                            this.byteLength -= i;
+                            this.batchLength -= i;
+                        }
+
+                        this.totalCount++;
+                        this.bytePosition++;
+                        this.byteLength--;
+                        this.batchLength--;
+                        if (('\r' == ch) && ((0 < this.byteLength) || this.ReadBuffer()) && (0 < this.batchLength))
+                        {
+                            ch = (char)this.byteBuffer[this.bytePosition];
+                            if ('\n' == ch)
+                            {
+                                this.totalCount++;
+                                this.bytePosition++;
+                                this.byteLength--;
+                                this.batchLength--;
+                            }
+                        }
+
+                        Debug.Assert(0 <= this.byteLength, "negative byteLength");
+                        Debug.Assert(0 <= this.batchLength, "negative batchLength");
+                        return s;
+                    }
+
+                    i++;
+                }
+                while (i < end);
+
+                i -= this.bytePosition;
+                this.Append(ref buffer, i);
+            }
+            while (this.ReadBuffer() && (0 < this.batchLength));
+
+            Debug.Assert(0 <= this.byteLength, "negative byteLength");
+            Debug.Assert(0 <= this.batchLength, "negative batchLength");
+            return this.Encoding.GetString(buffer, 0, buffer.Length);
+        }
+
+        private Encoding DetectEncoding()
+        {
+            if (this.byteLength < 2)
+            {
+#if !ASTORIA_LIGHT                
+                return Encoding.ASCII;
+#else
+                return HttpProcessUtility.FallbackEncoding;
+#endif
+            }
+            else if (this.byteBuffer[0] == 0xFE && this.byteBuffer[1] == 0xFF)
+            {                this.bytePosition = 2;
+                this.byteLength -= 2;
+                return new UnicodeEncoding(true, true);
+            }
+            else if (this.byteBuffer[0] == 0xFF && this.byteBuffer[1] == 0xFE)
+            {                if (this.byteLength >= 4 &&
+                    this.byteBuffer[2] == 0 &&
+                    this.byteBuffer[3] == 0)
+                {
+#if !ASTORIA_LIGHT                    
+                this.bytePosition = 4;
+                    this.byteLength -= 4;
+                    return new UTF32Encoding(false, true);
+#else
+                    throw Error.NotSupported();
+#endif
+                }
+                else
+                {
+                    this.bytePosition = 2;
+                    this.byteLength -= 2;
+                    return new UnicodeEncoding(false, true);
+                }
+            }
+            else if (this.byteLength >= 3 &&
+                     this.byteBuffer[0] == 0xEF &&
+                     this.byteBuffer[1] == 0xBB &&
+                     this.byteBuffer[2] == 0xBF)
+            {                this.bytePosition = 3;
+                this.byteLength -= 3;
+                return Encoding.UTF8;
+            }
+            else if (this.byteLength >= 4 &&
+                     this.byteBuffer[0] == 0 &&
+                     this.byteBuffer[1] == 0 &&
+                     this.byteBuffer[2] == 0xFE &&
+                     this.byteBuffer[3] == 0xFF)
+            {
+#if !ASTORIA_LIGHT                
+                this.bytePosition = 4;
+                this.byteLength -= 4;
+                return new UTF32Encoding(true, true);
+#else
+                throw Error.NotSupported();
+#endif
+            }
+            else
+            {
+#if !ASTORIA_LIGHT                
+                return Encoding.ASCII;
+#else
+                return HttpProcessUtility.FallbackEncoding;
+#endif
+            }
+        }
+
+        private int ReadDelimiter(byte[] buffer, int offset, int count)
+        {
+            Debug.Assert(null != buffer, "null != buffer");
+            Debug.Assert(0 <= offset, "0 <= offset");
+            Debug.Assert(0 <= count, "0 <= count");
+            Debug.Assert(offset + count <= buffer.Length, "offset + count <= buffer.Length");
+            int copied = 0;
+
+            string boundary = null;
+            string boundary1 = this.batchBoundary;
+            string boundary2 = this.changesetBoundary;
+
+            while ((0 < count) && (0 < this.batchLength) && this.ReadBuffer())
+            {
+                int boundaryIndex = 0;
+                int boundary1Index = 0;
+                int boundary2Index = 0;
+
+                int size = Math.Min(Math.Min(count, this.byteLength), this.batchLength) + this.bytePosition;
+
+                byte[] data = this.byteBuffer;
+                for (int i = this.bytePosition; i < size; ++i)
+                {
+                    byte value = data[i];
+                    buffer[offset++] = value;
+                    if ((char)value == boundary1[boundary1Index])
+                    {
+                        if (boundary1.Length == ++boundary1Index)
+                        {                            size = (1 + i) - boundary1Index;
+                            offset -= boundary1Index;
+                            Debug.Assert(this.bytePosition <= size, "negative size");
+                            break;
+                        }
+                    }
+                    else
+                    {
+                        boundary1Index = 0;
+                    }
+
+                    if ((null != boundary2) && ((char)value == boundary2[boundary2Index]))
+                    {
+                        if (boundary2.Length == ++boundary2Index)
+                        {                            size = (1 + i) - boundary2Index;
+                            offset -= boundary2Index;
+                            Debug.Assert(this.bytePosition <= size, "negative size");
+                            break;
+                        }
+                    }
+                    else
+                    {
+                        boundary2Index = 0;
+                    }
+                }
+
+                size -= this.bytePosition;
+                Debug.Assert(0 <= size, "negative size");
+
+                if (boundary1Index < boundary2Index)
+                {
+                    boundaryIndex = boundary2Index;
+                    boundary = boundary2;
+                }
+                else
+                {
+                    Debug.Assert(null != boundary1, "batch boundary shouldn't be null");
+                    boundaryIndex = boundary1Index;
+                    boundary = boundary1;
+                }
+
+                if (size == this.batchLength)
+                {                    boundaryIndex = 0;
+                }
+
+                if ((0 < boundaryIndex) && (boundary.Length != boundaryIndex))
+                {                    if ((size + copied == boundaryIndex) && (boundaryIndex < this.byteLength))
+                    {
+                        throw Error.BatchStreamInternalBufferRequestTooSmall();
+                    }
+                    else
+                    {                        size -= boundaryIndex;
+                        offset -= boundaryIndex;
+                    }
+                }
+
+                this.totalCount += size;
+                this.bytePosition += size;
+                this.byteLength -= size;
+                this.batchLength -= size;
+
+                count -= size;
+                copied += size;
+
+                if (boundaryIndex > 0 && copied >= 2 && buffer[copied - 2] == '\r' && buffer[copied - 1] == '\n')
+                {
+                    copied -= 2;
+                }
+
+                if (boundary.Length == boundaryIndex)
+                {
+                    break;
+                }
+                else if (0 < boundaryIndex)
+                {
+                    if (boundaryIndex == this.byteLength)
+                    {                        if (0 < this.bytePosition)
+                        {                            Buffer.BlockCopy(data, this.bytePosition, data, 0, this.byteLength);
+                            this.bytePosition = 0;
+                        }
+
+                        int tmp = this.reader.Read(this.byteBuffer, this.byteLength, this.byteBuffer.Length - this.byteLength);
+                        if (null != this.writer)
+                        {
+                            this.writer.Write(this.byteBuffer, this.byteLength, tmp);
+                        }
+
+                        if (0 == tmp)
+                        {                            this.totalCount += boundaryIndex;
+                            this.bytePosition += boundaryIndex;
+                            this.byteLength -= boundaryIndex;
+                            this.batchLength -= boundaryIndex;
+
+                            offset += boundaryIndex;
+                            count -= boundaryIndex;
+                            copied += boundaryIndex;
+                            break;
+                        }
+
+                        this.byteLength += tmp;
+                    }
+                    else
+                    {                        break;
+                    }
+                }
+            }
+
+            return copied;
+        }
+
+        private int ReadLength(byte[] buffer, int offset, int count)
+        {
+            Debug.Assert(null != buffer, "null != buffer");
+            Debug.Assert(0 <= offset, "0 <= offset");
+            Debug.Assert(0 <= count, "0 <= count");
+            Debug.Assert(offset + count <= buffer.Length, "offset + count <= buffer.Length");
+            int copied = 0;
+
+            if (0 < this.byteLength)
+            {                int size = Math.Min(Math.Min(count, this.byteLength), this.batchLength);
+                Buffer.BlockCopy(this.byteBuffer, this.bytePosition, buffer, offset, size);
+                this.totalCount += size;
+                this.bytePosition += size;
+                this.byteLength -= size;
+                this.batchLength -= size;
+
+                offset += size;
+                count -= size;
+                copied = size;
+            }
+
+            if (0 < count && this.batchLength > 0)
+            {                int size = this.reader.Read(buffer, offset, Math.Min(count, this.batchLength));
+                if (null != this.writer)
+                {
+                    this.writer.Write(buffer, offset, size);
+                }
+
+                this.totalCount += size;
+                this.batchLength -= size;
+                copied += size;
+            }
+
+            Debug.Assert(0 <= this.byteLength, "negative byteLength");
+            Debug.Assert(0 <= this.batchLength, "negative batchLength");
+            return copied;
+        }
+
+        private void ReadContentHeaders()
+        {
+            this.contentHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+            while (true)
+            {
+                string line = this.ReadLine();
+                if (0 < line.Length)
+                {
+                    int colon = line.IndexOf(':');
+                    if (colon <= 0)
+                    {                        throw Error.BatchStreamInvalidHeaderValueSpecified(line);
+                    }
+
+                    string name = line.Substring(0, colon).Trim();
+                    string value = line.Substring(colon + 1).Trim();
+                    this.contentHeaders.Add(name, value);
+                }
+                else
+                {
+                    break;
+                }
+            }
+        }
+
+        private void ReadHttpHeaders()
+        {
+            string line = this.ReadLine();
+
+
+            int index1 = line.IndexOf(' ');
+            if ((index1 <= 0) || ((line.Length - 3) <= index1))
+            {
+                throw Error.BatchStreamInvalidMethodHeaderSpecified(line);
+            }
+
+            int index2 = (this.batchRequest ? line.LastIndexOf(' ') : line.IndexOf(' ', index1 + 1));
+            if ((index2 < 0) || (index2 - index1 - 1 <= 0) || ((line.Length - 1) <= index2))
+            {
+                throw Error.BatchStreamInvalidMethodHeaderSpecified(line);
+            }
+
+            string segment1 = line.Substring(0, index1);            string segment2 = line.Substring(index1 + 1, index2 - index1 - 1);            string segment3 = line.Substring(index2 + 1);
+            #region validate HttpVersion
+            string httpVersion = this.batchRequest ? segment3 : segment1;
+            if (httpVersion != XmlConstants.HttpVersionInBatching)
+            {
+                throw Error.BatchStreamInvalidHttpVersionSpecified(httpVersion, XmlConstants.HttpVersionInBatching);
+            }
+            #endregion
+
+            this.ReadContentHeaders();
+
+            BatchStreamState state;
+            if (this.batchRequest)
+            {
+                state = GetStateBasedOnHttpMethodName(segment1);
+            }
+            else
+            {
+                state = (BatchStreamState.EndBatch == this.batchState) ? BatchStreamState.GetResponse : BatchStreamState.ChangeResponse;
+                this.statusCode = segment2;
+            }
+
+            #region validate state change
+            Debug.Assert(
+                BatchStreamState.EndBatch == this.batchState ||
+                BatchStreamState.EndChangeSet == this.batchState,
+                "unexpected BatchStreamState");
+
+            if (this.batchState == BatchStreamState.EndBatch)
+            {
+                if ((this.batchRequest && (state == BatchStreamState.Get)) ||
+                    (!this.batchRequest && (state == BatchStreamState.GetResponse)))
+                {
+                    this.batchState = state;
+                }
+                else
+                {
+                    throw Error.BatchStreamOnlyGETOperationsCanBeSpecifiedInBatch();
+                }
+            }
+            else if (this.batchState == BatchStreamState.EndChangeSet)
+            {
+                if ((this.batchRequest && ((BatchStreamState.Post == state) || (BatchStreamState.Put == state) || (BatchStreamState.Delete == state) || (BatchStreamState.Merge == state))) ||
+                    (!this.batchRequest && (state == BatchStreamState.ChangeResponse)))
+                {
+                    this.batchState = state;
+                }
+                else
+                {
+                    this.batchState = BatchStreamState.Post;
+
+                    throw Error.BatchStreamGetMethodNotSupportInChangeset();
+                }
+            }
+            else
+            {                throw Error.BatchStreamInvalidOperationHeaderSpecified();
+            }
+            #endregion
+        }
+
+        private sealed class StreamWithDelimiter : StreamWithLength
+        {
+            internal StreamWithDelimiter(BatchStream stream)
+                : base(stream, Int32.MaxValue)
+            {
+            }
+
+            public override int Read(byte[] buffer, int offset, int count)
+            {
+                if (null == this.Target)
+                {
+                    Error.ThrowObjectDisposed(this.GetType());
+                }
+
+                int result = this.Target.ReadDelimiter(buffer, offset, count);
+                return result;
+            }
+        }
+
+        private class StreamWithLength : Stream
+        {
+            private BatchStream target;
+
+            private int length;
+
+            internal StreamWithLength(BatchStream stream, int contentLength)
+            {
+                Debug.Assert(null != stream, "null != stream");
+                Debug.Assert(0 < contentLength, "0 < contentLength");
+                this.target = stream;
+                this.length = contentLength;
+            }
+
+            public override bool CanRead
+            {
+                get { return (null != this.target && this.target.CanRead); }
+            }
+
+            public override bool CanSeek
+            {
+                get { return false; }
+            }
+
+            public override bool CanWrite
+            {
+                get { return false; }
+            }
+
+            public override long Length
+            {
+                get { throw Error.NotSupported(); }
+            }
+
+            public override long Position
+            {
+                get { throw Error.NotSupported(); }
+                set { throw Error.NotSupported(); }
+            }
+
+            internal BatchStream Target
+            {
+                get { return this.target; }
+            }
+
+            public override void Flush()
+            {
+            }
+
+#if DEBUG && !ASTORIA_LIGHT            
+            public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+            {
+                throw Error.NotSupported();
+            }
+#endif
+
+            public override int Read(byte[] buffer, int offset, int count)
+            {
+                if (null == this.target)
+                {
+                    Error.ThrowObjectDisposed(this.GetType());
+                }
+
+                int result = this.target.ReadLength(buffer, offset, Math.Min(count, this.length));
+                this.length -= result;
+                Debug.Assert(0 <= this.length, "Read beyond expected length");
+                return result;
+            }
+
+            public override long Seek(long offset, SeekOrigin origin)
+            {
+                throw Error.NotSupported();
+            }
+
+            public override void SetLength(long value)
+            {
+                throw Error.NotSupported();
+            }
+
+            public override void Write(byte[] buffer, int offset, int count)
+            {
+                throw Error.NotSupported();
+            }
+
+            protected override void Dispose(bool disposing)
+            {
+                base.Dispose(disposing);
+
+                if (disposing && (null != this.target))
+                {
+                    if (this.target.disposeWithContentStreamDispose)
+                    {
+                        this.target.contentStream = null;
+                        this.target.Dispose();
+                    }
+                    else if (0 < this.length)
+                    {
+                        if (null != this.target.reader)
+                        {
+                            this.target.Seek(this.length, SeekOrigin.Current);
+                        }
+
+                        this.length = 0;
+                    }
+
+                    this.target.ClearPreviousOperationInformation();
+                }
+
+                this.target = null;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/BatchStreamState.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/BatchStreamState.cs
@@ -1,39 +1,39 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    internal enum BatchStreamState
-    {
-        EndBatch = 0,
-
-        StartBatch = 1,
-
-        BeginChangeSet = 2,
-
-        EndChangeSet = 3,
-
-        Post = 4,
-
-        Put = 5,
-
-        Delete = 6,
-
-        Get = 7,
-
-        Merge = 8,
-
-        GetResponse = 9,
-
-        ChangeResponse = 10,
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    internal enum BatchStreamState
+    {
+        EndBatch = 0,
+
+        StartBatch = 1,
+
+        BeginChangeSet = 2,
+
+        EndChangeSet = 3,
+
+        Post = 4,
+
+        Put = 5,
+
+        Delete = 6,
+
+        Get = 7,
+
+        Merge = 8,
+
+        GetResponse = 9,
+
+        ChangeResponse = 10,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingEntityInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingEntityInfo.cs
@@ -1,360 +1,360 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-#region Namespaces
-    using System.Collections.Generic;
-    using System.ComponentModel;
-    using System.Data.Services.Common;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    using System.Threading;
-#endregion
-
-    internal enum BindingPropertyKind
-    {
-        BindingPropertyKindComplex,
-
-        BindingPropertyKindEntity,
-
-        BindingPropertyKindCollection
-    }
-
-    internal class BindingEntityInfo
-    {
-        private static readonly object FalseObject = new object();
-
-        private static readonly object TrueObject = new object();
-
-        private static readonly ReaderWriterLockSlim metadataCacheLock = new ReaderWriterLockSlim();
-
-        private static readonly HashSet<Type> knownNonEntityTypes = new HashSet<Type>(EqualityComparer<Type>.Default);
-
-        private static readonly Dictionary<Type, object> knownObservableCollectionTypes = new Dictionary<Type, object>(EqualityComparer<Type>.Default);
-
-        private static readonly Dictionary<Type, BindingEntityInfoPerType> bindingEntityInfos = new Dictionary<Type, BindingEntityInfoPerType>(EqualityComparer<Type>.Default);
-
-        internal static IList<BindingPropertyInfo> GetObservableProperties(Type entityType)
-        {
-            return GetBindingEntityInfoFor(entityType).ObservableProperties;
-        }
-
-        internal static ClientType GetClientType(Type entityType)
-        {
-            return GetBindingEntityInfoFor(entityType).ClientType;
-        }
-
-        internal static string GetEntitySet(
-            object target,
-            string targetEntitySet)
-        {
-            Debug.Assert(target != null, "Argument 'target' cannot be null.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "Argument 'target' must be an entity type.");
-
-            if (!String.IsNullOrEmpty(targetEntitySet))
-            {
-                return targetEntitySet;
-            }
-            else
-            {
-                return BindingEntityInfo.GetEntitySetAttribute(target.GetType());
-            }
-        }
-
-        internal static bool IsDataServiceCollection(Type collectionType)
-        {
-            Debug.Assert(collectionType != null, "Argument 'collectionType' cannot be null.");
-
-            metadataCacheLock.EnterReadLock();
-            try
-            {
-                object resultAsObject;
-                if (knownObservableCollectionTypes.TryGetValue(collectionType, out resultAsObject))
-                {
-                    return resultAsObject == TrueObject;
-                }
-            }
-            finally
-            {
-                metadataCacheLock.ExitReadLock();
-            }
-
-            Type type = collectionType;
-            bool result = false;
-
-            while (type != null)
-            {
-                if (type.IsGenericType)
-                {
-                    Type[] parms = type.GetGenericArguments();
-
-                    if (parms != null && parms.Length == 1 && IsEntityType(parms[0]))
-                    {
-                        Type dataServiceCollection = WebUtil.GetDataServiceCollectionOfT(parms);
-                        if (dataServiceCollection != null && dataServiceCollection.IsAssignableFrom(type))
-                        {
-                            result = true;
-                            break;
-                        }
-                    }
-                }
-
-                type = type.BaseType;
-            }
-
-            metadataCacheLock.EnterWriteLock();
-            try
-            {
-                if (!knownObservableCollectionTypes.ContainsKey(collectionType))
-                {
-                    knownObservableCollectionTypes[collectionType] = result ? TrueObject : FalseObject;
-                }
-            }
-            finally
-            {
-                metadataCacheLock.ExitWriteLock();
-            }
-
-            return result;
-        }
-
-        internal static bool IsEntityType(Type type)
-        {
-            Debug.Assert(type != null, "Argument 'type' cannot be null.");
-
-            metadataCacheLock.EnterReadLock();
-            try
-            {
-                if (knownNonEntityTypes.Contains(type))
-                {
-                    return false;
-                }
-            }
-            finally
-            {
-                metadataCacheLock.ExitReadLock();
-            }
-
-            try
-            {
-                if (BindingEntityInfo.IsDataServiceCollection(type))
-                {
-                    return false;
-                }
-
-                return ClientType.Create(type).IsEntityType;
-            }
-            catch (InvalidOperationException)
-            {
-                metadataCacheLock.EnterWriteLock();
-                try
-                {
-                    if (!knownNonEntityTypes.Contains(type))
-                    {
-                        knownNonEntityTypes.Add(type);
-                    }
-                }
-                finally
-                {
-                    metadataCacheLock.ExitWriteLock();
-                }
-
-                return false;
-            }
-        }
-
-        internal static object GetPropertyValue(object source, string sourceProperty, out BindingPropertyInfo bindingPropertyInfo)
-        {
-            Type sourceType = source.GetType();
-
-            bindingPropertyInfo = BindingEntityInfo.GetObservableProperties(sourceType)
-                                                   .SingleOrDefault(x => x.PropertyInfo.PropertyName == sourceProperty);
-
-            if (bindingPropertyInfo == null)
-            {
-                return BindingEntityInfo.GetClientType(sourceType)
-                                        .GetProperty(sourceProperty, false)
-                                        .GetValue(source);
-            }
-            else
-            {
-                return bindingPropertyInfo.PropertyInfo.GetValue(source);
-            }
-        }
-
-        private static BindingEntityInfoPerType GetBindingEntityInfoFor(Type entityType)
-        {
-            BindingEntityInfoPerType bindingEntityInfo;
-
-            metadataCacheLock.EnterReadLock();
-            try
-            {
-                if (bindingEntityInfos.TryGetValue(entityType, out bindingEntityInfo))
-                {
-                    return bindingEntityInfo;
-                }
-            }
-            finally
-            {
-                metadataCacheLock.ExitReadLock();
-            }
-
-            bindingEntityInfo = new BindingEntityInfoPerType();
-
-            object[] attributes = entityType.GetCustomAttributes(typeof(EntitySetAttribute), true);
-
-            bindingEntityInfo.EntitySet = (attributes != null && attributes.Length == 1) ? ((EntitySetAttribute)attributes[0]).EntitySet : null;
-            bindingEntityInfo.ClientType = ClientType.Create(entityType);
-            
-            foreach (ClientType.ClientProperty p in bindingEntityInfo.ClientType.Properties)
-            {
-                BindingPropertyInfo bpi = null;
-            
-                Type propertyType = p.PropertyType;
-                
-                if (p.CollectionType != null)
-                {
-                    if (BindingEntityInfo.IsDataServiceCollection(propertyType))
-                    {
-                        bpi = new BindingPropertyInfo { PropertyKind = BindingPropertyKind.BindingPropertyKindCollection };
-                    }
-                }
-                else
-                if (BindingEntityInfo.IsEntityType(propertyType))
-                {
-                    bpi = new BindingPropertyInfo { PropertyKind = BindingPropertyKind.BindingPropertyKindEntity };
-                }
-                else
-                if (BindingEntityInfo.CanBeComplexProperty(p))
-                {
-                    bpi = new BindingPropertyInfo { PropertyKind = BindingPropertyKind.BindingPropertyKindComplex };
-                }
-                
-                if (bpi != null)
-                {
-                    bpi.PropertyInfo = p;
-                    
-                    if (bindingEntityInfo.ClientType.IsEntityType || bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindComplex)
-                    {
-                        bindingEntityInfo.ObservableProperties.Add(bpi);
-                    }
-                }
-            }
-
-            metadataCacheLock.EnterWriteLock();
-            try
-            {
-                if (!bindingEntityInfos.ContainsKey(entityType))
-                {
-                    bindingEntityInfos[entityType] = bindingEntityInfo;
-                }
-            }
-            finally
-            {
-                metadataCacheLock.ExitWriteLock();
-            }
-
-            return bindingEntityInfo;
-        }
-
-        private static bool CanBeComplexProperty(ClientType.ClientProperty property)
-        {
-            Debug.Assert(property != null, "property != null");
-            if (typeof(INotifyPropertyChanged).IsAssignableFrom(property.PropertyType))
-            {
-                Debug.Assert(!property.IsKnownType, "Known types do not implement INotifyPropertyChanged.");
-                return true;
-            }
-
-            return false;
-        }
-
-        private static string GetEntitySetAttribute(Type entityType)
-        {
-            return GetBindingEntityInfoFor(entityType).EntitySet;
-        }
-
-        internal class BindingPropertyInfo
-        {
-            public ClientType.ClientProperty PropertyInfo
-            {
-                get;
-                set;
-            }
-
-            public BindingPropertyKind PropertyKind
-            {
-                get;
-                set;
-            }
-        }
-
-        private sealed class BindingEntityInfoPerType
-        {
-            private List<BindingPropertyInfo> observableProperties;
-
-            public BindingEntityInfoPerType()
-            {
-                this.observableProperties = new List<BindingPropertyInfo>();
-            }
-
-            public String EntitySet
-            {
-                get;
-                set;
-            }
-
-            public ClientType ClientType
-            {
-                get;
-                set;
-            }
-
-            public List<BindingPropertyInfo> ObservableProperties
-            {
-                get
-                {
-                    return this.observableProperties;
-                }
-            }
-        }
-
-#if ASTORIA_LIGHT
-        private sealed class ReaderWriterLockSlim
-        {
-            private object _lock = new object();
-
-            internal void EnterReadLock()
-            {
-                Monitor.Enter(_lock);
-            }
-
-            internal void EnterWriteLock()
-            {
-                Monitor.Enter(_lock);
-            }
-
-            internal void ExitReadLock()
-            {
-                Monitor.Exit(_lock);
-            }
-
-            internal void ExitWriteLock()
-            {
-                Monitor.Exit(_lock);
-            }
-        }
-#endif
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+#region Namespaces
+    using System.Collections.Generic;
+    using System.ComponentModel;
+    using System.Data.Services.Common;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    using System.Threading;
+#endregion
+
+    internal enum BindingPropertyKind
+    {
+        BindingPropertyKindComplex,
+
+        BindingPropertyKindEntity,
+
+        BindingPropertyKindCollection
+    }
+
+    internal class BindingEntityInfo
+    {
+        private static readonly object FalseObject = new object();
+
+        private static readonly object TrueObject = new object();
+
+        private static readonly ReaderWriterLockSlim metadataCacheLock = new ReaderWriterLockSlim();
+
+        private static readonly HashSet<Type> knownNonEntityTypes = new HashSet<Type>(EqualityComparer<Type>.Default);
+
+        private static readonly Dictionary<Type, object> knownObservableCollectionTypes = new Dictionary<Type, object>(EqualityComparer<Type>.Default);
+
+        private static readonly Dictionary<Type, BindingEntityInfoPerType> bindingEntityInfos = new Dictionary<Type, BindingEntityInfoPerType>(EqualityComparer<Type>.Default);
+
+        internal static IList<BindingPropertyInfo> GetObservableProperties(Type entityType)
+        {
+            return GetBindingEntityInfoFor(entityType).ObservableProperties;
+        }
+
+        internal static ClientType GetClientType(Type entityType)
+        {
+            return GetBindingEntityInfoFor(entityType).ClientType;
+        }
+
+        internal static string GetEntitySet(
+            object target,
+            string targetEntitySet)
+        {
+            Debug.Assert(target != null, "Argument 'target' cannot be null.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "Argument 'target' must be an entity type.");
+
+            if (!String.IsNullOrEmpty(targetEntitySet))
+            {
+                return targetEntitySet;
+            }
+            else
+            {
+                return BindingEntityInfo.GetEntitySetAttribute(target.GetType());
+            }
+        }
+
+        internal static bool IsDataServiceCollection(Type collectionType)
+        {
+            Debug.Assert(collectionType != null, "Argument 'collectionType' cannot be null.");
+
+            metadataCacheLock.EnterReadLock();
+            try
+            {
+                object resultAsObject;
+                if (knownObservableCollectionTypes.TryGetValue(collectionType, out resultAsObject))
+                {
+                    return resultAsObject == TrueObject;
+                }
+            }
+            finally
+            {
+                metadataCacheLock.ExitReadLock();
+            }
+
+            Type type = collectionType;
+            bool result = false;
+
+            while (type != null)
+            {
+                if (type.IsGenericType)
+                {
+                    Type[] parms = type.GetGenericArguments();
+
+                    if (parms != null && parms.Length == 1 && IsEntityType(parms[0]))
+                    {
+                        Type dataServiceCollection = WebUtil.GetDataServiceCollectionOfT(parms);
+                        if (dataServiceCollection != null && dataServiceCollection.IsAssignableFrom(type))
+                        {
+                            result = true;
+                            break;
+                        }
+                    }
+                }
+
+                type = type.BaseType;
+            }
+
+            metadataCacheLock.EnterWriteLock();
+            try
+            {
+                if (!knownObservableCollectionTypes.ContainsKey(collectionType))
+                {
+                    knownObservableCollectionTypes[collectionType] = result ? TrueObject : FalseObject;
+                }
+            }
+            finally
+            {
+                metadataCacheLock.ExitWriteLock();
+            }
+
+            return result;
+        }
+
+        internal static bool IsEntityType(Type type)
+        {
+            Debug.Assert(type != null, "Argument 'type' cannot be null.");
+
+            metadataCacheLock.EnterReadLock();
+            try
+            {
+                if (knownNonEntityTypes.Contains(type))
+                {
+                    return false;
+                }
+            }
+            finally
+            {
+                metadataCacheLock.ExitReadLock();
+            }
+
+            try
+            {
+                if (BindingEntityInfo.IsDataServiceCollection(type))
+                {
+                    return false;
+                }
+
+                return ClientType.Create(type).IsEntityType;
+            }
+            catch (InvalidOperationException)
+            {
+                metadataCacheLock.EnterWriteLock();
+                try
+                {
+                    if (!knownNonEntityTypes.Contains(type))
+                    {
+                        knownNonEntityTypes.Add(type);
+                    }
+                }
+                finally
+                {
+                    metadataCacheLock.ExitWriteLock();
+                }
+
+                return false;
+            }
+        }
+
+        internal static object GetPropertyValue(object source, string sourceProperty, out BindingPropertyInfo bindingPropertyInfo)
+        {
+            Type sourceType = source.GetType();
+
+            bindingPropertyInfo = BindingEntityInfo.GetObservableProperties(sourceType)
+                                                   .SingleOrDefault(x => x.PropertyInfo.PropertyName == sourceProperty);
+
+            if (bindingPropertyInfo == null)
+            {
+                return BindingEntityInfo.GetClientType(sourceType)
+                                        .GetProperty(sourceProperty, false)
+                                        .GetValue(source);
+            }
+            else
+            {
+                return bindingPropertyInfo.PropertyInfo.GetValue(source);
+            }
+        }
+
+        private static BindingEntityInfoPerType GetBindingEntityInfoFor(Type entityType)
+        {
+            BindingEntityInfoPerType bindingEntityInfo;
+
+            metadataCacheLock.EnterReadLock();
+            try
+            {
+                if (bindingEntityInfos.TryGetValue(entityType, out bindingEntityInfo))
+                {
+                    return bindingEntityInfo;
+                }
+            }
+            finally
+            {
+                metadataCacheLock.ExitReadLock();
+            }
+
+            bindingEntityInfo = new BindingEntityInfoPerType();
+
+            object[] attributes = entityType.GetCustomAttributes(typeof(EntitySetAttribute), true);
+
+            bindingEntityInfo.EntitySet = (attributes != null && attributes.Length == 1) ? ((EntitySetAttribute)attributes[0]).EntitySet : null;
+            bindingEntityInfo.ClientType = ClientType.Create(entityType);
+            
+            foreach (ClientType.ClientProperty p in bindingEntityInfo.ClientType.Properties)
+            {
+                BindingPropertyInfo bpi = null;
+            
+                Type propertyType = p.PropertyType;
+                
+                if (p.CollectionType != null)
+                {
+                    if (BindingEntityInfo.IsDataServiceCollection(propertyType))
+                    {
+                        bpi = new BindingPropertyInfo { PropertyKind = BindingPropertyKind.BindingPropertyKindCollection };
+                    }
+                }
+                else
+                if (BindingEntityInfo.IsEntityType(propertyType))
+                {
+                    bpi = new BindingPropertyInfo { PropertyKind = BindingPropertyKind.BindingPropertyKindEntity };
+                }
+                else
+                if (BindingEntityInfo.CanBeComplexProperty(p))
+                {
+                    bpi = new BindingPropertyInfo { PropertyKind = BindingPropertyKind.BindingPropertyKindComplex };
+                }
+                
+                if (bpi != null)
+                {
+                    bpi.PropertyInfo = p;
+                    
+                    if (bindingEntityInfo.ClientType.IsEntityType || bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindComplex)
+                    {
+                        bindingEntityInfo.ObservableProperties.Add(bpi);
+                    }
+                }
+            }
+
+            metadataCacheLock.EnterWriteLock();
+            try
+            {
+                if (!bindingEntityInfos.ContainsKey(entityType))
+                {
+                    bindingEntityInfos[entityType] = bindingEntityInfo;
+                }
+            }
+            finally
+            {
+                metadataCacheLock.ExitWriteLock();
+            }
+
+            return bindingEntityInfo;
+        }
+
+        private static bool CanBeComplexProperty(ClientType.ClientProperty property)
+        {
+            Debug.Assert(property != null, "property != null");
+            if (typeof(INotifyPropertyChanged).IsAssignableFrom(property.PropertyType))
+            {
+                Debug.Assert(!property.IsKnownType, "Known types do not implement INotifyPropertyChanged.");
+                return true;
+            }
+
+            return false;
+        }
+
+        private static string GetEntitySetAttribute(Type entityType)
+        {
+            return GetBindingEntityInfoFor(entityType).EntitySet;
+        }
+
+        internal class BindingPropertyInfo
+        {
+            public ClientType.ClientProperty PropertyInfo
+            {
+                get;
+                set;
+            }
+
+            public BindingPropertyKind PropertyKind
+            {
+                get;
+                set;
+            }
+        }
+
+        private sealed class BindingEntityInfoPerType
+        {
+            private List<BindingPropertyInfo> observableProperties;
+
+            public BindingEntityInfoPerType()
+            {
+                this.observableProperties = new List<BindingPropertyInfo>();
+            }
+
+            public String EntitySet
+            {
+                get;
+                set;
+            }
+
+            public ClientType ClientType
+            {
+                get;
+                set;
+            }
+
+            public List<BindingPropertyInfo> ObservableProperties
+            {
+                get
+                {
+                    return this.observableProperties;
+                }
+            }
+        }
+
+#if ASTORIA_LIGHT
+        private sealed class ReaderWriterLockSlim
+        {
+            private object _lock = new object();
+
+            internal void EnterReadLock()
+            {
+                Monitor.Enter(_lock);
+            }
+
+            internal void EnterWriteLock()
+            {
+                Monitor.Enter(_lock);
+            }
+
+            internal void ExitReadLock()
+            {
+                Monitor.Exit(_lock);
+            }
+
+            internal void ExitWriteLock()
+            {
+                Monitor.Exit(_lock);
+            }
+        }
+#endif
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingGraph.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingGraph.cs
@@ -1,750 +1,750 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-    #endregion
-
-    internal enum VertexColor
-    {
-        White,
-        
-        Gray,
-        
-        Black
-    }
-
-    internal sealed class BindingGraph
-    {
-        private BindingObserver observer;
-
-        private Graph graph;
-
-        public BindingGraph(BindingObserver observer)
-        {
-            this.observer = observer;
-            this.graph = new Graph();
-        }
-
-        public bool AddCollection(
-            object source, 
-            string sourceProperty, 
-            object collection, 
-            string collectionEntitySet)
-        {
-            Debug.Assert(collection != null, "'collection' can not be null");
-            Debug.Assert(
-                BindingEntityInfo.IsDataServiceCollection(collection.GetType()), 
-                "Argument 'collection' must be an DataServiceCollection<T> of entity type T");
-
-            if (this.graph.ExistsVertex(collection))
-            {
-                return false;
-            }
-
-            Vertex collectionVertex = this.graph.AddVertex(collection);
-            collectionVertex.IsCollection = true;
-            collectionVertex.EntitySet = collectionEntitySet;
-
-            ICollection collectionItf = collection as ICollection;
-
-            if (source != null)
-            {
-                collectionVertex.Parent = this.graph.LookupVertex(source);
-                collectionVertex.ParentProperty = sourceProperty;
-                this.graph.AddEdge(source, collection, sourceProperty);
-                
-                Type entityType = BindingUtils.GetCollectionEntityType(collection.GetType());
-                Debug.Assert(entityType != null, "Collection must at least be inherited from DataServiceCollection<T>");
-
-                if (!typeof(INotifyPropertyChanged).IsAssignableFrom(entityType))
-                {
-                    throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(entityType));
-                }
-                
-                typeof(BindingGraph)
-                    .GetMethod("SetObserver", BindingFlags.Instance | BindingFlags.NonPublic)
-                    .MakeGenericMethod(entityType)
-                    .Invoke(this, new object[] { collectionItf });
-            }
-            else
-            {
-                this.graph.Root = collectionVertex;
-            }
-
-            Debug.Assert(
-                    collectionVertex.Parent != null || collectionVertex.IsRootCollection, 
-                    "If parent is null, then collectionVertex should be a root collection");
-
-            this.AttachCollectionNotification(collection);
-
-            foreach (var item in collectionItf)
-            {
-                this.AddEntity(
-                        source, 
-                        sourceProperty, 
-                        item,
-                        collectionEntitySet, 
-                        collection);
-            }
-
-            return true;
-        }
-
-        public bool AddEntity(
-            object source, 
-            string sourceProperty, 
-            object target, 
-            string targetEntitySet, 
-            object edgeSource)
-        {
-            Vertex sourceVertex = this.graph.LookupVertex(edgeSource);
-            Debug.Assert(sourceVertex != null, "Must have a valid edge source");
-            
-            Vertex entityVertex = null;
-            bool addedNewEntity = false;
-
-            if (target != null)
-            {
-                entityVertex = this.graph.LookupVertex(target);
-
-                if (entityVertex == null)
-                {
-                    entityVertex = this.graph.AddVertex(target);
-                    
-                    entityVertex.EntitySet = BindingEntityInfo.GetEntitySet(target, targetEntitySet);
-
-                    if (!this.AttachEntityOrComplexObjectNotification(target))
-                    {
-                        throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(target.GetType()));
-                    }
-                    
-                    addedNewEntity = true;
-                }
-
-                if (this.graph.ExistsEdge(edgeSource, target, sourceVertex.IsCollection ? null : sourceProperty))
-                {
-                    throw new InvalidOperationException(Strings.DataBinding_EntityAlreadyInCollection(target.GetType()));
-                }
-
-                this.graph.AddEdge(edgeSource, target, sourceVertex.IsCollection ? null : sourceProperty);
-            }
-
-            if (!sourceVertex.IsCollection)
-            {
-                this.observer.HandleUpdateEntityReference(
-                        source, 
-                        sourceProperty,
-                        sourceVertex.EntitySet, 
-                        target,
-                        entityVertex == null ? null : entityVertex.EntitySet);
-            }
-            else
-            {
-                Debug.Assert(target != null, "Target must be non-null when adding to collections");
-                this.observer.HandleAddEntity(
-                        source, 
-                        sourceProperty,
-                        sourceVertex.Parent != null ? sourceVertex.Parent.EntitySet : null,
-                        edgeSource as ICollection, 
-                        target,
-                        entityVertex.EntitySet);
-            }
-
-            if (addedNewEntity)
-            {
-                this.AddFromProperties(target);
-            }
-
-            return addedNewEntity;
-        }
-
-        public void Remove(object item, object parent, string parentProperty)
-        {
-            Vertex vertexToRemove = this.graph.LookupVertex(item);
-            if (vertexToRemove == null)
-            {
-                return;
-            }
-
-            Debug.Assert(!vertexToRemove.IsRootCollection, "Root collections are never removed");
-
-            Debug.Assert(parent != null, "Parent has to be present.");
-
-            if (parentProperty != null)
-            {
-                BindingEntityInfo.BindingPropertyInfo bpi = BindingEntityInfo.GetObservableProperties(parent.GetType())
-                                                                             .Single(p => p.PropertyInfo.PropertyName == parentProperty);
-                Debug.Assert(bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindCollection, "parentProperty must refer to an DataServiceCollection");
-
-                parent = bpi.PropertyInfo.GetValue(parent);
-            }
-
-            object source = null;
-            string sourceProperty = null;
-            string sourceEntitySet = null;
-            string targetEntitySet = null;
-
-            this.GetEntityCollectionInfo(
-                    parent,
-                    out source,
-                    out sourceProperty,
-                    out sourceEntitySet,
-                    out targetEntitySet);
-
-            targetEntitySet = BindingEntityInfo.GetEntitySet(item, targetEntitySet);
-
-            this.observer.HandleDeleteEntity(
-                            source,
-                            sourceProperty,
-                            sourceEntitySet,
-                            parent as ICollection,
-                            item,
-                            targetEntitySet);
-
-            this.graph.RemoveEdge(parent, item, null);
-        }
-
-        public void RemoveCollection(object collection)
-        {
-            Vertex collectionVertex = this.graph.LookupVertex(collection);
-            Debug.Assert(collectionVertex != null, "Must be tracking the vertex for the collection");
-            
-            foreach (Edge collectionEdge in collectionVertex.OutgoingEdges.ToList())
-            {
-                this.graph.RemoveEdge(collection, collectionEdge.Target.Item, null);
-            }
-
-            this.RemoveUnreachableVertices();
-        }
-
-        public void RemoveRelation(object source, string relation)
-        {
-            Edge edge = this.graph
-                            .LookupVertex(source)
-                            .OutgoingEdges
-                            .SingleOrDefault(e => e.Source.Item == source && e.Label == relation);
-            if (edge != null)
-            {
-                this.graph.RemoveEdge(edge.Source.Item, edge.Target.Item, edge.Label);
-            }
-
-            this.RemoveUnreachableVertices();
-        }
-
-#if DEBUG
-        public bool IsTracking(object item)
-        {
-            return this.graph.ExistsVertex(item);
-        }
-#endif
-        public void RemoveNonTrackedEntities()
-        {
-            foreach (var entity in this.graph.Select(o => BindingEntityInfo.IsEntityType(o.GetType()) && !this.observer.IsContextTrackingEntity(o)))
-            {
-                this.graph.ClearEdgesForVertex(this.graph.LookupVertex(entity));
-            }
-            
-            this.RemoveUnreachableVertices();
-        }
-
-        public IEnumerable<object> GetCollectionItems(object collection)
-        {
-            Vertex collectionVertex = this.graph.LookupVertex(collection);
-            Debug.Assert(collectionVertex != null, "Must be tracking the vertex for the collection");
-            foreach (Edge collectionEdge in collectionVertex.OutgoingEdges.ToList())
-            {
-                yield return collectionEdge.Target.Item;
-            }
-        }
-
-        public void Reset()
-        {
-            this.graph.Reset(this.DetachNotifications);
-        }
-
-        public void RemoveUnreachableVertices()
-        {
-            this.graph.RemoveUnreachableVertices(this.DetachNotifications);
-        }
-
-        public void GetEntityCollectionInfo(
-            object collection,
-            out object source,
-            out string sourceProperty,
-            out string sourceEntitySet,
-            out string targetEntitySet)
-        {
-            Debug.Assert(collection != null, "Argument 'collection' cannot be null.");
-            Debug.Assert(this.graph.ExistsVertex(collection), "Vertex corresponding to 'collection' must exist in the graph.");
-            
-            this.graph
-                .LookupVertex(collection)
-                .GetEntityCollectionInfo(
-                    out source, 
-                    out sourceProperty, 
-                    out sourceEntitySet, 
-                    out targetEntitySet);
-        }
-
-        public void GetAncestorEntityForComplexProperty(
-            ref object entity, 
-            ref string propertyName, 
-            ref object propertyValue)
-        {
-            Vertex childVertex = this.graph.LookupVertex(entity);
-            Debug.Assert(childVertex != null, "Must have a vertex in the graph corresponding to the entity.");
-            Debug.Assert(childVertex.IsComplex == true, "Vertex must correspond to a complex object.");
-            
-            while (childVertex.IsComplex)
-            {
-                propertyName = childVertex.IncomingEdges[0].Label;
-                propertyValue = childVertex.Item;
-
-                Debug.Assert(childVertex.Parent != null, "Complex properties must always have parent vertices.");
-                entity = childVertex.Parent.Item;
-
-                childVertex = childVertex.Parent;
-            }
-        }
-
-        public void AddComplexProperty(object source, string sourceProperty, object target)
-        {
-            Vertex parentVertex = this.graph.LookupVertex(source);
-            Debug.Assert(parentVertex != null, "Must have a valid parent entity for complex properties.");
-            Debug.Assert(target != null, "Must have non-null complex object reference.");
-
-            Vertex complexVertex = this.graph.LookupVertex(target);
-
-            if (complexVertex == null)
-            {
-                complexVertex = this.graph.AddVertex(target);
-                complexVertex.Parent = parentVertex;
-                complexVertex.IsComplex = true;
-
-                if (!this.AttachEntityOrComplexObjectNotification(target))
-                {
-                    throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(target.GetType()));
-                }
-            }
-            else
-            {
-                throw new InvalidOperationException(Strings.DataBinding_ComplexObjectAssociatedWithMultipleEntities(target.GetType()));
-            }
-
-            this.graph.AddEdge(source, target, sourceProperty);
-
-            this.AddFromProperties(target);
-        }
-        
-        private void AddFromProperties(object entity)
-        {
-            foreach (BindingEntityInfo.BindingPropertyInfo bpi in BindingEntityInfo.GetObservableProperties(entity.GetType()))
-            {
-                object propertyValue = bpi.PropertyInfo.GetValue(entity);
-
-                if (propertyValue != null)
-                {
-                    switch (bpi.PropertyKind)
-                    {
-                        case BindingPropertyKind.BindingPropertyKindCollection:
-                            this.AddCollection(
-                                    entity,
-                                    bpi.PropertyInfo.PropertyName,
-                                    propertyValue,
-                                    null);
-                            
-                            break;
-                            
-                        case BindingPropertyKind.BindingPropertyKindEntity:
-                            this.AddEntity(
-                                    entity,
-                                    bpi.PropertyInfo.PropertyName,
-                                    propertyValue,
-                                    null,
-                                    entity);
-                            
-                            break;
-                            
-                        default:
-                            Debug.Assert(bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindComplex, "Must be complex type if PropertyKind is not entity or collection.");
-                            this.AddComplexProperty(
-                                    entity, 
-                                    bpi.PropertyInfo.PropertyName, 
-                                    propertyValue);
-                            break;
-                    }
-                }
-            }
-        }
-
-        private void AttachCollectionNotification(object target)
-        {
-            Debug.Assert(target != null, "Argument 'target' cannot be null");
-
-            INotifyCollectionChanged notify = target as INotifyCollectionChanged;
-            Debug.Assert(notify != null, "DataServiceCollection must implement INotifyCollectionChanged");
-
-            notify.CollectionChanged -= this.observer.OnCollectionChanged;
-            notify.CollectionChanged += this.observer.OnCollectionChanged;
-        }
-
-        private bool AttachEntityOrComplexObjectNotification(object target)
-        {
-            Debug.Assert(target != null, "Argument 'target' cannot be null");
-
-            INotifyPropertyChanged notify = target as INotifyPropertyChanged;
-            if (notify != null)
-            {
-                notify.PropertyChanged -= this.observer.OnPropertyChanged;
-                notify.PropertyChanged += this.observer.OnPropertyChanged;
-                return true;
-            }
-
-            return false;
-        }
-
-        private void DetachNotifications(object target)
-        {
-            Debug.Assert(target != null, "Argument 'target' cannot be null");
-            
-            this.DetachCollectionNotifications(target);
-
-            INotifyPropertyChanged notifyPropertyChanged = target as INotifyPropertyChanged;
-            if (notifyPropertyChanged != null)
-            {
-                notifyPropertyChanged.PropertyChanged -= this.observer.OnPropertyChanged;
-            }
-        }
-
-        private void DetachCollectionNotifications(object target)
-        {
-            Debug.Assert(target != null, "Argument 'target' cannot be null");
-
-            INotifyCollectionChanged notifyCollectionChanged = target as INotifyCollectionChanged;
-            if (notifyCollectionChanged != null)
-            {
-                notifyCollectionChanged.CollectionChanged -= this.observer.OnCollectionChanged;
-            }
-        }
-
-        private void SetObserver<T>(ICollection collection)
-        {
-            DataServiceCollection<T> oec = collection as DataServiceCollection<T>;
-            oec.Observer = this.observer;
-        }
-
-        internal sealed class Graph
-        {
-            private Dictionary<object, Vertex> vertices;
-
-            private Vertex root;
-            
-            public Graph()
-            {
-                this.vertices = new Dictionary<object, Vertex>(ReferenceEqualityComparer<object>.Instance);
-            }
-
-            public Vertex Root
-            {
-                get
-                {
-                    Debug.Assert(this.root != null, "Must have a non-null root vertex when this call is made.");
-                    return this.root;
-                }
-                
-                set
-                {
-                    Debug.Assert(this.root == null, "Must only initialize root vertex once.");   
-                    Debug.Assert(this.ExistsVertex(value.Item), "Must already have the assigned vertex in the graph.");
-                    this.root = value;
-                }
-            }
-
-            public Vertex AddVertex(object item)
-            {
-                Vertex v = new Vertex(item);
-                this.vertices.Add(item, v);
-                return v;
-            }
-
-            public void ClearEdgesForVertex(Vertex v)
-            {
-                foreach (Edge e in v.OutgoingEdges.Concat(v.IncomingEdges).ToList())
-                {
-                    this.RemoveEdge(e.Source.Item, e.Target.Item, e.Label);
-                }
-            }
-
-            public bool ExistsVertex(object item)
-            {
-                Vertex v;
-                return this.vertices.TryGetValue(item, out v);
-            }
-
-            public Vertex LookupVertex(object item)
-            {
-                Vertex v;
-                this.vertices.TryGetValue(item, out v);
-                return v;
-            }
-
-            public Edge AddEdge(object source, object target, string label)
-            {
-                Vertex s = this.vertices[source];
-                Vertex t = this.vertices[target];
-                Edge e = new Edge { Source = s, Target = t, Label = label };
-                s.OutgoingEdges.Add(e);
-                t.IncomingEdges.Add(e);
-                return e;
-            }
-
-            public void RemoveEdge(object source, object target, string label)
-            {
-                Vertex s = this.vertices[source];
-                Vertex t = this.vertices[target];
-                Edge e = new Edge { Source = s, Target = t, Label = label };
-                s.OutgoingEdges.Remove(e);
-                t.IncomingEdges.Remove(e);
-            }
-
-            public bool ExistsEdge(object source, object target, string label)
-            {
-                Edge e = new Edge { Source = this.vertices[source], Target = this.vertices[target], Label = label };
-                return this.vertices[source].OutgoingEdges.Any(r => r.Equals(e));
-            }
-
-            public IList<object> Select(Func<object, bool> filter)
-            {
-                return this.vertices.Keys.Where(filter).ToList();
-            }
-
-            public void Reset(Action<object> action)
-            {
-                foreach (object obj in this.vertices.Keys)
-                {
-                    action(obj);
-                }
-
-                this.vertices.Clear();
-            }
-
-            public void RemoveUnreachableVertices(Action<object> detachAction)
-            {
-                try
-                {
-                    foreach (Vertex v in this.UnreachableVertices())
-                    {
-                        this.ClearEdgesForVertex(v);
-                        detachAction(v.Item);
-                        this.vertices.Remove(v.Item);
-                    }
-                }
-                finally
-                {
-                    foreach (Vertex v in this.vertices.Values)
-                    {
-                        v.Color = VertexColor.White;
-                    }
-                }
-            }
-            
-            private IEnumerable<Vertex> UnreachableVertices()
-            {
-                Queue<Vertex> q = new Queue<Vertex>();
-                
-                this.Root.Color = VertexColor.Gray;
-                q.Enqueue(this.Root);
-                
-                while (q.Count != 0)
-                {
-                    Vertex current = q.Dequeue();
-                    
-                    foreach (Edge e in current.OutgoingEdges)
-                    {
-                        if (e.Target.Color == VertexColor.White)
-                        {
-                            e.Target.Color = VertexColor.Gray;
-                            q.Enqueue(e.Target);
-                        }
-                    }
-                    
-                    current.Color = VertexColor.Black;
-                }
-                
-                return this.vertices.Values.Where(v => v.Color == VertexColor.White).ToList();
-            }
-        }
-
-        internal sealed class Vertex
-        {
-            private List<Edge> incomingEdges;
-            
-            private List<Edge> outgoingEdges;
-
-            public Vertex(object item)
-            {
-                Debug.Assert(item != null, "item must be non-null");
-                this.Item = item;
-                this.Color = VertexColor.White;
-            }
-
-            public object Item
-            {
-                get;
-                private set;
-            }
-
-            public string EntitySet
-            {
-                get;
-                set;
-            }
-
-            public bool IsCollection
-            {
-                get;
-                set;
-            }
-
-            public bool IsComplex
-            {
-                get;
-                set;
-            }
-
-            public Vertex Parent
-            {
-                get;
-                set;
-            }
-
-            public string ParentProperty
-            {
-                get;
-                set;
-            }
-
-            public bool IsRootCollection
-            {
-                get
-                {
-                    return this.IsCollection && this.Parent == null;
-                }
-            }
-
-            public VertexColor Color
-            {
-                get;
-                set;
-            }
-
-            public IList<Edge> IncomingEdges
-            {
-                get
-                {
-                    if (this.incomingEdges == null)
-                    {
-                        this.incomingEdges = new List<Edge>();
-                    }
-
-                    return this.incomingEdges;
-                }
-            }
-
-            public IList<Edge> OutgoingEdges
-            {
-                get
-                {
-                    if (this.outgoingEdges == null)
-                    {
-                        this.outgoingEdges = new List<Edge>();
-                    }
-
-                    return this.outgoingEdges;
-                }
-            }
-
-            public void GetEntityCollectionInfo(
-                out object source,
-                out string sourceProperty,
-                out string sourceEntitySet,
-                out string targetEntitySet)
-            {
-                Debug.Assert(this.IsCollection, "Must be a collection to be in this method");
-
-                if (!this.IsRootCollection)
-                {
-                    Debug.Assert(this.Parent != null, "Parent must be non-null for child collection");
-                    
-                    source = this.Parent.Item;
-                    Debug.Assert(source != null, "Source object must be present for child collection");
-
-                    sourceProperty = this.ParentProperty;
-                    Debug.Assert(sourceProperty != null, "Source entity property associated with a child collection must be non-null");
-
-#if DEBUG
-                    PropertyInfo propertyInfo = source.GetType().GetProperty(sourceProperty);
-                    Debug.Assert(propertyInfo != null, "Unable to get information for the source entity property associated with a child collection");
-#endif
-                    sourceEntitySet = this.Parent.EntitySet;
-                }
-                else
-                {
-                    Debug.Assert(this.Parent == null, "Parent must be null for top level collection");
-                    source = null;
-                    sourceProperty = null;
-                    sourceEntitySet = null;
-                }
-
-                targetEntitySet = this.EntitySet;
-            }
-        }
-
-        internal sealed class Edge : IEquatable<Edge>
-        {
-            public Vertex Source
-            {
-                get;
-                set;
-            }
-
-            public Vertex Target
-            {
-                get;
-                set;
-            }
-
-            public string Label
-            {
-                get;
-                set;
-            }
-
-            public bool Equals(Edge other)
-            {
-                return other != null &&
-                    Object.ReferenceEquals(this.Source, other.Source) &&
-                    Object.ReferenceEquals(this.Target, other.Target) &&
-                    this.Label == other.Label;
-            }
-        }    
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+    #endregion
+
+    internal enum VertexColor
+    {
+        White,
+        
+        Gray,
+        
+        Black
+    }
+
+    internal sealed class BindingGraph
+    {
+        private BindingObserver observer;
+
+        private Graph graph;
+
+        public BindingGraph(BindingObserver observer)
+        {
+            this.observer = observer;
+            this.graph = new Graph();
+        }
+
+        public bool AddCollection(
+            object source, 
+            string sourceProperty, 
+            object collection, 
+            string collectionEntitySet)
+        {
+            Debug.Assert(collection != null, "'collection' can not be null");
+            Debug.Assert(
+                BindingEntityInfo.IsDataServiceCollection(collection.GetType()), 
+                "Argument 'collection' must be an DataServiceCollection<T> of entity type T");
+
+            if (this.graph.ExistsVertex(collection))
+            {
+                return false;
+            }
+
+            Vertex collectionVertex = this.graph.AddVertex(collection);
+            collectionVertex.IsCollection = true;
+            collectionVertex.EntitySet = collectionEntitySet;
+
+            ICollection collectionItf = collection as ICollection;
+
+            if (source != null)
+            {
+                collectionVertex.Parent = this.graph.LookupVertex(source);
+                collectionVertex.ParentProperty = sourceProperty;
+                this.graph.AddEdge(source, collection, sourceProperty);
+                
+                Type entityType = BindingUtils.GetCollectionEntityType(collection.GetType());
+                Debug.Assert(entityType != null, "Collection must at least be inherited from DataServiceCollection<T>");
+
+                if (!typeof(INotifyPropertyChanged).IsAssignableFrom(entityType))
+                {
+                    throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(entityType));
+                }
+                
+                typeof(BindingGraph)
+                    .GetMethod("SetObserver", BindingFlags.Instance | BindingFlags.NonPublic)
+                    .MakeGenericMethod(entityType)
+                    .Invoke(this, new object[] { collectionItf });
+            }
+            else
+            {
+                this.graph.Root = collectionVertex;
+            }
+
+            Debug.Assert(
+                    collectionVertex.Parent != null || collectionVertex.IsRootCollection, 
+                    "If parent is null, then collectionVertex should be a root collection");
+
+            this.AttachCollectionNotification(collection);
+
+            foreach (var item in collectionItf)
+            {
+                this.AddEntity(
+                        source, 
+                        sourceProperty, 
+                        item,
+                        collectionEntitySet, 
+                        collection);
+            }
+
+            return true;
+        }
+
+        public bool AddEntity(
+            object source, 
+            string sourceProperty, 
+            object target, 
+            string targetEntitySet, 
+            object edgeSource)
+        {
+            Vertex sourceVertex = this.graph.LookupVertex(edgeSource);
+            Debug.Assert(sourceVertex != null, "Must have a valid edge source");
+            
+            Vertex entityVertex = null;
+            bool addedNewEntity = false;
+
+            if (target != null)
+            {
+                entityVertex = this.graph.LookupVertex(target);
+
+                if (entityVertex == null)
+                {
+                    entityVertex = this.graph.AddVertex(target);
+                    
+                    entityVertex.EntitySet = BindingEntityInfo.GetEntitySet(target, targetEntitySet);
+
+                    if (!this.AttachEntityOrComplexObjectNotification(target))
+                    {
+                        throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(target.GetType()));
+                    }
+                    
+                    addedNewEntity = true;
+                }
+
+                if (this.graph.ExistsEdge(edgeSource, target, sourceVertex.IsCollection ? null : sourceProperty))
+                {
+                    throw new InvalidOperationException(Strings.DataBinding_EntityAlreadyInCollection(target.GetType()));
+                }
+
+                this.graph.AddEdge(edgeSource, target, sourceVertex.IsCollection ? null : sourceProperty);
+            }
+
+            if (!sourceVertex.IsCollection)
+            {
+                this.observer.HandleUpdateEntityReference(
+                        source, 
+                        sourceProperty,
+                        sourceVertex.EntitySet, 
+                        target,
+                        entityVertex == null ? null : entityVertex.EntitySet);
+            }
+            else
+            {
+                Debug.Assert(target != null, "Target must be non-null when adding to collections");
+                this.observer.HandleAddEntity(
+                        source, 
+                        sourceProperty,
+                        sourceVertex.Parent != null ? sourceVertex.Parent.EntitySet : null,
+                        edgeSource as ICollection, 
+                        target,
+                        entityVertex.EntitySet);
+            }
+
+            if (addedNewEntity)
+            {
+                this.AddFromProperties(target);
+            }
+
+            return addedNewEntity;
+        }
+
+        public void Remove(object item, object parent, string parentProperty)
+        {
+            Vertex vertexToRemove = this.graph.LookupVertex(item);
+            if (vertexToRemove == null)
+            {
+                return;
+            }
+
+            Debug.Assert(!vertexToRemove.IsRootCollection, "Root collections are never removed");
+
+            Debug.Assert(parent != null, "Parent has to be present.");
+
+            if (parentProperty != null)
+            {
+                BindingEntityInfo.BindingPropertyInfo bpi = BindingEntityInfo.GetObservableProperties(parent.GetType())
+                                                                             .Single(p => p.PropertyInfo.PropertyName == parentProperty);
+                Debug.Assert(bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindCollection, "parentProperty must refer to an DataServiceCollection");
+
+                parent = bpi.PropertyInfo.GetValue(parent);
+            }
+
+            object source = null;
+            string sourceProperty = null;
+            string sourceEntitySet = null;
+            string targetEntitySet = null;
+
+            this.GetEntityCollectionInfo(
+                    parent,
+                    out source,
+                    out sourceProperty,
+                    out sourceEntitySet,
+                    out targetEntitySet);
+
+            targetEntitySet = BindingEntityInfo.GetEntitySet(item, targetEntitySet);
+
+            this.observer.HandleDeleteEntity(
+                            source,
+                            sourceProperty,
+                            sourceEntitySet,
+                            parent as ICollection,
+                            item,
+                            targetEntitySet);
+
+            this.graph.RemoveEdge(parent, item, null);
+        }
+
+        public void RemoveCollection(object collection)
+        {
+            Vertex collectionVertex = this.graph.LookupVertex(collection);
+            Debug.Assert(collectionVertex != null, "Must be tracking the vertex for the collection");
+            
+            foreach (Edge collectionEdge in collectionVertex.OutgoingEdges.ToList())
+            {
+                this.graph.RemoveEdge(collection, collectionEdge.Target.Item, null);
+            }
+
+            this.RemoveUnreachableVertices();
+        }
+
+        public void RemoveRelation(object source, string relation)
+        {
+            Edge edge = this.graph
+                            .LookupVertex(source)
+                            .OutgoingEdges
+                            .SingleOrDefault(e => e.Source.Item == source && e.Label == relation);
+            if (edge != null)
+            {
+                this.graph.RemoveEdge(edge.Source.Item, edge.Target.Item, edge.Label);
+            }
+
+            this.RemoveUnreachableVertices();
+        }
+
+#if DEBUG
+        public bool IsTracking(object item)
+        {
+            return this.graph.ExistsVertex(item);
+        }
+#endif
+        public void RemoveNonTrackedEntities()
+        {
+            foreach (var entity in this.graph.Select(o => BindingEntityInfo.IsEntityType(o.GetType()) && !this.observer.IsContextTrackingEntity(o)))
+            {
+                this.graph.ClearEdgesForVertex(this.graph.LookupVertex(entity));
+            }
+            
+            this.RemoveUnreachableVertices();
+        }
+
+        public IEnumerable<object> GetCollectionItems(object collection)
+        {
+            Vertex collectionVertex = this.graph.LookupVertex(collection);
+            Debug.Assert(collectionVertex != null, "Must be tracking the vertex for the collection");
+            foreach (Edge collectionEdge in collectionVertex.OutgoingEdges.ToList())
+            {
+                yield return collectionEdge.Target.Item;
+            }
+        }
+
+        public void Reset()
+        {
+            this.graph.Reset(this.DetachNotifications);
+        }
+
+        public void RemoveUnreachableVertices()
+        {
+            this.graph.RemoveUnreachableVertices(this.DetachNotifications);
+        }
+
+        public void GetEntityCollectionInfo(
+            object collection,
+            out object source,
+            out string sourceProperty,
+            out string sourceEntitySet,
+            out string targetEntitySet)
+        {
+            Debug.Assert(collection != null, "Argument 'collection' cannot be null.");
+            Debug.Assert(this.graph.ExistsVertex(collection), "Vertex corresponding to 'collection' must exist in the graph.");
+            
+            this.graph
+                .LookupVertex(collection)
+                .GetEntityCollectionInfo(
+                    out source, 
+                    out sourceProperty, 
+                    out sourceEntitySet, 
+                    out targetEntitySet);
+        }
+
+        public void GetAncestorEntityForComplexProperty(
+            ref object entity, 
+            ref string propertyName, 
+            ref object propertyValue)
+        {
+            Vertex childVertex = this.graph.LookupVertex(entity);
+            Debug.Assert(childVertex != null, "Must have a vertex in the graph corresponding to the entity.");
+            Debug.Assert(childVertex.IsComplex == true, "Vertex must correspond to a complex object.");
+            
+            while (childVertex.IsComplex)
+            {
+                propertyName = childVertex.IncomingEdges[0].Label;
+                propertyValue = childVertex.Item;
+
+                Debug.Assert(childVertex.Parent != null, "Complex properties must always have parent vertices.");
+                entity = childVertex.Parent.Item;
+
+                childVertex = childVertex.Parent;
+            }
+        }
+
+        public void AddComplexProperty(object source, string sourceProperty, object target)
+        {
+            Vertex parentVertex = this.graph.LookupVertex(source);
+            Debug.Assert(parentVertex != null, "Must have a valid parent entity for complex properties.");
+            Debug.Assert(target != null, "Must have non-null complex object reference.");
+
+            Vertex complexVertex = this.graph.LookupVertex(target);
+
+            if (complexVertex == null)
+            {
+                complexVertex = this.graph.AddVertex(target);
+                complexVertex.Parent = parentVertex;
+                complexVertex.IsComplex = true;
+
+                if (!this.AttachEntityOrComplexObjectNotification(target))
+                {
+                    throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(target.GetType()));
+                }
+            }
+            else
+            {
+                throw new InvalidOperationException(Strings.DataBinding_ComplexObjectAssociatedWithMultipleEntities(target.GetType()));
+            }
+
+            this.graph.AddEdge(source, target, sourceProperty);
+
+            this.AddFromProperties(target);
+        }
+        
+        private void AddFromProperties(object entity)
+        {
+            foreach (BindingEntityInfo.BindingPropertyInfo bpi in BindingEntityInfo.GetObservableProperties(entity.GetType()))
+            {
+                object propertyValue = bpi.PropertyInfo.GetValue(entity);
+
+                if (propertyValue != null)
+                {
+                    switch (bpi.PropertyKind)
+                    {
+                        case BindingPropertyKind.BindingPropertyKindCollection:
+                            this.AddCollection(
+                                    entity,
+                                    bpi.PropertyInfo.PropertyName,
+                                    propertyValue,
+                                    null);
+                            
+                            break;
+                            
+                        case BindingPropertyKind.BindingPropertyKindEntity:
+                            this.AddEntity(
+                                    entity,
+                                    bpi.PropertyInfo.PropertyName,
+                                    propertyValue,
+                                    null,
+                                    entity);
+                            
+                            break;
+                            
+                        default:
+                            Debug.Assert(bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindComplex, "Must be complex type if PropertyKind is not entity or collection.");
+                            this.AddComplexProperty(
+                                    entity, 
+                                    bpi.PropertyInfo.PropertyName, 
+                                    propertyValue);
+                            break;
+                    }
+                }
+            }
+        }
+
+        private void AttachCollectionNotification(object target)
+        {
+            Debug.Assert(target != null, "Argument 'target' cannot be null");
+
+            INotifyCollectionChanged notify = target as INotifyCollectionChanged;
+            Debug.Assert(notify != null, "DataServiceCollection must implement INotifyCollectionChanged");
+
+            notify.CollectionChanged -= this.observer.OnCollectionChanged;
+            notify.CollectionChanged += this.observer.OnCollectionChanged;
+        }
+
+        private bool AttachEntityOrComplexObjectNotification(object target)
+        {
+            Debug.Assert(target != null, "Argument 'target' cannot be null");
+
+            INotifyPropertyChanged notify = target as INotifyPropertyChanged;
+            if (notify != null)
+            {
+                notify.PropertyChanged -= this.observer.OnPropertyChanged;
+                notify.PropertyChanged += this.observer.OnPropertyChanged;
+                return true;
+            }
+
+            return false;
+        }
+
+        private void DetachNotifications(object target)
+        {
+            Debug.Assert(target != null, "Argument 'target' cannot be null");
+            
+            this.DetachCollectionNotifications(target);
+
+            INotifyPropertyChanged notifyPropertyChanged = target as INotifyPropertyChanged;
+            if (notifyPropertyChanged != null)
+            {
+                notifyPropertyChanged.PropertyChanged -= this.observer.OnPropertyChanged;
+            }
+        }
+
+        private void DetachCollectionNotifications(object target)
+        {
+            Debug.Assert(target != null, "Argument 'target' cannot be null");
+
+            INotifyCollectionChanged notifyCollectionChanged = target as INotifyCollectionChanged;
+            if (notifyCollectionChanged != null)
+            {
+                notifyCollectionChanged.CollectionChanged -= this.observer.OnCollectionChanged;
+            }
+        }
+
+        private void SetObserver<T>(ICollection collection)
+        {
+            DataServiceCollection<T> oec = collection as DataServiceCollection<T>;
+            oec.Observer = this.observer;
+        }
+
+        internal sealed class Graph
+        {
+            private Dictionary<object, Vertex> vertices;
+
+            private Vertex root;
+            
+            public Graph()
+            {
+                this.vertices = new Dictionary<object, Vertex>(ReferenceEqualityComparer<object>.Instance);
+            }
+
+            public Vertex Root
+            {
+                get
+                {
+                    Debug.Assert(this.root != null, "Must have a non-null root vertex when this call is made.");
+                    return this.root;
+                }
+                
+                set
+                {
+                    Debug.Assert(this.root == null, "Must only initialize root vertex once.");   
+                    Debug.Assert(this.ExistsVertex(value.Item), "Must already have the assigned vertex in the graph.");
+                    this.root = value;
+                }
+            }
+
+            public Vertex AddVertex(object item)
+            {
+                Vertex v = new Vertex(item);
+                this.vertices.Add(item, v);
+                return v;
+            }
+
+            public void ClearEdgesForVertex(Vertex v)
+            {
+                foreach (Edge e in v.OutgoingEdges.Concat(v.IncomingEdges).ToList())
+                {
+                    this.RemoveEdge(e.Source.Item, e.Target.Item, e.Label);
+                }
+            }
+
+            public bool ExistsVertex(object item)
+            {
+                Vertex v;
+                return this.vertices.TryGetValue(item, out v);
+            }
+
+            public Vertex LookupVertex(object item)
+            {
+                Vertex v;
+                this.vertices.TryGetValue(item, out v);
+                return v;
+            }
+
+            public Edge AddEdge(object source, object target, string label)
+            {
+                Vertex s = this.vertices[source];
+                Vertex t = this.vertices[target];
+                Edge e = new Edge { Source = s, Target = t, Label = label };
+                s.OutgoingEdges.Add(e);
+                t.IncomingEdges.Add(e);
+                return e;
+            }
+
+            public void RemoveEdge(object source, object target, string label)
+            {
+                Vertex s = this.vertices[source];
+                Vertex t = this.vertices[target];
+                Edge e = new Edge { Source = s, Target = t, Label = label };
+                s.OutgoingEdges.Remove(e);
+                t.IncomingEdges.Remove(e);
+            }
+
+            public bool ExistsEdge(object source, object target, string label)
+            {
+                Edge e = new Edge { Source = this.vertices[source], Target = this.vertices[target], Label = label };
+                return this.vertices[source].OutgoingEdges.Any(r => r.Equals(e));
+            }
+
+            public IList<object> Select(Func<object, bool> filter)
+            {
+                return this.vertices.Keys.Where(filter).ToList();
+            }
+
+            public void Reset(Action<object> action)
+            {
+                foreach (object obj in this.vertices.Keys)
+                {
+                    action(obj);
+                }
+
+                this.vertices.Clear();
+            }
+
+            public void RemoveUnreachableVertices(Action<object> detachAction)
+            {
+                try
+                {
+                    foreach (Vertex v in this.UnreachableVertices())
+                    {
+                        this.ClearEdgesForVertex(v);
+                        detachAction(v.Item);
+                        this.vertices.Remove(v.Item);
+                    }
+                }
+                finally
+                {
+                    foreach (Vertex v in this.vertices.Values)
+                    {
+                        v.Color = VertexColor.White;
+                    }
+                }
+            }
+            
+            private IEnumerable<Vertex> UnreachableVertices()
+            {
+                Queue<Vertex> q = new Queue<Vertex>();
+                
+                this.Root.Color = VertexColor.Gray;
+                q.Enqueue(this.Root);
+                
+                while (q.Count != 0)
+                {
+                    Vertex current = q.Dequeue();
+                    
+                    foreach (Edge e in current.OutgoingEdges)
+                    {
+                        if (e.Target.Color == VertexColor.White)
+                        {
+                            e.Target.Color = VertexColor.Gray;
+                            q.Enqueue(e.Target);
+                        }
+                    }
+                    
+                    current.Color = VertexColor.Black;
+                }
+                
+                return this.vertices.Values.Where(v => v.Color == VertexColor.White).ToList();
+            }
+        }
+
+        internal sealed class Vertex
+        {
+            private List<Edge> incomingEdges;
+            
+            private List<Edge> outgoingEdges;
+
+            public Vertex(object item)
+            {
+                Debug.Assert(item != null, "item must be non-null");
+                this.Item = item;
+                this.Color = VertexColor.White;
+            }
+
+            public object Item
+            {
+                get;
+                private set;
+            }
+
+            public string EntitySet
+            {
+                get;
+                set;
+            }
+
+            public bool IsCollection
+            {
+                get;
+                set;
+            }
+
+            public bool IsComplex
+            {
+                get;
+                set;
+            }
+
+            public Vertex Parent
+            {
+                get;
+                set;
+            }
+
+            public string ParentProperty
+            {
+                get;
+                set;
+            }
+
+            public bool IsRootCollection
+            {
+                get
+                {
+                    return this.IsCollection && this.Parent == null;
+                }
+            }
+
+            public VertexColor Color
+            {
+                get;
+                set;
+            }
+
+            public IList<Edge> IncomingEdges
+            {
+                get
+                {
+                    if (this.incomingEdges == null)
+                    {
+                        this.incomingEdges = new List<Edge>();
+                    }
+
+                    return this.incomingEdges;
+                }
+            }
+
+            public IList<Edge> OutgoingEdges
+            {
+                get
+                {
+                    if (this.outgoingEdges == null)
+                    {
+                        this.outgoingEdges = new List<Edge>();
+                    }
+
+                    return this.outgoingEdges;
+                }
+            }
+
+            public void GetEntityCollectionInfo(
+                out object source,
+                out string sourceProperty,
+                out string sourceEntitySet,
+                out string targetEntitySet)
+            {
+                Debug.Assert(this.IsCollection, "Must be a collection to be in this method");
+
+                if (!this.IsRootCollection)
+                {
+                    Debug.Assert(this.Parent != null, "Parent must be non-null for child collection");
+                    
+                    source = this.Parent.Item;
+                    Debug.Assert(source != null, "Source object must be present for child collection");
+
+                    sourceProperty = this.ParentProperty;
+                    Debug.Assert(sourceProperty != null, "Source entity property associated with a child collection must be non-null");
+
+#if DEBUG
+                    PropertyInfo propertyInfo = source.GetType().GetProperty(sourceProperty);
+                    Debug.Assert(propertyInfo != null, "Unable to get information for the source entity property associated with a child collection");
+#endif
+                    sourceEntitySet = this.Parent.EntitySet;
+                }
+                else
+                {
+                    Debug.Assert(this.Parent == null, "Parent must be null for top level collection");
+                    source = null;
+                    sourceProperty = null;
+                    sourceEntitySet = null;
+                }
+
+                targetEntitySet = this.EntitySet;
+            }
+        }
+
+        internal sealed class Edge : IEquatable<Edge>
+        {
+            public Vertex Source
+            {
+                get;
+                set;
+            }
+
+            public Vertex Target
+            {
+                get;
+                set;
+            }
+
+            public string Label
+            {
+                get;
+                set;
+            }
+
+            public bool Equals(Edge other)
+            {
+                return other != null &&
+                    Object.ReferenceEquals(this.Source, other.Source) &&
+                    Object.ReferenceEquals(this.Target, other.Target) &&
+                    this.Label == other.Label;
+            }
+        }    
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingObserver.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingObserver.cs
@@ -1,812 +1,812 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-#region Namespaces
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Collections.Specialized;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Reflection;
-#endregion    
-
-    internal sealed class BindingObserver
-    {
-        #region Fields
-        
-        private BindingGraph bindingGraph;
-
-        #endregion
-
-        #region Constructor
-        
-        internal BindingObserver(DataServiceContext context, Func<EntityChangedParams, bool> entityChanged, Func<EntityCollectionChangedParams, bool> collectionChanged)
-        {
-            Debug.Assert(context != null, "Must have been validated during DataServiceCollection construction.");
-            this.Context = context;
-            this.Context.ChangesSaved += this.OnChangesSaved;
-            
-            this.EntityChanged = entityChanged;
-            this.CollectionChanged = collectionChanged;
-            
-            this.bindingGraph = new BindingGraph(this);
-        }
-        
-        #endregion
-
-        #region Properties
-
-        internal DataServiceContext Context
-        {
-            get;
-            private set;
-        }
-
-        internal bool AttachBehavior
-        {
-            get;
-            set;
-        }
-
-        internal bool DetachBehavior
-        {
-            get;
-            set;
-        }
-
-        internal Func<EntityChangedParams, bool> EntityChanged
-        {
-            get;
-            private set;
-        }
-
-        internal Func<EntityCollectionChangedParams, bool> CollectionChanged
-        {
-            get;
-            private set;
-        }
-
-        #endregion
-
-        #region Methods
-        
-        internal void StartTracking<T>(DataServiceCollection<T> collection, string collectionEntitySet)
-        {
-            Debug.Assert(collection != null, "Only constructed collections are tracked.");
-            
-            if (!BindingEntityInfo.IsEntityType(typeof(T)))
-            {
-                throw new ArgumentException(Strings.DataBinding_DataServiceCollectionArgumentMustHaveEntityType(typeof(T)));
-            }
-
-            try
-            {
-                this.AttachBehavior = true;
-
-                this.bindingGraph.AddCollection(null, null, collection, collectionEntitySet);
-            }
-            finally
-            {
-                this.AttachBehavior = false;
-            }
-        }
-
-        internal void StopTracking()
-        {
-            this.bindingGraph.Reset();
-
-            this.Context.ChangesSaved -= this.OnChangesSaved;
-        }
-
-#if ASTORIA_LIGHT
-        internal bool LookupParent<T>(DataServiceCollection<T> collection, out object parentEntity, out string parentProperty)
-        {
-            string sourceEntitySet;
-            string targetEntitySet;
-            this.bindingGraph.GetEntityCollectionInfo(collection, out parentEntity, out parentProperty, out sourceEntitySet, out targetEntitySet);
-
-            return parentEntity != null;
-        }
-#endif
-
-        internal void OnPropertyChanged(object source, PropertyChangedEventArgs eventArgs)
-        {
-            Util.CheckArgumentNull(source, "source");
-            Util.CheckArgumentNull(eventArgs, "eventArgs");
-
-#if DEBUG
-            Debug.Assert(this.bindingGraph.IsTracking(source), "Entity must be part of the graph if it has the event notification registered.");
-#endif
-            string sourceProperty = eventArgs.PropertyName;
-
-            if (String.IsNullOrEmpty(sourceProperty))
-            {
-                this.HandleUpdateEntity(
-                        source,
-                        null,
-                        null);
-            }
-            else
-            {
-                BindingEntityInfo.BindingPropertyInfo bpi;
-                
-                object sourcePropertyValue = BindingEntityInfo.GetPropertyValue(source, sourceProperty, out bpi);
-                
-                if (bpi != null)
-                {
-                    this.bindingGraph.RemoveRelation(source, sourceProperty);
-
-                    switch (bpi.PropertyKind)
-                    {
-                        case BindingPropertyKind.BindingPropertyKindCollection:
-                            if (sourcePropertyValue != null)
-                            {
-                                try
-                                {
-                                    typeof(BindingUtils)
-                                        .GetMethod("VerifyObserverNotPresent", BindingFlags.NonPublic | BindingFlags.Static)
-                                        .MakeGenericMethod(bpi.PropertyInfo.CollectionType)
-                                        .Invoke(null, new object[] { sourcePropertyValue, sourceProperty, source.GetType() });
-                                }
-                                catch (TargetInvocationException tie)
-                                {
-                                    throw tie.InnerException;
-                                }
-
-                                try
-                                {
-                                    this.AttachBehavior = true;
-                                    this.bindingGraph.AddCollection(
-                                            source,
-                                            sourceProperty,
-                                            sourcePropertyValue,
-                                            null);
-                                }
-                                finally
-                                {
-                                    this.AttachBehavior = false;
-                                }
-                            }
-                            
-                            break;
-
-                        case BindingPropertyKind.BindingPropertyKindEntity:
-                            this.bindingGraph.AddEntity(
-                                    source,
-                                    sourceProperty,
-                                    sourcePropertyValue,
-                                    null,
-                                    source);
-                            break;
-
-                        default:
-                            Debug.Assert(bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindComplex, "Must be complex type if PropertyKind is not entity or collection.");
-                            
-                            if (sourcePropertyValue != null)
-                            {
-                                this.bindingGraph.AddComplexProperty(
-                                        source, 
-                                        sourceProperty, 
-                                        sourcePropertyValue);
-                            }
-
-                            this.HandleUpdateEntity(
-                                    source,
-                                    sourceProperty,
-                                    sourcePropertyValue);
-                            break;
-                    }
-                }
-                else
-                {
-                    this.HandleUpdateEntity(
-                            source, 
-                            sourceProperty, 
-                            sourcePropertyValue);
-                }
-            }
-        }
-
-        internal void OnCollectionChanged(object collection, NotifyCollectionChangedEventArgs eventArgs)
-        {
-            Util.CheckArgumentNull(collection, "collection");
-            Util.CheckArgumentNull(eventArgs, "eventArgs");
-
-            Debug.Assert(BindingEntityInfo.IsDataServiceCollection(collection.GetType()), "We only register this event for DataServiceCollections.");
-#if DEBUG
-            Debug.Assert(this.bindingGraph.IsTracking(collection), "Collection must be part of the graph if it has the event notification registered.");
-#endif
-            object source;
-            string sourceProperty;
-            string sourceEntitySet;
-            string targetEntitySet;
-
-            this.bindingGraph.GetEntityCollectionInfo(
-                    collection, 
-                    out source, 
-                    out sourceProperty, 
-                    out sourceEntitySet, 
-                    out targetEntitySet);
-
-            switch (eventArgs.Action)
-            {
-                case NotifyCollectionChangedAction.Add:
-                    this.OnAddToCollection(
-                            eventArgs, 
-                            source, 
-                            sourceProperty, 
-                            targetEntitySet, 
-                            collection);
-                    break;
-
-                case NotifyCollectionChangedAction.Remove:
-                    this.OnDeleteFromCollection(
-                            eventArgs, 
-                            source, 
-                            sourceProperty, 
-                            collection);
-                    break;
-
-                case NotifyCollectionChangedAction.Replace:
-                    this.OnDeleteFromCollection(
-                            eventArgs, 
-                            source, 
-                            sourceProperty, 
-                            collection);
-                            
-                    this.OnAddToCollection(
-                            eventArgs, 
-                            source, 
-                            sourceProperty, 
-                            targetEntitySet, 
-                            collection);
-                    break;
-
-                case NotifyCollectionChangedAction.Reset:
-                    if (this.DetachBehavior)
-                    {
-                        this.RemoveWithDetachCollection(collection);
-                    }
-                    else
-                    {
-                        this.bindingGraph.RemoveCollection(collection);
-                    }
-
-                    break;
-
-#if !ASTORIA_LIGHT
-                case NotifyCollectionChangedAction.Move:
-                    break;
-#endif
-
-                default:
-                    throw new InvalidOperationException(Strings.DataBinding_CollectionChangedUnknownAction(eventArgs.Action));
-            }
-        }
-
-        internal void HandleAddEntity(
-            object source,
-            string sourceProperty,
-            string sourceEntitySet,
-            ICollection collection,
-            object target,
-            string targetEntitySet)
-        {
-            if (this.Context.ApplyingChanges)
-            {
-                return;
-            }
-            
-            Debug.Assert(
-                (source == null && sourceProperty == null) || (source != null && !String.IsNullOrEmpty(sourceProperty)), 
-                "source and sourceProperty should either both be present or both be absent.");
-        
-            Debug.Assert(target != null, "target must be provided by the caller.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "target must be an entity type.");
-
-            if (source != null && this.IsDetachedOrDeletedFromContext(source))
-            {
-                return;
-            }
-            
-            EntityDescriptor targetDescriptor = this.Context.GetEntityDescriptor(target);
-
-            bool contextOperationRequired = !this.AttachBehavior && 
-                                           (targetDescriptor == null ||
-                                           (source != null && !this.IsContextTrackingLink(source, sourceProperty, target) && targetDescriptor.State != EntityStates.Deleted));
-
-            if (contextOperationRequired)
-            {
-                if (this.CollectionChanged != null)
-                {
-                    EntityCollectionChangedParams args = new EntityCollectionChangedParams(
-                            this.Context,
-                            source,
-                            sourceProperty,
-                            sourceEntitySet,
-                            collection,
-                            target,
-                            targetEntitySet,
-                            NotifyCollectionChangedAction.Add);
-
-                    if (this.CollectionChanged(args))
-                    {
-                        return;
-                    }
-                }
-            }
-
-            if (source != null && this.IsDetachedOrDeletedFromContext(source))
-            {
-                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_DetachedSource);
-            }
-
-            targetDescriptor = this.Context.GetEntityDescriptor(target);
-            
-            if (source != null)
-            {
-                if (this.AttachBehavior)
-                {
-                    if (targetDescriptor == null)
-                    {
-                        BindingUtils.ValidateEntitySetName(targetEntitySet, target);
-                        
-                        this.Context.AttachTo(targetEntitySet, target);
-                        this.Context.AttachLink(source, sourceProperty, target);
-                    }
-                    else
-                    if (targetDescriptor.State != EntityStates.Deleted && !this.IsContextTrackingLink(source, sourceProperty, target))
-                    {
-                        this.Context.AttachLink(source, sourceProperty, target);
-                    }
-                }
-                else
-                {
-                    if (targetDescriptor == null)
-                    {
-                        this.Context.AddRelatedObject(source, sourceProperty, target);
-                    }
-                    else
-                    if (targetDescriptor.State != EntityStates.Deleted && !this.IsContextTrackingLink(source, sourceProperty, target))
-                    {
-                        this.Context.AddLink(source, sourceProperty, target);
-                    }
-                }
-            }
-            else
-            if (targetDescriptor == null)
-            {
-                BindingUtils.ValidateEntitySetName(targetEntitySet, target);
-                
-                if (this.AttachBehavior)
-                {
-                    this.Context.AttachTo(targetEntitySet, target);
-                }
-                else
-                {
-                    this.Context.AddObject(targetEntitySet, target);
-                }
-            }
-        }
-
-        internal void HandleDeleteEntity(
-            object source,
-            string sourceProperty,
-            string sourceEntitySet,
-            ICollection collection,
-            object target,
-            string targetEntitySet)
-        {
-            if (this.Context.ApplyingChanges)
-            {
-                return;
-            }
-
-            Debug.Assert(
-                (source == null && sourceProperty == null) || (source != null && !String.IsNullOrEmpty(sourceProperty)),
-                "source and sourceProperty should either both be present or both be absent.");
-
-            Debug.Assert(target != null, "target must be provided by the caller.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "target must be an entity type.");
-
-            Debug.Assert(!this.AttachBehavior, "AttachBehavior is only allowed during Construction and Load when this method should never be entered.");
-
-            if (source != null && this.IsDetachedOrDeletedFromContext(source))
-            {
-                return;
-            }
-
-            bool contextOperationRequired = this.IsContextTrackingEntity(target) && !this.DetachBehavior;
-            
-            if (contextOperationRequired)
-            {
-                if (this.CollectionChanged != null)
-                {
-                    EntityCollectionChangedParams args = new EntityCollectionChangedParams(
-                            this.Context,
-                            source,
-                            sourceProperty,
-                            sourceEntitySet,
-                            collection,
-                            target,
-                            targetEntitySet,
-                            NotifyCollectionChangedAction.Remove);
-
-                    if (this.CollectionChanged(args))
-                    {
-                        return;
-                    }
-                }
-            }
-
-            if (source != null && !this.IsContextTrackingEntity(source))
-            {
-                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_DetachedSource);
-            }
-
-            if (this.IsContextTrackingEntity(target))
-            {
-                if (this.DetachBehavior)
-                {
-                    this.Context.Detach(target);
-                }
-                else
-                {
-                    this.Context.DeleteObject(target);
-                }
-            }
-        }
-
-        internal void HandleUpdateEntityReference(
-            object source,
-            string sourceProperty,
-            string sourceEntitySet,
-            object target,
-            string targetEntitySet)
-        {
-            if (this.Context.ApplyingChanges)
-            {
-                return;
-            }
-
-            Debug.Assert(source != null, "source can not be null for update operations.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(source.GetType()), "source must be an entity with keys.");
-            Debug.Assert(!String.IsNullOrEmpty(sourceProperty), "sourceProperty must be a non-empty string for update operations.");
-            Debug.Assert(!String.IsNullOrEmpty(sourceEntitySet), "sourceEntitySet must be non-empty string for update operation.");
-
-            if (this.IsDetachedOrDeletedFromContext(source))
-            {
-                return;
-            }
-
-            EntityDescriptor targetDescriptor = target != null ? this.Context.GetEntityDescriptor(target) : null;
-
-            bool contextOperationRequired = !this.AttachBehavior && 
-                                            (targetDescriptor == null ||
-                                            !this.IsContextTrackingLink(source, sourceProperty, target));
-
-            if (contextOperationRequired)
-            {
-                if (this.EntityChanged != null)
-                {
-                    EntityChangedParams args = new EntityChangedParams(
-                                                    this.Context,
-                                                    source,
-                                                    sourceProperty,
-                                                    target,
-                                                    sourceEntitySet,
-                                                    targetEntitySet);
-
-                    if (this.EntityChanged(args))
-                    {
-                        return;
-                    }
-                }
-            }
-
-            if (this.IsDetachedOrDeletedFromContext(source))
-            {
-                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_DetachedSource);
-            }
-
-            targetDescriptor = target != null ? this.Context.GetEntityDescriptor(target) : null;
-
-            if (target != null)
-            {
-                if (targetDescriptor == null)
-                {
-                    BindingUtils.ValidateEntitySetName(targetEntitySet, target);
-                    
-                    if (this.AttachBehavior)
-                    {
-                        this.Context.AttachTo(targetEntitySet, target);
-                    }
-                    else
-                    {
-                        this.Context.AddObject(targetEntitySet, target);
-                    }
-                    
-                    targetDescriptor = this.Context.GetEntityDescriptor(target);
-                }
-
-                if (!this.IsContextTrackingLink(source, sourceProperty, target))
-                {
-                    if (this.AttachBehavior)
-                    {
-                        if (targetDescriptor.State != EntityStates.Deleted)
-                        {
-                            this.Context.AttachLink(source, sourceProperty, target);
-                        }
-                    }
-                    else
-                    {
-                        this.Context.SetLink(source, sourceProperty, target);
-                    }
-                }
-            }
-            else
-            {
-                Debug.Assert(!this.AttachBehavior, "During attach operations we must never perform operations for null values.");
-                
-                this.Context.SetLink(source, sourceProperty, null);
-            }
-        }
-
-        internal bool IsContextTrackingEntity(object entity)
-        {
-            Debug.Assert(entity != null, "entity must be provided when checking for context tracking.");
-            return this.Context.GetEntityDescriptor(entity) != default(EntityDescriptor);
-        }
-
-        private void HandleUpdateEntity(object entity, string propertyName, object propertyValue)
-        {
-            Debug.Assert(!this.AttachBehavior || this.Context.ApplyingChanges, "Entity updates must not happen during Attach or construction phases, deserialization case is the exception.");
-
-            if (this.Context.ApplyingChanges)
-            {
-                return;
-            }
-
-            if (!BindingEntityInfo.IsEntityType(entity.GetType()))
-            {
-                this.bindingGraph.GetAncestorEntityForComplexProperty(ref entity, ref propertyName, ref propertyValue);
-            }
-
-            Debug.Assert(entity != null, "entity must be provided for update operations.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(entity.GetType()), "entity must be an entity with keys.");
-            Debug.Assert(!String.IsNullOrEmpty(propertyName) || propertyValue == null, "When propertyName is null no propertyValue should be provided.");
-
-            if (this.IsDetachedOrDeletedFromContext(entity))
-            {
-                return;
-            }
-
-            if (this.EntityChanged != null)
-            {
-                EntityChangedParams args = new EntityChangedParams(
-                                                this.Context, 
-                                                entity, 
-                                                propertyName, 
-                                                propertyValue, 
-                                                null, 
-                                                null);
-
-                if (this.EntityChanged(args))
-                {
-                    return;
-                }
-            }
-
-            if (this.IsContextTrackingEntity(entity))
-            {
-                this.Context.UpdateObject(entity);
-            }
-        }
-
-        private void OnAddToCollection(
-            NotifyCollectionChangedEventArgs eventArgs,
-            object source,
-            String sourceProperty,
-            String targetEntitySet,
-            object collection)
-        {
-            Debug.Assert(collection != null, "Must have a valid collection to which entities are added.");
-            
-            if (eventArgs.NewItems != null)
-            {
-                foreach (object target in eventArgs.NewItems)
-                {
-                    if (target == null)
-                    {
-                        throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNull("Add"));
-                    }
-
-                    if (!BindingEntityInfo.IsEntityType(target.GetType()))
-                    {
-                        throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNotEntity("Add"));
-                    }
-
-                    this.bindingGraph.AddEntity(
-                            source, 
-                            sourceProperty, 
-                            target, 
-                            targetEntitySet, 
-                            collection);
-                }
-            }
-        }
-
-        private void OnDeleteFromCollection(
-            NotifyCollectionChangedEventArgs eventArgs,
-            object source,
-            String sourceProperty,
-            object collection)
-        {
-            Debug.Assert(collection != null, "Must have a valid collection from which entities are removed.");
-            Debug.Assert(
-                (source == null && sourceProperty == null) || (source != null && !String.IsNullOrEmpty(sourceProperty)), 
-                "source and sourceProperty must both be null or both be non-null.");
-
-            if (eventArgs.OldItems != null)
-            {
-                this.DeepRemoveCollection(
-                        eventArgs.OldItems, 
-                        source ?? collection, 
-                        sourceProperty, 
-                        this.ValidateCollectionItem);
-            }
-        }
-
-        private void RemoveWithDetachCollection(object collection)
-        {
-            Debug.Assert(this.DetachBehavior, "Must be detaching each item in collection.");
-
-            object source = null;
-            string sourceProperty = null;
-            string sourceEntitySet = null;
-            string targetEntitySet = null;
-
-            this.bindingGraph.GetEntityCollectionInfo(
-                    collection,
-                    out source,
-                    out sourceProperty,
-                    out sourceEntitySet,
-                    out targetEntitySet);
-
-            this.DeepRemoveCollection(
-                    this.bindingGraph.GetCollectionItems(collection),
-                    source ?? collection,
-                    sourceProperty,
-                    null);
-        }
-
-        private void DeepRemoveCollection(IEnumerable collection, object source, string sourceProperty, Action<object> itemValidator)
-        {
-            foreach (object target in collection)
-            {
-                if (itemValidator != null)
-                {
-                    itemValidator(target);
-                }
-
-                List<UnTrackingInfo> untrackingInfo = new List<UnTrackingInfo>();
-
-                this.CollectUnTrackingInfo(
-                        target,
-                        source,
-                        sourceProperty,
-                        untrackingInfo);
-
-                foreach (UnTrackingInfo info in untrackingInfo)
-                {
-                    this.bindingGraph.Remove(
-                            info.Entity,
-                            info.Parent,
-                            info.ParentProperty);
-                }
-            }
-
-            this.bindingGraph.RemoveUnreachableVertices();
-        }
-
-        private void OnChangesSaved(object sender, SaveChangesEventArgs eventArgs)
-        {
-            this.bindingGraph.RemoveNonTrackedEntities();
-        }
-
-        private void CollectUnTrackingInfo(
-            object currentEntity, 
-            object parentEntity, 
-            string parentProperty, 
-            IList<UnTrackingInfo> entitiesToUnTrack)
-        {
-            foreach (var ed in this.Context
-                                   .Entities
-                                   .Where(x => x.ParentEntity == currentEntity && x.State == EntityStates.Added))
-            {
-                this.CollectUnTrackingInfo(
-                        ed.Entity, 
-                        ed.ParentEntity, 
-                        ed.ParentPropertyForInsert, 
-                        entitiesToUnTrack);
-            }
-            
-            entitiesToUnTrack.Add(new UnTrackingInfo 
-                                  {
-                                    Entity = currentEntity, 
-                                    Parent = parentEntity, 
-                                    ParentProperty = parentProperty
-                                  });
-        }
-
-        private bool IsContextTrackingLink(object source, string sourceProperty, object target)
-        {
-            Debug.Assert(source != null, "source entity must be provided.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(source.GetType()), "source must be an entity with keys.");
-
-            Debug.Assert(!String.IsNullOrEmpty(sourceProperty), "sourceProperty must be provided.");
-
-            Debug.Assert(target != null, "target entity must be provided.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "target must be an entity with keys.");
-            
-            return this.Context.GetLinkDescriptor(source, sourceProperty, target) != default(LinkDescriptor);
-        }
-        
-        private bool IsDetachedOrDeletedFromContext(object entity)
-        {
-            Debug.Assert(entity != null, "entity must be provided.");
-            Debug.Assert(BindingEntityInfo.IsEntityType(entity.GetType()), "entity must be an entity with keys.");
-
-            EntityDescriptor descriptor = this.Context.GetEntityDescriptor(entity);
-            return descriptor == null || descriptor.State == EntityStates.Deleted;
-        }
-
-        private void ValidateCollectionItem(object target)
-        {
-            if (target == null)
-            {
-                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNull("Remove"));
-            }
-
-            if (!BindingEntityInfo.IsEntityType(target.GetType()))
-            {
-                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNotEntity("Remove"));
-            }
-        }
-
-        #endregion
-
-        private class UnTrackingInfo
-        {
-            public object Entity 
-            { 
-                get; 
-                set; 
-            }
-            
-            public object Parent 
-            { 
-                get; 
-                set; 
-            }
-            
-            public string ParentProperty 
-            { 
-                get; 
-                set; 
-            }
-        }
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+#region Namespaces
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Collections.Specialized;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Reflection;
+#endregion    
+
+    internal sealed class BindingObserver
+    {
+        #region Fields
+        
+        private BindingGraph bindingGraph;
+
+        #endregion
+
+        #region Constructor
+        
+        internal BindingObserver(DataServiceContext context, Func<EntityChangedParams, bool> entityChanged, Func<EntityCollectionChangedParams, bool> collectionChanged)
+        {
+            Debug.Assert(context != null, "Must have been validated during DataServiceCollection construction.");
+            this.Context = context;
+            this.Context.ChangesSaved += this.OnChangesSaved;
+            
+            this.EntityChanged = entityChanged;
+            this.CollectionChanged = collectionChanged;
+            
+            this.bindingGraph = new BindingGraph(this);
+        }
+        
+        #endregion
+
+        #region Properties
+
+        internal DataServiceContext Context
+        {
+            get;
+            private set;
+        }
+
+        internal bool AttachBehavior
+        {
+            get;
+            set;
+        }
+
+        internal bool DetachBehavior
+        {
+            get;
+            set;
+        }
+
+        internal Func<EntityChangedParams, bool> EntityChanged
+        {
+            get;
+            private set;
+        }
+
+        internal Func<EntityCollectionChangedParams, bool> CollectionChanged
+        {
+            get;
+            private set;
+        }
+
+        #endregion
+
+        #region Methods
+        
+        internal void StartTracking<T>(DataServiceCollection<T> collection, string collectionEntitySet)
+        {
+            Debug.Assert(collection != null, "Only constructed collections are tracked.");
+            
+            if (!BindingEntityInfo.IsEntityType(typeof(T)))
+            {
+                throw new ArgumentException(Strings.DataBinding_DataServiceCollectionArgumentMustHaveEntityType(typeof(T)));
+            }
+
+            try
+            {
+                this.AttachBehavior = true;
+
+                this.bindingGraph.AddCollection(null, null, collection, collectionEntitySet);
+            }
+            finally
+            {
+                this.AttachBehavior = false;
+            }
+        }
+
+        internal void StopTracking()
+        {
+            this.bindingGraph.Reset();
+
+            this.Context.ChangesSaved -= this.OnChangesSaved;
+        }
+
+#if ASTORIA_LIGHT
+        internal bool LookupParent<T>(DataServiceCollection<T> collection, out object parentEntity, out string parentProperty)
+        {
+            string sourceEntitySet;
+            string targetEntitySet;
+            this.bindingGraph.GetEntityCollectionInfo(collection, out parentEntity, out parentProperty, out sourceEntitySet, out targetEntitySet);
+
+            return parentEntity != null;
+        }
+#endif
+
+        internal void OnPropertyChanged(object source, PropertyChangedEventArgs eventArgs)
+        {
+            Util.CheckArgumentNull(source, "source");
+            Util.CheckArgumentNull(eventArgs, "eventArgs");
+
+#if DEBUG
+            Debug.Assert(this.bindingGraph.IsTracking(source), "Entity must be part of the graph if it has the event notification registered.");
+#endif
+            string sourceProperty = eventArgs.PropertyName;
+
+            if (String.IsNullOrEmpty(sourceProperty))
+            {
+                this.HandleUpdateEntity(
+                        source,
+                        null,
+                        null);
+            }
+            else
+            {
+                BindingEntityInfo.BindingPropertyInfo bpi;
+                
+                object sourcePropertyValue = BindingEntityInfo.GetPropertyValue(source, sourceProperty, out bpi);
+                
+                if (bpi != null)
+                {
+                    this.bindingGraph.RemoveRelation(source, sourceProperty);
+
+                    switch (bpi.PropertyKind)
+                    {
+                        case BindingPropertyKind.BindingPropertyKindCollection:
+                            if (sourcePropertyValue != null)
+                            {
+                                try
+                                {
+                                    typeof(BindingUtils)
+                                        .GetMethod("VerifyObserverNotPresent", BindingFlags.NonPublic | BindingFlags.Static)
+                                        .MakeGenericMethod(bpi.PropertyInfo.CollectionType)
+                                        .Invoke(null, new object[] { sourcePropertyValue, sourceProperty, source.GetType() });
+                                }
+                                catch (TargetInvocationException tie)
+                                {
+                                    throw tie.InnerException;
+                                }
+
+                                try
+                                {
+                                    this.AttachBehavior = true;
+                                    this.bindingGraph.AddCollection(
+                                            source,
+                                            sourceProperty,
+                                            sourcePropertyValue,
+                                            null);
+                                }
+                                finally
+                                {
+                                    this.AttachBehavior = false;
+                                }
+                            }
+                            
+                            break;
+
+                        case BindingPropertyKind.BindingPropertyKindEntity:
+                            this.bindingGraph.AddEntity(
+                                    source,
+                                    sourceProperty,
+                                    sourcePropertyValue,
+                                    null,
+                                    source);
+                            break;
+
+                        default:
+                            Debug.Assert(bpi.PropertyKind == BindingPropertyKind.BindingPropertyKindComplex, "Must be complex type if PropertyKind is not entity or collection.");
+                            
+                            if (sourcePropertyValue != null)
+                            {
+                                this.bindingGraph.AddComplexProperty(
+                                        source, 
+                                        sourceProperty, 
+                                        sourcePropertyValue);
+                            }
+
+                            this.HandleUpdateEntity(
+                                    source,
+                                    sourceProperty,
+                                    sourcePropertyValue);
+                            break;
+                    }
+                }
+                else
+                {
+                    this.HandleUpdateEntity(
+                            source, 
+                            sourceProperty, 
+                            sourcePropertyValue);
+                }
+            }
+        }
+
+        internal void OnCollectionChanged(object collection, NotifyCollectionChangedEventArgs eventArgs)
+        {
+            Util.CheckArgumentNull(collection, "collection");
+            Util.CheckArgumentNull(eventArgs, "eventArgs");
+
+            Debug.Assert(BindingEntityInfo.IsDataServiceCollection(collection.GetType()), "We only register this event for DataServiceCollections.");
+#if DEBUG
+            Debug.Assert(this.bindingGraph.IsTracking(collection), "Collection must be part of the graph if it has the event notification registered.");
+#endif
+            object source;
+            string sourceProperty;
+            string sourceEntitySet;
+            string targetEntitySet;
+
+            this.bindingGraph.GetEntityCollectionInfo(
+                    collection, 
+                    out source, 
+                    out sourceProperty, 
+                    out sourceEntitySet, 
+                    out targetEntitySet);
+
+            switch (eventArgs.Action)
+            {
+                case NotifyCollectionChangedAction.Add:
+                    this.OnAddToCollection(
+                            eventArgs, 
+                            source, 
+                            sourceProperty, 
+                            targetEntitySet, 
+                            collection);
+                    break;
+
+                case NotifyCollectionChangedAction.Remove:
+                    this.OnDeleteFromCollection(
+                            eventArgs, 
+                            source, 
+                            sourceProperty, 
+                            collection);
+                    break;
+
+                case NotifyCollectionChangedAction.Replace:
+                    this.OnDeleteFromCollection(
+                            eventArgs, 
+                            source, 
+                            sourceProperty, 
+                            collection);
+                            
+                    this.OnAddToCollection(
+                            eventArgs, 
+                            source, 
+                            sourceProperty, 
+                            targetEntitySet, 
+                            collection);
+                    break;
+
+                case NotifyCollectionChangedAction.Reset:
+                    if (this.DetachBehavior)
+                    {
+                        this.RemoveWithDetachCollection(collection);
+                    }
+                    else
+                    {
+                        this.bindingGraph.RemoveCollection(collection);
+                    }
+
+                    break;
+
+#if !ASTORIA_LIGHT
+                case NotifyCollectionChangedAction.Move:
+                    break;
+#endif
+
+                default:
+                    throw new InvalidOperationException(Strings.DataBinding_CollectionChangedUnknownAction(eventArgs.Action));
+            }
+        }
+
+        internal void HandleAddEntity(
+            object source,
+            string sourceProperty,
+            string sourceEntitySet,
+            ICollection collection,
+            object target,
+            string targetEntitySet)
+        {
+            if (this.Context.ApplyingChanges)
+            {
+                return;
+            }
+            
+            Debug.Assert(
+                (source == null && sourceProperty == null) || (source != null && !String.IsNullOrEmpty(sourceProperty)), 
+                "source and sourceProperty should either both be present or both be absent.");
+        
+            Debug.Assert(target != null, "target must be provided by the caller.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "target must be an entity type.");
+
+            if (source != null && this.IsDetachedOrDeletedFromContext(source))
+            {
+                return;
+            }
+            
+            EntityDescriptor targetDescriptor = this.Context.GetEntityDescriptor(target);
+
+            bool contextOperationRequired = !this.AttachBehavior && 
+                                           (targetDescriptor == null ||
+                                           (source != null && !this.IsContextTrackingLink(source, sourceProperty, target) && targetDescriptor.State != EntityStates.Deleted));
+
+            if (contextOperationRequired)
+            {
+                if (this.CollectionChanged != null)
+                {
+                    EntityCollectionChangedParams args = new EntityCollectionChangedParams(
+                            this.Context,
+                            source,
+                            sourceProperty,
+                            sourceEntitySet,
+                            collection,
+                            target,
+                            targetEntitySet,
+                            NotifyCollectionChangedAction.Add);
+
+                    if (this.CollectionChanged(args))
+                    {
+                        return;
+                    }
+                }
+            }
+
+            if (source != null && this.IsDetachedOrDeletedFromContext(source))
+            {
+                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_DetachedSource);
+            }
+
+            targetDescriptor = this.Context.GetEntityDescriptor(target);
+            
+            if (source != null)
+            {
+                if (this.AttachBehavior)
+                {
+                    if (targetDescriptor == null)
+                    {
+                        BindingUtils.ValidateEntitySetName(targetEntitySet, target);
+                        
+                        this.Context.AttachTo(targetEntitySet, target);
+                        this.Context.AttachLink(source, sourceProperty, target);
+                    }
+                    else
+                    if (targetDescriptor.State != EntityStates.Deleted && !this.IsContextTrackingLink(source, sourceProperty, target))
+                    {
+                        this.Context.AttachLink(source, sourceProperty, target);
+                    }
+                }
+                else
+                {
+                    if (targetDescriptor == null)
+                    {
+                        this.Context.AddRelatedObject(source, sourceProperty, target);
+                    }
+                    else
+                    if (targetDescriptor.State != EntityStates.Deleted && !this.IsContextTrackingLink(source, sourceProperty, target))
+                    {
+                        this.Context.AddLink(source, sourceProperty, target);
+                    }
+                }
+            }
+            else
+            if (targetDescriptor == null)
+            {
+                BindingUtils.ValidateEntitySetName(targetEntitySet, target);
+                
+                if (this.AttachBehavior)
+                {
+                    this.Context.AttachTo(targetEntitySet, target);
+                }
+                else
+                {
+                    this.Context.AddObject(targetEntitySet, target);
+                }
+            }
+        }
+
+        internal void HandleDeleteEntity(
+            object source,
+            string sourceProperty,
+            string sourceEntitySet,
+            ICollection collection,
+            object target,
+            string targetEntitySet)
+        {
+            if (this.Context.ApplyingChanges)
+            {
+                return;
+            }
+
+            Debug.Assert(
+                (source == null && sourceProperty == null) || (source != null && !String.IsNullOrEmpty(sourceProperty)),
+                "source and sourceProperty should either both be present or both be absent.");
+
+            Debug.Assert(target != null, "target must be provided by the caller.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "target must be an entity type.");
+
+            Debug.Assert(!this.AttachBehavior, "AttachBehavior is only allowed during Construction and Load when this method should never be entered.");
+
+            if (source != null && this.IsDetachedOrDeletedFromContext(source))
+            {
+                return;
+            }
+
+            bool contextOperationRequired = this.IsContextTrackingEntity(target) && !this.DetachBehavior;
+            
+            if (contextOperationRequired)
+            {
+                if (this.CollectionChanged != null)
+                {
+                    EntityCollectionChangedParams args = new EntityCollectionChangedParams(
+                            this.Context,
+                            source,
+                            sourceProperty,
+                            sourceEntitySet,
+                            collection,
+                            target,
+                            targetEntitySet,
+                            NotifyCollectionChangedAction.Remove);
+
+                    if (this.CollectionChanged(args))
+                    {
+                        return;
+                    }
+                }
+            }
+
+            if (source != null && !this.IsContextTrackingEntity(source))
+            {
+                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_DetachedSource);
+            }
+
+            if (this.IsContextTrackingEntity(target))
+            {
+                if (this.DetachBehavior)
+                {
+                    this.Context.Detach(target);
+                }
+                else
+                {
+                    this.Context.DeleteObject(target);
+                }
+            }
+        }
+
+        internal void HandleUpdateEntityReference(
+            object source,
+            string sourceProperty,
+            string sourceEntitySet,
+            object target,
+            string targetEntitySet)
+        {
+            if (this.Context.ApplyingChanges)
+            {
+                return;
+            }
+
+            Debug.Assert(source != null, "source can not be null for update operations.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(source.GetType()), "source must be an entity with keys.");
+            Debug.Assert(!String.IsNullOrEmpty(sourceProperty), "sourceProperty must be a non-empty string for update operations.");
+            Debug.Assert(!String.IsNullOrEmpty(sourceEntitySet), "sourceEntitySet must be non-empty string for update operation.");
+
+            if (this.IsDetachedOrDeletedFromContext(source))
+            {
+                return;
+            }
+
+            EntityDescriptor targetDescriptor = target != null ? this.Context.GetEntityDescriptor(target) : null;
+
+            bool contextOperationRequired = !this.AttachBehavior && 
+                                            (targetDescriptor == null ||
+                                            !this.IsContextTrackingLink(source, sourceProperty, target));
+
+            if (contextOperationRequired)
+            {
+                if (this.EntityChanged != null)
+                {
+                    EntityChangedParams args = new EntityChangedParams(
+                                                    this.Context,
+                                                    source,
+                                                    sourceProperty,
+                                                    target,
+                                                    sourceEntitySet,
+                                                    targetEntitySet);
+
+                    if (this.EntityChanged(args))
+                    {
+                        return;
+                    }
+                }
+            }
+
+            if (this.IsDetachedOrDeletedFromContext(source))
+            {
+                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_DetachedSource);
+            }
+
+            targetDescriptor = target != null ? this.Context.GetEntityDescriptor(target) : null;
+
+            if (target != null)
+            {
+                if (targetDescriptor == null)
+                {
+                    BindingUtils.ValidateEntitySetName(targetEntitySet, target);
+                    
+                    if (this.AttachBehavior)
+                    {
+                        this.Context.AttachTo(targetEntitySet, target);
+                    }
+                    else
+                    {
+                        this.Context.AddObject(targetEntitySet, target);
+                    }
+                    
+                    targetDescriptor = this.Context.GetEntityDescriptor(target);
+                }
+
+                if (!this.IsContextTrackingLink(source, sourceProperty, target))
+                {
+                    if (this.AttachBehavior)
+                    {
+                        if (targetDescriptor.State != EntityStates.Deleted)
+                        {
+                            this.Context.AttachLink(source, sourceProperty, target);
+                        }
+                    }
+                    else
+                    {
+                        this.Context.SetLink(source, sourceProperty, target);
+                    }
+                }
+            }
+            else
+            {
+                Debug.Assert(!this.AttachBehavior, "During attach operations we must never perform operations for null values.");
+                
+                this.Context.SetLink(source, sourceProperty, null);
+            }
+        }
+
+        internal bool IsContextTrackingEntity(object entity)
+        {
+            Debug.Assert(entity != null, "entity must be provided when checking for context tracking.");
+            return this.Context.GetEntityDescriptor(entity) != default(EntityDescriptor);
+        }
+
+        private void HandleUpdateEntity(object entity, string propertyName, object propertyValue)
+        {
+            Debug.Assert(!this.AttachBehavior || this.Context.ApplyingChanges, "Entity updates must not happen during Attach or construction phases, deserialization case is the exception.");
+
+            if (this.Context.ApplyingChanges)
+            {
+                return;
+            }
+
+            if (!BindingEntityInfo.IsEntityType(entity.GetType()))
+            {
+                this.bindingGraph.GetAncestorEntityForComplexProperty(ref entity, ref propertyName, ref propertyValue);
+            }
+
+            Debug.Assert(entity != null, "entity must be provided for update operations.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(entity.GetType()), "entity must be an entity with keys.");
+            Debug.Assert(!String.IsNullOrEmpty(propertyName) || propertyValue == null, "When propertyName is null no propertyValue should be provided.");
+
+            if (this.IsDetachedOrDeletedFromContext(entity))
+            {
+                return;
+            }
+
+            if (this.EntityChanged != null)
+            {
+                EntityChangedParams args = new EntityChangedParams(
+                                                this.Context, 
+                                                entity, 
+                                                propertyName, 
+                                                propertyValue, 
+                                                null, 
+                                                null);
+
+                if (this.EntityChanged(args))
+                {
+                    return;
+                }
+            }
+
+            if (this.IsContextTrackingEntity(entity))
+            {
+                this.Context.UpdateObject(entity);
+            }
+        }
+
+        private void OnAddToCollection(
+            NotifyCollectionChangedEventArgs eventArgs,
+            object source,
+            String sourceProperty,
+            String targetEntitySet,
+            object collection)
+        {
+            Debug.Assert(collection != null, "Must have a valid collection to which entities are added.");
+            
+            if (eventArgs.NewItems != null)
+            {
+                foreach (object target in eventArgs.NewItems)
+                {
+                    if (target == null)
+                    {
+                        throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNull("Add"));
+                    }
+
+                    if (!BindingEntityInfo.IsEntityType(target.GetType()))
+                    {
+                        throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNotEntity("Add"));
+                    }
+
+                    this.bindingGraph.AddEntity(
+                            source, 
+                            sourceProperty, 
+                            target, 
+                            targetEntitySet, 
+                            collection);
+                }
+            }
+        }
+
+        private void OnDeleteFromCollection(
+            NotifyCollectionChangedEventArgs eventArgs,
+            object source,
+            String sourceProperty,
+            object collection)
+        {
+            Debug.Assert(collection != null, "Must have a valid collection from which entities are removed.");
+            Debug.Assert(
+                (source == null && sourceProperty == null) || (source != null && !String.IsNullOrEmpty(sourceProperty)), 
+                "source and sourceProperty must both be null or both be non-null.");
+
+            if (eventArgs.OldItems != null)
+            {
+                this.DeepRemoveCollection(
+                        eventArgs.OldItems, 
+                        source ?? collection, 
+                        sourceProperty, 
+                        this.ValidateCollectionItem);
+            }
+        }
+
+        private void RemoveWithDetachCollection(object collection)
+        {
+            Debug.Assert(this.DetachBehavior, "Must be detaching each item in collection.");
+
+            object source = null;
+            string sourceProperty = null;
+            string sourceEntitySet = null;
+            string targetEntitySet = null;
+
+            this.bindingGraph.GetEntityCollectionInfo(
+                    collection,
+                    out source,
+                    out sourceProperty,
+                    out sourceEntitySet,
+                    out targetEntitySet);
+
+            this.DeepRemoveCollection(
+                    this.bindingGraph.GetCollectionItems(collection),
+                    source ?? collection,
+                    sourceProperty,
+                    null);
+        }
+
+        private void DeepRemoveCollection(IEnumerable collection, object source, string sourceProperty, Action<object> itemValidator)
+        {
+            foreach (object target in collection)
+            {
+                if (itemValidator != null)
+                {
+                    itemValidator(target);
+                }
+
+                List<UnTrackingInfo> untrackingInfo = new List<UnTrackingInfo>();
+
+                this.CollectUnTrackingInfo(
+                        target,
+                        source,
+                        sourceProperty,
+                        untrackingInfo);
+
+                foreach (UnTrackingInfo info in untrackingInfo)
+                {
+                    this.bindingGraph.Remove(
+                            info.Entity,
+                            info.Parent,
+                            info.ParentProperty);
+                }
+            }
+
+            this.bindingGraph.RemoveUnreachableVertices();
+        }
+
+        private void OnChangesSaved(object sender, SaveChangesEventArgs eventArgs)
+        {
+            this.bindingGraph.RemoveNonTrackedEntities();
+        }
+
+        private void CollectUnTrackingInfo(
+            object currentEntity, 
+            object parentEntity, 
+            string parentProperty, 
+            IList<UnTrackingInfo> entitiesToUnTrack)
+        {
+            foreach (var ed in this.Context
+                                   .Entities
+                                   .Where(x => x.ParentEntity == currentEntity && x.State == EntityStates.Added))
+            {
+                this.CollectUnTrackingInfo(
+                        ed.Entity, 
+                        ed.ParentEntity, 
+                        ed.ParentPropertyForInsert, 
+                        entitiesToUnTrack);
+            }
+            
+            entitiesToUnTrack.Add(new UnTrackingInfo 
+                                  {
+                                    Entity = currentEntity, 
+                                    Parent = parentEntity, 
+                                    ParentProperty = parentProperty
+                                  });
+        }
+
+        private bool IsContextTrackingLink(object source, string sourceProperty, object target)
+        {
+            Debug.Assert(source != null, "source entity must be provided.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(source.GetType()), "source must be an entity with keys.");
+
+            Debug.Assert(!String.IsNullOrEmpty(sourceProperty), "sourceProperty must be provided.");
+
+            Debug.Assert(target != null, "target entity must be provided.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(target.GetType()), "target must be an entity with keys.");
+            
+            return this.Context.GetLinkDescriptor(source, sourceProperty, target) != default(LinkDescriptor);
+        }
+        
+        private bool IsDetachedOrDeletedFromContext(object entity)
+        {
+            Debug.Assert(entity != null, "entity must be provided.");
+            Debug.Assert(BindingEntityInfo.IsEntityType(entity.GetType()), "entity must be an entity with keys.");
+
+            EntityDescriptor descriptor = this.Context.GetEntityDescriptor(entity);
+            return descriptor == null || descriptor.State == EntityStates.Deleted;
+        }
+
+        private void ValidateCollectionItem(object target)
+        {
+            if (target == null)
+            {
+                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNull("Remove"));
+            }
+
+            if (!BindingEntityInfo.IsEntityType(target.GetType()))
+            {
+                throw new InvalidOperationException(Strings.DataBinding_BindingOperation_ArrayItemNotEntity("Remove"));
+            }
+        }
+
+        #endregion
+
+        private class UnTrackingInfo
+        {
+            public object Entity 
+            { 
+                get; 
+                set; 
+            }
+            
+            public object Parent 
+            { 
+                get; 
+                set; 
+            }
+            
+            public string ParentProperty 
+            { 
+                get; 
+                set; 
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingUtils.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/BindingUtils.cs
@@ -1,59 +1,59 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-#region Namespaces
-    using System.Diagnostics;
-    using System.Diagnostics.CodeAnalysis;
-    using System.Reflection;
-    using System.Collections;
-#endregion
-
-    internal static class BindingUtils
-    {
-        internal static void ValidateEntitySetName(string entitySetName, object entity)
-        {
-            if (String.IsNullOrEmpty(entitySetName))
-            {
-                throw new InvalidOperationException(Strings.DataBinding_Util_UnknownEntitySetName(entity.GetType().FullName));
-            }
-        }
-        
-        internal static Type GetCollectionEntityType(Type collectionType)
-        {
-            while (collectionType != null)
-            {
-                if (collectionType.IsGenericType && WebUtil.IsDataServiceCollectionType(collectionType.GetGenericTypeDefinition()))
-                {
-                    return collectionType.GetGenericArguments()[0];
-                }
-
-                collectionType = collectionType.BaseType;
-            }
-
-            return null;
-        }
-
-        internal static void VerifyObserverNotPresent<T>(object oec, string sourceProperty, Type sourceType)
-        {
-            Debug.Assert(BindingEntityInfo.IsDataServiceCollection(oec.GetType()), "Must be an DataServiceCollection.");
-            
-            DataServiceCollection<T> typedCollection = oec as DataServiceCollection<T>;
-            
-            if (typedCollection.Observer != null)
-            {
-                throw new InvalidOperationException(Strings.DataBinding_CollectionPropertySetterValueHasObserver(sourceProperty, sourceType));
-            }
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+#region Namespaces
+    using System.Diagnostics;
+    using System.Diagnostics.CodeAnalysis;
+    using System.Reflection;
+    using System.Collections;
+#endregion
+
+    internal static class BindingUtils
+    {
+        internal static void ValidateEntitySetName(string entitySetName, object entity)
+        {
+            if (String.IsNullOrEmpty(entitySetName))
+            {
+                throw new InvalidOperationException(Strings.DataBinding_Util_UnknownEntitySetName(entity.GetType().FullName));
+            }
+        }
+        
+        internal static Type GetCollectionEntityType(Type collectionType)
+        {
+            while (collectionType != null)
+            {
+                if (collectionType.IsGenericType && WebUtil.IsDataServiceCollectionType(collectionType.GetGenericTypeDefinition()))
+                {
+                    return collectionType.GetGenericArguments()[0];
+                }
+
+                collectionType = collectionType.BaseType;
+            }
+
+            return null;
+        }
+
+        internal static void VerifyObserverNotPresent<T>(object oec, string sourceProperty, Type sourceType)
+        {
+            Debug.Assert(BindingEntityInfo.IsDataServiceCollection(oec.GetType()), "Must be an DataServiceCollection.");
+            
+            DataServiceCollection<T> typedCollection = oec as DataServiceCollection<T>;
+            
+            if (typedCollection.Observer != null)
+            {
+                throw new InvalidOperationException(Strings.DataBinding_CollectionPropertySetterValueHasObserver(sourceProperty, sourceType));
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/DataServiceCollectionOfT.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/DataServiceCollectionOfT.cs
@@ -1,557 +1,557 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.ComponentModel;
-    using System.Diagnostics;
-    using System.Linq;
-
-    #endregion Namespaces.
-
-    public enum TrackingMode
-    {
-        None,
-
-        AutoChangeTracking
-    }
-
-    public class DataServiceCollection<T> : ObservableCollection<T>
-    {
-        #region Private fields.
-
-        private BindingObserver observer;
-
-        private bool rootCollection;
-
-        private DataServiceQueryContinuation<T> continuation;
-
-        private bool trackingOnLoad;
-
-        private Func<EntityChangedParams, bool> entityChangedCallback;
-
-        private Func<EntityCollectionChangedParams, bool> collectionChangedCallback;
-
-        private string entitySetName;
-
-#if ASTORIA_LIGHT
-        private bool asyncOperationInProgress;
-#endif
-
-        #endregion Private fields.
-
-        public DataServiceCollection()
-            : this(null, null, TrackingMode.AutoChangeTracking, null, null, null)
-        {
-        }
-
-        public DataServiceCollection(IEnumerable<T> items)
-            : this(null, items, TrackingMode.AutoChangeTracking, null, null, null)
-        {
-        }
-
-        public DataServiceCollection(IEnumerable<T> items, TrackingMode trackingMode)
-            : this(null, items, trackingMode, null, null, null)
-        {
-        }
-
-        public DataServiceCollection(DataServiceContext context)
-            : this(context, null, TrackingMode.AutoChangeTracking, null, null, null)
-        {
-        }
-
-        public DataServiceCollection(
-            DataServiceContext context, 
-            string entitySetName, 
-            Func<EntityChangedParams, bool> entityChangedCallback, 
-            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
-            : this(context, null, TrackingMode.AutoChangeTracking, entitySetName, entityChangedCallback, collectionChangedCallback)
-        {
-        }
-
-        public DataServiceCollection(
-            IEnumerable<T> items, 
-            TrackingMode trackingMode, 
-            string entitySetName, 
-            Func<EntityChangedParams, bool> entityChangedCallback, 
-            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
-            : this(null, items, trackingMode, entitySetName, entityChangedCallback, collectionChangedCallback)
-        {
-        }
-
-        public DataServiceCollection(
-            DataServiceContext context,
-            IEnumerable<T> items,
-            TrackingMode trackingMode,
-            string entitySetName,
-            Func<EntityChangedParams, bool> entityChangedCallback,
-            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
-        {
-            if (trackingMode == TrackingMode.AutoChangeTracking)
-            {
-                if (context == null)
-                {
-                    if (items == null)
-                    {
-                        this.trackingOnLoad = true;
-
-                        this.entitySetName = entitySetName;
-                        this.entityChangedCallback = entityChangedCallback;
-                        this.collectionChangedCallback = collectionChangedCallback;
-                    }
-                    else
-                    {
-                        context = DataServiceCollection<T>.GetContextFromItems(items);
-                    }
-                }
-
-                if (!this.trackingOnLoad)
-                {
-                    if (items != null)
-                    {
-                        DataServiceCollection<T>.ValidateIteratorParameter(items);
-                    }
-
-                    this.StartTracking(context, items, entitySetName, entityChangedCallback, collectionChangedCallback);
-                }
-            }
-            else if (items != null)
-            {
-                this.Load(items);
-            }
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800", Justification = "Constructor and debug-only code can't reuse cast.")]
-        internal DataServiceCollection(
-            object atomMaterializer,
-            DataServiceContext context,
-            IEnumerable<T> items,
-            TrackingMode trackingMode,
-            string entitySetName,
-            Func<EntityChangedParams, bool> entityChangedCallback,
-            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
-            : this(
-                context != null ? context : ((AtomMaterializer)atomMaterializer).Context, 
-                items, 
-                trackingMode, 
-                entitySetName, 
-                entityChangedCallback, 
-                collectionChangedCallback)
-        {
-            Debug.Assert(atomMaterializer != null, "atomMaterializer != null");
-            Debug.Assert(((AtomMaterializer)atomMaterializer).Context != null, "Context != null");
-
-            if (items != null)
-            {
-                ((AtomMaterializer)atomMaterializer).PropagateContinuation(items, this);
-            }
-        }
-
-        #region Properties
-
-        public DataServiceQueryContinuation<T> Continuation
-        {
-            get { return this.continuation; }
-            set { this.continuation = value; }
-        }
-        
-        internal BindingObserver Observer
-        {
-            get
-            {
-                return this.observer;
-            }
-        
-            set
-            {
-                Debug.Assert(!this.rootCollection, "Must be a child collection to have the Observer setter called.");
-                Debug.Assert(typeof(System.ComponentModel.INotifyPropertyChanged).IsAssignableFrom(typeof(T)), "The entity type must be trackable (by implementing INotifyPropertyChanged interface)");
-                this.observer = value;
-            }
-        }
-
-        internal bool IsTracking
-        {
-            get { return this.observer != null; }
-        }
-        
-        #endregion
-
-        public void Load(IEnumerable<T> items)
-        {
-            DataServiceCollection<T>.ValidateIteratorParameter(items);
-
-            if (this.trackingOnLoad)
-            {
-                DataServiceContext context = DataServiceCollection<T>.GetContextFromItems(items);
-
-                this.trackingOnLoad = false;
-
-                this.StartTracking(context, items, this.entitySetName, this.entityChangedCallback, this.collectionChangedCallback);
-            }
-            else
-            {
-                this.StartLoading();
-                try
-                {
-                    this.InternalLoadCollection(items);
-                }
-                finally
-                {
-                    this.FinishLoading();
-                }
-            }
-        }
-
-#if ASTORIA_LIGHT
-        public event EventHandler<LoadCompletedEventArgs> LoadCompleted;
-
-        public void LoadAsync(IQueryable<T> query)
-        {
-            Util.CheckArgumentNull(query, "query");
-            DataServiceQuery<T> dsq = query as DataServiceQuery<T>;
-            if (dsq == null)
-            {
-                throw new ArgumentException(Strings.DataServiceCollection_LoadAsyncRequiresDataServiceQuery, "query");
-            }
-
-            if (this.asyncOperationInProgress)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_MultipleLoadAsyncOperationsAtTheSameTime);
-            }
-
-            if (this.trackingOnLoad)
-            {
-                this.StartTracking(((DataServiceQueryProvider)dsq.Provider).Context,
-                                   null,
-                                   this.entitySetName,
-                                   this.entityChangedCallback,
-                                   this.collectionChangedCallback);
-                this.trackingOnLoad = false;
-            }
-
-            BeginLoadAsyncOperation(
-                asyncCallback => dsq.BeginExecute(asyncCallback, null),
-                asyncResult => 
-                    {
-                        QueryOperationResponse<T> response = (QueryOperationResponse<T>)dsq.EndExecute(asyncResult);
-                        this.Load(response);
-                        return response;
-                    });
-        }
-
-        public void LoadAsync()
-        {
-            if (!this.IsTracking)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
-            }
-
-            object parent;
-            string property;
-            if (!this.observer.LookupParent(this, out parent, out property))
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_LoadAsyncNoParamsWithoutParentEntity);
-            }
-
-            if (this.asyncOperationInProgress)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_MultipleLoadAsyncOperationsAtTheSameTime);
-            }
-
-            BeginLoadAsyncOperation(
-                asyncCallback => this.observer.Context.BeginLoadProperty(parent, property, asyncCallback, null),
-                asyncResult => (QueryOperationResponse)this.observer.Context.EndLoadProperty(asyncResult));
-        }
-
-        public bool LoadNextPartialSetAsync()
-        {
-            if (!this.IsTracking)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
-            }
-
-            if (this.asyncOperationInProgress)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_MultipleLoadAsyncOperationsAtTheSameTime);
-            }
-
-            if (this.Continuation == null)
-            {
-                if (this.LoadCompleted != null)
-                {
-                    this.LoadCompleted(this, new LoadCompletedEventArgs(null, null));
-                }
-                return false;
-            }
-            
-            BeginLoadAsyncOperation(
-                asyncCallback => this.observer.Context.BeginExecute(this.Continuation, asyncCallback, null),
-                asyncResult =>
-                    {
-                        QueryOperationResponse<T> response = (QueryOperationResponse<T>)this.observer.Context.EndExecute<T>(asyncResult);
-                        this.Load(response);
-                        return response;
-                    });
-
-            return true;
-        }
-
-#endif
-
-        public void Load(T item)
-        {
-            if (item == null)
-            {
-                throw Error.ArgumentNull("item");
-            }
-
-            this.StartLoading();
-            try
-            {
-                if (!this.Contains(item))
-                {
-                    this.Add(item);
-                }
-            }
-            finally
-            {
-                this.FinishLoading();
-            }
-        }
-
-        public void Clear(bool stopTracking)
-        {
-            if (!this.IsTracking)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
-            }
-
-            if (!stopTracking)
-            {
-                this.Clear();
-            }
-            else
-            {
-                Debug.Assert(this.observer.Context != null, "Must have valid context when the collection is being observed.");
-                try
-                {
-                    this.observer.DetachBehavior = true;
-                    this.Clear();
-                }
-                finally
-                {
-                    this.observer.DetachBehavior = false;
-                }
-            }
-        }
-        
-        public void Detach()
-        {
-            if (!this.IsTracking)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
-            }
-
-            if (!this.rootCollection)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_CannotStopTrackingChildCollection);
-            }
-            
-            this.observer.StopTracking();
-            this.observer = null;
-            
-            this.rootCollection = false;
-        }
-
-#if ASTORIA_LIGHT
-        public new void Add(T item)
-        {
-            if (this.IsTracking)
-            {
-                INotifyPropertyChanged notify = item as INotifyPropertyChanged;
-                if (notify == null)
-                {
-                    throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(item.GetType()));
-                }
-            }
-            base.Add(item);
-        }
-#endif
-
-        protected override void InsertItem(int index, T item)
-        {
-            if (this.trackingOnLoad)
-            {
-                throw new InvalidOperationException(Strings.DataServiceCollection_InsertIntoTrackedButNotLoadedCollection);
-            }
-
-            base.InsertItem(index, item);
-        }
-
-        private static void ValidateIteratorParameter(IEnumerable<T> items)
-        {
-            Util.CheckArgumentNull(items, "items");
-#if ASTORIA_LIGHT
-            DataServiceQuery<T> dsq = items as DataServiceQuery<T>;
-            if (dsq != null)
-            {
-                throw new ArgumentException(Strings.DataServiceCollection_DataServiceQueryCanNotBeEnumerated);
-            }
-#endif
-        }
-
-        private static DataServiceContext GetContextFromItems(IEnumerable<T> items)
-        {
-            Debug.Assert(items != null, "items != null");
-
-            DataServiceQuery<T> dataServiceQuery = items as DataServiceQuery<T>;
-            if (dataServiceQuery != null)
-            {
-                DataServiceQueryProvider queryProvider = dataServiceQuery.Provider as DataServiceQueryProvider;
-                Debug.Assert(queryProvider != null, "Got DataServiceQuery with unknown query provider.");
-                DataServiceContext context = queryProvider.Context;
-                Debug.Assert(context != null, "Query provider must always have valid context.");
-                return context;
-            }
-
-            QueryOperationResponse queryOperationResponse = items as QueryOperationResponse;
-            if (queryOperationResponse != null)
-            {
-                Debug.Assert(queryOperationResponse.Results != null, "Got QueryOperationResponse without valid results.");
-                DataServiceContext context = queryOperationResponse.Results.Context;
-                Debug.Assert(context != null, "Materializer must always have valid context.");
-                return context;
-            }
-
-            throw new ArgumentException(Strings.DataServiceCollection_CannotDetermineContextFromItems);
-        }
-
-        private void InternalLoadCollection(IEnumerable<T> items)
-        {
-            Debug.Assert(items != null, "items != null");
-#if !ASTORIA_LIGHT
-            DataServiceQuery<T> query = items as DataServiceQuery<T>;
-            if (query != null)
-            {
-                items = query.Execute() as QueryOperationResponse<T>;
-            }
-#else
-            Debug.Assert(!(items is DataServiceQuery), "SL Client using DSQ as items...should have been caught by ValidateIteratorParameter.");
-#endif
-
-            foreach (T item in items)
-            {
-                if (!this.Contains(item))
-                {
-                    this.Add(item);
-                }
-            }
-
-            QueryOperationResponse<T> response = items as QueryOperationResponse<T>;
-            if (response != null)
-            {
-                this.continuation = response.GetContinuation();
-            }
-            else
-            {
-                this.continuation = null;
-            }
-        }
-
-        private void StartLoading()
-        {
-            if (this.IsTracking)
-            {
-                if (this.observer.Context == null)
-                {
-                    throw new InvalidOperationException(Strings.DataServiceCollection_LoadRequiresTargetCollectionObserved);
-                }
-
-                this.observer.AttachBehavior = true;
-            }
-        }
-
-        private void FinishLoading()
-        {
-            if (this.IsTracking)
-            {
-                this.observer.AttachBehavior = false;
-            }
-        }
-
-        private void StartTracking(
-            DataServiceContext context,
-            IEnumerable<T> items,
-            String entitySet,
-            Func<EntityChangedParams, bool> entityChanged,
-            Func<EntityCollectionChangedParams, bool> collectionChanged)
-        {
-            Debug.Assert(context != null, "Must have a valid context to initialize.");
-            Debug.Assert(this.observer == null, "Must have no observer which implies Initialize should only be called once.");
-
-            if (items != null)
-            {
-                this.InternalLoadCollection(items);
-            }
-
-            this.observer = new BindingObserver(context, entityChanged, collectionChanged);
-
-            this.observer.StartTracking(this, entitySet);
-
-            this.rootCollection = true;
-        }
-
-#if ASTORIA_LIGHT
-        private void BeginLoadAsyncOperation(
-            Func<AsyncCallback, IAsyncResult> beginCall,
-            Func<IAsyncResult, QueryOperationResponse> endCall)
-        {
-            Debug.Assert(!this.asyncOperationInProgress, "Trying to start a new LoadAsync while another is still in progress. We should have thrown.");
-
-            this.asyncOperationInProgress = true;
-            try
-            {
-                IAsyncResult asyncResult = beginCall(
-                    ar => System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
-                    {
-                        try
-                        {
-                            QueryOperationResponse result = endCall(ar);
-                            this.asyncOperationInProgress = false;
-                            if (this.LoadCompleted != null)
-                            {
-                                this.LoadCompleted(this, new LoadCompletedEventArgs(result, null));
-                            }
-                        }
-                        catch (Exception ex)
-                        {
-                            this.asyncOperationInProgress = false;
-                            if (this.LoadCompleted != null)
-                            {
-                                this.LoadCompleted(this, new LoadCompletedEventArgs(null, ex));
-                            }
-                        }
-                    }));
-            }
-            catch (Exception)
-            {
-                this.asyncOperationInProgress = false;
-                throw;
-            }
-        }
-#endif
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.ComponentModel;
+    using System.Diagnostics;
+    using System.Linq;
+
+    #endregion Namespaces.
+
+    public enum TrackingMode
+    {
+        None,
+
+        AutoChangeTracking
+    }
+
+    public class DataServiceCollection<T> : ObservableCollection<T>
+    {
+        #region Private fields.
+
+        private BindingObserver observer;
+
+        private bool rootCollection;
+
+        private DataServiceQueryContinuation<T> continuation;
+
+        private bool trackingOnLoad;
+
+        private Func<EntityChangedParams, bool> entityChangedCallback;
+
+        private Func<EntityCollectionChangedParams, bool> collectionChangedCallback;
+
+        private string entitySetName;
+
+#if ASTORIA_LIGHT
+        private bool asyncOperationInProgress;
+#endif
+
+        #endregion Private fields.
+
+        public DataServiceCollection()
+            : this(null, null, TrackingMode.AutoChangeTracking, null, null, null)
+        {
+        }
+
+        public DataServiceCollection(IEnumerable<T> items)
+            : this(null, items, TrackingMode.AutoChangeTracking, null, null, null)
+        {
+        }
+
+        public DataServiceCollection(IEnumerable<T> items, TrackingMode trackingMode)
+            : this(null, items, trackingMode, null, null, null)
+        {
+        }
+
+        public DataServiceCollection(DataServiceContext context)
+            : this(context, null, TrackingMode.AutoChangeTracking, null, null, null)
+        {
+        }
+
+        public DataServiceCollection(
+            DataServiceContext context, 
+            string entitySetName, 
+            Func<EntityChangedParams, bool> entityChangedCallback, 
+            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
+            : this(context, null, TrackingMode.AutoChangeTracking, entitySetName, entityChangedCallback, collectionChangedCallback)
+        {
+        }
+
+        public DataServiceCollection(
+            IEnumerable<T> items, 
+            TrackingMode trackingMode, 
+            string entitySetName, 
+            Func<EntityChangedParams, bool> entityChangedCallback, 
+            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
+            : this(null, items, trackingMode, entitySetName, entityChangedCallback, collectionChangedCallback)
+        {
+        }
+
+        public DataServiceCollection(
+            DataServiceContext context,
+            IEnumerable<T> items,
+            TrackingMode trackingMode,
+            string entitySetName,
+            Func<EntityChangedParams, bool> entityChangedCallback,
+            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
+        {
+            if (trackingMode == TrackingMode.AutoChangeTracking)
+            {
+                if (context == null)
+                {
+                    if (items == null)
+                    {
+                        this.trackingOnLoad = true;
+
+                        this.entitySetName = entitySetName;
+                        this.entityChangedCallback = entityChangedCallback;
+                        this.collectionChangedCallback = collectionChangedCallback;
+                    }
+                    else
+                    {
+                        context = DataServiceCollection<T>.GetContextFromItems(items);
+                    }
+                }
+
+                if (!this.trackingOnLoad)
+                {
+                    if (items != null)
+                    {
+                        DataServiceCollection<T>.ValidateIteratorParameter(items);
+                    }
+
+                    this.StartTracking(context, items, entitySetName, entityChangedCallback, collectionChangedCallback);
+                }
+            }
+            else if (items != null)
+            {
+                this.Load(items);
+            }
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800", Justification = "Constructor and debug-only code can't reuse cast.")]
+        internal DataServiceCollection(
+            object atomMaterializer,
+            DataServiceContext context,
+            IEnumerable<T> items,
+            TrackingMode trackingMode,
+            string entitySetName,
+            Func<EntityChangedParams, bool> entityChangedCallback,
+            Func<EntityCollectionChangedParams, bool> collectionChangedCallback)
+            : this(
+                context != null ? context : ((AtomMaterializer)atomMaterializer).Context, 
+                items, 
+                trackingMode, 
+                entitySetName, 
+                entityChangedCallback, 
+                collectionChangedCallback)
+        {
+            Debug.Assert(atomMaterializer != null, "atomMaterializer != null");
+            Debug.Assert(((AtomMaterializer)atomMaterializer).Context != null, "Context != null");
+
+            if (items != null)
+            {
+                ((AtomMaterializer)atomMaterializer).PropagateContinuation(items, this);
+            }
+        }
+
+        #region Properties
+
+        public DataServiceQueryContinuation<T> Continuation
+        {
+            get { return this.continuation; }
+            set { this.continuation = value; }
+        }
+        
+        internal BindingObserver Observer
+        {
+            get
+            {
+                return this.observer;
+            }
+        
+            set
+            {
+                Debug.Assert(!this.rootCollection, "Must be a child collection to have the Observer setter called.");
+                Debug.Assert(typeof(System.ComponentModel.INotifyPropertyChanged).IsAssignableFrom(typeof(T)), "The entity type must be trackable (by implementing INotifyPropertyChanged interface)");
+                this.observer = value;
+            }
+        }
+
+        internal bool IsTracking
+        {
+            get { return this.observer != null; }
+        }
+        
+        #endregion
+
+        public void Load(IEnumerable<T> items)
+        {
+            DataServiceCollection<T>.ValidateIteratorParameter(items);
+
+            if (this.trackingOnLoad)
+            {
+                DataServiceContext context = DataServiceCollection<T>.GetContextFromItems(items);
+
+                this.trackingOnLoad = false;
+
+                this.StartTracking(context, items, this.entitySetName, this.entityChangedCallback, this.collectionChangedCallback);
+            }
+            else
+            {
+                this.StartLoading();
+                try
+                {
+                    this.InternalLoadCollection(items);
+                }
+                finally
+                {
+                    this.FinishLoading();
+                }
+            }
+        }
+
+#if ASTORIA_LIGHT
+        public event EventHandler<LoadCompletedEventArgs> LoadCompleted;
+
+        public void LoadAsync(IQueryable<T> query)
+        {
+            Util.CheckArgumentNull(query, "query");
+            DataServiceQuery<T> dsq = query as DataServiceQuery<T>;
+            if (dsq == null)
+            {
+                throw new ArgumentException(Strings.DataServiceCollection_LoadAsyncRequiresDataServiceQuery, "query");
+            }
+
+            if (this.asyncOperationInProgress)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_MultipleLoadAsyncOperationsAtTheSameTime);
+            }
+
+            if (this.trackingOnLoad)
+            {
+                this.StartTracking(((DataServiceQueryProvider)dsq.Provider).Context,
+                                   null,
+                                   this.entitySetName,
+                                   this.entityChangedCallback,
+                                   this.collectionChangedCallback);
+                this.trackingOnLoad = false;
+            }
+
+            BeginLoadAsyncOperation(
+                asyncCallback => dsq.BeginExecute(asyncCallback, null),
+                asyncResult => 
+                    {
+                        QueryOperationResponse<T> response = (QueryOperationResponse<T>)dsq.EndExecute(asyncResult);
+                        this.Load(response);
+                        return response;
+                    });
+        }
+
+        public void LoadAsync()
+        {
+            if (!this.IsTracking)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
+            }
+
+            object parent;
+            string property;
+            if (!this.observer.LookupParent(this, out parent, out property))
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_LoadAsyncNoParamsWithoutParentEntity);
+            }
+
+            if (this.asyncOperationInProgress)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_MultipleLoadAsyncOperationsAtTheSameTime);
+            }
+
+            BeginLoadAsyncOperation(
+                asyncCallback => this.observer.Context.BeginLoadProperty(parent, property, asyncCallback, null),
+                asyncResult => (QueryOperationResponse)this.observer.Context.EndLoadProperty(asyncResult));
+        }
+
+        public bool LoadNextPartialSetAsync()
+        {
+            if (!this.IsTracking)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
+            }
+
+            if (this.asyncOperationInProgress)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_MultipleLoadAsyncOperationsAtTheSameTime);
+            }
+
+            if (this.Continuation == null)
+            {
+                if (this.LoadCompleted != null)
+                {
+                    this.LoadCompleted(this, new LoadCompletedEventArgs(null, null));
+                }
+                return false;
+            }
+            
+            BeginLoadAsyncOperation(
+                asyncCallback => this.observer.Context.BeginExecute(this.Continuation, asyncCallback, null),
+                asyncResult =>
+                    {
+                        QueryOperationResponse<T> response = (QueryOperationResponse<T>)this.observer.Context.EndExecute<T>(asyncResult);
+                        this.Load(response);
+                        return response;
+                    });
+
+            return true;
+        }
+
+#endif
+
+        public void Load(T item)
+        {
+            if (item == null)
+            {
+                throw Error.ArgumentNull("item");
+            }
+
+            this.StartLoading();
+            try
+            {
+                if (!this.Contains(item))
+                {
+                    this.Add(item);
+                }
+            }
+            finally
+            {
+                this.FinishLoading();
+            }
+        }
+
+        public void Clear(bool stopTracking)
+        {
+            if (!this.IsTracking)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
+            }
+
+            if (!stopTracking)
+            {
+                this.Clear();
+            }
+            else
+            {
+                Debug.Assert(this.observer.Context != null, "Must have valid context when the collection is being observed.");
+                try
+                {
+                    this.observer.DetachBehavior = true;
+                    this.Clear();
+                }
+                finally
+                {
+                    this.observer.DetachBehavior = false;
+                }
+            }
+        }
+        
+        public void Detach()
+        {
+            if (!this.IsTracking)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_OperationForTrackedOnly);
+            }
+
+            if (!this.rootCollection)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_CannotStopTrackingChildCollection);
+            }
+            
+            this.observer.StopTracking();
+            this.observer = null;
+            
+            this.rootCollection = false;
+        }
+
+#if ASTORIA_LIGHT
+        public new void Add(T item)
+        {
+            if (this.IsTracking)
+            {
+                INotifyPropertyChanged notify = item as INotifyPropertyChanged;
+                if (notify == null)
+                {
+                    throw new InvalidOperationException(Strings.DataBinding_NotifyPropertyChangedNotImpl(item.GetType()));
+                }
+            }
+            base.Add(item);
+        }
+#endif
+
+        protected override void InsertItem(int index, T item)
+        {
+            if (this.trackingOnLoad)
+            {
+                throw new InvalidOperationException(Strings.DataServiceCollection_InsertIntoTrackedButNotLoadedCollection);
+            }
+
+            base.InsertItem(index, item);
+        }
+
+        private static void ValidateIteratorParameter(IEnumerable<T> items)
+        {
+            Util.CheckArgumentNull(items, "items");
+#if ASTORIA_LIGHT
+            DataServiceQuery<T> dsq = items as DataServiceQuery<T>;
+            if (dsq != null)
+            {
+                throw new ArgumentException(Strings.DataServiceCollection_DataServiceQueryCanNotBeEnumerated);
+            }
+#endif
+        }
+
+        private static DataServiceContext GetContextFromItems(IEnumerable<T> items)
+        {
+            Debug.Assert(items != null, "items != null");
+
+            DataServiceQuery<T> dataServiceQuery = items as DataServiceQuery<T>;
+            if (dataServiceQuery != null)
+            {
+                DataServiceQueryProvider queryProvider = dataServiceQuery.Provider as DataServiceQueryProvider;
+                Debug.Assert(queryProvider != null, "Got DataServiceQuery with unknown query provider.");
+                DataServiceContext context = queryProvider.Context;
+                Debug.Assert(context != null, "Query provider must always have valid context.");
+                return context;
+            }
+
+            QueryOperationResponse queryOperationResponse = items as QueryOperationResponse;
+            if (queryOperationResponse != null)
+            {
+                Debug.Assert(queryOperationResponse.Results != null, "Got QueryOperationResponse without valid results.");
+                DataServiceContext context = queryOperationResponse.Results.Context;
+                Debug.Assert(context != null, "Materializer must always have valid context.");
+                return context;
+            }
+
+            throw new ArgumentException(Strings.DataServiceCollection_CannotDetermineContextFromItems);
+        }
+
+        private void InternalLoadCollection(IEnumerable<T> items)
+        {
+            Debug.Assert(items != null, "items != null");
+#if !ASTORIA_LIGHT
+            DataServiceQuery<T> query = items as DataServiceQuery<T>;
+            if (query != null)
+            {
+                items = query.Execute() as QueryOperationResponse<T>;
+            }
+#else
+            Debug.Assert(!(items is DataServiceQuery), "SL Client using DSQ as items...should have been caught by ValidateIteratorParameter.");
+#endif
+
+            foreach (T item in items)
+            {
+                if (!this.Contains(item))
+                {
+                    this.Add(item);
+                }
+            }
+
+            QueryOperationResponse<T> response = items as QueryOperationResponse<T>;
+            if (response != null)
+            {
+                this.continuation = response.GetContinuation();
+            }
+            else
+            {
+                this.continuation = null;
+            }
+        }
+
+        private void StartLoading()
+        {
+            if (this.IsTracking)
+            {
+                if (this.observer.Context == null)
+                {
+                    throw new InvalidOperationException(Strings.DataServiceCollection_LoadRequiresTargetCollectionObserved);
+                }
+
+                this.observer.AttachBehavior = true;
+            }
+        }
+
+        private void FinishLoading()
+        {
+            if (this.IsTracking)
+            {
+                this.observer.AttachBehavior = false;
+            }
+        }
+
+        private void StartTracking(
+            DataServiceContext context,
+            IEnumerable<T> items,
+            String entitySet,
+            Func<EntityChangedParams, bool> entityChanged,
+            Func<EntityCollectionChangedParams, bool> collectionChanged)
+        {
+            Debug.Assert(context != null, "Must have a valid context to initialize.");
+            Debug.Assert(this.observer == null, "Must have no observer which implies Initialize should only be called once.");
+
+            if (items != null)
+            {
+                this.InternalLoadCollection(items);
+            }
+
+            this.observer = new BindingObserver(context, entityChanged, collectionChanged);
+
+            this.observer.StartTracking(this, entitySet);
+
+            this.rootCollection = true;
+        }
+
+#if ASTORIA_LIGHT
+        private void BeginLoadAsyncOperation(
+            Func<AsyncCallback, IAsyncResult> beginCall,
+            Func<IAsyncResult, QueryOperationResponse> endCall)
+        {
+            Debug.Assert(!this.asyncOperationInProgress, "Trying to start a new LoadAsync while another is still in progress. We should have thrown.");
+
+            this.asyncOperationInProgress = true;
+            try
+            {
+                IAsyncResult asyncResult = beginCall(
+                    ar => System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
+                    {
+                        try
+                        {
+                            QueryOperationResponse result = endCall(ar);
+                            this.asyncOperationInProgress = false;
+                            if (this.LoadCompleted != null)
+                            {
+                                this.LoadCompleted(this, new LoadCompletedEventArgs(result, null));
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            this.asyncOperationInProgress = false;
+                            if (this.LoadCompleted != null)
+                            {
+                                this.LoadCompleted(this, new LoadCompletedEventArgs(null, ex));
+                            }
+                        }
+                    }));
+            }
+            catch (Exception)
+            {
+                this.asyncOperationInProgress = false;
+                throw;
+            }
+        }
+#endif
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/DataServiceEntityAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/DataServiceEntityAttribute.cs
@@ -1,32 +1,32 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Common
-{
-    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
-    public sealed class EntitySetAttribute : System.Attribute
-    {
-        private readonly string entitySet;
-
-        public EntitySetAttribute(string entitySet)
-        {
-            this.entitySet = entitySet;
-        }
-
-        public string EntitySet
-        {
-            get
-            {
-                return this.entitySet;
-            }
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Common
+{
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
+    public sealed class EntitySetAttribute : System.Attribute
+    {
+        private readonly string entitySet;
+
+        public EntitySetAttribute(string entitySet)
+        {
+            this.entitySet = entitySet;
+        }
+
+        public string EntitySet
+        {
+            get
+            {
+                return this.entitySet;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/DataServiceSaveChangesEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/DataServiceSaveChangesEventArgs.cs
@@ -1,24 +1,24 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Client
-{
-    internal class SaveChangesEventArgs : EventArgs
-    {
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823", Justification = "No upstream callers.")]
-        private DataServiceResponse response;
-
-        public SaveChangesEventArgs(DataServiceResponse response)
-        {
-            this.response = response;
-        }
-    }  
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Client
+{
+    internal class SaveChangesEventArgs : EventArgs
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823", Justification = "No upstream callers.")]
+        private DataServiceResponse response;
+
+        public SaveChangesEventArgs(DataServiceResponse response)
+        {
+            this.response = response;
+        }
+    }  
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/EntityChangedParams.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/EntityChangedParams.cs
@@ -1,88 +1,88 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704", Justification = "Name gets too long with Parameters")]
-    public sealed class EntityChangedParams
-    {
-        #region Fields
-        
-        private readonly DataServiceContext context;
-        
-        private readonly object entity;
-        
-        private readonly string propertyName;
-        
-        private readonly object propertyValue;
-
-        private readonly string sourceEntitySet;
-        
-        private readonly string targetEntitySet;
-
-        #endregion
-
-        #region Constructor
-        
-        internal EntityChangedParams(
-            DataServiceContext context,
-            object entity,
-            string propertyName,
-            object propertyValue,
-            string sourceEntitySet,
-            string targetEntitySet)
-        {
-            this.context = context;
-            this.entity = entity;
-            this.propertyName = propertyName;
-            this.propertyValue = propertyValue;
-            this.sourceEntitySet = sourceEntitySet;
-            this.targetEntitySet = targetEntitySet;
-        }
-        
-        #endregion
-
-        #region Properties
-
-        public DataServiceContext Context
-        {
-            get { return this.context; }
-        }
-
-        public object Entity
-        {
-            get { return this.entity; }
-        }
-
-        public string PropertyName
-        {
-            get { return this.propertyName; }
-        }
-
-        public object PropertyValue
-        {
-            get { return this.propertyValue; }
-        }
-
-        public string SourceEntitySet
-        {
-            get { return this.sourceEntitySet; }
-        }
-
-        public string TargetEntitySet
-        {
-            get { return this.targetEntitySet; }
-        }
-        
-        #endregion
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704", Justification = "Name gets too long with Parameters")]
+    public sealed class EntityChangedParams
+    {
+        #region Fields
+        
+        private readonly DataServiceContext context;
+        
+        private readonly object entity;
+        
+        private readonly string propertyName;
+        
+        private readonly object propertyValue;
+
+        private readonly string sourceEntitySet;
+        
+        private readonly string targetEntitySet;
+
+        #endregion
+
+        #region Constructor
+        
+        internal EntityChangedParams(
+            DataServiceContext context,
+            object entity,
+            string propertyName,
+            object propertyValue,
+            string sourceEntitySet,
+            string targetEntitySet)
+        {
+            this.context = context;
+            this.entity = entity;
+            this.propertyName = propertyName;
+            this.propertyValue = propertyValue;
+            this.sourceEntitySet = sourceEntitySet;
+            this.targetEntitySet = targetEntitySet;
+        }
+        
+        #endregion
+
+        #region Properties
+
+        public DataServiceContext Context
+        {
+            get { return this.context; }
+        }
+
+        public object Entity
+        {
+            get { return this.entity; }
+        }
+
+        public string PropertyName
+        {
+            get { return this.propertyName; }
+        }
+
+        public object PropertyValue
+        {
+            get { return this.propertyValue; }
+        }
+
+        public string SourceEntitySet
+        {
+            get { return this.sourceEntitySet; }
+        }
+
+        public string TargetEntitySet
+        {
+            get { return this.targetEntitySet; }
+        }
+        
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/EntityCollectionChangedParams.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/EntityCollectionChangedParams.cs
@@ -1,111 +1,111 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-#region Namespaces
-    using System.Collections;
-    using System.Collections.Specialized;
-#endregion    
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704", Justification = "Name gets too long with Parameters")]
-    public sealed class EntityCollectionChangedParams
-    {
-        #region Fields
-        
-        private readonly DataServiceContext context;
-
-        private readonly object sourceEntity;
-
-        private readonly string propertyName;
-
-        private readonly string sourceEntitySet;
-
-        private readonly ICollection collection;
-
-        private readonly object targetEntity;
-
-        private readonly string targetEntitySet;
-
-        private readonly NotifyCollectionChangedAction action;
-
-        #endregion
-
-        #region Constructor
-        
-        internal EntityCollectionChangedParams(
-            DataServiceContext context,
-            object sourceEntity,
-            string propertyName,
-            string sourceEntitySet,
-            ICollection collection,
-            object targetEntity,
-            string targetEntitySet,
-            NotifyCollectionChangedAction action)
-        {
-            this.context = context;
-            this.sourceEntity = sourceEntity;
-            this.propertyName = propertyName;
-            this.sourceEntitySet = sourceEntitySet;
-            this.collection = collection;
-            this.targetEntity = targetEntity;
-            this.targetEntitySet = targetEntitySet;
-            this.action = action;
-        }
-        
-        #endregion
-
-        #region Properties
-        
-        public DataServiceContext Context
-        {
-            get { return this.context; }
-        }
-
-        public object SourceEntity
-        {
-            get { return this.sourceEntity; }
-        }
-
-        public string PropertyName
-        {
-            get { return this.propertyName; }
-        }
-
-        public string SourceEntitySet
-        {
-            get { return this.sourceEntitySet; }
-        }
-
-        public object TargetEntity
-        {
-            get { return this.targetEntity; }
-        }
-
-        public string TargetEntitySet
-        {
-            get { return this.targetEntitySet; }
-        }
-
-        public ICollection Collection
-        {
-            get { return this.collection; }
-        }
-
-        public NotifyCollectionChangedAction Action
-        {
-            get { return this.action; }
-        }
-
-        #endregion    
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+#region Namespaces
+    using System.Collections;
+    using System.Collections.Specialized;
+#endregion    
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704", Justification = "Name gets too long with Parameters")]
+    public sealed class EntityCollectionChangedParams
+    {
+        #region Fields
+        
+        private readonly DataServiceContext context;
+
+        private readonly object sourceEntity;
+
+        private readonly string propertyName;
+
+        private readonly string sourceEntitySet;
+
+        private readonly ICollection collection;
+
+        private readonly object targetEntity;
+
+        private readonly string targetEntitySet;
+
+        private readonly NotifyCollectionChangedAction action;
+
+        #endregion
+
+        #region Constructor
+        
+        internal EntityCollectionChangedParams(
+            DataServiceContext context,
+            object sourceEntity,
+            string propertyName,
+            string sourceEntitySet,
+            ICollection collection,
+            object targetEntity,
+            string targetEntitySet,
+            NotifyCollectionChangedAction action)
+        {
+            this.context = context;
+            this.sourceEntity = sourceEntity;
+            this.propertyName = propertyName;
+            this.sourceEntitySet = sourceEntitySet;
+            this.collection = collection;
+            this.targetEntity = targetEntity;
+            this.targetEntitySet = targetEntitySet;
+            this.action = action;
+        }
+        
+        #endregion
+
+        #region Properties
+        
+        public DataServiceContext Context
+        {
+            get { return this.context; }
+        }
+
+        public object SourceEntity
+        {
+            get { return this.sourceEntity; }
+        }
+
+        public string PropertyName
+        {
+            get { return this.propertyName; }
+        }
+
+        public string SourceEntitySet
+        {
+            get { return this.sourceEntitySet; }
+        }
+
+        public object TargetEntity
+        {
+            get { return this.targetEntity; }
+        }
+
+        public string TargetEntitySet
+        {
+            get { return this.targetEntitySet; }
+        }
+
+        public ICollection Collection
+        {
+            get { return this.collection; }
+        }
+
+        public NotifyCollectionChangedAction Action
+        {
+            get { return this.action; }
+        }
+
+        #endregion    
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/LoadCompletedEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Binding/LoadCompletedEventArgs.cs
@@ -1,40 +1,40 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-#if ASTORIA_LIGHT
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-    using System.ComponentModel;
-    #endregion Namespaces.
-
-    public sealed class LoadCompletedEventArgs : AsyncCompletedEventArgs
-    {
-        private QueryOperationResponse queryOperationResponse;
-
-        internal LoadCompletedEventArgs(QueryOperationResponse queryOperationResponse, Exception error)
-            : base(error, false, null)
-        {
-            this.queryOperationResponse = queryOperationResponse;
-        }
-
-        public QueryOperationResponse QueryOperationResponse
-        {
-            get
-            {
-                this.RaiseExceptionIfNecessary();
-                return this.queryOperationResponse;
-            }
-        }
-    }
-}
-#endif
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+#if ASTORIA_LIGHT
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+    using System.ComponentModel;
+    #endregion Namespaces.
+
+    public sealed class LoadCompletedEventArgs : AsyncCompletedEventArgs
+    {
+        private QueryOperationResponse queryOperationResponse;
+
+        internal LoadCompletedEventArgs(QueryOperationResponse queryOperationResponse, Exception error)
+            : base(error, false, null)
+        {
+            this.queryOperationResponse = queryOperationResponse;
+        }
+
+        public QueryOperationResponse QueryOperationResponse
+        {
+            get
+            {
+                this.RaiseExceptionIfNecessary();
+                return this.queryOperationResponse;
+            }
+        }
+    }
+}
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ChangesetResponse.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ChangesetResponse.cs
@@ -1,36 +1,36 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
-    public sealed class ChangeOperationResponse : OperationResponse
-    {
-        private Descriptor descriptor;
-
-        internal ChangeOperationResponse(Dictionary<string, string> headers, Descriptor descriptor)
-            : base(headers)
-        {
-            Debug.Assert(descriptor != null, "descriptor != null");
-            this.descriptor = descriptor;
-        }
-
-        public Descriptor Descriptor
-        {
-            get { return this.descriptor; }
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
+    public sealed class ChangeOperationResponse : OperationResponse
+    {
+        private Descriptor descriptor;
+
+        internal ChangeOperationResponse(Dictionary<string, string> headers, Descriptor descriptor)
+            : base(headers)
+        {
+            Debug.Assert(descriptor != null, "descriptor != null");
+            this.descriptor = descriptor;
+        }
+
+        public Descriptor Descriptor
+        {
+            get { return this.descriptor; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ClientConvert.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ClientConvert.cs
@@ -1,436 +1,436 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Xml;
-
-    #endregion Namespaces.
-
-    internal static class ClientConvert
-    {
-#if !ASTORIA_LIGHT        
-        private const string SystemDataLinq = "System.Data.Linq, Version=" + FX35Assembly.Version + ", Culture=neutral, PublicKeyToken=" + AssemblyRef.EcmaPublicKeyToken;
-#endif
-
-        private static readonly Type[] knownTypes = CreateKnownPrimitives();
-
-        private static readonly Dictionary<string, Type> namedTypesMap = CreateKnownNamesMap();
-
-#if !ASTORIA_LIGHT       
-        private static bool needSystemDataLinqBinary = true;
-#endif
-
-        internal enum StorageType
-        {
-            Boolean,
-
-            Byte,
-
-            ByteArray,
-
-            Char,
-
-            CharArray,
-
-            DateTime,
-
-            DateTimeOffset,
-
-            Decimal,
-
-            Double,
-
-            Guid,
-
-            Int16,
-
-            Int32,
-
-            Int64,
-
-            Single,
-
-            String,
-
-            SByte,
-
-            TimeSpan,
-
-            Type,
-
-            UInt16,
-
-            UInt32,
-
-            UInt64,
-
-            Uri,
-
-            XDocument,
-
-            XElement,
-
-#if !ASTORIA_LIGHT            
-            Binary,
-#endif
-        }
-
-        internal static object ChangeType(string propertyValue, Type propertyType)
-        {
-            Debug.Assert(null != propertyValue, "should never be passed null");
-            try
-            {
-                switch ((StorageType)IndexOfStorage(propertyType))
-                {
-                    case StorageType.Boolean:
-                        return XmlConvert.ToBoolean(propertyValue);
-                    case StorageType.Byte:
-                        return XmlConvert.ToByte(propertyValue);
-                    case StorageType.ByteArray:
-                        return Convert.FromBase64String(propertyValue);
-                    case StorageType.Char:
-                        return XmlConvert.ToChar(propertyValue);
-                    case StorageType.CharArray:
-                        return propertyValue.ToCharArray();
-                    case StorageType.DateTime:
-                        return XmlConvert.ToDateTime(propertyValue, XmlDateTimeSerializationMode.RoundtripKind);
-                    case StorageType.DateTimeOffset:
-                        return XmlConvert.ToDateTimeOffset(propertyValue);
-                    case StorageType.Decimal:
-                        return XmlConvert.ToDecimal(propertyValue);
-                    case StorageType.Double:
-                        return XmlConvert.ToDouble(propertyValue);
-                    case StorageType.Guid:
-                        return new Guid(propertyValue);
-                    case StorageType.Int16:
-                        return XmlConvert.ToInt16(propertyValue);
-                    case StorageType.Int32:
-                        return XmlConvert.ToInt32(propertyValue);
-                    case StorageType.Int64:
-                        return XmlConvert.ToInt64(propertyValue);
-                    case StorageType.Single:
-                        return XmlConvert.ToSingle(propertyValue);
-                    case StorageType.String:
-                        return propertyValue;
-                    case StorageType.SByte:
-                        return XmlConvert.ToSByte(propertyValue);
-                    case StorageType.TimeSpan:
-                        return XmlConvert.ToTimeSpan(propertyValue);
-                    case StorageType.Type:
-                        return Type.GetType(propertyValue, true);
-                    case StorageType.UInt16:
-                        return XmlConvert.ToUInt16(propertyValue);
-                    case StorageType.UInt32:
-                        return XmlConvert.ToUInt32(propertyValue);
-                    case StorageType.UInt64:
-                        return XmlConvert.ToUInt64(propertyValue);
-                    case StorageType.Uri:
-                        return Util.CreateUri(propertyValue, UriKind.RelativeOrAbsolute);
-                    case StorageType.XDocument:
-                        return (0 < propertyValue.Length ? System.Xml.Linq.XDocument.Parse(propertyValue) : new System.Xml.Linq.XDocument());
-                    case StorageType.XElement:
-                        return System.Xml.Linq.XElement.Parse(propertyValue);
-#if !ASTORIA_LIGHT                    
-                    case StorageType.Binary:
-                        Debug.Assert(null != knownTypes[(int)StorageType.Binary], "null typeof(System.Data.Linq.Binary)");
-                        return Activator.CreateInstance(knownTypes[(int)StorageType.Binary], Convert.FromBase64String(propertyValue));
-#endif
-                    default:
-                        Debug.Assert(false, "new StorageType without update to knownTypes");
-                        return propertyValue;
-                }
-            }
-            catch (FormatException ex)
-            {
-                propertyValue = (0 == propertyValue.Length ? "String.Empty" : "String");
-                throw Error.InvalidOperation(Strings.Deserialize_Current(propertyType.ToString(), propertyValue), ex);
-            }
-            catch (OverflowException ex)
-            {
-                propertyValue = (0 == propertyValue.Length ? "String.Empty" : "String");
-                throw Error.InvalidOperation(Strings.Deserialize_Current(propertyType.ToString(), propertyValue), ex);
-            }
-        }
-
-#if !ASTORIA_LIGHT
-        internal static bool IsBinaryValue(object value)
-        {
-            Debug.Assert(value != null, "value != null");
-            return StorageType.Binary == (StorageType)IndexOfStorage(value.GetType());
-        }
-
-        internal static bool TryKeyBinaryToString(object binaryValue, out string result)
-        {
-            Debug.Assert(binaryValue != null, "binaryValue != null");
-            Debug.Assert(IsBinaryValue(binaryValue), "IsBinaryValue(binaryValue) - otherwise TryKeyBinaryToString shouldn't have been called.");
-            const System.Reflection.BindingFlags Flags = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.InvokeMethod;
-            byte[] bytes = (byte[])binaryValue.GetType().InvokeMember("ToArray", Flags, null, binaryValue, null, System.Globalization.CultureInfo.InvariantCulture);
-            return System.Data.Services.Parsing.WebConvert.TryKeyPrimitiveToString(bytes, out result);
-        }
-#endif
-
-        internal static bool TryKeyPrimitiveToString(object value, out string result)
-        {
-            Debug.Assert(value != null, "value != null");
-#if !ASTORIA_LIGHT
-            if (IsBinaryValue(value))
-            {
-                return TryKeyBinaryToString(value, out result);
-            }
-#endif
-            return System.Data.Services.Parsing.WebConvert.TryKeyPrimitiveToString(value, out result);
-        }
-
-        internal static bool ToNamedType(string typeName, out Type type)
-        {
-            type = typeof(string);
-            return String.IsNullOrEmpty(typeName) || ClientConvert.namedTypesMap.TryGetValue(typeName, out type);
-        }
-
-        internal static string ToTypeName(Type type)
-        {
-            Debug.Assert(type != null, "type != null");
-            foreach (var pair in ClientConvert.namedTypesMap)
-            {
-                if (pair.Value == type)
-                {
-                    return pair.Key;
-                }
-            }
-
-            return type.FullName; 
-        }
-
-        internal static string ToString(object propertyValue, bool atomDateConstruct)
-        {
-            Debug.Assert(null != propertyValue, "null should be handled by caller");
-            switch ((StorageType)IndexOfStorage(propertyValue.GetType()))
-            {
-                case StorageType.Boolean:
-                    return XmlConvert.ToString((bool)propertyValue);
-                case StorageType.Byte:
-                    return XmlConvert.ToString((byte)propertyValue);
-                case StorageType.ByteArray:
-                    return Convert.ToBase64String((byte[])propertyValue);
-                case StorageType.Char:
-                    return XmlConvert.ToString((char)propertyValue);
-                case StorageType.CharArray:
-                    return new String((char[])propertyValue);
-                case StorageType.DateTime:                  
-                    DateTime dt = (DateTime)propertyValue;
-                    return XmlConvert.ToString(dt.Kind == DateTimeKind.Unspecified && atomDateConstruct ? new DateTime(dt.Ticks, DateTimeKind.Utc) : dt, XmlDateTimeSerializationMode.RoundtripKind); 
-                case StorageType.DateTimeOffset:
-                    return XmlConvert.ToString((DateTimeOffset)propertyValue);
-                case StorageType.Decimal:
-                    return XmlConvert.ToString((Decimal)propertyValue);
-                case StorageType.Double:
-                    return XmlConvert.ToString((Double)propertyValue);
-                case StorageType.Guid:
-                    return ((Guid)propertyValue).ToString();
-                case StorageType.Int16:
-                    return XmlConvert.ToString((Int16)propertyValue);
-                case StorageType.Int32:
-                    return XmlConvert.ToString((Int32)propertyValue);
-                case StorageType.Int64:
-                    return XmlConvert.ToString((Int64)propertyValue);
-                case StorageType.Single:
-                    return XmlConvert.ToString((Single)propertyValue);
-                case StorageType.String:
-                    return (String)propertyValue;
-                case StorageType.SByte:
-                    return XmlConvert.ToString((SByte)propertyValue);
-                case StorageType.TimeSpan:
-                    return XmlConvert.ToString((TimeSpan)propertyValue);
-                case StorageType.Type:
-                    return ((Type)propertyValue).AssemblyQualifiedName;
-                case StorageType.UInt16:
-                    return XmlConvert.ToString((UInt16)propertyValue);
-                case StorageType.UInt32:
-                    return XmlConvert.ToString((UInt32)propertyValue);
-                case StorageType.UInt64:
-                    return XmlConvert.ToString((UInt64)propertyValue);
-                case StorageType.Uri:
-                    return ((Uri)propertyValue).ToString();
-                case StorageType.XDocument:
-                    return ((System.Xml.Linq.XDocument)propertyValue).ToString();
-                case StorageType.XElement:
-                    return ((System.Xml.Linq.XElement)propertyValue).ToString();
-#if !ASTORIA_LIGHT                
-                case StorageType.Binary:
-                    Debug.Assert(null != knownTypes[(int)StorageType.Binary], "null typeof(System.Data.Linq.Binary)");
-                    Debug.Assert(knownTypes[(int)StorageType.Binary].IsInstanceOfType(propertyValue), "not IsInstanceOfType System.Data.Linq.Binary");
-                    return propertyValue.ToString();
-#endif
-                default:
-                    Debug.Assert(false, "new StorageType without update to knownTypes");
-                    return propertyValue.ToString();
-            }
-        }
-
-        internal static bool IsKnownType(Type type)
-        {
-            return (0 <= IndexOfStorage(type));
-        }
-
-        internal static bool IsKnownNullableType(Type type)
-        {
-            return IsKnownType(Nullable.GetUnderlyingType(type) ?? type);
-        }
-
-        internal static bool IsSupportedPrimitiveTypeForUri(Type type)
-        {
-            return Util.ContainsReference(namedTypesMap.Values.ToArray(), type);
-        }
-
-        internal static string GetEdmType(Type propertyType)
-        {
-            switch ((StorageType)IndexOfStorage(propertyType))
-            {
-                case StorageType.Boolean:
-                    return XmlConstants.EdmBooleanTypeName;
-                case StorageType.Byte:
-                    return XmlConstants.EdmByteTypeName;
-#if !ASTORIA_LIGHT                
-                case StorageType.Binary:
-#endif
-                case StorageType.ByteArray:
-                    return XmlConstants.EdmBinaryTypeName;
-                case StorageType.DateTime:
-                    return XmlConstants.EdmDateTimeTypeName;
-                case StorageType.Decimal:
-                    return XmlConstants.EdmDecimalTypeName;
-                case StorageType.Double:
-                    return XmlConstants.EdmDoubleTypeName;
-                case StorageType.Guid:
-                    return XmlConstants.EdmGuidTypeName;
-                case StorageType.Int16:
-                    return XmlConstants.EdmInt16TypeName;
-                case StorageType.Int32:
-                    return XmlConstants.EdmInt32TypeName;
-                case StorageType.Int64:
-                    return XmlConstants.EdmInt64TypeName;
-                case StorageType.Single:
-                    return XmlConstants.EdmSingleTypeName;
-                case StorageType.SByte:
-                    return XmlConstants.EdmSByteTypeName;
-                case StorageType.DateTimeOffset:
-                case StorageType.TimeSpan:
-                case StorageType.UInt16:
-                case StorageType.UInt32:
-                case StorageType.UInt64:
-                    throw new NotSupportedException(Strings.ALinq_CantCastToUnsupportedPrimitive(propertyType.Name));
-                case StorageType.Char:
-                case StorageType.CharArray:
-                case StorageType.String:
-                case StorageType.Type:
-                case StorageType.Uri:
-                case StorageType.XDocument:
-                case StorageType.XElement:
-                    return null;                default:
-                    Debug.Assert(false, "knowntype without reverse mapping");
-                    return null;
-            }
-        }
-
-        private static Type[] CreateKnownPrimitives()
-        {
-#if !ASTORIA_LIGHT            
-            Type[] types = new Type[1 + (int)StorageType.Binary];
-#else
-            Type[] types = new Type[1 + (int)StorageType.XElement];
-#endif
-            types[(int)StorageType.Boolean] = typeof(Boolean);
-            types[(int)StorageType.Byte] = typeof(Byte);
-            types[(int)StorageType.ByteArray] = typeof(Byte[]);
-            types[(int)StorageType.Char] = typeof(Char);
-            types[(int)StorageType.CharArray] = typeof(Char[]);
-            types[(int)StorageType.DateTime] = typeof(DateTime);
-            types[(int)StorageType.DateTimeOffset] = typeof(DateTimeOffset);
-            types[(int)StorageType.Decimal] = typeof(Decimal);
-            types[(int)StorageType.Double] = typeof(Double);
-            types[(int)StorageType.Guid] = typeof(Guid);
-            types[(int)StorageType.Int16] = typeof(Int16);
-            types[(int)StorageType.Int32] = typeof(Int32);
-            types[(int)StorageType.Int64] = typeof(Int64);
-            types[(int)StorageType.Single] = typeof(Single);
-            types[(int)StorageType.String] = typeof(String);
-            types[(int)StorageType.SByte] = typeof(SByte);
-            types[(int)StorageType.TimeSpan] = typeof(TimeSpan);
-            types[(int)StorageType.Type] = typeof(Type);
-            types[(int)StorageType.UInt16] = typeof(UInt16);
-            types[(int)StorageType.UInt32] = typeof(UInt32);
-            types[(int)StorageType.UInt64] = typeof(UInt64);
-            types[(int)StorageType.Uri] = typeof(Uri);
-            types[(int)StorageType.XDocument] = typeof(System.Xml.Linq.XDocument);
-            types[(int)StorageType.XElement] = typeof(System.Xml.Linq.XElement);
-#if !ASTORIA_LIGHT            
-            types[(int)StorageType.Binary] = null;
-#endif
-            return types;
-        }
-
-        private static Dictionary<string, Type> CreateKnownNamesMap()
-        {
-            Dictionary<string, Type> named = new Dictionary<string, Type>(EqualityComparer<String>.Default);
-
-            named.Add(XmlConstants.EdmStringTypeName, typeof(string));
-            named.Add(XmlConstants.EdmBooleanTypeName, typeof(Boolean));
-            named.Add(XmlConstants.EdmByteTypeName, typeof(Byte));
-            named.Add(XmlConstants.EdmDateTimeTypeName, typeof(DateTime));
-            named.Add(XmlConstants.EdmDecimalTypeName, typeof(Decimal));
-            named.Add(XmlConstants.EdmDoubleTypeName, typeof(Double));
-            named.Add(XmlConstants.EdmGuidTypeName, typeof(Guid));
-            named.Add(XmlConstants.EdmInt16TypeName, typeof(Int16));
-            named.Add(XmlConstants.EdmInt32TypeName, typeof(Int32));
-            named.Add(XmlConstants.EdmInt64TypeName, typeof(Int64));
-            named.Add(XmlConstants.EdmSByteTypeName, typeof(SByte));
-            named.Add(XmlConstants.EdmSingleTypeName, typeof(Single));
-            named.Add(XmlConstants.EdmBinaryTypeName, typeof(byte[]));
-            return named;
-        }
-
-        private static int IndexOfStorage(Type type)
-        {
-            int index = Util.IndexOfReference(ClientConvert.knownTypes, type);
-#if !ASTORIA_LIGHT            
-            if ((index < 0) && needSystemDataLinqBinary && (type.Name == "Binary"))
-            {
-                return LoadSystemDataLinqBinary(type);
-            }
-#endif
-            return index;
-        }
-
-#if !ASTORIA_LIGHT        
-        private static int LoadSystemDataLinqBinary(Type type)
-        {
-            if ((type.Namespace == "System.Data.Linq") &&
-                (System.Reflection.AssemblyName.ReferenceMatchesDefinition(
-                    type.Assembly.GetName(), new System.Reflection.AssemblyName(SystemDataLinq))))
-            {
-                ClientConvert.knownTypes[(int)StorageType.Binary] = type;
-                needSystemDataLinqBinary = false;
-                return (int)StorageType.Binary;
-            }
-
-            return -1;
-        }
-#endif
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Xml;
+
+    #endregion Namespaces.
+
+    internal static class ClientConvert
+    {
+#if !ASTORIA_LIGHT        
+        private const string SystemDataLinq = "System.Data.Linq, Version=" + FX35Assembly.Version + ", Culture=neutral, PublicKeyToken=" + AssemblyRef.EcmaPublicKeyToken;
+#endif
+
+        private static readonly Type[] knownTypes = CreateKnownPrimitives();
+
+        private static readonly Dictionary<string, Type> namedTypesMap = CreateKnownNamesMap();
+
+#if !ASTORIA_LIGHT       
+        private static bool needSystemDataLinqBinary = true;
+#endif
+
+        internal enum StorageType
+        {
+            Boolean,
+
+            Byte,
+
+            ByteArray,
+
+            Char,
+
+            CharArray,
+
+            DateTime,
+
+            DateTimeOffset,
+
+            Decimal,
+
+            Double,
+
+            Guid,
+
+            Int16,
+
+            Int32,
+
+            Int64,
+
+            Single,
+
+            String,
+
+            SByte,
+
+            TimeSpan,
+
+            Type,
+
+            UInt16,
+
+            UInt32,
+
+            UInt64,
+
+            Uri,
+
+            XDocument,
+
+            XElement,
+
+#if !ASTORIA_LIGHT            
+            Binary,
+#endif
+        }
+
+        internal static object ChangeType(string propertyValue, Type propertyType)
+        {
+            Debug.Assert(null != propertyValue, "should never be passed null");
+            try
+            {
+                switch ((StorageType)IndexOfStorage(propertyType))
+                {
+                    case StorageType.Boolean:
+                        return XmlConvert.ToBoolean(propertyValue);
+                    case StorageType.Byte:
+                        return XmlConvert.ToByte(propertyValue);
+                    case StorageType.ByteArray:
+                        return Convert.FromBase64String(propertyValue);
+                    case StorageType.Char:
+                        return XmlConvert.ToChar(propertyValue);
+                    case StorageType.CharArray:
+                        return propertyValue.ToCharArray();
+                    case StorageType.DateTime:
+                        return XmlConvert.ToDateTime(propertyValue, XmlDateTimeSerializationMode.RoundtripKind);
+                    case StorageType.DateTimeOffset:
+                        return XmlConvert.ToDateTimeOffset(propertyValue);
+                    case StorageType.Decimal:
+                        return XmlConvert.ToDecimal(propertyValue);
+                    case StorageType.Double:
+                        return XmlConvert.ToDouble(propertyValue);
+                    case StorageType.Guid:
+                        return new Guid(propertyValue);
+                    case StorageType.Int16:
+                        return XmlConvert.ToInt16(propertyValue);
+                    case StorageType.Int32:
+                        return XmlConvert.ToInt32(propertyValue);
+                    case StorageType.Int64:
+                        return XmlConvert.ToInt64(propertyValue);
+                    case StorageType.Single:
+                        return XmlConvert.ToSingle(propertyValue);
+                    case StorageType.String:
+                        return propertyValue;
+                    case StorageType.SByte:
+                        return XmlConvert.ToSByte(propertyValue);
+                    case StorageType.TimeSpan:
+                        return XmlConvert.ToTimeSpan(propertyValue);
+                    case StorageType.Type:
+                        return Type.GetType(propertyValue, true);
+                    case StorageType.UInt16:
+                        return XmlConvert.ToUInt16(propertyValue);
+                    case StorageType.UInt32:
+                        return XmlConvert.ToUInt32(propertyValue);
+                    case StorageType.UInt64:
+                        return XmlConvert.ToUInt64(propertyValue);
+                    case StorageType.Uri:
+                        return Util.CreateUri(propertyValue, UriKind.RelativeOrAbsolute);
+                    case StorageType.XDocument:
+                        return (0 < propertyValue.Length ? System.Xml.Linq.XDocument.Parse(propertyValue) : new System.Xml.Linq.XDocument());
+                    case StorageType.XElement:
+                        return System.Xml.Linq.XElement.Parse(propertyValue);
+#if !ASTORIA_LIGHT                    
+                    case StorageType.Binary:
+                        Debug.Assert(null != knownTypes[(int)StorageType.Binary], "null typeof(System.Data.Linq.Binary)");
+                        return Activator.CreateInstance(knownTypes[(int)StorageType.Binary], Convert.FromBase64String(propertyValue));
+#endif
+                    default:
+                        Debug.Assert(false, "new StorageType without update to knownTypes");
+                        return propertyValue;
+                }
+            }
+            catch (FormatException ex)
+            {
+                propertyValue = (0 == propertyValue.Length ? "String.Empty" : "String");
+                throw Error.InvalidOperation(Strings.Deserialize_Current(propertyType.ToString(), propertyValue), ex);
+            }
+            catch (OverflowException ex)
+            {
+                propertyValue = (0 == propertyValue.Length ? "String.Empty" : "String");
+                throw Error.InvalidOperation(Strings.Deserialize_Current(propertyType.ToString(), propertyValue), ex);
+            }
+        }
+
+#if !ASTORIA_LIGHT
+        internal static bool IsBinaryValue(object value)
+        {
+            Debug.Assert(value != null, "value != null");
+            return StorageType.Binary == (StorageType)IndexOfStorage(value.GetType());
+        }
+
+        internal static bool TryKeyBinaryToString(object binaryValue, out string result)
+        {
+            Debug.Assert(binaryValue != null, "binaryValue != null");
+            Debug.Assert(IsBinaryValue(binaryValue), "IsBinaryValue(binaryValue) - otherwise TryKeyBinaryToString shouldn't have been called.");
+            const System.Reflection.BindingFlags Flags = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.InvokeMethod;
+            byte[] bytes = (byte[])binaryValue.GetType().InvokeMember("ToArray", Flags, null, binaryValue, null, System.Globalization.CultureInfo.InvariantCulture);
+            return System.Data.Services.Parsing.WebConvert.TryKeyPrimitiveToString(bytes, out result);
+        }
+#endif
+
+        internal static bool TryKeyPrimitiveToString(object value, out string result)
+        {
+            Debug.Assert(value != null, "value != null");
+#if !ASTORIA_LIGHT
+            if (IsBinaryValue(value))
+            {
+                return TryKeyBinaryToString(value, out result);
+            }
+#endif
+            return System.Data.Services.Parsing.WebConvert.TryKeyPrimitiveToString(value, out result);
+        }
+
+        internal static bool ToNamedType(string typeName, out Type type)
+        {
+            type = typeof(string);
+            return String.IsNullOrEmpty(typeName) || ClientConvert.namedTypesMap.TryGetValue(typeName, out type);
+        }
+
+        internal static string ToTypeName(Type type)
+        {
+            Debug.Assert(type != null, "type != null");
+            foreach (var pair in ClientConvert.namedTypesMap)
+            {
+                if (pair.Value == type)
+                {
+                    return pair.Key;
+                }
+            }
+
+            return type.FullName; 
+        }
+
+        internal static string ToString(object propertyValue, bool atomDateConstruct)
+        {
+            Debug.Assert(null != propertyValue, "null should be handled by caller");
+            switch ((StorageType)IndexOfStorage(propertyValue.GetType()))
+            {
+                case StorageType.Boolean:
+                    return XmlConvert.ToString((bool)propertyValue);
+                case StorageType.Byte:
+                    return XmlConvert.ToString((byte)propertyValue);
+                case StorageType.ByteArray:
+                    return Convert.ToBase64String((byte[])propertyValue);
+                case StorageType.Char:
+                    return XmlConvert.ToString((char)propertyValue);
+                case StorageType.CharArray:
+                    return new String((char[])propertyValue);
+                case StorageType.DateTime:                  
+                    DateTime dt = (DateTime)propertyValue;
+                    return XmlConvert.ToString(dt.Kind == DateTimeKind.Unspecified && atomDateConstruct ? new DateTime(dt.Ticks, DateTimeKind.Utc) : dt, XmlDateTimeSerializationMode.RoundtripKind); 
+                case StorageType.DateTimeOffset:
+                    return XmlConvert.ToString((DateTimeOffset)propertyValue);
+                case StorageType.Decimal:
+                    return XmlConvert.ToString((Decimal)propertyValue);
+                case StorageType.Double:
+                    return XmlConvert.ToString((Double)propertyValue);
+                case StorageType.Guid:
+                    return ((Guid)propertyValue).ToString();
+                case StorageType.Int16:
+                    return XmlConvert.ToString((Int16)propertyValue);
+                case StorageType.Int32:
+                    return XmlConvert.ToString((Int32)propertyValue);
+                case StorageType.Int64:
+                    return XmlConvert.ToString((Int64)propertyValue);
+                case StorageType.Single:
+                    return XmlConvert.ToString((Single)propertyValue);
+                case StorageType.String:
+                    return (String)propertyValue;
+                case StorageType.SByte:
+                    return XmlConvert.ToString((SByte)propertyValue);
+                case StorageType.TimeSpan:
+                    return XmlConvert.ToString((TimeSpan)propertyValue);
+                case StorageType.Type:
+                    return ((Type)propertyValue).AssemblyQualifiedName;
+                case StorageType.UInt16:
+                    return XmlConvert.ToString((UInt16)propertyValue);
+                case StorageType.UInt32:
+                    return XmlConvert.ToString((UInt32)propertyValue);
+                case StorageType.UInt64:
+                    return XmlConvert.ToString((UInt64)propertyValue);
+                case StorageType.Uri:
+                    return ((Uri)propertyValue).ToString();
+                case StorageType.XDocument:
+                    return ((System.Xml.Linq.XDocument)propertyValue).ToString();
+                case StorageType.XElement:
+                    return ((System.Xml.Linq.XElement)propertyValue).ToString();
+#if !ASTORIA_LIGHT                
+                case StorageType.Binary:
+                    Debug.Assert(null != knownTypes[(int)StorageType.Binary], "null typeof(System.Data.Linq.Binary)");
+                    Debug.Assert(knownTypes[(int)StorageType.Binary].IsInstanceOfType(propertyValue), "not IsInstanceOfType System.Data.Linq.Binary");
+                    return propertyValue.ToString();
+#endif
+                default:
+                    Debug.Assert(false, "new StorageType without update to knownTypes");
+                    return propertyValue.ToString();
+            }
+        }
+
+        internal static bool IsKnownType(Type type)
+        {
+            return (0 <= IndexOfStorage(type));
+        }
+
+        internal static bool IsKnownNullableType(Type type)
+        {
+            return IsKnownType(Nullable.GetUnderlyingType(type) ?? type);
+        }
+
+        internal static bool IsSupportedPrimitiveTypeForUri(Type type)
+        {
+            return Util.ContainsReference(namedTypesMap.Values.ToArray(), type);
+        }
+
+        internal static string GetEdmType(Type propertyType)
+        {
+            switch ((StorageType)IndexOfStorage(propertyType))
+            {
+                case StorageType.Boolean:
+                    return XmlConstants.EdmBooleanTypeName;
+                case StorageType.Byte:
+                    return XmlConstants.EdmByteTypeName;
+#if !ASTORIA_LIGHT                
+                case StorageType.Binary:
+#endif
+                case StorageType.ByteArray:
+                    return XmlConstants.EdmBinaryTypeName;
+                case StorageType.DateTime:
+                    return XmlConstants.EdmDateTimeTypeName;
+                case StorageType.Decimal:
+                    return XmlConstants.EdmDecimalTypeName;
+                case StorageType.Double:
+                    return XmlConstants.EdmDoubleTypeName;
+                case StorageType.Guid:
+                    return XmlConstants.EdmGuidTypeName;
+                case StorageType.Int16:
+                    return XmlConstants.EdmInt16TypeName;
+                case StorageType.Int32:
+                    return XmlConstants.EdmInt32TypeName;
+                case StorageType.Int64:
+                    return XmlConstants.EdmInt64TypeName;
+                case StorageType.Single:
+                    return XmlConstants.EdmSingleTypeName;
+                case StorageType.SByte:
+                    return XmlConstants.EdmSByteTypeName;
+                case StorageType.DateTimeOffset:
+                case StorageType.TimeSpan:
+                case StorageType.UInt16:
+                case StorageType.UInt32:
+                case StorageType.UInt64:
+                    throw new NotSupportedException(Strings.ALinq_CantCastToUnsupportedPrimitive(propertyType.Name));
+                case StorageType.Char:
+                case StorageType.CharArray:
+                case StorageType.String:
+                case StorageType.Type:
+                case StorageType.Uri:
+                case StorageType.XDocument:
+                case StorageType.XElement:
+                    return null;                default:
+                    Debug.Assert(false, "knowntype without reverse mapping");
+                    return null;
+            }
+        }
+
+        private static Type[] CreateKnownPrimitives()
+        {
+#if !ASTORIA_LIGHT            
+            Type[] types = new Type[1 + (int)StorageType.Binary];
+#else
+            Type[] types = new Type[1 + (int)StorageType.XElement];
+#endif
+            types[(int)StorageType.Boolean] = typeof(Boolean);
+            types[(int)StorageType.Byte] = typeof(Byte);
+            types[(int)StorageType.ByteArray] = typeof(Byte[]);
+            types[(int)StorageType.Char] = typeof(Char);
+            types[(int)StorageType.CharArray] = typeof(Char[]);
+            types[(int)StorageType.DateTime] = typeof(DateTime);
+            types[(int)StorageType.DateTimeOffset] = typeof(DateTimeOffset);
+            types[(int)StorageType.Decimal] = typeof(Decimal);
+            types[(int)StorageType.Double] = typeof(Double);
+            types[(int)StorageType.Guid] = typeof(Guid);
+            types[(int)StorageType.Int16] = typeof(Int16);
+            types[(int)StorageType.Int32] = typeof(Int32);
+            types[(int)StorageType.Int64] = typeof(Int64);
+            types[(int)StorageType.Single] = typeof(Single);
+            types[(int)StorageType.String] = typeof(String);
+            types[(int)StorageType.SByte] = typeof(SByte);
+            types[(int)StorageType.TimeSpan] = typeof(TimeSpan);
+            types[(int)StorageType.Type] = typeof(Type);
+            types[(int)StorageType.UInt16] = typeof(UInt16);
+            types[(int)StorageType.UInt32] = typeof(UInt32);
+            types[(int)StorageType.UInt64] = typeof(UInt64);
+            types[(int)StorageType.Uri] = typeof(Uri);
+            types[(int)StorageType.XDocument] = typeof(System.Xml.Linq.XDocument);
+            types[(int)StorageType.XElement] = typeof(System.Xml.Linq.XElement);
+#if !ASTORIA_LIGHT            
+            types[(int)StorageType.Binary] = null;
+#endif
+            return types;
+        }
+
+        private static Dictionary<string, Type> CreateKnownNamesMap()
+        {
+            Dictionary<string, Type> named = new Dictionary<string, Type>(EqualityComparer<String>.Default);
+
+            named.Add(XmlConstants.EdmStringTypeName, typeof(string));
+            named.Add(XmlConstants.EdmBooleanTypeName, typeof(Boolean));
+            named.Add(XmlConstants.EdmByteTypeName, typeof(Byte));
+            named.Add(XmlConstants.EdmDateTimeTypeName, typeof(DateTime));
+            named.Add(XmlConstants.EdmDecimalTypeName, typeof(Decimal));
+            named.Add(XmlConstants.EdmDoubleTypeName, typeof(Double));
+            named.Add(XmlConstants.EdmGuidTypeName, typeof(Guid));
+            named.Add(XmlConstants.EdmInt16TypeName, typeof(Int16));
+            named.Add(XmlConstants.EdmInt32TypeName, typeof(Int32));
+            named.Add(XmlConstants.EdmInt64TypeName, typeof(Int64));
+            named.Add(XmlConstants.EdmSByteTypeName, typeof(SByte));
+            named.Add(XmlConstants.EdmSingleTypeName, typeof(Single));
+            named.Add(XmlConstants.EdmBinaryTypeName, typeof(byte[]));
+            return named;
+        }
+
+        private static int IndexOfStorage(Type type)
+        {
+            int index = Util.IndexOfReference(ClientConvert.knownTypes, type);
+#if !ASTORIA_LIGHT            
+            if ((index < 0) && needSystemDataLinqBinary && (type.Name == "Binary"))
+            {
+                return LoadSystemDataLinqBinary(type);
+            }
+#endif
+            return index;
+        }
+
+#if !ASTORIA_LIGHT        
+        private static int LoadSystemDataLinqBinary(Type type)
+        {
+            if ((type.Namespace == "System.Data.Linq") &&
+                (System.Reflection.AssemblyName.ReferenceMatchesDefinition(
+                    type.Assembly.GetName(), new System.Reflection.AssemblyName(SystemDataLinq))))
+            {
+                ClientConvert.knownTypes[(int)StorageType.Binary] = type;
+                needSystemDataLinqBinary = false;
+                return (int)StorageType.Binary;
+            }
+
+            return -1;
+        }
+#endif
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ClientType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ClientType.cs
@@ -1,871 +1,871 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Data.Services.Common;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("{ElementTypeName}")]
-    internal sealed class ClientType
-    {
-        internal readonly string ElementTypeName;
-
-        internal readonly Type ElementType;
-
-        internal readonly bool IsEntityType;
-
-        internal readonly int KeyCount;
-
-        #region static fields
-
-        private static readonly Dictionary<Type, ClientType> types = new Dictionary<Type, ClientType>(EqualityComparer<Type>.Default);
-
-        private static readonly Dictionary<TypeName, Type> namedTypes = new Dictionary<TypeName, Type>(new TypeNameEqualityComparer());
-        #endregion
-
-#if ASTORIA_OPEN_OBJECT
-        private readonly ClientProperty openProperties;
-#endif
-        private ArraySet<ClientProperty> properties;
-
-        private ClientProperty mediaDataMember;
-
-        private bool mediaLinkEntry;
-
-        private EpmSourceTree epmSourceTree;
-        
-        private EpmTargetTree epmTargetTree;
-
-        private ClientType(Type type, string typeName, bool skipSettableCheck)
-        {
-            Debug.Assert(null != type, "null type");
-            Debug.Assert(!String.IsNullOrEmpty(typeName), "empty typeName");
-
-            this.ElementTypeName = typeName;
-            this.ElementType = Nullable.GetUnderlyingType(type) ?? type;
-#if ASTORIA_OPEN_OBJECT
-            string openObjectPropertyName = null;
-#endif
-            if (!ClientConvert.IsKnownType(this.ElementType))
-            {
-#if ASTORIA_OPEN_OBJECT
-                #region OpenObject determined by walking type hierarchy and looking for [OpenObjectAttribute("PropertyName")]
-                Type openObjectDeclared = this.ElementType;
-                for (Type tmp = openObjectDeclared; (null != tmp) && (typeof(object) != tmp); tmp = tmp.BaseType)
-                {
-                    object[] attributes = openObjectDeclared.GetCustomAttributes(typeof(OpenObjectAttribute), false);
-                    if (1 == attributes.Length)
-                    {
-                        if (null != openObjectPropertyName)
-                        {
-                            throw Error.InvalidOperation(Strings.Clienttype_MultipleOpenProperty(this.ElementTypeName));
-                        }
-
-                        openObjectPropertyName = ((OpenObjectAttribute)attributes[0]).OpenObjectPropertyName;
-                        openObjectDeclared = tmp;
-                    }
-                }
-                #endregion
-#endif
-
-                Type keyPropertyDeclaredType = null;
-                bool isEntity = type.GetCustomAttributes(true).OfType<DataServiceEntityAttribute>().Any();
-                DataServiceKeyAttribute dska = type.GetCustomAttributes(true).OfType<DataServiceKeyAttribute>().FirstOrDefault();
-                foreach (PropertyInfo pinfo in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
-                {
-
-
-
-
-
-
-                    Type ptype = pinfo.PropertyType;                    ptype = Nullable.GetUnderlyingType(ptype) ?? ptype;
-
-                    if (ptype.IsPointer ||
-                        (ptype.IsArray && (typeof(byte[]) != ptype) && typeof(char[]) != ptype) ||
-                        (typeof(IntPtr) == ptype) ||
-                        (typeof(UIntPtr) == ptype))
-                    {
-                        continue;
-                    }
-
-                    Debug.Assert(!ptype.ContainsGenericParameters, "remove when test case is found that encounters this");
-
-                    if (pinfo.CanRead &&
-                        (!ptype.IsValueType || pinfo.CanWrite) &&
-                        !ptype.ContainsGenericParameters &&
-                        (0 == pinfo.GetIndexParameters().Length))
-                    {
-                        #region IsKey?
-                        bool keyProperty = dska != null ? dska.KeyNames.Contains(pinfo.Name) : false;
-
-                        if (keyProperty)
-                        {
-                            if (null == keyPropertyDeclaredType)
-                            {
-                                keyPropertyDeclaredType = pinfo.DeclaringType;
-                            }
-                            else if (keyPropertyDeclaredType != pinfo.DeclaringType)
-                            {
-                                throw Error.InvalidOperation(Strings.ClientType_KeysOnDifferentDeclaredType(this.ElementTypeName));
-                            }
-
-                            if (!ClientConvert.IsKnownType(ptype))
-                            {
-                                throw Error.InvalidOperation(Strings.ClientType_KeysMustBeSimpleTypes(this.ElementTypeName));
-                            }
-
-                            this.KeyCount++;
-                        }
-                        #endregion
-
-#if ASTORIA_OPEN_OBJECT
-                        #region IsOpenObjectProperty?
-                        bool openProperty = (openObjectPropertyName == pinfo.Name) &&
-                                              typeof(IDictionary<string, object>).IsAssignableFrom(ptype);
-                        Debug.Assert(keyProperty != openProperty || (!keyProperty && !openProperty), "key can't be open type");
-                        #endregion
-
-                        ClientProperty property = new ClientProperty(pinfo, ptype, keyProperty, openProperty);
-
-                        if (!property.OpenObjectProperty)
-#else
-                        ClientProperty property = new ClientProperty(pinfo, ptype, keyProperty);
-#endif
-                        {
-                            if (!this.properties.Add(property, ClientProperty.NameEquality))
-                            {
-                                int shadow = this.IndexOfProperty(property.PropertyName);
-                                if (!property.DeclaringType.IsAssignableFrom(this.properties[shadow].DeclaringType))
-                                {                                    this.properties.RemoveAt(shadow);
-                                    this.properties.Add(property, null);
-                                }
-                            }
-                        }
-#if ASTORIA_OPEN_OBJECT
-                        else
-                        {
-                            if (pinfo.DeclaringType == openObjectDeclared)
-                            {
-                                this.openProperties = property;
-                            }
-                        }
-#endif
-                    }
-                }
-
-                #region No KeyAttribute, discover key by name pattern { DeclaringType.Name+ID, ID }
-                if (null == keyPropertyDeclaredType)
-                {
-                    ClientProperty key = null;
-                    for (int i = this.properties.Count - 1; 0 <= i; --i)
-                    {
-                        string propertyName = this.properties[i].PropertyName;
-                        if (propertyName.EndsWith("ID", StringComparison.Ordinal))
-                        {
-                            string declaringTypeName = this.properties[i].DeclaringType.Name;
-                            if ((propertyName.Length == (declaringTypeName.Length + 2)) &&
-                                propertyName.StartsWith(declaringTypeName, StringComparison.Ordinal))
-                            {
-                                if ((null == keyPropertyDeclaredType) ||
-                                    this.properties[i].DeclaringType.IsAssignableFrom(keyPropertyDeclaredType))
-                                {
-                                    keyPropertyDeclaredType = this.properties[i].DeclaringType;
-                                    key = this.properties[i];
-                                }
-                            }
-                            else if ((null == keyPropertyDeclaredType) && (2 == propertyName.Length))
-                            {
-                                keyPropertyDeclaredType = this.properties[i].DeclaringType;
-                                key = this.properties[i];
-                            }
-                        }
-                    }
-
-                    if (null != key)
-                    {
-                        Debug.Assert(0 == this.KeyCount, "shouldn't have a key yet");
-                        key.KeyProperty = true;
-                        this.KeyCount++;
-                    }
-                }
-                else if (this.KeyCount != dska.KeyNames.Count)
-                {
-                    var m = (from string a in dska.KeyNames
-                             where null == (from b in this.properties
-                                            where b.PropertyName == a
-                                            select b).FirstOrDefault()
-                             select a).First<string>();
-                    throw Error.InvalidOperation(Strings.ClientType_MissingProperty(this.ElementTypeName, m));
-                }
-                #endregion
-
-                this.IsEntityType = (null != keyPropertyDeclaredType) || isEntity;
-                Debug.Assert(this.KeyCount == this.Properties.Where(k => k.KeyProperty).Count(), "KeyCount mismatch");
-
-                this.WireUpMimeTypeProperties();
-                this.CheckMediaLinkEntry();
-
-                if (!skipSettableCheck)
-                {
-#if ASTORIA_OPEN_OBJECT
-                    if ((0 == this.properties.Count) && (null == this.openProperties))
-#else
-                    if (0 == this.properties.Count)
-#endif
-                    {                        throw Error.InvalidOperation(Strings.ClientType_NoSettableFields(this.ElementTypeName));
-                    }
-                }
-            }
-
-            this.properties.TrimToSize();
-            this.properties.Sort<string>(ClientProperty.GetPropertyName, String.CompareOrdinal);
-
-#if ASTORIA_OPEN_OBJECT
-            #region Validate OpenObjectAttribute was used
-            if ((null != openObjectPropertyName) && (null == this.openProperties))
-            {
-                throw Error.InvalidOperation(Strings.ClientType_MissingOpenProperty(this.ElementTypeName, openObjectPropertyName));
-            }
-
-            Debug.Assert((null != openObjectPropertyName) == (null != this.openProperties), "OpenProperties mismatch");
-            #endregion
-#endif
-            this.BuildEpmInfo(type);
-        }
-
-        internal ArraySet<ClientProperty> Properties
-        {
-            get { return this.properties; }
-        }
-
-        internal ClientProperty MediaDataMember
-        {
-            get { return this.mediaDataMember; }
-        }
-
-        internal bool IsMediaLinkEntry
-        {
-            get { return this.mediaLinkEntry; }
-        }
-
-        internal EpmSourceTree EpmSourceTree
-        {
-            get
-            {
-                if (this.epmSourceTree == null)
-                {
-                    this.epmTargetTree = new EpmTargetTree();
-                    this.epmSourceTree = new EpmSourceTree(this.epmTargetTree);
-                }
-                
-                return this.epmSourceTree;
-            }
-        }
-
-        internal EpmTargetTree EpmTargetTree
-        {
-            get
-            {
-                Debug.Assert(this.epmTargetTree != null, "Must have valid target tree");
-                return this.epmTargetTree;
-            }
-        }
-
-        internal bool HasEntityPropertyMappings
-        {
-            get
-            {
-                return this.epmSourceTree != null;
-            }
-        }
-
-        internal bool EpmIsV1Compatible
-        {
-            get
-            {
-                return !this.HasEntityPropertyMappings || this.EpmTargetTree.IsV1Compatible;
-            }
-        }
-
-        internal static bool CanAssignNull(Type type)
-        {
-            Debug.Assert(type != null, "type != null");
-            return !type.IsValueType || (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(Nullable<>)));
-        }
-
-        internal static bool CheckElementTypeIsEntity(Type t)
-        {
-            t = TypeSystem.GetElementType(t);
-            t = Nullable.GetUnderlyingType(t) ?? t;
-            return ClientType.Create(t, false).IsEntityType;
-        }
-
-        internal static ClientType Create(Type type)
-        {
-            return Create(type, true );
-        }
-
-        internal static ClientType Create(Type type, bool expectModelType)
-        {
-            ClientType clientType;
-            lock (ClientType.types)
-            {
-                ClientType.types.TryGetValue(type, out clientType);
-            }
-
-            if (null == clientType)
-            {
-                bool skipSettableCheck = !expectModelType;
-                clientType = new ClientType(type, type.ToString(), skipSettableCheck); // ToString expands generic type name where as FullName does not
-                if (expectModelType)
-                {
-                    lock (ClientType.types)
-                    {
-                        ClientType existing;
-                        if (ClientType.types.TryGetValue(type, out existing))
-                        {
-                            clientType = existing;
-                        }
-                        else
-                        {
-                            ClientType.types.Add(type, clientType);
-                        }
-                    }
-                }
-            }
-
-            return clientType;
-        }
-
-#if !ASTORIA_LIGHT
-        internal static Type ResolveFromName(string wireName, Type userType)
-#else
-        internal static Type ResolveFromName(string wireName, Type userType, Type contextType)
-#endif
-        {
-            Type foundType;
-
-            TypeName typename;
-            typename.Type = userType;
-            typename.Name = wireName;
-
-            bool foundInCache;
-            lock (ClientType.namedTypes)
-            {
-                foundInCache = ClientType.namedTypes.TryGetValue(typename, out foundType);
-            }
-
-            if (!foundInCache)
-            {
-                string name = wireName;
-                int index = wireName.LastIndexOf('.');
-                if ((0 <= index) && (index < wireName.Length - 1))
-                {
-                    name = wireName.Substring(index + 1);
-                }
-
-                if (userType.Name == name)
-                {
-                    foundType = userType;
-                }
-                else
-                {
-#if !ASTORIA_LIGHT
-                    foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
-#else
-                    foreach (Assembly assembly in new Assembly[] { userType.Assembly, contextType.Assembly }.Distinct())
-#endif
-                    {
-                        Type found = assembly.GetType(wireName, false);
-                        ResolveSubclass(name, userType, found, ref foundType);
-
-                        if (null == found)
-                        {
-                            Type[] types = null;
-                            try
-                            {
-                                types = assembly.GetTypes();
-                            }
-                            catch (ReflectionTypeLoadException)
-                            {
-                            }
-
-                            if (null != types)
-                            {
-                                foreach (Type t in types)
-                                {
-                                    ResolveSubclass(name, userType, t, ref foundType);
-                                }
-                            }
-                        }
-                    }
-                }
-
-                lock (ClientType.namedTypes)
-                {
-                    ClientType.namedTypes[typename] = foundType;
-                }
-            }
-
-            return foundType;
-        }
-
-        internal static Type GetImplementationType(Type propertyType, Type genericTypeDefinition)
-        {
-            if (IsConstructedGeneric(propertyType, genericTypeDefinition))
-            {   
-                return propertyType;
-            }
-            else
-            {
-                Type implementationType = null;
-                foreach (Type interfaceType in propertyType.GetInterfaces())
-                {
-                    if (IsConstructedGeneric(interfaceType, genericTypeDefinition))
-                    {
-                        if (null == implementationType)
-                        {   
-                            implementationType = interfaceType;
-                        }
-                        else
-                        {   
-                            throw Error.NotSupported(Strings.ClientType_MultipleImplementationNotSupported);
-                        }
-                    }
-                }
-
-                return implementationType;
-            }
-        }
-
-        internal static MethodInfo GetAddToCollectionMethod(Type collectionType, out Type type)
-        {
-            return GetCollectionMethod(collectionType, typeof(ICollection<>), "Add", out type);
-        }
-
-        internal static MethodInfo GetRemoveFromCollectionMethod(Type collectionType, out Type type)
-        {
-            return GetCollectionMethod(collectionType, typeof(ICollection<>), "Remove", out type);
-        }
-
-        internal static MethodInfo GetCollectionMethod(Type propertyType, Type genericTypeDefinition, string methodName, out Type type)
-        {
-            Debug.Assert(null != propertyType, "null propertyType");
-            Debug.Assert(null != genericTypeDefinition, "null genericTypeDefinition");
-            Debug.Assert(genericTypeDefinition.IsGenericTypeDefinition, "!IsGenericTypeDefinition");
-
-            type = null;
-
-            Type implementationType = GetImplementationType(propertyType, genericTypeDefinition);
-            if (null != implementationType)
-            {
-                Type[] genericArguments = implementationType.GetGenericArguments();
-                MethodInfo methodInfo = implementationType.GetMethod(methodName);
-                Debug.Assert(null != methodInfo, "should have found the method");
-
-#if DEBUG
-                Debug.Assert(null != genericArguments, "null genericArguments");
-                ParameterInfo[] parameters = methodInfo.GetParameters();
-                if (0 < parameters.Length)
-                {
-                    Debug.Assert(genericArguments.Length == parameters.Length, "genericArguments don't match parameters");
-                    for (int i = 0; i < genericArguments.Length; ++i)
-                    {
-                        Debug.Assert(genericArguments[i] == parameters[i].ParameterType, "parameter doesn't match generic argument");
-                    }
-                }
-#endif
-                type = genericArguments[genericArguments.Length - 1];
-                return methodInfo;
-            }
-
-            return null;
-        }
-
-        internal object CreateInstance()
-        {
-            return Activator.CreateInstance(this.ElementType);
-        }
-
-        internal ClientProperty GetProperty(string propertyName, bool ignoreMissingProperties)
-        {
-            int index = this.IndexOfProperty(propertyName);
-            if (0 <= index)
-            {
-                return this.properties[index];
-            }
-#if ASTORIA_OPEN_OBJECT
-            else if (null != this.openProperties)
-            {
-                return this.openProperties;
-            }
-#endif
-            else if (!ignoreMissingProperties)
-            {
-                throw Error.InvalidOperation(Strings.ClientType_MissingProperty(this.ElementTypeName, propertyName));
-            }
-
-            return null;
-        }
-
-       private static bool IsConstructedGeneric(Type type, Type genericTypeDefinition)
-        {
-            Debug.Assert(type != null, "type != null");
-            Debug.Assert(!type.ContainsGenericParameters, "remove when test case is found that encounters this");
-            Debug.Assert(genericTypeDefinition != null, "genericTypeDefinition != null");
-
-            return type.IsGenericType && (type.GetGenericTypeDefinition() == genericTypeDefinition) && !type.ContainsGenericParameters;
-        }
-
-        private static void ResolveSubclass(string wireClassName, Type userType, Type type, ref Type existing)
-        {
-            if ((null != type) && type.IsVisible && (wireClassName == type.Name) && userType.IsAssignableFrom(type))
-            {
-                if (null != existing)
-                {
-                    throw Error.InvalidOperation(Strings.ClientType_Ambiguous(wireClassName, userType));
-                }
-
-                existing = type;
-            }
-        }
-
-        private void BuildEpmInfo(Type type)
-        {
-            if (type.BaseType != null && type.BaseType != typeof(object))
-            {
-                this.BuildEpmInfo(type.BaseType);
-            }
-
-            foreach (EntityPropertyMappingAttribute epmAttr in type.GetCustomAttributes(typeof(EntityPropertyMappingAttribute), false))
-            {
-                this.BuildEpmInfo(epmAttr, type);
-            }
-        }
-
-        private void BuildEpmInfo(EntityPropertyMappingAttribute epmAttr, Type definingType)
-        {
-            ParameterExpression rsrcParam = Expression.Parameter(this.ElementType, "rsrc");
-            ClientProperty rsrcProp = null;
-
-            Expression propValReaderExpr = this.BuildPropertyReader(
-                                                        rsrcParam,
-                                                        this,
-                                                        epmAttr.SourcePath.Split('/'),
-                                                        0,
-                                                        ref rsrcProp);
-
-            Delegate dlgPropValReader = Expression.Lambda(propValReaderExpr, rsrcParam).Compile();
-            this.EpmSourceTree.Add(new EntityPropertyMappingInfo { Attribute = epmAttr, PropValReader = dlgPropValReader, DefiningType = definingType });
-        }
-
-        private Expression BuildPropertyReader(Expression expr, ClientType rsrcType, String[] srcPathSegments, int currentSegment, ref ClientProperty rsrcProp)
-        {
-            if (currentSegment == srcPathSegments.Length)
-            {
-                if (Util.TypeAllowsNull(expr.Type))
-                {
-                    return expr;
-                }
-                else
-                {
-                    return Expression.Convert(expr, typeof(Nullable<>).MakeGenericType(expr.Type));
-                }
-            }
-
-            String srcPathPart = srcPathSegments[currentSegment];
-
-            rsrcProp = rsrcType.GetProperty(srcPathPart, true);
-            if (rsrcProp == null)
-            {
-                throw Error.InvalidOperation(Strings.EpmSourceTree_InaccessiblePropertyOnType(srcPathPart, rsrcType.ElementTypeName));
-            }
-
-            if (rsrcProp.IsKnownType ^ (currentSegment == srcPathSegments.Length - 1))
-            {
-                throw Error.InvalidOperation(!rsrcProp.IsKnownType ? Strings.EpmClientType_PropertyIsComplex(rsrcProp.PropertyName) :
-                                                                     Strings.EpmClientType_PropertyIsPrimitive(rsrcProp.PropertyName));
-            }
-
-            MemberExpression objectDotProp = Expression.Property(expr, srcPathPart);
-
-            Expression recursiveExpr = this.BuildPropertyReader(
-                                            objectDotProp,
-                                            rsrcProp.IsKnownType ? null : ClientType.Create(rsrcProp.PropertyType),
-                                            srcPathSegments,
-                                            ++currentSegment,
-                                            ref rsrcProp);
-
-            BinaryExpression objectIsNull = Expression.Equal(expr, Expression.Constant(null));
-
-            ConstantExpression nullableNull = Expression.Constant(
-                            null,
-                            Util.GetTypeAllowingNull(rsrcProp.PropertyType));
-
-            return Expression.Condition(objectIsNull, nullableNull, recursiveExpr);
-        }
-
-        private int IndexOfProperty(string propertyName)
-        {
-            return this.properties.IndexOf(propertyName, ClientProperty.GetPropertyName, String.Equals);
-        }
-
-        private void WireUpMimeTypeProperties()
-        {
-            MimeTypePropertyAttribute attribute = (MimeTypePropertyAttribute)this.ElementType.GetCustomAttributes(typeof(MimeTypePropertyAttribute), true).SingleOrDefault();
-            if (null != attribute)
-            {
-                int dataIndex, mimeTypeIndex;
-                if ((0 > (dataIndex = this.IndexOfProperty(attribute.DataPropertyName))) ||
-                    (0 > (mimeTypeIndex = this.IndexOfProperty(attribute.MimeTypePropertyName))))
-                {
-                    throw Error.InvalidOperation(Strings.ClientType_MissingMimeTypeProperty(attribute.DataPropertyName, attribute.MimeTypePropertyName));
-                }
-
-                Debug.Assert(0 <= dataIndex, "missing data property");
-                Debug.Assert(0 <= mimeTypeIndex, "missing mime type property");
-                this.Properties[dataIndex].MimeTypeProperty = this.Properties[mimeTypeIndex];
-            }
-        }
-
-        private void CheckMediaLinkEntry()
-        {
-            object[] attributes = this.ElementType.GetCustomAttributes(typeof(MediaEntryAttribute), true);
-            if (attributes != null && attributes.Length > 0)
-            {
-                Debug.Assert(attributes.Length == 1, "The AttributeUsage in the attribute definition should be preventing more than 1 per property");
-
-                MediaEntryAttribute mediaEntryAttribute = (MediaEntryAttribute)attributes[0];
-                this.mediaLinkEntry = true;
-
-                int index = this.IndexOfProperty(mediaEntryAttribute.MediaMemberName);
-                if (index < 0)
-                {
-                    throw Error.InvalidOperation(Strings.ClientType_MissingMediaEntryProperty(
-                        mediaEntryAttribute.MediaMemberName));
-                }
-
-                this.mediaDataMember = this.properties[index];
-            }
-
-            attributes = this.ElementType.GetCustomAttributes(typeof(HasStreamAttribute), true);
-            if (attributes != null && attributes.Length > 0)
-            {
-                Debug.Assert(attributes.Length == 1, "The AttributeUsage in the attribute definition should be preventing more than 1 per property");
-                this.mediaLinkEntry = true;
-            }
-        }
-
-        private struct TypeName
-        {
-             internal Type Type;
-
-            internal string Name;
-        }
-
-        [DebuggerDisplay("{PropertyName}")]
-        internal sealed class ClientProperty
-        {
-            internal readonly string PropertyName;
-
-            internal readonly Type NullablePropertyType;
-
-            internal readonly Type PropertyType;
-
-            internal readonly Type CollectionType;
-
-            internal readonly bool IsKnownType;
-
-#if ASTORIA_OPEN_OBJECT
-            internal readonly bool OpenObjectProperty;
-#endif
-
-            private readonly MethodInfo propertyGetter;
-
-            private readonly MethodInfo propertySetter;
-
-            private readonly MethodInfo setMethod;
-
-            private readonly MethodInfo addMethod;
-
-            private readonly MethodInfo removeMethod;
-
-            private readonly MethodInfo containsMethod;
-
-             private bool keyProperty;
-
-            private ClientProperty mimeTypeProperty;
-
-#if ASTORIA_OPEN_OBJECT
-           internal ClientProperty(PropertyInfo property, Type propertyType, bool keyProperty, bool openObjectProperty)
-#else
-            internal ClientProperty(PropertyInfo property, Type propertyType, bool keyProperty)
-#endif
-            {
-                Debug.Assert(null != property, "null property");
-                Debug.Assert(null != propertyType, "null propertyType");
-                Debug.Assert(null == Nullable.GetUnderlyingType(propertyType), "should already have been denullified");
-
-                this.PropertyName = property.Name;
-                this.NullablePropertyType = property.PropertyType;
-                this.PropertyType = propertyType;
-                this.propertyGetter = property.GetGetMethod();
-                this.propertySetter = property.GetSetMethod();
-                this.keyProperty = keyProperty;
-#if ASTORIA_OPEN_OBJECT
-                this.OpenObjectProperty = openObjectProperty;
-#endif
-
-                this.IsKnownType = ClientConvert.IsKnownType(propertyType);
-                if (!this.IsKnownType)
-                {
-                    this.setMethod = GetCollectionMethod(this.PropertyType, typeof(IDictionary<,>), "set_Item", out this.CollectionType);
-                    if (null == this.setMethod)
-                    {
-                        this.containsMethod = GetCollectionMethod(this.PropertyType, typeof(ICollection<>), "Contains", out this.CollectionType);
-                        this.addMethod = GetAddToCollectionMethod(this.PropertyType, out this.CollectionType);
-                        this.removeMethod = GetRemoveFromCollectionMethod(this.PropertyType, out this.CollectionType);
-                    }
-                }
-
-                Debug.Assert(!this.keyProperty || this.IsKnownType, "can't have an random type as key");
-            }
-
-            internal Type DeclaringType
-            {
-                get { return this.propertyGetter.DeclaringType; }
-            }
-
-            internal bool KeyProperty
-            {
-                get { return this.keyProperty; }
-                set { this.keyProperty = value; }
-            }
-
-            internal ClientProperty MimeTypeProperty
-            {
-                get { return this.mimeTypeProperty; }
-                set { this.mimeTypeProperty = value; }
-            }
-
-            internal static bool GetKeyProperty(ClientProperty x)
-            {
-                return x.KeyProperty;
-            }
-
-            internal static string GetPropertyName(ClientProperty x)
-            {
-                return x.PropertyName;
-            }
-
-            internal static bool NameEquality(ClientProperty x, ClientProperty y)
-            {
-                return String.Equals(x.PropertyName, y.PropertyName);
-            }
-
-            internal object GetValue(object instance)
-            {
-                Debug.Assert(null != instance, "null instance");
-                Debug.Assert(null != this.propertyGetter, "null propertyGetter");
-                return this.propertyGetter.Invoke(instance, null);
-            }
-
-            internal void RemoveValue(object instance, object value)
-            {
-                Debug.Assert(null != instance, "null instance");
-                Debug.Assert(null != this.removeMethod, "missing removeMethod");
-
-                Debug.Assert(this.PropertyType.IsAssignableFrom(instance.GetType()), "unexpected collection instance");
-                Debug.Assert((null == value) || this.CollectionType.IsAssignableFrom(value.GetType()), "unexpected collection value to add");
-                this.removeMethod.Invoke(instance, new object[] { value });
-            }
-
-#if ASTORIA_OPEN_OBJECT
-            internal void SetValue(object instance, object value, string propertyName, ref object openProperties, bool allowAdd)
-#else
-            internal void SetValue(object instance, object value, string propertyName, bool allowAdd)
-#endif
-            {
-                Debug.Assert(null != instance, "null instance");
-                if (null != this.setMethod)
-                {
-#if ASTORIA_OPEN_OBJECT
-                    if (this.OpenObjectProperty)
-                    {
-                        if (null == openProperties)
-                        {
-                            if (null == (openProperties = this.propertyGetter.Invoke(instance, null)))
-                            {
-                                throw Error.NotSupported(Strings.ClientType_NullOpenProperties(this.PropertyName));
-                            }
-                        }
-
-                        ((IDictionary<string, object>)openProperties)[propertyName] = value;
-                    }
-                    else
-#endif
-                    {
-                        Debug.Assert(this.PropertyType.IsAssignableFrom(instance.GetType()), "unexpected dictionary instance");
-                        Debug.Assert((null == value) || this.CollectionType.IsAssignableFrom(value.GetType()), "unexpected dictionary value to set");
-
-                        this.setMethod.Invoke(instance, new object[] { propertyName, value });
-                    }
-                }
-                else if (allowAdd && (null != this.addMethod))
-                {
-                    Debug.Assert(this.PropertyType.IsAssignableFrom(instance.GetType()), "unexpected collection instance");
-                    Debug.Assert((null == value) || this.CollectionType.IsAssignableFrom(value.GetType()), "unexpected collection value to add");
-
-                    if (!(bool)this.containsMethod.Invoke(instance, new object[] { value }))
-                    {
-                        this.addMethod.Invoke(instance, new object[] { value });
-                    }
-                }
-                else if (null != this.propertySetter)
-                {
-                    Debug.Assert((null == value) || this.PropertyType.IsAssignableFrom(value.GetType()), "unexpected property value to set");
-
-                   this.propertySetter.Invoke(instance, new object[] { value });
-                }
-                else
-                {
-                    throw Error.InvalidOperation(Strings.ClientType_MissingProperty(value.GetType().ToString(), propertyName));
-                }
-            }
-        }
-
-        private sealed class TypeNameEqualityComparer : IEqualityComparer<TypeName>
-        {
-           public bool Equals(TypeName x, TypeName y)
-            {
-                return (x.Type == y.Type && x.Name == y.Name);
-            }
-
-            public int GetHashCode(TypeName obj)
-            {
-                return obj.Type.GetHashCode() ^ obj.Name.GetHashCode();
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Data.Services.Common;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("{ElementTypeName}")]
+    internal sealed class ClientType
+    {
+        internal readonly string ElementTypeName;
+
+        internal readonly Type ElementType;
+
+        internal readonly bool IsEntityType;
+
+        internal readonly int KeyCount;
+
+        #region static fields
+
+        private static readonly Dictionary<Type, ClientType> types = new Dictionary<Type, ClientType>(EqualityComparer<Type>.Default);
+
+        private static readonly Dictionary<TypeName, Type> namedTypes = new Dictionary<TypeName, Type>(new TypeNameEqualityComparer());
+        #endregion
+
+#if ASTORIA_OPEN_OBJECT
+        private readonly ClientProperty openProperties;
+#endif
+        private ArraySet<ClientProperty> properties;
+
+        private ClientProperty mediaDataMember;
+
+        private bool mediaLinkEntry;
+
+        private EpmSourceTree epmSourceTree;
+        
+        private EpmTargetTree epmTargetTree;
+
+        private ClientType(Type type, string typeName, bool skipSettableCheck)
+        {
+            Debug.Assert(null != type, "null type");
+            Debug.Assert(!String.IsNullOrEmpty(typeName), "empty typeName");
+
+            this.ElementTypeName = typeName;
+            this.ElementType = Nullable.GetUnderlyingType(type) ?? type;
+#if ASTORIA_OPEN_OBJECT
+            string openObjectPropertyName = null;
+#endif
+            if (!ClientConvert.IsKnownType(this.ElementType))
+            {
+#if ASTORIA_OPEN_OBJECT
+                #region OpenObject determined by walking type hierarchy and looking for [OpenObjectAttribute("PropertyName")]
+                Type openObjectDeclared = this.ElementType;
+                for (Type tmp = openObjectDeclared; (null != tmp) && (typeof(object) != tmp); tmp = tmp.BaseType)
+                {
+                    object[] attributes = openObjectDeclared.GetCustomAttributes(typeof(OpenObjectAttribute), false);
+                    if (1 == attributes.Length)
+                    {
+                        if (null != openObjectPropertyName)
+                        {
+                            throw Error.InvalidOperation(Strings.Clienttype_MultipleOpenProperty(this.ElementTypeName));
+                        }
+
+                        openObjectPropertyName = ((OpenObjectAttribute)attributes[0]).OpenObjectPropertyName;
+                        openObjectDeclared = tmp;
+                    }
+                }
+                #endregion
+#endif
+
+                Type keyPropertyDeclaredType = null;
+                bool isEntity = type.GetCustomAttributes(true).OfType<DataServiceEntityAttribute>().Any();
+                DataServiceKeyAttribute dska = type.GetCustomAttributes(true).OfType<DataServiceKeyAttribute>().FirstOrDefault();
+                foreach (PropertyInfo pinfo in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+                {
+
+
+
+
+
+
+                    Type ptype = pinfo.PropertyType;                    ptype = Nullable.GetUnderlyingType(ptype) ?? ptype;
+
+                    if (ptype.IsPointer ||
+                        (ptype.IsArray && (typeof(byte[]) != ptype) && typeof(char[]) != ptype) ||
+                        (typeof(IntPtr) == ptype) ||
+                        (typeof(UIntPtr) == ptype))
+                    {
+                        continue;
+                    }
+
+                    Debug.Assert(!ptype.ContainsGenericParameters, "remove when test case is found that encounters this");
+
+                    if (pinfo.CanRead &&
+                        (!ptype.IsValueType || pinfo.CanWrite) &&
+                        !ptype.ContainsGenericParameters &&
+                        (0 == pinfo.GetIndexParameters().Length))
+                    {
+                        #region IsKey?
+                        bool keyProperty = dska != null ? dska.KeyNames.Contains(pinfo.Name) : false;
+
+                        if (keyProperty)
+                        {
+                            if (null == keyPropertyDeclaredType)
+                            {
+                                keyPropertyDeclaredType = pinfo.DeclaringType;
+                            }
+                            else if (keyPropertyDeclaredType != pinfo.DeclaringType)
+                            {
+                                throw Error.InvalidOperation(Strings.ClientType_KeysOnDifferentDeclaredType(this.ElementTypeName));
+                            }
+
+                            if (!ClientConvert.IsKnownType(ptype))
+                            {
+                                throw Error.InvalidOperation(Strings.ClientType_KeysMustBeSimpleTypes(this.ElementTypeName));
+                            }
+
+                            this.KeyCount++;
+                        }
+                        #endregion
+
+#if ASTORIA_OPEN_OBJECT
+                        #region IsOpenObjectProperty?
+                        bool openProperty = (openObjectPropertyName == pinfo.Name) &&
+                                              typeof(IDictionary<string, object>).IsAssignableFrom(ptype);
+                        Debug.Assert(keyProperty != openProperty || (!keyProperty && !openProperty), "key can't be open type");
+                        #endregion
+
+                        ClientProperty property = new ClientProperty(pinfo, ptype, keyProperty, openProperty);
+
+                        if (!property.OpenObjectProperty)
+#else
+                        ClientProperty property = new ClientProperty(pinfo, ptype, keyProperty);
+#endif
+                        {
+                            if (!this.properties.Add(property, ClientProperty.NameEquality))
+                            {
+                                int shadow = this.IndexOfProperty(property.PropertyName);
+                                if (!property.DeclaringType.IsAssignableFrom(this.properties[shadow].DeclaringType))
+                                {                                    this.properties.RemoveAt(shadow);
+                                    this.properties.Add(property, null);
+                                }
+                            }
+                        }
+#if ASTORIA_OPEN_OBJECT
+                        else
+                        {
+                            if (pinfo.DeclaringType == openObjectDeclared)
+                            {
+                                this.openProperties = property;
+                            }
+                        }
+#endif
+                    }
+                }
+
+                #region No KeyAttribute, discover key by name pattern { DeclaringType.Name+ID, ID }
+                if (null == keyPropertyDeclaredType)
+                {
+                    ClientProperty key = null;
+                    for (int i = this.properties.Count - 1; 0 <= i; --i)
+                    {
+                        string propertyName = this.properties[i].PropertyName;
+                        if (propertyName.EndsWith("ID", StringComparison.Ordinal))
+                        {
+                            string declaringTypeName = this.properties[i].DeclaringType.Name;
+                            if ((propertyName.Length == (declaringTypeName.Length + 2)) &&
+                                propertyName.StartsWith(declaringTypeName, StringComparison.Ordinal))
+                            {
+                                if ((null == keyPropertyDeclaredType) ||
+                                    this.properties[i].DeclaringType.IsAssignableFrom(keyPropertyDeclaredType))
+                                {
+                                    keyPropertyDeclaredType = this.properties[i].DeclaringType;
+                                    key = this.properties[i];
+                                }
+                            }
+                            else if ((null == keyPropertyDeclaredType) && (2 == propertyName.Length))
+                            {
+                                keyPropertyDeclaredType = this.properties[i].DeclaringType;
+                                key = this.properties[i];
+                            }
+                        }
+                    }
+
+                    if (null != key)
+                    {
+                        Debug.Assert(0 == this.KeyCount, "shouldn't have a key yet");
+                        key.KeyProperty = true;
+                        this.KeyCount++;
+                    }
+                }
+                else if (this.KeyCount != dska.KeyNames.Count)
+                {
+                    var m = (from string a in dska.KeyNames
+                             where null == (from b in this.properties
+                                            where b.PropertyName == a
+                                            select b).FirstOrDefault()
+                             select a).First<string>();
+                    throw Error.InvalidOperation(Strings.ClientType_MissingProperty(this.ElementTypeName, m));
+                }
+                #endregion
+
+                this.IsEntityType = (null != keyPropertyDeclaredType) || isEntity;
+                Debug.Assert(this.KeyCount == this.Properties.Where(k => k.KeyProperty).Count(), "KeyCount mismatch");
+
+                this.WireUpMimeTypeProperties();
+                this.CheckMediaLinkEntry();
+
+                if (!skipSettableCheck)
+                {
+#if ASTORIA_OPEN_OBJECT
+                    if ((0 == this.properties.Count) && (null == this.openProperties))
+#else
+                    if (0 == this.properties.Count)
+#endif
+                    {                        throw Error.InvalidOperation(Strings.ClientType_NoSettableFields(this.ElementTypeName));
+                    }
+                }
+            }
+
+            this.properties.TrimToSize();
+            this.properties.Sort<string>(ClientProperty.GetPropertyName, String.CompareOrdinal);
+
+#if ASTORIA_OPEN_OBJECT
+            #region Validate OpenObjectAttribute was used
+            if ((null != openObjectPropertyName) && (null == this.openProperties))
+            {
+                throw Error.InvalidOperation(Strings.ClientType_MissingOpenProperty(this.ElementTypeName, openObjectPropertyName));
+            }
+
+            Debug.Assert((null != openObjectPropertyName) == (null != this.openProperties), "OpenProperties mismatch");
+            #endregion
+#endif
+            this.BuildEpmInfo(type);
+        }
+
+        internal ArraySet<ClientProperty> Properties
+        {
+            get { return this.properties; }
+        }
+
+        internal ClientProperty MediaDataMember
+        {
+            get { return this.mediaDataMember; }
+        }
+
+        internal bool IsMediaLinkEntry
+        {
+            get { return this.mediaLinkEntry; }
+        }
+
+        internal EpmSourceTree EpmSourceTree
+        {
+            get
+            {
+                if (this.epmSourceTree == null)
+                {
+                    this.epmTargetTree = new EpmTargetTree();
+                    this.epmSourceTree = new EpmSourceTree(this.epmTargetTree);
+                }
+                
+                return this.epmSourceTree;
+            }
+        }
+
+        internal EpmTargetTree EpmTargetTree
+        {
+            get
+            {
+                Debug.Assert(this.epmTargetTree != null, "Must have valid target tree");
+                return this.epmTargetTree;
+            }
+        }
+
+        internal bool HasEntityPropertyMappings
+        {
+            get
+            {
+                return this.epmSourceTree != null;
+            }
+        }
+
+        internal bool EpmIsV1Compatible
+        {
+            get
+            {
+                return !this.HasEntityPropertyMappings || this.EpmTargetTree.IsV1Compatible;
+            }
+        }
+
+        internal static bool CanAssignNull(Type type)
+        {
+            Debug.Assert(type != null, "type != null");
+            return !type.IsValueType || (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(Nullable<>)));
+        }
+
+        internal static bool CheckElementTypeIsEntity(Type t)
+        {
+            t = TypeSystem.GetElementType(t);
+            t = Nullable.GetUnderlyingType(t) ?? t;
+            return ClientType.Create(t, false).IsEntityType;
+        }
+
+        internal static ClientType Create(Type type)
+        {
+            return Create(type, true );
+        }
+
+        internal static ClientType Create(Type type, bool expectModelType)
+        {
+            ClientType clientType;
+            lock (ClientType.types)
+            {
+                ClientType.types.TryGetValue(type, out clientType);
+            }
+
+            if (null == clientType)
+            {
+                bool skipSettableCheck = !expectModelType;
+                clientType = new ClientType(type, type.ToString(), skipSettableCheck); // ToString expands generic type name where as FullName does not
+                if (expectModelType)
+                {
+                    lock (ClientType.types)
+                    {
+                        ClientType existing;
+                        if (ClientType.types.TryGetValue(type, out existing))
+                        {
+                            clientType = existing;
+                        }
+                        else
+                        {
+                            ClientType.types.Add(type, clientType);
+                        }
+                    }
+                }
+            }
+
+            return clientType;
+        }
+
+#if !ASTORIA_LIGHT
+        internal static Type ResolveFromName(string wireName, Type userType)
+#else
+        internal static Type ResolveFromName(string wireName, Type userType, Type contextType)
+#endif
+        {
+            Type foundType;
+
+            TypeName typename;
+            typename.Type = userType;
+            typename.Name = wireName;
+
+            bool foundInCache;
+            lock (ClientType.namedTypes)
+            {
+                foundInCache = ClientType.namedTypes.TryGetValue(typename, out foundType);
+            }
+
+            if (!foundInCache)
+            {
+                string name = wireName;
+                int index = wireName.LastIndexOf('.');
+                if ((0 <= index) && (index < wireName.Length - 1))
+                {
+                    name = wireName.Substring(index + 1);
+                }
+
+                if (userType.Name == name)
+                {
+                    foundType = userType;
+                }
+                else
+                {
+#if !ASTORIA_LIGHT
+                    foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
+#else
+                    foreach (Assembly assembly in new Assembly[] { userType.Assembly, contextType.Assembly }.Distinct())
+#endif
+                    {
+                        Type found = assembly.GetType(wireName, false);
+                        ResolveSubclass(name, userType, found, ref foundType);
+
+                        if (null == found)
+                        {
+                            Type[] types = null;
+                            try
+                            {
+                                types = assembly.GetTypes();
+                            }
+                            catch (ReflectionTypeLoadException)
+                            {
+                            }
+
+                            if (null != types)
+                            {
+                                foreach (Type t in types)
+                                {
+                                    ResolveSubclass(name, userType, t, ref foundType);
+                                }
+                            }
+                        }
+                    }
+                }
+
+                lock (ClientType.namedTypes)
+                {
+                    ClientType.namedTypes[typename] = foundType;
+                }
+            }
+
+            return foundType;
+        }
+
+        internal static Type GetImplementationType(Type propertyType, Type genericTypeDefinition)
+        {
+            if (IsConstructedGeneric(propertyType, genericTypeDefinition))
+            {   
+                return propertyType;
+            }
+            else
+            {
+                Type implementationType = null;
+                foreach (Type interfaceType in propertyType.GetInterfaces())
+                {
+                    if (IsConstructedGeneric(interfaceType, genericTypeDefinition))
+                    {
+                        if (null == implementationType)
+                        {   
+                            implementationType = interfaceType;
+                        }
+                        else
+                        {   
+                            throw Error.NotSupported(Strings.ClientType_MultipleImplementationNotSupported);
+                        }
+                    }
+                }
+
+                return implementationType;
+            }
+        }
+
+        internal static MethodInfo GetAddToCollectionMethod(Type collectionType, out Type type)
+        {
+            return GetCollectionMethod(collectionType, typeof(ICollection<>), "Add", out type);
+        }
+
+        internal static MethodInfo GetRemoveFromCollectionMethod(Type collectionType, out Type type)
+        {
+            return GetCollectionMethod(collectionType, typeof(ICollection<>), "Remove", out type);
+        }
+
+        internal static MethodInfo GetCollectionMethod(Type propertyType, Type genericTypeDefinition, string methodName, out Type type)
+        {
+            Debug.Assert(null != propertyType, "null propertyType");
+            Debug.Assert(null != genericTypeDefinition, "null genericTypeDefinition");
+            Debug.Assert(genericTypeDefinition.IsGenericTypeDefinition, "!IsGenericTypeDefinition");
+
+            type = null;
+
+            Type implementationType = GetImplementationType(propertyType, genericTypeDefinition);
+            if (null != implementationType)
+            {
+                Type[] genericArguments = implementationType.GetGenericArguments();
+                MethodInfo methodInfo = implementationType.GetMethod(methodName);
+                Debug.Assert(null != methodInfo, "should have found the method");
+
+#if DEBUG
+                Debug.Assert(null != genericArguments, "null genericArguments");
+                ParameterInfo[] parameters = methodInfo.GetParameters();
+                if (0 < parameters.Length)
+                {
+                    Debug.Assert(genericArguments.Length == parameters.Length, "genericArguments don't match parameters");
+                    for (int i = 0; i < genericArguments.Length; ++i)
+                    {
+                        Debug.Assert(genericArguments[i] == parameters[i].ParameterType, "parameter doesn't match generic argument");
+                    }
+                }
+#endif
+                type = genericArguments[genericArguments.Length - 1];
+                return methodInfo;
+            }
+
+            return null;
+        }
+
+        internal object CreateInstance()
+        {
+            return Activator.CreateInstance(this.ElementType);
+        }
+
+        internal ClientProperty GetProperty(string propertyName, bool ignoreMissingProperties)
+        {
+            int index = this.IndexOfProperty(propertyName);
+            if (0 <= index)
+            {
+                return this.properties[index];
+            }
+#if ASTORIA_OPEN_OBJECT
+            else if (null != this.openProperties)
+            {
+                return this.openProperties;
+            }
+#endif
+            else if (!ignoreMissingProperties)
+            {
+                throw Error.InvalidOperation(Strings.ClientType_MissingProperty(this.ElementTypeName, propertyName));
+            }
+
+            return null;
+        }
+
+       private static bool IsConstructedGeneric(Type type, Type genericTypeDefinition)
+        {
+            Debug.Assert(type != null, "type != null");
+            Debug.Assert(!type.ContainsGenericParameters, "remove when test case is found that encounters this");
+            Debug.Assert(genericTypeDefinition != null, "genericTypeDefinition != null");
+
+            return type.IsGenericType && (type.GetGenericTypeDefinition() == genericTypeDefinition) && !type.ContainsGenericParameters;
+        }
+
+        private static void ResolveSubclass(string wireClassName, Type userType, Type type, ref Type existing)
+        {
+            if ((null != type) && type.IsVisible && (wireClassName == type.Name) && userType.IsAssignableFrom(type))
+            {
+                if (null != existing)
+                {
+                    throw Error.InvalidOperation(Strings.ClientType_Ambiguous(wireClassName, userType));
+                }
+
+                existing = type;
+            }
+        }
+
+        private void BuildEpmInfo(Type type)
+        {
+            if (type.BaseType != null && type.BaseType != typeof(object))
+            {
+                this.BuildEpmInfo(type.BaseType);
+            }
+
+            foreach (EntityPropertyMappingAttribute epmAttr in type.GetCustomAttributes(typeof(EntityPropertyMappingAttribute), false))
+            {
+                this.BuildEpmInfo(epmAttr, type);
+            }
+        }
+
+        private void BuildEpmInfo(EntityPropertyMappingAttribute epmAttr, Type definingType)
+        {
+            ParameterExpression rsrcParam = Expression.Parameter(this.ElementType, "rsrc");
+            ClientProperty rsrcProp = null;
+
+            Expression propValReaderExpr = this.BuildPropertyReader(
+                                                        rsrcParam,
+                                                        this,
+                                                        epmAttr.SourcePath.Split('/'),
+                                                        0,
+                                                        ref rsrcProp);
+
+            Delegate dlgPropValReader = Expression.Lambda(propValReaderExpr, rsrcParam).Compile();
+            this.EpmSourceTree.Add(new EntityPropertyMappingInfo { Attribute = epmAttr, PropValReader = dlgPropValReader, DefiningType = definingType });
+        }
+
+        private Expression BuildPropertyReader(Expression expr, ClientType rsrcType, String[] srcPathSegments, int currentSegment, ref ClientProperty rsrcProp)
+        {
+            if (currentSegment == srcPathSegments.Length)
+            {
+                if (Util.TypeAllowsNull(expr.Type))
+                {
+                    return expr;
+                }
+                else
+                {
+                    return Expression.Convert(expr, typeof(Nullable<>).MakeGenericType(expr.Type));
+                }
+            }
+
+            String srcPathPart = srcPathSegments[currentSegment];
+
+            rsrcProp = rsrcType.GetProperty(srcPathPart, true);
+            if (rsrcProp == null)
+            {
+                throw Error.InvalidOperation(Strings.EpmSourceTree_InaccessiblePropertyOnType(srcPathPart, rsrcType.ElementTypeName));
+            }
+
+            if (rsrcProp.IsKnownType ^ (currentSegment == srcPathSegments.Length - 1))
+            {
+                throw Error.InvalidOperation(!rsrcProp.IsKnownType ? Strings.EpmClientType_PropertyIsComplex(rsrcProp.PropertyName) :
+                                                                     Strings.EpmClientType_PropertyIsPrimitive(rsrcProp.PropertyName));
+            }
+
+            MemberExpression objectDotProp = Expression.Property(expr, srcPathPart);
+
+            Expression recursiveExpr = this.BuildPropertyReader(
+                                            objectDotProp,
+                                            rsrcProp.IsKnownType ? null : ClientType.Create(rsrcProp.PropertyType),
+                                            srcPathSegments,
+                                            ++currentSegment,
+                                            ref rsrcProp);
+
+            BinaryExpression objectIsNull = Expression.Equal(expr, Expression.Constant(null));
+
+            ConstantExpression nullableNull = Expression.Constant(
+                            null,
+                            Util.GetTypeAllowingNull(rsrcProp.PropertyType));
+
+            return Expression.Condition(objectIsNull, nullableNull, recursiveExpr);
+        }
+
+        private int IndexOfProperty(string propertyName)
+        {
+            return this.properties.IndexOf(propertyName, ClientProperty.GetPropertyName, String.Equals);
+        }
+
+        private void WireUpMimeTypeProperties()
+        {
+            MimeTypePropertyAttribute attribute = (MimeTypePropertyAttribute)this.ElementType.GetCustomAttributes(typeof(MimeTypePropertyAttribute), true).SingleOrDefault();
+            if (null != attribute)
+            {
+                int dataIndex, mimeTypeIndex;
+                if ((0 > (dataIndex = this.IndexOfProperty(attribute.DataPropertyName))) ||
+                    (0 > (mimeTypeIndex = this.IndexOfProperty(attribute.MimeTypePropertyName))))
+                {
+                    throw Error.InvalidOperation(Strings.ClientType_MissingMimeTypeProperty(attribute.DataPropertyName, attribute.MimeTypePropertyName));
+                }
+
+                Debug.Assert(0 <= dataIndex, "missing data property");
+                Debug.Assert(0 <= mimeTypeIndex, "missing mime type property");
+                this.Properties[dataIndex].MimeTypeProperty = this.Properties[mimeTypeIndex];
+            }
+        }
+
+        private void CheckMediaLinkEntry()
+        {
+            object[] attributes = this.ElementType.GetCustomAttributes(typeof(MediaEntryAttribute), true);
+            if (attributes != null && attributes.Length > 0)
+            {
+                Debug.Assert(attributes.Length == 1, "The AttributeUsage in the attribute definition should be preventing more than 1 per property");
+
+                MediaEntryAttribute mediaEntryAttribute = (MediaEntryAttribute)attributes[0];
+                this.mediaLinkEntry = true;
+
+                int index = this.IndexOfProperty(mediaEntryAttribute.MediaMemberName);
+                if (index < 0)
+                {
+                    throw Error.InvalidOperation(Strings.ClientType_MissingMediaEntryProperty(
+                        mediaEntryAttribute.MediaMemberName));
+                }
+
+                this.mediaDataMember = this.properties[index];
+            }
+
+            attributes = this.ElementType.GetCustomAttributes(typeof(HasStreamAttribute), true);
+            if (attributes != null && attributes.Length > 0)
+            {
+                Debug.Assert(attributes.Length == 1, "The AttributeUsage in the attribute definition should be preventing more than 1 per property");
+                this.mediaLinkEntry = true;
+            }
+        }
+
+        private struct TypeName
+        {
+             internal Type Type;
+
+            internal string Name;
+        }
+
+        [DebuggerDisplay("{PropertyName}")]
+        internal sealed class ClientProperty
+        {
+            internal readonly string PropertyName;
+
+            internal readonly Type NullablePropertyType;
+
+            internal readonly Type PropertyType;
+
+            internal readonly Type CollectionType;
+
+            internal readonly bool IsKnownType;
+
+#if ASTORIA_OPEN_OBJECT
+            internal readonly bool OpenObjectProperty;
+#endif
+
+            private readonly MethodInfo propertyGetter;
+
+            private readonly MethodInfo propertySetter;
+
+            private readonly MethodInfo setMethod;
+
+            private readonly MethodInfo addMethod;
+
+            private readonly MethodInfo removeMethod;
+
+            private readonly MethodInfo containsMethod;
+
+             private bool keyProperty;
+
+            private ClientProperty mimeTypeProperty;
+
+#if ASTORIA_OPEN_OBJECT
+           internal ClientProperty(PropertyInfo property, Type propertyType, bool keyProperty, bool openObjectProperty)
+#else
+            internal ClientProperty(PropertyInfo property, Type propertyType, bool keyProperty)
+#endif
+            {
+                Debug.Assert(null != property, "null property");
+                Debug.Assert(null != propertyType, "null propertyType");
+                Debug.Assert(null == Nullable.GetUnderlyingType(propertyType), "should already have been denullified");
+
+                this.PropertyName = property.Name;
+                this.NullablePropertyType = property.PropertyType;
+                this.PropertyType = propertyType;
+                this.propertyGetter = property.GetGetMethod();
+                this.propertySetter = property.GetSetMethod();
+                this.keyProperty = keyProperty;
+#if ASTORIA_OPEN_OBJECT
+                this.OpenObjectProperty = openObjectProperty;
+#endif
+
+                this.IsKnownType = ClientConvert.IsKnownType(propertyType);
+                if (!this.IsKnownType)
+                {
+                    this.setMethod = GetCollectionMethod(this.PropertyType, typeof(IDictionary<,>), "set_Item", out this.CollectionType);
+                    if (null == this.setMethod)
+                    {
+                        this.containsMethod = GetCollectionMethod(this.PropertyType, typeof(ICollection<>), "Contains", out this.CollectionType);
+                        this.addMethod = GetAddToCollectionMethod(this.PropertyType, out this.CollectionType);
+                        this.removeMethod = GetRemoveFromCollectionMethod(this.PropertyType, out this.CollectionType);
+                    }
+                }
+
+                Debug.Assert(!this.keyProperty || this.IsKnownType, "can't have an random type as key");
+            }
+
+            internal Type DeclaringType
+            {
+                get { return this.propertyGetter.DeclaringType; }
+            }
+
+            internal bool KeyProperty
+            {
+                get { return this.keyProperty; }
+                set { this.keyProperty = value; }
+            }
+
+            internal ClientProperty MimeTypeProperty
+            {
+                get { return this.mimeTypeProperty; }
+                set { this.mimeTypeProperty = value; }
+            }
+
+            internal static bool GetKeyProperty(ClientProperty x)
+            {
+                return x.KeyProperty;
+            }
+
+            internal static string GetPropertyName(ClientProperty x)
+            {
+                return x.PropertyName;
+            }
+
+            internal static bool NameEquality(ClientProperty x, ClientProperty y)
+            {
+                return String.Equals(x.PropertyName, y.PropertyName);
+            }
+
+            internal object GetValue(object instance)
+            {
+                Debug.Assert(null != instance, "null instance");
+                Debug.Assert(null != this.propertyGetter, "null propertyGetter");
+                return this.propertyGetter.Invoke(instance, null);
+            }
+
+            internal void RemoveValue(object instance, object value)
+            {
+                Debug.Assert(null != instance, "null instance");
+                Debug.Assert(null != this.removeMethod, "missing removeMethod");
+
+                Debug.Assert(this.PropertyType.IsAssignableFrom(instance.GetType()), "unexpected collection instance");
+                Debug.Assert((null == value) || this.CollectionType.IsAssignableFrom(value.GetType()), "unexpected collection value to add");
+                this.removeMethod.Invoke(instance, new object[] { value });
+            }
+
+#if ASTORIA_OPEN_OBJECT
+            internal void SetValue(object instance, object value, string propertyName, ref object openProperties, bool allowAdd)
+#else
+            internal void SetValue(object instance, object value, string propertyName, bool allowAdd)
+#endif
+            {
+                Debug.Assert(null != instance, "null instance");
+                if (null != this.setMethod)
+                {
+#if ASTORIA_OPEN_OBJECT
+                    if (this.OpenObjectProperty)
+                    {
+                        if (null == openProperties)
+                        {
+                            if (null == (openProperties = this.propertyGetter.Invoke(instance, null)))
+                            {
+                                throw Error.NotSupported(Strings.ClientType_NullOpenProperties(this.PropertyName));
+                            }
+                        }
+
+                        ((IDictionary<string, object>)openProperties)[propertyName] = value;
+                    }
+                    else
+#endif
+                    {
+                        Debug.Assert(this.PropertyType.IsAssignableFrom(instance.GetType()), "unexpected dictionary instance");
+                        Debug.Assert((null == value) || this.CollectionType.IsAssignableFrom(value.GetType()), "unexpected dictionary value to set");
+
+                        this.setMethod.Invoke(instance, new object[] { propertyName, value });
+                    }
+                }
+                else if (allowAdd && (null != this.addMethod))
+                {
+                    Debug.Assert(this.PropertyType.IsAssignableFrom(instance.GetType()), "unexpected collection instance");
+                    Debug.Assert((null == value) || this.CollectionType.IsAssignableFrom(value.GetType()), "unexpected collection value to add");
+
+                    if (!(bool)this.containsMethod.Invoke(instance, new object[] { value }))
+                    {
+                        this.addMethod.Invoke(instance, new object[] { value });
+                    }
+                }
+                else if (null != this.propertySetter)
+                {
+                    Debug.Assert((null == value) || this.PropertyType.IsAssignableFrom(value.GetType()), "unexpected property value to set");
+
+                   this.propertySetter.Invoke(instance, new object[] { value });
+                }
+                else
+                {
+                    throw Error.InvalidOperation(Strings.ClientType_MissingProperty(value.GetType().ToString(), propertyName));
+                }
+            }
+        }
+
+        private sealed class TypeNameEqualityComparer : IEqualityComparer<TypeName>
+        {
+           public bool Equals(TypeName x, TypeName y)
+            {
+                return (x.Type == y.Type && x.Name == y.Name);
+            }
+
+            public int GetHashCode(TypeName obj)
+            {
+                return obj.Type.GetHashCode() ^ obj.Name.GetHashCode();
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceClientException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceClientException.cs
@@ -1,97 +1,97 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Security.Permissions;
-
-#if !ASTORIA_LIGHT
-    [Serializable]
-#endif
-    [System.Diagnostics.DebuggerDisplay("{Message}")]
-    public sealed class DataServiceClientException : InvalidOperationException
-    {
-        private readonly int statusCode;
-
-        #region Constructors.
-
-        public DataServiceClientException()
-            : this(Strings.DataServiceException_GeneralError)
-        {
-        }
-
-        public DataServiceClientException(string message)
-            : this(message, null)
-        {
-        }
-
-        public DataServiceClientException(string message, Exception innerException)
-            : this(message, innerException, 500)
-        {
-        }
-
-        public DataServiceClientException(string message, int statusCode)
-            : this(message, null, statusCode)
-        {
-        }
-
-        public DataServiceClientException(string message, Exception innerException, int statusCode)
-            : base(message, innerException)
-        {
-            this.statusCode = statusCode;
-        }
-
-#if !ASTORIA_LIGHT
-#pragma warning disable 0628
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1047", Justification = "Follows serialization info pattern.")]
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032", Justification = "Follows serialization info pattern.")]
-        protected DataServiceClientException(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext context)
-            : base(serializationInfo, context)
-        {
-            if (serializationInfo != null)
-            {
-                this.statusCode = serializationInfo.GetInt32("statusCode");
-            }
-        }
-#pragma warning restore 0628
-#endif
-
-        #endregion Constructors.
-
-        #region Public properties.
-
-        public int StatusCode
-        {
-            get { return this.statusCode; }
-        }
-
-        #endregion Public properties.
-
-        #region Methods.
-
-#if !ASTORIA_LIGHT
-        [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
-        [System.Security.SecurityCritical]
-        public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
-        {
-            if (info != null)
-            {
-                info.AddValue("statusCode", this.statusCode);
-            }
-
-            base.GetObjectData(info, context);
-        }
-#endif
-        #endregion Methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Security.Permissions;
+
+#if !ASTORIA_LIGHT
+    [Serializable]
+#endif
+    [System.Diagnostics.DebuggerDisplay("{Message}")]
+    public sealed class DataServiceClientException : InvalidOperationException
+    {
+        private readonly int statusCode;
+
+        #region Constructors.
+
+        public DataServiceClientException()
+            : this(Strings.DataServiceException_GeneralError)
+        {
+        }
+
+        public DataServiceClientException(string message)
+            : this(message, null)
+        {
+        }
+
+        public DataServiceClientException(string message, Exception innerException)
+            : this(message, innerException, 500)
+        {
+        }
+
+        public DataServiceClientException(string message, int statusCode)
+            : this(message, null, statusCode)
+        {
+        }
+
+        public DataServiceClientException(string message, Exception innerException, int statusCode)
+            : base(message, innerException)
+        {
+            this.statusCode = statusCode;
+        }
+
+#if !ASTORIA_LIGHT
+#pragma warning disable 0628
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1047", Justification = "Follows serialization info pattern.")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032", Justification = "Follows serialization info pattern.")]
+        protected DataServiceClientException(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext context)
+            : base(serializationInfo, context)
+        {
+            if (serializationInfo != null)
+            {
+                this.statusCode = serializationInfo.GetInt32("statusCode");
+            }
+        }
+#pragma warning restore 0628
+#endif
+
+        #endregion Constructors.
+
+        #region Public properties.
+
+        public int StatusCode
+        {
+            get { return this.statusCode; }
+        }
+
+        #endregion Public properties.
+
+        #region Methods.
+
+#if !ASTORIA_LIGHT
+        [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
+        [System.Security.SecurityCritical]
+        public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
+        {
+            if (info != null)
+            {
+                info.AddValue("statusCode", this.statusCode);
+            }
+
+            base.GetObjectData(info, context);
+        }
+#endif
+        #endregion Methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceContext.cs
@@ -1,4908 +1,4908 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Collections.ObjectModel;
-    using System.Diagnostics;
-    using System.Globalization;
-    using System.IO;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Data.Services.Common;
-#if !ASTORIA_LIGHT
-    using System.Net;
-#else    
-    using System.Data.Services.Http;
-#endif
-    using System.Text;
-    using System.Xml;
-    using System.Xml.Linq;
-
-    #endregion Namespaces.
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1506", Justification = "Central class of the API, likely to have many cross-references")]
-    public class DataServiceContext
-    {
-#if !TESTUNIXNEWLINE
-        private static readonly string NewLine = System.Environment.NewLine;
-#else
-        private const string NewLine = "\n";
-#endif
-
-        private readonly System.Uri baseUri;
-
-        private readonly System.Uri baseUriWithSlash;
-
-#if !ASTORIA_LIGHT        
-        private System.Net.ICredentials credentials;
-#endif
-
-          private string dataNamespace;
-
-        private Func<Type, string> resolveName;
-
-        private Func<string, Type> resolveType;
-
-#if !ASTORIA_LIGHT        
-        private int timeout;
-#endif
-
-        private bool postTunneling;
-
-        private bool ignoreMissingProperties;
-
-        private MergeOption mergeOption;
-
-        private SaveChangesOptions saveChangesDefaultOptions;
-
-        private Uri typeScheme;
-
-        private bool ignoreResourceNotFoundException;
-
-#if ASTORIA_LIGHT        
-        private HttpStack httpStack;
-#endif
-
-        #region Resource state management
-
-        private uint nextChange;
-
-        private Dictionary<object, EntityDescriptor> entityDescriptors = new Dictionary<object, EntityDescriptor>(EqualityComparer<object>.Default);
-
-        private Dictionary<String, EntityDescriptor> identityToDescriptor;
-
-        private Dictionary<LinkDescriptor, LinkDescriptor> bindings = new Dictionary<LinkDescriptor, LinkDescriptor>(LinkDescriptor.EquivalenceComparer);
-
-        private bool applyingChanges;
-
-        #endregion
-
-        #region ctor
-
-        public DataServiceContext(Uri serviceRoot)
-        {
-            Util.CheckArgumentNull(serviceRoot, "serviceRoot");
-
-#if ASTORIA_LIGHT
-            if (!serviceRoot.IsAbsoluteUri)
-            {
-                if (XHRHttpWebRequest.IsAvailable())
-                {
-                    serviceRoot = new Uri(System.Windows.Browser.HtmlPage.Document.DocumentUri, serviceRoot);
-                }
-                else
-                {
-                    System.Net.WebClient webClient = new System.Net.WebClient();
-                    serviceRoot = new Uri(new Uri(webClient.BaseAddress), serviceRoot);
-                }
-            }
-#endif
-            if (!serviceRoot.IsAbsoluteUri ||
-                !Uri.IsWellFormedUriString(serviceRoot.OriginalString, UriKind.Absolute) ||
-                !String.IsNullOrEmpty(serviceRoot.Query) ||
-                !string.IsNullOrEmpty(serviceRoot.Fragment) ||
-                ((serviceRoot.Scheme != "http") && (serviceRoot.Scheme != "https")))
-            {
-                throw Error.Argument(Strings.Context_BaseUri, "serviceRoot");
-            }
-
-            this.baseUri = serviceRoot;
-            this.baseUriWithSlash = serviceRoot;
-            if (!serviceRoot.OriginalString.EndsWith("/", StringComparison.Ordinal))
-            {
-                this.baseUriWithSlash = Util.CreateUri(serviceRoot.OriginalString + "/", UriKind.Absolute);
-            }
-
-            this.mergeOption = MergeOption.AppendOnly;
-            this.DataNamespace = XmlConstants.DataWebNamespace;
-#if ASTORIA_LIGHT
-            this.UsePostTunneling = true;
-#else
-            this.UsePostTunneling = false;
-#endif
-            this.typeScheme = new Uri(XmlConstants.DataWebSchemeNamespace);
-#if ASTORIA_LIGHT
-            this.httpStack = HttpStack.Auto;
-#endif
-        }
-
-        #endregion
-
-        public event EventHandler<SendingRequestEventArgs> SendingRequest;
-
-        public event EventHandler<ReadingWritingEntityEventArgs> ReadingEntity;
-
-        public event EventHandler<ReadingWritingEntityEventArgs> WritingEntity;
-
-        internal event EventHandler<SaveChangesEventArgs> ChangesSaved;
-
-        #region BaseUri, Credentials, MergeOption, Timeout, Links, Entities
-        public Uri BaseUri
-        {
-            get { return this.baseUri; }
-        }
-
-#if !ASTORIA_LIGHT        
-        public System.Net.ICredentials Credentials
-        {
-            get { return this.credentials; }
-            set { this.credentials = value; }
-        }
-#endif
-
-        public MergeOption MergeOption
-        {
-            get { return this.mergeOption; }
-            set { this.mergeOption = Util.CheckEnumerationValue(value, "MergeOption"); }
-        }
-
-        public bool ApplyingChanges
-        {
-            get { return this.applyingChanges; }
-            internal set { this.applyingChanges = value; }
-        }
-
-        public bool IgnoreMissingProperties
-        {
-            get { return this.ignoreMissingProperties; }
-            set { this.ignoreMissingProperties = value; }
-        }
-
-        public string DataNamespace
-        {
-            get
-            {
-                return this.dataNamespace;
-            }
-
-            set
-            {
-                Util.CheckArgumentNull(value, "value");
-                this.dataNamespace = value;
-            }
-        }
-
-        public Func<Type, string> ResolveName
-        {
-            get { return this.resolveName; }
-            set { this.resolveName = value; }
-        }
-
-        public Func<string, Type> ResolveType
-        {
-            get { return this.resolveType; }
-            set { this.resolveType = value; }
-        }
-
-#if !ASTORIA_LIGHT        
-        public int Timeout
-        {
-            get
-            {
-                return this.timeout;
-            }
-
-            set
-            {
-                if (value < 0)
-                {
-                    throw Error.ArgumentOutOfRange("Timeout");
-                }
-
-                this.timeout = value;
-            }
-        }
-#endif
-
-        public Uri TypeScheme
-        {
-            get
-            {
-                return this.typeScheme;
-            }
-
-            set
-            {
-                Util.CheckArgumentNull(value, "value");
-                this.typeScheme = value;
-            }
-        }
-
-        public bool UsePostTunneling
-        {
-            get { return this.postTunneling; }
-            set { this.postTunneling = value; }
-        }
-
-        public ReadOnlyCollection<LinkDescriptor> Links
-        {
-            get
-            {
-                return this.bindings.Values.OrderBy(l => l.ChangeOrder).ToList().AsReadOnly();
-            }
-        }
-
-        public ReadOnlyCollection<EntityDescriptor> Entities
-        {
-            get
-            {
-                return this.entityDescriptors.Values.OrderBy(d => d.ChangeOrder).ToList().AsReadOnly();
-            }
-        }
-
-        public SaveChangesOptions SaveChangesDefaultOptions
-        {
-            get
-            {
-                return this.saveChangesDefaultOptions;
-            }
-
-            set
-            {
-                ValidateSaveChangesOptions(value);
-                this.saveChangesDefaultOptions = value;
-            }
-        }
-
-        #endregion
-
-        public bool IgnoreResourceNotFoundException
-        {
-            get { return this.ignoreResourceNotFoundException; }
-            set { this.ignoreResourceNotFoundException = value; }
-        }
-
-#if ASTORIA_LIGHT        
-public HttpStack HttpStack
-        {
-            get { return this.httpStack; }
-            set { this.httpStack = Util.CheckEnumerationValue(value, "HttpStack"); }
-        }
-#endif
-
-        internal Uri BaseUriWithSlash
-        {
-            get { return this.baseUriWithSlash; }
-        }
-
-        internal bool HasReadingEntityHandlers
-        {
-            [DebuggerStepThrough]
-            get { return this.ReadingEntity != null; }
-        }
-
-        #region Entity and Link Tracking
-        
-        public EntityDescriptor GetEntityDescriptor(object entity)
-        {
-            Util.CheckArgumentNull(entity, "entity");
-
-            EntityDescriptor descriptor;
-            if (this.entityDescriptors.TryGetValue(entity, out descriptor))
-            {
-                return descriptor;
-            }
-            else
-            {
-                return null;
-            }
-        }
-        
-        public LinkDescriptor GetLinkDescriptor(object source, string sourceProperty, object target)
-        {
-            Util.CheckArgumentNull(source, "source");
-            Util.CheckArgumentNotEmpty(sourceProperty, "sourceProperty");
-            Util.CheckArgumentNull(target, "target");
-            
-            LinkDescriptor link;
-            
-            if (this.bindings.TryGetValue(new LinkDescriptor(source, sourceProperty, target), out link))
-            {
-                return link;
-            }
-            else
-            {
-                return null;
-            }
-        }
-        
-        #endregion
-
-        #region CancelRequest
-        public void CancelRequest(IAsyncResult asyncResult)
-        {
-            Util.CheckArgumentNull(asyncResult, "asyncResult");
-            BaseAsyncResult result = asyncResult as BaseAsyncResult;
-
-            if ((null == result) || (this != result.Source))
-            {
-                object context = null;
-                DataServiceQuery query = null;
-                if (null != result)
-                {
-                    query = result.Source as DataServiceQuery;
-
-                    if (null != query)
-                    {
-                        DataServiceQueryProvider provider = query.Provider as DataServiceQueryProvider;
-                        if (null != provider)
-                        {
-                            context = provider.Context;
-                        }
-                    }
-                }
-
-                if (this != context)
-                {
-                    throw Error.Argument(Strings.Context_DidNotOriginateAsync, "asyncResult");
-                }
-            }
-
-            if (!result.IsCompletedInternally)
-            {
-                result.SetAborted();
-
-                WebRequest request = result.Abortable;
-                if (null != request)
-                {
-                    request.Abort();
-                }
-            }
-        }
-        #endregion
-
-        #region CreateQuery
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "required for this feature")]
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1057:StringUriOverloadsCallSystemUriOverloads", Justification = "required for this feature")]
-        public DataServiceQuery<T> CreateQuery<T>(string entitySetName)
-        {
-            Util.CheckArgumentNotEmpty(entitySetName, "entitySetName");
-            this.ValidateEntitySetName(ref entitySetName);
-
-            ResourceSetExpression rse = new ResourceSetExpression(typeof(IOrderedQueryable<T>), null, Expression.Constant(entitySetName), typeof(T), null, CountOption.None, null, null);
-            return new DataServiceQuery<T>.DataServiceOrderedQuery(rse, new DataServiceQueryProvider(this));
-        }
-        #endregion
-
-        #region GetMetadataUri
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "required for this feature")]
-        public Uri GetMetadataUri()
-        {
-            Uri metadataUri = Util.CreateUri(this.baseUriWithSlash.OriginalString + XmlConstants.UriMetadataSegment, UriKind.Absolute);
-            return metadataUri;
-        }
-        #endregion
-
-        #region LoadProperty
-
-        public IAsyncResult BeginLoadProperty(object entity, string propertyName, AsyncCallback callback, object state)
-        {
-            return this.BeginLoadProperty(entity, propertyName, (Uri)null, callback, state);
-        }
-
-        public IAsyncResult BeginLoadProperty(object entity, string propertyName, Uri nextLinkUri, AsyncCallback callback, object state)
-        {
-            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, callback, state, nextLinkUri, null);
-            result.BeginExecute();
-            return result;
-        }
-
-        public IAsyncResult BeginLoadProperty(object entity, string propertyName, DataServiceQueryContinuation continuation, AsyncCallback callback, object state)
-        {
-            Util.CheckArgumentNull(continuation, "continuation");
-            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, callback, state, null, continuation);
-            result.BeginExecute();
-            return result;
-        }
-
-        public QueryOperationResponse EndLoadProperty(IAsyncResult asyncResult)
-        {
-            LoadPropertyResult response = QueryResult.EndExecute<LoadPropertyResult>(this, "LoadProperty", asyncResult);
-            return response.LoadProperty();
-        }
-
-#if !ASTORIA_LIGHT        
-        public QueryOperationResponse LoadProperty(object entity, string propertyName)
-        {
-            return this.LoadProperty(entity, propertyName, (Uri)null);
-        }
-
-        public QueryOperationResponse LoadProperty(object entity, string propertyName, Uri nextLinkUri)
-        {
-            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, null, null, nextLinkUri, null);
-            result.Execute();
-            return result.LoadProperty();
-        }
-
-        public QueryOperationResponse LoadProperty(object entity, string propertyName, DataServiceQueryContinuation continuation)
-        {
-            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, null, null, null, continuation);
-            result.Execute();
-            return result.LoadProperty();
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1011", Justification = "allows compiler to infer 'T'")]
-        public QueryOperationResponse<T> LoadProperty<T>(object entity, string propertyName, DataServiceQueryContinuation<T> continuation)
-        {
-            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, null, null, null, continuation);
-            result.Execute();
-            return (QueryOperationResponse<T>)result.LoadProperty();
-        }
-
-#endif
-        #endregion
-
-        #region GetReadStreamUri
-        public Uri GetReadStreamUri(object entity) 
-        {
-            EntityDescriptor box = this.EnsureContained(entity, "entity");
-            return box.GetMediaResourceUri(this.baseUriWithSlash);
-        }
-        #endregion
-
-        #region GetReadStream, BeginGetReadStream, EndGetReadStream
-
-        public IAsyncResult BeginGetReadStream(object entity, DataServiceRequestArgs args, AsyncCallback callback, object state)
-        {
-            GetReadStreamResult result;
-            result = this.CreateGetReadStreamResult(entity, args, callback, state);
-            result.Begin();
-            return result;
-        }
-
-        public DataServiceStreamResponse EndGetReadStream(IAsyncResult asyncResult)
-        {
-            GetReadStreamResult result = BaseAsyncResult.EndExecute<GetReadStreamResult>(this, "GetReadStream", asyncResult);
-            return result.End();
-        }
-
-#if !ASTORIA_LIGHT
-        public DataServiceStreamResponse GetReadStream(object entity)
-        {
-            DataServiceRequestArgs args = new DataServiceRequestArgs();
-            return this.GetReadStream(entity, args);
-        }
-
-        public DataServiceStreamResponse GetReadStream(object entity, string acceptContentType)
-        {
-            Util.CheckArgumentNotEmpty(acceptContentType, "acceptContentType");
-            DataServiceRequestArgs args = new DataServiceRequestArgs();
-            args.AcceptContentType = acceptContentType;
-            return this.GetReadStream(entity, args);
-        }
-
-        public DataServiceStreamResponse GetReadStream(object entity, DataServiceRequestArgs args)
-        {
-            GetReadStreamResult result = this.CreateGetReadStreamResult(entity, args, null, null);
-            return result.Execute();
-        }
-
-#endif
-        #endregion
-
-        #region SetSaveStream
-
-        public void SetSaveStream(object entity, Stream stream, bool closeStream, string contentType, string slug)
-        {
-            Util.CheckArgumentNull(contentType, "contentType");
-            Util.CheckArgumentNull(slug, "slug");
-
-            DataServiceRequestArgs args = new DataServiceRequestArgs();
-            args.ContentType = contentType;
-            args.Slug = slug;
-            this.SetSaveStream(entity, stream, closeStream, args);
-        }
-
-        public void SetSaveStream(object entity, Stream stream, bool closeStream, DataServiceRequestArgs args)
-        {
-            EntityDescriptor box = this.EnsureContained(entity, "entity");
-            Util.CheckArgumentNull(stream, "stream");
-            Util.CheckArgumentNull(args, "args");
-
-            ClientType clientType = ClientType.Create(entity.GetType());
-            if (clientType.MediaDataMember != null)
-            { 
-                throw new ArgumentException(
-                    Strings.Context_SetSaveStreamOnMediaEntryProperty(clientType.ElementTypeName), 
-                    "entity");
-            }
-
-            box.SaveStream = new DataServiceSaveStream(stream, closeStream, args);
-
-            Debug.Assert(box.State != EntityStates.Detached, "We should never have a detached entity in the entityDescriptor dictionary.");
-            switch (box.State)
-            {
-                case EntityStates.Added:
-                    box.StreamState = StreamStates.Added;
-                    break;
-
-                case EntityStates.Modified:
-                case EntityStates.Unchanged:
-                    box.StreamState = StreamStates.Modified;
-                    break;
-
-                case EntityStates.Deleted:
-                default:
-                    throw new DataServiceClientException(Strings.DataServiceException_GeneralError);
-            }
-
-        }
-
-        #endregion
-
-        #region ExecuteBatch, BeginExecuteBatch, EndExecuteBatch
-
-        public IAsyncResult BeginExecuteBatch(AsyncCallback callback, object state, params DataServiceRequest[] queries)
-        {
-            Util.CheckArgumentNotEmpty(queries, "queries");
-
-            SaveResult result = new SaveResult(this, "ExecuteBatch", queries, SaveChangesOptions.Batch, callback, state, true);
-            result.BatchBeginRequest(false);
-            return result;
-        }
-
-
-        public DataServiceResponse EndExecuteBatch(IAsyncResult asyncResult)
-        {
-            SaveResult result = BaseAsyncResult.EndExecute<SaveResult>(this, "ExecuteBatch", asyncResult);
-            return result.EndRequest();
-        }
-
-#if !ASTORIA_LIGHT 
-        public DataServiceResponse ExecuteBatch(params DataServiceRequest[] queries)
-        {
-            Util.CheckArgumentNotEmpty(queries, "queries");
-
-            SaveResult result = new SaveResult(this, "ExecuteBatch", queries, SaveChangesOptions.Batch, null, null, false);
-            result.BatchRequest(false );
-            return result.EndRequest();
-        }
-#endif
-
-        #endregion
-
-        #region Execute(Uri), BeginExecute(Uri), EndExecute(Uri)
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
-        public IAsyncResult BeginExecute<TElement>(Uri requestUri, AsyncCallback callback, object state)
-        {
-            requestUri = Util.CreateUri(this.baseUriWithSlash, requestUri);
-            QueryComponents qc = new QueryComponents(requestUri, Util.DataServiceVersionEmpty, typeof(TElement), null, null);
-            return (new DataServiceRequest<TElement>(qc, null)).BeginExecute(this, this, callback, state);
-        }
-
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
-        public IAsyncResult BeginExecute<T>(DataServiceQueryContinuation<T> continuation, AsyncCallback callback, object state)
-        {
-            Util.CheckArgumentNull(continuation, "continuation");
-            QueryComponents qc = continuation.CreateQueryComponents();
-            return (new DataServiceRequest<T>(qc, continuation.Plan)).BeginExecute(this, this, callback, state);
-        }
-
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
-        public IEnumerable<TElement> EndExecute<TElement>(IAsyncResult asyncResult)
-        {
-            Util.CheckArgumentNull(asyncResult, "asyncResult");
-            return DataServiceRequest.EndExecute<TElement>(this, this, asyncResult);
-        }
-
-#if !ASTORIA_LIGHT 
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
-        public IEnumerable<TElement> Execute<TElement>(Uri requestUri)
-        {
-            requestUri = Util.CreateUri(this.baseUriWithSlash, requestUri);
-            QueryComponents qc = new QueryComponents(requestUri, Util.DataServiceVersionEmpty, typeof(TElement), null, null);
-            DataServiceRequest request = new DataServiceRequest<TElement>(qc, null);
-            return request.Execute<TElement>(this, qc);
-        }
-
-        public QueryOperationResponse<T> Execute<T>(DataServiceQueryContinuation<T> continuation)
-        {
-            Util.CheckArgumentNull(continuation, "continuation");
-            QueryComponents qc = continuation.CreateQueryComponents();
-            DataServiceRequest request = new DataServiceRequest<T>(qc, continuation.Plan);
-            return request.Execute<T>(this, qc);
-        }
-#endif
-        #endregion
-
-        #region SaveChanges, BeginSaveChanges, EndSaveChanges
-
-
-        public IAsyncResult BeginSaveChanges(AsyncCallback callback, object state)
-        {
-            return this.BeginSaveChanges(this.SaveChangesDefaultOptions, callback, state);
-        }
-
-
-        public IAsyncResult BeginSaveChanges(SaveChangesOptions options, AsyncCallback callback, object state)
-        {
-            ValidateSaveChangesOptions(options);
-            SaveResult result = new SaveResult(this, "SaveChanges", null, options, callback, state, true);
-            bool replaceOnUpdate = IsFlagSet(options, SaveChangesOptions.ReplaceOnUpdate);
-            if (IsFlagSet(options, SaveChangesOptions.Batch))
-            {
-                result.BatchBeginRequest(replaceOnUpdate);
-            }
-            else
-            {
-                result.BeginNextChange(replaceOnUpdate); 
-            }
-
-            return result;
-        }
-
-        public DataServiceResponse EndSaveChanges(IAsyncResult asyncResult)
-        {
-            SaveResult result = BaseAsyncResult.EndExecute<SaveResult>(this, "SaveChanges", asyncResult);
-            
-            DataServiceResponse errors = result.EndRequest();
-
-            if (this.ChangesSaved != null)
-            {
-                this.ChangesSaved(this, new SaveChangesEventArgs(errors));
-            }
-
-            return errors;
-        }
-
-#if !ASTORIA_LIGHT
-        public DataServiceResponse SaveChanges()
-        {
-            return this.SaveChanges(this.SaveChangesDefaultOptions);
-        }
-
- 
-        public DataServiceResponse SaveChanges(SaveChangesOptions options)
-        {
-            DataServiceResponse errors = null;
-            ValidateSaveChangesOptions(options);
-
-            SaveResult result = new SaveResult(this, "SaveChanges", null, options, null, null, false);
-            bool replaceOnUpdate = IsFlagSet(options, SaveChangesOptions.ReplaceOnUpdate);
-            if (IsFlagSet(options, SaveChangesOptions.Batch))
-            {
-                result.BatchRequest(replaceOnUpdate);
-            }
-            else
-            {
-                result.BeginNextChange(replaceOnUpdate);
-            }
-
-            errors = result.EndRequest();
-
-            Debug.Assert(null != errors, "null errors");
-
-            if (this.ChangesSaved != null)
-            {
-                this.ChangesSaved(this, new SaveChangesEventArgs(errors));
-            }
-
-            return errors;
-        }
-#endif
-        #endregion
-
-        #region Add, Attach, Delete, Detach, Update, TryGetEntity, TryGetUri
-
-
-        public void AddLink(object source, string sourceProperty, object target)
-        {
-            this.EnsureRelatable(source, sourceProperty, target, EntityStates.Added);
-
-            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
-            if (this.bindings.ContainsKey(relation))
-            {
-                throw Error.InvalidOperation(Strings.Context_RelationAlreadyContained);
-            }
-
-            relation.State = EntityStates.Added;
-            this.bindings.Add(relation, relation);
-            this.IncrementChange(relation);
-        }
-
-
-        public void AttachLink(object source, string sourceProperty, object target)
-        {
-            this.AttachLink(source, sourceProperty, target, MergeOption.NoTracking);
-        }
-
-
-        public bool DetachLink(object source, string sourceProperty, object target)
-        {
-            Util.CheckArgumentNull(source, "source");
-            Util.CheckArgumentNotEmpty(sourceProperty, "sourceProperty");
-
-            LinkDescriptor existing;
-            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
-            if (!this.bindings.TryGetValue(relation, out existing))
-            {
-                return false;
-            }
-
-            this.DetachExistingLink(existing, false);
-            return true;
-        }
-
-
-        public void DeleteLink(object source, string sourceProperty, object target)
-        {
-            bool delay = this.EnsureRelatable(source, sourceProperty, target, EntityStates.Deleted);
-
-            LinkDescriptor existing = null;
-            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
-            if (this.bindings.TryGetValue(relation, out existing) && (EntityStates.Added == existing.State))
-            {   
-                this.DetachExistingLink(existing, false);
-            }
-            else
-            {
-                if (delay)
-                {  
-                    throw Error.InvalidOperation(Strings.Context_NoRelationWithInsertEnd);
-                }
-
-                if (null == existing)
-                {  
-                    this.bindings.Add(relation, relation);
-                    existing = relation;
-                }
-
-                if (EntityStates.Deleted != existing.State)
-                {
-                    existing.State = EntityStates.Deleted;
-
-
-                    this.IncrementChange(existing);
-                }
-            }
-        }
-
-
-        public void SetLink(object source, string sourceProperty, object target)
-        {
-            this.EnsureRelatable(source, sourceProperty, target, EntityStates.Modified);
-
-            LinkDescriptor relation = this.DetachReferenceLink(source, sourceProperty, target, MergeOption.NoTracking);
-            if (null == relation)
-            {
-                relation = new LinkDescriptor(source, sourceProperty, target);
-                this.bindings.Add(relation, relation);
-            }
-
-            Debug.Assert(
-                0 == relation.State ||
-                IncludeLinkState(relation.State),
-                "set link entity state");
-
-            if (EntityStates.Modified != relation.State)
-            {
-                relation.State = EntityStates.Modified;
-                this.IncrementChange(relation);
-            }
-        }
-
-        #endregion
-
-        #region AddObject, AttachTo, DeleteObject, Detach, TryGetEntity, TryGetUri
-
-        public void AddObject(string entitySetName, object entity)
-        {
-            this.ValidateEntitySetName(ref entitySetName);
-            ValidateEntityType(entity);
-
-            EntityDescriptor resource = new EntityDescriptor(null, null , null , entity, null, null, entitySetName, null, EntityStates.Added);
-
-            try
-            {
-                this.entityDescriptors.Add(entity, resource);
-            }
-            catch (ArgumentException)
-            {
-                throw Error.InvalidOperation(Strings.Context_EntityAlreadyContained);
-            }
-
-            this.IncrementChange(resource);
-        }
-
-
-        public void AddRelatedObject(object source, string sourceProperty, object target)
-        {
-            Util.CheckArgumentNull(source, "source");
-            Util.CheckArgumentNotEmpty(sourceProperty, "propertyName");
-            Util.CheckArgumentNull(target, "target");
-
-
-            ValidateEntityType(source);
-
-            EntityDescriptor sourceResource = this.EnsureContained(source, "source");
-
-    
-            if (sourceResource.State == EntityStates.Deleted)
-            {
-                throw Error.InvalidOperation(Strings.Context_AddRelatedObjectSourceDeleted);
-            }
-
-            ClientType parentType = ClientType.Create(source.GetType());
-            ClientType.ClientProperty property = parentType.GetProperty(sourceProperty, false);
-            if (property.IsKnownType || property.CollectionType == null)
-            {
-                throw Error.InvalidOperation(Strings.Context_AddRelatedObjectCollectionOnly);
-            }
-
-
-            ClientType childType = ClientType.Create(target.GetType());
-            ValidateEntityType(target);
-
-
-            ClientType propertyElementType = ClientType.Create(property.CollectionType);
-            if (!propertyElementType.ElementType.IsAssignableFrom(childType.ElementType))
-            {
-
-                throw Error.Argument(Strings.Context_RelationNotRefOrCollection, "target");
-            }
-
-            EntityDescriptor targetResource = new EntityDescriptor(null, null, null, target, sourceResource, sourceProperty, null , null, EntityStates.Added);
-
-            try
-            {
-                this.entityDescriptors.Add(target, targetResource);
-            }
-            catch (ArgumentException)
-            {
-                throw Error.InvalidOperation(Strings.Context_EntityAlreadyContained);
-            }
-
-
-            LinkDescriptor end = targetResource.GetRelatedEnd();
-            end.State = EntityStates.Added;
-            this.bindings.Add(end, end);
-
-            this.IncrementChange(targetResource);
-        }
-
-
-        public void AttachTo(string entitySetName, object entity)
-        {
-            this.AttachTo(entitySetName, entity, null);
-        }
-
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704", MessageId = "etag", Justification = "represents ETag in request")]
-        public void AttachTo(string entitySetName, object entity, string etag)
-        {
-            this.ValidateEntitySetName(ref entitySetName);
-            Uri editLink = GenerateEditLinkUri(this.baseUriWithSlash, entitySetName, entity);
-
-
-            String identity = Util.ReferenceIdentity(editLink.ToString());
-
-            EntityDescriptor descriptor = new EntityDescriptor(identity, null , editLink, entity, null , null , null , etag, EntityStates.Unchanged);
-            this.InternalAttachEntityDescriptor(descriptor, true);
-        }
-
-
-        public void DeleteObject(object entity)
-        {
-            Util.CheckArgumentNull(entity, "entity");
-
-            EntityDescriptor resource = null;
-            if (!this.entityDescriptors.TryGetValue(entity, out resource))
-            {   
-                throw Error.InvalidOperation(Strings.Context_EntityNotContained);
-            }
-
-            EntityStates state = resource.State;
-            if (EntityStates.Added == state)
-            {  
-                this.DetachResource(resource);
-            }
-            else if (EntityStates.Deleted != state)
-            {
-                Debug.Assert(
-                    IncludeLinkState(state),
-                    "bad state transition to deleted");
-
-
-                resource.State = EntityStates.Deleted;
-                this.IncrementChange(resource);
-            }
-        }
-
-        public bool Detach(object entity)
-        {
-            Util.CheckArgumentNull(entity, "entity");
-
-            EntityDescriptor resource = null;
-            if (this.entityDescriptors.TryGetValue(entity, out resource))
-            {
-                return this.DetachResource(resource);
-            }
-
-            return false;
-        }
-
-
-        public void UpdateObject(object entity)
-        {
-            Util.CheckArgumentNull(entity, "entity");
-
-            EntityDescriptor resource = null;
-            if (!this.entityDescriptors.TryGetValue(entity, out resource))
-            {
-                throw Error.Argument(Strings.Context_EntityNotContained, "entity");
-            }
-
-            if (EntityStates.Unchanged == resource.State)
-            {
-                resource.State = EntityStates.Modified;
-                this.IncrementChange(resource);
-            }
-        }
-
-   public bool TryGetEntity<TEntity>(Uri identity, out TEntity entity) where TEntity : class
-        {
-            entity = null;
-            Util.CheckArgumentNull(identity, "relativeUri");
-
-            EntityStates state;
-
-
-            entity = (TEntity)this.TryGetEntity(Util.ReferenceIdentity(identity.ToString()), null, MergeOption.AppendOnly, out state);
-            return (null != entity);
-        }
-
-
-        public bool TryGetUri(object entity, out Uri identity)
-        {
-            identity = null;
-            Util.CheckArgumentNull(entity, "entity");
-
-            EntityDescriptor resource = null;
-            if ((null != this.identityToDescriptor) &&
-                this.entityDescriptors.TryGetValue(entity, out resource) &&
-                (null != resource.Identity) &&
-                Object.ReferenceEquals(resource, this.identityToDescriptor[resource.Identity]))
-            {
-
-                string identityUri = Util.DereferenceIdentity(resource.Identity);
-                identity = Util.CreateUri(identityUri, UriKind.Absolute);
-            }
-
-            return (null != identity);
-        }
-
-        internal static Exception HandleResponse(
-            HttpStatusCode statusCode,
-            string responseVersion,
-            Func<Stream> getResponseStream,
-            bool throwOnFailure)
-        {
-            InvalidOperationException failure = null;
-            if (!CanHandleResponseVersion(responseVersion))
-            {
-                string description = Strings.Context_VersionNotSupported(
-                    responseVersion,
-                    SerializeSupportedVersions());
-
-                failure = Error.InvalidOperation(description);
-            }
-
-            if (failure == null && !WebUtil.SuccessStatusCode(statusCode))
-            {
-                failure = GetResponseText(getResponseStream, statusCode);
-            }
-
-            if (failure != null && throwOnFailure)
-            {
-                throw failure;
-            }
-
-            return failure;
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031", Justification = "Cache exception so user can examine it later")]
-        internal static DataServiceClientException GetResponseText(Func<Stream> getResponseStream, HttpStatusCode statusCode)
-        {
-            string message = null;
-            using (System.IO.Stream stream = getResponseStream())
-            {
-                if ((null != stream) && stream.CanRead)
-                {
-                    message = new StreamReader(stream).ReadToEnd();
-                }
-            }
-
-            if (String.IsNullOrEmpty(message))
-            {
-                message = statusCode.ToString();
-            }
-
-            return new DataServiceClientException(message, (int)statusCode);
-        }
-
-        internal void AttachIdentity(String identity, Uri selfLink, Uri editLink, object entity, string etag)
-        { 
-            Debug.Assert(null != identity, "must have identity");
-
-            this.EnsureIdentityToResource();
-
-          
-            EntityDescriptor resource = this.entityDescriptors[entity];
-
-            this.DetachResourceIdentity(resource);
-
-           
-            if (resource.IsDeepInsert)
-            {
-                LinkDescriptor end = this.bindings[resource.GetRelatedEnd()];
-                end.State = EntityStates.Unchanged;
-            }
-
-            resource.ETag = etag;
-            resource.Identity = identity; 
-            resource.SelfLink = selfLink;
-            resource.EditLink = editLink;
-
-            resource.State = EntityStates.Unchanged;
-
-
-            this.identityToDescriptor[identity] = resource;
-        }
-
-
-        internal void AttachLocation(object entity, string location)
-        {
-            Debug.Assert(null != entity, "null != entity");
-            Uri editLink = new Uri(location, UriKind.Absolute);
-            String identity = Util.ReferenceIdentity(editLink.ToString());
-
-            this.EnsureIdentityToResource();
-
-            EntityDescriptor resource = this.entityDescriptors[entity];
-            this.DetachResourceIdentity(resource);
-
-
-            if (resource.IsDeepInsert)
-            {
-                LinkDescriptor end = this.bindings[resource.GetRelatedEnd()];
-                end.State = EntityStates.Unchanged;
-            }
-
-            resource.Identity = identity; 
-            resource.EditLink = editLink;
-
-          this.identityToDescriptor[identity] = resource;
-        }
-
-
-        internal void AttachLink(object source, string sourceProperty, object target, MergeOption linkMerge)
-        {
-            this.EnsureRelatable(source, sourceProperty, target, EntityStates.Unchanged);
-
-            LinkDescriptor existing = null;
-            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
-            if (this.bindings.TryGetValue(relation, out existing))
-            {
-                switch (linkMerge)
-                {
-                    case MergeOption.AppendOnly:
-                        break;
-
-                    case MergeOption.OverwriteChanges:
-                        relation = existing;
-                        break;
-
-                    case MergeOption.PreserveChanges:
-                        if ((EntityStates.Added == existing.State) ||
-                            (EntityStates.Unchanged == existing.State) ||
-                            (EntityStates.Modified == existing.State && null != existing.Target))
-                        {
-                            relation = existing;
-                        }
-
-                        break;
-
-                    case MergeOption.NoTracking: 
-                        throw Error.InvalidOperation(Strings.Context_RelationAlreadyContained);
-                }
-            }
-            else
-            {
-                bool collectionProperty = (null != ClientType.Create(source.GetType()).GetProperty(sourceProperty, false).CollectionType);
-                if (collectionProperty || (null == (existing = this.DetachReferenceLink(source, sourceProperty, target, linkMerge))))
-                {
-                    this.bindings.Add(relation, relation);
-                    this.IncrementChange(relation);
-                }
-                else if (!((MergeOption.AppendOnly == linkMerge) ||
-                           (MergeOption.PreserveChanges == linkMerge && EntityStates.Modified == existing.State)))
-                {
-         
-                    relation = existing;
-                }
-            }
-
-            relation.State = EntityStates.Unchanged;
-        }
-
-
-        internal EntityDescriptor InternalAttachEntityDescriptor(EntityDescriptor descriptor, bool failIfDuplicated)
-        {
-            Debug.Assert((null != descriptor.Identity), "must have identity");
-            Debug.Assert(null != descriptor.Entity && ClientType.Create(descriptor.Entity.GetType()).IsEntityType, "must be entity type to attach");
-
-            this.EnsureIdentityToResource();
-
-            EntityDescriptor resource;
-            this.entityDescriptors.TryGetValue(descriptor.Entity, out resource);
-
-            EntityDescriptor existing;
-            this.identityToDescriptor.TryGetValue(descriptor.Identity, out existing);
-
-            if (failIfDuplicated && (null != resource))
-            {
-                throw Error.InvalidOperation(Strings.Context_EntityAlreadyContained);
-            }
-            else if (resource != existing)
-            {
-                throw Error.InvalidOperation(Strings.Context_DifferentEntityAlreadyContained);
-            }
-            else if (null == resource)
-            {
-                resource = descriptor;
-                
-            
-                this.IncrementChange(descriptor);
-                this.entityDescriptors.Add(descriptor.Entity, descriptor);
-                this.identityToDescriptor.Add(descriptor.Identity, descriptor);
-            }
-
-
-            return resource;
-        }
-
-        #endregion
-
-#if ASTORIA_LIGHT
-
-        internal HttpWebRequest CreateRequest(Uri requestUri, string method, bool allowAnyType, string contentType, Version requestVersion, bool sendChunked)
-        {
-            return CreateRequest(requestUri, method, allowAnyType, contentType, requestVersion, sendChunked, HttpStack.Auto);
-        }
-#endif
-
-#if !ASTORIA_LIGHT
-       
-
-        internal HttpWebRequest CreateRequest(Uri requestUri, string method, bool allowAnyType, string contentType, Version requestVersion, bool sendChunked)
-#else
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "sendChunked", Justification = "common parameter not used in silverlight")]
-        internal HttpWebRequest CreateRequest(Uri requestUri, string method, bool allowAnyType, string contentType, Version requestVersion, bool sendChunked, HttpStack httpStackArg)
-#endif
-        {
-            Debug.Assert(null != requestUri, "request uri is null");
-            Debug.Assert(requestUri.IsAbsoluteUri, "request uri is not absolute uri");
-            Debug.Assert(
-                requestUri.Scheme.Equals("http", StringComparison.OrdinalIgnoreCase) ||
-                    requestUri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase), 
-                "request uri is not for HTTP");
-
-            Debug.Assert(
-                Object.ReferenceEquals(XmlConstants.HttpMethodDelete, method) ||
-                Object.ReferenceEquals(XmlConstants.HttpMethodGet, method) ||
-                Object.ReferenceEquals(XmlConstants.HttpMethodPost, method) ||
-                Object.ReferenceEquals(XmlConstants.HttpMethodPut, method) ||
-                Object.ReferenceEquals(XmlConstants.HttpMethodMerge, method),
-                "unexpected http method string reference");
-
-#if !ASTORIA_LIGHT
-            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri);
-#else
-            if (httpStackArg == HttpStack.Auto)
-            {
-                httpStackArg = this.httpStack;
-            }
-            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri, httpStackArg);
-#endif
-
-#if !ASTORIA_LIGHT 
-            if (null != this.Credentials)
-            {
-                request.Credentials = this.Credentials;
-            }
-#endif
-
-#if !ASTORIA_LIGHT 
-            if (0 != this.timeout)
-            {
-                request.Timeout = (int)Math.Min(Int32.MaxValue, new TimeSpan(0, 0, this.timeout).TotalMilliseconds);
-            }
-#endif
-
-#if !ASTORIA_LIGHT 
-            request.KeepAlive = true;
-#endif
-
-#if !ASTORIA_LIGHT 
-            request.UserAgent = "Microsoft ADO.NET Data Services";
-#endif
-
-            if (this.UsePostTunneling &&
-                (!Object.ReferenceEquals(XmlConstants.HttpMethodPost, method)) &&
-                (!Object.ReferenceEquals(XmlConstants.HttpMethodGet, method)))
-            {
-                request.Headers[XmlConstants.HttpXMethod] = method;
-                request.Method = XmlConstants.HttpMethodPost;
-            }
-            else
-            {
-                request.Method = method;
-            }
-
-            if (requestVersion != null && requestVersion.Major > 0)
-            {
-         
-                request.Headers[XmlConstants.HttpDataServiceVersion] = requestVersion.ToString() + Util.VersionSuffix;
-            }
-
-            request.Headers[XmlConstants.HttpMaxDataServiceVersion] = Util.MaxResponseVersion.ToString() + Util.VersionSuffix;
-
-#if !ASTORIA_LIGHT 
-            if (sendChunked)
-            {
-                request.SendChunked = true;
-            }
-#endif
-
-            if (this.SendingRequest != null)
-            {
-                System.Net.WebHeaderCollection requestHeaders;
-#if !ASTORIA_LIGHT
-                requestHeaders = request.Headers;
-                SendingRequestEventArgs args = new SendingRequestEventArgs(request, requestHeaders);
-#else
-                requestHeaders = request.CreateEmptyWebHeaderCollection();
-                SendingRequestEventArgs args = new SendingRequestEventArgs(null, requestHeaders);
-#endif
-                this.SendingRequest(this, args);
-
-#if !ASTORIA_LIGHT
-                if (!Object.ReferenceEquals(args.Request, request))
-                {
-                    request = (System.Net.HttpWebRequest)args.Request;
-                }
-#else
-              
-                foreach (string key in requestHeaders.AllKeys)
-                {
-                    request.Headers[key] = requestHeaders[key];
-                }
-#endif
-            }
-
-            request.Accept = allowAnyType ?
-                    XmlConstants.MimeAny :
-                    (XmlConstants.MimeApplicationAtom + "," + XmlConstants.MimeApplicationXml);
-
-            request.Headers[HttpRequestHeader.AcceptCharset] = XmlConstants.Utf8Encoding;
-
-#if !ASTORIA_LIGHT 
-            bool allowStreamBuffering = false;
-            bool removeXMethod = true;
-#endif
-
-            if (!Object.ReferenceEquals(XmlConstants.HttpMethodGet, method))
-            {
-                Debug.Assert(!String.IsNullOrEmpty(contentType), "Content-Type must be specified for non get operation");
-                request.ContentType = contentType;
-                if (Object.ReferenceEquals(XmlConstants.HttpMethodDelete, method))
-                {
-                    request.ContentLength = 0;
-                }
-#if !ASTORIA_LIGHT 
-                // else
-                {   
-                    allowStreamBuffering = true;
-                }
-#endif
-
-                if (this.UsePostTunneling && (!Object.ReferenceEquals(XmlConstants.HttpMethodPost, method)))
-                {
-                    request.Headers[XmlConstants.HttpXMethod] = method;
-                    method = XmlConstants.HttpMethodPost;
-#if !ASTORIA_LIGHT
-                    removeXMethod = false;
-#endif
-                }
-            }
-            else
-            {
-                Debug.Assert(contentType == null, "Content-Type for get methods should be null");
-            }
-
-#if !ASTORIA_LIGHT 
-            request.AllowWriteStreamBuffering = allowStreamBuffering;
-#endif
-
-            ICollection<string> headers;
-            headers = request.Headers.AllKeys;
-
-#if !ASTORIA_LIGHT  
-            if (headers.Contains(XmlConstants.HttpRequestIfMatch))
-            {
-                request.Headers.Remove(HttpRequestHeader.IfMatch);
-            }
-#endif
-
-#if !ASTORIA_LIGHT  
-            if (removeXMethod && headers.Contains(XmlConstants.HttpXMethod))
-            {
-                request.Headers.Remove(XmlConstants.HttpXMethod);
-            }
-#endif
-
-            request.Method = method;
-            return request;
-        }
-
-
-        internal object TryGetEntity(String resourceUri, string etag, MergeOption merger, out EntityStates state)
-        {
-            Debug.Assert(null != resourceUri, "null uri");
-            state = EntityStates.Detached;
-
-            EntityDescriptor resource = null;
-            if ((null != this.identityToDescriptor) &&
-                 this.identityToDescriptor.TryGetValue(resourceUri, out resource))
-            {
-                state = resource.State;
-                if ((null != etag) && (MergeOption.AppendOnly != merger))
-                {  
-                    resource.ETag = etag;
-                }
-
-                Debug.Assert(null != resource.Entity, "null entity");
-                return resource.Entity;
-            }
-
-            return null;
-        }
-
-
-        internal IEnumerable<LinkDescriptor> GetLinks(object source, string sourceProperty)
-        {
-            return this.bindings.Values.Where(o => (o.Source == source) && (o.SourceProperty == sourceProperty));
-        }
-
-
-        internal Type ResolveTypeFromName(string wireName, Type userType, bool checkAssignable)
-        {
-            Debug.Assert(null != userType, "null != baseType");
-
-            if (String.IsNullOrEmpty(wireName))
-            {
-                return userType;
-            }
-
-            Type payloadType;
-            if (!ClientConvert.ToNamedType(wireName, out payloadType))
-            {
-                payloadType = null;
-
-                Func<string, Type> resolve = this.ResolveType;
-                if (null != resolve)
-                {
-             
-                    payloadType = resolve(wireName);
-                }
-
-                if (null == payloadType)
-                {
-                 
-#if !ASTORIA_LIGHT
-                    payloadType = ClientType.ResolveFromName(wireName, userType);
-#else
-                    payloadType = ClientType.ResolveFromName(wireName, userType, this.GetType());
-#endif
-                }
-
-                if (checkAssignable && (null != payloadType) && (!userType.IsAssignableFrom(payloadType)))
-                {
-          
-                    throw Error.InvalidOperation(Strings.Deserialize_Current(userType, payloadType));
-                }
-            }
-
-            return payloadType ?? userType;
-        }
-
-
-        internal string ResolveNameFromType(Type type)
-        {
-            Debug.Assert(null != type, "null type");
-            Func<Type, string> resolve = this.ResolveName;
-            return ((null != resolve) ? resolve(type) : (String)null);
-        }
-
-
-        internal string GetServerTypeName(EntityDescriptor descriptor)
-        {
-            Debug.Assert(descriptor != null && descriptor.Entity != null, "Null descriptor or no entity in descriptor");
-
-            if (this.resolveName != null)
-            {
-               
-                Type entityType = descriptor.Entity.GetType();
-                var codegenAttr = this.resolveName.Method.GetCustomAttributes(false).OfType<System.CodeDom.Compiler.GeneratedCodeAttribute>().FirstOrDefault();
-                if (codegenAttr == null || codegenAttr.Tool != Util.CodeGeneratorToolName)
-                {
-                   
-                    return this.resolveName(entityType) ?? descriptor.ServerTypeName;
-                }
-                else
-                {
-                    return descriptor.ServerTypeName ?? this.resolveName(entityType);
-                }
-            }
-            else
-            {
-                return descriptor.ServerTypeName;
-            }
-        }
-
-
-        internal void FireReadingEntityEvent(object entity, XElement data)
-        {
-            Debug.Assert(entity != null, "entity != null");
-            Debug.Assert(data != null, "data != null");
-
-            ReadingWritingEntityEventArgs args = new ReadingWritingEntityEventArgs(entity, data);
-            this.ReadingEntity(this, args);
-        }
-
-        #region Ensure
-
-  
-        private static bool IncludeLinkState(EntityStates x)
-        {
-            return ((EntityStates.Modified == x) || (EntityStates.Unchanged == x));
-        }
-
-        #endregion
-
-        private static bool CanHandleResponseVersion(string responseVersion)
-        {
-            if (!String.IsNullOrEmpty(responseVersion))
-            {
-                KeyValuePair<Version, string> version;
-                if (!HttpProcessUtility.TryReadVersion(responseVersion, out version))
-                {
-                    return false;
-                }
-
-                if (!Util.SupportedResponseVersions.Contains(version.Key))
-                {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-
-
-        private static string SerializeSupportedVersions()
-        {
-            Debug.Assert(Util.SupportedResponseVersions.Length > 0, "At least one supported version must exist.");
-
-            StringBuilder supportedVersions = new StringBuilder("'").Append(Util.SupportedResponseVersions[0].ToString());
-            for (int versionIdx = 1; versionIdx < Util.SupportedResponseVersions.Length; versionIdx++)
-            {
-                supportedVersions.Append("', '");
-                supportedVersions.Append(Util.SupportedResponseVersions[versionIdx].ToString());
-            }
-
-            supportedVersions.Append("'");
-
-            return supportedVersions.ToString();
-        }
-
-        private static Uri GenerateEditLinkUri(Uri baseUriWithSlash, string entitySetName, object entity)
-        {
-            Debug.Assert(null != baseUriWithSlash && baseUriWithSlash.IsAbsoluteUri && baseUriWithSlash.OriginalString.EndsWith("/", StringComparison.Ordinal), "baseUriWithSlash");
-            Debug.Assert(!String.IsNullOrEmpty(entitySetName) && !entitySetName.StartsWith("/", StringComparison.Ordinal), "entitySetName");
-     
-            ValidateEntityTypeHasKeys(entity);
-
-            StringBuilder builder = new StringBuilder();
-            builder.Append(baseUriWithSlash.AbsoluteUri);
-            builder.Append(entitySetName);
-            builder.Append("(");
-
-            string prefix = String.Empty;
-            ClientType clientType = ClientType.Create(entity.GetType());
-
-            ClientType.ClientProperty[] keys = clientType.Properties.Where<ClientType.ClientProperty>(ClientType.ClientProperty.GetKeyProperty).ToArray();
-            foreach (ClientType.ClientProperty property in keys)
-            {
-#if ASTORIA_OPEN_OBJECT
-                Debug.Assert(!property.OpenObjectProperty, "key property values can't be OpenProperties");
-#endif
-
-                builder.Append(prefix);
-                if (1 < keys.Length)
-                {
-                    builder.Append(property.PropertyName).Append("=");
-                }
-
-                object value = property.GetValue(entity);
-                if (null == value)
-                {
-                    throw Error.InvalidOperation(Strings.Serializer_NullKeysAreNotSupported(property.PropertyName));
-                }
-
-                string converted;
-                if (!ClientConvert.TryKeyPrimitiveToString(value, out converted))
-                {
-                    throw Error.InvalidOperation(Strings.Context_CannotConvertKey(value));
-                }
-
-                builder.Append(System.Uri.EscapeDataString(converted));
-                prefix = ",";
-            }
-
-            builder.Append(")");
-
-            return Util.CreateUri(builder.ToString(), UriKind.Absolute);
-        }
-
- 
-        private static string GetEntityHttpMethod(EntityStates state, bool replaceOnUpdate)
-        {
-            switch (state)
-            {
-                case EntityStates.Deleted:
-                    return XmlConstants.HttpMethodDelete;
-                case EntityStates.Modified:
-                    if (replaceOnUpdate)
-                    {
-                        return XmlConstants.HttpMethodPut;
-                    }
-                    else
-                    {
-                        return XmlConstants.HttpMethodMerge;
-                    }
-
-                case EntityStates.Added:
-                    return XmlConstants.HttpMethodPost;
-                default:
-                    throw Error.InternalError(InternalError.UnvalidatedEntityState);
-            }
-        }
-
-    
-        private static string GetLinkHttpMethod(LinkDescriptor link)
-        {
-            bool collection = (null != ClientType.Create(link.Source.GetType()).GetProperty(link.SourceProperty, false).CollectionType);
-            if (!collection)
-            {
-                Debug.Assert(EntityStates.Modified == link.State, "not Modified state");
-                if (null == link.Target)
-                {   
-                    return XmlConstants.HttpMethodDelete;
-                }
-                else
-                {   
-                    return XmlConstants.HttpMethodPut;
-                }
-            }
-            else if (EntityStates.Deleted == link.State)
-            {   
-                return XmlConstants.HttpMethodDelete;
-            }
-            else
-            {   
-                Debug.Assert(EntityStates.Added == link.State, "not Added state");
-                return XmlConstants.HttpMethodPost;
-            }
-        }
-
-
-        private static void HandleResponsePost(LinkDescriptor entry)
-        {
-            if (!((EntityStates.Added == entry.State) || (EntityStates.Modified == entry.State && null != entry.Target)))
-            {
-                Error.ThrowBatchUnexpectedContent(InternalError.LinkNotAddedState);
-            }
-
-            entry.State = EntityStates.Unchanged;
-        }
-
-
-        private static void HandleResponsePut(Descriptor entry, string etag)
-        {
-            if (entry.IsResource)
-            {
-                EntityDescriptor descriptor = (EntityDescriptor)entry;
-                if (EntityStates.Modified != descriptor.State && StreamStates.Modified != descriptor.StreamState)
-                {
-                    Error.ThrowBatchUnexpectedContent(InternalError.EntryNotModified);
-                }
-
-                if (descriptor.StreamState == StreamStates.Modified)
-                {
-                    descriptor.StreamETag = etag;
-                    descriptor.StreamState = StreamStates.NoStream;
-                }
-                else
-                {
-                    Debug.Assert(descriptor.State == EntityStates.Modified, "descriptor.State == EntityStates.Modified");
-                    descriptor.ETag = etag;
-                    descriptor.State = EntityStates.Unchanged;
-                }
-            }
-            else
-            {
-                LinkDescriptor link = (LinkDescriptor)entry;
-                if ((EntityStates.Added == entry.State) || (EntityStates.Modified == entry.State))
-                {
-                    link.State = EntityStates.Unchanged;
-                }
-                else if (EntityStates.Detached != entry.State)
-                {   
-                    Error.ThrowBatchUnexpectedContent(InternalError.LinkBadState);
-                }
-            }
-        }
-
-        private static void WriteContentProperty(XmlWriter writer, string namespaceName, ClientType.ClientProperty property, object propertyValue)
-        {
-            writer.WriteStartElement(property.PropertyName, namespaceName);
-
-            string typename = ClientConvert.GetEdmType(property.PropertyType);
-            if (null != typename)
-            {
-                writer.WriteAttributeString(XmlConstants.AtomTypeAttributeName, XmlConstants.DataWebMetadataNamespace, typename);
-            }
-
-            if (null == propertyValue)
-            {   
-                writer.WriteAttributeString(XmlConstants.AtomNullAttributeName, XmlConstants.DataWebMetadataNamespace, XmlConstants.XmlTrueLiteral);
-
-                if (property.KeyProperty)
-                {
-                    throw Error.InvalidOperation(Strings.Serializer_NullKeysAreNotSupported(property.PropertyName));
-                }
-            }
-            else
-            {
-                string convertedValue = ClientConvert.ToString(propertyValue, false );
-                if (0 == convertedValue.Length)
-                {  
-                    writer.WriteAttributeString(XmlConstants.AtomNullAttributeName, XmlConstants.DataWebMetadataNamespace, XmlConstants.XmlFalseLiteral);
-                }
-                else
-                {   
-                    if (Char.IsWhiteSpace(convertedValue[0]) ||
-                        Char.IsWhiteSpace(convertedValue[convertedValue.Length - 1]))
-                    {  
-                        writer.WriteAttributeString(XmlConstants.XmlSpaceAttributeName, XmlConstants.XmlNamespacesNamespace, XmlConstants.XmlSpacePreserveValue);
-                    }
-
-                    writer.WriteValue(convertedValue);
-                }
-            }
-
-            writer.WriteEndElement();
-        }
-
-
-        private static void ValidateEntityType(object entity)
-        {
-            Util.CheckArgumentNull(entity, "entity");
-
-            if (!ClientType.Create(entity.GetType()).IsEntityType)
-            {
-                throw Error.Argument(Strings.Content_EntityIsNotEntityType, "entity");
-            }
-        }
-
-
-        private static void ValidateEntityTypeHasKeys(object entity)
-        {
-            Util.CheckArgumentNull(entity, "entity");
-
-            if (ClientType.Create(entity.GetType()).KeyCount <= 0)
-            {
-                throw Error.Argument(Strings.Content_EntityWithoutKey, "entity");
-            }
-        }
-
- 
-        private static void ValidateSaveChangesOptions(SaveChangesOptions options)
-        {
-            const SaveChangesOptions All =
-                SaveChangesOptions.ContinueOnError |
-                SaveChangesOptions.Batch |
-                SaveChangesOptions.ReplaceOnUpdate;
-
-            
-            if ((options | All) != All)
-            {
-                throw Error.ArgumentOutOfRange("options");
-            }
-
-    
-            if (IsFlagSet(options, SaveChangesOptions.Batch | SaveChangesOptions.ContinueOnError))
-            {
-                throw Error.ArgumentOutOfRange("options");
-            }
-        }
-
- 
-        private static bool IsFlagSet(SaveChangesOptions options, SaveChangesOptions flag)
-        {
-            return ((options & flag) == flag);
-        }
-
-        private static void WriteOperationRequestHeaders(StreamWriter writer, string methodName, string uri, Version requestVersion)
-        {
-            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeApplicationHttp);
-            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentTransferEncoding, XmlConstants.BatchRequestContentTransferEncoding);
-            writer.WriteLine();
-
-            writer.WriteLine("{0} {1} {2}", methodName, uri, XmlConstants.HttpVersionInBatching);
-            if (requestVersion != Util.DataServiceVersion1 && requestVersion != Util.DataServiceVersionEmpty)
-            {
-                writer.WriteLine("{0}: {1}{2}", XmlConstants.HttpDataServiceVersion, requestVersion, Util.VersionSuffix);
-            }
-        }
-
-        private static void WriteOperationResponseHeaders(StreamWriter writer, int statusCode)
-        {
-            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeApplicationHttp);
-            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentTransferEncoding, XmlConstants.BatchRequestContentTransferEncoding);
-            writer.WriteLine();
-
-            writer.WriteLine("{0} {1} {2}", XmlConstants.HttpVersionInBatching, statusCode, (HttpStatusCode)statusCode);
-        }
-
-
-        private bool DetachResource(EntityDescriptor resource)
-        {
-          
-            foreach (LinkDescriptor end in this.bindings.Values.Where(resource.IsRelatedEntity).ToList())
-            {
-                this.DetachExistingLink(
-                        end, 
-                        end.Target == resource.Entity && resource.State == EntityStates.Added);
-            }
-
-            resource.ChangeOrder = UInt32.MaxValue;
-            resource.State = EntityStates.Detached;
-            bool flag = this.entityDescriptors.Remove(resource.Entity);
-            Debug.Assert(flag, "should have removed existing entity");
-            this.DetachResourceIdentity(resource);
-
-            return true;
-        }
-
-
-        private void DetachResourceIdentity(EntityDescriptor resource)
-        {
-            EntityDescriptor existing = null;
-            if ((null != resource.Identity) &&
-                this.identityToDescriptor.TryGetValue(resource.Identity, out existing) &&
-                Object.ReferenceEquals(existing, resource))
-            {
-                bool removed = this.identityToDescriptor.Remove(resource.Identity);
-                Debug.Assert(removed, "should have removed existing identity");
-            }
-        }
-
-
-        private HttpWebRequest CreateRequest(LinkDescriptor binding)
-        {
-            Debug.Assert(null != binding, "null binding");
-            if (binding.ContentGeneratedForSave)
-            {
-                return null;
-            }
-
-            EntityDescriptor sourceResource = this.entityDescriptors[binding.Source];
-            EntityDescriptor targetResource = (null != binding.Target) ? this.entityDescriptors[binding.Target] : null;
-
-      
-            if (null == sourceResource.Identity)
-            {
-                Debug.Assert(!binding.ContentGeneratedForSave, "already saved link");
-                binding.ContentGeneratedForSave = true;
-                Debug.Assert(EntityStates.Added == sourceResource.State, "expected added state");
-                throw Error.InvalidOperation(Strings.Context_LinkResourceInsertFailure, sourceResource.SaveError);
-            }
-            else if ((null != targetResource) && (null == targetResource.Identity))
-            {
-                Debug.Assert(!binding.ContentGeneratedForSave, "already saved link");
-                binding.ContentGeneratedForSave = true;
-                Debug.Assert(EntityStates.Added == targetResource.State, "expected added state");
-                throw Error.InvalidOperation(Strings.Context_LinkResourceInsertFailure, targetResource.SaveError);
-            }
-
-            Debug.Assert(null != sourceResource.Identity, "missing sourceResource.Identity");
-            return this.CreateRequest(this.CreateRequestUri(sourceResource, binding), GetLinkHttpMethod(binding), false, XmlConstants.MimeApplicationXml, Util.DataServiceVersion1, false);
-        }
-
-        private Uri CreateRequestUri(EntityDescriptor sourceResource, LinkDescriptor binding)
-        {
-            Uri requestUri = Util.CreateUri(sourceResource.GetResourceUri(this.baseUriWithSlash, false ), this.CreateRequestRelativeUri(binding));
-            return requestUri;
-        }
-
-        private Uri CreateRequestRelativeUri(LinkDescriptor binding)
-        {
-            Uri relative;
-            bool collection = (null != ClientType.Create(binding.Source.GetType()).GetProperty(binding.SourceProperty, false).CollectionType);
-            if (collection && (EntityStates.Added != binding.State))
-            {  
-                Debug.Assert(null != binding.Target, "null target in collection");
-                EntityDescriptor targetResource = this.entityDescriptors[binding.Target];
-
-               Uri navigationPropertyUri = this.BaseUriWithSlash.MakeRelativeUri(DataServiceContext.GenerateEditLinkUri(this.BaseUriWithSlash, binding.SourceProperty, targetResource.Entity));
-
-                
-                relative = Util.CreateUri(XmlConstants.UriLinkSegment + "/" + navigationPropertyUri.OriginalString, UriKind.Relative);
-            }
-            else
-            {   
-                relative = Util.CreateUri(XmlConstants.UriLinkSegment + "/" + binding.SourceProperty, UriKind.Relative);
-            }
-
-            Debug.Assert(!relative.IsAbsoluteUri, "should be relative uri");
-            return relative;
-        }
-
-
-        private void CreateRequestBatch(LinkDescriptor binding, StreamWriter text)
-        {
-            EntityDescriptor sourceResource = this.entityDescriptors[binding.Source];
-            string requestString;
-            if (null != sourceResource.Identity)
-            {
-                requestString = this.CreateRequestUri(sourceResource, binding).AbsoluteUri;
-            }
-            else
-            {
-                Uri relative = this.CreateRequestRelativeUri(binding);
-                requestString = "$" + sourceResource.ChangeOrder.ToString(CultureInfo.InvariantCulture) + "/" + relative.OriginalString;
-            }
-
-            WriteOperationRequestHeaders(text, GetLinkHttpMethod(binding), requestString, Util.DataServiceVersion1);
-            text.WriteLine("{0}: {1}", XmlConstants.HttpContentID, binding.ChangeOrder);
-
-       
-            if ((EntityStates.Added == binding.State) || (EntityStates.Modified == binding.State && (null != binding.Target)))
-            {
-                text.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeApplicationXml);
-            }
-        }
-
-
-        private MemoryStream CreateRequestData(LinkDescriptor binding, bool newline)
-        {
-            Debug.Assert(
-                (binding.State == EntityStates.Added) ||
-                (binding.State == EntityStates.Modified && null != binding.Target),
-                "This method must be called only when a binding is added or put");
-            MemoryStream stream = new MemoryStream();
-            XmlWriter writer = XmlUtil.CreateXmlWriterAndWriteProcessingInstruction(stream, HttpProcessUtility.EncodingUtf8NoPreamble);
-            EntityDescriptor targetResource = this.entityDescriptors[binding.Target];
-
-            #region <uri xmlns="metadata">
-            writer.WriteStartElement(XmlConstants.UriElementName, XmlConstants.DataWebMetadataNamespace);
-
-            string id;
-            if (null != targetResource.Identity)
-            {
- 
-                id = targetResource.GetResourceUri(this.baseUriWithSlash, false ).OriginalString;
-            }
-            else
-            {
-                id = "$" + targetResource.ChangeOrder.ToString(CultureInfo.InvariantCulture);
-            }
-
-            writer.WriteValue(id);
-            writer.WriteEndElement();
-            #endregion
-
-            writer.Flush();
-
-            if (newline)
-            {
-             
-                for (int kk = 0; kk < NewLine.Length; ++kk)
-                {
-                    stream.WriteByte((byte)NewLine[kk]);
-                }
-            }
-
-
-            stream.Position = 0;
-            return stream;
-        }
-
-
-        private HttpWebRequest CreateRequest(EntityDescriptor box, EntityStates state, bool replaceOnUpdate)
-        {
-            Debug.Assert(null != box && ((EntityStates.Added == state) || (EntityStates.Modified == state) || (EntityStates.Deleted == state)), "unexpected entity ResourceState");
-
-            string httpMethod = GetEntityHttpMethod(state, replaceOnUpdate);
-            Uri requestUri = box.GetResourceUri(this.baseUriWithSlash, false );
-
-            Version requestVersion = ClientType.Create(box.Entity.GetType()).EpmIsV1Compatible ? Util.DataServiceVersion1 : Util.DataServiceVersion2;
-            HttpWebRequest request = this.CreateRequest(requestUri, httpMethod, false, XmlConstants.MimeApplicationAtom, requestVersion, false);
-            if ((null != box.ETag) && ((EntityStates.Deleted == state) || (EntityStates.Modified == state)))
-            {
-                request.Headers.Set(HttpRequestHeader.IfMatch, box.ETag);
-            }
-
-            return request;
-        }
-
-        private void CreateRequestBatch(EntityDescriptor box, StreamWriter text, bool replaceOnUpdate)
-        {
-            Debug.Assert(null != box, "null box");
-            Debug.Assert(null != text, "null text");
-            Debug.Assert(box.State == EntityStates.Added || box.State == EntityStates.Deleted || box.State == EntityStates.Modified, "the entity must be in one of the 3 possible states");
-
-            Uri requestUri = box.GetResourceUri(this.baseUriWithSlash, false);
-
-            Debug.Assert(null != requestUri, "request uri is null");
-            Debug.Assert(requestUri.IsAbsoluteUri, "request uri is not absolute uri");
-
-            Version requestVersion = ClientType.Create(box.Entity.GetType()).EpmIsV1Compatible ? Util.DataServiceVersion1 : Util.DataServiceVersion2;
-            WriteOperationRequestHeaders(text, GetEntityHttpMethod(box.State, replaceOnUpdate), requestUri.AbsoluteUri, requestVersion);
-            text.WriteLine("{0}: {1}", XmlConstants.HttpContentID, box.ChangeOrder);
-            if (EntityStates.Deleted != box.State)
-            {
-                text.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.LinkMimeTypeEntry);
-            }
-
-            if ((null != box.ETag) && (EntityStates.Deleted == box.State || EntityStates.Modified == box.State))
-            {
-                text.WriteLine("{0}: {1}", XmlConstants.HttpRequestIfMatch, box.ETag);
-            }
-        }
-
-
-        private Stream CreateRequestData(EntityDescriptor box, bool newline)
-        {
-            Debug.Assert(null != box, "null box");
-            MemoryStream stream = null;
-            switch (box.State)
-            {
-                case EntityStates.Deleted:
-                    break;
-                case EntityStates.Modified:
-                case EntityStates.Added:
-                    stream = new MemoryStream();
-                    break;
-                default:
-                    Error.ThrowInternalError(InternalError.UnvalidatedEntityState);
-                    break;
-            }
-
-            if (null != stream)
-            {
-                XmlWriter writer;
-                XDocument node = null;
-                if (this.WritingEntity != null)
-                {
-                
-                    node = new XDocument();
-                    writer = node.CreateWriter();
-                }
-                else
-                {
-                    writer = XmlUtil.CreateXmlWriterAndWriteProcessingInstruction(stream, HttpProcessUtility.EncodingUtf8NoPreamble);
-                }
-
-                ClientType type = ClientType.Create(box.Entity.GetType());
-
-                string typeName = this.GetServerTypeName(box);
-
-                #region <entry xmlns="Atom" xmlns:d="DataWeb", xmlns:m="DataWebMetadata">
-                writer.WriteStartElement(XmlConstants.AtomEntryElementName, XmlConstants.AtomNamespace);
-                writer.WriteAttributeString(XmlConstants.DataWebNamespacePrefix, XmlConstants.XmlNamespacesNamespace, this.DataNamespace);
-                writer.WriteAttributeString(XmlConstants.DataWebMetadataNamespacePrefix, XmlConstants.XmlNamespacesNamespace, XmlConstants.DataWebMetadataNamespace);
-
- 
-                if (!String.IsNullOrEmpty(typeName))
-                {
-                    writer.WriteStartElement(XmlConstants.AtomCategoryElementName, XmlConstants.AtomNamespace);
-                    writer.WriteAttributeString(XmlConstants.AtomCategorySchemeAttributeName, this.typeScheme.OriginalString);
-                    writer.WriteAttributeString(XmlConstants.AtomCategoryTermAttributeName, typeName);
-                    writer.WriteEndElement();
-                }
-
-                if (type.HasEntityPropertyMappings)
-                {
-                    using (EpmSyndicationContentSerializer s = new EpmSyndicationContentSerializer(type.EpmTargetTree, box.Entity, writer))
-                    {
-                        s.Serialize();
-                    }
-                }
-                else
-                {
-                    writer.WriteElementString(XmlConstants.AtomTitleElementName, XmlConstants.AtomNamespace, String.Empty);
-                    writer.WriteStartElement(XmlConstants.AtomAuthorElementName, XmlConstants.AtomNamespace);
-                    writer.WriteElementString(XmlConstants.AtomNameElementName, XmlConstants.AtomNamespace, String.Empty);
-                    writer.WriteEndElement();
-
-                    writer.WriteElementString(XmlConstants.AtomUpdatedElementName, XmlConstants.AtomNamespace, XmlConvert.ToString(DateTime.UtcNow, XmlDateTimeSerializationMode.RoundtripKind));
-                }
-
-                if (EntityStates.Modified == box.State)
-                {
-    
-                    writer.WriteElementString(XmlConstants.AtomIdElementName, Util.DereferenceIdentity(box.Identity));
-                }
-                else
-                {
-                    writer.WriteElementString(XmlConstants.AtomIdElementName, XmlConstants.AtomNamespace, String.Empty);
-                }
-
-                #region <link href=%EditLink% rel=%DataWebRelatedNamespace%%AssociationName% type=application/atom+xml;feed />
-                if (EntityStates.Added == box.State)
-                {
-                    this.CreateRequestDataLinks(box, writer);
-                }
-                #endregion
-
-                #region <content type="application/xml"><m:Properites> or <m:Properties>
-    
-                if (!type.IsMediaLinkEntry && !box.IsMediaLinkEntry)
-                {
-                    writer.WriteStartElement(XmlConstants.AtomContentElementName, XmlConstants.AtomNamespace); 
-                    writer.WriteAttributeString(XmlConstants.AtomTypeAttributeName, XmlConstants.MimeApplicationXml); 
-                }
-
-                writer.WriteStartElement(XmlConstants.AtomPropertiesElementName, XmlConstants.DataWebMetadataNamespace); 
-                bool propertiesWritten;
-                this.WriteContentProperties(writer, type, box.Entity, type.HasEntityPropertyMappings ? type.EpmSourceTree.Root : null, out propertiesWritten);
-
-                writer.WriteEndElement(); 
-
-                if (!type.IsMediaLinkEntry && !box.IsMediaLinkEntry)
-                {
-                    writer.WriteEndElement(); 
-                }
-
-                if (type.HasEntityPropertyMappings)
-                {
-                    using (EpmCustomContentSerializer s = new EpmCustomContentSerializer(type.EpmTargetTree, box.Entity, writer))
-                    {
-                        s.Serialize();
-                    }
-                }
-
-                writer.WriteEndElement();
-                writer.Flush();
-                writer.Close();
-                #endregion
-                #endregion
-
-                if (this.WritingEntity != null)
-                {
-                    ReadingWritingEntityEventArgs args = new ReadingWritingEntityEventArgs(box.Entity, node.Root);
-                    this.WritingEntity(this, args);
-
-                   
-                  
-                    XmlWriterSettings settings = XmlUtil.CreateXmlWriterSettings(HttpProcessUtility.EncodingUtf8NoPreamble);
-                    settings.ConformanceLevel = ConformanceLevel.Auto;
-                    using (XmlWriter streamWriter = XmlWriter.Create(stream, settings))
-                    {
-                        node.Save(streamWriter);
-                    }
-                }
-
-                if (newline)
-                {
-
-                    for (int kk = 0; kk < NewLine.Length; ++kk)
-                    {
-                        stream.WriteByte((byte)NewLine[kk]);
-                    }
-                }
-
-                stream.Position = 0;
-            }
-
-            return stream;
-        }
-
-
-        private void CreateRequestDataLinks(EntityDescriptor box, XmlWriter writer)
-        {
-            Debug.Assert(EntityStates.Added == box.State, "entity not added state");
-
-            ClientType clientType = null;
-            foreach (LinkDescriptor end in this.RelatedLinks(box))
-            {
-                Debug.Assert(!end.ContentGeneratedForSave, "already saved link");
-                end.ContentGeneratedForSave = true;
-
-                if (null == clientType)
-                {
-                    clientType = ClientType.Create(box.Entity.GetType());
-                }
-
-                string typeAttributeValue;
-                if (null != clientType.GetProperty(end.SourceProperty, false).CollectionType)
-                {
-                    typeAttributeValue = XmlConstants.LinkMimeTypeFeed;
-                }
-                else
-                {
-                    typeAttributeValue = XmlConstants.LinkMimeTypeEntry;
-                }
-
-                Debug.Assert(null != end.Target, "null is DELETE");
-                String targetEditLink = this.entityDescriptors[end.Target].EditLink.ToString();
-
-                writer.WriteStartElement(XmlConstants.AtomLinkElementName, XmlConstants.AtomNamespace);
-                writer.WriteAttributeString(XmlConstants.AtomHRefAttributeName, targetEditLink);
-                writer.WriteAttributeString(XmlConstants.AtomLinkRelationAttributeName, XmlConstants.DataWebRelatedNamespace + end.SourceProperty);
-                writer.WriteAttributeString(XmlConstants.AtomTypeAttributeName, typeAttributeValue);
-                writer.WriteEndElement();
-            }
-        }
-
-
-        private void HandleResponseDelete(Descriptor entry)
-        {
-            if (EntityStates.Deleted != entry.State)
-            {
-                Error.ThrowBatchUnexpectedContent(InternalError.EntityNotDeleted);
-            }
-
-            if (entry.IsResource)
-            {
-                EntityDescriptor resource = (EntityDescriptor)entry;
-                this.DetachResource(resource);
-            }
-            else
-            {
-                this.DetachExistingLink((LinkDescriptor)entry, false);
-            }
-        }
-
-        private void HandleResponsePost(EntityDescriptor entry, MaterializeAtom materializer, Uri editLink, string etag)
-        {
-            Debug.Assert(editLink != null, "location header must be specified in POST responses.");
-
-            if (EntityStates.Added != entry.State && StreamStates.Added != entry.StreamState)
-            {
-                Error.ThrowBatchUnexpectedContent(InternalError.EntityNotAddedState);
-            }
-
-            if (materializer == null)
-            {
-               
-                String identity = Util.ReferenceIdentity(editLink.ToString());
-                this.AttachIdentity(identity, null , editLink, entry.Entity, etag);
-            }
-            else
-            {
-                materializer.SetInsertingObject(entry.Entity);
-
-                foreach (object x in materializer)
-                {
-                    Debug.Assert(null != entry.Identity, "updated inserted should always gain an identity");
-                    Debug.Assert(x == entry.Entity, "x == box.Entity, should have same object generated by response");
-                    Debug.Assert(EntityStates.Unchanged == entry.State, "should have moved out of insert");
-                    Debug.Assert((null != this.identityToDescriptor) && this.identityToDescriptor.ContainsKey(entry.Identity), "should have identity tracked");
-
-              
-                    if (entry.EditLink == null)
-                    {
-                        entry.EditLink = editLink;
-                    }
-
-                    if (entry.ETag == null)
-                    {
-                        entry.ETag = etag;
-                    }
-                }
-            }
-
-            foreach (LinkDescriptor end in this.RelatedLinks(entry))
-            {
-                Debug.Assert(0 != end.SaveResultWasProcessed, "link should have been saved with the enty");
-
-        
-                if (IncludeLinkState(end.SaveResultWasProcessed) || end.SaveResultWasProcessed == EntityStates.Added)
-                {
-                    HandleResponsePost(end);
-                }
-            }
-        }
-
-
-        private int SaveResultProcessed(Descriptor entry)
-        {
-      
-            entry.SaveResultWasProcessed = entry.State;
-
-            int count = 0;
-            if (entry.IsResource && (EntityStates.Added == entry.State))
-            {
-                foreach (LinkDescriptor end in this.RelatedLinks((EntityDescriptor)entry))
-                {
-                    Debug.Assert(end.ContentGeneratedForSave, "link should have been saved with the enty");
-                    if (end.ContentGeneratedForSave)
-                    {
-                        Debug.Assert(0 == end.SaveResultWasProcessed, "this link already had a result");
-                        end.SaveResultWasProcessed = end.State;
-                        count++;
-                    }
-                }
-            }
-
-            return count;
-        }
-
-
-        private IEnumerable<LinkDescriptor> RelatedLinks(EntityDescriptor box)
-        {
-            foreach (LinkDescriptor end in this.bindings.Values)
-            {
-                if (end.Source == box.Entity)
-                {
-                    if (null != end.Target)
-                    {   
-                        EntityDescriptor target = this.entityDescriptors[end.Target];
-
-
-                        if (IncludeLinkState(target.SaveResultWasProcessed) || ((0 == target.SaveResultWasProcessed) && IncludeLinkState(target.State)) ||
-                            ((null != target.Identity) && (target.ChangeOrder < box.ChangeOrder) &&
-                             ((0 == target.SaveResultWasProcessed && EntityStates.Added == target.State) ||
-                              (EntityStates.Added == target.SaveResultWasProcessed))))
-                        {
-                            Debug.Assert(box.ChangeOrder < end.ChangeOrder, "saving is out of order");
-                            yield return end;
-                        }
-                    }
-                }
-            }
-        }
-
-        private LoadPropertyResult CreateLoadPropertyRequest(object entity, string propertyName, AsyncCallback callback, object state, Uri requestUri, DataServiceQueryContinuation continuation)
-        {
-            Debug.Assert(continuation == null || requestUri == null, "continuation == null || requestUri == null -- only one or the either (or neither) may be passed in");
-            EntityDescriptor box = this.EnsureContained(entity, "entity");
-            Util.CheckArgumentNotEmpty(propertyName, "propertyName");
-
-            ClientType type = ClientType.Create(entity.GetType());
-            Debug.Assert(type.IsEntityType, "must be entity type to be contained");
-
-            if (EntityStates.Added == box.State)
-            {
-                throw Error.InvalidOperation(Strings.Context_NoLoadWithInsertEnd);
-            }
-
-            ClientType.ClientProperty property = type.GetProperty(propertyName, false);
-            Debug.Assert(null != property, "should have thrown if propertyName didn't exist");
-
-            ProjectionPlan plan;
-            if (continuation == null)
-            {
-                plan = null;
-            }
-            else
-            {
-                plan = continuation.Plan;
-                requestUri = continuation.NextLinkUri;
-            }
-
-            bool mediaLink = (type.MediaDataMember != null && propertyName == type.MediaDataMember.PropertyName);
-            Version requestVersion;
-            if (requestUri == null)
-            {
-                Uri relativeUri;
-                if (mediaLink)
-                {
-                   
-                    relativeUri = Util.CreateUri(XmlConstants.UriValueSegment, UriKind.Relative);
-                }
-                else
-                {
-                    relativeUri = Util.CreateUri(propertyName + (null != property.CollectionType ? "()" : String.Empty), UriKind.Relative);
-                }
-
-                requestUri = Util.CreateUri(box.GetResourceUri(this.baseUriWithSlash, true ), relativeUri);
-                requestVersion = Util.DataServiceVersion1;
-            }
-            else
-            {
-  
-                requestVersion = Util.DataServiceVersionEmpty;
-            }
-
-            HttpWebRequest request = this.CreateRequest(requestUri, XmlConstants.HttpMethodGet, mediaLink, null, requestVersion, false);
-            DataServiceRequest dataServiceRequest = DataServiceRequest.GetInstance(property.PropertyType, requestUri);
-            return new LoadPropertyResult(entity, propertyName, this, request, callback, state, dataServiceRequest, plan);
-        }
-
-
-        private void WriteContentProperties(XmlWriter writer, ClientType type, object resource, EpmSourcePathSegment currentSegment, out bool propertiesWritten)
-        {
-            #region <d:property>value</property>
-            propertiesWritten = false;
-            foreach (ClientType.ClientProperty property in type.Properties)
-            {
-                if (property == type.MediaDataMember ||
-                    (type.MediaDataMember != null &&
-                     type.MediaDataMember.MimeTypeProperty == property))
-                {
-                    continue;
-                }
-
-                object propertyValue = property.GetValue(resource);
-
-                EpmSourcePathSegment matchedSegment = currentSegment != null ? currentSegment.SubProperties.SingleOrDefault(s => s.PropertyName == property.PropertyName) : null;
-
-                if (property.IsKnownType)
-                {
-                    if (propertyValue == null || matchedSegment == null || matchedSegment.EpmInfo.Attribute.KeepInContent)
-                    {
-                        WriteContentProperty(writer, this.DataNamespace, property, propertyValue);
-                        propertiesWritten = true;
-                    }
-                }
-#if ASTORIA_OPEN_OBJECT
-                else if (property.OpenObjectProperty)
-                {
-                    foreach (KeyValuePair<string, object> pair in (IDictionary<string, object>)propertyValue)
-                    {
-                        if ((null == pair.Value) || ClientConvert.IsKnownType(pair.Value.GetType()))
-                        {
-                            Type valueType = pair.Value != null ? pair.Value.GetType() : typeof(string);
-                            ClientType.ClientProperty openProperty = new ClientType.ClientProperty(null, valueType, false, true);
-                            WriteContentProperty(writer, this.DataNamespace, openProperty, pair.Value);
-                            propertiesWritten = true;
-                        }
-                    }
-                }
-#endif
-                else if (null == property.CollectionType)
-                {
-                    ClientType nested = ClientType.Create(property.PropertyType);
-                    if (!nested.IsEntityType)
-                    {
-                        #region complex type
-                        XElement complexProperty = new XElement(((XNamespace)this.DataNamespace) + property.PropertyName);
-                        bool shouldWriteComplexProperty = false;
-                        string typeName = this.ResolveNameFromType(nested.ElementType);
-                        if (!String.IsNullOrEmpty(typeName))
-                        {
-                            complexProperty.Add(new XAttribute(((XNamespace)XmlConstants.DataWebMetadataNamespace) + XmlConstants.AtomTypeAttributeName, typeName));
-                        }
-                        
-           
-                        if (null == propertyValue)
-                        {
-                            complexProperty.Add(new XAttribute(((XNamespace)XmlConstants.DataWebMetadataNamespace) + XmlConstants.AtomNullAttributeName, XmlConstants.XmlTrueLiteral));
-                            shouldWriteComplexProperty = true;
-                        }
-                        else
-                        {
-                            using (XmlWriter complexPropertyWriter = complexProperty.CreateWriter())
-                            {
-                                this.WriteContentProperties(complexPropertyWriter, nested, propertyValue, matchedSegment, out shouldWriteComplexProperty);
-                            }
-                        }
-
-                        if (shouldWriteComplexProperty)
-                        {
-                            complexProperty.WriteTo(writer);
-                            propertiesWritten = true;
-                        }
-                        #endregion
-                    }
-                }
-            }
-            #endregion
-        }
-
-
-        private void DetachExistingLink(LinkDescriptor existingLink, bool targetDelete)
-        {
-     
-            if (existingLink.Target != null)
-            {
-              
-                EntityDescriptor targetResource = this.entityDescriptors[existingLink.Target];
-                
-    
-                if (targetResource.IsDeepInsert && !targetDelete)
-                {
-                    EntityDescriptor parentOfTarget = targetResource.ParentForInsert;
-                    if (Object.ReferenceEquals(targetResource.ParentEntity, existingLink.Source) && 
-                       (parentOfTarget.State != EntityStates.Deleted || 
-                        parentOfTarget.State != EntityStates.Detached))
-                    {
-                        throw new InvalidOperationException(Strings.Context_ChildResourceExists);
-                    }
-                }
-            }
-        
-            if (this.bindings.Remove(existingLink))
-            {   
-                existingLink.State = EntityStates.Detached;
-            }
-        }
-
-
-        private LinkDescriptor DetachReferenceLink(object source, string sourceProperty, object target, MergeOption linkMerge)
-        {
-            LinkDescriptor existing = this.GetLinks(source, sourceProperty).FirstOrDefault();
-            if (null != existing)
-            {
-                if ((target == existing.Target) ||
-                    (MergeOption.AppendOnly == linkMerge) ||
-                    (MergeOption.PreserveChanges == linkMerge && EntityStates.Modified == existing.State))
-                {
-                    return existing;
-                }
-
-                this.DetachExistingLink(existing, false);
-                Debug.Assert(!this.bindings.Values.Any(o => (o.Source == source) && (o.SourceProperty == sourceProperty)), "only expecting one");
-            }
-
-            return null;
-        }
-
-
-        private EntityDescriptor EnsureContained(object resource, string parameterName)
-        {
-            Util.CheckArgumentNull(resource, parameterName);
-
-            EntityDescriptor box = null;
-            if (!this.entityDescriptors.TryGetValue(resource, out box))
-            {
-                throw Error.InvalidOperation(Strings.Context_EntityNotContained);
-            }
-
-            return box;
-        }
-
-         private bool EnsureRelatable(object source, string sourceProperty, object target, EntityStates state)
-        {
-            EntityDescriptor sourceResource = this.EnsureContained(source, "source");
-            EntityDescriptor targetResource = null;
-            if ((null != target) || ((EntityStates.Modified != state) && (EntityStates.Unchanged != state)))
-            {
-                targetResource = this.EnsureContained(target, "target");
-            }
-
-            Util.CheckArgumentNotEmpty(sourceProperty, "sourceProperty");
-
-            ClientType type = ClientType.Create(source.GetType());
-            Debug.Assert(type.IsEntityType, "should be enforced by just adding an object");
-
-     
-            ClientType.ClientProperty property = type.GetProperty(sourceProperty, false);
-
-            if (property.IsKnownType)
-            {
-                throw Error.InvalidOperation(Strings.Context_RelationNotRefOrCollection);
-            }
-
-            if ((EntityStates.Unchanged == state) && (null == target) && (null != property.CollectionType))
-            {
-                targetResource = this.EnsureContained(target, "target");
-            }
-
-            if (((EntityStates.Added == state) || (EntityStates.Deleted == state)) && (null == property.CollectionType))
-            {
-                throw Error.InvalidOperation(Strings.Context_AddLinkCollectionOnly);
-            }
-            else if ((EntityStates.Modified == state) && (null != property.CollectionType))
-            {
-                throw Error.InvalidOperation(Strings.Context_SetLinkReferenceOnly);
-            }
-
-             type = ClientType.Create(property.CollectionType ?? property.PropertyType);
-            Debug.Assert(type.IsEntityType, "should be enforced by just adding an object");
-
-            if ((null != target) && !type.ElementType.IsInstanceOfType(target))
-            {
-                throw Error.Argument(Strings.Context_RelationNotRefOrCollection, "target");
-            }
-
-            if ((EntityStates.Added == state) || (EntityStates.Unchanged == state))
-            {
-                if ((sourceResource.State == EntityStates.Deleted) ||
-                    ((targetResource != null) && (targetResource.State == EntityStates.Deleted)))
-                {
-                    throw Error.InvalidOperation(Strings.Context_NoRelationWithDeleteEnd);
-                }
-            }
-
-            if ((EntityStates.Deleted == state) || (EntityStates.Unchanged == state))
-            {
-                if ((sourceResource.State == EntityStates.Added) ||
-                    ((targetResource != null) && (targetResource.State == EntityStates.Added)))
-                {
-                    if (EntityStates.Deleted == state)
-                    {
-                        return true;
-                    }
-
-                    throw Error.InvalidOperation(Strings.Context_NoRelationWithInsertEnd);
-                }
-            }
-
-            return false;
-        }
-
-        private void ValidateEntitySetName(ref string entitySetName)
-        {
-            Util.CheckArgumentNotEmpty(entitySetName, "entitySetName");
-            entitySetName = entitySetName.Trim(Util.ForwardSlash);
-
-            Util.CheckArgumentNotEmpty(entitySetName, "entitySetName");
-
-            Uri tmp = Util.CreateUri(entitySetName, UriKind.RelativeOrAbsolute);
-            if (tmp.IsAbsoluteUri ||
-                !String.IsNullOrEmpty(Util.CreateUri(this.baseUriWithSlash, tmp)
-                                     .GetComponents(UriComponents.Query | UriComponents.Fragment, UriFormat.SafeUnescaped)))
-            {
-                throw Error.Argument(Strings.Context_EntitySetName, "entitySetName");
-            }
-        }
-
-        private void EnsureIdentityToResource()
-        {
-            if (null == this.identityToDescriptor)
-            {
-                System.Threading.Interlocked.CompareExchange(ref this.identityToDescriptor, new Dictionary<String, EntityDescriptor>(EqualityComparer<String>.Default), null);
-            }
-        }
-
-        private void IncrementChange(Descriptor descriptor)
-        {
-            descriptor.ChangeOrder = ++this.nextChange;
-        }
-
-        private GetReadStreamResult CreateGetReadStreamResult(
-            object entity, 
-            DataServiceRequestArgs args,
-            AsyncCallback callback, 
-            object state)
-        {
-            EntityDescriptor box = this.EnsureContained(entity, "entity");
-            Util.CheckArgumentNull(args, "args");
-
-            Uri requestUri = box.GetMediaResourceUri(this.baseUriWithSlash);
-            if (requestUri == null)
-            {
-                throw new ArgumentException(Strings.Context_EntityNotMediaLinkEntry, "entity");
-            }
-
-#if ASTORIA_LIGHT
-           HttpWebRequest request = this.CreateRequest(requestUri, XmlConstants.HttpMethodGet, true, null, null, false, HttpStack.ClientHttp);
-#else
-            HttpWebRequest request = this.CreateRequest(requestUri, XmlConstants.HttpMethodGet, true, null, null, false);
-#endif
-
-            WebUtil.ApplyHeadersToRequest(args.Headers, request, false);
-
-            return new GetReadStreamResult(this, "GetReadStream", request, callback, state);
-        }
-
-        internal class DataServiceSaveStream
-        {
-            private readonly Stream stream;
-
-             private readonly bool close;
-
-            private readonly DataServiceRequestArgs args;
-
-             internal DataServiceSaveStream(Stream stream, bool close, DataServiceRequestArgs args)
-            {
-                Debug.Assert(stream != null, "stream must not be null.");
-
-                this.stream = stream;
-                this.close = close;
-                this.args = args;
-            }
-
-            internal Stream Stream
-            {
-                get 
-                {
-                    return this.stream;
-                }
-            }
-
-            internal DataServiceRequestArgs Args
-            {
-                get { return this.args; }
-            }
-
-            internal void Close()
-            {
-                if (this.stream != null && this.close)
-                {
-                    this.stream.Close();
-                }
-            }
-        }
-
-        private class LoadPropertyResult : QueryResult
-        {
-            #region Private fields.
-
-            private readonly object entity;
-
-            private readonly ProjectionPlan plan;
-
-            private readonly string propertyName;
-
-            #endregion Private fields.
-
-            internal LoadPropertyResult(object entity, string propertyName, DataServiceContext context, HttpWebRequest request, AsyncCallback callback, object state, DataServiceRequest dataServiceRequest, ProjectionPlan plan)
-                : base(context, "LoadProperty", dataServiceRequest, request, callback, state)
-            {
-                this.entity = entity;
-                this.propertyName = propertyName;
-                this.plan = plan;
-            }
-
-            internal QueryOperationResponse LoadProperty()
-            {
-                MaterializeAtom results = null;
-
-                DataServiceContext context = (DataServiceContext)this.Source;
-
-                ClientType type = ClientType.Create(this.entity.GetType());
-                Debug.Assert(type.IsEntityType, "must be entity type to be contained");
-
-                EntityDescriptor box = context.EnsureContained(this.entity, "entity");
-
-                if (EntityStates.Added == box.State)
-                {
-                    throw Error.InvalidOperation(Strings.Context_NoLoadWithInsertEnd);
-                }
-
-                ClientType.ClientProperty property = type.GetProperty(this.propertyName, false);
-                Type elementType = property.CollectionType ?? property.NullablePropertyType;
-                try
-                {
-                    if (type.MediaDataMember == property)
-                    {
-                        results = this.ReadPropertyFromRawData(property);
-                    }
-                    else
-                    {
-                        results = this.ReadPropertyFromAtom(box, property);
-                    }
-                    
-                    return this.GetResponseWithType(results, elementType);
-                }
-                catch (InvalidOperationException ex)
-                {
-                    QueryOperationResponse response = this.GetResponseWithType(results, elementType);
-                    if (response != null)
-                    {
-                        response.Error = ex;
-                        throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, response);
-                    }
-
-                    throw;
-                }
-            }
-
-            private static byte[] ReadByteArrayWithContentLength(Stream responseStream, int totalLength)
-            {
-                byte[] buffer = new byte[totalLength];
-                int read = 0;
-                while (read < totalLength)
-                {
-                    int r = responseStream.Read(buffer, read, totalLength - read);
-                    if (r <= 0)
-                    {
-                        throw Error.InvalidOperation(Strings.Context_UnexpectedZeroRawRead);
-                    }
-
-                    read += r;
-                }
-
-                return buffer;
-            }
-
-            private static byte[] ReadByteArrayChunked(Stream responseStream)
-            {
-                byte[] completeBuffer = null;
-                using (MemoryStream m = new MemoryStream())
-                {
-                    byte[] buffer = new byte[4096];
-                    int numRead = 0;
-                    int totalRead = 0;
-                    while (true)
-                    {
-                        numRead = responseStream.Read(buffer, 0, buffer.Length);
-                        if (numRead <= 0)
-                        {
-                            break;
-                        }
-
-                        m.Write(buffer, 0, numRead);
-                        totalRead += numRead;
-                    }
-
-                    completeBuffer = new byte[totalRead];
-                    m.Position = 0;
-                    numRead = m.Read(completeBuffer, 0, completeBuffer.Length);
-                }
-
-                return completeBuffer;
-            }
-
-            private MaterializeAtom ReadPropertyFromAtom(EntityDescriptor box, ClientType.ClientProperty property)
-            {
-                DataServiceContext context = (DataServiceContext)this.Source;
-
-                bool merging = context.ApplyingChanges;
-
-                try
-                {
-                    context.ApplyingChanges = true;
-
-                    bool deletedState = (EntityStates.Deleted == box.State);
-
-                    Type nestedType;
-#if ASTORIA_OPEN_OBJECT
-                if (property.OpenObjectProperty)
-                {
-                    nestedType = typeof(OpenObject);
-                }
-                else
-#endif
-                    {
-                        nestedType = property.CollectionType ?? property.NullablePropertyType;
-                    }
-
-                    ClientType clientType = ClientType.Create(nestedType);
-
-                    bool setNestedValue = false;
-                    object collection = this.entity;
-                    if (null != property.CollectionType)
-                    {   collection = property.GetValue(this.entity);
-                        if (null == collection)
-                        {
-                            setNestedValue = true;
-                            if (BindingEntityInfo.IsDataServiceCollection(property.PropertyType))
-                            {
-                                Debug.Assert(WebUtil.GetDataServiceCollectionOfT(nestedType) != null, "DataServiceCollection<> must be available here.");
-
-                                collection = Activator.CreateInstance(
-                                    WebUtil.GetDataServiceCollectionOfT(nestedType), 
-                                    null,
-                                    TrackingMode.None);
-                            }
-                            else
-                            {
-                                collection = Activator.CreateInstance(typeof(List<>).MakeGenericType(nestedType));
-                            }
-                        }
-                    }
-
-                    Type elementType = property.CollectionType ?? property.NullablePropertyType;
-                    IList results = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType));
-
-                    DataServiceQueryContinuation continuation = null;
-
-                    using (MaterializeAtom materializer = this.GetMaterializer(context, this.plan))
-                    {
-                        Debug.Assert(materializer != null, "materializer != null -- otherwise GetMaterializer() returned null rather than empty");
-                        int count = 0;
-#if ASTORIA_OPEN_OBJECT
-                        object openProperties = null;
-#endif
-                        foreach (object child in materializer)
-                        {
-                            results.Add(child);
-                            count++;
-#if ASTORIA_OPEN_OBJECT
-                            property.SetValue(collection, child, this.propertyName, ref openProperties, true);
-#else
-                            property.SetValue(collection, child, this.propertyName, true);
-#endif
-
-                            if ((null != child) && (MergeOption.NoTracking != materializer.MergeOptionValue) && clientType.IsEntityType)
-                            {
-                                if (deletedState)
-                                {
-                                    context.DeleteLink(this.entity, this.propertyName, child);
-                                }
-                                else
-                                {   context.AttachLink(this.entity, this.propertyName, child, materializer.MergeOptionValue);
-                                }
-                            }
-                        }
-
-                        continuation = materializer.GetContinuation(null);
-                        Util.SetNextLinkForCollection(collection, continuation);
-
-                    }
-
-                    if (setNestedValue)
-                    {
-#if ASTORIA_OPEN_OBJECT
-                    object openProperties = null;
-                    property.SetValue(this.entity, collection, this.propertyName, ref openProperties, false);
-#else
-                        property.SetValue(this.entity, collection, this.propertyName, false);
-#endif
-                    }
-
-                    return MaterializeAtom.CreateWrapper(results, continuation);
-                }
-                finally
-                {
-                    context.ApplyingChanges = merging;
-                }
-            }
-
-           private MaterializeAtom ReadPropertyFromRawData(ClientType.ClientProperty property)
-            {
-                DataServiceContext context = (DataServiceContext)this.Source;
-
-                bool merging = context.ApplyingChanges;
-
-                try
-                {
-                    context.ApplyingChanges = true;
-
-#if ASTORIA_OPEN_OBJECT
-                object openProps = null;
-#endif
-                    string mimeType = null;
-                    Encoding encoding = null;
-                    Type elementType = property.CollectionType ?? property.NullablePropertyType;
-                    IList results = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType));
-                    HttpProcessUtility.ReadContentType(this.ContentType, out mimeType, out encoding);
-
-                    using (Stream responseStream = this.GetResponseStream())
-                    {
-                        if (property.PropertyType == typeof(byte[]))
-                        {
-                            int total = checked((int)this.ContentLength);
-                            byte[] buffer = null;
-                            if (total >= 0)
-                            {
-                                buffer = LoadPropertyResult.ReadByteArrayWithContentLength(responseStream, total);
-                            }
-                            else
-                            {
-                                buffer = LoadPropertyResult.ReadByteArrayChunked(responseStream);
-                            }
-
-                            results.Add(buffer);
-#if ASTORIA_OPEN_OBJECT
-                            property.SetValue(this.entity, buffer, this.propertyName, ref openProps, false);
-#else
-                            property.SetValue(this.entity, buffer, this.propertyName, false);
-#endif
-                        }
-                        else
-                        {
-                            StreamReader reader = new StreamReader(responseStream, encoding);
-                            object convertedValue = property.PropertyType == typeof(string) ?
-                                                        reader.ReadToEnd() :
-                                                        ClientConvert.ChangeType(reader.ReadToEnd(), property.PropertyType);
-                            results.Add(convertedValue);
-#if ASTORIA_OPEN_OBJECT
-                            property.SetValue(this.entity, convertedValue, this.propertyName, ref openProps, false);
-#else
-                            property.SetValue(this.entity, convertedValue, this.propertyName, false);
-#endif
-                        }
-                    }
-
-#if ASTORIA_OPEN_OBJECT
-                Debug.Assert(openProps == null, "These should not be set in this path");
-#endif
-                    if (property.MimeTypeProperty != null)
-                    {
-                       
-#if ASTORIA_OPEN_OBJECT
-                    property.MimeTypeProperty.SetValue(this.entity, mimeType, null, ref openProps, false);
-                    Debug.Assert(openProps == null, "These should not be set in this path");
-#else
-                        property.MimeTypeProperty.SetValue(this.entity, mimeType, null, false);
-#endif
-                    }
-
-                    return MaterializeAtom.CreateWrapper(results);
-                }
-                finally
-                {
-                    context.ApplyingChanges = merging;
-                }
-            }
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "Pending")]
-        private class SaveResult : BaseAsyncResult
-        {
-            private readonly DataServiceContext Context;
-
-           private readonly List<Descriptor> ChangedEntries;
-
-            private readonly DataServiceRequest[] Queries;
-
-            private readonly List<OperationResponse> Responses;
-
-             private readonly string batchBoundary;
-
-            private readonly SaveChangesOptions options;
-
-            private readonly bool executeAsync;
-
-             private int changesCompleted;
-
-            private PerRequest request;
-
-            private HttpWebResponse batchResponse;
-
-            private Stream httpWebResponseStream;
-
-            private DataServiceResponse service;
-
-            private int entryIndex = -1;
-
-           private bool processingMediaLinkEntry;
-
-            private bool processingMediaLinkEntryPut;
-
-            private Stream mediaResourceRequestStream;
-
-            private BatchStream responseBatchStream;
-
-            private byte[] buildBatchBuffer;
-
-            private StreamWriter buildBatchWriter;
-
-            private long copiedContentLength;
-
-            private string changesetBoundary;
-
-            private bool changesetStarted;
-
-            #region constructors
-            internal SaveResult(DataServiceContext context, string method, DataServiceRequest[] queries, SaveChangesOptions options, AsyncCallback callback, object state, bool async)
-                : base(context, method, callback, state)
-            {
-                this.executeAsync = async;
-                this.Context = context;
-                this.Queries = queries;
-                this.options = options;
-
-                this.Responses = new List<OperationResponse>();
-
-                if (null == queries)
-                {
-                    #region changed entries
-                    this.ChangedEntries = context.entityDescriptors.Values.Cast<Descriptor>()
-                                          .Union(context.bindings.Values.Cast<Descriptor>())
-                                          .Where(o => o.IsModified && o.ChangeOrder != UInt32.MaxValue)
-                                          .OrderBy(o => o.ChangeOrder)
-                                          .ToList();
-
-                    foreach (Descriptor e in this.ChangedEntries)
-                    {
-                        e.ContentGeneratedForSave = false;
-                        e.SaveResultWasProcessed = 0;
-                        e.SaveError = null;
-
-                        if (!e.IsResource)
-                        {
-                            object target = ((LinkDescriptor)e).Target;
-                            if (null != target)
-                            {
-                                Descriptor f = context.entityDescriptors[target];
-                                if (EntityStates.Unchanged == f.State)
-                                {
-                                    f.ContentGeneratedForSave = false;
-                                    f.SaveResultWasProcessed = 0;
-                                    f.SaveError = null;
-                                }
-                            }
-                        }
-                    }
-                    #endregion
-                }
-                else
-                {
-                    this.ChangedEntries = new List<Descriptor>();
-                }
-
-                if (IsFlagSet(options, SaveChangesOptions.Batch))
-                {
-                    this.batchBoundary = XmlConstants.HttpMultipartBoundaryBatch + "_" + Guid.NewGuid().ToString();
-                }
-                else
-                {
-                    this.batchBoundary = XmlConstants.HttpMultipartBoundaryBatchResponse + "_" + Guid.NewGuid().ToString();
-                    this.DataServiceResponse = new DataServiceResponse(null, -1, this.Responses, false );
-                }
-            }
-            #endregion constructor
-
-            #region end
-
-            internal DataServiceResponse DataServiceResponse
-            {
-                get
-                {
-                    return this.service;
-                }
-
-                set
-                {
-                    this.service = value;
-                }
-            }
-
-            internal DataServiceResponse EndRequest()
-            {
-                foreach (EntityDescriptor box in this.ChangedEntries.Where(e => e.IsResource).Cast<EntityDescriptor>())
-                {
-                    box.CloseSaveStream();
-                }
-
-                if ((null != this.responseBatchStream) || (null != this.httpWebResponseStream))
-                {
-                    this.HandleBatchResponse();
-                }
-
-                return this.DataServiceResponse;
-            }
-
-            #endregion
-
-            #region start a batch
-
-            internal void BatchBeginRequest(bool replaceOnUpdate)
-            {
-                PerRequest pereq = null;
-                try
-                {
-                    MemoryStream memory = this.GenerateBatchRequest(replaceOnUpdate);
-                    if (null != memory)
-                    {
-                        HttpWebRequest httpWebRequest = this.CreateBatchRequest(memory);
-                        this.Abortable = httpWebRequest;
-
-                        this.request = pereq = new PerRequest();
-                        pereq.Request = httpWebRequest;
-                        pereq.RequestContentStream = new PerRequest.ContentStream(memory, true);
-
-                        this.httpWebResponseStream = new MemoryStream();
-
-                        IAsyncResult asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetRequestStream, this.AsyncEndGetRequestStream, pereq);
-                        pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
-                    }
-                    else
-                    {
-                        Debug.Assert(this.CompletedSynchronously, "completedSynchronously");
-                        Debug.Assert(this.IsCompletedInternally, "completed");
-                    }
-                }
-                catch (Exception e)
-                {
-                    this.HandleFailure(pereq, e);
-                    throw; 
-                }
-                finally
-                {
-                    this.HandleCompleted(pereq); 
-                }
-
-                Debug.Assert((this.CompletedSynchronously && this.IsCompleted) || !this.CompletedSynchronously, "sync without complete");
-            }
-
-#if !ASTORIA_LIGHT 
-            internal void BatchRequest(bool replaceOnUpdate)
-            {
-                MemoryStream memory = this.GenerateBatchRequest(replaceOnUpdate);
-                if ((null != memory) && (0 < memory.Length))
-                {
-                    HttpWebRequest httpWebRequest = this.CreateBatchRequest(memory);
-                    using (System.IO.Stream requestStream = httpWebRequest.GetRequestStream())
-                    {
-                        byte[] buffer = memory.GetBuffer();
-                        int bufferOffset = checked((int)memory.Position);
-                        int bufferLength = checked((int)memory.Length) - bufferOffset;
-
-                       requestStream.Write(buffer, bufferOffset, bufferLength);
-                    }
-
-                    HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
-                    this.batchResponse = httpWebResponse;
-
-                    if (null != httpWebResponse)
-                    {
-                        this.httpWebResponseStream = httpWebResponse.GetResponseStream();
-                    }
-                }
-            }
-#endif
-            #endregion
-
-            #region start a non-batch requests
-            internal void BeginNextChange(bool replaceOnUpdate)
-            {
-                Debug.Assert(!this.IsCompletedInternally, "why being called if already completed?");
-
-                PerRequest pereq = null;
-                IAsyncResult asyncResult = null;
-                do
-                {
-                    HttpWebRequest httpWebRequest = null;
-                    HttpWebResponse response = null;
-                    try
-                    {
-                        if (null != this.request)
-                        {
-                            this.SetCompleted();
-                            Error.ThrowInternalError(InternalError.InvalidBeginNextChange);
-                        }
-
-                        this.Abortable = httpWebRequest = this.CreateNextRequest(replaceOnUpdate);
-                        if ((null != httpWebRequest) || (this.entryIndex < this.ChangedEntries.Count))
-                        {
-                            if (this.ChangedEntries[this.entryIndex].ContentGeneratedForSave)
-                            {
-                                Debug.Assert(this.ChangedEntries[this.entryIndex] is LinkDescriptor, "only expected RelatedEnd to presave");
-                                Debug.Assert(
-                                    this.ChangedEntries[this.entryIndex].State == EntityStates.Added ||
-                                    this.ChangedEntries[this.entryIndex].State == EntityStates.Modified,
-                                    "only expected added to presave");
-                                continue;
-                            }
-
-                            PerRequest.ContentStream contentStream = this.CreateChangeData(this.entryIndex, false);
-                            if (this.executeAsync)
-                            {
-                                #region async
-                                this.request = pereq = new PerRequest();
-                                pereq.Request = httpWebRequest;
-
-                                if (null == contentStream || null == contentStream.Stream)
-                                {
-                                    asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetResponse, this.AsyncEndGetResponse, pereq);
-                                }
-                                else
-                                {
-                                    if (contentStream.IsKnownMemoryStream)
-                                    {
-                                        httpWebRequest.ContentLength = contentStream.Stream.Length - contentStream.Stream.Position;
-                                    }
-
-                                    pereq.RequestContentStream = contentStream;
-                                    asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetRequestStream, this.AsyncEndGetRequestStream, pereq);
-                                }
-
-                                pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
-                                this.CompletedSynchronously &= asyncResult.CompletedSynchronously;
-                                #endregion
-                            }
-#if !ASTORIA_LIGHT 
-                            else
-                            {
-                                #region sync
-                                if (null != contentStream && null != contentStream.Stream)
-                                {
-                                    if (contentStream.IsKnownMemoryStream)
-                                    {
-                                        httpWebRequest.ContentLength = contentStream.Stream.Length - contentStream.Stream.Position;
-                                    }
-
-                                    using (Stream stream = httpWebRequest.GetRequestStream())
-                                    {
-                                        byte[] buffer = new byte[64 * 1024];
-                                        int read;
-                                        do
-                                        {
-                                            read = contentStream.Stream.Read(buffer, 0, buffer.Length);
-                                            if (read > 0)
-                                            {
-                                                stream.Write(buffer, 0, read);
-                                            }
-                                        }
-                                        while (read > 0);
-                                    }
-                                }
-
-                                response = (HttpWebResponse)httpWebRequest.GetResponse();
-                                if (!this.processingMediaLinkEntry)
-                                {
-                                    this.changesCompleted++;
-                                }
-
-                                this.HandleOperationResponse(response);
-                                this.HandleOperationResponseData(response);
-                                this.HandleOperationEnd();
-                                this.request = null;
-                                #endregion
-                            }
-#endif
-                        }
-                        else
-                        {
-                            this.SetCompleted();
-
-                            if (this.CompletedSynchronously)
-                            {
-                                this.HandleCompleted(pereq);
-                            }
-                        }
-                    }
-                    catch (InvalidOperationException e)
-                    {
-                        WebUtil.GetHttpWebResponse(e, ref response);
-                        this.HandleOperationException(e, response);
-                        this.HandleCompleted(pereq);
-                    }
-                    finally
-                    {
-                        if (null != response)
-                        {
-                            response.Close();
-                        }
-                    }
-
-                   
-                }
-                while (((null == pereq) || (pereq.RequestCompleted && asyncResult != null && asyncResult.CompletedSynchronously)) && !this.IsCompletedInternally);
-
-                Debug.Assert(this.executeAsync || this.CompletedSynchronously, "sync !CompletedSynchronously");
-                Debug.Assert((this.CompletedSynchronously && this.IsCompleted) || !this.CompletedSynchronously, "sync without complete");
-                Debug.Assert(this.entryIndex < this.ChangedEntries.Count || this.ChangedEntries.All(o => o.ContentGeneratedForSave), "didn't generate content for all entities/links");
-            }
-
-             protected override void CompletedRequest()
-            {
-                this.buildBatchBuffer = null;
-                if (null != this.buildBatchWriter)
-                {
-                    Debug.Assert(!IsFlagSet(this.options, SaveChangesOptions.Batch), "should be non-batch");
-                    this.HandleOperationEnd();
-                    this.buildBatchWriter.WriteLine("--{0}--", this.batchBoundary);
-
-                    this.buildBatchWriter.Flush();
-                    Debug.Assert(Object.ReferenceEquals(this.httpWebResponseStream, this.buildBatchWriter.BaseStream), "expected different stream");
-                    this.httpWebResponseStream.Position = 0;
-
-                    this.buildBatchWriter = null;
-
-                   this.responseBatchStream = new BatchStream(this.httpWebResponseStream, this.batchBoundary, HttpProcessUtility.EncodingUtf8NoPreamble, false);
-                }
-            }
-
-            private static void CompleteCheck(PerRequest value, InternalError errorcode)
-            {
-                if ((null == value) || value.RequestCompleted)
-                {
-                   Error.ThrowInternalError(errorcode);
-                }
-            }
-
-            private static void EqualRefCheck(PerRequest actual, PerRequest expected, InternalError errorcode)
-            {
-                if (!Object.ReferenceEquals(actual, expected))
-                {
-                    Error.ThrowInternalError(errorcode);
-                }
-            }
-
-            private void HandleCompleted(PerRequest pereq)
-            {
-                if (null != pereq)
-                {
-                    this.CompletedSynchronously &= pereq.RequestCompletedSynchronously;
-
-                    if (pereq.RequestCompleted)
-                    {
-                        System.Threading.Interlocked.CompareExchange(ref this.request, null, pereq);
-                        if (IsFlagSet(this.options, SaveChangesOptions.Batch))
-                        {   
-                            System.Threading.Interlocked.CompareExchange(ref this.batchResponse, pereq.HttpWebResponse, null);
-                            pereq.HttpWebResponse = null;
-                        }
-
-                        pereq.Dispose();
-                    }
-                }
-
-                this.HandleCompleted();
-            }
-
-            private bool HandleFailure(PerRequest pereq, Exception e)
-            {
-                if (null != pereq)
-                {
-                    if (IsAborted)
-                    {
-                        pereq.SetAborted();
-                    }
-                    else
-                    {
-                        pereq.SetComplete();
-                    }
-                }
-
-                return this.HandleFailure(e);
-            }
-
-            private HttpWebRequest CreateNextRequest(bool replaceOnUpdate)
-            {
-                if (!this.processingMediaLinkEntry)
-                {
-                    this.entryIndex++;
-                }
-                else
-                {
-                    Debug.Assert(this.ChangedEntries[this.entryIndex].IsResource, "Only resources can have MR's.");
-                    EntityDescriptor box = (EntityDescriptor)this.ChangedEntries[this.entryIndex];
-                    if (this.processingMediaLinkEntryPut && EntityStates.Unchanged == box.State)
-                    {
-                        box.ContentGeneratedForSave = true;
-                        this.entryIndex++;
-                    }
-
-                    this.processingMediaLinkEntry = false;
-                    this.processingMediaLinkEntryPut = false;
-
-                    box.CloseSaveStream();
-                }
-
-                if (unchecked((uint)this.entryIndex < (uint)this.ChangedEntries.Count))
-                {
-                    Descriptor entry = this.ChangedEntries[this.entryIndex];
-                    if (entry.IsResource)
-                    {
-                        EntityDescriptor box = (EntityDescriptor)entry;
-
-                        HttpWebRequest req;
-                        if (((EntityStates.Unchanged == entry.State) || (EntityStates.Modified == entry.State)) &&
-                            (null != (req = this.CheckAndProcessMediaEntryPut(box))))
-                        {
-                            this.processingMediaLinkEntry = true;
-                            this.processingMediaLinkEntryPut = true;
-                        }
-                        else if ((EntityStates.Added == entry.State) && (null != (req = this.CheckAndProcessMediaEntryPost(box))))
-                        {
-                            this.processingMediaLinkEntry = true;
-                            this.processingMediaLinkEntryPut = false;
-                        }
-                        else
-                        {
-                            Debug.Assert(!this.processingMediaLinkEntry || entry.State == EntityStates.Modified, "!this.processingMediaLinkEntry || entry.State == EntityStates.Modified");
-                            req = this.Context.CreateRequest(box, entry.State, replaceOnUpdate);
-                        }
-
-                        return req;
-                    }
-
-                    return this.Context.CreateRequest((LinkDescriptor)entry);
-                }
-
-                return null;
-            }
-
-            private HttpWebRequest CheckAndProcessMediaEntryPost(EntityDescriptor entityDescriptor)
-            {
-                ClientType type = ClientType.Create(entityDescriptor.Entity.GetType());
-
-                if (!type.IsMediaLinkEntry && !entityDescriptor.IsMediaLinkEntry)
-                {
-                    return null;
-                }
-
-                if (type.MediaDataMember == null && entityDescriptor.SaveStream == null)
-                {
-                    throw Error.InvalidOperation(Strings.Context_MLEWithoutSaveStream(type.ElementTypeName));
-                }
-
-                Debug.Assert(
-                    (type.MediaDataMember != null && entityDescriptor.SaveStream == null) ||
-                    (type.MediaDataMember == null && entityDescriptor.SaveStream != null),
-                    "Only one way of specifying the MR content is allowed.");
-
-                HttpWebRequest mediaRequest = this.CreateMediaResourceRequest(
-                    entityDescriptor.GetResourceUri(this.Context.baseUriWithSlash, false),
-                    XmlConstants.HttpMethodPost,
-                    type.MediaDataMember == null);
-
-                if (type.MediaDataMember != null)
-                {
-                    if (type.MediaDataMember.MimeTypeProperty == null)
-                    {
-                        mediaRequest.ContentType = XmlConstants.MimeApplicationOctetStream;
-                    }
-                    else
-                    {
-                        object mimeTypeValue = type.MediaDataMember.MimeTypeProperty.GetValue(entityDescriptor.Entity);
-                        String mimeType = mimeTypeValue != null ? mimeTypeValue.ToString() : null;
-
-                        if (String.IsNullOrEmpty(mimeType))
-                        {
-                            throw Error.InvalidOperation(
-                                Strings.Context_NoContentTypeForMediaLink(
-                                    type.ElementTypeName,
-                                    type.MediaDataMember.MimeTypeProperty.PropertyName));
-                        }
-
-                        mediaRequest.ContentType = mimeType;
-                    }
-
-                    object value = type.MediaDataMember.GetValue(entityDescriptor.Entity);
-                    if (value == null)
-                    {
-                        mediaRequest.ContentLength = 0;
-                        this.mediaResourceRequestStream = null;
-                    }
-                    else
-                    {
-                        byte[] buffer = value as byte[];
-                        if (buffer == null)
-                        {
-                            string mime;
-                            Encoding encoding;
-                            HttpProcessUtility.ReadContentType(mediaRequest.ContentType, out mime, out encoding);
-
-                            if (encoding == null)
-                            {
-                                encoding = Encoding.UTF8;
-                                mediaRequest.ContentType += XmlConstants.MimeTypeUtf8Encoding;
-                            }
-
-                            buffer = encoding.GetBytes(ClientConvert.ToString(value, false));
-                        }
-
-                        mediaRequest.ContentLength = buffer.Length;
-
-                        this.mediaResourceRequestStream = new MemoryStream(buffer, 0, buffer.Length, false, true);
-                    }
-                }
-                else
-                {
-                    this.SetupMediaResourceRequest(mediaRequest, entityDescriptor);
-                }
-
-                entityDescriptor.State = EntityStates.Modified;
-
-                return mediaRequest;
-            }
-
-            private HttpWebRequest CheckAndProcessMediaEntryPut(EntityDescriptor box)
-            {
-                if (box.SaveStream == null)
-                {
-                    return null;
-                }
-
-                Uri requestUri = box.GetEditMediaResourceUri(this.Context.baseUriWithSlash);
-                if (requestUri == null)
-                {
-                    throw Error.InvalidOperation(
-                        Strings.Context_SetSaveStreamWithoutEditMediaLink);
-                }
-
-                HttpWebRequest mediaResourceRequest = this.CreateMediaResourceRequest(requestUri, XmlConstants.HttpMethodPut, true);
-                this.SetupMediaResourceRequest(mediaResourceRequest, box);
-
-                if (box.StreamETag != null)
-                {
-                    mediaResourceRequest.Headers.Set(HttpRequestHeader.IfMatch, box.StreamETag);
-                }
-
-                return mediaResourceRequest;
-            }
-
-            private HttpWebRequest CreateMediaResourceRequest(Uri requestUri, string method, bool sendChunked)
-            {
-#if ASTORIA_LIGHT
-                HttpWebRequest mediaResourceRequest = this.Context.CreateRequest(
-                    requestUri,
-                    method,
-                    false,
-                    XmlConstants.MimeAny,
-                    Util.DataServiceVersion1,
-                    sendChunked,
-                    HttpStack.ClientHttp);
-#else
-                HttpWebRequest mediaResourceRequest = this.Context.CreateRequest(
-                    requestUri,
-                    method,
-                    false,
-                    XmlConstants.MimeAny,
-                    Util.DataServiceVersion1,
-                    sendChunked);
-#endif
-                return mediaResourceRequest;
-            }
-
-           private void SetupMediaResourceRequest(HttpWebRequest mediaResourceRequest, EntityDescriptor box)
-            {
-                this.mediaResourceRequestStream = box.SaveStream.Stream;
-
-                WebUtil.ApplyHeadersToRequest(box.SaveStream.Args.Headers, mediaResourceRequest, true);
-
-           }
-
-           private PerRequest.ContentStream CreateChangeData(int index, bool newline)
-            {
-                Descriptor entry = this.ChangedEntries[index];
-                Debug.Assert(!entry.ContentGeneratedForSave, "already saved entity/link");
-
-                if (entry.IsResource)
-                {
-                    EntityDescriptor box = (EntityDescriptor)entry;
-                    if (this.processingMediaLinkEntry)
-                    {
-                        Debug.Assert(
-                            this.processingMediaLinkEntryPut || entry.State == EntityStates.Modified, 
-                            "We should have modified the MLE state to Modified when we've created the MR POST request.");
-                        Debug.Assert(
-                            !this.processingMediaLinkEntryPut || (entry.State == EntityStates.Unchanged || entry.State == EntityStates.Modified),
-                            "If we're processing MR PUT the entity must be either in Unchanged or Modified state.");
-
-                        Debug.Assert(this.mediaResourceRequestStream != null, "We should have precreated the MR stream already.");
-                        return new PerRequest.ContentStream(this.mediaResourceRequestStream, false);
-                    }
-                    else
-                    {
-                        entry.ContentGeneratedForSave = true;
-                        return new PerRequest.ContentStream(this.Context.CreateRequestData(box, newline), true);
-                    }
-                }
-                else
-                {
-                    entry.ContentGeneratedForSave = true;
-                    LinkDescriptor link = (LinkDescriptor)entry;
-                    if ((EntityStates.Added == link.State) ||
-                        ((EntityStates.Modified == link.State) && (null != link.Target)))
-                    {
-                        return new PerRequest.ContentStream(this.Context.CreateRequestData(link, newline), true);
-                    }
-                }
-
-                return null;
-            }
-            #endregion
-
-            #region generate batch response from non-batch
-
-            private void HandleOperationStart()
-            {
-                this.HandleOperationEnd();
-
-                if (null == this.httpWebResponseStream)
-                {
-                    this.httpWebResponseStream = new MemoryStream();
-                }
-
-                if (null == this.buildBatchWriter)
-                {
-                    this.buildBatchWriter = new StreamWriter(this.httpWebResponseStream);    
-#if TESTUNIXNEWLINE
-                    this.buildBatchWriter.NewLine = NewLine;
-#endif
-                }
-
-                if (null == this.changesetBoundary)
-                {
-                    this.changesetBoundary = XmlConstants.HttpMultipartBoundaryChangesetResponse + "_" + Guid.NewGuid().ToString();
-                }
-
-                this.changesetStarted = true;
-                this.buildBatchWriter.WriteLine("--{0}", this.batchBoundary);
-                this.buildBatchWriter.WriteLine("{0}: {1}; boundary={2}", XmlConstants.HttpContentType, XmlConstants.MimeMultiPartMixed, this.changesetBoundary);
-                this.buildBatchWriter.WriteLine();
-                this.buildBatchWriter.WriteLine("--{0}", this.changesetBoundary);
-            }
-
-             private void HandleOperationEnd()
-            {
-                if (this.changesetStarted)
-                {
-                    Debug.Assert(null != this.buildBatchWriter, "buildBatchWriter");
-                    Debug.Assert(null != this.changesetBoundary, "changesetBoundary");
-                    this.buildBatchWriter.WriteLine();
-                    this.buildBatchWriter.WriteLine("--{0}--", this.changesetBoundary);
-                    this.changesetStarted = false;
-                }
-            }
-
-            private void HandleOperationException(Exception e, HttpWebResponse response)
-            {
-                if (null != response)
-                {
-                    this.HandleOperationResponse(response);
-                    this.HandleOperationResponseData(response);
-                    this.HandleOperationEnd();
-                }
-                else
-                {
-                    this.HandleOperationStart();
-                    WriteOperationResponseHeaders(this.buildBatchWriter, 500);
-                    this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeTextPlain);
-                    this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentID, this.ChangedEntries[this.entryIndex].ChangeOrder);
-                    this.buildBatchWriter.WriteLine();
-                    this.buildBatchWriter.WriteLine(e.ToString());
-                    this.HandleOperationEnd();
-                }
-
-                this.request = null;
-                if (!IsFlagSet(this.options, SaveChangesOptions.ContinueOnError))
-                {
-                    this.SetCompleted();
-
-                    this.processingMediaLinkEntry = false;
-
-                    this.ChangedEntries[this.entryIndex].ContentGeneratedForSave = true;
-                }
-            }
-
-            private void HandleOperationResponse(HttpWebResponse response)
-            {
-                this.HandleOperationStart();
-
-                Descriptor entry = this.ChangedEntries[this.entryIndex];
-
-                if (entry.IsResource)
-                {
-                    EntityDescriptor entityDescriptor = (EntityDescriptor)entry;
-
-                    if (entry.State == EntityStates.Added ||
-                         (entry.State == EntityStates.Modified &&
-                          this.processingMediaLinkEntry && !this.processingMediaLinkEntryPut))
-                    {
-                        string location = response.Headers[XmlConstants.HttpResponseLocation];
-
-                        if (WebUtil.SuccessStatusCode(response.StatusCode))
-                        {
-                            if (null != location)
-                            {
-                                this.Context.AttachLocation(entityDescriptor.Entity, location);
-                            }
-                            else
-                            {
-                                throw Error.NotSupported(Strings.Deserialize_NoLocationHeader);
-                            }
-                        }
-                    }
-
-                    if (this.processingMediaLinkEntry)
-                    {
-                        if (!WebUtil.SuccessStatusCode(response.StatusCode))
-                        {
-                           this.processingMediaLinkEntry = false;
-
-                            if (!this.processingMediaLinkEntryPut)
-                            {
-                                Debug.Assert(entry.State == EntityStates.Modified, "Entity state should be set to Modified once we've sent the POST MR");
-                                entry.State = EntityStates.Added;
-                                this.processingMediaLinkEntryPut = false;
-                            }
-
-                           entry.ContentGeneratedForSave = true;
-                        }
-                        else if (response.StatusCode == HttpStatusCode.Created)
-                        {
-                            entityDescriptor.ETag = response.Headers[XmlConstants.HttpResponseETag];
-
-                        }
-                    }
-                }
-
-                WriteOperationResponseHeaders(this.buildBatchWriter, (int)response.StatusCode);
-                foreach (string name in response.Headers.AllKeys)
-                {
-                    if (XmlConstants.HttpContentLength != name)
-                    {
-                        this.buildBatchWriter.WriteLine("{0}: {1}", name, response.Headers[name]);
-                    }
-                }
-
-                this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentID, entry.ChangeOrder);
-                this.buildBatchWriter.WriteLine();
-            }
-
-           private void HandleOperationResponseData(HttpWebResponse response)
-            {
-                using (Stream stream = response.GetResponseStream())
-                {
-                    if (null != stream)
-                    {
-                        this.buildBatchWriter.Flush();
-                        if (0 == WebUtil.CopyStream(stream, this.buildBatchWriter.BaseStream, ref this.buildBatchBuffer))
-                        {
-                            this.HandleOperationResponseNoData();
-                        }
-                    }
-                }
-            }
-
-            private void HandleOperationResponseNoData()
-            {
-                Debug.Assert(null != this.buildBatchWriter, "null buildBatchWriter");
-                this.buildBatchWriter.Flush();
-#if DEBUG
-                MemoryStream memory = this.buildBatchWriter.BaseStream as MemoryStream;
-                Debug.Assert(null != memory, "expected MemoryStream");
-                Debug.Assert(this.buildBatchWriter.NewLine == NewLine, "mismatch NewLine");
-                for (int kk = 0; kk < NewLine.Length; ++kk)
-                {
-                    Debug.Assert((char)memory.GetBuffer()[memory.Length - (NewLine.Length - kk)] == NewLine[kk], "didn't end with newline");
-                }
-#endif
-                this.buildBatchWriter.BaseStream.Position -= NewLine.Length;
-                this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentLength, 0);
-                this.buildBatchWriter.WriteLine();
-            }
-
-            #endregion
-
-             private HttpWebRequest CreateBatchRequest(MemoryStream memory)
-            {
-                Uri requestUri = Util.CreateUri(this.Context.baseUriWithSlash, Util.CreateUri("$batch", UriKind.Relative));
-                string contentType = XmlConstants.MimeMultiPartMixed + "; " + XmlConstants.HttpMultipartBoundary + "=" + this.batchBoundary;
-                HttpWebRequest httpWebRequest = this.Context.CreateRequest(requestUri, XmlConstants.HttpMethodPost, false, contentType, Util.DataServiceVersion1, false);
-                httpWebRequest.ContentLength = memory.Length - memory.Position;
-                return httpWebRequest;
-            }
-
-            private MemoryStream GenerateBatchRequest(bool replaceOnUpdate)
-            {
-                this.changesetBoundary = null;
-                if (null != this.Queries)
-                {
-                }
-                else if (0 == this.ChangedEntries.Count)
-                {
-                    this.DataServiceResponse = new DataServiceResponse(null, (int)WebExceptionStatus.Success, this.Responses, true );
-                    this.SetCompleted();
-                    return null;
-                }
-                else
-                {
-                    this.changesetBoundary = XmlConstants.HttpMultipartBoundaryChangeSet + "_" + Guid.NewGuid().ToString();
-                }
-
-                MemoryStream memory = new MemoryStream();
-                StreamWriter text = new StreamWriter(memory);     
-
-#if TESTUNIXNEWLINE
-                text.NewLine = NewLine;
-#endif
-
-                if (null != this.Queries)
-                {
-                    for (int i = 0; i < this.Queries.Length; ++i)
-                    {
-                        Uri requestUri = Util.CreateUri(this.Context.baseUriWithSlash, this.Queries[i].QueryComponents.Uri);
-
-                        Debug.Assert(null != requestUri, "request uri is null");
-                        Debug.Assert(requestUri.IsAbsoluteUri, "request uri is not absolute uri");
-
-                        text.WriteLine("--{0}", this.batchBoundary);
-                        WriteOperationRequestHeaders(text, XmlConstants.HttpMethodGet, requestUri.AbsoluteUri, this.Queries[i].QueryComponents.Version);
-                        text.WriteLine();
-                    }
-                }
-                else if (0 < this.ChangedEntries.Count)
-                {
-                    text.WriteLine("--{0}", this.batchBoundary);
-                    text.WriteLine("{0}: {1}; boundary={2}", XmlConstants.HttpContentType, XmlConstants.MimeMultiPartMixed, this.changesetBoundary);
-                    text.WriteLine();
-
-                    for (int i = 0; i < this.ChangedEntries.Count; ++i)
-                    {
-                        #region validate changeset boundary starts on newline
-#if DEBUG
-                        {
-                            text.Flush();
-                            for (int kk = 0; kk < NewLine.Length; ++kk)
-                            {
-                                Debug.Assert((char)memory.GetBuffer()[memory.Length - (NewLine.Length - kk)] == NewLine[kk], "boundary didn't start with newline");
-                            }
-                        }
-#endif
-                        #endregion
-
-                        Descriptor entry = this.ChangedEntries[i];
-                        if (entry.ContentGeneratedForSave)
-                        {
-                            continue;
-                        }
-
-                        text.WriteLine("--{0}", this.changesetBoundary);
-
-                        EntityDescriptor entityDescriptor = entry as EntityDescriptor;
-                        if (entry.IsResource)
-                        {
-                            if (entityDescriptor.State == EntityStates.Added)
-                            {
-                                ClientType type = ClientType.Create(entityDescriptor.Entity.GetType());
-                                if (type.IsMediaLinkEntry || entityDescriptor.IsMediaLinkEntry)
-                                {
-                                    throw Error.NotSupported(Strings.Context_BatchNotSupportedForMediaLink);
-                                }
-                            }
-                            else if (entityDescriptor.State == EntityStates.Unchanged || entityDescriptor.State == EntityStates.Modified)
-                            {
-                                if (entityDescriptor.SaveStream != null)
-                                {
-                                    throw Error.NotSupported(Strings.Context_BatchNotSupportedForMediaLink);
-                                }
-                            }
-                        }
-
-                        PerRequest.ContentStream contentStream = this.CreateChangeData(i, true);
-                        MemoryStream stream = null;
-                        if (null != contentStream)
-                        {
-                            Debug.Assert(contentStream.IsKnownMemoryStream, "Batch requests don't support MRs yet");
-                            stream = contentStream.Stream as MemoryStream;
-                        }
-
-                        if (entry.IsResource)
-                        {
-                            this.Context.CreateRequestBatch(entityDescriptor, text, replaceOnUpdate);
-                        }
-                        else
-                        {
-                            this.Context.CreateRequestBatch((LinkDescriptor)entry, text);
-                        }
-
-                        byte[] buffer = null;
-                        int bufferOffset = 0, bufferLength = 0;
-                        if (null != stream)
-                        {
-                            buffer = stream.GetBuffer();
-                            bufferOffset = checked((int)stream.Position);
-                            bufferLength = checked((int)stream.Length) - bufferOffset;
-                        }
-
-                        if (0 < bufferLength)
-                        {
-                            text.WriteLine("{0}: {1}", XmlConstants.HttpContentLength, bufferLength);
-                        }
-
-                        text.WriteLine();
-
-                        if (0 < bufferLength)
-                        {
-                            text.Flush();
-                            text.BaseStream.Write(buffer, bufferOffset, bufferLength);
-                        }
-                    }
-
-                    #region validate changeset boundary ended with newline
-#if DEBUG
-                    {
-                        text.Flush();
-
-                        for (int kk = 0; kk < NewLine.Length; ++kk)
-                        {
-                            Debug.Assert((char)memory.GetBuffer()[memory.Length - (NewLine.Length - kk)] == NewLine[kk], "post CreateRequest boundary didn't start with newline");
-                        }
-                    }
-#endif
-                    #endregion
-
-                   text.WriteLine("--{0}--", this.changesetBoundary);
-                }
-
-                text.WriteLine("--{0}--", this.batchBoundary);
-
-                text.Flush();
-                Debug.Assert(Object.ReferenceEquals(text.BaseStream, memory), "should be same");
-                Debug.Assert(this.ChangedEntries.All(o => o.ContentGeneratedForSave), "didn't generated content for all entities/links");
-
-                #region Validate batch format
-#if DEBUG
-                int testGetCount = 0;
-                int testOpCount = 0;
-                int testBeginSetCount = 0;
-                int testEndSetCount = 0;
-                memory.Position = 0;
-                BatchStream testBatch = new BatchStream(memory, this.batchBoundary, HttpProcessUtility.EncodingUtf8NoPreamble, true);
-                while (testBatch.MoveNext())
-                {
-                    switch (testBatch.State)
-                    {
-                        case BatchStreamState.StartBatch:
-                        case BatchStreamState.EndBatch:
-                        default:
-                            Debug.Assert(false, "shouldn't happen");
-                            break;
-
-                        case BatchStreamState.Get:
-                            testGetCount++;
-                            break;
-
-                        case BatchStreamState.BeginChangeSet:
-                            testBeginSetCount++;
-                            break;
-                        case BatchStreamState.EndChangeSet:
-                            testEndSetCount++;
-                            break;
-                        case BatchStreamState.Post:
-                        case BatchStreamState.Put:
-                        case BatchStreamState.Delete:
-                        case BatchStreamState.Merge:
-                            testOpCount++;
-                            break;
-                    }
-                }
-
-                Debug.Assert((null == this.Queries && 1 == testBeginSetCount) || (0 == testBeginSetCount), "more than one BeginChangeSet");
-                Debug.Assert(testBeginSetCount == testEndSetCount, "more than one EndChangeSet");
-                Debug.Assert((null == this.Queries && testGetCount == 0) || this.Queries.Length == testGetCount, "too many get count");
-                Debug.Assert(BatchStreamState.EndBatch == testBatch.State, "should have ended propertly");
-#endif
-                #endregion
-
-                this.changesetBoundary = null;
-
-                memory.Position = 0;
-                return memory;
-            }
-
-            #region handle batch response
-
-            private void HandleBatchResponse()
-            {
-                string boundary = this.batchBoundary;
-                Encoding encoding = Encoding.UTF8;
-                Dictionary<string, string> headers = null;
-                Exception exception = null;
-
-                try
-                {
-                    if (IsFlagSet(this.options, SaveChangesOptions.Batch))
-                    {
-                        if ((null == this.batchResponse) || (HttpStatusCode.NoContent == this.batchResponse.StatusCode))
-                        {   
-                            throw Error.InvalidOperation(Strings.Batch_ExpectedResponse(1));
-                        }
-
-                        headers = WebUtil.WrapResponseHeaders(this.batchResponse);
-                        HandleResponse(
-                            this.batchResponse.StatusCode,                                    
-                            this.batchResponse.Headers[XmlConstants.HttpDataServiceVersion],   
-                            delegate() { return this.httpWebResponseStream; },                 
-                            true);                                                              
-
-                        if (!BatchStream.GetBoundaryAndEncodingFromMultipartMixedContentType(this.batchResponse.ContentType, out boundary, out encoding))
-                        {
-                            string mime;
-                            Exception inner = null;
-                            HttpProcessUtility.ReadContentType(this.batchResponse.ContentType, out mime, out encoding);
-                            if (String.Equals(XmlConstants.MimeTextPlain, mime))
-                            {
-                                inner = GetResponseText(this.batchResponse.GetResponseStream, this.batchResponse.StatusCode);
-                            }
-
-                            throw Error.InvalidOperation(Strings.Batch_ExpectedContentType(this.batchResponse.ContentType), inner);
-                        }
-
-                        if (null == this.httpWebResponseStream)
-                        {
-                            Error.ThrowBatchExpectedResponse(InternalError.NullResponseStream);
-                        }
-
-                        this.DataServiceResponse = new DataServiceResponse(headers, (int)this.batchResponse.StatusCode, this.Responses, true);
-                    }
-
-                    bool close = true;
-                    BatchStream batchStream = null;
-                    try
-                    {
-                        batchStream = this.responseBatchStream ?? new BatchStream(this.httpWebResponseStream, boundary, encoding, false);
-                        this.httpWebResponseStream = null;
-                        this.responseBatchStream = null;
-
-                        IEnumerable<OperationResponse> responses = this.HandleBatchResponse(batchStream);
-                        if (IsFlagSet(this.options, SaveChangesOptions.Batch) && (null != this.Queries))
-                        {
-                            close = false;
-                            this.responseBatchStream = batchStream;
-
-                            this.DataServiceResponse = new DataServiceResponse(
-                                (Dictionary<string, string>)this.DataServiceResponse.BatchHeaders,
-                                this.DataServiceResponse.BatchStatusCode,
-                                responses,
-                                true );
-                        }
-                        else
-                        {   
-                            foreach (ChangeOperationResponse response in responses)
-                            {
-                                if (exception == null && response.Error != null)
-                                {
-                                    exception = response.Error;
-                                }
-                            }
-                        }
-                    }
-                    finally
-                    {
-                        if (close && (null != batchStream))
-                        {
-                            batchStream.Close();
-                        }
-                    }
-                }
-                catch (InvalidOperationException ex)
-                {
-                    exception = ex;
-                }
-
-                if (exception != null)
-                {
-                    if (this.DataServiceResponse == null)
-                    {
-                        int statusCode = this.batchResponse == null ? (int)HttpStatusCode.InternalServerError : (int)this.batchResponse.StatusCode;
-                        this.DataServiceResponse = new DataServiceResponse(headers, statusCode, null, IsFlagSet(this.options, SaveChangesOptions.Batch));
-                    }
-
-                    throw new DataServiceRequestException(Strings.DataServiceException_GeneralError, exception, this.DataServiceResponse);
-                }
-            }
-
-            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1506", Justification = "Central method of the API, likely to have many cross-references")]
-            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031", Justification = "Cache exception so user can examine it later")]
-            private IEnumerable<OperationResponse> HandleBatchResponse(BatchStream batch)
-            {
-                if (!batch.CanRead)
-                {
-                    yield break;
-                }
-
-                string contentType;
-                string location;
-                string etag;
-
-                Uri editLink = null;
-
-                HttpStatusCode status;
-                int changesetIndex = 0;
-                int queryCount = 0;
-                int operationCount = 0;
-                this.entryIndex = 0;
-                while (batch.MoveNext())
-                {
-                    var contentHeaders = batch.ContentHeaders; 
-
-                    Descriptor entry;
-                    switch (batch.State)
-                    {
-                        #region BeginChangeSet
-                        case BatchStreamState.BeginChangeSet:
-                            if ((IsFlagSet(this.options, SaveChangesOptions.Batch) && (0 != changesetIndex)) ||
-                                (0 != operationCount))
-                            {   
-                                Error.ThrowBatchUnexpectedContent(InternalError.UnexpectedBeginChangeSet);
-                            }
-
-                            break;
-                        #endregion
-
-                        #region EndChangeSet
-                        case BatchStreamState.EndChangeSet:
-                            changesetIndex++;
-                            operationCount = 0;
-                            break;
-                        #endregion
-
-                        #region GetResponse
-                        case BatchStreamState.GetResponse:
-                            Debug.Assert(0 == operationCount, "missing an EndChangeSet 2");
-
-                            contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType);
-                            status = (HttpStatusCode)(-1);
-
-                            Exception ex = null;
-                            QueryOperationResponse qresponse = null;
-                            try
-                            {
-                                status = batch.GetStatusCode();
-
-                                ex = HandleResponse(status, batch.GetResponseVersion(), batch.GetContentStream, false);
-                                if (null == ex)
-                                {
-                                    DataServiceRequest query = this.Queries[queryCount];
-                                    MaterializeAtom materializer = DataServiceRequest.Materialize(this.Context, query.QueryComponents, null, contentType, batch.GetContentStream());
-                                    qresponse = QueryOperationResponse.GetInstance(query.ElementType, contentHeaders, query, materializer);
-                                }
-                            }
-                            catch (ArgumentException e)
-                            {
-                                ex = e;
-                            }
-                            catch (FormatException e)
-                            {
-                                ex = e;
-                            }
-                            catch (InvalidOperationException e)
-                            {
-                                ex = e;
-                            }
-
-                            if (null == qresponse)
-                            {
-                                if (null != this.Queries)
-                                {
-                                     DataServiceRequest query = this.Queries[queryCount];
-
-                                    if (this.Context.ignoreResourceNotFoundException && status == HttpStatusCode.NotFound)
-                                    {
-                                        qresponse = QueryOperationResponse.GetInstance(query.ElementType, contentHeaders, query, MaterializeAtom.EmptyResults);
-                                    }
-                                    else
-                                    {
-                                        qresponse = QueryOperationResponse.GetInstance(query.ElementType, contentHeaders, query, MaterializeAtom.EmptyResults);
-                                        qresponse.Error = ex;
-                                    }
-                                }
-                                else
-                                {
-                                   throw ex;
-                                }
-                            }
-
-                            qresponse.StatusCode = (int)status;
-                            queryCount++;
-                            yield return qresponse;
-                            break;
-                        #endregion
-
-                        #region ChangeResponse
-                        case BatchStreamState.ChangeResponse:
-
-                            HttpStatusCode statusCode = batch.GetStatusCode();
-                            Exception error = HandleResponse(statusCode, batch.GetResponseVersion(), batch.GetContentStream, false);
-                            int index = this.ValidateContentID(contentHeaders);
-
-                            try
-                            {
-                                entry = this.ChangedEntries[index];
-                                operationCount += this.Context.SaveResultProcessed(entry);
-
-                                if (null != error)
-                                {
-                                    throw error;
-                                }
-
-                                StreamStates streamState = StreamStates.NoStream;
-                                if (entry.IsResource)
-                                {
-                                    EntityDescriptor descriptor = (EntityDescriptor)entry;
-                                    streamState = descriptor.StreamState;
-#if DEBUG
-                                    if (descriptor.StreamState == StreamStates.Added)
-                                    {
-                                        Debug.Assert(
-                                            statusCode == HttpStatusCode.Created && entry.State == EntityStates.Modified && descriptor.IsMediaLinkEntry,
-                                            "statusCode == HttpStatusCode.Created && entry.State == EntityStates.Modified && descriptor.IsMediaLinkEntry -- Processing Post MR");
-                                    }
-                                    else if (descriptor.StreamState == StreamStates.Modified)
-                                    {
-                                        Debug.Assert(
-                                            statusCode == HttpStatusCode.NoContent && descriptor.IsMediaLinkEntry,
-                                            "statusCode == HttpStatusCode.NoContent && descriptor.IsMediaLinkEntry -- Processing Put MR");
-                                    }
-#endif
-                                }
-
-                                if (streamState == StreamStates.Added || entry.State == EntityStates.Added)
-                                {
-                                    #region Post
-                                    if (entry.IsResource)
-                                    {
-                                        string mime = null;
-                                        Encoding postEncoding = null;
-                                        contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType);
-                                        contentHeaders.TryGetValue(XmlConstants.HttpResponseLocation, out location);
-                                        contentHeaders.TryGetValue(XmlConstants.HttpResponseETag, out etag);
-                                        EntityDescriptor entityDescriptor = (EntityDescriptor)entry;
-
-                                        if (location != null)
-                                        {
-                                            editLink = Util.CreateUri(location, UriKind.Absolute);
-                                        }
-                                        else
-                                        {
-                                            throw Error.NotSupported(Strings.Deserialize_NoLocationHeader);
-                                        }
-
-                                        Stream stream = batch.GetContentStream();
-                                        if (null != stream)
-                                        {
-                                            HttpProcessUtility.ReadContentType(contentType, out mime, out postEncoding);
-                                            if (!String.Equals(XmlConstants.MimeApplicationAtom, mime, StringComparison.OrdinalIgnoreCase))
-                                            {
-                                                throw Error.InvalidOperation(Strings.Deserialize_UnknownMimeTypeSpecified(mime));
-                                            }
-
-                                            XmlReader reader = XmlUtil.CreateXmlReader(stream, postEncoding);
-                                            QueryComponents qc = new QueryComponents(null, Util.DataServiceVersionEmpty, entityDescriptor.Entity.GetType(), null, null);
-                                            EntityDescriptor descriptor = (EntityDescriptor)entry;
-                                            MergeOption mergeOption = MergeOption.OverwriteChanges;
-
-                                            if (descriptor.StreamState == StreamStates.Added)
-                                            {
-                                                mergeOption = MergeOption.PreserveChanges;
-                                                Debug.Assert(descriptor.State == EntityStates.Modified, "The MLE state must be Modified.");
-                                            }
-
-                                            try
-                                            {
-                                                using (MaterializeAtom atom = new MaterializeAtom(this.Context, reader, qc, null, mergeOption))
-                                                {
-                                                    this.Context.HandleResponsePost(entityDescriptor, atom, editLink, etag);
-                                                }
-                                            }
-                                            finally
-                                            {
-                                                if (descriptor.StreamState == StreamStates.Added)
-                                                {
-                                                   Debug.Assert(descriptor.State == EntityStates.Unchanged, "The materializer should always set the entity state to Unchanged.");
-                                                    descriptor.State = EntityStates.Modified;
-
-                                                    descriptor.StreamState = StreamStates.NoStream;
-                                                }
-                                            }
-                                        }
-                                        else
-                                        {
-                                            this.Context.HandleResponsePost(entityDescriptor, null, editLink, etag);
-                                        }
-                                    }
-                                    else
-                                    {
-                                        HandleResponsePost((LinkDescriptor)entry);
-                                    }
-                                    #endregion
-                                }
-                                else if (streamState == StreamStates.Modified || entry.State == EntityStates.Modified)
-                                {
-                                    #region Put, Merge
-                                    contentHeaders.TryGetValue(XmlConstants.HttpResponseETag, out etag);
-                                    HandleResponsePut(entry, etag);
-                                    #endregion
-                                }
-                                else if (entry.State == EntityStates.Deleted)
-                                {
-                                    #region Delete
-                                    this.Context.HandleResponseDelete(entry);
-                                    #endregion
-                                }
-
-                           }
-                            catch (Exception e)
-                            {
-                                this.ChangedEntries[index].SaveError = e;
-                                error = e;
-                            }
-
-                            ChangeOperationResponse changeOperationResponse = 
-                                new ChangeOperationResponse(contentHeaders, this.ChangedEntries[index]);
-                            changeOperationResponse.StatusCode = (int)statusCode;
-                            if (error != null)
-                            {
-                                changeOperationResponse.Error = error;
-                            }
-
-                            this.Responses.Add(changeOperationResponse);
-                            operationCount++;
-                            this.entryIndex++;
-                            yield return changeOperationResponse;
-                            break;
-                        #endregion
-
-                        default:
-                            Error.ThrowBatchExpectedResponse(InternalError.UnexpectedBatchState);
-                            break;
-                    }
-                }
-
-                Debug.Assert(batch.State == BatchStreamState.EndBatch, "unexpected batch state");
-
-               if ((null == this.Queries && 
-                    (0 == changesetIndex || 
-                     0 < queryCount || 
-                     this.ChangedEntries.Any(o => o.ContentGeneratedForSave && 0 == o.SaveResultWasProcessed) &&
-                     (!IsFlagSet(this.options, SaveChangesOptions.Batch) || null == this.ChangedEntries.FirstOrDefault(o => null != o.SaveError)))) ||
-                    (null != this.Queries && queryCount != this.Queries.Length))
-                {
-                    throw Error.InvalidOperation(Strings.Batch_IncompleteResponseCount);
-                }
-
-                batch.Dispose();
-            }
-
-           private int ValidateContentID(Dictionary<string, string> contentHeaders)
-            {
-                int contentID = 0;
-                string contentValueID;
-
-                if (!contentHeaders.TryGetValue(XmlConstants.HttpContentID, out contentValueID) ||
-                    !Int32.TryParse(contentValueID, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out contentID))
-                {
-                    Error.ThrowBatchUnexpectedContent(InternalError.ChangeResponseMissingContentID);
-                }
-
-                for (int i = 0; i < this.ChangedEntries.Count; ++i)
-                {
-                    if (this.ChangedEntries[i].ChangeOrder == contentID)
-                    {
-                        return i;
-                    }
-                }
-
-                Error.ThrowBatchUnexpectedContent(InternalError.ChangeResponseUnknownContentID);
-                return -1;
-            }
-
-            #endregion Batch
-
-            #region callback handlers
-
-            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-            private void AsyncEndGetRequestStream(IAsyncResult asyncResult)
-            {
-                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
-                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
-                try
-                {
-                    CompleteCheck(pereq, InternalError.InvalidEndGetRequestCompleted);
-                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
-
-                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndGetRequestStream);
-                    HttpWebRequest httpWebRequest = Util.NullCheck(pereq.Request, InternalError.InvalidEndGetRequestStreamRequest);
-
-                    Stream stream = Util.NullCheck(httpWebRequest.EndGetRequestStream(asyncResult), InternalError.InvalidEndGetRequestStreamStream);
-                    pereq.RequestStream = stream;
-
-                    PerRequest.ContentStream contentStream = pereq.RequestContentStream;
-                    Util.NullCheck(contentStream, InternalError.InvalidEndGetRequestStreamContent);
-                    Util.NullCheck(contentStream.Stream, InternalError.InvalidEndGetRequestStreamContent);
-                    if (contentStream.IsKnownMemoryStream)
-                    {
-                        MemoryStream memoryStream = contentStream.Stream as MemoryStream;
-                        byte[] buffer = memoryStream.GetBuffer();
-                        int bufferOffset = checked((int)memoryStream.Position);
-                        int bufferLength = checked((int)memoryStream.Length) - bufferOffset;
-                        if ((null == buffer) || (0 == bufferLength))
-                        {
-                            Error.ThrowInternalError(InternalError.InvalidEndGetRequestStreamContentLength);
-                        }
-                    }
-
-                    pereq.RequestContentBufferValidLength = -1;
-
-                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetRequestStream_BeforeBeginRead");
-                    asyncResult = BaseAsyncResult.InvokeAsync(contentStream.Stream.BeginRead, pereq.RequestContentBuffer, 0, pereq.RequestContentBuffer.Length, this.AsyncRequestContentEndRead, pereq);
-                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
-                }
-                catch (Exception e)
-                {
-                    if (this.HandleFailure(pereq, e))
-                    {
-                        throw;
-                    }
-                }
-                finally
-                {
-                    this.HandleCompleted(pereq);
-                }
-            }
-
-            private void AsyncRequestContentEndRead(IAsyncResult asyncResult)
-            {
-                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
-                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
-                try
-                {
-                    CompleteCheck(pereq, InternalError.InvalidEndReadCompleted);
-                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
-
-                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndRead);
-                    PerRequest.ContentStream contentStream = pereq.RequestContentStream;
-                    Util.NullCheck(contentStream, InternalError.InvalidEndReadStream);
-                    Util.NullCheck(contentStream.Stream, InternalError.InvalidEndReadStream);
-                    Stream stream = Util.NullCheck(pereq.RequestStream, InternalError.InvalidEndReadStream);
-
-                    Util.DebugInjectFault("SaveAsyncResult::AsyncRequestContentEndRead_BeforeEndRead");
-                    int count = contentStream.Stream.EndRead(asyncResult);
-                    if (0 < count)
-                    {
-                        bool firstEndRead = (pereq.RequestContentBufferValidLength == -1);
-                        pereq.RequestContentBufferValidLength = count;
-
-                        if (!asyncResult.CompletedSynchronously || firstEndRead)
-                        {
-                            do
-                            {
-                                Util.DebugInjectFault("SaveAsyncResult::AsyncRequestContentEndRead_BeforeBeginWrite");
-                                asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginWrite, pereq.RequestContentBuffer, 0, pereq.RequestContentBufferValidLength, this.AsyncEndWrite, pereq);
-                                pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
-
-                                if (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally)
-                                {
-                                    Util.DebugInjectFault("SaveAsyncResult::AsyncRequestContentEndRead_BeforeBeginRead");
-                                    asyncResult = BaseAsyncResult.InvokeAsync(contentStream.Stream.BeginRead, pereq.RequestContentBuffer, 0, pereq.RequestContentBuffer.Length, this.AsyncRequestContentEndRead, pereq);
-                                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
-                                }
-
-
-                            }
-                            while (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally &&
-                                pereq.RequestContentBufferValidLength > 0);
-                        }
-                    }
-                    else
-                    {
-                        pereq.RequestContentBufferValidLength = 0;
-                        pereq.RequestStream = null;
-                        stream.Close();
-
-                        HttpWebRequest httpWebRequest = Util.NullCheck(pereq.Request, InternalError.InvalidEndWriteRequest);
-                        asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetResponse, this.AsyncEndGetResponse, pereq);
-                        pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
-                    }
-                }
-                catch (Exception e)
-                {
-                    if (this.HandleFailure(pereq, e))
-                    {
-                        throw;
-                    }
-                }
-                finally
-                {
-                    this.HandleCompleted(pereq);
-                }
-            }
-                        
-            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-            private void AsyncEndWrite(IAsyncResult asyncResult)
-            {
-                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
-                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
-                try
-                {
-                    CompleteCheck(pereq, InternalError.InvalidEndWriteCompleted);
-                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
-
-                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndWrite);
-
-                    PerRequest.ContentStream contentStream = pereq.RequestContentStream;
-                    Util.NullCheck(contentStream, InternalError.InvalidEndWriteStream);
-                    Util.NullCheck(contentStream.Stream, InternalError.InvalidEndWriteStream);
-                    Stream stream = Util.NullCheck(pereq.RequestStream, InternalError.InvalidEndWriteStream);
-                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndWrite_BeforeEndWrite");
-                    stream.EndWrite(asyncResult);
-
-                   if (!asyncResult.CompletedSynchronously)
-                    {
-                        Util.DebugInjectFault("SaveAsyncResult::AsyncEndWrite_BeforeBeginRead");
-                        asyncResult = BaseAsyncResult.InvokeAsync(contentStream.Stream.BeginRead, pereq.RequestContentBuffer, 0, pereq.RequestContentBuffer.Length, this.AsyncRequestContentEndRead, pereq);
-                        pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
-                    }
-                }
-                catch (Exception e)
-                {
-                    if (this.HandleFailure(pereq, e))
-                    {
-                        throw;
-                    }
-                }
-                finally
-                {
-                    this.HandleCompleted(pereq);
-                }
-            }
-
-            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-            private void AsyncEndGetResponse(IAsyncResult asyncResult)
-            {
-                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
-                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
-                try
-                {
-                    CompleteCheck(pereq, InternalError.InvalidEndGetResponseCompleted);
-                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
-
-                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndGetResponse);
-                    HttpWebRequest httpWebRequest = Util.NullCheck(pereq.Request, InternalError.InvalidEndGetResponseRequest);
-
-                    HttpWebResponse response = null;
-                    try
-                    {
-                        Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetResponse::BeforeEndGetResponse");
-                        response = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult);
-                    }
-                    catch (WebException e)
-                    {
-                        response = (HttpWebResponse)e.Response;
-                        if (null == response)
-                        {
-                            throw;
-                        }
-                    }
-
-                    pereq.HttpWebResponse = Util.NullCheck(response, InternalError.InvalidEndGetResponseResponse);
-
-                    if (!IsFlagSet(this.options, SaveChangesOptions.Batch))
-                    {
-                        this.HandleOperationResponse(response);
-                    }
-
-                    this.copiedContentLength = 0;
-                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetResponse_BeforeGetStream");
-                    Stream stream = response.GetResponseStream();
-                    pereq.ResponseStream = stream;
-                    if ((null != stream) && stream.CanRead)
-                    {
-                        if (null != this.buildBatchWriter)
-                        {
-                            this.buildBatchWriter.Flush();
-                        }
-
-                        if (null == this.buildBatchBuffer)
-                        {
-                            this.buildBatchBuffer = new byte[8000];
-                        }
-
-                        do
-                        {
-                            Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetResponse_BeforeBeginRead");
-                            asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginRead, this.buildBatchBuffer, 0, this.buildBatchBuffer.Length, this.AsyncEndRead, pereq);
-                            pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
-                        }
-                        while (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally && stream.CanRead);
-                    }
-                    else
-                    {
-                        pereq.SetComplete();
-
-                        if (!this.IsCompletedInternally)
-                        {
-                            this.SaveNextChange(pereq);
-                        }
-                    }
-                }
-                catch (Exception e)
-                {
-                    if (this.HandleFailure(pereq, e))
-                    {
-                        throw;
-                    }
-                }
-                finally
-                {
-                    this.HandleCompleted(pereq);
-                }
-            }
-
-           [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-            private void AsyncEndRead(IAsyncResult asyncResult)
-            {
-                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
-                PerRequest pereq = asyncResult.AsyncState as PerRequest;
-                int count = 0;
-                try
-                {
-                    CompleteCheck(pereq, InternalError.InvalidEndReadCompleted);
-                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
-
-                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndRead);
-                    Stream stream = Util.NullCheck(pereq.ResponseStream, InternalError.InvalidEndReadStream);
-
-                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndRead_BeforeEndRead");
-                    count = stream.EndRead(asyncResult);
-                    if (0 < count)
-                    {
-                        Stream outputResponse = Util.NullCheck(this.httpWebResponseStream, InternalError.InvalidEndReadCopy);
-                        outputResponse.Write(this.buildBatchBuffer, 0, count);
-                        this.copiedContentLength += count;
-
-                        if (!asyncResult.CompletedSynchronously && stream.CanRead)
-                        {   
-                             do
-                            {
-                                asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginRead, this.buildBatchBuffer, 0, this.buildBatchBuffer.Length, this.AsyncEndRead, pereq);
-                                pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
-                            }
-                            while (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally && stream.CanRead);
-                        }
-                    }
-                    else
-                    {
-                        pereq.SetComplete();
-
-                        if (!this.IsCompletedInternally)
-                        {
-                            this.SaveNextChange(pereq);
-                        }
-                    }
-                }
-                catch (Exception e)
-                {
-                    if (this.HandleFailure(pereq, e))
-                    {
-                        throw;
-                    }
-                }
-                finally
-                {
-                    this.HandleCompleted(pereq);
-                }
-            }
-
-            private void SaveNextChange(PerRequest pereq)
-            {
-                Debug.Assert(this.executeAsync, "should be async");
-                if (!pereq.RequestCompleted)
-                {
-                    Error.ThrowInternalError(InternalError.SaveNextChangeIncomplete);
-                }
-
-                EqualRefCheck(this.request, pereq, InternalError.InvalidSaveNextChange);
-
-                if (IsFlagSet(this.options, SaveChangesOptions.Batch))
-                {
-                    this.httpWebResponseStream.Position = 0;
-                    this.request = null;
-                    this.SetCompleted();
-                }
-                else
-                {
-                    if (0 == this.copiedContentLength)
-                    {
-                        this.HandleOperationResponseNoData();
-                    }
-
-                    this.HandleOperationEnd();
-
-                    if (!this.processingMediaLinkEntry)
-                    {
-                        this.changesCompleted++;
-                    }
-
-                    pereq.Dispose();
-                    this.request = null;
-                    if (!pereq.RequestCompletedSynchronously)
-                    {   
-                        if (!this.IsCompletedInternally)
-                        {
-                            this.BeginNextChange(IsFlagSet(this.options, SaveChangesOptions.ReplaceOnUpdate));
-                        }
-                    }
-                }
-            }
-            #endregion
-
-            private sealed class PerRequest
-            {
-                private int requestStatus;
-
-                private byte[] requestContentBuffer;
-
-                internal PerRequest()
-                {
-                    this.RequestCompletedSynchronously = true;
-                }
-
-                internal HttpWebRequest Request
-                {
-                    get;
-                    set;
-                }
-
-                internal Stream RequestStream
-                {
-                    get;
-                    set;
-                }
-
-                internal ContentStream RequestContentStream
-                {
-                    get;
-                    set;
-                }
-
-                internal HttpWebResponse HttpWebResponse
-                {
-                    get;
-                    set;
-                }
-
-                internal Stream ResponseStream
-                {
-                    get;
-                    set;
-                }
-
-                internal bool RequestCompletedSynchronously
-                {
-                    get;
-                    set;
-                }
-
-                internal bool RequestCompleted
-                {
-                    get { return this.requestStatus != 0; }
-                }
-
-                internal bool RequestAborted
-                {
-                    get { return this.requestStatus == 2; }
-                }
-
-                internal byte[] RequestContentBuffer
-                {
-                    get
-                    {
-                        if (this.requestContentBuffer == null)
-                        {
-                            this.requestContentBuffer = new byte[64 * 1024];
-                        }
-
-                        return this.requestContentBuffer;
-                    }
-                }
-
-                internal int RequestContentBufferValidLength
-                {
-                    get;
-                    set;
-                }
-
-                internal void SetComplete()
-                {
-                    System.Threading.Interlocked.CompareExchange(ref this.requestStatus, 1, 0);
-                }
-
-                internal void SetAborted()
-                {
-                    System.Threading.Interlocked.Exchange(ref this.requestStatus, 2);
-                }
-                
-                internal void Dispose()
-                {
-                    Stream stream = null;
-
-                    if (null != (stream = this.ResponseStream))
-                    {
-                        this.ResponseStream = null;
-                        stream.Dispose();
-                    }
-
-                    if (null != this.RequestContentStream)
-                    {
-                        if (this.RequestContentStream.Stream != null && this.RequestContentStream.IsKnownMemoryStream)
-                        {
-                            this.RequestContentStream.Stream.Dispose();
-                        }
-
-                        this.RequestContentStream = null;
-                    }
-                    
-                    if (null != (stream = this.RequestStream))
-                    {
-                        this.RequestStream = null;
-                        try
-                        {
-                            Util.DebugInjectFault("PerRequest::Dispose_BeforeRequestStreamDisposed");
-                            stream.Dispose();
-                        }
-                        catch (WebException)
-                        {
-                            if (!this.RequestAborted)
-                            {
-                                throw;
-                            }
-
-                             Util.DebugInjectFault("PerRequest::Dispose_WebExceptionThrown");
-                        }
-                    }
-
-                    HttpWebResponse response = this.HttpWebResponse;
-                    if (null != response)
-                    {
-                        response.Close();
-                    }
-
-                    this.Request = null;
-                    this.SetComplete();
-                }
-
-                internal class ContentStream
-                {
-                     private readonly Stream stream;
-
-                    private readonly bool isKnownMemoryStream;
-
-                   public ContentStream(Stream stream, bool isKnownMemoryStream)
-                    {
-                        this.stream = stream;
-                        this.isKnownMemoryStream = isKnownMemoryStream;
-                    }
-
-                   public Stream Stream
-                    {
-                        get { return this.stream; }
-                    }
-
-                   public bool IsKnownMemoryStream
-                    {
-                        get { return this.isKnownMemoryStream; }
-                    }
-                }
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Collections.ObjectModel;
+    using System.Diagnostics;
+    using System.Globalization;
+    using System.IO;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Data.Services.Common;
+#if !ASTORIA_LIGHT
+    using System.Net;
+#else    
+    using System.Data.Services.Http;
+#endif
+    using System.Text;
+    using System.Xml;
+    using System.Xml.Linq;
+
+    #endregion Namespaces.
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1506", Justification = "Central class of the API, likely to have many cross-references")]
+    public class DataServiceContext
+    {
+#if !TESTUNIXNEWLINE
+        private static readonly string NewLine = System.Environment.NewLine;
+#else
+        private const string NewLine = "\n";
+#endif
+
+        private readonly System.Uri baseUri;
+
+        private readonly System.Uri baseUriWithSlash;
+
+#if !ASTORIA_LIGHT        
+        private System.Net.ICredentials credentials;
+#endif
+
+          private string dataNamespace;
+
+        private Func<Type, string> resolveName;
+
+        private Func<string, Type> resolveType;
+
+#if !ASTORIA_LIGHT        
+        private int timeout;
+#endif
+
+        private bool postTunneling;
+
+        private bool ignoreMissingProperties;
+
+        private MergeOption mergeOption;
+
+        private SaveChangesOptions saveChangesDefaultOptions;
+
+        private Uri typeScheme;
+
+        private bool ignoreResourceNotFoundException;
+
+#if ASTORIA_LIGHT        
+        private HttpStack httpStack;
+#endif
+
+        #region Resource state management
+
+        private uint nextChange;
+
+        private Dictionary<object, EntityDescriptor> entityDescriptors = new Dictionary<object, EntityDescriptor>(EqualityComparer<object>.Default);
+
+        private Dictionary<String, EntityDescriptor> identityToDescriptor;
+
+        private Dictionary<LinkDescriptor, LinkDescriptor> bindings = new Dictionary<LinkDescriptor, LinkDescriptor>(LinkDescriptor.EquivalenceComparer);
+
+        private bool applyingChanges;
+
+        #endregion
+
+        #region ctor
+
+        public DataServiceContext(Uri serviceRoot)
+        {
+            Util.CheckArgumentNull(serviceRoot, "serviceRoot");
+
+#if ASTORIA_LIGHT
+            if (!serviceRoot.IsAbsoluteUri)
+            {
+                if (XHRHttpWebRequest.IsAvailable())
+                {
+                    serviceRoot = new Uri(System.Windows.Browser.HtmlPage.Document.DocumentUri, serviceRoot);
+                }
+                else
+                {
+                    System.Net.WebClient webClient = new System.Net.WebClient();
+                    serviceRoot = new Uri(new Uri(webClient.BaseAddress), serviceRoot);
+                }
+            }
+#endif
+            if (!serviceRoot.IsAbsoluteUri ||
+                !Uri.IsWellFormedUriString(serviceRoot.OriginalString, UriKind.Absolute) ||
+                !String.IsNullOrEmpty(serviceRoot.Query) ||
+                !string.IsNullOrEmpty(serviceRoot.Fragment) ||
+                ((serviceRoot.Scheme != "http") && (serviceRoot.Scheme != "https")))
+            {
+                throw Error.Argument(Strings.Context_BaseUri, "serviceRoot");
+            }
+
+            this.baseUri = serviceRoot;
+            this.baseUriWithSlash = serviceRoot;
+            if (!serviceRoot.OriginalString.EndsWith("/", StringComparison.Ordinal))
+            {
+                this.baseUriWithSlash = Util.CreateUri(serviceRoot.OriginalString + "/", UriKind.Absolute);
+            }
+
+            this.mergeOption = MergeOption.AppendOnly;
+            this.DataNamespace = XmlConstants.DataWebNamespace;
+#if ASTORIA_LIGHT
+            this.UsePostTunneling = true;
+#else
+            this.UsePostTunneling = false;
+#endif
+            this.typeScheme = new Uri(XmlConstants.DataWebSchemeNamespace);
+#if ASTORIA_LIGHT
+            this.httpStack = HttpStack.Auto;
+#endif
+        }
+
+        #endregion
+
+        public event EventHandler<SendingRequestEventArgs> SendingRequest;
+
+        public event EventHandler<ReadingWritingEntityEventArgs> ReadingEntity;
+
+        public event EventHandler<ReadingWritingEntityEventArgs> WritingEntity;
+
+        internal event EventHandler<SaveChangesEventArgs> ChangesSaved;
+
+        #region BaseUri, Credentials, MergeOption, Timeout, Links, Entities
+        public Uri BaseUri
+        {
+            get { return this.baseUri; }
+        }
+
+#if !ASTORIA_LIGHT        
+        public System.Net.ICredentials Credentials
+        {
+            get { return this.credentials; }
+            set { this.credentials = value; }
+        }
+#endif
+
+        public MergeOption MergeOption
+        {
+            get { return this.mergeOption; }
+            set { this.mergeOption = Util.CheckEnumerationValue(value, "MergeOption"); }
+        }
+
+        public bool ApplyingChanges
+        {
+            get { return this.applyingChanges; }
+            internal set { this.applyingChanges = value; }
+        }
+
+        public bool IgnoreMissingProperties
+        {
+            get { return this.ignoreMissingProperties; }
+            set { this.ignoreMissingProperties = value; }
+        }
+
+        public string DataNamespace
+        {
+            get
+            {
+                return this.dataNamespace;
+            }
+
+            set
+            {
+                Util.CheckArgumentNull(value, "value");
+                this.dataNamespace = value;
+            }
+        }
+
+        public Func<Type, string> ResolveName
+        {
+            get { return this.resolveName; }
+            set { this.resolveName = value; }
+        }
+
+        public Func<string, Type> ResolveType
+        {
+            get { return this.resolveType; }
+            set { this.resolveType = value; }
+        }
+
+#if !ASTORIA_LIGHT        
+        public int Timeout
+        {
+            get
+            {
+                return this.timeout;
+            }
+
+            set
+            {
+                if (value < 0)
+                {
+                    throw Error.ArgumentOutOfRange("Timeout");
+                }
+
+                this.timeout = value;
+            }
+        }
+#endif
+
+        public Uri TypeScheme
+        {
+            get
+            {
+                return this.typeScheme;
+            }
+
+            set
+            {
+                Util.CheckArgumentNull(value, "value");
+                this.typeScheme = value;
+            }
+        }
+
+        public bool UsePostTunneling
+        {
+            get { return this.postTunneling; }
+            set { this.postTunneling = value; }
+        }
+
+        public ReadOnlyCollection<LinkDescriptor> Links
+        {
+            get
+            {
+                return this.bindings.Values.OrderBy(l => l.ChangeOrder).ToList().AsReadOnly();
+            }
+        }
+
+        public ReadOnlyCollection<EntityDescriptor> Entities
+        {
+            get
+            {
+                return this.entityDescriptors.Values.OrderBy(d => d.ChangeOrder).ToList().AsReadOnly();
+            }
+        }
+
+        public SaveChangesOptions SaveChangesDefaultOptions
+        {
+            get
+            {
+                return this.saveChangesDefaultOptions;
+            }
+
+            set
+            {
+                ValidateSaveChangesOptions(value);
+                this.saveChangesDefaultOptions = value;
+            }
+        }
+
+        #endregion
+
+        public bool IgnoreResourceNotFoundException
+        {
+            get { return this.ignoreResourceNotFoundException; }
+            set { this.ignoreResourceNotFoundException = value; }
+        }
+
+#if ASTORIA_LIGHT        
+public HttpStack HttpStack
+        {
+            get { return this.httpStack; }
+            set { this.httpStack = Util.CheckEnumerationValue(value, "HttpStack"); }
+        }
+#endif
+
+        internal Uri BaseUriWithSlash
+        {
+            get { return this.baseUriWithSlash; }
+        }
+
+        internal bool HasReadingEntityHandlers
+        {
+            [DebuggerStepThrough]
+            get { return this.ReadingEntity != null; }
+        }
+
+        #region Entity and Link Tracking
+        
+        public EntityDescriptor GetEntityDescriptor(object entity)
+        {
+            Util.CheckArgumentNull(entity, "entity");
+
+            EntityDescriptor descriptor;
+            if (this.entityDescriptors.TryGetValue(entity, out descriptor))
+            {
+                return descriptor;
+            }
+            else
+            {
+                return null;
+            }
+        }
+        
+        public LinkDescriptor GetLinkDescriptor(object source, string sourceProperty, object target)
+        {
+            Util.CheckArgumentNull(source, "source");
+            Util.CheckArgumentNotEmpty(sourceProperty, "sourceProperty");
+            Util.CheckArgumentNull(target, "target");
+            
+            LinkDescriptor link;
+            
+            if (this.bindings.TryGetValue(new LinkDescriptor(source, sourceProperty, target), out link))
+            {
+                return link;
+            }
+            else
+            {
+                return null;
+            }
+        }
+        
+        #endregion
+
+        #region CancelRequest
+        public void CancelRequest(IAsyncResult asyncResult)
+        {
+            Util.CheckArgumentNull(asyncResult, "asyncResult");
+            BaseAsyncResult result = asyncResult as BaseAsyncResult;
+
+            if ((null == result) || (this != result.Source))
+            {
+                object context = null;
+                DataServiceQuery query = null;
+                if (null != result)
+                {
+                    query = result.Source as DataServiceQuery;
+
+                    if (null != query)
+                    {
+                        DataServiceQueryProvider provider = query.Provider as DataServiceQueryProvider;
+                        if (null != provider)
+                        {
+                            context = provider.Context;
+                        }
+                    }
+                }
+
+                if (this != context)
+                {
+                    throw Error.Argument(Strings.Context_DidNotOriginateAsync, "asyncResult");
+                }
+            }
+
+            if (!result.IsCompletedInternally)
+            {
+                result.SetAborted();
+
+                WebRequest request = result.Abortable;
+                if (null != request)
+                {
+                    request.Abort();
+                }
+            }
+        }
+        #endregion
+
+        #region CreateQuery
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "required for this feature")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1057:StringUriOverloadsCallSystemUriOverloads", Justification = "required for this feature")]
+        public DataServiceQuery<T> CreateQuery<T>(string entitySetName)
+        {
+            Util.CheckArgumentNotEmpty(entitySetName, "entitySetName");
+            this.ValidateEntitySetName(ref entitySetName);
+
+            ResourceSetExpression rse = new ResourceSetExpression(typeof(IOrderedQueryable<T>), null, Expression.Constant(entitySetName), typeof(T), null, CountOption.None, null, null);
+            return new DataServiceQuery<T>.DataServiceOrderedQuery(rse, new DataServiceQueryProvider(this));
+        }
+        #endregion
+
+        #region GetMetadataUri
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "required for this feature")]
+        public Uri GetMetadataUri()
+        {
+            Uri metadataUri = Util.CreateUri(this.baseUriWithSlash.OriginalString + XmlConstants.UriMetadataSegment, UriKind.Absolute);
+            return metadataUri;
+        }
+        #endregion
+
+        #region LoadProperty
+
+        public IAsyncResult BeginLoadProperty(object entity, string propertyName, AsyncCallback callback, object state)
+        {
+            return this.BeginLoadProperty(entity, propertyName, (Uri)null, callback, state);
+        }
+
+        public IAsyncResult BeginLoadProperty(object entity, string propertyName, Uri nextLinkUri, AsyncCallback callback, object state)
+        {
+            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, callback, state, nextLinkUri, null);
+            result.BeginExecute();
+            return result;
+        }
+
+        public IAsyncResult BeginLoadProperty(object entity, string propertyName, DataServiceQueryContinuation continuation, AsyncCallback callback, object state)
+        {
+            Util.CheckArgumentNull(continuation, "continuation");
+            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, callback, state, null, continuation);
+            result.BeginExecute();
+            return result;
+        }
+
+        public QueryOperationResponse EndLoadProperty(IAsyncResult asyncResult)
+        {
+            LoadPropertyResult response = QueryResult.EndExecute<LoadPropertyResult>(this, "LoadProperty", asyncResult);
+            return response.LoadProperty();
+        }
+
+#if !ASTORIA_LIGHT        
+        public QueryOperationResponse LoadProperty(object entity, string propertyName)
+        {
+            return this.LoadProperty(entity, propertyName, (Uri)null);
+        }
+
+        public QueryOperationResponse LoadProperty(object entity, string propertyName, Uri nextLinkUri)
+        {
+            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, null, null, nextLinkUri, null);
+            result.Execute();
+            return result.LoadProperty();
+        }
+
+        public QueryOperationResponse LoadProperty(object entity, string propertyName, DataServiceQueryContinuation continuation)
+        {
+            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, null, null, null, continuation);
+            result.Execute();
+            return result.LoadProperty();
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1011", Justification = "allows compiler to infer 'T'")]
+        public QueryOperationResponse<T> LoadProperty<T>(object entity, string propertyName, DataServiceQueryContinuation<T> continuation)
+        {
+            LoadPropertyResult result = this.CreateLoadPropertyRequest(entity, propertyName, null, null, null, continuation);
+            result.Execute();
+            return (QueryOperationResponse<T>)result.LoadProperty();
+        }
+
+#endif
+        #endregion
+
+        #region GetReadStreamUri
+        public Uri GetReadStreamUri(object entity) 
+        {
+            EntityDescriptor box = this.EnsureContained(entity, "entity");
+            return box.GetMediaResourceUri(this.baseUriWithSlash);
+        }
+        #endregion
+
+        #region GetReadStream, BeginGetReadStream, EndGetReadStream
+
+        public IAsyncResult BeginGetReadStream(object entity, DataServiceRequestArgs args, AsyncCallback callback, object state)
+        {
+            GetReadStreamResult result;
+            result = this.CreateGetReadStreamResult(entity, args, callback, state);
+            result.Begin();
+            return result;
+        }
+
+        public DataServiceStreamResponse EndGetReadStream(IAsyncResult asyncResult)
+        {
+            GetReadStreamResult result = BaseAsyncResult.EndExecute<GetReadStreamResult>(this, "GetReadStream", asyncResult);
+            return result.End();
+        }
+
+#if !ASTORIA_LIGHT
+        public DataServiceStreamResponse GetReadStream(object entity)
+        {
+            DataServiceRequestArgs args = new DataServiceRequestArgs();
+            return this.GetReadStream(entity, args);
+        }
+
+        public DataServiceStreamResponse GetReadStream(object entity, string acceptContentType)
+        {
+            Util.CheckArgumentNotEmpty(acceptContentType, "acceptContentType");
+            DataServiceRequestArgs args = new DataServiceRequestArgs();
+            args.AcceptContentType = acceptContentType;
+            return this.GetReadStream(entity, args);
+        }
+
+        public DataServiceStreamResponse GetReadStream(object entity, DataServiceRequestArgs args)
+        {
+            GetReadStreamResult result = this.CreateGetReadStreamResult(entity, args, null, null);
+            return result.Execute();
+        }
+
+#endif
+        #endregion
+
+        #region SetSaveStream
+
+        public void SetSaveStream(object entity, Stream stream, bool closeStream, string contentType, string slug)
+        {
+            Util.CheckArgumentNull(contentType, "contentType");
+            Util.CheckArgumentNull(slug, "slug");
+
+            DataServiceRequestArgs args = new DataServiceRequestArgs();
+            args.ContentType = contentType;
+            args.Slug = slug;
+            this.SetSaveStream(entity, stream, closeStream, args);
+        }
+
+        public void SetSaveStream(object entity, Stream stream, bool closeStream, DataServiceRequestArgs args)
+        {
+            EntityDescriptor box = this.EnsureContained(entity, "entity");
+            Util.CheckArgumentNull(stream, "stream");
+            Util.CheckArgumentNull(args, "args");
+
+            ClientType clientType = ClientType.Create(entity.GetType());
+            if (clientType.MediaDataMember != null)
+            { 
+                throw new ArgumentException(
+                    Strings.Context_SetSaveStreamOnMediaEntryProperty(clientType.ElementTypeName), 
+                    "entity");
+            }
+
+            box.SaveStream = new DataServiceSaveStream(stream, closeStream, args);
+
+            Debug.Assert(box.State != EntityStates.Detached, "We should never have a detached entity in the entityDescriptor dictionary.");
+            switch (box.State)
+            {
+                case EntityStates.Added:
+                    box.StreamState = StreamStates.Added;
+                    break;
+
+                case EntityStates.Modified:
+                case EntityStates.Unchanged:
+                    box.StreamState = StreamStates.Modified;
+                    break;
+
+                case EntityStates.Deleted:
+                default:
+                    throw new DataServiceClientException(Strings.DataServiceException_GeneralError);
+            }
+
+        }
+
+        #endregion
+
+        #region ExecuteBatch, BeginExecuteBatch, EndExecuteBatch
+
+        public IAsyncResult BeginExecuteBatch(AsyncCallback callback, object state, params DataServiceRequest[] queries)
+        {
+            Util.CheckArgumentNotEmpty(queries, "queries");
+
+            SaveResult result = new SaveResult(this, "ExecuteBatch", queries, SaveChangesOptions.Batch, callback, state, true);
+            result.BatchBeginRequest(false);
+            return result;
+        }
+
+
+        public DataServiceResponse EndExecuteBatch(IAsyncResult asyncResult)
+        {
+            SaveResult result = BaseAsyncResult.EndExecute<SaveResult>(this, "ExecuteBatch", asyncResult);
+            return result.EndRequest();
+        }
+
+#if !ASTORIA_LIGHT 
+        public DataServiceResponse ExecuteBatch(params DataServiceRequest[] queries)
+        {
+            Util.CheckArgumentNotEmpty(queries, "queries");
+
+            SaveResult result = new SaveResult(this, "ExecuteBatch", queries, SaveChangesOptions.Batch, null, null, false);
+            result.BatchRequest(false );
+            return result.EndRequest();
+        }
+#endif
+
+        #endregion
+
+        #region Execute(Uri), BeginExecute(Uri), EndExecute(Uri)
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
+        public IAsyncResult BeginExecute<TElement>(Uri requestUri, AsyncCallback callback, object state)
+        {
+            requestUri = Util.CreateUri(this.baseUriWithSlash, requestUri);
+            QueryComponents qc = new QueryComponents(requestUri, Util.DataServiceVersionEmpty, typeof(TElement), null, null);
+            return (new DataServiceRequest<TElement>(qc, null)).BeginExecute(this, this, callback, state);
+        }
+
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
+        public IAsyncResult BeginExecute<T>(DataServiceQueryContinuation<T> continuation, AsyncCallback callback, object state)
+        {
+            Util.CheckArgumentNull(continuation, "continuation");
+            QueryComponents qc = continuation.CreateQueryComponents();
+            return (new DataServiceRequest<T>(qc, continuation.Plan)).BeginExecute(this, this, callback, state);
+        }
+
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
+        public IEnumerable<TElement> EndExecute<TElement>(IAsyncResult asyncResult)
+        {
+            Util.CheckArgumentNull(asyncResult, "asyncResult");
+            return DataServiceRequest.EndExecute<TElement>(this, this, asyncResult);
+        }
+
+#if !ASTORIA_LIGHT 
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "Type is used to infer result")]
+        public IEnumerable<TElement> Execute<TElement>(Uri requestUri)
+        {
+            requestUri = Util.CreateUri(this.baseUriWithSlash, requestUri);
+            QueryComponents qc = new QueryComponents(requestUri, Util.DataServiceVersionEmpty, typeof(TElement), null, null);
+            DataServiceRequest request = new DataServiceRequest<TElement>(qc, null);
+            return request.Execute<TElement>(this, qc);
+        }
+
+        public QueryOperationResponse<T> Execute<T>(DataServiceQueryContinuation<T> continuation)
+        {
+            Util.CheckArgumentNull(continuation, "continuation");
+            QueryComponents qc = continuation.CreateQueryComponents();
+            DataServiceRequest request = new DataServiceRequest<T>(qc, continuation.Plan);
+            return request.Execute<T>(this, qc);
+        }
+#endif
+        #endregion
+
+        #region SaveChanges, BeginSaveChanges, EndSaveChanges
+
+
+        public IAsyncResult BeginSaveChanges(AsyncCallback callback, object state)
+        {
+            return this.BeginSaveChanges(this.SaveChangesDefaultOptions, callback, state);
+        }
+
+
+        public IAsyncResult BeginSaveChanges(SaveChangesOptions options, AsyncCallback callback, object state)
+        {
+            ValidateSaveChangesOptions(options);
+            SaveResult result = new SaveResult(this, "SaveChanges", null, options, callback, state, true);
+            bool replaceOnUpdate = IsFlagSet(options, SaveChangesOptions.ReplaceOnUpdate);
+            if (IsFlagSet(options, SaveChangesOptions.Batch))
+            {
+                result.BatchBeginRequest(replaceOnUpdate);
+            }
+            else
+            {
+                result.BeginNextChange(replaceOnUpdate); 
+            }
+
+            return result;
+        }
+
+        public DataServiceResponse EndSaveChanges(IAsyncResult asyncResult)
+        {
+            SaveResult result = BaseAsyncResult.EndExecute<SaveResult>(this, "SaveChanges", asyncResult);
+            
+            DataServiceResponse errors = result.EndRequest();
+
+            if (this.ChangesSaved != null)
+            {
+                this.ChangesSaved(this, new SaveChangesEventArgs(errors));
+            }
+
+            return errors;
+        }
+
+#if !ASTORIA_LIGHT
+        public DataServiceResponse SaveChanges()
+        {
+            return this.SaveChanges(this.SaveChangesDefaultOptions);
+        }
+
+ 
+        public DataServiceResponse SaveChanges(SaveChangesOptions options)
+        {
+            DataServiceResponse errors = null;
+            ValidateSaveChangesOptions(options);
+
+            SaveResult result = new SaveResult(this, "SaveChanges", null, options, null, null, false);
+            bool replaceOnUpdate = IsFlagSet(options, SaveChangesOptions.ReplaceOnUpdate);
+            if (IsFlagSet(options, SaveChangesOptions.Batch))
+            {
+                result.BatchRequest(replaceOnUpdate);
+            }
+            else
+            {
+                result.BeginNextChange(replaceOnUpdate);
+            }
+
+            errors = result.EndRequest();
+
+            Debug.Assert(null != errors, "null errors");
+
+            if (this.ChangesSaved != null)
+            {
+                this.ChangesSaved(this, new SaveChangesEventArgs(errors));
+            }
+
+            return errors;
+        }
+#endif
+        #endregion
+
+        #region Add, Attach, Delete, Detach, Update, TryGetEntity, TryGetUri
+
+
+        public void AddLink(object source, string sourceProperty, object target)
+        {
+            this.EnsureRelatable(source, sourceProperty, target, EntityStates.Added);
+
+            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
+            if (this.bindings.ContainsKey(relation))
+            {
+                throw Error.InvalidOperation(Strings.Context_RelationAlreadyContained);
+            }
+
+            relation.State = EntityStates.Added;
+            this.bindings.Add(relation, relation);
+            this.IncrementChange(relation);
+        }
+
+
+        public void AttachLink(object source, string sourceProperty, object target)
+        {
+            this.AttachLink(source, sourceProperty, target, MergeOption.NoTracking);
+        }
+
+
+        public bool DetachLink(object source, string sourceProperty, object target)
+        {
+            Util.CheckArgumentNull(source, "source");
+            Util.CheckArgumentNotEmpty(sourceProperty, "sourceProperty");
+
+            LinkDescriptor existing;
+            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
+            if (!this.bindings.TryGetValue(relation, out existing))
+            {
+                return false;
+            }
+
+            this.DetachExistingLink(existing, false);
+            return true;
+        }
+
+
+        public void DeleteLink(object source, string sourceProperty, object target)
+        {
+            bool delay = this.EnsureRelatable(source, sourceProperty, target, EntityStates.Deleted);
+
+            LinkDescriptor existing = null;
+            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
+            if (this.bindings.TryGetValue(relation, out existing) && (EntityStates.Added == existing.State))
+            {   
+                this.DetachExistingLink(existing, false);
+            }
+            else
+            {
+                if (delay)
+                {  
+                    throw Error.InvalidOperation(Strings.Context_NoRelationWithInsertEnd);
+                }
+
+                if (null == existing)
+                {  
+                    this.bindings.Add(relation, relation);
+                    existing = relation;
+                }
+
+                if (EntityStates.Deleted != existing.State)
+                {
+                    existing.State = EntityStates.Deleted;
+
+
+                    this.IncrementChange(existing);
+                }
+            }
+        }
+
+
+        public void SetLink(object source, string sourceProperty, object target)
+        {
+            this.EnsureRelatable(source, sourceProperty, target, EntityStates.Modified);
+
+            LinkDescriptor relation = this.DetachReferenceLink(source, sourceProperty, target, MergeOption.NoTracking);
+            if (null == relation)
+            {
+                relation = new LinkDescriptor(source, sourceProperty, target);
+                this.bindings.Add(relation, relation);
+            }
+
+            Debug.Assert(
+                0 == relation.State ||
+                IncludeLinkState(relation.State),
+                "set link entity state");
+
+            if (EntityStates.Modified != relation.State)
+            {
+                relation.State = EntityStates.Modified;
+                this.IncrementChange(relation);
+            }
+        }
+
+        #endregion
+
+        #region AddObject, AttachTo, DeleteObject, Detach, TryGetEntity, TryGetUri
+
+        public void AddObject(string entitySetName, object entity)
+        {
+            this.ValidateEntitySetName(ref entitySetName);
+            ValidateEntityType(entity);
+
+            EntityDescriptor resource = new EntityDescriptor(null, null , null , entity, null, null, entitySetName, null, EntityStates.Added);
+
+            try
+            {
+                this.entityDescriptors.Add(entity, resource);
+            }
+            catch (ArgumentException)
+            {
+                throw Error.InvalidOperation(Strings.Context_EntityAlreadyContained);
+            }
+
+            this.IncrementChange(resource);
+        }
+
+
+        public void AddRelatedObject(object source, string sourceProperty, object target)
+        {
+            Util.CheckArgumentNull(source, "source");
+            Util.CheckArgumentNotEmpty(sourceProperty, "propertyName");
+            Util.CheckArgumentNull(target, "target");
+
+
+            ValidateEntityType(source);
+
+            EntityDescriptor sourceResource = this.EnsureContained(source, "source");
+
+    
+            if (sourceResource.State == EntityStates.Deleted)
+            {
+                throw Error.InvalidOperation(Strings.Context_AddRelatedObjectSourceDeleted);
+            }
+
+            ClientType parentType = ClientType.Create(source.GetType());
+            ClientType.ClientProperty property = parentType.GetProperty(sourceProperty, false);
+            if (property.IsKnownType || property.CollectionType == null)
+            {
+                throw Error.InvalidOperation(Strings.Context_AddRelatedObjectCollectionOnly);
+            }
+
+
+            ClientType childType = ClientType.Create(target.GetType());
+            ValidateEntityType(target);
+
+
+            ClientType propertyElementType = ClientType.Create(property.CollectionType);
+            if (!propertyElementType.ElementType.IsAssignableFrom(childType.ElementType))
+            {
+
+                throw Error.Argument(Strings.Context_RelationNotRefOrCollection, "target");
+            }
+
+            EntityDescriptor targetResource = new EntityDescriptor(null, null, null, target, sourceResource, sourceProperty, null , null, EntityStates.Added);
+
+            try
+            {
+                this.entityDescriptors.Add(target, targetResource);
+            }
+            catch (ArgumentException)
+            {
+                throw Error.InvalidOperation(Strings.Context_EntityAlreadyContained);
+            }
+
+
+            LinkDescriptor end = targetResource.GetRelatedEnd();
+            end.State = EntityStates.Added;
+            this.bindings.Add(end, end);
+
+            this.IncrementChange(targetResource);
+        }
+
+
+        public void AttachTo(string entitySetName, object entity)
+        {
+            this.AttachTo(entitySetName, entity, null);
+        }
+
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704", MessageId = "etag", Justification = "represents ETag in request")]
+        public void AttachTo(string entitySetName, object entity, string etag)
+        {
+            this.ValidateEntitySetName(ref entitySetName);
+            Uri editLink = GenerateEditLinkUri(this.baseUriWithSlash, entitySetName, entity);
+
+
+            String identity = Util.ReferenceIdentity(editLink.ToString());
+
+            EntityDescriptor descriptor = new EntityDescriptor(identity, null , editLink, entity, null , null , null , etag, EntityStates.Unchanged);
+            this.InternalAttachEntityDescriptor(descriptor, true);
+        }
+
+
+        public void DeleteObject(object entity)
+        {
+            Util.CheckArgumentNull(entity, "entity");
+
+            EntityDescriptor resource = null;
+            if (!this.entityDescriptors.TryGetValue(entity, out resource))
+            {   
+                throw Error.InvalidOperation(Strings.Context_EntityNotContained);
+            }
+
+            EntityStates state = resource.State;
+            if (EntityStates.Added == state)
+            {  
+                this.DetachResource(resource);
+            }
+            else if (EntityStates.Deleted != state)
+            {
+                Debug.Assert(
+                    IncludeLinkState(state),
+                    "bad state transition to deleted");
+
+
+                resource.State = EntityStates.Deleted;
+                this.IncrementChange(resource);
+            }
+        }
+
+        public bool Detach(object entity)
+        {
+            Util.CheckArgumentNull(entity, "entity");
+
+            EntityDescriptor resource = null;
+            if (this.entityDescriptors.TryGetValue(entity, out resource))
+            {
+                return this.DetachResource(resource);
+            }
+
+            return false;
+        }
+
+
+        public void UpdateObject(object entity)
+        {
+            Util.CheckArgumentNull(entity, "entity");
+
+            EntityDescriptor resource = null;
+            if (!this.entityDescriptors.TryGetValue(entity, out resource))
+            {
+                throw Error.Argument(Strings.Context_EntityNotContained, "entity");
+            }
+
+            if (EntityStates.Unchanged == resource.State)
+            {
+                resource.State = EntityStates.Modified;
+                this.IncrementChange(resource);
+            }
+        }
+
+   public bool TryGetEntity<TEntity>(Uri identity, out TEntity entity) where TEntity : class
+        {
+            entity = null;
+            Util.CheckArgumentNull(identity, "relativeUri");
+
+            EntityStates state;
+
+
+            entity = (TEntity)this.TryGetEntity(Util.ReferenceIdentity(identity.ToString()), null, MergeOption.AppendOnly, out state);
+            return (null != entity);
+        }
+
+
+        public bool TryGetUri(object entity, out Uri identity)
+        {
+            identity = null;
+            Util.CheckArgumentNull(entity, "entity");
+
+            EntityDescriptor resource = null;
+            if ((null != this.identityToDescriptor) &&
+                this.entityDescriptors.TryGetValue(entity, out resource) &&
+                (null != resource.Identity) &&
+                Object.ReferenceEquals(resource, this.identityToDescriptor[resource.Identity]))
+            {
+
+                string identityUri = Util.DereferenceIdentity(resource.Identity);
+                identity = Util.CreateUri(identityUri, UriKind.Absolute);
+            }
+
+            return (null != identity);
+        }
+
+        internal static Exception HandleResponse(
+            HttpStatusCode statusCode,
+            string responseVersion,
+            Func<Stream> getResponseStream,
+            bool throwOnFailure)
+        {
+            InvalidOperationException failure = null;
+            if (!CanHandleResponseVersion(responseVersion))
+            {
+                string description = Strings.Context_VersionNotSupported(
+                    responseVersion,
+                    SerializeSupportedVersions());
+
+                failure = Error.InvalidOperation(description);
+            }
+
+            if (failure == null && !WebUtil.SuccessStatusCode(statusCode))
+            {
+                failure = GetResponseText(getResponseStream, statusCode);
+            }
+
+            if (failure != null && throwOnFailure)
+            {
+                throw failure;
+            }
+
+            return failure;
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031", Justification = "Cache exception so user can examine it later")]
+        internal static DataServiceClientException GetResponseText(Func<Stream> getResponseStream, HttpStatusCode statusCode)
+        {
+            string message = null;
+            using (System.IO.Stream stream = getResponseStream())
+            {
+                if ((null != stream) && stream.CanRead)
+                {
+                    message = new StreamReader(stream).ReadToEnd();
+                }
+            }
+
+            if (String.IsNullOrEmpty(message))
+            {
+                message = statusCode.ToString();
+            }
+
+            return new DataServiceClientException(message, (int)statusCode);
+        }
+
+        internal void AttachIdentity(String identity, Uri selfLink, Uri editLink, object entity, string etag)
+        { 
+            Debug.Assert(null != identity, "must have identity");
+
+            this.EnsureIdentityToResource();
+
+          
+            EntityDescriptor resource = this.entityDescriptors[entity];
+
+            this.DetachResourceIdentity(resource);
+
+           
+            if (resource.IsDeepInsert)
+            {
+                LinkDescriptor end = this.bindings[resource.GetRelatedEnd()];
+                end.State = EntityStates.Unchanged;
+            }
+
+            resource.ETag = etag;
+            resource.Identity = identity; 
+            resource.SelfLink = selfLink;
+            resource.EditLink = editLink;
+
+            resource.State = EntityStates.Unchanged;
+
+
+            this.identityToDescriptor[identity] = resource;
+        }
+
+
+        internal void AttachLocation(object entity, string location)
+        {
+            Debug.Assert(null != entity, "null != entity");
+            Uri editLink = new Uri(location, UriKind.Absolute);
+            String identity = Util.ReferenceIdentity(editLink.ToString());
+
+            this.EnsureIdentityToResource();
+
+            EntityDescriptor resource = this.entityDescriptors[entity];
+            this.DetachResourceIdentity(resource);
+
+
+            if (resource.IsDeepInsert)
+            {
+                LinkDescriptor end = this.bindings[resource.GetRelatedEnd()];
+                end.State = EntityStates.Unchanged;
+            }
+
+            resource.Identity = identity; 
+            resource.EditLink = editLink;
+
+          this.identityToDescriptor[identity] = resource;
+        }
+
+
+        internal void AttachLink(object source, string sourceProperty, object target, MergeOption linkMerge)
+        {
+            this.EnsureRelatable(source, sourceProperty, target, EntityStates.Unchanged);
+
+            LinkDescriptor existing = null;
+            LinkDescriptor relation = new LinkDescriptor(source, sourceProperty, target);
+            if (this.bindings.TryGetValue(relation, out existing))
+            {
+                switch (linkMerge)
+                {
+                    case MergeOption.AppendOnly:
+                        break;
+
+                    case MergeOption.OverwriteChanges:
+                        relation = existing;
+                        break;
+
+                    case MergeOption.PreserveChanges:
+                        if ((EntityStates.Added == existing.State) ||
+                            (EntityStates.Unchanged == existing.State) ||
+                            (EntityStates.Modified == existing.State && null != existing.Target))
+                        {
+                            relation = existing;
+                        }
+
+                        break;
+
+                    case MergeOption.NoTracking: 
+                        throw Error.InvalidOperation(Strings.Context_RelationAlreadyContained);
+                }
+            }
+            else
+            {
+                bool collectionProperty = (null != ClientType.Create(source.GetType()).GetProperty(sourceProperty, false).CollectionType);
+                if (collectionProperty || (null == (existing = this.DetachReferenceLink(source, sourceProperty, target, linkMerge))))
+                {
+                    this.bindings.Add(relation, relation);
+                    this.IncrementChange(relation);
+                }
+                else if (!((MergeOption.AppendOnly == linkMerge) ||
+                           (MergeOption.PreserveChanges == linkMerge && EntityStates.Modified == existing.State)))
+                {
+         
+                    relation = existing;
+                }
+            }
+
+            relation.State = EntityStates.Unchanged;
+        }
+
+
+        internal EntityDescriptor InternalAttachEntityDescriptor(EntityDescriptor descriptor, bool failIfDuplicated)
+        {
+            Debug.Assert((null != descriptor.Identity), "must have identity");
+            Debug.Assert(null != descriptor.Entity && ClientType.Create(descriptor.Entity.GetType()).IsEntityType, "must be entity type to attach");
+
+            this.EnsureIdentityToResource();
+
+            EntityDescriptor resource;
+            this.entityDescriptors.TryGetValue(descriptor.Entity, out resource);
+
+            EntityDescriptor existing;
+            this.identityToDescriptor.TryGetValue(descriptor.Identity, out existing);
+
+            if (failIfDuplicated && (null != resource))
+            {
+                throw Error.InvalidOperation(Strings.Context_EntityAlreadyContained);
+            }
+            else if (resource != existing)
+            {
+                throw Error.InvalidOperation(Strings.Context_DifferentEntityAlreadyContained);
+            }
+            else if (null == resource)
+            {
+                resource = descriptor;
+                
+            
+                this.IncrementChange(descriptor);
+                this.entityDescriptors.Add(descriptor.Entity, descriptor);
+                this.identityToDescriptor.Add(descriptor.Identity, descriptor);
+            }
+
+
+            return resource;
+        }
+
+        #endregion
+
+#if ASTORIA_LIGHT
+
+        internal HttpWebRequest CreateRequest(Uri requestUri, string method, bool allowAnyType, string contentType, Version requestVersion, bool sendChunked)
+        {
+            return CreateRequest(requestUri, method, allowAnyType, contentType, requestVersion, sendChunked, HttpStack.Auto);
+        }
+#endif
+
+#if !ASTORIA_LIGHT
+       
+
+        internal HttpWebRequest CreateRequest(Uri requestUri, string method, bool allowAnyType, string contentType, Version requestVersion, bool sendChunked)
+#else
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "sendChunked", Justification = "common parameter not used in silverlight")]
+        internal HttpWebRequest CreateRequest(Uri requestUri, string method, bool allowAnyType, string contentType, Version requestVersion, bool sendChunked, HttpStack httpStackArg)
+#endif
+        {
+            Debug.Assert(null != requestUri, "request uri is null");
+            Debug.Assert(requestUri.IsAbsoluteUri, "request uri is not absolute uri");
+            Debug.Assert(
+                requestUri.Scheme.Equals("http", StringComparison.OrdinalIgnoreCase) ||
+                    requestUri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase), 
+                "request uri is not for HTTP");
+
+            Debug.Assert(
+                Object.ReferenceEquals(XmlConstants.HttpMethodDelete, method) ||
+                Object.ReferenceEquals(XmlConstants.HttpMethodGet, method) ||
+                Object.ReferenceEquals(XmlConstants.HttpMethodPost, method) ||
+                Object.ReferenceEquals(XmlConstants.HttpMethodPut, method) ||
+                Object.ReferenceEquals(XmlConstants.HttpMethodMerge, method),
+                "unexpected http method string reference");
+
+#if !ASTORIA_LIGHT
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri);
+#else
+            if (httpStackArg == HttpStack.Auto)
+            {
+                httpStackArg = this.httpStack;
+            }
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri, httpStackArg);
+#endif
+
+#if !ASTORIA_LIGHT 
+            if (null != this.Credentials)
+            {
+                request.Credentials = this.Credentials;
+            }
+#endif
+
+#if !ASTORIA_LIGHT 
+            if (0 != this.timeout)
+            {
+                request.Timeout = (int)Math.Min(Int32.MaxValue, new TimeSpan(0, 0, this.timeout).TotalMilliseconds);
+            }
+#endif
+
+#if !ASTORIA_LIGHT 
+            request.KeepAlive = true;
+#endif
+
+#if !ASTORIA_LIGHT 
+            request.UserAgent = "Microsoft ADO.NET Data Services";
+#endif
+
+            if (this.UsePostTunneling &&
+                (!Object.ReferenceEquals(XmlConstants.HttpMethodPost, method)) &&
+                (!Object.ReferenceEquals(XmlConstants.HttpMethodGet, method)))
+            {
+                request.Headers[XmlConstants.HttpXMethod] = method;
+                request.Method = XmlConstants.HttpMethodPost;
+            }
+            else
+            {
+                request.Method = method;
+            }
+
+            if (requestVersion != null && requestVersion.Major > 0)
+            {
+         
+                request.Headers[XmlConstants.HttpDataServiceVersion] = requestVersion.ToString() + Util.VersionSuffix;
+            }
+
+            request.Headers[XmlConstants.HttpMaxDataServiceVersion] = Util.MaxResponseVersion.ToString() + Util.VersionSuffix;
+
+#if !ASTORIA_LIGHT 
+            if (sendChunked)
+            {
+                request.SendChunked = true;
+            }
+#endif
+
+            if (this.SendingRequest != null)
+            {
+                System.Net.WebHeaderCollection requestHeaders;
+#if !ASTORIA_LIGHT
+                requestHeaders = request.Headers;
+                SendingRequestEventArgs args = new SendingRequestEventArgs(request, requestHeaders);
+#else
+                requestHeaders = request.CreateEmptyWebHeaderCollection();
+                SendingRequestEventArgs args = new SendingRequestEventArgs(null, requestHeaders);
+#endif
+                this.SendingRequest(this, args);
+
+#if !ASTORIA_LIGHT
+                if (!Object.ReferenceEquals(args.Request, request))
+                {
+                    request = (System.Net.HttpWebRequest)args.Request;
+                }
+#else
+              
+                foreach (string key in requestHeaders.AllKeys)
+                {
+                    request.Headers[key] = requestHeaders[key];
+                }
+#endif
+            }
+
+            request.Accept = allowAnyType ?
+                    XmlConstants.MimeAny :
+                    (XmlConstants.MimeApplicationAtom + "," + XmlConstants.MimeApplicationXml);
+
+            request.Headers[HttpRequestHeader.AcceptCharset] = XmlConstants.Utf8Encoding;
+
+#if !ASTORIA_LIGHT 
+            bool allowStreamBuffering = false;
+            bool removeXMethod = true;
+#endif
+
+            if (!Object.ReferenceEquals(XmlConstants.HttpMethodGet, method))
+            {
+                Debug.Assert(!String.IsNullOrEmpty(contentType), "Content-Type must be specified for non get operation");
+                request.ContentType = contentType;
+                if (Object.ReferenceEquals(XmlConstants.HttpMethodDelete, method))
+                {
+                    request.ContentLength = 0;
+                }
+#if !ASTORIA_LIGHT 
+                // else
+                {   
+                    allowStreamBuffering = true;
+                }
+#endif
+
+                if (this.UsePostTunneling && (!Object.ReferenceEquals(XmlConstants.HttpMethodPost, method)))
+                {
+                    request.Headers[XmlConstants.HttpXMethod] = method;
+                    method = XmlConstants.HttpMethodPost;
+#if !ASTORIA_LIGHT
+                    removeXMethod = false;
+#endif
+                }
+            }
+            else
+            {
+                Debug.Assert(contentType == null, "Content-Type for get methods should be null");
+            }
+
+#if !ASTORIA_LIGHT 
+            request.AllowWriteStreamBuffering = allowStreamBuffering;
+#endif
+
+            ICollection<string> headers;
+            headers = request.Headers.AllKeys;
+
+#if !ASTORIA_LIGHT  
+            if (headers.Contains(XmlConstants.HttpRequestIfMatch))
+            {
+                request.Headers.Remove(HttpRequestHeader.IfMatch);
+            }
+#endif
+
+#if !ASTORIA_LIGHT  
+            if (removeXMethod && headers.Contains(XmlConstants.HttpXMethod))
+            {
+                request.Headers.Remove(XmlConstants.HttpXMethod);
+            }
+#endif
+
+            request.Method = method;
+            return request;
+        }
+
+
+        internal object TryGetEntity(String resourceUri, string etag, MergeOption merger, out EntityStates state)
+        {
+            Debug.Assert(null != resourceUri, "null uri");
+            state = EntityStates.Detached;
+
+            EntityDescriptor resource = null;
+            if ((null != this.identityToDescriptor) &&
+                 this.identityToDescriptor.TryGetValue(resourceUri, out resource))
+            {
+                state = resource.State;
+                if ((null != etag) && (MergeOption.AppendOnly != merger))
+                {  
+                    resource.ETag = etag;
+                }
+
+                Debug.Assert(null != resource.Entity, "null entity");
+                return resource.Entity;
+            }
+
+            return null;
+        }
+
+
+        internal IEnumerable<LinkDescriptor> GetLinks(object source, string sourceProperty)
+        {
+            return this.bindings.Values.Where(o => (o.Source == source) && (o.SourceProperty == sourceProperty));
+        }
+
+
+        internal Type ResolveTypeFromName(string wireName, Type userType, bool checkAssignable)
+        {
+            Debug.Assert(null != userType, "null != baseType");
+
+            if (String.IsNullOrEmpty(wireName))
+            {
+                return userType;
+            }
+
+            Type payloadType;
+            if (!ClientConvert.ToNamedType(wireName, out payloadType))
+            {
+                payloadType = null;
+
+                Func<string, Type> resolve = this.ResolveType;
+                if (null != resolve)
+                {
+             
+                    payloadType = resolve(wireName);
+                }
+
+                if (null == payloadType)
+                {
+                 
+#if !ASTORIA_LIGHT
+                    payloadType = ClientType.ResolveFromName(wireName, userType);
+#else
+                    payloadType = ClientType.ResolveFromName(wireName, userType, this.GetType());
+#endif
+                }
+
+                if (checkAssignable && (null != payloadType) && (!userType.IsAssignableFrom(payloadType)))
+                {
+          
+                    throw Error.InvalidOperation(Strings.Deserialize_Current(userType, payloadType));
+                }
+            }
+
+            return payloadType ?? userType;
+        }
+
+
+        internal string ResolveNameFromType(Type type)
+        {
+            Debug.Assert(null != type, "null type");
+            Func<Type, string> resolve = this.ResolveName;
+            return ((null != resolve) ? resolve(type) : (String)null);
+        }
+
+
+        internal string GetServerTypeName(EntityDescriptor descriptor)
+        {
+            Debug.Assert(descriptor != null && descriptor.Entity != null, "Null descriptor or no entity in descriptor");
+
+            if (this.resolveName != null)
+            {
+               
+                Type entityType = descriptor.Entity.GetType();
+                var codegenAttr = this.resolveName.Method.GetCustomAttributes(false).OfType<System.CodeDom.Compiler.GeneratedCodeAttribute>().FirstOrDefault();
+                if (codegenAttr == null || codegenAttr.Tool != Util.CodeGeneratorToolName)
+                {
+                   
+                    return this.resolveName(entityType) ?? descriptor.ServerTypeName;
+                }
+                else
+                {
+                    return descriptor.ServerTypeName ?? this.resolveName(entityType);
+                }
+            }
+            else
+            {
+                return descriptor.ServerTypeName;
+            }
+        }
+
+
+        internal void FireReadingEntityEvent(object entity, XElement data)
+        {
+            Debug.Assert(entity != null, "entity != null");
+            Debug.Assert(data != null, "data != null");
+
+            ReadingWritingEntityEventArgs args = new ReadingWritingEntityEventArgs(entity, data);
+            this.ReadingEntity(this, args);
+        }
+
+        #region Ensure
+
+  
+        private static bool IncludeLinkState(EntityStates x)
+        {
+            return ((EntityStates.Modified == x) || (EntityStates.Unchanged == x));
+        }
+
+        #endregion
+
+        private static bool CanHandleResponseVersion(string responseVersion)
+        {
+            if (!String.IsNullOrEmpty(responseVersion))
+            {
+                KeyValuePair<Version, string> version;
+                if (!HttpProcessUtility.TryReadVersion(responseVersion, out version))
+                {
+                    return false;
+                }
+
+                if (!Util.SupportedResponseVersions.Contains(version.Key))
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
+
+        private static string SerializeSupportedVersions()
+        {
+            Debug.Assert(Util.SupportedResponseVersions.Length > 0, "At least one supported version must exist.");
+
+            StringBuilder supportedVersions = new StringBuilder("'").Append(Util.SupportedResponseVersions[0].ToString());
+            for (int versionIdx = 1; versionIdx < Util.SupportedResponseVersions.Length; versionIdx++)
+            {
+                supportedVersions.Append("', '");
+                supportedVersions.Append(Util.SupportedResponseVersions[versionIdx].ToString());
+            }
+
+            supportedVersions.Append("'");
+
+            return supportedVersions.ToString();
+        }
+
+        private static Uri GenerateEditLinkUri(Uri baseUriWithSlash, string entitySetName, object entity)
+        {
+            Debug.Assert(null != baseUriWithSlash && baseUriWithSlash.IsAbsoluteUri && baseUriWithSlash.OriginalString.EndsWith("/", StringComparison.Ordinal), "baseUriWithSlash");
+            Debug.Assert(!String.IsNullOrEmpty(entitySetName) && !entitySetName.StartsWith("/", StringComparison.Ordinal), "entitySetName");
+     
+            ValidateEntityTypeHasKeys(entity);
+
+            StringBuilder builder = new StringBuilder();
+            builder.Append(baseUriWithSlash.AbsoluteUri);
+            builder.Append(entitySetName);
+            builder.Append("(");
+
+            string prefix = String.Empty;
+            ClientType clientType = ClientType.Create(entity.GetType());
+
+            ClientType.ClientProperty[] keys = clientType.Properties.Where<ClientType.ClientProperty>(ClientType.ClientProperty.GetKeyProperty).ToArray();
+            foreach (ClientType.ClientProperty property in keys)
+            {
+#if ASTORIA_OPEN_OBJECT
+                Debug.Assert(!property.OpenObjectProperty, "key property values can't be OpenProperties");
+#endif
+
+                builder.Append(prefix);
+                if (1 < keys.Length)
+                {
+                    builder.Append(property.PropertyName).Append("=");
+                }
+
+                object value = property.GetValue(entity);
+                if (null == value)
+                {
+                    throw Error.InvalidOperation(Strings.Serializer_NullKeysAreNotSupported(property.PropertyName));
+                }
+
+                string converted;
+                if (!ClientConvert.TryKeyPrimitiveToString(value, out converted))
+                {
+                    throw Error.InvalidOperation(Strings.Context_CannotConvertKey(value));
+                }
+
+                builder.Append(System.Uri.EscapeDataString(converted));
+                prefix = ",";
+            }
+
+            builder.Append(")");
+
+            return Util.CreateUri(builder.ToString(), UriKind.Absolute);
+        }
+
+ 
+        private static string GetEntityHttpMethod(EntityStates state, bool replaceOnUpdate)
+        {
+            switch (state)
+            {
+                case EntityStates.Deleted:
+                    return XmlConstants.HttpMethodDelete;
+                case EntityStates.Modified:
+                    if (replaceOnUpdate)
+                    {
+                        return XmlConstants.HttpMethodPut;
+                    }
+                    else
+                    {
+                        return XmlConstants.HttpMethodMerge;
+                    }
+
+                case EntityStates.Added:
+                    return XmlConstants.HttpMethodPost;
+                default:
+                    throw Error.InternalError(InternalError.UnvalidatedEntityState);
+            }
+        }
+
+    
+        private static string GetLinkHttpMethod(LinkDescriptor link)
+        {
+            bool collection = (null != ClientType.Create(link.Source.GetType()).GetProperty(link.SourceProperty, false).CollectionType);
+            if (!collection)
+            {
+                Debug.Assert(EntityStates.Modified == link.State, "not Modified state");
+                if (null == link.Target)
+                {   
+                    return XmlConstants.HttpMethodDelete;
+                }
+                else
+                {   
+                    return XmlConstants.HttpMethodPut;
+                }
+            }
+            else if (EntityStates.Deleted == link.State)
+            {   
+                return XmlConstants.HttpMethodDelete;
+            }
+            else
+            {   
+                Debug.Assert(EntityStates.Added == link.State, "not Added state");
+                return XmlConstants.HttpMethodPost;
+            }
+        }
+
+
+        private static void HandleResponsePost(LinkDescriptor entry)
+        {
+            if (!((EntityStates.Added == entry.State) || (EntityStates.Modified == entry.State && null != entry.Target)))
+            {
+                Error.ThrowBatchUnexpectedContent(InternalError.LinkNotAddedState);
+            }
+
+            entry.State = EntityStates.Unchanged;
+        }
+
+
+        private static void HandleResponsePut(Descriptor entry, string etag)
+        {
+            if (entry.IsResource)
+            {
+                EntityDescriptor descriptor = (EntityDescriptor)entry;
+                if (EntityStates.Modified != descriptor.State && StreamStates.Modified != descriptor.StreamState)
+                {
+                    Error.ThrowBatchUnexpectedContent(InternalError.EntryNotModified);
+                }
+
+                if (descriptor.StreamState == StreamStates.Modified)
+                {
+                    descriptor.StreamETag = etag;
+                    descriptor.StreamState = StreamStates.NoStream;
+                }
+                else
+                {
+                    Debug.Assert(descriptor.State == EntityStates.Modified, "descriptor.State == EntityStates.Modified");
+                    descriptor.ETag = etag;
+                    descriptor.State = EntityStates.Unchanged;
+                }
+            }
+            else
+            {
+                LinkDescriptor link = (LinkDescriptor)entry;
+                if ((EntityStates.Added == entry.State) || (EntityStates.Modified == entry.State))
+                {
+                    link.State = EntityStates.Unchanged;
+                }
+                else if (EntityStates.Detached != entry.State)
+                {   
+                    Error.ThrowBatchUnexpectedContent(InternalError.LinkBadState);
+                }
+            }
+        }
+
+        private static void WriteContentProperty(XmlWriter writer, string namespaceName, ClientType.ClientProperty property, object propertyValue)
+        {
+            writer.WriteStartElement(property.PropertyName, namespaceName);
+
+            string typename = ClientConvert.GetEdmType(property.PropertyType);
+            if (null != typename)
+            {
+                writer.WriteAttributeString(XmlConstants.AtomTypeAttributeName, XmlConstants.DataWebMetadataNamespace, typename);
+            }
+
+            if (null == propertyValue)
+            {   
+                writer.WriteAttributeString(XmlConstants.AtomNullAttributeName, XmlConstants.DataWebMetadataNamespace, XmlConstants.XmlTrueLiteral);
+
+                if (property.KeyProperty)
+                {
+                    throw Error.InvalidOperation(Strings.Serializer_NullKeysAreNotSupported(property.PropertyName));
+                }
+            }
+            else
+            {
+                string convertedValue = ClientConvert.ToString(propertyValue, false );
+                if (0 == convertedValue.Length)
+                {  
+                    writer.WriteAttributeString(XmlConstants.AtomNullAttributeName, XmlConstants.DataWebMetadataNamespace, XmlConstants.XmlFalseLiteral);
+                }
+                else
+                {   
+                    if (Char.IsWhiteSpace(convertedValue[0]) ||
+                        Char.IsWhiteSpace(convertedValue[convertedValue.Length - 1]))
+                    {  
+                        writer.WriteAttributeString(XmlConstants.XmlSpaceAttributeName, XmlConstants.XmlNamespacesNamespace, XmlConstants.XmlSpacePreserveValue);
+                    }
+
+                    writer.WriteValue(convertedValue);
+                }
+            }
+
+            writer.WriteEndElement();
+        }
+
+
+        private static void ValidateEntityType(object entity)
+        {
+            Util.CheckArgumentNull(entity, "entity");
+
+            if (!ClientType.Create(entity.GetType()).IsEntityType)
+            {
+                throw Error.Argument(Strings.Content_EntityIsNotEntityType, "entity");
+            }
+        }
+
+
+        private static void ValidateEntityTypeHasKeys(object entity)
+        {
+            Util.CheckArgumentNull(entity, "entity");
+
+            if (ClientType.Create(entity.GetType()).KeyCount <= 0)
+            {
+                throw Error.Argument(Strings.Content_EntityWithoutKey, "entity");
+            }
+        }
+
+ 
+        private static void ValidateSaveChangesOptions(SaveChangesOptions options)
+        {
+            const SaveChangesOptions All =
+                SaveChangesOptions.ContinueOnError |
+                SaveChangesOptions.Batch |
+                SaveChangesOptions.ReplaceOnUpdate;
+
+            
+            if ((options | All) != All)
+            {
+                throw Error.ArgumentOutOfRange("options");
+            }
+
+    
+            if (IsFlagSet(options, SaveChangesOptions.Batch | SaveChangesOptions.ContinueOnError))
+            {
+                throw Error.ArgumentOutOfRange("options");
+            }
+        }
+
+ 
+        private static bool IsFlagSet(SaveChangesOptions options, SaveChangesOptions flag)
+        {
+            return ((options & flag) == flag);
+        }
+
+        private static void WriteOperationRequestHeaders(StreamWriter writer, string methodName, string uri, Version requestVersion)
+        {
+            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeApplicationHttp);
+            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentTransferEncoding, XmlConstants.BatchRequestContentTransferEncoding);
+            writer.WriteLine();
+
+            writer.WriteLine("{0} {1} {2}", methodName, uri, XmlConstants.HttpVersionInBatching);
+            if (requestVersion != Util.DataServiceVersion1 && requestVersion != Util.DataServiceVersionEmpty)
+            {
+                writer.WriteLine("{0}: {1}{2}", XmlConstants.HttpDataServiceVersion, requestVersion, Util.VersionSuffix);
+            }
+        }
+
+        private static void WriteOperationResponseHeaders(StreamWriter writer, int statusCode)
+        {
+            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeApplicationHttp);
+            writer.WriteLine("{0}: {1}", XmlConstants.HttpContentTransferEncoding, XmlConstants.BatchRequestContentTransferEncoding);
+            writer.WriteLine();
+
+            writer.WriteLine("{0} {1} {2}", XmlConstants.HttpVersionInBatching, statusCode, (HttpStatusCode)statusCode);
+        }
+
+
+        private bool DetachResource(EntityDescriptor resource)
+        {
+          
+            foreach (LinkDescriptor end in this.bindings.Values.Where(resource.IsRelatedEntity).ToList())
+            {
+                this.DetachExistingLink(
+                        end, 
+                        end.Target == resource.Entity && resource.State == EntityStates.Added);
+            }
+
+            resource.ChangeOrder = UInt32.MaxValue;
+            resource.State = EntityStates.Detached;
+            bool flag = this.entityDescriptors.Remove(resource.Entity);
+            Debug.Assert(flag, "should have removed existing entity");
+            this.DetachResourceIdentity(resource);
+
+            return true;
+        }
+
+
+        private void DetachResourceIdentity(EntityDescriptor resource)
+        {
+            EntityDescriptor existing = null;
+            if ((null != resource.Identity) &&
+                this.identityToDescriptor.TryGetValue(resource.Identity, out existing) &&
+                Object.ReferenceEquals(existing, resource))
+            {
+                bool removed = this.identityToDescriptor.Remove(resource.Identity);
+                Debug.Assert(removed, "should have removed existing identity");
+            }
+        }
+
+
+        private HttpWebRequest CreateRequest(LinkDescriptor binding)
+        {
+            Debug.Assert(null != binding, "null binding");
+            if (binding.ContentGeneratedForSave)
+            {
+                return null;
+            }
+
+            EntityDescriptor sourceResource = this.entityDescriptors[binding.Source];
+            EntityDescriptor targetResource = (null != binding.Target) ? this.entityDescriptors[binding.Target] : null;
+
+      
+            if (null == sourceResource.Identity)
+            {
+                Debug.Assert(!binding.ContentGeneratedForSave, "already saved link");
+                binding.ContentGeneratedForSave = true;
+                Debug.Assert(EntityStates.Added == sourceResource.State, "expected added state");
+                throw Error.InvalidOperation(Strings.Context_LinkResourceInsertFailure, sourceResource.SaveError);
+            }
+            else if ((null != targetResource) && (null == targetResource.Identity))
+            {
+                Debug.Assert(!binding.ContentGeneratedForSave, "already saved link");
+                binding.ContentGeneratedForSave = true;
+                Debug.Assert(EntityStates.Added == targetResource.State, "expected added state");
+                throw Error.InvalidOperation(Strings.Context_LinkResourceInsertFailure, targetResource.SaveError);
+            }
+
+            Debug.Assert(null != sourceResource.Identity, "missing sourceResource.Identity");
+            return this.CreateRequest(this.CreateRequestUri(sourceResource, binding), GetLinkHttpMethod(binding), false, XmlConstants.MimeApplicationXml, Util.DataServiceVersion1, false);
+        }
+
+        private Uri CreateRequestUri(EntityDescriptor sourceResource, LinkDescriptor binding)
+        {
+            Uri requestUri = Util.CreateUri(sourceResource.GetResourceUri(this.baseUriWithSlash, false ), this.CreateRequestRelativeUri(binding));
+            return requestUri;
+        }
+
+        private Uri CreateRequestRelativeUri(LinkDescriptor binding)
+        {
+            Uri relative;
+            bool collection = (null != ClientType.Create(binding.Source.GetType()).GetProperty(binding.SourceProperty, false).CollectionType);
+            if (collection && (EntityStates.Added != binding.State))
+            {  
+                Debug.Assert(null != binding.Target, "null target in collection");
+                EntityDescriptor targetResource = this.entityDescriptors[binding.Target];
+
+               Uri navigationPropertyUri = this.BaseUriWithSlash.MakeRelativeUri(DataServiceContext.GenerateEditLinkUri(this.BaseUriWithSlash, binding.SourceProperty, targetResource.Entity));
+
+                
+                relative = Util.CreateUri(XmlConstants.UriLinkSegment + "/" + navigationPropertyUri.OriginalString, UriKind.Relative);
+            }
+            else
+            {   
+                relative = Util.CreateUri(XmlConstants.UriLinkSegment + "/" + binding.SourceProperty, UriKind.Relative);
+            }
+
+            Debug.Assert(!relative.IsAbsoluteUri, "should be relative uri");
+            return relative;
+        }
+
+
+        private void CreateRequestBatch(LinkDescriptor binding, StreamWriter text)
+        {
+            EntityDescriptor sourceResource = this.entityDescriptors[binding.Source];
+            string requestString;
+            if (null != sourceResource.Identity)
+            {
+                requestString = this.CreateRequestUri(sourceResource, binding).AbsoluteUri;
+            }
+            else
+            {
+                Uri relative = this.CreateRequestRelativeUri(binding);
+                requestString = "$" + sourceResource.ChangeOrder.ToString(CultureInfo.InvariantCulture) + "/" + relative.OriginalString;
+            }
+
+            WriteOperationRequestHeaders(text, GetLinkHttpMethod(binding), requestString, Util.DataServiceVersion1);
+            text.WriteLine("{0}: {1}", XmlConstants.HttpContentID, binding.ChangeOrder);
+
+       
+            if ((EntityStates.Added == binding.State) || (EntityStates.Modified == binding.State && (null != binding.Target)))
+            {
+                text.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeApplicationXml);
+            }
+        }
+
+
+        private MemoryStream CreateRequestData(LinkDescriptor binding, bool newline)
+        {
+            Debug.Assert(
+                (binding.State == EntityStates.Added) ||
+                (binding.State == EntityStates.Modified && null != binding.Target),
+                "This method must be called only when a binding is added or put");
+            MemoryStream stream = new MemoryStream();
+            XmlWriter writer = XmlUtil.CreateXmlWriterAndWriteProcessingInstruction(stream, HttpProcessUtility.EncodingUtf8NoPreamble);
+            EntityDescriptor targetResource = this.entityDescriptors[binding.Target];
+
+            #region <uri xmlns="metadata">
+            writer.WriteStartElement(XmlConstants.UriElementName, XmlConstants.DataWebMetadataNamespace);
+
+            string id;
+            if (null != targetResource.Identity)
+            {
+ 
+                id = targetResource.GetResourceUri(this.baseUriWithSlash, false ).OriginalString;
+            }
+            else
+            {
+                id = "$" + targetResource.ChangeOrder.ToString(CultureInfo.InvariantCulture);
+            }
+
+            writer.WriteValue(id);
+            writer.WriteEndElement();
+            #endregion
+
+            writer.Flush();
+
+            if (newline)
+            {
+             
+                for (int kk = 0; kk < NewLine.Length; ++kk)
+                {
+                    stream.WriteByte((byte)NewLine[kk]);
+                }
+            }
+
+
+            stream.Position = 0;
+            return stream;
+        }
+
+
+        private HttpWebRequest CreateRequest(EntityDescriptor box, EntityStates state, bool replaceOnUpdate)
+        {
+            Debug.Assert(null != box && ((EntityStates.Added == state) || (EntityStates.Modified == state) || (EntityStates.Deleted == state)), "unexpected entity ResourceState");
+
+            string httpMethod = GetEntityHttpMethod(state, replaceOnUpdate);
+            Uri requestUri = box.GetResourceUri(this.baseUriWithSlash, false );
+
+            Version requestVersion = ClientType.Create(box.Entity.GetType()).EpmIsV1Compatible ? Util.DataServiceVersion1 : Util.DataServiceVersion2;
+            HttpWebRequest request = this.CreateRequest(requestUri, httpMethod, false, XmlConstants.MimeApplicationAtom, requestVersion, false);
+            if ((null != box.ETag) && ((EntityStates.Deleted == state) || (EntityStates.Modified == state)))
+            {
+                request.Headers.Set(HttpRequestHeader.IfMatch, box.ETag);
+            }
+
+            return request;
+        }
+
+        private void CreateRequestBatch(EntityDescriptor box, StreamWriter text, bool replaceOnUpdate)
+        {
+            Debug.Assert(null != box, "null box");
+            Debug.Assert(null != text, "null text");
+            Debug.Assert(box.State == EntityStates.Added || box.State == EntityStates.Deleted || box.State == EntityStates.Modified, "the entity must be in one of the 3 possible states");
+
+            Uri requestUri = box.GetResourceUri(this.baseUriWithSlash, false);
+
+            Debug.Assert(null != requestUri, "request uri is null");
+            Debug.Assert(requestUri.IsAbsoluteUri, "request uri is not absolute uri");
+
+            Version requestVersion = ClientType.Create(box.Entity.GetType()).EpmIsV1Compatible ? Util.DataServiceVersion1 : Util.DataServiceVersion2;
+            WriteOperationRequestHeaders(text, GetEntityHttpMethod(box.State, replaceOnUpdate), requestUri.AbsoluteUri, requestVersion);
+            text.WriteLine("{0}: {1}", XmlConstants.HttpContentID, box.ChangeOrder);
+            if (EntityStates.Deleted != box.State)
+            {
+                text.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.LinkMimeTypeEntry);
+            }
+
+            if ((null != box.ETag) && (EntityStates.Deleted == box.State || EntityStates.Modified == box.State))
+            {
+                text.WriteLine("{0}: {1}", XmlConstants.HttpRequestIfMatch, box.ETag);
+            }
+        }
+
+
+        private Stream CreateRequestData(EntityDescriptor box, bool newline)
+        {
+            Debug.Assert(null != box, "null box");
+            MemoryStream stream = null;
+            switch (box.State)
+            {
+                case EntityStates.Deleted:
+                    break;
+                case EntityStates.Modified:
+                case EntityStates.Added:
+                    stream = new MemoryStream();
+                    break;
+                default:
+                    Error.ThrowInternalError(InternalError.UnvalidatedEntityState);
+                    break;
+            }
+
+            if (null != stream)
+            {
+                XmlWriter writer;
+                XDocument node = null;
+                if (this.WritingEntity != null)
+                {
+                
+                    node = new XDocument();
+                    writer = node.CreateWriter();
+                }
+                else
+                {
+                    writer = XmlUtil.CreateXmlWriterAndWriteProcessingInstruction(stream, HttpProcessUtility.EncodingUtf8NoPreamble);
+                }
+
+                ClientType type = ClientType.Create(box.Entity.GetType());
+
+                string typeName = this.GetServerTypeName(box);
+
+                #region <entry xmlns="Atom" xmlns:d="DataWeb", xmlns:m="DataWebMetadata">
+                writer.WriteStartElement(XmlConstants.AtomEntryElementName, XmlConstants.AtomNamespace);
+                writer.WriteAttributeString(XmlConstants.DataWebNamespacePrefix, XmlConstants.XmlNamespacesNamespace, this.DataNamespace);
+                writer.WriteAttributeString(XmlConstants.DataWebMetadataNamespacePrefix, XmlConstants.XmlNamespacesNamespace, XmlConstants.DataWebMetadataNamespace);
+
+ 
+                if (!String.IsNullOrEmpty(typeName))
+                {
+                    writer.WriteStartElement(XmlConstants.AtomCategoryElementName, XmlConstants.AtomNamespace);
+                    writer.WriteAttributeString(XmlConstants.AtomCategorySchemeAttributeName, this.typeScheme.OriginalString);
+                    writer.WriteAttributeString(XmlConstants.AtomCategoryTermAttributeName, typeName);
+                    writer.WriteEndElement();
+                }
+
+                if (type.HasEntityPropertyMappings)
+                {
+                    using (EpmSyndicationContentSerializer s = new EpmSyndicationContentSerializer(type.EpmTargetTree, box.Entity, writer))
+                    {
+                        s.Serialize();
+                    }
+                }
+                else
+                {
+                    writer.WriteElementString(XmlConstants.AtomTitleElementName, XmlConstants.AtomNamespace, String.Empty);
+                    writer.WriteStartElement(XmlConstants.AtomAuthorElementName, XmlConstants.AtomNamespace);
+                    writer.WriteElementString(XmlConstants.AtomNameElementName, XmlConstants.AtomNamespace, String.Empty);
+                    writer.WriteEndElement();
+
+                    writer.WriteElementString(XmlConstants.AtomUpdatedElementName, XmlConstants.AtomNamespace, XmlConvert.ToString(DateTime.UtcNow, XmlDateTimeSerializationMode.RoundtripKind));
+                }
+
+                if (EntityStates.Modified == box.State)
+                {
+    
+                    writer.WriteElementString(XmlConstants.AtomIdElementName, Util.DereferenceIdentity(box.Identity));
+                }
+                else
+                {
+                    writer.WriteElementString(XmlConstants.AtomIdElementName, XmlConstants.AtomNamespace, String.Empty);
+                }
+
+                #region <link href=%EditLink% rel=%DataWebRelatedNamespace%%AssociationName% type=application/atom+xml;feed />
+                if (EntityStates.Added == box.State)
+                {
+                    this.CreateRequestDataLinks(box, writer);
+                }
+                #endregion
+
+                #region <content type="application/xml"><m:Properites> or <m:Properties>
+    
+                if (!type.IsMediaLinkEntry && !box.IsMediaLinkEntry)
+                {
+                    writer.WriteStartElement(XmlConstants.AtomContentElementName, XmlConstants.AtomNamespace); 
+                    writer.WriteAttributeString(XmlConstants.AtomTypeAttributeName, XmlConstants.MimeApplicationXml); 
+                }
+
+                writer.WriteStartElement(XmlConstants.AtomPropertiesElementName, XmlConstants.DataWebMetadataNamespace); 
+                bool propertiesWritten;
+                this.WriteContentProperties(writer, type, box.Entity, type.HasEntityPropertyMappings ? type.EpmSourceTree.Root : null, out propertiesWritten);
+
+                writer.WriteEndElement(); 
+
+                if (!type.IsMediaLinkEntry && !box.IsMediaLinkEntry)
+                {
+                    writer.WriteEndElement(); 
+                }
+
+                if (type.HasEntityPropertyMappings)
+                {
+                    using (EpmCustomContentSerializer s = new EpmCustomContentSerializer(type.EpmTargetTree, box.Entity, writer))
+                    {
+                        s.Serialize();
+                    }
+                }
+
+                writer.WriteEndElement();
+                writer.Flush();
+                writer.Close();
+                #endregion
+                #endregion
+
+                if (this.WritingEntity != null)
+                {
+                    ReadingWritingEntityEventArgs args = new ReadingWritingEntityEventArgs(box.Entity, node.Root);
+                    this.WritingEntity(this, args);
+
+                   
+                  
+                    XmlWriterSettings settings = XmlUtil.CreateXmlWriterSettings(HttpProcessUtility.EncodingUtf8NoPreamble);
+                    settings.ConformanceLevel = ConformanceLevel.Auto;
+                    using (XmlWriter streamWriter = XmlWriter.Create(stream, settings))
+                    {
+                        node.Save(streamWriter);
+                    }
+                }
+
+                if (newline)
+                {
+
+                    for (int kk = 0; kk < NewLine.Length; ++kk)
+                    {
+                        stream.WriteByte((byte)NewLine[kk]);
+                    }
+                }
+
+                stream.Position = 0;
+            }
+
+            return stream;
+        }
+
+
+        private void CreateRequestDataLinks(EntityDescriptor box, XmlWriter writer)
+        {
+            Debug.Assert(EntityStates.Added == box.State, "entity not added state");
+
+            ClientType clientType = null;
+            foreach (LinkDescriptor end in this.RelatedLinks(box))
+            {
+                Debug.Assert(!end.ContentGeneratedForSave, "already saved link");
+                end.ContentGeneratedForSave = true;
+
+                if (null == clientType)
+                {
+                    clientType = ClientType.Create(box.Entity.GetType());
+                }
+
+                string typeAttributeValue;
+                if (null != clientType.GetProperty(end.SourceProperty, false).CollectionType)
+                {
+                    typeAttributeValue = XmlConstants.LinkMimeTypeFeed;
+                }
+                else
+                {
+                    typeAttributeValue = XmlConstants.LinkMimeTypeEntry;
+                }
+
+                Debug.Assert(null != end.Target, "null is DELETE");
+                String targetEditLink = this.entityDescriptors[end.Target].EditLink.ToString();
+
+                writer.WriteStartElement(XmlConstants.AtomLinkElementName, XmlConstants.AtomNamespace);
+                writer.WriteAttributeString(XmlConstants.AtomHRefAttributeName, targetEditLink);
+                writer.WriteAttributeString(XmlConstants.AtomLinkRelationAttributeName, XmlConstants.DataWebRelatedNamespace + end.SourceProperty);
+                writer.WriteAttributeString(XmlConstants.AtomTypeAttributeName, typeAttributeValue);
+                writer.WriteEndElement();
+            }
+        }
+
+
+        private void HandleResponseDelete(Descriptor entry)
+        {
+            if (EntityStates.Deleted != entry.State)
+            {
+                Error.ThrowBatchUnexpectedContent(InternalError.EntityNotDeleted);
+            }
+
+            if (entry.IsResource)
+            {
+                EntityDescriptor resource = (EntityDescriptor)entry;
+                this.DetachResource(resource);
+            }
+            else
+            {
+                this.DetachExistingLink((LinkDescriptor)entry, false);
+            }
+        }
+
+        private void HandleResponsePost(EntityDescriptor entry, MaterializeAtom materializer, Uri editLink, string etag)
+        {
+            Debug.Assert(editLink != null, "location header must be specified in POST responses.");
+
+            if (EntityStates.Added != entry.State && StreamStates.Added != entry.StreamState)
+            {
+                Error.ThrowBatchUnexpectedContent(InternalError.EntityNotAddedState);
+            }
+
+            if (materializer == null)
+            {
+               
+                String identity = Util.ReferenceIdentity(editLink.ToString());
+                this.AttachIdentity(identity, null , editLink, entry.Entity, etag);
+            }
+            else
+            {
+                materializer.SetInsertingObject(entry.Entity);
+
+                foreach (object x in materializer)
+                {
+                    Debug.Assert(null != entry.Identity, "updated inserted should always gain an identity");
+                    Debug.Assert(x == entry.Entity, "x == box.Entity, should have same object generated by response");
+                    Debug.Assert(EntityStates.Unchanged == entry.State, "should have moved out of insert");
+                    Debug.Assert((null != this.identityToDescriptor) && this.identityToDescriptor.ContainsKey(entry.Identity), "should have identity tracked");
+
+              
+                    if (entry.EditLink == null)
+                    {
+                        entry.EditLink = editLink;
+                    }
+
+                    if (entry.ETag == null)
+                    {
+                        entry.ETag = etag;
+                    }
+                }
+            }
+
+            foreach (LinkDescriptor end in this.RelatedLinks(entry))
+            {
+                Debug.Assert(0 != end.SaveResultWasProcessed, "link should have been saved with the enty");
+
+        
+                if (IncludeLinkState(end.SaveResultWasProcessed) || end.SaveResultWasProcessed == EntityStates.Added)
+                {
+                    HandleResponsePost(end);
+                }
+            }
+        }
+
+
+        private int SaveResultProcessed(Descriptor entry)
+        {
+      
+            entry.SaveResultWasProcessed = entry.State;
+
+            int count = 0;
+            if (entry.IsResource && (EntityStates.Added == entry.State))
+            {
+                foreach (LinkDescriptor end in this.RelatedLinks((EntityDescriptor)entry))
+                {
+                    Debug.Assert(end.ContentGeneratedForSave, "link should have been saved with the enty");
+                    if (end.ContentGeneratedForSave)
+                    {
+                        Debug.Assert(0 == end.SaveResultWasProcessed, "this link already had a result");
+                        end.SaveResultWasProcessed = end.State;
+                        count++;
+                    }
+                }
+            }
+
+            return count;
+        }
+
+
+        private IEnumerable<LinkDescriptor> RelatedLinks(EntityDescriptor box)
+        {
+            foreach (LinkDescriptor end in this.bindings.Values)
+            {
+                if (end.Source == box.Entity)
+                {
+                    if (null != end.Target)
+                    {   
+                        EntityDescriptor target = this.entityDescriptors[end.Target];
+
+
+                        if (IncludeLinkState(target.SaveResultWasProcessed) || ((0 == target.SaveResultWasProcessed) && IncludeLinkState(target.State)) ||
+                            ((null != target.Identity) && (target.ChangeOrder < box.ChangeOrder) &&
+                             ((0 == target.SaveResultWasProcessed && EntityStates.Added == target.State) ||
+                              (EntityStates.Added == target.SaveResultWasProcessed))))
+                        {
+                            Debug.Assert(box.ChangeOrder < end.ChangeOrder, "saving is out of order");
+                            yield return end;
+                        }
+                    }
+                }
+            }
+        }
+
+        private LoadPropertyResult CreateLoadPropertyRequest(object entity, string propertyName, AsyncCallback callback, object state, Uri requestUri, DataServiceQueryContinuation continuation)
+        {
+            Debug.Assert(continuation == null || requestUri == null, "continuation == null || requestUri == null -- only one or the either (or neither) may be passed in");
+            EntityDescriptor box = this.EnsureContained(entity, "entity");
+            Util.CheckArgumentNotEmpty(propertyName, "propertyName");
+
+            ClientType type = ClientType.Create(entity.GetType());
+            Debug.Assert(type.IsEntityType, "must be entity type to be contained");
+
+            if (EntityStates.Added == box.State)
+            {
+                throw Error.InvalidOperation(Strings.Context_NoLoadWithInsertEnd);
+            }
+
+            ClientType.ClientProperty property = type.GetProperty(propertyName, false);
+            Debug.Assert(null != property, "should have thrown if propertyName didn't exist");
+
+            ProjectionPlan plan;
+            if (continuation == null)
+            {
+                plan = null;
+            }
+            else
+            {
+                plan = continuation.Plan;
+                requestUri = continuation.NextLinkUri;
+            }
+
+            bool mediaLink = (type.MediaDataMember != null && propertyName == type.MediaDataMember.PropertyName);
+            Version requestVersion;
+            if (requestUri == null)
+            {
+                Uri relativeUri;
+                if (mediaLink)
+                {
+                   
+                    relativeUri = Util.CreateUri(XmlConstants.UriValueSegment, UriKind.Relative);
+                }
+                else
+                {
+                    relativeUri = Util.CreateUri(propertyName + (null != property.CollectionType ? "()" : String.Empty), UriKind.Relative);
+                }
+
+                requestUri = Util.CreateUri(box.GetResourceUri(this.baseUriWithSlash, true ), relativeUri);
+                requestVersion = Util.DataServiceVersion1;
+            }
+            else
+            {
+  
+                requestVersion = Util.DataServiceVersionEmpty;
+            }
+
+            HttpWebRequest request = this.CreateRequest(requestUri, XmlConstants.HttpMethodGet, mediaLink, null, requestVersion, false);
+            DataServiceRequest dataServiceRequest = DataServiceRequest.GetInstance(property.PropertyType, requestUri);
+            return new LoadPropertyResult(entity, propertyName, this, request, callback, state, dataServiceRequest, plan);
+        }
+
+
+        private void WriteContentProperties(XmlWriter writer, ClientType type, object resource, EpmSourcePathSegment currentSegment, out bool propertiesWritten)
+        {
+            #region <d:property>value</property>
+            propertiesWritten = false;
+            foreach (ClientType.ClientProperty property in type.Properties)
+            {
+                if (property == type.MediaDataMember ||
+                    (type.MediaDataMember != null &&
+                     type.MediaDataMember.MimeTypeProperty == property))
+                {
+                    continue;
+                }
+
+                object propertyValue = property.GetValue(resource);
+
+                EpmSourcePathSegment matchedSegment = currentSegment != null ? currentSegment.SubProperties.SingleOrDefault(s => s.PropertyName == property.PropertyName) : null;
+
+                if (property.IsKnownType)
+                {
+                    if (propertyValue == null || matchedSegment == null || matchedSegment.EpmInfo.Attribute.KeepInContent)
+                    {
+                        WriteContentProperty(writer, this.DataNamespace, property, propertyValue);
+                        propertiesWritten = true;
+                    }
+                }
+#if ASTORIA_OPEN_OBJECT
+                else if (property.OpenObjectProperty)
+                {
+                    foreach (KeyValuePair<string, object> pair in (IDictionary<string, object>)propertyValue)
+                    {
+                        if ((null == pair.Value) || ClientConvert.IsKnownType(pair.Value.GetType()))
+                        {
+                            Type valueType = pair.Value != null ? pair.Value.GetType() : typeof(string);
+                            ClientType.ClientProperty openProperty = new ClientType.ClientProperty(null, valueType, false, true);
+                            WriteContentProperty(writer, this.DataNamespace, openProperty, pair.Value);
+                            propertiesWritten = true;
+                        }
+                    }
+                }
+#endif
+                else if (null == property.CollectionType)
+                {
+                    ClientType nested = ClientType.Create(property.PropertyType);
+                    if (!nested.IsEntityType)
+                    {
+                        #region complex type
+                        XElement complexProperty = new XElement(((XNamespace)this.DataNamespace) + property.PropertyName);
+                        bool shouldWriteComplexProperty = false;
+                        string typeName = this.ResolveNameFromType(nested.ElementType);
+                        if (!String.IsNullOrEmpty(typeName))
+                        {
+                            complexProperty.Add(new XAttribute(((XNamespace)XmlConstants.DataWebMetadataNamespace) + XmlConstants.AtomTypeAttributeName, typeName));
+                        }
+                        
+           
+                        if (null == propertyValue)
+                        {
+                            complexProperty.Add(new XAttribute(((XNamespace)XmlConstants.DataWebMetadataNamespace) + XmlConstants.AtomNullAttributeName, XmlConstants.XmlTrueLiteral));
+                            shouldWriteComplexProperty = true;
+                        }
+                        else
+                        {
+                            using (XmlWriter complexPropertyWriter = complexProperty.CreateWriter())
+                            {
+                                this.WriteContentProperties(complexPropertyWriter, nested, propertyValue, matchedSegment, out shouldWriteComplexProperty);
+                            }
+                        }
+
+                        if (shouldWriteComplexProperty)
+                        {
+                            complexProperty.WriteTo(writer);
+                            propertiesWritten = true;
+                        }
+                        #endregion
+                    }
+                }
+            }
+            #endregion
+        }
+
+
+        private void DetachExistingLink(LinkDescriptor existingLink, bool targetDelete)
+        {
+     
+            if (existingLink.Target != null)
+            {
+              
+                EntityDescriptor targetResource = this.entityDescriptors[existingLink.Target];
+                
+    
+                if (targetResource.IsDeepInsert && !targetDelete)
+                {
+                    EntityDescriptor parentOfTarget = targetResource.ParentForInsert;
+                    if (Object.ReferenceEquals(targetResource.ParentEntity, existingLink.Source) && 
+                       (parentOfTarget.State != EntityStates.Deleted || 
+                        parentOfTarget.State != EntityStates.Detached))
+                    {
+                        throw new InvalidOperationException(Strings.Context_ChildResourceExists);
+                    }
+                }
+            }
+        
+            if (this.bindings.Remove(existingLink))
+            {   
+                existingLink.State = EntityStates.Detached;
+            }
+        }
+
+
+        private LinkDescriptor DetachReferenceLink(object source, string sourceProperty, object target, MergeOption linkMerge)
+        {
+            LinkDescriptor existing = this.GetLinks(source, sourceProperty).FirstOrDefault();
+            if (null != existing)
+            {
+                if ((target == existing.Target) ||
+                    (MergeOption.AppendOnly == linkMerge) ||
+                    (MergeOption.PreserveChanges == linkMerge && EntityStates.Modified == existing.State))
+                {
+                    return existing;
+                }
+
+                this.DetachExistingLink(existing, false);
+                Debug.Assert(!this.bindings.Values.Any(o => (o.Source == source) && (o.SourceProperty == sourceProperty)), "only expecting one");
+            }
+
+            return null;
+        }
+
+
+        private EntityDescriptor EnsureContained(object resource, string parameterName)
+        {
+            Util.CheckArgumentNull(resource, parameterName);
+
+            EntityDescriptor box = null;
+            if (!this.entityDescriptors.TryGetValue(resource, out box))
+            {
+                throw Error.InvalidOperation(Strings.Context_EntityNotContained);
+            }
+
+            return box;
+        }
+
+         private bool EnsureRelatable(object source, string sourceProperty, object target, EntityStates state)
+        {
+            EntityDescriptor sourceResource = this.EnsureContained(source, "source");
+            EntityDescriptor targetResource = null;
+            if ((null != target) || ((EntityStates.Modified != state) && (EntityStates.Unchanged != state)))
+            {
+                targetResource = this.EnsureContained(target, "target");
+            }
+
+            Util.CheckArgumentNotEmpty(sourceProperty, "sourceProperty");
+
+            ClientType type = ClientType.Create(source.GetType());
+            Debug.Assert(type.IsEntityType, "should be enforced by just adding an object");
+
+     
+            ClientType.ClientProperty property = type.GetProperty(sourceProperty, false);
+
+            if (property.IsKnownType)
+            {
+                throw Error.InvalidOperation(Strings.Context_RelationNotRefOrCollection);
+            }
+
+            if ((EntityStates.Unchanged == state) && (null == target) && (null != property.CollectionType))
+            {
+                targetResource = this.EnsureContained(target, "target");
+            }
+
+            if (((EntityStates.Added == state) || (EntityStates.Deleted == state)) && (null == property.CollectionType))
+            {
+                throw Error.InvalidOperation(Strings.Context_AddLinkCollectionOnly);
+            }
+            else if ((EntityStates.Modified == state) && (null != property.CollectionType))
+            {
+                throw Error.InvalidOperation(Strings.Context_SetLinkReferenceOnly);
+            }
+
+             type = ClientType.Create(property.CollectionType ?? property.PropertyType);
+            Debug.Assert(type.IsEntityType, "should be enforced by just adding an object");
+
+            if ((null != target) && !type.ElementType.IsInstanceOfType(target))
+            {
+                throw Error.Argument(Strings.Context_RelationNotRefOrCollection, "target");
+            }
+
+            if ((EntityStates.Added == state) || (EntityStates.Unchanged == state))
+            {
+                if ((sourceResource.State == EntityStates.Deleted) ||
+                    ((targetResource != null) && (targetResource.State == EntityStates.Deleted)))
+                {
+                    throw Error.InvalidOperation(Strings.Context_NoRelationWithDeleteEnd);
+                }
+            }
+
+            if ((EntityStates.Deleted == state) || (EntityStates.Unchanged == state))
+            {
+                if ((sourceResource.State == EntityStates.Added) ||
+                    ((targetResource != null) && (targetResource.State == EntityStates.Added)))
+                {
+                    if (EntityStates.Deleted == state)
+                    {
+                        return true;
+                    }
+
+                    throw Error.InvalidOperation(Strings.Context_NoRelationWithInsertEnd);
+                }
+            }
+
+            return false;
+        }
+
+        private void ValidateEntitySetName(ref string entitySetName)
+        {
+            Util.CheckArgumentNotEmpty(entitySetName, "entitySetName");
+            entitySetName = entitySetName.Trim(Util.ForwardSlash);
+
+            Util.CheckArgumentNotEmpty(entitySetName, "entitySetName");
+
+            Uri tmp = Util.CreateUri(entitySetName, UriKind.RelativeOrAbsolute);
+            if (tmp.IsAbsoluteUri ||
+                !String.IsNullOrEmpty(Util.CreateUri(this.baseUriWithSlash, tmp)
+                                     .GetComponents(UriComponents.Query | UriComponents.Fragment, UriFormat.SafeUnescaped)))
+            {
+                throw Error.Argument(Strings.Context_EntitySetName, "entitySetName");
+            }
+        }
+
+        private void EnsureIdentityToResource()
+        {
+            if (null == this.identityToDescriptor)
+            {
+                System.Threading.Interlocked.CompareExchange(ref this.identityToDescriptor, new Dictionary<String, EntityDescriptor>(EqualityComparer<String>.Default), null);
+            }
+        }
+
+        private void IncrementChange(Descriptor descriptor)
+        {
+            descriptor.ChangeOrder = ++this.nextChange;
+        }
+
+        private GetReadStreamResult CreateGetReadStreamResult(
+            object entity, 
+            DataServiceRequestArgs args,
+            AsyncCallback callback, 
+            object state)
+        {
+            EntityDescriptor box = this.EnsureContained(entity, "entity");
+            Util.CheckArgumentNull(args, "args");
+
+            Uri requestUri = box.GetMediaResourceUri(this.baseUriWithSlash);
+            if (requestUri == null)
+            {
+                throw new ArgumentException(Strings.Context_EntityNotMediaLinkEntry, "entity");
+            }
+
+#if ASTORIA_LIGHT
+           HttpWebRequest request = this.CreateRequest(requestUri, XmlConstants.HttpMethodGet, true, null, null, false, HttpStack.ClientHttp);
+#else
+            HttpWebRequest request = this.CreateRequest(requestUri, XmlConstants.HttpMethodGet, true, null, null, false);
+#endif
+
+            WebUtil.ApplyHeadersToRequest(args.Headers, request, false);
+
+            return new GetReadStreamResult(this, "GetReadStream", request, callback, state);
+        }
+
+        internal class DataServiceSaveStream
+        {
+            private readonly Stream stream;
+
+             private readonly bool close;
+
+            private readonly DataServiceRequestArgs args;
+
+             internal DataServiceSaveStream(Stream stream, bool close, DataServiceRequestArgs args)
+            {
+                Debug.Assert(stream != null, "stream must not be null.");
+
+                this.stream = stream;
+                this.close = close;
+                this.args = args;
+            }
+
+            internal Stream Stream
+            {
+                get 
+                {
+                    return this.stream;
+                }
+            }
+
+            internal DataServiceRequestArgs Args
+            {
+                get { return this.args; }
+            }
+
+            internal void Close()
+            {
+                if (this.stream != null && this.close)
+                {
+                    this.stream.Close();
+                }
+            }
+        }
+
+        private class LoadPropertyResult : QueryResult
+        {
+            #region Private fields.
+
+            private readonly object entity;
+
+            private readonly ProjectionPlan plan;
+
+            private readonly string propertyName;
+
+            #endregion Private fields.
+
+            internal LoadPropertyResult(object entity, string propertyName, DataServiceContext context, HttpWebRequest request, AsyncCallback callback, object state, DataServiceRequest dataServiceRequest, ProjectionPlan plan)
+                : base(context, "LoadProperty", dataServiceRequest, request, callback, state)
+            {
+                this.entity = entity;
+                this.propertyName = propertyName;
+                this.plan = plan;
+            }
+
+            internal QueryOperationResponse LoadProperty()
+            {
+                MaterializeAtom results = null;
+
+                DataServiceContext context = (DataServiceContext)this.Source;
+
+                ClientType type = ClientType.Create(this.entity.GetType());
+                Debug.Assert(type.IsEntityType, "must be entity type to be contained");
+
+                EntityDescriptor box = context.EnsureContained(this.entity, "entity");
+
+                if (EntityStates.Added == box.State)
+                {
+                    throw Error.InvalidOperation(Strings.Context_NoLoadWithInsertEnd);
+                }
+
+                ClientType.ClientProperty property = type.GetProperty(this.propertyName, false);
+                Type elementType = property.CollectionType ?? property.NullablePropertyType;
+                try
+                {
+                    if (type.MediaDataMember == property)
+                    {
+                        results = this.ReadPropertyFromRawData(property);
+                    }
+                    else
+                    {
+                        results = this.ReadPropertyFromAtom(box, property);
+                    }
+                    
+                    return this.GetResponseWithType(results, elementType);
+                }
+                catch (InvalidOperationException ex)
+                {
+                    QueryOperationResponse response = this.GetResponseWithType(results, elementType);
+                    if (response != null)
+                    {
+                        response.Error = ex;
+                        throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, response);
+                    }
+
+                    throw;
+                }
+            }
+
+            private static byte[] ReadByteArrayWithContentLength(Stream responseStream, int totalLength)
+            {
+                byte[] buffer = new byte[totalLength];
+                int read = 0;
+                while (read < totalLength)
+                {
+                    int r = responseStream.Read(buffer, read, totalLength - read);
+                    if (r <= 0)
+                    {
+                        throw Error.InvalidOperation(Strings.Context_UnexpectedZeroRawRead);
+                    }
+
+                    read += r;
+                }
+
+                return buffer;
+            }
+
+            private static byte[] ReadByteArrayChunked(Stream responseStream)
+            {
+                byte[] completeBuffer = null;
+                using (MemoryStream m = new MemoryStream())
+                {
+                    byte[] buffer = new byte[4096];
+                    int numRead = 0;
+                    int totalRead = 0;
+                    while (true)
+                    {
+                        numRead = responseStream.Read(buffer, 0, buffer.Length);
+                        if (numRead <= 0)
+                        {
+                            break;
+                        }
+
+                        m.Write(buffer, 0, numRead);
+                        totalRead += numRead;
+                    }
+
+                    completeBuffer = new byte[totalRead];
+                    m.Position = 0;
+                    numRead = m.Read(completeBuffer, 0, completeBuffer.Length);
+                }
+
+                return completeBuffer;
+            }
+
+            private MaterializeAtom ReadPropertyFromAtom(EntityDescriptor box, ClientType.ClientProperty property)
+            {
+                DataServiceContext context = (DataServiceContext)this.Source;
+
+                bool merging = context.ApplyingChanges;
+
+                try
+                {
+                    context.ApplyingChanges = true;
+
+                    bool deletedState = (EntityStates.Deleted == box.State);
+
+                    Type nestedType;
+#if ASTORIA_OPEN_OBJECT
+                if (property.OpenObjectProperty)
+                {
+                    nestedType = typeof(OpenObject);
+                }
+                else
+#endif
+                    {
+                        nestedType = property.CollectionType ?? property.NullablePropertyType;
+                    }
+
+                    ClientType clientType = ClientType.Create(nestedType);
+
+                    bool setNestedValue = false;
+                    object collection = this.entity;
+                    if (null != property.CollectionType)
+                    {   collection = property.GetValue(this.entity);
+                        if (null == collection)
+                        {
+                            setNestedValue = true;
+                            if (BindingEntityInfo.IsDataServiceCollection(property.PropertyType))
+                            {
+                                Debug.Assert(WebUtil.GetDataServiceCollectionOfT(nestedType) != null, "DataServiceCollection<> must be available here.");
+
+                                collection = Activator.CreateInstance(
+                                    WebUtil.GetDataServiceCollectionOfT(nestedType), 
+                                    null,
+                                    TrackingMode.None);
+                            }
+                            else
+                            {
+                                collection = Activator.CreateInstance(typeof(List<>).MakeGenericType(nestedType));
+                            }
+                        }
+                    }
+
+                    Type elementType = property.CollectionType ?? property.NullablePropertyType;
+                    IList results = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType));
+
+                    DataServiceQueryContinuation continuation = null;
+
+                    using (MaterializeAtom materializer = this.GetMaterializer(context, this.plan))
+                    {
+                        Debug.Assert(materializer != null, "materializer != null -- otherwise GetMaterializer() returned null rather than empty");
+                        int count = 0;
+#if ASTORIA_OPEN_OBJECT
+                        object openProperties = null;
+#endif
+                        foreach (object child in materializer)
+                        {
+                            results.Add(child);
+                            count++;
+#if ASTORIA_OPEN_OBJECT
+                            property.SetValue(collection, child, this.propertyName, ref openProperties, true);
+#else
+                            property.SetValue(collection, child, this.propertyName, true);
+#endif
+
+                            if ((null != child) && (MergeOption.NoTracking != materializer.MergeOptionValue) && clientType.IsEntityType)
+                            {
+                                if (deletedState)
+                                {
+                                    context.DeleteLink(this.entity, this.propertyName, child);
+                                }
+                                else
+                                {   context.AttachLink(this.entity, this.propertyName, child, materializer.MergeOptionValue);
+                                }
+                            }
+                        }
+
+                        continuation = materializer.GetContinuation(null);
+                        Util.SetNextLinkForCollection(collection, continuation);
+
+                    }
+
+                    if (setNestedValue)
+                    {
+#if ASTORIA_OPEN_OBJECT
+                    object openProperties = null;
+                    property.SetValue(this.entity, collection, this.propertyName, ref openProperties, false);
+#else
+                        property.SetValue(this.entity, collection, this.propertyName, false);
+#endif
+                    }
+
+                    return MaterializeAtom.CreateWrapper(results, continuation);
+                }
+                finally
+                {
+                    context.ApplyingChanges = merging;
+                }
+            }
+
+           private MaterializeAtom ReadPropertyFromRawData(ClientType.ClientProperty property)
+            {
+                DataServiceContext context = (DataServiceContext)this.Source;
+
+                bool merging = context.ApplyingChanges;
+
+                try
+                {
+                    context.ApplyingChanges = true;
+
+#if ASTORIA_OPEN_OBJECT
+                object openProps = null;
+#endif
+                    string mimeType = null;
+                    Encoding encoding = null;
+                    Type elementType = property.CollectionType ?? property.NullablePropertyType;
+                    IList results = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType));
+                    HttpProcessUtility.ReadContentType(this.ContentType, out mimeType, out encoding);
+
+                    using (Stream responseStream = this.GetResponseStream())
+                    {
+                        if (property.PropertyType == typeof(byte[]))
+                        {
+                            int total = checked((int)this.ContentLength);
+                            byte[] buffer = null;
+                            if (total >= 0)
+                            {
+                                buffer = LoadPropertyResult.ReadByteArrayWithContentLength(responseStream, total);
+                            }
+                            else
+                            {
+                                buffer = LoadPropertyResult.ReadByteArrayChunked(responseStream);
+                            }
+
+                            results.Add(buffer);
+#if ASTORIA_OPEN_OBJECT
+                            property.SetValue(this.entity, buffer, this.propertyName, ref openProps, false);
+#else
+                            property.SetValue(this.entity, buffer, this.propertyName, false);
+#endif
+                        }
+                        else
+                        {
+                            StreamReader reader = new StreamReader(responseStream, encoding);
+                            object convertedValue = property.PropertyType == typeof(string) ?
+                                                        reader.ReadToEnd() :
+                                                        ClientConvert.ChangeType(reader.ReadToEnd(), property.PropertyType);
+                            results.Add(convertedValue);
+#if ASTORIA_OPEN_OBJECT
+                            property.SetValue(this.entity, convertedValue, this.propertyName, ref openProps, false);
+#else
+                            property.SetValue(this.entity, convertedValue, this.propertyName, false);
+#endif
+                        }
+                    }
+
+#if ASTORIA_OPEN_OBJECT
+                Debug.Assert(openProps == null, "These should not be set in this path");
+#endif
+                    if (property.MimeTypeProperty != null)
+                    {
+                       
+#if ASTORIA_OPEN_OBJECT
+                    property.MimeTypeProperty.SetValue(this.entity, mimeType, null, ref openProps, false);
+                    Debug.Assert(openProps == null, "These should not be set in this path");
+#else
+                        property.MimeTypeProperty.SetValue(this.entity, mimeType, null, false);
+#endif
+                    }
+
+                    return MaterializeAtom.CreateWrapper(results);
+                }
+                finally
+                {
+                    context.ApplyingChanges = merging;
+                }
+            }
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "Pending")]
+        private class SaveResult : BaseAsyncResult
+        {
+            private readonly DataServiceContext Context;
+
+           private readonly List<Descriptor> ChangedEntries;
+
+            private readonly DataServiceRequest[] Queries;
+
+            private readonly List<OperationResponse> Responses;
+
+             private readonly string batchBoundary;
+
+            private readonly SaveChangesOptions options;
+
+            private readonly bool executeAsync;
+
+             private int changesCompleted;
+
+            private PerRequest request;
+
+            private HttpWebResponse batchResponse;
+
+            private Stream httpWebResponseStream;
+
+            private DataServiceResponse service;
+
+            private int entryIndex = -1;
+
+           private bool processingMediaLinkEntry;
+
+            private bool processingMediaLinkEntryPut;
+
+            private Stream mediaResourceRequestStream;
+
+            private BatchStream responseBatchStream;
+
+            private byte[] buildBatchBuffer;
+
+            private StreamWriter buildBatchWriter;
+
+            private long copiedContentLength;
+
+            private string changesetBoundary;
+
+            private bool changesetStarted;
+
+            #region constructors
+            internal SaveResult(DataServiceContext context, string method, DataServiceRequest[] queries, SaveChangesOptions options, AsyncCallback callback, object state, bool async)
+                : base(context, method, callback, state)
+            {
+                this.executeAsync = async;
+                this.Context = context;
+                this.Queries = queries;
+                this.options = options;
+
+                this.Responses = new List<OperationResponse>();
+
+                if (null == queries)
+                {
+                    #region changed entries
+                    this.ChangedEntries = context.entityDescriptors.Values.Cast<Descriptor>()
+                                          .Union(context.bindings.Values.Cast<Descriptor>())
+                                          .Where(o => o.IsModified && o.ChangeOrder != UInt32.MaxValue)
+                                          .OrderBy(o => o.ChangeOrder)
+                                          .ToList();
+
+                    foreach (Descriptor e in this.ChangedEntries)
+                    {
+                        e.ContentGeneratedForSave = false;
+                        e.SaveResultWasProcessed = 0;
+                        e.SaveError = null;
+
+                        if (!e.IsResource)
+                        {
+                            object target = ((LinkDescriptor)e).Target;
+                            if (null != target)
+                            {
+                                Descriptor f = context.entityDescriptors[target];
+                                if (EntityStates.Unchanged == f.State)
+                                {
+                                    f.ContentGeneratedForSave = false;
+                                    f.SaveResultWasProcessed = 0;
+                                    f.SaveError = null;
+                                }
+                            }
+                        }
+                    }
+                    #endregion
+                }
+                else
+                {
+                    this.ChangedEntries = new List<Descriptor>();
+                }
+
+                if (IsFlagSet(options, SaveChangesOptions.Batch))
+                {
+                    this.batchBoundary = XmlConstants.HttpMultipartBoundaryBatch + "_" + Guid.NewGuid().ToString();
+                }
+                else
+                {
+                    this.batchBoundary = XmlConstants.HttpMultipartBoundaryBatchResponse + "_" + Guid.NewGuid().ToString();
+                    this.DataServiceResponse = new DataServiceResponse(null, -1, this.Responses, false );
+                }
+            }
+            #endregion constructor
+
+            #region end
+
+            internal DataServiceResponse DataServiceResponse
+            {
+                get
+                {
+                    return this.service;
+                }
+
+                set
+                {
+                    this.service = value;
+                }
+            }
+
+            internal DataServiceResponse EndRequest()
+            {
+                foreach (EntityDescriptor box in this.ChangedEntries.Where(e => e.IsResource).Cast<EntityDescriptor>())
+                {
+                    box.CloseSaveStream();
+                }
+
+                if ((null != this.responseBatchStream) || (null != this.httpWebResponseStream))
+                {
+                    this.HandleBatchResponse();
+                }
+
+                return this.DataServiceResponse;
+            }
+
+            #endregion
+
+            #region start a batch
+
+            internal void BatchBeginRequest(bool replaceOnUpdate)
+            {
+                PerRequest pereq = null;
+                try
+                {
+                    MemoryStream memory = this.GenerateBatchRequest(replaceOnUpdate);
+                    if (null != memory)
+                    {
+                        HttpWebRequest httpWebRequest = this.CreateBatchRequest(memory);
+                        this.Abortable = httpWebRequest;
+
+                        this.request = pereq = new PerRequest();
+                        pereq.Request = httpWebRequest;
+                        pereq.RequestContentStream = new PerRequest.ContentStream(memory, true);
+
+                        this.httpWebResponseStream = new MemoryStream();
+
+                        IAsyncResult asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetRequestStream, this.AsyncEndGetRequestStream, pereq);
+                        pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
+                    }
+                    else
+                    {
+                        Debug.Assert(this.CompletedSynchronously, "completedSynchronously");
+                        Debug.Assert(this.IsCompletedInternally, "completed");
+                    }
+                }
+                catch (Exception e)
+                {
+                    this.HandleFailure(pereq, e);
+                    throw; 
+                }
+                finally
+                {
+                    this.HandleCompleted(pereq); 
+                }
+
+                Debug.Assert((this.CompletedSynchronously && this.IsCompleted) || !this.CompletedSynchronously, "sync without complete");
+            }
+
+#if !ASTORIA_LIGHT 
+            internal void BatchRequest(bool replaceOnUpdate)
+            {
+                MemoryStream memory = this.GenerateBatchRequest(replaceOnUpdate);
+                if ((null != memory) && (0 < memory.Length))
+                {
+                    HttpWebRequest httpWebRequest = this.CreateBatchRequest(memory);
+                    using (System.IO.Stream requestStream = httpWebRequest.GetRequestStream())
+                    {
+                        byte[] buffer = memory.GetBuffer();
+                        int bufferOffset = checked((int)memory.Position);
+                        int bufferLength = checked((int)memory.Length) - bufferOffset;
+
+                       requestStream.Write(buffer, bufferOffset, bufferLength);
+                    }
+
+                    HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
+                    this.batchResponse = httpWebResponse;
+
+                    if (null != httpWebResponse)
+                    {
+                        this.httpWebResponseStream = httpWebResponse.GetResponseStream();
+                    }
+                }
+            }
+#endif
+            #endregion
+
+            #region start a non-batch requests
+            internal void BeginNextChange(bool replaceOnUpdate)
+            {
+                Debug.Assert(!this.IsCompletedInternally, "why being called if already completed?");
+
+                PerRequest pereq = null;
+                IAsyncResult asyncResult = null;
+                do
+                {
+                    HttpWebRequest httpWebRequest = null;
+                    HttpWebResponse response = null;
+                    try
+                    {
+                        if (null != this.request)
+                        {
+                            this.SetCompleted();
+                            Error.ThrowInternalError(InternalError.InvalidBeginNextChange);
+                        }
+
+                        this.Abortable = httpWebRequest = this.CreateNextRequest(replaceOnUpdate);
+                        if ((null != httpWebRequest) || (this.entryIndex < this.ChangedEntries.Count))
+                        {
+                            if (this.ChangedEntries[this.entryIndex].ContentGeneratedForSave)
+                            {
+                                Debug.Assert(this.ChangedEntries[this.entryIndex] is LinkDescriptor, "only expected RelatedEnd to presave");
+                                Debug.Assert(
+                                    this.ChangedEntries[this.entryIndex].State == EntityStates.Added ||
+                                    this.ChangedEntries[this.entryIndex].State == EntityStates.Modified,
+                                    "only expected added to presave");
+                                continue;
+                            }
+
+                            PerRequest.ContentStream contentStream = this.CreateChangeData(this.entryIndex, false);
+                            if (this.executeAsync)
+                            {
+                                #region async
+                                this.request = pereq = new PerRequest();
+                                pereq.Request = httpWebRequest;
+
+                                if (null == contentStream || null == contentStream.Stream)
+                                {
+                                    asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetResponse, this.AsyncEndGetResponse, pereq);
+                                }
+                                else
+                                {
+                                    if (contentStream.IsKnownMemoryStream)
+                                    {
+                                        httpWebRequest.ContentLength = contentStream.Stream.Length - contentStream.Stream.Position;
+                                    }
+
+                                    pereq.RequestContentStream = contentStream;
+                                    asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetRequestStream, this.AsyncEndGetRequestStream, pereq);
+                                }
+
+                                pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
+                                this.CompletedSynchronously &= asyncResult.CompletedSynchronously;
+                                #endregion
+                            }
+#if !ASTORIA_LIGHT 
+                            else
+                            {
+                                #region sync
+                                if (null != contentStream && null != contentStream.Stream)
+                                {
+                                    if (contentStream.IsKnownMemoryStream)
+                                    {
+                                        httpWebRequest.ContentLength = contentStream.Stream.Length - contentStream.Stream.Position;
+                                    }
+
+                                    using (Stream stream = httpWebRequest.GetRequestStream())
+                                    {
+                                        byte[] buffer = new byte[64 * 1024];
+                                        int read;
+                                        do
+                                        {
+                                            read = contentStream.Stream.Read(buffer, 0, buffer.Length);
+                                            if (read > 0)
+                                            {
+                                                stream.Write(buffer, 0, read);
+                                            }
+                                        }
+                                        while (read > 0);
+                                    }
+                                }
+
+                                response = (HttpWebResponse)httpWebRequest.GetResponse();
+                                if (!this.processingMediaLinkEntry)
+                                {
+                                    this.changesCompleted++;
+                                }
+
+                                this.HandleOperationResponse(response);
+                                this.HandleOperationResponseData(response);
+                                this.HandleOperationEnd();
+                                this.request = null;
+                                #endregion
+                            }
+#endif
+                        }
+                        else
+                        {
+                            this.SetCompleted();
+
+                            if (this.CompletedSynchronously)
+                            {
+                                this.HandleCompleted(pereq);
+                            }
+                        }
+                    }
+                    catch (InvalidOperationException e)
+                    {
+                        WebUtil.GetHttpWebResponse(e, ref response);
+                        this.HandleOperationException(e, response);
+                        this.HandleCompleted(pereq);
+                    }
+                    finally
+                    {
+                        if (null != response)
+                        {
+                            response.Close();
+                        }
+                    }
+
+                   
+                }
+                while (((null == pereq) || (pereq.RequestCompleted && asyncResult != null && asyncResult.CompletedSynchronously)) && !this.IsCompletedInternally);
+
+                Debug.Assert(this.executeAsync || this.CompletedSynchronously, "sync !CompletedSynchronously");
+                Debug.Assert((this.CompletedSynchronously && this.IsCompleted) || !this.CompletedSynchronously, "sync without complete");
+                Debug.Assert(this.entryIndex < this.ChangedEntries.Count || this.ChangedEntries.All(o => o.ContentGeneratedForSave), "didn't generate content for all entities/links");
+            }
+
+             protected override void CompletedRequest()
+            {
+                this.buildBatchBuffer = null;
+                if (null != this.buildBatchWriter)
+                {
+                    Debug.Assert(!IsFlagSet(this.options, SaveChangesOptions.Batch), "should be non-batch");
+                    this.HandleOperationEnd();
+                    this.buildBatchWriter.WriteLine("--{0}--", this.batchBoundary);
+
+                    this.buildBatchWriter.Flush();
+                    Debug.Assert(Object.ReferenceEquals(this.httpWebResponseStream, this.buildBatchWriter.BaseStream), "expected different stream");
+                    this.httpWebResponseStream.Position = 0;
+
+                    this.buildBatchWriter = null;
+
+                   this.responseBatchStream = new BatchStream(this.httpWebResponseStream, this.batchBoundary, HttpProcessUtility.EncodingUtf8NoPreamble, false);
+                }
+            }
+
+            private static void CompleteCheck(PerRequest value, InternalError errorcode)
+            {
+                if ((null == value) || value.RequestCompleted)
+                {
+                   Error.ThrowInternalError(errorcode);
+                }
+            }
+
+            private static void EqualRefCheck(PerRequest actual, PerRequest expected, InternalError errorcode)
+            {
+                if (!Object.ReferenceEquals(actual, expected))
+                {
+                    Error.ThrowInternalError(errorcode);
+                }
+            }
+
+            private void HandleCompleted(PerRequest pereq)
+            {
+                if (null != pereq)
+                {
+                    this.CompletedSynchronously &= pereq.RequestCompletedSynchronously;
+
+                    if (pereq.RequestCompleted)
+                    {
+                        System.Threading.Interlocked.CompareExchange(ref this.request, null, pereq);
+                        if (IsFlagSet(this.options, SaveChangesOptions.Batch))
+                        {   
+                            System.Threading.Interlocked.CompareExchange(ref this.batchResponse, pereq.HttpWebResponse, null);
+                            pereq.HttpWebResponse = null;
+                        }
+
+                        pereq.Dispose();
+                    }
+                }
+
+                this.HandleCompleted();
+            }
+
+            private bool HandleFailure(PerRequest pereq, Exception e)
+            {
+                if (null != pereq)
+                {
+                    if (IsAborted)
+                    {
+                        pereq.SetAborted();
+                    }
+                    else
+                    {
+                        pereq.SetComplete();
+                    }
+                }
+
+                return this.HandleFailure(e);
+            }
+
+            private HttpWebRequest CreateNextRequest(bool replaceOnUpdate)
+            {
+                if (!this.processingMediaLinkEntry)
+                {
+                    this.entryIndex++;
+                }
+                else
+                {
+                    Debug.Assert(this.ChangedEntries[this.entryIndex].IsResource, "Only resources can have MR's.");
+                    EntityDescriptor box = (EntityDescriptor)this.ChangedEntries[this.entryIndex];
+                    if (this.processingMediaLinkEntryPut && EntityStates.Unchanged == box.State)
+                    {
+                        box.ContentGeneratedForSave = true;
+                        this.entryIndex++;
+                    }
+
+                    this.processingMediaLinkEntry = false;
+                    this.processingMediaLinkEntryPut = false;
+
+                    box.CloseSaveStream();
+                }
+
+                if (unchecked((uint)this.entryIndex < (uint)this.ChangedEntries.Count))
+                {
+                    Descriptor entry = this.ChangedEntries[this.entryIndex];
+                    if (entry.IsResource)
+                    {
+                        EntityDescriptor box = (EntityDescriptor)entry;
+
+                        HttpWebRequest req;
+                        if (((EntityStates.Unchanged == entry.State) || (EntityStates.Modified == entry.State)) &&
+                            (null != (req = this.CheckAndProcessMediaEntryPut(box))))
+                        {
+                            this.processingMediaLinkEntry = true;
+                            this.processingMediaLinkEntryPut = true;
+                        }
+                        else if ((EntityStates.Added == entry.State) && (null != (req = this.CheckAndProcessMediaEntryPost(box))))
+                        {
+                            this.processingMediaLinkEntry = true;
+                            this.processingMediaLinkEntryPut = false;
+                        }
+                        else
+                        {
+                            Debug.Assert(!this.processingMediaLinkEntry || entry.State == EntityStates.Modified, "!this.processingMediaLinkEntry || entry.State == EntityStates.Modified");
+                            req = this.Context.CreateRequest(box, entry.State, replaceOnUpdate);
+                        }
+
+                        return req;
+                    }
+
+                    return this.Context.CreateRequest((LinkDescriptor)entry);
+                }
+
+                return null;
+            }
+
+            private HttpWebRequest CheckAndProcessMediaEntryPost(EntityDescriptor entityDescriptor)
+            {
+                ClientType type = ClientType.Create(entityDescriptor.Entity.GetType());
+
+                if (!type.IsMediaLinkEntry && !entityDescriptor.IsMediaLinkEntry)
+                {
+                    return null;
+                }
+
+                if (type.MediaDataMember == null && entityDescriptor.SaveStream == null)
+                {
+                    throw Error.InvalidOperation(Strings.Context_MLEWithoutSaveStream(type.ElementTypeName));
+                }
+
+                Debug.Assert(
+                    (type.MediaDataMember != null && entityDescriptor.SaveStream == null) ||
+                    (type.MediaDataMember == null && entityDescriptor.SaveStream != null),
+                    "Only one way of specifying the MR content is allowed.");
+
+                HttpWebRequest mediaRequest = this.CreateMediaResourceRequest(
+                    entityDescriptor.GetResourceUri(this.Context.baseUriWithSlash, false),
+                    XmlConstants.HttpMethodPost,
+                    type.MediaDataMember == null);
+
+                if (type.MediaDataMember != null)
+                {
+                    if (type.MediaDataMember.MimeTypeProperty == null)
+                    {
+                        mediaRequest.ContentType = XmlConstants.MimeApplicationOctetStream;
+                    }
+                    else
+                    {
+                        object mimeTypeValue = type.MediaDataMember.MimeTypeProperty.GetValue(entityDescriptor.Entity);
+                        String mimeType = mimeTypeValue != null ? mimeTypeValue.ToString() : null;
+
+                        if (String.IsNullOrEmpty(mimeType))
+                        {
+                            throw Error.InvalidOperation(
+                                Strings.Context_NoContentTypeForMediaLink(
+                                    type.ElementTypeName,
+                                    type.MediaDataMember.MimeTypeProperty.PropertyName));
+                        }
+
+                        mediaRequest.ContentType = mimeType;
+                    }
+
+                    object value = type.MediaDataMember.GetValue(entityDescriptor.Entity);
+                    if (value == null)
+                    {
+                        mediaRequest.ContentLength = 0;
+                        this.mediaResourceRequestStream = null;
+                    }
+                    else
+                    {
+                        byte[] buffer = value as byte[];
+                        if (buffer == null)
+                        {
+                            string mime;
+                            Encoding encoding;
+                            HttpProcessUtility.ReadContentType(mediaRequest.ContentType, out mime, out encoding);
+
+                            if (encoding == null)
+                            {
+                                encoding = Encoding.UTF8;
+                                mediaRequest.ContentType += XmlConstants.MimeTypeUtf8Encoding;
+                            }
+
+                            buffer = encoding.GetBytes(ClientConvert.ToString(value, false));
+                        }
+
+                        mediaRequest.ContentLength = buffer.Length;
+
+                        this.mediaResourceRequestStream = new MemoryStream(buffer, 0, buffer.Length, false, true);
+                    }
+                }
+                else
+                {
+                    this.SetupMediaResourceRequest(mediaRequest, entityDescriptor);
+                }
+
+                entityDescriptor.State = EntityStates.Modified;
+
+                return mediaRequest;
+            }
+
+            private HttpWebRequest CheckAndProcessMediaEntryPut(EntityDescriptor box)
+            {
+                if (box.SaveStream == null)
+                {
+                    return null;
+                }
+
+                Uri requestUri = box.GetEditMediaResourceUri(this.Context.baseUriWithSlash);
+                if (requestUri == null)
+                {
+                    throw Error.InvalidOperation(
+                        Strings.Context_SetSaveStreamWithoutEditMediaLink);
+                }
+
+                HttpWebRequest mediaResourceRequest = this.CreateMediaResourceRequest(requestUri, XmlConstants.HttpMethodPut, true);
+                this.SetupMediaResourceRequest(mediaResourceRequest, box);
+
+                if (box.StreamETag != null)
+                {
+                    mediaResourceRequest.Headers.Set(HttpRequestHeader.IfMatch, box.StreamETag);
+                }
+
+                return mediaResourceRequest;
+            }
+
+            private HttpWebRequest CreateMediaResourceRequest(Uri requestUri, string method, bool sendChunked)
+            {
+#if ASTORIA_LIGHT
+                HttpWebRequest mediaResourceRequest = this.Context.CreateRequest(
+                    requestUri,
+                    method,
+                    false,
+                    XmlConstants.MimeAny,
+                    Util.DataServiceVersion1,
+                    sendChunked,
+                    HttpStack.ClientHttp);
+#else
+                HttpWebRequest mediaResourceRequest = this.Context.CreateRequest(
+                    requestUri,
+                    method,
+                    false,
+                    XmlConstants.MimeAny,
+                    Util.DataServiceVersion1,
+                    sendChunked);
+#endif
+                return mediaResourceRequest;
+            }
+
+           private void SetupMediaResourceRequest(HttpWebRequest mediaResourceRequest, EntityDescriptor box)
+            {
+                this.mediaResourceRequestStream = box.SaveStream.Stream;
+
+                WebUtil.ApplyHeadersToRequest(box.SaveStream.Args.Headers, mediaResourceRequest, true);
+
+           }
+
+           private PerRequest.ContentStream CreateChangeData(int index, bool newline)
+            {
+                Descriptor entry = this.ChangedEntries[index];
+                Debug.Assert(!entry.ContentGeneratedForSave, "already saved entity/link");
+
+                if (entry.IsResource)
+                {
+                    EntityDescriptor box = (EntityDescriptor)entry;
+                    if (this.processingMediaLinkEntry)
+                    {
+                        Debug.Assert(
+                            this.processingMediaLinkEntryPut || entry.State == EntityStates.Modified, 
+                            "We should have modified the MLE state to Modified when we've created the MR POST request.");
+                        Debug.Assert(
+                            !this.processingMediaLinkEntryPut || (entry.State == EntityStates.Unchanged || entry.State == EntityStates.Modified),
+                            "If we're processing MR PUT the entity must be either in Unchanged or Modified state.");
+
+                        Debug.Assert(this.mediaResourceRequestStream != null, "We should have precreated the MR stream already.");
+                        return new PerRequest.ContentStream(this.mediaResourceRequestStream, false);
+                    }
+                    else
+                    {
+                        entry.ContentGeneratedForSave = true;
+                        return new PerRequest.ContentStream(this.Context.CreateRequestData(box, newline), true);
+                    }
+                }
+                else
+                {
+                    entry.ContentGeneratedForSave = true;
+                    LinkDescriptor link = (LinkDescriptor)entry;
+                    if ((EntityStates.Added == link.State) ||
+                        ((EntityStates.Modified == link.State) && (null != link.Target)))
+                    {
+                        return new PerRequest.ContentStream(this.Context.CreateRequestData(link, newline), true);
+                    }
+                }
+
+                return null;
+            }
+            #endregion
+
+            #region generate batch response from non-batch
+
+            private void HandleOperationStart()
+            {
+                this.HandleOperationEnd();
+
+                if (null == this.httpWebResponseStream)
+                {
+                    this.httpWebResponseStream = new MemoryStream();
+                }
+
+                if (null == this.buildBatchWriter)
+                {
+                    this.buildBatchWriter = new StreamWriter(this.httpWebResponseStream);    
+#if TESTUNIXNEWLINE
+                    this.buildBatchWriter.NewLine = NewLine;
+#endif
+                }
+
+                if (null == this.changesetBoundary)
+                {
+                    this.changesetBoundary = XmlConstants.HttpMultipartBoundaryChangesetResponse + "_" + Guid.NewGuid().ToString();
+                }
+
+                this.changesetStarted = true;
+                this.buildBatchWriter.WriteLine("--{0}", this.batchBoundary);
+                this.buildBatchWriter.WriteLine("{0}: {1}; boundary={2}", XmlConstants.HttpContentType, XmlConstants.MimeMultiPartMixed, this.changesetBoundary);
+                this.buildBatchWriter.WriteLine();
+                this.buildBatchWriter.WriteLine("--{0}", this.changesetBoundary);
+            }
+
+             private void HandleOperationEnd()
+            {
+                if (this.changesetStarted)
+                {
+                    Debug.Assert(null != this.buildBatchWriter, "buildBatchWriter");
+                    Debug.Assert(null != this.changesetBoundary, "changesetBoundary");
+                    this.buildBatchWriter.WriteLine();
+                    this.buildBatchWriter.WriteLine("--{0}--", this.changesetBoundary);
+                    this.changesetStarted = false;
+                }
+            }
+
+            private void HandleOperationException(Exception e, HttpWebResponse response)
+            {
+                if (null != response)
+                {
+                    this.HandleOperationResponse(response);
+                    this.HandleOperationResponseData(response);
+                    this.HandleOperationEnd();
+                }
+                else
+                {
+                    this.HandleOperationStart();
+                    WriteOperationResponseHeaders(this.buildBatchWriter, 500);
+                    this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentType, XmlConstants.MimeTextPlain);
+                    this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentID, this.ChangedEntries[this.entryIndex].ChangeOrder);
+                    this.buildBatchWriter.WriteLine();
+                    this.buildBatchWriter.WriteLine(e.ToString());
+                    this.HandleOperationEnd();
+                }
+
+                this.request = null;
+                if (!IsFlagSet(this.options, SaveChangesOptions.ContinueOnError))
+                {
+                    this.SetCompleted();
+
+                    this.processingMediaLinkEntry = false;
+
+                    this.ChangedEntries[this.entryIndex].ContentGeneratedForSave = true;
+                }
+            }
+
+            private void HandleOperationResponse(HttpWebResponse response)
+            {
+                this.HandleOperationStart();
+
+                Descriptor entry = this.ChangedEntries[this.entryIndex];
+
+                if (entry.IsResource)
+                {
+                    EntityDescriptor entityDescriptor = (EntityDescriptor)entry;
+
+                    if (entry.State == EntityStates.Added ||
+                         (entry.State == EntityStates.Modified &&
+                          this.processingMediaLinkEntry && !this.processingMediaLinkEntryPut))
+                    {
+                        string location = response.Headers[XmlConstants.HttpResponseLocation];
+
+                        if (WebUtil.SuccessStatusCode(response.StatusCode))
+                        {
+                            if (null != location)
+                            {
+                                this.Context.AttachLocation(entityDescriptor.Entity, location);
+                            }
+                            else
+                            {
+                                throw Error.NotSupported(Strings.Deserialize_NoLocationHeader);
+                            }
+                        }
+                    }
+
+                    if (this.processingMediaLinkEntry)
+                    {
+                        if (!WebUtil.SuccessStatusCode(response.StatusCode))
+                        {
+                           this.processingMediaLinkEntry = false;
+
+                            if (!this.processingMediaLinkEntryPut)
+                            {
+                                Debug.Assert(entry.State == EntityStates.Modified, "Entity state should be set to Modified once we've sent the POST MR");
+                                entry.State = EntityStates.Added;
+                                this.processingMediaLinkEntryPut = false;
+                            }
+
+                           entry.ContentGeneratedForSave = true;
+                        }
+                        else if (response.StatusCode == HttpStatusCode.Created)
+                        {
+                            entityDescriptor.ETag = response.Headers[XmlConstants.HttpResponseETag];
+
+                        }
+                    }
+                }
+
+                WriteOperationResponseHeaders(this.buildBatchWriter, (int)response.StatusCode);
+                foreach (string name in response.Headers.AllKeys)
+                {
+                    if (XmlConstants.HttpContentLength != name)
+                    {
+                        this.buildBatchWriter.WriteLine("{0}: {1}", name, response.Headers[name]);
+                    }
+                }
+
+                this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentID, entry.ChangeOrder);
+                this.buildBatchWriter.WriteLine();
+            }
+
+           private void HandleOperationResponseData(HttpWebResponse response)
+            {
+                using (Stream stream = response.GetResponseStream())
+                {
+                    if (null != stream)
+                    {
+                        this.buildBatchWriter.Flush();
+                        if (0 == WebUtil.CopyStream(stream, this.buildBatchWriter.BaseStream, ref this.buildBatchBuffer))
+                        {
+                            this.HandleOperationResponseNoData();
+                        }
+                    }
+                }
+            }
+
+            private void HandleOperationResponseNoData()
+            {
+                Debug.Assert(null != this.buildBatchWriter, "null buildBatchWriter");
+                this.buildBatchWriter.Flush();
+#if DEBUG
+                MemoryStream memory = this.buildBatchWriter.BaseStream as MemoryStream;
+                Debug.Assert(null != memory, "expected MemoryStream");
+                Debug.Assert(this.buildBatchWriter.NewLine == NewLine, "mismatch NewLine");
+                for (int kk = 0; kk < NewLine.Length; ++kk)
+                {
+                    Debug.Assert((char)memory.GetBuffer()[memory.Length - (NewLine.Length - kk)] == NewLine[kk], "didn't end with newline");
+                }
+#endif
+                this.buildBatchWriter.BaseStream.Position -= NewLine.Length;
+                this.buildBatchWriter.WriteLine("{0}: {1}", XmlConstants.HttpContentLength, 0);
+                this.buildBatchWriter.WriteLine();
+            }
+
+            #endregion
+
+             private HttpWebRequest CreateBatchRequest(MemoryStream memory)
+            {
+                Uri requestUri = Util.CreateUri(this.Context.baseUriWithSlash, Util.CreateUri("$batch", UriKind.Relative));
+                string contentType = XmlConstants.MimeMultiPartMixed + "; " + XmlConstants.HttpMultipartBoundary + "=" + this.batchBoundary;
+                HttpWebRequest httpWebRequest = this.Context.CreateRequest(requestUri, XmlConstants.HttpMethodPost, false, contentType, Util.DataServiceVersion1, false);
+                httpWebRequest.ContentLength = memory.Length - memory.Position;
+                return httpWebRequest;
+            }
+
+            private MemoryStream GenerateBatchRequest(bool replaceOnUpdate)
+            {
+                this.changesetBoundary = null;
+                if (null != this.Queries)
+                {
+                }
+                else if (0 == this.ChangedEntries.Count)
+                {
+                    this.DataServiceResponse = new DataServiceResponse(null, (int)WebExceptionStatus.Success, this.Responses, true );
+                    this.SetCompleted();
+                    return null;
+                }
+                else
+                {
+                    this.changesetBoundary = XmlConstants.HttpMultipartBoundaryChangeSet + "_" + Guid.NewGuid().ToString();
+                }
+
+                MemoryStream memory = new MemoryStream();
+                StreamWriter text = new StreamWriter(memory);     
+
+#if TESTUNIXNEWLINE
+                text.NewLine = NewLine;
+#endif
+
+                if (null != this.Queries)
+                {
+                    for (int i = 0; i < this.Queries.Length; ++i)
+                    {
+                        Uri requestUri = Util.CreateUri(this.Context.baseUriWithSlash, this.Queries[i].QueryComponents.Uri);
+
+                        Debug.Assert(null != requestUri, "request uri is null");
+                        Debug.Assert(requestUri.IsAbsoluteUri, "request uri is not absolute uri");
+
+                        text.WriteLine("--{0}", this.batchBoundary);
+                        WriteOperationRequestHeaders(text, XmlConstants.HttpMethodGet, requestUri.AbsoluteUri, this.Queries[i].QueryComponents.Version);
+                        text.WriteLine();
+                    }
+                }
+                else if (0 < this.ChangedEntries.Count)
+                {
+                    text.WriteLine("--{0}", this.batchBoundary);
+                    text.WriteLine("{0}: {1}; boundary={2}", XmlConstants.HttpContentType, XmlConstants.MimeMultiPartMixed, this.changesetBoundary);
+                    text.WriteLine();
+
+                    for (int i = 0; i < this.ChangedEntries.Count; ++i)
+                    {
+                        #region validate changeset boundary starts on newline
+#if DEBUG
+                        {
+                            text.Flush();
+                            for (int kk = 0; kk < NewLine.Length; ++kk)
+                            {
+                                Debug.Assert((char)memory.GetBuffer()[memory.Length - (NewLine.Length - kk)] == NewLine[kk], "boundary didn't start with newline");
+                            }
+                        }
+#endif
+                        #endregion
+
+                        Descriptor entry = this.ChangedEntries[i];
+                        if (entry.ContentGeneratedForSave)
+                        {
+                            continue;
+                        }
+
+                        text.WriteLine("--{0}", this.changesetBoundary);
+
+                        EntityDescriptor entityDescriptor = entry as EntityDescriptor;
+                        if (entry.IsResource)
+                        {
+                            if (entityDescriptor.State == EntityStates.Added)
+                            {
+                                ClientType type = ClientType.Create(entityDescriptor.Entity.GetType());
+                                if (type.IsMediaLinkEntry || entityDescriptor.IsMediaLinkEntry)
+                                {
+                                    throw Error.NotSupported(Strings.Context_BatchNotSupportedForMediaLink);
+                                }
+                            }
+                            else if (entityDescriptor.State == EntityStates.Unchanged || entityDescriptor.State == EntityStates.Modified)
+                            {
+                                if (entityDescriptor.SaveStream != null)
+                                {
+                                    throw Error.NotSupported(Strings.Context_BatchNotSupportedForMediaLink);
+                                }
+                            }
+                        }
+
+                        PerRequest.ContentStream contentStream = this.CreateChangeData(i, true);
+                        MemoryStream stream = null;
+                        if (null != contentStream)
+                        {
+                            Debug.Assert(contentStream.IsKnownMemoryStream, "Batch requests don't support MRs yet");
+                            stream = contentStream.Stream as MemoryStream;
+                        }
+
+                        if (entry.IsResource)
+                        {
+                            this.Context.CreateRequestBatch(entityDescriptor, text, replaceOnUpdate);
+                        }
+                        else
+                        {
+                            this.Context.CreateRequestBatch((LinkDescriptor)entry, text);
+                        }
+
+                        byte[] buffer = null;
+                        int bufferOffset = 0, bufferLength = 0;
+                        if (null != stream)
+                        {
+                            buffer = stream.GetBuffer();
+                            bufferOffset = checked((int)stream.Position);
+                            bufferLength = checked((int)stream.Length) - bufferOffset;
+                        }
+
+                        if (0 < bufferLength)
+                        {
+                            text.WriteLine("{0}: {1}", XmlConstants.HttpContentLength, bufferLength);
+                        }
+
+                        text.WriteLine();
+
+                        if (0 < bufferLength)
+                        {
+                            text.Flush();
+                            text.BaseStream.Write(buffer, bufferOffset, bufferLength);
+                        }
+                    }
+
+                    #region validate changeset boundary ended with newline
+#if DEBUG
+                    {
+                        text.Flush();
+
+                        for (int kk = 0; kk < NewLine.Length; ++kk)
+                        {
+                            Debug.Assert((char)memory.GetBuffer()[memory.Length - (NewLine.Length - kk)] == NewLine[kk], "post CreateRequest boundary didn't start with newline");
+                        }
+                    }
+#endif
+                    #endregion
+
+                   text.WriteLine("--{0}--", this.changesetBoundary);
+                }
+
+                text.WriteLine("--{0}--", this.batchBoundary);
+
+                text.Flush();
+                Debug.Assert(Object.ReferenceEquals(text.BaseStream, memory), "should be same");
+                Debug.Assert(this.ChangedEntries.All(o => o.ContentGeneratedForSave), "didn't generated content for all entities/links");
+
+                #region Validate batch format
+#if DEBUG
+                int testGetCount = 0;
+                int testOpCount = 0;
+                int testBeginSetCount = 0;
+                int testEndSetCount = 0;
+                memory.Position = 0;
+                BatchStream testBatch = new BatchStream(memory, this.batchBoundary, HttpProcessUtility.EncodingUtf8NoPreamble, true);
+                while (testBatch.MoveNext())
+                {
+                    switch (testBatch.State)
+                    {
+                        case BatchStreamState.StartBatch:
+                        case BatchStreamState.EndBatch:
+                        default:
+                            Debug.Assert(false, "shouldn't happen");
+                            break;
+
+                        case BatchStreamState.Get:
+                            testGetCount++;
+                            break;
+
+                        case BatchStreamState.BeginChangeSet:
+                            testBeginSetCount++;
+                            break;
+                        case BatchStreamState.EndChangeSet:
+                            testEndSetCount++;
+                            break;
+                        case BatchStreamState.Post:
+                        case BatchStreamState.Put:
+                        case BatchStreamState.Delete:
+                        case BatchStreamState.Merge:
+                            testOpCount++;
+                            break;
+                    }
+                }
+
+                Debug.Assert((null == this.Queries && 1 == testBeginSetCount) || (0 == testBeginSetCount), "more than one BeginChangeSet");
+                Debug.Assert(testBeginSetCount == testEndSetCount, "more than one EndChangeSet");
+                Debug.Assert((null == this.Queries && testGetCount == 0) || this.Queries.Length == testGetCount, "too many get count");
+                Debug.Assert(BatchStreamState.EndBatch == testBatch.State, "should have ended propertly");
+#endif
+                #endregion
+
+                this.changesetBoundary = null;
+
+                memory.Position = 0;
+                return memory;
+            }
+
+            #region handle batch response
+
+            private void HandleBatchResponse()
+            {
+                string boundary = this.batchBoundary;
+                Encoding encoding = Encoding.UTF8;
+                Dictionary<string, string> headers = null;
+                Exception exception = null;
+
+                try
+                {
+                    if (IsFlagSet(this.options, SaveChangesOptions.Batch))
+                    {
+                        if ((null == this.batchResponse) || (HttpStatusCode.NoContent == this.batchResponse.StatusCode))
+                        {   
+                            throw Error.InvalidOperation(Strings.Batch_ExpectedResponse(1));
+                        }
+
+                        headers = WebUtil.WrapResponseHeaders(this.batchResponse);
+                        HandleResponse(
+                            this.batchResponse.StatusCode,                                    
+                            this.batchResponse.Headers[XmlConstants.HttpDataServiceVersion],   
+                            delegate() { return this.httpWebResponseStream; },                 
+                            true);                                                              
+
+                        if (!BatchStream.GetBoundaryAndEncodingFromMultipartMixedContentType(this.batchResponse.ContentType, out boundary, out encoding))
+                        {
+                            string mime;
+                            Exception inner = null;
+                            HttpProcessUtility.ReadContentType(this.batchResponse.ContentType, out mime, out encoding);
+                            if (String.Equals(XmlConstants.MimeTextPlain, mime))
+                            {
+                                inner = GetResponseText(this.batchResponse.GetResponseStream, this.batchResponse.StatusCode);
+                            }
+
+                            throw Error.InvalidOperation(Strings.Batch_ExpectedContentType(this.batchResponse.ContentType), inner);
+                        }
+
+                        if (null == this.httpWebResponseStream)
+                        {
+                            Error.ThrowBatchExpectedResponse(InternalError.NullResponseStream);
+                        }
+
+                        this.DataServiceResponse = new DataServiceResponse(headers, (int)this.batchResponse.StatusCode, this.Responses, true);
+                    }
+
+                    bool close = true;
+                    BatchStream batchStream = null;
+                    try
+                    {
+                        batchStream = this.responseBatchStream ?? new BatchStream(this.httpWebResponseStream, boundary, encoding, false);
+                        this.httpWebResponseStream = null;
+                        this.responseBatchStream = null;
+
+                        IEnumerable<OperationResponse> responses = this.HandleBatchResponse(batchStream);
+                        if (IsFlagSet(this.options, SaveChangesOptions.Batch) && (null != this.Queries))
+                        {
+                            close = false;
+                            this.responseBatchStream = batchStream;
+
+                            this.DataServiceResponse = new DataServiceResponse(
+                                (Dictionary<string, string>)this.DataServiceResponse.BatchHeaders,
+                                this.DataServiceResponse.BatchStatusCode,
+                                responses,
+                                true );
+                        }
+                        else
+                        {   
+                            foreach (ChangeOperationResponse response in responses)
+                            {
+                                if (exception == null && response.Error != null)
+                                {
+                                    exception = response.Error;
+                                }
+                            }
+                        }
+                    }
+                    finally
+                    {
+                        if (close && (null != batchStream))
+                        {
+                            batchStream.Close();
+                        }
+                    }
+                }
+                catch (InvalidOperationException ex)
+                {
+                    exception = ex;
+                }
+
+                if (exception != null)
+                {
+                    if (this.DataServiceResponse == null)
+                    {
+                        int statusCode = this.batchResponse == null ? (int)HttpStatusCode.InternalServerError : (int)this.batchResponse.StatusCode;
+                        this.DataServiceResponse = new DataServiceResponse(headers, statusCode, null, IsFlagSet(this.options, SaveChangesOptions.Batch));
+                    }
+
+                    throw new DataServiceRequestException(Strings.DataServiceException_GeneralError, exception, this.DataServiceResponse);
+                }
+            }
+
+            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1506", Justification = "Central method of the API, likely to have many cross-references")]
+            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031", Justification = "Cache exception so user can examine it later")]
+            private IEnumerable<OperationResponse> HandleBatchResponse(BatchStream batch)
+            {
+                if (!batch.CanRead)
+                {
+                    yield break;
+                }
+
+                string contentType;
+                string location;
+                string etag;
+
+                Uri editLink = null;
+
+                HttpStatusCode status;
+                int changesetIndex = 0;
+                int queryCount = 0;
+                int operationCount = 0;
+                this.entryIndex = 0;
+                while (batch.MoveNext())
+                {
+                    var contentHeaders = batch.ContentHeaders; 
+
+                    Descriptor entry;
+                    switch (batch.State)
+                    {
+                        #region BeginChangeSet
+                        case BatchStreamState.BeginChangeSet:
+                            if ((IsFlagSet(this.options, SaveChangesOptions.Batch) && (0 != changesetIndex)) ||
+                                (0 != operationCount))
+                            {   
+                                Error.ThrowBatchUnexpectedContent(InternalError.UnexpectedBeginChangeSet);
+                            }
+
+                            break;
+                        #endregion
+
+                        #region EndChangeSet
+                        case BatchStreamState.EndChangeSet:
+                            changesetIndex++;
+                            operationCount = 0;
+                            break;
+                        #endregion
+
+                        #region GetResponse
+                        case BatchStreamState.GetResponse:
+                            Debug.Assert(0 == operationCount, "missing an EndChangeSet 2");
+
+                            contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType);
+                            status = (HttpStatusCode)(-1);
+
+                            Exception ex = null;
+                            QueryOperationResponse qresponse = null;
+                            try
+                            {
+                                status = batch.GetStatusCode();
+
+                                ex = HandleResponse(status, batch.GetResponseVersion(), batch.GetContentStream, false);
+                                if (null == ex)
+                                {
+                                    DataServiceRequest query = this.Queries[queryCount];
+                                    MaterializeAtom materializer = DataServiceRequest.Materialize(this.Context, query.QueryComponents, null, contentType, batch.GetContentStream());
+                                    qresponse = QueryOperationResponse.GetInstance(query.ElementType, contentHeaders, query, materializer);
+                                }
+                            }
+                            catch (ArgumentException e)
+                            {
+                                ex = e;
+                            }
+                            catch (FormatException e)
+                            {
+                                ex = e;
+                            }
+                            catch (InvalidOperationException e)
+                            {
+                                ex = e;
+                            }
+
+                            if (null == qresponse)
+                            {
+                                if (null != this.Queries)
+                                {
+                                     DataServiceRequest query = this.Queries[queryCount];
+
+                                    if (this.Context.ignoreResourceNotFoundException && status == HttpStatusCode.NotFound)
+                                    {
+                                        qresponse = QueryOperationResponse.GetInstance(query.ElementType, contentHeaders, query, MaterializeAtom.EmptyResults);
+                                    }
+                                    else
+                                    {
+                                        qresponse = QueryOperationResponse.GetInstance(query.ElementType, contentHeaders, query, MaterializeAtom.EmptyResults);
+                                        qresponse.Error = ex;
+                                    }
+                                }
+                                else
+                                {
+                                   throw ex;
+                                }
+                            }
+
+                            qresponse.StatusCode = (int)status;
+                            queryCount++;
+                            yield return qresponse;
+                            break;
+                        #endregion
+
+                        #region ChangeResponse
+                        case BatchStreamState.ChangeResponse:
+
+                            HttpStatusCode statusCode = batch.GetStatusCode();
+                            Exception error = HandleResponse(statusCode, batch.GetResponseVersion(), batch.GetContentStream, false);
+                            int index = this.ValidateContentID(contentHeaders);
+
+                            try
+                            {
+                                entry = this.ChangedEntries[index];
+                                operationCount += this.Context.SaveResultProcessed(entry);
+
+                                if (null != error)
+                                {
+                                    throw error;
+                                }
+
+                                StreamStates streamState = StreamStates.NoStream;
+                                if (entry.IsResource)
+                                {
+                                    EntityDescriptor descriptor = (EntityDescriptor)entry;
+                                    streamState = descriptor.StreamState;
+#if DEBUG
+                                    if (descriptor.StreamState == StreamStates.Added)
+                                    {
+                                        Debug.Assert(
+                                            statusCode == HttpStatusCode.Created && entry.State == EntityStates.Modified && descriptor.IsMediaLinkEntry,
+                                            "statusCode == HttpStatusCode.Created && entry.State == EntityStates.Modified && descriptor.IsMediaLinkEntry -- Processing Post MR");
+                                    }
+                                    else if (descriptor.StreamState == StreamStates.Modified)
+                                    {
+                                        Debug.Assert(
+                                            statusCode == HttpStatusCode.NoContent && descriptor.IsMediaLinkEntry,
+                                            "statusCode == HttpStatusCode.NoContent && descriptor.IsMediaLinkEntry -- Processing Put MR");
+                                    }
+#endif
+                                }
+
+                                if (streamState == StreamStates.Added || entry.State == EntityStates.Added)
+                                {
+                                    #region Post
+                                    if (entry.IsResource)
+                                    {
+                                        string mime = null;
+                                        Encoding postEncoding = null;
+                                        contentHeaders.TryGetValue(XmlConstants.HttpContentType, out contentType);
+                                        contentHeaders.TryGetValue(XmlConstants.HttpResponseLocation, out location);
+                                        contentHeaders.TryGetValue(XmlConstants.HttpResponseETag, out etag);
+                                        EntityDescriptor entityDescriptor = (EntityDescriptor)entry;
+
+                                        if (location != null)
+                                        {
+                                            editLink = Util.CreateUri(location, UriKind.Absolute);
+                                        }
+                                        else
+                                        {
+                                            throw Error.NotSupported(Strings.Deserialize_NoLocationHeader);
+                                        }
+
+                                        Stream stream = batch.GetContentStream();
+                                        if (null != stream)
+                                        {
+                                            HttpProcessUtility.ReadContentType(contentType, out mime, out postEncoding);
+                                            if (!String.Equals(XmlConstants.MimeApplicationAtom, mime, StringComparison.OrdinalIgnoreCase))
+                                            {
+                                                throw Error.InvalidOperation(Strings.Deserialize_UnknownMimeTypeSpecified(mime));
+                                            }
+
+                                            XmlReader reader = XmlUtil.CreateXmlReader(stream, postEncoding);
+                                            QueryComponents qc = new QueryComponents(null, Util.DataServiceVersionEmpty, entityDescriptor.Entity.GetType(), null, null);
+                                            EntityDescriptor descriptor = (EntityDescriptor)entry;
+                                            MergeOption mergeOption = MergeOption.OverwriteChanges;
+
+                                            if (descriptor.StreamState == StreamStates.Added)
+                                            {
+                                                mergeOption = MergeOption.PreserveChanges;
+                                                Debug.Assert(descriptor.State == EntityStates.Modified, "The MLE state must be Modified.");
+                                            }
+
+                                            try
+                                            {
+                                                using (MaterializeAtom atom = new MaterializeAtom(this.Context, reader, qc, null, mergeOption))
+                                                {
+                                                    this.Context.HandleResponsePost(entityDescriptor, atom, editLink, etag);
+                                                }
+                                            }
+                                            finally
+                                            {
+                                                if (descriptor.StreamState == StreamStates.Added)
+                                                {
+                                                   Debug.Assert(descriptor.State == EntityStates.Unchanged, "The materializer should always set the entity state to Unchanged.");
+                                                    descriptor.State = EntityStates.Modified;
+
+                                                    descriptor.StreamState = StreamStates.NoStream;
+                                                }
+                                            }
+                                        }
+                                        else
+                                        {
+                                            this.Context.HandleResponsePost(entityDescriptor, null, editLink, etag);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        HandleResponsePost((LinkDescriptor)entry);
+                                    }
+                                    #endregion
+                                }
+                                else if (streamState == StreamStates.Modified || entry.State == EntityStates.Modified)
+                                {
+                                    #region Put, Merge
+                                    contentHeaders.TryGetValue(XmlConstants.HttpResponseETag, out etag);
+                                    HandleResponsePut(entry, etag);
+                                    #endregion
+                                }
+                                else if (entry.State == EntityStates.Deleted)
+                                {
+                                    #region Delete
+                                    this.Context.HandleResponseDelete(entry);
+                                    #endregion
+                                }
+
+                           }
+                            catch (Exception e)
+                            {
+                                this.ChangedEntries[index].SaveError = e;
+                                error = e;
+                            }
+
+                            ChangeOperationResponse changeOperationResponse = 
+                                new ChangeOperationResponse(contentHeaders, this.ChangedEntries[index]);
+                            changeOperationResponse.StatusCode = (int)statusCode;
+                            if (error != null)
+                            {
+                                changeOperationResponse.Error = error;
+                            }
+
+                            this.Responses.Add(changeOperationResponse);
+                            operationCount++;
+                            this.entryIndex++;
+                            yield return changeOperationResponse;
+                            break;
+                        #endregion
+
+                        default:
+                            Error.ThrowBatchExpectedResponse(InternalError.UnexpectedBatchState);
+                            break;
+                    }
+                }
+
+                Debug.Assert(batch.State == BatchStreamState.EndBatch, "unexpected batch state");
+
+               if ((null == this.Queries && 
+                    (0 == changesetIndex || 
+                     0 < queryCount || 
+                     this.ChangedEntries.Any(o => o.ContentGeneratedForSave && 0 == o.SaveResultWasProcessed) &&
+                     (!IsFlagSet(this.options, SaveChangesOptions.Batch) || null == this.ChangedEntries.FirstOrDefault(o => null != o.SaveError)))) ||
+                    (null != this.Queries && queryCount != this.Queries.Length))
+                {
+                    throw Error.InvalidOperation(Strings.Batch_IncompleteResponseCount);
+                }
+
+                batch.Dispose();
+            }
+
+           private int ValidateContentID(Dictionary<string, string> contentHeaders)
+            {
+                int contentID = 0;
+                string contentValueID;
+
+                if (!contentHeaders.TryGetValue(XmlConstants.HttpContentID, out contentValueID) ||
+                    !Int32.TryParse(contentValueID, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out contentID))
+                {
+                    Error.ThrowBatchUnexpectedContent(InternalError.ChangeResponseMissingContentID);
+                }
+
+                for (int i = 0; i < this.ChangedEntries.Count; ++i)
+                {
+                    if (this.ChangedEntries[i].ChangeOrder == contentID)
+                    {
+                        return i;
+                    }
+                }
+
+                Error.ThrowBatchUnexpectedContent(InternalError.ChangeResponseUnknownContentID);
+                return -1;
+            }
+
+            #endregion Batch
+
+            #region callback handlers
+
+            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+            private void AsyncEndGetRequestStream(IAsyncResult asyncResult)
+            {
+                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
+                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
+                try
+                {
+                    CompleteCheck(pereq, InternalError.InvalidEndGetRequestCompleted);
+                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
+
+                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndGetRequestStream);
+                    HttpWebRequest httpWebRequest = Util.NullCheck(pereq.Request, InternalError.InvalidEndGetRequestStreamRequest);
+
+                    Stream stream = Util.NullCheck(httpWebRequest.EndGetRequestStream(asyncResult), InternalError.InvalidEndGetRequestStreamStream);
+                    pereq.RequestStream = stream;
+
+                    PerRequest.ContentStream contentStream = pereq.RequestContentStream;
+                    Util.NullCheck(contentStream, InternalError.InvalidEndGetRequestStreamContent);
+                    Util.NullCheck(contentStream.Stream, InternalError.InvalidEndGetRequestStreamContent);
+                    if (contentStream.IsKnownMemoryStream)
+                    {
+                        MemoryStream memoryStream = contentStream.Stream as MemoryStream;
+                        byte[] buffer = memoryStream.GetBuffer();
+                        int bufferOffset = checked((int)memoryStream.Position);
+                        int bufferLength = checked((int)memoryStream.Length) - bufferOffset;
+                        if ((null == buffer) || (0 == bufferLength))
+                        {
+                            Error.ThrowInternalError(InternalError.InvalidEndGetRequestStreamContentLength);
+                        }
+                    }
+
+                    pereq.RequestContentBufferValidLength = -1;
+
+                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetRequestStream_BeforeBeginRead");
+                    asyncResult = BaseAsyncResult.InvokeAsync(contentStream.Stream.BeginRead, pereq.RequestContentBuffer, 0, pereq.RequestContentBuffer.Length, this.AsyncRequestContentEndRead, pereq);
+                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
+                }
+                catch (Exception e)
+                {
+                    if (this.HandleFailure(pereq, e))
+                    {
+                        throw;
+                    }
+                }
+                finally
+                {
+                    this.HandleCompleted(pereq);
+                }
+            }
+
+            private void AsyncRequestContentEndRead(IAsyncResult asyncResult)
+            {
+                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
+                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
+                try
+                {
+                    CompleteCheck(pereq, InternalError.InvalidEndReadCompleted);
+                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
+
+                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndRead);
+                    PerRequest.ContentStream contentStream = pereq.RequestContentStream;
+                    Util.NullCheck(contentStream, InternalError.InvalidEndReadStream);
+                    Util.NullCheck(contentStream.Stream, InternalError.InvalidEndReadStream);
+                    Stream stream = Util.NullCheck(pereq.RequestStream, InternalError.InvalidEndReadStream);
+
+                    Util.DebugInjectFault("SaveAsyncResult::AsyncRequestContentEndRead_BeforeEndRead");
+                    int count = contentStream.Stream.EndRead(asyncResult);
+                    if (0 < count)
+                    {
+                        bool firstEndRead = (pereq.RequestContentBufferValidLength == -1);
+                        pereq.RequestContentBufferValidLength = count;
+
+                        if (!asyncResult.CompletedSynchronously || firstEndRead)
+                        {
+                            do
+                            {
+                                Util.DebugInjectFault("SaveAsyncResult::AsyncRequestContentEndRead_BeforeBeginWrite");
+                                asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginWrite, pereq.RequestContentBuffer, 0, pereq.RequestContentBufferValidLength, this.AsyncEndWrite, pereq);
+                                pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
+
+                                if (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally)
+                                {
+                                    Util.DebugInjectFault("SaveAsyncResult::AsyncRequestContentEndRead_BeforeBeginRead");
+                                    asyncResult = BaseAsyncResult.InvokeAsync(contentStream.Stream.BeginRead, pereq.RequestContentBuffer, 0, pereq.RequestContentBuffer.Length, this.AsyncRequestContentEndRead, pereq);
+                                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
+                                }
+
+
+                            }
+                            while (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally &&
+                                pereq.RequestContentBufferValidLength > 0);
+                        }
+                    }
+                    else
+                    {
+                        pereq.RequestContentBufferValidLength = 0;
+                        pereq.RequestStream = null;
+                        stream.Close();
+
+                        HttpWebRequest httpWebRequest = Util.NullCheck(pereq.Request, InternalError.InvalidEndWriteRequest);
+                        asyncResult = BaseAsyncResult.InvokeAsync(httpWebRequest.BeginGetResponse, this.AsyncEndGetResponse, pereq);
+                        pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
+                    }
+                }
+                catch (Exception e)
+                {
+                    if (this.HandleFailure(pereq, e))
+                    {
+                        throw;
+                    }
+                }
+                finally
+                {
+                    this.HandleCompleted(pereq);
+                }
+            }
+                        
+            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+            private void AsyncEndWrite(IAsyncResult asyncResult)
+            {
+                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
+                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
+                try
+                {
+                    CompleteCheck(pereq, InternalError.InvalidEndWriteCompleted);
+                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
+
+                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndWrite);
+
+                    PerRequest.ContentStream contentStream = pereq.RequestContentStream;
+                    Util.NullCheck(contentStream, InternalError.InvalidEndWriteStream);
+                    Util.NullCheck(contentStream.Stream, InternalError.InvalidEndWriteStream);
+                    Stream stream = Util.NullCheck(pereq.RequestStream, InternalError.InvalidEndWriteStream);
+                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndWrite_BeforeEndWrite");
+                    stream.EndWrite(asyncResult);
+
+                   if (!asyncResult.CompletedSynchronously)
+                    {
+                        Util.DebugInjectFault("SaveAsyncResult::AsyncEndWrite_BeforeBeginRead");
+                        asyncResult = BaseAsyncResult.InvokeAsync(contentStream.Stream.BeginRead, pereq.RequestContentBuffer, 0, pereq.RequestContentBuffer.Length, this.AsyncRequestContentEndRead, pereq);
+                        pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously;
+                    }
+                }
+                catch (Exception e)
+                {
+                    if (this.HandleFailure(pereq, e))
+                    {
+                        throw;
+                    }
+                }
+                finally
+                {
+                    this.HandleCompleted(pereq);
+                }
+            }
+
+            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+            private void AsyncEndGetResponse(IAsyncResult asyncResult)
+            {
+                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
+                PerRequest pereq = asyncResult == null ? null : asyncResult.AsyncState as PerRequest;
+                try
+                {
+                    CompleteCheck(pereq, InternalError.InvalidEndGetResponseCompleted);
+                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
+
+                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndGetResponse);
+                    HttpWebRequest httpWebRequest = Util.NullCheck(pereq.Request, InternalError.InvalidEndGetResponseRequest);
+
+                    HttpWebResponse response = null;
+                    try
+                    {
+                        Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetResponse::BeforeEndGetResponse");
+                        response = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult);
+                    }
+                    catch (WebException e)
+                    {
+                        response = (HttpWebResponse)e.Response;
+                        if (null == response)
+                        {
+                            throw;
+                        }
+                    }
+
+                    pereq.HttpWebResponse = Util.NullCheck(response, InternalError.InvalidEndGetResponseResponse);
+
+                    if (!IsFlagSet(this.options, SaveChangesOptions.Batch))
+                    {
+                        this.HandleOperationResponse(response);
+                    }
+
+                    this.copiedContentLength = 0;
+                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetResponse_BeforeGetStream");
+                    Stream stream = response.GetResponseStream();
+                    pereq.ResponseStream = stream;
+                    if ((null != stream) && stream.CanRead)
+                    {
+                        if (null != this.buildBatchWriter)
+                        {
+                            this.buildBatchWriter.Flush();
+                        }
+
+                        if (null == this.buildBatchBuffer)
+                        {
+                            this.buildBatchBuffer = new byte[8000];
+                        }
+
+                        do
+                        {
+                            Util.DebugInjectFault("SaveAsyncResult::AsyncEndGetResponse_BeforeBeginRead");
+                            asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginRead, this.buildBatchBuffer, 0, this.buildBatchBuffer.Length, this.AsyncEndRead, pereq);
+                            pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
+                        }
+                        while (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally && stream.CanRead);
+                    }
+                    else
+                    {
+                        pereq.SetComplete();
+
+                        if (!this.IsCompletedInternally)
+                        {
+                            this.SaveNextChange(pereq);
+                        }
+                    }
+                }
+                catch (Exception e)
+                {
+                    if (this.HandleFailure(pereq, e))
+                    {
+                        throw;
+                    }
+                }
+                finally
+                {
+                    this.HandleCompleted(pereq);
+                }
+            }
+
+           [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+            private void AsyncEndRead(IAsyncResult asyncResult)
+            {
+                Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
+                PerRequest pereq = asyncResult.AsyncState as PerRequest;
+                int count = 0;
+                try
+                {
+                    CompleteCheck(pereq, InternalError.InvalidEndReadCompleted);
+                    pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
+
+                    EqualRefCheck(this.request, pereq, InternalError.InvalidEndRead);
+                    Stream stream = Util.NullCheck(pereq.ResponseStream, InternalError.InvalidEndReadStream);
+
+                    Util.DebugInjectFault("SaveAsyncResult::AsyncEndRead_BeforeEndRead");
+                    count = stream.EndRead(asyncResult);
+                    if (0 < count)
+                    {
+                        Stream outputResponse = Util.NullCheck(this.httpWebResponseStream, InternalError.InvalidEndReadCopy);
+                        outputResponse.Write(this.buildBatchBuffer, 0, count);
+                        this.copiedContentLength += count;
+
+                        if (!asyncResult.CompletedSynchronously && stream.CanRead)
+                        {   
+                             do
+                            {
+                                asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginRead, this.buildBatchBuffer, 0, this.buildBatchBuffer.Length, this.AsyncEndRead, pereq);
+                                pereq.RequestCompletedSynchronously &= asyncResult.CompletedSynchronously; 
+                            }
+                            while (asyncResult.CompletedSynchronously && !pereq.RequestCompleted && !this.IsCompletedInternally && stream.CanRead);
+                        }
+                    }
+                    else
+                    {
+                        pereq.SetComplete();
+
+                        if (!this.IsCompletedInternally)
+                        {
+                            this.SaveNextChange(pereq);
+                        }
+                    }
+                }
+                catch (Exception e)
+                {
+                    if (this.HandleFailure(pereq, e))
+                    {
+                        throw;
+                    }
+                }
+                finally
+                {
+                    this.HandleCompleted(pereq);
+                }
+            }
+
+            private void SaveNextChange(PerRequest pereq)
+            {
+                Debug.Assert(this.executeAsync, "should be async");
+                if (!pereq.RequestCompleted)
+                {
+                    Error.ThrowInternalError(InternalError.SaveNextChangeIncomplete);
+                }
+
+                EqualRefCheck(this.request, pereq, InternalError.InvalidSaveNextChange);
+
+                if (IsFlagSet(this.options, SaveChangesOptions.Batch))
+                {
+                    this.httpWebResponseStream.Position = 0;
+                    this.request = null;
+                    this.SetCompleted();
+                }
+                else
+                {
+                    if (0 == this.copiedContentLength)
+                    {
+                        this.HandleOperationResponseNoData();
+                    }
+
+                    this.HandleOperationEnd();
+
+                    if (!this.processingMediaLinkEntry)
+                    {
+                        this.changesCompleted++;
+                    }
+
+                    pereq.Dispose();
+                    this.request = null;
+                    if (!pereq.RequestCompletedSynchronously)
+                    {   
+                        if (!this.IsCompletedInternally)
+                        {
+                            this.BeginNextChange(IsFlagSet(this.options, SaveChangesOptions.ReplaceOnUpdate));
+                        }
+                    }
+                }
+            }
+            #endregion
+
+            private sealed class PerRequest
+            {
+                private int requestStatus;
+
+                private byte[] requestContentBuffer;
+
+                internal PerRequest()
+                {
+                    this.RequestCompletedSynchronously = true;
+                }
+
+                internal HttpWebRequest Request
+                {
+                    get;
+                    set;
+                }
+
+                internal Stream RequestStream
+                {
+                    get;
+                    set;
+                }
+
+                internal ContentStream RequestContentStream
+                {
+                    get;
+                    set;
+                }
+
+                internal HttpWebResponse HttpWebResponse
+                {
+                    get;
+                    set;
+                }
+
+                internal Stream ResponseStream
+                {
+                    get;
+                    set;
+                }
+
+                internal bool RequestCompletedSynchronously
+                {
+                    get;
+                    set;
+                }
+
+                internal bool RequestCompleted
+                {
+                    get { return this.requestStatus != 0; }
+                }
+
+                internal bool RequestAborted
+                {
+                    get { return this.requestStatus == 2; }
+                }
+
+                internal byte[] RequestContentBuffer
+                {
+                    get
+                    {
+                        if (this.requestContentBuffer == null)
+                        {
+                            this.requestContentBuffer = new byte[64 * 1024];
+                        }
+
+                        return this.requestContentBuffer;
+                    }
+                }
+
+                internal int RequestContentBufferValidLength
+                {
+                    get;
+                    set;
+                }
+
+                internal void SetComplete()
+                {
+                    System.Threading.Interlocked.CompareExchange(ref this.requestStatus, 1, 0);
+                }
+
+                internal void SetAborted()
+                {
+                    System.Threading.Interlocked.Exchange(ref this.requestStatus, 2);
+                }
+                
+                internal void Dispose()
+                {
+                    Stream stream = null;
+
+                    if (null != (stream = this.ResponseStream))
+                    {
+                        this.ResponseStream = null;
+                        stream.Dispose();
+                    }
+
+                    if (null != this.RequestContentStream)
+                    {
+                        if (this.RequestContentStream.Stream != null && this.RequestContentStream.IsKnownMemoryStream)
+                        {
+                            this.RequestContentStream.Stream.Dispose();
+                        }
+
+                        this.RequestContentStream = null;
+                    }
+                    
+                    if (null != (stream = this.RequestStream))
+                    {
+                        this.RequestStream = null;
+                        try
+                        {
+                            Util.DebugInjectFault("PerRequest::Dispose_BeforeRequestStreamDisposed");
+                            stream.Dispose();
+                        }
+                        catch (WebException)
+                        {
+                            if (!this.RequestAborted)
+                            {
+                                throw;
+                            }
+
+                             Util.DebugInjectFault("PerRequest::Dispose_WebExceptionThrown");
+                        }
+                    }
+
+                    HttpWebResponse response = this.HttpWebResponse;
+                    if (null != response)
+                    {
+                        response.Close();
+                    }
+
+                    this.Request = null;
+                    this.SetComplete();
+                }
+
+                internal class ContentStream
+                {
+                     private readonly Stream stream;
+
+                    private readonly bool isKnownMemoryStream;
+
+                   public ContentStream(Stream stream, bool isKnownMemoryStream)
+                    {
+                        this.stream = stream;
+                        this.isKnownMemoryStream = isKnownMemoryStream;
+                    }
+
+                   public Stream Stream
+                    {
+                        get { return this.stream; }
+                    }
+
+                   public bool IsKnownMemoryStream
+                    {
+                        get { return this.isKnownMemoryStream; }
+                    }
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceEntityAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceEntityAttribute.cs
@@ -1,26 +1,26 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Common
-{
-    using System;
-    using System.Collections.ObjectModel;
-    using System.Data.Services.Client;
-    using System.Linq;
-
-    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
-    public sealed class DataServiceEntityAttribute : System.Attribute
-    {
-        public DataServiceEntityAttribute()
-        {
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Common
+{
+    using System;
+    using System.Collections.ObjectModel;
+    using System.Data.Services.Client;
+    using System.Linq;
+
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
+    public sealed class DataServiceEntityAttribute : System.Attribute
+    {
+        public DataServiceEntityAttribute()
+        {
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceKeyAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceKeyAttribute.cs
@@ -1,51 +1,51 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-namespace System.Data.Services.Common
-{
-    using System;
-    using System.Collections.ObjectModel;
-    using System.Data.Services.Client;
-    using System.Linq;
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1019:DefineAccessorsForAttributeArguments", Justification = "Accessors are available for processed input.")]
-    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
-    public sealed class DataServiceKeyAttribute : System.Attribute
-    {
-        private readonly ReadOnlyCollection<string> keyNames;
-
-        public DataServiceKeyAttribute(string keyName)
-        {
-            Util.CheckArgumentNull(keyName, "keyName");
-            Util.CheckArgumentNotEmpty(keyName, "KeyName");
-            this.keyNames = new ReadOnlyCollection<string>(new string[1] { keyName });
-        }
-
-        public DataServiceKeyAttribute(params string[] keyNames)
-        {
-            Util.CheckArgumentNull(keyNames, "keyNames");
-            if (keyNames.Length == 0 || keyNames.Any(f => f == null || f.Length == 0))
-            {
-                throw Error.Argument(Strings.DSKAttribute_MustSpecifyAtleastOnePropertyName, "keyNames");
-            }
-
-            this.keyNames = new ReadOnlyCollection<string>(keyNames);
-        }
-
-        public ReadOnlyCollection<string> KeyNames
-        {
-            get
-            {
-                return this.keyNames;
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+namespace System.Data.Services.Common
+{
+    using System;
+    using System.Collections.ObjectModel;
+    using System.Data.Services.Client;
+    using System.Linq;
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1019:DefineAccessorsForAttributeArguments", Justification = "Accessors are available for processed input.")]
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
+    public sealed class DataServiceKeyAttribute : System.Attribute
+    {
+        private readonly ReadOnlyCollection<string> keyNames;
+
+        public DataServiceKeyAttribute(string keyName)
+        {
+            Util.CheckArgumentNull(keyName, "keyName");
+            Util.CheckArgumentNotEmpty(keyName, "KeyName");
+            this.keyNames = new ReadOnlyCollection<string>(new string[1] { keyName });
+        }
+
+        public DataServiceKeyAttribute(params string[] keyNames)
+        {
+            Util.CheckArgumentNull(keyNames, "keyNames");
+            if (keyNames.Length == 0 || keyNames.Any(f => f == null || f.Length == 0))
+            {
+                throw Error.Argument(Strings.DSKAttribute_MustSpecifyAtleastOnePropertyName, "keyNames");
+            }
+
+            this.keyNames = new ReadOnlyCollection<string>(keyNames);
+        }
+
+        public ReadOnlyCollection<string> KeyNames
+        {
+            get
+            {
+                return this.keyNames;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceProtocolVersion.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceProtocolVersion.cs
@@ -1,21 +1,21 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    public enum DataServiceProtocolVersion
-    {
-        V1, 
-
-        V2
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    public enum DataServiceProtocolVersion
+    {
+        V1, 
+
+        V2
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQuery.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQuery.cs
@@ -1,68 +1,68 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Collections;
-    using System.Linq;
-    using System.Linq.Expressions;
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
-    public abstract class DataServiceQuery : DataServiceRequest, IQueryable
-    {
-        internal DataServiceQuery()
-        {
-        }
-
-        public abstract Expression Expression
-        {
-            get;
-        }
-
-        public abstract IQueryProvider Provider
-        {
-            get;
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1033", Justification = "required for this feature")]
-        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
-        {
-            throw Error.NotImplemented();
-        }
-
-#if !ASTORIA_LIGHT
-        public IEnumerable Execute()
-        {
-            return this.ExecuteInternal();
-        }
-#endif
-
-        public IAsyncResult BeginExecute(AsyncCallback callback, object state)
-        {
-            return this.BeginExecuteInternal(callback, state);
-        }
-
-        public IEnumerable EndExecute(IAsyncResult asyncResult)
-        {
-            return this.EndExecuteInternal(asyncResult);
-        }
-
-#if !ASTORIA_LIGHT
-        internal abstract IEnumerable ExecuteInternal();
-#endif
-
-        internal abstract IAsyncResult BeginExecuteInternal(AsyncCallback callback, object state);
-
-        internal abstract IEnumerable EndExecuteInternal(IAsyncResult asyncResult);
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Collections;
+    using System.Linq;
+    using System.Linq.Expressions;
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
+    public abstract class DataServiceQuery : DataServiceRequest, IQueryable
+    {
+        internal DataServiceQuery()
+        {
+        }
+
+        public abstract Expression Expression
+        {
+            get;
+        }
+
+        public abstract IQueryProvider Provider
+        {
+            get;
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1033", Justification = "required for this feature")]
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+            throw Error.NotImplemented();
+        }
+
+#if !ASTORIA_LIGHT
+        public IEnumerable Execute()
+        {
+            return this.ExecuteInternal();
+        }
+#endif
+
+        public IAsyncResult BeginExecute(AsyncCallback callback, object state)
+        {
+            return this.BeginExecuteInternal(callback, state);
+        }
+
+        public IEnumerable EndExecute(IAsyncResult asyncResult)
+        {
+            return this.EndExecuteInternal(asyncResult);
+        }
+
+#if !ASTORIA_LIGHT
+        internal abstract IEnumerable ExecuteInternal();
+#endif
+
+        internal abstract IAsyncResult BeginExecuteInternal(AsyncCallback callback, object state);
+
+        internal abstract IEnumerable EndExecuteInternal(IAsyncResult asyncResult);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQueryContinuation.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQueryContinuation.cs
@@ -1,119 +1,119 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-    using System.Text;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("{NextLinkUri}")]
-    public abstract class DataServiceQueryContinuation
-    {
-        #region Private fields.
-
-        private readonly Uri nextLinkUri;
-        
-        private readonly ProjectionPlan plan;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        internal DataServiceQueryContinuation(Uri nextLinkUri, ProjectionPlan plan)
-        {
-            Debug.Assert(nextLinkUri != null, "nextLinkUri != null");
-            Debug.Assert(plan != null, "plan != null");
-
-            this.nextLinkUri = nextLinkUri;
-            this.plan = plan;
-        }
-
-        #endregion Contructors.
-
-        #region Properties.
-
-        public Uri NextLinkUri
-        {
-            get { return this.nextLinkUri; }
-        }
-
-        internal abstract Type ElementType
-        {
-            get;
-        }
-
-        internal ProjectionPlan Plan
-        {
-            get { return this.plan; }
-        }
-
-        #endregion Properties.
-
-        #region Methods.
-
-        public override string ToString()
-        {
-            return this.NextLinkUri.ToString();
-        }
-
-        internal static DataServiceQueryContinuation Create(Uri nextLinkUri, ProjectionPlan plan)
-        {
-            Debug.Assert(plan != null || nextLinkUri == null, "plan != null || nextLinkUri == null");
-
-            if (nextLinkUri == null)
-            {
-                return null;
-            }
-
-            var constructors = typeof(DataServiceQueryContinuation<>).MakeGenericType(plan.ProjectedType).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance);
-            Debug.Assert(constructors.Length == 1, "constructors.Length == 1");
-            object result = Util.ConstructorInvoke(constructors[0], new object[] { nextLinkUri, plan });
-            return (DataServiceQueryContinuation)result;
-        }
-
-        internal QueryComponents CreateQueryComponents()
-        {
-            QueryComponents result = new QueryComponents(this.NextLinkUri, Util.DataServiceVersionEmpty, this.Plan.LastSegmentType, null, null);
-            return result;
-        }
-
-        #endregion Methods.
-    }
-
-    public sealed class DataServiceQueryContinuation<T> : DataServiceQueryContinuation
-    {
-        #region Contructors.
-
-        internal DataServiceQueryContinuation(Uri nextLinkUri, ProjectionPlan plan)
-            : base(nextLinkUri, plan)
-        {
-        }
-
-        #endregion Contructors.
-
-        #region Properties.
-
-        internal override Type ElementType
-        {
-            get { return typeof(T); }
-        }
-
-        #endregion Properties.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+    using System.Text;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("{NextLinkUri}")]
+    public abstract class DataServiceQueryContinuation
+    {
+        #region Private fields.
+
+        private readonly Uri nextLinkUri;
+        
+        private readonly ProjectionPlan plan;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        internal DataServiceQueryContinuation(Uri nextLinkUri, ProjectionPlan plan)
+        {
+            Debug.Assert(nextLinkUri != null, "nextLinkUri != null");
+            Debug.Assert(plan != null, "plan != null");
+
+            this.nextLinkUri = nextLinkUri;
+            this.plan = plan;
+        }
+
+        #endregion Contructors.
+
+        #region Properties.
+
+        public Uri NextLinkUri
+        {
+            get { return this.nextLinkUri; }
+        }
+
+        internal abstract Type ElementType
+        {
+            get;
+        }
+
+        internal ProjectionPlan Plan
+        {
+            get { return this.plan; }
+        }
+
+        #endregion Properties.
+
+        #region Methods.
+
+        public override string ToString()
+        {
+            return this.NextLinkUri.ToString();
+        }
+
+        internal static DataServiceQueryContinuation Create(Uri nextLinkUri, ProjectionPlan plan)
+        {
+            Debug.Assert(plan != null || nextLinkUri == null, "plan != null || nextLinkUri == null");
+
+            if (nextLinkUri == null)
+            {
+                return null;
+            }
+
+            var constructors = typeof(DataServiceQueryContinuation<>).MakeGenericType(plan.ProjectedType).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance);
+            Debug.Assert(constructors.Length == 1, "constructors.Length == 1");
+            object result = Util.ConstructorInvoke(constructors[0], new object[] { nextLinkUri, plan });
+            return (DataServiceQueryContinuation)result;
+        }
+
+        internal QueryComponents CreateQueryComponents()
+        {
+            QueryComponents result = new QueryComponents(this.NextLinkUri, Util.DataServiceVersionEmpty, this.Plan.LastSegmentType, null, null);
+            return result;
+        }
+
+        #endregion Methods.
+    }
+
+    public sealed class DataServiceQueryContinuation<T> : DataServiceQueryContinuation
+    {
+        #region Contructors.
+
+        internal DataServiceQueryContinuation(Uri nextLinkUri, ProjectionPlan plan)
+            : base(nextLinkUri, plan)
+        {
+        }
+
+        #endregion Contructors.
+
+        #region Properties.
+
+        internal override Type ElementType
+        {
+            get { return typeof(T); }
+        }
+
+        #endregion Properties.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQueryException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQueryException.cs
@@ -1,77 +1,77 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-
-#if !ASTORIA_LIGHT
-    [Serializable]
-#endif
-    [System.Diagnostics.DebuggerDisplay("{Message}")]
-    public sealed class DataServiceQueryException : InvalidOperationException
-    {
-        #region Private fields.
-
-#if !ASTORIA_LIGHT
-        [NonSerialized]
-#endif
-        private readonly QueryOperationResponse response;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        public DataServiceQueryException()
-            : base(Strings.DataServiceException_GeneralError)
-        {
-        }
-
-        public DataServiceQueryException(string message)
-            : base(message)
-        {
-        }
-
-        public DataServiceQueryException(string message, Exception innerException)
-            : base(message, innerException)
-        {
-        }
-
-        public DataServiceQueryException(string message, Exception innerException, QueryOperationResponse response)
-            : base(message, innerException)
-        {
-            this.response = response;
-        }
-
-#if !ASTORIA_LIGHT
-#pragma warning disable 0628
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1047", Justification = "Follows serialization info pattern.")]
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032", Justification = "Follows serialization info pattern.")]
-        protected DataServiceQueryException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
-            : base(info, context)
-        {
-        }
-#pragma warning restore 0628
-#endif
-
-        #endregion Constructors.
-
-        #region Public properties.
-
-        public QueryOperationResponse Response
-        {
-            get { return this.response; }
-        }
-
-        #endregion Public properties.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+
+#if !ASTORIA_LIGHT
+    [Serializable]
+#endif
+    [System.Diagnostics.DebuggerDisplay("{Message}")]
+    public sealed class DataServiceQueryException : InvalidOperationException
+    {
+        #region Private fields.
+
+#if !ASTORIA_LIGHT
+        [NonSerialized]
+#endif
+        private readonly QueryOperationResponse response;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        public DataServiceQueryException()
+            : base(Strings.DataServiceException_GeneralError)
+        {
+        }
+
+        public DataServiceQueryException(string message)
+            : base(message)
+        {
+        }
+
+        public DataServiceQueryException(string message, Exception innerException)
+            : base(message, innerException)
+        {
+        }
+
+        public DataServiceQueryException(string message, Exception innerException, QueryOperationResponse response)
+            : base(message, innerException)
+        {
+            this.response = response;
+        }
+
+#if !ASTORIA_LIGHT
+#pragma warning disable 0628
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1047", Justification = "Follows serialization info pattern.")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032", Justification = "Follows serialization info pattern.")]
+        protected DataServiceQueryException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
+            : base(info, context)
+        {
+        }
+#pragma warning restore 0628
+#endif
+
+        #endregion Constructors.
+
+        #region Public properties.
+
+        public QueryOperationResponse Response
+        {
+            get { return this.response; }
+        }
+
+        #endregion Public properties.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQueryOfT.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceQueryOfT.cs
@@ -1,211 +1,211 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.IO;
-    using System.Linq;
-    using System.Linq.Expressions;
-#if !ASTORIA_LIGHT    
-    using System.Net;
-#else
-    using System.Data.Services.Http;
-#endif
-    using System.Reflection;
-    using System.Collections;
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = "required for this feature")]
-    public class DataServiceQuery<TElement> : DataServiceQuery, IQueryable<TElement>
-    {
-        #region Private fields.
-
-        private readonly Expression queryExpression;
-
-        private readonly DataServiceQueryProvider queryProvider;
-
-        private QueryComponents queryComponents;
-
-        #endregion Private fields.
-
-        private DataServiceQuery(Expression expression, DataServiceQueryProvider provider)
-        {
-            Debug.Assert(null != provider.Context, "null context");
-            Debug.Assert(expression != null, "null expression");
-            Debug.Assert(provider is DataServiceQueryProvider, "Currently only support Web Query Provider");
-
-            this.queryExpression = expression;
-            this.queryProvider = provider;
-        }
-
-        #region IQueryable implementation
-        public override Type ElementType
-        {
-            get { return typeof(TElement); }
-        }
-
-        public override Expression Expression
-        {
-            get { return this.queryExpression; }
-        }
-
-        public override IQueryProvider Provider
-        {
-            get { return this.queryProvider; }
-        }
-
-        #endregion
-
-        public override Uri RequestUri
-        {
-            get
-            {
-                return this.Translate().Uri;
-            }
-        }
-
-        internal override ProjectionPlan Plan
-        {
-            get { return null; }
-        }
-
-        internal override QueryComponents QueryComponents
-        {
-            get
-            {
-                return this.Translate();
-            }
-        }
-
-        public new IAsyncResult BeginExecute(AsyncCallback callback, object state)
-        {
-            return base.BeginExecute(this, this.queryProvider.Context, callback, state);
-        }
-
-        public new IEnumerable<TElement> EndExecute(IAsyncResult asyncResult)
-        {
-            return DataServiceRequest.EndExecute<TElement>(this, this.queryProvider.Context, asyncResult);
-        }
-
-#if !ASTORIA_LIGHT        
-        public new IEnumerable<TElement> Execute()
-        {
-            return this.Execute<TElement>(this.queryProvider.Context, this.Translate());
-        }
-#endif
-
-        public DataServiceQuery<TElement> Expand(string path)
-        {
-            Util.CheckArgumentNull(path, "path");
-            Util.CheckArgumentNotEmpty(path, "path");
-
-            MethodInfo mi = typeof(DataServiceQuery<TElement>).GetMethod("Expand");
-            return (DataServiceQuery<TElement>)this.Provider.CreateQuery<TElement>(
-                Expression.Call(
-                    Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)),
-                    mi,
-                    new Expression[] { Expression.Constant(path) }));
-        }
-
-        public DataServiceQuery<TElement> IncludeTotalCount()
-        {
-            MethodInfo mi = typeof(DataServiceQuery<TElement>).GetMethod("IncludeTotalCount");
-            
-            return (DataServiceQuery<TElement>)this.Provider.CreateQuery<TElement>(
-                Expression.Call(
-                    Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)),
-                    mi));
-        }
-
-        public DataServiceQuery<TElement> AddQueryOption(string name, object value)
-        {
-            Util.CheckArgumentNull(name, "name");
-            Util.CheckArgumentNull(value, "value");
-            MethodInfo mi = typeof(DataServiceQuery<TElement>).GetMethod("AddQueryOption");
-            return (DataServiceQuery<TElement>)this.Provider.CreateQuery<TElement>(
-                Expression.Call(
-                    Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)),
-                    mi,
-                    new Expression[] { Expression.Constant(name), Expression.Constant(value, typeof(object)) }));
-        }
-
-#if !ASTORIA_LIGHT        
-        public IEnumerator<TElement> GetEnumerator()
-        {
-            return this.Execute().GetEnumerator();            
-        }
-#else
-        IEnumerator<TElement> IEnumerable<TElement>.GetEnumerator()
-        {
-            throw Error.NotSupported(Strings.DataServiceQuery_EnumerationNotSupportedInSL);
-        }
-#endif
-
-        public override string ToString()
-        {
-            try
-            {
-                return base.ToString();
-            }
-            catch (NotSupportedException e)
-            {
-                return Strings.ALinq_TranslationError(e.Message);
-            }
-        }
-
-        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
-        {
-#if !ASTORIA_LIGHT            
-    return this.GetEnumerator();
-#else
-            throw Error.NotSupported();
-#endif
-        }
-
-#if !ASTORIA_LIGHT
-        internal override IEnumerable ExecuteInternal()
-        {
-            return this.Execute();
-        }
-#endif
-
-        internal override IAsyncResult BeginExecuteInternal(AsyncCallback callback, object state)
-        {
-            return this.BeginExecute(callback, state);
-        }
-
-        internal override IEnumerable EndExecuteInternal(IAsyncResult asyncResult)
-        {
-            return this.EndExecute(asyncResult);
-        }
-
-        private QueryComponents Translate()
-        {
-            if (this.queryComponents == null)
-            {
-                this.queryComponents = this.queryProvider.Translate(this.queryExpression);
-            }
-
-            return this.queryComponents;
-        }
-
-        internal class DataServiceOrderedQuery : DataServiceQuery<TElement>, IOrderedQueryable<TElement>, IOrderedQueryable
-        {
-            internal DataServiceOrderedQuery(Expression expression, DataServiceQueryProvider provider)
-                : base(expression, provider)
-            {
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.IO;
+    using System.Linq;
+    using System.Linq.Expressions;
+#if !ASTORIA_LIGHT    
+    using System.Net;
+#else
+    using System.Data.Services.Http;
+#endif
+    using System.Reflection;
+    using System.Collections;
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = "required for this feature")]
+    public class DataServiceQuery<TElement> : DataServiceQuery, IQueryable<TElement>
+    {
+        #region Private fields.
+
+        private readonly Expression queryExpression;
+
+        private readonly DataServiceQueryProvider queryProvider;
+
+        private QueryComponents queryComponents;
+
+        #endregion Private fields.
+
+        private DataServiceQuery(Expression expression, DataServiceQueryProvider provider)
+        {
+            Debug.Assert(null != provider.Context, "null context");
+            Debug.Assert(expression != null, "null expression");
+            Debug.Assert(provider is DataServiceQueryProvider, "Currently only support Web Query Provider");
+
+            this.queryExpression = expression;
+            this.queryProvider = provider;
+        }
+
+        #region IQueryable implementation
+        public override Type ElementType
+        {
+            get { return typeof(TElement); }
+        }
+
+        public override Expression Expression
+        {
+            get { return this.queryExpression; }
+        }
+
+        public override IQueryProvider Provider
+        {
+            get { return this.queryProvider; }
+        }
+
+        #endregion
+
+        public override Uri RequestUri
+        {
+            get
+            {
+                return this.Translate().Uri;
+            }
+        }
+
+        internal override ProjectionPlan Plan
+        {
+            get { return null; }
+        }
+
+        internal override QueryComponents QueryComponents
+        {
+            get
+            {
+                return this.Translate();
+            }
+        }
+
+        public new IAsyncResult BeginExecute(AsyncCallback callback, object state)
+        {
+            return base.BeginExecute(this, this.queryProvider.Context, callback, state);
+        }
+
+        public new IEnumerable<TElement> EndExecute(IAsyncResult asyncResult)
+        {
+            return DataServiceRequest.EndExecute<TElement>(this, this.queryProvider.Context, asyncResult);
+        }
+
+#if !ASTORIA_LIGHT        
+        public new IEnumerable<TElement> Execute()
+        {
+            return this.Execute<TElement>(this.queryProvider.Context, this.Translate());
+        }
+#endif
+
+        public DataServiceQuery<TElement> Expand(string path)
+        {
+            Util.CheckArgumentNull(path, "path");
+            Util.CheckArgumentNotEmpty(path, "path");
+
+            MethodInfo mi = typeof(DataServiceQuery<TElement>).GetMethod("Expand");
+            return (DataServiceQuery<TElement>)this.Provider.CreateQuery<TElement>(
+                Expression.Call(
+                    Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)),
+                    mi,
+                    new Expression[] { Expression.Constant(path) }));
+        }
+
+        public DataServiceQuery<TElement> IncludeTotalCount()
+        {
+            MethodInfo mi = typeof(DataServiceQuery<TElement>).GetMethod("IncludeTotalCount");
+            
+            return (DataServiceQuery<TElement>)this.Provider.CreateQuery<TElement>(
+                Expression.Call(
+                    Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)),
+                    mi));
+        }
+
+        public DataServiceQuery<TElement> AddQueryOption(string name, object value)
+        {
+            Util.CheckArgumentNull(name, "name");
+            Util.CheckArgumentNull(value, "value");
+            MethodInfo mi = typeof(DataServiceQuery<TElement>).GetMethod("AddQueryOption");
+            return (DataServiceQuery<TElement>)this.Provider.CreateQuery<TElement>(
+                Expression.Call(
+                    Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)),
+                    mi,
+                    new Expression[] { Expression.Constant(name), Expression.Constant(value, typeof(object)) }));
+        }
+
+#if !ASTORIA_LIGHT        
+        public IEnumerator<TElement> GetEnumerator()
+        {
+            return this.Execute().GetEnumerator();            
+        }
+#else
+        IEnumerator<TElement> IEnumerable<TElement>.GetEnumerator()
+        {
+            throw Error.NotSupported(Strings.DataServiceQuery_EnumerationNotSupportedInSL);
+        }
+#endif
+
+        public override string ToString()
+        {
+            try
+            {
+                return base.ToString();
+            }
+            catch (NotSupportedException e)
+            {
+                return Strings.ALinq_TranslationError(e.Message);
+            }
+        }
+
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+#if !ASTORIA_LIGHT            
+    return this.GetEnumerator();
+#else
+            throw Error.NotSupported();
+#endif
+        }
+
+#if !ASTORIA_LIGHT
+        internal override IEnumerable ExecuteInternal()
+        {
+            return this.Execute();
+        }
+#endif
+
+        internal override IAsyncResult BeginExecuteInternal(AsyncCallback callback, object state)
+        {
+            return this.BeginExecute(callback, state);
+        }
+
+        internal override IEnumerable EndExecuteInternal(IAsyncResult asyncResult)
+        {
+            return this.EndExecute(asyncResult);
+        }
+
+        private QueryComponents Translate()
+        {
+            if (this.queryComponents == null)
+            {
+                this.queryComponents = this.queryProvider.Translate(this.queryExpression);
+            }
+
+            return this.queryComponents;
+        }
+
+        internal class DataServiceOrderedQuery : DataServiceQuery<TElement>, IOrderedQueryable<TElement>, IOrderedQueryable
+        {
+            internal DataServiceOrderedQuery(Expression expression, DataServiceQueryProvider provider)
+                : base(expression, provider)
+            {
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequest.cs
@@ -1,217 +1,217 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.IO;
-    using System.Linq;
-    using System.Text;
-#if !ASTORIA_LIGHT    
-    using System.Net;
-#else
-    using System.Data.Services.Http;
-#endif
-    using System.Xml;
-
-    public abstract class DataServiceRequest
-    {
-        internal DataServiceRequest()
-        {
-        }
-
-        public abstract Type ElementType
-        {
-            get;
-        }
-
-        public abstract Uri RequestUri
-        {
-            get;
-        }
-
-        internal abstract ProjectionPlan Plan
-        {
-            get;
-        }
-
-        internal abstract QueryComponents QueryComponents
-        {
-            get;
-        }
-
-        public override string ToString()
-        {
-            return this.QueryComponents.Uri.ToString();
-        }   
-
-        internal static MaterializeAtom Materialize(DataServiceContext context, QueryComponents queryComponents, ProjectionPlan plan, string contentType, Stream response)
-        {
-            Debug.Assert(null != queryComponents, "querycomponents");
-
-            string mime = null;
-            Encoding encoding = null;
-            if (!String.IsNullOrEmpty(contentType))
-            {
-                HttpProcessUtility.ReadContentType(contentType, out mime, out encoding);
-            }
-
-            if (String.Equals(mime, XmlConstants.MimeApplicationAtom, StringComparison.OrdinalIgnoreCase) ||
-                String.Equals(mime, XmlConstants.MimeApplicationXml, StringComparison.OrdinalIgnoreCase))
-            {
-                if (null != response)
-                {
-                    XmlReader reader = XmlUtil.CreateXmlReader(response, encoding);
-                    return new MaterializeAtom(context, reader, queryComponents, plan, context.MergeOption);
-                }
-            }
-
-            return MaterializeAtom.EmptyResults;
-        }
-
-        internal static DataServiceRequest GetInstance(Type elementType, Uri requestUri)
-        {
-            Type genericType = typeof(DataServiceRequest<>).MakeGenericType(elementType);
-            return (DataServiceRequest)Activator.CreateInstance(genericType, new object[] { requestUri });
-        }
-
-        internal static IEnumerable<TElement> EndExecute<TElement>(object source, DataServiceContext context, IAsyncResult asyncResult)
-        {
-            QueryResult result = null;
-            try
-            {
-                result = QueryResult.EndExecute<TElement>(source, asyncResult);
-                return result.ProcessResult<TElement>(context, result.ServiceRequest.Plan);
-            }
-            catch (DataServiceQueryException ex)
-            {
-                Exception inEx = ex;
-                while (inEx.InnerException != null)
-                {
-                    inEx = inEx.InnerException;
-                }
-
-                DataServiceClientException serviceEx = inEx as DataServiceClientException;
-                if (context.IgnoreResourceNotFoundException && serviceEx != null && serviceEx.StatusCode == (int)HttpStatusCode.NotFound)
-                {
-                    QueryOperationResponse qor = new QueryOperationResponse<TElement>(new Dictionary<string, string>(ex.Response.Headers), ex.Response.Query, MaterializeAtom.EmptyResults);
-                    qor.StatusCode = (int)HttpStatusCode.NotFound;
-                    return (IEnumerable<TElement>)qor;
-                }
-
-                throw;
-            }
-        }
-
-#if !ASTORIA_LIGHT        
-        internal QueryOperationResponse<TElement> Execute<TElement>(DataServiceContext context, QueryComponents queryComponents)
-        {
-            QueryResult result = null;
-            try
-            {
-                DataServiceRequest<TElement> serviceRequest = new DataServiceRequest<TElement>(queryComponents, this.Plan);
-                result = serviceRequest.CreateResult(this, context, null, null);
-                result.Execute();
-                return result.ProcessResult<TElement>(context, this.Plan);
-            }
-            catch (InvalidOperationException ex)
-            {
-                QueryOperationResponse operationResponse = result.GetResponse<TElement>(MaterializeAtom.EmptyResults);
-
-                if (null != operationResponse)
-                {
-                    if (context.IgnoreResourceNotFoundException)
-                    {
-                        DataServiceClientException cex = ex as DataServiceClientException;
-                        if (cex != null && cex.StatusCode == (int)HttpStatusCode.NotFound)
-                        {
-                            return (QueryOperationResponse<TElement>)operationResponse;
-                        }
-                    }
-
-                    operationResponse.Error = ex;
-                    throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse);
-                }
-
-                throw;
-            }
-        }
-
-        internal long GetQuerySetCount(DataServiceContext context)
-        {
-            Debug.Assert(null != context, "context is null");
-            this.QueryComponents.Version = Util.DataServiceVersion2;
-
-            QueryResult response = null;
-            DataServiceRequest<long> serviceRequest = new DataServiceRequest<long>(this.QueryComponents, null);
-            HttpWebRequest request = context.CreateRequest(this.QueryComponents.Uri, XmlConstants.HttpMethodGet, false, null, this.QueryComponents.Version, false);
-            
-            request.Accept = "text/plain";
-            response = new QueryResult(this, "Execute", serviceRequest, request, null, null);
-
-            try
-            {
-                response.Execute();
-
-                if (HttpStatusCode.NoContent != response.StatusCode)
-                {
-                    StreamReader sr = new StreamReader(response.GetResponseStream());
-                    long r = -1;
-                    try
-                    {
-                        r = XmlConvert.ToInt64(sr.ReadToEnd());
-                    }
-                    finally
-                    {
-                        sr.Close();
-                    }
-
-                    return r;
-                }
-                else
-                {
-                    throw new DataServiceQueryException(Strings.DataServiceRequest_FailGetCount, response.Failure);
-                }
-            }
-            catch (InvalidOperationException ex)
-            {
-                QueryOperationResponse operationResponse = null;
-                operationResponse = response.GetResponse<long>(MaterializeAtom.EmptyResults);
-                if (null != operationResponse)
-                {
-                    operationResponse.Error = ex;
-                    throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse);
-                }
-
-                throw;
-            }
-        }
-#endif
-
-        internal IAsyncResult BeginExecute(object source, DataServiceContext context, AsyncCallback callback, object state)
-        {
-            QueryResult result = this.CreateResult(source, context, callback, state);
-            result.BeginExecute();
-            return result;
-        }
-
-        private QueryResult CreateResult(object source, DataServiceContext context, AsyncCallback callback, object state)
-        {
-            Debug.Assert(null != context, "context is null");
-            HttpWebRequest request = context.CreateRequest(this.QueryComponents.Uri, XmlConstants.HttpMethodGet, false, null, this.QueryComponents.Version, false);
-            return new QueryResult(source, "Execute", this, request, callback, state);
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.IO;
+    using System.Linq;
+    using System.Text;
+#if !ASTORIA_LIGHT    
+    using System.Net;
+#else
+    using System.Data.Services.Http;
+#endif
+    using System.Xml;
+
+    public abstract class DataServiceRequest
+    {
+        internal DataServiceRequest()
+        {
+        }
+
+        public abstract Type ElementType
+        {
+            get;
+        }
+
+        public abstract Uri RequestUri
+        {
+            get;
+        }
+
+        internal abstract ProjectionPlan Plan
+        {
+            get;
+        }
+
+        internal abstract QueryComponents QueryComponents
+        {
+            get;
+        }
+
+        public override string ToString()
+        {
+            return this.QueryComponents.Uri.ToString();
+        }   
+
+        internal static MaterializeAtom Materialize(DataServiceContext context, QueryComponents queryComponents, ProjectionPlan plan, string contentType, Stream response)
+        {
+            Debug.Assert(null != queryComponents, "querycomponents");
+
+            string mime = null;
+            Encoding encoding = null;
+            if (!String.IsNullOrEmpty(contentType))
+            {
+                HttpProcessUtility.ReadContentType(contentType, out mime, out encoding);
+            }
+
+            if (String.Equals(mime, XmlConstants.MimeApplicationAtom, StringComparison.OrdinalIgnoreCase) ||
+                String.Equals(mime, XmlConstants.MimeApplicationXml, StringComparison.OrdinalIgnoreCase))
+            {
+                if (null != response)
+                {
+                    XmlReader reader = XmlUtil.CreateXmlReader(response, encoding);
+                    return new MaterializeAtom(context, reader, queryComponents, plan, context.MergeOption);
+                }
+            }
+
+            return MaterializeAtom.EmptyResults;
+        }
+
+        internal static DataServiceRequest GetInstance(Type elementType, Uri requestUri)
+        {
+            Type genericType = typeof(DataServiceRequest<>).MakeGenericType(elementType);
+            return (DataServiceRequest)Activator.CreateInstance(genericType, new object[] { requestUri });
+        }
+
+        internal static IEnumerable<TElement> EndExecute<TElement>(object source, DataServiceContext context, IAsyncResult asyncResult)
+        {
+            QueryResult result = null;
+            try
+            {
+                result = QueryResult.EndExecute<TElement>(source, asyncResult);
+                return result.ProcessResult<TElement>(context, result.ServiceRequest.Plan);
+            }
+            catch (DataServiceQueryException ex)
+            {
+                Exception inEx = ex;
+                while (inEx.InnerException != null)
+                {
+                    inEx = inEx.InnerException;
+                }
+
+                DataServiceClientException serviceEx = inEx as DataServiceClientException;
+                if (context.IgnoreResourceNotFoundException && serviceEx != null && serviceEx.StatusCode == (int)HttpStatusCode.NotFound)
+                {
+                    QueryOperationResponse qor = new QueryOperationResponse<TElement>(new Dictionary<string, string>(ex.Response.Headers), ex.Response.Query, MaterializeAtom.EmptyResults);
+                    qor.StatusCode = (int)HttpStatusCode.NotFound;
+                    return (IEnumerable<TElement>)qor;
+                }
+
+                throw;
+            }
+        }
+
+#if !ASTORIA_LIGHT        
+        internal QueryOperationResponse<TElement> Execute<TElement>(DataServiceContext context, QueryComponents queryComponents)
+        {
+            QueryResult result = null;
+            try
+            {
+                DataServiceRequest<TElement> serviceRequest = new DataServiceRequest<TElement>(queryComponents, this.Plan);
+                result = serviceRequest.CreateResult(this, context, null, null);
+                result.Execute();
+                return result.ProcessResult<TElement>(context, this.Plan);
+            }
+            catch (InvalidOperationException ex)
+            {
+                QueryOperationResponse operationResponse = result.GetResponse<TElement>(MaterializeAtom.EmptyResults);
+
+                if (null != operationResponse)
+                {
+                    if (context.IgnoreResourceNotFoundException)
+                    {
+                        DataServiceClientException cex = ex as DataServiceClientException;
+                        if (cex != null && cex.StatusCode == (int)HttpStatusCode.NotFound)
+                        {
+                            return (QueryOperationResponse<TElement>)operationResponse;
+                        }
+                    }
+
+                    operationResponse.Error = ex;
+                    throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse);
+                }
+
+                throw;
+            }
+        }
+
+        internal long GetQuerySetCount(DataServiceContext context)
+        {
+            Debug.Assert(null != context, "context is null");
+            this.QueryComponents.Version = Util.DataServiceVersion2;
+
+            QueryResult response = null;
+            DataServiceRequest<long> serviceRequest = new DataServiceRequest<long>(this.QueryComponents, null);
+            HttpWebRequest request = context.CreateRequest(this.QueryComponents.Uri, XmlConstants.HttpMethodGet, false, null, this.QueryComponents.Version, false);
+            
+            request.Accept = "text/plain";
+            response = new QueryResult(this, "Execute", serviceRequest, request, null, null);
+
+            try
+            {
+                response.Execute();
+
+                if (HttpStatusCode.NoContent != response.StatusCode)
+                {
+                    StreamReader sr = new StreamReader(response.GetResponseStream());
+                    long r = -1;
+                    try
+                    {
+                        r = XmlConvert.ToInt64(sr.ReadToEnd());
+                    }
+                    finally
+                    {
+                        sr.Close();
+                    }
+
+                    return r;
+                }
+                else
+                {
+                    throw new DataServiceQueryException(Strings.DataServiceRequest_FailGetCount, response.Failure);
+                }
+            }
+            catch (InvalidOperationException ex)
+            {
+                QueryOperationResponse operationResponse = null;
+                operationResponse = response.GetResponse<long>(MaterializeAtom.EmptyResults);
+                if (null != operationResponse)
+                {
+                    operationResponse.Error = ex;
+                    throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse);
+                }
+
+                throw;
+            }
+        }
+#endif
+
+        internal IAsyncResult BeginExecute(object source, DataServiceContext context, AsyncCallback callback, object state)
+        {
+            QueryResult result = this.CreateResult(source, context, callback, state);
+            result.BeginExecute();
+            return result;
+        }
+
+        private QueryResult CreateResult(object source, DataServiceContext context, AsyncCallback callback, object state)
+        {
+            Debug.Assert(null != context, "context is null");
+            HttpWebRequest request = context.CreateRequest(this.QueryComponents.Uri, XmlConstants.HttpMethodGet, false, null, this.QueryComponents.Version, false);
+            return new QueryResult(source, "Execute", this, request, callback, state);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequestArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequestArgs.cs
@@ -1,75 +1,75 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Collections.Generic;
-
-    public class DataServiceRequestArgs
-    {
-        private readonly Dictionary<string, string> headers;
-
-        public DataServiceRequestArgs()
-        {
-            this.headers = new Dictionary<string, string>(EqualityComparer<string>.Default);
-        }
-
-        public string AcceptContentType
-        {
-            get { return this.GetHeaderValue(XmlConstants.HttpRequestAccept); }
-            set { this.SetHeaderValue(XmlConstants.HttpRequestAccept, value); }
-        }
-
-        public string ContentType
-        {
-            get { return this.GetHeaderValue(XmlConstants.HttpContentType); }
-            set { this.SetHeaderValue(XmlConstants.HttpContentType, value);  }
-        }
-
-        public string Slug
-        {
-            get { return this.GetHeaderValue(XmlConstants.HttpSlug); }
-            set { this.SetHeaderValue(XmlConstants.HttpSlug, value); }
-        }
-
-        public Dictionary<string, string> Headers
-        {
-            get { return this.headers; }
-        }
-
-        private string GetHeaderValue(string header)
-        {
-            string value;
-            if (!this.headers.TryGetValue(header, out value))
-            {
-                return null;
-            }
-
-            return value;
-        }
-
-        private void SetHeaderValue(string header, string value)
-        {
-            if (value == null)
-            {
-                if (this.headers.ContainsKey(header))
-                {
-                    this.headers.Remove(header);
-                }
-            }
-            else
-            {
-                this.headers[header] = value;
-            }
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Collections.Generic;
+
+    public class DataServiceRequestArgs
+    {
+        private readonly Dictionary<string, string> headers;
+
+        public DataServiceRequestArgs()
+        {
+            this.headers = new Dictionary<string, string>(EqualityComparer<string>.Default);
+        }
+
+        public string AcceptContentType
+        {
+            get { return this.GetHeaderValue(XmlConstants.HttpRequestAccept); }
+            set { this.SetHeaderValue(XmlConstants.HttpRequestAccept, value); }
+        }
+
+        public string ContentType
+        {
+            get { return this.GetHeaderValue(XmlConstants.HttpContentType); }
+            set { this.SetHeaderValue(XmlConstants.HttpContentType, value);  }
+        }
+
+        public string Slug
+        {
+            get { return this.GetHeaderValue(XmlConstants.HttpSlug); }
+            set { this.SetHeaderValue(XmlConstants.HttpSlug, value); }
+        }
+
+        public Dictionary<string, string> Headers
+        {
+            get { return this.headers; }
+        }
+
+        private string GetHeaderValue(string header)
+        {
+            string value;
+            if (!this.headers.TryGetValue(header, out value))
+            {
+                return null;
+            }
+
+            return value;
+        }
+
+        private void SetHeaderValue(string header, string value)
+        {
+            if (value == null)
+            {
+                if (this.headers.ContainsKey(header))
+                {
+                    this.headers.Remove(header);
+                }
+            }
+            else
+            {
+                this.headers[header] = value;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequestException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequestException.cs
@@ -1,73 +1,73 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-
-#if !ASTORIA_LIGHT
-    [Serializable]
-#endif
-    [System.Diagnostics.DebuggerDisplay("{Message}")]
-    public sealed class DataServiceRequestException : InvalidOperationException
-    {
-#if !ASTORIA_LIGHT
-        [NonSerialized]
-#endif
-        private readonly DataServiceResponse response;
-
-        #region Constructors.
-
-        public DataServiceRequestException()
-            : base(Strings.DataServiceException_GeneralError)
-        {
-        }
-
-        public DataServiceRequestException(string message)
-            : base(message)
-        {
-        }
-
-        public DataServiceRequestException(string message, Exception innerException)
-            : base(message, innerException)
-        {
-        }
-
-        public DataServiceRequestException(string message, Exception innerException, DataServiceResponse response)
-            : base(message, innerException)
-        {
-            this.response = response;
-        }
-
-#if !ASTORIA_LIGHT
-#pragma warning disable 0628
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1047", Justification = "Follows serialization info pattern.")]
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032", Justification = "Follows serialization info pattern.")]
-        protected DataServiceRequestException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
-            : base(info, context)
-        {
-        }
-#pragma warning restore 0628
-#endif
-
-        #endregion Constructors.
-
-        #region Public properties.
-
-        public DataServiceResponse Response
-        {
-            get { return this.response; }
-        }
-
-        #endregion Public properties.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+
+#if !ASTORIA_LIGHT
+    [Serializable]
+#endif
+    [System.Diagnostics.DebuggerDisplay("{Message}")]
+    public sealed class DataServiceRequestException : InvalidOperationException
+    {
+#if !ASTORIA_LIGHT
+        [NonSerialized]
+#endif
+        private readonly DataServiceResponse response;
+
+        #region Constructors.
+
+        public DataServiceRequestException()
+            : base(Strings.DataServiceException_GeneralError)
+        {
+        }
+
+        public DataServiceRequestException(string message)
+            : base(message)
+        {
+        }
+
+        public DataServiceRequestException(string message, Exception innerException)
+            : base(message, innerException)
+        {
+        }
+
+        public DataServiceRequestException(string message, Exception innerException, DataServiceResponse response)
+            : base(message, innerException)
+        {
+            this.response = response;
+        }
+
+#if !ASTORIA_LIGHT
+#pragma warning disable 0628
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1047", Justification = "Follows serialization info pattern.")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032", Justification = "Follows serialization info pattern.")]
+        protected DataServiceRequestException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
+            : base(info, context)
+        {
+        }
+#pragma warning restore 0628
+#endif
+
+        #endregion Constructors.
+
+        #region Public properties.
+
+        public DataServiceResponse Response
+        {
+            get { return this.response; }
+        }
+
+        #endregion Public properties.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequestOfT.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceRequestOfT.cs
@@ -1,78 +1,78 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Diagnostics;
-
-    #endregion Namespaces.
-
-    public sealed class DataServiceRequest<TElement> : DataServiceRequest
-    {
-        #region Private fields.
-
-        private readonly QueryComponents queryComponents;
-
-        private readonly ProjectionPlan plan;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        public DataServiceRequest(Uri requestUri)
-        {
-            Util.CheckArgumentNull(requestUri, "requestUri");
-            Type elementType = typeof(TElement);
-            elementType = ClientConvert.IsKnownType(elementType) ? elementType : TypeSystem.GetElementType(elementType);
-            this.queryComponents = new QueryComponents(requestUri, Util.DataServiceVersionEmpty, elementType, null, null);
-        }
-
-        internal DataServiceRequest(QueryComponents queryComponents, ProjectionPlan plan)
-        {
-            Debug.Assert(queryComponents != null, "queryComponents != null");
-            
-            this.queryComponents = queryComponents;
-            this.plan = plan;
-        }
-
-        #endregion Constructors.
-
-        public override Type ElementType
-        {
-            get { return typeof(TElement); }
-        }
-
-        public override Uri RequestUri
-        {
-            get { return this.queryComponents.Uri; }
-        }
-
-        internal override ProjectionPlan Plan
-        {
-            get
-            {
-                return this.plan;
-            }
-        }
-
-        internal override QueryComponents QueryComponents
-        {
-            get
-            {
-                return this.queryComponents;
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Diagnostics;
+
+    #endregion Namespaces.
+
+    public sealed class DataServiceRequest<TElement> : DataServiceRequest
+    {
+        #region Private fields.
+
+        private readonly QueryComponents queryComponents;
+
+        private readonly ProjectionPlan plan;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        public DataServiceRequest(Uri requestUri)
+        {
+            Util.CheckArgumentNull(requestUri, "requestUri");
+            Type elementType = typeof(TElement);
+            elementType = ClientConvert.IsKnownType(elementType) ? elementType : TypeSystem.GetElementType(elementType);
+            this.queryComponents = new QueryComponents(requestUri, Util.DataServiceVersionEmpty, elementType, null, null);
+        }
+
+        internal DataServiceRequest(QueryComponents queryComponents, ProjectionPlan plan)
+        {
+            Debug.Assert(queryComponents != null, "queryComponents != null");
+            
+            this.queryComponents = queryComponents;
+            this.plan = plan;
+        }
+
+        #endregion Constructors.
+
+        public override Type ElementType
+        {
+            get { return typeof(TElement); }
+        }
+
+        public override Uri RequestUri
+        {
+            get { return this.queryComponents.Uri; }
+        }
+
+        internal override ProjectionPlan Plan
+        {
+            get
+            {
+                return this.plan;
+            }
+        }
+
+        internal override QueryComponents QueryComponents
+        {
+            get
+            {
+                return this.queryComponents;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceResponse.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceResponse.cs
@@ -1,62 +1,62 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Collections.Generic;
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
-    public sealed class DataServiceResponse : IEnumerable<OperationResponse>
-    {
-        private Dictionary<string, string> headers;
-
-        private int statusCode;
-
-        private IEnumerable<OperationResponse> response;
-
-        private bool batchResponse;
-
-        internal DataServiceResponse(Dictionary<string, string> headers, int statusCode, IEnumerable<OperationResponse> response, bool batchResponse)
-        {
-            this.headers = headers ?? new Dictionary<string, string>(EqualityComparer<string>.Default);
-            this.statusCode = statusCode;
-            this.batchResponse = batchResponse;
-            this.response = response;
-        }
-
-        public IDictionary<string, string> BatchHeaders
-        {
-            get { return this.headers; }
-        }
-
-        public int BatchStatusCode
-        {
-            get { return this.statusCode; }
-        }
-
-        public bool IsBatchResponse
-        {
-            get { return this.batchResponse; }
-        }
-
-        public IEnumerator<OperationResponse> GetEnumerator()
-        {
-            return this.response.GetEnumerator();
-        }
-
-        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
-        {
-            return this.GetEnumerator();
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Collections.Generic;
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
+    public sealed class DataServiceResponse : IEnumerable<OperationResponse>
+    {
+        private Dictionary<string, string> headers;
+
+        private int statusCode;
+
+        private IEnumerable<OperationResponse> response;
+
+        private bool batchResponse;
+
+        internal DataServiceResponse(Dictionary<string, string> headers, int statusCode, IEnumerable<OperationResponse> response, bool batchResponse)
+        {
+            this.headers = headers ?? new Dictionary<string, string>(EqualityComparer<string>.Default);
+            this.statusCode = statusCode;
+            this.batchResponse = batchResponse;
+            this.response = response;
+        }
+
+        public IDictionary<string, string> BatchHeaders
+        {
+            get { return this.headers; }
+        }
+
+        public int BatchStatusCode
+        {
+            get { return this.statusCode; }
+        }
+
+        public bool IsBatchResponse
+        {
+            get { return this.batchResponse; }
+        }
+
+        public IEnumerator<OperationResponse> GetEnumerator()
+        {
+            return this.response.GetEnumerator();
+        }
+
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+            return this.GetEnumerator();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceStreamResponse.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/DataServiceStreamResponse.cs
@@ -1,94 +1,94 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.IO;
-#if !ASTORIA_LIGHT    
-    using System.Net;
-#else
-    using System.Data.Services.Http;
-#endif
-
-    public sealed class DataServiceStreamResponse : IDisposable
-    {
-        private HttpWebResponse response;
-
-        private Dictionary<string, string> headers;
-
-        internal DataServiceStreamResponse(HttpWebResponse response)
-        {
-            Debug.Assert(response != null, "Can't create a stream response object from a null response.");
-            this.response = response;
-        }
-
-        public string ContentType
-        {
-            get 
-            {
-                this.CheckDisposed();
-                return this.response.Headers[XmlConstants.HttpContentType];
-            }
-        }
-
-        public string ContentDisposition
-        {
-            get 
-            {
-                this.CheckDisposed();
-                return this.response.Headers[XmlConstants.HttpContentDisposition];
-            }
-        }
-
-        public Dictionary<string, string> Headers
-        {
-            get 
-            {
-                this.CheckDisposed();
-                if (this.headers == null)
-                {
-                    this.headers = WebUtil.WrapResponseHeaders(this.response);
-                }
-
-                return this.headers;
-            }
-        }
-
-        public Stream Stream
-        {
-            get
-            {
-                this.CheckDisposed();
-                return this.response.GetResponseStream();
-            }
-        }
-
-        #region IDisposable Members
-
-        public void Dispose()
-        {
-            Util.Dispose(ref this.response);
-        }
-
-        #endregion
-
-        private void CheckDisposed()
-        {
-            if (this.response == null)
-            {
-                Error.ThrowObjectDisposed(this.GetType());
-            }
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.IO;
+#if !ASTORIA_LIGHT    
+    using System.Net;
+#else
+    using System.Data.Services.Http;
+#endif
+
+    public sealed class DataServiceStreamResponse : IDisposable
+    {
+        private HttpWebResponse response;
+
+        private Dictionary<string, string> headers;
+
+        internal DataServiceStreamResponse(HttpWebResponse response)
+        {
+            Debug.Assert(response != null, "Can't create a stream response object from a null response.");
+            this.response = response;
+        }
+
+        public string ContentType
+        {
+            get 
+            {
+                this.CheckDisposed();
+                return this.response.Headers[XmlConstants.HttpContentType];
+            }
+        }
+
+        public string ContentDisposition
+        {
+            get 
+            {
+                this.CheckDisposed();
+                return this.response.Headers[XmlConstants.HttpContentDisposition];
+            }
+        }
+
+        public Dictionary<string, string> Headers
+        {
+            get 
+            {
+                this.CheckDisposed();
+                if (this.headers == null)
+                {
+                    this.headers = WebUtil.WrapResponseHeaders(this.response);
+                }
+
+                return this.headers;
+            }
+        }
+
+        public Stream Stream
+        {
+            get
+            {
+                this.CheckDisposed();
+                return this.response.GetResponseStream();
+            }
+        }
+
+        #region IDisposable Members
+
+        public void Dispose()
+        {
+            Util.Dispose(ref this.response);
+        }
+
+        #endregion
+
+        private void CheckDisposed()
+        {
+            if (this.response == null)
+            {
+                Error.ThrowObjectDisposed(this.GetType());
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Descriptor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Descriptor.cs
@@ -1,94 +1,94 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    public abstract class Descriptor
-    {
-        #region Fields
-
-        private uint changeOrder = UInt32.MaxValue;
-
-        private bool saveContentGenerated;
-
-        private EntityStates saveResultProcessed;
-
-        private Exception saveError;
-
-        private EntityStates state;
-
-        #endregion
-
-        internal Descriptor(EntityStates state)
-        {
-            this.state = state;
-        }
-
-        #region Public Properties
-
-        public EntityStates State
-        {
-            get { return this.state; }
-            internal set { this.state = value; }
-        }
-
-        #endregion
-
-        #region Internal Properties
-        
-        internal abstract bool IsResource
-        {
-            get;
-        }
-
-        internal uint ChangeOrder
-        {
-            get { return this.changeOrder; }
-            set { this.changeOrder = value; }
-        }
-
-        internal bool ContentGeneratedForSave
-        {
-            get { return this.saveContentGenerated; }
-            set { this.saveContentGenerated = value; }
-        }
-
-        internal EntityStates SaveResultWasProcessed
-        {
-            get { return this.saveResultProcessed; }
-            set { this.saveResultProcessed = value; }
-        }
-
-        internal Exception SaveError
-        {
-            get { return this.saveError; }
-            set { this.saveError = value; }
-        }
-        
-        internal virtual bool IsModified
-        {
-            get
-            {
-                System.Diagnostics.Debug.Assert(
-                    (EntityStates.Added == this.state) ||
-                    (EntityStates.Modified == this.state) ||
-                    (EntityStates.Unchanged == this.state) ||
-                    (EntityStates.Deleted == this.state),
-                    "entity state is not valid");
-
-                return (EntityStates.Unchanged != this.state);
-            }
-        }
-
-        #endregion
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    public abstract class Descriptor
+    {
+        #region Fields
+
+        private uint changeOrder = UInt32.MaxValue;
+
+        private bool saveContentGenerated;
+
+        private EntityStates saveResultProcessed;
+
+        private Exception saveError;
+
+        private EntityStates state;
+
+        #endregion
+
+        internal Descriptor(EntityStates state)
+        {
+            this.state = state;
+        }
+
+        #region Public Properties
+
+        public EntityStates State
+        {
+            get { return this.state; }
+            internal set { this.state = value; }
+        }
+
+        #endregion
+
+        #region Internal Properties
+        
+        internal abstract bool IsResource
+        {
+            get;
+        }
+
+        internal uint ChangeOrder
+        {
+            get { return this.changeOrder; }
+            set { this.changeOrder = value; }
+        }
+
+        internal bool ContentGeneratedForSave
+        {
+            get { return this.saveContentGenerated; }
+            set { this.saveContentGenerated = value; }
+        }
+
+        internal EntityStates SaveResultWasProcessed
+        {
+            get { return this.saveResultProcessed; }
+            set { this.saveResultProcessed = value; }
+        }
+
+        internal Exception SaveError
+        {
+            get { return this.saveError; }
+            set { this.saveError = value; }
+        }
+        
+        internal virtual bool IsModified
+        {
+            get
+            {
+                System.Diagnostics.Debug.Assert(
+                    (EntityStates.Added == this.state) ||
+                    (EntityStates.Modified == this.state) ||
+                    (EntityStates.Unchanged == this.state) ||
+                    (EntityStates.Deleted == this.state),
+                    "entity state is not valid");
+
+                return (EntityStates.Unchanged != this.state);
+            }
+        }
+
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/EntityDescriptor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/EntityDescriptor.cs
@@ -1,349 +1,349 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Diagnostics;
-    using System.Globalization;
-
-    [DebuggerDisplay("State = {state}, Uri = {editLink}, Element = {entity.GetType().ToString()}")]
-    public sealed class EntityDescriptor : Descriptor
-    {
-        #region Fields
-
-        private String identity;
-
-        private object entity;
-
-        private string etag;
-
-        private string streamETag;
-
-        private EntityDescriptor parentDescriptor;
-
-        private string parentProperty;
-
-        private string serverTypeName;
-
-        private Uri selfLink;
-
-        private Uri editLink;
-
-        private Uri readStreamLink;
-
-        private Uri editMediaLink;
-
-        private DataServiceContext.DataServiceSaveStream saveStream;
-
-        private bool mediaLinkEntry;
-
-        private StreamStates streamState;
-
-        private string entitySetName;
-
-        #endregion
-
-        internal EntityDescriptor(String identity, Uri selfLink, Uri editLink, object entity, EntityDescriptor parentEntity, string parentProperty, string entitySetName, string etag, EntityStates state)
-            : base(state)
-        {
-            Debug.Assert(entity != null, "entity is null");
-            Debug.Assert((parentEntity == null && parentProperty == null) || (parentEntity != null && parentProperty != null), "When parentEntity is specified, must also specify parentProperyName");
-
-#if DEBUG
-            if (state == EntityStates.Added)
-            {
-                Debug.Assert(identity == null && selfLink == null && editLink == null && etag == null, "For objects in added state, identity, self-link, edit-link and etag must be null");
-                Debug.Assert((!String.IsNullOrEmpty(entitySetName) && parentEntity == null && String.IsNullOrEmpty(parentProperty)) ||
-                             (String.IsNullOrEmpty(entitySetName) && parentEntity != null && !String.IsNullOrEmpty(parentProperty)),
-                             "For entities in added state, entity set name or the insert path must be specified");
-            }
-            else
-            {
-                Debug.Assert(identity != null, "For objects in non-added state, identity must never be null");
-                Debug.Assert(String.IsNullOrEmpty(entitySetName) && String.IsNullOrEmpty(parentProperty) && parentEntity == null, "For non-added entities, the entity set name and the insert path must be null");
-            }
-#endif
-
-            this.identity = identity;
-            this.selfLink = selfLink;
-            this.editLink = editLink;
-
-            this.parentDescriptor = parentEntity;
-            this.parentProperty = parentProperty;
-            this.entity = entity;
-            this.etag = etag;
-            this.entitySetName = entitySetName;
-        }
-
-        #region Properties
-
-        public String Identity
-        {
-            get
-            {
-                return this.identity; 
-            }
-
-            internal set
-            {
-                Util.CheckArgumentNotEmpty(value, "Identity");
-                this.identity = value;
-                this.parentDescriptor = null;
-                this.parentProperty = null;
-                this.entitySetName = null;
-            }
-        }
-
-        public Uri SelfLink
-        {
-            get { return this.selfLink; }
-            internal set { this.selfLink = value; }
-        }
-
-        public Uri EditLink
-        {
-            get { return this.editLink; }
-            internal set { this.editLink = value; }
-        }
-
-        public Uri ReadStreamUri
-        {
-            get
-            {
-                return this.readStreamLink;
-            }
-
-            internal set
-            {
-                this.readStreamLink = value;
-                if (value != null)
-                {
-                    this.mediaLinkEntry = true;
-                }
-            }
-        }
-
-        public Uri EditStreamUri
-        {
-            get
-            {
-                return this.editMediaLink;
-            }
-
-            internal set
-            {
-                this.editMediaLink = value;
-                if (value != null)
-                {
-                    this.mediaLinkEntry = true;
-                }
-            }
-        }
-
-        public object Entity
-        {
-            get { return this.entity; }
-        }
-
-        public string ETag
-        {
-            get { return this.etag; }
-            internal set { this.etag = value; }
-        }
-
-        public string StreamETag
-        {
-            get 
-            { 
-                return this.streamETag; 
-            }
-
-            internal set 
-            {
-                Debug.Assert(this.mediaLinkEntry == true, "this.mediaLinkEntry == true");
-                this.streamETag = value; 
-            }
-        }
-
-        public EntityDescriptor ParentForInsert
-        {
-            get { return this.parentDescriptor; }
-        }
-
-        public string ParentPropertyForInsert
-        {
-            get { return this.parentProperty; }
-        }
-
-        public String ServerTypeName
-        {
-            get { return this.serverTypeName; }
-            internal set { this.serverTypeName = value; }
-        }
-
-        #endregion
-
-        #region Internal Properties
-        
-        internal object ParentEntity
-        {
-            get { return this.parentDescriptor != null ? this.parentDescriptor.entity : null; }
-        }
-
-        internal override bool IsResource
-        {
-            get { return true; }
-        }
-
-        internal bool IsDeepInsert
-        {
-            get { return this.parentDescriptor != null; }
-        }
-
-        internal DataServiceContext.DataServiceSaveStream SaveStream
-        {
-            get
-            {
-                return this.saveStream;
-            }
-
-            set
-            {
-                this.saveStream = value;
-                if (value != null)
-                {
-                    this.mediaLinkEntry = true;
-                }
-            }
-        }
-
-        internal StreamStates StreamState
-        {
-            get
-            {
-                return this.streamState;
-            }
-
-            set
-            {
-                this.streamState = value;
-                Debug.Assert(this.streamState == StreamStates.NoStream || this.mediaLinkEntry, "this.streamState == StreamStates.NoStream || this.mediaLinkEntry");
-                Debug.Assert(
-                    (this.saveStream == null && this.streamState == StreamStates.NoStream) || (this.saveStream != null && this.streamState != StreamStates.NoStream),
-                    "(this.saveStream == null && this.streamState == StreamStates.NoStream) || (this.saveStream != null && this.streamState != StreamStates.NoStream)");
-            }
-        }
-
-        internal bool IsMediaLinkEntry
-        {
-            get { return this.mediaLinkEntry; }
-        }
-        
-        internal override bool IsModified
-        {
-            get
-            {
-                if (base.IsModified)
-                {
-                    return true;
-                }
-                else
-                {
-                    return this.saveStream != null;
-                }
-            }
-        }
-        
-        #endregion
-
-        #region Internal Methods
-
-        internal Uri GetResourceUri(Uri baseUriWithSlash, bool queryLink)
-        {
-            if (this.parentDescriptor != null)
-            {
-                if (this.parentDescriptor.Identity == null)
-                {
-                    return Util.CreateUri(
-                        Util.CreateUri(baseUriWithSlash, new Uri("$" + this.parentDescriptor.ChangeOrder.ToString(CultureInfo.InvariantCulture), UriKind.Relative)),
-                        Util.CreateUri(this.parentProperty, UriKind.Relative));
-                }
-                else
-                {
-                    return Util.CreateUri(Util.CreateUri(baseUriWithSlash, this.parentDescriptor.GetLink(queryLink)), this.GetLink(queryLink));
-                }
-            }
-            else
-            {
-                return Util.CreateUri(baseUriWithSlash, this.GetLink(queryLink));
-            }
-        }
-
-        internal bool IsRelatedEntity(LinkDescriptor related)
-        {
-            return ((this.entity == related.Source) || (this.entity == related.Target));
-        }
-
-        internal LinkDescriptor GetRelatedEnd()
-        {
-            Debug.Assert(this.IsDeepInsert, "For related end, this must be a deep insert");
-            Debug.Assert(this.Identity == null, "If the identity is set, it means that the edit link no longer has the property name");
-
-            return new LinkDescriptor(this.parentDescriptor.entity, this.parentProperty, this.entity);
-        }
-
-        internal void CloseSaveStream()
-        {
-            if (this.saveStream != null)
-            {
-                DataServiceContext.DataServiceSaveStream stream = this.saveStream;
-                this.saveStream = null;
-                stream.Close();
-            }
-        }
-
-        internal Uri GetMediaResourceUri(Uri serviceBaseUri)
-        {
-            return this.ReadStreamUri == null ? null : Util.CreateUri(serviceBaseUri, this.ReadStreamUri);
-        }
-
-        internal Uri GetEditMediaResourceUri(Uri serviceBaseUri)
-        {
-            return this.EditStreamUri == null ? null : Util.CreateUri(serviceBaseUri, this.EditStreamUri);
-        }
-
-        private Uri GetLink(bool queryLink)
-        {
-            if (queryLink && this.SelfLink != null)
-            {
-                return this.SelfLink;
-            }
-
-            if (this.EditLink != null)
-            {
-                return this.EditLink;
-            }
-
-            Debug.Assert(this.State == EntityStates.Added, "the entity must be in added state");
-            if (!String.IsNullOrEmpty(this.entitySetName))
-            {
-                return Util.CreateUri(this.entitySetName, UriKind.Relative);
-            }
-            else
-            {
-                return Util.CreateUri(this.parentProperty, UriKind.Relative);
-            }
-        }
-
-        #endregion
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Diagnostics;
+    using System.Globalization;
+
+    [DebuggerDisplay("State = {state}, Uri = {editLink}, Element = {entity.GetType().ToString()}")]
+    public sealed class EntityDescriptor : Descriptor
+    {
+        #region Fields
+
+        private String identity;
+
+        private object entity;
+
+        private string etag;
+
+        private string streamETag;
+
+        private EntityDescriptor parentDescriptor;
+
+        private string parentProperty;
+
+        private string serverTypeName;
+
+        private Uri selfLink;
+
+        private Uri editLink;
+
+        private Uri readStreamLink;
+
+        private Uri editMediaLink;
+
+        private DataServiceContext.DataServiceSaveStream saveStream;
+
+        private bool mediaLinkEntry;
+
+        private StreamStates streamState;
+
+        private string entitySetName;
+
+        #endregion
+
+        internal EntityDescriptor(String identity, Uri selfLink, Uri editLink, object entity, EntityDescriptor parentEntity, string parentProperty, string entitySetName, string etag, EntityStates state)
+            : base(state)
+        {
+            Debug.Assert(entity != null, "entity is null");
+            Debug.Assert((parentEntity == null && parentProperty == null) || (parentEntity != null && parentProperty != null), "When parentEntity is specified, must also specify parentProperyName");
+
+#if DEBUG
+            if (state == EntityStates.Added)
+            {
+                Debug.Assert(identity == null && selfLink == null && editLink == null && etag == null, "For objects in added state, identity, self-link, edit-link and etag must be null");
+                Debug.Assert((!String.IsNullOrEmpty(entitySetName) && parentEntity == null && String.IsNullOrEmpty(parentProperty)) ||
+                             (String.IsNullOrEmpty(entitySetName) && parentEntity != null && !String.IsNullOrEmpty(parentProperty)),
+                             "For entities in added state, entity set name or the insert path must be specified");
+            }
+            else
+            {
+                Debug.Assert(identity != null, "For objects in non-added state, identity must never be null");
+                Debug.Assert(String.IsNullOrEmpty(entitySetName) && String.IsNullOrEmpty(parentProperty) && parentEntity == null, "For non-added entities, the entity set name and the insert path must be null");
+            }
+#endif
+
+            this.identity = identity;
+            this.selfLink = selfLink;
+            this.editLink = editLink;
+
+            this.parentDescriptor = parentEntity;
+            this.parentProperty = parentProperty;
+            this.entity = entity;
+            this.etag = etag;
+            this.entitySetName = entitySetName;
+        }
+
+        #region Properties
+
+        public String Identity
+        {
+            get
+            {
+                return this.identity; 
+            }
+
+            internal set
+            {
+                Util.CheckArgumentNotEmpty(value, "Identity");
+                this.identity = value;
+                this.parentDescriptor = null;
+                this.parentProperty = null;
+                this.entitySetName = null;
+            }
+        }
+
+        public Uri SelfLink
+        {
+            get { return this.selfLink; }
+            internal set { this.selfLink = value; }
+        }
+
+        public Uri EditLink
+        {
+            get { return this.editLink; }
+            internal set { this.editLink = value; }
+        }
+
+        public Uri ReadStreamUri
+        {
+            get
+            {
+                return this.readStreamLink;
+            }
+
+            internal set
+            {
+                this.readStreamLink = value;
+                if (value != null)
+                {
+                    this.mediaLinkEntry = true;
+                }
+            }
+        }
+
+        public Uri EditStreamUri
+        {
+            get
+            {
+                return this.editMediaLink;
+            }
+
+            internal set
+            {
+                this.editMediaLink = value;
+                if (value != null)
+                {
+                    this.mediaLinkEntry = true;
+                }
+            }
+        }
+
+        public object Entity
+        {
+            get { return this.entity; }
+        }
+
+        public string ETag
+        {
+            get { return this.etag; }
+            internal set { this.etag = value; }
+        }
+
+        public string StreamETag
+        {
+            get 
+            { 
+                return this.streamETag; 
+            }
+
+            internal set 
+            {
+                Debug.Assert(this.mediaLinkEntry == true, "this.mediaLinkEntry == true");
+                this.streamETag = value; 
+            }
+        }
+
+        public EntityDescriptor ParentForInsert
+        {
+            get { return this.parentDescriptor; }
+        }
+
+        public string ParentPropertyForInsert
+        {
+            get { return this.parentProperty; }
+        }
+
+        public String ServerTypeName
+        {
+            get { return this.serverTypeName; }
+            internal set { this.serverTypeName = value; }
+        }
+
+        #endregion
+
+        #region Internal Properties
+        
+        internal object ParentEntity
+        {
+            get { return this.parentDescriptor != null ? this.parentDescriptor.entity : null; }
+        }
+
+        internal override bool IsResource
+        {
+            get { return true; }
+        }
+
+        internal bool IsDeepInsert
+        {
+            get { return this.parentDescriptor != null; }
+        }
+
+        internal DataServiceContext.DataServiceSaveStream SaveStream
+        {
+            get
+            {
+                return this.saveStream;
+            }
+
+            set
+            {
+                this.saveStream = value;
+                if (value != null)
+                {
+                    this.mediaLinkEntry = true;
+                }
+            }
+        }
+
+        internal StreamStates StreamState
+        {
+            get
+            {
+                return this.streamState;
+            }
+
+            set
+            {
+                this.streamState = value;
+                Debug.Assert(this.streamState == StreamStates.NoStream || this.mediaLinkEntry, "this.streamState == StreamStates.NoStream || this.mediaLinkEntry");
+                Debug.Assert(
+                    (this.saveStream == null && this.streamState == StreamStates.NoStream) || (this.saveStream != null && this.streamState != StreamStates.NoStream),
+                    "(this.saveStream == null && this.streamState == StreamStates.NoStream) || (this.saveStream != null && this.streamState != StreamStates.NoStream)");
+            }
+        }
+
+        internal bool IsMediaLinkEntry
+        {
+            get { return this.mediaLinkEntry; }
+        }
+        
+        internal override bool IsModified
+        {
+            get
+            {
+                if (base.IsModified)
+                {
+                    return true;
+                }
+                else
+                {
+                    return this.saveStream != null;
+                }
+            }
+        }
+        
+        #endregion
+
+        #region Internal Methods
+
+        internal Uri GetResourceUri(Uri baseUriWithSlash, bool queryLink)
+        {
+            if (this.parentDescriptor != null)
+            {
+                if (this.parentDescriptor.Identity == null)
+                {
+                    return Util.CreateUri(
+                        Util.CreateUri(baseUriWithSlash, new Uri("$" + this.parentDescriptor.ChangeOrder.ToString(CultureInfo.InvariantCulture), UriKind.Relative)),
+                        Util.CreateUri(this.parentProperty, UriKind.Relative));
+                }
+                else
+                {
+                    return Util.CreateUri(Util.CreateUri(baseUriWithSlash, this.parentDescriptor.GetLink(queryLink)), this.GetLink(queryLink));
+                }
+            }
+            else
+            {
+                return Util.CreateUri(baseUriWithSlash, this.GetLink(queryLink));
+            }
+        }
+
+        internal bool IsRelatedEntity(LinkDescriptor related)
+        {
+            return ((this.entity == related.Source) || (this.entity == related.Target));
+        }
+
+        internal LinkDescriptor GetRelatedEnd()
+        {
+            Debug.Assert(this.IsDeepInsert, "For related end, this must be a deep insert");
+            Debug.Assert(this.Identity == null, "If the identity is set, it means that the edit link no longer has the property name");
+
+            return new LinkDescriptor(this.parentDescriptor.entity, this.parentProperty, this.entity);
+        }
+
+        internal void CloseSaveStream()
+        {
+            if (this.saveStream != null)
+            {
+                DataServiceContext.DataServiceSaveStream stream = this.saveStream;
+                this.saveStream = null;
+                stream.Close();
+            }
+        }
+
+        internal Uri GetMediaResourceUri(Uri serviceBaseUri)
+        {
+            return this.ReadStreamUri == null ? null : Util.CreateUri(serviceBaseUri, this.ReadStreamUri);
+        }
+
+        internal Uri GetEditMediaResourceUri(Uri serviceBaseUri)
+        {
+            return this.EditStreamUri == null ? null : Util.CreateUri(serviceBaseUri, this.EditStreamUri);
+        }
+
+        private Uri GetLink(bool queryLink)
+        {
+            if (queryLink && this.SelfLink != null)
+            {
+                return this.SelfLink;
+            }
+
+            if (this.EditLink != null)
+            {
+                return this.EditLink;
+            }
+
+            Debug.Assert(this.State == EntityStates.Added, "the entity must be in added state");
+            if (!String.IsNullOrEmpty(this.entitySetName))
+            {
+                return Util.CreateUri(this.entitySetName, UriKind.Relative);
+            }
+            else
+            {
+                return Util.CreateUri(this.parentProperty, UriKind.Relative);
+            }
+        }
+
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/EntityPropertyMappingAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/EntityPropertyMappingAttribute.cs
@@ -1,206 +1,206 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System;
-    using System.Data.Services.Client;
-
-    public enum SyndicationItemProperty
-    {
-        CustomProperty,
-
-        AuthorEmail,
-
-        AuthorName,
-        AuthorUri,
-
-        ContributorEmail,
-
-        ContributorName,
-        ContributorUri,
-
-        Updated,
-
-
-        Published,
-
-        Rights,
-
-        Summary,
-
-        Title
-    }
-
-    public enum SyndicationTextContentKind
-    {
-        Plaintext,
-
-        Html,
-
-        Xhtml
-    }
-
-    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
-    public sealed class EntityPropertyMappingAttribute : Attribute
-    {
-#region Private Members
-
-        private const string AtomNamespacePrefix = "atom";
-
-        private readonly String sourcePath;
-
-        private readonly String targetPath;
-
-        private readonly SyndicationItemProperty targetSyndicationItem;
-
-        private readonly SyndicationTextContentKind targetTextContentKind;
-
-        private readonly String targetNamespacePrefix;
-
-        private readonly String targetNamespaceUri;
-
-        private readonly bool keepInContent;
-#endregion
-
-#region Constructors
-
-        public EntityPropertyMappingAttribute(String sourcePath, SyndicationItemProperty targetSyndicationItem, SyndicationTextContentKind targetTextContentKind, bool keepInContent)
-        {
-            if (String.IsNullOrEmpty(sourcePath))
-            {
-                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("sourcePath"));
-            }
-
-            this.sourcePath            = sourcePath;
-            this.targetPath            = SyndicationItemPropertyToPath(targetSyndicationItem);
-            this.targetSyndicationItem = targetSyndicationItem;
-            this.targetTextContentKind = targetTextContentKind;
-            this.targetNamespacePrefix = EntityPropertyMappingAttribute.AtomNamespacePrefix;
-            this.targetNamespaceUri    = XmlConstants.AtomNamespace;
-            this.keepInContent         = keepInContent;
-        }
-
-        public EntityPropertyMappingAttribute(String sourcePath, String targetPath, String targetNamespacePrefix, String targetNamespaceUri, bool keepInContent)
-        {
-            if (String.IsNullOrEmpty(sourcePath))
-            {
-                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("sourcePath"));
-            }
-
-            this.sourcePath = sourcePath;
-
-            if (String.IsNullOrEmpty(targetPath))
-            {
-                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("targetPath"));
-            }
-
-            if (targetPath[0] == '@')
-            {
-                throw new ArgumentException(Strings.EpmTargetTree_InvalidTargetPath(targetPath));
-            }
-
-            this.targetPath = targetPath;
-
-            this.targetSyndicationItem = SyndicationItemProperty.CustomProperty;
-            this.targetTextContentKind = SyndicationTextContentKind.Plaintext;
-            this.targetNamespacePrefix = targetNamespacePrefix;
-
-            if (String.IsNullOrEmpty(targetNamespaceUri))
-            {
-                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("targetNamespaceUri"));
-            }
-
-            this.targetNamespaceUri = targetNamespaceUri;
-
-            Uri uri;
-            if (!Uri.TryCreate(targetNamespaceUri, UriKind.Absolute, out uri))
-            {
-                throw new ArgumentException(Strings.EntityPropertyMapping_TargetNamespaceUriNotValid(targetNamespaceUri));
-            }
-
-            this.keepInContent = keepInContent;
-        }
-
-        #region Properties
-
-        public String SourcePath
-        {
-            get { return this.sourcePath; }
-        }
-
-        public String TargetPath
-        {
-            get { return this.targetPath; }
-        }
-
-        public SyndicationItemProperty TargetSyndicationItem
-        {
-            get { return this.targetSyndicationItem; }
-        }
-
-        public String TargetNamespacePrefix
-        {
-            get { return this.targetNamespacePrefix; }
-        }
-
-        public String TargetNamespaceUri
-        {
-            get { return this.targetNamespaceUri; }
-        }
-
-        public SyndicationTextContentKind TargetTextContentKind
-        {
-            get { return this.targetTextContentKind; }
-        }
-
-        public bool KeepInContent
-        {
-            get { return this.keepInContent; }
-        }
-
-        #endregion
-
-        internal static String SyndicationItemPropertyToPath(SyndicationItemProperty targetSyndicationItem)
-        {
-            switch (targetSyndicationItem)
-            {
-                case SyndicationItemProperty.AuthorEmail:
-                    return "author/email";
-                case SyndicationItemProperty.AuthorName:
-                    return "author/name";
-                case SyndicationItemProperty.AuthorUri:
-                    return "author/uri";
-                case SyndicationItemProperty.ContributorEmail:
-                    return "contributor/email";
-                case SyndicationItemProperty.ContributorName:
-                    return "contributor/name";
-                case SyndicationItemProperty.ContributorUri:
-                    return "contributor/uri";
-                case SyndicationItemProperty.Updated:
-                    return "updated";
-                case SyndicationItemProperty.Published:
-                    return "published";
-                case SyndicationItemProperty.Rights:
-                    return "rights";
-                case SyndicationItemProperty.Summary:
-                    return "summary";
-                case SyndicationItemProperty.Title:
-                    return "title";
-                default:
-                    throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("targetSyndicationItem"));
-            }
-        }
-
-#endregion 
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System;
+    using System.Data.Services.Client;
+
+    public enum SyndicationItemProperty
+    {
+        CustomProperty,
+
+        AuthorEmail,
+
+        AuthorName,
+        AuthorUri,
+
+        ContributorEmail,
+
+        ContributorName,
+        ContributorUri,
+
+        Updated,
+
+
+        Published,
+
+        Rights,
+
+        Summary,
+
+        Title
+    }
+
+    public enum SyndicationTextContentKind
+    {
+        Plaintext,
+
+        Html,
+
+        Xhtml
+    }
+
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
+    public sealed class EntityPropertyMappingAttribute : Attribute
+    {
+#region Private Members
+
+        private const string AtomNamespacePrefix = "atom";
+
+        private readonly String sourcePath;
+
+        private readonly String targetPath;
+
+        private readonly SyndicationItemProperty targetSyndicationItem;
+
+        private readonly SyndicationTextContentKind targetTextContentKind;
+
+        private readonly String targetNamespacePrefix;
+
+        private readonly String targetNamespaceUri;
+
+        private readonly bool keepInContent;
+#endregion
+
+#region Constructors
+
+        public EntityPropertyMappingAttribute(String sourcePath, SyndicationItemProperty targetSyndicationItem, SyndicationTextContentKind targetTextContentKind, bool keepInContent)
+        {
+            if (String.IsNullOrEmpty(sourcePath))
+            {
+                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("sourcePath"));
+            }
+
+            this.sourcePath            = sourcePath;
+            this.targetPath            = SyndicationItemPropertyToPath(targetSyndicationItem);
+            this.targetSyndicationItem = targetSyndicationItem;
+            this.targetTextContentKind = targetTextContentKind;
+            this.targetNamespacePrefix = EntityPropertyMappingAttribute.AtomNamespacePrefix;
+            this.targetNamespaceUri    = XmlConstants.AtomNamespace;
+            this.keepInContent         = keepInContent;
+        }
+
+        public EntityPropertyMappingAttribute(String sourcePath, String targetPath, String targetNamespacePrefix, String targetNamespaceUri, bool keepInContent)
+        {
+            if (String.IsNullOrEmpty(sourcePath))
+            {
+                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("sourcePath"));
+            }
+
+            this.sourcePath = sourcePath;
+
+            if (String.IsNullOrEmpty(targetPath))
+            {
+                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("targetPath"));
+            }
+
+            if (targetPath[0] == '@')
+            {
+                throw new ArgumentException(Strings.EpmTargetTree_InvalidTargetPath(targetPath));
+            }
+
+            this.targetPath = targetPath;
+
+            this.targetSyndicationItem = SyndicationItemProperty.CustomProperty;
+            this.targetTextContentKind = SyndicationTextContentKind.Plaintext;
+            this.targetNamespacePrefix = targetNamespacePrefix;
+
+            if (String.IsNullOrEmpty(targetNamespaceUri))
+            {
+                throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("targetNamespaceUri"));
+            }
+
+            this.targetNamespaceUri = targetNamespaceUri;
+
+            Uri uri;
+            if (!Uri.TryCreate(targetNamespaceUri, UriKind.Absolute, out uri))
+            {
+                throw new ArgumentException(Strings.EntityPropertyMapping_TargetNamespaceUriNotValid(targetNamespaceUri));
+            }
+
+            this.keepInContent = keepInContent;
+        }
+
+        #region Properties
+
+        public String SourcePath
+        {
+            get { return this.sourcePath; }
+        }
+
+        public String TargetPath
+        {
+            get { return this.targetPath; }
+        }
+
+        public SyndicationItemProperty TargetSyndicationItem
+        {
+            get { return this.targetSyndicationItem; }
+        }
+
+        public String TargetNamespacePrefix
+        {
+            get { return this.targetNamespacePrefix; }
+        }
+
+        public String TargetNamespaceUri
+        {
+            get { return this.targetNamespaceUri; }
+        }
+
+        public SyndicationTextContentKind TargetTextContentKind
+        {
+            get { return this.targetTextContentKind; }
+        }
+
+        public bool KeepInContent
+        {
+            get { return this.keepInContent; }
+        }
+
+        #endregion
+
+        internal static String SyndicationItemPropertyToPath(SyndicationItemProperty targetSyndicationItem)
+        {
+            switch (targetSyndicationItem)
+            {
+                case SyndicationItemProperty.AuthorEmail:
+                    return "author/email";
+                case SyndicationItemProperty.AuthorName:
+                    return "author/name";
+                case SyndicationItemProperty.AuthorUri:
+                    return "author/uri";
+                case SyndicationItemProperty.ContributorEmail:
+                    return "contributor/email";
+                case SyndicationItemProperty.ContributorName:
+                    return "contributor/name";
+                case SyndicationItemProperty.ContributorUri:
+                    return "contributor/uri";
+                case SyndicationItemProperty.Updated:
+                    return "updated";
+                case SyndicationItemProperty.Published:
+                    return "published";
+                case SyndicationItemProperty.Rights:
+                    return "rights";
+                case SyndicationItemProperty.Summary:
+                    return "summary";
+                case SyndicationItemProperty.Title:
+                    return "title";
+                default:
+                    throw new ArgumentException(Strings.EntityPropertyMapping_EpmAttribute("targetSyndicationItem"));
+            }
+        }
+
+#endregion 
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/EntityStates.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/EntityStates.cs
@@ -1,38 +1,38 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    [System.Flags()] 
-    public enum EntityStates
-    {
-        Detached = 0x00000001,
-
-        Unchanged = 0x00000002,
-
-        Added = 0x00000004,
-
-        Deleted = 0x00000008,
-
-        Modified = 0x00000010
-    }
-
-    [System.Flags()] 
-    internal enum StreamStates
-    {
-        NoStream = 0,
-
-        Added,
-
-        Modified
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    [System.Flags()] 
+    public enum EntityStates
+    {
+        Detached = 0x00000001,
+
+        Unchanged = 0x00000002,
+
+        Added = 0x00000004,
+
+        Deleted = 0x00000008,
+
+        Modified = 0x00000010
+    }
+
+    [System.Flags()] 
+    internal enum StreamStates
+    {
+        NoStream = 0,
+
+        Added,
+
+        Modified
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Epm/EpmSyndicationContentSerializer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Epm/EpmSyndicationContentSerializer.cs
@@ -1,186 +1,186 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Data.Services.Common;
-    using System.Diagnostics;
-    using System.Xml;
-
-    internal sealed class EpmSyndicationContentSerializer : EpmContentSerializerBase, IDisposable
-    {
-        private bool authorInfoPresent;
-
-        private bool updatedPresent;
-
-        private bool authorNamePresent;
-
-        internal EpmSyndicationContentSerializer(EpmTargetTree tree, object element, XmlWriter target)
-            : base(tree, true, element, target)
-        {
-        }
-
-        public void Dispose()
-        {
-            this.CreateAuthor(true);
-            this.CreateUpdated();
-        }
-
-        protected override void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind)
-        {
-            if (targetSegment.HasContent)
-            {
-                EntityPropertyMappingInfo epmInfo = targetSegment.EpmInfo;
-                Object propertyValue;
-
-                try
-                {
-                    propertyValue = epmInfo.PropValReader.DynamicInvoke(this.Element);
-                }
-                catch (System.Reflection.TargetInvocationException)
-                {
-                    throw;
-                }
-
-                String contentType;
-                Action<String> contentWriter;
-
-                switch (epmInfo.Attribute.TargetTextContentKind)
-                {
-                    case SyndicationTextContentKind.Html:
-                        contentType = "html";
-                        contentWriter = this.Target.WriteString;
-                        break;
-                    case SyndicationTextContentKind.Xhtml:
-                        contentType = "xhtml";
-                        contentWriter = this.Target.WriteRaw;
-                        break;
-                    default:
-                        contentType = "text";
-                        contentWriter = this.Target.WriteString;
-                        break;
-                }
-
-                Action<String, bool, bool> textSyndicationWriter = (c, nonTextPossible, atomDateConstruct) =>
-                {
-                    this.Target.WriteStartElement(c, XmlConstants.AtomNamespace);
-                    if (nonTextPossible)
-                    {
-                        this.Target.WriteAttributeString(XmlConstants.AtomTypeAttributeName, String.Empty, contentType);
-                    }
-
-                    String textPropertyValue = 
-                        propertyValue != null   ? ClientConvert.ToString(propertyValue, atomDateConstruct) :
-                        atomDateConstruct       ? ClientConvert.ToString(DateTime.MinValue, atomDateConstruct) : 
-                        String.Empty;
-
-                    contentWriter(textPropertyValue);
-                    this.Target.WriteEndElement();
-                };
-
-                switch (epmInfo.Attribute.TargetSyndicationItem)
-                {
-                    case SyndicationItemProperty.AuthorEmail:
-                    case SyndicationItemProperty.ContributorEmail:
-                        textSyndicationWriter(XmlConstants.AtomEmailElementName, false, false);
-                        break;
-                    case SyndicationItemProperty.AuthorName:
-                    case SyndicationItemProperty.ContributorName:
-                        textSyndicationWriter(XmlConstants.AtomNameElementName, false, false);
-                        this.authorNamePresent = true;
-                        break;
-                    case SyndicationItemProperty.AuthorUri:
-                    case SyndicationItemProperty.ContributorUri:
-                        textSyndicationWriter(XmlConstants.AtomUriElementName, false, false);
-                        break;
-                    case SyndicationItemProperty.Updated:
-                        textSyndicationWriter(XmlConstants.AtomUpdatedElementName, false, true);
-                        this.updatedPresent = true;
-                        break;
-                    case SyndicationItemProperty.Published:
-                        textSyndicationWriter(XmlConstants.AtomPublishedElementName, false, true);
-                        break;
-                    case SyndicationItemProperty.Rights:
-                        textSyndicationWriter(XmlConstants.AtomRightsElementName, true, false);
-                        break;
-                    case SyndicationItemProperty.Summary:
-                        textSyndicationWriter(XmlConstants.AtomSummaryElementName, true, false);
-                        break;
-                    case SyndicationItemProperty.Title:
-                        textSyndicationWriter(XmlConstants.AtomTitleElementName, true, false);
-                        break;
-                    default:
-                        Debug.Assert(false, "Unhandled SyndicationItemProperty enum value - should never get here.");
-                        break;
-                }
-            }
-            else
-            {
-                if (targetSegment.SegmentName == XmlConstants.AtomAuthorElementName)
-                {
-                    this.CreateAuthor(false);
-                    base.Serialize(targetSegment, kind);
-                    this.FinishAuthor();
-                }
-                else if (targetSegment.SegmentName == XmlConstants.AtomContributorElementName)
-                {
-                    this.Target.WriteStartElement(XmlConstants.AtomContributorElementName, XmlConstants.AtomNamespace);
-                    base.Serialize(targetSegment, kind);
-                    this.Target.WriteEndElement();
-                }
-                else
-                {
-                    Debug.Assert(false, "Only authors and contributors have nested elements");
-                }
-            }
-        }
-
-        private void CreateAuthor(bool createNull)
-        {
-            if (!this.authorInfoPresent)
-            {
-                if (createNull)
-                {
-                    this.Target.WriteStartElement(XmlConstants.AtomAuthorElementName, XmlConstants.AtomNamespace);
-                    this.Target.WriteElementString(XmlConstants.AtomNameElementName, XmlConstants.AtomNamespace, String.Empty);
-                    this.Target.WriteEndElement();
-                }
-                else
-                {
-                    this.Target.WriteStartElement(XmlConstants.AtomAuthorElementName, XmlConstants.AtomNamespace);
-                }
-
-                this.authorInfoPresent = true;
-            }
-        }
-
-        private void FinishAuthor()
-        {
-            Debug.Assert(this.authorInfoPresent == true, "Must have already written the start element for author");
-            if (this.authorNamePresent == false)
-            {
-                this.Target.WriteElementString(XmlConstants.AtomNameElementName, XmlConstants.AtomNamespace, String.Empty);
-                this.authorNamePresent = true;
-            }
- 
-            this.Target.WriteEndElement();
-        }
-
-        private void CreateUpdated()
-        {
-            if (!this.updatedPresent)
-            {
-                this.Target.WriteElementString(XmlConstants.AtomUpdatedElementName, XmlConstants.AtomNamespace, XmlConvert.ToString(DateTime.UtcNow, XmlDateTimeSerializationMode.RoundtripKind));
-            }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Data.Services.Common;
+    using System.Diagnostics;
+    using System.Xml;
+
+    internal sealed class EpmSyndicationContentSerializer : EpmContentSerializerBase, IDisposable
+    {
+        private bool authorInfoPresent;
+
+        private bool updatedPresent;
+
+        private bool authorNamePresent;
+
+        internal EpmSyndicationContentSerializer(EpmTargetTree tree, object element, XmlWriter target)
+            : base(tree, true, element, target)
+        {
+        }
+
+        public void Dispose()
+        {
+            this.CreateAuthor(true);
+            this.CreateUpdated();
+        }
+
+        protected override void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind)
+        {
+            if (targetSegment.HasContent)
+            {
+                EntityPropertyMappingInfo epmInfo = targetSegment.EpmInfo;
+                Object propertyValue;
+
+                try
+                {
+                    propertyValue = epmInfo.PropValReader.DynamicInvoke(this.Element);
+                }
+                catch (System.Reflection.TargetInvocationException)
+                {
+                    throw;
+                }
+
+                String contentType;
+                Action<String> contentWriter;
+
+                switch (epmInfo.Attribute.TargetTextContentKind)
+                {
+                    case SyndicationTextContentKind.Html:
+                        contentType = "html";
+                        contentWriter = this.Target.WriteString;
+                        break;
+                    case SyndicationTextContentKind.Xhtml:
+                        contentType = "xhtml";
+                        contentWriter = this.Target.WriteRaw;
+                        break;
+                    default:
+                        contentType = "text";
+                        contentWriter = this.Target.WriteString;
+                        break;
+                }
+
+                Action<String, bool, bool> textSyndicationWriter = (c, nonTextPossible, atomDateConstruct) =>
+                {
+                    this.Target.WriteStartElement(c, XmlConstants.AtomNamespace);
+                    if (nonTextPossible)
+                    {
+                        this.Target.WriteAttributeString(XmlConstants.AtomTypeAttributeName, String.Empty, contentType);
+                    }
+
+                    String textPropertyValue = 
+                        propertyValue != null   ? ClientConvert.ToString(propertyValue, atomDateConstruct) :
+                        atomDateConstruct       ? ClientConvert.ToString(DateTime.MinValue, atomDateConstruct) : 
+                        String.Empty;
+
+                    contentWriter(textPropertyValue);
+                    this.Target.WriteEndElement();
+                };
+
+                switch (epmInfo.Attribute.TargetSyndicationItem)
+                {
+                    case SyndicationItemProperty.AuthorEmail:
+                    case SyndicationItemProperty.ContributorEmail:
+                        textSyndicationWriter(XmlConstants.AtomEmailElementName, false, false);
+                        break;
+                    case SyndicationItemProperty.AuthorName:
+                    case SyndicationItemProperty.ContributorName:
+                        textSyndicationWriter(XmlConstants.AtomNameElementName, false, false);
+                        this.authorNamePresent = true;
+                        break;
+                    case SyndicationItemProperty.AuthorUri:
+                    case SyndicationItemProperty.ContributorUri:
+                        textSyndicationWriter(XmlConstants.AtomUriElementName, false, false);
+                        break;
+                    case SyndicationItemProperty.Updated:
+                        textSyndicationWriter(XmlConstants.AtomUpdatedElementName, false, true);
+                        this.updatedPresent = true;
+                        break;
+                    case SyndicationItemProperty.Published:
+                        textSyndicationWriter(XmlConstants.AtomPublishedElementName, false, true);
+                        break;
+                    case SyndicationItemProperty.Rights:
+                        textSyndicationWriter(XmlConstants.AtomRightsElementName, true, false);
+                        break;
+                    case SyndicationItemProperty.Summary:
+                        textSyndicationWriter(XmlConstants.AtomSummaryElementName, true, false);
+                        break;
+                    case SyndicationItemProperty.Title:
+                        textSyndicationWriter(XmlConstants.AtomTitleElementName, true, false);
+                        break;
+                    default:
+                        Debug.Assert(false, "Unhandled SyndicationItemProperty enum value - should never get here.");
+                        break;
+                }
+            }
+            else
+            {
+                if (targetSegment.SegmentName == XmlConstants.AtomAuthorElementName)
+                {
+                    this.CreateAuthor(false);
+                    base.Serialize(targetSegment, kind);
+                    this.FinishAuthor();
+                }
+                else if (targetSegment.SegmentName == XmlConstants.AtomContributorElementName)
+                {
+                    this.Target.WriteStartElement(XmlConstants.AtomContributorElementName, XmlConstants.AtomNamespace);
+                    base.Serialize(targetSegment, kind);
+                    this.Target.WriteEndElement();
+                }
+                else
+                {
+                    Debug.Assert(false, "Only authors and contributors have nested elements");
+                }
+            }
+        }
+
+        private void CreateAuthor(bool createNull)
+        {
+            if (!this.authorInfoPresent)
+            {
+                if (createNull)
+                {
+                    this.Target.WriteStartElement(XmlConstants.AtomAuthorElementName, XmlConstants.AtomNamespace);
+                    this.Target.WriteElementString(XmlConstants.AtomNameElementName, XmlConstants.AtomNamespace, String.Empty);
+                    this.Target.WriteEndElement();
+                }
+                else
+                {
+                    this.Target.WriteStartElement(XmlConstants.AtomAuthorElementName, XmlConstants.AtomNamespace);
+                }
+
+                this.authorInfoPresent = true;
+            }
+        }
+
+        private void FinishAuthor()
+        {
+            Debug.Assert(this.authorInfoPresent == true, "Must have already written the start element for author");
+            if (this.authorNamePresent == false)
+            {
+                this.Target.WriteElementString(XmlConstants.AtomNameElementName, XmlConstants.AtomNamespace, String.Empty);
+                this.authorNamePresent = true;
+            }
+ 
+            this.Target.WriteEndElement();
+        }
+
+        private void CreateUpdated()
+        {
+            if (!this.updatedPresent)
+            {
+                this.Target.WriteElementString(XmlConstants.AtomUpdatedElementName, XmlConstants.AtomNamespace, XmlConvert.ToString(DateTime.UtcNow, XmlDateTimeSerializationMode.RoundtripKind));
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Error.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Error.cs
@@ -1,238 +1,238 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-
-    internal static partial class Error
-    {
-        internal static ArgumentException Argument(string message, string parameterName)
-        {
-            return Trace(new ArgumentException(message, parameterName));
-        }
-
-        internal static InvalidOperationException InvalidOperation(string message)
-        {
-            return Trace(new InvalidOperationException(message));
-        }
-
-        internal static InvalidOperationException InvalidOperation(string message, Exception innerException)
-        {
-            return Trace(new InvalidOperationException(message, innerException));
-        }
-
-        internal static NotSupportedException NotSupported(string message)
-        {
-            return Trace(new NotSupportedException(message));
-        }
-
-        internal static void ThrowObjectDisposed(Type type)
-        {
-            throw Trace(new ObjectDisposedException(type.ToString()));
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801", Justification = "errorCode ignored for code sharing")]
-        internal static InvalidOperationException HttpHeaderFailure(int errorCode, string message)
-        {
-            return Trace(new InvalidOperationException(message));
-        }
-
-        internal static InvalidOperationException BatchStreamMissingBoundary()
-        {
-            return InvalidOperation(Strings.BatchStream_MissingBoundary);
-        }
-
-        internal static InvalidOperationException BatchStreamContentExpected(BatchStreamState state)
-        {
-            return InvalidOperation(Strings.BatchStream_ContentExpected(state.ToString()));
-        }
-
-        internal static InvalidOperationException BatchStreamContentUnexpected(BatchStreamState state)
-        {
-            return InvalidOperation(Strings.BatchStream_ContentUnexpected(state.ToString()));
-        }
-
-        internal static InvalidOperationException BatchStreamGetMethodNotSupportInChangeset()
-        {
-            return InvalidOperation(Strings.BatchStream_GetMethodNotSupportedInChangeset);
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidBatchFormat()
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidBatchFormat);
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidDelimiter(string delimiter)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidDelimiter(delimiter));
-        }
-
-        internal static InvalidOperationException BatchStreamMissingEndChangesetDelimiter()
-        {
-            return InvalidOperation(Strings.BatchStream_MissingEndChangesetDelimiter);
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidHeaderValueSpecified(string headerValue)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidHeaderValueSpecified(headerValue));
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidContentLengthSpecified(string contentLength)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidContentLengthSpecified(contentLength));
-        }
-
-        internal static InvalidOperationException BatchStreamOnlyGETOperationsCanBeSpecifiedInBatch()
-        {
-            return InvalidOperation(Strings.BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch);
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidOperationHeaderSpecified()
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidOperationHeaderSpecified);
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidHttpMethodName(string methodName)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidHttpMethodName(methodName));
-        }
-
-        internal static InvalidOperationException BatchStreamMoreDataAfterEndOfBatch()
-        {
-            return InvalidOperation(Strings.BatchStream_MoreDataAfterEndOfBatch);
-        }
-
-        internal static InvalidOperationException BatchStreamInternalBufferRequestTooSmall()
-        {
-            return InvalidOperation(Strings.BatchStream_InternalBufferRequestTooSmall);
-        }
-
-        internal static NotSupportedException MethodNotSupported(System.Linq.Expressions.MethodCallExpression m)
-        {
-            return Error.NotSupported(Strings.ALinq_MethodNotSupported(m.Method.Name));
-        }
-
-        internal static void ThrowBatchUnexpectedContent(InternalError value)
-        {
-            throw InvalidOperation(Strings.Batch_UnexpectedContent((int)value));
-        }
-
-        internal static void ThrowBatchExpectedResponse(InternalError value)
-        {
-            throw InvalidOperation(Strings.Batch_ExpectedResponse((int)value));
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidMethodHeaderSpecified(string header)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidMethodHeaderSpecified(header));
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidHttpVersionSpecified(string actualVersion, string expectedVersion)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidHttpVersionSpecified(actualVersion, expectedVersion));
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidNumberOfHeadersAtOperationStart(string header1, string header2)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidNumberOfHeadersAtOperationStart(header1, header2));
-        }
-
-        internal static InvalidOperationException BatchStreamMissingOrInvalidContentEncodingHeader(string headerName, string headerValue)
-        {
-            return InvalidOperation(Strings.BatchStream_MissingOrInvalidContentEncodingHeader(headerName, headerValue));
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidNumberOfHeadersAtChangeSetStart(string header1, string header2)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidNumberOfHeadersAtChangeSetStart(header1, header2));
-        }
-
-        internal static InvalidOperationException BatchStreamMissingContentTypeHeader(string headerName)
-        {
-            return InvalidOperation(Strings.BatchStream_MissingContentTypeHeader(headerName));
-        }
-
-        internal static InvalidOperationException BatchStreamInvalidContentTypeSpecified(string headerName, string headerValue, string mime1, string mime2)
-        {
-            return InvalidOperation(Strings.BatchStream_InvalidContentTypeSpecified(headerName, headerValue, mime1, mime2));
-        }
-
-        internal static InvalidOperationException InternalError(InternalError value)
-        {
-            return InvalidOperation(Strings.Context_InternalError((int)value));
-        }
-
-        internal static void ThrowInternalError(InternalError value)
-        {
-            throw InternalError(value);
-        }
-
-        private static T Trace<T>(T exception) where T : Exception
-        {
-            return exception;
-        }
-    }
-
-    internal enum InternalError
-    {
-        UnexpectedXmlNodeTypeWhenReading = 1,
-        UnexpectedXmlNodeTypeWhenSkipping = 2,
-        UnexpectedEndWhenSkipping = 3,
-        UnexpectedReadState = 4,
-        UnexpectedRequestBufferSizeTooSmall = 5,
-        UnvalidatedEntityState = 6,
-        NullResponseStream = 7,
-        EntityNotDeleted = 8,
-        EntityNotAddedState = 9,
-        LinkNotAddedState = 10,
-        EntryNotModified = 11,
-        LinkBadState = 12,
-        UnexpectedBeginChangeSet = 13,
-        UnexpectedBatchState = 14,
-        ChangeResponseMissingContentID = 15,
-        ChangeResponseUnknownContentID = 16,
-        TooManyBatchResponse = 17,
-
-        InvalidEndGetRequestStream = 20,
-        InvalidEndGetRequestCompleted = 21,
-        InvalidEndGetRequestStreamRequest = 22,
-        InvalidEndGetRequestStreamStream = 23,
-        InvalidEndGetRequestStreamContent = 24,
-        InvalidEndGetRequestStreamContentLength = 25,
-
-        InvalidEndWrite = 30,
-        InvalidEndWriteCompleted = 31,
-        InvalidEndWriteRequest = 32,
-        InvalidEndWriteStream = 33,
-
-        InvalidEndGetResponse = 40,
-        InvalidEndGetResponseCompleted = 41,
-        InvalidEndGetResponseRequest = 42,
-        InvalidEndGetResponseResponse = 43,
-        InvalidAsyncResponseStreamCopy = 44,
-        InvalidAsyncResponseStreamCopyBuffer = 45,
-
-        InvalidEndRead = 50,
-        InvalidEndReadCompleted = 51,
-        InvalidEndReadStream = 52,
-        InvalidEndReadCopy = 53,
-        InvalidEndReadBuffer = 54,
-
-        InvalidSaveNextChange = 60,
-        InvalidBeginNextChange = 61,
-        SaveNextChangeIncomplete = 62,
-
-        InvalidGetRequestStream = 70,
-        InvalidGetResponse = 71,
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+
+    internal static partial class Error
+    {
+        internal static ArgumentException Argument(string message, string parameterName)
+        {
+            return Trace(new ArgumentException(message, parameterName));
+        }
+
+        internal static InvalidOperationException InvalidOperation(string message)
+        {
+            return Trace(new InvalidOperationException(message));
+        }
+
+        internal static InvalidOperationException InvalidOperation(string message, Exception innerException)
+        {
+            return Trace(new InvalidOperationException(message, innerException));
+        }
+
+        internal static NotSupportedException NotSupported(string message)
+        {
+            return Trace(new NotSupportedException(message));
+        }
+
+        internal static void ThrowObjectDisposed(Type type)
+        {
+            throw Trace(new ObjectDisposedException(type.ToString()));
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801", Justification = "errorCode ignored for code sharing")]
+        internal static InvalidOperationException HttpHeaderFailure(int errorCode, string message)
+        {
+            return Trace(new InvalidOperationException(message));
+        }
+
+        internal static InvalidOperationException BatchStreamMissingBoundary()
+        {
+            return InvalidOperation(Strings.BatchStream_MissingBoundary);
+        }
+
+        internal static InvalidOperationException BatchStreamContentExpected(BatchStreamState state)
+        {
+            return InvalidOperation(Strings.BatchStream_ContentExpected(state.ToString()));
+        }
+
+        internal static InvalidOperationException BatchStreamContentUnexpected(BatchStreamState state)
+        {
+            return InvalidOperation(Strings.BatchStream_ContentUnexpected(state.ToString()));
+        }
+
+        internal static InvalidOperationException BatchStreamGetMethodNotSupportInChangeset()
+        {
+            return InvalidOperation(Strings.BatchStream_GetMethodNotSupportedInChangeset);
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidBatchFormat()
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidBatchFormat);
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidDelimiter(string delimiter)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidDelimiter(delimiter));
+        }
+
+        internal static InvalidOperationException BatchStreamMissingEndChangesetDelimiter()
+        {
+            return InvalidOperation(Strings.BatchStream_MissingEndChangesetDelimiter);
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidHeaderValueSpecified(string headerValue)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidHeaderValueSpecified(headerValue));
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidContentLengthSpecified(string contentLength)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidContentLengthSpecified(contentLength));
+        }
+
+        internal static InvalidOperationException BatchStreamOnlyGETOperationsCanBeSpecifiedInBatch()
+        {
+            return InvalidOperation(Strings.BatchStream_OnlyGETOperationsCanBeSpecifiedInBatch);
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidOperationHeaderSpecified()
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidOperationHeaderSpecified);
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidHttpMethodName(string methodName)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidHttpMethodName(methodName));
+        }
+
+        internal static InvalidOperationException BatchStreamMoreDataAfterEndOfBatch()
+        {
+            return InvalidOperation(Strings.BatchStream_MoreDataAfterEndOfBatch);
+        }
+
+        internal static InvalidOperationException BatchStreamInternalBufferRequestTooSmall()
+        {
+            return InvalidOperation(Strings.BatchStream_InternalBufferRequestTooSmall);
+        }
+
+        internal static NotSupportedException MethodNotSupported(System.Linq.Expressions.MethodCallExpression m)
+        {
+            return Error.NotSupported(Strings.ALinq_MethodNotSupported(m.Method.Name));
+        }
+
+        internal static void ThrowBatchUnexpectedContent(InternalError value)
+        {
+            throw InvalidOperation(Strings.Batch_UnexpectedContent((int)value));
+        }
+
+        internal static void ThrowBatchExpectedResponse(InternalError value)
+        {
+            throw InvalidOperation(Strings.Batch_ExpectedResponse((int)value));
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidMethodHeaderSpecified(string header)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidMethodHeaderSpecified(header));
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidHttpVersionSpecified(string actualVersion, string expectedVersion)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidHttpVersionSpecified(actualVersion, expectedVersion));
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidNumberOfHeadersAtOperationStart(string header1, string header2)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidNumberOfHeadersAtOperationStart(header1, header2));
+        }
+
+        internal static InvalidOperationException BatchStreamMissingOrInvalidContentEncodingHeader(string headerName, string headerValue)
+        {
+            return InvalidOperation(Strings.BatchStream_MissingOrInvalidContentEncodingHeader(headerName, headerValue));
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidNumberOfHeadersAtChangeSetStart(string header1, string header2)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidNumberOfHeadersAtChangeSetStart(header1, header2));
+        }
+
+        internal static InvalidOperationException BatchStreamMissingContentTypeHeader(string headerName)
+        {
+            return InvalidOperation(Strings.BatchStream_MissingContentTypeHeader(headerName));
+        }
+
+        internal static InvalidOperationException BatchStreamInvalidContentTypeSpecified(string headerName, string headerValue, string mime1, string mime2)
+        {
+            return InvalidOperation(Strings.BatchStream_InvalidContentTypeSpecified(headerName, headerValue, mime1, mime2));
+        }
+
+        internal static InvalidOperationException InternalError(InternalError value)
+        {
+            return InvalidOperation(Strings.Context_InternalError((int)value));
+        }
+
+        internal static void ThrowInternalError(InternalError value)
+        {
+            throw InternalError(value);
+        }
+
+        private static T Trace<T>(T exception) where T : Exception
+        {
+            return exception;
+        }
+    }
+
+    internal enum InternalError
+    {
+        UnexpectedXmlNodeTypeWhenReading = 1,
+        UnexpectedXmlNodeTypeWhenSkipping = 2,
+        UnexpectedEndWhenSkipping = 3,
+        UnexpectedReadState = 4,
+        UnexpectedRequestBufferSizeTooSmall = 5,
+        UnvalidatedEntityState = 6,
+        NullResponseStream = 7,
+        EntityNotDeleted = 8,
+        EntityNotAddedState = 9,
+        LinkNotAddedState = 10,
+        EntryNotModified = 11,
+        LinkBadState = 12,
+        UnexpectedBeginChangeSet = 13,
+        UnexpectedBatchState = 14,
+        ChangeResponseMissingContentID = 15,
+        ChangeResponseUnknownContentID = 16,
+        TooManyBatchResponse = 17,
+
+        InvalidEndGetRequestStream = 20,
+        InvalidEndGetRequestCompleted = 21,
+        InvalidEndGetRequestStreamRequest = 22,
+        InvalidEndGetRequestStreamStream = 23,
+        InvalidEndGetRequestStreamContent = 24,
+        InvalidEndGetRequestStreamContentLength = 25,
+
+        InvalidEndWrite = 30,
+        InvalidEndWriteCompleted = 31,
+        InvalidEndWriteRequest = 32,
+        InvalidEndWriteStream = 33,
+
+        InvalidEndGetResponse = 40,
+        InvalidEndGetResponseCompleted = 41,
+        InvalidEndGetResponseRequest = 42,
+        InvalidEndGetResponseResponse = 43,
+        InvalidAsyncResponseStreamCopy = 44,
+        InvalidAsyncResponseStreamCopyBuffer = 45,
+
+        InvalidEndRead = 50,
+        InvalidEndReadCompleted = 51,
+        InvalidEndReadStream = 52,
+        InvalidEndReadCopy = 53,
+        InvalidEndReadBuffer = 54,
+
+        InvalidSaveNextChange = 60,
+        InvalidBeginNextChange = 61,
+        SaveNextChangeIncomplete = 62,
+
+        InvalidGetRequestStream = 70,
+        InvalidGetResponse = 71,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/GetReadStreamResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/GetReadStreamResult.cs
@@ -1,181 +1,181 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Diagnostics;
-#if !ASTORIA_LIGHT
-    using System.Net;
-#else    
-    using System.Data.Services.Http;
-#endif
-
-    internal class GetReadStreamResult : BaseAsyncResult
-    {
-        private readonly HttpWebRequest request;
-
-        private HttpWebResponse response;
-
-        internal GetReadStreamResult(
-            object source, 
-            string method, 
-            HttpWebRequest request, 
-            AsyncCallback callback, 
-            object state)
-            : base(source, method, callback, state)
-        {
-            Debug.Assert(request != null, "Null request can't be wrapped to a result.");
-            this.request = request;
-            this.Abortable = request;
-        }
-
-        internal void Begin()
-        {
-            try
-            {
-                IAsyncResult asyncResult;
-                asyncResult = BaseAsyncResult.InvokeAsync(this.request.BeginGetResponse, GetReadStreamResult.AsyncEndGetResponse, this);
-
-                this.CompletedSynchronously &= asyncResult.CompletedSynchronously;
-            }
-            catch (Exception e)
-            {
-                this.HandleFailure(e);
-                throw;
-            }
-            finally
-            {
-                this.HandleCompleted();
-            }
-
-            Debug.Assert(!this.CompletedSynchronously || this.IsCompleted, "if CompletedSynchronously then MUST IsCompleted");
-        }
-
-        internal DataServiceStreamResponse End()
-        {
-            if (this.response != null)
-            {
-                DataServiceStreamResponse streamResponse = new DataServiceStreamResponse(this.response);
-                return streamResponse;
-            }
-            else 
-            {
-                return null;
-            }
-        }
-
-#if !ASTORIA_LIGHT
-        internal DataServiceStreamResponse Execute()
-        {
-            try
-            {
-                System.Net.HttpWebResponse webresponse = null;
-                try
-                {
-                    webresponse = (System.Net.HttpWebResponse)this.request.GetResponse();
-                }
-                catch (System.Net.WebException ex)
-                {
-                    webresponse = (System.Net.HttpWebResponse)ex.Response;
-                    if (null == webresponse)
-                    {
-                        throw;
-                    }
-                }
-
-                this.SetHttpWebResponse(webresponse);
-            }
-            catch (Exception e)
-            {
-                this.HandleFailure(e);
-                throw;
-            }
-            finally
-            {
-                this.SetCompleted();
-                this.CompletedRequest();
-            }
-
-            if (null != this.Failure)
-            {
-                throw this.Failure;
-            }
-
-            return this.End();
-        }
-#endif
-
-        protected override void CompletedRequest()
-        {
-            Debug.Assert(null != this.response || null != this.Failure, "should have response or exception");
-            if (null != this.response)
-            {
-                InvalidOperationException failure = null;
-                if (!WebUtil.SuccessStatusCode(this.response.StatusCode))
-                {
-                    failure = DataServiceContext.GetResponseText(this.response.GetResponseStream, this.response.StatusCode);
-                }
-
-                if (failure != null)
-                {
-                    this.response.Close();
-                    this.HandleFailure(failure);
-                }
-            }
-        }
-
-        private static void AsyncEndGetResponse(IAsyncResult asyncResult)
-        {
-            GetReadStreamResult state = asyncResult.AsyncState as GetReadStreamResult;
-            Debug.Assert(state != null, "Async callback got called for different request.");
-
-            try
-            {
-                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;                HttpWebRequest request = Util.NullCheck(state.request, InternalError.InvalidEndGetResponseRequest);
-
-                HttpWebResponse webresponse = null;
-                try
-                {
-                    webresponse = (HttpWebResponse)request.EndGetResponse(asyncResult);
-                }
-                catch (WebException e)
-                {
-                    webresponse = (HttpWebResponse)e.Response;
-                    if (null == webresponse)
-                    {
-                        throw;
-                    }
-                }
-
-                state.SetHttpWebResponse(webresponse);
-                state.SetCompleted();
-            }
-            catch (Exception e)
-            {
-                if (state.HandleFailure(e))
-                {
-                    throw;
-                }
-            }
-            finally
-            {
-                state.HandleCompleted();
-            }
-        }
-
-        private void SetHttpWebResponse(HttpWebResponse webResponse)
-        {
-            Debug.Assert(webResponse != null, "Can't set a null response.");
-            this.response = webResponse;
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Diagnostics;
+#if !ASTORIA_LIGHT
+    using System.Net;
+#else    
+    using System.Data.Services.Http;
+#endif
+
+    internal class GetReadStreamResult : BaseAsyncResult
+    {
+        private readonly HttpWebRequest request;
+
+        private HttpWebResponse response;
+
+        internal GetReadStreamResult(
+            object source, 
+            string method, 
+            HttpWebRequest request, 
+            AsyncCallback callback, 
+            object state)
+            : base(source, method, callback, state)
+        {
+            Debug.Assert(request != null, "Null request can't be wrapped to a result.");
+            this.request = request;
+            this.Abortable = request;
+        }
+
+        internal void Begin()
+        {
+            try
+            {
+                IAsyncResult asyncResult;
+                asyncResult = BaseAsyncResult.InvokeAsync(this.request.BeginGetResponse, GetReadStreamResult.AsyncEndGetResponse, this);
+
+                this.CompletedSynchronously &= asyncResult.CompletedSynchronously;
+            }
+            catch (Exception e)
+            {
+                this.HandleFailure(e);
+                throw;
+            }
+            finally
+            {
+                this.HandleCompleted();
+            }
+
+            Debug.Assert(!this.CompletedSynchronously || this.IsCompleted, "if CompletedSynchronously then MUST IsCompleted");
+        }
+
+        internal DataServiceStreamResponse End()
+        {
+            if (this.response != null)
+            {
+                DataServiceStreamResponse streamResponse = new DataServiceStreamResponse(this.response);
+                return streamResponse;
+            }
+            else 
+            {
+                return null;
+            }
+        }
+
+#if !ASTORIA_LIGHT
+        internal DataServiceStreamResponse Execute()
+        {
+            try
+            {
+                System.Net.HttpWebResponse webresponse = null;
+                try
+                {
+                    webresponse = (System.Net.HttpWebResponse)this.request.GetResponse();
+                }
+                catch (System.Net.WebException ex)
+                {
+                    webresponse = (System.Net.HttpWebResponse)ex.Response;
+                    if (null == webresponse)
+                    {
+                        throw;
+                    }
+                }
+
+                this.SetHttpWebResponse(webresponse);
+            }
+            catch (Exception e)
+            {
+                this.HandleFailure(e);
+                throw;
+            }
+            finally
+            {
+                this.SetCompleted();
+                this.CompletedRequest();
+            }
+
+            if (null != this.Failure)
+            {
+                throw this.Failure;
+            }
+
+            return this.End();
+        }
+#endif
+
+        protected override void CompletedRequest()
+        {
+            Debug.Assert(null != this.response || null != this.Failure, "should have response or exception");
+            if (null != this.response)
+            {
+                InvalidOperationException failure = null;
+                if (!WebUtil.SuccessStatusCode(this.response.StatusCode))
+                {
+                    failure = DataServiceContext.GetResponseText(this.response.GetResponseStream, this.response.StatusCode);
+                }
+
+                if (failure != null)
+                {
+                    this.response.Close();
+                    this.HandleFailure(failure);
+                }
+            }
+        }
+
+        private static void AsyncEndGetResponse(IAsyncResult asyncResult)
+        {
+            GetReadStreamResult state = asyncResult.AsyncState as GetReadStreamResult;
+            Debug.Assert(state != null, "Async callback got called for different request.");
+
+            try
+            {
+                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;                HttpWebRequest request = Util.NullCheck(state.request, InternalError.InvalidEndGetResponseRequest);
+
+                HttpWebResponse webresponse = null;
+                try
+                {
+                    webresponse = (HttpWebResponse)request.EndGetResponse(asyncResult);
+                }
+                catch (WebException e)
+                {
+                    webresponse = (HttpWebResponse)e.Response;
+                    if (null == webresponse)
+                    {
+                        throw;
+                    }
+                }
+
+                state.SetHttpWebResponse(webresponse);
+                state.SetCompleted();
+            }
+            catch (Exception e)
+            {
+                if (state.HandleFailure(e))
+                {
+                    throw;
+                }
+            }
+            finally
+            {
+                state.HandleCompleted();
+            }
+        }
+
+        private void SetHttpWebResponse(HttpWebResponse webResponse)
+        {
+            Debug.Assert(webResponse != null, "Can't set a null response.");
+            this.response = webResponse;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/HasStreamAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/HasStreamAttribute.cs
@@ -1,21 +1,21 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System;
-
-    [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
-    public sealed class HasStreamAttribute : Attribute
-    {
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System;
+
+    [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
+    public sealed class HasStreamAttribute : Attribute
+    {
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/LinkDescriptor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/LinkDescriptor.cs
@@ -1,89 +1,89 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Diagnostics;
-
-    [DebuggerDisplay("State = {state}")]
-    public sealed class LinkDescriptor : Descriptor
-    {
-        #region Fields
-
-        internal static readonly System.Collections.Generic.IEqualityComparer<LinkDescriptor> EquivalenceComparer = new Equivalent();
-
-        private object source;
-
-        private string sourceProperty;
-
-        private object target;
-
-        #endregion
-        
-        internal LinkDescriptor(object source, string sourceProperty, object target)
-            : this(source, sourceProperty, target,  EntityStates.Unchanged)
-        {
-        }
-
-        internal LinkDescriptor(object source, string sourceProperty, object target, EntityStates state)
-            : base(state)
-        {
-            this.source = source;
-            this.sourceProperty = sourceProperty;
-            this.target = target;
-        }
-
-#region Public Properties
-
-        public object Target
-        {
-            get { return this.target; }
-        }
-
-        public object Source
-        {
-            get { return this.source; }
-        }
-
-        public string SourceProperty
-        {
-            get { return this.sourceProperty; }
-        }
-
-#endregion
-        
-        internal override bool IsResource
-        {
-            get { return false; }
-        }
-
-        internal bool IsEquivalent(object src, string srcPropName, object targ)
-        {
-            return (this.source == src &&
-                this.target == targ &&
-                this.sourceProperty == srcPropName);
-        }
-
-        private sealed class Equivalent : System.Collections.Generic.IEqualityComparer<LinkDescriptor>
-        {
-            public bool Equals(LinkDescriptor x, LinkDescriptor y)
-            {
-                return x.IsEquivalent(y.source, y.sourceProperty, y.target);
-            }
-
-            public int GetHashCode(LinkDescriptor obj)
-            {
-                return obj.Source.GetHashCode() ^ ((null != obj.Target) ? obj.Target.GetHashCode() : 0) ^ obj.SourceProperty.GetHashCode();
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Diagnostics;
+
+    [DebuggerDisplay("State = {state}")]
+    public sealed class LinkDescriptor : Descriptor
+    {
+        #region Fields
+
+        internal static readonly System.Collections.Generic.IEqualityComparer<LinkDescriptor> EquivalenceComparer = new Equivalent();
+
+        private object source;
+
+        private string sourceProperty;
+
+        private object target;
+
+        #endregion
+        
+        internal LinkDescriptor(object source, string sourceProperty, object target)
+            : this(source, sourceProperty, target,  EntityStates.Unchanged)
+        {
+        }
+
+        internal LinkDescriptor(object source, string sourceProperty, object target, EntityStates state)
+            : base(state)
+        {
+            this.source = source;
+            this.sourceProperty = sourceProperty;
+            this.target = target;
+        }
+
+#region Public Properties
+
+        public object Target
+        {
+            get { return this.target; }
+        }
+
+        public object Source
+        {
+            get { return this.source; }
+        }
+
+        public string SourceProperty
+        {
+            get { return this.sourceProperty; }
+        }
+
+#endregion
+        
+        internal override bool IsResource
+        {
+            get { return false; }
+        }
+
+        internal bool IsEquivalent(object src, string srcPropName, object targ)
+        {
+            return (this.source == src &&
+                this.target == targ &&
+                this.sourceProperty == srcPropName);
+        }
+
+        private sealed class Equivalent : System.Collections.Generic.IEqualityComparer<LinkDescriptor>
+        {
+            public bool Equals(LinkDescriptor x, LinkDescriptor y)
+            {
+                return x.IsEquivalent(y.source, y.sourceProperty, y.target);
+            }
+
+            public int GetHashCode(LinkDescriptor obj)
+            {
+                return obj.Source.GetHashCode() ^ ((null != obj.Target) ? obj.Target.GetHashCode() : 0) ^ obj.SourceProperty.GetHashCode();
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MaterializeFromAtom.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MaterializeFromAtom.cs
@@ -1,510 +1,510 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Xml;
-    using System.Xml.Linq;
-    using System.Text;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal class MaterializeAtom : IDisposable, IEnumerable, IEnumerator
-    {
-        internal readonly MergeOption MergeOptionValue;
-
-        #region Private fields.
-
-        private const long CountStateInitial = -1;
-
-        private const long CountStateFailure = -2;
-
-        private readonly bool ignoreMissingProperties;
-
-        private readonly DataServiceContext context;
-
-        private readonly Type elementType;
-
-        private readonly bool expectingSingleValue;
-
-        private readonly AtomMaterializer materializer;
-
-        private readonly AtomParser parser;
-
-        private XmlReader reader;
-
-        private object current;
-
-        private bool calledGetEnumerator;
-
-        private long countValue;
-
-        private bool moved;
-
-#if DEBUG && !ASTORIA_LIGHT
-        private System.IO.TextWriter writer = new System.IO.StringWriter(System.Globalization.CultureInfo.InvariantCulture);
-#else
-#pragma warning disable 649
-        private System.IO.TextWriter writer;
-#pragma warning restore 649
-#endif
-
-        #endregion Private fields.
-
-        internal MaterializeAtom(DataServiceContext context, XmlReader reader, QueryComponents queryComponents, ProjectionPlan plan, MergeOption mergeOption)
-        {
-            Debug.Assert(queryComponents != null, "queryComponents != null");
-
-            this.context = context;
-            this.elementType = queryComponents.LastSegmentType;
-            this.MergeOptionValue = mergeOption;
-            this.ignoreMissingProperties = context.IgnoreMissingProperties;
-            this.reader = (reader == null) ? null : new System.Data.Services.Client.Xml.XmlAtomErrorReader(reader);
-            this.countValue = CountStateInitial;
-            this.expectingSingleValue = ClientConvert.IsKnownNullableType(elementType);
-
-            Debug.Assert(reader != null, "Materializer reader is null! Did you mean to use Materializer.ResultsWrapper/EmptyResults?");
-
-            reader.Settings.NameTable.Add(context.DataNamespace);
-
-            string typeScheme = this.context.TypeScheme.OriginalString;
-            this.parser = new AtomParser(this.reader, AtomParser.XElementBuilderCallback, typeScheme, context.DataNamespace);
-            AtomMaterializerLog log = new AtomMaterializerLog(this.context, mergeOption);
-            Type implementationType;
-            Type materializerType = GetTypeForMaterializer(this.expectingSingleValue, this.elementType, out implementationType);
-            this.materializer = new AtomMaterializer(parser, context, materializerType, this.ignoreMissingProperties, mergeOption, log, this.MaterializedObjectCallback, queryComponents, plan);
-        }
-
-        private void MaterializedObjectCallback(object tag, object entity)
-        {
-            Debug.Assert(tag != null, "tag != null");
-            Debug.Assert(entity != null, "entity != null");
-
-            XElement data = (XElement)tag;
-            if (this.context.HasReadingEntityHandlers)
-            {
-                XmlUtil.RemoveDuplicateNamespaceAttributes(data);
-                this.context.FireReadingEntityEvent(entity, data);
-            }
-        }
-
-        private MaterializeAtom()
-        {
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        private MaterializeAtom(DataServiceContext context, XmlReader reader, Type type, MergeOption mergeOption)
-            : this(context, reader, new QueryComponents(null, Util.DataServiceVersionEmpty, type, null, null), null, mergeOption)
-        {
-        }
-
-        #region Current
-
-        public object Current
-        {
-            get
-            {
-                object currentValue = this.current;
-                return currentValue;
-            }
-        }
-
-        #endregion
-
-        internal static MaterializeAtom EmptyResults
-        {
-            get
-            {
-                return new ResultsWrapper(null, null);
-            }
-        }
-
-        internal bool IsEmptyResults
-        {
-            get { return this.reader == null; }
-        }
-
-        internal DataServiceContext Context
-        {
-            get { return this.context; }
-        }
-
-        #region IDisposable
-        public void Dispose()
-        {
-            this.current = null;
-
-            if (null != this.reader)
-            {
-                ((IDisposable)this.reader).Dispose();
-            }
-
-            if (null != this.writer)
-            {
-                this.writer.Dispose();
-            }
-
-            GC.SuppressFinalize(this);
-        }
-
-        #endregion
-
-        #region IEnumerable
-        public virtual IEnumerator GetEnumerator()
-        {
-            this.CheckGetEnumerator();
-            return this;
-        }
-        #endregion
-
-        private static Type GetTypeForMaterializer(bool expectingSingleValue, Type elementType, out Type implementationType)
-        {
-            if (!expectingSingleValue && typeof(IEnumerable).IsAssignableFrom(elementType))
-            {
-                implementationType = ClientType.GetImplementationType(elementType, typeof(ICollection<>));
-                if (implementationType != null)
-                {
-                    Type expectedType = implementationType.GetGenericArguments()[0];                    return expectedType;
-                }
-            }
-
-            implementationType = null;
-            return elementType;
-        }
-
-        public bool MoveNext()
-        {
-            bool applying = this.context.ApplyingChanges;
-            try
-            {
-                this.context.ApplyingChanges = true;
-                return this.MoveNextInternal();
-            }
-            finally
-            {
-                this.context.ApplyingChanges = applying;
-            }
-        }
-
-        private bool MoveNextInternal()
-        {
-            if (this.reader == null)
-            {
-                Debug.Assert(this.current == null, "this.current == null -- otherwise this.reader should have some value.");
-                return false;
-            }
-
-            this.current = null;
-            this.materializer.Log.Clear();
-
-            bool result = false;
-            Type implementationType;
-            GetTypeForMaterializer(this.expectingSingleValue, this.elementType, out implementationType);
-            if (implementationType != null)
-            {
-                if (this.moved)
-                {
-                    return false;
-                }
-
-                Type expectedType = implementationType.GetGenericArguments()[0];                implementationType = this.elementType;
-                if (implementationType.IsInterface)
-                {
-                    implementationType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(expectedType);
-                }
-
-                IList list = (IList)Activator.CreateInstance(implementationType);
-
-                while (this.materializer.Read())
-                {
-                    this.moved = true;
-                    list.Add(this.materializer.CurrentValue);
-                }
-
-                this.current = list;
-                result = true;
-            }
-
-            if (null == this.current)
-            {
-                if (this.expectingSingleValue && this.moved)
-                {
-                    result = false;
-                }
-                else
-                {
-                    result = this.materializer.Read();
-                    if (result)
-                    {
-                        this.current = this.materializer.CurrentValue;
-                    }
-
-                    this.moved = true;
-                }
-            }
-
-            this.materializer.Log.ApplyToContext();
-
-            return result;
-        }
-
-        void System.Collections.IEnumerator.Reset()
-        {
-            throw Error.NotSupported();
-        }
-
-        internal static MaterializeAtom CreateWrapper(IEnumerable results)
-        {
-            return new ResultsWrapper(results, null);
-        }
-
-        internal static MaterializeAtom CreateWrapper(IEnumerable results, DataServiceQueryContinuation continuation)
-        {
-            return new ResultsWrapper(results, continuation);
-        }
-
-        internal void SetInsertingObject(object addedObject)
-        {
-            this.materializer.TargetInstance = addedObject;
-        }
-
-        internal static void SkipToEnd(XmlReader reader)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(reader.NodeType == XmlNodeType.Element, "reader.NodeType == XmlNodeType.Element");
-
-            if (reader.IsEmptyElement)
-            {
-                return;
-            }
-
-            int readerDepth = reader.Depth;
-            while (reader.Read())
-            {
-                if (reader.NodeType == XmlNodeType.EndElement && reader.Depth == readerDepth)
-                {
-                    return;
-                }
-            }
-        }
-
-        internal long CountValue()
-        {
-            if (this.countValue == CountStateInitial)
-            {
-                this.ReadCountValue();
-            }
-            else if (this.countValue == CountStateFailure)
-            {
-                throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
-            }
-
-            return this.countValue;
-        }
-
-        internal virtual DataServiceQueryContinuation GetContinuation(IEnumerable key)
-        {
-            Debug.Assert(this.materializer != null, "Materializer is null!");
-
-            DataServiceQueryContinuation result;
-            if (key == null)
-            {
-                if ((this.expectingSingleValue && !this.moved) || (!this.expectingSingleValue && !this.materializer.IsEndOfStream))
-                {
-                    throw new InvalidOperationException(Strings.MaterializeFromAtom_TopLevelLinkNotAvailable);
-                }
-
-                if (this.expectingSingleValue || this.materializer.CurrentFeed == null)
-                {
-                    result = null;
-                }
-                else
-                {
-                    result = DataServiceQueryContinuation.Create(
-                        this.materializer.CurrentFeed.NextLink, 
-                        this.materializer.MaterializeEntryPlan);
-                }
-            }
-            else
-            {
-                if (!this.materializer.NextLinkTable.TryGetValue(key, out result))
-                {
-                    throw new ArgumentException(Strings.MaterializeFromAtom_CollectionKeyNotPresentInLinkTable);
-                }
-            }
-
-            return result;
-        }
-            
-        private void CheckGetEnumerator()
-        {
-            if (this.calledGetEnumerator)
-            {
-                throw Error.NotSupported(Strings.Deserialize_GetEnumerator);
-            }
-
-            this.calledGetEnumerator = true;
-        }
-
-        private void ReadCountValue()
-        {
-            Debug.Assert(this.countValue == CountStateInitial, "Count value is not in the initial state");
-
-            if (this.materializer.CurrentFeed != null &&
-                this.materializer.CurrentFeed.Count.HasValue)
-            {
-                this.countValue = this.materializer.CurrentFeed.Count.Value;
-                return;
-            }
-
-            while (this.reader.NodeType != XmlNodeType.Element && this.reader.Read())
-            {
-            }
-
-            if (this.reader.EOF)
-            {
-                throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
-            }
-
-            Debug.Assert(
-                (Util.AreSame(XmlConstants.AtomNamespace, this.reader.NamespaceURI) &&
-                Util.AreSame(XmlConstants.AtomFeedElementName, this.reader.LocalName)) ||
-                (Util.AreSame(XmlConstants.DataWebNamespace, this.reader.NamespaceURI) &&
-                Util.AreSame(XmlConstants.LinkCollectionElementName, this.reader.LocalName)),
-                "<feed> or <links> tag expected");
-
-            XElement element = XElement.Load(this.reader);
-            this.reader.Close();
-
-            XElement countNode = element.Descendants(XNamespace.Get(XmlConstants.DataWebMetadataNamespace) + XmlConstants.RowCountElement).FirstOrDefault();
-
-            if (countNode == null)
-            {
-                throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
-            }
-            else
-            {
-                if (!long.TryParse(countNode.Value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out this.countValue))
-                {
-                    throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
-                }
-
-                if (this.countValue < 0)
-                {
-                    throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
-                }
-            }
-
-            this.reader = new System.Data.Services.Client.Xml.XmlAtomErrorReader(element.CreateReader());
-            this.parser.ReplaceReader(this.reader);
-        }
-
-        internal static ClientType GetEntryClientType(string typeName, DataServiceContext context, Type expectedType, bool checkAssignable)
-        {
-            Debug.Assert(context != null, "context != null");
-            Type resolvedType = context.ResolveTypeFromName(typeName, expectedType, checkAssignable);
-            ClientType result = ClientType.Create(resolvedType);
-            Debug.Assert(result != null, "result != null -- otherwise ClientType.Create returned null");
-            return result;
-        }
-
-        internal static string ReadElementString(XmlReader reader, bool checkNullAttribute)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(
-                reader.NodeType == XmlNodeType.Element,
-                "reader.NodeType == XmlNodeType.Element -- otherwise caller is confused as to where the reader is");
-
-            string result = null;
-            bool empty = checkNullAttribute && !Util.DoesNullAttributeSayTrue(reader);
-
-            if (reader.IsEmptyElement)
-            {
-                return (empty ? String.Empty : null);
-            }
-
-            while (reader.Read())
-            {
-                switch (reader.NodeType)
-                {
-                    case XmlNodeType.EndElement:
-                        return result ?? (empty ? String.Empty : null);
-                    case XmlNodeType.CDATA:
-                    case XmlNodeType.Text:
-                    case XmlNodeType.SignificantWhitespace:
-                        if (null != result)
-                        {
-                            throw Error.InvalidOperation(Strings.Deserialize_MixedTextWithComment);
-                        }
-
-                        result = reader.Value;
-                        break;
-                    case XmlNodeType.Comment:
-                    case XmlNodeType.Whitespace:
-                        break;
-
-                    #region XmlNodeType error
-                    case XmlNodeType.Element:
-                        goto default;
-
-                    default:
-                        throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
-                    #endregion
-                }
-            }
-
-            throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
-        }
-
-        private class ResultsWrapper : MaterializeAtom
-        {
-            #region Private fields.
-
-            private readonly IEnumerable results;
-
-            private readonly DataServiceQueryContinuation continuation;
-
-            #endregion Private fields.
-
-            internal ResultsWrapper(IEnumerable results, DataServiceQueryContinuation continuation)
-            {
-                this.results = results ?? new object[0];
-                this.continuation = continuation;
-            }
-
-            internal override DataServiceQueryContinuation GetContinuation(IEnumerable key)
-            {
-                if (key == null)
-                {
-                    return this.continuation;
-                }
-                else
-                {
-                    throw new InvalidOperationException(Strings.MaterializeFromAtom_GetNestLinkForFlatCollection);
-                }
-            }
-
-            public override IEnumerator GetEnumerator()
-            {
-                return this.results.GetEnumerator();
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Xml;
+    using System.Xml.Linq;
+    using System.Text;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal class MaterializeAtom : IDisposable, IEnumerable, IEnumerator
+    {
+        internal readonly MergeOption MergeOptionValue;
+
+        #region Private fields.
+
+        private const long CountStateInitial = -1;
+
+        private const long CountStateFailure = -2;
+
+        private readonly bool ignoreMissingProperties;
+
+        private readonly DataServiceContext context;
+
+        private readonly Type elementType;
+
+        private readonly bool expectingSingleValue;
+
+        private readonly AtomMaterializer materializer;
+
+        private readonly AtomParser parser;
+
+        private XmlReader reader;
+
+        private object current;
+
+        private bool calledGetEnumerator;
+
+        private long countValue;
+
+        private bool moved;
+
+#if DEBUG && !ASTORIA_LIGHT
+        private System.IO.TextWriter writer = new System.IO.StringWriter(System.Globalization.CultureInfo.InvariantCulture);
+#else
+#pragma warning disable 649
+        private System.IO.TextWriter writer;
+#pragma warning restore 649
+#endif
+
+        #endregion Private fields.
+
+        internal MaterializeAtom(DataServiceContext context, XmlReader reader, QueryComponents queryComponents, ProjectionPlan plan, MergeOption mergeOption)
+        {
+            Debug.Assert(queryComponents != null, "queryComponents != null");
+
+            this.context = context;
+            this.elementType = queryComponents.LastSegmentType;
+            this.MergeOptionValue = mergeOption;
+            this.ignoreMissingProperties = context.IgnoreMissingProperties;
+            this.reader = (reader == null) ? null : new System.Data.Services.Client.Xml.XmlAtomErrorReader(reader);
+            this.countValue = CountStateInitial;
+            this.expectingSingleValue = ClientConvert.IsKnownNullableType(elementType);
+
+            Debug.Assert(reader != null, "Materializer reader is null! Did you mean to use Materializer.ResultsWrapper/EmptyResults?");
+
+            reader.Settings.NameTable.Add(context.DataNamespace);
+
+            string typeScheme = this.context.TypeScheme.OriginalString;
+            this.parser = new AtomParser(this.reader, AtomParser.XElementBuilderCallback, typeScheme, context.DataNamespace);
+            AtomMaterializerLog log = new AtomMaterializerLog(this.context, mergeOption);
+            Type implementationType;
+            Type materializerType = GetTypeForMaterializer(this.expectingSingleValue, this.elementType, out implementationType);
+            this.materializer = new AtomMaterializer(parser, context, materializerType, this.ignoreMissingProperties, mergeOption, log, this.MaterializedObjectCallback, queryComponents, plan);
+        }
+
+        private void MaterializedObjectCallback(object tag, object entity)
+        {
+            Debug.Assert(tag != null, "tag != null");
+            Debug.Assert(entity != null, "entity != null");
+
+            XElement data = (XElement)tag;
+            if (this.context.HasReadingEntityHandlers)
+            {
+                XmlUtil.RemoveDuplicateNamespaceAttributes(data);
+                this.context.FireReadingEntityEvent(entity, data);
+            }
+        }
+
+        private MaterializeAtom()
+        {
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        private MaterializeAtom(DataServiceContext context, XmlReader reader, Type type, MergeOption mergeOption)
+            : this(context, reader, new QueryComponents(null, Util.DataServiceVersionEmpty, type, null, null), null, mergeOption)
+        {
+        }
+
+        #region Current
+
+        public object Current
+        {
+            get
+            {
+                object currentValue = this.current;
+                return currentValue;
+            }
+        }
+
+        #endregion
+
+        internal static MaterializeAtom EmptyResults
+        {
+            get
+            {
+                return new ResultsWrapper(null, null);
+            }
+        }
+
+        internal bool IsEmptyResults
+        {
+            get { return this.reader == null; }
+        }
+
+        internal DataServiceContext Context
+        {
+            get { return this.context; }
+        }
+
+        #region IDisposable
+        public void Dispose()
+        {
+            this.current = null;
+
+            if (null != this.reader)
+            {
+                ((IDisposable)this.reader).Dispose();
+            }
+
+            if (null != this.writer)
+            {
+                this.writer.Dispose();
+            }
+
+            GC.SuppressFinalize(this);
+        }
+
+        #endregion
+
+        #region IEnumerable
+        public virtual IEnumerator GetEnumerator()
+        {
+            this.CheckGetEnumerator();
+            return this;
+        }
+        #endregion
+
+        private static Type GetTypeForMaterializer(bool expectingSingleValue, Type elementType, out Type implementationType)
+        {
+            if (!expectingSingleValue && typeof(IEnumerable).IsAssignableFrom(elementType))
+            {
+                implementationType = ClientType.GetImplementationType(elementType, typeof(ICollection<>));
+                if (implementationType != null)
+                {
+                    Type expectedType = implementationType.GetGenericArguments()[0];                    return expectedType;
+                }
+            }
+
+            implementationType = null;
+            return elementType;
+        }
+
+        public bool MoveNext()
+        {
+            bool applying = this.context.ApplyingChanges;
+            try
+            {
+                this.context.ApplyingChanges = true;
+                return this.MoveNextInternal();
+            }
+            finally
+            {
+                this.context.ApplyingChanges = applying;
+            }
+        }
+
+        private bool MoveNextInternal()
+        {
+            if (this.reader == null)
+            {
+                Debug.Assert(this.current == null, "this.current == null -- otherwise this.reader should have some value.");
+                return false;
+            }
+
+            this.current = null;
+            this.materializer.Log.Clear();
+
+            bool result = false;
+            Type implementationType;
+            GetTypeForMaterializer(this.expectingSingleValue, this.elementType, out implementationType);
+            if (implementationType != null)
+            {
+                if (this.moved)
+                {
+                    return false;
+                }
+
+                Type expectedType = implementationType.GetGenericArguments()[0];                implementationType = this.elementType;
+                if (implementationType.IsInterface)
+                {
+                    implementationType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(expectedType);
+                }
+
+                IList list = (IList)Activator.CreateInstance(implementationType);
+
+                while (this.materializer.Read())
+                {
+                    this.moved = true;
+                    list.Add(this.materializer.CurrentValue);
+                }
+
+                this.current = list;
+                result = true;
+            }
+
+            if (null == this.current)
+            {
+                if (this.expectingSingleValue && this.moved)
+                {
+                    result = false;
+                }
+                else
+                {
+                    result = this.materializer.Read();
+                    if (result)
+                    {
+                        this.current = this.materializer.CurrentValue;
+                    }
+
+                    this.moved = true;
+                }
+            }
+
+            this.materializer.Log.ApplyToContext();
+
+            return result;
+        }
+
+        void System.Collections.IEnumerator.Reset()
+        {
+            throw Error.NotSupported();
+        }
+
+        internal static MaterializeAtom CreateWrapper(IEnumerable results)
+        {
+            return new ResultsWrapper(results, null);
+        }
+
+        internal static MaterializeAtom CreateWrapper(IEnumerable results, DataServiceQueryContinuation continuation)
+        {
+            return new ResultsWrapper(results, continuation);
+        }
+
+        internal void SetInsertingObject(object addedObject)
+        {
+            this.materializer.TargetInstance = addedObject;
+        }
+
+        internal static void SkipToEnd(XmlReader reader)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(reader.NodeType == XmlNodeType.Element, "reader.NodeType == XmlNodeType.Element");
+
+            if (reader.IsEmptyElement)
+            {
+                return;
+            }
+
+            int readerDepth = reader.Depth;
+            while (reader.Read())
+            {
+                if (reader.NodeType == XmlNodeType.EndElement && reader.Depth == readerDepth)
+                {
+                    return;
+                }
+            }
+        }
+
+        internal long CountValue()
+        {
+            if (this.countValue == CountStateInitial)
+            {
+                this.ReadCountValue();
+            }
+            else if (this.countValue == CountStateFailure)
+            {
+                throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
+            }
+
+            return this.countValue;
+        }
+
+        internal virtual DataServiceQueryContinuation GetContinuation(IEnumerable key)
+        {
+            Debug.Assert(this.materializer != null, "Materializer is null!");
+
+            DataServiceQueryContinuation result;
+            if (key == null)
+            {
+                if ((this.expectingSingleValue && !this.moved) || (!this.expectingSingleValue && !this.materializer.IsEndOfStream))
+                {
+                    throw new InvalidOperationException(Strings.MaterializeFromAtom_TopLevelLinkNotAvailable);
+                }
+
+                if (this.expectingSingleValue || this.materializer.CurrentFeed == null)
+                {
+                    result = null;
+                }
+                else
+                {
+                    result = DataServiceQueryContinuation.Create(
+                        this.materializer.CurrentFeed.NextLink, 
+                        this.materializer.MaterializeEntryPlan);
+                }
+            }
+            else
+            {
+                if (!this.materializer.NextLinkTable.TryGetValue(key, out result))
+                {
+                    throw new ArgumentException(Strings.MaterializeFromAtom_CollectionKeyNotPresentInLinkTable);
+                }
+            }
+
+            return result;
+        }
+            
+        private void CheckGetEnumerator()
+        {
+            if (this.calledGetEnumerator)
+            {
+                throw Error.NotSupported(Strings.Deserialize_GetEnumerator);
+            }
+
+            this.calledGetEnumerator = true;
+        }
+
+        private void ReadCountValue()
+        {
+            Debug.Assert(this.countValue == CountStateInitial, "Count value is not in the initial state");
+
+            if (this.materializer.CurrentFeed != null &&
+                this.materializer.CurrentFeed.Count.HasValue)
+            {
+                this.countValue = this.materializer.CurrentFeed.Count.Value;
+                return;
+            }
+
+            while (this.reader.NodeType != XmlNodeType.Element && this.reader.Read())
+            {
+            }
+
+            if (this.reader.EOF)
+            {
+                throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
+            }
+
+            Debug.Assert(
+                (Util.AreSame(XmlConstants.AtomNamespace, this.reader.NamespaceURI) &&
+                Util.AreSame(XmlConstants.AtomFeedElementName, this.reader.LocalName)) ||
+                (Util.AreSame(XmlConstants.DataWebNamespace, this.reader.NamespaceURI) &&
+                Util.AreSame(XmlConstants.LinkCollectionElementName, this.reader.LocalName)),
+                "<feed> or <links> tag expected");
+
+            XElement element = XElement.Load(this.reader);
+            this.reader.Close();
+
+            XElement countNode = element.Descendants(XNamespace.Get(XmlConstants.DataWebMetadataNamespace) + XmlConstants.RowCountElement).FirstOrDefault();
+
+            if (countNode == null)
+            {
+                throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
+            }
+            else
+            {
+                if (!long.TryParse(countNode.Value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out this.countValue))
+                {
+                    throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
+                }
+
+                if (this.countValue < 0)
+                {
+                    throw new FormatException(Strings.MaterializeFromAtom_CountFormatError);
+                }
+            }
+
+            this.reader = new System.Data.Services.Client.Xml.XmlAtomErrorReader(element.CreateReader());
+            this.parser.ReplaceReader(this.reader);
+        }
+
+        internal static ClientType GetEntryClientType(string typeName, DataServiceContext context, Type expectedType, bool checkAssignable)
+        {
+            Debug.Assert(context != null, "context != null");
+            Type resolvedType = context.ResolveTypeFromName(typeName, expectedType, checkAssignable);
+            ClientType result = ClientType.Create(resolvedType);
+            Debug.Assert(result != null, "result != null -- otherwise ClientType.Create returned null");
+            return result;
+        }
+
+        internal static string ReadElementString(XmlReader reader, bool checkNullAttribute)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(
+                reader.NodeType == XmlNodeType.Element,
+                "reader.NodeType == XmlNodeType.Element -- otherwise caller is confused as to where the reader is");
+
+            string result = null;
+            bool empty = checkNullAttribute && !Util.DoesNullAttributeSayTrue(reader);
+
+            if (reader.IsEmptyElement)
+            {
+                return (empty ? String.Empty : null);
+            }
+
+            while (reader.Read())
+            {
+                switch (reader.NodeType)
+                {
+                    case XmlNodeType.EndElement:
+                        return result ?? (empty ? String.Empty : null);
+                    case XmlNodeType.CDATA:
+                    case XmlNodeType.Text:
+                    case XmlNodeType.SignificantWhitespace:
+                        if (null != result)
+                        {
+                            throw Error.InvalidOperation(Strings.Deserialize_MixedTextWithComment);
+                        }
+
+                        result = reader.Value;
+                        break;
+                    case XmlNodeType.Comment:
+                    case XmlNodeType.Whitespace:
+                        break;
+
+                    #region XmlNodeType error
+                    case XmlNodeType.Element:
+                        goto default;
+
+                    default:
+                        throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
+                    #endregion
+                }
+            }
+
+            throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
+        }
+
+        private class ResultsWrapper : MaterializeAtom
+        {
+            #region Private fields.
+
+            private readonly IEnumerable results;
+
+            private readonly DataServiceQueryContinuation continuation;
+
+            #endregion Private fields.
+
+            internal ResultsWrapper(IEnumerable results, DataServiceQueryContinuation continuation)
+            {
+                this.results = results ?? new object[0];
+                this.continuation = continuation;
+            }
+
+            internal override DataServiceQueryContinuation GetContinuation(IEnumerable key)
+            {
+                if (key == null)
+                {
+                    return this.continuation;
+                }
+                else
+                {
+                    throw new InvalidOperationException(Strings.MaterializeFromAtom_GetNestLinkForFlatCollection);
+                }
+            }
+
+            public override IEnumerator GetEnumerator()
+            {
+                return this.results.GetEnumerator();
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MediaEntryAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MediaEntryAttribute.cs
@@ -1,33 +1,33 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-
-    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-    public sealed class MediaEntryAttribute : Attribute
-    {
-        private readonly string mediaMemberName;
-
-        public MediaEntryAttribute(string mediaMemberName)
-        {
-            Util.CheckArgumentNull(mediaMemberName, "mediaMemberName");
-            this.mediaMemberName = mediaMemberName;
-        }
-
-        public string MediaMemberName
-        {
-            get { return this.mediaMemberName; }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+    public sealed class MediaEntryAttribute : Attribute
+    {
+        private readonly string mediaMemberName;
+
+        public MediaEntryAttribute(string mediaMemberName)
+        {
+            Util.CheckArgumentNull(mediaMemberName, "mediaMemberName");
+            this.mediaMemberName = mediaMemberName;
+        }
+
+        public string MediaMemberName
+        {
+            get { return this.mediaMemberName; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MemberAssignmentAnalysis.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MemberAssignmentAnalysis.cs
@@ -1,278 +1,278 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    internal class MemberAssignmentAnalysis : ExpressionVisitor
-    {
-        #region Fields.
-
-        internal static readonly Expression[] EmptyExpressionArray = new Expression[0];
-
-        private readonly Expression entity;
-
-        private Exception incompatibleAssignmentsException;
-
-        private bool multiplePathsFound;
-
-        private List<Expression> pathFromEntity;
-
-        #endregion Fields.
-
-        #region Constructor.
-
-        private MemberAssignmentAnalysis(Expression entity)
-        {
-            Debug.Assert(entity != null, "entity != null");
-
-            this.entity = entity;
-            this.pathFromEntity = new List<Expression>();
-        }
-
-        #endregion Constructor.
-
-        #region Properties.
-
-        internal Exception IncompatibleAssignmentsException
-        {
-            get { return this.incompatibleAssignmentsException; }
-        }
-
-        internal bool MultiplePathsFound
-        {
-            get { return this.multiplePathsFound; }
-        }
-
-        #endregion Properites.
-
-        #region Methods.
-
-        internal static MemberAssignmentAnalysis Analyze(Expression entityInScope, Expression assignmentExpression)
-        {
-            Debug.Assert(entityInScope != null, "entityInScope != null");
-            Debug.Assert(assignmentExpression != null, "assignmentExpression != null");
-
-            MemberAssignmentAnalysis result = new MemberAssignmentAnalysis(entityInScope);
-            result.Visit(assignmentExpression);
-            return result;
-        }
-
-        internal Exception CheckCompatibleAssignments(Type targetType, ref MemberAssignmentAnalysis previous)
-        {
-            if (previous == null)
-            {
-                previous = this;
-                return null;
-            }
-
-            Expression[] previousExpressions = previous.GetExpressionsToTargetEntity();
-            Expression[] candidateExpressions = this.GetExpressionsToTargetEntity();
-            return CheckCompatibleAssignments(targetType, previousExpressions, candidateExpressions);
-        }
-
-        internal override Expression Visit(Expression expression)
-        {
-            if (this.multiplePathsFound || this.incompatibleAssignmentsException != null)
-            {
-                return expression;
-            }
-
-            return base.Visit(expression);
-        }
-
-        internal override Expression VisitConditional(ConditionalExpression c)
-        {
-            Expression result;
-
-            var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.entity, c);
-            if (nullCheck.Match)
-            {
-                this.Visit(nullCheck.AssignExpression);
-                result = c;
-            }
-            else
-            {
-                result = base.VisitConditional(c);
-            }
-
-            return result;
-        }
-
-        internal override Expression VisitParameter(ParameterExpression p)
-        {
-            if (p == this.entity)
-            {
-                if (this.pathFromEntity.Count != 0)
-                {
-                    this.multiplePathsFound = true;
-                }
-                else
-                {
-                    this.pathFromEntity.Add(p);
-                }
-            }
-
-            return p;
-        }
-
-        internal override Expression VisitMemberInit(MemberInitExpression init)
-        {
-            Expression result = init;
-            MemberAssignmentAnalysis previousNested = null;
-            foreach (var binding in init.Bindings)
-            {
-                MemberAssignment assignment = binding as MemberAssignment;
-                if (assignment == null)
-                {
-                    continue;
-                }
-
-                MemberAssignmentAnalysis nested = MemberAssignmentAnalysis.Analyze(this.entity, assignment.Expression);
-                if (nested.MultiplePathsFound)
-                {
-                    this.multiplePathsFound = true;
-                    break;
-                }
-
-                Exception incompatibleException = nested.CheckCompatibleAssignments(init.Type, ref previousNested);
-                if (incompatibleException != null)
-                {
-                    this.incompatibleAssignmentsException = incompatibleException;
-                    break;
-                }
-
-                if (this.pathFromEntity.Count == 0)
-                {
-                    this.pathFromEntity.AddRange(nested.GetExpressionsToTargetEntity());
-                }
-            }
-
-            return result;
-        }
-
-        internal override Expression VisitMemberAccess(MemberExpression m)
-        {
-            Expression result = base.VisitMemberAccess(m);
-            if (this.pathFromEntity.Contains(m.Expression))
-            {
-                this.pathFromEntity.Add(m);
-            }
-
-            return result;
-        }
-
-        internal override Expression VisitMethodCall(MethodCallExpression call)
-        {
-            if (ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Select))
-            {
-                this.Visit(call.Arguments[0]);
-                return call;
-            }
-
-            return base.VisitMethodCall(call);
-        }
-
-        internal Expression[] GetExpressionsBeyondTargetEntity()
-        {
-            Debug.Assert(!this.multiplePathsFound, "this.multiplePathsFound -- otherwise GetExpressionsToTargetEntity won't return reliable (consistent) results");
-
-            if (this.pathFromEntity.Count <= 1)
-            {
-                return EmptyExpressionArray;
-            }
-
-            Expression[] result = new Expression[1];
-            result[0] = this.pathFromEntity[this.pathFromEntity.Count - 1];
-            return result;
-        }
-
-        internal Expression[] GetExpressionsToTargetEntity()
-        {
-            Debug.Assert(!this.multiplePathsFound, "this.multiplePathsFound -- otherwise GetExpressionsToTargetEntity won't return reliable (consistent) results");
-
-            if (this.pathFromEntity.Count <= 1)
-            {
-                return EmptyExpressionArray;
-            }
-
-            Expression[] result = new Expression[this.pathFromEntity.Count - 1];
-            for (int i = 0; i < result.Length; i++)
-            {
-                result[i] = this.pathFromEntity[i];
-            }
-
-            return result;
-        }
-
-        private static Exception CheckCompatibleAssignments(Type targetType, Expression[] previous, Expression[] candidate)
-        {
-            Debug.Assert(targetType != null, "targetType != null");
-            Debug.Assert(previous != null, "previous != null");
-            Debug.Assert(candidate != null, "candidate != null");
-
-            if (previous.Length != candidate.Length)
-            {
-                throw CheckCompatibleAssignmentsFail(targetType, previous, candidate);
-            }
-
-            for (int i = 0; i < previous.Length; i++)
-            {
-                Expression p = previous[i];
-                Expression c = candidate[i];
-                if (p.NodeType != c.NodeType)
-                {
-                    throw CheckCompatibleAssignmentsFail(targetType, previous, candidate);
-                }
-
-                if (p == c)
-                {
-                    continue;
-                }
-
-                if (p.NodeType != ExpressionType.MemberAccess)
-                {
-                    return CheckCompatibleAssignmentsFail(targetType, previous, candidate);
-                }
-
-                if (((MemberExpression)p).Member.Name != ((MemberExpression)c).Member.Name)
-                {
-                    return CheckCompatibleAssignmentsFail(targetType, previous, candidate);
-                }
-            }
-
-            return null;
-        }
-
-        private static Exception CheckCompatibleAssignmentsFail(Type targetType, Expression[] previous, Expression[] candidate)
-        {
-            Debug.Assert(targetType != null, "targetType != null");
-            Debug.Assert(previous != null, "previous != null");
-            Debug.Assert(candidate != null, "candidate != null");
-
-            string message = Strings.ALinq_ProjectionMemberAssignmentMismatch(targetType.FullName, previous.LastOrDefault(), candidate.LastOrDefault());
-            return new NotSupportedException(message);
-        }
-
-        #endregion Methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    internal class MemberAssignmentAnalysis : ExpressionVisitor
+    {
+        #region Fields.
+
+        internal static readonly Expression[] EmptyExpressionArray = new Expression[0];
+
+        private readonly Expression entity;
+
+        private Exception incompatibleAssignmentsException;
+
+        private bool multiplePathsFound;
+
+        private List<Expression> pathFromEntity;
+
+        #endregion Fields.
+
+        #region Constructor.
+
+        private MemberAssignmentAnalysis(Expression entity)
+        {
+            Debug.Assert(entity != null, "entity != null");
+
+            this.entity = entity;
+            this.pathFromEntity = new List<Expression>();
+        }
+
+        #endregion Constructor.
+
+        #region Properties.
+
+        internal Exception IncompatibleAssignmentsException
+        {
+            get { return this.incompatibleAssignmentsException; }
+        }
+
+        internal bool MultiplePathsFound
+        {
+            get { return this.multiplePathsFound; }
+        }
+
+        #endregion Properites.
+
+        #region Methods.
+
+        internal static MemberAssignmentAnalysis Analyze(Expression entityInScope, Expression assignmentExpression)
+        {
+            Debug.Assert(entityInScope != null, "entityInScope != null");
+            Debug.Assert(assignmentExpression != null, "assignmentExpression != null");
+
+            MemberAssignmentAnalysis result = new MemberAssignmentAnalysis(entityInScope);
+            result.Visit(assignmentExpression);
+            return result;
+        }
+
+        internal Exception CheckCompatibleAssignments(Type targetType, ref MemberAssignmentAnalysis previous)
+        {
+            if (previous == null)
+            {
+                previous = this;
+                return null;
+            }
+
+            Expression[] previousExpressions = previous.GetExpressionsToTargetEntity();
+            Expression[] candidateExpressions = this.GetExpressionsToTargetEntity();
+            return CheckCompatibleAssignments(targetType, previousExpressions, candidateExpressions);
+        }
+
+        internal override Expression Visit(Expression expression)
+        {
+            if (this.multiplePathsFound || this.incompatibleAssignmentsException != null)
+            {
+                return expression;
+            }
+
+            return base.Visit(expression);
+        }
+
+        internal override Expression VisitConditional(ConditionalExpression c)
+        {
+            Expression result;
+
+            var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.entity, c);
+            if (nullCheck.Match)
+            {
+                this.Visit(nullCheck.AssignExpression);
+                result = c;
+            }
+            else
+            {
+                result = base.VisitConditional(c);
+            }
+
+            return result;
+        }
+
+        internal override Expression VisitParameter(ParameterExpression p)
+        {
+            if (p == this.entity)
+            {
+                if (this.pathFromEntity.Count != 0)
+                {
+                    this.multiplePathsFound = true;
+                }
+                else
+                {
+                    this.pathFromEntity.Add(p);
+                }
+            }
+
+            return p;
+        }
+
+        internal override Expression VisitMemberInit(MemberInitExpression init)
+        {
+            Expression result = init;
+            MemberAssignmentAnalysis previousNested = null;
+            foreach (var binding in init.Bindings)
+            {
+                MemberAssignment assignment = binding as MemberAssignment;
+                if (assignment == null)
+                {
+                    continue;
+                }
+
+                MemberAssignmentAnalysis nested = MemberAssignmentAnalysis.Analyze(this.entity, assignment.Expression);
+                if (nested.MultiplePathsFound)
+                {
+                    this.multiplePathsFound = true;
+                    break;
+                }
+
+                Exception incompatibleException = nested.CheckCompatibleAssignments(init.Type, ref previousNested);
+                if (incompatibleException != null)
+                {
+                    this.incompatibleAssignmentsException = incompatibleException;
+                    break;
+                }
+
+                if (this.pathFromEntity.Count == 0)
+                {
+                    this.pathFromEntity.AddRange(nested.GetExpressionsToTargetEntity());
+                }
+            }
+
+            return result;
+        }
+
+        internal override Expression VisitMemberAccess(MemberExpression m)
+        {
+            Expression result = base.VisitMemberAccess(m);
+            if (this.pathFromEntity.Contains(m.Expression))
+            {
+                this.pathFromEntity.Add(m);
+            }
+
+            return result;
+        }
+
+        internal override Expression VisitMethodCall(MethodCallExpression call)
+        {
+            if (ReflectionUtil.IsSequenceMethod(call.Method, SequenceMethod.Select))
+            {
+                this.Visit(call.Arguments[0]);
+                return call;
+            }
+
+            return base.VisitMethodCall(call);
+        }
+
+        internal Expression[] GetExpressionsBeyondTargetEntity()
+        {
+            Debug.Assert(!this.multiplePathsFound, "this.multiplePathsFound -- otherwise GetExpressionsToTargetEntity won't return reliable (consistent) results");
+
+            if (this.pathFromEntity.Count <= 1)
+            {
+                return EmptyExpressionArray;
+            }
+
+            Expression[] result = new Expression[1];
+            result[0] = this.pathFromEntity[this.pathFromEntity.Count - 1];
+            return result;
+        }
+
+        internal Expression[] GetExpressionsToTargetEntity()
+        {
+            Debug.Assert(!this.multiplePathsFound, "this.multiplePathsFound -- otherwise GetExpressionsToTargetEntity won't return reliable (consistent) results");
+
+            if (this.pathFromEntity.Count <= 1)
+            {
+                return EmptyExpressionArray;
+            }
+
+            Expression[] result = new Expression[this.pathFromEntity.Count - 1];
+            for (int i = 0; i < result.Length; i++)
+            {
+                result[i] = this.pathFromEntity[i];
+            }
+
+            return result;
+        }
+
+        private static Exception CheckCompatibleAssignments(Type targetType, Expression[] previous, Expression[] candidate)
+        {
+            Debug.Assert(targetType != null, "targetType != null");
+            Debug.Assert(previous != null, "previous != null");
+            Debug.Assert(candidate != null, "candidate != null");
+
+            if (previous.Length != candidate.Length)
+            {
+                throw CheckCompatibleAssignmentsFail(targetType, previous, candidate);
+            }
+
+            for (int i = 0; i < previous.Length; i++)
+            {
+                Expression p = previous[i];
+                Expression c = candidate[i];
+                if (p.NodeType != c.NodeType)
+                {
+                    throw CheckCompatibleAssignmentsFail(targetType, previous, candidate);
+                }
+
+                if (p == c)
+                {
+                    continue;
+                }
+
+                if (p.NodeType != ExpressionType.MemberAccess)
+                {
+                    return CheckCompatibleAssignmentsFail(targetType, previous, candidate);
+                }
+
+                if (((MemberExpression)p).Member.Name != ((MemberExpression)c).Member.Name)
+                {
+                    return CheckCompatibleAssignmentsFail(targetType, previous, candidate);
+                }
+            }
+
+            return null;
+        }
+
+        private static Exception CheckCompatibleAssignmentsFail(Type targetType, Expression[] previous, Expression[] candidate)
+        {
+            Debug.Assert(targetType != null, "targetType != null");
+            Debug.Assert(previous != null, "previous != null");
+            Debug.Assert(candidate != null, "candidate != null");
+
+            string message = Strings.ALinq_ProjectionMemberAssignmentMismatch(targetType.FullName, previous.LastOrDefault(), candidate.LastOrDefault());
+            return new NotSupportedException(message);
+        }
+
+        #endregion Methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MergeOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MergeOption.cs
@@ -1,25 +1,25 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    public enum MergeOption
-    {
-        AppendOnly = 0,
-
-        OverwriteChanges = 1,
-
-        PreserveChanges = 2,
-
-        NoTracking = 3,
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    public enum MergeOption
+    {
+        AppendOnly = 0,
+
+        OverwriteChanges = 1,
+
+        PreserveChanges = 2,
+
+        NoTracking = 3,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MimeTypePropertyAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/MimeTypePropertyAttribute.cs
@@ -1,40 +1,40 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-
-    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-    public sealed class MimeTypePropertyAttribute : Attribute
-    {
-        private readonly string dataPropertyName;
-
-        private readonly string mimeTypePropertyName;
-
-        public MimeTypePropertyAttribute(string dataPropertyName, string mimeTypePropertyName)
-        {
-            this.dataPropertyName = dataPropertyName;
-            this.mimeTypePropertyName = mimeTypePropertyName;
-        }
-
-        public string DataPropertyName
-        {
-            get { return this.dataPropertyName; }
-        }
-
-        public string MimeTypePropertyName
-        {
-            get { return this.mimeTypePropertyName; }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+    public sealed class MimeTypePropertyAttribute : Attribute
+    {
+        private readonly string dataPropertyName;
+
+        private readonly string mimeTypePropertyName;
+
+        public MimeTypePropertyAttribute(string dataPropertyName, string mimeTypePropertyName)
+        {
+            this.dataPropertyName = dataPropertyName;
+            this.mimeTypePropertyName = mimeTypePropertyName;
+        }
+
+        public string DataPropertyName
+        {
+            get { return this.dataPropertyName; }
+        }
+
+        public string MimeTypePropertyName
+        {
+            get { return this.mimeTypePropertyName; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/OpenObject.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/OpenObject.cs
@@ -1,56 +1,56 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-#if ASTORIA_OPEN_OBJECT
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-
-    [OpenObject("OpenProperties")]
-    public class OpenObject
-    {
-        private readonly Dictionary<string, object> propertySet = new Dictionary<string, object>();
-
-        public OpenObject()
-        {
-        }
-
-        public Dictionary<string, object> OpenProperties
-        {
-            get { return this.propertySet; }
-        }
-
-        public object this[string property]
-        {
-            get
-            {
-                object value;
-                this.propertySet.TryGetValue(property, out value);
-                return value;
-            }
-
-            set
-            {
-                this.propertySet[property] = value;
-            }
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "required for this feature")]
-        public T Field<T>(string property)
-        {
-            return (T)ClientConvert.VerifyCast(typeof(T), this[property]);
-        }
-    }
-}
-#endif
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+#if ASTORIA_OPEN_OBJECT
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+
+    [OpenObject("OpenProperties")]
+    public class OpenObject
+    {
+        private readonly Dictionary<string, object> propertySet = new Dictionary<string, object>();
+
+        public OpenObject()
+        {
+        }
+
+        public Dictionary<string, object> OpenProperties
+        {
+            get { return this.propertySet; }
+        }
+
+        public object this[string property]
+        {
+            get
+            {
+                object value;
+                this.propertySet.TryGetValue(property, out value);
+                return value;
+            }
+
+            set
+            {
+                this.propertySet[property] = value;
+            }
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Justification = "required for this feature")]
+        public T Field<T>(string property)
+        {
+            return (T)ClientConvert.VerifyCast(typeof(T), this[property]);
+        }
+    }
+}
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/OpenObjectAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/OpenObjectAttribute.cs
@@ -1,35 +1,35 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-#if ASTORIA_OPEN_OBJECT
-namespace System.Data.Services.Client
-{
-    using System;
-
-    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-    public sealed class OpenObjectAttribute : System.Attribute
-    {
-        private readonly string openObjectPropertyName;
-
-        public OpenObjectAttribute(string openObjectPropertyName)
-        {
-            Util.CheckArgumentNotEmpty(openObjectPropertyName, "openObjectPropertyName");
-            this.openObjectPropertyName = openObjectPropertyName;
-        }
-
-        public string OpenObjectPropertyName
-        {
-            get { return this.openObjectPropertyName; }
-        }
-    }
-}
-#endif
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+#if ASTORIA_OPEN_OBJECT
+namespace System.Data.Services.Client
+{
+    using System;
+
+    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+    public sealed class OpenObjectAttribute : System.Attribute
+    {
+        private readonly string openObjectPropertyName;
+
+        public OpenObjectAttribute(string openObjectPropertyName)
+        {
+            Util.CheckArgumentNotEmpty(openObjectPropertyName, "openObjectPropertyName");
+            this.openObjectPropertyName = openObjectPropertyName;
+        }
+
+        public string OpenObjectPropertyName
+        {
+            get { return this.openObjectPropertyName; }
+        }
+    }
+}
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/OperationResponse.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/OperationResponse.cs
@@ -1,60 +1,60 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
-    public abstract class OperationResponse
-    {
-        private Dictionary<string, string> headers;
-
-        private int statusCode;
-
-        private Exception innerException;
-
-        internal OperationResponse(Dictionary<string, string> headers)
-        {
-            Debug.Assert(null != headers, "null headers");
-            this.headers = headers;
-        }
-
-        public IDictionary<string, string> Headers
-        {
-            get { return this.headers; }
-        }
-
-        public int StatusCode
-        {
-            get { return this.statusCode; }
-            internal set { this.statusCode = value; }
-        }
-
-        public Exception Error
-        {
-            get
-            {
-                return this.innerException;
-            }
-
-            set
-            {
-                Debug.Assert(null != value, "should not set null");
-                this.innerException = value;
-            }
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
+    public abstract class OperationResponse
+    {
+        private Dictionary<string, string> headers;
+
+        private int statusCode;
+
+        private Exception innerException;
+
+        internal OperationResponse(Dictionary<string, string> headers)
+        {
+            Debug.Assert(null != headers, "null headers");
+            this.headers = headers;
+        }
+
+        public IDictionary<string, string> Headers
+        {
+            get { return this.headers; }
+        }
+
+        public int StatusCode
+        {
+            get { return this.statusCode; }
+            internal set { this.statusCode = value; }
+        }
+
+        public Exception Error
+        {
+            get
+            {
+                return this.innerException;
+            }
+
+            set
+            {
+                Debug.Assert(null != value, "should not set null");
+                this.innerException = value;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPath.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPath.cs
@@ -1,98 +1,98 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-    using System.Text;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("{ToString()}")]
-    internal class ProjectionPath : List<ProjectionPathSegment>
-    {
-        #region Constructors.
-
-        internal ProjectionPath() : base()
-        {
-        }
-
-        internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry)
-            : base()
-        {
-            this.Root = root;
-            this.RootEntry = rootEntry;
-            this.ExpectedRootType = expectedRootType;
-        }
-
-        internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry, IEnumerable<Expression> members)
-            : this(root, expectedRootType, rootEntry)
-        {
-            Debug.Assert(members != null, "members != null");
-
-            foreach (Expression member in members)
-            {
-                this.Add(new ProjectionPathSegment(this, ((MemberExpression)member).Member.Name, member.Type));
-            }
-        }
-
-        #endregion Constructors.
-
-        #region Internal properties.
-
-        internal ParameterExpression Root 
-        { 
-            get; 
-            private set; 
-        }
-
-        internal Expression RootEntry 
-        { 
-            get; 
-            private set; 
-        }
-
-        internal Expression ExpectedRootType 
-        { 
-            get; 
-            private set; 
-        }
-
-        #endregion Internal properties.
-
-        #region Methods.
-
-        public override string ToString()
-        {
-            StringBuilder builder = new StringBuilder();
-            builder.Append(this.Root.ToString());
-            builder.Append("->");
-            for (int i = 0; i < this.Count; i++)
-            {
-                if (i > 0)
-                {
-                    builder.Append('.');
-                }
-
-                builder.Append(this[i].Member == null ? "*" : this[i].Member);
-            }
-
-            return builder.ToString();
-        }
-
-        #endregion Methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+    using System.Text;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("{ToString()}")]
+    internal class ProjectionPath : List<ProjectionPathSegment>
+    {
+        #region Constructors.
+
+        internal ProjectionPath() : base()
+        {
+        }
+
+        internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry)
+            : base()
+        {
+            this.Root = root;
+            this.RootEntry = rootEntry;
+            this.ExpectedRootType = expectedRootType;
+        }
+
+        internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry, IEnumerable<Expression> members)
+            : this(root, expectedRootType, rootEntry)
+        {
+            Debug.Assert(members != null, "members != null");
+
+            foreach (Expression member in members)
+            {
+                this.Add(new ProjectionPathSegment(this, ((MemberExpression)member).Member.Name, member.Type));
+            }
+        }
+
+        #endregion Constructors.
+
+        #region Internal properties.
+
+        internal ParameterExpression Root 
+        { 
+            get; 
+            private set; 
+        }
+
+        internal Expression RootEntry 
+        { 
+            get; 
+            private set; 
+        }
+
+        internal Expression ExpectedRootType 
+        { 
+            get; 
+            private set; 
+        }
+
+        #endregion Internal properties.
+
+        #region Methods.
+
+        public override string ToString()
+        {
+            StringBuilder builder = new StringBuilder();
+            builder.Append(this.Root.ToString());
+            builder.Append("->");
+            for (int i = 0; i < this.Count; i++)
+            {
+                if (i > 0)
+                {
+                    builder.Append('.');
+                }
+
+                builder.Append(this[i].Member == null ? "*" : this[i].Member);
+            }
+
+            return builder.ToString();
+        }
+
+        #endregion Methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPathBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPathBuilder.cs
@@ -1,268 +1,268 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal class ProjectionPathBuilder
-    {
-        #region Private fields.
-
-        private readonly Stack<bool> entityInScope;
-
-        private readonly List<MemberInitRewrite> rewrites;
-
-        private readonly Stack<ParameterExpression> parameterExpressions;
-
-        private readonly Stack<Expression> parameterExpressionTypes;
-
-        private readonly Stack<Expression> parameterEntries;
-
-        private readonly Stack<Type> parameterProjectionTypes;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        internal ProjectionPathBuilder()
-        {
-            this.entityInScope = new Stack<bool>();
-            this.rewrites = new List<MemberInitRewrite>();
-            this.parameterExpressions = new Stack<ParameterExpression>();
-            this.parameterExpressionTypes = new Stack<Expression>();
-            this.parameterEntries = new Stack<Expression>();
-            this.parameterProjectionTypes = new Stack<Type>();
-        }
-
-        #endregion Constructors.
-
-        #region Internal properties.
-
-        internal bool CurrentIsEntity
-        {
-            get { return this.entityInScope.Peek(); }
-        }
-
-        internal Expression ExpectedParamTypeInScope
-        {
-            get
-            {
-                Debug.Assert(this.parameterExpressionTypes.Count > 0, "this.parameterExpressionTypes.Count > 0");
-                return this.parameterExpressionTypes.Peek();
-            }
-        }
-
-        internal bool HasRewrites
-        {
-            get { return this.rewrites.Count > 0; }
-        }
-
-        internal Expression LambdaParameterInScope
-        {
-            get
-            {
-                return this.parameterExpressions.Peek();
-            }
-        }
-
-        internal Expression ParameterEntryInScope
-        {
-            get
-            {
-                return this.parameterEntries.Peek();
-            }
-        }
-
-        #endregion Internal properties.
-
-        #region Methods.
-
-        public override string ToString()
-        {
-            string result = "ProjectionPathBuilder: ";
-            if (this.parameterExpressions.Count == 0)
-            {
-                result += "(empty)";
-            }
-            else
-            {
-                result +=
-                    "entity:" + this.CurrentIsEntity +
-                    " param:" + this.ParameterEntryInScope;
-            }
-
-            return result;
-        }
-
-        internal void EnterLambdaScope(LambdaExpression lambda, Expression entry, Expression expectedType)
-        {
-            Debug.Assert(lambda != null, "lambda != null");
-            Debug.Assert(lambda.Parameters.Count == 1, "lambda.Parameters.Count == 1");
-
-            ParameterExpression param = lambda.Parameters[0];
-            Type projectionType = lambda.Body.Type;
-            bool isEntityType = ClientType.CheckElementTypeIsEntity(projectionType);
-
-            this.entityInScope.Push(isEntityType);
-            this.parameterExpressions.Push(param);
-            this.parameterExpressionTypes.Push(expectedType);
-            this.parameterEntries.Push(entry);
-            this.parameterProjectionTypes.Push(projectionType);
-        }
-
-        internal void EnterMemberInit(MemberInitExpression init)
-        {
-            bool isEntityType = ClientType.CheckElementTypeIsEntity(init.Type);
-            this.entityInScope.Push(isEntityType);
-        }
-
-        internal Expression GetRewrite(Expression expression)
-        {
-            Debug.Assert(expression != null, "expression != null");
-
-            List<string> names = new List<string>();
-            while (expression.NodeType == ExpressionType.MemberAccess)
-            {
-                MemberExpression member = (MemberExpression)expression;
-                names.Add(member.Member.Name);
-                expression = member.Expression;
-            }
-
-            Expression result = null;
-            foreach (var rewrite in this.rewrites)
-            {
-                if (rewrite.Root != expression)
-                {
-                    continue;
-                }
-
-                if (names.Count != rewrite.MemberNames.Length)
-                {
-                    continue;
-                }
-
-                bool match = true;
-                for (int i = 0; i < names.Count && i < rewrite.MemberNames.Length; i++)
-                {
-                    if (names[names.Count - i - 1] != rewrite.MemberNames[i])
-                    {
-                        match = false;
-                        break;
-                    }
-                }
-
-                if (match)
-                {
-                    result = rewrite.RewriteExpression;
-                    break;
-                }
-            }
-
-            return result;
-        }
-
-        internal void LeaveLambdaScope()
-        {
-            this.entityInScope.Pop(); 
-            this.parameterExpressions.Pop();
-            this.parameterExpressionTypes.Pop();
-            this.parameterEntries.Pop();
-            this.parameterProjectionTypes.Pop();
-        }
-
-        internal void LeaveMemberInit()
-        {
-            this.entityInScope.Pop();
-        }
-
-        internal void RegisterRewrite(Expression root, string[] names, Expression rewriteExpression)
-        {
-            Debug.Assert(root != null, "root != null");
-            Debug.Assert(names != null, "names != null");
-            Debug.Assert(rewriteExpression != null, "rewriteExpression != null");
-
-            this.rewrites.Add(new MemberInitRewrite() { Root = root, MemberNames = names, RewriteExpression = rewriteExpression });
-            this.parameterEntries.Push(rewriteExpression);
-        }
-
-        internal void RevokeRewrite(Expression root, string[] names)
-        {
-            Debug.Assert(root != null, "root != null");
-
-            for (int i = 0; i < this.rewrites.Count; i++)
-            {
-                if (this.rewrites[i].Root != root)
-                {
-                    continue;
-                }
-
-                if (names.Length != this.rewrites[i].MemberNames.Length)
-                {
-                    continue;
-                }
-
-                bool match = true;
-                for (int j = 0; j < names.Length; j++)
-                {
-                    if (names[j] != this.rewrites[i].MemberNames[j])
-                    {
-                        match = false;
-                        break;
-                    }
-                }
-
-                if (match)
-                {
-                    this.rewrites.RemoveAt(i);
-                    this.parameterEntries.Pop();
-                    return;
-                }
-            }
-        }
-
-        #endregion Methods.
-
-        #region Inner types.
-
-        internal class MemberInitRewrite
-        {
-            internal string[] MemberNames 
-            { 
-                get; 
-                set; 
-            }
-
-            internal Expression Root 
-            { 
-                get; 
-                set; 
-            }
-         
-            internal Expression RewriteExpression
-            { 
-                get; 
-                set; 
-            }
-        }
-
-        #endregion Inner types.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal class ProjectionPathBuilder
+    {
+        #region Private fields.
+
+        private readonly Stack<bool> entityInScope;
+
+        private readonly List<MemberInitRewrite> rewrites;
+
+        private readonly Stack<ParameterExpression> parameterExpressions;
+
+        private readonly Stack<Expression> parameterExpressionTypes;
+
+        private readonly Stack<Expression> parameterEntries;
+
+        private readonly Stack<Type> parameterProjectionTypes;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        internal ProjectionPathBuilder()
+        {
+            this.entityInScope = new Stack<bool>();
+            this.rewrites = new List<MemberInitRewrite>();
+            this.parameterExpressions = new Stack<ParameterExpression>();
+            this.parameterExpressionTypes = new Stack<Expression>();
+            this.parameterEntries = new Stack<Expression>();
+            this.parameterProjectionTypes = new Stack<Type>();
+        }
+
+        #endregion Constructors.
+
+        #region Internal properties.
+
+        internal bool CurrentIsEntity
+        {
+            get { return this.entityInScope.Peek(); }
+        }
+
+        internal Expression ExpectedParamTypeInScope
+        {
+            get
+            {
+                Debug.Assert(this.parameterExpressionTypes.Count > 0, "this.parameterExpressionTypes.Count > 0");
+                return this.parameterExpressionTypes.Peek();
+            }
+        }
+
+        internal bool HasRewrites
+        {
+            get { return this.rewrites.Count > 0; }
+        }
+
+        internal Expression LambdaParameterInScope
+        {
+            get
+            {
+                return this.parameterExpressions.Peek();
+            }
+        }
+
+        internal Expression ParameterEntryInScope
+        {
+            get
+            {
+                return this.parameterEntries.Peek();
+            }
+        }
+
+        #endregion Internal properties.
+
+        #region Methods.
+
+        public override string ToString()
+        {
+            string result = "ProjectionPathBuilder: ";
+            if (this.parameterExpressions.Count == 0)
+            {
+                result += "(empty)";
+            }
+            else
+            {
+                result +=
+                    "entity:" + this.CurrentIsEntity +
+                    " param:" + this.ParameterEntryInScope;
+            }
+
+            return result;
+        }
+
+        internal void EnterLambdaScope(LambdaExpression lambda, Expression entry, Expression expectedType)
+        {
+            Debug.Assert(lambda != null, "lambda != null");
+            Debug.Assert(lambda.Parameters.Count == 1, "lambda.Parameters.Count == 1");
+
+            ParameterExpression param = lambda.Parameters[0];
+            Type projectionType = lambda.Body.Type;
+            bool isEntityType = ClientType.CheckElementTypeIsEntity(projectionType);
+
+            this.entityInScope.Push(isEntityType);
+            this.parameterExpressions.Push(param);
+            this.parameterExpressionTypes.Push(expectedType);
+            this.parameterEntries.Push(entry);
+            this.parameterProjectionTypes.Push(projectionType);
+        }
+
+        internal void EnterMemberInit(MemberInitExpression init)
+        {
+            bool isEntityType = ClientType.CheckElementTypeIsEntity(init.Type);
+            this.entityInScope.Push(isEntityType);
+        }
+
+        internal Expression GetRewrite(Expression expression)
+        {
+            Debug.Assert(expression != null, "expression != null");
+
+            List<string> names = new List<string>();
+            while (expression.NodeType == ExpressionType.MemberAccess)
+            {
+                MemberExpression member = (MemberExpression)expression;
+                names.Add(member.Member.Name);
+                expression = member.Expression;
+            }
+
+            Expression result = null;
+            foreach (var rewrite in this.rewrites)
+            {
+                if (rewrite.Root != expression)
+                {
+                    continue;
+                }
+
+                if (names.Count != rewrite.MemberNames.Length)
+                {
+                    continue;
+                }
+
+                bool match = true;
+                for (int i = 0; i < names.Count && i < rewrite.MemberNames.Length; i++)
+                {
+                    if (names[names.Count - i - 1] != rewrite.MemberNames[i])
+                    {
+                        match = false;
+                        break;
+                    }
+                }
+
+                if (match)
+                {
+                    result = rewrite.RewriteExpression;
+                    break;
+                }
+            }
+
+            return result;
+        }
+
+        internal void LeaveLambdaScope()
+        {
+            this.entityInScope.Pop(); 
+            this.parameterExpressions.Pop();
+            this.parameterExpressionTypes.Pop();
+            this.parameterEntries.Pop();
+            this.parameterProjectionTypes.Pop();
+        }
+
+        internal void LeaveMemberInit()
+        {
+            this.entityInScope.Pop();
+        }
+
+        internal void RegisterRewrite(Expression root, string[] names, Expression rewriteExpression)
+        {
+            Debug.Assert(root != null, "root != null");
+            Debug.Assert(names != null, "names != null");
+            Debug.Assert(rewriteExpression != null, "rewriteExpression != null");
+
+            this.rewrites.Add(new MemberInitRewrite() { Root = root, MemberNames = names, RewriteExpression = rewriteExpression });
+            this.parameterEntries.Push(rewriteExpression);
+        }
+
+        internal void RevokeRewrite(Expression root, string[] names)
+        {
+            Debug.Assert(root != null, "root != null");
+
+            for (int i = 0; i < this.rewrites.Count; i++)
+            {
+                if (this.rewrites[i].Root != root)
+                {
+                    continue;
+                }
+
+                if (names.Length != this.rewrites[i].MemberNames.Length)
+                {
+                    continue;
+                }
+
+                bool match = true;
+                for (int j = 0; j < names.Length; j++)
+                {
+                    if (names[j] != this.rewrites[i].MemberNames[j])
+                    {
+                        match = false;
+                        break;
+                    }
+                }
+
+                if (match)
+                {
+                    this.rewrites.RemoveAt(i);
+                    this.parameterEntries.Pop();
+                    return;
+                }
+            }
+        }
+
+        #endregion Methods.
+
+        #region Inner types.
+
+        internal class MemberInitRewrite
+        {
+            internal string[] MemberNames 
+            { 
+                get; 
+                set; 
+            }
+
+            internal Expression Root 
+            { 
+                get; 
+                set; 
+            }
+         
+            internal Expression RewriteExpression
+            { 
+                get; 
+                set; 
+            }
+        }
+
+        #endregion Inner types.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPathSegment.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPathSegment.cs
@@ -1,61 +1,61 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("Segment {ProjectionType} {Member}")]
-    internal class ProjectionPathSegment
-    {
-        #region Constructors.
-
-        internal ProjectionPathSegment(ProjectionPath startPath, string member, Type projectionType)
-        {
-            Debug.Assert(startPath != null, "startPath != null");
-            
-            this.Member = member;
-            this.StartPath = startPath;
-            this.ProjectionType = projectionType;
-        }
-
-        #endregion Constructors.
-
-        #region Internal properties.
-
-        internal string Member 
-        { 
-            get; 
-            private set; 
-        }
-
-        internal Type ProjectionType 
-        { 
-            get; 
-            set; 
-        }
-
-        internal ProjectionPath StartPath 
-        { 
-            get; 
-            private set; 
-        }
-
-        #endregion Internal properties.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("Segment {ProjectionType} {Member}")]
+    internal class ProjectionPathSegment
+    {
+        #region Constructors.
+
+        internal ProjectionPathSegment(ProjectionPath startPath, string member, Type projectionType)
+        {
+            Debug.Assert(startPath != null, "startPath != null");
+            
+            this.Member = member;
+            this.StartPath = startPath;
+            this.ProjectionType = projectionType;
+        }
+
+        #endregion Constructors.
+
+        #region Internal properties.
+
+        internal string Member 
+        { 
+            get; 
+            private set; 
+        }
+
+        internal Type ProjectionType 
+        { 
+            get; 
+            set; 
+        }
+
+        internal ProjectionPath StartPath 
+        { 
+            get; 
+            private set; 
+        }
+
+        #endregion Internal properties.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPlan.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPlan.cs
@@ -1,71 +1,71 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Diagnostics;
-
-    #endregion Namespaces.
-
-    internal class ProjectionPlan
-    {
-#if DEBUG
-        internal System.Linq.Expressions.Expression SourceProjection
-        {
-            get;
-            set;
-        }
-
-        internal System.Linq.Expressions.Expression TargetProjection
-        {
-            get;
-            set;
-        }
-#endif
-
-        internal Type LastSegmentType
-        {
-            get;
-            set;
-        }
-
-        internal Func<object, object, Type, object> Plan 
-        { 
-            get;
-            set;
-        }
-
-        internal Type ProjectedType
-        {
-            get;
-            set;
-        }
-
-#if DEBUG
-        public override string ToString()
-        {
-            return "Plan - projection: " + this.SourceProjection + "\r\nBecomes: " + this.TargetProjection;
-        }
-#endif
-
-        internal object Run(AtomMaterializer materializer, AtomEntry entry, Type expectedType)
-        {
-            Debug.Assert(materializer != null, "materializer != null");
-            Debug.Assert(entry != null, "entry != null");
-
-            return this.Plan(materializer, entry, expectedType);
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Diagnostics;
+
+    #endregion Namespaces.
+
+    internal class ProjectionPlan
+    {
+#if DEBUG
+        internal System.Linq.Expressions.Expression SourceProjection
+        {
+            get;
+            set;
+        }
+
+        internal System.Linq.Expressions.Expression TargetProjection
+        {
+            get;
+            set;
+        }
+#endif
+
+        internal Type LastSegmentType
+        {
+            get;
+            set;
+        }
+
+        internal Func<object, object, Type, object> Plan 
+        { 
+            get;
+            set;
+        }
+
+        internal Type ProjectedType
+        {
+            get;
+            set;
+        }
+
+#if DEBUG
+        public override string ToString()
+        {
+            return "Plan - projection: " + this.SourceProjection + "\r\nBecomes: " + this.TargetProjection;
+        }
+#endif
+
+        internal object Run(AtomMaterializer materializer, AtomEntry entry, Type expectedType)
+        {
+            Debug.Assert(materializer != null, "materializer != null");
+            Debug.Assert(entry != null, "entry != null");
+
+            return this.Plan(materializer, entry, expectedType);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPlanCompiler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ProjectionPlanCompiler.cs
@@ -1,863 +1,863 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Linq.Expressions;
-    using System.Reflection;
-
-    #endregion Namespaces.
-
-    internal class ProjectionPlanCompiler : ExpressionVisitor
-    {
-        #region Private fields.
-
-        private readonly Dictionary<Expression, ExpressionAnnotation> annotations;
-
-        private readonly ParameterExpression materializerExpression;
-
-        private readonly Dictionary<Expression, Expression> normalizerRewrites;
-
-        private int identifierId;
-
-        private ProjectionPathBuilder pathBuilder;
-
-        private bool topLevelProjectionFound;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        private ProjectionPlanCompiler(Dictionary<Expression, Expression> normalizerRewrites)
-        {
-            this.annotations = new Dictionary<Expression, ExpressionAnnotation>(ReferenceEqualityComparer<Expression>.Instance);
-            this.materializerExpression = Expression.Parameter(typeof(object), "mat");
-            this.normalizerRewrites = normalizerRewrites;
-            this.pathBuilder = new ProjectionPathBuilder();
-        }
-
-        #endregion Constructors.
-
-        #region Internal methods.
-
-        internal static ProjectionPlan CompilePlan(LambdaExpression projection, Dictionary<Expression, Expression> normalizerRewrites)
-        {
-            Debug.Assert(projection != null, "projection != null");
-            Debug.Assert(projection.Parameters.Count == 1, "projection.Parameters.Count == 1");
-            Debug.Assert(
-                projection.Body.NodeType == ExpressionType.Constant ||
-                projection.Body.NodeType == ExpressionType.MemberInit ||
-                projection.Body.NodeType == ExpressionType.MemberAccess ||
-                projection.Body.NodeType == ExpressionType.Convert ||
-                projection.Body.NodeType == ExpressionType.ConvertChecked ||
-                projection.Body.NodeType == ExpressionType.New,
-                "projection.Body.NodeType == Constant, MemberInit, MemberAccess, Convert(Checked) New");
-
-            ProjectionPlanCompiler rewriter = new ProjectionPlanCompiler(normalizerRewrites);
-#if TRACE_CLIENT_PROJECTIONS
-            Trace.WriteLine("Projection: " + projection);
-#endif
-
-            Expression plan = rewriter.Visit(projection);
-#if TRACE_CLIENT_PROJECTIONS
-            Trace.WriteLine("Becomes: " + plan);
-#endif
-
-            ProjectionPlan result = new ProjectionPlan();
-            result.Plan = (Func<object, object, Type, object>)((LambdaExpression)plan).Compile();
-            result.ProjectedType = projection.Body.Type;
-#if DEBUG
-            result.SourceProjection = projection;
-            result.TargetProjection = plan;
-#endif
-            return result;
-        }
-
-        internal override Expression VisitBinary(BinaryExpression b)
-        {
-            Expression original = this.GetExpressionBeforeNormalization(b);
-            if (original == b)
-            {
-                return base.VisitBinary(b);
-            }
-            else
-            {
-                return this.Visit(original);
-            }
-        }
-
-        internal override Expression VisitConditional(ConditionalExpression conditional)
-        {
-            Debug.Assert(conditional != null, "conditional != null");
-            Expression original = this.GetExpressionBeforeNormalization(conditional);
-            if (original != conditional)
-            {
-                return this.Visit(original);
-            }
-
-            var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.pathBuilder.LambdaParameterInScope, conditional);
-            if (!nullCheck.Match || !ClientType.CheckElementTypeIsEntity(nullCheck.AssignExpression.Type))
-            {
-                return base.VisitConditional(conditional);
-            }
-
-            return this.RebindConditionalNullCheck(conditional, nullCheck);
-        }
-
-        internal override Expression VisitUnary(UnaryExpression u)
-        {
-            Expression original = this.GetExpressionBeforeNormalization(u);
-            Expression result;
-            if (original == u)
-            {
-                result = base.VisitUnary(u);
-                UnaryExpression unaryResult = result as UnaryExpression;
-                if (unaryResult != null)
-                {
-                    ExpressionAnnotation annotation;
-                    if (this.annotations.TryGetValue(unaryResult.Operand, out annotation))
-                    {
-                        this.annotations[result] = annotation;
-                    }
-                }
-            }
-            else
-            {
-                result = this.Visit(original);
-            }
-
-            return result;
-        }
-
-        internal override Expression VisitMemberAccess(MemberExpression m)
-        {
-            Debug.Assert(m != null, "m != null");
-
-            Expression result;
-            Expression baseSourceExpression = m.Expression;
-
-            if (ClientConvert.IsKnownNullableType(baseSourceExpression.Type))
-            {
-                result = base.VisitMemberAccess(m);
-            }
-            else
-            {
-                Expression baseTargetExpression = this.Visit(baseSourceExpression);
-                ExpressionAnnotation annotation;
-                if (this.annotations.TryGetValue(baseTargetExpression, out annotation))
-                {
-                    result = this.RebindMemberAccess(m, annotation);
-                }
-                else
-                {
-                    result = Expression.MakeMemberAccess(baseTargetExpression, m.Member);
-                }
-            }
-
-            return result;
-        }
-
-        internal override Expression VisitParameter(ParameterExpression p)
-        {
-            Debug.Assert(p != null, "p != null");
-
-            Expression result;
-            ExpressionAnnotation annotation;
-            if (this.annotations.TryGetValue(p, out annotation))
-            {
-                result = this.RebindParameter(p, annotation);
-            }
-            else
-            {
-                result = base.VisitParameter(p);
-            }
-
-            return result;
-        }
-
-        internal override Expression VisitMemberInit(MemberInitExpression init)
-        {
-            this.pathBuilder.EnterMemberInit(init);
-            
-            Expression result = null;
-            if (this.pathBuilder.CurrentIsEntity && init.Bindings.Count > 0)
-            {
-                result = this.RebindEntityMemberInit(init);
-            }
-            else
-            {
-                result = base.VisitMemberInit(init);
-            }
-
-            this.pathBuilder.LeaveMemberInit();
-            return result;
-        }
-
-        internal override Expression VisitMethodCall(MethodCallExpression m)
-        {
-            Debug.Assert(m != null, "m != null");
-
-            Expression original = this.GetExpressionBeforeNormalization(m);
-            if (original != m)
-            {
-                return this.Visit(original);
-            }
-
-            Expression result;
-            if (this.pathBuilder.CurrentIsEntity)
-            {
-                Debug.Assert(
-                    ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m) || ResourceBinder.PatternRules.MatchReferenceEquals(m),
-                    "ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m) || ResourceBinder.PatternRules.MatchReferenceEquals(m) -- otherwise ProjectionAnalyzer should have blocked this for entities");
-                if (m.Method.Name == "Select")
-                {
-                    result = this.RebindMethodCallForMemberSelect(m);
-                }
-                else if (m.Method.Name == "ToList")
-                {
-                    result = this.RebindMethodCallForMemberToList(m);
-                }
-                else
-                {
-                    Debug.Assert(m.Method.Name == "ReferenceEquals", "We don't know how to handle this method, ProjectionAnalyzer updated?");
-                    result = base.VisitMethodCall(m);
-                }
-            }
-            else
-            {
-                if (ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m))
-                {
-                    result = this.RebindMethodCallForNewSequence(m);
-                }
-                else
-                {
-                    result = base.VisitMethodCall(m);
-                }
-            }
-
-            return result;
-        }
-
-        internal override NewExpression VisitNew(NewExpression nex)
-        {
-            Debug.Assert(nex != null, "nex != null");
-
-            if (ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex))
-            {
-                return this.RebindNewExpressionForDataServiceCollectionOfT(nex);
-            }
-
-            return base.VisitNew(nex);
-        }
-
-        internal override Expression VisitLambda(LambdaExpression lambda)
-        {
-            Debug.Assert(lambda != null, "lambda != null");
-
-            Expression result;
-            if (!this.topLevelProjectionFound || lambda.Parameters.Count == 1 && ClientType.CheckElementTypeIsEntity(lambda.Parameters[0].Type))
-            {
-                this.topLevelProjectionFound = true;
-
-                ParameterExpression expectedTypeParameter = Expression.Parameter(typeof(Type), "type" + this.identifierId);
-                ParameterExpression entryParameter = Expression.Parameter(typeof(object), "entry" + this.identifierId);
-                this.identifierId++;
-
-                this.pathBuilder.EnterLambdaScope(lambda, entryParameter, expectedTypeParameter);
-                ProjectionPath parameterPath = new ProjectionPath(lambda.Parameters[0], expectedTypeParameter, entryParameter);
-                ProjectionPathSegment parameterSegment = new ProjectionPathSegment(parameterPath, null, null);
-                parameterPath.Add(parameterSegment);
-                this.annotations[lambda.Parameters[0]] = new ExpressionAnnotation() { Segment = parameterSegment };
-
-                Expression body = this.Visit(lambda.Body);
-
-                if (body.Type.IsValueType)
-                {
-                    body = Expression.Convert(body, typeof(object));
-                }
-
-                result = Expression.Lambda<Func<object, object, Type, object>>(
-                    body,
-                    this.materializerExpression,
-                    entryParameter,
-                    expectedTypeParameter);
-
-                this.pathBuilder.LeaveLambdaScope();
-            }
-            else
-            {
-                result = base.VisitLambda(lambda);
-            }
-
-            return result;
-        }
-
-        #endregion Internal methods.
-
-        #region Private methods.
-
-        private static Expression CallMaterializer(string methodName, params Expression[] arguments)
-        {
-            return CallMaterializerWithType(methodName, null, arguments);
-        }
-
-        private static Expression CallMaterializerWithType(string methodName, Type[] typeArguments, params Expression[] arguments)
-        {
-            Debug.Assert(methodName != null, "methodName != null");
-            Debug.Assert(arguments != null, "arguments != null");
-
-            MethodInfo method = typeof(AtomMaterializerInvoker).GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
-            Debug.Assert(method != null, "method != null - found " + methodName);
-            if (typeArguments != null)
-            {
-                method = method.MakeGenericMethod(typeArguments);
-            }
-
-            return Expression.Call(method, arguments);
-        }
-
-        private Expression CallCheckValueForPathIsNull(Expression entry, Expression entryType, ProjectionPath path)
-        {
-            Expression result = CallMaterializer("ProjectionCheckValueForPathIsNull", entry, entryType, Expression.Constant(path, typeof(object)));
-            this.annotations.Add(result, new ExpressionAnnotation() { Segment = path[path.Count - 1] });
-            return result;
-        }
-
-        private Expression CallValueForPath(Expression entry, Expression entryType, ProjectionPath path)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(path != null, "path != null");
-
-            Expression result = CallMaterializer("ProjectionValueForPath", this.materializerExpression, entry, entryType, Expression.Constant(path, typeof(object)));
-            this.annotations.Add(result, new ExpressionAnnotation() { Segment = path[path.Count - 1] });
-            return result;
-        }
-
-        private Expression CallValueForPathWithType(Expression entry, Expression entryType, ProjectionPath path, Type type)
-        {
-            Debug.Assert(entry != null, "entry != null");
-            Debug.Assert(path != null, "path != null");
-            
-            Expression value = this.CallValueForPath(entry, entryType, path);
-            Expression result = Expression.Convert(value, type);
-            this.annotations.Add(result, new ExpressionAnnotation() { Segment = path[path.Count - 1] });
-            return result;
-        }
-
-        private Expression RebindConditionalNullCheck(ConditionalExpression conditional, ResourceBinder.PatternRules.MatchNullCheckResult nullCheck)
-        {
-            Debug.Assert(conditional != null, "conditional != null");
-            Debug.Assert(nullCheck.Match, "nullCheck.Match -- otherwise no reason to call this rebind method");
-
-            Expression testToNullForProjection = this.Visit(nullCheck.TestToNullExpression);
-            Expression assignForProjection = this.Visit(nullCheck.AssignExpression);
-            ExpressionAnnotation testToNullAnnotation;
-            if (!this.annotations.TryGetValue(testToNullForProjection, out testToNullAnnotation))
-            {
-                return base.VisitConditional(conditional);
-            }
-
-            ProjectionPathSegment testToNullSegment = testToNullAnnotation.Segment;
-
-            Expression testToNullThroughMethod = this.CallCheckValueForPathIsNull(
-                testToNullSegment.StartPath.RootEntry,
-                testToNullSegment.StartPath.ExpectedRootType,
-                testToNullSegment.StartPath);
-
-            Expression test = testToNullThroughMethod;
-            Expression iftrue = Expression.Constant(null, assignForProjection.Type);
-            Expression iffalse = assignForProjection;
-            Expression result = Expression.Condition(test, iftrue, iffalse);
-            return result;
-        }
-
-        private Expression RebindEntityMemberInit(MemberInitExpression init)
-        {
-            Debug.Assert(init != null, "init != null");
-            Debug.Assert(init.Bindings.Count > 0, "init.Bindings.Count > 0 -- otherwise this is just empty construction");
-
-            Expression[] expressions;
-            if (!this.pathBuilder.HasRewrites)
-            {
-                MemberAssignmentAnalysis propertyAnalysis = MemberAssignmentAnalysis.Analyze(
-                    this.pathBuilder.LambdaParameterInScope,
-                    ((MemberAssignment)init.Bindings[0]).Expression);
-                expressions = propertyAnalysis.GetExpressionsToTargetEntity();
-                Debug.Assert(expressions.Length != 0, "expressions.Length != 0 -- otherwise there is no correlation to parameter in entity member init");
-            }
-            else
-            {
-                expressions = MemberAssignmentAnalysis.EmptyExpressionArray;
-            }
-
-            Expression entryParameterAtMemberInit = this.pathBuilder.ParameterEntryInScope;
-            List<string> propertyNames = new List<string>();
-            List<Func<object, object, Type, object>> propertyFunctions = new List<Func<object, object, Type, object>>();
-            Type projectedType = init.NewExpression.Type;
-            Expression projectedTypeExpression = Expression.Constant(projectedType, typeof(Type));
-
-            Expression entryToInitValue;            Expression expectedParamValue;            ParameterExpression entryParameterForMembers;            ParameterExpression expectedParameterForMembers;            string[] expressionNames = expressions.Skip(1).Select(e => ((MemberExpression)e).Member.Name).ToArray();
-            if (expressions.Length <= 1)
-            {
-                entryToInitValue = this.pathBuilder.ParameterEntryInScope;
-                expectedParamValue = this.pathBuilder.ExpectedParamTypeInScope;
-                entryParameterForMembers = (ParameterExpression)this.pathBuilder.ParameterEntryInScope;
-                expectedParameterForMembers = (ParameterExpression)this.pathBuilder.ExpectedParamTypeInScope;
-            }
-            else
-            {
-                entryToInitValue = this.GetDeepestEntry(expressions);
-                expectedParamValue = projectedTypeExpression;
-                entryParameterForMembers = Expression.Parameter(typeof(object), "subentry" + this.identifierId++);
-                expectedParameterForMembers = (ParameterExpression)this.pathBuilder.ExpectedParamTypeInScope;
-
-                ProjectionPath entryPath = new ProjectionPath(
-                    (ParameterExpression)this.pathBuilder.LambdaParameterInScope, 
-                    this.pathBuilder.ExpectedParamTypeInScope, 
-                    this.pathBuilder.ParameterEntryInScope,
-                    expressions.Skip(1));
-
-                this.annotations.Add(entryToInitValue, new ExpressionAnnotation() { Segment = entryPath[entryPath.Count - 1] });
-                this.annotations.Add(entryParameterForMembers, new ExpressionAnnotation() { Segment = entryPath[entryPath.Count - 1] });
-                this.pathBuilder.RegisterRewrite(this.pathBuilder.LambdaParameterInScope, expressionNames, entryParameterForMembers);
-            }
-
-            for (int i = 0; i < init.Bindings.Count; i++)
-            {
-                MemberAssignment assignment = (MemberAssignment)init.Bindings[i];
-                propertyNames.Add(assignment.Member.Name);
-
-                LambdaExpression propertyLambda;
-
-                if ((ClientType.CheckElementTypeIsEntity(assignment.Member.ReflectedType) &&
-                     assignment.Expression.NodeType == ExpressionType.MemberInit))
-                {
-                    Expression nestedEntry = CallMaterializer(
-                        "ProjectionGetEntry",
-                        entryParameterAtMemberInit,
-                        Expression.Constant(assignment.Member.Name, typeof(string)));
-                    ParameterExpression nestedEntryParameter = Expression.Parameter(
-                        typeof(object),
-                        "subentry" + this.identifierId++);
-
-                    ProjectionPath entryPath;
-                    ExpressionAnnotation entryAnnotation;
-                    if (this.annotations.TryGetValue(this.pathBuilder.ParameterEntryInScope, out entryAnnotation))
-                    {
-                        entryPath = new ProjectionPath(
-                            (ParameterExpression)this.pathBuilder.LambdaParameterInScope,
-                            this.pathBuilder.ExpectedParamTypeInScope,
-                            entryParameterAtMemberInit);
-                        entryPath.AddRange(entryAnnotation.Segment.StartPath);
-                    }
-                    else
-                    {
-                        entryPath = new ProjectionPath(
-                            (ParameterExpression)this.pathBuilder.LambdaParameterInScope,
-                            this.pathBuilder.ExpectedParamTypeInScope,
-                            entryParameterAtMemberInit,
-                            expressions.Skip(1));
-                    }
-
-                    ProjectionPathSegment nestedSegment = new ProjectionPathSegment(
-                        entryPath,
-                        assignment.Member.Name,
-                        assignment.Member.ReflectedType);
-
-                    entryPath.Add(nestedSegment);
-
-                    string[] names = (entryPath.Where(m => m.Member != null).Select(m => m.Member)).ToArray();
-
-                    this.annotations.Add(nestedEntryParameter, new ExpressionAnnotation() { Segment = nestedSegment });
-                    this.pathBuilder.RegisterRewrite(this.pathBuilder.LambdaParameterInScope, names, nestedEntryParameter);
-                    Expression e = this.Visit(assignment.Expression);
-                    this.pathBuilder.RevokeRewrite(this.pathBuilder.LambdaParameterInScope, names);
-                    this.annotations.Remove(nestedEntryParameter);
-
-                    e = Expression.Convert(e, typeof(object));
-                    ParameterExpression[] parameters =
-                        new ParameterExpression[] 
-                        {
-                            this.materializerExpression,
-                            nestedEntryParameter,
-                            expectedParameterForMembers,
-                        };
-                    propertyLambda = Expression.Lambda(e, parameters);
-
-                    Expression[] nestedParams =
-                        new Expression[]
-                        {
-                            this.materializerExpression, 
-                            nestedEntry,
-                            expectedParameterForMembers,
-                        };
-                    var invokeParameters =
-                        new ParameterExpression[] 
-                        {
-                            this.materializerExpression,
-                            (ParameterExpression)entryParameterAtMemberInit,
-                            expectedParameterForMembers,
-                        };
-                    propertyLambda = Expression.Lambda(Expression.Invoke(propertyLambda, nestedParams), invokeParameters);
-                }
-                else
-                {
-                    Expression e = this.Visit(assignment.Expression);
-                    e = Expression.Convert(e, typeof(object));
-                    ParameterExpression[] parameters =
-                        new ParameterExpression[] 
-                        {
-                            this.materializerExpression,
-                            entryParameterForMembers,
-                            expectedParameterForMembers,
-                        };
-                    propertyLambda = Expression.Lambda(e, parameters);
-                }
-
-#if TRACE_CLIENT_PROJECTIONS
-                Trace.WriteLine("Compiling lambda for " + assignment.Member.Name + ": " + propertyLambda);
-#endif
-                propertyFunctions.Add((Func<object, object, Type, object>) propertyLambda.Compile());
-            }
-
-            for (int i = 1; i < expressions.Length; i++)
-            {
-                this.pathBuilder.RevokeRewrite(this.pathBuilder.LambdaParameterInScope, expressionNames);
-                this.annotations.Remove(entryToInitValue);
-                this.annotations.Remove(entryParameterForMembers);
-            }
-
-            Expression reboundExpression = CallMaterializer(
-                "ProjectionInitializeEntity",
-                this.materializerExpression,
-                entryToInitValue,
-                expectedParamValue,
-                projectedTypeExpression,
-                Expression.Constant(propertyNames.ToArray()),
-                Expression.Constant(propertyFunctions.ToArray()));
-
-            return Expression.Convert(reboundExpression, projectedType);
-        }
-
-        private Expression GetDeepestEntry(Expression[] path)
-        {
-            Debug.Assert(path.Length > 1, "path.Length > 1");
-            
-            Expression result = null;
-            int pathIndex = 1;
-            do
-            {
-                result = CallMaterializer(
-                    "ProjectionGetEntry",
-                    result ?? this.pathBuilder.ParameterEntryInScope,
-                    Expression.Constant(((MemberExpression)path[pathIndex]).Member.Name, typeof(string)));
-                pathIndex++;
-            }
-            while (pathIndex < path.Length);
-
-            return result;
-        }
-
-        private Expression GetExpressionBeforeNormalization(Expression expression)
-        {
-            Debug.Assert(expression != null, "expression != null");
-            if (this.normalizerRewrites != null)
-            {
-                Expression original;
-                if (this.normalizerRewrites.TryGetValue(expression, out original))
-                {
-                    expression = original;
-                }
-            }
-
-            return expression;
-        }
-
-        private Expression RebindParameter(Expression expression, ExpressionAnnotation annotation)
-        {
-            Debug.Assert(expression != null, "expression != null");
-            Debug.Assert(annotation != null, "annotation != null");
-
-            Expression result;
-            result = this.CallValueForPathWithType(
-                annotation.Segment.StartPath.RootEntry,
-                annotation.Segment.StartPath.ExpectedRootType,
-                annotation.Segment.StartPath,
-                expression.Type);
-
-            ProjectionPath parameterPath = new ProjectionPath(
-                annotation.Segment.StartPath.Root,
-                annotation.Segment.StartPath.ExpectedRootType,
-                annotation.Segment.StartPath.RootEntry);
-            ProjectionPathSegment parameterSegment = new ProjectionPathSegment(parameterPath, null, null);
-            parameterPath.Add(parameterSegment);
-            this.annotations[expression] = new ExpressionAnnotation() { Segment = parameterSegment };
-
-            return result;
-        }
-
-        private Expression RebindMemberAccess(MemberExpression m, ExpressionAnnotation baseAnnotation)
-        {
-            Debug.Assert(m != null, "m != null");
-            Debug.Assert(baseAnnotation != null, "baseAnnotation != null");
-
-            ProjectionPathSegment memberSegment;
-
-            Expression baseSourceExpression = m.Expression;
-            Expression result = this.pathBuilder.GetRewrite(baseSourceExpression);
-            if (result != null)
-            {
-                Expression baseTypeExpression = Expression.Constant(baseSourceExpression.Type, typeof(Type));
-                ProjectionPath nestedPath = new ProjectionPath(result as ParameterExpression, baseTypeExpression, result);
-                ProjectionPathSegment nestedSegment = new ProjectionPathSegment(nestedPath, m.Member.Name, m.Type);
-                nestedPath.Add(nestedSegment);
-                result = this.CallValueForPathWithType(result, baseTypeExpression, nestedPath, m.Type);
-            }
-            else
-            {
-                memberSegment = new ProjectionPathSegment(baseAnnotation.Segment.StartPath, m.Member.Name, m.Type);
-                baseAnnotation.Segment.StartPath.Add(memberSegment);
-                result = this.CallValueForPathWithType(
-                    baseAnnotation.Segment.StartPath.RootEntry,
-                    baseAnnotation.Segment.StartPath.ExpectedRootType,
-                    baseAnnotation.Segment.StartPath,
-                    m.Type);
-            }
-
-            return result;
-        }
-
-        private NewExpression RebindNewExpressionForDataServiceCollectionOfT(NewExpression nex)
-        {
-            Debug.Assert(nex != null, "nex != null");
-            Debug.Assert(
-                ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex),
-                "Called should have checked that the 'new' was for our collection type");
-
-            NewExpression result = base.VisitNew(nex);
-
-            ExpressionAnnotation annotation = null;
-
-            if (result != null)
-            {
-                ConstructorInfo constructorInfo = 
-                    nex.Type.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance).First(
-                        c => c.GetParameters().Length == 7 && c.GetParameters()[0].ParameterType == typeof(object));
-
-                Type enumerable = typeof(IEnumerable<>).MakeGenericType(nex.Type.GetGenericArguments()[0]);
-
-                if (result.Arguments.Count == 1 && result.Constructor == nex.Type.GetConstructor(new[] { enumerable }) &&
-                    this.annotations.TryGetValue(result.Arguments[0], out annotation))
-                {
-                    result = Expression.New(
-                        constructorInfo,
-                        this.materializerExpression,
-                        Expression.Constant(null, typeof(DataServiceContext)),
-                        result.Arguments[0],
-                        Expression.Constant(TrackingMode.AutoChangeTracking, typeof(TrackingMode)),
-                        Expression.Constant(null, typeof(string)),
-                        Expression.Constant(null, typeof(Func<EntityChangedParams, bool>)),
-                        Expression.Constant(null, typeof(Func<EntityCollectionChangedParams, bool>)));
-                }
-                else if (result.Arguments.Count == 2 &&
-                         this.annotations.TryGetValue(result.Arguments[0], out annotation))
-                {
-                    result = Expression.New(
-                        constructorInfo, 
-                        this.materializerExpression,
-                        Expression.Constant(null, typeof(DataServiceContext)),
-                        result.Arguments[0],                        result.Arguments[1],                        Expression.Constant(null, typeof(string)),
-                        Expression.Constant(null, typeof(Func<EntityChangedParams, bool>)),
-                        Expression.Constant(null, typeof(Func<EntityCollectionChangedParams, bool>)));
-                }
-                else if (result.Arguments.Count == 5 &&
-                         this.annotations.TryGetValue(result.Arguments[0], out annotation))
-                {
-                    result = Expression.New(
-                        constructorInfo, 
-                        this.materializerExpression,
-                        Expression.Constant(null, typeof(DataServiceContext)),
-                        result.Arguments[0],                        result.Arguments[1],                        result.Arguments[2],                        result.Arguments[3],                        result.Arguments[4]);                }
-                else if (result.Arguments.Count == 6 &&
-                         typeof(DataServiceContext).IsAssignableFrom(result.Arguments[0].Type) &&
-                         this.annotations.TryGetValue(result.Arguments[1], out annotation))
-                {
-                    result = Expression.New(
-                        constructorInfo,
-                        this.materializerExpression,
-                        result.Arguments[0],                        result.Arguments[1],                        result.Arguments[2],                        result.Arguments[3],                        result.Arguments[4],                        result.Arguments[5]);                }
-            }
-
-            if (annotation != null)
-            {
-                this.annotations.Add(result, annotation);
-            }
-
-            return result;
-        }
-
-        private Expression RebindMethodCallForMemberSelect(MethodCallExpression call)
-        {
-            Debug.Assert(call != null, "call != null");
-            Debug.Assert(call.Method.Name == "Select", "call.Method.Name == 'Select'");
-            Debug.Assert(call.Object == null, "call.Object == null -- otherwise this isn't a call to a static Select method");
-            Debug.Assert(call.Arguments.Count == 2, "call.Arguments.Count == 2 -- otherwise this isn't the expected Select() call on IQueryable");
-
-            Expression result = null;
-            Expression parameterSource = this.Visit(call.Arguments[0]);
-            ExpressionAnnotation annotation;
-            this.annotations.TryGetValue(parameterSource, out annotation);
-
-            if (annotation != null)
-            {
-                Expression selectorExpression = this.Visit(call.Arguments[1]);
-                Type returnElementType = call.Method.ReturnType.GetGenericArguments()[0];
-                result = CallMaterializer(
-                    "ProjectionSelect",
-                    this.materializerExpression,
-                    this.pathBuilder.ParameterEntryInScope,
-                    this.pathBuilder.ExpectedParamTypeInScope,
-                    Expression.Constant(returnElementType, typeof(Type)),
-                    Expression.Constant(annotation.Segment.StartPath, typeof(object)),
-                    selectorExpression);
-                this.annotations.Add(result, annotation);
-                result = CallMaterializerWithType(
-                    "EnumerateAsElementType",
-                    new Type[] { returnElementType },
-                    result);
-                this.annotations.Add(result, annotation);
-            }
-
-            if (result == null)
-            {
-                result = base.VisitMethodCall(call);
-            }
-
-            return result;
-        }
-
-        private Expression RebindMethodCallForMemberToList(MethodCallExpression call)
-        {
-            Debug.Assert(call != null, "call != null");
-            Debug.Assert(call.Object == null, "call.Object == null -- otherwise this isn't a call to a static ToList method");
-            Debug.Assert(call.Method.Name == "ToList", "call.Method.Name == 'ToList'");
-
-            Debug.Assert(call.Arguments.Count == 1, "call.Arguments.Count == 1 -- otherwise this isn't the expected ToList() call on IEnumerable");
-
-            Expression result = this.Visit(call.Arguments[0]);
-            ExpressionAnnotation annotation;
-            if (this.annotations.TryGetValue(result, out annotation))
-            {
-                result = this.TypedEnumerableToList(result, call.Type);
-                this.annotations.Add(result, annotation);
-            }
-
-            return result;
-        }
-
-        private Expression RebindMethodCallForNewSequence(MethodCallExpression call)
-        {
-            Debug.Assert(call != null, "call != null");
-            Debug.Assert(ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(call), "ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(call)");
-            Debug.Assert(call.Object == null, "call.Object == null -- otherwise this isn't the supported Select or ToList methods");
-
-            Expression result = null;
-
-            if (call.Method.Name == "Select")
-            {
-                Debug.Assert(call.Arguments.Count == 2, "call.Arguments.Count == 2 -- otherwise this isn't the argument we expected");
-
-                Expression parameterSource = this.Visit(call.Arguments[0]);
-                ExpressionAnnotation annotation;
-                this.annotations.TryGetValue(parameterSource, out annotation);
-
-                if (annotation != null)
-                {
-                    Expression selectorExpression = this.Visit(call.Arguments[1]);
-                    Type returnElementType = call.Method.ReturnType.GetGenericArguments()[0];
-                    result = CallMaterializer(
-                        "ProjectionSelect",
-                        this.materializerExpression,
-                        this.pathBuilder.ParameterEntryInScope,
-                        this.pathBuilder.ExpectedParamTypeInScope,
-                        Expression.Constant(returnElementType, typeof(Type)),
-                        Expression.Constant(annotation.Segment.StartPath, typeof(object)),
-                        selectorExpression);
-                    this.annotations.Add(result, annotation);
-                    result = CallMaterializerWithType(
-                        "EnumerateAsElementType",
-                        new Type[] { returnElementType },
-                        result);
-                    this.annotations.Add(result, annotation);
-                }
-            }
-            else
-            {
-                Debug.Assert(call.Method.Name == "ToList", "call.Method.Name == 'ToList'");
-
-                Expression source = this.Visit(call.Arguments[0]);
-                ExpressionAnnotation annotation;
-                if (this.annotations.TryGetValue(source, out annotation))
-                {
-                    result = this.TypedEnumerableToList(source, call.Type);
-                    this.annotations.Add(result, annotation);
-                }
-            }
-
-            if (result == null)
-            {
-                result = base.VisitMethodCall(call);
-            }
-
-            return result;
-        }
-
-        private Expression TypedEnumerableToList(Expression source, Type targetType)
-        {
-            Debug.Assert(source != null, "source != null");
-            Debug.Assert(targetType != null, "targetType != null");
-
-            Type enumeratedType = source.Type.GetGenericArguments()[0];
-            Type listElementType = targetType.GetGenericArguments()[0];
-
-            Expression result = CallMaterializerWithType(
-                "ListAsElementType",
-                new Type[] { enumeratedType, listElementType },
-                this.materializerExpression,
-                source);
-
-            return result;
-        }
-
-        #endregion Private methods.
-
-        #region Inner types.
-
-        internal class ExpressionAnnotation
-        {
-            internal ProjectionPathSegment Segment 
-            { 
-                get; 
-                set; 
-            }
-        }
-
-        #endregion Inner types.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Linq.Expressions;
+    using System.Reflection;
+
+    #endregion Namespaces.
+
+    internal class ProjectionPlanCompiler : ExpressionVisitor
+    {
+        #region Private fields.
+
+        private readonly Dictionary<Expression, ExpressionAnnotation> annotations;
+
+        private readonly ParameterExpression materializerExpression;
+
+        private readonly Dictionary<Expression, Expression> normalizerRewrites;
+
+        private int identifierId;
+
+        private ProjectionPathBuilder pathBuilder;
+
+        private bool topLevelProjectionFound;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        private ProjectionPlanCompiler(Dictionary<Expression, Expression> normalizerRewrites)
+        {
+            this.annotations = new Dictionary<Expression, ExpressionAnnotation>(ReferenceEqualityComparer<Expression>.Instance);
+            this.materializerExpression = Expression.Parameter(typeof(object), "mat");
+            this.normalizerRewrites = normalizerRewrites;
+            this.pathBuilder = new ProjectionPathBuilder();
+        }
+
+        #endregion Constructors.
+
+        #region Internal methods.
+
+        internal static ProjectionPlan CompilePlan(LambdaExpression projection, Dictionary<Expression, Expression> normalizerRewrites)
+        {
+            Debug.Assert(projection != null, "projection != null");
+            Debug.Assert(projection.Parameters.Count == 1, "projection.Parameters.Count == 1");
+            Debug.Assert(
+                projection.Body.NodeType == ExpressionType.Constant ||
+                projection.Body.NodeType == ExpressionType.MemberInit ||
+                projection.Body.NodeType == ExpressionType.MemberAccess ||
+                projection.Body.NodeType == ExpressionType.Convert ||
+                projection.Body.NodeType == ExpressionType.ConvertChecked ||
+                projection.Body.NodeType == ExpressionType.New,
+                "projection.Body.NodeType == Constant, MemberInit, MemberAccess, Convert(Checked) New");
+
+            ProjectionPlanCompiler rewriter = new ProjectionPlanCompiler(normalizerRewrites);
+#if TRACE_CLIENT_PROJECTIONS
+            Trace.WriteLine("Projection: " + projection);
+#endif
+
+            Expression plan = rewriter.Visit(projection);
+#if TRACE_CLIENT_PROJECTIONS
+            Trace.WriteLine("Becomes: " + plan);
+#endif
+
+            ProjectionPlan result = new ProjectionPlan();
+            result.Plan = (Func<object, object, Type, object>)((LambdaExpression)plan).Compile();
+            result.ProjectedType = projection.Body.Type;
+#if DEBUG
+            result.SourceProjection = projection;
+            result.TargetProjection = plan;
+#endif
+            return result;
+        }
+
+        internal override Expression VisitBinary(BinaryExpression b)
+        {
+            Expression original = this.GetExpressionBeforeNormalization(b);
+            if (original == b)
+            {
+                return base.VisitBinary(b);
+            }
+            else
+            {
+                return this.Visit(original);
+            }
+        }
+
+        internal override Expression VisitConditional(ConditionalExpression conditional)
+        {
+            Debug.Assert(conditional != null, "conditional != null");
+            Expression original = this.GetExpressionBeforeNormalization(conditional);
+            if (original != conditional)
+            {
+                return this.Visit(original);
+            }
+
+            var nullCheck = ResourceBinder.PatternRules.MatchNullCheck(this.pathBuilder.LambdaParameterInScope, conditional);
+            if (!nullCheck.Match || !ClientType.CheckElementTypeIsEntity(nullCheck.AssignExpression.Type))
+            {
+                return base.VisitConditional(conditional);
+            }
+
+            return this.RebindConditionalNullCheck(conditional, nullCheck);
+        }
+
+        internal override Expression VisitUnary(UnaryExpression u)
+        {
+            Expression original = this.GetExpressionBeforeNormalization(u);
+            Expression result;
+            if (original == u)
+            {
+                result = base.VisitUnary(u);
+                UnaryExpression unaryResult = result as UnaryExpression;
+                if (unaryResult != null)
+                {
+                    ExpressionAnnotation annotation;
+                    if (this.annotations.TryGetValue(unaryResult.Operand, out annotation))
+                    {
+                        this.annotations[result] = annotation;
+                    }
+                }
+            }
+            else
+            {
+                result = this.Visit(original);
+            }
+
+            return result;
+        }
+
+        internal override Expression VisitMemberAccess(MemberExpression m)
+        {
+            Debug.Assert(m != null, "m != null");
+
+            Expression result;
+            Expression baseSourceExpression = m.Expression;
+
+            if (ClientConvert.IsKnownNullableType(baseSourceExpression.Type))
+            {
+                result = base.VisitMemberAccess(m);
+            }
+            else
+            {
+                Expression baseTargetExpression = this.Visit(baseSourceExpression);
+                ExpressionAnnotation annotation;
+                if (this.annotations.TryGetValue(baseTargetExpression, out annotation))
+                {
+                    result = this.RebindMemberAccess(m, annotation);
+                }
+                else
+                {
+                    result = Expression.MakeMemberAccess(baseTargetExpression, m.Member);
+                }
+            }
+
+            return result;
+        }
+
+        internal override Expression VisitParameter(ParameterExpression p)
+        {
+            Debug.Assert(p != null, "p != null");
+
+            Expression result;
+            ExpressionAnnotation annotation;
+            if (this.annotations.TryGetValue(p, out annotation))
+            {
+                result = this.RebindParameter(p, annotation);
+            }
+            else
+            {
+                result = base.VisitParameter(p);
+            }
+
+            return result;
+        }
+
+        internal override Expression VisitMemberInit(MemberInitExpression init)
+        {
+            this.pathBuilder.EnterMemberInit(init);
+            
+            Expression result = null;
+            if (this.pathBuilder.CurrentIsEntity && init.Bindings.Count > 0)
+            {
+                result = this.RebindEntityMemberInit(init);
+            }
+            else
+            {
+                result = base.VisitMemberInit(init);
+            }
+
+            this.pathBuilder.LeaveMemberInit();
+            return result;
+        }
+
+        internal override Expression VisitMethodCall(MethodCallExpression m)
+        {
+            Debug.Assert(m != null, "m != null");
+
+            Expression original = this.GetExpressionBeforeNormalization(m);
+            if (original != m)
+            {
+                return this.Visit(original);
+            }
+
+            Expression result;
+            if (this.pathBuilder.CurrentIsEntity)
+            {
+                Debug.Assert(
+                    ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m) || ResourceBinder.PatternRules.MatchReferenceEquals(m),
+                    "ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m) || ResourceBinder.PatternRules.MatchReferenceEquals(m) -- otherwise ProjectionAnalyzer should have blocked this for entities");
+                if (m.Method.Name == "Select")
+                {
+                    result = this.RebindMethodCallForMemberSelect(m);
+                }
+                else if (m.Method.Name == "ToList")
+                {
+                    result = this.RebindMethodCallForMemberToList(m);
+                }
+                else
+                {
+                    Debug.Assert(m.Method.Name == "ReferenceEquals", "We don't know how to handle this method, ProjectionAnalyzer updated?");
+                    result = base.VisitMethodCall(m);
+                }
+            }
+            else
+            {
+                if (ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(m))
+                {
+                    result = this.RebindMethodCallForNewSequence(m);
+                }
+                else
+                {
+                    result = base.VisitMethodCall(m);
+                }
+            }
+
+            return result;
+        }
+
+        internal override NewExpression VisitNew(NewExpression nex)
+        {
+            Debug.Assert(nex != null, "nex != null");
+
+            if (ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex))
+            {
+                return this.RebindNewExpressionForDataServiceCollectionOfT(nex);
+            }
+
+            return base.VisitNew(nex);
+        }
+
+        internal override Expression VisitLambda(LambdaExpression lambda)
+        {
+            Debug.Assert(lambda != null, "lambda != null");
+
+            Expression result;
+            if (!this.topLevelProjectionFound || lambda.Parameters.Count == 1 && ClientType.CheckElementTypeIsEntity(lambda.Parameters[0].Type))
+            {
+                this.topLevelProjectionFound = true;
+
+                ParameterExpression expectedTypeParameter = Expression.Parameter(typeof(Type), "type" + this.identifierId);
+                ParameterExpression entryParameter = Expression.Parameter(typeof(object), "entry" + this.identifierId);
+                this.identifierId++;
+
+                this.pathBuilder.EnterLambdaScope(lambda, entryParameter, expectedTypeParameter);
+                ProjectionPath parameterPath = new ProjectionPath(lambda.Parameters[0], expectedTypeParameter, entryParameter);
+                ProjectionPathSegment parameterSegment = new ProjectionPathSegment(parameterPath, null, null);
+                parameterPath.Add(parameterSegment);
+                this.annotations[lambda.Parameters[0]] = new ExpressionAnnotation() { Segment = parameterSegment };
+
+                Expression body = this.Visit(lambda.Body);
+
+                if (body.Type.IsValueType)
+                {
+                    body = Expression.Convert(body, typeof(object));
+                }
+
+                result = Expression.Lambda<Func<object, object, Type, object>>(
+                    body,
+                    this.materializerExpression,
+                    entryParameter,
+                    expectedTypeParameter);
+
+                this.pathBuilder.LeaveLambdaScope();
+            }
+            else
+            {
+                result = base.VisitLambda(lambda);
+            }
+
+            return result;
+        }
+
+        #endregion Internal methods.
+
+        #region Private methods.
+
+        private static Expression CallMaterializer(string methodName, params Expression[] arguments)
+        {
+            return CallMaterializerWithType(methodName, null, arguments);
+        }
+
+        private static Expression CallMaterializerWithType(string methodName, Type[] typeArguments, params Expression[] arguments)
+        {
+            Debug.Assert(methodName != null, "methodName != null");
+            Debug.Assert(arguments != null, "arguments != null");
+
+            MethodInfo method = typeof(AtomMaterializerInvoker).GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
+            Debug.Assert(method != null, "method != null - found " + methodName);
+            if (typeArguments != null)
+            {
+                method = method.MakeGenericMethod(typeArguments);
+            }
+
+            return Expression.Call(method, arguments);
+        }
+
+        private Expression CallCheckValueForPathIsNull(Expression entry, Expression entryType, ProjectionPath path)
+        {
+            Expression result = CallMaterializer("ProjectionCheckValueForPathIsNull", entry, entryType, Expression.Constant(path, typeof(object)));
+            this.annotations.Add(result, new ExpressionAnnotation() { Segment = path[path.Count - 1] });
+            return result;
+        }
+
+        private Expression CallValueForPath(Expression entry, Expression entryType, ProjectionPath path)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(path != null, "path != null");
+
+            Expression result = CallMaterializer("ProjectionValueForPath", this.materializerExpression, entry, entryType, Expression.Constant(path, typeof(object)));
+            this.annotations.Add(result, new ExpressionAnnotation() { Segment = path[path.Count - 1] });
+            return result;
+        }
+
+        private Expression CallValueForPathWithType(Expression entry, Expression entryType, ProjectionPath path, Type type)
+        {
+            Debug.Assert(entry != null, "entry != null");
+            Debug.Assert(path != null, "path != null");
+            
+            Expression value = this.CallValueForPath(entry, entryType, path);
+            Expression result = Expression.Convert(value, type);
+            this.annotations.Add(result, new ExpressionAnnotation() { Segment = path[path.Count - 1] });
+            return result;
+        }
+
+        private Expression RebindConditionalNullCheck(ConditionalExpression conditional, ResourceBinder.PatternRules.MatchNullCheckResult nullCheck)
+        {
+            Debug.Assert(conditional != null, "conditional != null");
+            Debug.Assert(nullCheck.Match, "nullCheck.Match -- otherwise no reason to call this rebind method");
+
+            Expression testToNullForProjection = this.Visit(nullCheck.TestToNullExpression);
+            Expression assignForProjection = this.Visit(nullCheck.AssignExpression);
+            ExpressionAnnotation testToNullAnnotation;
+            if (!this.annotations.TryGetValue(testToNullForProjection, out testToNullAnnotation))
+            {
+                return base.VisitConditional(conditional);
+            }
+
+            ProjectionPathSegment testToNullSegment = testToNullAnnotation.Segment;
+
+            Expression testToNullThroughMethod = this.CallCheckValueForPathIsNull(
+                testToNullSegment.StartPath.RootEntry,
+                testToNullSegment.StartPath.ExpectedRootType,
+                testToNullSegment.StartPath);
+
+            Expression test = testToNullThroughMethod;
+            Expression iftrue = Expression.Constant(null, assignForProjection.Type);
+            Expression iffalse = assignForProjection;
+            Expression result = Expression.Condition(test, iftrue, iffalse);
+            return result;
+        }
+
+        private Expression RebindEntityMemberInit(MemberInitExpression init)
+        {
+            Debug.Assert(init != null, "init != null");
+            Debug.Assert(init.Bindings.Count > 0, "init.Bindings.Count > 0 -- otherwise this is just empty construction");
+
+            Expression[] expressions;
+            if (!this.pathBuilder.HasRewrites)
+            {
+                MemberAssignmentAnalysis propertyAnalysis = MemberAssignmentAnalysis.Analyze(
+                    this.pathBuilder.LambdaParameterInScope,
+                    ((MemberAssignment)init.Bindings[0]).Expression);
+                expressions = propertyAnalysis.GetExpressionsToTargetEntity();
+                Debug.Assert(expressions.Length != 0, "expressions.Length != 0 -- otherwise there is no correlation to parameter in entity member init");
+            }
+            else
+            {
+                expressions = MemberAssignmentAnalysis.EmptyExpressionArray;
+            }
+
+            Expression entryParameterAtMemberInit = this.pathBuilder.ParameterEntryInScope;
+            List<string> propertyNames = new List<string>();
+            List<Func<object, object, Type, object>> propertyFunctions = new List<Func<object, object, Type, object>>();
+            Type projectedType = init.NewExpression.Type;
+            Expression projectedTypeExpression = Expression.Constant(projectedType, typeof(Type));
+
+            Expression entryToInitValue;            Expression expectedParamValue;            ParameterExpression entryParameterForMembers;            ParameterExpression expectedParameterForMembers;            string[] expressionNames = expressions.Skip(1).Select(e => ((MemberExpression)e).Member.Name).ToArray();
+            if (expressions.Length <= 1)
+            {
+                entryToInitValue = this.pathBuilder.ParameterEntryInScope;
+                expectedParamValue = this.pathBuilder.ExpectedParamTypeInScope;
+                entryParameterForMembers = (ParameterExpression)this.pathBuilder.ParameterEntryInScope;
+                expectedParameterForMembers = (ParameterExpression)this.pathBuilder.ExpectedParamTypeInScope;
+            }
+            else
+            {
+                entryToInitValue = this.GetDeepestEntry(expressions);
+                expectedParamValue = projectedTypeExpression;
+                entryParameterForMembers = Expression.Parameter(typeof(object), "subentry" + this.identifierId++);
+                expectedParameterForMembers = (ParameterExpression)this.pathBuilder.ExpectedParamTypeInScope;
+
+                ProjectionPath entryPath = new ProjectionPath(
+                    (ParameterExpression)this.pathBuilder.LambdaParameterInScope, 
+                    this.pathBuilder.ExpectedParamTypeInScope, 
+                    this.pathBuilder.ParameterEntryInScope,
+                    expressions.Skip(1));
+
+                this.annotations.Add(entryToInitValue, new ExpressionAnnotation() { Segment = entryPath[entryPath.Count - 1] });
+                this.annotations.Add(entryParameterForMembers, new ExpressionAnnotation() { Segment = entryPath[entryPath.Count - 1] });
+                this.pathBuilder.RegisterRewrite(this.pathBuilder.LambdaParameterInScope, expressionNames, entryParameterForMembers);
+            }
+
+            for (int i = 0; i < init.Bindings.Count; i++)
+            {
+                MemberAssignment assignment = (MemberAssignment)init.Bindings[i];
+                propertyNames.Add(assignment.Member.Name);
+
+                LambdaExpression propertyLambda;
+
+                if ((ClientType.CheckElementTypeIsEntity(assignment.Member.ReflectedType) &&
+                     assignment.Expression.NodeType == ExpressionType.MemberInit))
+                {
+                    Expression nestedEntry = CallMaterializer(
+                        "ProjectionGetEntry",
+                        entryParameterAtMemberInit,
+                        Expression.Constant(assignment.Member.Name, typeof(string)));
+                    ParameterExpression nestedEntryParameter = Expression.Parameter(
+                        typeof(object),
+                        "subentry" + this.identifierId++);
+
+                    ProjectionPath entryPath;
+                    ExpressionAnnotation entryAnnotation;
+                    if (this.annotations.TryGetValue(this.pathBuilder.ParameterEntryInScope, out entryAnnotation))
+                    {
+                        entryPath = new ProjectionPath(
+                            (ParameterExpression)this.pathBuilder.LambdaParameterInScope,
+                            this.pathBuilder.ExpectedParamTypeInScope,
+                            entryParameterAtMemberInit);
+                        entryPath.AddRange(entryAnnotation.Segment.StartPath);
+                    }
+                    else
+                    {
+                        entryPath = new ProjectionPath(
+                            (ParameterExpression)this.pathBuilder.LambdaParameterInScope,
+                            this.pathBuilder.ExpectedParamTypeInScope,
+                            entryParameterAtMemberInit,
+                            expressions.Skip(1));
+                    }
+
+                    ProjectionPathSegment nestedSegment = new ProjectionPathSegment(
+                        entryPath,
+                        assignment.Member.Name,
+                        assignment.Member.ReflectedType);
+
+                    entryPath.Add(nestedSegment);
+
+                    string[] names = (entryPath.Where(m => m.Member != null).Select(m => m.Member)).ToArray();
+
+                    this.annotations.Add(nestedEntryParameter, new ExpressionAnnotation() { Segment = nestedSegment });
+                    this.pathBuilder.RegisterRewrite(this.pathBuilder.LambdaParameterInScope, names, nestedEntryParameter);
+                    Expression e = this.Visit(assignment.Expression);
+                    this.pathBuilder.RevokeRewrite(this.pathBuilder.LambdaParameterInScope, names);
+                    this.annotations.Remove(nestedEntryParameter);
+
+                    e = Expression.Convert(e, typeof(object));
+                    ParameterExpression[] parameters =
+                        new ParameterExpression[] 
+                        {
+                            this.materializerExpression,
+                            nestedEntryParameter,
+                            expectedParameterForMembers,
+                        };
+                    propertyLambda = Expression.Lambda(e, parameters);
+
+                    Expression[] nestedParams =
+                        new Expression[]
+                        {
+                            this.materializerExpression, 
+                            nestedEntry,
+                            expectedParameterForMembers,
+                        };
+                    var invokeParameters =
+                        new ParameterExpression[] 
+                        {
+                            this.materializerExpression,
+                            (ParameterExpression)entryParameterAtMemberInit,
+                            expectedParameterForMembers,
+                        };
+                    propertyLambda = Expression.Lambda(Expression.Invoke(propertyLambda, nestedParams), invokeParameters);
+                }
+                else
+                {
+                    Expression e = this.Visit(assignment.Expression);
+                    e = Expression.Convert(e, typeof(object));
+                    ParameterExpression[] parameters =
+                        new ParameterExpression[] 
+                        {
+                            this.materializerExpression,
+                            entryParameterForMembers,
+                            expectedParameterForMembers,
+                        };
+                    propertyLambda = Expression.Lambda(e, parameters);
+                }
+
+#if TRACE_CLIENT_PROJECTIONS
+                Trace.WriteLine("Compiling lambda for " + assignment.Member.Name + ": " + propertyLambda);
+#endif
+                propertyFunctions.Add((Func<object, object, Type, object>) propertyLambda.Compile());
+            }
+
+            for (int i = 1; i < expressions.Length; i++)
+            {
+                this.pathBuilder.RevokeRewrite(this.pathBuilder.LambdaParameterInScope, expressionNames);
+                this.annotations.Remove(entryToInitValue);
+                this.annotations.Remove(entryParameterForMembers);
+            }
+
+            Expression reboundExpression = CallMaterializer(
+                "ProjectionInitializeEntity",
+                this.materializerExpression,
+                entryToInitValue,
+                expectedParamValue,
+                projectedTypeExpression,
+                Expression.Constant(propertyNames.ToArray()),
+                Expression.Constant(propertyFunctions.ToArray()));
+
+            return Expression.Convert(reboundExpression, projectedType);
+        }
+
+        private Expression GetDeepestEntry(Expression[] path)
+        {
+            Debug.Assert(path.Length > 1, "path.Length > 1");
+            
+            Expression result = null;
+            int pathIndex = 1;
+            do
+            {
+                result = CallMaterializer(
+                    "ProjectionGetEntry",
+                    result ?? this.pathBuilder.ParameterEntryInScope,
+                    Expression.Constant(((MemberExpression)path[pathIndex]).Member.Name, typeof(string)));
+                pathIndex++;
+            }
+            while (pathIndex < path.Length);
+
+            return result;
+        }
+
+        private Expression GetExpressionBeforeNormalization(Expression expression)
+        {
+            Debug.Assert(expression != null, "expression != null");
+            if (this.normalizerRewrites != null)
+            {
+                Expression original;
+                if (this.normalizerRewrites.TryGetValue(expression, out original))
+                {
+                    expression = original;
+                }
+            }
+
+            return expression;
+        }
+
+        private Expression RebindParameter(Expression expression, ExpressionAnnotation annotation)
+        {
+            Debug.Assert(expression != null, "expression != null");
+            Debug.Assert(annotation != null, "annotation != null");
+
+            Expression result;
+            result = this.CallValueForPathWithType(
+                annotation.Segment.StartPath.RootEntry,
+                annotation.Segment.StartPath.ExpectedRootType,
+                annotation.Segment.StartPath,
+                expression.Type);
+
+            ProjectionPath parameterPath = new ProjectionPath(
+                annotation.Segment.StartPath.Root,
+                annotation.Segment.StartPath.ExpectedRootType,
+                annotation.Segment.StartPath.RootEntry);
+            ProjectionPathSegment parameterSegment = new ProjectionPathSegment(parameterPath, null, null);
+            parameterPath.Add(parameterSegment);
+            this.annotations[expression] = new ExpressionAnnotation() { Segment = parameterSegment };
+
+            return result;
+        }
+
+        private Expression RebindMemberAccess(MemberExpression m, ExpressionAnnotation baseAnnotation)
+        {
+            Debug.Assert(m != null, "m != null");
+            Debug.Assert(baseAnnotation != null, "baseAnnotation != null");
+
+            ProjectionPathSegment memberSegment;
+
+            Expression baseSourceExpression = m.Expression;
+            Expression result = this.pathBuilder.GetRewrite(baseSourceExpression);
+            if (result != null)
+            {
+                Expression baseTypeExpression = Expression.Constant(baseSourceExpression.Type, typeof(Type));
+                ProjectionPath nestedPath = new ProjectionPath(result as ParameterExpression, baseTypeExpression, result);
+                ProjectionPathSegment nestedSegment = new ProjectionPathSegment(nestedPath, m.Member.Name, m.Type);
+                nestedPath.Add(nestedSegment);
+                result = this.CallValueForPathWithType(result, baseTypeExpression, nestedPath, m.Type);
+            }
+            else
+            {
+                memberSegment = new ProjectionPathSegment(baseAnnotation.Segment.StartPath, m.Member.Name, m.Type);
+                baseAnnotation.Segment.StartPath.Add(memberSegment);
+                result = this.CallValueForPathWithType(
+                    baseAnnotation.Segment.StartPath.RootEntry,
+                    baseAnnotation.Segment.StartPath.ExpectedRootType,
+                    baseAnnotation.Segment.StartPath,
+                    m.Type);
+            }
+
+            return result;
+        }
+
+        private NewExpression RebindNewExpressionForDataServiceCollectionOfT(NewExpression nex)
+        {
+            Debug.Assert(nex != null, "nex != null");
+            Debug.Assert(
+                ResourceBinder.PatternRules.MatchNewDataServiceCollectionOfT(nex),
+                "Called should have checked that the 'new' was for our collection type");
+
+            NewExpression result = base.VisitNew(nex);
+
+            ExpressionAnnotation annotation = null;
+
+            if (result != null)
+            {
+                ConstructorInfo constructorInfo = 
+                    nex.Type.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance).First(
+                        c => c.GetParameters().Length == 7 && c.GetParameters()[0].ParameterType == typeof(object));
+
+                Type enumerable = typeof(IEnumerable<>).MakeGenericType(nex.Type.GetGenericArguments()[0]);
+
+                if (result.Arguments.Count == 1 && result.Constructor == nex.Type.GetConstructor(new[] { enumerable }) &&
+                    this.annotations.TryGetValue(result.Arguments[0], out annotation))
+                {
+                    result = Expression.New(
+                        constructorInfo,
+                        this.materializerExpression,
+                        Expression.Constant(null, typeof(DataServiceContext)),
+                        result.Arguments[0],
+                        Expression.Constant(TrackingMode.AutoChangeTracking, typeof(TrackingMode)),
+                        Expression.Constant(null, typeof(string)),
+                        Expression.Constant(null, typeof(Func<EntityChangedParams, bool>)),
+                        Expression.Constant(null, typeof(Func<EntityCollectionChangedParams, bool>)));
+                }
+                else if (result.Arguments.Count == 2 &&
+                         this.annotations.TryGetValue(result.Arguments[0], out annotation))
+                {
+                    result = Expression.New(
+                        constructorInfo, 
+                        this.materializerExpression,
+                        Expression.Constant(null, typeof(DataServiceContext)),
+                        result.Arguments[0],                        result.Arguments[1],                        Expression.Constant(null, typeof(string)),
+                        Expression.Constant(null, typeof(Func<EntityChangedParams, bool>)),
+                        Expression.Constant(null, typeof(Func<EntityCollectionChangedParams, bool>)));
+                }
+                else if (result.Arguments.Count == 5 &&
+                         this.annotations.TryGetValue(result.Arguments[0], out annotation))
+                {
+                    result = Expression.New(
+                        constructorInfo, 
+                        this.materializerExpression,
+                        Expression.Constant(null, typeof(DataServiceContext)),
+                        result.Arguments[0],                        result.Arguments[1],                        result.Arguments[2],                        result.Arguments[3],                        result.Arguments[4]);                }
+                else if (result.Arguments.Count == 6 &&
+                         typeof(DataServiceContext).IsAssignableFrom(result.Arguments[0].Type) &&
+                         this.annotations.TryGetValue(result.Arguments[1], out annotation))
+                {
+                    result = Expression.New(
+                        constructorInfo,
+                        this.materializerExpression,
+                        result.Arguments[0],                        result.Arguments[1],                        result.Arguments[2],                        result.Arguments[3],                        result.Arguments[4],                        result.Arguments[5]);                }
+            }
+
+            if (annotation != null)
+            {
+                this.annotations.Add(result, annotation);
+            }
+
+            return result;
+        }
+
+        private Expression RebindMethodCallForMemberSelect(MethodCallExpression call)
+        {
+            Debug.Assert(call != null, "call != null");
+            Debug.Assert(call.Method.Name == "Select", "call.Method.Name == 'Select'");
+            Debug.Assert(call.Object == null, "call.Object == null -- otherwise this isn't a call to a static Select method");
+            Debug.Assert(call.Arguments.Count == 2, "call.Arguments.Count == 2 -- otherwise this isn't the expected Select() call on IQueryable");
+
+            Expression result = null;
+            Expression parameterSource = this.Visit(call.Arguments[0]);
+            ExpressionAnnotation annotation;
+            this.annotations.TryGetValue(parameterSource, out annotation);
+
+            if (annotation != null)
+            {
+                Expression selectorExpression = this.Visit(call.Arguments[1]);
+                Type returnElementType = call.Method.ReturnType.GetGenericArguments()[0];
+                result = CallMaterializer(
+                    "ProjectionSelect",
+                    this.materializerExpression,
+                    this.pathBuilder.ParameterEntryInScope,
+                    this.pathBuilder.ExpectedParamTypeInScope,
+                    Expression.Constant(returnElementType, typeof(Type)),
+                    Expression.Constant(annotation.Segment.StartPath, typeof(object)),
+                    selectorExpression);
+                this.annotations.Add(result, annotation);
+                result = CallMaterializerWithType(
+                    "EnumerateAsElementType",
+                    new Type[] { returnElementType },
+                    result);
+                this.annotations.Add(result, annotation);
+            }
+
+            if (result == null)
+            {
+                result = base.VisitMethodCall(call);
+            }
+
+            return result;
+        }
+
+        private Expression RebindMethodCallForMemberToList(MethodCallExpression call)
+        {
+            Debug.Assert(call != null, "call != null");
+            Debug.Assert(call.Object == null, "call.Object == null -- otherwise this isn't a call to a static ToList method");
+            Debug.Assert(call.Method.Name == "ToList", "call.Method.Name == 'ToList'");
+
+            Debug.Assert(call.Arguments.Count == 1, "call.Arguments.Count == 1 -- otherwise this isn't the expected ToList() call on IEnumerable");
+
+            Expression result = this.Visit(call.Arguments[0]);
+            ExpressionAnnotation annotation;
+            if (this.annotations.TryGetValue(result, out annotation))
+            {
+                result = this.TypedEnumerableToList(result, call.Type);
+                this.annotations.Add(result, annotation);
+            }
+
+            return result;
+        }
+
+        private Expression RebindMethodCallForNewSequence(MethodCallExpression call)
+        {
+            Debug.Assert(call != null, "call != null");
+            Debug.Assert(ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(call), "ProjectionAnalyzer.IsMethodCallAllowedEntitySequence(call)");
+            Debug.Assert(call.Object == null, "call.Object == null -- otherwise this isn't the supported Select or ToList methods");
+
+            Expression result = null;
+
+            if (call.Method.Name == "Select")
+            {
+                Debug.Assert(call.Arguments.Count == 2, "call.Arguments.Count == 2 -- otherwise this isn't the argument we expected");
+
+                Expression parameterSource = this.Visit(call.Arguments[0]);
+                ExpressionAnnotation annotation;
+                this.annotations.TryGetValue(parameterSource, out annotation);
+
+                if (annotation != null)
+                {
+                    Expression selectorExpression = this.Visit(call.Arguments[1]);
+                    Type returnElementType = call.Method.ReturnType.GetGenericArguments()[0];
+                    result = CallMaterializer(
+                        "ProjectionSelect",
+                        this.materializerExpression,
+                        this.pathBuilder.ParameterEntryInScope,
+                        this.pathBuilder.ExpectedParamTypeInScope,
+                        Expression.Constant(returnElementType, typeof(Type)),
+                        Expression.Constant(annotation.Segment.StartPath, typeof(object)),
+                        selectorExpression);
+                    this.annotations.Add(result, annotation);
+                    result = CallMaterializerWithType(
+                        "EnumerateAsElementType",
+                        new Type[] { returnElementType },
+                        result);
+                    this.annotations.Add(result, annotation);
+                }
+            }
+            else
+            {
+                Debug.Assert(call.Method.Name == "ToList", "call.Method.Name == 'ToList'");
+
+                Expression source = this.Visit(call.Arguments[0]);
+                ExpressionAnnotation annotation;
+                if (this.annotations.TryGetValue(source, out annotation))
+                {
+                    result = this.TypedEnumerableToList(source, call.Type);
+                    this.annotations.Add(result, annotation);
+                }
+            }
+
+            if (result == null)
+            {
+                result = base.VisitMethodCall(call);
+            }
+
+            return result;
+        }
+
+        private Expression TypedEnumerableToList(Expression source, Type targetType)
+        {
+            Debug.Assert(source != null, "source != null");
+            Debug.Assert(targetType != null, "targetType != null");
+
+            Type enumeratedType = source.Type.GetGenericArguments()[0];
+            Type listElementType = targetType.GetGenericArguments()[0];
+
+            Expression result = CallMaterializerWithType(
+                "ListAsElementType",
+                new Type[] { enumeratedType, listElementType },
+                this.materializerExpression,
+                source);
+
+            return result;
+        }
+
+        #endregion Private methods.
+
+        #region Inner types.
+
+        internal class ExpressionAnnotation
+        {
+            internal ProjectionPathSegment Segment 
+            { 
+                get; 
+                set; 
+            }
+        }
+
+        #endregion Inner types.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/QueryOperationResponseOfT.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/QueryOperationResponseOfT.cs
@@ -1,68 +1,68 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Collections.Generic;
-    using System.Linq;
-
-    #endregion Namespaces.
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
-    public sealed class QueryOperationResponse<T> : QueryOperationResponse, IEnumerable<T>
-    {
-        #region Constructors.
-
-        internal QueryOperationResponse(Dictionary<string, string> headers, DataServiceRequest query, MaterializeAtom results)
-            : base(headers, query, results)
-        {
-        }
-
-        #endregion Constructors.
-
-        #region Public properties.
-
-        public override long TotalCount
-        {
-            get
-            {
-                if (this.Results != null && !this.Results.IsEmptyResults)
-                {
-                    return this.Results.CountValue();
-                }
-                else
-                {
-                    throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
-                }
-            }
-        }
-
-        #endregion Public properties.
-
-        #region Public methods.
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "required for this feature")]
-        public new DataServiceQueryContinuation<T> GetContinuation()
-        {
-            return (DataServiceQueryContinuation<T>)base.GetContinuation();
-        }
-
-        public new IEnumerator<T> GetEnumerator()
-        {
-            return this.Results.Cast<T>().GetEnumerator();
-        }
-
-        #endregion Public methods.
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Collections.Generic;
+    using System.Linq;
+
+    #endregion Namespaces.
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
+    public sealed class QueryOperationResponse<T> : QueryOperationResponse, IEnumerable<T>
+    {
+        #region Constructors.
+
+        internal QueryOperationResponse(Dictionary<string, string> headers, DataServiceRequest query, MaterializeAtom results)
+            : base(headers, query, results)
+        {
+        }
+
+        #endregion Constructors.
+
+        #region Public properties.
+
+        public override long TotalCount
+        {
+            get
+            {
+                if (this.Results != null && !this.Results.IsEmptyResults)
+                {
+                    return this.Results.CountValue();
+                }
+                else
+                {
+                    throw new InvalidOperationException(Strings.MaterializeFromAtom_CountNotPresent);
+                }
+            }
+        }
+
+        #endregion Public properties.
+
+        #region Public methods.
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "required for this feature")]
+        public new DataServiceQueryContinuation<T> GetContinuation()
+        {
+            return (DataServiceQueryContinuation<T>)base.GetContinuation();
+        }
+
+        public new IEnumerator<T> GetEnumerator()
+        {
+            return this.Results.Cast<T>().GetEnumerator();
+        }
+
+        #endregion Public methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/QueryResponse.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/QueryResponse.cs
@@ -1,107 +1,107 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Reflection;
-    using System.Diagnostics;
-
-    #endregion Namespaces.
-
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
-    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
-    public class QueryOperationResponse : OperationResponse, System.Collections.IEnumerable
-    {
-        #region Private fields.
-
-        private readonly DataServiceRequest query;
-
-        private readonly MaterializeAtom results;
-
-        #endregion Private fields.
-
-        internal QueryOperationResponse(Dictionary<string, string> headers, DataServiceRequest query, MaterializeAtom results)
-            : base(headers)
-        {
-            this.query = query;
-            this.results = results;
-        }
-
-        public DataServiceRequest Query
-        {
-            get { return this.query; }
-        }
-
-        public virtual long TotalCount
-        {
-            get
-            {
-                throw new NotSupportedException();
-            }
-        }
-
-        internal MaterializeAtom Results
-        {
-            get
-            {
-                if (null != this.Error)
-                {
-                    throw System.Data.Services.Client.Error.InvalidOperation(Strings.Context_BatchExecuteError, this.Error);
-                }
-
-                return this.results;
-            }
-        }
-
-        public System.Collections.IEnumerator GetEnumerator()
-        {
-            return this.Results.GetEnumerator();
-        }
-
-        public DataServiceQueryContinuation GetContinuation()
-        {
-            return this.results.GetContinuation(null);
-        }
-
-        public DataServiceQueryContinuation GetContinuation(IEnumerable collection)
-        {
-            return this.results.GetContinuation(collection);
-        }
-
-        public DataServiceQueryContinuation<T> GetContinuation<T>(IEnumerable<T> collection)
-        {
-            return (DataServiceQueryContinuation<T>)this.results.GetContinuation(collection);
-        }
-
-        internal static QueryOperationResponse GetInstance(Type elementType, Dictionary<string, string> headers, DataServiceRequest query, MaterializeAtom results)
-        {
-            Type genericType = typeof(QueryOperationResponse<>).MakeGenericType(elementType);
-#if !ASTORIA_LIGHT
-            return (QueryOperationResponse)Activator.CreateInstance(
-                genericType,
-                BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Instance,
-                null,
-                new object[] { headers, query, results },
-                System.Globalization.CultureInfo.InvariantCulture);
-#else
-            System.Reflection.ConstructorInfo[] info = genericType.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance);
-            System.Diagnostics.Debug.Assert(1 == info.Length, "only expected 1 ctor");
-            return (QueryOperationResponse)Util.ConstructorInvoke(info[0],new object[] { headers, query, results });
-#endif
-        }
-    }
-}
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Reflection;
+    using System.Diagnostics;
+
+    #endregion Namespaces.
+
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1010", Justification = "required for this feature")]
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710", Justification = "required for this feature")]
+    public class QueryOperationResponse : OperationResponse, System.Collections.IEnumerable
+    {
+        #region Private fields.
+
+        private readonly DataServiceRequest query;
+
+        private readonly MaterializeAtom results;
+
+        #endregion Private fields.
+
+        internal QueryOperationResponse(Dictionary<string, string> headers, DataServiceRequest query, MaterializeAtom results)
+            : base(headers)
+        {
+            this.query = query;
+            this.results = results;
+        }
+
+        public DataServiceRequest Query
+        {
+            get { return this.query; }
+        }
+
+        public virtual long TotalCount
+        {
+            get
+            {
+                throw new NotSupportedException();
+            }
+        }
+
+        internal MaterializeAtom Results
+        {
+            get
+            {
+                if (null != this.Error)
+                {
+                    throw System.Data.Services.Client.Error.InvalidOperation(Strings.Context_BatchExecuteError, this.Error);
+                }
+
+                return this.results;
+            }
+        }
+
+        public System.Collections.IEnumerator GetEnumerator()
+        {
+            return this.Results.GetEnumerator();
+        }
+
+        public DataServiceQueryContinuation GetContinuation()
+        {
+            return this.results.GetContinuation(null);
+        }
+
+        public DataServiceQueryContinuation GetContinuation(IEnumerable collection)
+        {
+            return this.results.GetContinuation(collection);
+        }
+
+        public DataServiceQueryContinuation<T> GetContinuation<T>(IEnumerable<T> collection)
+        {
+            return (DataServiceQueryContinuation<T>)this.results.GetContinuation(collection);
+        }
+
+        internal static QueryOperationResponse GetInstance(Type elementType, Dictionary<string, string> headers, DataServiceRequest query, MaterializeAtom results)
+        {
+            Type genericType = typeof(QueryOperationResponse<>).MakeGenericType(elementType);
+#if !ASTORIA_LIGHT
+            return (QueryOperationResponse)Activator.CreateInstance(
+                genericType,
+                BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Instance,
+                null,
+                new object[] { headers, query, results },
+                System.Globalization.CultureInfo.InvariantCulture);
+#else
+            System.Reflection.ConstructorInfo[] info = genericType.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance);
+            System.Diagnostics.Debug.Assert(1 == info.Length, "only expected 1 ctor");
+            return (QueryOperationResponse)Util.ConstructorInvoke(info[0],new object[] { headers, query, results });
+#endif
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/QueryResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/QueryResult.cs
@@ -1,607 +1,607 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.IO;
-#if !ASTORIA_LIGHT    
-    using System.Net;
-#else
-    using System.Data.Services.Http;
-#endif
-
-    internal class QueryResult : BaseAsyncResult
-    {
-        internal readonly DataServiceRequest ServiceRequest;
-
-        internal readonly HttpWebRequest Request;
-
-        private static byte[] reusableAsyncCopyBuffer;
-
-        private MemoryStream requestStreamContent;
-
-        private Stream requestStream;
-
-        private HttpWebResponse httpWebResponse;
-
-        private Stream asyncResponseStream;
-
-        private byte[] asyncStreamCopyBuffer;
-
-        private Stream responseStream;
-
-        private string contentType;
-
-        private long contentLength;
-
-        private HttpStatusCode statusCode;
-
-        private bool responseStreamOwner;
-
-        private bool usingBuffer;
-
-#if StreamContainsBuffer
-        private bool responseStreamIsCopyBuffer;
-#endif
-
-        internal QueryResult(object source, string method, DataServiceRequest serviceRequest, HttpWebRequest request, AsyncCallback callback, object state)
-            : base(source, method, callback, state)
-        {
-            Debug.Assert(null != request, "null request");
-            this.ServiceRequest = serviceRequest;
-            this.Request = request;
-            this.Abortable = request;
-        }
-
-        #region HttpResponse wrapper - ContentLength, ContentType, StatusCode
-
-        internal long ContentLength
-        {
-            get { return this.contentLength; }
-        }
-
-        internal string ContentType
-        {
-            get { return this.contentType; }
-        }
-
-        internal HttpStatusCode StatusCode
-        {
-            get { return this.statusCode; }
-        }
-
-        #endregion
-
-        internal static QueryResult EndExecute<TElement>(object source, IAsyncResult asyncResult)
-        {
-            QueryResult response = null;
-
-            try
-            {
-                response = BaseAsyncResult.EndExecute<QueryResult>(source, "Execute", asyncResult);
-            }
-            catch (InvalidOperationException ex)
-            {
-                response = asyncResult as QueryResult;
-                Debug.Assert(response != null, "response != null, BaseAsyncResult.EndExecute() would have thrown a different exception otherwise.");
-
-                QueryOperationResponse operationResponse = response.GetResponse<TElement>(MaterializeAtom.EmptyResults);
-                if (operationResponse != null)
-                {
-                    operationResponse.Error = ex;
-                    throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse);
-                }
-
-                throw;
-            }
-
-            return response;
-        }
-
-        internal Stream GetResponseStream()
-        {
-            return this.responseStream;
-        }
-
-        internal void BeginExecute()
-        {
-            try
-            {
-                IAsyncResult asyncResult;
-#if false
-                if ((null != requestContent) && (0 < requestContent.Length))
-                {
-                    requestContent.Position = 0;
-                    this.requestStreamContent = requestContent;
-                    this.Request.ContentLength = requestContent.Length;
-                    asyncResult = this.Request.BeginGetRequestStream(QueryAsyncResult.AsyncEndGetRequestStream, this);
-                }
-                else
-#endif
-                {
-                    asyncResult = BaseAsyncResult.InvokeAsync(this.Request.BeginGetResponse, QueryResult.AsyncEndGetResponse, this);
-                }
-
-                this.CompletedSynchronously &= asyncResult.CompletedSynchronously;
-            }
-            catch (Exception e)
-            {
-                this.HandleFailure(e);
-                throw;
-            }
-            finally
-            {
-                this.HandleCompleted();
-            }
-
-            Debug.Assert(!this.CompletedSynchronously || this.IsCompleted, "if CompletedSynchronously then MUST IsCompleted");
-        }
-
-#if !ASTORIA_LIGHT
-        internal void Execute()
-        {
-            try
-            {
-#if false
-                if ((null != requestContent) && (0 < requestContent.Length))
-                {
-                    using (System.IO.Stream stream = Util.NullCheck(this.Request.GetRequestStream(), InternalError.InvalidGetRequestStream))
-                    {
-                        byte[] buffer = requestContent.GetBuffer();
-                        int bufferOffset = checked((int)requestContent.Position);
-                        int bufferLength = checked((int)requestContent.Length) - bufferOffset;
-
-                        stream.Write(buffer, bufferOffset, bufferLength);
-                    }
-                }
-#endif
-
-                HttpWebResponse response = null;
-                try
-                {
-                    response = (HttpWebResponse)this.Request.GetResponse();
-                }
-                catch (WebException ex)
-                {
-                    response = (HttpWebResponse)ex.Response;
-                    if (null == response)
-                    {
-                        throw;
-                    }
-                }
-
-                this.SetHttpWebResponse(Util.NullCheck(response, InternalError.InvalidGetResponse));
-
-                if (HttpStatusCode.NoContent != this.StatusCode)
-                {
-                    using (Stream stream = this.httpWebResponse.GetResponseStream())
-                    {
-                        if (null != stream)
-                        {
-                            Stream copy = this.GetAsyncResponseStreamCopy();
-                            this.responseStream = copy;
-
-                            Byte[] buffer = this.GetAsyncResponseStreamCopyBuffer();
-
-                            long copied = WebUtil.CopyStream(stream, copy, ref buffer);
-                            if (this.responseStreamOwner)
-                            {
-                                if (0 == copied)
-                                {
-                                    this.responseStream = null;
-                                }
-                                else if (copy.Position < copy.Length)
-                                {                                    ((MemoryStream)copy).SetLength(copy.Position);
-                                }
-                            }
-
-                            this.PutAsyncResponseStreamCopyBuffer(buffer);
-                        }
-                    }
-                }
-            }
-            catch (Exception e)
-            {
-                this.HandleFailure(e);
-                throw;
-            }
-            finally
-            {
-                this.SetCompleted();
-                this.CompletedRequest();
-            }
-
-            if (null != this.Failure)
-            {
-                throw this.Failure;
-            }
-        }
-#endif
-
-        internal QueryOperationResponse<TElement> GetResponse<TElement>(MaterializeAtom results)
-        {
-            if (this.httpWebResponse != null)
-            {
-                Dictionary<string, string> headers = WebUtil.WrapResponseHeaders(this.httpWebResponse);
-                QueryOperationResponse<TElement> response = new QueryOperationResponse<TElement>(headers, this.ServiceRequest, results);
-                response.StatusCode = (int)this.httpWebResponse.StatusCode;
-                return response;
-            }
-
-            return null;
-        }
-
-        internal QueryOperationResponse GetResponseWithType(MaterializeAtom results, Type elementType)
-        {
-            if (this.httpWebResponse != null)
-            {
-                Dictionary<string, string> headers = WebUtil.WrapResponseHeaders(this.httpWebResponse);
-                QueryOperationResponse response = QueryOperationResponse.GetInstance(elementType, headers, this.ServiceRequest, results);
-                response.StatusCode = (int)this.httpWebResponse.StatusCode;
-                return response;
-            }
-
-            return null;
-        }
-
-        internal MaterializeAtom GetMaterializer(DataServiceContext context, ProjectionPlan plan)
-        {
-            Debug.Assert(this.IsCompletedInternally, "request hasn't completed yet");
-
-            MaterializeAtom materializer;
-            if (HttpStatusCode.NoContent != this.StatusCode)
-            {
-                materializer = DataServiceRequest.Materialize(context, this.ServiceRequest.QueryComponents, plan, this.ContentType, this.GetResponseStream());
-            }
-            else
-            {
-                materializer = MaterializeAtom.EmptyResults;
-            }
-
-            return materializer;
-        }
-        
-        internal QueryOperationResponse<TElement> ProcessResult<TElement>(DataServiceContext context, ProjectionPlan plan)
-        {
-            MaterializeAtom materializeAtom = DataServiceRequest.Materialize(context, this.ServiceRequest.QueryComponents, plan, this.ContentType, this.GetResponseStream());
-            return this.GetResponse<TElement>(materializeAtom);
-        }
-        
-        protected override void CompletedRequest()
-        {
-            Util.Dispose(ref this.asyncResponseStream);
-            Util.Dispose(ref this.requestStream);
-            Util.Dispose(ref this.requestStreamContent);
-
-            byte[] buffer = this.asyncStreamCopyBuffer;
-            this.asyncStreamCopyBuffer = null;
-#if StreamContainsBuffer
-            if (!this.responseStreamIsCopyBuffer)
-#endif
-            if ((null != buffer) && !this.usingBuffer)
-            {
-                this.PutAsyncResponseStreamCopyBuffer(buffer);
-            }
-
-            if (this.responseStreamOwner)
-            {
-                if (null != this.responseStream)
-                {
-                    this.responseStream.Position = 0;
-                }
-            }
-
-            Debug.Assert(null != this.httpWebResponse || null != this.Failure, "should have response or exception");
-            if (null != this.httpWebResponse)
-            {
-                this.httpWebResponse.Close();
-
-                Exception ex = DataServiceContext.HandleResponse(this.StatusCode, this.httpWebResponse.Headers[XmlConstants.HttpDataServiceVersion], this.GetResponseStream, false);
-                if (null != ex)
-                {
-                    this.HandleFailure(ex);
-                }
-            }
-        }
-
-        protected virtual Stream GetAsyncResponseStreamCopy()
-        {
-            this.responseStreamOwner = true;
-
-            long length = this.contentLength;
-            if ((0 < length) && (length <= Int32.MaxValue))
-            {
-                Debug.Assert(null == this.asyncStreamCopyBuffer, "not expecting buffer");
-
-#if StreamContainsBuffer
-                byte[] buffer = new byte[(int)length];
-                if (length < UInt16.MaxValue)
-                {                    responseStreamIsCopyBuffer = true;
-                    this.asyncStreamCopyBuffer = buffer;
-                }
-                return new MemoryStream(buffer, 0, buffer.Length, true, true);
-#else
-                return new MemoryStream((int)length);
-#endif
-            }
-
-            return new MemoryStream();
-        }
-
-        protected virtual byte[] GetAsyncResponseStreamCopyBuffer()
-        {            Debug.Assert(null == this.asyncStreamCopyBuffer, "non-null this.asyncStreamCopyBuffer");
-            return System.Threading.Interlocked.Exchange(ref reusableAsyncCopyBuffer, null) ?? new byte[8000];
-        }
-
-        protected virtual void PutAsyncResponseStreamCopyBuffer(byte[] buffer)
-        {
-            reusableAsyncCopyBuffer = buffer;
-        }
-
-        protected virtual void SetHttpWebResponse(HttpWebResponse response)
-        {
-            this.httpWebResponse = response;
-            this.statusCode = response.StatusCode;
-            this.contentLength = response.ContentLength;
-            this.contentType = response.ContentType;
-        }
-
-#if false
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-        private static void AsyncEndGetRequestStream(IAsyncResult asyncResult)
-        {
-            QueryAsyncResult state = asyncResult.AsyncState as QueryAsyncResult;
-            try
-            {
-                int step = CompleteCheck(state, InternalError.InvalidEndGetRequestCompleted);
-                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
-                HttpWebRequest httpWebRequest = Util.NullCheck(state.Request, InternalError.InvalidEndGetRequestStreamRequest);
-
-                Stream stream = Util.NullCheck(httpWebRequest.EndGetRequestStream(asyncResult), InternalError.InvalidEndGetRequestStreamStream);
-                state.requestStream = stream;
-
-                MemoryStream memoryStream = Util.NullCheck(state.requestStreamContent, InternalError.InvalidEndGetRequestStreamContent);
-                byte[] buffer = memoryStream.GetBuffer();
-                int bufferOffset = checked((int)memoryStream.Position);
-                int bufferLength = checked((int)memoryStream.Length) - bufferOffset;
-                if ((null == buffer) || (0 == bufferLength))
-                {
-                    Error.ThrowInternalError(InternalError.InvalidEndGetRequestStreamContentLength);
-                }
-
-                asyncResult = stream.BeginWrite(buffer, bufferOffset, bufferLength, QueryAsyncResult.AsyncEndWrite, state);
-
-                bool reallyCompletedSynchronously = asyncResult.CompletedSynchronously && (step < state.asyncCompleteStep);
-                state.CompletedSynchronously &= reallyCompletedSynchronously;            }
-            catch (Exception e)
-            {
-                if (state.HandleFailure(e))
-                {
-                    throw;
-                }
-            }
-            finally
-            {
-                state.HandleCompleted();
-            }
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-        private static void AsyncEndWrite(IAsyncResult asyncResult)
-        {
-            QueryAsyncResult state = asyncResult.AsyncState as QueryAsyncResult;
-            try
-            {
-                int step = CompleteCheck(state, InternalError.InvalidEndWriteCompleted);
-                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
-                HttpWebRequest httpWebRequest = Util.NullCheck(state.Request, InternalError.InvalidEndWriteRequest);
-
-                Stream stream = Util.NullCheck(state.requestStream, InternalError.InvalidEndWriteStream);
-                stream.EndWrite(asyncResult);
-
-                state.requestStream = null;
-                stream.Dispose();
-
-                stream = state.requestStreamContent;
-                if (null != stream)
-                {
-                    state.requestStreamContent = null;
-                    stream.Dispose();
-                }
-
-                asyncResult = httpWebRequest.BeginGetResponse(QueryAsyncResult.AsyncEndGetResponse, state);
-
-                bool reallyCompletedSynchronously = asyncResult.CompletedSynchronously && (step < state.asyncCompleteStep);
-                state.CompletedSynchronously &= reallyCompletedSynchronously;            }
-            catch (Exception e)
-            {
-                if (state.HandleFailure(e))
-                {
-                    throw;
-                }
-            }
-            finally
-            {
-                state.HandleCompleted();
-            }
-        }
-#endif
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-        private static void AsyncEndGetResponse(IAsyncResult asyncResult)
-        {
-            Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
-            QueryResult state = asyncResult.AsyncState as QueryResult;
-            try
-            {
-                CompleteCheck(state, InternalError.InvalidEndGetResponseCompleted);
-                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
-                HttpWebRequest httpWebRequest = Util.NullCheck(state.Request, InternalError.InvalidEndGetResponseRequest);
-
-                HttpWebResponse response = null;
-                try
-                {
-                    response = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult);
-                }
-                catch (WebException e)
-                {
-                    response = (HttpWebResponse)e.Response;
-                    if (null == response)
-                    {
-                        throw;
-                    }
-                }
-
-                state.SetHttpWebResponse(Util.NullCheck(response, InternalError.InvalidEndGetResponseResponse));
-                Debug.Assert(null == state.asyncResponseStream, "non-null asyncResponseStream");
-
-                Stream stream = null;
-                if (HttpStatusCode.NoContent != response.StatusCode)
-                {
-                    stream = response.GetResponseStream();
-                    state.asyncResponseStream = stream;
-                }
-
-                if ((null != stream) && stream.CanRead)
-                {
-                    if (null == state.responseStream)
-                    {                        state.responseStream = Util.NullCheck(state.GetAsyncResponseStreamCopy(), InternalError.InvalidAsyncResponseStreamCopy);
-                    }
-
-                    if (null == state.asyncStreamCopyBuffer)
-                    {                        state.asyncStreamCopyBuffer = Util.NullCheck(state.GetAsyncResponseStreamCopyBuffer(), InternalError.InvalidAsyncResponseStreamCopyBuffer);
-                    }
-
-                    QueryResult.ReadResponseStream(state);
-                }
-                else
-                {
-                    state.SetCompleted();
-                }
-            }
-            catch (Exception e)
-            {
-                if (state.HandleFailure(e))
-                {
-                    throw;
-                }
-            }
-            finally
-            {
-                state.HandleCompleted();
-            }
-        }
-
-        private static void ReadResponseStream(QueryResult queryResult)
-        {
-            IAsyncResult asyncResult;
-
-            byte[] buffer = queryResult.asyncStreamCopyBuffer;
-            Stream stream = queryResult.asyncResponseStream;
-            do
-            {
-                int bufferOffset, bufferLength;
-#if StreamContainsBuffer
-                if (state.responseStreamIsCopyBuffer)
-                {                    bufferOffset = checked((int)state.responseStream.Position);
-                    bufferLength = buffer.Length - bufferOffset;
-                }
-                else
-#endif
-                {
-                    bufferOffset = 0;
-                    bufferLength = buffer.Length;
-                }
-
-                queryResult.usingBuffer = true;
-                asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginRead, buffer, bufferOffset, bufferLength, QueryResult.AsyncEndRead, queryResult);
-                queryResult.CompletedSynchronously &= asyncResult.CompletedSynchronously;            }
-            while (asyncResult.CompletedSynchronously && !queryResult.IsCompletedInternally && stream.CanRead);
-
-            Debug.Assert(!queryResult.CompletedSynchronously || queryResult.IsCompletedInternally, "AsyncEndGetResponse !IsCompleted");
-        }
-
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
-        private static void AsyncEndRead(IAsyncResult asyncResult)
-        {
-            Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
-            QueryResult state = asyncResult.AsyncState as QueryResult;
-            int count = 0;
-            try
-            {
-                CompleteCheck(state, InternalError.InvalidEndReadCompleted);
-                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
-                Stream stream = Util.NullCheck(state.asyncResponseStream, InternalError.InvalidEndReadStream);
-                Stream outputResponse = Util.NullCheck(state.responseStream, InternalError.InvalidEndReadCopy);
-                byte[] buffer = Util.NullCheck(state.asyncStreamCopyBuffer, InternalError.InvalidEndReadBuffer);
-
-                count = stream.EndRead(asyncResult);
-                state.usingBuffer = false;
-                if (0 < count)
-                {
-#if StreamContainsBuffer
-                    if (state.responseStreamIsCopyBuffer)
-                    {                        outputResponse.Position = outputResponse.Position + count;
-                    }
-                    else
-#endif
-                    {
-                        outputResponse.Write(buffer, 0, count);
-                    }
-                }
-
-                if (0 < count && 0 < buffer.Length && stream.CanRead)
-                {
-                    if (!asyncResult.CompletedSynchronously)
-                    {
-                        QueryResult.ReadResponseStream(state);
-                    }
-                }
-                else
-                {
-#if StreamContainsBuffer
-                    Debug.Assert(!state.responseStreamIsCopyBuffer || (outputResponse.Position == outputResponse.Length), "didn't read expected count");
-#endif
-                    if (outputResponse.Position < outputResponse.Length)
-                    {
-                        ((MemoryStream)outputResponse).SetLength(outputResponse.Position);
-                    }
-
-                    state.SetCompleted();
-                }
-            }
-            catch (Exception e)
-            {
-                if (state.HandleFailure(e))
-                {
-                    throw;
-                }
-            }
-            finally
-            {
-                state.HandleCompleted();
-            }
-        }
-
-        private static void CompleteCheck(QueryResult pereq, InternalError errorcode)
-        {
-            if ((null == pereq) || (pereq.IsCompletedInternally && !pereq.IsAborted))
-            {
-                Error.ThrowInternalError(errorcode);
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.IO;
+#if !ASTORIA_LIGHT    
+    using System.Net;
+#else
+    using System.Data.Services.Http;
+#endif
+
+    internal class QueryResult : BaseAsyncResult
+    {
+        internal readonly DataServiceRequest ServiceRequest;
+
+        internal readonly HttpWebRequest Request;
+
+        private static byte[] reusableAsyncCopyBuffer;
+
+        private MemoryStream requestStreamContent;
+
+        private Stream requestStream;
+
+        private HttpWebResponse httpWebResponse;
+
+        private Stream asyncResponseStream;
+
+        private byte[] asyncStreamCopyBuffer;
+
+        private Stream responseStream;
+
+        private string contentType;
+
+        private long contentLength;
+
+        private HttpStatusCode statusCode;
+
+        private bool responseStreamOwner;
+
+        private bool usingBuffer;
+
+#if StreamContainsBuffer
+        private bool responseStreamIsCopyBuffer;
+#endif
+
+        internal QueryResult(object source, string method, DataServiceRequest serviceRequest, HttpWebRequest request, AsyncCallback callback, object state)
+            : base(source, method, callback, state)
+        {
+            Debug.Assert(null != request, "null request");
+            this.ServiceRequest = serviceRequest;
+            this.Request = request;
+            this.Abortable = request;
+        }
+
+        #region HttpResponse wrapper - ContentLength, ContentType, StatusCode
+
+        internal long ContentLength
+        {
+            get { return this.contentLength; }
+        }
+
+        internal string ContentType
+        {
+            get { return this.contentType; }
+        }
+
+        internal HttpStatusCode StatusCode
+        {
+            get { return this.statusCode; }
+        }
+
+        #endregion
+
+        internal static QueryResult EndExecute<TElement>(object source, IAsyncResult asyncResult)
+        {
+            QueryResult response = null;
+
+            try
+            {
+                response = BaseAsyncResult.EndExecute<QueryResult>(source, "Execute", asyncResult);
+            }
+            catch (InvalidOperationException ex)
+            {
+                response = asyncResult as QueryResult;
+                Debug.Assert(response != null, "response != null, BaseAsyncResult.EndExecute() would have thrown a different exception otherwise.");
+
+                QueryOperationResponse operationResponse = response.GetResponse<TElement>(MaterializeAtom.EmptyResults);
+                if (operationResponse != null)
+                {
+                    operationResponse.Error = ex;
+                    throw new DataServiceQueryException(Strings.DataServiceException_GeneralError, ex, operationResponse);
+                }
+
+                throw;
+            }
+
+            return response;
+        }
+
+        internal Stream GetResponseStream()
+        {
+            return this.responseStream;
+        }
+
+        internal void BeginExecute()
+        {
+            try
+            {
+                IAsyncResult asyncResult;
+#if false
+                if ((null != requestContent) && (0 < requestContent.Length))
+                {
+                    requestContent.Position = 0;
+                    this.requestStreamContent = requestContent;
+                    this.Request.ContentLength = requestContent.Length;
+                    asyncResult = this.Request.BeginGetRequestStream(QueryAsyncResult.AsyncEndGetRequestStream, this);
+                }
+                else
+#endif
+                {
+                    asyncResult = BaseAsyncResult.InvokeAsync(this.Request.BeginGetResponse, QueryResult.AsyncEndGetResponse, this);
+                }
+
+                this.CompletedSynchronously &= asyncResult.CompletedSynchronously;
+            }
+            catch (Exception e)
+            {
+                this.HandleFailure(e);
+                throw;
+            }
+            finally
+            {
+                this.HandleCompleted();
+            }
+
+            Debug.Assert(!this.CompletedSynchronously || this.IsCompleted, "if CompletedSynchronously then MUST IsCompleted");
+        }
+
+#if !ASTORIA_LIGHT
+        internal void Execute()
+        {
+            try
+            {
+#if false
+                if ((null != requestContent) && (0 < requestContent.Length))
+                {
+                    using (System.IO.Stream stream = Util.NullCheck(this.Request.GetRequestStream(), InternalError.InvalidGetRequestStream))
+                    {
+                        byte[] buffer = requestContent.GetBuffer();
+                        int bufferOffset = checked((int)requestContent.Position);
+                        int bufferLength = checked((int)requestContent.Length) - bufferOffset;
+
+                        stream.Write(buffer, bufferOffset, bufferLength);
+                    }
+                }
+#endif
+
+                HttpWebResponse response = null;
+                try
+                {
+                    response = (HttpWebResponse)this.Request.GetResponse();
+                }
+                catch (WebException ex)
+                {
+                    response = (HttpWebResponse)ex.Response;
+                    if (null == response)
+                    {
+                        throw;
+                    }
+                }
+
+                this.SetHttpWebResponse(Util.NullCheck(response, InternalError.InvalidGetResponse));
+
+                if (HttpStatusCode.NoContent != this.StatusCode)
+                {
+                    using (Stream stream = this.httpWebResponse.GetResponseStream())
+                    {
+                        if (null != stream)
+                        {
+                            Stream copy = this.GetAsyncResponseStreamCopy();
+                            this.responseStream = copy;
+
+                            Byte[] buffer = this.GetAsyncResponseStreamCopyBuffer();
+
+                            long copied = WebUtil.CopyStream(stream, copy, ref buffer);
+                            if (this.responseStreamOwner)
+                            {
+                                if (0 == copied)
+                                {
+                                    this.responseStream = null;
+                                }
+                                else if (copy.Position < copy.Length)
+                                {                                    ((MemoryStream)copy).SetLength(copy.Position);
+                                }
+                            }
+
+                            this.PutAsyncResponseStreamCopyBuffer(buffer);
+                        }
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                this.HandleFailure(e);
+                throw;
+            }
+            finally
+            {
+                this.SetCompleted();
+                this.CompletedRequest();
+            }
+
+            if (null != this.Failure)
+            {
+                throw this.Failure;
+            }
+        }
+#endif
+
+        internal QueryOperationResponse<TElement> GetResponse<TElement>(MaterializeAtom results)
+        {
+            if (this.httpWebResponse != null)
+            {
+                Dictionary<string, string> headers = WebUtil.WrapResponseHeaders(this.httpWebResponse);
+                QueryOperationResponse<TElement> response = new QueryOperationResponse<TElement>(headers, this.ServiceRequest, results);
+                response.StatusCode = (int)this.httpWebResponse.StatusCode;
+                return response;
+            }
+
+            return null;
+        }
+
+        internal QueryOperationResponse GetResponseWithType(MaterializeAtom results, Type elementType)
+        {
+            if (this.httpWebResponse != null)
+            {
+                Dictionary<string, string> headers = WebUtil.WrapResponseHeaders(this.httpWebResponse);
+                QueryOperationResponse response = QueryOperationResponse.GetInstance(elementType, headers, this.ServiceRequest, results);
+                response.StatusCode = (int)this.httpWebResponse.StatusCode;
+                return response;
+            }
+
+            return null;
+        }
+
+        internal MaterializeAtom GetMaterializer(DataServiceContext context, ProjectionPlan plan)
+        {
+            Debug.Assert(this.IsCompletedInternally, "request hasn't completed yet");
+
+            MaterializeAtom materializer;
+            if (HttpStatusCode.NoContent != this.StatusCode)
+            {
+                materializer = DataServiceRequest.Materialize(context, this.ServiceRequest.QueryComponents, plan, this.ContentType, this.GetResponseStream());
+            }
+            else
+            {
+                materializer = MaterializeAtom.EmptyResults;
+            }
+
+            return materializer;
+        }
+        
+        internal QueryOperationResponse<TElement> ProcessResult<TElement>(DataServiceContext context, ProjectionPlan plan)
+        {
+            MaterializeAtom materializeAtom = DataServiceRequest.Materialize(context, this.ServiceRequest.QueryComponents, plan, this.ContentType, this.GetResponseStream());
+            return this.GetResponse<TElement>(materializeAtom);
+        }
+        
+        protected override void CompletedRequest()
+        {
+            Util.Dispose(ref this.asyncResponseStream);
+            Util.Dispose(ref this.requestStream);
+            Util.Dispose(ref this.requestStreamContent);
+
+            byte[] buffer = this.asyncStreamCopyBuffer;
+            this.asyncStreamCopyBuffer = null;
+#if StreamContainsBuffer
+            if (!this.responseStreamIsCopyBuffer)
+#endif
+            if ((null != buffer) && !this.usingBuffer)
+            {
+                this.PutAsyncResponseStreamCopyBuffer(buffer);
+            }
+
+            if (this.responseStreamOwner)
+            {
+                if (null != this.responseStream)
+                {
+                    this.responseStream.Position = 0;
+                }
+            }
+
+            Debug.Assert(null != this.httpWebResponse || null != this.Failure, "should have response or exception");
+            if (null != this.httpWebResponse)
+            {
+                this.httpWebResponse.Close();
+
+                Exception ex = DataServiceContext.HandleResponse(this.StatusCode, this.httpWebResponse.Headers[XmlConstants.HttpDataServiceVersion], this.GetResponseStream, false);
+                if (null != ex)
+                {
+                    this.HandleFailure(ex);
+                }
+            }
+        }
+
+        protected virtual Stream GetAsyncResponseStreamCopy()
+        {
+            this.responseStreamOwner = true;
+
+            long length = this.contentLength;
+            if ((0 < length) && (length <= Int32.MaxValue))
+            {
+                Debug.Assert(null == this.asyncStreamCopyBuffer, "not expecting buffer");
+
+#if StreamContainsBuffer
+                byte[] buffer = new byte[(int)length];
+                if (length < UInt16.MaxValue)
+                {                    responseStreamIsCopyBuffer = true;
+                    this.asyncStreamCopyBuffer = buffer;
+                }
+                return new MemoryStream(buffer, 0, buffer.Length, true, true);
+#else
+                return new MemoryStream((int)length);
+#endif
+            }
+
+            return new MemoryStream();
+        }
+
+        protected virtual byte[] GetAsyncResponseStreamCopyBuffer()
+        {            Debug.Assert(null == this.asyncStreamCopyBuffer, "non-null this.asyncStreamCopyBuffer");
+            return System.Threading.Interlocked.Exchange(ref reusableAsyncCopyBuffer, null) ?? new byte[8000];
+        }
+
+        protected virtual void PutAsyncResponseStreamCopyBuffer(byte[] buffer)
+        {
+            reusableAsyncCopyBuffer = buffer;
+        }
+
+        protected virtual void SetHttpWebResponse(HttpWebResponse response)
+        {
+            this.httpWebResponse = response;
+            this.statusCode = response.StatusCode;
+            this.contentLength = response.ContentLength;
+            this.contentType = response.ContentType;
+        }
+
+#if false
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+        private static void AsyncEndGetRequestStream(IAsyncResult asyncResult)
+        {
+            QueryAsyncResult state = asyncResult.AsyncState as QueryAsyncResult;
+            try
+            {
+                int step = CompleteCheck(state, InternalError.InvalidEndGetRequestCompleted);
+                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
+                HttpWebRequest httpWebRequest = Util.NullCheck(state.Request, InternalError.InvalidEndGetRequestStreamRequest);
+
+                Stream stream = Util.NullCheck(httpWebRequest.EndGetRequestStream(asyncResult), InternalError.InvalidEndGetRequestStreamStream);
+                state.requestStream = stream;
+
+                MemoryStream memoryStream = Util.NullCheck(state.requestStreamContent, InternalError.InvalidEndGetRequestStreamContent);
+                byte[] buffer = memoryStream.GetBuffer();
+                int bufferOffset = checked((int)memoryStream.Position);
+                int bufferLength = checked((int)memoryStream.Length) - bufferOffset;
+                if ((null == buffer) || (0 == bufferLength))
+                {
+                    Error.ThrowInternalError(InternalError.InvalidEndGetRequestStreamContentLength);
+                }
+
+                asyncResult = stream.BeginWrite(buffer, bufferOffset, bufferLength, QueryAsyncResult.AsyncEndWrite, state);
+
+                bool reallyCompletedSynchronously = asyncResult.CompletedSynchronously && (step < state.asyncCompleteStep);
+                state.CompletedSynchronously &= reallyCompletedSynchronously;            }
+            catch (Exception e)
+            {
+                if (state.HandleFailure(e))
+                {
+                    throw;
+                }
+            }
+            finally
+            {
+                state.HandleCompleted();
+            }
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+        private static void AsyncEndWrite(IAsyncResult asyncResult)
+        {
+            QueryAsyncResult state = asyncResult.AsyncState as QueryAsyncResult;
+            try
+            {
+                int step = CompleteCheck(state, InternalError.InvalidEndWriteCompleted);
+                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
+                HttpWebRequest httpWebRequest = Util.NullCheck(state.Request, InternalError.InvalidEndWriteRequest);
+
+                Stream stream = Util.NullCheck(state.requestStream, InternalError.InvalidEndWriteStream);
+                stream.EndWrite(asyncResult);
+
+                state.requestStream = null;
+                stream.Dispose();
+
+                stream = state.requestStreamContent;
+                if (null != stream)
+                {
+                    state.requestStreamContent = null;
+                    stream.Dispose();
+                }
+
+                asyncResult = httpWebRequest.BeginGetResponse(QueryAsyncResult.AsyncEndGetResponse, state);
+
+                bool reallyCompletedSynchronously = asyncResult.CompletedSynchronously && (step < state.asyncCompleteStep);
+                state.CompletedSynchronously &= reallyCompletedSynchronously;            }
+            catch (Exception e)
+            {
+                if (state.HandleFailure(e))
+                {
+                    throw;
+                }
+            }
+            finally
+            {
+                state.HandleCompleted();
+            }
+        }
+#endif
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+        private static void AsyncEndGetResponse(IAsyncResult asyncResult)
+        {
+            Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
+            QueryResult state = asyncResult.AsyncState as QueryResult;
+            try
+            {
+                CompleteCheck(state, InternalError.InvalidEndGetResponseCompleted);
+                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
+                HttpWebRequest httpWebRequest = Util.NullCheck(state.Request, InternalError.InvalidEndGetResponseRequest);
+
+                HttpWebResponse response = null;
+                try
+                {
+                    response = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult);
+                }
+                catch (WebException e)
+                {
+                    response = (HttpWebResponse)e.Response;
+                    if (null == response)
+                    {
+                        throw;
+                    }
+                }
+
+                state.SetHttpWebResponse(Util.NullCheck(response, InternalError.InvalidEndGetResponseResponse));
+                Debug.Assert(null == state.asyncResponseStream, "non-null asyncResponseStream");
+
+                Stream stream = null;
+                if (HttpStatusCode.NoContent != response.StatusCode)
+                {
+                    stream = response.GetResponseStream();
+                    state.asyncResponseStream = stream;
+                }
+
+                if ((null != stream) && stream.CanRead)
+                {
+                    if (null == state.responseStream)
+                    {                        state.responseStream = Util.NullCheck(state.GetAsyncResponseStreamCopy(), InternalError.InvalidAsyncResponseStreamCopy);
+                    }
+
+                    if (null == state.asyncStreamCopyBuffer)
+                    {                        state.asyncStreamCopyBuffer = Util.NullCheck(state.GetAsyncResponseStreamCopyBuffer(), InternalError.InvalidAsyncResponseStreamCopyBuffer);
+                    }
+
+                    QueryResult.ReadResponseStream(state);
+                }
+                else
+                {
+                    state.SetCompleted();
+                }
+            }
+            catch (Exception e)
+            {
+                if (state.HandleFailure(e))
+                {
+                    throw;
+                }
+            }
+            finally
+            {
+                state.HandleCompleted();
+            }
+        }
+
+        private static void ReadResponseStream(QueryResult queryResult)
+        {
+            IAsyncResult asyncResult;
+
+            byte[] buffer = queryResult.asyncStreamCopyBuffer;
+            Stream stream = queryResult.asyncResponseStream;
+            do
+            {
+                int bufferOffset, bufferLength;
+#if StreamContainsBuffer
+                if (state.responseStreamIsCopyBuffer)
+                {                    bufferOffset = checked((int)state.responseStream.Position);
+                    bufferLength = buffer.Length - bufferOffset;
+                }
+                else
+#endif
+                {
+                    bufferOffset = 0;
+                    bufferLength = buffer.Length;
+                }
+
+                queryResult.usingBuffer = true;
+                asyncResult = BaseAsyncResult.InvokeAsync(stream.BeginRead, buffer, bufferOffset, bufferLength, QueryResult.AsyncEndRead, queryResult);
+                queryResult.CompletedSynchronously &= asyncResult.CompletedSynchronously;            }
+            while (asyncResult.CompletedSynchronously && !queryResult.IsCompletedInternally && stream.CanRead);
+
+            Debug.Assert(!queryResult.CompletedSynchronously || queryResult.IsCompletedInternally, "AsyncEndGetResponse !IsCompleted");
+        }
+
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "required for this feature")]
+        private static void AsyncEndRead(IAsyncResult asyncResult)
+        {
+            Debug.Assert(asyncResult != null && asyncResult.IsCompleted, "asyncResult.IsCompleted");
+            QueryResult state = asyncResult.AsyncState as QueryResult;
+            int count = 0;
+            try
+            {
+                CompleteCheck(state, InternalError.InvalidEndReadCompleted);
+                state.CompletedSynchronously &= asyncResult.CompletedSynchronously;
+                Stream stream = Util.NullCheck(state.asyncResponseStream, InternalError.InvalidEndReadStream);
+                Stream outputResponse = Util.NullCheck(state.responseStream, InternalError.InvalidEndReadCopy);
+                byte[] buffer = Util.NullCheck(state.asyncStreamCopyBuffer, InternalError.InvalidEndReadBuffer);
+
+                count = stream.EndRead(asyncResult);
+                state.usingBuffer = false;
+                if (0 < count)
+                {
+#if StreamContainsBuffer
+                    if (state.responseStreamIsCopyBuffer)
+                    {                        outputResponse.Position = outputResponse.Position + count;
+                    }
+                    else
+#endif
+                    {
+                        outputResponse.Write(buffer, 0, count);
+                    }
+                }
+
+                if (0 < count && 0 < buffer.Length && stream.CanRead)
+                {
+                    if (!asyncResult.CompletedSynchronously)
+                    {
+                        QueryResult.ReadResponseStream(state);
+                    }
+                }
+                else
+                {
+#if StreamContainsBuffer
+                    Debug.Assert(!state.responseStreamIsCopyBuffer || (outputResponse.Position == outputResponse.Length), "didn't read expected count");
+#endif
+                    if (outputResponse.Position < outputResponse.Length)
+                    {
+                        ((MemoryStream)outputResponse).SetLength(outputResponse.Position);
+                    }
+
+                    state.SetCompleted();
+                }
+            }
+            catch (Exception e)
+            {
+                if (state.HandleFailure(e))
+                {
+                    throw;
+                }
+            }
+            finally
+            {
+                state.HandleCompleted();
+            }
+        }
+
+        private static void CompleteCheck(QueryResult pereq, InternalError errorcode)
+        {
+            if ((null == pereq) || (pereq.IsCompletedInternally && !pereq.IsAborted))
+            {
+                Error.ThrowInternalError(errorcode);
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ReadingWritingEntityEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ReadingWritingEntityEventArgs.cs
@@ -1,42 +1,42 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Diagnostics;
-    using System.Xml.Linq;
-
-    public sealed class ReadingWritingEntityEventArgs : EventArgs
-    {
-        private object entity;
-
-        private XElement data;
-
-        internal ReadingWritingEntityEventArgs(object entity, XElement data)
-        {
-            this.entity = entity;
-            this.data = data;
-        }
-
-        public object Entity
-        {
-            get { return this.entity; }
-        }
-
-        public XElement Data
-        {
-            [DebuggerStepThrough]
-            get { return this.data; }
-        }
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Diagnostics;
+    using System.Xml.Linq;
+
+    public sealed class ReadingWritingEntityEventArgs : EventArgs
+    {
+        private object entity;
+
+        private XElement data;
+
+        internal ReadingWritingEntityEventArgs(object entity, XElement data)
+        {
+            this.entity = entity;
+            this.data = data;
+        }
+
+        public object Entity
+        {
+            get { return this.entity; }
+        }
+
+        public XElement Data
+        {
+            [DebuggerStepThrough]
+            get { return this.data; }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ReferenceEqualityComparer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/ReferenceEqualityComparer.cs
@@ -1,134 +1,134 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq.Expressions;
-    using System.Text;
-    using System.Collections;
-
-    #endregion Namespaces.
-
-    internal class ReferenceEqualityComparer : IEqualityComparer
-    {
-        #region Private fields.
-
-#if NON_GENERIC_AVAILABLE
-        private static ReferenceEqualityComparer nonGenericInstance;
-#endif
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        protected ReferenceEqualityComparer()
-        {
-        }
-
-        #endregion Constructors.
-
-        #region Properties.
-
-        bool IEqualityComparer.Equals(object x, object y)
-        {
-            return object.ReferenceEquals(x, y);
-        }
-
-        int IEqualityComparer.GetHashCode(object obj)
-        {
-            if (obj == null)
-            {
-                return 0;
-            }
-
-            return obj.GetHashCode();
-        }
-
-#if NON_GENERIC_AVAILABLE
-        internal ReferenceEqualityComparer NonGenericInstance
-        {
-            get
-            {
-                if (nonGenericInstance == null)
-                {
-                    ReferenceEqualityComparer comparer = new ReferenceEqualityComparer();
-                    System.Threading.Interlocked.CompareExchange(ref nonGenericInstance, comparer, null);
-                }
-
-                return nonGenericInstance;
-            }
-        }
-#endif
-
-        #endregion Properties.
-    }
-
-    internal sealed class ReferenceEqualityComparer<T> : ReferenceEqualityComparer, IEqualityComparer<T>
-    {
-        #region Private fields.
-
-        private static ReferenceEqualityComparer<T> instance;
-
-        #endregion Private fields.
-
-        #region Constructors.
-
-        private ReferenceEqualityComparer() : base()
-        {
-        }
-
-        #endregion Constructors.
-
-        #region Properties.
-
-        internal static ReferenceEqualityComparer<T> Instance
-        {
-            get
-            {
-                if (instance == null)
-                {
-                    Debug.Assert(!typeof(T).IsValueType, "!typeof(T).IsValueType -- can't use reference equality in a meaningful way with value types");
-                    ReferenceEqualityComparer<T> newInstance = new ReferenceEqualityComparer<T>();
-                    System.Threading.Interlocked.CompareExchange(ref instance, newInstance, null);
-                }
-
-                return instance;
-            }
-        }
-
-        #endregion Properties.
-
-        #region Methods.
-
-        public bool Equals(T x, T y)
-        {
-            return object.ReferenceEquals(x, y);
-        }
-
-        public int GetHashCode(T obj)
-        {
-            if (obj == null)
-            {
-                return 0;
-            }
-
-            return obj.GetHashCode();
-        }
-
-        #endregion Methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq.Expressions;
+    using System.Text;
+    using System.Collections;
+
+    #endregion Namespaces.
+
+    internal class ReferenceEqualityComparer : IEqualityComparer
+    {
+        #region Private fields.
+
+#if NON_GENERIC_AVAILABLE
+        private static ReferenceEqualityComparer nonGenericInstance;
+#endif
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        protected ReferenceEqualityComparer()
+        {
+        }
+
+        #endregion Constructors.
+
+        #region Properties.
+
+        bool IEqualityComparer.Equals(object x, object y)
+        {
+            return object.ReferenceEquals(x, y);
+        }
+
+        int IEqualityComparer.GetHashCode(object obj)
+        {
+            if (obj == null)
+            {
+                return 0;
+            }
+
+            return obj.GetHashCode();
+        }
+
+#if NON_GENERIC_AVAILABLE
+        internal ReferenceEqualityComparer NonGenericInstance
+        {
+            get
+            {
+                if (nonGenericInstance == null)
+                {
+                    ReferenceEqualityComparer comparer = new ReferenceEqualityComparer();
+                    System.Threading.Interlocked.CompareExchange(ref nonGenericInstance, comparer, null);
+                }
+
+                return nonGenericInstance;
+            }
+        }
+#endif
+
+        #endregion Properties.
+    }
+
+    internal sealed class ReferenceEqualityComparer<T> : ReferenceEqualityComparer, IEqualityComparer<T>
+    {
+        #region Private fields.
+
+        private static ReferenceEqualityComparer<T> instance;
+
+        #endregion Private fields.
+
+        #region Constructors.
+
+        private ReferenceEqualityComparer() : base()
+        {
+        }
+
+        #endregion Constructors.
+
+        #region Properties.
+
+        internal static ReferenceEqualityComparer<T> Instance
+        {
+            get
+            {
+                if (instance == null)
+                {
+                    Debug.Assert(!typeof(T).IsValueType, "!typeof(T).IsValueType -- can't use reference equality in a meaningful way with value types");
+                    ReferenceEqualityComparer<T> newInstance = new ReferenceEqualityComparer<T>();
+                    System.Threading.Interlocked.CompareExchange(ref instance, newInstance, null);
+                }
+
+                return instance;
+            }
+        }
+
+        #endregion Properties.
+
+        #region Methods.
+
+        public bool Equals(T x, T y)
+        {
+            return object.ReferenceEquals(x, y);
+        }
+
+        public int GetHashCode(T obj)
+        {
+            if (obj == null)
+            {
+                return 0;
+            }
+
+            return obj.GetHashCode();
+        }
+
+        #endregion Methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/SaveChangesOptions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/SaveChangesOptions.cs
@@ -1,26 +1,26 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    [Flags]
-    public enum SaveChangesOptions
-    {
-        None = 0,
-
-        Batch = 1,
-
-        ContinueOnError = 2,
-
-        ReplaceOnUpdate = 4,
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    [Flags]
+    public enum SaveChangesOptions
+    {
+        None = 0,
+
+        Batch = 1,
+
+        ContinueOnError = 2,
+
+        ReplaceOnUpdate = 4,
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/SendingRequestEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/SendingRequestEventArgs.cs
@@ -1,66 +1,66 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Diagnostics;
-
-    public class SendingRequestEventArgs : EventArgs
-    {
-#if ASTORIA_LIGHT
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "Not used in Silverlight")]
-#endif
-        private System.Net.WebRequest request;
-
-        private System.Net.WebHeaderCollection requestHeaders;
-
-        internal SendingRequestEventArgs(System.Net.WebRequest request, System.Net.WebHeaderCollection requestHeaders)
-        {
-#if ASTORIA_LIGHT
-            Debug.Assert(null == request, "non-null request in SL.");
-#else
-            Debug.Assert(null != request, "null request");
-#endif
-            Debug.Assert(null != requestHeaders, "null requestHeaders");
-            this.request = request;
-            this.requestHeaders = requestHeaders;
-        }
-
-#if !ASTORIA_LIGHT        
-        public System.Net.WebRequest Request
-        {
-            get
-            {
-                return this.request;
-            }
-
-            set
-            {
-                Util.CheckArgumentNull(value, "value");
-                if (!(value is System.Net.HttpWebRequest))
-                {
-                    throw Error.Argument(Strings.Context_SendingRequestEventArgsNotHttp, "value");
-                }
-
-                this.request = value;
-                this.requestHeaders = value.Headers;
-            }
-        }
-#endif
-
-        public System.Net.WebHeaderCollection RequestHeaders
-        {
-            get { return this.requestHeaders; }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Diagnostics;
+
+    public class SendingRequestEventArgs : EventArgs
+    {
+#if ASTORIA_LIGHT
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Justification = "Not used in Silverlight")]
+#endif
+        private System.Net.WebRequest request;
+
+        private System.Net.WebHeaderCollection requestHeaders;
+
+        internal SendingRequestEventArgs(System.Net.WebRequest request, System.Net.WebHeaderCollection requestHeaders)
+        {
+#if ASTORIA_LIGHT
+            Debug.Assert(null == request, "non-null request in SL.");
+#else
+            Debug.Assert(null != request, "null request");
+#endif
+            Debug.Assert(null != requestHeaders, "null requestHeaders");
+            this.request = request;
+            this.requestHeaders = requestHeaders;
+        }
+
+#if !ASTORIA_LIGHT        
+        public System.Net.WebRequest Request
+        {
+            get
+            {
+                return this.request;
+            }
+
+            set
+            {
+                Util.CheckArgumentNull(value, "value");
+                if (!(value is System.Net.HttpWebRequest))
+                {
+                    throw Error.Argument(Strings.Context_SendingRequestEventArgsNotHttp, "value");
+                }
+
+                this.request = value;
+                this.requestHeaders = value.Headers;
+            }
+        }
+#endif
+
+        public System.Net.WebHeaderCollection RequestHeaders
+        {
+            get { return this.requestHeaders; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Util.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Util.cs
@@ -1,426 +1,426 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    #region Namespaces.
-
-    using System.Collections;
-    using System.Diagnostics;
-    using System.Xml;
-    using System.Reflection;
-    using System.Linq.Expressions;
-
-    #endregion Namespaces.
-
-    internal static class Util
-    {
-        internal const string VersionSuffix = ";NetFx";
-
-        internal const string CodeGeneratorToolName = "System.Data.Services.Design";
-
-        internal static readonly Version DataServiceVersionEmpty = new Version(0, 0);
-
-        internal static readonly Version DataServiceVersion1 = new Version(1, 0);
-
-        internal static readonly Version DataServiceVersion2 = new Version(2, 0);
-
-        internal static readonly Version MaxResponseVersion = DataServiceVersion2;
-
-        internal static readonly Version[] SupportedResponseVersions = 
-        { 
-            DataServiceVersion1,
-            DataServiceVersion2
-        };
-
-        internal static readonly char[] ForwardSlash = new char[1] { '/' };
-
-        private static char[] whitespaceForTracing = new char[] { '\r', '\n', ' ', ' ', ' ', ' ', ' ' };
-
-#if DEBUG
-        private static Action<string> DebugFaultInjector = new Action<string>((s) => { });
-
-        private static Func<String, String> referenceIdentity = delegate(String identity)
-        {
-            return identity;
-        };
-
-        private static Func<String, String> dereferenceIdentity = delegate(String identity)
-        {
-            return identity;
-        };
-#endif
-
-        [Conditional("DEBUG")]
-        internal static void DebugInjectFault(string state)
-        {
-#if DEBUG
-            DebugFaultInjector(state);
-#endif
-        }
-
-        internal static String ReferenceIdentity(String uri)
-        {
-#if DEBUG
-            return referenceIdentity(uri);
-#else
-            return uri;
-#endif
-        }
-
-        internal static String DereferenceIdentity(String uri)
-        {
-#if DEBUG
-            return dereferenceIdentity(uri);
-#else
-            return uri;
-#endif
-        }
-
-        internal static T CheckArgumentNull<T>(T value, string parameterName) where T : class
-        {
-            if (null == value)
-            {
-                throw Error.ArgumentNull(parameterName);
-            }
-
-            return value;
-        }
-
-        internal static void CheckArgumentNotEmpty(string value, string parameterName)
-        {
-            CheckArgumentNull(value, parameterName);
-            if (0 == value.Length)
-            {
-                throw Error.Argument(Strings.Util_EmptyString, parameterName);
-            }
-        }
-
-        internal static void CheckArgumentNotEmpty<T>(T[] value, string parameterName) where T : class
-        {
-            CheckArgumentNull(value, parameterName);
-            if (0 == value.Length)
-            {
-                throw Error.Argument(Strings.Util_EmptyArray, parameterName);
-            }
-
-            for (int i = 0; i < value.Length; ++i)
-            {
-                if (Object.ReferenceEquals(value[i], null))
-                {
-                    throw Error.Argument(Strings.Util_NullArrayElement, parameterName);
-                }
-            }
-        }
-
-        internal static MergeOption CheckEnumerationValue(MergeOption value, string parameterName)
-        {
-            switch (value)
-            {
-                case MergeOption.AppendOnly:
-                case MergeOption.OverwriteChanges:
-                case MergeOption.PreserveChanges:
-                case MergeOption.NoTracking:
-                    return value;
-                default:
-                    throw Error.ArgumentOutOfRange(parameterName);
-            }
-        }
-
-#if ASTORIA_LIGHT        
-        internal static HttpStack CheckEnumerationValue(HttpStack value, string parameterName)
-        {
-            switch (value)
-            {
-                case HttpStack.Auto:
-                case HttpStack.ClientHttp:
-                case HttpStack.XmlHttp:
-                    return value;
-                default:
-                    throw Error.ArgumentOutOfRange(parameterName);
-            }
-        }
-#endif
-
-        internal static char[] GetWhitespaceForTracing(int depth)
-        {
-            char[] whitespace = Util.whitespaceForTracing;
-            while (whitespace.Length <= depth)
-            {
-                char[] tmp = new char[2 * whitespace.Length];
-                tmp[0] = '\r';
-                tmp[1] = '\n';
-                for (int i = 2; i < tmp.Length; ++i)
-                {
-                    tmp[i] = ' ';
-                }
-
-                System.Threading.Interlocked.CompareExchange(ref Util.whitespaceForTracing, tmp, whitespace);
-                whitespace = tmp;
-            }
-
-            return whitespace;
-        }
-
-        internal static Uri CreateUri(string value, UriKind kind)
-        {
-            return value == null ? null : new Uri(value, kind);
-        }
-
-        internal static Uri CreateUri(Uri baseUri, Uri requestUri)
-        {
-            Debug.Assert((null != baseUri) && baseUri.IsAbsoluteUri, "baseUri !IsAbsoluteUri");
-            Debug.Assert(String.IsNullOrEmpty(baseUri.Query) && String.IsNullOrEmpty(baseUri.Fragment), "baseUri has query or fragment");
-            Util.CheckArgumentNull(requestUri, "requestUri");
-
-            if (!requestUri.IsAbsoluteUri)
-            {
-                if (baseUri.OriginalString.EndsWith("/", StringComparison.Ordinal))
-                {
-                    if (requestUri.OriginalString.StartsWith("/", StringComparison.Ordinal))
-                    {
-                        requestUri = new Uri(baseUri, Util.CreateUri(requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Relative));
-                    }
-                    else
-                    {
-                        requestUri = new Uri(baseUri, requestUri);
-                    }
-                }
-                else
-                {
-                    requestUri = Util.CreateUri(baseUri.OriginalString + "/" + requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Absolute);
-                }
-            }
-
-            return requestUri;
-        }
-
-        internal static bool ContainsReference<T>(T[] array, T value) where T : class
-        {
-            return (0 <= IndexOfReference<T>(array, value));
-        }
-
-        internal static void Dispose<T>(ref T disposable) where T : class, IDisposable
-        {
-            Dispose(disposable);
-            disposable = null;
-        }
-
-        internal static void Dispose<T>(T disposable) where T : class, IDisposable
-        {
-            if (null != disposable)
-            {
-                disposable.Dispose();
-            }
-        }
-
-        internal static int IndexOfReference<T>(T[] array, T value) where T : class
-        {
-            Debug.Assert(null != array, "null array");
-            for (int i = 0; i < array.Length; ++i)
-            {
-                if (object.ReferenceEquals(array[i], value))
-                {
-                    return i;
-                }
-            }
-
-            return -1;
-        }
-
-        internal static bool DoNotHandleException(Exception ex)
-        {
-            return ((null != ex) &&
-                    ((ex is System.StackOverflowException) ||
-                     (ex is System.OutOfMemoryException) ||
-                     (ex is System.Threading.ThreadAbortException)));
-        }
-
-        internal static bool IsKnownClientExcption(Exception ex)
-        {
-            return (ex is DataServiceClientException) || (ex is DataServiceQueryException) || (ex is DataServiceRequestException);
-        }
-
-        internal static T NullCheck<T>(T value, InternalError errorcode) where T : class
-        {
-            if (Object.ReferenceEquals(value, null))
-            {
-                Error.ThrowInternalError(errorcode);
-            }
-
-            return value;
-        }
-
-        internal static bool AreSame(string value1, string value2)
-        {
-            bool result = (value1 == value2);
-            return result;
-        }
-
-        internal static bool AreSame(XmlReader reader, string localName, string namespaceUri)
-        {
-            Debug.Assert((null != reader) && (null != localName) && (null != namespaceUri), "null");
-            return ((XmlNodeType.Element == reader.NodeType) || (XmlNodeType.EndElement == reader.NodeType)) &&
-                    AreSame(reader.LocalName, localName) && AreSame(reader.NamespaceURI, namespaceUri);
-        }
-
-        internal static bool DoesNullAttributeSayTrue(XmlReader reader)
-        {
-            string attributeValue = reader.GetAttribute(XmlConstants.AtomNullAttributeName, XmlConstants.DataWebMetadataNamespace);
-            return ((null != attributeValue) && XmlConvert.ToBoolean(attributeValue));
-        }
-
-        internal static bool TypeAllowsNull(Type type)
-        {
-            Debug.Assert(type != null, "type != null");
-            return !type.IsValueType || IsNullableType(type);
-        }
-
-        internal static Type GetTypeAllowingNull(Type type)
-        {
-            Debug.Assert(type != null, "type != null");
-            return TypeAllowsNull(type) ? type : typeof(Nullable<>).MakeGenericType(type);
-        }
-
-        internal static void SetNextLinkForCollection(object collection, DataServiceQueryContinuation continuation)
-        {
-            Debug.Assert(collection != null, "collection != null");
-
-            foreach (var property in collection.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public))
-            {
-                if (property.Name != "Continuation" || !property.CanWrite)
-                {
-                    continue;
-                }
-
-                if (typeof(DataServiceQueryContinuation).IsAssignableFrom(property.PropertyType))
-                {
-                    property.SetValue(collection, continuation, null);
-                }
-            }
-        }
-
-        internal static object ActivatorCreateInstance(Type type, params object[] arguments)
-        {
-            Debug.Assert(type != null, "type != null");
-#if ASTORIA_LIGHT
-            int argumentCount = (arguments == null) ? 0 : arguments.Length;
-            ConstructorInfo[] constructors = type.GetConstructors();
-            ConstructorInfo constructor = null;
-            for (int i = 0; i < constructors.Length; i++)
-            {
-                if (constructors[i].GetParameters().Length == argumentCount)
-                {
-                    Debug.Assert( constructor == null, "Make sure that the specific type has only one constructor with specified argument count");
-                    constructor = constructors[i];
-#if !DEBUG
-                    break;
-#endif
-                }
-            }
-
-            if (constructor == null)
-            {
-                throw new MissingMethodException();
-            }
-
-            return ConstructorInvoke(constructor, arguments);
-#else            
-            return Activator.CreateInstance(type, arguments);
-#endif
-        }
-
-        internal static object ConstructorInvoke(ConstructorInfo constructor, object[] arguments)
-        {
-            if (constructor == null)
-            {
-                throw new MissingMethodException();
-            }
-#if ASTORIA_LIGHT
-            int argumentCount = (arguments == null) ? 0 : arguments.Length;
-            ParameterExpression argumentsExpression = Expression.Parameter(typeof(object[]), "arguments");
-            Expression[] argumentExpressions = new Expression[argumentCount];
-            ParameterInfo[] parameters = constructor.GetParameters();
-            for (int i = 0; i < argumentExpressions.Length; i++)
-            {
-                argumentExpressions[i] = Expression.Constant(arguments[i], parameters[i].ParameterType);
-            }
-
-            Expression newExpression = Expression.New(constructor, argumentExpressions);
-            Expression<Func<object[], object>> lambda = Expression.Lambda<Func<object[], object>>(
-                Expression.Convert(newExpression, typeof(object)),
-                argumentsExpression);
-            object result = lambda.Compile()(arguments);
-            return result;
-#else
-            return constructor.Invoke(arguments);
-#endif
-        }
-
-        #region Tracing
-
-        [Conditional("TRACE")]
-        internal static void TraceElement(XmlReader reader, System.IO.TextWriter writer)
-        {
-            Debug.Assert(XmlNodeType.Element == reader.NodeType, "not positioned on Element");
-
-            if (null != writer)
-            {
-                writer.Write(Util.GetWhitespaceForTracing(2 + reader.Depth), 0, 2 + reader.Depth);
-                writer.Write("<{0}", reader.Name);
-
-                if (reader.MoveToFirstAttribute())
-                {
-                    do
-                    {
-                        writer.Write(" {0}=\"{1}\"", reader.Name, reader.Value);
-                    }
-                    while (reader.MoveToNextAttribute());
-
-                    reader.MoveToElement();
-                }
-
-                writer.Write(reader.IsEmptyElement ? " />" : ">");
-            }
-        }
-
-        [Conditional("TRACE")]
-        internal static void TraceEndElement(XmlReader reader, System.IO.TextWriter writer, bool indent)
-        {
-            if (null != writer)
-            {
-                if (indent)
-                {
-                    writer.Write(Util.GetWhitespaceForTracing(2 + reader.Depth), 0, 2 + reader.Depth);
-                }
-
-                writer.Write("</{0}>", reader.Name);
-            }
-        }
-
-        [Conditional("TRACE")]
-        internal static void TraceText(System.IO.TextWriter writer, string value)
-        {
-            if (null != writer)
-            {
-                writer.Write(value);
-            }
-        }
-        
-        #endregion        
-
-        private static bool IsNullableType(Type type)
-        {
-            return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>);
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    #region Namespaces.
+
+    using System.Collections;
+    using System.Diagnostics;
+    using System.Xml;
+    using System.Reflection;
+    using System.Linq.Expressions;
+
+    #endregion Namespaces.
+
+    internal static class Util
+    {
+        internal const string VersionSuffix = ";NetFx";
+
+        internal const string CodeGeneratorToolName = "System.Data.Services.Design";
+
+        internal static readonly Version DataServiceVersionEmpty = new Version(0, 0);
+
+        internal static readonly Version DataServiceVersion1 = new Version(1, 0);
+
+        internal static readonly Version DataServiceVersion2 = new Version(2, 0);
+
+        internal static readonly Version MaxResponseVersion = DataServiceVersion2;
+
+        internal static readonly Version[] SupportedResponseVersions = 
+        { 
+            DataServiceVersion1,
+            DataServiceVersion2
+        };
+
+        internal static readonly char[] ForwardSlash = new char[1] { '/' };
+
+        private static char[] whitespaceForTracing = new char[] { '\r', '\n', ' ', ' ', ' ', ' ', ' ' };
+
+#if DEBUG
+        private static Action<string> DebugFaultInjector = new Action<string>((s) => { });
+
+        private static Func<String, String> referenceIdentity = delegate(String identity)
+        {
+            return identity;
+        };
+
+        private static Func<String, String> dereferenceIdentity = delegate(String identity)
+        {
+            return identity;
+        };
+#endif
+
+        [Conditional("DEBUG")]
+        internal static void DebugInjectFault(string state)
+        {
+#if DEBUG
+            DebugFaultInjector(state);
+#endif
+        }
+
+        internal static String ReferenceIdentity(String uri)
+        {
+#if DEBUG
+            return referenceIdentity(uri);
+#else
+            return uri;
+#endif
+        }
+
+        internal static String DereferenceIdentity(String uri)
+        {
+#if DEBUG
+            return dereferenceIdentity(uri);
+#else
+            return uri;
+#endif
+        }
+
+        internal static T CheckArgumentNull<T>(T value, string parameterName) where T : class
+        {
+            if (null == value)
+            {
+                throw Error.ArgumentNull(parameterName);
+            }
+
+            return value;
+        }
+
+        internal static void CheckArgumentNotEmpty(string value, string parameterName)
+        {
+            CheckArgumentNull(value, parameterName);
+            if (0 == value.Length)
+            {
+                throw Error.Argument(Strings.Util_EmptyString, parameterName);
+            }
+        }
+
+        internal static void CheckArgumentNotEmpty<T>(T[] value, string parameterName) where T : class
+        {
+            CheckArgumentNull(value, parameterName);
+            if (0 == value.Length)
+            {
+                throw Error.Argument(Strings.Util_EmptyArray, parameterName);
+            }
+
+            for (int i = 0; i < value.Length; ++i)
+            {
+                if (Object.ReferenceEquals(value[i], null))
+                {
+                    throw Error.Argument(Strings.Util_NullArrayElement, parameterName);
+                }
+            }
+        }
+
+        internal static MergeOption CheckEnumerationValue(MergeOption value, string parameterName)
+        {
+            switch (value)
+            {
+                case MergeOption.AppendOnly:
+                case MergeOption.OverwriteChanges:
+                case MergeOption.PreserveChanges:
+                case MergeOption.NoTracking:
+                    return value;
+                default:
+                    throw Error.ArgumentOutOfRange(parameterName);
+            }
+        }
+
+#if ASTORIA_LIGHT        
+        internal static HttpStack CheckEnumerationValue(HttpStack value, string parameterName)
+        {
+            switch (value)
+            {
+                case HttpStack.Auto:
+                case HttpStack.ClientHttp:
+                case HttpStack.XmlHttp:
+                    return value;
+                default:
+                    throw Error.ArgumentOutOfRange(parameterName);
+            }
+        }
+#endif
+
+        internal static char[] GetWhitespaceForTracing(int depth)
+        {
+            char[] whitespace = Util.whitespaceForTracing;
+            while (whitespace.Length <= depth)
+            {
+                char[] tmp = new char[2 * whitespace.Length];
+                tmp[0] = '\r';
+                tmp[1] = '\n';
+                for (int i = 2; i < tmp.Length; ++i)
+                {
+                    tmp[i] = ' ';
+                }
+
+                System.Threading.Interlocked.CompareExchange(ref Util.whitespaceForTracing, tmp, whitespace);
+                whitespace = tmp;
+            }
+
+            return whitespace;
+        }
+
+        internal static Uri CreateUri(string value, UriKind kind)
+        {
+            return value == null ? null : new Uri(value, kind);
+        }
+
+        internal static Uri CreateUri(Uri baseUri, Uri requestUri)
+        {
+            Debug.Assert((null != baseUri) && baseUri.IsAbsoluteUri, "baseUri !IsAbsoluteUri");
+            Debug.Assert(String.IsNullOrEmpty(baseUri.Query) && String.IsNullOrEmpty(baseUri.Fragment), "baseUri has query or fragment");
+            Util.CheckArgumentNull(requestUri, "requestUri");
+
+            if (!requestUri.IsAbsoluteUri)
+            {
+                if (baseUri.OriginalString.EndsWith("/", StringComparison.Ordinal))
+                {
+                    if (requestUri.OriginalString.StartsWith("/", StringComparison.Ordinal))
+                    {
+                        requestUri = new Uri(baseUri, Util.CreateUri(requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Relative));
+                    }
+                    else
+                    {
+                        requestUri = new Uri(baseUri, requestUri);
+                    }
+                }
+                else
+                {
+                    requestUri = Util.CreateUri(baseUri.OriginalString + "/" + requestUri.OriginalString.TrimStart(Util.ForwardSlash), UriKind.Absolute);
+                }
+            }
+
+            return requestUri;
+        }
+
+        internal static bool ContainsReference<T>(T[] array, T value) where T : class
+        {
+            return (0 <= IndexOfReference<T>(array, value));
+        }
+
+        internal static void Dispose<T>(ref T disposable) where T : class, IDisposable
+        {
+            Dispose(disposable);
+            disposable = null;
+        }
+
+        internal static void Dispose<T>(T disposable) where T : class, IDisposable
+        {
+            if (null != disposable)
+            {
+                disposable.Dispose();
+            }
+        }
+
+        internal static int IndexOfReference<T>(T[] array, T value) where T : class
+        {
+            Debug.Assert(null != array, "null array");
+            for (int i = 0; i < array.Length; ++i)
+            {
+                if (object.ReferenceEquals(array[i], value))
+                {
+                    return i;
+                }
+            }
+
+            return -1;
+        }
+
+        internal static bool DoNotHandleException(Exception ex)
+        {
+            return ((null != ex) &&
+                    ((ex is System.StackOverflowException) ||
+                     (ex is System.OutOfMemoryException) ||
+                     (ex is System.Threading.ThreadAbortException)));
+        }
+
+        internal static bool IsKnownClientExcption(Exception ex)
+        {
+            return (ex is DataServiceClientException) || (ex is DataServiceQueryException) || (ex is DataServiceRequestException);
+        }
+
+        internal static T NullCheck<T>(T value, InternalError errorcode) where T : class
+        {
+            if (Object.ReferenceEquals(value, null))
+            {
+                Error.ThrowInternalError(errorcode);
+            }
+
+            return value;
+        }
+
+        internal static bool AreSame(string value1, string value2)
+        {
+            bool result = (value1 == value2);
+            return result;
+        }
+
+        internal static bool AreSame(XmlReader reader, string localName, string namespaceUri)
+        {
+            Debug.Assert((null != reader) && (null != localName) && (null != namespaceUri), "null");
+            return ((XmlNodeType.Element == reader.NodeType) || (XmlNodeType.EndElement == reader.NodeType)) &&
+                    AreSame(reader.LocalName, localName) && AreSame(reader.NamespaceURI, namespaceUri);
+        }
+
+        internal static bool DoesNullAttributeSayTrue(XmlReader reader)
+        {
+            string attributeValue = reader.GetAttribute(XmlConstants.AtomNullAttributeName, XmlConstants.DataWebMetadataNamespace);
+            return ((null != attributeValue) && XmlConvert.ToBoolean(attributeValue));
+        }
+
+        internal static bool TypeAllowsNull(Type type)
+        {
+            Debug.Assert(type != null, "type != null");
+            return !type.IsValueType || IsNullableType(type);
+        }
+
+        internal static Type GetTypeAllowingNull(Type type)
+        {
+            Debug.Assert(type != null, "type != null");
+            return TypeAllowsNull(type) ? type : typeof(Nullable<>).MakeGenericType(type);
+        }
+
+        internal static void SetNextLinkForCollection(object collection, DataServiceQueryContinuation continuation)
+        {
+            Debug.Assert(collection != null, "collection != null");
+
+            foreach (var property in collection.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public))
+            {
+                if (property.Name != "Continuation" || !property.CanWrite)
+                {
+                    continue;
+                }
+
+                if (typeof(DataServiceQueryContinuation).IsAssignableFrom(property.PropertyType))
+                {
+                    property.SetValue(collection, continuation, null);
+                }
+            }
+        }
+
+        internal static object ActivatorCreateInstance(Type type, params object[] arguments)
+        {
+            Debug.Assert(type != null, "type != null");
+#if ASTORIA_LIGHT
+            int argumentCount = (arguments == null) ? 0 : arguments.Length;
+            ConstructorInfo[] constructors = type.GetConstructors();
+            ConstructorInfo constructor = null;
+            for (int i = 0; i < constructors.Length; i++)
+            {
+                if (constructors[i].GetParameters().Length == argumentCount)
+                {
+                    Debug.Assert( constructor == null, "Make sure that the specific type has only one constructor with specified argument count");
+                    constructor = constructors[i];
+#if !DEBUG
+                    break;
+#endif
+                }
+            }
+
+            if (constructor == null)
+            {
+                throw new MissingMethodException();
+            }
+
+            return ConstructorInvoke(constructor, arguments);
+#else            
+            return Activator.CreateInstance(type, arguments);
+#endif
+        }
+
+        internal static object ConstructorInvoke(ConstructorInfo constructor, object[] arguments)
+        {
+            if (constructor == null)
+            {
+                throw new MissingMethodException();
+            }
+#if ASTORIA_LIGHT
+            int argumentCount = (arguments == null) ? 0 : arguments.Length;
+            ParameterExpression argumentsExpression = Expression.Parameter(typeof(object[]), "arguments");
+            Expression[] argumentExpressions = new Expression[argumentCount];
+            ParameterInfo[] parameters = constructor.GetParameters();
+            for (int i = 0; i < argumentExpressions.Length; i++)
+            {
+                argumentExpressions[i] = Expression.Constant(arguments[i], parameters[i].ParameterType);
+            }
+
+            Expression newExpression = Expression.New(constructor, argumentExpressions);
+            Expression<Func<object[], object>> lambda = Expression.Lambda<Func<object[], object>>(
+                Expression.Convert(newExpression, typeof(object)),
+                argumentsExpression);
+            object result = lambda.Compile()(arguments);
+            return result;
+#else
+            return constructor.Invoke(arguments);
+#endif
+        }
+
+        #region Tracing
+
+        [Conditional("TRACE")]
+        internal static void TraceElement(XmlReader reader, System.IO.TextWriter writer)
+        {
+            Debug.Assert(XmlNodeType.Element == reader.NodeType, "not positioned on Element");
+
+            if (null != writer)
+            {
+                writer.Write(Util.GetWhitespaceForTracing(2 + reader.Depth), 0, 2 + reader.Depth);
+                writer.Write("<{0}", reader.Name);
+
+                if (reader.MoveToFirstAttribute())
+                {
+                    do
+                    {
+                        writer.Write(" {0}=\"{1}\"", reader.Name, reader.Value);
+                    }
+                    while (reader.MoveToNextAttribute());
+
+                    reader.MoveToElement();
+                }
+
+                writer.Write(reader.IsEmptyElement ? " />" : ">");
+            }
+        }
+
+        [Conditional("TRACE")]
+        internal static void TraceEndElement(XmlReader reader, System.IO.TextWriter writer, bool indent)
+        {
+            if (null != writer)
+            {
+                if (indent)
+                {
+                    writer.Write(Util.GetWhitespaceForTracing(2 + reader.Depth), 0, 2 + reader.Depth);
+                }
+
+                writer.Write("</{0}>", reader.Name);
+            }
+        }
+
+        [Conditional("TRACE")]
+        internal static void TraceText(System.IO.TextWriter writer, string value)
+        {
+            if (null != writer)
+            {
+                writer.Write(value);
+            }
+        }
+        
+        #endregion        
+
+        private static bool IsNullableType(Type type)
+        {
+            return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/WebUtil.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/WebUtil.cs
@@ -1,157 +1,157 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.IO;
-    using System.Reflection;
-    using System.Runtime.CompilerServices;
-#if !ASTORIA_LIGHT    
-    using System.Net;
-#else
-    using System.Data.Services.Http;
-#endif
-
-    internal static partial class WebUtil
-    {
-        private static bool? dataServiceCollectionAvailable = null;
-
-        private static bool DataServiceCollectionAvailable
-        {
-            get
-            {
-                if (dataServiceCollectionAvailable == null)
-                {
-                    try
-                    {
-                        dataServiceCollectionAvailable = GetDataServiceCollectionOfTType() != null;
-                    }
-                    catch (FileNotFoundException)
-                    {
-                        dataServiceCollectionAvailable = false;
-                    }
-                }
-
-                Debug.Assert(dataServiceCollectionAvailable != null, "observableCollectionOfTAvailable must not be null here.");
-
-                return (bool)dataServiceCollectionAvailable;
-            }
-        }
-
-        internal static long CopyStream(Stream input, Stream output, ref byte[] refBuffer)
-        {
-            Debug.Assert(null != input, "null input stream");
-            Debug.Assert(null != output, "null output stream");
-
-            long total = 0;
-            byte[] buffer = refBuffer;
-            if (null == buffer)
-            {
-                refBuffer = buffer = new byte[1000];
-            }
-
-            int count = 0;
-            while (input.CanRead && (0 < (count = input.Read(buffer, 0, buffer.Length))))
-            {
-                output.Write(buffer, 0, count);
-                total += count;
-            }
-
-            return total;
-        }
-
-        internal static void GetHttpWebResponse(InvalidOperationException exception, ref HttpWebResponse response)
-        {
-            if (null == response)
-            {
-                WebException webexception = (exception as WebException);
-                if (null != webexception)
-                {
-                    response = (HttpWebResponse)webexception.Response;
-                }
-            }
-        }
-
-        internal static bool SuccessStatusCode(HttpStatusCode status)
-        {
-            return (200 <= (int)status && (int)status < 300);
-        }
-
-        internal static Dictionary<string, string> WrapResponseHeaders(HttpWebResponse response)
-        {
-            Dictionary<string, string> headers = new Dictionary<string, string>(EqualityComparer<string>.Default);
-            if (null != response)
-            {
-                foreach (string name in response.Headers.AllKeys)
-                {
-                    headers.Add(name, response.Headers[name]);
-                }
-            }
-
-            return headers;
-        }
-
-        internal static void ApplyHeadersToRequest(Dictionary<string, string> headers, HttpWebRequest request, bool ignoreAcceptHeader)
-        {
-            foreach (KeyValuePair<string, string> header in headers)
-            {
-                if (string.Equals(header.Key, XmlConstants.HttpRequestAccept, StringComparison.Ordinal))
-                {
-                    if (!ignoreAcceptHeader)
-                    {
-                        request.Accept = header.Value;
-                    }
-                }
-                else if (string.Equals(header.Key, XmlConstants.HttpContentType, StringComparison.Ordinal))
-                {
-                    request.ContentType = header.Value;
-                }
-                else
-                {
-                    request.Headers[header.Key] = header.Value;
-                }
-            }
-        }
-
-        internal static bool IsDataServiceCollectionType(Type t)
-        {
-            if (DataServiceCollectionAvailable)
-            {
-                return t == GetDataServiceCollectionOfTType();
-            }
-
-            return false;
-        }
-
-        internal static Type GetDataServiceCollectionOfT(params Type[] typeArguments)
-        {
-            if (DataServiceCollectionAvailable)
-            {
-                Debug.Assert(
-                    GetDataServiceCollectionOfTType() != null, 
-                    "DataServiceCollection is available so GetDataServiceCollectionOfTType() must not return null.");
-                
-                return GetDataServiceCollectionOfTType().MakeGenericType(typeArguments);
-            }
-
-            return null;
-        }
-
-        [MethodImpl(MethodImplOptions.NoInlining)]
-        private static Type GetDataServiceCollectionOfTType()
-        {
-            return typeof(DataServiceCollection<>);
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.IO;
+    using System.Reflection;
+    using System.Runtime.CompilerServices;
+#if !ASTORIA_LIGHT    
+    using System.Net;
+#else
+    using System.Data.Services.Http;
+#endif
+
+    internal static partial class WebUtil
+    {
+        private static bool? dataServiceCollectionAvailable = null;
+
+        private static bool DataServiceCollectionAvailable
+        {
+            get
+            {
+                if (dataServiceCollectionAvailable == null)
+                {
+                    try
+                    {
+                        dataServiceCollectionAvailable = GetDataServiceCollectionOfTType() != null;
+                    }
+                    catch (FileNotFoundException)
+                    {
+                        dataServiceCollectionAvailable = false;
+                    }
+                }
+
+                Debug.Assert(dataServiceCollectionAvailable != null, "observableCollectionOfTAvailable must not be null here.");
+
+                return (bool)dataServiceCollectionAvailable;
+            }
+        }
+
+        internal static long CopyStream(Stream input, Stream output, ref byte[] refBuffer)
+        {
+            Debug.Assert(null != input, "null input stream");
+            Debug.Assert(null != output, "null output stream");
+
+            long total = 0;
+            byte[] buffer = refBuffer;
+            if (null == buffer)
+            {
+                refBuffer = buffer = new byte[1000];
+            }
+
+            int count = 0;
+            while (input.CanRead && (0 < (count = input.Read(buffer, 0, buffer.Length))))
+            {
+                output.Write(buffer, 0, count);
+                total += count;
+            }
+
+            return total;
+        }
+
+        internal static void GetHttpWebResponse(InvalidOperationException exception, ref HttpWebResponse response)
+        {
+            if (null == response)
+            {
+                WebException webexception = (exception as WebException);
+                if (null != webexception)
+                {
+                    response = (HttpWebResponse)webexception.Response;
+                }
+            }
+        }
+
+        internal static bool SuccessStatusCode(HttpStatusCode status)
+        {
+            return (200 <= (int)status && (int)status < 300);
+        }
+
+        internal static Dictionary<string, string> WrapResponseHeaders(HttpWebResponse response)
+        {
+            Dictionary<string, string> headers = new Dictionary<string, string>(EqualityComparer<string>.Default);
+            if (null != response)
+            {
+                foreach (string name in response.Headers.AllKeys)
+                {
+                    headers.Add(name, response.Headers[name]);
+                }
+            }
+
+            return headers;
+        }
+
+        internal static void ApplyHeadersToRequest(Dictionary<string, string> headers, HttpWebRequest request, bool ignoreAcceptHeader)
+        {
+            foreach (KeyValuePair<string, string> header in headers)
+            {
+                if (string.Equals(header.Key, XmlConstants.HttpRequestAccept, StringComparison.Ordinal))
+                {
+                    if (!ignoreAcceptHeader)
+                    {
+                        request.Accept = header.Value;
+                    }
+                }
+                else if (string.Equals(header.Key, XmlConstants.HttpContentType, StringComparison.Ordinal))
+                {
+                    request.ContentType = header.Value;
+                }
+                else
+                {
+                    request.Headers[header.Key] = header.Value;
+                }
+            }
+        }
+
+        internal static bool IsDataServiceCollectionType(Type t)
+        {
+            if (DataServiceCollectionAvailable)
+            {
+                return t == GetDataServiceCollectionOfTType();
+            }
+
+            return false;
+        }
+
+        internal static Type GetDataServiceCollectionOfT(params Type[] typeArguments)
+        {
+            if (DataServiceCollectionAvailable)
+            {
+                Debug.Assert(
+                    GetDataServiceCollectionOfTType() != null, 
+                    "DataServiceCollection is available so GetDataServiceCollectionOfTType() must not return null.");
+                
+                return GetDataServiceCollectionOfTType().MakeGenericType(typeArguments);
+            }
+
+            return null;
+        }
+
+        [MethodImpl(MethodImplOptions.NoInlining)]
+        private static Type GetDataServiceCollectionOfTType()
+        {
+            return typeof(DataServiceCollection<>);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Xml/XmlAtomErrorReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Xml/XmlAtomErrorReader.cs
@@ -1,122 +1,122 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client.Xml
-{
-    #region Namespaces.
-
-    using System.Diagnostics;
-    using System.Xml;
-
-    #endregion Namespaces.
-
-    [DebuggerDisplay("XmlAtomErrorReader {NodeType} {Name} {Value}")]
-    internal class XmlAtomErrorReader : XmlWrappingReader
-    {
-        internal XmlAtomErrorReader(XmlReader baseReader) : base(baseReader)
-        {
-            Debug.Assert(baseReader != null, "baseReader != null");
-            this.Reader = baseReader;
-        }
-
-        #region Methods.
-
-        public override bool Read()
-        {
-            bool result = base.Read();
-
-            if (this.NodeType == XmlNodeType.Element &&
-                Util.AreSame(this.Reader, XmlConstants.XmlErrorElementName, XmlConstants.DataWebMetadataNamespace))
-            {
-                string message = ReadErrorMessage(this.Reader);
-
-                throw new DataServiceClientException(Strings.Deserialize_ServerException(message));
-            }
-
-            return result;
-        }
-
-        internal static string ReadElementString(XmlReader reader, bool checkNullAttribute)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(XmlNodeType.Element == reader.NodeType, "not positioned on Element");
-
-            string result = null;
-            bool empty = checkNullAttribute && !Util.DoesNullAttributeSayTrue(reader);
-
-            if (reader.IsEmptyElement)
-            {
-                return (empty ? String.Empty : null);
-            }
-
-            while (reader.Read())
-            {
-                switch (reader.NodeType)
-                {
-                    case XmlNodeType.EndElement:
-                        return result ?? (empty ? String.Empty : null);
-                    case XmlNodeType.CDATA:
-                    case XmlNodeType.Text:
-                    case XmlNodeType.SignificantWhitespace:
-                        if (null != result)
-                        {
-                            throw Error.InvalidOperation(Strings.Deserialize_MixedTextWithComment);
-                        }
-
-                        result = reader.Value;
-                        break;
-                    case XmlNodeType.Comment:
-                    case XmlNodeType.Whitespace:
-                        break;
-                    case XmlNodeType.Element:
-                    default:
-                        throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
-                }
-            }
-
-            throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
-        }
-
-        private static string ReadErrorMessage(XmlReader reader)
-        {
-            Debug.Assert(reader != null, "reader != null");
-            Debug.Assert(reader.NodeType == XmlNodeType.Element, "reader.NodeType == XmlNodeType.Element");
-            Debug.Assert(reader.LocalName == XmlConstants.XmlErrorElementName, "reader.LocalName == XmlConstants.XmlErrorElementName");
-
-            int depth = 1;
-            while (depth > 0 && reader.Read())
-            {
-                if (reader.NodeType == XmlNodeType.Element)
-                {
-                    if (!reader.IsEmptyElement)
-                    {
-                        depth++;
-                    }
-
-                    if (depth == 2 &&
-                        Util.AreSame(reader, XmlConstants.XmlErrorMessageElementName, XmlConstants.DataWebMetadataNamespace))
-                    {
-                        return ReadElementString(reader, false);
-                    }
-                }
-                else if (reader.NodeType == XmlNodeType.EndElement)
-                {
-                    depth--;
-                }
-            }
-
-            return String.Empty;
-        }
-
-        #endregion Methods.
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client.Xml
+{
+    #region Namespaces.
+
+    using System.Diagnostics;
+    using System.Xml;
+
+    #endregion Namespaces.
+
+    [DebuggerDisplay("XmlAtomErrorReader {NodeType} {Name} {Value}")]
+    internal class XmlAtomErrorReader : XmlWrappingReader
+    {
+        internal XmlAtomErrorReader(XmlReader baseReader) : base(baseReader)
+        {
+            Debug.Assert(baseReader != null, "baseReader != null");
+            this.Reader = baseReader;
+        }
+
+        #region Methods.
+
+        public override bool Read()
+        {
+            bool result = base.Read();
+
+            if (this.NodeType == XmlNodeType.Element &&
+                Util.AreSame(this.Reader, XmlConstants.XmlErrorElementName, XmlConstants.DataWebMetadataNamespace))
+            {
+                string message = ReadErrorMessage(this.Reader);
+
+                throw new DataServiceClientException(Strings.Deserialize_ServerException(message));
+            }
+
+            return result;
+        }
+
+        internal static string ReadElementString(XmlReader reader, bool checkNullAttribute)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(XmlNodeType.Element == reader.NodeType, "not positioned on Element");
+
+            string result = null;
+            bool empty = checkNullAttribute && !Util.DoesNullAttributeSayTrue(reader);
+
+            if (reader.IsEmptyElement)
+            {
+                return (empty ? String.Empty : null);
+            }
+
+            while (reader.Read())
+            {
+                switch (reader.NodeType)
+                {
+                    case XmlNodeType.EndElement:
+                        return result ?? (empty ? String.Empty : null);
+                    case XmlNodeType.CDATA:
+                    case XmlNodeType.Text:
+                    case XmlNodeType.SignificantWhitespace:
+                        if (null != result)
+                        {
+                            throw Error.InvalidOperation(Strings.Deserialize_MixedTextWithComment);
+                        }
+
+                        result = reader.Value;
+                        break;
+                    case XmlNodeType.Comment:
+                    case XmlNodeType.Whitespace:
+                        break;
+                    case XmlNodeType.Element:
+                    default:
+                        throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
+                }
+            }
+
+            throw Error.InvalidOperation(Strings.Deserialize_ExpectingSimpleValue);
+        }
+
+        private static string ReadErrorMessage(XmlReader reader)
+        {
+            Debug.Assert(reader != null, "reader != null");
+            Debug.Assert(reader.NodeType == XmlNodeType.Element, "reader.NodeType == XmlNodeType.Element");
+            Debug.Assert(reader.LocalName == XmlConstants.XmlErrorElementName, "reader.LocalName == XmlConstants.XmlErrorElementName");
+
+            int depth = 1;
+            while (depth > 0 && reader.Read())
+            {
+                if (reader.NodeType == XmlNodeType.Element)
+                {
+                    if (!reader.IsEmptyElement)
+                    {
+                        depth++;
+                    }
+
+                    if (depth == 2 &&
+                        Util.AreSame(reader, XmlConstants.XmlErrorMessageElementName, XmlConstants.DataWebMetadataNamespace))
+                    {
+                        return ReadElementString(reader, false);
+                    }
+                }
+                else if (reader.NodeType == XmlNodeType.EndElement)
+                {
+                    depth--;
+                }
+            }
+
+            return String.Empty;
+        }
+
+        #endregion Methods.
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Xml/XmlWrappingReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/Xml/XmlWrappingReader.cs
@@ -1,465 +1,465 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client.Xml
-{
-    #region Namespaces.
-
-    using System.Xml;
-    using System.Xml.Schema;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-
-    #endregion Namespaces.
-
-    internal class XmlWrappingReader : XmlReader, IXmlLineInfo
-    {
-        #region Private fields.
-
-        private XmlReader reader;
-
-        private IXmlLineInfo readerAsIXmlLineInfo;
-
-        private Stack<XmlBaseState> xmlBaseStack;
-
-        private string previousReaderBaseUri;
-
-        #endregion Private fields.
-
-        internal XmlWrappingReader(XmlReader baseReader)
-        {
-            this.Reader = baseReader;
-        }
-
-        #region Properties.
-
-        public override int AttributeCount
-        {
-            get
-            {
-                return this.reader.AttributeCount;
-            }
-        }
-
-        public override string BaseURI
-        {
-            get
-            {
-                if (this.xmlBaseStack != null && this.xmlBaseStack.Count > 0)
-                {
-                    return this.xmlBaseStack.Peek().BaseUri.AbsoluteUri;
-                }
-                else if (!String.IsNullOrEmpty(this.previousReaderBaseUri))
-                {
-                    return this.previousReaderBaseUri;
-                }
-
-                return this.reader.BaseURI;
-            }
-        }
-
-        public override bool CanResolveEntity
-        {
-            get
-            {
-                return this.reader.CanResolveEntity;
-            }
-        }
-
-        public override int Depth
-        {
-            get
-            {
-                return this.reader.Depth;
-            }
-        }
-
-
-        public override bool EOF
-        {
-            get
-            {
-                return this.reader.EOF;
-            }
-        }
-
-        public override bool HasAttributes
-        {
-            get
-            {
-                return this.reader.HasAttributes;
-            }
-        }
-
-        public override bool HasValue
-        {
-            get
-            {
-                return this.reader.HasValue;
-            }
-        }
-
-        public override bool IsDefault
-        {
-            get
-            {
-                return this.reader.IsDefault;
-            }
-        }
-
-        public override bool IsEmptyElement
-        {
-            get
-            {
-                return this.reader.IsEmptyElement;
-            }
-        }
-
-        public virtual int LineNumber
-        {
-            get
-            {
-                if (this.readerAsIXmlLineInfo != null)
-                {
-                    return this.readerAsIXmlLineInfo.LineNumber;
-                }
-
-                return 0;
-            }
-        }
-
-        public virtual int LinePosition
-        {
-            get
-            {
-                if (this.readerAsIXmlLineInfo != null)
-                {
-                    return this.readerAsIXmlLineInfo.LinePosition;
-                }
-
-                return 0;
-            }
-        }
-
-        public override string LocalName
-        {
-            get
-            {
-                return this.reader.LocalName;
-            }
-        }
-
-        public override string Name
-        {
-            get
-            {
-                return this.reader.Name;
-            }
-        }
-
-        public override string NamespaceURI
-        {
-            get
-            {
-                return this.reader.NamespaceURI;
-            }
-        }
-
-        public override XmlNameTable NameTable
-        {
-            get
-            {
-                return this.reader.NameTable;
-            }
-        }
-
-        public override XmlNodeType NodeType
-        {
-            get
-            {
-                return this.reader.NodeType;
-            }
-        }
-
-        public override string Prefix
-        {
-            get
-            {
-                return this.reader.Prefix;
-            }
-        }
-
-#if !ASTORIA_LIGHT
-
-        public override char QuoteChar
-        {
-            get
-            {
-                return this.reader.QuoteChar;
-            }
-        }
-
-#endif
-
-        public override ReadState ReadState
-        {
-            get
-            {
-                return this.reader.ReadState;
-            }
-        }
-
-#if !ASTORIA_LIGHT
-
-        public override IXmlSchemaInfo SchemaInfo
-        {
-            get
-            {
-                return this.reader.SchemaInfo;
-            }
-        }
-#endif
-
-        public override XmlReaderSettings Settings
-        {
-            get
-            {
-                return this.reader.Settings;
-            }
-        }
-
-        public override string Value
-        {
-            get
-            {
-                return this.reader.Value;
-            }
-        }
-
-        public override Type ValueType
-        {
-            get
-            {
-                return this.reader.ValueType;
-            }
-        }
-
-        public override string XmlLang
-        {
-            get
-            {
-                return this.reader.XmlLang;
-            }
-        }
-
-        public override XmlSpace XmlSpace
-        {
-            get
-            {
-                return this.reader.XmlSpace;
-            }
-        }
-
-        protected XmlReader Reader
-        {
-            get
-            {
-                return this.reader;
-            }
-
-            set
-            {
-                this.reader = value;
-                this.readerAsIXmlLineInfo = value as IXmlLineInfo;
-            }
-        }
-
-        #endregion Properties.
-
-        #region Methods.
-
-        public override void Close()
-        {
-            this.reader.Close();
-        }
-
-        public override string GetAttribute(int i)
-        {
-            return this.reader.GetAttribute(i);
-        }
-
-        public override string GetAttribute(string name)
-        {
-            return this.reader.GetAttribute(name);
-        }
-
-        public override string GetAttribute(string name, string namespaceURI)
-        {
-            return this.reader.GetAttribute(name, namespaceURI);
-        }
-
-        public virtual bool HasLineInfo()
-        {
-            return ((this.readerAsIXmlLineInfo != null) && this.readerAsIXmlLineInfo.HasLineInfo());
-        }
-
-        public override string LookupNamespace(string prefix)
-        {
-            return this.reader.LookupNamespace(prefix);
-        }
-
-        public override void MoveToAttribute(int i)
-        {
-            this.reader.MoveToAttribute(i);
-        }
-
-        public override bool MoveToAttribute(string name)
-        {
-            return this.reader.MoveToAttribute(name);
-        }
-
-        public override bool MoveToAttribute(string name, string ns)
-        {
-            return this.reader.MoveToAttribute(name, ns);
-        }
-
-        public override bool MoveToElement()
-        {
-            return this.reader.MoveToElement();
-        }
-
-        public override bool MoveToFirstAttribute()
-        {
-            return this.reader.MoveToFirstAttribute();
-        }
-
-        public override bool MoveToNextAttribute()
-        {
-            return this.reader.MoveToNextAttribute();
-        }
-
-        public override bool Read()
-        {
-            if (this.reader.NodeType == XmlNodeType.EndElement)
-            {
-                this.PopXmlBase();
-            }
-            else
-            {
-                this.reader.MoveToElement();
-                if (this.reader.IsEmptyElement)
-                {
-                    this.PopXmlBase();
-                }
-            }
-
-            bool result = this.reader.Read();
-            if (result) 
-            {
-                if (this.reader.NodeType == XmlNodeType.Element &&
-                    this.reader.HasAttributes) 
-                {
-                    string baseAttribute = this.reader.GetAttribute(XmlConstants.XmlBaseAttributeNameWithPrefix);
-                    if (String.IsNullOrEmpty(baseAttribute))
-                    {
-                        return result;
-                    }
-
-                    Uri newBaseUri = null;
-                    newBaseUri = Util.CreateUri(baseAttribute, UriKind.RelativeOrAbsolute);
-
-                    if (this.xmlBaseStack == null)
-                    {
-                        this.xmlBaseStack = new Stack<XmlBaseState>();
-                    }
-
-                    if (this.xmlBaseStack.Count > 0)
-                    {
-                        newBaseUri = Util.CreateUri(this.xmlBaseStack.Peek().BaseUri, newBaseUri);
-                    }
-
-                    this.xmlBaseStack.Push(new XmlBaseState(newBaseUri, this.reader.Depth));
-                }
-            }
-
-            return result;
-        }
-
-        public override bool ReadAttributeValue()
-        {
-            return this.reader.ReadAttributeValue();
-        }
-
-        public override void ResolveEntity()
-        {
-            this.reader.ResolveEntity();
-        }
-
-        public override void Skip()
-        {
-            this.reader.Skip();
-        }
-
-        internal static XmlWrappingReader CreateReader(string currentBaseUri, XmlReader newReader)
-        {
-            Debug.Assert(!(newReader is XmlWrappingReader), "The new reader must not be a xmlWrappingReader");
-            XmlWrappingReader reader = new XmlWrappingReader(newReader);
-            reader.previousReaderBaseUri = currentBaseUri;
-            return reader;
-        }
-
-        protected override void Dispose(bool disposing)
-        {
-            if (this.reader != null)
-            {
-                ((IDisposable)this.reader).Dispose();
-            }
-
-            base.Dispose(disposing);
-        }
-
-        private void PopXmlBase()
-        {
-            if (this.xmlBaseStack != null && this.xmlBaseStack.Count > 0 && this.reader.Depth == this.xmlBaseStack.Peek().Depth)
-            {
-                this.xmlBaseStack.Pop();
-            }
-        }
-
-        #endregion Methods.
-
-        #region Private Class
-
-        private class XmlBaseState
-        {
-            internal XmlBaseState(Uri baseUri, int depth)
-            {
-                this.BaseUri = baseUri;
-                this.Depth = depth;
-            }
-
-            public Uri BaseUri
-            {
-                get;
-                private set;
-            }
-
-            public int Depth
-            {
-                get;
-                private set;
-            }
-        }
-
-        #endregion    
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client.Xml
+{
+    #region Namespaces.
+
+    using System.Xml;
+    using System.Xml.Schema;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+
+    #endregion Namespaces.
+
+    internal class XmlWrappingReader : XmlReader, IXmlLineInfo
+    {
+        #region Private fields.
+
+        private XmlReader reader;
+
+        private IXmlLineInfo readerAsIXmlLineInfo;
+
+        private Stack<XmlBaseState> xmlBaseStack;
+
+        private string previousReaderBaseUri;
+
+        #endregion Private fields.
+
+        internal XmlWrappingReader(XmlReader baseReader)
+        {
+            this.Reader = baseReader;
+        }
+
+        #region Properties.
+
+        public override int AttributeCount
+        {
+            get
+            {
+                return this.reader.AttributeCount;
+            }
+        }
+
+        public override string BaseURI
+        {
+            get
+            {
+                if (this.xmlBaseStack != null && this.xmlBaseStack.Count > 0)
+                {
+                    return this.xmlBaseStack.Peek().BaseUri.AbsoluteUri;
+                }
+                else if (!String.IsNullOrEmpty(this.previousReaderBaseUri))
+                {
+                    return this.previousReaderBaseUri;
+                }
+
+                return this.reader.BaseURI;
+            }
+        }
+
+        public override bool CanResolveEntity
+        {
+            get
+            {
+                return this.reader.CanResolveEntity;
+            }
+        }
+
+        public override int Depth
+        {
+            get
+            {
+                return this.reader.Depth;
+            }
+        }
+
+
+        public override bool EOF
+        {
+            get
+            {
+                return this.reader.EOF;
+            }
+        }
+
+        public override bool HasAttributes
+        {
+            get
+            {
+                return this.reader.HasAttributes;
+            }
+        }
+
+        public override bool HasValue
+        {
+            get
+            {
+                return this.reader.HasValue;
+            }
+        }
+
+        public override bool IsDefault
+        {
+            get
+            {
+                return this.reader.IsDefault;
+            }
+        }
+
+        public override bool IsEmptyElement
+        {
+            get
+            {
+                return this.reader.IsEmptyElement;
+            }
+        }
+
+        public virtual int LineNumber
+        {
+            get
+            {
+                if (this.readerAsIXmlLineInfo != null)
+                {
+                    return this.readerAsIXmlLineInfo.LineNumber;
+                }
+
+                return 0;
+            }
+        }
+
+        public virtual int LinePosition
+        {
+            get
+            {
+                if (this.readerAsIXmlLineInfo != null)
+                {
+                    return this.readerAsIXmlLineInfo.LinePosition;
+                }
+
+                return 0;
+            }
+        }
+
+        public override string LocalName
+        {
+            get
+            {
+                return this.reader.LocalName;
+            }
+        }
+
+        public override string Name
+        {
+            get
+            {
+                return this.reader.Name;
+            }
+        }
+
+        public override string NamespaceURI
+        {
+            get
+            {
+                return this.reader.NamespaceURI;
+            }
+        }
+
+        public override XmlNameTable NameTable
+        {
+            get
+            {
+                return this.reader.NameTable;
+            }
+        }
+
+        public override XmlNodeType NodeType
+        {
+            get
+            {
+                return this.reader.NodeType;
+            }
+        }
+
+        public override string Prefix
+        {
+            get
+            {
+                return this.reader.Prefix;
+            }
+        }
+
+#if !ASTORIA_LIGHT
+
+        public override char QuoteChar
+        {
+            get
+            {
+                return this.reader.QuoteChar;
+            }
+        }
+
+#endif
+
+        public override ReadState ReadState
+        {
+            get
+            {
+                return this.reader.ReadState;
+            }
+        }
+
+#if !ASTORIA_LIGHT
+
+        public override IXmlSchemaInfo SchemaInfo
+        {
+            get
+            {
+                return this.reader.SchemaInfo;
+            }
+        }
+#endif
+
+        public override XmlReaderSettings Settings
+        {
+            get
+            {
+                return this.reader.Settings;
+            }
+        }
+
+        public override string Value
+        {
+            get
+            {
+                return this.reader.Value;
+            }
+        }
+
+        public override Type ValueType
+        {
+            get
+            {
+                return this.reader.ValueType;
+            }
+        }
+
+        public override string XmlLang
+        {
+            get
+            {
+                return this.reader.XmlLang;
+            }
+        }
+
+        public override XmlSpace XmlSpace
+        {
+            get
+            {
+                return this.reader.XmlSpace;
+            }
+        }
+
+        protected XmlReader Reader
+        {
+            get
+            {
+                return this.reader;
+            }
+
+            set
+            {
+                this.reader = value;
+                this.readerAsIXmlLineInfo = value as IXmlLineInfo;
+            }
+        }
+
+        #endregion Properties.
+
+        #region Methods.
+
+        public override void Close()
+        {
+            this.reader.Close();
+        }
+
+        public override string GetAttribute(int i)
+        {
+            return this.reader.GetAttribute(i);
+        }
+
+        public override string GetAttribute(string name)
+        {
+            return this.reader.GetAttribute(name);
+        }
+
+        public override string GetAttribute(string name, string namespaceURI)
+        {
+            return this.reader.GetAttribute(name, namespaceURI);
+        }
+
+        public virtual bool HasLineInfo()
+        {
+            return ((this.readerAsIXmlLineInfo != null) && this.readerAsIXmlLineInfo.HasLineInfo());
+        }
+
+        public override string LookupNamespace(string prefix)
+        {
+            return this.reader.LookupNamespace(prefix);
+        }
+
+        public override void MoveToAttribute(int i)
+        {
+            this.reader.MoveToAttribute(i);
+        }
+
+        public override bool MoveToAttribute(string name)
+        {
+            return this.reader.MoveToAttribute(name);
+        }
+
+        public override bool MoveToAttribute(string name, string ns)
+        {
+            return this.reader.MoveToAttribute(name, ns);
+        }
+
+        public override bool MoveToElement()
+        {
+            return this.reader.MoveToElement();
+        }
+
+        public override bool MoveToFirstAttribute()
+        {
+            return this.reader.MoveToFirstAttribute();
+        }
+
+        public override bool MoveToNextAttribute()
+        {
+            return this.reader.MoveToNextAttribute();
+        }
+
+        public override bool Read()
+        {
+            if (this.reader.NodeType == XmlNodeType.EndElement)
+            {
+                this.PopXmlBase();
+            }
+            else
+            {
+                this.reader.MoveToElement();
+                if (this.reader.IsEmptyElement)
+                {
+                    this.PopXmlBase();
+                }
+            }
+
+            bool result = this.reader.Read();
+            if (result) 
+            {
+                if (this.reader.NodeType == XmlNodeType.Element &&
+                    this.reader.HasAttributes) 
+                {
+                    string baseAttribute = this.reader.GetAttribute(XmlConstants.XmlBaseAttributeNameWithPrefix);
+                    if (String.IsNullOrEmpty(baseAttribute))
+                    {
+                        return result;
+                    }
+
+                    Uri newBaseUri = null;
+                    newBaseUri = Util.CreateUri(baseAttribute, UriKind.RelativeOrAbsolute);
+
+                    if (this.xmlBaseStack == null)
+                    {
+                        this.xmlBaseStack = new Stack<XmlBaseState>();
+                    }
+
+                    if (this.xmlBaseStack.Count > 0)
+                    {
+                        newBaseUri = Util.CreateUri(this.xmlBaseStack.Peek().BaseUri, newBaseUri);
+                    }
+
+                    this.xmlBaseStack.Push(new XmlBaseState(newBaseUri, this.reader.Depth));
+                }
+            }
+
+            return result;
+        }
+
+        public override bool ReadAttributeValue()
+        {
+            return this.reader.ReadAttributeValue();
+        }
+
+        public override void ResolveEntity()
+        {
+            this.reader.ResolveEntity();
+        }
+
+        public override void Skip()
+        {
+            this.reader.Skip();
+        }
+
+        internal static XmlWrappingReader CreateReader(string currentBaseUri, XmlReader newReader)
+        {
+            Debug.Assert(!(newReader is XmlWrappingReader), "The new reader must not be a xmlWrappingReader");
+            XmlWrappingReader reader = new XmlWrappingReader(newReader);
+            reader.previousReaderBaseUri = currentBaseUri;
+            return reader;
+        }
+
+        protected override void Dispose(bool disposing)
+        {
+            if (this.reader != null)
+            {
+                ((IDisposable)this.reader).Dispose();
+            }
+
+            base.Dispose(disposing);
+        }
+
+        private void PopXmlBase()
+        {
+            if (this.xmlBaseStack != null && this.xmlBaseStack.Count > 0 && this.reader.Depth == this.xmlBaseStack.Peek().Depth)
+            {
+                this.xmlBaseStack.Pop();
+            }
+        }
+
+        #endregion Methods.
+
+        #region Private Class
+
+        private class XmlBaseState
+        {
+            internal XmlBaseState(Uri baseUri, int depth)
+            {
+                this.BaseUri = baseUri;
+                this.Depth = depth;
+            }
+
+            public Uri BaseUri
+            {
+                get;
+                private set;
+            }
+
+            public int Depth
+            {
+                get;
+                private set;
+            }
+        }
+
+        #endregion    
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/XmlUtil.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Client/System/Data/Services/Client/XmlUtil.cs
@@ -1,164 +1,164 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Globalization;
-    using System.IO;
-    using System.Text;
-    using System.Xml;
-
-    internal static partial class UriUtil
-    {
-
-        internal static string GetNameFromAtomLinkRelationAttribute(string value)
-        {
-            string name = null;
-            if (!String.IsNullOrEmpty(value))
-            {
-                Uri uri = null;
-                try
-                {
-                    uri = new Uri(value, UriKind.RelativeOrAbsolute);
-                }
-                catch (UriFormatException)
-                {                }
-
-                if ((null != uri) && uri.IsAbsoluteUri)
-                {
-                    string unescaped = uri.GetComponents(UriComponents.AbsoluteUri, UriFormat.SafeUnescaped);
-                    if (unescaped.StartsWith(XmlConstants.DataWebRelatedNamespace, StringComparison.Ordinal))
-                    {
-                        name = unescaped.Substring(XmlConstants.DataWebRelatedNamespace.Length);
-                    }
-                }
-            }
-
-            return name;
-        }
-
-    }
-
-    internal static partial class XmlUtil
-    {
-        private static NameTable CreateAtomNameTable()
-        {
-            NameTable table = new NameTable();
-            table.Add(XmlConstants.AtomNamespace);
-            table.Add(XmlConstants.DataWebNamespace);
-            table.Add(XmlConstants.DataWebMetadataNamespace);
-
-            table.Add(XmlConstants.AtomContentElementName);
-            table.Add(XmlConstants.AtomContentSrcAttributeName);
-            table.Add(XmlConstants.AtomEntryElementName);
-            table.Add(XmlConstants.AtomETagAttributeName);
-            table.Add(XmlConstants.AtomFeedElementName);
-
-            table.Add(XmlConstants.AtomIdElementName);
-
-            table.Add(XmlConstants.AtomInlineElementName);
-            table.Add(XmlConstants.AtomLinkElementName);
-            table.Add(XmlConstants.AtomLinkRelationAttributeName);
-            table.Add(XmlConstants.AtomNullAttributeName);
-            table.Add(XmlConstants.AtomPropertiesElementName);
-            table.Add(XmlConstants.AtomTitleElementName);
-            table.Add(XmlConstants.AtomTypeAttributeName);
-
-            table.Add(XmlConstants.XmlErrorCodeElementName);
-            table.Add(XmlConstants.XmlErrorElementName);
-            table.Add(XmlConstants.XmlErrorInnerElementName);
-            table.Add(XmlConstants.XmlErrorMessageElementName);
-            table.Add(XmlConstants.XmlErrorTypeElementName);
-            return table;
-        }
-
-        internal static XmlReader CreateXmlReader(Stream stream, Encoding encoding)
-        {
-            Debug.Assert(null != stream, "null stream");
-
-            XmlReaderSettings settings = new XmlReaderSettings();
-            settings.CheckCharacters = false;
-            settings.CloseInput = true;
-            settings.IgnoreWhitespace = true;
-            settings.NameTable = XmlUtil.CreateAtomNameTable();
-
-            if (null == encoding)
-            {                return XmlReader.Create(stream, settings);
-            }
-
-            return XmlReader.Create(new StreamReader(stream, encoding), settings);
-        }
-
-        internal static XmlWriterSettings CreateXmlWriterSettings(Encoding encoding)
-        {
-            Debug.Assert(null != encoding, "null != encoding");
-
-            XmlWriterSettings settings = new XmlWriterSettings();
-            settings.CheckCharacters = false;
-            settings.ConformanceLevel = ConformanceLevel.Fragment;
-            settings.Encoding = encoding;
-            settings.Indent = true;
-            settings.NewLineHandling = NewLineHandling.Entitize;
-
-            Debug.Assert(!settings.CloseOutput, "!settings.CloseOutput -- otherwise default changed?");
-
-            return settings;
-        }
-
-        internal static XmlWriter CreateXmlWriterAndWriteProcessingInstruction(Stream stream, Encoding encoding)
-        {
-            Debug.Assert(null != stream, "null != stream");
-            Debug.Assert(null != encoding, "null != encoding");
-
-            XmlWriterSettings settings = CreateXmlWriterSettings(encoding);
-            XmlWriter writer = XmlWriter.Create(stream, settings);
-            writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"" + encoding.WebName + "\" standalone=\"yes\"");
-            return writer;
-        }
-
-        internal static string GetAttributeEx(this XmlReader reader, string attributeName, string namespaceUri)
-        {
-            return reader.GetAttribute(attributeName, namespaceUri) ?? reader.GetAttribute(attributeName);
-        }
-
-        internal static void RemoveDuplicateNamespaceAttributes(System.Xml.Linq.XElement element)
-        {
-            Debug.Assert(element != null, "element != null");
-
-            HashSet<string> names = new HashSet<string>(EqualityComparer<string>.Default);
-            foreach (System.Xml.Linq.XElement e in element.DescendantsAndSelf())
-            {
-                bool attributesFound = false;
-                foreach (var attribute in e.Attributes())
-                {
-                    if (!attributesFound)
-                    {
-                        attributesFound = true;
-                        names.Clear();
-                    }
-
-                    if (attribute.IsNamespaceDeclaration)
-                    {
-                        string localName = attribute.Name.LocalName;
-                        bool alreadyPresent = names.Add(localName) == false;
-                        if (alreadyPresent)
-                        {
-                            attribute.Remove();
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Globalization;
+    using System.IO;
+    using System.Text;
+    using System.Xml;
+
+    internal static partial class UriUtil
+    {
+
+        internal static string GetNameFromAtomLinkRelationAttribute(string value)
+        {
+            string name = null;
+            if (!String.IsNullOrEmpty(value))
+            {
+                Uri uri = null;
+                try
+                {
+                    uri = new Uri(value, UriKind.RelativeOrAbsolute);
+                }
+                catch (UriFormatException)
+                {                }
+
+                if ((null != uri) && uri.IsAbsoluteUri)
+                {
+                    string unescaped = uri.GetComponents(UriComponents.AbsoluteUri, UriFormat.SafeUnescaped);
+                    if (unescaped.StartsWith(XmlConstants.DataWebRelatedNamespace, StringComparison.Ordinal))
+                    {
+                        name = unescaped.Substring(XmlConstants.DataWebRelatedNamespace.Length);
+                    }
+                }
+            }
+
+            return name;
+        }
+
+    }
+
+    internal static partial class XmlUtil
+    {
+        private static NameTable CreateAtomNameTable()
+        {
+            NameTable table = new NameTable();
+            table.Add(XmlConstants.AtomNamespace);
+            table.Add(XmlConstants.DataWebNamespace);
+            table.Add(XmlConstants.DataWebMetadataNamespace);
+
+            table.Add(XmlConstants.AtomContentElementName);
+            table.Add(XmlConstants.AtomContentSrcAttributeName);
+            table.Add(XmlConstants.AtomEntryElementName);
+            table.Add(XmlConstants.AtomETagAttributeName);
+            table.Add(XmlConstants.AtomFeedElementName);
+
+            table.Add(XmlConstants.AtomIdElementName);
+
+            table.Add(XmlConstants.AtomInlineElementName);
+            table.Add(XmlConstants.AtomLinkElementName);
+            table.Add(XmlConstants.AtomLinkRelationAttributeName);
+            table.Add(XmlConstants.AtomNullAttributeName);
+            table.Add(XmlConstants.AtomPropertiesElementName);
+            table.Add(XmlConstants.AtomTitleElementName);
+            table.Add(XmlConstants.AtomTypeAttributeName);
+
+            table.Add(XmlConstants.XmlErrorCodeElementName);
+            table.Add(XmlConstants.XmlErrorElementName);
+            table.Add(XmlConstants.XmlErrorInnerElementName);
+            table.Add(XmlConstants.XmlErrorMessageElementName);
+            table.Add(XmlConstants.XmlErrorTypeElementName);
+            return table;
+        }
+
+        internal static XmlReader CreateXmlReader(Stream stream, Encoding encoding)
+        {
+            Debug.Assert(null != stream, "null stream");
+
+            XmlReaderSettings settings = new XmlReaderSettings();
+            settings.CheckCharacters = false;
+            settings.CloseInput = true;
+            settings.IgnoreWhitespace = true;
+            settings.NameTable = XmlUtil.CreateAtomNameTable();
+
+            if (null == encoding)
+            {                return XmlReader.Create(stream, settings);
+            }
+
+            return XmlReader.Create(new StreamReader(stream, encoding), settings);
+        }
+
+        internal static XmlWriterSettings CreateXmlWriterSettings(Encoding encoding)
+        {
+            Debug.Assert(null != encoding, "null != encoding");
+
+            XmlWriterSettings settings = new XmlWriterSettings();
+            settings.CheckCharacters = false;
+            settings.ConformanceLevel = ConformanceLevel.Fragment;
+            settings.Encoding = encoding;
+            settings.Indent = true;
+            settings.NewLineHandling = NewLineHandling.Entitize;
+
+            Debug.Assert(!settings.CloseOutput, "!settings.CloseOutput -- otherwise default changed?");
+
+            return settings;
+        }
+
+        internal static XmlWriter CreateXmlWriterAndWriteProcessingInstruction(Stream stream, Encoding encoding)
+        {
+            Debug.Assert(null != stream, "null != stream");
+            Debug.Assert(null != encoding, "null != encoding");
+
+            XmlWriterSettings settings = CreateXmlWriterSettings(encoding);
+            XmlWriter writer = XmlWriter.Create(stream, settings);
+            writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"" + encoding.WebName + "\" standalone=\"yes\"");
+            return writer;
+        }
+
+        internal static string GetAttributeEx(this XmlReader reader, string attributeName, string namespaceUri)
+        {
+            return reader.GetAttribute(attributeName, namespaceUri) ?? reader.GetAttribute(attributeName);
+        }
+
+        internal static void RemoveDuplicateNamespaceAttributes(System.Xml.Linq.XElement element)
+        {
+            Debug.Assert(element != null, "element != null");
+
+            HashSet<string> names = new HashSet<string>(EqualityComparer<string>.Default);
+            foreach (System.Xml.Linq.XElement e in element.DescendantsAndSelf())
+            {
+                bool attributesFound = false;
+                foreach (var attribute in e.Attributes())
+                {
+                    if (!attributesFound)
+                    {
+                        attributesFound = true;
+                        names.Clear();
+                    }
+
+                    if (attribute.IsNamespaceDeclaration)
+                    {
+                        string localName = attribute.Name.LocalName;
+                        bool alreadyPresent = names.Add(localName) == false;
+                        if (alreadyPresent)
+                        {
+                            attribute.Remove();
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmContentSerializerBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmContentSerializerBase.cs
@@ -1,97 +1,97 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Xml;
-
-    internal enum EpmSerializationKind
-    {
-        Attributes,
-        
-        Elements,
-        
-        All
-    }
-    
-    internal abstract class EpmContentSerializerBase
-    {
-        protected EpmContentSerializerBase(EpmTargetTree tree, bool isSyndication, object element, XmlWriter target)
-        {
-            this.Root = isSyndication ? tree.SyndicationRoot : tree.NonSyndicationRoot;
-            this.Element = element;
-            this.Target = target;
-            this.Success = false;
-        }
-
-        protected EpmTargetPathSegment Root
-        {
-            get;
-            private set;
-        }
-
-        protected object Element
-        {
-            get;
-            private set;
-        }
-
-        protected XmlWriter Target
-        {
-            get;
-            private set;
-        }
-
-        protected bool Success
-        {
-            get;
-            private set;
-        }
-
-        internal void Serialize()
-        {
-            foreach (EpmTargetPathSegment targetSegment in this.Root.SubSegments)
-            {
-
-                this.Serialize(targetSegment, EpmSerializationKind.All);
-            }
-            
-            this.Success = true;
-        }
-
-        protected virtual void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind)
-        {
-            IEnumerable<EpmTargetPathSegment> segmentsToSerialize;
-            switch (kind)
-            {
-                case EpmSerializationKind.Attributes:
-                    segmentsToSerialize = targetSegment.SubSegments.Where(s => s.IsAttribute == true);
-                    break;
-                case EpmSerializationKind.Elements:
-                    segmentsToSerialize = targetSegment.SubSegments.Where(s => s.IsAttribute == false);
-                    break;
-                default:
-                    Debug.Assert(kind == EpmSerializationKind.All, "Must serialize everything");
-                    segmentsToSerialize = targetSegment.SubSegments;
-                    break;
-            }
-
-            foreach (EpmTargetPathSegment segment in segmentsToSerialize)
-            {
-                this.Serialize(segment, kind);
-            }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Xml;
+
+    internal enum EpmSerializationKind
+    {
+        Attributes,
+        
+        Elements,
+        
+        All
+    }
+    
+    internal abstract class EpmContentSerializerBase
+    {
+        protected EpmContentSerializerBase(EpmTargetTree tree, bool isSyndication, object element, XmlWriter target)
+        {
+            this.Root = isSyndication ? tree.SyndicationRoot : tree.NonSyndicationRoot;
+            this.Element = element;
+            this.Target = target;
+            this.Success = false;
+        }
+
+        protected EpmTargetPathSegment Root
+        {
+            get;
+            private set;
+        }
+
+        protected object Element
+        {
+            get;
+            private set;
+        }
+
+        protected XmlWriter Target
+        {
+            get;
+            private set;
+        }
+
+        protected bool Success
+        {
+            get;
+            private set;
+        }
+
+        internal void Serialize()
+        {
+            foreach (EpmTargetPathSegment targetSegment in this.Root.SubSegments)
+            {
+
+                this.Serialize(targetSegment, EpmSerializationKind.All);
+            }
+            
+            this.Success = true;
+        }
+
+        protected virtual void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind)
+        {
+            IEnumerable<EpmTargetPathSegment> segmentsToSerialize;
+            switch (kind)
+            {
+                case EpmSerializationKind.Attributes:
+                    segmentsToSerialize = targetSegment.SubSegments.Where(s => s.IsAttribute == true);
+                    break;
+                case EpmSerializationKind.Elements:
+                    segmentsToSerialize = targetSegment.SubSegments.Where(s => s.IsAttribute == false);
+                    break;
+                default:
+                    Debug.Assert(kind == EpmSerializationKind.All, "Must serialize everything");
+                    segmentsToSerialize = targetSegment.SubSegments;
+                    break;
+            }
+
+            foreach (EpmTargetPathSegment segment in segmentsToSerialize)
+            {
+                this.Serialize(segment, kind);
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmCustomContentSerializer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmCustomContentSerializer.cs
@@ -1,120 +1,120 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Data.Services.Client;
-    using System.Xml;
-
-    internal sealed class EpmCustomContentSerializer : EpmContentSerializerBase, IDisposable
-    {
-        private bool disposed;
-
-        private Dictionary<EpmTargetPathSegment, EpmCustomContentWriterNodeData> visitorContent;
-
-        internal EpmCustomContentSerializer(EpmTargetTree targetTree, object element, XmlWriter target)
-            : base(targetTree, false, element, target)
-        {
-            this.InitializeVisitorContent();
-        }
-
-        public void Dispose()
-        {
-            if (!this.disposed)
-            {
-                foreach (EpmTargetPathSegment subSegmentOfRoot in this.Root.SubSegments)
-                {
-                    EpmCustomContentWriterNodeData c = this.visitorContent[subSegmentOfRoot];
-                    Debug.Assert(c != null, "Must have custom data for all the children of root");
-                    if (this.Success)
-                    {
-                        c.AddContentToTarget(this.Target);
-                    }
-
-                    c.Dispose();
-                }
-                
-                this.disposed = true;
-            }
-        }
-
-        protected override void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind)
-        {
-            if (targetSegment.IsAttribute)
-            {
-                this.WriteAttribute(targetSegment);
-            }
-            else
-            {
-                this.WriteElement(targetSegment);
-            }
-        }
-
-        private void WriteAttribute(EpmTargetPathSegment targetSegment)
-        {
-            Debug.Assert(targetSegment.HasContent, "Must have content for attributes");
-
-            EpmCustomContentWriterNodeData currentContent = this.visitorContent[targetSegment];
-            currentContent.XmlContentWriter.WriteAttributeString(
-                                    targetSegment.SegmentNamespacePrefix,
-                                    targetSegment.SegmentName.Substring(1),
-                                    targetSegment.SegmentNamespaceUri,
-                                    currentContent.Data);
-        }
-
-        private void WriteElement(EpmTargetPathSegment targetSegment)
-        {
-            EpmCustomContentWriterNodeData currentContent = this.visitorContent[targetSegment];
-
-            currentContent.XmlContentWriter.WriteStartElement(
-                targetSegment.SegmentNamespacePrefix,
-                targetSegment.SegmentName,
-                targetSegment.SegmentNamespaceUri);
-
-            base.Serialize(targetSegment, EpmSerializationKind.Attributes);
-
-            if (targetSegment.HasContent)
-            {
-                Debug.Assert(currentContent.Data != null, "Must always have non-null data content value");
-                currentContent.XmlContentWriter.WriteString(currentContent.Data);
-            }
-
-            base.Serialize(targetSegment, EpmSerializationKind.Elements);
-
-            currentContent.XmlContentWriter.WriteEndElement();
-        }
-
-
-        private void InitializeVisitorContent()
-        {
-            this.visitorContent = new Dictionary<EpmTargetPathSegment, EpmCustomContentWriterNodeData>(ReferenceEqualityComparer<EpmTargetPathSegment>.Instance);
-
-            foreach (EpmTargetPathSegment subSegmentOfRoot in this.Root.SubSegments)
-            {
-                this.visitorContent.Add(subSegmentOfRoot, new EpmCustomContentWriterNodeData(subSegmentOfRoot, this.Element));
-                this.InitializeSubSegmentVisitorContent(subSegmentOfRoot);
-            }
-        }
-
-        private void InitializeSubSegmentVisitorContent(EpmTargetPathSegment subSegment)
-        {
-            foreach (EpmTargetPathSegment segment in subSegment.SubSegments)
-            {
-                this.visitorContent.Add(segment, new EpmCustomContentWriterNodeData(this.visitorContent[subSegment], segment, this.Element));
-                this.InitializeSubSegmentVisitorContent(segment);
-            }
-        }
-
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Data.Services.Client;
+    using System.Xml;
+
+    internal sealed class EpmCustomContentSerializer : EpmContentSerializerBase, IDisposable
+    {
+        private bool disposed;
+
+        private Dictionary<EpmTargetPathSegment, EpmCustomContentWriterNodeData> visitorContent;
+
+        internal EpmCustomContentSerializer(EpmTargetTree targetTree, object element, XmlWriter target)
+            : base(targetTree, false, element, target)
+        {
+            this.InitializeVisitorContent();
+        }
+
+        public void Dispose()
+        {
+            if (!this.disposed)
+            {
+                foreach (EpmTargetPathSegment subSegmentOfRoot in this.Root.SubSegments)
+                {
+                    EpmCustomContentWriterNodeData c = this.visitorContent[subSegmentOfRoot];
+                    Debug.Assert(c != null, "Must have custom data for all the children of root");
+                    if (this.Success)
+                    {
+                        c.AddContentToTarget(this.Target);
+                    }
+
+                    c.Dispose();
+                }
+                
+                this.disposed = true;
+            }
+        }
+
+        protected override void Serialize(EpmTargetPathSegment targetSegment, EpmSerializationKind kind)
+        {
+            if (targetSegment.IsAttribute)
+            {
+                this.WriteAttribute(targetSegment);
+            }
+            else
+            {
+                this.WriteElement(targetSegment);
+            }
+        }
+
+        private void WriteAttribute(EpmTargetPathSegment targetSegment)
+        {
+            Debug.Assert(targetSegment.HasContent, "Must have content for attributes");
+
+            EpmCustomContentWriterNodeData currentContent = this.visitorContent[targetSegment];
+            currentContent.XmlContentWriter.WriteAttributeString(
+                                    targetSegment.SegmentNamespacePrefix,
+                                    targetSegment.SegmentName.Substring(1),
+                                    targetSegment.SegmentNamespaceUri,
+                                    currentContent.Data);
+        }
+
+        private void WriteElement(EpmTargetPathSegment targetSegment)
+        {
+            EpmCustomContentWriterNodeData currentContent = this.visitorContent[targetSegment];
+
+            currentContent.XmlContentWriter.WriteStartElement(
+                targetSegment.SegmentNamespacePrefix,
+                targetSegment.SegmentName,
+                targetSegment.SegmentNamespaceUri);
+
+            base.Serialize(targetSegment, EpmSerializationKind.Attributes);
+
+            if (targetSegment.HasContent)
+            {
+                Debug.Assert(currentContent.Data != null, "Must always have non-null data content value");
+                currentContent.XmlContentWriter.WriteString(currentContent.Data);
+            }
+
+            base.Serialize(targetSegment, EpmSerializationKind.Elements);
+
+            currentContent.XmlContentWriter.WriteEndElement();
+        }
+
+
+        private void InitializeVisitorContent()
+        {
+            this.visitorContent = new Dictionary<EpmTargetPathSegment, EpmCustomContentWriterNodeData>(ReferenceEqualityComparer<EpmTargetPathSegment>.Instance);
+
+            foreach (EpmTargetPathSegment subSegmentOfRoot in this.Root.SubSegments)
+            {
+                this.visitorContent.Add(subSegmentOfRoot, new EpmCustomContentWriterNodeData(subSegmentOfRoot, this.Element));
+                this.InitializeSubSegmentVisitorContent(subSegmentOfRoot);
+            }
+        }
+
+        private void InitializeSubSegmentVisitorContent(EpmTargetPathSegment subSegment)
+        {
+            foreach (EpmTargetPathSegment segment in subSegment.SubSegments)
+            {
+                this.visitorContent.Add(segment, new EpmCustomContentWriterNodeData(this.visitorContent[subSegment], segment, this.Element));
+                this.InitializeSubSegmentVisitorContent(segment);
+            }
+        }
+
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmCustomContentWriterNodeData.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmCustomContentWriterNodeData.cs
@@ -1,114 +1,114 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System;
-    using System.IO;
-    using System.Xml;
-    using System.Data.Services.Client;
-
-    internal sealed class EpmCustomContentWriterNodeData : IDisposable
-    {
-        private bool disposed;
-
-        internal EpmCustomContentWriterNodeData(EpmTargetPathSegment segment, object element)
-        {
-            this.XmlContentStream = new MemoryStream();
-            XmlWriterSettings customContentWriterSettings = new XmlWriterSettings();
-            customContentWriterSettings.OmitXmlDeclaration = true;
-            customContentWriterSettings.ConformanceLevel = ConformanceLevel.Fragment;
-            this.XmlContentWriter = XmlWriter.Create(this.XmlContentStream, customContentWriterSettings);
-            this.PopulateData(segment, element);
-        }
-
-        internal EpmCustomContentWriterNodeData(EpmCustomContentWriterNodeData parentData, EpmTargetPathSegment segment, object element)
-        {
-            this.XmlContentStream = parentData.XmlContentStream;
-            this.XmlContentWriter = parentData.XmlContentWriter;
-            this.PopulateData(segment, element);
-
-        }
-
-        internal MemoryStream XmlContentStream
-        {
-            get;
-            private set;
-        }
-
-        internal XmlWriter XmlContentWriter
-        {
-            get;
-            private set;
-        }
-
-        internal String Data
-        {
-            get;
-            private set;
-        }
-
-        public void Dispose()
-        {
-            if (!this.disposed)
-            {
-                if (this.XmlContentWriter != null)
-                {
-                    this.XmlContentWriter.Close();
-                    this.XmlContentWriter = null;
-                }
-
-                if (this.XmlContentStream != null)
-                {
-                    this.XmlContentStream.Dispose();
-                    this.XmlContentStream = null;
-                }
-
-                this.disposed = true;
-            }
-        }
-
-        internal void AddContentToTarget(XmlWriter target)
-        {
-            this.XmlContentWriter.Close();
-            this.XmlContentWriter = null;
-            this.XmlContentStream.Seek(0, SeekOrigin.Begin);
-            XmlReaderSettings customContentReaderSettings = new XmlReaderSettings();
-            customContentReaderSettings.ConformanceLevel = ConformanceLevel.Fragment;
-            XmlReader reader = XmlReader.Create(this.XmlContentStream, customContentReaderSettings);
-            this.XmlContentStream = null;
-            target.WriteNode(reader, false);
-        }
-
-        private void PopulateData(EpmTargetPathSegment segment, object element)
-        {
-            if (segment.EpmInfo != null)
-            {
-                Object propertyValue;
-
-                try
-                {
-                   propertyValue = segment.EpmInfo.PropValReader.DynamicInvoke(element);
-
-                }
-                catch
-                (System.Reflection.TargetInvocationException)
-                {
-                    throw;
-                }
-
-               this.Data = propertyValue == null ? String.Empty : ClientConvert.ToString(propertyValue, false );
-
-            }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System;
+    using System.IO;
+    using System.Xml;
+    using System.Data.Services.Client;
+
+    internal sealed class EpmCustomContentWriterNodeData : IDisposable
+    {
+        private bool disposed;
+
+        internal EpmCustomContentWriterNodeData(EpmTargetPathSegment segment, object element)
+        {
+            this.XmlContentStream = new MemoryStream();
+            XmlWriterSettings customContentWriterSettings = new XmlWriterSettings();
+            customContentWriterSettings.OmitXmlDeclaration = true;
+            customContentWriterSettings.ConformanceLevel = ConformanceLevel.Fragment;
+            this.XmlContentWriter = XmlWriter.Create(this.XmlContentStream, customContentWriterSettings);
+            this.PopulateData(segment, element);
+        }
+
+        internal EpmCustomContentWriterNodeData(EpmCustomContentWriterNodeData parentData, EpmTargetPathSegment segment, object element)
+        {
+            this.XmlContentStream = parentData.XmlContentStream;
+            this.XmlContentWriter = parentData.XmlContentWriter;
+            this.PopulateData(segment, element);
+
+        }
+
+        internal MemoryStream XmlContentStream
+        {
+            get;
+            private set;
+        }
+
+        internal XmlWriter XmlContentWriter
+        {
+            get;
+            private set;
+        }
+
+        internal String Data
+        {
+            get;
+            private set;
+        }
+
+        public void Dispose()
+        {
+            if (!this.disposed)
+            {
+                if (this.XmlContentWriter != null)
+                {
+                    this.XmlContentWriter.Close();
+                    this.XmlContentWriter = null;
+                }
+
+                if (this.XmlContentStream != null)
+                {
+                    this.XmlContentStream.Dispose();
+                    this.XmlContentStream = null;
+                }
+
+                this.disposed = true;
+            }
+        }
+
+        internal void AddContentToTarget(XmlWriter target)
+        {
+            this.XmlContentWriter.Close();
+            this.XmlContentWriter = null;
+            this.XmlContentStream.Seek(0, SeekOrigin.Begin);
+            XmlReaderSettings customContentReaderSettings = new XmlReaderSettings();
+            customContentReaderSettings.ConformanceLevel = ConformanceLevel.Fragment;
+            XmlReader reader = XmlReader.Create(this.XmlContentStream, customContentReaderSettings);
+            this.XmlContentStream = null;
+            target.WriteNode(reader, false);
+        }
+
+        private void PopulateData(EpmTargetPathSegment segment, object element)
+        {
+            if (segment.EpmInfo != null)
+            {
+                Object propertyValue;
+
+                try
+                {
+                   propertyValue = segment.EpmInfo.PropValReader.DynamicInvoke(element);
+
+                }
+                catch
+                (System.Reflection.TargetInvocationException)
+                {
+                    throw;
+                }
+
+               this.Data = propertyValue == null ? String.Empty : ClientConvert.ToString(propertyValue, false );
+
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmSourcePathSegment.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmSourcePathSegment.cs
@@ -1,59 +1,59 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System.Collections.Generic;
-
-    internal class EpmSourcePathSegment
-    {
-        #region Fields
-
-        private String propertyName;
-
-        private List<EpmSourcePathSegment> subProperties;
-
-        #endregion
-
-        internal EpmSourcePathSegment(String propertyName)
-        {
-            this.propertyName = propertyName;
-            this.subProperties = new List<EpmSourcePathSegment>();
-        }
-
-        #region Properties
-
-        internal String PropertyName
-        {
-            get
-            {
-                return this.propertyName;
-            }
-        }
-
-        internal List<EpmSourcePathSegment> SubProperties
-        {
-            get
-            {
-                return this.subProperties;
-            }
-        }
-
-        internal EntityPropertyMappingInfo EpmInfo
-        {
-            get;
-            set;
-        }
-
-        #endregion
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System.Collections.Generic;
+
+    internal class EpmSourcePathSegment
+    {
+        #region Fields
+
+        private String propertyName;
+
+        private List<EpmSourcePathSegment> subProperties;
+
+        #endregion
+
+        internal EpmSourcePathSegment(String propertyName)
+        {
+            this.propertyName = propertyName;
+            this.subProperties = new List<EpmSourcePathSegment>();
+        }
+
+        #region Properties
+
+        internal String PropertyName
+        {
+            get
+            {
+                return this.propertyName;
+            }
+        }
+
+        internal List<EpmSourcePathSegment> SubProperties
+        {
+            get
+            {
+                return this.subProperties;
+            }
+        }
+
+        internal EntityPropertyMappingInfo EpmInfo
+        {
+            get;
+            set;
+        }
+
+        #endregion
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmSourceTree.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmSourceTree.cs
@@ -1,93 +1,93 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Data.Services.Client;
-
-
-    internal sealed class EpmSourceTree
-    {
-        #region Fields
-
-        private readonly EpmSourcePathSegment root;
-        
-        private readonly EpmTargetTree epmTargetTree;
-
-        #endregion
-
-        internal EpmSourceTree(EpmTargetTree epmTargetTree)
-        {
-            this.root = new EpmSourcePathSegment("");
-            this.epmTargetTree = epmTargetTree;
-        }
-
-        #region Properties
-
-        internal EpmSourcePathSegment Root
-        {
-            get
-            {
-                return this.root;
-            }
-        }
-
-        #endregion
-
-        internal void Add(EntityPropertyMappingInfo epmInfo)
-        {
-            String sourceName = epmInfo.Attribute.SourcePath;
-            EpmSourcePathSegment currentProperty = this.Root;
-            IList<EpmSourcePathSegment> activeSubProperties = currentProperty.SubProperties;
-            EpmSourcePathSegment foundProperty = null;
-
-            Debug.Assert(!String.IsNullOrEmpty(sourceName), "Must have been validated during EntityPropertyMappingAttribute construction");
-            foreach (String propertyName in sourceName.Split('/'))
-            {
-                if (propertyName.Length == 0)
-                {
-                    throw new InvalidOperationException(Strings.EpmSourceTree_InvalidSourcePath(epmInfo.DefiningType.Name, sourceName));
-                }
-
-                foundProperty = activeSubProperties.SingleOrDefault(e => e.PropertyName == propertyName);
-                if (foundProperty != null)
-                {
-                    currentProperty = foundProperty;
-                }
-                else
-                {
-                    currentProperty = new EpmSourcePathSegment(propertyName);
-                    activeSubProperties.Add(currentProperty);
-                }
-
-                activeSubProperties = currentProperty.SubProperties;
-            }
-
-            if (foundProperty != null)
-            {
-                Debug.Assert(Object.ReferenceEquals(foundProperty, currentProperty), "currentProperty variable should have been updated already to foundProperty");
-             
-                if (foundProperty.EpmInfo.DefiningType.Name == epmInfo.DefiningType.Name)
-                {
-                    throw new InvalidOperationException(Strings.EpmSourceTree_DuplicateEpmAttrsWithSameSourceName(epmInfo.Attribute.SourcePath, epmInfo.DefiningType.Name));
-                }
-                this.epmTargetTree.Remove(foundProperty.EpmInfo);
-            }
-
-            currentProperty.EpmInfo = epmInfo;
-            this.epmTargetTree.Add(epmInfo);
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Data.Services.Client;
+
+
+    internal sealed class EpmSourceTree
+    {
+        #region Fields
+
+        private readonly EpmSourcePathSegment root;
+        
+        private readonly EpmTargetTree epmTargetTree;
+
+        #endregion
+
+        internal EpmSourceTree(EpmTargetTree epmTargetTree)
+        {
+            this.root = new EpmSourcePathSegment("");
+            this.epmTargetTree = epmTargetTree;
+        }
+
+        #region Properties
+
+        internal EpmSourcePathSegment Root
+        {
+            get
+            {
+                return this.root;
+            }
+        }
+
+        #endregion
+
+        internal void Add(EntityPropertyMappingInfo epmInfo)
+        {
+            String sourceName = epmInfo.Attribute.SourcePath;
+            EpmSourcePathSegment currentProperty = this.Root;
+            IList<EpmSourcePathSegment> activeSubProperties = currentProperty.SubProperties;
+            EpmSourcePathSegment foundProperty = null;
+
+            Debug.Assert(!String.IsNullOrEmpty(sourceName), "Must have been validated during EntityPropertyMappingAttribute construction");
+            foreach (String propertyName in sourceName.Split('/'))
+            {
+                if (propertyName.Length == 0)
+                {
+                    throw new InvalidOperationException(Strings.EpmSourceTree_InvalidSourcePath(epmInfo.DefiningType.Name, sourceName));
+                }
+
+                foundProperty = activeSubProperties.SingleOrDefault(e => e.PropertyName == propertyName);
+                if (foundProperty != null)
+                {
+                    currentProperty = foundProperty;
+                }
+                else
+                {
+                    currentProperty = new EpmSourcePathSegment(propertyName);
+                    activeSubProperties.Add(currentProperty);
+                }
+
+                activeSubProperties = currentProperty.SubProperties;
+            }
+
+            if (foundProperty != null)
+            {
+                Debug.Assert(Object.ReferenceEquals(foundProperty, currentProperty), "currentProperty variable should have been updated already to foundProperty");
+             
+                if (foundProperty.EpmInfo.DefiningType.Name == epmInfo.DefiningType.Name)
+                {
+                    throw new InvalidOperationException(Strings.EpmSourceTree_DuplicateEpmAttrsWithSameSourceName(epmInfo.Attribute.SourcePath, epmInfo.DefiningType.Name));
+                }
+                this.epmTargetTree.Remove(foundProperty.EpmInfo);
+            }
+
+            currentProperty.EpmInfo = epmInfo;
+            this.epmTargetTree.Add(epmInfo);
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmTargetPathSegment.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmTargetPathSegment.cs
@@ -1,111 +1,111 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System.Diagnostics;
-    using System.Collections.Generic;
-
-    [DebuggerDisplay("EpmTargetPathSegment {SegmentName} HasContent={HasContent}")]
-    internal class EpmTargetPathSegment
-    {
-        #region Private fields.
-
-        private String segmentName;
-
-        private String segmentNamespaceUri;
-
-        private String segmentNamespacePrefix;
-
-        private List<EpmTargetPathSegment> subSegments;
-
-        private EpmTargetPathSegment parentSegment;
-
-        #endregion Private fields.
-
-        internal EpmTargetPathSegment()
-        {
-            this.subSegments = new List<EpmTargetPathSegment>();
-        }
-
-        internal EpmTargetPathSegment(String segmentName, String segmentNamespaceUri, String segmentNamespacePrefix, EpmTargetPathSegment parentSegment)
-            : this()
-        {
-            this.segmentName = segmentName;
-            this.segmentNamespaceUri = segmentNamespaceUri;
-            this.segmentNamespacePrefix = segmentNamespacePrefix;
-            this.parentSegment = parentSegment;
-        }
-
-        internal String SegmentName
-        {
-            get
-            {
-                return this.segmentName;
-            }
-        }
-
-        internal String SegmentNamespaceUri
-        {
-            get
-            {
-                return this.segmentNamespaceUri;
-            }
-        }
-
-        internal String SegmentNamespacePrefix
-        {
-            get
-            {
-                return this.segmentNamespacePrefix;
-            }
-        }
-
-        internal EntityPropertyMappingInfo EpmInfo
-        {
-            get;
-            set;
-        }
-
-        internal bool HasContent
-        {
-            get
-            {
-                return this.EpmInfo != null;
-            }
-        }
-
-        internal bool IsAttribute
-        {
-            get
-            {
-                return this.SegmentName[0] == '@';
-            }
-        }
-
-        internal EpmTargetPathSegment ParentSegment
-        {
-            get
-            {
-                return this.parentSegment;
-            }
-        }
-
-        internal List<EpmTargetPathSegment> SubSegments
-        {
-            get
-            {
-                return this.subSegments;
-            }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System.Diagnostics;
+    using System.Collections.Generic;
+
+    [DebuggerDisplay("EpmTargetPathSegment {SegmentName} HasContent={HasContent}")]
+    internal class EpmTargetPathSegment
+    {
+        #region Private fields.
+
+        private String segmentName;
+
+        private String segmentNamespaceUri;
+
+        private String segmentNamespacePrefix;
+
+        private List<EpmTargetPathSegment> subSegments;
+
+        private EpmTargetPathSegment parentSegment;
+
+        #endregion Private fields.
+
+        internal EpmTargetPathSegment()
+        {
+            this.subSegments = new List<EpmTargetPathSegment>();
+        }
+
+        internal EpmTargetPathSegment(String segmentName, String segmentNamespaceUri, String segmentNamespacePrefix, EpmTargetPathSegment parentSegment)
+            : this()
+        {
+            this.segmentName = segmentName;
+            this.segmentNamespaceUri = segmentNamespaceUri;
+            this.segmentNamespacePrefix = segmentNamespacePrefix;
+            this.parentSegment = parentSegment;
+        }
+
+        internal String SegmentName
+        {
+            get
+            {
+                return this.segmentName;
+            }
+        }
+
+        internal String SegmentNamespaceUri
+        {
+            get
+            {
+                return this.segmentNamespaceUri;
+            }
+        }
+
+        internal String SegmentNamespacePrefix
+        {
+            get
+            {
+                return this.segmentNamespacePrefix;
+            }
+        }
+
+        internal EntityPropertyMappingInfo EpmInfo
+        {
+            get;
+            set;
+        }
+
+        internal bool HasContent
+        {
+            get
+            {
+                return this.EpmInfo != null;
+            }
+        }
+
+        internal bool IsAttribute
+        {
+            get
+            {
+                return this.SegmentName[0] == '@';
+            }
+        }
+
+        internal EpmTargetPathSegment ParentSegment
+        {
+            get
+            {
+                return this.parentSegment;
+            }
+        }
+
+        internal List<EpmTargetPathSegment> SubSegments
+        {
+            get
+            {
+                return this.subSegments;
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmTargetTree.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Epm/EpmTargetTree.cs
@@ -1,207 +1,207 @@
-﻿//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Linq;
-    using System.Data.Services.Client;
-
-    internal sealed class EpmTargetTree
-    {
-        private int countOfNonContentProperties;
-
-        internal EpmTargetTree()
-        {
-            this.SyndicationRoot = new EpmTargetPathSegment();
-            this.NonSyndicationRoot = new EpmTargetPathSegment();
-        }
-
-        internal EpmTargetPathSegment SyndicationRoot
-        {
-            get; 
-            private set;
-        }
-
-        internal EpmTargetPathSegment NonSyndicationRoot
-        {
-            get;
-            private set;
-        }
-
-        internal bool IsV1Compatible
-        {
-            get
-            {
-                return this.countOfNonContentProperties == 0;
-            }
-        }
-
-        internal void Add(EntityPropertyMappingInfo epmInfo)
-        {
-            String targetName = epmInfo.Attribute.TargetPath;
-            bool isSyndication = epmInfo.Attribute.TargetSyndicationItem != SyndicationItemProperty.CustomProperty;
-            String namespaceUri = epmInfo.Attribute.TargetNamespaceUri;
-            String namespacePrefix = epmInfo.Attribute.TargetNamespacePrefix;
-
-            EpmTargetPathSegment currentSegment = isSyndication ? this.SyndicationRoot : this.NonSyndicationRoot;
-            IList<EpmTargetPathSegment> activeSubSegments = currentSegment.SubSegments;
-
-            Debug.Assert(!String.IsNullOrEmpty(targetName), "Must have been validated during EntityPropertyMappingAttribute construction");
-            String[] targetSegments = targetName.Split('/');
-            
-            for (int i = 0; i < targetSegments.Length; i++)
-            {
-                String targetSegment = targetSegments[i];
-
-                if (targetSegment.Length == 0)
-                {
-                    throw new InvalidOperationException(Strings.EpmTargetTree_InvalidTargetPath(targetName));
-                }
-
-                if (targetSegment[0] == '@' && i != targetSegments.Length - 1)
-                {
-                    throw new InvalidOperationException(Strings.EpmTargetTree_AttributeInMiddle(targetSegment));
-                }
-
-                EpmTargetPathSegment foundSegment = activeSubSegments.SingleOrDefault(
-                                                        segment => segment.SegmentName == targetSegment &&
-                                                        (isSyndication || segment.SegmentNamespaceUri == namespaceUri));
-                if (foundSegment != null)
-                {
-                    currentSegment = foundSegment;
-                }
-                else
-                {
-                    currentSegment = new EpmTargetPathSegment(targetSegment, namespaceUri, namespacePrefix, currentSegment);
-                    if (targetSegment[0] == '@')
-                    {
-                        activeSubSegments.Insert(0, currentSegment);
-                    }
-                    else
-                    {
-                        activeSubSegments.Add(currentSegment);
-                    }
-                }
-
-                activeSubSegments = currentSegment.SubSegments;
-            }
-
-            if (currentSegment.HasContent)
-            {
-                throw new ArgumentException(Strings.EpmTargetTree_DuplicateEpmAttrsWithSameTargetName(EpmTargetTree.GetPropertyNameFromEpmInfo(currentSegment.EpmInfo), currentSegment.EpmInfo.DefiningType.Name, currentSegment.EpmInfo.Attribute.SourcePath, epmInfo.Attribute.SourcePath));
-            }
-
-            if (!epmInfo.Attribute.KeepInContent)
-            {
-                this.countOfNonContentProperties++;
-            }
-
-            currentSegment.EpmInfo = epmInfo;
-            
-            if (EpmTargetTree.HasMixedContent(this.NonSyndicationRoot, false))
-            {
-                throw new InvalidOperationException(Strings.EpmTargetTree_InvalidTargetPath(targetName));
-            }
-        }
-
-        internal void Remove(EntityPropertyMappingInfo epmInfo)
-        {
-            String targetName = epmInfo.Attribute.TargetPath;
-            bool isSyndication = epmInfo.Attribute.TargetSyndicationItem != SyndicationItemProperty.CustomProperty;
-            String namespaceUri = epmInfo.Attribute.TargetNamespaceUri;
-
-            EpmTargetPathSegment currentSegment = isSyndication ? this.SyndicationRoot : this.NonSyndicationRoot;
-            List<EpmTargetPathSegment> activeSubSegments = currentSegment.SubSegments;
-
-            Debug.Assert(!String.IsNullOrEmpty(targetName), "Must have been validated during EntityPropertyMappingAttribute construction");
-            String[] targetSegments = targetName.Split('/');
-            for (int i = 0; i < targetSegments.Length; i++)
-            {
-                String targetSegment = targetSegments[i];
-
-                if (targetSegment.Length == 0)
-                {
-                    throw new InvalidOperationException(Strings.EpmTargetTree_InvalidTargetPath(targetName));
-                }
-
-                if (targetSegment[0] == '@' && i != targetSegments.Length - 1)
-                {
-                    throw new InvalidOperationException(Strings.EpmTargetTree_AttributeInMiddle(targetSegment));
-                }
-
-                EpmTargetPathSegment foundSegment = activeSubSegments.FirstOrDefault(
-                                                        segment => segment.SegmentName == targetSegment &&
-                                                        (isSyndication || segment.SegmentNamespaceUri == namespaceUri));
-                if (foundSegment != null)
-                {
-                    currentSegment = foundSegment;
-                }
-                else
-                {
-                    return;
-                }
-
-                activeSubSegments = currentSegment.SubSegments;
-            }
-
-            if (currentSegment.HasContent)
-            {
-                if (!currentSegment.EpmInfo.Attribute.KeepInContent)
-                {
-                    this.countOfNonContentProperties--;
-                }
-
-                do
-                {
-                    EpmTargetPathSegment parentSegment = currentSegment.ParentSegment;
-                    parentSegment.SubSegments.Remove(currentSegment);
-                    currentSegment = parentSegment;
-                }
-                while (currentSegment.ParentSegment != null && !currentSegment.HasContent && currentSegment.SubSegments.Count == 0);
-            }
-        }
-        
-        private static bool HasMixedContent(EpmTargetPathSegment currentSegment, bool ancestorHasContent)
-        {
-            foreach (EpmTargetPathSegment childSegment in currentSegment.SubSegments.Where(s => !s.IsAttribute))
-            {
-                if (childSegment.HasContent && ancestorHasContent)
-                {
-                    return true;
-                }
-            
-                if (HasMixedContent(childSegment, childSegment.HasContent || ancestorHasContent))
-                {
-                    return true;
-                }
-            }
-            
-            return false;
-        }
-        
-        private static String GetPropertyNameFromEpmInfo(EntityPropertyMappingInfo epmInfo)
-        {
-            {
-                if (epmInfo.Attribute.TargetSyndicationItem != SyndicationItemProperty.CustomProperty)
-                {
-                    return epmInfo.Attribute.TargetSyndicationItem.ToString();
-                }
-                else
-                {
-                    return epmInfo.Attribute.TargetPath;
-                }
-            }
-        }
-    }
+﻿//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Linq;
+    using System.Data.Services.Client;
+
+    internal sealed class EpmTargetTree
+    {
+        private int countOfNonContentProperties;
+
+        internal EpmTargetTree()
+        {
+            this.SyndicationRoot = new EpmTargetPathSegment();
+            this.NonSyndicationRoot = new EpmTargetPathSegment();
+        }
+
+        internal EpmTargetPathSegment SyndicationRoot
+        {
+            get; 
+            private set;
+        }
+
+        internal EpmTargetPathSegment NonSyndicationRoot
+        {
+            get;
+            private set;
+        }
+
+        internal bool IsV1Compatible
+        {
+            get
+            {
+                return this.countOfNonContentProperties == 0;
+            }
+        }
+
+        internal void Add(EntityPropertyMappingInfo epmInfo)
+        {
+            String targetName = epmInfo.Attribute.TargetPath;
+            bool isSyndication = epmInfo.Attribute.TargetSyndicationItem != SyndicationItemProperty.CustomProperty;
+            String namespaceUri = epmInfo.Attribute.TargetNamespaceUri;
+            String namespacePrefix = epmInfo.Attribute.TargetNamespacePrefix;
+
+            EpmTargetPathSegment currentSegment = isSyndication ? this.SyndicationRoot : this.NonSyndicationRoot;
+            IList<EpmTargetPathSegment> activeSubSegments = currentSegment.SubSegments;
+
+            Debug.Assert(!String.IsNullOrEmpty(targetName), "Must have been validated during EntityPropertyMappingAttribute construction");
+            String[] targetSegments = targetName.Split('/');
+            
+            for (int i = 0; i < targetSegments.Length; i++)
+            {
+                String targetSegment = targetSegments[i];
+
+                if (targetSegment.Length == 0)
+                {
+                    throw new InvalidOperationException(Strings.EpmTargetTree_InvalidTargetPath(targetName));
+                }
+
+                if (targetSegment[0] == '@' && i != targetSegments.Length - 1)
+                {
+                    throw new InvalidOperationException(Strings.EpmTargetTree_AttributeInMiddle(targetSegment));
+                }
+
+                EpmTargetPathSegment foundSegment = activeSubSegments.SingleOrDefault(
+                                                        segment => segment.SegmentName == targetSegment &&
+                                                        (isSyndication || segment.SegmentNamespaceUri == namespaceUri));
+                if (foundSegment != null)
+                {
+                    currentSegment = foundSegment;
+                }
+                else
+                {
+                    currentSegment = new EpmTargetPathSegment(targetSegment, namespaceUri, namespacePrefix, currentSegment);
+                    if (targetSegment[0] == '@')
+                    {
+                        activeSubSegments.Insert(0, currentSegment);
+                    }
+                    else
+                    {
+                        activeSubSegments.Add(currentSegment);
+                    }
+                }
+
+                activeSubSegments = currentSegment.SubSegments;
+            }
+
+            if (currentSegment.HasContent)
+            {
+                throw new ArgumentException(Strings.EpmTargetTree_DuplicateEpmAttrsWithSameTargetName(EpmTargetTree.GetPropertyNameFromEpmInfo(currentSegment.EpmInfo), currentSegment.EpmInfo.DefiningType.Name, currentSegment.EpmInfo.Attribute.SourcePath, epmInfo.Attribute.SourcePath));
+            }
+
+            if (!epmInfo.Attribute.KeepInContent)
+            {
+                this.countOfNonContentProperties++;
+            }
+
+            currentSegment.EpmInfo = epmInfo;
+            
+            if (EpmTargetTree.HasMixedContent(this.NonSyndicationRoot, false))
+            {
+                throw new InvalidOperationException(Strings.EpmTargetTree_InvalidTargetPath(targetName));
+            }
+        }
+
+        internal void Remove(EntityPropertyMappingInfo epmInfo)
+        {
+            String targetName = epmInfo.Attribute.TargetPath;
+            bool isSyndication = epmInfo.Attribute.TargetSyndicationItem != SyndicationItemProperty.CustomProperty;
+            String namespaceUri = epmInfo.Attribute.TargetNamespaceUri;
+
+            EpmTargetPathSegment currentSegment = isSyndication ? this.SyndicationRoot : this.NonSyndicationRoot;
+            List<EpmTargetPathSegment> activeSubSegments = currentSegment.SubSegments;
+
+            Debug.Assert(!String.IsNullOrEmpty(targetName), "Must have been validated during EntityPropertyMappingAttribute construction");
+            String[] targetSegments = targetName.Split('/');
+            for (int i = 0; i < targetSegments.Length; i++)
+            {
+                String targetSegment = targetSegments[i];
+
+                if (targetSegment.Length == 0)
+                {
+                    throw new InvalidOperationException(Strings.EpmTargetTree_InvalidTargetPath(targetName));
+                }
+
+                if (targetSegment[0] == '@' && i != targetSegments.Length - 1)
+                {
+                    throw new InvalidOperationException(Strings.EpmTargetTree_AttributeInMiddle(targetSegment));
+                }
+
+                EpmTargetPathSegment foundSegment = activeSubSegments.FirstOrDefault(
+                                                        segment => segment.SegmentName == targetSegment &&
+                                                        (isSyndication || segment.SegmentNamespaceUri == namespaceUri));
+                if (foundSegment != null)
+                {
+                    currentSegment = foundSegment;
+                }
+                else
+                {
+                    return;
+                }
+
+                activeSubSegments = currentSegment.SubSegments;
+            }
+
+            if (currentSegment.HasContent)
+            {
+                if (!currentSegment.EpmInfo.Attribute.KeepInContent)
+                {
+                    this.countOfNonContentProperties--;
+                }
+
+                do
+                {
+                    EpmTargetPathSegment parentSegment = currentSegment.ParentSegment;
+                    parentSegment.SubSegments.Remove(currentSegment);
+                    currentSegment = parentSegment;
+                }
+                while (currentSegment.ParentSegment != null && !currentSegment.HasContent && currentSegment.SubSegments.Count == 0);
+            }
+        }
+        
+        private static bool HasMixedContent(EpmTargetPathSegment currentSegment, bool ancestorHasContent)
+        {
+            foreach (EpmTargetPathSegment childSegment in currentSegment.SubSegments.Where(s => !s.IsAttribute))
+            {
+                if (childSegment.HasContent && ancestorHasContent)
+                {
+                    return true;
+                }
+            
+                if (HasMixedContent(childSegment, childSegment.HasContent || ancestorHasContent))
+                {
+                    return true;
+                }
+            }
+            
+            return false;
+        }
+        
+        private static String GetPropertyNameFromEpmInfo(EntityPropertyMappingInfo epmInfo)
+        {
+            {
+                if (epmInfo.Attribute.TargetSyndicationItem != SyndicationItemProperty.CustomProperty)
+                {
+                    return epmInfo.Attribute.TargetSyndicationItem.ToString();
+                }
+                else
+                {
+                    return epmInfo.Attribute.TargetPath;
+                }
+            }
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/HttpProcessUtility.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/HttpProcessUtility.cs
@@ -1,399 +1,399 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.Text;
-
-    internal static class HttpProcessUtility
-    {
-        internal static readonly UTF8Encoding EncodingUtf8NoPreamble = new UTF8Encoding(false, true);
-
-        internal static Encoding FallbackEncoding
-        {
-            get
-            {
-                return EncodingUtf8NoPreamble;
-            }
-        }
-
-        private static Encoding MissingEncoding
-        {
-            get
-            {
-#if ASTORIA_LIGHT                
-                return Encoding.UTF8;
-#else
-                return Encoding.GetEncoding("ISO-8859-1", new EncoderExceptionFallback(), new DecoderExceptionFallback());
-#endif
-            }
-        }
-
-
-        internal static KeyValuePair<string, string>[] ReadContentType(string contentType, out string mime, out Encoding encoding)
-        {
-            if (String.IsNullOrEmpty(contentType))
-            {
-                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_ContentTypeMissing);
-            }
-
-            MediaType mediaType = ReadMediaType(contentType);
-            mime = mediaType.MimeType;
-            encoding = mediaType.SelectEncoding();
-            return mediaType.Parameters;
-        }
-
-        internal static bool TryReadVersion(string text, out KeyValuePair<Version, string> result)
-        {
-            Debug.Assert(text != null, "text != null");
-
-            int separator = text.IndexOf(';');
-            string versionText, libraryName;
-            if (separator >= 0)
-            {
-                versionText = text.Substring(0, separator);
-                libraryName = text.Substring(separator + 1).Trim();
-            }
-            else
-            {
-                versionText = text;
-                libraryName = null;
-            }
-
-            result = default(KeyValuePair<Version, string>);
-            versionText = versionText.Trim();
-
-            bool dotFound = false;
-            for (int i = 0; i < versionText.Length; i++)
-            {
-                if (versionText[i] == '.')
-                {
-                    if (dotFound)
-                    {
-                        return false;
-                    }
-
-                    dotFound = true;
-                }
-                else if (versionText[i] < '0' || versionText[i] > '9')
-                {
-                    return false;
-                }
-            }
-
-            try
-            {
-                result = new KeyValuePair<Version, string>(new Version(versionText), libraryName);
-                return true;
-            }
-            catch (Exception e)
-            {
-                if (e is FormatException || e is OverflowException || e is ArgumentException)
-                {
-                    return false;
-                }
-
-                throw;
-            }
-        }
-
-        private static Encoding EncodingFromName(string name)
-        {
-            if (name == null)
-            {
-                return MissingEncoding;
-            }
-
-            name = name.Trim();
-            if (name.Length == 0)
-            {
-                return MissingEncoding;
-            }
-            else
-            {
-                try
-                {
-#if ASTORIA_LIGHT
-                    return Encoding.UTF8;
-#else
-                    return Encoding.GetEncoding(name);
-#endif
-                }
-                catch (ArgumentException)
-                {
-                    throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_EncodingNotSupported(name));
-                }
-            }
-        }
-
-
-        private static void ReadMediaTypeAndSubtype(string text, ref int textIndex, out string type, out string subType)
-        {
-            Debug.Assert(text != null, "text != null");
-            int textStart = textIndex;
-            if (ReadToken(text, ref textIndex))
-            {
-                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeUnspecified);
-            }
-
-            if (text[textIndex] != '/')
-            {
-                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeRequiresSlash);
-            }
-
-            type = text.Substring(textStart, textIndex - textStart);
-            textIndex++;
-
-            int subTypeStart = textIndex;
-            ReadToken(text, ref textIndex);
-
-            if (textIndex == subTypeStart)
-            {
-                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeRequiresSubType);
-            }
-
-            subType = text.Substring(subTypeStart, textIndex - subTypeStart);
-        }
-
-        private static MediaType ReadMediaType(string text)
-        {
-            Debug.Assert(text != null, "text != null");
-
-            string type;
-            string subType;
-            int textIndex = 0;
-            ReadMediaTypeAndSubtype(text, ref textIndex, out type, out subType);
-
-            KeyValuePair<string, string>[] parameters = null;
-            while (!SkipWhitespace(text, ref textIndex))
-            {
-                if (text[textIndex] != ';')
-                {
-                    throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter);
-                }
-
-                textIndex++;
-                if (SkipWhitespace(text, ref textIndex))
-                {
-                    break;
-                }
-
-                ReadMediaTypeParameter(text, ref textIndex, ref parameters);
-            }
-
-            return new MediaType(type, subType, parameters);
-        }
-
-        private static bool ReadToken(string text, ref int textIndex)
-        {
-            while (textIndex < text.Length && IsHttpToken(text[textIndex]))
-            {
-                textIndex++;
-            }
-
-            return (textIndex == text.Length);
-        }
-
-        private static bool SkipWhitespace(string text, ref int textIndex)
-        {
-            Debug.Assert(text != null, "text != null");
-            Debug.Assert(text.Length >= 0, "text >= 0");
-            Debug.Assert(textIndex <= text.Length, "text <= text.Length");
-
-            while (textIndex < text.Length && Char.IsWhiteSpace(text, textIndex))
-            {
-                textIndex++;
-            }
-
-            return (textIndex == text.Length);
-        }
-
-        private static void ReadMediaTypeParameter(string text, ref int textIndex, ref KeyValuePair<string, string>[] parameters)
-        {
-            int startIndex = textIndex;
-            if (ReadToken(text, ref textIndex))
-            {
-                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeMissingValue);
-            }
-
-            string parameterName = text.Substring(startIndex, textIndex - startIndex);
-            if (text[textIndex] != '=')
-            {
-                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeMissingValue);
-            }
-
-            textIndex++;
-
-            string parameterValue = ReadQuotedParameterValue(parameterName, text, ref textIndex);
-
-            if (parameters == null)
-            {
-                parameters = new KeyValuePair<string, string>[1];
-            }
-            else
-            {
-                KeyValuePair<string, string>[] grow = new KeyValuePair<string, string>[parameters.Length + 1];
-                Array.Copy(parameters, grow, parameters.Length);
-                parameters = grow;
-            }
-
-            parameters[parameters.Length - 1] = new KeyValuePair<string, string>(parameterName, parameterValue);
-        }
-
-        private static string ReadQuotedParameterValue(string parameterName, string headerText, ref int textIndex)
-        {
-            StringBuilder parameterValue = new StringBuilder();
-            
-            bool valueIsQuoted = false;
-            if (textIndex < headerText.Length)
-            {
-                if (headerText[textIndex] == '\"')
-                {
-                    textIndex++;
-                    valueIsQuoted = true;
-                }
-            }
-
-            while (textIndex < headerText.Length)
-            {
-                char currentChar = headerText[textIndex];
-
-                if (currentChar == '\\' || currentChar == '\"')
-                {
-                    if (!valueIsQuoted)
-                    {
-                        throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_EscapeCharWithoutQuotes(parameterName));
-                    }
-
-                    textIndex++;
-
-                    if (currentChar == '\"')
-                    {
-                        valueIsQuoted = false;
-                        break;
-                    }
-
-                    if (textIndex >= headerText.Length)
-                    {
-                        throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_EscapeCharAtEnd(parameterName));
-                    }
-
-                    currentChar = headerText[textIndex];        
-                }
-                else
-                if (!IsHttpToken(currentChar))
-                {
-                    break;
-                }
-
-                parameterValue.Append(currentChar);
-                textIndex++;
-            }
-
-            if (valueIsQuoted)
-            {
-                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_ClosingQuoteNotFound(parameterName));
-            }
-
-            return parameterValue.ToString();
-        }
-
-
-        private static bool IsHttpSeparator(char c)
-        {
-            return
-                c == '(' || c == ')' || c == '<' || c == '>' || c == '@' ||
-                c == ',' || c == ';' || c == ':' || c == '\\' || c == '"' ||
-                c == '/' || c == '[' || c == ']' || c == '?' || c == '=' ||
-                c == '{' || c == '}' || c == ' ' || c == '\x9';
-        }
-
-        private static bool IsHttpToken(char c)
-        {
-            return c < '\x7F' && c > '\x1F' && !IsHttpSeparator(c);
-        }
-
-
-        [DebuggerDisplay("MediaType [{type}/{subType}]")]
-        private sealed class MediaType
-        {
-            private readonly KeyValuePair<string, string>[] parameters;
-
-            private readonly string subType;
-
-            private readonly string type;
-
-            internal MediaType(string type, string subType, KeyValuePair<string, string>[] parameters)
-            {
-                Debug.Assert(type != null, "type != null");
-                Debug.Assert(subType != null, "subType != null");
-
-                this.type = type;
-                this.subType = subType;
-                this.parameters = parameters;
-            }
-
-            internal string MimeType
-            {
-                get { return this.type + "/" + this.subType; }
-            }
-
-            internal KeyValuePair<string, string>[] Parameters
-            {
-                get { return this.parameters; }
-            }
-
-
-            internal Encoding SelectEncoding()
-            {
-                if (this.parameters != null)
-                {
-                    foreach (KeyValuePair<string, string> parameter in this.parameters)
-                    {
-                        if (String.Equals(parameter.Key, XmlConstants.HttpCharsetParameter, StringComparison.OrdinalIgnoreCase))
-                        {
-                            string encodingName = parameter.Value.Trim();
-                            if (encodingName.Length > 0)
-                            {
-                                return EncodingFromName(parameter.Value);
-                            }
-                        }
-                    }
-                }
-
-                if (String.Equals(this.type, XmlConstants.MimeTextType, StringComparison.OrdinalIgnoreCase))
-                {
-                    if (String.Equals(this.subType, XmlConstants.MimeXmlSubType, StringComparison.OrdinalIgnoreCase))
-                    {
-                        return null;
-                    }
-                    else
-                    {
-                        return MissingEncoding;
-                    }
-                }
-                else if (String.Equals(this.type, XmlConstants.MimeApplicationType, StringComparison.OrdinalIgnoreCase) &&
-                    String.Equals(this.subType, XmlConstants.MimeJsonSubType, StringComparison.OrdinalIgnoreCase))
-                {
-                    return FallbackEncoding;
-                }
-                else
-                {
-                    return null;
-                }
-            }
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Diagnostics;
+    using System.Text;
+
+    internal static class HttpProcessUtility
+    {
+        internal static readonly UTF8Encoding EncodingUtf8NoPreamble = new UTF8Encoding(false, true);
+
+        internal static Encoding FallbackEncoding
+        {
+            get
+            {
+                return EncodingUtf8NoPreamble;
+            }
+        }
+
+        private static Encoding MissingEncoding
+        {
+            get
+            {
+#if ASTORIA_LIGHT                
+                return Encoding.UTF8;
+#else
+                return Encoding.GetEncoding("ISO-8859-1", new EncoderExceptionFallback(), new DecoderExceptionFallback());
+#endif
+            }
+        }
+
+
+        internal static KeyValuePair<string, string>[] ReadContentType(string contentType, out string mime, out Encoding encoding)
+        {
+            if (String.IsNullOrEmpty(contentType))
+            {
+                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_ContentTypeMissing);
+            }
+
+            MediaType mediaType = ReadMediaType(contentType);
+            mime = mediaType.MimeType;
+            encoding = mediaType.SelectEncoding();
+            return mediaType.Parameters;
+        }
+
+        internal static bool TryReadVersion(string text, out KeyValuePair<Version, string> result)
+        {
+            Debug.Assert(text != null, "text != null");
+
+            int separator = text.IndexOf(';');
+            string versionText, libraryName;
+            if (separator >= 0)
+            {
+                versionText = text.Substring(0, separator);
+                libraryName = text.Substring(separator + 1).Trim();
+            }
+            else
+            {
+                versionText = text;
+                libraryName = null;
+            }
+
+            result = default(KeyValuePair<Version, string>);
+            versionText = versionText.Trim();
+
+            bool dotFound = false;
+            for (int i = 0; i < versionText.Length; i++)
+            {
+                if (versionText[i] == '.')
+                {
+                    if (dotFound)
+                    {
+                        return false;
+                    }
+
+                    dotFound = true;
+                }
+                else if (versionText[i] < '0' || versionText[i] > '9')
+                {
+                    return false;
+                }
+            }
+
+            try
+            {
+                result = new KeyValuePair<Version, string>(new Version(versionText), libraryName);
+                return true;
+            }
+            catch (Exception e)
+            {
+                if (e is FormatException || e is OverflowException || e is ArgumentException)
+                {
+                    return false;
+                }
+
+                throw;
+            }
+        }
+
+        private static Encoding EncodingFromName(string name)
+        {
+            if (name == null)
+            {
+                return MissingEncoding;
+            }
+
+            name = name.Trim();
+            if (name.Length == 0)
+            {
+                return MissingEncoding;
+            }
+            else
+            {
+                try
+                {
+#if ASTORIA_LIGHT
+                    return Encoding.UTF8;
+#else
+                    return Encoding.GetEncoding(name);
+#endif
+                }
+                catch (ArgumentException)
+                {
+                    throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_EncodingNotSupported(name));
+                }
+            }
+        }
+
+
+        private static void ReadMediaTypeAndSubtype(string text, ref int textIndex, out string type, out string subType)
+        {
+            Debug.Assert(text != null, "text != null");
+            int textStart = textIndex;
+            if (ReadToken(text, ref textIndex))
+            {
+                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeUnspecified);
+            }
+
+            if (text[textIndex] != '/')
+            {
+                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeRequiresSlash);
+            }
+
+            type = text.Substring(textStart, textIndex - textStart);
+            textIndex++;
+
+            int subTypeStart = textIndex;
+            ReadToken(text, ref textIndex);
+
+            if (textIndex == subTypeStart)
+            {
+                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeRequiresSubType);
+            }
+
+            subType = text.Substring(subTypeStart, textIndex - subTypeStart);
+        }
+
+        private static MediaType ReadMediaType(string text)
+        {
+            Debug.Assert(text != null, "text != null");
+
+            string type;
+            string subType;
+            int textIndex = 0;
+            ReadMediaTypeAndSubtype(text, ref textIndex, out type, out subType);
+
+            KeyValuePair<string, string>[] parameters = null;
+            while (!SkipWhitespace(text, ref textIndex))
+            {
+                if (text[textIndex] != ';')
+                {
+                    throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeRequiresSemicolonBeforeParameter);
+                }
+
+                textIndex++;
+                if (SkipWhitespace(text, ref textIndex))
+                {
+                    break;
+                }
+
+                ReadMediaTypeParameter(text, ref textIndex, ref parameters);
+            }
+
+            return new MediaType(type, subType, parameters);
+        }
+
+        private static bool ReadToken(string text, ref int textIndex)
+        {
+            while (textIndex < text.Length && IsHttpToken(text[textIndex]))
+            {
+                textIndex++;
+            }
+
+            return (textIndex == text.Length);
+        }
+
+        private static bool SkipWhitespace(string text, ref int textIndex)
+        {
+            Debug.Assert(text != null, "text != null");
+            Debug.Assert(text.Length >= 0, "text >= 0");
+            Debug.Assert(textIndex <= text.Length, "text <= text.Length");
+
+            while (textIndex < text.Length && Char.IsWhiteSpace(text, textIndex))
+            {
+                textIndex++;
+            }
+
+            return (textIndex == text.Length);
+        }
+
+        private static void ReadMediaTypeParameter(string text, ref int textIndex, ref KeyValuePair<string, string>[] parameters)
+        {
+            int startIndex = textIndex;
+            if (ReadToken(text, ref textIndex))
+            {
+                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeMissingValue);
+            }
+
+            string parameterName = text.Substring(startIndex, textIndex - startIndex);
+            if (text[textIndex] != '=')
+            {
+                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeMissingValue);
+            }
+
+            textIndex++;
+
+            string parameterValue = ReadQuotedParameterValue(parameterName, text, ref textIndex);
+
+            if (parameters == null)
+            {
+                parameters = new KeyValuePair<string, string>[1];
+            }
+            else
+            {
+                KeyValuePair<string, string>[] grow = new KeyValuePair<string, string>[parameters.Length + 1];
+                Array.Copy(parameters, grow, parameters.Length);
+                parameters = grow;
+            }
+
+            parameters[parameters.Length - 1] = new KeyValuePair<string, string>(parameterName, parameterValue);
+        }
+
+        private static string ReadQuotedParameterValue(string parameterName, string headerText, ref int textIndex)
+        {
+            StringBuilder parameterValue = new StringBuilder();
+            
+            bool valueIsQuoted = false;
+            if (textIndex < headerText.Length)
+            {
+                if (headerText[textIndex] == '\"')
+                {
+                    textIndex++;
+                    valueIsQuoted = true;
+                }
+            }
+
+            while (textIndex < headerText.Length)
+            {
+                char currentChar = headerText[textIndex];
+
+                if (currentChar == '\\' || currentChar == '\"')
+                {
+                    if (!valueIsQuoted)
+                    {
+                        throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_EscapeCharWithoutQuotes(parameterName));
+                    }
+
+                    textIndex++;
+
+                    if (currentChar == '\"')
+                    {
+                        valueIsQuoted = false;
+                        break;
+                    }
+
+                    if (textIndex >= headerText.Length)
+                    {
+                        throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_EscapeCharAtEnd(parameterName));
+                    }
+
+                    currentChar = headerText[textIndex];        
+                }
+                else
+                if (!IsHttpToken(currentChar))
+                {
+                    break;
+                }
+
+                parameterValue.Append(currentChar);
+                textIndex++;
+            }
+
+            if (valueIsQuoted)
+            {
+                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_ClosingQuoteNotFound(parameterName));
+            }
+
+            return parameterValue.ToString();
+        }
+
+
+        private static bool IsHttpSeparator(char c)
+        {
+            return
+                c == '(' || c == ')' || c == '<' || c == '>' || c == '@' ||
+                c == ',' || c == ';' || c == ':' || c == '\\' || c == '"' ||
+                c == '/' || c == '[' || c == ']' || c == '?' || c == '=' ||
+                c == '{' || c == '}' || c == ' ' || c == '\x9';
+        }
+
+        private static bool IsHttpToken(char c)
+        {
+            return c < '\x7F' && c > '\x1F' && !IsHttpSeparator(c);
+        }
+
+
+        [DebuggerDisplay("MediaType [{type}/{subType}]")]
+        private sealed class MediaType
+        {
+            private readonly KeyValuePair<string, string>[] parameters;
+
+            private readonly string subType;
+
+            private readonly string type;
+
+            internal MediaType(string type, string subType, KeyValuePair<string, string>[] parameters)
+            {
+                Debug.Assert(type != null, "type != null");
+                Debug.Assert(subType != null, "subType != null");
+
+                this.type = type;
+                this.subType = subType;
+                this.parameters = parameters;
+            }
+
+            internal string MimeType
+            {
+                get { return this.type + "/" + this.subType; }
+            }
+
+            internal KeyValuePair<string, string>[] Parameters
+            {
+                get { return this.parameters; }
+            }
+
+
+            internal Encoding SelectEncoding()
+            {
+                if (this.parameters != null)
+                {
+                    foreach (KeyValuePair<string, string> parameter in this.parameters)
+                    {
+                        if (String.Equals(parameter.Key, XmlConstants.HttpCharsetParameter, StringComparison.OrdinalIgnoreCase))
+                        {
+                            string encodingName = parameter.Value.Trim();
+                            if (encodingName.Length > 0)
+                            {
+                                return EncodingFromName(parameter.Value);
+                            }
+                        }
+                    }
+                }
+
+                if (String.Equals(this.type, XmlConstants.MimeTextType, StringComparison.OrdinalIgnoreCase))
+                {
+                    if (String.Equals(this.subType, XmlConstants.MimeXmlSubType, StringComparison.OrdinalIgnoreCase))
+                    {
+                        return null;
+                    }
+                    else
+                    {
+                        return MissingEncoding;
+                    }
+                }
+                else if (String.Equals(this.type, XmlConstants.MimeApplicationType, StringComparison.OrdinalIgnoreCase) &&
+                    String.Equals(this.subType, XmlConstants.MimeJsonSubType, StringComparison.OrdinalIgnoreCase))
+                {
+                    return FallbackEncoding;
+                }
+                else
+                {
+                    return null;
+                }
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Parsing/WebConvert.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Parsing/WebConvert.cs
@@ -1,192 +1,192 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Parsing
-{
-    using System;
-    using System.Diagnostics;
-    using System.Text;
-    using System.Xml;
-    using System.Data.Services.Client;
-
-    internal static class WebConvert
-    {
-        private const string HexValues = "0123456789ABCDEF";
-
-        private const string XmlHexEncodePrefix = "0x";
-
-
-        internal static string ConvertByteArrayToKeyString(byte[] byteArray)
-        {
-            StringBuilder hexBuilder = new StringBuilder(3 + byteArray.Length * 2);
-            hexBuilder.Append(XmlConstants.XmlBinaryPrefix);
-            hexBuilder.Append("'");
-            for (int i = 0; i < byteArray.Length; i++)
-            {
-                hexBuilder.Append(HexValues[byteArray[i] >> 4]);
-                hexBuilder.Append(HexValues[byteArray[i] & 0x0F]);
-            }
-
-            hexBuilder.Append("'");
-            return hexBuilder.ToString();
-        }
-
-
-        internal static bool IsKeyTypeQuoted(Type type)
-        {
-            Debug.Assert(type != null, "type != null");
-            return type == typeof(System.Xml.Linq.XElement) || type == typeof(string);
-        }
-
-        internal static bool TryKeyPrimitiveToString(object value, out string result)
-        {
-            Debug.Assert(value != null, "value != null");
-            if (value.GetType() == typeof(byte[]))
-            {
-                result = ConvertByteArrayToKeyString((byte[])value);
-            }
-            else
-            {
-                if (!TryXmlPrimitiveToString(value, out result))
-                {
-                    return false;
-                }
-
-                Debug.Assert(result != null, "result != null");
-                if (value.GetType() == typeof(DateTime))
-                {
-                    result = XmlConstants.LiteralPrefixDateTime + "'" + result + "'";
-                }
-                else if (value.GetType() == typeof(Decimal))
-                {
-                    result = result + XmlConstants.XmlDecimalLiteralSuffix;
-                }
-                else if (value.GetType() == typeof(Guid))
-                {
-                    result = XmlConstants.LiteralPrefixGuid + "'" + result + "'";
-                }
-                else if (value.GetType() == typeof(Int64))
-                {
-                    result = result + XmlConstants.XmlInt64LiteralSuffix;
-                }
-                else if (value.GetType() == typeof(Single))
-                {
-                    result = result + XmlConstants.XmlSingleLiteralSuffix;
-                }
-                else if (value.GetType() == typeof(double))
-                {
-                    result = AppendDecimalMarkerToDouble(result);
-                }
-                else if (IsKeyTypeQuoted(value.GetType()))
-                {
-                    result = "'" + result.Replace("'", "''") + "'";
-                }
-            }
-
-            return true;
-        }
-
-        internal static bool TryXmlPrimitiveToString(object value, out string result)
-        {
-            Debug.Assert(value != null, "value != null");
-            result = null;
-
-            Type valueType = value.GetType();
-            valueType = Nullable.GetUnderlyingType(valueType) ?? valueType;
-
-            if (typeof(String) == valueType)
-            {
-                result = (string)value;
-            }
-            else if (typeof(Boolean) == valueType)
-            {
-                result = XmlConvert.ToString((bool)value);
-            }
-            else if (typeof(Byte) == valueType)
-            {
-                result = XmlConvert.ToString((byte)value);
-            }
-            else if (typeof(DateTime) == valueType)
-            {
-                result = XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.RoundtripKind);
-            }
-            else if (typeof(Decimal) == valueType)
-            {
-                result = XmlConvert.ToString((decimal)value);
-            }
-            else if (typeof(Double) == valueType)
-            {
-                result = XmlConvert.ToString((double)value);
-            }
-            else if (typeof(Guid) == valueType)
-            {
-                result = value.ToString();
-            }
-            else if (typeof(Int16) == valueType)
-            {
-                result = XmlConvert.ToString((Int16)value);
-            }
-            else if (typeof(Int32) == valueType)
-            {
-                result = XmlConvert.ToString((Int32)value);
-            }
-            else if (typeof(Int64) == valueType)
-            {
-                result = XmlConvert.ToString((Int64)value);
-            }
-            else if (typeof(SByte) == valueType)
-            {
-                result = XmlConvert.ToString((SByte)value);
-            }
-            else if (typeof(Single) == valueType)
-            {
-                result = XmlConvert.ToString((Single)value);
-            }
-            else if (typeof(byte[]) == valueType)
-            {
-                byte[] byteArray = (byte[])value;
-                result = Convert.ToBase64String(byteArray);
-            }
-            #if !ASTORIA_LIGHT
-            else if (ClientConvert.IsBinaryValue(value))
-            {
-                return ClientConvert.TryKeyBinaryToString(value, out result);
-            }
-            #endif
-            else if (typeof(System.Xml.Linq.XElement) == valueType)
-            {
-                result = ((System.Xml.Linq.XElement)value).ToString(System.Xml.Linq.SaveOptions.None);
-            }
-            else
-            {
-                result = null;
-                return false;
-            }
-
-            Debug.Assert(result != null, "result != null");
-            return true;
-        }
-
-        private static string AppendDecimalMarkerToDouble(string input)
-        {
-            foreach (char c in input)
-            {
-                if (!Char.IsDigit(c))
-                {
-                    return input;
-                }
-            }
-
-            return input + ".0";
-        }
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Parsing
+{
+    using System;
+    using System.Diagnostics;
+    using System.Text;
+    using System.Xml;
+    using System.Data.Services.Client;
+
+    internal static class WebConvert
+    {
+        private const string HexValues = "0123456789ABCDEF";
+
+        private const string XmlHexEncodePrefix = "0x";
+
+
+        internal static string ConvertByteArrayToKeyString(byte[] byteArray)
+        {
+            StringBuilder hexBuilder = new StringBuilder(3 + byteArray.Length * 2);
+            hexBuilder.Append(XmlConstants.XmlBinaryPrefix);
+            hexBuilder.Append("'");
+            for (int i = 0; i < byteArray.Length; i++)
+            {
+                hexBuilder.Append(HexValues[byteArray[i] >> 4]);
+                hexBuilder.Append(HexValues[byteArray[i] & 0x0F]);
+            }
+
+            hexBuilder.Append("'");
+            return hexBuilder.ToString();
+        }
+
+
+        internal static bool IsKeyTypeQuoted(Type type)
+        {
+            Debug.Assert(type != null, "type != null");
+            return type == typeof(System.Xml.Linq.XElement) || type == typeof(string);
+        }
+
+        internal static bool TryKeyPrimitiveToString(object value, out string result)
+        {
+            Debug.Assert(value != null, "value != null");
+            if (value.GetType() == typeof(byte[]))
+            {
+                result = ConvertByteArrayToKeyString((byte[])value);
+            }
+            else
+            {
+                if (!TryXmlPrimitiveToString(value, out result))
+                {
+                    return false;
+                }
+
+                Debug.Assert(result != null, "result != null");
+                if (value.GetType() == typeof(DateTime))
+                {
+                    result = XmlConstants.LiteralPrefixDateTime + "'" + result + "'";
+                }
+                else if (value.GetType() == typeof(Decimal))
+                {
+                    result = result + XmlConstants.XmlDecimalLiteralSuffix;
+                }
+                else if (value.GetType() == typeof(Guid))
+                {
+                    result = XmlConstants.LiteralPrefixGuid + "'" + result + "'";
+                }
+                else if (value.GetType() == typeof(Int64))
+                {
+                    result = result + XmlConstants.XmlInt64LiteralSuffix;
+                }
+                else if (value.GetType() == typeof(Single))
+                {
+                    result = result + XmlConstants.XmlSingleLiteralSuffix;
+                }
+                else if (value.GetType() == typeof(double))
+                {
+                    result = AppendDecimalMarkerToDouble(result);
+                }
+                else if (IsKeyTypeQuoted(value.GetType()))
+                {
+                    result = "'" + result.Replace("'", "''") + "'";
+                }
+            }
+
+            return true;
+        }
+
+        internal static bool TryXmlPrimitiveToString(object value, out string result)
+        {
+            Debug.Assert(value != null, "value != null");
+            result = null;
+
+            Type valueType = value.GetType();
+            valueType = Nullable.GetUnderlyingType(valueType) ?? valueType;
+
+            if (typeof(String) == valueType)
+            {
+                result = (string)value;
+            }
+            else if (typeof(Boolean) == valueType)
+            {
+                result = XmlConvert.ToString((bool)value);
+            }
+            else if (typeof(Byte) == valueType)
+            {
+                result = XmlConvert.ToString((byte)value);
+            }
+            else if (typeof(DateTime) == valueType)
+            {
+                result = XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.RoundtripKind);
+            }
+            else if (typeof(Decimal) == valueType)
+            {
+                result = XmlConvert.ToString((decimal)value);
+            }
+            else if (typeof(Double) == valueType)
+            {
+                result = XmlConvert.ToString((double)value);
+            }
+            else if (typeof(Guid) == valueType)
+            {
+                result = value.ToString();
+            }
+            else if (typeof(Int16) == valueType)
+            {
+                result = XmlConvert.ToString((Int16)value);
+            }
+            else if (typeof(Int32) == valueType)
+            {
+                result = XmlConvert.ToString((Int32)value);
+            }
+            else if (typeof(Int64) == valueType)
+            {
+                result = XmlConvert.ToString((Int64)value);
+            }
+            else if (typeof(SByte) == valueType)
+            {
+                result = XmlConvert.ToString((SByte)value);
+            }
+            else if (typeof(Single) == valueType)
+            {
+                result = XmlConvert.ToString((Single)value);
+            }
+            else if (typeof(byte[]) == valueType)
+            {
+                byte[] byteArray = (byte[])value;
+                result = Convert.ToBase64String(byteArray);
+            }
+            #if !ASTORIA_LIGHT
+            else if (ClientConvert.IsBinaryValue(value))
+            {
+                return ClientConvert.TryKeyBinaryToString(value, out result);
+            }
+            #endif
+            else if (typeof(System.Xml.Linq.XElement) == valueType)
+            {
+                result = ((System.Xml.Linq.XElement)value).ToString(System.Xml.Linq.SaveOptions.None);
+            }
+            else
+            {
+                result = null;
+                return false;
+            }
+
+            Debug.Assert(result != null, "result != null");
+            return true;
+        }
+
+        private static string AppendDecimalMarkerToDouble(string input)
+        {
+            foreach (char c in input)
+            {
+                if (!Char.IsDigit(c))
+                {
+                    return input;
+                }
+            }
+
+            return input + ".0";
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Providers/EntityPropertyMappingInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/Providers/EntityPropertyMappingInfo.cs
@@ -1,35 +1,35 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Common
-{
-    [System.Diagnostics.DebuggerDisplay("EntityPropertyMappingInfo {DefiningType}")]
-    internal sealed class EntityPropertyMappingInfo
-    {
-        public EntityPropertyMappingAttribute Attribute 
-        { 
-            get; set; 
-        }
-
-        public Delegate PropValReader
-        {
-            get;
-            set;
-        }
-
-        public Type DefiningType
-        { 
-            get; 
-            set; 
-        }
-    }
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Common
+{
+    [System.Diagnostics.DebuggerDisplay("EntityPropertyMappingInfo {DefiningType}")]
+    internal sealed class EntityPropertyMappingInfo
+    {
+        public EntityPropertyMappingAttribute Attribute 
+        { 
+            get; set; 
+        }
+
+        public Delegate PropValReader
+        {
+            get;
+            set;
+        }
+
+        public Type DefiningType
+        { 
+            get; 
+            set; 
+        }
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services.Client/Server/System/Data/Services/XmlConstants.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services.Client/Server/System/Data/Services/XmlConstants.cs
@@ -1,610 +1,610 @@
-//Copyright 2010 Microsoft Corporation
-//
-//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
-//You may obtain a copy of the License at 
-//
-//http://www.apache.org/licenses/LICENSE-2.0 
-//
-//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
-//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-//See the License for the specific language governing permissions and limitations under the License.
-
-
-namespace System.Data.Services.Client
-{
-    internal static class XmlConstants
-    {
-        #region CLR / Reflection constants.
-
-        internal const string ClrServiceInitializationMethodName = "InitializeService";
-
-        #endregion CLR / Reflection constants.
-
-        #region HTTP constants.
-
-        internal const string HttpContentID = "Content-ID";
-
-        internal const string HttpContentLength = "Content-Length";
-
-        internal const string HttpContentType = "Content-Type";
-
-        internal const string HttpContentDisposition = "Content-Disposition";
-
-        internal const string HttpDataServiceVersion = "DataServiceVersion";
-
-        internal const string HttpMaxDataServiceVersion = "MaxDataServiceVersion";
-
-        internal const string HttpCacheControlNoCache = "no-cache";
-
-        internal const string HttpCharsetParameter = "charset";
-
-        internal const string HttpMethodGet = "GET";
-
-        internal const string HttpMethodPost = "POST";
-
-        internal const string HttpMethodPut = "PUT";
-
-        internal const string HttpMethodDelete = "DELETE";
-
-        internal const string HttpMethodMerge = "MERGE";
-
-        internal const string HttpQueryStringExpand = "$expand";
-
-        internal const string HttpQueryStringFilter = "$filter";
-
-        internal const string HttpQueryStringOrderBy = "$orderby";
-
-        internal const string HttpQueryStringSkip = "$skip";
-
-        internal const string HttpQueryStringTop = "$top";
-
-        internal const string HttpQueryStringInlineCount = "$inlinecount";
-
-        internal const string HttpQueryStringSkipToken = "$skiptoken";
-
-        internal const string SkipTokenPropertyPrefix = "SkipTokenProperty";
-
-        internal const string HttpQueryStringValueCount = "$count";
-
-        internal const string HttpQueryStringSelect = "$select";
-
-        internal const string HttpQValueParameter = "q";
-
-        internal const string HttpXMethod = "X-HTTP-Method";
-
-        internal const string HttpRequestAccept = "Accept";
-
-        internal const string HttpRequestAcceptCharset = "Accept-Charset";
-
-        internal const string HttpRequestIfMatch = "If-Match";
-
-        internal const string HttpRequestIfNoneMatch = "If-None-Match";
-
-        internal const string HttpMultipartBoundary = "boundary";
-        internal const string HttpMultipartBoundaryBatch = "batch";
-
-        internal const string HttpMultipartBoundaryChangeSet = "changeset";
-
-        internal const string HttpResponseAllow = "Allow";
-
-        internal const string HttpResponseCacheControl = "Cache-Control";
-
-        internal const string HttpResponseETag = "ETag";
-
-        internal const string HttpResponseLocation = "Location";
-
-        internal const string HttpResponseStatusCode = "Status-Code";
-
-        internal const string HttpMultipartBoundaryBatchResponse = "batchresponse";
-
-        internal const string HttpMultipartBoundaryChangesetResponse = "changesetresponse";
-
-        internal const string HttpContentTransferEncoding = "Content-Transfer-Encoding";
-
-        internal const string HttpVersionInBatching = "HTTP/1.1";
-
-        internal const string HttpAnyETag = "*";
-
-        internal const string HttpWeakETagPrefix = "W/\"";
-
-        internal const string HttpAcceptCharset = "Accept-Charset";
-
-        internal const string HttpCookie = "Cookie";
-
-        internal const string HttpSlug = "Slug";
-
-        #endregion HTTP constants.
-
-        #region MIME constants.
-
-        internal const string MimeAny = "*/*";
-
-        internal const string MimeApplicationAtom = "application/atom+xml";
-
-        internal const string MimeApplicationAtomService = "application/atomsvc+xml";
-
-        internal const string MimeApplicationJson = "application/json";
-
-        internal const string MimeApplicationOctetStream = "application/octet-stream";
-
-        internal const string MimeApplicationHttp = "application/http";
-
-        internal const string MimeApplicationType = "application";
-
-        internal const string MimeApplicationXml = "application/xml";
-
-        internal const string MimeJsonSubType = "json";
-
-        internal const string MimeMetadata = MimeApplicationXml;
-
-        internal const string MimeMultiPartMixed = "multipart/mixed";
-
-        internal const string MimeTextPlain = "text/plain";
-
-        internal const string MimeTextType = "text";
-
-        internal const string MimeTextXml = "text/xml";
-
-        internal const string MimeXmlSubType = "xml";
-
-        internal const string BatchRequestContentTransferEncoding = "binary";
-
-        internal const string LinkMimeTypeFeed = "application/atom+xml;type=feed";
-
-        internal const string LinkMimeTypeEntry = "application/atom+xml;type=entry";
-
-        internal const string Utf8Encoding = "UTF-8";
-
-        internal const string MimeTypeUtf8Encoding = ";charset=" + Utf8Encoding;
-        #endregion MIME constants.
-
-        #region URI constants.
-
-        internal const string UriHttpAbsolutePrefix = "http://host";
-
-        internal const string UriMetadataSegment = "$metadata";
-
-        internal const string UriValueSegment = "$value";
-
-        internal const string UriBatchSegment = "$batch";
-
-        internal const string UriLinkSegment = "$links";
-
-        internal const string UriCountSegment = "$count";
-
-        internal const string UriRowCountAllOption = "allpages";
-
-        internal const string UriRowCountOffOption = "none";
-
-        #endregion URI constants.
-
-        #region WCF constants.
-
-        internal const string WcfBinaryElementName = "Binary";
-
-        #endregion WCF constants.
-
-        #region ATOM constants
-        internal const string AtomContentElementName = "content";
-
-        internal const string AtomEntryElementName = "entry";
-
-        internal const string AtomFeedElementName = "feed";
-
-        internal const string AtomAuthorElementName = "author";
-
-        internal const string AtomContributorElementName = "contributor";
-
-        internal const string AtomCategoryElementName = "category";
-
-        internal const string AtomCategorySchemeAttributeName = "scheme";
-
-        internal const string AtomCategoryTermAttributeName = "term";
-
-        internal const string AtomIdElementName = "id";
-
-        internal const string AtomLinkElementName = "link";
-
-        internal const string AtomLinkRelationAttributeName = "rel";
-
-        internal const string AtomContentSrcAttributeName = "src";
-
-        internal const string AtomLinkNextAttributeString = "next";
-
-        internal const string MetadataAttributeEpmContentKind = "FC_ContentKind";
-
-        internal const string MetadataAttributeEpmKeepInContent = "FC_KeepInContent";
-
-        internal const string MetadataAttributeEpmNsPrefix = "FC_NsPrefix";
-
-        internal const string MetadataAttributeEpmNsUri = "FC_NsUri";
-
-        internal const string MetadataAttributeEpmTargetPath = "FC_TargetPath";
-
-        internal const string MetadataAttributeEpmSourcePath = "FC_SourcePath";
-
-        internal const string SyndAuthorEmail = "SyndicationAuthorEmail";
-
-        internal const string SyndAuthorName = "SyndicationAuthorName";
-
-        internal const string SyndAuthorUri = "SyndicationAuthorUri";
-
-        internal const string SyndPublished = "SyndicationPublished";
-
-        internal const string SyndRights = "SyndicationRights";
-
-        internal const string SyndSummary = "SyndicationSummary";
-
-        internal const string SyndTitle = "SyndicationTitle";
-
-        internal const string AtomUpdatedElementName = "updated";
-
-        internal const string SyndContributorEmail = "SyndicationContributorEmail";
-
-        internal const string SyndContributorName = "SyndicationContributorName";
-
-        internal const string SyndContributorUri = "SyndicationContributorUri";
-
-        internal const string SyndUpdated = "SyndicationUpdated";
-
-        internal const string SyndContentKindPlaintext = "text";
-
-        internal const string SyndContentKindHtml = "html";
-
-        internal const string SyndContentKindXHtml = "xhtml";
-
-        internal const string AtomHRefAttributeName = "href";
-
-        internal const string AtomSummaryElementName = "summary";
-
-        internal const string AtomNameElementName = "name";
-
-        internal const string AtomEmailElementName = "email";
-
-        internal const string AtomUriElementName = "uri";
-
-        internal const string AtomPublishedElementName = "published";
-
-        internal const string AtomRightsElementName = "rights";
-
-        internal const string AtomPublishingCollectionElementName = "collection";
-
-        internal const string AtomPublishingServiceElementName = "service";
-
-        internal const string AtomPublishingWorkspaceDefaultValue = "Default";
-
-        internal const string AtomPublishingWorkspaceElementName = "workspace";
-
-        internal const string AtomTitleElementName = "title";
-
-        internal const string AtomTypeAttributeName = "type";
-
-        internal const string AtomSelfRelationAttributeValue = "self";
-
-        internal const string AtomEditRelationAttributeValue = "edit";
-
-        internal const string AtomEditMediaRelationAttributeValue = "edit-media";
-
-        internal const string AtomNullAttributeName = "null";
-
-        internal const string AtomETagAttributeName = "etag";
-        
-        internal const string AtomInlineElementName = "inline";
-
-        internal const string AtomPropertiesElementName = "properties";
-
-        internal const string RowCountElement = "count";
-
-        #endregion ATOM constants
-
-        #region XML constants.
-
-        internal const string XmlCollectionItemElementName = "element";
-
-        internal const string XmlErrorElementName = "error";
-        
-        internal const string XmlErrorCodeElementName = "code";
-
-        internal const string XmlErrorInnerElementName = "innererror";
-
-        internal const string XmlErrorInternalExceptionElementName = "internalexception";
-
-        internal const string XmlErrorTypeElementName = "type";
-
-        internal const string XmlErrorStackTraceElementName = "stacktrace";
-        
-        internal const string XmlErrorMessageElementName = "message";
-        
-        internal const string XmlFalseLiteral = "false";
-
-        internal const string XmlTrueLiteral = "true";
-
-        internal const string XmlInfinityLiteral = "INF";
-
-        internal const string XmlNaNLiteral = "NaN";
-
-        internal const string XmlBaseAttributeName = "base";
-
-        internal const string XmlLangAttributeName = "lang";
-
-        internal const string XmlSpaceAttributeName = "space";
-
-        internal const string XmlSpacePreserveValue = "preserve";
-
-        internal const string XmlBaseAttributeNameWithPrefix = "xml:base";
-
-        #endregion XML constants.
-
-        #region XML namespaces.
-
-        internal const string EdmV1Namespace = "http://schemas.microsoft.com/ado/2006/04/edm";
-
-        internal const string EdmV1dot1Namespace = "http://schemas.microsoft.com/ado/2007/05/edm";
-
-        internal const string EdmV1dot2Namespace = "http://schemas.microsoft.com/ado/2008/01/edm";
-
-        internal const string DataWebNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices";
-
-        internal const string DataWebMetadataNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
-
-        internal const string DataWebRelatedNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices/related/";
-
-        internal const string DataWebSchemeNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices/scheme";
-
-        internal const string AppNamespace = "http://www.w3.org/2007/app";
-
-        internal const string AtomNamespace = "http://www.w3.org/2005/Atom";
-
-        internal const string XmlnsNamespacePrefix = "xmlns";
-
-        internal const string XmlNamespacePrefix = "xml";
-
-        internal const string DataWebNamespacePrefix = "d";
-
-        internal const string DataWebMetadataNamespacePrefix = "m";
-
-        internal const string XmlNamespacesNamespace = "http://www.w3.org/2000/xmlns/";
-
-        internal const string EdmxNamespace = "http://schemas.microsoft.com/ado/2007/06/edmx";
-
-        internal const string EdmxNamespacePrefix = "edmx";
-
-        #endregion XML namespaces.
-
-        #region CDM Schema Xml NodeNames
-
-        #region Constant node names in the CDM schema xml
-
-        internal const string Association = "Association";
-
-        internal const string AssociationSet = "AssociationSet";
-
-        internal const string ComplexType = "ComplexType";
-
-        internal const string Dependent = "Dependent";
-
-        internal const string EdmCollectionTypeFormat = "Collection({0})";
-
-        internal const string EdmEntitySetAttributeName = "EntitySet";
-
-        internal const string EdmFunctionImportElementName = "FunctionImport";
-
-        internal const string EdmModeAttributeName = "Mode";
-
-        internal const string EdmModeInValue = "In";
-
-        internal const string EdmParameterElementName = "Parameter";
-
-        internal const string EdmReturnTypeAttributeName = "ReturnType";
-
-        internal const string End = "End";
-
-        internal const string EntityType = "EntityType";
-
-        internal const string EntityContainer = "EntityContainer";
-
-        internal const string Key = "Key";
-
-        internal const string NavigationProperty = "NavigationProperty";
-
-        internal const string OnDelete = "OnDelete";
-
-        internal const string Principal = "Principal";
-
-        internal const string Property = "Property";
-
-        internal const string PropertyRef = "PropertyRef";
-
-        internal const string ReferentialConstraint = "ReferentialConstraint";
-
-        internal const string Role = "Role";
-
-        internal const string Schema = "Schema";
-
-        internal const string EdmxElement = "Edmx";
-
-        internal const string EdmxDataServicesElement = "DataServices";
-
-        internal const string EdmxVersion = "Version";
-
-        internal const string EdmxVersionValue = "1.0";
-
-        #endregion 
-
-        #region const attribute names in the CDM schema XML
-
-        internal const string Action = "Action";
-
-        internal const string BaseType = "BaseType";
-
-        internal const string EntitySet = "EntitySet";
-
-        internal const string FromRole = "FromRole";
-
-        internal const string Abstract = "Abstract";
-
-        internal const string Multiplicity = "Multiplicity";
-
-        internal const string Name = "Name";
-
-        internal const string Namespace = "Namespace";
-
-        internal const string ToRole = "ToRole";
-
-        internal const string Type = "Type";
-
-        internal const string Relationship = "Relationship";
-        #endregion 
-
-        #region values for multiplicity in Edm
-
-        internal const string Many = "*";
-
-        internal const string One = "1";
-
-        internal const string ZeroOrOne = "0..1";
-        #endregion
-
-        #region Edm Facets Names and Values
-
-        internal const string Nullable = "Nullable";
-
-        internal const string ConcurrencyAttribute = "ConcurrencyMode";
-
-        internal const string ConcurrencyFixedValue = "Fixed";
-
-        #endregion
-
-        #endregion // CDM Schema Xml NodeNames
-
-        #region DataWeb Elements and Attributes.
-
-        internal const string DataWebMimeTypeAttributeName = "MimeType";
-
-        internal const string DataWebOpenTypeAttributeName = "OpenType";
-
-        internal const string DataWebAccessHasStreamAttribute = "HasStream";
-
-        internal const string DataWebAccessDefaultStreamPropertyValue = "true";
-
-        internal const string IsDefaultEntityContainerAttribute = "IsDefaultEntityContainer";
-
-        internal const string ServiceOperationHttpMethodName = "HttpMethod";
-
-        internal const string UriElementName = "uri";
-        
-        internal const string NextElementName = "next";
-
-        internal const string LinkCollectionElementName = "links";
-
-        #endregion DataWeb Elements and Attributes.
-
-        #region JSON Format constants
-
-        internal const string JsonError = "error";
-
-        internal const string JsonErrorCode = "code";
-
-        internal const string JsonErrorInner = "innererror";
-
-        internal const string JsonErrorInternalException = "internalexception";
-
-        internal const string JsonErrorMessage = "message";
-
-        internal const string JsonErrorStackTrace = "stacktrace";
-
-        internal const string JsonErrorType = "type";
-
-        internal const string JsonErrorValue = "value";
-
-        internal const string JsonMetadataString = "__metadata";
-
-        internal const string JsonUriString = "uri";
-
-        internal const string JsonTypeString = "type";
-
-        internal const string JsonEditMediaString = "edit_media";
-
-        internal const string JsonMediaSrcString = "media_src";
-
-        internal const string JsonContentTypeString = "content_type";
-
-        internal const string JsonMediaETagString = "media_etag";
-
-        internal const string JsonDeferredString = "__deferred";
-
-        internal const string JsonETagString = "etag";
-
-        internal const string JsonRowCountString = "__count";
-
-        internal const string JsonNextString = "__next";
-        
-        #endregion 
-
-        #region Edm Primitive Type Names
-        internal const string EdmNamespace = "Edm";
-
-        internal const string EdmBinaryTypeName = "Edm.Binary";
-
-        internal const string EdmBooleanTypeName = "Edm.Boolean";
-
-        internal const string EdmByteTypeName = "Edm.Byte";
-
-        internal const string EdmDateTimeTypeName = "Edm.DateTime";
-
-        internal const string EdmDecimalTypeName = "Edm.Decimal";
-
-        internal const string EdmDoubleTypeName = "Edm.Double";
-
-        internal const string EdmGuidTypeName = "Edm.Guid";
-
-        internal const string EdmSingleTypeName = "Edm.Single";
-
-        internal const string EdmSByteTypeName = "Edm.SByte";
-
-        internal const string EdmInt16TypeName = "Edm.Int16";
-
-        internal const string EdmInt32TypeName = "Edm.Int32";
-
-        internal const string EdmInt64TypeName = "Edm.Int64";
-
-        internal const string EdmStringTypeName = "Edm.String";
-        #endregion
-
-        #region Astoria Constants
-
-        internal const string DataServiceVersion1Dot0 = "1.0";
-
-        internal const string DataServiceVersion2Dot0 = "2.0";
-
-        internal const string DataServiceVersionCurrent = DataServiceVersion2Dot0 + ";";
-
-        internal const int DataServiceVersionCurrentMajor = 1;
-
-        internal const int DataServiceVersionCurrentMinor = 0;
-
-        internal const string LiteralPrefixBinary = "binary";
-
-        internal const string LiteralPrefixDateTime = "datetime";
-
-        internal const string LiteralPrefixGuid = "guid";
-        
-        internal const string XmlBinaryPrefix = "X";
-
-        internal const string XmlDecimalLiteralSuffix = "M";
-
-        internal const string XmlInt64LiteralSuffix = "L";
-
-        internal const string XmlSingleLiteralSuffix = "f";
-
-        internal const string XmlDoubleLiteralSuffix = "D";
-
-        internal const string NullLiteralInETag = "null";
-
-        internal const string MicrosoftDataServicesRequestUri = "MicrosoftDataServicesRequestUri";
-
-        internal const string MicrosoftDataServicesRootUri = "MicrosoftDataServicesRootUri";
-
-        #endregion 
-    }
-}
+//Copyright 2010 Microsoft Corporation
+//
+//Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+//You may obtain a copy of the License at 
+//
+//http://www.apache.org/licenses/LICENSE-2.0 
+//
+//Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
+//"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+//See the License for the specific language governing permissions and limitations under the License.
+
+
+namespace System.Data.Services.Client
+{
+    internal static class XmlConstants
+    {
+        #region CLR / Reflection constants.
+
+        internal const string ClrServiceInitializationMethodName = "InitializeService";
+
+        #endregion CLR / Reflection constants.
+
+        #region HTTP constants.
+
+        internal const string HttpContentID = "Content-ID";
+
+        internal const string HttpContentLength = "Content-Length";
+
+        internal const string HttpContentType = "Content-Type";
+
+        internal const string HttpContentDisposition = "Content-Disposition";
+
+        internal const string HttpDataServiceVersion = "DataServiceVersion";
+
+        internal const string HttpMaxDataServiceVersion = "MaxDataServiceVersion";
+
+        internal const string HttpCacheControlNoCache = "no-cache";
+
+        internal const string HttpCharsetParameter = "charset";
+
+        internal const string HttpMethodGet = "GET";
+
+        internal const string HttpMethodPost = "POST";
+
+        internal const string HttpMethodPut = "PUT";
+
+        internal const string HttpMethodDelete = "DELETE";
+
+        internal const string HttpMethodMerge = "MERGE";
+
+        internal const string HttpQueryStringExpand = "$expand";
+
+        internal const string HttpQueryStringFilter = "$filter";
+
+        internal const string HttpQueryStringOrderBy = "$orderby";
+
+        internal const string HttpQueryStringSkip = "$skip";
+
+        internal const string HttpQueryStringTop = "$top";
+
+        internal const string HttpQueryStringInlineCount = "$inlinecount";
+
+        internal const string HttpQueryStringSkipToken = "$skiptoken";
+
+        internal const string SkipTokenPropertyPrefix = "SkipTokenProperty";
+
+        internal const string HttpQueryStringValueCount = "$count";
+
+        internal const string HttpQueryStringSelect = "$select";
+
+        internal const string HttpQValueParameter = "q";
+
+        internal const string HttpXMethod = "X-HTTP-Method";
+
+        internal const string HttpRequestAccept = "Accept";
+
+        internal const string HttpRequestAcceptCharset = "Accept-Charset";
+
+        internal const string HttpRequestIfMatch = "If-Match";
+
+        internal const string HttpRequestIfNoneMatch = "If-None-Match";
+
+        internal const string HttpMultipartBoundary = "boundary";
+        internal const string HttpMultipartBoundaryBatch = "batch";
+
+        internal const string HttpMultipartBoundaryChangeSet = "changeset";
+
+        internal const string HttpResponseAllow = "Allow";
+
+        internal const string HttpResponseCacheControl = "Cache-Control";
+
+        internal const string HttpResponseETag = "ETag";
+
+        internal const string HttpResponseLocation = "Location";
+
+        internal const string HttpResponseStatusCode = "Status-Code";
+
+        internal const string HttpMultipartBoundaryBatchResponse = "batchresponse";
+
+        internal const string HttpMultipartBoundaryChangesetResponse = "changesetresponse";
+
+        internal const string HttpContentTransferEncoding = "Content-Transfer-Encoding";
+
+        internal const string HttpVersionInBatching = "HTTP/1.1";
+
+        internal const string HttpAnyETag = "*";
+
+        internal const string HttpWeakETagPrefix = "W/\"";
+
+        internal const string HttpAcceptCharset = "Accept-Charset";
+
+        internal const string HttpCookie = "Cookie";
+
+        internal const string HttpSlug = "Slug";
+
+        #endregion HTTP constants.
+
+        #region MIME constants.
+
+        internal const string MimeAny = "*/*";
+
+        internal const string MimeApplicationAtom = "application/atom+xml";
+
+        internal const string MimeApplicationAtomService = "application/atomsvc+xml";
+
+        internal const string MimeApplicationJson = "application/json";
+
+        internal const string MimeApplicationOctetStream = "application/octet-stream";
+
+        internal const string MimeApplicationHttp = "application/http";
+
+        internal const string MimeApplicationType = "application";
+
+        internal const string MimeApplicationXml = "application/xml";
+
+        internal const string MimeJsonSubType = "json";
+
+        internal const string MimeMetadata = MimeApplicationXml;
+
+        internal const string MimeMultiPartMixed = "multipart/mixed";
+
+        internal const string MimeTextPlain = "text/plain";
+
+        internal const string MimeTextType = "text";
+
+        internal const string MimeTextXml = "text/xml";
+
+        internal const string MimeXmlSubType = "xml";
+
+        internal const string BatchRequestContentTransferEncoding = "binary";
+
+        internal const string LinkMimeTypeFeed = "application/atom+xml;type=feed";
+
+        internal const string LinkMimeTypeEntry = "application/atom+xml;type=entry";
+
+        internal const string Utf8Encoding = "UTF-8";
+
+        internal const string MimeTypeUtf8Encoding = ";charset=" + Utf8Encoding;
+        #endregion MIME constants.
+
+        #region URI constants.
+
+        internal const string UriHttpAbsolutePrefix = "http://host";
+
+        internal const string UriMetadataSegment = "$metadata";
+
+        internal const string UriValueSegment = "$value";
+
+        internal const string UriBatchSegment = "$batch";
+
+        internal const string UriLinkSegment = "$links";
+
+        internal const string UriCountSegment = "$count";
+
+        internal const string UriRowCountAllOption = "allpages";
+
+        internal const string UriRowCountOffOption = "none";
+
+        #endregion URI constants.
+
+        #region WCF constants.
+
+        internal const string WcfBinaryElementName = "Binary";
+
+        #endregion WCF constants.
+
+        #region ATOM constants
+        internal const string AtomContentElementName = "content";
+
+        internal const string AtomEntryElementName = "entry";
+
+        internal const string AtomFeedElementName = "feed";
+
+        internal const string AtomAuthorElementName = "author";
+
+        internal const string AtomContributorElementName = "contributor";
+
+        internal const string AtomCategoryElementName = "category";
+
+        internal const string AtomCategorySchemeAttributeName = "scheme";
+
+        internal const string AtomCategoryTermAttributeName = "term";
+
+        internal const string AtomIdElementName = "id";
+
+        internal const string AtomLinkElementName = "link";
+
+        internal const string AtomLinkRelationAttributeName = "rel";
+
+        internal const string AtomContentSrcAttributeName = "src";
+
+        internal const string AtomLinkNextAttributeString = "next";
+
+        internal const string MetadataAttributeEpmContentKind = "FC_ContentKind";
+
+        internal const string MetadataAttributeEpmKeepInContent = "FC_KeepInContent";
+
+        internal const string MetadataAttributeEpmNsPrefix = "FC_NsPrefix";
+
+        internal const string MetadataAttributeEpmNsUri = "FC_NsUri";
+
+        internal const string MetadataAttributeEpmTargetPath = "FC_TargetPath";
+
+        internal const string MetadataAttributeEpmSourcePath = "FC_SourcePath";
+
+        internal const string SyndAuthorEmail = "SyndicationAuthorEmail";
+
+        internal const string SyndAuthorName = "SyndicationAuthorName";
+
+        internal const string SyndAuthorUri = "SyndicationAuthorUri";
+
+        internal const string SyndPublished = "SyndicationPublished";
+
+        internal const string SyndRights = "SyndicationRights";
+
+        internal const string SyndSummary = "SyndicationSummary";
+
+        internal const string SyndTitle = "SyndicationTitle";
+
+        internal const string AtomUpdatedElementName = "updated";
+
+        internal const string SyndContributorEmail = "SyndicationContributorEmail";
+
+        internal const string SyndContributorName = "SyndicationContributorName";
+
+        internal const string SyndContributorUri = "SyndicationContributorUri";
+
+        internal const string SyndUpdated = "SyndicationUpdated";
+
+        internal const string SyndContentKindPlaintext = "text";
+
+        internal const string SyndContentKindHtml = "html";
+
+        internal const string SyndContentKindXHtml = "xhtml";
+
+        internal const string AtomHRefAttributeName = "href";
+
+        internal const string AtomSummaryElementName = "summary";
+
+        internal const string AtomNameElementName = "name";
+
+        internal const string AtomEmailElementName = "email";
+
+        internal const string AtomUriElementName = "uri";
+
+        internal const string AtomPublishedElementName = "published";
+
+        internal const string AtomRightsElementName = "rights";
+
+        internal const string AtomPublishingCollectionElementName = "collection";
+
+        internal const string AtomPublishingServiceElementName = "service";
+
+        internal const string AtomPublishingWorkspaceDefaultValue = "Default";
+
+        internal const string AtomPublishingWorkspaceElementName = "workspace";
+
+        internal const string AtomTitleElementName = "title";
+
+        internal const string AtomTypeAttributeName = "type";
+
+        internal const string AtomSelfRelationAttributeValue = "self";
+
+        internal const string AtomEditRelationAttributeValue = "edit";
+
+        internal const string AtomEditMediaRelationAttributeValue = "edit-media";
+
+        internal const string AtomNullAttributeName = "null";
+
+        internal const string AtomETagAttributeName = "etag";
+        
+        internal const string AtomInlineElementName = "inline";
+
+        internal const string AtomPropertiesElementName = "properties";
+
+        internal const string RowCountElement = "count";
+
+        #endregion ATOM constants
+
+        #region XML constants.
+
+        internal const string XmlCollectionItemElementName = "element";
+
+        internal const string XmlErrorElementName = "error";
+        
+        internal const string XmlErrorCodeElementName = "code";
+
+        internal const string XmlErrorInnerElementName = "innererror";
+
+        internal const string XmlErrorInternalExceptionElementName = "internalexception";
+
+        internal const string XmlErrorTypeElementName = "type";
+
+        internal const string XmlErrorStackTraceElementName = "stacktrace";
+        
+        internal const string XmlErrorMessageElementName = "message";
+        
+        internal const string XmlFalseLiteral = "false";
+
+        internal const string XmlTrueLiteral = "true";
+
+        internal const string XmlInfinityLiteral = "INF";
+
+        internal const string XmlNaNLiteral = "NaN";
+
+        internal const string XmlBaseAttributeName = "base";
+
+        internal const string XmlLangAttributeName = "lang";
+
+        internal const string XmlSpaceAttributeName = "space";
+
+        internal const string XmlSpacePreserveValue = "preserve";
+
+        internal const string XmlBaseAttributeNameWithPrefix = "xml:base";
+
+        #endregion XML constants.
+
+        #region XML namespaces.
+
+        internal const string EdmV1Namespace = "http://schemas.microsoft.com/ado/2006/04/edm";
+
+        internal const string EdmV1dot1Namespace = "http://schemas.microsoft.com/ado/2007/05/edm";
+
+        internal const string EdmV1dot2Namespace = "http://schemas.microsoft.com/ado/2008/01/edm";
+
+        internal const string DataWebNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices";
+
+        internal const string DataWebMetadataNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
+
+        internal const string DataWebRelatedNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices/related/";
+
+        internal const string DataWebSchemeNamespace = "http://schemas.microsoft.com/ado/2007/08/dataservices/scheme";
+
+        internal const string AppNamespace = "http://www.w3.org/2007/app";
+
+        internal const string AtomNamespace = "http://www.w3.org/2005/Atom";
+
+        internal const string XmlnsNamespacePrefix = "xmlns";
+
+        internal const string XmlNamespacePrefix = "xml";
+
+        internal const string DataWebNamespacePrefix = "d";
+
+        internal const string DataWebMetadataNamespacePrefix = "m";
+
+        internal const string XmlNamespacesNamespace = "http://www.w3.org/2000/xmlns/";
+
+        internal const string EdmxNamespace = "http://schemas.microsoft.com/ado/2007/06/edmx";
+
+        internal const string EdmxNamespacePrefix = "edmx";
+
+        #endregion XML namespaces.
+
+        #region CDM Schema Xml NodeNames
+
+        #region Constant node names in the CDM schema xml
+
+        internal const string Association = "Association";
+
+        internal const string AssociationSet = "AssociationSet";
+
+        internal const string ComplexType = "ComplexType";
+
+        internal const string Dependent = "Dependent";
+
+        internal const string EdmCollectionTypeFormat = "Collection({0})";
+
+        internal const string EdmEntitySetAttributeName = "EntitySet";
+
+        internal const string EdmFunctionImportElementName = "FunctionImport";
+
+        internal const string EdmModeAttributeName = "Mode";
+
+        internal const string EdmModeInValue = "In";
+
+        internal const string EdmParameterElementName = "Parameter";
+
+        internal const string EdmReturnTypeAttributeName = "ReturnType";
+
+        internal const string End = "End";
+
+        internal const string EntityType = "EntityType";
+
+        internal const string EntityContainer = "EntityContainer";
+
+        internal const string Key = "Key";
+
+        internal const string NavigationProperty = "NavigationProperty";
+
+        internal const string OnDelete = "OnDelete";
+
+        internal const string Principal = "Principal";
+
+        internal const string Property = "Property";
+
+        internal const string PropertyRef = "PropertyRef";
+
+        internal const string ReferentialConstraint = "ReferentialConstraint";
+
+        internal const string Role = "Role";
+
+        internal const string Schema = "Schema";
+
+        internal const string EdmxElement = "Edmx";
+
+        internal const string EdmxDataServicesElement = "DataServices";
+
+        internal const string EdmxVersion = "Version";
+
+        internal const string EdmxVersionValue = "1.0";
+
+        #endregion 
+
+        #region const attribute names in the CDM schema XML
+
+        internal const string Action = "Action";
+
+        internal const string BaseType = "BaseType";
+
+        internal const string EntitySet = "EntitySet";
+
+        internal const string FromRole = "FromRole";
+
+        internal const string Abstract = "Abstract";
+
+        internal const string Multiplicity = "Multiplicity";
+
+        internal const string Name = "Name";
+
+        internal const string Namespace = "Namespace";
+
+        internal const string ToRole = "ToRole";
+
+        internal const string Type = "Type";
+
+        internal const string Relationship = "Relationship";
+        #endregion 
+
+        #region values for multiplicity in Edm
+
+        internal const string Many = "*";
+
+        internal const string One = "1";
+
+        internal const string ZeroOrOne = "0..1";
+        #endregion
+
+        #region Edm Facets Names and Values
+
+        internal const string Nullable = "Nullable";
+
+        internal const string ConcurrencyAttribute = "ConcurrencyMode";
+
+        internal const string ConcurrencyFixedValue = "Fixed";
+
+        #endregion
+
+        #endregion // CDM Schema Xml NodeNames
+
+        #region DataWeb Elements and Attributes.
+
+        internal const string DataWebMimeTypeAttributeName = "MimeType";
+
+        internal const string DataWebOpenTypeAttributeName = "OpenType";
+
+        internal const string DataWebAccessHasStreamAttribute = "HasStream";
+
+        internal const string DataWebAccessDefaultStreamPropertyValue = "true";
+
+        internal const string IsDefaultEntityContainerAttribute = "IsDefaultEntityContainer";
+
+        internal const string ServiceOperationHttpMethodName = "HttpMethod";
+
+        internal const string UriElementName = "uri";
+        
+        internal const string NextElementName = "next";
+
+        internal const string LinkCollectionElementName = "links";
+
+        #endregion DataWeb Elements and Attributes.
+
+        #region JSON Format constants
+
+        internal const string JsonError = "error";
+
+        internal const string JsonErrorCode = "code";
+
+        internal const string JsonErrorInner = "innererror";
+
+        internal const string JsonErrorInternalException = "internalexception";
+
+        internal const string JsonErrorMessage = "message";
+
+        internal const string JsonErrorStackTrace = "stacktrace";
+
+        internal const string JsonErrorType = "type";
+
+        internal const string JsonErrorValue = "value";
+
+        internal const string JsonMetadataString = "__metadata";
+
+        internal const string JsonUriString = "uri";
+
+        internal const string JsonTypeString = "type";
+
+        internal const string JsonEditMediaString = "edit_media";
+
+        internal const string JsonMediaSrcString = "media_src";
+
+        internal const string JsonContentTypeString = "content_type";
+
+        internal const string JsonMediaETagString = "media_etag";
+
+        internal const string JsonDeferredString = "__deferred";
+
+        internal const string JsonETagString = "etag";
+
+        internal const string JsonRowCountString = "__count";
+
+        internal const string JsonNextString = "__next";
+        
+        #endregion 
+
+        #region Edm Primitive Type Names
+        internal const string EdmNamespace = "Edm";
+
+        internal const string EdmBinaryTypeName = "Edm.Binary";
+
+        internal const string EdmBooleanTypeName = "Edm.Boolean";
+
+        internal const string EdmByteTypeName = "Edm.Byte";
+
+        internal const string EdmDateTimeTypeName = "Edm.DateTime";
+
+        internal const string EdmDecimalTypeName = "Edm.Decimal";
+
+        internal const string EdmDoubleTypeName = "Edm.Double";
+
+        internal const string EdmGuidTypeName = "Edm.Guid";
+
+        internal const string EdmSingleTypeName = "Edm.Single";
+
+        internal const string EdmSByteTypeName = "Edm.SByte";
+
+        internal const string EdmInt16TypeName = "Edm.Int16";
+
+        internal const string EdmInt32TypeName = "Edm.Int32";
+
+        internal const string EdmInt64TypeName = "Edm.Int64";
+
+        internal const string EdmStringTypeName = "Edm.String";
+        #endregion
+
+        #region Astoria Constants
+
+        internal const string DataServiceVersion1Dot0 = "1.0";
+
+        internal const string DataServiceVersion2Dot0 = "2.0";
+
+        internal const string DataServiceVersionCurrent = DataServiceVersion2Dot0 + ";";
+
+        internal const int DataServiceVersionCurrentMajor = 1;
+
+        internal const int DataServiceVersionCurrentMinor = 0;
+
+        internal const string LiteralPrefixBinary = "binary";
+
+        internal const string LiteralPrefixDateTime = "datetime";
+
+        internal const string LiteralPrefixGuid = "guid";
+        
+        internal const string XmlBinaryPrefix = "X";
+
+        internal const string XmlDecimalLiteralSuffix = "M";
+
+        internal const string XmlInt64LiteralSuffix = "L";
+
+        internal const string XmlSingleLiteralSuffix = "f";
+
+        internal const string XmlDoubleLiteralSuffix = "D";
+
+        internal const string NullLiteralInETag = "null";
+
+        internal const string MicrosoftDataServicesRequestUri = "MicrosoftDataServicesRequestUri";
+
+        internal const string MicrosoftDataServicesRootUri = "MicrosoftDataServicesRootUri";
+
+        #endregion 
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Assembly/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Assembly/AssemblyInfo.cs
@@ -1,27 +1,27 @@
-using System;
-using System.Reflection;
-using System.Resources;
-using System.Runtime.InteropServices;
-using System.Security;
-
-[assembly: SecurityCritical]
-
-[assembly: AssemblyTitle ("System.Data.Services.dll")]
-[assembly: AssemblyDescription ("System.Data.Services.dll")]
-[assembly: AssemblyDefaultAlias ("System.Data.Services.dll")]
-
-[assembly: AssemblyCompany(Consts.MonoCompany)]
-[assembly: AssemblyProduct(Consts.MonoProduct)]
-[assembly: AssemblyCopyright(Consts.MonoCopyright)]
-[assembly: AssemblyVersion(Consts.FxVersion)]
-[assembly: SatelliteContractVersion(Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion(Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion(Consts.FxFileVersion)]
-
-[assembly: NeutralResourcesLanguage ("en-US")]
-
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../ecma.pub")]
-
-[assembly: ComVisible (false)]
-[assembly: CLSCompliant (true)]
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Runtime.InteropServices;
+using System.Security;
+
+[assembly: SecurityCritical]
+
+[assembly: AssemblyTitle ("System.Data.Services.dll")]
+[assembly: AssemblyDescription ("System.Data.Services.dll")]
+[assembly: AssemblyDefaultAlias ("System.Data.Services.dll")]
+
+[assembly: AssemblyCompany(Consts.MonoCompany)]
+[assembly: AssemblyProduct(Consts.MonoProduct)]
+[assembly: AssemblyCopyright(Consts.MonoCopyright)]
+[assembly: AssemblyVersion(Consts.FxVersion)]
+[assembly: SatelliteContractVersion(Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion(Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion(Consts.FxFileVersion)]
+
+[assembly: NeutralResourcesLanguage ("en-US")]
+
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../ecma.pub")]
+
+[assembly: ComVisible (false)]
+[assembly: CLSCompliant (true)]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/ChangeInterceptorAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/ChangeInterceptorAttribute.cs
@@ -1,48 +1,48 @@
-﻿//
-// ChangeInterceptorAttribute.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Diagnostics;
-
-namespace System.Data.Services {
-	[AttributeUsage (AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
-	public sealed class ChangeInterceptorAttribute : Attribute {
-		public ChangeInterceptorAttribute (string entitySetName)
-		{
-			if (entitySetName == null)
-				throw new ArgumentNullException ("entitySetname");
-
-			this.entitySetName = entitySetName;
-		}
-
-		private readonly string entitySetName;
-		public string EntitySetName {
-			[DebuggerStepThrough]
-			get { return this.entitySetName; }
-		}
-	}
+﻿//
+// ChangeInterceptorAttribute.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Diagnostics;
+
+namespace System.Data.Services {
+	[AttributeUsage (AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
+	public sealed class ChangeInterceptorAttribute : Attribute {
+		public ChangeInterceptorAttribute (string entitySetName)
+		{
+			if (entitySetName == null)
+				throw new ArgumentNullException ("entitySetname");
+
+			this.entitySetName = entitySetName;
+		}
+
+		private readonly string entitySetName;
+		public string EntitySetName {
+			[DebuggerStepThrough]
+			get { return this.entitySetName; }
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/DataService.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/DataService.cs
@@ -1,88 +1,88 @@
-﻿//
-// DataService.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.IO;
-using System.ServiceModel;
-using System.ServiceModel.Activation;
-using System.ServiceModel.Channels;
-
-namespace System.Data.Services {
-	[ServiceBehavior (InstanceContextMode = InstanceContextMode.PerCall)]
-	[AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
-	public class DataService<T> : IRequestHandler
-	{
-		DataServiceProcessingPipeline processingPipeline;
-		public void AttachHost (IDataServiceHost host)
-		{
-			if (host == null)
-				throw new ArgumentNullException();
-
-			throw new NotImplementedException();
-		}
-
-		public void ProcessRequest()
-		{
-			throw new NotImplementedException();
-		}
-
-		public Message ProcessRequestForMessage (Stream messageBody)
-		{
-			if (messageBody == null)
-				throw new ArgumentNullException ("messageBody");
-
-			throw new NotImplementedException();
-		}
-
-		protected T CurrentDataSource {
-			get; private set;
-		}
-		public DataServiceProcessingPipeline ProcessingPipeline {
-			get {
-				if (processingPipeline == null)
-					processingPipeline = new DataServiceProcessingPipeline ();
-				return processingPipeline;
-			}
-		}
-		protected virtual T CreateDataSource()
-		{
-			throw new NotImplementedException();
-		}
-
-		protected virtual void HandleException (HandleExceptionArgs args)
-		{
-			if (args == null)
-				throw new ArgumentNullException ("args");
-
-			throw new NotImplementedException();
-		}
-
-		protected virtual void OnStartProcessingRequest (ProcessRequestArgs args)
-		{
-		}
-	}
+﻿//
+// DataService.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.IO;
+using System.ServiceModel;
+using System.ServiceModel.Activation;
+using System.ServiceModel.Channels;
+
+namespace System.Data.Services {
+	[ServiceBehavior (InstanceContextMode = InstanceContextMode.PerCall)]
+	[AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
+	public class DataService<T> : IRequestHandler
+	{
+		DataServiceProcessingPipeline processingPipeline;
+		public void AttachHost (IDataServiceHost host)
+		{
+			if (host == null)
+				throw new ArgumentNullException();
+
+			throw new NotImplementedException();
+		}
+
+		public void ProcessRequest()
+		{
+			throw new NotImplementedException();
+		}
+
+		public Message ProcessRequestForMessage (Stream messageBody)
+		{
+			if (messageBody == null)
+				throw new ArgumentNullException ("messageBody");
+
+			throw new NotImplementedException();
+		}
+
+		protected T CurrentDataSource {
+			get; private set;
+		}
+		public DataServiceProcessingPipeline ProcessingPipeline {
+			get {
+				if (processingPipeline == null)
+					processingPipeline = new DataServiceProcessingPipeline ();
+				return processingPipeline;
+			}
+		}
+		protected virtual T CreateDataSource()
+		{
+			throw new NotImplementedException();
+		}
+
+		protected virtual void HandleException (HandleExceptionArgs args)
+		{
+			if (args == null)
+				throw new ArgumentNullException ("args");
+
+			throw new NotImplementedException();
+		}
+
+		protected virtual void OnStartProcessingRequest (ProcessRequestArgs args)
+		{
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/DataServiceException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/DataServiceException.cs
@@ -1,90 +1,90 @@
-﻿//
-// DataServiceException.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Diagnostics;
-using System.Runtime.Serialization;
-using System.Security;
-
-namespace System.Data.Services
-{
-	[DebuggerDisplay ("{statusCode}: {Message}")]
-	[Serializable]
-	public sealed class DataServiceException : InvalidOperationException
-	{
-		public DataServiceException()
-		{
-		}
-
-		public DataServiceException (string message)
-			: base (message)
-		{
-		}
-
-		public DataServiceException (int statusCode, string message)
-			: base (message)
-		{
-			this.StatusCode = statusCode;
-		}
-
-		public DataServiceException (string message, Exception innerException)
-			: base (message, innerException)
-		{
-		}
-
-		public DataServiceException (int statusCode, string errorCode, string message, string messageXmlLang, Exception innerException)
-			: base (message, innerException)
-		{
-			this.StatusCode = statusCode;
-			this.ErrorCode = errorCode;
-			this.MessageLanguage = messageXmlLang;
-		}
-
-		protected DataServiceException (SerializationInfo serializationInfo, StreamingContext streamingContext)
-		{
-			throw new NotImplementedException();
-		}
-
-		public int StatusCode {
-			get; private set;
-		}
-
-		public string ErrorCode {
-			get; private set;
-		}
-
-		public string MessageLanguage {
-			get; private set;
-		}
-
-		[SecurityCritical]
-		public override void GetObjectData (SerializationInfo info, StreamingContext context)
-		{
-			throw new NotImplementedException();
-		}
-	}
+﻿//
+// DataServiceException.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Diagnostics;
+using System.Runtime.Serialization;
+using System.Security;
+
+namespace System.Data.Services
+{
+	[DebuggerDisplay ("{statusCode}: {Message}")]
+	[Serializable]
+	public sealed class DataServiceException : InvalidOperationException
+	{
+		public DataServiceException()
+		{
+		}
+
+		public DataServiceException (string message)
+			: base (message)
+		{
+		}
+
+		public DataServiceException (int statusCode, string message)
+			: base (message)
+		{
+			this.StatusCode = statusCode;
+		}
+
+		public DataServiceException (string message, Exception innerException)
+			: base (message, innerException)
+		{
+		}
+
+		public DataServiceException (int statusCode, string errorCode, string message, string messageXmlLang, Exception innerException)
+			: base (message, innerException)
+		{
+			this.StatusCode = statusCode;
+			this.ErrorCode = errorCode;
+			this.MessageLanguage = messageXmlLang;
+		}
+
+		protected DataServiceException (SerializationInfo serializationInfo, StreamingContext streamingContext)
+		{
+			throw new NotImplementedException();
+		}
+
+		public int StatusCode {
+			get; private set;
+		}
+
+		public string ErrorCode {
+			get; private set;
+		}
+
+		public string MessageLanguage {
+			get; private set;
+		}
+
+		[SecurityCritical]
+		public override void GetObjectData (SerializationInfo info, StreamingContext context)
+		{
+			throw new NotImplementedException();
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/DataServiceHost.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/DataServiceHost.cs
@@ -1,39 +1,39 @@
-﻿//
-// DataServiceHost.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ServiceModel.Web;
-
-namespace System.Data.Services {
-	[CLSCompliant (false)]
-	public class DataServiceHost : WebServiceHost {
-		public DataServiceHost (Type serviceType, Uri[] baseAddresses)
-			: base (serviceType, baseAddresses)
-		{
-		}
-	}
+﻿//
+// DataServiceHost.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.ServiceModel.Web;
+
+namespace System.Data.Services {
+	[CLSCompliant (false)]
+	public class DataServiceHost : WebServiceHost {
+		public DataServiceHost (Type serviceType, Uri[] baseAddresses)
+			: base (serviceType, baseAddresses)
+		{
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/DataServiceHostFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/DataServiceHostFactory.cs
@@ -1,39 +1,39 @@
-﻿//
-// DataServiceHostFactory.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.ServiceModel;
-using System.ServiceModel.Activation;
-
-namespace System.Data.Services {
-	public class DataServiceHostFactory : ServiceHostFactory {
-		protected override ServiceHost CreateServiceHost (Type serviceType, Uri[] baseAddresses)
-		{
-			return new DataServiceHost (serviceType, baseAddresses);
-		}
-	}
+﻿//
+// DataServiceHostFactory.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.ServiceModel;
+using System.ServiceModel.Activation;
+
+namespace System.Data.Services {
+	public class DataServiceHostFactory : ServiceHostFactory {
+		protected override ServiceHost CreateServiceHost (Type serviceType, Uri[] baseAddresses)
+		{
+			return new DataServiceHost (serviceType, baseAddresses);
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/ETagAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/ETagAttribute.cs
@@ -1,56 +1,56 @@
-﻿//
-// ETagAttribute.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections.ObjectModel;
-
-namespace System.Data.Services {
-	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true )]
-	public sealed class ETagAttribute : Attribute {
-		public ETagAttribute (string propertyName)
-		{
-			if (propertyName == null)
-				throw new ArgumentNullException ("propertyName");
-
-			this.properties = new ReadOnlyCollection<string> (new[] { propertyName });
-		}
-
-		public ETagAttribute (params string[] propertyNames)
-		{
-			if (propertyNames == null)
-				throw new ArgumentNullException ("propertyNames");
-
-			this.properties = new ReadOnlyCollection<string> (propertyNames);
-		}
-
-		public ReadOnlyCollection<string> PropertyNames {
-			get { return this.properties; }
-		}
-
-		private readonly ReadOnlyCollection<string> properties;
-	}
-}
+﻿//
+// ETagAttribute.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections.ObjectModel;
+
+namespace System.Data.Services {
+	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true )]
+	public sealed class ETagAttribute : Attribute {
+		public ETagAttribute (string propertyName)
+		{
+			if (propertyName == null)
+				throw new ArgumentNullException ("propertyName");
+
+			this.properties = new ReadOnlyCollection<string> (new[] { propertyName });
+		}
+
+		public ETagAttribute (params string[] propertyNames)
+		{
+			if (propertyNames == null)
+				throw new ArgumentNullException ("propertyNames");
+
+			this.properties = new ReadOnlyCollection<string> (propertyNames);
+		}
+
+		public ReadOnlyCollection<string> PropertyNames {
+			get { return this.properties; }
+		}
+
+		private readonly ReadOnlyCollection<string> properties;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/EntitySetRights.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/EntitySetRights.cs
@@ -1,47 +1,47 @@
-﻿//
-// EntitySetRights.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services
-{
-	[Flags]
-	public enum EntitySetRights
-	{
-		None = 0,
-		All = AllRead | AllWrite,
-		AllRead = ReadSingle | ReadMultiple,
-		AllWrite = WriteAppend | WriteReplace | WriteDelete | WriteMerge,
-
-		ReadSingle = 1,
-		ReadMultiple = 2,
-		
-		WriteAppend = 4,
-		WriteReplace = 8,
-		WriteDelete = 16,
-		WriteMerge = 32
-	}
-}
+﻿//
+// EntitySetRights.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services
+{
+	[Flags]
+	public enum EntitySetRights
+	{
+		None = 0,
+		All = AllRead | AllWrite,
+		AllRead = ReadSingle | ReadMultiple,
+		AllWrite = WriteAppend | WriteReplace | WriteDelete | WriteMerge,
+
+		ReadSingle = 1,
+		ReadMultiple = 2,
+		
+		WriteAppend = 4,
+		WriteReplace = 8,
+		WriteDelete = 16,
+		WriteMerge = 32
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/ExpandSegment.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/ExpandSegment.cs
@@ -1,81 +1,81 @@
-﻿//
-// ExpandSegment.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Diagnostics;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Data.Services.Providers;
-
-namespace System.Data.Services
-{
-	[DebuggerDisplay ("ExpandSegment ({name},Filter={filter})]")]
-	public class ExpandSegment
-	{
-		public ExpandSegment (string name, Expression filter)
-		{
-			if (name == null)
-				throw new ArgumentNullException ("name");
-
-			this.Name = name;
-			this.Filter = filter;
-		}
-		public ResourceProperty ExpandedProperty {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-		public string Name {
-			get;
-			private set;
-		}
-
-		public Expression Filter {
-			get;
-			private set;
-		}
-
-		public bool HasFilter {
-			get { return (this.Filter != null); }
-		}
-
-		public int MaxResultsExpected {
-			get { return this.max_results_expected; }
-		}
-
-		private int max_results_expected = Int32.MaxValue;
-
-		public static bool PathHasFilter (IEnumerable<ExpandSegment> path)
-		{
-			if (path == null)
-				throw new ArgumentNullException ("path");
-
-			return path.Any (s => s.HasFilter);
-		}
-	}
+﻿//
+// ExpandSegment.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Diagnostics;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Data.Services.Providers;
+
+namespace System.Data.Services
+{
+	[DebuggerDisplay ("ExpandSegment ({name},Filter={filter})]")]
+	public class ExpandSegment
+	{
+		public ExpandSegment (string name, Expression filter)
+		{
+			if (name == null)
+				throw new ArgumentNullException ("name");
+
+			this.Name = name;
+			this.Filter = filter;
+		}
+		public ResourceProperty ExpandedProperty {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+		public string Name {
+			get;
+			private set;
+		}
+
+		public Expression Filter {
+			get;
+			private set;
+		}
+
+		public bool HasFilter {
+			get { return (this.Filter != null); }
+		}
+
+		public int MaxResultsExpected {
+			get { return this.max_results_expected; }
+		}
+
+		private int max_results_expected = Int32.MaxValue;
+
+		public static bool PathHasFilter (IEnumerable<ExpandSegment> path)
+		{
+			if (path == null)
+				throw new ArgumentNullException ("path");
+
+			return path.Any (s => s.HasFilter);
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/ExpandSegmentCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/ExpandSegmentCollection.cs
@@ -1,47 +1,47 @@
-﻿//
-// ExpandSegmentCollection.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections.Generic;
-using System.Linq;
-
-namespace System.Data.Services {
-	public class ExpandSegmentCollection : List<ExpandSegment> {
-		public ExpandSegmentCollection()
-		{
-		}
-
-		public ExpandSegmentCollection (int capacity)
-			: base (capacity)
-		{
-		}
-
-		public bool HasFilter {
-			get { return this.Any (s => s.Filter != null); }
-		}
-	}
+﻿//
+// ExpandSegmentCollection.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections.Generic;
+using System.Linq;
+
+namespace System.Data.Services {
+	public class ExpandSegmentCollection : List<ExpandSegment> {
+		public ExpandSegmentCollection()
+		{
+		}
+
+		public ExpandSegmentCollection (int capacity)
+			: base (capacity)
+		{
+		}
+
+		public bool HasFilter {
+			get { return this.Any (s => s.Filter != null); }
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/HandleExceptionArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/HandleExceptionArgs.cs
@@ -1,51 +1,51 @@
-﻿//
-// HandleExceptionArgs.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services {
-	public class HandleExceptionArgs {
-		public Exception Exception {
-			get; set;
-		}
-
-		public string ResponseContentType {
-			get; private set;
-		}
-
-		public int ResponseStatusCode {
-			get; private set;
-		}
-
-		public bool ResponseWritten {
-			get; private set;
-		}
-
-		public bool UseVerboseErrors {
-			get; set;
-		}
-	}
+﻿//
+// HandleExceptionArgs.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services {
+	public class HandleExceptionArgs {
+		public Exception Exception {
+			get; set;
+		}
+
+		public string ResponseContentType {
+			get; private set;
+		}
+
+		public int ResponseStatusCode {
+			get; private set;
+		}
+
+		public bool ResponseWritten {
+			get; private set;
+		}
+
+		public bool UseVerboseErrors {
+			get; set;
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/IDataServiceConfiguration.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/IDataServiceConfiguration.cs
@@ -1,43 +1,43 @@
-﻿//
-// IDataServiceConfiguration.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services {
-	public interface IDataServiceConfiguration {
-		int MaxBatchCount { get; set; }
-		int MaxChangesetCount { get; set; }
-		int MaxExpandCount { get; set; }
-		int MaxExpandDepth { get; set; }
-		int MaxObjectCountOnInsert { get; set; }
-		int MaxResultsPerCollection { get; set; }
-		bool UseVerboseErrors { get; set; }
-
-		void RegisterKnownType (Type type);
-		void SetEntitySetAccessRule (string name, EntitySetRights rights);
-		void SetServiceOperationAccessRule (string name, ServiceOperationRights rights);
-	}
-}
+﻿//
+// IDataServiceConfiguration.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services {
+	public interface IDataServiceConfiguration {
+		int MaxBatchCount { get; set; }
+		int MaxChangesetCount { get; set; }
+		int MaxExpandCount { get; set; }
+		int MaxExpandDepth { get; set; }
+		int MaxObjectCountOnInsert { get; set; }
+		int MaxResultsPerCollection { get; set; }
+		bool UseVerboseErrors { get; set; }
+
+		void RegisterKnownType (Type type);
+		void SetEntitySetAccessRule (string name, EntitySetRights rights);
+		void SetServiceOperationAccessRule (string name, ServiceOperationRights rights);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/IDataServiceHost.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/IDataServiceHost.cs
@@ -1,55 +1,55 @@
-﻿//
-// IDataServiceHost.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.IO;
-
-namespace System.Data.Services {
-	public interface IDataServiceHost {
-		Uri AbsoluteRequestUri { get; }
-		Uri AbsoluteServiceUri { get; }
-		string RequestAccept { get; }
-		string RequestAcceptCharSet { get; }
-		string RequestContentType { get; }
-		string RequestHttpMethod { get; }
-		string RequestIfMatch { get; }
-		string RequestIfNoneMatch { get; }
-		Stream RequestStream { get; }
-		string RequestVersion { get; }
-		string ResponseCacheControl { get; set; }
-		string ResponseContentType { get; set; }
-		string ResponseETag { get; set; }
-		string ResponseLocation { get; set; }
-		int ResponseStatusCode { get; set; }
-		string RequestMaxVersion { get; }
-		Stream ResponseStream { get; }
-		string ResponseVersion { get; set; }
-
-		string GetQueryStringItem (string item);
-		void ProcessException (HandleExceptionArgs args);
-	}
+﻿//
+// IDataServiceHost.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.IO;
+
+namespace System.Data.Services {
+	public interface IDataServiceHost {
+		Uri AbsoluteRequestUri { get; }
+		Uri AbsoluteServiceUri { get; }
+		string RequestAccept { get; }
+		string RequestAcceptCharSet { get; }
+		string RequestContentType { get; }
+		string RequestHttpMethod { get; }
+		string RequestIfMatch { get; }
+		string RequestIfNoneMatch { get; }
+		Stream RequestStream { get; }
+		string RequestVersion { get; }
+		string ResponseCacheControl { get; set; }
+		string ResponseContentType { get; set; }
+		string ResponseETag { get; set; }
+		string ResponseLocation { get; set; }
+		int ResponseStatusCode { get; set; }
+		string RequestMaxVersion { get; }
+		Stream ResponseStream { get; }
+		string ResponseVersion { get; set; }
+
+		string GetQueryStringItem (string item);
+		void ProcessException (HandleExceptionArgs args);
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/IExpandProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/IExpandProvider.cs
@@ -1,37 +1,37 @@
-﻿//
-// IExpandProvider.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace System.Data.Services {
-	public interface IExpandProvider {
-		IEnumerable ApplyExpansions (IQueryable queryable, ICollection<ExpandSegmentCollection> expandPaths);
-	}
+﻿//
+// IExpandProvider.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace System.Data.Services {
+	public interface IExpandProvider {
+		IEnumerable ApplyExpansions (IQueryable queryable, ICollection<ExpandSegmentCollection> expandPaths);
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/IExpandedResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/IExpandedResult.cs
@@ -1,35 +1,35 @@
-﻿//
-// IExpandedResult.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services {
-	public interface IExpandedResult {
-		object ExpandedElement { get; }
-
-		object GetExpandedPropertyValue (string name);
-	}
+﻿//
+// IExpandedResult.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services {
+	public interface IExpandedResult {
+		object ExpandedElement { get; }
+
+		object GetExpandedPropertyValue (string name);
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/IRequestHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/IRequestHandler.cs
@@ -1,41 +1,41 @@
-﻿//
-// IRequestHandler.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.IO;
-using System.ServiceModel;
-using System.ServiceModel.Channels;
-using System.ServiceModel.Web;
-
-namespace System.Data.Services {
-	[ServiceContract]
-	public interface IRequestHandler {
-		[OperationContract]
-		[WebInvoke (UriTemplate = "*", Method = "*")]
-		Message ProcessRequestForMessage (Stream messageBody);
-	}
+﻿//
+// IRequestHandler.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.IO;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Web;
+
+namespace System.Data.Services {
+	[ServiceContract]
+	public interface IRequestHandler {
+		[OperationContract]
+		[WebInvoke (UriTemplate = "*", Method = "*")]
+		Message ProcessRequestForMessage (Stream messageBody);
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/IUpdatable.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/IUpdatable.cs
@@ -1,46 +1,46 @@
-﻿//
-// IUpdatable.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Linq;
-
-namespace System.Data.Services {
-	public interface IUpdatable {
-		void AddReferenceToCollection (object targetResource, string propertyName, object resourceToBeAdded);
-		void ClearChanges();
-		object CreateResource (string containerName, string fullTypeName);
-		void DeleteResource (object targetResource);
-		object GetResource (IQueryable query, string fullTypeName);
-		object GetValue (object targetResource, string propertyName);
-		void RemoveReferenceFromCollection (object targetResource, string propertyName, object resourceToBeRemoved);
-		object ResetResource (object resource);
-		object ResolveResource (object resource);
-		void SaveChanges();
-		void SetReference (object targetResource, string propertyName, object propertyValue);
-		void SetValue (object targetResource, string propertyName, object propertyValue);
-	}
+﻿//
+// IUpdatable.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Linq;
+
+namespace System.Data.Services {
+	public interface IUpdatable {
+		void AddReferenceToCollection (object targetResource, string propertyName, object resourceToBeAdded);
+		void ClearChanges();
+		object CreateResource (string containerName, string fullTypeName);
+		void DeleteResource (object targetResource);
+		object GetResource (IQueryable query, string fullTypeName);
+		object GetValue (object targetResource, string propertyName);
+		void RemoveReferenceFromCollection (object targetResource, string propertyName, object resourceToBeRemoved);
+		object ResetResource (object resource);
+		object ResolveResource (object resource);
+		void SaveChanges();
+		void SetReference (object targetResource, string propertyName, object propertyValue);
+		void SetValue (object targetResource, string propertyName, object propertyValue);
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/IgnorePropertiesAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/IgnorePropertiesAttribute.cs
@@ -1,56 +1,56 @@
-﻿//
-// IgnorePropertiesAttribute.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections.ObjectModel;
-
-namespace System.Data.Services {
-	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-	public sealed class IgnorePropertiesAttribute : Attribute {
-		public IgnorePropertiesAttribute (string propertyName)
-		{
-			if (propertyName == null)
-				throw new ArgumentNullException ("propertyName");
-
-			this.properties = new ReadOnlyCollection<string> (new[] { propertyName });
-		}
-
-		public IgnorePropertiesAttribute (params string[] propertyNames)
-		{
-			if (propertyNames == null)
-				throw new ArgumentNullException ("propertyNames");
-
-			this.properties = new ReadOnlyCollection<string> (propertyNames);
-		}
-
-		public ReadOnlyCollection<string> PropertyNames {
-			get { return this.properties; }
-		}
-
-		private readonly ReadOnlyCollection<string> properties;
-	}
+﻿//
+// IgnorePropertiesAttribute.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections.ObjectModel;
+
+namespace System.Data.Services {
+	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+	public sealed class IgnorePropertiesAttribute : Attribute {
+		public IgnorePropertiesAttribute (string propertyName)
+		{
+			if (propertyName == null)
+				throw new ArgumentNullException ("propertyName");
+
+			this.properties = new ReadOnlyCollection<string> (new[] { propertyName });
+		}
+
+		public IgnorePropertiesAttribute (params string[] propertyNames)
+		{
+			if (propertyNames == null)
+				throw new ArgumentNullException ("propertyNames");
+
+			this.properties = new ReadOnlyCollection<string> (propertyNames);
+		}
+
+		public ReadOnlyCollection<string> PropertyNames {
+			get { return this.properties; }
+		}
+
+		private readonly ReadOnlyCollection<string> properties;
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/MimeTypeAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/MimeTypeAttribute.cs
@@ -1,46 +1,46 @@
-﻿//
-// MimeTypeAttribute.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services {
-	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
-	public sealed class MimeTypeAttribute : Attribute {
-		public MimeTypeAttribute (string memberName, string mimeType)
-		{
-			this.MemberName = memberName;
-			this.MimeType = mimeType;
-		}
-
-		public string MemberName {
-			get; private set;
-		}
-
-		public string MimeType {
-			get; private set;
-		}
-	}
+﻿//
+// MimeTypeAttribute.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services {
+	[AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
+	public sealed class MimeTypeAttribute : Attribute {
+		public MimeTypeAttribute (string memberName, string mimeType)
+		{
+			this.MemberName = memberName;
+			this.MimeType = mimeType;
+		}
+
+		public string MemberName {
+			get; private set;
+		}
+
+		public string MimeType {
+			get; private set;
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/ProcessRequestArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/ProcessRequestArgs.cs
@@ -1,44 +1,44 @@
-﻿//
-// ProcessRequestArgs.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services
-{
-	public sealed class ProcessRequestArgs
-	{
-		public DataServiceOperationContext OperationContext {
-			get; private set;
-		}
-		public bool IsBatchOperation {
-			get; private set;
-		}
-
-		public Uri RequestUri {
-			get; private set;
-		}
-	}
+﻿//
+// ProcessRequestArgs.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services
+{
+	public sealed class ProcessRequestArgs
+	{
+		public DataServiceOperationContext OperationContext {
+			get; private set;
+		}
+		public bool IsBatchOperation {
+			get; private set;
+		}
+
+		public Uri RequestUri {
+			get; private set;
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/QueryInterceptorAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/QueryInterceptorAttribute.cs
@@ -1,48 +1,48 @@
-﻿//
-// QueryInterceptorAttribute.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Diagnostics;
-
-namespace System.Data.Services {
-	[AttributeUsage (AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
-	public sealed class QueryInterceptorAttribute : Attribute {
-		public QueryInterceptorAttribute (string entitySetName)
-		{
-			if (entitySetName == null)
-				throw new ArgumentNullException ("entitySetName");
-
-			this.entity_set_name = entitySetName;
-		}
-
-		private readonly string entity_set_name;
-		public string EntitySetName {
-			[DebuggerStepThrough]
-			get { return entity_set_name; }
-		}
-	}
+﻿//
+// QueryInterceptorAttribute.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Diagnostics;
+
+namespace System.Data.Services {
+	[AttributeUsage (AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
+	public sealed class QueryInterceptorAttribute : Attribute {
+		public QueryInterceptorAttribute (string entitySetName)
+		{
+			if (entitySetName == null)
+				throw new ArgumentNullException ("entitySetName");
+
+			this.entity_set_name = entitySetName;
+		}
+
+		private readonly string entity_set_name;
+		public string EntitySetName {
+			[DebuggerStepThrough]
+			get { return entity_set_name; }
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/ServiceOperationRights.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/ServiceOperationRights.cs
@@ -1,42 +1,42 @@
-﻿//
-// ServiceOperationRights.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services {
-	[Flags]
-	public enum ServiceOperationRights
-	{
-		None = 0,
-		AllRead = ReadSingle | ReadMultiple,
-		All = AllRead,
-
-		ReadSingle = 1,
-		ReadMultiple = 2,
-
-		OverrideEntitySetRights = 4
-	}
+﻿//
+// ServiceOperationRights.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services {
+	[Flags]
+	public enum ServiceOperationRights
+	{
+		None = 0,
+		AllRead = ReadSingle | ReadMultiple,
+		All = AllRead,
+
+		ReadSingle = 1,
+		ReadMultiple = 2,
+
+		OverrideEntitySetRights = 4
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/SingleResultAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/SingleResultAttribute.cs
@@ -1,33 +1,33 @@
-﻿//
-// SingleResultAttribute.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services {
-	[AttributeUsage (AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
-	public sealed class SingleResultAttribute : Attribute {
-	}
+﻿//
+// SingleResultAttribute.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services {
+	[AttributeUsage (AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
+	public sealed class SingleResultAttribute : Attribute {
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/System.Data.Services/UpdateOperations.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/System.Data.Services/UpdateOperations.cs
@@ -1,38 +1,38 @@
-﻿//
-// UpdateOperations.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Data.Services {
-	[Flags]
-	public enum UpdateOperations
-	{
-		None = 0,
-		Add = 1,
-		Change = 2,
-		Delete = 4
-	}
+﻿//
+// UpdateOperations.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data.Services {
+	[Flags]
+	public enum UpdateOperations
+	{
+		None = 0,
+		Add = 1,
+		Change = 2,
+		Delete = 4
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/ChangeInterceptorAttributeTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/ChangeInterceptorAttributeTests.cs
@@ -1,50 +1,50 @@
-﻿//
-// ChangeInterceptorAttributeTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Services;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class ChangeInterceptorAttributeTests {
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CtorNull()
-		{
-			new ChangeInterceptorAttribute (null);
-		}
-
-		[Test]
-		public void Ctor()
-		{
-			var ci = new ChangeInterceptorAttribute ("setName");
-			Assert.AreEqual ("setName", ci.EntitySetName);
-		}
-	}
-}
+﻿//
+// ChangeInterceptorAttributeTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data.Services;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class ChangeInterceptorAttributeTests {
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CtorNull()
+		{
+			new ChangeInterceptorAttribute (null);
+		}
+
+		[Test]
+		public void Ctor()
+		{
+			var ci = new ChangeInterceptorAttribute ("setName");
+			Assert.AreEqual ("setName", ci.EntitySetName);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/DataServiceExceptionTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/DataServiceExceptionTests.cs
@@ -1,73 +1,73 @@
-﻿//
-// DataServiceExceptionTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Services;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class DataServiceExceptionTests {
-		[Test]
-		public void CtorMessage()
-		{
-			var ex = new DataServiceException ("message");
-			Assert.AreEqual ("message", ex.Message);
-			Assert.IsNull (ex.InnerException);
-		}
-
-		[Test]
-		public void CtorMessageAndInner()
-		{
-			Exception inner = new Exception ("inner");
-			var ex = new DataServiceException ("message", inner);
-
-			Assert.AreEqual ("message", ex.Message);
-			Assert.AreEqual (inner, ex.InnerException);
-		}
-
-		[Test]
-		public void CtorStatusAndMessage()
-		{
-			var ex = new DataServiceException (404, "message");
-			Assert.AreEqual (404, ex.StatusCode);
-			Assert.AreEqual ("message", ex.Message);
-		}
-
-		[Test]
-		public void CtorStatusAndErrorMessageLanguageException()
-		{
-			Exception inner = new Exception ("inner");
-			var ex = new DataServiceException (404, "error", "message", "language", inner);
-			Assert.AreEqual ("message", ex.Message);
-			Assert.AreEqual (404, ex.StatusCode);
-			Assert.AreEqual ("language", ex.MessageLanguage);
-			Assert.AreEqual (inner, ex.InnerException);
-		}
-	}
-}
+﻿//
+// DataServiceExceptionTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data.Services;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class DataServiceExceptionTests {
+		[Test]
+		public void CtorMessage()
+		{
+			var ex = new DataServiceException ("message");
+			Assert.AreEqual ("message", ex.Message);
+			Assert.IsNull (ex.InnerException);
+		}
+
+		[Test]
+		public void CtorMessageAndInner()
+		{
+			Exception inner = new Exception ("inner");
+			var ex = new DataServiceException ("message", inner);
+
+			Assert.AreEqual ("message", ex.Message);
+			Assert.AreEqual (inner, ex.InnerException);
+		}
+
+		[Test]
+		public void CtorStatusAndMessage()
+		{
+			var ex = new DataServiceException (404, "message");
+			Assert.AreEqual (404, ex.StatusCode);
+			Assert.AreEqual ("message", ex.Message);
+		}
+
+		[Test]
+		public void CtorStatusAndErrorMessageLanguageException()
+		{
+			Exception inner = new Exception ("inner");
+			var ex = new DataServiceException (404, "error", "message", "language", inner);
+			Assert.AreEqual ("message", ex.Message);
+			Assert.AreEqual (404, ex.StatusCode);
+			Assert.AreEqual ("language", ex.MessageLanguage);
+			Assert.AreEqual (inner, ex.InnerException);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/DataServiceTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/DataServiceTests.cs
@@ -1,84 +1,84 @@
-﻿//
-// DataServiceTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Services;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class DataServiceTests {
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void AttachHostNull()
-		{
-			var d = new DataService<string>();
-			d.AttachHost (null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void ProcessRequestForMessageNull()
-		{
-			var d = new DataService<string>();
-			d.ProcessRequestForMessage (null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void HandleExceptionNull()
-		{
-			var d = new TestDataService<string>();
-			d.TestHandleException (null);
-		}
-	}
-
-	public class TestDataService<T>
-		: DataService<T>
-	{
-		public T TestCurrentDataSource
-		{
-			get { return this.CurrentDataSource; }
-		}
-
-		public T TestCreateDataSource()
-		{
-			return this.CreateDataSource();
-		}
-
-		public void TestHandleException (HandleExceptionArgs args)
-		{
-			this.HandleException (args);
-		}
-
-		public void TestOnStartProcessingRequest (ProcessRequestArgs args)
-		{
-			this.OnStartProcessingRequest (args);
-		}
-	}
-}
+﻿//
+// DataServiceTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data.Services;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class DataServiceTests {
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void AttachHostNull()
+		{
+			var d = new DataService<string>();
+			d.AttachHost (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void ProcessRequestForMessageNull()
+		{
+			var d = new DataService<string>();
+			d.ProcessRequestForMessage (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void HandleExceptionNull()
+		{
+			var d = new TestDataService<string>();
+			d.TestHandleException (null);
+		}
+	}
+
+	public class TestDataService<T>
+		: DataService<T>
+	{
+		public T TestCurrentDataSource
+		{
+			get { return this.CurrentDataSource; }
+		}
+
+		public T TestCreateDataSource()
+		{
+			return this.CreateDataSource();
+		}
+
+		public void TestHandleException (HandleExceptionArgs args)
+		{
+			this.HandleException (args);
+		}
+
+		public void TestOnStartProcessingRequest (ProcessRequestArgs args)
+		{
+			this.OnStartProcessingRequest (args);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/ETagAttributeTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/ETagAttributeTests.cs
@@ -1,68 +1,68 @@
-//
-// ETagAttributeTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Services;
-using System.Linq;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class ETagAttributeTests {
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CtorPropertyNameNull()
-		{
-			new ETagAttribute ((string)null);
-		}
-
-		[Test]
-		public void CtorPropertyName()
-		{
-			var e = new ETagAttribute ("tag");
-			Assert.AreEqual (1, e.PropertyNames.Count);
-			Assert.AreEqual ("tag", e.PropertyNames.First());
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CtorPropertyNamesNull()
-		{
-			new ETagAttribute ((string[])null);
-		}
-
-		[Test]
-		public void CtorPropertyNames()
-		{
-			var e = new ETagAttribute (new[] { "foo", "bar" });
-			Assert.AreEqual (2, e.PropertyNames.Count);
-			Assert.AreEqual ("foo", e.PropertyNames[0]);
-			Assert.AreEqual ("bar", e.PropertyNames[1]);
-		}
-	}
-}
+//
+// ETagAttributeTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data.Services;
+using System.Linq;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class ETagAttributeTests {
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CtorPropertyNameNull()
+		{
+			new ETagAttribute ((string)null);
+		}
+
+		[Test]
+		public void CtorPropertyName()
+		{
+			var e = new ETagAttribute ("tag");
+			Assert.AreEqual (1, e.PropertyNames.Count);
+			Assert.AreEqual ("tag", e.PropertyNames.First());
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CtorPropertyNamesNull()
+		{
+			new ETagAttribute ((string[])null);
+		}
+
+		[Test]
+		public void CtorPropertyNames()
+		{
+			var e = new ETagAttribute (new[] { "foo", "bar" });
+			Assert.AreEqual (2, e.PropertyNames.Count);
+			Assert.AreEqual ("foo", e.PropertyNames[0]);
+			Assert.AreEqual ("bar", e.PropertyNames[1]);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/ExpandSegmentCollectionTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/ExpandSegmentCollectionTests.cs
@@ -1,105 +1,105 @@
-﻿//
-// ExpandSegmentCollectionTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data.Services;
-using System.Linq.Expressions;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class ExpandSegmentCollectionTests {
-		[Test]
-		public void CtorCapacity()
-		{
-			var esc = new ExpandSegmentCollection (20);
-			Assert.AreEqual (20, esc.Capacity);
-		}
-
-		[Test]
-		public void HasFilterInit()
-		{
-			var esc = new ExpandSegmentCollection();
-			Assert.IsFalse (esc.HasFilter);
-		}
-
-		[Test]
-		public void HasFilterAddNull()
-		{
-			var esc = new ExpandSegmentCollection();
-			esc.Add (new ExpandSegment ("first", null));
-			Assert.IsFalse (esc.HasFilter);
-		}
-
-		[Test]
-		public void HasFilterAddWithFilter()
-		{
-			var esc = new ExpandSegmentCollection();
-			esc.Add (new ExpandSegment ("first", null));
-
-			var param = Expression.Parameter (typeof (bool), "b");
-			var filter = Expression.Lambda (param, param);
-			var filteredSegment = new ExpandSegment ("second", filter);
-			esc.Add (filteredSegment);
-			Assert.IsTrue (esc.HasFilter);
-		}
-
-		[Test]
-		public void HasFilterRemoveFiltered()
-		{
-			var esc = new ExpandSegmentCollection();
-			esc.Add (new ExpandSegment ("first", null));
-
-			var param = Expression.Parameter (typeof (bool), "b");
-			var filter = Expression.Lambda (param, param);
-			var filteredSegment = new ExpandSegment ("second", filter);
-			esc.Add (filteredSegment);
-			esc.Remove (filteredSegment);
-
-			Assert.IsFalse (esc.HasFilter);
-		}
-
-		[Test]
-		public void HasFilterRemoveFilteredMultiple()
-		{
-			var esc = new ExpandSegmentCollection();
-			esc.Add (new ExpandSegment ("first", null));
-
-			var param = Expression.Parameter (typeof (bool), "b");
-			var filter = Expression.Lambda (param, param);
-			var filteredSegment = new ExpandSegment ("second", filter);
-			esc.Add (filteredSegment);
-			esc.Add (filteredSegment);
-
-			esc.Remove (filteredSegment);
-			Assert.IsTrue (esc.HasFilter);
-
-			esc.Remove (filteredSegment);
-			Assert.IsFalse (esc.HasFilter);
-		}
-	}
-}
+﻿//
+// ExpandSegmentCollectionTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Data.Services;
+using System.Linq.Expressions;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class ExpandSegmentCollectionTests {
+		[Test]
+		public void CtorCapacity()
+		{
+			var esc = new ExpandSegmentCollection (20);
+			Assert.AreEqual (20, esc.Capacity);
+		}
+
+		[Test]
+		public void HasFilterInit()
+		{
+			var esc = new ExpandSegmentCollection();
+			Assert.IsFalse (esc.HasFilter);
+		}
+
+		[Test]
+		public void HasFilterAddNull()
+		{
+			var esc = new ExpandSegmentCollection();
+			esc.Add (new ExpandSegment ("first", null));
+			Assert.IsFalse (esc.HasFilter);
+		}
+
+		[Test]
+		public void HasFilterAddWithFilter()
+		{
+			var esc = new ExpandSegmentCollection();
+			esc.Add (new ExpandSegment ("first", null));
+
+			var param = Expression.Parameter (typeof (bool), "b");
+			var filter = Expression.Lambda (param, param);
+			var filteredSegment = new ExpandSegment ("second", filter);
+			esc.Add (filteredSegment);
+			Assert.IsTrue (esc.HasFilter);
+		}
+
+		[Test]
+		public void HasFilterRemoveFiltered()
+		{
+			var esc = new ExpandSegmentCollection();
+			esc.Add (new ExpandSegment ("first", null));
+
+			var param = Expression.Parameter (typeof (bool), "b");
+			var filter = Expression.Lambda (param, param);
+			var filteredSegment = new ExpandSegment ("second", filter);
+			esc.Add (filteredSegment);
+			esc.Remove (filteredSegment);
+
+			Assert.IsFalse (esc.HasFilter);
+		}
+
+		[Test]
+		public void HasFilterRemoveFilteredMultiple()
+		{
+			var esc = new ExpandSegmentCollection();
+			esc.Add (new ExpandSegment ("first", null));
+
+			var param = Expression.Parameter (typeof (bool), "b");
+			var filter = Expression.Lambda (param, param);
+			var filteredSegment = new ExpandSegment ("second", filter);
+			esc.Add (filteredSegment);
+			esc.Add (filteredSegment);
+
+			esc.Remove (filteredSegment);
+			Assert.IsTrue (esc.HasFilter);
+
+			esc.Remove (filteredSegment);
+			Assert.IsFalse (esc.HasFilter);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/ExpandSegmentTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/ExpandSegmentTests.cs
@@ -1,89 +1,89 @@
-﻿//
-// ExpandSegmentTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Services;
-using System.Linq.Expressions;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class ExpandSegmentTests {
-		[Test]
-		public void CtorName()
-		{
-			var s = new ExpandSegment ("name", null);
-			Assert.AreEqual ("name", s.Name);
-			Assert.AreEqual (null, s.Filter);
-			Assert.IsFalse (s.HasFilter);
-		}
-
-		[Test]
-		public void CtorFilter()
-		{
-			var param = Expression.Parameter (typeof (bool), "b");
-			var filter = Expression.Lambda (param, param);
-			var s = new ExpandSegment ("name", filter);
-
-			Assert.AreEqual ("name", s.Name);
-			Assert.AreEqual (filter, s.Filter);
-			Assert.IsTrue (s.HasFilter);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CtorNullName()
-		{
-			new ExpandSegment (null, null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void PathHasFilterException()
-		{
-			ExpandSegment.PathHasFilter (null);
-		}
-
-		[Test]
-		public void PathHasFilter()
-		{
-			var param = Expression.Parameter (typeof (bool), "b");
-			var filter = Expression.Lambda (param, param);
-
-			Assert.IsTrue (ExpandSegment.PathHasFilter (new []
-			{ new ExpandSegment ("first", null), new ExpandSegment ("second", filter), new ExpandSegment ("third", null) }));
-		}
-
-		[Test]
-		public void PathDoesntHaveFilter()
-		{
-			Assert.IsFalse (ExpandSegment.PathHasFilter (new []
-			{ new ExpandSegment ("first", null), new ExpandSegment ("second", null), new ExpandSegment ("third", null) }));
-		}
-	}
-}
+﻿//
+// ExpandSegmentTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data.Services;
+using System.Linq.Expressions;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class ExpandSegmentTests {
+		[Test]
+		public void CtorName()
+		{
+			var s = new ExpandSegment ("name", null);
+			Assert.AreEqual ("name", s.Name);
+			Assert.AreEqual (null, s.Filter);
+			Assert.IsFalse (s.HasFilter);
+		}
+
+		[Test]
+		public void CtorFilter()
+		{
+			var param = Expression.Parameter (typeof (bool), "b");
+			var filter = Expression.Lambda (param, param);
+			var s = new ExpandSegment ("name", filter);
+
+			Assert.AreEqual ("name", s.Name);
+			Assert.AreEqual (filter, s.Filter);
+			Assert.IsTrue (s.HasFilter);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CtorNullName()
+		{
+			new ExpandSegment (null, null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void PathHasFilterException()
+		{
+			ExpandSegment.PathHasFilter (null);
+		}
+
+		[Test]
+		public void PathHasFilter()
+		{
+			var param = Expression.Parameter (typeof (bool), "b");
+			var filter = Expression.Lambda (param, param);
+
+			Assert.IsTrue (ExpandSegment.PathHasFilter (new []
+			{ new ExpandSegment ("first", null), new ExpandSegment ("second", filter), new ExpandSegment ("third", null) }));
+		}
+
+		[Test]
+		public void PathDoesntHaveFilter()
+		{
+			Assert.IsFalse (ExpandSegment.PathHasFilter (new []
+			{ new ExpandSegment ("first", null), new ExpandSegment ("second", null), new ExpandSegment ("third", null) }));
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/IgnorePropertiesAttributeTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/IgnorePropertiesAttributeTests.cs
@@ -1,68 +1,68 @@
-﻿//
-// IgnorePropertiesAttributeTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Services;
-using System.Linq;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class IgnorePropertiesAttributeTests {
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CtorPropertyNameNull()
-		{
-			new IgnorePropertiesAttribute ((string)null);
-		}
-
-		[Test]
-		public void CtorPropertyName()
-		{
-			var e = new IgnorePropertiesAttribute ("tag");
-			Assert.AreEqual (1, e.PropertyNames.Count);
-			Assert.AreEqual ("tag", e.PropertyNames.First());
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CtorPropertyNamesNull()
-		{
-			new IgnorePropertiesAttribute ((string[])null);
-		}
-
-		[Test]
-		public void CtorPropertyNames()
-		{
-			var e = new IgnorePropertiesAttribute (new[] { "foo", "bar" });
-			Assert.AreEqual (2, e.PropertyNames.Count);
-			Assert.AreEqual ("foo", e.PropertyNames[0]);
-			Assert.AreEqual ("bar", e.PropertyNames[1]);
-		}
-	}
-}
+﻿//
+// IgnorePropertiesAttributeTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data.Services;
+using System.Linq;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class IgnorePropertiesAttributeTests {
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CtorPropertyNameNull()
+		{
+			new IgnorePropertiesAttribute ((string)null);
+		}
+
+		[Test]
+		public void CtorPropertyName()
+		{
+			var e = new IgnorePropertiesAttribute ("tag");
+			Assert.AreEqual (1, e.PropertyNames.Count);
+			Assert.AreEqual ("tag", e.PropertyNames.First());
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CtorPropertyNamesNull()
+		{
+			new IgnorePropertiesAttribute ((string[])null);
+		}
+
+		[Test]
+		public void CtorPropertyNames()
+		{
+			var e = new IgnorePropertiesAttribute (new[] { "foo", "bar" });
+			Assert.AreEqual (2, e.PropertyNames.Count);
+			Assert.AreEqual ("foo", e.PropertyNames[0]);
+			Assert.AreEqual ("bar", e.PropertyNames[1]);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/MimeTypeAttributeTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/MimeTypeAttributeTests.cs
@@ -1,43 +1,43 @@
-﻿//
-// MimeTypeAttributeTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Data.Services;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class MimeTypeAttributeTests {
-		[Test]
-		public void Ctor()
-		{
-			var mt = new MimeTypeAttribute ("member", "type");
-			Assert.AreEqual ("member", mt.MemberName);
-			Assert.AreEqual ("type", mt.MimeType);
-		}
-	}
-}
+﻿//
+// MimeTypeAttributeTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Data.Services;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class MimeTypeAttributeTests {
+		[Test]
+		public void Ctor()
+		{
+			var mt = new MimeTypeAttribute ("member", "type");
+			Assert.AreEqual ("member", mt.MemberName);
+			Assert.AreEqual ("type", mt.MimeType);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data.Services/Test/QueryInterceptorAttributeTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data.Services/Test/QueryInterceptorAttributeTests.cs
@@ -1,50 +1,50 @@
-﻿//
-// QueryInterceptorAttributeTests.cs
-//
-// Author:
-//   Eric Maupin  <me@ermau.com>
-//
-// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data.Services;
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Services {
-	[TestFixture]
-	public class QueryInterceptorAttributeTests {
-		[Test]
-		public void Ctor()
-		{
-			var qi = new QueryInterceptorAttribute ("set");
-			Assert.AreEqual ("set", qi.EntitySetName);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CtorNull()
-		{
-			new QueryInterceptorAttribute (null);
-		}
-	}
-}
+﻿//
+// QueryInterceptorAttributeTests.cs
+//
+// Author:
+//   Eric Maupin  <me@ermau.com>
+//
+// Copyright (c) 2009 Eric Maupin (http://www.ermau.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data.Services;
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Services {
+	[TestFixture]
+	public class QueryInterceptorAttributeTests {
+		[Test]
+		public void Ctor()
+		{
+			var qi = new QueryInterceptorAttribute ("set");
+			Assert.AreEqual ("set", qi.EntitySetName);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CtorNull()
+		{
+			new QueryInterceptorAttribute (null);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Documentation/System.Data.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Documentation/System.Data.xml
@@ -1,4296 +1,4296 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Data">
-    <class name="InternalDataCollectionBase" namespace="System.Data">
-        <constructor name="InternalDataCollectionBase" argnames="" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Constraint" namespace="System.Data">
-        <constructor name="Constraint" argnames="" />
-        <property name="ConstraintName" propertytype="System.String" />
-        <property name="SchemaName" propertytype="System.String" />
-        <property name="InCollection" propertytype="System.Boolean" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
-        <property name="_DataSet" propertytype="System.Data.DataSet" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CheckStateForProperty" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ConstraintCollection" namespace="System.Data">
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <property name="Item" propertytype="System.Data.Constraint" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="Item" propertytype="System.Data.Constraint" />
-        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="constraintName" returntype="System.Int32" />
-        <method name="Add(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="name, primaryKeyColumns, foreignKeyColumns" returntype="System.Data.Constraint" />
-        <method name="Add(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="name, primaryKeyColumn, foreignKeyColumn" returntype="System.Data.Constraint" />
-        <method name="Add(System.String, System.Data.DataColumn, System.Boolean)" argnames="name, column, primaryKey" returntype="System.Data.Constraint" />
-        <method name="Add(System.String, System.Data.DataColumn[], System.Boolean)" argnames="name, columns, primaryKey" returntype="System.Data.Constraint" />
-        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Data.Constraint)" argnames="constraint" returntype="System.Void" />
-        <method name="AddRange(System.Data.Constraint[])" argnames="constraints" returntype="System.Void" />
-        <method name="CanRemove(System.Data.Constraint)" argnames="constraint" returntype="System.Boolean" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="IndexOf(System.Data.Constraint)" argnames="constraint" returntype="System.Int32" />
-        <method name="Remove(System.Data.Constraint)" argnames="constraint" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-    </class>
-    <class name="DataColumn" namespace="System.Data">
-        <constructor name="DataColumn" argnames="" />
-        <constructor name="DataColumn(System.String)" argnames="columnName" />
-        <constructor name="DataColumn(System.String, System.Type)" argnames="columnName, dataType" />
-        <constructor name="DataColumn(System.String, System.Type, System.String)" argnames="columnName, dataType, expr" />
-        <constructor name="DataColumn(System.String, System.Type, System.String, System.Data.MappingType)" argnames="columnName, dataType, expr, type" />
-        <property name="AllowDBNull" propertytype="System.Boolean" />
-        <property name="AutoIncrement" propertytype="System.Boolean" />
-        <property name="AutoIncrementSeed" propertytype="System.Int64" />
-        <property name="AutoIncrementStep" propertytype="System.Int64" />
-        <property name="Caption" propertytype="System.String" />
-        <property name="ColumnName" propertytype="System.String" />
-        <property name="EncodedColumnName" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="Computed" propertytype="System.Boolean" />
-        <property name="DataExpression" propertytype="System.Data.DataExpression" />
-        <property name="DataType" propertytype="System.Type" />
-        <property name="DefaultValue" propertytype="System.Object" />
-        <property name="Expression" propertytype="System.String" />
-        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
-        <property name="HasData" propertytype="System.Boolean" />
-        <property name="MaxLength" propertytype="System.Int32" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Ordinal" propertytype="System.Int32" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="SortIndex" propertytype="System.Data.Index" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Unique" propertytype="System.Boolean" />
-        <property name="InternalUnique" propertytype="System.Boolean" />
-        <property name="XmlDataType" propertytype="System.String" />
-        <property name="SimpleType" propertytype="System.Data.SimpleType" />
-        <property name="ColumnMapping" propertytype="System.Data.MappingType" />
-        <property name="Description" propertytype="System.String" />
-        <property name="Storage" propertytype="System.Data.Common.DataStorage" />
-        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CheckUnique" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
-    </class>
-    <class name="DataColumnChangeEventArgs" namespace="System.Data">
-        <constructor name="DataColumnChangeEventArgs(System.Data.DataRow, System.Data.DataColumn, System.Object)" argnames="row, column, value" />
-        <property name="Column" propertytype="System.Data.DataColumn" />
-        <property name="Row" propertytype="System.Data.DataRow" />
-        <property name="ProposedValue" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataColumnCollection" namespace="System.Data">
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <property name="Item" propertytype="System.Data.DataColumn" />
-        <property name="Item" propertytype="System.Data.DataColumn" />
-        <property name="Item" propertytype="System.Data.DataColumn" />
-        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="IndexOf(System.Data.DataColumn)" argnames="column" returntype="System.Int32" />
-        <method name="Add" argnames="" returntype="System.Data.DataColumn" />
-        <method name="Add(System.String)" argnames="columnName" returntype="System.Data.DataColumn" />
-        <method name="Add(System.String, System.Type)" argnames="columnName, type" returntype="System.Data.DataColumn" />
-        <method name="Add(System.String, System.Type, System.String)" argnames="columnName, type, expression" returntype="System.Data.DataColumn" />
-        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Data.DataColumn)" argnames="column" returntype="System.Void" />
-        <method name="AddRange(System.Data.DataColumn[])" argnames="columns" returntype="System.Void" />
-        <method name="CanRemove(System.Data.DataColumn)" argnames="column" returntype="System.Boolean" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="IndexOf(System.String)" argnames="columnName" returntype="System.Int32" />
-        <method name="Remove(System.Data.DataColumn)" argnames="column" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-    </class>
-    <class name="DataException" namespace="System.Data">
-        <constructor name="DataException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="DataException" argnames="" />
-        <constructor name="DataException(System.String)" argnames="s" />
-        <constructor name="DataException(System.String, System.Exception)" argnames="s, innerException" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ConstraintException" namespace="System.Data">
-        <constructor name="ConstraintException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="ConstraintException" argnames="" />
-        <constructor name="ConstraintException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DeletedRowInaccessibleException" namespace="System.Data">
-        <constructor name="DeletedRowInaccessibleException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="DeletedRowInaccessibleException" argnames="" />
-        <constructor name="DeletedRowInaccessibleException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DuplicateNameException" namespace="System.Data">
-        <constructor name="DuplicateNameException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="DuplicateNameException" argnames="" />
-        <constructor name="DuplicateNameException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InRowChangingEventException" namespace="System.Data">
-        <constructor name="InRowChangingEventException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="InRowChangingEventException" argnames="" />
-        <constructor name="InRowChangingEventException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InvalidConstraintException" namespace="System.Data">
-        <constructor name="InvalidConstraintException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="InvalidConstraintException" argnames="" />
-        <constructor name="InvalidConstraintException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MissingPrimaryKeyException" namespace="System.Data">
-        <constructor name="MissingPrimaryKeyException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="MissingPrimaryKeyException" argnames="" />
-        <constructor name="MissingPrimaryKeyException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NoNullAllowedException" namespace="System.Data">
-        <constructor name="NoNullAllowedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="NoNullAllowedException" argnames="" />
-        <constructor name="NoNullAllowedException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ReadOnlyException" namespace="System.Data">
-        <constructor name="ReadOnlyException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="ReadOnlyException" argnames="" />
-        <constructor name="ReadOnlyException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RowNotInTableException" namespace="System.Data">
-        <constructor name="RowNotInTableException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="RowNotInTableException" argnames="" />
-        <constructor name="RowNotInTableException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="VersionNotFoundException" namespace="System.Data">
-        <constructor name="VersionNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="VersionNotFoundException" argnames="" />
-        <constructor name="VersionNotFoundException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataRelation" namespace="System.Data">
-        <constructor name="DataRelation(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="relationName, parentColumn, childColumn" />
-        <constructor name="DataRelation(System.String, System.Data.DataColumn, System.Data.DataColumn, System.Boolean)" argnames="relationName, parentColumn, childColumn, createConstraints" />
-        <constructor name="DataRelation(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="relationName, parentColumns, childColumns" />
-        <constructor name="DataRelation(System.String, System.Data.DataColumn[], System.Data.DataColumn[], System.Boolean)" argnames="relationName, parentColumns, childColumns, createConstraints" />
-        <constructor name="DataRelation(System.String, System.String, System.String, System.String[], System.String[], System.Boolean)" argnames="relationName, parentTableName, childTableName, parentColumnNames, childColumnNames, nested" />
-        <property name="ChildColumns" propertytype="System.Data.DataColumn[]" />
-        <property name="ChildKey" propertytype="System.Data.DataKey" />
-        <property name="ChildTable" propertytype="System.Data.DataTable" />
-        <property name="DataSet" propertytype="System.Data.DataSet" />
-        <property name="ParentColumnNames" propertytype="System.String[]" />
-        <property name="ChildColumnNames" propertytype="System.String[]" />
-        <property name="ParentColumns" propertytype="System.Data.DataColumn[]" />
-        <property name="ParentKey" propertytype="System.Data.DataKey" />
-        <property name="ParentTable" propertytype="System.Data.DataTable" />
-        <property name="RelationName" propertytype="System.String" />
-        <property name="Nested" propertytype="System.Boolean" />
-        <property name="ParentKeyConstraint" propertytype="System.Data.UniqueConstraint" />
-        <property name="ChildKeyConstraint" propertytype="System.Data.ForeignKeyConstraint" />
-        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CheckStateForProperty" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataRelationCollection" namespace="System.Data">
-        <constructor name="DataRelationCollection" argnames="" />
-        <property name="Item" propertytype="System.Data.DataRelation" />
-        <property name="Item" propertytype="System.Data.DataRelation" />
-        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
-        <property name="List" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Collections.ArrayList" />
-        <method name="RemoveCore(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
-        <method name="CanRemove(System.Data.DataRelation)" argnames="relation" returntype="System.Boolean" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="GetDataSet" argnames="" returntype="System.Data.DataSet" />
-        <method name="IndexOf(System.String)" argnames="relationName" returntype="System.Int32" />
-        <method name="IndexOf(System.Data.DataRelation)" argnames="relation" returntype="System.Int32" />
-        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="AddCore(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
-        <method name="Add(System.Data.DataColumn, System.Data.DataColumn)" argnames="parentColumn, childColumn" returntype="System.Data.DataRelation" />
-        <method name="Add(System.String, System.Data.DataColumn, System.Data.DataColumn, System.Boolean)" argnames="name, parentColumn, childColumn, createConstraints" returntype="System.Data.DataRelation" />
-        <method name="Add(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="name, parentColumn, childColumn" returntype="System.Data.DataRelation" />
-        <method name="Add(System.Data.DataColumn[], System.Data.DataColumn[])" argnames="parentColumns, childColumns" returntype="System.Data.DataRelation" />
-        <method name="Add(System.String, System.Data.DataColumn[], System.Data.DataColumn[], System.Boolean)" argnames="name, parentColumns, childColumns, createConstraints" returntype="System.Data.DataRelation" />
-        <method name="Add(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="name, parentColumns, childColumns" returntype="System.Data.DataRelation" />
-        <method name="AddRange(System.Data.DataRelation[])" argnames="relations" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
-        <method name="Remove(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-    </class>
-    <class name="DataRow" namespace="System.Data">
-        <property name="Element" propertytype="System.Xml.XmlBoundElement" />
-        <property name="RowError" propertytype="System.String" />
-        <property name="RowState" propertytype="System.Data.DataRowState" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="ItemArray" propertytype="System.Object[]" />
-        <property name="HasErrors" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AcceptChanges" argnames="" returntype="System.Void" />
-        <method name="BeginEdit" argnames="" returntype="System.Void" />
-        <method name="CancelEdit" argnames="" returntype="System.Void" />
-        <method name="Delete" argnames="" returntype="System.Void" />
-        <method name="EndEdit" argnames="" returntype="System.Void" />
-        <method name="SetColumnError(System.Int32, System.String)" argnames="columnIndex, error" returntype="System.Void" />
-        <method name="SetColumnError(System.String, System.String)" argnames="columnName, error" returntype="System.Void" />
-        <method name="SetColumnError(System.Data.DataColumn, System.String)" argnames="column, error" returntype="System.Void" />
-        <method name="GetColumnError(System.Int32)" argnames="columnIndex" returntype="System.String" />
-        <method name="GetColumnError(System.String)" argnames="columnName" returntype="System.String" />
-        <method name="GetColumnError(System.Data.DataColumn)" argnames="column" returntype="System.String" />
-        <method name="ClearErrors" argnames="" returntype="System.Void" />
-        <method name="GetColumnsInError" argnames="" returntype="System.Data.DataColumn[]" />
-        <method name="GetChildRows(System.String)" argnames="relationName" returntype="System.Data.DataRow[]" />
-        <method name="GetChildRows(System.String, System.Data.DataRowVersion)" argnames="relationName, version" returntype="System.Data.DataRow[]" />
-        <method name="GetChildRows(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataRow[]" />
-        <method name="GetChildRows(System.Data.DataRelation, System.Data.DataRowVersion)" argnames="relation, version" returntype="System.Data.DataRow[]" />
-        <method name="GetParentRow(System.String)" argnames="relationName" returntype="System.Data.DataRow" />
-        <method name="GetParentRow(System.String, System.Data.DataRowVersion)" argnames="relationName, version" returntype="System.Data.DataRow" />
-        <method name="GetParentRow(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataRow" />
-        <method name="GetParentRow(System.Data.DataRelation, System.Data.DataRowVersion)" argnames="relation, version" returntype="System.Data.DataRow" />
-        <method name="GetParentRows(System.String)" argnames="relationName" returntype="System.Data.DataRow[]" />
-        <method name="GetParentRows(System.String, System.Data.DataRowVersion)" argnames="relationName, version" returntype="System.Data.DataRow[]" />
-        <method name="GetParentRows(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataRow[]" />
-        <method name="GetParentRows(System.Data.DataRelation, System.Data.DataRowVersion)" argnames="relation, version" returntype="System.Data.DataRow[]" />
-        <method name="HasVersion(System.Data.DataRowVersion)" argnames="version" returntype="System.Boolean" />
-        <method name="IsNull(System.Int32)" argnames="columnIndex" returntype="System.Boolean" />
-        <method name="IsNull(System.String)" argnames="columnName" returntype="System.Boolean" />
-        <method name="IsNull(System.Data.DataColumn)" argnames="column" returntype="System.Boolean" />
-        <method name="IsNull(System.Data.DataColumn, System.Data.DataRowVersion)" argnames="column, version" returntype="System.Boolean" />
-        <method name="RejectChanges" argnames="" returntype="System.Void" />
-        <method name="SetNull(System.Data.DataColumn)" argnames="column" returntype="System.Void" />
-        <method name="SetParentRow(System.Data.DataRow)" argnames="parentRow" returntype="System.Void" />
-        <method name="SetParentRow(System.Data.DataRow, System.Data.DataRelation)" argnames="parentRow, relation" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataRowBuilder" namespace="System.Data">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataRowChangeEventArgs" namespace="System.Data">
-        <constructor name="DataRowChangeEventArgs(System.Data.DataRow, System.Data.DataRowAction)" argnames="row, action" />
-        <property name="Row" propertytype="System.Data.DataRow" />
-        <property name="Action" propertytype="System.Data.DataRowAction" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataRowCollection" namespace="System.Data">
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <property name="Item" propertytype="System.Data.DataRow" />
-        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
-        <method name="Add(System.Object[])" argnames="values" returntype="System.Data.DataRow" />
-        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Data.DataRow)" argnames="row" returntype="System.Void" />
-        <method name="InsertAt(System.Data.DataRow, System.Int32)" argnames="row, pos" returntype="System.Void" />
-        <method name="Find(System.Object)" argnames="key" returntype="System.Data.DataRow" />
-        <method name="Find(System.Object[])" argnames="keys" returntype="System.Data.DataRow" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="Contains(System.Object[])" argnames="keys" returntype="System.Boolean" />
-        <method name="Remove(System.Data.DataRow)" argnames="row" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataRowView" namespace="System.Data">
-        <property name="DataView" propertytype="System.Data.DataView" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Row" propertytype="System.Data.DataRow" />
-        <property name="RowVersion" propertytype="System.Data.DataRowVersion" />
-        <property name="IsNew" propertytype="System.Boolean" />
-        <property name="IsEdit" propertytype="System.Boolean" />
-        <method name="CancelEdit" argnames="" returntype="System.Void" />
-        <method name="EndEdit" argnames="" returntype="System.Void" />
-        <method name="BeginEdit" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateChildView(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataView" />
-        <method name="CreateChildView(System.String)" argnames="relationName" returntype="System.Data.DataView" />
-        <method name="Delete" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataSet" namespace="System.Data">
-        <constructor name="DataSet" argnames="" />
-        <constructor name="DataSet(System.String)" argnames="dataSetName" />
-        <constructor name="DataSet(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="CaseSensitive" propertytype="System.Boolean" />
-        <property name="DefaultViewManager" propertytype="System.Data.DataViewManager" />
-        <property name="EnforceConstraints" propertytype="System.Boolean" />
-        <property name="DataSetName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="RowDiffId" propertytype="System.Collections.Hashtable" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
-        <property name="HasErrors" propertytype="System.Boolean" />
-        <property name="Locale" propertytype="System.Globalization.CultureInfo" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="Relations" propertytype="System.Data.DataRelationCollection" />
-        <property name="Tables" propertytype="System.Data.DataTableCollection" />
-        <property name="FBoundToDocument" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="GetSchemaSerializable" argnames="" returntype="System.Xml.Schema.XmlSchema" />
-        <method name="ReadXmlSerializable(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="RejectChanges" argnames="" returntype="System.Void" />
-        <method name="OnRemoveRelation(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
-        <method name="OnRemoveTable(System.Data.DataTable)" argnames="table" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Data.DataSet" />
-        <method name="ShouldSerializeTables" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeRelations" argnames="" returntype="System.Boolean" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
-        <method name="AcceptChanges" argnames="" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Copy" argnames="" returntype="System.Data.DataSet" />
-        <method name="GetChanges" argnames="" returntype="System.Data.DataSet" />
-        <method name="GetChanges(System.Data.DataRowState)" argnames="rowStates" returntype="System.Data.DataSet" />
-        <method name="GetSerializationData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetXml" argnames="" returntype="System.String" />
-        <method name="GetXmlSchema" argnames="" returntype="System.String" />
-        <method name="HasChanges" argnames="" returntype="System.Boolean" />
-        <method name="HasChanges(System.Data.DataRowState)" argnames="rowStates" returntype="System.Boolean" />
-        <method name="InferXmlSchema(System.Xml.XmlReader, System.String[])" argnames="reader, nsArray" returntype="System.Void" />
-        <method name="InferXmlSchema(System.IO.Stream, System.String[])" argnames="stream, nsArray" returntype="System.Void" />
-        <method name="InferXmlSchema(System.IO.TextReader, System.String[])" argnames="reader, nsArray" returntype="System.Void" />
-        <method name="InferXmlSchema(System.String, System.String[])" argnames="fileName, nsArray" returntype="System.Void" />
-        <method name="ReadXmlSchema(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
-        <method name="ReadXmlSchema(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="ReadXmlSchema(System.IO.TextReader)" argnames="reader" returntype="System.Void" />
-        <method name="ReadXmlSchema(System.String)" argnames="fileName" returntype="System.Void" />
-        <method name="WriteXmlSchema(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="WriteXmlSchema(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
-        <method name="WriteXmlSchema(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-        <method name="WriteXmlSchema(System.String)" argnames="fileName" returntype="System.Void" />
-        <method name="ReadXml(System.Xml.XmlReader)" argnames="reader" returntype="System.Data.XmlReadMode" />
-        <method name="ReadXml(System.IO.Stream)" argnames="stream" returntype="System.Data.XmlReadMode" />
-        <method name="ReadXml(System.IO.TextReader)" argnames="reader" returntype="System.Data.XmlReadMode" />
-        <method name="ReadXml(System.String)" argnames="fileName" returntype="System.Data.XmlReadMode" />
-        <method name="ReadXml(System.Xml.XmlReader, System.Data.XmlReadMode)" argnames="reader, mode" returntype="System.Data.XmlReadMode" />
-        <method name="ReadXml(System.IO.Stream, System.Data.XmlReadMode)" argnames="stream, mode" returntype="System.Data.XmlReadMode" />
-        <method name="ReadXml(System.IO.TextReader, System.Data.XmlReadMode)" argnames="reader, mode" returntype="System.Data.XmlReadMode" />
-        <method name="ReadXml(System.String, System.Data.XmlReadMode)" argnames="fileName, mode" returntype="System.Data.XmlReadMode" />
-        <method name="WriteXml(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="WriteXml(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
-        <method name="WriteXml(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-        <method name="WriteXml(System.String)" argnames="fileName" returntype="System.Void" />
-        <method name="WriteXml(System.IO.Stream, System.Data.XmlWriteMode)" argnames="stream, mode" returntype="System.Void" />
-        <method name="WriteXml(System.IO.TextWriter, System.Data.XmlWriteMode)" argnames="writer, mode" returntype="System.Void" />
-        <method name="WriteXml(System.Xml.XmlWriter, System.Data.XmlWriteMode)" argnames="writer, mode" returntype="System.Void" />
-        <method name="WriteXml(System.String, System.Data.XmlWriteMode)" argnames="fileName, mode" returntype="System.Void" />
-        <method name="Merge(System.Data.DataSet)" argnames="dataSet" returntype="System.Void" />
-        <method name="Merge(System.Data.DataSet, System.Boolean)" argnames="dataSet, preserveChanges" returntype="System.Void" />
-        <method name="Merge(System.Data.DataSet, System.Boolean, System.Data.MissingSchemaAction)" argnames="dataSet, preserveChanges, missingSchemaAction" returntype="System.Void" />
-        <method name="Merge(System.Data.DataTable)" argnames="table" returntype="System.Void" />
-        <method name="Merge(System.Data.DataTable, System.Boolean, System.Data.MissingSchemaAction)" argnames="table, preserveChanges, missingSchemaAction" returntype="System.Void" />
-        <method name="Merge(System.Data.DataRow[])" argnames="rows" returntype="System.Void" />
-        <method name="Merge(System.Data.DataRow[], System.Boolean, System.Data.MissingSchemaAction)" argnames="rows, preserveChanges, missingSchemaAction" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="MergeFailed" />
-        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
-    </class>
-    <class name="DataSysDescriptionAttribute" namespace="System.Data">
-        <constructor name="DataSysDescriptionAttribute(System.String)" argnames="description" />
-        <property name="Description" propertytype="System.String" />
-        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataTableCollection" namespace="System.Data">
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <property name="Item" propertytype="System.Data.DataTable" />
-        <property name="Item" propertytype="System.Data.DataTable" />
-        <property name="Item" propertytype="System.Data.DataTable" />
-        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="tableName" returntype="System.Int32" />
-        <method name="IndexOf(System.Data.DataTable)" argnames="table" returntype="System.Int32" />
-        <method name="Add" argnames="" returntype="System.Data.DataTable" />
-        <method name="Add(System.String)" argnames="name" returntype="System.Data.DataTable" />
-        <method name="Add(System.Data.DataTable)" argnames="table" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddRange(System.Data.DataTable[])" argnames="tables" returntype="System.Void" />
-        <method name="CanRemove(System.Data.DataTable)" argnames="table" returntype="System.Boolean" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="Remove(System.Data.DataTable)" argnames="table" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-        <event name="CollectionChanging" />
-    </class>
-    <class name="DataView" namespace="System.Data">
-        <constructor name="DataView" argnames="" />
-        <constructor name="DataView(System.Data.DataTable)" argnames="table" />
-        <constructor name="DataView(System.Data.DataTable, System.String, System.String, System.Data.DataViewRowState)" argnames="table, RowFilter, Sort, RowState" />
-        <property name="AllowDelete" propertytype="System.Boolean" />
-        <property name="ApplyDefaultSort" propertytype="System.Boolean" />
-        <property name="AllowEdit" propertytype="System.Boolean" />
-        <property name="AllowNew" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="DataViewManager" propertytype="System.Data.DataViewManager" />
-        <property name="IsOpen" propertytype="System.Boolean" />
-        <property name="RowFilter" propertytype="System.String" />
-        <property name="RowStateFilter" propertytype="System.Data.DataViewRowState" />
-        <property name="RowViewCache" propertytype="System.Data.DataRowView[]" />
-        <property name="Sort" propertytype="System.String" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="Item" propertytype="System.Data.DataRowView" />
-        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="ColumnCollectionChanged(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="UpdateIndex(System.Boolean)" argnames="force" returntype="System.Void" />
-        <method name="OnListChanged(System.ComponentModel.ListChangedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="IndexListChanged(System.Object, System.ComponentModel.ListChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="AddNew" argnames="" returntype="System.Data.DataRowView" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Delete(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Find(System.Object)" argnames="key" returntype="System.Int32" />
-        <method name="Find(System.Object[])" argnames="key" returntype="System.Int32" />
-        <method name="FindRows(System.Object)" argnames="key" returntype="System.Data.DataRowView[]" />
-        <method name="FindRows(System.Object[])" argnames="key" returntype="System.Data.DataRowView[]" />
-        <method name="Open" argnames="" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="UpdateIndex" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ListChanged" />
-        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
-    </class>
-    <class name="DataViewManager" namespace="System.Data">
-        <constructor name="DataViewManager" argnames="" />
-        <constructor name="DataViewManager(System.Data.DataSet)" argnames="dataSet" />
-        <property name="DataSet" propertytype="System.Data.DataSet" />
-        <property name="DataViewSettings" propertytype="System.Data.DataViewSettingCollection" />
-        <property name="DataViewSettingCollectionString" propertytype="System.String" />
-        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
-        <method name="RelationCollectionChanged(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="TableCollectionChanged(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="OnListChanged(System.ComponentModel.ListChangedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
-        <method name="CreateDataView(System.Data.DataTable)" argnames="table" returntype="System.Data.DataView" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ListChanged" />
-        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
-    </class>
-    <class name="DataViewSetting" namespace="System.Data">
-        <property name="ApplyDefaultSort" propertytype="System.Boolean" />
-        <property name="DataViewManager" propertytype="System.Data.DataViewManager" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="RowFilter" propertytype="System.String" />
-        <property name="RowStateFilter" propertytype="System.Data.DataViewRowState" />
-        <property name="Sort" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataViewSettingCollection" namespace="System.Data">
-        <property name="Item" propertytype="System.Data.DataViewSetting" />
-        <property name="Item" propertytype="System.Data.DataViewSetting" />
-        <property name="Item" propertytype="System.Data.DataViewSetting" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ForeignKeyConstraint" namespace="System.Data">
-        <constructor name="ForeignKeyConstraint(System.Data.DataColumn, System.Data.DataColumn)" argnames="parentColumn, childColumn" />
-        <constructor name="ForeignKeyConstraint(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="constraintName, parentColumn, childColumn" />
-        <constructor name="ForeignKeyConstraint(System.Data.DataColumn[], System.Data.DataColumn[])" argnames="parentColumns, childColumns" />
-        <constructor name="ForeignKeyConstraint(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="constraintName, parentColumns, childColumns" />
-        <constructor name="ForeignKeyConstraint(System.String, System.String, System.String[], System.String[], System.Data.AcceptRejectRule, System.Data.Rule, System.Data.Rule)" argnames="constraintName, parentTableName, parentColumnNames, childColumnNames, acceptRejectRule, deleteRule, updateRule" />
-        <property name="ChildKey" propertytype="System.Data.DataKey" />
-        <property name="Columns" propertytype="System.Data.DataColumn[]" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="ParentColumnNames" propertytype="System.String[]" />
-        <property name="ChildColumnNames" propertytype="System.String[]" />
-        <property name="AcceptRejectRule" propertytype="System.Data.AcceptRejectRule" />
-        <property name="DeleteRule" propertytype="System.Data.Rule" />
-        <property name="RelatedColumns" propertytype="System.Data.DataColumn[]" />
-        <property name="ParentKey" propertytype="System.Data.DataKey" />
-        <property name="RelatedTable" propertytype="System.Data.DataTable" />
-        <property name="UpdateRule" propertytype="System.Data.Rule" />
-        <property name="ConstraintName" inherited="System.Data.Constraint" propertytype="System.String" />
-        <property name="ExtendedProperties" inherited="System.Data.Constraint" propertytype="System.Data.PropertyCollection" />
-        <property name="_DataSet" inherited="System.Data.Constraint" propertytype="System.Data.DataSet" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Data.Constraint" returntype="System.String" />
-        <method name="CheckStateForProperty" argnames="" inherited="System.Data.Constraint" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MergeFailedEventArgs" namespace="System.Data">
-        <constructor name="MergeFailedEventArgs(System.Data.DataTable, System.String)" argnames="table, conflict" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="Conflict" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyCollection" namespace="System.Data">
-        <constructor name="PropertyCollection" argnames="" />
-        <property name="hcp" inherited="System.Collections.Hashtable" propertytype="System.Collections.IHashCodeProvider" />
-        <property name="comparer" inherited="System.Collections.Hashtable" propertytype="System.Collections.IComparer" />
-        <property name="Item" inherited="System.Collections.Hashtable" propertytype="System.Object" />
-        <property name="IsReadOnly" inherited="System.Collections.Hashtable" propertytype="System.Boolean" />
-        <property name="IsFixedSize" inherited="System.Collections.Hashtable" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Collections.Hashtable" propertytype="System.Boolean" />
-        <property name="Keys" inherited="System.Collections.Hashtable" propertytype="System.Collections.ICollection" />
-        <property name="Values" inherited="System.Collections.Hashtable" propertytype="System.Collections.ICollection" />
-        <property name="SyncRoot" inherited="System.Collections.Hashtable" propertytype="System.Object" />
-        <property name="Count" inherited="System.Collections.Hashtable" propertytype="System.Int32" />
-        <method name="Clone" argnames="" inherited="System.Collections.Hashtable" returntype="System.Object" />
-        <method name="OnDeserialization(System.Object)" argnames="sender" inherited="System.Collections.Hashtable" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Collections.Hashtable" returntype="System.Void" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" inherited="System.Collections.Hashtable" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.Hashtable" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Collections.Hashtable" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.Hashtable" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
-        <method name="KeyEquals(System.Object, System.Object)" argnames="item, key" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
-        <method name="GetHash(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Int32" />
-        <method name="ContainsValue(System.Object)" argnames="value" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
-        <method name="ContainsKey(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UniqueConstraint" namespace="System.Data">
-        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn)" argnames="name, column" />
-        <constructor name="UniqueConstraint(System.Data.DataColumn)" argnames="column" />
-        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn[])" argnames="name, columns" />
-        <constructor name="UniqueConstraint(System.Data.DataColumn[])" argnames="columns" />
-        <constructor name="UniqueConstraint(System.String, System.String[], System.Boolean)" argnames="name, columnNames, isPrimaryKey" />
-        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn, System.Boolean)" argnames="name, column, isPrimaryKey" />
-        <constructor name="UniqueConstraint(System.Data.DataColumn, System.Boolean)" argnames="column, isPrimaryKey" />
-        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn[], System.Boolean)" argnames="name, columns, isPrimaryKey" />
-        <constructor name="UniqueConstraint(System.Data.DataColumn[], System.Boolean)" argnames="columns, isPrimaryKey" />
-        <property name="ColumnNames" propertytype="System.String[]" />
-        <property name="Columns" propertytype="System.Data.DataColumn[]" />
-        <property name="IsPrimaryKey" propertytype="System.Boolean" />
-        <property name="InCollection" propertytype="System.Boolean" />
-        <property name="Key" propertytype="System.Data.DataKey" />
-        <property name="Table" propertytype="System.Data.DataTable" />
-        <property name="ConstraintName" inherited="System.Data.Constraint" propertytype="System.String" />
-        <property name="ExtendedProperties" inherited="System.Data.Constraint" propertytype="System.Data.PropertyCollection" />
-        <property name="_DataSet" inherited="System.Data.Constraint" propertytype="System.Data.DataSet" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="key2" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Data.Constraint" returntype="System.String" />
-        <method name="CheckStateForProperty" argnames="" inherited="System.Data.Constraint" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DBConcurrencyException" namespace="System.Data">
-        <constructor name="DBConcurrencyException(System.String)" argnames="message" />
-        <constructor name="DBConcurrencyException(System.String, System.Exception)" argnames="message, inner" />
-        <property name="Row" propertytype="System.Data.DataRow" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FillErrorEventArgs" namespace="System.Data">
-        <constructor name="FillErrorEventArgs(System.Data.DataTable, System.Object[])" argnames="dataTable, values" />
-        <property name="Continue" propertytype="System.Boolean" />
-        <property name="DataTable" propertytype="System.Data.DataTable" />
-        <property name="Errors" propertytype="System.Exception" />
-        <property name="Values" propertytype="System.Object[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StateChangeEventArgs" namespace="System.Data">
-        <constructor name="StateChangeEventArgs(System.Data.ConnectionState, System.Data.ConnectionState)" argnames="originalState, currentState" />
-        <property name="CurrentState" propertytype="System.Data.ConnectionState" />
-        <property name="OriginalState" propertytype="System.Data.ConnectionState" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataTable" namespace="System.Data">
-        <constructor name="DataTable" argnames="" />
-        <constructor name="DataTable(System.String)" argnames="tableName" />
-        <constructor name="DataTable(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="LiveIndexes" propertytype="System.Collections.ArrayList" />
-        <property name="CaseSensitive" propertytype="System.Boolean" />
-        <property name="ChildRelations" propertytype="System.Data.DataRelationCollection" />
-        <property name="Columns" propertytype="System.Data.DataColumnCollection" />
-        <property name="Constraints" propertytype="System.Data.ConstraintCollection" />
-        <property name="DataSet" propertytype="System.Data.DataSet" />
-        <property name="DefaultView" propertytype="System.Data.DataView" />
-        <property name="DisplayExpression" propertytype="System.String" />
-        <property name="EnforceConstraints" propertytype="System.Boolean" />
-        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
-        <property name="HasErrors" propertytype="System.Boolean" />
-        <property name="Locale" propertytype="System.Globalization.CultureInfo" />
-        <property name="MinimumCapacity" propertytype="System.Int32" />
-        <property name="RecordCapacity" propertytype="System.Int32" />
-        <property name="ElementColumnCount" propertytype="System.Int32" />
-        <property name="ParentRelations" propertytype="System.Data.DataRelationCollection" />
-        <property name="MergingData" propertytype="System.Boolean" />
-        <property name="nestedParentRelation" propertytype="System.Data.DataRelation" />
-        <property name="SchemaLoading" propertytype="System.Boolean" />
-        <property name="PrimaryKey" propertytype="System.Data.DataColumn[]" />
-        <property name="Rows" propertytype="System.Data.DataRowCollection" />
-        <property name="TableName" propertytype="System.String" />
-        <property name="EncodedTableName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="XmlText" propertytype="System.Data.DataColumn" />
-        <property name="MaxOccurs" propertytype="System.Decimal" />
-        <property name="MinOccurs" propertytype="System.Decimal" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OnRowDeleted(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnRowDeleting(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnRowChanging(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnRowChanged(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnColumnChanged(System.Data.DataColumnChangeEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnColumnChanging(System.Data.DataColumnChangeEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="GetRowType" argnames="" returntype="System.Type" />
-        <method name="NewRowFromBuilder(System.Data.DataRowBuilder)" argnames="builder" returntype="System.Data.DataRow" />
-        <method name="Clone" argnames="" returntype="System.Data.DataTable" />
-        <method name="CreateInstance" argnames="" returntype="System.Data.DataTable" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="AcceptChanges" argnames="" returntype="System.Void" />
-        <method name="Copy" argnames="" returntype="System.Data.DataTable" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Compute(System.String, System.String)" argnames="expression, filter" returntype="System.Object" />
-        <method name="GetChanges" argnames="" returntype="System.Data.DataTable" />
-        <method name="GetChanges(System.Data.DataRowState)" argnames="rowStates" returntype="System.Data.DataTable" />
-        <method name="GetErrors" argnames="" returntype="System.Data.DataRow[]" />
-        <method name="ImportRow(System.Data.DataRow)" argnames="row" returntype="System.Void" />
-        <method name="NewRow" argnames="" returntype="System.Data.DataRow" />
-        <method name="RejectChanges" argnames="" returntype="System.Void" />
-        <method name="Select" argnames="" returntype="System.Data.DataRow[]" />
-        <method name="Select(System.String)" argnames="filterExpression" returntype="System.Data.DataRow[]" />
-        <method name="Select(System.String, System.String)" argnames="filterExpression, sort" returntype="System.Data.DataRow[]" />
-        <method name="Select(System.String, System.String, System.Data.DataViewRowState)" argnames="filterExpression, sort, recordStates" returntype="System.Data.DataRow[]" />
-        <method name="BeginLoadData" argnames="" returntype="System.Void" />
-        <method name="EndLoadData" argnames="" returntype="System.Void" />
-        <method name="LoadDataRow(System.Object[], System.Boolean)" argnames="values, fAcceptChanges" returntype="System.Data.DataRow" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ColumnChanging" />
-        <event name="ColumnChanged" />
-        <event name="RowChanged" />
-        <event name="RowChanging" />
-        <event name="RowDeleting" />
-        <event name="RowDeleted" />
-        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
-    </class>
-    <class name="InvalidExpressionException" namespace="System.Data">
-        <constructor name="InvalidExpressionException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="InvalidExpressionException" argnames="" />
-        <constructor name="InvalidExpressionException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EvaluateException" namespace="System.Data">
-        <constructor name="EvaluateException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="EvaluateException" argnames="" />
-        <constructor name="EvaluateException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SyntaxErrorException" namespace="System.Data">
-        <constructor name="SyntaxErrorException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="SyntaxErrorException" argnames="" />
-        <constructor name="SyntaxErrorException(System.String)" argnames="s" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StrongTypingException" namespace="System.Data">
-        <constructor name="StrongTypingException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="StrongTypingException" argnames="" />
-        <constructor name="StrongTypingException(System.String, System.Exception)" argnames="s, innerException" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TypedDataSetGeneratorException" namespace="System.Data">
-        <constructor name="TypedDataSetGeneratorException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="TypedDataSetGeneratorException" argnames="" />
-        <constructor name="TypedDataSetGeneratorException(System.Collections.ArrayList)" argnames="list" />
-        <property name="ErrorList" propertytype="System.Collections.ArrayList" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TypedDataSetGenerator" namespace="System.Data">
-        <constructor name="TypedDataSetGenerator" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Generate(System.Data.DataSet, System.CodeDom.CodeNamespace, System.CodeDom.Compiler.ICodeGenerator)" argnames="dataSet, codeNamespace, codeGen" returntype="System.Void" />
-        <method name="GenerateIdName(System.String, System.CodeDom.Compiler.ICodeGenerator)" argnames="name, codeGen" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IColumnMapping" namespace="System.Data">
-        <property name="DataSetColumn" propertytype="System.String" />
-        <property name="SourceColumn" propertytype="System.String" />
-    </interface>
-    <interface name="IColumnMappingCollection" namespace="System.Data">
-        <property name="Item" propertytype="System.Object" />
-        <method name="RemoveAt(System.String)" argnames="sourceColumnName" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="sourceColumnName" returntype="System.Int32" />
-        <method name="GetByDataSetColumn(System.String)" argnames="dataSetColumnName" returntype="System.Data.IColumnMapping" />
-        <method name="Contains(System.String)" argnames="sourceColumnName" returntype="System.Boolean" />
-        <method name="Add(System.String, System.String)" argnames="sourceColumnName, dataSetColumnName" returntype="System.Data.IColumnMapping" />
-    </interface>
-    <interface name="IDataParameter" namespace="System.Data">
-        <property name="DbType" propertytype="System.Data.DbType" />
-        <property name="Direction" propertytype="System.Data.ParameterDirection" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="ParameterName" propertytype="System.String" />
-        <property name="SourceColumn" propertytype="System.String" />
-        <property name="SourceVersion" propertytype="System.Data.DataRowVersion" />
-        <property name="Value" propertytype="System.Object" />
-    </interface>
-    <interface name="IDataParameterCollection" namespace="System.Data">
-        <property name="Item" propertytype="System.Object" />
-        <method name="RemoveAt(System.String)" argnames="parameterName" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="parameterName" returntype="System.Int32" />
-        <method name="Contains(System.String)" argnames="parameterName" returntype="System.Boolean" />
-    </interface>
-    <interface name="IDataRecord" namespace="System.Data">
-        <property name="FieldCount" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="IsDBNull(System.Int32)" argnames="i" returntype="System.Boolean" />
-        <method name="GetData(System.Int32)" argnames="i" returntype="System.Data.IDataReader" />
-        <method name="GetDateTime(System.Int32)" argnames="i" returntype="System.DateTime" />
-        <method name="GetDecimal(System.Int32)" argnames="i" returntype="System.Decimal" />
-        <method name="GetString(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetDouble(System.Int32)" argnames="i" returntype="System.Double" />
-        <method name="GetFloat(System.Int32)" argnames="i" returntype="System.Single" />
-        <method name="GetInt64(System.Int32)" argnames="i" returntype="System.Int64" />
-        <method name="GetInt32(System.Int32)" argnames="i" returntype="System.Int32" />
-        <method name="GetInt16(System.Int32)" argnames="i" returntype="System.Int16" />
-        <method name="GetGuid(System.Int32)" argnames="i" returntype="System.Guid" />
-        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="i, fieldoffset, buffer, bufferoffset, length" returntype="System.Int64" />
-        <method name="GetChar(System.Int32)" argnames="i" returntype="System.Char" />
-        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="i, fieldOffset, buffer, bufferoffset, length" returntype="System.Int64" />
-        <method name="GetByte(System.Int32)" argnames="i" returntype="System.Byte" />
-        <method name="GetBoolean(System.Int32)" argnames="i" returntype="System.Boolean" />
-        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
-        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
-        <method name="GetValue(System.Int32)" argnames="i" returntype="System.Object" />
-        <method name="GetFieldType(System.Int32)" argnames="i" returntype="System.Type" />
-        <method name="GetDataTypeName(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetName(System.Int32)" argnames="i" returntype="System.String" />
-    </interface>
-    <interface name="IDataReader" namespace="System.Data">
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="IsClosed" propertytype="System.Boolean" />
-        <property name="RecordsAffected" propertytype="System.Int32" />
-        <method name="GetSchemaTable" argnames="" returntype="System.Data.DataTable" />
-        <method name="Read" argnames="" returntype="System.Boolean" />
-        <method name="NextResult" argnames="" returntype="System.Boolean" />
-        <method name="Close" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IDataAdapter" namespace="System.Data">
-        <property name="MissingMappingAction" propertytype="System.Data.MissingMappingAction" />
-        <property name="MissingSchemaAction" propertytype="System.Data.MissingSchemaAction" />
-        <property name="TableMappings" propertytype="System.Data.ITableMappingCollection" />
-        <method name="Update(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
-        <method name="GetFillParameters" argnames="" returntype="System.Data.IDataParameter[]" />
-        <method name="Fill(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" returntype="System.Data.DataTable[]" />
-    </interface>
-    <interface name="IDbCommand" namespace="System.Data">
-        <property name="Connection" propertytype="System.Data.IDbConnection" />
-        <property name="Transaction" propertytype="System.Data.IDbTransaction" />
-        <property name="CommandText" propertytype="System.String" />
-        <property name="CommandTimeout" propertytype="System.Int32" />
-        <property name="CommandType" propertytype="System.Data.CommandType" />
-        <property name="Parameters" propertytype="System.Data.IDataParameterCollection" />
-        <property name="UpdatedRowSource" propertytype="System.Data.UpdateRowSource" />
-        <method name="ExecuteScalar" argnames="" returntype="System.Object" />
-        <method name="ExecuteReader(System.Data.CommandBehavior)" argnames="behavior" returntype="System.Data.IDataReader" />
-        <method name="ExecuteReader" argnames="" returntype="System.Data.IDataReader" />
-        <method name="ExecuteNonQuery" argnames="" returntype="System.Int32" />
-        <method name="CreateParameter" argnames="" returntype="System.Data.IDbDataParameter" />
-        <method name="Cancel" argnames="" returntype="System.Void" />
-        <method name="Prepare" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IDbConnection" namespace="System.Data">
-        <property name="ConnectionString" propertytype="System.String" />
-        <property name="ConnectionTimeout" propertytype="System.Int32" />
-        <property name="Database" propertytype="System.String" />
-        <property name="State" propertytype="System.Data.ConnectionState" />
-        <method name="Open" argnames="" returntype="System.Void" />
-        <method name="CreateCommand" argnames="" returntype="System.Data.IDbCommand" />
-        <method name="ChangeDatabase(System.String)" argnames="databaseName" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="BeginTransaction(System.Data.IsolationLevel)" argnames="il" returntype="System.Data.IDbTransaction" />
-        <method name="BeginTransaction" argnames="" returntype="System.Data.IDbTransaction" />
-    </interface>
-    <interface name="IDbDataAdapter" namespace="System.Data">
-        <property name="SelectCommand" propertytype="System.Data.IDbCommand" />
-        <property name="InsertCommand" propertytype="System.Data.IDbCommand" />
-        <property name="UpdateCommand" propertytype="System.Data.IDbCommand" />
-        <property name="DeleteCommand" propertytype="System.Data.IDbCommand" />
-    </interface>
-    <interface name="IDbDataParameter" namespace="System.Data">
-        <property name="Precision" propertytype="System.Byte" />
-        <property name="Scale" propertytype="System.Byte" />
-        <property name="Size" propertytype="System.Int32" />
-    </interface>
-    <interface name="IDbTransaction" namespace="System.Data">
-        <property name="Connection" propertytype="System.Data.IDbConnection" />
-        <property name="IsolationLevel" propertytype="System.Data.IsolationLevel" />
-        <method name="Rollback" argnames="" returntype="System.Void" />
-        <method name="Commit" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="ITableMapping" namespace="System.Data">
-        <property name="ColumnMappings" propertytype="System.Data.IColumnMappingCollection" />
-        <property name="DataSetTable" propertytype="System.String" />
-        <property name="SourceTable" propertytype="System.String" />
-    </interface>
-    <interface name="ITableMappingCollection" namespace="System.Data">
-        <property name="Item" propertytype="System.Object" />
-        <method name="RemoveAt(System.String)" argnames="sourceTableName" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="sourceTableName" returntype="System.Int32" />
-        <method name="GetByDataSetTable(System.String)" argnames="dataSetTableName" returntype="System.Data.ITableMapping" />
-        <method name="Contains(System.String)" argnames="sourceTableName" returntype="System.Boolean" />
-        <method name="Add(System.String, System.String)" argnames="sourceTableName, dataSetTableName" returntype="System.Data.ITableMapping" />
-    </interface>
-    <delegate name="DataColumnChangeEventHandler" namespace="System.Data">
-        <constructor name="DataColumnChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.DataColumnChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.DataColumnChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DataRowChangeEventHandler" namespace="System.Data">
-        <constructor name="DataRowChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.DataRowChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.DataRowChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="FillErrorEventHandler" namespace="System.Data">
-        <constructor name="FillErrorEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.FillErrorEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.FillErrorEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="MergeFailedEventHandler" namespace="System.Data">
-        <constructor name="MergeFailedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.MergeFailedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.MergeFailedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="StateChangeEventHandler" namespace="System.Data">
-        <constructor name="StateChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.StateChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.StateChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="AcceptRejectRule" namespace="System.Data">
-        <field name="None" />
-        <field name="Cascade" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CommandBehavior" namespace="System.Data">
-        <field name="Default" />
-        <field name="SingleResult" />
-        <field name="SchemaOnly" />
-        <field name="KeyInfo" />
-        <field name="SingleRow" />
-        <field name="SequentialAccess" />
-        <field name="CloseConnection" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CommandType" namespace="System.Data">
-        <field name="Text" />
-        <field name="StoredProcedure" />
-        <field name="TableDirect" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ConnectionState" namespace="System.Data">
-        <field name="Closed" />
-        <field name="Open" />
-        <field name="Connecting" />
-        <field name="Executing" />
-        <field name="Fetching" />
-        <field name="Broken" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DataRowAction" namespace="System.Data">
-        <field name="Nothing" />
-        <field name="Delete" />
-        <field name="Change" />
-        <field name="Rollback" />
-        <field name="Commit" />
-        <field name="Add" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DataRowState" namespace="System.Data">
-        <field name="Detached" />
-        <field name="Unchanged" />
-        <field name="Added" />
-        <field name="Deleted" />
-        <field name="Modified" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DataRowVersion" namespace="System.Data">
-        <field name="Original" />
-        <field name="Current" />
-        <field name="Proposed" />
-        <field name="Default" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DataViewRowState" namespace="System.Data">
-        <field name="None" />
-        <field name="Unchanged" />
-        <field name="Added" />
-        <field name="Deleted" />
-        <field name="ModifiedCurrent" />
-        <field name="ModifiedOriginal" />
-        <field name="OriginalRows" />
-        <field name="CurrentRows" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DbType" namespace="System.Data">
-        <field name="AnsiString" />
-        <field name="Binary" />
-        <field name="Byte" />
-        <field name="Boolean" />
-        <field name="Currency" />
-        <field name="Date" />
-        <field name="DateTime" />
-        <field name="Decimal" />
-        <field name="Double" />
-        <field name="Guid" />
-        <field name="Int16" />
-        <field name="Int32" />
-        <field name="Int64" />
-        <field name="Object" />
-        <field name="SByte" />
-        <field name="Single" />
-        <field name="String" />
-        <field name="Time" />
-        <field name="UInt16" />
-        <field name="UInt32" />
-        <field name="UInt64" />
-        <field name="VarNumeric" />
-        <field name="AnsiStringFixedLength" />
-        <field name="StringFixedLength" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="IsolationLevel" namespace="System.Data">
-        <field name="Unspecified" />
-        <field name="Chaos" />
-        <field name="ReadUncommitted" />
-        <field name="ReadCommitted" />
-        <field name="RepeatableRead" />
-        <field name="Serializable" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MappingType" namespace="System.Data">
-        <field name="Element" />
-        <field name="Attribute" />
-        <field name="SimpleContent" />
-        <field name="Hidden" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MissingMappingAction" namespace="System.Data">
-        <field name="Passthrough" />
-        <field name="Ignore" />
-        <field name="Error" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MissingSchemaAction" namespace="System.Data">
-        <field name="Add" />
-        <field name="Ignore" />
-        <field name="Error" />
-        <field name="AddWithKey" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ParameterDirection" namespace="System.Data">
-        <field name="Input" />
-        <field name="Output" />
-        <field name="InputOutput" />
-        <field name="ReturnValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PropertyAttributes" namespace="System.Data">
-        <field name="NotSupported" />
-        <field name="Required" />
-        <field name="Optional" />
-        <field name="Read" />
-        <field name="Write" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Rule" namespace="System.Data">
-        <field name="None" />
-        <field name="Cascade" />
-        <field name="SetNull" />
-        <field name="SetDefault" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SchemaType" namespace="System.Data">
-        <field name="Source" />
-        <field name="Mapped" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SqlDbType" namespace="System.Data">
-        <field name="BigInt" />
-        <field name="Binary" />
-        <field name="Bit" />
-        <field name="Char" />
-        <field name="DateTime" />
-        <field name="Decimal" />
-        <field name="Float" />
-        <field name="Image" />
-        <field name="Int" />
-        <field name="Money" />
-        <field name="NChar" />
-        <field name="NText" />
-        <field name="NVarChar" />
-        <field name="Real" />
-        <field name="UniqueIdentifier" />
-        <field name="SmallDateTime" />
-        <field name="SmallInt" />
-        <field name="SmallMoney" />
-        <field name="Text" />
-        <field name="Timestamp" />
-        <field name="TinyInt" />
-        <field name="VarBinary" />
-        <field name="VarChar" />
-        <field name="Variant" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StatementType" namespace="System.Data">
-        <field name="Select" />
-        <field name="Insert" />
-        <field name="Update" />
-        <field name="Delete" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="UpdateRowSource" namespace="System.Data">
-        <field name="None" />
-        <field name="OutputParameters" />
-        <field name="FirstReturnedRecord" />
-        <field name="Both" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="UpdateStatus" namespace="System.Data">
-        <field name="Continue" />
-        <field name="ErrorsOccurred" />
-        <field name="SkipCurrentRow" />
-        <field name="SkipAllRemainingRows" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlReadMode" namespace="System.Data">
-        <field name="Auto" />
-        <field name="ReadSchema" />
-        <field name="IgnoreSchema" />
-        <field name="InferSchema" />
-        <field name="DiffGram" />
-        <field name="Fragment" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlWriteMode" namespace="System.Data">
-        <field name="WriteSchema" />
-        <field name="IgnoreSchema" />
-        <field name="DiffGram" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="DataAdapter" namespace="System.Data.Common">
-        <constructor name="DataAdapter" argnames="" />
-        <property name="AcceptChangesDuringFill" propertytype="System.Boolean" />
-        <property name="ContinueUpdateOnError" propertytype="System.Boolean" />
-        <property name="MissingMappingAction" propertytype="System.Data.MissingMappingAction" />
-        <property name="MissingSchemaAction" propertytype="System.Data.MissingSchemaAction" />
-        <property name="TableMappings" propertytype="System.Data.Common.DataTableMappingCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Update(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
-        <method name="GetFillParameters" argnames="" returntype="System.Data.IDataParameter[]" />
-        <method name="Fill(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" returntype="System.Data.DataTable[]" />
-        <method name="CreateTableMappings" argnames="" returntype="System.Data.Common.DataTableMappingCollection" />
-        <method name="CloneInternals" argnames="" returntype="System.Data.Common.DataAdapter" />
-        <method name="ShouldSerializeTableMappings" argnames="" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DataColumnMapping" namespace="System.Data.Common">
-        <constructor name="DataColumnMapping" argnames="" />
-        <constructor name="DataColumnMapping(System.String, System.String)" argnames="sourceColumn, dataSetColumn" />
-        <property name="DataSetColumn" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Data.Common.DataColumnMappingCollection" />
-        <property name="SourceColumn" propertytype="System.String" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetDataColumnBySchemaAction(System.Data.DataTable, System.Type, System.Data.MissingSchemaAction)" argnames="dataTable, dataType, schemaAction" returntype="System.Data.DataColumn" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataColumnMappingCollection" namespace="System.Data.Common">
-        <constructor name="DataColumnMappingCollection" argnames="" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="ItemType" propertytype="System.Type" />
-        <property name="Item" propertytype="System.Data.Common.DataColumnMapping" />
-        <property name="Item" propertytype="System.Data.Common.DataColumnMapping" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="RemoveAt(System.String)" argnames="sourceColumn" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="sourceColumn" returntype="System.Int32" />
-        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.String, System.String)" argnames="sourceColumn, dataSetColumn" returntype="System.Data.Common.DataColumnMapping" />
-        <method name="AddRange(System.Data.Common.DataColumnMapping[])" argnames="values" returntype="System.Void" />
-        <method name="GetByDataSetColumn(System.String)" argnames="value" returntype="System.Data.Common.DataColumnMapping" />
-        <method name="IndexOfDataSetColumn(System.String)" argnames="dataSetColumn" returntype="System.Int32" />
-        <method name="GetColumnMappingBySchemaAction(System.Data.Common.DataColumnMappingCollection, System.String, System.Data.MissingMappingAction)" argnames="columnMappings, sourceColumn, mappingAction" returntype="System.Data.Common.DataColumnMapping" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataTableMapping" namespace="System.Data.Common">
-        <constructor name="DataTableMapping" argnames="" />
-        <constructor name="DataTableMapping(System.String, System.String)" argnames="sourceTable, dataSetTable" />
-        <constructor name="DataTableMapping(System.String, System.String, System.Data.Common.DataColumnMapping[])" argnames="sourceTable, dataSetTable, columnMappings" />
-        <property name="ColumnMappings" propertytype="System.Data.Common.DataColumnMappingCollection" />
-        <property name="DataSetTable" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Data.Common.DataTableMappingCollection" />
-        <property name="SourceTable" propertytype="System.String" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetColumnMappingBySchemaAction(System.String, System.Data.MissingMappingAction)" argnames="sourceColumn, mappingAction" returntype="System.Data.Common.DataColumnMapping" />
-        <method name="GetDataTableBySchemaAction(System.Data.DataSet, System.Data.MissingSchemaAction)" argnames="dataSet, schemaAction" returntype="System.Data.DataTable" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataTableMappingCollection" namespace="System.Data.Common">
-        <constructor name="DataTableMappingCollection" argnames="" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="ItemType" propertytype="System.Type" />
-        <property name="Item" propertytype="System.Data.Common.DataTableMapping" />
-        <property name="Item" propertytype="System.Data.Common.DataTableMapping" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="RemoveAt(System.String)" argnames="sourceTable" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="sourceTable" returntype="System.Int32" />
-        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddRange(System.Data.Common.DataTableMapping[])" argnames="values" returntype="System.Void" />
-        <method name="Add(System.String, System.String)" argnames="sourceTable, dataSetTable" returntype="System.Data.Common.DataTableMapping" />
-        <method name="GetByDataSetTable(System.String)" argnames="dataSetTable" returntype="System.Data.Common.DataTableMapping" />
-        <method name="IndexOfDataSetTable(System.String)" argnames="dataSetTable" returntype="System.Int32" />
-        <method name="GetTableMappingBySchemaAction(System.Data.Common.DataTableMappingCollection, System.String, System.String, System.Data.MissingMappingAction)" argnames="tableMappings, sourceTable, dataSetTable, mappingAction" returntype="System.Data.Common.DataTableMapping" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DbDataAdapter" namespace="System.Data.Common">
-        <constructor name="DbDataAdapter" argnames="" />
-        <field name="DefaultSourceTableName" />
-        <property name="DeleteCommand" propertytype="System.Data.IDbCommand" />
-        <property name="InsertCommand" propertytype="System.Data.IDbCommand" />
-        <property name="SelectCommand" propertytype="System.Data.IDbCommand" />
-        <property name="UpdateCommand" propertytype="System.Data.IDbCommand" />
-        <property name="UpdateMappingAction" propertytype="System.Data.MissingMappingAction" />
-        <property name="UpdateSchemaAction" propertytype="System.Data.MissingSchemaAction" />
-        <property name="AcceptChangesDuringFill" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
-        <property name="ContinueUpdateOnError" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
-        <property name="MissingMappingAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingMappingAction" />
-        <property name="MissingSchemaAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingSchemaAction" />
-        <property name="TableMappings" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.Common.DataTableMappingCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Update(System.Data.DataRow[], System.Data.Common.DataTableMapping)" argnames="dataRows, tableMapping" returntype="System.Int32" />
-        <method name="OnRowUpdating(System.Data.Common.RowUpdatingEventArgs)" argnames="value" returntype="System.Void" />
-        <method name="OnRowUpdated(System.Data.Common.RowUpdatedEventArgs)" argnames="value" returntype="System.Void" />
-        <method name="OnFillError(System.Data.FillErrorEventArgs)" argnames="value" returntype="System.Void" />
-        <method name="Fill(System.Data.DataTable, System.Data.IDataReader)" argnames="dataTable, dataReader" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.String, System.Data.IDataReader, System.Int32, System.Int32)" argnames="dataSet, srcTable, dataReader, startRecord, maxRecords" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataTable, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, command, behavior" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataSet, startRecord, maxRecords, srcTable, command, behavior" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, schemaType, command, behavior" returntype="System.Data.DataTable" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.Data.IDbCommand, System.String, System.Data.CommandBehavior)" argnames="dataSet, schemaType, command, srcTable, behavior" returntype="System.Data.DataTable[]" />
-        <method name="CreateRowUpdatingEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatingEventArgs" />
-        <method name="CreateRowUpdatedEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatedEventArgs" />
-        <method name="Update(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
-        <method name="GetFillParameters" argnames="" returntype="System.Data.IDataParameter[]" />
-        <method name="Fill(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" returntype="System.Data.DataTable[]" />
-        <method name="CreateTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataTableMappingCollection" />
-        <method name="CloneInternals" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataAdapter" />
-        <method name="ShouldSerializeTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType)" argnames="dataTable, schemaType" returntype="System.Data.DataTable" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.String)" argnames="dataSet, schemaType, srcTable" returntype="System.Data.DataTable[]" />
-        <method name="Fill(System.Data.DataTable)" argnames="dataTable" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String)" argnames="dataSet, startRecord, maxRecords, srcTable" returntype="System.Int32" />
-        <method name="Update(System.Data.DataRow[])" argnames="dataRows" returntype="System.Int32" />
-        <method name="Update(System.Data.DataTable)" argnames="dataTable" returntype="System.Int32" />
-        <method name="Update(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="FillError" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DbDataRecord" namespace="System.Data.Common">
-        <property name="FieldCount" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="IsDBNull(System.Int32)" argnames="i" returntype="System.Boolean" />
-        <method name="GetData(System.Int32)" argnames="i" returntype="System.Data.IDataReader" />
-        <method name="GetDateTime(System.Int32)" argnames="i" returntype="System.DateTime" />
-        <method name="GetDecimal(System.Int32)" argnames="i" returntype="System.Decimal" />
-        <method name="GetString(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetDouble(System.Int32)" argnames="i" returntype="System.Double" />
-        <method name="GetFloat(System.Int32)" argnames="i" returntype="System.Single" />
-        <method name="GetInt64(System.Int32)" argnames="i" returntype="System.Int64" />
-        <method name="GetInt32(System.Int32)" argnames="i" returntype="System.Int32" />
-        <method name="GetInt16(System.Int32)" argnames="i" returntype="System.Int16" />
-        <method name="GetGuid(System.Int32)" argnames="i" returntype="System.Guid" />
-        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
-        <method name="GetChar(System.Int32)" argnames="i" returntype="System.Char" />
-        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
-        <method name="GetByte(System.Int32)" argnames="i" returntype="System.Byte" />
-        <method name="GetBoolean(System.Int32)" argnames="i" returntype="System.Boolean" />
-        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
-        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
-        <method name="GetValue(System.Int32)" argnames="i" returntype="System.Object" />
-        <method name="GetFieldType(System.Int32)" argnames="i" returntype="System.Type" />
-        <method name="GetDataTypeName(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetName(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DbEnumerator" namespace="System.Data.Common">
-        <constructor name="DbEnumerator(System.Data.IDataReader)" argnames="reader" />
-        <constructor name="DbEnumerator(System.Data.IDataReader, System.Boolean)" argnames="reader, closeReader" />
-        <property name="Current" propertytype="System.Object" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="MoveNext" argnames="" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RowUpdatedEventArgs" namespace="System.Data.Common">
-        <constructor name="RowUpdatedEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
-        <property name="Command" propertytype="System.Data.IDbCommand" />
-        <property name="StatementType" propertytype="System.Data.StatementType" />
-        <property name="Errors" propertytype="System.Exception" />
-        <property name="RecordsAffected" propertytype="System.Int32" />
-        <property name="Row" propertytype="System.Data.DataRow" />
-        <property name="Status" propertytype="System.Data.UpdateStatus" />
-        <property name="TableMapping" propertytype="System.Data.Common.DataTableMapping" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RowUpdatingEventArgs" namespace="System.Data.Common">
-        <constructor name="RowUpdatingEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
-        <property name="Command" propertytype="System.Data.IDbCommand" />
-        <property name="StatementType" propertytype="System.Data.StatementType" />
-        <property name="Errors" propertytype="System.Exception" />
-        <property name="Row" propertytype="System.Data.DataRow" />
-        <property name="Status" propertytype="System.Data.UpdateStatus" />
-        <property name="TableMapping" propertytype="System.Data.Common.DataTableMapping" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DBDataPermission" namespace="System.Data.Common">
-        <constructor name="DBDataPermission" argnames="" />
-        <constructor name="DBDataPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="DBDataPermission(System.Security.Permissions.PermissionState, System.Boolean)" argnames="state, allowBlankPassword" />
-        <property name="AllowBlankPassword" propertytype="System.Boolean" />
-        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
-        <method name="CreateInstance" argnames="" returntype="System.Data.Common.DBDataPermission" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
-        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DBDataPermissionAttribute" namespace="System.Data.Common">
-        <constructor name="DBDataPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="AllowBlankPassword" propertytype="System.Boolean" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" inherited="System.Security.Permissions.SecurityAttribute" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbDataReader" namespace="System.Data.OleDb">
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="FieldCount" propertytype="System.Int32" />
-        <property name="IsClosed" propertytype="System.Boolean" />
-        <property name="RecordsAffected" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="IsDBNull(System.Int32)" argnames="ordinal" returntype="System.Boolean" />
-        <method name="GetDateTime(System.Int32)" argnames="ordinal" returntype="System.DateTime" />
-        <method name="GetDecimal(System.Int32)" argnames="ordinal" returntype="System.Decimal" />
-        <method name="GetString(System.Int32)" argnames="ordinal" returntype="System.String" />
-        <method name="GetDouble(System.Int32)" argnames="ordinal" returntype="System.Double" />
-        <method name="GetFloat(System.Int32)" argnames="ordinal" returntype="System.Single" />
-        <method name="GetInt64(System.Int32)" argnames="ordinal" returntype="System.Int64" />
-        <method name="GetInt32(System.Int32)" argnames="ordinal" returntype="System.Int32" />
-        <method name="GetInt16(System.Int32)" argnames="ordinal" returntype="System.Int16" />
-        <method name="GetGuid(System.Int32)" argnames="ordinal" returntype="System.Guid" />
-        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="ordinal, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
-        <method name="GetChar(System.Int32)" argnames="ordinal" returntype="System.Char" />
-        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="ordinal, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
-        <method name="GetByte(System.Int32)" argnames="ordinal" returntype="System.Byte" />
-        <method name="GetBoolean(System.Int32)" argnames="ordinal" returntype="System.Boolean" />
-        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
-        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
-        <method name="GetValue(System.Int32)" argnames="ordinal" returntype="System.Object" />
-        <method name="GetFieldType(System.Int32)" argnames="index" returntype="System.Type" />
-        <method name="GetDataTypeName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetSchemaTable" argnames="" returntype="System.Data.DataTable" />
-        <method name="Read" argnames="" returntype="System.Boolean" />
-        <method name="NextResult" argnames="" returntype="System.Boolean" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetData(System.Int32)" argnames="ordinal" returntype="System.Data.OleDb.OleDbDataReader" />
-        <method name="GetTimeSpan(System.Int32)" argnames="ordinal" returntype="System.TimeSpan" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbError" namespace="System.Data.OleDb">
-        <property name="Message" propertytype="System.String" />
-        <property name="NativeError" propertytype="System.Int32" />
-        <property name="Source" propertytype="System.String" />
-        <property name="SQLState" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbErrorCollection" namespace="System.Data.OleDb">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Data.OleDb.OleDbError" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbException" namespace="System.Data.OleDb">
-        <property name="ErrorCode" propertytype="System.Int32" />
-        <property name="Errors" propertytype="System.Data.OleDb.OleDbErrorCollection" />
-        <property name="Message" propertytype="System.String" />
-        <property name="Source" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbInfoMessageEventArgs" namespace="System.Data.OleDb">
-        <property name="ErrorCode" propertytype="System.Int32" />
-        <property name="Errors" propertytype="System.Data.OleDb.OleDbErrorCollection" />
-        <property name="Message" propertytype="System.String" />
-        <property name="Source" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbParameterCollection" namespace="System.Data.OleDb">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="ItemType" propertytype="System.Type" />
-        <property name="Item" propertytype="System.Data.OleDb.OleDbParameter" />
-        <property name="Item" propertytype="System.Data.OleDb.OleDbParameter" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="RemoveAt(System.String)" argnames="parameterName" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="parameterName" returntype="System.Int32" />
-        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Data.OleDb.OleDbParameter)" argnames="value" returntype="System.Data.OleDb.OleDbParameter" />
-        <method name="Add(System.String, System.Object)" argnames="parameterName, value" returntype="System.Data.OleDb.OleDbParameter" />
-        <method name="Add(System.String, System.Data.OleDb.OleDbType)" argnames="parameterName, oleDbType" returntype="System.Data.OleDb.OleDbParameter" />
-        <method name="Add(System.String, System.Data.OleDb.OleDbType, System.Int32)" argnames="parameterName, oleDbType, size" returntype="System.Data.OleDb.OleDbParameter" />
-        <method name="Add(System.String, System.Data.OleDb.OleDbType, System.Int32, System.String)" argnames="parameterName, oleDbType, size, sourceColumn" returntype="System.Data.OleDb.OleDbParameter" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbSchemaGuid" namespace="System.Data.OleDb">
-        <constructor name="OleDbSchemaGuid" argnames="" />
-        <field name="Tables_Info" />
-        <field name="Trustee" />
-        <field name="Assertions" />
-        <field name="Catalogs" />
-        <field name="Character_Sets" />
-        <field name="Collations" />
-        <field name="Columns" />
-        <field name="Check_Constraints" />
-        <field name="Constraint_Column_Usage" />
-        <field name="Constraint_Table_Usage" />
-        <field name="Key_Column_Usage" />
-        <field name="Referential_Constraints" />
-        <field name="Table_Constraints" />
-        <field name="Column_Domain_Usage" />
-        <field name="Indexes" />
-        <field name="Column_Privileges" />
-        <field name="Table_Privileges" />
-        <field name="Usage_Privileges" />
-        <field name="Procedures" />
-        <field name="Schemata" />
-        <field name="Sql_Languages" />
-        <field name="Statistics" />
-        <field name="Tables" />
-        <field name="Translations" />
-        <field name="Provider_Types" />
-        <field name="Views" />
-        <field name="View_Column_Usage" />
-        <field name="View_Table_Usage" />
-        <field name="Procedure_Parameters" />
-        <field name="Foreign_Keys" />
-        <field name="Primary_Keys" />
-        <field name="Procedure_Columns" />
-        <field name="Table_Statistics" />
-        <field name="Check_Constraints_By_Table" />
-        <field name="DbInfoLiterals" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbTransaction" namespace="System.Data.OleDb">
-        <property name="Connection" propertytype="System.Data.OleDb.OleDbConnection" />
-        <property name="IsolationLevel" propertytype="System.Data.IsolationLevel" />
-        <method name="Rollback" argnames="" returntype="System.Void" />
-        <method name="Commit" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Begin(System.Data.IsolationLevel)" argnames="isolevel" returntype="System.Data.OleDb.OleDbTransaction" />
-        <method name="Begin" argnames="" returntype="System.Data.OleDb.OleDbTransaction" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbCommand" namespace="System.Data.OleDb">
-        <constructor name="OleDbCommand" argnames="" />
-        <constructor name="OleDbCommand(System.String)" argnames="cmdText" />
-        <constructor name="OleDbCommand(System.String, System.Data.OleDb.OleDbConnection)" argnames="cmdText, connection" />
-        <constructor name="OleDbCommand(System.String, System.Data.OleDb.OleDbConnection, System.Data.OleDb.OleDbTransaction)" argnames="cmdText, connection, transaction" />
-        <property name="CommandText" propertytype="System.String" />
-        <property name="CommandTimeout" propertytype="System.Int32" />
-        <property name="CommandType" propertytype="System.Data.CommandType" />
-        <property name="Connection" propertytype="System.Data.OleDb.OleDbConnection" />
-        <property name="DesignTimeVisible" propertytype="System.Boolean" />
-        <property name="IsClosed" propertytype="System.Boolean" />
-        <property name="Parameters" propertytype="System.Data.OleDb.OleDbParameterCollection" />
-        <property name="Transaction" propertytype="System.Data.OleDb.OleDbTransaction" />
-        <property name="UpdatedRowSource" propertytype="System.Data.UpdateRowSource" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="ExecuteScalar" argnames="" returntype="System.Object" />
-        <method name="ExecuteNonQuery" argnames="" returntype="System.Int32" />
-        <method name="Cancel" argnames="" returntype="System.Void" />
-        <method name="Prepare" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="CreateParameter" argnames="" returntype="System.Data.OleDb.OleDbParameter" />
-        <method name="ExecuteReader" argnames="" returntype="System.Data.OleDb.OleDbDataReader" />
-        <method name="ExecuteReader(System.Data.CommandBehavior)" argnames="behavior" returntype="System.Data.OleDb.OleDbDataReader" />
-        <method name="ResetCommandTimeout" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="OleDbCommandBuilder" namespace="System.Data.OleDb">
-        <constructor name="OleDbCommandBuilder" argnames="" />
-        <constructor name="OleDbCommandBuilder(System.Data.OleDb.OleDbDataAdapter)" argnames="adapter" />
-        <property name="DataAdapter" propertytype="System.Data.OleDb.OleDbDataAdapter" />
-        <property name="QuotePrefix" propertytype="System.String" />
-        <property name="QuoteSuffix" propertytype="System.String" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetInsertCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
-        <method name="GetUpdateCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
-        <method name="GetDeleteCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
-        <method name="RefreshSchema" argnames="" returntype="System.Void" />
-        <method name="DeriveParameters(System.Data.OleDb.OleDbCommand)" argnames="command" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="OleDbConnection" namespace="System.Data.OleDb">
-        <constructor name="OleDbConnection" argnames="" />
-        <constructor name="OleDbConnection(System.String)" argnames="connectionString" />
-        <property name="ConnectionString" propertytype="System.String" />
-        <property name="ConnectionTimeout" propertytype="System.Int32" />
-        <property name="Database" propertytype="System.String" />
-        <property name="DataSource" propertytype="System.String" />
-        <property name="Provider" propertytype="System.String" />
-        <property name="ServerVersion" propertytype="System.String" />
-        <property name="State" propertytype="System.Data.ConnectionState" />
-        <property name="StateInternal" propertytype="System.Data.ConnectionState" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Open" argnames="" returntype="System.Void" />
-        <method name="ChangeDatabase(System.String)" argnames="value" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="BeginTransaction(System.Data.IsolationLevel)" argnames="isolationLevel" returntype="System.Data.OleDb.OleDbTransaction" />
-        <method name="BeginTransaction" argnames="" returntype="System.Data.OleDb.OleDbTransaction" />
-        <method name="CreateCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
-        <method name="GetOleDbSchemaTable(System.Guid, System.Object[])" argnames="schema, restrictions" returntype="System.Data.DataTable" />
-        <method name="ReleaseObjectPool" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="InfoMessage" />
-        <event name="StateChange" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="OleDbDataAdapter" namespace="System.Data.OleDb">
-        <constructor name="OleDbDataAdapter" argnames="" />
-        <constructor name="OleDbDataAdapter(System.Data.OleDb.OleDbCommand)" argnames="selectCommand" />
-        <constructor name="OleDbDataAdapter(System.String, System.String)" argnames="selectCommandText, selectConnectionString" />
-        <constructor name="OleDbDataAdapter(System.String, System.Data.OleDb.OleDbConnection)" argnames="selectCommandText, selectConnection" />
-        <property name="DeleteCommand" propertytype="System.Data.OleDb.OleDbCommand" />
-        <property name="InsertCommand" propertytype="System.Data.OleDb.OleDbCommand" />
-        <property name="SelectCommand" propertytype="System.Data.OleDb.OleDbCommand" />
-        <property name="UpdateCommand" propertytype="System.Data.OleDb.OleDbCommand" />
-        <property name="AcceptChangesDuringFill" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
-        <property name="ContinueUpdateOnError" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
-        <property name="MissingMappingAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingMappingAction" />
-        <property name="MissingSchemaAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingSchemaAction" />
-        <property name="TableMappings" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.Common.DataTableMappingCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Update(System.Data.DataRow[], System.Data.Common.DataTableMapping)" argnames="dataRows, tableMapping" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="OnRowUpdating(System.Data.Common.RowUpdatingEventArgs)" argnames="value" returntype="System.Void" />
-        <method name="OnRowUpdated(System.Data.Common.RowUpdatedEventArgs)" argnames="value" returntype="System.Void" />
-        <method name="OnFillError(System.Data.FillErrorEventArgs)" argnames="value" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
-        <method name="Fill(System.Data.DataTable, System.Data.IDataReader)" argnames="dataTable, dataReader" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.String, System.Data.IDataReader, System.Int32, System.Int32)" argnames="dataSet, srcTable, dataReader, startRecord, maxRecords" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataTable, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataSet, startRecord, maxRecords, srcTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, schemaType, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.Data.IDbCommand, System.String, System.Data.CommandBehavior)" argnames="dataSet, schemaType, command, srcTable, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
-        <method name="CreateRowUpdatingEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatingEventArgs" />
-        <method name="CreateRowUpdatedEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatedEventArgs" />
-        <method name="Update(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="GetFillParameters" argnames="" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.IDataParameter[]" />
-        <method name="Fill(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
-        <method name="CreateTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataTableMappingCollection" />
-        <method name="CloneInternals" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataAdapter" />
-        <method name="ShouldSerializeTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Fill(System.Data.DataTable, System.Object)" argnames="dataTable, ADODBRecordSet" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.Object, System.String)" argnames="dataSet, ADODBRecordSet, srcTable" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType)" argnames="dataTable, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.String)" argnames="dataSet, schemaType, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
-        <method name="Fill(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String)" argnames="dataSet, startRecord, maxRecords, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Update(System.Data.DataRow[])" argnames="dataRows" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Update(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Update(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="RowUpdated" />
-        <event name="RowUpdating" />
-        <event name="FillError" inherited="System.Data.Common.DbDataAdapter" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="OleDbParameter" namespace="System.Data.OleDb">
-        <constructor name="OleDbParameter" argnames="" />
-        <constructor name="OleDbParameter(System.String, System.Object)" argnames="name, value" />
-        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType)" argnames="name, dataType" />
-        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType, System.Int32)" argnames="name, dataType, size" />
-        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType, System.Int32, System.String)" argnames="name, dataType, size, srcColumn" />
-        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)" argnames="parameterName, dbType, size, direction, isNullable, precision, scale, srcColumn, srcVersion, value" />
-        <property name="DbType" propertytype="System.Data.DbType" />
-        <property name="Direction" propertytype="System.Data.ParameterDirection" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="OleDbType" propertytype="System.Data.OleDb.OleDbType" />
-        <property name="NativeDBType" propertytype="System.Data.OleDb.NativeDBType" />
-        <property name="ParameterName" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Data.OleDb.OleDbParameterCollection" />
-        <property name="Precision" propertytype="System.Byte" />
-        <property name="Scale" propertytype="System.Byte" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="SourceColumn" propertytype="System.String" />
-        <property name="SourceVersion" propertytype="System.Data.DataRowVersion" />
-        <property name="Value" propertytype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbRowUpdatedEventArgs" namespace="System.Data.OleDb">
-        <constructor name="OleDbRowUpdatedEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
-        <property name="Command" propertytype="System.Data.OleDb.OleDbCommand" />
-        <property name="Command" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.IDbCommand" />
-        <property name="StatementType" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.StatementType" />
-        <property name="Errors" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Exception" />
-        <property name="RecordsAffected" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Int32" />
-        <property name="Row" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.DataRow" />
-        <property name="Status" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.UpdateStatus" />
-        <property name="TableMapping" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.Common.DataTableMapping" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbRowUpdatingEventArgs" namespace="System.Data.OleDb">
-        <constructor name="OleDbRowUpdatingEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
-        <property name="Command" propertytype="System.Data.OleDb.OleDbCommand" />
-        <property name="Command" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.IDbCommand" />
-        <property name="StatementType" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.StatementType" />
-        <property name="Errors" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Exception" />
-        <property name="Row" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.DataRow" />
-        <property name="Status" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.UpdateStatus" />
-        <property name="TableMapping" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.Common.DataTableMapping" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbPermission" namespace="System.Data.OleDb">
-        <constructor name="OleDbPermission" argnames="" />
-        <constructor name="OleDbPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="OleDbPermission(System.Security.Permissions.PermissionState, System.Boolean)" argnames="state, allowBlankPassword" />
-        <property name="Provider" propertytype="System.String" />
-        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermission" propertytype="System.Boolean" />
-        <method name="IsUnrestricted" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Boolean" />
-        <method name="CreateInstance" argnames="" returntype="System.Data.Common.DBDataPermission" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
-        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OleDbPermissionAttribute" namespace="System.Data.OleDb">
-        <constructor name="OleDbPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Provider" propertytype="System.String" />
-        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermissionAttribute" propertytype="System.Boolean" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="OleDbInfoMessageEventHandler" namespace="System.Data.OleDb">
-        <constructor name="OleDbInfoMessageEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.OleDb.OleDbInfoMessageEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.OleDb.OleDbInfoMessageEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="OleDbRowUpdatedEventHandler" namespace="System.Data.OleDb">
-        <constructor name="OleDbRowUpdatedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.OleDb.OleDbRowUpdatedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.OleDb.OleDbRowUpdatedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="OleDbRowUpdatingEventHandler" namespace="System.Data.OleDb">
-        <constructor name="OleDbRowUpdatingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.OleDb.OleDbRowUpdatingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.OleDb.OleDbRowUpdatingEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="OleDbLiteral" namespace="System.Data.OleDb">
-        <field name="Invalid" />
-        <field name="Binary_Literal" />
-        <field name="Catalog_Name" />
-        <field name="Catalog_Separator" />
-        <field name="Char_Literal" />
-        <field name="Column_Alias" />
-        <field name="Column_Name" />
-        <field name="Correlation_Name" />
-        <field name="Cursor_Name" />
-        <field name="Escape_Percent_Prefix" />
-        <field name="Escape_Underscore_Prefix" />
-        <field name="Index_Name" />
-        <field name="Like_Percent" />
-        <field name="Like_Underscore" />
-        <field name="Procedure_Name" />
-        <field name="Quote_Prefix" />
-        <field name="Schema_Name" />
-        <field name="Table_Name" />
-        <field name="Text_Command" />
-        <field name="User_Name" />
-        <field name="View_Name" />
-        <field name="Cube_Name" />
-        <field name="Dimension_Name" />
-        <field name="Hierarchy_Name" />
-        <field name="Level_Name" />
-        <field name="Member_Name" />
-        <field name="Property_Name" />
-        <field name="Schema_Separator" />
-        <field name="Quote_Suffix" />
-        <field name="Escape_Percent_Suffix" />
-        <field name="Escape_Underscore_Suffix" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="OleDbType" namespace="System.Data.OleDb">
-        <field name="BigInt" />
-        <field name="Binary" />
-        <field name="Boolean" />
-        <field name="BSTR" />
-        <field name="Char" />
-        <field name="Currency" />
-        <field name="Date" />
-        <field name="DBDate" />
-        <field name="DBTime" />
-        <field name="DBTimeStamp" />
-        <field name="Decimal" />
-        <field name="Double" />
-        <field name="Empty" />
-        <field name="Error" />
-        <field name="Filetime" />
-        <field name="Guid" />
-        <field name="IDispatch" />
-        <field name="Integer" />
-        <field name="IUnknown" />
-        <field name="LongVarBinary" />
-        <field name="LongVarChar" />
-        <field name="LongVarWChar" />
-        <field name="Numeric" />
-        <field name="PropVariant" />
-        <field name="Single" />
-        <field name="SmallInt" />
-        <field name="TinyInt" />
-        <field name="UnsignedBigInt" />
-        <field name="UnsignedInt" />
-        <field name="UnsignedSmallInt" />
-        <field name="UnsignedTinyInt" />
-        <field name="VarBinary" />
-        <field name="VarChar" />
-        <field name="Variant" />
-        <field name="VarNumeric" />
-        <field name="VarWChar" />
-        <field name="WChar" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="Counter" namespace="System.Data.SqlClient">
-        <constructor name="Counter" argnames="" />
-        <property name="Value" propertytype="System.Int64" />
-        <property name="IsQueued" propertytype="System.Boolean" />
-        <property name="IsInError" propertytype="System.Boolean" />
-        <property name="WaitCount" propertytype="System.Int32" />
-        <property name="FreeCount" propertytype="System.Int32" />
-        <property name="TotalCount" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Modify(System.Int64)" argnames="add" returntype="System.Void" />
-        <method name="TryUpdate(System.Int64, System.Data.SqlClient.ConnectionPool.Counter)" argnames="newval, clone" returntype="System.Boolean" />
-        <method name="Clone" argnames="" returntype="System.Data.SqlClient.ConnectionPool+Counter" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlDataReader" namespace="System.Data.SqlClient">
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="FieldCount" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="HasMoreRows" propertytype="System.Boolean" />
-        <property name="HasMoreResults" propertytype="System.Boolean" />
-        <property name="IsClosed" propertytype="System.Boolean" />
-        <property name="RecordsAffected" propertytype="System.Int32" />
-        <property name="BrowseModeInfoConsumed" propertytype="System.Boolean" />
-        <property name="MetaData" propertytype="System.Data.SqlClient._SqlMetaData[]" />
-        <property name="TableNames" propertytype="System.String[]" />
-        <property name="TableNamesShilohSP1" propertytype="System.String[][]" />
-        <property name="SetOptionsOFF" propertytype="System.String" />
-        <property name="Behavior" propertytype="System.Data.CommandBehavior" />
-        <method name="IsDBNull(System.Int32)" argnames="i" returntype="System.Boolean" />
-        <method name="GetData(System.Int32)" argnames="i" returntype="System.Data.IDataReader" />
-        <method name="GetDateTime(System.Int32)" argnames="i" returntype="System.DateTime" />
-        <method name="GetDecimal(System.Int32)" argnames="i" returntype="System.Decimal" />
-        <method name="GetString(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetDouble(System.Int32)" argnames="i" returntype="System.Double" />
-        <method name="GetFloat(System.Int32)" argnames="i" returntype="System.Single" />
-        <method name="GetInt64(System.Int32)" argnames="i" returntype="System.Int64" />
-        <method name="GetInt32(System.Int32)" argnames="i" returntype="System.Int32" />
-        <method name="GetInt16(System.Int32)" argnames="i" returntype="System.Int16" />
-        <method name="GetGuid(System.Int32)" argnames="i" returntype="System.Guid" />
-        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
-        <method name="GetChar(System.Int32)" argnames="i" returntype="System.Char" />
-        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
-        <method name="GetByte(System.Int32)" argnames="i" returntype="System.Byte" />
-        <method name="GetBoolean(System.Int32)" argnames="i" returntype="System.Boolean" />
-        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
-        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
-        <method name="GetValue(System.Int32)" argnames="i" returntype="System.Object" />
-        <method name="GetFieldType(System.Int32)" argnames="i" returntype="System.Type" />
-        <method name="GetDataTypeName(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetName(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetSchemaTable" argnames="" returntype="System.Data.DataTable" />
-        <method name="Read" argnames="" returntype="System.Boolean" />
-        <method name="NextResult" argnames="" returntype="System.Boolean" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetSqlBoolean(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GetSqlBinary(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlBinary" />
-        <method name="GetSqlByte(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="GetSqlInt16(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="GetSqlInt32(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="GetSqlInt64(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="GetSqlSingle(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="GetSqlDouble(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="GetSqlString(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetSqlMoney(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="GetSqlDecimal(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="GetSqlDateTime(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlDateTime" />
-        <method name="GetSqlGuid(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlGuid" />
-        <method name="GetSqlValue(System.Int32)" argnames="i" returntype="System.Object" />
-        <method name="GetSqlValues(System.Object[])" argnames="values" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlError" namespace="System.Data.SqlClient">
-        <property name="Source" propertytype="System.String" />
-        <property name="Number" propertytype="System.Int32" />
-        <property name="State" propertytype="System.Byte" />
-        <property name="Class" propertytype="System.Byte" />
-        <property name="Server" propertytype="System.String" />
-        <property name="Message" propertytype="System.String" />
-        <property name="Procedure" propertytype="System.String" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlErrorCollection" namespace="System.Data.SqlClient">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Data.SqlClient.SqlError" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlException" namespace="System.Data.SqlClient">
-        <property name="Errors" propertytype="System.Data.SqlClient.SqlErrorCollection" />
-        <property name="Class" propertytype="System.Byte" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="Message" propertytype="System.String" />
-        <property name="Number" propertytype="System.Int32" />
-        <property name="Procedure" propertytype="System.String" />
-        <property name="Server" propertytype="System.String" />
-        <property name="State" propertytype="System.Byte" />
-        <property name="Source" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlInfoMessageEventArgs" namespace="System.Data.SqlClient">
-        <property name="Errors" propertytype="System.Data.SqlClient.SqlErrorCollection" />
-        <property name="Message" propertytype="System.String" />
-        <property name="Source" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlParameterCollection" namespace="System.Data.SqlClient">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="ItemType" propertytype="System.Type" />
-        <property name="Item" propertytype="System.Data.SqlClient.SqlParameter" />
-        <property name="Item" propertytype="System.Data.SqlClient.SqlParameter" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="RemoveAt(System.String)" argnames="parameterName" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="parameterName" returntype="System.Int32" />
-        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Data.SqlClient.SqlParameter)" argnames="value" returntype="System.Data.SqlClient.SqlParameter" />
-        <method name="Add(System.String, System.Object)" argnames="parameterName, value" returntype="System.Data.SqlClient.SqlParameter" />
-        <method name="Add(System.String, System.Data.SqlDbType)" argnames="parameterName, sqlDbType" returntype="System.Data.SqlClient.SqlParameter" />
-        <method name="Add(System.String, System.Data.SqlDbType, System.Int32)" argnames="parameterName, sqlDbType, size" returntype="System.Data.SqlClient.SqlParameter" />
-        <method name="Add(System.String, System.Data.SqlDbType, System.Int32, System.String)" argnames="parameterName, sqlDbType, size, sourceColumn" returntype="System.Data.SqlClient.SqlParameter" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlTransaction" namespace="System.Data.SqlClient">
-        <property name="Connection" propertytype="System.Data.SqlClient.SqlConnection" />
-        <property name="IsolationLevel" propertytype="System.Data.IsolationLevel" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Rollback" argnames="" returntype="System.Void" />
-        <method name="Commit" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Rollback(System.String)" argnames="transactionName" returntype="System.Void" />
-        <method name="Save(System.String)" argnames="savePointName" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlCommand" namespace="System.Data.SqlClient">
-        <constructor name="SqlCommand" argnames="" />
-        <constructor name="SqlCommand(System.String)" argnames="cmdText" />
-        <constructor name="SqlCommand(System.String, System.Data.SqlClient.SqlConnection)" argnames="cmdText, connection" />
-        <constructor name="SqlCommand(System.String, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction)" argnames="cmdText, connection, transaction" />
-        <property name="Connection" propertytype="System.Data.SqlClient.SqlConnection" />
-        <property name="Transaction" propertytype="System.Data.SqlClient.SqlTransaction" />
-        <property name="CommandText" propertytype="System.String" />
-        <property name="CommandType" propertytype="System.Data.CommandType" />
-        <property name="CommandTimeout" propertytype="System.Int32" />
-        <property name="DesignTimeVisible" propertytype="System.Boolean" />
-        <property name="Parameters" propertytype="System.Data.SqlClient.SqlParameterCollection" />
-        <property name="UpdatedRowSource" propertytype="System.Data.UpdateRowSource" />
-        <property name="MetaData" propertytype="System.Data.SqlClient._SqlMetaData[]" />
-        <property name="IsPrepared" propertytype="System.Boolean" />
-        <property name="IsDirty" propertytype="System.Boolean" />
-        <property name="RecordsAffected" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="ExecuteScalar" argnames="" returntype="System.Object" />
-        <method name="ExecuteNonQuery" argnames="" returntype="System.Int32" />
-        <method name="Cancel" argnames="" returntype="System.Void" />
-        <method name="Prepare" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetCommandTimeout" argnames="" returntype="System.Void" />
-        <method name="CreateParameter" argnames="" returntype="System.Data.SqlClient.SqlParameter" />
-        <method name="ExecuteXmlReader" argnames="" returntype="System.Xml.XmlReader" />
-        <method name="ExecuteReader" argnames="" returntype="System.Data.SqlClient.SqlDataReader" />
-        <method name="ExecuteReader(System.Data.CommandBehavior)" argnames="behavior" returntype="System.Data.SqlClient.SqlDataReader" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="SqlCommandBuilder" namespace="System.Data.SqlClient">
-        <constructor name="SqlCommandBuilder" argnames="" />
-        <constructor name="SqlCommandBuilder(System.Data.SqlClient.SqlDataAdapter)" argnames="adapter" />
-        <property name="DataAdapter" propertytype="System.Data.SqlClient.SqlDataAdapter" />
-        <property name="QuotePrefix" propertytype="System.String" />
-        <property name="QuoteSuffix" propertytype="System.String" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="DeriveParameters(System.Data.SqlClient.SqlCommand)" argnames="command" returntype="System.Void" />
-        <method name="GetInsertCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
-        <method name="GetUpdateCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
-        <method name="GetDeleteCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
-        <method name="RefreshSchema" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="SqlDataAdapter" namespace="System.Data.SqlClient">
-        <constructor name="SqlDataAdapter" argnames="" />
-        <constructor name="SqlDataAdapter(System.Data.SqlClient.SqlCommand)" argnames="selectCommand" />
-        <constructor name="SqlDataAdapter(System.String, System.String)" argnames="selectCommandText, selectConnectionString" />
-        <constructor name="SqlDataAdapter(System.String, System.Data.SqlClient.SqlConnection)" argnames="selectCommandText, selectConnection" />
-        <property name="DeleteCommand" propertytype="System.Data.SqlClient.SqlCommand" />
-        <property name="InsertCommand" propertytype="System.Data.SqlClient.SqlCommand" />
-        <property name="SelectCommand" propertytype="System.Data.SqlClient.SqlCommand" />
-        <property name="UpdateCommand" propertytype="System.Data.SqlClient.SqlCommand" />
-        <property name="AcceptChangesDuringFill" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
-        <property name="ContinueUpdateOnError" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
-        <property name="MissingMappingAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingMappingAction" />
-        <property name="MissingSchemaAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingSchemaAction" />
-        <property name="TableMappings" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.Common.DataTableMappingCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Update(System.Data.DataRow[], System.Data.Common.DataTableMapping)" argnames="dataRows, tableMapping" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="OnRowUpdating(System.Data.Common.RowUpdatingEventArgs)" argnames="value" returntype="System.Void" />
-        <method name="OnRowUpdated(System.Data.Common.RowUpdatedEventArgs)" argnames="value" returntype="System.Void" />
-        <method name="OnFillError(System.Data.FillErrorEventArgs)" argnames="value" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
-        <method name="Fill(System.Data.DataTable, System.Data.IDataReader)" argnames="dataTable, dataReader" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.String, System.Data.IDataReader, System.Int32, System.Int32)" argnames="dataSet, srcTable, dataReader, startRecord, maxRecords" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataTable, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataSet, startRecord, maxRecords, srcTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, schemaType, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.Data.IDbCommand, System.String, System.Data.CommandBehavior)" argnames="dataSet, schemaType, command, srcTable, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
-        <method name="CreateRowUpdatingEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatingEventArgs" />
-        <method name="CreateRowUpdatedEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatedEventArgs" />
-        <method name="Update(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="GetFillParameters" argnames="" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.IDataParameter[]" />
-        <method name="Fill(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
-        <method name="CreateTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataTableMappingCollection" />
-        <method name="CloneInternals" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataAdapter" />
-        <method name="ShouldSerializeTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType)" argnames="dataTable, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
-        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.String)" argnames="dataSet, schemaType, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
-        <method name="Fill(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String)" argnames="dataSet, startRecord, maxRecords, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Update(System.Data.DataRow[])" argnames="dataRows" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Update(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="Update(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="RowUpdated" />
-        <event name="RowUpdating" />
-        <event name="FillError" inherited="System.Data.Common.DbDataAdapter" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="SqlParameter" namespace="System.Data.SqlClient">
-        <constructor name="SqlParameter" argnames="" />
-        <constructor name="SqlParameter(System.String, System.Object)" argnames="parameterName, value" />
-        <constructor name="SqlParameter(System.String, System.Data.SqlDbType)" argnames="parameterName, dbType" />
-        <constructor name="SqlParameter(System.String, System.Data.SqlDbType, System.Int32)" argnames="parameterName, dbType, size" />
-        <constructor name="SqlParameter(System.String, System.Data.SqlDbType, System.Int32, System.String)" argnames="parameterName, dbType, size, sourceColumn" />
-        <constructor name="SqlParameter(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)" argnames="parameterName, dbType, size, direction, isNullable, precision, scale, sourceColumn, sourceVersion, value" />
-        <property name="DbType" propertytype="System.Data.DbType" />
-        <property name="SqlDbType" propertytype="System.Data.SqlDbType" />
-        <property name="Direction" propertytype="System.Data.ParameterDirection" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="Offset" propertytype="System.Int32" />
-        <property name="ParameterName" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Data.SqlClient.SqlParameterCollection" />
-        <property name="Precision" propertytype="System.Byte" />
-        <property name="Scale" propertytype="System.Byte" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="SourceColumn" propertytype="System.String" />
-        <property name="SourceVersion" propertytype="System.Data.DataRowVersion" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="TdsType" propertytype="System.Byte" />
-        <property name="Collation" propertytype="System.Data.SqlClient.SqlCollation" />
-        <property name="ActualSize" propertytype="System.Int32" />
-        <property name="Suppress" propertytype="System.Boolean" />
-        <property name="CoercedValue" propertytype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlRowUpdatedEventArgs" namespace="System.Data.SqlClient">
-        <constructor name="SqlRowUpdatedEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="row, command, statementType, tableMapping" />
-        <property name="Command" propertytype="System.Data.SqlClient.SqlCommand" />
-        <property name="Command" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.IDbCommand" />
-        <property name="StatementType" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.StatementType" />
-        <property name="Errors" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Exception" />
-        <property name="RecordsAffected" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Int32" />
-        <property name="Row" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.DataRow" />
-        <property name="Status" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.UpdateStatus" />
-        <property name="TableMapping" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.Common.DataTableMapping" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlRowUpdatingEventArgs" namespace="System.Data.SqlClient">
-        <constructor name="SqlRowUpdatingEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="row, command, statementType, tableMapping" />
-        <property name="Command" propertytype="System.Data.SqlClient.SqlCommand" />
-        <property name="Command" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.IDbCommand" />
-        <property name="StatementType" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.StatementType" />
-        <property name="Errors" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Exception" />
-        <property name="Row" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.DataRow" />
-        <property name="Status" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.UpdateStatus" />
-        <property name="TableMapping" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.Common.DataTableMapping" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlClientPermission" namespace="System.Data.SqlClient">
-        <constructor name="SqlClientPermission" argnames="" />
-        <constructor name="SqlClientPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="SqlClientPermission(System.Security.Permissions.PermissionState, System.Boolean)" argnames="state, allowBlankPassword" />
-        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermission" propertytype="System.Boolean" />
-        <method name="IsUnrestricted" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Boolean" />
-        <method name="CreateInstance" argnames="" returntype="System.Data.Common.DBDataPermission" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" inherited="System.Data.Common.DBDataPermission" returntype="System.Void" />
-        <method name="ToXml" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" inherited="System.Data.Common.DBDataPermission" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlClientPermissionAttribute" namespace="System.Data.SqlClient">
-        <constructor name="SqlClientPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermissionAttribute" propertytype="System.Boolean" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlConnection" namespace="System.Data.SqlClient">
-        <constructor name="SqlConnection" argnames="" />
-        <constructor name="SqlConnection(System.String)" argnames="connectionString" />
-        <property name="ConnectionString" propertytype="System.String" />
-        <property name="ConnectionTimeout" propertytype="System.Int32" />
-        <property name="Database" propertytype="System.String" />
-        <property name="DataSource" propertytype="System.String" />
-        <property name="PacketSize" propertytype="System.Int32" />
-        <property name="WorkstationId" propertytype="System.String" />
-        <property name="ServerVersion" propertytype="System.String" />
-        <property name="State" propertytype="System.Data.ConnectionState" />
-        <property name="IsClosing" propertytype="System.Boolean" />
-        <property name="IsShiloh" propertytype="System.Boolean" />
-        <property name="LocalTransaction" propertytype="System.Data.SqlClient.SqlTransaction" />
-        <property name="Parser" propertytype="System.Data.SqlClient.TdsParser" />
-        <property name="Reader" propertytype="System.Data.SqlClient.SqlDataReader" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Open" argnames="" returntype="System.Void" />
-        <method name="ChangeDatabase(System.String)" argnames="database" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="BeginTransaction" argnames="" returntype="System.Data.SqlClient.SqlTransaction" />
-        <method name="BeginTransaction(System.Data.IsolationLevel)" argnames="iso" returntype="System.Data.SqlClient.SqlTransaction" />
-        <method name="BeginTransaction(System.String)" argnames="transactionName" returntype="System.Data.SqlClient.SqlTransaction" />
-        <method name="BeginTransaction(System.Data.IsolationLevel, System.String)" argnames="iso, transactionName" returntype="System.Data.SqlClient.SqlTransaction" />
-        <method name="CreateCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="InfoMessage" />
-        <event name="StateChange" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="SQLDebugging" namespace="System.Data.SqlClient">
-        <constructor name="SQLDebugging" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="SqlInfoMessageEventHandler" namespace="System.Data.SqlClient">
-        <constructor name="SqlInfoMessageEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.SqlClient.SqlInfoMessageEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.SqlClient.SqlInfoMessageEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="SqlRowUpdatedEventHandler" namespace="System.Data.SqlClient">
-        <constructor name="SqlRowUpdatedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.SqlClient.SqlRowUpdatedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.SqlClient.SqlRowUpdatedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="SqlRowUpdatingEventHandler" namespace="System.Data.SqlClient">
-        <constructor name="SqlRowUpdatingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Data.SqlClient.SqlRowUpdatingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Data.SqlClient.SqlRowUpdatingEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <class name="SqlTypeException" namespace="System.Data.SqlTypes">
-        <constructor name="SqlTypeException(System.String)" argnames="message" />
-        <constructor name="SqlTypeException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, sc" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlNullValueException" namespace="System.Data.SqlTypes">
-        <constructor name="SqlNullValueException" argnames="" />
-        <constructor name="SqlNullValueException(System.String)" argnames="message" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SqlTruncateException" namespace="System.Data.SqlTypes">
-        <constructor name="SqlTruncateException" argnames="" />
-        <constructor name="SqlTruncateException(System.String)" argnames="message" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="INullable" namespace="System.Data.SqlTypes">
-        <property name="IsNull" propertytype="System.Boolean" />
-    </interface>
-    <struct name="SqlBinary" namespace="System.Data.SqlTypes">
-        <constructor name="SqlBinary(System.Byte[])" argnames="value" />
-        <field name="Null" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Byte[]" />
-        <property name="Item" propertytype="System.Byte" />
-        <property name="Length" propertytype="System.Int32" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Concat(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBinary" />
-        <method name="Equals(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlGuid" argnames="" returntype="System.Data.SqlTypes.SqlGuid" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Byte[])" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBinary)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlGuid)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
-    </struct>
-    <struct name="SqlBoolean" namespace="System.Data.SqlTypes">
-        <constructor name="SqlBoolean(System.Boolean)" argnames="value" />
-        <constructor name="SqlBoolean(System.Int32)" argnames="value" />
-        <field name="True" />
-        <field name="False" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="One" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Boolean" />
-        <property name="IsTrue" propertytype="System.Boolean" />
-        <property name="IsFalse" propertytype="System.Boolean" />
-        <property name="ByteValue" propertytype="System.Byte" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="OnesComplement(System.Data.SqlTypes.SqlBoolean)" argnames="x" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="And(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="Or(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="Xor(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="Equals(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Boolean)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_LogicalNot(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_True(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_False(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
-        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
-        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
-    </struct>
-    <struct name="SqlByte" namespace="System.Data.SqlTypes">
-        <constructor name="SqlByte(System.Byte)" argnames="value" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Byte" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="OnesComplement(System.Data.SqlTypes.SqlByte)" argnames="x" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="Add(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="Subtract(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="Multiply(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="Divide(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="Mod(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="BitwiseAnd(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="BitwiseOr(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="Xor(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="Equals(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Byte)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_Modulus(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
-    </struct>
-    <struct name="SqlDateTime" namespace="System.Data.SqlTypes">
-        <constructor name="SqlDateTime(System.DateTime)" argnames="value" />
-        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32)" argnames="year, month, day" />
-        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second" />
-        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Double)" argnames="year, month, day, hour, minute, second, millisecond" />
-        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, bilisecond" />
-        <constructor name="SqlDateTime(System.Int32, System.Int32)" argnames="dayTicks, timeTicks" />
-        <field name="SQLTicksPerSecond" />
-        <field name="SQLTicksPerMinute" />
-        <field name="SQLTicksPerHour" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <field name="Null" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.DateTime" />
-        <property name="DayTicks" propertytype="System.Int32" />
-        <property name="TimeTicks" propertytype="System.Int32" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlDateTime" />
-        <method name="Equals(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.DateTime)" argnames="value" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDateTime)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlDateTime, System.TimeSpan)" argnames="x, t" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlDateTime, System.TimeSpan)" argnames="x, t" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
-    </struct>
-    <struct name="SqlDouble" namespace="System.Data.SqlTypes">
-        <constructor name="SqlDouble(System.Double)" argnames="value" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Double" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="Add(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="Subtract(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="Multiply(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="Divide(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="Equals(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Double)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
-    </struct>
-    <struct name="SqlGuid" namespace="System.Data.SqlTypes">
-        <constructor name="SqlGuid(System.Byte[])" argnames="value" />
-        <constructor name="SqlGuid(System.String)" argnames="s" />
-        <constructor name="SqlGuid(System.Guid)" argnames="g" />
-        <constructor name="SqlGuid(System.Int32, System.Int16, System.Int16, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte)" argnames="a, b, c, d, e, f, g, h, i, j, k" />
-        <field name="Null" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Guid" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ToByteArray" argnames="" returntype="System.Byte[]" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlGuid" />
-        <method name="Equals(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="ToSqlBinary" argnames="" returntype="System.Data.SqlTypes.SqlBinary" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Guid)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlGuid)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBinary)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
-    </struct>
-    <struct name="SqlInt16" namespace="System.Data.SqlTypes">
-        <constructor name="SqlInt16(System.Int16)" argnames="value" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Int16" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="OnesComplement(System.Data.SqlTypes.SqlInt16)" argnames="x" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="Add(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="Subtract(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="Multiply(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="Divide(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="Mod(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="BitwiseAnd(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="BitwiseOr(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="Xor(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="Equals(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Int16)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_Modulus(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
-    </struct>
-    <struct name="SqlInt32" namespace="System.Data.SqlTypes">
-        <constructor name="SqlInt32(System.Int32)" argnames="value" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Int32" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="OnesComplement(System.Data.SqlTypes.SqlInt32)" argnames="x" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Add(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Subtract(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Multiply(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Divide(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Mod(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="BitwiseAnd(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="BitwiseOr(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Xor(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Equals(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Int32)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_Modulus(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
-    </struct>
-    <struct name="SqlInt64" namespace="System.Data.SqlTypes">
-        <constructor name="SqlInt64(System.Int64)" argnames="value" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Int64" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="OnesComplement(System.Data.SqlTypes.SqlInt64)" argnames="x" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="Add(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="Subtract(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="Multiply(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="Divide(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="Mod(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="BitwiseAnd(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="BitwiseOr(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="Xor(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="Equals(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Int64)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_Modulus(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
-    </struct>
-    <struct name="SqlMoney" namespace="System.Data.SqlTypes">
-        <constructor name="SqlMoney(System.Int32)" argnames="value" />
-        <constructor name="SqlMoney(System.Int64)" argnames="value" />
-        <constructor name="SqlMoney(System.Decimal)" argnames="value" />
-        <constructor name="SqlMoney(System.Double)" argnames="value" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Decimal" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ToDecimal" argnames="" returntype="System.Decimal" />
-        <method name="ToInt64" argnames="" returntype="System.Int64" />
-        <method name="ToInt32" argnames="" returntype="System.Int32" />
-        <method name="ToDouble" argnames="" returntype="System.Double" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="Add(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="Subtract(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="Multiply(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="Divide(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="Equals(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Decimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
-    </struct>
-    <struct name="SqlDecimal" namespace="System.Data.SqlTypes">
-        <constructor name="SqlDecimal(System.Decimal)" argnames="value" />
-        <constructor name="SqlDecimal(System.Int32)" argnames="value" />
-        <constructor name="SqlDecimal(System.Int64)" argnames="value" />
-        <constructor name="SqlDecimal(System.Byte, System.Byte, System.Boolean, System.Int32[])" argnames="bPrecision, bScale, fPositive, bits" />
-        <constructor name="SqlDecimal(System.Byte, System.Byte, System.Boolean, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="bPrecision, bScale, fPositive, data1, data2, data3, data4" />
-        <constructor name="SqlDecimal(System.Double)" argnames="dVal" />
-        <field name="MaxPrecision" />
-        <field name="MaxScale" />
-        <field name="Null" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Decimal" />
-        <property name="IsPositive" propertytype="System.Boolean" />
-        <property name="Precision" propertytype="System.Byte" />
-        <property name="Scale" propertytype="System.Byte" />
-        <property name="Data" propertytype="System.Int32[]" />
-        <property name="BinData" propertytype="System.Byte[]" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToDouble" argnames="" returntype="System.Double" />
-        <method name="AdjustScale(System.Data.SqlTypes.SqlDecimal, System.Int32, System.Boolean)" argnames="n, digits, fRound" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ConvertToPrecScale(System.Data.SqlTypes.SqlDecimal, System.Int32, System.Int32)" argnames="n, precision, scale" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Add(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Subtract(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Multiply(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Divide(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Equals(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="Abs(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Ceiling(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Floor(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Sign(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="Round(System.Data.SqlTypes.SqlDecimal, System.Int32)" argnames="n, position" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Truncate(System.Data.SqlTypes.SqlDecimal, System.Int32)" argnames="n, position" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="Power(System.Data.SqlTypes.SqlDecimal, System.Double)" argnames="n, exp" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Decimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
-    </struct>
-    <struct name="SqlSingle" namespace="System.Data.SqlTypes">
-        <constructor name="SqlSingle(System.Single)" argnames="value" />
-        <constructor name="SqlSingle(System.Double)" argnames="value" />
-        <field name="Null" />
-        <field name="Zero" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Single" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="Add(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="Subtract(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="Multiply(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="Divide(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="Equals(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Single)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_Subtraction(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_Multiply(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_Division(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Implicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
-    </struct>
-    <struct name="SqlString" namespace="System.Data.SqlTypes">
-        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[], System.Int32, System.Int32, System.Boolean)" argnames="lcid, compareOptions, data, index, count, fUnicode" />
-        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[], System.Boolean)" argnames="lcid, compareOptions, data, fUnicode" />
-        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[], System.Int32, System.Int32)" argnames="lcid, compareOptions, data, index, count" />
-        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[])" argnames="lcid, compareOptions, data" />
-        <constructor name="SqlString(System.String, System.Int32, System.Data.SqlTypes.SqlCompareOptions)" argnames="data, lcid, compareOptions" />
-        <constructor name="SqlString(System.String, System.Int32)" argnames="data, lcid" />
-        <constructor name="SqlString(System.String)" argnames="data" />
-        <field name="Null" />
-        <field name="IgnoreCase" />
-        <field name="IgnoreWidth" />
-        <field name="IgnoreNonSpace" />
-        <field name="IgnoreKanaType" />
-        <field name="BinarySort" />
-        <property name="IsNull" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.String" />
-        <property name="LCID" propertytype="System.Int32" />
-        <property name="CultureInfo" propertytype="System.Globalization.CultureInfo" />
-        <property name="CompareInfo" propertytype="System.Globalization.CompareInfo" />
-        <property name="SqlCompareOptions" propertytype="System.Data.SqlTypes.SqlCompareOptions" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetUnicodeBytes" argnames="" returntype="System.Byte[]" />
-        <method name="GetNonUnicodeBytes" argnames="" returntype="System.Byte[]" />
-        <method name="Clone" argnames="" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="Concat(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlString" />
-        <method name="Equals(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="NotEquals(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
-        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
-        <method name="ToSqlDateTime" argnames="" returntype="System.Data.SqlTypes.SqlDateTime" />
-        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
-        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
-        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
-        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
-        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
-        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
-        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
-        <method name="ToSqlGuid" argnames="" returntype="System.Data.SqlTypes.SqlGuid" />
-        <method name="CompareOptionsFromSqlCompareOptions(System.Data.SqlTypes.SqlCompareOptions)" argnames="compareOptions" returntype="System.Globalization.CompareOptions" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.String)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
-        <operator name="op_Addition(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlDateTime)" argnames="x" />
-        <operator name="op_Explicit(System.Data.SqlTypes.SqlGuid)" argnames="x" />
-        <operator name="op_Equality(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
-        <operator name="op_Inequality(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
-        <operator name="op_LessThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
-        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
-        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
-        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
-    </struct>
-    <enum name="SqlCompareOptions" namespace="System.Data.SqlTypes">
-        <field name="None" />
-        <field name="IgnoreCase" />
-        <field name="IgnoreNonSpace" />
-        <field name="IgnoreKanaType" />
-        <field name="IgnoreWidth" />
-        <field name="BinarySort" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="XmlDataDocument" namespace="System.Xml">
-        <constructor name="XmlDataDocument" argnames="" />
-        <constructor name="XmlDataDocument(System.Data.DataSet)" argnames="dataset" />
-        <property name="AutoFoliationState" propertytype="System.Xml.ElementState" />
-        <property name="DataSet" propertytype="System.Data.DataSet" />
-        <property name="IgnoreXmlEvents" propertytype="System.Boolean" />
-        <property name="IgnoreDataSetEvents" propertytype="System.Boolean" />
-        <property name="IsFoliationEnabled" propertytype="System.Boolean" />
-        <property name="Mapper" propertytype="System.Xml.DataSetMapper" />
-        <property name="NodeType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNodeType" />
-        <property name="DocumentType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocumentType" />
-        <property name="Implementation" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlImplementation" />
-        <property name="Name" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="LocalName" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="DocumentElement" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlElement" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocument" />
-        <property name="XmlResolver" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlResolver" />
-        <property name="NameTable" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNameTable" />
-        <property name="PreserveWhitespace" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
-        <property name="InnerXml" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="Save(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Save(System.IO.TextWriter)" argnames="writer" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Save(System.IO.Stream)" argnames="outStream" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Save(System.String)" argnames="filename" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="LoadXml(System.String)" argnames="xml" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Load(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
-        <method name="Load(System.IO.TextReader)" argnames="txtReader" returntype="System.Void" />
-        <method name="Load(System.IO.Stream)" argnames="inStream" returntype="System.Void" />
-        <method name="Load(System.String)" argnames="filename" returntype="System.Void" />
-        <method name="ReadNode(System.Xml.XmlReader)" argnames="reader" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String)" argnames="type, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.String, System.String, System.String)" argnames="nodeTypeString, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String, System.String)" argnames="type, prefix, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateElement(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" returntype="System.Xml.XmlElement" />
-        <method name="CreateAttribute(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
-        <method name="ImportNode(System.Xml.XmlNode, System.Boolean)" argnames="node, deep" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="GetElementById(System.String)" argnames="elemId" returntype="System.Xml.XmlElement" />
-        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
-        <method name="GetElementsByTagName(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
-        <method name="CreateWhitespace(System.String)" argnames="text" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlWhitespace" />
-        <method name="CreateNavigator(System.Xml.XmlNode)" argnames="node" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="CreateSignificantWhitespace(System.String)" argnames="text" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlSignificantWhitespace" />
-        <method name="CreateTextNode(System.String)" argnames="text" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlText" />
-        <method name="CreateXmlDeclaration(System.String, System.String, System.String)" argnames="version, encoding, standalone" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDeclaration" />
-        <method name="CreateProcessingInstruction(System.String, System.String)" argnames="target, data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlProcessingInstruction" />
-        <method name="CreateEntityReference(System.String)" argnames="name" returntype="System.Xml.XmlEntityReference" />
-        <method name="CreateDocumentFragment" argnames="" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentFragment" />
-        <method name="CreateDocumentType(System.String, System.String, System.String, System.String)" argnames="name, publicId, systemId, internalSubset" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentType" />
-        <method name="CreateComment(System.String)" argnames="data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlComment" />
-        <method name="CreateCDataSection(System.String)" argnames="data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlCDataSection" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="xw" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetRowFromElement(System.Xml.XmlElement)" argnames="e" returntype="System.Data.DataRow" />
-        <method name="GetElementFromRow(System.Data.DataRow)" argnames="r" returntype="System.Xml.XmlElement" />
-        <method name="CreateAttribute(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
-        <method name="CreateElement(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
-        <method name="CreateAttribute(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
-        <method name="CreateElement(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="NodeInserting" inherited="System.Xml.XmlDocument" />
-        <event name="NodeInserted" inherited="System.Xml.XmlDocument" />
-        <event name="NodeRemoving" inherited="System.Xml.XmlDocument" />
-        <event name="NodeRemoved" inherited="System.Xml.XmlDocument" />
-        <event name="NodeChanging" inherited="System.Xml.XmlDocument" />
-        <event name="NodeChanged" inherited="System.Xml.XmlDocument" />
-    </class>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Data">
+    <class name="InternalDataCollectionBase" namespace="System.Data">
+        <constructor name="InternalDataCollectionBase" argnames="" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Constraint" namespace="System.Data">
+        <constructor name="Constraint" argnames="" />
+        <property name="ConstraintName" propertytype="System.String" />
+        <property name="SchemaName" propertytype="System.String" />
+        <property name="InCollection" propertytype="System.Boolean" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
+        <property name="_DataSet" propertytype="System.Data.DataSet" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CheckStateForProperty" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ConstraintCollection" namespace="System.Data">
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <property name="Item" propertytype="System.Data.Constraint" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="Item" propertytype="System.Data.Constraint" />
+        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="constraintName" returntype="System.Int32" />
+        <method name="Add(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="name, primaryKeyColumns, foreignKeyColumns" returntype="System.Data.Constraint" />
+        <method name="Add(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="name, primaryKeyColumn, foreignKeyColumn" returntype="System.Data.Constraint" />
+        <method name="Add(System.String, System.Data.DataColumn, System.Boolean)" argnames="name, column, primaryKey" returntype="System.Data.Constraint" />
+        <method name="Add(System.String, System.Data.DataColumn[], System.Boolean)" argnames="name, columns, primaryKey" returntype="System.Data.Constraint" />
+        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Data.Constraint)" argnames="constraint" returntype="System.Void" />
+        <method name="AddRange(System.Data.Constraint[])" argnames="constraints" returntype="System.Void" />
+        <method name="CanRemove(System.Data.Constraint)" argnames="constraint" returntype="System.Boolean" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="IndexOf(System.Data.Constraint)" argnames="constraint" returntype="System.Int32" />
+        <method name="Remove(System.Data.Constraint)" argnames="constraint" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+    </class>
+    <class name="DataColumn" namespace="System.Data">
+        <constructor name="DataColumn" argnames="" />
+        <constructor name="DataColumn(System.String)" argnames="columnName" />
+        <constructor name="DataColumn(System.String, System.Type)" argnames="columnName, dataType" />
+        <constructor name="DataColumn(System.String, System.Type, System.String)" argnames="columnName, dataType, expr" />
+        <constructor name="DataColumn(System.String, System.Type, System.String, System.Data.MappingType)" argnames="columnName, dataType, expr, type" />
+        <property name="AllowDBNull" propertytype="System.Boolean" />
+        <property name="AutoIncrement" propertytype="System.Boolean" />
+        <property name="AutoIncrementSeed" propertytype="System.Int64" />
+        <property name="AutoIncrementStep" propertytype="System.Int64" />
+        <property name="Caption" propertytype="System.String" />
+        <property name="ColumnName" propertytype="System.String" />
+        <property name="EncodedColumnName" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="Computed" propertytype="System.Boolean" />
+        <property name="DataExpression" propertytype="System.Data.DataExpression" />
+        <property name="DataType" propertytype="System.Type" />
+        <property name="DefaultValue" propertytype="System.Object" />
+        <property name="Expression" propertytype="System.String" />
+        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
+        <property name="HasData" propertytype="System.Boolean" />
+        <property name="MaxLength" propertytype="System.Int32" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Ordinal" propertytype="System.Int32" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="SortIndex" propertytype="System.Data.Index" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Unique" propertytype="System.Boolean" />
+        <property name="InternalUnique" propertytype="System.Boolean" />
+        <property name="XmlDataType" propertytype="System.String" />
+        <property name="SimpleType" propertytype="System.Data.SimpleType" />
+        <property name="ColumnMapping" propertytype="System.Data.MappingType" />
+        <property name="Description" propertytype="System.String" />
+        <property name="Storage" propertytype="System.Data.Common.DataStorage" />
+        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CheckUnique" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
+    </class>
+    <class name="DataColumnChangeEventArgs" namespace="System.Data">
+        <constructor name="DataColumnChangeEventArgs(System.Data.DataRow, System.Data.DataColumn, System.Object)" argnames="row, column, value" />
+        <property name="Column" propertytype="System.Data.DataColumn" />
+        <property name="Row" propertytype="System.Data.DataRow" />
+        <property name="ProposedValue" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataColumnCollection" namespace="System.Data">
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <property name="Item" propertytype="System.Data.DataColumn" />
+        <property name="Item" propertytype="System.Data.DataColumn" />
+        <property name="Item" propertytype="System.Data.DataColumn" />
+        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="IndexOf(System.Data.DataColumn)" argnames="column" returntype="System.Int32" />
+        <method name="Add" argnames="" returntype="System.Data.DataColumn" />
+        <method name="Add(System.String)" argnames="columnName" returntype="System.Data.DataColumn" />
+        <method name="Add(System.String, System.Type)" argnames="columnName, type" returntype="System.Data.DataColumn" />
+        <method name="Add(System.String, System.Type, System.String)" argnames="columnName, type, expression" returntype="System.Data.DataColumn" />
+        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Data.DataColumn)" argnames="column" returntype="System.Void" />
+        <method name="AddRange(System.Data.DataColumn[])" argnames="columns" returntype="System.Void" />
+        <method name="CanRemove(System.Data.DataColumn)" argnames="column" returntype="System.Boolean" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="IndexOf(System.String)" argnames="columnName" returntype="System.Int32" />
+        <method name="Remove(System.Data.DataColumn)" argnames="column" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+    </class>
+    <class name="DataException" namespace="System.Data">
+        <constructor name="DataException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="DataException" argnames="" />
+        <constructor name="DataException(System.String)" argnames="s" />
+        <constructor name="DataException(System.String, System.Exception)" argnames="s, innerException" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ConstraintException" namespace="System.Data">
+        <constructor name="ConstraintException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="ConstraintException" argnames="" />
+        <constructor name="ConstraintException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DeletedRowInaccessibleException" namespace="System.Data">
+        <constructor name="DeletedRowInaccessibleException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="DeletedRowInaccessibleException" argnames="" />
+        <constructor name="DeletedRowInaccessibleException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DuplicateNameException" namespace="System.Data">
+        <constructor name="DuplicateNameException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="DuplicateNameException" argnames="" />
+        <constructor name="DuplicateNameException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InRowChangingEventException" namespace="System.Data">
+        <constructor name="InRowChangingEventException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="InRowChangingEventException" argnames="" />
+        <constructor name="InRowChangingEventException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InvalidConstraintException" namespace="System.Data">
+        <constructor name="InvalidConstraintException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="InvalidConstraintException" argnames="" />
+        <constructor name="InvalidConstraintException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MissingPrimaryKeyException" namespace="System.Data">
+        <constructor name="MissingPrimaryKeyException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="MissingPrimaryKeyException" argnames="" />
+        <constructor name="MissingPrimaryKeyException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NoNullAllowedException" namespace="System.Data">
+        <constructor name="NoNullAllowedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="NoNullAllowedException" argnames="" />
+        <constructor name="NoNullAllowedException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ReadOnlyException" namespace="System.Data">
+        <constructor name="ReadOnlyException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="ReadOnlyException" argnames="" />
+        <constructor name="ReadOnlyException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RowNotInTableException" namespace="System.Data">
+        <constructor name="RowNotInTableException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="RowNotInTableException" argnames="" />
+        <constructor name="RowNotInTableException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="VersionNotFoundException" namespace="System.Data">
+        <constructor name="VersionNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="VersionNotFoundException" argnames="" />
+        <constructor name="VersionNotFoundException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataRelation" namespace="System.Data">
+        <constructor name="DataRelation(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="relationName, parentColumn, childColumn" />
+        <constructor name="DataRelation(System.String, System.Data.DataColumn, System.Data.DataColumn, System.Boolean)" argnames="relationName, parentColumn, childColumn, createConstraints" />
+        <constructor name="DataRelation(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="relationName, parentColumns, childColumns" />
+        <constructor name="DataRelation(System.String, System.Data.DataColumn[], System.Data.DataColumn[], System.Boolean)" argnames="relationName, parentColumns, childColumns, createConstraints" />
+        <constructor name="DataRelation(System.String, System.String, System.String, System.String[], System.String[], System.Boolean)" argnames="relationName, parentTableName, childTableName, parentColumnNames, childColumnNames, nested" />
+        <property name="ChildColumns" propertytype="System.Data.DataColumn[]" />
+        <property name="ChildKey" propertytype="System.Data.DataKey" />
+        <property name="ChildTable" propertytype="System.Data.DataTable" />
+        <property name="DataSet" propertytype="System.Data.DataSet" />
+        <property name="ParentColumnNames" propertytype="System.String[]" />
+        <property name="ChildColumnNames" propertytype="System.String[]" />
+        <property name="ParentColumns" propertytype="System.Data.DataColumn[]" />
+        <property name="ParentKey" propertytype="System.Data.DataKey" />
+        <property name="ParentTable" propertytype="System.Data.DataTable" />
+        <property name="RelationName" propertytype="System.String" />
+        <property name="Nested" propertytype="System.Boolean" />
+        <property name="ParentKeyConstraint" propertytype="System.Data.UniqueConstraint" />
+        <property name="ChildKeyConstraint" propertytype="System.Data.ForeignKeyConstraint" />
+        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CheckStateForProperty" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataRelationCollection" namespace="System.Data">
+        <constructor name="DataRelationCollection" argnames="" />
+        <property name="Item" propertytype="System.Data.DataRelation" />
+        <property name="Item" propertytype="System.Data.DataRelation" />
+        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
+        <property name="List" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Collections.ArrayList" />
+        <method name="RemoveCore(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
+        <method name="CanRemove(System.Data.DataRelation)" argnames="relation" returntype="System.Boolean" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="GetDataSet" argnames="" returntype="System.Data.DataSet" />
+        <method name="IndexOf(System.String)" argnames="relationName" returntype="System.Int32" />
+        <method name="IndexOf(System.Data.DataRelation)" argnames="relation" returntype="System.Int32" />
+        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="AddCore(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
+        <method name="Add(System.Data.DataColumn, System.Data.DataColumn)" argnames="parentColumn, childColumn" returntype="System.Data.DataRelation" />
+        <method name="Add(System.String, System.Data.DataColumn, System.Data.DataColumn, System.Boolean)" argnames="name, parentColumn, childColumn, createConstraints" returntype="System.Data.DataRelation" />
+        <method name="Add(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="name, parentColumn, childColumn" returntype="System.Data.DataRelation" />
+        <method name="Add(System.Data.DataColumn[], System.Data.DataColumn[])" argnames="parentColumns, childColumns" returntype="System.Data.DataRelation" />
+        <method name="Add(System.String, System.Data.DataColumn[], System.Data.DataColumn[], System.Boolean)" argnames="name, parentColumns, childColumns, createConstraints" returntype="System.Data.DataRelation" />
+        <method name="Add(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="name, parentColumns, childColumns" returntype="System.Data.DataRelation" />
+        <method name="AddRange(System.Data.DataRelation[])" argnames="relations" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
+        <method name="Remove(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+    </class>
+    <class name="DataRow" namespace="System.Data">
+        <property name="Element" propertytype="System.Xml.XmlBoundElement" />
+        <property name="RowError" propertytype="System.String" />
+        <property name="RowState" propertytype="System.Data.DataRowState" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="ItemArray" propertytype="System.Object[]" />
+        <property name="HasErrors" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AcceptChanges" argnames="" returntype="System.Void" />
+        <method name="BeginEdit" argnames="" returntype="System.Void" />
+        <method name="CancelEdit" argnames="" returntype="System.Void" />
+        <method name="Delete" argnames="" returntype="System.Void" />
+        <method name="EndEdit" argnames="" returntype="System.Void" />
+        <method name="SetColumnError(System.Int32, System.String)" argnames="columnIndex, error" returntype="System.Void" />
+        <method name="SetColumnError(System.String, System.String)" argnames="columnName, error" returntype="System.Void" />
+        <method name="SetColumnError(System.Data.DataColumn, System.String)" argnames="column, error" returntype="System.Void" />
+        <method name="GetColumnError(System.Int32)" argnames="columnIndex" returntype="System.String" />
+        <method name="GetColumnError(System.String)" argnames="columnName" returntype="System.String" />
+        <method name="GetColumnError(System.Data.DataColumn)" argnames="column" returntype="System.String" />
+        <method name="ClearErrors" argnames="" returntype="System.Void" />
+        <method name="GetColumnsInError" argnames="" returntype="System.Data.DataColumn[]" />
+        <method name="GetChildRows(System.String)" argnames="relationName" returntype="System.Data.DataRow[]" />
+        <method name="GetChildRows(System.String, System.Data.DataRowVersion)" argnames="relationName, version" returntype="System.Data.DataRow[]" />
+        <method name="GetChildRows(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataRow[]" />
+        <method name="GetChildRows(System.Data.DataRelation, System.Data.DataRowVersion)" argnames="relation, version" returntype="System.Data.DataRow[]" />
+        <method name="GetParentRow(System.String)" argnames="relationName" returntype="System.Data.DataRow" />
+        <method name="GetParentRow(System.String, System.Data.DataRowVersion)" argnames="relationName, version" returntype="System.Data.DataRow" />
+        <method name="GetParentRow(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataRow" />
+        <method name="GetParentRow(System.Data.DataRelation, System.Data.DataRowVersion)" argnames="relation, version" returntype="System.Data.DataRow" />
+        <method name="GetParentRows(System.String)" argnames="relationName" returntype="System.Data.DataRow[]" />
+        <method name="GetParentRows(System.String, System.Data.DataRowVersion)" argnames="relationName, version" returntype="System.Data.DataRow[]" />
+        <method name="GetParentRows(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataRow[]" />
+        <method name="GetParentRows(System.Data.DataRelation, System.Data.DataRowVersion)" argnames="relation, version" returntype="System.Data.DataRow[]" />
+        <method name="HasVersion(System.Data.DataRowVersion)" argnames="version" returntype="System.Boolean" />
+        <method name="IsNull(System.Int32)" argnames="columnIndex" returntype="System.Boolean" />
+        <method name="IsNull(System.String)" argnames="columnName" returntype="System.Boolean" />
+        <method name="IsNull(System.Data.DataColumn)" argnames="column" returntype="System.Boolean" />
+        <method name="IsNull(System.Data.DataColumn, System.Data.DataRowVersion)" argnames="column, version" returntype="System.Boolean" />
+        <method name="RejectChanges" argnames="" returntype="System.Void" />
+        <method name="SetNull(System.Data.DataColumn)" argnames="column" returntype="System.Void" />
+        <method name="SetParentRow(System.Data.DataRow)" argnames="parentRow" returntype="System.Void" />
+        <method name="SetParentRow(System.Data.DataRow, System.Data.DataRelation)" argnames="parentRow, relation" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataRowBuilder" namespace="System.Data">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataRowChangeEventArgs" namespace="System.Data">
+        <constructor name="DataRowChangeEventArgs(System.Data.DataRow, System.Data.DataRowAction)" argnames="row, action" />
+        <property name="Row" propertytype="System.Data.DataRow" />
+        <property name="Action" propertytype="System.Data.DataRowAction" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataRowCollection" namespace="System.Data">
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <property name="Item" propertytype="System.Data.DataRow" />
+        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
+        <method name="Add(System.Object[])" argnames="values" returntype="System.Data.DataRow" />
+        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Data.DataRow)" argnames="row" returntype="System.Void" />
+        <method name="InsertAt(System.Data.DataRow, System.Int32)" argnames="row, pos" returntype="System.Void" />
+        <method name="Find(System.Object)" argnames="key" returntype="System.Data.DataRow" />
+        <method name="Find(System.Object[])" argnames="keys" returntype="System.Data.DataRow" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="Contains(System.Object[])" argnames="keys" returntype="System.Boolean" />
+        <method name="Remove(System.Data.DataRow)" argnames="row" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataRowView" namespace="System.Data">
+        <property name="DataView" propertytype="System.Data.DataView" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Row" propertytype="System.Data.DataRow" />
+        <property name="RowVersion" propertytype="System.Data.DataRowVersion" />
+        <property name="IsNew" propertytype="System.Boolean" />
+        <property name="IsEdit" propertytype="System.Boolean" />
+        <method name="CancelEdit" argnames="" returntype="System.Void" />
+        <method name="EndEdit" argnames="" returntype="System.Void" />
+        <method name="BeginEdit" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateChildView(System.Data.DataRelation)" argnames="relation" returntype="System.Data.DataView" />
+        <method name="CreateChildView(System.String)" argnames="relationName" returntype="System.Data.DataView" />
+        <method name="Delete" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataSet" namespace="System.Data">
+        <constructor name="DataSet" argnames="" />
+        <constructor name="DataSet(System.String)" argnames="dataSetName" />
+        <constructor name="DataSet(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="CaseSensitive" propertytype="System.Boolean" />
+        <property name="DefaultViewManager" propertytype="System.Data.DataViewManager" />
+        <property name="EnforceConstraints" propertytype="System.Boolean" />
+        <property name="DataSetName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="RowDiffId" propertytype="System.Collections.Hashtable" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
+        <property name="HasErrors" propertytype="System.Boolean" />
+        <property name="Locale" propertytype="System.Globalization.CultureInfo" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="Relations" propertytype="System.Data.DataRelationCollection" />
+        <property name="Tables" propertytype="System.Data.DataTableCollection" />
+        <property name="FBoundToDocument" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="GetSchemaSerializable" argnames="" returntype="System.Xml.Schema.XmlSchema" />
+        <method name="ReadXmlSerializable(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="RejectChanges" argnames="" returntype="System.Void" />
+        <method name="OnRemoveRelation(System.Data.DataRelation)" argnames="relation" returntype="System.Void" />
+        <method name="OnRemoveTable(System.Data.DataTable)" argnames="table" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Data.DataSet" />
+        <method name="ShouldSerializeTables" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeRelations" argnames="" returntype="System.Boolean" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
+        <method name="AcceptChanges" argnames="" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Copy" argnames="" returntype="System.Data.DataSet" />
+        <method name="GetChanges" argnames="" returntype="System.Data.DataSet" />
+        <method name="GetChanges(System.Data.DataRowState)" argnames="rowStates" returntype="System.Data.DataSet" />
+        <method name="GetSerializationData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetXml" argnames="" returntype="System.String" />
+        <method name="GetXmlSchema" argnames="" returntype="System.String" />
+        <method name="HasChanges" argnames="" returntype="System.Boolean" />
+        <method name="HasChanges(System.Data.DataRowState)" argnames="rowStates" returntype="System.Boolean" />
+        <method name="InferXmlSchema(System.Xml.XmlReader, System.String[])" argnames="reader, nsArray" returntype="System.Void" />
+        <method name="InferXmlSchema(System.IO.Stream, System.String[])" argnames="stream, nsArray" returntype="System.Void" />
+        <method name="InferXmlSchema(System.IO.TextReader, System.String[])" argnames="reader, nsArray" returntype="System.Void" />
+        <method name="InferXmlSchema(System.String, System.String[])" argnames="fileName, nsArray" returntype="System.Void" />
+        <method name="ReadXmlSchema(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
+        <method name="ReadXmlSchema(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="ReadXmlSchema(System.IO.TextReader)" argnames="reader" returntype="System.Void" />
+        <method name="ReadXmlSchema(System.String)" argnames="fileName" returntype="System.Void" />
+        <method name="WriteXmlSchema(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="WriteXmlSchema(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
+        <method name="WriteXmlSchema(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+        <method name="WriteXmlSchema(System.String)" argnames="fileName" returntype="System.Void" />
+        <method name="ReadXml(System.Xml.XmlReader)" argnames="reader" returntype="System.Data.XmlReadMode" />
+        <method name="ReadXml(System.IO.Stream)" argnames="stream" returntype="System.Data.XmlReadMode" />
+        <method name="ReadXml(System.IO.TextReader)" argnames="reader" returntype="System.Data.XmlReadMode" />
+        <method name="ReadXml(System.String)" argnames="fileName" returntype="System.Data.XmlReadMode" />
+        <method name="ReadXml(System.Xml.XmlReader, System.Data.XmlReadMode)" argnames="reader, mode" returntype="System.Data.XmlReadMode" />
+        <method name="ReadXml(System.IO.Stream, System.Data.XmlReadMode)" argnames="stream, mode" returntype="System.Data.XmlReadMode" />
+        <method name="ReadXml(System.IO.TextReader, System.Data.XmlReadMode)" argnames="reader, mode" returntype="System.Data.XmlReadMode" />
+        <method name="ReadXml(System.String, System.Data.XmlReadMode)" argnames="fileName, mode" returntype="System.Data.XmlReadMode" />
+        <method name="WriteXml(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="WriteXml(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
+        <method name="WriteXml(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+        <method name="WriteXml(System.String)" argnames="fileName" returntype="System.Void" />
+        <method name="WriteXml(System.IO.Stream, System.Data.XmlWriteMode)" argnames="stream, mode" returntype="System.Void" />
+        <method name="WriteXml(System.IO.TextWriter, System.Data.XmlWriteMode)" argnames="writer, mode" returntype="System.Void" />
+        <method name="WriteXml(System.Xml.XmlWriter, System.Data.XmlWriteMode)" argnames="writer, mode" returntype="System.Void" />
+        <method name="WriteXml(System.String, System.Data.XmlWriteMode)" argnames="fileName, mode" returntype="System.Void" />
+        <method name="Merge(System.Data.DataSet)" argnames="dataSet" returntype="System.Void" />
+        <method name="Merge(System.Data.DataSet, System.Boolean)" argnames="dataSet, preserveChanges" returntype="System.Void" />
+        <method name="Merge(System.Data.DataSet, System.Boolean, System.Data.MissingSchemaAction)" argnames="dataSet, preserveChanges, missingSchemaAction" returntype="System.Void" />
+        <method name="Merge(System.Data.DataTable)" argnames="table" returntype="System.Void" />
+        <method name="Merge(System.Data.DataTable, System.Boolean, System.Data.MissingSchemaAction)" argnames="table, preserveChanges, missingSchemaAction" returntype="System.Void" />
+        <method name="Merge(System.Data.DataRow[])" argnames="rows" returntype="System.Void" />
+        <method name="Merge(System.Data.DataRow[], System.Boolean, System.Data.MissingSchemaAction)" argnames="rows, preserveChanges, missingSchemaAction" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="MergeFailed" />
+        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
+    </class>
+    <class name="DataSysDescriptionAttribute" namespace="System.Data">
+        <constructor name="DataSysDescriptionAttribute(System.String)" argnames="description" />
+        <property name="Description" propertytype="System.String" />
+        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataTableCollection" namespace="System.Data">
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <property name="Item" propertytype="System.Data.DataTable" />
+        <property name="Item" propertytype="System.Data.DataTable" />
+        <property name="Item" propertytype="System.Data.DataTable" />
+        <property name="Count" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Data.InternalDataCollectionBase" propertytype="System.Object" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="tableName" returntype="System.Int32" />
+        <method name="IndexOf(System.Data.DataTable)" argnames="table" returntype="System.Int32" />
+        <method name="Add" argnames="" returntype="System.Data.DataTable" />
+        <method name="Add(System.String)" argnames="name" returntype="System.Data.DataTable" />
+        <method name="Add(System.Data.DataTable)" argnames="table" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Data.InternalDataCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Data.InternalDataCollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddRange(System.Data.DataTable[])" argnames="tables" returntype="System.Void" />
+        <method name="CanRemove(System.Data.DataTable)" argnames="table" returntype="System.Boolean" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="Remove(System.Data.DataTable)" argnames="table" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+        <event name="CollectionChanging" />
+    </class>
+    <class name="DataView" namespace="System.Data">
+        <constructor name="DataView" argnames="" />
+        <constructor name="DataView(System.Data.DataTable)" argnames="table" />
+        <constructor name="DataView(System.Data.DataTable, System.String, System.String, System.Data.DataViewRowState)" argnames="table, RowFilter, Sort, RowState" />
+        <property name="AllowDelete" propertytype="System.Boolean" />
+        <property name="ApplyDefaultSort" propertytype="System.Boolean" />
+        <property name="AllowEdit" propertytype="System.Boolean" />
+        <property name="AllowNew" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="DataViewManager" propertytype="System.Data.DataViewManager" />
+        <property name="IsOpen" propertytype="System.Boolean" />
+        <property name="RowFilter" propertytype="System.String" />
+        <property name="RowStateFilter" propertytype="System.Data.DataViewRowState" />
+        <property name="RowViewCache" propertytype="System.Data.DataRowView[]" />
+        <property name="Sort" propertytype="System.String" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="Item" propertytype="System.Data.DataRowView" />
+        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="ColumnCollectionChanged(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="UpdateIndex(System.Boolean)" argnames="force" returntype="System.Void" />
+        <method name="OnListChanged(System.ComponentModel.ListChangedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="IndexListChanged(System.Object, System.ComponentModel.ListChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="AddNew" argnames="" returntype="System.Data.DataRowView" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Delete(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Find(System.Object)" argnames="key" returntype="System.Int32" />
+        <method name="Find(System.Object[])" argnames="key" returntype="System.Int32" />
+        <method name="FindRows(System.Object)" argnames="key" returntype="System.Data.DataRowView[]" />
+        <method name="FindRows(System.Object[])" argnames="key" returntype="System.Data.DataRowView[]" />
+        <method name="Open" argnames="" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="UpdateIndex" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ListChanged" />
+        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
+    </class>
+    <class name="DataViewManager" namespace="System.Data">
+        <constructor name="DataViewManager" argnames="" />
+        <constructor name="DataViewManager(System.Data.DataSet)" argnames="dataSet" />
+        <property name="DataSet" propertytype="System.Data.DataSet" />
+        <property name="DataViewSettings" propertytype="System.Data.DataViewSettingCollection" />
+        <property name="DataViewSettingCollectionString" propertytype="System.String" />
+        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
+        <method name="RelationCollectionChanged(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="TableCollectionChanged(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="OnListChanged(System.ComponentModel.ListChangedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
+        <method name="CreateDataView(System.Data.DataTable)" argnames="table" returntype="System.Data.DataView" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ListChanged" />
+        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
+    </class>
+    <class name="DataViewSetting" namespace="System.Data">
+        <property name="ApplyDefaultSort" propertytype="System.Boolean" />
+        <property name="DataViewManager" propertytype="System.Data.DataViewManager" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="RowFilter" propertytype="System.String" />
+        <property name="RowStateFilter" propertytype="System.Data.DataViewRowState" />
+        <property name="Sort" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataViewSettingCollection" namespace="System.Data">
+        <property name="Item" propertytype="System.Data.DataViewSetting" />
+        <property name="Item" propertytype="System.Data.DataViewSetting" />
+        <property name="Item" propertytype="System.Data.DataViewSetting" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ForeignKeyConstraint" namespace="System.Data">
+        <constructor name="ForeignKeyConstraint(System.Data.DataColumn, System.Data.DataColumn)" argnames="parentColumn, childColumn" />
+        <constructor name="ForeignKeyConstraint(System.String, System.Data.DataColumn, System.Data.DataColumn)" argnames="constraintName, parentColumn, childColumn" />
+        <constructor name="ForeignKeyConstraint(System.Data.DataColumn[], System.Data.DataColumn[])" argnames="parentColumns, childColumns" />
+        <constructor name="ForeignKeyConstraint(System.String, System.Data.DataColumn[], System.Data.DataColumn[])" argnames="constraintName, parentColumns, childColumns" />
+        <constructor name="ForeignKeyConstraint(System.String, System.String, System.String[], System.String[], System.Data.AcceptRejectRule, System.Data.Rule, System.Data.Rule)" argnames="constraintName, parentTableName, parentColumnNames, childColumnNames, acceptRejectRule, deleteRule, updateRule" />
+        <property name="ChildKey" propertytype="System.Data.DataKey" />
+        <property name="Columns" propertytype="System.Data.DataColumn[]" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="ParentColumnNames" propertytype="System.String[]" />
+        <property name="ChildColumnNames" propertytype="System.String[]" />
+        <property name="AcceptRejectRule" propertytype="System.Data.AcceptRejectRule" />
+        <property name="DeleteRule" propertytype="System.Data.Rule" />
+        <property name="RelatedColumns" propertytype="System.Data.DataColumn[]" />
+        <property name="ParentKey" propertytype="System.Data.DataKey" />
+        <property name="RelatedTable" propertytype="System.Data.DataTable" />
+        <property name="UpdateRule" propertytype="System.Data.Rule" />
+        <property name="ConstraintName" inherited="System.Data.Constraint" propertytype="System.String" />
+        <property name="ExtendedProperties" inherited="System.Data.Constraint" propertytype="System.Data.PropertyCollection" />
+        <property name="_DataSet" inherited="System.Data.Constraint" propertytype="System.Data.DataSet" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Data.Constraint" returntype="System.String" />
+        <method name="CheckStateForProperty" argnames="" inherited="System.Data.Constraint" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MergeFailedEventArgs" namespace="System.Data">
+        <constructor name="MergeFailedEventArgs(System.Data.DataTable, System.String)" argnames="table, conflict" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="Conflict" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyCollection" namespace="System.Data">
+        <constructor name="PropertyCollection" argnames="" />
+        <property name="hcp" inherited="System.Collections.Hashtable" propertytype="System.Collections.IHashCodeProvider" />
+        <property name="comparer" inherited="System.Collections.Hashtable" propertytype="System.Collections.IComparer" />
+        <property name="Item" inherited="System.Collections.Hashtable" propertytype="System.Object" />
+        <property name="IsReadOnly" inherited="System.Collections.Hashtable" propertytype="System.Boolean" />
+        <property name="IsFixedSize" inherited="System.Collections.Hashtable" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Collections.Hashtable" propertytype="System.Boolean" />
+        <property name="Keys" inherited="System.Collections.Hashtable" propertytype="System.Collections.ICollection" />
+        <property name="Values" inherited="System.Collections.Hashtable" propertytype="System.Collections.ICollection" />
+        <property name="SyncRoot" inherited="System.Collections.Hashtable" propertytype="System.Object" />
+        <property name="Count" inherited="System.Collections.Hashtable" propertytype="System.Int32" />
+        <method name="Clone" argnames="" inherited="System.Collections.Hashtable" returntype="System.Object" />
+        <method name="OnDeserialization(System.Object)" argnames="sender" inherited="System.Collections.Hashtable" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Collections.Hashtable" returntype="System.Void" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" inherited="System.Collections.Hashtable" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.Hashtable" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Collections.Hashtable" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.Hashtable" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
+        <method name="KeyEquals(System.Object, System.Object)" argnames="item, key" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
+        <method name="GetHash(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Int32" />
+        <method name="ContainsValue(System.Object)" argnames="value" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
+        <method name="ContainsKey(System.Object)" argnames="key" inherited="System.Collections.Hashtable" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UniqueConstraint" namespace="System.Data">
+        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn)" argnames="name, column" />
+        <constructor name="UniqueConstraint(System.Data.DataColumn)" argnames="column" />
+        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn[])" argnames="name, columns" />
+        <constructor name="UniqueConstraint(System.Data.DataColumn[])" argnames="columns" />
+        <constructor name="UniqueConstraint(System.String, System.String[], System.Boolean)" argnames="name, columnNames, isPrimaryKey" />
+        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn, System.Boolean)" argnames="name, column, isPrimaryKey" />
+        <constructor name="UniqueConstraint(System.Data.DataColumn, System.Boolean)" argnames="column, isPrimaryKey" />
+        <constructor name="UniqueConstraint(System.String, System.Data.DataColumn[], System.Boolean)" argnames="name, columns, isPrimaryKey" />
+        <constructor name="UniqueConstraint(System.Data.DataColumn[], System.Boolean)" argnames="columns, isPrimaryKey" />
+        <property name="ColumnNames" propertytype="System.String[]" />
+        <property name="Columns" propertytype="System.Data.DataColumn[]" />
+        <property name="IsPrimaryKey" propertytype="System.Boolean" />
+        <property name="InCollection" propertytype="System.Boolean" />
+        <property name="Key" propertytype="System.Data.DataKey" />
+        <property name="Table" propertytype="System.Data.DataTable" />
+        <property name="ConstraintName" inherited="System.Data.Constraint" propertytype="System.String" />
+        <property name="ExtendedProperties" inherited="System.Data.Constraint" propertytype="System.Data.PropertyCollection" />
+        <property name="_DataSet" inherited="System.Data.Constraint" propertytype="System.Data.DataSet" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="key2" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Data.Constraint" returntype="System.String" />
+        <method name="CheckStateForProperty" argnames="" inherited="System.Data.Constraint" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DBConcurrencyException" namespace="System.Data">
+        <constructor name="DBConcurrencyException(System.String)" argnames="message" />
+        <constructor name="DBConcurrencyException(System.String, System.Exception)" argnames="message, inner" />
+        <property name="Row" propertytype="System.Data.DataRow" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FillErrorEventArgs" namespace="System.Data">
+        <constructor name="FillErrorEventArgs(System.Data.DataTable, System.Object[])" argnames="dataTable, values" />
+        <property name="Continue" propertytype="System.Boolean" />
+        <property name="DataTable" propertytype="System.Data.DataTable" />
+        <property name="Errors" propertytype="System.Exception" />
+        <property name="Values" propertytype="System.Object[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StateChangeEventArgs" namespace="System.Data">
+        <constructor name="StateChangeEventArgs(System.Data.ConnectionState, System.Data.ConnectionState)" argnames="originalState, currentState" />
+        <property name="CurrentState" propertytype="System.Data.ConnectionState" />
+        <property name="OriginalState" propertytype="System.Data.ConnectionState" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataTable" namespace="System.Data">
+        <constructor name="DataTable" argnames="" />
+        <constructor name="DataTable(System.String)" argnames="tableName" />
+        <constructor name="DataTable(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="LiveIndexes" propertytype="System.Collections.ArrayList" />
+        <property name="CaseSensitive" propertytype="System.Boolean" />
+        <property name="ChildRelations" propertytype="System.Data.DataRelationCollection" />
+        <property name="Columns" propertytype="System.Data.DataColumnCollection" />
+        <property name="Constraints" propertytype="System.Data.ConstraintCollection" />
+        <property name="DataSet" propertytype="System.Data.DataSet" />
+        <property name="DefaultView" propertytype="System.Data.DataView" />
+        <property name="DisplayExpression" propertytype="System.String" />
+        <property name="EnforceConstraints" propertytype="System.Boolean" />
+        <property name="ExtendedProperties" propertytype="System.Data.PropertyCollection" />
+        <property name="HasErrors" propertytype="System.Boolean" />
+        <property name="Locale" propertytype="System.Globalization.CultureInfo" />
+        <property name="MinimumCapacity" propertytype="System.Int32" />
+        <property name="RecordCapacity" propertytype="System.Int32" />
+        <property name="ElementColumnCount" propertytype="System.Int32" />
+        <property name="ParentRelations" propertytype="System.Data.DataRelationCollection" />
+        <property name="MergingData" propertytype="System.Boolean" />
+        <property name="nestedParentRelation" propertytype="System.Data.DataRelation" />
+        <property name="SchemaLoading" propertytype="System.Boolean" />
+        <property name="PrimaryKey" propertytype="System.Data.DataColumn[]" />
+        <property name="Rows" propertytype="System.Data.DataRowCollection" />
+        <property name="TableName" propertytype="System.String" />
+        <property name="EncodedTableName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="XmlText" propertytype="System.Data.DataColumn" />
+        <property name="MaxOccurs" propertytype="System.Decimal" />
+        <property name="MinOccurs" propertytype="System.Decimal" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OnRowDeleted(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnRowDeleting(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnRowChanging(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnRowChanged(System.Data.DataRowChangeEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnColumnChanged(System.Data.DataColumnChangeEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnColumnChanging(System.Data.DataColumnChangeEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="GetRowType" argnames="" returntype="System.Type" />
+        <method name="NewRowFromBuilder(System.Data.DataRowBuilder)" argnames="builder" returntype="System.Data.DataRow" />
+        <method name="Clone" argnames="" returntype="System.Data.DataTable" />
+        <method name="CreateInstance" argnames="" returntype="System.Data.DataTable" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="AcceptChanges" argnames="" returntype="System.Void" />
+        <method name="Copy" argnames="" returntype="System.Data.DataTable" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Compute(System.String, System.String)" argnames="expression, filter" returntype="System.Object" />
+        <method name="GetChanges" argnames="" returntype="System.Data.DataTable" />
+        <method name="GetChanges(System.Data.DataRowState)" argnames="rowStates" returntype="System.Data.DataTable" />
+        <method name="GetErrors" argnames="" returntype="System.Data.DataRow[]" />
+        <method name="ImportRow(System.Data.DataRow)" argnames="row" returntype="System.Void" />
+        <method name="NewRow" argnames="" returntype="System.Data.DataRow" />
+        <method name="RejectChanges" argnames="" returntype="System.Void" />
+        <method name="Select" argnames="" returntype="System.Data.DataRow[]" />
+        <method name="Select(System.String)" argnames="filterExpression" returntype="System.Data.DataRow[]" />
+        <method name="Select(System.String, System.String)" argnames="filterExpression, sort" returntype="System.Data.DataRow[]" />
+        <method name="Select(System.String, System.String, System.Data.DataViewRowState)" argnames="filterExpression, sort, recordStates" returntype="System.Data.DataRow[]" />
+        <method name="BeginLoadData" argnames="" returntype="System.Void" />
+        <method name="EndLoadData" argnames="" returntype="System.Void" />
+        <method name="LoadDataRow(System.Object[], System.Boolean)" argnames="values, fAcceptChanges" returntype="System.Data.DataRow" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ColumnChanging" />
+        <event name="ColumnChanged" />
+        <event name="RowChanged" />
+        <event name="RowChanging" />
+        <event name="RowDeleting" />
+        <event name="RowDeleted" />
+        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
+    </class>
+    <class name="InvalidExpressionException" namespace="System.Data">
+        <constructor name="InvalidExpressionException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="InvalidExpressionException" argnames="" />
+        <constructor name="InvalidExpressionException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EvaluateException" namespace="System.Data">
+        <constructor name="EvaluateException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="EvaluateException" argnames="" />
+        <constructor name="EvaluateException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SyntaxErrorException" namespace="System.Data">
+        <constructor name="SyntaxErrorException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="SyntaxErrorException" argnames="" />
+        <constructor name="SyntaxErrorException(System.String)" argnames="s" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StrongTypingException" namespace="System.Data">
+        <constructor name="StrongTypingException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="StrongTypingException" argnames="" />
+        <constructor name="StrongTypingException(System.String, System.Exception)" argnames="s, innerException" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TypedDataSetGeneratorException" namespace="System.Data">
+        <constructor name="TypedDataSetGeneratorException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="TypedDataSetGeneratorException" argnames="" />
+        <constructor name="TypedDataSetGeneratorException(System.Collections.ArrayList)" argnames="list" />
+        <property name="ErrorList" propertytype="System.Collections.ArrayList" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TypedDataSetGenerator" namespace="System.Data">
+        <constructor name="TypedDataSetGenerator" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Generate(System.Data.DataSet, System.CodeDom.CodeNamespace, System.CodeDom.Compiler.ICodeGenerator)" argnames="dataSet, codeNamespace, codeGen" returntype="System.Void" />
+        <method name="GenerateIdName(System.String, System.CodeDom.Compiler.ICodeGenerator)" argnames="name, codeGen" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IColumnMapping" namespace="System.Data">
+        <property name="DataSetColumn" propertytype="System.String" />
+        <property name="SourceColumn" propertytype="System.String" />
+    </interface>
+    <interface name="IColumnMappingCollection" namespace="System.Data">
+        <property name="Item" propertytype="System.Object" />
+        <method name="RemoveAt(System.String)" argnames="sourceColumnName" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="sourceColumnName" returntype="System.Int32" />
+        <method name="GetByDataSetColumn(System.String)" argnames="dataSetColumnName" returntype="System.Data.IColumnMapping" />
+        <method name="Contains(System.String)" argnames="sourceColumnName" returntype="System.Boolean" />
+        <method name="Add(System.String, System.String)" argnames="sourceColumnName, dataSetColumnName" returntype="System.Data.IColumnMapping" />
+    </interface>
+    <interface name="IDataParameter" namespace="System.Data">
+        <property name="DbType" propertytype="System.Data.DbType" />
+        <property name="Direction" propertytype="System.Data.ParameterDirection" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="ParameterName" propertytype="System.String" />
+        <property name="SourceColumn" propertytype="System.String" />
+        <property name="SourceVersion" propertytype="System.Data.DataRowVersion" />
+        <property name="Value" propertytype="System.Object" />
+    </interface>
+    <interface name="IDataParameterCollection" namespace="System.Data">
+        <property name="Item" propertytype="System.Object" />
+        <method name="RemoveAt(System.String)" argnames="parameterName" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="parameterName" returntype="System.Int32" />
+        <method name="Contains(System.String)" argnames="parameterName" returntype="System.Boolean" />
+    </interface>
+    <interface name="IDataRecord" namespace="System.Data">
+        <property name="FieldCount" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="IsDBNull(System.Int32)" argnames="i" returntype="System.Boolean" />
+        <method name="GetData(System.Int32)" argnames="i" returntype="System.Data.IDataReader" />
+        <method name="GetDateTime(System.Int32)" argnames="i" returntype="System.DateTime" />
+        <method name="GetDecimal(System.Int32)" argnames="i" returntype="System.Decimal" />
+        <method name="GetString(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetDouble(System.Int32)" argnames="i" returntype="System.Double" />
+        <method name="GetFloat(System.Int32)" argnames="i" returntype="System.Single" />
+        <method name="GetInt64(System.Int32)" argnames="i" returntype="System.Int64" />
+        <method name="GetInt32(System.Int32)" argnames="i" returntype="System.Int32" />
+        <method name="GetInt16(System.Int32)" argnames="i" returntype="System.Int16" />
+        <method name="GetGuid(System.Int32)" argnames="i" returntype="System.Guid" />
+        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="i, fieldoffset, buffer, bufferoffset, length" returntype="System.Int64" />
+        <method name="GetChar(System.Int32)" argnames="i" returntype="System.Char" />
+        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="i, fieldOffset, buffer, bufferoffset, length" returntype="System.Int64" />
+        <method name="GetByte(System.Int32)" argnames="i" returntype="System.Byte" />
+        <method name="GetBoolean(System.Int32)" argnames="i" returntype="System.Boolean" />
+        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
+        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
+        <method name="GetValue(System.Int32)" argnames="i" returntype="System.Object" />
+        <method name="GetFieldType(System.Int32)" argnames="i" returntype="System.Type" />
+        <method name="GetDataTypeName(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetName(System.Int32)" argnames="i" returntype="System.String" />
+    </interface>
+    <interface name="IDataReader" namespace="System.Data">
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="IsClosed" propertytype="System.Boolean" />
+        <property name="RecordsAffected" propertytype="System.Int32" />
+        <method name="GetSchemaTable" argnames="" returntype="System.Data.DataTable" />
+        <method name="Read" argnames="" returntype="System.Boolean" />
+        <method name="NextResult" argnames="" returntype="System.Boolean" />
+        <method name="Close" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IDataAdapter" namespace="System.Data">
+        <property name="MissingMappingAction" propertytype="System.Data.MissingMappingAction" />
+        <property name="MissingSchemaAction" propertytype="System.Data.MissingSchemaAction" />
+        <property name="TableMappings" propertytype="System.Data.ITableMappingCollection" />
+        <method name="Update(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
+        <method name="GetFillParameters" argnames="" returntype="System.Data.IDataParameter[]" />
+        <method name="Fill(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" returntype="System.Data.DataTable[]" />
+    </interface>
+    <interface name="IDbCommand" namespace="System.Data">
+        <property name="Connection" propertytype="System.Data.IDbConnection" />
+        <property name="Transaction" propertytype="System.Data.IDbTransaction" />
+        <property name="CommandText" propertytype="System.String" />
+        <property name="CommandTimeout" propertytype="System.Int32" />
+        <property name="CommandType" propertytype="System.Data.CommandType" />
+        <property name="Parameters" propertytype="System.Data.IDataParameterCollection" />
+        <property name="UpdatedRowSource" propertytype="System.Data.UpdateRowSource" />
+        <method name="ExecuteScalar" argnames="" returntype="System.Object" />
+        <method name="ExecuteReader(System.Data.CommandBehavior)" argnames="behavior" returntype="System.Data.IDataReader" />
+        <method name="ExecuteReader" argnames="" returntype="System.Data.IDataReader" />
+        <method name="ExecuteNonQuery" argnames="" returntype="System.Int32" />
+        <method name="CreateParameter" argnames="" returntype="System.Data.IDbDataParameter" />
+        <method name="Cancel" argnames="" returntype="System.Void" />
+        <method name="Prepare" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IDbConnection" namespace="System.Data">
+        <property name="ConnectionString" propertytype="System.String" />
+        <property name="ConnectionTimeout" propertytype="System.Int32" />
+        <property name="Database" propertytype="System.String" />
+        <property name="State" propertytype="System.Data.ConnectionState" />
+        <method name="Open" argnames="" returntype="System.Void" />
+        <method name="CreateCommand" argnames="" returntype="System.Data.IDbCommand" />
+        <method name="ChangeDatabase(System.String)" argnames="databaseName" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="BeginTransaction(System.Data.IsolationLevel)" argnames="il" returntype="System.Data.IDbTransaction" />
+        <method name="BeginTransaction" argnames="" returntype="System.Data.IDbTransaction" />
+    </interface>
+    <interface name="IDbDataAdapter" namespace="System.Data">
+        <property name="SelectCommand" propertytype="System.Data.IDbCommand" />
+        <property name="InsertCommand" propertytype="System.Data.IDbCommand" />
+        <property name="UpdateCommand" propertytype="System.Data.IDbCommand" />
+        <property name="DeleteCommand" propertytype="System.Data.IDbCommand" />
+    </interface>
+    <interface name="IDbDataParameter" namespace="System.Data">
+        <property name="Precision" propertytype="System.Byte" />
+        <property name="Scale" propertytype="System.Byte" />
+        <property name="Size" propertytype="System.Int32" />
+    </interface>
+    <interface name="IDbTransaction" namespace="System.Data">
+        <property name="Connection" propertytype="System.Data.IDbConnection" />
+        <property name="IsolationLevel" propertytype="System.Data.IsolationLevel" />
+        <method name="Rollback" argnames="" returntype="System.Void" />
+        <method name="Commit" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="ITableMapping" namespace="System.Data">
+        <property name="ColumnMappings" propertytype="System.Data.IColumnMappingCollection" />
+        <property name="DataSetTable" propertytype="System.String" />
+        <property name="SourceTable" propertytype="System.String" />
+    </interface>
+    <interface name="ITableMappingCollection" namespace="System.Data">
+        <property name="Item" propertytype="System.Object" />
+        <method name="RemoveAt(System.String)" argnames="sourceTableName" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="sourceTableName" returntype="System.Int32" />
+        <method name="GetByDataSetTable(System.String)" argnames="dataSetTableName" returntype="System.Data.ITableMapping" />
+        <method name="Contains(System.String)" argnames="sourceTableName" returntype="System.Boolean" />
+        <method name="Add(System.String, System.String)" argnames="sourceTableName, dataSetTableName" returntype="System.Data.ITableMapping" />
+    </interface>
+    <delegate name="DataColumnChangeEventHandler" namespace="System.Data">
+        <constructor name="DataColumnChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.DataColumnChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.DataColumnChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DataRowChangeEventHandler" namespace="System.Data">
+        <constructor name="DataRowChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.DataRowChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.DataRowChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="FillErrorEventHandler" namespace="System.Data">
+        <constructor name="FillErrorEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.FillErrorEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.FillErrorEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="MergeFailedEventHandler" namespace="System.Data">
+        <constructor name="MergeFailedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.MergeFailedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.MergeFailedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="StateChangeEventHandler" namespace="System.Data">
+        <constructor name="StateChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.StateChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.StateChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="AcceptRejectRule" namespace="System.Data">
+        <field name="None" />
+        <field name="Cascade" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CommandBehavior" namespace="System.Data">
+        <field name="Default" />
+        <field name="SingleResult" />
+        <field name="SchemaOnly" />
+        <field name="KeyInfo" />
+        <field name="SingleRow" />
+        <field name="SequentialAccess" />
+        <field name="CloseConnection" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CommandType" namespace="System.Data">
+        <field name="Text" />
+        <field name="StoredProcedure" />
+        <field name="TableDirect" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ConnectionState" namespace="System.Data">
+        <field name="Closed" />
+        <field name="Open" />
+        <field name="Connecting" />
+        <field name="Executing" />
+        <field name="Fetching" />
+        <field name="Broken" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DataRowAction" namespace="System.Data">
+        <field name="Nothing" />
+        <field name="Delete" />
+        <field name="Change" />
+        <field name="Rollback" />
+        <field name="Commit" />
+        <field name="Add" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DataRowState" namespace="System.Data">
+        <field name="Detached" />
+        <field name="Unchanged" />
+        <field name="Added" />
+        <field name="Deleted" />
+        <field name="Modified" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DataRowVersion" namespace="System.Data">
+        <field name="Original" />
+        <field name="Current" />
+        <field name="Proposed" />
+        <field name="Default" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DataViewRowState" namespace="System.Data">
+        <field name="None" />
+        <field name="Unchanged" />
+        <field name="Added" />
+        <field name="Deleted" />
+        <field name="ModifiedCurrent" />
+        <field name="ModifiedOriginal" />
+        <field name="OriginalRows" />
+        <field name="CurrentRows" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DbType" namespace="System.Data">
+        <field name="AnsiString" />
+        <field name="Binary" />
+        <field name="Byte" />
+        <field name="Boolean" />
+        <field name="Currency" />
+        <field name="Date" />
+        <field name="DateTime" />
+        <field name="Decimal" />
+        <field name="Double" />
+        <field name="Guid" />
+        <field name="Int16" />
+        <field name="Int32" />
+        <field name="Int64" />
+        <field name="Object" />
+        <field name="SByte" />
+        <field name="Single" />
+        <field name="String" />
+        <field name="Time" />
+        <field name="UInt16" />
+        <field name="UInt32" />
+        <field name="UInt64" />
+        <field name="VarNumeric" />
+        <field name="AnsiStringFixedLength" />
+        <field name="StringFixedLength" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="IsolationLevel" namespace="System.Data">
+        <field name="Unspecified" />
+        <field name="Chaos" />
+        <field name="ReadUncommitted" />
+        <field name="ReadCommitted" />
+        <field name="RepeatableRead" />
+        <field name="Serializable" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MappingType" namespace="System.Data">
+        <field name="Element" />
+        <field name="Attribute" />
+        <field name="SimpleContent" />
+        <field name="Hidden" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MissingMappingAction" namespace="System.Data">
+        <field name="Passthrough" />
+        <field name="Ignore" />
+        <field name="Error" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MissingSchemaAction" namespace="System.Data">
+        <field name="Add" />
+        <field name="Ignore" />
+        <field name="Error" />
+        <field name="AddWithKey" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ParameterDirection" namespace="System.Data">
+        <field name="Input" />
+        <field name="Output" />
+        <field name="InputOutput" />
+        <field name="ReturnValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PropertyAttributes" namespace="System.Data">
+        <field name="NotSupported" />
+        <field name="Required" />
+        <field name="Optional" />
+        <field name="Read" />
+        <field name="Write" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Rule" namespace="System.Data">
+        <field name="None" />
+        <field name="Cascade" />
+        <field name="SetNull" />
+        <field name="SetDefault" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SchemaType" namespace="System.Data">
+        <field name="Source" />
+        <field name="Mapped" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SqlDbType" namespace="System.Data">
+        <field name="BigInt" />
+        <field name="Binary" />
+        <field name="Bit" />
+        <field name="Char" />
+        <field name="DateTime" />
+        <field name="Decimal" />
+        <field name="Float" />
+        <field name="Image" />
+        <field name="Int" />
+        <field name="Money" />
+        <field name="NChar" />
+        <field name="NText" />
+        <field name="NVarChar" />
+        <field name="Real" />
+        <field name="UniqueIdentifier" />
+        <field name="SmallDateTime" />
+        <field name="SmallInt" />
+        <field name="SmallMoney" />
+        <field name="Text" />
+        <field name="Timestamp" />
+        <field name="TinyInt" />
+        <field name="VarBinary" />
+        <field name="VarChar" />
+        <field name="Variant" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StatementType" namespace="System.Data">
+        <field name="Select" />
+        <field name="Insert" />
+        <field name="Update" />
+        <field name="Delete" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="UpdateRowSource" namespace="System.Data">
+        <field name="None" />
+        <field name="OutputParameters" />
+        <field name="FirstReturnedRecord" />
+        <field name="Both" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="UpdateStatus" namespace="System.Data">
+        <field name="Continue" />
+        <field name="ErrorsOccurred" />
+        <field name="SkipCurrentRow" />
+        <field name="SkipAllRemainingRows" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlReadMode" namespace="System.Data">
+        <field name="Auto" />
+        <field name="ReadSchema" />
+        <field name="IgnoreSchema" />
+        <field name="InferSchema" />
+        <field name="DiffGram" />
+        <field name="Fragment" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlWriteMode" namespace="System.Data">
+        <field name="WriteSchema" />
+        <field name="IgnoreSchema" />
+        <field name="DiffGram" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="DataAdapter" namespace="System.Data.Common">
+        <constructor name="DataAdapter" argnames="" />
+        <property name="AcceptChangesDuringFill" propertytype="System.Boolean" />
+        <property name="ContinueUpdateOnError" propertytype="System.Boolean" />
+        <property name="MissingMappingAction" propertytype="System.Data.MissingMappingAction" />
+        <property name="MissingSchemaAction" propertytype="System.Data.MissingSchemaAction" />
+        <property name="TableMappings" propertytype="System.Data.Common.DataTableMappingCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Update(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
+        <method name="GetFillParameters" argnames="" returntype="System.Data.IDataParameter[]" />
+        <method name="Fill(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" returntype="System.Data.DataTable[]" />
+        <method name="CreateTableMappings" argnames="" returntype="System.Data.Common.DataTableMappingCollection" />
+        <method name="CloneInternals" argnames="" returntype="System.Data.Common.DataAdapter" />
+        <method name="ShouldSerializeTableMappings" argnames="" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DataColumnMapping" namespace="System.Data.Common">
+        <constructor name="DataColumnMapping" argnames="" />
+        <constructor name="DataColumnMapping(System.String, System.String)" argnames="sourceColumn, dataSetColumn" />
+        <property name="DataSetColumn" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Data.Common.DataColumnMappingCollection" />
+        <property name="SourceColumn" propertytype="System.String" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetDataColumnBySchemaAction(System.Data.DataTable, System.Type, System.Data.MissingSchemaAction)" argnames="dataTable, dataType, schemaAction" returntype="System.Data.DataColumn" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataColumnMappingCollection" namespace="System.Data.Common">
+        <constructor name="DataColumnMappingCollection" argnames="" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="ItemType" propertytype="System.Type" />
+        <property name="Item" propertytype="System.Data.Common.DataColumnMapping" />
+        <property name="Item" propertytype="System.Data.Common.DataColumnMapping" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="RemoveAt(System.String)" argnames="sourceColumn" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="sourceColumn" returntype="System.Int32" />
+        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.String, System.String)" argnames="sourceColumn, dataSetColumn" returntype="System.Data.Common.DataColumnMapping" />
+        <method name="AddRange(System.Data.Common.DataColumnMapping[])" argnames="values" returntype="System.Void" />
+        <method name="GetByDataSetColumn(System.String)" argnames="value" returntype="System.Data.Common.DataColumnMapping" />
+        <method name="IndexOfDataSetColumn(System.String)" argnames="dataSetColumn" returntype="System.Int32" />
+        <method name="GetColumnMappingBySchemaAction(System.Data.Common.DataColumnMappingCollection, System.String, System.Data.MissingMappingAction)" argnames="columnMappings, sourceColumn, mappingAction" returntype="System.Data.Common.DataColumnMapping" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataTableMapping" namespace="System.Data.Common">
+        <constructor name="DataTableMapping" argnames="" />
+        <constructor name="DataTableMapping(System.String, System.String)" argnames="sourceTable, dataSetTable" />
+        <constructor name="DataTableMapping(System.String, System.String, System.Data.Common.DataColumnMapping[])" argnames="sourceTable, dataSetTable, columnMappings" />
+        <property name="ColumnMappings" propertytype="System.Data.Common.DataColumnMappingCollection" />
+        <property name="DataSetTable" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Data.Common.DataTableMappingCollection" />
+        <property name="SourceTable" propertytype="System.String" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetColumnMappingBySchemaAction(System.String, System.Data.MissingMappingAction)" argnames="sourceColumn, mappingAction" returntype="System.Data.Common.DataColumnMapping" />
+        <method name="GetDataTableBySchemaAction(System.Data.DataSet, System.Data.MissingSchemaAction)" argnames="dataSet, schemaAction" returntype="System.Data.DataTable" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataTableMappingCollection" namespace="System.Data.Common">
+        <constructor name="DataTableMappingCollection" argnames="" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="ItemType" propertytype="System.Type" />
+        <property name="Item" propertytype="System.Data.Common.DataTableMapping" />
+        <property name="Item" propertytype="System.Data.Common.DataTableMapping" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="RemoveAt(System.String)" argnames="sourceTable" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="sourceTable" returntype="System.Int32" />
+        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddRange(System.Data.Common.DataTableMapping[])" argnames="values" returntype="System.Void" />
+        <method name="Add(System.String, System.String)" argnames="sourceTable, dataSetTable" returntype="System.Data.Common.DataTableMapping" />
+        <method name="GetByDataSetTable(System.String)" argnames="dataSetTable" returntype="System.Data.Common.DataTableMapping" />
+        <method name="IndexOfDataSetTable(System.String)" argnames="dataSetTable" returntype="System.Int32" />
+        <method name="GetTableMappingBySchemaAction(System.Data.Common.DataTableMappingCollection, System.String, System.String, System.Data.MissingMappingAction)" argnames="tableMappings, sourceTable, dataSetTable, mappingAction" returntype="System.Data.Common.DataTableMapping" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DbDataAdapter" namespace="System.Data.Common">
+        <constructor name="DbDataAdapter" argnames="" />
+        <field name="DefaultSourceTableName" />
+        <property name="DeleteCommand" propertytype="System.Data.IDbCommand" />
+        <property name="InsertCommand" propertytype="System.Data.IDbCommand" />
+        <property name="SelectCommand" propertytype="System.Data.IDbCommand" />
+        <property name="UpdateCommand" propertytype="System.Data.IDbCommand" />
+        <property name="UpdateMappingAction" propertytype="System.Data.MissingMappingAction" />
+        <property name="UpdateSchemaAction" propertytype="System.Data.MissingSchemaAction" />
+        <property name="AcceptChangesDuringFill" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
+        <property name="ContinueUpdateOnError" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
+        <property name="MissingMappingAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingMappingAction" />
+        <property name="MissingSchemaAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingSchemaAction" />
+        <property name="TableMappings" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.Common.DataTableMappingCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Update(System.Data.DataRow[], System.Data.Common.DataTableMapping)" argnames="dataRows, tableMapping" returntype="System.Int32" />
+        <method name="OnRowUpdating(System.Data.Common.RowUpdatingEventArgs)" argnames="value" returntype="System.Void" />
+        <method name="OnRowUpdated(System.Data.Common.RowUpdatedEventArgs)" argnames="value" returntype="System.Void" />
+        <method name="OnFillError(System.Data.FillErrorEventArgs)" argnames="value" returntype="System.Void" />
+        <method name="Fill(System.Data.DataTable, System.Data.IDataReader)" argnames="dataTable, dataReader" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.String, System.Data.IDataReader, System.Int32, System.Int32)" argnames="dataSet, srcTable, dataReader, startRecord, maxRecords" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataTable, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, command, behavior" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataSet, startRecord, maxRecords, srcTable, command, behavior" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, schemaType, command, behavior" returntype="System.Data.DataTable" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.Data.IDbCommand, System.String, System.Data.CommandBehavior)" argnames="dataSet, schemaType, command, srcTable, behavior" returntype="System.Data.DataTable[]" />
+        <method name="CreateRowUpdatingEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatingEventArgs" />
+        <method name="CreateRowUpdatedEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatedEventArgs" />
+        <method name="Update(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
+        <method name="GetFillParameters" argnames="" returntype="System.Data.IDataParameter[]" />
+        <method name="Fill(System.Data.DataSet)" argnames="dataSet" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" returntype="System.Data.DataTable[]" />
+        <method name="CreateTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataTableMappingCollection" />
+        <method name="CloneInternals" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataAdapter" />
+        <method name="ShouldSerializeTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType)" argnames="dataTable, schemaType" returntype="System.Data.DataTable" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.String)" argnames="dataSet, schemaType, srcTable" returntype="System.Data.DataTable[]" />
+        <method name="Fill(System.Data.DataTable)" argnames="dataTable" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String)" argnames="dataSet, startRecord, maxRecords, srcTable" returntype="System.Int32" />
+        <method name="Update(System.Data.DataRow[])" argnames="dataRows" returntype="System.Int32" />
+        <method name="Update(System.Data.DataTable)" argnames="dataTable" returntype="System.Int32" />
+        <method name="Update(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="FillError" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DbDataRecord" namespace="System.Data.Common">
+        <property name="FieldCount" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="IsDBNull(System.Int32)" argnames="i" returntype="System.Boolean" />
+        <method name="GetData(System.Int32)" argnames="i" returntype="System.Data.IDataReader" />
+        <method name="GetDateTime(System.Int32)" argnames="i" returntype="System.DateTime" />
+        <method name="GetDecimal(System.Int32)" argnames="i" returntype="System.Decimal" />
+        <method name="GetString(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetDouble(System.Int32)" argnames="i" returntype="System.Double" />
+        <method name="GetFloat(System.Int32)" argnames="i" returntype="System.Single" />
+        <method name="GetInt64(System.Int32)" argnames="i" returntype="System.Int64" />
+        <method name="GetInt32(System.Int32)" argnames="i" returntype="System.Int32" />
+        <method name="GetInt16(System.Int32)" argnames="i" returntype="System.Int16" />
+        <method name="GetGuid(System.Int32)" argnames="i" returntype="System.Guid" />
+        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
+        <method name="GetChar(System.Int32)" argnames="i" returntype="System.Char" />
+        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
+        <method name="GetByte(System.Int32)" argnames="i" returntype="System.Byte" />
+        <method name="GetBoolean(System.Int32)" argnames="i" returntype="System.Boolean" />
+        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
+        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
+        <method name="GetValue(System.Int32)" argnames="i" returntype="System.Object" />
+        <method name="GetFieldType(System.Int32)" argnames="i" returntype="System.Type" />
+        <method name="GetDataTypeName(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetName(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DbEnumerator" namespace="System.Data.Common">
+        <constructor name="DbEnumerator(System.Data.IDataReader)" argnames="reader" />
+        <constructor name="DbEnumerator(System.Data.IDataReader, System.Boolean)" argnames="reader, closeReader" />
+        <property name="Current" propertytype="System.Object" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="MoveNext" argnames="" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RowUpdatedEventArgs" namespace="System.Data.Common">
+        <constructor name="RowUpdatedEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
+        <property name="Command" propertytype="System.Data.IDbCommand" />
+        <property name="StatementType" propertytype="System.Data.StatementType" />
+        <property name="Errors" propertytype="System.Exception" />
+        <property name="RecordsAffected" propertytype="System.Int32" />
+        <property name="Row" propertytype="System.Data.DataRow" />
+        <property name="Status" propertytype="System.Data.UpdateStatus" />
+        <property name="TableMapping" propertytype="System.Data.Common.DataTableMapping" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RowUpdatingEventArgs" namespace="System.Data.Common">
+        <constructor name="RowUpdatingEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
+        <property name="Command" propertytype="System.Data.IDbCommand" />
+        <property name="StatementType" propertytype="System.Data.StatementType" />
+        <property name="Errors" propertytype="System.Exception" />
+        <property name="Row" propertytype="System.Data.DataRow" />
+        <property name="Status" propertytype="System.Data.UpdateStatus" />
+        <property name="TableMapping" propertytype="System.Data.Common.DataTableMapping" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DBDataPermission" namespace="System.Data.Common">
+        <constructor name="DBDataPermission" argnames="" />
+        <constructor name="DBDataPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="DBDataPermission(System.Security.Permissions.PermissionState, System.Boolean)" argnames="state, allowBlankPassword" />
+        <property name="AllowBlankPassword" propertytype="System.Boolean" />
+        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
+        <method name="CreateInstance" argnames="" returntype="System.Data.Common.DBDataPermission" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
+        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DBDataPermissionAttribute" namespace="System.Data.Common">
+        <constructor name="DBDataPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="AllowBlankPassword" propertytype="System.Boolean" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" inherited="System.Security.Permissions.SecurityAttribute" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbDataReader" namespace="System.Data.OleDb">
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="FieldCount" propertytype="System.Int32" />
+        <property name="IsClosed" propertytype="System.Boolean" />
+        <property name="RecordsAffected" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="IsDBNull(System.Int32)" argnames="ordinal" returntype="System.Boolean" />
+        <method name="GetDateTime(System.Int32)" argnames="ordinal" returntype="System.DateTime" />
+        <method name="GetDecimal(System.Int32)" argnames="ordinal" returntype="System.Decimal" />
+        <method name="GetString(System.Int32)" argnames="ordinal" returntype="System.String" />
+        <method name="GetDouble(System.Int32)" argnames="ordinal" returntype="System.Double" />
+        <method name="GetFloat(System.Int32)" argnames="ordinal" returntype="System.Single" />
+        <method name="GetInt64(System.Int32)" argnames="ordinal" returntype="System.Int64" />
+        <method name="GetInt32(System.Int32)" argnames="ordinal" returntype="System.Int32" />
+        <method name="GetInt16(System.Int32)" argnames="ordinal" returntype="System.Int16" />
+        <method name="GetGuid(System.Int32)" argnames="ordinal" returntype="System.Guid" />
+        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="ordinal, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
+        <method name="GetChar(System.Int32)" argnames="ordinal" returntype="System.Char" />
+        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="ordinal, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
+        <method name="GetByte(System.Int32)" argnames="ordinal" returntype="System.Byte" />
+        <method name="GetBoolean(System.Int32)" argnames="ordinal" returntype="System.Boolean" />
+        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
+        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
+        <method name="GetValue(System.Int32)" argnames="ordinal" returntype="System.Object" />
+        <method name="GetFieldType(System.Int32)" argnames="index" returntype="System.Type" />
+        <method name="GetDataTypeName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetSchemaTable" argnames="" returntype="System.Data.DataTable" />
+        <method name="Read" argnames="" returntype="System.Boolean" />
+        <method name="NextResult" argnames="" returntype="System.Boolean" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetData(System.Int32)" argnames="ordinal" returntype="System.Data.OleDb.OleDbDataReader" />
+        <method name="GetTimeSpan(System.Int32)" argnames="ordinal" returntype="System.TimeSpan" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbError" namespace="System.Data.OleDb">
+        <property name="Message" propertytype="System.String" />
+        <property name="NativeError" propertytype="System.Int32" />
+        <property name="Source" propertytype="System.String" />
+        <property name="SQLState" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbErrorCollection" namespace="System.Data.OleDb">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Data.OleDb.OleDbError" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbException" namespace="System.Data.OleDb">
+        <property name="ErrorCode" propertytype="System.Int32" />
+        <property name="Errors" propertytype="System.Data.OleDb.OleDbErrorCollection" />
+        <property name="Message" propertytype="System.String" />
+        <property name="Source" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbInfoMessageEventArgs" namespace="System.Data.OleDb">
+        <property name="ErrorCode" propertytype="System.Int32" />
+        <property name="Errors" propertytype="System.Data.OleDb.OleDbErrorCollection" />
+        <property name="Message" propertytype="System.String" />
+        <property name="Source" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbParameterCollection" namespace="System.Data.OleDb">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="ItemType" propertytype="System.Type" />
+        <property name="Item" propertytype="System.Data.OleDb.OleDbParameter" />
+        <property name="Item" propertytype="System.Data.OleDb.OleDbParameter" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="RemoveAt(System.String)" argnames="parameterName" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="parameterName" returntype="System.Int32" />
+        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Data.OleDb.OleDbParameter)" argnames="value" returntype="System.Data.OleDb.OleDbParameter" />
+        <method name="Add(System.String, System.Object)" argnames="parameterName, value" returntype="System.Data.OleDb.OleDbParameter" />
+        <method name="Add(System.String, System.Data.OleDb.OleDbType)" argnames="parameterName, oleDbType" returntype="System.Data.OleDb.OleDbParameter" />
+        <method name="Add(System.String, System.Data.OleDb.OleDbType, System.Int32)" argnames="parameterName, oleDbType, size" returntype="System.Data.OleDb.OleDbParameter" />
+        <method name="Add(System.String, System.Data.OleDb.OleDbType, System.Int32, System.String)" argnames="parameterName, oleDbType, size, sourceColumn" returntype="System.Data.OleDb.OleDbParameter" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbSchemaGuid" namespace="System.Data.OleDb">
+        <constructor name="OleDbSchemaGuid" argnames="" />
+        <field name="Tables_Info" />
+        <field name="Trustee" />
+        <field name="Assertions" />
+        <field name="Catalogs" />
+        <field name="Character_Sets" />
+        <field name="Collations" />
+        <field name="Columns" />
+        <field name="Check_Constraints" />
+        <field name="Constraint_Column_Usage" />
+        <field name="Constraint_Table_Usage" />
+        <field name="Key_Column_Usage" />
+        <field name="Referential_Constraints" />
+        <field name="Table_Constraints" />
+        <field name="Column_Domain_Usage" />
+        <field name="Indexes" />
+        <field name="Column_Privileges" />
+        <field name="Table_Privileges" />
+        <field name="Usage_Privileges" />
+        <field name="Procedures" />
+        <field name="Schemata" />
+        <field name="Sql_Languages" />
+        <field name="Statistics" />
+        <field name="Tables" />
+        <field name="Translations" />
+        <field name="Provider_Types" />
+        <field name="Views" />
+        <field name="View_Column_Usage" />
+        <field name="View_Table_Usage" />
+        <field name="Procedure_Parameters" />
+        <field name="Foreign_Keys" />
+        <field name="Primary_Keys" />
+        <field name="Procedure_Columns" />
+        <field name="Table_Statistics" />
+        <field name="Check_Constraints_By_Table" />
+        <field name="DbInfoLiterals" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbTransaction" namespace="System.Data.OleDb">
+        <property name="Connection" propertytype="System.Data.OleDb.OleDbConnection" />
+        <property name="IsolationLevel" propertytype="System.Data.IsolationLevel" />
+        <method name="Rollback" argnames="" returntype="System.Void" />
+        <method name="Commit" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Begin(System.Data.IsolationLevel)" argnames="isolevel" returntype="System.Data.OleDb.OleDbTransaction" />
+        <method name="Begin" argnames="" returntype="System.Data.OleDb.OleDbTransaction" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbCommand" namespace="System.Data.OleDb">
+        <constructor name="OleDbCommand" argnames="" />
+        <constructor name="OleDbCommand(System.String)" argnames="cmdText" />
+        <constructor name="OleDbCommand(System.String, System.Data.OleDb.OleDbConnection)" argnames="cmdText, connection" />
+        <constructor name="OleDbCommand(System.String, System.Data.OleDb.OleDbConnection, System.Data.OleDb.OleDbTransaction)" argnames="cmdText, connection, transaction" />
+        <property name="CommandText" propertytype="System.String" />
+        <property name="CommandTimeout" propertytype="System.Int32" />
+        <property name="CommandType" propertytype="System.Data.CommandType" />
+        <property name="Connection" propertytype="System.Data.OleDb.OleDbConnection" />
+        <property name="DesignTimeVisible" propertytype="System.Boolean" />
+        <property name="IsClosed" propertytype="System.Boolean" />
+        <property name="Parameters" propertytype="System.Data.OleDb.OleDbParameterCollection" />
+        <property name="Transaction" propertytype="System.Data.OleDb.OleDbTransaction" />
+        <property name="UpdatedRowSource" propertytype="System.Data.UpdateRowSource" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="ExecuteScalar" argnames="" returntype="System.Object" />
+        <method name="ExecuteNonQuery" argnames="" returntype="System.Int32" />
+        <method name="Cancel" argnames="" returntype="System.Void" />
+        <method name="Prepare" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="CreateParameter" argnames="" returntype="System.Data.OleDb.OleDbParameter" />
+        <method name="ExecuteReader" argnames="" returntype="System.Data.OleDb.OleDbDataReader" />
+        <method name="ExecuteReader(System.Data.CommandBehavior)" argnames="behavior" returntype="System.Data.OleDb.OleDbDataReader" />
+        <method name="ResetCommandTimeout" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="OleDbCommandBuilder" namespace="System.Data.OleDb">
+        <constructor name="OleDbCommandBuilder" argnames="" />
+        <constructor name="OleDbCommandBuilder(System.Data.OleDb.OleDbDataAdapter)" argnames="adapter" />
+        <property name="DataAdapter" propertytype="System.Data.OleDb.OleDbDataAdapter" />
+        <property name="QuotePrefix" propertytype="System.String" />
+        <property name="QuoteSuffix" propertytype="System.String" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetInsertCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
+        <method name="GetUpdateCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
+        <method name="GetDeleteCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
+        <method name="RefreshSchema" argnames="" returntype="System.Void" />
+        <method name="DeriveParameters(System.Data.OleDb.OleDbCommand)" argnames="command" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="OleDbConnection" namespace="System.Data.OleDb">
+        <constructor name="OleDbConnection" argnames="" />
+        <constructor name="OleDbConnection(System.String)" argnames="connectionString" />
+        <property name="ConnectionString" propertytype="System.String" />
+        <property name="ConnectionTimeout" propertytype="System.Int32" />
+        <property name="Database" propertytype="System.String" />
+        <property name="DataSource" propertytype="System.String" />
+        <property name="Provider" propertytype="System.String" />
+        <property name="ServerVersion" propertytype="System.String" />
+        <property name="State" propertytype="System.Data.ConnectionState" />
+        <property name="StateInternal" propertytype="System.Data.ConnectionState" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Open" argnames="" returntype="System.Void" />
+        <method name="ChangeDatabase(System.String)" argnames="value" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="BeginTransaction(System.Data.IsolationLevel)" argnames="isolationLevel" returntype="System.Data.OleDb.OleDbTransaction" />
+        <method name="BeginTransaction" argnames="" returntype="System.Data.OleDb.OleDbTransaction" />
+        <method name="CreateCommand" argnames="" returntype="System.Data.OleDb.OleDbCommand" />
+        <method name="GetOleDbSchemaTable(System.Guid, System.Object[])" argnames="schema, restrictions" returntype="System.Data.DataTable" />
+        <method name="ReleaseObjectPool" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="InfoMessage" />
+        <event name="StateChange" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="OleDbDataAdapter" namespace="System.Data.OleDb">
+        <constructor name="OleDbDataAdapter" argnames="" />
+        <constructor name="OleDbDataAdapter(System.Data.OleDb.OleDbCommand)" argnames="selectCommand" />
+        <constructor name="OleDbDataAdapter(System.String, System.String)" argnames="selectCommandText, selectConnectionString" />
+        <constructor name="OleDbDataAdapter(System.String, System.Data.OleDb.OleDbConnection)" argnames="selectCommandText, selectConnection" />
+        <property name="DeleteCommand" propertytype="System.Data.OleDb.OleDbCommand" />
+        <property name="InsertCommand" propertytype="System.Data.OleDb.OleDbCommand" />
+        <property name="SelectCommand" propertytype="System.Data.OleDb.OleDbCommand" />
+        <property name="UpdateCommand" propertytype="System.Data.OleDb.OleDbCommand" />
+        <property name="AcceptChangesDuringFill" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
+        <property name="ContinueUpdateOnError" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
+        <property name="MissingMappingAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingMappingAction" />
+        <property name="MissingSchemaAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingSchemaAction" />
+        <property name="TableMappings" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.Common.DataTableMappingCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Update(System.Data.DataRow[], System.Data.Common.DataTableMapping)" argnames="dataRows, tableMapping" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="OnRowUpdating(System.Data.Common.RowUpdatingEventArgs)" argnames="value" returntype="System.Void" />
+        <method name="OnRowUpdated(System.Data.Common.RowUpdatedEventArgs)" argnames="value" returntype="System.Void" />
+        <method name="OnFillError(System.Data.FillErrorEventArgs)" argnames="value" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
+        <method name="Fill(System.Data.DataTable, System.Data.IDataReader)" argnames="dataTable, dataReader" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.String, System.Data.IDataReader, System.Int32, System.Int32)" argnames="dataSet, srcTable, dataReader, startRecord, maxRecords" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataTable, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataSet, startRecord, maxRecords, srcTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, schemaType, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.Data.IDbCommand, System.String, System.Data.CommandBehavior)" argnames="dataSet, schemaType, command, srcTable, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
+        <method name="CreateRowUpdatingEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatingEventArgs" />
+        <method name="CreateRowUpdatedEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatedEventArgs" />
+        <method name="Update(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="GetFillParameters" argnames="" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.IDataParameter[]" />
+        <method name="Fill(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
+        <method name="CreateTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataTableMappingCollection" />
+        <method name="CloneInternals" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataAdapter" />
+        <method name="ShouldSerializeTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Fill(System.Data.DataTable, System.Object)" argnames="dataTable, ADODBRecordSet" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.Object, System.String)" argnames="dataSet, ADODBRecordSet, srcTable" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType)" argnames="dataTable, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.String)" argnames="dataSet, schemaType, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
+        <method name="Fill(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String)" argnames="dataSet, startRecord, maxRecords, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Update(System.Data.DataRow[])" argnames="dataRows" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Update(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Update(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="RowUpdated" />
+        <event name="RowUpdating" />
+        <event name="FillError" inherited="System.Data.Common.DbDataAdapter" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="OleDbParameter" namespace="System.Data.OleDb">
+        <constructor name="OleDbParameter" argnames="" />
+        <constructor name="OleDbParameter(System.String, System.Object)" argnames="name, value" />
+        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType)" argnames="name, dataType" />
+        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType, System.Int32)" argnames="name, dataType, size" />
+        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType, System.Int32, System.String)" argnames="name, dataType, size, srcColumn" />
+        <constructor name="OleDbParameter(System.String, System.Data.OleDb.OleDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)" argnames="parameterName, dbType, size, direction, isNullable, precision, scale, srcColumn, srcVersion, value" />
+        <property name="DbType" propertytype="System.Data.DbType" />
+        <property name="Direction" propertytype="System.Data.ParameterDirection" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="OleDbType" propertytype="System.Data.OleDb.OleDbType" />
+        <property name="NativeDBType" propertytype="System.Data.OleDb.NativeDBType" />
+        <property name="ParameterName" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Data.OleDb.OleDbParameterCollection" />
+        <property name="Precision" propertytype="System.Byte" />
+        <property name="Scale" propertytype="System.Byte" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="SourceColumn" propertytype="System.String" />
+        <property name="SourceVersion" propertytype="System.Data.DataRowVersion" />
+        <property name="Value" propertytype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbRowUpdatedEventArgs" namespace="System.Data.OleDb">
+        <constructor name="OleDbRowUpdatedEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
+        <property name="Command" propertytype="System.Data.OleDb.OleDbCommand" />
+        <property name="Command" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.IDbCommand" />
+        <property name="StatementType" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.StatementType" />
+        <property name="Errors" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Exception" />
+        <property name="RecordsAffected" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Int32" />
+        <property name="Row" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.DataRow" />
+        <property name="Status" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.UpdateStatus" />
+        <property name="TableMapping" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.Common.DataTableMapping" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbRowUpdatingEventArgs" namespace="System.Data.OleDb">
+        <constructor name="OleDbRowUpdatingEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" />
+        <property name="Command" propertytype="System.Data.OleDb.OleDbCommand" />
+        <property name="Command" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.IDbCommand" />
+        <property name="StatementType" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.StatementType" />
+        <property name="Errors" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Exception" />
+        <property name="Row" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.DataRow" />
+        <property name="Status" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.UpdateStatus" />
+        <property name="TableMapping" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.Common.DataTableMapping" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbPermission" namespace="System.Data.OleDb">
+        <constructor name="OleDbPermission" argnames="" />
+        <constructor name="OleDbPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="OleDbPermission(System.Security.Permissions.PermissionState, System.Boolean)" argnames="state, allowBlankPassword" />
+        <property name="Provider" propertytype="System.String" />
+        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermission" propertytype="System.Boolean" />
+        <method name="IsUnrestricted" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Boolean" />
+        <method name="CreateInstance" argnames="" returntype="System.Data.Common.DBDataPermission" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
+        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OleDbPermissionAttribute" namespace="System.Data.OleDb">
+        <constructor name="OleDbPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Provider" propertytype="System.String" />
+        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermissionAttribute" propertytype="System.Boolean" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="OleDbInfoMessageEventHandler" namespace="System.Data.OleDb">
+        <constructor name="OleDbInfoMessageEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.OleDb.OleDbInfoMessageEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.OleDb.OleDbInfoMessageEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="OleDbRowUpdatedEventHandler" namespace="System.Data.OleDb">
+        <constructor name="OleDbRowUpdatedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.OleDb.OleDbRowUpdatedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.OleDb.OleDbRowUpdatedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="OleDbRowUpdatingEventHandler" namespace="System.Data.OleDb">
+        <constructor name="OleDbRowUpdatingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.OleDb.OleDbRowUpdatingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.OleDb.OleDbRowUpdatingEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="OleDbLiteral" namespace="System.Data.OleDb">
+        <field name="Invalid" />
+        <field name="Binary_Literal" />
+        <field name="Catalog_Name" />
+        <field name="Catalog_Separator" />
+        <field name="Char_Literal" />
+        <field name="Column_Alias" />
+        <field name="Column_Name" />
+        <field name="Correlation_Name" />
+        <field name="Cursor_Name" />
+        <field name="Escape_Percent_Prefix" />
+        <field name="Escape_Underscore_Prefix" />
+        <field name="Index_Name" />
+        <field name="Like_Percent" />
+        <field name="Like_Underscore" />
+        <field name="Procedure_Name" />
+        <field name="Quote_Prefix" />
+        <field name="Schema_Name" />
+        <field name="Table_Name" />
+        <field name="Text_Command" />
+        <field name="User_Name" />
+        <field name="View_Name" />
+        <field name="Cube_Name" />
+        <field name="Dimension_Name" />
+        <field name="Hierarchy_Name" />
+        <field name="Level_Name" />
+        <field name="Member_Name" />
+        <field name="Property_Name" />
+        <field name="Schema_Separator" />
+        <field name="Quote_Suffix" />
+        <field name="Escape_Percent_Suffix" />
+        <field name="Escape_Underscore_Suffix" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="OleDbType" namespace="System.Data.OleDb">
+        <field name="BigInt" />
+        <field name="Binary" />
+        <field name="Boolean" />
+        <field name="BSTR" />
+        <field name="Char" />
+        <field name="Currency" />
+        <field name="Date" />
+        <field name="DBDate" />
+        <field name="DBTime" />
+        <field name="DBTimeStamp" />
+        <field name="Decimal" />
+        <field name="Double" />
+        <field name="Empty" />
+        <field name="Error" />
+        <field name="Filetime" />
+        <field name="Guid" />
+        <field name="IDispatch" />
+        <field name="Integer" />
+        <field name="IUnknown" />
+        <field name="LongVarBinary" />
+        <field name="LongVarChar" />
+        <field name="LongVarWChar" />
+        <field name="Numeric" />
+        <field name="PropVariant" />
+        <field name="Single" />
+        <field name="SmallInt" />
+        <field name="TinyInt" />
+        <field name="UnsignedBigInt" />
+        <field name="UnsignedInt" />
+        <field name="UnsignedSmallInt" />
+        <field name="UnsignedTinyInt" />
+        <field name="VarBinary" />
+        <field name="VarChar" />
+        <field name="Variant" />
+        <field name="VarNumeric" />
+        <field name="VarWChar" />
+        <field name="WChar" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="Counter" namespace="System.Data.SqlClient">
+        <constructor name="Counter" argnames="" />
+        <property name="Value" propertytype="System.Int64" />
+        <property name="IsQueued" propertytype="System.Boolean" />
+        <property name="IsInError" propertytype="System.Boolean" />
+        <property name="WaitCount" propertytype="System.Int32" />
+        <property name="FreeCount" propertytype="System.Int32" />
+        <property name="TotalCount" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Modify(System.Int64)" argnames="add" returntype="System.Void" />
+        <method name="TryUpdate(System.Int64, System.Data.SqlClient.ConnectionPool.Counter)" argnames="newval, clone" returntype="System.Boolean" />
+        <method name="Clone" argnames="" returntype="System.Data.SqlClient.ConnectionPool+Counter" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlDataReader" namespace="System.Data.SqlClient">
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="FieldCount" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="HasMoreRows" propertytype="System.Boolean" />
+        <property name="HasMoreResults" propertytype="System.Boolean" />
+        <property name="IsClosed" propertytype="System.Boolean" />
+        <property name="RecordsAffected" propertytype="System.Int32" />
+        <property name="BrowseModeInfoConsumed" propertytype="System.Boolean" />
+        <property name="MetaData" propertytype="System.Data.SqlClient._SqlMetaData[]" />
+        <property name="TableNames" propertytype="System.String[]" />
+        <property name="TableNamesShilohSP1" propertytype="System.String[][]" />
+        <property name="SetOptionsOFF" propertytype="System.String" />
+        <property name="Behavior" propertytype="System.Data.CommandBehavior" />
+        <method name="IsDBNull(System.Int32)" argnames="i" returntype="System.Boolean" />
+        <method name="GetData(System.Int32)" argnames="i" returntype="System.Data.IDataReader" />
+        <method name="GetDateTime(System.Int32)" argnames="i" returntype="System.DateTime" />
+        <method name="GetDecimal(System.Int32)" argnames="i" returntype="System.Decimal" />
+        <method name="GetString(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetDouble(System.Int32)" argnames="i" returntype="System.Double" />
+        <method name="GetFloat(System.Int32)" argnames="i" returntype="System.Single" />
+        <method name="GetInt64(System.Int32)" argnames="i" returntype="System.Int64" />
+        <method name="GetInt32(System.Int32)" argnames="i" returntype="System.Int32" />
+        <method name="GetInt16(System.Int32)" argnames="i" returntype="System.Int16" />
+        <method name="GetGuid(System.Int32)" argnames="i" returntype="System.Guid" />
+        <method name="GetChars(System.Int32, System.Int64, System.Char[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
+        <method name="GetChar(System.Int32)" argnames="i" returntype="System.Char" />
+        <method name="GetBytes(System.Int32, System.Int64, System.Byte[], System.Int32, System.Int32)" argnames="i, dataIndex, buffer, bufferIndex, length" returntype="System.Int64" />
+        <method name="GetByte(System.Int32)" argnames="i" returntype="System.Byte" />
+        <method name="GetBoolean(System.Int32)" argnames="i" returntype="System.Boolean" />
+        <method name="GetOrdinal(System.String)" argnames="name" returntype="System.Int32" />
+        <method name="GetValues(System.Object[])" argnames="values" returntype="System.Int32" />
+        <method name="GetValue(System.Int32)" argnames="i" returntype="System.Object" />
+        <method name="GetFieldType(System.Int32)" argnames="i" returntype="System.Type" />
+        <method name="GetDataTypeName(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetName(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetSchemaTable" argnames="" returntype="System.Data.DataTable" />
+        <method name="Read" argnames="" returntype="System.Boolean" />
+        <method name="NextResult" argnames="" returntype="System.Boolean" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetSqlBoolean(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GetSqlBinary(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlBinary" />
+        <method name="GetSqlByte(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="GetSqlInt16(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="GetSqlInt32(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="GetSqlInt64(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="GetSqlSingle(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="GetSqlDouble(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="GetSqlString(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetSqlMoney(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="GetSqlDecimal(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="GetSqlDateTime(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlDateTime" />
+        <method name="GetSqlGuid(System.Int32)" argnames="i" returntype="System.Data.SqlTypes.SqlGuid" />
+        <method name="GetSqlValue(System.Int32)" argnames="i" returntype="System.Object" />
+        <method name="GetSqlValues(System.Object[])" argnames="values" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlError" namespace="System.Data.SqlClient">
+        <property name="Source" propertytype="System.String" />
+        <property name="Number" propertytype="System.Int32" />
+        <property name="State" propertytype="System.Byte" />
+        <property name="Class" propertytype="System.Byte" />
+        <property name="Server" propertytype="System.String" />
+        <property name="Message" propertytype="System.String" />
+        <property name="Procedure" propertytype="System.String" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlErrorCollection" namespace="System.Data.SqlClient">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Data.SqlClient.SqlError" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlException" namespace="System.Data.SqlClient">
+        <property name="Errors" propertytype="System.Data.SqlClient.SqlErrorCollection" />
+        <property name="Class" propertytype="System.Byte" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="Message" propertytype="System.String" />
+        <property name="Number" propertytype="System.Int32" />
+        <property name="Procedure" propertytype="System.String" />
+        <property name="Server" propertytype="System.String" />
+        <property name="State" propertytype="System.Byte" />
+        <property name="Source" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlInfoMessageEventArgs" namespace="System.Data.SqlClient">
+        <property name="Errors" propertytype="System.Data.SqlClient.SqlErrorCollection" />
+        <property name="Message" propertytype="System.String" />
+        <property name="Source" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlParameterCollection" namespace="System.Data.SqlClient">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="ItemType" propertytype="System.Type" />
+        <property name="Item" propertytype="System.Data.SqlClient.SqlParameter" />
+        <property name="Item" propertytype="System.Data.SqlClient.SqlParameter" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="RemoveAt(System.String)" argnames="parameterName" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="parameterName" returntype="System.Int32" />
+        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Data.SqlClient.SqlParameter)" argnames="value" returntype="System.Data.SqlClient.SqlParameter" />
+        <method name="Add(System.String, System.Object)" argnames="parameterName, value" returntype="System.Data.SqlClient.SqlParameter" />
+        <method name="Add(System.String, System.Data.SqlDbType)" argnames="parameterName, sqlDbType" returntype="System.Data.SqlClient.SqlParameter" />
+        <method name="Add(System.String, System.Data.SqlDbType, System.Int32)" argnames="parameterName, sqlDbType, size" returntype="System.Data.SqlClient.SqlParameter" />
+        <method name="Add(System.String, System.Data.SqlDbType, System.Int32, System.String)" argnames="parameterName, sqlDbType, size, sourceColumn" returntype="System.Data.SqlClient.SqlParameter" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlTransaction" namespace="System.Data.SqlClient">
+        <property name="Connection" propertytype="System.Data.SqlClient.SqlConnection" />
+        <property name="IsolationLevel" propertytype="System.Data.IsolationLevel" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Rollback" argnames="" returntype="System.Void" />
+        <method name="Commit" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Rollback(System.String)" argnames="transactionName" returntype="System.Void" />
+        <method name="Save(System.String)" argnames="savePointName" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlCommand" namespace="System.Data.SqlClient">
+        <constructor name="SqlCommand" argnames="" />
+        <constructor name="SqlCommand(System.String)" argnames="cmdText" />
+        <constructor name="SqlCommand(System.String, System.Data.SqlClient.SqlConnection)" argnames="cmdText, connection" />
+        <constructor name="SqlCommand(System.String, System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction)" argnames="cmdText, connection, transaction" />
+        <property name="Connection" propertytype="System.Data.SqlClient.SqlConnection" />
+        <property name="Transaction" propertytype="System.Data.SqlClient.SqlTransaction" />
+        <property name="CommandText" propertytype="System.String" />
+        <property name="CommandType" propertytype="System.Data.CommandType" />
+        <property name="CommandTimeout" propertytype="System.Int32" />
+        <property name="DesignTimeVisible" propertytype="System.Boolean" />
+        <property name="Parameters" propertytype="System.Data.SqlClient.SqlParameterCollection" />
+        <property name="UpdatedRowSource" propertytype="System.Data.UpdateRowSource" />
+        <property name="MetaData" propertytype="System.Data.SqlClient._SqlMetaData[]" />
+        <property name="IsPrepared" propertytype="System.Boolean" />
+        <property name="IsDirty" propertytype="System.Boolean" />
+        <property name="RecordsAffected" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="ExecuteScalar" argnames="" returntype="System.Object" />
+        <method name="ExecuteNonQuery" argnames="" returntype="System.Int32" />
+        <method name="Cancel" argnames="" returntype="System.Void" />
+        <method name="Prepare" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetCommandTimeout" argnames="" returntype="System.Void" />
+        <method name="CreateParameter" argnames="" returntype="System.Data.SqlClient.SqlParameter" />
+        <method name="ExecuteXmlReader" argnames="" returntype="System.Xml.XmlReader" />
+        <method name="ExecuteReader" argnames="" returntype="System.Data.SqlClient.SqlDataReader" />
+        <method name="ExecuteReader(System.Data.CommandBehavior)" argnames="behavior" returntype="System.Data.SqlClient.SqlDataReader" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="SqlCommandBuilder" namespace="System.Data.SqlClient">
+        <constructor name="SqlCommandBuilder" argnames="" />
+        <constructor name="SqlCommandBuilder(System.Data.SqlClient.SqlDataAdapter)" argnames="adapter" />
+        <property name="DataAdapter" propertytype="System.Data.SqlClient.SqlDataAdapter" />
+        <property name="QuotePrefix" propertytype="System.String" />
+        <property name="QuoteSuffix" propertytype="System.String" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="DeriveParameters(System.Data.SqlClient.SqlCommand)" argnames="command" returntype="System.Void" />
+        <method name="GetInsertCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
+        <method name="GetUpdateCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
+        <method name="GetDeleteCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
+        <method name="RefreshSchema" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="SqlDataAdapter" namespace="System.Data.SqlClient">
+        <constructor name="SqlDataAdapter" argnames="" />
+        <constructor name="SqlDataAdapter(System.Data.SqlClient.SqlCommand)" argnames="selectCommand" />
+        <constructor name="SqlDataAdapter(System.String, System.String)" argnames="selectCommandText, selectConnectionString" />
+        <constructor name="SqlDataAdapter(System.String, System.Data.SqlClient.SqlConnection)" argnames="selectCommandText, selectConnection" />
+        <property name="DeleteCommand" propertytype="System.Data.SqlClient.SqlCommand" />
+        <property name="InsertCommand" propertytype="System.Data.SqlClient.SqlCommand" />
+        <property name="SelectCommand" propertytype="System.Data.SqlClient.SqlCommand" />
+        <property name="UpdateCommand" propertytype="System.Data.SqlClient.SqlCommand" />
+        <property name="AcceptChangesDuringFill" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
+        <property name="ContinueUpdateOnError" inherited="System.Data.Common.DataAdapter" propertytype="System.Boolean" />
+        <property name="MissingMappingAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingMappingAction" />
+        <property name="MissingSchemaAction" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.MissingSchemaAction" />
+        <property name="TableMappings" inherited="System.Data.Common.DataAdapter" propertytype="System.Data.Common.DataTableMappingCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Update(System.Data.DataRow[], System.Data.Common.DataTableMapping)" argnames="dataRows, tableMapping" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="OnRowUpdating(System.Data.Common.RowUpdatingEventArgs)" argnames="value" returntype="System.Void" />
+        <method name="OnRowUpdated(System.Data.Common.RowUpdatedEventArgs)" argnames="value" returntype="System.Void" />
+        <method name="OnFillError(System.Data.FillErrorEventArgs)" argnames="value" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
+        <method name="Fill(System.Data.DataTable, System.Data.IDataReader)" argnames="dataTable, dataReader" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.String, System.Data.IDataReader, System.Int32, System.Int32)" argnames="dataSet, srcTable, dataReader, startRecord, maxRecords" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataTable, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataSet, startRecord, maxRecords, srcTable, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType, System.Data.IDbCommand, System.Data.CommandBehavior)" argnames="dataTable, schemaType, command, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.Data.IDbCommand, System.String, System.Data.CommandBehavior)" argnames="dataSet, schemaType, command, srcTable, behavior" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
+        <method name="CreateRowUpdatingEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatingEventArgs" />
+        <method name="CreateRowUpdatedEvent(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="dataRow, command, statementType, tableMapping" returntype="System.Data.Common.RowUpdatedEventArgs" />
+        <method name="Update(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="GetFillParameters" argnames="" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.IDataParameter[]" />
+        <method name="Fill(System.Data.DataSet)" argnames="dataSet" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType)" argnames="dataSet, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
+        <method name="CreateTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataTableMappingCollection" />
+        <method name="CloneInternals" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Data.Common.DataAdapter" />
+        <method name="ShouldSerializeTableMappings" argnames="" inherited="System.Data.Common.DataAdapter" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Data.Common.DbDataAdapter" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="FillSchema(System.Data.DataTable, System.Data.SchemaType)" argnames="dataTable, schemaType" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable" />
+        <method name="FillSchema(System.Data.DataSet, System.Data.SchemaType, System.String)" argnames="dataSet, schemaType, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Data.DataTable[]" />
+        <method name="Fill(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Fill(System.Data.DataSet, System.Int32, System.Int32, System.String)" argnames="dataSet, startRecord, maxRecords, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Update(System.Data.DataRow[])" argnames="dataRows" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Update(System.Data.DataTable)" argnames="dataTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="Update(System.Data.DataSet, System.String)" argnames="dataSet, srcTable" inherited="System.Data.Common.DbDataAdapter" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="RowUpdated" />
+        <event name="RowUpdating" />
+        <event name="FillError" inherited="System.Data.Common.DbDataAdapter" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="SqlParameter" namespace="System.Data.SqlClient">
+        <constructor name="SqlParameter" argnames="" />
+        <constructor name="SqlParameter(System.String, System.Object)" argnames="parameterName, value" />
+        <constructor name="SqlParameter(System.String, System.Data.SqlDbType)" argnames="parameterName, dbType" />
+        <constructor name="SqlParameter(System.String, System.Data.SqlDbType, System.Int32)" argnames="parameterName, dbType, size" />
+        <constructor name="SqlParameter(System.String, System.Data.SqlDbType, System.Int32, System.String)" argnames="parameterName, dbType, size, sourceColumn" />
+        <constructor name="SqlParameter(System.String, System.Data.SqlDbType, System.Int32, System.Data.ParameterDirection, System.Boolean, System.Byte, System.Byte, System.String, System.Data.DataRowVersion, System.Object)" argnames="parameterName, dbType, size, direction, isNullable, precision, scale, sourceColumn, sourceVersion, value" />
+        <property name="DbType" propertytype="System.Data.DbType" />
+        <property name="SqlDbType" propertytype="System.Data.SqlDbType" />
+        <property name="Direction" propertytype="System.Data.ParameterDirection" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="Offset" propertytype="System.Int32" />
+        <property name="ParameterName" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Data.SqlClient.SqlParameterCollection" />
+        <property name="Precision" propertytype="System.Byte" />
+        <property name="Scale" propertytype="System.Byte" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="SourceColumn" propertytype="System.String" />
+        <property name="SourceVersion" propertytype="System.Data.DataRowVersion" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="TdsType" propertytype="System.Byte" />
+        <property name="Collation" propertytype="System.Data.SqlClient.SqlCollation" />
+        <property name="ActualSize" propertytype="System.Int32" />
+        <property name="Suppress" propertytype="System.Boolean" />
+        <property name="CoercedValue" propertytype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlRowUpdatedEventArgs" namespace="System.Data.SqlClient">
+        <constructor name="SqlRowUpdatedEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="row, command, statementType, tableMapping" />
+        <property name="Command" propertytype="System.Data.SqlClient.SqlCommand" />
+        <property name="Command" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.IDbCommand" />
+        <property name="StatementType" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.StatementType" />
+        <property name="Errors" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Exception" />
+        <property name="RecordsAffected" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Int32" />
+        <property name="Row" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.DataRow" />
+        <property name="Status" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.UpdateStatus" />
+        <property name="TableMapping" inherited="System.Data.Common.RowUpdatedEventArgs" propertytype="System.Data.Common.DataTableMapping" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlRowUpdatingEventArgs" namespace="System.Data.SqlClient">
+        <constructor name="SqlRowUpdatingEventArgs(System.Data.DataRow, System.Data.IDbCommand, System.Data.StatementType, System.Data.Common.DataTableMapping)" argnames="row, command, statementType, tableMapping" />
+        <property name="Command" propertytype="System.Data.SqlClient.SqlCommand" />
+        <property name="Command" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.IDbCommand" />
+        <property name="StatementType" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.StatementType" />
+        <property name="Errors" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Exception" />
+        <property name="Row" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.DataRow" />
+        <property name="Status" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.UpdateStatus" />
+        <property name="TableMapping" inherited="System.Data.Common.RowUpdatingEventArgs" propertytype="System.Data.Common.DataTableMapping" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlClientPermission" namespace="System.Data.SqlClient">
+        <constructor name="SqlClientPermission" argnames="" />
+        <constructor name="SqlClientPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="SqlClientPermission(System.Security.Permissions.PermissionState, System.Boolean)" argnames="state, allowBlankPassword" />
+        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermission" propertytype="System.Boolean" />
+        <method name="IsUnrestricted" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Boolean" />
+        <method name="CreateInstance" argnames="" returntype="System.Data.Common.DBDataPermission" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" inherited="System.Data.Common.DBDataPermission" returntype="System.Void" />
+        <method name="ToXml" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" inherited="System.Data.Common.DBDataPermission" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" inherited="System.Data.Common.DBDataPermission" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlClientPermissionAttribute" namespace="System.Data.SqlClient">
+        <constructor name="SqlClientPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="AllowBlankPassword" inherited="System.Data.Common.DBDataPermissionAttribute" propertytype="System.Boolean" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlConnection" namespace="System.Data.SqlClient">
+        <constructor name="SqlConnection" argnames="" />
+        <constructor name="SqlConnection(System.String)" argnames="connectionString" />
+        <property name="ConnectionString" propertytype="System.String" />
+        <property name="ConnectionTimeout" propertytype="System.Int32" />
+        <property name="Database" propertytype="System.String" />
+        <property name="DataSource" propertytype="System.String" />
+        <property name="PacketSize" propertytype="System.Int32" />
+        <property name="WorkstationId" propertytype="System.String" />
+        <property name="ServerVersion" propertytype="System.String" />
+        <property name="State" propertytype="System.Data.ConnectionState" />
+        <property name="IsClosing" propertytype="System.Boolean" />
+        <property name="IsShiloh" propertytype="System.Boolean" />
+        <property name="LocalTransaction" propertytype="System.Data.SqlClient.SqlTransaction" />
+        <property name="Parser" propertytype="System.Data.SqlClient.TdsParser" />
+        <property name="Reader" propertytype="System.Data.SqlClient.SqlDataReader" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Open" argnames="" returntype="System.Void" />
+        <method name="ChangeDatabase(System.String)" argnames="database" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="BeginTransaction" argnames="" returntype="System.Data.SqlClient.SqlTransaction" />
+        <method name="BeginTransaction(System.Data.IsolationLevel)" argnames="iso" returntype="System.Data.SqlClient.SqlTransaction" />
+        <method name="BeginTransaction(System.String)" argnames="transactionName" returntype="System.Data.SqlClient.SqlTransaction" />
+        <method name="BeginTransaction(System.Data.IsolationLevel, System.String)" argnames="iso, transactionName" returntype="System.Data.SqlClient.SqlTransaction" />
+        <method name="CreateCommand" argnames="" returntype="System.Data.SqlClient.SqlCommand" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="InfoMessage" />
+        <event name="StateChange" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="SQLDebugging" namespace="System.Data.SqlClient">
+        <constructor name="SQLDebugging" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="SqlInfoMessageEventHandler" namespace="System.Data.SqlClient">
+        <constructor name="SqlInfoMessageEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.SqlClient.SqlInfoMessageEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.SqlClient.SqlInfoMessageEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="SqlRowUpdatedEventHandler" namespace="System.Data.SqlClient">
+        <constructor name="SqlRowUpdatedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.SqlClient.SqlRowUpdatedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.SqlClient.SqlRowUpdatedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="SqlRowUpdatingEventHandler" namespace="System.Data.SqlClient">
+        <constructor name="SqlRowUpdatingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Data.SqlClient.SqlRowUpdatingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Data.SqlClient.SqlRowUpdatingEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <class name="SqlTypeException" namespace="System.Data.SqlTypes">
+        <constructor name="SqlTypeException(System.String)" argnames="message" />
+        <constructor name="SqlTypeException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, sc" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlNullValueException" namespace="System.Data.SqlTypes">
+        <constructor name="SqlNullValueException" argnames="" />
+        <constructor name="SqlNullValueException(System.String)" argnames="message" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SqlTruncateException" namespace="System.Data.SqlTypes">
+        <constructor name="SqlTruncateException" argnames="" />
+        <constructor name="SqlTruncateException(System.String)" argnames="message" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="INullable" namespace="System.Data.SqlTypes">
+        <property name="IsNull" propertytype="System.Boolean" />
+    </interface>
+    <struct name="SqlBinary" namespace="System.Data.SqlTypes">
+        <constructor name="SqlBinary(System.Byte[])" argnames="value" />
+        <field name="Null" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Byte[]" />
+        <property name="Item" propertytype="System.Byte" />
+        <property name="Length" propertytype="System.Int32" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Concat(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBinary" />
+        <method name="Equals(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlGuid" argnames="" returntype="System.Data.SqlTypes.SqlGuid" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Byte[])" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBinary)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlGuid)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlBinary, System.Data.SqlTypes.SqlBinary)" argnames="x, y" />
+    </struct>
+    <struct name="SqlBoolean" namespace="System.Data.SqlTypes">
+        <constructor name="SqlBoolean(System.Boolean)" argnames="value" />
+        <constructor name="SqlBoolean(System.Int32)" argnames="value" />
+        <field name="True" />
+        <field name="False" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="One" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Boolean" />
+        <property name="IsTrue" propertytype="System.Boolean" />
+        <property name="IsFalse" propertytype="System.Boolean" />
+        <property name="ByteValue" propertytype="System.Byte" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="OnesComplement(System.Data.SqlTypes.SqlBoolean)" argnames="x" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="And(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="Or(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="Xor(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="Equals(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Boolean)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_LogicalNot(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_True(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_False(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
+        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
+        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlBoolean, System.Data.SqlTypes.SqlBoolean)" argnames="x, y" />
+    </struct>
+    <struct name="SqlByte" namespace="System.Data.SqlTypes">
+        <constructor name="SqlByte(System.Byte)" argnames="value" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Byte" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="OnesComplement(System.Data.SqlTypes.SqlByte)" argnames="x" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="Add(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="Subtract(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="Multiply(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="Divide(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="Mod(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="BitwiseAnd(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="BitwiseOr(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="Xor(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="Equals(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Byte)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_Modulus(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlByte, System.Data.SqlTypes.SqlByte)" argnames="x, y" />
+    </struct>
+    <struct name="SqlDateTime" namespace="System.Data.SqlTypes">
+        <constructor name="SqlDateTime(System.DateTime)" argnames="value" />
+        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32)" argnames="year, month, day" />
+        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second" />
+        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Double)" argnames="year, month, day, hour, minute, second, millisecond" />
+        <constructor name="SqlDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, bilisecond" />
+        <constructor name="SqlDateTime(System.Int32, System.Int32)" argnames="dayTicks, timeTicks" />
+        <field name="SQLTicksPerSecond" />
+        <field name="SQLTicksPerMinute" />
+        <field name="SQLTicksPerHour" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <field name="Null" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.DateTime" />
+        <property name="DayTicks" propertytype="System.Int32" />
+        <property name="TimeTicks" propertytype="System.Int32" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlDateTime" />
+        <method name="Equals(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.DateTime)" argnames="value" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDateTime)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlDateTime, System.TimeSpan)" argnames="x, t" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlDateTime, System.TimeSpan)" argnames="x, t" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlDateTime, System.Data.SqlTypes.SqlDateTime)" argnames="x, y" />
+    </struct>
+    <struct name="SqlDouble" namespace="System.Data.SqlTypes">
+        <constructor name="SqlDouble(System.Double)" argnames="value" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Double" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="Add(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="Subtract(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="Multiply(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="Divide(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="Equals(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Double)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlDouble, System.Data.SqlTypes.SqlDouble)" argnames="x, y" />
+    </struct>
+    <struct name="SqlGuid" namespace="System.Data.SqlTypes">
+        <constructor name="SqlGuid(System.Byte[])" argnames="value" />
+        <constructor name="SqlGuid(System.String)" argnames="s" />
+        <constructor name="SqlGuid(System.Guid)" argnames="g" />
+        <constructor name="SqlGuid(System.Int32, System.Int16, System.Int16, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte)" argnames="a, b, c, d, e, f, g, h, i, j, k" />
+        <field name="Null" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Guid" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ToByteArray" argnames="" returntype="System.Byte[]" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlGuid" />
+        <method name="Equals(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="ToSqlBinary" argnames="" returntype="System.Data.SqlTypes.SqlBinary" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Guid)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlGuid)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBinary)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlGuid, System.Data.SqlTypes.SqlGuid)" argnames="x, y" />
+    </struct>
+    <struct name="SqlInt16" namespace="System.Data.SqlTypes">
+        <constructor name="SqlInt16(System.Int16)" argnames="value" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Int16" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="OnesComplement(System.Data.SqlTypes.SqlInt16)" argnames="x" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="Add(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="Subtract(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="Multiply(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="Divide(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="Mod(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="BitwiseAnd(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="BitwiseOr(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="Xor(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="Equals(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Int16)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_Modulus(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlInt16, System.Data.SqlTypes.SqlInt16)" argnames="x, y" />
+    </struct>
+    <struct name="SqlInt32" namespace="System.Data.SqlTypes">
+        <constructor name="SqlInt32(System.Int32)" argnames="value" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Int32" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="OnesComplement(System.Data.SqlTypes.SqlInt32)" argnames="x" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Add(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Subtract(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Multiply(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Divide(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Mod(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="BitwiseAnd(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="BitwiseOr(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Xor(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Equals(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Int32)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_Modulus(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlInt32, System.Data.SqlTypes.SqlInt32)" argnames="x, y" />
+    </struct>
+    <struct name="SqlInt64" namespace="System.Data.SqlTypes">
+        <constructor name="SqlInt64(System.Int64)" argnames="value" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Int64" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="OnesComplement(System.Data.SqlTypes.SqlInt64)" argnames="x" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="Add(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="Subtract(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="Multiply(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="Divide(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="Mod(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="BitwiseAnd(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="BitwiseOr(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="Xor(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="Equals(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Int64)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_OnesComplement(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_Modulus(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_BitwiseAnd(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_BitwiseOr(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_ExclusiveOr(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlInt64, System.Data.SqlTypes.SqlInt64)" argnames="x, y" />
+    </struct>
+    <struct name="SqlMoney" namespace="System.Data.SqlTypes">
+        <constructor name="SqlMoney(System.Int32)" argnames="value" />
+        <constructor name="SqlMoney(System.Int64)" argnames="value" />
+        <constructor name="SqlMoney(System.Decimal)" argnames="value" />
+        <constructor name="SqlMoney(System.Double)" argnames="value" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Decimal" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ToDecimal" argnames="" returntype="System.Decimal" />
+        <method name="ToInt64" argnames="" returntype="System.Int64" />
+        <method name="ToInt32" argnames="" returntype="System.Int32" />
+        <method name="ToDouble" argnames="" returntype="System.Double" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="Add(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="Subtract(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="Multiply(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="Divide(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="Equals(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Decimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlMoney, System.Data.SqlTypes.SqlMoney)" argnames="x, y" />
+    </struct>
+    <struct name="SqlDecimal" namespace="System.Data.SqlTypes">
+        <constructor name="SqlDecimal(System.Decimal)" argnames="value" />
+        <constructor name="SqlDecimal(System.Int32)" argnames="value" />
+        <constructor name="SqlDecimal(System.Int64)" argnames="value" />
+        <constructor name="SqlDecimal(System.Byte, System.Byte, System.Boolean, System.Int32[])" argnames="bPrecision, bScale, fPositive, bits" />
+        <constructor name="SqlDecimal(System.Byte, System.Byte, System.Boolean, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="bPrecision, bScale, fPositive, data1, data2, data3, data4" />
+        <constructor name="SqlDecimal(System.Double)" argnames="dVal" />
+        <field name="MaxPrecision" />
+        <field name="MaxScale" />
+        <field name="Null" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Decimal" />
+        <property name="IsPositive" propertytype="System.Boolean" />
+        <property name="Precision" propertytype="System.Byte" />
+        <property name="Scale" propertytype="System.Byte" />
+        <property name="Data" propertytype="System.Int32[]" />
+        <property name="BinData" propertytype="System.Byte[]" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToDouble" argnames="" returntype="System.Double" />
+        <method name="AdjustScale(System.Data.SqlTypes.SqlDecimal, System.Int32, System.Boolean)" argnames="n, digits, fRound" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ConvertToPrecScale(System.Data.SqlTypes.SqlDecimal, System.Int32, System.Int32)" argnames="n, precision, scale" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Add(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Subtract(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Multiply(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Divide(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Equals(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="Abs(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Ceiling(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Floor(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Sign(System.Data.SqlTypes.SqlDecimal)" argnames="n" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="Round(System.Data.SqlTypes.SqlDecimal, System.Int32)" argnames="n, position" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Truncate(System.Data.SqlTypes.SqlDecimal, System.Int32)" argnames="n, position" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="Power(System.Data.SqlTypes.SqlDecimal, System.Double)" argnames="n, exp" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Decimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlDecimal, System.Data.SqlTypes.SqlDecimal)" argnames="x, y" />
+    </struct>
+    <struct name="SqlSingle" namespace="System.Data.SqlTypes">
+        <constructor name="SqlSingle(System.Single)" argnames="value" />
+        <constructor name="SqlSingle(System.Double)" argnames="value" />
+        <field name="Null" />
+        <field name="Zero" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Single" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="Add(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="Subtract(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="Multiply(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="Divide(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="Equals(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlString" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Single)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_UnaryNegation(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_Subtraction(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_Multiply(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_Division(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Implicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlSingle, System.Data.SqlTypes.SqlSingle)" argnames="x, y" />
+    </struct>
+    <struct name="SqlString" namespace="System.Data.SqlTypes">
+        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[], System.Int32, System.Int32, System.Boolean)" argnames="lcid, compareOptions, data, index, count, fUnicode" />
+        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[], System.Boolean)" argnames="lcid, compareOptions, data, fUnicode" />
+        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[], System.Int32, System.Int32)" argnames="lcid, compareOptions, data, index, count" />
+        <constructor name="SqlString(System.Int32, System.Data.SqlTypes.SqlCompareOptions, System.Byte[])" argnames="lcid, compareOptions, data" />
+        <constructor name="SqlString(System.String, System.Int32, System.Data.SqlTypes.SqlCompareOptions)" argnames="data, lcid, compareOptions" />
+        <constructor name="SqlString(System.String, System.Int32)" argnames="data, lcid" />
+        <constructor name="SqlString(System.String)" argnames="data" />
+        <field name="Null" />
+        <field name="IgnoreCase" />
+        <field name="IgnoreWidth" />
+        <field name="IgnoreNonSpace" />
+        <field name="IgnoreKanaType" />
+        <field name="BinarySort" />
+        <property name="IsNull" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.String" />
+        <property name="LCID" propertytype="System.Int32" />
+        <property name="CultureInfo" propertytype="System.Globalization.CultureInfo" />
+        <property name="CompareInfo" propertytype="System.Globalization.CompareInfo" />
+        <property name="SqlCompareOptions" propertytype="System.Data.SqlTypes.SqlCompareOptions" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetUnicodeBytes" argnames="" returntype="System.Byte[]" />
+        <method name="GetNonUnicodeBytes" argnames="" returntype="System.Byte[]" />
+        <method name="Clone" argnames="" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="Concat(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlString" />
+        <method name="Equals(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="NotEquals(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="LessThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="GreaterThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlBoolean" argnames="" returntype="System.Data.SqlTypes.SqlBoolean" />
+        <method name="ToSqlByte" argnames="" returntype="System.Data.SqlTypes.SqlByte" />
+        <method name="ToSqlDateTime" argnames="" returntype="System.Data.SqlTypes.SqlDateTime" />
+        <method name="ToSqlDouble" argnames="" returntype="System.Data.SqlTypes.SqlDouble" />
+        <method name="ToSqlInt16" argnames="" returntype="System.Data.SqlTypes.SqlInt16" />
+        <method name="ToSqlInt32" argnames="" returntype="System.Data.SqlTypes.SqlInt32" />
+        <method name="ToSqlInt64" argnames="" returntype="System.Data.SqlTypes.SqlInt64" />
+        <method name="ToSqlMoney" argnames="" returntype="System.Data.SqlTypes.SqlMoney" />
+        <method name="ToSqlDecimal" argnames="" returntype="System.Data.SqlTypes.SqlDecimal" />
+        <method name="ToSqlSingle" argnames="" returntype="System.Data.SqlTypes.SqlSingle" />
+        <method name="ToSqlGuid" argnames="" returntype="System.Data.SqlTypes.SqlGuid" />
+        <method name="CompareOptionsFromSqlCompareOptions(System.Data.SqlTypes.SqlCompareOptions)" argnames="compareOptions" returntype="System.Globalization.CompareOptions" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.String)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlString)" argnames="x" />
+        <operator name="op_Addition(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlBoolean)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlByte)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt16)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt32)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlInt64)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlSingle)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDouble)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDecimal)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlMoney)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlDateTime)" argnames="x" />
+        <operator name="op_Explicit(System.Data.SqlTypes.SqlGuid)" argnames="x" />
+        <operator name="op_Equality(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
+        <operator name="op_Inequality(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
+        <operator name="op_LessThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
+        <operator name="op_GreaterThan(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
+        <operator name="op_LessThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
+        <operator name="op_GreaterThanOrEqual(System.Data.SqlTypes.SqlString, System.Data.SqlTypes.SqlString)" argnames="x, y" />
+    </struct>
+    <enum name="SqlCompareOptions" namespace="System.Data.SqlTypes">
+        <field name="None" />
+        <field name="IgnoreCase" />
+        <field name="IgnoreNonSpace" />
+        <field name="IgnoreKanaType" />
+        <field name="IgnoreWidth" />
+        <field name="BinarySort" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="XmlDataDocument" namespace="System.Xml">
+        <constructor name="XmlDataDocument" argnames="" />
+        <constructor name="XmlDataDocument(System.Data.DataSet)" argnames="dataset" />
+        <property name="AutoFoliationState" propertytype="System.Xml.ElementState" />
+        <property name="DataSet" propertytype="System.Data.DataSet" />
+        <property name="IgnoreXmlEvents" propertytype="System.Boolean" />
+        <property name="IgnoreDataSetEvents" propertytype="System.Boolean" />
+        <property name="IsFoliationEnabled" propertytype="System.Boolean" />
+        <property name="Mapper" propertytype="System.Xml.DataSetMapper" />
+        <property name="NodeType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNodeType" />
+        <property name="DocumentType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocumentType" />
+        <property name="Implementation" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlImplementation" />
+        <property name="Name" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="LocalName" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="DocumentElement" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlElement" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocument" />
+        <property name="XmlResolver" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlResolver" />
+        <property name="NameTable" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNameTable" />
+        <property name="PreserveWhitespace" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
+        <property name="InnerXml" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="Save(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Save(System.IO.TextWriter)" argnames="writer" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Save(System.IO.Stream)" argnames="outStream" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Save(System.String)" argnames="filename" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="LoadXml(System.String)" argnames="xml" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Load(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
+        <method name="Load(System.IO.TextReader)" argnames="txtReader" returntype="System.Void" />
+        <method name="Load(System.IO.Stream)" argnames="inStream" returntype="System.Void" />
+        <method name="Load(System.String)" argnames="filename" returntype="System.Void" />
+        <method name="ReadNode(System.Xml.XmlReader)" argnames="reader" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String)" argnames="type, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.String, System.String, System.String)" argnames="nodeTypeString, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String, System.String)" argnames="type, prefix, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateElement(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" returntype="System.Xml.XmlElement" />
+        <method name="CreateAttribute(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
+        <method name="ImportNode(System.Xml.XmlNode, System.Boolean)" argnames="node, deep" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="GetElementById(System.String)" argnames="elemId" returntype="System.Xml.XmlElement" />
+        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
+        <method name="GetElementsByTagName(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
+        <method name="CreateWhitespace(System.String)" argnames="text" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlWhitespace" />
+        <method name="CreateNavigator(System.Xml.XmlNode)" argnames="node" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="CreateSignificantWhitespace(System.String)" argnames="text" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlSignificantWhitespace" />
+        <method name="CreateTextNode(System.String)" argnames="text" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlText" />
+        <method name="CreateXmlDeclaration(System.String, System.String, System.String)" argnames="version, encoding, standalone" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDeclaration" />
+        <method name="CreateProcessingInstruction(System.String, System.String)" argnames="target, data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlProcessingInstruction" />
+        <method name="CreateEntityReference(System.String)" argnames="name" returntype="System.Xml.XmlEntityReference" />
+        <method name="CreateDocumentFragment" argnames="" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentFragment" />
+        <method name="CreateDocumentType(System.String, System.String, System.String, System.String)" argnames="name, publicId, systemId, internalSubset" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentType" />
+        <method name="CreateComment(System.String)" argnames="data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlComment" />
+        <method name="CreateCDataSection(System.String)" argnames="data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlCDataSection" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="xw" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetRowFromElement(System.Xml.XmlElement)" argnames="e" returntype="System.Data.DataRow" />
+        <method name="GetElementFromRow(System.Data.DataRow)" argnames="r" returntype="System.Xml.XmlElement" />
+        <method name="CreateAttribute(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
+        <method name="CreateElement(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
+        <method name="CreateAttribute(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
+        <method name="CreateElement(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="NodeInserting" inherited="System.Xml.XmlDocument" />
+        <event name="NodeInserted" inherited="System.Xml.XmlDocument" />
+        <event name="NodeRemoving" inherited="System.Xml.XmlDocument" />
+        <event name="NodeRemoved" inherited="System.Xml.XmlDocument" />
+        <event name="NodeChanging" inherited="System.Xml.XmlDocument" />
+        <event name="NodeChanged" inherited="System.Xml.XmlDocument" />
+    </class>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/System.Data.Common/DbTypes.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/System.Data.Common/DbTypes.cs
@@ -1,35 +1,35 @@
-using System;
-
-namespace System.Data.Common
-{
-	internal class DbTypes
-	{
-		#region .Net types constants
-
-		internal static readonly Type TypeOfBoolean = typeof(Boolean);
-		internal static readonly Type TypeOfSByte = typeof(SByte);
-		internal static readonly Type TypeOfChar = typeof(Char);
-		internal static readonly Type TypeOfInt16 = typeof(Int16);
-		internal static readonly Type TypeOfInt32 = typeof(Int32);
-		internal static readonly Type TypeOfInt64 = typeof(Int64);
-		internal static readonly Type TypeOfByte = typeof(Byte);
-		internal static readonly Type TypeOfUInt16 = typeof(UInt16);
-		internal static readonly Type TypeOfUInt32 = typeof(UInt32);
-		internal static readonly Type TypeOfUInt64 = typeof(UInt64);
-		internal static readonly Type TypeOfDouble = typeof(Double);
-		internal static readonly Type TypeOfSingle = typeof(Single);
-		internal static readonly Type TypeOfDecimal = typeof(Decimal);
-		internal static readonly Type TypeOfString = typeof(String);
-		internal static readonly Type TypeOfDateTime = typeof(DateTime);		
-		internal static readonly Type TypeOfObject = typeof(object);
-		internal static readonly Type TypeOfGuid = typeof(Guid);
-		internal static readonly Type TypeOfType = typeof(Type);
-
-		// additional types
-		internal static readonly Type TypeOfByteArray = typeof(Byte[]);
-		internal static readonly Type TypeOfFloat = typeof (float);
-		internal static readonly Type TypeOfTimespan = typeof (TimeSpan);
-
-		#endregion // .Net types constants
-	}
-}
+using System;
+
+namespace System.Data.Common
+{
+	internal class DbTypes
+	{
+		#region .Net types constants
+
+		internal static readonly Type TypeOfBoolean = typeof(Boolean);
+		internal static readonly Type TypeOfSByte = typeof(SByte);
+		internal static readonly Type TypeOfChar = typeof(Char);
+		internal static readonly Type TypeOfInt16 = typeof(Int16);
+		internal static readonly Type TypeOfInt32 = typeof(Int32);
+		internal static readonly Type TypeOfInt64 = typeof(Int64);
+		internal static readonly Type TypeOfByte = typeof(Byte);
+		internal static readonly Type TypeOfUInt16 = typeof(UInt16);
+		internal static readonly Type TypeOfUInt32 = typeof(UInt32);
+		internal static readonly Type TypeOfUInt64 = typeof(UInt64);
+		internal static readonly Type TypeOfDouble = typeof(Double);
+		internal static readonly Type TypeOfSingle = typeof(Single);
+		internal static readonly Type TypeOfDecimal = typeof(Decimal);
+		internal static readonly Type TypeOfString = typeof(String);
+		internal static readonly Type TypeOfDateTime = typeof(DateTime);		
+		internal static readonly Type TypeOfObject = typeof(object);
+		internal static readonly Type TypeOfGuid = typeof(Guid);
+		internal static readonly Type TypeOfType = typeof(Type);
+
+		// additional types
+		internal static readonly Type TypeOfByteArray = typeof(Byte[]);
+		internal static readonly Type TypeOfFloat = typeof (float);
+		internal static readonly Type TypeOfTimespan = typeof (TimeSpan);
+
+		#endregion // .Net types constants
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/System.Data.Common/ExceptionHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/System.Data.Common/ExceptionHelper.cs
@@ -1,234 +1,234 @@
-//
-// System.Data.Common.ExceptionHelper
-//
-// Author:
-//   Boris Kirzner (borisk@mainsoft.com)
-//
-
-using System;
-using System.Globalization;
-
-namespace System.Data.Common
-{
-	internal sealed class ExceptionHelper
-	{
-		internal static ArgumentException InvalidSizeValue (int value)
-		{
-			string [] args = new string [] {value.ToString ()};
-			return new ArgumentException  (GetExceptionMessage ("Invalid parameter Size value '{0}'. The value must be greater than or equal to 0.",args));
-		}
-
-		internal static void CheckEnumValue (Type enumType, object value)
-		{
-			if (!Enum.IsDefined (enumType, value))
-				throw InvalidEnumValueException (enumType.Name, value);
-		}
-
-		internal static ArgumentException InvalidEnumValueException (String enumeration, object value)
-		{
-			string msg = string.Format (CultureInfo.InvariantCulture,
-				"The {0} enumeration value, {1}, is invalid.",
-				enumeration, value);
-			return new ArgumentOutOfRangeException (enumeration, msg);
-		}
-
-		internal static ArgumentOutOfRangeException InvalidDataRowVersion (DataRowVersion value)
-		{
-			object [] args = new object [] { "DataRowVersion", value.ToString () } ;
-			return new ArgumentOutOfRangeException  (GetExceptionMessage ("{0}: Invalid DataRow Version enumeration value: {1}",args));
-		}
-
-		internal static ArgumentOutOfRangeException InvalidParameterDirection (ParameterDirection value)
-		{
-			object [] args = new object [] { "ParameterDirection", value.ToString () } ;
-			return new ArgumentOutOfRangeException  (GetExceptionMessage ("Invalid direction '{0}' for '{1}' parameter.",args));
-		}
-
-		internal static InvalidOperationException NoStoredProcedureExists (string procedureName) {
-			object [] args = new object [1] { procedureName } ;
-			return new InvalidOperationException  (GetExceptionMessage ("The stored procedure '{0}' doesn't exist.", args));
-		}
-
-		internal static ArgumentNullException ArgumentNull (string parameter)
-		{
-			return new ArgumentNullException (parameter);
-		}
-
-		internal static InvalidOperationException TransactionRequired ()
-		{
-			return new InvalidOperationException  (GetExceptionMessage ("Execute requires the command to have a transaction object when the connection assigned to the command is in a pending local transaction.  The Transaction property of the command has not been initialized."));
-		}
-
-		internal static ArgumentOutOfRangeException InvalidOleDbType (int value)
-		{
-			string [] args = new string [] { value.ToString() };
-			return new ArgumentOutOfRangeException  (GetExceptionMessage ("Invalid OleDbType enumeration value: {0}",args));
-		}
- 
-		internal static ArgumentException InvalidDbType(int value)
-		{
-			string [] args = new string [] { value.ToString () };
-			return new ArgumentException  (GetExceptionMessage ("No mapping exists from DbType {0} to a known {1}.",args));
-		}
-
-		internal static InvalidOperationException DeriveParametersNotSupported(Type type,CommandType commandType)
-		{
-			string [] args = new string [] { type.ToString(),commandType.ToString() };
-			return new InvalidOperationException  (GetExceptionMessage ("{0} DeriveParameters only supports CommandType.StoredProcedure, not CommandType.{1}.",args));
-		}
-
-		internal static InvalidOperationException ReaderClosed (string mehodName)
-		{
-			string [] args = new string [] { mehodName };
-			return new InvalidOperationException  (GetExceptionMessage ("Invalid attempt to {0} when reader is closed.",args));
-		}
-
-		internal static ArgumentOutOfRangeException InvalidSqlDbType (int value)
-		{
-			string [] args = new string [] { value.ToString () };
-			return new ArgumentOutOfRangeException  (GetExceptionMessage ("{0}: Invalid SqlDbType enumeration value: {1}.",args));
-		}
-
-		internal static ArgumentException UnknownDataType (string type1, string type2)
-		{
-			string [] args = new string [] { type1, type2 };
-			return new ArgumentException  (GetExceptionMessage ("No mapping exists from DbType {0} to a known {1}.",args));
-		}
-
-		internal static InvalidOperationException TransactionNotInitialized ()
-		{
-			return new InvalidOperationException  (GetExceptionMessage ("Execute requires the command to have a transaction object when the connection assigned to the command is in a pending local transaction.  The Transaction property of the command has not been initialized."));
-		}
-
-		internal static InvalidOperationException TransactionNotUsable (Type type)
-		{
-			return new InvalidOperationException (string.Format (
-				CultureInfo.InvariantCulture,
-				"This {0} has completed; it is no longer usable.",
-				type.Name));
-		}
-
-		internal static InvalidOperationException ParametersNotInitialized (int parameterPosition,string parameterName,string parameterType)
-		{
-			object [] args = new object [] { parameterPosition, parameterName, parameterType };
-			return new InvalidOperationException  (GetExceptionMessage ("Parameter {0}: '{1}', the property DbType is uninitialized: OleDbType.{2}.",args));
-		}
-
-		internal static InvalidOperationException WrongParameterSize(string provider)
-		{
-			string [] args = new string [] { provider };
-			return new InvalidOperationException  (GetExceptionMessage ("{0}.Prepare method requires all variable length parameters to have an explicitly set non-zero Size.",args));
-		}
-
-		internal static InvalidOperationException ConnectionNotOpened (string operationName, string connectionState)
-		{
-			object [] args = new object [] { operationName, connectionState };
-			return new InvalidOperationException  (GetExceptionMessage ("{0} requires an open and available Connection. The connection's current state is {1}.",args));
-		}
-
-		internal static InvalidOperationException ConnectionNotInitialized (string methodName)
-		{
-			object [] args = new object [] { methodName };
-			return new InvalidOperationException (GetExceptionMessage ("{0}: Connection property has not been initialized.",args));
-		}
-
-		internal static InvalidOperationException OpenConnectionRequired (string methodName, object connectionState)
-		{
-			object [] args = new object [] { methodName, connectionState };
-			return new InvalidOperationException (GetExceptionMessage ("{0} requires an open and available Connection. The connection's current state is {1}.",args));
-		}
-
-		internal static InvalidOperationException OpenedReaderExists ()
-		{
-			return new InvalidOperationException (GetExceptionMessage ("There is already an open DataReader associated with this Connection which must be closed first."));
-		}
-
-		internal static InvalidOperationException ConnectionAlreadyOpen (object connectionState)
-		{
-			object [] args = new object [] { connectionState };
-			return new InvalidOperationException (GetExceptionMessage ("The connection is already Open (state={0}).",args));
-		}
-
-		internal static InvalidOperationException ConnectionClosed ()
-		{
-			return new InvalidOperationException ("Invalid operation. The Connection is closed.");
-		}
-
-		internal static InvalidOperationException ConnectionStringNotInitialized ()
-		{
-			return new InvalidOperationException (GetExceptionMessage ("The ConnectionString property has not been initialized."));
-		}
-
-		internal static InvalidOperationException ConnectionIsBusy (object commandType,object connectionState)
-		{
-			object [] args = new object [] { commandType.ToString (), connectionState.ToString () };
-			return new InvalidOperationException (GetExceptionMessage ("The {0} is currently busy {1}.",args));
-		}
-
-		internal static InvalidOperationException NotAllowedWhileConnectionOpen (string propertyName, object connectionState)
-		{
-			object [] args = new object [] { propertyName, connectionState };
-			return new InvalidOperationException (GetExceptionMessage ("Not allowed to change the '{0}' property while the connection (state={1}).",args));
-		}
-
-		internal static ArgumentException OleDbNoProviderSpecified ()
-		{
-			return new ArgumentException (GetExceptionMessage ("An OLE DB Provider was not specified in the ConnectionString.  An example would be, 'Provider=SQLOLEDB;'."));
-		}
-
-		internal static ArgumentException InvalidValueForKey (string key)
-		{
-			string [] args = new string [] { key };
-			return new ArgumentException (String.Format ("Invalid value for key {0}",args));
-		}
-
-		internal static InvalidOperationException ParameterSizeNotInitialized( int parameterIndex, string parameterName,string parameterType,int parameterSize)
-		{
-			object [] args = new object [] { parameterIndex.ToString (), parameterName, parameterType, parameterSize.ToString () };
-			return new InvalidOperationException (GetExceptionMessage ("Parameter {0}: '{1}' of type: {2}, the property Size has an invalid size: {3}",args));
-		}
-
-		internal static ArgumentException InvalidUpdateStatus (UpdateStatus status)
-		{
-			object [] args = new object [] { status };
-			return new ArgumentException (GetExceptionMessage ("Invalid UpdateStatus: {0}",args));
-		}
-
-		internal static InvalidOperationException UpdateRequiresCommand (string command)
-		{
-			object [] args = new object [] { command };
-			return new InvalidOperationException (GetExceptionMessage ("Auto SQL generation during {0} requires a valid SelectCommand.",args));
-		}
-
-		internal static DataException RowUpdatedError ()
-		{
-			return new DataException (GetExceptionMessage ("RowUpdatedEvent: Errors occurred; no additional is information available."));
-		}
-
-		internal static ArgumentNullException CollectionNoNullsAllowed (object collection, object objectsType)
-		{
-			object [] args = new object [] {collection.GetType ().ToString (), objectsType.ToString ()};
-			return new ArgumentNullException (GetExceptionMessage ("The {0} only accepts non-null {1} type objects.", args));
-		}
-
-		internal static ArgumentException CollectionAlreadyContains(object objectType,string propertyName, object propertyValue, object collection)
-		{
-			object [] args = new object [] {objectType.ToString (), propertyName, propertyValue, collection.GetType ().ToString ()};
-			return new ArgumentException (GetExceptionMessage ("The {0} with {1} '{2}' is already contained by this {3}.",args));
-		}
-
-		internal static string GetExceptionMessage (string exceptionMessage,object [] args)
-		{
-			if ((args == null) || (args.Length == 0)) {
-				return exceptionMessage;
-			} else {
-				return String.Format (exceptionMessage,args);
-			}
-		}
-
-		internal static string GetExceptionMessage (string exceptionMessage)
-		{
-			return GetExceptionMessage (exceptionMessage, null);
-		}
-	}
-}
+//
+// System.Data.Common.ExceptionHelper
+//
+// Author:
+//   Boris Kirzner (borisk@mainsoft.com)
+//
+
+using System;
+using System.Globalization;
+
+namespace System.Data.Common
+{
+	internal sealed class ExceptionHelper
+	{
+		internal static ArgumentException InvalidSizeValue (int value)
+		{
+			string [] args = new string [] {value.ToString ()};
+			return new ArgumentException  (GetExceptionMessage ("Invalid parameter Size value '{0}'. The value must be greater than or equal to 0.",args));
+		}
+
+		internal static void CheckEnumValue (Type enumType, object value)
+		{
+			if (!Enum.IsDefined (enumType, value))
+				throw InvalidEnumValueException (enumType.Name, value);
+		}
+
+		internal static ArgumentException InvalidEnumValueException (String enumeration, object value)
+		{
+			string msg = string.Format (CultureInfo.InvariantCulture,
+				"The {0} enumeration value, {1}, is invalid.",
+				enumeration, value);
+			return new ArgumentOutOfRangeException (enumeration, msg);
+		}
+
+		internal static ArgumentOutOfRangeException InvalidDataRowVersion (DataRowVersion value)
+		{
+			object [] args = new object [] { "DataRowVersion", value.ToString () } ;
+			return new ArgumentOutOfRangeException  (GetExceptionMessage ("{0}: Invalid DataRow Version enumeration value: {1}",args));
+		}
+
+		internal static ArgumentOutOfRangeException InvalidParameterDirection (ParameterDirection value)
+		{
+			object [] args = new object [] { "ParameterDirection", value.ToString () } ;
+			return new ArgumentOutOfRangeException  (GetExceptionMessage ("Invalid direction '{0}' for '{1}' parameter.",args));
+		}
+
+		internal static InvalidOperationException NoStoredProcedureExists (string procedureName) {
+			object [] args = new object [1] { procedureName } ;
+			return new InvalidOperationException  (GetExceptionMessage ("The stored procedure '{0}' doesn't exist.", args));
+		}
+
+		internal static ArgumentNullException ArgumentNull (string parameter)
+		{
+			return new ArgumentNullException (parameter);
+		}
+
+		internal static InvalidOperationException TransactionRequired ()
+		{
+			return new InvalidOperationException  (GetExceptionMessage ("Execute requires the command to have a transaction object when the connection assigned to the command is in a pending local transaction.  The Transaction property of the command has not been initialized."));
+		}
+
+		internal static ArgumentOutOfRangeException InvalidOleDbType (int value)
+		{
+			string [] args = new string [] { value.ToString() };
+			return new ArgumentOutOfRangeException  (GetExceptionMessage ("Invalid OleDbType enumeration value: {0}",args));
+		}
+ 
+		internal static ArgumentException InvalidDbType(int value)
+		{
+			string [] args = new string [] { value.ToString () };
+			return new ArgumentException  (GetExceptionMessage ("No mapping exists from DbType {0} to a known {1}.",args));
+		}
+
+		internal static InvalidOperationException DeriveParametersNotSupported(Type type,CommandType commandType)
+		{
+			string [] args = new string [] { type.ToString(),commandType.ToString() };
+			return new InvalidOperationException  (GetExceptionMessage ("{0} DeriveParameters only supports CommandType.StoredProcedure, not CommandType.{1}.",args));
+		}
+
+		internal static InvalidOperationException ReaderClosed (string mehodName)
+		{
+			string [] args = new string [] { mehodName };
+			return new InvalidOperationException  (GetExceptionMessage ("Invalid attempt to {0} when reader is closed.",args));
+		}
+
+		internal static ArgumentOutOfRangeException InvalidSqlDbType (int value)
+		{
+			string [] args = new string [] { value.ToString () };
+			return new ArgumentOutOfRangeException  (GetExceptionMessage ("{0}: Invalid SqlDbType enumeration value: {1}.",args));
+		}
+
+		internal static ArgumentException UnknownDataType (string type1, string type2)
+		{
+			string [] args = new string [] { type1, type2 };
+			return new ArgumentException  (GetExceptionMessage ("No mapping exists from DbType {0} to a known {1}.",args));
+		}
+
+		internal static InvalidOperationException TransactionNotInitialized ()
+		{
+			return new InvalidOperationException  (GetExceptionMessage ("Execute requires the command to have a transaction object when the connection assigned to the command is in a pending local transaction.  The Transaction property of the command has not been initialized."));
+		}
+
+		internal static InvalidOperationException TransactionNotUsable (Type type)
+		{
+			return new InvalidOperationException (string.Format (
+				CultureInfo.InvariantCulture,
+				"This {0} has completed; it is no longer usable.",
+				type.Name));
+		}
+
+		internal static InvalidOperationException ParametersNotInitialized (int parameterPosition,string parameterName,string parameterType)
+		{
+			object [] args = new object [] { parameterPosition, parameterName, parameterType };
+			return new InvalidOperationException  (GetExceptionMessage ("Parameter {0}: '{1}', the property DbType is uninitialized: OleDbType.{2}.",args));
+		}
+
+		internal static InvalidOperationException WrongParameterSize(string provider)
+		{
+			string [] args = new string [] { provider };
+			return new InvalidOperationException  (GetExceptionMessage ("{0}.Prepare method requires all variable length parameters to have an explicitly set non-zero Size.",args));
+		}
+
+		internal static InvalidOperationException ConnectionNotOpened (string operationName, string connectionState)
+		{
+			object [] args = new object [] { operationName, connectionState };
+			return new InvalidOperationException  (GetExceptionMessage ("{0} requires an open and available Connection. The connection's current state is {1}.",args));
+		}
+
+		internal static InvalidOperationException ConnectionNotInitialized (string methodName)
+		{
+			object [] args = new object [] { methodName };
+			return new InvalidOperationException (GetExceptionMessage ("{0}: Connection property has not been initialized.",args));
+		}
+
+		internal static InvalidOperationException OpenConnectionRequired (string methodName, object connectionState)
+		{
+			object [] args = new object [] { methodName, connectionState };
+			return new InvalidOperationException (GetExceptionMessage ("{0} requires an open and available Connection. The connection's current state is {1}.",args));
+		}
+
+		internal static InvalidOperationException OpenedReaderExists ()
+		{
+			return new InvalidOperationException (GetExceptionMessage ("There is already an open DataReader associated with this Connection which must be closed first."));
+		}
+
+		internal static InvalidOperationException ConnectionAlreadyOpen (object connectionState)
+		{
+			object [] args = new object [] { connectionState };
+			return new InvalidOperationException (GetExceptionMessage ("The connection is already Open (state={0}).",args));
+		}
+
+		internal static InvalidOperationException ConnectionClosed ()
+		{
+			return new InvalidOperationException ("Invalid operation. The Connection is closed.");
+		}
+
+		internal static InvalidOperationException ConnectionStringNotInitialized ()
+		{
+			return new InvalidOperationException (GetExceptionMessage ("The ConnectionString property has not been initialized."));
+		}
+
+		internal static InvalidOperationException ConnectionIsBusy (object commandType,object connectionState)
+		{
+			object [] args = new object [] { commandType.ToString (), connectionState.ToString () };
+			return new InvalidOperationException (GetExceptionMessage ("The {0} is currently busy {1}.",args));
+		}
+
+		internal static InvalidOperationException NotAllowedWhileConnectionOpen (string propertyName, object connectionState)
+		{
+			object [] args = new object [] { propertyName, connectionState };
+			return new InvalidOperationException (GetExceptionMessage ("Not allowed to change the '{0}' property while the connection (state={1}).",args));
+		}
+
+		internal static ArgumentException OleDbNoProviderSpecified ()
+		{
+			return new ArgumentException (GetExceptionMessage ("An OLE DB Provider was not specified in the ConnectionString.  An example would be, 'Provider=SQLOLEDB;'."));
+		}
+
+		internal static ArgumentException InvalidValueForKey (string key)
+		{
+			string [] args = new string [] { key };
+			return new ArgumentException (String.Format ("Invalid value for key {0}",args));
+		}
+
+		internal static InvalidOperationException ParameterSizeNotInitialized( int parameterIndex, string parameterName,string parameterType,int parameterSize)
+		{
+			object [] args = new object [] { parameterIndex.ToString (), parameterName, parameterType, parameterSize.ToString () };
+			return new InvalidOperationException (GetExceptionMessage ("Parameter {0}: '{1}' of type: {2}, the property Size has an invalid size: {3}",args));
+		}
+
+		internal static ArgumentException InvalidUpdateStatus (UpdateStatus status)
+		{
+			object [] args = new object [] { status };
+			return new ArgumentException (GetExceptionMessage ("Invalid UpdateStatus: {0}",args));
+		}
+
+		internal static InvalidOperationException UpdateRequiresCommand (string command)
+		{
+			object [] args = new object [] { command };
+			return new InvalidOperationException (GetExceptionMessage ("Auto SQL generation during {0} requires a valid SelectCommand.",args));
+		}
+
+		internal static DataException RowUpdatedError ()
+		{
+			return new DataException (GetExceptionMessage ("RowUpdatedEvent: Errors occurred; no additional is information available."));
+		}
+
+		internal static ArgumentNullException CollectionNoNullsAllowed (object collection, object objectsType)
+		{
+			object [] args = new object [] {collection.GetType ().ToString (), objectsType.ToString ()};
+			return new ArgumentNullException (GetExceptionMessage ("The {0} only accepts non-null {1} type objects.", args));
+		}
+
+		internal static ArgumentException CollectionAlreadyContains(object objectType,string propertyName, object propertyValue, object collection)
+		{
+			object [] args = new object [] {objectType.ToString (), propertyName, propertyValue, collection.GetType ().ToString ()};
+			return new ArgumentException (GetExceptionMessage ("The {0} with {1} '{2}' is already contained by this {3}.",args));
+		}
+
+		internal static string GetExceptionMessage (string exceptionMessage,object [] args)
+		{
+			if ((args == null) || (args.Length == 0)) {
+				return exceptionMessage;
+			} else {
+				return String.Format (exceptionMessage,args);
+			}
+		}
+
+		internal static string GetExceptionMessage (string exceptionMessage)
+		{
+			return GetExceptionMessage (exceptionMessage, null);
+		}
+	}
+}
--- /dev/null
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/System.Data/KeyRestrictionBehavior.cs
@@ -0,0 +1,41 @@
+//
+// System.Data.KeyRestrictionBehavior
+//
+// Author:
+//     Tim Coleman <tim@timcoleman.com>
+//
+// Copyright (C) Tim Coleman, 2003
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Data {
+	[Serializable]
+	public enum KeyRestrictionBehavior
+	{
+		AllowOnly,
+		PreventUsage
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/Mono.Data.SqlExpressions/DateComparisonTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/Mono.Data.SqlExpressions/DateComparisonTest.cs
@@ -1,34 +1,34 @@
-using System;
-using System.Data;
-using NUnit.Framework;
-
-namespace Monotests_Mono.Data.SqlExpressions
-{
-	[TestFixture]	
-	public class DateComparisonTest
-	{
-		private DataSet dataSet;
-
-		[SetUp]
-		public void SetUp()
-		{
-			dataSet = new DataSet();
-			dataSet.ReadXml("Test/Mono.Data.SqlExpressions/dateComparisonTest.xml", XmlReadMode.InferSchema);
-		}
-
-		[Test]
-		public void TestDateComparisonRight()
-		{
-			DataView dataView = new DataView(dataSet.Tables["thing"], "#2009-07-19 00:01:00# = start", "", DataViewRowState.CurrentRows);
-			Assert.AreEqual (1, dataView.Count);
-		}
-		
-		[Test]
-		[Category ("NotWorking")]
-		public void TestDateComparisonLeft()
-		{
-			DataView dataView = new DataView(dataSet.Tables["thing"], "start = #2009-07-19 00:01:00#", "", DataViewRowState.CurrentRows);
-			Assert.AreEqual (1, dataView.Count);
-		}
-	}
-}
+using System;
+using System.Data;
+using NUnit.Framework;
+
+namespace Monotests_Mono.Data.SqlExpressions
+{
+	[TestFixture]	
+	public class DateComparisonTest
+	{
+		private DataSet dataSet;
+
+		[SetUp]
+		public void SetUp()
+		{
+			dataSet = new DataSet();
+			dataSet.ReadXml("Test/Mono.Data.SqlExpressions/dateComparisonTest.xml", XmlReadMode.InferSchema);
+		}
+
+		[Test]
+		public void TestDateComparisonRight()
+		{
+			DataView dataView = new DataView(dataSet.Tables["thing"], "#2009-07-19 00:01:00# = start", "", DataViewRowState.CurrentRows);
+			Assert.AreEqual (1, dataView.Count);
+		}
+		
+		[Test]
+		[Category ("NotWorking")]
+		public void TestDateComparisonLeft()
+		{
+			DataView dataView = new DataView(dataSet.Tables["thing"], "start = #2009-07-19 00:01:00#", "", DataViewRowState.CurrentRows);
+			Assert.AreEqual (1, dataView.Count);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionAttributeTest.cs
@@ -1,182 +1,182 @@
-//
-// DBDataPermissionAttributeTest.cs -
-//	NUnit Test Cases for DBDataPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Security;
-using System.Security.Permissions;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.Common
-{
-	public class NonAbstractDBDataPermissionAttribute : DBDataPermissionAttribute
-	{
-		public NonAbstractDBDataPermissionAttribute (SecurityAction action)
-			: base (action)
-		{
-		}
-
-		public override IPermission CreatePermission()
-		{
-	 		return null;
-		}
-	}
-
-	[TestFixture]
-#if MOBILE
-	[Ignore ("CAS is not supported and parts will be linked away")]
-#endif
-	public class DBDataPermissionAttributeTest
-	{
-		[Test]
-		public void Default ()
-		{
-			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
-			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
-			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
-			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			new NonAbstractDBDataPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void AllowBlankPassword ()
-		{
-			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
-			Assert.IsFalse (a.AllowBlankPassword, "Default");
-			a.AllowBlankPassword = true;
-			Assert.IsTrue (a.AllowBlankPassword, "True");
-			a.AllowBlankPassword = false;
-			Assert.IsFalse (a.AllowBlankPassword, "False");
-		}
-
-		[Test]
-		public void ConnectionString ()
-		{
-			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
-			a.ConnectionString = String.Empty;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
-			a.ConnectionString = "Mono";
-			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
-			a.ConnectionString = null;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
-		}
-
-		[Test]
-		public void KeyRestrictionBehavior_All ()
-		{
-			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
-			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
-		}
-
-		[Test]
-		public void KeyRestrictionBehavior_Invalid ()
-		{
-			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
-			try {
-				a.KeyRestrictionBehavior = (KeyRestrictionBehavior) 666;
-				Assert.Fail ("#1");
-			} catch (ArgumentOutOfRangeException ex) {
-				// The KeyRestrictionBehavior enumeration value, 666, is invalid
-				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsTrue (ex.Message.IndexOf ("KeyRestrictionBehavior") != -1, "#5");
-				Assert.IsTrue (ex.Message.IndexOf ("666") != -1, "#6");
-				Assert.IsNotNull (ex.ParamName, "#7");
-				Assert.AreEqual ("KeyRestrictionBehavior", ex.ParamName, "#8");
-			}
-		}
-
-		[Test]
-		public void KeyRestriction ()
-		{
-			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictions = String.Empty;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
-			a.KeyRestrictions = "Mono";
-			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
-			a.KeyRestrictions = null;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (DBDataPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute) attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
+//
+// DBDataPermissionAttributeTest.cs -
+//	NUnit Test Cases for DBDataPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Security;
+using System.Security.Permissions;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.Common
+{
+	public class NonAbstractDBDataPermissionAttribute : DBDataPermissionAttribute
+	{
+		public NonAbstractDBDataPermissionAttribute (SecurityAction action)
+			: base (action)
+		{
+		}
+
+		public override IPermission CreatePermission()
+		{
+	 		return null;
+		}
+	}
+
+	[TestFixture]
+#if MOBILE
+	[Ignore ("CAS is not supported and parts will be linked away")]
+#endif
+	public class DBDataPermissionAttributeTest
+	{
+		[Test]
+		public void Default ()
+		{
+			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
+			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
+			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
+			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			new NonAbstractDBDataPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void AllowBlankPassword ()
+		{
+			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
+			Assert.IsFalse (a.AllowBlankPassword, "Default");
+			a.AllowBlankPassword = true;
+			Assert.IsTrue (a.AllowBlankPassword, "True");
+			a.AllowBlankPassword = false;
+			Assert.IsFalse (a.AllowBlankPassword, "False");
+		}
+
+		[Test]
+		public void ConnectionString ()
+		{
+			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
+			a.ConnectionString = String.Empty;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
+			a.ConnectionString = "Mono";
+			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
+			a.ConnectionString = null;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
+		}
+
+		[Test]
+		public void KeyRestrictionBehavior_All ()
+		{
+			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
+			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
+		}
+
+		[Test]
+		public void KeyRestrictionBehavior_Invalid ()
+		{
+			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
+			try {
+				a.KeyRestrictionBehavior = (KeyRestrictionBehavior) 666;
+				Assert.Fail ("#1");
+			} catch (ArgumentOutOfRangeException ex) {
+				// The KeyRestrictionBehavior enumeration value, 666, is invalid
+				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsTrue (ex.Message.IndexOf ("KeyRestrictionBehavior") != -1, "#5");
+				Assert.IsTrue (ex.Message.IndexOf ("666") != -1, "#6");
+				Assert.IsNotNull (ex.ParamName, "#7");
+				Assert.AreEqual ("KeyRestrictionBehavior", ex.ParamName, "#8");
+			}
+		}
+
+		[Test]
+		public void KeyRestriction ()
+		{
+			DBDataPermissionAttribute a = new NonAbstractDBDataPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictions = String.Empty;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
+			a.KeyRestrictions = "Mono";
+			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
+			a.KeyRestrictions = null;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (DBDataPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute) attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.Common/DBDataPermissionTest.cs
@@ -500,7 +500,7 @@ namespace MonoTests.System.Data.Common {
 		{
 			NonAbstractDBDataPermission empty = new NonAbstractDBDataPermission (PermissionState.None);
 			NonAbstractDBDataPermission union = (NonAbstractDBDataPermission) empty.Union (empty);
-			Assert.IsNull (union, "Empty U Empty");
+			Assert.IsNotNull (union, "Empty U Empty");
 
 			NonAbstractDBDataPermission dbdp1 = new NonAbstractDBDataPermission (PermissionState.None);
 			dbdp1.Add (defaultConnectString, String.Empty, KeyRestrictionBehavior.AllowOnly);
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.Common/DbConnectionStringBuilderTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.Common/DbConnectionStringBuilderTest.cs
@@ -1798,7 +1798,7 @@ namespace MonoTests.System.Data.Common
                         Assert.AreEqual (builder.GetType ().ToString (), className, "#1");
 
                         AttributeCollection collection = ictd.GetAttributes ();
-                        Assert.AreEqual (1, collection.Count, "#2");
+                        Assert.AreEqual (2, collection.Count, "#2");
                         object [] attr = builder.GetType ().GetCustomAttributes (typeof (DefaultMemberAttribute), false);
                         if (attr.Length > 0) {
                                 DefaultMemberAttribute defAtt = (DefaultMemberAttribute) attr [0];
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.Odbc/OdbcPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.Odbc/OdbcPermissionAttributeTest.cs
@@ -1,173 +1,173 @@
-//
-// OdbcPermissionAttributeTest.cs -
-//	NUnit Test Cases for OdbcPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Data;
-using System.Data.Odbc;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.Data.Odbc {
-
-	[TestFixture]
-	public class OdbcPermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
-			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
-			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
-			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
-			OdbcPermission odbcp = (OdbcPermission)a.CreatePermission ();
-			Assert.IsFalse (odbcp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			a.Unrestricted = true;
-			OdbcPermission odbcp = (OdbcPermission)a.CreatePermission ();
-			Assert.IsTrue (odbcp.IsUnrestricted (), "IsUnrestricted");
-			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
-			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
-
-			a.Unrestricted = false;
-			odbcp = (OdbcPermission)a.CreatePermission ();
-			Assert.IsFalse (odbcp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		public void AllowBlankPassword ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			Assert.IsFalse (a.AllowBlankPassword, "Default");
-			a.AllowBlankPassword = true;
-			Assert.IsTrue (a.AllowBlankPassword, "True");
-			a.AllowBlankPassword = false;
-			Assert.IsFalse (a.AllowBlankPassword, "False");
-		}
-
-		[Test]
-		public void ConnectionString ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			a.ConnectionString = String.Empty;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
-			a.ConnectionString = "Mono";
-			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
-			a.ConnectionString = null;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
-		}
-
-		[Test]
-		public void KeyRestrictionBehavior_All ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
-			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void KeyRestrictionBehavior_Invalid ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictionBehavior = (KeyRestrictionBehavior)Int32.MinValue;
-		}
-
-		[Test]
-		public void KeyRestriction ()
-		{
-			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictions = String.Empty;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
-			a.KeyRestrictions = "Mono";
-			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
-			a.KeyRestrictions = null;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (OdbcPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
+//
+// OdbcPermissionAttributeTest.cs -
+//	NUnit Test Cases for OdbcPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Data;
+using System.Data.Odbc;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.Data.Odbc {
+
+	[TestFixture]
+	public class OdbcPermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
+			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
+			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
+			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
+			OdbcPermission odbcp = (OdbcPermission)a.CreatePermission ();
+			Assert.IsFalse (odbcp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			a.Unrestricted = true;
+			OdbcPermission odbcp = (OdbcPermission)a.CreatePermission ();
+			Assert.IsTrue (odbcp.IsUnrestricted (), "IsUnrestricted");
+			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
+			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
+
+			a.Unrestricted = false;
+			odbcp = (OdbcPermission)a.CreatePermission ();
+			Assert.IsFalse (odbcp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		public void AllowBlankPassword ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			Assert.IsFalse (a.AllowBlankPassword, "Default");
+			a.AllowBlankPassword = true;
+			Assert.IsTrue (a.AllowBlankPassword, "True");
+			a.AllowBlankPassword = false;
+			Assert.IsFalse (a.AllowBlankPassword, "False");
+		}
+
+		[Test]
+		public void ConnectionString ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			a.ConnectionString = String.Empty;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
+			a.ConnectionString = "Mono";
+			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
+			a.ConnectionString = null;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
+		}
+
+		[Test]
+		public void KeyRestrictionBehavior_All ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
+			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void KeyRestrictionBehavior_Invalid ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictionBehavior = (KeyRestrictionBehavior)Int32.MinValue;
+		}
+
+		[Test]
+		public void KeyRestriction ()
+		{
+			OdbcPermissionAttribute a = new OdbcPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictions = String.Empty;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
+			a.KeyRestrictions = "Mono";
+			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
+			a.KeyRestrictions = null;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (OdbcPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.OleDb/OleDbPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.OleDb/OleDbPermissionAttributeTest.cs
@@ -1,198 +1,198 @@
-//
-// OleDbPermissionAttributeTest.cs -
-//	NUnit Test Cases for OleDbPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Data;
-using System.Data.OleDb;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.Data.OleDb {
-
-	[TestFixture]
-	public class OleDbPermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
-			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
-			Assert.AreEqual (String.Empty, a.Provider, "Provider");
-			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
-			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
-			OleDbPermission odp = (OleDbPermission)a.CreatePermission ();
-			Assert.IsFalse (odp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			a.Unrestricted = true;
-			OleDbPermission odp = (OleDbPermission)a.CreatePermission ();
-			Assert.IsTrue (odp.IsUnrestricted (), "IsUnrestricted");
-			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
-			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
-
-			a.Unrestricted = false;
-			odp = (OleDbPermission)a.CreatePermission ();
-			Assert.IsFalse (odp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		public void AllowBlankPassword ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			Assert.IsFalse (a.AllowBlankPassword, "Default");
-			a.AllowBlankPassword = true;
-			Assert.IsTrue (a.AllowBlankPassword, "True");
-			a.AllowBlankPassword = false;
-			Assert.IsFalse (a.AllowBlankPassword, "False");
-		}
-
-		[Test]
-		public void ConnectionString ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			a.ConnectionString = String.Empty;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
-			a.ConnectionString = "Mono";
-			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
-			a.ConnectionString = null;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
-		}
-
-		[Test]
-		public void KeyRestrictionBehavior_All ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
-			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void KeyRestrictionBehavior_Invalid ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictionBehavior = (KeyRestrictionBehavior)Int32.MinValue;
-		}
-
-		[Test]
-		public void KeyRestriction ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictions = String.Empty;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
-			a.KeyRestrictions = "Mono";
-			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
-			a.KeyRestrictions = null;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
-		}
-
-		[Test]
-		public void Provider ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			a.Provider = String.Empty;
-			Assert.AreEqual (String.Empty, a.Provider, "Empty");
-			a.Provider = "Mono";
-			Assert.AreEqual ("Mono", a.Provider, "Mono");
-			a.Provider = null;
-			Assert.AreEqual (String.Empty, a.Provider, "Empty(null)");
-		}
-
-		[Test]
-		public void CreatePermission_Provider ()
-		{
-			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
-			a.Provider = "Mono";
-			Assert.AreEqual ("Mono", a.Provider, "Mono");
-
-			OleDbPermission odp = (OleDbPermission) a.CreatePermission ();
-			// provider isn't even supplied to permission in fx 2.0
-			Assert.AreEqual (String.Empty, odp.Provider, "CreatePermission.Provider");
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (OleDbPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
+//
+// OleDbPermissionAttributeTest.cs -
+//	NUnit Test Cases for OleDbPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Data;
+using System.Data.OleDb;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.Data.OleDb {
+
+	[TestFixture]
+	public class OleDbPermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
+			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
+			Assert.AreEqual (String.Empty, a.Provider, "Provider");
+			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
+			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
+			OleDbPermission odp = (OleDbPermission)a.CreatePermission ();
+			Assert.IsFalse (odp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			a.Unrestricted = true;
+			OleDbPermission odp = (OleDbPermission)a.CreatePermission ();
+			Assert.IsTrue (odp.IsUnrestricted (), "IsUnrestricted");
+			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
+			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
+
+			a.Unrestricted = false;
+			odp = (OleDbPermission)a.CreatePermission ();
+			Assert.IsFalse (odp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		public void AllowBlankPassword ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			Assert.IsFalse (a.AllowBlankPassword, "Default");
+			a.AllowBlankPassword = true;
+			Assert.IsTrue (a.AllowBlankPassword, "True");
+			a.AllowBlankPassword = false;
+			Assert.IsFalse (a.AllowBlankPassword, "False");
+		}
+
+		[Test]
+		public void ConnectionString ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			a.ConnectionString = String.Empty;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
+			a.ConnectionString = "Mono";
+			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
+			a.ConnectionString = null;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
+		}
+
+		[Test]
+		public void KeyRestrictionBehavior_All ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
+			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void KeyRestrictionBehavior_Invalid ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictionBehavior = (KeyRestrictionBehavior)Int32.MinValue;
+		}
+
+		[Test]
+		public void KeyRestriction ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictions = String.Empty;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
+			a.KeyRestrictions = "Mono";
+			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
+			a.KeyRestrictions = null;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
+		}
+
+		[Test]
+		public void Provider ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			a.Provider = String.Empty;
+			Assert.AreEqual (String.Empty, a.Provider, "Empty");
+			a.Provider = "Mono";
+			Assert.AreEqual ("Mono", a.Provider, "Mono");
+			a.Provider = null;
+			Assert.AreEqual (String.Empty, a.Provider, "Empty(null)");
+		}
+
+		[Test]
+		public void CreatePermission_Provider ()
+		{
+			OleDbPermissionAttribute a = new OleDbPermissionAttribute (SecurityAction.Assert);
+			a.Provider = "Mono";
+			Assert.AreEqual ("Mono", a.Provider, "Mono");
+
+			OleDbPermission odp = (OleDbPermission) a.CreatePermission ();
+			// provider isn't even supplied to permission in fx 2.0
+			Assert.AreEqual (String.Empty, odp.Provider, "CreatePermission.Provider");
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (OleDbPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.OleDb/OleDbPermissionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.OleDb/OleDbPermissionTest.cs
@@ -1,131 +1,131 @@
-//
-// OleDbPermissionTest.cs - NUnit Test Cases for OleDbPermission
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Data.OleDb;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.Data.OleDb {
-
-	// NOTE: Most tests are are located in the base class, DBDataPermission
-
-	[TestFixture]
-	public class OleDbPermissionTest {
-
-		private void Check (string msg, OleDbPermission perm, bool blank, bool unrestricted, int count)
-		{
-			Assert.AreEqual (blank, perm.AllowBlankPassword, msg + ".AllowBlankPassword");
-			Assert.AreEqual (unrestricted, perm.IsUnrestricted (), msg + ".IsUnrestricted");
-			if (count == 0)
-				Assert.IsNull (perm.ToXml ().Children, msg + ".Count != 0");
-			else
-				Assert.AreEqual (count, perm.ToXml ().Children.Count, msg + ".Count");
-			Assert.AreEqual (String.Empty, perm.Provider, "Provider");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void PermissionState_Invalid ()
-		{
-			PermissionState ps = (PermissionState)Int32.MinValue;
-			OleDbPermission perm = new OleDbPermission (ps);
-		}
-
-		[Test]
-		public void None ()
-		{
-			OleDbPermission perm = new OleDbPermission (PermissionState.None);
-			Check ("None-1", perm, false, false, 0);
-			perm.AllowBlankPassword = true;
-			Check ("None-2", perm, true, false, 0);
-
-			OleDbPermission copy = (OleDbPermission)perm.Copy ();
-			Check ("Copy_None-1", copy, true, false, 0);
-			copy.AllowBlankPassword = false;
-			Check ("Copy_None-2", copy, false, false, 0);
-		}
-
-		[Test]
-		public void None_Childs ()
-		{
-			OleDbPermission perm = new OleDbPermission (PermissionState.None);
-			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
-			perm.Add ("data source=127.0.0.1;", "password=;", KeyRestrictionBehavior.PreventUsage);
-
-			Check ("None-Childs-1", perm, false, false, 2);
-			perm.AllowBlankPassword = true;
-			Check ("None-Childs-2", perm, true, false, 2);
-
-			OleDbPermission copy = (OleDbPermission)perm.Copy ();
-			Check ("Copy_None-Childs-1", copy, true, false, 2);
-			copy.AllowBlankPassword = false;
-			Check ("Copy_None-Childs-2", copy, false, false, 2);
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			OleDbPermission perm = new OleDbPermission (PermissionState.Unrestricted);
-			Check ("Unrestricted-1", perm, false, true, 0);
-			perm.AllowBlankPassword = true;
-			Check ("Unrestricted-2", perm, true, true, 0);
-
-			OleDbPermission copy = (OleDbPermission)perm.Copy ();
-			// note: Unrestricted is always created with default values (so AllowBlankPassword is false)
-			Check ("Copy_Unrestricted-1", copy, false, true, 0);
-			copy.AllowBlankPassword = true;
-			Check ("Copy_Unrestricted-2", copy, true, true, 0);
-		}
-
-		[Test]
-		public void Unrestricted_Add ()
-		{
-			OleDbPermission perm = new OleDbPermission (PermissionState.Unrestricted);
-			Check ("Unrestricted-NoChild", perm, false, true, 0);
-			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
-			// note: Lost unrestricted state when children was added
-			Check ("Unrestricted-WithChild", perm, false, false, 1);
-		}
-
-		[Test]
-		public void Provider ()
-		{
-			OleDbPermission perm = new OleDbPermission (PermissionState.None);
-			perm.Provider = String.Empty;
-			Assert.AreEqual (String.Empty, perm.Provider, "Empty");
-			perm.Provider = "Mono";
-			Assert.AreEqual ("Mono", perm.Provider, "Mono");
-			perm.Provider = null;
-			Assert.AreEqual (String.Empty, perm.Provider, "Empty(null)");
-		}
-	}
-}
+//
+// OleDbPermissionTest.cs - NUnit Test Cases for OleDbPermission
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Data.OleDb;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.Data.OleDb {
+
+	// NOTE: Most tests are are located in the base class, DBDataPermission
+
+	[TestFixture]
+	public class OleDbPermissionTest {
+
+		private void Check (string msg, OleDbPermission perm, bool blank, bool unrestricted, int count)
+		{
+			Assert.AreEqual (blank, perm.AllowBlankPassword, msg + ".AllowBlankPassword");
+			Assert.AreEqual (unrestricted, perm.IsUnrestricted (), msg + ".IsUnrestricted");
+			if (count == 0)
+				Assert.IsNull (perm.ToXml ().Children, msg + ".Count != 0");
+			else
+				Assert.AreEqual (count, perm.ToXml ().Children.Count, msg + ".Count");
+			Assert.AreEqual (String.Empty, perm.Provider, "Provider");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void PermissionState_Invalid ()
+		{
+			PermissionState ps = (PermissionState)Int32.MinValue;
+			OleDbPermission perm = new OleDbPermission (ps);
+		}
+
+		[Test]
+		public void None ()
+		{
+			OleDbPermission perm = new OleDbPermission (PermissionState.None);
+			Check ("None-1", perm, false, false, 0);
+			perm.AllowBlankPassword = true;
+			Check ("None-2", perm, true, false, 0);
+
+			OleDbPermission copy = (OleDbPermission)perm.Copy ();
+			Check ("Copy_None-1", copy, true, false, 0);
+			copy.AllowBlankPassword = false;
+			Check ("Copy_None-2", copy, false, false, 0);
+		}
+
+		[Test]
+		public void None_Childs ()
+		{
+			OleDbPermission perm = new OleDbPermission (PermissionState.None);
+			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
+			perm.Add ("data source=127.0.0.1;", "password=;", KeyRestrictionBehavior.PreventUsage);
+
+			Check ("None-Childs-1", perm, false, false, 2);
+			perm.AllowBlankPassword = true;
+			Check ("None-Childs-2", perm, true, false, 2);
+
+			OleDbPermission copy = (OleDbPermission)perm.Copy ();
+			Check ("Copy_None-Childs-1", copy, true, false, 2);
+			copy.AllowBlankPassword = false;
+			Check ("Copy_None-Childs-2", copy, false, false, 2);
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			OleDbPermission perm = new OleDbPermission (PermissionState.Unrestricted);
+			Check ("Unrestricted-1", perm, false, true, 0);
+			perm.AllowBlankPassword = true;
+			Check ("Unrestricted-2", perm, true, true, 0);
+
+			OleDbPermission copy = (OleDbPermission)perm.Copy ();
+			// note: Unrestricted is always created with default values (so AllowBlankPassword is false)
+			Check ("Copy_Unrestricted-1", copy, false, true, 0);
+			copy.AllowBlankPassword = true;
+			Check ("Copy_Unrestricted-2", copy, true, true, 0);
+		}
+
+		[Test]
+		public void Unrestricted_Add ()
+		{
+			OleDbPermission perm = new OleDbPermission (PermissionState.Unrestricted);
+			Check ("Unrestricted-NoChild", perm, false, true, 0);
+			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
+			// note: Lost unrestricted state when children was added
+			Check ("Unrestricted-WithChild", perm, false, false, 1);
+		}
+
+		[Test]
+		public void Provider ()
+		{
+			OleDbPermission perm = new OleDbPermission (PermissionState.None);
+			perm.Provider = String.Empty;
+			Assert.AreEqual (String.Empty, perm.Provider, "Empty");
+			perm.Provider = "Mono";
+			Assert.AreEqual ("Mono", perm.Provider, "Mono");
+			perm.Provider = null;
+			Assert.AreEqual (String.Empty, perm.Provider, "Empty(null)");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.SqlClient/SqlClientPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.SqlClient/SqlClientPermissionAttributeTest.cs
@@ -1,176 +1,176 @@
-//
-// SqlClientPermissionAttributeTest.cs -
-//	NUnit Test Cases for SqlClientPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Data;
-using System.Data.SqlClient;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.Data.SqlClient {
-
-	[TestFixture]
-#if MOBILE
-	[Ignore ("CAS is not supported and parts will be linked away")]
-#endif
-	public class SqlClientPermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
-			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
-			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
-			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
-			SqlClientPermission sp = (SqlClientPermission)a.CreatePermission ();
-			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			a.Unrestricted = true;
-			SqlClientPermission scp = (SqlClientPermission)a.CreatePermission ();
-			Assert.IsTrue (scp.IsUnrestricted (), "IsUnrestricted");
-			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
-			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
-
-			a.Unrestricted = false;
-			scp = (SqlClientPermission)a.CreatePermission ();
-			Assert.IsFalse (scp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		public void AllowBlankPassword ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			Assert.IsFalse (a.AllowBlankPassword, "Default");
-			a.AllowBlankPassword = true;
-			Assert.IsTrue (a.AllowBlankPassword, "True");
-			a.AllowBlankPassword = false;
-			Assert.IsFalse (a.AllowBlankPassword, "False");
-		}
-
-		[Test]
-		public void ConnectionString ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			a.ConnectionString = String.Empty;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
-			a.ConnectionString = "Mono";
-			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
-			a.ConnectionString = null;
-			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
-		}
-
-		[Test]
-		public void KeyRestrictionBehavior_All ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
-			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
-			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
-			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void KeyRestrictionBehavior_Invalid ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictionBehavior = (KeyRestrictionBehavior)Int32.MinValue;
-		}
-
-		[Test]
-		public void KeyRestriction ()
-		{
-			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
-			a.KeyRestrictions = String.Empty;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
-			a.KeyRestrictions = "Mono";
-			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
-			a.KeyRestrictions = null;
-			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (SqlClientPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
+//
+// SqlClientPermissionAttributeTest.cs -
+//	NUnit Test Cases for SqlClientPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Data;
+using System.Data.SqlClient;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.Data.SqlClient {
+
+	[TestFixture]
+#if MOBILE
+	[Ignore ("CAS is not supported and parts will be linked away")]
+#endif
+	public class SqlClientPermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
+			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
+			Assert.IsFalse (a.ShouldSerializeConnectionString (), "ShouldSerializeConnectionString");
+			Assert.IsFalse (a.ShouldSerializeKeyRestrictions (), "ShouldSerializeConnectionString");
+			SqlClientPermission sp = (SqlClientPermission)a.CreatePermission ();
+			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			a.Unrestricted = true;
+			SqlClientPermission scp = (SqlClientPermission)a.CreatePermission ();
+			Assert.IsTrue (scp.IsUnrestricted (), "IsUnrestricted");
+			Assert.IsFalse (a.AllowBlankPassword, "AllowBlankPassword");
+			Assert.AreEqual (String.Empty, a.ConnectionString, "ConnectionString");
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "KeyRestrictionBehavior");
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "KeyRestrictions");
+
+			a.Unrestricted = false;
+			scp = (SqlClientPermission)a.CreatePermission ();
+			Assert.IsFalse (scp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		public void AllowBlankPassword ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			Assert.IsFalse (a.AllowBlankPassword, "Default");
+			a.AllowBlankPassword = true;
+			Assert.IsTrue (a.AllowBlankPassword, "True");
+			a.AllowBlankPassword = false;
+			Assert.IsFalse (a.AllowBlankPassword, "False");
+		}
+
+		[Test]
+		public void ConnectionString ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			a.ConnectionString = String.Empty;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty");
+			a.ConnectionString = "Mono";
+			Assert.AreEqual ("Mono", a.ConnectionString, "Mono");
+			a.ConnectionString = null;
+			Assert.AreEqual (String.Empty, a.ConnectionString, "Empty(null)");
+		}
+
+		[Test]
+		public void KeyRestrictionBehavior_All ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.AllowOnly;
+			Assert.AreEqual (KeyRestrictionBehavior.AllowOnly, a.KeyRestrictionBehavior, "AllowOnly");
+			a.KeyRestrictionBehavior = KeyRestrictionBehavior.PreventUsage;
+			Assert.AreEqual (KeyRestrictionBehavior.PreventUsage, a.KeyRestrictionBehavior, "PreventUsage");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void KeyRestrictionBehavior_Invalid ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictionBehavior = (KeyRestrictionBehavior)Int32.MinValue;
+		}
+
+		[Test]
+		public void KeyRestriction ()
+		{
+			SqlClientPermissionAttribute a = new SqlClientPermissionAttribute (SecurityAction.Assert);
+			a.KeyRestrictions = String.Empty;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty");
+			a.KeyRestrictions = "Mono";
+			Assert.AreEqual ("Mono", a.KeyRestrictions, "Mono");
+			a.KeyRestrictions = null;
+			Assert.AreEqual (String.Empty, a.KeyRestrictions, "Empty(null)");
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (SqlClientPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method;
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.SqlClient/SqlClientPermissionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.SqlClient/SqlClientPermissionTest.cs
@@ -1,121 +1,121 @@
-//
-// SqlClientPermissionTest.cs - NUnit Test Cases for SqlClientPermission
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Data;
-using System.Data.Common;
-using System.Data.SqlClient;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.Data.SqlClient {
-
-	// NOTE: Most tests are are located in the base class, DBDataPermission
-
-	[TestFixture]
-#if MOBILE
-	[Ignore ("CAS is not supported and parts will be linked away")]
-#endif
-	public class SqlClientPermissionTest {
-
-		private void Check (string msg, DBDataPermission dbdp, bool blank, bool unrestricted, int count)
-		{
-			Assert.AreEqual (blank, dbdp.AllowBlankPassword, msg + ".AllowBlankPassword");
-			Assert.AreEqual (unrestricted, dbdp.IsUnrestricted (), msg + ".IsUnrestricted");
-			if (count == 0)
-				Assert.IsNull (dbdp.ToXml ().Children, msg + ".Count != 0");
-			else
-				Assert.AreEqual (count, dbdp.ToXml ().Children.Count, msg + ".Count");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void PermissionState_Invalid ()
-		{
-			PermissionState ps = (PermissionState)Int32.MinValue;
-			SqlClientPermission perm = new SqlClientPermission (ps);
-		}
-
-		[Test]
-		public void None ()
-		{
-			SqlClientPermission perm = new SqlClientPermission (PermissionState.None);
-			Check ("None-1", perm, false, false, 0);
-			perm.AllowBlankPassword = true;
-			Check ("None-2", perm, true, false, 0);
-
-			SqlClientPermission copy = (SqlClientPermission)perm.Copy ();
-			Check ("Copy_None-1", copy, true, false, 0);
-			copy.AllowBlankPassword = false;
-			Check ("Copy_None-2", copy, false, false, 0);
-		}
-
-		[Test]
-		public void None_Childs ()
-		{
-			SqlClientPermission perm = new SqlClientPermission (PermissionState.None);
-			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
-			perm.Add ("data source=127.0.0.1;", "password=;", KeyRestrictionBehavior.PreventUsage);
-
-			Check ("None-Childs-1", perm, false, false, 2);
-			perm.AllowBlankPassword = true;
-			Check ("None-Childs-2", perm, true, false, 2);
-
-			SqlClientPermission copy = (SqlClientPermission)perm.Copy ();
-			Check ("Copy_None-Childs-1", copy, true, false, 2);
-			copy.AllowBlankPassword = false;
-			Check ("Copy_None-Childs-2", copy, false, false, 2);
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			SqlClientPermission perm = new SqlClientPermission (PermissionState.Unrestricted);
-			Check ("Unrestricted-1", perm, false, true, 0);
-			perm.AllowBlankPassword = true;
-			Check ("Unrestricted-2", perm, true, true, 0);
-
-			SqlClientPermission copy = (SqlClientPermission)perm.Copy ();
-			// note: Unrestricted is always created with default values (so AllowBlankPassword is false)
-			Check ("Copy_Unrestricted-1", copy, false, true, 0);
-			copy.AllowBlankPassword = true;
-			Check ("Copy_Unrestricted-2", copy, true, true, 0);
-		}
-
-		[Test]
-		public void Unrestricted_Add ()
-		{
-			SqlClientPermission perm = new SqlClientPermission (PermissionState.Unrestricted);
-			Check ("Unrestricted-NoChild", perm, false, true, 0);
-			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
-			// note: Lost unrestricted state when children was added
-			Check ("Unrestricted-WithChild", perm, false, false, 1);
-		}
-	}
-}
+//
+// SqlClientPermissionTest.cs - NUnit Test Cases for SqlClientPermission
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Data;
+using System.Data.Common;
+using System.Data.SqlClient;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.Data.SqlClient {
+
+	// NOTE: Most tests are are located in the base class, DBDataPermission
+
+	[TestFixture]
+#if MOBILE
+	[Ignore ("CAS is not supported and parts will be linked away")]
+#endif
+	public class SqlClientPermissionTest {
+
+		private void Check (string msg, DBDataPermission dbdp, bool blank, bool unrestricted, int count)
+		{
+			Assert.AreEqual (blank, dbdp.AllowBlankPassword, msg + ".AllowBlankPassword");
+			Assert.AreEqual (unrestricted, dbdp.IsUnrestricted (), msg + ".IsUnrestricted");
+			if (count == 0)
+				Assert.IsNull (dbdp.ToXml ().Children, msg + ".Count != 0");
+			else
+				Assert.AreEqual (count, dbdp.ToXml ().Children.Count, msg + ".Count");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void PermissionState_Invalid ()
+		{
+			PermissionState ps = (PermissionState)Int32.MinValue;
+			SqlClientPermission perm = new SqlClientPermission (ps);
+		}
+
+		[Test]
+		public void None ()
+		{
+			SqlClientPermission perm = new SqlClientPermission (PermissionState.None);
+			Check ("None-1", perm, false, false, 0);
+			perm.AllowBlankPassword = true;
+			Check ("None-2", perm, true, false, 0);
+
+			SqlClientPermission copy = (SqlClientPermission)perm.Copy ();
+			Check ("Copy_None-1", copy, true, false, 0);
+			copy.AllowBlankPassword = false;
+			Check ("Copy_None-2", copy, false, false, 0);
+		}
+
+		[Test]
+		public void None_Childs ()
+		{
+			SqlClientPermission perm = new SqlClientPermission (PermissionState.None);
+			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
+			perm.Add ("data source=127.0.0.1;", "password=;", KeyRestrictionBehavior.PreventUsage);
+
+			Check ("None-Childs-1", perm, false, false, 2);
+			perm.AllowBlankPassword = true;
+			Check ("None-Childs-2", perm, true, false, 2);
+
+			SqlClientPermission copy = (SqlClientPermission)perm.Copy ();
+			Check ("Copy_None-Childs-1", copy, true, false, 2);
+			copy.AllowBlankPassword = false;
+			Check ("Copy_None-Childs-2", copy, false, false, 2);
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			SqlClientPermission perm = new SqlClientPermission (PermissionState.Unrestricted);
+			Check ("Unrestricted-1", perm, false, true, 0);
+			perm.AllowBlankPassword = true;
+			Check ("Unrestricted-2", perm, true, true, 0);
+
+			SqlClientPermission copy = (SqlClientPermission)perm.Copy ();
+			// note: Unrestricted is always created with default values (so AllowBlankPassword is false)
+			Check ("Copy_Unrestricted-1", copy, false, true, 0);
+			copy.AllowBlankPassword = true;
+			Check ("Copy_Unrestricted-2", copy, true, true, 0);
+		}
+
+		[Test]
+		public void Unrestricted_Add ()
+		{
+			SqlClientPermission perm = new SqlClientPermission (PermissionState.Unrestricted);
+			Check ("Unrestricted-NoChild", perm, false, true, 0);
+			perm.Add ("data source=localhost;", String.Empty, KeyRestrictionBehavior.AllowOnly);
+			// note: Lost unrestricted state when children was added
+			Check ("Unrestricted-WithChild", perm, false, false, 1);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.SqlClient/SqlConnectionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.SqlClient/SqlConnectionTest.cs
@@ -1,1053 +1,1053 @@
-//
-// SqlConnectionTest.cs - NUnit Test Cases for testing the
-//                        SqlConnection class
-// Author:
-//      Gert Driesen (drieseng@users.sourceforge.net)
-//
-// Copyright (c) 2004 Novell Inc., and the individuals listed
-// on the ChangeLog entries.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.Data.SqlClient;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Data.SqlClient
-{
-	[TestFixture]
-	public class SqlConnectionTest
-	{
-		[Test] // SqlConnection ()
-		public void Constructor1 ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			Assert.AreEqual (string.Empty, cn.ConnectionString, "#1");
-			Assert.AreEqual (15, cn.ConnectionTimeout, "#2");
-			Assert.IsNull (cn.Container, "#3");
-			Assert.AreEqual (string.Empty, cn.Database, "#4");
-			Assert.AreEqual (string.Empty, cn.DataSource, "#5");
-			Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#6");
-			Assert.AreEqual (8000, cn.PacketSize, "#7");
-			Assert.IsNull (cn.Site, "#8");
-			Assert.AreEqual (ConnectionState.Closed, cn.State, "#9");
-			Assert.IsFalse (cn.StatisticsEnabled, "#10");
-			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#11");
-		}
-
-		[Test] // SqlConnection (string)
-		public void Constructor2 ()
-		{
-			string connectionString = "server=SQLSRV; database=Mono;";
-
-			SqlConnection cn = new SqlConnection (connectionString);
-			Assert.AreEqual (connectionString, cn.ConnectionString, "#A1");
-			Assert.AreEqual (15, cn.ConnectionTimeout, "#A2");
-			Assert.IsNull (cn.Container, "#A3");
-			Assert.AreEqual ("Mono", cn.Database, "#A4");
-			Assert.AreEqual ("SQLSRV", cn.DataSource, "#A5");
-			Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#A6");
-			Assert.AreEqual (8000, cn.PacketSize, "#A7");
-			Assert.IsNull (cn.Site, "#A8");
-			Assert.AreEqual (ConnectionState.Closed, cn.State, "#A9");
-			Assert.IsFalse (cn.StatisticsEnabled, "#A10");
-			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#A11");
-
-			cn = new SqlConnection ((string) null);
-			Assert.AreEqual (string.Empty, cn.ConnectionString, "#B1");
-			Assert.AreEqual (15, cn.ConnectionTimeout, "#B2");
-			Assert.IsNull (cn.Container, "#B3");
-			Assert.AreEqual (string.Empty, cn.Database, "#B4");
-			Assert.AreEqual (string.Empty, cn.DataSource, "#B5");
-			Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#B6");
-			Assert.AreEqual (8000, cn.PacketSize, "#B7");
-			Assert.IsNull (cn.Site, "#B8");
-			Assert.AreEqual (ConnectionState.Closed, cn.State, "#B9");
-			Assert.IsFalse (cn.StatisticsEnabled, "#B10");
-			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#B11");
-		}
-
-		[Test]
-		public void Constructor2_ConnectionString_Invalid ()
-		{
-			try {
-				new SqlConnection ("InvalidConnectionString");
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// Format of the initialization string does
-				// not conform to specification starting at
-				// index 0
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.IsNull (ex.ParamName, "#A5");
-			}
-
-			// invalid keyword
-			try {
-				new SqlConnection ("invalidKeyword=10");
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// Keyword not supported: 'invalidkeyword'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-				Assert.IsTrue (ex.Message.IndexOf ("'invalidkeyword'") != -1, "#B5");
-				Assert.IsNull (ex.ParamName, "#B6");
-			}
-
-			// invalid packet size (< minimum)
-			try {
-				new SqlConnection ("Packet Size=511");
-				Assert.Fail ("#C1");
-			} catch (ArgumentException ex) {
-				// Invalid 'Packet Size'.  The value must be an
-				// integer >= 512 and <= 32768
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
-				Assert.IsNull (ex.InnerException, "#C3");
-				Assert.IsNotNull (ex.Message, "#C4");
-				Assert.IsNull (ex.ParamName, "#C5");
-			}
-
-			// invalid packet size (> maximum)
-			try {
-				new SqlConnection ("Packet Size=32769");
-				Assert.Fail ("#D1");
-			} catch (ArgumentException ex) {
-				// Invalid 'Packet Size'.  The value must be an
-				// integer >= 512 and <= 32768
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
-				Assert.IsNull (ex.InnerException, "#D3");
-				Assert.IsNotNull (ex.Message, "#D4");
-				Assert.IsNull (ex.ParamName, "#D5");
-			}
-
-			// negative connect timeout
-			try {
-				new SqlConnection ("Connect Timeout=-1");
-				Assert.Fail ("#E1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'connect timeout'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
-				Assert.IsNull (ex.InnerException, "#E3");
-				Assert.IsNotNull (ex.Message, "#E4");
-				Assert.IsNull (ex.ParamName, "#E5");
-			}
-
-			// negative max pool size
-			try {
-				new SqlConnection ("Max Pool Size=-1");
-				Assert.Fail ("#F1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'max pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#F2");
-				Assert.IsNull (ex.InnerException, "#F3");
-				Assert.IsNotNull (ex.Message, "#F4");
-				Assert.IsNull (ex.ParamName, "#F5");
-			}
-
-			// negative min pool size
-			try {
-				new SqlConnection ("Min Pool Size=-1");
-				Assert.Fail ("#G1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'min pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#G2");
-				Assert.IsNull (ex.InnerException, "#G3");
-				Assert.IsNotNull (ex.Message, "#G4");
-				Assert.IsNull (ex.ParamName, "#G5");
-			}
-		}
-
-		[Test]
-		public void BeginTransaction_Connection_Closed ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			try {
-				cn.BeginTransaction ();
-				Assert.Fail ("#A1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-			}
-
-			try {
-				cn.BeginTransaction ((IsolationLevel) 666);
-				Assert.Fail ("#B1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-			}
-
-			try {
-				cn.BeginTransaction (IsolationLevel.Serializable);
-				Assert.Fail ("#C1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
-				Assert.IsNull (ex.InnerException, "#C3");
-				Assert.IsNotNull (ex.Message, "#C4");
-			}
-
-			try {
-				cn.BeginTransaction ("trans");
-				Assert.Fail ("#D1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
-				Assert.IsNull (ex.InnerException, "#D3");
-				Assert.IsNotNull (ex.Message, "#D4");
-			}
-
-			try {
-				cn.BeginTransaction ((IsolationLevel) 666, "trans");
-				Assert.Fail ("#E1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
-				Assert.IsNull (ex.InnerException, "#E3");
-				Assert.IsNotNull (ex.Message, "#E4");
-			}
-
-			try {
-				cn.BeginTransaction (IsolationLevel.Serializable, "trans");
-				Assert.Fail ("#F1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
-				Assert.IsNull (ex.InnerException, "#F3");
-				Assert.IsNotNull (ex.Message, "#F4");
-			}
-		}
-
-		[Test]
-		public void ChangeDatabase_Connection_Closed ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "server=SQLSRV";
-
-			try {
-				cn.ChangeDatabase ("database");
-				Assert.Fail ("#1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-			}
-		}
-
-		[Test]
-		public void ChangePassword_ConnectionString_Empty ()
-		{
-			try {
-				SqlConnection.ChangePassword (string.Empty, "mono");
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsNotNull (ex.ParamName, "#5");
-				Assert.IsTrue (ex.ParamName.IndexOf ("'connectionString'") != -1, "#6");
-			}
-		}
-
-		[Test]
-		public void ChangePassword_ConnectionString_Null ()
-		{
-			try {
-				SqlConnection.ChangePassword ((string) null, "mono");
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsNotNull (ex.ParamName, "#5");
-				Assert.IsTrue (ex.ParamName.IndexOf ("'connectionString'") != -1, "#6");
-			}
-		}
-
-		[Test]
-		public void ChangePassword_NewPassword_Empty ()
-		{
-			try {
-				SqlConnection.ChangePassword ("server=SQLSRV", string.Empty);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsNotNull (ex.ParamName, "#5");
-				Assert.IsTrue (ex.ParamName.IndexOf ("'newPassword'") != -1, "#6");
-			}
-		}
-
-		[Test]
-		public void ChangePassword_NewPassword_ExceedMaxLength ()
-		{
-			try {
-				SqlConnection.ChangePassword ("server=SQLSRV",
-					new string ('d', 129));
-				Assert.Fail ("#1");
-			} catch (ArgumentException ex) {
-				// The length of argument 'newPassword' exceeds
-				// it's limit of '128'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsTrue (ex.Message.IndexOf ("'newPassword'") != -1, "#5");
-				Assert.IsTrue (ex.Message.IndexOf ("128") != -1, "#6");
-				Assert.IsNull (ex.ParamName, "#7");
-			}
-		}
-
-		[Test]
-		public void ChangePassword_NewPassword_Null ()
-		{
-			try {
-				SqlConnection.ChangePassword ("server=SQLSRV", (string) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsNotNull (ex.ParamName, "#5");
-				Assert.IsTrue (ex.ParamName.IndexOf ("'newPassword'") != -1, "#6");
-			}
-		}
-
-		[Test]
-		public void ClearPool_Connection_Null ()
-		{
-			try {
-				SqlConnection.ClearPool ((SqlConnection) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("connection", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void ConnectionString ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "server=SQLSRV";
-			Assert.AreEqual ("server=SQLSRV", cn.ConnectionString, "#1");
-			cn.ConnectionString = null;
-			Assert.AreEqual (string.Empty, cn.ConnectionString, "#2");
-			cn.ConnectionString = "server=SQLSRV";
-			Assert.AreEqual ("server=SQLSRV", cn.ConnectionString, "#3");
-			cn.ConnectionString = string.Empty;
-			Assert.AreEqual (string.Empty, cn.ConnectionString, "#4");
-		}
-
-		[Test]
-		public void ConnectionString_Value_Invalid ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			try {
-				cn.ConnectionString = "InvalidConnectionString";
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// Format of the initialization string does
-				// not conform to specification starting at
-				// index 0
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.IsNull (ex.ParamName, "#A5");
-			}
-
-			// invalid keyword
-			try {
-				cn.ConnectionString = "invalidKeyword=10";
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// Keyword not supported: 'invalidkeyword'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-				Assert.IsTrue (ex.Message.IndexOf ("'invalidkeyword'") != -1, "#B5");
-				Assert.IsNull (ex.ParamName, "#B6");
-			}
-		}
-
-		[Test]
-		public void CreateCommand ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			SqlCommand cmd = cn.CreateCommand ();
-			Assert.IsNotNull (cmd, "#1");
-			Assert.AreEqual (string.Empty, cmd.CommandText, "#2");
-			Assert.AreEqual (30, cmd.CommandTimeout, "#3");
-			Assert.AreEqual (CommandType.Text, cmd.CommandType, "#4");
-			Assert.AreSame (cn, cmd.Connection, "#5");
-			Assert.IsNull (cmd.Container, "#6");
-			Assert.IsTrue (cmd.DesignTimeVisible, "#7");
-			Assert.IsNull (cmd.Notification, "#8");
-			Assert.IsTrue (cmd.NotificationAutoEnlist, "#9");
-			Assert.IsNotNull (cmd.Parameters, "#10");
-			Assert.AreEqual (0, cmd.Parameters.Count, "#11");
-			Assert.IsNull (cmd.Site, "#12");
-			Assert.IsNull (cmd.Transaction, "#13");
-			Assert.AreEqual (UpdateRowSource.Both, cmd.UpdatedRowSource, "#14");
-		}
-
-		[Test]
-		public void Dispose ()
-		{
-			SqlConnection cn = new SqlConnection ("Server=SQLSRV;Database=master;Timeout=25;Packet Size=512;Workstation ID=DUMMY");
-			cn.Dispose ();
-
-			Assert.AreEqual (string.Empty, cn.ConnectionString, "#1");
-			Assert.AreEqual (15, cn.ConnectionTimeout, "#2");
-			Assert.AreEqual (string.Empty, cn.Database, "#3");
-			Assert.AreEqual (string.Empty, cn.DataSource, "#4");
-			Assert.AreEqual (8000, cn.PacketSize, "#5");
-			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#6");
-			Assert.AreEqual (ConnectionState.Closed, cn.State, "#7");
-			cn.Dispose ();
-
-			cn = new SqlConnection ();
-			cn.Dispose ();
-		}
-
-		[Test]
-		public void GetSchema_Connection_Closed ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			try {
-				cn.GetSchema ();
-				Assert.Fail ("#A1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-			}
-
-			try {
-				cn.GetSchema ("Tables");
-				Assert.Fail ("#B1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-			}
-
-			try {
-				cn.GetSchema ((string) null);
-				Assert.Fail ("#C1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
-				Assert.IsNull (ex.InnerException, "#C3");
-				Assert.IsNotNull (ex.Message, "#C4");
-			}
-
-			try {
-				cn.GetSchema ("Tables", new string [] { "master" });
-				Assert.Fail ("#D1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
-				Assert.IsNull (ex.InnerException, "#D3");
-				Assert.IsNotNull (ex.Message, "#D4");
-			}
-
-			try {
-				cn.GetSchema ((string) null, new string [] { "master" });
-				Assert.Fail ("#E1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
-				Assert.IsNull (ex.InnerException, "#E3");
-				Assert.IsNotNull (ex.Message, "#E4");
-			}
-
-			try {
-				cn.GetSchema ("Tables", (string []) null);
-				Assert.Fail ("#F1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
-				Assert.IsNull (ex.InnerException, "#F3");
-				Assert.IsNotNull (ex.Message, "#F4");
-			}
-
-			try {
-				cn.GetSchema ((string) null, (string []) null);
-				Assert.Fail ("#G1");
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#G2");
-				Assert.IsNull (ex.InnerException, "#G3");
-				Assert.IsNotNull (ex.Message, "#G4");
-			}
-		}
-
-		[Test]
-		public void ConnectionString_AsynchronousProcessing ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Asynchronous Processing=False";
-			cn.ConnectionString = "Async=True";
-		}
-
-		[Test]
-		public void ConnectionString_ConnectTimeout ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Connection Timeout=45";
-			Assert.AreEqual (45, cn.ConnectionTimeout, "#1");
-			cn.ConnectionString = "Connect Timeout=40";
-			Assert.AreEqual (40, cn.ConnectionTimeout, "#2");
-			cn.ConnectionString = "Timeout=";
-			Assert.AreEqual (15, cn.ConnectionTimeout, "#3");
-			cn.ConnectionString = "Timeout=2147483647";
-			Assert.AreEqual (int.MaxValue, cn.ConnectionTimeout, "#4");
-			cn.ConnectionString = "Timeout=0";
-			Assert.AreEqual (0, cn.ConnectionTimeout, "#5");
-		}
-
-		[Test]
-		public void ConnectionString_ConnectTimeout_Invalid ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			// negative number
-			try {
-				cn.ConnectionString = "Connection timeout=-1";
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'connect timeout'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#A5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#A6");
-			}
-
-			// invalid number
-			try {
-				cn.ConnectionString = "connect Timeout=BB";
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'connect timeout'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNotNull (ex.InnerException, "#B3");
-				Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
-				Assert.IsNotNull (ex.Message, "#B5");
-				Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#B6:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#B7");
-
-				// Input string was not in a correct format
-				FormatException fe = (FormatException) ex.InnerException;
-				Assert.IsNull (fe.InnerException, "#B8");
-				Assert.IsNotNull (fe.Message, "#B9");
-			}
-
-			// overflow
-			try {
-				cn.ConnectionString = "timeout=2147483648";
-				Assert.Fail ("#C1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'connect timeout'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
-				Assert.IsNotNull (ex.InnerException, "#C3");
-				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
-				Assert.IsNotNull (ex.Message, "#C5");
-				Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#C6:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#C7");
-
-				// Value was either too large or too small for an Int32
-				OverflowException oe = (OverflowException) ex.InnerException;
-				Assert.IsNull (oe.InnerException, "#C8");
-				Assert.IsNotNull (oe.Message, "#C9");
-			}
-		}
-
-		[Test]
-		public void ConnectionString_Database_Synonyms ()
-		{
-			SqlConnection cn = null;
-
-			cn = new SqlConnection ();
-			cn.ConnectionString = "Initial Catalog=db";
-			Assert.AreEqual ("db", cn.Database);
-
-			cn = new SqlConnection ();
-			cn.ConnectionString = "Database=db";
-			Assert.AreEqual ("db", cn.Database);
-		}
-
-		[Test]
-		public void ConnectionString_DataSource_Synonyms ()
-		{
-			SqlConnection cn = null;
-
-			cn = new SqlConnection ();
-			cn.ConnectionString = "Data Source=server";
-			Assert.AreEqual ("server", cn.DataSource);
-
-			cn = new SqlConnection ();
-			cn.ConnectionString = "addr=server";
-			Assert.AreEqual ("server", cn.DataSource);
-
-			cn = new SqlConnection ();
-			cn.ConnectionString = "address=server";
-			Assert.AreEqual ("server", cn.DataSource);
-
-			cn = new SqlConnection ();
-			cn.ConnectionString = "network address=server";
-			Assert.AreEqual ("server", cn.DataSource);
-
-			cn = new SqlConnection ();
-			cn.ConnectionString = "server=server";
-			Assert.AreEqual ("server", cn.DataSource);
-		}
-
-		[Test]
-		public void ConnectionString_MaxPoolSize ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Max Pool Size=2147483647";
-			cn.ConnectionString = "Max Pool Size=1";
-			cn.ConnectionString = "Max Pool Size=500";
-		}
-
-		[Test]
-		public void ConnectionString_MaxPoolSize_Invalid ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			// negative number
-			try {
-				cn.ConnectionString = "Max Pool Size=-1";
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'max pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#A5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#A6");
-			}
-
-			// invalid number
-			try {
-				cn.ConnectionString = "max Pool size=BB";
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'max pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNotNull (ex.InnerException, "#B3");
-				Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
-				Assert.IsNotNull (ex.Message, "#B5");
-				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#B6:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#B7");
-
-				// Input string was not in a correct format
-				FormatException fe = (FormatException) ex.InnerException;
-				Assert.IsNull (fe.InnerException, "#B8");
-				Assert.IsNotNull (fe.Message, "#B9");
-			}
-
-			// overflow
-			try {
-				cn.ConnectionString = "max pool size=2147483648";
-				Assert.Fail ("#C1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'max pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
-				Assert.IsNotNull (ex.InnerException, "#C3");
-				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
-				Assert.IsNotNull (ex.Message, "#C5");
-				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#C6:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#C7");
-
-				// Value was either too large or too small for an Int32
-				OverflowException oe = (OverflowException) ex.InnerException;
-				Assert.IsNull (oe.InnerException, "#C8");
-				Assert.IsNotNull (oe.Message, "#C9");
-			}
-
-			// less than minimum (1)
-			try {
-				cn.ConnectionString = "Min Pool Size=0;Max Pool Size=0";
-				Assert.Fail ("#D1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'max pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
-				Assert.IsNull (ex.InnerException, "#D3");
-				Assert.IsNotNull (ex.Message, "#D4");
-				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#D5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#D6");
-			}
-
-			// less than min pool size
-			try {
-				cn.ConnectionString = "Min Pool Size=5;Max Pool Size=4";
-				Assert.Fail ("#E1");
-			} catch (ArgumentException ex) {
-				// Invalid min or max pool size values, min
-				// pool size cannot be greater than the max
-				// pool size
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
-				Assert.IsNull (ex.InnerException, "#E3");
-				Assert.IsNotNull (ex.Message, "#E4");
-				Assert.IsNull (ex.ParamName, "#E5");
-			}
-		}
-
-		[Test]
-		public void ConnectionString_MinPoolSize ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "min Pool size=0";
-			cn.ConnectionString = "Min Pool size=100";
-			cn.ConnectionString = "Min Pool Size=2147483647;Max Pool Size=2147483647";
-		}
-
-		[Test]
-		public void ConnectionString_MinPoolSize_Invalid ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			// negative number
-			try {
-				cn.ConnectionString = "Min Pool Size=-1";
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'min pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#A5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#A6");
-			}
-
-			// invalid number
-			try {
-				cn.ConnectionString = "min Pool size=BB";
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'min pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNotNull (ex.InnerException, "#B3");
-				Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
-				Assert.IsNotNull (ex.Message, "#B5");
-				Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#B6:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#B7");
-
-				// Input string was not in a correct format
-				FormatException fe = (FormatException) ex.InnerException;
-				Assert.IsNull (fe.InnerException, "#B8");
-				Assert.IsNotNull (fe.Message, "#B9");
-			}
-
-			// overflow
-			try {
-				cn.ConnectionString = "min pool size=2147483648";
-				Assert.Fail ("#C1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'min pool size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
-				Assert.IsNotNull (ex.InnerException, "#C3");
-				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
-				Assert.IsNotNull (ex.Message, "#C5");
-				Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#C6:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#C7");
-
-				// Value was either too large or too small for an Int32
-				OverflowException oe = (OverflowException) ex.InnerException;
-				Assert.IsNull (oe.InnerException, "#C8");
-				Assert.IsNotNull (oe.Message, "#C9");
-			}
-		}
-
-		[Test]
-		public void ConnectionString_MultipleActiveResultSets ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "MultipleActiveResultSets=true";
-		}
-
-		[Test]
-		public void ConnectionString_MultipleActiveResultSets_Invalid ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			try {
-				cn.ConnectionString = "MultipleActiveResultSets=1";
-				Assert.Fail ("#1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'multipleactiveresultsets'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsTrue (ex.Message.IndexOf ("'multipleactiveresultsets'") != -1, "#5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#6");
-			}
-		}
-
-		[Test]
-		public void ConnectionString_NetworkLibrary_Synonyms ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Net=DBMSSOCN";
-			cn.ConnectionString = "Network=DBMSSOCN";
-			cn.ConnectionString = "Network library=DBMSSOCN";
-		}
-
-		[Test]
-		public void ConnectionString_PacketSize ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Packet Size=1024";
-			Assert.AreEqual (1024, cn.PacketSize, "#1");
-			cn.ConnectionString = "packet SizE=533";
-			Assert.AreEqual (533, cn.PacketSize, "#2");
-			cn.ConnectionString = "packet SizE=512";
-			Assert.AreEqual (512, cn.PacketSize, "#3");
-			cn.ConnectionString = "packet SizE=32768";
-			Assert.AreEqual (32768, cn.PacketSize, "#4");
-			cn.ConnectionString = "packet Size=";
-			Assert.AreEqual (8000, cn.PacketSize, "#5");
-		}
-
-		[Test]
-		public void ConnectionString_PacketSize_Invalid ()
-		{
-			SqlConnection cn = new SqlConnection ();
-
-			// invalid packet size (< minimum)
-			try {
-				cn.ConnectionString = "Packet Size=511";
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// Invalid 'Packet Size'.  The value must be an
-				// integer >= 512 and <= 32768
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.IsTrue (ex.Message.IndexOf ("'Packet Size'") != -1, "#A5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#A6");
-			}
-
-			// invalid packet size (> maximum)
-			try {
-				cn.ConnectionString = "packet SIze=32769";
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// Invalid 'Packet Size'.  The value must be an
-				// integer >= 512 and <= 32768
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-				Assert.IsTrue (ex.Message.IndexOf ("'Packet Size'") != -1, "#B5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#B6");
-			}
-
-			// overflow
-			try {
-				cn.ConnectionString = "packet SIze=2147483648";
-				Assert.Fail ("#C1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'packet size'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
-				Assert.IsNotNull (ex.InnerException, "#C3");
-				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
-				Assert.IsNotNull (ex.Message, "#C5");
-				Assert.IsTrue (ex.Message.IndexOf ("'packet size'") != -1, "#C6:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#C7");
-
-				// Value was either too large or too small for an Int32
-				OverflowException oe = (OverflowException) ex.InnerException;
-				Assert.IsNull (oe.InnerException, "#C8");
-				Assert.IsNotNull (oe.Message, "#C9");
-			}
-		}
-
-		[Test]
-		public void ConnectionString_Password_Synonyms ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Password=scrambled";
-			cn.ConnectionString = "Pwd=scrambled";
-		}
-
-		[Test]
-		public void ConnectionString_PersistSecurityInfo_Synonyms ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Persist Security Info=true";
-			cn.ConnectionString = "PersistSecurityInfo=true";
-		}
-
-		[Test]
-		public void ConnectionString_UserID_Synonyms ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "User Id=test";
-			cn.ConnectionString = "User=test";
-			cn.ConnectionString = "Uid=test";
-		}
-
-		[Test]
-		public void ConnectionString_UserInstance ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "User Instance=true";
-		}
-
-		[Test]
-		public void ConnectionString_UserInstance_Invalid ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			try {
-				cn.ConnectionString = "User Instance=1";
-				Assert.Fail ("#1");
-			} catch (ArgumentException ex) {
-				// Invalid value for key 'user instance'
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsTrue (ex.Message.IndexOf ("'user instance'") != -1, "#5:" + ex.Message);
-				Assert.IsNull (ex.ParamName, "#6");
-			}
-		}
-
-		[Test]
-		public void ConnectionString_OtherKeywords ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "Application Name=test";
-			cn.ConnectionString = "App=test";
-			cn.ConnectionString = "Connection Reset=true";
-			cn.ConnectionString = "Current Language=test";
-			cn.ConnectionString = "Language=test";
-			cn.ConnectionString = "Encrypt=false";
-			//cn.ConnectionString = "Encrypt=true";
-			//cn.ConnectionString = "Enlist=false";
-			cn.ConnectionString = "Enlist=true";
-			cn.ConnectionString = "Integrated Security=true";
-			cn.ConnectionString = "Trusted_connection=true";
-			cn.ConnectionString = "Max Pool Size=10";
-			cn.ConnectionString = "Min Pool Size=10";
-			cn.ConnectionString = "Pooling=true";
-			cn.ConnectionString = "attachdbfilename=dunno";
-			cn.ConnectionString = "extended properties=dunno";
-			cn.ConnectionString = "initial file name=dunno";
-		}
-
-		[Test]
-		public void Open_ConnectionString_Empty ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = string.Empty;
-
-			try {
-				cn.Open ();
-				Assert.Fail ("#1");
-			} catch (InvalidOperationException ex) {
-				// The ConnectionString property has not been
-				// initialized
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-			}
-		}
-
-		[Test]
-		public void Open_ConnectionString_Null ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = null;
-
-			try {
-				cn.Open ();
-				Assert.Fail ("#1");
-			} catch (InvalidOperationException ex) {
-				// The ConnectionString property has not been
-				// initialized
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-			}
-		}
-
-		[Test]
-		public void Open_ConnectionString_Whitespace ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			cn.ConnectionString = "    ";
-
-			try {
-				cn.Open ();
-				Assert.Fail ("#1");
-			} catch (InvalidOperationException ex) {
-				// The ConnectionString property has not been
-				// initialized
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-			}
-		}
-
-		[Test]
-		public void ServerVersion_Connection_Closed ()
-		{
-			SqlConnection cn = new SqlConnection ();
-			try {
-				Assert.Fail ("#A1:" + cn.ServerVersion);
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-			}
-
-			cn = new SqlConnection ("server=SQLSRV; database=Mono;");
-			try {
-				Assert.Fail ("#B1:" + cn.ServerVersion);
-			} catch (InvalidOperationException ex) {
-				// Invalid operation. The connection is closed
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-			}
-		}
-	}
-}
+//
+// SqlConnectionTest.cs - NUnit Test Cases for testing the
+//                        SqlConnection class
+// Author:
+//      Gert Driesen (drieseng@users.sourceforge.net)
+//
+// Copyright (c) 2004 Novell Inc., and the individuals listed
+// on the ChangeLog entries.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data;
+using System.Data.SqlClient;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Data.SqlClient
+{
+	[TestFixture]
+	public class SqlConnectionTest
+	{
+		[Test] // SqlConnection ()
+		public void Constructor1 ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			Assert.AreEqual (string.Empty, cn.ConnectionString, "#1");
+			Assert.AreEqual (15, cn.ConnectionTimeout, "#2");
+			Assert.IsNull (cn.Container, "#3");
+			Assert.AreEqual (string.Empty, cn.Database, "#4");
+			Assert.AreEqual (string.Empty, cn.DataSource, "#5");
+			Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#6");
+			Assert.AreEqual (8000, cn.PacketSize, "#7");
+			Assert.IsNull (cn.Site, "#8");
+			Assert.AreEqual (ConnectionState.Closed, cn.State, "#9");
+			Assert.IsFalse (cn.StatisticsEnabled, "#10");
+			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#11");
+		}
+
+		[Test] // SqlConnection (string)
+		public void Constructor2 ()
+		{
+			string connectionString = "server=SQLSRV; database=Mono;";
+
+			SqlConnection cn = new SqlConnection (connectionString);
+			Assert.AreEqual (connectionString, cn.ConnectionString, "#A1");
+			Assert.AreEqual (15, cn.ConnectionTimeout, "#A2");
+			Assert.IsNull (cn.Container, "#A3");
+			Assert.AreEqual ("Mono", cn.Database, "#A4");
+			Assert.AreEqual ("SQLSRV", cn.DataSource, "#A5");
+			Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#A6");
+			Assert.AreEqual (8000, cn.PacketSize, "#A7");
+			Assert.IsNull (cn.Site, "#A8");
+			Assert.AreEqual (ConnectionState.Closed, cn.State, "#A9");
+			Assert.IsFalse (cn.StatisticsEnabled, "#A10");
+			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#A11");
+
+			cn = new SqlConnection ((string) null);
+			Assert.AreEqual (string.Empty, cn.ConnectionString, "#B1");
+			Assert.AreEqual (15, cn.ConnectionTimeout, "#B2");
+			Assert.IsNull (cn.Container, "#B3");
+			Assert.AreEqual (string.Empty, cn.Database, "#B4");
+			Assert.AreEqual (string.Empty, cn.DataSource, "#B5");
+			Assert.IsFalse (cn.FireInfoMessageEventOnUserErrors, "#B6");
+			Assert.AreEqual (8000, cn.PacketSize, "#B7");
+			Assert.IsNull (cn.Site, "#B8");
+			Assert.AreEqual (ConnectionState.Closed, cn.State, "#B9");
+			Assert.IsFalse (cn.StatisticsEnabled, "#B10");
+			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#B11");
+		}
+
+		[Test]
+		public void Constructor2_ConnectionString_Invalid ()
+		{
+			try {
+				new SqlConnection ("InvalidConnectionString");
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// Format of the initialization string does
+				// not conform to specification starting at
+				// index 0
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.IsNull (ex.ParamName, "#A5");
+			}
+
+			// invalid keyword
+			try {
+				new SqlConnection ("invalidKeyword=10");
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// Keyword not supported: 'invalidkeyword'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+				Assert.IsTrue (ex.Message.IndexOf ("'invalidkeyword'") != -1, "#B5");
+				Assert.IsNull (ex.ParamName, "#B6");
+			}
+
+			// invalid packet size (< minimum)
+			try {
+				new SqlConnection ("Packet Size=511");
+				Assert.Fail ("#C1");
+			} catch (ArgumentException ex) {
+				// Invalid 'Packet Size'.  The value must be an
+				// integer >= 512 and <= 32768
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
+				Assert.IsNull (ex.InnerException, "#C3");
+				Assert.IsNotNull (ex.Message, "#C4");
+				Assert.IsNull (ex.ParamName, "#C5");
+			}
+
+			// invalid packet size (> maximum)
+			try {
+				new SqlConnection ("Packet Size=32769");
+				Assert.Fail ("#D1");
+			} catch (ArgumentException ex) {
+				// Invalid 'Packet Size'.  The value must be an
+				// integer >= 512 and <= 32768
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
+				Assert.IsNull (ex.InnerException, "#D3");
+				Assert.IsNotNull (ex.Message, "#D4");
+				Assert.IsNull (ex.ParamName, "#D5");
+			}
+
+			// negative connect timeout
+			try {
+				new SqlConnection ("Connect Timeout=-1");
+				Assert.Fail ("#E1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'connect timeout'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
+				Assert.IsNull (ex.InnerException, "#E3");
+				Assert.IsNotNull (ex.Message, "#E4");
+				Assert.IsNull (ex.ParamName, "#E5");
+			}
+
+			// negative max pool size
+			try {
+				new SqlConnection ("Max Pool Size=-1");
+				Assert.Fail ("#F1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'max pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#F2");
+				Assert.IsNull (ex.InnerException, "#F3");
+				Assert.IsNotNull (ex.Message, "#F4");
+				Assert.IsNull (ex.ParamName, "#F5");
+			}
+
+			// negative min pool size
+			try {
+				new SqlConnection ("Min Pool Size=-1");
+				Assert.Fail ("#G1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'min pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#G2");
+				Assert.IsNull (ex.InnerException, "#G3");
+				Assert.IsNotNull (ex.Message, "#G4");
+				Assert.IsNull (ex.ParamName, "#G5");
+			}
+		}
+
+		[Test]
+		public void BeginTransaction_Connection_Closed ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			try {
+				cn.BeginTransaction ();
+				Assert.Fail ("#A1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+			}
+
+			try {
+				cn.BeginTransaction ((IsolationLevel) 666);
+				Assert.Fail ("#B1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+			}
+
+			try {
+				cn.BeginTransaction (IsolationLevel.Serializable);
+				Assert.Fail ("#C1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
+				Assert.IsNull (ex.InnerException, "#C3");
+				Assert.IsNotNull (ex.Message, "#C4");
+			}
+
+			try {
+				cn.BeginTransaction ("trans");
+				Assert.Fail ("#D1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
+				Assert.IsNull (ex.InnerException, "#D3");
+				Assert.IsNotNull (ex.Message, "#D4");
+			}
+
+			try {
+				cn.BeginTransaction ((IsolationLevel) 666, "trans");
+				Assert.Fail ("#E1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
+				Assert.IsNull (ex.InnerException, "#E3");
+				Assert.IsNotNull (ex.Message, "#E4");
+			}
+
+			try {
+				cn.BeginTransaction (IsolationLevel.Serializable, "trans");
+				Assert.Fail ("#F1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
+				Assert.IsNull (ex.InnerException, "#F3");
+				Assert.IsNotNull (ex.Message, "#F4");
+			}
+		}
+
+		[Test]
+		public void ChangeDatabase_Connection_Closed ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "server=SQLSRV";
+
+			try {
+				cn.ChangeDatabase ("database");
+				Assert.Fail ("#1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+			}
+		}
+
+		[Test]
+		public void ChangePassword_ConnectionString_Empty ()
+		{
+			try {
+				SqlConnection.ChangePassword (string.Empty, "mono");
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsNotNull (ex.ParamName, "#5");
+				Assert.IsTrue (ex.ParamName.IndexOf ("'connectionString'") != -1, "#6");
+			}
+		}
+
+		[Test]
+		public void ChangePassword_ConnectionString_Null ()
+		{
+			try {
+				SqlConnection.ChangePassword ((string) null, "mono");
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsNotNull (ex.ParamName, "#5");
+				Assert.IsTrue (ex.ParamName.IndexOf ("'connectionString'") != -1, "#6");
+			}
+		}
+
+		[Test]
+		public void ChangePassword_NewPassword_Empty ()
+		{
+			try {
+				SqlConnection.ChangePassword ("server=SQLSRV", string.Empty);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsNotNull (ex.ParamName, "#5");
+				Assert.IsTrue (ex.ParamName.IndexOf ("'newPassword'") != -1, "#6");
+			}
+		}
+
+		[Test]
+		public void ChangePassword_NewPassword_ExceedMaxLength ()
+		{
+			try {
+				SqlConnection.ChangePassword ("server=SQLSRV",
+					new string ('d', 129));
+				Assert.Fail ("#1");
+			} catch (ArgumentException ex) {
+				// The length of argument 'newPassword' exceeds
+				// it's limit of '128'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsTrue (ex.Message.IndexOf ("'newPassword'") != -1, "#5");
+				Assert.IsTrue (ex.Message.IndexOf ("128") != -1, "#6");
+				Assert.IsNull (ex.ParamName, "#7");
+			}
+		}
+
+		[Test]
+		public void ChangePassword_NewPassword_Null ()
+		{
+			try {
+				SqlConnection.ChangePassword ("server=SQLSRV", (string) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsNotNull (ex.ParamName, "#5");
+				Assert.IsTrue (ex.ParamName.IndexOf ("'newPassword'") != -1, "#6");
+			}
+		}
+
+		[Test]
+		public void ClearPool_Connection_Null ()
+		{
+			try {
+				SqlConnection.ClearPool ((SqlConnection) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("connection", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void ConnectionString ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "server=SQLSRV";
+			Assert.AreEqual ("server=SQLSRV", cn.ConnectionString, "#1");
+			cn.ConnectionString = null;
+			Assert.AreEqual (string.Empty, cn.ConnectionString, "#2");
+			cn.ConnectionString = "server=SQLSRV";
+			Assert.AreEqual ("server=SQLSRV", cn.ConnectionString, "#3");
+			cn.ConnectionString = string.Empty;
+			Assert.AreEqual (string.Empty, cn.ConnectionString, "#4");
+		}
+
+		[Test]
+		public void ConnectionString_Value_Invalid ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			try {
+				cn.ConnectionString = "InvalidConnectionString";
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// Format of the initialization string does
+				// not conform to specification starting at
+				// index 0
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.IsNull (ex.ParamName, "#A5");
+			}
+
+			// invalid keyword
+			try {
+				cn.ConnectionString = "invalidKeyword=10";
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// Keyword not supported: 'invalidkeyword'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+				Assert.IsTrue (ex.Message.IndexOf ("'invalidkeyword'") != -1, "#B5");
+				Assert.IsNull (ex.ParamName, "#B6");
+			}
+		}
+
+		[Test]
+		public void CreateCommand ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			SqlCommand cmd = cn.CreateCommand ();
+			Assert.IsNotNull (cmd, "#1");
+			Assert.AreEqual (string.Empty, cmd.CommandText, "#2");
+			Assert.AreEqual (30, cmd.CommandTimeout, "#3");
+			Assert.AreEqual (CommandType.Text, cmd.CommandType, "#4");
+			Assert.AreSame (cn, cmd.Connection, "#5");
+			Assert.IsNull (cmd.Container, "#6");
+			Assert.IsTrue (cmd.DesignTimeVisible, "#7");
+			Assert.IsNull (cmd.Notification, "#8");
+			Assert.IsTrue (cmd.NotificationAutoEnlist, "#9");
+			Assert.IsNotNull (cmd.Parameters, "#10");
+			Assert.AreEqual (0, cmd.Parameters.Count, "#11");
+			Assert.IsNull (cmd.Site, "#12");
+			Assert.IsNull (cmd.Transaction, "#13");
+			Assert.AreEqual (UpdateRowSource.Both, cmd.UpdatedRowSource, "#14");
+		}
+
+		[Test]
+		public void Dispose ()
+		{
+			SqlConnection cn = new SqlConnection ("Server=SQLSRV;Database=master;Timeout=25;Packet Size=512;Workstation ID=DUMMY");
+			cn.Dispose ();
+
+			Assert.AreEqual (string.Empty, cn.ConnectionString, "#1");
+			Assert.AreEqual (15, cn.ConnectionTimeout, "#2");
+			Assert.AreEqual (string.Empty, cn.Database, "#3");
+			Assert.AreEqual (string.Empty, cn.DataSource, "#4");
+			Assert.AreEqual (8000, cn.PacketSize, "#5");
+			Assert.IsTrue (string.Compare (Environment.MachineName, cn.WorkstationId, true) == 0, "#6");
+			Assert.AreEqual (ConnectionState.Closed, cn.State, "#7");
+			cn.Dispose ();
+
+			cn = new SqlConnection ();
+			cn.Dispose ();
+		}
+
+		[Test]
+		public void GetSchema_Connection_Closed ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			try {
+				cn.GetSchema ();
+				Assert.Fail ("#A1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+			}
+
+			try {
+				cn.GetSchema ("Tables");
+				Assert.Fail ("#B1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+			}
+
+			try {
+				cn.GetSchema ((string) null);
+				Assert.Fail ("#C1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
+				Assert.IsNull (ex.InnerException, "#C3");
+				Assert.IsNotNull (ex.Message, "#C4");
+			}
+
+			try {
+				cn.GetSchema ("Tables", new string [] { "master" });
+				Assert.Fail ("#D1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#D2");
+				Assert.IsNull (ex.InnerException, "#D3");
+				Assert.IsNotNull (ex.Message, "#D4");
+			}
+
+			try {
+				cn.GetSchema ((string) null, new string [] { "master" });
+				Assert.Fail ("#E1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E2");
+				Assert.IsNull (ex.InnerException, "#E3");
+				Assert.IsNotNull (ex.Message, "#E4");
+			}
+
+			try {
+				cn.GetSchema ("Tables", (string []) null);
+				Assert.Fail ("#F1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#F2");
+				Assert.IsNull (ex.InnerException, "#F3");
+				Assert.IsNotNull (ex.Message, "#F4");
+			}
+
+			try {
+				cn.GetSchema ((string) null, (string []) null);
+				Assert.Fail ("#G1");
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#G2");
+				Assert.IsNull (ex.InnerException, "#G3");
+				Assert.IsNotNull (ex.Message, "#G4");
+			}
+		}
+
+		[Test]
+		public void ConnectionString_AsynchronousProcessing ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Asynchronous Processing=False";
+			cn.ConnectionString = "Async=True";
+		}
+
+		[Test]
+		public void ConnectionString_ConnectTimeout ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Connection Timeout=45";
+			Assert.AreEqual (45, cn.ConnectionTimeout, "#1");
+			cn.ConnectionString = "Connect Timeout=40";
+			Assert.AreEqual (40, cn.ConnectionTimeout, "#2");
+			cn.ConnectionString = "Timeout=";
+			Assert.AreEqual (15, cn.ConnectionTimeout, "#3");
+			cn.ConnectionString = "Timeout=2147483647";
+			Assert.AreEqual (int.MaxValue, cn.ConnectionTimeout, "#4");
+			cn.ConnectionString = "Timeout=0";
+			Assert.AreEqual (0, cn.ConnectionTimeout, "#5");
+		}
+
+		[Test]
+		public void ConnectionString_ConnectTimeout_Invalid ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			// negative number
+			try {
+				cn.ConnectionString = "Connection timeout=-1";
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'connect timeout'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#A5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#A6");
+			}
+
+			// invalid number
+			try {
+				cn.ConnectionString = "connect Timeout=BB";
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'connect timeout'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNotNull (ex.InnerException, "#B3");
+				Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
+				Assert.IsNotNull (ex.Message, "#B5");
+				Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#B6:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#B7");
+
+				// Input string was not in a correct format
+				FormatException fe = (FormatException) ex.InnerException;
+				Assert.IsNull (fe.InnerException, "#B8");
+				Assert.IsNotNull (fe.Message, "#B9");
+			}
+
+			// overflow
+			try {
+				cn.ConnectionString = "timeout=2147483648";
+				Assert.Fail ("#C1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'connect timeout'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
+				Assert.IsNotNull (ex.InnerException, "#C3");
+				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
+				Assert.IsNotNull (ex.Message, "#C5");
+				Assert.IsTrue (ex.Message.IndexOf ("'connect timeout'") != -1, "#C6:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#C7");
+
+				// Value was either too large or too small for an Int32
+				OverflowException oe = (OverflowException) ex.InnerException;
+				Assert.IsNull (oe.InnerException, "#C8");
+				Assert.IsNotNull (oe.Message, "#C9");
+			}
+		}
+
+		[Test]
+		public void ConnectionString_Database_Synonyms ()
+		{
+			SqlConnection cn = null;
+
+			cn = new SqlConnection ();
+			cn.ConnectionString = "Initial Catalog=db";
+			Assert.AreEqual ("db", cn.Database);
+
+			cn = new SqlConnection ();
+			cn.ConnectionString = "Database=db";
+			Assert.AreEqual ("db", cn.Database);
+		}
+
+		[Test]
+		public void ConnectionString_DataSource_Synonyms ()
+		{
+			SqlConnection cn = null;
+
+			cn = new SqlConnection ();
+			cn.ConnectionString = "Data Source=server";
+			Assert.AreEqual ("server", cn.DataSource);
+
+			cn = new SqlConnection ();
+			cn.ConnectionString = "addr=server";
+			Assert.AreEqual ("server", cn.DataSource);
+
+			cn = new SqlConnection ();
+			cn.ConnectionString = "address=server";
+			Assert.AreEqual ("server", cn.DataSource);
+
+			cn = new SqlConnection ();
+			cn.ConnectionString = "network address=server";
+			Assert.AreEqual ("server", cn.DataSource);
+
+			cn = new SqlConnection ();
+			cn.ConnectionString = "server=server";
+			Assert.AreEqual ("server", cn.DataSource);
+		}
+
+		[Test]
+		public void ConnectionString_MaxPoolSize ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Max Pool Size=2147483647";
+			cn.ConnectionString = "Max Pool Size=1";
+			cn.ConnectionString = "Max Pool Size=500";
+		}
+
+		[Test]
+		public void ConnectionString_MaxPoolSize_Invalid ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			// negative number
+			try {
+				cn.ConnectionString = "Max Pool Size=-1";
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'max pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#A5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#A6");
+			}
+
+			// invalid number
+			try {
+				cn.ConnectionString = "max Pool size=BB";
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'max pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNotNull (ex.InnerException, "#B3");
+				Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
+				Assert.IsNotNull (ex.Message, "#B5");
+				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#B6:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#B7");
+
+				// Input string was not in a correct format
+				FormatException fe = (FormatException) ex.InnerException;
+				Assert.IsNull (fe.InnerException, "#B8");
+				Assert.IsNotNull (fe.Message, "#B9");
+			}
+
+			// overflow
+			try {
+				cn.ConnectionString = "max pool size=2147483648";
+				Assert.Fail ("#C1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'max pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
+				Assert.IsNotNull (ex.InnerException, "#C3");
+				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
+				Assert.IsNotNull (ex.Message, "#C5");
+				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#C6:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#C7");
+
+				// Value was either too large or too small for an Int32
+				OverflowException oe = (OverflowException) ex.InnerException;
+				Assert.IsNull (oe.InnerException, "#C8");
+				Assert.IsNotNull (oe.Message, "#C9");
+			}
+
+			// less than minimum (1)
+			try {
+				cn.ConnectionString = "Min Pool Size=0;Max Pool Size=0";
+				Assert.Fail ("#D1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'max pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
+				Assert.IsNull (ex.InnerException, "#D3");
+				Assert.IsNotNull (ex.Message, "#D4");
+				Assert.IsTrue (ex.Message.IndexOf ("'max pool size'") != -1, "#D5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#D6");
+			}
+
+			// less than min pool size
+			try {
+				cn.ConnectionString = "Min Pool Size=5;Max Pool Size=4";
+				Assert.Fail ("#E1");
+			} catch (ArgumentException ex) {
+				// Invalid min or max pool size values, min
+				// pool size cannot be greater than the max
+				// pool size
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
+				Assert.IsNull (ex.InnerException, "#E3");
+				Assert.IsNotNull (ex.Message, "#E4");
+				Assert.IsNull (ex.ParamName, "#E5");
+			}
+		}
+
+		[Test]
+		public void ConnectionString_MinPoolSize ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "min Pool size=0";
+			cn.ConnectionString = "Min Pool size=100";
+			cn.ConnectionString = "Min Pool Size=2147483647;Max Pool Size=2147483647";
+		}
+
+		[Test]
+		public void ConnectionString_MinPoolSize_Invalid ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			// negative number
+			try {
+				cn.ConnectionString = "Min Pool Size=-1";
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'min pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#A5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#A6");
+			}
+
+			// invalid number
+			try {
+				cn.ConnectionString = "min Pool size=BB";
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'min pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNotNull (ex.InnerException, "#B3");
+				Assert.AreEqual (typeof (FormatException), ex.InnerException.GetType (), "#B4");
+				Assert.IsNotNull (ex.Message, "#B5");
+				Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#B6:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#B7");
+
+				// Input string was not in a correct format
+				FormatException fe = (FormatException) ex.InnerException;
+				Assert.IsNull (fe.InnerException, "#B8");
+				Assert.IsNotNull (fe.Message, "#B9");
+			}
+
+			// overflow
+			try {
+				cn.ConnectionString = "min pool size=2147483648";
+				Assert.Fail ("#C1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'min pool size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
+				Assert.IsNotNull (ex.InnerException, "#C3");
+				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
+				Assert.IsNotNull (ex.Message, "#C5");
+				Assert.IsTrue (ex.Message.IndexOf ("'min pool size'") != -1, "#C6:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#C7");
+
+				// Value was either too large or too small for an Int32
+				OverflowException oe = (OverflowException) ex.InnerException;
+				Assert.IsNull (oe.InnerException, "#C8");
+				Assert.IsNotNull (oe.Message, "#C9");
+			}
+		}
+
+		[Test]
+		public void ConnectionString_MultipleActiveResultSets ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "MultipleActiveResultSets=true";
+		}
+
+		[Test]
+		public void ConnectionString_MultipleActiveResultSets_Invalid ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			try {
+				cn.ConnectionString = "MultipleActiveResultSets=1";
+				Assert.Fail ("#1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'multipleactiveresultsets'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsTrue (ex.Message.IndexOf ("'multipleactiveresultsets'") != -1, "#5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#6");
+			}
+		}
+
+		[Test]
+		public void ConnectionString_NetworkLibrary_Synonyms ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Net=DBMSSOCN";
+			cn.ConnectionString = "Network=DBMSSOCN";
+			cn.ConnectionString = "Network library=DBMSSOCN";
+		}
+
+		[Test]
+		public void ConnectionString_PacketSize ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Packet Size=1024";
+			Assert.AreEqual (1024, cn.PacketSize, "#1");
+			cn.ConnectionString = "packet SizE=533";
+			Assert.AreEqual (533, cn.PacketSize, "#2");
+			cn.ConnectionString = "packet SizE=512";
+			Assert.AreEqual (512, cn.PacketSize, "#3");
+			cn.ConnectionString = "packet SizE=32768";
+			Assert.AreEqual (32768, cn.PacketSize, "#4");
+			cn.ConnectionString = "packet Size=";
+			Assert.AreEqual (8000, cn.PacketSize, "#5");
+		}
+
+		[Test]
+		public void ConnectionString_PacketSize_Invalid ()
+		{
+			SqlConnection cn = new SqlConnection ();
+
+			// invalid packet size (< minimum)
+			try {
+				cn.ConnectionString = "Packet Size=511";
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// Invalid 'Packet Size'.  The value must be an
+				// integer >= 512 and <= 32768
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.IsTrue (ex.Message.IndexOf ("'Packet Size'") != -1, "#A5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#A6");
+			}
+
+			// invalid packet size (> maximum)
+			try {
+				cn.ConnectionString = "packet SIze=32769";
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// Invalid 'Packet Size'.  The value must be an
+				// integer >= 512 and <= 32768
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+				Assert.IsTrue (ex.Message.IndexOf ("'Packet Size'") != -1, "#B5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#B6");
+			}
+
+			// overflow
+			try {
+				cn.ConnectionString = "packet SIze=2147483648";
+				Assert.Fail ("#C1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'packet size'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
+				Assert.IsNotNull (ex.InnerException, "#C3");
+				Assert.AreEqual (typeof (OverflowException), ex.InnerException.GetType (), "#C4");
+				Assert.IsNotNull (ex.Message, "#C5");
+				Assert.IsTrue (ex.Message.IndexOf ("'packet size'") != -1, "#C6:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#C7");
+
+				// Value was either too large or too small for an Int32
+				OverflowException oe = (OverflowException) ex.InnerException;
+				Assert.IsNull (oe.InnerException, "#C8");
+				Assert.IsNotNull (oe.Message, "#C9");
+			}
+		}
+
+		[Test]
+		public void ConnectionString_Password_Synonyms ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Password=scrambled";
+			cn.ConnectionString = "Pwd=scrambled";
+		}
+
+		[Test]
+		public void ConnectionString_PersistSecurityInfo_Synonyms ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Persist Security Info=true";
+			cn.ConnectionString = "PersistSecurityInfo=true";
+		}
+
+		[Test]
+		public void ConnectionString_UserID_Synonyms ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "User Id=test";
+			cn.ConnectionString = "User=test";
+			cn.ConnectionString = "Uid=test";
+		}
+
+		[Test]
+		public void ConnectionString_UserInstance ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "User Instance=true";
+		}
+
+		[Test]
+		public void ConnectionString_UserInstance_Invalid ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			try {
+				cn.ConnectionString = "User Instance=1";
+				Assert.Fail ("#1");
+			} catch (ArgumentException ex) {
+				// Invalid value for key 'user instance'
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsTrue (ex.Message.IndexOf ("'user instance'") != -1, "#5:" + ex.Message);
+				Assert.IsNull (ex.ParamName, "#6");
+			}
+		}
+
+		[Test]
+		public void ConnectionString_OtherKeywords ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "Application Name=test";
+			cn.ConnectionString = "App=test";
+			cn.ConnectionString = "Connection Reset=true";
+			cn.ConnectionString = "Current Language=test";
+			cn.ConnectionString = "Language=test";
+			cn.ConnectionString = "Encrypt=false";
+			//cn.ConnectionString = "Encrypt=true";
+			//cn.ConnectionString = "Enlist=false";
+			cn.ConnectionString = "Enlist=true";
+			cn.ConnectionString = "Integrated Security=true";
+			cn.ConnectionString = "Trusted_connection=true";
+			cn.ConnectionString = "Max Pool Size=10";
+			cn.ConnectionString = "Min Pool Size=10";
+			cn.ConnectionString = "Pooling=true";
+			cn.ConnectionString = "attachdbfilename=dunno";
+			cn.ConnectionString = "extended properties=dunno";
+			cn.ConnectionString = "initial file name=dunno";
+		}
+
+		[Test]
+		public void Open_ConnectionString_Empty ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = string.Empty;
+
+			try {
+				cn.Open ();
+				Assert.Fail ("#1");
+			} catch (InvalidOperationException ex) {
+				// The ConnectionString property has not been
+				// initialized
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+			}
+		}
+
+		[Test]
+		public void Open_ConnectionString_Null ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = null;
+
+			try {
+				cn.Open ();
+				Assert.Fail ("#1");
+			} catch (InvalidOperationException ex) {
+				// The ConnectionString property has not been
+				// initialized
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+			}
+		}
+
+		[Test]
+		public void Open_ConnectionString_Whitespace ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			cn.ConnectionString = "    ";
+
+			try {
+				cn.Open ();
+				Assert.Fail ("#1");
+			} catch (InvalidOperationException ex) {
+				// The ConnectionString property has not been
+				// initialized
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+			}
+		}
+
+		[Test]
+		public void ServerVersion_Connection_Closed ()
+		{
+			SqlConnection cn = new SqlConnection ();
+			try {
+				Assert.Fail ("#A1:" + cn.ServerVersion);
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+			}
+
+			cn = new SqlConnection ("server=SQLSRV; database=Mono;");
+			try {
+				Assert.Fail ("#B1:" + cn.ServerVersion);
+			} catch (InvalidOperationException ex) {
+				// Invalid operation. The connection is closed
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.SqlTypes/SqlDateTimeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.SqlTypes/SqlDateTimeTest.cs
@@ -1,584 +1,584 @@
-//
-// SqlDateTimeTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlDateTime
-//
-// Authors:
-//   Ville Palo (vi64pa@koti.soon.fi)
-//   Martin Willemoes Hansen
-//
-// (C) 2002 Ville Palo
-// (C) 2003 Martin Willemoes Hansen
-// 
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Xml;
-using System.Data.SqlTypes;
-using System.Threading;
-using System.Globalization;
-
-namespace MonoTests.System.Data.SqlTypes
-{
-	[TestFixture]
-        public class SqlDateTimeTest {
-
-	        private long[] myTicks = {
-			631501920000000000L,	// 25 Feb 2002 - 00:00:00
-			631502475130080000L,	// 25 Feb 2002 - 15:25:13,8
-			631502115130080000L,	// 25 Feb 2002 - 05:25:13,8
-			631502115000000000L,	// 25 Feb 2002 - 05:25:00
-			631502115130000000L,	// 25 Feb 2002 - 05:25:13
-			631502079130000000L,	// 25 Feb 2002 - 04:25:13
-			629197085770000000L	// 06 Nov 1994 - 08:49:37 
-		};
-
-	        private SqlDateTime Test1;
-		private SqlDateTime Test2;
-		private SqlDateTime Test3;
-
-		[SetUp]
-                public void GetReady() 
-		{
-			Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
-			Test1 = new SqlDateTime (2002, 10, 19, 9, 40, 0);
-			Test2 = new SqlDateTime (2003, 11, 20,10, 50, 1);
-			Test3 = new SqlDateTime (2003, 11, 20, 10, 50, 1);
-		}
-
-                // Test constructor
-		[Test]
-                public void Create()
-                {
-			// SqlDateTime (DateTime)
-			SqlDateTime CTest = new SqlDateTime (
-				new DateTime (2002, 5, 19, 3, 34, 0));
-			Assert.AreEqual (2002, CTest.Value.Year, "#A01");
-				
-			// SqlDateTime (int, int)
-                        CTest = new SqlDateTime (0, 0);
-			
-			// SqlDateTime (int, int, int)
-                        Assert.AreEqual (1900, CTest.Value.Year, "#A02");
-                        Assert.AreEqual (1, CTest.Value.Month, "#A03");
-                        Assert.AreEqual (1, CTest.Value.Day, "#A04");
-                        Assert.AreEqual (0, CTest.Value.Hour, "#A05");
-
-			// SqlDateTime (int, int, int, int, int, int)
-			CTest = new SqlDateTime (5000, 12, 31);
-			Assert.AreEqual (5000, CTest.Value.Year, "#A06");
-			Assert.AreEqual (12, CTest.Value.Month, "#A07");
-			Assert.AreEqual (31, CTest.Value.Day, "#A08");
-
-			// SqlDateTime (int, int, int, int, int, int, double)
-			CTest = new SqlDateTime (1978, 5, 19, 3, 34, 0);
-			Assert.AreEqual (1978, CTest.Value.Year, "#A09");
-			Assert.AreEqual (5, CTest.Value.Month, "#A10");
-			Assert.AreEqual (19, CTest.Value.Day, "#A11");
-			Assert.AreEqual (3, CTest.Value.Hour, "#A12");
-                        Assert.AreEqual (34, CTest.Value.Minute, "#A13");
-			Assert.AreEqual (0, CTest.Value.Second, "#A14");
-			
-			try {
-				CTest = new SqlDateTime (10000, 12, 31);
-				Assert.Fail ("#A15");
-			} catch (Exception e) {
-                                Assert.AreEqual (typeof (SqlTypeException), e.GetType (), "#A16");
-			}
-			
-			// SqlDateTime (int, int, int, int, int, int, int)
-			CTest = new SqlDateTime (1978, 5, 19, 3, 34, 0, 12);
-			Assert.AreEqual (1978, CTest.Value.Year, "#A17");
-			Assert.AreEqual (5, CTest.Value.Month, "#A18");
-			Assert.AreEqual (19, CTest.Value.Day, "#A19");
-			Assert.AreEqual (3, CTest.Value.Hour, "#A20");
-                        Assert.AreEqual (34, CTest.Value.Minute, "#A21");
-			Assert.AreEqual (0, CTest.Value.Second, "#A22");
-                        Assert.AreEqual (0, CTest.Value.Millisecond, "#A23");
-                }
-
-                // Test public fields
-		[Test]
-                public void PublicFields()
-                {
-			// MaxValue
-			Assert.AreEqual (9999, SqlDateTime.MaxValue.Value.Year, "#B01");
-			Assert.AreEqual (12, SqlDateTime.MaxValue.Value.Month, "#B02");
-			Assert.AreEqual (31, SqlDateTime.MaxValue.Value.Day, "#B03");
-			Assert.AreEqual (23, SqlDateTime.MaxValue.Value.Hour, "#B04");
-			Assert.AreEqual (59, SqlDateTime.MaxValue.Value.Minute, "#B05");
-			Assert.AreEqual (59, SqlDateTime.MaxValue.Value.Second, "#B06");
-
-			// MinValue
-                        Assert.AreEqual (1753, SqlDateTime.MinValue.Value.Year, "#B07");
-                        Assert.AreEqual (1, SqlDateTime.MinValue.Value.Month, "#B08");
-                        Assert.AreEqual (1, SqlDateTime.MinValue.Value.Day, "#B09");
-                        Assert.AreEqual (0, SqlDateTime.MinValue.Value.Hour, "#B10");
-                        Assert.AreEqual (0, SqlDateTime.MinValue.Value.Minute, "#B11");
-                        Assert.AreEqual (0, SqlDateTime.MinValue.Value.Second, "#B12");
-
-			// Null
-			Assert.IsTrue (SqlDateTime.Null.IsNull, "#B13");
-
-			// SQLTicksPerHour
-                        Assert.AreEqual (1080000, SqlDateTime.SQLTicksPerHour, "#B14");
-
-			// SQLTicksPerMinute
-                        Assert.AreEqual (18000, SqlDateTime.SQLTicksPerMinute, "#B15");
-
-			// SQLTicksPerSecond
-                        Assert.AreEqual (300, SqlDateTime.SQLTicksPerSecond, "#B16");
-                }
-
-                // Test properties
-                [Test]
-		public void Properties()
-                {
-			// DayTicks
-                        Assert.AreEqual (37546, Test1.DayTicks, "#C01");
-			
-			try {
-				int test = SqlDateTime.Null.DayTicks;
-				Assert.Fail ("#C02");
-			} catch (Exception e) {
-				Assert.AreEqual (typeof (SqlNullValueException), e.GetType (), "#C03");
-			}
-				
-			// IsNull
-			Assert.IsTrue (SqlDateTime.Null.IsNull, "#C04");
-			Assert.IsTrue (!Test2.IsNull, "#C05");
-
-			// TimeTicks
-                        Assert.AreEqual (10440000, Test1.TimeTicks, "#C06");
-			
-			try {
-				int test = SqlDateTime.Null.TimeTicks;
-				Assert.Fail ("#C07");
-			} catch (Exception e) {
-				Assert.AreEqual (typeof (SqlNullValueException), e.GetType (), "#C08");
-			}
-
-			// Value
-			Assert.AreEqual (2003, Test2.Value.Year, "#C09");
-			Assert.AreEqual (2002, Test1.Value.Year, "#C10");
-                }
-
-                // PUBLIC METHODS
-
-		[Test]		
-                public void CompareTo()
-                {
-                        SqlString TestString = new SqlString ("This is a test");
-
-                        Assert.IsTrue (Test1.CompareTo (Test3) < 0, "#D01");
-                        Assert.IsTrue (Test2.CompareTo (Test1) > 0, "#D02");
-                        Assert.IsTrue (Test2.CompareTo (Test3) == 0, "#D03");
-                        Assert.IsTrue (Test1.CompareTo (SqlDateTime.Null) > 0, "#D04");
-
-                        try {
-                                Test1.CompareTo (TestString);
-                                Assert.Fail("#D05");
-                        } catch(Exception e) {
-                                Assert.AreEqual (typeof (ArgumentException), e.GetType (), "#D06");
-                        }
-                }
-
-		[Test]
-                public void EqualsMethods()
-                {
-                        Assert.IsTrue (!Test1.Equals (Test2), "#E01");
-                        Assert.IsTrue (!Test2.Equals (new SqlString ("TEST")), "#E03");
-                        Assert.IsTrue (Test2.Equals (Test3), "#E04");
-
-                        // Static Equals()-method
-                        Assert.IsTrue (SqlDateTime.Equals (Test2, Test3).Value, "#E05");
-                        Assert.IsTrue (!SqlDateTime.Equals (Test1, Test2).Value, "#E06");
-                }
-
-		[Test]
-                public void GetHashCodeTest()
-                {
-                        // FIXME: Better way to test HashCode
-                        Assert.AreEqual (Test1.GetHashCode (), Test1.GetHashCode (), "#F01");
-                        Assert.IsTrue (Test2.GetHashCode () != Test1.GetHashCode (), "#F02");
-                }
-
-		[Test]
-                public void GetTypeTest()
-                {
-                        Assert.AreEqual ("System.Data.SqlTypes.SqlDateTime", Test1.GetType ().ToString (), "#G01");
-                        Assert.AreEqual ("System.DateTime", Test1.Value.GetType ().ToString (), "#G02");
-                }
-
-		[Test]
-                public void Greaters()
-                {
-                        // GreateThan ()
-                        Assert.IsTrue (!SqlDateTime.GreaterThan (Test1, Test2).Value, "#H01");
-                        Assert.IsTrue (SqlDateTime.GreaterThan (Test2, Test1).Value, "#H02");
-                        Assert.IsTrue (!SqlDateTime.GreaterThan (Test2, Test3).Value, "#H03");
-
-                        // GreaterTharOrEqual ()
-                        Assert.IsTrue (!SqlDateTime.GreaterThanOrEqual (Test1, Test2).Value, "#H04");
-                        Assert.IsTrue (SqlDateTime.GreaterThanOrEqual (Test2, Test1).Value, "#H05");
-                        Assert.IsTrue (SqlDateTime.GreaterThanOrEqual (Test2, Test3).Value, "#H06");
-                }
-
-		[Test]
-                public void Lessers()
-                {
-                        // LessThan()
-                        Assert.IsTrue (!SqlDateTime.LessThan (Test2, Test3).Value, "#I01");
-                        Assert.IsTrue (!SqlDateTime.LessThan (Test2, Test1).Value, "#I02");
-                        Assert.IsTrue (SqlDateTime.LessThan (Test1, Test3).Value, "#I03");
-
-                        // LessThanOrEqual ()
-                        Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test1, Test2).Value, "#I04");
-                        Assert.IsTrue (!SqlDateTime.LessThanOrEqual (Test2, Test1).Value, "#I05");
-                        Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test3, Test2).Value, "#I06");
-                        Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test1, SqlDateTime.Null).IsNull, "#I07");
-                }
-
-		[Test]
-                public void NotEquals()
-                {
-                        Assert.IsTrue (SqlDateTime.NotEquals (Test1, Test2).Value, "#J01");
-                        Assert.IsTrue (SqlDateTime.NotEquals (Test3, Test1).Value, "#J02");
-                        Assert.IsTrue (!SqlDateTime.NotEquals (Test2, Test3).Value, "#J03");
-                        Assert.IsTrue (SqlDateTime.NotEquals (SqlDateTime.Null, Test2).IsNull, "#J04");
-                }
-
-		[Test]
-                public void Parse()
-                {
-                        try {
-                                SqlDateTime.Parse (null);
-                                Assert.Fail ("#K01");
-                        } catch (Exception e) {
-                                Assert.AreEqual (typeof (ArgumentNullException), e.GetType (), "#K02");
-                        }
-
-                        try {
-                                SqlDateTime.Parse ("not-a-number");
-                                Assert.Fail ("#K03");
-                        } catch (Exception e) {
-                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#K04");
-                        }
-
-			SqlDateTime t1 = SqlDateTime.Parse ("02/25/2002");
-			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K05");
-
-			try {
-				t1 = SqlDateTime.Parse ("2002-02-25");
-			} catch (Exception e) {
-				Assert.Fail ("#K06 " + e);
-			}
-
-			// Thanks for Martin Baulig for these (DateTimeTest.cs)
-			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K07");
-			t1 = SqlDateTime.Parse ("Monday, 25 February 2002");
-			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K08");
-			t1 = SqlDateTime.Parse ("Monday, 25 February 2002 05:25");
-			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#K09");
-			t1 = SqlDateTime.Parse ("Monday, 25 February 2002 05:25:13");
-                        Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K10");
-			t1 = SqlDateTime.Parse ("02/25/2002 05:25");
-			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#K11");
-			t1 = SqlDateTime.Parse ("02/25/2002 05:25:13");
-			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K12");
-                        t1 = SqlDateTime.Parse ("2002-02-25 04:25:13Z");
-                        t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
-			Assert.AreEqual (2002, t1.Value.Year, "#K13");
-			Assert.AreEqual (02, t1.Value.Month, "#K14");
-			Assert.AreEqual (25, t1.Value.Day, "#K15");
-			Assert.AreEqual (04, t1.Value.Hour, "#K16");
-			Assert.AreEqual (25, t1.Value.Minute, "#K17");
-			Assert.AreEqual (13, t1.Value.Second, "#K18");
-			
-			SqlDateTime t2 = new SqlDateTime (DateTime.Today.Year, 2, 25);
-			t1 = SqlDateTime.Parse ("February 25");
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K19");
-			
-			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
-			t1 = SqlDateTime.Parse ("February 08");
-                        Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K20");
-
-			t1 = SqlDateTime.Parse ("Mon, 25 Feb 2002 04:25:13 GMT");
-			t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
-			Assert.AreEqual (2002, t1.Value.Year, "#K21");
-			Assert.AreEqual (02, t1.Value.Month, "#K22");
-			Assert.AreEqual (25, t1.Value.Day, "#K23");
-			Assert.AreEqual (04, t1.Value.Hour, "#K24");
-			Assert.AreEqual (25, t1.Value.Minute, "#K25");
-			Assert.AreEqual (13, t1.Value.Second, "#K26");
-
-			t1 = SqlDateTime.Parse ("2002-02-25T05:25:13");
-			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K27");
-
-                        t2 = DateTime.Today + new TimeSpan (5,25,0);
-			t1 = SqlDateTime.Parse ("05:25");
-			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#K28");
-
-                        t2 = DateTime.Today + new TimeSpan (5,25,13);
-			t1 = SqlDateTime.Parse ("05:25:13");
-			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#K29");
-
-			t2 = new SqlDateTime (2002, 2, 1);
-			t1 = SqlDateTime.Parse ("2002 February");
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K30");
-			
-			t2 = new SqlDateTime (2002, 2, 1);
-			t1 = SqlDateTime.Parse ("2002 February");
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K31");
-			
-			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
-			t1 = SqlDateTime.Parse ("February 8");
-			
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K32");
-                }
-
-		[Test]
-		[Ignore ("This test is locale dependent.")]
-		public void ToStringTest()
-		{
-			//
-			// Thanks for Marting Baulig for these (DateTimeTest.cs)
-			//
-			
-                        SqlDateTime t1 = new SqlDateTime (2002, 2, 25, 5, 25, 13);
-                        SqlDateTime t2 = new SqlDateTime (2002, 2, 25, 15, 25, 13);
-			
-			// Standard patterns
-                        Assert.AreEqual("2/25/2002 5:25:13 AM", t1.ToString (), "L01");
-                        Assert.AreEqual((SqlString)"2/25/2002 5:25:13 AM", t1.ToSqlString (), "L02");
-		}
-
-                // OPERATORS
-		[Test]
-                public void ArithmeticOperators()
-                {
-			TimeSpan TestSpan = new TimeSpan (20, 1, 20, 20);
-			SqlDateTime ResultDateTime;
-
-                        // "+"-operator
-                        ResultDateTime = Test1 + TestSpan;
-			Assert.AreEqual (2002, ResultDateTime.Value.Year, "#M01");
-			Assert.AreEqual (8, ResultDateTime.Value.Day, "#M02");
-			Assert.AreEqual (11, ResultDateTime.Value.Hour, "#M03");
-                        Assert.AreEqual (0, ResultDateTime.Value.Minute, "#M04");
-                        Assert.AreEqual (20, ResultDateTime.Value.Second, "#M05");
-			Assert.IsTrue ((SqlDateTime.Null + TestSpan).IsNull, "#M06");
-
-                        try {
-                                ResultDateTime = SqlDateTime.MaxValue + TestSpan;
-                                Assert.Fail ("#M07");
-                        } catch (Exception e) {
-                                Assert.AreEqual (typeof (ArgumentOutOfRangeException), e.GetType (), "#M08");
-                        }
-
-                        // "-"-operator
-			ResultDateTime = Test1 - TestSpan;
-			Assert.AreEqual (2002, ResultDateTime.Value.Year, "#M09");
-                        Assert.AreEqual (29, ResultDateTime.Value.Day, "#M10");
-			Assert.AreEqual (8, ResultDateTime.Value.Hour, "#M11");
-                        Assert.AreEqual (19, ResultDateTime.Value.Minute, "#M12");
-                        Assert.AreEqual (40, ResultDateTime.Value.Second, "#M13");
-                        Assert.IsTrue ((SqlDateTime.Null - TestSpan).IsNull, "#M14");
-			
-                        try {
-                                ResultDateTime = SqlDateTime.MinValue - TestSpan;
-                                Assert.Fail ("#M15");
-                        } catch  (Exception e) {
-                                Assert.AreEqual (typeof (SqlTypeException), e.GetType (), "#M16");
-                        }
-                }
-
-		[Test]
-                public void ThanOrEqualOperators()
-                {
-                        // == -operator
-                        Assert.IsTrue ((Test2 == Test3).Value, "#N01");
-                        Assert.IsTrue (!(Test1 == Test2).Value, "#N02");
-                        Assert.IsTrue ((Test1 == SqlDateTime.Null).IsNull, "#N03");
-                        
-                        // != -operator
-                        Assert.IsTrue (!(Test2 != Test3).Value, "#N04");
-                        Assert.IsTrue ((Test1 != Test3).Value, "#N05");
-                        Assert.IsTrue ((Test1 != SqlDateTime.Null).IsNull, "#N06");
-
-                        // > -operator
-                        Assert.IsTrue ((Test2 > Test1).Value, "#N07");
-                        Assert.IsTrue (!(Test3 > Test2).Value, "#N08");
-                        Assert.IsTrue ((Test1 > SqlDateTime.Null).IsNull, "#N09");
-
-                        // >=  -operator
-                        Assert.IsTrue (!(Test1 >= Test3).Value, "#N10");
-                        Assert.IsTrue ((Test3 >= Test1).Value, "#N11");
-                        Assert.IsTrue ((Test2 >= Test3).Value, "#N12");
-                        Assert.IsTrue ((Test1 >= SqlDateTime.Null).IsNull, "#N13");
-
-                        // < -operator
-                        Assert.IsTrue (!(Test2 < Test1).Value, "#N14");
-                        Assert.IsTrue ((Test1 < Test3).Value, "#N15");
-                        Assert.IsTrue (!(Test2 < Test3).Value, "#N16");
-                        Assert.IsTrue ((Test1 < SqlDateTime.Null).IsNull, "#N17");
-
-                        // <= -operator
-                        Assert.IsTrue ((Test1 <= Test3).Value, "#N18");
-                        Assert.IsTrue (!(Test3 <= Test1).Value, "#N19");
-                        Assert.IsTrue ((Test2 <= Test3).Value, "#N20");
-                        Assert.IsTrue ((Test1 <= SqlDateTime.Null).IsNull, "#N21");
-                }
-
-		[Test]
-		public void SqlDateTimeToDateTime()
-		{
-			Assert.AreEqual (2002, ((DateTime)Test1).Year, "O01");
-			Assert.AreEqual (2003, ((DateTime)Test2).Year, "O03");
-			Assert.AreEqual (10, ((DateTime)Test1).Month, "O04");
-			Assert.AreEqual (19, ((DateTime)Test1).Day, "O05");
-			Assert.AreEqual (9, ((DateTime)Test1).Hour, "O06");
-			Assert.AreEqual (40, ((DateTime)Test1).Minute, "O07");
-                        Assert.AreEqual (0, ((DateTime)Test1).Second, "O08");
-		}
-
-		[Test]
-		public void SqlStringToSqlDateTime()
-		{
-
-			SqlString TestString = new SqlString ("02/25/2002");
-                        SqlDateTime t1 = (SqlDateTime)TestString;
-
-			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P01");
-
-			// Thanks for Martin Baulig for these (DateTimeTest.cs)
-			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P02");
-			t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002");
-			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P04");
-			t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002 05:25");
-			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#P05");
-			t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002 05:25:13");
-			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P05");
-			t1 = (SqlDateTime) new SqlString ("02/25/2002 05:25");
-			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#P06");
-			t1 = (SqlDateTime) new SqlString ("02/25/2002 05:25:13");
-			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P07");
-			t1 = (SqlDateTime) new SqlString ("2002-02-25 04:25:13Z");
-			t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
-			Assert.AreEqual (2002, t1.Value.Year, "#P08");
-			Assert.AreEqual (02, t1.Value.Month, "#P09");
-			Assert.AreEqual (25, t1.Value.Day, "#P10");
-			Assert.AreEqual (04, t1.Value.Hour, "#P11");
-			Assert.AreEqual (25, t1.Value.Minute, "#P12");
-			Assert.AreEqual (13, t1.Value.Second, "#P13");
-			
-			SqlDateTime t2 = new SqlDateTime (DateTime.Today.Year, 2, 25);
-			t1 = (SqlDateTime) new SqlString ("February 25");
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P14");
-			
-			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
-			t1 = (SqlDateTime) new SqlString ("February 08");
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P15");
-
-			t1 = (SqlDateTime) new SqlString ("Mon, 25 Feb 2002 04:25:13 GMT");
-			t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
-			Assert.AreEqual (2002, t1.Value.Year, "#P16");
-			Assert.AreEqual (02, t1.Value.Month, "#P17");
-			Assert.AreEqual (25, t1.Value.Day, "#P18");
-			Assert.AreEqual (04, t1.Value.Hour, "#P19");
-			Assert.AreEqual (25, t1.Value.Minute, "#P20");
-			Assert.AreEqual (13, t1.Value.Second, "#P21");
-
-			t1 = (SqlDateTime) new SqlString ("2002-02-25T05:25:13");
-			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P22");
-
-                        t2 = DateTime.Today + new TimeSpan (5,25,0);
-			t1 = (SqlDateTime) new SqlString ("05:25");
-			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#P23");
-
-                        t2 = DateTime.Today + new TimeSpan (5,25,13);
-			t1 = (SqlDateTime) new SqlString ("05:25:13");
-			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#P24");
-
-			t2 = new SqlDateTime (2002, 2, 1);
-			t1 = (SqlDateTime) new SqlString ("2002 February");
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P25");
-			
-			t2 = new SqlDateTime (2002, 2, 1);
-			t1 = (SqlDateTime) new SqlString ("2002 February");
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P26");
-			
-			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
-			t1 = (SqlDateTime) new SqlString ("February 8");
-			
-			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P27");
-		}
-
-		[Test]
-		public void DateTimeToSqlDateTime()
-		{
-			DateTime DateTimeTest = new DateTime (2002, 10, 19, 11, 53, 4);
-			SqlDateTime Result = (SqlDateTime)DateTimeTest;
-			Assert.AreEqual (2002, Result.Value.Year, "#Q01");
-			Assert.AreEqual (10, Result.Value.Month, "#Q02");
-			Assert.AreEqual (19, Result.Value.Day, "#Q03");
-			Assert.AreEqual (11, Result.Value.Hour, "#Q04");
-       			Assert.AreEqual (53, Result.Value.Minute, "#Q05");
-			Assert.AreEqual (4, Result.Value.Second, "#Q06");
-		}
-
-		[Test]
-		public void TicksRoundTrip ()
-		{
-			SqlDateTime d1 = new SqlDateTime (2007, 05, 04, 18, 02, 40, 398.25);
-			SqlDateTime d2 = new SqlDateTime (d1.DayTicks, d1.TimeTicks);
-
-			Assert.AreEqual (39204, d1.DayTicks, "#R01");
-			Assert.AreEqual (19488119, d1.TimeTicks, "#R02");
-			Assert.AreEqual (633138985603970000, d1.Value.Ticks, "#R03");
-			Assert.AreEqual (d1.DayTicks, d2.DayTicks, "#R04");
-			Assert.AreEqual (d1.TimeTicks, d2.TimeTicks, "#R05");
-			Assert.AreEqual (d1.Value.Ticks, d2.Value.Ticks, "#R06");
-			Assert.AreEqual (d1, d2, "#R07");
-		}
-
-		[Test]
-		public void EffingBilisecond ()
-		{
-			SqlDateTime d1 = new SqlDateTime (2007, 05, 04, 18, 02, 40, 398252);
-
-			Assert.AreEqual (39204, d1.DayTicks, "#S01");
-			Assert.AreEqual (19488119, d1.TimeTicks, "#S02");
-			Assert.AreEqual (633138985603970000, d1.Value.Ticks, "#R03");
-		}
-
-		[Test]
-		public void GetXsdTypeTest ()
-		{
-			XmlQualifiedName qualifiedName = SqlDateTime.GetXsdType (null);
-			NUnit.Framework.Assert.AreEqual ("dateTime", qualifiedName.Name, "#A01");
-		}
-        }
-}
-
+//
+// SqlDateTimeTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlDateTime
+//
+// Authors:
+//   Ville Palo (vi64pa@koti.soon.fi)
+//   Martin Willemoes Hansen
+//
+// (C) 2002 Ville Palo
+// (C) 2003 Martin Willemoes Hansen
+// 
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Xml;
+using System.Data.SqlTypes;
+using System.Threading;
+using System.Globalization;
+
+namespace MonoTests.System.Data.SqlTypes
+{
+	[TestFixture]
+        public class SqlDateTimeTest {
+
+	        private long[] myTicks = {
+			631501920000000000L,	// 25 Feb 2002 - 00:00:00
+			631502475130080000L,	// 25 Feb 2002 - 15:25:13,8
+			631502115130080000L,	// 25 Feb 2002 - 05:25:13,8
+			631502115000000000L,	// 25 Feb 2002 - 05:25:00
+			631502115130000000L,	// 25 Feb 2002 - 05:25:13
+			631502079130000000L,	// 25 Feb 2002 - 04:25:13
+			629197085770000000L	// 06 Nov 1994 - 08:49:37 
+		};
+
+	        private SqlDateTime Test1;
+		private SqlDateTime Test2;
+		private SqlDateTime Test3;
+
+		[SetUp]
+                public void GetReady() 
+		{
+			Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
+			Test1 = new SqlDateTime (2002, 10, 19, 9, 40, 0);
+			Test2 = new SqlDateTime (2003, 11, 20,10, 50, 1);
+			Test3 = new SqlDateTime (2003, 11, 20, 10, 50, 1);
+		}
+
+                // Test constructor
+		[Test]
+                public void Create()
+                {
+			// SqlDateTime (DateTime)
+			SqlDateTime CTest = new SqlDateTime (
+				new DateTime (2002, 5, 19, 3, 34, 0));
+			Assert.AreEqual (2002, CTest.Value.Year, "#A01");
+				
+			// SqlDateTime (int, int)
+                        CTest = new SqlDateTime (0, 0);
+			
+			// SqlDateTime (int, int, int)
+                        Assert.AreEqual (1900, CTest.Value.Year, "#A02");
+                        Assert.AreEqual (1, CTest.Value.Month, "#A03");
+                        Assert.AreEqual (1, CTest.Value.Day, "#A04");
+                        Assert.AreEqual (0, CTest.Value.Hour, "#A05");
+
+			// SqlDateTime (int, int, int, int, int, int)
+			CTest = new SqlDateTime (5000, 12, 31);
+			Assert.AreEqual (5000, CTest.Value.Year, "#A06");
+			Assert.AreEqual (12, CTest.Value.Month, "#A07");
+			Assert.AreEqual (31, CTest.Value.Day, "#A08");
+
+			// SqlDateTime (int, int, int, int, int, int, double)
+			CTest = new SqlDateTime (1978, 5, 19, 3, 34, 0);
+			Assert.AreEqual (1978, CTest.Value.Year, "#A09");
+			Assert.AreEqual (5, CTest.Value.Month, "#A10");
+			Assert.AreEqual (19, CTest.Value.Day, "#A11");
+			Assert.AreEqual (3, CTest.Value.Hour, "#A12");
+                        Assert.AreEqual (34, CTest.Value.Minute, "#A13");
+			Assert.AreEqual (0, CTest.Value.Second, "#A14");
+			
+			try {
+				CTest = new SqlDateTime (10000, 12, 31);
+				Assert.Fail ("#A15");
+			} catch (Exception e) {
+                                Assert.AreEqual (typeof (SqlTypeException), e.GetType (), "#A16");
+			}
+			
+			// SqlDateTime (int, int, int, int, int, int, int)
+			CTest = new SqlDateTime (1978, 5, 19, 3, 34, 0, 12);
+			Assert.AreEqual (1978, CTest.Value.Year, "#A17");
+			Assert.AreEqual (5, CTest.Value.Month, "#A18");
+			Assert.AreEqual (19, CTest.Value.Day, "#A19");
+			Assert.AreEqual (3, CTest.Value.Hour, "#A20");
+                        Assert.AreEqual (34, CTest.Value.Minute, "#A21");
+			Assert.AreEqual (0, CTest.Value.Second, "#A22");
+                        Assert.AreEqual (0, CTest.Value.Millisecond, "#A23");
+                }
+
+                // Test public fields
+		[Test]
+                public void PublicFields()
+                {
+			// MaxValue
+			Assert.AreEqual (9999, SqlDateTime.MaxValue.Value.Year, "#B01");
+			Assert.AreEqual (12, SqlDateTime.MaxValue.Value.Month, "#B02");
+			Assert.AreEqual (31, SqlDateTime.MaxValue.Value.Day, "#B03");
+			Assert.AreEqual (23, SqlDateTime.MaxValue.Value.Hour, "#B04");
+			Assert.AreEqual (59, SqlDateTime.MaxValue.Value.Minute, "#B05");
+			Assert.AreEqual (59, SqlDateTime.MaxValue.Value.Second, "#B06");
+
+			// MinValue
+                        Assert.AreEqual (1753, SqlDateTime.MinValue.Value.Year, "#B07");
+                        Assert.AreEqual (1, SqlDateTime.MinValue.Value.Month, "#B08");
+                        Assert.AreEqual (1, SqlDateTime.MinValue.Value.Day, "#B09");
+                        Assert.AreEqual (0, SqlDateTime.MinValue.Value.Hour, "#B10");
+                        Assert.AreEqual (0, SqlDateTime.MinValue.Value.Minute, "#B11");
+                        Assert.AreEqual (0, SqlDateTime.MinValue.Value.Second, "#B12");
+
+			// Null
+			Assert.IsTrue (SqlDateTime.Null.IsNull, "#B13");
+
+			// SQLTicksPerHour
+                        Assert.AreEqual (1080000, SqlDateTime.SQLTicksPerHour, "#B14");
+
+			// SQLTicksPerMinute
+                        Assert.AreEqual (18000, SqlDateTime.SQLTicksPerMinute, "#B15");
+
+			// SQLTicksPerSecond
+                        Assert.AreEqual (300, SqlDateTime.SQLTicksPerSecond, "#B16");
+                }
+
+                // Test properties
+                [Test]
+		public void Properties()
+                {
+			// DayTicks
+                        Assert.AreEqual (37546, Test1.DayTicks, "#C01");
+			
+			try {
+				int test = SqlDateTime.Null.DayTicks;
+				Assert.Fail ("#C02");
+			} catch (Exception e) {
+				Assert.AreEqual (typeof (SqlNullValueException), e.GetType (), "#C03");
+			}
+				
+			// IsNull
+			Assert.IsTrue (SqlDateTime.Null.IsNull, "#C04");
+			Assert.IsTrue (!Test2.IsNull, "#C05");
+
+			// TimeTicks
+                        Assert.AreEqual (10440000, Test1.TimeTicks, "#C06");
+			
+			try {
+				int test = SqlDateTime.Null.TimeTicks;
+				Assert.Fail ("#C07");
+			} catch (Exception e) {
+				Assert.AreEqual (typeof (SqlNullValueException), e.GetType (), "#C08");
+			}
+
+			// Value
+			Assert.AreEqual (2003, Test2.Value.Year, "#C09");
+			Assert.AreEqual (2002, Test1.Value.Year, "#C10");
+                }
+
+                // PUBLIC METHODS
+
+		[Test]		
+                public void CompareTo()
+                {
+                        SqlString TestString = new SqlString ("This is a test");
+
+                        Assert.IsTrue (Test1.CompareTo (Test3) < 0, "#D01");
+                        Assert.IsTrue (Test2.CompareTo (Test1) > 0, "#D02");
+                        Assert.IsTrue (Test2.CompareTo (Test3) == 0, "#D03");
+                        Assert.IsTrue (Test1.CompareTo (SqlDateTime.Null) > 0, "#D04");
+
+                        try {
+                                Test1.CompareTo (TestString);
+                                Assert.Fail("#D05");
+                        } catch(Exception e) {
+                                Assert.AreEqual (typeof (ArgumentException), e.GetType (), "#D06");
+                        }
+                }
+
+		[Test]
+                public void EqualsMethods()
+                {
+                        Assert.IsTrue (!Test1.Equals (Test2), "#E01");
+                        Assert.IsTrue (!Test2.Equals (new SqlString ("TEST")), "#E03");
+                        Assert.IsTrue (Test2.Equals (Test3), "#E04");
+
+                        // Static Equals()-method
+                        Assert.IsTrue (SqlDateTime.Equals (Test2, Test3).Value, "#E05");
+                        Assert.IsTrue (!SqlDateTime.Equals (Test1, Test2).Value, "#E06");
+                }
+
+		[Test]
+                public void GetHashCodeTest()
+                {
+                        // FIXME: Better way to test HashCode
+                        Assert.AreEqual (Test1.GetHashCode (), Test1.GetHashCode (), "#F01");
+                        Assert.IsTrue (Test2.GetHashCode () != Test1.GetHashCode (), "#F02");
+                }
+
+		[Test]
+                public void GetTypeTest()
+                {
+                        Assert.AreEqual ("System.Data.SqlTypes.SqlDateTime", Test1.GetType ().ToString (), "#G01");
+                        Assert.AreEqual ("System.DateTime", Test1.Value.GetType ().ToString (), "#G02");
+                }
+
+		[Test]
+                public void Greaters()
+                {
+                        // GreateThan ()
+                        Assert.IsTrue (!SqlDateTime.GreaterThan (Test1, Test2).Value, "#H01");
+                        Assert.IsTrue (SqlDateTime.GreaterThan (Test2, Test1).Value, "#H02");
+                        Assert.IsTrue (!SqlDateTime.GreaterThan (Test2, Test3).Value, "#H03");
+
+                        // GreaterTharOrEqual ()
+                        Assert.IsTrue (!SqlDateTime.GreaterThanOrEqual (Test1, Test2).Value, "#H04");
+                        Assert.IsTrue (SqlDateTime.GreaterThanOrEqual (Test2, Test1).Value, "#H05");
+                        Assert.IsTrue (SqlDateTime.GreaterThanOrEqual (Test2, Test3).Value, "#H06");
+                }
+
+		[Test]
+                public void Lessers()
+                {
+                        // LessThan()
+                        Assert.IsTrue (!SqlDateTime.LessThan (Test2, Test3).Value, "#I01");
+                        Assert.IsTrue (!SqlDateTime.LessThan (Test2, Test1).Value, "#I02");
+                        Assert.IsTrue (SqlDateTime.LessThan (Test1, Test3).Value, "#I03");
+
+                        // LessThanOrEqual ()
+                        Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test1, Test2).Value, "#I04");
+                        Assert.IsTrue (!SqlDateTime.LessThanOrEqual (Test2, Test1).Value, "#I05");
+                        Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test3, Test2).Value, "#I06");
+                        Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test1, SqlDateTime.Null).IsNull, "#I07");
+                }
+
+		[Test]
+                public void NotEquals()
+                {
+                        Assert.IsTrue (SqlDateTime.NotEquals (Test1, Test2).Value, "#J01");
+                        Assert.IsTrue (SqlDateTime.NotEquals (Test3, Test1).Value, "#J02");
+                        Assert.IsTrue (!SqlDateTime.NotEquals (Test2, Test3).Value, "#J03");
+                        Assert.IsTrue (SqlDateTime.NotEquals (SqlDateTime.Null, Test2).IsNull, "#J04");
+                }
+
+		[Test]
+                public void Parse()
+                {
+                        try {
+                                SqlDateTime.Parse (null);
+                                Assert.Fail ("#K01");
+                        } catch (Exception e) {
+                                Assert.AreEqual (typeof (ArgumentNullException), e.GetType (), "#K02");
+                        }
+
+                        try {
+                                SqlDateTime.Parse ("not-a-number");
+                                Assert.Fail ("#K03");
+                        } catch (Exception e) {
+                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#K04");
+                        }
+
+			SqlDateTime t1 = SqlDateTime.Parse ("02/25/2002");
+			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K05");
+
+			try {
+				t1 = SqlDateTime.Parse ("2002-02-25");
+			} catch (Exception e) {
+				Assert.Fail ("#K06 " + e);
+			}
+
+			// Thanks for Martin Baulig for these (DateTimeTest.cs)
+			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K07");
+			t1 = SqlDateTime.Parse ("Monday, 25 February 2002");
+			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K08");
+			t1 = SqlDateTime.Parse ("Monday, 25 February 2002 05:25");
+			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#K09");
+			t1 = SqlDateTime.Parse ("Monday, 25 February 2002 05:25:13");
+                        Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K10");
+			t1 = SqlDateTime.Parse ("02/25/2002 05:25");
+			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#K11");
+			t1 = SqlDateTime.Parse ("02/25/2002 05:25:13");
+			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K12");
+                        t1 = SqlDateTime.Parse ("2002-02-25 04:25:13Z");
+                        t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
+			Assert.AreEqual (2002, t1.Value.Year, "#K13");
+			Assert.AreEqual (02, t1.Value.Month, "#K14");
+			Assert.AreEqual (25, t1.Value.Day, "#K15");
+			Assert.AreEqual (04, t1.Value.Hour, "#K16");
+			Assert.AreEqual (25, t1.Value.Minute, "#K17");
+			Assert.AreEqual (13, t1.Value.Second, "#K18");
+			
+			SqlDateTime t2 = new SqlDateTime (DateTime.Today.Year, 2, 25);
+			t1 = SqlDateTime.Parse ("February 25");
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K19");
+			
+			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
+			t1 = SqlDateTime.Parse ("February 08");
+                        Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K20");
+
+			t1 = SqlDateTime.Parse ("Mon, 25 Feb 2002 04:25:13 GMT");
+			t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
+			Assert.AreEqual (2002, t1.Value.Year, "#K21");
+			Assert.AreEqual (02, t1.Value.Month, "#K22");
+			Assert.AreEqual (25, t1.Value.Day, "#K23");
+			Assert.AreEqual (04, t1.Value.Hour, "#K24");
+			Assert.AreEqual (25, t1.Value.Minute, "#K25");
+			Assert.AreEqual (13, t1.Value.Second, "#K26");
+
+			t1 = SqlDateTime.Parse ("2002-02-25T05:25:13");
+			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K27");
+
+                        t2 = DateTime.Today + new TimeSpan (5,25,0);
+			t1 = SqlDateTime.Parse ("05:25");
+			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#K28");
+
+                        t2 = DateTime.Today + new TimeSpan (5,25,13);
+			t1 = SqlDateTime.Parse ("05:25:13");
+			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#K29");
+
+			t2 = new SqlDateTime (2002, 2, 1);
+			t1 = SqlDateTime.Parse ("2002 February");
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K30");
+			
+			t2 = new SqlDateTime (2002, 2, 1);
+			t1 = SqlDateTime.Parse ("2002 February");
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K31");
+			
+			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
+			t1 = SqlDateTime.Parse ("February 8");
+			
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K32");
+                }
+
+		[Test]
+		[Ignore ("This test is locale dependent.")]
+		public void ToStringTest()
+		{
+			//
+			// Thanks for Marting Baulig for these (DateTimeTest.cs)
+			//
+			
+                        SqlDateTime t1 = new SqlDateTime (2002, 2, 25, 5, 25, 13);
+                        SqlDateTime t2 = new SqlDateTime (2002, 2, 25, 15, 25, 13);
+			
+			// Standard patterns
+                        Assert.AreEqual("2/25/2002 5:25:13 AM", t1.ToString (), "L01");
+                        Assert.AreEqual((SqlString)"2/25/2002 5:25:13 AM", t1.ToSqlString (), "L02");
+		}
+
+                // OPERATORS
+		[Test]
+                public void ArithmeticOperators()
+                {
+			TimeSpan TestSpan = new TimeSpan (20, 1, 20, 20);
+			SqlDateTime ResultDateTime;
+
+                        // "+"-operator
+                        ResultDateTime = Test1 + TestSpan;
+			Assert.AreEqual (2002, ResultDateTime.Value.Year, "#M01");
+			Assert.AreEqual (8, ResultDateTime.Value.Day, "#M02");
+			Assert.AreEqual (11, ResultDateTime.Value.Hour, "#M03");
+                        Assert.AreEqual (0, ResultDateTime.Value.Minute, "#M04");
+                        Assert.AreEqual (20, ResultDateTime.Value.Second, "#M05");
+			Assert.IsTrue ((SqlDateTime.Null + TestSpan).IsNull, "#M06");
+
+                        try {
+                                ResultDateTime = SqlDateTime.MaxValue + TestSpan;
+                                Assert.Fail ("#M07");
+                        } catch (Exception e) {
+                                Assert.AreEqual (typeof (ArgumentOutOfRangeException), e.GetType (), "#M08");
+                        }
+
+                        // "-"-operator
+			ResultDateTime = Test1 - TestSpan;
+			Assert.AreEqual (2002, ResultDateTime.Value.Year, "#M09");
+                        Assert.AreEqual (29, ResultDateTime.Value.Day, "#M10");
+			Assert.AreEqual (8, ResultDateTime.Value.Hour, "#M11");
+                        Assert.AreEqual (19, ResultDateTime.Value.Minute, "#M12");
+                        Assert.AreEqual (40, ResultDateTime.Value.Second, "#M13");
+                        Assert.IsTrue ((SqlDateTime.Null - TestSpan).IsNull, "#M14");
+			
+                        try {
+                                ResultDateTime = SqlDateTime.MinValue - TestSpan;
+                                Assert.Fail ("#M15");
+                        } catch  (Exception e) {
+                                Assert.AreEqual (typeof (SqlTypeException), e.GetType (), "#M16");
+                        }
+                }
+
+		[Test]
+                public void ThanOrEqualOperators()
+                {
+                        // == -operator
+                        Assert.IsTrue ((Test2 == Test3).Value, "#N01");
+                        Assert.IsTrue (!(Test1 == Test2).Value, "#N02");
+                        Assert.IsTrue ((Test1 == SqlDateTime.Null).IsNull, "#N03");
+                        
+                        // != -operator
+                        Assert.IsTrue (!(Test2 != Test3).Value, "#N04");
+                        Assert.IsTrue ((Test1 != Test3).Value, "#N05");
+                        Assert.IsTrue ((Test1 != SqlDateTime.Null).IsNull, "#N06");
+
+                        // > -operator
+                        Assert.IsTrue ((Test2 > Test1).Value, "#N07");
+                        Assert.IsTrue (!(Test3 > Test2).Value, "#N08");
+                        Assert.IsTrue ((Test1 > SqlDateTime.Null).IsNull, "#N09");
+
+                        // >=  -operator
+                        Assert.IsTrue (!(Test1 >= Test3).Value, "#N10");
+                        Assert.IsTrue ((Test3 >= Test1).Value, "#N11");
+                        Assert.IsTrue ((Test2 >= Test3).Value, "#N12");
+                        Assert.IsTrue ((Test1 >= SqlDateTime.Null).IsNull, "#N13");
+
+                        // < -operator
+                        Assert.IsTrue (!(Test2 < Test1).Value, "#N14");
+                        Assert.IsTrue ((Test1 < Test3).Value, "#N15");
+                        Assert.IsTrue (!(Test2 < Test3).Value, "#N16");
+                        Assert.IsTrue ((Test1 < SqlDateTime.Null).IsNull, "#N17");
+
+                        // <= -operator
+                        Assert.IsTrue ((Test1 <= Test3).Value, "#N18");
+                        Assert.IsTrue (!(Test3 <= Test1).Value, "#N19");
+                        Assert.IsTrue ((Test2 <= Test3).Value, "#N20");
+                        Assert.IsTrue ((Test1 <= SqlDateTime.Null).IsNull, "#N21");
+                }
+
+		[Test]
+		public void SqlDateTimeToDateTime()
+		{
+			Assert.AreEqual (2002, ((DateTime)Test1).Year, "O01");
+			Assert.AreEqual (2003, ((DateTime)Test2).Year, "O03");
+			Assert.AreEqual (10, ((DateTime)Test1).Month, "O04");
+			Assert.AreEqual (19, ((DateTime)Test1).Day, "O05");
+			Assert.AreEqual (9, ((DateTime)Test1).Hour, "O06");
+			Assert.AreEqual (40, ((DateTime)Test1).Minute, "O07");
+                        Assert.AreEqual (0, ((DateTime)Test1).Second, "O08");
+		}
+
+		[Test]
+		public void SqlStringToSqlDateTime()
+		{
+
+			SqlString TestString = new SqlString ("02/25/2002");
+                        SqlDateTime t1 = (SqlDateTime)TestString;
+
+			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P01");
+
+			// Thanks for Martin Baulig for these (DateTimeTest.cs)
+			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P02");
+			t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002");
+			Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P04");
+			t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002 05:25");
+			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#P05");
+			t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002 05:25:13");
+			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P05");
+			t1 = (SqlDateTime) new SqlString ("02/25/2002 05:25");
+			Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#P06");
+			t1 = (SqlDateTime) new SqlString ("02/25/2002 05:25:13");
+			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P07");
+			t1 = (SqlDateTime) new SqlString ("2002-02-25 04:25:13Z");
+			t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
+			Assert.AreEqual (2002, t1.Value.Year, "#P08");
+			Assert.AreEqual (02, t1.Value.Month, "#P09");
+			Assert.AreEqual (25, t1.Value.Day, "#P10");
+			Assert.AreEqual (04, t1.Value.Hour, "#P11");
+			Assert.AreEqual (25, t1.Value.Minute, "#P12");
+			Assert.AreEqual (13, t1.Value.Second, "#P13");
+			
+			SqlDateTime t2 = new SqlDateTime (DateTime.Today.Year, 2, 25);
+			t1 = (SqlDateTime) new SqlString ("February 25");
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P14");
+			
+			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
+			t1 = (SqlDateTime) new SqlString ("February 08");
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P15");
+
+			t1 = (SqlDateTime) new SqlString ("Mon, 25 Feb 2002 04:25:13 GMT");
+			t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
+			Assert.AreEqual (2002, t1.Value.Year, "#P16");
+			Assert.AreEqual (02, t1.Value.Month, "#P17");
+			Assert.AreEqual (25, t1.Value.Day, "#P18");
+			Assert.AreEqual (04, t1.Value.Hour, "#P19");
+			Assert.AreEqual (25, t1.Value.Minute, "#P20");
+			Assert.AreEqual (13, t1.Value.Second, "#P21");
+
+			t1 = (SqlDateTime) new SqlString ("2002-02-25T05:25:13");
+			Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P22");
+
+                        t2 = DateTime.Today + new TimeSpan (5,25,0);
+			t1 = (SqlDateTime) new SqlString ("05:25");
+			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#P23");
+
+                        t2 = DateTime.Today + new TimeSpan (5,25,13);
+			t1 = (SqlDateTime) new SqlString ("05:25:13");
+			Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#P24");
+
+			t2 = new SqlDateTime (2002, 2, 1);
+			t1 = (SqlDateTime) new SqlString ("2002 February");
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P25");
+			
+			t2 = new SqlDateTime (2002, 2, 1);
+			t1 = (SqlDateTime) new SqlString ("2002 February");
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P26");
+			
+			t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
+			t1 = (SqlDateTime) new SqlString ("February 8");
+			
+			Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P27");
+		}
+
+		[Test]
+		public void DateTimeToSqlDateTime()
+		{
+			DateTime DateTimeTest = new DateTime (2002, 10, 19, 11, 53, 4);
+			SqlDateTime Result = (SqlDateTime)DateTimeTest;
+			Assert.AreEqual (2002, Result.Value.Year, "#Q01");
+			Assert.AreEqual (10, Result.Value.Month, "#Q02");
+			Assert.AreEqual (19, Result.Value.Day, "#Q03");
+			Assert.AreEqual (11, Result.Value.Hour, "#Q04");
+       			Assert.AreEqual (53, Result.Value.Minute, "#Q05");
+			Assert.AreEqual (4, Result.Value.Second, "#Q06");
+		}
+
+		[Test]
+		public void TicksRoundTrip ()
+		{
+			SqlDateTime d1 = new SqlDateTime (2007, 05, 04, 18, 02, 40, 398.25);
+			SqlDateTime d2 = new SqlDateTime (d1.DayTicks, d1.TimeTicks);
+
+			Assert.AreEqual (39204, d1.DayTicks, "#R01");
+			Assert.AreEqual (19488119, d1.TimeTicks, "#R02");
+			Assert.AreEqual (633138985603970000, d1.Value.Ticks, "#R03");
+			Assert.AreEqual (d1.DayTicks, d2.DayTicks, "#R04");
+			Assert.AreEqual (d1.TimeTicks, d2.TimeTicks, "#R05");
+			Assert.AreEqual (d1.Value.Ticks, d2.Value.Ticks, "#R06");
+			Assert.AreEqual (d1, d2, "#R07");
+		}
+
+		[Test]
+		public void EffingBilisecond ()
+		{
+			SqlDateTime d1 = new SqlDateTime (2007, 05, 04, 18, 02, 40, 398252);
+
+			Assert.AreEqual (39204, d1.DayTicks, "#S01");
+			Assert.AreEqual (19488119, d1.TimeTicks, "#S02");
+			Assert.AreEqual (633138985603970000, d1.Value.Ticks, "#R03");
+		}
+
+		[Test]
+		public void GetXsdTypeTest ()
+		{
+			XmlQualifiedName qualifiedName = SqlDateTime.GetXsdType (null);
+			NUnit.Framework.Assert.AreEqual ("dateTime", qualifiedName.Name, "#A01");
+		}
+        }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data.SqlTypes/SqlGuidTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data.SqlTypes/SqlGuidTest.cs
@@ -1,348 +1,348 @@
-//
-// SqlGuidTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlGuid
-//
-// Authors:
-//   Ville Palo (vi64pa@koti.soon.fi)
-//   Martin Willemoes Hansen (mwh@sysrq.dk)
-//
-// (C) 2002 Ville Palo
-// (C) 2003 Martin Willemoes Hansen
-// 
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Xml;
-using System.Data.SqlTypes;
-
-namespace MonoTests.System.Data.SqlTypes
-{
-	[TestFixture]
-        public class SqlGuidTest {
-
-		// 00000a01-0000-0000-0000-000000000000
-		private SqlGuid Test1;
-
-        	// 00000f64-0000-0000-0000-000000000000
-        	private SqlGuid Test2;         	
-        	private SqlGuid Test3;
-
-		// 0000fafa-0000-0000-0000-000000000000
-		private SqlGuid Test4;
-        	
-		[SetUp]
-                public void GetReady() 
-                {
-                	byte [] b1 = new byte [16];
-                	byte [] b2 = new byte [16];
-                	byte [] b3 = new byte [16];
-                	byte [] b4 = new byte [16];
-
-                	b1 [0] = 1;
-                	b1 [1] = 10;
-                	b2 [0] = 100;
-                	b2 [1] = 15;
-                	b3 [0] = 100;
-                	b3 [1] = 15;
-                	b4 [0] = 250;
-                	b4 [1] = 250;
-
-                   	Test1 = new SqlGuid (b1);
-			Test2 = new SqlGuid (b2);
-                	Test3 = new SqlGuid (b3);
-                	Test4 = new SqlGuid (b4);
-                }
-
-                // Test constructor
-		[Test]
-                public void Create()
-                {
-			// SqlGuid (Byte[])
-			byte [] b = new byte [16];
-                	b [0] = 100;
-                	b [1] = 200;
-
-                	try {
-                		SqlGuid Test = new SqlGuid (b);
-
-				// SqlGuid (Guid)
-				Guid TestGuid = new Guid (b);
-                		Test = new SqlGuid (TestGuid);
-
-				// SqlGuid (string)
-				Test = new SqlGuid ("12345678-1234-1234-1234-123456789012");
-
-				// SqlGuid (int, short, short, byte, byte, byte, byte, byte, byte, byte, byte)
-                		Test = new SqlGuid (10, 1, 2, 13, 14, 15, 16, 17, 19, 20 ,21);
-
-                	} catch (Exception e) {
-                		Assert.Fail ("#A01 " + e);
-                	}
-                }
-
-                // Test public fields
-		[Test]
-                public void PublicFields()
-                {
-                        Assert.IsTrue (SqlGuid.Null.IsNull, "#B01");
-                }
-
-                // Test properties
-		[Test]
-                public void Properties()
-                {
-                	Guid ResultGuid = new Guid ("00000f64-0000-0000-0000-000000000000");		       
-			Assert.IsTrue (!Test1.IsNull, "#C01");
-                	Assert.IsTrue (SqlGuid.Null.IsNull, "#C02");
-                	Assert.AreEqual (ResultGuid, Test2.Value, "#C03");
-                }
-
-                // PUBLIC METHODS
-		[Test]
-                public void CompareTo()
-                {
-			String TestString = "This is a test string";
-			SqlGuid test1 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-3EEEEEEEEEEE");
-			SqlGuid test2 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE");
-			SqlGuid test3 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE");
-                        Assert.IsTrue (Test1.CompareTo (Test3) <  0, "#D01");
-                        Assert.IsTrue (Test4.CompareTo (Test1) > 0, "#D02");
-                        Assert.IsTrue (Test3.CompareTo (Test2) == 0, "#D03");
-                        Assert.IsTrue (Test4.CompareTo (SqlGuid.Null) > 0, "#D04");
-			Assert.IsTrue (test1.CompareTo (test2) >  0, "#D05");
-			Assert.IsTrue (test3.CompareTo (test2) <  0, "#D06");
-			
-                        try {
-                                Test1.CompareTo (TestString);
-                                Assert.Fail("#D05");
-                        } catch(Exception e) {
-                                Assert.AreEqual (typeof (ArgumentException), e.GetType (), "#D06");
-                        }
-                }
-
-		[Test]
-                public void EqualsMethods()
-                {
-                        Assert.IsTrue (!Test1.Equals (Test2), "#E01");
-                        Assert.IsTrue (!Test2.Equals (Test4), "#E02");
-                        Assert.IsTrue (!Test2.Equals (new SqlString ("TEST")), "#E03");
-                        Assert.IsTrue (Test2.Equals (Test3), "#E04");
-
-                        // Static Equals()-method
-                        Assert.IsTrue (SqlGuid.Equals (Test2, Test3).Value, "#E05");
-                        Assert.IsTrue (!SqlGuid.Equals (Test1, Test2).Value, "#E06");
-                }
-
-		[Test]
-                public void GetHashCodeTest()
-                {
-                        Assert.AreEqual (Test1.GetHashCode (), Test1.GetHashCode (), "#F01");
-                	Assert.IsTrue (Test1.GetHashCode () != Test2.GetHashCode (), "#F02");
-                        Assert.AreEqual (Test3.GetHashCode (), Test2.GetHashCode (), "#F02");
-                }
-
-		[Test]
-                public void GetTypeTest()
-                {
-                        Assert.AreEqual ("System.Data.SqlTypes.SqlGuid", Test1.GetType ().ToString (), "#G01");
-                        Assert.AreEqual ("System.Guid", Test3.Value.GetType ().ToString (), "#G02");
-                }
-
-		[Test]
-                public void Greaters()
-                {
-                        // GreateThan ()
-                        Assert.IsTrue (!SqlGuid.GreaterThan (Test1, Test2).Value, "#H01");
-                        Assert.IsTrue (SqlGuid.GreaterThan (Test2, Test1).Value, "#H02");
-                        Assert.IsTrue (!SqlGuid.GreaterThan (Test2, Test3).Value, "#H03");
-                        // GreaterTharOrEqual ()
-                        Assert.IsTrue (!SqlGuid.GreaterThanOrEqual (Test1, Test2).Value, "#H04");
-                        Assert.IsTrue (SqlGuid.GreaterThanOrEqual (Test2, Test1).Value, "#H05");
-                        Assert.IsTrue (SqlGuid.GreaterThanOrEqual (Test2, Test3).Value, "#H06");
-                }
-
-		[Test]
-                public void Lessers()
-                {
-                        // LessThan()
-                        Assert.IsTrue (!SqlGuid.LessThan (Test2, Test3).Value, "#I01");
-                        Assert.IsTrue (!SqlGuid.LessThan (Test2, Test1).Value, "#I02");
-                        Assert.IsTrue (SqlGuid.LessThan (Test1, Test2).Value, "#I03");
-
-                        // LessThanOrEqual ()
-                        Assert.IsTrue (SqlGuid.LessThanOrEqual (Test1, Test2).Value, "#I04");
-                        Assert.IsTrue (!SqlGuid.LessThanOrEqual (Test2, Test1).Value, "#I05");
-                        Assert.IsTrue (SqlGuid.LessThanOrEqual (Test2, Test3).Value, "#I06");
-                        Assert.IsTrue (SqlGuid.LessThanOrEqual (Test4, SqlGuid.Null).IsNull, "#I07");
-                }
-
-		[Test]
-                public void NotEquals()
-                {
-                        Assert.IsTrue (SqlGuid.NotEquals (Test1, Test2).Value, "#J01");
-                        Assert.IsTrue (SqlGuid.NotEquals (Test2, Test1).Value, "#J02");
-                        Assert.IsTrue (SqlGuid.NotEquals (Test3, Test1).Value, "#J03");
-                        Assert.IsTrue (!SqlGuid.NotEquals (Test3, Test2).Value, "#J04");
-                        Assert.IsTrue (SqlGuid.NotEquals (SqlGuid.Null, Test2).IsNull, "#J05");
-                }
-
-		[Test]
-                public void Parse()
-                {
-                        try {
-                                SqlGuid.Parse (null);
-                                Assert.Fail ("#K01");
-                        } catch (Exception e) {
-                                Assert.AreEqual (typeof (ArgumentNullException), e.GetType (), "#K02");
-                        }
-
-                        try {
-                                SqlGuid.Parse ("not-a-number");
-                                Assert.Fail ("#K03");
-                        } catch (Exception e) {
-                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#K04");
-                        }
-
-                         try {
-                                SqlGuid.Parse ("9e400");
-                                Assert.Fail ("#K05");
-                        } catch (Exception e) {
-                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#K06");
-                        }
-
-                        Assert.AreEqual(new Guid("87654321-0000-0000-0000-000000000000"), SqlGuid.Parse ("87654321-0000-0000-0000-000000000000").Value, "#K07");
-                }
-
-		[Test]
-                public void Conversions()
-                {
-			// ToByteArray ()
-			Assert.AreEqual ((byte)1, Test1.ToByteArray () [0], "#L01");
-			Assert.AreEqual ((byte)15, Test2.ToByteArray () [1], "#L02");
-
-			// ToSqlBinary ()
-			byte [] b = new byte [2]; 
-                	b [0] = 100;
-                	b [1] = 15;
-		       
-                        Assert.AreEqual (new SqlBinary (b), Test3.ToSqlBinary (), "#L03");
-
-                        // ToSqlString ()
-                        Assert.AreEqual ("00000a01-0000-0000-0000-000000000000",  Test1.ToSqlString ().Value, "#L04");
-                        Assert.AreEqual ("0000fafa-0000-0000-0000-000000000000", Test4.ToSqlString ().Value, "#L05");
-
-                        // ToString ()
-                        Assert.AreEqual ("00000a01-0000-0000-0000-000000000000", Test1.ToString (), "#L06");
-                        Assert.AreEqual ("0000fafa-0000-0000-0000-000000000000", Test4.ToString (), "#L07");
-                }
-
-                // OPERATORS
-
-		[Test]
-                public void ThanOrEqualOperators()
-                {
-                        // == -operator
-                        Assert.IsTrue ((Test3 == Test2).Value, "#M01");
-                        Assert.IsTrue (!(Test1 == Test2).Value, "#M02");
-                        Assert.IsTrue ((Test1 == SqlGuid.Null).IsNull, "#M03");
-                        
-                        // != -operator
-                        Assert.IsTrue (!(Test2 != Test3).Value, "#M04");
-                        Assert.IsTrue ((Test1 != Test3).Value, "#M05");
-                        Assert.IsTrue ((Test1 != SqlGuid.Null).IsNull, "#M06");
-
-                        // > -operator
-                        Assert.IsTrue ((Test2 > Test1).Value, "#M07");
-                        Assert.IsTrue (!(Test1 > Test3).Value, "#M08");
-                        Assert.IsTrue (!(Test3 > Test2).Value, "#M09");
-                        Assert.IsTrue ((Test1 > SqlGuid.Null).IsNull, "#M10");
-
-                        // >=  -operator
-                        Assert.IsTrue (!(Test1 >= Test3).Value, "#M12");
-                        Assert.IsTrue ((Test3 >= Test1).Value, "#M13");
-                        Assert.IsTrue ((Test3 >= Test2).Value, "#M14");
-                        Assert.IsTrue ((Test1 >= SqlGuid.Null).IsNull, "#M15");
-
-                        // < -operator
-                        Assert.IsTrue (!(Test2 < Test1).Value, "#M16");
-                        Assert.IsTrue ((Test1 < Test3).Value, "#M17");
-                        Assert.IsTrue (!(Test2 < Test3).Value, "#M18");
-                        Assert.IsTrue ((Test1 < SqlGuid.Null).IsNull, "#M19");
-
-                        // <= -operator
-                        Assert.IsTrue ((Test1 <= Test3).Value, "#M20");
-                        Assert.IsTrue (!(Test3 <= Test1).Value, "#M21");
-                        Assert.IsTrue ((Test2 <= Test3).Value, "#M22");
-                        Assert.IsTrue ((Test1 <= SqlGuid.Null).IsNull, "#M23");
-                }
-
-		[Test]
-		public void SqlBinaryToSqlGuid()
-		{
-			byte [] b = new byte [16];
-			b [0] = 100;
-			b [1] = 200;
-			SqlBinary TestBinary = new SqlBinary (b);
-			
-			Assert.AreEqual (new Guid("0000c864-0000-0000-0000-000000000000"), ((SqlGuid)TestBinary).Value, "#N01");
-		}
-
-		[Test]
-		public void SqlGuidToGuid()
-		{
-			Assert.AreEqual (new Guid("00000a01-0000-0000-0000-000000000000"), (Guid)Test1, "#O01");
-			Assert.AreEqual (new Guid("00000f64-0000-0000-0000-000000000000"), (Guid)Test2, "#O02");
-		}		
-
-		[Test]
-                public void SqlStringToSqlGuid()
-                {
-                        SqlString TestString = new SqlString ("Test string");
-                        SqlString TestString100 = new SqlString ("0000c864-0000-0000-0000-000000000000");
-
-                        Assert.AreEqual (new Guid("0000c864-0000-0000-0000-000000000000"), ((SqlGuid)TestString100).Value, "#P01");
-
-                        try {
-                                SqlGuid test = (SqlGuid)TestString;
-                                Assert.Fail ("#P02");
-                        } catch(Exception e) {
-                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#P03");
-                        }
-                }
-		
-		[Test]
-		public void GuidToSqlGuid()
-		{
-			Guid TestGuid = new Guid("0000c864-0000-0000-0000-000007650000");
-			Assert.AreEqual (new SqlGuid("0000c864-0000-0000-0000-000007650000"), (SqlGuid)TestGuid, "#Q01");
-		}
-		[Test]
-		public void GetXsdTypeTest ()
-		{
-			XmlQualifiedName qualifiedName = SqlGuid.GetXsdType (null);
-			Assert.AreEqual ("string", qualifiedName.Name, "#A01");
-		}
-        }
-}
+//
+// SqlGuidTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlGuid
+//
+// Authors:
+//   Ville Palo (vi64pa@koti.soon.fi)
+//   Martin Willemoes Hansen (mwh@sysrq.dk)
+//
+// (C) 2002 Ville Palo
+// (C) 2003 Martin Willemoes Hansen
+// 
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Xml;
+using System.Data.SqlTypes;
+
+namespace MonoTests.System.Data.SqlTypes
+{
+	[TestFixture]
+        public class SqlGuidTest {
+
+		// 00000a01-0000-0000-0000-000000000000
+		private SqlGuid Test1;
+
+        	// 00000f64-0000-0000-0000-000000000000
+        	private SqlGuid Test2;         	
+        	private SqlGuid Test3;
+
+		// 0000fafa-0000-0000-0000-000000000000
+		private SqlGuid Test4;
+        	
+		[SetUp]
+                public void GetReady() 
+                {
+                	byte [] b1 = new byte [16];
+                	byte [] b2 = new byte [16];
+                	byte [] b3 = new byte [16];
+                	byte [] b4 = new byte [16];
+
+                	b1 [0] = 1;
+                	b1 [1] = 10;
+                	b2 [0] = 100;
+                	b2 [1] = 15;
+                	b3 [0] = 100;
+                	b3 [1] = 15;
+                	b4 [0] = 250;
+                	b4 [1] = 250;
+
+                   	Test1 = new SqlGuid (b1);
+			Test2 = new SqlGuid (b2);
+                	Test3 = new SqlGuid (b3);
+                	Test4 = new SqlGuid (b4);
+                }
+
+                // Test constructor
+		[Test]
+                public void Create()
+                {
+			// SqlGuid (Byte[])
+			byte [] b = new byte [16];
+                	b [0] = 100;
+                	b [1] = 200;
+
+                	try {
+                		SqlGuid Test = new SqlGuid (b);
+
+				// SqlGuid (Guid)
+				Guid TestGuid = new Guid (b);
+                		Test = new SqlGuid (TestGuid);
+
+				// SqlGuid (string)
+				Test = new SqlGuid ("12345678-1234-1234-1234-123456789012");
+
+				// SqlGuid (int, short, short, byte, byte, byte, byte, byte, byte, byte, byte)
+                		Test = new SqlGuid (10, 1, 2, 13, 14, 15, 16, 17, 19, 20 ,21);
+
+                	} catch (Exception e) {
+                		Assert.Fail ("#A01 " + e);
+                	}
+                }
+
+                // Test public fields
+		[Test]
+                public void PublicFields()
+                {
+                        Assert.IsTrue (SqlGuid.Null.IsNull, "#B01");
+                }
+
+                // Test properties
+		[Test]
+                public void Properties()
+                {
+                	Guid ResultGuid = new Guid ("00000f64-0000-0000-0000-000000000000");		       
+			Assert.IsTrue (!Test1.IsNull, "#C01");
+                	Assert.IsTrue (SqlGuid.Null.IsNull, "#C02");
+                	Assert.AreEqual (ResultGuid, Test2.Value, "#C03");
+                }
+
+                // PUBLIC METHODS
+		[Test]
+                public void CompareTo()
+                {
+			String TestString = "This is a test string";
+			SqlGuid test1 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-3EEEEEEEEEEE");
+			SqlGuid test2 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE");
+			SqlGuid test3 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE");
+                        Assert.IsTrue (Test1.CompareTo (Test3) <  0, "#D01");
+                        Assert.IsTrue (Test4.CompareTo (Test1) > 0, "#D02");
+                        Assert.IsTrue (Test3.CompareTo (Test2) == 0, "#D03");
+                        Assert.IsTrue (Test4.CompareTo (SqlGuid.Null) > 0, "#D04");
+			Assert.IsTrue (test1.CompareTo (test2) >  0, "#D05");
+			Assert.IsTrue (test3.CompareTo (test2) <  0, "#D06");
+			
+                        try {
+                                Test1.CompareTo (TestString);
+                                Assert.Fail("#D05");
+                        } catch(Exception e) {
+                                Assert.AreEqual (typeof (ArgumentException), e.GetType (), "#D06");
+                        }
+                }
+
+		[Test]
+                public void EqualsMethods()
+                {
+                        Assert.IsTrue (!Test1.Equals (Test2), "#E01");
+                        Assert.IsTrue (!Test2.Equals (Test4), "#E02");
+                        Assert.IsTrue (!Test2.Equals (new SqlString ("TEST")), "#E03");
+                        Assert.IsTrue (Test2.Equals (Test3), "#E04");
+
+                        // Static Equals()-method
+                        Assert.IsTrue (SqlGuid.Equals (Test2, Test3).Value, "#E05");
+                        Assert.IsTrue (!SqlGuid.Equals (Test1, Test2).Value, "#E06");
+                }
+
+		[Test]
+                public void GetHashCodeTest()
+                {
+                        Assert.AreEqual (Test1.GetHashCode (), Test1.GetHashCode (), "#F01");
+                	Assert.IsTrue (Test1.GetHashCode () != Test2.GetHashCode (), "#F02");
+                        Assert.AreEqual (Test3.GetHashCode (), Test2.GetHashCode (), "#F02");
+                }
+
+		[Test]
+                public void GetTypeTest()
+                {
+                        Assert.AreEqual ("System.Data.SqlTypes.SqlGuid", Test1.GetType ().ToString (), "#G01");
+                        Assert.AreEqual ("System.Guid", Test3.Value.GetType ().ToString (), "#G02");
+                }
+
+		[Test]
+                public void Greaters()
+                {
+                        // GreateThan ()
+                        Assert.IsTrue (!SqlGuid.GreaterThan (Test1, Test2).Value, "#H01");
+                        Assert.IsTrue (SqlGuid.GreaterThan (Test2, Test1).Value, "#H02");
+                        Assert.IsTrue (!SqlGuid.GreaterThan (Test2, Test3).Value, "#H03");
+                        // GreaterTharOrEqual ()
+                        Assert.IsTrue (!SqlGuid.GreaterThanOrEqual (Test1, Test2).Value, "#H04");
+                        Assert.IsTrue (SqlGuid.GreaterThanOrEqual (Test2, Test1).Value, "#H05");
+                        Assert.IsTrue (SqlGuid.GreaterThanOrEqual (Test2, Test3).Value, "#H06");
+                }
+
+		[Test]
+                public void Lessers()
+                {
+                        // LessThan()
+                        Assert.IsTrue (!SqlGuid.LessThan (Test2, Test3).Value, "#I01");
+                        Assert.IsTrue (!SqlGuid.LessThan (Test2, Test1).Value, "#I02");
+                        Assert.IsTrue (SqlGuid.LessThan (Test1, Test2).Value, "#I03");
+
+                        // LessThanOrEqual ()
+                        Assert.IsTrue (SqlGuid.LessThanOrEqual (Test1, Test2).Value, "#I04");
+                        Assert.IsTrue (!SqlGuid.LessThanOrEqual (Test2, Test1).Value, "#I05");
+                        Assert.IsTrue (SqlGuid.LessThanOrEqual (Test2, Test3).Value, "#I06");
+                        Assert.IsTrue (SqlGuid.LessThanOrEqual (Test4, SqlGuid.Null).IsNull, "#I07");
+                }
+
+		[Test]
+                public void NotEquals()
+                {
+                        Assert.IsTrue (SqlGuid.NotEquals (Test1, Test2).Value, "#J01");
+                        Assert.IsTrue (SqlGuid.NotEquals (Test2, Test1).Value, "#J02");
+                        Assert.IsTrue (SqlGuid.NotEquals (Test3, Test1).Value, "#J03");
+                        Assert.IsTrue (!SqlGuid.NotEquals (Test3, Test2).Value, "#J04");
+                        Assert.IsTrue (SqlGuid.NotEquals (SqlGuid.Null, Test2).IsNull, "#J05");
+                }
+
+		[Test]
+                public void Parse()
+                {
+                        try {
+                                SqlGuid.Parse (null);
+                                Assert.Fail ("#K01");
+                        } catch (Exception e) {
+                                Assert.AreEqual (typeof (ArgumentNullException), e.GetType (), "#K02");
+                        }
+
+                        try {
+                                SqlGuid.Parse ("not-a-number");
+                                Assert.Fail ("#K03");
+                        } catch (Exception e) {
+                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#K04");
+                        }
+
+                         try {
+                                SqlGuid.Parse ("9e400");
+                                Assert.Fail ("#K05");
+                        } catch (Exception e) {
+                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#K06");
+                        }
+
+                        Assert.AreEqual(new Guid("87654321-0000-0000-0000-000000000000"), SqlGuid.Parse ("87654321-0000-0000-0000-000000000000").Value, "#K07");
+                }
+
+		[Test]
+                public void Conversions()
+                {
+			// ToByteArray ()
+			Assert.AreEqual ((byte)1, Test1.ToByteArray () [0], "#L01");
+			Assert.AreEqual ((byte)15, Test2.ToByteArray () [1], "#L02");
+
+			// ToSqlBinary ()
+			byte [] b = new byte [2]; 
+                	b [0] = 100;
+                	b [1] = 15;
+		       
+                        Assert.AreEqual (new SqlBinary (b), Test3.ToSqlBinary (), "#L03");
+
+                        // ToSqlString ()
+                        Assert.AreEqual ("00000a01-0000-0000-0000-000000000000",  Test1.ToSqlString ().Value, "#L04");
+                        Assert.AreEqual ("0000fafa-0000-0000-0000-000000000000", Test4.ToSqlString ().Value, "#L05");
+
+                        // ToString ()
+                        Assert.AreEqual ("00000a01-0000-0000-0000-000000000000", Test1.ToString (), "#L06");
+                        Assert.AreEqual ("0000fafa-0000-0000-0000-000000000000", Test4.ToString (), "#L07");
+                }
+
+                // OPERATORS
+
+		[Test]
+                public void ThanOrEqualOperators()
+                {
+                        // == -operator
+                        Assert.IsTrue ((Test3 == Test2).Value, "#M01");
+                        Assert.IsTrue (!(Test1 == Test2).Value, "#M02");
+                        Assert.IsTrue ((Test1 == SqlGuid.Null).IsNull, "#M03");
+                        
+                        // != -operator
+                        Assert.IsTrue (!(Test2 != Test3).Value, "#M04");
+                        Assert.IsTrue ((Test1 != Test3).Value, "#M05");
+                        Assert.IsTrue ((Test1 != SqlGuid.Null).IsNull, "#M06");
+
+                        // > -operator
+                        Assert.IsTrue ((Test2 > Test1).Value, "#M07");
+                        Assert.IsTrue (!(Test1 > Test3).Value, "#M08");
+                        Assert.IsTrue (!(Test3 > Test2).Value, "#M09");
+                        Assert.IsTrue ((Test1 > SqlGuid.Null).IsNull, "#M10");
+
+                        // >=  -operator
+                        Assert.IsTrue (!(Test1 >= Test3).Value, "#M12");
+                        Assert.IsTrue ((Test3 >= Test1).Value, "#M13");
+                        Assert.IsTrue ((Test3 >= Test2).Value, "#M14");
+                        Assert.IsTrue ((Test1 >= SqlGuid.Null).IsNull, "#M15");
+
+                        // < -operator
+                        Assert.IsTrue (!(Test2 < Test1).Value, "#M16");
+                        Assert.IsTrue ((Test1 < Test3).Value, "#M17");
+                        Assert.IsTrue (!(Test2 < Test3).Value, "#M18");
+                        Assert.IsTrue ((Test1 < SqlGuid.Null).IsNull, "#M19");
+
+                        // <= -operator
+                        Assert.IsTrue ((Test1 <= Test3).Value, "#M20");
+                        Assert.IsTrue (!(Test3 <= Test1).Value, "#M21");
+                        Assert.IsTrue ((Test2 <= Test3).Value, "#M22");
+                        Assert.IsTrue ((Test1 <= SqlGuid.Null).IsNull, "#M23");
+                }
+
+		[Test]
+		public void SqlBinaryToSqlGuid()
+		{
+			byte [] b = new byte [16];
+			b [0] = 100;
+			b [1] = 200;
+			SqlBinary TestBinary = new SqlBinary (b);
+			
+			Assert.AreEqual (new Guid("0000c864-0000-0000-0000-000000000000"), ((SqlGuid)TestBinary).Value, "#N01");
+		}
+
+		[Test]
+		public void SqlGuidToGuid()
+		{
+			Assert.AreEqual (new Guid("00000a01-0000-0000-0000-000000000000"), (Guid)Test1, "#O01");
+			Assert.AreEqual (new Guid("00000f64-0000-0000-0000-000000000000"), (Guid)Test2, "#O02");
+		}		
+
+		[Test]
+                public void SqlStringToSqlGuid()
+                {
+                        SqlString TestString = new SqlString ("Test string");
+                        SqlString TestString100 = new SqlString ("0000c864-0000-0000-0000-000000000000");
+
+                        Assert.AreEqual (new Guid("0000c864-0000-0000-0000-000000000000"), ((SqlGuid)TestString100).Value, "#P01");
+
+                        try {
+                                SqlGuid test = (SqlGuid)TestString;
+                                Assert.Fail ("#P02");
+                        } catch(Exception e) {
+                                Assert.AreEqual (typeof (FormatException), e.GetType (), "#P03");
+                        }
+                }
+		
+		[Test]
+		public void GuidToSqlGuid()
+		{
+			Guid TestGuid = new Guid("0000c864-0000-0000-0000-000007650000");
+			Assert.AreEqual (new SqlGuid("0000c864-0000-0000-0000-000007650000"), (SqlGuid)TestGuid, "#Q01");
+		}
+		[Test]
+		public void GetXsdTypeTest ()
+		{
+			XmlQualifiedName qualifiedName = SqlGuid.GetXsdType (null);
+			Assert.AreEqual ("string", qualifiedName.Name, "#A01");
+		}
+        }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/DataColumnCollectionTest2.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/DataColumnCollectionTest2.cs
@@ -1,899 +1,899 @@
-// Authors:
-//   Rafael Mizrahi   <rafim@mainsoft.com>
-//   Erez Lotan       <erezl@mainsoft.com>
-//   Oren Gurfinkel   <oreng@mainsoft.com>
-//   Ofer Borstein
-//
-// Copyright (c) 2004 Mainsoft Co.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.ComponentModel;
-using System.Data;
-using MonoTests.System.Data.Utils;
-using System.Collections;
-
-namespace MonoTests.System.Data
-{
-	[TestFixture] public class DataColumnCollectionTest2
-	{
-		private int counter = 0;
-
-		[Test] public void Add()
-		{
-			DataColumn dc = null;
-			DataTable dt = new DataTable();
-
-			//----------------------------- check default --------------------
-			dc = dt.Columns.Add();
-			// Add column 1
-			Assert.AreEqual("Column1", dc.ColumnName, "DCC1");
-
-			// Add column 2
-			dc = dt.Columns.Add();
-			Assert.AreEqual("Column2", dc.ColumnName, "DCC2");
-
-			dc = dt.Columns.Add();
-			// Add column 3
-			Assert.AreEqual("Column3", dc.ColumnName, "DCC3");
-
-			dc = dt.Columns.Add();
-			// Add column 4
-			Assert.AreEqual("Column4", dc.ColumnName, "DCC4");
-
-			dc = dt.Columns.Add();
-			// Add column 5
-			Assert.AreEqual("Column5", dc.ColumnName, "DCC5");
-			Assert.AreEqual(5, dt.Columns.Count, "DCC6");
-
-			//----------------------------- check Add/Remove from begining --------------------
-			dt = initTable();
-
-			dt.Columns.Remove(dt.Columns[0]);
-			dt.Columns.Remove(dt.Columns[0]);
-			dt.Columns.Remove(dt.Columns[0]);
-
-			// check column 4 - remove - from begining
-			Assert.AreEqual("Column4", dt.Columns[0].ColumnName, "DCC7");
-
-			// check column 5 - remove - from begining
-			Assert.AreEqual("Column5", dt.Columns[1].ColumnName , "DCC8");
-			Assert.AreEqual(2, dt.Columns.Count, "DCC9");
-
-			dt.Columns.Add();
-			dt.Columns.Add();
-			dt.Columns.Add();
-			dt.Columns.Add();
-
-			// check column 0 - Add new  - from begining
-			Assert.AreEqual("Column4", dt.Columns[0].ColumnName , "DCC10");
-
-			// check column 1 - Add new - from begining
-			Assert.AreEqual("Column5", dt.Columns[1].ColumnName , "DCC11");
-
-			// check column 2 - Add new - from begining
-			Assert.AreEqual("Column6", dt.Columns[2].ColumnName , "DCC12");
-
-			// check column 3 - Add new - from begining
-			Assert.AreEqual("Column7", dt.Columns[3].ColumnName , "DCC13");
-
-			// check column 4 - Add new - from begining
-			Assert.AreEqual("Column8", dt.Columns[4].ColumnName , "DCC14");
-
-			// check column 5 - Add new - from begining
-			Assert.AreEqual("Column9", dt.Columns[5].ColumnName , "DCC15");
-
-			//----------------------------- check Add/Remove from middle --------------------
-
-			dt = initTable();
-
-			dt.Columns.Remove(dt.Columns[2]);
-			dt.Columns.Remove(dt.Columns[2]);
-			dt.Columns.Remove(dt.Columns[2]);
-
-			// check column 0 - remove - from Middle
-			Assert.AreEqual("Column1", dt.Columns[0].ColumnName, "DCC16");
-
-			// check column 1 - remove - from Middle
-			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC17");
-
-			dt.Columns.Add();
-			dt.Columns.Add();
-			dt.Columns.Add();
-			dt.Columns.Add();
-
-			// check column 0 - Add new  - from Middle
-			Assert.AreEqual("Column1", dt.Columns[0].ColumnName , "DCC18");
-
-			// check column 1 - Add new - from Middle
-			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC19");
-
-			// check column 2 - Add new - from Middle
-			Assert.AreEqual("Column3", dt.Columns[2].ColumnName , "DCC20");
-
-			// check column 3 - Add new - from Middle
-			Assert.AreEqual("Column4", dt.Columns[3].ColumnName , "DCC21");
-
-			// check column 4 - Add new - from Middle
-			Assert.AreEqual("Column5", dt.Columns[4].ColumnName , "DCC22");
-
-			// check column 5 - Add new - from Middle
-			Assert.AreEqual("Column6", dt.Columns[5].ColumnName , "DCC23");
-
-			//----------------------------- check Add/Remove from end --------------------
-
-			dt = initTable();
-
-			dt.Columns.Remove(dt.Columns[4]);
-			dt.Columns.Remove(dt.Columns[3]);
-			dt.Columns.Remove(dt.Columns[2]);
-
-			// check column 0 - remove - from end
-			Assert.AreEqual("Column1", dt.Columns[0].ColumnName, "DCC24");
-
-			// check column 1 - remove - from end
-			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC25");
-
-			dt.Columns.Add();
-			dt.Columns.Add();
-			dt.Columns.Add();
-			dt.Columns.Add();
-
-			// check column 0 - Add new  - from end
-			Assert.AreEqual("Column1", dt.Columns[0].ColumnName , "DCC26");
-
-			// check column 1 - Add new - from end
-			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC27");
-
-			// check column 2 - Add new - from end
-			Assert.AreEqual("Column3", dt.Columns[2].ColumnName , "DCC28");
-
-			// check column 3 - Add new - from end
-			Assert.AreEqual("Column4", dt.Columns[3].ColumnName , "DCC29");
-
-			// check column 4 - Add new - from end
-			Assert.AreEqual("Column5", dt.Columns[4].ColumnName , "DCC30");
-
-			// check column 5 - Add new - from end
-			Assert.AreEqual("Column6", dt.Columns[5].ColumnName , "DCC31");
-		}
-
-		private DataTable initTable()
-		{
-			DataTable dt = new DataTable();
-			for (int i=0; i<5; i++)
-			{
-				dt.Columns.Add();
-			}
-			return dt;
-	   }
-
-		[Test] public void TestAdd_ByTableName()
-		{
-			//this test is from boris
-
-			DataSet ds = new DataSet();
-			DataTable dt = new DataTable();
-			ds.Tables.Add(dt);
-
-			// add one column
-			dt.Columns.Add("id1",typeof(int));
-
-			// DataColumnCollection add
-			Assert.AreEqual(1, dt.Columns.Count , "DCC32");
-
-			// add row
-			DataRow dr = dt.NewRow();
-			dt.Rows.Add(dr);
-
-			// remove column
-			dt.Columns.Remove("id1");
-
-			// DataColumnCollection remove
-			Assert.AreEqual(0, dt.Columns.Count , "DCC33");
-
-			//row is still there
-
-			// now add column
-			dt.Columns.Add("id2",typeof(int));
-
-			// DataColumnCollection add again
-			Assert.AreEqual(1, dt.Columns.Count , "DCC34");
-		}
-
-		[Test] public void TestCanRemove_ByDataColumn()
-		{
-			DataTable dt = DataProvider.CreateUniqueConstraint();
-			DataColumn dummyCol = new DataColumn();
-			Assert.AreEqual(false, dt.Columns.CanRemove(null), "DCC35"); //Cannot remove null column
-			Assert.AreEqual(false, dt.Columns.CanRemove(dummyCol), "DCC36"); //Don't belong to this table
-			Assert.AreEqual(false, dt.Columns.CanRemove(dt.Columns[0]), "DCC37"); //It belongs to unique constraint
-			Assert.AreEqual(true, dt.Columns.CanRemove(dt.Columns[1]), "DCC38");
-		}
-		[Test] public void TestCanRemove_ForigenConstraint()
-		{
-			DataSet ds = DataProvider.CreateForigenConstraint();
-
-			Assert.AreEqual(false, ds.Tables["child"].Columns.CanRemove(ds.Tables["child"].Columns["parentId"]), "DCC39");//Forigen
-			Assert.AreEqual(false, ds.Tables["parent"].Columns.CanRemove(ds.Tables["child"].Columns["parentId"]), "DCC40");//Parent
-		}
-		[Test] public void TestCanRemove_ParentRelations()
-		{
-			DataSet ds = new DataSet();
-
-			ds.Tables.Add("table1");
-			ds.Tables.Add("table2");
-			ds.Tables["table1"].Columns.Add("col1");
-			ds.Tables["table2"].Columns.Add("col1");
-
-			ds.Tables[1].ParentRelations.Add("name1",ds.Tables[0].Columns["col1"],ds.Tables[1].Columns["col1"],false);
-
-			Assert.AreEqual(false, ds.Tables[1].Columns.CanRemove(ds.Tables[1].Columns["col1"]), "DCC41"); //Part of a parent
-			Assert.AreEqual(false, ds.Tables[0].Columns.CanRemove(ds.Tables[0].Columns["col1"]), "DCC42"); //Part of a child
-		}
-
-		[Test] public void TestCanRemove_Expression()
-		{
-			DataTable dt = new DataTable();
-			dt.Columns.Add("col1",typeof(string));
-			dt.Columns.Add("col2",typeof(string),"sum(col1)");
-
-			Assert.AreEqual(false, dt.Columns.CanRemove(dt.Columns["col1"]), "DCC43"); //Col1 is a part of expression
-		}
-
-		[Test] public void TestAdd_CollectionChanged()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-
-			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged);
-			counter = 0;
-			DataColumn c = dt.Columns.Add("tempCol");
-
-			Assert.AreEqual(1, counter, "DCC44.1");
-			Assert.AreEqual (c, change_element, "DCC44.2");
-		}
-
-		[Test] public void TestRemove_CollectionChanged()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-
-			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged);
-			DataColumn c = dt.Columns.Add("tempCol");
-			counter = 0;
-			dt.Columns.Remove("tempCol");
-
-			Assert.AreEqual (1, counter, "DCC44.3");
-			Assert.AreEqual (c, change_element, "DCC44.4");
-		}
-
-		[Test] public void TestSetName_CollectionChanged()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-
-			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged);
-			dt.Columns.Add("tempCol");
-			counter = 0;
-			dt.Columns[0].ColumnName = "tempCol2";
-
-			Assert.AreEqual(0, counter, "DCC44.5");
-		}
-
-		object change_element;
-		private void Columns_CollectionChanged(object sender, CollectionChangeEventArgs e)
-		{
-			counter++;
-			change_element = e.Element;
-		}
-
-		[Test] public void TestContains_ByColumnName()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-			Assert.AreEqual(true, dt.Columns.Contains("ParentId"), "DCC45");
-			Assert.AreEqual(true, dt.Columns.Contains("String1"), "DCC46");
-			Assert.AreEqual(true, dt.Columns.Contains("ParentBool"), "DCC47");
-
-			Assert.AreEqual(false, dt.Columns.Contains("ParentId1"), "DCC48");
-			dt.Columns.Remove("ParentId");
-			Assert.AreEqual(false, dt.Columns.Contains("ParentId"), "DCC49");
-
-			dt.Columns["String1"].ColumnName = "Temp1";
-
-			Assert.AreEqual(false, dt.Columns.Contains("String1"), "DCC50");
-			Assert.AreEqual(true, dt.Columns.Contains("Temp1"), "DCC51");
-		}
-		public void NotReadyTestContains_S2() // FIXME: fails in MS
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-			Assert.AreEqual(false, dt.Columns.Contains(null), "DCC52");
-		}
-
-
-		[Test] public void Count()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-
-			Assert.AreEqual(6, dt.Columns.Count, "DCC55");
-
-			dt.Columns.Add("temp1");
-			Assert.AreEqual(7, dt.Columns.Count, "DCC56");
-
-			dt.Columns.Remove("temp1");
-			Assert.AreEqual(6, dt.Columns.Count, "DCC57");
-
-			dt.Columns.Remove("ParentId");
-			Assert.AreEqual(5, dt.Columns.Count, "DCC58");
-		}
-
-		[Test] public void TestIndexOf_ByDataColumn()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-
-			for (int i=0;i<dt.Columns.Count;i++)
-			{
-				Assert.AreEqual(i, dt.Columns.IndexOf(dt.Columns[i]), "DCC59");
-			}
-
-			DataColumn col = new DataColumn();
-
-			Assert.AreEqual(-1, dt.Columns.IndexOf(col), "DCC60");
-
-			Assert.AreEqual(-1, dt.Columns.IndexOf((DataColumn)null), "DCC61");
-		}
-
-		[Test]
-		public void TestIndexOf_ByColumnName()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-
-			for (int i=0;i<dt.Columns.Count;i++)
-			{
-				Assert.AreEqual(i, dt.Columns.IndexOf(dt.Columns[i].ColumnName), "DCC62");
-			}
-
-			DataColumn col = new DataColumn();
-
-			Assert.AreEqual(-1, dt.Columns.IndexOf("temp1"), "DCC63");
-
-			Assert.AreEqual(-1, dt.Columns.IndexOf((string)null), "DCC64");
-		}
-
-		[Test] public void TestRemove_ByDataColumn()
-		{
-			//prepare a DataSet with DataTable to be checked
-			DataTable dtSource = new DataTable();
-			dtSource.Columns.Add("Col_0", typeof(int));
-			dtSource.Columns.Add("Col_1", typeof(int));
-			dtSource.Columns.Add("Col_2", typeof(int));
-			dtSource.Rows.Add(new object[] {0,1,2});
-
-			DataTable dt = null;
-
-			//------Check Remove first column---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-
-			dt.Columns.Remove(dt.Columns[0]);
-			// Remove first column - check column count
-			Assert.AreEqual(2, dt.Columns.Count , "DCC65");
-
-			// Remove first column - check column removed
-			Assert.AreEqual(false, dt.Columns.Contains("Col_0"), "DCC66");
-
-			// Remove first column - check column 0 data
-			Assert.AreEqual(1, dt.Rows[0][0], "DCC67");
-
-			// Remove first column - check column 1 data
-			Assert.AreEqual(2, dt.Rows[0][1], "DCC68");
-
-			//------Check Remove middle column---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-
-			dt.Columns.Remove(dt.Columns[1]);
-			// Remove middle column - check column count
-			Assert.AreEqual(2, dt.Columns.Count , "DCC69");
-
-			// Remove middle column - check column removed
-			Assert.AreEqual(false, dt.Columns.Contains("Col_1"), "DCC70");
-
-			// Remove middle column - check column 0 data
-			Assert.AreEqual(0, dt.Rows[0][0], "DCC71");
-
-			// Remove middle column - check column 1 data
-			Assert.AreEqual(2, dt.Rows[0][1], "DCC72");
-
-			//------Check Remove last column---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-
-			dt.Columns.Remove(dt.Columns[2]);
-			// Remove last column - check column count
-			Assert.AreEqual(2, dt.Columns.Count , "DCC73");
-
-			// Remove last column - check column removed
-			Assert.AreEqual(false, dt.Columns.Contains("Col_2"), "DCC74");
-
-			// Remove last column - check column 0 data
-			Assert.AreEqual(0, dt.Rows[0][0], "DCC75");
-
-			// Remove last column - check column 1 data
-			Assert.AreEqual(1, dt.Rows[0][1], "DCC76");
-
-			//------Check Remove column exception---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-			// Check Remove column exception - Column name not exists
-			try {
-				DataColumn dc = new DataColumn();
-				dt.Columns.Remove(dc);
-				Assert.Fail("DCC77: Remove failed to throw ArgmentException");
-			}
-			catch (ArgumentException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("DCC78: Remove. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test] 
-		public void Add_DataColumn1()
-		{
-			DataTable dt = new DataTable();
-			DataColumn col = new DataColumn("col1",Type.GetType("System.String"));
-			dt.Columns.Add(col);
-			Assert.AreEqual(1,dt.Columns.Count,"dccadc1#1");
-			Assert.AreEqual("col1",dt.Columns[0].ColumnName,"dccadc1#2");
-			Assert.AreEqual("System.String",dt.Columns[0].DataType.ToString(),"dccadc1#3");			
-		}
-
-		[Test] 
-		public void Add_DataColumn2()
-		{
-			DataTable dt = new DataTable();
-			DataColumn col = new DataColumn("col1",Type.GetType("System.String"));
-			dt.Columns.Add(col);
-			try
-			{
-				dt.Columns.Add(col); 
-				Assert.Fail("dccadc2#1: Add failed to throw ArgmentException");
-			}
-			catch (ArgumentException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccadc2#2: Add. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test] 
-		public void Add_DataColumn3()
-		{
-			DataTable dt = new DataTable();
-			DataColumn col = new DataColumn("col1",Type.GetType("System.String"));
-			dt.Columns.Add(col);
-			try
-			{
-				DataColumn col1 = new DataColumn("col1",Type.GetType("System.String"));
-				dt.Columns.Add(col1);
-				Assert.Fail("dccadc3#1: Add failed to throw DuplicateNameExcpeion");
-			}
-			catch (DuplicateNameException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccadc3#2: Add. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test]
-		public void Add_String1()
-		{
-			DataTable dt = new DataTable();
-			dt.Columns.Add("col1");
-			Assert.AreEqual(1,dt.Columns.Count,"dccas1#1");
-			Assert.AreEqual("col1",dt.Columns[0].ColumnName,"dccas1#2");
-
-		}
-
-		[Test]
-		public void Add_String2()
-		{
-			DataTable dt = new DataTable();
-			dt.Columns.Add("col1");
-			try
-			{
-				dt.Columns.Add("col1");
-				Assert.Fail("dccas2#1: Add failed to throw DuplicateNameExcpeion");
-			}
-			catch (DuplicateNameException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccas2#2: Add. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test]
-		public void AddRange_DataColumn1()
-		{
-			DataTable dt = new DataTable();
-			dt.Columns.AddRange(GetDataColumArray());
-			Assert.AreEqual(2,dt.Columns.Count,"dccardc1#1");
-			Assert.AreEqual("col1",dt.Columns[0].ColumnName,"dccardc1#2");
-			Assert.AreEqual("col2",dt.Columns[1].ColumnName,"dccardc1#3");
-			Assert.AreEqual(typeof(int),dt.Columns[0].DataType,"dccardc1#4");
-			Assert.AreEqual(typeof(string),dt.Columns[1].DataType,"dccardc1#5");			
-		}
-
-		[Test]
-		public void AddRange_DataColumn2()
-		{
-			DataTable dt = new DataTable();
-			try
-			{
-				dt.Columns.AddRange(GetBadDataColumArray());
-				Assert.Fail("dccardc2#1: AddRange failed to throw DuplicateNameExcpeion");
-			}
-			catch (DuplicateNameException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccardc2#2: Add. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test]
-		public void DataColumnCollection_AddRange_DataColumn3()
-		{
-			DataTable dt = new DataTable();
-			dt.Columns.AddRange(null);
-		}
-
-		private DataColumn[] GetDataColumArray()
-		{
-			DataColumn[] arr = new DataColumn[2];
-
-			arr[0] = new DataColumn("col1",typeof(int));
-			arr[1] = new DataColumn("col2",typeof(string));
-			
-			return arr;
-		}
-
-		private DataColumn[] GetBadDataColumArray()
-		{
-			DataColumn[] arr = new DataColumn[2];
-
-			arr[0] = new DataColumn("col1",typeof(int));
-			arr[1] = new DataColumn("col1",typeof(string));
-			
-			return arr;
-		}
-
-		[Test]
-		public void Clear1()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-			dt.Columns.Clear();
-			Assert.AreEqual(0,dt.Columns.Count,"dccc1#1");
-		}
-
-		[Test]
-		public void Clear2()
-		{
-			DataSet ds = DataProvider.CreateForigenConstraint();
-
-			try
-			{
-				ds.Tables[0].Columns.Clear();
-				Assert.Fail("dccc2#1: Clear failed to throw ArgmentException");
-			}
-			catch (ArgumentException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccc2#2: Clear. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test]
-		public void Clear3()
-		{
-			DataSet ds = DataProvider.CreateForigenConstraint();
-			ds.Tables[1].Constraints.RemoveAt(0);
-			ds.Tables[0].Constraints.RemoveAt(0);
-			ds.Tables[0].Columns.Clear();
-			ds.Tables[1].Columns.Clear();
-			Assert.AreEqual(0,ds.Tables[0].Columns.Count,"dccc3#1");
-			Assert.AreEqual(0,ds.Tables[1].Columns.Count,"dccc3#2");
-		}
-
-		[Test]
-		public void GetEnumerator()
-		{
-			DataTable dt = DataProvider.CreateUniqueConstraint();
-			
-			int counter=0;
-			IEnumerator myEnumerator = dt.Columns.GetEnumerator();
-			while (myEnumerator.MoveNext())
-			{
-				counter++;
-			}
-			Assert.AreEqual(6,counter,"dccge#1");
-
-			try
-			{
-				DataColumn col = (DataColumn)myEnumerator.Current;
-				Assert.Fail("dccc2#1: GetEnumerator failed to throw InvalidOperationException");
-			}
-			catch (InvalidOperationException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccc2#2: GetEnumerator. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test] // this [Int32]
-		public void Indexer1 ()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-			DataColumn col;
-
-			col = dt.Columns [5];
-			Assert.IsNotNull (col, "#A1");
-			Assert.AreEqual ("ParentBool", col.ColumnName, "#A2");
-
-			col = dt.Columns [0];
-			Assert.IsNotNull (col, "#B1");
-			Assert.AreEqual ("ParentId", col.ColumnName, "#B2");
-
-			col = dt.Columns [3];
-			Assert.IsNotNull (col, "#C1");
-			Assert.AreEqual ("ParentDateTime", col.ColumnName, "#C2");
-		}
-
-		[Test] // this [Int32]
-		public void Indexer1_Index_Negative ()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable ();
-
-			try {
-				DataColumn column = dt.Columns [-1];
-				Assert.Fail ("#1:" + column);
-			} catch (IndexOutOfRangeException ex) {
-				// Cannot find column -1
-				Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-			}
-		}
-
-		[Test] // this [Int32]
-		public void Indexer1_Index_Overflow ()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable ();
-
-			try {
-				DataColumn column = dt.Columns [6];
-				Assert.Fail ("#1:" + column);
-			} catch (IndexOutOfRangeException ex) {
-				// Cannot find column 6
-				Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-			}
-		}
-
-		[Test] // this [String]
-		public void Indexer2 ()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable ();
-			DataColumnCollection cols = dt.Columns;
-			DataColumn col;
-
-			col = cols ["ParentId"];
-			Assert.IsNotNull (col, "#A1");
-			Assert.AreEqual ("ParentId", col.ColumnName, "#A2");
-
-			col = cols ["parentiD"];
-			Assert.IsNotNull (col, "#B1");
-			Assert.AreEqual ("ParentId", col.ColumnName, "#B2");
-
-			col = cols ["DoesNotExist"];
-			Assert.IsNull (col, "#C");
-		}
-
-		[Test] // this [String]
-		public void Indexer2_Name_Empty ()
-		{
-			DataTable dt = new DataTable ();
-			DataColumnCollection cols = dt.Columns;
-
-			cols.Add (string.Empty, typeof (int));
-			cols.Add ((string) null, typeof (bool));
-
-			DataColumn column = cols [string.Empty];
-			Assert.IsNull (column);
-		}
-
-		[Test] // this [String]
-		public void Indexer2_Name_Null ()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable ();
-
-			try {
-				DataColumn column = dt.Columns [(string) null];
-				Assert.Fail ("#1:" + column);
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("name", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void Remove()
-		{
-			//prepare a DataSet with DataTable to be checked
-			DataTable dtSource = new DataTable();
-			dtSource.Columns.Add("Col_0", typeof(int)); 
-			dtSource.Columns.Add("Col_1", typeof(int)); 
-			dtSource.Columns.Add("Col_2", typeof(int)); 
-			dtSource.Rows.Add(new object[] {0,1,2}); 
-
-			DataTable dt = null;
-
-			//------Check Remove first column---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-
-			dt.Columns.Remove(dt.Columns[0].ColumnName); 
-			Assert.AreEqual(2,dt.Columns.Count , "dccr#1");
-			Assert.AreEqual(false,dt.Columns.Contains("Col_0"),"dccr#2");
-			Assert.AreEqual(1,dt.Rows[0][0],"dccr#3");
-			Assert.AreEqual(2,dt.Rows[0][1],"dccr#4");
-
-
-
-			//------Check Remove middle column---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-
-			dt.Columns.Remove(dt.Columns[1].ColumnName); 
-			Assert.AreEqual(2,dt.Columns.Count , "dccr#5");
-			Assert.AreEqual(false,dt.Columns.Contains("Col_1"),"dccr#6");
-			Assert.AreEqual(0,dt.Rows[0][0],"dccr#7");
-			Assert.AreEqual(2,dt.Rows[0][1],"dccr#8");
-
-
-			//------Check Remove last column---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-
-			dt.Columns.Remove(dt.Columns[2].ColumnName); 
-
-			Assert.AreEqual(2,dt.Columns.Count , "dccr#9");
-			Assert.AreEqual(false,dt.Columns.Contains("Col_2"),"dccr#10");
-			Assert.AreEqual(0,dt.Rows[0][0],"dccr#11");
-			Assert.AreEqual(1,dt.Rows[0][1],"dccr#12");
-
-
-			//------Check Remove column exception---------
-			dt = dtSource.Clone();
-			dt.ImportRow(dtSource.Rows[0]);
-
-			try
-			{
-				dt.Columns.Remove("NotExist"); 
-				Assert.Fail("dccr#13: Remove failed to throw ArgmentException");
-			}
-			catch (ArgumentException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccr#14: Remove. Wrong exception type. Got:" + exc);
-			}
-
-			dt.Columns.Clear();
-
-			try
-			{
-				dt.Columns.Remove("Col_0"); 
-				Assert.Fail("dccr#15: Remove failed to throw ArgmentException");
-			}
-			catch (ArgumentException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccr#16: Remove. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		private bool eventOccured = false;
-
-		[Test]
-		public void RemoveAt_Integer()
-		{
-			DataTable dt = DataProvider.CreateParentDataTable();
-			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged1);
-			int originalColumnCount = dt.Columns.Count;
-			dt.Columns.RemoveAt(0);
-			Assert.AreEqual(originalColumnCount-1,dt.Columns.Count,"dccrai#1"); 
-			Assert.AreEqual(true,eventOccured,"dccrai#2");
-
-			try
-			{
-				dt.Columns.RemoveAt(-1);
-				Assert.Fail("dccrai#3: RemoveAt failed to throw IndexOutOfRangeException");
-			}
-			catch (IndexOutOfRangeException) {}
-			catch (AssertionException exc) {throw  exc;}
-			catch (Exception exc)
-			{
-				Assert.Fail("dccrai#4: RemoveAt. Wrong exception type. Got:" + exc);
-			}
-		}
-
-		[Test]
-		public void Test_Indexes ()
-		{
-			DataTable dt = new DataTable ();
-			DataColumn dc = new DataColumn("A");
-			dt.Columns.Add (dc);
-
-			dc = new DataColumn("B");
-			dt.Columns.Add (dc);
-
-			dc = new DataColumn("C");
-			dt.Columns.Add (dc);
-
-			for(int i=0; i < 10; i++) {
-				DataRow dr = dt.NewRow ();
-				dr ["A"] = i;
-				dr ["B"] = i + 1;
-				dr ["C"] = i + 2;
-				dt.Rows.Add (dr);
-			}
-
-			DataRow[] rows = dt.Select ("A=5");
-			Assert.AreEqual (1, rows.Length);
-
-			dt.Columns.Remove ("A");
-
-			dc = new DataColumn ("A");
-			dc.DefaultValue = 5;
-
-			dt.Columns.Add (dc);
-
-			rows = dt.Select ("A=5");
-			Assert.AreEqual (10, rows.Length);
-		}
-
-		private void Columns_CollectionChanged1(object sender, CollectionChangeEventArgs e)
-		{
-			eventOccured = true;
-		}
-	}
-}
+// Authors:
+//   Rafael Mizrahi   <rafim@mainsoft.com>
+//   Erez Lotan       <erezl@mainsoft.com>
+//   Oren Gurfinkel   <oreng@mainsoft.com>
+//   Ofer Borstein
+//
+// Copyright (c) 2004 Mainsoft Co.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.ComponentModel;
+using System.Data;
+using MonoTests.System.Data.Utils;
+using System.Collections;
+
+namespace MonoTests.System.Data
+{
+	[TestFixture] public class DataColumnCollectionTest2
+	{
+		private int counter = 0;
+
+		[Test] public void Add()
+		{
+			DataColumn dc = null;
+			DataTable dt = new DataTable();
+
+			//----------------------------- check default --------------------
+			dc = dt.Columns.Add();
+			// Add column 1
+			Assert.AreEqual("Column1", dc.ColumnName, "DCC1");
+
+			// Add column 2
+			dc = dt.Columns.Add();
+			Assert.AreEqual("Column2", dc.ColumnName, "DCC2");
+
+			dc = dt.Columns.Add();
+			// Add column 3
+			Assert.AreEqual("Column3", dc.ColumnName, "DCC3");
+
+			dc = dt.Columns.Add();
+			// Add column 4
+			Assert.AreEqual("Column4", dc.ColumnName, "DCC4");
+
+			dc = dt.Columns.Add();
+			// Add column 5
+			Assert.AreEqual("Column5", dc.ColumnName, "DCC5");
+			Assert.AreEqual(5, dt.Columns.Count, "DCC6");
+
+			//----------------------------- check Add/Remove from begining --------------------
+			dt = initTable();
+
+			dt.Columns.Remove(dt.Columns[0]);
+			dt.Columns.Remove(dt.Columns[0]);
+			dt.Columns.Remove(dt.Columns[0]);
+
+			// check column 4 - remove - from begining
+			Assert.AreEqual("Column4", dt.Columns[0].ColumnName, "DCC7");
+
+			// check column 5 - remove - from begining
+			Assert.AreEqual("Column5", dt.Columns[1].ColumnName , "DCC8");
+			Assert.AreEqual(2, dt.Columns.Count, "DCC9");
+
+			dt.Columns.Add();
+			dt.Columns.Add();
+			dt.Columns.Add();
+			dt.Columns.Add();
+
+			// check column 0 - Add new  - from begining
+			Assert.AreEqual("Column4", dt.Columns[0].ColumnName , "DCC10");
+
+			// check column 1 - Add new - from begining
+			Assert.AreEqual("Column5", dt.Columns[1].ColumnName , "DCC11");
+
+			// check column 2 - Add new - from begining
+			Assert.AreEqual("Column6", dt.Columns[2].ColumnName , "DCC12");
+
+			// check column 3 - Add new - from begining
+			Assert.AreEqual("Column7", dt.Columns[3].ColumnName , "DCC13");
+
+			// check column 4 - Add new - from begining
+			Assert.AreEqual("Column8", dt.Columns[4].ColumnName , "DCC14");
+
+			// check column 5 - Add new - from begining
+			Assert.AreEqual("Column9", dt.Columns[5].ColumnName , "DCC15");
+
+			//----------------------------- check Add/Remove from middle --------------------
+
+			dt = initTable();
+
+			dt.Columns.Remove(dt.Columns[2]);
+			dt.Columns.Remove(dt.Columns[2]);
+			dt.Columns.Remove(dt.Columns[2]);
+
+			// check column 0 - remove - from Middle
+			Assert.AreEqual("Column1", dt.Columns[0].ColumnName, "DCC16");
+
+			// check column 1 - remove - from Middle
+			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC17");
+
+			dt.Columns.Add();
+			dt.Columns.Add();
+			dt.Columns.Add();
+			dt.Columns.Add();
+
+			// check column 0 - Add new  - from Middle
+			Assert.AreEqual("Column1", dt.Columns[0].ColumnName , "DCC18");
+
+			// check column 1 - Add new - from Middle
+			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC19");
+
+			// check column 2 - Add new - from Middle
+			Assert.AreEqual("Column3", dt.Columns[2].ColumnName , "DCC20");
+
+			// check column 3 - Add new - from Middle
+			Assert.AreEqual("Column4", dt.Columns[3].ColumnName , "DCC21");
+
+			// check column 4 - Add new - from Middle
+			Assert.AreEqual("Column5", dt.Columns[4].ColumnName , "DCC22");
+
+			// check column 5 - Add new - from Middle
+			Assert.AreEqual("Column6", dt.Columns[5].ColumnName , "DCC23");
+
+			//----------------------------- check Add/Remove from end --------------------
+
+			dt = initTable();
+
+			dt.Columns.Remove(dt.Columns[4]);
+			dt.Columns.Remove(dt.Columns[3]);
+			dt.Columns.Remove(dt.Columns[2]);
+
+			// check column 0 - remove - from end
+			Assert.AreEqual("Column1", dt.Columns[0].ColumnName, "DCC24");
+
+			// check column 1 - remove - from end
+			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC25");
+
+			dt.Columns.Add();
+			dt.Columns.Add();
+			dt.Columns.Add();
+			dt.Columns.Add();
+
+			// check column 0 - Add new  - from end
+			Assert.AreEqual("Column1", dt.Columns[0].ColumnName , "DCC26");
+
+			// check column 1 - Add new - from end
+			Assert.AreEqual("Column2", dt.Columns[1].ColumnName , "DCC27");
+
+			// check column 2 - Add new - from end
+			Assert.AreEqual("Column3", dt.Columns[2].ColumnName , "DCC28");
+
+			// check column 3 - Add new - from end
+			Assert.AreEqual("Column4", dt.Columns[3].ColumnName , "DCC29");
+
+			// check column 4 - Add new - from end
+			Assert.AreEqual("Column5", dt.Columns[4].ColumnName , "DCC30");
+
+			// check column 5 - Add new - from end
+			Assert.AreEqual("Column6", dt.Columns[5].ColumnName , "DCC31");
+		}
+
+		private DataTable initTable()
+		{
+			DataTable dt = new DataTable();
+			for (int i=0; i<5; i++)
+			{
+				dt.Columns.Add();
+			}
+			return dt;
+	   }
+
+		[Test] public void TestAdd_ByTableName()
+		{
+			//this test is from boris
+
+			DataSet ds = new DataSet();
+			DataTable dt = new DataTable();
+			ds.Tables.Add(dt);
+
+			// add one column
+			dt.Columns.Add("id1",typeof(int));
+
+			// DataColumnCollection add
+			Assert.AreEqual(1, dt.Columns.Count , "DCC32");
+
+			// add row
+			DataRow dr = dt.NewRow();
+			dt.Rows.Add(dr);
+
+			// remove column
+			dt.Columns.Remove("id1");
+
+			// DataColumnCollection remove
+			Assert.AreEqual(0, dt.Columns.Count , "DCC33");
+
+			//row is still there
+
+			// now add column
+			dt.Columns.Add("id2",typeof(int));
+
+			// DataColumnCollection add again
+			Assert.AreEqual(1, dt.Columns.Count , "DCC34");
+		}
+
+		[Test] public void TestCanRemove_ByDataColumn()
+		{
+			DataTable dt = DataProvider.CreateUniqueConstraint();
+			DataColumn dummyCol = new DataColumn();
+			Assert.AreEqual(false, dt.Columns.CanRemove(null), "DCC35"); //Cannot remove null column
+			Assert.AreEqual(false, dt.Columns.CanRemove(dummyCol), "DCC36"); //Don't belong to this table
+			Assert.AreEqual(false, dt.Columns.CanRemove(dt.Columns[0]), "DCC37"); //It belongs to unique constraint
+			Assert.AreEqual(true, dt.Columns.CanRemove(dt.Columns[1]), "DCC38");
+		}
+		[Test] public void TestCanRemove_ForigenConstraint()
+		{
+			DataSet ds = DataProvider.CreateForigenConstraint();
+
+			Assert.AreEqual(false, ds.Tables["child"].Columns.CanRemove(ds.Tables["child"].Columns["parentId"]), "DCC39");//Forigen
+			Assert.AreEqual(false, ds.Tables["parent"].Columns.CanRemove(ds.Tables["child"].Columns["parentId"]), "DCC40");//Parent
+		}
+		[Test] public void TestCanRemove_ParentRelations()
+		{
+			DataSet ds = new DataSet();
+
+			ds.Tables.Add("table1");
+			ds.Tables.Add("table2");
+			ds.Tables["table1"].Columns.Add("col1");
+			ds.Tables["table2"].Columns.Add("col1");
+
+			ds.Tables[1].ParentRelations.Add("name1",ds.Tables[0].Columns["col1"],ds.Tables[1].Columns["col1"],false);
+
+			Assert.AreEqual(false, ds.Tables[1].Columns.CanRemove(ds.Tables[1].Columns["col1"]), "DCC41"); //Part of a parent
+			Assert.AreEqual(false, ds.Tables[0].Columns.CanRemove(ds.Tables[0].Columns["col1"]), "DCC42"); //Part of a child
+		}
+
+		[Test] public void TestCanRemove_Expression()
+		{
+			DataTable dt = new DataTable();
+			dt.Columns.Add("col1",typeof(string));
+			dt.Columns.Add("col2",typeof(string),"sum(col1)");
+
+			Assert.AreEqual(false, dt.Columns.CanRemove(dt.Columns["col1"]), "DCC43"); //Col1 is a part of expression
+		}
+
+		[Test] public void TestAdd_CollectionChanged()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+
+			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged);
+			counter = 0;
+			DataColumn c = dt.Columns.Add("tempCol");
+
+			Assert.AreEqual(1, counter, "DCC44.1");
+			Assert.AreEqual (c, change_element, "DCC44.2");
+		}
+
+		[Test] public void TestRemove_CollectionChanged()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+
+			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged);
+			DataColumn c = dt.Columns.Add("tempCol");
+			counter = 0;
+			dt.Columns.Remove("tempCol");
+
+			Assert.AreEqual (1, counter, "DCC44.3");
+			Assert.AreEqual (c, change_element, "DCC44.4");
+		}
+
+		[Test] public void TestSetName_CollectionChanged()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+
+			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged);
+			dt.Columns.Add("tempCol");
+			counter = 0;
+			dt.Columns[0].ColumnName = "tempCol2";
+
+			Assert.AreEqual(0, counter, "DCC44.5");
+		}
+
+		object change_element;
+		private void Columns_CollectionChanged(object sender, CollectionChangeEventArgs e)
+		{
+			counter++;
+			change_element = e.Element;
+		}
+
+		[Test] public void TestContains_ByColumnName()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+			Assert.AreEqual(true, dt.Columns.Contains("ParentId"), "DCC45");
+			Assert.AreEqual(true, dt.Columns.Contains("String1"), "DCC46");
+			Assert.AreEqual(true, dt.Columns.Contains("ParentBool"), "DCC47");
+
+			Assert.AreEqual(false, dt.Columns.Contains("ParentId1"), "DCC48");
+			dt.Columns.Remove("ParentId");
+			Assert.AreEqual(false, dt.Columns.Contains("ParentId"), "DCC49");
+
+			dt.Columns["String1"].ColumnName = "Temp1";
+
+			Assert.AreEqual(false, dt.Columns.Contains("String1"), "DCC50");
+			Assert.AreEqual(true, dt.Columns.Contains("Temp1"), "DCC51");
+		}
+		public void NotReadyTestContains_S2() // FIXME: fails in MS
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+			Assert.AreEqual(false, dt.Columns.Contains(null), "DCC52");
+		}
+
+
+		[Test] public void Count()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+
+			Assert.AreEqual(6, dt.Columns.Count, "DCC55");
+
+			dt.Columns.Add("temp1");
+			Assert.AreEqual(7, dt.Columns.Count, "DCC56");
+
+			dt.Columns.Remove("temp1");
+			Assert.AreEqual(6, dt.Columns.Count, "DCC57");
+
+			dt.Columns.Remove("ParentId");
+			Assert.AreEqual(5, dt.Columns.Count, "DCC58");
+		}
+
+		[Test] public void TestIndexOf_ByDataColumn()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+
+			for (int i=0;i<dt.Columns.Count;i++)
+			{
+				Assert.AreEqual(i, dt.Columns.IndexOf(dt.Columns[i]), "DCC59");
+			}
+
+			DataColumn col = new DataColumn();
+
+			Assert.AreEqual(-1, dt.Columns.IndexOf(col), "DCC60");
+
+			Assert.AreEqual(-1, dt.Columns.IndexOf((DataColumn)null), "DCC61");
+		}
+
+		[Test]
+		public void TestIndexOf_ByColumnName()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+
+			for (int i=0;i<dt.Columns.Count;i++)
+			{
+				Assert.AreEqual(i, dt.Columns.IndexOf(dt.Columns[i].ColumnName), "DCC62");
+			}
+
+			DataColumn col = new DataColumn();
+
+			Assert.AreEqual(-1, dt.Columns.IndexOf("temp1"), "DCC63");
+
+			Assert.AreEqual(-1, dt.Columns.IndexOf((string)null), "DCC64");
+		}
+
+		[Test] public void TestRemove_ByDataColumn()
+		{
+			//prepare a DataSet with DataTable to be checked
+			DataTable dtSource = new DataTable();
+			dtSource.Columns.Add("Col_0", typeof(int));
+			dtSource.Columns.Add("Col_1", typeof(int));
+			dtSource.Columns.Add("Col_2", typeof(int));
+			dtSource.Rows.Add(new object[] {0,1,2});
+
+			DataTable dt = null;
+
+			//------Check Remove first column---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+
+			dt.Columns.Remove(dt.Columns[0]);
+			// Remove first column - check column count
+			Assert.AreEqual(2, dt.Columns.Count , "DCC65");
+
+			// Remove first column - check column removed
+			Assert.AreEqual(false, dt.Columns.Contains("Col_0"), "DCC66");
+
+			// Remove first column - check column 0 data
+			Assert.AreEqual(1, dt.Rows[0][0], "DCC67");
+
+			// Remove first column - check column 1 data
+			Assert.AreEqual(2, dt.Rows[0][1], "DCC68");
+
+			//------Check Remove middle column---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+
+			dt.Columns.Remove(dt.Columns[1]);
+			// Remove middle column - check column count
+			Assert.AreEqual(2, dt.Columns.Count , "DCC69");
+
+			// Remove middle column - check column removed
+			Assert.AreEqual(false, dt.Columns.Contains("Col_1"), "DCC70");
+
+			// Remove middle column - check column 0 data
+			Assert.AreEqual(0, dt.Rows[0][0], "DCC71");
+
+			// Remove middle column - check column 1 data
+			Assert.AreEqual(2, dt.Rows[0][1], "DCC72");
+
+			//------Check Remove last column---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+
+			dt.Columns.Remove(dt.Columns[2]);
+			// Remove last column - check column count
+			Assert.AreEqual(2, dt.Columns.Count , "DCC73");
+
+			// Remove last column - check column removed
+			Assert.AreEqual(false, dt.Columns.Contains("Col_2"), "DCC74");
+
+			// Remove last column - check column 0 data
+			Assert.AreEqual(0, dt.Rows[0][0], "DCC75");
+
+			// Remove last column - check column 1 data
+			Assert.AreEqual(1, dt.Rows[0][1], "DCC76");
+
+			//------Check Remove column exception---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+			// Check Remove column exception - Column name not exists
+			try {
+				DataColumn dc = new DataColumn();
+				dt.Columns.Remove(dc);
+				Assert.Fail("DCC77: Remove failed to throw ArgmentException");
+			}
+			catch (ArgumentException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("DCC78: Remove. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test] 
+		public void Add_DataColumn1()
+		{
+			DataTable dt = new DataTable();
+			DataColumn col = new DataColumn("col1",Type.GetType("System.String"));
+			dt.Columns.Add(col);
+			Assert.AreEqual(1,dt.Columns.Count,"dccadc1#1");
+			Assert.AreEqual("col1",dt.Columns[0].ColumnName,"dccadc1#2");
+			Assert.AreEqual("System.String",dt.Columns[0].DataType.ToString(),"dccadc1#3");			
+		}
+
+		[Test] 
+		public void Add_DataColumn2()
+		{
+			DataTable dt = new DataTable();
+			DataColumn col = new DataColumn("col1",Type.GetType("System.String"));
+			dt.Columns.Add(col);
+			try
+			{
+				dt.Columns.Add(col); 
+				Assert.Fail("dccadc2#1: Add failed to throw ArgmentException");
+			}
+			catch (ArgumentException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccadc2#2: Add. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test] 
+		public void Add_DataColumn3()
+		{
+			DataTable dt = new DataTable();
+			DataColumn col = new DataColumn("col1",Type.GetType("System.String"));
+			dt.Columns.Add(col);
+			try
+			{
+				DataColumn col1 = new DataColumn("col1",Type.GetType("System.String"));
+				dt.Columns.Add(col1);
+				Assert.Fail("dccadc3#1: Add failed to throw DuplicateNameExcpeion");
+			}
+			catch (DuplicateNameException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccadc3#2: Add. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test]
+		public void Add_String1()
+		{
+			DataTable dt = new DataTable();
+			dt.Columns.Add("col1");
+			Assert.AreEqual(1,dt.Columns.Count,"dccas1#1");
+			Assert.AreEqual("col1",dt.Columns[0].ColumnName,"dccas1#2");
+
+		}
+
+		[Test]
+		public void Add_String2()
+		{
+			DataTable dt = new DataTable();
+			dt.Columns.Add("col1");
+			try
+			{
+				dt.Columns.Add("col1");
+				Assert.Fail("dccas2#1: Add failed to throw DuplicateNameExcpeion");
+			}
+			catch (DuplicateNameException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccas2#2: Add. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test]
+		public void AddRange_DataColumn1()
+		{
+			DataTable dt = new DataTable();
+			dt.Columns.AddRange(GetDataColumArray());
+			Assert.AreEqual(2,dt.Columns.Count,"dccardc1#1");
+			Assert.AreEqual("col1",dt.Columns[0].ColumnName,"dccardc1#2");
+			Assert.AreEqual("col2",dt.Columns[1].ColumnName,"dccardc1#3");
+			Assert.AreEqual(typeof(int),dt.Columns[0].DataType,"dccardc1#4");
+			Assert.AreEqual(typeof(string),dt.Columns[1].DataType,"dccardc1#5");			
+		}
+
+		[Test]
+		public void AddRange_DataColumn2()
+		{
+			DataTable dt = new DataTable();
+			try
+			{
+				dt.Columns.AddRange(GetBadDataColumArray());
+				Assert.Fail("dccardc2#1: AddRange failed to throw DuplicateNameExcpeion");
+			}
+			catch (DuplicateNameException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccardc2#2: Add. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test]
+		public void DataColumnCollection_AddRange_DataColumn3()
+		{
+			DataTable dt = new DataTable();
+			dt.Columns.AddRange(null);
+		}
+
+		private DataColumn[] GetDataColumArray()
+		{
+			DataColumn[] arr = new DataColumn[2];
+
+			arr[0] = new DataColumn("col1",typeof(int));
+			arr[1] = new DataColumn("col2",typeof(string));
+			
+			return arr;
+		}
+
+		private DataColumn[] GetBadDataColumArray()
+		{
+			DataColumn[] arr = new DataColumn[2];
+
+			arr[0] = new DataColumn("col1",typeof(int));
+			arr[1] = new DataColumn("col1",typeof(string));
+			
+			return arr;
+		}
+
+		[Test]
+		public void Clear1()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+			dt.Columns.Clear();
+			Assert.AreEqual(0,dt.Columns.Count,"dccc1#1");
+		}
+
+		[Test]
+		public void Clear2()
+		{
+			DataSet ds = DataProvider.CreateForigenConstraint();
+
+			try
+			{
+				ds.Tables[0].Columns.Clear();
+				Assert.Fail("dccc2#1: Clear failed to throw ArgmentException");
+			}
+			catch (ArgumentException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccc2#2: Clear. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test]
+		public void Clear3()
+		{
+			DataSet ds = DataProvider.CreateForigenConstraint();
+			ds.Tables[1].Constraints.RemoveAt(0);
+			ds.Tables[0].Constraints.RemoveAt(0);
+			ds.Tables[0].Columns.Clear();
+			ds.Tables[1].Columns.Clear();
+			Assert.AreEqual(0,ds.Tables[0].Columns.Count,"dccc3#1");
+			Assert.AreEqual(0,ds.Tables[1].Columns.Count,"dccc3#2");
+		}
+
+		[Test]
+		public void GetEnumerator()
+		{
+			DataTable dt = DataProvider.CreateUniqueConstraint();
+			
+			int counter=0;
+			IEnumerator myEnumerator = dt.Columns.GetEnumerator();
+			while (myEnumerator.MoveNext())
+			{
+				counter++;
+			}
+			Assert.AreEqual(6,counter,"dccge#1");
+
+			try
+			{
+				DataColumn col = (DataColumn)myEnumerator.Current;
+				Assert.Fail("dccc2#1: GetEnumerator failed to throw InvalidOperationException");
+			}
+			catch (InvalidOperationException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccc2#2: GetEnumerator. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test] // this [Int32]
+		public void Indexer1 ()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+			DataColumn col;
+
+			col = dt.Columns [5];
+			Assert.IsNotNull (col, "#A1");
+			Assert.AreEqual ("ParentBool", col.ColumnName, "#A2");
+
+			col = dt.Columns [0];
+			Assert.IsNotNull (col, "#B1");
+			Assert.AreEqual ("ParentId", col.ColumnName, "#B2");
+
+			col = dt.Columns [3];
+			Assert.IsNotNull (col, "#C1");
+			Assert.AreEqual ("ParentDateTime", col.ColumnName, "#C2");
+		}
+
+		[Test] // this [Int32]
+		public void Indexer1_Index_Negative ()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable ();
+
+			try {
+				DataColumn column = dt.Columns [-1];
+				Assert.Fail ("#1:" + column);
+			} catch (IndexOutOfRangeException ex) {
+				// Cannot find column -1
+				Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+			}
+		}
+
+		[Test] // this [Int32]
+		public void Indexer1_Index_Overflow ()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable ();
+
+			try {
+				DataColumn column = dt.Columns [6];
+				Assert.Fail ("#1:" + column);
+			} catch (IndexOutOfRangeException ex) {
+				// Cannot find column 6
+				Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+			}
+		}
+
+		[Test] // this [String]
+		public void Indexer2 ()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable ();
+			DataColumnCollection cols = dt.Columns;
+			DataColumn col;
+
+			col = cols ["ParentId"];
+			Assert.IsNotNull (col, "#A1");
+			Assert.AreEqual ("ParentId", col.ColumnName, "#A2");
+
+			col = cols ["parentiD"];
+			Assert.IsNotNull (col, "#B1");
+			Assert.AreEqual ("ParentId", col.ColumnName, "#B2");
+
+			col = cols ["DoesNotExist"];
+			Assert.IsNull (col, "#C");
+		}
+
+		[Test] // this [String]
+		public void Indexer2_Name_Empty ()
+		{
+			DataTable dt = new DataTable ();
+			DataColumnCollection cols = dt.Columns;
+
+			cols.Add (string.Empty, typeof (int));
+			cols.Add ((string) null, typeof (bool));
+
+			DataColumn column = cols [string.Empty];
+			Assert.IsNull (column);
+		}
+
+		[Test] // this [String]
+		public void Indexer2_Name_Null ()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable ();
+
+			try {
+				DataColumn column = dt.Columns [(string) null];
+				Assert.Fail ("#1:" + column);
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("name", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void Remove()
+		{
+			//prepare a DataSet with DataTable to be checked
+			DataTable dtSource = new DataTable();
+			dtSource.Columns.Add("Col_0", typeof(int)); 
+			dtSource.Columns.Add("Col_1", typeof(int)); 
+			dtSource.Columns.Add("Col_2", typeof(int)); 
+			dtSource.Rows.Add(new object[] {0,1,2}); 
+
+			DataTable dt = null;
+
+			//------Check Remove first column---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+
+			dt.Columns.Remove(dt.Columns[0].ColumnName); 
+			Assert.AreEqual(2,dt.Columns.Count , "dccr#1");
+			Assert.AreEqual(false,dt.Columns.Contains("Col_0"),"dccr#2");
+			Assert.AreEqual(1,dt.Rows[0][0],"dccr#3");
+			Assert.AreEqual(2,dt.Rows[0][1],"dccr#4");
+
+
+
+			//------Check Remove middle column---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+
+			dt.Columns.Remove(dt.Columns[1].ColumnName); 
+			Assert.AreEqual(2,dt.Columns.Count , "dccr#5");
+			Assert.AreEqual(false,dt.Columns.Contains("Col_1"),"dccr#6");
+			Assert.AreEqual(0,dt.Rows[0][0],"dccr#7");
+			Assert.AreEqual(2,dt.Rows[0][1],"dccr#8");
+
+
+			//------Check Remove last column---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+
+			dt.Columns.Remove(dt.Columns[2].ColumnName); 
+
+			Assert.AreEqual(2,dt.Columns.Count , "dccr#9");
+			Assert.AreEqual(false,dt.Columns.Contains("Col_2"),"dccr#10");
+			Assert.AreEqual(0,dt.Rows[0][0],"dccr#11");
+			Assert.AreEqual(1,dt.Rows[0][1],"dccr#12");
+
+
+			//------Check Remove column exception---------
+			dt = dtSource.Clone();
+			dt.ImportRow(dtSource.Rows[0]);
+
+			try
+			{
+				dt.Columns.Remove("NotExist"); 
+				Assert.Fail("dccr#13: Remove failed to throw ArgmentException");
+			}
+			catch (ArgumentException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccr#14: Remove. Wrong exception type. Got:" + exc);
+			}
+
+			dt.Columns.Clear();
+
+			try
+			{
+				dt.Columns.Remove("Col_0"); 
+				Assert.Fail("dccr#15: Remove failed to throw ArgmentException");
+			}
+			catch (ArgumentException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccr#16: Remove. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		private bool eventOccured = false;
+
+		[Test]
+		public void RemoveAt_Integer()
+		{
+			DataTable dt = DataProvider.CreateParentDataTable();
+			dt.Columns.CollectionChanged+=new CollectionChangeEventHandler(Columns_CollectionChanged1);
+			int originalColumnCount = dt.Columns.Count;
+			dt.Columns.RemoveAt(0);
+			Assert.AreEqual(originalColumnCount-1,dt.Columns.Count,"dccrai#1"); 
+			Assert.AreEqual(true,eventOccured,"dccrai#2");
+
+			try
+			{
+				dt.Columns.RemoveAt(-1);
+				Assert.Fail("dccrai#3: RemoveAt failed to throw IndexOutOfRangeException");
+			}
+			catch (IndexOutOfRangeException) {}
+			catch (AssertionException exc) {throw  exc;}
+			catch (Exception exc)
+			{
+				Assert.Fail("dccrai#4: RemoveAt. Wrong exception type. Got:" + exc);
+			}
+		}
+
+		[Test]
+		public void Test_Indexes ()
+		{
+			DataTable dt = new DataTable ();
+			DataColumn dc = new DataColumn("A");
+			dt.Columns.Add (dc);
+
+			dc = new DataColumn("B");
+			dt.Columns.Add (dc);
+
+			dc = new DataColumn("C");
+			dt.Columns.Add (dc);
+
+			for(int i=0; i < 10; i++) {
+				DataRow dr = dt.NewRow ();
+				dr ["A"] = i;
+				dr ["B"] = i + 1;
+				dr ["C"] = i + 2;
+				dt.Rows.Add (dr);
+			}
+
+			DataRow[] rows = dt.Select ("A=5");
+			Assert.AreEqual (1, rows.Length);
+
+			dt.Columns.Remove ("A");
+
+			dc = new DataColumn ("A");
+			dc.DefaultValue = 5;
+
+			dt.Columns.Add (dc);
+
+			rows = dt.Select ("A=5");
+			Assert.AreEqual (10, rows.Length);
+		}
+
+		private void Columns_CollectionChanged1(object sender, CollectionChangeEventArgs e)
+		{
+			eventOccured = true;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/DataRelationTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/DataRelationTest.cs
@@ -1,488 +1,488 @@
-//
-// DataRelationTest.cs - NUnit Test Cases for  DataRelation
-//
-// Authors:
-//   Ville Palo (vi64pa@koti.soon.fi)
-//   Martin Willemoes Hansen (mwh@sysrq.dk)
-//
-// (C) 2003 Ville Palo
-// (C) 2003 Martin Willemoes Hansen
-// 
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using NUnit.Framework;
-using System;
-using System.Data;
-#if !MOBILE
-using NUnit.Framework.SyntaxHelpers;
-#endif
-
-namespace MonoTests.System.Data
-{
-	[TestFixture]
-	public class DataRelationTest
-	{
-		private DataSet Set = null;
-		private DataTable Mom = null;
-		private DataTable Child = null;        	
-
-		[SetUp]
-		public void GetReady ()
-		{
-			Set = new DataSet ();
-			Mom = new DataTable ("Mom");
-			Child = new DataTable ("Child");
-			Set.Tables.Add (Mom);
-			Set.Tables.Add (Child);
-			
-			DataColumn Col = new DataColumn ("Name");
-			DataColumn Col2 = new DataColumn ("ChildName");
-			Mom.Columns.Add (Col);
-			Mom.Columns.Add (Col2);
-			
-			DataColumn Col3 = new DataColumn ("Name");
-			DataColumn Col4 = new DataColumn ("Age");
-			Col4.DataType = Type.GetType ("System.Int16");
-			Child.Columns.Add (Col3);
-			Child.Columns.Add (Col4);
-		}  
-
-		[Test]
-		public void Foreign ()
-		{
-			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
-			Set.Relations.Add (Relation);
-
-			DataRow Row = Mom.NewRow ();
-			Row [0] = "Teresa";
-			Row [1] = "Jack";
-			Mom.Rows.Add (Row);
-                	
-			Row = Mom.NewRow ();
-			Row [0] = "Teresa";
-			Row [1] = "Dick";
-			Mom.Rows.Add (Row);
-                	
-			Row = Mom.NewRow ();
-			Row [0] = "Mary";
-			Row [1] = "Harry";
-                	
-			Row = Child.NewRow ();
-			Row [0] = "Jack";
-			Row [1] = 16;
-			Child.Rows.Add (Row);
-                	
-			Row = Child.NewRow ();
-			Row [0] = "Dick";
-			Row [1] = 56;
-			Child.Rows.Add (Row);
-                	
-			Assert.That (Child.Rows.Count, Is.EqualTo (2), "test#01");
-                	
-			Row = Mom.Rows [0];
-			Row.Delete ();
-                	
-			Assert.That (Child.Rows.Count, Is.EqualTo (1), "test#02");
-                	
-			Row = Mom.NewRow ();
-			Row [0] = "Teresa";
-			Row [1] = "Dick";
-                	
-			try {
-				Mom.Rows.Add (Row);
-				Assert.Fail ("test#03");
-			} catch (Exception e) {
-				Assert.That (e, Is.TypeOf (typeof(ConstraintException)), "test#04");
-				// Never premise English.
-				//Assert.That (e.Message, Is.EqualTo("Column 'ChildName' is constrained to be unique.  Value 'Dick' is already present."), "test#05");
-			}                	
-
-			Row = Mom.NewRow ();                                 
-			Row [0] = "Teresa";                                  
-			Row [1] = "Mich";                                    
-			Mom.Rows.Add (Row);                                  
-			Assert.That (Child.Rows.Count, Is.EqualTo (1), "test#06");
-			
-			Row = Child.NewRow ();                               
-			Row [0] = "Jack";                                    
-			Row [1] = 16;                                        
-			
-			try {                                                
-				Child.Rows.Add (Row);                               
-				Assert.Fail ("test#07");
-			} catch (Exception e) {                              
-				Assert.That (e, Is.TypeOf (typeof(InvalidConstraintException)), "test#08");
-			}                                                    
-		}
-
-		[Test]
-		[ExpectedException (typeof(InvalidConstraintException))]
-		public void InvalidConstraintException ()
-		{
-			// Parent Columns and Child Columns don't have type-matching columns.
-			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [1], true);
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidConstraintException))]
-		public void InvalidConstraintException2 ()
-		{
-			// Parent Columns and Child Columns don't have type-matching columns.
-			Child.Columns [1].DataType = Mom.Columns [1].DataType;
-			
-			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [1], true);
-			Set.Relations.Add (Relation);
-			Assert.That (Set.Relations.Count, Is.EqualTo (1), "test#01");
-			
-			Child.Columns [1].DataType = Type.GetType ("System.Double");
-		}
-
-		[Test]
-		public void DataSetRelations ()
-		{
-			DataRelation Relation;
-			Assert.That (Set.Relations.Count, Is.EqualTo (0), "test#01");
-			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#02");
-			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (0), "test#03");
-			Assert.That (Child.ParentRelations.Count, Is.EqualTo (0), "test#04");
-			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#05");
-			
-			Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
-			Set.Relations.Add (Relation);
-			
-			Assert.That (Set.Relations.Count, Is.EqualTo (1), "test#06");
-			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#07");
-			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#08");
-			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#09");
-			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#10");
-						
-			Relation = Set.Relations [0];
-			Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#11");
-			Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#12");
-			Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#13");
-			Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#14");
-		}
-
-		[Test]
-		public void Constraints ()
-		{
-			Assert.That (Mom.Constraints.Count, Is.EqualTo (0), "test#01");
-			Assert.That (Child.Constraints.Count, Is.EqualTo (0), "test#02");
-
-			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
-			Set.Relations.Add (Relation);
-			
-			Assert.That (Mom.Constraints.Count, Is.EqualTo (1), "test#03");
-			Assert.That (Child.Constraints.Count, Is.EqualTo (1), "test#04");
-			Assert.That (Child.Constraints [0], Is.TypeOf (typeof(ForeignKeyConstraint)), "test#05");
-			Assert.That (Mom.Constraints [0], Is.TypeOf (typeof(UniqueConstraint)), "test#06");
-		}
-
-		[Test]
-		public void Creation ()
-		{
-			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
-			Set.Relations.Add (Relation);
-			DataRelation Test = null;
-			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");
-			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");
-			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");
-			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");
-				
-			Test = Child.ParentRelations [0];
-			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
-			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
-			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
-			Assert.That (Test.ParentKeyConstraint.Columns.Length, Is.EqualTo (1), "test#08");
-			Assert.That (Test.ParentKeyConstraint.IsPrimaryKey, Is.False, "test#09");
-			Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");
-			Assert.That (Test.Nested, Is.False, "test#11");
-			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
-			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
-			Assert.That (Test.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#14");
-			Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");
-		}
-
-		[Test]
-		public void Creation2 ()
-		{
-			DataSet Set = new DataSet ();
-			DataTable Mom2 = new DataTable ("Mom");
-			DataTable Child2 = new DataTable ("Child");
-			DataTable Hubby = new DataTable ("Hubby");
-			Set.Tables.Add (Mom2);
-			Set.Tables.Add (Child2);
-			Set.Tables.Add (Hubby);
-						
-			DataColumn Col = new DataColumn ("Name");
-			DataColumn Col2 = new DataColumn ("ChildName");
-			DataColumn Col3 = new DataColumn ("hubby");
-			Mom2.Columns.Add (Col);
-			Mom2.Columns.Add (Col2);
-			Mom2.Columns.Add (Col3);
-			
-			DataColumn Col4 = new DataColumn ("Name");
-			DataColumn Col5 = new DataColumn ("Age");
-			DataColumn Col6 = new DataColumn ("father");
-			Child2.Columns.Add (Col4);
-			Child2.Columns.Add (Col5);
-			Child2.Columns.Add (Col6);
-			
-			
-			DataColumn Col7 = new DataColumn ("Name");
-			DataColumn Col8 = new DataColumn ("Age");
-			Hubby.Columns.Add (Col7);
-			Hubby.Columns.Add (Col8);
-			
-			DataColumn [] Parents = new DataColumn [2];
-			Parents [0] = Col2;
-			Parents [1] = Col3;
-			DataColumn [] Childs = new DataColumn [2];
-			Childs [0] = Col4;
-			Childs [1] = Col7;
-			
-			DataRelation Relation = null;
-			try {
-				Relation = new DataRelation ("Rel", Parents, Childs);
-				Assert.Fail ("test#01");
-			} catch (InvalidConstraintException e) {
-//				Assert.That (e.GetType (), Is.EqualTo(typeof (InvalidConstraintException)), "test#02");				
-//				Assert.That (e.Message, Is.EqualTo("Cannot create a Key from Columns that belong to different tables."), "test#03");
-			}
-			
-			Childs [1] = Col6;
-			Relation = new DataRelation ("Rel", Parents, Childs);
-			
-			Set.Relations.Add (Relation);
-			
-			DataRelation Test = null;
-			Assert.That (Mom2.ChildRelations.Count, Is.EqualTo (1), "test#01");
-			Assert.That (Child2.ChildRelations.Count, Is.EqualTo (0), "test#02");
-			Assert.That (Mom2.ParentRelations.Count, Is.EqualTo (0), "test#03");
-			Assert.That (Child2.ParentRelations.Count, Is.EqualTo (1), "test#04");
-				
-			Test = Child2.ParentRelations [0];
-			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
-			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
-			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
-			Assert.That (Test.ParentKeyConstraint.Columns.Length, Is.EqualTo (2), "test#08");
-			Assert.That (Test.ParentKeyConstraint.IsPrimaryKey, Is.False, "test#09");
-			Assert.That (Test.ParentColumns.Length, Is.EqualTo (2), "test#10");
-			Assert.That (Test.Nested, Is.False, "test#11");
-			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
-			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
-			Assert.That (Test.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#14");
-			Assert.That (Test.ChildColumns.Length, Is.EqualTo (2), "test#15");
-			Assert.That (Mom2.Constraints.Count, Is.EqualTo (1), "test#16");
-			Assert.That (Mom2.Constraints [0].ToString (), Is.EqualTo ("Constraint1"), "test#17");
-			Assert.That (Child2.Constraints.Count, Is.EqualTo (1), "test#18");
-			Assert.That (Hubby.Constraints.Count, Is.EqualTo (0), "test#19");
-		}
-
-		[Test]
-		public void Creation3 ()
-		{
-			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0], false);
-			Set.Relations.Add (Relation);
-			DataRelation Test = null;
-	
-			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");
-			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");
-			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");
-			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");
-
-			Test = Child.ParentRelations [0];
-			
-			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
-
-			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
-			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
-
-			Assert.That (Test.ParentKeyConstraint, Is.Null, "test#08");
-
-			Assert.That (Test.ParentKeyConstraint, Is.Null, "test#09");
-
-			Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");
-			Assert.That (Test.Nested, Is.False, "test#11");
-			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
-			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
-
-			Assert.That (Test.ChildKeyConstraint, Is.Null, "test#14");
-			Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");
-			Assert.That (Mom.Constraints.Count, Is.EqualTo (0), "test#16");
-			Assert.That (Child.Constraints.Count, Is.EqualTo (0), "test#17");
-		}
-
-		[Test]
-		public void Creation4 ()
-		{
-			DataRelation Relation = new DataRelation ("Rel", "Mom", "Child", 
-			                                          new string [] {"ChildName"},
-			                                          new string [] {"Name"}, true);
-			
-			try {
-				Set.Relations.Add (Relation);
-				Assert.Fail ("test#01");
-			} catch (Exception e) {
-				Assert.That (e, Is.TypeOf (typeof(NullReferenceException)), "test#02");
-			}
-			
-			try {
-				Set.Relations.AddRange (new DataRelation [] {Relation});
-				Assert.Fail ("test#03");
-			} catch (Exception e) {
-				Assert.That (e, Is.TypeOf (typeof(NullReferenceException)), "test#04");
-			}
-			
-			Set.BeginInit ();
-			Set.Relations.AddRange (new DataRelation [] {Relation});
-			Set.EndInit ();
-			
-			DataRelation Test = null;
-			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");
-			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");
-			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");
-			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");
-				
-			Test = Child.ParentRelations [0];
-			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
-			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
-			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
-			
-			Assert.That (Test.ParentKeyConstraint, Is.Null, "test#08");
-						
-			Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");
-			Assert.That (Test.Nested, Is.True, "test#11");
-			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
-			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
-			Assert.That (Test.ChildKeyConstraint, Is.Null, "test#14");
-			Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");
-			
-		}
-
-		[Test]
-		public void RelationFromSchema ()
-		{
-			DataSet Set = new DataSet ();
-			Set.ReadXmlSchema ("Test/System.Data/store.xsd");
-			DataTable Table = Set.Tables [0];
-			
-			Assert.That (Table.CaseSensitive, Is.False, "test#01");
-			Assert.That (Table.ChildRelations.Count, Is.EqualTo (1), "test#02");
-			Assert.That (Table.ParentRelations.Count, Is.EqualTo (0), "test#03");
-			Assert.That (Table.Constraints.Count, Is.EqualTo (1), "test#04");
-			Assert.That (Table.PrimaryKey.Length, Is.EqualTo (1), "test#05");
-			Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#06");
-			Assert.That (Table.TableName, Is.EqualTo ("bookstore"), "test#07");
-			Assert.That (Table.Columns.Count, Is.EqualTo (1), "test#08");
-						
-			DataRelation Relation = Table.ChildRelations [0];
-			Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#09");
-			Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("bookstore_book"), "test#10");
-			Assert.That (Relation.ChildKeyConstraint.Columns.Length, Is.EqualTo (1), "test#11");
-			Assert.That (Relation.ChildTable.TableName, Is.EqualTo ("book"), "test#12");
-			Assert.That (Relation.DataSet.DataSetName, Is.EqualTo ("NewDataSet"), "test#13");
-			Assert.That (Relation.ExtendedProperties.Count, Is.EqualTo (0), "test#14");
-			Assert.That (Relation.Nested, Is.True, "test#15");
-			Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#16");
-			Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#17");
-			Assert.That (Relation.ParentTable.TableName, Is.EqualTo ("bookstore"), "test#18");
-			Assert.That (Relation.RelationName, Is.EqualTo ("bookstore_book"), "test#19");
-
-			Table = Set.Tables [1];
-			
-			Assert.That (Table.CaseSensitive, Is.False, "test#20");
-			Assert.That (Table.ChildRelations.Count, Is.EqualTo (1), "test#21");
-			Assert.That (Table.ParentRelations.Count, Is.EqualTo (1), "test#22");
-			Assert.That (Table.Constraints.Count, Is.EqualTo (2), "test#23");
-			Assert.That (Table.PrimaryKey.Length, Is.EqualTo (1), "test#24");
-			Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#25");
-			Assert.That (Table.TableName, Is.EqualTo ("book"), "test#26");
-			Assert.That (Table.Columns.Count, Is.EqualTo (5), "test#27");
-		
-			Relation = Table.ChildRelations [0];
-			Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#28");
-			Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("book_author"), "test#29");
-			Assert.That (Relation.ChildKeyConstraint.Columns.Length, Is.EqualTo (1), "test#30");
-			Assert.That (Relation.ChildTable.TableName, Is.EqualTo ("author"), "test#31");
-			Assert.That (Relation.DataSet.DataSetName, Is.EqualTo ("NewDataSet"), "test#32");
-			Assert.That (Relation.ExtendedProperties.Count, Is.EqualTo (0), "test#33");
-			Assert.That (Relation.Nested, Is.True, "test#34");
-			Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#35");
-			Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#36");
-			Assert.That (Relation.ParentTable.TableName, Is.EqualTo ("book"), "test#37");
-			Assert.That (Relation.RelationName, Is.EqualTo ("book_author"), "test#38");
-			
-			Table = Set.Tables [2];
-			Assert.That (Table.CaseSensitive, Is.False, "test#39");
-			Assert.That (Table.ChildRelations.Count, Is.EqualTo (0), "test#40");
-			Assert.That (Table.ParentRelations.Count, Is.EqualTo (1), "test#41");
-			Assert.That (Table.Constraints.Count, Is.EqualTo (1), "test#42");
-			Assert.That (Table.PrimaryKey.Length, Is.EqualTo (0), "test#43");
-			Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#44");
-			Assert.That (Table.TableName, Is.EqualTo ("author"), "test#45");
-			Assert.That (Table.Columns.Count, Is.EqualTo (3), "test#46");
-		}
-
-		[Test]
-		public void ChildRows ()
-		{
-			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
-			Set.Relations.Add (Relation);
-			
-			DataRow TempRow = Mom.NewRow ();
-			TempRow [0] = "teresa";
-			TempRow [1] = "john";
-			Mom.Rows.Add (TempRow);
-			
-			TempRow = Mom.NewRow ();
-			TempRow [0] = "teresa";
-			TempRow [1] = "Dick";
-			Mom.Rows.Add (TempRow);
-						
-			TempRow = Child.NewRow ();
-			TempRow [0] = "john";
-			TempRow [1] = "15";
-			Child.Rows.Add (TempRow);
-			
-			TempRow = Child.NewRow ();
-			TempRow [0] = "Dick";
-			TempRow [1] = "10";
-			Child.Rows.Add (TempRow);
-			
-			DataRow Row = Mom.Rows [1];			
-			TempRow = Row.GetChildRows ("Rel") [0];
-			Assert.That (TempRow [0], Is.EqualTo ("Dick"), "test#01");
-			Assert.That (TempRow [1].ToString (), Is.EqualTo ("10"), "test#02");
-			TempRow = TempRow.GetParentRow ("Rel");
-			Assert.That (TempRow [0], Is.EqualTo ("teresa"), "test#03");
-			Assert.That (TempRow [1], Is.EqualTo ("Dick"), "test#04");
-			
-			Row = Child.Rows [0];
-			TempRow = Row.GetParentRows ("Rel") [0];
-			Assert.That (TempRow [0], Is.EqualTo ("teresa"), "test#05");
-			Assert.That (TempRow [1], Is.EqualTo ("john"), "test#06");						
-		}
-	}
-}
+//
+// DataRelationTest.cs - NUnit Test Cases for  DataRelation
+//
+// Authors:
+//   Ville Palo (vi64pa@koti.soon.fi)
+//   Martin Willemoes Hansen (mwh@sysrq.dk)
+//
+// (C) 2003 Ville Palo
+// (C) 2003 Martin Willemoes Hansen
+// 
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using NUnit.Framework;
+using System;
+using System.Data;
+#if !MOBILE
+using NUnit.Framework.SyntaxHelpers;
+#endif
+
+namespace MonoTests.System.Data
+{
+	[TestFixture]
+	public class DataRelationTest
+	{
+		private DataSet Set = null;
+		private DataTable Mom = null;
+		private DataTable Child = null;        	
+
+		[SetUp]
+		public void GetReady ()
+		{
+			Set = new DataSet ();
+			Mom = new DataTable ("Mom");
+			Child = new DataTable ("Child");
+			Set.Tables.Add (Mom);
+			Set.Tables.Add (Child);
+			
+			DataColumn Col = new DataColumn ("Name");
+			DataColumn Col2 = new DataColumn ("ChildName");
+			Mom.Columns.Add (Col);
+			Mom.Columns.Add (Col2);
+			
+			DataColumn Col3 = new DataColumn ("Name");
+			DataColumn Col4 = new DataColumn ("Age");
+			Col4.DataType = Type.GetType ("System.Int16");
+			Child.Columns.Add (Col3);
+			Child.Columns.Add (Col4);
+		}  
+
+		[Test]
+		public void Foreign ()
+		{
+			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
+			Set.Relations.Add (Relation);
+
+			DataRow Row = Mom.NewRow ();
+			Row [0] = "Teresa";
+			Row [1] = "Jack";
+			Mom.Rows.Add (Row);
+                	
+			Row = Mom.NewRow ();
+			Row [0] = "Teresa";
+			Row [1] = "Dick";
+			Mom.Rows.Add (Row);
+                	
+			Row = Mom.NewRow ();
+			Row [0] = "Mary";
+			Row [1] = "Harry";
+                	
+			Row = Child.NewRow ();
+			Row [0] = "Jack";
+			Row [1] = 16;
+			Child.Rows.Add (Row);
+                	
+			Row = Child.NewRow ();
+			Row [0] = "Dick";
+			Row [1] = 56;
+			Child.Rows.Add (Row);
+                	
+			Assert.That (Child.Rows.Count, Is.EqualTo (2), "test#01");
+                	
+			Row = Mom.Rows [0];
+			Row.Delete ();
+                	
+			Assert.That (Child.Rows.Count, Is.EqualTo (1), "test#02");
+                	
+			Row = Mom.NewRow ();
+			Row [0] = "Teresa";
+			Row [1] = "Dick";
+                	
+			try {
+				Mom.Rows.Add (Row);
+				Assert.Fail ("test#03");
+			} catch (Exception e) {
+				Assert.That (e, Is.TypeOf (typeof(ConstraintException)), "test#04");
+				// Never premise English.
+				//Assert.That (e.Message, Is.EqualTo("Column 'ChildName' is constrained to be unique.  Value 'Dick' is already present."), "test#05");
+			}                	
+
+			Row = Mom.NewRow ();                                 
+			Row [0] = "Teresa";                                  
+			Row [1] = "Mich";                                    
+			Mom.Rows.Add (Row);                                  
+			Assert.That (Child.Rows.Count, Is.EqualTo (1), "test#06");
+			
+			Row = Child.NewRow ();                               
+			Row [0] = "Jack";                                    
+			Row [1] = 16;                                        
+			
+			try {                                                
+				Child.Rows.Add (Row);                               
+				Assert.Fail ("test#07");
+			} catch (Exception e) {                              
+				Assert.That (e, Is.TypeOf (typeof(InvalidConstraintException)), "test#08");
+			}                                                    
+		}
+
+		[Test]
+		[ExpectedException (typeof(InvalidConstraintException))]
+		public void InvalidConstraintException ()
+		{
+			// Parent Columns and Child Columns don't have type-matching columns.
+			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [1], true);
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidConstraintException))]
+		public void InvalidConstraintException2 ()
+		{
+			// Parent Columns and Child Columns don't have type-matching columns.
+			Child.Columns [1].DataType = Mom.Columns [1].DataType;
+			
+			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [1], true);
+			Set.Relations.Add (Relation);
+			Assert.That (Set.Relations.Count, Is.EqualTo (1), "test#01");
+			
+			Child.Columns [1].DataType = Type.GetType ("System.Double");
+		}
+
+		[Test]
+		public void DataSetRelations ()
+		{
+			DataRelation Relation;
+			Assert.That (Set.Relations.Count, Is.EqualTo (0), "test#01");
+			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#02");
+			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (0), "test#03");
+			Assert.That (Child.ParentRelations.Count, Is.EqualTo (0), "test#04");
+			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#05");
+			
+			Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
+			Set.Relations.Add (Relation);
+			
+			Assert.That (Set.Relations.Count, Is.EqualTo (1), "test#06");
+			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#07");
+			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#08");
+			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#09");
+			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#10");
+						
+			Relation = Set.Relations [0];
+			Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#11");
+			Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#12");
+			Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#13");
+			Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#14");
+		}
+
+		[Test]
+		public void Constraints ()
+		{
+			Assert.That (Mom.Constraints.Count, Is.EqualTo (0), "test#01");
+			Assert.That (Child.Constraints.Count, Is.EqualTo (0), "test#02");
+
+			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
+			Set.Relations.Add (Relation);
+			
+			Assert.That (Mom.Constraints.Count, Is.EqualTo (1), "test#03");
+			Assert.That (Child.Constraints.Count, Is.EqualTo (1), "test#04");
+			Assert.That (Child.Constraints [0], Is.TypeOf (typeof(ForeignKeyConstraint)), "test#05");
+			Assert.That (Mom.Constraints [0], Is.TypeOf (typeof(UniqueConstraint)), "test#06");
+		}
+
+		[Test]
+		public void Creation ()
+		{
+			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
+			Set.Relations.Add (Relation);
+			DataRelation Test = null;
+			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");
+			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");
+			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");
+			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");
+				
+			Test = Child.ParentRelations [0];
+			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
+			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
+			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
+			Assert.That (Test.ParentKeyConstraint.Columns.Length, Is.EqualTo (1), "test#08");
+			Assert.That (Test.ParentKeyConstraint.IsPrimaryKey, Is.False, "test#09");
+			Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");
+			Assert.That (Test.Nested, Is.False, "test#11");
+			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
+			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
+			Assert.That (Test.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#14");
+			Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");
+		}
+
+		[Test]
+		public void Creation2 ()
+		{
+			DataSet Set = new DataSet ();
+			DataTable Mom2 = new DataTable ("Mom");
+			DataTable Child2 = new DataTable ("Child");
+			DataTable Hubby = new DataTable ("Hubby");
+			Set.Tables.Add (Mom2);
+			Set.Tables.Add (Child2);
+			Set.Tables.Add (Hubby);
+						
+			DataColumn Col = new DataColumn ("Name");
+			DataColumn Col2 = new DataColumn ("ChildName");
+			DataColumn Col3 = new DataColumn ("hubby");
+			Mom2.Columns.Add (Col);
+			Mom2.Columns.Add (Col2);
+			Mom2.Columns.Add (Col3);
+			
+			DataColumn Col4 = new DataColumn ("Name");
+			DataColumn Col5 = new DataColumn ("Age");
+			DataColumn Col6 = new DataColumn ("father");
+			Child2.Columns.Add (Col4);
+			Child2.Columns.Add (Col5);
+			Child2.Columns.Add (Col6);
+			
+			
+			DataColumn Col7 = new DataColumn ("Name");
+			DataColumn Col8 = new DataColumn ("Age");
+			Hubby.Columns.Add (Col7);
+			Hubby.Columns.Add (Col8);
+			
+			DataColumn [] Parents = new DataColumn [2];
+			Parents [0] = Col2;
+			Parents [1] = Col3;
+			DataColumn [] Childs = new DataColumn [2];
+			Childs [0] = Col4;
+			Childs [1] = Col7;
+			
+			DataRelation Relation = null;
+			try {
+				Relation = new DataRelation ("Rel", Parents, Childs);
+				Assert.Fail ("test#01");
+			} catch (InvalidConstraintException e) {
+//				Assert.That (e.GetType (), Is.EqualTo(typeof (InvalidConstraintException)), "test#02");				
+//				Assert.That (e.Message, Is.EqualTo("Cannot create a Key from Columns that belong to different tables."), "test#03");
+			}
+			
+			Childs [1] = Col6;
+			Relation = new DataRelation ("Rel", Parents, Childs);
+			
+			Set.Relations.Add (Relation);
+			
+			DataRelation Test = null;
+			Assert.That (Mom2.ChildRelations.Count, Is.EqualTo (1), "test#01");
+			Assert.That (Child2.ChildRelations.Count, Is.EqualTo (0), "test#02");
+			Assert.That (Mom2.ParentRelations.Count, Is.EqualTo (0), "test#03");
+			Assert.That (Child2.ParentRelations.Count, Is.EqualTo (1), "test#04");
+				
+			Test = Child2.ParentRelations [0];
+			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
+			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
+			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
+			Assert.That (Test.ParentKeyConstraint.Columns.Length, Is.EqualTo (2), "test#08");
+			Assert.That (Test.ParentKeyConstraint.IsPrimaryKey, Is.False, "test#09");
+			Assert.That (Test.ParentColumns.Length, Is.EqualTo (2), "test#10");
+			Assert.That (Test.Nested, Is.False, "test#11");
+			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
+			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
+			Assert.That (Test.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#14");
+			Assert.That (Test.ChildColumns.Length, Is.EqualTo (2), "test#15");
+			Assert.That (Mom2.Constraints.Count, Is.EqualTo (1), "test#16");
+			Assert.That (Mom2.Constraints [0].ToString (), Is.EqualTo ("Constraint1"), "test#17");
+			Assert.That (Child2.Constraints.Count, Is.EqualTo (1), "test#18");
+			Assert.That (Hubby.Constraints.Count, Is.EqualTo (0), "test#19");
+		}
+
+		[Test]
+		public void Creation3 ()
+		{
+			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0], false);
+			Set.Relations.Add (Relation);
+			DataRelation Test = null;
+	
+			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");
+			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");
+			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");
+			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");
+
+			Test = Child.ParentRelations [0];
+			
+			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
+
+			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
+			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
+
+			Assert.That (Test.ParentKeyConstraint, Is.Null, "test#08");
+
+			Assert.That (Test.ParentKeyConstraint, Is.Null, "test#09");
+
+			Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");
+			Assert.That (Test.Nested, Is.False, "test#11");
+			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
+			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
+
+			Assert.That (Test.ChildKeyConstraint, Is.Null, "test#14");
+			Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");
+			Assert.That (Mom.Constraints.Count, Is.EqualTo (0), "test#16");
+			Assert.That (Child.Constraints.Count, Is.EqualTo (0), "test#17");
+		}
+
+		[Test]
+		public void Creation4 ()
+		{
+			DataRelation Relation = new DataRelation ("Rel", "Mom", "Child", 
+			                                          new string [] {"ChildName"},
+			                                          new string [] {"Name"}, true);
+			
+			try {
+				Set.Relations.Add (Relation);
+				Assert.Fail ("test#01");
+			} catch (Exception e) {
+				Assert.That (e, Is.TypeOf (typeof(NullReferenceException)), "test#02");
+			}
+			
+			try {
+				Set.Relations.AddRange (new DataRelation [] {Relation});
+				Assert.Fail ("test#03");
+			} catch (Exception e) {
+				Assert.That (e, Is.TypeOf (typeof(NullReferenceException)), "test#04");
+			}
+			
+			Set.BeginInit ();
+			Set.Relations.AddRange (new DataRelation [] {Relation});
+			Set.EndInit ();
+			
+			DataRelation Test = null;
+			Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");
+			Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");
+			Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");
+			Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");
+				
+			Test = Child.ParentRelations [0];
+			Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");
+			Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");
+			Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");
+			
+			Assert.That (Test.ParentKeyConstraint, Is.Null, "test#08");
+						
+			Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");
+			Assert.That (Test.Nested, Is.True, "test#11");
+			Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");
+			Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");
+			Assert.That (Test.ChildKeyConstraint, Is.Null, "test#14");
+			Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");
+			
+		}
+
+		[Test]
+		public void RelationFromSchema ()
+		{
+			DataSet Set = new DataSet ();
+			Set.ReadXmlSchema ("Test/System.Data/store.xsd");
+			DataTable Table = Set.Tables [0];
+			
+			Assert.That (Table.CaseSensitive, Is.False, "test#01");
+			Assert.That (Table.ChildRelations.Count, Is.EqualTo (1), "test#02");
+			Assert.That (Table.ParentRelations.Count, Is.EqualTo (0), "test#03");
+			Assert.That (Table.Constraints.Count, Is.EqualTo (1), "test#04");
+			Assert.That (Table.PrimaryKey.Length, Is.EqualTo (1), "test#05");
+			Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#06");
+			Assert.That (Table.TableName, Is.EqualTo ("bookstore"), "test#07");
+			Assert.That (Table.Columns.Count, Is.EqualTo (1), "test#08");
+						
+			DataRelation Relation = Table.ChildRelations [0];
+			Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#09");
+			Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("bookstore_book"), "test#10");
+			Assert.That (Relation.ChildKeyConstraint.Columns.Length, Is.EqualTo (1), "test#11");
+			Assert.That (Relation.ChildTable.TableName, Is.EqualTo ("book"), "test#12");
+			Assert.That (Relation.DataSet.DataSetName, Is.EqualTo ("NewDataSet"), "test#13");
+			Assert.That (Relation.ExtendedProperties.Count, Is.EqualTo (0), "test#14");
+			Assert.That (Relation.Nested, Is.True, "test#15");
+			Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#16");
+			Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#17");
+			Assert.That (Relation.ParentTable.TableName, Is.EqualTo ("bookstore"), "test#18");
+			Assert.That (Relation.RelationName, Is.EqualTo ("bookstore_book"), "test#19");
+
+			Table = Set.Tables [1];
+			
+			Assert.That (Table.CaseSensitive, Is.False, "test#20");
+			Assert.That (Table.ChildRelations.Count, Is.EqualTo (1), "test#21");
+			Assert.That (Table.ParentRelations.Count, Is.EqualTo (1), "test#22");
+			Assert.That (Table.Constraints.Count, Is.EqualTo (2), "test#23");
+			Assert.That (Table.PrimaryKey.Length, Is.EqualTo (1), "test#24");
+			Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#25");
+			Assert.That (Table.TableName, Is.EqualTo ("book"), "test#26");
+			Assert.That (Table.Columns.Count, Is.EqualTo (5), "test#27");
+		
+			Relation = Table.ChildRelations [0];
+			Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#28");
+			Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("book_author"), "test#29");
+			Assert.That (Relation.ChildKeyConstraint.Columns.Length, Is.EqualTo (1), "test#30");
+			Assert.That (Relation.ChildTable.TableName, Is.EqualTo ("author"), "test#31");
+			Assert.That (Relation.DataSet.DataSetName, Is.EqualTo ("NewDataSet"), "test#32");
+			Assert.That (Relation.ExtendedProperties.Count, Is.EqualTo (0), "test#33");
+			Assert.That (Relation.Nested, Is.True, "test#34");
+			Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#35");
+			Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#36");
+			Assert.That (Relation.ParentTable.TableName, Is.EqualTo ("book"), "test#37");
+			Assert.That (Relation.RelationName, Is.EqualTo ("book_author"), "test#38");
+			
+			Table = Set.Tables [2];
+			Assert.That (Table.CaseSensitive, Is.False, "test#39");
+			Assert.That (Table.ChildRelations.Count, Is.EqualTo (0), "test#40");
+			Assert.That (Table.ParentRelations.Count, Is.EqualTo (1), "test#41");
+			Assert.That (Table.Constraints.Count, Is.EqualTo (1), "test#42");
+			Assert.That (Table.PrimaryKey.Length, Is.EqualTo (0), "test#43");
+			Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#44");
+			Assert.That (Table.TableName, Is.EqualTo ("author"), "test#45");
+			Assert.That (Table.Columns.Count, Is.EqualTo (3), "test#46");
+		}
+
+		[Test]
+		public void ChildRows ()
+		{
+			DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);
+			Set.Relations.Add (Relation);
+			
+			DataRow TempRow = Mom.NewRow ();
+			TempRow [0] = "teresa";
+			TempRow [1] = "john";
+			Mom.Rows.Add (TempRow);
+			
+			TempRow = Mom.NewRow ();
+			TempRow [0] = "teresa";
+			TempRow [1] = "Dick";
+			Mom.Rows.Add (TempRow);
+						
+			TempRow = Child.NewRow ();
+			TempRow [0] = "john";
+			TempRow [1] = "15";
+			Child.Rows.Add (TempRow);
+			
+			TempRow = Child.NewRow ();
+			TempRow [0] = "Dick";
+			TempRow [1] = "10";
+			Child.Rows.Add (TempRow);
+			
+			DataRow Row = Mom.Rows [1];			
+			TempRow = Row.GetChildRows ("Rel") [0];
+			Assert.That (TempRow [0], Is.EqualTo ("Dick"), "test#01");
+			Assert.That (TempRow [1].ToString (), Is.EqualTo ("10"), "test#02");
+			TempRow = TempRow.GetParentRow ("Rel");
+			Assert.That (TempRow [0], Is.EqualTo ("teresa"), "test#03");
+			Assert.That (TempRow [1], Is.EqualTo ("Dick"), "test#04");
+			
+			Row = Child.Rows [0];
+			TempRow = Row.GetParentRows ("Rel") [0];
+			Assert.That (TempRow [0], Is.EqualTo ("teresa"), "test#05");
+			Assert.That (TempRow [1], Is.EqualTo ("john"), "test#06");						
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/DataSetReadXmlTest.cs
@@ -1,798 +1,798 @@
-//
-// DataSetReadXmlTest.cs
-//
-// Author:
-//	Atsushi Enomoto <atsushi@ximian.com>
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Xml.Serialization;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Data
-{
-	[TestFixture]
-	public class DataSetReadXmlTest : DataSetAssertion
-	{
-		const string xml1 = "";
-		const string xml2 = "<root/>";
-		const string xml3 = "<root></root>";
-		const string xml4 = "<root>   </root>";
-		const string xml5 = "<root>test</root>";
-		const string xml6 = "<root><test>1</test></root>";
-		const string xml7 = "<root><test>1</test><test2>a</test2></root>";
-		const string xml8 = "<dataset><table><col1>foo</col1><col2>bar</col2></table></dataset>";
-		const string xml29 = @"<PersonalSite><License Name='Sum Wang' Email='sumwang@somewhere.net' Mode='Trial' StartDate='01/01/2004' Serial='aaa' /></PersonalSite>";
-
-		const string diff1 = @"<diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1'>
-  <NewDataSet>
-    <Table1 diffgr:id='Table11' msdata:rowOrder='0' diffgr:hasChanges='inserted'>
-      <Column1_1>ppp</Column1_1>
-      <Column1_2>www</Column1_2>
-      <Column1_3>xxx</Column1_3>
-    </Table1>
-  </NewDataSet>
-</diffgr:diffgram>";
-		const string diff2 = diff1 + xml8;
-
-		const string schema1 = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-	<xs:element name='Root'>
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element name='Child' type='xs:string' />
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
-</xs:schema>";
-		const string schema2 = schema1 + xml8;
-
-		[Test]
-		public void ReadSimpleAuto ()
-		{
-			DataSet ds;
-
-			// empty XML
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyString", xml1,
-				XmlReadMode.Auto, XmlReadMode.Auto,
-				"NewDataSet", 0);
-
-			// simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyElement", xml2,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// simple element2
-			ds = new DataSet ();
-			AssertReadXml (ds, "StartEndTag", xml3,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// whitespace in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "Whitespace", xml4,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// text in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// simple table pattern:
-			// root becomes a table and test becomes a column.
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("xml6", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
-
-			// simple table with 2 columns:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable2", xml7,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("xml7", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
-
-			// simple dataset with 1 table:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleDataSet", xml8,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"dataset", 1);
-			AssertDataTable ("xml8", ds.Tables [0], "table", 2, 1, 0, 0, 0, 0);
-		}
-
-		[Test]
-		public void ReadSimpleDiffgram ()
-		{
-			DataSet ds;
-
-			// empty XML
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyString", xml1,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			// simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyElement", xml2,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			// simple element2
-			ds = new DataSet ();
-			AssertReadXml (ds, "StartEndTag", xml3,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			// whitespace in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "Whitespace", xml4,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			// text in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			// simple table pattern:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			// simple table with 2 columns:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable2", xml7,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			// simple dataset with 1 table:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleDataSet", xml8,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-		}
-
-		[Test]
-		public void ReadSimpleFragment ()
-		{
-			DataSet ds;
-
-			// empty XML
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyString", xml1,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyElement", xml2,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// simple element2
-			ds = new DataSet ();
-			AssertReadXml (ds, "StartEndTag", xml3,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// whitespace in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "Whitespace", xml4,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// text in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// simple table pattern:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// simple table with 2 columns:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable2", xml7,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// simple dataset with 1 table:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleDataSet", xml8,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-		}
-
-		[Test]
-		public void ReadSimpleIgnoreSchema ()
-		{
-			DataSet ds;
-
-			// empty XML
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyString", xml1,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			// simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyElement", xml2,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			// simple element2
-			ds = new DataSet ();
-			AssertReadXml (ds, "StartEndTag", xml3,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			// whitespace in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "Whitespace", xml4,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			// text in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			// simple table pattern:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			// simple table with 2 columns:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable2", xml7,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			// simple dataset with 1 table:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleDataSet", xml8,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-		}
-
-		[Test]
-		public void ReadSimpleInferSchema ()
-		{
-			DataSet ds;
-
-			// empty XML
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyString", xml1,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"NewDataSet", 0);
-
-			// simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyElement", xml2,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// simple element2
-			ds = new DataSet ();
-			AssertReadXml (ds, "StartEndTag", xml3,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// whitespace in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "Whitespace", xml4,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// text in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"root", 0);
-
-			// simple table pattern:
-			// root becomes a table and test becomes a column.
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("xml6", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
-
-			// simple table with 2 columns:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable2", xml7,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("xml7", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
-
-			// simple dataset with 1 table:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleDataSet", xml8,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"dataset", 1);
-			AssertDataTable ("xml8", ds.Tables [0], "table", 2, 1, 0, 0, 0, 0);
-		}
-
-		[Test]
-		public void ReadSimpleReadSchema ()
-		{
-			DataSet ds;
-
-			// empty XML
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyString", xml1,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "EmptyElement", xml2,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// simple element2
-			ds = new DataSet ();
-			AssertReadXml (ds, "StartEndTag", xml3,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// whitespace in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "Whitespace", xml4,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// text in simple element
-			ds = new DataSet ();
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// simple table pattern:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// simple table with 2 columns:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleTable2", xml7,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// simple dataset with 1 table:
-			ds = new DataSet ();
-			AssertReadXml (ds, "SimpleDataSet", xml8,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-		}
-
-		[Test]
-		public void TestSimpleDiffXmlAll ()
-		{
-			DataSet ds;
-
-			// ignored
-			ds = new DataSet ();
-			AssertReadXml (ds, "Fragment", diff1,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "IgnoreSchema", diff1,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "InferSchema", diff1,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"NewDataSet", 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "ReadSchema", diff1,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0);
-
-			// Auto, DiffGram ... treated as DiffGram
-			ds = new DataSet ();
-			AssertReadXml (ds, "Auto", diff1,
-				XmlReadMode.Auto, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "DiffGram", diff1,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0);
-		}
-
-		[Test]
-		public void TestSimpleDiffPlusContentAll ()
-		{
-			DataSet ds;
-
-			// Fragment ... skipped
-			ds = new DataSet ();
-			AssertReadXml (ds, "Fragment", diff2,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 0);
-
-			// others ... kept 
-			ds = new DataSet ();
-			AssertReadXml (ds, "IgnoreSchema", diff2,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0, ReadState.Interactive);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "InferSchema", diff2,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"NewDataSet", 0, ReadState.Interactive);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "ReadSchema", diff2,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 0, ReadState.Interactive);
-
-			// Auto, DiffGram ... treated as DiffGram
-			ds = new DataSet ();
-			AssertReadXml (ds, "Auto", diff2,
-				XmlReadMode.Auto, XmlReadMode.DiffGram,
-				"NewDataSet", 0, ReadState.Interactive);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "DiffGram", diff2,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 0, ReadState.Interactive);
-		}
-
-		[Test]
-		public void TestSimpleSchemaXmlAll ()
-		{
-			DataSet ds;
-
-			// ignored
-			ds = new DataSet ();
-			AssertReadXml (ds, "IgnoreSchema", schema1,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "InferSchema", schema1,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"NewDataSet", 0);
-
-			// misc ... consume schema
-			ds = new DataSet ();
-			AssertReadXml (ds, "Fragment", schema1,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 1);
-			AssertDataTable ("fragment", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "ReadSchema", schema1,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("readschema", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "Auto", schema1,
-				XmlReadMode.Auto, XmlReadMode.ReadSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("auto", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "DiffGram", schema1,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 1);
-		}
-
-		[Test]
-		public void TestSimpleSchemaPlusContentAll ()
-		{
-			DataSet ds;
-
-			// ignored
-			ds = new DataSet ();
-			AssertReadXml (ds, "IgnoreSchema", schema2,
-				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 0, ReadState.Interactive);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "InferSchema", schema2,
-				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
-				"NewDataSet", 0, ReadState.Interactive);
-
-			// Fragment ... consumed both
-			ds = new DataSet ();
-			AssertReadXml (ds, "Fragment", schema2,
-				XmlReadMode.Fragment, XmlReadMode.Fragment,
-				"NewDataSet", 1);
-			AssertDataTable ("fragment", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
-
-			// rest ... treated as schema
-			ds = new DataSet ();
-			AssertReadXml (ds, "Auto", schema2,
-				XmlReadMode.Auto, XmlReadMode.ReadSchema,
-				"NewDataSet", 1, ReadState.Interactive);
-			AssertDataTable ("auto", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "DiffGram", schema2,
-				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
-				"NewDataSet", 1, ReadState.Interactive);
-			AssertDataTable ("diffgram", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
-
-			ds = new DataSet ();
-			AssertReadXml (ds, "ReadSchema", schema2,
-				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
-				"NewDataSet", 1, ReadState.Interactive);
-		}
-
-		[Test]
-		public void SequentialRead1 ()
-		{
-			// simple element -> simple table
-			DataSet ds = new DataSet ();
-
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"root", 0);
-
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("seq1", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
-		}
-
-		[Test]
-		public void SequentialRead2 ()
-		{
-			// simple element -> simple dataset
-			DataSet ds = new DataSet ();
-
-			AssertReadXml (ds, "SingleText", xml5,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"root", 0);
-
-			AssertReadXml (ds, "SimpleTable2", xml7,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("#1", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
-
-			// simple table -> simple dataset
-			ds = new DataSet ();
-
-			AssertReadXml (ds, "SimpleTable", xml6,
-				XmlReadMode.Auto, XmlReadMode.InferSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("#2", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
-
-			// Return value became IgnoreSchema, since there is
-			// already schema information in the dataset.
-			// Columns are kept 1 as old table holds.
-			// Rows are up to 2 because of accumulative read.
-			AssertReadXml (ds, "SimpleTable2-2", xml7,
-				XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 1);
-			AssertDataTable ("#3", ds.Tables [0], "root", 1, 2, 0, 0, 0, 0);
-
-		}
-
-		[Test] // based on bug case
-		public void ReadComplexElementDocument ()
-		{
-			DataSet ds = new DataSet ();
-			ds.ReadXml (new StringReader (xml29));
-		}
-
-		[Test]
-		public void IgnoreSchemaShouldFillData ()
-		{
-			// no such dataset
-			string xml1 = "<set><tab><col>test</col></tab></set>";
-			// no wrapper element
-			string xml2 = "<tab><col>test</col></tab>";
-			// no such table
-			string xml3 = "<tar><col>test</col></tar>";
-			DataSet ds = new DataSet ();
-			DataTable dt = new DataTable ("tab");
-			ds.Tables.Add (dt);
-			dt.Columns.Add ("col");
-			ds.ReadXml (new StringReader (xml1), XmlReadMode.IgnoreSchema);
-			AssertDataSet ("ds", ds, "NewDataSet", 1, 0);
-			Assert.AreEqual (1, dt.Rows.Count, "wrapper element");
-			dt.Clear ();
-
-			ds.ReadXml (new StringReader (xml2), XmlReadMode.IgnoreSchema);
-			Assert.AreEqual (1, dt.Rows.Count, "no wrapper element");
-			dt.Clear ();
-
-			ds.ReadXml (new StringReader (xml3), XmlReadMode.IgnoreSchema);
-			Assert.AreEqual (0, dt.Rows.Count, "no such table");
-		}
-
-		// bug #60118
-		[Test]
-		public void NameConflictDSAndTable ()
-		{
-			string xml = @"<PriceListDetails> 
-	<PriceListList>    
-		<Id>1</Id>
-	</PriceListList>
-	<PriceListDetails> 
-		<Id>1</Id>
-		<Status>0</Status>
-	</PriceListDetails>
-</PriceListDetails>";
-
-			DataSet ds = new DataSet ();
-			ds.ReadXml (new StringReader (xml));
-			Assert.IsNotNull (ds.Tables ["PriceListDetails"]);
-		}
-
-		[Test] // bug #80045
-		public void ColumnOrder ()
-		{
-			string xml = "<?xml version=\"1.0\" standalone=\"yes\"?>" +
-				"<NewDataSet>" +
-				"  <Table>" +
-				"    <Name>Miguel</Name>" +
-				"    <FirstName>de Icaza</FirstName>" +
-				"    <Income>4000</Income>" +
-				"  </Table>" +
-				"  <Table>" +
-				"    <Name>25</Name>" +
-				"    <FirstName>250</FirstName>" +
-				"    <Address>Belgium</Address>" +
-				"    <Income>5000</Income>" +
-				"</Table>" +
-				"</NewDataSet>";
-
-			DataSet ds = new DataSet ();
-			ds.ReadXml (new StringReader (xml));
-			Assert.AreEqual (1, ds.Tables.Count, "#1");
-			Assert.AreEqual ("Table", ds.Tables [0].TableName, "#2");
-			Assert.AreEqual (4, ds.Tables [0].Columns.Count, "#3");
-			Assert.AreEqual ("Name", ds.Tables [0].Columns [0].ColumnName, "#4a");
-			Assert.AreEqual (0, ds.Tables [0].Columns [0].Ordinal, "#4b");
-			Assert.AreEqual ("FirstName", ds.Tables [0].Columns [1].ColumnName, "#5a");
-			Assert.AreEqual (1, ds.Tables [0].Columns [1].Ordinal, "#5b");
-			Assert.AreEqual ("Address", ds.Tables [0].Columns [2].ColumnName, "#6a");
-			Assert.AreEqual (2, ds.Tables [0].Columns [2].Ordinal, "#6b");
-			Assert.AreEqual ("Income", ds.Tables [0].Columns [3].ColumnName, "#7a");
-			Assert.AreEqual (3, ds.Tables [0].Columns [3].Ordinal, "#7b");
-		}
-
-		[Test] // bug #80048
-		public void XmlSpace ()
-		{
-			string xml = "<?xml version=\"1.0\" standalone=\"yes\"?>" +
-				"<NewDataSet>" +
-				"  <Table>" +
-				"    <Name>Miguel</Name>" +
-				"    <FirstName xml:space=\"preserve\"> de Icaza</FirstName>" +
-				"    <Income>4000</Income>" +
-				"  </Table>" +
-				"  <Table>" +
-				"    <Name>Chris</Name>" +
-				"    <FirstName xml:space=\"preserve\">Toshok </FirstName>" +
-				"    <Income>3000</Income>" +
-				"  </Table>" +
-				"</NewDataSet>";
-
- 			DataSet ds = new DataSet ();
-			ds.ReadXml (new StringReader (xml));
-			Assert.AreEqual (1, ds.Tables.Count, "#1");
-			Assert.AreEqual ("Table", ds.Tables [0].TableName, "#2");
-			Assert.AreEqual (3, ds.Tables [0].Columns.Count, "#3");
-			Assert.AreEqual ("Name", ds.Tables [0].Columns [0].ColumnName, "#4a");
-			Assert.AreEqual (0, ds.Tables [0].Columns [0].Ordinal, "#4b");
-			Assert.AreEqual ("FirstName", ds.Tables [0].Columns [1].ColumnName, "#5a");
-			Assert.AreEqual (1, ds.Tables [0].Columns [1].Ordinal, "#5b");
-			Assert.AreEqual ("Income", ds.Tables [0].Columns [2].ColumnName, "#6a");
-			Assert.AreEqual (2, ds.Tables [0].Columns [2].Ordinal, "#6b");
-		}
-
-		public void TestSameParentChildName ()
-		{
-			string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><resource type=\"parent\">" +
-			       	     "<resource type=\"child\" /></resource>";
- 			DataSet ds = new DataSet ();
-			ds.ReadXml (new StringReader (xml));
-
-			AssertReadXml (ds, "SameNameParentChild", xml,
-				XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 1);
-		}
-
-		public void TestSameColumnName ()
-		{
-			string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><resource resource_Id_0=\"parent\">" +
-			       	     "<resource resource_Id_0=\"child\" /></resource>";
- 			DataSet ds = new DataSet ();
-			ds.ReadXml (new StringReader (xml));
-
-			AssertReadXml (ds, "SameColumnName", xml,
-				XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
-				"NewDataSet", 1);
-		}
-		
-		[Test]
-		public void DataSetExtendedPropertiesTest()
-		{
-			DataSet dataSet1 = new DataSet();
-			dataSet1.ExtendedProperties.Add("DS1", "extended0");
-			DataTable table = new DataTable("TABLE1");
-			table.ExtendedProperties.Add("T1", "extended1");
-			table.Columns.Add("C1", typeof(int));
-			table.Columns.Add("C2", typeof(string));
-			table.Columns[1].MaxLength = 20;
-			table.Columns[0].ExtendedProperties.Add("C1Ext1", "extended2");
-			table.Columns[1].ExtendedProperties.Add("C2Ext1", "extended3");
-			dataSet1.Tables.Add(table);
-			table.LoadDataRow(new object[]{1, "One"}, false);
-			table.LoadDataRow(new object[]{2, "Two"}, false);
-			string file = Path.Combine (Path.GetTempPath (), "schemas-test.xml");
-			try {
-				dataSet1.WriteXml (file, XmlWriteMode.WriteSchema);
-			}
-			catch (Exception ex) {
-				Assert.Fail ("DSExtPropTest failed: WriteXml failed with : "+ex.Message);
-			} finally {
-				File.Delete (file);
-			}
-			
-			DataSet dataSet2 = new DataSet();
-			dataSet2.ReadXml("Test/System.Data/schemas/b582732.xml", XmlReadMode.ReadSchema);
-			Assert.AreEqual (dataSet1.ExtendedProperties["DS1"], dataSet2.ExtendedProperties["DS1"],
-			                 "DSExtProp#1: DS extended properties mismatch");
-						
-			Assert.AreEqual (dataSet1.Tables[0].ExtendedProperties["T1"], dataSet2.Tables[0].ExtendedProperties["T1"],
-			                 "DSExtProp#2: DS Table extended properties mismatch");
-			Assert.AreEqual (dataSet1.Tables[0].Columns[0].ExtendedProperties["C1Ext1"], 
-			                 dataSet2.Tables[0].Columns[0].ExtendedProperties["C1Ext1"],
-			                 "DSExtProp#3: DS Table Column 1 extended properties mismatch");
-			Assert.AreEqual (dataSet1.Tables[0].Columns[1].ExtendedProperties["C2Ext1"], 
-			                 dataSet2.Tables[0].Columns[1].ExtendedProperties["C2Ext1"],
-			                 "DSExtProp#4: DS Table Column 2 extended properties mismatch");
-		}
-	}
-}
+//
+// DataSetReadXmlTest.cs
+//
+// Author:
+//	Atsushi Enomoto <atsushi@ximian.com>
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Data
+{
+	[TestFixture]
+	public class DataSetReadXmlTest : DataSetAssertion
+	{
+		const string xml1 = "";
+		const string xml2 = "<root/>";
+		const string xml3 = "<root></root>";
+		const string xml4 = "<root>   </root>";
+		const string xml5 = "<root>test</root>";
+		const string xml6 = "<root><test>1</test></root>";
+		const string xml7 = "<root><test>1</test><test2>a</test2></root>";
+		const string xml8 = "<dataset><table><col1>foo</col1><col2>bar</col2></table></dataset>";
+		const string xml29 = @"<PersonalSite><License Name='Sum Wang' Email='sumwang@somewhere.net' Mode='Trial' StartDate='01/01/2004' Serial='aaa' /></PersonalSite>";
+
+		const string diff1 = @"<diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1'>
+  <NewDataSet>
+    <Table1 diffgr:id='Table11' msdata:rowOrder='0' diffgr:hasChanges='inserted'>
+      <Column1_1>ppp</Column1_1>
+      <Column1_2>www</Column1_2>
+      <Column1_3>xxx</Column1_3>
+    </Table1>
+  </NewDataSet>
+</diffgr:diffgram>";
+		const string diff2 = diff1 + xml8;
+
+		const string schema1 = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+	<xs:element name='Root'>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name='Child' type='xs:string' />
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>";
+		const string schema2 = schema1 + xml8;
+
+		[Test]
+		public void ReadSimpleAuto ()
+		{
+			DataSet ds;
+
+			// empty XML
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyString", xml1,
+				XmlReadMode.Auto, XmlReadMode.Auto,
+				"NewDataSet", 0);
+
+			// simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyElement", xml2,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// simple element2
+			ds = new DataSet ();
+			AssertReadXml (ds, "StartEndTag", xml3,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// whitespace in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "Whitespace", xml4,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// text in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// simple table pattern:
+			// root becomes a table and test becomes a column.
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("xml6", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
+
+			// simple table with 2 columns:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable2", xml7,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("xml7", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
+
+			// simple dataset with 1 table:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleDataSet", xml8,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"dataset", 1);
+			AssertDataTable ("xml8", ds.Tables [0], "table", 2, 1, 0, 0, 0, 0);
+		}
+
+		[Test]
+		public void ReadSimpleDiffgram ()
+		{
+			DataSet ds;
+
+			// empty XML
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyString", xml1,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			// simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyElement", xml2,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			// simple element2
+			ds = new DataSet ();
+			AssertReadXml (ds, "StartEndTag", xml3,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			// whitespace in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "Whitespace", xml4,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			// text in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			// simple table pattern:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			// simple table with 2 columns:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable2", xml7,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			// simple dataset with 1 table:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleDataSet", xml8,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+		}
+
+		[Test]
+		public void ReadSimpleFragment ()
+		{
+			DataSet ds;
+
+			// empty XML
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyString", xml1,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyElement", xml2,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// simple element2
+			ds = new DataSet ();
+			AssertReadXml (ds, "StartEndTag", xml3,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// whitespace in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "Whitespace", xml4,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// text in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// simple table pattern:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// simple table with 2 columns:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable2", xml7,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// simple dataset with 1 table:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleDataSet", xml8,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+		}
+
+		[Test]
+		public void ReadSimpleIgnoreSchema ()
+		{
+			DataSet ds;
+
+			// empty XML
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyString", xml1,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			// simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyElement", xml2,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			// simple element2
+			ds = new DataSet ();
+			AssertReadXml (ds, "StartEndTag", xml3,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			// whitespace in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "Whitespace", xml4,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			// text in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			// simple table pattern:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			// simple table with 2 columns:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable2", xml7,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			// simple dataset with 1 table:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleDataSet", xml8,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+		}
+
+		[Test]
+		public void ReadSimpleInferSchema ()
+		{
+			DataSet ds;
+
+			// empty XML
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyString", xml1,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"NewDataSet", 0);
+
+			// simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyElement", xml2,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// simple element2
+			ds = new DataSet ();
+			AssertReadXml (ds, "StartEndTag", xml3,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// whitespace in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "Whitespace", xml4,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// text in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"root", 0);
+
+			// simple table pattern:
+			// root becomes a table and test becomes a column.
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("xml6", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
+
+			// simple table with 2 columns:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable2", xml7,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("xml7", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
+
+			// simple dataset with 1 table:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleDataSet", xml8,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"dataset", 1);
+			AssertDataTable ("xml8", ds.Tables [0], "table", 2, 1, 0, 0, 0, 0);
+		}
+
+		[Test]
+		public void ReadSimpleReadSchema ()
+		{
+			DataSet ds;
+
+			// empty XML
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyString", xml1,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "EmptyElement", xml2,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// simple element2
+			ds = new DataSet ();
+			AssertReadXml (ds, "StartEndTag", xml3,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// whitespace in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "Whitespace", xml4,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// text in simple element
+			ds = new DataSet ();
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// simple table pattern:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// simple table with 2 columns:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleTable2", xml7,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// simple dataset with 1 table:
+			ds = new DataSet ();
+			AssertReadXml (ds, "SimpleDataSet", xml8,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+		}
+
+		[Test]
+		public void TestSimpleDiffXmlAll ()
+		{
+			DataSet ds;
+
+			// ignored
+			ds = new DataSet ();
+			AssertReadXml (ds, "Fragment", diff1,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "IgnoreSchema", diff1,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "InferSchema", diff1,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"NewDataSet", 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "ReadSchema", diff1,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0);
+
+			// Auto, DiffGram ... treated as DiffGram
+			ds = new DataSet ();
+			AssertReadXml (ds, "Auto", diff1,
+				XmlReadMode.Auto, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "DiffGram", diff1,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0);
+		}
+
+		[Test]
+		public void TestSimpleDiffPlusContentAll ()
+		{
+			DataSet ds;
+
+			// Fragment ... skipped
+			ds = new DataSet ();
+			AssertReadXml (ds, "Fragment", diff2,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 0);
+
+			// others ... kept 
+			ds = new DataSet ();
+			AssertReadXml (ds, "IgnoreSchema", diff2,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0, ReadState.Interactive);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "InferSchema", diff2,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"NewDataSet", 0, ReadState.Interactive);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "ReadSchema", diff2,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 0, ReadState.Interactive);
+
+			// Auto, DiffGram ... treated as DiffGram
+			ds = new DataSet ();
+			AssertReadXml (ds, "Auto", diff2,
+				XmlReadMode.Auto, XmlReadMode.DiffGram,
+				"NewDataSet", 0, ReadState.Interactive);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "DiffGram", diff2,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 0, ReadState.Interactive);
+		}
+
+		[Test]
+		public void TestSimpleSchemaXmlAll ()
+		{
+			DataSet ds;
+
+			// ignored
+			ds = new DataSet ();
+			AssertReadXml (ds, "IgnoreSchema", schema1,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "InferSchema", schema1,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"NewDataSet", 0);
+
+			// misc ... consume schema
+			ds = new DataSet ();
+			AssertReadXml (ds, "Fragment", schema1,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 1);
+			AssertDataTable ("fragment", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "ReadSchema", schema1,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("readschema", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "Auto", schema1,
+				XmlReadMode.Auto, XmlReadMode.ReadSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("auto", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "DiffGram", schema1,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 1);
+		}
+
+		[Test]
+		public void TestSimpleSchemaPlusContentAll ()
+		{
+			DataSet ds;
+
+			// ignored
+			ds = new DataSet ();
+			AssertReadXml (ds, "IgnoreSchema", schema2,
+				XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 0, ReadState.Interactive);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "InferSchema", schema2,
+				XmlReadMode.InferSchema, XmlReadMode.InferSchema,
+				"NewDataSet", 0, ReadState.Interactive);
+
+			// Fragment ... consumed both
+			ds = new DataSet ();
+			AssertReadXml (ds, "Fragment", schema2,
+				XmlReadMode.Fragment, XmlReadMode.Fragment,
+				"NewDataSet", 1);
+			AssertDataTable ("fragment", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
+
+			// rest ... treated as schema
+			ds = new DataSet ();
+			AssertReadXml (ds, "Auto", schema2,
+				XmlReadMode.Auto, XmlReadMode.ReadSchema,
+				"NewDataSet", 1, ReadState.Interactive);
+			AssertDataTable ("auto", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "DiffGram", schema2,
+				XmlReadMode.DiffGram, XmlReadMode.DiffGram,
+				"NewDataSet", 1, ReadState.Interactive);
+			AssertDataTable ("diffgram", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
+
+			ds = new DataSet ();
+			AssertReadXml (ds, "ReadSchema", schema2,
+				XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
+				"NewDataSet", 1, ReadState.Interactive);
+		}
+
+		[Test]
+		public void SequentialRead1 ()
+		{
+			// simple element -> simple table
+			DataSet ds = new DataSet ();
+
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"root", 0);
+
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("seq1", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
+		}
+
+		[Test]
+		public void SequentialRead2 ()
+		{
+			// simple element -> simple dataset
+			DataSet ds = new DataSet ();
+
+			AssertReadXml (ds, "SingleText", xml5,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"root", 0);
+
+			AssertReadXml (ds, "SimpleTable2", xml7,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("#1", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
+
+			// simple table -> simple dataset
+			ds = new DataSet ();
+
+			AssertReadXml (ds, "SimpleTable", xml6,
+				XmlReadMode.Auto, XmlReadMode.InferSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("#2", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
+
+			// Return value became IgnoreSchema, since there is
+			// already schema information in the dataset.
+			// Columns are kept 1 as old table holds.
+			// Rows are up to 2 because of accumulative read.
+			AssertReadXml (ds, "SimpleTable2-2", xml7,
+				XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 1);
+			AssertDataTable ("#3", ds.Tables [0], "root", 1, 2, 0, 0, 0, 0);
+
+		}
+
+		[Test] // based on bug case
+		public void ReadComplexElementDocument ()
+		{
+			DataSet ds = new DataSet ();
+			ds.ReadXml (new StringReader (xml29));
+		}
+
+		[Test]
+		public void IgnoreSchemaShouldFillData ()
+		{
+			// no such dataset
+			string xml1 = "<set><tab><col>test</col></tab></set>";
+			// no wrapper element
+			string xml2 = "<tab><col>test</col></tab>";
+			// no such table
+			string xml3 = "<tar><col>test</col></tar>";
+			DataSet ds = new DataSet ();
+			DataTable dt = new DataTable ("tab");
+			ds.Tables.Add (dt);
+			dt.Columns.Add ("col");
+			ds.ReadXml (new StringReader (xml1), XmlReadMode.IgnoreSchema);
+			AssertDataSet ("ds", ds, "NewDataSet", 1, 0);
+			Assert.AreEqual (1, dt.Rows.Count, "wrapper element");
+			dt.Clear ();
+
+			ds.ReadXml (new StringReader (xml2), XmlReadMode.IgnoreSchema);
+			Assert.AreEqual (1, dt.Rows.Count, "no wrapper element");
+			dt.Clear ();
+
+			ds.ReadXml (new StringReader (xml3), XmlReadMode.IgnoreSchema);
+			Assert.AreEqual (0, dt.Rows.Count, "no such table");
+		}
+
+		// bug #60118
+		[Test]
+		public void NameConflictDSAndTable ()
+		{
+			string xml = @"<PriceListDetails> 
+	<PriceListList>    
+		<Id>1</Id>
+	</PriceListList>
+	<PriceListDetails> 
+		<Id>1</Id>
+		<Status>0</Status>
+	</PriceListDetails>
+</PriceListDetails>";
+
+			DataSet ds = new DataSet ();
+			ds.ReadXml (new StringReader (xml));
+			Assert.IsNotNull (ds.Tables ["PriceListDetails"]);
+		}
+
+		[Test] // bug #80045
+		public void ColumnOrder ()
+		{
+			string xml = "<?xml version=\"1.0\" standalone=\"yes\"?>" +
+				"<NewDataSet>" +
+				"  <Table>" +
+				"    <Name>Miguel</Name>" +
+				"    <FirstName>de Icaza</FirstName>" +
+				"    <Income>4000</Income>" +
+				"  </Table>" +
+				"  <Table>" +
+				"    <Name>25</Name>" +
+				"    <FirstName>250</FirstName>" +
+				"    <Address>Belgium</Address>" +
+				"    <Income>5000</Income>" +
+				"</Table>" +
+				"</NewDataSet>";
+
+			DataSet ds = new DataSet ();
+			ds.ReadXml (new StringReader (xml));
+			Assert.AreEqual (1, ds.Tables.Count, "#1");
+			Assert.AreEqual ("Table", ds.Tables [0].TableName, "#2");
+			Assert.AreEqual (4, ds.Tables [0].Columns.Count, "#3");
+			Assert.AreEqual ("Name", ds.Tables [0].Columns [0].ColumnName, "#4a");
+			Assert.AreEqual (0, ds.Tables [0].Columns [0].Ordinal, "#4b");
+			Assert.AreEqual ("FirstName", ds.Tables [0].Columns [1].ColumnName, "#5a");
+			Assert.AreEqual (1, ds.Tables [0].Columns [1].Ordinal, "#5b");
+			Assert.AreEqual ("Address", ds.Tables [0].Columns [2].ColumnName, "#6a");
+			Assert.AreEqual (2, ds.Tables [0].Columns [2].Ordinal, "#6b");
+			Assert.AreEqual ("Income", ds.Tables [0].Columns [3].ColumnName, "#7a");
+			Assert.AreEqual (3, ds.Tables [0].Columns [3].Ordinal, "#7b");
+		}
+
+		[Test] // bug #80048
+		public void XmlSpace ()
+		{
+			string xml = "<?xml version=\"1.0\" standalone=\"yes\"?>" +
+				"<NewDataSet>" +
+				"  <Table>" +
+				"    <Name>Miguel</Name>" +
+				"    <FirstName xml:space=\"preserve\"> de Icaza</FirstName>" +
+				"    <Income>4000</Income>" +
+				"  </Table>" +
+				"  <Table>" +
+				"    <Name>Chris</Name>" +
+				"    <FirstName xml:space=\"preserve\">Toshok </FirstName>" +
+				"    <Income>3000</Income>" +
+				"  </Table>" +
+				"</NewDataSet>";
+
+ 			DataSet ds = new DataSet ();
+			ds.ReadXml (new StringReader (xml));
+			Assert.AreEqual (1, ds.Tables.Count, "#1");
+			Assert.AreEqual ("Table", ds.Tables [0].TableName, "#2");
+			Assert.AreEqual (3, ds.Tables [0].Columns.Count, "#3");
+			Assert.AreEqual ("Name", ds.Tables [0].Columns [0].ColumnName, "#4a");
+			Assert.AreEqual (0, ds.Tables [0].Columns [0].Ordinal, "#4b");
+			Assert.AreEqual ("FirstName", ds.Tables [0].Columns [1].ColumnName, "#5a");
+			Assert.AreEqual (1, ds.Tables [0].Columns [1].Ordinal, "#5b");
+			Assert.AreEqual ("Income", ds.Tables [0].Columns [2].ColumnName, "#6a");
+			Assert.AreEqual (2, ds.Tables [0].Columns [2].Ordinal, "#6b");
+		}
+
+		public void TestSameParentChildName ()
+		{
+			string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><resource type=\"parent\">" +
+			       	     "<resource type=\"child\" /></resource>";
+ 			DataSet ds = new DataSet ();
+			ds.ReadXml (new StringReader (xml));
+
+			AssertReadXml (ds, "SameNameParentChild", xml,
+				XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 1);
+		}
+
+		public void TestSameColumnName ()
+		{
+			string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><resource resource_Id_0=\"parent\">" +
+			       	     "<resource resource_Id_0=\"child\" /></resource>";
+ 			DataSet ds = new DataSet ();
+			ds.ReadXml (new StringReader (xml));
+
+			AssertReadXml (ds, "SameColumnName", xml,
+				XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
+				"NewDataSet", 1);
+		}
+		
+		[Test]
+		public void DataSetExtendedPropertiesTest()
+		{
+			DataSet dataSet1 = new DataSet();
+			dataSet1.ExtendedProperties.Add("DS1", "extended0");
+			DataTable table = new DataTable("TABLE1");
+			table.ExtendedProperties.Add("T1", "extended1");
+			table.Columns.Add("C1", typeof(int));
+			table.Columns.Add("C2", typeof(string));
+			table.Columns[1].MaxLength = 20;
+			table.Columns[0].ExtendedProperties.Add("C1Ext1", "extended2");
+			table.Columns[1].ExtendedProperties.Add("C2Ext1", "extended3");
+			dataSet1.Tables.Add(table);
+			table.LoadDataRow(new object[]{1, "One"}, false);
+			table.LoadDataRow(new object[]{2, "Two"}, false);
+			string file = Path.Combine (Path.GetTempPath (), "schemas-test.xml");
+			try {
+				dataSet1.WriteXml (file, XmlWriteMode.WriteSchema);
+			}
+			catch (Exception ex) {
+				Assert.Fail ("DSExtPropTest failed: WriteXml failed with : "+ex.Message);
+			} finally {
+				File.Delete (file);
+			}
+			
+			DataSet dataSet2 = new DataSet();
+			dataSet2.ReadXml("Test/System.Data/schemas/b582732.xml", XmlReadMode.ReadSchema);
+			Assert.AreEqual (dataSet1.ExtendedProperties["DS1"], dataSet2.ExtendedProperties["DS1"],
+			                 "DSExtProp#1: DS extended properties mismatch");
+						
+			Assert.AreEqual (dataSet1.Tables[0].ExtendedProperties["T1"], dataSet2.Tables[0].ExtendedProperties["T1"],
+			                 "DSExtProp#2: DS Table extended properties mismatch");
+			Assert.AreEqual (dataSet1.Tables[0].Columns[0].ExtendedProperties["C1Ext1"], 
+			                 dataSet2.Tables[0].Columns[0].ExtendedProperties["C1Ext1"],
+			                 "DSExtProp#3: DS Table Column 1 extended properties mismatch");
+			Assert.AreEqual (dataSet1.Tables[0].Columns[1].ExtendedProperties["C2Ext1"], 
+			                 dataSet2.Tables[0].Columns[1].ExtendedProperties["C2Ext1"],
+			                 "DSExtProp#4: DS Table Column 2 extended properties mismatch");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/MissingPrimaryKeyExceptionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/MissingPrimaryKeyExceptionTest.cs
@@ -1,60 +1,60 @@
-// Authors:
-//   Rafael Mizrahi   <rafim@mainsoft.com>
-//   Erez Lotan       <erezl@mainsoft.com>
-//   Oren Gurfinkel   <oreng@mainsoft.com>
-//   Ofer Borstein
-// 
-// Copyright (c) 2004 Mainsoft Co.
-// 
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Data;
-
-using NUnit.Framework;
-using MonoTests.System.Data.Utils;
-
-namespace MonoTests.System.Data
-{
-	[TestFixture]
-	class MissingPrimaryKeyExceptionTest
-	{
-		[Test]
-		[ExpectedException(typeof(MissingPrimaryKeyException))]
-		public void Generate1()
-		{
-			DataTable tbl = DataProvider.CreateParentDataTable();
-			//can't invoke Find method with no primary key
-
-			tbl.Rows.Find("Something");
-		}
-
-		[Test]
-		[ExpectedException(typeof(MissingPrimaryKeyException))]
-		public void Generate2()
-		{
-			DataTable tbl = DataProvider.CreateParentDataTable();	
-			//can't invoke Contains method with no primary key
-
-			tbl.Rows.Contains("Something");
-		}
-	}
-}
+// Authors:
+//   Rafael Mizrahi   <rafim@mainsoft.com>
+//   Erez Lotan       <erezl@mainsoft.com>
+//   Oren Gurfinkel   <oreng@mainsoft.com>
+//   Ofer Borstein
+// 
+// Copyright (c) 2004 Mainsoft Co.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Data;
+
+using NUnit.Framework;
+using MonoTests.System.Data.Utils;
+
+namespace MonoTests.System.Data
+{
+	[TestFixture]
+	class MissingPrimaryKeyExceptionTest
+	{
+		[Test]
+		[ExpectedException(typeof(MissingPrimaryKeyException))]
+		public void Generate1()
+		{
+			DataTable tbl = DataProvider.CreateParentDataTable();
+			//can't invoke Find method with no primary key
+
+			tbl.Rows.Find("Something");
+		}
+
+		[Test]
+		[ExpectedException(typeof(MissingPrimaryKeyException))]
+		public void Generate2()
+		{
+			DataTable tbl = DataProvider.CreateParentDataTable();	
+			//can't invoke Contains method with no primary key
+
+			tbl.Rows.Contains("Something");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/TypedDataSet.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/TypedDataSet.xml
@@ -1,563 +1,563 @@
-<?xml version="1.0" standalone="yes"?>
-<myTypedDataSet xmlns="http://www.tempuri.org/myTypedDataSet.xsd">
-  <Order_x0020_Details>
-    <OrderID>10250</OrderID>
-    <ProductID>41</ProductID>
-    <UnitPrice>7.7000</UnitPrice>
-    <Quantity>10</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10250</OrderID>
-    <ProductID>51</ProductID>
-    <UnitPrice>42.4000</UnitPrice>
-    <Quantity>35</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10250</OrderID>
-    <ProductID>65</ProductID>
-    <UnitPrice>16.8000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10251</OrderID>
-    <ProductID>22</ProductID>
-    <UnitPrice>16.8000</UnitPrice>
-    <Quantity>6</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10251</OrderID>
-    <ProductID>57</ProductID>
-    <UnitPrice>15.6000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10251</OrderID>
-    <ProductID>65</ProductID>
-    <UnitPrice>16.8000</UnitPrice>
-    <Quantity>20</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10252</OrderID>
-    <ProductID>20</ProductID>
-    <UnitPrice>64.8000</UnitPrice>
-    <Quantity>40</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10252</OrderID>
-    <ProductID>33</ProductID>
-    <UnitPrice>2.0000</UnitPrice>
-    <Quantity>25</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10252</OrderID>
-    <ProductID>60</ProductID>
-    <UnitPrice>27.2000</UnitPrice>
-    <Quantity>40</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10253</OrderID>
-    <ProductID>31</ProductID>
-    <UnitPrice>10.0000</UnitPrice>
-    <Quantity>20</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10253</OrderID>
-    <ProductID>39</ProductID>
-    <UnitPrice>14.4000</UnitPrice>
-    <Quantity>42</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10253</OrderID>
-    <ProductID>49</ProductID>
-    <UnitPrice>16.0000</UnitPrice>
-    <Quantity>40</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10254</OrderID>
-    <ProductID>24</ProductID>
-    <UnitPrice>3.6000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10254</OrderID>
-    <ProductID>55</ProductID>
-    <UnitPrice>19.2000</UnitPrice>
-    <Quantity>21</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10254</OrderID>
-    <ProductID>74</ProductID>
-    <UnitPrice>8.0000</UnitPrice>
-    <Quantity>21</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10255</OrderID>
-    <ProductID>2</ProductID>
-    <UnitPrice>15.2000</UnitPrice>
-    <Quantity>20</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10255</OrderID>
-    <ProductID>16</ProductID>
-    <UnitPrice>13.9000</UnitPrice>
-    <Quantity>35</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10255</OrderID>
-    <ProductID>36</ProductID>
-    <UnitPrice>15.2000</UnitPrice>
-    <Quantity>25</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10255</OrderID>
-    <ProductID>59</ProductID>
-    <UnitPrice>44.0000</UnitPrice>
-    <Quantity>30</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10256</OrderID>
-    <ProductID>53</ProductID>
-    <UnitPrice>26.2000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10256</OrderID>
-    <ProductID>77</ProductID>
-    <UnitPrice>10.4000</UnitPrice>
-    <Quantity>12</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10257</OrderID>
-    <ProductID>27</ProductID>
-    <UnitPrice>35.1000</UnitPrice>
-    <Quantity>25</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10257</OrderID>
-    <ProductID>39</ProductID>
-    <UnitPrice>14.4000</UnitPrice>
-    <Quantity>6</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10257</OrderID>
-    <ProductID>77</ProductID>
-    <UnitPrice>10.4000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10258</OrderID>
-    <ProductID>2</ProductID>
-    <UnitPrice>15.2000</UnitPrice>
-    <Quantity>50</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10258</OrderID>
-    <ProductID>5</ProductID>
-    <UnitPrice>17.0000</UnitPrice>
-    <Quantity>65</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10258</OrderID>
-    <ProductID>32</ProductID>
-    <UnitPrice>25.6000</UnitPrice>
-    <Quantity>6</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10259</OrderID>
-    <ProductID>21</ProductID>
-    <UnitPrice>8.0000</UnitPrice>
-    <Quantity>10</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10259</OrderID>
-    <ProductID>37</ProductID>
-    <UnitPrice>20.8000</UnitPrice>
-    <Quantity>1</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10260</OrderID>
-    <ProductID>41</ProductID>
-    <UnitPrice>7.7000</UnitPrice>
-    <Quantity>16</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10260</OrderID>
-    <ProductID>57</ProductID>
-    <UnitPrice>15.6000</UnitPrice>
-    <Quantity>50</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10260</OrderID>
-    <ProductID>62</ProductID>
-    <UnitPrice>39.4000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10260</OrderID>
-    <ProductID>70</ProductID>
-    <UnitPrice>12.0000</UnitPrice>
-    <Quantity>21</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10261</OrderID>
-    <ProductID>21</ProductID>
-    <UnitPrice>8.0000</UnitPrice>
-    <Quantity>20</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10261</OrderID>
-    <ProductID>35</ProductID>
-    <UnitPrice>14.4000</UnitPrice>
-    <Quantity>20</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10262</OrderID>
-    <ProductID>5</ProductID>
-    <UnitPrice>17.0000</UnitPrice>
-    <Quantity>12</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10262</OrderID>
-    <ProductID>7</ProductID>
-    <UnitPrice>24.0000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10262</OrderID>
-    <ProductID>56</ProductID>
-    <UnitPrice>30.4000</UnitPrice>
-    <Quantity>2</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10263</OrderID>
-    <ProductID>16</ProductID>
-    <UnitPrice>13.9000</UnitPrice>
-    <Quantity>60</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10263</OrderID>
-    <ProductID>24</ProductID>
-    <UnitPrice>3.6000</UnitPrice>
-    <Quantity>28</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10263</OrderID>
-    <ProductID>30</ProductID>
-    <UnitPrice>20.7000</UnitPrice>
-    <Quantity>60</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10263</OrderID>
-    <ProductID>74</ProductID>
-    <UnitPrice>8.0000</UnitPrice>
-    <Quantity>36</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10264</OrderID>
-    <ProductID>2</ProductID>
-    <UnitPrice>15.2000</UnitPrice>
-    <Quantity>35</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10264</OrderID>
-    <ProductID>41</ProductID>
-    <UnitPrice>7.7000</UnitPrice>
-    <Quantity>25</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10265</OrderID>
-    <ProductID>17</ProductID>
-    <UnitPrice>31.2000</UnitPrice>
-    <Quantity>30</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10265</OrderID>
-    <ProductID>70</ProductID>
-    <UnitPrice>12.0000</UnitPrice>
-    <Quantity>20</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10266</OrderID>
-    <ProductID>12</ProductID>
-    <UnitPrice>30.4000</UnitPrice>
-    <Quantity>12</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10267</OrderID>
-    <ProductID>40</ProductID>
-    <UnitPrice>14.7000</UnitPrice>
-    <Quantity>50</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10267</OrderID>
-    <ProductID>59</ProductID>
-    <UnitPrice>44.0000</UnitPrice>
-    <Quantity>70</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10267</OrderID>
-    <ProductID>76</ProductID>
-    <UnitPrice>14.4000</UnitPrice>
-    <Quantity>15</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10268</OrderID>
-    <ProductID>29</ProductID>
-    <UnitPrice>99.0000</UnitPrice>
-    <Quantity>10</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10268</OrderID>
-    <ProductID>72</ProductID>
-    <UnitPrice>27.8000</UnitPrice>
-    <Quantity>4</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10269</OrderID>
-    <ProductID>33</ProductID>
-    <UnitPrice>2.0000</UnitPrice>
-    <Quantity>60</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10269</OrderID>
-    <ProductID>72</ProductID>
-    <UnitPrice>27.8000</UnitPrice>
-    <Quantity>20</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10270</OrderID>
-    <ProductID>36</ProductID>
-    <UnitPrice>15.2000</UnitPrice>
-    <Quantity>30</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Order_x0020_Details>
-    <OrderID>10270</OrderID>
-    <ProductID>43</ProductID>
-    <UnitPrice>36.8000</UnitPrice>
-    <Quantity>25</Quantity>
-    <Discount>5.0</Discount>
-  </Order_x0020_Details>
-  <Orders>
-    <OrderID>10250</OrderID>
-    <CustomerID>HANAR</CustomerID>
-    <EmployeeID>4</EmployeeID>
-    <OrderDate>1996-07-08T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-05T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-12T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10251</OrderID>
-    <CustomerID>VICTE</CustomerID>
-    <EmployeeID>3</EmployeeID>
-    <OrderDate>1996-07-08T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-05T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-15T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10252</OrderID>
-    <CustomerID>SUPRD</CustomerID>
-    <EmployeeID>4</EmployeeID>
-    <OrderDate>1996-07-09T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-06T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-11T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10253</OrderID>
-    <CustomerID>HANAR</CustomerID>
-    <EmployeeID>3</EmployeeID>
-    <OrderDate>1996-07-10T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-07-24T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-16T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10254</OrderID>
-    <CustomerID>CHOPS</CustomerID>
-    <EmployeeID>5</EmployeeID>
-    <OrderDate>1996-07-11T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-08T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-23T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10255</OrderID>
-    <CustomerID>RICSU</CustomerID>
-    <EmployeeID>9</EmployeeID>
-    <OrderDate>1996-07-12T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-09T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-15T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10256</OrderID>
-    <CustomerID>WELLI</CustomerID>
-    <EmployeeID>3</EmployeeID>
-    <OrderDate>1996-07-15T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-12T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-17T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10257</OrderID>
-    <CustomerID>HILAA</CustomerID>
-    <EmployeeID>4</EmployeeID>
-    <OrderDate>1996-07-16T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-13T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-22T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10258</OrderID>
-    <CustomerID>ERNSH</CustomerID>
-    <EmployeeID>1</EmployeeID>
-    <OrderDate>1996-07-17T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-14T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-23T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10259</OrderID>
-    <CustomerID>CENTC</CustomerID>
-    <EmployeeID>4</EmployeeID>
-    <OrderDate>1996-07-18T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-15T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-25T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10260</OrderID>
-    <CustomerID>OTTIK</CustomerID>
-    <EmployeeID>4</EmployeeID>
-    <OrderDate>1996-07-19T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-16T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-29T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10261</OrderID>
-    <CustomerID>QUEDE</CustomerID>
-    <EmployeeID>4</EmployeeID>
-    <OrderDate>1996-07-19T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-16T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-30T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10262</OrderID>
-    <CustomerID>RATTC</CustomerID>
-    <EmployeeID>8</EmployeeID>
-    <OrderDate>1996-07-22T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-19T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-25T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10263</OrderID>
-    <CustomerID>ERNSH</CustomerID>
-    <EmployeeID>9</EmployeeID>
-    <OrderDate>1996-07-23T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-20T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-31T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10264</OrderID>
-    <CustomerID>FOLKO</CustomerID>
-    <EmployeeID>6</EmployeeID>
-    <OrderDate>1996-07-24T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-21T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-08-23T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10265</OrderID>
-    <CustomerID>BLONP</CustomerID>
-    <EmployeeID>2</EmployeeID>
-    <OrderDate>1996-07-25T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-22T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-08-12T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10266</OrderID>
-    <CustomerID>WARTH</CustomerID>
-    <EmployeeID>3</EmployeeID>
-    <OrderDate>1996-07-26T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-09-06T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-07-31T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10267</OrderID>
-    <CustomerID>FRANK</CustomerID>
-    <EmployeeID>4</EmployeeID>
-    <OrderDate>1996-07-29T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-26T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-08-06T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10268</OrderID>
-    <CustomerID>GROSR</CustomerID>
-    <EmployeeID>8</EmployeeID>
-    <OrderDate>1996-07-30T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-27T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-08-02T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10269</OrderID>
-    <CustomerID>WHITC</CustomerID>
-    <EmployeeID>5</EmployeeID>
-    <OrderDate>1996-07-31T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-14T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-08-09T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
-  <Orders>
-    <OrderID>10270</OrderID>
-    <CustomerID>WARTH</CustomerID>
-    <EmployeeID>1</EmployeeID>
-    <OrderDate>1996-08-01T00:00:00.0000000+03:00</OrderDate>
-    <RequiredDate>1996-08-29T00:00:00.0000000+03:00</RequiredDate>
-    <ShippedDate>1996-08-02T00:00:00.0000000+03:00</ShippedDate>
-  </Orders>
+<?xml version="1.0" standalone="yes"?>
+<myTypedDataSet xmlns="http://www.tempuri.org/myTypedDataSet.xsd">
+  <Order_x0020_Details>
+    <OrderID>10250</OrderID>
+    <ProductID>41</ProductID>
+    <UnitPrice>7.7000</UnitPrice>
+    <Quantity>10</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10250</OrderID>
+    <ProductID>51</ProductID>
+    <UnitPrice>42.4000</UnitPrice>
+    <Quantity>35</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10250</OrderID>
+    <ProductID>65</ProductID>
+    <UnitPrice>16.8000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10251</OrderID>
+    <ProductID>22</ProductID>
+    <UnitPrice>16.8000</UnitPrice>
+    <Quantity>6</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10251</OrderID>
+    <ProductID>57</ProductID>
+    <UnitPrice>15.6000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10251</OrderID>
+    <ProductID>65</ProductID>
+    <UnitPrice>16.8000</UnitPrice>
+    <Quantity>20</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10252</OrderID>
+    <ProductID>20</ProductID>
+    <UnitPrice>64.8000</UnitPrice>
+    <Quantity>40</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10252</OrderID>
+    <ProductID>33</ProductID>
+    <UnitPrice>2.0000</UnitPrice>
+    <Quantity>25</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10252</OrderID>
+    <ProductID>60</ProductID>
+    <UnitPrice>27.2000</UnitPrice>
+    <Quantity>40</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10253</OrderID>
+    <ProductID>31</ProductID>
+    <UnitPrice>10.0000</UnitPrice>
+    <Quantity>20</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10253</OrderID>
+    <ProductID>39</ProductID>
+    <UnitPrice>14.4000</UnitPrice>
+    <Quantity>42</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10253</OrderID>
+    <ProductID>49</ProductID>
+    <UnitPrice>16.0000</UnitPrice>
+    <Quantity>40</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10254</OrderID>
+    <ProductID>24</ProductID>
+    <UnitPrice>3.6000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10254</OrderID>
+    <ProductID>55</ProductID>
+    <UnitPrice>19.2000</UnitPrice>
+    <Quantity>21</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10254</OrderID>
+    <ProductID>74</ProductID>
+    <UnitPrice>8.0000</UnitPrice>
+    <Quantity>21</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10255</OrderID>
+    <ProductID>2</ProductID>
+    <UnitPrice>15.2000</UnitPrice>
+    <Quantity>20</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10255</OrderID>
+    <ProductID>16</ProductID>
+    <UnitPrice>13.9000</UnitPrice>
+    <Quantity>35</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10255</OrderID>
+    <ProductID>36</ProductID>
+    <UnitPrice>15.2000</UnitPrice>
+    <Quantity>25</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10255</OrderID>
+    <ProductID>59</ProductID>
+    <UnitPrice>44.0000</UnitPrice>
+    <Quantity>30</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10256</OrderID>
+    <ProductID>53</ProductID>
+    <UnitPrice>26.2000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10256</OrderID>
+    <ProductID>77</ProductID>
+    <UnitPrice>10.4000</UnitPrice>
+    <Quantity>12</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10257</OrderID>
+    <ProductID>27</ProductID>
+    <UnitPrice>35.1000</UnitPrice>
+    <Quantity>25</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10257</OrderID>
+    <ProductID>39</ProductID>
+    <UnitPrice>14.4000</UnitPrice>
+    <Quantity>6</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10257</OrderID>
+    <ProductID>77</ProductID>
+    <UnitPrice>10.4000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10258</OrderID>
+    <ProductID>2</ProductID>
+    <UnitPrice>15.2000</UnitPrice>
+    <Quantity>50</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10258</OrderID>
+    <ProductID>5</ProductID>
+    <UnitPrice>17.0000</UnitPrice>
+    <Quantity>65</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10258</OrderID>
+    <ProductID>32</ProductID>
+    <UnitPrice>25.6000</UnitPrice>
+    <Quantity>6</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10259</OrderID>
+    <ProductID>21</ProductID>
+    <UnitPrice>8.0000</UnitPrice>
+    <Quantity>10</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10259</OrderID>
+    <ProductID>37</ProductID>
+    <UnitPrice>20.8000</UnitPrice>
+    <Quantity>1</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10260</OrderID>
+    <ProductID>41</ProductID>
+    <UnitPrice>7.7000</UnitPrice>
+    <Quantity>16</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10260</OrderID>
+    <ProductID>57</ProductID>
+    <UnitPrice>15.6000</UnitPrice>
+    <Quantity>50</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10260</OrderID>
+    <ProductID>62</ProductID>
+    <UnitPrice>39.4000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10260</OrderID>
+    <ProductID>70</ProductID>
+    <UnitPrice>12.0000</UnitPrice>
+    <Quantity>21</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10261</OrderID>
+    <ProductID>21</ProductID>
+    <UnitPrice>8.0000</UnitPrice>
+    <Quantity>20</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10261</OrderID>
+    <ProductID>35</ProductID>
+    <UnitPrice>14.4000</UnitPrice>
+    <Quantity>20</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10262</OrderID>
+    <ProductID>5</ProductID>
+    <UnitPrice>17.0000</UnitPrice>
+    <Quantity>12</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10262</OrderID>
+    <ProductID>7</ProductID>
+    <UnitPrice>24.0000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10262</OrderID>
+    <ProductID>56</ProductID>
+    <UnitPrice>30.4000</UnitPrice>
+    <Quantity>2</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10263</OrderID>
+    <ProductID>16</ProductID>
+    <UnitPrice>13.9000</UnitPrice>
+    <Quantity>60</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10263</OrderID>
+    <ProductID>24</ProductID>
+    <UnitPrice>3.6000</UnitPrice>
+    <Quantity>28</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10263</OrderID>
+    <ProductID>30</ProductID>
+    <UnitPrice>20.7000</UnitPrice>
+    <Quantity>60</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10263</OrderID>
+    <ProductID>74</ProductID>
+    <UnitPrice>8.0000</UnitPrice>
+    <Quantity>36</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10264</OrderID>
+    <ProductID>2</ProductID>
+    <UnitPrice>15.2000</UnitPrice>
+    <Quantity>35</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10264</OrderID>
+    <ProductID>41</ProductID>
+    <UnitPrice>7.7000</UnitPrice>
+    <Quantity>25</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10265</OrderID>
+    <ProductID>17</ProductID>
+    <UnitPrice>31.2000</UnitPrice>
+    <Quantity>30</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10265</OrderID>
+    <ProductID>70</ProductID>
+    <UnitPrice>12.0000</UnitPrice>
+    <Quantity>20</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10266</OrderID>
+    <ProductID>12</ProductID>
+    <UnitPrice>30.4000</UnitPrice>
+    <Quantity>12</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10267</OrderID>
+    <ProductID>40</ProductID>
+    <UnitPrice>14.7000</UnitPrice>
+    <Quantity>50</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10267</OrderID>
+    <ProductID>59</ProductID>
+    <UnitPrice>44.0000</UnitPrice>
+    <Quantity>70</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10267</OrderID>
+    <ProductID>76</ProductID>
+    <UnitPrice>14.4000</UnitPrice>
+    <Quantity>15</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10268</OrderID>
+    <ProductID>29</ProductID>
+    <UnitPrice>99.0000</UnitPrice>
+    <Quantity>10</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10268</OrderID>
+    <ProductID>72</ProductID>
+    <UnitPrice>27.8000</UnitPrice>
+    <Quantity>4</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10269</OrderID>
+    <ProductID>33</ProductID>
+    <UnitPrice>2.0000</UnitPrice>
+    <Quantity>60</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10269</OrderID>
+    <ProductID>72</ProductID>
+    <UnitPrice>27.8000</UnitPrice>
+    <Quantity>20</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10270</OrderID>
+    <ProductID>36</ProductID>
+    <UnitPrice>15.2000</UnitPrice>
+    <Quantity>30</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Order_x0020_Details>
+    <OrderID>10270</OrderID>
+    <ProductID>43</ProductID>
+    <UnitPrice>36.8000</UnitPrice>
+    <Quantity>25</Quantity>
+    <Discount>5.0</Discount>
+  </Order_x0020_Details>
+  <Orders>
+    <OrderID>10250</OrderID>
+    <CustomerID>HANAR</CustomerID>
+    <EmployeeID>4</EmployeeID>
+    <OrderDate>1996-07-08T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-05T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-12T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10251</OrderID>
+    <CustomerID>VICTE</CustomerID>
+    <EmployeeID>3</EmployeeID>
+    <OrderDate>1996-07-08T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-05T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-15T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10252</OrderID>
+    <CustomerID>SUPRD</CustomerID>
+    <EmployeeID>4</EmployeeID>
+    <OrderDate>1996-07-09T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-06T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-11T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10253</OrderID>
+    <CustomerID>HANAR</CustomerID>
+    <EmployeeID>3</EmployeeID>
+    <OrderDate>1996-07-10T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-07-24T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-16T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10254</OrderID>
+    <CustomerID>CHOPS</CustomerID>
+    <EmployeeID>5</EmployeeID>
+    <OrderDate>1996-07-11T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-08T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-23T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10255</OrderID>
+    <CustomerID>RICSU</CustomerID>
+    <EmployeeID>9</EmployeeID>
+    <OrderDate>1996-07-12T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-09T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-15T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10256</OrderID>
+    <CustomerID>WELLI</CustomerID>
+    <EmployeeID>3</EmployeeID>
+    <OrderDate>1996-07-15T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-12T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-17T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10257</OrderID>
+    <CustomerID>HILAA</CustomerID>
+    <EmployeeID>4</EmployeeID>
+    <OrderDate>1996-07-16T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-13T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-22T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10258</OrderID>
+    <CustomerID>ERNSH</CustomerID>
+    <EmployeeID>1</EmployeeID>
+    <OrderDate>1996-07-17T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-14T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-23T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10259</OrderID>
+    <CustomerID>CENTC</CustomerID>
+    <EmployeeID>4</EmployeeID>
+    <OrderDate>1996-07-18T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-15T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-25T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10260</OrderID>
+    <CustomerID>OTTIK</CustomerID>
+    <EmployeeID>4</EmployeeID>
+    <OrderDate>1996-07-19T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-16T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-29T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10261</OrderID>
+    <CustomerID>QUEDE</CustomerID>
+    <EmployeeID>4</EmployeeID>
+    <OrderDate>1996-07-19T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-16T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-30T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10262</OrderID>
+    <CustomerID>RATTC</CustomerID>
+    <EmployeeID>8</EmployeeID>
+    <OrderDate>1996-07-22T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-19T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-25T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10263</OrderID>
+    <CustomerID>ERNSH</CustomerID>
+    <EmployeeID>9</EmployeeID>
+    <OrderDate>1996-07-23T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-20T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-31T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10264</OrderID>
+    <CustomerID>FOLKO</CustomerID>
+    <EmployeeID>6</EmployeeID>
+    <OrderDate>1996-07-24T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-21T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-08-23T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10265</OrderID>
+    <CustomerID>BLONP</CustomerID>
+    <EmployeeID>2</EmployeeID>
+    <OrderDate>1996-07-25T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-22T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-08-12T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10266</OrderID>
+    <CustomerID>WARTH</CustomerID>
+    <EmployeeID>3</EmployeeID>
+    <OrderDate>1996-07-26T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-09-06T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-07-31T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10267</OrderID>
+    <CustomerID>FRANK</CustomerID>
+    <EmployeeID>4</EmployeeID>
+    <OrderDate>1996-07-29T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-26T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-08-06T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10268</OrderID>
+    <CustomerID>GROSR</CustomerID>
+    <EmployeeID>8</EmployeeID>
+    <OrderDate>1996-07-30T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-27T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-08-02T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10269</OrderID>
+    <CustomerID>WHITC</CustomerID>
+    <EmployeeID>5</EmployeeID>
+    <OrderDate>1996-07-31T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-14T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-08-09T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
+  <Orders>
+    <OrderID>10270</OrderID>
+    <CustomerID>WARTH</CustomerID>
+    <EmployeeID>1</EmployeeID>
+    <OrderDate>1996-08-01T00:00:00.0000000+03:00</OrderDate>
+    <RequiredDate>1996-08-29T00:00:00.0000000+03:00</RequiredDate>
+    <ShippedDate>1996-08-02T00:00:00.0000000+03:00</ShippedDate>
+  </Orders>
 </myTypedDataSet>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/Items.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/Items.xsd
@@ -1,46 +1,46 @@
-<?xml version="1.0" standalone="yes"?>
-<xs:schema id="items" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-  <xs:element name="items" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
-    <xs:complexType>
-      <xs:choice minOccurs="0" maxOccurs="unbounded">
-        <xs:element name="category">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="id" type="xs:string" />
-              <xs:element name="visible" type="xs:string" />
-              <xs:element name="title" type="xs:string" />
-              <xs:element name="description" type="xs:string" minOccurs="0" />
-              <xs:element name="imageUrl" type="xs:string" minOccurs="0" />
-              <xs:element name="imageAltText" type="xs:string" minOccurs="0" />
-              <xs:element name="parentCategoryId" type="xs:string" minOccurs="0" />
-              <xs:element name="childItemId" nillable="true" minOccurs="0" maxOccurs="unbounded">
-                <xs:complexType>
-                  <xs:simpleContent msdata:ColumnName="childItemId_Text" msdata:Ordinal="0">
-                    <xs:extension base="xs:string">
-                    </xs:extension>
-                  </xs:simpleContent>
-                </xs:complexType>
-              </xs:element>
-
-            </xs:sequence>
-          </xs:complexType>
-          
-        </xs:element>
-        <xs:element name="item">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="id" type="xs:string" minOccurs="0" />
-              <xs:element name="visible" type="xs:string" minOccurs="0" />
-              <xs:element name="title" type="xs:string" minOccurs="0" />
-              <xs:element name="description" type="xs:string" minOccurs="0" />
-              <xs:element name="price" type="xs:string" minOccurs="0" />
-              <xs:element name="inStock" type="xs:string" minOccurs="0" />
-              <xs:element name="imageUrl" type="xs:string" minOccurs="0" />
-              <xs:element name="imageAltText" type="xs:string" minOccurs="0" />
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-      </xs:choice>
-    </xs:complexType>
-  </xs:element>
+<?xml version="1.0" standalone="yes"?>
+<xs:schema id="items" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+  <xs:element name="items" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="category">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element name="id" type="xs:string" />
+              <xs:element name="visible" type="xs:string" />
+              <xs:element name="title" type="xs:string" />
+              <xs:element name="description" type="xs:string" minOccurs="0" />
+              <xs:element name="imageUrl" type="xs:string" minOccurs="0" />
+              <xs:element name="imageAltText" type="xs:string" minOccurs="0" />
+              <xs:element name="parentCategoryId" type="xs:string" minOccurs="0" />
+              <xs:element name="childItemId" nillable="true" minOccurs="0" maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:simpleContent msdata:ColumnName="childItemId_Text" msdata:Ordinal="0">
+                    <xs:extension base="xs:string">
+                    </xs:extension>
+                  </xs:simpleContent>
+                </xs:complexType>
+              </xs:element>
+
+            </xs:sequence>
+          </xs:complexType>
+          
+        </xs:element>
+        <xs:element name="item">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element name="id" type="xs:string" minOccurs="0" />
+              <xs:element name="visible" type="xs:string" minOccurs="0" />
+              <xs:element name="title" type="xs:string" minOccurs="0" />
+              <xs:element name="description" type="xs:string" minOccurs="0" />
+              <xs:element name="price" type="xs:string" minOccurs="0" />
+              <xs:element name="inStock" type="xs:string" minOccurs="0" />
+              <xs:element name="imageUrl" type="xs:string" minOccurs="0" />
+              <xs:element name="imageAltText" type="xs:string" minOccurs="0" />
+            </xs:sequence>
+          </xs:complexType>
+        </xs:element>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
 </xs:schema>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test001.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test001.xsd
@@ -1,3 +1,3 @@
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-<!-- empty -->
-</xs:schema>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+<!-- empty -->
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test002.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test002.xsd
@@ -1,3 +1,3 @@
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-<xs:element name='foo' />
-</xs:schema>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+<xs:element name='foo' />
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test003.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test003.xsd
@@ -1,4 +1,4 @@
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-<xs:element name='foo' type='xs:integer' />
-<xs:element name='bar' type='xs:string' />
-</xs:schema>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+<xs:element name='foo' type='xs:integer' />
+<xs:element name='bar' type='xs:string' />
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test004.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test004.xsd
@@ -1,8 +1,8 @@
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-<xs:element name='foo' type='st' />
-<xs:simpleType name='st'>
-  <xs:restriction base='xs:string'>
-    <xs:maxLength value='5' />
-  </xs:restriction>
-</xs:simpleType>
-</xs:schema>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+<xs:element name='foo' type='st' />
+<xs:simpleType name='st'>
+  <xs:restriction base='xs:string'>
+    <xs:maxLength value='5' />
+  </xs:restriction>
+</xs:simpleType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test005.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test005.xsd
@@ -1,10 +1,10 @@
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-<xs:element name='foo' type='ct' />
-<xs:complexType name='ct'>
-  <xs:simpleContent>
-    <xs:extension base='xs:integer'>
-      <xs:attribute name='attr' />
-    </xs:extension>
-  </xs:simpleContent>
-</xs:complexType>
-</xs:schema>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+<xs:element name='foo' type='ct' />
+<xs:complexType name='ct'>
+  <xs:simpleContent>
+    <xs:extension base='xs:integer'>
+      <xs:attribute name='attr' />
+    </xs:extension>
+  </xs:simpleContent>
+</xs:complexType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test006.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test006.xsd
@@ -1,7 +1,7 @@
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-<xs:element name='foo' type='st' />
-<xs:complexType name='st'>
-  <xs:attribute name='att1' />
-  <xs:attribute name='att2' type='xs:int' default='2' />
-</xs:complexType>
-</xs:schema>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+<xs:element name='foo' type='st' />
+<xs:complexType name='st'>
+  <xs:attribute name='att1' />
+  <xs:attribute name='att2' type='xs:int' default='2' />
+</xs:complexType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test007.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test007.xsd
@@ -1,15 +1,15 @@
-<!-- nested tables, root references to complex type -->
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
-<xs:element name='uno' type='x:t' />
-<xs:complexType name='t'>
-  <xs:sequence>
-    <xs:element name='des'>
-      <xs:complexType>
-        <xs:sequence>
-          <xs:element name='tres' />
-        </xs:sequence>
-      </xs:complexType>
-    </xs:element>
-  </xs:sequence>
-</xs:complexType>
-</xs:schema>
+<!-- nested tables, root references to complex type -->
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
+<xs:element name='uno' type='x:t' />
+<xs:complexType name='t'>
+  <xs:sequence>
+    <xs:element name='des'>
+      <xs:complexType>
+        <xs:sequence>
+          <xs:element name='tres' />
+        </xs:sequence>
+      </xs:complexType>
+    </xs:element>
+  </xs:sequence>
+</xs:complexType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test008.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test008.xsd
@@ -1,16 +1,16 @@
-<!-- reference to external simple element -->
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
-<xs:element name='uno' type='x:t' />
-<xs:element name='tres' type='xs:string' />
-<xs:complexType name='t'>
-  <xs:sequence>
-    <xs:element name='des'>
-      <xs:complexType>
-        <xs:sequence>
-          <xs:element ref='x:tres' />
-        </xs:sequence>
-      </xs:complexType>
-    </xs:element>
-  </xs:sequence>
-</xs:complexType>
-</xs:schema>
+<!-- reference to external simple element -->
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
+<xs:element name='uno' type='x:t' />
+<xs:element name='tres' type='xs:string' />
+<xs:complexType name='t'>
+  <xs:sequence>
+    <xs:element name='des'>
+      <xs:complexType>
+        <xs:sequence>
+          <xs:element ref='x:tres' />
+        </xs:sequence>
+      </xs:complexType>
+    </xs:element>
+  </xs:sequence>
+</xs:complexType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test009.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test009.xsd
@@ -1,20 +1,20 @@
-<!-- default value -->
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
-<xs:element name='uno' type='x:t' />
-<xs:element name='tres' type='xs:string' default='yi' />
-<xs:attribute name='global' default='er' />
-<xs:complexType name='t'>
-  <xs:sequence>
-    <xs:element name='des'>
-      <xs:complexType>
-        <xs:sequence>
-          <xs:element ref='x:tres' /><!-- default is 'yi' indirectly, while the value is not reflected (not reflectable) to XmlSchemaElement -->
-        </xs:sequence>
-        <xs:attribute name='local' default='san' />
-        <xs:attribute ref='x:global' default='si' />
-      </xs:complexType>
-    </xs:element>
-  </xs:sequence>
-  <xs:attribute ref='x:global' /><!-- default is 'er' indirectly, while the value is not reflected (not reflectable) to XmlSchemaAttribute -->
-</xs:complexType>
-</xs:schema>
+<!-- default value -->
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:foo' xmlns:x='urn:foo'>
+<xs:element name='uno' type='x:t' />
+<xs:element name='tres' type='xs:string' default='yi' />
+<xs:attribute name='global' default='er' />
+<xs:complexType name='t'>
+  <xs:sequence>
+    <xs:element name='des'>
+      <xs:complexType>
+        <xs:sequence>
+          <xs:element ref='x:tres' /><!-- default is 'yi' indirectly, while the value is not reflected (not reflectable) to XmlSchemaElement -->
+        </xs:sequence>
+        <xs:attribute name='local' default='san' />
+        <xs:attribute ref='x:global' default='si' />
+      </xs:complexType>
+    </xs:element>
+  </xs:sequence>
+  <xs:attribute ref='x:global' /><!-- default is 'er' indirectly, while the value is not reflected (not reflectable) to XmlSchemaAttribute -->
+</xs:complexType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test010.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test010.xsd
@@ -1,11 +1,11 @@
-<!-- import -->
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-	<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-	<xsd:element name="foo">
-		<xsd:complexType>
-			<xsd:sequence>
-				<xsd:element name="bar"/>
-			</xsd:sequence>
-		</xsd:complexType>
-	</xsd:element>
-</xsd:schema>
+<!-- import -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+	<xsd:element name="foo">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="bar"/>
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+</xsd:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test011.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test011.xsd
@@ -1,19 +1,19 @@
-<!-- From w3ctests attQ014.xsd -->
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xsdtesting" xmlns:x="http://xsdtesting" elementFormDefault="qualified" attributeFormDefault="qualified">
-	<xsd:element name="e">
-		<xsd:complexType>
-			<xsd:simpleContent>
-				<xsd:extension base="xsd:decimal">
-					<xsd:attribute name="a" type="xsd:string"/>
-				</xsd:extension>
-			</xsd:simpleContent>
-		</xsd:complexType>
-	</xsd:element>
-	<xsd:element name="root">
-		<xsd:complexType>
-			<xsd:sequence>
-				<xsd:element ref="x:e"/>
-			</xsd:sequence>
-		</xsd:complexType>
-	</xsd:element>
-</xsd:schema>
+<!-- From w3ctests attQ014.xsd -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xsdtesting" xmlns:x="http://xsdtesting" elementFormDefault="qualified" attributeFormDefault="qualified">
+	<xsd:element name="e">
+		<xsd:complexType>
+			<xsd:simpleContent>
+				<xsd:extension base="xsd:decimal">
+					<xsd:attribute name="a" type="xsd:string"/>
+				</xsd:extension>
+			</xsd:simpleContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="root">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element ref="x:e"/>
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+</xsd:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test012.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test012.xsd
@@ -1,11 +1,11 @@
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-<!-- empty -->
-<xs:element name='Foo' type='FooType' />
-
-<!-- defining externally to avoid being reagarded as dataset element -->
-<xs:complexType name='FooType'>
-	<xs:sequence>
-		<xs:element name='Bar' maxOccurs='2' />
-	</xs:sequence>
-</xs:complexType>
-</xs:schema>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+<!-- empty -->
+<xs:element name='Foo' type='FooType' />
+
+<!-- defining externally to avoid being reagarded as dataset element -->
+<xs:complexType name='FooType'>
+	<xs:sequence>
+		<xs:element name='Bar' maxOccurs='2' />
+	</xs:sequence>
+</xs:complexType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test013.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test013.xsd
@@ -1,18 +1,18 @@
-<!-- Modified w3ctests attQ014.xsd -->
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xsdtesting" xmlns:x="http://xsdtesting">
-	<xsd:element name="root">
-		<xsd:complexType>
-			<xsd:sequence>
-				<xsd:element name="e">
-					<xsd:complexType>
-						<xsd:simpleContent>
-							<xsd:extension base="xsd:decimal">
-								<xsd:attribute name="a" type="xsd:string"/>
-							</xsd:extension>
-						</xsd:simpleContent>
-					</xsd:complexType>
-				</xsd:element>
-			</xsd:sequence>
-		</xsd:complexType>
-	</xsd:element>
-</xsd:schema>
+<!-- Modified w3ctests attQ014.xsd -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xsdtesting" xmlns:x="http://xsdtesting">
+	<xsd:element name="root">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="e">
+					<xsd:complexType>
+						<xsd:simpleContent>
+							<xsd:extension base="xsd:decimal">
+								<xsd:attribute name="a" type="xsd:string"/>
+							</xsd:extension>
+						</xsd:simpleContent>
+					</xsd:complexType>
+				</xsd:element>
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+</xsd:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test014.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test014.xsd
@@ -1,11 +1,11 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-	<xsd:element name="root">
-		<xsd:complexType>
-			<xsd:sequence>
-				<xsd:element name="x" maxOccurs="2" />
-				<xsd:element ref="y" maxOccurs="unbounded" />
-			</xsd:sequence>
-		</xsd:complexType>
-	</xsd:element>
-	<xsd:element name="y" />
-</xsd:schema>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<xsd:element name="root">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="x" maxOccurs="2" />
+				<xsd:element ref="y" maxOccurs="unbounded" />
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="y" />
+</xsd:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/schemas/test103.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/schemas/test103.xsd
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<xs:schema targetNamespace="http://neurosaudio.com/Tracks.xsd" xmlns="http://neurosaudio.com/Tracks.xsd" xmlns:mstns="http://neurosaudio.com/Tracks.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" elementFormDefault="qualified" id="Tracks">
-	<xs:element name="Tracks">
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element name="Track" minOccurs="0" maxOccurs="unbounded">
-					<xs:complexType>
-						<xs:sequence>
-							<xs:element name="Title" type="xs:string" />
-							<xs:element name="Artist" type="xs:string" minOccurs="0" />
-							<xs:element name="Album" type="xs:string" minOccurs="0" />
-							<xs:element name="Performer" type="xs:string" minOccurs="0" />
-							<xs:element name="Sequence" type="xs:unsignedInt" minOccurs="0" />
-							<xs:element name="Genre" type="xs:string" minOccurs="0" />
-							<xs:element name="Comment" type="xs:string" minOccurs="0" />
-							<xs:element name="Year" type="xs:string" minOccurs="0" />
-							<xs:element name="Duration" type="xs:unsignedInt" minOccurs="0" />
-							<xs:element name="Path" type="xs:string" />
-							<xs:element name="DevicePath" type="xs:string" minOccurs="0" />
-							<xs:element name="FileSize" type="xs:unsignedInt" minOccurs="0" />
-							<xs:element name="Source" type="xs:string" minOccurs="0" />
-							<xs:element name="FlashStatus" type="xs:unsignedInt" />
-							<xs:element name="HDStatus" type="xs:unsignedInt" />
-						</xs:sequence>
-						<xs:attribute name="ID" type="xs:unsignedInt" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" />
-					</xs:complexType>
-				</xs:element>
-			</xs:sequence>
-		</xs:complexType>
-		<xs:key name="TrackPK" msdata:PrimaryKey="true">
-			<xs:selector xpath=".//mstns:Track" />
-			<xs:field xpath="@ID" />
-		</xs:key>
-	</xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema targetNamespace="http://neurosaudio.com/Tracks.xsd" xmlns="http://neurosaudio.com/Tracks.xsd" xmlns:mstns="http://neurosaudio.com/Tracks.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" elementFormDefault="qualified" id="Tracks">
+	<xs:element name="Tracks">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="Track" minOccurs="0" maxOccurs="unbounded">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="Title" type="xs:string" />
+							<xs:element name="Artist" type="xs:string" minOccurs="0" />
+							<xs:element name="Album" type="xs:string" minOccurs="0" />
+							<xs:element name="Performer" type="xs:string" minOccurs="0" />
+							<xs:element name="Sequence" type="xs:unsignedInt" minOccurs="0" />
+							<xs:element name="Genre" type="xs:string" minOccurs="0" />
+							<xs:element name="Comment" type="xs:string" minOccurs="0" />
+							<xs:element name="Year" type="xs:string" minOccurs="0" />
+							<xs:element name="Duration" type="xs:unsignedInt" minOccurs="0" />
+							<xs:element name="Path" type="xs:string" />
+							<xs:element name="DevicePath" type="xs:string" minOccurs="0" />
+							<xs:element name="FileSize" type="xs:unsignedInt" minOccurs="0" />
+							<xs:element name="Source" type="xs:string" minOccurs="0" />
+							<xs:element name="FlashStatus" type="xs:unsignedInt" />
+							<xs:element name="HDStatus" type="xs:unsignedInt" />
+						</xs:sequence>
+						<xs:attribute name="ID" type="xs:unsignedInt" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" />
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+		<xs:key name="TrackPK" msdata:PrimaryKey="true">
+			<xs:selector xpath=".//mstns:Track" />
+			<xs:field xpath="@ID" />
+		</xs:key>
+	</xs:element>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/store.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/store.xsd
@@ -1,27 +1,27 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:element name="bookstore" type="bookstoreType"/>
-
- <xsd:complexType name="bookstoreType">
-  <xsd:sequence maxOccurs="unbounded">
-   <xsd:element name="book"  type="bookType"/>
-  </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="bookType">
-  <xsd:sequence>
-   <xsd:element name="title" type="xsd:string"/>
-   <xsd:element name="author" type="authorName"/>
-   <xsd:element name="price"  type="xsd:decimal"/>
-  </xsd:sequence>
-  <xsd:attribute name="genre" type="xsd:string"/>
- </xsd:complexType>
-
- <xsd:complexType name="authorName">
-  <xsd:sequence>
-   <xsd:element name="first-name"  type="xsd:string"/>
-   <xsd:element name="last-name" type="xsd:string"/>
-  </xsd:sequence>
- </xsd:complexType>
-
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="bookstore" type="bookstoreType"/>
+
+ <xsd:complexType name="bookstoreType">
+  <xsd:sequence maxOccurs="unbounded">
+   <xsd:element name="book"  type="bookType"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="bookType">
+  <xsd:sequence>
+   <xsd:element name="title" type="xsd:string"/>
+   <xsd:element name="author" type="authorName"/>
+   <xsd:element name="price"  type="xsd:decimal"/>
+  </xsd:sequence>
+  <xsd:attribute name="genre" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="authorName">
+  <xsd:sequence>
+   <xsd:element name="first-name"  type="xsd:string"/>
+   <xsd:element name="last-name" type="xsd:string"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
 </xsd:schema>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/store2.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/store2.xsd
@@ -1,27 +1,27 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:element name="bookstore">
-	 <xsd:complexType>
-	  <xsd:sequence maxOccurs="unbounded">
-	   <xsd:element name="book"  type="bookType"/>
-	  </xsd:sequence>
-	 </xsd:complexType>
- </xsd:element>
-
- <xsd:complexType name="bookType">
-  <xsd:sequence>
-   <xsd:element name="title" type="xsd:string"/>
-   <xsd:element name="author" type="authorName"/>
-   <xsd:element name="price"  type="xsd:decimal"/>
-  </xsd:sequence>
-  <xsd:attribute name="genre" type="xsd:string"/>
- </xsd:complexType>
-
- <xsd:complexType name="authorName">
-  <xsd:sequence>
-   <xsd:element name="first-name"  type="xsd:string"/>
-   <xsd:element name="last-name" type="xsd:string"/>
-  </xsd:sequence>
- </xsd:complexType>
-
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="bookstore">
+	 <xsd:complexType>
+	  <xsd:sequence maxOccurs="unbounded">
+	   <xsd:element name="book"  type="bookType"/>
+	  </xsd:sequence>
+	 </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="bookType">
+  <xsd:sequence>
+   <xsd:element name="title" type="xsd:string"/>
+   <xsd:element name="author" type="authorName"/>
+   <xsd:element name="price"  type="xsd:decimal"/>
+  </xsd:sequence>
+  <xsd:attribute name="genre" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="authorName">
+  <xsd:sequence>
+   <xsd:element name="first-name"  type="xsd:string"/>
+   <xsd:element name="last-name" type="xsd:string"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
 </xsd:schema>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/store3.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/store3.xsd
@@ -1,28 +1,28 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:element name="bookstore" type="bookstoreType"
-   msdata:IsDataSet="false" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" />
-
- <xsd:complexType name="bookstoreType">
-  <xsd:sequence maxOccurs="unbounded">
-   <xsd:element name="book"  type="bookType"/>
-  </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="bookType">
-  <xsd:sequence>
-   <xsd:element name="title" type="xsd:string"/>
-   <xsd:element name="author" type="authorName"/>
-   <xsd:element name="price"  type="xsd:decimal"/>
-  </xsd:sequence>
-  <xsd:attribute name="genre" type="xsd:string"/>
- </xsd:complexType>
-
- <xsd:complexType name="authorName">
-  <xsd:sequence>
-   <xsd:element name="first-name"  type="xsd:string"/>
-   <xsd:element name="last-name" type="xsd:string"/>
-  </xsd:sequence>
- </xsd:complexType>
-
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="bookstore" type="bookstoreType"
+   msdata:IsDataSet="false" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" />
+
+ <xsd:complexType name="bookstoreType">
+  <xsd:sequence maxOccurs="unbounded">
+   <xsd:element name="book"  type="bookType"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="bookType">
+  <xsd:sequence>
+   <xsd:element name="title" type="xsd:string"/>
+   <xsd:element name="author" type="authorName"/>
+   <xsd:element name="price"  type="xsd:decimal"/>
+  </xsd:sequence>
+  <xsd:attribute name="genre" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="authorName">
+  <xsd:sequence>
+   <xsd:element name="first-name"  type="xsd:string"/>
+   <xsd:element name="last-name" type="xsd:string"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
 </xsd:schema>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Data/store4.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Data/store4.xsd
@@ -1,36 +1,36 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:element name="bookstore">
-	 <xsd:complexType>
-	  <xsd:sequence maxOccurs="unbounded">
-	   <xsd:element name="book" >
- <xsd:complexType >
-  <xsd:sequence>
-   <xsd:element name="title" type="xsd:string"/>
-   <xsd:element name="author" type="authorName"/>
-   <xsd:element name="price"  type="xsd:decimal"/>
-  </xsd:sequence>
-  <xsd:attribute name="genre" type="xsd:string"/>
- </xsd:complexType>
-	   </xsd:element>
-	  </xsd:sequence>
-	 </xsd:complexType>
- </xsd:element>
-
- <xsd:complexType name="bookType">
-  <xsd:sequence>
-   <xsd:element name="title" type="xsd:string"/>
-   <xsd:element name="author" type="authorName"/>
-   <xsd:element name="price"  type="xsd:decimal"/>
-  </xsd:sequence>
-  <xsd:attribute name="genre" type="xsd:string"/>
- </xsd:complexType>
-
- <xsd:complexType name="authorName">
-  <xsd:sequence>
-   <xsd:element name="first-name"  type="xsd:string"/>
-   <xsd:element name="last-name" type="xsd:string"/>
-  </xsd:sequence>
- </xsd:complexType>
-
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:element name="bookstore">
+	 <xsd:complexType>
+	  <xsd:sequence maxOccurs="unbounded">
+	   <xsd:element name="book" >
+ <xsd:complexType >
+  <xsd:sequence>
+   <xsd:element name="title" type="xsd:string"/>
+   <xsd:element name="author" type="authorName"/>
+   <xsd:element name="price"  type="xsd:decimal"/>
+  </xsd:sequence>
+  <xsd:attribute name="genre" type="xsd:string"/>
+ </xsd:complexType>
+	   </xsd:element>
+	  </xsd:sequence>
+	 </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="bookType">
+  <xsd:sequence>
+   <xsd:element name="title" type="xsd:string"/>
+   <xsd:element name="author" type="authorName"/>
+   <xsd:element name="price"  type="xsd:decimal"/>
+  </xsd:sequence>
+  <xsd:attribute name="genre" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="authorName">
+  <xsd:sequence>
+   <xsd:element name="first-name"  type="xsd:string"/>
+   <xsd:element name="last-name" type="xsd:string"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
 </xsd:schema>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Xml/2books.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Xml/2books.xml
@@ -1,11 +1,11 @@
-<!--sample XML fragment-->
-<bookstore>
-  <book genre='novel' ISBN='10-861003-324'>
-    <title>The Handmaid's Tale</title>
-    <price>19.95</price>
-  </book>
-  <book genre='novel' ISBN='1-861001-57-5'>
-    <title>Pride And Prejudice</title>
-    <price>24.95</price>
-  </book>
-</bookstore>
+<!--sample XML fragment-->
+<bookstore>
+  <book genre='novel' ISBN='10-861003-324'>
+    <title>The Handmaid's Tale</title>
+    <price>19.95</price>
+  </book>
+  <book genre='novel' ISBN='1-861001-57-5'>
+    <title>Pride And Prejudice</title>
+    <price>24.95</price>
+  </book>
+</bookstore>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Xml/XmlDataDocumentTest2.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Xml/XmlDataDocumentTest2.cs
@@ -102,89 +102,89 @@ namespace MonoTests.System.Xml
 		[Test]
 		public void TestCreateElementAndRow ()
 		{
-			DataSet ds = new DataSet ("set");
-			DataTable dt = new DataTable ("tab1");
-			dt.Columns.Add ("col1");
-			dt.Columns.Add ("col2");
-			ds.Tables.Add (dt);
-			DataTable dt2 = new DataTable ("child");
-			dt2.Columns.Add ("ref");
-			dt2.Columns.Add ("val");
-			ds.Tables.Add (dt2);
-			DataRelation rel = new DataRelation ("rel",
-				dt.Columns [0], dt2.Columns [0]);
-			rel.Nested = true;
-			ds.Relations.Add (rel);
-			XmlDataDocument doc = new XmlDataDocument (ds);
-			doc.LoadXml ("<set><tab1><col1>1</col1><col2/><child><ref>1</ref><val>aaa</val></child></tab1></set>");
-			AssertEquals (1, ds.Tables [0].Rows.Count);
-			AssertEquals (1, ds.Tables [1].Rows.Count);
-
-			// document element - no mapped row
-			XmlElement el = doc.DocumentElement;
-			AssertNull (doc.GetRowFromElement (el));
-
-			// tab1 element - has mapped row
-			el = el.FirstChild as XmlElement;
-			DataRow row = doc.GetRowFromElement (el);
-			AssertNotNull (row);
-			AssertEquals (DataRowState.Added, row.RowState);
-
-			// col1 - it is column. no mapped row
-			el = el.FirstChild as XmlElement;
-			row = doc.GetRowFromElement (el);
-			AssertNull (row);
-
-			// col2 - it is column. np mapped row
-			el = el.NextSibling as XmlElement;
-			row = doc.GetRowFromElement (el);
-			AssertNull (row);
-
-			// child - has mapped row
-			el = el.NextSibling as XmlElement;
-			row = doc.GetRowFromElement (el);
-			AssertNotNull (row);
-			AssertEquals (DataRowState.Added, row.RowState);
-
-			// created (detached) table 1 element (used later)
-			el = doc.CreateElement ("tab1");
-			row = doc.GetRowFromElement (el);
-			AssertEquals (DataRowState.Detached, row.RowState);
-			AssertEquals (1, dt.Rows.Count); // not added yet
-
-			// adding a node before setting EnforceConstraints
-			// raises an error
-			try {
-				doc.DocumentElement.AppendChild (el);
-				Fail ("Invalid Operation should occur; EnforceConstraints prevents addition.");
-			} catch (InvalidOperationException) {
-			}
-
-			// try again...
-			ds.EnforceConstraints = false;
-			AssertEquals (1, dt.Rows.Count); // not added yet
-			doc.DocumentElement.AppendChild (el);
-			AssertEquals (2, dt.Rows.Count); // added
-			row = doc.GetRowFromElement (el);
-			AssertEquals (DataRowState.Added, row.RowState); // changed
-
-			// Irrelevant element
-			XmlElement el2 = doc.CreateElement ("hoge");
-			row = doc.GetRowFromElement (el2);
-			AssertNull (row);
-
-			// created table 2 element (used later)
-			el = doc.CreateElement ("child");
-			row = doc.GetRowFromElement (el);
-			AssertEquals (DataRowState.Detached, row.RowState);
-
-			// Adding it to irrelevant element performs no row state change.
-			AssertEquals (1, dt2.Rows.Count); // not added yet
-			el2.AppendChild (el);
-			AssertEquals (1, dt2.Rows.Count); // still not added
-			row = doc.GetRowFromElement (el);
-			AssertEquals (DataRowState.Detached, row.RowState); // still detached here
-		}
+			DataSet ds = new DataSet ("set");
+			DataTable dt = new DataTable ("tab1");
+			dt.Columns.Add ("col1");
+			dt.Columns.Add ("col2");
+			ds.Tables.Add (dt);
+			DataTable dt2 = new DataTable ("child");
+			dt2.Columns.Add ("ref");
+			dt2.Columns.Add ("val");
+			ds.Tables.Add (dt2);
+			DataRelation rel = new DataRelation ("rel",
+				dt.Columns [0], dt2.Columns [0]);
+			rel.Nested = true;
+			ds.Relations.Add (rel);
+			XmlDataDocument doc = new XmlDataDocument (ds);
+			doc.LoadXml ("<set><tab1><col1>1</col1><col2/><child><ref>1</ref><val>aaa</val></child></tab1></set>");
+			AssertEquals (1, ds.Tables [0].Rows.Count);
+			AssertEquals (1, ds.Tables [1].Rows.Count);
+
+			// document element - no mapped row
+			XmlElement el = doc.DocumentElement;
+			AssertNull (doc.GetRowFromElement (el));
+
+			// tab1 element - has mapped row
+			el = el.FirstChild as XmlElement;
+			DataRow row = doc.GetRowFromElement (el);
+			AssertNotNull (row);
+			AssertEquals (DataRowState.Added, row.RowState);
+
+			// col1 - it is column. no mapped row
+			el = el.FirstChild as XmlElement;
+			row = doc.GetRowFromElement (el);
+			AssertNull (row);
+
+			// col2 - it is column. np mapped row
+			el = el.NextSibling as XmlElement;
+			row = doc.GetRowFromElement (el);
+			AssertNull (row);
+
+			// child - has mapped row
+			el = el.NextSibling as XmlElement;
+			row = doc.GetRowFromElement (el);
+			AssertNotNull (row);
+			AssertEquals (DataRowState.Added, row.RowState);
+
+			// created (detached) table 1 element (used later)
+			el = doc.CreateElement ("tab1");
+			row = doc.GetRowFromElement (el);
+			AssertEquals (DataRowState.Detached, row.RowState);
+			AssertEquals (1, dt.Rows.Count); // not added yet
+
+			// adding a node before setting EnforceConstraints
+			// raises an error
+			try {
+				doc.DocumentElement.AppendChild (el);
+				Fail ("Invalid Operation should occur; EnforceConstraints prevents addition.");
+			} catch (InvalidOperationException) {
+			}
+
+			// try again...
+			ds.EnforceConstraints = false;
+			AssertEquals (1, dt.Rows.Count); // not added yet
+			doc.DocumentElement.AppendChild (el);
+			AssertEquals (2, dt.Rows.Count); // added
+			row = doc.GetRowFromElement (el);
+			AssertEquals (DataRowState.Added, row.RowState); // changed
+
+			// Irrelevant element
+			XmlElement el2 = doc.CreateElement ("hoge");
+			row = doc.GetRowFromElement (el2);
+			AssertNull (row);
+
+			// created table 2 element (used later)
+			el = doc.CreateElement ("child");
+			row = doc.GetRowFromElement (el);
+			AssertEquals (DataRowState.Detached, row.RowState);
+
+			// Adding it to irrelevant element performs no row state change.
+			AssertEquals (1, dt2.Rows.Count); // not added yet
+			el2.AppendChild (el);
+			AssertEquals (1, dt2.Rows.Count); // still not added
+			row = doc.GetRowFromElement (el);
+			AssertEquals (DataRowState.Detached, row.RowState); // still detached here
+		}
 
 		// bug #54505
 		public void TypedDataDocument ()
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Xml/region.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Xml/region.xsd
@@ -1,22 +1,22 @@
-<?xml version="1.0" standalone="yes"?>
-<!-- Note that the msdata namespace is incorrect (even mofifying any URI), however Root is regarded as dataset element under MS.NET -->
-<xsd:schema id="Root" xmlns=""
-xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="INCORRECT!!!-urn:schemas-microsoft-
-com:xml-msdata">
- <xsd:element name="Root" msdata:IsDataSet="true">
-   <xsd:complexType>
-     <xsd:choice maxOccurs="unbounded">
-       <xsd:element name="Region">
-         <xsd:complexType>
-           <xsd:sequence>
-             <xsd:element name="RegionID" type="xsd:string"
-             minOccurs="0" />
-             <xsd:element name="RegionDescription" type="xsd:string"
-             minOccurs="0" />
-           </xsd:sequence>
-         </xsd:complexType>
-       </xsd:element>
-     </xsd:choice>
-   </xsd:complexType>
- </xsd:element>
-</xsd:schema>
+<?xml version="1.0" standalone="yes"?>
+<!-- Note that the msdata namespace is incorrect (even mofifying any URI), however Root is regarded as dataset element under MS.NET -->
+<xsd:schema id="Root" xmlns=""
+xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="INCORRECT!!!-urn:schemas-microsoft-
+com:xml-msdata">
+ <xsd:element name="Root" msdata:IsDataSet="true">
+   <xsd:complexType>
+     <xsd:choice maxOccurs="unbounded">
+       <xsd:element name="Region">
+         <xsd:complexType>
+           <xsd:sequence>
+             <xsd:element name="RegionID" type="xsd:string"
+             minOccurs="0" />
+             <xsd:element name="RegionDescription" type="xsd:string"
+             minOccurs="0" />
+           </xsd:sequence>
+         </xsd:complexType>
+       </xsd:element>
+     </xsd:choice>
+   </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Data/Test/System.Xml/store.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Data/Test/System.Xml/store.xsd
@@ -1,27 +1,27 @@
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <xsd:complexType name="bookstoreType">
-  <xsd:sequence maxOccurs="unbounded">
-   <xsd:element name="book"  type="bookType"/>
-  </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="bookType">
-  <xsd:sequence>
-   <xsd:element name="title" type="xsd:string"/>
-   <xsd:element name="author" type="authorName"/>
-   <xsd:element name="price"  type="xsd:decimal"/>
-  </xsd:sequence>
-  <xsd:attribute name="genre" type="xsd:string"/>
- </xsd:complexType>
-
- <xsd:complexType name="authorName">
-  <xsd:sequence>
-   <xsd:element name="first-name"  type="xsd:string"/>
-   <xsd:element name="last-name" type="xsd:string"/>
-  </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="bookstore" type="bookstoreType"/>
-
-</xsd:schema>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:complexType name="bookstoreType">
+  <xsd:sequence maxOccurs="unbounded">
+   <xsd:element name="book"  type="bookType"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="bookType">
+  <xsd:sequence>
+   <xsd:element name="title" type="xsd:string"/>
+   <xsd:element name="author" type="authorName"/>
+   <xsd:element name="price"  type="xsd:decimal"/>
+  </xsd:sequence>
+  <xsd:attribute name="genre" type="xsd:string"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="authorName">
+  <xsd:sequence>
+   <xsd:element name="first-name"  type="xsd:string"/>
+   <xsd:element name="last-name" type="xsd:string"/>
+  </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="bookstore" type="bookstoreType"/>
+
+</xsd:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Design/Documentation/System.Design.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Design/Documentation/System.Design.xml
@@ -1,7034 +1,7034 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Design">
-    <class name="NMHEADER" namespace="System.Design">
-        <constructor name="NMHEADER" argnames="" />
-        <field name="hwndFrom" />
-        <field name="idFrom" />
-        <field name="code" />
-        <field name="iItem" />
-        <field name="iButton" />
-        <field name="pItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="POINT" namespace="System.Design">
-        <constructor name="POINT" argnames="" />
-        <constructor name="POINT(System.Int32, System.Int32)" argnames="x, y" />
-        <field name="x" />
-        <field name="y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TV_ITEM" namespace="System.Design">
-        <constructor name="TV_ITEM" argnames="" />
-        <field name="mask" />
-        <field name="hItem" />
-        <field name="state" />
-        <field name="stateMask" />
-        <field name="pszText" />
-        <field name="cchTextMax" />
-        <field name="iImage" />
-        <field name="iSelectedImage" />
-        <field name="cChildren" />
-        <field name="lParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMHDR" namespace="System.Design">
-        <constructor name="NMHDR" argnames="" />
-        <field name="hwndFrom" />
-        <field name="idFrom" />
-        <field name="code" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMTREEVIEW" namespace="System.Design">
-        <constructor name="NMTREEVIEW" argnames="" />
-        <field name="nmhdr" />
-        <field name="action" />
-        <field name="itemOld" />
-        <field name="itemNew" />
-        <field name="ptDrag" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TCHITTESTINFO" namespace="System.Design">
-        <constructor name="TCHITTESTINFO" argnames="" />
-        <field name="pt" />
-        <field name="flags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="COMRECT" namespace="System.Design">
-        <constructor name="COMRECT" argnames="" />
-        <constructor name="COMRECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
-        <field name="left" />
-        <field name="top" />
-        <field name="right" />
-        <field name="bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Design.NativeMethods+COMRECT" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FORMATETC" namespace="System.Design">
-        <constructor name="FORMATETC" argnames="" />
-        <field name="cfFormat" />
-        <field name="ptd" />
-        <field name="dwAspect" />
-        <field name="lindex" />
-        <field name="tymed" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="STGMEDIUM" namespace="System.Design">
-        <constructor name="STGMEDIUM" argnames="" />
-        <field name="tymed" />
-        <field name="unionmember" />
-        <field name="pUnkForRelease" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OLECMD" namespace="System.Design">
-        <constructor name="OLECMD" argnames="" />
-        <field name="cmdID" />
-        <field name="cmdf" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagOIFI" namespace="System.Design">
-        <constructor name="tagOIFI" argnames="" />
-        <field name="cb" />
-        <field name="fMDIApp" />
-        <field name="hwndFrame" />
-        <field name="hAccel" />
-        <field name="cAccelEntries" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagSIZE" namespace="System.Design">
-        <constructor name="tagSIZE" argnames="" />
-        <field name="cx" />
-        <field name="cy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagSIZEL" namespace="System.Design">
-        <constructor name="tagSIZEL" argnames="" />
-        <field name="cx" />
-        <field name="cy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagLOGPALETTE" namespace="System.Design">
-        <constructor name="tagLOGPALETTE" argnames="" />
-        <field name="palVersion" />
-        <field name="palNumEntries" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DOCHOSTUIDBLCLICK" namespace="System.Design">
-        <constructor name="DOCHOSTUIDBLCLICK" argnames="" />
-        <field name="DEFAULT" />
-        <field name="SHOWPROPERTIES" />
-        <field name="SHOWCODE" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DOCHOSTUIFLAG" namespace="System.Design">
-        <constructor name="DOCHOSTUIFLAG" argnames="" />
-        <field name="DIALOG" />
-        <field name="DISABLE_HELP_MENU" />
-        <field name="NO3DBORDER" />
-        <field name="SCROLL_NO" />
-        <field name="DISABLE_SCRIPT_INACTIVE" />
-        <field name="OPENNEWWIN" />
-        <field name="DISABLE_OFFSCREEN" />
-        <field name="FLAT_SCROLLBAR" />
-        <field name="DIV_BLOCKDEFAULT" />
-        <field name="ACTIVATE_CLIENTHIT_ONLY" />
-        <field name="DISABLE_COOKIE" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DOCHOSTUIINFO" namespace="System.Design">
-        <constructor name="DOCHOSTUIINFO" argnames="" />
-        <field name="cbSize" />
-        <field name="dwFlags" />
-        <field name="dwDoubleClick" />
-        <field name="dwReserved1" />
-        <field name="dwReserved2" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HTMLDocument" namespace="System.Design">
-        <constructor name="HTMLDocument" argnames="" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HDHITTESTINFO" namespace="System.Design">
-        <constructor name="HDHITTESTINFO" argnames="" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <field name="flags" />
-        <field name="iItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagOLEVERB" namespace="System.Design">
-        <constructor name="tagOLEVERB" argnames="" />
-        <field name="lVerb" />
-        <field name="lpszVerbName" />
-        <field name="fuFlags" />
-        <field name="grfAttribs" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TV_HITTESTINFO" namespace="System.Design">
-        <constructor name="TV_HITTESTINFO" argnames="" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <field name="flags" />
-        <field name="hItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CommonHandles" namespace="System.Design">
-        <constructor name="CommonHandles" argnames="" />
-        <field name="Accelerator" />
-        <field name="Cursor" />
-        <field name="EMF" />
-        <field name="Find" />
-        <field name="GDI" />
-        <field name="HDC" />
-        <field name="Icon" />
-        <field name="Kernel" />
-        <field name="Menu" />
-        <field name="Window" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HandleCollector" namespace="System.Design">
-        <constructor name="HandleCollector" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
-        <method name="RegisterType(System.String, System.Int32, System.Int32)" argnames="typeName, expense, initialThreshold" returntype="System.Int32" />
-        <method name="Remove(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="HandleAdded" />
-        <event name="HandleRemoved" />
-    </class>
-    <class name="STATDATA" namespace="System.Design">
-        <constructor name="STATDATA" argnames="" />
-        <field name="advf" />
-        <field name="dwConnection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BROWSEINFO" namespace="System.Design">
-        <constructor name="BROWSEINFO" argnames="" />
-        <field name="hwndOwner" />
-        <field name="pidlRoot" />
-        <field name="pszDisplayName" />
-        <field name="lpszTitle" />
-        <field name="ulFlags" />
-        <field name="lpfn" />
-        <field name="lParam" />
-        <field name="iImage" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Shell32" namespace="System.Design">
-        <constructor name="Shell32" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SHGetSpecialFolderLocation(System.IntPtr, System.Int32, System.IntPtr&amp;)" argnames="hwnd, csidl, ppidl" returntype="System.Int32" />
-        <method name="SHGetPathFromIDList(System.IntPtr, System.IntPtr)" argnames="pidl, pszPath" returntype="System.Boolean" />
-        <method name="SHBrowseForFolder(System.Design.UnsafeNativeMethods.BROWSEINFO)" argnames="lpbi" returntype="System.IntPtr" />
-        <method name="SHGetMalloc(System.Design.UnsafeNativeMethods.IMalloc[])" argnames="ppMalloc" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IDocHostUIHandler" namespace="System.Design">
-        <method name="FilterDataObject(System.Design.NativeMethods.IOleDataObject, System.Design.NativeMethods.IOleDataObject&amp;)" argnames="pDO, ppDORet" returntype="System.Int32" />
-        <method name="TranslateUrl(System.Int32, System.String, System.String&amp;)" argnames="dwTranslate, strURLIn, pstrURLOut" returntype="System.Int32" />
-        <method name="GetExternal(System.Object&amp;)" argnames="ppDispatch" returntype="System.Int32" />
-        <method name="GetDropTarget(System.Design.NativeMethods.IOleDropTarget, System.Design.NativeMethods.IOleDropTarget&amp;)" argnames="pDropTarget, ppDropTarget" returntype="System.Int32" />
-        <method name="GetOptionKeyPath(System.String[], System.Int32)" argnames="pbstrKey, dw" returntype="System.Int32" />
-        <method name="TranslateAccelerator(System.Design.NativeMethods.MSG&amp;, System.Guid&amp;, System.Int32)" argnames="msg, group, nCmdID" returntype="System.Int32" />
-        <method name="ResizeBorder(System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.IOleInPlaceUIWindow, System.Boolean)" argnames="rect, doc, fFrameWindow" returntype="System.Int32" />
-        <method name="OnFrameWindowActivate(System.Boolean)" argnames="fActivate" returntype="System.Int32" />
-        <method name="OnDocWindowActivate(System.Boolean)" argnames="fActivate" returntype="System.Int32" />
-        <method name="EnableModeless(System.Boolean)" argnames="fEnable" returntype="System.Int32" />
-        <method name="UpdateUI" argnames="" returntype="System.Int32" />
-        <method name="HideUI" argnames="" returntype="System.Int32" />
-        <method name="ShowUI(System.Int32, System.Design.NativeMethods.IOleInPlaceActiveObject, System.Design.NativeMethods.IOleCommandTarget, System.Design.NativeMethods.IOleInPlaceFrame, System.Design.NativeMethods.IOleInPlaceUIWindow)" argnames="dwID, activeObject, commandTarget, frame, doc" returntype="System.Int32" />
-        <method name="GetHostInfo(System.Design.NativeMethods.DOCHOSTUIINFO)" argnames="info" returntype="System.Int32" />
-        <method name="ShowContextMenu(System.Int32, System.Design.NativeMethods.POINT, System.Object, System.Object)" argnames="dwID, pt, pcmdtReserved, pdispReserved" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleDataObject" namespace="System.Design">
-        <method name="OleEnumDAdvise(System.Object[])" argnames="ppenumAdvise" returntype="System.Int32" />
-        <method name="OleDUnadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
-        <method name="OleDAdvise(System.Design.NativeMethods.FORMATETC, System.Int32, System.Object, System.Int32[])" argnames="pFormatetc, advf, pAdvSink, pdwConnection" returntype="System.Int32" />
-        <method name="OleEnumFormatEtc(System.Int32)" argnames="dwDirection" returntype="System.Object" />
-        <method name="OleSetData(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM, System.Int32)" argnames="pFormatectIn, pmedium, fRelease" returntype="System.Int32" />
-        <method name="OleGetCanonicalFormatEtc(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.FORMATETC)" argnames="pformatectIn, pformatetcOut" returntype="System.Int32" />
-        <method name="OleQueryGetData(System.Design.NativeMethods.FORMATETC)" argnames="pFormatetc" returntype="System.Int32" />
-        <method name="OleGetDataHere(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
-        <method name="OleGetData(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleDropTarget" namespace="System.Design">
-        <method name="OleDrop(System.Design.NativeMethods.IOleDataObject, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
-        <method name="OleDragLeave" argnames="" returntype="System.Int32" />
-        <method name="OleDragOver(System.Int32, System.Int64, System.Int32&amp;)" argnames="grfKeyState, pt, pdwEffect" returntype="System.Int32" />
-        <method name="OleDragEnter(System.Design.NativeMethods.IOleDataObject, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleCommandTarget" namespace="System.Design">
-        <method name="Exec(System.Guid&amp;, System.Int32, System.Int32, System.Object[], System.IntPtr)" argnames="pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut" returntype="System.Int32" />
-        <method name="QueryStatus(System.Guid&amp;, System.Int32, System.Design.NativeMethods.OLECMD, System.String)" argnames="pguidCmdGroup, cCmds, prgCmds, pCmdText" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleInPlaceFrame" namespace="System.Design">
-        <method name="TranslateAccelerator(System.Design.NativeMethods.MSG&amp;, System.Int16)" argnames="lpmsg, wID" returntype="System.Int32" />
-        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Void" />
-        <method name="SetStatusText(System.String)" argnames="pszStatusText" returntype="System.Void" />
-        <method name="RemoveMenus(System.IntPtr)" argnames="hmenuShared" returntype="System.Void" />
-        <method name="SetMenu(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="hmenuShared, holemenu, hwndActiveObject" returntype="System.Void" />
-        <method name="InsertMenus(System.IntPtr, System.Object)" argnames="hmenuShared, lpMenuWidths" returntype="System.Void" />
-        <method name="SetActiveObject(System.Design.NativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Void" />
-        <method name="SetBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
-        <method name="RequestBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
-        <method name="GetBorder(System.Design.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Void" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <interface name="IOleInPlaceUIWindow" namespace="System.Design">
-        <method name="SetActiveObject(System.Design.NativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Void" />
-        <method name="SetBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
-        <method name="RequestBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
-        <method name="GetBorder(System.Design.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Void" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <interface name="IOleInPlaceActiveObject" namespace="System.Design">
-        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Void" />
-        <method name="ResizeBorder(System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.IOleInPlaceUIWindow, System.Int32)" argnames="prcBorder, pUIWindow, fFrameWindow" returntype="System.Void" />
-        <method name="OnDocWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
-        <method name="OnFrameWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
-        <method name="TranslateAccelerator(System.Design.NativeMethods.MSG&amp;)" argnames="lpmsg" returntype="System.Int32" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleContainer" namespace="System.Design">
-        <method name="LockContainer(System.Int32)" argnames="fLock" returntype="System.Void" />
-        <method name="EnumObjects(System.Int32, System.Object&amp;)" argnames="grfFlags, ppenum" returntype="System.Void" />
-        <method name="ParseDisplayName(System.Object, System.String, System.Int32[], System.Object[])" argnames="pbc, pszDisplayName, pchEaten, ppmkOut" returntype="System.Void" />
-    </interface>
-    <interface name="IOleClientSite" namespace="System.Design">
-        <method name="RequestNewObjectLayout" argnames="" returntype="System.Void" />
-        <method name="OnShowWindow(System.Int32)" argnames="fShow" returntype="System.Void" />
-        <method name="ShowObject" argnames="" returntype="System.Void" />
-        <method name="GetContainer(System.Design.NativeMethods.IOleContainer&amp;)" argnames="ppContainer" returntype="System.Int32" />
-        <method name="GetMoniker(System.Int32, System.Int32)" argnames="dwAssign, dwWhichMoniker" returntype="System.Object" />
-        <method name="SaveObject" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IOleDocumentSite" namespace="System.Design">
-        <method name="ActivateMe(System.Design.NativeMethods.IOleDocumentView)" argnames="pViewToActivate" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleDocumentView" namespace="System.Design">
-        <method name="Clone(System.Design.NativeMethods.IOleInPlaceSite, System.Design.NativeMethods.IOleDocumentView[])" argnames="pIPSiteNew, ppViewNew" returntype="System.Void" />
-        <method name="ApplyViewState(System.Design.NativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
-        <method name="SaveViewState(System.Design.NativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
-        <method name="CloseView(System.Int32)" argnames="dwReserved" returntype="System.Void" />
-        <method name="Open" argnames="" returntype="System.Void" />
-        <method name="UIActivate(System.Int32)" argnames="fUIActivate" returntype="System.Void" />
-        <method name="Show(System.Int32)" argnames="fShow" returntype="System.Void" />
-        <method name="SetRectComplex(System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT)" argnames="prcView, prcHScroll, prcVScroll, prcSizeBox" returntype="System.Void" />
-        <method name="GetRect(System.Design.NativeMethods.COMRECT)" argnames="prcView" returntype="System.Void" />
-        <method name="SetRect(System.Design.NativeMethods.COMRECT)" argnames="prcView" returntype="System.Void" />
-        <method name="GetDocument" argnames="" returntype="System.Object" />
-        <method name="GetInPlaceSite" argnames="" returntype="System.Design.NativeMethods+IOleInPlaceSite" />
-        <method name="SetInPlaceSite(System.Design.NativeMethods.IOleInPlaceSite)" argnames="pIPSite" returntype="System.Void" />
-    </interface>
-    <interface name="IOleInPlaceSite" namespace="System.Design">
-        <method name="OnPosRectChange(System.Design.NativeMethods.COMRECT)" argnames="lprcPosRect" returntype="System.Int32" />
-        <method name="DeactivateAndUndo" argnames="" returntype="System.Void" />
-        <method name="DiscardUndoState" argnames="" returntype="System.Void" />
-        <method name="OnInPlaceDeactivate" argnames="" returntype="System.Void" />
-        <method name="OnUIDeactivate(System.Int32)" argnames="fUndoable" returntype="System.Void" />
-        <method name="Scroll(System.Design.NativeMethods.tagSIZE)" argnames="scrollExtant" returntype="System.Int32" />
-        <method name="GetWindowContext(System.Design.NativeMethods.IOleInPlaceFrame&amp;, System.Design.NativeMethods.IOleInPlaceUIWindow&amp;, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.tagOIFI)" argnames="ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo" returntype="System.Void" />
-        <method name="OnUIActivate" argnames="" returntype="System.Void" />
-        <method name="OnInPlaceActivate" argnames="" returntype="System.Void" />
-        <method name="CanInPlaceActivate" argnames="" returntype="System.Int32" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <interface name="IStream" namespace="System.Design">
-        <method name="Clone" argnames="" returntype="System.Design.NativeMethods+IStream" />
-        <method name="Stat(System.IntPtr, System.Int32)" argnames="pStatstg, grfStatFlag" returntype="System.Void" />
-        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="Revert" argnames="" returntype="System.Void" />
-        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
-        <method name="CopyTo(System.Design.NativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
-        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.Int32)" argnames="dlibMove, dwOrigin" returntype="System.Int64" />
-        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
-        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleObject" namespace="System.Design">
-        <method name="SetColorScheme(System.Design.NativeMethods.tagLOGPALETTE)" argnames="pLogpal" returntype="System.Int32" />
-        <method name="GetMiscStatus(System.Int32, System.Int32&amp;)" argnames="dwAspect, misc" returntype="System.Int32" />
-        <method name="EnumAdvise(System.Object&amp;)" argnames="e" returntype="System.Int32" />
-        <method name="Unadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
-        <method name="Advise(System.Design.NativeMethods.IAdviseSink, System.Int32&amp;)" argnames="pAdvSink, cookie" returntype="System.Int32" />
-        <method name="GetExtent(System.Int32, System.Design.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
-        <method name="SetExtent(System.Int32, System.Design.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
-        <method name="GetUserType(System.Int32, System.String&amp;)" argnames="dwFormOfType, userType" returntype="System.Int32" />
-        <method name="GetUserClassID(System.Guid&amp;)" argnames="pClsid" returntype="System.Int32" />
-        <method name="IsUpToDate" argnames="" returntype="System.Int32" />
-        <method name="OleUpdate" argnames="" returntype="System.Int32" />
-        <method name="EnumVerbs(System.Design.NativeMethods.IEnumOLEVERB&amp;)" argnames="e" returntype="System.Int32" />
-        <method name="DoVerb(System.Int32, System.IntPtr, System.Design.NativeMethods.IOleClientSite, System.Int32, System.IntPtr, System.Design.NativeMethods.COMRECT)" argnames="iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect" returntype="System.Int32" />
-        <method name="GetClipboardData(System.Int32, System.Design.NativeMethods.IOleDataObject&amp;)" argnames="dwReserved, data" returntype="System.Int32" />
-        <method name="InitFromData(System.Design.NativeMethods.IOleDataObject, System.Int32, System.Int32)" argnames="pDataObject, fCreation, dwReserved" returntype="System.Int32" />
-        <method name="GetMoniker(System.Int32, System.Int32, System.Object&amp;)" argnames="dwAssign, dwWhichMoniker, moniker" returntype="System.Int32" />
-        <method name="SetMoniker(System.Int32, System.Object)" argnames="dwWhichMoniker, pmk" returntype="System.Int32" />
-        <method name="Close(System.Int32)" argnames="dwSaveOption" returntype="System.Int32" />
-        <method name="SetHostNames(System.String, System.String)" argnames="szContainerApp, szContainerObj" returntype="System.Int32" />
-        <method name="GetClientSite(System.Design.NativeMethods.IOleClientSite&amp;)" argnames="site" returntype="System.Int32" />
-        <method name="SetClientSite(System.Design.NativeMethods.IOleClientSite)" argnames="pClientSite" returntype="System.Int32" />
-    </interface>
-    <interface name="IAdviseSink" namespace="System.Design">
-        <method name="OnClose" argnames="" returntype="System.Void" />
-        <method name="OnSave" argnames="" returntype="System.Void" />
-        <method name="OnRename(System.Object)" argnames="pmk" returntype="System.Void" />
-        <method name="OnViewChange(System.Int32, System.Int32)" argnames="dwAspect, lindex" returntype="System.Void" />
-        <method name="OnDataChange(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pStgmed" returntype="System.Void" />
-    </interface>
-    <interface name="IPersistStreamInit" namespace="System.Design">
-        <method name="InitNew" argnames="" returntype="System.Void" />
-        <method name="GetSizeMax(System.Int64)" argnames="pcbSize" returntype="System.Void" />
-        <method name="Save(System.Design.NativeMethods.IStream, System.Boolean)" argnames="pstm, fClearDirty" returntype="System.Void" />
-        <method name="Load(System.Design.NativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
-        <method name="IsDirty" argnames="" returntype="System.Int32" />
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
-    </interface>
-    <interface name="IHTMLDocument" namespace="System.Design">
-        <method name="GetScript" argnames="" returntype="System.Object" />
-    </interface>
-    <interface name="IHTMLDocument2" namespace="System.Design">
-        <method name="CreateStyleSheet(System.String, System.Int32)" argnames="bstrHref, lIndex" returntype="System.Design.NativeMethods+IHTMLStyleSheet" />
-        <method name="toString" argnames="" returntype="System.String" />
-        <method name="GetOnerrorupdate" argnames="" returntype="System.Object" />
-        <method name="SetOnerrorupdate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnbeforeupdate" argnames="" returntype="System.Object" />
-        <method name="SetOnbeforeupdate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetStyleSheets" argnames="" returntype="System.Object" />
-        <method name="GetParentWindow" argnames="" returntype="System.Object" />
-        <method name="ElementFromPoint(System.Int32, System.Int32)" argnames="x, y" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="GetOnselectstart" argnames="" returntype="System.Object" />
-        <method name="SetOnselectstart(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndragstart" argnames="" returntype="System.Object" />
-        <method name="SetOndragstart(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnrowenter" argnames="" returntype="System.Object" />
-        <method name="SetOnrowenter(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnrowexit" argnames="" returntype="System.Object" />
-        <method name="SetOnrowexit(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnafterupdate" argnames="" returntype="System.Object" />
-        <method name="SetOnafterupdate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnreadystatechange" argnames="" returntype="System.Object" />
-        <method name="SetOnreadystatechange(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmouseover" argnames="" returntype="System.Object" />
-        <method name="SetOnmouseover(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmouseout" argnames="" returntype="System.Object" />
-        <method name="SetOnmouseout(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmousemove" argnames="" returntype="System.Object" />
-        <method name="SetOnmousemove(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmousedown" argnames="" returntype="System.Object" />
-        <method name="SetOnmousedown(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmouseup" argnames="" returntype="System.Object" />
-        <method name="SetOnmouseup(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnkeypress" argnames="" returntype="System.Object" />
-        <method name="SetOnkeypress(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnkeydown" argnames="" returntype="System.Object" />
-        <method name="SetOnkeydown(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnkeyup" argnames="" returntype="System.Object" />
-        <method name="SetOnkeyup(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndblclick" argnames="" returntype="System.Object" />
-        <method name="SetOndblclick(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnclick" argnames="" returntype="System.Object" />
-        <method name="SetOnclick(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnhelp" argnames="" returntype="System.Object" />
-        <method name="SetOnhelp(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="CreateElement(System.String)" argnames="eTag" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="ExecCommandShowHelp(System.String)" argnames="cmdID" returntype="System.Boolean" />
-        <method name="ExecCommand(System.String, System.Boolean, System.Object)" argnames="cmdID, showUI, value" returntype="System.Boolean" />
-        <method name="QueryCommandValue(System.String)" argnames="cmdID" returntype="System.Object" />
-        <method name="QueryCommandText(System.String)" argnames="cmdID" returntype="System.String" />
-        <method name="QueryCommandIndeterm(System.String)" argnames="cmdID" returntype="System.Boolean" />
-        <method name="QueryCommandState(System.String)" argnames="cmdID" returntype="System.Boolean" />
-        <method name="QueryCommandEnabled(System.String)" argnames="cmdID" returntype="System.Boolean" />
-        <method name="QueryCommandSupported(System.String)" argnames="cmdID" returntype="System.Boolean" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Open(System.String, System.Object, System.Object, System.Object)" argnames="URL, name, features, replace" returntype="System.Object" />
-        <method name="DummyWriteln(System.Int32)" argnames="psarray" returntype="System.Void" />
-        <method name="DummyWrite(System.Int32)" argnames="psarray" returntype="System.Void" />
-        <method name="GetNameProp" argnames="" returntype="System.String" />
-        <method name="GetProtocol" argnames="" returntype="System.String" />
-        <method name="GetSecurity" argnames="" returntype="System.String" />
-        <method name="GetFileUpdatedDate" argnames="" returntype="System.String" />
-        <method name="GetFileModifiedDate" argnames="" returntype="System.String" />
-        <method name="GetFileCreatedDate" argnames="" returntype="System.String" />
-        <method name="GetFileSize" argnames="" returntype="System.String" />
-        <method name="GetMimeType" argnames="" returntype="System.String" />
-        <method name="GetDefaultCharset" argnames="" returntype="System.String" />
-        <method name="SetDefaultCharset(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetCharset" argnames="" returntype="System.String" />
-        <method name="SetCharset(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetExpando" argnames="" returntype="System.Boolean" />
-        <method name="SetExpando(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetCookie" argnames="" returntype="System.String" />
-        <method name="SetCookie(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetDomain" argnames="" returntype="System.String" />
-        <method name="SetDomain(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetURL" argnames="" returntype="System.String" />
-        <method name="SetURL(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetLastModified" argnames="" returntype="System.String" />
-        <method name="GetLocation" argnames="" returntype="System.Object" />
-        <method name="GetReferrer" argnames="" returntype="System.String" />
-        <method name="GetVlinkColor" argnames="" returntype="System.Object" />
-        <method name="SetVlinkColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetLinkColor" argnames="" returntype="System.Object" />
-        <method name="SetLinkColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetFgColor" argnames="" returntype="System.Object" />
-        <method name="SetFgColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBgColor" argnames="" returntype="System.Object" />
-        <method name="SetBgColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetAlinkColor" argnames="" returntype="System.Object" />
-        <method name="SetAlinkColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetPlugins" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetEmbeds" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetFrames" argnames="" returntype="System.Object" />
-        <method name="GetReadyState" argnames="" returntype="System.String" />
-        <method name="GetSelection" argnames="" returntype="System.Object" />
-        <method name="GetDesignMode" argnames="" returntype="System.String" />
-        <method name="SetDesignMode(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetScripts" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetTitle" argnames="" returntype="System.String" />
-        <method name="SetTitle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetAnchors" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetForms" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetLinks" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetApplets" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetImages" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetActiveElement" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="GetBody" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="GetAll" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetScript" argnames="" returntype="System.Object" />
-    </interface>
-    <interface name="IHTMLElement" namespace="System.Design">
-        <method name="GetAll" argnames="" returntype="System.Object" />
-        <method name="GetChildren" argnames="" returntype="System.Object" />
-        <method name="GetOnfilterchange" argnames="" returntype="System.Object" />
-        <method name="SetOnfilterchange(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndatasetcomplete" argnames="" returntype="System.Object" />
-        <method name="SetOndatasetcomplete(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndataavailable" argnames="" returntype="System.Object" />
-        <method name="SetOndataavailable(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndatasetchanged" argnames="" returntype="System.Object" />
-        <method name="SetOndatasetchanged(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnrowenter" argnames="" returntype="System.Object" />
-        <method name="SetOnrowenter(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnrowexit" argnames="" returntype="System.Object" />
-        <method name="SetOnrowexit(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnerrorupdate" argnames="" returntype="System.Object" />
-        <method name="SetOnerrorupdate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnafterupdate" argnames="" returntype="System.Object" />
-        <method name="SetOnafterupdate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnbeforeupdate" argnames="" returntype="System.Object" />
-        <method name="SetOnbeforeupdate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="toString" argnames="" returntype="System.String" />
-        <method name="GetOndragstart" argnames="" returntype="System.Object" />
-        <method name="SetOndragstart(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetFilters" argnames="" returntype="System.Object" />
-        <method name="Click" argnames="" returntype="System.Void" />
-        <method name="GetIsTextEdit" argnames="" returntype="System.Boolean" />
-        <method name="GetParentTextEdit" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="InsertAdjacentText(System.String, System.String)" argnames="where, text" returntype="System.Void" />
-        <method name="InsertAdjacentHTML(System.String, System.String)" argnames="where, html" returntype="System.Void" />
-        <method name="GetOuterText" argnames="" returntype="System.String" />
-        <method name="SetOuterText(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetOuterHTML" argnames="" returntype="System.String" />
-        <method name="SetOuterHTML(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetInnerText" argnames="" returntype="System.String" />
-        <method name="SetInnerText(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetInnerHTML" argnames="" returntype="System.String" />
-        <method name="SetInnerHTML(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetOffsetParent" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="GetOffsetHeight" argnames="" returntype="System.Int32" />
-        <method name="GetOffsetWidth" argnames="" returntype="System.Int32" />
-        <method name="GetOffsetTop" argnames="" returntype="System.Int32" />
-        <method name="GetOffsetLeft" argnames="" returntype="System.Int32" />
-        <method name="GetLang" argnames="" returntype="System.String" />
-        <method name="SetLang(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetRecordNumber" argnames="" returntype="System.Object" />
-        <method name="GetSourceIndex" argnames="" returntype="System.Int32" />
-        <method name="Contains(System.Design.NativeMethods.IHTMLElement)" argnames="pChild" returntype="System.Boolean" />
-        <method name="ScrollIntoView(System.Object)" argnames="varargStart" returntype="System.Void" />
-        <method name="GetOnselectstart" argnames="" returntype="System.Object" />
-        <method name="SetOnselectstart(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetLanguage" argnames="" returntype="System.String" />
-        <method name="SetLanguage(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetTitle" argnames="" returntype="System.String" />
-        <method name="SetTitle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetDocument" argnames="" returntype="System.Design.NativeMethods+IHTMLDocument2" />
-        <method name="GetOnmouseup" argnames="" returntype="System.Object" />
-        <method name="SetOnmouseup(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmousedown" argnames="" returntype="System.Object" />
-        <method name="SetOnmousedown(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmousemove" argnames="" returntype="System.Object" />
-        <method name="SetOnmousemove(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmouseover" argnames="" returntype="System.Object" />
-        <method name="SetOnmouseover(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmouseout" argnames="" returntype="System.Object" />
-        <method name="SetOnmouseout(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnkeypress" argnames="" returntype="System.Object" />
-        <method name="SetOnkeypress(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnkeyup" argnames="" returntype="System.Object" />
-        <method name="SetOnkeyup(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnkeydown" argnames="" returntype="System.Object" />
-        <method name="SetOnkeydown(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndblclick" argnames="" returntype="System.Object" />
-        <method name="SetOndblclick(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnclick" argnames="" returntype="System.Object" />
-        <method name="SetOnclick(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnhelp" argnames="" returntype="System.Object" />
-        <method name="SetOnhelp(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
-        <method name="GetParentElement" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="GetTagName" argnames="" returntype="System.String" />
-        <method name="GetId" argnames="" returntype="System.String" />
-        <method name="SetId(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetClassName" argnames="" returntype="System.String" />
-        <method name="SetClassName(System.String)" argnames="p" returntype="System.Void" />
-        <method name="RemoveAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Boolean" />
-        <method name="GetAttribute(System.String, System.Int32, System.Object[])" argnames="strAttributeName, lFlags, pvars" returntype="System.Void" />
-        <method name="SetAttribute(System.String, System.Object, System.Int32)" argnames="strAttributeName, AttributeValue, lFlags" returntype="System.Void" />
-    </interface>
-    <interface name="IHTMLElement2" namespace="System.Design">
-        <method name="GetBehavior(System.String, System.String)" argnames="bstrName, bstrUrn" returntype="System.Object" />
-        <method name="GetOnkeydownpreview" argnames="" returntype="System.Object" />
-        <method name="SetOnkeydownpreview(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnmousehover" argnames="" returntype="System.Object" />
-        <method name="SetOnmousehover(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBaseRuntimeStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
-        <method name="GetBaseCurrentStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLCurrentStyle" />
-        <method name="GetBaseStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
-        <method name="GetElementsByTagName(System.String)" argnames="v" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
-        <method name="GetReadyStateValue" argnames="" returntype="System.Int32" />
-        <method name="GetOnbeforeeditfocus" argnames="" returntype="System.Object" />
-        <method name="SetOnbeforeeditfocus(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetTagUrn" argnames="" returntype="System.String" />
-        <method name="SetTagUrn(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBehaviorUrns" argnames="" returntype="System.Object" />
-        <method name="GetRuntimeStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
-        <method name="RemoveBehavior(System.Int32)" argnames="cookie" returntype="System.Boolean" />
-        <method name="AddBehavior(System.String, System.Object&amp;)" argnames="bstrUrl, pvarFactory" returntype="System.Int32" />
-        <method name="GetCanHaveChildren" argnames="" returntype="System.Boolean" />
-        <method name="ReplaceAdjacentText(System.String, System.String)" argnames="where, newText" returntype="System.String" />
-        <method name="GetAdjacentText(System.String)" argnames="where" returntype="System.String" />
-        <method name="ApplyElement(System.Design.NativeMethods.IHTMLElement, System.String)" argnames="apply, where" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="InsertAdjacentElement(System.String, System.Design.NativeMethods.IHTMLElement)" argnames="where, insertedElement" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="GetOncontextmenu" argnames="" returntype="System.Object" />
-        <method name="SetOncontextmenu(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="MergeAttributes(System.Design.NativeMethods.IHTMLElement)" argnames="mergeThis" returntype="System.Void" />
-        <method name="ClearAttributes" argnames="" returntype="System.Void" />
-        <method name="GetScrollLeft" argnames="" returntype="System.Int32" />
-        <method name="SetScrollLeft(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetScrollTop" argnames="" returntype="System.Int32" />
-        <method name="SetScrollTop(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetScrollWidth" argnames="" returntype="System.Int32" />
-        <method name="GetScrollHeight" argnames="" returntype="System.Int32" />
-        <method name="CreateControlRange" argnames="" returntype="System.Object" />
-        <method name="GetDir" argnames="" returntype="System.String" />
-        <method name="SetDir(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetOncellchange" argnames="" returntype="System.Object" />
-        <method name="SetOncellchange(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnrowsinserted" argnames="" returntype="System.Object" />
-        <method name="SetOnrowsinserted(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnrowsdelete" argnames="" returntype="System.Object" />
-        <method name="SetOnrowsdelete(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnreadystatechange" argnames="" returntype="System.Object" />
-        <method name="SetOnreadystatechange(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetReadyState" argnames="" returntype="System.Object" />
-        <method name="DetachEvent(System.String, System.Object)" argnames="ev, pdisp" returntype="System.Void" />
-        <method name="AttachEvent(System.String, System.Object)" argnames="ev, pdisp" returntype="System.Boolean" />
-        <method name="GetClientLeft" argnames="" returntype="System.Int32" />
-        <method name="GetClientTop" argnames="" returntype="System.Int32" />
-        <method name="GetClientWidth" argnames="" returntype="System.Int32" />
-        <method name="GetClientHeight" argnames="" returntype="System.Int32" />
-        <method name="RemoveFilter(System.Object)" argnames="pUnk" returntype="System.Void" />
-        <method name="AddFilter(System.Object)" argnames="pUnk" returntype="System.Void" />
-        <method name="Blur" argnames="" returntype="System.Void" />
-        <method name="GetOnresize" argnames="" returntype="System.Object" />
-        <method name="SetOnresize(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnfocus" argnames="" returntype="System.Object" />
-        <method name="SetOnfocus(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnblur" argnames="" returntype="System.Object" />
-        <method name="SetOnblur(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetAccessKey" argnames="" returntype="System.String" />
-        <method name="SetAccessKey(System.String)" argnames="p" returntype="System.Void" />
-        <method name="Focus" argnames="" returntype="System.Void" />
-        <method name="GetTabIndex" argnames="" returntype="System.Int16" />
-        <method name="SetTabIndex(System.Int16)" argnames="p" returntype="System.Void" />
-        <method name="RemoveExpression(System.String)" argnames="propname" returntype="System.Boolean" />
-        <method name="GetExpression(System.Object)" argnames="propname" returntype="System.Object" />
-        <method name="SetExpression(System.String, System.String, System.String)" argnames="propname, expression, language" returntype="System.Void" />
-        <method name="GetBoundingClientRect" argnames="" returntype="System.Design.NativeMethods+IHTMLRect" />
-        <method name="GetClientRects" argnames="" returntype="System.Design.NativeMethods+IHTMLRectCollection" />
-        <method name="GetOnpropertychange" argnames="" returntype="System.Object" />
-        <method name="SetOnpropertychange(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetCurrentStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLCurrentStyle" />
-        <method name="GetOnpaste" argnames="" returntype="System.Object" />
-        <method name="SetOnpaste(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnbeforepaste" argnames="" returntype="System.Object" />
-        <method name="SetOnbeforepaste(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOncopy" argnames="" returntype="System.Object" />
-        <method name="SetOncopy(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnbeforecopy" argnames="" returntype="System.Object" />
-        <method name="SetOnbeforecopy(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOncut" argnames="" returntype="System.Object" />
-        <method name="SetOncut(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnbeforecut" argnames="" returntype="System.Object" />
-        <method name="SetOnbeforecut(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndrop" argnames="" returntype="System.Object" />
-        <method name="SetOndrop(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndragleave" argnames="" returntype="System.Object" />
-        <method name="SetOndragleave(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndragover" argnames="" returntype="System.Object" />
-        <method name="SetOndragover(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndragenter" argnames="" returntype="System.Object" />
-        <method name="SetOndragenter(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndragend" argnames="" returntype="System.Object" />
-        <method name="SetOndragend(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOndrag" argnames="" returntype="System.Object" />
-        <method name="SetOndrag(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnscroll" argnames="" returntype="System.Object" />
-        <method name="SetOnscroll(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="DoScroll(System.Object)" argnames="component" returntype="System.Void" />
-        <method name="ComponentFromPoint(System.Int32, System.Int32)" argnames="x, y" returntype="System.String" />
-        <method name="GetOnlosecapture" argnames="" returntype="System.Object" />
-        <method name="SetOnlosecapture(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="ReleaseCapture" argnames="" returntype="System.Void" />
-        <method name="SetCapture(System.Boolean)" argnames="containerCapture" returntype="System.Void" />
-        <method name="GetScopeName" argnames="" returntype="System.String" />
-    </interface>
-    <interface name="IHTMLElement3" namespace="System.Design">
-        <method name="GetGlyphMode" argnames="" returntype="System.Int32" />
-        <method name="DragDrop" argnames="" returntype="System.Boolean" />
-        <method name="GetOnDeactivate" argnames="" returntype="System.Object" />
-        <method name="SetOnDeactivate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnActivate" argnames="" returntype="System.Object" />
-        <method name="SetOnActivate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnMouseLeave" argnames="" returntype="System.Object" />
-        <method name="SetOnMouseLeave(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnMouseEnter" argnames="" returntype="System.Object" />
-        <method name="SetOnMouseEnter(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnMoveEnd" argnames="" returntype="System.Object" />
-        <method name="SetOnMoveEnd(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnMoveStart" argnames="" returntype="System.Object" />
-        <method name="SetOnMoveStart(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnResizeEnd" argnames="" returntype="System.Object" />
-        <method name="SetOnResizeEnd(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnResizeStart" argnames="" returntype="System.Object" />
-        <method name="SetOnResizeStart(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="FireEvent(System.String, System.Object)" argnames="eventName, eventObject" returntype="System.Boolean" />
-        <method name="GetOnControlSelect" argnames="" returntype="System.Object" />
-        <method name="SetOnControlSelect(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnMove" argnames="" returntype="System.Object" />
-        <method name="SetOnMove(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetIsDisabled" argnames="" returntype="System.Boolean" />
-        <method name="GetDisabled" argnames="" returntype="System.Boolean" />
-        <method name="SetDisabled(System.Boolean)" argnames="v" returntype="System.Void" />
-        <method name="GetHideFocus" argnames="" returntype="System.Boolean" />
-        <method name="SetHideFocus(System.Boolean)" argnames="v" returntype="System.Void" />
-        <method name="GetIsContentEditable" argnames="" returntype="System.Boolean" />
-        <method name="GetContentEditable" argnames="" returntype="System.String" />
-        <method name="SetContentEditable(System.String)" argnames="p" returntype="System.Void" />
-        <method name="SetActive" argnames="" returntype="System.Void" />
-        <method name="GetOnBeforeDeactivate" argnames="" returntype="System.Object" />
-        <method name="SetOnBeforeDeactivate(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetInflateBlock" argnames="" returntype="System.Boolean" />
-        <method name="SetInflateBlock(System.Boolean)" argnames="inflate" returntype="System.Void" />
-        <method name="GetOnPage" argnames="" returntype="System.Object" />
-        <method name="SetOnPage(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnLayoutComplete" argnames="" returntype="System.Object" />
-        <method name="SetOnLayoutComplete(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetCanHaveHTML" argnames="" returntype="System.Boolean" />
-        <method name="GetIsMultiLine" argnames="" returntype="System.Boolean" />
-        <method name="MergeAttributes(System.Design.NativeMethods.IHTMLElement, System.Object)" argnames="mergeThis, pvarFlags" returntype="System.Void" />
-    </interface>
-    <interface name="IHTMLBodyElement" namespace="System.Design">
-        <method name="CreateTextRange" argnames="" returntype="System.Object" />
-        <method name="GetOnbeforeunload" argnames="" returntype="System.Object" />
-        <method name="SetOnbeforeunload(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnselect" argnames="" returntype="System.Object" />
-        <method name="SetOnselect(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetScroll" argnames="" returntype="System.String" />
-        <method name="SetScroll(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetOnunload" argnames="" returntype="System.Object" />
-        <method name="SetOnunload(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetOnload" argnames="" returntype="System.Object" />
-        <method name="SetOnload(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetALink" argnames="" returntype="System.Object" />
-        <method name="SetALink(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetVLink" argnames="" returntype="System.Object" />
-        <method name="SetVLink(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetLink" argnames="" returntype="System.Object" />
-        <method name="SetLink(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetText" argnames="" returntype="System.Object" />
-        <method name="SetText(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBgColor" argnames="" returntype="System.Object" />
-        <method name="SetBgColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetNoWrap" argnames="" returntype="System.Boolean" />
-        <method name="SetNoWrap(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetBottomMargin" argnames="" returntype="System.Object" />
-        <method name="SetBottomMargin(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetRightMargin" argnames="" returntype="System.Object" />
-        <method name="SetRightMargin(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetTopMargin" argnames="" returntype="System.Object" />
-        <method name="SetTopMargin(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetLeftMargin" argnames="" returntype="System.Object" />
-        <method name="SetLeftMargin(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBgProperties" argnames="" returntype="System.String" />
-        <method name="SetBgProperties(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBackground" argnames="" returntype="System.String" />
-        <method name="SetBackground(System.String)" argnames="p" returntype="System.Void" />
-    </interface>
-    <interface name="IHTMLStyleSheet" namespace="System.Design">
-        <method name="GetRules" argnames="" returntype="System.Object" />
-        <method name="GetCssText" argnames="" returntype="System.String" />
-        <method name="SetCssText(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetMedia" argnames="" returntype="System.String" />
-        <method name="SetMedia(System.String)" argnames="p" returntype="System.Void" />
-        <method name="RemoveRule(System.Int32)" argnames="lIndex" returntype="System.Void" />
-        <method name="RemoveImport(System.Int32)" argnames="lIndex" returntype="System.Void" />
-        <method name="AddRule(System.String, System.String, System.Int32)" argnames="bstrSelector, bstrStyle, lIndex" returntype="System.Int32" />
-        <method name="AddImport(System.String, System.Int32)" argnames="bstrURL, lIndex" returntype="System.Int32" />
-        <method name="GetId" argnames="" returntype="System.String" />
-        <method name="GetStyleSheetType" argnames="" returntype="System.String" />
-        <method name="GetHref" argnames="" returntype="System.String" />
-        <method name="SetHref(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetImports" argnames="" returntype="System.Object" />
-        <method name="GetReadOnly" argnames="" returntype="System.Boolean" />
-        <method name="GetDisabled" argnames="" returntype="System.Boolean" />
-        <method name="SetDisabled(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetOwningElement" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="GetParentStyleSheet" argnames="" returntype="System.Design.NativeMethods+IHTMLStyleSheet" />
-        <method name="GetTitle" argnames="" returntype="System.String" />
-        <method name="SetTitle(System.String)" argnames="p" returntype="System.Void" />
-    </interface>
-    <interface name="IHTMLStyle" namespace="System.Design">
-        <method name="RemoveAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Boolean" />
-        <method name="GetAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Object" />
-        <method name="SetAttribute(System.String, System.Object, System.Int32)" argnames="strAttributeName, AttributeValue, lFlags" returntype="System.Void" />
-        <method name="GetFilter" argnames="" returntype="System.String" />
-        <method name="SetFilter(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetClip" argnames="" returntype="System.String" />
-        <method name="SetClip(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetCursor" argnames="" returntype="System.String" />
-        <method name="SetCursor(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetPosHeight" argnames="" returntype="System.Single" />
-        <method name="SetPosHeight(System.Single)" argnames="p" returntype="System.Void" />
-        <method name="GetPosWidth" argnames="" returntype="System.Single" />
-        <method name="SetPosWidth(System.Single)" argnames="p" returntype="System.Void" />
-        <method name="GetPosLeft" argnames="" returntype="System.Single" />
-        <method name="SetPosLeft(System.Single)" argnames="p" returntype="System.Void" />
-        <method name="GetPosTop" argnames="" returntype="System.Single" />
-        <method name="SetPosTop(System.Single)" argnames="p" returntype="System.Void" />
-        <method name="GetPixelHeight" argnames="" returntype="System.Int32" />
-        <method name="SetPixelHeight(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetPixelWidth" argnames="" returntype="System.Int32" />
-        <method name="SetPixelWidth(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetPixelLeft" argnames="" returntype="System.Int32" />
-        <method name="SetPixelLeft(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetPixelTop" argnames="" returntype="System.Int32" />
-        <method name="SetPixelTop(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetCssText" argnames="" returntype="System.String" />
-        <method name="SetCssText(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetPageBreakAfter" argnames="" returntype="System.String" />
-        <method name="SetPageBreakAfter(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetPageBreakBefore" argnames="" returntype="System.String" />
-        <method name="SetPageBreakBefore(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetOverflow" argnames="" returntype="System.String" />
-        <method name="SetOverflow(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetZIndex" argnames="" returntype="System.Object" />
-        <method name="SetZIndex(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetPosition" argnames="" returntype="System.String" />
-        <method name="GetLeft" argnames="" returntype="System.Object" />
-        <method name="SetLeft(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetTop" argnames="" returntype="System.Object" />
-        <method name="SetTop(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetWhiteSpace" argnames="" returntype="System.String" />
-        <method name="SetWhiteSpace(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetListStyle" argnames="" returntype="System.String" />
-        <method name="SetListStyle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetListStyleImage" argnames="" returntype="System.String" />
-        <method name="SetListStyleImage(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetListStylePosition" argnames="" returntype="System.String" />
-        <method name="SetListStylePosition(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetListStyleType" argnames="" returntype="System.String" />
-        <method name="SetListStyleType(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetVisibility" argnames="" returntype="System.String" />
-        <method name="SetVisibility(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetDisplay" argnames="" returntype="System.String" />
-        <method name="SetDisplay(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetClear" argnames="" returntype="System.String" />
-        <method name="SetClear(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetStyleFloat" argnames="" returntype="System.String" />
-        <method name="SetStyleFloat(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetHeight" argnames="" returntype="System.Object" />
-        <method name="SetHeight(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetWidth" argnames="" returntype="System.Object" />
-        <method name="SetWidth(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderLeftStyle" argnames="" returntype="System.String" />
-        <method name="SetBorderLeftStyle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderBottomStyle" argnames="" returntype="System.String" />
-        <method name="SetBorderBottomStyle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderRightStyle" argnames="" returntype="System.String" />
-        <method name="SetBorderRightStyle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderTopStyle" argnames="" returntype="System.String" />
-        <method name="SetBorderTopStyle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderStyle" argnames="" returntype="System.String" />
-        <method name="SetBorderStyle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderLeftWidth" argnames="" returntype="System.Object" />
-        <method name="SetBorderLeftWidth(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderBottomWidth" argnames="" returntype="System.Object" />
-        <method name="SetBorderBottomWidth(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderRightWidth" argnames="" returntype="System.Object" />
-        <method name="SetBorderRightWidth(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderTopWidth" argnames="" returntype="System.Object" />
-        <method name="SetBorderTopWidth(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderWidth" argnames="" returntype="System.String" />
-        <method name="SetBorderWidth(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderLeftColor" argnames="" returntype="System.Object" />
-        <method name="SetBorderLeftColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderBottomColor" argnames="" returntype="System.Object" />
-        <method name="SetBorderBottomColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderRightColor" argnames="" returntype="System.Object" />
-        <method name="SetBorderRightColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderTopColor" argnames="" returntype="System.Object" />
-        <method name="SetBorderTopColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderColor" argnames="" returntype="System.String" />
-        <method name="SetBorderColor(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderLeft" argnames="" returntype="System.String" />
-        <method name="SetBorderLeft(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderBottom" argnames="" returntype="System.String" />
-        <method name="SetBorderBottom(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderRight" argnames="" returntype="System.String" />
-        <method name="SetBorderRight(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorderTop" argnames="" returntype="System.String" />
-        <method name="SetBorderTop(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBorder" argnames="" returntype="System.String" />
-        <method name="SetBorder(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetPadding" argnames="" returntype="System.String" />
-        <method name="SetPadding(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetPaddingLeft" argnames="" returntype="System.Object" />
-        <method name="SetPaddingLeft(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetPaddingBottom" argnames="" returntype="System.Object" />
-        <method name="SetPaddingBottom(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetPaddingRight" argnames="" returntype="System.Object" />
-        <method name="SetPaddingRight(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetPaddingTop" argnames="" returntype="System.Object" />
-        <method name="SetPaddingTop(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetMargin" argnames="" returntype="System.String" />
-        <method name="SetMargin(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetMarginLeft" argnames="" returntype="System.Object" />
-        <method name="SetMarginLeft(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetMarginBottom" argnames="" returntype="System.Object" />
-        <method name="SetMarginBottom(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetMarginRight" argnames="" returntype="System.Object" />
-        <method name="SetMarginRight(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetMarginTop" argnames="" returntype="System.Object" />
-        <method name="SetMarginTop(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetLineHeight" argnames="" returntype="System.Object" />
-        <method name="SetLineHeight(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetTextIndent" argnames="" returntype="System.Object" />
-        <method name="SetTextIndent(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetTextAlign" argnames="" returntype="System.String" />
-        <method name="SetTextAlign(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetTextTransform" argnames="" returntype="System.String" />
-        <method name="SetTextTransform(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetVerticalAlign" argnames="" returntype="System.Object" />
-        <method name="SetVerticalAlign(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetTextDecorationBlink" argnames="" returntype="System.Boolean" />
-        <method name="SetTextDecorationBlink(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetTextDecorationLineThrough" argnames="" returntype="System.Boolean" />
-        <method name="SetTextDecorationLineThrough(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetTextDecorationOverline" argnames="" returntype="System.Boolean" />
-        <method name="SetTextDecorationOverline(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetTextDecorationUnderline" argnames="" returntype="System.Boolean" />
-        <method name="SetTextDecorationUnderline(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetTextDecorationNone" argnames="" returntype="System.Boolean" />
-        <method name="SetTextDecorationNone(System.Boolean)" argnames="p" returntype="System.Void" />
-        <method name="GetTextDecoration" argnames="" returntype="System.String" />
-        <method name="SetTextDecoration(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetLetterSpacing" argnames="" returntype="System.Object" />
-        <method name="SetLetterSpacing(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetWordSpacing" argnames="" returntype="System.Object" />
-        <method name="SetWordSpacing(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBackgroundPositionY" argnames="" returntype="System.Object" />
-        <method name="SetBackgroundPositionY(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBackgroundPositionX" argnames="" returntype="System.Object" />
-        <method name="SetBackgroundPositionX(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBackgroundPosition" argnames="" returntype="System.String" />
-        <method name="SetBackgroundPosition(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBackgroundAttachment" argnames="" returntype="System.String" />
-        <method name="SetBackgroundAttachment(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBackgroundRepeat" argnames="" returntype="System.String" />
-        <method name="SetBackgroundRepeat(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBackgroundImage" argnames="" returntype="System.String" />
-        <method name="SetBackgroundImage(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetBackgroundColor" argnames="" returntype="System.Object" />
-        <method name="SetBackgroundColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetBackground" argnames="" returntype="System.String" />
-        <method name="SetBackground(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetColor" argnames="" returntype="System.Object" />
-        <method name="SetColor(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetFont" argnames="" returntype="System.String" />
-        <method name="SetFont(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetFontSize" argnames="" returntype="System.Object" />
-        <method name="SetFontSize(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetFontWeight" argnames="" returntype="System.String" />
-        <method name="SetFontWeight(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetFontObject" argnames="" returntype="System.String" />
-        <method name="SetFontObject(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetFontStyle" argnames="" returntype="System.String" />
-        <method name="SetFontStyle(System.String)" argnames="p" returntype="System.Void" />
-        <method name="GetFontFamily" argnames="" returntype="System.String" />
-        <method name="SetFontFamily(System.String)" argnames="p" returntype="System.Void" />
-    </interface>
-    <interface name="IHTMLCurrentStyle" namespace="System.Design">
-        <method name="GetBottom" argnames="" returntype="System.Object" />
-        <method name="GetRight" argnames="" returntype="System.Object" />
-        <method name="GetUnicodeBidi" argnames="" returntype="System.String" />
-        <method name="GetAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Object" />
-        <method name="GetBehavior" argnames="" returntype="System.String" />
-        <method name="GetDirection" argnames="" returntype="System.String" />
-        <method name="GetBorderCollapse" argnames="" returntype="System.String" />
-        <method name="GetTableLayout" argnames="" returntype="System.String" />
-        <method name="GetCursor" argnames="" returntype="System.String" />
-        <method name="GetPageBreakAfter" argnames="" returntype="System.String" />
-        <method name="GetPageBreakBefore" argnames="" returntype="System.String" />
-        <method name="GetOverflow" argnames="" returntype="System.String" />
-        <method name="GetClipLeft" argnames="" returntype="System.Object" />
-        <method name="GetClipBottom" argnames="" returntype="System.Object" />
-        <method name="GetClipRight" argnames="" returntype="System.Object" />
-        <method name="GetClipTop" argnames="" returntype="System.Object" />
-        <method name="GetListStyleImage" argnames="" returntype="System.String" />
-        <method name="GetListStylePosition" argnames="" returntype="System.String" />
-        <method name="GetListStyleType" argnames="" returntype="System.String" />
-        <method name="GetClear" argnames="" returntype="System.String" />
-        <method name="GetMarginLeft" argnames="" returntype="System.Object" />
-        <method name="GetMarginBottom" argnames="" returntype="System.Object" />
-        <method name="GetMarginRight" argnames="" returntype="System.Object" />
-        <method name="GetMarginTop" argnames="" returntype="System.Object" />
-        <method name="GetBackgroundAttachment" argnames="" returntype="System.String" />
-        <method name="GetVerticalAlign" argnames="" returntype="System.Object" />
-        <method name="GetTextIndent" argnames="" returntype="System.Object" />
-        <method name="GetLineHeight" argnames="" returntype="System.Object" />
-        <method name="GetLetterSpacing" argnames="" returntype="System.Object" />
-        <method name="GetZIndex" argnames="" returntype="System.Object" />
-        <method name="GetVisibility" argnames="" returntype="System.String" />
-        <method name="GetDisplay" argnames="" returntype="System.String" />
-        <method name="GetTextDecoration" argnames="" returntype="System.String" />
-        <method name="GetTextAlign" argnames="" returntype="System.String" />
-        <method name="GetPaddingBottom" argnames="" returntype="System.Object" />
-        <method name="GetPaddingRight" argnames="" returntype="System.Object" />
-        <method name="GetPaddingTop" argnames="" returntype="System.Object" />
-        <method name="GetPaddingLeft" argnames="" returntype="System.Object" />
-        <method name="GetHeight" argnames="" returntype="System.Object" />
-        <method name="GetWidth" argnames="" returntype="System.Object" />
-        <method name="GetTop" argnames="" returntype="System.Object" />
-        <method name="GetLeft" argnames="" returntype="System.Object" />
-        <method name="GetBorderLeftWidth" argnames="" returntype="System.Object" />
-        <method name="GetBorderBottomWidth" argnames="" returntype="System.Object" />
-        <method name="GetBorderRightWidth" argnames="" returntype="System.Object" />
-        <method name="GetBorderTopWidth" argnames="" returntype="System.Object" />
-        <method name="GetBorderLeftStyle" argnames="" returntype="System.String" />
-        <method name="GetBorderBottomStyle" argnames="" returntype="System.String" />
-        <method name="GetBorderRightStyle" argnames="" returntype="System.String" />
-        <method name="GetBorderTopStyle" argnames="" returntype="System.String" />
-        <method name="GetBorderBottomColor" argnames="" returntype="System.Object" />
-        <method name="GetBorderRightColor" argnames="" returntype="System.Object" />
-        <method name="GetBorderTopColor" argnames="" returntype="System.Object" />
-        <method name="GetBorderLeftColor" argnames="" returntype="System.Object" />
-        <method name="GetBackgroundRepeat" argnames="" returntype="System.String" />
-        <method name="GetBackgroundPositionY" argnames="" returntype="System.Object" />
-        <method name="GetBackgroundPositionX" argnames="" returntype="System.Object" />
-        <method name="GetBackgroundImage" argnames="" returntype="System.String" />
-        <method name="GetFontSize" argnames="" returntype="System.Object" />
-        <method name="GetFontWeight" argnames="" returntype="System.Object" />
-        <method name="GetFontObject" argnames="" returntype="System.String" />
-        <method name="GetFontStyle" argnames="" returntype="System.String" />
-        <method name="GetFontFamily" argnames="" returntype="System.String" />
-        <method name="GetBackgroundColor" argnames="" returntype="System.Object" />
-        <method name="GetColor" argnames="" returntype="System.Object" />
-        <method name="GetStyleFloat" argnames="" returntype="System.String" />
-        <method name="GetPosition" argnames="" returntype="System.String" />
-    </interface>
-    <interface name="IHTMLElementCollection" namespace="System.Design">
-        <method name="Tags(System.Object)" argnames="tagName" returntype="System.Object" />
-        <method name="Item(System.Object, System.Object)" argnames="name, index" returntype="System.Design.NativeMethods+IHTMLElement" />
-        <method name="Get_newEnum" argnames="" returntype="System.Object" />
-        <method name="GetLength" argnames="" returntype="System.Int32" />
-        <method name="SetLength(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="toString" argnames="" returntype="System.String" />
-    </interface>
-    <interface name="IHTMLRect" namespace="System.Design">
-        <method name="GetBottom" argnames="" returntype="System.Int32" />
-        <method name="SetBottom(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetRight" argnames="" returntype="System.Int32" />
-        <method name="SetRight(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetTop" argnames="" returntype="System.Int32" />
-        <method name="SetTop(System.Int32)" argnames="p" returntype="System.Void" />
-        <method name="GetLeft" argnames="" returntype="System.Int32" />
-        <method name="SetLeft(System.Int32)" argnames="p" returntype="System.Void" />
-    </interface>
-    <interface name="IHTMLRectCollection" namespace="System.Design">
-        <method name="Item(System.Object&amp;)" argnames="pvarIndex" returntype="System.Object" />
-        <method name="Get_newEnum" argnames="" returntype="System.Object" />
-        <method name="GetLength" argnames="" returntype="System.Int32" />
-    </interface>
-    <interface name="IHTMLDOMNode" namespace="System.Design">
-        <method name="GetNextSibling" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="GetPreviousSibling" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="GetLastChild" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="GetFirstChild" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="GetNodeValue" argnames="" returntype="System.Object" />
-        <method name="SetNodeValue(System.Object)" argnames="p" returntype="System.Void" />
-        <method name="GetNodeName" argnames="" returntype="System.String" />
-        <method name="AppendChild(System.Design.NativeMethods.IHTMLDOMNode)" argnames="newChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="ReplaceNode(System.Design.NativeMethods.IHTMLDOMNode)" argnames="replacement" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="SwapNode(System.Design.NativeMethods.IHTMLDOMNode)" argnames="otherNode" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="RemoveNode(System.Boolean)" argnames="fDeep" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="CloneNode(System.Boolean)" argnames="fDeep" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="ReplaceChild(System.Design.NativeMethods.IHTMLDOMNode, System.Design.NativeMethods.IHTMLDOMNode)" argnames="newChild, oldChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="RemoveChild(System.Design.NativeMethods.IHTMLDOMNode)" argnames="oldChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="InsertBefore(System.Design.NativeMethods.IHTMLDOMNode, System.Object)" argnames="newChild, refChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="GetAttributes" argnames="" returntype="System.Object" />
-        <method name="GetChildNodes" argnames="" returntype="System.Object" />
-        <method name="HasChildNodes" argnames="" returntype="System.Boolean" />
-        <method name="GetParentNode" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
-        <method name="GetNodeType" argnames="" returntype="System.Int32" />
-    </interface>
-    <interface name="IEnumOLEVERB" namespace="System.Design">
-        <method name="Clone(System.Design.NativeMethods.IEnumOLEVERB&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Design.NativeMethods.tagOLEVERB, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="IEnumSTATDATA" namespace="System.Design">
-        <method name="Clone(System.Design.NativeMethods.IEnumSTATDATA[])" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Void" />
-        <method name="Next(System.Int32, System.Design.NativeMethods.STATDATA, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Void" />
-    </interface>
-    <interface name="IEnumFORMATETC" namespace="System.Design">
-        <method name="Clone(System.Design.NativeMethods.IEnumFORMATETC[])" argnames="ppenum" returntype="System.Int32" />
-        <method name="Reset" argnames="" returntype="System.Int32" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Design.NativeMethods.FORMATETC, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="IMalloc" namespace="System.Design">
-        <method name="HeapMinimize" argnames="" returntype="System.Void" />
-        <method name="DidAlloc(System.IntPtr)" argnames="pv" returntype="System.Int32" />
-        <method name="GetSize(System.IntPtr)" argnames="pv" returntype="System.Int32" />
-        <method name="Realloc(System.IntPtr, System.Int32)" argnames="pv, cb" returntype="System.IntPtr" />
-        <method name="Free(System.IntPtr)" argnames="pv" returntype="System.Void" />
-        <method name="Alloc(System.Int32)" argnames="cb" returntype="System.IntPtr" />
-    </interface>
-    <struct name="WINDOWPOS" namespace="System.Design">
-        <field name="hwnd" />
-        <field name="hwndInsertAfter" />
-        <field name="x" />
-        <field name="y" />
-        <field name="cx" />
-        <field name="cy" />
-        <field name="flags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="MSG" namespace="System.Design">
-        <field name="hwnd" />
-        <field name="message" />
-        <field name="wParam" />
-        <field name="lParam" />
-        <field name="time" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="RECT" namespace="System.Design">
-        <constructor name="RECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
-        <field name="left" />
-        <field name="top" />
-        <field name="right" />
-        <field name="bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Design.NativeMethods+RECT" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="PAINTSTRUCT" namespace="System.Design">
-        <field name="hdc" />
-        <field name="fErase" />
-        <field name="rcPaint_left" />
-        <field name="rcPaint_top" />
-        <field name="rcPaint_right" />
-        <field name="rcPaint_bottom" />
-        <field name="fRestore" />
-        <field name="fIncUpdate" />
-        <field name="reserved1" />
-        <field name="reserved2" />
-        <field name="reserved3" />
-        <field name="reserved4" />
-        <field name="reserved5" />
-        <field name="reserved6" />
-        <field name="reserved7" />
-        <field name="reserved8" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <delegate name="ListViewCompareCallback" namespace="System.Design">
-        <constructor name="ListViewCompareCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="lParam1, lParam2, lParamSort, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="lParam1, lParam2, lParamSort" returntype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="TimerProc" namespace="System.Design">
-        <constructor name="TimerProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="HandleChangeEventHandler" namespace="System.Design">
-        <constructor name="HandleChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.String, System.IntPtr, System.Int32, System.AsyncCallback, System.Object)" argnames="handleType, handleValue, currentHandleCount, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.String, System.IntPtr, System.Int32)" argnames="handleType, handleValue, currentHandleCount" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="TabControlHitTest" namespace="System.Design">
-        <field name="TCHT_NOWHERE" />
-        <field name="TCHT_ONITEMICON" />
-        <field name="TCHT_ONITEMLABEL" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StructFormat" namespace="System.Design">
-        <field name="Ansi" />
-        <field name="Unicode" />
-        <field name="Auto" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="BrowseInfos" namespace="System.Design">
-        <field name="ReturnOnlyFSDirs" />
-        <field name="DontGoBelowDomain" />
-        <field name="StatusText" />
-        <field name="ReturnFSAncestors" />
-        <field name="EditBox" />
-        <field name="Validate" />
-        <field name="NewDialogStyle" />
-        <field name="UseNewUI" />
-        <field name="AllowUrls" />
-        <field name="BrowseForComputer" />
-        <field name="BrowseForPrinter" />
-        <field name="BrowseForEverything" />
-        <field name="ShowShares" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="CodeDomSerializer" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="CodeDomSerializer" argnames="" />
-        <method name="Serialize(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, value" returntype="System.Object" />
-        <method name="Deserialize(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, codeObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DeserializePropertiesFromResources(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object, System.Attribute[])" argnames="manager, value, filter" returntype="System.Void" />
-        <method name="DeserializeStatement(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatement)" argnames="manager, statement" returntype="System.Void" />
-        <method name="DeserializeExpression(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.String, System.CodeDom.CodeExpression)" argnames="manager, name, expression" returntype="System.Object" />
-        <method name="SerializeEvents(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatementCollection, System.Object, System.Attribute[])" argnames="manager, statements, value, filter" returntype="System.Void" />
-        <method name="SerializeProperties(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatementCollection, System.Object, System.Attribute[])" argnames="manager, statements, value, filter" returntype="System.Void" />
-        <method name="SerializePropertiesToResources(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatementCollection, System.Object, System.Attribute[])" argnames="manager, statements, value, filter" returntype="System.Void" />
-        <method name="SerializeResource(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.String, System.Object)" argnames="manager, resourceName, value" returntype="System.Void" />
-        <method name="SerializeResourceInvariant(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.String, System.Object)" argnames="manager, resourceName, value" returntype="System.Void" />
-        <method name="SerializeToExpression(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, value" returntype="System.CodeDom.CodeExpression" />
-        <method name="SerializeToReferenceExpression(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, value" returntype="System.CodeDom.CodeExpression" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeDomSerializerException" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="CodeDomSerializerException(System.String, System.CodeDom.CodeLinePragma)" argnames="message, linePragma" />
-        <constructor name="CodeDomSerializerException(System.Exception, System.CodeDom.CodeLinePragma)" argnames="ex, linePragma" />
-        <constructor name="CodeDomSerializerException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="ICodeDomDesignerReload" namespace="System.ComponentModel.Design.Serialization">
-        <method name="ShouldReloadDesigner(System.CodeDom.CodeCompileUnit)" argnames="newTree" returntype="System.Boolean" />
-    </interface>
-    <class name="CollectionEditor" namespace="System.ComponentModel.Design">
-        <constructor name="CollectionEditor(System.Type)" argnames="type" />
-        <property name="CollectionItemType" propertytype="System.Type" />
-        <property name="CollectionType" propertytype="System.Type" />
-        <property name="Context" propertytype="System.ComponentModel.ITypeDescriptorContext" />
-        <property name="NewItemTypes" propertytype="System.Type[]" />
-        <property name="HelpTopic" propertytype="System.String" />
-        <method name="ShowHelp" argnames="" returntype="System.Void" />
-        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" returntype="System.Object" />
-        <method name="GetItems(System.Object)" argnames="editValue" returntype="System.Object[]" />
-        <method name="DestroyInstance(System.Object)" argnames="instance" returntype="System.Void" />
-        <method name="CreateNewItemTypes" argnames="" returntype="System.Type[]" />
-        <method name="CreateCollectionItemType" argnames="" returntype="System.Type" />
-        <method name="CreateInstance(System.Type)" argnames="itemType" returntype="System.Object" />
-        <method name="CreateCollectionForm" argnames="" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
-        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
-        <method name="CanRemoveInstance(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ArrayEditor" namespace="System.ComponentModel.Design">
-        <constructor name="ArrayEditor(System.Type)" argnames="type" />
-        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
-        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
-        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
-        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" returntype="System.Object" />
-        <method name="GetItems(System.Object)" argnames="editValue" returntype="System.Object[]" />
-        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
-        <method name="CreateCollectionItemType" argnames="" returntype="System.Type" />
-        <method name="CreateInstance(System.Type)" argnames="itemType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
-        <method name="CanSelectMultipleInstances" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
-        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BinaryEditor" namespace="System.ComponentModel.Design">
-        <constructor name="BinaryEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ByteViewer" namespace="System.ComponentModel.Design">
-        <constructor name="ByteViewer" argnames="" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="SetStartLine(System.Int32)" argnames="line" returntype="System.Void" />
-        <method name="SetFile(System.String)" argnames="path" returntype="System.Void" />
-        <method name="SetDisplayMode(System.ComponentModel.Design.DisplayMode)" argnames="mode" returntype="System.Void" />
-        <method name="SetBytes(System.Byte[])" argnames="bytes" returntype="System.Void" />
-        <method name="ScrollChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="SaveToFile(System.String)" argnames="path" returntype="System.Void" />
-        <method name="GetDisplayMode" argnames="" returntype="System.ComponentModel.Design.DisplayMode" />
-        <method name="GetBytes" argnames="" returntype="System.Byte[]" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ComponentDesigner" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentDesigner" argnames="" />
-        <property name="AssociatedComponents" propertytype="System.Collections.ICollection" />
-        <property name="Component" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DateTimeEditor" namespace="System.ComponentModel.Design">
-        <constructor name="DateTimeEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InheritanceService" namespace="System.ComponentModel.Design">
-        <constructor name="InheritanceService" argnames="" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="GetInheritanceAttribute(System.ComponentModel.IComponent)" argnames="component" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="AddInheritedComponents(System.ComponentModel.IComponent, System.ComponentModel.IContainer)" argnames="component, container" returntype="System.Void" />
-        <method name="IgnoreInheritedMember(System.Reflection.MemberInfo, System.ComponentModel.IComponent)" argnames="member, component" returntype="System.Boolean" />
-        <method name="AddInheritedComponents(System.Type, System.ComponentModel.IComponent, System.ComponentModel.IContainer)" argnames="type, component, container" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LocalizationExtenderProvider" namespace="System.ComponentModel.Design">
-        <constructor name="LocalizationExtenderProvider(System.ComponentModel.ISite, System.ComponentModel.IComponent)" argnames="serviceProvider, baseComponent" />
-        <property name="ThreadDefaultLanguage" propertytype="System.Globalization.CultureInfo" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="CanExtend(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetLanguage(System.Object)" argnames="o" returntype="System.Globalization.CultureInfo" />
-        <method name="GetLoadLanguage(System.Object)" argnames="o" returntype="System.Globalization.CultureInfo" />
-        <method name="GetLocalizable(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="SetLanguage(System.Object, System.Globalization.CultureInfo)" argnames="o, language" returntype="System.Void" />
-        <method name="SetLocalizable(System.Object, System.Boolean)" argnames="o, localizable" returntype="System.Void" />
-        <method name="ShouldSerializeLanguage(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ResetLanguage(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ObjectSelectorEditor" namespace="System.ComponentModel.Design">
-        <class name="Selector" namespace="System.ComponentModel.Design">
-            <constructor name="Selector(System.ComponentModel.Design.ObjectSelectorEditor)" argnames="editor" />
-            <field name="clickSeen" />
-            <property name="BackColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
-            <property name="BackgroundImage" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Image" />
-            <property name="BorderStyle" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.BorderStyle" />
-            <property name="CheckBoxes" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="CreateParams" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.CreateParams" />
-            <property name="DefaultSize" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Size" />
-            <property name="ForeColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
-            <property name="FullRowSelect" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="HideSelection" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="HotTracking" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="ImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-            <property name="ImageList" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.ImageList" />
-            <property name="Indent" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-            <property name="ItemHeight" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-            <property name="LabelEdit" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="Nodes" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNodeCollection" />
-            <property name="PathSeparator" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
-            <property name="Scrollable" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-            <property name="SelectedNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="ShowLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="ShowPlusMinus" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="ShowRootLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="Sorted" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-            <property name="Text" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
-            <property name="TopNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="VisibleCount" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-            <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-            <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-            <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-            <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-            <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-            <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-            <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-            <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-            <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-            <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-            <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-            <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-            <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-            <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-            <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-            <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-            <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-            <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-            <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-            <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-            <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-            <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-            <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-            <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-            <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-            <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-            <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-            <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-            <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-            <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-            <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-            <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-            <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-            <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-            <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-            <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-            <method name="OnAfterSelect(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnBeforeSelect(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnAfterExpand(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnBeforeExpand(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnAfterCollapse(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnBeforeCollapse(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnAfterCheck(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnBeforeCheck(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnAfterLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnBeforeLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-            <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-            <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-            <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-            <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
-            <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-            <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TreeView" returntype="System.Boolean" />
-            <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-            <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-            <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-            <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.String" />
-            <method name="AddNode(System.String, System.Object, System.ComponentModel.Design.ObjectSelectorEditor.SelectorNode)" argnames="label, value, parent" returntype="System.ComponentModel.Design.ObjectSelectorEditor+SelectorNode" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="OnAfterSelect(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="sender, e" returntype="System.Void" />
-            <method name="SetSelection(System.Object, System.Windows.Forms.TreeNodeCollection)" argnames="value, nodes" returntype="System.Boolean" />
-            <method name="Start(System.Windows.Forms.Design.IWindowsFormsEditorService, System.Object)" argnames="edSvc, value" returntype="System.Void" />
-            <method name="Stop" argnames="" returntype="System.Void" />
-            <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="CollapseAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-            <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeView" returntype="System.Int32" />
-            <method name="GetNodeAt(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
-            <method name="GetNodeAt(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
-            <method name="GetItemRenderStyles(System.Windows.Forms.TreeNode, System.Int32)" argnames="node, state" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
-            <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-            <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-            <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-            <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-            <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-            <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-            <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-            <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-            <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-            <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-            <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-            <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-            <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-            <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-            <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-            <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-            <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-            <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-            <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-            <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-            <event name="BeforeLabelEdit" inherited="System.Windows.Forms.TreeView" />
-            <event name="AfterLabelEdit" inherited="System.Windows.Forms.TreeView" />
-            <event name="BeforeCheck" inherited="System.Windows.Forms.TreeView" />
-            <event name="AfterCheck" inherited="System.Windows.Forms.TreeView" />
-            <event name="BeforeCollapse" inherited="System.Windows.Forms.TreeView" />
-            <event name="AfterCollapse" inherited="System.Windows.Forms.TreeView" />
-            <event name="BeforeExpand" inherited="System.Windows.Forms.TreeView" />
-            <event name="AfterExpand" inherited="System.Windows.Forms.TreeView" />
-            <event name="ItemDrag" inherited="System.Windows.Forms.TreeView" />
-            <event name="BeforeSelect" inherited="System.Windows.Forms.TreeView" />
-            <event name="AfterSelect" inherited="System.Windows.Forms.TreeView" />
-            <event name="Paint" inherited="System.Windows.Forms.TreeView" />
-            <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-            <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-            <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-            <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-            <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-            <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-            <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-            <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-            <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-            <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-            <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-            <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-            <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-            <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-            <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-            <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-            <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-            <event name="Click" inherited="System.Windows.Forms.Control" />
-            <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-            <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-            <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-            <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-            <event name="DragOver" inherited="System.Windows.Forms.Control" />
-            <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-            <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-            <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-            <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-            <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-            <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-            <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-            <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-            <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-            <event name="Enter" inherited="System.Windows.Forms.Control" />
-            <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-            <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-            <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-            <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-            <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-            <event name="Layout" inherited="System.Windows.Forms.Control" />
-            <event name="Leave" inherited="System.Windows.Forms.Control" />
-            <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-            <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-            <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-            <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-            <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-            <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-            <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-            <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-            <event name="Move" inherited="System.Windows.Forms.Control" />
-            <event name="Resize" inherited="System.Windows.Forms.Control" />
-            <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-            <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-            <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-            <event name="Validating" inherited="System.Windows.Forms.Control" />
-            <event name="Validated" inherited="System.Windows.Forms.Control" />
-            <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-            <event name="Disposed" inherited="System.ComponentModel.Component" />
-        </class>
-        <class name="SelectorNode" namespace="System.ComponentModel.Design">
-            <constructor name="SelectorNode(System.String, System.Object)" argnames="label, value" />
-            <field name="value" />
-            <property name="BackColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
-            <property name="Bounds" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Rectangle" />
-            <property name="Checked" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-            <property name="FirstNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="ForeColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
-            <property name="FullPath" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
-            <property name="Handle" inherited="System.Windows.Forms.TreeNode" propertytype="System.IntPtr" />
-            <property name="ImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
-            <property name="Index" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
-            <property name="IsEditing" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-            <property name="IsExpanded" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-            <property name="IsSelected" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-            <property name="IsVisible" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-            <property name="LastNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="NextNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="NextVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="NodeFont" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Font" />
-            <property name="Nodes" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNodeCollection" />
-            <property name="Parent" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="PrevNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="PrevVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-            <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
-            <property name="Tag" inherited="System.Windows.Forms.TreeNode" propertytype="System.Object" />
-            <property name="Text" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
-            <property name="TreeView" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeView" />
-            <method name="Clone" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Object" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.String" />
-            <method name="BeginEdit" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="Collapse" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="EndEdit(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="EnsureVisible" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="Expand" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeNode" returntype="System.Int32" />
-            <method name="Remove" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="Toggle" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="SelectorNode" argnames="" />
-        <constructor name="SelectorNode(System.Boolean)" argnames="subObjectSelector" />
-        <field name="SubObjectSelector" />
-        <field name="prevValue" />
-        <field name="currValue" />
-        <method name="SetValue(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="FillTreeWithData(System.ComponentModel.Design.ObjectSelectorEditor.Selector, System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider)" argnames="selector, context, provider" returntype="System.Void" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EqualsToValue(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Selector" namespace="System.ComponentModel.Design">
-        <constructor name="Selector(System.ComponentModel.Design.ObjectSelectorEditor)" argnames="editor" />
-        <field name="clickSeen" />
-        <property name="BackColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CheckBoxes" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
-        <property name="FullRowSelect" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="HideSelection" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="HotTracking" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="ImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-        <property name="ImageList" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.ImageList" />
-        <property name="Indent" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-        <property name="ItemHeight" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-        <property name="LabelEdit" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="Nodes" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNodeCollection" />
-        <property name="PathSeparator" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
-        <property name="Scrollable" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-        <property name="SelectedNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="ShowLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="ShowPlusMinus" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="ShowRootLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="Sorted" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
-        <property name="Text" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
-        <property name="TopNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="VisibleCount" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnAfterSelect(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnBeforeSelect(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnAfterExpand(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnBeforeExpand(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnAfterCollapse(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnBeforeCollapse(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnAfterCheck(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnBeforeCheck(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnAfterLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnBeforeLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TreeView" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.String" />
-        <method name="AddNode(System.String, System.Object, System.ComponentModel.Design.ObjectSelectorEditor.SelectorNode)" argnames="label, value, parent" returntype="System.ComponentModel.Design.ObjectSelectorEditor+SelectorNode" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="OnAfterSelect(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="SetSelection(System.Object, System.Windows.Forms.TreeNodeCollection)" argnames="value, nodes" returntype="System.Boolean" />
-        <method name="Start(System.Windows.Forms.Design.IWindowsFormsEditorService, System.Object)" argnames="edSvc, value" returntype="System.Void" />
-        <method name="Stop" argnames="" returntype="System.Void" />
-        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="CollapseAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
-        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeView" returntype="System.Int32" />
-        <method name="GetNodeAt(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
-        <method name="GetNodeAt(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
-        <method name="GetItemRenderStyles(System.Windows.Forms.TreeNode, System.Int32)" argnames="node, state" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BeforeLabelEdit" inherited="System.Windows.Forms.TreeView" />
-        <event name="AfterLabelEdit" inherited="System.Windows.Forms.TreeView" />
-        <event name="BeforeCheck" inherited="System.Windows.Forms.TreeView" />
-        <event name="AfterCheck" inherited="System.Windows.Forms.TreeView" />
-        <event name="BeforeCollapse" inherited="System.Windows.Forms.TreeView" />
-        <event name="AfterCollapse" inherited="System.Windows.Forms.TreeView" />
-        <event name="BeforeExpand" inherited="System.Windows.Forms.TreeView" />
-        <event name="AfterExpand" inherited="System.Windows.Forms.TreeView" />
-        <event name="ItemDrag" inherited="System.Windows.Forms.TreeView" />
-        <event name="BeforeSelect" inherited="System.Windows.Forms.TreeView" />
-        <event name="AfterSelect" inherited="System.Windows.Forms.TreeView" />
-        <event name="Paint" inherited="System.Windows.Forms.TreeView" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="SelectorNode" namespace="System.ComponentModel.Design">
-        <constructor name="SelectorNode(System.String, System.Object)" argnames="label, value" />
-        <field name="value" />
-        <property name="BackColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
-        <property name="Bounds" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Rectangle" />
-        <property name="Checked" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-        <property name="FirstNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="ForeColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
-        <property name="FullPath" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
-        <property name="Handle" inherited="System.Windows.Forms.TreeNode" propertytype="System.IntPtr" />
-        <property name="ImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
-        <property name="Index" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
-        <property name="IsEditing" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-        <property name="IsExpanded" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-        <property name="IsSelected" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-        <property name="IsVisible" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
-        <property name="LastNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="NextNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="NextVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="NodeFont" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Font" />
-        <property name="Nodes" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNodeCollection" />
-        <property name="Parent" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="PrevNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="PrevVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.TreeNode" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
-        <property name="TreeView" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeView" />
-        <method name="Clone" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.String" />
-        <method name="BeginEdit" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="Collapse" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="EndEdit(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="EnsureVisible" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="Expand" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeNode" returntype="System.Int32" />
-        <method name="Remove" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="Toggle" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="DisplayMode" namespace="System.ComponentModel.Design">
-        <field name="Hexdump" />
-        <field name="Ansi" />
-        <field name="Unicode" />
-        <field name="Auto" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="AnchorEditor" namespace="System.Windows.Forms.Design">
-        <constructor name="AnchorEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlDesigner" namespace="System.Windows.Forms.Design">
-        <class name="ControlDesignerAccessibleObject" namespace="System.Windows.Forms.Design">
-            <constructor name="ControlDesignerAccessibleObject(System.Windows.Forms.Design.ControlDesigner, System.Windows.Forms.Control)" argnames="designer, control" />
-            <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-            <property name="Description" propertytype="System.String" />
-            <property name="DesignerHost" propertytype="System.ComponentModel.Design.IDesignerHost" />
-            <property name="DefaultAction" propertytype="System.String" />
-            <property name="Name" propertytype="System.String" />
-            <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="SelectionService" propertytype="System.ComponentModel.Design.ISelectionService" />
-            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Value" propertytype="System.String" />
-            <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ControlDesignerAccessibleObject" argnames="" />
-        <field name="accessibilityObj" />
-        <field name="InvalidPoint" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="Controls" propertytype="System.Windows.Forms.Design.ControlDesigner+DesignerControlCollection" />
-        <property name="Location" propertytype="System.Drawing.Point" />
-        <property name="AssociatedComponents" propertytype="System.Collections.ICollection" />
-        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="AccessibilityObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Control" propertytype="System.Windows.Forms.Control" />
-        <property name="DesignerTarget" propertytype="System.Windows.Forms.Design.ControlDesigner+IDesignerTarget" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="EnableDragRect" propertytype="System.Boolean" />
-        <property name="Exception" propertytype="System.Exception" />
-        <property name="Locked" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="SelectionRules" propertytype="System.Windows.Forms.Design.SelectionRules" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="OnSetCursor" argnames="" returntype="System.Void" />
-        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
-        <method name="OnMouseLeave" argnames="" returntype="System.Void" />
-        <method name="OnMouseHover" argnames="" returntype="System.Void" />
-        <method name="OnMouseEnter" argnames="" returntype="System.Void" />
-        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" returntype="System.Void" />
-        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnCreateHandle" argnames="" returntype="System.Void" />
-        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="GetHitTest(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
-        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="DisplayError(System.Exception)" argnames="e" returntype="System.Void" />
-        <method name="EnableDragDrop(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" returntype="System.Void" />
-        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlDesignerAccessibleObject" namespace="System.Windows.Forms.Design">
-        <constructor name="ControlDesignerAccessibleObject(System.Windows.Forms.Design.ControlDesigner, System.Windows.Forms.Control)" argnames="designer, control" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="Description" propertytype="System.String" />
-        <property name="DesignerHost" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <property name="DefaultAction" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="SelectionService" propertytype="System.ComponentModel.Design.ISelectionService" />
-        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AxImporter" namespace="System.Windows.Forms.Design">
-        <class name="Options" namespace="System.Windows.Forms.Design">
-            <constructor name="Options" argnames="" />
-            <field name="outputName" />
-            <field name="outputDirectory" />
-            <field name="publicKey" />
-            <field name="keyPair" />
-            <field name="keyFile" />
-            <field name="keyContainer" />
-            <field name="genSources" />
-            <field name="noLogo" />
-            <field name="silentMode" />
-            <field name="verboseMode" />
-            <field name="delaySign" />
-            <field name="overwriteRCW" />
-            <field name="references" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <interface name="IReferenceResolver" namespace="System.Windows.Forms.Design">
-            <method name="ResolveActiveXReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
-            <method name="ResolveComReference(System.Reflection.AssemblyName)" argnames="name" returntype="System.String" />
-            <method name="ResolveComReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
-            <method name="ResolveManagedReference(System.String)" argnames="assemName" returntype="System.String" />
-        </interface>
-        <constructor name="IReferenceResolver(System.Windows.Forms.Design.AxImporter.Options)" argnames="options" />
-        <property name="GeneratedAssemblies" propertytype="System.String[]" />
-        <property name="GeneratedTypeLibAttributes" propertytype="System.Runtime.InteropServices.TYPELIBATTR[]" />
-        <property name="GeneratedSources" propertytype="System.String[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetFileOfTypeLib(System.Runtime.InteropServices.TYPELIBATTR&amp;)" argnames="tlibattr" returntype="System.String" />
-        <method name="GenerateFromFile(System.IO.FileInfo)" argnames="file" returntype="System.String" />
-        <method name="GenerateFromTypeLibrary(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
-        <method name="GenerateFromTypeLibrary(System.Runtime.InteropServices.UCOMITypeLib, System.Guid)" argnames="typeLib, clsid" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Options" namespace="System.Windows.Forms.Design">
-        <constructor name="Options" argnames="" />
-        <field name="outputName" />
-        <field name="outputDirectory" />
-        <field name="publicKey" />
-        <field name="keyPair" />
-        <field name="keyFile" />
-        <field name="keyContainer" />
-        <field name="genSources" />
-        <field name="noLogo" />
-        <field name="silentMode" />
-        <field name="verboseMode" />
-        <field name="delaySign" />
-        <field name="overwriteRCW" />
-        <field name="references" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AxParameterData" namespace="System.Windows.Forms.Design">
-        <constructor name="AxParameterData(System.String, System.String)" argnames="inname, typeName" />
-        <constructor name="AxParameterData(System.String, System.Type)" argnames="inname, type" />
-        <constructor name="AxParameterData(System.Reflection.ParameterInfo)" argnames="info" />
-        <constructor name="AxParameterData(System.Reflection.ParameterInfo, System.Boolean)" argnames="info, ignoreByRefs" />
-        <property name="Direction" propertytype="System.CodeDom.FieldDirection" />
-        <property name="IsByRef" propertytype="System.Boolean" />
-        <property name="IsIn" propertytype="System.Boolean" />
-        <property name="IsOut" propertytype="System.Boolean" />
-        <property name="IsOptional" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="ParameterType" propertytype="System.Type" />
-        <property name="TypeName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Convert(System.Reflection.ParameterInfo[])" argnames="infos" returntype="System.Windows.Forms.Design.AxParameterData[]" />
-        <method name="Convert(System.Reflection.ParameterInfo[], System.Boolean)" argnames="infos, ignoreByRefs" returntype="System.Windows.Forms.Design.AxParameterData[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AxWrapperGen" namespace="System.Windows.Forms.Design">
-        <constructor name="AxWrapperGen(System.Type)" argnames="axType" />
-        <field name="GeneratedSources" />
-        <property name="AxHostMembers" propertytype="System.Collections.Hashtable" />
-        <property name="ConflictableThings" propertytype="System.Collections.Hashtable" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentTray" namespace="System.Windows.Forms.Design">
-        <constructor name="ComponentTray(System.ComponentModel.Design.IDesigner, System.IServiceProvider)" argnames="mainDesigner, serviceProvider" />
-        <property name="AutoArrange" propertytype="System.Boolean" />
-        <property name="ComponentCount" propertytype="System.Int32" />
-        <property name="DragHandler" propertytype="System.Windows.Forms.Design.SelectionUIHandler" />
-        <property name="InheritanceUI" propertytype="System.Windows.Forms.Design.InheritanceUI" />
-        <property name="MenuService" propertytype="System.ComponentModel.Design.IMenuCommandService" />
-        <property name="ShowLargeIcons" propertytype="System.Boolean" />
-        <property name="TabOrderActive" propertytype="System.Boolean" />
-        <property name="IsWindowVisible" propertytype="System.Boolean" />
-        <property name="ParentGridSize" propertytype="System.Drawing.Size" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="CreateParams" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RemoveComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="OnSetCursor" argnames="" returntype="System.Void" />
-        <method name="OnLostCapture" argnames="" returntype="System.Void" />
-        <method name="CanDisplayComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Boolean" />
-        <method name="CanCreateComponentFromTool(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
-        <method name="AddComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfevent" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="CreateComponentFromTool(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
-        <method name="DisplayError(System.Exception)" argnames="e" returntype="System.Void" />
-        <method name="GetLocation(System.ComponentModel.IComponent)" argnames="receiver" returntype="System.Drawing.Point" />
-        <method name="SetLocation(System.ComponentModel.IComponent, System.Drawing.Point)" argnames="receiver, location" returntype="System.Void" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ComponentDocumentDesigner" namespace="System.Windows.Forms.Design">
-        <constructor name="ComponentDocumentDesigner" argnames="" />
-        <property name="Control" propertytype="System.Windows.Forms.Control" />
-        <property name="TrayAutoArrange" propertytype="System.Boolean" />
-        <property name="TrayLargeIcon" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="GetToolSupported(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OverlayControlAccessibleObject" namespace="System.Windows.Forms.Design">
-        <constructor name="OverlayControlAccessibleObject(System.Windows.Forms.Design.DesignerFrame.OverlayControl)" argnames="owner" />
-        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-        <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DockEditor" namespace="System.Windows.Forms.Design">
-        <constructor name="DockEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ParentControlDesigner" namespace="System.Windows.Forms.Design">
-        <constructor name="ParentControlDesigner" argnames="" />
-        <field name="accessibilityObj" inherited="System.Windows.Forms.Design.ControlDesigner" />
-        <property name="CurrentGridSize" propertytype="System.Drawing.Size" />
-        <property name="DefaultControlLocation" propertytype="System.Drawing.Point" />
-        <property name="DrawGrid" propertytype="System.Boolean" />
-        <property name="EnableDragRect" propertytype="System.Boolean" />
-        <property name="ParentGridSize" propertytype="System.Drawing.Size" />
-        <property name="GridSize" propertytype="System.Drawing.Size" />
-        <property name="SnapToGrid" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Collections.ICollection" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Control" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Control" />
-        <property name="SelectionRules" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Design.SelectionRules" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="CreateToolCore(System.Drawing.Design.ToolboxItem, System.Int32, System.Int32, System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="tool, x, y, width, height, hasLocation, hasSize" returntype="System.ComponentModel.IComponent[]" />
-        <method name="CanParent(System.Windows.Forms.Control)" argnames="control" returntype="System.Boolean" />
-        <method name="CanParent(System.Windows.Forms.Design.ControlDesigner)" argnames="controlDesigner" returntype="System.Boolean" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="OnSetCursor" argnames="" returntype="System.Void" />
-        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
-        <method name="OnMouseLeave" argnames="" returntype="System.Void" />
-        <method name="OnMouseHover" argnames="" returntype="System.Void" />
-        <method name="OnMouseEnter" argnames="" returntype="System.Void" />
-        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" returntype="System.Void" />
-        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
-        <method name="OnCreateHandle" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetHitTest(System.Drawing.Point)" argnames="point" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeCreateTool(System.Windows.Forms.Design.ParentControlDesigner, System.Drawing.Design.ToolboxItem)" argnames="toInvoke, tool" returntype="System.Void" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Point)" argnames="tool, location" returntype="System.Void" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Rectangle)" argnames="tool, bounds" returntype="System.Void" />
-        <method name="GetControl(System.Object)" argnames="component" returntype="System.Windows.Forms.Control" />
-        <method name="GetUpdatedRect(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Boolean)" argnames="originalRect, dragRect, updateSize" returntype="System.Drawing.Rectangle" />
-        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DisplayError(System.Exception)" argnames="e" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="EnableDragDrop(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ScrollableControlDesigner" namespace="System.Windows.Forms.Design">
-        <constructor name="ScrollableControlDesigner" argnames="" />
-        <field name="accessibilityObj" inherited="System.Windows.Forms.Design.ControlDesigner" />
-        <property name="DefaultControlLocation" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Point" />
-        <property name="DrawGrid" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
-        <property name="EnableDragRect" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
-        <property name="GridSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Size" />
-        <property name="AssociatedComponents" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Collections.ICollection" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Control" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Control" />
-        <property name="SelectionRules" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Design.SelectionRules" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="CreateToolCore(System.Drawing.Design.ToolboxItem, System.Int32, System.Int32, System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="tool, x, y, width, height, hasLocation, hasSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.ComponentModel.IComponent[]" />
-        <method name="CanParent(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
-        <method name="CanParent(System.Windows.Forms.Design.ControlDesigner)" argnames="controlDesigner" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="OnSetCursor" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseLeave" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseHover" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseEnter" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnCreateHandle" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetHitTest(System.Drawing.Point)" argnames="pt" returntype="System.Boolean" />
-        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem)" argnames="tool" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Point)" argnames="tool, location" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Rectangle)" argnames="tool, bounds" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="GetControl(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Windows.Forms.Control" />
-        <method name="GetUpdatedRect(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Boolean)" argnames="originalRect, dragRect, updateSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Drawing.Rectangle" />
-        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DisplayError(System.Exception)" argnames="e" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="EnableDragDrop(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DocumentDesigner" namespace="System.Windows.Forms.Design">
-        <constructor name="DocumentDesigner" argnames="" />
-        <field name="menuEditorService" />
-        <field name="accessibilityObj" inherited="System.Windows.Forms.Design.ControlDesigner" />
-        <property name="Location" propertytype="System.Drawing.Point" />
-        <property name="SelectionRules" propertytype="System.Windows.Forms.Design.SelectionRules" />
-        <property name="TabOrderActive" propertytype="System.Boolean" />
-        <property name="TrayAutoArrange" propertytype="System.Boolean" />
-        <property name="TrayLargeIcon" propertytype="System.Boolean" />
-        <property name="TrayHeight" propertytype="System.Int32" />
-        <property name="DefaultControlLocation" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Point" />
-        <property name="DrawGrid" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
-        <property name="EnableDragRect" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
-        <property name="GridSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Size" />
-        <property name="AssociatedComponents" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Collections.ICollection" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Control" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Control" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="ToolPicked(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
-        <method name="EnsureMenuEditorService(System.ComponentModel.IComponent)" argnames="c" returntype="System.Void" />
-        <method name="GetToolSupported(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
-        <method name="CreateToolCore(System.Drawing.Design.ToolboxItem, System.Int32, System.Int32, System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="tool, x, y, width, height, hasLocation, hasSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.ComponentModel.IComponent[]" />
-        <method name="CanParent(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
-        <method name="CanParent(System.Windows.Forms.Design.ControlDesigner)" argnames="controlDesigner" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="OnSetCursor" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseLeave" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseHover" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseEnter" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="OnCreateHandle" argnames="" returntype="System.Void" />
-        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="GetHitTest(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Design.ScrollableControlDesigner" returntype="System.Boolean" />
-        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem)" argnames="tool" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Point)" argnames="tool, location" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Rectangle)" argnames="tool, bounds" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
-        <method name="GetControl(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Windows.Forms.Control" />
-        <method name="GetUpdatedRect(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Boolean)" argnames="originalRect, dragRect, updateSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Drawing.Rectangle" />
-        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DisplayError(System.Exception)" argnames="e" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="EnableDragDrop(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventHandlerService" namespace="System.Windows.Forms.Design">
-        <constructor name="EventHandlerService(System.Windows.Forms.Control)" argnames="focusWnd" />
-        <property name="FocusWindow" propertytype="System.Windows.Forms.Control" />
-        <method name="PushHandler(System.Object)" argnames="handler" returntype="System.Void" />
-        <method name="PopHandler(System.Object)" argnames="handler" returntype="System.Void" />
-        <method name="GetHandler(System.Type)" argnames="handlerType" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="EventHandlerChanged" />
-    </class>
-    <class name="FileNameEditor" namespace="System.Windows.Forms.Design">
-        <constructor name="FileNameEditor" argnames="" />
-        <method name="InitializeDialog(System.Windows.Forms.OpenFileDialog)" argnames="openFileDialog" returntype="System.Void" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FolderNameEditor" namespace="System.Windows.Forms.Design">
-        <constructor name="FolderNameEditor" argnames="" />
-        <method name="InitializeDialog(System.Windows.Forms.Design.FolderNameEditor.FolderBrowser)" argnames="folderBrowser" returntype="System.Void" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MenuCommands" namespace="System.Windows.Forms.Design">
-        <constructor name="MenuCommands" argnames="" />
-        <field name="SelectionMenu" />
-        <field name="ContainerMenu" />
-        <field name="TraySelectionMenu" />
-        <field name="ComponentTrayMenu" />
-        <field name="DesignerProperties" />
-        <field name="KeyCancel" />
-        <field name="KeyReverseCancel" />
-        <field name="KeyDefaultAction" />
-        <field name="KeyMoveUp" />
-        <field name="KeyMoveDown" />
-        <field name="KeyMoveLeft" />
-        <field name="KeyMoveRight" />
-        <field name="KeyNudgeUp" />
-        <field name="KeyNudgeDown" />
-        <field name="KeyNudgeLeft" />
-        <field name="KeyNudgeRight" />
-        <field name="KeySizeWidthIncrease" />
-        <field name="KeySizeHeightIncrease" />
-        <field name="KeySizeWidthDecrease" />
-        <field name="KeySizeHeightDecrease" />
-        <field name="KeyNudgeWidthIncrease" />
-        <field name="KeyNudgeHeightIncrease" />
-        <field name="KeyNudgeWidthDecrease" />
-        <field name="KeyNudgeHeightDecrease" />
-        <field name="KeySelectNext" />
-        <field name="KeySelectPrevious" />
-        <field name="KeyTabOrderSelect" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IReferenceResolver" namespace="System.Windows.Forms.Design">
-        <method name="ResolveActiveXReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
-        <method name="ResolveComReference(System.Reflection.AssemblyName)" argnames="name" returntype="System.String" />
-        <method name="ResolveComReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
-        <method name="ResolveManagedReference(System.String)" argnames="assemName" returntype="System.String" />
-    </interface>
-    <interface name="IMenuEditorService" namespace="System.Windows.Forms.Design">
-        <method name="MessageFilter(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-        <method name="SetSelection(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Void" />
-        <method name="SetMenu(System.Windows.Forms.Menu)" argnames="menu" returntype="System.Void" />
-        <method name="IsActive" argnames="" returntype="System.Boolean" />
-        <method name="GetMenu" argnames="" returntype="System.Windows.Forms.Menu" />
-    </interface>
-    <enum name="SelectionRules" namespace="System.Windows.Forms.Design">
-        <field name="None" />
-        <field name="Moveable" />
-        <field name="Visible" />
-        <field name="Locked" />
-        <field name="TopSizeable" />
-        <field name="BottomSizeable" />
-        <field name="LeftSizeable" />
-        <field name="RightSizeable" />
-        <field name="AllSizeable" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="LogConverter" namespace="System.Diagnostics.Design">
-        <constructor name="LogConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProcessDesigner" namespace="System.Diagnostics.Design">
-        <constructor name="ProcessDesigner" argnames="" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProcessModuleDesigner" namespace="System.Diagnostics.Design">
-        <constructor name="ProcessModuleDesigner" argnames="" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProcessThreadDesigner" namespace="System.Diagnostics.Design">
-        <constructor name="ProcessThreadDesigner" argnames="" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorBuilder" namespace="System.Web.UI.Design">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="BuildColor(System.ComponentModel.IComponent, System.Windows.Forms.Control, System.String)" argnames="component, owner, initialColor" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlParser" namespace="System.Web.UI.Design">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ParseControl(System.ComponentModel.Design.IDesignerHost, System.String)" argnames="designerHost, controlText" returntype="System.Web.UI.Control" />
-        <method name="ParseControl(System.ComponentModel.Design.IDesignerHost, System.String, System.String)" argnames="designerHost, controlText, directives" returntype="System.Web.UI.Control" />
-        <method name="ParseTemplate(System.ComponentModel.Design.IDesignerHost, System.String)" argnames="designerHost, templateText" returntype="System.Web.UI.ITemplate" />
-        <method name="ParseTemplate(System.ComponentModel.Design.IDesignerHost, System.String, System.String)" argnames="designerHost, templateText, directives" returntype="System.Web.UI.ITemplate" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataBindingCollectionConverter" namespace="System.Web.UI.Design">
-        <constructor name="DataBindingCollectionConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataBindingCollectionEditor" namespace="System.Web.UI.Design">
-        <constructor name="DataBindingCollectionEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataBindingHandler" namespace="System.Web.UI.Design">
-        <constructor name="DataBindingHandler" argnames="" />
-        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataBindingValueUIHandler" namespace="System.Web.UI.Design">
-        <constructor name="DataBindingValueUIHandler" argnames="" />
-        <property name="DataBindingBitmap" propertytype="System.Drawing.Bitmap" />
-        <property name="DataBindingToolTip" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="OnGetUIValueItem(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Collections.ArrayList)" argnames="context, propDesc, valueUIItemList" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataFieldConverter" namespace="System.Web.UI.Design">
-        <constructor name="DataFieldConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataMemberConverter" namespace="System.Web.UI.Design">
-        <constructor name="DataMemberConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataSourceConverter" namespace="System.Web.UI.Design">
-        <constructor name="DataSourceConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignTimeData" namespace="System.Web.UI.Design">
-        <field name="DataBindingHandler" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateDummyDataTable" argnames="" returntype="System.Data.DataTable" />
-        <method name="CreateSampleDataTable(System.Collections.IEnumerable)" argnames="referenceData" returntype="System.Data.DataTable" />
-        <method name="GetDataFields(System.Collections.IEnumerable)" argnames="dataSource" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetDataMembers(System.Object)" argnames="dataSource" returntype="System.String[]" />
-        <method name="GetDataMember(System.ComponentModel.IListSource, System.String)" argnames="dataSource, dataMember" returntype="System.Collections.IEnumerable" />
-        <method name="GetDesignTimeDataSource(System.Data.DataTable, System.Int32)" argnames="dataTable, minimumRows" returntype="System.Collections.IEnumerable" />
-        <method name="GetSelectedDataSource(System.ComponentModel.IComponent, System.String)" argnames="component, dataSource" returntype="System.Object" />
-        <method name="GetSelectedDataSource(System.ComponentModel.IComponent, System.String, System.String)" argnames="component, dataSource, dataMember" returntype="System.Collections.IEnumerable" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HtmlControlDesigner" namespace="System.Web.UI.Design">
-        <constructor name="HtmlControlDesigner" argnames="" />
-        <property name="DesignTimeElement" propertytype="System.Object" />
-        <property name="Behavior" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HtmlIntrinsicControlDesigner" namespace="System.Web.UI.Design">
-        <constructor name="HtmlIntrinsicControlDesigner" argnames="" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UrlEditor" namespace="System.Web.UI.Design">
-        <constructor name="UrlEditor" argnames="" />
-        <property name="Caption" propertytype="System.String" />
-        <property name="Options" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
-        <property name="Filter" propertytype="System.String" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageUrlEditor" namespace="System.Web.UI.Design">
-        <constructor name="ImageUrlEditor" argnames="" />
-        <property name="Caption" propertytype="System.String" />
-        <property name="Filter" propertytype="System.String" />
-        <property name="Options" inherited="System.Web.UI.Design.UrlEditor" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlDesigner" namespace="System.Web.UI.Design">
-        <constructor name="ControlDesigner" argnames="" />
-        <property name="AllowResize" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" propertytype="System.Boolean" />
-        <property name="ID" propertytype="System.String" />
-        <property name="IsDirty" propertytype="System.Boolean" />
-        <property name="IsIgnoringComponentChanges" propertytype="System.Boolean" />
-        <property name="IsWebControl" propertytype="System.Boolean" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ReadWriteControlDesigner" namespace="System.Web.UI.Design">
-        <constructor name="ReadWriteControlDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="MapPropertyToStyle(System.String, System.Object)" argnames="propName, varPropValue" returntype="System.Void" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TemplatedControlDesigner" namespace="System.Web.UI.Design">
-        <constructor name="TemplatedControlDesigner" argnames="" />
-        <property name="ActiveTemplateEditingFrame" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <property name="CanEnterTemplateMode" propertytype="System.Boolean" />
-        <property name="HidePropertiesInTemplateMode" propertytype="System.Boolean" />
-        <property name="InTemplateMode" propertytype="System.Boolean" />
-        <property name="TemplateEditingVerbHandler" propertytype="System.EventHandler" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" returntype="System.Void" />
-        <method name="OnTemplateModeChanged" argnames="" returntype="System.Void" />
-        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" returntype="System.Type" />
-        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" returntype="System.String" />
-        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" returntype="System.Collections.IEnumerable" />
-        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" returntype="System.String" />
-        <method name="GetCachedTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <method name="UpdateDesignTimeHtml" argnames="" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" returntype="System.Void" />
-        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" returntype="System.Void" />
-        <method name="GetTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="GetTemplateFromText(System.String)" argnames="text" returntype="System.Web.UI.ITemplate" />
-        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" returntype="System.String" />
-        <method name="SaveActiveTemplateEditingFrame" argnames="" returntype="System.Void" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TemplateEditingService" namespace="System.Web.UI.Design">
-        <constructor name="TemplateEditingService(System.ComponentModel.Design.IDesignerHost)" argnames="designerHost" />
-        <property name="SupportsNestedTemplateEditing" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="GetContainingTemplateName(System.Web.UI.Control)" argnames="control" returntype="System.String" />
-        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[], System.Web.UI.WebControls.Style, System.Web.UI.WebControls.Style[])" argnames="designer, frameName, templateNames, controlStyle, templateStyles" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[])" argnames="designer, frameName, templateNames" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TemplateEditingVerb" namespace="System.Web.UI.Design">
-        <constructor name="TemplateEditingVerb(System.String, System.Int32, System.Web.UI.Design.TemplatedControlDesigner)" argnames="text, index, designer" />
-        <property name="EditingFrame" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="Text" inherited="System.ComponentModel.Design.DesignerVerb" propertytype="System.String" />
-        <property name="Checked" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="Enabled" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="Supported" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="CommandID" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.ComponentModel.Design.CommandID" />
-        <property name="OleStatus" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Int32" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="OnCommandChanged(System.EventArgs)" argnames="e" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
-        <method name="Invoke" argnames="" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Design.DesignerVerb" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CommandChanged" inherited="System.ComponentModel.Design.MenuCommand" />
-    </class>
-    <class name="TextControlDesigner" namespace="System.Web.UI.Design">
-        <constructor name="TextControlDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TextDataBindingHandler" namespace="System.Web.UI.Design">
-        <constructor name="TextDataBindingHandler" argnames="" />
-        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UrlBuilder" namespace="System.Web.UI.Design">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="BuildUrl(System.ComponentModel.IComponent, System.Windows.Forms.Control, System.String, System.String, System.String)" argnames="component, owner, initialUrl, caption, filter" returntype="System.String" />
-        <method name="BuildUrl(System.ComponentModel.IComponent, System.Windows.Forms.Control, System.String, System.String, System.String, System.Web.UI.Design.UrlBuilderOptions)" argnames="component, owner, initialUrl, caption, filter, options" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlPersister" namespace="System.Web.UI.Design">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="PersistInnerProperties(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="component, host" returntype="System.String" />
-        <method name="PersistInnerProperties(System.IO.TextWriter, System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="sw, component, host" returntype="System.Void" />
-        <method name="PersistControl(System.Web.UI.Control)" argnames="control" returntype="System.String" />
-        <method name="PersistControl(System.Web.UI.Control, System.ComponentModel.Design.IDesignerHost)" argnames="control, host" returntype="System.String" />
-        <method name="PersistControl(System.IO.TextWriter, System.Web.UI.Control)" argnames="sw, control" returntype="System.Void" />
-        <method name="PersistControl(System.IO.TextWriter, System.Web.UI.Control, System.ComponentModel.Design.IDesignerHost)" argnames="sw, control, host" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebControlToolboxItem" namespace="System.Web.UI.Design">
-        <constructor name="WebControlToolboxItem" argnames="" />
-        <constructor name="WebControlToolboxItem(System.Type)" argnames="type" />
-        <property name="AssemblyName" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Reflection.AssemblyName" />
-        <property name="Bitmap" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Drawing.Bitmap" />
-        <property name="DisplayName" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.String" />
-        <property name="Filter" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Collections.ICollection" />
-        <property name="Locked" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Boolean" />
-        <property name="TypeName" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.String" />
-        <method name="Serialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="OnComponentsCreating(System.Drawing.Design.ToolboxComponentsCreatingEventArgs)" argnames="args" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
-        <method name="OnComponentsCreated(System.Drawing.Design.ToolboxComponentsCreatedEventArgs)" argnames="args" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
-        <method name="Initialize(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="GetType(System.ComponentModel.Design.IDesignerHost, System.Reflection.AssemblyName, System.String, System.Boolean)" argnames="host, assemblyName, typeName, reference" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Type" />
-        <method name="Deserialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="CreateComponentsCore(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.ComponentModel.IComponent[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.String" />
-        <method name="GetToolAttributeValue(System.ComponentModel.Design.IDesignerHost, System.Type)" argnames="host, attributeType" returntype="System.Object" />
-        <method name="GetToolHtml(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.String" />
-        <method name="GetToolType(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.Type" />
-        <method name="CheckUnlocked" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
-        <method name="CreateComponents" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.ComponentModel.IComponent[]" />
-        <method name="CreateComponents(System.ComponentModel.Design.IDesignerHost)" argnames="host" inherited="System.Drawing.Design.ToolboxItem" returntype="System.ComponentModel.IComponent[]" />
-        <method name="Lock" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ComponentsCreated" inherited="System.Drawing.Design.ToolboxItem" />
-        <event name="ComponentsCreating" inherited="System.Drawing.Design.ToolboxItem" />
-    </class>
-    <class name="XmlFileEditor" namespace="System.Web.UI.Design">
-        <constructor name="XmlFileEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlUrlEditor" namespace="System.Web.UI.Design">
-        <constructor name="XmlUrlEditor" argnames="" />
-        <property name="Caption" propertytype="System.String" />
-        <property name="Filter" propertytype="System.String" />
-        <property name="Options" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XslUrlEditor" namespace="System.Web.UI.Design">
-        <constructor name="XslUrlEditor" argnames="" />
-        <property name="Caption" propertytype="System.String" />
-        <property name="Filter" propertytype="System.String" />
-        <property name="Options" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CalendarDataBindingHandler" namespace="System.Web.UI.Design">
-        <constructor name="CalendarDataBindingHandler" argnames="" />
-        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HyperLinkDataBindingHandler" namespace="System.Web.UI.Design">
-        <constructor name="HyperLinkDataBindingHandler" argnames="" />
-        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UserControlDesigner" namespace="System.Web.UI.Design">
-        <constructor name="UserControlDesigner" argnames="" />
-        <property name="AllowResize" propertytype="System.Boolean" />
-        <property name="ShouldCodeSerialize" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IDataSourceProvider" namespace="System.Web.UI.Design">
-        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
-        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
-    </interface>
-    <interface name="IHtmlControlDesignerBehavior" namespace="System.Web.UI.Design">
-        <property name="Designer" propertytype="System.Web.UI.Design.HtmlControlDesigner" />
-        <property name="DesignTimeElement" propertytype="System.Object" />
-        <method name="SetStyleAttribute(System.String, System.Boolean, System.Object, System.Boolean)" argnames="attribute, designTimeOnly, value, ignoreCase" returntype="System.Void" />
-        <method name="RemoveStyleAttribute(System.String, System.Boolean, System.Boolean)" argnames="attribute, designTimeOnly, ignoreCase" returntype="System.Void" />
-        <method name="GetStyleAttribute(System.String, System.Boolean, System.Boolean)" argnames="attribute, designTimeOnly, ignoreCase" returntype="System.Object" />
-        <method name="SetAttribute(System.String, System.Object, System.Boolean)" argnames="attribute, value, ignoreCase" returntype="System.Void" />
-        <method name="RemoveAttribute(System.String, System.Boolean)" argnames="attribute, ignoreCase" returntype="System.Void" />
-        <method name="GetAttribute(System.String, System.Boolean)" argnames="attribute, ignoreCase" returntype="System.Object" />
-    </interface>
-    <interface name="ITemplateEditingFrame" namespace="System.Web.UI.Design">
-        <property name="ControlStyle" propertytype="System.Web.UI.WebControls.Style" />
-        <property name="Name" propertytype="System.String" />
-        <property name="InitialHeight" propertytype="System.Int32" />
-        <property name="InitialWidth" propertytype="System.Int32" />
-        <property name="TemplateNames" propertytype="System.String[]" />
-        <property name="TemplateStyles" propertytype="System.Web.UI.WebControls.Style[]" />
-        <property name="Verb" propertytype="System.Web.UI.Design.TemplateEditingVerb" />
-        <method name="UpdateControlName(System.String)" argnames="newName" returntype="System.Void" />
-        <method name="Save" argnames="" returntype="System.Void" />
-        <method name="Resize(System.Int32, System.Int32)" argnames="width, height" returntype="System.Void" />
-        <method name="Open" argnames="" returntype="System.Void" />
-        <method name="Close(System.Boolean)" argnames="saveChanges" returntype="System.Void" />
-    </interface>
-    <interface name="ITemplateEditingService" namespace="System.Web.UI.Design">
-        <property name="SupportsNestedTemplateEditing" propertytype="System.Boolean" />
-        <method name="GetContainingTemplateName(System.Web.UI.Control)" argnames="control" returntype="System.String" />
-        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[], System.Web.UI.WebControls.Style, System.Web.UI.WebControls.Style[])" argnames="designer, frameName, templateNames, controlStyle, templateStyles" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[])" argnames="designer, frameName, templateNames" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-    </interface>
-    <interface name="IControlDesignerBehavior" namespace="System.Web.UI.Design">
-        <property name="DesignTimeElementView" propertytype="System.Object" />
-        <property name="DesignTimeHtml" propertytype="System.String" />
-        <method name="OnTemplateModeChanged" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IWebFormReferenceManager" namespace="System.Web.UI.Design">
-        <method name="GetRegisterDirectives" argnames="" returntype="System.String" />
-        <method name="GetTagPrefix(System.Type)" argnames="objectType" returntype="System.String" />
-        <method name="GetObjectType(System.String, System.String)" argnames="tagPrefix, typeName" returntype="System.Type" />
-    </interface>
-    <interface name="IWebFormsBuilderUIService" namespace="System.Web.UI.Design">
-        <method name="BuildUrl(System.Windows.Forms.Control, System.String, System.String, System.String, System.String, System.Web.UI.Design.UrlBuilderOptions)" argnames="owner, initialUrl, baseUrl, caption, filter, options" returntype="System.String" />
-        <method name="BuildColor(System.Windows.Forms.Control, System.String)" argnames="owner, initialColor" returntype="System.String" />
-    </interface>
-    <interface name="IWebFormsDocumentService" namespace="System.Web.UI.Design">
-        <property name="DocumentUrl" propertytype="System.String" />
-        <property name="IsLoading" propertytype="System.Boolean" />
-        <method name="UpdateSelection" argnames="" returntype="System.Void" />
-        <method name="EnableUndo(System.Boolean)" argnames="enable" returntype="System.Void" />
-        <method name="DiscardUndoUnit(System.Object)" argnames="discardableUndoUnit" returntype="System.Void" />
-        <method name="CreateDiscardableUndoUnit" argnames="" returntype="System.Object" />
-        <event name="LoadComplete" />
-    </interface>
-    <enum name="UrlBuilderOptions" namespace="System.Web.UI.Design">
-        <field name="None" />
-        <field name="NoAbsolute" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="AdRotatorDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="AdRotatorDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BaseDataListComponentEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="BaseDataListComponentEditor(System.Int32)" argnames="initialPage" />
-        <method name="GetInitialComponentEditorPageIndex" argnames="" returntype="System.Int32" />
-        <method name="GetComponentEditorPages" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Type[]" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" returntype="System.Boolean" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BaseDataListDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="BaseDataListDesigner" argnames="" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" propertytype="System.Boolean" />
-        <property name="DataKeyField" propertytype="System.String" />
-        <property name="DataMember" propertytype="System.String" />
-        <property name="DataSource" propertytype="System.String" />
-        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <property name="ActiveTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <property name="CanEnterTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="HidePropertiesInTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="InTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
-        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
-        <method name="OnTemplateEditingVerbsChanged" argnames="" returntype="System.Void" />
-        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="OnTemplateModeChanged" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Type" />
-        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" returntype="System.Collections.IEnumerable" />
-        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="GetCachedTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetDesignTimeDataSource(System.Int32, System.Boolean&amp;)" argnames="minimumRows, dummyDataSource" returntype="System.Collections.IEnumerable" />
-        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32, System.Boolean&amp;)" argnames="selectedDataSource, minimumRows, dummyDataSource" returntype="System.Collections.IEnumerable" />
-        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="OnPropertyBuilder(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="GetTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="GetTemplateFromText(System.String)" argnames="text" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.ITemplate" />
-        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="SaveActiveTemplateEditingFrame" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BaseValidatorDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="BaseValidatorDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ButtonDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="ButtonDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CalendarAutoFormatDialog" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="CalendarAutoFormatDialog(System.Web.UI.WebControls.Calendar)" argnames="calendar" />
-        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
-        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
-        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
-        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
-        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
-        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
-        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
-        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
-        <method name="DoDelayLoadActions" argnames="" returntype="System.Void" />
-        <method name="OnActivated(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnSelChangedScheme(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnOKClicked(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="SaveComponent" argnames="" returntype="System.Void" />
-        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="Activated" inherited="System.Windows.Forms.Form" />
-        <event name="Closing" inherited="System.Windows.Forms.Form" />
-        <event name="Closed" inherited="System.Windows.Forms.Form" />
-        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
-        <event name="Load" inherited="System.Windows.Forms.Form" />
-        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
-        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
-        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="CalendarDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="CalendarDesigner" argnames="" />
-        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CheckBoxDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="CheckBoxDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataGridColumnCollectionEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="DataGridColumnCollectionEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataGridComponentEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="DataGridComponentEditor" argnames="" />
-        <constructor name="DataGridComponentEditor(System.Int32)" argnames="initialPage" />
-        <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Int32" />
-        <method name="GetComponentEditorPages" argnames="" returntype="System.Type[]" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Boolean" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataGridDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="DataGridDesigner" argnames="" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.Boolean" />
-        <property name="DataKeyField" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
-        <property name="DataMember" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
-        <property name="DataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
-        <property name="Verbs" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <property name="ActiveTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <property name="CanEnterTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="HidePropertiesInTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="InTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <method name="OnColumnsChanged" argnames="" returntype="System.Void" />
-        <method name="GetResolvedSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="GetSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Object" />
-        <method name="OnTemplateEditingVerbsChanged" argnames="" returntype="System.Void" />
-        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" returntype="System.Void" />
-        <method name="OnTemplateModeChanged" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" returntype="System.Type" />
-        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" returntype="System.String" />
-        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" returntype="System.String" />
-        <method name="GetCachedTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetDesignTimeDataSource(System.Int32, System.Boolean&amp;)" argnames="minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32, System.Boolean&amp;)" argnames="selectedDataSource, minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="OnPropertyBuilder(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="GetTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="GetTemplateFromText(System.String)" argnames="text" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.ITemplate" />
-        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="SaveActiveTemplateEditingFrame" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataListComponentEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="DataListComponentEditor" argnames="" />
-        <constructor name="DataListComponentEditor(System.Int32)" argnames="initialPage" />
-        <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Int32" />
-        <method name="GetComponentEditorPages" argnames="" returntype="System.Type[]" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Boolean" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataListDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="DataListDesigner" argnames="" />
-        <property name="AllowResize" propertytype="System.Boolean" />
-        <property name="TemplatesExist" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.Boolean" />
-        <property name="DataKeyField" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
-        <property name="DataMember" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
-        <property name="DataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
-        <property name="Verbs" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <property name="ActiveTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <property name="CanEnterTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="HidePropertiesInTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="InTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <method name="GetResolvedSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="GetSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Object" />
-        <method name="OnTemplateEditingVerbsChanged" argnames="" returntype="System.Void" />
-        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" returntype="System.Void" />
-        <method name="OnTemplateModeChanged" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Type" />
-        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" returntype="System.String" />
-        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" returntype="System.String" />
-        <method name="GetCachedTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetDesignTimeDataSource(System.Int32, System.Boolean&amp;)" argnames="minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32, System.Boolean&amp;)" argnames="selectedDataSource, minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
-        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="OnPropertyBuilder(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
-        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="GetTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
-        <method name="GetTemplateFromText(System.String)" argnames="text" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.ITemplate" />
-        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
-        <method name="SaveActiveTemplateEditingFrame" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HyperLinkDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="HyperLinkDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LabelDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="LabelDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LinkButtonDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="LinkButtonDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListControlDataBindingHandler" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="ListControlDataBindingHandler" argnames="" />
-        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListControlDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="ListControlDesigner" argnames="" />
-        <property name="DataMember" propertytype="System.String" />
-        <property name="DataSource" propertytype="System.String" />
-        <property name="DataValueField" propertytype="System.String" />
-        <property name="DataTextField" propertytype="System.String" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
-        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
-        <method name="OnDataSourceChanged" argnames="" returntype="System.Void" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="source, ce" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListItemsCollectionEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="ListItemsCollectionEditor(System.Type)" argnames="type" />
-        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
-        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
-        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
-        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="GetItems(System.Object)" argnames="editValue" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object[]" />
-        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
-        <method name="CreateCollectionItemType" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type" />
-        <method name="CreateInstance(System.Type)" argnames="itemType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
-        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
-        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PanelDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="PanelDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="MapPropertyToStyle(System.String, System.Object)" argnames="propName, varPropValue" returntype="System.Void" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ReadWriteControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RegexEditorDialog" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="RegexEditorDialog(System.ComponentModel.ISite)" argnames="site" />
-        <property name="RegularExpression" propertytype="System.String" />
-        <property name="CannedExpressions" propertytype="System.Object[]" />
-        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
-        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
-        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
-        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
-        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
-        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
-        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
-        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
-        <method name="txtExpression_TextChanged(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="lstStandardExpressions_SelectedIndexChanged(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="RegexTypeEditor_Activated(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="cmdTestValidate_Click(System.Object, System.EventArgs)" argnames="sender, args" returntype="System.Void" />
-        <method name="cmdHelp_Click(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="cmdOK_Click(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="Activated" inherited="System.Windows.Forms.Form" />
-        <event name="Closing" inherited="System.Windows.Forms.Form" />
-        <event name="Closed" inherited="System.Windows.Forms.Form" />
-        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
-        <event name="Load" inherited="System.Windows.Forms.Form" />
-        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
-        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
-        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="RegexTypeEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="RegexTypeEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RepeaterDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="RepeaterDesigner" argnames="" />
-        <property name="DataMember" propertytype="System.String" />
-        <property name="DataSource" propertytype="System.String" />
-        <property name="TemplatesExist" propertytype="System.Boolean" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
-        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
-        <method name="OnDataSourceChanged" argnames="" returntype="System.Void" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="source, ce" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetDesignTimeDataSource(System.Int32)" argnames="minimumRows" returntype="System.Collections.IEnumerable" />
-        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32)" argnames="selectedDataSource, minimumRows" returntype="System.Collections.IEnumerable" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TableCellsCollectionEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="TableCellsCollectionEditor(System.Type)" argnames="type" />
-        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
-        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
-        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
-        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="GetItems(System.Object)" argnames="editValue" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object[]" />
-        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
-        <method name="CreateCollectionItemType" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type" />
-        <method name="CreateInstance(System.Type)" argnames="itemType" returntype="System.Object" />
-        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
-        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
-        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TableDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="TableDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TableRowsCollectionEditor" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="TableRowsCollectionEditor(System.Type)" argnames="type" />
-        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
-        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
-        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
-        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
-        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="GetItems(System.Object)" argnames="editValue" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object[]" />
-        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
-        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
-        <method name="CreateCollectionItemType" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type" />
-        <method name="CreateInstance(System.Type)" argnames="itemType" returntype="System.Object" />
-        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
-        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
-        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlDesigner" namespace="System.Web.UI.Design.WebControls">
-        <constructor name="XmlDesigner" argnames="" />
-        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
-        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
-        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
-        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
-        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
-        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
-        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
-        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
-        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
-        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceControllerDesigner" namespace="System.ServiceProcess.Design">
-        <constructor name="ServiceControllerDesigner" argnames="" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MessageDesigner" namespace="System.Messaging.Design">
-        <constructor name="MessageDesigner" argnames="" />
-        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
-        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
-        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
-        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
-        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
-        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
-        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Design">
+    <class name="NMHEADER" namespace="System.Design">
+        <constructor name="NMHEADER" argnames="" />
+        <field name="hwndFrom" />
+        <field name="idFrom" />
+        <field name="code" />
+        <field name="iItem" />
+        <field name="iButton" />
+        <field name="pItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="POINT" namespace="System.Design">
+        <constructor name="POINT" argnames="" />
+        <constructor name="POINT(System.Int32, System.Int32)" argnames="x, y" />
+        <field name="x" />
+        <field name="y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TV_ITEM" namespace="System.Design">
+        <constructor name="TV_ITEM" argnames="" />
+        <field name="mask" />
+        <field name="hItem" />
+        <field name="state" />
+        <field name="stateMask" />
+        <field name="pszText" />
+        <field name="cchTextMax" />
+        <field name="iImage" />
+        <field name="iSelectedImage" />
+        <field name="cChildren" />
+        <field name="lParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMHDR" namespace="System.Design">
+        <constructor name="NMHDR" argnames="" />
+        <field name="hwndFrom" />
+        <field name="idFrom" />
+        <field name="code" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMTREEVIEW" namespace="System.Design">
+        <constructor name="NMTREEVIEW" argnames="" />
+        <field name="nmhdr" />
+        <field name="action" />
+        <field name="itemOld" />
+        <field name="itemNew" />
+        <field name="ptDrag" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TCHITTESTINFO" namespace="System.Design">
+        <constructor name="TCHITTESTINFO" argnames="" />
+        <field name="pt" />
+        <field name="flags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="COMRECT" namespace="System.Design">
+        <constructor name="COMRECT" argnames="" />
+        <constructor name="COMRECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
+        <field name="left" />
+        <field name="top" />
+        <field name="right" />
+        <field name="bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Design.NativeMethods+COMRECT" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FORMATETC" namespace="System.Design">
+        <constructor name="FORMATETC" argnames="" />
+        <field name="cfFormat" />
+        <field name="ptd" />
+        <field name="dwAspect" />
+        <field name="lindex" />
+        <field name="tymed" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="STGMEDIUM" namespace="System.Design">
+        <constructor name="STGMEDIUM" argnames="" />
+        <field name="tymed" />
+        <field name="unionmember" />
+        <field name="pUnkForRelease" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OLECMD" namespace="System.Design">
+        <constructor name="OLECMD" argnames="" />
+        <field name="cmdID" />
+        <field name="cmdf" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagOIFI" namespace="System.Design">
+        <constructor name="tagOIFI" argnames="" />
+        <field name="cb" />
+        <field name="fMDIApp" />
+        <field name="hwndFrame" />
+        <field name="hAccel" />
+        <field name="cAccelEntries" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagSIZE" namespace="System.Design">
+        <constructor name="tagSIZE" argnames="" />
+        <field name="cx" />
+        <field name="cy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagSIZEL" namespace="System.Design">
+        <constructor name="tagSIZEL" argnames="" />
+        <field name="cx" />
+        <field name="cy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagLOGPALETTE" namespace="System.Design">
+        <constructor name="tagLOGPALETTE" argnames="" />
+        <field name="palVersion" />
+        <field name="palNumEntries" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DOCHOSTUIDBLCLICK" namespace="System.Design">
+        <constructor name="DOCHOSTUIDBLCLICK" argnames="" />
+        <field name="DEFAULT" />
+        <field name="SHOWPROPERTIES" />
+        <field name="SHOWCODE" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DOCHOSTUIFLAG" namespace="System.Design">
+        <constructor name="DOCHOSTUIFLAG" argnames="" />
+        <field name="DIALOG" />
+        <field name="DISABLE_HELP_MENU" />
+        <field name="NO3DBORDER" />
+        <field name="SCROLL_NO" />
+        <field name="DISABLE_SCRIPT_INACTIVE" />
+        <field name="OPENNEWWIN" />
+        <field name="DISABLE_OFFSCREEN" />
+        <field name="FLAT_SCROLLBAR" />
+        <field name="DIV_BLOCKDEFAULT" />
+        <field name="ACTIVATE_CLIENTHIT_ONLY" />
+        <field name="DISABLE_COOKIE" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DOCHOSTUIINFO" namespace="System.Design">
+        <constructor name="DOCHOSTUIINFO" argnames="" />
+        <field name="cbSize" />
+        <field name="dwFlags" />
+        <field name="dwDoubleClick" />
+        <field name="dwReserved1" />
+        <field name="dwReserved2" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HTMLDocument" namespace="System.Design">
+        <constructor name="HTMLDocument" argnames="" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HDHITTESTINFO" namespace="System.Design">
+        <constructor name="HDHITTESTINFO" argnames="" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <field name="flags" />
+        <field name="iItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagOLEVERB" namespace="System.Design">
+        <constructor name="tagOLEVERB" argnames="" />
+        <field name="lVerb" />
+        <field name="lpszVerbName" />
+        <field name="fuFlags" />
+        <field name="grfAttribs" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TV_HITTESTINFO" namespace="System.Design">
+        <constructor name="TV_HITTESTINFO" argnames="" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <field name="flags" />
+        <field name="hItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CommonHandles" namespace="System.Design">
+        <constructor name="CommonHandles" argnames="" />
+        <field name="Accelerator" />
+        <field name="Cursor" />
+        <field name="EMF" />
+        <field name="Find" />
+        <field name="GDI" />
+        <field name="HDC" />
+        <field name="Icon" />
+        <field name="Kernel" />
+        <field name="Menu" />
+        <field name="Window" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HandleCollector" namespace="System.Design">
+        <constructor name="HandleCollector" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
+        <method name="RegisterType(System.String, System.Int32, System.Int32)" argnames="typeName, expense, initialThreshold" returntype="System.Int32" />
+        <method name="Remove(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="HandleAdded" />
+        <event name="HandleRemoved" />
+    </class>
+    <class name="STATDATA" namespace="System.Design">
+        <constructor name="STATDATA" argnames="" />
+        <field name="advf" />
+        <field name="dwConnection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BROWSEINFO" namespace="System.Design">
+        <constructor name="BROWSEINFO" argnames="" />
+        <field name="hwndOwner" />
+        <field name="pidlRoot" />
+        <field name="pszDisplayName" />
+        <field name="lpszTitle" />
+        <field name="ulFlags" />
+        <field name="lpfn" />
+        <field name="lParam" />
+        <field name="iImage" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Shell32" namespace="System.Design">
+        <constructor name="Shell32" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SHGetSpecialFolderLocation(System.IntPtr, System.Int32, System.IntPtr&amp;)" argnames="hwnd, csidl, ppidl" returntype="System.Int32" />
+        <method name="SHGetPathFromIDList(System.IntPtr, System.IntPtr)" argnames="pidl, pszPath" returntype="System.Boolean" />
+        <method name="SHBrowseForFolder(System.Design.UnsafeNativeMethods.BROWSEINFO)" argnames="lpbi" returntype="System.IntPtr" />
+        <method name="SHGetMalloc(System.Design.UnsafeNativeMethods.IMalloc[])" argnames="ppMalloc" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IDocHostUIHandler" namespace="System.Design">
+        <method name="FilterDataObject(System.Design.NativeMethods.IOleDataObject, System.Design.NativeMethods.IOleDataObject&amp;)" argnames="pDO, ppDORet" returntype="System.Int32" />
+        <method name="TranslateUrl(System.Int32, System.String, System.String&amp;)" argnames="dwTranslate, strURLIn, pstrURLOut" returntype="System.Int32" />
+        <method name="GetExternal(System.Object&amp;)" argnames="ppDispatch" returntype="System.Int32" />
+        <method name="GetDropTarget(System.Design.NativeMethods.IOleDropTarget, System.Design.NativeMethods.IOleDropTarget&amp;)" argnames="pDropTarget, ppDropTarget" returntype="System.Int32" />
+        <method name="GetOptionKeyPath(System.String[], System.Int32)" argnames="pbstrKey, dw" returntype="System.Int32" />
+        <method name="TranslateAccelerator(System.Design.NativeMethods.MSG&amp;, System.Guid&amp;, System.Int32)" argnames="msg, group, nCmdID" returntype="System.Int32" />
+        <method name="ResizeBorder(System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.IOleInPlaceUIWindow, System.Boolean)" argnames="rect, doc, fFrameWindow" returntype="System.Int32" />
+        <method name="OnFrameWindowActivate(System.Boolean)" argnames="fActivate" returntype="System.Int32" />
+        <method name="OnDocWindowActivate(System.Boolean)" argnames="fActivate" returntype="System.Int32" />
+        <method name="EnableModeless(System.Boolean)" argnames="fEnable" returntype="System.Int32" />
+        <method name="UpdateUI" argnames="" returntype="System.Int32" />
+        <method name="HideUI" argnames="" returntype="System.Int32" />
+        <method name="ShowUI(System.Int32, System.Design.NativeMethods.IOleInPlaceActiveObject, System.Design.NativeMethods.IOleCommandTarget, System.Design.NativeMethods.IOleInPlaceFrame, System.Design.NativeMethods.IOleInPlaceUIWindow)" argnames="dwID, activeObject, commandTarget, frame, doc" returntype="System.Int32" />
+        <method name="GetHostInfo(System.Design.NativeMethods.DOCHOSTUIINFO)" argnames="info" returntype="System.Int32" />
+        <method name="ShowContextMenu(System.Int32, System.Design.NativeMethods.POINT, System.Object, System.Object)" argnames="dwID, pt, pcmdtReserved, pdispReserved" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleDataObject" namespace="System.Design">
+        <method name="OleEnumDAdvise(System.Object[])" argnames="ppenumAdvise" returntype="System.Int32" />
+        <method name="OleDUnadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
+        <method name="OleDAdvise(System.Design.NativeMethods.FORMATETC, System.Int32, System.Object, System.Int32[])" argnames="pFormatetc, advf, pAdvSink, pdwConnection" returntype="System.Int32" />
+        <method name="OleEnumFormatEtc(System.Int32)" argnames="dwDirection" returntype="System.Object" />
+        <method name="OleSetData(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM, System.Int32)" argnames="pFormatectIn, pmedium, fRelease" returntype="System.Int32" />
+        <method name="OleGetCanonicalFormatEtc(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.FORMATETC)" argnames="pformatectIn, pformatetcOut" returntype="System.Int32" />
+        <method name="OleQueryGetData(System.Design.NativeMethods.FORMATETC)" argnames="pFormatetc" returntype="System.Int32" />
+        <method name="OleGetDataHere(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
+        <method name="OleGetData(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleDropTarget" namespace="System.Design">
+        <method name="OleDrop(System.Design.NativeMethods.IOleDataObject, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
+        <method name="OleDragLeave" argnames="" returntype="System.Int32" />
+        <method name="OleDragOver(System.Int32, System.Int64, System.Int32&amp;)" argnames="grfKeyState, pt, pdwEffect" returntype="System.Int32" />
+        <method name="OleDragEnter(System.Design.NativeMethods.IOleDataObject, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleCommandTarget" namespace="System.Design">
+        <method name="Exec(System.Guid&amp;, System.Int32, System.Int32, System.Object[], System.IntPtr)" argnames="pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut" returntype="System.Int32" />
+        <method name="QueryStatus(System.Guid&amp;, System.Int32, System.Design.NativeMethods.OLECMD, System.String)" argnames="pguidCmdGroup, cCmds, prgCmds, pCmdText" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleInPlaceFrame" namespace="System.Design">
+        <method name="TranslateAccelerator(System.Design.NativeMethods.MSG&amp;, System.Int16)" argnames="lpmsg, wID" returntype="System.Int32" />
+        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Void" />
+        <method name="SetStatusText(System.String)" argnames="pszStatusText" returntype="System.Void" />
+        <method name="RemoveMenus(System.IntPtr)" argnames="hmenuShared" returntype="System.Void" />
+        <method name="SetMenu(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="hmenuShared, holemenu, hwndActiveObject" returntype="System.Void" />
+        <method name="InsertMenus(System.IntPtr, System.Object)" argnames="hmenuShared, lpMenuWidths" returntype="System.Void" />
+        <method name="SetActiveObject(System.Design.NativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Void" />
+        <method name="SetBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
+        <method name="RequestBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
+        <method name="GetBorder(System.Design.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Void" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <interface name="IOleInPlaceUIWindow" namespace="System.Design">
+        <method name="SetActiveObject(System.Design.NativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Void" />
+        <method name="SetBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
+        <method name="RequestBorderSpace(System.Design.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
+        <method name="GetBorder(System.Design.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Void" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <interface name="IOleInPlaceActiveObject" namespace="System.Design">
+        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Void" />
+        <method name="ResizeBorder(System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.IOleInPlaceUIWindow, System.Int32)" argnames="prcBorder, pUIWindow, fFrameWindow" returntype="System.Void" />
+        <method name="OnDocWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
+        <method name="OnFrameWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
+        <method name="TranslateAccelerator(System.Design.NativeMethods.MSG&amp;)" argnames="lpmsg" returntype="System.Int32" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleContainer" namespace="System.Design">
+        <method name="LockContainer(System.Int32)" argnames="fLock" returntype="System.Void" />
+        <method name="EnumObjects(System.Int32, System.Object&amp;)" argnames="grfFlags, ppenum" returntype="System.Void" />
+        <method name="ParseDisplayName(System.Object, System.String, System.Int32[], System.Object[])" argnames="pbc, pszDisplayName, pchEaten, ppmkOut" returntype="System.Void" />
+    </interface>
+    <interface name="IOleClientSite" namespace="System.Design">
+        <method name="RequestNewObjectLayout" argnames="" returntype="System.Void" />
+        <method name="OnShowWindow(System.Int32)" argnames="fShow" returntype="System.Void" />
+        <method name="ShowObject" argnames="" returntype="System.Void" />
+        <method name="GetContainer(System.Design.NativeMethods.IOleContainer&amp;)" argnames="ppContainer" returntype="System.Int32" />
+        <method name="GetMoniker(System.Int32, System.Int32)" argnames="dwAssign, dwWhichMoniker" returntype="System.Object" />
+        <method name="SaveObject" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IOleDocumentSite" namespace="System.Design">
+        <method name="ActivateMe(System.Design.NativeMethods.IOleDocumentView)" argnames="pViewToActivate" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleDocumentView" namespace="System.Design">
+        <method name="Clone(System.Design.NativeMethods.IOleInPlaceSite, System.Design.NativeMethods.IOleDocumentView[])" argnames="pIPSiteNew, ppViewNew" returntype="System.Void" />
+        <method name="ApplyViewState(System.Design.NativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
+        <method name="SaveViewState(System.Design.NativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
+        <method name="CloseView(System.Int32)" argnames="dwReserved" returntype="System.Void" />
+        <method name="Open" argnames="" returntype="System.Void" />
+        <method name="UIActivate(System.Int32)" argnames="fUIActivate" returntype="System.Void" />
+        <method name="Show(System.Int32)" argnames="fShow" returntype="System.Void" />
+        <method name="SetRectComplex(System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT)" argnames="prcView, prcHScroll, prcVScroll, prcSizeBox" returntype="System.Void" />
+        <method name="GetRect(System.Design.NativeMethods.COMRECT)" argnames="prcView" returntype="System.Void" />
+        <method name="SetRect(System.Design.NativeMethods.COMRECT)" argnames="prcView" returntype="System.Void" />
+        <method name="GetDocument" argnames="" returntype="System.Object" />
+        <method name="GetInPlaceSite" argnames="" returntype="System.Design.NativeMethods+IOleInPlaceSite" />
+        <method name="SetInPlaceSite(System.Design.NativeMethods.IOleInPlaceSite)" argnames="pIPSite" returntype="System.Void" />
+    </interface>
+    <interface name="IOleInPlaceSite" namespace="System.Design">
+        <method name="OnPosRectChange(System.Design.NativeMethods.COMRECT)" argnames="lprcPosRect" returntype="System.Int32" />
+        <method name="DeactivateAndUndo" argnames="" returntype="System.Void" />
+        <method name="DiscardUndoState" argnames="" returntype="System.Void" />
+        <method name="OnInPlaceDeactivate" argnames="" returntype="System.Void" />
+        <method name="OnUIDeactivate(System.Int32)" argnames="fUndoable" returntype="System.Void" />
+        <method name="Scroll(System.Design.NativeMethods.tagSIZE)" argnames="scrollExtant" returntype="System.Int32" />
+        <method name="GetWindowContext(System.Design.NativeMethods.IOleInPlaceFrame&amp;, System.Design.NativeMethods.IOleInPlaceUIWindow&amp;, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.COMRECT, System.Design.NativeMethods.tagOIFI)" argnames="ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo" returntype="System.Void" />
+        <method name="OnUIActivate" argnames="" returntype="System.Void" />
+        <method name="OnInPlaceActivate" argnames="" returntype="System.Void" />
+        <method name="CanInPlaceActivate" argnames="" returntype="System.Int32" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <interface name="IStream" namespace="System.Design">
+        <method name="Clone" argnames="" returntype="System.Design.NativeMethods+IStream" />
+        <method name="Stat(System.IntPtr, System.Int32)" argnames="pStatstg, grfStatFlag" returntype="System.Void" />
+        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="Revert" argnames="" returntype="System.Void" />
+        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
+        <method name="CopyTo(System.Design.NativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
+        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.Int32)" argnames="dlibMove, dwOrigin" returntype="System.Int64" />
+        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
+        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleObject" namespace="System.Design">
+        <method name="SetColorScheme(System.Design.NativeMethods.tagLOGPALETTE)" argnames="pLogpal" returntype="System.Int32" />
+        <method name="GetMiscStatus(System.Int32, System.Int32&amp;)" argnames="dwAspect, misc" returntype="System.Int32" />
+        <method name="EnumAdvise(System.Object&amp;)" argnames="e" returntype="System.Int32" />
+        <method name="Unadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
+        <method name="Advise(System.Design.NativeMethods.IAdviseSink, System.Int32&amp;)" argnames="pAdvSink, cookie" returntype="System.Int32" />
+        <method name="GetExtent(System.Int32, System.Design.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
+        <method name="SetExtent(System.Int32, System.Design.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
+        <method name="GetUserType(System.Int32, System.String&amp;)" argnames="dwFormOfType, userType" returntype="System.Int32" />
+        <method name="GetUserClassID(System.Guid&amp;)" argnames="pClsid" returntype="System.Int32" />
+        <method name="IsUpToDate" argnames="" returntype="System.Int32" />
+        <method name="OleUpdate" argnames="" returntype="System.Int32" />
+        <method name="EnumVerbs(System.Design.NativeMethods.IEnumOLEVERB&amp;)" argnames="e" returntype="System.Int32" />
+        <method name="DoVerb(System.Int32, System.IntPtr, System.Design.NativeMethods.IOleClientSite, System.Int32, System.IntPtr, System.Design.NativeMethods.COMRECT)" argnames="iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect" returntype="System.Int32" />
+        <method name="GetClipboardData(System.Int32, System.Design.NativeMethods.IOleDataObject&amp;)" argnames="dwReserved, data" returntype="System.Int32" />
+        <method name="InitFromData(System.Design.NativeMethods.IOleDataObject, System.Int32, System.Int32)" argnames="pDataObject, fCreation, dwReserved" returntype="System.Int32" />
+        <method name="GetMoniker(System.Int32, System.Int32, System.Object&amp;)" argnames="dwAssign, dwWhichMoniker, moniker" returntype="System.Int32" />
+        <method name="SetMoniker(System.Int32, System.Object)" argnames="dwWhichMoniker, pmk" returntype="System.Int32" />
+        <method name="Close(System.Int32)" argnames="dwSaveOption" returntype="System.Int32" />
+        <method name="SetHostNames(System.String, System.String)" argnames="szContainerApp, szContainerObj" returntype="System.Int32" />
+        <method name="GetClientSite(System.Design.NativeMethods.IOleClientSite&amp;)" argnames="site" returntype="System.Int32" />
+        <method name="SetClientSite(System.Design.NativeMethods.IOleClientSite)" argnames="pClientSite" returntype="System.Int32" />
+    </interface>
+    <interface name="IAdviseSink" namespace="System.Design">
+        <method name="OnClose" argnames="" returntype="System.Void" />
+        <method name="OnSave" argnames="" returntype="System.Void" />
+        <method name="OnRename(System.Object)" argnames="pmk" returntype="System.Void" />
+        <method name="OnViewChange(System.Int32, System.Int32)" argnames="dwAspect, lindex" returntype="System.Void" />
+        <method name="OnDataChange(System.Design.NativeMethods.FORMATETC, System.Design.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pStgmed" returntype="System.Void" />
+    </interface>
+    <interface name="IPersistStreamInit" namespace="System.Design">
+        <method name="InitNew" argnames="" returntype="System.Void" />
+        <method name="GetSizeMax(System.Int64)" argnames="pcbSize" returntype="System.Void" />
+        <method name="Save(System.Design.NativeMethods.IStream, System.Boolean)" argnames="pstm, fClearDirty" returntype="System.Void" />
+        <method name="Load(System.Design.NativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
+        <method name="IsDirty" argnames="" returntype="System.Int32" />
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
+    </interface>
+    <interface name="IHTMLDocument" namespace="System.Design">
+        <method name="GetScript" argnames="" returntype="System.Object" />
+    </interface>
+    <interface name="IHTMLDocument2" namespace="System.Design">
+        <method name="CreateStyleSheet(System.String, System.Int32)" argnames="bstrHref, lIndex" returntype="System.Design.NativeMethods+IHTMLStyleSheet" />
+        <method name="toString" argnames="" returntype="System.String" />
+        <method name="GetOnerrorupdate" argnames="" returntype="System.Object" />
+        <method name="SetOnerrorupdate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnbeforeupdate" argnames="" returntype="System.Object" />
+        <method name="SetOnbeforeupdate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetStyleSheets" argnames="" returntype="System.Object" />
+        <method name="GetParentWindow" argnames="" returntype="System.Object" />
+        <method name="ElementFromPoint(System.Int32, System.Int32)" argnames="x, y" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="GetOnselectstart" argnames="" returntype="System.Object" />
+        <method name="SetOnselectstart(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndragstart" argnames="" returntype="System.Object" />
+        <method name="SetOndragstart(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnrowenter" argnames="" returntype="System.Object" />
+        <method name="SetOnrowenter(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnrowexit" argnames="" returntype="System.Object" />
+        <method name="SetOnrowexit(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnafterupdate" argnames="" returntype="System.Object" />
+        <method name="SetOnafterupdate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnreadystatechange" argnames="" returntype="System.Object" />
+        <method name="SetOnreadystatechange(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmouseover" argnames="" returntype="System.Object" />
+        <method name="SetOnmouseover(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmouseout" argnames="" returntype="System.Object" />
+        <method name="SetOnmouseout(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmousemove" argnames="" returntype="System.Object" />
+        <method name="SetOnmousemove(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmousedown" argnames="" returntype="System.Object" />
+        <method name="SetOnmousedown(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmouseup" argnames="" returntype="System.Object" />
+        <method name="SetOnmouseup(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnkeypress" argnames="" returntype="System.Object" />
+        <method name="SetOnkeypress(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnkeydown" argnames="" returntype="System.Object" />
+        <method name="SetOnkeydown(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnkeyup" argnames="" returntype="System.Object" />
+        <method name="SetOnkeyup(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndblclick" argnames="" returntype="System.Object" />
+        <method name="SetOndblclick(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnclick" argnames="" returntype="System.Object" />
+        <method name="SetOnclick(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnhelp" argnames="" returntype="System.Object" />
+        <method name="SetOnhelp(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="CreateElement(System.String)" argnames="eTag" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="ExecCommandShowHelp(System.String)" argnames="cmdID" returntype="System.Boolean" />
+        <method name="ExecCommand(System.String, System.Boolean, System.Object)" argnames="cmdID, showUI, value" returntype="System.Boolean" />
+        <method name="QueryCommandValue(System.String)" argnames="cmdID" returntype="System.Object" />
+        <method name="QueryCommandText(System.String)" argnames="cmdID" returntype="System.String" />
+        <method name="QueryCommandIndeterm(System.String)" argnames="cmdID" returntype="System.Boolean" />
+        <method name="QueryCommandState(System.String)" argnames="cmdID" returntype="System.Boolean" />
+        <method name="QueryCommandEnabled(System.String)" argnames="cmdID" returntype="System.Boolean" />
+        <method name="QueryCommandSupported(System.String)" argnames="cmdID" returntype="System.Boolean" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Open(System.String, System.Object, System.Object, System.Object)" argnames="URL, name, features, replace" returntype="System.Object" />
+        <method name="DummyWriteln(System.Int32)" argnames="psarray" returntype="System.Void" />
+        <method name="DummyWrite(System.Int32)" argnames="psarray" returntype="System.Void" />
+        <method name="GetNameProp" argnames="" returntype="System.String" />
+        <method name="GetProtocol" argnames="" returntype="System.String" />
+        <method name="GetSecurity" argnames="" returntype="System.String" />
+        <method name="GetFileUpdatedDate" argnames="" returntype="System.String" />
+        <method name="GetFileModifiedDate" argnames="" returntype="System.String" />
+        <method name="GetFileCreatedDate" argnames="" returntype="System.String" />
+        <method name="GetFileSize" argnames="" returntype="System.String" />
+        <method name="GetMimeType" argnames="" returntype="System.String" />
+        <method name="GetDefaultCharset" argnames="" returntype="System.String" />
+        <method name="SetDefaultCharset(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetCharset" argnames="" returntype="System.String" />
+        <method name="SetCharset(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetExpando" argnames="" returntype="System.Boolean" />
+        <method name="SetExpando(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetCookie" argnames="" returntype="System.String" />
+        <method name="SetCookie(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetDomain" argnames="" returntype="System.String" />
+        <method name="SetDomain(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetURL" argnames="" returntype="System.String" />
+        <method name="SetURL(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetLastModified" argnames="" returntype="System.String" />
+        <method name="GetLocation" argnames="" returntype="System.Object" />
+        <method name="GetReferrer" argnames="" returntype="System.String" />
+        <method name="GetVlinkColor" argnames="" returntype="System.Object" />
+        <method name="SetVlinkColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetLinkColor" argnames="" returntype="System.Object" />
+        <method name="SetLinkColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetFgColor" argnames="" returntype="System.Object" />
+        <method name="SetFgColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBgColor" argnames="" returntype="System.Object" />
+        <method name="SetBgColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetAlinkColor" argnames="" returntype="System.Object" />
+        <method name="SetAlinkColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetPlugins" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetEmbeds" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetFrames" argnames="" returntype="System.Object" />
+        <method name="GetReadyState" argnames="" returntype="System.String" />
+        <method name="GetSelection" argnames="" returntype="System.Object" />
+        <method name="GetDesignMode" argnames="" returntype="System.String" />
+        <method name="SetDesignMode(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetScripts" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetTitle" argnames="" returntype="System.String" />
+        <method name="SetTitle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetAnchors" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetForms" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetLinks" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetApplets" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetImages" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetActiveElement" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="GetBody" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="GetAll" argnames="" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetScript" argnames="" returntype="System.Object" />
+    </interface>
+    <interface name="IHTMLElement" namespace="System.Design">
+        <method name="GetAll" argnames="" returntype="System.Object" />
+        <method name="GetChildren" argnames="" returntype="System.Object" />
+        <method name="GetOnfilterchange" argnames="" returntype="System.Object" />
+        <method name="SetOnfilterchange(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndatasetcomplete" argnames="" returntype="System.Object" />
+        <method name="SetOndatasetcomplete(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndataavailable" argnames="" returntype="System.Object" />
+        <method name="SetOndataavailable(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndatasetchanged" argnames="" returntype="System.Object" />
+        <method name="SetOndatasetchanged(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnrowenter" argnames="" returntype="System.Object" />
+        <method name="SetOnrowenter(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnrowexit" argnames="" returntype="System.Object" />
+        <method name="SetOnrowexit(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnerrorupdate" argnames="" returntype="System.Object" />
+        <method name="SetOnerrorupdate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnafterupdate" argnames="" returntype="System.Object" />
+        <method name="SetOnafterupdate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnbeforeupdate" argnames="" returntype="System.Object" />
+        <method name="SetOnbeforeupdate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="toString" argnames="" returntype="System.String" />
+        <method name="GetOndragstart" argnames="" returntype="System.Object" />
+        <method name="SetOndragstart(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetFilters" argnames="" returntype="System.Object" />
+        <method name="Click" argnames="" returntype="System.Void" />
+        <method name="GetIsTextEdit" argnames="" returntype="System.Boolean" />
+        <method name="GetParentTextEdit" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="InsertAdjacentText(System.String, System.String)" argnames="where, text" returntype="System.Void" />
+        <method name="InsertAdjacentHTML(System.String, System.String)" argnames="where, html" returntype="System.Void" />
+        <method name="GetOuterText" argnames="" returntype="System.String" />
+        <method name="SetOuterText(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetOuterHTML" argnames="" returntype="System.String" />
+        <method name="SetOuterHTML(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetInnerText" argnames="" returntype="System.String" />
+        <method name="SetInnerText(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetInnerHTML" argnames="" returntype="System.String" />
+        <method name="SetInnerHTML(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetOffsetParent" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="GetOffsetHeight" argnames="" returntype="System.Int32" />
+        <method name="GetOffsetWidth" argnames="" returntype="System.Int32" />
+        <method name="GetOffsetTop" argnames="" returntype="System.Int32" />
+        <method name="GetOffsetLeft" argnames="" returntype="System.Int32" />
+        <method name="GetLang" argnames="" returntype="System.String" />
+        <method name="SetLang(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetRecordNumber" argnames="" returntype="System.Object" />
+        <method name="GetSourceIndex" argnames="" returntype="System.Int32" />
+        <method name="Contains(System.Design.NativeMethods.IHTMLElement)" argnames="pChild" returntype="System.Boolean" />
+        <method name="ScrollIntoView(System.Object)" argnames="varargStart" returntype="System.Void" />
+        <method name="GetOnselectstart" argnames="" returntype="System.Object" />
+        <method name="SetOnselectstart(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetLanguage" argnames="" returntype="System.String" />
+        <method name="SetLanguage(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetTitle" argnames="" returntype="System.String" />
+        <method name="SetTitle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetDocument" argnames="" returntype="System.Design.NativeMethods+IHTMLDocument2" />
+        <method name="GetOnmouseup" argnames="" returntype="System.Object" />
+        <method name="SetOnmouseup(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmousedown" argnames="" returntype="System.Object" />
+        <method name="SetOnmousedown(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmousemove" argnames="" returntype="System.Object" />
+        <method name="SetOnmousemove(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmouseover" argnames="" returntype="System.Object" />
+        <method name="SetOnmouseover(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmouseout" argnames="" returntype="System.Object" />
+        <method name="SetOnmouseout(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnkeypress" argnames="" returntype="System.Object" />
+        <method name="SetOnkeypress(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnkeyup" argnames="" returntype="System.Object" />
+        <method name="SetOnkeyup(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnkeydown" argnames="" returntype="System.Object" />
+        <method name="SetOnkeydown(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndblclick" argnames="" returntype="System.Object" />
+        <method name="SetOndblclick(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnclick" argnames="" returntype="System.Object" />
+        <method name="SetOnclick(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnhelp" argnames="" returntype="System.Object" />
+        <method name="SetOnhelp(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
+        <method name="GetParentElement" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="GetTagName" argnames="" returntype="System.String" />
+        <method name="GetId" argnames="" returntype="System.String" />
+        <method name="SetId(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetClassName" argnames="" returntype="System.String" />
+        <method name="SetClassName(System.String)" argnames="p" returntype="System.Void" />
+        <method name="RemoveAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Boolean" />
+        <method name="GetAttribute(System.String, System.Int32, System.Object[])" argnames="strAttributeName, lFlags, pvars" returntype="System.Void" />
+        <method name="SetAttribute(System.String, System.Object, System.Int32)" argnames="strAttributeName, AttributeValue, lFlags" returntype="System.Void" />
+    </interface>
+    <interface name="IHTMLElement2" namespace="System.Design">
+        <method name="GetBehavior(System.String, System.String)" argnames="bstrName, bstrUrn" returntype="System.Object" />
+        <method name="GetOnkeydownpreview" argnames="" returntype="System.Object" />
+        <method name="SetOnkeydownpreview(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnmousehover" argnames="" returntype="System.Object" />
+        <method name="SetOnmousehover(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBaseRuntimeStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
+        <method name="GetBaseCurrentStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLCurrentStyle" />
+        <method name="GetBaseStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
+        <method name="GetElementsByTagName(System.String)" argnames="v" returntype="System.Design.NativeMethods+IHTMLElementCollection" />
+        <method name="GetReadyStateValue" argnames="" returntype="System.Int32" />
+        <method name="GetOnbeforeeditfocus" argnames="" returntype="System.Object" />
+        <method name="SetOnbeforeeditfocus(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetTagUrn" argnames="" returntype="System.String" />
+        <method name="SetTagUrn(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBehaviorUrns" argnames="" returntype="System.Object" />
+        <method name="GetRuntimeStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLStyle" />
+        <method name="RemoveBehavior(System.Int32)" argnames="cookie" returntype="System.Boolean" />
+        <method name="AddBehavior(System.String, System.Object&amp;)" argnames="bstrUrl, pvarFactory" returntype="System.Int32" />
+        <method name="GetCanHaveChildren" argnames="" returntype="System.Boolean" />
+        <method name="ReplaceAdjacentText(System.String, System.String)" argnames="where, newText" returntype="System.String" />
+        <method name="GetAdjacentText(System.String)" argnames="where" returntype="System.String" />
+        <method name="ApplyElement(System.Design.NativeMethods.IHTMLElement, System.String)" argnames="apply, where" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="InsertAdjacentElement(System.String, System.Design.NativeMethods.IHTMLElement)" argnames="where, insertedElement" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="GetOncontextmenu" argnames="" returntype="System.Object" />
+        <method name="SetOncontextmenu(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="MergeAttributes(System.Design.NativeMethods.IHTMLElement)" argnames="mergeThis" returntype="System.Void" />
+        <method name="ClearAttributes" argnames="" returntype="System.Void" />
+        <method name="GetScrollLeft" argnames="" returntype="System.Int32" />
+        <method name="SetScrollLeft(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetScrollTop" argnames="" returntype="System.Int32" />
+        <method name="SetScrollTop(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetScrollWidth" argnames="" returntype="System.Int32" />
+        <method name="GetScrollHeight" argnames="" returntype="System.Int32" />
+        <method name="CreateControlRange" argnames="" returntype="System.Object" />
+        <method name="GetDir" argnames="" returntype="System.String" />
+        <method name="SetDir(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetOncellchange" argnames="" returntype="System.Object" />
+        <method name="SetOncellchange(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnrowsinserted" argnames="" returntype="System.Object" />
+        <method name="SetOnrowsinserted(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnrowsdelete" argnames="" returntype="System.Object" />
+        <method name="SetOnrowsdelete(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnreadystatechange" argnames="" returntype="System.Object" />
+        <method name="SetOnreadystatechange(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetReadyState" argnames="" returntype="System.Object" />
+        <method name="DetachEvent(System.String, System.Object)" argnames="ev, pdisp" returntype="System.Void" />
+        <method name="AttachEvent(System.String, System.Object)" argnames="ev, pdisp" returntype="System.Boolean" />
+        <method name="GetClientLeft" argnames="" returntype="System.Int32" />
+        <method name="GetClientTop" argnames="" returntype="System.Int32" />
+        <method name="GetClientWidth" argnames="" returntype="System.Int32" />
+        <method name="GetClientHeight" argnames="" returntype="System.Int32" />
+        <method name="RemoveFilter(System.Object)" argnames="pUnk" returntype="System.Void" />
+        <method name="AddFilter(System.Object)" argnames="pUnk" returntype="System.Void" />
+        <method name="Blur" argnames="" returntype="System.Void" />
+        <method name="GetOnresize" argnames="" returntype="System.Object" />
+        <method name="SetOnresize(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnfocus" argnames="" returntype="System.Object" />
+        <method name="SetOnfocus(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnblur" argnames="" returntype="System.Object" />
+        <method name="SetOnblur(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetAccessKey" argnames="" returntype="System.String" />
+        <method name="SetAccessKey(System.String)" argnames="p" returntype="System.Void" />
+        <method name="Focus" argnames="" returntype="System.Void" />
+        <method name="GetTabIndex" argnames="" returntype="System.Int16" />
+        <method name="SetTabIndex(System.Int16)" argnames="p" returntype="System.Void" />
+        <method name="RemoveExpression(System.String)" argnames="propname" returntype="System.Boolean" />
+        <method name="GetExpression(System.Object)" argnames="propname" returntype="System.Object" />
+        <method name="SetExpression(System.String, System.String, System.String)" argnames="propname, expression, language" returntype="System.Void" />
+        <method name="GetBoundingClientRect" argnames="" returntype="System.Design.NativeMethods+IHTMLRect" />
+        <method name="GetClientRects" argnames="" returntype="System.Design.NativeMethods+IHTMLRectCollection" />
+        <method name="GetOnpropertychange" argnames="" returntype="System.Object" />
+        <method name="SetOnpropertychange(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetCurrentStyle" argnames="" returntype="System.Design.NativeMethods+IHTMLCurrentStyle" />
+        <method name="GetOnpaste" argnames="" returntype="System.Object" />
+        <method name="SetOnpaste(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnbeforepaste" argnames="" returntype="System.Object" />
+        <method name="SetOnbeforepaste(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOncopy" argnames="" returntype="System.Object" />
+        <method name="SetOncopy(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnbeforecopy" argnames="" returntype="System.Object" />
+        <method name="SetOnbeforecopy(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOncut" argnames="" returntype="System.Object" />
+        <method name="SetOncut(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnbeforecut" argnames="" returntype="System.Object" />
+        <method name="SetOnbeforecut(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndrop" argnames="" returntype="System.Object" />
+        <method name="SetOndrop(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndragleave" argnames="" returntype="System.Object" />
+        <method name="SetOndragleave(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndragover" argnames="" returntype="System.Object" />
+        <method name="SetOndragover(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndragenter" argnames="" returntype="System.Object" />
+        <method name="SetOndragenter(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndragend" argnames="" returntype="System.Object" />
+        <method name="SetOndragend(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOndrag" argnames="" returntype="System.Object" />
+        <method name="SetOndrag(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnscroll" argnames="" returntype="System.Object" />
+        <method name="SetOnscroll(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="DoScroll(System.Object)" argnames="component" returntype="System.Void" />
+        <method name="ComponentFromPoint(System.Int32, System.Int32)" argnames="x, y" returntype="System.String" />
+        <method name="GetOnlosecapture" argnames="" returntype="System.Object" />
+        <method name="SetOnlosecapture(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="ReleaseCapture" argnames="" returntype="System.Void" />
+        <method name="SetCapture(System.Boolean)" argnames="containerCapture" returntype="System.Void" />
+        <method name="GetScopeName" argnames="" returntype="System.String" />
+    </interface>
+    <interface name="IHTMLElement3" namespace="System.Design">
+        <method name="GetGlyphMode" argnames="" returntype="System.Int32" />
+        <method name="DragDrop" argnames="" returntype="System.Boolean" />
+        <method name="GetOnDeactivate" argnames="" returntype="System.Object" />
+        <method name="SetOnDeactivate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnActivate" argnames="" returntype="System.Object" />
+        <method name="SetOnActivate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnMouseLeave" argnames="" returntype="System.Object" />
+        <method name="SetOnMouseLeave(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnMouseEnter" argnames="" returntype="System.Object" />
+        <method name="SetOnMouseEnter(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnMoveEnd" argnames="" returntype="System.Object" />
+        <method name="SetOnMoveEnd(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnMoveStart" argnames="" returntype="System.Object" />
+        <method name="SetOnMoveStart(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnResizeEnd" argnames="" returntype="System.Object" />
+        <method name="SetOnResizeEnd(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnResizeStart" argnames="" returntype="System.Object" />
+        <method name="SetOnResizeStart(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="FireEvent(System.String, System.Object)" argnames="eventName, eventObject" returntype="System.Boolean" />
+        <method name="GetOnControlSelect" argnames="" returntype="System.Object" />
+        <method name="SetOnControlSelect(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnMove" argnames="" returntype="System.Object" />
+        <method name="SetOnMove(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetIsDisabled" argnames="" returntype="System.Boolean" />
+        <method name="GetDisabled" argnames="" returntype="System.Boolean" />
+        <method name="SetDisabled(System.Boolean)" argnames="v" returntype="System.Void" />
+        <method name="GetHideFocus" argnames="" returntype="System.Boolean" />
+        <method name="SetHideFocus(System.Boolean)" argnames="v" returntype="System.Void" />
+        <method name="GetIsContentEditable" argnames="" returntype="System.Boolean" />
+        <method name="GetContentEditable" argnames="" returntype="System.String" />
+        <method name="SetContentEditable(System.String)" argnames="p" returntype="System.Void" />
+        <method name="SetActive" argnames="" returntype="System.Void" />
+        <method name="GetOnBeforeDeactivate" argnames="" returntype="System.Object" />
+        <method name="SetOnBeforeDeactivate(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetInflateBlock" argnames="" returntype="System.Boolean" />
+        <method name="SetInflateBlock(System.Boolean)" argnames="inflate" returntype="System.Void" />
+        <method name="GetOnPage" argnames="" returntype="System.Object" />
+        <method name="SetOnPage(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnLayoutComplete" argnames="" returntype="System.Object" />
+        <method name="SetOnLayoutComplete(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetCanHaveHTML" argnames="" returntype="System.Boolean" />
+        <method name="GetIsMultiLine" argnames="" returntype="System.Boolean" />
+        <method name="MergeAttributes(System.Design.NativeMethods.IHTMLElement, System.Object)" argnames="mergeThis, pvarFlags" returntype="System.Void" />
+    </interface>
+    <interface name="IHTMLBodyElement" namespace="System.Design">
+        <method name="CreateTextRange" argnames="" returntype="System.Object" />
+        <method name="GetOnbeforeunload" argnames="" returntype="System.Object" />
+        <method name="SetOnbeforeunload(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnselect" argnames="" returntype="System.Object" />
+        <method name="SetOnselect(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetScroll" argnames="" returntype="System.String" />
+        <method name="SetScroll(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetOnunload" argnames="" returntype="System.Object" />
+        <method name="SetOnunload(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetOnload" argnames="" returntype="System.Object" />
+        <method name="SetOnload(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetALink" argnames="" returntype="System.Object" />
+        <method name="SetALink(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetVLink" argnames="" returntype="System.Object" />
+        <method name="SetVLink(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetLink" argnames="" returntype="System.Object" />
+        <method name="SetLink(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetText" argnames="" returntype="System.Object" />
+        <method name="SetText(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBgColor" argnames="" returntype="System.Object" />
+        <method name="SetBgColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetNoWrap" argnames="" returntype="System.Boolean" />
+        <method name="SetNoWrap(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetBottomMargin" argnames="" returntype="System.Object" />
+        <method name="SetBottomMargin(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetRightMargin" argnames="" returntype="System.Object" />
+        <method name="SetRightMargin(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetTopMargin" argnames="" returntype="System.Object" />
+        <method name="SetTopMargin(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetLeftMargin" argnames="" returntype="System.Object" />
+        <method name="SetLeftMargin(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBgProperties" argnames="" returntype="System.String" />
+        <method name="SetBgProperties(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBackground" argnames="" returntype="System.String" />
+        <method name="SetBackground(System.String)" argnames="p" returntype="System.Void" />
+    </interface>
+    <interface name="IHTMLStyleSheet" namespace="System.Design">
+        <method name="GetRules" argnames="" returntype="System.Object" />
+        <method name="GetCssText" argnames="" returntype="System.String" />
+        <method name="SetCssText(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetMedia" argnames="" returntype="System.String" />
+        <method name="SetMedia(System.String)" argnames="p" returntype="System.Void" />
+        <method name="RemoveRule(System.Int32)" argnames="lIndex" returntype="System.Void" />
+        <method name="RemoveImport(System.Int32)" argnames="lIndex" returntype="System.Void" />
+        <method name="AddRule(System.String, System.String, System.Int32)" argnames="bstrSelector, bstrStyle, lIndex" returntype="System.Int32" />
+        <method name="AddImport(System.String, System.Int32)" argnames="bstrURL, lIndex" returntype="System.Int32" />
+        <method name="GetId" argnames="" returntype="System.String" />
+        <method name="GetStyleSheetType" argnames="" returntype="System.String" />
+        <method name="GetHref" argnames="" returntype="System.String" />
+        <method name="SetHref(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetImports" argnames="" returntype="System.Object" />
+        <method name="GetReadOnly" argnames="" returntype="System.Boolean" />
+        <method name="GetDisabled" argnames="" returntype="System.Boolean" />
+        <method name="SetDisabled(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetOwningElement" argnames="" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="GetParentStyleSheet" argnames="" returntype="System.Design.NativeMethods+IHTMLStyleSheet" />
+        <method name="GetTitle" argnames="" returntype="System.String" />
+        <method name="SetTitle(System.String)" argnames="p" returntype="System.Void" />
+    </interface>
+    <interface name="IHTMLStyle" namespace="System.Design">
+        <method name="RemoveAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Boolean" />
+        <method name="GetAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Object" />
+        <method name="SetAttribute(System.String, System.Object, System.Int32)" argnames="strAttributeName, AttributeValue, lFlags" returntype="System.Void" />
+        <method name="GetFilter" argnames="" returntype="System.String" />
+        <method name="SetFilter(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetClip" argnames="" returntype="System.String" />
+        <method name="SetClip(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetCursor" argnames="" returntype="System.String" />
+        <method name="SetCursor(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetPosHeight" argnames="" returntype="System.Single" />
+        <method name="SetPosHeight(System.Single)" argnames="p" returntype="System.Void" />
+        <method name="GetPosWidth" argnames="" returntype="System.Single" />
+        <method name="SetPosWidth(System.Single)" argnames="p" returntype="System.Void" />
+        <method name="GetPosLeft" argnames="" returntype="System.Single" />
+        <method name="SetPosLeft(System.Single)" argnames="p" returntype="System.Void" />
+        <method name="GetPosTop" argnames="" returntype="System.Single" />
+        <method name="SetPosTop(System.Single)" argnames="p" returntype="System.Void" />
+        <method name="GetPixelHeight" argnames="" returntype="System.Int32" />
+        <method name="SetPixelHeight(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetPixelWidth" argnames="" returntype="System.Int32" />
+        <method name="SetPixelWidth(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetPixelLeft" argnames="" returntype="System.Int32" />
+        <method name="SetPixelLeft(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetPixelTop" argnames="" returntype="System.Int32" />
+        <method name="SetPixelTop(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetCssText" argnames="" returntype="System.String" />
+        <method name="SetCssText(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetPageBreakAfter" argnames="" returntype="System.String" />
+        <method name="SetPageBreakAfter(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetPageBreakBefore" argnames="" returntype="System.String" />
+        <method name="SetPageBreakBefore(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetOverflow" argnames="" returntype="System.String" />
+        <method name="SetOverflow(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetZIndex" argnames="" returntype="System.Object" />
+        <method name="SetZIndex(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetPosition" argnames="" returntype="System.String" />
+        <method name="GetLeft" argnames="" returntype="System.Object" />
+        <method name="SetLeft(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetTop" argnames="" returntype="System.Object" />
+        <method name="SetTop(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetWhiteSpace" argnames="" returntype="System.String" />
+        <method name="SetWhiteSpace(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetListStyle" argnames="" returntype="System.String" />
+        <method name="SetListStyle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetListStyleImage" argnames="" returntype="System.String" />
+        <method name="SetListStyleImage(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetListStylePosition" argnames="" returntype="System.String" />
+        <method name="SetListStylePosition(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetListStyleType" argnames="" returntype="System.String" />
+        <method name="SetListStyleType(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetVisibility" argnames="" returntype="System.String" />
+        <method name="SetVisibility(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetDisplay" argnames="" returntype="System.String" />
+        <method name="SetDisplay(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetClear" argnames="" returntype="System.String" />
+        <method name="SetClear(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetStyleFloat" argnames="" returntype="System.String" />
+        <method name="SetStyleFloat(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetHeight" argnames="" returntype="System.Object" />
+        <method name="SetHeight(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetWidth" argnames="" returntype="System.Object" />
+        <method name="SetWidth(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderLeftStyle" argnames="" returntype="System.String" />
+        <method name="SetBorderLeftStyle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderBottomStyle" argnames="" returntype="System.String" />
+        <method name="SetBorderBottomStyle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderRightStyle" argnames="" returntype="System.String" />
+        <method name="SetBorderRightStyle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderTopStyle" argnames="" returntype="System.String" />
+        <method name="SetBorderTopStyle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderStyle" argnames="" returntype="System.String" />
+        <method name="SetBorderStyle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderLeftWidth" argnames="" returntype="System.Object" />
+        <method name="SetBorderLeftWidth(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderBottomWidth" argnames="" returntype="System.Object" />
+        <method name="SetBorderBottomWidth(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderRightWidth" argnames="" returntype="System.Object" />
+        <method name="SetBorderRightWidth(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderTopWidth" argnames="" returntype="System.Object" />
+        <method name="SetBorderTopWidth(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderWidth" argnames="" returntype="System.String" />
+        <method name="SetBorderWidth(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderLeftColor" argnames="" returntype="System.Object" />
+        <method name="SetBorderLeftColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderBottomColor" argnames="" returntype="System.Object" />
+        <method name="SetBorderBottomColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderRightColor" argnames="" returntype="System.Object" />
+        <method name="SetBorderRightColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderTopColor" argnames="" returntype="System.Object" />
+        <method name="SetBorderTopColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderColor" argnames="" returntype="System.String" />
+        <method name="SetBorderColor(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderLeft" argnames="" returntype="System.String" />
+        <method name="SetBorderLeft(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderBottom" argnames="" returntype="System.String" />
+        <method name="SetBorderBottom(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderRight" argnames="" returntype="System.String" />
+        <method name="SetBorderRight(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorderTop" argnames="" returntype="System.String" />
+        <method name="SetBorderTop(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBorder" argnames="" returntype="System.String" />
+        <method name="SetBorder(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetPadding" argnames="" returntype="System.String" />
+        <method name="SetPadding(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetPaddingLeft" argnames="" returntype="System.Object" />
+        <method name="SetPaddingLeft(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetPaddingBottom" argnames="" returntype="System.Object" />
+        <method name="SetPaddingBottom(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetPaddingRight" argnames="" returntype="System.Object" />
+        <method name="SetPaddingRight(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetPaddingTop" argnames="" returntype="System.Object" />
+        <method name="SetPaddingTop(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetMargin" argnames="" returntype="System.String" />
+        <method name="SetMargin(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetMarginLeft" argnames="" returntype="System.Object" />
+        <method name="SetMarginLeft(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetMarginBottom" argnames="" returntype="System.Object" />
+        <method name="SetMarginBottom(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetMarginRight" argnames="" returntype="System.Object" />
+        <method name="SetMarginRight(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetMarginTop" argnames="" returntype="System.Object" />
+        <method name="SetMarginTop(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetLineHeight" argnames="" returntype="System.Object" />
+        <method name="SetLineHeight(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetTextIndent" argnames="" returntype="System.Object" />
+        <method name="SetTextIndent(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetTextAlign" argnames="" returntype="System.String" />
+        <method name="SetTextAlign(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetTextTransform" argnames="" returntype="System.String" />
+        <method name="SetTextTransform(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetVerticalAlign" argnames="" returntype="System.Object" />
+        <method name="SetVerticalAlign(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetTextDecorationBlink" argnames="" returntype="System.Boolean" />
+        <method name="SetTextDecorationBlink(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetTextDecorationLineThrough" argnames="" returntype="System.Boolean" />
+        <method name="SetTextDecorationLineThrough(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetTextDecorationOverline" argnames="" returntype="System.Boolean" />
+        <method name="SetTextDecorationOverline(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetTextDecorationUnderline" argnames="" returntype="System.Boolean" />
+        <method name="SetTextDecorationUnderline(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetTextDecorationNone" argnames="" returntype="System.Boolean" />
+        <method name="SetTextDecorationNone(System.Boolean)" argnames="p" returntype="System.Void" />
+        <method name="GetTextDecoration" argnames="" returntype="System.String" />
+        <method name="SetTextDecoration(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetLetterSpacing" argnames="" returntype="System.Object" />
+        <method name="SetLetterSpacing(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetWordSpacing" argnames="" returntype="System.Object" />
+        <method name="SetWordSpacing(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBackgroundPositionY" argnames="" returntype="System.Object" />
+        <method name="SetBackgroundPositionY(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBackgroundPositionX" argnames="" returntype="System.Object" />
+        <method name="SetBackgroundPositionX(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBackgroundPosition" argnames="" returntype="System.String" />
+        <method name="SetBackgroundPosition(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBackgroundAttachment" argnames="" returntype="System.String" />
+        <method name="SetBackgroundAttachment(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBackgroundRepeat" argnames="" returntype="System.String" />
+        <method name="SetBackgroundRepeat(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBackgroundImage" argnames="" returntype="System.String" />
+        <method name="SetBackgroundImage(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetBackgroundColor" argnames="" returntype="System.Object" />
+        <method name="SetBackgroundColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetBackground" argnames="" returntype="System.String" />
+        <method name="SetBackground(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetColor" argnames="" returntype="System.Object" />
+        <method name="SetColor(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetFont" argnames="" returntype="System.String" />
+        <method name="SetFont(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetFontSize" argnames="" returntype="System.Object" />
+        <method name="SetFontSize(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetFontWeight" argnames="" returntype="System.String" />
+        <method name="SetFontWeight(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetFontObject" argnames="" returntype="System.String" />
+        <method name="SetFontObject(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetFontStyle" argnames="" returntype="System.String" />
+        <method name="SetFontStyle(System.String)" argnames="p" returntype="System.Void" />
+        <method name="GetFontFamily" argnames="" returntype="System.String" />
+        <method name="SetFontFamily(System.String)" argnames="p" returntype="System.Void" />
+    </interface>
+    <interface name="IHTMLCurrentStyle" namespace="System.Design">
+        <method name="GetBottom" argnames="" returntype="System.Object" />
+        <method name="GetRight" argnames="" returntype="System.Object" />
+        <method name="GetUnicodeBidi" argnames="" returntype="System.String" />
+        <method name="GetAttribute(System.String, System.Int32)" argnames="strAttributeName, lFlags" returntype="System.Object" />
+        <method name="GetBehavior" argnames="" returntype="System.String" />
+        <method name="GetDirection" argnames="" returntype="System.String" />
+        <method name="GetBorderCollapse" argnames="" returntype="System.String" />
+        <method name="GetTableLayout" argnames="" returntype="System.String" />
+        <method name="GetCursor" argnames="" returntype="System.String" />
+        <method name="GetPageBreakAfter" argnames="" returntype="System.String" />
+        <method name="GetPageBreakBefore" argnames="" returntype="System.String" />
+        <method name="GetOverflow" argnames="" returntype="System.String" />
+        <method name="GetClipLeft" argnames="" returntype="System.Object" />
+        <method name="GetClipBottom" argnames="" returntype="System.Object" />
+        <method name="GetClipRight" argnames="" returntype="System.Object" />
+        <method name="GetClipTop" argnames="" returntype="System.Object" />
+        <method name="GetListStyleImage" argnames="" returntype="System.String" />
+        <method name="GetListStylePosition" argnames="" returntype="System.String" />
+        <method name="GetListStyleType" argnames="" returntype="System.String" />
+        <method name="GetClear" argnames="" returntype="System.String" />
+        <method name="GetMarginLeft" argnames="" returntype="System.Object" />
+        <method name="GetMarginBottom" argnames="" returntype="System.Object" />
+        <method name="GetMarginRight" argnames="" returntype="System.Object" />
+        <method name="GetMarginTop" argnames="" returntype="System.Object" />
+        <method name="GetBackgroundAttachment" argnames="" returntype="System.String" />
+        <method name="GetVerticalAlign" argnames="" returntype="System.Object" />
+        <method name="GetTextIndent" argnames="" returntype="System.Object" />
+        <method name="GetLineHeight" argnames="" returntype="System.Object" />
+        <method name="GetLetterSpacing" argnames="" returntype="System.Object" />
+        <method name="GetZIndex" argnames="" returntype="System.Object" />
+        <method name="GetVisibility" argnames="" returntype="System.String" />
+        <method name="GetDisplay" argnames="" returntype="System.String" />
+        <method name="GetTextDecoration" argnames="" returntype="System.String" />
+        <method name="GetTextAlign" argnames="" returntype="System.String" />
+        <method name="GetPaddingBottom" argnames="" returntype="System.Object" />
+        <method name="GetPaddingRight" argnames="" returntype="System.Object" />
+        <method name="GetPaddingTop" argnames="" returntype="System.Object" />
+        <method name="GetPaddingLeft" argnames="" returntype="System.Object" />
+        <method name="GetHeight" argnames="" returntype="System.Object" />
+        <method name="GetWidth" argnames="" returntype="System.Object" />
+        <method name="GetTop" argnames="" returntype="System.Object" />
+        <method name="GetLeft" argnames="" returntype="System.Object" />
+        <method name="GetBorderLeftWidth" argnames="" returntype="System.Object" />
+        <method name="GetBorderBottomWidth" argnames="" returntype="System.Object" />
+        <method name="GetBorderRightWidth" argnames="" returntype="System.Object" />
+        <method name="GetBorderTopWidth" argnames="" returntype="System.Object" />
+        <method name="GetBorderLeftStyle" argnames="" returntype="System.String" />
+        <method name="GetBorderBottomStyle" argnames="" returntype="System.String" />
+        <method name="GetBorderRightStyle" argnames="" returntype="System.String" />
+        <method name="GetBorderTopStyle" argnames="" returntype="System.String" />
+        <method name="GetBorderBottomColor" argnames="" returntype="System.Object" />
+        <method name="GetBorderRightColor" argnames="" returntype="System.Object" />
+        <method name="GetBorderTopColor" argnames="" returntype="System.Object" />
+        <method name="GetBorderLeftColor" argnames="" returntype="System.Object" />
+        <method name="GetBackgroundRepeat" argnames="" returntype="System.String" />
+        <method name="GetBackgroundPositionY" argnames="" returntype="System.Object" />
+        <method name="GetBackgroundPositionX" argnames="" returntype="System.Object" />
+        <method name="GetBackgroundImage" argnames="" returntype="System.String" />
+        <method name="GetFontSize" argnames="" returntype="System.Object" />
+        <method name="GetFontWeight" argnames="" returntype="System.Object" />
+        <method name="GetFontObject" argnames="" returntype="System.String" />
+        <method name="GetFontStyle" argnames="" returntype="System.String" />
+        <method name="GetFontFamily" argnames="" returntype="System.String" />
+        <method name="GetBackgroundColor" argnames="" returntype="System.Object" />
+        <method name="GetColor" argnames="" returntype="System.Object" />
+        <method name="GetStyleFloat" argnames="" returntype="System.String" />
+        <method name="GetPosition" argnames="" returntype="System.String" />
+    </interface>
+    <interface name="IHTMLElementCollection" namespace="System.Design">
+        <method name="Tags(System.Object)" argnames="tagName" returntype="System.Object" />
+        <method name="Item(System.Object, System.Object)" argnames="name, index" returntype="System.Design.NativeMethods+IHTMLElement" />
+        <method name="Get_newEnum" argnames="" returntype="System.Object" />
+        <method name="GetLength" argnames="" returntype="System.Int32" />
+        <method name="SetLength(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="toString" argnames="" returntype="System.String" />
+    </interface>
+    <interface name="IHTMLRect" namespace="System.Design">
+        <method name="GetBottom" argnames="" returntype="System.Int32" />
+        <method name="SetBottom(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetRight" argnames="" returntype="System.Int32" />
+        <method name="SetRight(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetTop" argnames="" returntype="System.Int32" />
+        <method name="SetTop(System.Int32)" argnames="p" returntype="System.Void" />
+        <method name="GetLeft" argnames="" returntype="System.Int32" />
+        <method name="SetLeft(System.Int32)" argnames="p" returntype="System.Void" />
+    </interface>
+    <interface name="IHTMLRectCollection" namespace="System.Design">
+        <method name="Item(System.Object&amp;)" argnames="pvarIndex" returntype="System.Object" />
+        <method name="Get_newEnum" argnames="" returntype="System.Object" />
+        <method name="GetLength" argnames="" returntype="System.Int32" />
+    </interface>
+    <interface name="IHTMLDOMNode" namespace="System.Design">
+        <method name="GetNextSibling" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="GetPreviousSibling" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="GetLastChild" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="GetFirstChild" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="GetNodeValue" argnames="" returntype="System.Object" />
+        <method name="SetNodeValue(System.Object)" argnames="p" returntype="System.Void" />
+        <method name="GetNodeName" argnames="" returntype="System.String" />
+        <method name="AppendChild(System.Design.NativeMethods.IHTMLDOMNode)" argnames="newChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="ReplaceNode(System.Design.NativeMethods.IHTMLDOMNode)" argnames="replacement" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="SwapNode(System.Design.NativeMethods.IHTMLDOMNode)" argnames="otherNode" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="RemoveNode(System.Boolean)" argnames="fDeep" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="CloneNode(System.Boolean)" argnames="fDeep" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="ReplaceChild(System.Design.NativeMethods.IHTMLDOMNode, System.Design.NativeMethods.IHTMLDOMNode)" argnames="newChild, oldChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="RemoveChild(System.Design.NativeMethods.IHTMLDOMNode)" argnames="oldChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="InsertBefore(System.Design.NativeMethods.IHTMLDOMNode, System.Object)" argnames="newChild, refChild" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="GetAttributes" argnames="" returntype="System.Object" />
+        <method name="GetChildNodes" argnames="" returntype="System.Object" />
+        <method name="HasChildNodes" argnames="" returntype="System.Boolean" />
+        <method name="GetParentNode" argnames="" returntype="System.Design.NativeMethods+IHTMLDOMNode" />
+        <method name="GetNodeType" argnames="" returntype="System.Int32" />
+    </interface>
+    <interface name="IEnumOLEVERB" namespace="System.Design">
+        <method name="Clone(System.Design.NativeMethods.IEnumOLEVERB&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Design.NativeMethods.tagOLEVERB, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="IEnumSTATDATA" namespace="System.Design">
+        <method name="Clone(System.Design.NativeMethods.IEnumSTATDATA[])" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Void" />
+        <method name="Next(System.Int32, System.Design.NativeMethods.STATDATA, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Void" />
+    </interface>
+    <interface name="IEnumFORMATETC" namespace="System.Design">
+        <method name="Clone(System.Design.NativeMethods.IEnumFORMATETC[])" argnames="ppenum" returntype="System.Int32" />
+        <method name="Reset" argnames="" returntype="System.Int32" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Design.NativeMethods.FORMATETC, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="IMalloc" namespace="System.Design">
+        <method name="HeapMinimize" argnames="" returntype="System.Void" />
+        <method name="DidAlloc(System.IntPtr)" argnames="pv" returntype="System.Int32" />
+        <method name="GetSize(System.IntPtr)" argnames="pv" returntype="System.Int32" />
+        <method name="Realloc(System.IntPtr, System.Int32)" argnames="pv, cb" returntype="System.IntPtr" />
+        <method name="Free(System.IntPtr)" argnames="pv" returntype="System.Void" />
+        <method name="Alloc(System.Int32)" argnames="cb" returntype="System.IntPtr" />
+    </interface>
+    <struct name="WINDOWPOS" namespace="System.Design">
+        <field name="hwnd" />
+        <field name="hwndInsertAfter" />
+        <field name="x" />
+        <field name="y" />
+        <field name="cx" />
+        <field name="cy" />
+        <field name="flags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="MSG" namespace="System.Design">
+        <field name="hwnd" />
+        <field name="message" />
+        <field name="wParam" />
+        <field name="lParam" />
+        <field name="time" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="RECT" namespace="System.Design">
+        <constructor name="RECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
+        <field name="left" />
+        <field name="top" />
+        <field name="right" />
+        <field name="bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Design.NativeMethods+RECT" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="PAINTSTRUCT" namespace="System.Design">
+        <field name="hdc" />
+        <field name="fErase" />
+        <field name="rcPaint_left" />
+        <field name="rcPaint_top" />
+        <field name="rcPaint_right" />
+        <field name="rcPaint_bottom" />
+        <field name="fRestore" />
+        <field name="fIncUpdate" />
+        <field name="reserved1" />
+        <field name="reserved2" />
+        <field name="reserved3" />
+        <field name="reserved4" />
+        <field name="reserved5" />
+        <field name="reserved6" />
+        <field name="reserved7" />
+        <field name="reserved8" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <delegate name="ListViewCompareCallback" namespace="System.Design">
+        <constructor name="ListViewCompareCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="lParam1, lParam2, lParamSort, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="lParam1, lParam2, lParamSort" returntype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="TimerProc" namespace="System.Design">
+        <constructor name="TimerProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="HandleChangeEventHandler" namespace="System.Design">
+        <constructor name="HandleChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.String, System.IntPtr, System.Int32, System.AsyncCallback, System.Object)" argnames="handleType, handleValue, currentHandleCount, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.String, System.IntPtr, System.Int32)" argnames="handleType, handleValue, currentHandleCount" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="TabControlHitTest" namespace="System.Design">
+        <field name="TCHT_NOWHERE" />
+        <field name="TCHT_ONITEMICON" />
+        <field name="TCHT_ONITEMLABEL" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StructFormat" namespace="System.Design">
+        <field name="Ansi" />
+        <field name="Unicode" />
+        <field name="Auto" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="BrowseInfos" namespace="System.Design">
+        <field name="ReturnOnlyFSDirs" />
+        <field name="DontGoBelowDomain" />
+        <field name="StatusText" />
+        <field name="ReturnFSAncestors" />
+        <field name="EditBox" />
+        <field name="Validate" />
+        <field name="NewDialogStyle" />
+        <field name="UseNewUI" />
+        <field name="AllowUrls" />
+        <field name="BrowseForComputer" />
+        <field name="BrowseForPrinter" />
+        <field name="BrowseForEverything" />
+        <field name="ShowShares" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="CodeDomSerializer" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="CodeDomSerializer" argnames="" />
+        <method name="Serialize(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, value" returntype="System.Object" />
+        <method name="Deserialize(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, codeObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DeserializePropertiesFromResources(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object, System.Attribute[])" argnames="manager, value, filter" returntype="System.Void" />
+        <method name="DeserializeStatement(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatement)" argnames="manager, statement" returntype="System.Void" />
+        <method name="DeserializeExpression(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.String, System.CodeDom.CodeExpression)" argnames="manager, name, expression" returntype="System.Object" />
+        <method name="SerializeEvents(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatementCollection, System.Object, System.Attribute[])" argnames="manager, statements, value, filter" returntype="System.Void" />
+        <method name="SerializeProperties(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatementCollection, System.Object, System.Attribute[])" argnames="manager, statements, value, filter" returntype="System.Void" />
+        <method name="SerializePropertiesToResources(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.CodeDom.CodeStatementCollection, System.Object, System.Attribute[])" argnames="manager, statements, value, filter" returntype="System.Void" />
+        <method name="SerializeResource(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.String, System.Object)" argnames="manager, resourceName, value" returntype="System.Void" />
+        <method name="SerializeResourceInvariant(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.String, System.Object)" argnames="manager, resourceName, value" returntype="System.Void" />
+        <method name="SerializeToExpression(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, value" returntype="System.CodeDom.CodeExpression" />
+        <method name="SerializeToReferenceExpression(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object)" argnames="manager, value" returntype="System.CodeDom.CodeExpression" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeDomSerializerException" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="CodeDomSerializerException(System.String, System.CodeDom.CodeLinePragma)" argnames="message, linePragma" />
+        <constructor name="CodeDomSerializerException(System.Exception, System.CodeDom.CodeLinePragma)" argnames="ex, linePragma" />
+        <constructor name="CodeDomSerializerException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="ICodeDomDesignerReload" namespace="System.ComponentModel.Design.Serialization">
+        <method name="ShouldReloadDesigner(System.CodeDom.CodeCompileUnit)" argnames="newTree" returntype="System.Boolean" />
+    </interface>
+    <class name="CollectionEditor" namespace="System.ComponentModel.Design">
+        <constructor name="CollectionEditor(System.Type)" argnames="type" />
+        <property name="CollectionItemType" propertytype="System.Type" />
+        <property name="CollectionType" propertytype="System.Type" />
+        <property name="Context" propertytype="System.ComponentModel.ITypeDescriptorContext" />
+        <property name="NewItemTypes" propertytype="System.Type[]" />
+        <property name="HelpTopic" propertytype="System.String" />
+        <method name="ShowHelp" argnames="" returntype="System.Void" />
+        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" returntype="System.Object" />
+        <method name="GetItems(System.Object)" argnames="editValue" returntype="System.Object[]" />
+        <method name="DestroyInstance(System.Object)" argnames="instance" returntype="System.Void" />
+        <method name="CreateNewItemTypes" argnames="" returntype="System.Type[]" />
+        <method name="CreateCollectionItemType" argnames="" returntype="System.Type" />
+        <method name="CreateInstance(System.Type)" argnames="itemType" returntype="System.Object" />
+        <method name="CreateCollectionForm" argnames="" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
+        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
+        <method name="CanRemoveInstance(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ArrayEditor" namespace="System.ComponentModel.Design">
+        <constructor name="ArrayEditor(System.Type)" argnames="type" />
+        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
+        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
+        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
+        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" returntype="System.Object" />
+        <method name="GetItems(System.Object)" argnames="editValue" returntype="System.Object[]" />
+        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
+        <method name="CreateCollectionItemType" argnames="" returntype="System.Type" />
+        <method name="CreateInstance(System.Type)" argnames="itemType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
+        <method name="CanSelectMultipleInstances" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
+        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BinaryEditor" namespace="System.ComponentModel.Design">
+        <constructor name="BinaryEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ByteViewer" namespace="System.ComponentModel.Design">
+        <constructor name="ByteViewer" argnames="" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="SetStartLine(System.Int32)" argnames="line" returntype="System.Void" />
+        <method name="SetFile(System.String)" argnames="path" returntype="System.Void" />
+        <method name="SetDisplayMode(System.ComponentModel.Design.DisplayMode)" argnames="mode" returntype="System.Void" />
+        <method name="SetBytes(System.Byte[])" argnames="bytes" returntype="System.Void" />
+        <method name="ScrollChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="SaveToFile(System.String)" argnames="path" returntype="System.Void" />
+        <method name="GetDisplayMode" argnames="" returntype="System.ComponentModel.Design.DisplayMode" />
+        <method name="GetBytes" argnames="" returntype="System.Byte[]" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ComponentDesigner" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentDesigner" argnames="" />
+        <property name="AssociatedComponents" propertytype="System.Collections.ICollection" />
+        <property name="Component" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DateTimeEditor" namespace="System.ComponentModel.Design">
+        <constructor name="DateTimeEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InheritanceService" namespace="System.ComponentModel.Design">
+        <constructor name="InheritanceService" argnames="" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="GetInheritanceAttribute(System.ComponentModel.IComponent)" argnames="component" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="AddInheritedComponents(System.ComponentModel.IComponent, System.ComponentModel.IContainer)" argnames="component, container" returntype="System.Void" />
+        <method name="IgnoreInheritedMember(System.Reflection.MemberInfo, System.ComponentModel.IComponent)" argnames="member, component" returntype="System.Boolean" />
+        <method name="AddInheritedComponents(System.Type, System.ComponentModel.IComponent, System.ComponentModel.IContainer)" argnames="type, component, container" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LocalizationExtenderProvider" namespace="System.ComponentModel.Design">
+        <constructor name="LocalizationExtenderProvider(System.ComponentModel.ISite, System.ComponentModel.IComponent)" argnames="serviceProvider, baseComponent" />
+        <property name="ThreadDefaultLanguage" propertytype="System.Globalization.CultureInfo" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="CanExtend(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetLanguage(System.Object)" argnames="o" returntype="System.Globalization.CultureInfo" />
+        <method name="GetLoadLanguage(System.Object)" argnames="o" returntype="System.Globalization.CultureInfo" />
+        <method name="GetLocalizable(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="SetLanguage(System.Object, System.Globalization.CultureInfo)" argnames="o, language" returntype="System.Void" />
+        <method name="SetLocalizable(System.Object, System.Boolean)" argnames="o, localizable" returntype="System.Void" />
+        <method name="ShouldSerializeLanguage(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ResetLanguage(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ObjectSelectorEditor" namespace="System.ComponentModel.Design">
+        <class name="Selector" namespace="System.ComponentModel.Design">
+            <constructor name="Selector(System.ComponentModel.Design.ObjectSelectorEditor)" argnames="editor" />
+            <field name="clickSeen" />
+            <property name="BackColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
+            <property name="BackgroundImage" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Image" />
+            <property name="BorderStyle" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.BorderStyle" />
+            <property name="CheckBoxes" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="CreateParams" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.CreateParams" />
+            <property name="DefaultSize" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Size" />
+            <property name="ForeColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
+            <property name="FullRowSelect" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="HideSelection" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="HotTracking" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="ImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+            <property name="ImageList" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.ImageList" />
+            <property name="Indent" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+            <property name="ItemHeight" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+            <property name="LabelEdit" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="Nodes" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNodeCollection" />
+            <property name="PathSeparator" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
+            <property name="Scrollable" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+            <property name="SelectedNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="ShowLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="ShowPlusMinus" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="ShowRootLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="Sorted" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+            <property name="Text" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
+            <property name="TopNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="VisibleCount" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+            <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+            <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+            <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+            <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+            <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+            <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+            <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+            <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+            <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+            <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+            <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+            <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+            <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+            <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+            <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+            <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+            <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+            <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+            <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+            <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+            <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+            <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+            <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+            <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+            <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+            <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+            <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+            <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+            <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+            <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+            <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+            <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+            <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+            <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+            <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+            <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+            <method name="OnAfterSelect(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnBeforeSelect(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnAfterExpand(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnBeforeExpand(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnAfterCollapse(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnBeforeCollapse(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnAfterCheck(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnBeforeCheck(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnAfterLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnBeforeLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+            <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+            <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+            <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+            <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
+            <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+            <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TreeView" returntype="System.Boolean" />
+            <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+            <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+            <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+            <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.String" />
+            <method name="AddNode(System.String, System.Object, System.ComponentModel.Design.ObjectSelectorEditor.SelectorNode)" argnames="label, value, parent" returntype="System.ComponentModel.Design.ObjectSelectorEditor+SelectorNode" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="OnAfterSelect(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="sender, e" returntype="System.Void" />
+            <method name="SetSelection(System.Object, System.Windows.Forms.TreeNodeCollection)" argnames="value, nodes" returntype="System.Boolean" />
+            <method name="Start(System.Windows.Forms.Design.IWindowsFormsEditorService, System.Object)" argnames="edSvc, value" returntype="System.Void" />
+            <method name="Stop" argnames="" returntype="System.Void" />
+            <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="CollapseAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+            <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeView" returntype="System.Int32" />
+            <method name="GetNodeAt(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
+            <method name="GetNodeAt(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
+            <method name="GetItemRenderStyles(System.Windows.Forms.TreeNode, System.Int32)" argnames="node, state" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
+            <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+            <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+            <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+            <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+            <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+            <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+            <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+            <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+            <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+            <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+            <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+            <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+            <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+            <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+            <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+            <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+            <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+            <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+            <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+            <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+            <event name="BeforeLabelEdit" inherited="System.Windows.Forms.TreeView" />
+            <event name="AfterLabelEdit" inherited="System.Windows.Forms.TreeView" />
+            <event name="BeforeCheck" inherited="System.Windows.Forms.TreeView" />
+            <event name="AfterCheck" inherited="System.Windows.Forms.TreeView" />
+            <event name="BeforeCollapse" inherited="System.Windows.Forms.TreeView" />
+            <event name="AfterCollapse" inherited="System.Windows.Forms.TreeView" />
+            <event name="BeforeExpand" inherited="System.Windows.Forms.TreeView" />
+            <event name="AfterExpand" inherited="System.Windows.Forms.TreeView" />
+            <event name="ItemDrag" inherited="System.Windows.Forms.TreeView" />
+            <event name="BeforeSelect" inherited="System.Windows.Forms.TreeView" />
+            <event name="AfterSelect" inherited="System.Windows.Forms.TreeView" />
+            <event name="Paint" inherited="System.Windows.Forms.TreeView" />
+            <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+            <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+            <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+            <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+            <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+            <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+            <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+            <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+            <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+            <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+            <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+            <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+            <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+            <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+            <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+            <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+            <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+            <event name="Click" inherited="System.Windows.Forms.Control" />
+            <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+            <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+            <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+            <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+            <event name="DragOver" inherited="System.Windows.Forms.Control" />
+            <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+            <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+            <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+            <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+            <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+            <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+            <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+            <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+            <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+            <event name="Enter" inherited="System.Windows.Forms.Control" />
+            <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+            <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+            <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+            <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+            <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+            <event name="Layout" inherited="System.Windows.Forms.Control" />
+            <event name="Leave" inherited="System.Windows.Forms.Control" />
+            <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+            <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+            <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+            <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+            <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+            <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+            <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+            <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+            <event name="Move" inherited="System.Windows.Forms.Control" />
+            <event name="Resize" inherited="System.Windows.Forms.Control" />
+            <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+            <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+            <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+            <event name="Validating" inherited="System.Windows.Forms.Control" />
+            <event name="Validated" inherited="System.Windows.Forms.Control" />
+            <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+            <event name="Disposed" inherited="System.ComponentModel.Component" />
+        </class>
+        <class name="SelectorNode" namespace="System.ComponentModel.Design">
+            <constructor name="SelectorNode(System.String, System.Object)" argnames="label, value" />
+            <field name="value" />
+            <property name="BackColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
+            <property name="Bounds" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Rectangle" />
+            <property name="Checked" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+            <property name="FirstNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="ForeColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
+            <property name="FullPath" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
+            <property name="Handle" inherited="System.Windows.Forms.TreeNode" propertytype="System.IntPtr" />
+            <property name="ImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
+            <property name="Index" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
+            <property name="IsEditing" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+            <property name="IsExpanded" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+            <property name="IsSelected" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+            <property name="IsVisible" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+            <property name="LastNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="NextNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="NextVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="NodeFont" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Font" />
+            <property name="Nodes" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNodeCollection" />
+            <property name="Parent" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="PrevNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="PrevVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+            <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
+            <property name="Tag" inherited="System.Windows.Forms.TreeNode" propertytype="System.Object" />
+            <property name="Text" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
+            <property name="TreeView" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeView" />
+            <method name="Clone" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Object" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.String" />
+            <method name="BeginEdit" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="Collapse" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="EndEdit(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="EnsureVisible" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="Expand" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeNode" returntype="System.Int32" />
+            <method name="Remove" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="Toggle" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="SelectorNode" argnames="" />
+        <constructor name="SelectorNode(System.Boolean)" argnames="subObjectSelector" />
+        <field name="SubObjectSelector" />
+        <field name="prevValue" />
+        <field name="currValue" />
+        <method name="SetValue(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="FillTreeWithData(System.ComponentModel.Design.ObjectSelectorEditor.Selector, System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider)" argnames="selector, context, provider" returntype="System.Void" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EqualsToValue(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Selector" namespace="System.ComponentModel.Design">
+        <constructor name="Selector(System.ComponentModel.Design.ObjectSelectorEditor)" argnames="editor" />
+        <field name="clickSeen" />
+        <property name="BackColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CheckBoxes" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" inherited="System.Windows.Forms.TreeView" propertytype="System.Drawing.Color" />
+        <property name="FullRowSelect" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="HideSelection" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="HotTracking" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="ImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+        <property name="ImageList" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.ImageList" />
+        <property name="Indent" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+        <property name="ItemHeight" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+        <property name="LabelEdit" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="Nodes" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNodeCollection" />
+        <property name="PathSeparator" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
+        <property name="Scrollable" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+        <property name="SelectedNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="ShowLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="ShowPlusMinus" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="ShowRootLines" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="Sorted" inherited="System.Windows.Forms.TreeView" propertytype="System.Boolean" />
+        <property name="Text" inherited="System.Windows.Forms.TreeView" propertytype="System.String" />
+        <property name="TopNode" inherited="System.Windows.Forms.TreeView" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="VisibleCount" inherited="System.Windows.Forms.TreeView" propertytype="System.Int32" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnAfterSelect(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnBeforeSelect(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnAfterExpand(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnBeforeExpand(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnAfterCollapse(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnBeforeCollapse(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnAfterCheck(System.Windows.Forms.TreeViewEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnBeforeCheck(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnAfterLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnBeforeLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TreeView" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.String" />
+        <method name="AddNode(System.String, System.Object, System.ComponentModel.Design.ObjectSelectorEditor.SelectorNode)" argnames="label, value, parent" returntype="System.ComponentModel.Design.ObjectSelectorEditor+SelectorNode" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="OnAfterSelect(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="SetSelection(System.Object, System.Windows.Forms.TreeNodeCollection)" argnames="value, nodes" returntype="System.Boolean" />
+        <method name="Start(System.Windows.Forms.Design.IWindowsFormsEditorService, System.Object)" argnames="edSvc, value" returntype="System.Void" />
+        <method name="Stop" argnames="" returntype="System.Void" />
+        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="CollapseAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeView" returntype="System.Void" />
+        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeView" returntype="System.Int32" />
+        <method name="GetNodeAt(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
+        <method name="GetNodeAt(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.TreeNode" />
+        <method name="GetItemRenderStyles(System.Windows.Forms.TreeNode, System.Int32)" argnames="node, state" inherited="System.Windows.Forms.TreeView" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BeforeLabelEdit" inherited="System.Windows.Forms.TreeView" />
+        <event name="AfterLabelEdit" inherited="System.Windows.Forms.TreeView" />
+        <event name="BeforeCheck" inherited="System.Windows.Forms.TreeView" />
+        <event name="AfterCheck" inherited="System.Windows.Forms.TreeView" />
+        <event name="BeforeCollapse" inherited="System.Windows.Forms.TreeView" />
+        <event name="AfterCollapse" inherited="System.Windows.Forms.TreeView" />
+        <event name="BeforeExpand" inherited="System.Windows.Forms.TreeView" />
+        <event name="AfterExpand" inherited="System.Windows.Forms.TreeView" />
+        <event name="ItemDrag" inherited="System.Windows.Forms.TreeView" />
+        <event name="BeforeSelect" inherited="System.Windows.Forms.TreeView" />
+        <event name="AfterSelect" inherited="System.Windows.Forms.TreeView" />
+        <event name="Paint" inherited="System.Windows.Forms.TreeView" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="SelectorNode" namespace="System.ComponentModel.Design">
+        <constructor name="SelectorNode(System.String, System.Object)" argnames="label, value" />
+        <field name="value" />
+        <property name="BackColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
+        <property name="Bounds" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Rectangle" />
+        <property name="Checked" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+        <property name="FirstNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="ForeColor" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Color" />
+        <property name="FullPath" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
+        <property name="Handle" inherited="System.Windows.Forms.TreeNode" propertytype="System.IntPtr" />
+        <property name="ImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
+        <property name="Index" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
+        <property name="IsEditing" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+        <property name="IsExpanded" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+        <property name="IsSelected" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+        <property name="IsVisible" inherited="System.Windows.Forms.TreeNode" propertytype="System.Boolean" />
+        <property name="LastNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="NextNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="NextVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="NodeFont" inherited="System.Windows.Forms.TreeNode" propertytype="System.Drawing.Font" />
+        <property name="Nodes" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNodeCollection" />
+        <property name="Parent" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="PrevNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="PrevVisibleNode" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="SelectedImageIndex" inherited="System.Windows.Forms.TreeNode" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.TreeNode" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.TreeNode" propertytype="System.String" />
+        <property name="TreeView" inherited="System.Windows.Forms.TreeNode" propertytype="System.Windows.Forms.TreeView" />
+        <method name="Clone" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.String" />
+        <method name="BeginEdit" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="Collapse" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="EndEdit(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="EnsureVisible" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="Expand" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="ExpandAll" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" inherited="System.Windows.Forms.TreeNode" returntype="System.Int32" />
+        <method name="Remove" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="Toggle" argnames="" inherited="System.Windows.Forms.TreeNode" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="DisplayMode" namespace="System.ComponentModel.Design">
+        <field name="Hexdump" />
+        <field name="Ansi" />
+        <field name="Unicode" />
+        <field name="Auto" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="AnchorEditor" namespace="System.Windows.Forms.Design">
+        <constructor name="AnchorEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlDesigner" namespace="System.Windows.Forms.Design">
+        <class name="ControlDesignerAccessibleObject" namespace="System.Windows.Forms.Design">
+            <constructor name="ControlDesignerAccessibleObject(System.Windows.Forms.Design.ControlDesigner, System.Windows.Forms.Control)" argnames="designer, control" />
+            <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+            <property name="Description" propertytype="System.String" />
+            <property name="DesignerHost" propertytype="System.ComponentModel.Design.IDesignerHost" />
+            <property name="DefaultAction" propertytype="System.String" />
+            <property name="Name" propertytype="System.String" />
+            <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="SelectionService" propertytype="System.ComponentModel.Design.ISelectionService" />
+            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Value" propertytype="System.String" />
+            <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ControlDesignerAccessibleObject" argnames="" />
+        <field name="accessibilityObj" />
+        <field name="InvalidPoint" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="Controls" propertytype="System.Windows.Forms.Design.ControlDesigner+DesignerControlCollection" />
+        <property name="Location" propertytype="System.Drawing.Point" />
+        <property name="AssociatedComponents" propertytype="System.Collections.ICollection" />
+        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="AccessibilityObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Control" propertytype="System.Windows.Forms.Control" />
+        <property name="DesignerTarget" propertytype="System.Windows.Forms.Design.ControlDesigner+IDesignerTarget" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="EnableDragRect" propertytype="System.Boolean" />
+        <property name="Exception" propertytype="System.Exception" />
+        <property name="Locked" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="SelectionRules" propertytype="System.Windows.Forms.Design.SelectionRules" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="OnSetCursor" argnames="" returntype="System.Void" />
+        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
+        <method name="OnMouseLeave" argnames="" returntype="System.Void" />
+        <method name="OnMouseHover" argnames="" returntype="System.Void" />
+        <method name="OnMouseEnter" argnames="" returntype="System.Void" />
+        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" returntype="System.Void" />
+        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnCreateHandle" argnames="" returntype="System.Void" />
+        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="GetHitTest(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
+        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="DisplayError(System.Exception)" argnames="e" returntype="System.Void" />
+        <method name="EnableDragDrop(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" returntype="System.Void" />
+        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlDesignerAccessibleObject" namespace="System.Windows.Forms.Design">
+        <constructor name="ControlDesignerAccessibleObject(System.Windows.Forms.Design.ControlDesigner, System.Windows.Forms.Control)" argnames="designer, control" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="Description" propertytype="System.String" />
+        <property name="DesignerHost" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <property name="DefaultAction" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="SelectionService" propertytype="System.ComponentModel.Design.ISelectionService" />
+        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AxImporter" namespace="System.Windows.Forms.Design">
+        <class name="Options" namespace="System.Windows.Forms.Design">
+            <constructor name="Options" argnames="" />
+            <field name="outputName" />
+            <field name="outputDirectory" />
+            <field name="publicKey" />
+            <field name="keyPair" />
+            <field name="keyFile" />
+            <field name="keyContainer" />
+            <field name="genSources" />
+            <field name="noLogo" />
+            <field name="silentMode" />
+            <field name="verboseMode" />
+            <field name="delaySign" />
+            <field name="overwriteRCW" />
+            <field name="references" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <interface name="IReferenceResolver" namespace="System.Windows.Forms.Design">
+            <method name="ResolveActiveXReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
+            <method name="ResolveComReference(System.Reflection.AssemblyName)" argnames="name" returntype="System.String" />
+            <method name="ResolveComReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
+            <method name="ResolveManagedReference(System.String)" argnames="assemName" returntype="System.String" />
+        </interface>
+        <constructor name="IReferenceResolver(System.Windows.Forms.Design.AxImporter.Options)" argnames="options" />
+        <property name="GeneratedAssemblies" propertytype="System.String[]" />
+        <property name="GeneratedTypeLibAttributes" propertytype="System.Runtime.InteropServices.TYPELIBATTR[]" />
+        <property name="GeneratedSources" propertytype="System.String[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetFileOfTypeLib(System.Runtime.InteropServices.TYPELIBATTR&amp;)" argnames="tlibattr" returntype="System.String" />
+        <method name="GenerateFromFile(System.IO.FileInfo)" argnames="file" returntype="System.String" />
+        <method name="GenerateFromTypeLibrary(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
+        <method name="GenerateFromTypeLibrary(System.Runtime.InteropServices.UCOMITypeLib, System.Guid)" argnames="typeLib, clsid" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Options" namespace="System.Windows.Forms.Design">
+        <constructor name="Options" argnames="" />
+        <field name="outputName" />
+        <field name="outputDirectory" />
+        <field name="publicKey" />
+        <field name="keyPair" />
+        <field name="keyFile" />
+        <field name="keyContainer" />
+        <field name="genSources" />
+        <field name="noLogo" />
+        <field name="silentMode" />
+        <field name="verboseMode" />
+        <field name="delaySign" />
+        <field name="overwriteRCW" />
+        <field name="references" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AxParameterData" namespace="System.Windows.Forms.Design">
+        <constructor name="AxParameterData(System.String, System.String)" argnames="inname, typeName" />
+        <constructor name="AxParameterData(System.String, System.Type)" argnames="inname, type" />
+        <constructor name="AxParameterData(System.Reflection.ParameterInfo)" argnames="info" />
+        <constructor name="AxParameterData(System.Reflection.ParameterInfo, System.Boolean)" argnames="info, ignoreByRefs" />
+        <property name="Direction" propertytype="System.CodeDom.FieldDirection" />
+        <property name="IsByRef" propertytype="System.Boolean" />
+        <property name="IsIn" propertytype="System.Boolean" />
+        <property name="IsOut" propertytype="System.Boolean" />
+        <property name="IsOptional" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="ParameterType" propertytype="System.Type" />
+        <property name="TypeName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Convert(System.Reflection.ParameterInfo[])" argnames="infos" returntype="System.Windows.Forms.Design.AxParameterData[]" />
+        <method name="Convert(System.Reflection.ParameterInfo[], System.Boolean)" argnames="infos, ignoreByRefs" returntype="System.Windows.Forms.Design.AxParameterData[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AxWrapperGen" namespace="System.Windows.Forms.Design">
+        <constructor name="AxWrapperGen(System.Type)" argnames="axType" />
+        <field name="GeneratedSources" />
+        <property name="AxHostMembers" propertytype="System.Collections.Hashtable" />
+        <property name="ConflictableThings" propertytype="System.Collections.Hashtable" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentTray" namespace="System.Windows.Forms.Design">
+        <constructor name="ComponentTray(System.ComponentModel.Design.IDesigner, System.IServiceProvider)" argnames="mainDesigner, serviceProvider" />
+        <property name="AutoArrange" propertytype="System.Boolean" />
+        <property name="ComponentCount" propertytype="System.Int32" />
+        <property name="DragHandler" propertytype="System.Windows.Forms.Design.SelectionUIHandler" />
+        <property name="InheritanceUI" propertytype="System.Windows.Forms.Design.InheritanceUI" />
+        <property name="MenuService" propertytype="System.ComponentModel.Design.IMenuCommandService" />
+        <property name="ShowLargeIcons" propertytype="System.Boolean" />
+        <property name="TabOrderActive" propertytype="System.Boolean" />
+        <property name="IsWindowVisible" propertytype="System.Boolean" />
+        <property name="ParentGridSize" propertytype="System.Drawing.Size" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="CreateParams" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RemoveComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="OnSetCursor" argnames="" returntype="System.Void" />
+        <method name="OnLostCapture" argnames="" returntype="System.Void" />
+        <method name="CanDisplayComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Boolean" />
+        <method name="CanCreateComponentFromTool(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
+        <method name="AddComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfevent" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="CreateComponentFromTool(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
+        <method name="DisplayError(System.Exception)" argnames="e" returntype="System.Void" />
+        <method name="GetLocation(System.ComponentModel.IComponent)" argnames="receiver" returntype="System.Drawing.Point" />
+        <method name="SetLocation(System.ComponentModel.IComponent, System.Drawing.Point)" argnames="receiver, location" returntype="System.Void" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ComponentDocumentDesigner" namespace="System.Windows.Forms.Design">
+        <constructor name="ComponentDocumentDesigner" argnames="" />
+        <property name="Control" propertytype="System.Windows.Forms.Control" />
+        <property name="TrayAutoArrange" propertytype="System.Boolean" />
+        <property name="TrayLargeIcon" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="GetToolSupported(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OverlayControlAccessibleObject" namespace="System.Windows.Forms.Design">
+        <constructor name="OverlayControlAccessibleObject(System.Windows.Forms.Design.DesignerFrame.OverlayControl)" argnames="owner" />
+        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+        <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DockEditor" namespace="System.Windows.Forms.Design">
+        <constructor name="DockEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ParentControlDesigner" namespace="System.Windows.Forms.Design">
+        <constructor name="ParentControlDesigner" argnames="" />
+        <field name="accessibilityObj" inherited="System.Windows.Forms.Design.ControlDesigner" />
+        <property name="CurrentGridSize" propertytype="System.Drawing.Size" />
+        <property name="DefaultControlLocation" propertytype="System.Drawing.Point" />
+        <property name="DrawGrid" propertytype="System.Boolean" />
+        <property name="EnableDragRect" propertytype="System.Boolean" />
+        <property name="ParentGridSize" propertytype="System.Drawing.Size" />
+        <property name="GridSize" propertytype="System.Drawing.Size" />
+        <property name="SnapToGrid" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Collections.ICollection" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Control" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Control" />
+        <property name="SelectionRules" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Design.SelectionRules" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="CreateToolCore(System.Drawing.Design.ToolboxItem, System.Int32, System.Int32, System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="tool, x, y, width, height, hasLocation, hasSize" returntype="System.ComponentModel.IComponent[]" />
+        <method name="CanParent(System.Windows.Forms.Control)" argnames="control" returntype="System.Boolean" />
+        <method name="CanParent(System.Windows.Forms.Design.ControlDesigner)" argnames="controlDesigner" returntype="System.Boolean" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="OnSetCursor" argnames="" returntype="System.Void" />
+        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
+        <method name="OnMouseLeave" argnames="" returntype="System.Void" />
+        <method name="OnMouseHover" argnames="" returntype="System.Void" />
+        <method name="OnMouseEnter" argnames="" returntype="System.Void" />
+        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" returntype="System.Void" />
+        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" returntype="System.Void" />
+        <method name="OnCreateHandle" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetHitTest(System.Drawing.Point)" argnames="point" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeCreateTool(System.Windows.Forms.Design.ParentControlDesigner, System.Drawing.Design.ToolboxItem)" argnames="toInvoke, tool" returntype="System.Void" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Point)" argnames="tool, location" returntype="System.Void" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Rectangle)" argnames="tool, bounds" returntype="System.Void" />
+        <method name="GetControl(System.Object)" argnames="component" returntype="System.Windows.Forms.Control" />
+        <method name="GetUpdatedRect(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Boolean)" argnames="originalRect, dragRect, updateSize" returntype="System.Drawing.Rectangle" />
+        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DisplayError(System.Exception)" argnames="e" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="EnableDragDrop(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ScrollableControlDesigner" namespace="System.Windows.Forms.Design">
+        <constructor name="ScrollableControlDesigner" argnames="" />
+        <field name="accessibilityObj" inherited="System.Windows.Forms.Design.ControlDesigner" />
+        <property name="DefaultControlLocation" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Point" />
+        <property name="DrawGrid" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
+        <property name="EnableDragRect" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
+        <property name="GridSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Size" />
+        <property name="AssociatedComponents" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Collections.ICollection" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Control" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Control" />
+        <property name="SelectionRules" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Design.SelectionRules" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="CreateToolCore(System.Drawing.Design.ToolboxItem, System.Int32, System.Int32, System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="tool, x, y, width, height, hasLocation, hasSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.ComponentModel.IComponent[]" />
+        <method name="CanParent(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
+        <method name="CanParent(System.Windows.Forms.Design.ControlDesigner)" argnames="controlDesigner" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="OnSetCursor" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseLeave" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseHover" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseEnter" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnCreateHandle" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetHitTest(System.Drawing.Point)" argnames="pt" returntype="System.Boolean" />
+        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem)" argnames="tool" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Point)" argnames="tool, location" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Rectangle)" argnames="tool, bounds" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="GetControl(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Windows.Forms.Control" />
+        <method name="GetUpdatedRect(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Boolean)" argnames="originalRect, dragRect, updateSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Drawing.Rectangle" />
+        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DisplayError(System.Exception)" argnames="e" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="EnableDragDrop(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DocumentDesigner" namespace="System.Windows.Forms.Design">
+        <constructor name="DocumentDesigner" argnames="" />
+        <field name="menuEditorService" />
+        <field name="accessibilityObj" inherited="System.Windows.Forms.Design.ControlDesigner" />
+        <property name="Location" propertytype="System.Drawing.Point" />
+        <property name="SelectionRules" propertytype="System.Windows.Forms.Design.SelectionRules" />
+        <property name="TabOrderActive" propertytype="System.Boolean" />
+        <property name="TrayAutoArrange" propertytype="System.Boolean" />
+        <property name="TrayLargeIcon" propertytype="System.Boolean" />
+        <property name="TrayHeight" propertytype="System.Int32" />
+        <property name="DefaultControlLocation" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Point" />
+        <property name="DrawGrid" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
+        <property name="EnableDragRect" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Boolean" />
+        <property name="GridSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" propertytype="System.Drawing.Size" />
+        <property name="AssociatedComponents" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Collections.ICollection" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Control" inherited="System.Windows.Forms.Design.ControlDesigner" propertytype="System.Windows.Forms.Control" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="ToolPicked(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
+        <method name="EnsureMenuEditorService(System.ComponentModel.IComponent)" argnames="c" returntype="System.Void" />
+        <method name="GetToolSupported(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
+        <method name="CreateToolCore(System.Drawing.Design.ToolboxItem, System.Int32, System.Int32, System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="tool, x, y, width, height, hasLocation, hasSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.ComponentModel.IComponent[]" />
+        <method name="CanParent(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
+        <method name="CanParent(System.Windows.Forms.Design.ControlDesigner)" argnames="controlDesigner" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Boolean" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="OnSetCursor" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnPaintAdornments(System.Windows.Forms.PaintEventArgs)" argnames="pe" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseLeave" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseHover" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseEnter" argnames="" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseDragMove(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseDragEnd(System.Boolean)" argnames="cancel" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnMouseDragBegin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="de" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="OnCreateHandle" argnames="" returntype="System.Void" />
+        <method name="OnContextMenu(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="GetHitTest(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Design.ScrollableControlDesigner" returntype="System.Boolean" />
+        <method name="CanBeParentedTo(System.ComponentModel.Design.IDesigner)" argnames="parentDesigner" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem)" argnames="tool" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Point)" argnames="tool, location" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="CreateTool(System.Drawing.Design.ToolboxItem, System.Drawing.Rectangle)" argnames="tool, bounds" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Void" />
+        <method name="GetControl(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Windows.Forms.Control" />
+        <method name="GetUpdatedRect(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Boolean)" argnames="originalRect, dragRect, updateSize" inherited="System.Windows.Forms.Design.ParentControlDesigner" returntype="System.Drawing.Rectangle" />
+        <method name="BaseWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DisplayError(System.Exception)" argnames="e" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="EnableDragDrop(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="HookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="UnhookChildControls(System.Windows.Forms.Control)" argnames="firstChild" inherited="System.Windows.Forms.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventHandlerService" namespace="System.Windows.Forms.Design">
+        <constructor name="EventHandlerService(System.Windows.Forms.Control)" argnames="focusWnd" />
+        <property name="FocusWindow" propertytype="System.Windows.Forms.Control" />
+        <method name="PushHandler(System.Object)" argnames="handler" returntype="System.Void" />
+        <method name="PopHandler(System.Object)" argnames="handler" returntype="System.Void" />
+        <method name="GetHandler(System.Type)" argnames="handlerType" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="EventHandlerChanged" />
+    </class>
+    <class name="FileNameEditor" namespace="System.Windows.Forms.Design">
+        <constructor name="FileNameEditor" argnames="" />
+        <method name="InitializeDialog(System.Windows.Forms.OpenFileDialog)" argnames="openFileDialog" returntype="System.Void" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FolderNameEditor" namespace="System.Windows.Forms.Design">
+        <constructor name="FolderNameEditor" argnames="" />
+        <method name="InitializeDialog(System.Windows.Forms.Design.FolderNameEditor.FolderBrowser)" argnames="folderBrowser" returntype="System.Void" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MenuCommands" namespace="System.Windows.Forms.Design">
+        <constructor name="MenuCommands" argnames="" />
+        <field name="SelectionMenu" />
+        <field name="ContainerMenu" />
+        <field name="TraySelectionMenu" />
+        <field name="ComponentTrayMenu" />
+        <field name="DesignerProperties" />
+        <field name="KeyCancel" />
+        <field name="KeyReverseCancel" />
+        <field name="KeyDefaultAction" />
+        <field name="KeyMoveUp" />
+        <field name="KeyMoveDown" />
+        <field name="KeyMoveLeft" />
+        <field name="KeyMoveRight" />
+        <field name="KeyNudgeUp" />
+        <field name="KeyNudgeDown" />
+        <field name="KeyNudgeLeft" />
+        <field name="KeyNudgeRight" />
+        <field name="KeySizeWidthIncrease" />
+        <field name="KeySizeHeightIncrease" />
+        <field name="KeySizeWidthDecrease" />
+        <field name="KeySizeHeightDecrease" />
+        <field name="KeyNudgeWidthIncrease" />
+        <field name="KeyNudgeHeightIncrease" />
+        <field name="KeyNudgeWidthDecrease" />
+        <field name="KeyNudgeHeightDecrease" />
+        <field name="KeySelectNext" />
+        <field name="KeySelectPrevious" />
+        <field name="KeyTabOrderSelect" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IReferenceResolver" namespace="System.Windows.Forms.Design">
+        <method name="ResolveActiveXReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
+        <method name="ResolveComReference(System.Reflection.AssemblyName)" argnames="name" returntype="System.String" />
+        <method name="ResolveComReference(System.Runtime.InteropServices.UCOMITypeLib)" argnames="typeLib" returntype="System.String" />
+        <method name="ResolveManagedReference(System.String)" argnames="assemName" returntype="System.String" />
+    </interface>
+    <interface name="IMenuEditorService" namespace="System.Windows.Forms.Design">
+        <method name="MessageFilter(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+        <method name="SetSelection(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Void" />
+        <method name="SetMenu(System.Windows.Forms.Menu)" argnames="menu" returntype="System.Void" />
+        <method name="IsActive" argnames="" returntype="System.Boolean" />
+        <method name="GetMenu" argnames="" returntype="System.Windows.Forms.Menu" />
+    </interface>
+    <enum name="SelectionRules" namespace="System.Windows.Forms.Design">
+        <field name="None" />
+        <field name="Moveable" />
+        <field name="Visible" />
+        <field name="Locked" />
+        <field name="TopSizeable" />
+        <field name="BottomSizeable" />
+        <field name="LeftSizeable" />
+        <field name="RightSizeable" />
+        <field name="AllSizeable" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="LogConverter" namespace="System.Diagnostics.Design">
+        <constructor name="LogConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProcessDesigner" namespace="System.Diagnostics.Design">
+        <constructor name="ProcessDesigner" argnames="" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProcessModuleDesigner" namespace="System.Diagnostics.Design">
+        <constructor name="ProcessModuleDesigner" argnames="" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProcessThreadDesigner" namespace="System.Diagnostics.Design">
+        <constructor name="ProcessThreadDesigner" argnames="" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorBuilder" namespace="System.Web.UI.Design">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="BuildColor(System.ComponentModel.IComponent, System.Windows.Forms.Control, System.String)" argnames="component, owner, initialColor" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlParser" namespace="System.Web.UI.Design">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ParseControl(System.ComponentModel.Design.IDesignerHost, System.String)" argnames="designerHost, controlText" returntype="System.Web.UI.Control" />
+        <method name="ParseControl(System.ComponentModel.Design.IDesignerHost, System.String, System.String)" argnames="designerHost, controlText, directives" returntype="System.Web.UI.Control" />
+        <method name="ParseTemplate(System.ComponentModel.Design.IDesignerHost, System.String)" argnames="designerHost, templateText" returntype="System.Web.UI.ITemplate" />
+        <method name="ParseTemplate(System.ComponentModel.Design.IDesignerHost, System.String, System.String)" argnames="designerHost, templateText, directives" returntype="System.Web.UI.ITemplate" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataBindingCollectionConverter" namespace="System.Web.UI.Design">
+        <constructor name="DataBindingCollectionConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataBindingCollectionEditor" namespace="System.Web.UI.Design">
+        <constructor name="DataBindingCollectionEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataBindingHandler" namespace="System.Web.UI.Design">
+        <constructor name="DataBindingHandler" argnames="" />
+        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataBindingValueUIHandler" namespace="System.Web.UI.Design">
+        <constructor name="DataBindingValueUIHandler" argnames="" />
+        <property name="DataBindingBitmap" propertytype="System.Drawing.Bitmap" />
+        <property name="DataBindingToolTip" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="OnGetUIValueItem(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Collections.ArrayList)" argnames="context, propDesc, valueUIItemList" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataFieldConverter" namespace="System.Web.UI.Design">
+        <constructor name="DataFieldConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataMemberConverter" namespace="System.Web.UI.Design">
+        <constructor name="DataMemberConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataSourceConverter" namespace="System.Web.UI.Design">
+        <constructor name="DataSourceConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignTimeData" namespace="System.Web.UI.Design">
+        <field name="DataBindingHandler" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateDummyDataTable" argnames="" returntype="System.Data.DataTable" />
+        <method name="CreateSampleDataTable(System.Collections.IEnumerable)" argnames="referenceData" returntype="System.Data.DataTable" />
+        <method name="GetDataFields(System.Collections.IEnumerable)" argnames="dataSource" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetDataMembers(System.Object)" argnames="dataSource" returntype="System.String[]" />
+        <method name="GetDataMember(System.ComponentModel.IListSource, System.String)" argnames="dataSource, dataMember" returntype="System.Collections.IEnumerable" />
+        <method name="GetDesignTimeDataSource(System.Data.DataTable, System.Int32)" argnames="dataTable, minimumRows" returntype="System.Collections.IEnumerable" />
+        <method name="GetSelectedDataSource(System.ComponentModel.IComponent, System.String)" argnames="component, dataSource" returntype="System.Object" />
+        <method name="GetSelectedDataSource(System.ComponentModel.IComponent, System.String, System.String)" argnames="component, dataSource, dataMember" returntype="System.Collections.IEnumerable" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HtmlControlDesigner" namespace="System.Web.UI.Design">
+        <constructor name="HtmlControlDesigner" argnames="" />
+        <property name="DesignTimeElement" propertytype="System.Object" />
+        <property name="Behavior" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HtmlIntrinsicControlDesigner" namespace="System.Web.UI.Design">
+        <constructor name="HtmlIntrinsicControlDesigner" argnames="" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UrlEditor" namespace="System.Web.UI.Design">
+        <constructor name="UrlEditor" argnames="" />
+        <property name="Caption" propertytype="System.String" />
+        <property name="Options" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
+        <property name="Filter" propertytype="System.String" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageUrlEditor" namespace="System.Web.UI.Design">
+        <constructor name="ImageUrlEditor" argnames="" />
+        <property name="Caption" propertytype="System.String" />
+        <property name="Filter" propertytype="System.String" />
+        <property name="Options" inherited="System.Web.UI.Design.UrlEditor" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlDesigner" namespace="System.Web.UI.Design">
+        <constructor name="ControlDesigner" argnames="" />
+        <property name="AllowResize" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" propertytype="System.Boolean" />
+        <property name="ID" propertytype="System.String" />
+        <property name="IsDirty" propertytype="System.Boolean" />
+        <property name="IsIgnoringComponentChanges" propertytype="System.Boolean" />
+        <property name="IsWebControl" propertytype="System.Boolean" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ReadWriteControlDesigner" namespace="System.Web.UI.Design">
+        <constructor name="ReadWriteControlDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="MapPropertyToStyle(System.String, System.Object)" argnames="propName, varPropValue" returntype="System.Void" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TemplatedControlDesigner" namespace="System.Web.UI.Design">
+        <constructor name="TemplatedControlDesigner" argnames="" />
+        <property name="ActiveTemplateEditingFrame" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <property name="CanEnterTemplateMode" propertytype="System.Boolean" />
+        <property name="HidePropertiesInTemplateMode" propertytype="System.Boolean" />
+        <property name="InTemplateMode" propertytype="System.Boolean" />
+        <property name="TemplateEditingVerbHandler" propertytype="System.EventHandler" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" returntype="System.Void" />
+        <method name="OnTemplateModeChanged" argnames="" returntype="System.Void" />
+        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" returntype="System.Type" />
+        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" returntype="System.String" />
+        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" returntype="System.Collections.IEnumerable" />
+        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" returntype="System.String" />
+        <method name="GetCachedTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <method name="UpdateDesignTimeHtml" argnames="" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" returntype="System.Void" />
+        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" returntype="System.Void" />
+        <method name="GetTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="GetTemplateFromText(System.String)" argnames="text" returntype="System.Web.UI.ITemplate" />
+        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" returntype="System.String" />
+        <method name="SaveActiveTemplateEditingFrame" argnames="" returntype="System.Void" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TemplateEditingService" namespace="System.Web.UI.Design">
+        <constructor name="TemplateEditingService(System.ComponentModel.Design.IDesignerHost)" argnames="designerHost" />
+        <property name="SupportsNestedTemplateEditing" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="GetContainingTemplateName(System.Web.UI.Control)" argnames="control" returntype="System.String" />
+        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[], System.Web.UI.WebControls.Style, System.Web.UI.WebControls.Style[])" argnames="designer, frameName, templateNames, controlStyle, templateStyles" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[])" argnames="designer, frameName, templateNames" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TemplateEditingVerb" namespace="System.Web.UI.Design">
+        <constructor name="TemplateEditingVerb(System.String, System.Int32, System.Web.UI.Design.TemplatedControlDesigner)" argnames="text, index, designer" />
+        <property name="EditingFrame" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="Text" inherited="System.ComponentModel.Design.DesignerVerb" propertytype="System.String" />
+        <property name="Checked" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="Enabled" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="Supported" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="CommandID" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.ComponentModel.Design.CommandID" />
+        <property name="OleStatus" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Int32" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="OnCommandChanged(System.EventArgs)" argnames="e" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
+        <method name="Invoke" argnames="" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Design.DesignerVerb" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CommandChanged" inherited="System.ComponentModel.Design.MenuCommand" />
+    </class>
+    <class name="TextControlDesigner" namespace="System.Web.UI.Design">
+        <constructor name="TextControlDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TextDataBindingHandler" namespace="System.Web.UI.Design">
+        <constructor name="TextDataBindingHandler" argnames="" />
+        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UrlBuilder" namespace="System.Web.UI.Design">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="BuildUrl(System.ComponentModel.IComponent, System.Windows.Forms.Control, System.String, System.String, System.String)" argnames="component, owner, initialUrl, caption, filter" returntype="System.String" />
+        <method name="BuildUrl(System.ComponentModel.IComponent, System.Windows.Forms.Control, System.String, System.String, System.String, System.Web.UI.Design.UrlBuilderOptions)" argnames="component, owner, initialUrl, caption, filter, options" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlPersister" namespace="System.Web.UI.Design">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="PersistInnerProperties(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="component, host" returntype="System.String" />
+        <method name="PersistInnerProperties(System.IO.TextWriter, System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="sw, component, host" returntype="System.Void" />
+        <method name="PersistControl(System.Web.UI.Control)" argnames="control" returntype="System.String" />
+        <method name="PersistControl(System.Web.UI.Control, System.ComponentModel.Design.IDesignerHost)" argnames="control, host" returntype="System.String" />
+        <method name="PersistControl(System.IO.TextWriter, System.Web.UI.Control)" argnames="sw, control" returntype="System.Void" />
+        <method name="PersistControl(System.IO.TextWriter, System.Web.UI.Control, System.ComponentModel.Design.IDesignerHost)" argnames="sw, control, host" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebControlToolboxItem" namespace="System.Web.UI.Design">
+        <constructor name="WebControlToolboxItem" argnames="" />
+        <constructor name="WebControlToolboxItem(System.Type)" argnames="type" />
+        <property name="AssemblyName" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Reflection.AssemblyName" />
+        <property name="Bitmap" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Drawing.Bitmap" />
+        <property name="DisplayName" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.String" />
+        <property name="Filter" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Collections.ICollection" />
+        <property name="Locked" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.Boolean" />
+        <property name="TypeName" inherited="System.Drawing.Design.ToolboxItem" propertytype="System.String" />
+        <method name="Serialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="OnComponentsCreating(System.Drawing.Design.ToolboxComponentsCreatingEventArgs)" argnames="args" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
+        <method name="OnComponentsCreated(System.Drawing.Design.ToolboxComponentsCreatedEventArgs)" argnames="args" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
+        <method name="Initialize(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="GetType(System.ComponentModel.Design.IDesignerHost, System.Reflection.AssemblyName, System.String, System.Boolean)" argnames="host, assemblyName, typeName, reference" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Type" />
+        <method name="Deserialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="CreateComponentsCore(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.ComponentModel.IComponent[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.String" />
+        <method name="GetToolAttributeValue(System.ComponentModel.Design.IDesignerHost, System.Type)" argnames="host, attributeType" returntype="System.Object" />
+        <method name="GetToolHtml(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.String" />
+        <method name="GetToolType(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.Type" />
+        <method name="CheckUnlocked" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
+        <method name="CreateComponents" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.ComponentModel.IComponent[]" />
+        <method name="CreateComponents(System.ComponentModel.Design.IDesignerHost)" argnames="host" inherited="System.Drawing.Design.ToolboxItem" returntype="System.ComponentModel.IComponent[]" />
+        <method name="Lock" argnames="" inherited="System.Drawing.Design.ToolboxItem" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ComponentsCreated" inherited="System.Drawing.Design.ToolboxItem" />
+        <event name="ComponentsCreating" inherited="System.Drawing.Design.ToolboxItem" />
+    </class>
+    <class name="XmlFileEditor" namespace="System.Web.UI.Design">
+        <constructor name="XmlFileEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlUrlEditor" namespace="System.Web.UI.Design">
+        <constructor name="XmlUrlEditor" argnames="" />
+        <property name="Caption" propertytype="System.String" />
+        <property name="Filter" propertytype="System.String" />
+        <property name="Options" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XslUrlEditor" namespace="System.Web.UI.Design">
+        <constructor name="XslUrlEditor" argnames="" />
+        <property name="Caption" propertytype="System.String" />
+        <property name="Filter" propertytype="System.String" />
+        <property name="Options" propertytype="System.Web.UI.Design.UrlBuilderOptions" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.Web.UI.Design.UrlEditor" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CalendarDataBindingHandler" namespace="System.Web.UI.Design">
+        <constructor name="CalendarDataBindingHandler" argnames="" />
+        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HyperLinkDataBindingHandler" namespace="System.Web.UI.Design">
+        <constructor name="HyperLinkDataBindingHandler" argnames="" />
+        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UserControlDesigner" namespace="System.Web.UI.Design">
+        <constructor name="UserControlDesigner" argnames="" />
+        <property name="AllowResize" propertytype="System.Boolean" />
+        <property name="ShouldCodeSerialize" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IDataSourceProvider" namespace="System.Web.UI.Design">
+        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
+        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
+    </interface>
+    <interface name="IHtmlControlDesignerBehavior" namespace="System.Web.UI.Design">
+        <property name="Designer" propertytype="System.Web.UI.Design.HtmlControlDesigner" />
+        <property name="DesignTimeElement" propertytype="System.Object" />
+        <method name="SetStyleAttribute(System.String, System.Boolean, System.Object, System.Boolean)" argnames="attribute, designTimeOnly, value, ignoreCase" returntype="System.Void" />
+        <method name="RemoveStyleAttribute(System.String, System.Boolean, System.Boolean)" argnames="attribute, designTimeOnly, ignoreCase" returntype="System.Void" />
+        <method name="GetStyleAttribute(System.String, System.Boolean, System.Boolean)" argnames="attribute, designTimeOnly, ignoreCase" returntype="System.Object" />
+        <method name="SetAttribute(System.String, System.Object, System.Boolean)" argnames="attribute, value, ignoreCase" returntype="System.Void" />
+        <method name="RemoveAttribute(System.String, System.Boolean)" argnames="attribute, ignoreCase" returntype="System.Void" />
+        <method name="GetAttribute(System.String, System.Boolean)" argnames="attribute, ignoreCase" returntype="System.Object" />
+    </interface>
+    <interface name="ITemplateEditingFrame" namespace="System.Web.UI.Design">
+        <property name="ControlStyle" propertytype="System.Web.UI.WebControls.Style" />
+        <property name="Name" propertytype="System.String" />
+        <property name="InitialHeight" propertytype="System.Int32" />
+        <property name="InitialWidth" propertytype="System.Int32" />
+        <property name="TemplateNames" propertytype="System.String[]" />
+        <property name="TemplateStyles" propertytype="System.Web.UI.WebControls.Style[]" />
+        <property name="Verb" propertytype="System.Web.UI.Design.TemplateEditingVerb" />
+        <method name="UpdateControlName(System.String)" argnames="newName" returntype="System.Void" />
+        <method name="Save" argnames="" returntype="System.Void" />
+        <method name="Resize(System.Int32, System.Int32)" argnames="width, height" returntype="System.Void" />
+        <method name="Open" argnames="" returntype="System.Void" />
+        <method name="Close(System.Boolean)" argnames="saveChanges" returntype="System.Void" />
+    </interface>
+    <interface name="ITemplateEditingService" namespace="System.Web.UI.Design">
+        <property name="SupportsNestedTemplateEditing" propertytype="System.Boolean" />
+        <method name="GetContainingTemplateName(System.Web.UI.Control)" argnames="control" returntype="System.String" />
+        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[], System.Web.UI.WebControls.Style, System.Web.UI.WebControls.Style[])" argnames="designer, frameName, templateNames, controlStyle, templateStyles" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <method name="CreateFrame(System.Web.UI.Design.TemplatedControlDesigner, System.String, System.String[])" argnames="designer, frameName, templateNames" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+    </interface>
+    <interface name="IControlDesignerBehavior" namespace="System.Web.UI.Design">
+        <property name="DesignTimeElementView" propertytype="System.Object" />
+        <property name="DesignTimeHtml" propertytype="System.String" />
+        <method name="OnTemplateModeChanged" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IWebFormReferenceManager" namespace="System.Web.UI.Design">
+        <method name="GetRegisterDirectives" argnames="" returntype="System.String" />
+        <method name="GetTagPrefix(System.Type)" argnames="objectType" returntype="System.String" />
+        <method name="GetObjectType(System.String, System.String)" argnames="tagPrefix, typeName" returntype="System.Type" />
+    </interface>
+    <interface name="IWebFormsBuilderUIService" namespace="System.Web.UI.Design">
+        <method name="BuildUrl(System.Windows.Forms.Control, System.String, System.String, System.String, System.String, System.Web.UI.Design.UrlBuilderOptions)" argnames="owner, initialUrl, baseUrl, caption, filter, options" returntype="System.String" />
+        <method name="BuildColor(System.Windows.Forms.Control, System.String)" argnames="owner, initialColor" returntype="System.String" />
+    </interface>
+    <interface name="IWebFormsDocumentService" namespace="System.Web.UI.Design">
+        <property name="DocumentUrl" propertytype="System.String" />
+        <property name="IsLoading" propertytype="System.Boolean" />
+        <method name="UpdateSelection" argnames="" returntype="System.Void" />
+        <method name="EnableUndo(System.Boolean)" argnames="enable" returntype="System.Void" />
+        <method name="DiscardUndoUnit(System.Object)" argnames="discardableUndoUnit" returntype="System.Void" />
+        <method name="CreateDiscardableUndoUnit" argnames="" returntype="System.Object" />
+        <event name="LoadComplete" />
+    </interface>
+    <enum name="UrlBuilderOptions" namespace="System.Web.UI.Design">
+        <field name="None" />
+        <field name="NoAbsolute" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="AdRotatorDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="AdRotatorDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BaseDataListComponentEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="BaseDataListComponentEditor(System.Int32)" argnames="initialPage" />
+        <method name="GetInitialComponentEditorPageIndex" argnames="" returntype="System.Int32" />
+        <method name="GetComponentEditorPages" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Type[]" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" returntype="System.Boolean" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BaseDataListDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="BaseDataListDesigner" argnames="" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" propertytype="System.Boolean" />
+        <property name="DataKeyField" propertytype="System.String" />
+        <property name="DataMember" propertytype="System.String" />
+        <property name="DataSource" propertytype="System.String" />
+        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <property name="ActiveTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <property name="CanEnterTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="HidePropertiesInTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="InTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
+        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
+        <method name="OnTemplateEditingVerbsChanged" argnames="" returntype="System.Void" />
+        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="OnTemplateModeChanged" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Type" />
+        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" returntype="System.Collections.IEnumerable" />
+        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="GetCachedTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetDesignTimeDataSource(System.Int32, System.Boolean&amp;)" argnames="minimumRows, dummyDataSource" returntype="System.Collections.IEnumerable" />
+        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32, System.Boolean&amp;)" argnames="selectedDataSource, minimumRows, dummyDataSource" returntype="System.Collections.IEnumerable" />
+        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="OnPropertyBuilder(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="GetTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="GetTemplateFromText(System.String)" argnames="text" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.ITemplate" />
+        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="SaveActiveTemplateEditingFrame" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BaseValidatorDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="BaseValidatorDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ButtonDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="ButtonDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CalendarAutoFormatDialog" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="CalendarAutoFormatDialog(System.Web.UI.WebControls.Calendar)" argnames="calendar" />
+        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
+        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
+        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
+        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
+        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
+        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
+        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
+        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
+        <method name="DoDelayLoadActions" argnames="" returntype="System.Void" />
+        <method name="OnActivated(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnSelChangedScheme(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnOKClicked(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="SaveComponent" argnames="" returntype="System.Void" />
+        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="Activated" inherited="System.Windows.Forms.Form" />
+        <event name="Closing" inherited="System.Windows.Forms.Form" />
+        <event name="Closed" inherited="System.Windows.Forms.Form" />
+        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
+        <event name="Load" inherited="System.Windows.Forms.Form" />
+        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
+        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
+        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="CalendarDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="CalendarDesigner" argnames="" />
+        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CheckBoxDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="CheckBoxDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataGridColumnCollectionEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="DataGridColumnCollectionEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataGridComponentEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="DataGridComponentEditor" argnames="" />
+        <constructor name="DataGridComponentEditor(System.Int32)" argnames="initialPage" />
+        <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Int32" />
+        <method name="GetComponentEditorPages" argnames="" returntype="System.Type[]" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Boolean" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataGridDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="DataGridDesigner" argnames="" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.Boolean" />
+        <property name="DataKeyField" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
+        <property name="DataMember" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
+        <property name="DataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
+        <property name="Verbs" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <property name="ActiveTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <property name="CanEnterTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="HidePropertiesInTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="InTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <method name="OnColumnsChanged" argnames="" returntype="System.Void" />
+        <method name="GetResolvedSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="GetSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Object" />
+        <method name="OnTemplateEditingVerbsChanged" argnames="" returntype="System.Void" />
+        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" returntype="System.Void" />
+        <method name="OnTemplateModeChanged" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" returntype="System.Type" />
+        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" returntype="System.String" />
+        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" returntype="System.String" />
+        <method name="GetCachedTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetDesignTimeDataSource(System.Int32, System.Boolean&amp;)" argnames="minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32, System.Boolean&amp;)" argnames="selectedDataSource, minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="OnPropertyBuilder(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="GetTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="GetTemplateFromText(System.String)" argnames="text" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.ITemplate" />
+        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="SaveActiveTemplateEditingFrame" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataListComponentEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="DataListComponentEditor" argnames="" />
+        <constructor name="DataListComponentEditor(System.Int32)" argnames="initialPage" />
+        <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Int32" />
+        <method name="GetComponentEditorPages" argnames="" returntype="System.Type[]" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" inherited="System.Web.UI.Design.WebControls.BaseDataListComponentEditor" returntype="System.Boolean" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataListDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="DataListDesigner" argnames="" />
+        <property name="AllowResize" propertytype="System.Boolean" />
+        <property name="TemplatesExist" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.Boolean" />
+        <property name="DataKeyField" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
+        <property name="DataMember" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
+        <property name="DataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.String" />
+        <property name="Verbs" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <property name="ActiveTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <property name="CanEnterTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="HidePropertiesInTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="InTemplateMode" inherited="System.Web.UI.Design.TemplatedControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <method name="GetResolvedSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="GetSelectedDataSource" argnames="" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Object" />
+        <method name="OnTemplateEditingVerbsChanged" argnames="" returntype="System.Void" />
+        <method name="SetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.String)" argnames="editingFrame, templateName, templateContent" returntype="System.Void" />
+        <method name="OnTemplateModeChanged" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="GetTemplatePropertyParentType(System.String)" argnames="templateName" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Type" />
+        <method name="GetTemplateContent(System.Web.UI.Design.ITemplateEditingFrame, System.String, System.Boolean&amp;)" argnames="editingFrame, templateName, allowEditing" returntype="System.String" />
+        <method name="GetTemplateContainerDataSource(System.String)" argnames="templateName" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="GetTemplateContainerDataItemProperty(System.String)" argnames="templateName" returntype="System.String" />
+        <method name="GetCachedTemplateEditingVerbs" argnames="" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="CreateTemplateEditingFrame(System.Web.UI.Design.TemplateEditingVerb)" argnames="verb" returntype="System.Web.UI.Design.ITemplateEditingFrame" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetDesignTimeDataSource(System.Int32, System.Boolean&amp;)" argnames="minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32, System.Boolean&amp;)" argnames="selectedDataSource, minimumRows, dummyDataSource" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Collections.IEnumerable" />
+        <method name="OnAutoFormat(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="OnPropertyBuilder(System.Object, System.EventArgs)" argnames="sender, e" inherited="System.Web.UI.Design.WebControls.BaseDataListDesigner" returntype="System.Void" />
+        <method name="EnterTemplateMode(System.Web.UI.Design.ITemplateEditingFrame)" argnames="newTemplateEditingFrame" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="ExitTemplateMode(System.Boolean, System.Boolean, System.Boolean)" argnames="fSwitchingTemplates, fNested, fSave" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="GetTemplateEditingVerbs" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.Design.TemplateEditingVerb[]" />
+        <method name="GetTemplateFromText(System.String)" argnames="text" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Web.UI.ITemplate" />
+        <method name="GetTextFromTemplate(System.Web.UI.ITemplate)" argnames="template" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.String" />
+        <method name="SaveActiveTemplateEditingFrame" argnames="" inherited="System.Web.UI.Design.TemplatedControlDesigner" returntype="System.Void" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HyperLinkDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="HyperLinkDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LabelDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="LabelDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LinkButtonDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="LinkButtonDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.TextControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListControlDataBindingHandler" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="ListControlDataBindingHandler" argnames="" />
+        <method name="DataBindControl(System.ComponentModel.Design.IDesignerHost, System.Web.UI.Control)" argnames="designerHost, control" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListControlDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="ListControlDesigner" argnames="" />
+        <property name="DataMember" propertytype="System.String" />
+        <property name="DataSource" propertytype="System.String" />
+        <property name="DataValueField" propertytype="System.String" />
+        <property name="DataTextField" propertytype="System.String" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
+        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
+        <method name="OnDataSourceChanged" argnames="" returntype="System.Void" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="source, ce" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListItemsCollectionEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="ListItemsCollectionEditor(System.Type)" argnames="type" />
+        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
+        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
+        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
+        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="GetItems(System.Object)" argnames="editValue" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object[]" />
+        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
+        <method name="CreateCollectionItemType" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type" />
+        <method name="CreateInstance(System.Type)" argnames="itemType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
+        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
+        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PanelDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="PanelDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="MapPropertyToStyle(System.String, System.Object)" argnames="propName, varPropValue" returntype="System.Void" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ReadWriteControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RegexEditorDialog" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="RegexEditorDialog(System.ComponentModel.ISite)" argnames="site" />
+        <property name="RegularExpression" propertytype="System.String" />
+        <property name="CannedExpressions" propertytype="System.Object[]" />
+        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
+        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
+        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
+        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
+        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
+        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
+        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
+        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
+        <method name="txtExpression_TextChanged(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="lstStandardExpressions_SelectedIndexChanged(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="RegexTypeEditor_Activated(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="cmdTestValidate_Click(System.Object, System.EventArgs)" argnames="sender, args" returntype="System.Void" />
+        <method name="cmdHelp_Click(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="cmdOK_Click(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="Activated" inherited="System.Windows.Forms.Form" />
+        <event name="Closing" inherited="System.Windows.Forms.Form" />
+        <event name="Closed" inherited="System.Windows.Forms.Form" />
+        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
+        <event name="Load" inherited="System.Windows.Forms.Form" />
+        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
+        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
+        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="RegexTypeEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="RegexTypeEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RepeaterDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="RepeaterDesigner" argnames="" />
+        <property name="DataMember" propertytype="System.String" />
+        <property name="DataSource" propertytype="System.String" />
+        <property name="TemplatesExist" propertytype="System.Boolean" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="GetResolvedSelectedDataSource" argnames="" returntype="System.Collections.IEnumerable" />
+        <method name="GetSelectedDataSource" argnames="" returntype="System.Object" />
+        <method name="OnDataSourceChanged" argnames="" returntype="System.Void" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="source, ce" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetDesignTimeDataSource(System.Int32)" argnames="minimumRows" returntype="System.Collections.IEnumerable" />
+        <method name="GetDesignTimeDataSource(System.Collections.IEnumerable, System.Int32)" argnames="selectedDataSource, minimumRows" returntype="System.Collections.IEnumerable" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TableCellsCollectionEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="TableCellsCollectionEditor(System.Type)" argnames="type" />
+        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
+        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
+        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
+        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="GetItems(System.Object)" argnames="editValue" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object[]" />
+        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
+        <method name="CreateCollectionItemType" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type" />
+        <method name="CreateInstance(System.Type)" argnames="itemType" returntype="System.Object" />
+        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
+        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
+        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TableDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="TableDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TableRowsCollectionEditor" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="TableRowsCollectionEditor(System.Type)" argnames="type" />
+        <property name="CollectionItemType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="CollectionType" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type" />
+        <property name="Context" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.ComponentModel.ITypeDescriptorContext" />
+        <property name="NewItemTypes" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.Type[]" />
+        <property name="HelpTopic" inherited="System.ComponentModel.Design.CollectionEditor" propertytype="System.String" />
+        <method name="ShowHelp" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="SetItems(System.Object, System.Object[])" argnames="editValue, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="GetItems(System.Object)" argnames="editValue" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object[]" />
+        <method name="DestroyInstance(System.Object)" argnames="instance" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Void" />
+        <method name="CreateNewItemTypes" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type[]" />
+        <method name="CreateCollectionItemType" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Type" />
+        <method name="CreateInstance(System.Type)" argnames="itemType" returntype="System.Object" />
+        <method name="CreateCollectionForm" argnames="" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.ComponentModel.Design.CollectionEditor+CollectionForm" />
+        <method name="CanSelectMultipleInstances" argnames="" returntype="System.Boolean" />
+        <method name="CanRemoveInstance(System.Object)" argnames="value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.CollectionEditor" returntype="System.Object" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlDesigner" namespace="System.Web.UI.Design.WebControls">
+        <constructor name="XmlDesigner" argnames="" />
+        <property name="AllowResize" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeHtmlRequiresLoadComplete" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ID" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.String" />
+        <property name="IsDirty" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="ReadOnly" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Boolean" />
+        <property name="DesignTimeElementView" inherited="System.Web.UI.Design.ControlDesigner" propertytype="System.Object" />
+        <property name="DesignTimeElement" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Object" />
+        <property name="Behavior" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.Design.IHtmlControlDesignerBehavior" />
+        <property name="DataBindings" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Web.UI.DataBindingCollection" />
+        <property name="ShouldCodeSerialize" inherited="System.Web.UI.Design.HtmlControlDesigner" propertytype="System.Boolean" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="UpdateDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnControlResize" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, ce" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="GetPersistInnerHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetErrorDesignTimeHtml(System.Exception)" argnames="e" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="GetEmptyDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="GetDesignTimeHtml" argnames="" returntype="System.String" />
+        <method name="OnBindingsCollectionChanged(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="OnSetParent" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorDetaching" argnames="" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="OnBehaviorAttached" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.Web.UI.Design.HtmlControlDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="CreatePlaceHolderDesignTimeHtml(System.String)" argnames="instruction" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.String" />
+        <method name="IsPropertyBound(System.String)" argnames="propName" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Boolean" />
+        <method name="RaiseResizeEvent" argnames="" inherited="System.Web.UI.Design.ControlDesigner" returntype="System.Void" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceControllerDesigner" namespace="System.ServiceProcess.Design">
+        <constructor name="ServiceControllerDesigner" argnames="" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MessageDesigner" namespace="System.Messaging.Design">
+        <constructor name="MessageDesigner" argnames="" />
+        <property name="AssociatedComponents" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Collections.ICollection" />
+        <property name="Component" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.IComponent" />
+        <property name="Inherited" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.Boolean" />
+        <property name="InheritanceAttribute" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.InheritanceAttribute" />
+        <property name="ShadowProperties" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.ComponentDesigner+ShadowPropertyCollection" />
+        <property name="Verbs" inherited="System.ComponentModel.Design.ComponentDesigner" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="OnSetComponentDefaults" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="serviceType" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Object" />
+        <method name="InitializeNonDefault" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvokeGetInheritanceAttribute(System.ComponentModel.Design.ComponentDesigner)" argnames="toInvoke" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="RaiseComponentChanged(System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="member, oldValue, newValue" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="RaiseComponentChanging(System.ComponentModel.MemberDescriptor)" argnames="member" inherited="System.ComponentModel.Design.ComponentDesigner" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Design/System.Web.UI.Design.WebControls/CompositeControlDesigner.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Design/System.Web.UI.Design.WebControls/CompositeControlDesigner.cs
@@ -1,61 +1,61 @@
-﻿//
-// BaseDataBoundControlDesigner.cs
-//
-// Author:
-//   Noam Lampert <noaml@mainsoft.com>
-//
-// (C) 2007 Novell, Inc.
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel;
-
-namespace System.Web.UI.Design.WebControls
-{
-	class CompositeControlDesigner : ControlDesigner
-	{
-		public CompositeControlDesigner () {
-			throw new NotImplementedException ();
-		}
-
-		protected virtual void CreateChildControls () {
-			throw new NotImplementedException ();
-		}
-
-		public override string GetDesignTimeHtml () {
-			throw new NotImplementedException ();
-		}
-
-		public virtual string GetDesignTimeHtml (DesignerRegionCollection regions) {
-			throw new NotImplementedException ();
-		}
-
-		public override void Initialize (IComponent component) {
-			throw new NotImplementedException ();
-		}
-	}
-}
-
+﻿//
+// BaseDataBoundControlDesigner.cs
+//
+// Author:
+//   Noam Lampert <noaml@mainsoft.com>
+//
+// (C) 2007 Novell, Inc.
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+
+namespace System.Web.UI.Design.WebControls
+{
+	class CompositeControlDesigner : ControlDesigner
+	{
+		public CompositeControlDesigner () {
+			throw new NotImplementedException ();
+		}
+
+		protected virtual void CreateChildControls () {
+			throw new NotImplementedException ();
+		}
+
+		public override string GetDesignTimeHtml () {
+			throw new NotImplementedException ();
+		}
+
+		public virtual string GetDesignTimeHtml (DesignerRegionCollection regions) {
+			throw new NotImplementedException ();
+		}
+
+		public override void Initialize (IComponent component) {
+			throw new NotImplementedException ();
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Design/System.Windows.Forms.Design/ISelectionUIHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Design/System.Windows.Forms.Design/ISelectionUIHandler.cs
@@ -1,52 +1,52 @@
-//
-// System.Windows.Forms.Design.ISelectionUIHandler.cs
-//
-// Author:
-//   Gert Driesen (drieseng@users.sourceforge.net)
-// (C) 2004 Ximian, Inc.  http://www.ximian.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-
-namespace System.Windows.Forms.Design
-{
-	internal interface ISelectionUIHandler
-	{
-		bool BeginDrag (object[] components, SelectionRules rules, int initialX, int initialY);
-		void DragMoved (object[] components, Rectangle offset);
-		void EndDrag (object[] components, bool cancel);
-		Rectangle GetComponentBounds (object component);
-		SelectionRules GetComponentRules (object component);
-		Rectangle GetSelectionClipRect (object component);
-		void OleDragDrop (DragEventArgs de);
-		void OleDragEnter (DragEventArgs de);
-		void OleDragLeave ();
-		void OleDragOver (DragEventArgs de);
-		void OnSelectionDoubleClick (IComponent component);
-		bool QueryBeginDrag (object[] components, SelectionRules rules, int initialX, int initialY);
-		void ShowContextMenu (IComponent component);
-	}
-}
+//
+// System.Windows.Forms.Design.ISelectionUIHandler.cs
+//
+// Author:
+//   Gert Driesen (drieseng@users.sourceforge.net)
+// (C) 2004 Ximian, Inc.  http://www.ximian.com
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace System.Windows.Forms.Design
+{
+	internal interface ISelectionUIHandler
+	{
+		bool BeginDrag (object[] components, SelectionRules rules, int initialX, int initialY);
+		void DragMoved (object[] components, Rectangle offset);
+		void EndDrag (object[] components, bool cancel);
+		Rectangle GetComponentBounds (object component);
+		SelectionRules GetComponentRules (object component);
+		Rectangle GetSelectionClipRect (object component);
+		void OleDragDrop (DragEventArgs de);
+		void OleDragEnter (DragEventArgs de);
+		void OleDragLeave ();
+		void OleDragOver (DragEventArgs de);
+		void OnSelectionDoubleClick (IComponent component);
+		bool QueryBeginDrag (object[] components, SelectionRules rules, int initialX, int initialY);
+		void ShowContextMenu (IComponent component);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/System.DirectoryServices/SearchScope.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/System.DirectoryServices/SearchScope.cs
@@ -1,48 +1,48 @@
-/******************************************************************************
-* The MIT License
-* Copyright (c) 2003 Novell Inc.,  www.novell.com
-* 
-* Permission is hereby granted, free of charge, to any person obtaining  a copy
-* of this software and associated documentation files (the Software), to deal
-* in the Software without restriction, including  without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-* copies of the Software, and to  permit persons to whom the Software is 
-* furnished to do so, subject to the following conditions:
-* 
-* The above copyright notice and this permission notice shall be included in 
-* all copies or substantial portions of the Software.
-* 
-* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*******************************************************************************/
-
-//
-// System.DirectoryServices.SearchScope.cs
-//
-// Author:
-//   Sunil Kumar (sunilk@novell.com)
-//
-// (C)  Novell Inc.
-//
-
-namespace System.DirectoryServices
-{
-	
-	/// <summary>
-	/// Specifies the possible scopes for a directory search.
-	/// </summary>
-	[Serializable]
-	public enum SearchScope
-	{
-		Base,
-		OneLevel,
-	    Subtree
-	}
-
-}
-
+/******************************************************************************
+* The MIT License
+* Copyright (c) 2003 Novell Inc.,  www.novell.com
+* 
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
+* copies of the Software, and to  permit persons to whom the Software is 
+* furnished to do so, subject to the following conditions:
+* 
+* The above copyright notice and this permission notice shall be included in 
+* all copies or substantial portions of the Software.
+* 
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+//
+// System.DirectoryServices.SearchScope.cs
+//
+// Author:
+//   Sunil Kumar (sunilk@novell.com)
+//
+// (C)  Novell Inc.
+//
+
+namespace System.DirectoryServices
+{
+	
+	/// <summary>
+	/// Specifies the possible scopes for a directory search.
+	/// </summary>
+	[Serializable]
+	public enum SearchScope
+	{
+		Base,
+		OneLevel,
+	    Subtree
+	}
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/System.DirectoryServices/SortDirection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/System.DirectoryServices/SortDirection.cs
@@ -1,47 +1,47 @@
-/******************************************************************************
-* The MIT License
-* Copyright (c) 2003 Novell Inc.,  www.novell.com
-* 
-* Permission is hereby granted, free of charge, to any person obtaining  a copy
-* of this software and associated documentation files (the Software), to deal
-* in the Software without restriction, including  without limitation the rights
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-* copies of the Software, and to  permit persons to whom the Software is 
-* furnished to do so, subject to the following conditions:
-* 
-* The above copyright notice and this permission notice shall be included in 
-* all copies or substantial portions of the Software.
-* 
-* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-* SOFTWARE.
-*******************************************************************************/
-
-//
-// System.DirectoryServices.SortDirection .cs
-//
-// Author:
-//   Sunil Kumar (sunilk@novell.com)
-//
-// (C)  Novell Inc.
-//
-
-namespace System.DirectoryServices
-{
-	
-	/// <summary>
-	/// Specifies how to sort the results of an Active Directory query.
-	/// </summary>
-	[Serializable]
-	public enum SortDirection 
-	{
-		Ascending,
-		Descending
-	}
-
-}
-
+/******************************************************************************
+* The MIT License
+* Copyright (c) 2003 Novell Inc.,  www.novell.com
+* 
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
+* copies of the Software, and to  permit persons to whom the Software is 
+* furnished to do so, subject to the following conditions:
+* 
+* The above copyright notice and this permission notice shall be included in 
+* all copies or substantial portions of the Software.
+* 
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+//
+// System.DirectoryServices.SortDirection .cs
+//
+// Author:
+//   Sunil Kumar (sunilk@novell.com)
+//
+// (C)  Novell Inc.
+//
+
+namespace System.DirectoryServices
+{
+	
+	/// <summary>
+	/// Specifies how to sort the results of an Active Directory query.
+	/// </summary>
+	[Serializable]
+	public enum SortDirection 
+	{
+		Ascending,
+		Descending
+	}
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesDirectoryEntryTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesDirectoryEntryTest.cs
@@ -1,1814 +1,1814 @@
-//
-// DirectoryServicesDirectoryEntryTest.cs -
-//	NUnit Test Cases for DirectoryServices.DirectoryEntry
-//
-// Author:
-//	Boris Kirzner  <borisk@mainsoft.com>
-//
-
-using NUnit.Framework;
-using System;
-using System.DirectoryServices;
-
-namespace MonoTests.System.DirectoryServices 
-{
-	[TestFixture]
-	[Category ("InetAccess")]
-	public class DirectoryServicesDirectoryEntryTest
-	{
-		#region Fields
-
-		static TestConfiguration configuration;
-		static DirectoryEntry de;
-
-		#endregion // Fields
-
-		#region SetUp and TearDown
-
-		[TestFixtureSetUp]
-		public void TestFixtureSetUp()
-		{
-			de = null;
-			configuration = new TestConfiguration ();
-		}
-
-
-		[TestFixtureTearDown]
-		public void TestFixtureTearDown()
-		{
-			if (de != null)
-				de.Dispose ();
-			de = null;
-		}
-
-
-		[SetUp]
-		public void SetUp()
-		{
-			TearDown();
-
-			#region Initialize basics
-
-			DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType);
-			DirectoryEntry ouPeople = root.Children.Add("ou=people","Class");
-			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
-			ouPeople.Properties["description"].Value = "All people in organisation";
-			ouPeople.Properties["ou"].Value = "people";
-			ouPeople.CommitChanges();
-
-			#endregion // Initialize basics
-
-			#region Human Resources
- 
-			DirectoryEntry ouHumanResources = ouPeople.Children.Add("ou=Human Resources","Class");
-			ouHumanResources.Properties["objectClass"].Value = "organizationalUnit";
-			ouHumanResources.Properties["ou"].Value = "Human Resources";
-			ouHumanResources.CommitChanges();
-
-			DirectoryEntry cnJohnSmith = ouHumanResources.Children.Add("cn=John Smith","Class");
-			cnJohnSmith.Properties["objectClass"].Value = "organizationalRole";
-			cnJohnSmith.Properties["cn"].Value = "John Smith";
-			cnJohnSmith.Properties["description"].Value = "Very clever person";
-			cnJohnSmith.Properties["ou"].Value = "Human Resources";
-			cnJohnSmith.Properties["telephoneNumber"].Value = "1 801 555 1212";
-			cnJohnSmith.CommitChanges();
-
-			DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
-			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
-			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
-			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
-			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
-			cnBarakTsabari.CommitChanges();
-
-			#endregion // Human Resources
-
-			#region R&D
-
-			DirectoryEntry ouRnD = ouPeople.Children.Add("ou=R&D","Class");
-			ouRnD.Properties["objectClass"].Value = "organizationalUnit";
-			ouRnD.Properties["ou"].Value = "R&D";
-			ouRnD.CommitChanges();
-
-			DirectoryEntry cnYossiCohen = ouRnD.Children.Add("cn=Yossi Cohen","Class");
-			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnYossiCohen.Properties["cn"].Value = "Yossi Cohen";
-			cnYossiCohen.Properties["facsimileTelephoneNumber"].Value = "+1 503 777 4498";
-			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("People");
-			cnYossiCohen.Properties["sn"].Value = "Cohen";
-			cnYossiCohen.Properties["telephoneNumber"].Value = "+1 503 777 4499";
-			cnYossiCohen.CommitChanges();
-
-			DirectoryEntry cnUziCohen = ouRnD.Children.Add("cn=Uzi Cohen","Class");
-			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnUziCohen.Properties["cn"].Value = "Uzi Cohen";
-			cnUziCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
-			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("People");
-			cnUziCohen.Properties["sn"].Value = "Cohen";
-			cnUziCohen.Properties["telephoneNumber"].Value = "+1 602 333 1233";
-			cnUziCohen.CommitChanges();
-
-			DirectoryEntry cnDanielCohen = ouRnD.Children.Add("cn=Daniel Cohen","Class");
-			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielCohen.Properties["cn"].Value = "Daniel Cohen";
-			cnDanielCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1235";
-			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("People");
-			cnDanielCohen.Properties["sn"].Value = "Cohen";
-			cnDanielCohen.Properties["telephoneNumber"].Value = "+1 602 333 1236";
-			cnDanielCohen.CommitChanges();
-
-			DirectoryEntry cnSaraCohen = ouRnD.Children.Add("cn=Sara Cohen","Class");
-			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnSaraCohen.Properties["cn"].Value = "Sara Cohen";
-			cnSaraCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1244";
-			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("People");
-			cnSaraCohen.Properties["sn"].Value = "Cohen";
-			cnSaraCohen.Properties["telephoneNumber"].Value = "+1 602 333 1243";
-			cnSaraCohen.CommitChanges();
-
-			#endregion // R&D
-
-			#region DevQA
-
-			DirectoryEntry ouDevQA = ouPeople.Children.Add("ou=DevQA","Class");
-			ouDevQA.Properties["objectClass"].Value = "organizationalUnit";
-			ouDevQA.Properties["ou"].Value = "DevQA";
-			ouDevQA.CommitChanges();
-
-			DirectoryEntry cnDanielSmith = ouDevQA.Children.Add("cn=Daniel Smith","Class");
-			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielSmith.Properties["cn"].Value = "Daniel Smith";
-			cnDanielSmith.Properties["facsimileTelephoneNumber"].Value = "+1 408 555 3372";
-			cnDanielSmith.Properties["l"].Value = "Santa Clara";
-			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("DevQA");
-			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("People");
-			cnDanielSmith.Properties["sn"].Value = "Smith";
-			cnDanielSmith.Properties["telephoneNumber"].Value = "+1 408 555 9519";
-			cnDanielSmith.CommitChanges();
-
-			DirectoryEntry cnDanielMorgan = ouDevQA.Children.Add("cn=Daniel Morgan","Class");
-			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielMorgan.Properties["cn"].Value = "Daniel Morgan";
-			cnDanielMorgan.Properties["facsimileTelephoneNumber"].Value = "+1 805 666 5645";
-			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("DevQA");
-			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("People");
-			cnDanielMorgan.Properties["sn"].Value = "Morgan";
-			cnDanielMorgan.Properties["telephoneNumber"].Value = "+1 805 666 5644";
-			cnDanielMorgan.CommitChanges();
-
-			#endregion // DevQA
-
-			#region Manager
-
-			DirectoryEntry cnManager = root.Children.Add("cn=Manager","Class");
-			cnManager.Properties["objectClass"].Value = "organizationalRole";
-			cnManager.Properties["cn"].Value = "Manager";
-			cnManager.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1238";
-			cnManager.CommitChanges();
-
-			DirectoryEntry cnUziCohen_ = cnManager.Children.Add("cn=Uzi Cohen","Class");
-			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("organizationalPerson");
-			cnUziCohen_.Properties["cn"].Value = "Uzi Cohen";
-			cnUziCohen_.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
-			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("People");
-			cnUziCohen_.Properties["sn"].Value = "Cohen";
-			cnUziCohen_.Properties["telephoneNumber"].Value = "+1 602 333 1233";
-			cnUziCohen_.CommitChanges();
-
-			#endregion // Manager
-						
-			cnJohnSmith.Dispose();
-			cnBarakTsabari.Dispose();
-			ouHumanResources.Dispose();
-			cnUziCohen.Dispose();
-			cnYossiCohen.Dispose();
-			cnDanielCohen.Dispose();
-			cnSaraCohen.Dispose();
-			ouRnD.Dispose();
-			cnDanielSmith.Dispose();
-			cnDanielMorgan.Dispose();
-			ouDevQA.Dispose();
-			cnUziCohen_.Dispose();
-			cnManager.Dispose();
-			ouPeople.Dispose();
-			root.Dispose();
-		}
-
-
-		[TearDown]
-		public void TearDown()
-		{
-			if (de != null)
-				de.Dispose ();
-
-			de = null;
-
-			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType)) {
-			
-			foreach(DirectoryEntry child in root.Children) {
-				DeleteTree_DFS(child);
-			}
-			}
-		}
-
-		private void DeleteTree_DFS(DirectoryEntry de)
-		{
-			foreach(DirectoryEntry child in de.Children) {
-				DeleteTree_DFS(child);
-			}
-			de.DeleteTree();
-			de.CommitChanges();
-		}
-
-		#endregion //SetUp and TearDown
-
-		#region Tests
-
-		[Test]
-		public void DirectoryEntry_DirectoryEntry()
-		{
-			de = new DirectoryEntry();
-
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
-			Assert.AreEqual(de.Path,String.Empty);
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,null);		
-		}
-
-
-		[Test]
-		public void DirectoryEntry_DirectoryEntry_Str()
-		{
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString)) {
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,null);
-			}
-		}
-
-
-		[Test]
-		public void DirectoryEntry_DirectoryEntry_StrStrStrAuth()
-		{
-			if ((configuration.AuthenticationType != AuthenticationTypes.ServerBind) && 
-				(configuration.AuthenticationType != AuthenticationTypes.None) && 
-				(configuration.AuthenticationType != AuthenticationTypes.Anonymous))
-				return;
-
-			#region AuthenticationTypes.Anonymous
-
-			using (DirectoryEntry de = new DirectoryEntry(	configuration.ConnectionString,
-													configuration.Username,
-													configuration.Password,
-													AuthenticationTypes.Anonymous)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.Anonymous
-
-			#region AuthenticationTypes.Delegation
-
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.Delegation)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.Delegation
-
-			#region AuthenticationTypes.Encryption
-
-			//			de = new DirectoryEntry(	configuration.ConnectionString,
-			//													configuration.Username,
-			//													configuration.Password,
-			//													AuthenticationTypes.Encryption);
-			//			
-			//			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
-			//			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			//			Assert.AreEqual(de.Name,"dc=myhosting");
-			//			//Assert.AreEqual(de.NativeGuid,null);
-			//			Assert.AreEqual(de.Password,configuration.Password);
-			//			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			//			Assert.AreEqual(de.SchemaClassName,"organization");
-			//			Assert.AreEqual(de.UsePropertyCache,true);
-			//			Assert.AreEqual(de.Username,configuration.Username);
-
-			#endregion //AuthenticationTypes.Encryption
-
-			#region AuthenticationTypes.FastBind
-
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.FastBind)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.FastBind
-
-			#region AuthenticationTypes.None
-
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.None)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.None
-
-			#region AuthenticationTypes.ReadonlyServer
-
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.ReadonlyServer)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.ReadonlyServer
-
-			#region AuthenticationTypes.Sealing
-
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.Sealing)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.Sealing
-
-			#region AuthenticationTypes.Secure
-
-			//			de = new DirectoryEntry(configuration.ConnectionString,
-			//									configuration.Username,
-			//									configuration.Password,
-			//									AuthenticationTypes.Secure);
-			//			
-			//			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
-			//			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			//			Assert.AreEqual(de.Name,"dc=myhosting");
-			//			//Assert.AreEqual(de.NativeGuid,null);
-			//			Assert.AreEqual(de.Password,configuration.Password);
-			//			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			//			Assert.AreEqual(de.SchemaClassName,"organization");
-			//			Assert.AreEqual(de.UsePropertyCache,true);
-			//			Assert.AreEqual(de.Username,configuration.Username);
-
-			#endregion //AuthenticationTypes.Secure
-
-			#region AuthenticationTypes.SecureSocketsLayer
-
-			//			de = new DirectoryEntry(configuration.ConnectionString,
-			//									configuration.Username,
-			//									configuration.Password,
-			//									AuthenticationTypes.SecureSocketsLayer);
-			//			
-			//			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
-			//			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			//			Assert.AreEqual(de.Name,"dc=myhosting");
-			//			//Assert.AreEqual(de.NativeGuid,null);
-			//			Assert.AreEqual(de.Password,configuration.Password);
-			//			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			//			Assert.AreEqual(de.SchemaClassName,"organization");
-			//			Assert.AreEqual(de.UsePropertyCache,true);
-			//			Assert.AreEqual(de.Username,configuration.Username);
-
-			#endregion //AuthenticationTypes.SecureSocketsLayer
-
-			#region AuthenticationTypes.ServerBind
-
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.ServerBind)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.ServerBind
-
-			#region AuthenticationTypes.Signing
-
-			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.Signing)){
-			
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
-			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
-			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
-			//Assert.AreEqual(de.NativeGuid,null);
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-			Assert.AreEqual(de.UsePropertyCache,true);
-			Assert.AreEqual(de.Username,configuration.Username);
-			}
-
-			#endregion //AuthenticationTypes.Signing
-		}
-
-		[Test]
-		public void DirectoryEntry_Dispose()
-		{
-			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType)){
-
-			DirectoryEntry ouPeople = root.Children.Add("ou=printers","Class");
-			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
-			ouPeople.Properties["description"].Value = "All printers in organisation";
-			ouPeople.Properties["ou"].Value = "printers";
-			ouPeople.CommitChanges();
-
-			ouPeople.Rename("ou=anotherPrinters");
-			ouPeople.CommitChanges();
-
-			Assert.IsTrue(DirectoryEntry.Exists(configuration.ServerRoot + "ou=anotherPrinters" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))));
-			}
-		}
-
-
-		[Test]
-		public void DirectoryEntry_AuthenticationType()
-		{
-			de = new DirectoryEntry();
-
-			de.AuthenticationType = AuthenticationTypes.Anonymous;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
-
-			de.AuthenticationType = AuthenticationTypes.Delegation;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
-
-			de.AuthenticationType = AuthenticationTypes.Encryption;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
-
-			de.AuthenticationType = AuthenticationTypes.FastBind;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
-
-			de.AuthenticationType = AuthenticationTypes.None;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
-
-			de.AuthenticationType = AuthenticationTypes.ReadonlyServer;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
-
-			de.AuthenticationType = AuthenticationTypes.Sealing;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
-
-			de.AuthenticationType = AuthenticationTypes.Secure;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
-
-			de.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
-
-			de.AuthenticationType = AuthenticationTypes.ServerBind;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
-
-			de.AuthenticationType = AuthenticationTypes.Signing;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
-
-			de = new DirectoryEntry(configuration.ConnectionString);
-
-			de.AuthenticationType = AuthenticationTypes.Anonymous;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
-
-			de.AuthenticationType = AuthenticationTypes.Delegation;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
-
-			de.AuthenticationType = AuthenticationTypes.Encryption;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
-
-			de.AuthenticationType = AuthenticationTypes.FastBind;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
-
-			de.AuthenticationType = AuthenticationTypes.None;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
-
-			de.AuthenticationType = AuthenticationTypes.ReadonlyServer;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
-
-			de.AuthenticationType = AuthenticationTypes.Sealing;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
-
-			de.AuthenticationType = AuthenticationTypes.Secure;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
-
-			de.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
-
-			de.AuthenticationType = AuthenticationTypes.ServerBind;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
-
-			de.AuthenticationType = AuthenticationTypes.Signing;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
-
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									AuthenticationTypes.None);
-
-			de.AuthenticationType = AuthenticationTypes.Anonymous;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
-
-			de.AuthenticationType = AuthenticationTypes.Delegation;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
-
-			de.AuthenticationType = AuthenticationTypes.Encryption;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
-
-			de.AuthenticationType = AuthenticationTypes.FastBind;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
-
-			de.AuthenticationType = AuthenticationTypes.None;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
-
-			de.AuthenticationType = AuthenticationTypes.ReadonlyServer;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
-
-			de.AuthenticationType = AuthenticationTypes.Sealing;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
-
-			de.AuthenticationType = AuthenticationTypes.Secure;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
-
-			de.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
-
-			de.AuthenticationType = AuthenticationTypes.ServerBind;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
-
-			de.AuthenticationType = AuthenticationTypes.Signing;
-			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
-		}
-
-		
-		[Test]
-		public void DirectoryEntry_UsePropertyCache()
-		{
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			// UsePropertyCache = true
-			de.UsePropertyCache = true;
-			Assert.AreEqual(de.UsePropertyCache,true);
-
-			#region Check Properties
-
-			// Properties changes are cached
-			string oldTelephoneNumber = (string)de.Properties["telephoneNumber"].Value;
-			string newTelephoneNumber = "+972-3-6572345";
-
-			de.Properties["telephoneNumber"].Value = newTelephoneNumber;
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-
-			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
-			de.CommitChanges();
-			}
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,newTelephoneNumber);
-
-			// restore object state
-			de.Properties["telephoneNumber"].Value = oldTelephoneNumber;
-			de.CommitChanges();
-			}
-
-			#endregion // Check Properties
-
-			#region Check DeleteTree
-
-			// DeleteTree is not cached
-			de.DeleteTree();
-			try {
-				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-													configuration.Username,
-													configuration.Password,
-													configuration.AuthenticationType)){
-				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
-				barakTsabariDE.CommitChanges();
-				Assert.Fail("Object " + barakTsabariDN + " was not deleted from server.");
-				}
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch (Exception e) {
-				// do nothing
-			}
-
-			// restore object state
-			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-			using (DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class")){
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
-			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
-			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
-			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
-			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
-			cnBarakTsabari.CommitChanges();
-			}
-			}
-
-			#endregion // Check DeleteTree
-
-			#region Check MoveTo
-
-			// Move to is not cached
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			using (DirectoryEntry ouRnD = new DirectoryEntry(	configuration.ServerRoot + "ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType)){
-			de.MoveTo(ouRnD);
-			try {
-				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-													configuration.Username,
-													configuration.Password,
-													configuration.AuthenticationType)){
-				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
-				barakTsabariDE.CommitChanges();
-				Assert.Fail("Object " + barakTsabariDN + " was not moved from old location on the server.");
-				}
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch (Exception e) {
-				// do nothing
-			}
-			}
-
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
-			}
-			
-
-			// restore object state
-			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			barakTsabariDE.MoveTo(ouHumanResources);
-			barakTsabariDE.CommitChanges();
-			}
-			}
-
-			#endregion // Check MoveTo
-
-			#region Check Rename
-
-			// Rename not chached
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			de.Rename("cn=MyUser");
-
-			try {
-				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-													configuration.Username,
-													configuration.Password,
-													configuration.AuthenticationType)){
-				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
-				barakTsabariDE.CommitChanges();
-				Assert.Fail("Object " + barakTsabariDN + " was not renamed on the server.");
-				}
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch (Exception e) {
-				// do nothing
-			}
-
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
-			}
-
-			// restore object state
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			barakTsabariDE.Rename("cn=Barak Tsabari");
-			barakTsabariDE.CommitChanges();
-			}
-
-			#endregion // Check Rename
-
-			// UsePropertyCache = false	
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			de.UsePropertyCache = false;
-			Assert.AreEqual(de.UsePropertyCache,false);
-
-			#region Check Properties
-
-			// Properties changes not cached
-			de.Properties["telephoneNumber"].Value = newTelephoneNumber;
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			}
-
-			//Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,newTelephoneNumber);
-
-			#endregion // Check Properties
-
-			#region Check DeleteTree
-
-			// DeleteTree is not cached
-			de.DeleteTree();
-			try {
-				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-													configuration.Username,
-													configuration.Password,
-													configuration.AuthenticationType)){
-				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
-				barakTsabariDE.CommitChanges();
-				Assert.Fail("Object " + barakTsabariDN + " was not deleted from server.");
-				}
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch (Exception e) {
-				// do nothing
-			}
-
-			// restore object state
-			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-			using (DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class")){
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
-			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
-			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
-			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
-			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
-			cnBarakTsabari.CommitChanges();
-			}
-			}
-
-			#endregion // Check DeleteTree
-
-			#region Check MoveTo
-
-			// Move to is not cached
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			using (DirectoryEntry ouRnD = new DirectoryEntry(	configuration.ServerRoot + "ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-										configuration.Username,
-										configuration.Password,
-										configuration.AuthenticationType)){
-			de.MoveTo(ouRnD);
-			}
-			try {
-				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-													configuration.Username,
-													configuration.Password,
-													configuration.AuthenticationType)){
-				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
-				barakTsabariDE.CommitChanges();
-				Assert.Fail("Object " + barakTsabariDN + " was not moved from old location on the server.");
-				}
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch (Exception e) {
-				// do nothing
-			}
-
-
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
-			}
-			
-
-			// restore object state
-			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			barakTsabariDE.MoveTo(ouHumanResources);
-			barakTsabariDE.CommitChanges();
-			}
-			}
-
-			#endregion // Check MoveTo
-
-			#region Check Rename
-
-			// Rename not chached
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			de.Rename("cn=MyUser");
-
-			try {
-				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
-													configuration.Username,
-													configuration.Password,
-													configuration.AuthenticationType)){
-				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
-				barakTsabariDE.CommitChanges();
-				Assert.Fail("Object " + barakTsabariDN + " was not renamed on the server.");
-				}
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch (Exception e) {
-				// do nothing
-			}
-
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
-			}
-
-			// restore object state
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-			barakTsabariDE.Rename("cn=Barak Tsabari");
-			barakTsabariDE.CommitChanges();
-			}
-
-			#endregion // Check Rename
-		}
-
-		[Test]
-		[Category("NotWorking")]
-		public void DirectoryEntry_Children()
-		{
-			de = new DirectoryEntry();
-			DirectoryEntries children = de.Children;
-			//Assert.AreEqual(children.SchemaFilter.Count,0);	
-
-
-			de = new DirectoryEntry(configuration.ConnectionString);
-			children = de.Children;
-
-			//Assert.AreEqual(children.SchemaFilter.Count,0);
-
-			int childrenCount = 0;
-			foreach(DirectoryEntry childDe in children) {
-				childrenCount++;
-			}
-			Assert.AreEqual(childrenCount,2);
-			Assert.AreEqual(children.Find("ou=people").Name,"ou=people");
-			Assert.AreEqual(children.Find("cn=Manager").Name,"cn=Manager");
-
-
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			children = de.Children;
-
-			//Assert.AreEqual(children.SchemaFilter.Count,0);
-
-			childrenCount = 0;
-			foreach(DirectoryEntry childDe in children) {
-				childrenCount++;
-			}
-			Assert.AreEqual(childrenCount,2);
-			Assert.AreEqual(children.Find("ou=people").Name,"ou=people");
-			Assert.AreEqual(children.Find("cn=Manager").Name,"cn=Manager");
-
-			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			children = de.Children;
-
-			Assert.AreEqual(children.Find("cn=Barak Tsabari").Name,"cn=Barak Tsabari");
-			Assert.AreEqual(children.Find("cn=John Smith").Name,"cn=John Smith");
-		}
-
-		[Test]
-		public void DirectoryEntry_Name()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString);
-
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			Assert.AreEqual(de.Name,"ou=Human Resources");
-
-			de = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			Assert.AreEqual(de.Name,"cn=Barak Tsabari");
-		}
-		
-
-		[Test]
-		public void DirectoryEntry_Parent()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString);
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(de.Parent.Path.ToLower(),(configuration.ServerRoot + GetParentDN (configuration.BaseDn)).ToLower());
-
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(de.Parent.Path.ToLower(),(configuration.ServerRoot + GetParentDN (configuration.BaseDn)).ToLower());
-
-			de = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(de.Parent.Path.ToLower(),(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
-		}
-
-
-		[Test]
-		public void DirectoryEntry_Path()
-		{
-			string wrongPath = "something that is not LDAP path";
-
-			de = new DirectoryEntry();
-
-			Assert.AreEqual(de.Path,String.Empty);
-
-			de.Path = configuration.ConnectionString;
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-
-			de.Path = "";
-			Assert.AreEqual(de.Path,String.Empty);
-			
-			de.Path = wrongPath;
-			Assert.AreEqual(de.Path,wrongPath);
-
-
-			de = new DirectoryEntry(configuration.ConnectionString);
-
-			de.Path = configuration.ConnectionString;
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-
-			de.Path = "";
-			Assert.AreEqual(de.Path,String.Empty);
-
-			de.Path = wrongPath;
-			Assert.AreEqual(de.Path,wrongPath);
-
-			
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			de.Path = configuration.ConnectionString;
-			Assert.AreEqual(de.Path,configuration.ConnectionString);
-
-			de.Path = "";
-			Assert.AreEqual(de.Path,String.Empty);
-
-			de.Path = wrongPath;
-			Assert.AreEqual(de.Path,wrongPath);
-
-			de = new DirectoryEntry("ldap://myhost:389/ou=people",null,null,AuthenticationTypes.None);
-			Assert.AreEqual(de.Path,"ldap://myhost:389/ou=people");
-
-			de.Path = null;
-			Assert.AreEqual(de.Path,String.Empty);
-		}
-
-
-		[Test]
-		public void DirectoryEntry_Properties1()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString);
-
-			Assert.AreEqual(de.Properties.Count,3);
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["dc"]).Value,"example");
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,null);
-
-			
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			Assert.AreEqual(de.Properties.Count,3);
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["dc"]).Value,"example");
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,null);
-
-			// ensure that properties are not accessible after removing an entry from the server
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			
-			de.DeleteTree();
-			
-			try {
-				int i = de.Properties.Count;
-				Assert.Fail("Properties should not be accessible after deleting an entry from the server");
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch(Exception e) {
-				// supress exception
-			}
-
-			try {
-				string s = (string)((PropertyValueCollection)de.Properties["dc"]).Value;
-				Assert.Fail("Properties should not be accessible after deleting an entry from the server");
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch(Exception e) {
-				// supress exception
-			}
-		}
-
-		[Test]
-		public void DirectoryEntry_Properties2()
-		{
-			// delete entry, create a new one (the same) and access properties of the old object
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			// cause to properties loading
-			Assert.AreEqual(de.Properties.Count,6);
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Tsabari");
-
-			// delete entry
-			de.DeleteTree();
-
-			// the local property chache is still accessible
-			Assert.AreEqual(de.Properties.Count,6);
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Tsabari");
-
-			de.CommitChanges();
-
-			// the local property chache is still accessible
-			((PropertyValueCollection)de.Properties["sn"]).Value = "Barbari";
-
-			// create the entry back again
-			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-			using (DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class")){
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
-			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
-			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
-			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
-			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
-			cnBarakTsabari.CommitChanges();
-			}
-			}
-			
-			// the local property chache is still accessible
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Barbari");
-
-			// Refresh from server
-			de.RefreshCache();
-			// ensure the properties of an entry are still accessible through the old object
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Tsabari");
-
-		}
-
-
-		[Test]
-		[Category("NotWorking")]
-		public void DirectoryEntry_SchemaClassName()
-		{
-			de = new DirectoryEntry();
-			Assert.AreEqual(de.SchemaClassName,"domainDNS");
-
-
-			de = new DirectoryEntry(configuration.ConnectionString);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-
-
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			Assert.AreEqual(de.SchemaClassName,"organization");
-
-			DirectoryEntry de2 = de.Children.Add("ou=My Child","Class");
-			Assert.AreEqual(de2.SchemaClassName,"Class");
-			Assert.AreEqual(((PropertyValueCollection)de2.Properties["structuralObjectClass"]).Value,null);
-		}
-
-		[Test]
-		[Category("NotWorking")]
-		public void DirectoryEntry_SchemaEntry()
-		{
-			de = new DirectoryEntry();
-			DirectoryEntry schemaEntry = de.SchemaEntry;
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(schemaEntry.Path.ToLower(),"LDAP://schema/domainDNS".ToLower());
-			Assert.AreEqual(schemaEntry.Name,"domainDNS");
-			Assert.AreEqual(schemaEntry.Username,null);
-			Assert.AreEqual(schemaEntry.UsePropertyCache,true);
-			Assert.AreEqual(schemaEntry.SchemaClassName,"Class");
-			Assert.AreEqual(schemaEntry.AuthenticationType,AuthenticationTypes.None);
-
-
-			de = new DirectoryEntry(configuration.ConnectionString);
-			schemaEntry = de.SchemaEntry;
-
-			Assert.AreEqual(schemaEntry.Path,configuration.ServerRoot + "schema/organization");
-			Assert.AreEqual(schemaEntry.Name,"organization");
-			Assert.AreEqual(schemaEntry.Username,null);
-			Assert.AreEqual(schemaEntry.UsePropertyCache,true);
-			Assert.AreEqual(schemaEntry.SchemaClassName,"Class");
-			Assert.AreEqual(schemaEntry.AuthenticationType,AuthenticationTypes.None);
-
-
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			schemaEntry = de.SchemaEntry;
-
-			Assert.AreEqual(schemaEntry.Path,configuration.ServerRoot + "schema/organization");
-			Assert.AreEqual(schemaEntry.Name,"organization");
-			Assert.AreEqual(schemaEntry.Username,configuration.Username);
-			Assert.AreEqual(schemaEntry.UsePropertyCache,true);
-			Assert.AreEqual(schemaEntry.SchemaClassName,"Class");
-			Assert.AreEqual(schemaEntry.AuthenticationType,configuration.AuthenticationType);
-		}		
-
-
-		[Test]
-		public void DirectoryEntry_Username()
-		{
-			string wrongUsername = "some wrong username";
-
-			de = new DirectoryEntry();
-
-			Assert.AreEqual(de.Username,null);
-
-			de.Username = configuration.Username;
-			Assert.AreEqual(de.Username,configuration.Username);
-
-			de.Username = "";
-			Assert.AreEqual(de.Username,String.Empty);
-			
-			de.Username = wrongUsername;
-			Assert.AreEqual(de.Username,wrongUsername);
-
-
-			de = new DirectoryEntry(configuration.ConnectionString);
-
-			de.Username = configuration.Username;
-			Assert.AreEqual(de.Username,configuration.Username);
-
-			de.Username = "";
-			Assert.AreEqual(de.Username,String.Empty);
-
-			de.Username = wrongUsername;
-			Assert.AreEqual(de.Username,wrongUsername);
-
-			
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			de.Username = configuration.Username;
-			Assert.AreEqual(de.Username,configuration.Username);
-
-			de.Username = "";
-			Assert.AreEqual(de.Username,String.Empty);
-
-			de.Username = wrongUsername;
-			Assert.AreEqual(de.Username,wrongUsername);
-		}
-
-
-		[Test]
-		public void DirectoryEntry_Close()
-		{
-			de = new DirectoryEntry();
-			de.Close();
-
-			de = new DirectoryEntry(configuration.ConnectionString);
-			de.Close();
-	
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			de.Close();
-		}
-
-
-		[Test]
-		public void DirectoryEntry_CommitChanges1()
-		{
-			string humanResourcesDN = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	humanResourcesDN,
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-
-			// new entry
-			string newEmployeeDN = configuration.ServerRoot + "cn=New Employee,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			de = ouHumanResources.Children.Add("cn=New Employee","Class");
-			Assert.IsFalse(DirectoryEntry.Exists(newEmployeeDN));
-
-			de.Properties["objectClass"].Value = "organizationalRole";
-			de.Properties["cn"].Value = "New Employee";
-			Assert.IsFalse(DirectoryEntry.Exists(newEmployeeDN));
-			
-			de.CommitChanges();
-			Assert.IsTrue(DirectoryEntry.Exists(newEmployeeDN));
-			}
-
-			// existing entry
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			string oldTelephone = (string)((PropertyValueCollection)de.Properties["telephoneNumber"]).Value;
-			string newTelephone = "+972 3 6078596";
-
-			// UsePropertyCache - true
-			de.UsePropertyCache = true;
-			((PropertyValueCollection)de.Properties["telephoneNumber"]).Value = newTelephone;
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["telephoneNumber"]).Value,newTelephone);
-
-			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(	barakTsabariDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-
-			//check that on server there is still an old value
-			Assert.AreEqual(((PropertyValueCollection)cnBarakTsabari.Properties["telephoneNumber"]).Value,oldTelephone);
-
-			de.CommitChanges();
-			}
-
-			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(barakTsabariDN,
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-
-			// check that new value is updated on the server
-			Assert.AreEqual(((PropertyValueCollection)cnBarakTsabari.Properties["telephoneNumber"]).Value,newTelephone);
-			}
-
-			// UsePropertyCache - false
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			de.UsePropertyCache = false;
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["telephoneNumber"]).Value,newTelephone);
-			((PropertyValueCollection)de.Properties["telephoneNumber"]).Value = oldTelephone;
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["telephoneNumber"]).Value,oldTelephone);
-
-			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(barakTsabariDN,
-												configuration.Username,
-												configuration.Password,
-												configuration.AuthenticationType)){
-
-			// check that new value is updated on the server
-			//Assert.AreEqual(((PropertyValueCollection)cnBarakTsabari.Properties["telephoneNumber"]).Value,oldTelephone);
-			}
-
-			de.CommitChanges(); // this should do nothing
-		}
-
-		[Test]
-		public void DirectoryEntry_CommitChanges2()
-		{
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			using (DirectoryEntry barakTsabariDE1 = new DirectoryEntry(barakTsabariDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-			barakTsabariDE1.UsePropertyCache = true;
-
-			using (DirectoryEntry barakTsabariDE2 = new DirectoryEntry(barakTsabariDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-			barakTsabariDE2.UsePropertyCache = true;
-
-			string oldTelephone = (string)((PropertyValueCollection)barakTsabariDE1.Properties["telephoneNumber"]).Value;
-			string newTelephone = "+972 3 6078596";
-			string oldFacsimilieTelephoneNumber = (string)((PropertyValueCollection)barakTsabariDE1.Properties["facsimileTelephoneNumber"]).Value;
-			string newFacsimilieTelephoneNumber1 = "+972-3-9872365";
-			string newFacsimilieTelephoneNumber2 = "+972-3-9999999";
-
-			barakTsabariDE1.Properties["telephoneNumber"].Value = newTelephone;
-			barakTsabariDE1.Properties["facsimileTelephoneNumber"].Value = newFacsimilieTelephoneNumber1;
-
-			barakTsabariDE2.Properties["facsimileTelephoneNumber"].Value = newFacsimilieTelephoneNumber2;
-
-			// only the changed properties of each object are set
-
-			barakTsabariDE1.CommitChanges();
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			Assert.AreEqual(de.Properties["telephoneNumber"].Value,newTelephone);
-			Assert.AreEqual(de.Properties["facsimileTelephoneNumber"].Value,newFacsimilieTelephoneNumber1);
-
-			barakTsabariDE2.CommitChanges();
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			Assert.AreEqual(de.Properties["telephoneNumber"].Value,newTelephone);
-			Assert.AreEqual(de.Properties["facsimileTelephoneNumber"].Value,newFacsimilieTelephoneNumber2);
-			}
-			}
-		}
-
-
-		[Test]
-		[ExpectedException(typeof(NotImplementedException))]
-		public void DirectoryEntry_CopyTo()
-		{
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(	barakTsabariDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-
-			cnBarakTsabari.CopyTo(de);
-			}
-		}
-
-
-		[Test]
-		public void DirectoryEntry_DeleteTree()
-		{
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDN));
-			de = new DirectoryEntry(barakTsabariDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);						
-
-			// no properties changed
-			de.DeleteTree();
-			de.CommitChanges();
-
-			Assert.IsFalse(DirectoryEntry.Exists(barakTsabariDN));
-
-			string johnSmithDN = configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			Assert.IsTrue(DirectoryEntry.Exists(johnSmithDN));
-			de = new DirectoryEntry(johnSmithDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			de.Properties["telephoneNumber"].Value = "+972 3 9999999";
-
-			// some properties changed
-			de.DeleteTree();
-			try {
-				de.CommitChanges();					
-				Assert.Fail("Object " + johnSmithDN + " was not deleted from server");
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch(Exception e) {
-				// do nothing
-			}
-		}
-
-		[Test]
-		public void DirectoryEntry_DeleteTree2()
-		{
-			string johnSmithDN = configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			Assert.IsTrue(DirectoryEntry.Exists(johnSmithDN));
-			// two objects refer to the same entry
-			de = new DirectoryEntry(johnSmithDN,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			using (DirectoryEntry johnSmithDE = new DirectoryEntry(johnSmithDN,
-															configuration.Username,
-															configuration.Password,
-															configuration.AuthenticationType)){
-
-			johnSmithDE.Properties["telephoneNumber"].Value = "+972 3 9999999";
-
-			// check that the second entry is not accessible after the first is deleted
-			de.DeleteTree();
-			de.CommitChanges();
-
-			try {
-				johnSmithDE.CommitChanges();					
-				Assert.Fail("Object " + johnSmithDN + " should not be accessible");
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch(Exception e) {
-				// do nothing
-			}
-			}
-		}
-
-
-		[Test]
-		public void DirectoryEntry_Exists()
-		{
-			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			string johnSmithDN = configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			string humanResourcesOU = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDN));
-			Assert.IsTrue(DirectoryEntry.Exists(johnSmithDN));
-			Assert.IsTrue(DirectoryEntry.Exists(humanResourcesOU));
-
-			Assert.IsFalse(DirectoryEntry.Exists(barakTsabariDN + ",dc=mono"));
-		}
-
-
-		[Test]
-		public void DirectoryEntry_MoveTo_De()
-		{
-			string barakTsabariHumanResourcesDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			string barakTsabariDevQaDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariHumanResourcesDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-
-			string devQaOU = configuration.ServerRoot + "ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry devQaDE = new DirectoryEntry(devQaOU,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType)){
-
-			barakTsabariDE.MoveTo(devQaDE);
-			barakTsabariDE.CommitChanges();
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDevQaDN));
-
-			string humanRwsourcesOU = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry humanResourcesDE = new DirectoryEntry(	humanRwsourcesOU,
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-
-			barakTsabariDE.MoveTo(humanResourcesDE);
-			barakTsabariDE.CommitChanges();
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariHumanResourcesDN));
-			}
-			}
-			}
-		}
-
-
-		[Test]
-		public void DirectoryEntry_MoveTo_DeStr()
-		{
-			string barakTsabariHumanResourcesDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			string barakTsabariDevQaDN = configuration.ServerRoot + "cn=My Name,ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariHumanResourcesDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-
-			string devQaOU = configuration.ServerRoot + "ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry devQaDE = new DirectoryEntry(devQaOU,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType)){
-
-			barakTsabariDE.MoveTo(devQaDE,"cn=My Name");
-			barakTsabariDE.CommitChanges();
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDevQaDN));
-
-			string humanRwsourcesOU = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry humanResourcesDE = new DirectoryEntry(	humanRwsourcesOU,
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-
-			barakTsabariDE.MoveTo(humanResourcesDE,"cn=Barak Tsabari");
-			barakTsabariDE.CommitChanges();
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariHumanResourcesDN));
-			}
-			}
-			}
-		}
-
-		[Test]
-		public void DirectoryEntry_RefreshCache()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString);
-			de.UsePropertyCache = true;
-			
-			string newValue = "Just a company";
-			string oldValue = (string)((PropertyValueCollection)de.Properties["description"]).Value;
-			((PropertyValueCollection)de.Properties["description"]).Value = newValue;
-			
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValue);
-
-			de.RefreshCache();
-
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,oldValue);
-			
-			// call RefeshCache on new entry prior to submitting it to the server shoud fail
-			string newEmployeeDN = configuration.ServerRoot + "cn=New Employee,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			string humanResourcesDN = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry humanResourcesDE = new DirectoryEntry(	humanResourcesDN,
-																	configuration.Username,
-																	configuration.Password,
-																	configuration.AuthenticationType)){
-
-			using (DirectoryEntry newEmployeeDE = humanResourcesDE.Children.Add("cn=New Employee","Class")){
-			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,null);
-
-			((PropertyValueCollection)newEmployeeDE.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)newEmployeeDE.Properties["objectClass"]).Add("organizationalPerson");
-			newEmployeeDE.Properties["cn"].Value = "New Employee";
-			newEmployeeDE.Properties["sn"].Value = "Employee";
-			newEmployeeDE.Properties["ou"].Value = "Human Resources";
-
-			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,"New Employee");
-
-			try {
-				newEmployeeDE.RefreshCache();
-				Assert.Fail("Call to RefreshCache did not fail");
-			}
-			catch(AssertionException ae) {
-				throw ae;
-			}
-			catch (Exception e) {
-				// supress exception
-			}
-
-			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,"New Employee");
-
-			newEmployeeDE.CommitChanges();
-
-			// now it should work without any problem
-			newEmployeeDE.RefreshCache();
-
-			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,"New Employee");
-			}
-			}
-		}
-
-		[Test]
-		public void DirectoryEntry_RefreshCache_StrArr()
-		{			
-			de = new DirectoryEntry(configuration.ServerRoot + "cn=Uzi Cohen,cn=Manager" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)));
-			de.UsePropertyCache = true;
-			
-			string[] newValues = new string [] { "Just a manager", "Levi" };
-			string[] oldValues = new string [2];
-			oldValues [0] = (string)((PropertyValueCollection)de.Properties["description"]).Value;
-			oldValues [1] = (string)((PropertyValueCollection)de.Properties["sn"]).Value;
-			
-			((PropertyValueCollection)de.Properties["description"]).Value = newValues [0];
-			((PropertyValueCollection)de.Properties["sn"]).Value = newValues [1];
-			
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValues [0]);
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,newValues [1]);
-
-			de.RefreshCache(new string[] {"cn"});
-
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValues [0]);
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,newValues [1]);
-
-			de.RefreshCache(new string[] {"description","sn"});
-
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValues [0]);
-			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,oldValues [1]);	
-		}
-
-		[Test]
-		public void DirectoryEntry_Rename()
-		{
-			string barakTsabariOldDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-			string barakTsabariNewDN = configuration.ServerRoot + "cn=My Name,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
-
-			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariOldDN,
-																configuration.Username,
-																configuration.Password,
-																configuration.AuthenticationType)){
-
-			barakTsabariDE.Rename("cn=My Name");
-			barakTsabariDE.CommitChanges();
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariNewDN));
-
-			barakTsabariDE.Rename("cn=Barak Tsabari");
-			barakTsabariDE.CommitChanges();
-
-			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariOldDN));
-			}
-		}
-
-		#endregion Tests
-
-		private static string GetName (string baseDn)
-		{
-			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
-				return baseDn;
-
-			int index = baseDn.IndexOf (',');
-
-			return baseDn.Substring (0, index);
-		}
-
-		private static string GetParentDN (string baseDn)
-		{
-			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
-				return String.Empty;
-
-			int index = baseDn.IndexOf (',');
-
-			return baseDn.Substring (index + 1,baseDn.Length - index - 1);
-		}
-	}
-}
+//
+// DirectoryServicesDirectoryEntryTest.cs -
+//	NUnit Test Cases for DirectoryServices.DirectoryEntry
+//
+// Author:
+//	Boris Kirzner  <borisk@mainsoft.com>
+//
+
+using NUnit.Framework;
+using System;
+using System.DirectoryServices;
+
+namespace MonoTests.System.DirectoryServices 
+{
+	[TestFixture]
+	[Category ("InetAccess")]
+	public class DirectoryServicesDirectoryEntryTest
+	{
+		#region Fields
+
+		static TestConfiguration configuration;
+		static DirectoryEntry de;
+
+		#endregion // Fields
+
+		#region SetUp and TearDown
+
+		[TestFixtureSetUp]
+		public void TestFixtureSetUp()
+		{
+			de = null;
+			configuration = new TestConfiguration ();
+		}
+
+
+		[TestFixtureTearDown]
+		public void TestFixtureTearDown()
+		{
+			if (de != null)
+				de.Dispose ();
+			de = null;
+		}
+
+
+		[SetUp]
+		public void SetUp()
+		{
+			TearDown();
+
+			#region Initialize basics
+
+			DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType);
+			DirectoryEntry ouPeople = root.Children.Add("ou=people","Class");
+			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
+			ouPeople.Properties["description"].Value = "All people in organisation";
+			ouPeople.Properties["ou"].Value = "people";
+			ouPeople.CommitChanges();
+
+			#endregion // Initialize basics
+
+			#region Human Resources
+ 
+			DirectoryEntry ouHumanResources = ouPeople.Children.Add("ou=Human Resources","Class");
+			ouHumanResources.Properties["objectClass"].Value = "organizationalUnit";
+			ouHumanResources.Properties["ou"].Value = "Human Resources";
+			ouHumanResources.CommitChanges();
+
+			DirectoryEntry cnJohnSmith = ouHumanResources.Children.Add("cn=John Smith","Class");
+			cnJohnSmith.Properties["objectClass"].Value = "organizationalRole";
+			cnJohnSmith.Properties["cn"].Value = "John Smith";
+			cnJohnSmith.Properties["description"].Value = "Very clever person";
+			cnJohnSmith.Properties["ou"].Value = "Human Resources";
+			cnJohnSmith.Properties["telephoneNumber"].Value = "1 801 555 1212";
+			cnJohnSmith.CommitChanges();
+
+			DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
+			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
+			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
+			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
+			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
+			cnBarakTsabari.CommitChanges();
+
+			#endregion // Human Resources
+
+			#region R&D
+
+			DirectoryEntry ouRnD = ouPeople.Children.Add("ou=R&D","Class");
+			ouRnD.Properties["objectClass"].Value = "organizationalUnit";
+			ouRnD.Properties["ou"].Value = "R&D";
+			ouRnD.CommitChanges();
+
+			DirectoryEntry cnYossiCohen = ouRnD.Children.Add("cn=Yossi Cohen","Class");
+			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnYossiCohen.Properties["cn"].Value = "Yossi Cohen";
+			cnYossiCohen.Properties["facsimileTelephoneNumber"].Value = "+1 503 777 4498";
+			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("People");
+			cnYossiCohen.Properties["sn"].Value = "Cohen";
+			cnYossiCohen.Properties["telephoneNumber"].Value = "+1 503 777 4499";
+			cnYossiCohen.CommitChanges();
+
+			DirectoryEntry cnUziCohen = ouRnD.Children.Add("cn=Uzi Cohen","Class");
+			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnUziCohen.Properties["cn"].Value = "Uzi Cohen";
+			cnUziCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
+			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("People");
+			cnUziCohen.Properties["sn"].Value = "Cohen";
+			cnUziCohen.Properties["telephoneNumber"].Value = "+1 602 333 1233";
+			cnUziCohen.CommitChanges();
+
+			DirectoryEntry cnDanielCohen = ouRnD.Children.Add("cn=Daniel Cohen","Class");
+			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielCohen.Properties["cn"].Value = "Daniel Cohen";
+			cnDanielCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1235";
+			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("People");
+			cnDanielCohen.Properties["sn"].Value = "Cohen";
+			cnDanielCohen.Properties["telephoneNumber"].Value = "+1 602 333 1236";
+			cnDanielCohen.CommitChanges();
+
+			DirectoryEntry cnSaraCohen = ouRnD.Children.Add("cn=Sara Cohen","Class");
+			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnSaraCohen.Properties["cn"].Value = "Sara Cohen";
+			cnSaraCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1244";
+			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("People");
+			cnSaraCohen.Properties["sn"].Value = "Cohen";
+			cnSaraCohen.Properties["telephoneNumber"].Value = "+1 602 333 1243";
+			cnSaraCohen.CommitChanges();
+
+			#endregion // R&D
+
+			#region DevQA
+
+			DirectoryEntry ouDevQA = ouPeople.Children.Add("ou=DevQA","Class");
+			ouDevQA.Properties["objectClass"].Value = "organizationalUnit";
+			ouDevQA.Properties["ou"].Value = "DevQA";
+			ouDevQA.CommitChanges();
+
+			DirectoryEntry cnDanielSmith = ouDevQA.Children.Add("cn=Daniel Smith","Class");
+			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielSmith.Properties["cn"].Value = "Daniel Smith";
+			cnDanielSmith.Properties["facsimileTelephoneNumber"].Value = "+1 408 555 3372";
+			cnDanielSmith.Properties["l"].Value = "Santa Clara";
+			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("DevQA");
+			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("People");
+			cnDanielSmith.Properties["sn"].Value = "Smith";
+			cnDanielSmith.Properties["telephoneNumber"].Value = "+1 408 555 9519";
+			cnDanielSmith.CommitChanges();
+
+			DirectoryEntry cnDanielMorgan = ouDevQA.Children.Add("cn=Daniel Morgan","Class");
+			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielMorgan.Properties["cn"].Value = "Daniel Morgan";
+			cnDanielMorgan.Properties["facsimileTelephoneNumber"].Value = "+1 805 666 5645";
+			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("DevQA");
+			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("People");
+			cnDanielMorgan.Properties["sn"].Value = "Morgan";
+			cnDanielMorgan.Properties["telephoneNumber"].Value = "+1 805 666 5644";
+			cnDanielMorgan.CommitChanges();
+
+			#endregion // DevQA
+
+			#region Manager
+
+			DirectoryEntry cnManager = root.Children.Add("cn=Manager","Class");
+			cnManager.Properties["objectClass"].Value = "organizationalRole";
+			cnManager.Properties["cn"].Value = "Manager";
+			cnManager.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1238";
+			cnManager.CommitChanges();
+
+			DirectoryEntry cnUziCohen_ = cnManager.Children.Add("cn=Uzi Cohen","Class");
+			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("organizationalPerson");
+			cnUziCohen_.Properties["cn"].Value = "Uzi Cohen";
+			cnUziCohen_.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
+			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("People");
+			cnUziCohen_.Properties["sn"].Value = "Cohen";
+			cnUziCohen_.Properties["telephoneNumber"].Value = "+1 602 333 1233";
+			cnUziCohen_.CommitChanges();
+
+			#endregion // Manager
+						
+			cnJohnSmith.Dispose();
+			cnBarakTsabari.Dispose();
+			ouHumanResources.Dispose();
+			cnUziCohen.Dispose();
+			cnYossiCohen.Dispose();
+			cnDanielCohen.Dispose();
+			cnSaraCohen.Dispose();
+			ouRnD.Dispose();
+			cnDanielSmith.Dispose();
+			cnDanielMorgan.Dispose();
+			ouDevQA.Dispose();
+			cnUziCohen_.Dispose();
+			cnManager.Dispose();
+			ouPeople.Dispose();
+			root.Dispose();
+		}
+
+
+		[TearDown]
+		public void TearDown()
+		{
+			if (de != null)
+				de.Dispose ();
+
+			de = null;
+
+			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType)) {
+			
+			foreach(DirectoryEntry child in root.Children) {
+				DeleteTree_DFS(child);
+			}
+			}
+		}
+
+		private void DeleteTree_DFS(DirectoryEntry de)
+		{
+			foreach(DirectoryEntry child in de.Children) {
+				DeleteTree_DFS(child);
+			}
+			de.DeleteTree();
+			de.CommitChanges();
+		}
+
+		#endregion //SetUp and TearDown
+
+		#region Tests
+
+		[Test]
+		public void DirectoryEntry_DirectoryEntry()
+		{
+			de = new DirectoryEntry();
+
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
+			Assert.AreEqual(de.Path,String.Empty);
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,null);		
+		}
+
+
+		[Test]
+		public void DirectoryEntry_DirectoryEntry_Str()
+		{
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString)) {
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,null);
+			}
+		}
+
+
+		[Test]
+		public void DirectoryEntry_DirectoryEntry_StrStrStrAuth()
+		{
+			if ((configuration.AuthenticationType != AuthenticationTypes.ServerBind) && 
+				(configuration.AuthenticationType != AuthenticationTypes.None) && 
+				(configuration.AuthenticationType != AuthenticationTypes.Anonymous))
+				return;
+
+			#region AuthenticationTypes.Anonymous
+
+			using (DirectoryEntry de = new DirectoryEntry(	configuration.ConnectionString,
+													configuration.Username,
+													configuration.Password,
+													AuthenticationTypes.Anonymous)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.Anonymous
+
+			#region AuthenticationTypes.Delegation
+
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.Delegation)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.Delegation
+
+			#region AuthenticationTypes.Encryption
+
+			//			de = new DirectoryEntry(	configuration.ConnectionString,
+			//													configuration.Username,
+			//													configuration.Password,
+			//													AuthenticationTypes.Encryption);
+			//			
+			//			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
+			//			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			//			Assert.AreEqual(de.Name,"dc=myhosting");
+			//			//Assert.AreEqual(de.NativeGuid,null);
+			//			Assert.AreEqual(de.Password,configuration.Password);
+			//			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			//			Assert.AreEqual(de.SchemaClassName,"organization");
+			//			Assert.AreEqual(de.UsePropertyCache,true);
+			//			Assert.AreEqual(de.Username,configuration.Username);
+
+			#endregion //AuthenticationTypes.Encryption
+
+			#region AuthenticationTypes.FastBind
+
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.FastBind)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.FastBind
+
+			#region AuthenticationTypes.None
+
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.None)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.None
+
+			#region AuthenticationTypes.ReadonlyServer
+
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.ReadonlyServer)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.ReadonlyServer
+
+			#region AuthenticationTypes.Sealing
+
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.Sealing)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.Sealing
+
+			#region AuthenticationTypes.Secure
+
+			//			de = new DirectoryEntry(configuration.ConnectionString,
+			//									configuration.Username,
+			//									configuration.Password,
+			//									AuthenticationTypes.Secure);
+			//			
+			//			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
+			//			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			//			Assert.AreEqual(de.Name,"dc=myhosting");
+			//			//Assert.AreEqual(de.NativeGuid,null);
+			//			Assert.AreEqual(de.Password,configuration.Password);
+			//			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			//			Assert.AreEqual(de.SchemaClassName,"organization");
+			//			Assert.AreEqual(de.UsePropertyCache,true);
+			//			Assert.AreEqual(de.Username,configuration.Username);
+
+			#endregion //AuthenticationTypes.Secure
+
+			#region AuthenticationTypes.SecureSocketsLayer
+
+			//			de = new DirectoryEntry(configuration.ConnectionString,
+			//									configuration.Username,
+			//									configuration.Password,
+			//									AuthenticationTypes.SecureSocketsLayer);
+			//			
+			//			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
+			//			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			//			Assert.AreEqual(de.Name,"dc=myhosting");
+			//			//Assert.AreEqual(de.NativeGuid,null);
+			//			Assert.AreEqual(de.Password,configuration.Password);
+			//			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			//			Assert.AreEqual(de.SchemaClassName,"organization");
+			//			Assert.AreEqual(de.UsePropertyCache,true);
+			//			Assert.AreEqual(de.Username,configuration.Username);
+
+			#endregion //AuthenticationTypes.SecureSocketsLayer
+
+			#region AuthenticationTypes.ServerBind
+
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.ServerBind)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.ServerBind
+
+			#region AuthenticationTypes.Signing
+
+			using (DirectoryEntry de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.Signing)){
+			
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
+			//Assert.AreEqual(de.Guid,new Guid("0b045012-1d97-4f94-9d47-87cbf6dada46"));
+			Assert.AreEqual(de.Name,GetName (configuration.BaseDn));
+			//Assert.AreEqual(de.NativeGuid,null);
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+			Assert.AreEqual(de.UsePropertyCache,true);
+			Assert.AreEqual(de.Username,configuration.Username);
+			}
+
+			#endregion //AuthenticationTypes.Signing
+		}
+
+		[Test]
+		public void DirectoryEntry_Dispose()
+		{
+			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType)){
+
+			DirectoryEntry ouPeople = root.Children.Add("ou=printers","Class");
+			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
+			ouPeople.Properties["description"].Value = "All printers in organisation";
+			ouPeople.Properties["ou"].Value = "printers";
+			ouPeople.CommitChanges();
+
+			ouPeople.Rename("ou=anotherPrinters");
+			ouPeople.CommitChanges();
+
+			Assert.IsTrue(DirectoryEntry.Exists(configuration.ServerRoot + "ou=anotherPrinters" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))));
+			}
+		}
+
+
+		[Test]
+		public void DirectoryEntry_AuthenticationType()
+		{
+			de = new DirectoryEntry();
+
+			de.AuthenticationType = AuthenticationTypes.Anonymous;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
+
+			de.AuthenticationType = AuthenticationTypes.Delegation;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
+
+			de.AuthenticationType = AuthenticationTypes.Encryption;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
+
+			de.AuthenticationType = AuthenticationTypes.FastBind;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
+
+			de.AuthenticationType = AuthenticationTypes.None;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
+
+			de.AuthenticationType = AuthenticationTypes.ReadonlyServer;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
+
+			de.AuthenticationType = AuthenticationTypes.Sealing;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
+
+			de.AuthenticationType = AuthenticationTypes.Secure;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
+
+			de.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
+
+			de.AuthenticationType = AuthenticationTypes.ServerBind;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
+
+			de.AuthenticationType = AuthenticationTypes.Signing;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
+
+			de = new DirectoryEntry(configuration.ConnectionString);
+
+			de.AuthenticationType = AuthenticationTypes.Anonymous;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
+
+			de.AuthenticationType = AuthenticationTypes.Delegation;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
+
+			de.AuthenticationType = AuthenticationTypes.Encryption;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
+
+			de.AuthenticationType = AuthenticationTypes.FastBind;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
+
+			de.AuthenticationType = AuthenticationTypes.None;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
+
+			de.AuthenticationType = AuthenticationTypes.ReadonlyServer;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
+
+			de.AuthenticationType = AuthenticationTypes.Sealing;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
+
+			de.AuthenticationType = AuthenticationTypes.Secure;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
+
+			de.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
+
+			de.AuthenticationType = AuthenticationTypes.ServerBind;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
+
+			de.AuthenticationType = AuthenticationTypes.Signing;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
+
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									AuthenticationTypes.None);
+
+			de.AuthenticationType = AuthenticationTypes.Anonymous;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Anonymous);
+
+			de.AuthenticationType = AuthenticationTypes.Delegation;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Delegation);
+
+			de.AuthenticationType = AuthenticationTypes.Encryption;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Encryption);
+
+			de.AuthenticationType = AuthenticationTypes.FastBind;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.FastBind);
+
+			de.AuthenticationType = AuthenticationTypes.None;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.None);
+
+			de.AuthenticationType = AuthenticationTypes.ReadonlyServer;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ReadonlyServer);
+
+			de.AuthenticationType = AuthenticationTypes.Sealing;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Sealing);
+
+			de.AuthenticationType = AuthenticationTypes.Secure;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Secure);
+
+			de.AuthenticationType = AuthenticationTypes.SecureSocketsLayer;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.SecureSocketsLayer);
+
+			de.AuthenticationType = AuthenticationTypes.ServerBind;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.ServerBind);
+
+			de.AuthenticationType = AuthenticationTypes.Signing;
+			Assert.AreEqual(de.AuthenticationType,AuthenticationTypes.Signing);
+		}
+
+		
+		[Test]
+		public void DirectoryEntry_UsePropertyCache()
+		{
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			// UsePropertyCache = true
+			de.UsePropertyCache = true;
+			Assert.AreEqual(de.UsePropertyCache,true);
+
+			#region Check Properties
+
+			// Properties changes are cached
+			string oldTelephoneNumber = (string)de.Properties["telephoneNumber"].Value;
+			string newTelephoneNumber = "+972-3-6572345";
+
+			de.Properties["telephoneNumber"].Value = newTelephoneNumber;
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+
+			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
+			de.CommitChanges();
+			}
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,newTelephoneNumber);
+
+			// restore object state
+			de.Properties["telephoneNumber"].Value = oldTelephoneNumber;
+			de.CommitChanges();
+			}
+
+			#endregion // Check Properties
+
+			#region Check DeleteTree
+
+			// DeleteTree is not cached
+			de.DeleteTree();
+			try {
+				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+													configuration.Username,
+													configuration.Password,
+													configuration.AuthenticationType)){
+				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
+				barakTsabariDE.CommitChanges();
+				Assert.Fail("Object " + barakTsabariDN + " was not deleted from server.");
+				}
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+
+			// restore object state
+			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+			using (DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class")){
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
+			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
+			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
+			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
+			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
+			cnBarakTsabari.CommitChanges();
+			}
+			}
+
+			#endregion // Check DeleteTree
+
+			#region Check MoveTo
+
+			// Move to is not cached
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			using (DirectoryEntry ouRnD = new DirectoryEntry(	configuration.ServerRoot + "ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType)){
+			de.MoveTo(ouRnD);
+			try {
+				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+													configuration.Username,
+													configuration.Password,
+													configuration.AuthenticationType)){
+				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
+				barakTsabariDE.CommitChanges();
+				Assert.Fail("Object " + barakTsabariDN + " was not moved from old location on the server.");
+				}
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+			}
+
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
+			}
+			
+
+			// restore object state
+			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			barakTsabariDE.MoveTo(ouHumanResources);
+			barakTsabariDE.CommitChanges();
+			}
+			}
+
+			#endregion // Check MoveTo
+
+			#region Check Rename
+
+			// Rename not chached
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			de.Rename("cn=MyUser");
+
+			try {
+				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+													configuration.Username,
+													configuration.Password,
+													configuration.AuthenticationType)){
+				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
+				barakTsabariDE.CommitChanges();
+				Assert.Fail("Object " + barakTsabariDN + " was not renamed on the server.");
+				}
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
+			}
+
+			// restore object state
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			barakTsabariDE.Rename("cn=Barak Tsabari");
+			barakTsabariDE.CommitChanges();
+			}
+
+			#endregion // Check Rename
+
+			// UsePropertyCache = false	
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			de.UsePropertyCache = false;
+			Assert.AreEqual(de.UsePropertyCache,false);
+
+			#region Check Properties
+
+			// Properties changes not cached
+			de.Properties["telephoneNumber"].Value = newTelephoneNumber;
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			}
+
+			//Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,newTelephoneNumber);
+
+			#endregion // Check Properties
+
+			#region Check DeleteTree
+
+			// DeleteTree is not cached
+			de.DeleteTree();
+			try {
+				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+													configuration.Username,
+													configuration.Password,
+													configuration.AuthenticationType)){
+				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
+				barakTsabariDE.CommitChanges();
+				Assert.Fail("Object " + barakTsabariDN + " was not deleted from server.");
+				}
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+
+			// restore object state
+			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+			using (DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class")){
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
+			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
+			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
+			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
+			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
+			cnBarakTsabari.CommitChanges();
+			}
+			}
+
+			#endregion // Check DeleteTree
+
+			#region Check MoveTo
+
+			// Move to is not cached
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			using (DirectoryEntry ouRnD = new DirectoryEntry(	configuration.ServerRoot + "ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+										configuration.Username,
+										configuration.Password,
+										configuration.AuthenticationType)){
+			de.MoveTo(ouRnD);
+			}
+			try {
+				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+													configuration.Username,
+													configuration.Password,
+													configuration.AuthenticationType)){
+				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
+				barakTsabariDE.CommitChanges();
+				Assert.Fail("Object " + barakTsabariDN + " was not moved from old location on the server.");
+				}
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+
+
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
+			}
+			
+
+			// restore object state
+			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=R&D,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			barakTsabariDE.MoveTo(ouHumanResources);
+			barakTsabariDE.CommitChanges();
+			}
+			}
+
+			#endregion // Check MoveTo
+
+			#region Check Rename
+
+			// Rename not chached
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			de.Rename("cn=MyUser");
+
+			try {
+				using (DirectoryEntry barakTsabariDE = new DirectoryEntry(barakTsabariDN,
+													configuration.Username,
+													configuration.Password,
+													configuration.AuthenticationType)){
+				barakTsabariDE.Properties["telephoneNumber"].Value = newTelephoneNumber;
+				barakTsabariDE.CommitChanges();
+				Assert.Fail("Object " + barakTsabariDN + " was not renamed on the server.");
+				}
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			Assert.AreEqual(barakTsabariDE.Properties["telephoneNumber"].Value,oldTelephoneNumber);
+			}
+
+			// restore object state
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(configuration.ServerRoot + "cn=MyUser,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+			barakTsabariDE.Rename("cn=Barak Tsabari");
+			barakTsabariDE.CommitChanges();
+			}
+
+			#endregion // Check Rename
+		}
+
+		[Test]
+		[Category("NotWorking")]
+		public void DirectoryEntry_Children()
+		{
+			de = new DirectoryEntry();
+			DirectoryEntries children = de.Children;
+			//Assert.AreEqual(children.SchemaFilter.Count,0);	
+
+
+			de = new DirectoryEntry(configuration.ConnectionString);
+			children = de.Children;
+
+			//Assert.AreEqual(children.SchemaFilter.Count,0);
+
+			int childrenCount = 0;
+			foreach(DirectoryEntry childDe in children) {
+				childrenCount++;
+			}
+			Assert.AreEqual(childrenCount,2);
+			Assert.AreEqual(children.Find("ou=people").Name,"ou=people");
+			Assert.AreEqual(children.Find("cn=Manager").Name,"cn=Manager");
+
+
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			children = de.Children;
+
+			//Assert.AreEqual(children.SchemaFilter.Count,0);
+
+			childrenCount = 0;
+			foreach(DirectoryEntry childDe in children) {
+				childrenCount++;
+			}
+			Assert.AreEqual(childrenCount,2);
+			Assert.AreEqual(children.Find("ou=people").Name,"ou=people");
+			Assert.AreEqual(children.Find("cn=Manager").Name,"cn=Manager");
+
+			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			children = de.Children;
+
+			Assert.AreEqual(children.Find("cn=Barak Tsabari").Name,"cn=Barak Tsabari");
+			Assert.AreEqual(children.Find("cn=John Smith").Name,"cn=John Smith");
+		}
+
+		[Test]
+		public void DirectoryEntry_Name()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString);
+
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			Assert.AreEqual(de.Name,"ou=Human Resources");
+
+			de = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			Assert.AreEqual(de.Name,"cn=Barak Tsabari");
+		}
+		
+
+		[Test]
+		public void DirectoryEntry_Parent()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString);
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(de.Parent.Path.ToLower(),(configuration.ServerRoot + GetParentDN (configuration.BaseDn)).ToLower());
+
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(de.Parent.Path.ToLower(),(configuration.ServerRoot + GetParentDN (configuration.BaseDn)).ToLower());
+
+			de = new DirectoryEntry(configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)) ,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(de.Parent.Path.ToLower(),(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
+		}
+
+
+		[Test]
+		public void DirectoryEntry_Path()
+		{
+			string wrongPath = "something that is not LDAP path";
+
+			de = new DirectoryEntry();
+
+			Assert.AreEqual(de.Path,String.Empty);
+
+			de.Path = configuration.ConnectionString;
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+
+			de.Path = "";
+			Assert.AreEqual(de.Path,String.Empty);
+			
+			de.Path = wrongPath;
+			Assert.AreEqual(de.Path,wrongPath);
+
+
+			de = new DirectoryEntry(configuration.ConnectionString);
+
+			de.Path = configuration.ConnectionString;
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+
+			de.Path = "";
+			Assert.AreEqual(de.Path,String.Empty);
+
+			de.Path = wrongPath;
+			Assert.AreEqual(de.Path,wrongPath);
+
+			
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			de.Path = configuration.ConnectionString;
+			Assert.AreEqual(de.Path,configuration.ConnectionString);
+
+			de.Path = "";
+			Assert.AreEqual(de.Path,String.Empty);
+
+			de.Path = wrongPath;
+			Assert.AreEqual(de.Path,wrongPath);
+
+			de = new DirectoryEntry("ldap://myhost:389/ou=people",null,null,AuthenticationTypes.None);
+			Assert.AreEqual(de.Path,"ldap://myhost:389/ou=people");
+
+			de.Path = null;
+			Assert.AreEqual(de.Path,String.Empty);
+		}
+
+
+		[Test]
+		public void DirectoryEntry_Properties1()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString);
+
+			Assert.AreEqual(de.Properties.Count,3);
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["dc"]).Value,"example");
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,null);
+
+			
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			Assert.AreEqual(de.Properties.Count,3);
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["dc"]).Value,"example");
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,null);
+
+			// ensure that properties are not accessible after removing an entry from the server
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			
+			de.DeleteTree();
+			
+			try {
+				int i = de.Properties.Count;
+				Assert.Fail("Properties should not be accessible after deleting an entry from the server");
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch(Exception e) {
+				// supress exception
+			}
+
+			try {
+				string s = (string)((PropertyValueCollection)de.Properties["dc"]).Value;
+				Assert.Fail("Properties should not be accessible after deleting an entry from the server");
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch(Exception e) {
+				// supress exception
+			}
+		}
+
+		[Test]
+		public void DirectoryEntry_Properties2()
+		{
+			// delete entry, create a new one (the same) and access properties of the old object
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			// cause to properties loading
+			Assert.AreEqual(de.Properties.Count,6);
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Tsabari");
+
+			// delete entry
+			de.DeleteTree();
+
+			// the local property chache is still accessible
+			Assert.AreEqual(de.Properties.Count,6);
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Tsabari");
+
+			de.CommitChanges();
+
+			// the local property chache is still accessible
+			((PropertyValueCollection)de.Properties["sn"]).Value = "Barbari";
+
+			// create the entry back again
+			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+			using (DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class")){
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
+			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
+			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
+			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
+			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
+			cnBarakTsabari.CommitChanges();
+			}
+			}
+			
+			// the local property chache is still accessible
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Barbari");
+
+			// Refresh from server
+			de.RefreshCache();
+			// ensure the properties of an entry are still accessible through the old object
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,"Tsabari");
+
+		}
+
+
+		[Test]
+		[Category("NotWorking")]
+		public void DirectoryEntry_SchemaClassName()
+		{
+			de = new DirectoryEntry();
+			Assert.AreEqual(de.SchemaClassName,"domainDNS");
+
+
+			de = new DirectoryEntry(configuration.ConnectionString);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+
+
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			Assert.AreEqual(de.SchemaClassName,"organization");
+
+			DirectoryEntry de2 = de.Children.Add("ou=My Child","Class");
+			Assert.AreEqual(de2.SchemaClassName,"Class");
+			Assert.AreEqual(((PropertyValueCollection)de2.Properties["structuralObjectClass"]).Value,null);
+		}
+
+		[Test]
+		[Category("NotWorking")]
+		public void DirectoryEntry_SchemaEntry()
+		{
+			de = new DirectoryEntry();
+			DirectoryEntry schemaEntry = de.SchemaEntry;
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(schemaEntry.Path.ToLower(),"LDAP://schema/domainDNS".ToLower());
+			Assert.AreEqual(schemaEntry.Name,"domainDNS");
+			Assert.AreEqual(schemaEntry.Username,null);
+			Assert.AreEqual(schemaEntry.UsePropertyCache,true);
+			Assert.AreEqual(schemaEntry.SchemaClassName,"Class");
+			Assert.AreEqual(schemaEntry.AuthenticationType,AuthenticationTypes.None);
+
+
+			de = new DirectoryEntry(configuration.ConnectionString);
+			schemaEntry = de.SchemaEntry;
+
+			Assert.AreEqual(schemaEntry.Path,configuration.ServerRoot + "schema/organization");
+			Assert.AreEqual(schemaEntry.Name,"organization");
+			Assert.AreEqual(schemaEntry.Username,null);
+			Assert.AreEqual(schemaEntry.UsePropertyCache,true);
+			Assert.AreEqual(schemaEntry.SchemaClassName,"Class");
+			Assert.AreEqual(schemaEntry.AuthenticationType,AuthenticationTypes.None);
+
+
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			schemaEntry = de.SchemaEntry;
+
+			Assert.AreEqual(schemaEntry.Path,configuration.ServerRoot + "schema/organization");
+			Assert.AreEqual(schemaEntry.Name,"organization");
+			Assert.AreEqual(schemaEntry.Username,configuration.Username);
+			Assert.AreEqual(schemaEntry.UsePropertyCache,true);
+			Assert.AreEqual(schemaEntry.SchemaClassName,"Class");
+			Assert.AreEqual(schemaEntry.AuthenticationType,configuration.AuthenticationType);
+		}		
+
+
+		[Test]
+		public void DirectoryEntry_Username()
+		{
+			string wrongUsername = "some wrong username";
+
+			de = new DirectoryEntry();
+
+			Assert.AreEqual(de.Username,null);
+
+			de.Username = configuration.Username;
+			Assert.AreEqual(de.Username,configuration.Username);
+
+			de.Username = "";
+			Assert.AreEqual(de.Username,String.Empty);
+			
+			de.Username = wrongUsername;
+			Assert.AreEqual(de.Username,wrongUsername);
+
+
+			de = new DirectoryEntry(configuration.ConnectionString);
+
+			de.Username = configuration.Username;
+			Assert.AreEqual(de.Username,configuration.Username);
+
+			de.Username = "";
+			Assert.AreEqual(de.Username,String.Empty);
+
+			de.Username = wrongUsername;
+			Assert.AreEqual(de.Username,wrongUsername);
+
+			
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			de.Username = configuration.Username;
+			Assert.AreEqual(de.Username,configuration.Username);
+
+			de.Username = "";
+			Assert.AreEqual(de.Username,String.Empty);
+
+			de.Username = wrongUsername;
+			Assert.AreEqual(de.Username,wrongUsername);
+		}
+
+
+		[Test]
+		public void DirectoryEntry_Close()
+		{
+			de = new DirectoryEntry();
+			de.Close();
+
+			de = new DirectoryEntry(configuration.ConnectionString);
+			de.Close();
+	
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			de.Close();
+		}
+
+
+		[Test]
+		public void DirectoryEntry_CommitChanges1()
+		{
+			string humanResourcesDN = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			using (DirectoryEntry ouHumanResources = new DirectoryEntry(	humanResourcesDN,
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+
+			// new entry
+			string newEmployeeDN = configuration.ServerRoot + "cn=New Employee,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			de = ouHumanResources.Children.Add("cn=New Employee","Class");
+			Assert.IsFalse(DirectoryEntry.Exists(newEmployeeDN));
+
+			de.Properties["objectClass"].Value = "organizationalRole";
+			de.Properties["cn"].Value = "New Employee";
+			Assert.IsFalse(DirectoryEntry.Exists(newEmployeeDN));
+			
+			de.CommitChanges();
+			Assert.IsTrue(DirectoryEntry.Exists(newEmployeeDN));
+			}
+
+			// existing entry
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			string oldTelephone = (string)((PropertyValueCollection)de.Properties["telephoneNumber"]).Value;
+			string newTelephone = "+972 3 6078596";
+
+			// UsePropertyCache - true
+			de.UsePropertyCache = true;
+			((PropertyValueCollection)de.Properties["telephoneNumber"]).Value = newTelephone;
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["telephoneNumber"]).Value,newTelephone);
+
+			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(	barakTsabariDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+
+			//check that on server there is still an old value
+			Assert.AreEqual(((PropertyValueCollection)cnBarakTsabari.Properties["telephoneNumber"]).Value,oldTelephone);
+
+			de.CommitChanges();
+			}
+
+			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(barakTsabariDN,
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+
+			// check that new value is updated on the server
+			Assert.AreEqual(((PropertyValueCollection)cnBarakTsabari.Properties["telephoneNumber"]).Value,newTelephone);
+			}
+
+			// UsePropertyCache - false
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			de.UsePropertyCache = false;
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["telephoneNumber"]).Value,newTelephone);
+			((PropertyValueCollection)de.Properties["telephoneNumber"]).Value = oldTelephone;
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["telephoneNumber"]).Value,oldTelephone);
+
+			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(barakTsabariDN,
+												configuration.Username,
+												configuration.Password,
+												configuration.AuthenticationType)){
+
+			// check that new value is updated on the server
+			//Assert.AreEqual(((PropertyValueCollection)cnBarakTsabari.Properties["telephoneNumber"]).Value,oldTelephone);
+			}
+
+			de.CommitChanges(); // this should do nothing
+		}
+
+		[Test]
+		public void DirectoryEntry_CommitChanges2()
+		{
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			using (DirectoryEntry barakTsabariDE1 = new DirectoryEntry(barakTsabariDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+			barakTsabariDE1.UsePropertyCache = true;
+
+			using (DirectoryEntry barakTsabariDE2 = new DirectoryEntry(barakTsabariDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+			barakTsabariDE2.UsePropertyCache = true;
+
+			string oldTelephone = (string)((PropertyValueCollection)barakTsabariDE1.Properties["telephoneNumber"]).Value;
+			string newTelephone = "+972 3 6078596";
+			string oldFacsimilieTelephoneNumber = (string)((PropertyValueCollection)barakTsabariDE1.Properties["facsimileTelephoneNumber"]).Value;
+			string newFacsimilieTelephoneNumber1 = "+972-3-9872365";
+			string newFacsimilieTelephoneNumber2 = "+972-3-9999999";
+
+			barakTsabariDE1.Properties["telephoneNumber"].Value = newTelephone;
+			barakTsabariDE1.Properties["facsimileTelephoneNumber"].Value = newFacsimilieTelephoneNumber1;
+
+			barakTsabariDE2.Properties["facsimileTelephoneNumber"].Value = newFacsimilieTelephoneNumber2;
+
+			// only the changed properties of each object are set
+
+			barakTsabariDE1.CommitChanges();
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			Assert.AreEqual(de.Properties["telephoneNumber"].Value,newTelephone);
+			Assert.AreEqual(de.Properties["facsimileTelephoneNumber"].Value,newFacsimilieTelephoneNumber1);
+
+			barakTsabariDE2.CommitChanges();
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			Assert.AreEqual(de.Properties["telephoneNumber"].Value,newTelephone);
+			Assert.AreEqual(de.Properties["facsimileTelephoneNumber"].Value,newFacsimilieTelephoneNumber2);
+			}
+			}
+		}
+
+
+		[Test]
+		[ExpectedException(typeof(NotImplementedException))]
+		public void DirectoryEntry_CopyTo()
+		{
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			using (DirectoryEntry cnBarakTsabari = new DirectoryEntry(	barakTsabariDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+
+			cnBarakTsabari.CopyTo(de);
+			}
+		}
+
+
+		[Test]
+		public void DirectoryEntry_DeleteTree()
+		{
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDN));
+			de = new DirectoryEntry(barakTsabariDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);						
+
+			// no properties changed
+			de.DeleteTree();
+			de.CommitChanges();
+
+			Assert.IsFalse(DirectoryEntry.Exists(barakTsabariDN));
+
+			string johnSmithDN = configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			Assert.IsTrue(DirectoryEntry.Exists(johnSmithDN));
+			de = new DirectoryEntry(johnSmithDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			de.Properties["telephoneNumber"].Value = "+972 3 9999999";
+
+			// some properties changed
+			de.DeleteTree();
+			try {
+				de.CommitChanges();					
+				Assert.Fail("Object " + johnSmithDN + " was not deleted from server");
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch(Exception e) {
+				// do nothing
+			}
+		}
+
+		[Test]
+		public void DirectoryEntry_DeleteTree2()
+		{
+			string johnSmithDN = configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			Assert.IsTrue(DirectoryEntry.Exists(johnSmithDN));
+			// two objects refer to the same entry
+			de = new DirectoryEntry(johnSmithDN,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			using (DirectoryEntry johnSmithDE = new DirectoryEntry(johnSmithDN,
+															configuration.Username,
+															configuration.Password,
+															configuration.AuthenticationType)){
+
+			johnSmithDE.Properties["telephoneNumber"].Value = "+972 3 9999999";
+
+			// check that the second entry is not accessible after the first is deleted
+			de.DeleteTree();
+			de.CommitChanges();
+
+			try {
+				johnSmithDE.CommitChanges();					
+				Assert.Fail("Object " + johnSmithDN + " should not be accessible");
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch(Exception e) {
+				// do nothing
+			}
+			}
+		}
+
+
+		[Test]
+		public void DirectoryEntry_Exists()
+		{
+			string barakTsabariDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			string johnSmithDN = configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			string humanResourcesOU = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDN));
+			Assert.IsTrue(DirectoryEntry.Exists(johnSmithDN));
+			Assert.IsTrue(DirectoryEntry.Exists(humanResourcesOU));
+
+			Assert.IsFalse(DirectoryEntry.Exists(barakTsabariDN + ",dc=mono"));
+		}
+
+
+		[Test]
+		public void DirectoryEntry_MoveTo_De()
+		{
+			string barakTsabariHumanResourcesDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			string barakTsabariDevQaDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariHumanResourcesDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+
+			string devQaOU = configuration.ServerRoot + "ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry devQaDE = new DirectoryEntry(devQaOU,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType)){
+
+			barakTsabariDE.MoveTo(devQaDE);
+			barakTsabariDE.CommitChanges();
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDevQaDN));
+
+			string humanRwsourcesOU = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry humanResourcesDE = new DirectoryEntry(	humanRwsourcesOU,
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+
+			barakTsabariDE.MoveTo(humanResourcesDE);
+			barakTsabariDE.CommitChanges();
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariHumanResourcesDN));
+			}
+			}
+			}
+		}
+
+
+		[Test]
+		public void DirectoryEntry_MoveTo_DeStr()
+		{
+			string barakTsabariHumanResourcesDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			string barakTsabariDevQaDN = configuration.ServerRoot + "cn=My Name,ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariHumanResourcesDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+
+			string devQaOU = configuration.ServerRoot + "ou=DevQA,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry devQaDE = new DirectoryEntry(devQaOU,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType)){
+
+			barakTsabariDE.MoveTo(devQaDE,"cn=My Name");
+			barakTsabariDE.CommitChanges();
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariDevQaDN));
+
+			string humanRwsourcesOU = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry humanResourcesDE = new DirectoryEntry(	humanRwsourcesOU,
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+
+			barakTsabariDE.MoveTo(humanResourcesDE,"cn=Barak Tsabari");
+			barakTsabariDE.CommitChanges();
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariHumanResourcesDN));
+			}
+			}
+			}
+		}
+
+		[Test]
+		public void DirectoryEntry_RefreshCache()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString);
+			de.UsePropertyCache = true;
+			
+			string newValue = "Just a company";
+			string oldValue = (string)((PropertyValueCollection)de.Properties["description"]).Value;
+			((PropertyValueCollection)de.Properties["description"]).Value = newValue;
+			
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValue);
+
+			de.RefreshCache();
+
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,oldValue);
+			
+			// call RefeshCache on new entry prior to submitting it to the server shoud fail
+			string newEmployeeDN = configuration.ServerRoot + "cn=New Employee,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			string humanResourcesDN = configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry humanResourcesDE = new DirectoryEntry(	humanResourcesDN,
+																	configuration.Username,
+																	configuration.Password,
+																	configuration.AuthenticationType)){
+
+			using (DirectoryEntry newEmployeeDE = humanResourcesDE.Children.Add("cn=New Employee","Class")){
+			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,null);
+
+			((PropertyValueCollection)newEmployeeDE.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)newEmployeeDE.Properties["objectClass"]).Add("organizationalPerson");
+			newEmployeeDE.Properties["cn"].Value = "New Employee";
+			newEmployeeDE.Properties["sn"].Value = "Employee";
+			newEmployeeDE.Properties["ou"].Value = "Human Resources";
+
+			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,"New Employee");
+
+			try {
+				newEmployeeDE.RefreshCache();
+				Assert.Fail("Call to RefreshCache did not fail");
+			}
+			catch(AssertionException ae) {
+				throw ae;
+			}
+			catch (Exception e) {
+				// supress exception
+			}
+
+			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,"New Employee");
+
+			newEmployeeDE.CommitChanges();
+
+			// now it should work without any problem
+			newEmployeeDE.RefreshCache();
+
+			Assert.AreEqual(newEmployeeDE.Properties["cn"].Value,"New Employee");
+			}
+			}
+		}
+
+		[Test]
+		public void DirectoryEntry_RefreshCache_StrArr()
+		{			
+			de = new DirectoryEntry(configuration.ServerRoot + "cn=Uzi Cohen,cn=Manager" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)));
+			de.UsePropertyCache = true;
+			
+			string[] newValues = new string [] { "Just a manager", "Levi" };
+			string[] oldValues = new string [2];
+			oldValues [0] = (string)((PropertyValueCollection)de.Properties["description"]).Value;
+			oldValues [1] = (string)((PropertyValueCollection)de.Properties["sn"]).Value;
+			
+			((PropertyValueCollection)de.Properties["description"]).Value = newValues [0];
+			((PropertyValueCollection)de.Properties["sn"]).Value = newValues [1];
+			
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValues [0]);
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,newValues [1]);
+
+			de.RefreshCache(new string[] {"cn"});
+
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValues [0]);
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,newValues [1]);
+
+			de.RefreshCache(new string[] {"description","sn"});
+
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["description"]).Value,newValues [0]);
+			Assert.AreEqual(((PropertyValueCollection)de.Properties["sn"]).Value,oldValues [1]);	
+		}
+
+		[Test]
+		public void DirectoryEntry_Rename()
+		{
+			string barakTsabariOldDN = configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+			string barakTsabariNewDN = configuration.ServerRoot + "cn=My Name,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn));
+
+			using (DirectoryEntry barakTsabariDE = new DirectoryEntry(	barakTsabariOldDN,
+																configuration.Username,
+																configuration.Password,
+																configuration.AuthenticationType)){
+
+			barakTsabariDE.Rename("cn=My Name");
+			barakTsabariDE.CommitChanges();
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariNewDN));
+
+			barakTsabariDE.Rename("cn=Barak Tsabari");
+			barakTsabariDE.CommitChanges();
+
+			Assert.IsTrue(DirectoryEntry.Exists(barakTsabariOldDN));
+			}
+		}
+
+		#endregion Tests
+
+		private static string GetName (string baseDn)
+		{
+			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
+				return baseDn;
+
+			int index = baseDn.IndexOf (',');
+
+			return baseDn.Substring (0, index);
+		}
+
+		private static string GetParentDN (string baseDn)
+		{
+			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
+				return String.Empty;
+
+			int index = baseDn.IndexOf (',');
+
+			return baseDn.Substring (index + 1,baseDn.Length - index - 1);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesDirectorySearcherTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesDirectorySearcherTest.cs
@@ -1,926 +1,926 @@
-//
-// DirectoryServicesDirectorySearcherTest.cs -
-//	NUnit Test Cases for DirectoryServices.DirectorySearcher
-//
-// Author:
-//	Boris Kirzner  <borisk@mainsoft.com>
-//
-using NUnit.Framework;
-using System;
-using System.DirectoryServices;
-using System.Collections;
-
-using System.Threading;
-
-namespace MonoTests.System.DirectoryServices 
-{
-	[TestFixture]
-	[Category ("InetAccess")]
-	public class DirectoryServicesDirectorySearcherTest
-	{
-		#region Fields
-
-		static TestConfiguration configuration;
-		static DirectoryEntry de;
-		static DirectorySearcher ds;
-
-		#endregion // Fields
-
-		#region SetUp and TearDown
-
-		[TestFixtureSetUp]
-		public void TestFixtureSetUp()
-		{
-			de = null;			
-			configuration = new TestConfiguration ();
-		}
-
-
-		[TestFixtureTearDown]
-		public void TestFixtureTearDown()
-		{
-			if (ds != null)
-				ds.Dispose ();
-			
-			ds = null;
-			
-			if (de != null)
-				de.Dispose ();
-
-			de = null;
-		}
-
-
-		[SetUp]
-		public void SetUp()
-		{
-			TearDown();
-
-			#region Initialize basics
-
-			DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType);
-
-			DirectoryEntry ouPeople = root.Children.Add("ou=people","Class");
-			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
-			ouPeople.Properties["description"].Value = "All people in organisation";
-			ouPeople.Properties["ou"].Value = "people";
-			ouPeople.CommitChanges();
-
-			#endregion // Initialize basics
-
-			#region Human Resources
- 
-			DirectoryEntry ouHumanResources = ouPeople.Children.Add("ou=Human Resources","Class");
-			ouHumanResources.Properties["objectClass"].Value = "organizationalUnit";
-			ouHumanResources.Properties["ou"].Value = "Human Resources";
-			ouHumanResources.CommitChanges();
-
-			DirectoryEntry cnJohnSmith = ouHumanResources.Children.Add("cn=John Smith","Class");
-			cnJohnSmith.Properties["objectClass"].Value = "organizationalRole";
-			cnJohnSmith.Properties["cn"].Value = "John Smith";
-			cnJohnSmith.Properties["description"].Value = "Very clever person";
-			cnJohnSmith.Properties["ou"].Value = "Human Resources";
-			cnJohnSmith.Properties["telephoneNumber"].Value = "1 801 555 1212";
-			cnJohnSmith.CommitChanges();
-
-			DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
-			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
-			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
-			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
-			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
-			cnBarakTsabari.CommitChanges();
-
-			#endregion // Human Resources
-
-			#region R&D
-
-			DirectoryEntry ouRnD = ouPeople.Children.Add("ou=R&D","Class");
-			ouRnD.Properties["objectClass"].Value = "organizationalUnit";
-			ouRnD.Properties["ou"].Value = "R&D";
-			ouRnD.CommitChanges();
-
-			DirectoryEntry cnYossiCohen = ouRnD.Children.Add("cn=Yossi Cohen","Class");
-			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnYossiCohen.Properties["cn"].Value = "Yossi Cohen";
-			cnYossiCohen.Properties["facsimileTelephoneNumber"].Value = "+1 503 777 4498";
-			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("People");
-			cnYossiCohen.Properties["sn"].Value = "Cohen";
-			cnYossiCohen.Properties["telephoneNumber"].Value = "+1 503 777 4499";
-			cnYossiCohen.CommitChanges();
-
-			DirectoryEntry cnUziCohen = ouRnD.Children.Add("cn=Uzi Cohen","Class");
-			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnUziCohen.Properties["cn"].Value = "Uzi Cohen";
-			cnUziCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
-			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("People");
-			cnUziCohen.Properties["sn"].Value = "Cohen";
-			cnUziCohen.Properties["telephoneNumber"].Value = "+1 602 333 1233";
-			cnUziCohen.CommitChanges();
-
-			DirectoryEntry cnDanielCohen = ouRnD.Children.Add("cn=Daniel Cohen","Class");
-			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielCohen.Properties["cn"].Value = "Daniel Cohen";
-			cnDanielCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1235";
-			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("People");
-			cnDanielCohen.Properties["sn"].Value = "Cohen";
-			cnDanielCohen.Properties["telephoneNumber"].Value = "+1 602 333 1236";
-			cnDanielCohen.CommitChanges();
-
-			DirectoryEntry cnSaraCohen = ouRnD.Children.Add("cn=Sara Cohen","Class");
-			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnSaraCohen.Properties["cn"].Value = "Sara Cohen";
-			cnSaraCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1244";
-			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("People");
-			cnSaraCohen.Properties["sn"].Value = "Cohen";
-			cnSaraCohen.Properties["telephoneNumber"].Value = "+1 602 333 1243";
-			cnSaraCohen.CommitChanges();
-
-			#endregion // R&D
-
-			#region DevQA
-
-			DirectoryEntry ouDevQA = ouPeople.Children.Add("ou=DevQA","Class");
-			ouDevQA.Properties["objectClass"].Value = "organizationalUnit";
-			ouDevQA.Properties["ou"].Value = "DevQA";
-			ouDevQA.CommitChanges();
-
-			DirectoryEntry cnDanielSmith = ouDevQA.Children.Add("cn=Daniel Smith","Class");
-			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielSmith.Properties["cn"].Value = "Daniel Smith";
-			cnDanielSmith.Properties["facsimileTelephoneNumber"].Value = "+1 408 555 3372";
-			cnDanielSmith.Properties["l"].Value = "Santa Clara";
-			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("DevQA");
-			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("People");
-			cnDanielSmith.Properties["sn"].Value = "Smith";
-			cnDanielSmith.Properties["telephoneNumber"].Value = "+1 408 555 9519";
-			cnDanielSmith.CommitChanges();
-
-			DirectoryEntry cnDanielMorgan = ouDevQA.Children.Add("cn=Daniel Morgan","Class");
-			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielMorgan.Properties["cn"].Value = "Daniel Morgan";
-			cnDanielMorgan.Properties["facsimileTelephoneNumber"].Value = "+1 805 666 5645";
-			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("DevQA");
-			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("People");
-			cnDanielMorgan.Properties["sn"].Value = "Morgan";
-			cnDanielMorgan.Properties["telephoneNumber"].Value = "+1 805 666 5644";
-			cnDanielMorgan.CommitChanges();
-
-			#endregion // DevQA
-
-			#region Manager
-
-			DirectoryEntry cnManager = root.Children.Add("cn=Manager","Class");
-			cnManager.Properties["objectClass"].Value = "organizationalRole";
-			cnManager.Properties["cn"].Value = "Manager";
-			cnManager.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1238";
-			cnManager.CommitChanges();
-
-			DirectoryEntry cnUziCohen_ = cnManager.Children.Add("cn=Uzi Cohen","Class");
-			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("organizationalPerson");
-			cnUziCohen_.Properties["cn"].Value = "Uzi Cohen";
-			cnUziCohen_.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
-			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("People");
-			cnUziCohen_.Properties["sn"].Value = "Cohen";
-			cnUziCohen_.Properties["telephoneNumber"].Value = "+1 602 333 1233";
-			cnUziCohen_.CommitChanges();
-
-			#endregion // Manager
-
-			cnJohnSmith.Dispose();
-			cnBarakTsabari.Dispose();
-			ouHumanResources.Dispose();
-			cnUziCohen.Dispose();
-			cnYossiCohen.Dispose();
-			cnDanielCohen.Dispose();
-			cnSaraCohen.Dispose();
-			ouRnD.Dispose();
-			cnDanielSmith.Dispose();
-			cnDanielMorgan.Dispose();
-			ouDevQA.Dispose();
-			cnUziCohen_.Dispose();
-			cnManager.Dispose();
-			ouPeople.Dispose();
-			root.Dispose();
-		}
-
-
-		[TearDown]
-		public void TearDown()
-		{
-			if (ds != null)
-				ds.Dispose ();
-			
-			ds = null;
-			
-			if (de != null)
-				de.Dispose ();
-
-			de = null;
-
-			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
-													configuration.Username,
-													configuration.Password,
-													configuration.AuthenticationType)){
-			
-			foreach(DirectoryEntry child in root.Children) {
-				DeleteTree_DFS(child);
-			}
-			}
-		}
-
-
-		private void DeleteTree_DFS(DirectoryEntry de)
-		{
-			foreach(DirectoryEntry child in de.Children) {
-				DeleteTree_DFS(child);
-			}
-			de.DeleteTree();
-			de.CommitChanges();
-		}
-
-		#endregion //SetUp and TearDown
-
-		#region Tests
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher()
-		{
-			ds = new DirectorySearcher();
-
-			Assert.AreEqual(ds.Filter,"(objectClass=*)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher_De()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
-			Assert.AreEqual(ds.Filter,"(objectClass=*)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher_Str()
-		{
-			ds = new DirectorySearcher("(objectClass=organizationalRole)");
-
-			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher_DeStr()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			ds = new DirectorySearcher(de,"(objectClass=organizationalRole)");
-
-			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
-			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher_StrStrArr()
-		{
-			string[] properties = new string[] {"objectClass","ou","cn"};
-			ds = new DirectorySearcher("(objectClass=organizationalRole)",properties);
-
-			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			foreach(string s in properties) {
-				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
-			}
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher_DeStrStrArr()
-		{
-			string[] properties = new string[] {"objectClass","ou","cn"};
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			ds = new DirectorySearcher(de,"(objectClass=organizationalRole)",properties);
-
-			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
-			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			foreach(string s in properties) {
-				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
-			}
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher_StrStrArrScp()
-		{
-			string[] properties = new string[] {"objectClass","ou","cn"};
-			ds = new DirectorySearcher("(objectClass=organizationalRole)",properties,SearchScope.Base);
-
-			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			foreach(string s in properties) {
-				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
-			}
-			Assert.AreEqual(ds.SearchScope,SearchScope.Base);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_DirectorySearcher_DeStrStrArrScp()
-		{
-			string[] properties = new string[] {"objectClass","ou","cn"};
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			ds = new DirectorySearcher(de,"(objectClass=organizationalRole)",properties,SearchScope.Base);
-
-			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
-			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			foreach(string s in properties) {
-				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
-			}
-			Assert.AreEqual(ds.SearchScope,SearchScope.Base);
-			Assert.AreEqual(ds.CacheResults,true);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-		}
-
-		[Test]
-		public void DirectorySearcher_CacheResults()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			ds = new DirectorySearcher(de,"(cn=Barak Tsabari)");
-			ds.CacheResults = true;
-
-			string oldValue;
-			string newValue = "New Description";
-
-			SearchResult result = ds.FindOne();
-			SearchResult secondResult;
-			using (DirectoryEntry resultDE = result.GetDirectoryEntry()){
-
-			oldValue = (string)((PropertyValueCollection)resultDE.Properties["description"]).Value;
-			((PropertyValueCollection)resultDE.Properties["description"]).Value = newValue;
-			Assert.AreEqual(((PropertyValueCollection)resultDE.Properties["description"]).Value,newValue);
-
-			using (DirectorySearcher secondDs = new DirectorySearcher(de,"(cn=Barak Tsabari)")){
-			secondResult = secondDs.FindOne();
-			using (DirectoryEntry secondResultDE = secondResult.GetDirectoryEntry()){
-
-			Assert.AreEqual(((PropertyValueCollection)secondResultDE.Properties["description"]).Value,oldValue);
-
-			((PropertyValueCollection)resultDE.Properties["description"]).Value = oldValue;
-			}
-			}
-			}
-			
-			ds = new DirectorySearcher(de,"(cn=Barak Tsabari)");
-			ds.CacheResults = false;
-			result = ds.FindOne();
-			using (DirectoryEntry resultDE = result.GetDirectoryEntry()){
-
-			((PropertyValueCollection)resultDE.Properties["description"]).Value = newValue;
-			Assert.AreEqual(((PropertyValueCollection)resultDE.Properties["description"]).Value,newValue);
-
-			using (DirectorySearcher secondDs = new DirectorySearcher(de,"(cn=Barak Tsabari)")){
-			secondResult = secondDs.FindOne();
-			using (DirectoryEntry secondResultDE = secondResult.GetDirectoryEntry()){
-
-			// LAMESPEC : according to documentation, the value retrieved should be the new one,
-			// but actually it is an old one
-			Assert.AreEqual(((PropertyValueCollection)secondResultDE.Properties["description"]).Value,oldValue);
-
-			((PropertyValueCollection)resultDE.Properties["description"]).Value = oldValue;	
-			}
-			}
-			}
-		}
-
-	
-		[Test]
-		public void DirectorySearcher_ClientTimeout()
-		{
-			ds = new DirectorySearcher();
-
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
-
-			ds.ClientTimeout = new TimeSpan(500000000);
-			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(500000000));
-
-			ds.ClientTimeout = TimeSpan.MaxValue;
-			Assert.AreEqual(ds.ClientTimeout,TimeSpan.MaxValue);
-
-			ds.ClientTimeout = TimeSpan.MinValue;
-			Assert.AreEqual(ds.ClientTimeout,TimeSpan.MinValue);
-		}
-
-		[Test]
-		public void DirectorySearcher_Filter1()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-			
-			ds.Filter = "(objectClass=person)";
-			SearchResultCollection results = ds.FindAll();
-			Assert.AreEqual(results.Count,8);
-
-			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,12);
-
-			ds.Filter = "(&(objectClass=person)(objectClass=organizationalUnit))";
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,0);
-		}
-
-		[Test]
-		[Category("NotWorking")]
-		public void DirectorySearcher_Filter2()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-			
-			ds.Filter = "((objectClass=person))";
-			SearchResultCollection results = ds.FindAll();
-			Assert.AreEqual(results.Count,8);
-
-			ds.Filter = "(|(objectClass=person)((objectClass=organizationalUnit)))";
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,12);
-
-			ds.Filter = "(&((objectClass=person))(objectClass=organizationalUnit))";
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,0);
-		}
-
-
-		[Test]
-		public void DirectorySearcher_PageSize()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.PageSize,0);
-			
-			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
-			SearchResultCollection results = ds.FindAll();
-			Assert.AreEqual(results.Count,12);
-
-			ds.PageSize = 3;
-			Assert.AreEqual(ds.PageSize,3);
-
-			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
-			results = ds.FindAll();
-			// LAMESPEC : according to documentation there should be only 3 results !!!
-			Assert.AreEqual(results.Count,12);
-
-		}
-
-		[Test]
-		public void DirectorySearcher_PropertiesToLoad()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
-
-			ds.PropertiesToLoad.Add("cn");
-			ds.PropertiesToLoad.Add("ADsPath");
-			ds.PropertiesToLoad.Add("objectClass");
-
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("ADsPath"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
-
-			ds.Filter = "(objectClass=person)";
-			SearchResult result = ds.FindOne();
-
-			Assert.AreEqual(result.Properties.Count,3);
-			Assert.IsTrue(result.Properties.Contains("cn"));
-			Assert.IsTrue(result.Properties.Contains("objectClass"));
-			Assert.IsTrue(result.Properties.Contains("ADsPath"));
-
-		
-			ds.PropertiesToLoad.Clear();
-			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
-
-			ds.PropertiesToLoad.Add("cn");
-			ds.PropertiesToLoad.Add("objectClass");
-
-			Assert.AreEqual(ds.PropertiesToLoad.Count,2);
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
-
-			ds.Filter = "(objectClass=person)";
-			result = ds.FindOne();
-
-			Assert.AreEqual(result.Properties.Count,3);
-			Assert.IsTrue(result.Properties.Contains("cn"));
-			Assert.IsTrue(result.Properties.Contains("objectClass"));
-			Assert.IsTrue(result.Properties.Contains("ADsPath"));
-
-						
-			ds.PropertiesToLoad.Clear();
-			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
-
-			ds.PropertiesToLoad.Add("cn");
-			ds.PropertiesToLoad.Add("dn");
-			ds.PropertiesToLoad.Add("objectClass");
-
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("dn"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
-
-			ds.Filter = "(objectClass=person)";
-			result = ds.FindOne();
-
-			Assert.AreEqual(result.Properties.Count,3);
-			Assert.IsTrue(result.Properties.Contains("cn"));
-			Assert.IsTrue(result.Properties.Contains("objectClass"));
-			// FIXME : .NET framework threats "dn" as "ADsPath"
-			// More on http://www.rlmueller.net/Name_Attributes.htm
-			Assert.IsTrue(result.Properties.Contains("ADsPath"));
-		}
-
-		[Test]
-		public void DirectorySearcher_PropertyNamesOnly()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.PropertyNamesOnly,false);
-
-			// All rpoperties are loaded without values, except "ADsPath"
-			ds.PropertyNamesOnly = true;
-
-			ds.Filter = "(objectClass=person)";
-			SearchResult result = ds.FindOne();
-
-			foreach(DictionaryEntry en in result.Properties) {
-				if(String.Compare((string)en.Key,"adspath",true) != 0) {
-					Assert.AreEqual(((ResultPropertyValueCollection)en.Value).Count,0);
-				}
-				else {
-					Assert.AreEqual(((ResultPropertyValueCollection)en.Value).Count,1);
-				}				
-			}
-
-
-			// all properties are loaded including values
-			ds.PropertyNamesOnly = false;
-
-			ds.Filter = "(objectClass=person)";
-			result = ds.FindOne();
-
-			foreach(DictionaryEntry en in result.Properties) {
-				Assert.IsTrue(((ResultPropertyValueCollection)en.Value).Count > 0);
-			}
-		}
-
-		[Test]
-		public void DirectorySearcher_ReferralChasing()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.External);
-
-			ds.ReferralChasing = ReferralChasingOption.All;
-			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.All);
-
-			ds.ReferralChasing = ReferralChasingOption.External;
-			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.External);
-
-			ds.ReferralChasing = ReferralChasingOption.None;
-			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.None);
-
-			ds.ReferralChasing = ReferralChasingOption.Subordinate;
-			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.Subordinate);
-
-			// FIXME : currently we do not have an infrastucture for good testing of this feature
-		}
-
-		[Test]
-		public void DirectorySearcher_SearchRoot()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher();
-			ds.SearchRoot = de;
-
-			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
-
-			ds.Filter = "(objectClass=person)";
-			SearchResultCollection results = ds.FindAll();
-			Assert.AreEqual(results.Count,8);
-
-			de = new DirectoryEntry(configuration.ServerRoot + "ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds.SearchRoot = de;
-			Assert.AreEqual(ds.SearchRoot.Name,"ou=people");
-
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,7);
-
-			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds.SearchRoot = de;
-			Assert.AreEqual(ds.SearchRoot.Name,"ou=Human Resources");
-
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,1);
-		}
-
-		[Test]
-		public void DirectorySearcher_SearchScope()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-			
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-
-			ds.SearchScope = SearchScope.Base;
-			Assert.AreEqual(ds.SearchScope,SearchScope.Base);
-
-			ds.Filter = "(objectClass=organizationalUnit)";
-			SearchResultCollection results = ds.FindAll();
-			Assert.AreEqual(results.Count,0);
-
-			ds.SearchScope = SearchScope.OneLevel;
-			Assert.AreEqual(ds.SearchScope,SearchScope.OneLevel);
-
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,1);
-
-			ds.SearchScope = SearchScope.Subtree;
-			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
-
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,4);
-		}
-
-		[Test]
-		public void DirectorySearcher_ServerPageTimeLimit()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.ServerPageTimeLimit,new TimeSpan(-10000000));
-
-			// According to spec PageSize should be set to a value that is not the default of -1
-			ds.PageSize = 5;
-			ds.ServerPageTimeLimit = new TimeSpan(500000000);
-			Assert.AreEqual(ds.ServerPageTimeLimit,new TimeSpan(500000000));
-
-			ds.ServerPageTimeLimit = TimeSpan.MaxValue;
-			Assert.AreEqual(ds.ServerPageTimeLimit,TimeSpan.MaxValue);
-
-			ds.ServerPageTimeLimit = TimeSpan.MinValue;
-			Assert.AreEqual(ds.ServerPageTimeLimit,TimeSpan.MinValue);
-
-			// FIXME : currently we do not have an infrastucture for good testing of this feature
-		}
-
-		[Test]
-		public void DirectorySearcher_ServerTimeLimit()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.ServerTimeLimit,new TimeSpan(-10000000));
-
-			// According to spec PageSize should be set to a value that is not the default of -1
-			ds.PageSize = 5;
-			ds.ServerTimeLimit = new TimeSpan(500000000);
-			Assert.AreEqual(ds.ServerTimeLimit,new TimeSpan(500000000));
-
-			ds.ServerTimeLimit = TimeSpan.MaxValue;
-			Assert.AreEqual(ds.ServerTimeLimit,TimeSpan.MaxValue);
-
-			ds.ServerTimeLimit = TimeSpan.MinValue;
-			Assert.AreEqual(ds.ServerTimeLimit,TimeSpan.MinValue);
-
-			// FIXME : currently we do not have an infrastucture for good testing of this feature
-		}
-
-		[Test]
-		public void DirectorySearcher_SizeLimit()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			Assert.AreEqual(ds.SizeLimit,0);
-			
-			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
-			SearchResultCollection results = ds.FindAll();
-			Assert.AreEqual(results.Count,12);
-
-			ds.SizeLimit = 3;
-			Assert.AreEqual(ds.SizeLimit,3);
-
-			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,3);
-
-			ds.SizeLimit = Int32.MaxValue;
-			Assert.AreEqual(ds.SizeLimit,Int32.MaxValue);
-
-			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,12);
-
-		}
-
-		[Test]
-		[ExpectedException(typeof(ArgumentException))]
-		public void DirectorySearcher_SizeLimit_Neg()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-			ds.SizeLimit = -1;
-			Assert.AreEqual(ds.SizeLimit,-1);
-
-			SearchResultCollection results = ds.FindAll();
-		}
-
-		[Test]
-		public void DirectorySearcher_Sort()
-		{
-			// FIXME : howto create good sorting
-		}
-
-		[Test]
-		public void DirectorySearcher_FindAll()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			ds.Filter = "(objectClass=person)";
-			SearchResultCollection results = ds.FindAll();
-			Assert.AreEqual(results.Count,8);
-
-			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			results = ds.FindAll();
-			Assert.AreEqual(results.Count,3);
-		}
-
-		[Test]
-		public void DirectorySearcher_FindOne()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			ds.Filter = "(objectClass=person)";
-			SearchResult result = ds.FindOne();
-			Assert.IsNotNull(result);
-			Assert.AreEqual(result.GetDirectoryEntry().Name,"cn=Barak Tsabari");
-			
-
-			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			result = ds.FindOne();
-			Assert.IsNotNull(result);
-			Assert.AreEqual(result.GetDirectoryEntry().Name,"ou=Human Resources");
-
-			ds.Filter = "(objectClass=Barak Tsabari)";
-			result = ds.FindOne();
-			Assert.IsNull(result);
-		}
-
-
-		#endregion Tests
-
-		private static string GetName (string baseDn)
-		{
-			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
-				return baseDn;
-
-			int index = baseDn.IndexOf (',');
-
-			return baseDn.Substring (0, index);
-		}
-
-		private static string GetParentDN (string baseDn)
-		{
-			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
-				return String.Empty;
-
-			int index = baseDn.IndexOf (',');
-
-			return baseDn.Substring (index + 1,baseDn.Length - index - 1);
-		}
-	}
-}
-
+//
+// DirectoryServicesDirectorySearcherTest.cs -
+//	NUnit Test Cases for DirectoryServices.DirectorySearcher
+//
+// Author:
+//	Boris Kirzner  <borisk@mainsoft.com>
+//
+using NUnit.Framework;
+using System;
+using System.DirectoryServices;
+using System.Collections;
+
+using System.Threading;
+
+namespace MonoTests.System.DirectoryServices 
+{
+	[TestFixture]
+	[Category ("InetAccess")]
+	public class DirectoryServicesDirectorySearcherTest
+	{
+		#region Fields
+
+		static TestConfiguration configuration;
+		static DirectoryEntry de;
+		static DirectorySearcher ds;
+
+		#endregion // Fields
+
+		#region SetUp and TearDown
+
+		[TestFixtureSetUp]
+		public void TestFixtureSetUp()
+		{
+			de = null;			
+			configuration = new TestConfiguration ();
+		}
+
+
+		[TestFixtureTearDown]
+		public void TestFixtureTearDown()
+		{
+			if (ds != null)
+				ds.Dispose ();
+			
+			ds = null;
+			
+			if (de != null)
+				de.Dispose ();
+
+			de = null;
+		}
+
+
+		[SetUp]
+		public void SetUp()
+		{
+			TearDown();
+
+			#region Initialize basics
+
+			DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType);
+
+			DirectoryEntry ouPeople = root.Children.Add("ou=people","Class");
+			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
+			ouPeople.Properties["description"].Value = "All people in organisation";
+			ouPeople.Properties["ou"].Value = "people";
+			ouPeople.CommitChanges();
+
+			#endregion // Initialize basics
+
+			#region Human Resources
+ 
+			DirectoryEntry ouHumanResources = ouPeople.Children.Add("ou=Human Resources","Class");
+			ouHumanResources.Properties["objectClass"].Value = "organizationalUnit";
+			ouHumanResources.Properties["ou"].Value = "Human Resources";
+			ouHumanResources.CommitChanges();
+
+			DirectoryEntry cnJohnSmith = ouHumanResources.Children.Add("cn=John Smith","Class");
+			cnJohnSmith.Properties["objectClass"].Value = "organizationalRole";
+			cnJohnSmith.Properties["cn"].Value = "John Smith";
+			cnJohnSmith.Properties["description"].Value = "Very clever person";
+			cnJohnSmith.Properties["ou"].Value = "Human Resources";
+			cnJohnSmith.Properties["telephoneNumber"].Value = "1 801 555 1212";
+			cnJohnSmith.CommitChanges();
+
+			DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
+			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
+			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
+			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
+			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
+			cnBarakTsabari.CommitChanges();
+
+			#endregion // Human Resources
+
+			#region R&D
+
+			DirectoryEntry ouRnD = ouPeople.Children.Add("ou=R&D","Class");
+			ouRnD.Properties["objectClass"].Value = "organizationalUnit";
+			ouRnD.Properties["ou"].Value = "R&D";
+			ouRnD.CommitChanges();
+
+			DirectoryEntry cnYossiCohen = ouRnD.Children.Add("cn=Yossi Cohen","Class");
+			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnYossiCohen.Properties["cn"].Value = "Yossi Cohen";
+			cnYossiCohen.Properties["facsimileTelephoneNumber"].Value = "+1 503 777 4498";
+			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("People");
+			cnYossiCohen.Properties["sn"].Value = "Cohen";
+			cnYossiCohen.Properties["telephoneNumber"].Value = "+1 503 777 4499";
+			cnYossiCohen.CommitChanges();
+
+			DirectoryEntry cnUziCohen = ouRnD.Children.Add("cn=Uzi Cohen","Class");
+			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnUziCohen.Properties["cn"].Value = "Uzi Cohen";
+			cnUziCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
+			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("People");
+			cnUziCohen.Properties["sn"].Value = "Cohen";
+			cnUziCohen.Properties["telephoneNumber"].Value = "+1 602 333 1233";
+			cnUziCohen.CommitChanges();
+
+			DirectoryEntry cnDanielCohen = ouRnD.Children.Add("cn=Daniel Cohen","Class");
+			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielCohen.Properties["cn"].Value = "Daniel Cohen";
+			cnDanielCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1235";
+			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("People");
+			cnDanielCohen.Properties["sn"].Value = "Cohen";
+			cnDanielCohen.Properties["telephoneNumber"].Value = "+1 602 333 1236";
+			cnDanielCohen.CommitChanges();
+
+			DirectoryEntry cnSaraCohen = ouRnD.Children.Add("cn=Sara Cohen","Class");
+			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnSaraCohen.Properties["cn"].Value = "Sara Cohen";
+			cnSaraCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1244";
+			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("People");
+			cnSaraCohen.Properties["sn"].Value = "Cohen";
+			cnSaraCohen.Properties["telephoneNumber"].Value = "+1 602 333 1243";
+			cnSaraCohen.CommitChanges();
+
+			#endregion // R&D
+
+			#region DevQA
+
+			DirectoryEntry ouDevQA = ouPeople.Children.Add("ou=DevQA","Class");
+			ouDevQA.Properties["objectClass"].Value = "organizationalUnit";
+			ouDevQA.Properties["ou"].Value = "DevQA";
+			ouDevQA.CommitChanges();
+
+			DirectoryEntry cnDanielSmith = ouDevQA.Children.Add("cn=Daniel Smith","Class");
+			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielSmith.Properties["cn"].Value = "Daniel Smith";
+			cnDanielSmith.Properties["facsimileTelephoneNumber"].Value = "+1 408 555 3372";
+			cnDanielSmith.Properties["l"].Value = "Santa Clara";
+			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("DevQA");
+			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("People");
+			cnDanielSmith.Properties["sn"].Value = "Smith";
+			cnDanielSmith.Properties["telephoneNumber"].Value = "+1 408 555 9519";
+			cnDanielSmith.CommitChanges();
+
+			DirectoryEntry cnDanielMorgan = ouDevQA.Children.Add("cn=Daniel Morgan","Class");
+			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielMorgan.Properties["cn"].Value = "Daniel Morgan";
+			cnDanielMorgan.Properties["facsimileTelephoneNumber"].Value = "+1 805 666 5645";
+			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("DevQA");
+			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("People");
+			cnDanielMorgan.Properties["sn"].Value = "Morgan";
+			cnDanielMorgan.Properties["telephoneNumber"].Value = "+1 805 666 5644";
+			cnDanielMorgan.CommitChanges();
+
+			#endregion // DevQA
+
+			#region Manager
+
+			DirectoryEntry cnManager = root.Children.Add("cn=Manager","Class");
+			cnManager.Properties["objectClass"].Value = "organizationalRole";
+			cnManager.Properties["cn"].Value = "Manager";
+			cnManager.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1238";
+			cnManager.CommitChanges();
+
+			DirectoryEntry cnUziCohen_ = cnManager.Children.Add("cn=Uzi Cohen","Class");
+			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("organizationalPerson");
+			cnUziCohen_.Properties["cn"].Value = "Uzi Cohen";
+			cnUziCohen_.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
+			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("People");
+			cnUziCohen_.Properties["sn"].Value = "Cohen";
+			cnUziCohen_.Properties["telephoneNumber"].Value = "+1 602 333 1233";
+			cnUziCohen_.CommitChanges();
+
+			#endregion // Manager
+
+			cnJohnSmith.Dispose();
+			cnBarakTsabari.Dispose();
+			ouHumanResources.Dispose();
+			cnUziCohen.Dispose();
+			cnYossiCohen.Dispose();
+			cnDanielCohen.Dispose();
+			cnSaraCohen.Dispose();
+			ouRnD.Dispose();
+			cnDanielSmith.Dispose();
+			cnDanielMorgan.Dispose();
+			ouDevQA.Dispose();
+			cnUziCohen_.Dispose();
+			cnManager.Dispose();
+			ouPeople.Dispose();
+			root.Dispose();
+		}
+
+
+		[TearDown]
+		public void TearDown()
+		{
+			if (ds != null)
+				ds.Dispose ();
+			
+			ds = null;
+			
+			if (de != null)
+				de.Dispose ();
+
+			de = null;
+
+			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
+													configuration.Username,
+													configuration.Password,
+													configuration.AuthenticationType)){
+			
+			foreach(DirectoryEntry child in root.Children) {
+				DeleteTree_DFS(child);
+			}
+			}
+		}
+
+
+		private void DeleteTree_DFS(DirectoryEntry de)
+		{
+			foreach(DirectoryEntry child in de.Children) {
+				DeleteTree_DFS(child);
+			}
+			de.DeleteTree();
+			de.CommitChanges();
+		}
+
+		#endregion //SetUp and TearDown
+
+		#region Tests
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher()
+		{
+			ds = new DirectorySearcher();
+
+			Assert.AreEqual(ds.Filter,"(objectClass=*)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher_De()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
+			Assert.AreEqual(ds.Filter,"(objectClass=*)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher_Str()
+		{
+			ds = new DirectorySearcher("(objectClass=organizationalRole)");
+
+			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher_DeStr()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			ds = new DirectorySearcher(de,"(objectClass=organizationalRole)");
+
+			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
+			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher_StrStrArr()
+		{
+			string[] properties = new string[] {"objectClass","ou","cn"};
+			ds = new DirectorySearcher("(objectClass=organizationalRole)",properties);
+
+			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			foreach(string s in properties) {
+				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
+			}
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher_DeStrStrArr()
+		{
+			string[] properties = new string[] {"objectClass","ou","cn"};
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			ds = new DirectorySearcher(de,"(objectClass=organizationalRole)",properties);
+
+			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
+			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			foreach(string s in properties) {
+				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
+			}
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher_StrStrArrScp()
+		{
+			string[] properties = new string[] {"objectClass","ou","cn"};
+			ds = new DirectorySearcher("(objectClass=organizationalRole)",properties,SearchScope.Base);
+
+			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			foreach(string s in properties) {
+				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
+			}
+			Assert.AreEqual(ds.SearchScope,SearchScope.Base);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_DirectorySearcher_DeStrStrArrScp()
+		{
+			string[] properties = new string[] {"objectClass","ou","cn"};
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			ds = new DirectorySearcher(de,"(objectClass=organizationalRole)",properties,SearchScope.Base);
+
+			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
+			Assert.AreEqual(ds.Filter,"(objectClass=organizationalRole)");
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			foreach(string s in properties) {
+				Assert.IsTrue(ds.PropertiesToLoad.Contains(s));
+			}
+			Assert.AreEqual(ds.SearchScope,SearchScope.Base);
+			Assert.AreEqual(ds.CacheResults,true);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+		}
+
+		[Test]
+		public void DirectorySearcher_CacheResults()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			ds = new DirectorySearcher(de,"(cn=Barak Tsabari)");
+			ds.CacheResults = true;
+
+			string oldValue;
+			string newValue = "New Description";
+
+			SearchResult result = ds.FindOne();
+			SearchResult secondResult;
+			using (DirectoryEntry resultDE = result.GetDirectoryEntry()){
+
+			oldValue = (string)((PropertyValueCollection)resultDE.Properties["description"]).Value;
+			((PropertyValueCollection)resultDE.Properties["description"]).Value = newValue;
+			Assert.AreEqual(((PropertyValueCollection)resultDE.Properties["description"]).Value,newValue);
+
+			using (DirectorySearcher secondDs = new DirectorySearcher(de,"(cn=Barak Tsabari)")){
+			secondResult = secondDs.FindOne();
+			using (DirectoryEntry secondResultDE = secondResult.GetDirectoryEntry()){
+
+			Assert.AreEqual(((PropertyValueCollection)secondResultDE.Properties["description"]).Value,oldValue);
+
+			((PropertyValueCollection)resultDE.Properties["description"]).Value = oldValue;
+			}
+			}
+			}
+			
+			ds = new DirectorySearcher(de,"(cn=Barak Tsabari)");
+			ds.CacheResults = false;
+			result = ds.FindOne();
+			using (DirectoryEntry resultDE = result.GetDirectoryEntry()){
+
+			((PropertyValueCollection)resultDE.Properties["description"]).Value = newValue;
+			Assert.AreEqual(((PropertyValueCollection)resultDE.Properties["description"]).Value,newValue);
+
+			using (DirectorySearcher secondDs = new DirectorySearcher(de,"(cn=Barak Tsabari)")){
+			secondResult = secondDs.FindOne();
+			using (DirectoryEntry secondResultDE = secondResult.GetDirectoryEntry()){
+
+			// LAMESPEC : according to documentation, the value retrieved should be the new one,
+			// but actually it is an old one
+			Assert.AreEqual(((PropertyValueCollection)secondResultDE.Properties["description"]).Value,oldValue);
+
+			((PropertyValueCollection)resultDE.Properties["description"]).Value = oldValue;	
+			}
+			}
+			}
+		}
+
+	
+		[Test]
+		public void DirectorySearcher_ClientTimeout()
+		{
+			ds = new DirectorySearcher();
+
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(-10000000));
+
+			ds.ClientTimeout = new TimeSpan(500000000);
+			Assert.AreEqual(ds.ClientTimeout,new TimeSpan(500000000));
+
+			ds.ClientTimeout = TimeSpan.MaxValue;
+			Assert.AreEqual(ds.ClientTimeout,TimeSpan.MaxValue);
+
+			ds.ClientTimeout = TimeSpan.MinValue;
+			Assert.AreEqual(ds.ClientTimeout,TimeSpan.MinValue);
+		}
+
+		[Test]
+		public void DirectorySearcher_Filter1()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+			
+			ds.Filter = "(objectClass=person)";
+			SearchResultCollection results = ds.FindAll();
+			Assert.AreEqual(results.Count,8);
+
+			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,12);
+
+			ds.Filter = "(&(objectClass=person)(objectClass=organizationalUnit))";
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,0);
+		}
+
+		[Test]
+		[Category("NotWorking")]
+		public void DirectorySearcher_Filter2()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+			
+			ds.Filter = "((objectClass=person))";
+			SearchResultCollection results = ds.FindAll();
+			Assert.AreEqual(results.Count,8);
+
+			ds.Filter = "(|(objectClass=person)((objectClass=organizationalUnit)))";
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,12);
+
+			ds.Filter = "(&((objectClass=person))(objectClass=organizationalUnit))";
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,0);
+		}
+
+
+		[Test]
+		public void DirectorySearcher_PageSize()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.PageSize,0);
+			
+			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
+			SearchResultCollection results = ds.FindAll();
+			Assert.AreEqual(results.Count,12);
+
+			ds.PageSize = 3;
+			Assert.AreEqual(ds.PageSize,3);
+
+			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
+			results = ds.FindAll();
+			// LAMESPEC : according to documentation there should be only 3 results !!!
+			Assert.AreEqual(results.Count,12);
+
+		}
+
+		[Test]
+		public void DirectorySearcher_PropertiesToLoad()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
+
+			ds.PropertiesToLoad.Add("cn");
+			ds.PropertiesToLoad.Add("ADsPath");
+			ds.PropertiesToLoad.Add("objectClass");
+
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("ADsPath"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
+
+			ds.Filter = "(objectClass=person)";
+			SearchResult result = ds.FindOne();
+
+			Assert.AreEqual(result.Properties.Count,3);
+			Assert.IsTrue(result.Properties.Contains("cn"));
+			Assert.IsTrue(result.Properties.Contains("objectClass"));
+			Assert.IsTrue(result.Properties.Contains("ADsPath"));
+
+		
+			ds.PropertiesToLoad.Clear();
+			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
+
+			ds.PropertiesToLoad.Add("cn");
+			ds.PropertiesToLoad.Add("objectClass");
+
+			Assert.AreEqual(ds.PropertiesToLoad.Count,2);
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
+
+			ds.Filter = "(objectClass=person)";
+			result = ds.FindOne();
+
+			Assert.AreEqual(result.Properties.Count,3);
+			Assert.IsTrue(result.Properties.Contains("cn"));
+			Assert.IsTrue(result.Properties.Contains("objectClass"));
+			Assert.IsTrue(result.Properties.Contains("ADsPath"));
+
+						
+			ds.PropertiesToLoad.Clear();
+			Assert.AreEqual(ds.PropertiesToLoad.Count,0);
+
+			ds.PropertiesToLoad.Add("cn");
+			ds.PropertiesToLoad.Add("dn");
+			ds.PropertiesToLoad.Add("objectClass");
+
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("dn"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
+
+			ds.Filter = "(objectClass=person)";
+			result = ds.FindOne();
+
+			Assert.AreEqual(result.Properties.Count,3);
+			Assert.IsTrue(result.Properties.Contains("cn"));
+			Assert.IsTrue(result.Properties.Contains("objectClass"));
+			// FIXME : .NET framework threats "dn" as "ADsPath"
+			// More on http://www.rlmueller.net/Name_Attributes.htm
+			Assert.IsTrue(result.Properties.Contains("ADsPath"));
+		}
+
+		[Test]
+		public void DirectorySearcher_PropertyNamesOnly()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.PropertyNamesOnly,false);
+
+			// All rpoperties are loaded without values, except "ADsPath"
+			ds.PropertyNamesOnly = true;
+
+			ds.Filter = "(objectClass=person)";
+			SearchResult result = ds.FindOne();
+
+			foreach(DictionaryEntry en in result.Properties) {
+				if(String.Compare((string)en.Key,"adspath",true) != 0) {
+					Assert.AreEqual(((ResultPropertyValueCollection)en.Value).Count,0);
+				}
+				else {
+					Assert.AreEqual(((ResultPropertyValueCollection)en.Value).Count,1);
+				}				
+			}
+
+
+			// all properties are loaded including values
+			ds.PropertyNamesOnly = false;
+
+			ds.Filter = "(objectClass=person)";
+			result = ds.FindOne();
+
+			foreach(DictionaryEntry en in result.Properties) {
+				Assert.IsTrue(((ResultPropertyValueCollection)en.Value).Count > 0);
+			}
+		}
+
+		[Test]
+		public void DirectorySearcher_ReferralChasing()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.External);
+
+			ds.ReferralChasing = ReferralChasingOption.All;
+			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.All);
+
+			ds.ReferralChasing = ReferralChasingOption.External;
+			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.External);
+
+			ds.ReferralChasing = ReferralChasingOption.None;
+			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.None);
+
+			ds.ReferralChasing = ReferralChasingOption.Subordinate;
+			Assert.AreEqual(ds.ReferralChasing,ReferralChasingOption.Subordinate);
+
+			// FIXME : currently we do not have an infrastucture for good testing of this feature
+		}
+
+		[Test]
+		public void DirectorySearcher_SearchRoot()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher();
+			ds.SearchRoot = de;
+
+			Assert.AreEqual(ds.SearchRoot.Name,GetName (configuration.BaseDn));
+
+			ds.Filter = "(objectClass=person)";
+			SearchResultCollection results = ds.FindAll();
+			Assert.AreEqual(results.Count,8);
+
+			de = new DirectoryEntry(configuration.ServerRoot + "ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds.SearchRoot = de;
+			Assert.AreEqual(ds.SearchRoot.Name,"ou=people");
+
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,7);
+
+			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds.SearchRoot = de;
+			Assert.AreEqual(ds.SearchRoot.Name,"ou=Human Resources");
+
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,1);
+		}
+
+		[Test]
+		public void DirectorySearcher_SearchScope()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+			
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+
+			ds.SearchScope = SearchScope.Base;
+			Assert.AreEqual(ds.SearchScope,SearchScope.Base);
+
+			ds.Filter = "(objectClass=organizationalUnit)";
+			SearchResultCollection results = ds.FindAll();
+			Assert.AreEqual(results.Count,0);
+
+			ds.SearchScope = SearchScope.OneLevel;
+			Assert.AreEqual(ds.SearchScope,SearchScope.OneLevel);
+
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,1);
+
+			ds.SearchScope = SearchScope.Subtree;
+			Assert.AreEqual(ds.SearchScope,SearchScope.Subtree);
+
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,4);
+		}
+
+		[Test]
+		public void DirectorySearcher_ServerPageTimeLimit()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.ServerPageTimeLimit,new TimeSpan(-10000000));
+
+			// According to spec PageSize should be set to a value that is not the default of -1
+			ds.PageSize = 5;
+			ds.ServerPageTimeLimit = new TimeSpan(500000000);
+			Assert.AreEqual(ds.ServerPageTimeLimit,new TimeSpan(500000000));
+
+			ds.ServerPageTimeLimit = TimeSpan.MaxValue;
+			Assert.AreEqual(ds.ServerPageTimeLimit,TimeSpan.MaxValue);
+
+			ds.ServerPageTimeLimit = TimeSpan.MinValue;
+			Assert.AreEqual(ds.ServerPageTimeLimit,TimeSpan.MinValue);
+
+			// FIXME : currently we do not have an infrastucture for good testing of this feature
+		}
+
+		[Test]
+		public void DirectorySearcher_ServerTimeLimit()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.ServerTimeLimit,new TimeSpan(-10000000));
+
+			// According to spec PageSize should be set to a value that is not the default of -1
+			ds.PageSize = 5;
+			ds.ServerTimeLimit = new TimeSpan(500000000);
+			Assert.AreEqual(ds.ServerTimeLimit,new TimeSpan(500000000));
+
+			ds.ServerTimeLimit = TimeSpan.MaxValue;
+			Assert.AreEqual(ds.ServerTimeLimit,TimeSpan.MaxValue);
+
+			ds.ServerTimeLimit = TimeSpan.MinValue;
+			Assert.AreEqual(ds.ServerTimeLimit,TimeSpan.MinValue);
+
+			// FIXME : currently we do not have an infrastucture for good testing of this feature
+		}
+
+		[Test]
+		public void DirectorySearcher_SizeLimit()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			Assert.AreEqual(ds.SizeLimit,0);
+			
+			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
+			SearchResultCollection results = ds.FindAll();
+			Assert.AreEqual(results.Count,12);
+
+			ds.SizeLimit = 3;
+			Assert.AreEqual(ds.SizeLimit,3);
+
+			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,3);
+
+			ds.SizeLimit = Int32.MaxValue;
+			Assert.AreEqual(ds.SizeLimit,Int32.MaxValue);
+
+			ds.Filter = "(|(objectClass=person)(objectClass=organizationalUnit))";
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,12);
+
+		}
+
+		[Test]
+		[ExpectedException(typeof(ArgumentException))]
+		public void DirectorySearcher_SizeLimit_Neg()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+			ds.SizeLimit = -1;
+			Assert.AreEqual(ds.SizeLimit,-1);
+
+			SearchResultCollection results = ds.FindAll();
+		}
+
+		[Test]
+		public void DirectorySearcher_Sort()
+		{
+			// FIXME : howto create good sorting
+		}
+
+		[Test]
+		public void DirectorySearcher_FindAll()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			ds.Filter = "(objectClass=person)";
+			SearchResultCollection results = ds.FindAll();
+			Assert.AreEqual(results.Count,8);
+
+			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			results = ds.FindAll();
+			Assert.AreEqual(results.Count,3);
+		}
+
+		[Test]
+		public void DirectorySearcher_FindOne()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			ds.Filter = "(objectClass=person)";
+			SearchResult result = ds.FindOne();
+			Assert.IsNotNull(result);
+			Assert.AreEqual(result.GetDirectoryEntry().Name,"cn=Barak Tsabari");
+			
+
+			de = new DirectoryEntry(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn)),
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			result = ds.FindOne();
+			Assert.IsNotNull(result);
+			Assert.AreEqual(result.GetDirectoryEntry().Name,"ou=Human Resources");
+
+			ds.Filter = "(objectClass=Barak Tsabari)";
+			result = ds.FindOne();
+			Assert.IsNull(result);
+		}
+
+
+		#endregion Tests
+
+		private static string GetName (string baseDn)
+		{
+			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
+				return baseDn;
+
+			int index = baseDn.IndexOf (',');
+
+			return baseDn.Substring (0, index);
+		}
+
+		private static string GetParentDN (string baseDn)
+		{
+			if (baseDn == null || baseDn.Length == 0 || baseDn.IndexOf (',') == -1)
+				return String.Empty;
+
+			int index = baseDn.IndexOf (',');
+
+			return baseDn.Substring (index + 1,baseDn.Length - index - 1);
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesPermissionAttributeTest.cs
@@ -1,151 +1,151 @@
-//
-// DirectoryServicesPermissionAttributeTest.cs -
-//	NUnit Test Cases for DirectoryServicesPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.DirectoryServices;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.DirectoryServices {
-
-	[TestFixture]
-	public class DirectoryServicesPermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.AreEqual ("*", a.Path, "Path");
-			Assert.AreEqual (DirectoryServicesPermissionAccess.Browse, a.PermissionAccess, "PermissionAccess");
-
-			DirectoryServicesPermission sp = (DirectoryServicesPermission)a.CreatePermission ();
-			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
-			a.Unrestricted = true;
-			DirectoryServicesPermission wp = (DirectoryServicesPermission)a.CreatePermission ();
-			Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
-			Assert.AreEqual ("*", a.Path, "Path");
-			Assert.AreEqual (DirectoryServicesPermissionAccess.Browse, a.PermissionAccess, "PermissionAccess");
-
-			a.Unrestricted = false;
-			wp = (DirectoryServicesPermission)a.CreatePermission ();
-			Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void Path_Null ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
-			a.Path = null;
-		}
-
-		[Test]
-		public void Path ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
-			a.Path = String.Empty;
-			Assert.AreEqual (String.Empty, a.Path, "Empty");
-		}
-
-		[Test]
-		public void PermissionAccess ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = DirectoryServicesPermissionAccess.None;
-			Assert.AreEqual (DirectoryServicesPermissionAccess.None, a.PermissionAccess, "None");
-			a.PermissionAccess = DirectoryServicesPermissionAccess.Browse;
-			Assert.AreEqual (DirectoryServicesPermissionAccess.Browse, a.PermissionAccess, "Browse");
-			a.PermissionAccess = DirectoryServicesPermissionAccess.Write;
-			Assert.AreEqual (DirectoryServicesPermissionAccess.Write, a.PermissionAccess, "Write");
-		}
-
-		[Test]
-		public void PermissionAccess_Invalid ()
-		{
-			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = (DirectoryServicesPermissionAccess)Int32.MinValue;
-			Assert.AreEqual ((DirectoryServicesPermissionAccess)Int32.MinValue, a.PermissionAccess, "None");
-			// no exception thrown
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (DirectoryServicesPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event;
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
+//
+// DirectoryServicesPermissionAttributeTest.cs -
+//	NUnit Test Cases for DirectoryServicesPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.DirectoryServices;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.DirectoryServices {
+
+	[TestFixture]
+	public class DirectoryServicesPermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.AreEqual ("*", a.Path, "Path");
+			Assert.AreEqual (DirectoryServicesPermissionAccess.Browse, a.PermissionAccess, "PermissionAccess");
+
+			DirectoryServicesPermission sp = (DirectoryServicesPermission)a.CreatePermission ();
+			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
+			a.Unrestricted = true;
+			DirectoryServicesPermission wp = (DirectoryServicesPermission)a.CreatePermission ();
+			Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
+			Assert.AreEqual ("*", a.Path, "Path");
+			Assert.AreEqual (DirectoryServicesPermissionAccess.Browse, a.PermissionAccess, "PermissionAccess");
+
+			a.Unrestricted = false;
+			wp = (DirectoryServicesPermission)a.CreatePermission ();
+			Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void Path_Null ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
+			a.Path = null;
+		}
+
+		[Test]
+		public void Path ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
+			a.Path = String.Empty;
+			Assert.AreEqual (String.Empty, a.Path, "Empty");
+		}
+
+		[Test]
+		public void PermissionAccess ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = DirectoryServicesPermissionAccess.None;
+			Assert.AreEqual (DirectoryServicesPermissionAccess.None, a.PermissionAccess, "None");
+			a.PermissionAccess = DirectoryServicesPermissionAccess.Browse;
+			Assert.AreEqual (DirectoryServicesPermissionAccess.Browse, a.PermissionAccess, "Browse");
+			a.PermissionAccess = DirectoryServicesPermissionAccess.Write;
+			Assert.AreEqual (DirectoryServicesPermissionAccess.Write, a.PermissionAccess, "Write");
+		}
+
+		[Test]
+		public void PermissionAccess_Invalid ()
+		{
+			DirectoryServicesPermissionAttribute a = new DirectoryServicesPermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = (DirectoryServicesPermissionAccess)Int32.MinValue;
+			Assert.AreEqual ((DirectoryServicesPermissionAccess)Int32.MinValue, a.PermissionAccess, "None");
+			// no exception thrown
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (DirectoryServicesPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event;
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesPermissionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesPermissionTest.cs
@@ -1,393 +1,393 @@
-//
-// DirectoryServicesPermissionTest.cs -
-//	NUnit Test Cases for DirectoryServicesPermission
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.DirectoryServices;
-using System.Security;
-using System.Security.Permissions;
-
-using System.Diagnostics;
-
-namespace MonoTests.System.DirectoryServices {
-
-	[TestFixture]
-	public class DirectoryServicesPermissionTest {
-
-		static DirectoryServicesPermissionAccess[] AllAccess = {
-			DirectoryServicesPermissionAccess.None,
-			DirectoryServicesPermissionAccess.Browse,
-			DirectoryServicesPermissionAccess.Write,
-			DirectoryServicesPermissionAccess.Browse | DirectoryServicesPermissionAccess.Write,
-		};
-
-		[Test]
-		public void PermissionState_None ()
-		{
-			PermissionState ps = PermissionState.None;
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (ps);
-			Assert.AreEqual (0, dsp.PermissionEntries.Count, "PermissionEntries");
-			Assert.IsFalse (dsp.IsUnrestricted (), "IsUnrestricted");
-
-			SecurityElement se = dsp.ToXml ();
-			// only class and version are present
-			Assert.AreEqual (2, se.Attributes.Count, "Xml-Attributes");
-			Assert.IsNull (se.Children, "Xml-Children");
-
-			DirectoryServicesPermission copy = (DirectoryServicesPermission)dsp.Copy ();
-			Assert.IsFalse (Object.ReferenceEquals (dsp, copy), "ReferenceEquals");
-			Assert.AreEqual (dsp.PermissionEntries.Count, copy.PermissionEntries.Count, "copy-PermissionEntries");
-			Assert.AreEqual (dsp.IsUnrestricted (), copy.IsUnrestricted (), "IsUnrestricted ()");
-		}
-
-		[Test]
-		public void PermissionState_Unrestricted ()
-		{
-			PermissionState ps = PermissionState.Unrestricted;
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (ps);
-			Assert.AreEqual (0, dsp.PermissionEntries.Count, "PermissionEntries");
-			Assert.IsTrue (dsp.IsUnrestricted (), "IsUnrestricted");
-
-			SecurityElement se = dsp.ToXml ();
-			// only class and version are present
-			Assert.AreEqual ("true", se.Attribute ("Unrestricted"), "Xml-Unrestricted");
-			Assert.IsNull (se.Children, "Xml-Children");
-
-			DirectoryServicesPermission copy = (DirectoryServicesPermission)dsp.Copy ();
-			Assert.IsFalse (Object.ReferenceEquals (dsp, copy), "ReferenceEquals");
-			Assert.AreEqual (dsp.PermissionEntries.Count, copy.PermissionEntries.Count, "copy-PermissionEntries");
-			Assert.AreEqual (dsp.IsUnrestricted (), copy.IsUnrestricted (), "copy-IsUnrestricted ()");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void PermissionState_Bad ()
-		{
-			PermissionState ps = (PermissionState)77;
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (ps);
-			Assert.IsFalse (dsp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void DirectoryServicesPermissionAccesss_Bad ()
-		{
-			DirectoryServicesPermissionAccess dspa = (DirectoryServicesPermissionAccess) Int32.MinValue;
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (dspa, String.Empty);
-			Assert.AreEqual (1, dsp.PermissionEntries.Count, "Count");
-			Assert.AreEqual ((DirectoryServicesPermissionAccess)Int32.MinValue, dsp.PermissionEntries [0].PermissionAccess, "PermissionAccess");
-			Assert.AreEqual (String.Empty, dsp.PermissionEntries [0].Path, "Path");
-		}
-
-		[Test]
-		public void PermissionEntries () 
-		{
-			DirectoryServicesPermissionAccess dspa = DirectoryServicesPermissionAccess.None;
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (dspa, String.Empty);
-			DirectoryServicesPermissionEntryCollection dspec = dsp.PermissionEntries;
-			Assert.AreEqual (1, dspec.Count, "Count==1");
-
-			DirectoryServicesPermissionEntry dspe = new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.Browse, "*");
-			dsp.PermissionEntries.Add (dspe);
-			Assert.AreEqual (2, dspec.Count, "Count==2");
-
-			// remove (same instance)
-			dsp.PermissionEntries.Remove (dspe);
-			Assert.AreEqual (1, dspec.Count, "Count==1 (b)");
-
-			// remove different instance (doesn't work)
-			dspe = new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty);
-			Assert.AreEqual (1, dspec.Count, "Count==1");
-		}
-
-		[Test]
-		public void Copy ()
-		{
-			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
-				DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-				DirectoryServicesPermissionEntry dspe = new DirectoryServicesPermissionEntry (ppl, ppl.ToString ());
-				dsp.PermissionEntries.Add (dspe);
-				DirectoryServicesPermission copy = (DirectoryServicesPermission)dsp.Copy ();
-				Assert.AreEqual (1, copy.PermissionEntries.Count, "Count==1");
-				Assert.AreEqual (ppl, dsp.PermissionEntries [0].PermissionAccess, ppl.ToString ());
-				Assert.AreEqual (ppl.ToString (), dsp.PermissionEntries [0].Path, ppl.ToString () + "-Path");
-			}
-		}
-
-		[Test]
-		public void Intersect_Null ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			// No intersection with null
-			Assert.IsNull (dsp.Intersect (null), "None N null");
-		}
-
-		[Test]
-		public void Intersect_None ()
-		{
-			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.None);
-			DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
-			// 1. None N None
-			DirectoryServicesPermission result = (DirectoryServicesPermission) dsp1.Intersect (dsp2);
-			Assert.IsNull (result, "Empty N Empty");
-			// 2. None N Entry
-			dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
-			result = (DirectoryServicesPermission) dsp1.Intersect (dsp2);
-			Assert.IsNull (result, "Empty N Entry");
-			// 3. Entry N None
-			result = (DirectoryServicesPermission) dsp2.Intersect (dsp1);
-			Assert.IsNull (result, "Entry N Empty");
-		}
-
-		[Test]
-		public void Intersect_Unrestricted ()
-		{
-			// Intersection with unrestricted == Copy
-			// a. source (this) is unrestricted
-			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.Unrestricted);
-			DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
-
-			// 1. Unrestricted N None
-			DirectoryServicesPermission result = (DirectoryServicesPermission) dsp1.Intersect (dsp2);
-			Assert.IsFalse (result.IsUnrestricted (), "(Unrestricted N None).IsUnrestricted");
-			Assert.AreEqual (0, result.PermissionEntries.Count, "(Unrestricted N None).Count");
-
-			// 2. None N Unrestricted
-			result = (DirectoryServicesPermission) dsp2.Intersect (dsp1);
-			Assert.IsFalse (result.IsUnrestricted (), "(None N Unrestricted).IsUnrestricted");
-			Assert.AreEqual (0, result.PermissionEntries.Count, "(None N Unrestricted).Count");
-
-			// 3. Unrestricted N Unrestricted
-			result = (DirectoryServicesPermission) dsp1.Intersect (dsp1);
-			Assert.IsTrue (result.IsUnrestricted (), "(Unrestricted N Unrestricted).IsUnrestricted");
-			Assert.AreEqual (0, result.PermissionEntries.Count, "(Unrestricted N Unrestricted).Count");
-
-			// 4. Unrestricted N Entry
-			dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
-			result = (DirectoryServicesPermission)dsp1.Intersect (dsp2);
-			Assert.IsFalse (result.IsUnrestricted (), "(Unrestricted N Entry).IsUnrestricted");
-			Assert.AreEqual (1, result.PermissionEntries.Count, "(Unrestricted N Entry).Count");
-
-			// 5. Entry N Unrestricted
-			result = (DirectoryServicesPermission)dsp2.Intersect (dsp1);
-			Assert.IsFalse (result.IsUnrestricted (), "(Entry N Unrestricted).IsUnrestricted");
-			Assert.AreEqual (1, result.PermissionEntries.Count, "(Entry N Unrestricted).Count");
-
-			// 6. Unrestricted N Unrestricted
-			dsp1.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
-			result = (DirectoryServicesPermission)dsp1.Intersect (dsp1);
-			Assert.IsTrue (result.IsUnrestricted (), "(Unrestricted N Unrestricted).IsUnrestricted");
-			Assert.AreEqual (1, result.PermissionEntries.Count, "(Unrestricted N Unrestricted).Count");
-		}
-
-		[Test]
-		public void IsSubset_Null ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			Assert.IsTrue (dsp.IsSubsetOf (null), "null");
-		}
-
-		[Test]
-		public void IsSubset_None ()
-		{
-			// IsSubset with none
-			// a. source (this) is none -> target is never a subset
-			// b. destination (target) is none -> target is always a subset
-			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.None);
-			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
-				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
-				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
-				Assert.IsTrue (dsp1.IsSubsetOf (dsp2), "target " + ppl.ToString ());
-				Assert.IsFalse (dsp2.IsSubsetOf (dsp1), "source " + ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void IsSubset_Self ()
-		{
-			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
-				DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-				dsp.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
-				Assert.IsTrue (dsp.IsSubsetOf (dsp), ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void IsSubset_Unrestricted ()
-		{
-			// IsSubset with unrestricted
-			// a. source (this) is unrestricted -> target is never a subset
-			// b. destination (target) is unrestricted -> source is always a subset
-			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.Unrestricted);
-			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
-				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
-				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
-				Assert.IsFalse (dsp1.IsSubsetOf (dsp2), "target " + ppl.ToString ());
-				Assert.IsTrue (dsp2.IsSubsetOf (dsp1), "source " + ppl.ToString ());
-			}
-			Assert.IsTrue (dsp1.IsSubsetOf (dsp1), "Unrestricted.IsSubsetOf(Unrestricted)");
-		}
-
-		[Test]
-		public void Union_Null ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			dsp.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
-			// Union with null is a simple copy
-			DirectoryServicesPermission union = (DirectoryServicesPermission)dsp.Union (null);
-			Assert.IsNotNull (dsp.PermissionEntries.Count, "Count");
-		}
-
-		[Test]
-		public void Union_None ()
-		{
-			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.None);
-			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
-				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
-				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
-				DirectoryServicesPermission union = (DirectoryServicesPermission) dsp1.Union (dsp2);
-				Assert.IsFalse (union.IsUnrestricted (), "target.IsUnrestricted " + ppl.ToString ());
-				Assert.AreEqual (1, union.PermissionEntries.Count, "target.Count " + ppl.ToString ());
-
-				union = (DirectoryServicesPermission) dsp2.Union (dsp1);
-				Assert.IsFalse (union.IsUnrestricted (), "source.IsUnrestricted " + ppl.ToString ());
-				Assert.AreEqual (1, union.PermissionEntries.Count, "source.Count " + ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Union_Self ()
-		{
-			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
-				DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-				dsp.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
-				DirectoryServicesPermission union = (DirectoryServicesPermission)dsp.Union (dsp);
-				Assert.IsFalse (union.IsUnrestricted (), "IsUnrestricted " + ppl.ToString ());
-				Assert.AreEqual (1, union.PermissionEntries.Count, "Count " + ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Union_Unrestricted ()
-		{
-			// Union with unrestricted is unrestricted
-			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.Unrestricted);
-			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
-				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
-				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
-				DirectoryServicesPermission union = (DirectoryServicesPermission)dsp1.Union (dsp2);
-				Assert.IsTrue (union.IsUnrestricted (), "target.IsUnrestricted " + ppl.ToString ());
-				Assert.AreEqual (0, union.PermissionEntries.Count, "target.Count " + ppl.ToString ());
-
-				union = (DirectoryServicesPermission)dsp2.Union (dsp1);
-				Assert.IsTrue (union.IsUnrestricted (), "source.IsUnrestricted " + ppl.ToString ());
-				Assert.AreEqual (0, union.PermissionEntries.Count, "source.Count " + ppl.ToString ());
-			}
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void FromXml_Null ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			dsp.FromXml (null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_WrongTag ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			SecurityElement se = dsp.ToXml ();
-			se.Tag = "IMono";
-			dsp.FromXml (se);
-			// note: normally IPermission classes (in corlib) DO care about the
-			// IPermission tag
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_WrongTagCase ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			SecurityElement se = dsp.ToXml ();
-			se.Tag = "IPERMISSION"; // instead of IPermission
-			dsp.FromXml (se);
-			// note: normally IPermission classes (in corlib) DO care about the
-			// IPermission tag
-		}
-
-		[Test]
-		public void FromXml_WrongClass ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			SecurityElement se = dsp.ToXml ();
-
-			SecurityElement w = new SecurityElement (se.Tag);
-			w.AddAttribute ("class", "Wrong" + se.Attribute ("class"));
-			w.AddAttribute ("version", se.Attribute ("version"));
-			dsp.FromXml (w);
-			// doesn't care of the class name at that stage
-			// anyway the class has already be created so...
-		}
-
-		[Test]
-		public void FromXml_NoClass ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			SecurityElement se = dsp.ToXml ();
-
-			SecurityElement w = new SecurityElement (se.Tag);
-			w.AddAttribute ("version", se.Attribute ("version"));
-			dsp.FromXml (w);
-			// doesn't even care of the class attribute presence
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_WrongVersion ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			SecurityElement se = dsp.ToXml ();
-			se.Attributes.Remove ("version");
-			se.Attributes.Add ("version", "2");
-			dsp.FromXml (se);
-		}
-
-		[Test]
-		public void FromXml_NoVersion ()
-		{
-			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
-			SecurityElement se = dsp.ToXml ();
-
-			SecurityElement w = new SecurityElement (se.Tag);
-			w.AddAttribute ("class", se.Attribute ("class"));
-			dsp.FromXml (w);
-		}
-	}
-}
+//
+// DirectoryServicesPermissionTest.cs -
+//	NUnit Test Cases for DirectoryServicesPermission
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.DirectoryServices;
+using System.Security;
+using System.Security.Permissions;
+
+using System.Diagnostics;
+
+namespace MonoTests.System.DirectoryServices {
+
+	[TestFixture]
+	public class DirectoryServicesPermissionTest {
+
+		static DirectoryServicesPermissionAccess[] AllAccess = {
+			DirectoryServicesPermissionAccess.None,
+			DirectoryServicesPermissionAccess.Browse,
+			DirectoryServicesPermissionAccess.Write,
+			DirectoryServicesPermissionAccess.Browse | DirectoryServicesPermissionAccess.Write,
+		};
+
+		[Test]
+		public void PermissionState_None ()
+		{
+			PermissionState ps = PermissionState.None;
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (ps);
+			Assert.AreEqual (0, dsp.PermissionEntries.Count, "PermissionEntries");
+			Assert.IsFalse (dsp.IsUnrestricted (), "IsUnrestricted");
+
+			SecurityElement se = dsp.ToXml ();
+			// only class and version are present
+			Assert.AreEqual (2, se.Attributes.Count, "Xml-Attributes");
+			Assert.IsNull (se.Children, "Xml-Children");
+
+			DirectoryServicesPermission copy = (DirectoryServicesPermission)dsp.Copy ();
+			Assert.IsFalse (Object.ReferenceEquals (dsp, copy), "ReferenceEquals");
+			Assert.AreEqual (dsp.PermissionEntries.Count, copy.PermissionEntries.Count, "copy-PermissionEntries");
+			Assert.AreEqual (dsp.IsUnrestricted (), copy.IsUnrestricted (), "IsUnrestricted ()");
+		}
+
+		[Test]
+		public void PermissionState_Unrestricted ()
+		{
+			PermissionState ps = PermissionState.Unrestricted;
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (ps);
+			Assert.AreEqual (0, dsp.PermissionEntries.Count, "PermissionEntries");
+			Assert.IsTrue (dsp.IsUnrestricted (), "IsUnrestricted");
+
+			SecurityElement se = dsp.ToXml ();
+			// only class and version are present
+			Assert.AreEqual ("true", se.Attribute ("Unrestricted"), "Xml-Unrestricted");
+			Assert.IsNull (se.Children, "Xml-Children");
+
+			DirectoryServicesPermission copy = (DirectoryServicesPermission)dsp.Copy ();
+			Assert.IsFalse (Object.ReferenceEquals (dsp, copy), "ReferenceEquals");
+			Assert.AreEqual (dsp.PermissionEntries.Count, copy.PermissionEntries.Count, "copy-PermissionEntries");
+			Assert.AreEqual (dsp.IsUnrestricted (), copy.IsUnrestricted (), "copy-IsUnrestricted ()");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void PermissionState_Bad ()
+		{
+			PermissionState ps = (PermissionState)77;
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (ps);
+			Assert.IsFalse (dsp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void DirectoryServicesPermissionAccesss_Bad ()
+		{
+			DirectoryServicesPermissionAccess dspa = (DirectoryServicesPermissionAccess) Int32.MinValue;
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (dspa, String.Empty);
+			Assert.AreEqual (1, dsp.PermissionEntries.Count, "Count");
+			Assert.AreEqual ((DirectoryServicesPermissionAccess)Int32.MinValue, dsp.PermissionEntries [0].PermissionAccess, "PermissionAccess");
+			Assert.AreEqual (String.Empty, dsp.PermissionEntries [0].Path, "Path");
+		}
+
+		[Test]
+		public void PermissionEntries () 
+		{
+			DirectoryServicesPermissionAccess dspa = DirectoryServicesPermissionAccess.None;
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (dspa, String.Empty);
+			DirectoryServicesPermissionEntryCollection dspec = dsp.PermissionEntries;
+			Assert.AreEqual (1, dspec.Count, "Count==1");
+
+			DirectoryServicesPermissionEntry dspe = new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.Browse, "*");
+			dsp.PermissionEntries.Add (dspe);
+			Assert.AreEqual (2, dspec.Count, "Count==2");
+
+			// remove (same instance)
+			dsp.PermissionEntries.Remove (dspe);
+			Assert.AreEqual (1, dspec.Count, "Count==1 (b)");
+
+			// remove different instance (doesn't work)
+			dspe = new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty);
+			Assert.AreEqual (1, dspec.Count, "Count==1");
+		}
+
+		[Test]
+		public void Copy ()
+		{
+			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
+				DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+				DirectoryServicesPermissionEntry dspe = new DirectoryServicesPermissionEntry (ppl, ppl.ToString ());
+				dsp.PermissionEntries.Add (dspe);
+				DirectoryServicesPermission copy = (DirectoryServicesPermission)dsp.Copy ();
+				Assert.AreEqual (1, copy.PermissionEntries.Count, "Count==1");
+				Assert.AreEqual (ppl, dsp.PermissionEntries [0].PermissionAccess, ppl.ToString ());
+				Assert.AreEqual (ppl.ToString (), dsp.PermissionEntries [0].Path, ppl.ToString () + "-Path");
+			}
+		}
+
+		[Test]
+		public void Intersect_Null ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			// No intersection with null
+			Assert.IsNull (dsp.Intersect (null), "None N null");
+		}
+
+		[Test]
+		public void Intersect_None ()
+		{
+			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.None);
+			DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
+			// 1. None N None
+			DirectoryServicesPermission result = (DirectoryServicesPermission) dsp1.Intersect (dsp2);
+			Assert.IsNull (result, "Empty N Empty");
+			// 2. None N Entry
+			dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
+			result = (DirectoryServicesPermission) dsp1.Intersect (dsp2);
+			Assert.IsNull (result, "Empty N Entry");
+			// 3. Entry N None
+			result = (DirectoryServicesPermission) dsp2.Intersect (dsp1);
+			Assert.IsNull (result, "Entry N Empty");
+		}
+
+		[Test]
+		public void Intersect_Unrestricted ()
+		{
+			// Intersection with unrestricted == Copy
+			// a. source (this) is unrestricted
+			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.Unrestricted);
+			DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
+
+			// 1. Unrestricted N None
+			DirectoryServicesPermission result = (DirectoryServicesPermission) dsp1.Intersect (dsp2);
+			Assert.IsFalse (result.IsUnrestricted (), "(Unrestricted N None).IsUnrestricted");
+			Assert.AreEqual (0, result.PermissionEntries.Count, "(Unrestricted N None).Count");
+
+			// 2. None N Unrestricted
+			result = (DirectoryServicesPermission) dsp2.Intersect (dsp1);
+			Assert.IsFalse (result.IsUnrestricted (), "(None N Unrestricted).IsUnrestricted");
+			Assert.AreEqual (0, result.PermissionEntries.Count, "(None N Unrestricted).Count");
+
+			// 3. Unrestricted N Unrestricted
+			result = (DirectoryServicesPermission) dsp1.Intersect (dsp1);
+			Assert.IsTrue (result.IsUnrestricted (), "(Unrestricted N Unrestricted).IsUnrestricted");
+			Assert.AreEqual (0, result.PermissionEntries.Count, "(Unrestricted N Unrestricted).Count");
+
+			// 4. Unrestricted N Entry
+			dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
+			result = (DirectoryServicesPermission)dsp1.Intersect (dsp2);
+			Assert.IsFalse (result.IsUnrestricted (), "(Unrestricted N Entry).IsUnrestricted");
+			Assert.AreEqual (1, result.PermissionEntries.Count, "(Unrestricted N Entry).Count");
+
+			// 5. Entry N Unrestricted
+			result = (DirectoryServicesPermission)dsp2.Intersect (dsp1);
+			Assert.IsFalse (result.IsUnrestricted (), "(Entry N Unrestricted).IsUnrestricted");
+			Assert.AreEqual (1, result.PermissionEntries.Count, "(Entry N Unrestricted).Count");
+
+			// 6. Unrestricted N Unrestricted
+			dsp1.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
+			result = (DirectoryServicesPermission)dsp1.Intersect (dsp1);
+			Assert.IsTrue (result.IsUnrestricted (), "(Unrestricted N Unrestricted).IsUnrestricted");
+			Assert.AreEqual (1, result.PermissionEntries.Count, "(Unrestricted N Unrestricted).Count");
+		}
+
+		[Test]
+		public void IsSubset_Null ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			Assert.IsTrue (dsp.IsSubsetOf (null), "null");
+		}
+
+		[Test]
+		public void IsSubset_None ()
+		{
+			// IsSubset with none
+			// a. source (this) is none -> target is never a subset
+			// b. destination (target) is none -> target is always a subset
+			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.None);
+			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
+				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
+				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
+				Assert.IsTrue (dsp1.IsSubsetOf (dsp2), "target " + ppl.ToString ());
+				Assert.IsFalse (dsp2.IsSubsetOf (dsp1), "source " + ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void IsSubset_Self ()
+		{
+			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
+				DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+				dsp.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
+				Assert.IsTrue (dsp.IsSubsetOf (dsp), ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void IsSubset_Unrestricted ()
+		{
+			// IsSubset with unrestricted
+			// a. source (this) is unrestricted -> target is never a subset
+			// b. destination (target) is unrestricted -> source is always a subset
+			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.Unrestricted);
+			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
+				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
+				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
+				Assert.IsFalse (dsp1.IsSubsetOf (dsp2), "target " + ppl.ToString ());
+				Assert.IsTrue (dsp2.IsSubsetOf (dsp1), "source " + ppl.ToString ());
+			}
+			Assert.IsTrue (dsp1.IsSubsetOf (dsp1), "Unrestricted.IsSubsetOf(Unrestricted)");
+		}
+
+		[Test]
+		public void Union_Null ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			dsp.PermissionEntries.Add (new DirectoryServicesPermissionEntry (DirectoryServicesPermissionAccess.None, String.Empty));
+			// Union with null is a simple copy
+			DirectoryServicesPermission union = (DirectoryServicesPermission)dsp.Union (null);
+			Assert.IsNotNull (dsp.PermissionEntries.Count, "Count");
+		}
+
+		[Test]
+		public void Union_None ()
+		{
+			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.None);
+			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
+				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
+				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
+				DirectoryServicesPermission union = (DirectoryServicesPermission) dsp1.Union (dsp2);
+				Assert.IsFalse (union.IsUnrestricted (), "target.IsUnrestricted " + ppl.ToString ());
+				Assert.AreEqual (1, union.PermissionEntries.Count, "target.Count " + ppl.ToString ());
+
+				union = (DirectoryServicesPermission) dsp2.Union (dsp1);
+				Assert.IsFalse (union.IsUnrestricted (), "source.IsUnrestricted " + ppl.ToString ());
+				Assert.AreEqual (1, union.PermissionEntries.Count, "source.Count " + ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Union_Self ()
+		{
+			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
+				DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+				dsp.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
+				DirectoryServicesPermission union = (DirectoryServicesPermission)dsp.Union (dsp);
+				Assert.IsFalse (union.IsUnrestricted (), "IsUnrestricted " + ppl.ToString ());
+				Assert.AreEqual (1, union.PermissionEntries.Count, "Count " + ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Union_Unrestricted ()
+		{
+			// Union with unrestricted is unrestricted
+			DirectoryServicesPermission dsp1 = new DirectoryServicesPermission (PermissionState.Unrestricted);
+			foreach (DirectoryServicesPermissionAccess ppl in AllAccess) {
+				DirectoryServicesPermission dsp2 = new DirectoryServicesPermission (PermissionState.None);
+				dsp2.PermissionEntries.Add (new DirectoryServicesPermissionEntry (ppl, ppl.ToString ()));
+				DirectoryServicesPermission union = (DirectoryServicesPermission)dsp1.Union (dsp2);
+				Assert.IsTrue (union.IsUnrestricted (), "target.IsUnrestricted " + ppl.ToString ());
+				Assert.AreEqual (0, union.PermissionEntries.Count, "target.Count " + ppl.ToString ());
+
+				union = (DirectoryServicesPermission)dsp2.Union (dsp1);
+				Assert.IsTrue (union.IsUnrestricted (), "source.IsUnrestricted " + ppl.ToString ());
+				Assert.AreEqual (0, union.PermissionEntries.Count, "source.Count " + ppl.ToString ());
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void FromXml_Null ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			dsp.FromXml (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_WrongTag ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			SecurityElement se = dsp.ToXml ();
+			se.Tag = "IMono";
+			dsp.FromXml (se);
+			// note: normally IPermission classes (in corlib) DO care about the
+			// IPermission tag
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_WrongTagCase ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			SecurityElement se = dsp.ToXml ();
+			se.Tag = "IPERMISSION"; // instead of IPermission
+			dsp.FromXml (se);
+			// note: normally IPermission classes (in corlib) DO care about the
+			// IPermission tag
+		}
+
+		[Test]
+		public void FromXml_WrongClass ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			SecurityElement se = dsp.ToXml ();
+
+			SecurityElement w = new SecurityElement (se.Tag);
+			w.AddAttribute ("class", "Wrong" + se.Attribute ("class"));
+			w.AddAttribute ("version", se.Attribute ("version"));
+			dsp.FromXml (w);
+			// doesn't care of the class name at that stage
+			// anyway the class has already be created so...
+		}
+
+		[Test]
+		public void FromXml_NoClass ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			SecurityElement se = dsp.ToXml ();
+
+			SecurityElement w = new SecurityElement (se.Tag);
+			w.AddAttribute ("version", se.Attribute ("version"));
+			dsp.FromXml (w);
+			// doesn't even care of the class attribute presence
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_WrongVersion ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			SecurityElement se = dsp.ToXml ();
+			se.Attributes.Remove ("version");
+			se.Attributes.Add ("version", "2");
+			dsp.FromXml (se);
+		}
+
+		[Test]
+		public void FromXml_NoVersion ()
+		{
+			DirectoryServicesPermission dsp = new DirectoryServicesPermission (PermissionState.None);
+			SecurityElement se = dsp.ToXml ();
+
+			SecurityElement w = new SecurityElement (se.Tag);
+			w.AddAttribute ("class", se.Attribute ("class"));
+			dsp.FromXml (w);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesSearchResultTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/DirectoryServicesSearchResultTest.cs
@@ -1,339 +1,339 @@
-//
-// DirectoryServicesSearchResultTest.cs -
-//	NUnit Test Cases for DirectoryServices.SearchResult
-//
-// Author:
-//	Boris Kirzner  <borisk@mainsoft.com>
-//
-
-using NUnit.Framework;
-using System;
-using System.DirectoryServices;
-
-namespace MonoTests.System.DirectoryServices 
-{
-	[TestFixture]
-	[Category ("InetAccess")]
-	public class DirectoryServicesSearchResultTest
-	{
-		#region Fields
-
-		static TestConfiguration configuration;
-		static DirectoryEntry de;
-		static DirectorySearcher ds;
-
-		#endregion // Fields
-
-		#region SetUp and TearDown
-
-		[TestFixtureSetUp]
-		public void TestFixtureSetUp()
-		{
-			de = null;
-			configuration = new TestConfiguration ();
-		}
-
-
-		[TestFixtureTearDown]
-		public void TestFixtureTearDown()
-		{
-			if (de != null)
-				de.Dispose ();
-
-			de = null;
-		}
-
-
-		[SetUp]
-		public void SetUp()
-		{
-			TearDown();
-
-			#region Initialize basics
-
-			DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType);
-
-			DirectoryEntry ouPeople = root.Children.Add("ou=people","Class");
-			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
-			ouPeople.Properties["description"].Value = "All people in organisation";
-			ouPeople.Properties["ou"].Value = "people";
-			ouPeople.CommitChanges();
-
-			#endregion // Initialize basics
-
-			#region Human Resources
- 
-			DirectoryEntry ouHumanResources = ouPeople.Children.Add("ou=Human Resources","Class");
-			ouHumanResources.Properties["objectClass"].Value = "organizationalUnit";
-			ouHumanResources.Properties["ou"].Value = "Human Resources";
-			ouHumanResources.CommitChanges();
-
-			DirectoryEntry cnJohnSmith = ouHumanResources.Children.Add("cn=John Smith","Class");
-			cnJohnSmith.Properties["objectClass"].Value = "organizationalRole";
-			cnJohnSmith.Properties["cn"].Value = "John Smith";
-			cnJohnSmith.Properties["description"].Value = "Very clever person";
-			cnJohnSmith.Properties["ou"].Value = "Human Resources";
-			cnJohnSmith.Properties["telephoneNumber"].Value = "1 801 555 1212";
-			cnJohnSmith.CommitChanges();
-
-			DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
-			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
-			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
-			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
-			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
-			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
-			cnBarakTsabari.CommitChanges();
-
-			#endregion // Human Resources
-
-			#region R&D
-
-			DirectoryEntry ouRnD = ouPeople.Children.Add("ou=R&D","Class");
-			ouRnD.Properties["objectClass"].Value = "organizationalUnit";
-			ouRnD.Properties["ou"].Value = "R&D";
-			ouRnD.CommitChanges();
-
-			DirectoryEntry cnYossiCohen = ouRnD.Children.Add("cn=Yossi Cohen","Class");
-			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnYossiCohen.Properties["cn"].Value = "Yossi Cohen";
-			cnYossiCohen.Properties["facsimileTelephoneNumber"].Value = "+1 503 777 4498";
-			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("People");
-			cnYossiCohen.Properties["sn"].Value = "Cohen";
-			cnYossiCohen.Properties["telephoneNumber"].Value = "+1 503 777 4499";
-			cnYossiCohen.CommitChanges();
-
-			DirectoryEntry cnUziCohen = ouRnD.Children.Add("cn=Uzi Cohen","Class");
-			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnUziCohen.Properties["cn"].Value = "Uzi Cohen";
-			cnUziCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
-			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("People");
-			cnUziCohen.Properties["sn"].Value = "Cohen";
-			cnUziCohen.Properties["telephoneNumber"].Value = "+1 602 333 1233";
-			cnUziCohen.CommitChanges();
-
-			DirectoryEntry cnDanielCohen = ouRnD.Children.Add("cn=Daniel Cohen","Class");
-			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielCohen.Properties["cn"].Value = "Daniel Cohen";
-			cnDanielCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1235";
-			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("People");
-			cnDanielCohen.Properties["sn"].Value = "Cohen";
-			cnDanielCohen.Properties["telephoneNumber"].Value = "+1 602 333 1236";
-			cnDanielCohen.CommitChanges();
-
-			DirectoryEntry cnSaraCohen = ouRnD.Children.Add("cn=Sara Cohen","Class");
-			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("organizationalPerson");
-			cnSaraCohen.Properties["cn"].Value = "Sara Cohen";
-			cnSaraCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1244";
-			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("People");
-			cnSaraCohen.Properties["sn"].Value = "Cohen";
-			cnSaraCohen.Properties["telephoneNumber"].Value = "+1 602 333 1243";
-			cnSaraCohen.CommitChanges();
-
-			#endregion // R&D
-
-			#region DevQA
-
-			DirectoryEntry ouDevQA = ouPeople.Children.Add("ou=DevQA","Class");
-			ouDevQA.Properties["objectClass"].Value = "organizationalUnit";
-			ouDevQA.Properties["ou"].Value = "DevQA";
-			ouDevQA.CommitChanges();
-
-			DirectoryEntry cnDanielSmith = ouDevQA.Children.Add("cn=Daniel Smith","Class");
-			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielSmith.Properties["cn"].Value = "Daniel Smith";
-			cnDanielSmith.Properties["facsimileTelephoneNumber"].Value = "+1 408 555 3372";
-			cnDanielSmith.Properties["l"].Value = "Santa Clara";
-			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("DevQA");
-			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("People");
-			cnDanielSmith.Properties["sn"].Value = "Smith";
-			cnDanielSmith.Properties["telephoneNumber"].Value = "+1 408 555 9519";
-			cnDanielSmith.CommitChanges();
-
-			DirectoryEntry cnDanielMorgan = ouDevQA.Children.Add("cn=Daniel Morgan","Class");
-			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("organizationalPerson");
-			cnDanielMorgan.Properties["cn"].Value = "Daniel Morgan";
-			cnDanielMorgan.Properties["facsimileTelephoneNumber"].Value = "+1 805 666 5645";
-			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("DevQA");
-			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("People");
-			cnDanielMorgan.Properties["sn"].Value = "Morgan";
-			cnDanielMorgan.Properties["telephoneNumber"].Value = "+1 805 666 5644";
-			cnDanielMorgan.CommitChanges();
-
-			#endregion // DevQA
-
-			#region Manager
-
-			DirectoryEntry cnManager = root.Children.Add("cn=Manager","Class");
-			cnManager.Properties["objectClass"].Value = "organizationalRole";
-			cnManager.Properties["cn"].Value = "Manager";
-			cnManager.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1238";
-			cnManager.CommitChanges();
-
-			DirectoryEntry cnUziCohen_ = cnManager.Children.Add("cn=Uzi Cohen","Class");
-			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("person");
-			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("organizationalPerson");
-			cnUziCohen_.Properties["cn"].Value = "Uzi Cohen";
-			cnUziCohen_.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
-			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("R&D");
-			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("People");
-			cnUziCohen_.Properties["sn"].Value = "Cohen";
-			cnUziCohen_.Properties["telephoneNumber"].Value = "+1 602 333 1233";
-			cnUziCohen_.CommitChanges();
-
-			#endregion // Manager
-
-			cnJohnSmith.Dispose();
-			cnBarakTsabari.Dispose();
-			ouHumanResources.Dispose();
-			cnUziCohen.Dispose();
-			cnYossiCohen.Dispose();
-			cnDanielCohen.Dispose();
-			cnSaraCohen.Dispose();
-			ouRnD.Dispose();
-			cnDanielSmith.Dispose();
-			cnDanielMorgan.Dispose();
-			ouDevQA.Dispose();
-			cnUziCohen_.Dispose();
-			cnManager.Dispose();
-			ouPeople.Dispose();
-			root.Dispose();
-		}
-
-
-		[TearDown]
-		public void TearDown()
-		{
-			if (ds != null)
-				ds.Dispose ();
-			
-			ds = null;
-			
-			if (de != null)
-				de.Dispose ();
-
-			de = null;
-
-			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
-														configuration.Username,
-														configuration.Password,
-														configuration.AuthenticationType)){
-			
-			foreach(DirectoryEntry child in root.Children) {
-				DeleteTree_DFS(child);
-			}	
-			}
-		}
-
-		private void DeleteTree_DFS(DirectoryEntry de)
-		{
-			foreach(DirectoryEntry child in de.Children) {
-				DeleteTree_DFS(child);
-			}
-			de.DeleteTree();
-			de.CommitChanges();
-		}
-
-		#endregion //SetUp and TearDown
-
-		#region Tests
-
-		[Test]
-		public void SearchResult_Path()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-
-			ds = new DirectorySearcher(de);
-
-			SearchResultCollection results = ds.FindAll();
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(results[0].Path.ToLower(),(configuration.ServerRoot + configuration.BaseDn).ToLower());
-			Assert.AreEqual(results[0].Path,results[0].GetDirectoryEntry().Path);
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(results[1].Path.ToLower(),(configuration.ServerRoot + "ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
-			Assert.AreEqual(results[1].Path,results[1].GetDirectoryEntry().Path);
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(results[2].Path.ToLower(),(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
-			Assert.AreEqual(results[2].Path,results[2].GetDirectoryEntry().Path);
-
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(results[3].Path.ToLower(),(configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
-			Assert.AreEqual(results[3].Path,results[3].GetDirectoryEntry().Path);
-		}
-
-		[Test]
-		public void SearchResult_Properties()
-		{
-			de = new DirectoryEntry(configuration.ConnectionString,
-									configuration.Username,
-									configuration.Password,
-									configuration.AuthenticationType);
-			ds = new DirectorySearcher(de);
-
-			ds.PropertiesToLoad.Add("cn");
-			ds.PropertiesToLoad.Add("ADsPath");
-			ds.PropertiesToLoad.Add("objectClass");
-
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("ADsPath"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
-
-			ds.Filter = "(objectClass=person)";
-			SearchResult result = ds.FindOne();
-
-			Assert.AreEqual(result.Properties.Count,3);
-			Assert.IsTrue(result.Properties.Contains("cn"));
-			Assert.IsTrue(result.Properties.Contains("objectClass"));
-			Assert.IsTrue(result.Properties.Contains("ADsPath"));
-
-			ds.PropertiesToLoad.Clear();
-
-			ds.PropertiesToLoad.Add("cn");
-			ds.PropertiesToLoad.Add("objectClass");
-			ds.PropertiesToLoad.Add("missingProperty");
-
-			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
-			Assert.IsTrue(ds.PropertiesToLoad.Contains("missingProperty"));
-
-			ds.Filter = "(objectClass=person)";
-			result = ds.FindOne();
-
-			// Properties that do not exist are not loaded
-			Assert.AreEqual(result.Properties.Count,3);
-			Assert.IsTrue(result.Properties.Contains("cn"));
-			Assert.IsTrue(result.Properties.Contains("objectClass"));
-			Assert.IsTrue(result.Properties.Contains("ADsPath"));
-
-			Assert.AreEqual(((ResultPropertyValueCollection)result.Properties["cn"])[0],"Barak Tsabari");
-			Assert.AreEqual(((ResultPropertyValueCollection)result.Properties["objectClass"])[0],"person");
-			// MS works only with "LDAP" while RFC2255 states "ldap"
-			Assert.AreEqual(((string)((ResultPropertyValueCollection)result.Properties["AdsPath"])[0]).ToLower(),(configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
-		}
-
-		#endregion Tests
-	}
-}
+//
+// DirectoryServicesSearchResultTest.cs -
+//	NUnit Test Cases for DirectoryServices.SearchResult
+//
+// Author:
+//	Boris Kirzner  <borisk@mainsoft.com>
+//
+
+using NUnit.Framework;
+using System;
+using System.DirectoryServices;
+
+namespace MonoTests.System.DirectoryServices 
+{
+	[TestFixture]
+	[Category ("InetAccess")]
+	public class DirectoryServicesSearchResultTest
+	{
+		#region Fields
+
+		static TestConfiguration configuration;
+		static DirectoryEntry de;
+		static DirectorySearcher ds;
+
+		#endregion // Fields
+
+		#region SetUp and TearDown
+
+		[TestFixtureSetUp]
+		public void TestFixtureSetUp()
+		{
+			de = null;
+			configuration = new TestConfiguration ();
+		}
+
+
+		[TestFixtureTearDown]
+		public void TestFixtureTearDown()
+		{
+			if (de != null)
+				de.Dispose ();
+
+			de = null;
+		}
+
+
+		[SetUp]
+		public void SetUp()
+		{
+			TearDown();
+
+			#region Initialize basics
+
+			DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType);
+
+			DirectoryEntry ouPeople = root.Children.Add("ou=people","Class");
+			ouPeople.Properties["objectClass"].Value = "organizationalUnit";
+			ouPeople.Properties["description"].Value = "All people in organisation";
+			ouPeople.Properties["ou"].Value = "people";
+			ouPeople.CommitChanges();
+
+			#endregion // Initialize basics
+
+			#region Human Resources
+ 
+			DirectoryEntry ouHumanResources = ouPeople.Children.Add("ou=Human Resources","Class");
+			ouHumanResources.Properties["objectClass"].Value = "organizationalUnit";
+			ouHumanResources.Properties["ou"].Value = "Human Resources";
+			ouHumanResources.CommitChanges();
+
+			DirectoryEntry cnJohnSmith = ouHumanResources.Children.Add("cn=John Smith","Class");
+			cnJohnSmith.Properties["objectClass"].Value = "organizationalRole";
+			cnJohnSmith.Properties["cn"].Value = "John Smith";
+			cnJohnSmith.Properties["description"].Value = "Very clever person";
+			cnJohnSmith.Properties["ou"].Value = "Human Resources";
+			cnJohnSmith.Properties["telephoneNumber"].Value = "1 801 555 1212";
+			cnJohnSmith.CommitChanges();
+
+			DirectoryEntry cnBarakTsabari = ouHumanResources.Children.Add("cn=Barak Tsabari","Class");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnBarakTsabari.Properties["objectClass"]).Add("organizationalPerson");
+			cnBarakTsabari.Properties["cn"].Value = "Barak Tsabari";
+			cnBarakTsabari.Properties["facsimileTelephoneNumber"].Value = "+1 906 777 8853";
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("Human Resources");
+			((PropertyValueCollection)cnBarakTsabari.Properties["ou"]).Add("People");
+			cnBarakTsabari.Properties["sn"].Value = "Tsabari";
+			cnBarakTsabari.Properties["telephoneNumber"].Value = "+1 906 777 8854";
+			cnBarakTsabari.CommitChanges();
+
+			#endregion // Human Resources
+
+			#region R&D
+
+			DirectoryEntry ouRnD = ouPeople.Children.Add("ou=R&D","Class");
+			ouRnD.Properties["objectClass"].Value = "organizationalUnit";
+			ouRnD.Properties["ou"].Value = "R&D";
+			ouRnD.CommitChanges();
+
+			DirectoryEntry cnYossiCohen = ouRnD.Children.Add("cn=Yossi Cohen","Class");
+			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnYossiCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnYossiCohen.Properties["cn"].Value = "Yossi Cohen";
+			cnYossiCohen.Properties["facsimileTelephoneNumber"].Value = "+1 503 777 4498";
+			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnYossiCohen.Properties["ou"]).Add("People");
+			cnYossiCohen.Properties["sn"].Value = "Cohen";
+			cnYossiCohen.Properties["telephoneNumber"].Value = "+1 503 777 4499";
+			cnYossiCohen.CommitChanges();
+
+			DirectoryEntry cnUziCohen = ouRnD.Children.Add("cn=Uzi Cohen","Class");
+			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnUziCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnUziCohen.Properties["cn"].Value = "Uzi Cohen";
+			cnUziCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
+			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnUziCohen.Properties["ou"]).Add("People");
+			cnUziCohen.Properties["sn"].Value = "Cohen";
+			cnUziCohen.Properties["telephoneNumber"].Value = "+1 602 333 1233";
+			cnUziCohen.CommitChanges();
+
+			DirectoryEntry cnDanielCohen = ouRnD.Children.Add("cn=Daniel Cohen","Class");
+			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielCohen.Properties["cn"].Value = "Daniel Cohen";
+			cnDanielCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1235";
+			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnDanielCohen.Properties["ou"]).Add("People");
+			cnDanielCohen.Properties["sn"].Value = "Cohen";
+			cnDanielCohen.Properties["telephoneNumber"].Value = "+1 602 333 1236";
+			cnDanielCohen.CommitChanges();
+
+			DirectoryEntry cnSaraCohen = ouRnD.Children.Add("cn=Sara Cohen","Class");
+			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnSaraCohen.Properties["objectClass"]).Add("organizationalPerson");
+			cnSaraCohen.Properties["cn"].Value = "Sara Cohen";
+			cnSaraCohen.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1244";
+			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnSaraCohen.Properties["ou"]).Add("People");
+			cnSaraCohen.Properties["sn"].Value = "Cohen";
+			cnSaraCohen.Properties["telephoneNumber"].Value = "+1 602 333 1243";
+			cnSaraCohen.CommitChanges();
+
+			#endregion // R&D
+
+			#region DevQA
+
+			DirectoryEntry ouDevQA = ouPeople.Children.Add("ou=DevQA","Class");
+			ouDevQA.Properties["objectClass"].Value = "organizationalUnit";
+			ouDevQA.Properties["ou"].Value = "DevQA";
+			ouDevQA.CommitChanges();
+
+			DirectoryEntry cnDanielSmith = ouDevQA.Children.Add("cn=Daniel Smith","Class");
+			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielSmith.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielSmith.Properties["cn"].Value = "Daniel Smith";
+			cnDanielSmith.Properties["facsimileTelephoneNumber"].Value = "+1 408 555 3372";
+			cnDanielSmith.Properties["l"].Value = "Santa Clara";
+			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("DevQA");
+			((PropertyValueCollection)cnDanielSmith.Properties["ou"]).Add("People");
+			cnDanielSmith.Properties["sn"].Value = "Smith";
+			cnDanielSmith.Properties["telephoneNumber"].Value = "+1 408 555 9519";
+			cnDanielSmith.CommitChanges();
+
+			DirectoryEntry cnDanielMorgan = ouDevQA.Children.Add("cn=Daniel Morgan","Class");
+			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnDanielMorgan.Properties["objectClass"]).Add("organizationalPerson");
+			cnDanielMorgan.Properties["cn"].Value = "Daniel Morgan";
+			cnDanielMorgan.Properties["facsimileTelephoneNumber"].Value = "+1 805 666 5645";
+			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("DevQA");
+			((PropertyValueCollection)cnDanielMorgan.Properties["ou"]).Add("People");
+			cnDanielMorgan.Properties["sn"].Value = "Morgan";
+			cnDanielMorgan.Properties["telephoneNumber"].Value = "+1 805 666 5644";
+			cnDanielMorgan.CommitChanges();
+
+			#endregion // DevQA
+
+			#region Manager
+
+			DirectoryEntry cnManager = root.Children.Add("cn=Manager","Class");
+			cnManager.Properties["objectClass"].Value = "organizationalRole";
+			cnManager.Properties["cn"].Value = "Manager";
+			cnManager.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1238";
+			cnManager.CommitChanges();
+
+			DirectoryEntry cnUziCohen_ = cnManager.Children.Add("cn=Uzi Cohen","Class");
+			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("person");
+			((PropertyValueCollection)cnUziCohen_.Properties["objectClass"]).Add("organizationalPerson");
+			cnUziCohen_.Properties["cn"].Value = "Uzi Cohen";
+			cnUziCohen_.Properties["facsimileTelephoneNumber"].Value = "+1 602 333 1234";
+			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("R&D");
+			((PropertyValueCollection)cnUziCohen_.Properties["ou"]).Add("People");
+			cnUziCohen_.Properties["sn"].Value = "Cohen";
+			cnUziCohen_.Properties["telephoneNumber"].Value = "+1 602 333 1233";
+			cnUziCohen_.CommitChanges();
+
+			#endregion // Manager
+
+			cnJohnSmith.Dispose();
+			cnBarakTsabari.Dispose();
+			ouHumanResources.Dispose();
+			cnUziCohen.Dispose();
+			cnYossiCohen.Dispose();
+			cnDanielCohen.Dispose();
+			cnSaraCohen.Dispose();
+			ouRnD.Dispose();
+			cnDanielSmith.Dispose();
+			cnDanielMorgan.Dispose();
+			ouDevQA.Dispose();
+			cnUziCohen_.Dispose();
+			cnManager.Dispose();
+			ouPeople.Dispose();
+			root.Dispose();
+		}
+
+
+		[TearDown]
+		public void TearDown()
+		{
+			if (ds != null)
+				ds.Dispose ();
+			
+			ds = null;
+			
+			if (de != null)
+				de.Dispose ();
+
+			de = null;
+
+			using (DirectoryEntry root = new DirectoryEntry(	configuration.ConnectionString,
+														configuration.Username,
+														configuration.Password,
+														configuration.AuthenticationType)){
+			
+			foreach(DirectoryEntry child in root.Children) {
+				DeleteTree_DFS(child);
+			}	
+			}
+		}
+
+		private void DeleteTree_DFS(DirectoryEntry de)
+		{
+			foreach(DirectoryEntry child in de.Children) {
+				DeleteTree_DFS(child);
+			}
+			de.DeleteTree();
+			de.CommitChanges();
+		}
+
+		#endregion //SetUp and TearDown
+
+		#region Tests
+
+		[Test]
+		public void SearchResult_Path()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+
+			ds = new DirectorySearcher(de);
+
+			SearchResultCollection results = ds.FindAll();
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(results[0].Path.ToLower(),(configuration.ServerRoot + configuration.BaseDn).ToLower());
+			Assert.AreEqual(results[0].Path,results[0].GetDirectoryEntry().Path);
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(results[1].Path.ToLower(),(configuration.ServerRoot + "ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
+			Assert.AreEqual(results[1].Path,results[1].GetDirectoryEntry().Path);
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(results[2].Path.ToLower(),(configuration.ServerRoot + "ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
+			Assert.AreEqual(results[2].Path,results[2].GetDirectoryEntry().Path);
+
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(results[3].Path.ToLower(),(configuration.ServerRoot + "cn=John Smith,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
+			Assert.AreEqual(results[3].Path,results[3].GetDirectoryEntry().Path);
+		}
+
+		[Test]
+		public void SearchResult_Properties()
+		{
+			de = new DirectoryEntry(configuration.ConnectionString,
+									configuration.Username,
+									configuration.Password,
+									configuration.AuthenticationType);
+			ds = new DirectorySearcher(de);
+
+			ds.PropertiesToLoad.Add("cn");
+			ds.PropertiesToLoad.Add("ADsPath");
+			ds.PropertiesToLoad.Add("objectClass");
+
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("ADsPath"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
+
+			ds.Filter = "(objectClass=person)";
+			SearchResult result = ds.FindOne();
+
+			Assert.AreEqual(result.Properties.Count,3);
+			Assert.IsTrue(result.Properties.Contains("cn"));
+			Assert.IsTrue(result.Properties.Contains("objectClass"));
+			Assert.IsTrue(result.Properties.Contains("ADsPath"));
+
+			ds.PropertiesToLoad.Clear();
+
+			ds.PropertiesToLoad.Add("cn");
+			ds.PropertiesToLoad.Add("objectClass");
+			ds.PropertiesToLoad.Add("missingProperty");
+
+			Assert.AreEqual(ds.PropertiesToLoad.Count,3);
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("cn"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("objectClass"));
+			Assert.IsTrue(ds.PropertiesToLoad.Contains("missingProperty"));
+
+			ds.Filter = "(objectClass=person)";
+			result = ds.FindOne();
+
+			// Properties that do not exist are not loaded
+			Assert.AreEqual(result.Properties.Count,3);
+			Assert.IsTrue(result.Properties.Contains("cn"));
+			Assert.IsTrue(result.Properties.Contains("objectClass"));
+			Assert.IsTrue(result.Properties.Contains("ADsPath"));
+
+			Assert.AreEqual(((ResultPropertyValueCollection)result.Properties["cn"])[0],"Barak Tsabari");
+			Assert.AreEqual(((ResultPropertyValueCollection)result.Properties["objectClass"])[0],"person");
+			// MS works only with "LDAP" while RFC2255 states "ldap"
+			Assert.AreEqual(((string)((ResultPropertyValueCollection)result.Properties["AdsPath"])[0]).ToLower(),(configuration.ServerRoot + "cn=Barak Tsabari,ou=Human Resources,ou=people" + ((configuration.BaseDn.Length == 0) ? String.Empty : ("," + configuration.BaseDn))).ToLower());
+		}
+
+		#endregion Tests
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/TestConfiguration.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.DirectoryServices/Test/System.DirectoryServices/TestConfiguration.cs
@@ -1,86 +1,86 @@
-using System;
-using System.DirectoryServices;
-using System.Collections.Specialized;
-using System.Configuration;
-
-namespace MonoTests.System.DirectoryServices 
-{
-	public class TestConfiguration
-	{
-		#region Fields
-
-		private string _serverRoot;
-		private string _username;
-		private string _password;
-		private string _baseDn;
-		private AuthenticationTypes _authenticationType;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public TestConfiguration()
-		{
-			NameValueCollection config = (NameValueCollection) ConfigurationSettings.GetConfig ("System.DirectoryServices.Test/Settings");
-			if (config != null) {
-				string servername = config ["servername"];
-				string port = config ["port"];
-				_serverRoot = "LDAP://" + servername + (port.Equals ("389") ? String.Empty : (":" + port)) + "/";
-
-				_baseDn = config ["basedn"];
-
-				_username = config ["username"];
-				_password = config ["password"];
-
-				string authType = config ["authenticationtype"];
-
-				string [] authTypes = authType.Split (new char[] { '|' });
-
-				_authenticationType = (AuthenticationTypes) 0;
-
-				foreach (string s in authTypes)
-					foreach (AuthenticationTypes type in Enum.GetValues (typeof (AuthenticationTypes)))
-						if (s.Trim ().Equals (type.ToString ()))
-							_authenticationType |= type;	
-			}
-
-			//Console.WriteLine ("Connecting to {0} with credentials {1}:{2} and security {3}",ConnectionString,Username,Password,AuthenticationType);
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public string ServerRoot
-		{
-			get { return _serverRoot; }
-		}
-
-		public string BaseDn
-		{
-			get { return ((_baseDn == null) ? String.Empty : _baseDn); }
-		}
-
-		public string ConnectionString
-		{ 
-			get { return ServerRoot + ((BaseDn.Length == 0) ? String.Empty : BaseDn); }
-		}
-
-		public string Username
-		{
-			get{ return _username; }
-		}
-
-		public string Password
-		{
-			get { return _password; }
-		}
-
-		public AuthenticationTypes AuthenticationType
-		{
-			get { return _authenticationType; }
-		}
-
-		#endregion // Properties
-	}
-}
+using System;
+using System.DirectoryServices;
+using System.Collections.Specialized;
+using System.Configuration;
+
+namespace MonoTests.System.DirectoryServices 
+{
+	public class TestConfiguration
+	{
+		#region Fields
+
+		private string _serverRoot;
+		private string _username;
+		private string _password;
+		private string _baseDn;
+		private AuthenticationTypes _authenticationType;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public TestConfiguration()
+		{
+			NameValueCollection config = (NameValueCollection) ConfigurationSettings.GetConfig ("System.DirectoryServices.Test/Settings");
+			if (config != null) {
+				string servername = config ["servername"];
+				string port = config ["port"];
+				_serverRoot = "LDAP://" + servername + (port.Equals ("389") ? String.Empty : (":" + port)) + "/";
+
+				_baseDn = config ["basedn"];
+
+				_username = config ["username"];
+				_password = config ["password"];
+
+				string authType = config ["authenticationtype"];
+
+				string [] authTypes = authType.Split (new char[] { '|' });
+
+				_authenticationType = (AuthenticationTypes) 0;
+
+				foreach (string s in authTypes)
+					foreach (AuthenticationTypes type in Enum.GetValues (typeof (AuthenticationTypes)))
+						if (s.Trim ().Equals (type.ToString ()))
+							_authenticationType |= type;	
+			}
+
+			//Console.WriteLine ("Connecting to {0} with credentials {1}:{2} and security {3}",ConnectionString,Username,Password,AuthenticationType);
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public string ServerRoot
+		{
+			get { return _serverRoot; }
+		}
+
+		public string BaseDn
+		{
+			get { return ((_baseDn == null) ? String.Empty : _baseDn); }
+		}
+
+		public string ConnectionString
+		{ 
+			get { return ServerRoot + ((BaseDn.Length == 0) ? String.Empty : BaseDn); }
+		}
+
+		public string Username
+		{
+			get{ return _username; }
+		}
+
+		public string Password
+		{
+			get { return _password; }
+		}
+
+		public AuthenticationTypes AuthenticationType
+		{
+			get { return _authenticationType; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing.Design/System.Drawing.Design/ColorEditor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing.Design/System.Drawing.Design/ColorEditor.cs
@@ -2,12 +2,12 @@
 // System.Drawing.Design.ColorEditor.cs
 // 
 // Authors:
-//  Martin Willemoes Hansen (mwh@sysrq.dk)
-//  Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//  Martin Willemoes Hansen (mwh@sysrq.dk)
+//  Andreas Nahr (ClassDevelopment@A-SoftTech.com)
 //  Jonathan Chambers (joncham@gmail.com)
 // 
-// (C) 2003 Martin Willemoes Hansen
-// (C) 2003 Andreas Nahr
+// (C) 2003 Martin Willemoes Hansen
+// (C) 2003 Andreas Nahr
 // (C) 2006 Jonathan Chambers
 // 
 
@@ -109,11 +109,11 @@ namespace System.Drawing.Design
 			color_list.Sort(web_compare);
 			web_listbox.Items.AddRange(color_list.ToArray());
 			web_listbox.MouseUp+=new MouseEventHandler(HandleMouseUp);
-			web_listbox.SelectedValueChanged+=new EventHandler(HandleChange);
+			web_listbox.SelectedValueChanged+=new EventHandler(HandleChange);
 
-			CustomColorPicker custom_picker = new CustomColorPicker ();
-			custom_picker.Dock = DockStyle.Fill;
-			custom_picker.ColorChanged += new EventHandler (CustomColorPicked);
+			CustomColorPicker custom_picker = new CustomColorPicker ();
+			custom_picker.Dock = DockStyle.Fill;
+			custom_picker.ColorChanged += new EventHandler (CustomColorPicked);
 			custom_tab.Controls.Add (custom_picker);
 
 			tab_control.TabPages.Add(custom_tab);
@@ -146,12 +146,12 @@ namespace System.Drawing.Design
 			color_chosen = true;
 		}
 
-		private void CustomColorPicked (object sender, EventArgs e)
+		private void CustomColorPicked (object sender, EventArgs e)
 		{
 			selected_color = (Color)sender;
 			color_chosen = true;
 			if (editorService != null)
-				editorService.CloseDropDown ();
+				editorService.CloseDropDown ();
 		}
 
 		private void HandleMouseUp(object sender, MouseEventArgs e) 
@@ -226,153 +226,153 @@ namespace System.Drawing.Design
 			}
 
 			#endregion
-		}
-
-
-		class CustomColorPicker : UserControl
-		{
-			Color[,] colors;
-			bool highlighting;
-			int x, y;
-			public CustomColorPicker ()
-			{
-				colors = new Color[8, 8];
-				colors[0, 0] = Color.White;
-				colors[1, 0] = Color.FromArgb (224, 224, 224);
-				colors[2, 0] = Color.Silver;
-				colors[3, 0] = Color.Gray;
-				colors[4, 0] = Color.FromArgb (64, 64, 64);
-				colors[5, 0] = Color.Black;
-				colors[6, 0] = Color.White;
-				colors[7, 0] = Color.White;
-
-				colors[0, 1] = Color.FromArgb (255, 192, 192);
-				colors[1, 1] = Color.FromArgb (255, 128, 128);
-				colors[2, 1] = Color.Red;
-				colors[3, 1] = Color.FromArgb (192, 0, 0);
-				colors[4, 1] = Color.Maroon;
-				colors[5, 1] = Color.FromArgb (64, 0, 0);
-				colors[6, 1] = Color.White;
-				colors[7, 1] = Color.White;
-
-				colors[0, 2] = Color.FromArgb (255, 224, 192);
-				colors[1, 2] = Color.FromArgb (255, 192, 128);
-				colors[2, 2] = Color.FromArgb (255, 128, 0);
-				colors[3, 2] = Color.FromArgb (192, 64, 0);
-				colors[4, 2] = Color.FromArgb (128, 64, 0);
-				colors[5, 2] = Color.FromArgb (128, 64, 64);
-				colors[6, 2] = Color.White;
-				colors[7, 2] = Color.White;
-
-				colors[0, 3] = Color.FromArgb (255, 255, 192);
-				colors[1, 3] = Color.FromArgb (255, 255, 128);
-				colors[2, 3] = Color.Yellow;
-				colors[3, 3] = Color.FromArgb (192, 192, 0);
-				colors[4, 3] = Color.Olive;
-				colors[5, 3] = Color.FromArgb (64, 64, 0);
-				colors[6, 3] = Color.White;
-				colors[7, 3] = Color.White;
-
-				colors[0, 4] = Color.FromArgb (192, 255, 192);
-				colors[1, 4] = Color.FromArgb (128, 255, 128);
-				colors[2, 4] = Color.Lime;
-				colors[3, 4] = Color.FromArgb (0, 192, 0);
-				colors[4, 4] = Color.Green;
-				colors[5, 4] = Color.FromArgb (0, 64, 0);
-				colors[6, 4] = Color.White;
-				colors[7, 4] = Color.White;
-
-				colors[0, 5] = Color.FromArgb (192, 255, 255);
-				colors[1, 5] = Color.FromArgb (128, 255, 255);
-				colors[2, 5] = Color.Cyan;
-				colors[3, 5] = Color.FromArgb (0, 192, 192);
-				colors[4, 5] = Color.Teal;
-				colors[5, 5] = Color.FromArgb (0, 64, 64);
-				colors[6, 5] = Color.White;
-				colors[7, 5] = Color.White;
-
-				colors[0, 6] = Color.FromArgb (192, 192, 255);
-				colors[1, 6] = Color.FromArgb (128, 128, 255);
-				colors[2, 6] = Color.Blue;
-				colors[3, 6] = Color.FromArgb (0, 0, 192);
-				colors[4, 6] = Color.Navy;
-				colors[5, 6] = Color.FromArgb (0, 0, 64);
-				colors[6, 6] = Color.White;
-				colors[7, 6] = Color.White;
-
-				colors[0, 7] = Color.FromArgb (255, 192, 255);
-				colors[1, 7] = Color.FromArgb (255, 128, 255);
-				colors[2, 7] = Color.Fuchsia;
-				colors[3, 7] = Color.FromArgb (192, 0, 192);
-				colors[4, 7] = Color.Purple;
-				colors[5, 7] = Color.FromArgb (64, 0, 64);
-				colors[6, 7] = Color.White;
-				colors[7, 7] = Color.White;
-			}
-
-			public event EventHandler ColorChanged;
-
-			protected override void OnPaint (PaintEventArgs e)
-			{
-				for (int i = 0; i < 8; i++)
-					for (int j = 0; j < 8; j++) {
-						DrawRect (e.Graphics, colors[i, j], j * 24, i * 24);
-					}
-
-				if (highlighting) {
-					int i = x / 24;
-					int j = y / 24;
-					ControlPaint.DrawFocusRectangle (e.Graphics, new Rectangle (i * 24 - 2, j * 24 - 2, 24, 24));
-				}
-
-				base.OnPaint (e);
-			}
-
-			void DrawRect (Graphics g, Color color, int x, int y)
-			{
-				using (SolidBrush brush = new SolidBrush (color))
-					g.FillRectangle (brush, x, y, 20, 20);
-				ControlPaint.DrawBorder3D (g, x, y, 20, 20);
-			}
-
-			protected override void OnMouseDown (MouseEventArgs e)
-			{
-				if (e.X % 24 < 20 && e.Y % 24 < 20) {
-					x = e.X;
-					y = e.Y;
-					highlighting = true;
-					Invalidate ();
-				}
-				base.OnMouseDown (e);
-			}
-
-			protected override void OnMouseUp (MouseEventArgs e)
-			{
-				if (highlighting && this.ClientRectangle.Contains (e.X, e.Y)) {
-					if (ColorChanged != null)
-						ColorChanged (colors[y / 24, x / 24], EventArgs.Empty);
-					highlighting = false;
-				}
-				base.OnMouseUp (e);
-			}
-
-			protected override void OnMouseMove (MouseEventArgs e)
-			{
-				if (highlighting) {
-					int old_x = x;
-					int old_y = y;
-					x = e.X;
-					y = e.Y;
-					if ((old_x / 24 != x / 24 || old_y / 24 != y / 24) &&
-						x / 24 < 8 && y / 24 < 8) {
-						Region r = new Region ();
-						r.Union (new Rectangle (old_x - 2, old_y - 2, 24, 24));
-						r.Union (new Rectangle (x - 2, y - 2, 24, 24));
-						Invalidate (r);
-					}
-				}
-				base.OnMouseMove (e);
-			}
+		}
+
+
+		class CustomColorPicker : UserControl
+		{
+			Color[,] colors;
+			bool highlighting;
+			int x, y;
+			public CustomColorPicker ()
+			{
+				colors = new Color[8, 8];
+				colors[0, 0] = Color.White;
+				colors[1, 0] = Color.FromArgb (224, 224, 224);
+				colors[2, 0] = Color.Silver;
+				colors[3, 0] = Color.Gray;
+				colors[4, 0] = Color.FromArgb (64, 64, 64);
+				colors[5, 0] = Color.Black;
+				colors[6, 0] = Color.White;
+				colors[7, 0] = Color.White;
+
+				colors[0, 1] = Color.FromArgb (255, 192, 192);
+				colors[1, 1] = Color.FromArgb (255, 128, 128);
+				colors[2, 1] = Color.Red;
+				colors[3, 1] = Color.FromArgb (192, 0, 0);
+				colors[4, 1] = Color.Maroon;
+				colors[5, 1] = Color.FromArgb (64, 0, 0);
+				colors[6, 1] = Color.White;
+				colors[7, 1] = Color.White;
+
+				colors[0, 2] = Color.FromArgb (255, 224, 192);
+				colors[1, 2] = Color.FromArgb (255, 192, 128);
+				colors[2, 2] = Color.FromArgb (255, 128, 0);
+				colors[3, 2] = Color.FromArgb (192, 64, 0);
+				colors[4, 2] = Color.FromArgb (128, 64, 0);
+				colors[5, 2] = Color.FromArgb (128, 64, 64);
+				colors[6, 2] = Color.White;
+				colors[7, 2] = Color.White;
+
+				colors[0, 3] = Color.FromArgb (255, 255, 192);
+				colors[1, 3] = Color.FromArgb (255, 255, 128);
+				colors[2, 3] = Color.Yellow;
+				colors[3, 3] = Color.FromArgb (192, 192, 0);
+				colors[4, 3] = Color.Olive;
+				colors[5, 3] = Color.FromArgb (64, 64, 0);
+				colors[6, 3] = Color.White;
+				colors[7, 3] = Color.White;
+
+				colors[0, 4] = Color.FromArgb (192, 255, 192);
+				colors[1, 4] = Color.FromArgb (128, 255, 128);
+				colors[2, 4] = Color.Lime;
+				colors[3, 4] = Color.FromArgb (0, 192, 0);
+				colors[4, 4] = Color.Green;
+				colors[5, 4] = Color.FromArgb (0, 64, 0);
+				colors[6, 4] = Color.White;
+				colors[7, 4] = Color.White;
+
+				colors[0, 5] = Color.FromArgb (192, 255, 255);
+				colors[1, 5] = Color.FromArgb (128, 255, 255);
+				colors[2, 5] = Color.Cyan;
+				colors[3, 5] = Color.FromArgb (0, 192, 192);
+				colors[4, 5] = Color.Teal;
+				colors[5, 5] = Color.FromArgb (0, 64, 64);
+				colors[6, 5] = Color.White;
+				colors[7, 5] = Color.White;
+
+				colors[0, 6] = Color.FromArgb (192, 192, 255);
+				colors[1, 6] = Color.FromArgb (128, 128, 255);
+				colors[2, 6] = Color.Blue;
+				colors[3, 6] = Color.FromArgb (0, 0, 192);
+				colors[4, 6] = Color.Navy;
+				colors[5, 6] = Color.FromArgb (0, 0, 64);
+				colors[6, 6] = Color.White;
+				colors[7, 6] = Color.White;
+
+				colors[0, 7] = Color.FromArgb (255, 192, 255);
+				colors[1, 7] = Color.FromArgb (255, 128, 255);
+				colors[2, 7] = Color.Fuchsia;
+				colors[3, 7] = Color.FromArgb (192, 0, 192);
+				colors[4, 7] = Color.Purple;
+				colors[5, 7] = Color.FromArgb (64, 0, 64);
+				colors[6, 7] = Color.White;
+				colors[7, 7] = Color.White;
+			}
+
+			public event EventHandler ColorChanged;
+
+			protected override void OnPaint (PaintEventArgs e)
+			{
+				for (int i = 0; i < 8; i++)
+					for (int j = 0; j < 8; j++) {
+						DrawRect (e.Graphics, colors[i, j], j * 24, i * 24);
+					}
+
+				if (highlighting) {
+					int i = x / 24;
+					int j = y / 24;
+					ControlPaint.DrawFocusRectangle (e.Graphics, new Rectangle (i * 24 - 2, j * 24 - 2, 24, 24));
+				}
+
+				base.OnPaint (e);
+			}
+
+			void DrawRect (Graphics g, Color color, int x, int y)
+			{
+				using (SolidBrush brush = new SolidBrush (color))
+					g.FillRectangle (brush, x, y, 20, 20);
+				ControlPaint.DrawBorder3D (g, x, y, 20, 20);
+			}
+
+			protected override void OnMouseDown (MouseEventArgs e)
+			{
+				if (e.X % 24 < 20 && e.Y % 24 < 20) {
+					x = e.X;
+					y = e.Y;
+					highlighting = true;
+					Invalidate ();
+				}
+				base.OnMouseDown (e);
+			}
+
+			protected override void OnMouseUp (MouseEventArgs e)
+			{
+				if (highlighting && this.ClientRectangle.Contains (e.X, e.Y)) {
+					if (ColorChanged != null)
+						ColorChanged (colors[y / 24, x / 24], EventArgs.Empty);
+					highlighting = false;
+				}
+				base.OnMouseUp (e);
+			}
+
+			protected override void OnMouseMove (MouseEventArgs e)
+			{
+				if (highlighting) {
+					int old_x = x;
+					int old_y = y;
+					x = e.X;
+					y = e.Y;
+					if ((old_x / 24 != x / 24 || old_y / 24 != y / 24) &&
+						x / 24 < 8 && y / 24 < 8) {
+						Region r = new Region ();
+						r.Union (new Rectangle (old_x - 2, old_y - 2, 24, 24));
+						r.Union (new Rectangle (x - 2, y - 2, 24, 24));
+						Invalidate (r);
+					}
+				}
+				base.OnMouseMove (e);
+			}
 		}
 	}
 }
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/Documentation/System.Drawing.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/Documentation/System.Drawing.xml
@@ -1,6085 +1,6085 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Drawing">
-    <class name="Brush" namespace="System.Drawing">
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Brushes" namespace="System.Drawing">
-        <property name="Transparent" propertytype="System.Drawing.Brush" />
-        <property name="AliceBlue" propertytype="System.Drawing.Brush" />
-        <property name="AntiqueWhite" propertytype="System.Drawing.Brush" />
-        <property name="Aqua" propertytype="System.Drawing.Brush" />
-        <property name="Aquamarine" propertytype="System.Drawing.Brush" />
-        <property name="Azure" propertytype="System.Drawing.Brush" />
-        <property name="Beige" propertytype="System.Drawing.Brush" />
-        <property name="Bisque" propertytype="System.Drawing.Brush" />
-        <property name="Black" propertytype="System.Drawing.Brush" />
-        <property name="BlanchedAlmond" propertytype="System.Drawing.Brush" />
-        <property name="Blue" propertytype="System.Drawing.Brush" />
-        <property name="BlueViolet" propertytype="System.Drawing.Brush" />
-        <property name="Brown" propertytype="System.Drawing.Brush" />
-        <property name="BurlyWood" propertytype="System.Drawing.Brush" />
-        <property name="CadetBlue" propertytype="System.Drawing.Brush" />
-        <property name="Chartreuse" propertytype="System.Drawing.Brush" />
-        <property name="Chocolate" propertytype="System.Drawing.Brush" />
-        <property name="Coral" propertytype="System.Drawing.Brush" />
-        <property name="CornflowerBlue" propertytype="System.Drawing.Brush" />
-        <property name="Cornsilk" propertytype="System.Drawing.Brush" />
-        <property name="Crimson" propertytype="System.Drawing.Brush" />
-        <property name="Cyan" propertytype="System.Drawing.Brush" />
-        <property name="DarkBlue" propertytype="System.Drawing.Brush" />
-        <property name="DarkCyan" propertytype="System.Drawing.Brush" />
-        <property name="DarkGoldenrod" propertytype="System.Drawing.Brush" />
-        <property name="DarkGray" propertytype="System.Drawing.Brush" />
-        <property name="DarkGreen" propertytype="System.Drawing.Brush" />
-        <property name="DarkKhaki" propertytype="System.Drawing.Brush" />
-        <property name="DarkMagenta" propertytype="System.Drawing.Brush" />
-        <property name="DarkOliveGreen" propertytype="System.Drawing.Brush" />
-        <property name="DarkOrange" propertytype="System.Drawing.Brush" />
-        <property name="DarkOrchid" propertytype="System.Drawing.Brush" />
-        <property name="DarkRed" propertytype="System.Drawing.Brush" />
-        <property name="DarkSalmon" propertytype="System.Drawing.Brush" />
-        <property name="DarkSeaGreen" propertytype="System.Drawing.Brush" />
-        <property name="DarkSlateBlue" propertytype="System.Drawing.Brush" />
-        <property name="DarkSlateGray" propertytype="System.Drawing.Brush" />
-        <property name="DarkTurquoise" propertytype="System.Drawing.Brush" />
-        <property name="DarkViolet" propertytype="System.Drawing.Brush" />
-        <property name="DeepPink" propertytype="System.Drawing.Brush" />
-        <property name="DeepSkyBlue" propertytype="System.Drawing.Brush" />
-        <property name="DimGray" propertytype="System.Drawing.Brush" />
-        <property name="DodgerBlue" propertytype="System.Drawing.Brush" />
-        <property name="Firebrick" propertytype="System.Drawing.Brush" />
-        <property name="FloralWhite" propertytype="System.Drawing.Brush" />
-        <property name="ForestGreen" propertytype="System.Drawing.Brush" />
-        <property name="Fuchsia" propertytype="System.Drawing.Brush" />
-        <property name="Gainsboro" propertytype="System.Drawing.Brush" />
-        <property name="GhostWhite" propertytype="System.Drawing.Brush" />
-        <property name="Gold" propertytype="System.Drawing.Brush" />
-        <property name="Goldenrod" propertytype="System.Drawing.Brush" />
-        <property name="Gray" propertytype="System.Drawing.Brush" />
-        <property name="Green" propertytype="System.Drawing.Brush" />
-        <property name="GreenYellow" propertytype="System.Drawing.Brush" />
-        <property name="Honeydew" propertytype="System.Drawing.Brush" />
-        <property name="HotPink" propertytype="System.Drawing.Brush" />
-        <property name="IndianRed" propertytype="System.Drawing.Brush" />
-        <property name="Indigo" propertytype="System.Drawing.Brush" />
-        <property name="Ivory" propertytype="System.Drawing.Brush" />
-        <property name="Khaki" propertytype="System.Drawing.Brush" />
-        <property name="Lavender" propertytype="System.Drawing.Brush" />
-        <property name="LavenderBlush" propertytype="System.Drawing.Brush" />
-        <property name="LawnGreen" propertytype="System.Drawing.Brush" />
-        <property name="LemonChiffon" propertytype="System.Drawing.Brush" />
-        <property name="LightBlue" propertytype="System.Drawing.Brush" />
-        <property name="LightCoral" propertytype="System.Drawing.Brush" />
-        <property name="LightCyan" propertytype="System.Drawing.Brush" />
-        <property name="LightGoldenrodYellow" propertytype="System.Drawing.Brush" />
-        <property name="LightGreen" propertytype="System.Drawing.Brush" />
-        <property name="LightGray" propertytype="System.Drawing.Brush" />
-        <property name="LightPink" propertytype="System.Drawing.Brush" />
-        <property name="LightSalmon" propertytype="System.Drawing.Brush" />
-        <property name="LightSeaGreen" propertytype="System.Drawing.Brush" />
-        <property name="LightSkyBlue" propertytype="System.Drawing.Brush" />
-        <property name="LightSlateGray" propertytype="System.Drawing.Brush" />
-        <property name="LightSteelBlue" propertytype="System.Drawing.Brush" />
-        <property name="LightYellow" propertytype="System.Drawing.Brush" />
-        <property name="Lime" propertytype="System.Drawing.Brush" />
-        <property name="LimeGreen" propertytype="System.Drawing.Brush" />
-        <property name="Linen" propertytype="System.Drawing.Brush" />
-        <property name="Magenta" propertytype="System.Drawing.Brush" />
-        <property name="Maroon" propertytype="System.Drawing.Brush" />
-        <property name="MediumAquamarine" propertytype="System.Drawing.Brush" />
-        <property name="MediumBlue" propertytype="System.Drawing.Brush" />
-        <property name="MediumOrchid" propertytype="System.Drawing.Brush" />
-        <property name="MediumPurple" propertytype="System.Drawing.Brush" />
-        <property name="MediumSeaGreen" propertytype="System.Drawing.Brush" />
-        <property name="MediumSlateBlue" propertytype="System.Drawing.Brush" />
-        <property name="MediumSpringGreen" propertytype="System.Drawing.Brush" />
-        <property name="MediumTurquoise" propertytype="System.Drawing.Brush" />
-        <property name="MediumVioletRed" propertytype="System.Drawing.Brush" />
-        <property name="MidnightBlue" propertytype="System.Drawing.Brush" />
-        <property name="MintCream" propertytype="System.Drawing.Brush" />
-        <property name="MistyRose" propertytype="System.Drawing.Brush" />
-        <property name="Moccasin" propertytype="System.Drawing.Brush" />
-        <property name="NavajoWhite" propertytype="System.Drawing.Brush" />
-        <property name="Navy" propertytype="System.Drawing.Brush" />
-        <property name="OldLace" propertytype="System.Drawing.Brush" />
-        <property name="Olive" propertytype="System.Drawing.Brush" />
-        <property name="OliveDrab" propertytype="System.Drawing.Brush" />
-        <property name="Orange" propertytype="System.Drawing.Brush" />
-        <property name="OrangeRed" propertytype="System.Drawing.Brush" />
-        <property name="Orchid" propertytype="System.Drawing.Brush" />
-        <property name="PaleGoldenrod" propertytype="System.Drawing.Brush" />
-        <property name="PaleGreen" propertytype="System.Drawing.Brush" />
-        <property name="PaleTurquoise" propertytype="System.Drawing.Brush" />
-        <property name="PaleVioletRed" propertytype="System.Drawing.Brush" />
-        <property name="PapayaWhip" propertytype="System.Drawing.Brush" />
-        <property name="PeachPuff" propertytype="System.Drawing.Brush" />
-        <property name="Peru" propertytype="System.Drawing.Brush" />
-        <property name="Pink" propertytype="System.Drawing.Brush" />
-        <property name="Plum" propertytype="System.Drawing.Brush" />
-        <property name="PowderBlue" propertytype="System.Drawing.Brush" />
-        <property name="Purple" propertytype="System.Drawing.Brush" />
-        <property name="Red" propertytype="System.Drawing.Brush" />
-        <property name="RosyBrown" propertytype="System.Drawing.Brush" />
-        <property name="RoyalBlue" propertytype="System.Drawing.Brush" />
-        <property name="SaddleBrown" propertytype="System.Drawing.Brush" />
-        <property name="Salmon" propertytype="System.Drawing.Brush" />
-        <property name="SandyBrown" propertytype="System.Drawing.Brush" />
-        <property name="SeaGreen" propertytype="System.Drawing.Brush" />
-        <property name="SeaShell" propertytype="System.Drawing.Brush" />
-        <property name="Sienna" propertytype="System.Drawing.Brush" />
-        <property name="Silver" propertytype="System.Drawing.Brush" />
-        <property name="SkyBlue" propertytype="System.Drawing.Brush" />
-        <property name="SlateBlue" propertytype="System.Drawing.Brush" />
-        <property name="SlateGray" propertytype="System.Drawing.Brush" />
-        <property name="Snow" propertytype="System.Drawing.Brush" />
-        <property name="SpringGreen" propertytype="System.Drawing.Brush" />
-        <property name="SteelBlue" propertytype="System.Drawing.Brush" />
-        <property name="Tan" propertytype="System.Drawing.Brush" />
-        <property name="Teal" propertytype="System.Drawing.Brush" />
-        <property name="Thistle" propertytype="System.Drawing.Brush" />
-        <property name="Tomato" propertytype="System.Drawing.Brush" />
-        <property name="Turquoise" propertytype="System.Drawing.Brush" />
-        <property name="Violet" propertytype="System.Drawing.Brush" />
-        <property name="Wheat" propertytype="System.Drawing.Brush" />
-        <property name="White" propertytype="System.Drawing.Brush" />
-        <property name="WhiteSmoke" propertytype="System.Drawing.Brush" />
-        <property name="Yellow" propertytype="System.Drawing.Brush" />
-        <property name="YellowGreen" propertytype="System.Drawing.Brush" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorConverter" namespace="System.Drawing">
-        <constructor name="ColorConverter" argnames="" />
-        <property name="Colors" propertytype="System.Collections.Hashtable" />
-        <property name="SystemColors" propertytype="System.Collections.Hashtable" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FontConverter" namespace="System.Drawing">
-        <class name="FontNameConverter" namespace="System.Drawing">
-            <constructor name="FontNameConverter" argnames="" />
-            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="FontUnitConverter" namespace="System.Drawing">
-            <constructor name="FontUnitConverter" argnames="" />
-            <property name="EnumType" inherited="System.ComponentModel.EnumConverter" propertytype="System.Type" />
-            <property name="Values" inherited="System.ComponentModel.EnumConverter" propertytype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-            <property name="Comparer" inherited="System.ComponentModel.EnumConverter" propertytype="System.Collections.IComparer" />
-            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
-            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
-            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="FontUnitConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FontNameConverter" namespace="System.Drawing">
-        <constructor name="FontNameConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FontUnitConverter" namespace="System.Drawing">
-        <constructor name="FontUnitConverter" argnames="" />
-        <property name="EnumType" inherited="System.ComponentModel.EnumConverter" propertytype="System.Type" />
-        <property name="Values" inherited="System.ComponentModel.EnumConverter" propertytype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <property name="Comparer" inherited="System.ComponentModel.EnumConverter" propertytype="System.Collections.IComparer" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IconConverter" namespace="System.Drawing">
-        <constructor name="IconConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageAnimator" namespace="System.Drawing">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="UpdateFrames(System.Drawing.Image)" argnames="image" returntype="System.Void" />
-        <method name="UpdateFrames" argnames="" returntype="System.Void" />
-        <method name="Animate(System.Drawing.Image, System.EventHandler)" argnames="image, onFrameChangedHandler" returntype="System.Void" />
-        <method name="CanAnimate(System.Drawing.Image)" argnames="image" returntype="System.Boolean" />
-        <method name="StopAnimate(System.Drawing.Image, System.EventHandler)" argnames="image, onFrameChangedHandler" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageConverter" namespace="System.Drawing">
-        <constructor name="ImageConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Pens" namespace="System.Drawing">
-        <property name="Transparent" propertytype="System.Drawing.Pen" />
-        <property name="AliceBlue" propertytype="System.Drawing.Pen" />
-        <property name="AntiqueWhite" propertytype="System.Drawing.Pen" />
-        <property name="Aqua" propertytype="System.Drawing.Pen" />
-        <property name="Aquamarine" propertytype="System.Drawing.Pen" />
-        <property name="Azure" propertytype="System.Drawing.Pen" />
-        <property name="Beige" propertytype="System.Drawing.Pen" />
-        <property name="Bisque" propertytype="System.Drawing.Pen" />
-        <property name="Black" propertytype="System.Drawing.Pen" />
-        <property name="BlanchedAlmond" propertytype="System.Drawing.Pen" />
-        <property name="Blue" propertytype="System.Drawing.Pen" />
-        <property name="BlueViolet" propertytype="System.Drawing.Pen" />
-        <property name="Brown" propertytype="System.Drawing.Pen" />
-        <property name="BurlyWood" propertytype="System.Drawing.Pen" />
-        <property name="CadetBlue" propertytype="System.Drawing.Pen" />
-        <property name="Chartreuse" propertytype="System.Drawing.Pen" />
-        <property name="Chocolate" propertytype="System.Drawing.Pen" />
-        <property name="Coral" propertytype="System.Drawing.Pen" />
-        <property name="CornflowerBlue" propertytype="System.Drawing.Pen" />
-        <property name="Cornsilk" propertytype="System.Drawing.Pen" />
-        <property name="Crimson" propertytype="System.Drawing.Pen" />
-        <property name="Cyan" propertytype="System.Drawing.Pen" />
-        <property name="DarkBlue" propertytype="System.Drawing.Pen" />
-        <property name="DarkCyan" propertytype="System.Drawing.Pen" />
-        <property name="DarkGoldenrod" propertytype="System.Drawing.Pen" />
-        <property name="DarkGray" propertytype="System.Drawing.Pen" />
-        <property name="DarkGreen" propertytype="System.Drawing.Pen" />
-        <property name="DarkKhaki" propertytype="System.Drawing.Pen" />
-        <property name="DarkMagenta" propertytype="System.Drawing.Pen" />
-        <property name="DarkOliveGreen" propertytype="System.Drawing.Pen" />
-        <property name="DarkOrange" propertytype="System.Drawing.Pen" />
-        <property name="DarkOrchid" propertytype="System.Drawing.Pen" />
-        <property name="DarkRed" propertytype="System.Drawing.Pen" />
-        <property name="DarkSalmon" propertytype="System.Drawing.Pen" />
-        <property name="DarkSeaGreen" propertytype="System.Drawing.Pen" />
-        <property name="DarkSlateBlue" propertytype="System.Drawing.Pen" />
-        <property name="DarkSlateGray" propertytype="System.Drawing.Pen" />
-        <property name="DarkTurquoise" propertytype="System.Drawing.Pen" />
-        <property name="DarkViolet" propertytype="System.Drawing.Pen" />
-        <property name="DeepPink" propertytype="System.Drawing.Pen" />
-        <property name="DeepSkyBlue" propertytype="System.Drawing.Pen" />
-        <property name="DimGray" propertytype="System.Drawing.Pen" />
-        <property name="DodgerBlue" propertytype="System.Drawing.Pen" />
-        <property name="Firebrick" propertytype="System.Drawing.Pen" />
-        <property name="FloralWhite" propertytype="System.Drawing.Pen" />
-        <property name="ForestGreen" propertytype="System.Drawing.Pen" />
-        <property name="Fuchsia" propertytype="System.Drawing.Pen" />
-        <property name="Gainsboro" propertytype="System.Drawing.Pen" />
-        <property name="GhostWhite" propertytype="System.Drawing.Pen" />
-        <property name="Gold" propertytype="System.Drawing.Pen" />
-        <property name="Goldenrod" propertytype="System.Drawing.Pen" />
-        <property name="Gray" propertytype="System.Drawing.Pen" />
-        <property name="Green" propertytype="System.Drawing.Pen" />
-        <property name="GreenYellow" propertytype="System.Drawing.Pen" />
-        <property name="Honeydew" propertytype="System.Drawing.Pen" />
-        <property name="HotPink" propertytype="System.Drawing.Pen" />
-        <property name="IndianRed" propertytype="System.Drawing.Pen" />
-        <property name="Indigo" propertytype="System.Drawing.Pen" />
-        <property name="Ivory" propertytype="System.Drawing.Pen" />
-        <property name="Khaki" propertytype="System.Drawing.Pen" />
-        <property name="Lavender" propertytype="System.Drawing.Pen" />
-        <property name="LavenderBlush" propertytype="System.Drawing.Pen" />
-        <property name="LawnGreen" propertytype="System.Drawing.Pen" />
-        <property name="LemonChiffon" propertytype="System.Drawing.Pen" />
-        <property name="LightBlue" propertytype="System.Drawing.Pen" />
-        <property name="LightCoral" propertytype="System.Drawing.Pen" />
-        <property name="LightCyan" propertytype="System.Drawing.Pen" />
-        <property name="LightGoldenrodYellow" propertytype="System.Drawing.Pen" />
-        <property name="LightGreen" propertytype="System.Drawing.Pen" />
-        <property name="LightGray" propertytype="System.Drawing.Pen" />
-        <property name="LightPink" propertytype="System.Drawing.Pen" />
-        <property name="LightSalmon" propertytype="System.Drawing.Pen" />
-        <property name="LightSeaGreen" propertytype="System.Drawing.Pen" />
-        <property name="LightSkyBlue" propertytype="System.Drawing.Pen" />
-        <property name="LightSlateGray" propertytype="System.Drawing.Pen" />
-        <property name="LightSteelBlue" propertytype="System.Drawing.Pen" />
-        <property name="LightYellow" propertytype="System.Drawing.Pen" />
-        <property name="Lime" propertytype="System.Drawing.Pen" />
-        <property name="LimeGreen" propertytype="System.Drawing.Pen" />
-        <property name="Linen" propertytype="System.Drawing.Pen" />
-        <property name="Magenta" propertytype="System.Drawing.Pen" />
-        <property name="Maroon" propertytype="System.Drawing.Pen" />
-        <property name="MediumAquamarine" propertytype="System.Drawing.Pen" />
-        <property name="MediumBlue" propertytype="System.Drawing.Pen" />
-        <property name="MediumOrchid" propertytype="System.Drawing.Pen" />
-        <property name="MediumPurple" propertytype="System.Drawing.Pen" />
-        <property name="MediumSeaGreen" propertytype="System.Drawing.Pen" />
-        <property name="MediumSlateBlue" propertytype="System.Drawing.Pen" />
-        <property name="MediumSpringGreen" propertytype="System.Drawing.Pen" />
-        <property name="MediumTurquoise" propertytype="System.Drawing.Pen" />
-        <property name="MediumVioletRed" propertytype="System.Drawing.Pen" />
-        <property name="MidnightBlue" propertytype="System.Drawing.Pen" />
-        <property name="MintCream" propertytype="System.Drawing.Pen" />
-        <property name="MistyRose" propertytype="System.Drawing.Pen" />
-        <property name="Moccasin" propertytype="System.Drawing.Pen" />
-        <property name="NavajoWhite" propertytype="System.Drawing.Pen" />
-        <property name="Navy" propertytype="System.Drawing.Pen" />
-        <property name="OldLace" propertytype="System.Drawing.Pen" />
-        <property name="Olive" propertytype="System.Drawing.Pen" />
-        <property name="OliveDrab" propertytype="System.Drawing.Pen" />
-        <property name="Orange" propertytype="System.Drawing.Pen" />
-        <property name="OrangeRed" propertytype="System.Drawing.Pen" />
-        <property name="Orchid" propertytype="System.Drawing.Pen" />
-        <property name="PaleGoldenrod" propertytype="System.Drawing.Pen" />
-        <property name="PaleGreen" propertytype="System.Drawing.Pen" />
-        <property name="PaleTurquoise" propertytype="System.Drawing.Pen" />
-        <property name="PaleVioletRed" propertytype="System.Drawing.Pen" />
-        <property name="PapayaWhip" propertytype="System.Drawing.Pen" />
-        <property name="PeachPuff" propertytype="System.Drawing.Pen" />
-        <property name="Peru" propertytype="System.Drawing.Pen" />
-        <property name="Pink" propertytype="System.Drawing.Pen" />
-        <property name="Plum" propertytype="System.Drawing.Pen" />
-        <property name="PowderBlue" propertytype="System.Drawing.Pen" />
-        <property name="Purple" propertytype="System.Drawing.Pen" />
-        <property name="Red" propertytype="System.Drawing.Pen" />
-        <property name="RosyBrown" propertytype="System.Drawing.Pen" />
-        <property name="RoyalBlue" propertytype="System.Drawing.Pen" />
-        <property name="SaddleBrown" propertytype="System.Drawing.Pen" />
-        <property name="Salmon" propertytype="System.Drawing.Pen" />
-        <property name="SandyBrown" propertytype="System.Drawing.Pen" />
-        <property name="SeaGreen" propertytype="System.Drawing.Pen" />
-        <property name="SeaShell" propertytype="System.Drawing.Pen" />
-        <property name="Sienna" propertytype="System.Drawing.Pen" />
-        <property name="Silver" propertytype="System.Drawing.Pen" />
-        <property name="SkyBlue" propertytype="System.Drawing.Pen" />
-        <property name="SlateBlue" propertytype="System.Drawing.Pen" />
-        <property name="SlateGray" propertytype="System.Drawing.Pen" />
-        <property name="Snow" propertytype="System.Drawing.Pen" />
-        <property name="SpringGreen" propertytype="System.Drawing.Pen" />
-        <property name="SteelBlue" propertytype="System.Drawing.Pen" />
-        <property name="Tan" propertytype="System.Drawing.Pen" />
-        <property name="Teal" propertytype="System.Drawing.Pen" />
-        <property name="Thistle" propertytype="System.Drawing.Pen" />
-        <property name="Tomato" propertytype="System.Drawing.Pen" />
-        <property name="Turquoise" propertytype="System.Drawing.Pen" />
-        <property name="Violet" propertytype="System.Drawing.Pen" />
-        <property name="Wheat" propertytype="System.Drawing.Pen" />
-        <property name="White" propertytype="System.Drawing.Pen" />
-        <property name="WhiteSmoke" propertytype="System.Drawing.Pen" />
-        <property name="Yellow" propertytype="System.Drawing.Pen" />
-        <property name="YellowGreen" propertytype="System.Drawing.Pen" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PointConverter" namespace="System.Drawing">
-        <constructor name="PointConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RectangleConverter" namespace="System.Drawing">
-        <constructor name="RectangleConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Region" namespace="System.Drawing">
-        <constructor name="Region" argnames="" />
-        <constructor name="Region(System.Drawing.RectangleF)" argnames="rect" />
-        <constructor name="Region(System.Drawing.Rectangle)" argnames="rect" />
-        <constructor name="Region(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" />
-        <constructor name="Region(System.Drawing.Drawing2D.RegionData)" argnames="rgnData" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromHrgn(System.IntPtr)" argnames="hrgn" returntype="System.Drawing.Region" />
-        <method name="Clone" argnames="" returntype="System.Drawing.Region" />
-        <method name="MakeInfinite" argnames="" returntype="System.Void" />
-        <method name="MakeEmpty" argnames="" returntype="System.Void" />
-        <method name="Intersect(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="Intersect(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="Intersect(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
-        <method name="Intersect(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="Union(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="Union(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="Union(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
-        <method name="Union(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="Xor(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="Xor(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="Xor(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
-        <method name="Xor(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="Exclude(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="Exclude(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="Exclude(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
-        <method name="Exclude(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="Complement(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="Complement(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="Complement(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
-        <method name="Complement(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="Translate(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="Translate(System.Int32, System.Int32)" argnames="dx, dy" returntype="System.Void" />
-        <method name="Transform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="GetBounds(System.Drawing.Graphics)" argnames="g" returntype="System.Drawing.RectangleF" />
-        <method name="GetHrgn(System.Drawing.Graphics)" argnames="g" returntype="System.IntPtr" />
-        <method name="IsEmpty(System.Drawing.Graphics)" argnames="g" returntype="System.Boolean" />
-        <method name="IsInfinite(System.Drawing.Graphics)" argnames="g" returntype="System.Boolean" />
-        <method name="Equals(System.Drawing.Region, System.Drawing.Graphics)" argnames="region, g" returntype="System.Boolean" />
-        <method name="GetRegionData" argnames="" returntype="System.Drawing.Drawing2D.RegionData" />
-        <method name="IsVisible(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.PointF)" argnames="point" returntype="System.Boolean" />
-        <method name="IsVisible(System.Single, System.Single, System.Drawing.Graphics)" argnames="x, y, g" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.PointF, System.Drawing.Graphics)" argnames="point, g" returntype="System.Boolean" />
-        <method name="IsVisible(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
-        <method name="IsVisible(System.Single, System.Single, System.Single, System.Single, System.Drawing.Graphics)" argnames="x, y, width, height, g" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.RectangleF, System.Drawing.Graphics)" argnames="rect, g" returntype="System.Boolean" />
-        <method name="IsVisible(System.Int32, System.Int32, System.Drawing.Graphics)" argnames="x, y, g" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Point, System.Drawing.Graphics)" argnames="point, g" returntype="System.Boolean" />
-        <method name="IsVisible(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
-        <method name="IsVisible(System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.Graphics)" argnames="x, y, width, height, g" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Rectangle, System.Drawing.Graphics)" argnames="rect, g" returntype="System.Boolean" />
-        <method name="GetRegionScans(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Drawing.RectangleF[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SizeConverter" namespace="System.Drawing">
-        <constructor name="SizeConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SystemBrushes" namespace="System.Drawing">
-        <property name="ActiveBorder" propertytype="System.Drawing.Brush" />
-        <property name="ActiveCaption" propertytype="System.Drawing.Brush" />
-        <property name="ActiveCaptionText" propertytype="System.Drawing.Brush" />
-        <property name="AppWorkspace" propertytype="System.Drawing.Brush" />
-        <property name="Desktop" propertytype="System.Drawing.Brush" />
-        <property name="Control" propertytype="System.Drawing.Brush" />
-        <property name="ControlLightLight" propertytype="System.Drawing.Brush" />
-        <property name="ControlLight" propertytype="System.Drawing.Brush" />
-        <property name="ControlDark" propertytype="System.Drawing.Brush" />
-        <property name="ControlDarkDark" propertytype="System.Drawing.Brush" />
-        <property name="ControlText" propertytype="System.Drawing.Brush" />
-        <property name="Highlight" propertytype="System.Drawing.Brush" />
-        <property name="HighlightText" propertytype="System.Drawing.Brush" />
-        <property name="HotTrack" propertytype="System.Drawing.Brush" />
-        <property name="InactiveCaption" propertytype="System.Drawing.Brush" />
-        <property name="InactiveBorder" propertytype="System.Drawing.Brush" />
-        <property name="Info" propertytype="System.Drawing.Brush" />
-        <property name="Menu" propertytype="System.Drawing.Brush" />
-        <property name="ScrollBar" propertytype="System.Drawing.Brush" />
-        <property name="Window" propertytype="System.Drawing.Brush" />
-        <property name="WindowText" propertytype="System.Drawing.Brush" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromSystemColor(System.Drawing.Color)" argnames="c" returntype="System.Drawing.Brush" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SystemColors" namespace="System.Drawing">
-        <property name="ActiveBorder" propertytype="System.Drawing.Color" />
-        <property name="ActiveCaption" propertytype="System.Drawing.Color" />
-        <property name="ActiveCaptionText" propertytype="System.Drawing.Color" />
-        <property name="AppWorkspace" propertytype="System.Drawing.Color" />
-        <property name="Control" propertytype="System.Drawing.Color" />
-        <property name="ControlDark" propertytype="System.Drawing.Color" />
-        <property name="ControlDarkDark" propertytype="System.Drawing.Color" />
-        <property name="ControlLight" propertytype="System.Drawing.Color" />
-        <property name="ControlLightLight" propertytype="System.Drawing.Color" />
-        <property name="ControlText" propertytype="System.Drawing.Color" />
-        <property name="Desktop" propertytype="System.Drawing.Color" />
-        <property name="GrayText" propertytype="System.Drawing.Color" />
-        <property name="Highlight" propertytype="System.Drawing.Color" />
-        <property name="HighlightText" propertytype="System.Drawing.Color" />
-        <property name="HotTrack" propertytype="System.Drawing.Color" />
-        <property name="InactiveBorder" propertytype="System.Drawing.Color" />
-        <property name="InactiveCaption" propertytype="System.Drawing.Color" />
-        <property name="InactiveCaptionText" propertytype="System.Drawing.Color" />
-        <property name="Info" propertytype="System.Drawing.Color" />
-        <property name="InfoText" propertytype="System.Drawing.Color" />
-        <property name="Menu" propertytype="System.Drawing.Color" />
-        <property name="MenuText" propertytype="System.Drawing.Color" />
-        <property name="ScrollBar" propertytype="System.Drawing.Color" />
-        <property name="Window" propertytype="System.Drawing.Color" />
-        <property name="WindowFrame" propertytype="System.Drawing.Color" />
-        <property name="WindowText" propertytype="System.Drawing.Color" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SystemIcons" namespace="System.Drawing">
-        <property name="Application" propertytype="System.Drawing.Icon" />
-        <property name="Asterisk" propertytype="System.Drawing.Icon" />
-        <property name="Error" propertytype="System.Drawing.Icon" />
-        <property name="Exclamation" propertytype="System.Drawing.Icon" />
-        <property name="Hand" propertytype="System.Drawing.Icon" />
-        <property name="Information" propertytype="System.Drawing.Icon" />
-        <property name="Question" propertytype="System.Drawing.Icon" />
-        <property name="Warning" propertytype="System.Drawing.Icon" />
-        <property name="WinLogo" propertytype="System.Drawing.Icon" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SystemPens" namespace="System.Drawing">
-        <property name="ActiveCaptionText" propertytype="System.Drawing.Pen" />
-        <property name="Control" propertytype="System.Drawing.Pen" />
-        <property name="ControlText" propertytype="System.Drawing.Pen" />
-        <property name="ControlDark" propertytype="System.Drawing.Pen" />
-        <property name="ControlDarkDark" propertytype="System.Drawing.Pen" />
-        <property name="ControlLight" propertytype="System.Drawing.Pen" />
-        <property name="ControlLightLight" propertytype="System.Drawing.Pen" />
-        <property name="GrayText" propertytype="System.Drawing.Pen" />
-        <property name="Highlight" propertytype="System.Drawing.Pen" />
-        <property name="HighlightText" propertytype="System.Drawing.Pen" />
-        <property name="InactiveCaptionText" propertytype="System.Drawing.Pen" />
-        <property name="InfoText" propertytype="System.Drawing.Pen" />
-        <property name="MenuText" propertytype="System.Drawing.Pen" />
-        <property name="WindowFrame" propertytype="System.Drawing.Pen" />
-        <property name="WindowText" propertytype="System.Drawing.Pen" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromSystemColor(System.Drawing.Color)" argnames="c" returntype="System.Drawing.Pen" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolboxBitmapAttribute" namespace="System.Drawing">
-        <constructor name="ToolboxBitmapAttribute(System.String)" argnames="imageFile" />
-        <constructor name="ToolboxBitmapAttribute(System.Type)" argnames="t" />
-        <constructor name="ToolboxBitmapAttribute(System.Type, System.String)" argnames="t, name" />
-        <field name="Default" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetImage(System.Object)" argnames="component" returntype="System.Drawing.Image" />
-        <method name="GetImage(System.Object, System.Boolean)" argnames="component, large" returntype="System.Drawing.Image" />
-        <method name="GetImage(System.Type)" argnames="type" returntype="System.Drawing.Image" />
-        <method name="GetImage(System.Type, System.Boolean)" argnames="type, large" returntype="System.Drawing.Image" />
-        <method name="GetImage(System.Type, System.String, System.Boolean)" argnames="type, imgName, large" returntype="System.Drawing.Image" />
-        <method name="GetImageFromResource(System.Type, System.String, System.Boolean)" argnames="t, imageName, large" returntype="System.Drawing.Image" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Image" namespace="System.Drawing">
-        <delegate name="GetThumbnailImageAbort" namespace="System.Drawing">
-            <constructor name="GetThumbnailImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
-            <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-            <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-            <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-            <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
-            <method name="Invoke" argnames="" returntype="System.Boolean" />
-            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-            <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-            <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-            <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-            <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-            <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-            <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </delegate>
-        <property name="ImageType" propertytype="System.Drawing.Image+ImageTypeEnum" />
-        <property name="PhysicalDimension" propertytype="System.Drawing.SizeF" />
-        <property name="Size" propertytype="System.Drawing.Size" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="HorizontalResolution" propertytype="System.Single" />
-        <property name="VerticalResolution" propertytype="System.Single" />
-        <property name="Flags" propertytype="System.Int32" />
-        <property name="RawFormat" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="PixelFormat" propertytype="System.Drawing.Imaging.PixelFormat" />
-        <property name="Palette" propertytype="System.Drawing.Imaging.ColorPalette" />
-        <property name="FrameDimensionsList" propertytype="System.Guid[]" />
-        <property name="PropertyIdList" propertytype="System.Int32[]" />
-        <property name="PropertyItems" propertytype="System.Drawing.Imaging.PropertyItem[]" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromFile(System.String)" argnames="filename" returntype="System.Drawing.Image" />
-        <method name="FromFile(System.String, System.Boolean)" argnames="filename, useEmbeddedColorManagement" returntype="System.Drawing.Image" />
-        <method name="FromStream(System.IO.Stream)" argnames="stream" returntype="System.Drawing.Image" />
-        <method name="FromStream(System.IO.Stream, System.Boolean)" argnames="stream, useEmbeddedColorManagement" returntype="System.Drawing.Image" />
-        <method name="GetEncoderParameterList(System.Guid)" argnames="encoder" returntype="System.Drawing.Imaging.EncoderParameters" />
-        <method name="Save(System.String)" argnames="filename" returntype="System.Void" />
-        <method name="Save(System.String, System.Drawing.Imaging.ImageFormat)" argnames="filename, format" returntype="System.Void" />
-        <method name="Save(System.String, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="filename, encoder, encoderParams" returntype="System.Void" />
-        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageFormat)" argnames="stream, format" returntype="System.Void" />
-        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="stream, encoder, encoderParams" returntype="System.Void" />
-        <method name="SaveAdd(System.Drawing.Imaging.EncoderParameters)" argnames="encoderParams" returntype="System.Void" />
-        <method name="SaveAdd(System.Drawing.Image, System.Drawing.Imaging.EncoderParameters)" argnames="image, encoderParams" returntype="System.Void" />
-        <method name="GetBounds(System.Drawing.GraphicsUnit&amp;)" argnames="pageUnit" returntype="System.Drawing.RectangleF" />
-        <method name="GetThumbnailImage(System.Int32, System.Int32, System.Drawing.Image.GetThumbnailImageAbort, System.IntPtr)" argnames="thumbWidth, thumbHeight, callback, callbackData" returntype="System.Drawing.Image" />
-        <method name="GetFrameCount(System.Drawing.Imaging.FrameDimension)" argnames="dimension" returntype="System.Int32" />
-        <method name="SelectActiveFrame(System.Drawing.Imaging.FrameDimension, System.Int32)" argnames="dimension, frameIndex" returntype="System.Int32" />
-        <method name="RotateFlip(System.Drawing.RotateFlipType)" argnames="rotateFlipType" returntype="System.Void" />
-        <method name="GetPropertyItem(System.Int32)" argnames="propid" returntype="System.Drawing.Imaging.PropertyItem" />
-        <method name="RemovePropertyItem(System.Int32)" argnames="propid" returntype="System.Void" />
-        <method name="SetPropertyItem(System.Drawing.Imaging.PropertyItem)" argnames="propitem" returntype="System.Void" />
-        <method name="FromHbitmap(System.IntPtr)" argnames="hbitmap" returntype="System.Drawing.Bitmap" />
-        <method name="FromHbitmap(System.IntPtr, System.IntPtr)" argnames="hbitmap, hpalette" returntype="System.Drawing.Bitmap" />
-        <method name="GetPixelFormatSize(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Int32" />
-        <method name="IsAlphaPixelFormat(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Boolean" />
-        <method name="IsExtendedPixelFormat(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Boolean" />
-        <method name="IsCanonicalPixelFormat(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Bitmap" namespace="System.Drawing">
-        <constructor name="Bitmap(System.String)" argnames="filename" />
-        <constructor name="Bitmap(System.String, System.Boolean)" argnames="filename, useIcm" />
-        <constructor name="Bitmap(System.Type, System.String)" argnames="type, resource" />
-        <constructor name="Bitmap(System.IO.Stream)" argnames="stream" />
-        <constructor name="Bitmap(System.IO.Stream, System.Boolean)" argnames="stream, useIcm" />
-        <constructor name="Bitmap(System.Int32, System.Int32, System.Int32, System.Drawing.Imaging.PixelFormat, System.IntPtr)" argnames="width, height, stride, format, scan0" />
-        <constructor name="Bitmap(System.Int32, System.Int32, System.Drawing.Imaging.PixelFormat)" argnames="width, height, format" />
-        <constructor name="Bitmap(System.Int32, System.Int32)" argnames="width, height" />
-        <constructor name="Bitmap(System.Int32, System.Int32, System.Drawing.Graphics)" argnames="width, height, g" />
-        <constructor name="Bitmap(System.Drawing.Image)" argnames="original" />
-        <constructor name="Bitmap(System.Drawing.Image, System.Int32, System.Int32)" argnames="original, width, height" />
-        <constructor name="Bitmap(System.Drawing.Image, System.Drawing.Size)" argnames="original, newSize" />
-        <property name="PhysicalDimension" inherited="System.Drawing.Image" propertytype="System.Drawing.SizeF" />
-        <property name="Size" inherited="System.Drawing.Image" propertytype="System.Drawing.Size" />
-        <property name="Width" inherited="System.Drawing.Image" propertytype="System.Int32" />
-        <property name="Height" inherited="System.Drawing.Image" propertytype="System.Int32" />
-        <property name="HorizontalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
-        <property name="VerticalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
-        <property name="Flags" inherited="System.Drawing.Image" propertytype="System.Int32" />
-        <property name="RawFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="PixelFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PixelFormat" />
-        <property name="Palette" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ColorPalette" />
-        <property name="FrameDimensionsList" inherited="System.Drawing.Image" propertytype="System.Guid[]" />
-        <property name="PropertyIdList" inherited="System.Drawing.Image" propertytype="System.Int32[]" />
-        <property name="PropertyItems" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PropertyItem[]" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Drawing.Image" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromHicon(System.IntPtr)" argnames="hicon" returntype="System.Drawing.Bitmap" />
-        <method name="FromResource(System.IntPtr, System.String)" argnames="hinstance, bitmapName" returntype="System.Drawing.Bitmap" />
-        <method name="GetHbitmap" argnames="" returntype="System.IntPtr" />
-        <method name="GetHbitmap(System.Drawing.Color)" argnames="background" returntype="System.IntPtr" />
-        <method name="GetHicon" argnames="" returntype="System.IntPtr" />
-        <method name="Clone(System.Drawing.Rectangle, System.Drawing.Imaging.PixelFormat)" argnames="rect, format" returntype="System.Drawing.Bitmap" />
-        <method name="Clone(System.Drawing.RectangleF, System.Drawing.Imaging.PixelFormat)" argnames="rect, format" returntype="System.Drawing.Bitmap" />
-        <method name="MakeTransparent" argnames="" returntype="System.Void" />
-        <method name="MakeTransparent(System.Drawing.Color)" argnames="transparentColor" returntype="System.Void" />
-        <method name="LockBits(System.Drawing.Rectangle, System.Drawing.Imaging.ImageLockMode, System.Drawing.Imaging.PixelFormat)" argnames="rect, flags, format" returntype="System.Drawing.Imaging.BitmapData" />
-        <method name="UnlockBits(System.Drawing.Imaging.BitmapData)" argnames="bitmapdata" returntype="System.Void" />
-        <method name="GetPixel(System.Int32, System.Int32)" argnames="x, y" returntype="System.Drawing.Color" />
-        <method name="SetPixel(System.Int32, System.Int32, System.Drawing.Color)" argnames="x, y, color" returntype="System.Void" />
-        <method name="SetResolution(System.Single, System.Single)" argnames="xDpi, yDpi" returntype="System.Void" />
-        <method name="GetEncoderParameterList(System.Guid)" argnames="encoder" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.EncoderParameters" />
-        <method name="Save(System.String)" argnames="filename" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.String, System.Drawing.Imaging.ImageFormat)" argnames="filename, format" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.String, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="filename, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageFormat)" argnames="stream, format" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="stream, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="SaveAdd(System.Drawing.Imaging.EncoderParameters)" argnames="encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="SaveAdd(System.Drawing.Image, System.Drawing.Imaging.EncoderParameters)" argnames="image, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetBounds(System.Drawing.GraphicsUnit&amp;)" argnames="pageUnit" inherited="System.Drawing.Image" returntype="System.Drawing.RectangleF" />
-        <method name="GetThumbnailImage(System.Int32, System.Int32, System.Drawing.Image.GetThumbnailImageAbort, System.IntPtr)" argnames="thumbWidth, thumbHeight, callback, callbackData" inherited="System.Drawing.Image" returntype="System.Drawing.Image" />
-        <method name="GetFrameCount(System.Drawing.Imaging.FrameDimension)" argnames="dimension" inherited="System.Drawing.Image" returntype="System.Int32" />
-        <method name="SelectActiveFrame(System.Drawing.Imaging.FrameDimension, System.Int32)" argnames="dimension, frameIndex" inherited="System.Drawing.Image" returntype="System.Int32" />
-        <method name="RotateFlip(System.Drawing.RotateFlipType)" argnames="rotateFlipType" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetPropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.PropertyItem" />
-        <method name="RemovePropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="SetPropertyItem(System.Drawing.Imaging.PropertyItem)" argnames="propitem" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Graphics" namespace="System.Drawing">
-        <delegate name="DrawImageAbort" namespace="System.Drawing">
-            <constructor name="DrawImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
-            <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-            <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-            <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-            <method name="BeginInvoke(System.IntPtr, System.AsyncCallback, System.Object)" argnames="callbackdata, callback, object" returntype="System.IAsyncResult" />
-            <method name="Invoke(System.IntPtr)" argnames="callbackdata" returntype="System.Boolean" />
-            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-            <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-            <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-            <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-            <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-            <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-            <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </delegate>
-        <delegate name="EnumerateMetafileProc" namespace="System.Drawing">
-            <constructor name="EnumerateMetafileProc(System.Object, System.IntPtr)" argnames="object, method" />
-            <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-            <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-            <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-            <method name="BeginInvoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback, System.AsyncCallback, System.Object)" argnames="recordType, flags, dataSize, data, callbackData, callback, object" returntype="System.IAsyncResult" />
-            <method name="Invoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback)" argnames="recordType, flags, dataSize, data, callbackData" returntype="System.Boolean" />
-            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-            <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-            <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-            <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-            <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-            <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-            <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </delegate>
-        <property name="CompositingMode" propertytype="System.Drawing.Drawing2D.CompositingMode" />
-        <property name="RenderingOrigin" propertytype="System.Drawing.Point" />
-        <property name="CompositingQuality" propertytype="System.Drawing.Drawing2D.CompositingQuality" />
-        <property name="TextRenderingHint" propertytype="System.Drawing.Text.TextRenderingHint" />
-        <property name="TextContrast" propertytype="System.Int32" />
-        <property name="SmoothingMode" propertytype="System.Drawing.Drawing2D.SmoothingMode" />
-        <property name="PixelOffsetMode" propertytype="System.Drawing.Drawing2D.PixelOffsetMode" />
-        <property name="InterpolationMode" propertytype="System.Drawing.Drawing2D.InterpolationMode" />
-        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
-        <property name="PageUnit" propertytype="System.Drawing.GraphicsUnit" />
-        <property name="PageScale" propertytype="System.Single" />
-        <property name="DpiX" propertytype="System.Single" />
-        <property name="DpiY" propertytype="System.Single" />
-        <property name="Clip" propertytype="System.Drawing.Region" />
-        <property name="ClipBounds" propertytype="System.Drawing.RectangleF" />
-        <property name="IsClipEmpty" propertytype="System.Boolean" />
-        <property name="VisibleClipBounds" propertytype="System.Drawing.RectangleF" />
-        <property name="IsVisibleClipEmpty" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromHdc(System.IntPtr)" argnames="hdc" returntype="System.Drawing.Graphics" />
-        <method name="FromHdcInternal(System.IntPtr)" argnames="hdc" returntype="System.Drawing.Graphics" />
-        <method name="FromHdc(System.IntPtr, System.IntPtr)" argnames="hdc, hdevice" returntype="System.Drawing.Graphics" />
-        <method name="FromHwnd(System.IntPtr)" argnames="hwnd" returntype="System.Drawing.Graphics" />
-        <method name="FromHwndInternal(System.IntPtr)" argnames="hwnd" returntype="System.Drawing.Graphics" />
-        <method name="FromImage(System.Drawing.Image)" argnames="image" returntype="System.Drawing.Graphics" />
-        <method name="GetHdc" argnames="" returntype="System.IntPtr" />
-        <method name="ReleaseHdc(System.IntPtr)" argnames="hdc" returntype="System.Void" />
-        <method name="ReleaseHdcInternal(System.IntPtr)" argnames="hdc" returntype="System.Void" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Flush(System.Drawing.Drawing2D.FlushIntention)" argnames="intention" returntype="System.Void" />
-        <method name="ResetTransform" argnames="" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
-        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
-        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
-        <method name="TransformPoints(System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.PointF[])" argnames="destSpace, srcSpace, pts" returntype="System.Void" />
-        <method name="TransformPoints(System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.Point[])" argnames="destSpace, srcSpace, pts" returntype="System.Void" />
-        <method name="GetNearestColor(System.Drawing.Color)" argnames="color" returntype="System.Drawing.Color" />
-        <method name="DrawLine(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x1, y1, x2, y2" returntype="System.Void" />
-        <method name="DrawLine(System.Drawing.Pen, System.Drawing.PointF, System.Drawing.PointF)" argnames="pen, pt1, pt2" returntype="System.Void" />
-        <method name="DrawLines(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawLine(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x1, y1, x2, y2" returntype="System.Void" />
-        <method name="DrawLine(System.Drawing.Pen, System.Drawing.Point, System.Drawing.Point)" argnames="pen, pt1, pt2" returntype="System.Void" />
-        <method name="DrawLines(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawArc(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawArc(System.Drawing.Pen, System.Drawing.RectangleF, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawArc(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawArc(System.Drawing.Pen, System.Drawing.Rectangle, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawBezier(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x1, y1, x2, y2, x3, y3, x4, y4" returntype="System.Void" />
-        <method name="DrawBezier(System.Drawing.Pen, System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF)" argnames="pen, pt1, pt2, pt3, pt4" returntype="System.Void" />
-        <method name="DrawBeziers(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawBezier(System.Drawing.Pen, System.Drawing.Point, System.Drawing.Point, System.Drawing.Point, System.Drawing.Point)" argnames="pen, pt1, pt2, pt3, pt4" returntype="System.Void" />
-        <method name="DrawBeziers(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawRectangle(System.Drawing.Pen, System.Drawing.Rectangle)" argnames="pen, rect" returntype="System.Void" />
-        <method name="DrawRectangle(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height" returntype="System.Void" />
-        <method name="DrawRectangles(System.Drawing.Pen, System.Drawing.RectangleF[])" argnames="pen, rects" returntype="System.Void" />
-        <method name="DrawRectangle(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height" returntype="System.Void" />
-        <method name="DrawRectangles(System.Drawing.Pen, System.Drawing.Rectangle[])" argnames="pen, rects" returntype="System.Void" />
-        <method name="DrawEllipse(System.Drawing.Pen, System.Drawing.RectangleF)" argnames="pen, rect" returntype="System.Void" />
-        <method name="DrawEllipse(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height" returntype="System.Void" />
-        <method name="DrawEllipse(System.Drawing.Pen, System.Drawing.Rectangle)" argnames="pen, rect" returntype="System.Void" />
-        <method name="DrawEllipse(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height" returntype="System.Void" />
-        <method name="DrawPie(System.Drawing.Pen, System.Drawing.RectangleF, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawPie(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawPie(System.Drawing.Pen, System.Drawing.Rectangle, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawPie(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="DrawPolygon(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawPolygon(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawPath(System.Drawing.Pen, System.Drawing.Drawing2D.GraphicsPath)" argnames="pen, path" returntype="System.Void" />
-        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Single)" argnames="pen, points, tension" returntype="System.Void" />
-        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Int32, System.Int32)" argnames="pen, points, offset, numberOfSegments" returntype="System.Void" />
-        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Int32, System.Int32, System.Single)" argnames="pen, points, offset, numberOfSegments, tension" returntype="System.Void" />
-        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.Point[], System.Single)" argnames="pen, points, tension" returntype="System.Void" />
-        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.Point[], System.Int32, System.Int32, System.Single)" argnames="pen, points, offset, numberOfSegments, tension" returntype="System.Void" />
-        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Single, System.Drawing.Drawing2D.FillMode)" argnames="pen, points, tension, fillmode" returntype="System.Void" />
-        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
-        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.Point[], System.Single, System.Drawing.Drawing2D.FillMode)" argnames="pen, points, tension, fillmode" returntype="System.Void" />
-        <method name="Clear(System.Drawing.Color)" argnames="color" returntype="System.Void" />
-        <method name="FillRectangle(System.Drawing.Brush, System.Drawing.RectangleF)" argnames="brush, rect" returntype="System.Void" />
-        <method name="FillRectangle(System.Drawing.Brush, System.Single, System.Single, System.Single, System.Single)" argnames="brush, x, y, width, height" returntype="System.Void" />
-        <method name="FillRectangles(System.Drawing.Brush, System.Drawing.RectangleF[])" argnames="brush, rects" returntype="System.Void" />
-        <method name="FillRectangle(System.Drawing.Brush, System.Drawing.Rectangle)" argnames="brush, rect" returntype="System.Void" />
-        <method name="FillRectangle(System.Drawing.Brush, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="brush, x, y, width, height" returntype="System.Void" />
-        <method name="FillRectangles(System.Drawing.Brush, System.Drawing.Rectangle[])" argnames="brush, rects" returntype="System.Void" />
-        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.PointF[])" argnames="brush, points" returntype="System.Void" />
-        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.PointF[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillMode" returntype="System.Void" />
-        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.Point[])" argnames="brush, points" returntype="System.Void" />
-        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.Point[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillMode" returntype="System.Void" />
-        <method name="FillEllipse(System.Drawing.Brush, System.Drawing.RectangleF)" argnames="brush, rect" returntype="System.Void" />
-        <method name="FillEllipse(System.Drawing.Brush, System.Single, System.Single, System.Single, System.Single)" argnames="brush, x, y, width, height" returntype="System.Void" />
-        <method name="FillEllipse(System.Drawing.Brush, System.Drawing.Rectangle)" argnames="brush, rect" returntype="System.Void" />
-        <method name="FillEllipse(System.Drawing.Brush, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="brush, x, y, width, height" returntype="System.Void" />
-        <method name="FillPie(System.Drawing.Brush, System.Drawing.Rectangle, System.Single, System.Single)" argnames="brush, rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="FillPie(System.Drawing.Brush, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="brush, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="FillPie(System.Drawing.Brush, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="brush, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="FillPath(System.Drawing.Brush, System.Drawing.Drawing2D.GraphicsPath)" argnames="brush, path" returntype="System.Void" />
-        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.PointF[])" argnames="brush, points" returntype="System.Void" />
-        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.PointF[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillmode" returntype="System.Void" />
-        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.PointF[], System.Drawing.Drawing2D.FillMode, System.Single)" argnames="brush, points, fillmode, tension" returntype="System.Void" />
-        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.Point[])" argnames="brush, points" returntype="System.Void" />
-        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.Point[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillmode" returntype="System.Void" />
-        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.Point[], System.Drawing.Drawing2D.FillMode, System.Single)" argnames="brush, points, fillmode, tension" returntype="System.Void" />
-        <method name="FillRegion(System.Drawing.Brush, System.Drawing.Region)" argnames="brush, region" returntype="System.Void" />
-        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Single, System.Single)" argnames="s, font, brush, x, y" returntype="System.Void" />
-        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.PointF)" argnames="s, font, brush, point" returntype="System.Void" />
-        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Single, System.Single, System.Drawing.StringFormat)" argnames="s, font, brush, x, y, format" returntype="System.Void" />
-        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.PointF, System.Drawing.StringFormat)" argnames="s, font, brush, point, format" returntype="System.Void" />
-        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.RectangleF)" argnames="s, font, brush, layoutRectangle" returntype="System.Void" />
-        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="s, font, brush, layoutRectangle, format" returntype="System.Void" />
-        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.SizeF, System.Drawing.StringFormat, System.Int32&amp;, System.Int32&amp;)" argnames="text, font, layoutArea, stringFormat, charactersFitted, linesFilled" returntype="System.Drawing.SizeF" />
-        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.PointF, System.Drawing.StringFormat)" argnames="text, font, origin, stringFormat" returntype="System.Drawing.SizeF" />
-        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.SizeF)" argnames="text, font, layoutArea" returntype="System.Drawing.SizeF" />
-        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.SizeF, System.Drawing.StringFormat)" argnames="text, font, layoutArea, stringFormat" returntype="System.Drawing.SizeF" />
-        <method name="MeasureString(System.String, System.Drawing.Font)" argnames="text, font" returntype="System.Drawing.SizeF" />
-        <method name="MeasureString(System.String, System.Drawing.Font, System.Int32)" argnames="text, font, width" returntype="System.Drawing.SizeF" />
-        <method name="MeasureString(System.String, System.Drawing.Font, System.Int32, System.Drawing.StringFormat)" argnames="text, font, width, format" returntype="System.Drawing.SizeF" />
-        <method name="MeasureCharacterRanges(System.String, System.Drawing.Font, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="text, font, layoutRect, stringFormat" returntype="System.Drawing.Region[]" />
-        <method name="DrawIcon(System.Drawing.Icon, System.Int32, System.Int32)" argnames="icon, x, y" returntype="System.Void" />
-        <method name="DrawIcon(System.Drawing.Icon, System.Drawing.Rectangle)" argnames="icon, targetRect" returntype="System.Void" />
-        <method name="DrawIconUnstretched(System.Drawing.Icon, System.Drawing.Rectangle)" argnames="icon, targetRect" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF)" argnames="image, point" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Single, System.Single)" argnames="image, x, y" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.RectangleF)" argnames="image, rect" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Single, System.Single, System.Single, System.Single)" argnames="image, x, y, width, height" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point)" argnames="image, point" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Int32, System.Int32)" argnames="image, x, y" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle)" argnames="image, rect" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="image, x, y, width, height" returntype="System.Void" />
-        <method name="DrawImageUnscaled(System.Drawing.Image, System.Drawing.Point)" argnames="image, point" returntype="System.Void" />
-        <method name="DrawImageUnscaled(System.Drawing.Image, System.Int32, System.Int32)" argnames="image, x, y" returntype="System.Void" />
-        <method name="DrawImageUnscaled(System.Drawing.Image, System.Drawing.Rectangle)" argnames="image, rect" returntype="System.Void" />
-        <method name="DrawImageUnscaled(System.Drawing.Image, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="image, x, y, width, height" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[])" argnames="image, destPoints" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[])" argnames="image, destPoints" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Single, System.Single, System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="image, x, y, srcRect, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Int32, System.Int32, System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="image, x, y, srcRect, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcRect, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcRect, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="image, destPoints, srcRect, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destPoints, srcRect, srcUnit, imageAttr" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.Int32)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback, callbackData" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="image, destPoints, srcRect, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destPoints, srcRect, srcUnit, imageAttr" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.Int32)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback, callbackData" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs, callback" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.IntPtr)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs, callback, callbackData" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttr" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttr, callback" returntype="System.Void" />
-        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.IntPtr)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, srcRect, srcUnit, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, srcRect, srcUnit, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, srcRect, srcUnit, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, srcRect, srcUnit, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, srcRect, srcUnit, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, srcRect, srcUnit, callback" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
-        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.Graphics)" argnames="g" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.Graphics, System.Drawing.Drawing2D.CombineMode)" argnames="g, combineMode" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.Rectangle, System.Drawing.Drawing2D.CombineMode)" argnames="rect, combineMode" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.RectangleF, System.Drawing.Drawing2D.CombineMode)" argnames="rect, combineMode" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.CombineMode)" argnames="path, combineMode" returntype="System.Void" />
-        <method name="SetClip(System.Drawing.Region, System.Drawing.Drawing2D.CombineMode)" argnames="region, combineMode" returntype="System.Void" />
-        <method name="IntersectClip(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="IntersectClip(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="IntersectClip(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="ExcludeClip(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="ExcludeClip(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="ResetClip" argnames="" returntype="System.Void" />
-        <method name="TranslateClip(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="TranslateClip(System.Int32, System.Int32)" argnames="dx, dy" returntype="System.Void" />
-        <method name="IsVisible(System.Int32, System.Int32)" argnames="x, y" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
-        <method name="IsVisible(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.PointF)" argnames="point" returntype="System.Boolean" />
-        <method name="IsVisible(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
-        <method name="IsVisible(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
-        <method name="Save" argnames="" returntype="System.Drawing.Drawing2D.GraphicsState" />
-        <method name="Restore(System.Drawing.Drawing2D.GraphicsState)" argnames="gstate" returntype="System.Void" />
-        <method name="BeginContainer(System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="dstrect, srcrect, unit" returntype="System.Drawing.Drawing2D.GraphicsContainer" />
-        <method name="BeginContainer" argnames="" returntype="System.Drawing.Drawing2D.GraphicsContainer" />
-        <method name="EndContainer(System.Drawing.Drawing2D.GraphicsContainer)" argnames="container" returntype="System.Void" />
-        <method name="BeginContainer(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="dstrect, srcrect, unit" returntype="System.Drawing.Drawing2D.GraphicsContainer" />
-        <method name="AddMetafileComment(System.Byte[])" argnames="data" returntype="System.Void" />
-        <method name="GetHalftonePalette" argnames="" returntype="System.IntPtr" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Icon" namespace="System.Drawing">
-        <constructor name="Icon(System.String)" argnames="fileName" />
-        <constructor name="Icon(System.Drawing.Icon, System.Drawing.Size)" argnames="original, size" />
-        <constructor name="Icon(System.Drawing.Icon, System.Int32, System.Int32)" argnames="original, width, height" />
-        <constructor name="Icon(System.Type, System.String)" argnames="type, resource" />
-        <constructor name="Icon(System.IO.Stream)" argnames="stream" />
-        <constructor name="Icon(System.IO.Stream, System.Int32, System.Int32)" argnames="stream, width, height" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="Size" propertytype="System.Drawing.Size" />
-        <property name="Width" propertytype="System.Int32" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromHandle(System.IntPtr)" argnames="handle" returntype="System.Drawing.Icon" />
-        <method name="Save(System.IO.Stream)" argnames="outputStream" returntype="System.Void" />
-        <method name="ToBitmap" argnames="" returntype="System.Drawing.Bitmap" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Pen" namespace="System.Drawing">
-        <constructor name="Pen(System.Drawing.Color)" argnames="color" />
-        <constructor name="Pen(System.Drawing.Color, System.Single)" argnames="color, width" />
-        <constructor name="Pen(System.Drawing.Brush)" argnames="brush" />
-        <constructor name="Pen(System.Drawing.Brush, System.Single)" argnames="brush, width" />
-        <property name="Width" propertytype="System.Single" />
-        <property name="StartCap" propertytype="System.Drawing.Drawing2D.LineCap" />
-        <property name="EndCap" propertytype="System.Drawing.Drawing2D.LineCap" />
-        <property name="DashCap" propertytype="System.Drawing.Drawing2D.DashCap" />
-        <property name="LineJoin" propertytype="System.Drawing.Drawing2D.LineJoin" />
-        <property name="CustomStartCap" propertytype="System.Drawing.Drawing2D.CustomLineCap" />
-        <property name="CustomEndCap" propertytype="System.Drawing.Drawing2D.CustomLineCap" />
-        <property name="MiterLimit" propertytype="System.Single" />
-        <property name="Alignment" propertytype="System.Drawing.Drawing2D.PenAlignment" />
-        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
-        <property name="PenType" propertytype="System.Drawing.Drawing2D.PenType" />
-        <property name="Color" propertytype="System.Drawing.Color" />
-        <property name="Brush" propertytype="System.Drawing.Brush" />
-        <property name="DashStyle" propertytype="System.Drawing.Drawing2D.DashStyle" />
-        <property name="DashOffset" propertytype="System.Single" />
-        <property name="DashPattern" propertytype="System.Single[]" />
-        <property name="CompoundArray" propertytype="System.Single[]" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SetLineCap(System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.DashCap)" argnames="startCap, endCap, dashCap" returntype="System.Void" />
-        <method name="ResetTransform" argnames="" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
-        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
-        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SolidBrush" namespace="System.Drawing">
-        <constructor name="SolidBrush(System.Drawing.Color)" argnames="color" />
-        <property name="Color" propertytype="System.Drawing.Color" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorTranslator" namespace="System.Drawing">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ToWin32(System.Drawing.Color)" argnames="c" returntype="System.Int32" />
-        <method name="ToOle(System.Drawing.Color)" argnames="c" returntype="System.Int32" />
-        <method name="FromOle(System.Int32)" argnames="oleColor" returntype="System.Drawing.Color" />
-        <method name="FromWin32(System.Int32)" argnames="win32Color" returntype="System.Drawing.Color" />
-        <method name="FromHtml(System.String)" argnames="htmlColor" returntype="System.Drawing.Color" />
-        <method name="ToHtml(System.Drawing.Color)" argnames="c" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="USEROBJECTFLAGS" namespace="System.Drawing">
-        <constructor name="USEROBJECTFLAGS" argnames="" />
-        <field name="fInherit" />
-        <field name="fReserved" />
-        <field name="dwFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ENHMETAHEADER" namespace="System.Drawing">
-        <constructor name="ENHMETAHEADER" argnames="" />
-        <field name="iType" />
-        <field name="nSize" />
-        <field name="rclBounds_left" />
-        <field name="rclBounds_top" />
-        <field name="rclBounds_right" />
-        <field name="rclBounds_bottom" />
-        <field name="rclFrame_left" />
-        <field name="rclFrame_top" />
-        <field name="rclFrame_right" />
-        <field name="rclFrame_bottom" />
-        <field name="dSignature" />
-        <field name="nVersion" />
-        <field name="nBytes" />
-        <field name="nRecords" />
-        <field name="nHandles" />
-        <field name="sReserved" />
-        <field name="nDescription" />
-        <field name="offDescription" />
-        <field name="nPalEntries" />
-        <field name="szlDevice_cx" />
-        <field name="szlDevice_cy" />
-        <field name="szlMillimeters_cx" />
-        <field name="szlMillimeters_cy" />
-        <field name="cbPixelFormat" />
-        <field name="offPixelFormat" />
-        <field name="bOpenGL" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DOCINFO" namespace="System.Drawing">
-        <constructor name="DOCINFO" argnames="" />
-        <field name="cbSize" />
-        <field name="lpszDocName" />
-        <field name="lpszOutput" />
-        <field name="lpszDatatype" />
-        <field name="fwType" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PRINTDLG" namespace="System.Drawing">
-        <constructor name="PRINTDLG" argnames="" />
-        <field name="lStructSize" />
-        <field name="hwndOwner" />
-        <field name="hDevMode" />
-        <field name="hDevNames" />
-        <field name="hDC" />
-        <field name="Flags" />
-        <field name="nFromPage" />
-        <field name="nToPage" />
-        <field name="nMinPage" />
-        <field name="nMaxPage" />
-        <field name="nCopies" />
-        <field name="hInstance" />
-        <field name="lCustData" />
-        <field name="lpfnPrintHook" />
-        <field name="lpfnSetupHook" />
-        <field name="lpPrintTemplateName" />
-        <field name="lpSetupTemplateName" />
-        <field name="hPrintTemplate" />
-        <field name="hSetupTemplate" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PAGESETUPDLG" namespace="System.Drawing">
-        <constructor name="PAGESETUPDLG" argnames="" />
-        <field name="lStructSize" />
-        <field name="hwndOwner" />
-        <field name="hDevMode" />
-        <field name="hDevNames" />
-        <field name="Flags" />
-        <field name="paperSizeX" />
-        <field name="paperSizeY" />
-        <field name="minMarginLeft" />
-        <field name="minMarginTop" />
-        <field name="minMarginRight" />
-        <field name="minMarginBottom" />
-        <field name="marginLeft" />
-        <field name="marginTop" />
-        <field name="marginRight" />
-        <field name="marginBottom" />
-        <field name="hInstance" />
-        <field name="lCustData" />
-        <field name="lpfnPageSetupHook" />
-        <field name="lpfnPagePaintHook" />
-        <field name="lpPageSetupTemplateName" />
-        <field name="hPageSetupTemplate" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="COMRECT" namespace="System.Drawing">
-        <constructor name="COMRECT" argnames="" />
-        <constructor name="COMRECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
-        <field name="left" />
-        <field name="top" />
-        <field name="right" />
-        <field name="bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Drawing.SafeNativeMethods+COMRECT" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="POINT" namespace="System.Drawing">
-        <constructor name="POINT" argnames="" />
-        <constructor name="POINT(System.Int32, System.Int32)" argnames="x, y" />
-        <field name="x" />
-        <field name="y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ICONINFO" namespace="System.Drawing">
-        <constructor name="ICONINFO" argnames="" />
-        <field name="fIcon" />
-        <field name="xHotspot" />
-        <field name="yHotspot" />
-        <field name="hbmMask" />
-        <field name="hbmColor" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BITMAP" namespace="System.Drawing">
-        <constructor name="BITMAP" argnames="" />
-        <field name="bmType" />
-        <field name="bmWidth" />
-        <field name="bmHeight" />
-        <field name="bmWidthBytes" />
-        <field name="bmPlanes" />
-        <field name="bmBitsPixel" />
-        <field name="bmBits" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DIBSECTION" namespace="System.Drawing">
-        <constructor name="DIBSECTION" argnames="" />
-        <field name="dsBm" />
-        <field name="dsBmih" />
-        <field name="dsBitfields" />
-        <field name="dshSection" />
-        <field name="dsOffset" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BITMAPINFOHEADER" namespace="System.Drawing">
-        <constructor name="BITMAPINFOHEADER" argnames="" />
-        <field name="biSize" />
-        <field name="biWidth" />
-        <field name="biHeight" />
-        <field name="biPlanes" />
-        <field name="biBitCount" />
-        <field name="biCompression" />
-        <field name="biSizeImage" />
-        <field name="biXPelsPerMeter" />
-        <field name="biYPelsPerMeter" />
-        <field name="biClrUsed" />
-        <field name="biClrImportant" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LOGPEN" namespace="System.Drawing">
-        <constructor name="LOGPEN" argnames="" />
-        <field name="lopnStyle" />
-        <field name="lopnWidth_x" />
-        <field name="lopnWidth_y" />
-        <field name="lopnColor" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LOGBRUSH" namespace="System.Drawing">
-        <constructor name="LOGBRUSH" argnames="" />
-        <field name="lbStyle" />
-        <field name="lbColor" />
-        <field name="lbHatch" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LOGFONT" namespace="System.Drawing">
-        <constructor name="LOGFONT" argnames="" />
-        <field name="lfHeight" />
-        <field name="lfWidth" />
-        <field name="lfEscapement" />
-        <field name="lfOrientation" />
-        <field name="lfWeight" />
-        <field name="lfItalic" />
-        <field name="lfUnderline" />
-        <field name="lfStrikeOut" />
-        <field name="lfCharSet" />
-        <field name="lfOutPrecision" />
-        <field name="lfClipPrecision" />
-        <field name="lfQuality" />
-        <field name="lfPitchAndFamily" />
-        <field name="lfFaceName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PICTDESC" namespace="System.Drawing">
-        <constructor name="PICTDESC" argnames="" />
-        <field name="picType" />
-        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
-        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateBitmapPICTDESC(System.IntPtr, System.IntPtr)" argnames="hbitmap, hpal" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
-        <method name="CreateIconPICTDESC(System.IntPtr)" argnames="hicon" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
-        <method name="CreateEnhMetafilePICTDESC(System.IntPtr)" argnames="hEMF" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
-        <method name="CreateWinMetafilePICTDESC(System.IntPtr, System.Int32, System.Int32)" argnames="hmetafile, x, y" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Ole" namespace="System.Drawing">
-        <constructor name="Ole" argnames="" />
-        <field name="PICTYPE_UNINITIALIZED" />
-        <field name="PICTYPE_NONE" />
-        <field name="PICTYPE_BITMAP" />
-        <field name="PICTYPE_METAFILE" />
-        <field name="PICTYPE_ICON" />
-        <field name="PICTYPE_ENHMETAFILE" />
-        <field name="STATFLAG_DEFAULT" />
-        <field name="STATFLAG_NONAME" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DEVMODE" namespace="System.Drawing">
-        <constructor name="DEVMODE" argnames="" />
-        <field name="dmDeviceName" />
-        <field name="dmSpecVersion" />
-        <field name="dmDriverVersion" />
-        <field name="dmSize" />
-        <field name="dmDriverExtra" />
-        <field name="dmFields" />
-        <field name="dmOrientation" />
-        <field name="dmPaperSize" />
-        <field name="dmPaperLength" />
-        <field name="dmPaperWidth" />
-        <field name="dmScale" />
-        <field name="dmCopies" />
-        <field name="dmDefaultSource" />
-        <field name="dmPrintQuality" />
-        <field name="dmColor" />
-        <field name="dmDuplex" />
-        <field name="dmYResolution" />
-        <field name="dmTTOption" />
-        <field name="dmCollate" />
-        <field name="dmFormName" />
-        <field name="dmLogPixels" />
-        <field name="dmBitsPerPel" />
-        <field name="dmPelsWidth" />
-        <field name="dmPelsHeight" />
-        <field name="dmDisplayFlags" />
-        <field name="dmDisplayFrequency" />
-        <field name="dmICMMethod" />
-        <field name="dmICMIntent" />
-        <field name="dmMediaType" />
-        <field name="dmDitherType" />
-        <field name="dmICCManufacturer" />
-        <field name="dmICCModel" />
-        <field name="dmPanningWidth" />
-        <field name="dmPanningHeight" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CommonHandles" namespace="System.Drawing">
-        <constructor name="CommonHandles" argnames="" />
-        <field name="Accelerator" />
-        <field name="Cursor" />
-        <field name="EMF" />
-        <field name="Find" />
-        <field name="GDI" />
-        <field name="HDC" />
-        <field name="Icon" />
-        <field name="Kernel" />
-        <field name="Menu" />
-        <field name="Window" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HandleCollector" namespace="System.Drawing">
-        <constructor name="HandleCollector" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
-        <method name="RegisterType(System.String, System.Int32, System.Int32)" argnames="typeName, expense, initialThreshold" returntype="System.Int32" />
-        <method name="Remove(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="HandleAdded" />
-        <event name="HandleRemoved" />
-    </class>
-    <class name="StreamConsts" namespace="System.Drawing">
-        <constructor name="StreamConsts" argnames="" />
-        <field name="LOCK_WRITE" />
-        <field name="LOCK_EXCLUSIVE" />
-        <field name="LOCK_ONLYONCE" />
-        <field name="STATFLAG_DEFAULT" />
-        <field name="STATFLAG_NONAME" />
-        <field name="STATFLAG_NOOPEN" />
-        <field name="STGC_DEFAULT" />
-        <field name="STGC_OVERWRITE" />
-        <field name="STGC_ONLYIFCURRENT" />
-        <field name="STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE" />
-        <field name="STREAM_SEEK_SET" />
-        <field name="STREAM_SEEK_CUR" />
-        <field name="STREAM_SEEK_END" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageFormatConverter" namespace="System.Drawing">
-        <constructor name="ImageFormatConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TextureBrush" namespace="System.Drawing">
-        <constructor name="TextureBrush(System.Drawing.Image)" argnames="bitmap" />
-        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Drawing2D.WrapMode)" argnames="image, wrapMode" />
-        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Drawing2D.WrapMode, System.Drawing.RectangleF)" argnames="image, wrapMode, dstRect" />
-        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Drawing2D.WrapMode, System.Drawing.Rectangle)" argnames="image, wrapMode, dstRect" />
-        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.RectangleF)" argnames="image, dstRect" />
-        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.RectangleF, System.Drawing.Imaging.ImageAttributes)" argnames="image, dstRect, imageAttr" />
-        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Rectangle)" argnames="image, dstRect" />
-        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.Imaging.ImageAttributes)" argnames="image, dstRect, imageAttr" />
-        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
-        <property name="WrapMode" propertytype="System.Drawing.Drawing2D.WrapMode" />
-        <property name="Image" propertytype="System.Drawing.Image" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ResetTransform" argnames="" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
-        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
-        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Font" namespace="System.Drawing">
-        <constructor name="Font(System.Drawing.Font, System.Drawing.FontStyle)" argnames="prototype, newStyle" />
-        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit)" argnames="family, emSize, style, unit" />
-        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte)" argnames="family, emSize, style, unit, gdiCharSet" />
-        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte, System.Boolean)" argnames="family, emSize, style, unit, gdiCharSet, gdiVerticalFont" />
-        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte)" argnames="familyName, emSize, style, unit, gdiCharSet" />
-        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte, System.Boolean)" argnames="familyName, emSize, style, unit, gdiCharSet, gdiVerticalFont" />
-        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle)" argnames="family, emSize, style" />
-        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.GraphicsUnit)" argnames="family, emSize, unit" />
-        <constructor name="Font(System.Drawing.FontFamily, System.Single)" argnames="family, emSize" />
-        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit)" argnames="familyName, emSize, style, unit" />
-        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle)" argnames="familyName, emSize, style" />
-        <constructor name="Font(System.String, System.Single, System.Drawing.GraphicsUnit)" argnames="familyName, emSize, unit" />
-        <constructor name="Font(System.String, System.Single)" argnames="familyName, emSize" />
-        <property name="Bold" propertytype="System.Boolean" />
-        <property name="GdiCharSet" propertytype="System.Byte" />
-        <property name="GdiVerticalFont" propertytype="System.Boolean" />
-        <property name="Italic" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NativeFont" propertytype="System.IntPtr" />
-        <property name="Strikeout" propertytype="System.Boolean" />
-        <property name="Underline" propertytype="System.Boolean" />
-        <property name="FontFamily" propertytype="System.Drawing.FontFamily" />
-        <property name="Style" propertytype="System.Drawing.FontStyle" />
-        <property name="Size" propertytype="System.Single" />
-        <property name="SizeInPoints" propertytype="System.Single" />
-        <property name="Unit" propertytype="System.Drawing.GraphicsUnit" />
-        <property name="Height" propertytype="System.Int32" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromHfont(System.IntPtr)" argnames="hfont" returntype="System.Drawing.Font" />
-        <method name="FromLogFont(System.Object)" argnames="lf" returntype="System.Drawing.Font" />
-        <method name="FromLogFont(System.Object, System.IntPtr)" argnames="lf, hdc" returntype="System.Drawing.Font" />
-        <method name="FromHdc(System.IntPtr)" argnames="hdc" returntype="System.Drawing.Font" />
-        <method name="ToLogFont(System.Object)" argnames="logFont" returntype="System.Void" />
-        <method name="ToLogFont(System.Object, System.Drawing.Graphics)" argnames="logFont, graphics" returntype="System.Void" />
-        <method name="ToHfont" argnames="" returntype="System.IntPtr" />
-        <method name="GetHeight(System.Drawing.Graphics)" argnames="graphics" returntype="System.Single" />
-        <method name="GetHeight" argnames="" returntype="System.Single" />
-        <method name="GetHeight(System.Single)" argnames="dpi" returntype="System.Single" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FontFamily" namespace="System.Drawing">
-        <constructor name="FontFamily(System.String)" argnames="name" />
-        <constructor name="FontFamily(System.String, System.Drawing.Text.FontCollection)" argnames="name, fontCollection" />
-        <constructor name="FontFamily(System.Drawing.Text.GenericFontFamilies)" argnames="genericFamily" />
-        <property name="CurrentLanguage" propertytype="System.Int32" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Families" propertytype="System.Drawing.FontFamily[]" />
-        <property name="GenericSansSerif" propertytype="System.Drawing.FontFamily" />
-        <property name="GenericSerif" propertytype="System.Drawing.FontFamily" />
-        <property name="GenericMonospace" propertytype="System.Drawing.FontFamily" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetName(System.Int32)" argnames="language" returntype="System.String" />
-        <method name="GetFamilies(System.Drawing.Graphics)" argnames="graphics" returntype="System.Drawing.FontFamily[]" />
-        <method name="IsStyleAvailable(System.Drawing.FontStyle)" argnames="style" returntype="System.Boolean" />
-        <method name="GetEmHeight(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
-        <method name="GetCellAscent(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
-        <method name="GetCellDescent(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
-        <method name="GetLineSpacing(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StringFormat" namespace="System.Drawing">
-        <constructor name="StringFormat" argnames="" />
-        <constructor name="StringFormat(System.Drawing.StringFormatFlags)" argnames="options" />
-        <constructor name="StringFormat(System.Drawing.StringFormatFlags, System.Int32)" argnames="options, language" />
-        <constructor name="StringFormat(System.Drawing.StringFormat)" argnames="format" />
-        <property name="FormatFlags" propertytype="System.Drawing.StringFormatFlags" />
-        <property name="Alignment" propertytype="System.Drawing.StringAlignment" />
-        <property name="LineAlignment" propertytype="System.Drawing.StringAlignment" />
-        <property name="HotkeyPrefix" propertytype="System.Drawing.Text.HotkeyPrefix" />
-        <property name="Trimming" propertytype="System.Drawing.StringTrimming" />
-        <property name="GenericDefault" propertytype="System.Drawing.StringFormat" />
-        <property name="GenericTypographic" propertytype="System.Drawing.StringFormat" />
-        <property name="DigitSubstitutionMethod" propertytype="System.Drawing.StringDigitSubstitute" />
-        <property name="DigitSubstitutionLanguage" propertytype="System.Int32" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="SetMeasurableCharacterRanges(System.Drawing.CharacterRange[])" argnames="ranges" returntype="System.Void" />
-        <method name="SetTabStops(System.Single, System.Single[])" argnames="firstTabOffset, tabStops" returntype="System.Void" />
-        <method name="GetTabStops(System.Single&amp;)" argnames="firstTabOffset" returntype="System.Single[]" />
-        <method name="SetDigitSubstitution(System.Int32, System.Drawing.StringDigitSubstitute)" argnames="language, substitute" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IStream" namespace="System.Drawing">
-        <method name="Clone" argnames="" returntype="System.Drawing.UnsafeNativeMethods+IStream" />
-        <method name="Stat(System.IntPtr, System.Int32)" argnames="pStatstg, grfStatFlag" returntype="System.Void" />
-        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="Revert" argnames="" returntype="System.Void" />
-        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
-        <method name="CopyTo(System.Drawing.UnsafeNativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
-        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.Int32)" argnames="dlibMove, dwOrigin" returntype="System.Int64" />
-        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
-        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
-    </interface>
-    <interface name="IPicture" namespace="System.Drawing">
-        <method name="SetHdc(System.IntPtr)" argnames="hdc" returntype="System.Void" />
-        <method name="GetAttributes" argnames="" returntype="System.Int32" />
-        <method name="SaveAsFile(System.Drawing.UnsafeNativeMethods.IStream, System.Int32, System.Int32&amp;)" argnames="pstm, fSaveMemCopy, pcbSize" returntype="System.Int32" />
-        <method name="PictureChanged" argnames="" returntype="System.Void" />
-        <method name="SetKeepOriginalFormat(System.Boolean)" argnames="pfkeep" returntype="System.Void" />
-        <method name="GetKeepOriginalFormat" argnames="" returntype="System.Boolean" />
-        <method name="SelectPicture(System.IntPtr, System.Int32[], System.Int32[])" argnames="hdcIn, phdcOut, phbmpOut" returntype="System.Void" />
-        <method name="GetCurDC" argnames="" returntype="System.IntPtr" />
-        <method name="SetHPal(System.IntPtr)" argnames="phpal" returntype="System.Void" />
-        <method name="Render" argnames="" returntype="System.Void" />
-        <method name="GetHeight" argnames="" returntype="System.Int32" />
-        <method name="GetWidth" argnames="" returntype="System.Int32" />
-        <method name="GetPictureType" argnames="" returntype="System.Int16" />
-        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
-        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <struct name="Color" namespace="System.Drawing">
-        <field name="Empty" />
-        <property name="Transparent" propertytype="System.Drawing.Color" />
-        <property name="AliceBlue" propertytype="System.Drawing.Color" />
-        <property name="AntiqueWhite" propertytype="System.Drawing.Color" />
-        <property name="Aqua" propertytype="System.Drawing.Color" />
-        <property name="Aquamarine" propertytype="System.Drawing.Color" />
-        <property name="Azure" propertytype="System.Drawing.Color" />
-        <property name="Beige" propertytype="System.Drawing.Color" />
-        <property name="Bisque" propertytype="System.Drawing.Color" />
-        <property name="Black" propertytype="System.Drawing.Color" />
-        <property name="BlanchedAlmond" propertytype="System.Drawing.Color" />
-        <property name="Blue" propertytype="System.Drawing.Color" />
-        <property name="BlueViolet" propertytype="System.Drawing.Color" />
-        <property name="Brown" propertytype="System.Drawing.Color" />
-        <property name="BurlyWood" propertytype="System.Drawing.Color" />
-        <property name="CadetBlue" propertytype="System.Drawing.Color" />
-        <property name="Chartreuse" propertytype="System.Drawing.Color" />
-        <property name="Chocolate" propertytype="System.Drawing.Color" />
-        <property name="Coral" propertytype="System.Drawing.Color" />
-        <property name="CornflowerBlue" propertytype="System.Drawing.Color" />
-        <property name="Cornsilk" propertytype="System.Drawing.Color" />
-        <property name="Crimson" propertytype="System.Drawing.Color" />
-        <property name="Cyan" propertytype="System.Drawing.Color" />
-        <property name="DarkBlue" propertytype="System.Drawing.Color" />
-        <property name="DarkCyan" propertytype="System.Drawing.Color" />
-        <property name="DarkGoldenrod" propertytype="System.Drawing.Color" />
-        <property name="DarkGray" propertytype="System.Drawing.Color" />
-        <property name="DarkGreen" propertytype="System.Drawing.Color" />
-        <property name="DarkKhaki" propertytype="System.Drawing.Color" />
-        <property name="DarkMagenta" propertytype="System.Drawing.Color" />
-        <property name="DarkOliveGreen" propertytype="System.Drawing.Color" />
-        <property name="DarkOrange" propertytype="System.Drawing.Color" />
-        <property name="DarkOrchid" propertytype="System.Drawing.Color" />
-        <property name="DarkRed" propertytype="System.Drawing.Color" />
-        <property name="DarkSalmon" propertytype="System.Drawing.Color" />
-        <property name="DarkSeaGreen" propertytype="System.Drawing.Color" />
-        <property name="DarkSlateBlue" propertytype="System.Drawing.Color" />
-        <property name="DarkSlateGray" propertytype="System.Drawing.Color" />
-        <property name="DarkTurquoise" propertytype="System.Drawing.Color" />
-        <property name="DarkViolet" propertytype="System.Drawing.Color" />
-        <property name="DeepPink" propertytype="System.Drawing.Color" />
-        <property name="DeepSkyBlue" propertytype="System.Drawing.Color" />
-        <property name="DimGray" propertytype="System.Drawing.Color" />
-        <property name="DodgerBlue" propertytype="System.Drawing.Color" />
-        <property name="Firebrick" propertytype="System.Drawing.Color" />
-        <property name="FloralWhite" propertytype="System.Drawing.Color" />
-        <property name="ForestGreen" propertytype="System.Drawing.Color" />
-        <property name="Fuchsia" propertytype="System.Drawing.Color" />
-        <property name="Gainsboro" propertytype="System.Drawing.Color" />
-        <property name="GhostWhite" propertytype="System.Drawing.Color" />
-        <property name="Gold" propertytype="System.Drawing.Color" />
-        <property name="Goldenrod" propertytype="System.Drawing.Color" />
-        <property name="Gray" propertytype="System.Drawing.Color" />
-        <property name="Green" propertytype="System.Drawing.Color" />
-        <property name="GreenYellow" propertytype="System.Drawing.Color" />
-        <property name="Honeydew" propertytype="System.Drawing.Color" />
-        <property name="HotPink" propertytype="System.Drawing.Color" />
-        <property name="IndianRed" propertytype="System.Drawing.Color" />
-        <property name="Indigo" propertytype="System.Drawing.Color" />
-        <property name="Ivory" propertytype="System.Drawing.Color" />
-        <property name="Khaki" propertytype="System.Drawing.Color" />
-        <property name="Lavender" propertytype="System.Drawing.Color" />
-        <property name="LavenderBlush" propertytype="System.Drawing.Color" />
-        <property name="LawnGreen" propertytype="System.Drawing.Color" />
-        <property name="LemonChiffon" propertytype="System.Drawing.Color" />
-        <property name="LightBlue" propertytype="System.Drawing.Color" />
-        <property name="LightCoral" propertytype="System.Drawing.Color" />
-        <property name="LightCyan" propertytype="System.Drawing.Color" />
-        <property name="LightGoldenrodYellow" propertytype="System.Drawing.Color" />
-        <property name="LightGreen" propertytype="System.Drawing.Color" />
-        <property name="LightGray" propertytype="System.Drawing.Color" />
-        <property name="LightPink" propertytype="System.Drawing.Color" />
-        <property name="LightSalmon" propertytype="System.Drawing.Color" />
-        <property name="LightSeaGreen" propertytype="System.Drawing.Color" />
-        <property name="LightSkyBlue" propertytype="System.Drawing.Color" />
-        <property name="LightSlateGray" propertytype="System.Drawing.Color" />
-        <property name="LightSteelBlue" propertytype="System.Drawing.Color" />
-        <property name="LightYellow" propertytype="System.Drawing.Color" />
-        <property name="Lime" propertytype="System.Drawing.Color" />
-        <property name="LimeGreen" propertytype="System.Drawing.Color" />
-        <property name="Linen" propertytype="System.Drawing.Color" />
-        <property name="Magenta" propertytype="System.Drawing.Color" />
-        <property name="Maroon" propertytype="System.Drawing.Color" />
-        <property name="MediumAquamarine" propertytype="System.Drawing.Color" />
-        <property name="MediumBlue" propertytype="System.Drawing.Color" />
-        <property name="MediumOrchid" propertytype="System.Drawing.Color" />
-        <property name="MediumPurple" propertytype="System.Drawing.Color" />
-        <property name="MediumSeaGreen" propertytype="System.Drawing.Color" />
-        <property name="MediumSlateBlue" propertytype="System.Drawing.Color" />
-        <property name="MediumSpringGreen" propertytype="System.Drawing.Color" />
-        <property name="MediumTurquoise" propertytype="System.Drawing.Color" />
-        <property name="MediumVioletRed" propertytype="System.Drawing.Color" />
-        <property name="MidnightBlue" propertytype="System.Drawing.Color" />
-        <property name="MintCream" propertytype="System.Drawing.Color" />
-        <property name="MistyRose" propertytype="System.Drawing.Color" />
-        <property name="Moccasin" propertytype="System.Drawing.Color" />
-        <property name="NavajoWhite" propertytype="System.Drawing.Color" />
-        <property name="Navy" propertytype="System.Drawing.Color" />
-        <property name="OldLace" propertytype="System.Drawing.Color" />
-        <property name="Olive" propertytype="System.Drawing.Color" />
-        <property name="OliveDrab" propertytype="System.Drawing.Color" />
-        <property name="Orange" propertytype="System.Drawing.Color" />
-        <property name="OrangeRed" propertytype="System.Drawing.Color" />
-        <property name="Orchid" propertytype="System.Drawing.Color" />
-        <property name="PaleGoldenrod" propertytype="System.Drawing.Color" />
-        <property name="PaleGreen" propertytype="System.Drawing.Color" />
-        <property name="PaleTurquoise" propertytype="System.Drawing.Color" />
-        <property name="PaleVioletRed" propertytype="System.Drawing.Color" />
-        <property name="PapayaWhip" propertytype="System.Drawing.Color" />
-        <property name="PeachPuff" propertytype="System.Drawing.Color" />
-        <property name="Peru" propertytype="System.Drawing.Color" />
-        <property name="Pink" propertytype="System.Drawing.Color" />
-        <property name="Plum" propertytype="System.Drawing.Color" />
-        <property name="PowderBlue" propertytype="System.Drawing.Color" />
-        <property name="Purple" propertytype="System.Drawing.Color" />
-        <property name="Red" propertytype="System.Drawing.Color" />
-        <property name="RosyBrown" propertytype="System.Drawing.Color" />
-        <property name="RoyalBlue" propertytype="System.Drawing.Color" />
-        <property name="SaddleBrown" propertytype="System.Drawing.Color" />
-        <property name="Salmon" propertytype="System.Drawing.Color" />
-        <property name="SandyBrown" propertytype="System.Drawing.Color" />
-        <property name="SeaGreen" propertytype="System.Drawing.Color" />
-        <property name="SeaShell" propertytype="System.Drawing.Color" />
-        <property name="Sienna" propertytype="System.Drawing.Color" />
-        <property name="Silver" propertytype="System.Drawing.Color" />
-        <property name="SkyBlue" propertytype="System.Drawing.Color" />
-        <property name="SlateBlue" propertytype="System.Drawing.Color" />
-        <property name="SlateGray" propertytype="System.Drawing.Color" />
-        <property name="Snow" propertytype="System.Drawing.Color" />
-        <property name="SpringGreen" propertytype="System.Drawing.Color" />
-        <property name="SteelBlue" propertytype="System.Drawing.Color" />
-        <property name="Tan" propertytype="System.Drawing.Color" />
-        <property name="Teal" propertytype="System.Drawing.Color" />
-        <property name="Thistle" propertytype="System.Drawing.Color" />
-        <property name="Tomato" propertytype="System.Drawing.Color" />
-        <property name="Turquoise" propertytype="System.Drawing.Color" />
-        <property name="Violet" propertytype="System.Drawing.Color" />
-        <property name="Wheat" propertytype="System.Drawing.Color" />
-        <property name="White" propertytype="System.Drawing.Color" />
-        <property name="WhiteSmoke" propertytype="System.Drawing.Color" />
-        <property name="Yellow" propertytype="System.Drawing.Color" />
-        <property name="YellowGreen" propertytype="System.Drawing.Color" />
-        <property name="R" propertytype="System.Byte" />
-        <property name="G" propertytype="System.Byte" />
-        <property name="B" propertytype="System.Byte" />
-        <property name="A" propertytype="System.Byte" />
-        <property name="IsKnownColor" propertytype="System.Boolean" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="IsNamedColor" propertytype="System.Boolean" />
-        <property name="IsSystemColor" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Value" propertytype="System.Int64" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromArgb(System.Int32)" argnames="argb" returntype="System.Drawing.Color" />
-        <method name="FromArgb(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="alpha, red, green, blue" returntype="System.Drawing.Color" />
-        <method name="FromArgb(System.Int32, System.Drawing.Color)" argnames="alpha, baseColor" returntype="System.Drawing.Color" />
-        <method name="FromArgb(System.Int32, System.Int32, System.Int32)" argnames="red, green, blue" returntype="System.Drawing.Color" />
-        <method name="FromKnownColor(System.Drawing.KnownColor)" argnames="color" returntype="System.Drawing.Color" />
-        <method name="FromName(System.String)" argnames="name" returntype="System.Drawing.Color" />
-        <method name="GetBrightness" argnames="" returntype="System.Single" />
-        <method name="GetHue" argnames="" returntype="System.Single" />
-        <method name="GetSaturation" argnames="" returntype="System.Single" />
-        <method name="ToArgb" argnames="" returntype="System.Int32" />
-        <method name="ToKnownColor" argnames="" returntype="System.Drawing.KnownColor" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Equality(System.Drawing.Color, System.Drawing.Color)" argnames="left, right" />
-        <operator name="op_Inequality(System.Drawing.Color, System.Drawing.Color)" argnames="left, right" />
-    </struct>
-    <struct name="Point" namespace="System.Drawing">
-        <constructor name="Point(System.Int32, System.Int32)" argnames="x, y" />
-        <constructor name="Point(System.Drawing.Size)" argnames="sz" />
-        <constructor name="Point(System.Int32)" argnames="dw" />
-        <field name="Empty" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="X" propertytype="System.Int32" />
-        <property name="Y" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Ceiling(System.Drawing.PointF)" argnames="value" returntype="System.Drawing.Point" />
-        <method name="Truncate(System.Drawing.PointF)" argnames="value" returntype="System.Drawing.Point" />
-        <method name="Round(System.Drawing.PointF)" argnames="value" returntype="System.Drawing.Point" />
-        <method name="Offset(System.Int32, System.Int32)" argnames="dx, dy" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Drawing.Point)" argnames="p" />
-        <operator name="op_Explicit(System.Drawing.Point)" argnames="p" />
-        <operator name="op_Addition(System.Drawing.Point, System.Drawing.Size)" argnames="pt, sz" />
-        <operator name="op_Subtraction(System.Drawing.Point, System.Drawing.Size)" argnames="pt, sz" />
-        <operator name="op_Equality(System.Drawing.Point, System.Drawing.Point)" argnames="left, right" />
-        <operator name="op_Inequality(System.Drawing.Point, System.Drawing.Point)" argnames="left, right" />
-    </struct>
-    <struct name="Rectangle" namespace="System.Drawing">
-        <constructor name="Rectangle(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" />
-        <constructor name="Rectangle(System.Drawing.Point, System.Drawing.Size)" argnames="location, size" />
-        <field name="Empty" />
-        <property name="Location" propertytype="System.Drawing.Point" />
-        <property name="Size" propertytype="System.Drawing.Size" />
-        <property name="X" propertytype="System.Int32" />
-        <property name="Y" propertytype="System.Int32" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="Left" propertytype="System.Int32" />
-        <property name="Top" propertytype="System.Int32" />
-        <property name="Right" propertytype="System.Int32" />
-        <property name="Bottom" propertytype="System.Int32" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromLTRB(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" returntype="System.Drawing.Rectangle" />
-        <method name="Ceiling(System.Drawing.RectangleF)" argnames="value" returntype="System.Drawing.Rectangle" />
-        <method name="Truncate(System.Drawing.RectangleF)" argnames="value" returntype="System.Drawing.Rectangle" />
-        <method name="Round(System.Drawing.RectangleF)" argnames="value" returntype="System.Drawing.Rectangle" />
-        <method name="Contains(System.Int32, System.Int32)" argnames="x, y" returntype="System.Boolean" />
-        <method name="Contains(System.Drawing.Point)" argnames="pt" returntype="System.Boolean" />
-        <method name="Contains(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
-        <method name="Inflate(System.Int32, System.Int32)" argnames="width, height" returntype="System.Void" />
-        <method name="Inflate(System.Drawing.Size)" argnames="size" returntype="System.Void" />
-        <method name="Inflate(System.Drawing.Rectangle, System.Int32, System.Int32)" argnames="rect, x, y" returntype="System.Drawing.Rectangle" />
-        <method name="Intersect(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="Intersect(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="a, b" returntype="System.Drawing.Rectangle" />
-        <method name="IntersectsWith(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
-        <method name="Union(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="a, b" returntype="System.Drawing.Rectangle" />
-        <method name="Offset(System.Drawing.Point)" argnames="pos" returntype="System.Void" />
-        <method name="Offset(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Equality(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="left, right" />
-        <operator name="op_Inequality(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="left, right" />
-    </struct>
-    <struct name="Size" namespace="System.Drawing">
-        <constructor name="Size(System.Drawing.Point)" argnames="pt" />
-        <constructor name="Size(System.Int32, System.Int32)" argnames="width, height" />
-        <field name="Empty" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Height" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Ceiling(System.Drawing.SizeF)" argnames="value" returntype="System.Drawing.Size" />
-        <method name="Truncate(System.Drawing.SizeF)" argnames="value" returntype="System.Drawing.Size" />
-        <method name="Round(System.Drawing.SizeF)" argnames="value" returntype="System.Drawing.Size" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Implicit(System.Drawing.Size)" argnames="p" />
-        <operator name="op_Addition(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
-        <operator name="op_Subtraction(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
-        <operator name="op_Equality(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
-        <operator name="op_Inequality(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
-        <operator name="op_Explicit(System.Drawing.Size)" argnames="size" />
-    </struct>
-    <struct name="RECT" namespace="System.Drawing">
-        <constructor name="RECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
-        <field name="left" />
-        <field name="top" />
-        <field name="right" />
-        <field name="bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Drawing.SafeNativeMethods+RECT" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="MSG" namespace="System.Drawing">
-        <field name="hwnd" />
-        <field name="message" />
-        <field name="wParam" />
-        <field name="lParam" />
-        <field name="time" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="ICONDIR" namespace="System.Drawing">
-        <field name="idReserved" />
-        <field name="idType" />
-        <field name="idCount" />
-        <field name="idEntries" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="ICONDIRENTRY" namespace="System.Drawing">
-        <field name="bWidth" />
-        <field name="bHeight" />
-        <field name="bColorCount" />
-        <field name="bReserved" />
-        <field name="wPlanes" />
-        <field name="wBitCount" />
-        <field name="dwBytesInRes" />
-        <field name="dwImageOffset" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="PointF" namespace="System.Drawing">
-        <constructor name="PointF(System.Single, System.Single)" argnames="x, y" />
-        <field name="Empty" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="X" propertytype="System.Single" />
-        <property name="Y" propertytype="System.Single" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Addition(System.Drawing.PointF, System.Drawing.Size)" argnames="pt, sz" />
-        <operator name="op_Subtraction(System.Drawing.PointF, System.Drawing.Size)" argnames="pt, sz" />
-        <operator name="op_Equality(System.Drawing.PointF, System.Drawing.PointF)" argnames="left, right" />
-        <operator name="op_Inequality(System.Drawing.PointF, System.Drawing.PointF)" argnames="left, right" />
-    </struct>
-    <struct name="RectangleF" namespace="System.Drawing">
-        <constructor name="RectangleF(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" />
-        <constructor name="RectangleF(System.Drawing.PointF, System.Drawing.SizeF)" argnames="location, size" />
-        <field name="Empty" />
-        <property name="Location" propertytype="System.Drawing.PointF" />
-        <property name="Size" propertytype="System.Drawing.SizeF" />
-        <property name="X" propertytype="System.Single" />
-        <property name="Y" propertytype="System.Single" />
-        <property name="Width" propertytype="System.Single" />
-        <property name="Height" propertytype="System.Single" />
-        <property name="Left" propertytype="System.Single" />
-        <property name="Top" propertytype="System.Single" />
-        <property name="Right" propertytype="System.Single" />
-        <property name="Bottom" propertytype="System.Single" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromLTRB(System.Single, System.Single, System.Single, System.Single)" argnames="left, top, right, bottom" returntype="System.Drawing.RectangleF" />
-        <method name="Contains(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
-        <method name="Contains(System.Drawing.PointF)" argnames="pt" returntype="System.Boolean" />
-        <method name="Contains(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
-        <method name="Inflate(System.Single, System.Single)" argnames="x, y" returntype="System.Void" />
-        <method name="Inflate(System.Drawing.SizeF)" argnames="size" returntype="System.Void" />
-        <method name="Inflate(System.Drawing.RectangleF, System.Single, System.Single)" argnames="rect, x, y" returntype="System.Drawing.RectangleF" />
-        <method name="Intersect(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="Intersect(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="a, b" returntype="System.Drawing.RectangleF" />
-        <method name="IntersectsWith(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
-        <method name="Union(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="a, b" returntype="System.Drawing.RectangleF" />
-        <method name="Offset(System.Drawing.PointF)" argnames="pos" returntype="System.Void" />
-        <method name="Offset(System.Single, System.Single)" argnames="x, y" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Equality(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="left, right" />
-        <operator name="op_Inequality(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="left, right" />
-        <operator name="op_Implicit(System.Drawing.Rectangle)" argnames="r" />
-    </struct>
-    <struct name="SizeF" namespace="System.Drawing">
-        <constructor name="SizeF(System.Drawing.SizeF)" argnames="size" />
-        <constructor name="SizeF(System.Drawing.PointF)" argnames="pt" />
-        <constructor name="SizeF(System.Single, System.Single)" argnames="width, height" />
-        <field name="Empty" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="Width" propertytype="System.Single" />
-        <property name="Height" propertytype="System.Single" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ToPointF" argnames="" returntype="System.Drawing.PointF" />
-        <method name="ToSize" argnames="" returntype="System.Drawing.Size" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Addition(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
-        <operator name="op_Subtraction(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
-        <operator name="op_Equality(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
-        <operator name="op_Inequality(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
-        <operator name="op_Explicit(System.Drawing.SizeF)" argnames="size" />
-    </struct>
-    <struct name="CharacterRange" namespace="System.Drawing">
-        <constructor name="CharacterRange(System.Int32, System.Int32)" argnames="First, Length" />
-        <property name="First" propertytype="System.Int32" />
-        <property name="Length" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <delegate name="GetThumbnailImageAbort" namespace="System.Drawing">
-        <constructor name="GetThumbnailImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke" argnames="" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DrawImageAbort" namespace="System.Drawing">
-        <constructor name="DrawImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.IntPtr, System.AsyncCallback, System.Object)" argnames="callbackdata, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr)" argnames="callbackdata" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="EnumerateMetafileProc" namespace="System.Drawing">
-        <constructor name="EnumerateMetafileProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback, System.AsyncCallback, System.Object)" argnames="recordType, flags, dataSize, data, callbackData, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback)" argnames="recordType, flags, dataSize, data, callbackData" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="WndProc" namespace="System.Drawing">
-        <constructor name="WndProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
-        <method name="BeginInvoke(System.Int32, System.Int32, System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="hWnd, msg, wParam, lParam" returntype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="HandleChangeEventHandler" namespace="System.Drawing">
-        <constructor name="HandleChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.String, System.IntPtr, System.Int32, System.AsyncCallback, System.Object)" argnames="handleType, handleValue, currentHandleCount, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.String, System.IntPtr, System.Int32)" argnames="handleType, handleValue, currentHandleCount" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="ContentAlignment" namespace="System.Drawing">
-        <field name="TopLeft" />
-        <field name="TopCenter" />
-        <field name="TopRight" />
-        <field name="MiddleLeft" />
-        <field name="MiddleCenter" />
-        <field name="MiddleRight" />
-        <field name="BottomLeft" />
-        <field name="BottomCenter" />
-        <field name="BottomRight" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="KnownColor" namespace="System.Drawing">
-        <field name="ActiveBorder" />
-        <field name="ActiveCaption" />
-        <field name="ActiveCaptionText" />
-        <field name="AppWorkspace" />
-        <field name="Control" />
-        <field name="ControlDark" />
-        <field name="ControlDarkDark" />
-        <field name="ControlLight" />
-        <field name="ControlLightLight" />
-        <field name="ControlText" />
-        <field name="Desktop" />
-        <field name="GrayText" />
-        <field name="Highlight" />
-        <field name="HighlightText" />
-        <field name="HotTrack" />
-        <field name="InactiveBorder" />
-        <field name="InactiveCaption" />
-        <field name="InactiveCaptionText" />
-        <field name="Info" />
-        <field name="InfoText" />
-        <field name="Menu" />
-        <field name="MenuText" />
-        <field name="ScrollBar" />
-        <field name="Window" />
-        <field name="WindowFrame" />
-        <field name="WindowText" />
-        <field name="Transparent" />
-        <field name="AliceBlue" />
-        <field name="AntiqueWhite" />
-        <field name="Aqua" />
-        <field name="Aquamarine" />
-        <field name="Azure" />
-        <field name="Beige" />
-        <field name="Bisque" />
-        <field name="Black" />
-        <field name="BlanchedAlmond" />
-        <field name="Blue" />
-        <field name="BlueViolet" />
-        <field name="Brown" />
-        <field name="BurlyWood" />
-        <field name="CadetBlue" />
-        <field name="Chartreuse" />
-        <field name="Chocolate" />
-        <field name="Coral" />
-        <field name="CornflowerBlue" />
-        <field name="Cornsilk" />
-        <field name="Crimson" />
-        <field name="Cyan" />
-        <field name="DarkBlue" />
-        <field name="DarkCyan" />
-        <field name="DarkGoldenrod" />
-        <field name="DarkGray" />
-        <field name="DarkGreen" />
-        <field name="DarkKhaki" />
-        <field name="DarkMagenta" />
-        <field name="DarkOliveGreen" />
-        <field name="DarkOrange" />
-        <field name="DarkOrchid" />
-        <field name="DarkRed" />
-        <field name="DarkSalmon" />
-        <field name="DarkSeaGreen" />
-        <field name="DarkSlateBlue" />
-        <field name="DarkSlateGray" />
-        <field name="DarkTurquoise" />
-        <field name="DarkViolet" />
-        <field name="DeepPink" />
-        <field name="DeepSkyBlue" />
-        <field name="DimGray" />
-        <field name="DodgerBlue" />
-        <field name="Firebrick" />
-        <field name="FloralWhite" />
-        <field name="ForestGreen" />
-        <field name="Fuchsia" />
-        <field name="Gainsboro" />
-        <field name="GhostWhite" />
-        <field name="Gold" />
-        <field name="Goldenrod" />
-        <field name="Gray" />
-        <field name="Green" />
-        <field name="GreenYellow" />
-        <field name="Honeydew" />
-        <field name="HotPink" />
-        <field name="IndianRed" />
-        <field name="Indigo" />
-        <field name="Ivory" />
-        <field name="Khaki" />
-        <field name="Lavender" />
-        <field name="LavenderBlush" />
-        <field name="LawnGreen" />
-        <field name="LemonChiffon" />
-        <field name="LightBlue" />
-        <field name="LightCoral" />
-        <field name="LightCyan" />
-        <field name="LightGoldenrodYellow" />
-        <field name="LightGray" />
-        <field name="LightGreen" />
-        <field name="LightPink" />
-        <field name="LightSalmon" />
-        <field name="LightSeaGreen" />
-        <field name="LightSkyBlue" />
-        <field name="LightSlateGray" />
-        <field name="LightSteelBlue" />
-        <field name="LightYellow" />
-        <field name="Lime" />
-        <field name="LimeGreen" />
-        <field name="Linen" />
-        <field name="Magenta" />
-        <field name="Maroon" />
-        <field name="MediumAquamarine" />
-        <field name="MediumBlue" />
-        <field name="MediumOrchid" />
-        <field name="MediumPurple" />
-        <field name="MediumSeaGreen" />
-        <field name="MediumSlateBlue" />
-        <field name="MediumSpringGreen" />
-        <field name="MediumTurquoise" />
-        <field name="MediumVioletRed" />
-        <field name="MidnightBlue" />
-        <field name="MintCream" />
-        <field name="MistyRose" />
-        <field name="Moccasin" />
-        <field name="NavajoWhite" />
-        <field name="Navy" />
-        <field name="OldLace" />
-        <field name="Olive" />
-        <field name="OliveDrab" />
-        <field name="Orange" />
-        <field name="OrangeRed" />
-        <field name="Orchid" />
-        <field name="PaleGoldenrod" />
-        <field name="PaleGreen" />
-        <field name="PaleTurquoise" />
-        <field name="PaleVioletRed" />
-        <field name="PapayaWhip" />
-        <field name="PeachPuff" />
-        <field name="Peru" />
-        <field name="Pink" />
-        <field name="Plum" />
-        <field name="PowderBlue" />
-        <field name="Purple" />
-        <field name="Red" />
-        <field name="RosyBrown" />
-        <field name="RoyalBlue" />
-        <field name="SaddleBrown" />
-        <field name="Salmon" />
-        <field name="SandyBrown" />
-        <field name="SeaGreen" />
-        <field name="SeaShell" />
-        <field name="Sienna" />
-        <field name="Silver" />
-        <field name="SkyBlue" />
-        <field name="SlateBlue" />
-        <field name="SlateGray" />
-        <field name="Snow" />
-        <field name="SpringGreen" />
-        <field name="SteelBlue" />
-        <field name="Tan" />
-        <field name="Teal" />
-        <field name="Thistle" />
-        <field name="Tomato" />
-        <field name="Turquoise" />
-        <field name="Violet" />
-        <field name="Wheat" />
-        <field name="White" />
-        <field name="WhiteSmoke" />
-        <field name="Yellow" />
-        <field name="YellowGreen" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RotateFlipType" namespace="System.Drawing">
-        <field name="RotateNoneFlipNone" />
-        <field name="Rotate90FlipNone" />
-        <field name="Rotate180FlipNone" />
-        <field name="Rotate270FlipNone" />
-        <field name="RotateNoneFlipX" />
-        <field name="Rotate90FlipX" />
-        <field name="Rotate180FlipX" />
-        <field name="Rotate270FlipX" />
-        <field name="RotateNoneFlipY" />
-        <field name="Rotate90FlipY" />
-        <field name="Rotate180FlipY" />
-        <field name="Rotate270FlipY" />
-        <field name="RotateNoneFlipXY" />
-        <field name="Rotate90FlipXY" />
-        <field name="Rotate180FlipXY" />
-        <field name="Rotate270FlipXY" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FontStyle" namespace="System.Drawing">
-        <field name="Regular" />
-        <field name="Bold" />
-        <field name="Italic" />
-        <field name="Underline" />
-        <field name="Strikeout" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StructFormat" namespace="System.Drawing">
-        <field name="Ansi" />
-        <field name="Unicode" />
-        <field name="Auto" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StringAlignment" namespace="System.Drawing">
-        <field name="Near" />
-        <field name="Center" />
-        <field name="Far" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StringDigitSubstitute" namespace="System.Drawing">
-        <field name="User" />
-        <field name="None" />
-        <field name="National" />
-        <field name="Traditional" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StringFormatFlags" namespace="System.Drawing">
-        <field name="DirectionRightToLeft" />
-        <field name="DirectionVertical" />
-        <field name="FitBlackBox" />
-        <field name="DisplayFormatControl" />
-        <field name="NoFontFallback" />
-        <field name="MeasureTrailingSpaces" />
-        <field name="NoWrap" />
-        <field name="LineLimit" />
-        <field name="NoClip" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StringTrimming" namespace="System.Drawing">
-        <field name="None" />
-        <field name="Character" />
-        <field name="Word" />
-        <field name="EllipsisCharacter" />
-        <field name="EllipsisWord" />
-        <field name="EllipsisPath" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StringUnit" namespace="System.Drawing">
-        <field name="World" />
-        <field name="Display" />
-        <field name="Pixel" />
-        <field name="Point" />
-        <field name="Inch" />
-        <field name="Document" />
-        <field name="Millimeter" />
-        <field name="Em" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="GraphicsUnit" namespace="System.Drawing">
-        <field name="World" />
-        <field name="Display" />
-        <field name="Pixel" />
-        <field name="Point" />
-        <field name="Inch" />
-        <field name="Document" />
-        <field name="Millimeter" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="CustomLineCap" namespace="System.Drawing.Drawing2D">
-        <constructor name="CustomLineCap(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.GraphicsPath)" argnames="fillPath, strokePath" />
-        <constructor name="CustomLineCap(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.LineCap)" argnames="fillPath, strokePath, baseCap" />
-        <constructor name="CustomLineCap(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.LineCap, System.Single)" argnames="fillPath, strokePath, baseCap, baseInset" />
-        <property name="StrokeJoin" propertytype="System.Drawing.Drawing2D.LineJoin" />
-        <property name="BaseCap" propertytype="System.Drawing.Drawing2D.LineCap" />
-        <property name="BaseInset" propertytype="System.Single" />
-        <property name="WidthScale" propertytype="System.Single" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SetStrokeCaps(System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.LineCap)" argnames="startCap, endCap" returntype="System.Void" />
-        <method name="GetStrokeCaps(System.Drawing.Drawing2D.LineCap&amp;, System.Drawing.Drawing2D.LineCap&amp;)" argnames="startCap, endCap" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AdjustableArrowCap" namespace="System.Drawing.Drawing2D">
-        <constructor name="AdjustableArrowCap(System.Single, System.Single)" argnames="width, height" />
-        <constructor name="AdjustableArrowCap(System.Single, System.Single, System.Boolean)" argnames="width, height, isFilled" />
-        <property name="Height" propertytype="System.Single" />
-        <property name="Width" propertytype="System.Single" />
-        <property name="MiddleInset" propertytype="System.Single" />
-        <property name="Filled" propertytype="System.Boolean" />
-        <property name="StrokeJoin" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Drawing.Drawing2D.LineJoin" />
-        <property name="BaseCap" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Drawing.Drawing2D.LineCap" />
-        <property name="BaseInset" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Single" />
-        <property name="WidthScale" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Single" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SetStrokeCaps(System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.LineCap)" argnames="startCap, endCap" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
-        <method name="GetStrokeCaps(System.Drawing.Drawing2D.LineCap&amp;, System.Drawing.Drawing2D.LineCap&amp;)" argnames="startCap, endCap" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Blend" namespace="System.Drawing.Drawing2D">
-        <constructor name="Blend" argnames="" />
-        <constructor name="Blend(System.Int32)" argnames="count" />
-        <property name="Factors" propertytype="System.Single[]" />
-        <property name="Positions" propertytype="System.Single[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorBlend" namespace="System.Drawing.Drawing2D">
-        <constructor name="ColorBlend" argnames="" />
-        <constructor name="ColorBlend(System.Int32)" argnames="count" />
-        <property name="Colors" propertytype="System.Drawing.Color[]" />
-        <property name="Positions" propertytype="System.Single[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GraphicsContainer" namespace="System.Drawing.Drawing2D">
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GraphicsPathIterator" namespace="System.Drawing.Drawing2D">
-        <constructor name="GraphicsPathIterator(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="SubpathCount" propertytype="System.Int32" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="NextSubpath(System.Int32&amp;, System.Int32&amp;, System.Boolean&amp;)" argnames="startIndex, endIndex, isClosed" returntype="System.Int32" />
-        <method name="NextSubpath(System.Drawing.Drawing2D.GraphicsPath, System.Boolean&amp;)" argnames="path, isClosed" returntype="System.Int32" />
-        <method name="NextPathType(System.Byte&amp;, System.Int32&amp;, System.Int32&amp;)" argnames="pathType, startIndex, endIndex" returntype="System.Int32" />
-        <method name="NextMarker(System.Int32&amp;, System.Int32&amp;)" argnames="startIndex, endIndex" returntype="System.Int32" />
-        <method name="NextMarker(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Int32" />
-        <method name="HasCurve" argnames="" returntype="System.Boolean" />
-        <method name="Rewind" argnames="" returntype="System.Void" />
-        <method name="Enumerate(System.Drawing.PointF[]&amp;, System.Byte[]&amp;)" argnames="points, types" returntype="System.Int32" />
-        <method name="CopyData(System.Drawing.PointF[]&amp;, System.Byte[]&amp;, System.Int32, System.Int32)" argnames="points, types, startIndex, endIndex" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GraphicsState" namespace="System.Drawing.Drawing2D">
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HatchBrush" namespace="System.Drawing.Drawing2D">
-        <constructor name="HatchBrush(System.Drawing.Drawing2D.HatchStyle, System.Drawing.Color)" argnames="hatchstyle, foreColor" />
-        <constructor name="HatchBrush(System.Drawing.Drawing2D.HatchStyle, System.Drawing.Color, System.Drawing.Color)" argnames="hatchstyle, foreColor, backColor" />
-        <property name="HatchStyle" propertytype="System.Drawing.Drawing2D.HatchStyle" />
-        <property name="ForegroundColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundColor" propertytype="System.Drawing.Color" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LinearGradientBrush" namespace="System.Drawing.Drawing2D">
-        <constructor name="LinearGradientBrush(System.Drawing.PointF, System.Drawing.PointF, System.Drawing.Color, System.Drawing.Color)" argnames="point1, point2, color1, color2" />
-        <constructor name="LinearGradientBrush(System.Drawing.Point, System.Drawing.Point, System.Drawing.Color, System.Drawing.Color)" argnames="point1, point2, color1, color2" />
-        <constructor name="LinearGradientBrush(System.Drawing.RectangleF, System.Drawing.Color, System.Drawing.Color, System.Drawing.Drawing2D.LinearGradientMode)" argnames="rect, color1, color2, linearGradientMode" />
-        <constructor name="LinearGradientBrush(System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color, System.Drawing.Drawing2D.LinearGradientMode)" argnames="rect, color1, color2, linearGradientMode" />
-        <constructor name="LinearGradientBrush(System.Drawing.RectangleF, System.Drawing.Color, System.Drawing.Color, System.Single)" argnames="rect, color1, color2, angle" />
-        <constructor name="LinearGradientBrush(System.Drawing.RectangleF, System.Drawing.Color, System.Drawing.Color, System.Single, System.Boolean)" argnames="rect, color1, color2, angle, isAngleScaleable" />
-        <constructor name="LinearGradientBrush(System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color, System.Single)" argnames="rect, color1, color2, angle" />
-        <constructor name="LinearGradientBrush(System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color, System.Single, System.Boolean)" argnames="rect, color1, color2, angle, isAngleScaleable" />
-        <property name="LinearColors" propertytype="System.Drawing.Color[]" />
-        <property name="Rectangle" propertytype="System.Drawing.RectangleF" />
-        <property name="GammaCorrection" propertytype="System.Boolean" />
-        <property name="Blend" propertytype="System.Drawing.Drawing2D.Blend" />
-        <property name="InterpolationColors" propertytype="System.Drawing.Drawing2D.ColorBlend" />
-        <property name="WrapMode" propertytype="System.Drawing.Drawing2D.WrapMode" />
-        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SetSigmaBellShape(System.Single)" argnames="focus" returntype="System.Void" />
-        <method name="SetSigmaBellShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
-        <method name="SetBlendTriangularShape(System.Single)" argnames="focus" returntype="System.Void" />
-        <method name="SetBlendTriangularShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
-        <method name="ResetTransform" argnames="" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
-        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
-        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PathData" namespace="System.Drawing.Drawing2D">
-        <constructor name="PathData" argnames="" />
-        <property name="Points" propertytype="System.Drawing.PointF[]" />
-        <property name="Types" propertytype="System.Byte[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PathGradientBrush" namespace="System.Drawing.Drawing2D">
-        <constructor name="PathGradientBrush(System.Drawing.PointF[])" argnames="points" />
-        <constructor name="PathGradientBrush(System.Drawing.PointF[], System.Drawing.Drawing2D.WrapMode)" argnames="points, wrapMode" />
-        <constructor name="PathGradientBrush(System.Drawing.Point[])" argnames="points" />
-        <constructor name="PathGradientBrush(System.Drawing.Point[], System.Drawing.Drawing2D.WrapMode)" argnames="points, wrapMode" />
-        <constructor name="PathGradientBrush(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" />
-        <property name="CenterColor" propertytype="System.Drawing.Color" />
-        <property name="SurroundColors" propertytype="System.Drawing.Color[]" />
-        <property name="CenterPoint" propertytype="System.Drawing.PointF" />
-        <property name="Rectangle" propertytype="System.Drawing.RectangleF" />
-        <property name="Blend" propertytype="System.Drawing.Drawing2D.Blend" />
-        <property name="InterpolationColors" propertytype="System.Drawing.Drawing2D.ColorBlend" />
-        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
-        <property name="FocusScales" propertytype="System.Drawing.PointF" />
-        <property name="WrapMode" propertytype="System.Drawing.Drawing2D.WrapMode" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SetSigmaBellShape(System.Single)" argnames="focus" returntype="System.Void" />
-        <method name="SetSigmaBellShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
-        <method name="SetBlendTriangularShape(System.Single)" argnames="focus" returntype="System.Void" />
-        <method name="SetBlendTriangularShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
-        <method name="ResetTransform" argnames="" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
-        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
-        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
-        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RegionData" namespace="System.Drawing.Drawing2D">
-        <property name="Data" propertytype="System.Byte[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GraphicsPath" namespace="System.Drawing.Drawing2D">
-        <constructor name="GraphicsPath" argnames="" />
-        <constructor name="GraphicsPath(System.Drawing.Drawing2D.FillMode)" argnames="fillMode" />
-        <constructor name="GraphicsPath(System.Drawing.PointF[], System.Byte[])" argnames="pts, types" />
-        <constructor name="GraphicsPath(System.Drawing.PointF[], System.Byte[], System.Drawing.Drawing2D.FillMode)" argnames="pts, types, fillMode" />
-        <constructor name="GraphicsPath(System.Drawing.Point[], System.Byte[])" argnames="pts, types" />
-        <constructor name="GraphicsPath(System.Drawing.Point[], System.Byte[], System.Drawing.Drawing2D.FillMode)" argnames="pts, types, fillMode" />
-        <property name="FillMode" propertytype="System.Drawing.Drawing2D.FillMode" />
-        <property name="PathData" propertytype="System.Drawing.Drawing2D.PathData" />
-        <property name="PointCount" propertytype="System.Int32" />
-        <property name="PathTypes" propertytype="System.Byte[]" />
-        <property name="PathPoints" propertytype="System.Drawing.PointF[]" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="StartFigure" argnames="" returntype="System.Void" />
-        <method name="CloseFigure" argnames="" returntype="System.Void" />
-        <method name="CloseAllFigures" argnames="" returntype="System.Void" />
-        <method name="SetMarkers" argnames="" returntype="System.Void" />
-        <method name="ClearMarkers" argnames="" returntype="System.Void" />
-        <method name="Reverse" argnames="" returntype="System.Void" />
-        <method name="GetLastPoint" argnames="" returntype="System.Drawing.PointF" />
-        <method name="IsVisible(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.PointF)" argnames="point" returntype="System.Boolean" />
-        <method name="IsVisible(System.Single, System.Single, System.Drawing.Graphics)" argnames="x, y, graphics" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.PointF, System.Drawing.Graphics)" argnames="pt, graphics" returntype="System.Boolean" />
-        <method name="IsVisible(System.Int32, System.Int32)" argnames="x, y" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
-        <method name="IsVisible(System.Int32, System.Int32, System.Drawing.Graphics)" argnames="x, y, graphics" returntype="System.Boolean" />
-        <method name="IsVisible(System.Drawing.Point, System.Drawing.Graphics)" argnames="pt, graphics" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Single, System.Single, System.Drawing.Pen)" argnames="x, y, pen" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Drawing.PointF, System.Drawing.Pen)" argnames="point, pen" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Single, System.Single, System.Drawing.Pen, System.Drawing.Graphics)" argnames="x, y, pen, graphics" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Drawing.PointF, System.Drawing.Pen, System.Drawing.Graphics)" argnames="pt, pen, graphics" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Int32, System.Int32, System.Drawing.Pen)" argnames="x, y, pen" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Drawing.Point, System.Drawing.Pen)" argnames="point, pen" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Int32, System.Int32, System.Drawing.Pen, System.Drawing.Graphics)" argnames="x, y, pen, graphics" returntype="System.Boolean" />
-        <method name="IsOutlineVisible(System.Drawing.Point, System.Drawing.Pen, System.Drawing.Graphics)" argnames="pt, pen, graphics" returntype="System.Boolean" />
-        <method name="AddLine(System.Drawing.PointF, System.Drawing.PointF)" argnames="pt1, pt2" returntype="System.Void" />
-        <method name="AddLine(System.Single, System.Single, System.Single, System.Single)" argnames="x1, y1, x2, y2" returntype="System.Void" />
-        <method name="AddLines(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
-        <method name="AddLine(System.Drawing.Point, System.Drawing.Point)" argnames="pt1, pt2" returntype="System.Void" />
-        <method name="AddLine(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x1, y1, x2, y2" returntype="System.Void" />
-        <method name="AddLines(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
-        <method name="AddArc(System.Drawing.RectangleF, System.Single, System.Single)" argnames="rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="AddArc(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="AddArc(System.Drawing.Rectangle, System.Single, System.Single)" argnames="rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="AddArc(System.Int32, System.Int32, System.Int32, System.Int32, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="AddBezier(System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF)" argnames="pt1, pt2, pt3, pt4" returntype="System.Void" />
-        <method name="AddBezier(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="x1, y1, x2, y2, x3, y3, x4, y4" returntype="System.Void" />
-        <method name="AddBeziers(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
-        <method name="AddBezier(System.Drawing.Point, System.Drawing.Point, System.Drawing.Point, System.Drawing.Point)" argnames="pt1, pt2, pt3, pt4" returntype="System.Void" />
-        <method name="AddBezier(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x1, y1, x2, y2, x3, y3, x4, y4" returntype="System.Void" />
-        <method name="AddBeziers(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
-        <method name="AddCurve(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
-        <method name="AddCurve(System.Drawing.PointF[], System.Single)" argnames="points, tension" returntype="System.Void" />
-        <method name="AddCurve(System.Drawing.PointF[], System.Int32, System.Int32, System.Single)" argnames="points, offset, numberOfSegments, tension" returntype="System.Void" />
-        <method name="AddCurve(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
-        <method name="AddCurve(System.Drawing.Point[], System.Single)" argnames="points, tension" returntype="System.Void" />
-        <method name="AddCurve(System.Drawing.Point[], System.Int32, System.Int32, System.Single)" argnames="points, offset, numberOfSegments, tension" returntype="System.Void" />
-        <method name="AddClosedCurve(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
-        <method name="AddClosedCurve(System.Drawing.PointF[], System.Single)" argnames="points, tension" returntype="System.Void" />
-        <method name="AddClosedCurve(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
-        <method name="AddClosedCurve(System.Drawing.Point[], System.Single)" argnames="points, tension" returntype="System.Void" />
-        <method name="AddRectangle(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="AddRectangles(System.Drawing.RectangleF[])" argnames="rects" returntype="System.Void" />
-        <method name="AddRectangle(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="AddRectangles(System.Drawing.Rectangle[])" argnames="rects" returntype="System.Void" />
-        <method name="AddEllipse(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
-        <method name="AddEllipse(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" returntype="System.Void" />
-        <method name="AddEllipse(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
-        <method name="AddEllipse(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
-        <method name="AddPie(System.Drawing.Rectangle, System.Single, System.Single)" argnames="rect, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="AddPie(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="AddPie(System.Int32, System.Int32, System.Int32, System.Int32, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
-        <method name="AddPolygon(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
-        <method name="AddPolygon(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
-        <method name="AddPath(System.Drawing.Drawing2D.GraphicsPath, System.Boolean)" argnames="addingPath, connect" returntype="System.Void" />
-        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.PointF, System.Drawing.StringFormat)" argnames="s, family, style, emSize, origin, format" returntype="System.Void" />
-        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.Point, System.Drawing.StringFormat)" argnames="s, family, style, emSize, origin, format" returntype="System.Void" />
-        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="s, family, style, emSize, layoutRect, format" returntype="System.Void" />
-        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.Rectangle, System.Drawing.StringFormat)" argnames="s, family, style, emSize, layoutRect, format" returntype="System.Void" />
-        <method name="Transform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="GetBounds" argnames="" returntype="System.Drawing.RectangleF" />
-        <method name="GetBounds(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Drawing.RectangleF" />
-        <method name="GetBounds(System.Drawing.Drawing2D.Matrix, System.Drawing.Pen)" argnames="matrix, pen" returntype="System.Drawing.RectangleF" />
-        <method name="Flatten" argnames="" returntype="System.Void" />
-        <method name="Flatten(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="Flatten(System.Drawing.Drawing2D.Matrix, System.Single)" argnames="matrix, flatness" returntype="System.Void" />
-        <method name="Widen(System.Drawing.Pen)" argnames="pen" returntype="System.Void" />
-        <method name="Widen(System.Drawing.Pen, System.Drawing.Drawing2D.Matrix)" argnames="pen, matrix" returntype="System.Void" />
-        <method name="Widen(System.Drawing.Pen, System.Drawing.Drawing2D.Matrix, System.Single)" argnames="pen, matrix, flatness" returntype="System.Void" />
-        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF)" argnames="destPoints, srcRect" returntype="System.Void" />
-        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.Drawing2D.Matrix)" argnames="destPoints, srcRect, matrix" returntype="System.Void" />
-        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.WarpMode)" argnames="destPoints, srcRect, matrix, warpMode" returntype="System.Void" />
-        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.WarpMode, System.Single)" argnames="destPoints, srcRect, matrix, warpMode, flatness" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Matrix" namespace="System.Drawing.Drawing2D">
-        <constructor name="Matrix" argnames="" />
-        <constructor name="Matrix(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="m11, m12, m21, m22, dx, dy" />
-        <constructor name="Matrix(System.Drawing.RectangleF, System.Drawing.PointF[])" argnames="rect, plgpts" />
-        <constructor name="Matrix(System.Drawing.Rectangle, System.Drawing.Point[])" argnames="rect, plgpts" />
-        <property name="Elements" propertytype="System.Single[]" />
-        <property name="OffsetX" propertytype="System.Single" />
-        <property name="OffsetY" propertytype="System.Single" />
-        <property name="IsInvertible" propertytype="System.Boolean" />
-        <property name="IsIdentity" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Clone" argnames="" returntype="System.Drawing.Drawing2D.Matrix" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Multiply(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
-        <method name="Multiply(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
-        <method name="Translate(System.Single, System.Single)" argnames="offsetX, offsetY" returntype="System.Void" />
-        <method name="Translate(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="offsetX, offsetY, order" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="scaleX, scaleY" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="scaleX, scaleY, order" returntype="System.Void" />
-        <method name="Rotate(System.Single)" argnames="angle" returntype="System.Void" />
-        <method name="Rotate(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
-        <method name="RotateAt(System.Single, System.Drawing.PointF)" argnames="angle, point" returntype="System.Void" />
-        <method name="RotateAt(System.Single, System.Drawing.PointF, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, point, order" returntype="System.Void" />
-        <method name="Shear(System.Single, System.Single)" argnames="shearX, shearY" returntype="System.Void" />
-        <method name="Shear(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="shearX, shearY, order" returntype="System.Void" />
-        <method name="Invert" argnames="" returntype="System.Void" />
-        <method name="TransformPoints(System.Drawing.PointF[])" argnames="pts" returntype="System.Void" />
-        <method name="TransformPoints(System.Drawing.Point[])" argnames="pts" returntype="System.Void" />
-        <method name="TransformVectors(System.Drawing.PointF[])" argnames="pts" returntype="System.Void" />
-        <method name="VectorTransformPoints(System.Drawing.Point[])" argnames="pts" returntype="System.Void" />
-        <method name="TransformVectors(System.Drawing.Point[])" argnames="pts" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="DashCap" namespace="System.Drawing.Drawing2D">
-        <field name="Flat" />
-        <field name="Round" />
-        <field name="Triangle" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CombineMode" namespace="System.Drawing.Drawing2D">
-        <field name="Replace" />
-        <field name="Intersect" />
-        <field name="Union" />
-        <field name="Xor" />
-        <field name="Exclude" />
-        <field name="Complement" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CompositingMode" namespace="System.Drawing.Drawing2D">
-        <field name="SourceOver" />
-        <field name="SourceCopy" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CompositingQuality" namespace="System.Drawing.Drawing2D">
-        <field name="Invalid" />
-        <field name="Default" />
-        <field name="HighSpeed" />
-        <field name="HighQuality" />
-        <field name="GammaCorrected" />
-        <field name="AssumeLinear" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CoordinateSpace" namespace="System.Drawing.Drawing2D">
-        <field name="World" />
-        <field name="Page" />
-        <field name="Device" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DashStyle" namespace="System.Drawing.Drawing2D">
-        <field name="Solid" />
-        <field name="Dash" />
-        <field name="Dot" />
-        <field name="DashDot" />
-        <field name="DashDotDot" />
-        <field name="Custom" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FillMode" namespace="System.Drawing.Drawing2D">
-        <field name="Alternate" />
-        <field name="Winding" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FlushIntention" namespace="System.Drawing.Drawing2D">
-        <field name="Flush" />
-        <field name="Sync" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="HatchStyle" namespace="System.Drawing.Drawing2D">
-        <field name="Horizontal" />
-        <field name="Vertical" />
-        <field name="ForwardDiagonal" />
-        <field name="BackwardDiagonal" />
-        <field name="Cross" />
-        <field name="DiagonalCross" />
-        <field name="Percent05" />
-        <field name="Percent10" />
-        <field name="Percent20" />
-        <field name="Percent25" />
-        <field name="Percent30" />
-        <field name="Percent40" />
-        <field name="Percent50" />
-        <field name="Percent60" />
-        <field name="Percent70" />
-        <field name="Percent75" />
-        <field name="Percent80" />
-        <field name="Percent90" />
-        <field name="LightDownwardDiagonal" />
-        <field name="LightUpwardDiagonal" />
-        <field name="DarkDownwardDiagonal" />
-        <field name="DarkUpwardDiagonal" />
-        <field name="WideDownwardDiagonal" />
-        <field name="WideUpwardDiagonal" />
-        <field name="LightVertical" />
-        <field name="LightHorizontal" />
-        <field name="NarrowVertical" />
-        <field name="NarrowHorizontal" />
-        <field name="DarkVertical" />
-        <field name="DarkHorizontal" />
-        <field name="DashedDownwardDiagonal" />
-        <field name="DashedUpwardDiagonal" />
-        <field name="DashedHorizontal" />
-        <field name="DashedVertical" />
-        <field name="SmallConfetti" />
-        <field name="LargeConfetti" />
-        <field name="ZigZag" />
-        <field name="Wave" />
-        <field name="DiagonalBrick" />
-        <field name="HorizontalBrick" />
-        <field name="Weave" />
-        <field name="Plaid" />
-        <field name="Divot" />
-        <field name="DottedGrid" />
-        <field name="DottedDiamond" />
-        <field name="Shingle" />
-        <field name="Trellis" />
-        <field name="Sphere" />
-        <field name="SmallGrid" />
-        <field name="SmallCheckerBoard" />
-        <field name="LargeCheckerBoard" />
-        <field name="OutlinedDiamond" />
-        <field name="SolidDiamond" />
-        <field name="LargeGrid" />
-        <field name="Min" />
-        <field name="Max" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="InterpolationMode" namespace="System.Drawing.Drawing2D">
-        <field name="Invalid" />
-        <field name="Default" />
-        <field name="Low" />
-        <field name="High" />
-        <field name="Bilinear" />
-        <field name="Bicubic" />
-        <field name="NearestNeighbor" />
-        <field name="HighQualityBilinear" />
-        <field name="HighQualityBicubic" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LinearGradientMode" namespace="System.Drawing.Drawing2D">
-        <field name="Horizontal" />
-        <field name="Vertical" />
-        <field name="ForwardDiagonal" />
-        <field name="BackwardDiagonal" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LineCap" namespace="System.Drawing.Drawing2D">
-        <field name="Flat" />
-        <field name="Square" />
-        <field name="Round" />
-        <field name="Triangle" />
-        <field name="NoAnchor" />
-        <field name="SquareAnchor" />
-        <field name="RoundAnchor" />
-        <field name="DiamondAnchor" />
-        <field name="ArrowAnchor" />
-        <field name="Custom" />
-        <field name="AnchorMask" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LineJoin" namespace="System.Drawing.Drawing2D">
-        <field name="Miter" />
-        <field name="Bevel" />
-        <field name="Round" />
-        <field name="MiterClipped" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MatrixOrder" namespace="System.Drawing.Drawing2D">
-        <field name="Prepend" />
-        <field name="Append" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PathPointType" namespace="System.Drawing.Drawing2D">
-        <field name="Start" />
-        <field name="Line" />
-        <field name="Bezier" />
-        <field name="PathTypeMask" />
-        <field name="DashMode" />
-        <field name="PathMarker" />
-        <field name="CloseSubpath" />
-        <field name="Bezier3" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PenAlignment" namespace="System.Drawing.Drawing2D">
-        <field name="Center" />
-        <field name="Inset" />
-        <field name="Outset" />
-        <field name="Left" />
-        <field name="Right" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PenType" namespace="System.Drawing.Drawing2D">
-        <field name="SolidColor" />
-        <field name="HatchFill" />
-        <field name="TextureFill" />
-        <field name="PathGradient" />
-        <field name="LinearGradient" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PixelOffsetMode" namespace="System.Drawing.Drawing2D">
-        <field name="Invalid" />
-        <field name="Default" />
-        <field name="HighSpeed" />
-        <field name="HighQuality" />
-        <field name="None" />
-        <field name="Half" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="QualityMode" namespace="System.Drawing.Drawing2D">
-        <field name="Invalid" />
-        <field name="Default" />
-        <field name="Low" />
-        <field name="High" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SmoothingMode" namespace="System.Drawing.Drawing2D">
-        <field name="Invalid" />
-        <field name="Default" />
-        <field name="HighSpeed" />
-        <field name="HighQuality" />
-        <field name="None" />
-        <field name="AntiAlias" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="WarpMode" namespace="System.Drawing.Drawing2D">
-        <field name="Perspective" />
-        <field name="Bilinear" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="WrapMode" namespace="System.Drawing.Drawing2D">
-        <field name="Tile" />
-        <field name="TileFlipX" />
-        <field name="TileFlipY" />
-        <field name="TileFlipXY" />
-        <field name="Clamp" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="BitmapData" namespace="System.Drawing.Imaging">
-        <constructor name="BitmapData" argnames="" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="Stride" propertytype="System.Int32" />
-        <property name="PixelFormat" propertytype="System.Drawing.Imaging.PixelFormat" />
-        <property name="Scan0" propertytype="System.IntPtr" />
-        <property name="Reserved" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorMap" namespace="System.Drawing.Imaging">
-        <constructor name="ColorMap" argnames="" />
-        <property name="OldColor" propertytype="System.Drawing.Color" />
-        <property name="NewColor" propertytype="System.Drawing.Color" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorMatrix" namespace="System.Drawing.Imaging">
-        <constructor name="ColorMatrix" argnames="" />
-        <constructor name="ColorMatrix(System.Single[][])" argnames="newColorMatrix" />
-        <property name="Matrix00" propertytype="System.Single" />
-        <property name="Matrix01" propertytype="System.Single" />
-        <property name="Matrix02" propertytype="System.Single" />
-        <property name="Matrix03" propertytype="System.Single" />
-        <property name="Matrix04" propertytype="System.Single" />
-        <property name="Matrix10" propertytype="System.Single" />
-        <property name="Matrix11" propertytype="System.Single" />
-        <property name="Matrix12" propertytype="System.Single" />
-        <property name="Matrix13" propertytype="System.Single" />
-        <property name="Matrix14" propertytype="System.Single" />
-        <property name="Matrix20" propertytype="System.Single" />
-        <property name="Matrix21" propertytype="System.Single" />
-        <property name="Matrix22" propertytype="System.Single" />
-        <property name="Matrix23" propertytype="System.Single" />
-        <property name="Matrix24" propertytype="System.Single" />
-        <property name="Matrix30" propertytype="System.Single" />
-        <property name="Matrix31" propertytype="System.Single" />
-        <property name="Matrix32" propertytype="System.Single" />
-        <property name="Matrix33" propertytype="System.Single" />
-        <property name="Matrix34" propertytype="System.Single" />
-        <property name="Matrix40" propertytype="System.Single" />
-        <property name="Matrix41" propertytype="System.Single" />
-        <property name="Matrix42" propertytype="System.Single" />
-        <property name="Matrix43" propertytype="System.Single" />
-        <property name="Matrix44" propertytype="System.Single" />
-        <property name="Item" propertytype="System.Single" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorPalette" namespace="System.Drawing.Imaging">
-        <property name="Flags" propertytype="System.Int32" />
-        <property name="Entries" propertytype="System.Drawing.Color[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Encoder" namespace="System.Drawing.Imaging">
-        <constructor name="Encoder(System.Guid)" argnames="guid" />
-        <field name="Compression" />
-        <field name="ColorDepth" />
-        <field name="ScanMethod" />
-        <field name="Version" />
-        <field name="RenderMethod" />
-        <field name="Quality" />
-        <field name="Transformation" />
-        <field name="LuminanceTable" />
-        <field name="ChrominanceTable" />
-        <field name="SaveFlag" />
-        <property name="Guid" propertytype="System.Guid" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EncoderParameters" namespace="System.Drawing.Imaging">
-        <constructor name="EncoderParameters(System.Int32)" argnames="count" />
-        <constructor name="EncoderParameters" argnames="" />
-        <property name="Param" propertytype="System.Drawing.Imaging.EncoderParameter[]" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FrameDimension" namespace="System.Drawing.Imaging">
-        <constructor name="FrameDimension(System.Guid)" argnames="guid" />
-        <property name="Guid" propertytype="System.Guid" />
-        <property name="Time" propertytype="System.Drawing.Imaging.FrameDimension" />
-        <property name="Resolution" propertytype="System.Drawing.Imaging.FrameDimension" />
-        <property name="Page" propertytype="System.Drawing.Imaging.FrameDimension" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageCodecInfo" namespace="System.Drawing.Imaging">
-        <property name="Clsid" propertytype="System.Guid" />
-        <property name="FormatID" propertytype="System.Guid" />
-        <property name="CodecName" propertytype="System.String" />
-        <property name="DllName" propertytype="System.String" />
-        <property name="FormatDescription" propertytype="System.String" />
-        <property name="FilenameExtension" propertytype="System.String" />
-        <property name="MimeType" propertytype="System.String" />
-        <property name="Flags" propertytype="System.Drawing.Imaging.ImageCodecFlags" />
-        <property name="Version" propertytype="System.Int32" />
-        <property name="SignaturePatterns" propertytype="System.Byte[][]" />
-        <property name="SignatureMasks" propertytype="System.Byte[][]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetImageDecoders" argnames="" returntype="System.Drawing.Imaging.ImageCodecInfo[]" />
-        <method name="GetImageEncoders" argnames="" returntype="System.Drawing.Imaging.ImageCodecInfo[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageFormat" namespace="System.Drawing.Imaging">
-        <constructor name="ImageFormat(System.Guid)" argnames="guid" />
-        <property name="Guid" propertytype="System.Guid" />
-        <property name="MemoryBmp" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Bmp" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Emf" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Wmf" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Gif" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Jpeg" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Png" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Tiff" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Exif" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="Icon" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Metafile" namespace="System.Drawing.Imaging">
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.WmfPlaceableFileHeader)" argnames="hmetafile, wmfHeader" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.WmfPlaceableFileHeader, System.Boolean)" argnames="hmetafile, wmfHeader, deleteWmf" />
-        <constructor name="Metafile(System.IntPtr, System.Boolean)" argnames="henhmetafile, deleteEmf" />
-        <constructor name="Metafile(System.String)" argnames="filename" />
-        <constructor name="Metafile(System.IO.Stream)" argnames="stream" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.EmfType)" argnames="referenceHdc, emfType" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.EmfType, System.String)" argnames="referenceHdc, emfType, description" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF)" argnames="referenceHdc, frameRect" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit)" argnames="referenceHdc, frameRect, frameUnit" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="referenceHdc, frameRect, frameUnit, type" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="referenceHdc, frameRect, frameUnit, type, description" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle)" argnames="referenceHdc, frameRect" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit)" argnames="referenceHdc, frameRect, frameUnit" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="referenceHdc, frameRect, frameUnit, type" />
-        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="referenceHdc, frameRect, frameUnit, type, desc" />
-        <constructor name="Metafile(System.String, System.IntPtr)" argnames="fileName, referenceHdc" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Imaging.EmfType)" argnames="fileName, referenceHdc, type" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Imaging.EmfType, System.String)" argnames="fileName, referenceHdc, type, description" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF)" argnames="fileName, referenceHdc, frameRect" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit)" argnames="fileName, referenceHdc, frameRect, frameUnit" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="fileName, referenceHdc, frameRect, frameUnit, type" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, desc" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, type, description" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle)" argnames="fileName, referenceHdc, frameRect" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit)" argnames="fileName, referenceHdc, frameRect, frameUnit" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="fileName, referenceHdc, frameRect, frameUnit, type" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, description" />
-        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, type, description" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr)" argnames="stream, referenceHdc" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Imaging.EmfType)" argnames="stream, referenceHdc, type" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Imaging.EmfType, System.String)" argnames="stream, referenceHdc, type, description" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF)" argnames="stream, referenceHdc, frameRect" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit)" argnames="stream, referenceHdc, frameRect, frameUnit" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="stream, referenceHdc, frameRect, frameUnit, type" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="stream, referenceHdc, frameRect, frameUnit, type, description" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle)" argnames="stream, referenceHdc, frameRect" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit)" argnames="stream, referenceHdc, frameRect, frameUnit" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="stream, referenceHdc, frameRect, frameUnit, type" />
-        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="stream, referenceHdc, frameRect, frameUnit, type, description" />
-        <property name="PhysicalDimension" inherited="System.Drawing.Image" propertytype="System.Drawing.SizeF" />
-        <property name="Size" inherited="System.Drawing.Image" propertytype="System.Drawing.Size" />
-        <property name="Width" inherited="System.Drawing.Image" propertytype="System.Int32" />
-        <property name="Height" inherited="System.Drawing.Image" propertytype="System.Int32" />
-        <property name="HorizontalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
-        <property name="VerticalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
-        <property name="Flags" inherited="System.Drawing.Image" propertytype="System.Int32" />
-        <property name="RawFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ImageFormat" />
-        <property name="PixelFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PixelFormat" />
-        <property name="Palette" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ColorPalette" />
-        <property name="FrameDimensionsList" inherited="System.Drawing.Image" propertytype="System.Guid[]" />
-        <property name="PropertyIdList" inherited="System.Drawing.Image" propertytype="System.Int32[]" />
-        <property name="PropertyItems" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PropertyItem[]" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Drawing.Image" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetMetafileHeader(System.IntPtr, System.Drawing.Imaging.WmfPlaceableFileHeader)" argnames="hmetafile, wmfHeader" returntype="System.Drawing.Imaging.MetafileHeader" />
-        <method name="GetMetafileHeader(System.IntPtr)" argnames="henhmetafile" returntype="System.Drawing.Imaging.MetafileHeader" />
-        <method name="GetMetafileHeader(System.String)" argnames="fileName" returntype="System.Drawing.Imaging.MetafileHeader" />
-        <method name="GetMetafileHeader(System.IO.Stream)" argnames="stream" returntype="System.Drawing.Imaging.MetafileHeader" />
-        <method name="GetMetafileHeader" argnames="" returntype="System.Drawing.Imaging.MetafileHeader" />
-        <method name="GetHenhmetafile" argnames="" returntype="System.IntPtr" />
-        <method name="PlayRecord(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.Byte[])" argnames="recordType, flags, dataSize, data" returntype="System.Void" />
-        <method name="GetEncoderParameterList(System.Guid)" argnames="encoder" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.EncoderParameters" />
-        <method name="Save(System.String)" argnames="filename" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.String, System.Drawing.Imaging.ImageFormat)" argnames="filename, format" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.String, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="filename, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageFormat)" argnames="stream, format" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="stream, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="SaveAdd(System.Drawing.Imaging.EncoderParameters)" argnames="encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="SaveAdd(System.Drawing.Image, System.Drawing.Imaging.EncoderParameters)" argnames="image, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetBounds(System.Drawing.GraphicsUnit&amp;)" argnames="pageUnit" inherited="System.Drawing.Image" returntype="System.Drawing.RectangleF" />
-        <method name="GetThumbnailImage(System.Int32, System.Int32, System.Drawing.Image.GetThumbnailImageAbort, System.IntPtr)" argnames="thumbWidth, thumbHeight, callback, callbackData" inherited="System.Drawing.Image" returntype="System.Drawing.Image" />
-        <method name="GetFrameCount(System.Drawing.Imaging.FrameDimension)" argnames="dimension" inherited="System.Drawing.Image" returntype="System.Int32" />
-        <method name="SelectActiveFrame(System.Drawing.Imaging.FrameDimension, System.Int32)" argnames="dimension, frameIndex" inherited="System.Drawing.Image" returntype="System.Int32" />
-        <method name="RotateFlip(System.Drawing.RotateFlipType)" argnames="rotateFlipType" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetPropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.PropertyItem" />
-        <method name="RemovePropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="SetPropertyItem(System.Drawing.Imaging.PropertyItem)" argnames="propitem" inherited="System.Drawing.Image" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MetafileHeader" namespace="System.Drawing.Imaging">
-        <property name="Type" propertytype="System.Drawing.Imaging.MetafileType" />
-        <property name="MetafileSize" propertytype="System.Int32" />
-        <property name="Version" propertytype="System.Int32" />
-        <property name="EmfPlusFlags" propertytype="System.Drawing.Imaging.EmfPlusFlags" />
-        <property name="DpiX" propertytype="System.Single" />
-        <property name="DpiY" propertytype="System.Single" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="WmfHeader" propertytype="System.Drawing.Imaging.MetaHeader" />
-        <property name="EmfHeader" propertytype="System.Drawing.SafeNativeMethods+ENHMETAHEADER" />
-        <property name="EmfPlusHeaderSize" propertytype="System.Int32" />
-        <property name="LogicalDpiX" propertytype="System.Int32" />
-        <property name="LogicalDpiY" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IsWmf" argnames="" returntype="System.Boolean" />
-        <method name="IsWmfPlaceable" argnames="" returntype="System.Boolean" />
-        <method name="IsEmf" argnames="" returntype="System.Boolean" />
-        <method name="IsEmfOrEmfPlus" argnames="" returntype="System.Boolean" />
-        <method name="IsEmfPlus" argnames="" returntype="System.Boolean" />
-        <method name="IsEmfPlusDual" argnames="" returntype="System.Boolean" />
-        <method name="IsEmfPlusOnly" argnames="" returntype="System.Boolean" />
-        <method name="IsDisplay" argnames="" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MetaHeader" namespace="System.Drawing.Imaging">
-        <constructor name="MetaHeader" argnames="" />
-        <property name="Type" propertytype="System.Int16" />
-        <property name="HeaderSize" propertytype="System.Int16" />
-        <property name="Version" propertytype="System.Int16" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="NoObjects" propertytype="System.Int16" />
-        <property name="MaxRecord" propertytype="System.Int32" />
-        <property name="NoParameters" propertytype="System.Int16" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyItem" namespace="System.Drawing.Imaging">
-        <property name="Id" propertytype="System.Int32" />
-        <property name="Len" propertytype="System.Int32" />
-        <property name="Type" propertytype="System.Int16" />
-        <property name="Value" propertytype="System.Byte[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WmfPlaceableFileHeader" namespace="System.Drawing.Imaging">
-        <constructor name="WmfPlaceableFileHeader" argnames="" />
-        <property name="Key" propertytype="System.Int32" />
-        <property name="Hmf" propertytype="System.Int16" />
-        <property name="BboxLeft" propertytype="System.Int16" />
-        <property name="BboxTop" propertytype="System.Int16" />
-        <property name="BboxRight" propertytype="System.Int16" />
-        <property name="BboxBottom" propertytype="System.Int16" />
-        <property name="Inch" propertytype="System.Int16" />
-        <property name="Reserved" propertytype="System.Int32" />
-        <property name="Checksum" propertytype="System.Int16" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EncoderParameter" namespace="System.Drawing.Imaging">
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte)" argnames="encoder, value" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte, System.Boolean)" argnames="encoder, value, undefined" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int16)" argnames="encoder, value" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64)" argnames="encoder, value" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32, System.Int32)" argnames="encoder, numerator, demoninator" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64, System.Int64)" argnames="encoder, rangebegin, rangeend" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="encoder, numerator1, demoninator1, numerator2, demoninator2" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.String)" argnames="encoder, value" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte[])" argnames="encoder, value" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte[], System.Boolean)" argnames="encoder, value, undefined" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int16[])" argnames="encoder, value" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64[])" argnames="encoder, value" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32[], System.Int32[])" argnames="encoder, numerator, denominator" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64[], System.Int64[])" argnames="encoder, rangebegin, rangeend" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32[], System.Int32[], System.Int32[], System.Int32[])" argnames="encoder, numerator1, denominator1, numerator2, denominator2" />
-        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32, System.Int32, System.Int32)" argnames="encoder, NumberOfValues, Type, Value" />
-        <property name="Encoder" propertytype="System.Drawing.Imaging.Encoder" />
-        <property name="Type" propertytype="System.Drawing.Imaging.EncoderParameterValueType" />
-        <property name="ValueType" propertytype="System.Drawing.Imaging.EncoderParameterValueType" />
-        <property name="NumberOfValues" propertytype="System.Int32" />
-        <property name="ValuePointer" propertytype="System.IntPtr" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageAttributes" namespace="System.Drawing.Imaging">
-        <constructor name="ImageAttributes" argnames="" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SetColorMatrix(System.Drawing.Imaging.ColorMatrix)" argnames="newColorMatrix" returntype="System.Void" />
-        <method name="SetColorMatrix(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag)" argnames="newColorMatrix, flags" returntype="System.Void" />
-        <method name="SetColorMatrix(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag, System.Drawing.Imaging.ColorAdjustType)" argnames="newColorMatrix, mode, type" returntype="System.Void" />
-        <method name="ClearColorMatrix" argnames="" returntype="System.Void" />
-        <method name="ClearColorMatrix(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetColorMatrices(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrix)" argnames="newColorMatrix, grayMatrix" returntype="System.Void" />
-        <method name="SetColorMatrices(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag)" argnames="newColorMatrix, grayMatrix, flags" returntype="System.Void" />
-        <method name="SetColorMatrices(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag, System.Drawing.Imaging.ColorAdjustType)" argnames="newColorMatrix, grayMatrix, mode, type" returntype="System.Void" />
-        <method name="SetThreshold(System.Single)" argnames="threshold" returntype="System.Void" />
-        <method name="SetThreshold(System.Single, System.Drawing.Imaging.ColorAdjustType)" argnames="threshold, type" returntype="System.Void" />
-        <method name="ClearThreshold" argnames="" returntype="System.Void" />
-        <method name="ClearThreshold(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetGamma(System.Single)" argnames="gamma" returntype="System.Void" />
-        <method name="SetGamma(System.Single, System.Drawing.Imaging.ColorAdjustType)" argnames="gamma, type" returntype="System.Void" />
-        <method name="ClearGamma" argnames="" returntype="System.Void" />
-        <method name="ClearGamma(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetNoOp" argnames="" returntype="System.Void" />
-        <method name="SetNoOp(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="ClearNoOp" argnames="" returntype="System.Void" />
-        <method name="ClearNoOp(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetColorKey(System.Drawing.Color, System.Drawing.Color)" argnames="colorLow, colorHigh" returntype="System.Void" />
-        <method name="SetColorKey(System.Drawing.Color, System.Drawing.Color, System.Drawing.Imaging.ColorAdjustType)" argnames="colorLow, colorHigh, type" returntype="System.Void" />
-        <method name="ClearColorKey" argnames="" returntype="System.Void" />
-        <method name="ClearColorKey(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetOutputChannel(System.Drawing.Imaging.ColorChannelFlag)" argnames="flags" returntype="System.Void" />
-        <method name="SetOutputChannel(System.Drawing.Imaging.ColorChannelFlag, System.Drawing.Imaging.ColorAdjustType)" argnames="flags, type" returntype="System.Void" />
-        <method name="ClearOutputChannel" argnames="" returntype="System.Void" />
-        <method name="ClearOutputChannel(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetOutputChannelColorProfile(System.String)" argnames="colorProfileFilename" returntype="System.Void" />
-        <method name="SetOutputChannelColorProfile(System.String, System.Drawing.Imaging.ColorAdjustType)" argnames="colorProfileFilename, type" returntype="System.Void" />
-        <method name="ClearOutputChannelColorProfile" argnames="" returntype="System.Void" />
-        <method name="ClearOutputChannelColorProfile(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetRemapTable(System.Drawing.Imaging.ColorMap[])" argnames="map" returntype="System.Void" />
-        <method name="SetRemapTable(System.Drawing.Imaging.ColorMap[], System.Drawing.Imaging.ColorAdjustType)" argnames="map, type" returntype="System.Void" />
-        <method name="ClearRemapTable" argnames="" returntype="System.Void" />
-        <method name="ClearRemapTable(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
-        <method name="SetBrushRemapTable(System.Drawing.Imaging.ColorMap[])" argnames="map" returntype="System.Void" />
-        <method name="ClearBrushRemapTable" argnames="" returntype="System.Void" />
-        <method name="SetWrapMode(System.Drawing.Drawing2D.WrapMode)" argnames="mode" returntype="System.Void" />
-        <method name="SetWrapMode(System.Drawing.Drawing2D.WrapMode, System.Drawing.Color)" argnames="mode, color" returntype="System.Void" />
-        <method name="SetWrapMode(System.Drawing.Drawing2D.WrapMode, System.Drawing.Color, System.Boolean)" argnames="mode, color, clamp" returntype="System.Void" />
-        <method name="GetAdjustedPalette(System.Drawing.Imaging.ColorPalette, System.Drawing.Imaging.ColorAdjustType)" argnames="palette, type" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="PlayRecordCallback" namespace="System.Drawing.Imaging">
-        <constructor name="PlayRecordCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.AsyncCallback, System.Object)" argnames="recordType, flags, dataSize, recordData, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr)" argnames="recordType, flags, dataSize, recordData" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="ColorAdjustType" namespace="System.Drawing.Imaging">
-        <field name="Default" />
-        <field name="Bitmap" />
-        <field name="Brush" />
-        <field name="Pen" />
-        <field name="Text" />
-        <field name="Count" />
-        <field name="Any" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ColorChannelFlag" namespace="System.Drawing.Imaging">
-        <field name="ColorChannelC" />
-        <field name="ColorChannelM" />
-        <field name="ColorChannelY" />
-        <field name="ColorChannelK" />
-        <field name="ColorChannelLast" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ColorMapType" namespace="System.Drawing.Imaging">
-        <field name="Default" />
-        <field name="Brush" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ColorMatrixFlag" namespace="System.Drawing.Imaging">
-        <field name="Default" />
-        <field name="SkipGrays" />
-        <field name="AltGrays" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ColorMode" namespace="System.Drawing.Imaging">
-        <field name="Argb32Mode" />
-        <field name="Argb64Mode" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EmfPlusRecordType" namespace="System.Drawing.Imaging">
-        <field name="WmfRecordBase" />
-        <field name="WmfSetBkColor" />
-        <field name="WmfSetBkMode" />
-        <field name="WmfSetMapMode" />
-        <field name="WmfSetROP2" />
-        <field name="WmfSetRelAbs" />
-        <field name="WmfSetPolyFillMode" />
-        <field name="WmfSetStretchBltMode" />
-        <field name="WmfSetTextCharExtra" />
-        <field name="WmfSetTextColor" />
-        <field name="WmfSetTextJustification" />
-        <field name="WmfSetWindowOrg" />
-        <field name="WmfSetWindowExt" />
-        <field name="WmfSetViewportOrg" />
-        <field name="WmfSetViewportExt" />
-        <field name="WmfOffsetWindowOrg" />
-        <field name="WmfScaleWindowExt" />
-        <field name="WmfOffsetViewportOrg" />
-        <field name="WmfScaleViewportExt" />
-        <field name="WmfLineTo" />
-        <field name="WmfMoveTo" />
-        <field name="WmfExcludeClipRect" />
-        <field name="WmfIntersectClipRect" />
-        <field name="WmfArc" />
-        <field name="WmfEllipse" />
-        <field name="WmfFloodFill" />
-        <field name="WmfPie" />
-        <field name="WmfRectangle" />
-        <field name="WmfRoundRect" />
-        <field name="WmfPatBlt" />
-        <field name="WmfSaveDC" />
-        <field name="WmfSetPixel" />
-        <field name="WmfOffsetCilpRgn" />
-        <field name="WmfTextOut" />
-        <field name="WmfBitBlt" />
-        <field name="WmfStretchBlt" />
-        <field name="WmfPolygon" />
-        <field name="WmfPolyline" />
-        <field name="WmfEscape" />
-        <field name="WmfRestoreDC" />
-        <field name="WmfFillRegion" />
-        <field name="WmfFrameRegion" />
-        <field name="WmfInvertRegion" />
-        <field name="WmfPaintRegion" />
-        <field name="WmfSelectClipRegion" />
-        <field name="WmfSelectObject" />
-        <field name="WmfSetTextAlign" />
-        <field name="WmfChord" />
-        <field name="WmfSetMapperFlags" />
-        <field name="WmfExtTextOut" />
-        <field name="WmfSetDibToDev" />
-        <field name="WmfSelectPalette" />
-        <field name="WmfRealizePalette" />
-        <field name="WmfAnimatePalette" />
-        <field name="WmfSetPalEntries" />
-        <field name="WmfPolyPolygon" />
-        <field name="WmfResizePalette" />
-        <field name="WmfDibBitBlt" />
-        <field name="WmfDibStretchBlt" />
-        <field name="WmfDibCreatePatternBrush" />
-        <field name="WmfStretchDib" />
-        <field name="WmfExtFloodFill" />
-        <field name="WmfSetLayout" />
-        <field name="WmfDeleteObject" />
-        <field name="WmfCreatePalette" />
-        <field name="WmfCreatePatternBrush" />
-        <field name="WmfCreatePenIndirect" />
-        <field name="WmfCreateFontIndirect" />
-        <field name="WmfCreateBrushIndirect" />
-        <field name="WmfCreateRegion" />
-        <field name="EmfHeader" />
-        <field name="EmfPolyBezier" />
-        <field name="EmfPolygon" />
-        <field name="EmfPolyline" />
-        <field name="EmfPolyBezierTo" />
-        <field name="EmfPolyLineTo" />
-        <field name="EmfPolyPolyline" />
-        <field name="EmfPolyPolygon" />
-        <field name="EmfSetWindowExtEx" />
-        <field name="EmfSetWindowOrgEx" />
-        <field name="EmfSetViewportExtEx" />
-        <field name="EmfSetViewportOrgEx" />
-        <field name="EmfSetBrushOrgEx" />
-        <field name="EmfEof" />
-        <field name="EmfSetPixelV" />
-        <field name="EmfSetMapperFlags" />
-        <field name="EmfSetMapMode" />
-        <field name="EmfSetBkMode" />
-        <field name="EmfSetPolyFillMode" />
-        <field name="EmfSetROP2" />
-        <field name="EmfSetStretchBltMode" />
-        <field name="EmfSetTextAlign" />
-        <field name="EmfSetColorAdjustment" />
-        <field name="EmfSetTextColor" />
-        <field name="EmfSetBkColor" />
-        <field name="EmfOffsetClipRgn" />
-        <field name="EmfMoveToEx" />
-        <field name="EmfSetMetaRgn" />
-        <field name="EmfExcludeClipRect" />
-        <field name="EmfIntersectClipRect" />
-        <field name="EmfScaleViewportExtEx" />
-        <field name="EmfScaleWindowExtEx" />
-        <field name="EmfSaveDC" />
-        <field name="EmfRestoreDC" />
-        <field name="EmfSetWorldTransform" />
-        <field name="EmfModifyWorldTransform" />
-        <field name="EmfSelectObject" />
-        <field name="EmfCreatePen" />
-        <field name="EmfCreateBrushIndirect" />
-        <field name="EmfDeleteObject" />
-        <field name="EmfAngleArc" />
-        <field name="EmfEllipse" />
-        <field name="EmfRectangle" />
-        <field name="EmfRoundRect" />
-        <field name="EmfRoundArc" />
-        <field name="EmfChord" />
-        <field name="EmfPie" />
-        <field name="EmfSelectPalette" />
-        <field name="EmfCreatePalette" />
-        <field name="EmfSetPaletteEntries" />
-        <field name="EmfResizePalette" />
-        <field name="EmfRealizePalette" />
-        <field name="EmfExtFloodFill" />
-        <field name="EmfLineTo" />
-        <field name="EmfArcTo" />
-        <field name="EmfPolyDraw" />
-        <field name="EmfSetArcDirection" />
-        <field name="EmfSetMiterLimit" />
-        <field name="EmfBeginPath" />
-        <field name="EmfEndPath" />
-        <field name="EmfCloseFigure" />
-        <field name="EmfFillPath" />
-        <field name="EmfStrokeAndFillPath" />
-        <field name="EmfStrokePath" />
-        <field name="EmfFlattenPath" />
-        <field name="EmfWidenPath" />
-        <field name="EmfSelectClipPath" />
-        <field name="EmfAbortPath" />
-        <field name="EmfReserved069" />
-        <field name="EmfGdiComment" />
-        <field name="EmfFillRgn" />
-        <field name="EmfFrameRgn" />
-        <field name="EmfInvertRgn" />
-        <field name="EmfPaintRgn" />
-        <field name="EmfExtSelectClipRgn" />
-        <field name="EmfBitBlt" />
-        <field name="EmfStretchBlt" />
-        <field name="EmfMaskBlt" />
-        <field name="EmfPlgBlt" />
-        <field name="EmfSetDIBitsToDevice" />
-        <field name="EmfStretchDIBits" />
-        <field name="EmfExtCreateFontIndirect" />
-        <field name="EmfExtTextOutA" />
-        <field name="EmfExtTextOutW" />
-        <field name="EmfPolyBezier16" />
-        <field name="EmfPolygon16" />
-        <field name="EmfPolyline16" />
-        <field name="EmfPolyBezierTo16" />
-        <field name="EmfPolylineTo16" />
-        <field name="EmfPolyPolyline16" />
-        <field name="EmfPolyPolygon16" />
-        <field name="EmfPolyDraw16" />
-        <field name="EmfCreateMonoBrush" />
-        <field name="EmfCreateDibPatternBrushPt" />
-        <field name="EmfExtCreatePen" />
-        <field name="EmfPolyTextOutA" />
-        <field name="EmfPolyTextOutW" />
-        <field name="EmfSetIcmMode" />
-        <field name="EmfCreateColorSpace" />
-        <field name="EmfSetColorSpace" />
-        <field name="EmfDeleteColorSpace" />
-        <field name="EmfGlsRecord" />
-        <field name="EmfGlsBoundedRecord" />
-        <field name="EmfPixelFormat" />
-        <field name="EmfDrawEscape" />
-        <field name="EmfExtEscape" />
-        <field name="EmfStartDoc" />
-        <field name="EmfSmallTextOut" />
-        <field name="EmfForceUfiMapping" />
-        <field name="EmfNamedEscpae" />
-        <field name="EmfColorCorrectPalette" />
-        <field name="EmfSetIcmProfileA" />
-        <field name="EmfSetIcmProfileW" />
-        <field name="EmfAlphaBlend" />
-        <field name="EmfSetLayout" />
-        <field name="EmfTransparentBlt" />
-        <field name="EmfReserved117" />
-        <field name="EmfGradientFill" />
-        <field name="EmfSetLinkedUfis" />
-        <field name="EmfSetTextJustification" />
-        <field name="EmfColorMatchToTargetW" />
-        <field name="EmfCreateColorSpaceW" />
-        <field name="EmfMax" />
-        <field name="EmfMin" />
-        <field name="EmfPlusRecordBase" />
-        <field name="Invalid" />
-        <field name="Header" />
-        <field name="EndOfFile" />
-        <field name="Comment" />
-        <field name="GetDC" />
-        <field name="MultiFormatStart" />
-        <field name="MultiFormatSection" />
-        <field name="MultiFormatEnd" />
-        <field name="Object" />
-        <field name="Clear" />
-        <field name="FillRects" />
-        <field name="DrawRects" />
-        <field name="FillPolygon" />
-        <field name="DrawLines" />
-        <field name="FillEllipse" />
-        <field name="DrawEllipse" />
-        <field name="FillPie" />
-        <field name="DrawPie" />
-        <field name="DrawArc" />
-        <field name="FillRegion" />
-        <field name="FillPath" />
-        <field name="DrawPath" />
-        <field name="FillClosedCurve" />
-        <field name="DrawClosedCurve" />
-        <field name="DrawCurve" />
-        <field name="DrawBeziers" />
-        <field name="DrawImage" />
-        <field name="DrawImagePoints" />
-        <field name="DrawString" />
-        <field name="SetRenderingOrigin" />
-        <field name="SetAntiAliasMode" />
-        <field name="SetTextRenderingHint" />
-        <field name="SetTextContrast" />
-        <field name="SetInterpolationMode" />
-        <field name="SetPixelOffsetMode" />
-        <field name="SetCompositingMode" />
-        <field name="SetCompositingQuality" />
-        <field name="Save" />
-        <field name="Restore" />
-        <field name="BeginContainer" />
-        <field name="BeginContainerNoParams" />
-        <field name="EndContainer" />
-        <field name="SetWorldTransform" />
-        <field name="ResetWorldTransform" />
-        <field name="MultiplyWorldTransform" />
-        <field name="TranslateWorldTransform" />
-        <field name="ScaleWorldTransform" />
-        <field name="RotateWorldTransform" />
-        <field name="SetPageTransform" />
-        <field name="ResetClip" />
-        <field name="SetClipRect" />
-        <field name="SetClipPath" />
-        <field name="SetClipRegion" />
-        <field name="OffsetClip" />
-        <field name="DrawDriverString" />
-        <field name="Total" />
-        <field name="Max" />
-        <field name="Min" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EmfType" namespace="System.Drawing.Imaging">
-        <field name="EmfOnly" />
-        <field name="EmfPlusOnly" />
-        <field name="EmfPlusDual" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EncoderParameterValueType" namespace="System.Drawing.Imaging">
-        <field name="ValueTypeByte" />
-        <field name="ValueTypeAscii" />
-        <field name="ValueTypeShort" />
-        <field name="ValueTypeLong" />
-        <field name="ValueTypeRational" />
-        <field name="ValueTypeLongRange" />
-        <field name="ValueTypeUndefined" />
-        <field name="ValueTypeRationalRange" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EncoderValue" namespace="System.Drawing.Imaging">
-        <field name="ColorTypeCMYK" />
-        <field name="ColorTypeYCCK" />
-        <field name="CompressionLZW" />
-        <field name="CompressionCCITT3" />
-        <field name="CompressionCCITT4" />
-        <field name="CompressionRle" />
-        <field name="CompressionNone" />
-        <field name="ScanMethodInterlaced" />
-        <field name="ScanMethodNonInterlaced" />
-        <field name="VersionGif87" />
-        <field name="VersionGif89" />
-        <field name="RenderProgressive" />
-        <field name="RenderNonProgressive" />
-        <field name="TransformRotate90" />
-        <field name="TransformRotate180" />
-        <field name="TransformRotate270" />
-        <field name="TransformFlipHorizontal" />
-        <field name="TransformFlipVertical" />
-        <field name="MultiFrame" />
-        <field name="LastFrame" />
-        <field name="Flush" />
-        <field name="FrameDimensionTime" />
-        <field name="FrameDimensionResolution" />
-        <field name="FrameDimensionPage" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ImageCodecFlags" namespace="System.Drawing.Imaging">
-        <field name="Encoder" />
-        <field name="Decoder" />
-        <field name="SupportBitmap" />
-        <field name="SupportVector" />
-        <field name="SeekableEncode" />
-        <field name="BlockingDecode" />
-        <field name="Builtin" />
-        <field name="System" />
-        <field name="User" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ImageFlags" namespace="System.Drawing.Imaging">
-        <field name="None" />
-        <field name="Scalable" />
-        <field name="HasAlpha" />
-        <field name="HasTranslucent" />
-        <field name="PartiallyScalable" />
-        <field name="ColorSpaceRgb" />
-        <field name="ColorSpaceCmyk" />
-        <field name="ColorSpaceGray" />
-        <field name="ColorSpaceYcbcr" />
-        <field name="ColorSpaceYcck" />
-        <field name="HasRealDpi" />
-        <field name="HasRealPixelSize" />
-        <field name="ReadOnly" />
-        <field name="Caching" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ImageLockMode" namespace="System.Drawing.Imaging">
-        <field name="ReadOnly" />
-        <field name="WriteOnly" />
-        <field name="ReadWrite" />
-        <field name="UserInputBuffer" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MetafileFrameUnit" namespace="System.Drawing.Imaging">
-        <field name="Pixel" />
-        <field name="Point" />
-        <field name="Inch" />
-        <field name="Document" />
-        <field name="Millimeter" />
-        <field name="GdiCompatible" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MetafileType" namespace="System.Drawing.Imaging">
-        <field name="Invalid" />
-        <field name="Wmf" />
-        <field name="WmfPlaceable" />
-        <field name="Emf" />
-        <field name="EmfPlusOnly" />
-        <field name="EmfPlusDual" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PaletteFlags" namespace="System.Drawing.Imaging">
-        <field name="HasAlpha" />
-        <field name="GrayScale" />
-        <field name="Halftone" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PixelFormat" namespace="System.Drawing.Imaging">
-        <field name="Indexed" />
-        <field name="Gdi" />
-        <field name="Alpha" />
-        <field name="PAlpha" />
-        <field name="Extended" />
-        <field name="Canonical" />
-        <field name="Undefined" />
-        <field name="DontCare" />
-        <field name="Format1bppIndexed" />
-        <field name="Format4bppIndexed" />
-        <field name="Format8bppIndexed" />
-        <field name="Format16bppGrayScale" />
-        <field name="Format16bppRgb555" />
-        <field name="Format16bppRgb565" />
-        <field name="Format16bppArgb1555" />
-        <field name="Format24bppRgb" />
-        <field name="Format32bppRgb" />
-        <field name="Format32bppArgb" />
-        <field name="Format32bppPArgb" />
-        <field name="Format48bppRgb" />
-        <field name="Format64bppArgb" />
-        <field name="Format64bppPArgb" />
-        <field name="Max" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="FontCollection" namespace="System.Drawing.Text">
-        <property name="Families" propertytype="System.Drawing.FontFamily[]" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstalledFontCollection" namespace="System.Drawing.Text">
-        <constructor name="InstalledFontCollection" argnames="" />
-        <property name="Families" inherited="System.Drawing.Text.FontCollection" propertytype="System.Drawing.FontFamily[]" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrivateFontCollection" namespace="System.Drawing.Text">
-        <constructor name="PrivateFontCollection" argnames="" />
-        <property name="Families" inherited="System.Drawing.Text.FontCollection" propertytype="System.Drawing.FontFamily[]" />
-        <method name="Dispose" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddFontFile(System.String)" argnames="filename" returntype="System.Void" />
-        <method name="AddMemoryFont(System.IntPtr, System.Int32)" argnames="memory, length" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="GenericFontFamilies" namespace="System.Drawing.Text">
-        <field name="Serif" />
-        <field name="SansSerif" />
-        <field name="Monospace" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="HotkeyPrefix" namespace="System.Drawing.Text">
-        <field name="None" />
-        <field name="Show" />
-        <field name="Hide" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TextRenderingHint" namespace="System.Drawing.Text">
-        <field name="SystemDefault" />
-        <field name="SingleBitPerPixelGridFit" />
-        <field name="SingleBitPerPixel" />
-        <field name="AntiAliasGridFit" />
-        <field name="AntiAlias" />
-        <field name="ClearTypeGridFit" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="STATSTG" namespace="System.Drawing.Internal">
-        <constructor name="STATSTG" argnames="" />
-        <field name="pwcsName" />
-        <field name="type" />
-        <field name="cbSize" />
-        <field name="mtime" />
-        <field name="ctime" />
-        <field name="atime" />
-        <field name="grfMode" />
-        <field name="grfLocksSupported" />
-        <field name="clsid_data1" />
-        <field name="clsid_data2" />
-        <field name="clsid_data3" />
-        <field name="clsid_b0" />
-        <field name="clsid_b1" />
-        <field name="clsid_b2" />
-        <field name="clsid_b3" />
-        <field name="clsid_b4" />
-        <field name="clsid_b5" />
-        <field name="clsid_b6" />
-        <field name="clsid_b7" />
-        <field name="grfStateBits" />
-        <field name="reserved" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CategoryNameCollection" namespace="System.Drawing.Design">
-        <constructor name="CategoryNameCollection(System.Drawing.Design.CategoryNameCollection)" argnames="value" />
-        <constructor name="CategoryNameCollection(System.String[])" argnames="value" />
-        <property name="Item" propertytype="System.String" />
-        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.String[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.String)" argnames="value" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PaintValueEventArgs" namespace="System.Drawing.Design">
-        <constructor name="PaintValueEventArgs(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="context, value, graphics, bounds" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="Context" propertytype="System.ComponentModel.ITypeDescriptorContext" />
-        <property name="Graphics" propertytype="System.Drawing.Graphics" />
-        <property name="Value" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyValueUIItem" namespace="System.Drawing.Design">
-        <constructor name="PropertyValueUIItem(System.Drawing.Image, System.Drawing.Design.PropertyValueUIItemInvokeHandler, System.String)" argnames="uiItemImage, handler, tooltip" />
-        <property name="Image" propertytype="System.Drawing.Image" />
-        <property name="InvokeHandler" propertytype="System.Drawing.Design.PropertyValueUIItemInvokeHandler" />
-        <property name="ToolTip" propertytype="System.String" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolboxComponentsCreatedEventArgs" namespace="System.Drawing.Design">
-        <constructor name="ToolboxComponentsCreatedEventArgs(System.ComponentModel.IComponent[])" argnames="components" />
-        <property name="Components" propertytype="System.ComponentModel.IComponent[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolboxComponentsCreatingEventArgs" namespace="System.Drawing.Design">
-        <constructor name="ToolboxComponentsCreatingEventArgs(System.ComponentModel.Design.IDesignerHost)" argnames="host" />
-        <property name="DesignerHost" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolboxItem" namespace="System.Drawing.Design">
-        <constructor name="ToolboxItem" argnames="" />
-        <constructor name="ToolboxItem(System.Type)" argnames="toolType" />
-        <property name="AssemblyName" propertytype="System.Reflection.AssemblyName" />
-        <property name="Bitmap" propertytype="System.Drawing.Bitmap" />
-        <property name="DisplayName" propertytype="System.String" />
-        <property name="Filter" propertytype="System.Collections.ICollection" />
-        <property name="Locked" propertytype="System.Boolean" />
-        <property name="TypeName" propertytype="System.String" />
-        <method name="Serialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="OnComponentsCreating(System.Drawing.Design.ToolboxComponentsCreatingEventArgs)" argnames="args" returntype="System.Void" />
-        <method name="OnComponentsCreated(System.Drawing.Design.ToolboxComponentsCreatedEventArgs)" argnames="args" returntype="System.Void" />
-        <method name="Initialize(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="GetType(System.ComponentModel.Design.IDesignerHost, System.Reflection.AssemblyName, System.String, System.Boolean)" argnames="host, assemblyName, typeName, reference" returntype="System.Type" />
-        <method name="Deserialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="CreateComponentsCore(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.ComponentModel.IComponent[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CheckUnlocked" argnames="" returntype="System.Void" />
-        <method name="CreateComponents" argnames="" returntype="System.ComponentModel.IComponent[]" />
-        <method name="CreateComponents(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.ComponentModel.IComponent[]" />
-        <method name="Lock" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ComponentsCreated" />
-        <event name="ComponentsCreating" />
-    </class>
-    <class name="ToolboxItemCollection" namespace="System.Drawing.Design">
-        <constructor name="ToolboxItemCollection(System.Drawing.Design.ToolboxItemCollection)" argnames="value" />
-        <constructor name="ToolboxItemCollection(System.Drawing.Design.ToolboxItem[])" argnames="value" />
-        <property name="Item" propertytype="System.Drawing.Design.ToolboxItem" />
-        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Drawing.Design.ToolboxItem)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.Drawing.Design.ToolboxItem[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.Drawing.Design.ToolboxItem)" argnames="value" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UITypeEditor" namespace="System.Drawing.Design">
-        <constructor name="UITypeEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IPropertyValueUIService" namespace="System.Drawing.Design">
-        <method name="RemovePropertyValueUIHandler(System.Drawing.Design.PropertyValueUIHandler)" argnames="newHandler" returntype="System.Void" />
-        <method name="NotifyPropertyValueUIItemsChanged" argnames="" returntype="System.Void" />
-        <method name="GetPropertyUIValueItems(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor)" argnames="context, propDesc" returntype="System.Drawing.Design.PropertyValueUIItem[]" />
-        <method name="AddPropertyValueUIHandler(System.Drawing.Design.PropertyValueUIHandler)" argnames="newHandler" returntype="System.Void" />
-        <event name="PropertyUIValueItemsChanged" />
-    </interface>
-    <interface name="IToolboxService" namespace="System.Drawing.Design">
-        <property name="CategoryNames" propertytype="System.Drawing.Design.CategoryNameCollection" />
-        <property name="SelectedCategory" propertytype="System.String" />
-        <method name="SetSelectedToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Void" />
-        <method name="SetCursor" argnames="" returntype="System.Boolean" />
-        <method name="SerializeToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Object" />
-        <method name="SelectedToolboxItemUsed" argnames="" returntype="System.Void" />
-        <method name="RemoveToolboxItem(System.Drawing.Design.ToolboxItem, System.String)" argnames="toolboxItem, category" returntype="System.Void" />
-        <method name="RemoveToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Void" />
-        <method name="RemoveCreator(System.String, System.ComponentModel.Design.IDesignerHost)" argnames="format, host" returntype="System.Void" />
-        <method name="RemoveCreator(System.String)" argnames="format" returntype="System.Void" />
-        <method name="Refresh" argnames="" returntype="System.Void" />
-        <method name="IsToolboxItem(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="serializedObject, host" returntype="System.Boolean" />
-        <method name="IsToolboxItem(System.Object)" argnames="serializedObject" returntype="System.Boolean" />
-        <method name="IsSupported(System.Object, System.Collections.ICollection)" argnames="serializedObject, filterAttributes" returntype="System.Boolean" />
-        <method name="IsSupported(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="serializedObject, host" returntype="System.Boolean" />
-        <method name="GetToolboxItems(System.String, System.ComponentModel.Design.IDesignerHost)" argnames="category, host" returntype="System.Drawing.Design.ToolboxItemCollection" />
-        <method name="GetToolboxItems(System.String)" argnames="category" returntype="System.Drawing.Design.ToolboxItemCollection" />
-        <method name="GetToolboxItems(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.Drawing.Design.ToolboxItemCollection" />
-        <method name="GetToolboxItems" argnames="" returntype="System.Drawing.Design.ToolboxItemCollection" />
-        <method name="GetSelectedToolboxItem(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.Drawing.Design.ToolboxItem" />
-        <method name="GetSelectedToolboxItem" argnames="" returntype="System.Drawing.Design.ToolboxItem" />
-        <method name="DeserializeToolboxItem(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="serializedObject, host" returntype="System.Drawing.Design.ToolboxItem" />
-        <method name="DeserializeToolboxItem(System.Object)" argnames="serializedObject" returntype="System.Drawing.Design.ToolboxItem" />
-        <method name="AddToolboxItem(System.Drawing.Design.ToolboxItem, System.String)" argnames="toolboxItem, category" returntype="System.Void" />
-        <method name="AddToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Void" />
-        <method name="AddLinkedToolboxItem(System.Drawing.Design.ToolboxItem, System.String, System.ComponentModel.Design.IDesignerHost)" argnames="toolboxItem, category, host" returntype="System.Void" />
-        <method name="AddLinkedToolboxItem(System.Drawing.Design.ToolboxItem, System.ComponentModel.Design.IDesignerHost)" argnames="toolboxItem, host" returntype="System.Void" />
-        <method name="AddCreator(System.Drawing.Design.ToolboxItemCreatorCallback, System.String, System.ComponentModel.Design.IDesignerHost)" argnames="creator, format, host" returntype="System.Void" />
-        <method name="AddCreator(System.Drawing.Design.ToolboxItemCreatorCallback, System.String)" argnames="creator, format" returntype="System.Void" />
-    </interface>
-    <interface name="IToolboxUser" namespace="System.Drawing.Design">
-        <method name="ToolPicked(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
-        <method name="GetToolSupported(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
-    </interface>
-    <delegate name="PropertyValueUIHandler" namespace="System.Drawing.Design">
-        <constructor name="PropertyValueUIHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Collections.ArrayList, System.AsyncCallback, System.Object)" argnames="context, propDesc, valueUIItemList, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Collections.ArrayList)" argnames="context, propDesc, valueUIItemList" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="PropertyValueUIItemInvokeHandler" namespace="System.Drawing.Design">
-        <constructor name="PropertyValueUIItemInvokeHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Drawing.Design.PropertyValueUIItem, System.AsyncCallback, System.Object)" argnames="context, descriptor, invokedItem, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Drawing.Design.PropertyValueUIItem)" argnames="context, descriptor, invokedItem" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ToolboxComponentsCreatedEventHandler" namespace="System.Drawing.Design">
-        <constructor name="ToolboxComponentsCreatedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ToolboxComponentsCreatingEventHandler" namespace="System.Drawing.Design">
-        <constructor name="ToolboxComponentsCreatingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatingEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ToolboxItemCreatorCallback" namespace="System.Drawing.Design">
-        <constructor name="ToolboxItemCreatorCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Drawing.Design.ToolboxItem" />
-        <method name="BeginInvoke(System.Object, System.String, System.AsyncCallback, System.Object)" argnames="serializedObject, format, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.String)" argnames="serializedObject, format" returntype="System.Drawing.Design.ToolboxItem" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="UITypeEditorEditStyle" namespace="System.Drawing.Design">
-        <field name="None" />
-        <field name="Modal" />
-        <field name="DropDown" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="PrintController" namespace="System.Drawing.Printing">
-        <constructor name="PrintController" argnames="" />
-        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
-        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StandardPrintController" namespace="System.Drawing.Printing">
-        <constructor name="StandardPrintController" argnames="" />
-        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
-        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InvalidPrinterException" namespace="System.Drawing.Printing">
-        <constructor name="InvalidPrinterException(System.Drawing.Printing.PrinterSettings)" argnames="settings" />
-        <constructor name="InvalidPrinterException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Margins" namespace="System.Drawing.Printing">
-        <constructor name="Margins" argnames="" />
-        <constructor name="Margins(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, right, top, bottom" />
-        <property name="Left" propertytype="System.Int32" />
-        <property name="Right" propertytype="System.Int32" />
-        <property name="Top" propertytype="System.Int32" />
-        <property name="Bottom" propertytype="System.Int32" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MarginsConverter" namespace="System.Drawing.Printing">
-        <constructor name="MarginsConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PageSettings" namespace="System.Drawing.Printing">
-        <constructor name="PageSettings" argnames="" />
-        <constructor name="PageSettings(System.Drawing.Printing.PrinterSettings)" argnames="printerSettings" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="Color" propertytype="System.Boolean" />
-        <property name="Landscape" propertytype="System.Boolean" />
-        <property name="Margins" propertytype="System.Drawing.Printing.Margins" />
-        <property name="PaperSize" propertytype="System.Drawing.Printing.PaperSize" />
-        <property name="PaperSource" propertytype="System.Drawing.Printing.PaperSource" />
-        <property name="PrinterResolution" propertytype="System.Drawing.Printing.PrinterResolution" />
-        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CopyToHdevmode(System.IntPtr)" argnames="hdevmode" returntype="System.Void" />
-        <method name="SetHdevmode(System.IntPtr)" argnames="hdevmode" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PaperSize" namespace="System.Drawing.Printing">
-        <constructor name="PaperSize(System.String, System.Int32, System.Int32)" argnames="name, width, height" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="Kind" propertytype="System.Drawing.Printing.PaperKind" />
-        <property name="PaperName" propertytype="System.String" />
-        <property name="RawKind" propertytype="System.Drawing.Printing.PaperKind" />
-        <property name="Width" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PaperSource" namespace="System.Drawing.Printing">
-        <property name="Kind" propertytype="System.Drawing.Printing.PaperSourceKind" />
-        <property name="RawKind" propertytype="System.Drawing.Printing.PaperSourceKind" />
-        <property name="SourceName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PreviewPageInfo" namespace="System.Drawing.Printing">
-        <constructor name="PreviewPageInfo(System.Drawing.Image, System.Drawing.Size)" argnames="image, physicalSize" />
-        <property name="Image" propertytype="System.Drawing.Image" />
-        <property name="PhysicalSize" propertytype="System.Drawing.Size" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PreviewPrintController" namespace="System.Drawing.Printing">
-        <constructor name="PreviewPrintController" argnames="" />
-        <property name="UseAntiAlias" propertytype="System.Boolean" />
-        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
-        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetPreviewPageInfo" argnames="" returntype="System.Drawing.Printing.PreviewPageInfo[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrintDocument" namespace="System.Drawing.Printing">
-        <constructor name="PrintDocument" argnames="" />
-        <property name="DefaultPageSettings" propertytype="System.Drawing.Printing.PageSettings" />
-        <property name="DocumentName" propertytype="System.String" />
-        <property name="PrintController" propertytype="System.Drawing.Printing.PrintController" />
-        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnQueryPageSettings(System.Drawing.Printing.QueryPageSettingsEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnPrintPage(System.Drawing.Printing.PrintPageEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEndPrint(System.Drawing.Printing.PrintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBeginPrint(System.Drawing.Printing.PrintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Print" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BeginPrint" />
-        <event name="EndPrint" />
-        <event name="PrintPage" />
-        <event name="QueryPageSettings" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PrinterResolution" namespace="System.Drawing.Printing">
-        <property name="Kind" propertytype="System.Drawing.Printing.PrinterResolutionKind" />
-        <property name="X" propertytype="System.Int32" />
-        <property name="Y" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrinterSettings" namespace="System.Drawing.Printing">
-        <class name="PaperSizeCollection" namespace="System.Drawing.Printing">
-            <constructor name="PaperSizeCollection(System.Drawing.Printing.PaperSize[])" argnames="array" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="Item" propertytype="System.Drawing.Printing.PaperSize" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="PaperSourceCollection" namespace="System.Drawing.Printing">
-            <constructor name="PaperSourceCollection(System.Drawing.Printing.PaperSource[])" argnames="array" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="Item" propertytype="System.Drawing.Printing.PaperSource" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="PrinterResolutionCollection" namespace="System.Drawing.Printing">
-            <constructor name="PrinterResolutionCollection(System.Drawing.Printing.PrinterResolution[])" argnames="array" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="Item" propertytype="System.Drawing.Printing.PrinterResolution" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="StringCollection" namespace="System.Drawing.Printing">
-            <constructor name="StringCollection(System.String[])" argnames="array" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="Item" propertytype="System.String" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="StringCollection" argnames="" />
-        <property name="CanDuplex" propertytype="System.Boolean" />
-        <property name="Copies" propertytype="System.Int16" />
-        <property name="Collate" propertytype="System.Boolean" />
-        <property name="DefaultPageSettings" propertytype="System.Drawing.Printing.PageSettings" />
-        <property name="DriverName" propertytype="System.String" />
-        <property name="Duplex" propertytype="System.Drawing.Printing.Duplex" />
-        <property name="FromPage" propertytype="System.Int32" />
-        <property name="InstalledPrinters" propertytype="System.Drawing.Printing.PrinterSettings+StringCollection" />
-        <property name="IsDefaultPrinter" propertytype="System.Boolean" />
-        <property name="IsPlotter" propertytype="System.Boolean" />
-        <property name="IsValid" propertytype="System.Boolean" />
-        <property name="LandscapeAngle" propertytype="System.Int32" />
-        <property name="MaximumCopies" propertytype="System.Int32" />
-        <property name="MaximumPage" propertytype="System.Int32" />
-        <property name="MinimumPage" propertytype="System.Int32" />
-        <property name="OutputPort" propertytype="System.String" />
-        <property name="PaperSizes" propertytype="System.Drawing.Printing.PrinterSettings+PaperSizeCollection" />
-        <property name="PaperSources" propertytype="System.Drawing.Printing.PrinterSettings+PaperSourceCollection" />
-        <property name="PrintDialogDisplayed" propertytype="System.Boolean" />
-        <property name="PrintRange" propertytype="System.Drawing.Printing.PrintRange" />
-        <property name="PrintToFile" propertytype="System.Boolean" />
-        <property name="PrinterName" propertytype="System.String" />
-        <property name="PrinterNameInternal" propertytype="System.String" />
-        <property name="PrinterResolutions" propertytype="System.Drawing.Printing.PrinterSettings+PrinterResolutionCollection" />
-        <property name="SupportsColor" propertytype="System.Boolean" />
-        <property name="ToPage" propertytype="System.Int32" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CreateMeasurementGraphics" argnames="" returntype="System.Drawing.Graphics" />
-        <method name="GetHdevmode" argnames="" returntype="System.IntPtr" />
-        <method name="GetHdevmode(System.Drawing.Printing.PageSettings)" argnames="pageSettings" returntype="System.IntPtr" />
-        <method name="GetHdevnames" argnames="" returntype="System.IntPtr" />
-        <method name="SetHdevmode(System.IntPtr)" argnames="hdevmode" returntype="System.Void" />
-        <method name="SetHdevnames(System.IntPtr)" argnames="hdevnames" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PaperSizeCollection" namespace="System.Drawing.Printing">
-        <constructor name="PaperSizeCollection(System.Drawing.Printing.PaperSize[])" argnames="array" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Drawing.Printing.PaperSize" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PaperSourceCollection" namespace="System.Drawing.Printing">
-        <constructor name="PaperSourceCollection(System.Drawing.Printing.PaperSource[])" argnames="array" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Drawing.Printing.PaperSource" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrinterResolutionCollection" namespace="System.Drawing.Printing">
-        <constructor name="PrinterResolutionCollection(System.Drawing.Printing.PrinterResolution[])" argnames="array" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Drawing.Printing.PrinterResolution" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StringCollection" namespace="System.Drawing.Printing">
-        <constructor name="StringCollection(System.String[])" argnames="array" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrinterUnitConvert" namespace="System.Drawing.Printing">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Convert(System.Double, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Double" />
-        <method name="Convert(System.Int32, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Int32" />
-        <method name="Convert(System.Drawing.Point, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Point" />
-        <method name="Convert(System.Drawing.Size, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Size" />
-        <method name="Convert(System.Drawing.Rectangle, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Rectangle" />
-        <method name="Convert(System.Drawing.Printing.Margins, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Printing.Margins" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrintEventArgs" namespace="System.Drawing.Printing">
-        <constructor name="PrintEventArgs" argnames="" />
-        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrintingPermission" namespace="System.Drawing.Printing">
-        <constructor name="PrintingPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="PrintingPermission(System.Drawing.Printing.PrintingPermissionLevel)" argnames="printingLevel" />
-        <property name="Level" propertytype="System.Drawing.Printing.PrintingPermissionLevel" />
-        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrintingPermissionAttribute" namespace="System.Drawing.Printing">
-        <constructor name="PrintingPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Level" propertytype="System.Drawing.Printing.PrintingPermissionLevel" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrintPageEventArgs" namespace="System.Drawing.Printing">
-        <constructor name="PrintPageEventArgs(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.Printing.PageSettings)" argnames="graphics, marginBounds, pageBounds, pageSettings" />
-        <property name="Cancel" propertytype="System.Boolean" />
-        <property name="Graphics" propertytype="System.Drawing.Graphics" />
-        <property name="HasMorePages" propertytype="System.Boolean" />
-        <property name="MarginBounds" propertytype="System.Drawing.Rectangle" />
-        <property name="PageBounds" propertytype="System.Drawing.Rectangle" />
-        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="QueryPageSettingsEventArgs" namespace="System.Drawing.Printing">
-        <constructor name="QueryPageSettingsEventArgs(System.Drawing.Printing.PageSettings)" argnames="pageSettings" />
-        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
-        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="PrintEventHandler" namespace="System.Drawing.Printing">
-        <constructor name="PrintEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Drawing.Printing.PrintEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Drawing.Printing.PrintEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="PrintPageEventHandler" namespace="System.Drawing.Printing">
-        <constructor name="PrintPageEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Drawing.Printing.PrintPageEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Drawing.Printing.PrintPageEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="QueryPageSettingsEventHandler" namespace="System.Drawing.Printing">
-        <constructor name="QueryPageSettingsEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Drawing.Printing.QueryPageSettingsEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Drawing.Printing.QueryPageSettingsEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="Duplex" namespace="System.Drawing.Printing">
-        <field name="Default" />
-        <field name="Simplex" />
-        <field name="Horizontal" />
-        <field name="Vertical" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PaperKind" namespace="System.Drawing.Printing">
-        <field name="Custom" />
-        <field name="Letter" />
-        <field name="Legal" />
-        <field name="A4" />
-        <field name="CSheet" />
-        <field name="DSheet" />
-        <field name="ESheet" />
-        <field name="LetterSmall" />
-        <field name="Tabloid" />
-        <field name="Ledger" />
-        <field name="Statement" />
-        <field name="Executive" />
-        <field name="A3" />
-        <field name="A4Small" />
-        <field name="A5" />
-        <field name="B4" />
-        <field name="B5" />
-        <field name="Folio" />
-        <field name="Quarto" />
-        <field name="Standard10x14" />
-        <field name="Standard11x17" />
-        <field name="Note" />
-        <field name="Number9Envelope" />
-        <field name="Number10Envelope" />
-        <field name="Number11Envelope" />
-        <field name="Number12Envelope" />
-        <field name="Number14Envelope" />
-        <field name="DLEnvelope" />
-        <field name="C5Envelope" />
-        <field name="C3Envelope" />
-        <field name="C4Envelope" />
-        <field name="C6Envelope" />
-        <field name="C65Envelope" />
-        <field name="B4Envelope" />
-        <field name="B5Envelope" />
-        <field name="B6Envelope" />
-        <field name="ItalyEnvelope" />
-        <field name="MonarchEnvelope" />
-        <field name="PersonalEnvelope" />
-        <field name="USStandardFanfold" />
-        <field name="GermanStandardFanfold" />
-        <field name="GermanLegalFanfold" />
-        <field name="IsoB4" />
-        <field name="JapanesePostcard" />
-        <field name="Standard9x11" />
-        <field name="Standard10x11" />
-        <field name="Standard15x11" />
-        <field name="InviteEnvelope" />
-        <field name="LetterExtra" />
-        <field name="LegalExtra" />
-        <field name="TabloidExtra" />
-        <field name="A4Extra" />
-        <field name="LetterTransverse" />
-        <field name="A4Transverse" />
-        <field name="LetterExtraTransverse" />
-        <field name="APlus" />
-        <field name="BPlus" />
-        <field name="LetterPlus" />
-        <field name="A4Plus" />
-        <field name="A5Transverse" />
-        <field name="B5Transverse" />
-        <field name="A3Extra" />
-        <field name="A5Extra" />
-        <field name="B5Extra" />
-        <field name="A2" />
-        <field name="A3Transverse" />
-        <field name="A3ExtraTransverse" />
-        <field name="JapaneseDoublePostcard" />
-        <field name="A6" />
-        <field name="JapaneseEnvelopeKakuNumber2" />
-        <field name="JapaneseEnvelopeKakuNumber3" />
-        <field name="JapaneseEnvelopeChouNumber3" />
-        <field name="JapaneseEnvelopeChouNumber4" />
-        <field name="LetterRotated" />
-        <field name="A3Rotated" />
-        <field name="A4Rotated" />
-        <field name="A5Rotated" />
-        <field name="B4JisRotated" />
-        <field name="B5JisRotated" />
-        <field name="JapanesePostcardRotated" />
-        <field name="JapaneseDoublePostcardRotated" />
-        <field name="A6Rotated" />
-        <field name="JapaneseEnvelopeKakuNumber2Rotated" />
-        <field name="JapaneseEnvelopeKakuNumber3Rotated" />
-        <field name="JapaneseEnvelopeChouNumber3Rotated" />
-        <field name="JapaneseEnvelopeChouNumber4Rotated" />
-        <field name="B6Jis" />
-        <field name="B6JisRotated" />
-        <field name="Standard12x11" />
-        <field name="JapaneseEnvelopeYouNumber4" />
-        <field name="JapaneseEnvelopeYouNumber4Rotated" />
-        <field name="Prc16K" />
-        <field name="Prc32K" />
-        <field name="Prc32KBig" />
-        <field name="PrcEnvelopeNumber1" />
-        <field name="PrcEnvelopeNumber2" />
-        <field name="PrcEnvelopeNumber3" />
-        <field name="PrcEnvelopeNumber4" />
-        <field name="PrcEnvelopeNumber5" />
-        <field name="PrcEnvelopeNumber6" />
-        <field name="PrcEnvelopeNumber7" />
-        <field name="PrcEnvelopeNumber8" />
-        <field name="PrcEnvelopeNumber9" />
-        <field name="PrcEnvelopeNumber10" />
-        <field name="Prc16KRotated" />
-        <field name="Prc32KRotated" />
-        <field name="Prc32KBigRotated" />
-        <field name="PrcEnvelopeNumber1Rotated" />
-        <field name="PrcEnvelopeNumber2Rotated" />
-        <field name="PrcEnvelopeNumber3Rotated" />
-        <field name="PrcEnvelopeNumber4Rotated" />
-        <field name="PrcEnvelopeNumber5Rotated" />
-        <field name="PrcEnvelopeNumber6Rotated" />
-        <field name="PrcEnvelopeNumber7Rotated" />
-        <field name="PrcEnvelopeNumber8Rotated" />
-        <field name="PrcEnvelopeNumber9Rotated" />
-        <field name="PrcEnvelopeNumber10Rotated" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PaperSourceKind" namespace="System.Drawing.Printing">
-        <field name="Upper" />
-        <field name="Lower" />
-        <field name="Middle" />
-        <field name="Manual" />
-        <field name="Envelope" />
-        <field name="ManualFeed" />
-        <field name="AutomaticFeed" />
-        <field name="TractorFeed" />
-        <field name="SmallFormat" />
-        <field name="LargeFormat" />
-        <field name="LargeCapacity" />
-        <field name="Cassette" />
-        <field name="FormSource" />
-        <field name="Custom" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PrinterResolutionKind" namespace="System.Drawing.Printing">
-        <field name="High" />
-        <field name="Medium" />
-        <field name="Low" />
-        <field name="Draft" />
-        <field name="Custom" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PrinterUnit" namespace="System.Drawing.Printing">
-        <field name="Display" />
-        <field name="ThousandthsOfAnInch" />
-        <field name="HundredthsOfAMillimeter" />
-        <field name="TenthsOfAMillimeter" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PrintingPermissionLevel" namespace="System.Drawing.Printing">
-        <field name="NoPrinting" />
-        <field name="SafePrinting" />
-        <field name="DefaultPrinting" />
-        <field name="AllPrinting" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PrintRange" namespace="System.Drawing.Printing">
-        <field name="AllPages" />
-        <field name="SomePages" />
-        <field name="Selection" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Drawing">
+    <class name="Brush" namespace="System.Drawing">
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Brushes" namespace="System.Drawing">
+        <property name="Transparent" propertytype="System.Drawing.Brush" />
+        <property name="AliceBlue" propertytype="System.Drawing.Brush" />
+        <property name="AntiqueWhite" propertytype="System.Drawing.Brush" />
+        <property name="Aqua" propertytype="System.Drawing.Brush" />
+        <property name="Aquamarine" propertytype="System.Drawing.Brush" />
+        <property name="Azure" propertytype="System.Drawing.Brush" />
+        <property name="Beige" propertytype="System.Drawing.Brush" />
+        <property name="Bisque" propertytype="System.Drawing.Brush" />
+        <property name="Black" propertytype="System.Drawing.Brush" />
+        <property name="BlanchedAlmond" propertytype="System.Drawing.Brush" />
+        <property name="Blue" propertytype="System.Drawing.Brush" />
+        <property name="BlueViolet" propertytype="System.Drawing.Brush" />
+        <property name="Brown" propertytype="System.Drawing.Brush" />
+        <property name="BurlyWood" propertytype="System.Drawing.Brush" />
+        <property name="CadetBlue" propertytype="System.Drawing.Brush" />
+        <property name="Chartreuse" propertytype="System.Drawing.Brush" />
+        <property name="Chocolate" propertytype="System.Drawing.Brush" />
+        <property name="Coral" propertytype="System.Drawing.Brush" />
+        <property name="CornflowerBlue" propertytype="System.Drawing.Brush" />
+        <property name="Cornsilk" propertytype="System.Drawing.Brush" />
+        <property name="Crimson" propertytype="System.Drawing.Brush" />
+        <property name="Cyan" propertytype="System.Drawing.Brush" />
+        <property name="DarkBlue" propertytype="System.Drawing.Brush" />
+        <property name="DarkCyan" propertytype="System.Drawing.Brush" />
+        <property name="DarkGoldenrod" propertytype="System.Drawing.Brush" />
+        <property name="DarkGray" propertytype="System.Drawing.Brush" />
+        <property name="DarkGreen" propertytype="System.Drawing.Brush" />
+        <property name="DarkKhaki" propertytype="System.Drawing.Brush" />
+        <property name="DarkMagenta" propertytype="System.Drawing.Brush" />
+        <property name="DarkOliveGreen" propertytype="System.Drawing.Brush" />
+        <property name="DarkOrange" propertytype="System.Drawing.Brush" />
+        <property name="DarkOrchid" propertytype="System.Drawing.Brush" />
+        <property name="DarkRed" propertytype="System.Drawing.Brush" />
+        <property name="DarkSalmon" propertytype="System.Drawing.Brush" />
+        <property name="DarkSeaGreen" propertytype="System.Drawing.Brush" />
+        <property name="DarkSlateBlue" propertytype="System.Drawing.Brush" />
+        <property name="DarkSlateGray" propertytype="System.Drawing.Brush" />
+        <property name="DarkTurquoise" propertytype="System.Drawing.Brush" />
+        <property name="DarkViolet" propertytype="System.Drawing.Brush" />
+        <property name="DeepPink" propertytype="System.Drawing.Brush" />
+        <property name="DeepSkyBlue" propertytype="System.Drawing.Brush" />
+        <property name="DimGray" propertytype="System.Drawing.Brush" />
+        <property name="DodgerBlue" propertytype="System.Drawing.Brush" />
+        <property name="Firebrick" propertytype="System.Drawing.Brush" />
+        <property name="FloralWhite" propertytype="System.Drawing.Brush" />
+        <property name="ForestGreen" propertytype="System.Drawing.Brush" />
+        <property name="Fuchsia" propertytype="System.Drawing.Brush" />
+        <property name="Gainsboro" propertytype="System.Drawing.Brush" />
+        <property name="GhostWhite" propertytype="System.Drawing.Brush" />
+        <property name="Gold" propertytype="System.Drawing.Brush" />
+        <property name="Goldenrod" propertytype="System.Drawing.Brush" />
+        <property name="Gray" propertytype="System.Drawing.Brush" />
+        <property name="Green" propertytype="System.Drawing.Brush" />
+        <property name="GreenYellow" propertytype="System.Drawing.Brush" />
+        <property name="Honeydew" propertytype="System.Drawing.Brush" />
+        <property name="HotPink" propertytype="System.Drawing.Brush" />
+        <property name="IndianRed" propertytype="System.Drawing.Brush" />
+        <property name="Indigo" propertytype="System.Drawing.Brush" />
+        <property name="Ivory" propertytype="System.Drawing.Brush" />
+        <property name="Khaki" propertytype="System.Drawing.Brush" />
+        <property name="Lavender" propertytype="System.Drawing.Brush" />
+        <property name="LavenderBlush" propertytype="System.Drawing.Brush" />
+        <property name="LawnGreen" propertytype="System.Drawing.Brush" />
+        <property name="LemonChiffon" propertytype="System.Drawing.Brush" />
+        <property name="LightBlue" propertytype="System.Drawing.Brush" />
+        <property name="LightCoral" propertytype="System.Drawing.Brush" />
+        <property name="LightCyan" propertytype="System.Drawing.Brush" />
+        <property name="LightGoldenrodYellow" propertytype="System.Drawing.Brush" />
+        <property name="LightGreen" propertytype="System.Drawing.Brush" />
+        <property name="LightGray" propertytype="System.Drawing.Brush" />
+        <property name="LightPink" propertytype="System.Drawing.Brush" />
+        <property name="LightSalmon" propertytype="System.Drawing.Brush" />
+        <property name="LightSeaGreen" propertytype="System.Drawing.Brush" />
+        <property name="LightSkyBlue" propertytype="System.Drawing.Brush" />
+        <property name="LightSlateGray" propertytype="System.Drawing.Brush" />
+        <property name="LightSteelBlue" propertytype="System.Drawing.Brush" />
+        <property name="LightYellow" propertytype="System.Drawing.Brush" />
+        <property name="Lime" propertytype="System.Drawing.Brush" />
+        <property name="LimeGreen" propertytype="System.Drawing.Brush" />
+        <property name="Linen" propertytype="System.Drawing.Brush" />
+        <property name="Magenta" propertytype="System.Drawing.Brush" />
+        <property name="Maroon" propertytype="System.Drawing.Brush" />
+        <property name="MediumAquamarine" propertytype="System.Drawing.Brush" />
+        <property name="MediumBlue" propertytype="System.Drawing.Brush" />
+        <property name="MediumOrchid" propertytype="System.Drawing.Brush" />
+        <property name="MediumPurple" propertytype="System.Drawing.Brush" />
+        <property name="MediumSeaGreen" propertytype="System.Drawing.Brush" />
+        <property name="MediumSlateBlue" propertytype="System.Drawing.Brush" />
+        <property name="MediumSpringGreen" propertytype="System.Drawing.Brush" />
+        <property name="MediumTurquoise" propertytype="System.Drawing.Brush" />
+        <property name="MediumVioletRed" propertytype="System.Drawing.Brush" />
+        <property name="MidnightBlue" propertytype="System.Drawing.Brush" />
+        <property name="MintCream" propertytype="System.Drawing.Brush" />
+        <property name="MistyRose" propertytype="System.Drawing.Brush" />
+        <property name="Moccasin" propertytype="System.Drawing.Brush" />
+        <property name="NavajoWhite" propertytype="System.Drawing.Brush" />
+        <property name="Navy" propertytype="System.Drawing.Brush" />
+        <property name="OldLace" propertytype="System.Drawing.Brush" />
+        <property name="Olive" propertytype="System.Drawing.Brush" />
+        <property name="OliveDrab" propertytype="System.Drawing.Brush" />
+        <property name="Orange" propertytype="System.Drawing.Brush" />
+        <property name="OrangeRed" propertytype="System.Drawing.Brush" />
+        <property name="Orchid" propertytype="System.Drawing.Brush" />
+        <property name="PaleGoldenrod" propertytype="System.Drawing.Brush" />
+        <property name="PaleGreen" propertytype="System.Drawing.Brush" />
+        <property name="PaleTurquoise" propertytype="System.Drawing.Brush" />
+        <property name="PaleVioletRed" propertytype="System.Drawing.Brush" />
+        <property name="PapayaWhip" propertytype="System.Drawing.Brush" />
+        <property name="PeachPuff" propertytype="System.Drawing.Brush" />
+        <property name="Peru" propertytype="System.Drawing.Brush" />
+        <property name="Pink" propertytype="System.Drawing.Brush" />
+        <property name="Plum" propertytype="System.Drawing.Brush" />
+        <property name="PowderBlue" propertytype="System.Drawing.Brush" />
+        <property name="Purple" propertytype="System.Drawing.Brush" />
+        <property name="Red" propertytype="System.Drawing.Brush" />
+        <property name="RosyBrown" propertytype="System.Drawing.Brush" />
+        <property name="RoyalBlue" propertytype="System.Drawing.Brush" />
+        <property name="SaddleBrown" propertytype="System.Drawing.Brush" />
+        <property name="Salmon" propertytype="System.Drawing.Brush" />
+        <property name="SandyBrown" propertytype="System.Drawing.Brush" />
+        <property name="SeaGreen" propertytype="System.Drawing.Brush" />
+        <property name="SeaShell" propertytype="System.Drawing.Brush" />
+        <property name="Sienna" propertytype="System.Drawing.Brush" />
+        <property name="Silver" propertytype="System.Drawing.Brush" />
+        <property name="SkyBlue" propertytype="System.Drawing.Brush" />
+        <property name="SlateBlue" propertytype="System.Drawing.Brush" />
+        <property name="SlateGray" propertytype="System.Drawing.Brush" />
+        <property name="Snow" propertytype="System.Drawing.Brush" />
+        <property name="SpringGreen" propertytype="System.Drawing.Brush" />
+        <property name="SteelBlue" propertytype="System.Drawing.Brush" />
+        <property name="Tan" propertytype="System.Drawing.Brush" />
+        <property name="Teal" propertytype="System.Drawing.Brush" />
+        <property name="Thistle" propertytype="System.Drawing.Brush" />
+        <property name="Tomato" propertytype="System.Drawing.Brush" />
+        <property name="Turquoise" propertytype="System.Drawing.Brush" />
+        <property name="Violet" propertytype="System.Drawing.Brush" />
+        <property name="Wheat" propertytype="System.Drawing.Brush" />
+        <property name="White" propertytype="System.Drawing.Brush" />
+        <property name="WhiteSmoke" propertytype="System.Drawing.Brush" />
+        <property name="Yellow" propertytype="System.Drawing.Brush" />
+        <property name="YellowGreen" propertytype="System.Drawing.Brush" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorConverter" namespace="System.Drawing">
+        <constructor name="ColorConverter" argnames="" />
+        <property name="Colors" propertytype="System.Collections.Hashtable" />
+        <property name="SystemColors" propertytype="System.Collections.Hashtable" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FontConverter" namespace="System.Drawing">
+        <class name="FontNameConverter" namespace="System.Drawing">
+            <constructor name="FontNameConverter" argnames="" />
+            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="FontUnitConverter" namespace="System.Drawing">
+            <constructor name="FontUnitConverter" argnames="" />
+            <property name="EnumType" inherited="System.ComponentModel.EnumConverter" propertytype="System.Type" />
+            <property name="Values" inherited="System.ComponentModel.EnumConverter" propertytype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+            <property name="Comparer" inherited="System.ComponentModel.EnumConverter" propertytype="System.Collections.IComparer" />
+            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
+            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
+            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="FontUnitConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FontNameConverter" namespace="System.Drawing">
+        <constructor name="FontNameConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FontUnitConverter" namespace="System.Drawing">
+        <constructor name="FontUnitConverter" argnames="" />
+        <property name="EnumType" inherited="System.ComponentModel.EnumConverter" propertytype="System.Type" />
+        <property name="Values" inherited="System.ComponentModel.EnumConverter" propertytype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <property name="Comparer" inherited="System.ComponentModel.EnumConverter" propertytype="System.Collections.IComparer" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.EnumConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.EnumConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IconConverter" namespace="System.Drawing">
+        <constructor name="IconConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageAnimator" namespace="System.Drawing">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="UpdateFrames(System.Drawing.Image)" argnames="image" returntype="System.Void" />
+        <method name="UpdateFrames" argnames="" returntype="System.Void" />
+        <method name="Animate(System.Drawing.Image, System.EventHandler)" argnames="image, onFrameChangedHandler" returntype="System.Void" />
+        <method name="CanAnimate(System.Drawing.Image)" argnames="image" returntype="System.Boolean" />
+        <method name="StopAnimate(System.Drawing.Image, System.EventHandler)" argnames="image, onFrameChangedHandler" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageConverter" namespace="System.Drawing">
+        <constructor name="ImageConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Pens" namespace="System.Drawing">
+        <property name="Transparent" propertytype="System.Drawing.Pen" />
+        <property name="AliceBlue" propertytype="System.Drawing.Pen" />
+        <property name="AntiqueWhite" propertytype="System.Drawing.Pen" />
+        <property name="Aqua" propertytype="System.Drawing.Pen" />
+        <property name="Aquamarine" propertytype="System.Drawing.Pen" />
+        <property name="Azure" propertytype="System.Drawing.Pen" />
+        <property name="Beige" propertytype="System.Drawing.Pen" />
+        <property name="Bisque" propertytype="System.Drawing.Pen" />
+        <property name="Black" propertytype="System.Drawing.Pen" />
+        <property name="BlanchedAlmond" propertytype="System.Drawing.Pen" />
+        <property name="Blue" propertytype="System.Drawing.Pen" />
+        <property name="BlueViolet" propertytype="System.Drawing.Pen" />
+        <property name="Brown" propertytype="System.Drawing.Pen" />
+        <property name="BurlyWood" propertytype="System.Drawing.Pen" />
+        <property name="CadetBlue" propertytype="System.Drawing.Pen" />
+        <property name="Chartreuse" propertytype="System.Drawing.Pen" />
+        <property name="Chocolate" propertytype="System.Drawing.Pen" />
+        <property name="Coral" propertytype="System.Drawing.Pen" />
+        <property name="CornflowerBlue" propertytype="System.Drawing.Pen" />
+        <property name="Cornsilk" propertytype="System.Drawing.Pen" />
+        <property name="Crimson" propertytype="System.Drawing.Pen" />
+        <property name="Cyan" propertytype="System.Drawing.Pen" />
+        <property name="DarkBlue" propertytype="System.Drawing.Pen" />
+        <property name="DarkCyan" propertytype="System.Drawing.Pen" />
+        <property name="DarkGoldenrod" propertytype="System.Drawing.Pen" />
+        <property name="DarkGray" propertytype="System.Drawing.Pen" />
+        <property name="DarkGreen" propertytype="System.Drawing.Pen" />
+        <property name="DarkKhaki" propertytype="System.Drawing.Pen" />
+        <property name="DarkMagenta" propertytype="System.Drawing.Pen" />
+        <property name="DarkOliveGreen" propertytype="System.Drawing.Pen" />
+        <property name="DarkOrange" propertytype="System.Drawing.Pen" />
+        <property name="DarkOrchid" propertytype="System.Drawing.Pen" />
+        <property name="DarkRed" propertytype="System.Drawing.Pen" />
+        <property name="DarkSalmon" propertytype="System.Drawing.Pen" />
+        <property name="DarkSeaGreen" propertytype="System.Drawing.Pen" />
+        <property name="DarkSlateBlue" propertytype="System.Drawing.Pen" />
+        <property name="DarkSlateGray" propertytype="System.Drawing.Pen" />
+        <property name="DarkTurquoise" propertytype="System.Drawing.Pen" />
+        <property name="DarkViolet" propertytype="System.Drawing.Pen" />
+        <property name="DeepPink" propertytype="System.Drawing.Pen" />
+        <property name="DeepSkyBlue" propertytype="System.Drawing.Pen" />
+        <property name="DimGray" propertytype="System.Drawing.Pen" />
+        <property name="DodgerBlue" propertytype="System.Drawing.Pen" />
+        <property name="Firebrick" propertytype="System.Drawing.Pen" />
+        <property name="FloralWhite" propertytype="System.Drawing.Pen" />
+        <property name="ForestGreen" propertytype="System.Drawing.Pen" />
+        <property name="Fuchsia" propertytype="System.Drawing.Pen" />
+        <property name="Gainsboro" propertytype="System.Drawing.Pen" />
+        <property name="GhostWhite" propertytype="System.Drawing.Pen" />
+        <property name="Gold" propertytype="System.Drawing.Pen" />
+        <property name="Goldenrod" propertytype="System.Drawing.Pen" />
+        <property name="Gray" propertytype="System.Drawing.Pen" />
+        <property name="Green" propertytype="System.Drawing.Pen" />
+        <property name="GreenYellow" propertytype="System.Drawing.Pen" />
+        <property name="Honeydew" propertytype="System.Drawing.Pen" />
+        <property name="HotPink" propertytype="System.Drawing.Pen" />
+        <property name="IndianRed" propertytype="System.Drawing.Pen" />
+        <property name="Indigo" propertytype="System.Drawing.Pen" />
+        <property name="Ivory" propertytype="System.Drawing.Pen" />
+        <property name="Khaki" propertytype="System.Drawing.Pen" />
+        <property name="Lavender" propertytype="System.Drawing.Pen" />
+        <property name="LavenderBlush" propertytype="System.Drawing.Pen" />
+        <property name="LawnGreen" propertytype="System.Drawing.Pen" />
+        <property name="LemonChiffon" propertytype="System.Drawing.Pen" />
+        <property name="LightBlue" propertytype="System.Drawing.Pen" />
+        <property name="LightCoral" propertytype="System.Drawing.Pen" />
+        <property name="LightCyan" propertytype="System.Drawing.Pen" />
+        <property name="LightGoldenrodYellow" propertytype="System.Drawing.Pen" />
+        <property name="LightGreen" propertytype="System.Drawing.Pen" />
+        <property name="LightGray" propertytype="System.Drawing.Pen" />
+        <property name="LightPink" propertytype="System.Drawing.Pen" />
+        <property name="LightSalmon" propertytype="System.Drawing.Pen" />
+        <property name="LightSeaGreen" propertytype="System.Drawing.Pen" />
+        <property name="LightSkyBlue" propertytype="System.Drawing.Pen" />
+        <property name="LightSlateGray" propertytype="System.Drawing.Pen" />
+        <property name="LightSteelBlue" propertytype="System.Drawing.Pen" />
+        <property name="LightYellow" propertytype="System.Drawing.Pen" />
+        <property name="Lime" propertytype="System.Drawing.Pen" />
+        <property name="LimeGreen" propertytype="System.Drawing.Pen" />
+        <property name="Linen" propertytype="System.Drawing.Pen" />
+        <property name="Magenta" propertytype="System.Drawing.Pen" />
+        <property name="Maroon" propertytype="System.Drawing.Pen" />
+        <property name="MediumAquamarine" propertytype="System.Drawing.Pen" />
+        <property name="MediumBlue" propertytype="System.Drawing.Pen" />
+        <property name="MediumOrchid" propertytype="System.Drawing.Pen" />
+        <property name="MediumPurple" propertytype="System.Drawing.Pen" />
+        <property name="MediumSeaGreen" propertytype="System.Drawing.Pen" />
+        <property name="MediumSlateBlue" propertytype="System.Drawing.Pen" />
+        <property name="MediumSpringGreen" propertytype="System.Drawing.Pen" />
+        <property name="MediumTurquoise" propertytype="System.Drawing.Pen" />
+        <property name="MediumVioletRed" propertytype="System.Drawing.Pen" />
+        <property name="MidnightBlue" propertytype="System.Drawing.Pen" />
+        <property name="MintCream" propertytype="System.Drawing.Pen" />
+        <property name="MistyRose" propertytype="System.Drawing.Pen" />
+        <property name="Moccasin" propertytype="System.Drawing.Pen" />
+        <property name="NavajoWhite" propertytype="System.Drawing.Pen" />
+        <property name="Navy" propertytype="System.Drawing.Pen" />
+        <property name="OldLace" propertytype="System.Drawing.Pen" />
+        <property name="Olive" propertytype="System.Drawing.Pen" />
+        <property name="OliveDrab" propertytype="System.Drawing.Pen" />
+        <property name="Orange" propertytype="System.Drawing.Pen" />
+        <property name="OrangeRed" propertytype="System.Drawing.Pen" />
+        <property name="Orchid" propertytype="System.Drawing.Pen" />
+        <property name="PaleGoldenrod" propertytype="System.Drawing.Pen" />
+        <property name="PaleGreen" propertytype="System.Drawing.Pen" />
+        <property name="PaleTurquoise" propertytype="System.Drawing.Pen" />
+        <property name="PaleVioletRed" propertytype="System.Drawing.Pen" />
+        <property name="PapayaWhip" propertytype="System.Drawing.Pen" />
+        <property name="PeachPuff" propertytype="System.Drawing.Pen" />
+        <property name="Peru" propertytype="System.Drawing.Pen" />
+        <property name="Pink" propertytype="System.Drawing.Pen" />
+        <property name="Plum" propertytype="System.Drawing.Pen" />
+        <property name="PowderBlue" propertytype="System.Drawing.Pen" />
+        <property name="Purple" propertytype="System.Drawing.Pen" />
+        <property name="Red" propertytype="System.Drawing.Pen" />
+        <property name="RosyBrown" propertytype="System.Drawing.Pen" />
+        <property name="RoyalBlue" propertytype="System.Drawing.Pen" />
+        <property name="SaddleBrown" propertytype="System.Drawing.Pen" />
+        <property name="Salmon" propertytype="System.Drawing.Pen" />
+        <property name="SandyBrown" propertytype="System.Drawing.Pen" />
+        <property name="SeaGreen" propertytype="System.Drawing.Pen" />
+        <property name="SeaShell" propertytype="System.Drawing.Pen" />
+        <property name="Sienna" propertytype="System.Drawing.Pen" />
+        <property name="Silver" propertytype="System.Drawing.Pen" />
+        <property name="SkyBlue" propertytype="System.Drawing.Pen" />
+        <property name="SlateBlue" propertytype="System.Drawing.Pen" />
+        <property name="SlateGray" propertytype="System.Drawing.Pen" />
+        <property name="Snow" propertytype="System.Drawing.Pen" />
+        <property name="SpringGreen" propertytype="System.Drawing.Pen" />
+        <property name="SteelBlue" propertytype="System.Drawing.Pen" />
+        <property name="Tan" propertytype="System.Drawing.Pen" />
+        <property name="Teal" propertytype="System.Drawing.Pen" />
+        <property name="Thistle" propertytype="System.Drawing.Pen" />
+        <property name="Tomato" propertytype="System.Drawing.Pen" />
+        <property name="Turquoise" propertytype="System.Drawing.Pen" />
+        <property name="Violet" propertytype="System.Drawing.Pen" />
+        <property name="Wheat" propertytype="System.Drawing.Pen" />
+        <property name="White" propertytype="System.Drawing.Pen" />
+        <property name="WhiteSmoke" propertytype="System.Drawing.Pen" />
+        <property name="Yellow" propertytype="System.Drawing.Pen" />
+        <property name="YellowGreen" propertytype="System.Drawing.Pen" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PointConverter" namespace="System.Drawing">
+        <constructor name="PointConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RectangleConverter" namespace="System.Drawing">
+        <constructor name="RectangleConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Region" namespace="System.Drawing">
+        <constructor name="Region" argnames="" />
+        <constructor name="Region(System.Drawing.RectangleF)" argnames="rect" />
+        <constructor name="Region(System.Drawing.Rectangle)" argnames="rect" />
+        <constructor name="Region(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" />
+        <constructor name="Region(System.Drawing.Drawing2D.RegionData)" argnames="rgnData" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromHrgn(System.IntPtr)" argnames="hrgn" returntype="System.Drawing.Region" />
+        <method name="Clone" argnames="" returntype="System.Drawing.Region" />
+        <method name="MakeInfinite" argnames="" returntype="System.Void" />
+        <method name="MakeEmpty" argnames="" returntype="System.Void" />
+        <method name="Intersect(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="Intersect(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="Intersect(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
+        <method name="Intersect(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="Union(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="Union(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="Union(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
+        <method name="Union(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="Xor(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="Xor(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="Xor(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
+        <method name="Xor(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="Exclude(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="Exclude(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="Exclude(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
+        <method name="Exclude(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="Complement(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="Complement(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="Complement(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
+        <method name="Complement(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="Translate(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="Translate(System.Int32, System.Int32)" argnames="dx, dy" returntype="System.Void" />
+        <method name="Transform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="GetBounds(System.Drawing.Graphics)" argnames="g" returntype="System.Drawing.RectangleF" />
+        <method name="GetHrgn(System.Drawing.Graphics)" argnames="g" returntype="System.IntPtr" />
+        <method name="IsEmpty(System.Drawing.Graphics)" argnames="g" returntype="System.Boolean" />
+        <method name="IsInfinite(System.Drawing.Graphics)" argnames="g" returntype="System.Boolean" />
+        <method name="Equals(System.Drawing.Region, System.Drawing.Graphics)" argnames="region, g" returntype="System.Boolean" />
+        <method name="GetRegionData" argnames="" returntype="System.Drawing.Drawing2D.RegionData" />
+        <method name="IsVisible(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.PointF)" argnames="point" returntype="System.Boolean" />
+        <method name="IsVisible(System.Single, System.Single, System.Drawing.Graphics)" argnames="x, y, g" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.PointF, System.Drawing.Graphics)" argnames="point, g" returntype="System.Boolean" />
+        <method name="IsVisible(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
+        <method name="IsVisible(System.Single, System.Single, System.Single, System.Single, System.Drawing.Graphics)" argnames="x, y, width, height, g" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.RectangleF, System.Drawing.Graphics)" argnames="rect, g" returntype="System.Boolean" />
+        <method name="IsVisible(System.Int32, System.Int32, System.Drawing.Graphics)" argnames="x, y, g" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Point, System.Drawing.Graphics)" argnames="point, g" returntype="System.Boolean" />
+        <method name="IsVisible(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
+        <method name="IsVisible(System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.Graphics)" argnames="x, y, width, height, g" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Rectangle, System.Drawing.Graphics)" argnames="rect, g" returntype="System.Boolean" />
+        <method name="GetRegionScans(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Drawing.RectangleF[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SizeConverter" namespace="System.Drawing">
+        <constructor name="SizeConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SystemBrushes" namespace="System.Drawing">
+        <property name="ActiveBorder" propertytype="System.Drawing.Brush" />
+        <property name="ActiveCaption" propertytype="System.Drawing.Brush" />
+        <property name="ActiveCaptionText" propertytype="System.Drawing.Brush" />
+        <property name="AppWorkspace" propertytype="System.Drawing.Brush" />
+        <property name="Desktop" propertytype="System.Drawing.Brush" />
+        <property name="Control" propertytype="System.Drawing.Brush" />
+        <property name="ControlLightLight" propertytype="System.Drawing.Brush" />
+        <property name="ControlLight" propertytype="System.Drawing.Brush" />
+        <property name="ControlDark" propertytype="System.Drawing.Brush" />
+        <property name="ControlDarkDark" propertytype="System.Drawing.Brush" />
+        <property name="ControlText" propertytype="System.Drawing.Brush" />
+        <property name="Highlight" propertytype="System.Drawing.Brush" />
+        <property name="HighlightText" propertytype="System.Drawing.Brush" />
+        <property name="HotTrack" propertytype="System.Drawing.Brush" />
+        <property name="InactiveCaption" propertytype="System.Drawing.Brush" />
+        <property name="InactiveBorder" propertytype="System.Drawing.Brush" />
+        <property name="Info" propertytype="System.Drawing.Brush" />
+        <property name="Menu" propertytype="System.Drawing.Brush" />
+        <property name="ScrollBar" propertytype="System.Drawing.Brush" />
+        <property name="Window" propertytype="System.Drawing.Brush" />
+        <property name="WindowText" propertytype="System.Drawing.Brush" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromSystemColor(System.Drawing.Color)" argnames="c" returntype="System.Drawing.Brush" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SystemColors" namespace="System.Drawing">
+        <property name="ActiveBorder" propertytype="System.Drawing.Color" />
+        <property name="ActiveCaption" propertytype="System.Drawing.Color" />
+        <property name="ActiveCaptionText" propertytype="System.Drawing.Color" />
+        <property name="AppWorkspace" propertytype="System.Drawing.Color" />
+        <property name="Control" propertytype="System.Drawing.Color" />
+        <property name="ControlDark" propertytype="System.Drawing.Color" />
+        <property name="ControlDarkDark" propertytype="System.Drawing.Color" />
+        <property name="ControlLight" propertytype="System.Drawing.Color" />
+        <property name="ControlLightLight" propertytype="System.Drawing.Color" />
+        <property name="ControlText" propertytype="System.Drawing.Color" />
+        <property name="Desktop" propertytype="System.Drawing.Color" />
+        <property name="GrayText" propertytype="System.Drawing.Color" />
+        <property name="Highlight" propertytype="System.Drawing.Color" />
+        <property name="HighlightText" propertytype="System.Drawing.Color" />
+        <property name="HotTrack" propertytype="System.Drawing.Color" />
+        <property name="InactiveBorder" propertytype="System.Drawing.Color" />
+        <property name="InactiveCaption" propertytype="System.Drawing.Color" />
+        <property name="InactiveCaptionText" propertytype="System.Drawing.Color" />
+        <property name="Info" propertytype="System.Drawing.Color" />
+        <property name="InfoText" propertytype="System.Drawing.Color" />
+        <property name="Menu" propertytype="System.Drawing.Color" />
+        <property name="MenuText" propertytype="System.Drawing.Color" />
+        <property name="ScrollBar" propertytype="System.Drawing.Color" />
+        <property name="Window" propertytype="System.Drawing.Color" />
+        <property name="WindowFrame" propertytype="System.Drawing.Color" />
+        <property name="WindowText" propertytype="System.Drawing.Color" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SystemIcons" namespace="System.Drawing">
+        <property name="Application" propertytype="System.Drawing.Icon" />
+        <property name="Asterisk" propertytype="System.Drawing.Icon" />
+        <property name="Error" propertytype="System.Drawing.Icon" />
+        <property name="Exclamation" propertytype="System.Drawing.Icon" />
+        <property name="Hand" propertytype="System.Drawing.Icon" />
+        <property name="Information" propertytype="System.Drawing.Icon" />
+        <property name="Question" propertytype="System.Drawing.Icon" />
+        <property name="Warning" propertytype="System.Drawing.Icon" />
+        <property name="WinLogo" propertytype="System.Drawing.Icon" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SystemPens" namespace="System.Drawing">
+        <property name="ActiveCaptionText" propertytype="System.Drawing.Pen" />
+        <property name="Control" propertytype="System.Drawing.Pen" />
+        <property name="ControlText" propertytype="System.Drawing.Pen" />
+        <property name="ControlDark" propertytype="System.Drawing.Pen" />
+        <property name="ControlDarkDark" propertytype="System.Drawing.Pen" />
+        <property name="ControlLight" propertytype="System.Drawing.Pen" />
+        <property name="ControlLightLight" propertytype="System.Drawing.Pen" />
+        <property name="GrayText" propertytype="System.Drawing.Pen" />
+        <property name="Highlight" propertytype="System.Drawing.Pen" />
+        <property name="HighlightText" propertytype="System.Drawing.Pen" />
+        <property name="InactiveCaptionText" propertytype="System.Drawing.Pen" />
+        <property name="InfoText" propertytype="System.Drawing.Pen" />
+        <property name="MenuText" propertytype="System.Drawing.Pen" />
+        <property name="WindowFrame" propertytype="System.Drawing.Pen" />
+        <property name="WindowText" propertytype="System.Drawing.Pen" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromSystemColor(System.Drawing.Color)" argnames="c" returntype="System.Drawing.Pen" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolboxBitmapAttribute" namespace="System.Drawing">
+        <constructor name="ToolboxBitmapAttribute(System.String)" argnames="imageFile" />
+        <constructor name="ToolboxBitmapAttribute(System.Type)" argnames="t" />
+        <constructor name="ToolboxBitmapAttribute(System.Type, System.String)" argnames="t, name" />
+        <field name="Default" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetImage(System.Object)" argnames="component" returntype="System.Drawing.Image" />
+        <method name="GetImage(System.Object, System.Boolean)" argnames="component, large" returntype="System.Drawing.Image" />
+        <method name="GetImage(System.Type)" argnames="type" returntype="System.Drawing.Image" />
+        <method name="GetImage(System.Type, System.Boolean)" argnames="type, large" returntype="System.Drawing.Image" />
+        <method name="GetImage(System.Type, System.String, System.Boolean)" argnames="type, imgName, large" returntype="System.Drawing.Image" />
+        <method name="GetImageFromResource(System.Type, System.String, System.Boolean)" argnames="t, imageName, large" returntype="System.Drawing.Image" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Image" namespace="System.Drawing">
+        <delegate name="GetThumbnailImageAbort" namespace="System.Drawing">
+            <constructor name="GetThumbnailImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
+            <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+            <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+            <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+            <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
+            <method name="Invoke" argnames="" returntype="System.Boolean" />
+            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+            <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+            <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+            <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+            <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+            <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+            <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </delegate>
+        <property name="ImageType" propertytype="System.Drawing.Image+ImageTypeEnum" />
+        <property name="PhysicalDimension" propertytype="System.Drawing.SizeF" />
+        <property name="Size" propertytype="System.Drawing.Size" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="HorizontalResolution" propertytype="System.Single" />
+        <property name="VerticalResolution" propertytype="System.Single" />
+        <property name="Flags" propertytype="System.Int32" />
+        <property name="RawFormat" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="PixelFormat" propertytype="System.Drawing.Imaging.PixelFormat" />
+        <property name="Palette" propertytype="System.Drawing.Imaging.ColorPalette" />
+        <property name="FrameDimensionsList" propertytype="System.Guid[]" />
+        <property name="PropertyIdList" propertytype="System.Int32[]" />
+        <property name="PropertyItems" propertytype="System.Drawing.Imaging.PropertyItem[]" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromFile(System.String)" argnames="filename" returntype="System.Drawing.Image" />
+        <method name="FromFile(System.String, System.Boolean)" argnames="filename, useEmbeddedColorManagement" returntype="System.Drawing.Image" />
+        <method name="FromStream(System.IO.Stream)" argnames="stream" returntype="System.Drawing.Image" />
+        <method name="FromStream(System.IO.Stream, System.Boolean)" argnames="stream, useEmbeddedColorManagement" returntype="System.Drawing.Image" />
+        <method name="GetEncoderParameterList(System.Guid)" argnames="encoder" returntype="System.Drawing.Imaging.EncoderParameters" />
+        <method name="Save(System.String)" argnames="filename" returntype="System.Void" />
+        <method name="Save(System.String, System.Drawing.Imaging.ImageFormat)" argnames="filename, format" returntype="System.Void" />
+        <method name="Save(System.String, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="filename, encoder, encoderParams" returntype="System.Void" />
+        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageFormat)" argnames="stream, format" returntype="System.Void" />
+        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="stream, encoder, encoderParams" returntype="System.Void" />
+        <method name="SaveAdd(System.Drawing.Imaging.EncoderParameters)" argnames="encoderParams" returntype="System.Void" />
+        <method name="SaveAdd(System.Drawing.Image, System.Drawing.Imaging.EncoderParameters)" argnames="image, encoderParams" returntype="System.Void" />
+        <method name="GetBounds(System.Drawing.GraphicsUnit&amp;)" argnames="pageUnit" returntype="System.Drawing.RectangleF" />
+        <method name="GetThumbnailImage(System.Int32, System.Int32, System.Drawing.Image.GetThumbnailImageAbort, System.IntPtr)" argnames="thumbWidth, thumbHeight, callback, callbackData" returntype="System.Drawing.Image" />
+        <method name="GetFrameCount(System.Drawing.Imaging.FrameDimension)" argnames="dimension" returntype="System.Int32" />
+        <method name="SelectActiveFrame(System.Drawing.Imaging.FrameDimension, System.Int32)" argnames="dimension, frameIndex" returntype="System.Int32" />
+        <method name="RotateFlip(System.Drawing.RotateFlipType)" argnames="rotateFlipType" returntype="System.Void" />
+        <method name="GetPropertyItem(System.Int32)" argnames="propid" returntype="System.Drawing.Imaging.PropertyItem" />
+        <method name="RemovePropertyItem(System.Int32)" argnames="propid" returntype="System.Void" />
+        <method name="SetPropertyItem(System.Drawing.Imaging.PropertyItem)" argnames="propitem" returntype="System.Void" />
+        <method name="FromHbitmap(System.IntPtr)" argnames="hbitmap" returntype="System.Drawing.Bitmap" />
+        <method name="FromHbitmap(System.IntPtr, System.IntPtr)" argnames="hbitmap, hpalette" returntype="System.Drawing.Bitmap" />
+        <method name="GetPixelFormatSize(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Int32" />
+        <method name="IsAlphaPixelFormat(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Boolean" />
+        <method name="IsExtendedPixelFormat(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Boolean" />
+        <method name="IsCanonicalPixelFormat(System.Drawing.Imaging.PixelFormat)" argnames="pixfmt" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Bitmap" namespace="System.Drawing">
+        <constructor name="Bitmap(System.String)" argnames="filename" />
+        <constructor name="Bitmap(System.String, System.Boolean)" argnames="filename, useIcm" />
+        <constructor name="Bitmap(System.Type, System.String)" argnames="type, resource" />
+        <constructor name="Bitmap(System.IO.Stream)" argnames="stream" />
+        <constructor name="Bitmap(System.IO.Stream, System.Boolean)" argnames="stream, useIcm" />
+        <constructor name="Bitmap(System.Int32, System.Int32, System.Int32, System.Drawing.Imaging.PixelFormat, System.IntPtr)" argnames="width, height, stride, format, scan0" />
+        <constructor name="Bitmap(System.Int32, System.Int32, System.Drawing.Imaging.PixelFormat)" argnames="width, height, format" />
+        <constructor name="Bitmap(System.Int32, System.Int32)" argnames="width, height" />
+        <constructor name="Bitmap(System.Int32, System.Int32, System.Drawing.Graphics)" argnames="width, height, g" />
+        <constructor name="Bitmap(System.Drawing.Image)" argnames="original" />
+        <constructor name="Bitmap(System.Drawing.Image, System.Int32, System.Int32)" argnames="original, width, height" />
+        <constructor name="Bitmap(System.Drawing.Image, System.Drawing.Size)" argnames="original, newSize" />
+        <property name="PhysicalDimension" inherited="System.Drawing.Image" propertytype="System.Drawing.SizeF" />
+        <property name="Size" inherited="System.Drawing.Image" propertytype="System.Drawing.Size" />
+        <property name="Width" inherited="System.Drawing.Image" propertytype="System.Int32" />
+        <property name="Height" inherited="System.Drawing.Image" propertytype="System.Int32" />
+        <property name="HorizontalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
+        <property name="VerticalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
+        <property name="Flags" inherited="System.Drawing.Image" propertytype="System.Int32" />
+        <property name="RawFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="PixelFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PixelFormat" />
+        <property name="Palette" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ColorPalette" />
+        <property name="FrameDimensionsList" inherited="System.Drawing.Image" propertytype="System.Guid[]" />
+        <property name="PropertyIdList" inherited="System.Drawing.Image" propertytype="System.Int32[]" />
+        <property name="PropertyItems" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PropertyItem[]" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Drawing.Image" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromHicon(System.IntPtr)" argnames="hicon" returntype="System.Drawing.Bitmap" />
+        <method name="FromResource(System.IntPtr, System.String)" argnames="hinstance, bitmapName" returntype="System.Drawing.Bitmap" />
+        <method name="GetHbitmap" argnames="" returntype="System.IntPtr" />
+        <method name="GetHbitmap(System.Drawing.Color)" argnames="background" returntype="System.IntPtr" />
+        <method name="GetHicon" argnames="" returntype="System.IntPtr" />
+        <method name="Clone(System.Drawing.Rectangle, System.Drawing.Imaging.PixelFormat)" argnames="rect, format" returntype="System.Drawing.Bitmap" />
+        <method name="Clone(System.Drawing.RectangleF, System.Drawing.Imaging.PixelFormat)" argnames="rect, format" returntype="System.Drawing.Bitmap" />
+        <method name="MakeTransparent" argnames="" returntype="System.Void" />
+        <method name="MakeTransparent(System.Drawing.Color)" argnames="transparentColor" returntype="System.Void" />
+        <method name="LockBits(System.Drawing.Rectangle, System.Drawing.Imaging.ImageLockMode, System.Drawing.Imaging.PixelFormat)" argnames="rect, flags, format" returntype="System.Drawing.Imaging.BitmapData" />
+        <method name="UnlockBits(System.Drawing.Imaging.BitmapData)" argnames="bitmapdata" returntype="System.Void" />
+        <method name="GetPixel(System.Int32, System.Int32)" argnames="x, y" returntype="System.Drawing.Color" />
+        <method name="SetPixel(System.Int32, System.Int32, System.Drawing.Color)" argnames="x, y, color" returntype="System.Void" />
+        <method name="SetResolution(System.Single, System.Single)" argnames="xDpi, yDpi" returntype="System.Void" />
+        <method name="GetEncoderParameterList(System.Guid)" argnames="encoder" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.EncoderParameters" />
+        <method name="Save(System.String)" argnames="filename" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.String, System.Drawing.Imaging.ImageFormat)" argnames="filename, format" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.String, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="filename, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageFormat)" argnames="stream, format" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="stream, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="SaveAdd(System.Drawing.Imaging.EncoderParameters)" argnames="encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="SaveAdd(System.Drawing.Image, System.Drawing.Imaging.EncoderParameters)" argnames="image, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetBounds(System.Drawing.GraphicsUnit&amp;)" argnames="pageUnit" inherited="System.Drawing.Image" returntype="System.Drawing.RectangleF" />
+        <method name="GetThumbnailImage(System.Int32, System.Int32, System.Drawing.Image.GetThumbnailImageAbort, System.IntPtr)" argnames="thumbWidth, thumbHeight, callback, callbackData" inherited="System.Drawing.Image" returntype="System.Drawing.Image" />
+        <method name="GetFrameCount(System.Drawing.Imaging.FrameDimension)" argnames="dimension" inherited="System.Drawing.Image" returntype="System.Int32" />
+        <method name="SelectActiveFrame(System.Drawing.Imaging.FrameDimension, System.Int32)" argnames="dimension, frameIndex" inherited="System.Drawing.Image" returntype="System.Int32" />
+        <method name="RotateFlip(System.Drawing.RotateFlipType)" argnames="rotateFlipType" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetPropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.PropertyItem" />
+        <method name="RemovePropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="SetPropertyItem(System.Drawing.Imaging.PropertyItem)" argnames="propitem" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Graphics" namespace="System.Drawing">
+        <delegate name="DrawImageAbort" namespace="System.Drawing">
+            <constructor name="DrawImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
+            <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+            <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+            <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+            <method name="BeginInvoke(System.IntPtr, System.AsyncCallback, System.Object)" argnames="callbackdata, callback, object" returntype="System.IAsyncResult" />
+            <method name="Invoke(System.IntPtr)" argnames="callbackdata" returntype="System.Boolean" />
+            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+            <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+            <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+            <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+            <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+            <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+            <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </delegate>
+        <delegate name="EnumerateMetafileProc" namespace="System.Drawing">
+            <constructor name="EnumerateMetafileProc(System.Object, System.IntPtr)" argnames="object, method" />
+            <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+            <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+            <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+            <method name="BeginInvoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback, System.AsyncCallback, System.Object)" argnames="recordType, flags, dataSize, data, callbackData, callback, object" returntype="System.IAsyncResult" />
+            <method name="Invoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback)" argnames="recordType, flags, dataSize, data, callbackData" returntype="System.Boolean" />
+            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+            <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+            <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+            <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+            <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+            <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+            <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </delegate>
+        <property name="CompositingMode" propertytype="System.Drawing.Drawing2D.CompositingMode" />
+        <property name="RenderingOrigin" propertytype="System.Drawing.Point" />
+        <property name="CompositingQuality" propertytype="System.Drawing.Drawing2D.CompositingQuality" />
+        <property name="TextRenderingHint" propertytype="System.Drawing.Text.TextRenderingHint" />
+        <property name="TextContrast" propertytype="System.Int32" />
+        <property name="SmoothingMode" propertytype="System.Drawing.Drawing2D.SmoothingMode" />
+        <property name="PixelOffsetMode" propertytype="System.Drawing.Drawing2D.PixelOffsetMode" />
+        <property name="InterpolationMode" propertytype="System.Drawing.Drawing2D.InterpolationMode" />
+        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
+        <property name="PageUnit" propertytype="System.Drawing.GraphicsUnit" />
+        <property name="PageScale" propertytype="System.Single" />
+        <property name="DpiX" propertytype="System.Single" />
+        <property name="DpiY" propertytype="System.Single" />
+        <property name="Clip" propertytype="System.Drawing.Region" />
+        <property name="ClipBounds" propertytype="System.Drawing.RectangleF" />
+        <property name="IsClipEmpty" propertytype="System.Boolean" />
+        <property name="VisibleClipBounds" propertytype="System.Drawing.RectangleF" />
+        <property name="IsVisibleClipEmpty" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromHdc(System.IntPtr)" argnames="hdc" returntype="System.Drawing.Graphics" />
+        <method name="FromHdcInternal(System.IntPtr)" argnames="hdc" returntype="System.Drawing.Graphics" />
+        <method name="FromHdc(System.IntPtr, System.IntPtr)" argnames="hdc, hdevice" returntype="System.Drawing.Graphics" />
+        <method name="FromHwnd(System.IntPtr)" argnames="hwnd" returntype="System.Drawing.Graphics" />
+        <method name="FromHwndInternal(System.IntPtr)" argnames="hwnd" returntype="System.Drawing.Graphics" />
+        <method name="FromImage(System.Drawing.Image)" argnames="image" returntype="System.Drawing.Graphics" />
+        <method name="GetHdc" argnames="" returntype="System.IntPtr" />
+        <method name="ReleaseHdc(System.IntPtr)" argnames="hdc" returntype="System.Void" />
+        <method name="ReleaseHdcInternal(System.IntPtr)" argnames="hdc" returntype="System.Void" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Flush(System.Drawing.Drawing2D.FlushIntention)" argnames="intention" returntype="System.Void" />
+        <method name="ResetTransform" argnames="" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
+        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
+        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
+        <method name="TransformPoints(System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.PointF[])" argnames="destSpace, srcSpace, pts" returntype="System.Void" />
+        <method name="TransformPoints(System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.Drawing2D.CoordinateSpace, System.Drawing.Point[])" argnames="destSpace, srcSpace, pts" returntype="System.Void" />
+        <method name="GetNearestColor(System.Drawing.Color)" argnames="color" returntype="System.Drawing.Color" />
+        <method name="DrawLine(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x1, y1, x2, y2" returntype="System.Void" />
+        <method name="DrawLine(System.Drawing.Pen, System.Drawing.PointF, System.Drawing.PointF)" argnames="pen, pt1, pt2" returntype="System.Void" />
+        <method name="DrawLines(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawLine(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x1, y1, x2, y2" returntype="System.Void" />
+        <method name="DrawLine(System.Drawing.Pen, System.Drawing.Point, System.Drawing.Point)" argnames="pen, pt1, pt2" returntype="System.Void" />
+        <method name="DrawLines(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawArc(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawArc(System.Drawing.Pen, System.Drawing.RectangleF, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawArc(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawArc(System.Drawing.Pen, System.Drawing.Rectangle, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawBezier(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x1, y1, x2, y2, x3, y3, x4, y4" returntype="System.Void" />
+        <method name="DrawBezier(System.Drawing.Pen, System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF)" argnames="pen, pt1, pt2, pt3, pt4" returntype="System.Void" />
+        <method name="DrawBeziers(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawBezier(System.Drawing.Pen, System.Drawing.Point, System.Drawing.Point, System.Drawing.Point, System.Drawing.Point)" argnames="pen, pt1, pt2, pt3, pt4" returntype="System.Void" />
+        <method name="DrawBeziers(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawRectangle(System.Drawing.Pen, System.Drawing.Rectangle)" argnames="pen, rect" returntype="System.Void" />
+        <method name="DrawRectangle(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height" returntype="System.Void" />
+        <method name="DrawRectangles(System.Drawing.Pen, System.Drawing.RectangleF[])" argnames="pen, rects" returntype="System.Void" />
+        <method name="DrawRectangle(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height" returntype="System.Void" />
+        <method name="DrawRectangles(System.Drawing.Pen, System.Drawing.Rectangle[])" argnames="pen, rects" returntype="System.Void" />
+        <method name="DrawEllipse(System.Drawing.Pen, System.Drawing.RectangleF)" argnames="pen, rect" returntype="System.Void" />
+        <method name="DrawEllipse(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height" returntype="System.Void" />
+        <method name="DrawEllipse(System.Drawing.Pen, System.Drawing.Rectangle)" argnames="pen, rect" returntype="System.Void" />
+        <method name="DrawEllipse(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height" returntype="System.Void" />
+        <method name="DrawPie(System.Drawing.Pen, System.Drawing.RectangleF, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawPie(System.Drawing.Pen, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawPie(System.Drawing.Pen, System.Drawing.Rectangle, System.Single, System.Single)" argnames="pen, rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawPie(System.Drawing.Pen, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="pen, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="DrawPolygon(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawPolygon(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawPath(System.Drawing.Pen, System.Drawing.Drawing2D.GraphicsPath)" argnames="pen, path" returntype="System.Void" />
+        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Single)" argnames="pen, points, tension" returntype="System.Void" />
+        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Int32, System.Int32)" argnames="pen, points, offset, numberOfSegments" returntype="System.Void" />
+        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Int32, System.Int32, System.Single)" argnames="pen, points, offset, numberOfSegments, tension" returntype="System.Void" />
+        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.Point[], System.Single)" argnames="pen, points, tension" returntype="System.Void" />
+        <method name="DrawCurve(System.Drawing.Pen, System.Drawing.Point[], System.Int32, System.Int32, System.Single)" argnames="pen, points, offset, numberOfSegments, tension" returntype="System.Void" />
+        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.PointF[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.PointF[], System.Single, System.Drawing.Drawing2D.FillMode)" argnames="pen, points, tension, fillmode" returntype="System.Void" />
+        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.Point[])" argnames="pen, points" returntype="System.Void" />
+        <method name="DrawClosedCurve(System.Drawing.Pen, System.Drawing.Point[], System.Single, System.Drawing.Drawing2D.FillMode)" argnames="pen, points, tension, fillmode" returntype="System.Void" />
+        <method name="Clear(System.Drawing.Color)" argnames="color" returntype="System.Void" />
+        <method name="FillRectangle(System.Drawing.Brush, System.Drawing.RectangleF)" argnames="brush, rect" returntype="System.Void" />
+        <method name="FillRectangle(System.Drawing.Brush, System.Single, System.Single, System.Single, System.Single)" argnames="brush, x, y, width, height" returntype="System.Void" />
+        <method name="FillRectangles(System.Drawing.Brush, System.Drawing.RectangleF[])" argnames="brush, rects" returntype="System.Void" />
+        <method name="FillRectangle(System.Drawing.Brush, System.Drawing.Rectangle)" argnames="brush, rect" returntype="System.Void" />
+        <method name="FillRectangle(System.Drawing.Brush, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="brush, x, y, width, height" returntype="System.Void" />
+        <method name="FillRectangles(System.Drawing.Brush, System.Drawing.Rectangle[])" argnames="brush, rects" returntype="System.Void" />
+        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.PointF[])" argnames="brush, points" returntype="System.Void" />
+        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.PointF[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillMode" returntype="System.Void" />
+        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.Point[])" argnames="brush, points" returntype="System.Void" />
+        <method name="FillPolygon(System.Drawing.Brush, System.Drawing.Point[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillMode" returntype="System.Void" />
+        <method name="FillEllipse(System.Drawing.Brush, System.Drawing.RectangleF)" argnames="brush, rect" returntype="System.Void" />
+        <method name="FillEllipse(System.Drawing.Brush, System.Single, System.Single, System.Single, System.Single)" argnames="brush, x, y, width, height" returntype="System.Void" />
+        <method name="FillEllipse(System.Drawing.Brush, System.Drawing.Rectangle)" argnames="brush, rect" returntype="System.Void" />
+        <method name="FillEllipse(System.Drawing.Brush, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="brush, x, y, width, height" returntype="System.Void" />
+        <method name="FillPie(System.Drawing.Brush, System.Drawing.Rectangle, System.Single, System.Single)" argnames="brush, rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="FillPie(System.Drawing.Brush, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="brush, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="FillPie(System.Drawing.Brush, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="brush, x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="FillPath(System.Drawing.Brush, System.Drawing.Drawing2D.GraphicsPath)" argnames="brush, path" returntype="System.Void" />
+        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.PointF[])" argnames="brush, points" returntype="System.Void" />
+        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.PointF[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillmode" returntype="System.Void" />
+        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.PointF[], System.Drawing.Drawing2D.FillMode, System.Single)" argnames="brush, points, fillmode, tension" returntype="System.Void" />
+        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.Point[])" argnames="brush, points" returntype="System.Void" />
+        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.Point[], System.Drawing.Drawing2D.FillMode)" argnames="brush, points, fillmode" returntype="System.Void" />
+        <method name="FillClosedCurve(System.Drawing.Brush, System.Drawing.Point[], System.Drawing.Drawing2D.FillMode, System.Single)" argnames="brush, points, fillmode, tension" returntype="System.Void" />
+        <method name="FillRegion(System.Drawing.Brush, System.Drawing.Region)" argnames="brush, region" returntype="System.Void" />
+        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Single, System.Single)" argnames="s, font, brush, x, y" returntype="System.Void" />
+        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.PointF)" argnames="s, font, brush, point" returntype="System.Void" />
+        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Single, System.Single, System.Drawing.StringFormat)" argnames="s, font, brush, x, y, format" returntype="System.Void" />
+        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.PointF, System.Drawing.StringFormat)" argnames="s, font, brush, point, format" returntype="System.Void" />
+        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.RectangleF)" argnames="s, font, brush, layoutRectangle" returntype="System.Void" />
+        <method name="DrawString(System.String, System.Drawing.Font, System.Drawing.Brush, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="s, font, brush, layoutRectangle, format" returntype="System.Void" />
+        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.SizeF, System.Drawing.StringFormat, System.Int32&amp;, System.Int32&amp;)" argnames="text, font, layoutArea, stringFormat, charactersFitted, linesFilled" returntype="System.Drawing.SizeF" />
+        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.PointF, System.Drawing.StringFormat)" argnames="text, font, origin, stringFormat" returntype="System.Drawing.SizeF" />
+        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.SizeF)" argnames="text, font, layoutArea" returntype="System.Drawing.SizeF" />
+        <method name="MeasureString(System.String, System.Drawing.Font, System.Drawing.SizeF, System.Drawing.StringFormat)" argnames="text, font, layoutArea, stringFormat" returntype="System.Drawing.SizeF" />
+        <method name="MeasureString(System.String, System.Drawing.Font)" argnames="text, font" returntype="System.Drawing.SizeF" />
+        <method name="MeasureString(System.String, System.Drawing.Font, System.Int32)" argnames="text, font, width" returntype="System.Drawing.SizeF" />
+        <method name="MeasureString(System.String, System.Drawing.Font, System.Int32, System.Drawing.StringFormat)" argnames="text, font, width, format" returntype="System.Drawing.SizeF" />
+        <method name="MeasureCharacterRanges(System.String, System.Drawing.Font, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="text, font, layoutRect, stringFormat" returntype="System.Drawing.Region[]" />
+        <method name="DrawIcon(System.Drawing.Icon, System.Int32, System.Int32)" argnames="icon, x, y" returntype="System.Void" />
+        <method name="DrawIcon(System.Drawing.Icon, System.Drawing.Rectangle)" argnames="icon, targetRect" returntype="System.Void" />
+        <method name="DrawIconUnstretched(System.Drawing.Icon, System.Drawing.Rectangle)" argnames="icon, targetRect" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF)" argnames="image, point" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Single, System.Single)" argnames="image, x, y" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.RectangleF)" argnames="image, rect" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Single, System.Single, System.Single, System.Single)" argnames="image, x, y, width, height" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point)" argnames="image, point" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Int32, System.Int32)" argnames="image, x, y" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle)" argnames="image, rect" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="image, x, y, width, height" returntype="System.Void" />
+        <method name="DrawImageUnscaled(System.Drawing.Image, System.Drawing.Point)" argnames="image, point" returntype="System.Void" />
+        <method name="DrawImageUnscaled(System.Drawing.Image, System.Int32, System.Int32)" argnames="image, x, y" returntype="System.Void" />
+        <method name="DrawImageUnscaled(System.Drawing.Image, System.Drawing.Rectangle)" argnames="image, rect" returntype="System.Void" />
+        <method name="DrawImageUnscaled(System.Drawing.Image, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="image, x, y, width, height" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[])" argnames="image, destPoints" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[])" argnames="image, destPoints" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Single, System.Single, System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="image, x, y, srcRect, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Int32, System.Int32, System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="image, x, y, srcRect, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcRect, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcRect, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="image, destPoints, srcRect, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destPoints, srcRect, srcUnit, imageAttr" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.Int32)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback, callbackData" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="image, destPoints, srcRect, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destPoints, srcRect, srcUnit, imageAttr" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.Int32)" argnames="image, destPoints, srcRect, srcUnit, imageAttr, callback, callbackData" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs, callback" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Single, System.Single, System.Single, System.Single, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.IntPtr)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs, callback, callbackData" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttr" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttr, callback" returntype="System.Void" />
+        <method name="DrawImage(System.Drawing.Image, System.Drawing.Rectangle, System.Int32, System.Int32, System.Int32, System.Int32, System.Drawing.GraphicsUnit, System.Drawing.Imaging.ImageAttributes, System.Drawing.Graphics.DrawImageAbort, System.IntPtr)" argnames="image, destRect, srcX, srcY, srcWidth, srcHeight, srcUnit, imageAttrs, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, srcRect, srcUnit, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoint, srcRect, srcUnit, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoint, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoint, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, srcRect, srcUnit, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destRect, srcRect, srcUnit, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destRect, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destRect, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, srcRect, srcUnit, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc)" argnames="metafile, destPoints, srcRect, srcUnit, callback" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr)" argnames="metafile, destPoints, srcRect, srcUnit, callback, callbackData" returntype="System.Void" />
+        <method name="EnumerateMetafile(System.Drawing.Imaging.Metafile, System.Drawing.Point[], System.Drawing.Rectangle, System.Drawing.GraphicsUnit, System.Drawing.Graphics.EnumerateMetafileProc, System.IntPtr, System.Drawing.Imaging.ImageAttributes)" argnames="metafile, destPoints, srcRect, unit, callback, callbackData, imageAttr" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.Graphics)" argnames="g" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.Graphics, System.Drawing.Drawing2D.CombineMode)" argnames="g, combineMode" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.Rectangle, System.Drawing.Drawing2D.CombineMode)" argnames="rect, combineMode" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.RectangleF, System.Drawing.Drawing2D.CombineMode)" argnames="rect, combineMode" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.CombineMode)" argnames="path, combineMode" returntype="System.Void" />
+        <method name="SetClip(System.Drawing.Region, System.Drawing.Drawing2D.CombineMode)" argnames="region, combineMode" returntype="System.Void" />
+        <method name="IntersectClip(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="IntersectClip(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="IntersectClip(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="ExcludeClip(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="ExcludeClip(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="ResetClip" argnames="" returntype="System.Void" />
+        <method name="TranslateClip(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="TranslateClip(System.Int32, System.Int32)" argnames="dx, dy" returntype="System.Void" />
+        <method name="IsVisible(System.Int32, System.Int32)" argnames="x, y" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
+        <method name="IsVisible(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.PointF)" argnames="point" returntype="System.Boolean" />
+        <method name="IsVisible(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
+        <method name="IsVisible(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
+        <method name="Save" argnames="" returntype="System.Drawing.Drawing2D.GraphicsState" />
+        <method name="Restore(System.Drawing.Drawing2D.GraphicsState)" argnames="gstate" returntype="System.Void" />
+        <method name="BeginContainer(System.Drawing.RectangleF, System.Drawing.RectangleF, System.Drawing.GraphicsUnit)" argnames="dstrect, srcrect, unit" returntype="System.Drawing.Drawing2D.GraphicsContainer" />
+        <method name="BeginContainer" argnames="" returntype="System.Drawing.Drawing2D.GraphicsContainer" />
+        <method name="EndContainer(System.Drawing.Drawing2D.GraphicsContainer)" argnames="container" returntype="System.Void" />
+        <method name="BeginContainer(System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.GraphicsUnit)" argnames="dstrect, srcrect, unit" returntype="System.Drawing.Drawing2D.GraphicsContainer" />
+        <method name="AddMetafileComment(System.Byte[])" argnames="data" returntype="System.Void" />
+        <method name="GetHalftonePalette" argnames="" returntype="System.IntPtr" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Icon" namespace="System.Drawing">
+        <constructor name="Icon(System.String)" argnames="fileName" />
+        <constructor name="Icon(System.Drawing.Icon, System.Drawing.Size)" argnames="original, size" />
+        <constructor name="Icon(System.Drawing.Icon, System.Int32, System.Int32)" argnames="original, width, height" />
+        <constructor name="Icon(System.Type, System.String)" argnames="type, resource" />
+        <constructor name="Icon(System.IO.Stream)" argnames="stream" />
+        <constructor name="Icon(System.IO.Stream, System.Int32, System.Int32)" argnames="stream, width, height" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="Size" propertytype="System.Drawing.Size" />
+        <property name="Width" propertytype="System.Int32" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromHandle(System.IntPtr)" argnames="handle" returntype="System.Drawing.Icon" />
+        <method name="Save(System.IO.Stream)" argnames="outputStream" returntype="System.Void" />
+        <method name="ToBitmap" argnames="" returntype="System.Drawing.Bitmap" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Pen" namespace="System.Drawing">
+        <constructor name="Pen(System.Drawing.Color)" argnames="color" />
+        <constructor name="Pen(System.Drawing.Color, System.Single)" argnames="color, width" />
+        <constructor name="Pen(System.Drawing.Brush)" argnames="brush" />
+        <constructor name="Pen(System.Drawing.Brush, System.Single)" argnames="brush, width" />
+        <property name="Width" propertytype="System.Single" />
+        <property name="StartCap" propertytype="System.Drawing.Drawing2D.LineCap" />
+        <property name="EndCap" propertytype="System.Drawing.Drawing2D.LineCap" />
+        <property name="DashCap" propertytype="System.Drawing.Drawing2D.DashCap" />
+        <property name="LineJoin" propertytype="System.Drawing.Drawing2D.LineJoin" />
+        <property name="CustomStartCap" propertytype="System.Drawing.Drawing2D.CustomLineCap" />
+        <property name="CustomEndCap" propertytype="System.Drawing.Drawing2D.CustomLineCap" />
+        <property name="MiterLimit" propertytype="System.Single" />
+        <property name="Alignment" propertytype="System.Drawing.Drawing2D.PenAlignment" />
+        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
+        <property name="PenType" propertytype="System.Drawing.Drawing2D.PenType" />
+        <property name="Color" propertytype="System.Drawing.Color" />
+        <property name="Brush" propertytype="System.Drawing.Brush" />
+        <property name="DashStyle" propertytype="System.Drawing.Drawing2D.DashStyle" />
+        <property name="DashOffset" propertytype="System.Single" />
+        <property name="DashPattern" propertytype="System.Single[]" />
+        <property name="CompoundArray" propertytype="System.Single[]" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SetLineCap(System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.DashCap)" argnames="startCap, endCap, dashCap" returntype="System.Void" />
+        <method name="ResetTransform" argnames="" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
+        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
+        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SolidBrush" namespace="System.Drawing">
+        <constructor name="SolidBrush(System.Drawing.Color)" argnames="color" />
+        <property name="Color" propertytype="System.Drawing.Color" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorTranslator" namespace="System.Drawing">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ToWin32(System.Drawing.Color)" argnames="c" returntype="System.Int32" />
+        <method name="ToOle(System.Drawing.Color)" argnames="c" returntype="System.Int32" />
+        <method name="FromOle(System.Int32)" argnames="oleColor" returntype="System.Drawing.Color" />
+        <method name="FromWin32(System.Int32)" argnames="win32Color" returntype="System.Drawing.Color" />
+        <method name="FromHtml(System.String)" argnames="htmlColor" returntype="System.Drawing.Color" />
+        <method name="ToHtml(System.Drawing.Color)" argnames="c" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="USEROBJECTFLAGS" namespace="System.Drawing">
+        <constructor name="USEROBJECTFLAGS" argnames="" />
+        <field name="fInherit" />
+        <field name="fReserved" />
+        <field name="dwFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ENHMETAHEADER" namespace="System.Drawing">
+        <constructor name="ENHMETAHEADER" argnames="" />
+        <field name="iType" />
+        <field name="nSize" />
+        <field name="rclBounds_left" />
+        <field name="rclBounds_top" />
+        <field name="rclBounds_right" />
+        <field name="rclBounds_bottom" />
+        <field name="rclFrame_left" />
+        <field name="rclFrame_top" />
+        <field name="rclFrame_right" />
+        <field name="rclFrame_bottom" />
+        <field name="dSignature" />
+        <field name="nVersion" />
+        <field name="nBytes" />
+        <field name="nRecords" />
+        <field name="nHandles" />
+        <field name="sReserved" />
+        <field name="nDescription" />
+        <field name="offDescription" />
+        <field name="nPalEntries" />
+        <field name="szlDevice_cx" />
+        <field name="szlDevice_cy" />
+        <field name="szlMillimeters_cx" />
+        <field name="szlMillimeters_cy" />
+        <field name="cbPixelFormat" />
+        <field name="offPixelFormat" />
+        <field name="bOpenGL" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DOCINFO" namespace="System.Drawing">
+        <constructor name="DOCINFO" argnames="" />
+        <field name="cbSize" />
+        <field name="lpszDocName" />
+        <field name="lpszOutput" />
+        <field name="lpszDatatype" />
+        <field name="fwType" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PRINTDLG" namespace="System.Drawing">
+        <constructor name="PRINTDLG" argnames="" />
+        <field name="lStructSize" />
+        <field name="hwndOwner" />
+        <field name="hDevMode" />
+        <field name="hDevNames" />
+        <field name="hDC" />
+        <field name="Flags" />
+        <field name="nFromPage" />
+        <field name="nToPage" />
+        <field name="nMinPage" />
+        <field name="nMaxPage" />
+        <field name="nCopies" />
+        <field name="hInstance" />
+        <field name="lCustData" />
+        <field name="lpfnPrintHook" />
+        <field name="lpfnSetupHook" />
+        <field name="lpPrintTemplateName" />
+        <field name="lpSetupTemplateName" />
+        <field name="hPrintTemplate" />
+        <field name="hSetupTemplate" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PAGESETUPDLG" namespace="System.Drawing">
+        <constructor name="PAGESETUPDLG" argnames="" />
+        <field name="lStructSize" />
+        <field name="hwndOwner" />
+        <field name="hDevMode" />
+        <field name="hDevNames" />
+        <field name="Flags" />
+        <field name="paperSizeX" />
+        <field name="paperSizeY" />
+        <field name="minMarginLeft" />
+        <field name="minMarginTop" />
+        <field name="minMarginRight" />
+        <field name="minMarginBottom" />
+        <field name="marginLeft" />
+        <field name="marginTop" />
+        <field name="marginRight" />
+        <field name="marginBottom" />
+        <field name="hInstance" />
+        <field name="lCustData" />
+        <field name="lpfnPageSetupHook" />
+        <field name="lpfnPagePaintHook" />
+        <field name="lpPageSetupTemplateName" />
+        <field name="hPageSetupTemplate" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="COMRECT" namespace="System.Drawing">
+        <constructor name="COMRECT" argnames="" />
+        <constructor name="COMRECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
+        <field name="left" />
+        <field name="top" />
+        <field name="right" />
+        <field name="bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Drawing.SafeNativeMethods+COMRECT" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="POINT" namespace="System.Drawing">
+        <constructor name="POINT" argnames="" />
+        <constructor name="POINT(System.Int32, System.Int32)" argnames="x, y" />
+        <field name="x" />
+        <field name="y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ICONINFO" namespace="System.Drawing">
+        <constructor name="ICONINFO" argnames="" />
+        <field name="fIcon" />
+        <field name="xHotspot" />
+        <field name="yHotspot" />
+        <field name="hbmMask" />
+        <field name="hbmColor" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BITMAP" namespace="System.Drawing">
+        <constructor name="BITMAP" argnames="" />
+        <field name="bmType" />
+        <field name="bmWidth" />
+        <field name="bmHeight" />
+        <field name="bmWidthBytes" />
+        <field name="bmPlanes" />
+        <field name="bmBitsPixel" />
+        <field name="bmBits" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DIBSECTION" namespace="System.Drawing">
+        <constructor name="DIBSECTION" argnames="" />
+        <field name="dsBm" />
+        <field name="dsBmih" />
+        <field name="dsBitfields" />
+        <field name="dshSection" />
+        <field name="dsOffset" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BITMAPINFOHEADER" namespace="System.Drawing">
+        <constructor name="BITMAPINFOHEADER" argnames="" />
+        <field name="biSize" />
+        <field name="biWidth" />
+        <field name="biHeight" />
+        <field name="biPlanes" />
+        <field name="biBitCount" />
+        <field name="biCompression" />
+        <field name="biSizeImage" />
+        <field name="biXPelsPerMeter" />
+        <field name="biYPelsPerMeter" />
+        <field name="biClrUsed" />
+        <field name="biClrImportant" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LOGPEN" namespace="System.Drawing">
+        <constructor name="LOGPEN" argnames="" />
+        <field name="lopnStyle" />
+        <field name="lopnWidth_x" />
+        <field name="lopnWidth_y" />
+        <field name="lopnColor" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LOGBRUSH" namespace="System.Drawing">
+        <constructor name="LOGBRUSH" argnames="" />
+        <field name="lbStyle" />
+        <field name="lbColor" />
+        <field name="lbHatch" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LOGFONT" namespace="System.Drawing">
+        <constructor name="LOGFONT" argnames="" />
+        <field name="lfHeight" />
+        <field name="lfWidth" />
+        <field name="lfEscapement" />
+        <field name="lfOrientation" />
+        <field name="lfWeight" />
+        <field name="lfItalic" />
+        <field name="lfUnderline" />
+        <field name="lfStrikeOut" />
+        <field name="lfCharSet" />
+        <field name="lfOutPrecision" />
+        <field name="lfClipPrecision" />
+        <field name="lfQuality" />
+        <field name="lfPitchAndFamily" />
+        <field name="lfFaceName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PICTDESC" namespace="System.Drawing">
+        <constructor name="PICTDESC" argnames="" />
+        <field name="picType" />
+        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
+        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateBitmapPICTDESC(System.IntPtr, System.IntPtr)" argnames="hbitmap, hpal" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
+        <method name="CreateIconPICTDESC(System.IntPtr)" argnames="hicon" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
+        <method name="CreateEnhMetafilePICTDESC(System.IntPtr)" argnames="hEMF" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
+        <method name="CreateWinMetafilePICTDESC(System.IntPtr, System.Int32, System.Int32)" argnames="hmetafile, x, y" returntype="System.Drawing.SafeNativeMethods+PICTDESC" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Ole" namespace="System.Drawing">
+        <constructor name="Ole" argnames="" />
+        <field name="PICTYPE_UNINITIALIZED" />
+        <field name="PICTYPE_NONE" />
+        <field name="PICTYPE_BITMAP" />
+        <field name="PICTYPE_METAFILE" />
+        <field name="PICTYPE_ICON" />
+        <field name="PICTYPE_ENHMETAFILE" />
+        <field name="STATFLAG_DEFAULT" />
+        <field name="STATFLAG_NONAME" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DEVMODE" namespace="System.Drawing">
+        <constructor name="DEVMODE" argnames="" />
+        <field name="dmDeviceName" />
+        <field name="dmSpecVersion" />
+        <field name="dmDriverVersion" />
+        <field name="dmSize" />
+        <field name="dmDriverExtra" />
+        <field name="dmFields" />
+        <field name="dmOrientation" />
+        <field name="dmPaperSize" />
+        <field name="dmPaperLength" />
+        <field name="dmPaperWidth" />
+        <field name="dmScale" />
+        <field name="dmCopies" />
+        <field name="dmDefaultSource" />
+        <field name="dmPrintQuality" />
+        <field name="dmColor" />
+        <field name="dmDuplex" />
+        <field name="dmYResolution" />
+        <field name="dmTTOption" />
+        <field name="dmCollate" />
+        <field name="dmFormName" />
+        <field name="dmLogPixels" />
+        <field name="dmBitsPerPel" />
+        <field name="dmPelsWidth" />
+        <field name="dmPelsHeight" />
+        <field name="dmDisplayFlags" />
+        <field name="dmDisplayFrequency" />
+        <field name="dmICMMethod" />
+        <field name="dmICMIntent" />
+        <field name="dmMediaType" />
+        <field name="dmDitherType" />
+        <field name="dmICCManufacturer" />
+        <field name="dmICCModel" />
+        <field name="dmPanningWidth" />
+        <field name="dmPanningHeight" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CommonHandles" namespace="System.Drawing">
+        <constructor name="CommonHandles" argnames="" />
+        <field name="Accelerator" />
+        <field name="Cursor" />
+        <field name="EMF" />
+        <field name="Find" />
+        <field name="GDI" />
+        <field name="HDC" />
+        <field name="Icon" />
+        <field name="Kernel" />
+        <field name="Menu" />
+        <field name="Window" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HandleCollector" namespace="System.Drawing">
+        <constructor name="HandleCollector" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
+        <method name="RegisterType(System.String, System.Int32, System.Int32)" argnames="typeName, expense, initialThreshold" returntype="System.Int32" />
+        <method name="Remove(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="HandleAdded" />
+        <event name="HandleRemoved" />
+    </class>
+    <class name="StreamConsts" namespace="System.Drawing">
+        <constructor name="StreamConsts" argnames="" />
+        <field name="LOCK_WRITE" />
+        <field name="LOCK_EXCLUSIVE" />
+        <field name="LOCK_ONLYONCE" />
+        <field name="STATFLAG_DEFAULT" />
+        <field name="STATFLAG_NONAME" />
+        <field name="STATFLAG_NOOPEN" />
+        <field name="STGC_DEFAULT" />
+        <field name="STGC_OVERWRITE" />
+        <field name="STGC_ONLYIFCURRENT" />
+        <field name="STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE" />
+        <field name="STREAM_SEEK_SET" />
+        <field name="STREAM_SEEK_CUR" />
+        <field name="STREAM_SEEK_END" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageFormatConverter" namespace="System.Drawing">
+        <constructor name="ImageFormatConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TextureBrush" namespace="System.Drawing">
+        <constructor name="TextureBrush(System.Drawing.Image)" argnames="bitmap" />
+        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Drawing2D.WrapMode)" argnames="image, wrapMode" />
+        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Drawing2D.WrapMode, System.Drawing.RectangleF)" argnames="image, wrapMode, dstRect" />
+        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Drawing2D.WrapMode, System.Drawing.Rectangle)" argnames="image, wrapMode, dstRect" />
+        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.RectangleF)" argnames="image, dstRect" />
+        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.RectangleF, System.Drawing.Imaging.ImageAttributes)" argnames="image, dstRect, imageAttr" />
+        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Rectangle)" argnames="image, dstRect" />
+        <constructor name="TextureBrush(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.Imaging.ImageAttributes)" argnames="image, dstRect, imageAttr" />
+        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
+        <property name="WrapMode" propertytype="System.Drawing.Drawing2D.WrapMode" />
+        <property name="Image" propertytype="System.Drawing.Image" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ResetTransform" argnames="" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
+        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
+        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Font" namespace="System.Drawing">
+        <constructor name="Font(System.Drawing.Font, System.Drawing.FontStyle)" argnames="prototype, newStyle" />
+        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit)" argnames="family, emSize, style, unit" />
+        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte)" argnames="family, emSize, style, unit, gdiCharSet" />
+        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte, System.Boolean)" argnames="family, emSize, style, unit, gdiCharSet, gdiVerticalFont" />
+        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte)" argnames="familyName, emSize, style, unit, gdiCharSet" />
+        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit, System.Byte, System.Boolean)" argnames="familyName, emSize, style, unit, gdiCharSet, gdiVerticalFont" />
+        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.FontStyle)" argnames="family, emSize, style" />
+        <constructor name="Font(System.Drawing.FontFamily, System.Single, System.Drawing.GraphicsUnit)" argnames="family, emSize, unit" />
+        <constructor name="Font(System.Drawing.FontFamily, System.Single)" argnames="family, emSize" />
+        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle, System.Drawing.GraphicsUnit)" argnames="familyName, emSize, style, unit" />
+        <constructor name="Font(System.String, System.Single, System.Drawing.FontStyle)" argnames="familyName, emSize, style" />
+        <constructor name="Font(System.String, System.Single, System.Drawing.GraphicsUnit)" argnames="familyName, emSize, unit" />
+        <constructor name="Font(System.String, System.Single)" argnames="familyName, emSize" />
+        <property name="Bold" propertytype="System.Boolean" />
+        <property name="GdiCharSet" propertytype="System.Byte" />
+        <property name="GdiVerticalFont" propertytype="System.Boolean" />
+        <property name="Italic" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NativeFont" propertytype="System.IntPtr" />
+        <property name="Strikeout" propertytype="System.Boolean" />
+        <property name="Underline" propertytype="System.Boolean" />
+        <property name="FontFamily" propertytype="System.Drawing.FontFamily" />
+        <property name="Style" propertytype="System.Drawing.FontStyle" />
+        <property name="Size" propertytype="System.Single" />
+        <property name="SizeInPoints" propertytype="System.Single" />
+        <property name="Unit" propertytype="System.Drawing.GraphicsUnit" />
+        <property name="Height" propertytype="System.Int32" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromHfont(System.IntPtr)" argnames="hfont" returntype="System.Drawing.Font" />
+        <method name="FromLogFont(System.Object)" argnames="lf" returntype="System.Drawing.Font" />
+        <method name="FromLogFont(System.Object, System.IntPtr)" argnames="lf, hdc" returntype="System.Drawing.Font" />
+        <method name="FromHdc(System.IntPtr)" argnames="hdc" returntype="System.Drawing.Font" />
+        <method name="ToLogFont(System.Object)" argnames="logFont" returntype="System.Void" />
+        <method name="ToLogFont(System.Object, System.Drawing.Graphics)" argnames="logFont, graphics" returntype="System.Void" />
+        <method name="ToHfont" argnames="" returntype="System.IntPtr" />
+        <method name="GetHeight(System.Drawing.Graphics)" argnames="graphics" returntype="System.Single" />
+        <method name="GetHeight" argnames="" returntype="System.Single" />
+        <method name="GetHeight(System.Single)" argnames="dpi" returntype="System.Single" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FontFamily" namespace="System.Drawing">
+        <constructor name="FontFamily(System.String)" argnames="name" />
+        <constructor name="FontFamily(System.String, System.Drawing.Text.FontCollection)" argnames="name, fontCollection" />
+        <constructor name="FontFamily(System.Drawing.Text.GenericFontFamilies)" argnames="genericFamily" />
+        <property name="CurrentLanguage" propertytype="System.Int32" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Families" propertytype="System.Drawing.FontFamily[]" />
+        <property name="GenericSansSerif" propertytype="System.Drawing.FontFamily" />
+        <property name="GenericSerif" propertytype="System.Drawing.FontFamily" />
+        <property name="GenericMonospace" propertytype="System.Drawing.FontFamily" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetName(System.Int32)" argnames="language" returntype="System.String" />
+        <method name="GetFamilies(System.Drawing.Graphics)" argnames="graphics" returntype="System.Drawing.FontFamily[]" />
+        <method name="IsStyleAvailable(System.Drawing.FontStyle)" argnames="style" returntype="System.Boolean" />
+        <method name="GetEmHeight(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
+        <method name="GetCellAscent(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
+        <method name="GetCellDescent(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
+        <method name="GetLineSpacing(System.Drawing.FontStyle)" argnames="style" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StringFormat" namespace="System.Drawing">
+        <constructor name="StringFormat" argnames="" />
+        <constructor name="StringFormat(System.Drawing.StringFormatFlags)" argnames="options" />
+        <constructor name="StringFormat(System.Drawing.StringFormatFlags, System.Int32)" argnames="options, language" />
+        <constructor name="StringFormat(System.Drawing.StringFormat)" argnames="format" />
+        <property name="FormatFlags" propertytype="System.Drawing.StringFormatFlags" />
+        <property name="Alignment" propertytype="System.Drawing.StringAlignment" />
+        <property name="LineAlignment" propertytype="System.Drawing.StringAlignment" />
+        <property name="HotkeyPrefix" propertytype="System.Drawing.Text.HotkeyPrefix" />
+        <property name="Trimming" propertytype="System.Drawing.StringTrimming" />
+        <property name="GenericDefault" propertytype="System.Drawing.StringFormat" />
+        <property name="GenericTypographic" propertytype="System.Drawing.StringFormat" />
+        <property name="DigitSubstitutionMethod" propertytype="System.Drawing.StringDigitSubstitute" />
+        <property name="DigitSubstitutionLanguage" propertytype="System.Int32" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="SetMeasurableCharacterRanges(System.Drawing.CharacterRange[])" argnames="ranges" returntype="System.Void" />
+        <method name="SetTabStops(System.Single, System.Single[])" argnames="firstTabOffset, tabStops" returntype="System.Void" />
+        <method name="GetTabStops(System.Single&amp;)" argnames="firstTabOffset" returntype="System.Single[]" />
+        <method name="SetDigitSubstitution(System.Int32, System.Drawing.StringDigitSubstitute)" argnames="language, substitute" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IStream" namespace="System.Drawing">
+        <method name="Clone" argnames="" returntype="System.Drawing.UnsafeNativeMethods+IStream" />
+        <method name="Stat(System.IntPtr, System.Int32)" argnames="pStatstg, grfStatFlag" returntype="System.Void" />
+        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="Revert" argnames="" returntype="System.Void" />
+        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
+        <method name="CopyTo(System.Drawing.UnsafeNativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
+        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.Int32)" argnames="dlibMove, dwOrigin" returntype="System.Int64" />
+        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
+        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
+    </interface>
+    <interface name="IPicture" namespace="System.Drawing">
+        <method name="SetHdc(System.IntPtr)" argnames="hdc" returntype="System.Void" />
+        <method name="GetAttributes" argnames="" returntype="System.Int32" />
+        <method name="SaveAsFile(System.Drawing.UnsafeNativeMethods.IStream, System.Int32, System.Int32&amp;)" argnames="pstm, fSaveMemCopy, pcbSize" returntype="System.Int32" />
+        <method name="PictureChanged" argnames="" returntype="System.Void" />
+        <method name="SetKeepOriginalFormat(System.Boolean)" argnames="pfkeep" returntype="System.Void" />
+        <method name="GetKeepOriginalFormat" argnames="" returntype="System.Boolean" />
+        <method name="SelectPicture(System.IntPtr, System.Int32[], System.Int32[])" argnames="hdcIn, phdcOut, phbmpOut" returntype="System.Void" />
+        <method name="GetCurDC" argnames="" returntype="System.IntPtr" />
+        <method name="SetHPal(System.IntPtr)" argnames="phpal" returntype="System.Void" />
+        <method name="Render" argnames="" returntype="System.Void" />
+        <method name="GetHeight" argnames="" returntype="System.Int32" />
+        <method name="GetWidth" argnames="" returntype="System.Int32" />
+        <method name="GetPictureType" argnames="" returntype="System.Int16" />
+        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
+        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <struct name="Color" namespace="System.Drawing">
+        <field name="Empty" />
+        <property name="Transparent" propertytype="System.Drawing.Color" />
+        <property name="AliceBlue" propertytype="System.Drawing.Color" />
+        <property name="AntiqueWhite" propertytype="System.Drawing.Color" />
+        <property name="Aqua" propertytype="System.Drawing.Color" />
+        <property name="Aquamarine" propertytype="System.Drawing.Color" />
+        <property name="Azure" propertytype="System.Drawing.Color" />
+        <property name="Beige" propertytype="System.Drawing.Color" />
+        <property name="Bisque" propertytype="System.Drawing.Color" />
+        <property name="Black" propertytype="System.Drawing.Color" />
+        <property name="BlanchedAlmond" propertytype="System.Drawing.Color" />
+        <property name="Blue" propertytype="System.Drawing.Color" />
+        <property name="BlueViolet" propertytype="System.Drawing.Color" />
+        <property name="Brown" propertytype="System.Drawing.Color" />
+        <property name="BurlyWood" propertytype="System.Drawing.Color" />
+        <property name="CadetBlue" propertytype="System.Drawing.Color" />
+        <property name="Chartreuse" propertytype="System.Drawing.Color" />
+        <property name="Chocolate" propertytype="System.Drawing.Color" />
+        <property name="Coral" propertytype="System.Drawing.Color" />
+        <property name="CornflowerBlue" propertytype="System.Drawing.Color" />
+        <property name="Cornsilk" propertytype="System.Drawing.Color" />
+        <property name="Crimson" propertytype="System.Drawing.Color" />
+        <property name="Cyan" propertytype="System.Drawing.Color" />
+        <property name="DarkBlue" propertytype="System.Drawing.Color" />
+        <property name="DarkCyan" propertytype="System.Drawing.Color" />
+        <property name="DarkGoldenrod" propertytype="System.Drawing.Color" />
+        <property name="DarkGray" propertytype="System.Drawing.Color" />
+        <property name="DarkGreen" propertytype="System.Drawing.Color" />
+        <property name="DarkKhaki" propertytype="System.Drawing.Color" />
+        <property name="DarkMagenta" propertytype="System.Drawing.Color" />
+        <property name="DarkOliveGreen" propertytype="System.Drawing.Color" />
+        <property name="DarkOrange" propertytype="System.Drawing.Color" />
+        <property name="DarkOrchid" propertytype="System.Drawing.Color" />
+        <property name="DarkRed" propertytype="System.Drawing.Color" />
+        <property name="DarkSalmon" propertytype="System.Drawing.Color" />
+        <property name="DarkSeaGreen" propertytype="System.Drawing.Color" />
+        <property name="DarkSlateBlue" propertytype="System.Drawing.Color" />
+        <property name="DarkSlateGray" propertytype="System.Drawing.Color" />
+        <property name="DarkTurquoise" propertytype="System.Drawing.Color" />
+        <property name="DarkViolet" propertytype="System.Drawing.Color" />
+        <property name="DeepPink" propertytype="System.Drawing.Color" />
+        <property name="DeepSkyBlue" propertytype="System.Drawing.Color" />
+        <property name="DimGray" propertytype="System.Drawing.Color" />
+        <property name="DodgerBlue" propertytype="System.Drawing.Color" />
+        <property name="Firebrick" propertytype="System.Drawing.Color" />
+        <property name="FloralWhite" propertytype="System.Drawing.Color" />
+        <property name="ForestGreen" propertytype="System.Drawing.Color" />
+        <property name="Fuchsia" propertytype="System.Drawing.Color" />
+        <property name="Gainsboro" propertytype="System.Drawing.Color" />
+        <property name="GhostWhite" propertytype="System.Drawing.Color" />
+        <property name="Gold" propertytype="System.Drawing.Color" />
+        <property name="Goldenrod" propertytype="System.Drawing.Color" />
+        <property name="Gray" propertytype="System.Drawing.Color" />
+        <property name="Green" propertytype="System.Drawing.Color" />
+        <property name="GreenYellow" propertytype="System.Drawing.Color" />
+        <property name="Honeydew" propertytype="System.Drawing.Color" />
+        <property name="HotPink" propertytype="System.Drawing.Color" />
+        <property name="IndianRed" propertytype="System.Drawing.Color" />
+        <property name="Indigo" propertytype="System.Drawing.Color" />
+        <property name="Ivory" propertytype="System.Drawing.Color" />
+        <property name="Khaki" propertytype="System.Drawing.Color" />
+        <property name="Lavender" propertytype="System.Drawing.Color" />
+        <property name="LavenderBlush" propertytype="System.Drawing.Color" />
+        <property name="LawnGreen" propertytype="System.Drawing.Color" />
+        <property name="LemonChiffon" propertytype="System.Drawing.Color" />
+        <property name="LightBlue" propertytype="System.Drawing.Color" />
+        <property name="LightCoral" propertytype="System.Drawing.Color" />
+        <property name="LightCyan" propertytype="System.Drawing.Color" />
+        <property name="LightGoldenrodYellow" propertytype="System.Drawing.Color" />
+        <property name="LightGreen" propertytype="System.Drawing.Color" />
+        <property name="LightGray" propertytype="System.Drawing.Color" />
+        <property name="LightPink" propertytype="System.Drawing.Color" />
+        <property name="LightSalmon" propertytype="System.Drawing.Color" />
+        <property name="LightSeaGreen" propertytype="System.Drawing.Color" />
+        <property name="LightSkyBlue" propertytype="System.Drawing.Color" />
+        <property name="LightSlateGray" propertytype="System.Drawing.Color" />
+        <property name="LightSteelBlue" propertytype="System.Drawing.Color" />
+        <property name="LightYellow" propertytype="System.Drawing.Color" />
+        <property name="Lime" propertytype="System.Drawing.Color" />
+        <property name="LimeGreen" propertytype="System.Drawing.Color" />
+        <property name="Linen" propertytype="System.Drawing.Color" />
+        <property name="Magenta" propertytype="System.Drawing.Color" />
+        <property name="Maroon" propertytype="System.Drawing.Color" />
+        <property name="MediumAquamarine" propertytype="System.Drawing.Color" />
+        <property name="MediumBlue" propertytype="System.Drawing.Color" />
+        <property name="MediumOrchid" propertytype="System.Drawing.Color" />
+        <property name="MediumPurple" propertytype="System.Drawing.Color" />
+        <property name="MediumSeaGreen" propertytype="System.Drawing.Color" />
+        <property name="MediumSlateBlue" propertytype="System.Drawing.Color" />
+        <property name="MediumSpringGreen" propertytype="System.Drawing.Color" />
+        <property name="MediumTurquoise" propertytype="System.Drawing.Color" />
+        <property name="MediumVioletRed" propertytype="System.Drawing.Color" />
+        <property name="MidnightBlue" propertytype="System.Drawing.Color" />
+        <property name="MintCream" propertytype="System.Drawing.Color" />
+        <property name="MistyRose" propertytype="System.Drawing.Color" />
+        <property name="Moccasin" propertytype="System.Drawing.Color" />
+        <property name="NavajoWhite" propertytype="System.Drawing.Color" />
+        <property name="Navy" propertytype="System.Drawing.Color" />
+        <property name="OldLace" propertytype="System.Drawing.Color" />
+        <property name="Olive" propertytype="System.Drawing.Color" />
+        <property name="OliveDrab" propertytype="System.Drawing.Color" />
+        <property name="Orange" propertytype="System.Drawing.Color" />
+        <property name="OrangeRed" propertytype="System.Drawing.Color" />
+        <property name="Orchid" propertytype="System.Drawing.Color" />
+        <property name="PaleGoldenrod" propertytype="System.Drawing.Color" />
+        <property name="PaleGreen" propertytype="System.Drawing.Color" />
+        <property name="PaleTurquoise" propertytype="System.Drawing.Color" />
+        <property name="PaleVioletRed" propertytype="System.Drawing.Color" />
+        <property name="PapayaWhip" propertytype="System.Drawing.Color" />
+        <property name="PeachPuff" propertytype="System.Drawing.Color" />
+        <property name="Peru" propertytype="System.Drawing.Color" />
+        <property name="Pink" propertytype="System.Drawing.Color" />
+        <property name="Plum" propertytype="System.Drawing.Color" />
+        <property name="PowderBlue" propertytype="System.Drawing.Color" />
+        <property name="Purple" propertytype="System.Drawing.Color" />
+        <property name="Red" propertytype="System.Drawing.Color" />
+        <property name="RosyBrown" propertytype="System.Drawing.Color" />
+        <property name="RoyalBlue" propertytype="System.Drawing.Color" />
+        <property name="SaddleBrown" propertytype="System.Drawing.Color" />
+        <property name="Salmon" propertytype="System.Drawing.Color" />
+        <property name="SandyBrown" propertytype="System.Drawing.Color" />
+        <property name="SeaGreen" propertytype="System.Drawing.Color" />
+        <property name="SeaShell" propertytype="System.Drawing.Color" />
+        <property name="Sienna" propertytype="System.Drawing.Color" />
+        <property name="Silver" propertytype="System.Drawing.Color" />
+        <property name="SkyBlue" propertytype="System.Drawing.Color" />
+        <property name="SlateBlue" propertytype="System.Drawing.Color" />
+        <property name="SlateGray" propertytype="System.Drawing.Color" />
+        <property name="Snow" propertytype="System.Drawing.Color" />
+        <property name="SpringGreen" propertytype="System.Drawing.Color" />
+        <property name="SteelBlue" propertytype="System.Drawing.Color" />
+        <property name="Tan" propertytype="System.Drawing.Color" />
+        <property name="Teal" propertytype="System.Drawing.Color" />
+        <property name="Thistle" propertytype="System.Drawing.Color" />
+        <property name="Tomato" propertytype="System.Drawing.Color" />
+        <property name="Turquoise" propertytype="System.Drawing.Color" />
+        <property name="Violet" propertytype="System.Drawing.Color" />
+        <property name="Wheat" propertytype="System.Drawing.Color" />
+        <property name="White" propertytype="System.Drawing.Color" />
+        <property name="WhiteSmoke" propertytype="System.Drawing.Color" />
+        <property name="Yellow" propertytype="System.Drawing.Color" />
+        <property name="YellowGreen" propertytype="System.Drawing.Color" />
+        <property name="R" propertytype="System.Byte" />
+        <property name="G" propertytype="System.Byte" />
+        <property name="B" propertytype="System.Byte" />
+        <property name="A" propertytype="System.Byte" />
+        <property name="IsKnownColor" propertytype="System.Boolean" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="IsNamedColor" propertytype="System.Boolean" />
+        <property name="IsSystemColor" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Value" propertytype="System.Int64" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromArgb(System.Int32)" argnames="argb" returntype="System.Drawing.Color" />
+        <method name="FromArgb(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="alpha, red, green, blue" returntype="System.Drawing.Color" />
+        <method name="FromArgb(System.Int32, System.Drawing.Color)" argnames="alpha, baseColor" returntype="System.Drawing.Color" />
+        <method name="FromArgb(System.Int32, System.Int32, System.Int32)" argnames="red, green, blue" returntype="System.Drawing.Color" />
+        <method name="FromKnownColor(System.Drawing.KnownColor)" argnames="color" returntype="System.Drawing.Color" />
+        <method name="FromName(System.String)" argnames="name" returntype="System.Drawing.Color" />
+        <method name="GetBrightness" argnames="" returntype="System.Single" />
+        <method name="GetHue" argnames="" returntype="System.Single" />
+        <method name="GetSaturation" argnames="" returntype="System.Single" />
+        <method name="ToArgb" argnames="" returntype="System.Int32" />
+        <method name="ToKnownColor" argnames="" returntype="System.Drawing.KnownColor" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Equality(System.Drawing.Color, System.Drawing.Color)" argnames="left, right" />
+        <operator name="op_Inequality(System.Drawing.Color, System.Drawing.Color)" argnames="left, right" />
+    </struct>
+    <struct name="Point" namespace="System.Drawing">
+        <constructor name="Point(System.Int32, System.Int32)" argnames="x, y" />
+        <constructor name="Point(System.Drawing.Size)" argnames="sz" />
+        <constructor name="Point(System.Int32)" argnames="dw" />
+        <field name="Empty" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="X" propertytype="System.Int32" />
+        <property name="Y" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Ceiling(System.Drawing.PointF)" argnames="value" returntype="System.Drawing.Point" />
+        <method name="Truncate(System.Drawing.PointF)" argnames="value" returntype="System.Drawing.Point" />
+        <method name="Round(System.Drawing.PointF)" argnames="value" returntype="System.Drawing.Point" />
+        <method name="Offset(System.Int32, System.Int32)" argnames="dx, dy" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Drawing.Point)" argnames="p" />
+        <operator name="op_Explicit(System.Drawing.Point)" argnames="p" />
+        <operator name="op_Addition(System.Drawing.Point, System.Drawing.Size)" argnames="pt, sz" />
+        <operator name="op_Subtraction(System.Drawing.Point, System.Drawing.Size)" argnames="pt, sz" />
+        <operator name="op_Equality(System.Drawing.Point, System.Drawing.Point)" argnames="left, right" />
+        <operator name="op_Inequality(System.Drawing.Point, System.Drawing.Point)" argnames="left, right" />
+    </struct>
+    <struct name="Rectangle" namespace="System.Drawing">
+        <constructor name="Rectangle(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" />
+        <constructor name="Rectangle(System.Drawing.Point, System.Drawing.Size)" argnames="location, size" />
+        <field name="Empty" />
+        <property name="Location" propertytype="System.Drawing.Point" />
+        <property name="Size" propertytype="System.Drawing.Size" />
+        <property name="X" propertytype="System.Int32" />
+        <property name="Y" propertytype="System.Int32" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="Left" propertytype="System.Int32" />
+        <property name="Top" propertytype="System.Int32" />
+        <property name="Right" propertytype="System.Int32" />
+        <property name="Bottom" propertytype="System.Int32" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromLTRB(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" returntype="System.Drawing.Rectangle" />
+        <method name="Ceiling(System.Drawing.RectangleF)" argnames="value" returntype="System.Drawing.Rectangle" />
+        <method name="Truncate(System.Drawing.RectangleF)" argnames="value" returntype="System.Drawing.Rectangle" />
+        <method name="Round(System.Drawing.RectangleF)" argnames="value" returntype="System.Drawing.Rectangle" />
+        <method name="Contains(System.Int32, System.Int32)" argnames="x, y" returntype="System.Boolean" />
+        <method name="Contains(System.Drawing.Point)" argnames="pt" returntype="System.Boolean" />
+        <method name="Contains(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
+        <method name="Inflate(System.Int32, System.Int32)" argnames="width, height" returntype="System.Void" />
+        <method name="Inflate(System.Drawing.Size)" argnames="size" returntype="System.Void" />
+        <method name="Inflate(System.Drawing.Rectangle, System.Int32, System.Int32)" argnames="rect, x, y" returntype="System.Drawing.Rectangle" />
+        <method name="Intersect(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="Intersect(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="a, b" returntype="System.Drawing.Rectangle" />
+        <method name="IntersectsWith(System.Drawing.Rectangle)" argnames="rect" returntype="System.Boolean" />
+        <method name="Union(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="a, b" returntype="System.Drawing.Rectangle" />
+        <method name="Offset(System.Drawing.Point)" argnames="pos" returntype="System.Void" />
+        <method name="Offset(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Equality(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="left, right" />
+        <operator name="op_Inequality(System.Drawing.Rectangle, System.Drawing.Rectangle)" argnames="left, right" />
+    </struct>
+    <struct name="Size" namespace="System.Drawing">
+        <constructor name="Size(System.Drawing.Point)" argnames="pt" />
+        <constructor name="Size(System.Int32, System.Int32)" argnames="width, height" />
+        <field name="Empty" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Height" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Ceiling(System.Drawing.SizeF)" argnames="value" returntype="System.Drawing.Size" />
+        <method name="Truncate(System.Drawing.SizeF)" argnames="value" returntype="System.Drawing.Size" />
+        <method name="Round(System.Drawing.SizeF)" argnames="value" returntype="System.Drawing.Size" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Implicit(System.Drawing.Size)" argnames="p" />
+        <operator name="op_Addition(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
+        <operator name="op_Subtraction(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
+        <operator name="op_Equality(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
+        <operator name="op_Inequality(System.Drawing.Size, System.Drawing.Size)" argnames="sz1, sz2" />
+        <operator name="op_Explicit(System.Drawing.Size)" argnames="size" />
+    </struct>
+    <struct name="RECT" namespace="System.Drawing">
+        <constructor name="RECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
+        <field name="left" />
+        <field name="top" />
+        <field name="right" />
+        <field name="bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Drawing.SafeNativeMethods+RECT" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="MSG" namespace="System.Drawing">
+        <field name="hwnd" />
+        <field name="message" />
+        <field name="wParam" />
+        <field name="lParam" />
+        <field name="time" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="ICONDIR" namespace="System.Drawing">
+        <field name="idReserved" />
+        <field name="idType" />
+        <field name="idCount" />
+        <field name="idEntries" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="ICONDIRENTRY" namespace="System.Drawing">
+        <field name="bWidth" />
+        <field name="bHeight" />
+        <field name="bColorCount" />
+        <field name="bReserved" />
+        <field name="wPlanes" />
+        <field name="wBitCount" />
+        <field name="dwBytesInRes" />
+        <field name="dwImageOffset" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="PointF" namespace="System.Drawing">
+        <constructor name="PointF(System.Single, System.Single)" argnames="x, y" />
+        <field name="Empty" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="X" propertytype="System.Single" />
+        <property name="Y" propertytype="System.Single" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Addition(System.Drawing.PointF, System.Drawing.Size)" argnames="pt, sz" />
+        <operator name="op_Subtraction(System.Drawing.PointF, System.Drawing.Size)" argnames="pt, sz" />
+        <operator name="op_Equality(System.Drawing.PointF, System.Drawing.PointF)" argnames="left, right" />
+        <operator name="op_Inequality(System.Drawing.PointF, System.Drawing.PointF)" argnames="left, right" />
+    </struct>
+    <struct name="RectangleF" namespace="System.Drawing">
+        <constructor name="RectangleF(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" />
+        <constructor name="RectangleF(System.Drawing.PointF, System.Drawing.SizeF)" argnames="location, size" />
+        <field name="Empty" />
+        <property name="Location" propertytype="System.Drawing.PointF" />
+        <property name="Size" propertytype="System.Drawing.SizeF" />
+        <property name="X" propertytype="System.Single" />
+        <property name="Y" propertytype="System.Single" />
+        <property name="Width" propertytype="System.Single" />
+        <property name="Height" propertytype="System.Single" />
+        <property name="Left" propertytype="System.Single" />
+        <property name="Top" propertytype="System.Single" />
+        <property name="Right" propertytype="System.Single" />
+        <property name="Bottom" propertytype="System.Single" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromLTRB(System.Single, System.Single, System.Single, System.Single)" argnames="left, top, right, bottom" returntype="System.Drawing.RectangleF" />
+        <method name="Contains(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
+        <method name="Contains(System.Drawing.PointF)" argnames="pt" returntype="System.Boolean" />
+        <method name="Contains(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
+        <method name="Inflate(System.Single, System.Single)" argnames="x, y" returntype="System.Void" />
+        <method name="Inflate(System.Drawing.SizeF)" argnames="size" returntype="System.Void" />
+        <method name="Inflate(System.Drawing.RectangleF, System.Single, System.Single)" argnames="rect, x, y" returntype="System.Drawing.RectangleF" />
+        <method name="Intersect(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="Intersect(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="a, b" returntype="System.Drawing.RectangleF" />
+        <method name="IntersectsWith(System.Drawing.RectangleF)" argnames="rect" returntype="System.Boolean" />
+        <method name="Union(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="a, b" returntype="System.Drawing.RectangleF" />
+        <method name="Offset(System.Drawing.PointF)" argnames="pos" returntype="System.Void" />
+        <method name="Offset(System.Single, System.Single)" argnames="x, y" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Equality(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="left, right" />
+        <operator name="op_Inequality(System.Drawing.RectangleF, System.Drawing.RectangleF)" argnames="left, right" />
+        <operator name="op_Implicit(System.Drawing.Rectangle)" argnames="r" />
+    </struct>
+    <struct name="SizeF" namespace="System.Drawing">
+        <constructor name="SizeF(System.Drawing.SizeF)" argnames="size" />
+        <constructor name="SizeF(System.Drawing.PointF)" argnames="pt" />
+        <constructor name="SizeF(System.Single, System.Single)" argnames="width, height" />
+        <field name="Empty" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="Width" propertytype="System.Single" />
+        <property name="Height" propertytype="System.Single" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ToPointF" argnames="" returntype="System.Drawing.PointF" />
+        <method name="ToSize" argnames="" returntype="System.Drawing.Size" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Addition(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
+        <operator name="op_Subtraction(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
+        <operator name="op_Equality(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
+        <operator name="op_Inequality(System.Drawing.SizeF, System.Drawing.SizeF)" argnames="sz1, sz2" />
+        <operator name="op_Explicit(System.Drawing.SizeF)" argnames="size" />
+    </struct>
+    <struct name="CharacterRange" namespace="System.Drawing">
+        <constructor name="CharacterRange(System.Int32, System.Int32)" argnames="First, Length" />
+        <property name="First" propertytype="System.Int32" />
+        <property name="Length" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <delegate name="GetThumbnailImageAbort" namespace="System.Drawing">
+        <constructor name="GetThumbnailImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke" argnames="" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DrawImageAbort" namespace="System.Drawing">
+        <constructor name="DrawImageAbort(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.IntPtr, System.AsyncCallback, System.Object)" argnames="callbackdata, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr)" argnames="callbackdata" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="EnumerateMetafileProc" namespace="System.Drawing">
+        <constructor name="EnumerateMetafileProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback, System.AsyncCallback, System.Object)" argnames="recordType, flags, dataSize, data, callbackData, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.Drawing.Imaging.PlayRecordCallback)" argnames="recordType, flags, dataSize, data, callbackData" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="WndProc" namespace="System.Drawing">
+        <constructor name="WndProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
+        <method name="BeginInvoke(System.Int32, System.Int32, System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="hWnd, msg, wParam, lParam" returntype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="HandleChangeEventHandler" namespace="System.Drawing">
+        <constructor name="HandleChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.String, System.IntPtr, System.Int32, System.AsyncCallback, System.Object)" argnames="handleType, handleValue, currentHandleCount, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.String, System.IntPtr, System.Int32)" argnames="handleType, handleValue, currentHandleCount" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="ContentAlignment" namespace="System.Drawing">
+        <field name="TopLeft" />
+        <field name="TopCenter" />
+        <field name="TopRight" />
+        <field name="MiddleLeft" />
+        <field name="MiddleCenter" />
+        <field name="MiddleRight" />
+        <field name="BottomLeft" />
+        <field name="BottomCenter" />
+        <field name="BottomRight" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="KnownColor" namespace="System.Drawing">
+        <field name="ActiveBorder" />
+        <field name="ActiveCaption" />
+        <field name="ActiveCaptionText" />
+        <field name="AppWorkspace" />
+        <field name="Control" />
+        <field name="ControlDark" />
+        <field name="ControlDarkDark" />
+        <field name="ControlLight" />
+        <field name="ControlLightLight" />
+        <field name="ControlText" />
+        <field name="Desktop" />
+        <field name="GrayText" />
+        <field name="Highlight" />
+        <field name="HighlightText" />
+        <field name="HotTrack" />
+        <field name="InactiveBorder" />
+        <field name="InactiveCaption" />
+        <field name="InactiveCaptionText" />
+        <field name="Info" />
+        <field name="InfoText" />
+        <field name="Menu" />
+        <field name="MenuText" />
+        <field name="ScrollBar" />
+        <field name="Window" />
+        <field name="WindowFrame" />
+        <field name="WindowText" />
+        <field name="Transparent" />
+        <field name="AliceBlue" />
+        <field name="AntiqueWhite" />
+        <field name="Aqua" />
+        <field name="Aquamarine" />
+        <field name="Azure" />
+        <field name="Beige" />
+        <field name="Bisque" />
+        <field name="Black" />
+        <field name="BlanchedAlmond" />
+        <field name="Blue" />
+        <field name="BlueViolet" />
+        <field name="Brown" />
+        <field name="BurlyWood" />
+        <field name="CadetBlue" />
+        <field name="Chartreuse" />
+        <field name="Chocolate" />
+        <field name="Coral" />
+        <field name="CornflowerBlue" />
+        <field name="Cornsilk" />
+        <field name="Crimson" />
+        <field name="Cyan" />
+        <field name="DarkBlue" />
+        <field name="DarkCyan" />
+        <field name="DarkGoldenrod" />
+        <field name="DarkGray" />
+        <field name="DarkGreen" />
+        <field name="DarkKhaki" />
+        <field name="DarkMagenta" />
+        <field name="DarkOliveGreen" />
+        <field name="DarkOrange" />
+        <field name="DarkOrchid" />
+        <field name="DarkRed" />
+        <field name="DarkSalmon" />
+        <field name="DarkSeaGreen" />
+        <field name="DarkSlateBlue" />
+        <field name="DarkSlateGray" />
+        <field name="DarkTurquoise" />
+        <field name="DarkViolet" />
+        <field name="DeepPink" />
+        <field name="DeepSkyBlue" />
+        <field name="DimGray" />
+        <field name="DodgerBlue" />
+        <field name="Firebrick" />
+        <field name="FloralWhite" />
+        <field name="ForestGreen" />
+        <field name="Fuchsia" />
+        <field name="Gainsboro" />
+        <field name="GhostWhite" />
+        <field name="Gold" />
+        <field name="Goldenrod" />
+        <field name="Gray" />
+        <field name="Green" />
+        <field name="GreenYellow" />
+        <field name="Honeydew" />
+        <field name="HotPink" />
+        <field name="IndianRed" />
+        <field name="Indigo" />
+        <field name="Ivory" />
+        <field name="Khaki" />
+        <field name="Lavender" />
+        <field name="LavenderBlush" />
+        <field name="LawnGreen" />
+        <field name="LemonChiffon" />
+        <field name="LightBlue" />
+        <field name="LightCoral" />
+        <field name="LightCyan" />
+        <field name="LightGoldenrodYellow" />
+        <field name="LightGray" />
+        <field name="LightGreen" />
+        <field name="LightPink" />
+        <field name="LightSalmon" />
+        <field name="LightSeaGreen" />
+        <field name="LightSkyBlue" />
+        <field name="LightSlateGray" />
+        <field name="LightSteelBlue" />
+        <field name="LightYellow" />
+        <field name="Lime" />
+        <field name="LimeGreen" />
+        <field name="Linen" />
+        <field name="Magenta" />
+        <field name="Maroon" />
+        <field name="MediumAquamarine" />
+        <field name="MediumBlue" />
+        <field name="MediumOrchid" />
+        <field name="MediumPurple" />
+        <field name="MediumSeaGreen" />
+        <field name="MediumSlateBlue" />
+        <field name="MediumSpringGreen" />
+        <field name="MediumTurquoise" />
+        <field name="MediumVioletRed" />
+        <field name="MidnightBlue" />
+        <field name="MintCream" />
+        <field name="MistyRose" />
+        <field name="Moccasin" />
+        <field name="NavajoWhite" />
+        <field name="Navy" />
+        <field name="OldLace" />
+        <field name="Olive" />
+        <field name="OliveDrab" />
+        <field name="Orange" />
+        <field name="OrangeRed" />
+        <field name="Orchid" />
+        <field name="PaleGoldenrod" />
+        <field name="PaleGreen" />
+        <field name="PaleTurquoise" />
+        <field name="PaleVioletRed" />
+        <field name="PapayaWhip" />
+        <field name="PeachPuff" />
+        <field name="Peru" />
+        <field name="Pink" />
+        <field name="Plum" />
+        <field name="PowderBlue" />
+        <field name="Purple" />
+        <field name="Red" />
+        <field name="RosyBrown" />
+        <field name="RoyalBlue" />
+        <field name="SaddleBrown" />
+        <field name="Salmon" />
+        <field name="SandyBrown" />
+        <field name="SeaGreen" />
+        <field name="SeaShell" />
+        <field name="Sienna" />
+        <field name="Silver" />
+        <field name="SkyBlue" />
+        <field name="SlateBlue" />
+        <field name="SlateGray" />
+        <field name="Snow" />
+        <field name="SpringGreen" />
+        <field name="SteelBlue" />
+        <field name="Tan" />
+        <field name="Teal" />
+        <field name="Thistle" />
+        <field name="Tomato" />
+        <field name="Turquoise" />
+        <field name="Violet" />
+        <field name="Wheat" />
+        <field name="White" />
+        <field name="WhiteSmoke" />
+        <field name="Yellow" />
+        <field name="YellowGreen" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RotateFlipType" namespace="System.Drawing">
+        <field name="RotateNoneFlipNone" />
+        <field name="Rotate90FlipNone" />
+        <field name="Rotate180FlipNone" />
+        <field name="Rotate270FlipNone" />
+        <field name="RotateNoneFlipX" />
+        <field name="Rotate90FlipX" />
+        <field name="Rotate180FlipX" />
+        <field name="Rotate270FlipX" />
+        <field name="RotateNoneFlipY" />
+        <field name="Rotate90FlipY" />
+        <field name="Rotate180FlipY" />
+        <field name="Rotate270FlipY" />
+        <field name="RotateNoneFlipXY" />
+        <field name="Rotate90FlipXY" />
+        <field name="Rotate180FlipXY" />
+        <field name="Rotate270FlipXY" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FontStyle" namespace="System.Drawing">
+        <field name="Regular" />
+        <field name="Bold" />
+        <field name="Italic" />
+        <field name="Underline" />
+        <field name="Strikeout" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StructFormat" namespace="System.Drawing">
+        <field name="Ansi" />
+        <field name="Unicode" />
+        <field name="Auto" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StringAlignment" namespace="System.Drawing">
+        <field name="Near" />
+        <field name="Center" />
+        <field name="Far" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StringDigitSubstitute" namespace="System.Drawing">
+        <field name="User" />
+        <field name="None" />
+        <field name="National" />
+        <field name="Traditional" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StringFormatFlags" namespace="System.Drawing">
+        <field name="DirectionRightToLeft" />
+        <field name="DirectionVertical" />
+        <field name="FitBlackBox" />
+        <field name="DisplayFormatControl" />
+        <field name="NoFontFallback" />
+        <field name="MeasureTrailingSpaces" />
+        <field name="NoWrap" />
+        <field name="LineLimit" />
+        <field name="NoClip" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StringTrimming" namespace="System.Drawing">
+        <field name="None" />
+        <field name="Character" />
+        <field name="Word" />
+        <field name="EllipsisCharacter" />
+        <field name="EllipsisWord" />
+        <field name="EllipsisPath" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StringUnit" namespace="System.Drawing">
+        <field name="World" />
+        <field name="Display" />
+        <field name="Pixel" />
+        <field name="Point" />
+        <field name="Inch" />
+        <field name="Document" />
+        <field name="Millimeter" />
+        <field name="Em" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="GraphicsUnit" namespace="System.Drawing">
+        <field name="World" />
+        <field name="Display" />
+        <field name="Pixel" />
+        <field name="Point" />
+        <field name="Inch" />
+        <field name="Document" />
+        <field name="Millimeter" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="CustomLineCap" namespace="System.Drawing.Drawing2D">
+        <constructor name="CustomLineCap(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.GraphicsPath)" argnames="fillPath, strokePath" />
+        <constructor name="CustomLineCap(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.LineCap)" argnames="fillPath, strokePath, baseCap" />
+        <constructor name="CustomLineCap(System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.GraphicsPath, System.Drawing.Drawing2D.LineCap, System.Single)" argnames="fillPath, strokePath, baseCap, baseInset" />
+        <property name="StrokeJoin" propertytype="System.Drawing.Drawing2D.LineJoin" />
+        <property name="BaseCap" propertytype="System.Drawing.Drawing2D.LineCap" />
+        <property name="BaseInset" propertytype="System.Single" />
+        <property name="WidthScale" propertytype="System.Single" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SetStrokeCaps(System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.LineCap)" argnames="startCap, endCap" returntype="System.Void" />
+        <method name="GetStrokeCaps(System.Drawing.Drawing2D.LineCap&amp;, System.Drawing.Drawing2D.LineCap&amp;)" argnames="startCap, endCap" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AdjustableArrowCap" namespace="System.Drawing.Drawing2D">
+        <constructor name="AdjustableArrowCap(System.Single, System.Single)" argnames="width, height" />
+        <constructor name="AdjustableArrowCap(System.Single, System.Single, System.Boolean)" argnames="width, height, isFilled" />
+        <property name="Height" propertytype="System.Single" />
+        <property name="Width" propertytype="System.Single" />
+        <property name="MiddleInset" propertytype="System.Single" />
+        <property name="Filled" propertytype="System.Boolean" />
+        <property name="StrokeJoin" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Drawing.Drawing2D.LineJoin" />
+        <property name="BaseCap" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Drawing.Drawing2D.LineCap" />
+        <property name="BaseInset" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Single" />
+        <property name="WidthScale" inherited="System.Drawing.Drawing2D.CustomLineCap" propertytype="System.Single" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SetStrokeCaps(System.Drawing.Drawing2D.LineCap, System.Drawing.Drawing2D.LineCap)" argnames="startCap, endCap" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
+        <method name="GetStrokeCaps(System.Drawing.Drawing2D.LineCap&amp;, System.Drawing.Drawing2D.LineCap&amp;)" argnames="startCap, endCap" inherited="System.Drawing.Drawing2D.CustomLineCap" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Blend" namespace="System.Drawing.Drawing2D">
+        <constructor name="Blend" argnames="" />
+        <constructor name="Blend(System.Int32)" argnames="count" />
+        <property name="Factors" propertytype="System.Single[]" />
+        <property name="Positions" propertytype="System.Single[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorBlend" namespace="System.Drawing.Drawing2D">
+        <constructor name="ColorBlend" argnames="" />
+        <constructor name="ColorBlend(System.Int32)" argnames="count" />
+        <property name="Colors" propertytype="System.Drawing.Color[]" />
+        <property name="Positions" propertytype="System.Single[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GraphicsContainer" namespace="System.Drawing.Drawing2D">
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GraphicsPathIterator" namespace="System.Drawing.Drawing2D">
+        <constructor name="GraphicsPathIterator(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="SubpathCount" propertytype="System.Int32" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="NextSubpath(System.Int32&amp;, System.Int32&amp;, System.Boolean&amp;)" argnames="startIndex, endIndex, isClosed" returntype="System.Int32" />
+        <method name="NextSubpath(System.Drawing.Drawing2D.GraphicsPath, System.Boolean&amp;)" argnames="path, isClosed" returntype="System.Int32" />
+        <method name="NextPathType(System.Byte&amp;, System.Int32&amp;, System.Int32&amp;)" argnames="pathType, startIndex, endIndex" returntype="System.Int32" />
+        <method name="NextMarker(System.Int32&amp;, System.Int32&amp;)" argnames="startIndex, endIndex" returntype="System.Int32" />
+        <method name="NextMarker(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" returntype="System.Int32" />
+        <method name="HasCurve" argnames="" returntype="System.Boolean" />
+        <method name="Rewind" argnames="" returntype="System.Void" />
+        <method name="Enumerate(System.Drawing.PointF[]&amp;, System.Byte[]&amp;)" argnames="points, types" returntype="System.Int32" />
+        <method name="CopyData(System.Drawing.PointF[]&amp;, System.Byte[]&amp;, System.Int32, System.Int32)" argnames="points, types, startIndex, endIndex" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GraphicsState" namespace="System.Drawing.Drawing2D">
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HatchBrush" namespace="System.Drawing.Drawing2D">
+        <constructor name="HatchBrush(System.Drawing.Drawing2D.HatchStyle, System.Drawing.Color)" argnames="hatchstyle, foreColor" />
+        <constructor name="HatchBrush(System.Drawing.Drawing2D.HatchStyle, System.Drawing.Color, System.Drawing.Color)" argnames="hatchstyle, foreColor, backColor" />
+        <property name="HatchStyle" propertytype="System.Drawing.Drawing2D.HatchStyle" />
+        <property name="ForegroundColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundColor" propertytype="System.Drawing.Color" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LinearGradientBrush" namespace="System.Drawing.Drawing2D">
+        <constructor name="LinearGradientBrush(System.Drawing.PointF, System.Drawing.PointF, System.Drawing.Color, System.Drawing.Color)" argnames="point1, point2, color1, color2" />
+        <constructor name="LinearGradientBrush(System.Drawing.Point, System.Drawing.Point, System.Drawing.Color, System.Drawing.Color)" argnames="point1, point2, color1, color2" />
+        <constructor name="LinearGradientBrush(System.Drawing.RectangleF, System.Drawing.Color, System.Drawing.Color, System.Drawing.Drawing2D.LinearGradientMode)" argnames="rect, color1, color2, linearGradientMode" />
+        <constructor name="LinearGradientBrush(System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color, System.Drawing.Drawing2D.LinearGradientMode)" argnames="rect, color1, color2, linearGradientMode" />
+        <constructor name="LinearGradientBrush(System.Drawing.RectangleF, System.Drawing.Color, System.Drawing.Color, System.Single)" argnames="rect, color1, color2, angle" />
+        <constructor name="LinearGradientBrush(System.Drawing.RectangleF, System.Drawing.Color, System.Drawing.Color, System.Single, System.Boolean)" argnames="rect, color1, color2, angle, isAngleScaleable" />
+        <constructor name="LinearGradientBrush(System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color, System.Single)" argnames="rect, color1, color2, angle" />
+        <constructor name="LinearGradientBrush(System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color, System.Single, System.Boolean)" argnames="rect, color1, color2, angle, isAngleScaleable" />
+        <property name="LinearColors" propertytype="System.Drawing.Color[]" />
+        <property name="Rectangle" propertytype="System.Drawing.RectangleF" />
+        <property name="GammaCorrection" propertytype="System.Boolean" />
+        <property name="Blend" propertytype="System.Drawing.Drawing2D.Blend" />
+        <property name="InterpolationColors" propertytype="System.Drawing.Drawing2D.ColorBlend" />
+        <property name="WrapMode" propertytype="System.Drawing.Drawing2D.WrapMode" />
+        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SetSigmaBellShape(System.Single)" argnames="focus" returntype="System.Void" />
+        <method name="SetSigmaBellShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
+        <method name="SetBlendTriangularShape(System.Single)" argnames="focus" returntype="System.Void" />
+        <method name="SetBlendTriangularShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
+        <method name="ResetTransform" argnames="" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
+        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
+        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PathData" namespace="System.Drawing.Drawing2D">
+        <constructor name="PathData" argnames="" />
+        <property name="Points" propertytype="System.Drawing.PointF[]" />
+        <property name="Types" propertytype="System.Byte[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PathGradientBrush" namespace="System.Drawing.Drawing2D">
+        <constructor name="PathGradientBrush(System.Drawing.PointF[])" argnames="points" />
+        <constructor name="PathGradientBrush(System.Drawing.PointF[], System.Drawing.Drawing2D.WrapMode)" argnames="points, wrapMode" />
+        <constructor name="PathGradientBrush(System.Drawing.Point[])" argnames="points" />
+        <constructor name="PathGradientBrush(System.Drawing.Point[], System.Drawing.Drawing2D.WrapMode)" argnames="points, wrapMode" />
+        <constructor name="PathGradientBrush(System.Drawing.Drawing2D.GraphicsPath)" argnames="path" />
+        <property name="CenterColor" propertytype="System.Drawing.Color" />
+        <property name="SurroundColors" propertytype="System.Drawing.Color[]" />
+        <property name="CenterPoint" propertytype="System.Drawing.PointF" />
+        <property name="Rectangle" propertytype="System.Drawing.RectangleF" />
+        <property name="Blend" propertytype="System.Drawing.Drawing2D.Blend" />
+        <property name="InterpolationColors" propertytype="System.Drawing.Drawing2D.ColorBlend" />
+        <property name="Transform" propertytype="System.Drawing.Drawing2D.Matrix" />
+        <property name="FocusScales" propertytype="System.Drawing.PointF" />
+        <property name="WrapMode" propertytype="System.Drawing.Drawing2D.WrapMode" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Brush" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SetSigmaBellShape(System.Single)" argnames="focus" returntype="System.Void" />
+        <method name="SetSigmaBellShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
+        <method name="SetBlendTriangularShape(System.Single)" argnames="focus" returntype="System.Void" />
+        <method name="SetBlendTriangularShape(System.Single, System.Single)" argnames="focus, scale" returntype="System.Void" />
+        <method name="ResetTransform" argnames="" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="MultiplyTransform(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="TranslateTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="dx, dy, order" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single)" argnames="sx, sy" returntype="System.Void" />
+        <method name="ScaleTransform(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="sx, sy, order" returntype="System.Void" />
+        <method name="RotateTransform(System.Single)" argnames="angle" returntype="System.Void" />
+        <method name="RotateTransform(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RegionData" namespace="System.Drawing.Drawing2D">
+        <property name="Data" propertytype="System.Byte[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GraphicsPath" namespace="System.Drawing.Drawing2D">
+        <constructor name="GraphicsPath" argnames="" />
+        <constructor name="GraphicsPath(System.Drawing.Drawing2D.FillMode)" argnames="fillMode" />
+        <constructor name="GraphicsPath(System.Drawing.PointF[], System.Byte[])" argnames="pts, types" />
+        <constructor name="GraphicsPath(System.Drawing.PointF[], System.Byte[], System.Drawing.Drawing2D.FillMode)" argnames="pts, types, fillMode" />
+        <constructor name="GraphicsPath(System.Drawing.Point[], System.Byte[])" argnames="pts, types" />
+        <constructor name="GraphicsPath(System.Drawing.Point[], System.Byte[], System.Drawing.Drawing2D.FillMode)" argnames="pts, types, fillMode" />
+        <property name="FillMode" propertytype="System.Drawing.Drawing2D.FillMode" />
+        <property name="PathData" propertytype="System.Drawing.Drawing2D.PathData" />
+        <property name="PointCount" propertytype="System.Int32" />
+        <property name="PathTypes" propertytype="System.Byte[]" />
+        <property name="PathPoints" propertytype="System.Drawing.PointF[]" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="StartFigure" argnames="" returntype="System.Void" />
+        <method name="CloseFigure" argnames="" returntype="System.Void" />
+        <method name="CloseAllFigures" argnames="" returntype="System.Void" />
+        <method name="SetMarkers" argnames="" returntype="System.Void" />
+        <method name="ClearMarkers" argnames="" returntype="System.Void" />
+        <method name="Reverse" argnames="" returntype="System.Void" />
+        <method name="GetLastPoint" argnames="" returntype="System.Drawing.PointF" />
+        <method name="IsVisible(System.Single, System.Single)" argnames="x, y" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.PointF)" argnames="point" returntype="System.Boolean" />
+        <method name="IsVisible(System.Single, System.Single, System.Drawing.Graphics)" argnames="x, y, graphics" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.PointF, System.Drawing.Graphics)" argnames="pt, graphics" returntype="System.Boolean" />
+        <method name="IsVisible(System.Int32, System.Int32)" argnames="x, y" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Point)" argnames="point" returntype="System.Boolean" />
+        <method name="IsVisible(System.Int32, System.Int32, System.Drawing.Graphics)" argnames="x, y, graphics" returntype="System.Boolean" />
+        <method name="IsVisible(System.Drawing.Point, System.Drawing.Graphics)" argnames="pt, graphics" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Single, System.Single, System.Drawing.Pen)" argnames="x, y, pen" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Drawing.PointF, System.Drawing.Pen)" argnames="point, pen" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Single, System.Single, System.Drawing.Pen, System.Drawing.Graphics)" argnames="x, y, pen, graphics" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Drawing.PointF, System.Drawing.Pen, System.Drawing.Graphics)" argnames="pt, pen, graphics" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Int32, System.Int32, System.Drawing.Pen)" argnames="x, y, pen" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Drawing.Point, System.Drawing.Pen)" argnames="point, pen" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Int32, System.Int32, System.Drawing.Pen, System.Drawing.Graphics)" argnames="x, y, pen, graphics" returntype="System.Boolean" />
+        <method name="IsOutlineVisible(System.Drawing.Point, System.Drawing.Pen, System.Drawing.Graphics)" argnames="pt, pen, graphics" returntype="System.Boolean" />
+        <method name="AddLine(System.Drawing.PointF, System.Drawing.PointF)" argnames="pt1, pt2" returntype="System.Void" />
+        <method name="AddLine(System.Single, System.Single, System.Single, System.Single)" argnames="x1, y1, x2, y2" returntype="System.Void" />
+        <method name="AddLines(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
+        <method name="AddLine(System.Drawing.Point, System.Drawing.Point)" argnames="pt1, pt2" returntype="System.Void" />
+        <method name="AddLine(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x1, y1, x2, y2" returntype="System.Void" />
+        <method name="AddLines(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
+        <method name="AddArc(System.Drawing.RectangleF, System.Single, System.Single)" argnames="rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="AddArc(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="AddArc(System.Drawing.Rectangle, System.Single, System.Single)" argnames="rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="AddArc(System.Int32, System.Int32, System.Int32, System.Int32, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="AddBezier(System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF, System.Drawing.PointF)" argnames="pt1, pt2, pt3, pt4" returntype="System.Void" />
+        <method name="AddBezier(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="x1, y1, x2, y2, x3, y3, x4, y4" returntype="System.Void" />
+        <method name="AddBeziers(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
+        <method name="AddBezier(System.Drawing.Point, System.Drawing.Point, System.Drawing.Point, System.Drawing.Point)" argnames="pt1, pt2, pt3, pt4" returntype="System.Void" />
+        <method name="AddBezier(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x1, y1, x2, y2, x3, y3, x4, y4" returntype="System.Void" />
+        <method name="AddBeziers(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
+        <method name="AddCurve(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
+        <method name="AddCurve(System.Drawing.PointF[], System.Single)" argnames="points, tension" returntype="System.Void" />
+        <method name="AddCurve(System.Drawing.PointF[], System.Int32, System.Int32, System.Single)" argnames="points, offset, numberOfSegments, tension" returntype="System.Void" />
+        <method name="AddCurve(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
+        <method name="AddCurve(System.Drawing.Point[], System.Single)" argnames="points, tension" returntype="System.Void" />
+        <method name="AddCurve(System.Drawing.Point[], System.Int32, System.Int32, System.Single)" argnames="points, offset, numberOfSegments, tension" returntype="System.Void" />
+        <method name="AddClosedCurve(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
+        <method name="AddClosedCurve(System.Drawing.PointF[], System.Single)" argnames="points, tension" returntype="System.Void" />
+        <method name="AddClosedCurve(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
+        <method name="AddClosedCurve(System.Drawing.Point[], System.Single)" argnames="points, tension" returntype="System.Void" />
+        <method name="AddRectangle(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="AddRectangles(System.Drawing.RectangleF[])" argnames="rects" returntype="System.Void" />
+        <method name="AddRectangle(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="AddRectangles(System.Drawing.Rectangle[])" argnames="rects" returntype="System.Void" />
+        <method name="AddEllipse(System.Drawing.RectangleF)" argnames="rect" returntype="System.Void" />
+        <method name="AddEllipse(System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height" returntype="System.Void" />
+        <method name="AddEllipse(System.Drawing.Rectangle)" argnames="rect" returntype="System.Void" />
+        <method name="AddEllipse(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
+        <method name="AddPie(System.Drawing.Rectangle, System.Single, System.Single)" argnames="rect, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="AddPie(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="AddPie(System.Int32, System.Int32, System.Int32, System.Int32, System.Single, System.Single)" argnames="x, y, width, height, startAngle, sweepAngle" returntype="System.Void" />
+        <method name="AddPolygon(System.Drawing.PointF[])" argnames="points" returntype="System.Void" />
+        <method name="AddPolygon(System.Drawing.Point[])" argnames="points" returntype="System.Void" />
+        <method name="AddPath(System.Drawing.Drawing2D.GraphicsPath, System.Boolean)" argnames="addingPath, connect" returntype="System.Void" />
+        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.PointF, System.Drawing.StringFormat)" argnames="s, family, style, emSize, origin, format" returntype="System.Void" />
+        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.Point, System.Drawing.StringFormat)" argnames="s, family, style, emSize, origin, format" returntype="System.Void" />
+        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="s, family, style, emSize, layoutRect, format" returntype="System.Void" />
+        <method name="AddString(System.String, System.Drawing.FontFamily, System.Int32, System.Single, System.Drawing.Rectangle, System.Drawing.StringFormat)" argnames="s, family, style, emSize, layoutRect, format" returntype="System.Void" />
+        <method name="Transform(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="GetBounds" argnames="" returntype="System.Drawing.RectangleF" />
+        <method name="GetBounds(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Drawing.RectangleF" />
+        <method name="GetBounds(System.Drawing.Drawing2D.Matrix, System.Drawing.Pen)" argnames="matrix, pen" returntype="System.Drawing.RectangleF" />
+        <method name="Flatten" argnames="" returntype="System.Void" />
+        <method name="Flatten(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="Flatten(System.Drawing.Drawing2D.Matrix, System.Single)" argnames="matrix, flatness" returntype="System.Void" />
+        <method name="Widen(System.Drawing.Pen)" argnames="pen" returntype="System.Void" />
+        <method name="Widen(System.Drawing.Pen, System.Drawing.Drawing2D.Matrix)" argnames="pen, matrix" returntype="System.Void" />
+        <method name="Widen(System.Drawing.Pen, System.Drawing.Drawing2D.Matrix, System.Single)" argnames="pen, matrix, flatness" returntype="System.Void" />
+        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF)" argnames="destPoints, srcRect" returntype="System.Void" />
+        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.Drawing2D.Matrix)" argnames="destPoints, srcRect, matrix" returntype="System.Void" />
+        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.WarpMode)" argnames="destPoints, srcRect, matrix, warpMode" returntype="System.Void" />
+        <method name="Warp(System.Drawing.PointF[], System.Drawing.RectangleF, System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.WarpMode, System.Single)" argnames="destPoints, srcRect, matrix, warpMode, flatness" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Matrix" namespace="System.Drawing.Drawing2D">
+        <constructor name="Matrix" argnames="" />
+        <constructor name="Matrix(System.Single, System.Single, System.Single, System.Single, System.Single, System.Single)" argnames="m11, m12, m21, m22, dx, dy" />
+        <constructor name="Matrix(System.Drawing.RectangleF, System.Drawing.PointF[])" argnames="rect, plgpts" />
+        <constructor name="Matrix(System.Drawing.Rectangle, System.Drawing.Point[])" argnames="rect, plgpts" />
+        <property name="Elements" propertytype="System.Single[]" />
+        <property name="OffsetX" propertytype="System.Single" />
+        <property name="OffsetY" propertytype="System.Single" />
+        <property name="IsInvertible" propertytype="System.Boolean" />
+        <property name="IsIdentity" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Clone" argnames="" returntype="System.Drawing.Drawing2D.Matrix" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Multiply(System.Drawing.Drawing2D.Matrix)" argnames="matrix" returntype="System.Void" />
+        <method name="Multiply(System.Drawing.Drawing2D.Matrix, System.Drawing.Drawing2D.MatrixOrder)" argnames="matrix, order" returntype="System.Void" />
+        <method name="Translate(System.Single, System.Single)" argnames="offsetX, offsetY" returntype="System.Void" />
+        <method name="Translate(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="offsetX, offsetY, order" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="scaleX, scaleY" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="scaleX, scaleY, order" returntype="System.Void" />
+        <method name="Rotate(System.Single)" argnames="angle" returntype="System.Void" />
+        <method name="Rotate(System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, order" returntype="System.Void" />
+        <method name="RotateAt(System.Single, System.Drawing.PointF)" argnames="angle, point" returntype="System.Void" />
+        <method name="RotateAt(System.Single, System.Drawing.PointF, System.Drawing.Drawing2D.MatrixOrder)" argnames="angle, point, order" returntype="System.Void" />
+        <method name="Shear(System.Single, System.Single)" argnames="shearX, shearY" returntype="System.Void" />
+        <method name="Shear(System.Single, System.Single, System.Drawing.Drawing2D.MatrixOrder)" argnames="shearX, shearY, order" returntype="System.Void" />
+        <method name="Invert" argnames="" returntype="System.Void" />
+        <method name="TransformPoints(System.Drawing.PointF[])" argnames="pts" returntype="System.Void" />
+        <method name="TransformPoints(System.Drawing.Point[])" argnames="pts" returntype="System.Void" />
+        <method name="TransformVectors(System.Drawing.PointF[])" argnames="pts" returntype="System.Void" />
+        <method name="VectorTransformPoints(System.Drawing.Point[])" argnames="pts" returntype="System.Void" />
+        <method name="TransformVectors(System.Drawing.Point[])" argnames="pts" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="DashCap" namespace="System.Drawing.Drawing2D">
+        <field name="Flat" />
+        <field name="Round" />
+        <field name="Triangle" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CombineMode" namespace="System.Drawing.Drawing2D">
+        <field name="Replace" />
+        <field name="Intersect" />
+        <field name="Union" />
+        <field name="Xor" />
+        <field name="Exclude" />
+        <field name="Complement" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CompositingMode" namespace="System.Drawing.Drawing2D">
+        <field name="SourceOver" />
+        <field name="SourceCopy" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CompositingQuality" namespace="System.Drawing.Drawing2D">
+        <field name="Invalid" />
+        <field name="Default" />
+        <field name="HighSpeed" />
+        <field name="HighQuality" />
+        <field name="GammaCorrected" />
+        <field name="AssumeLinear" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CoordinateSpace" namespace="System.Drawing.Drawing2D">
+        <field name="World" />
+        <field name="Page" />
+        <field name="Device" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DashStyle" namespace="System.Drawing.Drawing2D">
+        <field name="Solid" />
+        <field name="Dash" />
+        <field name="Dot" />
+        <field name="DashDot" />
+        <field name="DashDotDot" />
+        <field name="Custom" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FillMode" namespace="System.Drawing.Drawing2D">
+        <field name="Alternate" />
+        <field name="Winding" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FlushIntention" namespace="System.Drawing.Drawing2D">
+        <field name="Flush" />
+        <field name="Sync" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="HatchStyle" namespace="System.Drawing.Drawing2D">
+        <field name="Horizontal" />
+        <field name="Vertical" />
+        <field name="ForwardDiagonal" />
+        <field name="BackwardDiagonal" />
+        <field name="Cross" />
+        <field name="DiagonalCross" />
+        <field name="Percent05" />
+        <field name="Percent10" />
+        <field name="Percent20" />
+        <field name="Percent25" />
+        <field name="Percent30" />
+        <field name="Percent40" />
+        <field name="Percent50" />
+        <field name="Percent60" />
+        <field name="Percent70" />
+        <field name="Percent75" />
+        <field name="Percent80" />
+        <field name="Percent90" />
+        <field name="LightDownwardDiagonal" />
+        <field name="LightUpwardDiagonal" />
+        <field name="DarkDownwardDiagonal" />
+        <field name="DarkUpwardDiagonal" />
+        <field name="WideDownwardDiagonal" />
+        <field name="WideUpwardDiagonal" />
+        <field name="LightVertical" />
+        <field name="LightHorizontal" />
+        <field name="NarrowVertical" />
+        <field name="NarrowHorizontal" />
+        <field name="DarkVertical" />
+        <field name="DarkHorizontal" />
+        <field name="DashedDownwardDiagonal" />
+        <field name="DashedUpwardDiagonal" />
+        <field name="DashedHorizontal" />
+        <field name="DashedVertical" />
+        <field name="SmallConfetti" />
+        <field name="LargeConfetti" />
+        <field name="ZigZag" />
+        <field name="Wave" />
+        <field name="DiagonalBrick" />
+        <field name="HorizontalBrick" />
+        <field name="Weave" />
+        <field name="Plaid" />
+        <field name="Divot" />
+        <field name="DottedGrid" />
+        <field name="DottedDiamond" />
+        <field name="Shingle" />
+        <field name="Trellis" />
+        <field name="Sphere" />
+        <field name="SmallGrid" />
+        <field name="SmallCheckerBoard" />
+        <field name="LargeCheckerBoard" />
+        <field name="OutlinedDiamond" />
+        <field name="SolidDiamond" />
+        <field name="LargeGrid" />
+        <field name="Min" />
+        <field name="Max" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="InterpolationMode" namespace="System.Drawing.Drawing2D">
+        <field name="Invalid" />
+        <field name="Default" />
+        <field name="Low" />
+        <field name="High" />
+        <field name="Bilinear" />
+        <field name="Bicubic" />
+        <field name="NearestNeighbor" />
+        <field name="HighQualityBilinear" />
+        <field name="HighQualityBicubic" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LinearGradientMode" namespace="System.Drawing.Drawing2D">
+        <field name="Horizontal" />
+        <field name="Vertical" />
+        <field name="ForwardDiagonal" />
+        <field name="BackwardDiagonal" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LineCap" namespace="System.Drawing.Drawing2D">
+        <field name="Flat" />
+        <field name="Square" />
+        <field name="Round" />
+        <field name="Triangle" />
+        <field name="NoAnchor" />
+        <field name="SquareAnchor" />
+        <field name="RoundAnchor" />
+        <field name="DiamondAnchor" />
+        <field name="ArrowAnchor" />
+        <field name="Custom" />
+        <field name="AnchorMask" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LineJoin" namespace="System.Drawing.Drawing2D">
+        <field name="Miter" />
+        <field name="Bevel" />
+        <field name="Round" />
+        <field name="MiterClipped" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MatrixOrder" namespace="System.Drawing.Drawing2D">
+        <field name="Prepend" />
+        <field name="Append" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PathPointType" namespace="System.Drawing.Drawing2D">
+        <field name="Start" />
+        <field name="Line" />
+        <field name="Bezier" />
+        <field name="PathTypeMask" />
+        <field name="DashMode" />
+        <field name="PathMarker" />
+        <field name="CloseSubpath" />
+        <field name="Bezier3" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PenAlignment" namespace="System.Drawing.Drawing2D">
+        <field name="Center" />
+        <field name="Inset" />
+        <field name="Outset" />
+        <field name="Left" />
+        <field name="Right" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PenType" namespace="System.Drawing.Drawing2D">
+        <field name="SolidColor" />
+        <field name="HatchFill" />
+        <field name="TextureFill" />
+        <field name="PathGradient" />
+        <field name="LinearGradient" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PixelOffsetMode" namespace="System.Drawing.Drawing2D">
+        <field name="Invalid" />
+        <field name="Default" />
+        <field name="HighSpeed" />
+        <field name="HighQuality" />
+        <field name="None" />
+        <field name="Half" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="QualityMode" namespace="System.Drawing.Drawing2D">
+        <field name="Invalid" />
+        <field name="Default" />
+        <field name="Low" />
+        <field name="High" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SmoothingMode" namespace="System.Drawing.Drawing2D">
+        <field name="Invalid" />
+        <field name="Default" />
+        <field name="HighSpeed" />
+        <field name="HighQuality" />
+        <field name="None" />
+        <field name="AntiAlias" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="WarpMode" namespace="System.Drawing.Drawing2D">
+        <field name="Perspective" />
+        <field name="Bilinear" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="WrapMode" namespace="System.Drawing.Drawing2D">
+        <field name="Tile" />
+        <field name="TileFlipX" />
+        <field name="TileFlipY" />
+        <field name="TileFlipXY" />
+        <field name="Clamp" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="BitmapData" namespace="System.Drawing.Imaging">
+        <constructor name="BitmapData" argnames="" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="Stride" propertytype="System.Int32" />
+        <property name="PixelFormat" propertytype="System.Drawing.Imaging.PixelFormat" />
+        <property name="Scan0" propertytype="System.IntPtr" />
+        <property name="Reserved" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorMap" namespace="System.Drawing.Imaging">
+        <constructor name="ColorMap" argnames="" />
+        <property name="OldColor" propertytype="System.Drawing.Color" />
+        <property name="NewColor" propertytype="System.Drawing.Color" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorMatrix" namespace="System.Drawing.Imaging">
+        <constructor name="ColorMatrix" argnames="" />
+        <constructor name="ColorMatrix(System.Single[][])" argnames="newColorMatrix" />
+        <property name="Matrix00" propertytype="System.Single" />
+        <property name="Matrix01" propertytype="System.Single" />
+        <property name="Matrix02" propertytype="System.Single" />
+        <property name="Matrix03" propertytype="System.Single" />
+        <property name="Matrix04" propertytype="System.Single" />
+        <property name="Matrix10" propertytype="System.Single" />
+        <property name="Matrix11" propertytype="System.Single" />
+        <property name="Matrix12" propertytype="System.Single" />
+        <property name="Matrix13" propertytype="System.Single" />
+        <property name="Matrix14" propertytype="System.Single" />
+        <property name="Matrix20" propertytype="System.Single" />
+        <property name="Matrix21" propertytype="System.Single" />
+        <property name="Matrix22" propertytype="System.Single" />
+        <property name="Matrix23" propertytype="System.Single" />
+        <property name="Matrix24" propertytype="System.Single" />
+        <property name="Matrix30" propertytype="System.Single" />
+        <property name="Matrix31" propertytype="System.Single" />
+        <property name="Matrix32" propertytype="System.Single" />
+        <property name="Matrix33" propertytype="System.Single" />
+        <property name="Matrix34" propertytype="System.Single" />
+        <property name="Matrix40" propertytype="System.Single" />
+        <property name="Matrix41" propertytype="System.Single" />
+        <property name="Matrix42" propertytype="System.Single" />
+        <property name="Matrix43" propertytype="System.Single" />
+        <property name="Matrix44" propertytype="System.Single" />
+        <property name="Item" propertytype="System.Single" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorPalette" namespace="System.Drawing.Imaging">
+        <property name="Flags" propertytype="System.Int32" />
+        <property name="Entries" propertytype="System.Drawing.Color[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Encoder" namespace="System.Drawing.Imaging">
+        <constructor name="Encoder(System.Guid)" argnames="guid" />
+        <field name="Compression" />
+        <field name="ColorDepth" />
+        <field name="ScanMethod" />
+        <field name="Version" />
+        <field name="RenderMethod" />
+        <field name="Quality" />
+        <field name="Transformation" />
+        <field name="LuminanceTable" />
+        <field name="ChrominanceTable" />
+        <field name="SaveFlag" />
+        <property name="Guid" propertytype="System.Guid" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EncoderParameters" namespace="System.Drawing.Imaging">
+        <constructor name="EncoderParameters(System.Int32)" argnames="count" />
+        <constructor name="EncoderParameters" argnames="" />
+        <property name="Param" propertytype="System.Drawing.Imaging.EncoderParameter[]" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FrameDimension" namespace="System.Drawing.Imaging">
+        <constructor name="FrameDimension(System.Guid)" argnames="guid" />
+        <property name="Guid" propertytype="System.Guid" />
+        <property name="Time" propertytype="System.Drawing.Imaging.FrameDimension" />
+        <property name="Resolution" propertytype="System.Drawing.Imaging.FrameDimension" />
+        <property name="Page" propertytype="System.Drawing.Imaging.FrameDimension" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageCodecInfo" namespace="System.Drawing.Imaging">
+        <property name="Clsid" propertytype="System.Guid" />
+        <property name="FormatID" propertytype="System.Guid" />
+        <property name="CodecName" propertytype="System.String" />
+        <property name="DllName" propertytype="System.String" />
+        <property name="FormatDescription" propertytype="System.String" />
+        <property name="FilenameExtension" propertytype="System.String" />
+        <property name="MimeType" propertytype="System.String" />
+        <property name="Flags" propertytype="System.Drawing.Imaging.ImageCodecFlags" />
+        <property name="Version" propertytype="System.Int32" />
+        <property name="SignaturePatterns" propertytype="System.Byte[][]" />
+        <property name="SignatureMasks" propertytype="System.Byte[][]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetImageDecoders" argnames="" returntype="System.Drawing.Imaging.ImageCodecInfo[]" />
+        <method name="GetImageEncoders" argnames="" returntype="System.Drawing.Imaging.ImageCodecInfo[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageFormat" namespace="System.Drawing.Imaging">
+        <constructor name="ImageFormat(System.Guid)" argnames="guid" />
+        <property name="Guid" propertytype="System.Guid" />
+        <property name="MemoryBmp" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Bmp" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Emf" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Wmf" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Gif" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Jpeg" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Png" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Tiff" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Exif" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="Icon" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Metafile" namespace="System.Drawing.Imaging">
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.WmfPlaceableFileHeader)" argnames="hmetafile, wmfHeader" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.WmfPlaceableFileHeader, System.Boolean)" argnames="hmetafile, wmfHeader, deleteWmf" />
+        <constructor name="Metafile(System.IntPtr, System.Boolean)" argnames="henhmetafile, deleteEmf" />
+        <constructor name="Metafile(System.String)" argnames="filename" />
+        <constructor name="Metafile(System.IO.Stream)" argnames="stream" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.EmfType)" argnames="referenceHdc, emfType" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Imaging.EmfType, System.String)" argnames="referenceHdc, emfType, description" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF)" argnames="referenceHdc, frameRect" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit)" argnames="referenceHdc, frameRect, frameUnit" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="referenceHdc, frameRect, frameUnit, type" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="referenceHdc, frameRect, frameUnit, type, description" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle)" argnames="referenceHdc, frameRect" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit)" argnames="referenceHdc, frameRect, frameUnit" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="referenceHdc, frameRect, frameUnit, type" />
+        <constructor name="Metafile(System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="referenceHdc, frameRect, frameUnit, type, desc" />
+        <constructor name="Metafile(System.String, System.IntPtr)" argnames="fileName, referenceHdc" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Imaging.EmfType)" argnames="fileName, referenceHdc, type" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Imaging.EmfType, System.String)" argnames="fileName, referenceHdc, type, description" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF)" argnames="fileName, referenceHdc, frameRect" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit)" argnames="fileName, referenceHdc, frameRect, frameUnit" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="fileName, referenceHdc, frameRect, frameUnit, type" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, desc" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, type, description" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle)" argnames="fileName, referenceHdc, frameRect" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit)" argnames="fileName, referenceHdc, frameRect, frameUnit" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="fileName, referenceHdc, frameRect, frameUnit, type" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, description" />
+        <constructor name="Metafile(System.String, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="fileName, referenceHdc, frameRect, frameUnit, type, description" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr)" argnames="stream, referenceHdc" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Imaging.EmfType)" argnames="stream, referenceHdc, type" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Imaging.EmfType, System.String)" argnames="stream, referenceHdc, type, description" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF)" argnames="stream, referenceHdc, frameRect" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit)" argnames="stream, referenceHdc, frameRect, frameUnit" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="stream, referenceHdc, frameRect, frameUnit, type" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.RectangleF, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="stream, referenceHdc, frameRect, frameUnit, type, description" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle)" argnames="stream, referenceHdc, frameRect" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit)" argnames="stream, referenceHdc, frameRect, frameUnit" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType)" argnames="stream, referenceHdc, frameRect, frameUnit, type" />
+        <constructor name="Metafile(System.IO.Stream, System.IntPtr, System.Drawing.Rectangle, System.Drawing.Imaging.MetafileFrameUnit, System.Drawing.Imaging.EmfType, System.String)" argnames="stream, referenceHdc, frameRect, frameUnit, type, description" />
+        <property name="PhysicalDimension" inherited="System.Drawing.Image" propertytype="System.Drawing.SizeF" />
+        <property name="Size" inherited="System.Drawing.Image" propertytype="System.Drawing.Size" />
+        <property name="Width" inherited="System.Drawing.Image" propertytype="System.Int32" />
+        <property name="Height" inherited="System.Drawing.Image" propertytype="System.Int32" />
+        <property name="HorizontalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
+        <property name="VerticalResolution" inherited="System.Drawing.Image" propertytype="System.Single" />
+        <property name="Flags" inherited="System.Drawing.Image" propertytype="System.Int32" />
+        <property name="RawFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ImageFormat" />
+        <property name="PixelFormat" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PixelFormat" />
+        <property name="Palette" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.ColorPalette" />
+        <property name="FrameDimensionsList" inherited="System.Drawing.Image" propertytype="System.Guid[]" />
+        <property name="PropertyIdList" inherited="System.Drawing.Image" propertytype="System.Int32[]" />
+        <property name="PropertyItems" inherited="System.Drawing.Image" propertytype="System.Drawing.Imaging.PropertyItem[]" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Drawing.Image" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetMetafileHeader(System.IntPtr, System.Drawing.Imaging.WmfPlaceableFileHeader)" argnames="hmetafile, wmfHeader" returntype="System.Drawing.Imaging.MetafileHeader" />
+        <method name="GetMetafileHeader(System.IntPtr)" argnames="henhmetafile" returntype="System.Drawing.Imaging.MetafileHeader" />
+        <method name="GetMetafileHeader(System.String)" argnames="fileName" returntype="System.Drawing.Imaging.MetafileHeader" />
+        <method name="GetMetafileHeader(System.IO.Stream)" argnames="stream" returntype="System.Drawing.Imaging.MetafileHeader" />
+        <method name="GetMetafileHeader" argnames="" returntype="System.Drawing.Imaging.MetafileHeader" />
+        <method name="GetHenhmetafile" argnames="" returntype="System.IntPtr" />
+        <method name="PlayRecord(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.Byte[])" argnames="recordType, flags, dataSize, data" returntype="System.Void" />
+        <method name="GetEncoderParameterList(System.Guid)" argnames="encoder" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.EncoderParameters" />
+        <method name="Save(System.String)" argnames="filename" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.String, System.Drawing.Imaging.ImageFormat)" argnames="filename, format" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.String, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="filename, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageFormat)" argnames="stream, format" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="Save(System.IO.Stream, System.Drawing.Imaging.ImageCodecInfo, System.Drawing.Imaging.EncoderParameters)" argnames="stream, encoder, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="SaveAdd(System.Drawing.Imaging.EncoderParameters)" argnames="encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="SaveAdd(System.Drawing.Image, System.Drawing.Imaging.EncoderParameters)" argnames="image, encoderParams" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetBounds(System.Drawing.GraphicsUnit&amp;)" argnames="pageUnit" inherited="System.Drawing.Image" returntype="System.Drawing.RectangleF" />
+        <method name="GetThumbnailImage(System.Int32, System.Int32, System.Drawing.Image.GetThumbnailImageAbort, System.IntPtr)" argnames="thumbWidth, thumbHeight, callback, callbackData" inherited="System.Drawing.Image" returntype="System.Drawing.Image" />
+        <method name="GetFrameCount(System.Drawing.Imaging.FrameDimension)" argnames="dimension" inherited="System.Drawing.Image" returntype="System.Int32" />
+        <method name="SelectActiveFrame(System.Drawing.Imaging.FrameDimension, System.Int32)" argnames="dimension, frameIndex" inherited="System.Drawing.Image" returntype="System.Int32" />
+        <method name="RotateFlip(System.Drawing.RotateFlipType)" argnames="rotateFlipType" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetPropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Drawing.Imaging.PropertyItem" />
+        <method name="RemovePropertyItem(System.Int32)" argnames="propid" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="SetPropertyItem(System.Drawing.Imaging.PropertyItem)" argnames="propitem" inherited="System.Drawing.Image" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MetafileHeader" namespace="System.Drawing.Imaging">
+        <property name="Type" propertytype="System.Drawing.Imaging.MetafileType" />
+        <property name="MetafileSize" propertytype="System.Int32" />
+        <property name="Version" propertytype="System.Int32" />
+        <property name="EmfPlusFlags" propertytype="System.Drawing.Imaging.EmfPlusFlags" />
+        <property name="DpiX" propertytype="System.Single" />
+        <property name="DpiY" propertytype="System.Single" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="WmfHeader" propertytype="System.Drawing.Imaging.MetaHeader" />
+        <property name="EmfHeader" propertytype="System.Drawing.SafeNativeMethods+ENHMETAHEADER" />
+        <property name="EmfPlusHeaderSize" propertytype="System.Int32" />
+        <property name="LogicalDpiX" propertytype="System.Int32" />
+        <property name="LogicalDpiY" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IsWmf" argnames="" returntype="System.Boolean" />
+        <method name="IsWmfPlaceable" argnames="" returntype="System.Boolean" />
+        <method name="IsEmf" argnames="" returntype="System.Boolean" />
+        <method name="IsEmfOrEmfPlus" argnames="" returntype="System.Boolean" />
+        <method name="IsEmfPlus" argnames="" returntype="System.Boolean" />
+        <method name="IsEmfPlusDual" argnames="" returntype="System.Boolean" />
+        <method name="IsEmfPlusOnly" argnames="" returntype="System.Boolean" />
+        <method name="IsDisplay" argnames="" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MetaHeader" namespace="System.Drawing.Imaging">
+        <constructor name="MetaHeader" argnames="" />
+        <property name="Type" propertytype="System.Int16" />
+        <property name="HeaderSize" propertytype="System.Int16" />
+        <property name="Version" propertytype="System.Int16" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="NoObjects" propertytype="System.Int16" />
+        <property name="MaxRecord" propertytype="System.Int32" />
+        <property name="NoParameters" propertytype="System.Int16" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyItem" namespace="System.Drawing.Imaging">
+        <property name="Id" propertytype="System.Int32" />
+        <property name="Len" propertytype="System.Int32" />
+        <property name="Type" propertytype="System.Int16" />
+        <property name="Value" propertytype="System.Byte[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WmfPlaceableFileHeader" namespace="System.Drawing.Imaging">
+        <constructor name="WmfPlaceableFileHeader" argnames="" />
+        <property name="Key" propertytype="System.Int32" />
+        <property name="Hmf" propertytype="System.Int16" />
+        <property name="BboxLeft" propertytype="System.Int16" />
+        <property name="BboxTop" propertytype="System.Int16" />
+        <property name="BboxRight" propertytype="System.Int16" />
+        <property name="BboxBottom" propertytype="System.Int16" />
+        <property name="Inch" propertytype="System.Int16" />
+        <property name="Reserved" propertytype="System.Int32" />
+        <property name="Checksum" propertytype="System.Int16" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EncoderParameter" namespace="System.Drawing.Imaging">
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte)" argnames="encoder, value" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte, System.Boolean)" argnames="encoder, value, undefined" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int16)" argnames="encoder, value" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64)" argnames="encoder, value" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32, System.Int32)" argnames="encoder, numerator, demoninator" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64, System.Int64)" argnames="encoder, rangebegin, rangeend" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="encoder, numerator1, demoninator1, numerator2, demoninator2" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.String)" argnames="encoder, value" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte[])" argnames="encoder, value" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Byte[], System.Boolean)" argnames="encoder, value, undefined" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int16[])" argnames="encoder, value" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64[])" argnames="encoder, value" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32[], System.Int32[])" argnames="encoder, numerator, denominator" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int64[], System.Int64[])" argnames="encoder, rangebegin, rangeend" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32[], System.Int32[], System.Int32[], System.Int32[])" argnames="encoder, numerator1, denominator1, numerator2, denominator2" />
+        <constructor name="EncoderParameter(System.Drawing.Imaging.Encoder, System.Int32, System.Int32, System.Int32)" argnames="encoder, NumberOfValues, Type, Value" />
+        <property name="Encoder" propertytype="System.Drawing.Imaging.Encoder" />
+        <property name="Type" propertytype="System.Drawing.Imaging.EncoderParameterValueType" />
+        <property name="ValueType" propertytype="System.Drawing.Imaging.EncoderParameterValueType" />
+        <property name="NumberOfValues" propertytype="System.Int32" />
+        <property name="ValuePointer" propertytype="System.IntPtr" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageAttributes" namespace="System.Drawing.Imaging">
+        <constructor name="ImageAttributes" argnames="" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SetColorMatrix(System.Drawing.Imaging.ColorMatrix)" argnames="newColorMatrix" returntype="System.Void" />
+        <method name="SetColorMatrix(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag)" argnames="newColorMatrix, flags" returntype="System.Void" />
+        <method name="SetColorMatrix(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag, System.Drawing.Imaging.ColorAdjustType)" argnames="newColorMatrix, mode, type" returntype="System.Void" />
+        <method name="ClearColorMatrix" argnames="" returntype="System.Void" />
+        <method name="ClearColorMatrix(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetColorMatrices(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrix)" argnames="newColorMatrix, grayMatrix" returntype="System.Void" />
+        <method name="SetColorMatrices(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag)" argnames="newColorMatrix, grayMatrix, flags" returntype="System.Void" />
+        <method name="SetColorMatrices(System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrix, System.Drawing.Imaging.ColorMatrixFlag, System.Drawing.Imaging.ColorAdjustType)" argnames="newColorMatrix, grayMatrix, mode, type" returntype="System.Void" />
+        <method name="SetThreshold(System.Single)" argnames="threshold" returntype="System.Void" />
+        <method name="SetThreshold(System.Single, System.Drawing.Imaging.ColorAdjustType)" argnames="threshold, type" returntype="System.Void" />
+        <method name="ClearThreshold" argnames="" returntype="System.Void" />
+        <method name="ClearThreshold(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetGamma(System.Single)" argnames="gamma" returntype="System.Void" />
+        <method name="SetGamma(System.Single, System.Drawing.Imaging.ColorAdjustType)" argnames="gamma, type" returntype="System.Void" />
+        <method name="ClearGamma" argnames="" returntype="System.Void" />
+        <method name="ClearGamma(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetNoOp" argnames="" returntype="System.Void" />
+        <method name="SetNoOp(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="ClearNoOp" argnames="" returntype="System.Void" />
+        <method name="ClearNoOp(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetColorKey(System.Drawing.Color, System.Drawing.Color)" argnames="colorLow, colorHigh" returntype="System.Void" />
+        <method name="SetColorKey(System.Drawing.Color, System.Drawing.Color, System.Drawing.Imaging.ColorAdjustType)" argnames="colorLow, colorHigh, type" returntype="System.Void" />
+        <method name="ClearColorKey" argnames="" returntype="System.Void" />
+        <method name="ClearColorKey(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetOutputChannel(System.Drawing.Imaging.ColorChannelFlag)" argnames="flags" returntype="System.Void" />
+        <method name="SetOutputChannel(System.Drawing.Imaging.ColorChannelFlag, System.Drawing.Imaging.ColorAdjustType)" argnames="flags, type" returntype="System.Void" />
+        <method name="ClearOutputChannel" argnames="" returntype="System.Void" />
+        <method name="ClearOutputChannel(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetOutputChannelColorProfile(System.String)" argnames="colorProfileFilename" returntype="System.Void" />
+        <method name="SetOutputChannelColorProfile(System.String, System.Drawing.Imaging.ColorAdjustType)" argnames="colorProfileFilename, type" returntype="System.Void" />
+        <method name="ClearOutputChannelColorProfile" argnames="" returntype="System.Void" />
+        <method name="ClearOutputChannelColorProfile(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetRemapTable(System.Drawing.Imaging.ColorMap[])" argnames="map" returntype="System.Void" />
+        <method name="SetRemapTable(System.Drawing.Imaging.ColorMap[], System.Drawing.Imaging.ColorAdjustType)" argnames="map, type" returntype="System.Void" />
+        <method name="ClearRemapTable" argnames="" returntype="System.Void" />
+        <method name="ClearRemapTable(System.Drawing.Imaging.ColorAdjustType)" argnames="type" returntype="System.Void" />
+        <method name="SetBrushRemapTable(System.Drawing.Imaging.ColorMap[])" argnames="map" returntype="System.Void" />
+        <method name="ClearBrushRemapTable" argnames="" returntype="System.Void" />
+        <method name="SetWrapMode(System.Drawing.Drawing2D.WrapMode)" argnames="mode" returntype="System.Void" />
+        <method name="SetWrapMode(System.Drawing.Drawing2D.WrapMode, System.Drawing.Color)" argnames="mode, color" returntype="System.Void" />
+        <method name="SetWrapMode(System.Drawing.Drawing2D.WrapMode, System.Drawing.Color, System.Boolean)" argnames="mode, color, clamp" returntype="System.Void" />
+        <method name="GetAdjustedPalette(System.Drawing.Imaging.ColorPalette, System.Drawing.Imaging.ColorAdjustType)" argnames="palette, type" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="PlayRecordCallback" namespace="System.Drawing.Imaging">
+        <constructor name="PlayRecordCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr, System.AsyncCallback, System.Object)" argnames="recordType, flags, dataSize, recordData, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Drawing.Imaging.EmfPlusRecordType, System.Int32, System.Int32, System.IntPtr)" argnames="recordType, flags, dataSize, recordData" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="ColorAdjustType" namespace="System.Drawing.Imaging">
+        <field name="Default" />
+        <field name="Bitmap" />
+        <field name="Brush" />
+        <field name="Pen" />
+        <field name="Text" />
+        <field name="Count" />
+        <field name="Any" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ColorChannelFlag" namespace="System.Drawing.Imaging">
+        <field name="ColorChannelC" />
+        <field name="ColorChannelM" />
+        <field name="ColorChannelY" />
+        <field name="ColorChannelK" />
+        <field name="ColorChannelLast" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ColorMapType" namespace="System.Drawing.Imaging">
+        <field name="Default" />
+        <field name="Brush" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ColorMatrixFlag" namespace="System.Drawing.Imaging">
+        <field name="Default" />
+        <field name="SkipGrays" />
+        <field name="AltGrays" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ColorMode" namespace="System.Drawing.Imaging">
+        <field name="Argb32Mode" />
+        <field name="Argb64Mode" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EmfPlusRecordType" namespace="System.Drawing.Imaging">
+        <field name="WmfRecordBase" />
+        <field name="WmfSetBkColor" />
+        <field name="WmfSetBkMode" />
+        <field name="WmfSetMapMode" />
+        <field name="WmfSetROP2" />
+        <field name="WmfSetRelAbs" />
+        <field name="WmfSetPolyFillMode" />
+        <field name="WmfSetStretchBltMode" />
+        <field name="WmfSetTextCharExtra" />
+        <field name="WmfSetTextColor" />
+        <field name="WmfSetTextJustification" />
+        <field name="WmfSetWindowOrg" />
+        <field name="WmfSetWindowExt" />
+        <field name="WmfSetViewportOrg" />
+        <field name="WmfSetViewportExt" />
+        <field name="WmfOffsetWindowOrg" />
+        <field name="WmfScaleWindowExt" />
+        <field name="WmfOffsetViewportOrg" />
+        <field name="WmfScaleViewportExt" />
+        <field name="WmfLineTo" />
+        <field name="WmfMoveTo" />
+        <field name="WmfExcludeClipRect" />
+        <field name="WmfIntersectClipRect" />
+        <field name="WmfArc" />
+        <field name="WmfEllipse" />
+        <field name="WmfFloodFill" />
+        <field name="WmfPie" />
+        <field name="WmfRectangle" />
+        <field name="WmfRoundRect" />
+        <field name="WmfPatBlt" />
+        <field name="WmfSaveDC" />
+        <field name="WmfSetPixel" />
+        <field name="WmfOffsetCilpRgn" />
+        <field name="WmfTextOut" />
+        <field name="WmfBitBlt" />
+        <field name="WmfStretchBlt" />
+        <field name="WmfPolygon" />
+        <field name="WmfPolyline" />
+        <field name="WmfEscape" />
+        <field name="WmfRestoreDC" />
+        <field name="WmfFillRegion" />
+        <field name="WmfFrameRegion" />
+        <field name="WmfInvertRegion" />
+        <field name="WmfPaintRegion" />
+        <field name="WmfSelectClipRegion" />
+        <field name="WmfSelectObject" />
+        <field name="WmfSetTextAlign" />
+        <field name="WmfChord" />
+        <field name="WmfSetMapperFlags" />
+        <field name="WmfExtTextOut" />
+        <field name="WmfSetDibToDev" />
+        <field name="WmfSelectPalette" />
+        <field name="WmfRealizePalette" />
+        <field name="WmfAnimatePalette" />
+        <field name="WmfSetPalEntries" />
+        <field name="WmfPolyPolygon" />
+        <field name="WmfResizePalette" />
+        <field name="WmfDibBitBlt" />
+        <field name="WmfDibStretchBlt" />
+        <field name="WmfDibCreatePatternBrush" />
+        <field name="WmfStretchDib" />
+        <field name="WmfExtFloodFill" />
+        <field name="WmfSetLayout" />
+        <field name="WmfDeleteObject" />
+        <field name="WmfCreatePalette" />
+        <field name="WmfCreatePatternBrush" />
+        <field name="WmfCreatePenIndirect" />
+        <field name="WmfCreateFontIndirect" />
+        <field name="WmfCreateBrushIndirect" />
+        <field name="WmfCreateRegion" />
+        <field name="EmfHeader" />
+        <field name="EmfPolyBezier" />
+        <field name="EmfPolygon" />
+        <field name="EmfPolyline" />
+        <field name="EmfPolyBezierTo" />
+        <field name="EmfPolyLineTo" />
+        <field name="EmfPolyPolyline" />
+        <field name="EmfPolyPolygon" />
+        <field name="EmfSetWindowExtEx" />
+        <field name="EmfSetWindowOrgEx" />
+        <field name="EmfSetViewportExtEx" />
+        <field name="EmfSetViewportOrgEx" />
+        <field name="EmfSetBrushOrgEx" />
+        <field name="EmfEof" />
+        <field name="EmfSetPixelV" />
+        <field name="EmfSetMapperFlags" />
+        <field name="EmfSetMapMode" />
+        <field name="EmfSetBkMode" />
+        <field name="EmfSetPolyFillMode" />
+        <field name="EmfSetROP2" />
+        <field name="EmfSetStretchBltMode" />
+        <field name="EmfSetTextAlign" />
+        <field name="EmfSetColorAdjustment" />
+        <field name="EmfSetTextColor" />
+        <field name="EmfSetBkColor" />
+        <field name="EmfOffsetClipRgn" />
+        <field name="EmfMoveToEx" />
+        <field name="EmfSetMetaRgn" />
+        <field name="EmfExcludeClipRect" />
+        <field name="EmfIntersectClipRect" />
+        <field name="EmfScaleViewportExtEx" />
+        <field name="EmfScaleWindowExtEx" />
+        <field name="EmfSaveDC" />
+        <field name="EmfRestoreDC" />
+        <field name="EmfSetWorldTransform" />
+        <field name="EmfModifyWorldTransform" />
+        <field name="EmfSelectObject" />
+        <field name="EmfCreatePen" />
+        <field name="EmfCreateBrushIndirect" />
+        <field name="EmfDeleteObject" />
+        <field name="EmfAngleArc" />
+        <field name="EmfEllipse" />
+        <field name="EmfRectangle" />
+        <field name="EmfRoundRect" />
+        <field name="EmfRoundArc" />
+        <field name="EmfChord" />
+        <field name="EmfPie" />
+        <field name="EmfSelectPalette" />
+        <field name="EmfCreatePalette" />
+        <field name="EmfSetPaletteEntries" />
+        <field name="EmfResizePalette" />
+        <field name="EmfRealizePalette" />
+        <field name="EmfExtFloodFill" />
+        <field name="EmfLineTo" />
+        <field name="EmfArcTo" />
+        <field name="EmfPolyDraw" />
+        <field name="EmfSetArcDirection" />
+        <field name="EmfSetMiterLimit" />
+        <field name="EmfBeginPath" />
+        <field name="EmfEndPath" />
+        <field name="EmfCloseFigure" />
+        <field name="EmfFillPath" />
+        <field name="EmfStrokeAndFillPath" />
+        <field name="EmfStrokePath" />
+        <field name="EmfFlattenPath" />
+        <field name="EmfWidenPath" />
+        <field name="EmfSelectClipPath" />
+        <field name="EmfAbortPath" />
+        <field name="EmfReserved069" />
+        <field name="EmfGdiComment" />
+        <field name="EmfFillRgn" />
+        <field name="EmfFrameRgn" />
+        <field name="EmfInvertRgn" />
+        <field name="EmfPaintRgn" />
+        <field name="EmfExtSelectClipRgn" />
+        <field name="EmfBitBlt" />
+        <field name="EmfStretchBlt" />
+        <field name="EmfMaskBlt" />
+        <field name="EmfPlgBlt" />
+        <field name="EmfSetDIBitsToDevice" />
+        <field name="EmfStretchDIBits" />
+        <field name="EmfExtCreateFontIndirect" />
+        <field name="EmfExtTextOutA" />
+        <field name="EmfExtTextOutW" />
+        <field name="EmfPolyBezier16" />
+        <field name="EmfPolygon16" />
+        <field name="EmfPolyline16" />
+        <field name="EmfPolyBezierTo16" />
+        <field name="EmfPolylineTo16" />
+        <field name="EmfPolyPolyline16" />
+        <field name="EmfPolyPolygon16" />
+        <field name="EmfPolyDraw16" />
+        <field name="EmfCreateMonoBrush" />
+        <field name="EmfCreateDibPatternBrushPt" />
+        <field name="EmfExtCreatePen" />
+        <field name="EmfPolyTextOutA" />
+        <field name="EmfPolyTextOutW" />
+        <field name="EmfSetIcmMode" />
+        <field name="EmfCreateColorSpace" />
+        <field name="EmfSetColorSpace" />
+        <field name="EmfDeleteColorSpace" />
+        <field name="EmfGlsRecord" />
+        <field name="EmfGlsBoundedRecord" />
+        <field name="EmfPixelFormat" />
+        <field name="EmfDrawEscape" />
+        <field name="EmfExtEscape" />
+        <field name="EmfStartDoc" />
+        <field name="EmfSmallTextOut" />
+        <field name="EmfForceUfiMapping" />
+        <field name="EmfNamedEscpae" />
+        <field name="EmfColorCorrectPalette" />
+        <field name="EmfSetIcmProfileA" />
+        <field name="EmfSetIcmProfileW" />
+        <field name="EmfAlphaBlend" />
+        <field name="EmfSetLayout" />
+        <field name="EmfTransparentBlt" />
+        <field name="EmfReserved117" />
+        <field name="EmfGradientFill" />
+        <field name="EmfSetLinkedUfis" />
+        <field name="EmfSetTextJustification" />
+        <field name="EmfColorMatchToTargetW" />
+        <field name="EmfCreateColorSpaceW" />
+        <field name="EmfMax" />
+        <field name="EmfMin" />
+        <field name="EmfPlusRecordBase" />
+        <field name="Invalid" />
+        <field name="Header" />
+        <field name="EndOfFile" />
+        <field name="Comment" />
+        <field name="GetDC" />
+        <field name="MultiFormatStart" />
+        <field name="MultiFormatSection" />
+        <field name="MultiFormatEnd" />
+        <field name="Object" />
+        <field name="Clear" />
+        <field name="FillRects" />
+        <field name="DrawRects" />
+        <field name="FillPolygon" />
+        <field name="DrawLines" />
+        <field name="FillEllipse" />
+        <field name="DrawEllipse" />
+        <field name="FillPie" />
+        <field name="DrawPie" />
+        <field name="DrawArc" />
+        <field name="FillRegion" />
+        <field name="FillPath" />
+        <field name="DrawPath" />
+        <field name="FillClosedCurve" />
+        <field name="DrawClosedCurve" />
+        <field name="DrawCurve" />
+        <field name="DrawBeziers" />
+        <field name="DrawImage" />
+        <field name="DrawImagePoints" />
+        <field name="DrawString" />
+        <field name="SetRenderingOrigin" />
+        <field name="SetAntiAliasMode" />
+        <field name="SetTextRenderingHint" />
+        <field name="SetTextContrast" />
+        <field name="SetInterpolationMode" />
+        <field name="SetPixelOffsetMode" />
+        <field name="SetCompositingMode" />
+        <field name="SetCompositingQuality" />
+        <field name="Save" />
+        <field name="Restore" />
+        <field name="BeginContainer" />
+        <field name="BeginContainerNoParams" />
+        <field name="EndContainer" />
+        <field name="SetWorldTransform" />
+        <field name="ResetWorldTransform" />
+        <field name="MultiplyWorldTransform" />
+        <field name="TranslateWorldTransform" />
+        <field name="ScaleWorldTransform" />
+        <field name="RotateWorldTransform" />
+        <field name="SetPageTransform" />
+        <field name="ResetClip" />
+        <field name="SetClipRect" />
+        <field name="SetClipPath" />
+        <field name="SetClipRegion" />
+        <field name="OffsetClip" />
+        <field name="DrawDriverString" />
+        <field name="Total" />
+        <field name="Max" />
+        <field name="Min" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EmfType" namespace="System.Drawing.Imaging">
+        <field name="EmfOnly" />
+        <field name="EmfPlusOnly" />
+        <field name="EmfPlusDual" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EncoderParameterValueType" namespace="System.Drawing.Imaging">
+        <field name="ValueTypeByte" />
+        <field name="ValueTypeAscii" />
+        <field name="ValueTypeShort" />
+        <field name="ValueTypeLong" />
+        <field name="ValueTypeRational" />
+        <field name="ValueTypeLongRange" />
+        <field name="ValueTypeUndefined" />
+        <field name="ValueTypeRationalRange" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EncoderValue" namespace="System.Drawing.Imaging">
+        <field name="ColorTypeCMYK" />
+        <field name="ColorTypeYCCK" />
+        <field name="CompressionLZW" />
+        <field name="CompressionCCITT3" />
+        <field name="CompressionCCITT4" />
+        <field name="CompressionRle" />
+        <field name="CompressionNone" />
+        <field name="ScanMethodInterlaced" />
+        <field name="ScanMethodNonInterlaced" />
+        <field name="VersionGif87" />
+        <field name="VersionGif89" />
+        <field name="RenderProgressive" />
+        <field name="RenderNonProgressive" />
+        <field name="TransformRotate90" />
+        <field name="TransformRotate180" />
+        <field name="TransformRotate270" />
+        <field name="TransformFlipHorizontal" />
+        <field name="TransformFlipVertical" />
+        <field name="MultiFrame" />
+        <field name="LastFrame" />
+        <field name="Flush" />
+        <field name="FrameDimensionTime" />
+        <field name="FrameDimensionResolution" />
+        <field name="FrameDimensionPage" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ImageCodecFlags" namespace="System.Drawing.Imaging">
+        <field name="Encoder" />
+        <field name="Decoder" />
+        <field name="SupportBitmap" />
+        <field name="SupportVector" />
+        <field name="SeekableEncode" />
+        <field name="BlockingDecode" />
+        <field name="Builtin" />
+        <field name="System" />
+        <field name="User" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ImageFlags" namespace="System.Drawing.Imaging">
+        <field name="None" />
+        <field name="Scalable" />
+        <field name="HasAlpha" />
+        <field name="HasTranslucent" />
+        <field name="PartiallyScalable" />
+        <field name="ColorSpaceRgb" />
+        <field name="ColorSpaceCmyk" />
+        <field name="ColorSpaceGray" />
+        <field name="ColorSpaceYcbcr" />
+        <field name="ColorSpaceYcck" />
+        <field name="HasRealDpi" />
+        <field name="HasRealPixelSize" />
+        <field name="ReadOnly" />
+        <field name="Caching" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ImageLockMode" namespace="System.Drawing.Imaging">
+        <field name="ReadOnly" />
+        <field name="WriteOnly" />
+        <field name="ReadWrite" />
+        <field name="UserInputBuffer" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MetafileFrameUnit" namespace="System.Drawing.Imaging">
+        <field name="Pixel" />
+        <field name="Point" />
+        <field name="Inch" />
+        <field name="Document" />
+        <field name="Millimeter" />
+        <field name="GdiCompatible" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MetafileType" namespace="System.Drawing.Imaging">
+        <field name="Invalid" />
+        <field name="Wmf" />
+        <field name="WmfPlaceable" />
+        <field name="Emf" />
+        <field name="EmfPlusOnly" />
+        <field name="EmfPlusDual" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PaletteFlags" namespace="System.Drawing.Imaging">
+        <field name="HasAlpha" />
+        <field name="GrayScale" />
+        <field name="Halftone" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PixelFormat" namespace="System.Drawing.Imaging">
+        <field name="Indexed" />
+        <field name="Gdi" />
+        <field name="Alpha" />
+        <field name="PAlpha" />
+        <field name="Extended" />
+        <field name="Canonical" />
+        <field name="Undefined" />
+        <field name="DontCare" />
+        <field name="Format1bppIndexed" />
+        <field name="Format4bppIndexed" />
+        <field name="Format8bppIndexed" />
+        <field name="Format16bppGrayScale" />
+        <field name="Format16bppRgb555" />
+        <field name="Format16bppRgb565" />
+        <field name="Format16bppArgb1555" />
+        <field name="Format24bppRgb" />
+        <field name="Format32bppRgb" />
+        <field name="Format32bppArgb" />
+        <field name="Format32bppPArgb" />
+        <field name="Format48bppRgb" />
+        <field name="Format64bppArgb" />
+        <field name="Format64bppPArgb" />
+        <field name="Max" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="FontCollection" namespace="System.Drawing.Text">
+        <property name="Families" propertytype="System.Drawing.FontFamily[]" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstalledFontCollection" namespace="System.Drawing.Text">
+        <constructor name="InstalledFontCollection" argnames="" />
+        <property name="Families" inherited="System.Drawing.Text.FontCollection" propertytype="System.Drawing.FontFamily[]" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrivateFontCollection" namespace="System.Drawing.Text">
+        <constructor name="PrivateFontCollection" argnames="" />
+        <property name="Families" inherited="System.Drawing.Text.FontCollection" propertytype="System.Drawing.FontFamily[]" />
+        <method name="Dispose" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Drawing.Text.FontCollection" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddFontFile(System.String)" argnames="filename" returntype="System.Void" />
+        <method name="AddMemoryFont(System.IntPtr, System.Int32)" argnames="memory, length" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="GenericFontFamilies" namespace="System.Drawing.Text">
+        <field name="Serif" />
+        <field name="SansSerif" />
+        <field name="Monospace" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="HotkeyPrefix" namespace="System.Drawing.Text">
+        <field name="None" />
+        <field name="Show" />
+        <field name="Hide" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TextRenderingHint" namespace="System.Drawing.Text">
+        <field name="SystemDefault" />
+        <field name="SingleBitPerPixelGridFit" />
+        <field name="SingleBitPerPixel" />
+        <field name="AntiAliasGridFit" />
+        <field name="AntiAlias" />
+        <field name="ClearTypeGridFit" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="STATSTG" namespace="System.Drawing.Internal">
+        <constructor name="STATSTG" argnames="" />
+        <field name="pwcsName" />
+        <field name="type" />
+        <field name="cbSize" />
+        <field name="mtime" />
+        <field name="ctime" />
+        <field name="atime" />
+        <field name="grfMode" />
+        <field name="grfLocksSupported" />
+        <field name="clsid_data1" />
+        <field name="clsid_data2" />
+        <field name="clsid_data3" />
+        <field name="clsid_b0" />
+        <field name="clsid_b1" />
+        <field name="clsid_b2" />
+        <field name="clsid_b3" />
+        <field name="clsid_b4" />
+        <field name="clsid_b5" />
+        <field name="clsid_b6" />
+        <field name="clsid_b7" />
+        <field name="grfStateBits" />
+        <field name="reserved" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CategoryNameCollection" namespace="System.Drawing.Design">
+        <constructor name="CategoryNameCollection(System.Drawing.Design.CategoryNameCollection)" argnames="value" />
+        <constructor name="CategoryNameCollection(System.String[])" argnames="value" />
+        <property name="Item" propertytype="System.String" />
+        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.String[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.String)" argnames="value" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PaintValueEventArgs" namespace="System.Drawing.Design">
+        <constructor name="PaintValueEventArgs(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="context, value, graphics, bounds" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="Context" propertytype="System.ComponentModel.ITypeDescriptorContext" />
+        <property name="Graphics" propertytype="System.Drawing.Graphics" />
+        <property name="Value" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyValueUIItem" namespace="System.Drawing.Design">
+        <constructor name="PropertyValueUIItem(System.Drawing.Image, System.Drawing.Design.PropertyValueUIItemInvokeHandler, System.String)" argnames="uiItemImage, handler, tooltip" />
+        <property name="Image" propertytype="System.Drawing.Image" />
+        <property name="InvokeHandler" propertytype="System.Drawing.Design.PropertyValueUIItemInvokeHandler" />
+        <property name="ToolTip" propertytype="System.String" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolboxComponentsCreatedEventArgs" namespace="System.Drawing.Design">
+        <constructor name="ToolboxComponentsCreatedEventArgs(System.ComponentModel.IComponent[])" argnames="components" />
+        <property name="Components" propertytype="System.ComponentModel.IComponent[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolboxComponentsCreatingEventArgs" namespace="System.Drawing.Design">
+        <constructor name="ToolboxComponentsCreatingEventArgs(System.ComponentModel.Design.IDesignerHost)" argnames="host" />
+        <property name="DesignerHost" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolboxItem" namespace="System.Drawing.Design">
+        <constructor name="ToolboxItem" argnames="" />
+        <constructor name="ToolboxItem(System.Type)" argnames="toolType" />
+        <property name="AssemblyName" propertytype="System.Reflection.AssemblyName" />
+        <property name="Bitmap" propertytype="System.Drawing.Bitmap" />
+        <property name="DisplayName" propertytype="System.String" />
+        <property name="Filter" propertytype="System.Collections.ICollection" />
+        <property name="Locked" propertytype="System.Boolean" />
+        <property name="TypeName" propertytype="System.String" />
+        <method name="Serialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="OnComponentsCreating(System.Drawing.Design.ToolboxComponentsCreatingEventArgs)" argnames="args" returntype="System.Void" />
+        <method name="OnComponentsCreated(System.Drawing.Design.ToolboxComponentsCreatedEventArgs)" argnames="args" returntype="System.Void" />
+        <method name="Initialize(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="GetType(System.ComponentModel.Design.IDesignerHost, System.Reflection.AssemblyName, System.String, System.Boolean)" argnames="host, assemblyName, typeName, reference" returntype="System.Type" />
+        <method name="Deserialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="CreateComponentsCore(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.ComponentModel.IComponent[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CheckUnlocked" argnames="" returntype="System.Void" />
+        <method name="CreateComponents" argnames="" returntype="System.ComponentModel.IComponent[]" />
+        <method name="CreateComponents(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.ComponentModel.IComponent[]" />
+        <method name="Lock" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ComponentsCreated" />
+        <event name="ComponentsCreating" />
+    </class>
+    <class name="ToolboxItemCollection" namespace="System.Drawing.Design">
+        <constructor name="ToolboxItemCollection(System.Drawing.Design.ToolboxItemCollection)" argnames="value" />
+        <constructor name="ToolboxItemCollection(System.Drawing.Design.ToolboxItem[])" argnames="value" />
+        <property name="Item" propertytype="System.Drawing.Design.ToolboxItem" />
+        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Drawing.Design.ToolboxItem)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.Drawing.Design.ToolboxItem[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.Drawing.Design.ToolboxItem)" argnames="value" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UITypeEditor" namespace="System.Drawing.Design">
+        <constructor name="UITypeEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IPropertyValueUIService" namespace="System.Drawing.Design">
+        <method name="RemovePropertyValueUIHandler(System.Drawing.Design.PropertyValueUIHandler)" argnames="newHandler" returntype="System.Void" />
+        <method name="NotifyPropertyValueUIItemsChanged" argnames="" returntype="System.Void" />
+        <method name="GetPropertyUIValueItems(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor)" argnames="context, propDesc" returntype="System.Drawing.Design.PropertyValueUIItem[]" />
+        <method name="AddPropertyValueUIHandler(System.Drawing.Design.PropertyValueUIHandler)" argnames="newHandler" returntype="System.Void" />
+        <event name="PropertyUIValueItemsChanged" />
+    </interface>
+    <interface name="IToolboxService" namespace="System.Drawing.Design">
+        <property name="CategoryNames" propertytype="System.Drawing.Design.CategoryNameCollection" />
+        <property name="SelectedCategory" propertytype="System.String" />
+        <method name="SetSelectedToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Void" />
+        <method name="SetCursor" argnames="" returntype="System.Boolean" />
+        <method name="SerializeToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Object" />
+        <method name="SelectedToolboxItemUsed" argnames="" returntype="System.Void" />
+        <method name="RemoveToolboxItem(System.Drawing.Design.ToolboxItem, System.String)" argnames="toolboxItem, category" returntype="System.Void" />
+        <method name="RemoveToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Void" />
+        <method name="RemoveCreator(System.String, System.ComponentModel.Design.IDesignerHost)" argnames="format, host" returntype="System.Void" />
+        <method name="RemoveCreator(System.String)" argnames="format" returntype="System.Void" />
+        <method name="Refresh" argnames="" returntype="System.Void" />
+        <method name="IsToolboxItem(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="serializedObject, host" returntype="System.Boolean" />
+        <method name="IsToolboxItem(System.Object)" argnames="serializedObject" returntype="System.Boolean" />
+        <method name="IsSupported(System.Object, System.Collections.ICollection)" argnames="serializedObject, filterAttributes" returntype="System.Boolean" />
+        <method name="IsSupported(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="serializedObject, host" returntype="System.Boolean" />
+        <method name="GetToolboxItems(System.String, System.ComponentModel.Design.IDesignerHost)" argnames="category, host" returntype="System.Drawing.Design.ToolboxItemCollection" />
+        <method name="GetToolboxItems(System.String)" argnames="category" returntype="System.Drawing.Design.ToolboxItemCollection" />
+        <method name="GetToolboxItems(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.Drawing.Design.ToolboxItemCollection" />
+        <method name="GetToolboxItems" argnames="" returntype="System.Drawing.Design.ToolboxItemCollection" />
+        <method name="GetSelectedToolboxItem(System.ComponentModel.Design.IDesignerHost)" argnames="host" returntype="System.Drawing.Design.ToolboxItem" />
+        <method name="GetSelectedToolboxItem" argnames="" returntype="System.Drawing.Design.ToolboxItem" />
+        <method name="DeserializeToolboxItem(System.Object, System.ComponentModel.Design.IDesignerHost)" argnames="serializedObject, host" returntype="System.Drawing.Design.ToolboxItem" />
+        <method name="DeserializeToolboxItem(System.Object)" argnames="serializedObject" returntype="System.Drawing.Design.ToolboxItem" />
+        <method name="AddToolboxItem(System.Drawing.Design.ToolboxItem, System.String)" argnames="toolboxItem, category" returntype="System.Void" />
+        <method name="AddToolboxItem(System.Drawing.Design.ToolboxItem)" argnames="toolboxItem" returntype="System.Void" />
+        <method name="AddLinkedToolboxItem(System.Drawing.Design.ToolboxItem, System.String, System.ComponentModel.Design.IDesignerHost)" argnames="toolboxItem, category, host" returntype="System.Void" />
+        <method name="AddLinkedToolboxItem(System.Drawing.Design.ToolboxItem, System.ComponentModel.Design.IDesignerHost)" argnames="toolboxItem, host" returntype="System.Void" />
+        <method name="AddCreator(System.Drawing.Design.ToolboxItemCreatorCallback, System.String, System.ComponentModel.Design.IDesignerHost)" argnames="creator, format, host" returntype="System.Void" />
+        <method name="AddCreator(System.Drawing.Design.ToolboxItemCreatorCallback, System.String)" argnames="creator, format" returntype="System.Void" />
+    </interface>
+    <interface name="IToolboxUser" namespace="System.Drawing.Design">
+        <method name="ToolPicked(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Void" />
+        <method name="GetToolSupported(System.Drawing.Design.ToolboxItem)" argnames="tool" returntype="System.Boolean" />
+    </interface>
+    <delegate name="PropertyValueUIHandler" namespace="System.Drawing.Design">
+        <constructor name="PropertyValueUIHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Collections.ArrayList, System.AsyncCallback, System.Object)" argnames="context, propDesc, valueUIItemList, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Collections.ArrayList)" argnames="context, propDesc, valueUIItemList" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="PropertyValueUIItemInvokeHandler" namespace="System.Drawing.Design">
+        <constructor name="PropertyValueUIItemInvokeHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Drawing.Design.PropertyValueUIItem, System.AsyncCallback, System.Object)" argnames="context, descriptor, invokedItem, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.ComponentModel.ITypeDescriptorContext, System.ComponentModel.PropertyDescriptor, System.Drawing.Design.PropertyValueUIItem)" argnames="context, descriptor, invokedItem" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ToolboxComponentsCreatedEventHandler" namespace="System.Drawing.Design">
+        <constructor name="ToolboxComponentsCreatedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ToolboxComponentsCreatingEventHandler" namespace="System.Drawing.Design">
+        <constructor name="ToolboxComponentsCreatingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Drawing.Design.ToolboxComponentsCreatingEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ToolboxItemCreatorCallback" namespace="System.Drawing.Design">
+        <constructor name="ToolboxItemCreatorCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Drawing.Design.ToolboxItem" />
+        <method name="BeginInvoke(System.Object, System.String, System.AsyncCallback, System.Object)" argnames="serializedObject, format, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.String)" argnames="serializedObject, format" returntype="System.Drawing.Design.ToolboxItem" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="UITypeEditorEditStyle" namespace="System.Drawing.Design">
+        <field name="None" />
+        <field name="Modal" />
+        <field name="DropDown" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="PrintController" namespace="System.Drawing.Printing">
+        <constructor name="PrintController" argnames="" />
+        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
+        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StandardPrintController" namespace="System.Drawing.Printing">
+        <constructor name="StandardPrintController" argnames="" />
+        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
+        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InvalidPrinterException" namespace="System.Drawing.Printing">
+        <constructor name="InvalidPrinterException(System.Drawing.Printing.PrinterSettings)" argnames="settings" />
+        <constructor name="InvalidPrinterException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Margins" namespace="System.Drawing.Printing">
+        <constructor name="Margins" argnames="" />
+        <constructor name="Margins(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, right, top, bottom" />
+        <property name="Left" propertytype="System.Int32" />
+        <property name="Right" propertytype="System.Int32" />
+        <property name="Top" propertytype="System.Int32" />
+        <property name="Bottom" propertytype="System.Int32" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MarginsConverter" namespace="System.Drawing.Printing">
+        <constructor name="MarginsConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PageSettings" namespace="System.Drawing.Printing">
+        <constructor name="PageSettings" argnames="" />
+        <constructor name="PageSettings(System.Drawing.Printing.PrinterSettings)" argnames="printerSettings" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="Color" propertytype="System.Boolean" />
+        <property name="Landscape" propertytype="System.Boolean" />
+        <property name="Margins" propertytype="System.Drawing.Printing.Margins" />
+        <property name="PaperSize" propertytype="System.Drawing.Printing.PaperSize" />
+        <property name="PaperSource" propertytype="System.Drawing.Printing.PaperSource" />
+        <property name="PrinterResolution" propertytype="System.Drawing.Printing.PrinterResolution" />
+        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CopyToHdevmode(System.IntPtr)" argnames="hdevmode" returntype="System.Void" />
+        <method name="SetHdevmode(System.IntPtr)" argnames="hdevmode" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PaperSize" namespace="System.Drawing.Printing">
+        <constructor name="PaperSize(System.String, System.Int32, System.Int32)" argnames="name, width, height" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="Kind" propertytype="System.Drawing.Printing.PaperKind" />
+        <property name="PaperName" propertytype="System.String" />
+        <property name="RawKind" propertytype="System.Drawing.Printing.PaperKind" />
+        <property name="Width" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PaperSource" namespace="System.Drawing.Printing">
+        <property name="Kind" propertytype="System.Drawing.Printing.PaperSourceKind" />
+        <property name="RawKind" propertytype="System.Drawing.Printing.PaperSourceKind" />
+        <property name="SourceName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PreviewPageInfo" namespace="System.Drawing.Printing">
+        <constructor name="PreviewPageInfo(System.Drawing.Image, System.Drawing.Size)" argnames="image, physicalSize" />
+        <property name="Image" propertytype="System.Drawing.Image" />
+        <property name="PhysicalSize" propertytype="System.Drawing.Size" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PreviewPrintController" namespace="System.Drawing.Printing">
+        <constructor name="PreviewPrintController" argnames="" />
+        <property name="UseAntiAlias" propertytype="System.Boolean" />
+        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
+        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetPreviewPageInfo" argnames="" returntype="System.Drawing.Printing.PreviewPageInfo[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrintDocument" namespace="System.Drawing.Printing">
+        <constructor name="PrintDocument" argnames="" />
+        <property name="DefaultPageSettings" propertytype="System.Drawing.Printing.PageSettings" />
+        <property name="DocumentName" propertytype="System.String" />
+        <property name="PrintController" propertytype="System.Drawing.Printing.PrintController" />
+        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnQueryPageSettings(System.Drawing.Printing.QueryPageSettingsEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnPrintPage(System.Drawing.Printing.PrintPageEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEndPrint(System.Drawing.Printing.PrintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBeginPrint(System.Drawing.Printing.PrintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Print" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BeginPrint" />
+        <event name="EndPrint" />
+        <event name="PrintPage" />
+        <event name="QueryPageSettings" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PrinterResolution" namespace="System.Drawing.Printing">
+        <property name="Kind" propertytype="System.Drawing.Printing.PrinterResolutionKind" />
+        <property name="X" propertytype="System.Int32" />
+        <property name="Y" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrinterSettings" namespace="System.Drawing.Printing">
+        <class name="PaperSizeCollection" namespace="System.Drawing.Printing">
+            <constructor name="PaperSizeCollection(System.Drawing.Printing.PaperSize[])" argnames="array" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="Item" propertytype="System.Drawing.Printing.PaperSize" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="PaperSourceCollection" namespace="System.Drawing.Printing">
+            <constructor name="PaperSourceCollection(System.Drawing.Printing.PaperSource[])" argnames="array" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="Item" propertytype="System.Drawing.Printing.PaperSource" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="PrinterResolutionCollection" namespace="System.Drawing.Printing">
+            <constructor name="PrinterResolutionCollection(System.Drawing.Printing.PrinterResolution[])" argnames="array" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="Item" propertytype="System.Drawing.Printing.PrinterResolution" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="StringCollection" namespace="System.Drawing.Printing">
+            <constructor name="StringCollection(System.String[])" argnames="array" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="Item" propertytype="System.String" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="StringCollection" argnames="" />
+        <property name="CanDuplex" propertytype="System.Boolean" />
+        <property name="Copies" propertytype="System.Int16" />
+        <property name="Collate" propertytype="System.Boolean" />
+        <property name="DefaultPageSettings" propertytype="System.Drawing.Printing.PageSettings" />
+        <property name="DriverName" propertytype="System.String" />
+        <property name="Duplex" propertytype="System.Drawing.Printing.Duplex" />
+        <property name="FromPage" propertytype="System.Int32" />
+        <property name="InstalledPrinters" propertytype="System.Drawing.Printing.PrinterSettings+StringCollection" />
+        <property name="IsDefaultPrinter" propertytype="System.Boolean" />
+        <property name="IsPlotter" propertytype="System.Boolean" />
+        <property name="IsValid" propertytype="System.Boolean" />
+        <property name="LandscapeAngle" propertytype="System.Int32" />
+        <property name="MaximumCopies" propertytype="System.Int32" />
+        <property name="MaximumPage" propertytype="System.Int32" />
+        <property name="MinimumPage" propertytype="System.Int32" />
+        <property name="OutputPort" propertytype="System.String" />
+        <property name="PaperSizes" propertytype="System.Drawing.Printing.PrinterSettings+PaperSizeCollection" />
+        <property name="PaperSources" propertytype="System.Drawing.Printing.PrinterSettings+PaperSourceCollection" />
+        <property name="PrintDialogDisplayed" propertytype="System.Boolean" />
+        <property name="PrintRange" propertytype="System.Drawing.Printing.PrintRange" />
+        <property name="PrintToFile" propertytype="System.Boolean" />
+        <property name="PrinterName" propertytype="System.String" />
+        <property name="PrinterNameInternal" propertytype="System.String" />
+        <property name="PrinterResolutions" propertytype="System.Drawing.Printing.PrinterSettings+PrinterResolutionCollection" />
+        <property name="SupportsColor" propertytype="System.Boolean" />
+        <property name="ToPage" propertytype="System.Int32" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CreateMeasurementGraphics" argnames="" returntype="System.Drawing.Graphics" />
+        <method name="GetHdevmode" argnames="" returntype="System.IntPtr" />
+        <method name="GetHdevmode(System.Drawing.Printing.PageSettings)" argnames="pageSettings" returntype="System.IntPtr" />
+        <method name="GetHdevnames" argnames="" returntype="System.IntPtr" />
+        <method name="SetHdevmode(System.IntPtr)" argnames="hdevmode" returntype="System.Void" />
+        <method name="SetHdevnames(System.IntPtr)" argnames="hdevnames" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PaperSizeCollection" namespace="System.Drawing.Printing">
+        <constructor name="PaperSizeCollection(System.Drawing.Printing.PaperSize[])" argnames="array" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Drawing.Printing.PaperSize" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PaperSourceCollection" namespace="System.Drawing.Printing">
+        <constructor name="PaperSourceCollection(System.Drawing.Printing.PaperSource[])" argnames="array" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Drawing.Printing.PaperSource" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrinterResolutionCollection" namespace="System.Drawing.Printing">
+        <constructor name="PrinterResolutionCollection(System.Drawing.Printing.PrinterResolution[])" argnames="array" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Drawing.Printing.PrinterResolution" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StringCollection" namespace="System.Drawing.Printing">
+        <constructor name="StringCollection(System.String[])" argnames="array" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrinterUnitConvert" namespace="System.Drawing.Printing">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Convert(System.Double, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Double" />
+        <method name="Convert(System.Int32, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Int32" />
+        <method name="Convert(System.Drawing.Point, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Point" />
+        <method name="Convert(System.Drawing.Size, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Size" />
+        <method name="Convert(System.Drawing.Rectangle, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Rectangle" />
+        <method name="Convert(System.Drawing.Printing.Margins, System.Drawing.Printing.PrinterUnit, System.Drawing.Printing.PrinterUnit)" argnames="value, fromUnit, toUnit" returntype="System.Drawing.Printing.Margins" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrintEventArgs" namespace="System.Drawing.Printing">
+        <constructor name="PrintEventArgs" argnames="" />
+        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrintingPermission" namespace="System.Drawing.Printing">
+        <constructor name="PrintingPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="PrintingPermission(System.Drawing.Printing.PrintingPermissionLevel)" argnames="printingLevel" />
+        <property name="Level" propertytype="System.Drawing.Printing.PrintingPermissionLevel" />
+        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrintingPermissionAttribute" namespace="System.Drawing.Printing">
+        <constructor name="PrintingPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Level" propertytype="System.Drawing.Printing.PrintingPermissionLevel" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrintPageEventArgs" namespace="System.Drawing.Printing">
+        <constructor name="PrintPageEventArgs(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.Printing.PageSettings)" argnames="graphics, marginBounds, pageBounds, pageSettings" />
+        <property name="Cancel" propertytype="System.Boolean" />
+        <property name="Graphics" propertytype="System.Drawing.Graphics" />
+        <property name="HasMorePages" propertytype="System.Boolean" />
+        <property name="MarginBounds" propertytype="System.Drawing.Rectangle" />
+        <property name="PageBounds" propertytype="System.Drawing.Rectangle" />
+        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="QueryPageSettingsEventArgs" namespace="System.Drawing.Printing">
+        <constructor name="QueryPageSettingsEventArgs(System.Drawing.Printing.PageSettings)" argnames="pageSettings" />
+        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
+        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="PrintEventHandler" namespace="System.Drawing.Printing">
+        <constructor name="PrintEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Drawing.Printing.PrintEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Drawing.Printing.PrintEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="PrintPageEventHandler" namespace="System.Drawing.Printing">
+        <constructor name="PrintPageEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Drawing.Printing.PrintPageEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Drawing.Printing.PrintPageEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="QueryPageSettingsEventHandler" namespace="System.Drawing.Printing">
+        <constructor name="QueryPageSettingsEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Drawing.Printing.QueryPageSettingsEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Drawing.Printing.QueryPageSettingsEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="Duplex" namespace="System.Drawing.Printing">
+        <field name="Default" />
+        <field name="Simplex" />
+        <field name="Horizontal" />
+        <field name="Vertical" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PaperKind" namespace="System.Drawing.Printing">
+        <field name="Custom" />
+        <field name="Letter" />
+        <field name="Legal" />
+        <field name="A4" />
+        <field name="CSheet" />
+        <field name="DSheet" />
+        <field name="ESheet" />
+        <field name="LetterSmall" />
+        <field name="Tabloid" />
+        <field name="Ledger" />
+        <field name="Statement" />
+        <field name="Executive" />
+        <field name="A3" />
+        <field name="A4Small" />
+        <field name="A5" />
+        <field name="B4" />
+        <field name="B5" />
+        <field name="Folio" />
+        <field name="Quarto" />
+        <field name="Standard10x14" />
+        <field name="Standard11x17" />
+        <field name="Note" />
+        <field name="Number9Envelope" />
+        <field name="Number10Envelope" />
+        <field name="Number11Envelope" />
+        <field name="Number12Envelope" />
+        <field name="Number14Envelope" />
+        <field name="DLEnvelope" />
+        <field name="C5Envelope" />
+        <field name="C3Envelope" />
+        <field name="C4Envelope" />
+        <field name="C6Envelope" />
+        <field name="C65Envelope" />
+        <field name="B4Envelope" />
+        <field name="B5Envelope" />
+        <field name="B6Envelope" />
+        <field name="ItalyEnvelope" />
+        <field name="MonarchEnvelope" />
+        <field name="PersonalEnvelope" />
+        <field name="USStandardFanfold" />
+        <field name="GermanStandardFanfold" />
+        <field name="GermanLegalFanfold" />
+        <field name="IsoB4" />
+        <field name="JapanesePostcard" />
+        <field name="Standard9x11" />
+        <field name="Standard10x11" />
+        <field name="Standard15x11" />
+        <field name="InviteEnvelope" />
+        <field name="LetterExtra" />
+        <field name="LegalExtra" />
+        <field name="TabloidExtra" />
+        <field name="A4Extra" />
+        <field name="LetterTransverse" />
+        <field name="A4Transverse" />
+        <field name="LetterExtraTransverse" />
+        <field name="APlus" />
+        <field name="BPlus" />
+        <field name="LetterPlus" />
+        <field name="A4Plus" />
+        <field name="A5Transverse" />
+        <field name="B5Transverse" />
+        <field name="A3Extra" />
+        <field name="A5Extra" />
+        <field name="B5Extra" />
+        <field name="A2" />
+        <field name="A3Transverse" />
+        <field name="A3ExtraTransverse" />
+        <field name="JapaneseDoublePostcard" />
+        <field name="A6" />
+        <field name="JapaneseEnvelopeKakuNumber2" />
+        <field name="JapaneseEnvelopeKakuNumber3" />
+        <field name="JapaneseEnvelopeChouNumber3" />
+        <field name="JapaneseEnvelopeChouNumber4" />
+        <field name="LetterRotated" />
+        <field name="A3Rotated" />
+        <field name="A4Rotated" />
+        <field name="A5Rotated" />
+        <field name="B4JisRotated" />
+        <field name="B5JisRotated" />
+        <field name="JapanesePostcardRotated" />
+        <field name="JapaneseDoublePostcardRotated" />
+        <field name="A6Rotated" />
+        <field name="JapaneseEnvelopeKakuNumber2Rotated" />
+        <field name="JapaneseEnvelopeKakuNumber3Rotated" />
+        <field name="JapaneseEnvelopeChouNumber3Rotated" />
+        <field name="JapaneseEnvelopeChouNumber4Rotated" />
+        <field name="B6Jis" />
+        <field name="B6JisRotated" />
+        <field name="Standard12x11" />
+        <field name="JapaneseEnvelopeYouNumber4" />
+        <field name="JapaneseEnvelopeYouNumber4Rotated" />
+        <field name="Prc16K" />
+        <field name="Prc32K" />
+        <field name="Prc32KBig" />
+        <field name="PrcEnvelopeNumber1" />
+        <field name="PrcEnvelopeNumber2" />
+        <field name="PrcEnvelopeNumber3" />
+        <field name="PrcEnvelopeNumber4" />
+        <field name="PrcEnvelopeNumber5" />
+        <field name="PrcEnvelopeNumber6" />
+        <field name="PrcEnvelopeNumber7" />
+        <field name="PrcEnvelopeNumber8" />
+        <field name="PrcEnvelopeNumber9" />
+        <field name="PrcEnvelopeNumber10" />
+        <field name="Prc16KRotated" />
+        <field name="Prc32KRotated" />
+        <field name="Prc32KBigRotated" />
+        <field name="PrcEnvelopeNumber1Rotated" />
+        <field name="PrcEnvelopeNumber2Rotated" />
+        <field name="PrcEnvelopeNumber3Rotated" />
+        <field name="PrcEnvelopeNumber4Rotated" />
+        <field name="PrcEnvelopeNumber5Rotated" />
+        <field name="PrcEnvelopeNumber6Rotated" />
+        <field name="PrcEnvelopeNumber7Rotated" />
+        <field name="PrcEnvelopeNumber8Rotated" />
+        <field name="PrcEnvelopeNumber9Rotated" />
+        <field name="PrcEnvelopeNumber10Rotated" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PaperSourceKind" namespace="System.Drawing.Printing">
+        <field name="Upper" />
+        <field name="Lower" />
+        <field name="Middle" />
+        <field name="Manual" />
+        <field name="Envelope" />
+        <field name="ManualFeed" />
+        <field name="AutomaticFeed" />
+        <field name="TractorFeed" />
+        <field name="SmallFormat" />
+        <field name="LargeFormat" />
+        <field name="LargeCapacity" />
+        <field name="Cassette" />
+        <field name="FormSource" />
+        <field name="Custom" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PrinterResolutionKind" namespace="System.Drawing.Printing">
+        <field name="High" />
+        <field name="Medium" />
+        <field name="Low" />
+        <field name="Draft" />
+        <field name="Custom" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PrinterUnit" namespace="System.Drawing.Printing">
+        <field name="Display" />
+        <field name="ThousandthsOfAnInch" />
+        <field name="HundredthsOfAMillimeter" />
+        <field name="TenthsOfAMillimeter" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PrintingPermissionLevel" namespace="System.Drawing.Printing">
+        <field name="NoPrinting" />
+        <field name="SafePrinting" />
+        <field name="DefaultPrinting" />
+        <field name="AllPrinting" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PrintRange" namespace="System.Drawing.Printing">
+        <field name="AllPages" />
+        <field name="SomePages" />
+        <field name="Selection" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Design/ToolboxItem.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Design/ToolboxItem.cs
@@ -1,394 +1,394 @@
-//
-// System.Drawing.Design.ToolboxItem.cs
-//
-// Authors:
-//   Alejandro Sánchez Acosta
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//   Jordi Mas i Hernandez, jordimash@gmail.com
-//   Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) Alejandro Sánchez Acosta
-// (C) 2003 Andreas Nahr
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.ComponentModel;
-using System.ComponentModel.Design;
-using System.Reflection;
-using System.Runtime.Serialization;
-using System.Security.Permissions;
-
-namespace System.Drawing.Design 
-{
-	[Serializable]
-	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
-	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-	[MonoTODO ("Implementation is incomplete.")]
-	public class ToolboxItem : ISerializable {
-
-		private bool locked = false;
-		private Hashtable properties = new Hashtable ();
-		
-		public ToolboxItem ()
-		{
-		}
-
-		public ToolboxItem (Type toolType)
-		{
-			Initialize (toolType);
-		}
-
-		public AssemblyName AssemblyName {
-			get { return (AssemblyName) properties["AssemblyName"]; }
-			set { SetValue ("AssemblyName", value); }
-		}
-
-		public Bitmap Bitmap {
-			get { return (Bitmap) properties["Bitmap"]; }
-			set { SetValue ("Bitmap", value); }
-		}
-
-		public string DisplayName {
-			get { return GetValue ("DisplayName"); }
-			set { SetValue ("DisplayName", value); }
-		}
-
-		public ICollection Filter {
-			get {
-				ICollection filter = (ICollection) properties["Filter"];
-				if (filter == null)
-					filter = new ToolboxItemFilterAttribute[0];
-				return filter;
-			}
-			set { SetValue ("Filter", value); }
-		}
-		public virtual bool Locked {
-			get { return locked; }
-		}
-
-		public string TypeName {
-			get { return GetValue ("TypeName"); }
-			set { SetValue ("TypeName", value); }
-		}
-		public string Company {
-			get { return (string) properties["Company"]; }
-			set { SetValue ("Company", value); }
-		}
-
-		public virtual string ComponentType {
-			get { return ".NET Component"; }
-		}
-
-		public AssemblyName[] DependentAssemblies {
-			get { return (AssemblyName[]) properties["DependentAssemblies"]; }
-			set {
-				AssemblyName[] names = new AssemblyName [value.Length];
-				for (int i=0; i < names.Length; i++)
-					names [i] = value [i];
-				SetValue ("DependentAssemblies", names);
-			}
-		}
-
-		public string Description {
-			get { return (string) properties["Description"]; }
-			set { SetValue ("Description", value); }
-		}
-
-		public bool IsTransient {			
-			get {
-				object o = properties ["IsTransient"];
-				return (o == null) ? false : (bool) o;
-			}
-			set { SetValue ("IsTransient", value); }
-		}
-
-		public IDictionary Properties {
-			 get { return properties; }
-		}
-
-		public virtual string Version { 
-			get { return string.Empty; }
-		}				
-
-		protected void CheckUnlocked ()
-		{
-			if (locked)
-				throw new InvalidOperationException ("The ToolboxItem is locked");
-		}
-
-		public IComponent[] CreateComponents () 
-		{
-			return CreateComponents (null);
-		}
-
-		public IComponent[] CreateComponents (IDesignerHost host)
-		{
-			OnComponentsCreating (new ToolboxComponentsCreatingEventArgs (host));
-			IComponent[] Comp = CreateComponentsCore (host);
-			OnComponentsCreated (new ToolboxComponentsCreatedEventArgs (Comp));
-			return Comp;
-		}
-
-		// FIXME - get error handling logic correct
-		protected virtual IComponent[] CreateComponentsCore (IDesignerHost host)
-		{
-			if (host == null)
-				throw new ArgumentNullException("host");
-			
-			IComponent[] components;
-			Type type = GetType(host, AssemblyName, TypeName, true);
-			if (type == null)
-				components = new IComponent[] { };
-			else
-				components = new IComponent[] { host.CreateComponent(type) };
-
-			return components;
-		}
-
-		protected virtual IComponent[] CreateComponentsCore (IDesignerHost host, IDictionary defaultValues)
-		{
-			IComponent[] components = CreateComponentsCore (host);
-			foreach (Component c in components) {
-				IComponentInitializer initializer = host.GetDesigner (c) as IComponentInitializer;
-				initializer.InitializeNewComponent (defaultValues);
-			}
-			return components;
-		} 
-
-		public IComponent[] CreateComponents (IDesignerHost host, IDictionary defaultValues)
-		{
-			OnComponentsCreating (new ToolboxComponentsCreatingEventArgs (host));
-			IComponent[] components = CreateComponentsCore (host,  defaultValues);
-			OnComponentsCreated (new ToolboxComponentsCreatedEventArgs (components));
-
-			return components;
-		} 
-
-		protected virtual object FilterPropertyValue (string propertyName, object value)
-		{
-			switch (propertyName) {
-			case "AssemblyName":
-				return (value == null) ? null : (value as ICloneable).Clone ();
-			case "DisplayName":
-			case "TypeName":
-				return (value == null) ? String.Empty : value;
-			case "Filter":
-				return (value == null) ? new ToolboxItemFilterAttribute [0] : value;
-			default:
-				return value;
-			}
-		}
-
-		protected virtual void Deserialize (SerializationInfo info, StreamingContext context)
-		{			
-			AssemblyName = (AssemblyName)info.GetValue ("AssemblyName", typeof (AssemblyName));
-			Bitmap = (Bitmap)info.GetValue ("Bitmap", typeof (Bitmap));
-			Filter = (ICollection)info.GetValue ("Filter", typeof (ICollection));
-			DisplayName = info.GetString ("DisplayName");
-			locked = info.GetBoolean ("Locked");
-			TypeName = info.GetString ("TypeName");
-		}
-
-		// FIXME: too harsh??
-		public override bool Equals (object obj)
-		{
-			ToolboxItem ti = (obj as ToolboxItem);
-			if (ti == null)
-				return false;
-			if (obj == this)
-				return true;
-			return (ti.AssemblyName.Equals (AssemblyName) &&
-				ti.Locked.Equals (locked) &&
-				ti.TypeName.Equals (TypeName) &&
-				ti.DisplayName.Equals (DisplayName) &&
-				ti.Bitmap.Equals (Bitmap));
-		}
-		
-		public override int GetHashCode ()
-		{
-			// FIXME: other algorithm?
-			return string.Concat (TypeName, DisplayName).GetHashCode ();
-		}
-
-		public Type GetType (IDesignerHost host)
-		{
-			return GetType (host, this.AssemblyName,  this.TypeName,  false);
-		}
-
-		protected virtual Type GetType (IDesignerHost host, AssemblyName assemblyName, string typeName, bool reference)
-		{
-			if (typeName == null)
-				throw new ArgumentNullException ("typeName");
-
-			if (host == null)
-				return null;
-
-			//get ITypeResolutionService from host, as we have no other IServiceProvider here
-			ITypeResolutionService typeRes = host.GetService (typeof (ITypeResolutionService)) as ITypeResolutionService;
-			Type type = null;
-			if (typeRes != null) {
-				//TODO: Using Assembly loader to throw errors. Silent fail and return null?
-				typeRes.GetAssembly (assemblyName, true);
-				if (reference)
-					typeRes.ReferenceAssembly (assemblyName);
-				type = typeRes.GetType (typeName, true);
-			} else {
-				Assembly assembly = Assembly.Load (assemblyName);
-				if (assembly != null)
-					type = assembly.GetType (typeName);
-			}
-			return type;
-		}
-
-		// FIXME - Should we be returning empty bitmap, or null?
-		public virtual void Initialize (Type type) 
-		{
-			CheckUnlocked ();
-			if (type == null)
-				return;
-
-			AssemblyName = type.Assembly.GetName();
-			DisplayName = type.Name;
-			TypeName = type.FullName;
-			
-			// seems to be a right place to create the bitmap
-			System.Drawing.Image image = null;
-			foreach (object attribute in type.GetCustomAttributes(true)) {
-				ToolboxBitmapAttribute tba = attribute as ToolboxBitmapAttribute;
-				if (tba != null) {
-					image = tba.GetImage (type);
-					break;
-				}
-			}
-			//fallback: check for image even if not attribute
-			if (image == null)
-				image = ToolboxBitmapAttribute.GetImageFromResource (type, null, false);
-			
-			if (image != null) {
-				Bitmap = (image as Bitmap);
-				if (Bitmap == null)
-					Bitmap = new Bitmap (image);
-			}
-
-			Filter = type.GetCustomAttributes (typeof (ToolboxItemFilterAttribute), true);
-		}
-			
-		void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
-		{
-			Serialize (info, context);
-		}
-
-		public virtual void Lock () 
-		{
-			locked = true;
-		}
-
-		protected virtual void OnComponentsCreated (ToolboxComponentsCreatedEventArgs args)
-		{
-			if (ComponentsCreated != null)
-				this.ComponentsCreated (this, args);
-		}
-
-		protected virtual void OnComponentsCreating (ToolboxComponentsCreatingEventArgs args)
-		{
-			if (ComponentsCreating != null)
-				this.ComponentsCreating (this, args);
-		}
-
-		protected virtual void Serialize (SerializationInfo info, StreamingContext context)
-		{
-			info.AddValue ("AssemblyName", AssemblyName);
-			info.AddValue ("Bitmap", Bitmap);
-			info.AddValue ("Filter", Filter);
-			info.AddValue ("DisplayName", DisplayName);
-			info.AddValue ("Locked", locked);
-			info.AddValue ("TypeName", TypeName);
-		}
-
-		public override string ToString()
-		{
-			return DisplayName;
-		}
-
-		protected void ValidatePropertyType (string propertyName, object value, Type expectedType, bool allowNull)
-		{
-			if (!allowNull && (value == null))
-				throw new ArgumentNullException ("value");
-
-			if ((value != null) && !expectedType.Equals (value.GetType ())) {
-				string msg = Locale.GetText ("Type mismatch between value ({0}) and expected type ({1}).",
-					value.GetType (), expectedType);
-				throw new ArgumentException (msg, "value");
-			}
-		}
-
-		protected virtual object ValidatePropertyValue (string propertyName, object value)
-		{
-			switch (propertyName) {
-			case "AssemblyName":
-				ValidatePropertyType (propertyName, value, typeof (AssemblyName), true);
-				break;
-			case "Bitmap":
-				ValidatePropertyType (propertyName, value, typeof (Bitmap), true);
-				break;
-			case "Company":
-			case "Description":
-			case "DisplayName":
-			case "TypeName":
-				ValidatePropertyType (propertyName, value, typeof (string), true);
-				if (value == null)
-					value = String.Empty;
-				break;
-			case "IsTransient":
-				ValidatePropertyType (propertyName, value, typeof (bool), false);
-				break;
-			case "Filter":
-				ValidatePropertyType (propertyName, value, typeof (ToolboxItemFilterAttribute[]), true);
-				if (value == null)
-					value = new ToolboxItemFilterAttribute [0];
-				break;
-			case "DependentAssemblies":
-				ValidatePropertyType (propertyName, value, typeof (AssemblyName[]), true);
-				break;
-			default:
-				break;
-			}
-			return value;
-		}
-
-		private void SetValue (string propertyName, object value)
-		{
-			CheckUnlocked ();
-			properties [propertyName] = ValidatePropertyValue (propertyName, value);
-		}
-		private string GetValue (string propertyName)
-		{
-			string s = (string) properties [propertyName];
-			return (s == null) ? String.Empty : s;
-		}
-
-		public event ToolboxComponentsCreatedEventHandler ComponentsCreated;
-
-		public event ToolboxComponentsCreatingEventHandler ComponentsCreating;
-	}
-}
+//
+// System.Drawing.Design.ToolboxItem.cs
+//
+// Authors:
+//   Alejandro Sánchez Acosta
+//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//   Jordi Mas i Hernandez, jordimash@gmail.com
+//   Sebastien Pouliot  <sebastien@ximian.com>
+//
+// (C) Alejandro Sánchez Acosta
+// (C) 2003 Andreas Nahr
+// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.ComponentModel;
+using System.ComponentModel.Design;
+using System.Reflection;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.Drawing.Design 
+{
+	[Serializable]
+	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
+	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
+	[MonoTODO ("Implementation is incomplete.")]
+	public class ToolboxItem : ISerializable {
+
+		private bool locked = false;
+		private Hashtable properties = new Hashtable ();
+		
+		public ToolboxItem ()
+		{
+		}
+
+		public ToolboxItem (Type toolType)
+		{
+			Initialize (toolType);
+		}
+
+		public AssemblyName AssemblyName {
+			get { return (AssemblyName) properties["AssemblyName"]; }
+			set { SetValue ("AssemblyName", value); }
+		}
+
+		public Bitmap Bitmap {
+			get { return (Bitmap) properties["Bitmap"]; }
+			set { SetValue ("Bitmap", value); }
+		}
+
+		public string DisplayName {
+			get { return GetValue ("DisplayName"); }
+			set { SetValue ("DisplayName", value); }
+		}
+
+		public ICollection Filter {
+			get {
+				ICollection filter = (ICollection) properties["Filter"];
+				if (filter == null)
+					filter = new ToolboxItemFilterAttribute[0];
+				return filter;
+			}
+			set { SetValue ("Filter", value); }
+		}
+		public virtual bool Locked {
+			get { return locked; }
+		}
+
+		public string TypeName {
+			get { return GetValue ("TypeName"); }
+			set { SetValue ("TypeName", value); }
+		}
+		public string Company {
+			get { return (string) properties["Company"]; }
+			set { SetValue ("Company", value); }
+		}
+
+		public virtual string ComponentType {
+			get { return ".NET Component"; }
+		}
+
+		public AssemblyName[] DependentAssemblies {
+			get { return (AssemblyName[]) properties["DependentAssemblies"]; }
+			set {
+				AssemblyName[] names = new AssemblyName [value.Length];
+				for (int i=0; i < names.Length; i++)
+					names [i] = value [i];
+				SetValue ("DependentAssemblies", names);
+			}
+		}
+
+		public string Description {
+			get { return (string) properties["Description"]; }
+			set { SetValue ("Description", value); }
+		}
+
+		public bool IsTransient {			
+			get {
+				object o = properties ["IsTransient"];
+				return (o == null) ? false : (bool) o;
+			}
+			set { SetValue ("IsTransient", value); }
+		}
+
+		public IDictionary Properties {
+			 get { return properties; }
+		}
+
+		public virtual string Version { 
+			get { return string.Empty; }
+		}				
+
+		protected void CheckUnlocked ()
+		{
+			if (locked)
+				throw new InvalidOperationException ("The ToolboxItem is locked");
+		}
+
+		public IComponent[] CreateComponents () 
+		{
+			return CreateComponents (null);
+		}
+
+		public IComponent[] CreateComponents (IDesignerHost host)
+		{
+			OnComponentsCreating (new ToolboxComponentsCreatingEventArgs (host));
+			IComponent[] Comp = CreateComponentsCore (host);
+			OnComponentsCreated (new ToolboxComponentsCreatedEventArgs (Comp));
+			return Comp;
+		}
+
+		// FIXME - get error handling logic correct
+		protected virtual IComponent[] CreateComponentsCore (IDesignerHost host)
+		{
+			if (host == null)
+				throw new ArgumentNullException("host");
+			
+			IComponent[] components;
+			Type type = GetType(host, AssemblyName, TypeName, true);
+			if (type == null)
+				components = new IComponent[] { };
+			else
+				components = new IComponent[] { host.CreateComponent(type) };
+
+			return components;
+		}
+
+		protected virtual IComponent[] CreateComponentsCore (IDesignerHost host, IDictionary defaultValues)
+		{
+			IComponent[] components = CreateComponentsCore (host);
+			foreach (Component c in components) {
+				IComponentInitializer initializer = host.GetDesigner (c) as IComponentInitializer;
+				initializer.InitializeNewComponent (defaultValues);
+			}
+			return components;
+		} 
+
+		public IComponent[] CreateComponents (IDesignerHost host, IDictionary defaultValues)
+		{
+			OnComponentsCreating (new ToolboxComponentsCreatingEventArgs (host));
+			IComponent[] components = CreateComponentsCore (host,  defaultValues);
+			OnComponentsCreated (new ToolboxComponentsCreatedEventArgs (components));
+
+			return components;
+		} 
+
+		protected virtual object FilterPropertyValue (string propertyName, object value)
+		{
+			switch (propertyName) {
+			case "AssemblyName":
+				return (value == null) ? null : (value as ICloneable).Clone ();
+			case "DisplayName":
+			case "TypeName":
+				return (value == null) ? String.Empty : value;
+			case "Filter":
+				return (value == null) ? new ToolboxItemFilterAttribute [0] : value;
+			default:
+				return value;
+			}
+		}
+
+		protected virtual void Deserialize (SerializationInfo info, StreamingContext context)
+		{			
+			AssemblyName = (AssemblyName)info.GetValue ("AssemblyName", typeof (AssemblyName));
+			Bitmap = (Bitmap)info.GetValue ("Bitmap", typeof (Bitmap));
+			Filter = (ICollection)info.GetValue ("Filter", typeof (ICollection));
+			DisplayName = info.GetString ("DisplayName");
+			locked = info.GetBoolean ("Locked");
+			TypeName = info.GetString ("TypeName");
+		}
+
+		// FIXME: too harsh??
+		public override bool Equals (object obj)
+		{
+			ToolboxItem ti = (obj as ToolboxItem);
+			if (ti == null)
+				return false;
+			if (obj == this)
+				return true;
+			return (ti.AssemblyName.Equals (AssemblyName) &&
+				ti.Locked.Equals (locked) &&
+				ti.TypeName.Equals (TypeName) &&
+				ti.DisplayName.Equals (DisplayName) &&
+				ti.Bitmap.Equals (Bitmap));
+		}
+		
+		public override int GetHashCode ()
+		{
+			// FIXME: other algorithm?
+			return string.Concat (TypeName, DisplayName).GetHashCode ();
+		}
+
+		public Type GetType (IDesignerHost host)
+		{
+			return GetType (host, this.AssemblyName,  this.TypeName,  false);
+		}
+
+		protected virtual Type GetType (IDesignerHost host, AssemblyName assemblyName, string typeName, bool reference)
+		{
+			if (typeName == null)
+				throw new ArgumentNullException ("typeName");
+
+			if (host == null)
+				return null;
+
+			//get ITypeResolutionService from host, as we have no other IServiceProvider here
+			ITypeResolutionService typeRes = host.GetService (typeof (ITypeResolutionService)) as ITypeResolutionService;
+			Type type = null;
+			if (typeRes != null) {
+				//TODO: Using Assembly loader to throw errors. Silent fail and return null?
+				typeRes.GetAssembly (assemblyName, true);
+				if (reference)
+					typeRes.ReferenceAssembly (assemblyName);
+				type = typeRes.GetType (typeName, true);
+			} else {
+				Assembly assembly = Assembly.Load (assemblyName);
+				if (assembly != null)
+					type = assembly.GetType (typeName);
+			}
+			return type;
+		}
+
+		// FIXME - Should we be returning empty bitmap, or null?
+		public virtual void Initialize (Type type) 
+		{
+			CheckUnlocked ();
+			if (type == null)
+				return;
+
+			AssemblyName = type.Assembly.GetName();
+			DisplayName = type.Name;
+			TypeName = type.FullName;
+			
+			// seems to be a right place to create the bitmap
+			System.Drawing.Image image = null;
+			foreach (object attribute in type.GetCustomAttributes(true)) {
+				ToolboxBitmapAttribute tba = attribute as ToolboxBitmapAttribute;
+				if (tba != null) {
+					image = tba.GetImage (type);
+					break;
+				}
+			}
+			//fallback: check for image even if not attribute
+			if (image == null)
+				image = ToolboxBitmapAttribute.GetImageFromResource (type, null, false);
+			
+			if (image != null) {
+				Bitmap = (image as Bitmap);
+				if (Bitmap == null)
+					Bitmap = new Bitmap (image);
+			}
+
+			Filter = type.GetCustomAttributes (typeof (ToolboxItemFilterAttribute), true);
+		}
+			
+		void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context)
+		{
+			Serialize (info, context);
+		}
+
+		public virtual void Lock () 
+		{
+			locked = true;
+		}
+
+		protected virtual void OnComponentsCreated (ToolboxComponentsCreatedEventArgs args)
+		{
+			if (ComponentsCreated != null)
+				this.ComponentsCreated (this, args);
+		}
+
+		protected virtual void OnComponentsCreating (ToolboxComponentsCreatingEventArgs args)
+		{
+			if (ComponentsCreating != null)
+				this.ComponentsCreating (this, args);
+		}
+
+		protected virtual void Serialize (SerializationInfo info, StreamingContext context)
+		{
+			info.AddValue ("AssemblyName", AssemblyName);
+			info.AddValue ("Bitmap", Bitmap);
+			info.AddValue ("Filter", Filter);
+			info.AddValue ("DisplayName", DisplayName);
+			info.AddValue ("Locked", locked);
+			info.AddValue ("TypeName", TypeName);
+		}
+
+		public override string ToString()
+		{
+			return DisplayName;
+		}
+
+		protected void ValidatePropertyType (string propertyName, object value, Type expectedType, bool allowNull)
+		{
+			if (!allowNull && (value == null))
+				throw new ArgumentNullException ("value");
+
+			if ((value != null) && !expectedType.Equals (value.GetType ())) {
+				string msg = Locale.GetText ("Type mismatch between value ({0}) and expected type ({1}).",
+					value.GetType (), expectedType);
+				throw new ArgumentException (msg, "value");
+			}
+		}
+
+		protected virtual object ValidatePropertyValue (string propertyName, object value)
+		{
+			switch (propertyName) {
+			case "AssemblyName":
+				ValidatePropertyType (propertyName, value, typeof (AssemblyName), true);
+				break;
+			case "Bitmap":
+				ValidatePropertyType (propertyName, value, typeof (Bitmap), true);
+				break;
+			case "Company":
+			case "Description":
+			case "DisplayName":
+			case "TypeName":
+				ValidatePropertyType (propertyName, value, typeof (string), true);
+				if (value == null)
+					value = String.Empty;
+				break;
+			case "IsTransient":
+				ValidatePropertyType (propertyName, value, typeof (bool), false);
+				break;
+			case "Filter":
+				ValidatePropertyType (propertyName, value, typeof (ToolboxItemFilterAttribute[]), true);
+				if (value == null)
+					value = new ToolboxItemFilterAttribute [0];
+				break;
+			case "DependentAssemblies":
+				ValidatePropertyType (propertyName, value, typeof (AssemblyName[]), true);
+				break;
+			default:
+				break;
+			}
+			return value;
+		}
+
+		private void SetValue (string propertyName, object value)
+		{
+			CheckUnlocked ();
+			properties [propertyName] = ValidatePropertyValue (propertyName, value);
+		}
+		private string GetValue (string propertyName)
+		{
+			string s = (string) properties [propertyName];
+			return (s == null) ? String.Empty : s;
+		}
+
+		public event ToolboxComponentsCreatedEventHandler ComponentsCreated;
+
+		public event ToolboxComponentsCreatingEventHandler ComponentsCreating;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/Duplex.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/Duplex.cs
@@ -1,9 +1,9 @@
-//
-// System.Drawing.Duplex.cs
-//
-// (C) 2001 Ximian, Inc.  http://www.ximian.com
-// Author: Dennis Hayes (dennish@raytek.com)
-//
+//
+// System.Drawing.Duplex.cs
+//
+// (C) 2001 Ximian, Inc.  http://www.ximian.com
+// Author: Dennis Hayes (dennish@raytek.com)
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -27,14 +27,14 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-namespace System.Drawing.Printing 
+using System;
+namespace System.Drawing.Printing 
 {
 	[Serializable]
-	public enum Duplex {
-		Default = -1,
-		Horizontal = 3,
-		Simplex = 1,
-		Vertical = 2
-	}
-}
+	public enum Duplex {
+		Default = -1,
+		Horizontal = 3,
+		Simplex = 1,
+		Vertical = 2
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PaperKind.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PaperKind.cs
@@ -1,155 +1,155 @@
-//
-// System.Drawing.PaperKind.cs
-//
-// (C) 2002 Ximian, Inc.  http://www.ximian.com
-// Author: Dennis Hayes (dennish@raytek.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace System.Drawing.Printing 
-{
-	[Serializable]
-	public enum PaperKind
-	{
-		A2 = 66,
-		A3 = 8,
-		A3Extra = 63,
-		A3ExtraTransverse = 68,
-		A3Rotated = 76,
-		A3Transverse = 67,
-		A4 = 9,
-		A4Extra = 53,
-		A4Plus = 60,
-		A4Rotated = 77,
-		A4Small = 10,
-		A4Transverse = 55,
-		A5 = 11,
-		A5Extra = 64,
-		A5Rotated = 78,
-		A5Transverse = 61,
-		A6 = 70,
-		A6Rotated = 83,
-		APlus = 57,
-		B4 = 12,
-		B4Envelope = 33,
-		B4JisRotated = 79,
-		B5 = 13,
-		B5Envelope = 34,
-		B5Extra = 65,
-		B5JisRotated = 80,
-		B5Transverse = 62,
-		B6Envelope = 35,
-		B6Jis = 88,
-		B6JisRotated = 89,
-		BPlus = 58,
-		C3Envelope = 29,
-		C4Envelope = 30,
-		C5Envelope = 28,
-		C65Envelope = 32,
-		C6Envelope = 31,
-		CSheet = 24,
-		Custom = 0,
-		DLEnvelope = 27,
-		DSheet = 25,
-		ESheet = 26,
-		Executive = 7,
-		Folio = 14,
-		GermanLegalFanfold = 41,
-		GermanStandardFanfold = 40,
-		InviteEnvelope = 47,
-		IsoB4 = 42,
-		ItalyEnvelope = 36,
-		JapaneseDoublePostcard = 69,
-		JapaneseDoublePostcardRotated = 82,
-		JapaneseEnvelopeChouNumber3 = 73,
-		JapaneseEnvelopeChouNumber3Rotated = 86,
-		JapaneseEnvelopeChouNumber4 = 74,
-		JapaneseEnvelopeChouNumber4Rotated = 87,
-		JapaneseEnvelopeKakuNumber2 = 71,
-		JapaneseEnvelopeKakuNumber2Rotated = 84,
-		JapaneseEnvelopeKakuNumber3 = 72,
-		JapaneseEnvelopeKakuNumber3Rotated = 85,
-		JapaneseEnvelopeYouNumber4 = 91,
-		JapaneseEnvelopeYouNumber4Rotated = 92,
-		JapanesePostcard = 43,
-		JapanesePostcardRotated = 81,
-		Ledger = 4,
-		Legal = 5,
-		LegalExtra = 51,
-		Letter = 1,
-		LetterExtra = 50,
-		LetterExtraTransverse = 56,
-		LetterPlus = 59,
-		LetterRotated = 75,
-		LetterSmall = 2,
-		LetterTransverse = 54,
-		MonarchEnvelope = 37,
-		Note = 18,
-		Number10Envelope = 20,
-		Number11Envelope = 21,
-		Number12Envelope = 22,
-		Number14Envelope = 23,
-		Number9Envelope = 19,
-		PersonalEnvelope = 38,
-		Prc16K = 93,
-		Prc16KRotated = 106,
-		Prc32K = 94,
-		Prc32KBig = 95,
-		Prc32KBigRotated = 108,
-		Prc32KRotated = 107,
-		PrcEnvelopeNumber1 = 96,
-		PrcEnvelopeNumber10 = 105,
-		PrcEnvelopeNumber10Rotated = 118,
-		PrcEnvelopeNumber1Rotated = 109,
-		PrcEnvelopeNumber2 = 97,
-		PrcEnvelopeNumber2Rotated = 110,
-		PrcEnvelopeNumber3 = 98,
-		PrcEnvelopeNumber3Rotated = 111,
-		PrcEnvelopeNumber4 = 99,
-		PrcEnvelopeNumber4Rotated = 112,
-		PrcEnvelopeNumber5 = 100,
-		PrcEnvelopeNumber5Rotated = 113,
-		PrcEnvelopeNumber6 = 101,
-		PrcEnvelopeNumber6Rotated = 114,
-		PrcEnvelopeNumber7 = 102,
-		PrcEnvelopeNumber7Rotated = 115,
-		PrcEnvelopeNumber8 = 103,
-		PrcEnvelopeNumber8Rotated = 116,
-		PrcEnvelopeNumber9 = 104,
-		PrcEnvelopeNumber9Rotated = 117,
-		Quarto = 15,
-		Standard10x11 = 45,
-		Standard10x14 = 16,
-		Standard11x17 = 17,
-		Standard12x11 = 90,
-		Standard15x11 = 46,
-		Standard9x11 = 44,
-		Statement = 6,
-		Tabloid = 3,
-		TabloidExtra = 52,
-		USStandardFanfold = 39
-	}
-}
+//
+// System.Drawing.PaperKind.cs
+//
+// (C) 2002 Ximian, Inc.  http://www.ximian.com
+// Author: Dennis Hayes (dennish@raytek.com)
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+
+namespace System.Drawing.Printing 
+{
+	[Serializable]
+	public enum PaperKind
+	{
+		A2 = 66,
+		A3 = 8,
+		A3Extra = 63,
+		A3ExtraTransverse = 68,
+		A3Rotated = 76,
+		A3Transverse = 67,
+		A4 = 9,
+		A4Extra = 53,
+		A4Plus = 60,
+		A4Rotated = 77,
+		A4Small = 10,
+		A4Transverse = 55,
+		A5 = 11,
+		A5Extra = 64,
+		A5Rotated = 78,
+		A5Transverse = 61,
+		A6 = 70,
+		A6Rotated = 83,
+		APlus = 57,
+		B4 = 12,
+		B4Envelope = 33,
+		B4JisRotated = 79,
+		B5 = 13,
+		B5Envelope = 34,
+		B5Extra = 65,
+		B5JisRotated = 80,
+		B5Transverse = 62,
+		B6Envelope = 35,
+		B6Jis = 88,
+		B6JisRotated = 89,
+		BPlus = 58,
+		C3Envelope = 29,
+		C4Envelope = 30,
+		C5Envelope = 28,
+		C65Envelope = 32,
+		C6Envelope = 31,
+		CSheet = 24,
+		Custom = 0,
+		DLEnvelope = 27,
+		DSheet = 25,
+		ESheet = 26,
+		Executive = 7,
+		Folio = 14,
+		GermanLegalFanfold = 41,
+		GermanStandardFanfold = 40,
+		InviteEnvelope = 47,
+		IsoB4 = 42,
+		ItalyEnvelope = 36,
+		JapaneseDoublePostcard = 69,
+		JapaneseDoublePostcardRotated = 82,
+		JapaneseEnvelopeChouNumber3 = 73,
+		JapaneseEnvelopeChouNumber3Rotated = 86,
+		JapaneseEnvelopeChouNumber4 = 74,
+		JapaneseEnvelopeChouNumber4Rotated = 87,
+		JapaneseEnvelopeKakuNumber2 = 71,
+		JapaneseEnvelopeKakuNumber2Rotated = 84,
+		JapaneseEnvelopeKakuNumber3 = 72,
+		JapaneseEnvelopeKakuNumber3Rotated = 85,
+		JapaneseEnvelopeYouNumber4 = 91,
+		JapaneseEnvelopeYouNumber4Rotated = 92,
+		JapanesePostcard = 43,
+		JapanesePostcardRotated = 81,
+		Ledger = 4,
+		Legal = 5,
+		LegalExtra = 51,
+		Letter = 1,
+		LetterExtra = 50,
+		LetterExtraTransverse = 56,
+		LetterPlus = 59,
+		LetterRotated = 75,
+		LetterSmall = 2,
+		LetterTransverse = 54,
+		MonarchEnvelope = 37,
+		Note = 18,
+		Number10Envelope = 20,
+		Number11Envelope = 21,
+		Number12Envelope = 22,
+		Number14Envelope = 23,
+		Number9Envelope = 19,
+		PersonalEnvelope = 38,
+		Prc16K = 93,
+		Prc16KRotated = 106,
+		Prc32K = 94,
+		Prc32KBig = 95,
+		Prc32KBigRotated = 108,
+		Prc32KRotated = 107,
+		PrcEnvelopeNumber1 = 96,
+		PrcEnvelopeNumber10 = 105,
+		PrcEnvelopeNumber10Rotated = 118,
+		PrcEnvelopeNumber1Rotated = 109,
+		PrcEnvelopeNumber2 = 97,
+		PrcEnvelopeNumber2Rotated = 110,
+		PrcEnvelopeNumber3 = 98,
+		PrcEnvelopeNumber3Rotated = 111,
+		PrcEnvelopeNumber4 = 99,
+		PrcEnvelopeNumber4Rotated = 112,
+		PrcEnvelopeNumber5 = 100,
+		PrcEnvelopeNumber5Rotated = 113,
+		PrcEnvelopeNumber6 = 101,
+		PrcEnvelopeNumber6Rotated = 114,
+		PrcEnvelopeNumber7 = 102,
+		PrcEnvelopeNumber7Rotated = 115,
+		PrcEnvelopeNumber8 = 103,
+		PrcEnvelopeNumber8Rotated = 116,
+		PrcEnvelopeNumber9 = 104,
+		PrcEnvelopeNumber9Rotated = 117,
+		Quarto = 15,
+		Standard10x11 = 45,
+		Standard10x14 = 16,
+		Standard11x17 = 17,
+		Standard12x11 = 90,
+		Standard15x11 = 46,
+		Standard9x11 = 44,
+		Statement = 6,
+		Tabloid = 3,
+		TabloidExtra = 52,
+		USStandardFanfold = 39
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PaperSourceKind.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PaperSourceKind.cs
@@ -1,9 +1,9 @@
-//
-// System.Drawing.PaperSourceKind.cs
-//
-// (C) 2002 Ximian, Inc.  http://www.ximian.com
-// Author: Dennis Hayes (dennish@raytek.com)
-//
+//
+// System.Drawing.PaperSourceKind.cs
+//
+// (C) 2002 Ximian, Inc.  http://www.ximian.com
+// Author: Dennis Hayes (dennish@raytek.com)
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -27,24 +27,24 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-namespace System.Drawing.Printing
-{
+using System;
+namespace System.Drawing.Printing
+{
 	[Serializable]
-	public enum PaperSourceKind {
-		AutomaticFeed = 7,
-		Cassette = 14,
-		Custom = 257,
-		Envelope = 5,
-		FormSource = 15,
-		LargeCapacity = 11,
-		LargeFormat = 10,
-		Lower = 2,
-		Manual = 4,
-		ManualFeed = 6,
-		Middle = 3,
-		SmallFormat = 9,
-		TractorFeed = 8,
-		Upper = 1
-	}
-}
+	public enum PaperSourceKind {
+		AutomaticFeed = 7,
+		Cassette = 14,
+		Custom = 257,
+		Envelope = 5,
+		FormSource = 15,
+		LargeCapacity = 11,
+		LargeFormat = 10,
+		Lower = 2,
+		Manual = 4,
+		ManualFeed = 6,
+		Middle = 3,
+		SmallFormat = 9,
+		TractorFeed = 8,
+		Upper = 1
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PrintPageEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PrintPageEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// System.Drawing.PrintPageEventHandler.cs
-//
-// Author:
-//   Dennis Hayes (dennish@Raytek.com)
-//
-// (C) 2002 Ximian, Inc
-//
+//
+// System.Drawing.PrintPageEventHandler.cs
+//
+// Author:
+//   Dennis Hayes (dennish@Raytek.com)
+//
+// (C) 2002 Ximian, Inc
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -29,12 +29,12 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Drawing.Printing
-{
-	/// <summary>
-	/// Summary description for PrintPageEventHandler.
-	/// </summary>
-	public delegate void PrintPageEventHandler(object sender, PrintPageEventArgs e);
-}
+using System;
+
+namespace System.Drawing.Printing
+{
+	/// <summary>
+	/// Summary description for PrintPageEventHandler.
+	/// </summary>
+	public delegate void PrintPageEventHandler(object sender, PrintPageEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PrintRange.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PrintRange.cs
@@ -1,9 +1,9 @@
-//
-// System.Drawing.PrintRange.cs
-//
-// (C) 2002 Ximian, Inc.  http://www.ximian.com
-// Author: Dennis Hayes (dennish@raytek.com)
-//
+//
+// System.Drawing.PrintRange.cs
+//
+// (C) 2002 Ximian, Inc.  http://www.ximian.com
+// Author: Dennis Hayes (dennish@raytek.com)
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -27,14 +27,14 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-namespace System.Drawing.Printing 
+using System;
+namespace System.Drawing.Printing 
 {
 	[Serializable]
-	public enum PrintRange {
-		AllPages = 0,
-		Selection = 1,
+	public enum PrintRange {
+		AllPages = 0,
+		Selection = 1,
 		SomePages = 2,
 		CurrentPage = 0x400000
-	}
-}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PrinterResolution.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PrinterResolution.cs
@@ -1,13 +1,13 @@
-//
-// System.Drawing.Printing.PrinterResolution.cs
-//
-// Author:
+//
+// System.Drawing.Printing.PrinterResolution.cs
+//
+// Author:
 //   Dennis Hayes (dennish@Raytek.com)
-//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
+//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//
 // (C) 2002 Ximian, Inc
-// (C) 2003 Andreas Nahr
-//
+// (C) 2003 Andreas Nahr
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -31,16 +31,16 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
+using System;
+
 namespace System.Drawing.Printing 
-{
+{
 
 	[Serializable]
 	public class PrinterResolution 
-	{
-		private PrinterResolutionKind kind = PrinterResolutionKind.Custom;
-		private int x;
+	{
+		private PrinterResolutionKind kind = PrinterResolutionKind.Custom;
+		private int x;
 		private int y;
 		
 		public PrinterResolution ()
@@ -53,28 +53,28 @@ namespace System.Drawing.Printing
 			this.y = y;
 			this.kind = kind;
 		}
-
-		public int X {
-			get {
-				return x;
+
+		public int X {
+			get {
+				return x;
 			}
 			set {
 				x = value;
 			}
 		}
-
-		public int Y {
-			get {
-				return y;
+
+		public int Y {
+			get {
+				return y;
 			}
 			set {
 				y = value;
 			}
 		}
-
-		public PrinterResolutionKind Kind {
-			get {
-				return kind;
+
+		public PrinterResolutionKind Kind {
+			get {
+				return kind;
 			}
 			set {
 				kind = value;
@@ -87,6 +87,6 @@ namespace System.Drawing.Printing
 				return "[PrinterResolution " + kind.ToString () +  "]";
 			
 			return "[PrinterResolution X=" + x + " Y=" + y + "]";
-		}
-	}
-}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PrinterResolutionKind.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PrinterResolutionKind.cs
@@ -1,9 +1,9 @@
-//
-// System.Drawing.PrinterResolutionKind.cs
-//
-// (C) 2002 Ximian, Inc.  http://www.ximian.com
-// Author: Dennis Hayes (dennish@raytek.com)
-//
+//
+// System.Drawing.PrinterResolutionKind.cs
+//
+// (C) 2002 Ximian, Inc.  http://www.ximian.com
+// Author: Dennis Hayes (dennish@raytek.com)
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -27,15 +27,15 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-namespace System.Drawing.Printing 
+using System;
+namespace System.Drawing.Printing 
 {
 	[Serializable]
-	public enum PrinterResolutionKind {
-		Custom = 0,
-		Draft = -1,
-		High = -4,
-		Low = -2,
-		Medium = -3
-	}
-}
+	public enum PrinterResolutionKind {
+		Custom = 0,
+		Draft = -1,
+		High = -4,
+		Low = -2,
+		Medium = -3
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PrinterUnit.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PrinterUnit.cs
@@ -1,9 +1,9 @@
-//
-// System.Drawing.PrinterUnit.cs
-//
-// (C) 2002 Ximian, Inc.  http://www.ximian.com
-// Author: Dennis Hayes (dennish@raytek.com)
-//
+//
+// System.Drawing.PrinterUnit.cs
+//
+// (C) 2002 Ximian, Inc.  http://www.ximian.com
+// Author: Dennis Hayes (dennish@raytek.com)
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -27,13 +27,13 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-namespace System.Drawing.Printing 
-{
-	public enum PrinterUnit {
-		Display = 0,
-		HundredthsOfAMillimeter = 2,
-		TenthsOfAMillimeter = 3,
-		ThousandthsOfAnInch = 1
-	}
-}
+using System;
+namespace System.Drawing.Printing 
+{
+	public enum PrinterUnit {
+		Display = 0,
+		HundredthsOfAMillimeter = 2,
+		TenthsOfAMillimeter = 3,
+		ThousandthsOfAnInch = 1
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/PrintingPermissionLevel.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/PrintingPermissionLevel.cs
@@ -1,10 +1,10 @@
-//
-// System.Drawing.PrintingPermissionLevel.cs
-//
+//
+// System.Drawing.PrintingPermissionLevel.cs
+//
 // Author:
-//	Dennis Hayes (dennish@raytek.com)
+//	Dennis Hayes (dennish@raytek.com)
 //
-// (C) 2002 Ximian, Inc.  http://www.ximian.com
+// (C) 2002 Ximian, Inc.  http://www.ximian.com
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -30,10 +30,10 @@
 namespace System.Drawing.Printing {
 
 	[Serializable]
-	public enum PrintingPermissionLevel {
-		AllPrinting = 3,
-		DefaultPrinting = 2,
-		NoPrinting = 0,
-		SafePrinting = 1
-	}
-}
+	public enum PrintingPermissionLevel {
+		AllPrinting = 3,
+		DefaultPrinting = 2,
+		NoPrinting = 0,
+		SafePrinting = 1
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/System.Drawing.Printing/QueryPageSettingsEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/System.Drawing.Printing/QueryPageSettingsEventArgs.cs
@@ -1,11 +1,11 @@
-//
-// System.Drawing.QueryPageSettingsEventArgs.cs
-//
-// Author:
-//   Dennis Hayes (dennish@Raytek.com)
-//
-// (C) 2002 Ximian, Inc
-//
+//
+// System.Drawing.QueryPageSettingsEventArgs.cs
+//
+// Author:
+//   Dennis Hayes (dennish@Raytek.com)
+//
+// (C) 2002 Ximian, Inc
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -29,29 +29,29 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-
-namespace System.Drawing.Printing
-{
-	/// <summary>
-	/// Summary description for QueryPageSettingEventArgs.
-	/// </summary>
-	public class QueryPageSettingsEventArgs : PrintEventArgs
-	{
-		private PageSettings pageSettings;
-
-		public QueryPageSettingsEventArgs(PageSettings pageSettings)
-		{
-			this.pageSettings = pageSettings;
-		}
-		public PageSettings PageSettings {
-			get{
-			return pageSettings;
-		}
-			set{
-				pageSettings = value;
-			}
-		}
-
-	}
-}
+using System;
+
+namespace System.Drawing.Printing
+{
+	/// <summary>
+	/// Summary description for QueryPageSettingEventArgs.
+	/// </summary>
+	public class QueryPageSettingsEventArgs : PrintEventArgs
+	{
+		private PageSettings pageSettings;
+
+		public QueryPageSettingsEventArgs(PageSettings pageSettings)
+		{
+			this.pageSettings = pageSettings;
+		}
+		public PageSettings PageSettings {
+			get{
+			return pageSettings;
+		}
+			set{
+				pageSettings = value;
+			}
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/Test/DrawingTest/Exocortex.DSP/doc/Exocortex.DSP.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/Test/DrawingTest/Exocortex.DSP/doc/Exocortex.DSP.xml
@@ -1,1124 +1,1124 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>Exocortex.DSP.v1</name>
-    </assembly>
-    <members>
-        <member name="T:Exocortex.DSP.Complex">
-            <summary>
-            <p>A double-precision complex number representation.</p>
-            </summary>
-        </member>
-        <member name="F:Exocortex.DSP.Complex.Re">
-            <summary>
-            The real component of the complex number
-            </summary>
-        </member>
-        <member name="F:Exocortex.DSP.Complex.Im">
-            <summary>
-            The imaginary component of the complex number
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.#ctor(System.Double,System.Double)">
-            <summary>
-            Create a complex number from a real and an imaginary component
-            </summary>
-            <param name="real"></param>
-            <param name="imaginary"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.#ctor(Exocortex.DSP.Complex)">
-            <summary>
-            Create a complex number based on an existing complex number
-            </summary>
-            <param name="c"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.FromRealImaginary(System.Double,System.Double)">
-            <summary>
-            Create a complex number from a real and an imaginary component
-            </summary>
-            <param name="real"></param>
-            <param name="imaginary"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.FromModulusArgument(System.Double,System.Double)">
-            <summary>
-            Create a complex number from a modulus (length) and an argument (radian)
-            </summary>
-            <param name="modulus"></param>
-            <param name="argument"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.Clone">
-            <summary>
-            Clone the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.GetModulus">
-            <summary>
-            The modulus (length) of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.GetModulusSquared">
-            <summary>
-            The squared modulus (length^2) of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.GetArgument">
-            <summary>
-            The argument (radians) of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.GetConjugate">
-            <summary>
-            Get the conjugate of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.Normalize">
-            <summary>
-            Scale the complex number to 1.
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Explicit(Exocortex.DSP.ComplexF)~Exocortex.DSP.Complex">
-            <summary>
-            Convert to a from double precision complex number to a single precison complex number
-            </summary>
-            <param name="cF"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Explicit(System.Double)~Exocortex.DSP.Complex">
-            <summary>
-            Convert from a single precision real number to a complex number
-            </summary>
-            <param name="d"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Explicit(Exocortex.DSP.Complex)~System.Double">
-            <summary>
-            Convert from a single precision complex to a real number
-            </summary>
-            <param name="c"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Equality(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
-            <summary>
-            Are these two complex numbers equivalent?
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Inequality(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
-            <summary>
-            Are these two complex numbers different?
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.GetHashCode">
-            <summary>
-            Get the hash code of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.Equals(System.Object)">
-            <summary>
-            Is this complex number equivalent to another object?
-            </summary>
-            <param name="o"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.CompareTo(System.Object)">
-            <summary>
-            Compare to other complex numbers or real numbers
-            </summary>
-            <param name="o"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_UnaryPlus(Exocortex.DSP.Complex)">
-            <summary>
-            This operator doesn't do much. :-)
-            </summary>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_UnaryNegation(Exocortex.DSP.Complex)">
-            <summary>
-            Negate the complex number
-            </summary>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Addition(Exocortex.DSP.Complex,System.Double)">
-            <summary>
-            Add a complex number to a real
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Addition(System.Double,Exocortex.DSP.Complex)">
-            <summary>
-            Add a real to a complex number
-            </summary>
-            <param name="f"></param>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Addition(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
-            <summary>
-            Add to complex numbers
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Subtraction(Exocortex.DSP.Complex,System.Double)">
-            <summary>
-            Subtract a real from a complex number
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Subtraction(System.Double,Exocortex.DSP.Complex)">
-            <summary>
-            Subtract a complex number from a real
-            </summary>
-            <param name="f"></param>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Subtraction(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
-            <summary>
-            Subtract two complex numbers
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Multiply(Exocortex.DSP.Complex,System.Double)">
-            <summary>
-            Multiply a complex number by a real
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Multiply(System.Double,Exocortex.DSP.Complex)">
-            <summary>
-            Multiply a real by a complex number
-            </summary>
-            <param name="f"></param>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Multiply(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
-            <summary>
-            Multiply two complex numbers together
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Division(Exocortex.DSP.Complex,System.Double)">
-            <summary>
-            Divide a complex number by a real number
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.op_Division(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
-            <summary>
-            Divide a complex number by a complex number
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.Parse(System.String)">
-            <summary>
-            Parse a complex representation in this fashion: "( %f, %f )"
-            </summary>
-            <param name="s"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.ToString">
-            <summary>
-            Get the string representation
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.Complex.IsEqual(Exocortex.DSP.Complex,Exocortex.DSP.Complex,System.Double)">
-            <summary>
-            Determine whether two complex numbers are almost (i.e. within the tolerance) equivalent.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <param name="tolerance"></param>
-            <returns></returns>
-        </member>
-        <member name="P:Exocortex.DSP.Complex.Zero">
-            <summary>
-            Represents zero
-            </summary>
-        </member>
-        <member name="P:Exocortex.DSP.Complex.I">
-            <summary>
-            Represents the result of sqrt( -1 )
-            </summary>
-        </member>
-        <member name="P:Exocortex.DSP.Complex.MaxValue">
-            <summary>
-            Represents the largest possible value of Complex.
-            </summary>
-        </member>
-        <member name="P:Exocortex.DSP.Complex.MinValue">
-            <summary>
-            Represents the smallest possible value of Complex.
-            </summary>
-        </member>
-        <member name="T:Exocortex.DSP.ComplexArray">
-            <summary>
-            <p>A set of array utilities for complex number arrays</p>
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.ClampLength(Exocortex.DSP.Complex[],System.Double,System.Double)">
-            <summary>
-            Clamp length (modulus) of the elements in the complex array
-            </summary>
-            <param name="array"></param>
-            <param name="fMinimum"></param>
-            <param name="fMaximum"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Clamp(Exocortex.DSP.Complex[],Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
-            <summary>
-            Clamp elements in the complex array to range [minimum,maximum]
-            </summary>
-            <param name="array"></param>
-            <param name="minimum"></param>
-            <param name="maximum"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.ClampToRealUnit(Exocortex.DSP.Complex[])">
-            <summary>
-            Clamp elements in the complex array to real unit range (i.e. [0,1])
-            </summary>
-            <param name="array"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Shift(Exocortex.DSP.Complex[],System.Int32)">
-            <summary>
-            Shift (offset) the elements in the array
-            </summary>
-            <param name="array"></param>
-            <param name="offset"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Shift(Exocortex.DSP.ComplexF[],System.Int32)">
-            <summary>
-            Shift (offset) the elements in the array
-            </summary>
-            <param name="array"></param>
-            <param name="offset"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.GetLengthRange(Exocortex.DSP.Complex[],System.Double@,System.Double@)">
-            <summary>
-            Get the range of element lengths
-            </summary>
-            <param name="array"></param>
-            <param name="minimum"></param>
-            <param name="maximum"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.GetLengthRange(Exocortex.DSP.ComplexF[],System.Single@,System.Single@)">
-            <summary>
-            Get the range of element lengths
-            </summary>
-            <param name="array"></param>
-            <param name="minimum"></param>
-            <param name="maximum"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.IsEqual(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[],System.Double)">
-            <summary>
-            Determine whether the elements in the two arrays are the same
-            </summary>
-            <param name="array1"></param>
-            <param name="array2"></param>
-            <param name="tolerance"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.IsEqual(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[],System.Single)">
-            <summary>
-             Determine whether the elements in the two arrays are the same
-            </summary>
-            <param name="array1"></param>
-            <param name="array2"></param>
-            <param name="tolerance"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.Complex[],System.Double)">
-            <summary>
-            Add a specific value to each element in the array
-            </summary>
-            <param name="array"></param>
-            <param name="offset"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.Complex[],Exocortex.DSP.Complex)">
-            <summary>
-            Add a specific value to each element in the array
-            </summary>
-            <param name="array"></param>
-            <param name="offset"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.ComplexF[],System.Single)">
-            <summary>
-            Add a specific value to each element in the array
-            </summary>
-            <param name="array"></param>
-            <param name="offset"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF)">
-            <summary>
-            Add a specific value to each element in the array
-            </summary>
-            <param name="array"></param>
-            <param name="offset"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],System.Double)">
-            <summary>
-            Multiply each element in the array by a specific value
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],System.Double,System.Int32,System.Int32)">
-            <summary>
-             Multiply each element in the array by a specific value
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-            <param name="start"></param>
-            <param name="length"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],Exocortex.DSP.Complex)">
-            <summary>
-            Multiply each element in the array by a specific value
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],Exocortex.DSP.Complex,System.Int32,System.Int32)">
-            <summary>
-            Multiply each element in the array by a specific value 
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-            <param name="start"></param>
-            <param name="length"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],System.Single)">
-            <summary>
-            Multiply each element in the array by a specific value
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],System.Single,System.Int32,System.Int32)">
-            <summary>
-            Multiply each element in the array by a specific value 
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-            <param name="start"></param>
-            <param name="length"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF)">
-            <summary>
-            Multiply each element in the array by a specific value
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF,System.Int32,System.Int32)">
-            <summary>
-            Multiply each element in the array by a specific value 
-            </summary>
-            <param name="array"></param>
-            <param name="scale"></param>
-            <param name="start"></param>
-            <param name="length"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
-            <summary>
-            Multiply each element in target array with corresponding element in rhs array
-            </summary>
-            <param name="target"></param>
-            <param name="rhs"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
-            <summary>
-            Multiply each element in lhs array with corresponding element in rhs array and
-            put product in result array
-            </summary>
-            <param name="lhs"></param>
-            <param name="rhs"></param>
-            <param name="result"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
-            <summary>
-            Multiply each element in target array with corresponding element in rhs array
-            </summary>
-            <param name="target"></param>
-            <param name="rhs"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
-            <summary>
-            Multiply each element in lhs array with corresponding element in rhs array and
-            put product in result array
-            </summary>
-            <param name="lhs"></param>
-            <param name="rhs"></param>
-            <param name="result"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
-            <summary>
-            Divide each element in target array with corresponding element in rhs array
-            </summary>
-            <param name="target"></param>
-            <param name="rhs"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
-            <summary>
-            Divide each element in lhs array with corresponding element in rhs array and
-            put product in result array
-            </summary>
-            <param name="lhs"></param>
-            <param name="rhs"></param>
-            <param name="result"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
-            <summary>
-            Divide each element in target array with corresponding element in rhs array
-            </summary>
-            <param name="target"></param>
-            <param name="rhs"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
-            <summary>
-            Divide each element in lhs array with corresponding element in rhs array and
-            put product in result array
-            </summary>
-            <param name="lhs"></param>
-            <param name="rhs"></param>
-            <param name="result"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Copy(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
-            <summary>
-            Copy an array
-            </summary>
-            <param name="dest"></param>
-            <param name="source"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Copy(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
-            <summary>
-            Copy an array
-            </summary>
-            <param name="dest"></param>
-            <param name="source"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Reverse(Exocortex.DSP.Complex[])">
-            <summary>
-            Reverse the elements in the array
-            </summary>
-            <param name="array"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Normalize(Exocortex.DSP.Complex[])">
-            <summary>
-            Scale and offset the elements in the array so that the
-            overall range is [0, 1]
-            </summary>
-            <param name="array"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Normalize(Exocortex.DSP.ComplexF[])">
-            <summary>
-            Scale and offset the elements in the array so that the
-            overall range is [0, 1]
-            </summary>
-            <param name="array"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Invert(Exocortex.DSP.Complex[])">
-            <summary>
-            Invert each element in the array
-            </summary>
-            <param name="array"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexArray.Invert(Exocortex.DSP.ComplexF[])">
-            <summary>
-            Invert each element in the array
-            </summary>
-            <param name="array"></param>
-        </member>
-        <member name="T:Exocortex.DSP.ComplexF">
-            <summary>
-            <p>A single-precision complex number representation.</p>
-            </summary>
-        </member>
-        <member name="F:Exocortex.DSP.ComplexF.Re">
-            <summary>
-            The real component of the complex number
-            </summary>
-        </member>
-        <member name="F:Exocortex.DSP.ComplexF.Im">
-            <summary>
-            The imaginary component of the complex number
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.#ctor(System.Single,System.Single)">
-            <summary>
-            Create a complex number from a real and an imaginary component
-            </summary>
-            <param name="real"></param>
-            <param name="imaginary"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.#ctor(Exocortex.DSP.ComplexF)">
-            <summary>
-            Create a complex number based on an existing complex number
-            </summary>
-            <param name="c"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.FromRealImaginary(System.Single,System.Single)">
-            <summary>
-            Create a complex number from a real and an imaginary component
-            </summary>
-            <param name="real"></param>
-            <param name="imaginary"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.FromModulusArgument(System.Single,System.Single)">
-            <summary>
-            Create a complex number from a modulus (length) and an argument (radian)
-            </summary>
-            <param name="modulus"></param>
-            <param name="argument"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.Clone">
-            <summary>
-            Clone the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.GetModulus">
-            <summary>
-            The modulus (length) of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.GetModulusSquared">
-            <summary>
-            The squared modulus (length^2) of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.GetArgument">
-            <summary>
-            The argument (radians) of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.GetConjugate">
-            <summary>
-            Get the conjugate of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.Normalize">
-            <summary>
-            Scale the complex number to 1.
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Explicit(Exocortex.DSP.Complex)~Exocortex.DSP.ComplexF">
-            <summary>
-            Convert to a from double precision complex number to a single precison complex number
-            </summary>
-            <param name="c"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Explicit(System.Single)~Exocortex.DSP.ComplexF">
-            <summary>
-            Convert from a single precision real number to a complex number
-            </summary>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Explicit(Exocortex.DSP.ComplexF)~System.Single">
-            <summary>
-            Convert from a single precision complex to a real number
-            </summary>
-            <param name="c"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Equality(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
-            <summary>
-            Are these two complex numbers equivalent?
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Inequality(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
-            <summary>
-            Are these two complex numbers different?
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.GetHashCode">
-            <summary>
-            Get the hash code of the complex number
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.Equals(System.Object)">
-            <summary>
-            Is this complex number equivalent to another object?
-            </summary>
-            <param name="o"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.CompareTo(System.Object)">
-            <summary>
-            Compare to other complex numbers or real numbers
-            </summary>
-            <param name="o"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_UnaryPlus(Exocortex.DSP.ComplexF)">
-            <summary>
-            This operator doesn't do much. :-)
-            </summary>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_UnaryNegation(Exocortex.DSP.ComplexF)">
-            <summary>
-            Negate the complex number
-            </summary>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Addition(Exocortex.DSP.ComplexF,System.Single)">
-            <summary>
-            Add a complex number to a real
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Addition(System.Single,Exocortex.DSP.ComplexF)">
-            <summary>
-            Add a real to a complex number
-            </summary>
-            <param name="f"></param>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Addition(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
-            <summary>
-            Add to complex numbers
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Subtraction(Exocortex.DSP.ComplexF,System.Single)">
-            <summary>
-            Subtract a real from a complex number
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Subtraction(System.Single,Exocortex.DSP.ComplexF)">
-            <summary>
-            Subtract a complex number from a real
-            </summary>
-            <param name="f"></param>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Subtraction(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
-            <summary>
-            Subtract two complex numbers
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Multiply(Exocortex.DSP.ComplexF,System.Single)">
-            <summary>
-            Multiply a complex number by a real
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Multiply(System.Single,Exocortex.DSP.ComplexF)">
-            <summary>
-            Multiply a real by a complex number
-            </summary>
-            <param name="f"></param>
-            <param name="a"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Multiply(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
-            <summary>
-            Multiply two complex numbers together
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Division(Exocortex.DSP.ComplexF,System.Single)">
-            <summary>
-            Divide a complex number by a real number
-            </summary>
-            <param name="a"></param>
-            <param name="f"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.op_Division(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
-            <summary>
-            Divide a complex number by a complex number
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.Parse(System.String)">
-            <summary>
-            Parse a complex representation in this fashion: "( %f, %f )"
-            </summary>
-            <param name="s"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.ToString">
-            <summary>
-            Get the string representation
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexF.IsEqual(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF,System.Single)">
-            <summary>
-            Determine whether two complex numbers are almost (i.e. within the tolerance) equivalent.
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-            <param name="tolerance"></param>
-            <returns></returns>
-        </member>
-        <member name="P:Exocortex.DSP.ComplexF.Zero">
-            <summary>
-            Represents zero
-            </summary>
-        </member>
-        <member name="P:Exocortex.DSP.ComplexF.I">
-            <summary>
-            Represents the result of sqrt( -1 )
-            </summary>
-        </member>
-        <member name="P:Exocortex.DSP.ComplexF.MaxValue">
-            <summary>
-            Represents the largest possible value of ComplexF.
-            </summary>
-        </member>
-        <member name="P:Exocortex.DSP.ComplexF.MinValue">
-            <summary>
-            Represents the smallest possible value of ComplexF.
-            </summary>
-        </member>
-        <member name="T:Exocortex.DSP.ComplexMath">
-            <summary>
-            <p>Various mathematical functions for complex numbers.</p>
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexMath.Swap(Exocortex.DSP.Complex@,Exocortex.DSP.Complex@)">
-            <summary>
-            Swap two complex numbers
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexMath.Swap(Exocortex.DSP.ComplexF@,Exocortex.DSP.ComplexF@)">
-            <summary>
-            Swap two complex numbers
-            </summary>
-            <param name="a"></param>
-            <param name="b"></param>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexMath.Sqrt(Exocortex.DSP.ComplexF)">
-            <summary>
-            Calculate the square root of a complex number
-            </summary>
-            <param name="c"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexMath.Sqrt(Exocortex.DSP.Complex)">
-            <summary>
-            Calculate the square root of a complex number
-            </summary>
-            <param name="c"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexMath.Pow(Exocortex.DSP.ComplexF,System.Double)">
-            <summary>
-            Calculate the power of a complex number
-            </summary>
-            <param name="c"></param>
-            <param name="exponent"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexMath.Pow(Exocortex.DSP.Complex,System.Double)">
-            <summary>
-            Calculate the power of a complex number
-            </summary>
-            <param name="c"></param>
-            <param name="exponent"></param>
-            <returns></returns>
-        </member>
-        <member name="T:Exocortex.DSP.ComplexStats">
-            <summary>
-            <p>A set of statistical utilities for complex number arrays</p>
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.Sum(Exocortex.DSP.ComplexF[])">
-            <summary>
-            Calculate the sum
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.Sum(Exocortex.DSP.Complex[])">
-            <summary>
-            Calculate the sum
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.SumOfSquares(Exocortex.DSP.ComplexF[])">
-            <summary>
-            Calculate the sum of squares
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.SumOfSquares(Exocortex.DSP.Complex[])">
-            <summary>
-            Calculate the sum of squares
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.Mean(Exocortex.DSP.ComplexF[])">
-            <summary>
-            Calculate the mean (average)
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.Mean(Exocortex.DSP.Complex[])">
-            <summary>
-            Calculate the mean (average)
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.Variance(Exocortex.DSP.ComplexF[])">
-            <summary>
-            Calculate the variance
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.Variance(Exocortex.DSP.Complex[])">
-            <summary>
-            Calculate the variance 
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.StdDev(Exocortex.DSP.ComplexF[])">
-            <summary>
-            Calculate the standard deviation
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.StdDev(Exocortex.DSP.Complex[])">
-            <summary>
-            Calculate the standard deviation 
-            </summary>
-            <param name="data"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.RMSError(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
-            <summary>
-            Calculate the root mean squared (RMS) error between two sets of data.
-            </summary>
-            <param name="alpha"></param>
-            <param name="beta"></param>
-            <returns></returns>
-        </member>
-        <member name="M:Exocortex.DSP.ComplexStats.RMSError(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
-            <summary>
-            Calculate the root mean squared (RMS) error between two sets of data.
-            </summary>
-            <param name="alpha"></param>
-            <param name="beta"></param>
-            <returns></returns>
-        </member>
-        <member name="T:Exocortex.DSP.Fourier">
-            <summary>
-            <p>Static functions for doing various Fourier Operations.</p>
-            </summary>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT(System.Single[],System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D fast Fourier transform of a dataset of complex numbers (as pairs of float's).
-            </summary>
-            <param name="data"></param>
-            <param name="length"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT_Quick(System.Single[],System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D fast Fourier transform of a dataset of complex numbers (as pairs of float's).
-            </summary>
-            <param name="data"></param>
-            <param name="length"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT(Exocortex.DSP.ComplexF[],System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D fast Fourier transform of a dataset of complex numbers.
-            </summary>
-            <param name="data"></param>
-            <param name="length"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT_Quick(Exocortex.DSP.ComplexF[],System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D fast Fourier transform of a dataset of complex numbers.
-            </summary>
-            <param name="data"></param>
-            <param name="length"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT(Exocortex.DSP.ComplexF[],Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D fast Fourier transform of a dataset of complex numbers.
-            </summary>
-            <param name="data"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT(Exocortex.DSP.Complex[],System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D fast Fourier transform of a dataset of complex numbers.
-            </summary>
-            <param name="data"></param>
-            <param name="length"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT_Quick(Exocortex.DSP.Complex[],System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D fast Fourier transform of a dataset of complex numbers.
-            </summary>
-            <param name="data"></param>
-            <param name="length"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.RFFT(System.Single[],Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D real-symmetric fast fourier transform.
-            </summary>
-            <param name="data"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.RFFT(System.Single[],System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 1D real-symmetric fast fourier transform.
-            </summary>
-            <param name="data"></param>
-            <param name="length"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT2(System.Single[],System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 2D fast fourier transform on a data set of complex numbers (represented as pairs of floats)
-            </summary>
-            <param name="data"></param>
-            <param name="xLength"></param>
-            <param name="yLength"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT2(Exocortex.DSP.ComplexF[],System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 2D fast fourier transform on a data set of complex numbers
-            </summary>
-            <param name="data"></param>
-            <param name="xLength"></param>
-            <param name="yLength"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT2(Exocortex.DSP.Complex[],System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 2D fast fourier transform on a data set of complex numbers
-            </summary>
-            <param name="data"></param>
-            <param name="xLength"></param>
-            <param name="yLength"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT3(Exocortex.DSP.ComplexF[],System.Int32,System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 3D fast fourier transform on a data set of complex numbers
-            </summary>
-            <param name="data"></param>
-            <param name="xLength"></param>
-            <param name="yLength"></param>
-            <param name="zLength"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="M:Exocortex.DSP.Fourier.FFT3(Exocortex.DSP.Complex[],System.Int32,System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
-            <summary>
-            Compute a 3D fast fourier transform on a data set of complex numbers
-            </summary>
-            <param name="data"></param>
-            <param name="xLength"></param>
-            <param name="yLength"></param>
-            <param name="zLength"></param>
-            <param name="direction"></param>
-        </member>
-        <member name="T:Exocortex.DSP.FourierDirection">
-            <summary>
-            <p>The direction of the fourier transform.</p>
-            </summary>
-        </member>
-        <member name="F:Exocortex.DSP.FourierDirection.Forward">
-            <summary>
-            Forward direction.  Usually in reference to moving from temporal
-            representation to frequency representation
-            </summary>
-        </member>
-        <member name="F:Exocortex.DSP.FourierDirection.Backward">
-            <summary>
-            Backward direction. Usually in reference to moving from frequency
-            representation to temporal representation
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>Exocortex.DSP.v1</name>
+    </assembly>
+    <members>
+        <member name="T:Exocortex.DSP.Complex">
+            <summary>
+            <p>A double-precision complex number representation.</p>
+            </summary>
+        </member>
+        <member name="F:Exocortex.DSP.Complex.Re">
+            <summary>
+            The real component of the complex number
+            </summary>
+        </member>
+        <member name="F:Exocortex.DSP.Complex.Im">
+            <summary>
+            The imaginary component of the complex number
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.#ctor(System.Double,System.Double)">
+            <summary>
+            Create a complex number from a real and an imaginary component
+            </summary>
+            <param name="real"></param>
+            <param name="imaginary"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.#ctor(Exocortex.DSP.Complex)">
+            <summary>
+            Create a complex number based on an existing complex number
+            </summary>
+            <param name="c"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.FromRealImaginary(System.Double,System.Double)">
+            <summary>
+            Create a complex number from a real and an imaginary component
+            </summary>
+            <param name="real"></param>
+            <param name="imaginary"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.FromModulusArgument(System.Double,System.Double)">
+            <summary>
+            Create a complex number from a modulus (length) and an argument (radian)
+            </summary>
+            <param name="modulus"></param>
+            <param name="argument"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.Clone">
+            <summary>
+            Clone the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.GetModulus">
+            <summary>
+            The modulus (length) of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.GetModulusSquared">
+            <summary>
+            The squared modulus (length^2) of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.GetArgument">
+            <summary>
+            The argument (radians) of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.GetConjugate">
+            <summary>
+            Get the conjugate of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.Normalize">
+            <summary>
+            Scale the complex number to 1.
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Explicit(Exocortex.DSP.ComplexF)~Exocortex.DSP.Complex">
+            <summary>
+            Convert to a from double precision complex number to a single precison complex number
+            </summary>
+            <param name="cF"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Explicit(System.Double)~Exocortex.DSP.Complex">
+            <summary>
+            Convert from a single precision real number to a complex number
+            </summary>
+            <param name="d"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Explicit(Exocortex.DSP.Complex)~System.Double">
+            <summary>
+            Convert from a single precision complex to a real number
+            </summary>
+            <param name="c"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Equality(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
+            <summary>
+            Are these two complex numbers equivalent?
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Inequality(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
+            <summary>
+            Are these two complex numbers different?
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.GetHashCode">
+            <summary>
+            Get the hash code of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.Equals(System.Object)">
+            <summary>
+            Is this complex number equivalent to another object?
+            </summary>
+            <param name="o"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.CompareTo(System.Object)">
+            <summary>
+            Compare to other complex numbers or real numbers
+            </summary>
+            <param name="o"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_UnaryPlus(Exocortex.DSP.Complex)">
+            <summary>
+            This operator doesn't do much. :-)
+            </summary>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_UnaryNegation(Exocortex.DSP.Complex)">
+            <summary>
+            Negate the complex number
+            </summary>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Addition(Exocortex.DSP.Complex,System.Double)">
+            <summary>
+            Add a complex number to a real
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Addition(System.Double,Exocortex.DSP.Complex)">
+            <summary>
+            Add a real to a complex number
+            </summary>
+            <param name="f"></param>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Addition(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
+            <summary>
+            Add to complex numbers
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Subtraction(Exocortex.DSP.Complex,System.Double)">
+            <summary>
+            Subtract a real from a complex number
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Subtraction(System.Double,Exocortex.DSP.Complex)">
+            <summary>
+            Subtract a complex number from a real
+            </summary>
+            <param name="f"></param>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Subtraction(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
+            <summary>
+            Subtract two complex numbers
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Multiply(Exocortex.DSP.Complex,System.Double)">
+            <summary>
+            Multiply a complex number by a real
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Multiply(System.Double,Exocortex.DSP.Complex)">
+            <summary>
+            Multiply a real by a complex number
+            </summary>
+            <param name="f"></param>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Multiply(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
+            <summary>
+            Multiply two complex numbers together
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Division(Exocortex.DSP.Complex,System.Double)">
+            <summary>
+            Divide a complex number by a real number
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.op_Division(Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
+            <summary>
+            Divide a complex number by a complex number
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.Parse(System.String)">
+            <summary>
+            Parse a complex representation in this fashion: "( %f, %f )"
+            </summary>
+            <param name="s"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.ToString">
+            <summary>
+            Get the string representation
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.Complex.IsEqual(Exocortex.DSP.Complex,Exocortex.DSP.Complex,System.Double)">
+            <summary>
+            Determine whether two complex numbers are almost (i.e. within the tolerance) equivalent.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <param name="tolerance"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Exocortex.DSP.Complex.Zero">
+            <summary>
+            Represents zero
+            </summary>
+        </member>
+        <member name="P:Exocortex.DSP.Complex.I">
+            <summary>
+            Represents the result of sqrt( -1 )
+            </summary>
+        </member>
+        <member name="P:Exocortex.DSP.Complex.MaxValue">
+            <summary>
+            Represents the largest possible value of Complex.
+            </summary>
+        </member>
+        <member name="P:Exocortex.DSP.Complex.MinValue">
+            <summary>
+            Represents the smallest possible value of Complex.
+            </summary>
+        </member>
+        <member name="T:Exocortex.DSP.ComplexArray">
+            <summary>
+            <p>A set of array utilities for complex number arrays</p>
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.ClampLength(Exocortex.DSP.Complex[],System.Double,System.Double)">
+            <summary>
+            Clamp length (modulus) of the elements in the complex array
+            </summary>
+            <param name="array"></param>
+            <param name="fMinimum"></param>
+            <param name="fMaximum"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Clamp(Exocortex.DSP.Complex[],Exocortex.DSP.Complex,Exocortex.DSP.Complex)">
+            <summary>
+            Clamp elements in the complex array to range [minimum,maximum]
+            </summary>
+            <param name="array"></param>
+            <param name="minimum"></param>
+            <param name="maximum"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.ClampToRealUnit(Exocortex.DSP.Complex[])">
+            <summary>
+            Clamp elements in the complex array to real unit range (i.e. [0,1])
+            </summary>
+            <param name="array"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Shift(Exocortex.DSP.Complex[],System.Int32)">
+            <summary>
+            Shift (offset) the elements in the array
+            </summary>
+            <param name="array"></param>
+            <param name="offset"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Shift(Exocortex.DSP.ComplexF[],System.Int32)">
+            <summary>
+            Shift (offset) the elements in the array
+            </summary>
+            <param name="array"></param>
+            <param name="offset"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.GetLengthRange(Exocortex.DSP.Complex[],System.Double@,System.Double@)">
+            <summary>
+            Get the range of element lengths
+            </summary>
+            <param name="array"></param>
+            <param name="minimum"></param>
+            <param name="maximum"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.GetLengthRange(Exocortex.DSP.ComplexF[],System.Single@,System.Single@)">
+            <summary>
+            Get the range of element lengths
+            </summary>
+            <param name="array"></param>
+            <param name="minimum"></param>
+            <param name="maximum"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.IsEqual(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[],System.Double)">
+            <summary>
+            Determine whether the elements in the two arrays are the same
+            </summary>
+            <param name="array1"></param>
+            <param name="array2"></param>
+            <param name="tolerance"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.IsEqual(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[],System.Single)">
+            <summary>
+             Determine whether the elements in the two arrays are the same
+            </summary>
+            <param name="array1"></param>
+            <param name="array2"></param>
+            <param name="tolerance"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.Complex[],System.Double)">
+            <summary>
+            Add a specific value to each element in the array
+            </summary>
+            <param name="array"></param>
+            <param name="offset"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.Complex[],Exocortex.DSP.Complex)">
+            <summary>
+            Add a specific value to each element in the array
+            </summary>
+            <param name="array"></param>
+            <param name="offset"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.ComplexF[],System.Single)">
+            <summary>
+            Add a specific value to each element in the array
+            </summary>
+            <param name="array"></param>
+            <param name="offset"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Offset(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF)">
+            <summary>
+            Add a specific value to each element in the array
+            </summary>
+            <param name="array"></param>
+            <param name="offset"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],System.Double)">
+            <summary>
+            Multiply each element in the array by a specific value
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],System.Double,System.Int32,System.Int32)">
+            <summary>
+             Multiply each element in the array by a specific value
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+            <param name="start"></param>
+            <param name="length"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],Exocortex.DSP.Complex)">
+            <summary>
+            Multiply each element in the array by a specific value
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.Complex[],Exocortex.DSP.Complex,System.Int32,System.Int32)">
+            <summary>
+            Multiply each element in the array by a specific value 
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+            <param name="start"></param>
+            <param name="length"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],System.Single)">
+            <summary>
+            Multiply each element in the array by a specific value
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],System.Single,System.Int32,System.Int32)">
+            <summary>
+            Multiply each element in the array by a specific value 
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+            <param name="start"></param>
+            <param name="length"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF)">
+            <summary>
+            Multiply each element in the array by a specific value
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Scale(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF,System.Int32,System.Int32)">
+            <summary>
+            Multiply each element in the array by a specific value 
+            </summary>
+            <param name="array"></param>
+            <param name="scale"></param>
+            <param name="start"></param>
+            <param name="length"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
+            <summary>
+            Multiply each element in target array with corresponding element in rhs array
+            </summary>
+            <param name="target"></param>
+            <param name="rhs"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
+            <summary>
+            Multiply each element in lhs array with corresponding element in rhs array and
+            put product in result array
+            </summary>
+            <param name="lhs"></param>
+            <param name="rhs"></param>
+            <param name="result"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
+            <summary>
+            Multiply each element in target array with corresponding element in rhs array
+            </summary>
+            <param name="target"></param>
+            <param name="rhs"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Multiply(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
+            <summary>
+            Multiply each element in lhs array with corresponding element in rhs array and
+            put product in result array
+            </summary>
+            <param name="lhs"></param>
+            <param name="rhs"></param>
+            <param name="result"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
+            <summary>
+            Divide each element in target array with corresponding element in rhs array
+            </summary>
+            <param name="target"></param>
+            <param name="rhs"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
+            <summary>
+            Divide each element in lhs array with corresponding element in rhs array and
+            put product in result array
+            </summary>
+            <param name="lhs"></param>
+            <param name="rhs"></param>
+            <param name="result"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
+            <summary>
+            Divide each element in target array with corresponding element in rhs array
+            </summary>
+            <param name="target"></param>
+            <param name="rhs"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Divide(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
+            <summary>
+            Divide each element in lhs array with corresponding element in rhs array and
+            put product in result array
+            </summary>
+            <param name="lhs"></param>
+            <param name="rhs"></param>
+            <param name="result"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Copy(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
+            <summary>
+            Copy an array
+            </summary>
+            <param name="dest"></param>
+            <param name="source"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Copy(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
+            <summary>
+            Copy an array
+            </summary>
+            <param name="dest"></param>
+            <param name="source"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Reverse(Exocortex.DSP.Complex[])">
+            <summary>
+            Reverse the elements in the array
+            </summary>
+            <param name="array"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Normalize(Exocortex.DSP.Complex[])">
+            <summary>
+            Scale and offset the elements in the array so that the
+            overall range is [0, 1]
+            </summary>
+            <param name="array"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Normalize(Exocortex.DSP.ComplexF[])">
+            <summary>
+            Scale and offset the elements in the array so that the
+            overall range is [0, 1]
+            </summary>
+            <param name="array"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Invert(Exocortex.DSP.Complex[])">
+            <summary>
+            Invert each element in the array
+            </summary>
+            <param name="array"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexArray.Invert(Exocortex.DSP.ComplexF[])">
+            <summary>
+            Invert each element in the array
+            </summary>
+            <param name="array"></param>
+        </member>
+        <member name="T:Exocortex.DSP.ComplexF">
+            <summary>
+            <p>A single-precision complex number representation.</p>
+            </summary>
+        </member>
+        <member name="F:Exocortex.DSP.ComplexF.Re">
+            <summary>
+            The real component of the complex number
+            </summary>
+        </member>
+        <member name="F:Exocortex.DSP.ComplexF.Im">
+            <summary>
+            The imaginary component of the complex number
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.#ctor(System.Single,System.Single)">
+            <summary>
+            Create a complex number from a real and an imaginary component
+            </summary>
+            <param name="real"></param>
+            <param name="imaginary"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.#ctor(Exocortex.DSP.ComplexF)">
+            <summary>
+            Create a complex number based on an existing complex number
+            </summary>
+            <param name="c"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.FromRealImaginary(System.Single,System.Single)">
+            <summary>
+            Create a complex number from a real and an imaginary component
+            </summary>
+            <param name="real"></param>
+            <param name="imaginary"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.FromModulusArgument(System.Single,System.Single)">
+            <summary>
+            Create a complex number from a modulus (length) and an argument (radian)
+            </summary>
+            <param name="modulus"></param>
+            <param name="argument"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.Clone">
+            <summary>
+            Clone the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.GetModulus">
+            <summary>
+            The modulus (length) of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.GetModulusSquared">
+            <summary>
+            The squared modulus (length^2) of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.GetArgument">
+            <summary>
+            The argument (radians) of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.GetConjugate">
+            <summary>
+            Get the conjugate of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.Normalize">
+            <summary>
+            Scale the complex number to 1.
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Explicit(Exocortex.DSP.Complex)~Exocortex.DSP.ComplexF">
+            <summary>
+            Convert to a from double precision complex number to a single precison complex number
+            </summary>
+            <param name="c"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Explicit(System.Single)~Exocortex.DSP.ComplexF">
+            <summary>
+            Convert from a single precision real number to a complex number
+            </summary>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Explicit(Exocortex.DSP.ComplexF)~System.Single">
+            <summary>
+            Convert from a single precision complex to a real number
+            </summary>
+            <param name="c"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Equality(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
+            <summary>
+            Are these two complex numbers equivalent?
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Inequality(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
+            <summary>
+            Are these two complex numbers different?
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.GetHashCode">
+            <summary>
+            Get the hash code of the complex number
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.Equals(System.Object)">
+            <summary>
+            Is this complex number equivalent to another object?
+            </summary>
+            <param name="o"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.CompareTo(System.Object)">
+            <summary>
+            Compare to other complex numbers or real numbers
+            </summary>
+            <param name="o"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_UnaryPlus(Exocortex.DSP.ComplexF)">
+            <summary>
+            This operator doesn't do much. :-)
+            </summary>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_UnaryNegation(Exocortex.DSP.ComplexF)">
+            <summary>
+            Negate the complex number
+            </summary>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Addition(Exocortex.DSP.ComplexF,System.Single)">
+            <summary>
+            Add a complex number to a real
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Addition(System.Single,Exocortex.DSP.ComplexF)">
+            <summary>
+            Add a real to a complex number
+            </summary>
+            <param name="f"></param>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Addition(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
+            <summary>
+            Add to complex numbers
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Subtraction(Exocortex.DSP.ComplexF,System.Single)">
+            <summary>
+            Subtract a real from a complex number
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Subtraction(System.Single,Exocortex.DSP.ComplexF)">
+            <summary>
+            Subtract a complex number from a real
+            </summary>
+            <param name="f"></param>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Subtraction(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
+            <summary>
+            Subtract two complex numbers
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Multiply(Exocortex.DSP.ComplexF,System.Single)">
+            <summary>
+            Multiply a complex number by a real
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Multiply(System.Single,Exocortex.DSP.ComplexF)">
+            <summary>
+            Multiply a real by a complex number
+            </summary>
+            <param name="f"></param>
+            <param name="a"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Multiply(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
+            <summary>
+            Multiply two complex numbers together
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Division(Exocortex.DSP.ComplexF,System.Single)">
+            <summary>
+            Divide a complex number by a real number
+            </summary>
+            <param name="a"></param>
+            <param name="f"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.op_Division(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF)">
+            <summary>
+            Divide a complex number by a complex number
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.Parse(System.String)">
+            <summary>
+            Parse a complex representation in this fashion: "( %f, %f )"
+            </summary>
+            <param name="s"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.ToString">
+            <summary>
+            Get the string representation
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexF.IsEqual(Exocortex.DSP.ComplexF,Exocortex.DSP.ComplexF,System.Single)">
+            <summary>
+            Determine whether two complex numbers are almost (i.e. within the tolerance) equivalent.
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+            <param name="tolerance"></param>
+            <returns></returns>
+        </member>
+        <member name="P:Exocortex.DSP.ComplexF.Zero">
+            <summary>
+            Represents zero
+            </summary>
+        </member>
+        <member name="P:Exocortex.DSP.ComplexF.I">
+            <summary>
+            Represents the result of sqrt( -1 )
+            </summary>
+        </member>
+        <member name="P:Exocortex.DSP.ComplexF.MaxValue">
+            <summary>
+            Represents the largest possible value of ComplexF.
+            </summary>
+        </member>
+        <member name="P:Exocortex.DSP.ComplexF.MinValue">
+            <summary>
+            Represents the smallest possible value of ComplexF.
+            </summary>
+        </member>
+        <member name="T:Exocortex.DSP.ComplexMath">
+            <summary>
+            <p>Various mathematical functions for complex numbers.</p>
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexMath.Swap(Exocortex.DSP.Complex@,Exocortex.DSP.Complex@)">
+            <summary>
+            Swap two complex numbers
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexMath.Swap(Exocortex.DSP.ComplexF@,Exocortex.DSP.ComplexF@)">
+            <summary>
+            Swap two complex numbers
+            </summary>
+            <param name="a"></param>
+            <param name="b"></param>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexMath.Sqrt(Exocortex.DSP.ComplexF)">
+            <summary>
+            Calculate the square root of a complex number
+            </summary>
+            <param name="c"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexMath.Sqrt(Exocortex.DSP.Complex)">
+            <summary>
+            Calculate the square root of a complex number
+            </summary>
+            <param name="c"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexMath.Pow(Exocortex.DSP.ComplexF,System.Double)">
+            <summary>
+            Calculate the power of a complex number
+            </summary>
+            <param name="c"></param>
+            <param name="exponent"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexMath.Pow(Exocortex.DSP.Complex,System.Double)">
+            <summary>
+            Calculate the power of a complex number
+            </summary>
+            <param name="c"></param>
+            <param name="exponent"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Exocortex.DSP.ComplexStats">
+            <summary>
+            <p>A set of statistical utilities for complex number arrays</p>
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.Sum(Exocortex.DSP.ComplexF[])">
+            <summary>
+            Calculate the sum
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.Sum(Exocortex.DSP.Complex[])">
+            <summary>
+            Calculate the sum
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.SumOfSquares(Exocortex.DSP.ComplexF[])">
+            <summary>
+            Calculate the sum of squares
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.SumOfSquares(Exocortex.DSP.Complex[])">
+            <summary>
+            Calculate the sum of squares
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.Mean(Exocortex.DSP.ComplexF[])">
+            <summary>
+            Calculate the mean (average)
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.Mean(Exocortex.DSP.Complex[])">
+            <summary>
+            Calculate the mean (average)
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.Variance(Exocortex.DSP.ComplexF[])">
+            <summary>
+            Calculate the variance
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.Variance(Exocortex.DSP.Complex[])">
+            <summary>
+            Calculate the variance 
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.StdDev(Exocortex.DSP.ComplexF[])">
+            <summary>
+            Calculate the standard deviation
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.StdDev(Exocortex.DSP.Complex[])">
+            <summary>
+            Calculate the standard deviation 
+            </summary>
+            <param name="data"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.RMSError(Exocortex.DSP.ComplexF[],Exocortex.DSP.ComplexF[])">
+            <summary>
+            Calculate the root mean squared (RMS) error between two sets of data.
+            </summary>
+            <param name="alpha"></param>
+            <param name="beta"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Exocortex.DSP.ComplexStats.RMSError(Exocortex.DSP.Complex[],Exocortex.DSP.Complex[])">
+            <summary>
+            Calculate the root mean squared (RMS) error between two sets of data.
+            </summary>
+            <param name="alpha"></param>
+            <param name="beta"></param>
+            <returns></returns>
+        </member>
+        <member name="T:Exocortex.DSP.Fourier">
+            <summary>
+            <p>Static functions for doing various Fourier Operations.</p>
+            </summary>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT(System.Single[],System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D fast Fourier transform of a dataset of complex numbers (as pairs of float's).
+            </summary>
+            <param name="data"></param>
+            <param name="length"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT_Quick(System.Single[],System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D fast Fourier transform of a dataset of complex numbers (as pairs of float's).
+            </summary>
+            <param name="data"></param>
+            <param name="length"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT(Exocortex.DSP.ComplexF[],System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D fast Fourier transform of a dataset of complex numbers.
+            </summary>
+            <param name="data"></param>
+            <param name="length"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT_Quick(Exocortex.DSP.ComplexF[],System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D fast Fourier transform of a dataset of complex numbers.
+            </summary>
+            <param name="data"></param>
+            <param name="length"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT(Exocortex.DSP.ComplexF[],Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D fast Fourier transform of a dataset of complex numbers.
+            </summary>
+            <param name="data"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT(Exocortex.DSP.Complex[],System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D fast Fourier transform of a dataset of complex numbers.
+            </summary>
+            <param name="data"></param>
+            <param name="length"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT_Quick(Exocortex.DSP.Complex[],System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D fast Fourier transform of a dataset of complex numbers.
+            </summary>
+            <param name="data"></param>
+            <param name="length"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.RFFT(System.Single[],Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D real-symmetric fast fourier transform.
+            </summary>
+            <param name="data"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.RFFT(System.Single[],System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 1D real-symmetric fast fourier transform.
+            </summary>
+            <param name="data"></param>
+            <param name="length"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT2(System.Single[],System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 2D fast fourier transform on a data set of complex numbers (represented as pairs of floats)
+            </summary>
+            <param name="data"></param>
+            <param name="xLength"></param>
+            <param name="yLength"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT2(Exocortex.DSP.ComplexF[],System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 2D fast fourier transform on a data set of complex numbers
+            </summary>
+            <param name="data"></param>
+            <param name="xLength"></param>
+            <param name="yLength"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT2(Exocortex.DSP.Complex[],System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 2D fast fourier transform on a data set of complex numbers
+            </summary>
+            <param name="data"></param>
+            <param name="xLength"></param>
+            <param name="yLength"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT3(Exocortex.DSP.ComplexF[],System.Int32,System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 3D fast fourier transform on a data set of complex numbers
+            </summary>
+            <param name="data"></param>
+            <param name="xLength"></param>
+            <param name="yLength"></param>
+            <param name="zLength"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="M:Exocortex.DSP.Fourier.FFT3(Exocortex.DSP.Complex[],System.Int32,System.Int32,System.Int32,Exocortex.DSP.FourierDirection)">
+            <summary>
+            Compute a 3D fast fourier transform on a data set of complex numbers
+            </summary>
+            <param name="data"></param>
+            <param name="xLength"></param>
+            <param name="yLength"></param>
+            <param name="zLength"></param>
+            <param name="direction"></param>
+        </member>
+        <member name="T:Exocortex.DSP.FourierDirection">
+            <summary>
+            <p>The direction of the fourier transform.</p>
+            </summary>
+        </member>
+        <member name="F:Exocortex.DSP.FourierDirection.Forward">
+            <summary>
+            Forward direction.  Usually in reference to moving from temporal
+            representation to frequency representation
+            </summary>
+        </member>
+        <member name="F:Exocortex.DSP.FourierDirection.Backward">
+            <summary>
+            Backward direction. Usually in reference to moving from frequency
+            representation to temporal representation
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestColorMatrix.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Drawing/Test/System.Drawing.Imaging/TestColorMatrix.cs
@@ -1,293 +1,293 @@
-//
-// Copyright (C) 2005-2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//
-// Authors:
-//   Jordi Mas i Hernandez (jordi@ximian.com)
-//   Sebastien Pouliot  <sebastien@ximian.com>
-//
-
-using System;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-using NUnit.Framework;
-
-namespace MonoTests.System.Drawing.Imaging {
-
-	[TestFixture]
-	[SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
-	public class ColorMatrixTest {
-
-		[Test]
-		[ExpectedException (typeof (NullReferenceException))]
-		public void Constructor_Null ()
-		{
-			new ColorMatrix (null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (IndexOutOfRangeException))]
-		public void Constructor_TooSmallArraySize ()
-		{
-			new ColorMatrix (new float[][] { });
-		}
-
-		[Test]
-		[ExpectedException (typeof (IndexOutOfRangeException))]
-		public void Constructor_TooWideArraySize ()
-		{
-			new ColorMatrix (new float[][] {
-				new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f }
-			});
-		}
-
-		[Test]
-		[ExpectedException (typeof (IndexOutOfRangeException))]
-		public void Constructor_TooTallArraySize ()
-		{
-			new ColorMatrix (new float[][] {
-				new float[] { 0.0f },
-				new float[] { 1.0f },
-				new float[] { 2.0f },
-				new float[] { 3.0f },
-				new float[] { 4.0f },
-				new float[] { 5.0f }
-			});
-		}
-
-		[Test]
-		public void Constructor_TooBigArraySize ()
-		{
-			ColorMatrix cm = new ColorMatrix (new float[][] {
-				new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f },
-				new float[] { 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f },
-				new float[] { 2.0f, 2.1f, 2.2f, 2.3f, 2.4f, 2.5f },
-				new float[] { 3.0f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f },
-				new float[] { 4.0f, 4.1f, 4.2f, 4.3f, 4.4f, 4.5f },
-				new float[] { 5.0f, 5.1f, 5.2f, 5.3f, 5.4f, 5.5f }
-			});
-
-			Assert.AreEqual (0.0f, cm.Matrix00, "00");
-			Assert.AreEqual (0.1f, cm.Matrix01, "01");
-			Assert.AreEqual (0.2f, cm.Matrix02, "02");
-			Assert.AreEqual (0.3f, cm.Matrix03, "03");
-			Assert.AreEqual (0.4f, cm.Matrix04, "04");
-			Assert.AreEqual (1.0f, cm.Matrix10, "10");
-			Assert.AreEqual (1.1f, cm.Matrix11, "11");
-			Assert.AreEqual (1.2f, cm.Matrix12, "12");
-			Assert.AreEqual (1.3f, cm.Matrix13, "13");
-			Assert.AreEqual (1.4f, cm.Matrix14, "14");
-			Assert.AreEqual (2.0f, cm.Matrix20, "20");
-			Assert.AreEqual (2.1f, cm.Matrix21, "21");
-			Assert.AreEqual (2.2f, cm.Matrix22, "22");
-			Assert.AreEqual (2.3f, cm.Matrix23, "23");
-			Assert.AreEqual (2.4f, cm.Matrix24, "24");
-			Assert.AreEqual (3.0f, cm.Matrix30, "30");
-			Assert.AreEqual (3.1f, cm.Matrix31, "31");
-			Assert.AreEqual (3.2f, cm.Matrix32, "32");
-			Assert.AreEqual (3.3f, cm.Matrix33, "33");
-			Assert.AreEqual (3.4f, cm.Matrix34, "34");
-			Assert.AreEqual (4.0f, cm.Matrix40, "40");
-			Assert.AreEqual (4.1f, cm.Matrix41, "41");
-			Assert.AreEqual (4.2f, cm.Matrix42, "42");
-			Assert.AreEqual (4.3f, cm.Matrix43, "43");
-			Assert.AreEqual (4.4f, cm.Matrix44, "44");
-		}
-
-		[Test]
-		[ExpectedException (typeof (IndexOutOfRangeException))]
-		public void TooBigItems ()
-		{
-			ColorMatrix cm = new ColorMatrix (new float[][] {
-				new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f },
-				new float[] { 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f },
-				new float[] { 2.0f, 2.1f, 2.2f, 2.3f, 2.4f, 2.5f },
-				new float[] { 3.0f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f },
-				new float[] { 4.0f, 4.1f, 4.2f, 4.3f, 4.4f, 4.5f },
-				new float[] { 5.0f, 5.1f, 5.2f, 5.3f, 5.4f, 5.5f }
-			});
-			Assert.AreEqual (5.5f, cm[5,5], "out");
-		}
-
-		[Test]
-		public void DefaultConstructor ()
-		{
-			ColorMatrix cm = new ColorMatrix ();
-
-			Assert.AreEqual (1, cm.Matrix00, "0,0");
-			Assert.AreEqual (1, cm.Matrix11, "1,1");
-			Assert.AreEqual (1, cm.Matrix22, "2,2");
-			Assert.AreEqual (1, cm.Matrix33, "3,3");
-			Assert.AreEqual (1, cm.Matrix44, "4,4");
-			Assert.AreEqual (0, cm.Matrix01, "0,1");
-			Assert.AreEqual (0, cm.Matrix02, "0,2");
-			Assert.AreEqual (0, cm.Matrix03, "0,3");
-			Assert.AreEqual (0, cm.Matrix04, "0,4");
-			Assert.AreEqual (0, cm.Matrix10, "1,0");
-			Assert.AreEqual (0, cm.Matrix12, "1,2");
-			Assert.AreEqual (0, cm.Matrix13, "1,3");
-			Assert.AreEqual (0, cm.Matrix14, "1,4");
-			Assert.AreEqual (0, cm.Matrix20, "2,0");
-			Assert.AreEqual (0, cm.Matrix21, "2,1");
-			Assert.AreEqual (0, cm.Matrix23, "2,3");
-			Assert.AreEqual (0, cm.Matrix24, "2,4");
-			Assert.AreEqual (0, cm.Matrix30, "3,0");
-			Assert.AreEqual (0, cm.Matrix31, "3,1");
-			Assert.AreEqual (0, cm.Matrix32, "3,2");
-			Assert.AreEqual (0, cm.Matrix34, "3,4");
-			Assert.AreEqual (0, cm.Matrix40, "4,0");
-			Assert.AreEqual (0, cm.Matrix41, "4,1");
-			Assert.AreEqual (0, cm.Matrix42, "4,2");
-			Assert.AreEqual (0, cm.Matrix43, "4,3");
-			Assert.AreEqual (100, Marshal.SizeOf (cm), "object");
-			Assert.AreEqual (100, Marshal.SizeOf (typeof (ColorMatrix)), "type");
-		}
-
-		[Test]
-		public void ConstructorArrayAndMethods ()
-		{
-			ColorMatrix cm = new ColorMatrix (new float[][] {
-				new float[] {0.393f, 0.349f, 0.272f, 0, 0},
-			        new float[] {0.769f, 0.686f, 0.534f, 0, 0},
-			        new float[] {0.189f, 0.168f, 0.131f, 0, 0},
-			        new float[] {     0,      0,      0, 1, 0},
-			        new float[] {     0,      0,      0, 0, 1}
-			});
-
-			Assert.AreEqual (0.393f, cm.Matrix00, "00");
-			Assert.AreEqual (0.349f, cm.Matrix01, "01");
-			Assert.AreEqual (0.272f, cm.Matrix02, "02");
-			Assert.AreEqual (0, cm.Matrix03, "03");
-			Assert.AreEqual (0, cm.Matrix04, "04");
-
-			Assert.AreEqual (0.769f, cm.Matrix10, "10");
-			Assert.AreEqual (0.686f, cm.Matrix11, "11");
-			Assert.AreEqual (0.534f, cm.Matrix12, "12");
-			Assert.AreEqual (0, cm.Matrix13, "13");
-			Assert.AreEqual (0, cm.Matrix14, "14");
-
-			Assert.AreEqual (0.189f, cm.Matrix20, "20");
-			Assert.AreEqual (0.168f, cm.Matrix21, "21");
-			Assert.AreEqual (0.131f, cm.Matrix22, "22");
-			Assert.AreEqual (0, cm.Matrix23, "23");
-			Assert.AreEqual (0, cm.Matrix24, "24");
-
-			Assert.AreEqual (0, cm.Matrix30, "30");
-			Assert.AreEqual (0, cm.Matrix31, "31");
-			Assert.AreEqual (0, cm.Matrix32, "32");
-			Assert.AreEqual (1, cm.Matrix33, "33");
-			Assert.AreEqual (0, cm.Matrix34, "34");
-
-			Assert.AreEqual (0, cm.Matrix40, "40");
-			Assert.AreEqual (0, cm.Matrix41, "41");
-			Assert.AreEqual (0, cm.Matrix42, "42");
-			Assert.AreEqual (0, cm.Matrix43, "43");
-			Assert.AreEqual (1, cm.Matrix44, "44");
-		}
-
-		[Test]
-		public void IndexerProperty ()
-		{
-			ColorMatrix cm = new ColorMatrix (new float[][] {
-				new float[] 	{1,	0,	0, 	0, 	0},
-				new float[] 	{0.5f,	1,	0, 	0, 	0},
-				new float[] 	{0,	0.1f,	1.5f, 	0, 	0},
-				new float[] 	{0.5f,	3,	0.5f, 	1, 	0},
-				new float[] 	{0,	0,	0, 	0, 	0}
-			});
-
-			Assert.AreEqual (1, cm[0,0], "0,0");
-			Assert.AreEqual (0, cm[0,1], "0,1");
-			Assert.AreEqual (0, cm[0,2], "0,2");
-			Assert.AreEqual (0, cm[0,3], "0,3");
-			Assert.AreEqual (0, cm[0,4], "0,4");
-			
-			Assert.AreEqual (0.5f, cm[1,0], "1,0");
-			Assert.AreEqual (1, cm[1,1], "1,1");
-			Assert.AreEqual (0, cm[1,2], "1,2");
-			Assert.AreEqual (0, cm[1,3], "1,3");
-			Assert.AreEqual (0, cm[1,4], "1,4");
-			
-			Assert.AreEqual (0, cm[2,0], "2,0");
-			Assert.AreEqual (0.1f, cm[2,1], "2,1");
-			Assert.AreEqual (1.5f, cm[2,2], "2,2");
-			Assert.AreEqual (0, cm[2,3], "2,3");
-			Assert.AreEqual (0, cm[2,4], "2,4");
-			
-			Assert.AreEqual (0.5f, cm[3,0], "3,0");
-			Assert.AreEqual (3, cm[3,1], "3,1");
-			Assert.AreEqual (0.5f, cm[3,2], "3,2");
-			Assert.AreEqual (1, cm[3,3], "3,3");
-			Assert.AreEqual (0, cm[3,4], "3,4");
-			
-			Assert.AreEqual (0, cm[4,0], "4,0");
-			Assert.AreEqual (0, cm[4,1], "4,1");
-			Assert.AreEqual (0, cm[4,2], "4,2");
-			Assert.AreEqual (0, cm[4,3], "4,3");
-			Assert.AreEqual (0, cm[4,4], "4,4");
-		}
-
-		[Test]
-		public void IndividualProperties ()
-		{
-			ColorMatrix cm = new ColorMatrix (new float[][] {
-				new float[] 	{1,	0,	0, 	0, 	0},
-				new float[] 	{0.5f,	1,	0, 	0, 	0},
-				new float[] 	{0,	0.1f,	1.5f, 	0, 	0},
-				new float[] 	{0.5f,	3,	0.5f, 	1, 	0},
-				new float[] 	{0,	0,	0, 	0, 	0}
-			});
-
-			Assert.AreEqual (1, cm.Matrix00, "0,0");
-			Assert.AreEqual (0, cm.Matrix01, "0,1");
-			Assert.AreEqual (0, cm.Matrix02, "0,2");
-			Assert.AreEqual (0, cm.Matrix03, "0,3");
-			Assert.AreEqual (0, cm.Matrix04, "0,4");
-			
-			Assert.AreEqual (0.5f, cm.Matrix10, "1,0");
-			Assert.AreEqual (1, cm.Matrix11, "1,1");
-			Assert.AreEqual (0, cm.Matrix12, "1,2");
-			Assert.AreEqual (0, cm.Matrix13, "1,3");
-			Assert.AreEqual (0, cm.Matrix14, "1,4");
-			
-			Assert.AreEqual (0, cm.Matrix20, "2,0");
-			Assert.AreEqual (0.1f, cm.Matrix21, "2,1");
-			Assert.AreEqual (1.5f, cm.Matrix22, "2,2");
-			Assert.AreEqual (0, cm.Matrix23, "2,3");
-			Assert.AreEqual (0, cm.Matrix24, "2,4");
-			
-			Assert.AreEqual (0.5f, cm.Matrix30, "3,0");
-			Assert.AreEqual (3, cm.Matrix31, "3,1");
-			Assert.AreEqual (0.5f, cm.Matrix32, "3,2");
-			Assert.AreEqual (1, cm.Matrix33, "3,3");
-			Assert.AreEqual (0, cm.Matrix34, "3,4");
-			
-			Assert.AreEqual (0, cm.Matrix40, "4,0");
-			Assert.AreEqual (0, cm.Matrix41, "4,1");
-			Assert.AreEqual (0, cm.Matrix42, "4,2");
-			Assert.AreEqual (0, cm.Matrix43, "4,3");
-			Assert.AreEqual (0, cm.Matrix44, "4,4");
-		}
-	}
-}
+//
+// Copyright (C) 2005-2007 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//
+// Authors:
+//   Jordi Mas i Hernandez (jordi@ximian.com)
+//   Sebastien Pouliot  <sebastien@ximian.com>
+//
+
+using System;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Runtime.InteropServices;
+using System.Security.Permissions;
+using NUnit.Framework;
+
+namespace MonoTests.System.Drawing.Imaging {
+
+	[TestFixture]
+	[SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
+	public class ColorMatrixTest {
+
+		[Test]
+		[ExpectedException (typeof (NullReferenceException))]
+		public void Constructor_Null ()
+		{
+			new ColorMatrix (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (IndexOutOfRangeException))]
+		public void Constructor_TooSmallArraySize ()
+		{
+			new ColorMatrix (new float[][] { });
+		}
+
+		[Test]
+		[ExpectedException (typeof (IndexOutOfRangeException))]
+		public void Constructor_TooWideArraySize ()
+		{
+			new ColorMatrix (new float[][] {
+				new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f }
+			});
+		}
+
+		[Test]
+		[ExpectedException (typeof (IndexOutOfRangeException))]
+		public void Constructor_TooTallArraySize ()
+		{
+			new ColorMatrix (new float[][] {
+				new float[] { 0.0f },
+				new float[] { 1.0f },
+				new float[] { 2.0f },
+				new float[] { 3.0f },
+				new float[] { 4.0f },
+				new float[] { 5.0f }
+			});
+		}
+
+		[Test]
+		public void Constructor_TooBigArraySize ()
+		{
+			ColorMatrix cm = new ColorMatrix (new float[][] {
+				new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f },
+				new float[] { 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f },
+				new float[] { 2.0f, 2.1f, 2.2f, 2.3f, 2.4f, 2.5f },
+				new float[] { 3.0f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f },
+				new float[] { 4.0f, 4.1f, 4.2f, 4.3f, 4.4f, 4.5f },
+				new float[] { 5.0f, 5.1f, 5.2f, 5.3f, 5.4f, 5.5f }
+			});
+
+			Assert.AreEqual (0.0f, cm.Matrix00, "00");
+			Assert.AreEqual (0.1f, cm.Matrix01, "01");
+			Assert.AreEqual (0.2f, cm.Matrix02, "02");
+			Assert.AreEqual (0.3f, cm.Matrix03, "03");
+			Assert.AreEqual (0.4f, cm.Matrix04, "04");
+			Assert.AreEqual (1.0f, cm.Matrix10, "10");
+			Assert.AreEqual (1.1f, cm.Matrix11, "11");
+			Assert.AreEqual (1.2f, cm.Matrix12, "12");
+			Assert.AreEqual (1.3f, cm.Matrix13, "13");
+			Assert.AreEqual (1.4f, cm.Matrix14, "14");
+			Assert.AreEqual (2.0f, cm.Matrix20, "20");
+			Assert.AreEqual (2.1f, cm.Matrix21, "21");
+			Assert.AreEqual (2.2f, cm.Matrix22, "22");
+			Assert.AreEqual (2.3f, cm.Matrix23, "23");
+			Assert.AreEqual (2.4f, cm.Matrix24, "24");
+			Assert.AreEqual (3.0f, cm.Matrix30, "30");
+			Assert.AreEqual (3.1f, cm.Matrix31, "31");
+			Assert.AreEqual (3.2f, cm.Matrix32, "32");
+			Assert.AreEqual (3.3f, cm.Matrix33, "33");
+			Assert.AreEqual (3.4f, cm.Matrix34, "34");
+			Assert.AreEqual (4.0f, cm.Matrix40, "40");
+			Assert.AreEqual (4.1f, cm.Matrix41, "41");
+			Assert.AreEqual (4.2f, cm.Matrix42, "42");
+			Assert.AreEqual (4.3f, cm.Matrix43, "43");
+			Assert.AreEqual (4.4f, cm.Matrix44, "44");
+		}
+
+		[Test]
+		[ExpectedException (typeof (IndexOutOfRangeException))]
+		public void TooBigItems ()
+		{
+			ColorMatrix cm = new ColorMatrix (new float[][] {
+				new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f },
+				new float[] { 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f },
+				new float[] { 2.0f, 2.1f, 2.2f, 2.3f, 2.4f, 2.5f },
+				new float[] { 3.0f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f },
+				new float[] { 4.0f, 4.1f, 4.2f, 4.3f, 4.4f, 4.5f },
+				new float[] { 5.0f, 5.1f, 5.2f, 5.3f, 5.4f, 5.5f }
+			});
+			Assert.AreEqual (5.5f, cm[5,5], "out");
+		}
+
+		[Test]
+		public void DefaultConstructor ()
+		{
+			ColorMatrix cm = new ColorMatrix ();
+
+			Assert.AreEqual (1, cm.Matrix00, "0,0");
+			Assert.AreEqual (1, cm.Matrix11, "1,1");
+			Assert.AreEqual (1, cm.Matrix22, "2,2");
+			Assert.AreEqual (1, cm.Matrix33, "3,3");
+			Assert.AreEqual (1, cm.Matrix44, "4,4");
+			Assert.AreEqual (0, cm.Matrix01, "0,1");
+			Assert.AreEqual (0, cm.Matrix02, "0,2");
+			Assert.AreEqual (0, cm.Matrix03, "0,3");
+			Assert.AreEqual (0, cm.Matrix04, "0,4");
+			Assert.AreEqual (0, cm.Matrix10, "1,0");
+			Assert.AreEqual (0, cm.Matrix12, "1,2");
+			Assert.AreEqual (0, cm.Matrix13, "1,3");
+			Assert.AreEqual (0, cm.Matrix14, "1,4");
+			Assert.AreEqual (0, cm.Matrix20, "2,0");
+			Assert.AreEqual (0, cm.Matrix21, "2,1");
+			Assert.AreEqual (0, cm.Matrix23, "2,3");
+			Assert.AreEqual (0, cm.Matrix24, "2,4");
+			Assert.AreEqual (0, cm.Matrix30, "3,0");
+			Assert.AreEqual (0, cm.Matrix31, "3,1");
+			Assert.AreEqual (0, cm.Matrix32, "3,2");
+			Assert.AreEqual (0, cm.Matrix34, "3,4");
+			Assert.AreEqual (0, cm.Matrix40, "4,0");
+			Assert.AreEqual (0, cm.Matrix41, "4,1");
+			Assert.AreEqual (0, cm.Matrix42, "4,2");
+			Assert.AreEqual (0, cm.Matrix43, "4,3");
+			Assert.AreEqual (100, Marshal.SizeOf (cm), "object");
+			Assert.AreEqual (100, Marshal.SizeOf (typeof (ColorMatrix)), "type");
+		}
+
+		[Test]
+		public void ConstructorArrayAndMethods ()
+		{
+			ColorMatrix cm = new ColorMatrix (new float[][] {
+				new float[] {0.393f, 0.349f, 0.272f, 0, 0},
+			        new float[] {0.769f, 0.686f, 0.534f, 0, 0},
+			        new float[] {0.189f, 0.168f, 0.131f, 0, 0},
+			        new float[] {     0,      0,      0, 1, 0},
+			        new float[] {     0,      0,      0, 0, 1}
+			});
+
+			Assert.AreEqual (0.393f, cm.Matrix00, "00");
+			Assert.AreEqual (0.349f, cm.Matrix01, "01");
+			Assert.AreEqual (0.272f, cm.Matrix02, "02");
+			Assert.AreEqual (0, cm.Matrix03, "03");
+			Assert.AreEqual (0, cm.Matrix04, "04");
+
+			Assert.AreEqual (0.769f, cm.Matrix10, "10");
+			Assert.AreEqual (0.686f, cm.Matrix11, "11");
+			Assert.AreEqual (0.534f, cm.Matrix12, "12");
+			Assert.AreEqual (0, cm.Matrix13, "13");
+			Assert.AreEqual (0, cm.Matrix14, "14");
+
+			Assert.AreEqual (0.189f, cm.Matrix20, "20");
+			Assert.AreEqual (0.168f, cm.Matrix21, "21");
+			Assert.AreEqual (0.131f, cm.Matrix22, "22");
+			Assert.AreEqual (0, cm.Matrix23, "23");
+			Assert.AreEqual (0, cm.Matrix24, "24");
+
+			Assert.AreEqual (0, cm.Matrix30, "30");
+			Assert.AreEqual (0, cm.Matrix31, "31");
+			Assert.AreEqual (0, cm.Matrix32, "32");
+			Assert.AreEqual (1, cm.Matrix33, "33");
+			Assert.AreEqual (0, cm.Matrix34, "34");
+
+			Assert.AreEqual (0, cm.Matrix40, "40");
+			Assert.AreEqual (0, cm.Matrix41, "41");
+			Assert.AreEqual (0, cm.Matrix42, "42");
+			Assert.AreEqual (0, cm.Matrix43, "43");
+			Assert.AreEqual (1, cm.Matrix44, "44");
+		}
+
+		[Test]
+		public void IndexerProperty ()
+		{
+			ColorMatrix cm = new ColorMatrix (new float[][] {
+				new float[] 	{1,	0,	0, 	0, 	0},
+				new float[] 	{0.5f,	1,	0, 	0, 	0},
+				new float[] 	{0,	0.1f,	1.5f, 	0, 	0},
+				new float[] 	{0.5f,	3,	0.5f, 	1, 	0},
+				new float[] 	{0,	0,	0, 	0, 	0}
+			});
+
+			Assert.AreEqual (1, cm[0,0], "0,0");
+			Assert.AreEqual (0, cm[0,1], "0,1");
+			Assert.AreEqual (0, cm[0,2], "0,2");
+			Assert.AreEqual (0, cm[0,3], "0,3");
+			Assert.AreEqual (0, cm[0,4], "0,4");
+			
+			Assert.AreEqual (0.5f, cm[1,0], "1,0");
+			Assert.AreEqual (1, cm[1,1], "1,1");
+			Assert.AreEqual (0, cm[1,2], "1,2");
+			Assert.AreEqual (0, cm[1,3], "1,3");
+			Assert.AreEqual (0, cm[1,4], "1,4");
+			
+			Assert.AreEqual (0, cm[2,0], "2,0");
+			Assert.AreEqual (0.1f, cm[2,1], "2,1");
+			Assert.AreEqual (1.5f, cm[2,2], "2,2");
+			Assert.AreEqual (0, cm[2,3], "2,3");
+			Assert.AreEqual (0, cm[2,4], "2,4");
+			
+			Assert.AreEqual (0.5f, cm[3,0], "3,0");
+			Assert.AreEqual (3, cm[3,1], "3,1");
+			Assert.AreEqual (0.5f, cm[3,2], "3,2");
+			Assert.AreEqual (1, cm[3,3], "3,3");
+			Assert.AreEqual (0, cm[3,4], "3,4");
+			
+			Assert.AreEqual (0, cm[4,0], "4,0");
+			Assert.AreEqual (0, cm[4,1], "4,1");
+			Assert.AreEqual (0, cm[4,2], "4,2");
+			Assert.AreEqual (0, cm[4,3], "4,3");
+			Assert.AreEqual (0, cm[4,4], "4,4");
+		}
+
+		[Test]
+		public void IndividualProperties ()
+		{
+			ColorMatrix cm = new ColorMatrix (new float[][] {
+				new float[] 	{1,	0,	0, 	0, 	0},
+				new float[] 	{0.5f,	1,	0, 	0, 	0},
+				new float[] 	{0,	0.1f,	1.5f, 	0, 	0},
+				new float[] 	{0.5f,	3,	0.5f, 	1, 	0},
+				new float[] 	{0,	0,	0, 	0, 	0}
+			});
+
+			Assert.AreEqual (1, cm.Matrix00, "0,0");
+			Assert.AreEqual (0, cm.Matrix01, "0,1");
+			Assert.AreEqual (0, cm.Matrix02, "0,2");
+			Assert.AreEqual (0, cm.Matrix03, "0,3");
+			Assert.AreEqual (0, cm.Matrix04, "0,4");
+			
+			Assert.AreEqual (0.5f, cm.Matrix10, "1,0");
+			Assert.AreEqual (1, cm.Matrix11, "1,1");
+			Assert.AreEqual (0, cm.Matrix12, "1,2");
+			Assert.AreEqual (0, cm.Matrix13, "1,3");
+			Assert.AreEqual (0, cm.Matrix14, "1,4");
+			
+			Assert.AreEqual (0, cm.Matrix20, "2,0");
+			Assert.AreEqual (0.1f, cm.Matrix21, "2,1");
+			Assert.AreEqual (1.5f, cm.Matrix22, "2,2");
+			Assert.AreEqual (0, cm.Matrix23, "2,3");
+			Assert.AreEqual (0, cm.Matrix24, "2,4");
+			
+			Assert.AreEqual (0.5f, cm.Matrix30, "3,0");
+			Assert.AreEqual (3, cm.Matrix31, "3,1");
+			Assert.AreEqual (0.5f, cm.Matrix32, "3,2");
+			Assert.AreEqual (1, cm.Matrix33, "3,3");
+			Assert.AreEqual (0, cm.Matrix34, "3,4");
+			
+			Assert.AreEqual (0, cm.Matrix40, "4,0");
+			Assert.AreEqual (0, cm.Matrix41, "4,1");
+			Assert.AreEqual (0, cm.Matrix42, "4,2");
+			Assert.AreEqual (0, cm.Matrix43, "4,3");
+			Assert.AreEqual (0, cm.Matrix44, "4,4");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/Clerk.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/Clerk.cs
@@ -1,105 +1,105 @@
-// 
-// System.EnterpriseServices.CompensatingResourceManager.Clerk.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.EnterpriseServices;
-
-namespace System.EnterpriseServices.CompensatingResourceManager {
-	public sealed class Clerk {
-
-		#region Constructors
-		
-		//internal Clerk (CrmLogControl logControl)
-		//{
-		//}
-
-		[MonoTODO]
-		public Clerk (string compensator, string description, CompensatorOptions flags)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public Clerk (Type compensator, string description, CompensatorOptions flags)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public int LogRecordCount {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public string TransactionUOW {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[MonoTODO]
-		~Clerk ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void ForceLog ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void ForceTransactionToAbort ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void ForgetLogRecord ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void WriteLogRecord (object record)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.CompensatingResourceManager.Clerk.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.EnterpriseServices;
+
+namespace System.EnterpriseServices.CompensatingResourceManager {
+	public sealed class Clerk {
+
+		#region Constructors
+		
+		//internal Clerk (CrmLogControl logControl)
+		//{
+		//}
+
+		[MonoTODO]
+		public Clerk (string compensator, string description, CompensatorOptions flags)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public Clerk (Type compensator, string description, CompensatorOptions flags)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public int LogRecordCount {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public string TransactionUOW {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		#endregion // Properties
+
+		#region Methods
+
+		[MonoTODO]
+		~Clerk ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void ForceLog ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void ForceTransactionToAbort ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void ForgetLogRecord ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void WriteLogRecord (object record)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/ClerkInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/ClerkInfo.cs
@@ -1,100 +1,100 @@
-// System.EnterpriseServices.CompensatingResourceManager.ClerkInfo.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices.CompensatingResourceManager {
-
-	public sealed class ClerkInfo
-	{
-		[MonoTODO]
-		~ClerkInfo ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#region Constructors
-
-		// FIXME we should actually have this constructor 
-		// internal ClerkInfo(System.EnterpriseServices.CompensatingResourceManager.CrmMonitor monitor,
-		//		System.EnterpriseServices.CompensatingResourceManager._IMonitorClerks clerks)
-		// but we currently don't have these types
-		internal ClerkInfo ()
-		{
-		}
-
-		#endregion Constructors
-
-		#region Properties
-
-		[MonoTODO]
-		public string ActivityId {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public Clerk Clerk {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string Compensator {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string Description {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string InstanceId {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string TransactionUOW {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		#endregion
-
-	}
-}
+// System.EnterpriseServices.CompensatingResourceManager.ClerkInfo.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices.CompensatingResourceManager {
+
+	public sealed class ClerkInfo
+	{
+		[MonoTODO]
+		~ClerkInfo ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#region Constructors
+
+		// FIXME we should actually have this constructor 
+		// internal ClerkInfo(System.EnterpriseServices.CompensatingResourceManager.CrmMonitor monitor,
+		//		System.EnterpriseServices.CompensatingResourceManager._IMonitorClerks clerks)
+		// but we currently don't have these types
+		internal ClerkInfo ()
+		{
+		}
+
+		#endregion Constructors
+
+		#region Properties
+
+		[MonoTODO]
+		public string ActivityId {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public Clerk Clerk {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string Compensator {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string Description {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string InstanceId {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string TransactionUOW {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		#endregion
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/ClerkMonitor.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/ClerkMonitor.cs
@@ -1,93 +1,93 @@
-// System.EnterpriseServices.CompensatingResourceManager.ClerkMonitor.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace System.EnterpriseServices.CompensatingResourceManager {
-
-	public sealed class ClerkMonitor : IEnumerable {
-
-		[MonoTODO]
-		~ClerkMonitor ()
-		{
-		}
-
-		#region Constructors
-
-		[MonoTODO]
-		public ClerkMonitor ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-
-		#region Properties
-
-		[MonoTODO]
-		public int Count {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public ClerkInfo this [string index] {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public ClerkInfo this [int index] {
-			get {
-				throw new NotImplementedException ();
-			}
-		}
-
-		#endregion
-
-
-		#region Properties
-
-		[MonoTODO]
-		public IEnumerator GetEnumerator ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Populate ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-	}
-}
+// System.EnterpriseServices.CompensatingResourceManager.ClerkMonitor.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace System.EnterpriseServices.CompensatingResourceManager {
+
+	public sealed class ClerkMonitor : IEnumerable {
+
+		[MonoTODO]
+		~ClerkMonitor ()
+		{
+		}
+
+		#region Constructors
+
+		[MonoTODO]
+		public ClerkMonitor ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+
+		#region Properties
+
+		[MonoTODO]
+		public int Count {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public ClerkInfo this [string index] {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public ClerkInfo this [int index] {
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+
+		#endregion
+
+
+		#region Properties
+
+		[MonoTODO]
+		public IEnumerator GetEnumerator ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Populate ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/CompensatorOptions.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/CompensatorOptions.cs
@@ -1,43 +1,43 @@
-// 
-// System.EnterpriseServices.CompensatingResourceManager.CompensatorOptions.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices.CompensatingResourceManager {
-	[Flags]
-	[Serializable]
-	public enum CompensatorOptions {
-		PreparePhase = 0x1,
-		CommitPhase = 0x2,
-		AbortPhase = 0x4,
-		AllPhases =  0x7,
-		FailIfInDoubtsRemain = 0x10
-	}
-}
+// 
+// System.EnterpriseServices.CompensatingResourceManager.CompensatorOptions.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices.CompensatingResourceManager {
+	[Flags]
+	[Serializable]
+	public enum CompensatorOptions {
+		PreparePhase = 0x1,
+		CommitPhase = 0x2,
+		AbortPhase = 0x4,
+		AllPhases =  0x7,
+		FailIfInDoubtsRemain = 0x10
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/LogRecord.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/LogRecord.cs
@@ -1,90 +1,90 @@
-// 
-// System.EnterpriseServices.CompensatingResourceManager.LogRecord.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.EnterpriseServices;
-
-namespace System.EnterpriseServices.CompensatingResourceManager {
-
-	public sealed class LogRecord {
-
-		#region Fields
-
-		LogRecordFlags flags;
-		object record;
-		int sequence;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		[MonoTODO]
-		internal LogRecord ()
-		{
-		}
-
-		[MonoTODO]
-		internal LogRecord (_LogRecord logRecord)
-		{
-			flags = (LogRecordFlags) logRecord.dwCrmFlags;
-			sequence = logRecord.dwSequenceNumber;
-			record = logRecord.blobUserData;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public LogRecordFlags Flags {
-			get { return flags; }
-		}
-
-		public object Record {
-			get { return record; }
-		}
-
-		public int Sequence {
-			get { return sequence; }
-		}
-
-		#endregion // Properties
-	}
-
-	internal struct _LogRecord {
-		
-		#region Fields
-
-		public int dwCrmFlags;
-		public int dwSequenceNumber;
-		public object blobUserData; // FIXME: This is not the correct type
-
-		#endregion // Fields
-	}
-}
+// 
+// System.EnterpriseServices.CompensatingResourceManager.LogRecord.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.EnterpriseServices;
+
+namespace System.EnterpriseServices.CompensatingResourceManager {
+
+	public sealed class LogRecord {
+
+		#region Fields
+
+		LogRecordFlags flags;
+		object record;
+		int sequence;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		[MonoTODO]
+		internal LogRecord ()
+		{
+		}
+
+		[MonoTODO]
+		internal LogRecord (_LogRecord logRecord)
+		{
+			flags = (LogRecordFlags) logRecord.dwCrmFlags;
+			sequence = logRecord.dwSequenceNumber;
+			record = logRecord.blobUserData;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public LogRecordFlags Flags {
+			get { return flags; }
+		}
+
+		public object Record {
+			get { return record; }
+		}
+
+		public int Sequence {
+			get { return sequence; }
+		}
+
+		#endregion // Properties
+	}
+
+	internal struct _LogRecord {
+		
+		#region Fields
+
+		public int dwCrmFlags;
+		public int dwSequenceNumber;
+		public object blobUserData; // FIXME: This is not the correct type
+
+		#endregion // Fields
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/LogRecordFlags.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/LogRecordFlags.cs
@@ -1,45 +1,45 @@
-// 
-// System.EnterpriseServices.CompensatingResourceManager.LogRecordFlags.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices.CompensatingResourceManager {
-	[Flags]
-	[Serializable]
-	public enum LogRecordFlags {
-		ForgetTarget = 0x1,
-		WrittenDuringPrepare = 0x2,
-		WrittenDuringCommit = 0x4,
-		WrittenDuringAbort = 0x8,
-		WrittenDurringRecovery = 0x10, // Typo present in .NET
-		WrittenDuringReplay = 0x20,
-		ReplayInProgress = 0x40
-	}
-}
+// 
+// System.EnterpriseServices.CompensatingResourceManager.LogRecordFlags.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices.CompensatingResourceManager {
+	[Flags]
+	[Serializable]
+	public enum LogRecordFlags {
+		ForgetTarget = 0x1,
+		WrittenDuringPrepare = 0x2,
+		WrittenDuringCommit = 0x4,
+		WrittenDuringAbort = 0x8,
+		WrittenDurringRecovery = 0x10, // Typo present in .NET
+		WrittenDuringReplay = 0x20,
+		ReplayInProgress = 0x40
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/TransactionState.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices.CompensatingResourceManager/TransactionState.cs
@@ -1,41 +1,41 @@
-// 
-// System.EnterpriseServices.CompensatingResourceManager.TransactionState.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices.CompensatingResourceManager {
-	[Serializable]
-	public enum TransactionState {
-		Active = 0x0,
-		Committed = 0x1,
-		Aborted = 0x2,
-		Indoubt = 0x3
-	}
-}
+// 
+// System.EnterpriseServices.CompensatingResourceManager.TransactionState.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices.CompensatingResourceManager {
+	[Serializable]
+	public enum TransactionState {
+		Active = 0x0,
+		Committed = 0x1,
+		Aborted = 0x2,
+		Indoubt = 0x3
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/AccessChecksLevelOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/AccessChecksLevelOption.cs
@@ -1,37 +1,37 @@
-// 
-// System.EnterpriseServices.AccessChecksLevelOption.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.EnterpriseServices {
-	[Serializable]
-	public enum AccessChecksLevelOption {
-		Application,
-		ApplicationComponent
-	}
-}
+// 
+// System.EnterpriseServices.AccessChecksLevelOption.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.EnterpriseServices {
+	[Serializable]
+	public enum AccessChecksLevelOption {
+		Application,
+		ApplicationComponent
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ActivationOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ActivationOption.cs
@@ -1,37 +1,37 @@
-// 
-// System.EnterpriseServices.ActivationOption.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.EnterpriseServices {
-	[Serializable]
-	public enum ActivationOption {
-		Library,
-		Server
-	}
-}
+// 
+// System.EnterpriseServices.ActivationOption.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.EnterpriseServices {
+	[Serializable]
+	public enum ActivationOption {
+		Library,
+		Server
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/Activity.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/Activity.cs
@@ -1,75 +1,75 @@
-// System.EnterpriseServices.Activity.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[ComVisible(false)]
-	public sealed class Activity {
-
-		#region Constructors
-
-		[MonoTODO]
-		public Activity (ServiceConfig cfg)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-
-		#region Methods
-
-		[MonoTODO]
-		public void AsynchronousCall (IServiceCall serviceCall)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void BindToCurrentThread ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void SynchronousCall (IServiceCall serviceCall)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void UnbindFromThread ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-	}
-}
+// System.EnterpriseServices.Activity.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[ComVisible(false)]
+	public sealed class Activity {
+
+		#region Constructors
+
+		[MonoTODO]
+		public Activity (ServiceConfig cfg)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+
+		#region Methods
+
+		[MonoTODO]
+		public void AsynchronousCall (IServiceCall serviceCall)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void BindToCurrentThread ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void SynchronousCall (IServiceCall serviceCall)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void UnbindFromThread ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ApplicationQueuingAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ApplicationQueuingAttribute.cs
@@ -1,77 +1,77 @@
-// 
-// System.EnterpriseServices.ApplicationQueuingAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Assembly)]
-	[ComVisible(false)]
-	public sealed class ApplicationQueuingAttribute : Attribute {
-
-		#region Fields
-
-		bool enabled;
-		int maxListenerThreads;
-		bool queueListenerEnabled;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public ApplicationQueuingAttribute ()
-		{
-			enabled = true;
-			queueListenerEnabled = false;
-			maxListenerThreads = 0;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Enabled {
-			get { return enabled; }
-			set { enabled = value; }
-		}
-
-		public int MaxListenerThreads {
-			get { return maxListenerThreads; }
-			set { maxListenerThreads = value; }
-		}
-
-		public bool QueueListenerEnabled {
-			get { return queueListenerEnabled; }
-			set { queueListenerEnabled = value; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.ApplicationQueuingAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Assembly)]
+	[ComVisible(false)]
+	public sealed class ApplicationQueuingAttribute : Attribute {
+
+		#region Fields
+
+		bool enabled;
+		int maxListenerThreads;
+		bool queueListenerEnabled;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public ApplicationQueuingAttribute ()
+		{
+			enabled = true;
+			queueListenerEnabled = false;
+			maxListenerThreads = 0;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Enabled {
+			get { return enabled; }
+			set { enabled = value; }
+		}
+
+		public int MaxListenerThreads {
+			get { return maxListenerThreads; }
+			set { maxListenerThreads = value; }
+		}
+
+		public bool QueueListenerEnabled {
+			get { return queueListenerEnabled; }
+			set { queueListenerEnabled = value; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/AutoCompleteAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/AutoCompleteAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.AutoCompleteAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Method)]
-	[ComVisible(false)]
-	public sealed class AutoCompleteAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public AutoCompleteAttribute ()
-		{
-			val = true;
-		}
-
-		public AutoCompleteAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {	
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.AutoCompleteAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Method)]
+	[ComVisible(false)]
+	public sealed class AutoCompleteAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public AutoCompleteAttribute ()
+		{
+			val = true;
+		}
+
+		public AutoCompleteAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {	
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/BOID.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/BOID.cs
@@ -1,46 +1,46 @@
-// 
-// System.EnterpriseServices.BOID.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[ComVisible(false)]
-	public struct BOID {
-
-		#region Fields
-
-		[MarshalAs (UnmanagedType.ByValArray, SizeConst = 0x10)]
-		public byte[] rgb;
-
-		#endregion // Fields
-	}
-}
+// 
+// System.EnterpriseServices.BOID.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[ComVisible(false)]
+	public struct BOID {
+
+		#region Fields
+
+		[MarshalAs (UnmanagedType.ByValArray, SizeConst = 0x10)]
+		public byte[] rgb;
+
+		#endregion // Fields
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/BYOT.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/BYOT.cs
@@ -1,60 +1,60 @@
-// 
-// System.EnterpriseServices.BYOT.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices {
-	public sealed class BYOT
-	{
-		#region Constructors
-
-		private BYOT ()
-		{
-		}
-
-		#endregion Constructors
-
-		#region Methods
-
-		[MonoTODO]
-		public static object CreateWithTipTransaction (string url, Type t)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static object CreateWithTransaction (object transaction, Type t)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.BYOT.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices {
+	public sealed class BYOT
+	{
+		#region Constructors
+
+		private BYOT ()
+		{
+		}
+
+		#endregion Constructors
+
+		#region Methods
+
+		[MonoTODO]
+		public static object CreateWithTipTransaction (string url, Type t)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static object CreateWithTransaction (object transaction, Type t)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/BindingOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/BindingOption.cs
@@ -1,41 +1,41 @@
-// System.EnterpriseServices.BindingOption.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Serializable]
-	[ComVisible(false)]
-	public enum BindingOption {
-
-		NoBinding,
-		BindingToPoolThread
-	}
-}
+// System.EnterpriseServices.BindingOption.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Serializable]
+	[ComVisible(false)]
+	public enum BindingOption {
+
+		NoBinding,
+		BindingToPoolThread
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/COMTIIntrinsicsAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/COMTIIntrinsicsAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.COMTIIntrinsicsAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class COMTIIntrinsicsAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public COMTIIntrinsicsAttribute ()
-		{
-			this.val = false;
-		}
-
-		public COMTIIntrinsicsAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.COMTIIntrinsicsAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class COMTIIntrinsicsAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public COMTIIntrinsicsAttribute ()
+		{
+			this.val = false;
+		}
+
+		public COMTIIntrinsicsAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ComponentAccessControlAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ComponentAccessControlAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.ComponentAccessControlAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class ComponentAccessControlAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public ComponentAccessControlAttribute ()
-		{
-			this.val = false;
-		}
-
-		public ComponentAccessControlAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.ComponentAccessControlAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class ComponentAccessControlAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public ComponentAccessControlAttribute ()
+		{
+			this.val = false;
+		}
+
+		public ComponentAccessControlAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ConstructionEnabledAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ConstructionEnabledAttribute.cs
@@ -1,76 +1,76 @@
-// 
-// System.EnterpriseServices.ConstructionEnabledAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class ConstructionEnabledAttribute : Attribute {
-
-		#region Fields
-
-		string def;
-		bool enabled;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public ConstructionEnabledAttribute ()
-		{
-			def = String.Empty;
-			enabled = true;
-		}
-
-		public ConstructionEnabledAttribute (bool val)
-		{
-			def = String.Empty;
-			enabled = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public string Default {
-			get { return def; }
-			set { def = value; }
-		}
-
-		public bool Enabled {
-			get { return enabled; }
-			set { enabled = value; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.ConstructionEnabledAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class ConstructionEnabledAttribute : Attribute {
+
+		#region Fields
+
+		string def;
+		bool enabled;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public ConstructionEnabledAttribute ()
+		{
+			def = String.Empty;
+			enabled = true;
+		}
+
+		public ConstructionEnabledAttribute (bool val)
+		{
+			def = String.Empty;
+			enabled = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public string Default {
+			get { return def; }
+			set { def = value; }
+		}
+
+		public bool Enabled {
+			get { return enabled; }
+			set { enabled = value; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ContextUtil.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ContextUtil.cs
@@ -1,168 +1,168 @@
-// 
-// System.EnterpriseServices.ContextUtil.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Transactions;
-
-namespace System.EnterpriseServices {
-	public sealed class ContextUtil {
-
-		#region Fields
-
-		static bool deactivateOnReturn;
-		static TransactionVote myTransactionVote;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		internal ContextUtil ()
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public static Guid ActivityId {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-		
-		public static Guid ApplicationId {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static Guid ApplicationInstanceId {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static Guid ContextId {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static bool DeactivateOnReturn {
-			get { return deactivateOnReturn; }
-			set { deactivateOnReturn = value; }
-		}
-
-		public static bool IsInTransaction {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static bool IsSecurityEnabled {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-		
-		[MonoTODO]
-		public static TransactionVote MyTransactionVote {
-			get { return myTransactionVote; }
-			set { myTransactionVote = value; }
-		}
-
-		public static Guid PartitionId {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static object Transaction {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static Transaction SystemTransaction {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static Guid TransactionId {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[MonoTODO]
-		public static void DisableCommit ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static void EnableCommit ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static object GetNamedProperty (string name)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static bool IsCallerInRole (string role)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static bool IsDefaultContext ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static void SetAbort ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static void SetComplete ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static void SetNamedProperty (string name, object property)
-		{
-			throw new NotImplementedException ();
-		}
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.ContextUtil.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Transactions;
+
+namespace System.EnterpriseServices {
+	public sealed class ContextUtil {
+
+		#region Fields
+
+		static bool deactivateOnReturn;
+		static TransactionVote myTransactionVote;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		internal ContextUtil ()
+		{
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public static Guid ActivityId {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+		
+		public static Guid ApplicationId {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static Guid ApplicationInstanceId {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static Guid ContextId {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static bool DeactivateOnReturn {
+			get { return deactivateOnReturn; }
+			set { deactivateOnReturn = value; }
+		}
+
+		public static bool IsInTransaction {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static bool IsSecurityEnabled {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+		
+		[MonoTODO]
+		public static TransactionVote MyTransactionVote {
+			get { return myTransactionVote; }
+			set { myTransactionVote = value; }
+		}
+
+		public static Guid PartitionId {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static object Transaction {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static Transaction SystemTransaction {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static Guid TransactionId {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		#endregion // Properties
+
+		#region Methods
+
+		[MonoTODO]
+		public static void DisableCommit ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static void EnableCommit ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static object GetNamedProperty (string name)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static bool IsCallerInRole (string role)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static bool IsDefaultContext ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static void SetAbort ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static void SetComplete ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static void SetNamedProperty (string name, object property)
+		{
+			throw new NotImplementedException ();
+		}
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/DescriptionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/DescriptionAttribute.cs
@@ -1,54 +1,54 @@
-// 
-// System.EnterpriseServices.DescriptionAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Interface)]
-	[ComVisible(false)]
-	public sealed class DescriptionAttribute : Attribute {
-
-		#region Fields
-
-//		string desc;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public DescriptionAttribute (string desc)
-		{
-//			this.desc = desc;
-		}
-
-		#endregion // Constructors
-	}
-}
+// 
+// System.EnterpriseServices.DescriptionAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Interface)]
+	[ComVisible(false)]
+	public sealed class DescriptionAttribute : Attribute {
+
+		#region Fields
+
+//		string desc;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public DescriptionAttribute (string desc)
+		{
+//			this.desc = desc;
+		}
+
+		#endregion // Constructors
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/EventClassAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/EventClassAttribute.cs
@@ -1,77 +1,77 @@
-// 
-// System.EnterpriseServices.EventClassAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class EventClassAttribute : Attribute {
-
-		#region Fields
-
-		bool allowInProcSubscribers;
-		bool fireInParallel;
-		string publisherFilter;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public EventClassAttribute ()
-		{
-			allowInProcSubscribers = true;
-			fireInParallel = false;
-			publisherFilter = null;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool AllowInprocSubscribers {
-			get { return allowInProcSubscribers; }
-			set { allowInProcSubscribers = value; }
-		}
-
-		public bool FireInParallel {
-			get { return fireInParallel; }
-			set { fireInParallel = value; }
-		}
-
-		public string PublisherFilter {
-			get { return publisherFilter; }
-			set { publisherFilter = value; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.EventClassAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class EventClassAttribute : Attribute {
+
+		#region Fields
+
+		bool allowInProcSubscribers;
+		bool fireInParallel;
+		string publisherFilter;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public EventClassAttribute ()
+		{
+			allowInProcSubscribers = true;
+			fireInParallel = false;
+			publisherFilter = null;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool AllowInprocSubscribers {
+			get { return allowInProcSubscribers; }
+			set { allowInProcSubscribers = value; }
+		}
+
+		public bool FireInParallel {
+			get { return fireInParallel; }
+			set { fireInParallel = value; }
+		}
+
+		public string PublisherFilter {
+			get { return publisherFilter; }
+			set { publisherFilter = value; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/EventTrackingEnabledAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/EventTrackingEnabledAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.EventTrackingEnabledAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class EventTrackingEnabledAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public EventTrackingEnabledAttribute ()
-		{
-			val = true;
-		}
-
-		public EventTrackingEnabledAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.EventTrackingEnabledAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class EventTrackingEnabledAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public EventTrackingEnabledAttribute ()
+		{
+			val = true;
+		}
+
+		public EventTrackingEnabledAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ExceptionClassAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ExceptionClassAttribute.cs
@@ -1,62 +1,62 @@
-// 
-// System.EnterpriseServices.ExceptionClassAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class ExceptionClassAttribute : Attribute {
-
-		#region Fields
-
-		string name;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public ExceptionClassAttribute (string name)
-		{
-			this.name = name;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public string Value {
-			get { return name; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.ExceptionClassAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class ExceptionClassAttribute : Attribute {
+
+		#region Fields
+
+		string name;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public ExceptionClassAttribute (string name)
+		{
+			this.name = name;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public string Value {
+			get { return name; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IAsyncErrorNotify.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IAsyncErrorNotify.cs
@@ -1,46 +1,46 @@
-// 
-// System.EnterpriseServices.IAsyncErrorNotify.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Guid("FE6777FB-A674-4177-8F32-6D707E113484")]
-	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-	[ComImport]
-	public interface IAsyncErrorNotify {
-
-		#region Methods
-
-		void OnError (int hresult);
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.IAsyncErrorNotify.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Guid("FE6777FB-A674-4177-8F32-6D707E113484")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	public interface IAsyncErrorNotify {
+
+		#region Methods
+
+		void OnError (int hresult);
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IISIntrinsicsAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IISIntrinsicsAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.IISIntrinsicsAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class IISIntrinsicsAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public IISIntrinsicsAttribute ()
-		{
-			val = true;
-		}
-
-		public IISIntrinsicsAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.IISIntrinsicsAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class IISIntrinsicsAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public IISIntrinsicsAttribute ()
+		{
+			val = true;
+		}
+
+		public IISIntrinsicsAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IPlaybackControl.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IPlaybackControl.cs
@@ -1,47 +1,47 @@
-// 
-// System.EnterpriseServices.IPlaybackControl.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Guid("51372AFD-CAE7-11CF-BE81-00AA00A2FA25")]
-	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-	[ComImport]
-	public interface IPlaybackControl {
-
-		#region Methods
-
-		void FinalClientRetry ();
-		void FinalServerRetry ();
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.IPlaybackControl.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Guid("51372AFD-CAE7-11CF-BE81-00AA00A2FA25")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	public interface IPlaybackControl {
+
+		#region Methods
+
+		void FinalClientRetry ();
+		void FinalServerRetry ();
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IProcessInitControl.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IProcessInitControl.cs
@@ -1,46 +1,46 @@
-// 
-// System.EnterpriseServices.IProcessInitControl.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Guid("72380d55-8d2b-43a3-8513-2b6ef31434e9")]
-	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-	[ComImport]
-	public interface IProcessInitControl {
-
-		#region Methods
-
-		void ResetInitializerTimeout (int dwSecondsRemaining);
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.IProcessInitControl.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Guid("72380d55-8d2b-43a3-8513-2b6ef31434e9")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	public interface IProcessInitControl {
+
+		#region Methods
+
+		void ResetInitializerTimeout (int dwSecondsRemaining);
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IRemoteDispatch.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IRemoteDispatch.cs
@@ -1,49 +1,49 @@
-// 
-// System.EnterpriseServices.IRemoteDispatch.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Guid("6619a740-8154-43be-a186-0319578e02db")]
-	public interface IRemoteDispatch {
-
-		#region Methods
-
-		[AutoComplete]
-		string RemoteDispatchAutoDone (string s);
-
-		[AutoComplete (false)]
-		string RemoteDispatchNotAutoDone (string s);
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.IRemoteDispatch.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Guid("6619a740-8154-43be-a186-0319578e02db")]
+	public interface IRemoteDispatch {
+
+		#region Methods
+
+		[AutoComplete]
+		string RemoteDispatchAutoDone (string s);
+
+		[AutoComplete (false)]
+		string RemoteDispatchNotAutoDone (string s);
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISecurityCallContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISecurityCallContext.cs
@@ -1,55 +1,55 @@
-// 
-// System.EnterpriseServices.ISecurityCallContext.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace System.EnterpriseServices {
-	internal interface ISecurityCallContext {
-
-		#region Properties
-
-		int Count {
-			get;
-		}
-
-		#endregion
-
-		#region Methods
-
-		void GetEnumerator (ref IEnumerator enumerator);
-		object GetItem (string user);
-		bool IsCallerInRole (string role);
-		bool IsSecurityEnabled ();
-		bool IsUserInRole (ref object user, string role);
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.ISecurityCallContext.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace System.EnterpriseServices {
+	internal interface ISecurityCallContext {
+
+		#region Properties
+
+		int Count {
+			get;
+		}
+
+		#endregion
+
+		#region Methods
+
+		void GetEnumerator (ref IEnumerator enumerator);
+		object GetItem (string user);
+		bool IsCallerInRole (string role);
+		bool IsSecurityEnabled ();
+		bool IsUserInRole (ref object user, string role);
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISecurityCallersColl.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISecurityCallersColl.cs
@@ -1,52 +1,52 @@
-// 
-// System.EnterpriseServices.ISecurityCallersColl.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace System.EnterpriseServices {
-	internal interface ISecurityCallersColl {
-
-		#region Properties
-
-		int Count {
-			get;
-		}
-
-		#endregion
-
-		#region Methods
-
-		void GetEnumerator (out IEnumerator enumerator);
-		ISecurityIdentityColl GetItem (int idx);
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.ISecurityCallersColl.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace System.EnterpriseServices {
+	internal interface ISecurityCallersColl {
+
+		#region Properties
+
+		int Count {
+			get;
+		}
+
+		#endregion
+
+		#region Methods
+
+		void GetEnumerator (out IEnumerator enumerator);
+		ISecurityIdentityColl GetItem (int idx);
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISecurityIdentityColl.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISecurityIdentityColl.cs
@@ -1,52 +1,52 @@
-// 
-// System.EnterpriseServices.ISecurityIdentityColl.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace System.EnterpriseServices {
-	internal interface ISecurityIdentityColl {
-
-		#region Properties
-
-		int Count {
-			get;
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		void GetEnumerator (out IEnumerator enumerator);
-		SecurityIdentity GetItem (int idx);
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.ISecurityIdentityColl.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace System.EnterpriseServices {
+	internal interface ISecurityIdentityColl {
+
+		#region Properties
+
+		int Count {
+			get;
+		}
+
+		#endregion // Properties
+
+		#region Methods
+
+		void GetEnumerator (out IEnumerator enumerator);
+		SecurityIdentity GetItem (int idx);
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IServiceCall.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IServiceCall.cs
@@ -1,46 +1,46 @@
-// 
-// System.EnterpriseServices.IServiceCall.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Guid("BD3E2E12-42DD-40f4-A09A-95A50C58304B")]
-	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
-	[ComImport]
-	public interface IServiceCall {
-
-		#region Methods
-
-		void OnCall ();
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.IServiceCall.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Guid("BD3E2E12-42DD-40f4-A09A-95A50C58304B")]
+	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	public interface IServiceCall {
+
+		#region Methods
+
+		void OnCall ();
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IServicedComponentInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/IServicedComponentInfo.cs
@@ -1,45 +1,45 @@
-// 
-// System.EnterpriseServices.IServicedComponentInfo.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[Guid("8165B19E-8D3A-4d0b-80C8-97DE310DB583")]
-	[InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-	public interface IServicedComponentInfo {
-
-		#region Methods
-
-		void GetComponentInfo (ref int infoMask, out string[] infoArray);
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.IServicedComponentInfo.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[Guid("8165B19E-8D3A-4d0b-80C8-97DE310DB583")]
+	[InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
+	public interface IServicedComponentInfo {
+
+		#region Methods
+
+		void GetComponentInfo (ref int infoMask, out string[] infoArray);
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISharedProperty.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISharedProperty.cs
@@ -1,45 +1,45 @@
-// 
-// System.EnterpriseServices.SharedProperty.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices {
-	internal interface ISharedProperty {
-
-		#region Properties
-
-		object Value {
-			get;
-			set;
-		}
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.SharedProperty.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices {
+	internal interface ISharedProperty {
+
+		#region Properties
+
+		object Value {
+			get;
+			set;
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISharedPropertyGroup.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ISharedPropertyGroup.cs
@@ -1,45 +1,45 @@
-// 
-// System.EnterpriseServices.ISharedPropertyGroup.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices {
-	internal interface ISharedPropertyGroup {
-
-		#region Methods 
-		
-		ISharedProperty CreateProperty (string name, out bool fExists);
-		ISharedProperty CreatePropertyByPosition (int position, out bool fExists);
-		ISharedProperty Property (string name);
-		ISharedProperty PropertyByPosition (int position);
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.ISharedPropertyGroup.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices {
+	internal interface ISharedPropertyGroup {
+
+		#region Methods 
+		
+		ISharedProperty CreateProperty (string name, out bool fExists);
+		ISharedProperty CreatePropertyByPosition (int position, out bool fExists);
+		ISharedProperty Property (string name);
+		ISharedProperty PropertyByPosition (int position);
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ITransaction.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ITransaction.cs
@@ -1,48 +1,48 @@
-// 
-// System.EnterpriseServices.ITransaction.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[Guid("0FB15084-AF41-11CE-BD2B-204C4F4F5020")]
-	[InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
-	[ComImport]
-	public interface ITransaction {
-
-		#region Methods
-
-		void Abort (ref BOID pboidReason, int fRetaining, int fAsync);
-		void Commit (int fRetaining, int grfTC, int grfRM);
-		void GetTransactionInfo (out XACTTRANSINFO pinfo);
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.ITransaction.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[Guid("0FB15084-AF41-11CE-BD2B-204C4F4F5020")]
+	[InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
+	[ComImport]
+	public interface ITransaction {
+
+		#region Methods
+
+		void Abort (ref BOID pboidReason, int fRetaining, int fAsync);
+		void Commit (int fRetaining, int grfTC, int grfRM);
+		void GetTransactionInfo (out XACTTRANSINFO pinfo);
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/InheritanceOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/InheritanceOption.cs
@@ -1,41 +1,41 @@
-// System.EnterpriseServices.InheritanceOption.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Serializable]
-	[ComVisible(false)]
-	public enum InheritanceOption {
-
-		Inherit,
-		Ignore
-	}
-}
+// System.EnterpriseServices.InheritanceOption.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Serializable]
+	[ComVisible(false)]
+	public enum InheritanceOption {
+
+		Inherit,
+		Ignore
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/InterfaceQueuingAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/InterfaceQueuingAttribute.cs
@@ -1,75 +1,75 @@
-// 
-// System.EnterpriseServices.InterfaceQueuingAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple=true)]
-	[ComVisible(false)]
-	public sealed class InterfaceQueuingAttribute : Attribute {
-
-		#region Fields
-
-		bool enabled;
-		string interfaceName;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public InterfaceQueuingAttribute () 
-			: this (true)
-		{
-		}
-
-		public InterfaceQueuingAttribute (bool enabled)
-		{
-			this.enabled = enabled;
-			interfaceName = null;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Enabled {
-			get { return enabled; }
-			set { enabled = value; }
-		}
-
-		public string Interface {
-			get { return interfaceName; }
-			set { interfaceName = value; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.InterfaceQueuingAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple=true)]
+	[ComVisible(false)]
+	public sealed class InterfaceQueuingAttribute : Attribute {
+
+		#region Fields
+
+		bool enabled;
+		string interfaceName;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public InterfaceQueuingAttribute () 
+			: this (true)
+		{
+		}
+
+		public InterfaceQueuingAttribute (bool enabled)
+		{
+			this.enabled = enabled;
+			interfaceName = null;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Enabled {
+			get { return enabled; }
+			set { enabled = value; }
+		}
+
+		public string Interface {
+			get { return interfaceName; }
+			set { interfaceName = value; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/JustInTimeActivationAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/JustInTimeActivationAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.JustInTimeActivationAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class JustInTimeActivationAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public JustInTimeActivationAttribute () 
-			: this (true)
-		{
-		}
-
-		public JustInTimeActivationAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.JustInTimeActivationAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class JustInTimeActivationAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public JustInTimeActivationAttribute () 
+			: this (true)
+		{
+		}
+
+		public JustInTimeActivationAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/LoadBalancingSupportedAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/LoadBalancingSupportedAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.LoadBalancingSupportedAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class LoadBalancingSupportedAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public LoadBalancingSupportedAttribute () 
-			: this (true)
-		{
-		}
-
-		public LoadBalancingSupportedAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.LoadBalancingSupportedAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class LoadBalancingSupportedAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public LoadBalancingSupportedAttribute () 
+			: this (true)
+		{
+		}
+
+		public LoadBalancingSupportedAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/MustRunInClientContextAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/MustRunInClientContextAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.MustRunInClientContextAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class MustRunInClientContextAttribute : Attribute {
-
-		#region Fields
-
-		bool val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public MustRunInClientContextAttribute () 
-			: this (true)
-		{
-		}
-
-		public MustRunInClientContextAttribute (bool val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public bool Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.MustRunInClientContextAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class MustRunInClientContextAttribute : Attribute {
+
+		#region Fields
+
+		bool val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public MustRunInClientContextAttribute () 
+			: this (true)
+		{
+		}
+
+		public MustRunInClientContextAttribute (bool val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public bool Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ObjectPoolingAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ObjectPoolingAttribute.cs
@@ -1,121 +1,121 @@
-// 
-// System.EnterpriseServices.ObjectPoolingAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class ObjectPoolingAttribute : Attribute, IConfigurationAttribute {
-
-		#region Fields
-
-		int creationTimeout;
-		bool enabled;
-		int minPoolSize;
-		int maxPoolSize;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public ObjectPoolingAttribute () 
-			: this (true)
-		{
-		}
-
-		public ObjectPoolingAttribute (bool enable)
-		{
-			this.enabled = enable;
-		}
-
-		public ObjectPoolingAttribute (int minPoolSize, int maxPoolSize)
-			: this (true, minPoolSize, maxPoolSize)
-		{
-		}
-
-		public ObjectPoolingAttribute (bool enable, int minPoolSize, int maxPoolSize)
-		{
-			this.enabled = enable;
-			this.minPoolSize = minPoolSize;
-			this.maxPoolSize = maxPoolSize;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public int CreationTimeout {
-			get { return creationTimeout; }
-			set { creationTimeout = value; }
-		}
-
-		public bool Enabled {
-			get { return enabled; }
-			set { enabled = value; }
-		}
-
-		public int MaxPoolSize {
-			get { return maxPoolSize; }
-			set { maxPoolSize = value; }
-		}
-
-		public int MinPoolSize {
-			get { return minPoolSize; }
-			set { minPoolSize = value; }
-		}
-
-		#endregion // Properties
-
-		#region Methods 
-
-		[MonoTODO]
-		public bool AfterSaveChanges (Hashtable info)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool Apply (Hashtable info)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool IsValidTarget (string s)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.ObjectPoolingAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class ObjectPoolingAttribute : Attribute, IConfigurationAttribute {
+
+		#region Fields
+
+		int creationTimeout;
+		bool enabled;
+		int minPoolSize;
+		int maxPoolSize;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public ObjectPoolingAttribute () 
+			: this (true)
+		{
+		}
+
+		public ObjectPoolingAttribute (bool enable)
+		{
+			this.enabled = enable;
+		}
+
+		public ObjectPoolingAttribute (int minPoolSize, int maxPoolSize)
+			: this (true, minPoolSize, maxPoolSize)
+		{
+		}
+
+		public ObjectPoolingAttribute (bool enable, int minPoolSize, int maxPoolSize)
+		{
+			this.enabled = enable;
+			this.minPoolSize = minPoolSize;
+			this.maxPoolSize = maxPoolSize;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public int CreationTimeout {
+			get { return creationTimeout; }
+			set { creationTimeout = value; }
+		}
+
+		public bool Enabled {
+			get { return enabled; }
+			set { enabled = value; }
+		}
+
+		public int MaxPoolSize {
+			get { return maxPoolSize; }
+			set { maxPoolSize = value; }
+		}
+
+		public int MinPoolSize {
+			get { return minPoolSize; }
+			set { minPoolSize = value; }
+		}
+
+		#endregion // Properties
+
+		#region Methods 
+
+		[MonoTODO]
+		public bool AfterSaveChanges (Hashtable info)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool Apply (Hashtable info)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool IsValidTarget (string s)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/PartitionOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/PartitionOption.cs
@@ -1,42 +1,42 @@
-// System.EnterpriseServices.PartitionOption.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Serializable]
-	[ComVisible(false)]
-	public enum PartitionOption {
-
-		Ignore,
-		Inherit,
-		New
-	}
-}
+// System.EnterpriseServices.PartitionOption.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Serializable]
+	[ComVisible(false)]
+	public enum PartitionOption {
+
+		Ignore,
+		Inherit,
+		New
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/PrivateComponentAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/PrivateComponentAttribute.cs
@@ -1,47 +1,47 @@
-// 
-// System.EnterpriseServices.PrivateComponentAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class PrivateComponentAttribute : Attribute {
-
-		#region Constructors
-
-		public PrivateComponentAttribute () 
-		{
-		}
-
-		#endregion // Constructors
-	}
-}
+// 
+// System.EnterpriseServices.PrivateComponentAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class PrivateComponentAttribute : Attribute {
+
+		#region Constructors
+
+		public PrivateComponentAttribute () 
+		{
+		}
+
+		#endregion // Constructors
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/RegistrationConfig.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/RegistrationConfig.cs
@@ -1,112 +1,112 @@
-// System.EnterpriseServices.RegistrationConfig.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Serializable]
-	[Guid("36dcda30-dc3b-4d93-be42-90b2d74c64e7")]
-	public class RegistrationConfig {
-
-		#region Constructors
-
-		[MonoTODO]
-		public RegistrationConfig ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-
-		#region Properties
-
-		[MonoTODO]
-		public string Application {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string ApplicationRootDirectory {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string AssemblyFile {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public InstallationFlags InstallationFlags {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string Partition {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string TypeLibrary {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		#endregion
-	}
-}
+// System.EnterpriseServices.RegistrationConfig.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Serializable]
+	[Guid("36dcda30-dc3b-4d93-be42-90b2d74c64e7")]
+	public class RegistrationConfig {
+
+		#region Constructors
+
+		[MonoTODO]
+		public RegistrationConfig ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+
+		#region Properties
+
+		[MonoTODO]
+		public string Application {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string ApplicationRootDirectory {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string AssemblyFile {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public InstallationFlags InstallationFlags {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string Partition {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string TypeLibrary {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/RegistrationErrorInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/RegistrationErrorInfo.cs
@@ -1,84 +1,84 @@
-// 
-// System.EnterpriseServices.RegistrationErrorInfo.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices {
-	[Serializable]
-	public sealed class RegistrationErrorInfo {
-
-		#region Fields
-
-		int errorCode;
-		string errorString;
-		string majorRef;
-		string minorRef;
-		string name;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		[MonoTODO]
-		internal RegistrationErrorInfo (string name, string majorRef, string minorRef, int errorCode) 
-		{
-			this.name = name;
-			this.majorRef = majorRef;
-			this.minorRef = minorRef;
-			this.errorCode = errorCode;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public int ErrorCode {
-			get { return errorCode; }
-		}
-
-		public string ErrorString {
-			get { return errorString; }
-		}
-
-		public string MajorRef {
-			get { return majorRef; }
-		}
-
-		public string MinorRef {
-			get { return minorRef; }
-		}
-
-		public string Name {
-			get { return name; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.RegistrationErrorInfo.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices {
+	[Serializable]
+	public sealed class RegistrationErrorInfo {
+
+		#region Fields
+
+		int errorCode;
+		string errorString;
+		string majorRef;
+		string minorRef;
+		string name;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		[MonoTODO]
+		internal RegistrationErrorInfo (string name, string majorRef, string minorRef, int errorCode) 
+		{
+			this.name = name;
+			this.majorRef = majorRef;
+			this.minorRef = minorRef;
+			this.errorCode = errorCode;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public int ErrorCode {
+			get { return errorCode; }
+		}
+
+		public string ErrorString {
+			get { return errorString; }
+		}
+
+		public string MajorRef {
+			get { return majorRef; }
+		}
+
+		public string MinorRef {
+			get { return minorRef; }
+		}
+
+		public string Name {
+			get { return name; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/RegistrationException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/RegistrationException.cs
@@ -1,82 +1,82 @@
-// 
-// System.EnterpriseServices.RegistrationException.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.Serialization;
-
-namespace System.EnterpriseServices {
-	[Serializable]
-	public sealed class RegistrationException : SystemException {
-
-		#region Fields
-
-		RegistrationErrorInfo[] errorInfo;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		[MonoTODO]
-		public RegistrationException (string msg)
-			: base (msg)
-		{
-		}
-
-		public RegistrationException ()
-			: this ("Registration error")
-		{
-		}
-
-		public RegistrationException (string msg, Exception innerException)
-			: base (msg, innerException)
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-			
-		public RegistrationErrorInfo[] ErrorInfo {
-			get { return errorInfo; }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[MonoTODO]
-		public override void GetObjectData (SerializationInfo info, StreamingContext ctx)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.RegistrationException.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.Serialization;
+
+namespace System.EnterpriseServices {
+	[Serializable]
+	public sealed class RegistrationException : SystemException {
+
+		#region Fields
+
+		RegistrationErrorInfo[] errorInfo;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		[MonoTODO]
+		public RegistrationException (string msg)
+			: base (msg)
+		{
+		}
+
+		public RegistrationException ()
+			: this ("Registration error")
+		{
+		}
+
+		public RegistrationException (string msg, Exception innerException)
+			: base (msg, innerException)
+		{
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+			
+		public RegistrationErrorInfo[] ErrorInfo {
+			get { return errorInfo; }
+		}
+
+		#endregion // Properties
+
+		#region Methods
+
+		[MonoTODO]
+		public override void GetObjectData (SerializationInfo info, StreamingContext ctx)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ResourcePool.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ResourcePool.cs
@@ -1,75 +1,75 @@
-// 
-// System.EnterpriseServices.ResourcePool.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	public sealed class ResourcePool {
-
-		#region Fields
-
-//		ResourcePool.TransactionEndDelegate cb;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		[MonoTODO]
-		public ResourcePool (ResourcePool.TransactionEndDelegate cb)
-		{
-//			this.cb = cb;
-		}
-
-		#endregion // Constructors
-
-		#region Methods
-
-		[MonoTODO]
-		public object GetResource ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool PutResource (object resource)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-
-		#region Delegates
-
-		public delegate void TransactionEndDelegate (object resource);
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.ResourcePool.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	public sealed class ResourcePool {
+
+		#region Fields
+
+//		ResourcePool.TransactionEndDelegate cb;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		[MonoTODO]
+		public ResourcePool (ResourcePool.TransactionEndDelegate cb)
+		{
+//			this.cb = cb;
+		}
+
+		#endregion // Constructors
+
+		#region Methods
+
+		[MonoTODO]
+		public object GetResource ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool PutResource (object resource)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Methods
+
+		#region Delegates
+
+		public delegate void TransactionEndDelegate (object resource);
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecureMethodAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecureMethodAttribute.cs
@@ -1,47 +1,47 @@
-// 
-// System.EnterpriseServices.SecureMethodAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class | AttributeTargets.Method)]
-	[ComVisible(false)]
-	public sealed class SecureMethodAttribute : Attribute {
-
-		#region Constructors
-
-		public SecureMethodAttribute ()
-		{
-		}
-
-		#endregion // Constructors
-	}
-}
+// 
+// System.EnterpriseServices.SecureMethodAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class | AttributeTargets.Method)]
+	[ComVisible(false)]
+	public sealed class SecureMethodAttribute : Attribute {
+
+		#region Constructors
+
+		public SecureMethodAttribute ()
+		{
+		}
+
+		#endregion // Constructors
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityCallContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityCallContext.cs
@@ -1,107 +1,107 @@
-// 
-// System.EnterpriseServices.SecurityCallContext.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices {
-	public sealed class SecurityCallContext {
-
-		#region Fields
-
-		#endregion // Fields
-
-		#region Constructors
-
-		internal SecurityCallContext ()
-		{
-		}
-
-		internal SecurityCallContext (ISecurityCallContext context)
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public SecurityCallers Callers {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public static SecurityCallContext CurrentCall {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public SecurityIdentity DirectCaller {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public bool IsSecurityEnabled {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public int MinAuthenticationLevel {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public int NumCallers {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public SecurityIdentity OriginalCaller {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[MonoTODO]
-		public bool IsCallerInRole (string role)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public bool IsUserInRole (string user, string role)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.SecurityCallContext.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices {
+	public sealed class SecurityCallContext {
+
+		#region Fields
+
+		#endregion // Fields
+
+		#region Constructors
+
+		internal SecurityCallContext ()
+		{
+		}
+
+		internal SecurityCallContext (ISecurityCallContext context)
+		{
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public SecurityCallers Callers {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public static SecurityCallContext CurrentCall {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public SecurityIdentity DirectCaller {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public bool IsSecurityEnabled {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public int MinAuthenticationLevel {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public int NumCallers {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public SecurityIdentity OriginalCaller {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		#endregion // Properties
+
+		#region Methods
+
+		[MonoTODO]
+		public bool IsCallerInRole (string role)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool IsUserInRole (string user, string role)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityCallers.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityCallers.cs
@@ -1,73 +1,73 @@
-// 
-// System.EnterpriseServices.SecurityCallers.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace System.EnterpriseServices {
-	public sealed class SecurityCallers : IEnumerable {
-
-		#region Constructors
-
-		internal SecurityCallers ()
-		{
-		}
-
-		internal SecurityCallers (ISecurityCallersColl collection)
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public int Count {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public SecurityIdentity this [int idx] {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		#endregion // Properties
-
-		#region Methods
-
-		[MonoTODO]
-		public IEnumerator GetEnumerator ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.SecurityCallers.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace System.EnterpriseServices {
+	public sealed class SecurityCallers : IEnumerable {
+
+		#region Constructors
+
+		internal SecurityCallers ()
+		{
+		}
+
+		internal SecurityCallers (ISecurityCallersColl collection)
+		{
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public int Count {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public SecurityIdentity this [int idx] {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		#endregion // Properties
+
+		#region Methods
+
+		[MonoTODO]
+		public IEnumerator GetEnumerator ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityIdentity.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityIdentity.cs
@@ -1,75 +1,75 @@
-// 
-// System.EnterpriseServices.SecurityIdentity.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace System.EnterpriseServices {
-	public sealed class SecurityIdentity {
-
-		#region Constructors
-
-		[MonoTODO]
-		internal SecurityIdentity ()
-		{
-		}
-
-		[MonoTODO]
-		internal SecurityIdentity (ISecurityIdentityColl collection)
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public string AccountName {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public AuthenticationOption AuthenticationLevel {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public int AuthenticationService {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		public ImpersonationLevelOption ImpersonationLevel {
-			[MonoTODO]
-			get { throw new NotImplementedException (); }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.SecurityIdentity.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+
+namespace System.EnterpriseServices {
+	public sealed class SecurityIdentity {
+
+		#region Constructors
+
+		[MonoTODO]
+		internal SecurityIdentity ()
+		{
+		}
+
+		[MonoTODO]
+		internal SecurityIdentity (ISecurityIdentityColl collection)
+		{
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public string AccountName {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public AuthenticationOption AuthenticationLevel {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public int AuthenticationService {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		public ImpersonationLevelOption ImpersonationLevel {
+			[MonoTODO]
+			get { throw new NotImplementedException (); }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityRoleAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SecurityRoleAttribute.cs
@@ -1,82 +1,82 @@
-// 
-// System.EnterpriseServices.SecurityRoleAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Interface, AllowMultiple=true)]
-	[ComVisible(false)]
-	public sealed class SecurityRoleAttribute : Attribute {
-
-		#region Fields
-
-		string description;
-		bool everyone;
-		string role;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public SecurityRoleAttribute (string role)
-			: this (role, false)
-		{
-		}
-
-		public SecurityRoleAttribute (string role, bool everyone)
-		{
-			this.description = String.Empty;
-			this.everyone = everyone;
-			this.role = role;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public string Description {
-			get { return description; }
-			set { description = value; }
-		}
-
-		public string Role {
-			get { return role; }
-			set { role = value; }
-		}
-
-		public bool SetEveryoneAccess {
-			get { return everyone; }
-			set { everyone = value; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.SecurityRoleAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Interface, AllowMultiple=true)]
+	[ComVisible(false)]
+	public sealed class SecurityRoleAttribute : Attribute {
+
+		#region Fields
+
+		string description;
+		bool everyone;
+		string role;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public SecurityRoleAttribute (string role)
+			: this (role, false)
+		{
+		}
+
+		public SecurityRoleAttribute (string role, bool everyone)
+		{
+			this.description = String.Empty;
+			this.everyone = everyone;
+			this.role = role;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public string Description {
+			get { return description; }
+			set { description = value; }
+		}
+
+		public string Role {
+			get { return role; }
+			set { role = value; }
+		}
+
+		public bool SetEveryoneAccess {
+			get { return everyone; }
+			set { everyone = value; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServiceConfig.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServiceConfig.cs
@@ -1,263 +1,263 @@
-// System.EnterpriseServices.ServiceConfig.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.Transactions;
-
-namespace System.EnterpriseServices {
-
-	[MonoTODO]
-	[ComVisible(false)]
-	public sealed class ServiceConfig {
-
-		#region Constructors
-
-		[MonoTODO]
-		public ServiceConfig ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-
-		#region Properties
-
-		[MonoTODO]
-		public BindingOption Binding {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public Transaction BringYourOwnSystemTransaction {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public ITransaction BringYourOwnTransaction {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public bool COMTIIntrinsicsEnabled {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public bool IISIntrinsicsEnabled {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public InheritanceOption Inheritance {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public TransactionIsolationLevel IsolationLevel {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public Guid PartitionId {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public PartitionOption PartitionOption {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string SxsDirectory {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string SxsName {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public SxsOption SxsOption {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public SynchronizationOption Synchronization {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public ThreadPoolOption ThreadPool {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string TipUrl {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string TrackingAppName {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string TrackingComponentName {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public bool TrackingEnabled {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public TransactionOption Transaction {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public string TransactionDescription {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		[MonoTODO]
-		public int TransactionTimeout {
-			get {
-				throw new NotImplementedException ();
-			}
-			set {
-				throw new NotImplementedException ();
-			}
-		}
-
-		#endregion
-	}
-}
+// System.EnterpriseServices.ServiceConfig.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+using System.Transactions;
+
+namespace System.EnterpriseServices {
+
+	[MonoTODO]
+	[ComVisible(false)]
+	public sealed class ServiceConfig {
+
+		#region Constructors
+
+		[MonoTODO]
+		public ServiceConfig ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+
+		#region Properties
+
+		[MonoTODO]
+		public BindingOption Binding {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public Transaction BringYourOwnSystemTransaction {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public ITransaction BringYourOwnTransaction {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public bool COMTIIntrinsicsEnabled {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public bool IISIntrinsicsEnabled {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public InheritanceOption Inheritance {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public TransactionIsolationLevel IsolationLevel {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public Guid PartitionId {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public PartitionOption PartitionOption {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string SxsDirectory {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string SxsName {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public SxsOption SxsOption {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public SynchronizationOption Synchronization {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public ThreadPoolOption ThreadPool {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string TipUrl {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string TrackingAppName {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string TrackingComponentName {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public bool TrackingEnabled {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public TransactionOption Transaction {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public string TransactionDescription {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[MonoTODO]
+		public int TransactionTimeout {
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServiceDomain.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServiceDomain.cs
@@ -1,60 +1,60 @@
-// System.EnterpriseServices.ServiceDomain.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[ComVisible(false)]
-	public sealed class ServiceDomain {
-		#region Constructors
-
-		private ServiceDomain ()
-		{
-		}
-
-		#endregion Constructors
-
-		#region Methods
-
-		[MonoTODO]
-		public static void Enter (ServiceConfig cfg)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static TransactionStatus Leave ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-	}
-}
+// System.EnterpriseServices.ServiceDomain.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[ComVisible(false)]
+	public sealed class ServiceDomain {
+		#region Constructors
+
+		private ServiceDomain ()
+		{
+		}
+
+		#endregion Constructors
+
+		#region Methods
+
+		[MonoTODO]
+		public static void Enter (ServiceConfig cfg)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static TransactionStatus Leave ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServicedComponent.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServicedComponent.cs
@@ -1,109 +1,109 @@
-// 
-// System.EnterpriseServices.ServicedComponent.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.EnterpriseServices {
-	[Serializable]
-	public abstract class ServicedComponent : ContextBoundObject, IDisposable, IRemoteDispatch, IServicedComponentInfo {
-
-		#region Constructors
-
-		public ServicedComponent ()
-		{
-		}
-
-		#endregion
-
-		#region Methods
-
-		[MonoTODO]
-		protected internal virtual void Activate ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		protected internal virtual bool CanBePooled ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		protected internal virtual void Construct (string s)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		protected internal virtual void Deactivate ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public void Dispose ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		protected virtual void Dispose (bool disposing)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public static void DisposeObject (ServicedComponent sc)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		string IRemoteDispatch.RemoteDispatchAutoDone (string s)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		string IRemoteDispatch.RemoteDispatchNotAutoDone (string s)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		void IServicedComponentInfo.GetComponentInfo (ref int infoMask, out string[] infoArray)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.ServicedComponent.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.EnterpriseServices {
+	[Serializable]
+	public abstract class ServicedComponent : ContextBoundObject, IDisposable, IRemoteDispatch, IServicedComponentInfo {
+
+		#region Constructors
+
+		public ServicedComponent ()
+		{
+		}
+
+		#endregion
+
+		#region Methods
+
+		[MonoTODO]
+		protected internal virtual void Activate ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected internal virtual bool CanBePooled ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected internal virtual void Construct (string s)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected internal virtual void Deactivate ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public void Dispose ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected virtual void Dispose (bool disposing)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public static void DisposeObject (ServicedComponent sc)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		string IRemoteDispatch.RemoteDispatchAutoDone (string s)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		string IRemoteDispatch.RemoteDispatchNotAutoDone (string s)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		void IServicedComponentInfo.GetComponentInfo (ref int infoMask, out string[] infoArray)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServicedComponentException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ServicedComponentException.cs
@@ -1,58 +1,58 @@
-// 
-// System.EnterpriseServices.ServicedComponentException.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[Serializable]
-	[ComVisible(false)]
-	public sealed class ServicedComponentException : SystemException {
-
-		#region Constructors
-
-		public ServicedComponentException ()
-			: base ()
-		{
-		}
-
-		public ServicedComponentException (string message)
-			: base (message)
-		{
-		}
-
-		public ServicedComponentException (string message, Exception innerException)
-			: base (message, innerException)
-		{
-		}
-
-		#endregion // Constructors
-	}
-}
+// 
+// System.EnterpriseServices.ServicedComponentException.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[Serializable]
+	[ComVisible(false)]
+	public sealed class ServicedComponentException : SystemException {
+
+		#region Constructors
+
+		public ServicedComponentException ()
+			: base ()
+		{
+		}
+
+		public ServicedComponentException (string message)
+			: base (message)
+		{
+		}
+
+		public ServicedComponentException (string message, Exception innerException)
+			: base (message, innerException)
+		{
+		}
+
+		#endregion // Constructors
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SharedProperty.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SharedProperty.cs
@@ -1,62 +1,62 @@
-// 
-// System.EnterpriseServices.SharedProperty.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[ComVisible (false)]
-	public sealed class SharedProperty {
-
-		#region Fields
-
-		ISharedProperty property;
-
-		#endregion
-
-		#region Constructors
-
-		internal SharedProperty (ISharedProperty property)
-		{
-			this.property = property;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public object Value {
-			get { return property.Value; }
-			set { property.Value = value; }
-		}
-
-		#endregion
-	}
-}
+// 
+// System.EnterpriseServices.SharedProperty.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[ComVisible (false)]
+	public sealed class SharedProperty {
+
+		#region Fields
+
+		ISharedProperty property;
+
+		#endregion
+
+		#region Constructors
+
+		internal SharedProperty (ISharedProperty property)
+		{
+			this.property = property;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public object Value {
+			get { return property.Value; }
+			set { property.Value = value; }
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SharedPropertyGroup.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SharedPropertyGroup.cs
@@ -1,77 +1,77 @@
-// 
-// System.EnterpriseServices.SharedPropertyGroup.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[ComVisible (false)]
-	public sealed class SharedPropertyGroup {
-
-		#region Fields
-
-		ISharedPropertyGroup propertyGroup;
-
-		#endregion
-
-		#region Constructors
-
-		internal SharedPropertyGroup (ISharedPropertyGroup propertyGroup)
-		{
-			this.propertyGroup = propertyGroup;
-		}
-
-		#endregion // Constructors
-
-		#region Methods
-
-		public SharedProperty CreateProperty (string name, out bool fExists)
-		{
-			return new SharedProperty (propertyGroup.CreateProperty (name, out fExists));
-		}
-
-		public SharedProperty CreatePropertyByPosition (int position, out bool fExists)
-		{
-			return new SharedProperty (propertyGroup.CreatePropertyByPosition (position, out fExists));
-		}
-
-		public SharedProperty Property (string name)
-		{
-			return new SharedProperty (propertyGroup.Property (name));
-		}
-
-		public SharedProperty PropertyByPosition (int position)
-		{
-			return new SharedProperty (propertyGroup.PropertyByPosition (position));
-		}
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.SharedPropertyGroup.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[ComVisible (false)]
+	public sealed class SharedPropertyGroup {
+
+		#region Fields
+
+		ISharedPropertyGroup propertyGroup;
+
+		#endregion
+
+		#region Constructors
+
+		internal SharedPropertyGroup (ISharedPropertyGroup propertyGroup)
+		{
+			this.propertyGroup = propertyGroup;
+		}
+
+		#endregion // Constructors
+
+		#region Methods
+
+		public SharedProperty CreateProperty (string name, out bool fExists)
+		{
+			return new SharedProperty (propertyGroup.CreateProperty (name, out fExists));
+		}
+
+		public SharedProperty CreatePropertyByPosition (int position, out bool fExists)
+		{
+			return new SharedProperty (propertyGroup.CreatePropertyByPosition (position, out fExists));
+		}
+
+		public SharedProperty Property (string name)
+		{
+			return new SharedProperty (propertyGroup.Property (name));
+		}
+
+		public SharedProperty PropertyByPosition (int position)
+		{
+			return new SharedProperty (propertyGroup.PropertyByPosition (position));
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SharedPropertyGroupManager.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SharedPropertyGroupManager.cs
@@ -1,69 +1,69 @@
-// 
-// System.EnterpriseServices.SharedPropertyGroupManager.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[ComVisible (false)]
-	public sealed class SharedPropertyGroupManager : IEnumerable {
-
-		#region Constructors
-
-		public SharedPropertyGroupManager ()
-		{
-		}
-
-		#endregion // Constructors
-
-		#region Methods
-
-		[MonoTODO]
-		public SharedPropertyGroup CreatePropertyGroup (string name, ref PropertyLockMode dwIsoMode, ref PropertyReleaseMode dwRelMode, out bool fExist)
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public IEnumerator GetEnumerator ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		[MonoTODO]
-		public SharedPropertyGroup Group (string name)
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion // Methods
-	}
-}
+// 
+// System.EnterpriseServices.SharedPropertyGroupManager.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[ComVisible (false)]
+	public sealed class SharedPropertyGroupManager : IEnumerable {
+
+		#region Constructors
+
+		public SharedPropertyGroupManager ()
+		{
+		}
+
+		#endregion // Constructors
+
+		#region Methods
+
+		[MonoTODO]
+		public SharedPropertyGroup CreatePropertyGroup (string name, ref PropertyLockMode dwIsoMode, ref PropertyReleaseMode dwRelMode, out bool fExist)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public IEnumerator GetEnumerator ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public SharedPropertyGroup Group (string name)
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SxsOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SxsOption.cs
@@ -1,42 +1,42 @@
-// System.EnterpriseServices.SxsOption.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Serializable]
-	[ComVisible(false)]
-	public enum SxsOption {
-
-		Ignore,
-		Inherit,
-		New
-	}
-}
+// System.EnterpriseServices.SxsOption.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Serializable]
+	[ComVisible(false)]
+	public enum SxsOption {
+
+		Ignore,
+		Inherit,
+		New
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SynchronizationAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/SynchronizationAttribute.cs
@@ -1,67 +1,67 @@
-// 
-// System.EnterpriseServices.SynchronizationAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class SynchronizationAttribute : Attribute {
-
-		#region Fields
-
-		SynchronizationOption val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public SynchronizationAttribute ()
-			: this (SynchronizationOption.Required)
-		{
-		}
-
-		public SynchronizationAttribute (SynchronizationOption val)
-		{
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public SynchronizationOption Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.SynchronizationAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class SynchronizationAttribute : Attribute {
+
+		#region Fields
+
+		SynchronizationOption val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public SynchronizationAttribute ()
+			: this (SynchronizationOption.Required)
+		{
+		}
+
+		public SynchronizationAttribute (SynchronizationOption val)
+		{
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public SynchronizationOption Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ThreadPoolOption.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/ThreadPoolOption.cs
@@ -1,43 +1,43 @@
-// System.EnterpriseServices.ThreadPoolOption.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Serializable]
-	[ComVisible(false)]
-	public enum ThreadPoolOption {
-
-		None,
-		Inherit,
-		STA,
-		MTA
-	}
-}
+// System.EnterpriseServices.ThreadPoolOption.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Serializable]
+	[ComVisible(false)]
+	public enum ThreadPoolOption {
+
+		None,
+		Inherit,
+		STA,
+		MTA
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/TransactionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/TransactionAttribute.cs
@@ -1,81 +1,81 @@
-// 
-// System.EnterpriseServices.TransactionAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-	[AttributeUsage (AttributeTargets.Class)]
-	[ComVisible(false)]
-	public sealed class TransactionAttribute : Attribute {
-
-		#region Fields
-
-		TransactionIsolationLevel isolation;
-		int timeout;
-		TransactionOption val;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public TransactionAttribute ()
-			: this (TransactionOption.Required)
-		{
-		}
-
-		public TransactionAttribute (TransactionOption val)
-		{
-			this.isolation = TransactionIsolationLevel.Serializable;
-			this.timeout = -1;
-			this.val = val;
-		}
-
-		#endregion // Constructors
-
-		#region Properties
-
-		public TransactionIsolationLevel Isolation {
-			get { return isolation; }
-			set { isolation = value; }
-		}
-
-		public int Timeout {
-			get { return timeout; }
-			set { timeout = value; }
-		}
-
-		public TransactionOption Value {
-			get { return val; }
-		}
-
-		#endregion // Properties
-	}
-}
+// 
+// System.EnterpriseServices.TransactionAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+	[AttributeUsage (AttributeTargets.Class)]
+	[ComVisible(false)]
+	public sealed class TransactionAttribute : Attribute {
+
+		#region Fields
+
+		TransactionIsolationLevel isolation;
+		int timeout;
+		TransactionOption val;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public TransactionAttribute ()
+			: this (TransactionOption.Required)
+		{
+		}
+
+		public TransactionAttribute (TransactionOption val)
+		{
+			this.isolation = TransactionIsolationLevel.Serializable;
+			this.timeout = -1;
+			this.val = val;
+		}
+
+		#endregion // Constructors
+
+		#region Properties
+
+		public TransactionIsolationLevel Isolation {
+			get { return isolation; }
+			set { isolation = value; }
+		}
+
+		public int Timeout {
+			get { return timeout; }
+			set { timeout = value; }
+		}
+
+		public TransactionOption Value {
+			get { return val; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/TransactionStatus.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/TransactionStatus.cs
@@ -1,44 +1,44 @@
-// System.EnterpriseServices.TransactionStatus.cs
-//
-// Author:  Mike Kestner (mkestner@ximian.com)
-//
-// Copyright (C) 2004 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[Serializable]
-	[ComVisible(false)]
-	public enum TransactionStatus {
-
-		Commited,
-		LocallyOk,
-		NoTransaction,
-		Aborting,
-		Aborted
-	}
-}
+// System.EnterpriseServices.TransactionStatus.cs
+//
+// Author:  Mike Kestner (mkestner@ximian.com)
+//
+// Copyright (C) 2004 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[Serializable]
+	[ComVisible(false)]
+	public enum TransactionStatus {
+
+		Commited,
+		LocallyOk,
+		NoTransaction,
+		Aborting,
+		Aborted
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.EnterpriseServices/System.EnterpriseServices/XACTTRANSINFO.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.EnterpriseServices/System.EnterpriseServices/XACTTRANSINFO.cs
@@ -1,51 +1,51 @@
-// 
-// System.EnterpriseServices.XACTTRANSINFO.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace System.EnterpriseServices {
-
-	[ComVisible(false)]
-	public struct XACTTRANSINFO {
-
-		#region Fields
-
-		public int grfRMSupported;
-		public int grfRMSupportedRetaining;
-		public int grfTCSupported;
-		public int grfTCSupportedRetaining;
-		public int isoFlags;
-		public int isoLevel;
-		public BOID uow;
-
-		#endregion // Fields
-	}
-}
+// 
+// System.EnterpriseServices.XACTTRANSINFO.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.EnterpriseServices {
+
+	[ComVisible(false)]
+	public struct XACTTRANSINFO {
+
+		#region Fields
+
+		public int grfRMSupported;
+		public int grfRMSupportedRetaining;
+		public int grfTCSupported;
+		public int grfTCSupportedRetaining;
+		public int isoFlags;
+		public int isoLevel;
+		public BOID uow;
+
+		#endregion // Fields
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.IdentityModel/System.IdentityModel.Selectors/AudienceUriMode.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.IdentityModel/System.IdentityModel.Selectors/AudienceUriMode.cs
@@ -1,41 +1,41 @@
-﻿//
-// AudienceUriMode.cs
-//
-// Author:
-//	Igor Zelmanovich <igorz@mainsoft.com>
-//
-// Copyright (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace System.IdentityModel.Selectors
-{
-	public enum AudienceUriMode
-	{
-		Never = 0,
-		Always = 1,
-		BearerKeyOnly = 2,
-	}
+﻿//
+// AudienceUriMode.cs
+//
+// Author:
+//	Igor Zelmanovich <igorz@mainsoft.com>
+//
+// Copyright (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.IdentityModel.Selectors
+{
+	public enum AudienceUriMode
+	{
+		Never = 0,
+		Always = 1,
+		BearerKeyOnly = 2,
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Management/System.Management.Instrumentation/InstrumentationClassAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Management/System.Management.Instrumentation/InstrumentationClassAttribute.cs
@@ -32,34 +32,34 @@ namespace System.Management.Instrumentat
 {
 	[AttributeUsage(AttributeTargets.Class | 
 			AttributeTargets.Struct)]
-	public class InstrumentationClassAttribute : Attribute {
-		public InstrumentationClassAttribute (InstrumentationType instrumentationType)
-		{
-			_instrumentationType = instrumentationType;
-		}
-
-		public InstrumentationClassAttribute (InstrumentationType instrumentationType, string managedBaseClassName)
-		{
-			_instrumentationType = instrumentationType;
-			_managedBaseClassName = managedBaseClassName;
-		}
-
+	public class InstrumentationClassAttribute : Attribute {
+		public InstrumentationClassAttribute (InstrumentationType instrumentationType)
+		{
+			_instrumentationType = instrumentationType;
+		}
+
+		public InstrumentationClassAttribute (InstrumentationType instrumentationType, string managedBaseClassName)
+		{
+			_instrumentationType = instrumentationType;
+			_managedBaseClassName = managedBaseClassName;
+		}
+
 		public InstrumentationType InstrumentationType {
-			get {
-				return _instrumentationType;
+			get {
+				return _instrumentationType;
 			}
 		}
 
 		public string ManagedBaseClassName {
-			get {
-				if (_managedBaseClassName == null || _managedBaseClassName.Length == 0)
-					return null;
-
-				return _managedBaseClassName;
-			}
-		}
-
-		private InstrumentationType _instrumentationType;
-		private string _managedBaseClassName;
+			get {
+				if (_managedBaseClassName == null || _managedBaseClassName.Length == 0)
+					return null;
+
+				return _managedBaseClassName;
+			}
+		}
+
+		private InstrumentationType _instrumentationType;
+		private string _managedBaseClassName;
 	}
 }
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Management/System.Management.Instrumentation/ManagedNameAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Management/System.Management.Instrumentation/ManagedNameAttribute.cs
@@ -35,18 +35,18 @@ namespace System.Management.Instrumentat
 			AttributeTargets.Method | 
 			AttributeTargets.Property |
 			AttributeTargets.Field)]
-        public class ManagedNameAttribute : Attribute {
-		public ManagedNameAttribute (string name)
-		{
-			_name = name;
-		}
-
-		public string Name {
-			get {
-				return _name;
-			}
-		}
-
-		private string _name;
+        public class ManagedNameAttribute : Attribute {
+		public ManagedNameAttribute (string name)
+		{
+			_name = name;
+		}
+
+		public string Name {
+			get {
+				return _name;
+			}
+		}
+
+		private string _name;
 	}
 }
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Messaging/System.Messaging/MessageQueue.resx
+++ mono-4.6.2.7+dfsg/mcs/class/System.Messaging/System.Messaging/MessageQueue.resx
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<root>
-	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-		<xsd:element name="root" msdata:IsDataSet="true">
-			<xsd:complexType>
-				<xsd:choice maxOccurs="unbounded">
-					<xsd:element name="data">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" />
-							<xsd:attribute name="type" type="xsd:string" />
-							<xsd:attribute name="mimetype" type="xsd:string" />
-						</xsd:complexType>
-					</xsd:element>
-					<xsd:element name="resheader">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" use="required" />
-						</xsd:complexType>
-					</xsd:element>
-				</xsd:choice>
-			</xsd:complexType>
-		</xsd:element>
-	</xsd:schema>
-	<resheader name="ResMimeType">
-		<value>text/microsoft-resx</value>
-	</resheader>
-	<resheader name="Version">
-		<value>1.0.0.0</value>
-	</resheader>
-	<resheader name="Reader">
-		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
-	<resheader name="Writer">
-		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
-</root>
+<?xml version="1.0" encoding="utf-8" ?>
+<root>
+	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+		<xsd:element name="root" msdata:IsDataSet="true">
+			<xsd:complexType>
+				<xsd:choice maxOccurs="unbounded">
+					<xsd:element name="data">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" />
+							<xsd:attribute name="type" type="xsd:string" />
+							<xsd:attribute name="mimetype" type="xsd:string" />
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="resheader">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" use="required" />
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:choice>
+			</xsd:complexType>
+		</xsd:element>
+	</xsd:schema>
+	<resheader name="ResMimeType">
+		<value>text/microsoft-resx</value>
+	</resheader>
+	<resheader name="Version">
+		<value>1.0.0.0</value>
+	</resheader>
+	<resheader name="Reader">
+		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+	<resheader name="Writer">
+		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+</root>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Messaging/Test/System.Messaging/MessageQueuePermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Messaging/Test/System.Messaging/MessageQueuePermissionAttributeTest.cs
@@ -1,266 +1,266 @@
-//
-// MessageQueuePermissionAttributeTest.cs -
-//	NUnit Test Cases for MessageQueuePermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Messaging;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.Messaging {
-
-	[TestFixture]
-	public class MessageQueuePermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.IsNull (a.Category, "Category");
-			Assert.IsNull (a.Label, "Label");
-			Assert.IsNull (a.MachineName, "MachineName");
-			Assert.IsNull (a.Path, "Path");
-			Assert.AreEqual (MessageQueuePermissionAccess.None, a.PermissionAccess, "PermissionAccess");
-
-			a.MachineName = "localhost";
-			MessageQueuePermission sp = (MessageQueuePermission)a.CreatePermission ();
-			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.MachineName = "localhost";
-			a.Unrestricted = true;
-			MessageQueuePermission mqp = (MessageQueuePermission)a.CreatePermission ();
-			Assert.IsTrue (mqp.IsUnrestricted (), "IsUnrestricted");
-
-			a.Unrestricted = false;
-			mqp = (MessageQueuePermission)a.CreatePermission ();
-			Assert.IsFalse (mqp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void Category_Null ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.Category = null;
-		}
-
-		[Test]
-		public void Category ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.Category = "Mono";
-			Assert.AreEqual ("Mono", a.Category, "Category-1");
-			a.Category = String.Empty;
-			Assert.AreEqual (String.Empty, a.Category, "Category-2");
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void Label_Null ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.Label = null;
-		}
-
-		[Test]
-		public void Label ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.Label = "Mono";
-			Assert.AreEqual ("Mono", a.Label, "Label-1");
-			a.Label = String.Empty;
-			Assert.AreEqual (String.Empty, a.Label, "Label-2");
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void MachineName_Null ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.MachineName = null;
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void MachineName_Invalid ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.MachineName = String.Empty;
-		}
-
-		[Test]
-		public void MachineName ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.MachineName = "Mono";
-			Assert.AreEqual ("Mono", a.MachineName, "MachineName-1");
-
-			for (int i = 0; i < 256; i++) {
-				try{
-					a.MachineName = Convert.ToChar (i).ToString ();
-					Assert.AreEqual (i, (int)a.MachineName [0], i.ToString ());
-				}
-				catch {
-					switch (i) {
-						case 9:
-						case 10:
-						case 11:
-						case 12:
-						case 13:
-						case 32:
-						case 92:
-						case 133:
-						case 160:
-							// known invalid chars
-							break;
-						default:
-							Assert.Fail (i.ToString ());
-							break;
-					}
-				}
-			}
-			// all first 256 characters seems to be valid
-			// is there other rules ?
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void Path_Null ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.Path = null;
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void Path_Invalid ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.Path = "Mono";
-		}
-
-		[Test]
-		public void Path ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.Path = "\\Mono";
-			Assert.AreEqual ("\\Mono", a.Path, "Path-1");
-			a.Path = "\\";
-			Assert.AreEqual ("\\", a.Path, "Path-2");
-			a.Path = String.Empty;
-			Assert.AreEqual (String.Empty, a.Path, "Path-3");
-		}
-
-		[Test]
-		public void PermissionAccess_Invalid ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = (MessageQueuePermissionAccess) Int32.MinValue;
-			Assert.AreEqual (Int32.MinValue, (int)a.PermissionAccess);
-		}
-
-		[Test]
-		public void PermissionAccess ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = MessageQueuePermissionAccess.None;
-			Assert.AreEqual (MessageQueuePermissionAccess.None, a.PermissionAccess, "None");
-			a.PermissionAccess = MessageQueuePermissionAccess.Browse;
-			Assert.AreEqual (MessageQueuePermissionAccess.Browse, a.PermissionAccess, "Browse");
-			a.PermissionAccess = MessageQueuePermissionAccess.Send;
-			Assert.AreEqual (MessageQueuePermissionAccess.Send, a.PermissionAccess, "Send");
-			a.PermissionAccess = MessageQueuePermissionAccess.Peek;
-			Assert.AreEqual (MessageQueuePermissionAccess.Peek, a.PermissionAccess, "Peek");
-			a.PermissionAccess = MessageQueuePermissionAccess.Receive;
-			Assert.AreEqual (MessageQueuePermissionAccess.Receive, a.PermissionAccess, "Receive");
-			a.PermissionAccess = MessageQueuePermissionAccess.Administer;
-			Assert.AreEqual (MessageQueuePermissionAccess.Administer, a.PermissionAccess, "Administer");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CreatePermission_WithoutMachineName ()
-		{
-			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
-			a.CreatePermission ();
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (MessageQueuePermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event);
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
+//
+// MessageQueuePermissionAttributeTest.cs -
+//	NUnit Test Cases for MessageQueuePermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Messaging;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.Messaging {
+
+	[TestFixture]
+	public class MessageQueuePermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.IsNull (a.Category, "Category");
+			Assert.IsNull (a.Label, "Label");
+			Assert.IsNull (a.MachineName, "MachineName");
+			Assert.IsNull (a.Path, "Path");
+			Assert.AreEqual (MessageQueuePermissionAccess.None, a.PermissionAccess, "PermissionAccess");
+
+			a.MachineName = "localhost";
+			MessageQueuePermission sp = (MessageQueuePermission)a.CreatePermission ();
+			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.MachineName = "localhost";
+			a.Unrestricted = true;
+			MessageQueuePermission mqp = (MessageQueuePermission)a.CreatePermission ();
+			Assert.IsTrue (mqp.IsUnrestricted (), "IsUnrestricted");
+
+			a.Unrestricted = false;
+			mqp = (MessageQueuePermission)a.CreatePermission ();
+			Assert.IsFalse (mqp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void Category_Null ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.Category = null;
+		}
+
+		[Test]
+		public void Category ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.Category = "Mono";
+			Assert.AreEqual ("Mono", a.Category, "Category-1");
+			a.Category = String.Empty;
+			Assert.AreEqual (String.Empty, a.Category, "Category-2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void Label_Null ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.Label = null;
+		}
+
+		[Test]
+		public void Label ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.Label = "Mono";
+			Assert.AreEqual ("Mono", a.Label, "Label-1");
+			a.Label = String.Empty;
+			Assert.AreEqual (String.Empty, a.Label, "Label-2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void MachineName_Null ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.MachineName = null;
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MachineName_Invalid ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.MachineName = String.Empty;
+		}
+
+		[Test]
+		public void MachineName ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.MachineName = "Mono";
+			Assert.AreEqual ("Mono", a.MachineName, "MachineName-1");
+
+			for (int i = 0; i < 256; i++) {
+				try{
+					a.MachineName = Convert.ToChar (i).ToString ();
+					Assert.AreEqual (i, (int)a.MachineName [0], i.ToString ());
+				}
+				catch {
+					switch (i) {
+						case 9:
+						case 10:
+						case 11:
+						case 12:
+						case 13:
+						case 32:
+						case 92:
+						case 133:
+						case 160:
+							// known invalid chars
+							break;
+						default:
+							Assert.Fail (i.ToString ());
+							break;
+					}
+				}
+			}
+			// all first 256 characters seems to be valid
+			// is there other rules ?
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void Path_Null ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.Path = null;
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void Path_Invalid ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.Path = "Mono";
+		}
+
+		[Test]
+		public void Path ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.Path = "\\Mono";
+			Assert.AreEqual ("\\Mono", a.Path, "Path-1");
+			a.Path = "\\";
+			Assert.AreEqual ("\\", a.Path, "Path-2");
+			a.Path = String.Empty;
+			Assert.AreEqual (String.Empty, a.Path, "Path-3");
+		}
+
+		[Test]
+		public void PermissionAccess_Invalid ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = (MessageQueuePermissionAccess) Int32.MinValue;
+			Assert.AreEqual (Int32.MinValue, (int)a.PermissionAccess);
+		}
+
+		[Test]
+		public void PermissionAccess ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = MessageQueuePermissionAccess.None;
+			Assert.AreEqual (MessageQueuePermissionAccess.None, a.PermissionAccess, "None");
+			a.PermissionAccess = MessageQueuePermissionAccess.Browse;
+			Assert.AreEqual (MessageQueuePermissionAccess.Browse, a.PermissionAccess, "Browse");
+			a.PermissionAccess = MessageQueuePermissionAccess.Send;
+			Assert.AreEqual (MessageQueuePermissionAccess.Send, a.PermissionAccess, "Send");
+			a.PermissionAccess = MessageQueuePermissionAccess.Peek;
+			Assert.AreEqual (MessageQueuePermissionAccess.Peek, a.PermissionAccess, "Peek");
+			a.PermissionAccess = MessageQueuePermissionAccess.Receive;
+			Assert.AreEqual (MessageQueuePermissionAccess.Receive, a.PermissionAccess, "Receive");
+			a.PermissionAccess = MessageQueuePermissionAccess.Administer;
+			Assert.AreEqual (MessageQueuePermissionAccess.Administer, a.PermissionAccess, "Administer");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CreatePermission_WithoutMachineName ()
+		{
+			MessageQueuePermissionAttribute a = new MessageQueuePermissionAttribute (SecurityAction.Assert);
+			a.CreatePermission ();
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (MessageQueuePermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event);
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Documentation/System.Runtime.Remoting.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Documentation/System.Runtime.Remoting.xml
@@ -1,563 +1,563 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Runtime.Remoting">
-    <class name="CommonTransportKeys" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="CommonTransportKeys" argnames="" />
-        <field name="IPAddress" />
-        <field name="ConnectionId" />
-        <field name="RequestUri" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BinaryClientFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="BinaryClientFormatterSinkProvider" argnames="" />
-        <constructor name="BinaryClientFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
-        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IClientChannelSinkProvider" />
-        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelSender, System.String, System.Object)" argnames="channel, url, remoteChannelData" returntype="System.Runtime.Remoting.Channels.IClientChannelSink" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BinaryClientFormatterSink" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="BinaryClientFormatterSink(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="nextSink" />
-        <property name="IncludeVersioning" propertytype="System.Boolean" />
-        <property name="StrictBinding" propertytype="System.Boolean" />
-        <property name="ChannelProtocol" propertytype="System.Runtime.Remoting.Channels.SinkChannelProtocol" />
-        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IClientChannelSink" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <method name="GetRequestStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IClientResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, headers, stream" returntype="System.Void" />
-        <method name="AsyncProcessRequest(System.Runtime.Remoting.Channels.IClientChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, msg, headers, stream" returntype="System.Void" />
-        <method name="ProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="msg, requestHeaders, requestStream, responseHeaders, responseStream" returntype="System.Void" />
-        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
-        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BinaryServerFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="BinaryServerFormatterSinkProvider" argnames="" />
-        <constructor name="BinaryServerFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
-        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
-        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="channelData" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BinaryServerFormatterSink" namespace="System.Runtime.Remoting.Channels">
-        <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
-            <field name="Http" />
-            <field name="Other" />
-            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </enum>
-        <constructor name="Protocol(System.Runtime.Remoting.Channels.BinaryServerFormatterSink.Protocol, System.Runtime.Remoting.Channels.IServerChannelSink, System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="protocol, nextSink, receiver" />
-        <property name="IncludeVersioning" propertytype="System.Boolean" />
-        <property name="StrictBinding" propertytype="System.Boolean" />
-        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
-        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapClientFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="SoapClientFormatterSinkProvider" argnames="" />
-        <constructor name="SoapClientFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
-        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IClientChannelSinkProvider" />
-        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelSender, System.String, System.Object)" argnames="channel, url, remoteChannelData" returntype="System.Runtime.Remoting.Channels.IClientChannelSink" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapClientFormatterSink" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="SoapClientFormatterSink(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="nextSink" />
-        <property name="IncludeVersioning" propertytype="System.Boolean" />
-        <property name="StrictBinding" propertytype="System.Boolean" />
-        <property name="ChannelProtocol" propertytype="System.Runtime.Remoting.Channels.SinkChannelProtocol" />
-        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IClientChannelSink" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <method name="GetRequestStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IClientResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, headers, stream" returntype="System.Void" />
-        <method name="AsyncProcessRequest(System.Runtime.Remoting.Channels.IClientChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, msg, headers, stream" returntype="System.Void" />
-        <method name="ProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="msg, requestHeaders, requestStream, responseHeaders, responseStream" returntype="System.Void" />
-        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
-        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapServerFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="SoapServerFormatterSinkProvider" argnames="" />
-        <constructor name="SoapServerFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
-        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
-        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="channelData" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapServerFormatterSink" namespace="System.Runtime.Remoting.Channels">
-        <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
-            <field name="Http" />
-            <field name="Other" />
-            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </enum>
-        <constructor name="Protocol(System.Runtime.Remoting.Channels.SoapServerFormatterSink.Protocol, System.Runtime.Remoting.Channels.IServerChannelSink, System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="protocol, nextSink, receiver" />
-        <property name="IncludeVersioning" propertytype="System.Boolean" />
-        <property name="StrictBinding" propertytype="System.Boolean" />
-        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
-        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
-        <field name="Http" />
-        <field name="Other" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
-        <field name="Http" />
-        <field name="Other" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="HttpChannel" namespace="System.Runtime.Remoting.Channels.Http">
-        <constructor name="HttpChannel" argnames="" />
-        <constructor name="HttpChannel(System.Int32)" argnames="port" />
-        <constructor name="HttpChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, clientSinkProvider, serverSinkProvider" />
-        <field name="SinksWithProperties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" />
-        <property name="ChannelPriority" propertytype="System.Int32" />
-        <property name="ChannelName" propertytype="System.String" />
-        <property name="ChannelData" propertytype="System.Object" />
-        <property name="ChannelScheme" propertytype="System.String" />
-        <property name="WantsToListen" propertytype="System.Boolean" />
-        <property name="ChannelSinkChain" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <property name="IsFixedSize" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <property name="Count" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Int32" />
-        <property name="SyncRoot" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Object" />
-        <property name="IsSynchronized" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <method name="AddHookChannelUri(System.String)" argnames="channelUri" returntype="System.Void" />
-        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
-        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="GetUrlsForUri(System.String)" argnames="objectURI" returntype="System.String[]" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpClientChannel" namespace="System.Runtime.Remoting.Channels.Http">
-        <constructor name="HttpClientChannel" argnames="" />
-        <constructor name="HttpClientChannel(System.String, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="name, sinkProvider" />
-        <constructor name="HttpClientChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="properties, sinkProvider" />
-        <field name="SinksWithProperties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" />
-        <property name="ChannelPriority" propertytype="System.Int32" />
-        <property name="ChannelName" propertytype="System.String" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="ProxyObject" propertytype="System.Net.IWebProxy" />
-        <property name="UseDefaultCredentials" propertytype="System.Boolean" />
-        <property name="Properties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" propertytype="System.Collections.IDictionary" />
-        <property name="Values" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <property name="IsFixedSize" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <property name="Count" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Int32" />
-        <property name="SyncRoot" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Object" />
-        <property name="IsSynchronized" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
-        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpServerChannel" namespace="System.Runtime.Remoting.Channels.Http">
-        <constructor name="HttpServerChannel" argnames="" />
-        <constructor name="HttpServerChannel(System.Int32)" argnames="port" />
-        <constructor name="HttpServerChannel(System.String, System.Int32)" argnames="name, port" />
-        <constructor name="HttpServerChannel(System.String, System.Int32, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="name, port, sinkProvider" />
-        <constructor name="HttpServerChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, sinkProvider" />
-        <field name="SinksWithProperties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" />
-        <property name="ChannelPriority" propertytype="System.Int32" />
-        <property name="ChannelName" propertytype="System.String" />
-        <property name="ChannelData" propertytype="System.Object" />
-        <property name="ChannelScheme" propertytype="System.String" />
-        <property name="WantsToListen" propertytype="System.Boolean" />
-        <property name="ChannelSinkChain" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Properties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" propertytype="System.Collections.IDictionary" />
-        <property name="Values" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <property name="IsFixedSize" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <property name="Count" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Int32" />
-        <property name="SyncRoot" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Object" />
-        <property name="IsSynchronized" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
-        <method name="AddHookChannelUri(System.String)" argnames="channelUri" returntype="System.Void" />
-        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
-        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="GetUrlsForUri(System.String)" argnames="objectUri" returntype="System.String[]" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetChannelUri" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpRemotingHandler" namespace="System.Runtime.Remoting.Channels.Http">
-        <constructor name="HttpRemotingHandler" argnames="" />
-        <constructor name="HttpRemotingHandler(System.Type, System.Object)" argnames="type, srvID" />
-        <property name="IsReusable" propertytype="System.Boolean" />
-        <method name="ProcessRequest(System.Web.HttpContext)" argnames="context" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpRemotingHandlerFactory" namespace="System.Runtime.Remoting.Channels.Http">
-        <constructor name="HttpRemotingHandlerFactory" argnames="" />
-        <property name="WebServicesFactory" propertytype="System.Web.IHttpHandlerFactory" />
-        <property name="WebServicesFactoryType" propertytype="System.Type" />
-        <method name="ReleaseHandler(System.Web.IHttpHandler)" argnames="handler" returntype="System.Void" />
-        <method name="GetHandler(System.Web.HttpContext, System.String, System.String, System.String)" argnames="context, verb, url, filePath" returntype="System.Web.IHttpHandler" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TcpChannel" namespace="System.Runtime.Remoting.Channels.Tcp">
-        <constructor name="TcpChannel" argnames="" />
-        <constructor name="TcpChannel(System.Int32)" argnames="port" />
-        <constructor name="TcpChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, clientSinkProvider, serverSinkProvider" />
-        <property name="ChannelPriority" propertytype="System.Int32" />
-        <property name="ChannelName" propertytype="System.String" />
-        <property name="ChannelData" propertytype="System.Object" />
-        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
-        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="GetUrlsForUri(System.String)" argnames="objectURI" returntype="System.String[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TcpClientChannel" namespace="System.Runtime.Remoting.Channels.Tcp">
-        <constructor name="TcpClientChannel" argnames="" />
-        <constructor name="TcpClientChannel(System.String, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="name, sinkProvider" />
-        <constructor name="TcpClientChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="properties, sinkProvider" />
-        <property name="ChannelPriority" propertytype="System.Int32" />
-        <property name="ChannelName" propertytype="System.String" />
-        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
-        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TcpServerChannel" namespace="System.Runtime.Remoting.Channels.Tcp">
-        <constructor name="TcpServerChannel(System.Int32)" argnames="port" />
-        <constructor name="TcpServerChannel(System.String, System.Int32)" argnames="name, port" />
-        <constructor name="TcpServerChannel(System.String, System.Int32, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="name, port, sinkProvider" />
-        <constructor name="TcpServerChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, sinkProvider" />
-        <property name="ChannelPriority" propertytype="System.Int32" />
-        <property name="ChannelName" propertytype="System.String" />
-        <property name="ChannelData" propertytype="System.Object" />
-        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
-        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="GetUrlsForUri(System.String)" argnames="objectUri" returntype="System.String[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetChannelUri" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MetaData" namespace="System.Runtime.Remoting.MetadataServices">
-        <constructor name="MetaData" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ConvertTypesToSchemaToFile(System.Type[], System.Runtime.Remoting.MetadataServices.SdlType, System.String)" argnames="types, sdlType, path" returntype="System.Void" />
-        <method name="ConvertTypesToSchemaToStream(System.Type[], System.Runtime.Remoting.MetadataServices.SdlType, System.IO.Stream)" argnames="types, sdlType, outputStream" returntype="System.Void" />
-        <method name="ConvertTypesToSchemaToFile(System.Runtime.Remoting.MetadataServices.ServiceType[], System.Runtime.Remoting.MetadataServices.SdlType, System.String)" argnames="types, sdlType, path" returntype="System.Void" />
-        <method name="ConvertTypesToSchemaToStream(System.Runtime.Remoting.MetadataServices.ServiceType[], System.Runtime.Remoting.MetadataServices.SdlType, System.IO.Stream)" argnames="serviceTypes, sdlType, outputStream" returntype="System.Void" />
-        <method name="RetrieveSchemaFromUrlToStream(System.String, System.IO.Stream)" argnames="url, outputStream" returntype="System.Void" />
-        <method name="RetrieveSchemaFromUrlToFile(System.String, System.String)" argnames="url, path" returntype="System.Void" />
-        <method name="ConvertSchemaStreamToCodeSourceStream(System.Boolean, System.String, System.IO.Stream, System.Collections.ArrayList, System.String, System.String)" argnames="clientProxy, outputDirectory, inputStream, outCodeStreamList, proxyUrl, proxyNamespace" returntype="System.Void" />
-        <method name="ConvertSchemaStreamToCodeSourceStream(System.Boolean, System.String, System.IO.Stream, System.Collections.ArrayList, System.String)" argnames="clientProxy, outputDirectory, inputStream, outCodeStreamList, proxyUrl" returntype="System.Void" />
-        <method name="ConvertSchemaStreamToCodeSourceStream(System.Boolean, System.String, System.IO.Stream, System.Collections.ArrayList)" argnames="clientProxy, outputDirectory, inputStream, outCodeStreamList" returntype="System.Void" />
-        <method name="ConvertCodeSourceStreamToAssemblyFile(System.Collections.ArrayList, System.String, System.String)" argnames="outCodeStreamList, assemblyPath, strongNameFilename" returntype="System.Void" />
-        <method name="ConvertCodeSourceFileToAssemblyFile(System.String, System.String, System.String)" argnames="codePath, assemblyPath, strongNameFilename" returntype="System.Void" />
-        <method name="SaveStreamToFile(System.IO.Stream, System.String)" argnames="inputStream, path" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceType" namespace="System.Runtime.Remoting.MetadataServices">
-        <constructor name="ServiceType(System.Type)" argnames="type" />
-        <constructor name="ServiceType(System.Type, System.String)" argnames="type, url" />
-        <property name="ObjectType" propertytype="System.Type" />
-        <property name="Url" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SdlChannelSinkProvider" namespace="System.Runtime.Remoting.MetadataServices">
-        <constructor name="SdlChannelSinkProvider" argnames="" />
-        <constructor name="SdlChannelSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
-        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
-        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="localChannelData" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SdlChannelSink" namespace="System.Runtime.Remoting.MetadataServices">
-        <constructor name="SdlChannelSink(System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.IServerChannelSink)" argnames="receiver, nextSink" />
-        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
-        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SUDSParserException" namespace="System.Runtime.Remoting.MetadataServices">
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SUDSGeneratorException" namespace="System.Runtime.Remoting.MetadataServices">
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="SdlType" namespace="System.Runtime.Remoting.MetadataServices">
-        <field name="Sdl" />
-        <field name="Wsdl" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="RemotingClientProxy" namespace="System.Runtime.Remoting.Services">
-        <constructor name="RemotingClientProxy" argnames="" />
-        <field name="_type" />
-        <field name="_tp" />
-        <field name="_url" />
-        <property name="AllowAutoRedirect" propertytype="System.Boolean" />
-        <property name="Cookies" propertytype="System.Object" />
-        <property name="EnableCookies" propertytype="System.Boolean" />
-        <property name="PreAuthenticate" propertytype="System.Boolean" />
-        <property name="Path" propertytype="System.String" />
-        <property name="Timeout" propertytype="System.Int32" />
-        <property name="Url" propertytype="System.String" />
-        <property name="UserAgent" propertytype="System.String" />
-        <property name="Username" propertytype="System.String" />
-        <property name="Password" propertytype="System.String" />
-        <property name="Domain" propertytype="System.String" />
-        <property name="ProxyName" propertytype="System.String" />
-        <property name="ProxyPort" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ConfigureProxy(System.Type, System.String)" argnames="type, url" returntype="System.Void" />
-        <method name="ConnectProxy" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="RemotingService" namespace="System.Runtime.Remoting.Services">
-        <constructor name="RemotingService" argnames="" />
-        <property name="Application" propertytype="System.Web.HttpApplicationState" />
-        <property name="Context" propertytype="System.Web.HttpContext" />
-        <property name="Session" propertytype="System.Web.SessionState.HttpSessionState" />
-        <property name="Server" propertytype="System.Web.HttpServerUtility" />
-        <property name="User" propertytype="System.Security.Principal.IPrincipal" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Runtime.Remoting">
+    <class name="CommonTransportKeys" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="CommonTransportKeys" argnames="" />
+        <field name="IPAddress" />
+        <field name="ConnectionId" />
+        <field name="RequestUri" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BinaryClientFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="BinaryClientFormatterSinkProvider" argnames="" />
+        <constructor name="BinaryClientFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
+        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IClientChannelSinkProvider" />
+        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelSender, System.String, System.Object)" argnames="channel, url, remoteChannelData" returntype="System.Runtime.Remoting.Channels.IClientChannelSink" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BinaryClientFormatterSink" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="BinaryClientFormatterSink(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="nextSink" />
+        <property name="IncludeVersioning" propertytype="System.Boolean" />
+        <property name="StrictBinding" propertytype="System.Boolean" />
+        <property name="ChannelProtocol" propertytype="System.Runtime.Remoting.Channels.SinkChannelProtocol" />
+        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IClientChannelSink" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <method name="GetRequestStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IClientResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, headers, stream" returntype="System.Void" />
+        <method name="AsyncProcessRequest(System.Runtime.Remoting.Channels.IClientChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, msg, headers, stream" returntype="System.Void" />
+        <method name="ProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="msg, requestHeaders, requestStream, responseHeaders, responseStream" returntype="System.Void" />
+        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
+        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BinaryServerFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="BinaryServerFormatterSinkProvider" argnames="" />
+        <constructor name="BinaryServerFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
+        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
+        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="channelData" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BinaryServerFormatterSink" namespace="System.Runtime.Remoting.Channels">
+        <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
+            <field name="Http" />
+            <field name="Other" />
+            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </enum>
+        <constructor name="Protocol(System.Runtime.Remoting.Channels.BinaryServerFormatterSink.Protocol, System.Runtime.Remoting.Channels.IServerChannelSink, System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="protocol, nextSink, receiver" />
+        <property name="IncludeVersioning" propertytype="System.Boolean" />
+        <property name="StrictBinding" propertytype="System.Boolean" />
+        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
+        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapClientFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="SoapClientFormatterSinkProvider" argnames="" />
+        <constructor name="SoapClientFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
+        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IClientChannelSinkProvider" />
+        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelSender, System.String, System.Object)" argnames="channel, url, remoteChannelData" returntype="System.Runtime.Remoting.Channels.IClientChannelSink" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapClientFormatterSink" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="SoapClientFormatterSink(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="nextSink" />
+        <property name="IncludeVersioning" propertytype="System.Boolean" />
+        <property name="StrictBinding" propertytype="System.Boolean" />
+        <property name="ChannelProtocol" propertytype="System.Runtime.Remoting.Channels.SinkChannelProtocol" />
+        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IClientChannelSink" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <method name="GetRequestStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IClientResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, headers, stream" returntype="System.Void" />
+        <method name="AsyncProcessRequest(System.Runtime.Remoting.Channels.IClientChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, msg, headers, stream" returntype="System.Void" />
+        <method name="ProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="msg, requestHeaders, requestStream, responseHeaders, responseStream" returntype="System.Void" />
+        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
+        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapServerFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="SoapServerFormatterSinkProvider" argnames="" />
+        <constructor name="SoapServerFormatterSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
+        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
+        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="channelData" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapServerFormatterSink" namespace="System.Runtime.Remoting.Channels">
+        <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
+            <field name="Http" />
+            <field name="Other" />
+            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </enum>
+        <constructor name="Protocol(System.Runtime.Remoting.Channels.SoapServerFormatterSink.Protocol, System.Runtime.Remoting.Channels.IServerChannelSink, System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="protocol, nextSink, receiver" />
+        <property name="IncludeVersioning" propertytype="System.Boolean" />
+        <property name="StrictBinding" propertytype="System.Boolean" />
+        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
+        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
+        <field name="Http" />
+        <field name="Other" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Protocol" namespace="System.Runtime.Remoting.Channels">
+        <field name="Http" />
+        <field name="Other" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="HttpChannel" namespace="System.Runtime.Remoting.Channels.Http">
+        <constructor name="HttpChannel" argnames="" />
+        <constructor name="HttpChannel(System.Int32)" argnames="port" />
+        <constructor name="HttpChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, clientSinkProvider, serverSinkProvider" />
+        <field name="SinksWithProperties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" />
+        <property name="ChannelPriority" propertytype="System.Int32" />
+        <property name="ChannelName" propertytype="System.String" />
+        <property name="ChannelData" propertytype="System.Object" />
+        <property name="ChannelScheme" propertytype="System.String" />
+        <property name="WantsToListen" propertytype="System.Boolean" />
+        <property name="ChannelSinkChain" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <property name="IsFixedSize" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <property name="Count" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Int32" />
+        <property name="SyncRoot" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Object" />
+        <property name="IsSynchronized" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <method name="AddHookChannelUri(System.String)" argnames="channelUri" returntype="System.Void" />
+        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
+        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="GetUrlsForUri(System.String)" argnames="objectURI" returntype="System.String[]" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpClientChannel" namespace="System.Runtime.Remoting.Channels.Http">
+        <constructor name="HttpClientChannel" argnames="" />
+        <constructor name="HttpClientChannel(System.String, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="name, sinkProvider" />
+        <constructor name="HttpClientChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="properties, sinkProvider" />
+        <field name="SinksWithProperties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" />
+        <property name="ChannelPriority" propertytype="System.Int32" />
+        <property name="ChannelName" propertytype="System.String" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="ProxyObject" propertytype="System.Net.IWebProxy" />
+        <property name="UseDefaultCredentials" propertytype="System.Boolean" />
+        <property name="Properties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" propertytype="System.Collections.IDictionary" />
+        <property name="Values" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <property name="IsFixedSize" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <property name="Count" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Int32" />
+        <property name="SyncRoot" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Object" />
+        <property name="IsSynchronized" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
+        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpServerChannel" namespace="System.Runtime.Remoting.Channels.Http">
+        <constructor name="HttpServerChannel" argnames="" />
+        <constructor name="HttpServerChannel(System.Int32)" argnames="port" />
+        <constructor name="HttpServerChannel(System.String, System.Int32)" argnames="name, port" />
+        <constructor name="HttpServerChannel(System.String, System.Int32, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="name, port, sinkProvider" />
+        <constructor name="HttpServerChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, sinkProvider" />
+        <field name="SinksWithProperties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" />
+        <property name="ChannelPriority" propertytype="System.Int32" />
+        <property name="ChannelName" propertytype="System.String" />
+        <property name="ChannelData" propertytype="System.Object" />
+        <property name="ChannelScheme" propertytype="System.String" />
+        <property name="WantsToListen" propertytype="System.Boolean" />
+        <property name="ChannelSinkChain" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Properties" inherited="System.Runtime.Remoting.Channels.BaseChannelWithProperties" propertytype="System.Collections.IDictionary" />
+        <property name="Values" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <property name="IsFixedSize" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <property name="Count" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Int32" />
+        <property name="SyncRoot" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Object" />
+        <property name="IsSynchronized" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" propertytype="System.Boolean" />
+        <method name="AddHookChannelUri(System.String)" argnames="channelUri" returntype="System.Void" />
+        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
+        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="GetUrlsForUri(System.String)" argnames="objectUri" returntype="System.String[]" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" inherited="System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetChannelUri" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpRemotingHandler" namespace="System.Runtime.Remoting.Channels.Http">
+        <constructor name="HttpRemotingHandler" argnames="" />
+        <constructor name="HttpRemotingHandler(System.Type, System.Object)" argnames="type, srvID" />
+        <property name="IsReusable" propertytype="System.Boolean" />
+        <method name="ProcessRequest(System.Web.HttpContext)" argnames="context" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpRemotingHandlerFactory" namespace="System.Runtime.Remoting.Channels.Http">
+        <constructor name="HttpRemotingHandlerFactory" argnames="" />
+        <property name="WebServicesFactory" propertytype="System.Web.IHttpHandlerFactory" />
+        <property name="WebServicesFactoryType" propertytype="System.Type" />
+        <method name="ReleaseHandler(System.Web.IHttpHandler)" argnames="handler" returntype="System.Void" />
+        <method name="GetHandler(System.Web.HttpContext, System.String, System.String, System.String)" argnames="context, verb, url, filePath" returntype="System.Web.IHttpHandler" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TcpChannel" namespace="System.Runtime.Remoting.Channels.Tcp">
+        <constructor name="TcpChannel" argnames="" />
+        <constructor name="TcpChannel(System.Int32)" argnames="port" />
+        <constructor name="TcpChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, clientSinkProvider, serverSinkProvider" />
+        <property name="ChannelPriority" propertytype="System.Int32" />
+        <property name="ChannelName" propertytype="System.String" />
+        <property name="ChannelData" propertytype="System.Object" />
+        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
+        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="GetUrlsForUri(System.String)" argnames="objectURI" returntype="System.String[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TcpClientChannel" namespace="System.Runtime.Remoting.Channels.Tcp">
+        <constructor name="TcpClientChannel" argnames="" />
+        <constructor name="TcpClientChannel(System.String, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="name, sinkProvider" />
+        <constructor name="TcpClientChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IClientChannelSinkProvider)" argnames="properties, sinkProvider" />
+        <property name="ChannelPriority" propertytype="System.Int32" />
+        <property name="ChannelName" propertytype="System.String" />
+        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
+        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TcpServerChannel" namespace="System.Runtime.Remoting.Channels.Tcp">
+        <constructor name="TcpServerChannel(System.Int32)" argnames="port" />
+        <constructor name="TcpServerChannel(System.String, System.Int32)" argnames="name, port" />
+        <constructor name="TcpServerChannel(System.String, System.Int32, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="name, port, sinkProvider" />
+        <constructor name="TcpServerChannel(System.Collections.IDictionary, System.Runtime.Remoting.Channels.IServerChannelSinkProvider)" argnames="properties, sinkProvider" />
+        <property name="ChannelPriority" propertytype="System.Int32" />
+        <property name="ChannelName" propertytype="System.String" />
+        <property name="ChannelData" propertytype="System.Object" />
+        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
+        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="GetUrlsForUri(System.String)" argnames="objectUri" returntype="System.String[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetChannelUri" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MetaData" namespace="System.Runtime.Remoting.MetadataServices">
+        <constructor name="MetaData" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ConvertTypesToSchemaToFile(System.Type[], System.Runtime.Remoting.MetadataServices.SdlType, System.String)" argnames="types, sdlType, path" returntype="System.Void" />
+        <method name="ConvertTypesToSchemaToStream(System.Type[], System.Runtime.Remoting.MetadataServices.SdlType, System.IO.Stream)" argnames="types, sdlType, outputStream" returntype="System.Void" />
+        <method name="ConvertTypesToSchemaToFile(System.Runtime.Remoting.MetadataServices.ServiceType[], System.Runtime.Remoting.MetadataServices.SdlType, System.String)" argnames="types, sdlType, path" returntype="System.Void" />
+        <method name="ConvertTypesToSchemaToStream(System.Runtime.Remoting.MetadataServices.ServiceType[], System.Runtime.Remoting.MetadataServices.SdlType, System.IO.Stream)" argnames="serviceTypes, sdlType, outputStream" returntype="System.Void" />
+        <method name="RetrieveSchemaFromUrlToStream(System.String, System.IO.Stream)" argnames="url, outputStream" returntype="System.Void" />
+        <method name="RetrieveSchemaFromUrlToFile(System.String, System.String)" argnames="url, path" returntype="System.Void" />
+        <method name="ConvertSchemaStreamToCodeSourceStream(System.Boolean, System.String, System.IO.Stream, System.Collections.ArrayList, System.String, System.String)" argnames="clientProxy, outputDirectory, inputStream, outCodeStreamList, proxyUrl, proxyNamespace" returntype="System.Void" />
+        <method name="ConvertSchemaStreamToCodeSourceStream(System.Boolean, System.String, System.IO.Stream, System.Collections.ArrayList, System.String)" argnames="clientProxy, outputDirectory, inputStream, outCodeStreamList, proxyUrl" returntype="System.Void" />
+        <method name="ConvertSchemaStreamToCodeSourceStream(System.Boolean, System.String, System.IO.Stream, System.Collections.ArrayList)" argnames="clientProxy, outputDirectory, inputStream, outCodeStreamList" returntype="System.Void" />
+        <method name="ConvertCodeSourceStreamToAssemblyFile(System.Collections.ArrayList, System.String, System.String)" argnames="outCodeStreamList, assemblyPath, strongNameFilename" returntype="System.Void" />
+        <method name="ConvertCodeSourceFileToAssemblyFile(System.String, System.String, System.String)" argnames="codePath, assemblyPath, strongNameFilename" returntype="System.Void" />
+        <method name="SaveStreamToFile(System.IO.Stream, System.String)" argnames="inputStream, path" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceType" namespace="System.Runtime.Remoting.MetadataServices">
+        <constructor name="ServiceType(System.Type)" argnames="type" />
+        <constructor name="ServiceType(System.Type, System.String)" argnames="type, url" />
+        <property name="ObjectType" propertytype="System.Type" />
+        <property name="Url" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SdlChannelSinkProvider" namespace="System.Runtime.Remoting.MetadataServices">
+        <constructor name="SdlChannelSinkProvider" argnames="" />
+        <constructor name="SdlChannelSinkProvider(System.Collections.IDictionary, System.Collections.ICollection)" argnames="properties, providerData" />
+        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
+        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="localChannelData" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SdlChannelSink" namespace="System.Runtime.Remoting.MetadataServices">
+        <constructor name="SdlChannelSink(System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.IServerChannelSink)" argnames="receiver, nextSink" />
+        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
+        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SUDSParserException" namespace="System.Runtime.Remoting.MetadataServices">
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SUDSGeneratorException" namespace="System.Runtime.Remoting.MetadataServices">
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="SdlType" namespace="System.Runtime.Remoting.MetadataServices">
+        <field name="Sdl" />
+        <field name="Wsdl" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="RemotingClientProxy" namespace="System.Runtime.Remoting.Services">
+        <constructor name="RemotingClientProxy" argnames="" />
+        <field name="_type" />
+        <field name="_tp" />
+        <field name="_url" />
+        <property name="AllowAutoRedirect" propertytype="System.Boolean" />
+        <property name="Cookies" propertytype="System.Object" />
+        <property name="EnableCookies" propertytype="System.Boolean" />
+        <property name="PreAuthenticate" propertytype="System.Boolean" />
+        <property name="Path" propertytype="System.String" />
+        <property name="Timeout" propertytype="System.Int32" />
+        <property name="Url" propertytype="System.String" />
+        <property name="UserAgent" propertytype="System.String" />
+        <property name="Username" propertytype="System.String" />
+        <property name="Password" propertytype="System.String" />
+        <property name="Domain" propertytype="System.String" />
+        <property name="ProxyName" propertytype="System.String" />
+        <property name="ProxyPort" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ConfigureProxy(System.Type, System.String)" argnames="type, url" returntype="System.Void" />
+        <method name="ConnectProxy" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="RemotingService" namespace="System.Runtime.Remoting.Services">
+        <constructor name="RemotingService" argnames="" />
+        <property name="Application" propertytype="System.Web.HttpApplicationState" />
+        <property name="Context" propertytype="System.Web.HttpContext" />
+        <property name="Session" propertytype="System.Web.SessionState.HttpSessionState" />
+        <property name="Server" propertytype="System.Web.HttpServerUtility" />
+        <property name="User" propertytype="System.Security.Principal.IPrincipal" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/AggregateDictionary.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/AggregateDictionary.cs
@@ -1,211 +1,211 @@
-﻿//
-// System.Runtime.Remoting.Channels.AggregateDictionary.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2002 (C) Copyright, Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-
-namespace System.Runtime.Remoting.Channels.Http
-{
-	internal class AggregateDictionary : IDictionary
-	{
-		IDictionary[] dictionaries;
-		ArrayList _values;
-		ArrayList _keys;
-
-		public AggregateDictionary (IDictionary[] dics)
-		{
-			dictionaries = dics;
-		}
-
-		public bool IsFixedSize
-		{
-			get { return true; }
-		}
-
-		public bool IsReadOnly
-		{
-			get { return true; }
-		}
-
-		public object this[object key]
-		{
-			get
-			{
-				foreach (IDictionary dic in dictionaries)
-					if (dic.Contains (key)) return dic[key];
-				return null;
-			}
-
-			set
-			{
-				foreach (IDictionary dic in dictionaries)
-					if (dic.Contains (key))
-						dic[key] = value;
-			}
-		}
-
-		public ICollection Keys
-		{
-			get
-			{
-				if (_keys != null) return _keys;
-
-				_keys = new ArrayList ();
-				foreach (IDictionary dic in dictionaries)
-					_keys.AddRange (dic.Keys);
-				return _keys;
-			}
-		}
-
-		public ICollection Values
-		{
-			get
-			{
-				if (_values != null) return _values;
-
-				_values = new ArrayList ();
-				foreach (IDictionary dic in dictionaries)
-					_values.AddRange (dic.Values);
-				return _values;
-			}
-		}
-
-		public void Add (object key, object value)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public void Clear ()
-		{
-			throw new NotSupportedException ();
-		}
-
-		public bool Contains (object ob)
-		{
-			foreach (IDictionary dic in dictionaries)
-				if (dic.Contains (ob)) return true;
-			return false;
-		}
-
-		public IDictionaryEnumerator GetEnumerator ()
-		{
-			return new AggregateEnumerator (dictionaries);
-		}
-
-		IEnumerator IEnumerable.GetEnumerator ()
-		{
-			return new AggregateEnumerator (dictionaries);
-		}
-
-		public void Remove (object ob)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public void CopyTo (Array array, int index)
-		{
-			foreach (object ob in this)
-				array.SetValue (ob, index++);
-		}
-
-		public int Count
-		{
-			get
-			{
-				int c = 0;
-				foreach (IDictionary dic in dictionaries)
-					c += dic.Count;
-				return c;
-			}
-		}
-
-		public bool IsSynchronized
-		{
-			get { return false; }
-		}
-
-		public object SyncRoot
-		{
-			get { return this; }
-		}
-	}
-
-	internal class AggregateEnumerator : IDictionaryEnumerator
-	{
-		IDictionary[] dictionaries;
-		int pos = 0;
-		IDictionaryEnumerator currente;
-
-		public AggregateEnumerator (IDictionary[] dics)
-		{
-			dictionaries = dics;
-			Reset ();
-		}
-
-		public DictionaryEntry Entry
-		{
-			get { return currente.Entry; }
-		}
-
-		public object Key
-		{
-			get { return currente.Key; }
-		}
-
-		public object Value
-		{
-			get { return currente.Value; }
-		}
-
-		public object Current
-		{
-			get { return currente.Current; }
-		}
-
-		public bool MoveNext ()
-		{
-			if (pos >= dictionaries.Length) return false;
-
-			if (!currente.MoveNext ()) {
-				pos++;
-				if (pos >= dictionaries.Length) return false;
-				currente = dictionaries[pos].GetEnumerator ();
-				return MoveNext ();
-			}
-
-			return true;
-		}
-
-		public void Reset ()
-		{
-			pos = 0;
-			if (dictionaries.Length > 0)
-				currente = dictionaries[0].GetEnumerator ();
-		}
-	}
-}
+﻿//
+// System.Runtime.Remoting.Channels.AggregateDictionary.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2002 (C) Copyright, Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+
+namespace System.Runtime.Remoting.Channels.Http
+{
+	internal class AggregateDictionary : IDictionary
+	{
+		IDictionary[] dictionaries;
+		ArrayList _values;
+		ArrayList _keys;
+
+		public AggregateDictionary (IDictionary[] dics)
+		{
+			dictionaries = dics;
+		}
+
+		public bool IsFixedSize
+		{
+			get { return true; }
+		}
+
+		public bool IsReadOnly
+		{
+			get { return true; }
+		}
+
+		public object this[object key]
+		{
+			get
+			{
+				foreach (IDictionary dic in dictionaries)
+					if (dic.Contains (key)) return dic[key];
+				return null;
+			}
+
+			set
+			{
+				foreach (IDictionary dic in dictionaries)
+					if (dic.Contains (key))
+						dic[key] = value;
+			}
+		}
+
+		public ICollection Keys
+		{
+			get
+			{
+				if (_keys != null) return _keys;
+
+				_keys = new ArrayList ();
+				foreach (IDictionary dic in dictionaries)
+					_keys.AddRange (dic.Keys);
+				return _keys;
+			}
+		}
+
+		public ICollection Values
+		{
+			get
+			{
+				if (_values != null) return _values;
+
+				_values = new ArrayList ();
+				foreach (IDictionary dic in dictionaries)
+					_values.AddRange (dic.Values);
+				return _values;
+			}
+		}
+
+		public void Add (object key, object value)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public void Clear ()
+		{
+			throw new NotSupportedException ();
+		}
+
+		public bool Contains (object ob)
+		{
+			foreach (IDictionary dic in dictionaries)
+				if (dic.Contains (ob)) return true;
+			return false;
+		}
+
+		public IDictionaryEnumerator GetEnumerator ()
+		{
+			return new AggregateEnumerator (dictionaries);
+		}
+
+		IEnumerator IEnumerable.GetEnumerator ()
+		{
+			return new AggregateEnumerator (dictionaries);
+		}
+
+		public void Remove (object ob)
+		{
+			throw new NotSupportedException ();
+		}
+
+		public void CopyTo (Array array, int index)
+		{
+			foreach (object ob in this)
+				array.SetValue (ob, index++);
+		}
+
+		public int Count
+		{
+			get
+			{
+				int c = 0;
+				foreach (IDictionary dic in dictionaries)
+					c += dic.Count;
+				return c;
+			}
+		}
+
+		public bool IsSynchronized
+		{
+			get { return false; }
+		}
+
+		public object SyncRoot
+		{
+			get { return this; }
+		}
+	}
+
+	internal class AggregateEnumerator : IDictionaryEnumerator
+	{
+		IDictionary[] dictionaries;
+		int pos = 0;
+		IDictionaryEnumerator currente;
+
+		public AggregateEnumerator (IDictionary[] dics)
+		{
+			dictionaries = dics;
+			Reset ();
+		}
+
+		public DictionaryEntry Entry
+		{
+			get { return currente.Entry; }
+		}
+
+		public object Key
+		{
+			get { return currente.Key; }
+		}
+
+		public object Value
+		{
+			get { return currente.Value; }
+		}
+
+		public object Current
+		{
+			get { return currente.Current; }
+		}
+
+		public bool MoveNext ()
+		{
+			if (pos >= dictionaries.Length) return false;
+
+			if (!currente.MoveNext ()) {
+				pos++;
+				if (pos >= dictionaries.Length) return false;
+				currente = dictionaries[pos].GetEnumerator ();
+				return MoveNext ();
+			}
+
+			return true;
+		}
+
+		public void Reset ()
+		{
+			pos = 0;
+			if (dictionaries.Length > 0)
+				currente = dictionaries[0].GetEnumerator ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/HttpClientTransportSinkProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Http/HttpClientTransportSinkProvider.cs
@@ -1,56 +1,56 @@
-﻿//
-// HttpClientTransportSinkProvider.cs
-// 
-// Author:
-//   Michael Hutchinson <mhutchinson@novell.com>
-// 
-// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
-// 
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Net;
-using System.Runtime.Remoting.Messaging;
-
-namespace System.Runtime.Remoting.Channels.Http
-{
-
-	class HttpClientTransportSinkProvider : IClientChannelSinkProvider
-	{
-		public HttpClientTransportSinkProvider ()
-		{
-		}
-
-		// empty impl, because always last in chain
-		public IClientChannelSinkProvider Next
-		{
-			get { return null; }
-			set { }
-		}
-
-		public IClientChannelSink CreateSink (IChannelSender channel, string url, object remoteChannelData)
-		{
-			return new HttpClientTransportSink ((HttpClientChannel)channel, url);
-		}
-	}
-}
+﻿//
+// HttpClientTransportSinkProvider.cs
+// 
+// Author:
+//   Michael Hutchinson <mhutchinson@novell.com>
+// 
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.IO;
+using System.Net;
+using System.Runtime.Remoting.Messaging;
+
+namespace System.Runtime.Remoting.Channels.Http
+{
+
+	class HttpClientTransportSinkProvider : IClientChannelSinkProvider
+	{
+		public HttpClientTransportSinkProvider ()
+		{
+		}
+
+		// empty impl, because always last in chain
+		public IClientChannelSinkProvider Next
+		{
+			get { return null; }
+			set { }
+		}
+
+		public IClientChannelSink CreateSink (IChannelSender channel, string url, object remoteChannelData)
+		{
+			return new HttpClientTransportSink ((HttpClientChannel)channel, url);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc/IpcChannel.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc/IpcChannel.cs
@@ -1,122 +1,122 @@
-//
-// System.Runtime.Remoting.Channels.Ipc.IpcChannel.cs
-//
-// Author: Robert Jordan (robertj@gmx.net)
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Collections;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Messaging;
-
-using Unix  = System.Runtime.Remoting.Channels.Ipc.Unix;
-using Win32 = System.Runtime.Remoting.Channels.Ipc.Win32;
-
-namespace System.Runtime.Remoting.Channels.Ipc
-{
-        public class IpcChannel : IChannelReceiver, IChannelSender, IChannel
-        {
-                IChannel _innerChannel;
-
-                internal static bool IsUnix
-                {
-                        get { 
-                                int p = (int) Environment.OSVersion.Platform;
-                                return ((p == 4) || (p == 128) || (p == 6));
-                        }
-                }
-
-                public IpcChannel ()
-                {
-                        if (IsUnix)
-                                _innerChannel = new Unix.IpcChannel ();
-                        else
-                                _innerChannel = new Win32.IpcChannel ();
-                }
-
-                public IpcChannel (string portName)
-                {
-                        if (IsUnix)
-                                _innerChannel = new Unix.IpcChannel (portName);
-                        else
-                                _innerChannel = new Win32.IpcChannel (portName);
-                }
-
-                public IpcChannel (IDictionary properties,
-                                   IClientChannelSinkProvider clientSinkProvider,
-                                   IServerChannelSinkProvider serverSinkProvider)
-                {
-                        if (IsUnix)
-                                _innerChannel = new Unix.IpcChannel (properties, clientSinkProvider, serverSinkProvider);
-                        else
-                                _innerChannel = new Win32.IpcChannel (properties, clientSinkProvider, serverSinkProvider);
-                }
-
-                public string ChannelName
-                {
-                        get { return _innerChannel.ChannelName; }
-                }
-
-                public int ChannelPriority
-                {
-                        get { return _innerChannel.ChannelPriority; }
-                }
-
-                public string Parse (string url, out string objectURI)
-                {
-                        return _innerChannel.Parse (url, out objectURI);
-                }
-
-                public IMessageSink CreateMessageSink (string url,
-                                                       object remoteChannelData,
-                                                       out string objectURI)
-                {
-                        return ((IChannelSender)_innerChannel).CreateMessageSink (url, remoteChannelData, out  objectURI);
-                }
-
-                public object ChannelData
-                {
-                        get { return ((IChannelReceiver)_innerChannel).ChannelData; }
-                }
-
-                public string[] GetUrlsForUri (string objectURI)
-                {
-                        return ((IChannelReceiver)_innerChannel).GetUrlsForUri (objectURI);
-                }
-
-                public void StartListening (object data)
-                {
-                        ((IChannelReceiver)_innerChannel).StartListening (data);
-                }
-
-                public void StopListening (object data)
-                {
-                        ((IChannelReceiver)_innerChannel).StopListening (data);
-                }
-
-        }
-}
-
+//
+// System.Runtime.Remoting.Channels.Ipc.IpcChannel.cs
+//
+// Author: Robert Jordan (robertj@gmx.net)
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Messaging;
+
+using Unix  = System.Runtime.Remoting.Channels.Ipc.Unix;
+using Win32 = System.Runtime.Remoting.Channels.Ipc.Win32;
+
+namespace System.Runtime.Remoting.Channels.Ipc
+{
+        public class IpcChannel : IChannelReceiver, IChannelSender, IChannel
+        {
+                IChannel _innerChannel;
+
+                internal static bool IsUnix
+                {
+                        get { 
+                                int p = (int) Environment.OSVersion.Platform;
+                                return ((p == 4) || (p == 128) || (p == 6));
+                        }
+                }
+
+                public IpcChannel ()
+                {
+                        if (IsUnix)
+                                _innerChannel = new Unix.IpcChannel ();
+                        else
+                                _innerChannel = new Win32.IpcChannel ();
+                }
+
+                public IpcChannel (string portName)
+                {
+                        if (IsUnix)
+                                _innerChannel = new Unix.IpcChannel (portName);
+                        else
+                                _innerChannel = new Win32.IpcChannel (portName);
+                }
+
+                public IpcChannel (IDictionary properties,
+                                   IClientChannelSinkProvider clientSinkProvider,
+                                   IServerChannelSinkProvider serverSinkProvider)
+                {
+                        if (IsUnix)
+                                _innerChannel = new Unix.IpcChannel (properties, clientSinkProvider, serverSinkProvider);
+                        else
+                                _innerChannel = new Win32.IpcChannel (properties, clientSinkProvider, serverSinkProvider);
+                }
+
+                public string ChannelName
+                {
+                        get { return _innerChannel.ChannelName; }
+                }
+
+                public int ChannelPriority
+                {
+                        get { return _innerChannel.ChannelPriority; }
+                }
+
+                public string Parse (string url, out string objectURI)
+                {
+                        return _innerChannel.Parse (url, out objectURI);
+                }
+
+                public IMessageSink CreateMessageSink (string url,
+                                                       object remoteChannelData,
+                                                       out string objectURI)
+                {
+                        return ((IChannelSender)_innerChannel).CreateMessageSink (url, remoteChannelData, out  objectURI);
+                }
+
+                public object ChannelData
+                {
+                        get { return ((IChannelReceiver)_innerChannel).ChannelData; }
+                }
+
+                public string[] GetUrlsForUri (string objectURI)
+                {
+                        return ((IChannelReceiver)_innerChannel).GetUrlsForUri (objectURI);
+                }
+
+                public void StartListening (object data)
+                {
+                        ((IChannelReceiver)_innerChannel).StartListening (data);
+                }
+
+                public void StopListening (object data)
+                {
+                        ((IChannelReceiver)_innerChannel).StopListening (data);
+                }
+
+        }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc/IpcClientChannel.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc/IpcClientChannel.cs
@@ -1,93 +1,93 @@
-//
-// System.Runtime.Remoting.Channels.Ipc.IpcClientChannel.cs
-//
-// Author: Robert Jordan (robertj@gmx.net)
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Collections;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Messaging;
-
-using Unix  = System.Runtime.Remoting.Channels.Ipc.Unix;
-using Win32 = System.Runtime.Remoting.Channels.Ipc.Win32;
-
-namespace System.Runtime.Remoting.Channels.Ipc
-{
-        public class IpcClientChannel : IChannelSender, IChannel
-        {
-                IChannelSender _innerChannel;
-
-                public IpcClientChannel ()
-                {
-                        if (IpcChannel.IsUnix)
-                                _innerChannel = new Unix.IpcClientChannel ();
-                        else
-                                _innerChannel = new Win32.IpcClientChannel ();
-                }
-
-                public IpcClientChannel (IDictionary properties,
-                                         IClientChannelSinkProvider sinkProvider)
-                {
-                        if (IpcChannel.IsUnix)
-                                _innerChannel = new Unix.IpcClientChannel (properties, sinkProvider);
-                        else
-                                _innerChannel = new Win32.IpcClientChannel (properties, sinkProvider);
-                }
-
-                public IpcClientChannel (string name,
-                                         IClientChannelSinkProvider sinkProvider)
-                {
-                        if (IpcChannel.IsUnix)
-                                _innerChannel = new Unix.IpcClientChannel (name, sinkProvider);
-                        else
-                                _innerChannel = new Win32.IpcClientChannel (name, sinkProvider);
-                }
-
-                public string ChannelName
-                {
-                        get { return ((IChannel)_innerChannel).ChannelName; }
-                }
-
-                public int ChannelPriority
-                {
-                        get { return ((IChannel)_innerChannel).ChannelPriority; }
-                }
-
-                public string Parse (string url, out string objectURI)
-                {
-                        return ((IChannel)_innerChannel).Parse (url, out objectURI);
-                }
-
-                public virtual IMessageSink CreateMessageSink (string url,
-                                                       object remoteChannelData,
-                                                       out string objectURI)
-                {
-                        return _innerChannel.CreateMessageSink (url, remoteChannelData, out objectURI);
-                }
-    }
-}
-
+//
+// System.Runtime.Remoting.Channels.Ipc.IpcClientChannel.cs
+//
+// Author: Robert Jordan (robertj@gmx.net)
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Messaging;
+
+using Unix  = System.Runtime.Remoting.Channels.Ipc.Unix;
+using Win32 = System.Runtime.Remoting.Channels.Ipc.Win32;
+
+namespace System.Runtime.Remoting.Channels.Ipc
+{
+        public class IpcClientChannel : IChannelSender, IChannel
+        {
+                IChannelSender _innerChannel;
+
+                public IpcClientChannel ()
+                {
+                        if (IpcChannel.IsUnix)
+                                _innerChannel = new Unix.IpcClientChannel ();
+                        else
+                                _innerChannel = new Win32.IpcClientChannel ();
+                }
+
+                public IpcClientChannel (IDictionary properties,
+                                         IClientChannelSinkProvider sinkProvider)
+                {
+                        if (IpcChannel.IsUnix)
+                                _innerChannel = new Unix.IpcClientChannel (properties, sinkProvider);
+                        else
+                                _innerChannel = new Win32.IpcClientChannel (properties, sinkProvider);
+                }
+
+                public IpcClientChannel (string name,
+                                         IClientChannelSinkProvider sinkProvider)
+                {
+                        if (IpcChannel.IsUnix)
+                                _innerChannel = new Unix.IpcClientChannel (name, sinkProvider);
+                        else
+                                _innerChannel = new Win32.IpcClientChannel (name, sinkProvider);
+                }
+
+                public string ChannelName
+                {
+                        get { return ((IChannel)_innerChannel).ChannelName; }
+                }
+
+                public int ChannelPriority
+                {
+                        get { return ((IChannel)_innerChannel).ChannelPriority; }
+                }
+
+                public string Parse (string url, out string objectURI)
+                {
+                        return ((IChannel)_innerChannel).Parse (url, out objectURI);
+                }
+
+                public virtual IMessageSink CreateMessageSink (string url,
+                                                       object remoteChannelData,
+                                                       out string objectURI)
+                {
+                        return _innerChannel.CreateMessageSink (url, remoteChannelData, out objectURI);
+                }
+    }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc/IpcServerChannel.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Ipc/IpcServerChannel.cs
@@ -1,130 +1,130 @@
-//
-// System.Runtime.Remoting.Channels.Ipc.IpcServerChannel.cs
-//
-// Author: Robert Jordan (robertj@gmx.net)
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System;
-using System.Collections;
-using System.Runtime.Remoting;
-
-using Unix  = System.Runtime.Remoting.Channels.Ipc.Unix;
-using Win32 = System.Runtime.Remoting.Channels.Ipc.Win32;
-
-namespace System.Runtime.Remoting.Channels.Ipc
-{
-        public class IpcServerChannel : IChannelReceiver, IChannel
-        {
-                IChannelReceiver _innerChannel;
-                string _portName;
-
-                public IpcServerChannel (string portName)
-                {
-                        _portName = portName;
-
-                        if (IpcChannel.IsUnix)
-                                _innerChannel = new Unix.IpcServerChannel (portName);
-                        else
-                                _innerChannel = new Win32.IpcServerChannel (portName);
-                }
-
-                public IpcServerChannel (IDictionary properties,
-                                         IServerChannelSinkProvider  sinkProvider)
-                {
-                        if (properties != null)
-                                _portName = properties ["portName"] as string;
-
-                        if (IpcChannel.IsUnix)
-                                _innerChannel = new Unix.IpcServerChannel (properties,  sinkProvider);
-                        else
-                                _innerChannel = new Win32.IpcServerChannel (properties, sinkProvider);
-                }
-
-                public IpcServerChannel (string name, string portName,
-                                         IServerChannelSinkProvider sinkProvider)
-                {
-                        _portName = portName;
-
-                        if (IpcChannel.IsUnix)
-                                _innerChannel = new Unix.IpcServerChannel (name, portName, sinkProvider);
-                        else
-                                _innerChannel = new Win32.IpcServerChannel (name, portName, sinkProvider);
-                }
-        
-                public IpcServerChannel (string name, string portName)
-                {
-                        _portName = portName;
-
-                        if (IpcChannel.IsUnix)
-                                _innerChannel = new Unix.IpcServerChannel (name, portName);
-                        else
-                                _innerChannel = new Win32.IpcServerChannel (name, portName);
-                }
-
-                public string ChannelName
-                {
-                        get { return ((IChannel)_innerChannel).ChannelName; }
-                }
-
-                public int ChannelPriority
-                {
-                        get { return ((IChannel)_innerChannel).ChannelPriority; }
-                }
-
-                public string Parse (string url, out string objectURI)
-                {
-                        return ((IChannel)_innerChannel).Parse (url, out objectURI);
-                }
-
-                public object ChannelData
-                {
-                        get { return _innerChannel.ChannelData; }
-                }
-
-                public virtual string[] GetUrlsForUri (string objectUri)
-                {
-                        return _innerChannel.GetUrlsForUri (objectUri);
-                }
-
-                public void StartListening (object data)
-                {
-                        _innerChannel.StartListening (data);
-                }
-
-                public void StopListening (object data)
-                {
-                        _innerChannel.StopListening (data);
-                }
-        
-                public string GetChannelUri ()
-                {
-                        // There is no interface for this member,
-                        // so we cannot delegate to the inner channel.
-                        return Win32.IpcChannelHelper.SchemeStart + _portName;
-                }
-        }
-}
-
+//
+// System.Runtime.Remoting.Channels.Ipc.IpcServerChannel.cs
+//
+// Author: Robert Jordan (robertj@gmx.net)
+//
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System;
+using System.Collections;
+using System.Runtime.Remoting;
+
+using Unix  = System.Runtime.Remoting.Channels.Ipc.Unix;
+using Win32 = System.Runtime.Remoting.Channels.Ipc.Win32;
+
+namespace System.Runtime.Remoting.Channels.Ipc
+{
+        public class IpcServerChannel : IChannelReceiver, IChannel
+        {
+                IChannelReceiver _innerChannel;
+                string _portName;
+
+                public IpcServerChannel (string portName)
+                {
+                        _portName = portName;
+
+                        if (IpcChannel.IsUnix)
+                                _innerChannel = new Unix.IpcServerChannel (portName);
+                        else
+                                _innerChannel = new Win32.IpcServerChannel (portName);
+                }
+
+                public IpcServerChannel (IDictionary properties,
+                                         IServerChannelSinkProvider  sinkProvider)
+                {
+                        if (properties != null)
+                                _portName = properties ["portName"] as string;
+
+                        if (IpcChannel.IsUnix)
+                                _innerChannel = new Unix.IpcServerChannel (properties,  sinkProvider);
+                        else
+                                _innerChannel = new Win32.IpcServerChannel (properties, sinkProvider);
+                }
+
+                public IpcServerChannel (string name, string portName,
+                                         IServerChannelSinkProvider sinkProvider)
+                {
+                        _portName = portName;
+
+                        if (IpcChannel.IsUnix)
+                                _innerChannel = new Unix.IpcServerChannel (name, portName, sinkProvider);
+                        else
+                                _innerChannel = new Win32.IpcServerChannel (name, portName, sinkProvider);
+                }
+        
+                public IpcServerChannel (string name, string portName)
+                {
+                        _portName = portName;
+
+                        if (IpcChannel.IsUnix)
+                                _innerChannel = new Unix.IpcServerChannel (name, portName);
+                        else
+                                _innerChannel = new Win32.IpcServerChannel (name, portName);
+                }
+
+                public string ChannelName
+                {
+                        get { return ((IChannel)_innerChannel).ChannelName; }
+                }
+
+                public int ChannelPriority
+                {
+                        get { return ((IChannel)_innerChannel).ChannelPriority; }
+                }
+
+                public string Parse (string url, out string objectURI)
+                {
+                        return ((IChannel)_innerChannel).Parse (url, out objectURI);
+                }
+
+                public object ChannelData
+                {
+                        get { return _innerChannel.ChannelData; }
+                }
+
+                public virtual string[] GetUrlsForUri (string objectUri)
+                {
+                        return _innerChannel.GetUrlsForUri (objectUri);
+                }
+
+                public void StartListening (object data)
+                {
+                        _innerChannel.StartListening (data);
+                }
+
+                public void StopListening (object data)
+                {
+                        _innerChannel.StopListening (data);
+                }
+        
+                public string GetChannelUri ()
+                {
+                        // There is no interface for this member,
+                        // so we cannot delegate to the inner channel.
+                        return Win32.IpcChannelHelper.SchemeStart + _portName;
+                }
+        }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpConnectionPool.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels.Tcp/TcpConnectionPool.cs
@@ -1,316 +1,316 @@
-//
-// System.Runtime.Remoting.Channels.Tcp.TcpConnectionPool.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ideary.com)
-//
-// 2002 (C) Lluis Sanchez Gual
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Threading;
-using System.IO;
-using System.Net.Sockets;
-
-namespace System.Runtime.Remoting.Channels.Tcp
-{
-	// This is a pool of Tcp connections. Connections requested
-	// by the TCP channel are pooled after their use, and can
-	// be reused later. Connections are automaticaly closed
-	// if not used after some time, specified in KeepAliveSeconds.
-	// The number of allowed open connections can also be specified
-	// in MaxOpenConnections. The limit is per host.
-	// If a thread requests a connection and the limit has been 
-	// reached, the thread is suspended until one is released.
-
-	internal class TcpConnectionPool
-	{
-		// Table of pools. There is a HostConnectionPool 
-		// instance for each host
-		static Hashtable _pools = new Hashtable();
-
-		static int _maxOpenConnections = int.MaxValue;
-		static int _keepAliveSeconds = 15;
-
-		static Thread _poolThread;
-
-		static TcpConnectionPool()
-		{
-			// This thread will close unused connections
-			_poolThread = new Thread (new ThreadStart (ConnectionCollector));
-			_poolThread.IsBackground = true;
-			_poolThread.Start();
-		}
-
-		public static void Shutdown ()
-		{
-			if (_poolThread != null)
-				_poolThread.Abort();
-		}
-
-		public static int MaxOpenConnections
-		{
-			get { return _maxOpenConnections; }
-			set 
-			{ 
-				if (value < 1) throw new RemotingException ("MaxOpenConnections must be greater than zero");
-				_maxOpenConnections = value; 
-			}
-		}
-
-		public static int KeepAliveSeconds
-		{
-			get { return _keepAliveSeconds; }
-			set { _keepAliveSeconds = value; }
-		}
-
-		public static TcpConnection GetConnection (string host, int port)
-		{
-			HostConnectionPool hostPool;
-
-			lock (_pools)
-			{
-				string key = host + ":" + port;
-				hostPool = (HostConnectionPool) _pools[key];
-				if (hostPool == null)
-				{
-					hostPool = new HostConnectionPool(host, port);
-					_pools[key] = hostPool;
-				}
-			}
-
-			return hostPool.GetConnection();
-		}
-
-		private static void ConnectionCollector ()
-		{
-			while (true)
-			{
-				Thread.Sleep(3000);
-				lock (_pools)
-				{
-					ICollection values = _pools.Values;
-					foreach (HostConnectionPool pool in values)
-						pool.PurgeConnections();
-				}
-			}
-		}
-	}
-
-	internal class ReusableTcpClient : TcpClient
-	{
-		public ReusableTcpClient (string host, int port): base (host, port)
-		{
-			// Avoid excessive waiting for data by the tcp stack in linux.
-			// We can't safely use SetSocketOption for both runtimes because
-			// it would break 2.0 TcpClient's property cache.
-			Client.NoDelay = true;
-		}
-		
-		public bool IsAlive
-		{
-			get
-			{
-				// This Poll will return true if there is data pending to
-				// be read. It prob. means that a client object using this
-				// connection got an exception and did not finish to read
-				// the data. It can also mean that the connection has been
-				// closed in the server. In both cases, the connection cannot
-				// be reused.
-				return !Client.Poll (0, SelectMode.SelectRead);
-			}
-		}
-	}
-
-	internal class TcpConnection
-	{
-		DateTime _controlTime;
-		Stream _stream;
-		ReusableTcpClient _client;
-		HostConnectionPool _pool;
-		byte[] _buffer;
-
-		public TcpConnection (HostConnectionPool pool, ReusableTcpClient client)
-		{
-			_pool = pool;
-			_client = client;
-			_stream = new BufferedStream (client.GetStream());
-			_controlTime = DateTime.Now;
-			_buffer = new byte[TcpMessageIO.DefaultStreamBufferSize];
-		}
-
-		public Stream Stream
-		{
-			get { return _stream; }
-		}
-
-		public DateTime ControlTime
-		{
-			get { return _controlTime; }
-			set { _controlTime = value; }
-		}
-
-		public bool IsAlive
-		{
-			get { return _client.IsAlive; }
-		}
-
-		// This is a "thread safe" buffer that can be used by 
-		// TcpClientTransportSink to read or send data to the stream.
-		// The buffer is "thread safe" since only one thread can
-		// use a connection at a given time.
-		public byte[] Buffer
-		{
-			get { return _buffer; }
-		}
-
-		// Returns the connection to the pool
-		public void Release()
-		{
-			_pool.ReleaseConnection (this);
-		}
-
-		public void Close()
-		{
-			_client.Close();
-		}
-	}
-
-	internal class HostConnectionPool
-	{
-		ArrayList _pool = new ArrayList();
-		int _activeConnections = 0;
-
-		string _host;
-		int _port;
-
-		public HostConnectionPool (string host, int port)
-		{
-			_host = host;
-			_port = port;
-		}
-
-		public TcpConnection GetConnection ()
-		{
-			TcpConnection connection = null;
-			lock (_pool)
-			{
-				do
-				{
-					if (_pool.Count > 0) 
-					{
-						// There are available connections
-
-						connection = (TcpConnection)_pool[_pool.Count - 1];
-						_pool.RemoveAt(_pool.Count - 1);
-						if (!connection.IsAlive) {
-							CancelConnection (connection);
-							connection = null;
-							continue;
-						}
-					}
-
-					if (connection == null && _activeConnections < TcpConnectionPool.MaxOpenConnections)
-					{
-						// No connections available, but the max connections
-						// has not been reached yet, so a new one can be created
-						// Create the connection outside the lock
-						break;
-					}
-
-					// No available connections in the pool
-					// Wait for somewone to release one.
-
-					if (connection == null)
-					{
-						Monitor.Wait(_pool);
-					}
-				} 
-				while (connection == null);
-			}
-
-			if (connection == null)
-				return CreateConnection ();
-			else
-				return connection;
-		}
-
-		private TcpConnection CreateConnection()
-		{
-			try
-			{
-				ReusableTcpClient client = new ReusableTcpClient(_host, _port);
-				TcpConnection entry = new TcpConnection(this, client);
-				_activeConnections++;
-				return entry;
-			}
-			catch (Exception ex)
-			{
-				throw new RemotingException (ex.Message);
-			}
-		}
-
-		public void ReleaseConnection (TcpConnection entry)
-		{
-			lock (_pool)
-			{
-				entry.ControlTime = DateTime.Now;	// Initialize timeout
-				_pool.Add (entry);
-				Monitor.Pulse (_pool);
-			}
-		}
-
-		private void CancelConnection(TcpConnection entry)
-		{
-			try
-			{
-				entry.Stream.Close();
-				_activeConnections--;
-			}
-			catch
-			{
-			}
-		}
-
-		public void PurgeConnections()
-		{
-			lock (_pool)
-			{
-				for (int n=0; n < _pool.Count; n++)
-				{
-					TcpConnection entry = (TcpConnection)_pool[n];
-					if ( (DateTime.Now - entry.ControlTime).TotalSeconds > TcpConnectionPool.KeepAliveSeconds)
-					{
-						CancelConnection (entry);
-						_pool.RemoveAt(n);
-						n--;
-					}
-				}
-			}
-		}
-
-	}
-
-
-}
+//
+// System.Runtime.Remoting.Channels.Tcp.TcpConnectionPool.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ideary.com)
+//
+// 2002 (C) Lluis Sanchez Gual
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Threading;
+using System.IO;
+using System.Net.Sockets;
+
+namespace System.Runtime.Remoting.Channels.Tcp
+{
+	// This is a pool of Tcp connections. Connections requested
+	// by the TCP channel are pooled after their use, and can
+	// be reused later. Connections are automaticaly closed
+	// if not used after some time, specified in KeepAliveSeconds.
+	// The number of allowed open connections can also be specified
+	// in MaxOpenConnections. The limit is per host.
+	// If a thread requests a connection and the limit has been 
+	// reached, the thread is suspended until one is released.
+
+	internal class TcpConnectionPool
+	{
+		// Table of pools. There is a HostConnectionPool 
+		// instance for each host
+		static Hashtable _pools = new Hashtable();
+
+		static int _maxOpenConnections = int.MaxValue;
+		static int _keepAliveSeconds = 15;
+
+		static Thread _poolThread;
+
+		static TcpConnectionPool()
+		{
+			// This thread will close unused connections
+			_poolThread = new Thread (new ThreadStart (ConnectionCollector));
+			_poolThread.IsBackground = true;
+			_poolThread.Start();
+		}
+
+		public static void Shutdown ()
+		{
+			if (_poolThread != null)
+				_poolThread.Abort();
+		}
+
+		public static int MaxOpenConnections
+		{
+			get { return _maxOpenConnections; }
+			set 
+			{ 
+				if (value < 1) throw new RemotingException ("MaxOpenConnections must be greater than zero");
+				_maxOpenConnections = value; 
+			}
+		}
+
+		public static int KeepAliveSeconds
+		{
+			get { return _keepAliveSeconds; }
+			set { _keepAliveSeconds = value; }
+		}
+
+		public static TcpConnection GetConnection (string host, int port)
+		{
+			HostConnectionPool hostPool;
+
+			lock (_pools)
+			{
+				string key = host + ":" + port;
+				hostPool = (HostConnectionPool) _pools[key];
+				if (hostPool == null)
+				{
+					hostPool = new HostConnectionPool(host, port);
+					_pools[key] = hostPool;
+				}
+			}
+
+			return hostPool.GetConnection();
+		}
+
+		private static void ConnectionCollector ()
+		{
+			while (true)
+			{
+				Thread.Sleep(3000);
+				lock (_pools)
+				{
+					ICollection values = _pools.Values;
+					foreach (HostConnectionPool pool in values)
+						pool.PurgeConnections();
+				}
+			}
+		}
+	}
+
+	internal class ReusableTcpClient : TcpClient
+	{
+		public ReusableTcpClient (string host, int port): base (host, port)
+		{
+			// Avoid excessive waiting for data by the tcp stack in linux.
+			// We can't safely use SetSocketOption for both runtimes because
+			// it would break 2.0 TcpClient's property cache.
+			Client.NoDelay = true;
+		}
+		
+		public bool IsAlive
+		{
+			get
+			{
+				// This Poll will return true if there is data pending to
+				// be read. It prob. means that a client object using this
+				// connection got an exception and did not finish to read
+				// the data. It can also mean that the connection has been
+				// closed in the server. In both cases, the connection cannot
+				// be reused.
+				return !Client.Poll (0, SelectMode.SelectRead);
+			}
+		}
+	}
+
+	internal class TcpConnection
+	{
+		DateTime _controlTime;
+		Stream _stream;
+		ReusableTcpClient _client;
+		HostConnectionPool _pool;
+		byte[] _buffer;
+
+		public TcpConnection (HostConnectionPool pool, ReusableTcpClient client)
+		{
+			_pool = pool;
+			_client = client;
+			_stream = new BufferedStream (client.GetStream());
+			_controlTime = DateTime.Now;
+			_buffer = new byte[TcpMessageIO.DefaultStreamBufferSize];
+		}
+
+		public Stream Stream
+		{
+			get { return _stream; }
+		}
+
+		public DateTime ControlTime
+		{
+			get { return _controlTime; }
+			set { _controlTime = value; }
+		}
+
+		public bool IsAlive
+		{
+			get { return _client.IsAlive; }
+		}
+
+		// This is a "thread safe" buffer that can be used by 
+		// TcpClientTransportSink to read or send data to the stream.
+		// The buffer is "thread safe" since only one thread can
+		// use a connection at a given time.
+		public byte[] Buffer
+		{
+			get { return _buffer; }
+		}
+
+		// Returns the connection to the pool
+		public void Release()
+		{
+			_pool.ReleaseConnection (this);
+		}
+
+		public void Close()
+		{
+			_client.Close();
+		}
+	}
+
+	internal class HostConnectionPool
+	{
+		ArrayList _pool = new ArrayList();
+		int _activeConnections = 0;
+
+		string _host;
+		int _port;
+
+		public HostConnectionPool (string host, int port)
+		{
+			_host = host;
+			_port = port;
+		}
+
+		public TcpConnection GetConnection ()
+		{
+			TcpConnection connection = null;
+			lock (_pool)
+			{
+				do
+				{
+					if (_pool.Count > 0) 
+					{
+						// There are available connections
+
+						connection = (TcpConnection)_pool[_pool.Count - 1];
+						_pool.RemoveAt(_pool.Count - 1);
+						if (!connection.IsAlive) {
+							CancelConnection (connection);
+							connection = null;
+							continue;
+						}
+					}
+
+					if (connection == null && _activeConnections < TcpConnectionPool.MaxOpenConnections)
+					{
+						// No connections available, but the max connections
+						// has not been reached yet, so a new one can be created
+						// Create the connection outside the lock
+						break;
+					}
+
+					// No available connections in the pool
+					// Wait for somewone to release one.
+
+					if (connection == null)
+					{
+						Monitor.Wait(_pool);
+					}
+				} 
+				while (connection == null);
+			}
+
+			if (connection == null)
+				return CreateConnection ();
+			else
+				return connection;
+		}
+
+		private TcpConnection CreateConnection()
+		{
+			try
+			{
+				ReusableTcpClient client = new ReusableTcpClient(_host, _port);
+				TcpConnection entry = new TcpConnection(this, client);
+				_activeConnections++;
+				return entry;
+			}
+			catch (Exception ex)
+			{
+				throw new RemotingException (ex.Message);
+			}
+		}
+
+		public void ReleaseConnection (TcpConnection entry)
+		{
+			lock (_pool)
+			{
+				entry.ControlTime = DateTime.Now;	// Initialize timeout
+				_pool.Add (entry);
+				Monitor.Pulse (_pool);
+			}
+		}
+
+		private void CancelConnection(TcpConnection entry)
+		{
+			try
+			{
+				entry.Stream.Close();
+				_activeConnections--;
+			}
+			catch
+			{
+			}
+		}
+
+		public void PurgeConnections()
+		{
+			lock (_pool)
+			{
+				for (int n=0; n < _pool.Count; n++)
+				{
+					TcpConnection entry = (TcpConnection)_pool[n];
+					if ( (DateTime.Now - entry.ControlTime).TotalSeconds > TcpConnectionPool.KeepAliveSeconds)
+					{
+						CancelConnection (entry);
+						_pool.RemoveAt(n);
+						n--;
+					}
+				}
+			}
+		}
+
+	}
+
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapClientFormatterSink.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapClientFormatterSink.cs
@@ -1,202 +1,202 @@
-//
-// System.Runtime.Remoting.Channels.SoapClientFormatterSink.cs
-//
-// Authors: 	Rodrigo Moya (rodrigo@ximian.com)
-// 		Jean-Marc André (jean-marc.andre@polymtl.ca)
-//
-// 2002 (C) Copyright, Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.IO;
-using System.Reflection;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.Serialization.Formatters.Soap;
-
-namespace System.Runtime.Remoting.Channels
-{
-	public class SoapClientFormatterSink : IClientFormatterSink,
-		IMessageSink, IClientChannelSink, IChannelSinkBase
-	{
-		private IClientChannelSink _nextChannelSink;
-		private SoapCore _soapCore = SoapCore.DefaultInstance;
-
-		public SoapClientFormatterSink (IClientChannelSink nextSink)
-		{
-			_nextChannelSink = nextSink;
-		}
-		
-		internal SoapCore SoapCore {
-			get { return _soapCore; }
-			set { _soapCore = value; }
-		}
-		
-		// IClientChannelSink
-		public IClientChannelSink NextChannelSink {
-			get {
-				return _nextChannelSink;
-			}
-		}
-		
-		// IMessageSink
-		public IMessageSink NextSink {
-			get {
-				return null ;
-			}
-		}
-		
-		// IChannelSinkBase
-		public IDictionary Properties {
-			get {
-				return null;
-			}
-		}
-
-		public IMessageCtrl AsyncProcessMessage (IMessage msg,
-							 IMessageSink replySink)
-		{
-			Stream requestStream;
-			ITransportHeaders requestHeaders;
-			SoapMessageFormatter soapMsgFormatter;
-			
-			SerializeMessage (msg, out requestStream, out requestHeaders,
-				out soapMsgFormatter);
-
-			ClientChannelSinkStack stack = new ClientChannelSinkStack (replySink);
-			stack.Push(this, new CallData (msg, soapMsgFormatter));
-
-			_nextChannelSink.AsyncProcessRequest (stack, msg, requestHeaders, requestStream);
-
-			return null;
-		}
-
-		public void AsyncProcessRequest (IClientChannelSinkStack sinkStack,
-						 IMessage msg,
-						 ITransportHeaders headers,
-						 Stream stream)
-		{
-			// this method should never be called
-			throw new NotSupportedException ();
-		}
-
-		public void AsyncProcessResponse (IClientResponseChannelSinkStack sinkStack,
-						  object state,
-						  ITransportHeaders headers,
-						  Stream stream)
-		{
-			CallData data = (CallData) state;
-			SoapMessageFormatter soapMsgFormatter = data.Formatter;
-			IMessage replyMessage = (IMessage) DeserializeMessage (
-				stream, headers, (IMethodCallMessage) data.Msg,
-				soapMsgFormatter);
-			sinkStack.DispatchReplyMessage (replyMessage);
-			
-		}
-
-		public Stream GetRequestStream (IMessage msg,
-						ITransportHeaders headers)
-		{
-			// First sink in the chain so this method should never
-			// be called
-			throw new NotSupportedException ();
-		}
-
-		public void ProcessMessage (IMessage msg,
-					    ITransportHeaders requestHeaders,
-					    Stream requestStream,
-					    out ITransportHeaders responseHeaders,
-					    out Stream responseStream)
-		{
-			// First sink in the chain so this method should never
-			// be called
-			throw new NotSupportedException ();
-			
-		}
-
-		public IMessage SyncProcessMessage (IMessage msg)
-		{
-			Stream requestStream, responseStream;
-			ITransportHeaders requestHeaders, responseHeaders;
-			SoapMessageFormatter soapMsgFormatter;
-
-			SerializeMessage (msg, out requestStream, out requestHeaders,
-				out soapMsgFormatter);
-			_nextChannelSink.ProcessMessage(msg, requestHeaders,
-				requestStream, out responseHeaders,
-				out responseStream);
-
-			return DeserializeMessage(responseStream, responseHeaders,
-				(IMethodCallMessage) msg, soapMsgFormatter);
-		}
-		
-		
-		private void SerializeMessage(IMessage msg, out Stream requestStream, out ITransportHeaders requestHeaders, out SoapMessageFormatter soapMsgFormatter) {
-			SoapMessage soapMsg;
-			soapMsgFormatter = new SoapMessageFormatter();
-			soapMsg = soapMsgFormatter.BuildSoapMessageFromMethodCall (
-				(IMethodCallMessage) msg, out requestHeaders);
-
-			// Get the stream where the message will be serialized
-			requestStream = _nextChannelSink.GetRequestStream (msg,
-				requestHeaders);
-
-			if (requestStream == null)
-				requestStream = new MemoryStream();
-
-			// Serialize the message into the stream
-			_soapCore.Serializer.Serialize(requestStream, soapMsg, null);
-
-			if (requestStream is MemoryStream)
-				requestStream.Position = 0;
-		}
-		
-		
-		private IMessage DeserializeMessage(Stream responseStream, ITransportHeaders responseHeaders,IMethodCallMessage mcm, SoapMessageFormatter soapMsgFormatter) 
-		{
-			SoapFormatter fm = _soapCore.GetSafeDeserializer ();
-			SoapMessage rtnMessage = soapMsgFormatter.CreateSoapMessage (false);
-			fm.TopObject = rtnMessage;
-			object objReturn = fm.Deserialize(responseStream);
-
-			if (objReturn is SoapFault)
-				return soapMsgFormatter.FormatFault ((SoapFault) objReturn, mcm);
-			else
-				return soapMsgFormatter.FormatResponse ((ISoapMessage) objReturn, mcm);
-		}
-
-		class CallData
-		{
-			public CallData (IMessage msg, SoapMessageFormatter formatter)
-			{
-				Msg = msg;
-				Formatter = formatter;
-			}
-
-			public IMessage Msg;
-			public SoapMessageFormatter Formatter;
-		}
-	}
-}
+//
+// System.Runtime.Remoting.Channels.SoapClientFormatterSink.cs
+//
+// Authors: 	Rodrigo Moya (rodrigo@ximian.com)
+// 		Jean-Marc André (jean-marc.andre@polymtl.ca)
+//
+// 2002 (C) Copyright, Ximian, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.IO;
+using System.Reflection;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters;
+using System.Runtime.Serialization.Formatters.Soap;
+
+namespace System.Runtime.Remoting.Channels
+{
+	public class SoapClientFormatterSink : IClientFormatterSink,
+		IMessageSink, IClientChannelSink, IChannelSinkBase
+	{
+		private IClientChannelSink _nextChannelSink;
+		private SoapCore _soapCore = SoapCore.DefaultInstance;
+
+		public SoapClientFormatterSink (IClientChannelSink nextSink)
+		{
+			_nextChannelSink = nextSink;
+		}
+		
+		internal SoapCore SoapCore {
+			get { return _soapCore; }
+			set { _soapCore = value; }
+		}
+		
+		// IClientChannelSink
+		public IClientChannelSink NextChannelSink {
+			get {
+				return _nextChannelSink;
+			}
+		}
+		
+		// IMessageSink
+		public IMessageSink NextSink {
+			get {
+				return null ;
+			}
+		}
+		
+		// IChannelSinkBase
+		public IDictionary Properties {
+			get {
+				return null;
+			}
+		}
+
+		public IMessageCtrl AsyncProcessMessage (IMessage msg,
+							 IMessageSink replySink)
+		{
+			Stream requestStream;
+			ITransportHeaders requestHeaders;
+			SoapMessageFormatter soapMsgFormatter;
+			
+			SerializeMessage (msg, out requestStream, out requestHeaders,
+				out soapMsgFormatter);
+
+			ClientChannelSinkStack stack = new ClientChannelSinkStack (replySink);
+			stack.Push(this, new CallData (msg, soapMsgFormatter));
+
+			_nextChannelSink.AsyncProcessRequest (stack, msg, requestHeaders, requestStream);
+
+			return null;
+		}
+
+		public void AsyncProcessRequest (IClientChannelSinkStack sinkStack,
+						 IMessage msg,
+						 ITransportHeaders headers,
+						 Stream stream)
+		{
+			// this method should never be called
+			throw new NotSupportedException ();
+		}
+
+		public void AsyncProcessResponse (IClientResponseChannelSinkStack sinkStack,
+						  object state,
+						  ITransportHeaders headers,
+						  Stream stream)
+		{
+			CallData data = (CallData) state;
+			SoapMessageFormatter soapMsgFormatter = data.Formatter;
+			IMessage replyMessage = (IMessage) DeserializeMessage (
+				stream, headers, (IMethodCallMessage) data.Msg,
+				soapMsgFormatter);
+			sinkStack.DispatchReplyMessage (replyMessage);
+			
+		}
+
+		public Stream GetRequestStream (IMessage msg,
+						ITransportHeaders headers)
+		{
+			// First sink in the chain so this method should never
+			// be called
+			throw new NotSupportedException ();
+		}
+
+		public void ProcessMessage (IMessage msg,
+					    ITransportHeaders requestHeaders,
+					    Stream requestStream,
+					    out ITransportHeaders responseHeaders,
+					    out Stream responseStream)
+		{
+			// First sink in the chain so this method should never
+			// be called
+			throw new NotSupportedException ();
+			
+		}
+
+		public IMessage SyncProcessMessage (IMessage msg)
+		{
+			Stream requestStream, responseStream;
+			ITransportHeaders requestHeaders, responseHeaders;
+			SoapMessageFormatter soapMsgFormatter;
+
+			SerializeMessage (msg, out requestStream, out requestHeaders,
+				out soapMsgFormatter);
+			_nextChannelSink.ProcessMessage(msg, requestHeaders,
+				requestStream, out responseHeaders,
+				out responseStream);
+
+			return DeserializeMessage(responseStream, responseHeaders,
+				(IMethodCallMessage) msg, soapMsgFormatter);
+		}
+		
+		
+		private void SerializeMessage(IMessage msg, out Stream requestStream, out ITransportHeaders requestHeaders, out SoapMessageFormatter soapMsgFormatter) {
+			SoapMessage soapMsg;
+			soapMsgFormatter = new SoapMessageFormatter();
+			soapMsg = soapMsgFormatter.BuildSoapMessageFromMethodCall (
+				(IMethodCallMessage) msg, out requestHeaders);
+
+			// Get the stream where the message will be serialized
+			requestStream = _nextChannelSink.GetRequestStream (msg,
+				requestHeaders);
+
+			if (requestStream == null)
+				requestStream = new MemoryStream();
+
+			// Serialize the message into the stream
+			_soapCore.Serializer.Serialize(requestStream, soapMsg, null);
+
+			if (requestStream is MemoryStream)
+				requestStream.Position = 0;
+		}
+		
+		
+		private IMessage DeserializeMessage(Stream responseStream, ITransportHeaders responseHeaders,IMethodCallMessage mcm, SoapMessageFormatter soapMsgFormatter) 
+		{
+			SoapFormatter fm = _soapCore.GetSafeDeserializer ();
+			SoapMessage rtnMessage = soapMsgFormatter.CreateSoapMessage (false);
+			fm.TopObject = rtnMessage;
+			object objReturn = fm.Deserialize(responseStream);
+
+			if (objReturn is SoapFault)
+				return soapMsgFormatter.FormatFault ((SoapFault) objReturn, mcm);
+			else
+				return soapMsgFormatter.FormatResponse ((ISoapMessage) objReturn, mcm);
+		}
+
+		class CallData
+		{
+			public CallData (IMessage msg, SoapMessageFormatter formatter)
+			{
+				Msg = msg;
+				Formatter = formatter;
+			}
+
+			public IMessage Msg;
+			public SoapMessageFormatter Formatter;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapClientFormatterSinkProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapClientFormatterSinkProvider.cs
@@ -1,63 +1,63 @@
-// created on 20/05/2003 at 12:33
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System.Collections;
-using System.Runtime.Remoting.Messaging;
-
-
-namespace System.Runtime.Remoting.Channels {
-	public class SoapClientFormatterSinkProvider: IClientFormatterSinkProvider, 
-		IClientChannelSinkProvider 
-	{
-		private IClientChannelSinkProvider _nextClientChannelSinkProvider;
-		SoapCore _soapCore;
-		static string[] allowedProperties = new string [] { "includeVersions", "strictBinding" };
-		
-		public SoapClientFormatterSinkProvider() 
-		{
-			_soapCore = SoapCore.DefaultInstance;
-		}
-		
-		public SoapClientFormatterSinkProvider(IDictionary properties,
-		                                       ICollection providerData)
-		{
-			_soapCore = new SoapCore (this, properties, allowedProperties);
-		}
-		
-		public IClientChannelSinkProvider Next 
-		{
-			get { return _nextClientChannelSinkProvider;}
-			set { _nextClientChannelSinkProvider = value;}
-		}
-		
-		public IClientChannelSink CreateSink( IChannelSender channel, 
-		                                             string url, 
-		                                             object remoteChannelData)
-		{
-			IClientChannelSink _nextSink = _nextClientChannelSinkProvider.CreateSink(channel, url, remoteChannelData);
-			
-			SoapClientFormatterSink scfs = new SoapClientFormatterSink(_nextSink); 
-			scfs.SoapCore = _soapCore;
-			return scfs;
-		}
-	}
-}
+// created on 20/05/2003 at 12:33
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System.Collections;
+using System.Runtime.Remoting.Messaging;
+
+
+namespace System.Runtime.Remoting.Channels {
+	public class SoapClientFormatterSinkProvider: IClientFormatterSinkProvider, 
+		IClientChannelSinkProvider 
+	{
+		private IClientChannelSinkProvider _nextClientChannelSinkProvider;
+		SoapCore _soapCore;
+		static string[] allowedProperties = new string [] { "includeVersions", "strictBinding" };
+		
+		public SoapClientFormatterSinkProvider() 
+		{
+			_soapCore = SoapCore.DefaultInstance;
+		}
+		
+		public SoapClientFormatterSinkProvider(IDictionary properties,
+		                                       ICollection providerData)
+		{
+			_soapCore = new SoapCore (this, properties, allowedProperties);
+		}
+		
+		public IClientChannelSinkProvider Next 
+		{
+			get { return _nextClientChannelSinkProvider;}
+			set { _nextClientChannelSinkProvider = value;}
+		}
+		
+		public IClientChannelSink CreateSink( IChannelSender channel, 
+		                                             string url, 
+		                                             object remoteChannelData)
+		{
+			IClientChannelSink _nextSink = _nextClientChannelSinkProvider.CreateSink(channel, url, remoteChannelData);
+			
+			SoapClientFormatterSink scfs = new SoapClientFormatterSink(_nextSink); 
+			scfs.SoapCore = _soapCore;
+			return scfs;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapMessageFormatter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapMessageFormatter.cs
@@ -1,426 +1,426 @@
-// created on 03/04/2003 at 14:09
-// 
-// System.Runtime.Remoting.Channels.SoapMessageFormatter
-//
-// Author:	Jean-Marc Andre (jean-marc.andre@polymtl.ca)
-//
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Reflection;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-
-
-
-namespace System.Runtime.Remoting.Channels {
-	enum RemMessageType {
-		MethodCall, MethodResponse, ServerFault, NotRecognize
-	}
-	
-	internal class SoapMessageFormatter {
-		private static FieldInfo _serverFaultExceptionField;
-		private Type _serverType;
-		private MethodInfo _methodCallInfo;
-		private ParameterInfo[] _methodCallParameters;
-		private string _xmlNamespace;
-		
-		static SoapMessageFormatter() {
-			// Get the ServerFault exception field FieldInfo that
-			// will be used later if an exception occurs on the server
-			MemberInfo[] mi = FormatterServices.GetSerializableMembers(typeof(ServerFault), new StreamingContext(StreamingContextStates.All));
-			FieldInfo fi;
-			for(int i = 0; i < mi.Length; i++){
-				fi = mi[i] as FieldInfo;
-				if(fi != null && fi.FieldType == typeof(Exception)){
-					_serverFaultExceptionField = fi; 
-				}
-			}
-			
-		}
-		
-		internal SoapMessageFormatter() {
-			
-		}
-		
-		internal IMessage FormatFault (SoapFault fault, IMethodCallMessage mcm)
-		{
-			ServerFault sf = fault.Detail as ServerFault;
-			Exception e = null;
-			
-			if (sf != null) {
-				if(_serverFaultExceptionField != null)
-					e = (Exception) _serverFaultExceptionField.GetValue(sf);
-			}
-			if (e == null)
-				e = new RemotingException (fault.FaultString);
-
-			return new ReturnMessage((System.Exception)e, mcm);
-		}
-		
-		// used by the client
-		internal IMessage FormatResponse(ISoapMessage soapMsg, IMethodCallMessage mcm) 
-		{
-			IMessage rtnMsg;
-			
-			if(soapMsg.MethodName == "Fault") {
-				// an exception was thrown by the server
-				Exception e = new SerializationException();
-				int i = Array.IndexOf(soapMsg.ParamNames, "detail");
-				if(_serverFaultExceptionField != null)
-					// todo: revue this 'cause it's not safe
-					e = (Exception) _serverFaultExceptionField.GetValue(
-							soapMsg.ParamValues[i]);
-				
-				rtnMsg = new ReturnMessage((System.Exception)e, mcm);
-			}
-			else {
-				object rtnObject = null;
-				//RemMessageType messageType;
-				
-				// Get the output of the function if it is not *void*
-				if(_methodCallInfo.ReturnType != typeof(void)){
-					int index = Array.IndexOf(soapMsg.ParamNames, "return");
-					rtnObject = soapMsg.ParamValues[index];
-					if(rtnObject is IConvertible) 
-						rtnObject = Convert.ChangeType(
-								rtnObject, 
-								_methodCallInfo.ReturnType);
-				}
-				
-				object[] outParams = new object [_methodCallParameters.Length];
-				int n=0;
-				
-				// check if there are *out* parameters
-				foreach(ParameterInfo paramInfo in _methodCallParameters) {
-					
-					if(paramInfo.ParameterType.IsByRef || paramInfo.IsOut) {
-						int index = Array.IndexOf(soapMsg.ParamNames, paramInfo.Name);
-						object outParam = soapMsg.ParamValues[index];
-						if(outParam is IConvertible)
-							outParam = Convert.ChangeType (outParam, paramInfo.ParameterType.GetElementType());
-						outParams[n] = outParam;
-					}
-					else
-						outParams [n] = null;
-					n++;
-				}
-				
-				Header[] headers = new Header [2 + (soapMsg.Headers != null ? soapMsg.Headers.Length : 0)];
-				headers [0] = new Header ("__Return", rtnObject);
-				headers [1] = new Header ("__OutArgs", outParams);
-				
-				if (soapMsg.Headers != null)
-					soapMsg.Headers.CopyTo (headers, 2);
-					
-				rtnMsg = new MethodResponse (headers, mcm);
-			}
-			return rtnMsg;
-		}
-		
-		// used by the client
-		internal SoapMessage BuildSoapMessageFromMethodCall(
-				IMethodCallMessage mcm,
-				out ITransportHeaders requestHeaders)
-		{
-			
-			requestHeaders = new TransportHeaders();
-			SoapMessage soapMsg = new SoapMessage();
-
-			GetInfoFromMethodCallMessage(mcm);
-
-			// Format the SoapMessage that will be used to create the RPC
-			soapMsg.MethodName = mcm.MethodName;
-			//int count = mcm.ArgCount;
-			ArrayList paramNames = new ArrayList(_methodCallParameters.Length);
-			ArrayList paramTypes = new ArrayList(_methodCallParameters.Length);
-			ArrayList paramValues = new ArrayList(_methodCallParameters.Length);
-			
-			// Add the function parameters to the SoapMessage class
-			foreach(ParameterInfo paramInfo in _methodCallParameters) {
-				if (!(paramInfo.IsOut && paramInfo.ParameterType.IsByRef)) {
-					Type t = paramInfo.ParameterType;
-					if (t.IsByRef) t = t.GetElementType ();
-					paramNames.Add(paramInfo.Name);
-					paramTypes.Add(t);
-					paramValues.Add(mcm.Args[paramInfo.Position]);
-				}
-			}			
-			soapMsg.ParamNames = (string[]) paramNames.ToArray(typeof(string));
-			soapMsg.ParamTypes = (Type[]) paramTypes.ToArray(typeof(Type));
-			soapMsg.ParamValues = (object[]) paramValues.ToArray(typeof(object));
-			soapMsg.XmlNameSpace = SoapServices.GetXmlNamespaceForMethodCall(_methodCallInfo);
-			soapMsg.Headers = BuildMessageHeaders (mcm);
-
-			// Format the transport headers
-			requestHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
-			requestHeaders["SOAPAction"] = "\""+
-				SoapServices.GetSoapActionFromMethodBase(_methodCallInfo)+"\""; 
-			requestHeaders[CommonTransportKeys.RequestUri] = mcm.Uri;
-			
-			return soapMsg;
-			
-		}
-		
-		// used by the server
-		internal IMessage BuildMethodCallFromSoapMessage(SoapMessage soapMessage, string uri) 
-		{
-			ArrayList headersList = new ArrayList();
-			Type[] signature = null;
-			
-			headersList.Add(new Header("__Uri", uri));
-			headersList.Add(new Header("__MethodName", soapMessage.MethodName));
-			string typeNamespace, assemblyName;
-
-			if (!SoapServices.DecodeXmlNamespaceForClrTypeNamespace(soapMessage.XmlNameSpace, out typeNamespace, out assemblyName))
-				throw new RemotingException ("Could not decode SoapMessage");
-
-			// Note that we don't need to validate the type in
-			// this place because MethodCall will do it anyway.
-
-			if (assemblyName == null) // corlib
-				_serverType = Type.GetType (typeNamespace, true);
-			else
-				_serverType = Type.GetType (typeNamespace + ", " + assemblyName, true);
-
-			headersList.Add(new Header("__TypeName", _serverType.FullName, false));
-			
-			if (soapMessage.Headers != null) {
-				foreach (Header h in soapMessage.Headers) {
-					headersList.Add (h);
-					if (h.Name == "__MethodSignature")
-						signature = (Type[]) h.Value;
-				}
-			}
-			
-			_xmlNamespace = soapMessage.XmlNameSpace;
-			//RemMessageType messageType;
-			
-			BindingFlags bflags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
-			
-			if (signature == null)
-				_methodCallInfo = _serverType.GetMethod(soapMessage.MethodName, bflags); 
-			else
-				_methodCallInfo = _serverType.GetMethod(soapMessage.MethodName, bflags, null, signature, null);
-				
-			if (_methodCallInfo == null && (soapMessage.MethodName == "FieldSetter" || soapMessage.MethodName == "FieldGetter"))
-				_methodCallInfo = typeof(object).GetMethod (soapMessage.MethodName, bflags);
-
-			// the *out* parameters aren't serialized
-			// have to add them here
-			_methodCallParameters = _methodCallInfo.GetParameters();
-			object[] args = new object[_methodCallParameters.Length];
-			int sn = 0;
-			for (int n=0; n<_methodCallParameters.Length; n++)
-			{
-				ParameterInfo paramInfo = _methodCallParameters [n];
-				Type paramType = (paramInfo.ParameterType.IsByRef ? paramInfo.ParameterType.GetElementType() : paramInfo.ParameterType);
-
-				if (paramInfo.IsOut && paramInfo.ParameterType.IsByRef) {
-					args [n] = GetNullValue (paramType);
-				}
-				else{
-					object val = soapMessage.ParamValues[sn++];
-					if(val is IConvertible) 
-						args [n] = Convert.ChangeType (val, paramType);
-					else
-						args [n] = val;
-				}
-			}
-			
-			headersList.Add(new Header("__Args", args, false));
-						
-			Header[] headers = (Header[])headersList.ToArray(typeof(Header));
-
-			// build the MethodCall from the headers
-			MethodCall mthCall = new MethodCall(headers);
-			return (IMessage)mthCall;
-		}
-		
-		// used by the server
-		internal object BuildSoapMessageFromMethodResponse(IMethodReturnMessage mrm, out ITransportHeaders responseHeaders)
-		{
-			responseHeaders = new TransportHeaders();
-
-			if(mrm.Exception == null) {
-				// *normal* function return
-				
-				SoapMessage soapMessage = new SoapMessage();
-				
-				// fill the transport headers
-				responseHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
-
-				// build the SoapMessage
-				ArrayList paramNames = new ArrayList();
-				ArrayList paramValues = new ArrayList();
-				ArrayList paramTypes = new ArrayList();
-				soapMessage.MethodName = mrm.MethodName+"Response";
-				
-				Type retType = ((MethodInfo)mrm.MethodBase).ReturnType;
-				
-				if(retType != typeof(void)) {
-					paramNames.Add("return");
-					paramValues.Add(mrm.ReturnValue);
-					if (mrm.ReturnValue != null)
-						paramTypes.Add(mrm.ReturnValue.GetType());
-					else
-						paramTypes.Add(retType);
-				}
-				
-				for(int i = 0; i < mrm.OutArgCount; i++){
-					paramNames.Add(mrm.GetOutArgName(i));
-					paramValues.Add(mrm.GetOutArg(i));
-					if(mrm.GetOutArg(i) != null) paramTypes.Add(mrm.GetOutArg(i).GetType());
-				}
-				soapMessage.ParamNames = (string[]) paramNames.ToArray(typeof(string));
-				soapMessage.ParamValues = (object[]) paramValues.ToArray(typeof(object));
-				soapMessage.ParamTypes = (Type[]) paramTypes.ToArray(typeof(Type));
-				soapMessage.XmlNameSpace = _xmlNamespace;
-				soapMessage.Headers = BuildMessageHeaders (mrm);
-				return soapMessage;
-			}
-			else {
-				// an Exception was thrown while executing the function
-				responseHeaders["__HttpStatusCode"] = "500";
-				responseHeaders["__HttpReasonPhrase"] = "Bad Request";
-				// fill the transport headers
-				responseHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
-				ServerFault serverFault = CreateServerFault(mrm.Exception);
-				return new SoapFault("Server", String.Format(" **** {0} - {1}", mrm.Exception.GetType().ToString(), mrm.Exception.Message), null, serverFault);
-			}
-		}
-		
-		internal SoapMessage CreateSoapMessage (bool isRequest)
-		{
-			if (isRequest) return new SoapMessage ();
-			
-			int n = 0;
-			Type[] types = new Type [_methodCallParameters.Length + 1];
-			
-			if (_methodCallInfo.ReturnType != typeof(void)) {
-				types[0] = _methodCallInfo.ReturnType;
-				n++;
-			}
-				
-			foreach(ParameterInfo paramInfo in _methodCallParameters)
-			{
-				if (paramInfo.ParameterType.IsByRef || paramInfo.IsOut)
-				{
-					Type t = paramInfo.ParameterType;
-					if (t.IsByRef) t = t.GetElementType();
-					types [n++] = t;
-				}
-			}
-			SoapMessage sm = new SoapMessage ();
-			sm.ParamTypes = types;
-			return sm;
-		}
-		
-		// used by the server when an exception is thrown
-		// by the called function
-		internal ServerFault CreateServerFault(Exception e) {
-			// it's really strange here
-			// a ServerFault object has a private System.Exception member called *exception*
-			// (have a look at a MS Soap message when an exception occurs on the server)
-			// but there is not public .ctor with an Exception as parameter...????....
-			// (maybe an internal one). So I searched another way...
-			ServerFault sf = (ServerFault) FormatterServices.GetUninitializedObject(typeof(ServerFault));
-			MemberInfo[] mi = FormatterServices.GetSerializableMembers(typeof(ServerFault), new StreamingContext(StreamingContextStates.All));
-			
-			FieldInfo fi;
-			object[] mv = new object[mi.Length];
-			for(int i = 0; i < mi.Length; i++) {
-				fi = mi[i] as FieldInfo;
-				if(fi != null && fi.FieldType == typeof(Exception)) mv[i] = e;
-			}
-			sf = (ServerFault) FormatterServices.PopulateObjectMembers(sf, mi, mv);
-			
-			return sf;
-		}
-
-		internal void GetInfoFromMethodCallMessage (IMethodMessage mcm) {
-			_serverType = Type.GetType(mcm.TypeName, true);
-			_methodCallInfo = RemotingServices.GetMethodBaseFromMethodMessage (mcm) as MethodInfo;
-			_methodCallParameters = _methodCallInfo.GetParameters();
-		}	
-		
-		Header[] BuildMessageHeaders (IMethodMessage msg)
-		{
-			ArrayList headers = new ArrayList (1);
-			foreach (string key in msg.Properties.Keys) 
-			{
-				switch (key) {
-					case "__Uri":
-					case "__MethodName":
-					case "__TypeName":
-					case "__Args":
-					case "__OutArgs":
-					case "__Return":
-					case "__MethodSignature":
-					case "__CallContext":
-						continue;
-	
-					default:
-						object value = msg.Properties [key];
-						if (value != null)
-							headers.Add (new Header (key, value, false, "http://schemas.microsoft.com/clr/soap/messageProperties"));
-						break;
-				}
-			}
-			
-			if (RemotingServices.IsMethodOverloaded (msg))
-				headers.Add (new Header ("__MethodSignature", msg.MethodSignature, false, "http://schemas.microsoft.com/clr/soap/messageProperties"));
-			
-			if (msg.LogicalCallContext != null && msg.LogicalCallContext.HasInfo)
-				headers.Add (new Header ("__CallContext", msg.LogicalCallContext, false, "http://schemas.microsoft.com/clr/soap/messageProperties"));
-			
-			if (headers.Count == 0) return null;
-			return (Header[]) headers.ToArray (typeof(Header));
-		}
-		
-		object GetNullValue (Type paramType)
-		{
-			switch (Type.GetTypeCode (paramType))
-			{
-				case TypeCode.Boolean: return false;
-				case TypeCode.Byte: return (byte)0;
-				case TypeCode.Char: return '\0';
-				case TypeCode.Decimal: return (decimal)0;
-				case TypeCode.Double: return (double)0;
-				case TypeCode.Int16: return (short)0;
-				case TypeCode.Int32: return (int)0;
-				case TypeCode.Int64: return (long)0;
-				case TypeCode.SByte: return (sbyte)0;
-				case TypeCode.Single: return (float)0;
-				case TypeCode.UInt16: return (ushort)0;
-				case TypeCode.UInt32: return (uint)0;
-				case TypeCode.UInt64: return (ulong)0;
-				default: 
-					return null;
-			}
-		}
-	}
-}
+// created on 03/04/2003 at 14:09
+// 
+// System.Runtime.Remoting.Channels.SoapMessageFormatter
+//
+// Author:	Jean-Marc Andre (jean-marc.andre@polymtl.ca)
+//
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters;
+
+
+
+namespace System.Runtime.Remoting.Channels {
+	enum RemMessageType {
+		MethodCall, MethodResponse, ServerFault, NotRecognize
+	}
+	
+	internal class SoapMessageFormatter {
+		private static FieldInfo _serverFaultExceptionField;
+		private Type _serverType;
+		private MethodInfo _methodCallInfo;
+		private ParameterInfo[] _methodCallParameters;
+		private string _xmlNamespace;
+		
+		static SoapMessageFormatter() {
+			// Get the ServerFault exception field FieldInfo that
+			// will be used later if an exception occurs on the server
+			MemberInfo[] mi = FormatterServices.GetSerializableMembers(typeof(ServerFault), new StreamingContext(StreamingContextStates.All));
+			FieldInfo fi;
+			for(int i = 0; i < mi.Length; i++){
+				fi = mi[i] as FieldInfo;
+				if(fi != null && fi.FieldType == typeof(Exception)){
+					_serverFaultExceptionField = fi; 
+				}
+			}
+			
+		}
+		
+		internal SoapMessageFormatter() {
+			
+		}
+		
+		internal IMessage FormatFault (SoapFault fault, IMethodCallMessage mcm)
+		{
+			ServerFault sf = fault.Detail as ServerFault;
+			Exception e = null;
+			
+			if (sf != null) {
+				if(_serverFaultExceptionField != null)
+					e = (Exception) _serverFaultExceptionField.GetValue(sf);
+			}
+			if (e == null)
+				e = new RemotingException (fault.FaultString);
+
+			return new ReturnMessage((System.Exception)e, mcm);
+		}
+		
+		// used by the client
+		internal IMessage FormatResponse(ISoapMessage soapMsg, IMethodCallMessage mcm) 
+		{
+			IMessage rtnMsg;
+			
+			if(soapMsg.MethodName == "Fault") {
+				// an exception was thrown by the server
+				Exception e = new SerializationException();
+				int i = Array.IndexOf(soapMsg.ParamNames, "detail");
+				if(_serverFaultExceptionField != null)
+					// todo: revue this 'cause it's not safe
+					e = (Exception) _serverFaultExceptionField.GetValue(
+							soapMsg.ParamValues[i]);
+				
+				rtnMsg = new ReturnMessage((System.Exception)e, mcm);
+			}
+			else {
+				object rtnObject = null;
+				//RemMessageType messageType;
+				
+				// Get the output of the function if it is not *void*
+				if(_methodCallInfo.ReturnType != typeof(void)){
+					int index = Array.IndexOf(soapMsg.ParamNames, "return");
+					rtnObject = soapMsg.ParamValues[index];
+					if(rtnObject is IConvertible) 
+						rtnObject = Convert.ChangeType(
+								rtnObject, 
+								_methodCallInfo.ReturnType);
+				}
+				
+				object[] outParams = new object [_methodCallParameters.Length];
+				int n=0;
+				
+				// check if there are *out* parameters
+				foreach(ParameterInfo paramInfo in _methodCallParameters) {
+					
+					if(paramInfo.ParameterType.IsByRef || paramInfo.IsOut) {
+						int index = Array.IndexOf(soapMsg.ParamNames, paramInfo.Name);
+						object outParam = soapMsg.ParamValues[index];
+						if(outParam is IConvertible)
+							outParam = Convert.ChangeType (outParam, paramInfo.ParameterType.GetElementType());
+						outParams[n] = outParam;
+					}
+					else
+						outParams [n] = null;
+					n++;
+				}
+				
+				Header[] headers = new Header [2 + (soapMsg.Headers != null ? soapMsg.Headers.Length : 0)];
+				headers [0] = new Header ("__Return", rtnObject);
+				headers [1] = new Header ("__OutArgs", outParams);
+				
+				if (soapMsg.Headers != null)
+					soapMsg.Headers.CopyTo (headers, 2);
+					
+				rtnMsg = new MethodResponse (headers, mcm);
+			}
+			return rtnMsg;
+		}
+		
+		// used by the client
+		internal SoapMessage BuildSoapMessageFromMethodCall(
+				IMethodCallMessage mcm,
+				out ITransportHeaders requestHeaders)
+		{
+			
+			requestHeaders = new TransportHeaders();
+			SoapMessage soapMsg = new SoapMessage();
+
+			GetInfoFromMethodCallMessage(mcm);
+
+			// Format the SoapMessage that will be used to create the RPC
+			soapMsg.MethodName = mcm.MethodName;
+			//int count = mcm.ArgCount;
+			ArrayList paramNames = new ArrayList(_methodCallParameters.Length);
+			ArrayList paramTypes = new ArrayList(_methodCallParameters.Length);
+			ArrayList paramValues = new ArrayList(_methodCallParameters.Length);
+			
+			// Add the function parameters to the SoapMessage class
+			foreach(ParameterInfo paramInfo in _methodCallParameters) {
+				if (!(paramInfo.IsOut && paramInfo.ParameterType.IsByRef)) {
+					Type t = paramInfo.ParameterType;
+					if (t.IsByRef) t = t.GetElementType ();
+					paramNames.Add(paramInfo.Name);
+					paramTypes.Add(t);
+					paramValues.Add(mcm.Args[paramInfo.Position]);
+				}
+			}			
+			soapMsg.ParamNames = (string[]) paramNames.ToArray(typeof(string));
+			soapMsg.ParamTypes = (Type[]) paramTypes.ToArray(typeof(Type));
+			soapMsg.ParamValues = (object[]) paramValues.ToArray(typeof(object));
+			soapMsg.XmlNameSpace = SoapServices.GetXmlNamespaceForMethodCall(_methodCallInfo);
+			soapMsg.Headers = BuildMessageHeaders (mcm);
+
+			// Format the transport headers
+			requestHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
+			requestHeaders["SOAPAction"] = "\""+
+				SoapServices.GetSoapActionFromMethodBase(_methodCallInfo)+"\""; 
+			requestHeaders[CommonTransportKeys.RequestUri] = mcm.Uri;
+			
+			return soapMsg;
+			
+		}
+		
+		// used by the server
+		internal IMessage BuildMethodCallFromSoapMessage(SoapMessage soapMessage, string uri) 
+		{
+			ArrayList headersList = new ArrayList();
+			Type[] signature = null;
+			
+			headersList.Add(new Header("__Uri", uri));
+			headersList.Add(new Header("__MethodName", soapMessage.MethodName));
+			string typeNamespace, assemblyName;
+
+			if (!SoapServices.DecodeXmlNamespaceForClrTypeNamespace(soapMessage.XmlNameSpace, out typeNamespace, out assemblyName))
+				throw new RemotingException ("Could not decode SoapMessage");
+
+			// Note that we don't need to validate the type in
+			// this place because MethodCall will do it anyway.
+
+			if (assemblyName == null) // corlib
+				_serverType = Type.GetType (typeNamespace, true);
+			else
+				_serverType = Type.GetType (typeNamespace + ", " + assemblyName, true);
+
+			headersList.Add(new Header("__TypeName", _serverType.FullName, false));
+			
+			if (soapMessage.Headers != null) {
+				foreach (Header h in soapMessage.Headers) {
+					headersList.Add (h);
+					if (h.Name == "__MethodSignature")
+						signature = (Type[]) h.Value;
+				}
+			}
+			
+			_xmlNamespace = soapMessage.XmlNameSpace;
+			//RemMessageType messageType;
+			
+			BindingFlags bflags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
+			
+			if (signature == null)
+				_methodCallInfo = _serverType.GetMethod(soapMessage.MethodName, bflags); 
+			else
+				_methodCallInfo = _serverType.GetMethod(soapMessage.MethodName, bflags, null, signature, null);
+				
+			if (_methodCallInfo == null && (soapMessage.MethodName == "FieldSetter" || soapMessage.MethodName == "FieldGetter"))
+				_methodCallInfo = typeof(object).GetMethod (soapMessage.MethodName, bflags);
+
+			// the *out* parameters aren't serialized
+			// have to add them here
+			_methodCallParameters = _methodCallInfo.GetParameters();
+			object[] args = new object[_methodCallParameters.Length];
+			int sn = 0;
+			for (int n=0; n<_methodCallParameters.Length; n++)
+			{
+				ParameterInfo paramInfo = _methodCallParameters [n];
+				Type paramType = (paramInfo.ParameterType.IsByRef ? paramInfo.ParameterType.GetElementType() : paramInfo.ParameterType);
+
+				if (paramInfo.IsOut && paramInfo.ParameterType.IsByRef) {
+					args [n] = GetNullValue (paramType);
+				}
+				else{
+					object val = soapMessage.ParamValues[sn++];
+					if(val is IConvertible) 
+						args [n] = Convert.ChangeType (val, paramType);
+					else
+						args [n] = val;
+				}
+			}
+			
+			headersList.Add(new Header("__Args", args, false));
+						
+			Header[] headers = (Header[])headersList.ToArray(typeof(Header));
+
+			// build the MethodCall from the headers
+			MethodCall mthCall = new MethodCall(headers);
+			return (IMessage)mthCall;
+		}
+		
+		// used by the server
+		internal object BuildSoapMessageFromMethodResponse(IMethodReturnMessage mrm, out ITransportHeaders responseHeaders)
+		{
+			responseHeaders = new TransportHeaders();
+
+			if(mrm.Exception == null) {
+				// *normal* function return
+				
+				SoapMessage soapMessage = new SoapMessage();
+				
+				// fill the transport headers
+				responseHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
+
+				// build the SoapMessage
+				ArrayList paramNames = new ArrayList();
+				ArrayList paramValues = new ArrayList();
+				ArrayList paramTypes = new ArrayList();
+				soapMessage.MethodName = mrm.MethodName+"Response";
+				
+				Type retType = ((MethodInfo)mrm.MethodBase).ReturnType;
+				
+				if(retType != typeof(void)) {
+					paramNames.Add("return");
+					paramValues.Add(mrm.ReturnValue);
+					if (mrm.ReturnValue != null)
+						paramTypes.Add(mrm.ReturnValue.GetType());
+					else
+						paramTypes.Add(retType);
+				}
+				
+				for(int i = 0; i < mrm.OutArgCount; i++){
+					paramNames.Add(mrm.GetOutArgName(i));
+					paramValues.Add(mrm.GetOutArg(i));
+					if(mrm.GetOutArg(i) != null) paramTypes.Add(mrm.GetOutArg(i).GetType());
+				}
+				soapMessage.ParamNames = (string[]) paramNames.ToArray(typeof(string));
+				soapMessage.ParamValues = (object[]) paramValues.ToArray(typeof(object));
+				soapMessage.ParamTypes = (Type[]) paramTypes.ToArray(typeof(Type));
+				soapMessage.XmlNameSpace = _xmlNamespace;
+				soapMessage.Headers = BuildMessageHeaders (mrm);
+				return soapMessage;
+			}
+			else {
+				// an Exception was thrown while executing the function
+				responseHeaders["__HttpStatusCode"] = "500";
+				responseHeaders["__HttpReasonPhrase"] = "Bad Request";
+				// fill the transport headers
+				responseHeaders["Content-Type"] = "text/xml; charset=\"utf-8\"";
+				ServerFault serverFault = CreateServerFault(mrm.Exception);
+				return new SoapFault("Server", String.Format(" **** {0} - {1}", mrm.Exception.GetType().ToString(), mrm.Exception.Message), null, serverFault);
+			}
+		}
+		
+		internal SoapMessage CreateSoapMessage (bool isRequest)
+		{
+			if (isRequest) return new SoapMessage ();
+			
+			int n = 0;
+			Type[] types = new Type [_methodCallParameters.Length + 1];
+			
+			if (_methodCallInfo.ReturnType != typeof(void)) {
+				types[0] = _methodCallInfo.ReturnType;
+				n++;
+			}
+				
+			foreach(ParameterInfo paramInfo in _methodCallParameters)
+			{
+				if (paramInfo.ParameterType.IsByRef || paramInfo.IsOut)
+				{
+					Type t = paramInfo.ParameterType;
+					if (t.IsByRef) t = t.GetElementType();
+					types [n++] = t;
+				}
+			}
+			SoapMessage sm = new SoapMessage ();
+			sm.ParamTypes = types;
+			return sm;
+		}
+		
+		// used by the server when an exception is thrown
+		// by the called function
+		internal ServerFault CreateServerFault(Exception e) {
+			// it's really strange here
+			// a ServerFault object has a private System.Exception member called *exception*
+			// (have a look at a MS Soap message when an exception occurs on the server)
+			// but there is not public .ctor with an Exception as parameter...????....
+			// (maybe an internal one). So I searched another way...
+			ServerFault sf = (ServerFault) FormatterServices.GetUninitializedObject(typeof(ServerFault));
+			MemberInfo[] mi = FormatterServices.GetSerializableMembers(typeof(ServerFault), new StreamingContext(StreamingContextStates.All));
+			
+			FieldInfo fi;
+			object[] mv = new object[mi.Length];
+			for(int i = 0; i < mi.Length; i++) {
+				fi = mi[i] as FieldInfo;
+				if(fi != null && fi.FieldType == typeof(Exception)) mv[i] = e;
+			}
+			sf = (ServerFault) FormatterServices.PopulateObjectMembers(sf, mi, mv);
+			
+			return sf;
+		}
+
+		internal void GetInfoFromMethodCallMessage (IMethodMessage mcm) {
+			_serverType = Type.GetType(mcm.TypeName, true);
+			_methodCallInfo = RemotingServices.GetMethodBaseFromMethodMessage (mcm) as MethodInfo;
+			_methodCallParameters = _methodCallInfo.GetParameters();
+		}	
+		
+		Header[] BuildMessageHeaders (IMethodMessage msg)
+		{
+			ArrayList headers = new ArrayList (1);
+			foreach (string key in msg.Properties.Keys) 
+			{
+				switch (key) {
+					case "__Uri":
+					case "__MethodName":
+					case "__TypeName":
+					case "__Args":
+					case "__OutArgs":
+					case "__Return":
+					case "__MethodSignature":
+					case "__CallContext":
+						continue;
+	
+					default:
+						object value = msg.Properties [key];
+						if (value != null)
+							headers.Add (new Header (key, value, false, "http://schemas.microsoft.com/clr/soap/messageProperties"));
+						break;
+				}
+			}
+			
+			if (RemotingServices.IsMethodOverloaded (msg))
+				headers.Add (new Header ("__MethodSignature", msg.MethodSignature, false, "http://schemas.microsoft.com/clr/soap/messageProperties"));
+			
+			if (msg.LogicalCallContext != null && msg.LogicalCallContext.HasInfo)
+				headers.Add (new Header ("__CallContext", msg.LogicalCallContext, false, "http://schemas.microsoft.com/clr/soap/messageProperties"));
+			
+			if (headers.Count == 0) return null;
+			return (Header[]) headers.ToArray (typeof(Header));
+		}
+		
+		object GetNullValue (Type paramType)
+		{
+			switch (Type.GetTypeCode (paramType))
+			{
+				case TypeCode.Boolean: return false;
+				case TypeCode.Byte: return (byte)0;
+				case TypeCode.Char: return '\0';
+				case TypeCode.Decimal: return (decimal)0;
+				case TypeCode.Double: return (double)0;
+				case TypeCode.Int16: return (short)0;
+				case TypeCode.Int32: return (int)0;
+				case TypeCode.Int64: return (long)0;
+				case TypeCode.SByte: return (sbyte)0;
+				case TypeCode.Single: return (float)0;
+				case TypeCode.UInt16: return (ushort)0;
+				case TypeCode.UInt32: return (uint)0;
+				case TypeCode.UInt64: return (ulong)0;
+				default: 
+					return null;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapServerFormatterSink.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapServerFormatterSink.cs
@@ -1,217 +1,217 @@
-//
-// System.Runtime.Remoting.Channels.SoapServerFormatterSink.cs
-//
-// Authors: 	Duncan Mak (duncan@ximian.com)
-// 		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
-//
-// 2002 (C) Copyright, Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.IO;
-using System.Reflection;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.Serialization.Formatters.Soap;
-using System.Runtime.InteropServices;
-
-
-namespace System.Runtime.Remoting.Channels {
-
-	/// <summary>
-	//	The formatter sink that uses SoapFormatter
-	/// </summary>
-	// <remarks>
-	// 	The formatter sink deserializes the message from the channel sink
-	// 	and passes the result to the remoting infrastructure
-	// </remark>
-	// 	
-	public class SoapServerFormatterSink : IServerChannelSink, IChannelSinkBase
-	{
-		IServerChannelSink next_sink;
-		IChannelReceiver _receiver;
-		private SoapCore _soapCore = SoapCore.DefaultInstance;
-		
-		public SoapServerFormatterSink (SoapServerFormatterSink.Protocol protocol,
-						IServerChannelSink nextSink,
-						IChannelReceiver receiver)
-		{
-			this.next_sink = nextSink;
-			_receiver = receiver;
-		}
-
-		internal SoapCore SoapCore
-		{
-			get { return _soapCore; }
-			set { _soapCore = value; }
-		}
-		
-		/// <summary>
-		//	Gets the next channel sink in the channel sink chain
-		//  </summary>
-		/// <value>
-		//	The next channel sink in the sink chain
-		//  </value>
-		public IServerChannelSink NextChannelSink {
-			get {
-				return next_sink;
-			}
-		}
-
-		public IDictionary Properties {
-			get {
-				return null;
-			}
-		}
-
-		[ComVisible(false)]
-		public TypeFilterLevel TypeFilterLevel
-		{
-			get { return _soapCore.TypeFilterLevel; }
-			set 
-			{
-				IDictionary props = (IDictionary) ((ICloneable)_soapCore.Properties).Clone ();
-				props ["typeFilterLevel"] = value;
-				_soapCore = new SoapCore (this, props, SoapServerFormatterSinkProvider.AllowedProperties);
-			}
-		}
-
-		public void AsyncProcessResponse (IServerResponseChannelSinkStack sinkStack, object state,
-						  IMessage msg, ITransportHeaders headers, Stream stream)
-						  
-		{
-			ITransportHeaders responseHeaders = new TransportHeaders();
-
-			if(sinkStack != null) stream = sinkStack.GetResponseStream(msg, responseHeaders);
-			if(stream == null) stream = new MemoryStream();
-
-			SoapMessageFormatter soapMsgFormatter = (SoapMessageFormatter)state;
-
-			SoapMessage soapMessage = (SoapMessage) soapMsgFormatter.BuildSoapMessageFromMethodResponse((IMethodReturnMessage)msg, out responseHeaders);
-
-			_soapCore.Serializer.Serialize(stream, soapMessage, null);
-
-			if(stream is MemoryStream) stream.Position = 0;
-			sinkStack.AsyncProcessResponse (msg, responseHeaders, stream);
-		}
-
-		public Stream GetResponseStream (IServerResponseChannelSinkStack sinkStack, object state,
-						IMessage msg, ITransportHeaders headers)
-		{
-			// this method shouldn't be called
-			throw new NotSupportedException ();
-		}
-		
-		public ServerProcessing ProcessMessage (IServerChannelSinkStack sinkStack,
-							IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream,
-							out IMessage responseMsg, out ITransportHeaders responseHeaders, out Stream responseStream)
-		{
-			// Check whether the request was already processed by another
-			// formatter sink and pass the request to the next sink if so.
-			if (requestMsg != null)
-				return next_sink.ProcessMessage (sinkStack,
-								 requestMsg,
-								 requestHeaders,
-								 requestStream,
-								 out responseMsg,
-								 out responseHeaders,
-								 out responseStream);
-
-			// Check whether the request is suitable for this formatter
-			// and pass the request to the next sink if not.
-			// Note that a null content-type is handled as suitable,
-			// otherwise no other sink will be able to handle the request.
-			string contentType = requestHeaders["Content-Type"] as string;
-			if (contentType == null || !contentType.StartsWith ("text/xml") || requestHeaders["SOAPAction"] == null) {
-				return next_sink.ProcessMessage (sinkStack,
-					requestMsg,
-					requestHeaders,
-					requestStream,
-					out responseMsg,
-					out responseHeaders,
-					out responseStream);
-			}
-
-			responseMsg = null;
-			responseHeaders = null;
-			responseStream = null;
-
-			ServerProcessing sp;
-			SoapMessageFormatter soapMsgFormatter = new SoapMessageFormatter();
-			sinkStack.Push(this, soapMsgFormatter);
-
-			try {
-				string url = (string)requestHeaders[CommonTransportKeys.RequestUri];
-				string uri;
-				_receiver.Parse(url, out uri);
-				if(uri == null)	uri = url;
-				Type serverType = RemotingServices.GetServerTypeForUri(uri);
-				if (serverType == null) throw new RemotingException ("No receiver for uri " + uri);
-			
-				SoapFormatter fm = _soapCore.GetSafeDeserializer ();
-				SoapMessage soapMessage = soapMsgFormatter.CreateSoapMessage (true);
-				fm.TopObject = soapMessage;
-				fm.Deserialize(requestStream);
-
-				requestMsg = soapMsgFormatter.BuildMethodCallFromSoapMessage(soapMessage, uri);
-				
-				sp = next_sink.ProcessMessage(sinkStack, requestMsg, requestHeaders, null, out responseMsg, out responseHeaders, out responseStream);
-				
-				if(sp == ServerProcessing.Complete) {
-					if(responseMsg != null && responseStream == null) {
-
-						object rtnMessageObject = soapMsgFormatter.BuildSoapMessageFromMethodResponse((IMethodReturnMessage) responseMsg, out responseHeaders);
-						responseStream = new MemoryStream();
-						_soapCore.Serializer.Serialize(responseStream, rtnMessageObject);
-						responseStream.Position = 0;
-					}
-				}
-			}
-			catch(Exception e)
-			{
-				responseMsg = (IMethodReturnMessage)new ReturnMessage(e, (IMethodCallMessage)requestMsg);
-				object rtnMessageObject = soapMsgFormatter.BuildSoapMessageFromMethodResponse((IMethodReturnMessage) responseMsg, out responseHeaders);
-				responseStream = new MemoryStream();
-				_soapCore.Serializer.Serialize(responseStream, rtnMessageObject);
-				responseStream.Position = 0;
-				sp = ServerProcessing.Complete;
-			}
-
-			if (sp == ServerProcessing.Complete)
-				sinkStack.Pop(this);
-
-			return sp;
-			
-		}
-
-		[Serializable]
-		public enum Protocol
-		{
-			Http = 0,
-			Other = 1,
-		}
-	}
-
-}
+//
+// System.Runtime.Remoting.Channels.SoapServerFormatterSink.cs
+//
+// Authors: 	Duncan Mak (duncan@ximian.com)
+// 		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
+//
+// 2002 (C) Copyright, Ximian, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.IO;
+using System.Reflection;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters;
+using System.Runtime.Serialization.Formatters.Soap;
+using System.Runtime.InteropServices;
+
+
+namespace System.Runtime.Remoting.Channels {
+
+	/// <summary>
+	//	The formatter sink that uses SoapFormatter
+	/// </summary>
+	// <remarks>
+	// 	The formatter sink deserializes the message from the channel sink
+	// 	and passes the result to the remoting infrastructure
+	// </remark>
+	// 	
+	public class SoapServerFormatterSink : IServerChannelSink, IChannelSinkBase
+	{
+		IServerChannelSink next_sink;
+		IChannelReceiver _receiver;
+		private SoapCore _soapCore = SoapCore.DefaultInstance;
+		
+		public SoapServerFormatterSink (SoapServerFormatterSink.Protocol protocol,
+						IServerChannelSink nextSink,
+						IChannelReceiver receiver)
+		{
+			this.next_sink = nextSink;
+			_receiver = receiver;
+		}
+
+		internal SoapCore SoapCore
+		{
+			get { return _soapCore; }
+			set { _soapCore = value; }
+		}
+		
+		/// <summary>
+		//	Gets the next channel sink in the channel sink chain
+		//  </summary>
+		/// <value>
+		//	The next channel sink in the sink chain
+		//  </value>
+		public IServerChannelSink NextChannelSink {
+			get {
+				return next_sink;
+			}
+		}
+
+		public IDictionary Properties {
+			get {
+				return null;
+			}
+		}
+
+		[ComVisible(false)]
+		public TypeFilterLevel TypeFilterLevel
+		{
+			get { return _soapCore.TypeFilterLevel; }
+			set 
+			{
+				IDictionary props = (IDictionary) ((ICloneable)_soapCore.Properties).Clone ();
+				props ["typeFilterLevel"] = value;
+				_soapCore = new SoapCore (this, props, SoapServerFormatterSinkProvider.AllowedProperties);
+			}
+		}
+
+		public void AsyncProcessResponse (IServerResponseChannelSinkStack sinkStack, object state,
+						  IMessage msg, ITransportHeaders headers, Stream stream)
+						  
+		{
+			ITransportHeaders responseHeaders = new TransportHeaders();
+
+			if(sinkStack != null) stream = sinkStack.GetResponseStream(msg, responseHeaders);
+			if(stream == null) stream = new MemoryStream();
+
+			SoapMessageFormatter soapMsgFormatter = (SoapMessageFormatter)state;
+
+			SoapMessage soapMessage = (SoapMessage) soapMsgFormatter.BuildSoapMessageFromMethodResponse((IMethodReturnMessage)msg, out responseHeaders);
+
+			_soapCore.Serializer.Serialize(stream, soapMessage, null);
+
+			if(stream is MemoryStream) stream.Position = 0;
+			sinkStack.AsyncProcessResponse (msg, responseHeaders, stream);
+		}
+
+		public Stream GetResponseStream (IServerResponseChannelSinkStack sinkStack, object state,
+						IMessage msg, ITransportHeaders headers)
+		{
+			// this method shouldn't be called
+			throw new NotSupportedException ();
+		}
+		
+		public ServerProcessing ProcessMessage (IServerChannelSinkStack sinkStack,
+							IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream,
+							out IMessage responseMsg, out ITransportHeaders responseHeaders, out Stream responseStream)
+		{
+			// Check whether the request was already processed by another
+			// formatter sink and pass the request to the next sink if so.
+			if (requestMsg != null)
+				return next_sink.ProcessMessage (sinkStack,
+								 requestMsg,
+								 requestHeaders,
+								 requestStream,
+								 out responseMsg,
+								 out responseHeaders,
+								 out responseStream);
+
+			// Check whether the request is suitable for this formatter
+			// and pass the request to the next sink if not.
+			// Note that a null content-type is handled as suitable,
+			// otherwise no other sink will be able to handle the request.
+			string contentType = requestHeaders["Content-Type"] as string;
+			if (contentType == null || !contentType.StartsWith ("text/xml") || requestHeaders["SOAPAction"] == null) {
+				return next_sink.ProcessMessage (sinkStack,
+					requestMsg,
+					requestHeaders,
+					requestStream,
+					out responseMsg,
+					out responseHeaders,
+					out responseStream);
+			}
+
+			responseMsg = null;
+			responseHeaders = null;
+			responseStream = null;
+
+			ServerProcessing sp;
+			SoapMessageFormatter soapMsgFormatter = new SoapMessageFormatter();
+			sinkStack.Push(this, soapMsgFormatter);
+
+			try {
+				string url = (string)requestHeaders[CommonTransportKeys.RequestUri];
+				string uri;
+				_receiver.Parse(url, out uri);
+				if(uri == null)	uri = url;
+				Type serverType = RemotingServices.GetServerTypeForUri(uri);
+				if (serverType == null) throw new RemotingException ("No receiver for uri " + uri);
+			
+				SoapFormatter fm = _soapCore.GetSafeDeserializer ();
+				SoapMessage soapMessage = soapMsgFormatter.CreateSoapMessage (true);
+				fm.TopObject = soapMessage;
+				fm.Deserialize(requestStream);
+
+				requestMsg = soapMsgFormatter.BuildMethodCallFromSoapMessage(soapMessage, uri);
+				
+				sp = next_sink.ProcessMessage(sinkStack, requestMsg, requestHeaders, null, out responseMsg, out responseHeaders, out responseStream);
+				
+				if(sp == ServerProcessing.Complete) {
+					if(responseMsg != null && responseStream == null) {
+
+						object rtnMessageObject = soapMsgFormatter.BuildSoapMessageFromMethodResponse((IMethodReturnMessage) responseMsg, out responseHeaders);
+						responseStream = new MemoryStream();
+						_soapCore.Serializer.Serialize(responseStream, rtnMessageObject);
+						responseStream.Position = 0;
+					}
+				}
+			}
+			catch(Exception e)
+			{
+				responseMsg = (IMethodReturnMessage)new ReturnMessage(e, (IMethodCallMessage)requestMsg);
+				object rtnMessageObject = soapMsgFormatter.BuildSoapMessageFromMethodResponse((IMethodReturnMessage) responseMsg, out responseHeaders);
+				responseStream = new MemoryStream();
+				_soapCore.Serializer.Serialize(responseStream, rtnMessageObject);
+				responseStream.Position = 0;
+				sp = ServerProcessing.Complete;
+			}
+
+			if (sp == ServerProcessing.Complete)
+				sinkStack.Pop(this);
+
+			return sp;
+			
+		}
+
+		[Serializable]
+		public enum Protocol
+		{
+			Http = 0,
+			Other = 1,
+		}
+	}
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapServerFormatterSinkProvider.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting.Channels/SoapServerFormatterSinkProvider.cs
@@ -1,90 +1,90 @@
-//
-// System.Runtime.Remoting.Channels.SoapServerFormatterSinkProvider.cs
-//
-// Author: Rodrigo Moya (rodrigo@ximian.com)
-//         Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2002 (C) Copyright, Ximian, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.InteropServices;
-
-namespace System.Runtime.Remoting.Channels
-{
-	public class SoapServerFormatterSinkProvider :
-		IServerFormatterSinkProvider, IServerChannelSinkProvider
-	{
-		private IServerChannelSinkProvider _next;
-		SoapCore _soapCore;
-
-		internal static string[] AllowedProperties = new string [] { "includeVersions", "strictBinding", "typeFilterLevel" };
-
-		public SoapServerFormatterSinkProvider ()
-		{
-			_soapCore = SoapCore.DefaultInstance;
-		}
-
-		public SoapServerFormatterSinkProvider (IDictionary properties,
-							ICollection providerData)
-		{
-			_soapCore = new SoapCore (this, properties, AllowedProperties);
-		}
-
-		public IServerChannelSinkProvider Next
-		{
-			get { return _next;	}
-
-			set { _next = value; }
-		}
-
-		[ComVisible(false)]
-		public TypeFilterLevel TypeFilterLevel
-		{
-			get { return _soapCore.TypeFilterLevel; }
-			set 
-			{
-				IDictionary props = (IDictionary) ((ICloneable)_soapCore.Properties).Clone ();
-				props ["typeFilterLevel"] = value;
-				_soapCore = new SoapCore (this, props, AllowedProperties);
-			}
-		}
-
-		public IServerChannelSink CreateSink (IChannelReceiver channel)
-		{
-			IServerChannelSink chain = _next.CreateSink(channel);
-			SoapServerFormatterSink sinkFormatter = new SoapServerFormatterSink(SoapServerFormatterSink.Protocol.Http, chain, channel);
-			sinkFormatter.SoapCore = _soapCore;
-			
-			return sinkFormatter;
-		}
-
-		public void GetChannelData (IChannelDataStore channelData)
-		{
-			if(_next != null)
-				_next.GetChannelData(channelData);
-		}
-	}
-}
+//
+// System.Runtime.Remoting.Channels.SoapServerFormatterSinkProvider.cs
+//
+// Author: Rodrigo Moya (rodrigo@ximian.com)
+//         Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2002 (C) Copyright, Ximian, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.Runtime.Serialization.Formatters;
+using System.Runtime.InteropServices;
+
+namespace System.Runtime.Remoting.Channels
+{
+	public class SoapServerFormatterSinkProvider :
+		IServerFormatterSinkProvider, IServerChannelSinkProvider
+	{
+		private IServerChannelSinkProvider _next;
+		SoapCore _soapCore;
+
+		internal static string[] AllowedProperties = new string [] { "includeVersions", "strictBinding", "typeFilterLevel" };
+
+		public SoapServerFormatterSinkProvider ()
+		{
+			_soapCore = SoapCore.DefaultInstance;
+		}
+
+		public SoapServerFormatterSinkProvider (IDictionary properties,
+							ICollection providerData)
+		{
+			_soapCore = new SoapCore (this, properties, AllowedProperties);
+		}
+
+		public IServerChannelSinkProvider Next
+		{
+			get { return _next;	}
+
+			set { _next = value; }
+		}
+
+		[ComVisible(false)]
+		public TypeFilterLevel TypeFilterLevel
+		{
+			get { return _soapCore.TypeFilterLevel; }
+			set 
+			{
+				IDictionary props = (IDictionary) ((ICloneable)_soapCore.Properties).Clone ();
+				props ["typeFilterLevel"] = value;
+				_soapCore = new SoapCore (this, props, AllowedProperties);
+			}
+		}
+
+		public IServerChannelSink CreateSink (IChannelReceiver channel)
+		{
+			IServerChannelSink chain = _next.CreateSink(channel);
+			SoapServerFormatterSink sinkFormatter = new SoapServerFormatterSink(SoapServerFormatterSink.Protocol.Http, chain, channel);
+			sinkFormatter.SoapCore = _soapCore;
+			
+			return sinkFormatter;
+		}
+
+		public void GetChannelData (IChannelDataStore channelData)
+		{
+			if(_next != null)
+				_next.GetChannelData(channelData);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Test/BaseCalls.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Test/BaseCalls.cs
@@ -1,616 +1,616 @@
-//
-// MonoTests.Remoting.BaseCalls.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2003 (C) Copyright, Ximian, Inc.
-//
-
-using System;
-using System.IO;
-using System.Net;
-using System.Text;
-using System.Threading;
-using System.Collections;
-using System.Globalization;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Remoting.Lifetime;
-using System.Runtime.Remoting.Channels.Tcp;
-using System.Runtime.Remoting.Activation;
-using System.Runtime.Remoting.Contexts;
-using System.Runtime.InteropServices;
-using NUnit.Framework;
-
-namespace MonoTests.Remoting
-{
-	public abstract class BaseCallTest
-	{
-		IChannelSender chs;
-		string[] remoteUris;
-		CallsDomainServer server;
-		int remoteDomId;
-
-		[TestFixtureSetUp]
-		public void Run()
-		{
-			remoteDomId = CreateServer ();
-		}
-
-		[TestFixtureTearDown]
-		public void End ()
-		{
-			ShutdownServer ();
-		}
-
-		public static AppDomain CreateDomain (string friendlyName)
-		{
-			// return AppDomain.CreateDomain (friendlyName);
-			return AppDomain.CreateDomain (friendlyName, null, Directory.GetCurrentDirectory (), ".", false);
-		}
-
-		protected virtual int CreateServer ()
-		{
-			ChannelManager cm = CreateChannelManager ();
-			chs = cm.CreateClientChannel ();
-			ChannelServices.RegisterChannel (chs);
-
-			AppDomain domain = BaseCallTest.CreateDomain ("testdomain");
-			server = (CallsDomainServer) domain.CreateInstanceAndUnwrap(GetType().Assembly.FullName,"MonoTests.Remoting.CallsDomainServer");
-			remoteUris = server.Start (cm);
-			return server.GetDomId ();
-		}
-		
-		protected virtual void ShutdownServer ()
-		{
-			if (server != null) {
-				server.Stop ();
-				if (chs != null)
-					ChannelServices.UnregisterChannel (chs);
-			}
-		}
-
-		protected virtual RemoteObject CreateRemoteInstance ()
-		{
-			return (RemoteObject) Activator.GetObject (typeof(RemoteObject), remoteUris[0]);
-		}
-
-		protected virtual AbstractRemoteObject CreateRemoteAbstract ()
-		{
-			return (AbstractRemoteObject) Activator.GetObject (typeof(AbstractRemoteObject), remoteUris[1]);
-		}
-
-		protected virtual IRemoteObject CreateRemoteInterface ()
-		{
-			return (IRemoteObject) Activator.GetObject (typeof(IRemoteObject), remoteUris[2]);
-		}
-
-		public InstanceSurrogate InternalGetInstanceSurrogate ()
-		{
-			InstanceSurrogate s = GetInstanceSurrogate ();
-			s.RemoteObject = CreateRemoteInstance ();
-			return s;
-		}
-		
-		public AbstractSurrogate InternalGetAbstractSurrogate ()
-		{
-			AbstractSurrogate s = GetAbstractSurrogate ();
-			s.RemoteObject = CreateRemoteAbstract ();
-			return s;
-		}
-		
-		public InterfaceSurrogate InternalGetInterfaceSurrogate ()
-		{
-			InterfaceSurrogate s = GetInterfaceSurrogate ();
-			s.RemoteObject = CreateRemoteInterface ();
-			return s;
-		}
-
-		public abstract InstanceSurrogate GetInstanceSurrogate ();
-		public abstract AbstractSurrogate GetAbstractSurrogate ();
-		public abstract InterfaceSurrogate GetInterfaceSurrogate ();
-		
-		public virtual ChannelManager CreateChannelManager ()
-		{
-			return null;
-		}
-
-		//
-		// The tests
-		//
-
-		[Test]
-		public void TestInstanceSimple ()
-		{
-			RunTestSimple (InternalGetInstanceSurrogate());
-		}
-
-		[Test]
-		public void TestAbstractSimple ()
-		{
-			RunTestSimple (InternalGetAbstractSurrogate());
-		}
-
-		[Test]
-		public void TestInterfaceSimple ()
-		{
-			RunTestSimple (InternalGetInterfaceSurrogate());
-		}
-
-		[Test]
-		public void TestInstancePrimitiveParams ()
-		{
-			RunTestPrimitiveParams (InternalGetInstanceSurrogate());
-		}
-
-		[Test]
-		public void TestAbstractPrimitiveParams ()
-		{
-			RunTestPrimitiveParams (InternalGetAbstractSurrogate());
-		}
-
-		[Test]
-		public void TestInterfacePrimitiveParams ()
-		{
-			RunTestPrimitiveParams (InternalGetInterfaceSurrogate());
-		}
-
-		[Test]
-		public void TestInstancePrimitiveParamsInOut ()
-		{
-			RunTestPrimitiveParamsInOut (InternalGetInstanceSurrogate());
-		}
-
-		[Test]
-		public void TestAbstractPrimitiveParamsInOut ()
-		{
-			RunTestPrimitiveParamsInOut (InternalGetAbstractSurrogate());
-		}
-
-		[Test]
-		public void TestInterfacePrimitiveParamsInOut ()
-		{
-			RunTestPrimitiveParamsInOut (InternalGetInterfaceSurrogate());
-		}
-
-		[Test]
-		public void TestInstanceComplexParams ()
-		{
-			RunTestComplexParams (InternalGetInstanceSurrogate());
-		}
-
-		[Test]
-		public void TestAbstractComplexParams ()
-		{
-			RunTestComplexParams (InternalGetAbstractSurrogate());
-		}
-
-		[Test]
-		public void TestInterfaceComplexParams ()
-		{
-			RunTestComplexParams (InternalGetInterfaceSurrogate());
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		public void TestInstanceComplexParamsInOut ()
-		{
-			RunTestComplexParamsInOut (InternalGetInstanceSurrogate());
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		public void TestAbstractComplexParamsInOut ()
-		{
-			RunTestComplexParamsInOut (InternalGetAbstractSurrogate());
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		public void TestInterfaceComplexParamsInOut ()
-		{
-			RunTestComplexParamsInOut (InternalGetInterfaceSurrogate());
-		}
-
-		[Test]
-		public void TestInstanceProcessContextData ()
-		{
-			RunTestProcessContextData (InternalGetInstanceSurrogate());
-		}
-
-		[Test]
-		public void TestAbstractProcessContextData ()
-		{
-			RunTestProcessContextData (InternalGetAbstractSurrogate());
-		}
-
-		[Test]
-		public void TestInterfaceProcessContextData ()
-		{
-			RunTestProcessContextData (InternalGetInterfaceSurrogate());
-		}
-
-		//
-		// The tests runners
-		//
-
-		public void RunTestSimple (IRemoteObject testerSurrogate)
-		{
-			Assert.AreEqual (130772 + remoteDomId, testerSurrogate.Simple (), "ReturnValue");
-		}
-
-		public void RunTestPrimitiveParams (IRemoteObject testerSurrogate)
-		{
-			Assert.AreEqual ("11-22-L-SG@"+remoteDomId, testerSurrogate.PrimitiveParams (11, 22, 'L', "SG"), "ReturnValue");
-		}
-
-		public void RunTestPrimitiveParamsInOut (IRemoteObject testerSurrogate)
-		{
-			int a2, a1 = 9876543;
-			float b2, b1 = 82437.83f;
-			char c2, c1 = 's';
-			string d2, d1 = "asdASDzxcZXC";
-
-			string res = testerSurrogate.PrimitiveParamsInOut (ref a1, out a2, ref b1, out b2, 9821, ref c1, out c2, ref d1, out d2);
-
-			Assert.AreEqual ("9876543-82437.83-s-asdASDzxcZXC@" + remoteDomId, res, "ReturnValue");
-
-			Assert.AreEqual (12345678, a2, "a2");
-			Assert.AreEqual (53455.345f, b2, "b2");
-			Assert.AreEqual ('g', c2, "c2");
-			Assert.AreEqual ("sfARREG$5345DGDfgY7656gDFG>><<dasdasd", d2, "d2");
-
-			Assert.AreEqual (65748392, a1, "a1");
-			Assert.AreEqual (98395.654f, b1, "b1");
-			Assert.AreEqual ('l', c1, "c1");
-			Assert.AreEqual ("aasbasbdyhasbduybo234243", d1, "d1");
-		}
-
-		public void RunTestComplexParams (IRemoteObject testerSurrogate)
-		{
-			ArrayList list = new ArrayList ();
-			list.Add (new Complex (11,"first"));
-			Complex c = new Complex (22,"second");
-
-			Complex r = testerSurrogate.ComplexParams (list, c, "third");
-
-			Assert.IsNotNull (r, "ReturnValue is null");
-			Assert.IsNotNull (r.Child, "ReturnValue.Child is null");
-			Assert.IsNotNull (r.Child.Child, "ReturnValue.Child.Child is null");
-			
-			Assert.AreEqual (33, r.Id, "ReturnValue.Id");
-			Assert.AreEqual ("third@"+remoteDomId, r.Name, "ReturnValue.Name");
-			Assert.AreEqual (22, r.Child.Id, "ReturnValue.Child.Id");
-			Assert.AreEqual ("second", r.Child.Name, "ReturnValue.Child.Name");
-			Assert.AreEqual (11, r.Child.Child.Id, "ReturnValue.Child.Child.Id");
-			Assert.AreEqual ("first", r.Child.Child.Name, "ReturnValue.Child.Child.Name");
-		}
-
-		public void RunTestComplexParamsInOut (IRemoteObject testerSurrogate)
-		{
-			ArrayList list = new ArrayList ();
-			list.Add (new Complex (11,"first"));
-			list.Add (new Complex (22,"second"));
-			
-			byte[] bytes = new byte [100];
-			for (byte n=0; n<100; n++) bytes[n] = n;
-			StringBuilder sb = new StringBuilder ("hello from client");
-
-			Complex c;
-			Complex r = testerSurrogate.ComplexParamsInOut (ref list, out c, bytes, sb, "third");
-
-			Assert.IsNotNull (r, "ReturnValue is null");
-			Assert.IsNotNull (c, "c is null");
-			Assert.IsNotNull (list, "list is null");
-			Assert.IsTrue (list.Count == 3, "Invalid list count");
-			Assert.IsNotNull (list[0], "list[0] is null");
-			Assert.IsNotNull (list[1], "list[1] is null");
-			Assert.IsNotNull (list[2], "list[2] is null");
-			Assert.IsNotNull (bytes, "bytes is null");
-			Assert.IsNotNull (sb, "sb is null");
-			
-			Assert.AreEqual (33, r.Id, "ReturnValue.Id");
-			Assert.AreEqual ("third@"+remoteDomId, r.Name, "ReturnValue.Name");
-			Assert.AreEqual (33, c.Id, "c.Id");
-			Assert.AreEqual ("third@"+remoteDomId, c.Name, "c.Name");
-
-			Assert.AreEqual (33, ((Complex)list[2]).Id, "list[2].Id");
-			Assert.AreEqual ("third@"+remoteDomId, ((Complex)list[2]).Name, "list[2].Name");
-			Assert.AreEqual (22, ((Complex)list[1]).Id, "list[1].Id");
-			Assert.AreEqual ("second", ((Complex)list[1]).Name, "list[1].Name");
-			Assert.AreEqual (11, ((Complex)list[0]).Id, "list[0].Id");
-			Assert.AreEqual ("first", ((Complex)list[0]).Name, "list[0].Name");
-			
-			Assert.AreEqual ("hello from client", sb.ToString (), "sb");
-			for (int n=0; n<100; n++) 
-				Assert.AreEqual (n+1, bytes[n], "bytes["+n+"]");
-		}
-		
-		public void RunTestProcessContextData (IRemoteObject testerSurrogate)
-		{
-			CallContext.FreeNamedDataSlot ("clientData");
-			CallContext.FreeNamedDataSlot ("serverData");
-			CallContext.FreeNamedDataSlot ("mustNotPass");
-			
-			// First step
-
-			ContextData cdata = new ContextData ();
-			cdata.data = "hi from client";
-			cdata.id = 1123;
-			cdata.testStep = 1;
-			CallContext.SetData ("clientData", cdata);
-			CallContext.SetData ("mustNotPass", "more data");
-			
-			testerSurrogate.ProcessContextData ();
-			
-			cdata = CallContext.GetData ("clientData") as ContextData;
-			Assert.IsNotNull (cdata, "clientData is null");
-			Assert.AreEqual ("hi from client", cdata.data, "clientData.data");
-			Assert.AreEqual (1123, cdata.id, "clientData.id");
-			
-			cdata = CallContext.GetData ("serverData") as ContextData;
-			Assert.IsNotNull (cdata, "serverData is null");
-			Assert.AreEqual ("hi from server", cdata.data, "serverData.data");
-			Assert.AreEqual (3211, cdata.id, "serverData.id");
-			
-			string mdata = CallContext.GetData ("mustNotPass") as string;
-			Assert.IsNotNull (mdata, "mustNotPass is null");
-			Assert.AreEqual ("more data", mdata, "mustNotPass");
-			
-			// Second step. Test that exceptions return the call context.
-			
-			CallContext.FreeNamedDataSlot ("clientData");
-			CallContext.FreeNamedDataSlot ("serverData");
-			
-			cdata = new ContextData ();
-			cdata.data = "hi from client";
-			cdata.id = 1123;
-			cdata.testStep = 2;
-			CallContext.SetData ("clientData", cdata);
-			
-			try {
-				testerSurrogate.ProcessContextData ();
-				Assert.IsTrue (false, "Exception not thrown");
-			} catch (Exception ex) {
-				if (ex.InnerException != null)
-					ex = ex.InnerException;
-				if (ex.Message != "exception from server")
-					throw;
-			}
-			
-			cdata = CallContext.GetData ("clientData") as ContextData;
-			Assert.IsNotNull (cdata, "clientData is null (2)");
-			Assert.AreEqual ("hi from client", cdata.data, "clientData.data (2)");
-			Assert.AreEqual (1123, cdata.id, "clientData.id (2)");
-			
-			mdata = CallContext.GetData ("mustNotPass") as string;
-			Assert.IsNotNull (mdata, "mustNotPass is null");
-			Assert.AreEqual ("more data", mdata, "mustNotPass");
-		}
-	}
-
-	//
-	// The server running in the remote domain
-	//
-
-	class CallsDomainServer: MarshalByRefObject
-	{
-		IChannelReceiver ch;
-
-		public string[] Start(ChannelManager cm)
-		{
-			try
-			{
-				ch = cm.CreateServerChannel ();
-				ChannelServices.RegisterChannel ((IChannel)ch);
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (RemoteObject), "test1", WellKnownObjectMode.SingleCall);
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (RemoteObject), "test2", WellKnownObjectMode.SingleCall);
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (RemoteObject), "test3", WellKnownObjectMode.SingleCall);
-				string[] uris = new string[3];
-				uris[0] = ch.GetUrlsForUri ("test1")[0];
-				uris[1] = ch.GetUrlsForUri ("test2")[0];
-				uris[2] = ch.GetUrlsForUri ("test3")[0];
-				return uris;
-			}
-			catch (Exception ex)
-			{
-				Console.WriteLine (ex.ToString());
-				throw;
-			}
-		}
-
-		public void Stop ()
-		{
-			if (ch != null)
-				ChannelServices.UnregisterChannel (ch);
-		}
-
-		public int GetDomId ()
-		{
-			return Thread.GetDomainID();
-		}
-	}
-	
-	[Serializable]
-	public class ContextData : ILogicalThreadAffinative
-	{
-		public string data;
-		public int id;
-		public int testStep;
-	}
-
-	[Serializable]
-	public abstract class ChannelManager
-	{
-		public abstract IChannelSender CreateClientChannel ();
-		public abstract IChannelReceiver CreateServerChannel ();
-	}
-
-
-	//
-	// Test interface
-	//
-	public interface IRemoteObject
-	{
-		int Simple ();
-		string PrimitiveParams (int a, uint b, char c, string d);
-		string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
-		Complex ComplexParams (ArrayList a, Complex b, string c);
-		Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
-		void ProcessContextData ();
-	}
-
-	// Base classes for tester surrogates
-	
-	public abstract class InstanceSurrogate : IRemoteObject
-	{
-		public RemoteObject RemoteObject;
-		public abstract int Simple ();
-		public abstract string PrimitiveParams (int a, uint b, char c, string d);
-		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
-		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
-		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
-		public abstract void ProcessContextData ();
-	}
-	
-	public abstract class AbstractSurrogate : IRemoteObject
-	{
-		public AbstractRemoteObject RemoteObject;
-		public abstract int Simple ();
-		public abstract string PrimitiveParams (int a, uint b, char c, string d);
-		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
-		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
-		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
-		public abstract void ProcessContextData ();
-	}
-
-	public abstract class InterfaceSurrogate : IRemoteObject
-	{
-		public IRemoteObject RemoteObject;
-		public abstract int Simple ();
-		public abstract string PrimitiveParams (int a, uint b, char c, string d);
-		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
-		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
-		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
-		public abstract void ProcessContextData ();
-	}
-
-	
-	//
-	// Test abstract base class
-	//
-
-	public abstract class AbstractRemoteObject : MarshalByRefObject
-	{
-		public abstract int Simple ();
-		public abstract string PrimitiveParams (int a, uint b, char c, string d);
-		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
-		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
-		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
-		public abstract void ProcessContextData ();
-	}
-
-	//
-	// Test class
-	//
-	
-	public class RemoteObject : AbstractRemoteObject, IRemoteObject
-	{
-		int inc = 0;
-		
-		public override int Simple ()
-		{
-			return 130772 + Thread.GetDomainID();
-		}
-		
-		public int ReturnOne ()
-		{
-			return 1;
-		}
-		
-		public int Increment ()
-		{
-			return inc++;
-		}
-		
-		public override string PrimitiveParams (int a, uint b, char c, string d)
-		{
-			return "" + a + "-" + b + "-" + c + "-" + d + "@" + Thread.GetDomainID();
-		}
-
-		// declare an overload for bug #77191
-		public void PrimitiveParams ()
-		{
-		}
-
-		public override string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2)
-		{
-			string res = "" + a1 + "-" + b1.ToString(CultureInfo.InvariantCulture) + "-" + c1 + "-" + d1 + "@" + Thread.GetDomainID();
-			a2 = 12345678;
-			b2 = 53455.345f;
-			c2 = 'g';
-			d2 = "sfARREG$5345DGDfgY7656gDFG>><<dasdasd";
-			a1 = 65748392;
-			b1 = 98395.654f;
-			c1 = 'l';
-			d1 = "aasbasbdyhasbduybo234243";
-			return res;
-		}
-
-		public override Complex ComplexParams (ArrayList a, Complex b, string c)
-		{
-			Complex cp = new Complex (33,c+ "@" + Thread.GetDomainID());
-			cp.Child = b;
-			cp.Child.Child = (Complex)a[0];
-			return cp;
-		}
-
-		public override Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c)
-		{
-			b = new Complex (33,c+ "@" + Thread.GetDomainID());
-			a.Add (b);
-			for (byte n=0; n<100; n++) bytes[n] = (byte)(bytes[n] + 1);
-			sb.Append (" and from server");
-			return b;
-		}
-
-		public override void ProcessContextData ()
-		{
-			string mdata = CallContext.GetData ("mustNotPass") as string;
-			if (mdata != null)
-				throw new Exception ("mustNotPass is not null");
-			
-			ContextData cdata = CallContext.GetData ("clientData") as ContextData;
-			if (cdata == null) 
-				throw new Exception ("server: clientData is null");
-			if (cdata.data != "hi from client" || cdata.id != 1123)
-				throw new Exception ("server: clientData is not valid");
-			
-			if (cdata.testStep == 2)
-				throw new Exception ("exception from server");
-
-			if (cdata.testStep != 1)
-				throw new Exception ("invalid test step");
-				
-			cdata = new ContextData ();
-			cdata.data = "hi from server";
-			cdata.id = 3211;
-			CallContext.SetData ("serverData", cdata);
-		}
-	}
-
-	[Serializable]
-	public class Complex
-	{
-		public Complex (int id, string name)
-		{
-			Id = id;
-			Name = name;
-		}
-
-		public string Name;
-		public int Id;
-		public Complex Child;
-	}
-}
+//
+// MonoTests.Remoting.BaseCalls.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2003 (C) Copyright, Ximian, Inc.
+//
+
+using System;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Threading;
+using System.Collections;
+using System.Globalization;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Remoting.Lifetime;
+using System.Runtime.Remoting.Channels.Tcp;
+using System.Runtime.Remoting.Activation;
+using System.Runtime.Remoting.Contexts;
+using System.Runtime.InteropServices;
+using NUnit.Framework;
+
+namespace MonoTests.Remoting
+{
+	public abstract class BaseCallTest
+	{
+		IChannelSender chs;
+		string[] remoteUris;
+		CallsDomainServer server;
+		int remoteDomId;
+
+		[TestFixtureSetUp]
+		public void Run()
+		{
+			remoteDomId = CreateServer ();
+		}
+
+		[TestFixtureTearDown]
+		public void End ()
+		{
+			ShutdownServer ();
+		}
+
+		public static AppDomain CreateDomain (string friendlyName)
+		{
+			// return AppDomain.CreateDomain (friendlyName);
+			return AppDomain.CreateDomain (friendlyName, null, Directory.GetCurrentDirectory (), ".", false);
+		}
+
+		protected virtual int CreateServer ()
+		{
+			ChannelManager cm = CreateChannelManager ();
+			chs = cm.CreateClientChannel ();
+			ChannelServices.RegisterChannel (chs);
+
+			AppDomain domain = BaseCallTest.CreateDomain ("testdomain");
+			server = (CallsDomainServer) domain.CreateInstanceAndUnwrap(GetType().Assembly.FullName,"MonoTests.Remoting.CallsDomainServer");
+			remoteUris = server.Start (cm);
+			return server.GetDomId ();
+		}
+		
+		protected virtual void ShutdownServer ()
+		{
+			if (server != null) {
+				server.Stop ();
+				if (chs != null)
+					ChannelServices.UnregisterChannel (chs);
+			}
+		}
+
+		protected virtual RemoteObject CreateRemoteInstance ()
+		{
+			return (RemoteObject) Activator.GetObject (typeof(RemoteObject), remoteUris[0]);
+		}
+
+		protected virtual AbstractRemoteObject CreateRemoteAbstract ()
+		{
+			return (AbstractRemoteObject) Activator.GetObject (typeof(AbstractRemoteObject), remoteUris[1]);
+		}
+
+		protected virtual IRemoteObject CreateRemoteInterface ()
+		{
+			return (IRemoteObject) Activator.GetObject (typeof(IRemoteObject), remoteUris[2]);
+		}
+
+		public InstanceSurrogate InternalGetInstanceSurrogate ()
+		{
+			InstanceSurrogate s = GetInstanceSurrogate ();
+			s.RemoteObject = CreateRemoteInstance ();
+			return s;
+		}
+		
+		public AbstractSurrogate InternalGetAbstractSurrogate ()
+		{
+			AbstractSurrogate s = GetAbstractSurrogate ();
+			s.RemoteObject = CreateRemoteAbstract ();
+			return s;
+		}
+		
+		public InterfaceSurrogate InternalGetInterfaceSurrogate ()
+		{
+			InterfaceSurrogate s = GetInterfaceSurrogate ();
+			s.RemoteObject = CreateRemoteInterface ();
+			return s;
+		}
+
+		public abstract InstanceSurrogate GetInstanceSurrogate ();
+		public abstract AbstractSurrogate GetAbstractSurrogate ();
+		public abstract InterfaceSurrogate GetInterfaceSurrogate ();
+		
+		public virtual ChannelManager CreateChannelManager ()
+		{
+			return null;
+		}
+
+		//
+		// The tests
+		//
+
+		[Test]
+		public void TestInstanceSimple ()
+		{
+			RunTestSimple (InternalGetInstanceSurrogate());
+		}
+
+		[Test]
+		public void TestAbstractSimple ()
+		{
+			RunTestSimple (InternalGetAbstractSurrogate());
+		}
+
+		[Test]
+		public void TestInterfaceSimple ()
+		{
+			RunTestSimple (InternalGetInterfaceSurrogate());
+		}
+
+		[Test]
+		public void TestInstancePrimitiveParams ()
+		{
+			RunTestPrimitiveParams (InternalGetInstanceSurrogate());
+		}
+
+		[Test]
+		public void TestAbstractPrimitiveParams ()
+		{
+			RunTestPrimitiveParams (InternalGetAbstractSurrogate());
+		}
+
+		[Test]
+		public void TestInterfacePrimitiveParams ()
+		{
+			RunTestPrimitiveParams (InternalGetInterfaceSurrogate());
+		}
+
+		[Test]
+		public void TestInstancePrimitiveParamsInOut ()
+		{
+			RunTestPrimitiveParamsInOut (InternalGetInstanceSurrogate());
+		}
+
+		[Test]
+		public void TestAbstractPrimitiveParamsInOut ()
+		{
+			RunTestPrimitiveParamsInOut (InternalGetAbstractSurrogate());
+		}
+
+		[Test]
+		public void TestInterfacePrimitiveParamsInOut ()
+		{
+			RunTestPrimitiveParamsInOut (InternalGetInterfaceSurrogate());
+		}
+
+		[Test]
+		public void TestInstanceComplexParams ()
+		{
+			RunTestComplexParams (InternalGetInstanceSurrogate());
+		}
+
+		[Test]
+		public void TestAbstractComplexParams ()
+		{
+			RunTestComplexParams (InternalGetAbstractSurrogate());
+		}
+
+		[Test]
+		public void TestInterfaceComplexParams ()
+		{
+			RunTestComplexParams (InternalGetInterfaceSurrogate());
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		public void TestInstanceComplexParamsInOut ()
+		{
+			RunTestComplexParamsInOut (InternalGetInstanceSurrogate());
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		public void TestAbstractComplexParamsInOut ()
+		{
+			RunTestComplexParamsInOut (InternalGetAbstractSurrogate());
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		public void TestInterfaceComplexParamsInOut ()
+		{
+			RunTestComplexParamsInOut (InternalGetInterfaceSurrogate());
+		}
+
+		[Test]
+		public void TestInstanceProcessContextData ()
+		{
+			RunTestProcessContextData (InternalGetInstanceSurrogate());
+		}
+
+		[Test]
+		public void TestAbstractProcessContextData ()
+		{
+			RunTestProcessContextData (InternalGetAbstractSurrogate());
+		}
+
+		[Test]
+		public void TestInterfaceProcessContextData ()
+		{
+			RunTestProcessContextData (InternalGetInterfaceSurrogate());
+		}
+
+		//
+		// The tests runners
+		//
+
+		public void RunTestSimple (IRemoteObject testerSurrogate)
+		{
+			Assert.AreEqual (130772 + remoteDomId, testerSurrogate.Simple (), "ReturnValue");
+		}
+
+		public void RunTestPrimitiveParams (IRemoteObject testerSurrogate)
+		{
+			Assert.AreEqual ("11-22-L-SG@"+remoteDomId, testerSurrogate.PrimitiveParams (11, 22, 'L', "SG"), "ReturnValue");
+		}
+
+		public void RunTestPrimitiveParamsInOut (IRemoteObject testerSurrogate)
+		{
+			int a2, a1 = 9876543;
+			float b2, b1 = 82437.83f;
+			char c2, c1 = 's';
+			string d2, d1 = "asdASDzxcZXC";
+
+			string res = testerSurrogate.PrimitiveParamsInOut (ref a1, out a2, ref b1, out b2, 9821, ref c1, out c2, ref d1, out d2);
+
+			Assert.AreEqual ("9876543-82437.83-s-asdASDzxcZXC@" + remoteDomId, res, "ReturnValue");
+
+			Assert.AreEqual (12345678, a2, "a2");
+			Assert.AreEqual (53455.345f, b2, "b2");
+			Assert.AreEqual ('g', c2, "c2");
+			Assert.AreEqual ("sfARREG$5345DGDfgY7656gDFG>><<dasdasd", d2, "d2");
+
+			Assert.AreEqual (65748392, a1, "a1");
+			Assert.AreEqual (98395.654f, b1, "b1");
+			Assert.AreEqual ('l', c1, "c1");
+			Assert.AreEqual ("aasbasbdyhasbduybo234243", d1, "d1");
+		}
+
+		public void RunTestComplexParams (IRemoteObject testerSurrogate)
+		{
+			ArrayList list = new ArrayList ();
+			list.Add (new Complex (11,"first"));
+			Complex c = new Complex (22,"second");
+
+			Complex r = testerSurrogate.ComplexParams (list, c, "third");
+
+			Assert.IsNotNull (r, "ReturnValue is null");
+			Assert.IsNotNull (r.Child, "ReturnValue.Child is null");
+			Assert.IsNotNull (r.Child.Child, "ReturnValue.Child.Child is null");
+			
+			Assert.AreEqual (33, r.Id, "ReturnValue.Id");
+			Assert.AreEqual ("third@"+remoteDomId, r.Name, "ReturnValue.Name");
+			Assert.AreEqual (22, r.Child.Id, "ReturnValue.Child.Id");
+			Assert.AreEqual ("second", r.Child.Name, "ReturnValue.Child.Name");
+			Assert.AreEqual (11, r.Child.Child.Id, "ReturnValue.Child.Child.Id");
+			Assert.AreEqual ("first", r.Child.Child.Name, "ReturnValue.Child.Child.Name");
+		}
+
+		public void RunTestComplexParamsInOut (IRemoteObject testerSurrogate)
+		{
+			ArrayList list = new ArrayList ();
+			list.Add (new Complex (11,"first"));
+			list.Add (new Complex (22,"second"));
+			
+			byte[] bytes = new byte [100];
+			for (byte n=0; n<100; n++) bytes[n] = n;
+			StringBuilder sb = new StringBuilder ("hello from client");
+
+			Complex c;
+			Complex r = testerSurrogate.ComplexParamsInOut (ref list, out c, bytes, sb, "third");
+
+			Assert.IsNotNull (r, "ReturnValue is null");
+			Assert.IsNotNull (c, "c is null");
+			Assert.IsNotNull (list, "list is null");
+			Assert.IsTrue (list.Count == 3, "Invalid list count");
+			Assert.IsNotNull (list[0], "list[0] is null");
+			Assert.IsNotNull (list[1], "list[1] is null");
+			Assert.IsNotNull (list[2], "list[2] is null");
+			Assert.IsNotNull (bytes, "bytes is null");
+			Assert.IsNotNull (sb, "sb is null");
+			
+			Assert.AreEqual (33, r.Id, "ReturnValue.Id");
+			Assert.AreEqual ("third@"+remoteDomId, r.Name, "ReturnValue.Name");
+			Assert.AreEqual (33, c.Id, "c.Id");
+			Assert.AreEqual ("third@"+remoteDomId, c.Name, "c.Name");
+
+			Assert.AreEqual (33, ((Complex)list[2]).Id, "list[2].Id");
+			Assert.AreEqual ("third@"+remoteDomId, ((Complex)list[2]).Name, "list[2].Name");
+			Assert.AreEqual (22, ((Complex)list[1]).Id, "list[1].Id");
+			Assert.AreEqual ("second", ((Complex)list[1]).Name, "list[1].Name");
+			Assert.AreEqual (11, ((Complex)list[0]).Id, "list[0].Id");
+			Assert.AreEqual ("first", ((Complex)list[0]).Name, "list[0].Name");
+			
+			Assert.AreEqual ("hello from client", sb.ToString (), "sb");
+			for (int n=0; n<100; n++) 
+				Assert.AreEqual (n+1, bytes[n], "bytes["+n+"]");
+		}
+		
+		public void RunTestProcessContextData (IRemoteObject testerSurrogate)
+		{
+			CallContext.FreeNamedDataSlot ("clientData");
+			CallContext.FreeNamedDataSlot ("serverData");
+			CallContext.FreeNamedDataSlot ("mustNotPass");
+			
+			// First step
+
+			ContextData cdata = new ContextData ();
+			cdata.data = "hi from client";
+			cdata.id = 1123;
+			cdata.testStep = 1;
+			CallContext.SetData ("clientData", cdata);
+			CallContext.SetData ("mustNotPass", "more data");
+			
+			testerSurrogate.ProcessContextData ();
+			
+			cdata = CallContext.GetData ("clientData") as ContextData;
+			Assert.IsNotNull (cdata, "clientData is null");
+			Assert.AreEqual ("hi from client", cdata.data, "clientData.data");
+			Assert.AreEqual (1123, cdata.id, "clientData.id");
+			
+			cdata = CallContext.GetData ("serverData") as ContextData;
+			Assert.IsNotNull (cdata, "serverData is null");
+			Assert.AreEqual ("hi from server", cdata.data, "serverData.data");
+			Assert.AreEqual (3211, cdata.id, "serverData.id");
+			
+			string mdata = CallContext.GetData ("mustNotPass") as string;
+			Assert.IsNotNull (mdata, "mustNotPass is null");
+			Assert.AreEqual ("more data", mdata, "mustNotPass");
+			
+			// Second step. Test that exceptions return the call context.
+			
+			CallContext.FreeNamedDataSlot ("clientData");
+			CallContext.FreeNamedDataSlot ("serverData");
+			
+			cdata = new ContextData ();
+			cdata.data = "hi from client";
+			cdata.id = 1123;
+			cdata.testStep = 2;
+			CallContext.SetData ("clientData", cdata);
+			
+			try {
+				testerSurrogate.ProcessContextData ();
+				Assert.IsTrue (false, "Exception not thrown");
+			} catch (Exception ex) {
+				if (ex.InnerException != null)
+					ex = ex.InnerException;
+				if (ex.Message != "exception from server")
+					throw;
+			}
+			
+			cdata = CallContext.GetData ("clientData") as ContextData;
+			Assert.IsNotNull (cdata, "clientData is null (2)");
+			Assert.AreEqual ("hi from client", cdata.data, "clientData.data (2)");
+			Assert.AreEqual (1123, cdata.id, "clientData.id (2)");
+			
+			mdata = CallContext.GetData ("mustNotPass") as string;
+			Assert.IsNotNull (mdata, "mustNotPass is null");
+			Assert.AreEqual ("more data", mdata, "mustNotPass");
+		}
+	}
+
+	//
+	// The server running in the remote domain
+	//
+
+	class CallsDomainServer: MarshalByRefObject
+	{
+		IChannelReceiver ch;
+
+		public string[] Start(ChannelManager cm)
+		{
+			try
+			{
+				ch = cm.CreateServerChannel ();
+				ChannelServices.RegisterChannel ((IChannel)ch);
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (RemoteObject), "test1", WellKnownObjectMode.SingleCall);
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (RemoteObject), "test2", WellKnownObjectMode.SingleCall);
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (RemoteObject), "test3", WellKnownObjectMode.SingleCall);
+				string[] uris = new string[3];
+				uris[0] = ch.GetUrlsForUri ("test1")[0];
+				uris[1] = ch.GetUrlsForUri ("test2")[0];
+				uris[2] = ch.GetUrlsForUri ("test3")[0];
+				return uris;
+			}
+			catch (Exception ex)
+			{
+				Console.WriteLine (ex.ToString());
+				throw;
+			}
+		}
+
+		public void Stop ()
+		{
+			if (ch != null)
+				ChannelServices.UnregisterChannel (ch);
+		}
+
+		public int GetDomId ()
+		{
+			return Thread.GetDomainID();
+		}
+	}
+	
+	[Serializable]
+	public class ContextData : ILogicalThreadAffinative
+	{
+		public string data;
+		public int id;
+		public int testStep;
+	}
+
+	[Serializable]
+	public abstract class ChannelManager
+	{
+		public abstract IChannelSender CreateClientChannel ();
+		public abstract IChannelReceiver CreateServerChannel ();
+	}
+
+
+	//
+	// Test interface
+	//
+	public interface IRemoteObject
+	{
+		int Simple ();
+		string PrimitiveParams (int a, uint b, char c, string d);
+		string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
+		Complex ComplexParams (ArrayList a, Complex b, string c);
+		Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
+		void ProcessContextData ();
+	}
+
+	// Base classes for tester surrogates
+	
+	public abstract class InstanceSurrogate : IRemoteObject
+	{
+		public RemoteObject RemoteObject;
+		public abstract int Simple ();
+		public abstract string PrimitiveParams (int a, uint b, char c, string d);
+		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
+		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
+		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
+		public abstract void ProcessContextData ();
+	}
+	
+	public abstract class AbstractSurrogate : IRemoteObject
+	{
+		public AbstractRemoteObject RemoteObject;
+		public abstract int Simple ();
+		public abstract string PrimitiveParams (int a, uint b, char c, string d);
+		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
+		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
+		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
+		public abstract void ProcessContextData ();
+	}
+
+	public abstract class InterfaceSurrogate : IRemoteObject
+	{
+		public IRemoteObject RemoteObject;
+		public abstract int Simple ();
+		public abstract string PrimitiveParams (int a, uint b, char c, string d);
+		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
+		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
+		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
+		public abstract void ProcessContextData ();
+	}
+
+	
+	//
+	// Test abstract base class
+	//
+
+	public abstract class AbstractRemoteObject : MarshalByRefObject
+	{
+		public abstract int Simple ();
+		public abstract string PrimitiveParams (int a, uint b, char c, string d);
+		public abstract string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2);
+		public abstract Complex ComplexParams (ArrayList a, Complex b, string c);
+		public abstract Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c);
+		public abstract void ProcessContextData ();
+	}
+
+	//
+	// Test class
+	//
+	
+	public class RemoteObject : AbstractRemoteObject, IRemoteObject
+	{
+		int inc = 0;
+		
+		public override int Simple ()
+		{
+			return 130772 + Thread.GetDomainID();
+		}
+		
+		public int ReturnOne ()
+		{
+			return 1;
+		}
+		
+		public int Increment ()
+		{
+			return inc++;
+		}
+		
+		public override string PrimitiveParams (int a, uint b, char c, string d)
+		{
+			return "" + a + "-" + b + "-" + c + "-" + d + "@" + Thread.GetDomainID();
+		}
+
+		// declare an overload for bug #77191
+		public void PrimitiveParams ()
+		{
+		}
+
+		public override string PrimitiveParamsInOut (ref int a1, out int a2, ref float b1, out float b2, int filler, ref char c1, out char c2, ref string d1, out string d2)
+		{
+			string res = "" + a1 + "-" + b1.ToString(CultureInfo.InvariantCulture) + "-" + c1 + "-" + d1 + "@" + Thread.GetDomainID();
+			a2 = 12345678;
+			b2 = 53455.345f;
+			c2 = 'g';
+			d2 = "sfARREG$5345DGDfgY7656gDFG>><<dasdasd";
+			a1 = 65748392;
+			b1 = 98395.654f;
+			c1 = 'l';
+			d1 = "aasbasbdyhasbduybo234243";
+			return res;
+		}
+
+		public override Complex ComplexParams (ArrayList a, Complex b, string c)
+		{
+			Complex cp = new Complex (33,c+ "@" + Thread.GetDomainID());
+			cp.Child = b;
+			cp.Child.Child = (Complex)a[0];
+			return cp;
+		}
+
+		public override Complex ComplexParamsInOut (ref ArrayList a, out Complex b, [In,Out] byte[] bytes, [In,Out] StringBuilder sb, string c)
+		{
+			b = new Complex (33,c+ "@" + Thread.GetDomainID());
+			a.Add (b);
+			for (byte n=0; n<100; n++) bytes[n] = (byte)(bytes[n] + 1);
+			sb.Append (" and from server");
+			return b;
+		}
+
+		public override void ProcessContextData ()
+		{
+			string mdata = CallContext.GetData ("mustNotPass") as string;
+			if (mdata != null)
+				throw new Exception ("mustNotPass is not null");
+			
+			ContextData cdata = CallContext.GetData ("clientData") as ContextData;
+			if (cdata == null) 
+				throw new Exception ("server: clientData is null");
+			if (cdata.data != "hi from client" || cdata.id != 1123)
+				throw new Exception ("server: clientData is not valid");
+			
+			if (cdata.testStep == 2)
+				throw new Exception ("exception from server");
+
+			if (cdata.testStep != 1)
+				throw new Exception ("invalid test step");
+				
+			cdata = new ContextData ();
+			cdata.data = "hi from server";
+			cdata.id = 3211;
+			CallContext.SetData ("serverData", cdata);
+		}
+	}
+
+	[Serializable]
+	public class Complex
+	{
+		public Complex (int id, string name)
+		{
+			Id = id;
+			Name = name;
+		}
+
+		public string Name;
+		public int Id;
+		public Complex Child;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Test/CallSeq.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Test/CallSeq.cs
@@ -1,101 +1,101 @@
-//
-// MonoTests.Remoting.CallSeq.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2003 (C) Copyright, Ximian, Inc.
-//
-
-using System;
-using System.Threading;
-using System.Collections;
-using NUnit.Framework;
-
-namespace MonoTests.Remoting
-{
-	public class CallSeq
-	{
-		static ArrayList calls = new ArrayList();
-		static int checkPos = 0;
-		static int writePos = 0;
-		static string name = "";
-		static ArrayList contexts = new ArrayList ();
-		static int domId = 1;
-
-		public static void Add (string msg)
-		{
-			writePos++;
-
-			msg = writePos.ToString ("000") + " (d" + CommonDomainId + ",c" + CommonContextId + ") " + msg;
-			calls.Add (msg);
-		}
-
-		public static int CommonContextId
-		{
-			get
-			{
-				int id = Thread.CurrentContext.ContextID;
-				int idc = contexts.IndexOf (id);
-				if (idc == -1)
-				{
-					idc = contexts.Count;
-					contexts.Add (id);
-				}
-				return idc;
-			}
-		}
-
-		public static int CommonDomainId
-		{
-			get { return domId; }
-			set { domId = value; }
-		}
-
-		public static void Init (string str)
-		{
-			calls = new ArrayList();
-			contexts = new ArrayList ();
-			name = str;
-			checkPos = 0;
-			writePos = 0;
-		}
-
-		public static void Check (string msg, int domain)
-		{
-			bool optional = false;
-			if (msg.StartsWith ("#"))
-			{
-				optional = true;
-				msg = msg.Substring (1);
-			}
-
-			if (msg[6].ToString() != domain.ToString()) return;
-
-			if (checkPos >= calls.Count)
-			{
-				if (!optional) Assert.Fail ("[" + name + "] Call check failed. Expected call not made: \"" + msg + "\"");
-				else return;
-			}
-
-			string call = (string) calls[checkPos++];
-
-			if (msg.Substring (3) != call.Substring (3))
-			{
-				if (optional) checkPos--;
-				else Assert.Fail ("[" + name + "] Call check failed in step " + (checkPos+1) + ". Expected \"" + msg + "\" found \"" + call + "\"");
-			}
-		}
-
-		public static void Check (string[] msgs, int domain)
-		{
-			foreach (string msg in msgs)
-				Check (msg, domain);
-		}
-
-		public static ArrayList Seq
-		{
-			get { return calls; }
-			set { calls = value; }
-		}
-	}
-}
+//
+// MonoTests.Remoting.CallSeq.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2003 (C) Copyright, Ximian, Inc.
+//
+
+using System;
+using System.Threading;
+using System.Collections;
+using NUnit.Framework;
+
+namespace MonoTests.Remoting
+{
+	public class CallSeq
+	{
+		static ArrayList calls = new ArrayList();
+		static int checkPos = 0;
+		static int writePos = 0;
+		static string name = "";
+		static ArrayList contexts = new ArrayList ();
+		static int domId = 1;
+
+		public static void Add (string msg)
+		{
+			writePos++;
+
+			msg = writePos.ToString ("000") + " (d" + CommonDomainId + ",c" + CommonContextId + ") " + msg;
+			calls.Add (msg);
+		}
+
+		public static int CommonContextId
+		{
+			get
+			{
+				int id = Thread.CurrentContext.ContextID;
+				int idc = contexts.IndexOf (id);
+				if (idc == -1)
+				{
+					idc = contexts.Count;
+					contexts.Add (id);
+				}
+				return idc;
+			}
+		}
+
+		public static int CommonDomainId
+		{
+			get { return domId; }
+			set { domId = value; }
+		}
+
+		public static void Init (string str)
+		{
+			calls = new ArrayList();
+			contexts = new ArrayList ();
+			name = str;
+			checkPos = 0;
+			writePos = 0;
+		}
+
+		public static void Check (string msg, int domain)
+		{
+			bool optional = false;
+			if (msg.StartsWith ("#"))
+			{
+				optional = true;
+				msg = msg.Substring (1);
+			}
+
+			if (msg[6].ToString() != domain.ToString()) return;
+
+			if (checkPos >= calls.Count)
+			{
+				if (!optional) Assert.Fail ("[" + name + "] Call check failed. Expected call not made: \"" + msg + "\"");
+				else return;
+			}
+
+			string call = (string) calls[checkPos++];
+
+			if (msg.Substring (3) != call.Substring (3))
+			{
+				if (optional) checkPos--;
+				else Assert.Fail ("[" + name + "] Call check failed in step " + (checkPos+1) + ". Expected \"" + msg + "\" found \"" + call + "\"");
+			}
+		}
+
+		public static void Check (string[] msgs, int domain)
+		{
+			foreach (string msg in msgs)
+				Check (msg, domain);
+		}
+
+		public static ArrayList Seq
+		{
+			get { return calls; }
+			set { calls = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Test/ContextHookAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Test/ContextHookAttribute.cs
@@ -1,171 +1,171 @@
-//
-// MonoTests.Remoting.ContextHookAttribute.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2003 (C) Copyright, Ximian, Inc.
-//
-
-using System;
-using System.Runtime.Remoting.Contexts;
-using System.Runtime.Remoting.Activation;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Remoting.Proxies;
-using System.Runtime.Remoting;
-using System.Threading;
-
-namespace MonoTests.Remoting
-{
-	[Serializable,AttributeUsage(AttributeTargets.Class)]
-	public class ContextHookAttribute: Attribute, IContextAttribute, IContextProperty, IContributeObjectSink, IContributeServerContextSink, IContributeEnvoySink, IContributeClientContextSink
-	{
-		bool newContext = false;
-
-		string id = "";
-		public ContextHookAttribute()
-		{
-		}
-
-		public ContextHookAttribute(string idp, bool newContext)
-		{
-			id = idp;
-			if (id != "") id += ".";
-			id += "d" + CallSeq.CommonDomainId;
-			this.newContext = newContext;
-		}
-
-		public override object TypeId
-		{
-
-			get { return "ContextHook"; }
-		}
-
-		bool IContextAttribute.IsContextOK(Context ctx, IConstructionCallMessage ctor)
-		{
-			CallSeq.Add("ContextHookAttribute(" + id + ").IsContextOK");
-			return !newContext;
-		}
-
-		public bool IsNewContextOK(Context ctx)
-		{
-			CallSeq.Add("ContextHookAttribute(" + id + ").IsNewContextOK");
-			return true;
-		}
-
-		public void Freeze(Context ctx)
-		{
-			CallSeq.Add("ContextHookAttribute(" + id + ").Freeze");
-		}
-
-		public String Name
-		{
-			get { return "ContextHook(" + id + ")"; }
-		}
-	
-
-		void IContextAttribute.GetPropertiesForNewContext(IConstructionCallMessage ctor)
-		{
-			CallSeq.Add("IContextAttribute(" + id + ").GetPropertiesForNewContext");
-			ctor.ContextProperties.Add(this);
-		}	
-
-		IMessageSink IContributeObjectSink.GetObjectSink(MarshalByRefObject o, IMessageSink next)
-		{
-			CallSeq.Add("IContributeObjectSink(" + id + ").GetObjectSink");
-			return new GenericMessageSink(o,next,"ObjectSink(" + id + ")");
-		}
-		
-		IMessageSink IContributeServerContextSink.GetServerContextSink(IMessageSink next)
-		{
-			CallSeq.Add("IContributeServerContextSink(" + id + ").GetServerContextSink");
-			return new GenericMessageSink(null,next,"ServerContextSink(" + id + ")");
-		}
-
-		IMessageSink IContributeEnvoySink.GetEnvoySink(MarshalByRefObject obj, IMessageSink nextSink)
-		{
-			CallSeq.Add("IContributeEnvoySink(" + id + ").GetEnvoySink");
-			return new GenericMessageSink(obj,nextSink,"EnvoySink(" + id + ")");
-		}
-
-		IMessageSink IContributeClientContextSink.GetClientContextSink (IMessageSink nextSink )
-		{
-			CallSeq.Add("IContributeClientContextSink(" + id + ").GetClientContextSink");
-			return new GenericMessageSink(null,nextSink,"ClientContextSink(" + id + ")");
-		}
-	}
-
-	[Serializable]
-	class GenericMessageSink: IMessageSink
-	{
-		IMessageSink _next;
-		string _type;
-
-		public GenericMessageSink(MarshalByRefObject obj, IMessageSink nextSink, string type)
-		{
-			_type = type;
-			_next = nextSink;
-		}
-
-		public IMessageSink NextSink 
-		{	
-			get { return _next; }
-		}
-
-		public IMessage SyncProcessMessage(IMessage imCall)
-		{
-			CallSeq.Add("--> " + _type + " SyncProcessMessage " + imCall.Properties["__MethodName"]);
-			IMessage ret = _next.SyncProcessMessage(imCall);
-			CallSeq.Add("<-- " + _type + " SyncProcessMessage " + imCall.Properties["__MethodName"]);
-			return ret;
-		}
-
-		public IMessageCtrl AsyncProcessMessage(IMessage im, IMessageSink ims)
-		{
-			CallSeq.Add("--> " + _type + " AsyncProcessMessage " + im.Properties["__MethodName"]);
-			IMessageCtrl ret = _next.AsyncProcessMessage(im, ims);
-			CallSeq.Add("<-- " + _type + " AsyncProcessMessage " + im.Properties["__MethodName"]);
-			return ret;
-		}
-	}
-
-	[Serializable]
-	class GenericDynamicSink: IDynamicMessageSink
-	{
-		string _name;
-		
-		public GenericDynamicSink (string name)
-		{
-			_name = name;
-		}
-
-		void IDynamicMessageSink.ProcessMessageFinish(IMessage replyMsg, bool bCliSide, bool bAsync)
-		{
-			CallSeq.Add("<-> " + _name + " DynamicSink Finish " + replyMsg.Properties["__MethodName"] + " client:" + bCliSide);
-		}
-
-		void IDynamicMessageSink.ProcessMessageStart(IMessage replyMsg, bool bCliSide, bool bAsync)
-		{
-			CallSeq.Add("<-> " + _name + " DynamicSink Start " + replyMsg.Properties["__MethodName"] + " client:" + bCliSide);
-		}
-	}
-
-	public class DynProperty: IDynamicProperty, IContributeDynamicSink
-	{
-		string _name;
-		public DynProperty (string name)
-		{
-			_name = name;
-		}
-
-		public string Name
-		{
-			get { return _name; }
-		}
-
-		public IDynamicMessageSink GetDynamicSink()
-		{
-			CallSeq.Add("IContributeDynamicSink(" + _name + ").GetDynamicSink");
-			return new GenericDynamicSink(_name);
-		}
-	}
-}
+//
+// MonoTests.Remoting.ContextHookAttribute.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2003 (C) Copyright, Ximian, Inc.
+//
+
+using System;
+using System.Runtime.Remoting.Contexts;
+using System.Runtime.Remoting.Activation;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting;
+using System.Threading;
+
+namespace MonoTests.Remoting
+{
+	[Serializable,AttributeUsage(AttributeTargets.Class)]
+	public class ContextHookAttribute: Attribute, IContextAttribute, IContextProperty, IContributeObjectSink, IContributeServerContextSink, IContributeEnvoySink, IContributeClientContextSink
+	{
+		bool newContext = false;
+
+		string id = "";
+		public ContextHookAttribute()
+		{
+		}
+
+		public ContextHookAttribute(string idp, bool newContext)
+		{
+			id = idp;
+			if (id != "") id += ".";
+			id += "d" + CallSeq.CommonDomainId;
+			this.newContext = newContext;
+		}
+
+		public override object TypeId
+		{
+
+			get { return "ContextHook"; }
+		}
+
+		bool IContextAttribute.IsContextOK(Context ctx, IConstructionCallMessage ctor)
+		{
+			CallSeq.Add("ContextHookAttribute(" + id + ").IsContextOK");
+			return !newContext;
+		}
+
+		public bool IsNewContextOK(Context ctx)
+		{
+			CallSeq.Add("ContextHookAttribute(" + id + ").IsNewContextOK");
+			return true;
+		}
+
+		public void Freeze(Context ctx)
+		{
+			CallSeq.Add("ContextHookAttribute(" + id + ").Freeze");
+		}
+
+		public String Name
+		{
+			get { return "ContextHook(" + id + ")"; }
+		}
+	
+
+		void IContextAttribute.GetPropertiesForNewContext(IConstructionCallMessage ctor)
+		{
+			CallSeq.Add("IContextAttribute(" + id + ").GetPropertiesForNewContext");
+			ctor.ContextProperties.Add(this);
+		}	
+
+		IMessageSink IContributeObjectSink.GetObjectSink(MarshalByRefObject o, IMessageSink next)
+		{
+			CallSeq.Add("IContributeObjectSink(" + id + ").GetObjectSink");
+			return new GenericMessageSink(o,next,"ObjectSink(" + id + ")");
+		}
+		
+		IMessageSink IContributeServerContextSink.GetServerContextSink(IMessageSink next)
+		{
+			CallSeq.Add("IContributeServerContextSink(" + id + ").GetServerContextSink");
+			return new GenericMessageSink(null,next,"ServerContextSink(" + id + ")");
+		}
+
+		IMessageSink IContributeEnvoySink.GetEnvoySink(MarshalByRefObject obj, IMessageSink nextSink)
+		{
+			CallSeq.Add("IContributeEnvoySink(" + id + ").GetEnvoySink");
+			return new GenericMessageSink(obj,nextSink,"EnvoySink(" + id + ")");
+		}
+
+		IMessageSink IContributeClientContextSink.GetClientContextSink (IMessageSink nextSink )
+		{
+			CallSeq.Add("IContributeClientContextSink(" + id + ").GetClientContextSink");
+			return new GenericMessageSink(null,nextSink,"ClientContextSink(" + id + ")");
+		}
+	}
+
+	[Serializable]
+	class GenericMessageSink: IMessageSink
+	{
+		IMessageSink _next;
+		string _type;
+
+		public GenericMessageSink(MarshalByRefObject obj, IMessageSink nextSink, string type)
+		{
+			_type = type;
+			_next = nextSink;
+		}
+
+		public IMessageSink NextSink 
+		{	
+			get { return _next; }
+		}
+
+		public IMessage SyncProcessMessage(IMessage imCall)
+		{
+			CallSeq.Add("--> " + _type + " SyncProcessMessage " + imCall.Properties["__MethodName"]);
+			IMessage ret = _next.SyncProcessMessage(imCall);
+			CallSeq.Add("<-- " + _type + " SyncProcessMessage " + imCall.Properties["__MethodName"]);
+			return ret;
+		}
+
+		public IMessageCtrl AsyncProcessMessage(IMessage im, IMessageSink ims)
+		{
+			CallSeq.Add("--> " + _type + " AsyncProcessMessage " + im.Properties["__MethodName"]);
+			IMessageCtrl ret = _next.AsyncProcessMessage(im, ims);
+			CallSeq.Add("<-- " + _type + " AsyncProcessMessage " + im.Properties["__MethodName"]);
+			return ret;
+		}
+	}
+
+	[Serializable]
+	class GenericDynamicSink: IDynamicMessageSink
+	{
+		string _name;
+		
+		public GenericDynamicSink (string name)
+		{
+			_name = name;
+		}
+
+		void IDynamicMessageSink.ProcessMessageFinish(IMessage replyMsg, bool bCliSide, bool bAsync)
+		{
+			CallSeq.Add("<-> " + _name + " DynamicSink Finish " + replyMsg.Properties["__MethodName"] + " client:" + bCliSide);
+		}
+
+		void IDynamicMessageSink.ProcessMessageStart(IMessage replyMsg, bool bCliSide, bool bAsync)
+		{
+			CallSeq.Add("<-> " + _name + " DynamicSink Start " + replyMsg.Properties["__MethodName"] + " client:" + bCliSide);
+		}
+	}
+
+	public class DynProperty: IDynamicProperty, IContributeDynamicSink
+	{
+		string _name;
+		public DynProperty (string name)
+		{
+			_name = name;
+		}
+
+		public string Name
+		{
+			get { return _name; }
+		}
+
+		public IDynamicMessageSink GetDynamicSink()
+		{
+			CallSeq.Add("IContributeDynamicSink(" + _name + ").GetDynamicSink");
+			return new GenericDynamicSink(_name);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Test/ContextsTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Test/ContextsTest.cs
@@ -1,1145 +1,1145 @@
-//
-// MonoTests.Remoting.ContextsTest.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2003 (C) Copyright, Ximian, Inc.
-//
-
-using System;
-using System.Net;
-using System.Threading;
-using System.Collections;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Lifetime;
-using System.Runtime.Remoting.Channels.Tcp;
-using System.Runtime.Remoting.Activation;
-using System.Runtime.Remoting.Contexts;
-using NUnit.Framework;
-
-namespace MonoTests.Remoting
-{
-	[TestFixture]
-	public class ContextsTest
-	{
-		TcpChannel ch;
-		
-		[TestFixtureSetUp]
-		public void Run()
-		{
-			CallSeq.CommonDomainId = 1;
-			Context.RegisterDynamicProperty (new DynProperty("global"), null, null);
-
-			ch = new TcpChannel(0);
-			ChannelServices.RegisterChannel (ch);
-		}
-
-		[TestFixtureTearDown]
-		public void End ()
-		{
-			Context.UnregisterDynamicProperty ("global", null, null);
-			if (ch != null)
-				ChannelServices.UnregisterChannel (ch);
-		}
-
-		[Test]
-		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
-		public void TestSameContext ()
-		{
-			CallSeq.Init("TestSameContext");
-			CallSeq.Add (">> TestSameContext");
-			CallSeq.Add (">> Creating instance");
-			ServerList list = new ServerList();
-			CallSeq.Add ("<< Creating instance");
-			RunTestObject (list);
-			CallSeq.Add ("<< TestSameContext");
-			CallSeq.Check (Checks.seqSameContext,1);
-		}
-
-		[Test]
-		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
-		public void TestNewContext ()
-		{
-			CallSeq.Init("TestNewContext");
-			CallSeq.Add (">> TestNewContext");
-			object[] at = new object[] { new ContextHookAttribute ("1",true)};
-			CallSeq.Add (">> Creating instance");
-			ServerList list = (ServerList) Activator.CreateInstance (typeof (ServerList),null,at);
-			CallSeq.Add ("<< Creating instance");
-			RunTestObject (list);
-			CallSeq.Add ("<< TestNewContext");
-			CallSeq.Check (Checks.seqNewContext,1);
-		}
-
-		[Test]
-		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
-		public void TestRemoteContext ()
-		{
-			AppDomain domain = BaseCallTest.CreateDomain ("test");
-			DomainServer server = (DomainServer) domain.CreateInstanceAndUnwrap(GetType().Assembly.FullName,"MonoTests.Remoting.DomainServer");
-			try
-			{
-				CallSeq.Init("TestRemoteContext");
-				CallSeq.Add (">> TestRemoteContext");
-				object[] at = new object[] { new ContextHookAttribute ("1",true), new UrlAttribute ("tcp://localhost:1122")};
-				CallSeq.Add (">> Creating instance");
-				ServerList list = (ServerList) Activator.CreateInstance (typeof (ServerList),null,at);
-				CallSeq.Add ("<< Creating instance");
-				RunTestObject (list);
-				CallSeq.Add ("<< TestRemoteContext");
-				CallSeq.Check (Checks.seqRemoteContext,1);
-
-				CallSeq.Init ("TestRemoteContext Server");
-				CallSeq.Seq = server.GetRemoteSeq ();
-				CallSeq.Check (Checks.seqRemoteContext,2);
-			}
-			catch (Exception ex)
-			{
-				Console.WriteLine (ex);
-				throw ex;
-			}
-			finally
-			{
-				server.Stop ();
-			}
-//			AppDomain.Unload (domain);
-		}
-
-		void RunTestObject (ServerList list)
-		{
-			DynProperty prop1 = new DynProperty("defcontext");
-			DynProperty prop2 = new DynProperty("proxy");
-
-			try
-			{
-				Context.RegisterDynamicProperty (prop1, null, Context.DefaultContext);
-				Context.RegisterDynamicProperty (prop2, list, null);
-
-				CallSeq.Add(">> Clear");
-				list.GetType().GetMethod ("Clear").Invoke (list, null);
-				CallSeq.Add("<< Clear");
-
-				CallSeq.Add(">> Set fields");
-				list.NumVal = 4;
-				list.StrVal = "hi";
-				CallSeq.Add("<< Set fields");
-
-				CallSeq.Add(">> Get fields");
-				int nv = list.NumVal;
-				string sv = list.StrVal;
-				CallSeq.Add("<< Get fields");
-				CallSeq.Add ("Get fields Result: " + nv + " / " + sv);
-
-				CallSeq.Add(">> ParameterTest1");
-				string b;
-				list.ParameterTest1 (112, out b);
-				CallSeq.Add("<< ParameterTest1");
-				CallSeq.Add("ParameterTest1 Result: " + b);
-
-				CallSeq.Add(">> ParameterTest2");
-				int bn;
-				list.ParameterTest2 (112, out bn);
-				CallSeq.Add("<< ParameterTest2");
-				CallSeq.Add("ParameterTest2 Result: " + bn);
-
-				// These are remote calls that return references to remote objects
-
-				CallSeq.Add (">> Creating two remote items");
-				ServerObject item0 = list.CreateItem ("S0", 33);
-
-				item0.SetValue (55);
-				list.Add (item0);
-
-				ServerObject item1 = list.NewItem ("S1");
-				item1.SetValue (111);
-				ServerObject item2 = list.NewItem ("S2");
-				item2.SetValue (222);
-				CallSeq.Add ("<< Creating two remote items");
-
-				// Two objects created in this client app
-
-				CallSeq.Add (">> Creating two client items");
-				ServerObject item3 = new ServerObject ("C1");
-				item3.SetValue (333);
-				ServerObject item4 = new ServerObject ("C2");
-				item4.SetValue (444);
-				CallSeq.Add ("<< Creating two client items");
-
-				// Object references passed to the remote list
-
-				CallSeq.Add (">> Adding items");
-				list.Add (item3);
-				list.Add (item4);
-				CallSeq.Add ("<< Adding items");
-
-				// This sums all values of the ServerObjects in the list. The server
-				// makes a remote call to this client to get the value of the
-				// objects created locally
-
-				CallSeq.Add (">> Processing items");
-				list.ProcessItems ();
-				CallSeq.Add ("<< Processing items");
-			}
-			catch (Exception ex)
-			{
-				Console.WriteLine ("ERR:" + ex.ToString());
-				throw;
-			}
-			
-			Context.UnregisterDynamicProperty ("defcontext", null, Context.DefaultContext);
-			Context.UnregisterDynamicProperty ("proxy", list, null);
-		}
-	}
-
-	class DomainServer: MarshalByRefObject
-	{
-		TcpChannel ch;
-		
-		public DomainServer()
-		{
-			CallSeq.CommonDomainId = 2;
-			try
-			{
-				ch = new TcpChannel(1122);
-				ChannelServices.RegisterChannel (ch);
-
-				RemotingConfiguration.RegisterActivatedServiceType (typeof (ServerList));
-				RemotingConfiguration.RegisterActivatedServiceType (typeof (ServerObject));
-			}
-			catch (Exception ex)
-			{
-				Console.WriteLine (ex.ToString());
-				throw;
-			}
-		}
-
-		public ArrayList GetRemoteSeq()
-		{
-			return CallSeq.Seq;
-		}
-
-		public void Stop ()
-		{
-			if (ch != null)
-				ChannelServices.UnregisterChannel (ch);
-		}
-	}
-
-	class Checks
-	{
-		public static string[] seqSameContext = 
-			{
-				"001 (d1,c0) >> TestSameContext",
-				"002 (d1,c0) >> Creating instance",
-				"003 (d1,c0) ContextHookAttribute(x.d1).IsContextOK",
-				"004 (d1,c0) List created",
-				"005 (d1,c0) << Creating instance",
-				"006 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
-				"007 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
-				"008 (d1,c0) >> Clear",
-				"009 (d1,c0) Clearing",
-				"010 (d1,c0) << Clear",
-				"011 (d1,c0) >> Set fields",
-				"012 (d1,c0) << Set fields",
-				"013 (d1,c0) >> Get fields",
-				"014 (d1,c0) << Get fields",
-				"015 (d1,c0) Get fields Result: 4 / hi",
-				"016 (d1,c0) >> ParameterTest1",
-				"017 (d1,c0) << ParameterTest1",
-				"018 (d1,c0) ParameterTest1 Result: adeu 112",
-				"019 (d1,c0) >> ParameterTest2",
-				"020 (d1,c0) << ParameterTest2",
-				"021 (d1,c0) ParameterTest2 Result: 113",
-				"022 (d1,c0) >> Creating two remote items",
-				"023 (d1,c0) ServerObject S0: setting 33",
-				"024 (d1,c0) ServerObject S0: setting 55",
-				"025 (d1,c0) Added S0",
-				"026 (d1,c0) Added S1",
-				"027 (d1,c0) ServerObject S1: setting 111",
-				"028 (d1,c0) Added S2",
-				"029 (d1,c0) ServerObject S2: setting 222",
-				"030 (d1,c0) << Creating two remote items",
-				"031 (d1,c0) >> Creating two client items",
-				"032 (d1,c0) ServerObject C1: setting 333",
-				"033 (d1,c0) ServerObject C2: setting 444",
-				"034 (d1,c0) << Creating two client items",
-				"035 (d1,c0) >> Adding items",
-				"036 (d1,c0) Added C1",
-				"037 (d1,c0) Added C2",
-				"038 (d1,c0) << Adding items",
-				"039 (d1,c0) >> Processing items",
-				"040 (d1,c0) Processing",
-				"041 (d1,c0) ServerObject S0: getting 55",
-				"042 (d1,c0) ServerObject S1: getting 111",
-				"043 (d1,c0) ServerObject S2: getting 222",
-				"044 (d1,c0) ServerObject C1: getting 333",
-				"045 (d1,c0) ServerObject C2: getting 444",
-				"046 (d1,c0) Total: 1165",
-				"047 (d1,c0) << Processing items",
-				"048 (d1,c0) << TestSameContext",
-		};
-
-		public static string[] seqNewContext =
-			{
-				"001 (d1,c0) >> TestNewContext",
-				"002 (d1,c0) >> Creating instance",
-				"003 (d1,c0) ContextHookAttribute(1.d1).IsContextOK",
-				"004 (d1,c0) IContextAttribute(1.d1).GetPropertiesForNewContext",
-				"005 (d1,c0) IContextAttribute(x.d1).GetPropertiesForNewContext",
-				"006 (d1,c0) <-> global DynamicSink Start .ctor client:True",
-				"007 (d1,c0) ContextHookAttribute(1.d1).Freeze",
-				"008 (d1,c0) ContextHookAttribute(x.d1).Freeze",
-				"009 (d1,c0) ContextHookAttribute(1.d1).IsNewContextOK",
-				"010 (d1,c0) ContextHookAttribute(x.d1).IsNewContextOK",
-				"011 (d1,c1) IContributeServerContextSink(x.d1).GetServerContextSink",
-				"012 (d1,c1) IContributeServerContextSink(1.d1).GetServerContextSink",
-				"013 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage .ctor",
-				"014 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage .ctor",
-				
-				// Changed the order. I think this is a safe chenge, since it is
-				// not defined where the call to GetEnvoySink should be made.
-				"015 (d1,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
-				"016 (d1,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
-				"017 (d1,c1) List created",
-				
-/*				"015 (d1,c1) List created",
-				"016 (d1,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
-				"017 (d1,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
-*/				
-				"018 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage .ctor",
-				"019 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage .ctor",
-				"020 (d1,c0) <-> global DynamicSink Finish .ctor client:True",
-				"021 (d1,c0) << Creating instance",
-				"022 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
-				"023 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
-				"024 (d1,c0) >> Clear",
-				"025 (d1,c0) <-> proxy DynamicSink Start Clear client:True",
-				"026 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Clear",
-				"027 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Clear",
-				"028 (d1,c0) <-> global DynamicSink Start Clear client:True",
-				"029 (d1,c0) <-> defcontext DynamicSink Start Clear client:True",
-				"030 (d1,c1) <-> global DynamicSink Start Clear client:False",
-				"031 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Clear",
-				"032 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Clear",
-				"033 (d1,c1) IContributeObjectSink(x.d1).GetObjectSink",
-				"034 (d1,c1) IContributeObjectSink(1.d1).GetObjectSink",
-				"035 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Clear",
-				"036 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Clear",
-				"037 (d1,c1) Clearing",
-				"038 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Clear",
-				"039 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Clear",
-				"040 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Clear",
-				"041 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Clear",
-				"042 (d1,c1) <-> global DynamicSink Finish Clear client:False",
-				"043 (d1,c0) <-> global DynamicSink Finish Clear client:True",
-				"044 (d1,c0) <-> defcontext DynamicSink Finish Clear client:True",
-				"045 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Clear",
-				"046 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Clear",
-				"047 (d1,c0) <-> proxy DynamicSink Finish Clear client:True",
-				"048 (d1,c0) << Clear",
-				"049 (d1,c0) >> Set fields",
-				"050 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
-				"051 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-				"052 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"053 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
-				"054 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
-				"055 (d1,c1) <-> global DynamicSink Start FieldSetter client:False",
-				"056 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"057 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"058 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"059 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"060 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"061 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"062 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"063 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"064 (d1,c1) <-> global DynamicSink Finish FieldSetter client:False",
-				"065 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
-				"066 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
-				"067 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"068 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-				"069 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
-				"070 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
-				"071 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-				"072 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"073 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
-				"074 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
-				"075 (d1,c1) <-> global DynamicSink Start FieldSetter client:False",
-				"076 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"077 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"078 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"079 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"080 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"081 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"082 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"083 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"084 (d1,c1) <-> global DynamicSink Finish FieldSetter client:False",
-				"085 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
-				"086 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
-				"087 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"088 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-				"089 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
-				"090 (d1,c0) << Set fields",
-				"091 (d1,c0) >> Get fields",
-				"092 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
-				"093 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-
-				"094 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"095 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
-				"096 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
-				"097 (d1,c1) <-> global DynamicSink Start FieldGetter client:False",
-				"098 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"099 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"100 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"101 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-				"102 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-				"103 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"104 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"105 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"106 (d1,c1) <-> global DynamicSink Finish FieldGetter client:False",
-				"107 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
-				"108 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
-				"109 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"110 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-				"111 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
-				"112 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
-				"113 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-				"114 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"115 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
-				"116 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
-				"117 (d1,c1) <-> global DynamicSink Start FieldGetter client:False",
-				"118 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"119 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"120 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"121 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-
-				"122 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-				"123 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"124 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"125 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"126 (d1,c1) <-> global DynamicSink Finish FieldGetter client:False",
-				"127 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
-				"128 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
-				"129 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"130 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-				"131 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
-				"132 (d1,c0) << Get fields",
-				"133 (d1,c0) Get fields Result: 4 / hi",
-				"134 (d1,c0) >> ParameterTest1",
-				"135 (d1,c0) <-> proxy DynamicSink Start ParameterTest1 client:True",
-				"136 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
-				"137 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
-				"138 (d1,c0) <-> global DynamicSink Start ParameterTest1 client:True",
-				"139 (d1,c0) <-> defcontext DynamicSink Start ParameterTest1 client:True",
-				"140 (d1,c1) <-> global DynamicSink Start ParameterTest1 client:False",
-				"141 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
-				"142 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
-				"143 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
-				"144 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
-				"145 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
-				"146 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
-				"147 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
-				"148 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
-				"149 (d1,c1) <-> global DynamicSink Finish ParameterTest1 client:False",
-				"150 (d1,c0) <-> global DynamicSink Finish ParameterTest1 client:True",
-				"151 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest1 client:True",
-				"152 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
-				"153 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
-				"154 (d1,c0) <-> proxy DynamicSink Finish ParameterTest1 client:True",
-				"155 (d1,c0) << ParameterTest1",
-				"156 (d1,c0) ParameterTest1 Result: adeu 112",
-				"157 (d1,c0) >> ParameterTest2",
-				"158 (d1,c0) <-> proxy DynamicSink Start ParameterTest2 client:True",
-				"159 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
-				"160 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
-				"161 (d1,c0) <-> global DynamicSink Start ParameterTest2 client:True",
-				"162 (d1,c0) <-> defcontext DynamicSink Start ParameterTest2 client:True",
-				"163 (d1,c1) <-> global DynamicSink Start ParameterTest2 client:False",
-				"164 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
-
-				"165 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
-				"166 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
-				"167 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
-				"168 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
-				"169 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
-				"170 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
-				"171 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
-				"172 (d1,c1) <-> global DynamicSink Finish ParameterTest2 client:False",
-				"173 (d1,c0) <-> global DynamicSink Finish ParameterTest2 client:True",
-				"174 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest2 client:True",
-				"175 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
-				"176 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
-				"177 (d1,c0) <-> proxy DynamicSink Finish ParameterTest2 client:True",
-				"178 (d1,c0) << ParameterTest2",
-				"179 (d1,c0) ParameterTest2 Result: 113",
-				"180 (d1,c0) >> Creating two remote items",
-				"181 (d1,c0) <-> proxy DynamicSink Start CreateItem client:True",
-				"182 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage CreateItem",
-				"183 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage CreateItem",
-				"184 (d1,c0) <-> global DynamicSink Start CreateItem client:True",
-				"185 (d1,c0) <-> defcontext DynamicSink Start CreateItem client:True",
-				"186 (d1,c1) <-> global DynamicSink Start CreateItem client:False",
-				"187 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage CreateItem",
-				"188 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage CreateItem",
-				"189 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage CreateItem",
-				"190 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage CreateItem",
-				"191 (d1,c1) ServerObject S0: setting 33",
-				"192 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage CreateItem",
-				"193 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage CreateItem",
-				"194 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage CreateItem",
-				"195 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage CreateItem",
-				"196 (d1,c1) <-> global DynamicSink Finish CreateItem client:False",
-				"197 (d1,c0) <-> global DynamicSink Finish CreateItem client:True",
-				"198 (d1,c0) <-> defcontext DynamicSink Finish CreateItem client:True",
-				"199 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage CreateItem",
-				"200 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage CreateItem",
-				"201 (d1,c0) <-> proxy DynamicSink Finish CreateItem client:True",
-				"202 (d1,c0) ServerObject S0: setting 55",
-				"203 (d1,c0) <-> proxy DynamicSink Start Add client:True",
-				"204 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
-				"205 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
-				"206 (d1,c0) <-> global DynamicSink Start Add client:True",
-				"207 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
-				"208 (d1,c1) <-> global DynamicSink Start Add client:False",
-				"209 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
-				"210 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
-				"211 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
-				"212 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
-				"213 (d1,c1) Added S0",
-				"214 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
-				"215 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
-				"216 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
-				"217 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
-				"218 (d1,c1) <-> global DynamicSink Finish Add client:False",
-				"219 (d1,c0) <-> global DynamicSink Finish Add client:True",
-				"220 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
-				"221 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
-				"222 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
-				"223 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
-				"224 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
-				"225 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"226 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"227 (d1,c0) <-> global DynamicSink Start NewItem client:True",
-				"228 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
-				"229 (d1,c1) <-> global DynamicSink Start NewItem client:False",
-				"230 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"231 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"232 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"233 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"234 (d1,c1) Added S1",
-				"235 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"236 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"237 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"238 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"239 (d1,c1) <-> global DynamicSink Finish NewItem client:False",
-				"240 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
-				"241 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
-				"242 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"243 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"244 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
-				"245 (d1,c0) ServerObject S1: setting 111",
-				"246 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
-				"247 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"248 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"249 (d1,c0) <-> global DynamicSink Start NewItem client:True",
-				"250 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
-				"251 (d1,c1) <-> global DynamicSink Start NewItem client:False",
-				"252 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"253 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"254 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"255 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"256 (d1,c1) Added S2",
-				"257 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"258 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"259 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"260 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"261 (d1,c1) <-> global DynamicSink Finish NewItem client:False",
-				"262 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
-				"263 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
-				"264 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"265 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"266 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
-				"267 (d1,c0) ServerObject S2: setting 222",
-				"268 (d1,c0) << Creating two remote items",
-				"269 (d1,c0) >> Creating two client items",
-				"270 (d1,c0) ServerObject C1: setting 333",
-				"271 (d1,c0) ServerObject C2: setting 444",
-				"272 (d1,c0) << Creating two client items",
-				"273 (d1,c0) >> Adding items",
-				"274 (d1,c0) <-> proxy DynamicSink Start Add client:True",
-				"275 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
-				"276 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
-				"277 (d1,c0) <-> global DynamicSink Start Add client:True",
-				"278 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
-				"279 (d1,c1) <-> global DynamicSink Start Add client:False",
-				"280 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
-				"281 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
-				"282 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
-				"283 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
-				"284 (d1,c1) Added C1",
-				"285 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
-				"286 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
-				"287 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
-				"288 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
-				"289 (d1,c1) <-> global DynamicSink Finish Add client:False",
-				"290 (d1,c0) <-> global DynamicSink Finish Add client:True",
-				"291 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
-				"292 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
-				"293 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
-				"294 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
-				"295 (d1,c0) <-> proxy DynamicSink Start Add client:True",
-				"296 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
-				"297 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
-				"298 (d1,c0) <-> global DynamicSink Start Add client:True",
-				"299 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
-				"300 (d1,c1) <-> global DynamicSink Start Add client:False",
-				"301 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
-				"302 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
-
-				"303 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
-				"304 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
-				"305 (d1,c1) Added C2",
-				"306 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
-				"307 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
-				"308 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
-				"309 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
-				"310 (d1,c1) <-> global DynamicSink Finish Add client:False",
-				"311 (d1,c0) <-> global DynamicSink Finish Add client:True",
-				"312 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
-				"313 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
-				"314 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
-				"315 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
-				"316 (d1,c0) << Adding items",
-				"317 (d1,c0) >> Processing items",
-				"318 (d1,c0) <-> proxy DynamicSink Start ProcessItems client:True",
-				"319 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ProcessItems",
-				"320 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ProcessItems",
-				"321 (d1,c0) <-> global DynamicSink Start ProcessItems client:True",
-				"322 (d1,c0) <-> defcontext DynamicSink Start ProcessItems client:True",
-				"323 (d1,c1) <-> global DynamicSink Start ProcessItems client:False",
-				"324 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
-				"325 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
-				"326 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ProcessItems",
-				"327 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ProcessItems",
-				"328 (d1,c1) Processing",
-				"329 (d1,c1) ServerObject S0: getting 55",
-				"330 (d1,c1) ServerObject S1: getting 111",
-				"331 (d1,c1) ServerObject S2: getting 222",
-				"332 (d1,c1) ServerObject C1: getting 333",
-				"333 (d1,c1) ServerObject C2: getting 444",
-				"334 (d1,c1) Total: 1165",
-				"335 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ProcessItems",
-				"336 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ProcessItems",
-				"337 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
-				"338 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
-				"339 (d1,c1) <-> global DynamicSink Finish ProcessItems client:False",
-				"340 (d1,c0) <-> global DynamicSink Finish ProcessItems client:True",
-				"341 (d1,c0) <-> defcontext DynamicSink Finish ProcessItems client:True",
-
-				"342 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ProcessItems",
-				"343 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ProcessItems",
-				"344 (d1,c0) <-> proxy DynamicSink Finish ProcessItems client:True",
-				"345 (d1,c0) << Processing items",
-				"346 (d1,c0) << TestNewContext",
-		};
-
-		public static string[] seqRemoteContext =
-			{
-				"001 (d1,c0) >> TestRemoteContext",
-				"002 (d1,c0) >> Creating instance",
-				"003 (d1,c0) IContextAttribute(1.d1).GetPropertiesForNewContext",
-				"004 (d1,c0) IContextAttribute(x.d1).GetPropertiesForNewContext",
-				"005 (d1,c0) <-> global DynamicSink Start .ctor client:True",
-				"006 (d1,c0) <-> global DynamicSink Start Activate client:True",
-				"001 (d2,c0) IContextAttribute(x.d2).GetPropertiesForNewContext",
-				"002 (d2,c0) ContextHookAttribute(1.d1).Freeze",
-				"003 (d2,c0) ContextHookAttribute(x.d1).Freeze",
-				"004 (d2,c0) ContextHookAttribute(x.d2).Freeze",
-				"005 (d2,c0) ContextHookAttribute(1.d1).IsNewContextOK",
-				"006 (d2,c0) ContextHookAttribute(x.d1).IsNewContextOK",
-				"007 (d2,c0) ContextHookAttribute(x.d2).IsNewContextOK",
-				"008 (d2,c1) IContributeServerContextSink(x.d2).GetServerContextSink",
-				"009 (d2,c1) IContributeServerContextSink(x.d1).GetServerContextSink",
-				"010 (d2,c1) IContributeServerContextSink(1.d1).GetServerContextSink",
-				"011 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage .ctor",
-				"012 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage .ctor",
-				"013 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage .ctor",	
-				"014 (d2,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
-				"015 (d2,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
-				"016 (d2,c1) IContributeEnvoySink(x.d2).GetEnvoySink",
-				"017 (d2,c1) List created",
-				"018 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage .ctor",
-				"019 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage .ctor",
-				"020 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage .ctor",
-				"#021 (d2,c0) IContributeObjectSink(x.d2).GetObjectSink",
-				"#022 (d2,c0) IContributeObjectSink(x.d1).GetObjectSink",
-				"#023 (d2,c0) IContributeObjectSink(1.d1).GetObjectSink",
-				"024 (d2,c0) --> EnvoySink(x.d2) SyncProcessMessage InitializeLifetimeService",
-				"025 (d2,c0) --> EnvoySink(x.d1) SyncProcessMessage InitializeLifetimeService",
-				"026 (d2,c0) --> EnvoySink(1.d1) SyncProcessMessage InitializeLifetimeService",
-				"027 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage InitializeLifetimeService",
-				"028 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage InitializeLifetimeService",
-				"029 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage InitializeLifetimeService",
-				"030 (d2,c1) IContributeObjectSink(x.d2).GetObjectSink",
-				"031 (d2,c1) IContributeObjectSink(x.d1).GetObjectSink",
-				"032 (d2,c1) IContributeObjectSink(1.d1).GetObjectSink",
-				"033 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage InitializeLifetimeService",
-				"034 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage InitializeLifetimeService",
-				"035 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage InitializeLifetimeService",
-				"036 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage InitializeLifetimeService",
-				"037 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage InitializeLifetimeService",
-				"038 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage InitializeLifetimeService",
-				"039 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage InitializeLifetimeService",
-				"040 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage InitializeLifetimeService",
-				"041 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage InitializeLifetimeService",
-				"042 (d2,c0) <-- EnvoySink(1.d1) SyncProcessMessage InitializeLifetimeService",
-				"043 (d2,c0) <-- EnvoySink(x.d1) SyncProcessMessage InitializeLifetimeService",
-				"044 (d2,c0) <-- EnvoySink(x.d2) SyncProcessMessage InitializeLifetimeService",
-				"007 (d1,c0) <-> global DynamicSink Finish Activate client:True",
-				"008 (d1,c0) <-> global DynamicSink Finish .ctor client:True",
-				"009 (d1,c0) << Creating instance",
-				"010 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
-				"011 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
-				"012 (d1,c0) >> Clear",
-				"013 (d1,c0) <-> proxy DynamicSink Start Clear client:True",
-				"014 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Clear",
-				"015 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Clear",
-				"016 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Clear",
-				"017 (d1,c0) <-> global DynamicSink Start Clear client:True",
-				"018 (d1,c0) <-> defcontext DynamicSink Start Clear client:True",
-				"045 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Clear",
-				"046 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Clear",
-				"047 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Clear",
-				"048 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Clear",
-				"049 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Clear",
-				"050 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Clear",
-				"051 (d2,c1) Clearing",
-				"052 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Clear",
-				"053 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Clear",
-				"054 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Clear",
-				"055 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Clear",
-				"056 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Clear",
-				"057 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Clear",
-				"019 (d1,c0) <-> global DynamicSink Finish Clear client:True",
-				"020 (d1,c0) <-> defcontext DynamicSink Finish Clear client:True",
-				"021 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Clear",
-				"022 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Clear",
-				"023 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Clear",
-				"024 (d1,c0) <-> proxy DynamicSink Finish Clear client:True",
-				"025 (d1,c0) << Clear",
-				"026 (d1,c0) >> Set fields",
-				"027 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
-				"028 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldSetter",
-				"029 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-				"030 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"031 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
-				"032 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
-				"058 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"059 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"060 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
-				"061 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"062 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"063 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldSetter",
-				"064 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldSetter",
-				"065 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"066 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"067 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
-				"068 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"069 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"033 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
-				"034 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
-				"035 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"036 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-
-				"037 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldSetter",
-
-				"038 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
-				"039 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
-				"040 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldSetter",
-				"041 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-				"042 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"043 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
-				"044 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
-				"070 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"071 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"072 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
-				"073 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"074 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"075 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldSetter",
-				"076 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldSetter",
-				"077 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
-				"078 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
-				"079 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
-				"080 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
-				"081 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
-				"045 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
-				"046 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
-				"047 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
-				"048 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
-				"049 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldSetter",
-				"050 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
-				"051 (d1,c0) << Set fields",
-				"052 (d1,c0) >> Get fields",
-				"053 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
-				"054 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldGetter",
-				"055 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-				"056 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"057 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
-				"058 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
-				"082 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"083 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"084 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
-				"085 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"086 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-				"087 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldGetter",
-				"088 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldGetter",
-				"089 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-				"090 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"091 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
-				"092 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"093 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"059 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
-				"060 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
-				"061 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"062 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-				"063 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldGetter",
-				"064 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
-				"065 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
-				"066 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldGetter",
-				"067 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-				"068 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"069 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
-				"070 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
-				"094 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"095 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"096 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
-				"097 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"098 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-				"099 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldGetter",
-				"100 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldGetter",
-				"101 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
-				"102 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
-				"103 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
-				"104 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
-				"105 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
-				"071 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
-				"072 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
-				"073 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
-				"074 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
-				"075 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldGetter",
-				"076 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
-				"077 (d1,c0) << Get fields",
-				"078 (d1,c0) Get fields Result: 4 / hi",
-				"079 (d1,c0) >> ParameterTest1",
-				"080 (d1,c0) <-> proxy DynamicSink Start ParameterTest1 client:True",
-				"081 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ParameterTest1",
-				"082 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
-				"083 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
-				"084 (d1,c0) <-> global DynamicSink Start ParameterTest1 client:True",
-				"085 (d1,c0) <-> defcontext DynamicSink Start ParameterTest1 client:True",
-				"106 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
-				"107 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
-				"108 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ParameterTest1",
-				"109 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
-				"110 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
-				"111 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ParameterTest1",
-				"112 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ParameterTest1",
-				"113 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
-				"114 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
-				"115 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ParameterTest1",
-				"116 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
-				"117 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
-				"086 (d1,c0) <-> global DynamicSink Finish ParameterTest1 client:True",
-				"087 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest1 client:True",
-				"088 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
-				"089 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
-				"090 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ParameterTest1",
-				"091 (d1,c0) <-> proxy DynamicSink Finish ParameterTest1 client:True",
-				"092 (d1,c0) << ParameterTest1",
-				"093 (d1,c0) ParameterTest1 Result: adeu 112",
-				"094 (d1,c0) >> ParameterTest2",
-				"095 (d1,c0) <-> proxy DynamicSink Start ParameterTest2 client:True",
-				"096 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ParameterTest2",
-				"097 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
-				"098 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
-				"099 (d1,c0) <-> global DynamicSink Start ParameterTest2 client:True",
-				"100 (d1,c0) <-> defcontext DynamicSink Start ParameterTest2 client:True",
-				"118 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
-				"119 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
-
-				"120 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ParameterTest2",
-				"121 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
-				"122 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
-				"123 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ParameterTest2",
-				"124 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ParameterTest2",
-				"125 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
-				"126 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
-				"127 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ParameterTest2",
-				"128 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
-				"129 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
-				"101 (d1,c0) <-> global DynamicSink Finish ParameterTest2 client:True",
-				"102 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest2 client:True",
-				"103 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
-				"104 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
-				"105 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ParameterTest2",
-				"106 (d1,c0) <-> proxy DynamicSink Finish ParameterTest2 client:True",
-				"107 (d1,c0) << ParameterTest2",
-				"108 (d1,c0) ParameterTest2 Result: 113",
-				"109 (d1,c0) >> Creating two remote items",
-				"110 (d1,c0) <-> proxy DynamicSink Start CreateItem client:True",
-				"111 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage CreateItem",
-				"112 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage CreateItem",
-				"113 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage CreateItem",
-				"114 (d1,c0) <-> global DynamicSink Start CreateItem client:True",
-				"115 (d1,c0) <-> defcontext DynamicSink Start CreateItem client:True",
-				"130 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage CreateItem",
-				"131 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage CreateItem",
-				"132 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage CreateItem",
-				"133 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage CreateItem",
-				"134 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage CreateItem",
-				"135 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage CreateItem",
-				"136 (d2,c1) ServerObject S0: setting 33",
-				"137 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage CreateItem",
-				"138 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage CreateItem",
-				"139 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage CreateItem",
-				"140 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage CreateItem",
-				"141 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage CreateItem",
-				"142 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage CreateItem",
-				"143 (d2,c0) ### ServerObject.CreateObjRef",
-				"116 (d1,c0) <-> global DynamicSink Finish CreateItem client:True",
-				"117 (d1,c0) <-> defcontext DynamicSink Finish CreateItem client:True",
-				"118 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage CreateItem",
-				"119 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage CreateItem",
-				"120 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage CreateItem",
-				"121 (d1,c0) <-> proxy DynamicSink Finish CreateItem client:True",
-				"122 (d1,c0) <-> global DynamicSink Start SetValue client:True",
-				"123 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
-				"144 (d2,c0) ServerObject S0: setting 55",
-				"124 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
-				"125 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
-				"126 (d1,c0) <-> proxy DynamicSink Start Add client:True",
-				"127 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
-				"128 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
-				"129 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
-				"130 (d1,c0) <-> global DynamicSink Start Add client:True",
-				"131 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
-				"145 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
-				"146 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
-				"147 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
-				"148 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
-				"149 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
-				"150 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
-				"151 (d2,c1) Added S0",
-				"152 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
-				"153 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
-				"154 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
-				"155 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
-				"156 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
-				"157 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
-				"132 (d1,c0) <-> global DynamicSink Finish Add client:True",
-				"133 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
-				"134 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
-				"135 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
-				"136 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
-				"137 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
-				"138 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
-				"139 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage NewItem",
-				"140 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"141 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"142 (d1,c0) <-> global DynamicSink Start NewItem client:True",
-				"143 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
-				"158 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"159 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"160 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage NewItem",
-				"161 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"162 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"163 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage NewItem",
-				"164 (d2,c1) Added S1",
-				"165 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage NewItem",
-				"166 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"167 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"168 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage NewItem",
-				"169 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"170 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"171 (d2,c0) ### ServerObject.CreateObjRef",
-				"144 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
-				"145 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
-				"146 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"147 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"148 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage NewItem",
-				"149 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
-				"150 (d1,c0) <-> global DynamicSink Start SetValue client:True",
-				"151 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
-				"172 (d2,c0) ServerObject S1: setting 111",
-				"152 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
-				"153 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
-				"154 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
-				"155 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage NewItem",
-				"156 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"157 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"158 (d1,c0) <-> global DynamicSink Start NewItem client:True",
-				"159 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
-				"173 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"174 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"175 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage NewItem",
-				"176 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"177 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"178 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage NewItem",
-				"179 (d2,c1) Added S2",
-				"180 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage NewItem",
-				"181 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
-				"182 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
-				"183 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage NewItem",
-				"184 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
-				"185 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
-				"186 (d2,c0) ### ServerObject.CreateObjRef",
-				"160 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
-				"161 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
-				"162 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
-				"163 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
-				"164 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage NewItem",
-				"165 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
-				"166 (d1,c0) <-> global DynamicSink Start SetValue client:True",
-				"167 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
-				"187 (d2,c0) ServerObject S2: setting 222",
-				"168 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
-				"169 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
-				"170 (d1,c0) << Creating two remote items",
-				"171 (d1,c0) >> Creating two client items",
-				"172 (d1,c0) ServerObject C1: setting 333",
-				"173 (d1,c0) ServerObject C2: setting 444",
-				"174 (d1,c0) << Creating two client items",
-				"175 (d1,c0) >> Adding items",
-				"176 (d1,c0) <-> proxy DynamicSink Start Add client:True",
-				"177 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
-				"178 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
-				"179 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
-				"180 (d1,c0) <-> global DynamicSink Start Add client:True",
-				"181 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
-				"182 (d1,c0) ### ServerObject.CreateObjRef",
-				"188 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
-				"189 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
-				"190 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
-				"191 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
-				"192 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
-				"193 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
-				"194 (d2,c1) IContributeClientContextSink(1.d1).GetClientContextSink",
-				"195 (d2,c1) IContributeClientContextSink(x.d1).GetClientContextSink",
-				"196 (d2,c1) IContributeClientContextSink(x.d2).GetClientContextSink",
-				"197 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage get_Name",
-				"198 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage get_Name",
-				"199 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage get_Name",
-				"183 (d1,c0) <-> global DynamicSink Start get_Name client:False",
-				"184 (d1,c0) <-> defcontext DynamicSink Start get_Name client:False",
-				"185 (d1,c0) <-> global DynamicSink Finish get_Name client:False",
-				"186 (d1,c0) <-> defcontext DynamicSink Finish get_Name client:False",
-				"200 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage get_Name",
-				"201 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage get_Name",
-				"202 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage get_Name",
-				"203 (d2,c1) Added C1",
-				"204 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
-				"205 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
-				"206 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
-				"207 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
-				"208 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
-				"209 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
-				"187 (d1,c0) <-> global DynamicSink Finish Add client:True",
-				"188 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
-				"189 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
-				"190 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
-				"191 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
-				"192 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
-				"193 (d1,c0) <-> proxy DynamicSink Start Add client:True",
-				"194 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
-				"195 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
-				"196 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
-				"197 (d1,c0) <-> global DynamicSink Start Add client:True",
-				"198 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
-				"199 (d1,c0) ### ServerObject.CreateObjRef",
-				"210 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
-				"211 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
-				"212 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
-				"213 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
-				"214 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
-				"215 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
-				"216 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage get_Name",
-				"217 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage get_Name",
-				"218 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage get_Name",
-				"200 (d1,c0) <-> global DynamicSink Start get_Name client:False",
-				"201 (d1,c0) <-> defcontext DynamicSink Start get_Name client:False",
-				"202 (d1,c0) <-> global DynamicSink Finish get_Name client:False",
-				"203 (d1,c0) <-> defcontext DynamicSink Finish get_Name client:False",
-				"219 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage get_Name",
-				"220 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage get_Name",
-				"221 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage get_Name",
-				"222 (d2,c1) Added C2",
-				"223 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
-				"224 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
-				"225 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
-				"226 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
-				"227 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
-				"228 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
-				"204 (d1,c0) <-> global DynamicSink Finish Add client:True",
-				"205 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
-				"206 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
-				"207 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
-				"208 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
-				"209 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
-				"210 (d1,c0) << Adding items",
-				"211 (d1,c0) >> Processing items",
-				"212 (d1,c0) <-> proxy DynamicSink Start ProcessItems client:True",
-				"213 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ProcessItems",
-				"214 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ProcessItems",
-				"215 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ProcessItems",
-				"216 (d1,c0) <-> global DynamicSink Start ProcessItems client:True",
-				"217 (d1,c0) <-> defcontext DynamicSink Start ProcessItems client:True",
-				"229 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
-				"230 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
-				"231 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ProcessItems",
-				"232 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ProcessItems",
-				"233 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ProcessItems",
-				"234 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ProcessItems",
-				"235 (d2,c1) Processing",
-				"236 (d2,c1) ServerObject S0: getting 55",
-				"237 (d2,c1) ServerObject S1: getting 111",
-				"238 (d2,c1) ServerObject S2: getting 222",
-				"239 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage GetValue",
-				"240 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage GetValue",
-				"241 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage GetValue",
-				"218 (d1,c0) <-> global DynamicSink Start GetValue client:False",
-				"219 (d1,c0) <-> defcontext DynamicSink Start GetValue client:False",
-				"220 (d1,c0) ServerObject C1: getting 333",
-				"221 (d1,c0) <-> global DynamicSink Finish GetValue client:False",
-				"222 (d1,c0) <-> defcontext DynamicSink Finish GetValue client:False",
-				"242 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage GetValue",
-				"243 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage GetValue",
-				"244 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage GetValue",
-				"245 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage GetValue",
-				"246 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage GetValue",
-				"247 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage GetValue",
-				"223 (d1,c0) <-> global DynamicSink Start GetValue client:False",
-				"224 (d1,c0) <-> defcontext DynamicSink Start GetValue client:False",
-				"225 (d1,c0) ServerObject C2: getting 444",
-				"226 (d1,c0) <-> global DynamicSink Finish GetValue client:False",
-				"227 (d1,c0) <-> defcontext DynamicSink Finish GetValue client:False",
-				"248 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage GetValue",
-				"249 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage GetValue",
-				"250 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage GetValue",
-				"251 (d2,c1) Total: 1165",
-				"252 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ProcessItems",
-				"253 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ProcessItems",
-				"254 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ProcessItems",
-				"255 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ProcessItems",
-				"256 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
-				"257 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
-				"228 (d1,c0) <-> global DynamicSink Finish ProcessItems client:True",
-				"229 (d1,c0) <-> defcontext DynamicSink Finish ProcessItems client:True",
-				"230 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ProcessItems",
-				"231 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ProcessItems",
-				"232 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ProcessItems",
-				"233 (d1,c0) <-> proxy DynamicSink Finish ProcessItems client:True",
-				"234 (d1,c0) << Processing items",
-				"235 (d1,c0) << TestRemoteContext",
-		};
-	}
-}
+//
+// MonoTests.Remoting.ContextsTest.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2003 (C) Copyright, Ximian, Inc.
+//
+
+using System;
+using System.Net;
+using System.Threading;
+using System.Collections;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Lifetime;
+using System.Runtime.Remoting.Channels.Tcp;
+using System.Runtime.Remoting.Activation;
+using System.Runtime.Remoting.Contexts;
+using NUnit.Framework;
+
+namespace MonoTests.Remoting
+{
+	[TestFixture]
+	public class ContextsTest
+	{
+		TcpChannel ch;
+		
+		[TestFixtureSetUp]
+		public void Run()
+		{
+			CallSeq.CommonDomainId = 1;
+			Context.RegisterDynamicProperty (new DynProperty("global"), null, null);
+
+			ch = new TcpChannel(0);
+			ChannelServices.RegisterChannel (ch);
+		}
+
+		[TestFixtureTearDown]
+		public void End ()
+		{
+			Context.UnregisterDynamicProperty ("global", null, null);
+			if (ch != null)
+				ChannelServices.UnregisterChannel (ch);
+		}
+
+		[Test]
+		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
+		public void TestSameContext ()
+		{
+			CallSeq.Init("TestSameContext");
+			CallSeq.Add (">> TestSameContext");
+			CallSeq.Add (">> Creating instance");
+			ServerList list = new ServerList();
+			CallSeq.Add ("<< Creating instance");
+			RunTestObject (list);
+			CallSeq.Add ("<< TestSameContext");
+			CallSeq.Check (Checks.seqSameContext,1);
+		}
+
+		[Test]
+		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
+		public void TestNewContext ()
+		{
+			CallSeq.Init("TestNewContext");
+			CallSeq.Add (">> TestNewContext");
+			object[] at = new object[] { new ContextHookAttribute ("1",true)};
+			CallSeq.Add (">> Creating instance");
+			ServerList list = (ServerList) Activator.CreateInstance (typeof (ServerList),null,at);
+			CallSeq.Add ("<< Creating instance");
+			RunTestObject (list);
+			CallSeq.Add ("<< TestNewContext");
+			CallSeq.Check (Checks.seqNewContext,1);
+		}
+
+		[Test]
+		[Category ("NotWorking")] // disabled as it got not working by NUnit upgrade to 2.4.8
+		public void TestRemoteContext ()
+		{
+			AppDomain domain = BaseCallTest.CreateDomain ("test");
+			DomainServer server = (DomainServer) domain.CreateInstanceAndUnwrap(GetType().Assembly.FullName,"MonoTests.Remoting.DomainServer");
+			try
+			{
+				CallSeq.Init("TestRemoteContext");
+				CallSeq.Add (">> TestRemoteContext");
+				object[] at = new object[] { new ContextHookAttribute ("1",true), new UrlAttribute ("tcp://localhost:1122")};
+				CallSeq.Add (">> Creating instance");
+				ServerList list = (ServerList) Activator.CreateInstance (typeof (ServerList),null,at);
+				CallSeq.Add ("<< Creating instance");
+				RunTestObject (list);
+				CallSeq.Add ("<< TestRemoteContext");
+				CallSeq.Check (Checks.seqRemoteContext,1);
+
+				CallSeq.Init ("TestRemoteContext Server");
+				CallSeq.Seq = server.GetRemoteSeq ();
+				CallSeq.Check (Checks.seqRemoteContext,2);
+			}
+			catch (Exception ex)
+			{
+				Console.WriteLine (ex);
+				throw ex;
+			}
+			finally
+			{
+				server.Stop ();
+			}
+//			AppDomain.Unload (domain);
+		}
+
+		void RunTestObject (ServerList list)
+		{
+			DynProperty prop1 = new DynProperty("defcontext");
+			DynProperty prop2 = new DynProperty("proxy");
+
+			try
+			{
+				Context.RegisterDynamicProperty (prop1, null, Context.DefaultContext);
+				Context.RegisterDynamicProperty (prop2, list, null);
+
+				CallSeq.Add(">> Clear");
+				list.GetType().GetMethod ("Clear").Invoke (list, null);
+				CallSeq.Add("<< Clear");
+
+				CallSeq.Add(">> Set fields");
+				list.NumVal = 4;
+				list.StrVal = "hi";
+				CallSeq.Add("<< Set fields");
+
+				CallSeq.Add(">> Get fields");
+				int nv = list.NumVal;
+				string sv = list.StrVal;
+				CallSeq.Add("<< Get fields");
+				CallSeq.Add ("Get fields Result: " + nv + " / " + sv);
+
+				CallSeq.Add(">> ParameterTest1");
+				string b;
+				list.ParameterTest1 (112, out b);
+				CallSeq.Add("<< ParameterTest1");
+				CallSeq.Add("ParameterTest1 Result: " + b);
+
+				CallSeq.Add(">> ParameterTest2");
+				int bn;
+				list.ParameterTest2 (112, out bn);
+				CallSeq.Add("<< ParameterTest2");
+				CallSeq.Add("ParameterTest2 Result: " + bn);
+
+				// These are remote calls that return references to remote objects
+
+				CallSeq.Add (">> Creating two remote items");
+				ServerObject item0 = list.CreateItem ("S0", 33);
+
+				item0.SetValue (55);
+				list.Add (item0);
+
+				ServerObject item1 = list.NewItem ("S1");
+				item1.SetValue (111);
+				ServerObject item2 = list.NewItem ("S2");
+				item2.SetValue (222);
+				CallSeq.Add ("<< Creating two remote items");
+
+				// Two objects created in this client app
+
+				CallSeq.Add (">> Creating two client items");
+				ServerObject item3 = new ServerObject ("C1");
+				item3.SetValue (333);
+				ServerObject item4 = new ServerObject ("C2");
+				item4.SetValue (444);
+				CallSeq.Add ("<< Creating two client items");
+
+				// Object references passed to the remote list
+
+				CallSeq.Add (">> Adding items");
+				list.Add (item3);
+				list.Add (item4);
+				CallSeq.Add ("<< Adding items");
+
+				// This sums all values of the ServerObjects in the list. The server
+				// makes a remote call to this client to get the value of the
+				// objects created locally
+
+				CallSeq.Add (">> Processing items");
+				list.ProcessItems ();
+				CallSeq.Add ("<< Processing items");
+			}
+			catch (Exception ex)
+			{
+				Console.WriteLine ("ERR:" + ex.ToString());
+				throw;
+			}
+			
+			Context.UnregisterDynamicProperty ("defcontext", null, Context.DefaultContext);
+			Context.UnregisterDynamicProperty ("proxy", list, null);
+		}
+	}
+
+	class DomainServer: MarshalByRefObject
+	{
+		TcpChannel ch;
+		
+		public DomainServer()
+		{
+			CallSeq.CommonDomainId = 2;
+			try
+			{
+				ch = new TcpChannel(1122);
+				ChannelServices.RegisterChannel (ch);
+
+				RemotingConfiguration.RegisterActivatedServiceType (typeof (ServerList));
+				RemotingConfiguration.RegisterActivatedServiceType (typeof (ServerObject));
+			}
+			catch (Exception ex)
+			{
+				Console.WriteLine (ex.ToString());
+				throw;
+			}
+		}
+
+		public ArrayList GetRemoteSeq()
+		{
+			return CallSeq.Seq;
+		}
+
+		public void Stop ()
+		{
+			if (ch != null)
+				ChannelServices.UnregisterChannel (ch);
+		}
+	}
+
+	class Checks
+	{
+		public static string[] seqSameContext = 
+			{
+				"001 (d1,c0) >> TestSameContext",
+				"002 (d1,c0) >> Creating instance",
+				"003 (d1,c0) ContextHookAttribute(x.d1).IsContextOK",
+				"004 (d1,c0) List created",
+				"005 (d1,c0) << Creating instance",
+				"006 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
+				"007 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
+				"008 (d1,c0) >> Clear",
+				"009 (d1,c0) Clearing",
+				"010 (d1,c0) << Clear",
+				"011 (d1,c0) >> Set fields",
+				"012 (d1,c0) << Set fields",
+				"013 (d1,c0) >> Get fields",
+				"014 (d1,c0) << Get fields",
+				"015 (d1,c0) Get fields Result: 4 / hi",
+				"016 (d1,c0) >> ParameterTest1",
+				"017 (d1,c0) << ParameterTest1",
+				"018 (d1,c0) ParameterTest1 Result: adeu 112",
+				"019 (d1,c0) >> ParameterTest2",
+				"020 (d1,c0) << ParameterTest2",
+				"021 (d1,c0) ParameterTest2 Result: 113",
+				"022 (d1,c0) >> Creating two remote items",
+				"023 (d1,c0) ServerObject S0: setting 33",
+				"024 (d1,c0) ServerObject S0: setting 55",
+				"025 (d1,c0) Added S0",
+				"026 (d1,c0) Added S1",
+				"027 (d1,c0) ServerObject S1: setting 111",
+				"028 (d1,c0) Added S2",
+				"029 (d1,c0) ServerObject S2: setting 222",
+				"030 (d1,c0) << Creating two remote items",
+				"031 (d1,c0) >> Creating two client items",
+				"032 (d1,c0) ServerObject C1: setting 333",
+				"033 (d1,c0) ServerObject C2: setting 444",
+				"034 (d1,c0) << Creating two client items",
+				"035 (d1,c0) >> Adding items",
+				"036 (d1,c0) Added C1",
+				"037 (d1,c0) Added C2",
+				"038 (d1,c0) << Adding items",
+				"039 (d1,c0) >> Processing items",
+				"040 (d1,c0) Processing",
+				"041 (d1,c0) ServerObject S0: getting 55",
+				"042 (d1,c0) ServerObject S1: getting 111",
+				"043 (d1,c0) ServerObject S2: getting 222",
+				"044 (d1,c0) ServerObject C1: getting 333",
+				"045 (d1,c0) ServerObject C2: getting 444",
+				"046 (d1,c0) Total: 1165",
+				"047 (d1,c0) << Processing items",
+				"048 (d1,c0) << TestSameContext",
+		};
+
+		public static string[] seqNewContext =
+			{
+				"001 (d1,c0) >> TestNewContext",
+				"002 (d1,c0) >> Creating instance",
+				"003 (d1,c0) ContextHookAttribute(1.d1).IsContextOK",
+				"004 (d1,c0) IContextAttribute(1.d1).GetPropertiesForNewContext",
+				"005 (d1,c0) IContextAttribute(x.d1).GetPropertiesForNewContext",
+				"006 (d1,c0) <-> global DynamicSink Start .ctor client:True",
+				"007 (d1,c0) ContextHookAttribute(1.d1).Freeze",
+				"008 (d1,c0) ContextHookAttribute(x.d1).Freeze",
+				"009 (d1,c0) ContextHookAttribute(1.d1).IsNewContextOK",
+				"010 (d1,c0) ContextHookAttribute(x.d1).IsNewContextOK",
+				"011 (d1,c1) IContributeServerContextSink(x.d1).GetServerContextSink",
+				"012 (d1,c1) IContributeServerContextSink(1.d1).GetServerContextSink",
+				"013 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage .ctor",
+				"014 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage .ctor",
+				
+				// Changed the order. I think this is a safe chenge, since it is
+				// not defined where the call to GetEnvoySink should be made.
+				"015 (d1,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
+				"016 (d1,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
+				"017 (d1,c1) List created",
+				
+/*				"015 (d1,c1) List created",
+				"016 (d1,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
+				"017 (d1,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
+*/				
+				"018 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage .ctor",
+				"019 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage .ctor",
+				"020 (d1,c0) <-> global DynamicSink Finish .ctor client:True",
+				"021 (d1,c0) << Creating instance",
+				"022 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
+				"023 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
+				"024 (d1,c0) >> Clear",
+				"025 (d1,c0) <-> proxy DynamicSink Start Clear client:True",
+				"026 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Clear",
+				"027 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Clear",
+				"028 (d1,c0) <-> global DynamicSink Start Clear client:True",
+				"029 (d1,c0) <-> defcontext DynamicSink Start Clear client:True",
+				"030 (d1,c1) <-> global DynamicSink Start Clear client:False",
+				"031 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Clear",
+				"032 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Clear",
+				"033 (d1,c1) IContributeObjectSink(x.d1).GetObjectSink",
+				"034 (d1,c1) IContributeObjectSink(1.d1).GetObjectSink",
+				"035 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Clear",
+				"036 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Clear",
+				"037 (d1,c1) Clearing",
+				"038 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Clear",
+				"039 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Clear",
+				"040 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Clear",
+				"041 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Clear",
+				"042 (d1,c1) <-> global DynamicSink Finish Clear client:False",
+				"043 (d1,c0) <-> global DynamicSink Finish Clear client:True",
+				"044 (d1,c0) <-> defcontext DynamicSink Finish Clear client:True",
+				"045 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Clear",
+				"046 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Clear",
+				"047 (d1,c0) <-> proxy DynamicSink Finish Clear client:True",
+				"048 (d1,c0) << Clear",
+				"049 (d1,c0) >> Set fields",
+				"050 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
+				"051 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+				"052 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"053 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
+				"054 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
+				"055 (d1,c1) <-> global DynamicSink Start FieldSetter client:False",
+				"056 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"057 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"058 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"059 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"060 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"061 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"062 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"063 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"064 (d1,c1) <-> global DynamicSink Finish FieldSetter client:False",
+				"065 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
+				"066 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
+				"067 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"068 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+				"069 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
+				"070 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
+				"071 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+				"072 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"073 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
+				"074 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
+				"075 (d1,c1) <-> global DynamicSink Start FieldSetter client:False",
+				"076 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"077 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"078 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"079 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"080 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"081 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"082 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"083 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"084 (d1,c1) <-> global DynamicSink Finish FieldSetter client:False",
+				"085 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
+				"086 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
+				"087 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"088 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+				"089 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
+				"090 (d1,c0) << Set fields",
+				"091 (d1,c0) >> Get fields",
+				"092 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
+				"093 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+
+				"094 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"095 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
+				"096 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
+				"097 (d1,c1) <-> global DynamicSink Start FieldGetter client:False",
+				"098 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"099 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"100 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"101 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+				"102 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+				"103 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"104 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"105 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"106 (d1,c1) <-> global DynamicSink Finish FieldGetter client:False",
+				"107 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
+				"108 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
+				"109 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"110 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+				"111 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
+				"112 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
+				"113 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+				"114 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"115 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
+				"116 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
+				"117 (d1,c1) <-> global DynamicSink Start FieldGetter client:False",
+				"118 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"119 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"120 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"121 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+
+				"122 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+				"123 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"124 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"125 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"126 (d1,c1) <-> global DynamicSink Finish FieldGetter client:False",
+				"127 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
+				"128 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
+				"129 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"130 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+				"131 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
+				"132 (d1,c0) << Get fields",
+				"133 (d1,c0) Get fields Result: 4 / hi",
+				"134 (d1,c0) >> ParameterTest1",
+				"135 (d1,c0) <-> proxy DynamicSink Start ParameterTest1 client:True",
+				"136 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
+				"137 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
+				"138 (d1,c0) <-> global DynamicSink Start ParameterTest1 client:True",
+				"139 (d1,c0) <-> defcontext DynamicSink Start ParameterTest1 client:True",
+				"140 (d1,c1) <-> global DynamicSink Start ParameterTest1 client:False",
+				"141 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
+				"142 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
+				"143 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
+				"144 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
+				"145 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
+				"146 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
+				"147 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
+				"148 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
+				"149 (d1,c1) <-> global DynamicSink Finish ParameterTest1 client:False",
+				"150 (d1,c0) <-> global DynamicSink Finish ParameterTest1 client:True",
+				"151 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest1 client:True",
+				"152 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
+				"153 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
+				"154 (d1,c0) <-> proxy DynamicSink Finish ParameterTest1 client:True",
+				"155 (d1,c0) << ParameterTest1",
+				"156 (d1,c0) ParameterTest1 Result: adeu 112",
+				"157 (d1,c0) >> ParameterTest2",
+				"158 (d1,c0) <-> proxy DynamicSink Start ParameterTest2 client:True",
+				"159 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
+				"160 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
+				"161 (d1,c0) <-> global DynamicSink Start ParameterTest2 client:True",
+				"162 (d1,c0) <-> defcontext DynamicSink Start ParameterTest2 client:True",
+				"163 (d1,c1) <-> global DynamicSink Start ParameterTest2 client:False",
+				"164 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
+
+				"165 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
+				"166 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
+				"167 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
+				"168 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
+				"169 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
+				"170 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
+				"171 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
+				"172 (d1,c1) <-> global DynamicSink Finish ParameterTest2 client:False",
+				"173 (d1,c0) <-> global DynamicSink Finish ParameterTest2 client:True",
+				"174 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest2 client:True",
+				"175 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
+				"176 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
+				"177 (d1,c0) <-> proxy DynamicSink Finish ParameterTest2 client:True",
+				"178 (d1,c0) << ParameterTest2",
+				"179 (d1,c0) ParameterTest2 Result: 113",
+				"180 (d1,c0) >> Creating two remote items",
+				"181 (d1,c0) <-> proxy DynamicSink Start CreateItem client:True",
+				"182 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage CreateItem",
+				"183 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage CreateItem",
+				"184 (d1,c0) <-> global DynamicSink Start CreateItem client:True",
+				"185 (d1,c0) <-> defcontext DynamicSink Start CreateItem client:True",
+				"186 (d1,c1) <-> global DynamicSink Start CreateItem client:False",
+				"187 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage CreateItem",
+				"188 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage CreateItem",
+				"189 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage CreateItem",
+				"190 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage CreateItem",
+				"191 (d1,c1) ServerObject S0: setting 33",
+				"192 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage CreateItem",
+				"193 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage CreateItem",
+				"194 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage CreateItem",
+				"195 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage CreateItem",
+				"196 (d1,c1) <-> global DynamicSink Finish CreateItem client:False",
+				"197 (d1,c0) <-> global DynamicSink Finish CreateItem client:True",
+				"198 (d1,c0) <-> defcontext DynamicSink Finish CreateItem client:True",
+				"199 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage CreateItem",
+				"200 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage CreateItem",
+				"201 (d1,c0) <-> proxy DynamicSink Finish CreateItem client:True",
+				"202 (d1,c0) ServerObject S0: setting 55",
+				"203 (d1,c0) <-> proxy DynamicSink Start Add client:True",
+				"204 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
+				"205 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
+				"206 (d1,c0) <-> global DynamicSink Start Add client:True",
+				"207 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
+				"208 (d1,c1) <-> global DynamicSink Start Add client:False",
+				"209 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
+				"210 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
+				"211 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
+				"212 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
+				"213 (d1,c1) Added S0",
+				"214 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
+				"215 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
+				"216 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
+				"217 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
+				"218 (d1,c1) <-> global DynamicSink Finish Add client:False",
+				"219 (d1,c0) <-> global DynamicSink Finish Add client:True",
+				"220 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
+				"221 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
+				"222 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
+				"223 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
+				"224 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
+				"225 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"226 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"227 (d1,c0) <-> global DynamicSink Start NewItem client:True",
+				"228 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
+				"229 (d1,c1) <-> global DynamicSink Start NewItem client:False",
+				"230 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"231 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"232 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"233 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"234 (d1,c1) Added S1",
+				"235 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"236 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"237 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"238 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"239 (d1,c1) <-> global DynamicSink Finish NewItem client:False",
+				"240 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
+				"241 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
+				"242 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"243 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"244 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
+				"245 (d1,c0) ServerObject S1: setting 111",
+				"246 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
+				"247 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"248 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"249 (d1,c0) <-> global DynamicSink Start NewItem client:True",
+				"250 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
+				"251 (d1,c1) <-> global DynamicSink Start NewItem client:False",
+				"252 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"253 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"254 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"255 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"256 (d1,c1) Added S2",
+				"257 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"258 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"259 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"260 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"261 (d1,c1) <-> global DynamicSink Finish NewItem client:False",
+				"262 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
+				"263 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
+				"264 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"265 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"266 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
+				"267 (d1,c0) ServerObject S2: setting 222",
+				"268 (d1,c0) << Creating two remote items",
+				"269 (d1,c0) >> Creating two client items",
+				"270 (d1,c0) ServerObject C1: setting 333",
+				"271 (d1,c0) ServerObject C2: setting 444",
+				"272 (d1,c0) << Creating two client items",
+				"273 (d1,c0) >> Adding items",
+				"274 (d1,c0) <-> proxy DynamicSink Start Add client:True",
+				"275 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
+				"276 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
+				"277 (d1,c0) <-> global DynamicSink Start Add client:True",
+				"278 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
+				"279 (d1,c1) <-> global DynamicSink Start Add client:False",
+				"280 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
+				"281 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
+				"282 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
+				"283 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
+				"284 (d1,c1) Added C1",
+				"285 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
+				"286 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
+				"287 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
+				"288 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
+				"289 (d1,c1) <-> global DynamicSink Finish Add client:False",
+				"290 (d1,c0) <-> global DynamicSink Finish Add client:True",
+				"291 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
+				"292 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
+				"293 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
+				"294 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
+				"295 (d1,c0) <-> proxy DynamicSink Start Add client:True",
+				"296 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
+				"297 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
+				"298 (d1,c0) <-> global DynamicSink Start Add client:True",
+				"299 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
+				"300 (d1,c1) <-> global DynamicSink Start Add client:False",
+				"301 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
+				"302 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
+
+				"303 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
+				"304 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
+				"305 (d1,c1) Added C2",
+				"306 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
+				"307 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
+				"308 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
+				"309 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
+				"310 (d1,c1) <-> global DynamicSink Finish Add client:False",
+				"311 (d1,c0) <-> global DynamicSink Finish Add client:True",
+				"312 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
+				"313 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
+				"314 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
+				"315 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
+				"316 (d1,c0) << Adding items",
+				"317 (d1,c0) >> Processing items",
+				"318 (d1,c0) <-> proxy DynamicSink Start ProcessItems client:True",
+				"319 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ProcessItems",
+				"320 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ProcessItems",
+				"321 (d1,c0) <-> global DynamicSink Start ProcessItems client:True",
+				"322 (d1,c0) <-> defcontext DynamicSink Start ProcessItems client:True",
+				"323 (d1,c1) <-> global DynamicSink Start ProcessItems client:False",
+				"324 (d1,c1) --> ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
+				"325 (d1,c1) --> ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
+				"326 (d1,c1) --> ObjectSink(1.d1) SyncProcessMessage ProcessItems",
+				"327 (d1,c1) --> ObjectSink(x.d1) SyncProcessMessage ProcessItems",
+				"328 (d1,c1) Processing",
+				"329 (d1,c1) ServerObject S0: getting 55",
+				"330 (d1,c1) ServerObject S1: getting 111",
+				"331 (d1,c1) ServerObject S2: getting 222",
+				"332 (d1,c1) ServerObject C1: getting 333",
+				"333 (d1,c1) ServerObject C2: getting 444",
+				"334 (d1,c1) Total: 1165",
+				"335 (d1,c1) <-- ObjectSink(x.d1) SyncProcessMessage ProcessItems",
+				"336 (d1,c1) <-- ObjectSink(1.d1) SyncProcessMessage ProcessItems",
+				"337 (d1,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
+				"338 (d1,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
+				"339 (d1,c1) <-> global DynamicSink Finish ProcessItems client:False",
+				"340 (d1,c0) <-> global DynamicSink Finish ProcessItems client:True",
+				"341 (d1,c0) <-> defcontext DynamicSink Finish ProcessItems client:True",
+
+				"342 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ProcessItems",
+				"343 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ProcessItems",
+				"344 (d1,c0) <-> proxy DynamicSink Finish ProcessItems client:True",
+				"345 (d1,c0) << Processing items",
+				"346 (d1,c0) << TestNewContext",
+		};
+
+		public static string[] seqRemoteContext =
+			{
+				"001 (d1,c0) >> TestRemoteContext",
+				"002 (d1,c0) >> Creating instance",
+				"003 (d1,c0) IContextAttribute(1.d1).GetPropertiesForNewContext",
+				"004 (d1,c0) IContextAttribute(x.d1).GetPropertiesForNewContext",
+				"005 (d1,c0) <-> global DynamicSink Start .ctor client:True",
+				"006 (d1,c0) <-> global DynamicSink Start Activate client:True",
+				"001 (d2,c0) IContextAttribute(x.d2).GetPropertiesForNewContext",
+				"002 (d2,c0) ContextHookAttribute(1.d1).Freeze",
+				"003 (d2,c0) ContextHookAttribute(x.d1).Freeze",
+				"004 (d2,c0) ContextHookAttribute(x.d2).Freeze",
+				"005 (d2,c0) ContextHookAttribute(1.d1).IsNewContextOK",
+				"006 (d2,c0) ContextHookAttribute(x.d1).IsNewContextOK",
+				"007 (d2,c0) ContextHookAttribute(x.d2).IsNewContextOK",
+				"008 (d2,c1) IContributeServerContextSink(x.d2).GetServerContextSink",
+				"009 (d2,c1) IContributeServerContextSink(x.d1).GetServerContextSink",
+				"010 (d2,c1) IContributeServerContextSink(1.d1).GetServerContextSink",
+				"011 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage .ctor",
+				"012 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage .ctor",
+				"013 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage .ctor",	
+				"014 (d2,c1) IContributeEnvoySink(1.d1).GetEnvoySink",
+				"015 (d2,c1) IContributeEnvoySink(x.d1).GetEnvoySink",
+				"016 (d2,c1) IContributeEnvoySink(x.d2).GetEnvoySink",
+				"017 (d2,c1) List created",
+				"018 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage .ctor",
+				"019 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage .ctor",
+				"020 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage .ctor",
+				"#021 (d2,c0) IContributeObjectSink(x.d2).GetObjectSink",
+				"#022 (d2,c0) IContributeObjectSink(x.d1).GetObjectSink",
+				"#023 (d2,c0) IContributeObjectSink(1.d1).GetObjectSink",
+				"024 (d2,c0) --> EnvoySink(x.d2) SyncProcessMessage InitializeLifetimeService",
+				"025 (d2,c0) --> EnvoySink(x.d1) SyncProcessMessage InitializeLifetimeService",
+				"026 (d2,c0) --> EnvoySink(1.d1) SyncProcessMessage InitializeLifetimeService",
+				"027 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage InitializeLifetimeService",
+				"028 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage InitializeLifetimeService",
+				"029 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage InitializeLifetimeService",
+				"030 (d2,c1) IContributeObjectSink(x.d2).GetObjectSink",
+				"031 (d2,c1) IContributeObjectSink(x.d1).GetObjectSink",
+				"032 (d2,c1) IContributeObjectSink(1.d1).GetObjectSink",
+				"033 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage InitializeLifetimeService",
+				"034 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage InitializeLifetimeService",
+				"035 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage InitializeLifetimeService",
+				"036 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage InitializeLifetimeService",
+				"037 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage InitializeLifetimeService",
+				"038 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage InitializeLifetimeService",
+				"039 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage InitializeLifetimeService",
+				"040 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage InitializeLifetimeService",
+				"041 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage InitializeLifetimeService",
+				"042 (d2,c0) <-- EnvoySink(1.d1) SyncProcessMessage InitializeLifetimeService",
+				"043 (d2,c0) <-- EnvoySink(x.d1) SyncProcessMessage InitializeLifetimeService",
+				"044 (d2,c0) <-- EnvoySink(x.d2) SyncProcessMessage InitializeLifetimeService",
+				"007 (d1,c0) <-> global DynamicSink Finish Activate client:True",
+				"008 (d1,c0) <-> global DynamicSink Finish .ctor client:True",
+				"009 (d1,c0) << Creating instance",
+				"010 (d1,c0) IContributeDynamicSink(defcontext).GetDynamicSink",
+				"011 (d1,c0) IContributeDynamicSink(proxy).GetDynamicSink",
+				"012 (d1,c0) >> Clear",
+				"013 (d1,c0) <-> proxy DynamicSink Start Clear client:True",
+				"014 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Clear",
+				"015 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Clear",
+				"016 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Clear",
+				"017 (d1,c0) <-> global DynamicSink Start Clear client:True",
+				"018 (d1,c0) <-> defcontext DynamicSink Start Clear client:True",
+				"045 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Clear",
+				"046 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Clear",
+				"047 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Clear",
+				"048 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Clear",
+				"049 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Clear",
+				"050 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Clear",
+				"051 (d2,c1) Clearing",
+				"052 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Clear",
+				"053 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Clear",
+				"054 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Clear",
+				"055 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Clear",
+				"056 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Clear",
+				"057 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Clear",
+				"019 (d1,c0) <-> global DynamicSink Finish Clear client:True",
+				"020 (d1,c0) <-> defcontext DynamicSink Finish Clear client:True",
+				"021 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Clear",
+				"022 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Clear",
+				"023 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Clear",
+				"024 (d1,c0) <-> proxy DynamicSink Finish Clear client:True",
+				"025 (d1,c0) << Clear",
+				"026 (d1,c0) >> Set fields",
+				"027 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
+				"028 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldSetter",
+				"029 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+				"030 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"031 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
+				"032 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
+				"058 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"059 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"060 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
+				"061 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"062 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"063 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldSetter",
+				"064 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldSetter",
+				"065 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"066 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"067 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
+				"068 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"069 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"033 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
+				"034 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
+				"035 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"036 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+
+				"037 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldSetter",
+
+				"038 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
+				"039 (d1,c0) <-> proxy DynamicSink Start FieldSetter client:True",
+				"040 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldSetter",
+				"041 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+				"042 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"043 (d1,c0) <-> global DynamicSink Start FieldSetter client:True",
+				"044 (d1,c0) <-> defcontext DynamicSink Start FieldSetter client:True",
+				"070 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"071 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"072 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
+				"073 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"074 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"075 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldSetter",
+				"076 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldSetter",
+				"077 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldSetter",
+				"078 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldSetter",
+				"079 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldSetter",
+				"080 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldSetter",
+				"081 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldSetter",
+				"045 (d1,c0) <-> global DynamicSink Finish FieldSetter client:True",
+				"046 (d1,c0) <-> defcontext DynamicSink Finish FieldSetter client:True",
+				"047 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldSetter",
+				"048 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldSetter",
+				"049 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldSetter",
+				"050 (d1,c0) <-> proxy DynamicSink Finish FieldSetter client:True",
+				"051 (d1,c0) << Set fields",
+				"052 (d1,c0) >> Get fields",
+				"053 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
+				"054 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldGetter",
+				"055 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+				"056 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"057 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
+				"058 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
+				"082 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"083 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"084 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
+				"085 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"086 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+				"087 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldGetter",
+				"088 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldGetter",
+				"089 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+				"090 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"091 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
+				"092 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"093 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"059 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
+				"060 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
+				"061 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"062 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+				"063 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldGetter",
+				"064 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
+				"065 (d1,c0) <-> proxy DynamicSink Start FieldGetter client:True",
+				"066 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage FieldGetter",
+				"067 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+				"068 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"069 (d1,c0) <-> global DynamicSink Start FieldGetter client:True",
+				"070 (d1,c0) <-> defcontext DynamicSink Start FieldGetter client:True",
+				"094 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"095 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"096 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
+				"097 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"098 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+				"099 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage FieldGetter",
+				"100 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage FieldGetter",
+				"101 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage FieldGetter",
+				"102 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage FieldGetter",
+				"103 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage FieldGetter",
+				"104 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage FieldGetter",
+				"105 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage FieldGetter",
+				"071 (d1,c0) <-> global DynamicSink Finish FieldGetter client:True",
+				"072 (d1,c0) <-> defcontext DynamicSink Finish FieldGetter client:True",
+				"073 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage FieldGetter",
+				"074 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage FieldGetter",
+				"075 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage FieldGetter",
+				"076 (d1,c0) <-> proxy DynamicSink Finish FieldGetter client:True",
+				"077 (d1,c0) << Get fields",
+				"078 (d1,c0) Get fields Result: 4 / hi",
+				"079 (d1,c0) >> ParameterTest1",
+				"080 (d1,c0) <-> proxy DynamicSink Start ParameterTest1 client:True",
+				"081 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ParameterTest1",
+				"082 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
+				"083 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
+				"084 (d1,c0) <-> global DynamicSink Start ParameterTest1 client:True",
+				"085 (d1,c0) <-> defcontext DynamicSink Start ParameterTest1 client:True",
+				"106 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
+				"107 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
+				"108 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ParameterTest1",
+				"109 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
+				"110 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
+				"111 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ParameterTest1",
+				"112 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ParameterTest1",
+				"113 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest1",
+				"114 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest1",
+				"115 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ParameterTest1",
+				"116 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest1",
+				"117 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest1",
+				"086 (d1,c0) <-> global DynamicSink Finish ParameterTest1 client:True",
+				"087 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest1 client:True",
+				"088 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest1",
+				"089 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest1",
+				"090 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ParameterTest1",
+				"091 (d1,c0) <-> proxy DynamicSink Finish ParameterTest1 client:True",
+				"092 (d1,c0) << ParameterTest1",
+				"093 (d1,c0) ParameterTest1 Result: adeu 112",
+				"094 (d1,c0) >> ParameterTest2",
+				"095 (d1,c0) <-> proxy DynamicSink Start ParameterTest2 client:True",
+				"096 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ParameterTest2",
+				"097 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
+				"098 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
+				"099 (d1,c0) <-> global DynamicSink Start ParameterTest2 client:True",
+				"100 (d1,c0) <-> defcontext DynamicSink Start ParameterTest2 client:True",
+				"118 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
+				"119 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
+
+				"120 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ParameterTest2",
+				"121 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
+				"122 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
+				"123 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ParameterTest2",
+				"124 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ParameterTest2",
+				"125 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ParameterTest2",
+				"126 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ParameterTest2",
+				"127 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ParameterTest2",
+				"128 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ParameterTest2",
+				"129 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ParameterTest2",
+				"101 (d1,c0) <-> global DynamicSink Finish ParameterTest2 client:True",
+				"102 (d1,c0) <-> defcontext DynamicSink Finish ParameterTest2 client:True",
+				"103 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ParameterTest2",
+				"104 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ParameterTest2",
+				"105 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ParameterTest2",
+				"106 (d1,c0) <-> proxy DynamicSink Finish ParameterTest2 client:True",
+				"107 (d1,c0) << ParameterTest2",
+				"108 (d1,c0) ParameterTest2 Result: 113",
+				"109 (d1,c0) >> Creating two remote items",
+				"110 (d1,c0) <-> proxy DynamicSink Start CreateItem client:True",
+				"111 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage CreateItem",
+				"112 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage CreateItem",
+				"113 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage CreateItem",
+				"114 (d1,c0) <-> global DynamicSink Start CreateItem client:True",
+				"115 (d1,c0) <-> defcontext DynamicSink Start CreateItem client:True",
+				"130 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage CreateItem",
+				"131 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage CreateItem",
+				"132 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage CreateItem",
+				"133 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage CreateItem",
+				"134 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage CreateItem",
+				"135 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage CreateItem",
+				"136 (d2,c1) ServerObject S0: setting 33",
+				"137 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage CreateItem",
+				"138 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage CreateItem",
+				"139 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage CreateItem",
+				"140 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage CreateItem",
+				"141 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage CreateItem",
+				"142 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage CreateItem",
+				"143 (d2,c0) ### ServerObject.CreateObjRef",
+				"116 (d1,c0) <-> global DynamicSink Finish CreateItem client:True",
+				"117 (d1,c0) <-> defcontext DynamicSink Finish CreateItem client:True",
+				"118 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage CreateItem",
+				"119 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage CreateItem",
+				"120 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage CreateItem",
+				"121 (d1,c0) <-> proxy DynamicSink Finish CreateItem client:True",
+				"122 (d1,c0) <-> global DynamicSink Start SetValue client:True",
+				"123 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
+				"144 (d2,c0) ServerObject S0: setting 55",
+				"124 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
+				"125 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
+				"126 (d1,c0) <-> proxy DynamicSink Start Add client:True",
+				"127 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
+				"128 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
+				"129 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
+				"130 (d1,c0) <-> global DynamicSink Start Add client:True",
+				"131 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
+				"145 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
+				"146 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
+				"147 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
+				"148 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
+				"149 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
+				"150 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
+				"151 (d2,c1) Added S0",
+				"152 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
+				"153 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
+				"154 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
+				"155 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
+				"156 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
+				"157 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
+				"132 (d1,c0) <-> global DynamicSink Finish Add client:True",
+				"133 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
+				"134 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
+				"135 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
+				"136 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
+				"137 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
+				"138 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
+				"139 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage NewItem",
+				"140 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"141 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"142 (d1,c0) <-> global DynamicSink Start NewItem client:True",
+				"143 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
+				"158 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"159 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"160 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage NewItem",
+				"161 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"162 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"163 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage NewItem",
+				"164 (d2,c1) Added S1",
+				"165 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage NewItem",
+				"166 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"167 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"168 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage NewItem",
+				"169 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"170 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"171 (d2,c0) ### ServerObject.CreateObjRef",
+				"144 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
+				"145 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
+				"146 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"147 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"148 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage NewItem",
+				"149 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
+				"150 (d1,c0) <-> global DynamicSink Start SetValue client:True",
+				"151 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
+				"172 (d2,c0) ServerObject S1: setting 111",
+				"152 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
+				"153 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
+				"154 (d1,c0) <-> proxy DynamicSink Start NewItem client:True",
+				"155 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage NewItem",
+				"156 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"157 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"158 (d1,c0) <-> global DynamicSink Start NewItem client:True",
+				"159 (d1,c0) <-> defcontext DynamicSink Start NewItem client:True",
+				"173 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"174 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"175 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage NewItem",
+				"176 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"177 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"178 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage NewItem",
+				"179 (d2,c1) Added S2",
+				"180 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage NewItem",
+				"181 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage NewItem",
+				"182 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage NewItem",
+				"183 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage NewItem",
+				"184 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage NewItem",
+				"185 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage NewItem",
+				"186 (d2,c0) ### ServerObject.CreateObjRef",
+				"160 (d1,c0) <-> global DynamicSink Finish NewItem client:True",
+				"161 (d1,c0) <-> defcontext DynamicSink Finish NewItem client:True",
+				"162 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage NewItem",
+				"163 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage NewItem",
+				"164 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage NewItem",
+				"165 (d1,c0) <-> proxy DynamicSink Finish NewItem client:True",
+				"166 (d1,c0) <-> global DynamicSink Start SetValue client:True",
+				"167 (d1,c0) <-> defcontext DynamicSink Start SetValue client:True",
+				"187 (d2,c0) ServerObject S2: setting 222",
+				"168 (d1,c0) <-> global DynamicSink Finish SetValue client:True",
+				"169 (d1,c0) <-> defcontext DynamicSink Finish SetValue client:True",
+				"170 (d1,c0) << Creating two remote items",
+				"171 (d1,c0) >> Creating two client items",
+				"172 (d1,c0) ServerObject C1: setting 333",
+				"173 (d1,c0) ServerObject C2: setting 444",
+				"174 (d1,c0) << Creating two client items",
+				"175 (d1,c0) >> Adding items",
+				"176 (d1,c0) <-> proxy DynamicSink Start Add client:True",
+				"177 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
+				"178 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
+				"179 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
+				"180 (d1,c0) <-> global DynamicSink Start Add client:True",
+				"181 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
+				"182 (d1,c0) ### ServerObject.CreateObjRef",
+				"188 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
+				"189 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
+				"190 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
+				"191 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
+				"192 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
+				"193 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
+				"194 (d2,c1) IContributeClientContextSink(1.d1).GetClientContextSink",
+				"195 (d2,c1) IContributeClientContextSink(x.d1).GetClientContextSink",
+				"196 (d2,c1) IContributeClientContextSink(x.d2).GetClientContextSink",
+				"197 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage get_Name",
+				"198 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage get_Name",
+				"199 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage get_Name",
+				"183 (d1,c0) <-> global DynamicSink Start get_Name client:False",
+				"184 (d1,c0) <-> defcontext DynamicSink Start get_Name client:False",
+				"185 (d1,c0) <-> global DynamicSink Finish get_Name client:False",
+				"186 (d1,c0) <-> defcontext DynamicSink Finish get_Name client:False",
+				"200 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage get_Name",
+				"201 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage get_Name",
+				"202 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage get_Name",
+				"203 (d2,c1) Added C1",
+				"204 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
+				"205 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
+				"206 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
+				"207 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
+				"208 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
+				"209 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
+				"187 (d1,c0) <-> global DynamicSink Finish Add client:True",
+				"188 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
+				"189 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
+				"190 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
+				"191 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
+				"192 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
+				"193 (d1,c0) <-> proxy DynamicSink Start Add client:True",
+				"194 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage Add",
+				"195 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage Add",
+				"196 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage Add",
+				"197 (d1,c0) <-> global DynamicSink Start Add client:True",
+				"198 (d1,c0) <-> defcontext DynamicSink Start Add client:True",
+				"199 (d1,c0) ### ServerObject.CreateObjRef",
+				"210 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage Add",
+				"211 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage Add",
+				"212 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage Add",
+				"213 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage Add",
+				"214 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage Add",
+				"215 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage Add",
+				"216 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage get_Name",
+				"217 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage get_Name",
+				"218 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage get_Name",
+				"200 (d1,c0) <-> global DynamicSink Start get_Name client:False",
+				"201 (d1,c0) <-> defcontext DynamicSink Start get_Name client:False",
+				"202 (d1,c0) <-> global DynamicSink Finish get_Name client:False",
+				"203 (d1,c0) <-> defcontext DynamicSink Finish get_Name client:False",
+				"219 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage get_Name",
+				"220 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage get_Name",
+				"221 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage get_Name",
+				"222 (d2,c1) Added C2",
+				"223 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage Add",
+				"224 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage Add",
+				"225 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage Add",
+				"226 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage Add",
+				"227 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage Add",
+				"228 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage Add",
+				"204 (d1,c0) <-> global DynamicSink Finish Add client:True",
+				"205 (d1,c0) <-> defcontext DynamicSink Finish Add client:True",
+				"206 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage Add",
+				"207 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage Add",
+				"208 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage Add",
+				"209 (d1,c0) <-> proxy DynamicSink Finish Add client:True",
+				"210 (d1,c0) << Adding items",
+				"211 (d1,c0) >> Processing items",
+				"212 (d1,c0) <-> proxy DynamicSink Start ProcessItems client:True",
+				"213 (d1,c0) --> EnvoySink(x.d2) SyncProcessMessage ProcessItems",
+				"214 (d1,c0) --> EnvoySink(x.d1) SyncProcessMessage ProcessItems",
+				"215 (d1,c0) --> EnvoySink(1.d1) SyncProcessMessage ProcessItems",
+				"216 (d1,c0) <-> global DynamicSink Start ProcessItems client:True",
+				"217 (d1,c0) <-> defcontext DynamicSink Start ProcessItems client:True",
+				"229 (d2,c1) --> ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
+				"230 (d2,c1) --> ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
+				"231 (d2,c1) --> ServerContextSink(x.d2) SyncProcessMessage ProcessItems",
+				"232 (d2,c1) --> ObjectSink(1.d1) SyncProcessMessage ProcessItems",
+				"233 (d2,c1) --> ObjectSink(x.d1) SyncProcessMessage ProcessItems",
+				"234 (d2,c1) --> ObjectSink(x.d2) SyncProcessMessage ProcessItems",
+				"235 (d2,c1) Processing",
+				"236 (d2,c1) ServerObject S0: getting 55",
+				"237 (d2,c1) ServerObject S1: getting 111",
+				"238 (d2,c1) ServerObject S2: getting 222",
+				"239 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage GetValue",
+				"240 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage GetValue",
+				"241 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage GetValue",
+				"218 (d1,c0) <-> global DynamicSink Start GetValue client:False",
+				"219 (d1,c0) <-> defcontext DynamicSink Start GetValue client:False",
+				"220 (d1,c0) ServerObject C1: getting 333",
+				"221 (d1,c0) <-> global DynamicSink Finish GetValue client:False",
+				"222 (d1,c0) <-> defcontext DynamicSink Finish GetValue client:False",
+				"242 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage GetValue",
+				"243 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage GetValue",
+				"244 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage GetValue",
+				"245 (d2,c1) --> ClientContextSink(x.d2) SyncProcessMessage GetValue",
+				"246 (d2,c1) --> ClientContextSink(x.d1) SyncProcessMessage GetValue",
+				"247 (d2,c1) --> ClientContextSink(1.d1) SyncProcessMessage GetValue",
+				"223 (d1,c0) <-> global DynamicSink Start GetValue client:False",
+				"224 (d1,c0) <-> defcontext DynamicSink Start GetValue client:False",
+				"225 (d1,c0) ServerObject C2: getting 444",
+				"226 (d1,c0) <-> global DynamicSink Finish GetValue client:False",
+				"227 (d1,c0) <-> defcontext DynamicSink Finish GetValue client:False",
+				"248 (d2,c1) <-- ClientContextSink(1.d1) SyncProcessMessage GetValue",
+				"249 (d2,c1) <-- ClientContextSink(x.d1) SyncProcessMessage GetValue",
+				"250 (d2,c1) <-- ClientContextSink(x.d2) SyncProcessMessage GetValue",
+				"251 (d2,c1) Total: 1165",
+				"252 (d2,c1) <-- ObjectSink(x.d2) SyncProcessMessage ProcessItems",
+				"253 (d2,c1) <-- ObjectSink(x.d1) SyncProcessMessage ProcessItems",
+				"254 (d2,c1) <-- ObjectSink(1.d1) SyncProcessMessage ProcessItems",
+				"255 (d2,c1) <-- ServerContextSink(x.d2) SyncProcessMessage ProcessItems",
+				"256 (d2,c1) <-- ServerContextSink(x.d1) SyncProcessMessage ProcessItems",
+				"257 (d2,c1) <-- ServerContextSink(1.d1) SyncProcessMessage ProcessItems",
+				"228 (d1,c0) <-> global DynamicSink Finish ProcessItems client:True",
+				"229 (d1,c0) <-> defcontext DynamicSink Finish ProcessItems client:True",
+				"230 (d1,c0) <-- EnvoySink(1.d1) SyncProcessMessage ProcessItems",
+				"231 (d1,c0) <-- EnvoySink(x.d1) SyncProcessMessage ProcessItems",
+				"232 (d1,c0) <-- EnvoySink(x.d2) SyncProcessMessage ProcessItems",
+				"233 (d1,c0) <-> proxy DynamicSink Finish ProcessItems client:True",
+				"234 (d1,c0) << Processing items",
+				"235 (d1,c0) << TestRemoteContext",
+		};
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Test/HttpCalls.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Test/HttpCalls.cs
@@ -1,96 +1,96 @@
-//
-// MonoTests.Remoting.HttpCalls.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2003 (C) Copyright, Ximian, Inc.
-//
-
-using System;
-using System.Collections;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Http;
-using NUnit.Framework;
-
-namespace MonoTests.Remoting
-{
-	//[TestFixture]
-	public class HttpSyncCallTest : SyncCallTest
-	{
-		public override ChannelManager CreateChannelManager ()
-		{
-			return new HttpChannelManager ();
-		}
-	}
-
-	//[TestFixture]
-	public class HttpAsyncCallTest : AsyncCallTest
-	{
-		public override ChannelManager CreateChannelManager ()
-		{
-			return new HttpChannelManager ();
-		}
-	}
-
-	//[TestFixture]
-	public class HttpReflectionCallTest : ReflectionCallTest
-	{
-		public override ChannelManager CreateChannelManager ()
-		{
-			return new HttpChannelManager ();
-		}
-	}
-
-	//[TestFixture]
-	public class HttpDelegateCallTest : DelegateCallTest
-	{
-		public override ChannelManager CreateChannelManager ()
-		{
-			return new HttpChannelManager ();
-		}
-	}
-	
-	//[TestFixture]
-	public class HttpBinarySyncCallTest : SyncCallTest
-	{
-		public override ChannelManager CreateChannelManager ()
-		{
-			return new HttpChannelManager ();
-		}
-	}
-
-	[Serializable]
-	public class HttpChannelManager : ChannelManager
-	{
-		public override IChannelSender CreateClientChannel ()
-		{
-			Hashtable options = new Hashtable ();
-			options ["timeout"] = 10000; // 10s
-			return new HttpClientChannel (options, null);
-		}
-
-		public override IChannelReceiver CreateServerChannel ()
-		{
-			return new HttpChannel (0);
-		}
-	}
-	
-	[Serializable]
-	public class HttpBinaryChannelManager : ChannelManager
-	{
-		public override IChannelSender CreateClientChannel ()
-		{
-			Hashtable options = new Hashtable ();
-			options ["timeout"] = 10000; // 10s
-			options ["name"] = "binary http channel";
-			return new HttpClientChannel (options,  new BinaryClientFormatterSinkProvider ());
-		}
-
-		public override IChannelReceiver CreateServerChannel ()
-		{
-			return new HttpChannel (0);
-		}
-	}
-}
-
+//
+// MonoTests.Remoting.HttpCalls.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2003 (C) Copyright, Ximian, Inc.
+//
+
+using System;
+using System.Collections;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Http;
+using NUnit.Framework;
+
+namespace MonoTests.Remoting
+{
+	//[TestFixture]
+	public class HttpSyncCallTest : SyncCallTest
+	{
+		public override ChannelManager CreateChannelManager ()
+		{
+			return new HttpChannelManager ();
+		}
+	}
+
+	//[TestFixture]
+	public class HttpAsyncCallTest : AsyncCallTest
+	{
+		public override ChannelManager CreateChannelManager ()
+		{
+			return new HttpChannelManager ();
+		}
+	}
+
+	//[TestFixture]
+	public class HttpReflectionCallTest : ReflectionCallTest
+	{
+		public override ChannelManager CreateChannelManager ()
+		{
+			return new HttpChannelManager ();
+		}
+	}
+
+	//[TestFixture]
+	public class HttpDelegateCallTest : DelegateCallTest
+	{
+		public override ChannelManager CreateChannelManager ()
+		{
+			return new HttpChannelManager ();
+		}
+	}
+	
+	//[TestFixture]
+	public class HttpBinarySyncCallTest : SyncCallTest
+	{
+		public override ChannelManager CreateChannelManager ()
+		{
+			return new HttpChannelManager ();
+		}
+	}
+
+	[Serializable]
+	public class HttpChannelManager : ChannelManager
+	{
+		public override IChannelSender CreateClientChannel ()
+		{
+			Hashtable options = new Hashtable ();
+			options ["timeout"] = 10000; // 10s
+			return new HttpClientChannel (options, null);
+		}
+
+		public override IChannelReceiver CreateServerChannel ()
+		{
+			return new HttpChannel (0);
+		}
+	}
+	
+	[Serializable]
+	public class HttpBinaryChannelManager : ChannelManager
+	{
+		public override IChannelSender CreateClientChannel ()
+		{
+			Hashtable options = new Hashtable ();
+			options ["timeout"] = 10000; // 10s
+			options ["name"] = "binary http channel";
+			return new HttpClientChannel (options,  new BinaryClientFormatterSinkProvider ());
+		}
+
+		public override IChannelReceiver CreateServerChannel ()
+		{
+			return new HttpChannel (0);
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Test/RemotingServicesTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Test/RemotingServicesTest.cs
@@ -1,578 +1,578 @@
-//
-// System.Runtime.Remoting.RemotingServices NUnit V2.0 test class
-//
-// Author Jean-Marc ANDRE (jean-marc.andre@polymtl.ca)
-//
-// ToDo: I didn't write test functions for the method not yep
-// implemented by Mono
-
-using System;
-using System.Collections;
-using NUnit.Framework;
-using System.Reflection;
-using System.Runtime.Remoting;
-using System.Threading;
-using System.Runtime.Remoting.Activation;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Remoting.Proxies;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-
-namespace MonoTests.System.Runtime.Remoting.RemotingServicesInternal
-{
-	// We need our own proxy to intercept messages to remote object
-	// and forward them using RemotingServices.ExecuteMessage
-	public class MyProxy : RealProxy
-	{
-		MarshalByRefObject target;
-		IMessageSink _sink;
-		MethodBase _mthBase;
-		bool methodOverloaded = false;
-
-		public MethodBase MthBase {
-			get { return _mthBase; }
-		}
-
-		public bool IsMethodOverloaded {
-			get { return methodOverloaded; }
-		}
-
-		public MyProxy (Type serverType, MarshalByRefObject target)
-			: base (serverType)
-		{
-			this.target = target;
-
-			IChannel [] registeredChannels = ChannelServices.RegisteredChannels;
-			string ObjectURI;
-
-			// A new IMessageSink chain has to be created
-			// since the RemotingServices.GetEnvoyChainForProxy() is not yet
-			// implemented.
-			foreach (IChannel channel in registeredChannels) {
-				IChannelSender channelSender = channel as IChannelSender;
-				if (channelSender != null) {
-					_sink = (IMessageSink) channelSender.CreateMessageSink (RemotingServices.GetObjectUri (target), null, out ObjectURI);
-				}
-			}
-
-		}
-
-		// Messages will be intercepted here and redirected
-		// to another object.
-		public override IMessage Invoke (IMessage msg)
-		{
-			try {
-				if (msg is IConstructionCallMessage) {
-					IActivator remActivator = (IActivator) RemotingServices.Connect (typeof (IActivator), "tcp://localhost:1234/RemoteActivationService.rem");
-					IConstructionReturnMessage crm = remActivator.Activate ((IConstructionCallMessage) msg);
-					return crm;
-				} else {
-					methodOverloaded = RemotingServices.IsMethodOverloaded ((IMethodMessage) msg);
-
-					_mthBase = RemotingServices.GetMethodBaseFromMethodMessage ((IMethodMessage) msg);
-					MethodCallMessageWrapper mcm = new MethodCallMessageWrapper ((IMethodCallMessage) msg);
-					mcm.Uri = RemotingServices.GetObjectUri ((MarshalByRefObject) target);
-					MarshalByRefObject objRem = (MarshalByRefObject) Activator.CreateInstance (GetProxiedType ());
-					RemotingServices.ExecuteMessage ((MarshalByRefObject) objRem, (IMethodCallMessage) msg);
-					IMessage rtnMsg = null;
-
-					try {
-						rtnMsg = _sink.SyncProcessMessage (msg);
-					} catch (Exception e) {
-						Console.WriteLine (e.Message);
-					}
-
-					Console.WriteLine ("RR:" + rtnMsg);
-					return rtnMsg;
-				}
-			} catch (Exception ex) {
-				Console.WriteLine (ex);
-				return null;
-			}
-		}
-	} // end MyProxy
-
-	// This class is used to create "CAO"
-	public class MarshalObjectFactory : MarshalByRefObject
-	{
-		public MarshalObject GetNewMarshalObject ()
-		{
-			return new MarshalObject ();
-		}
-	}
-
-	// A class used by the tests
-	public class MarshalObject : ContextBoundObject
-	{
-		public MarshalObject ()
-		{
-
-		}
-
-		public MarshalObject (int id, string uri)
-		{
-			this.id = id;
-			this.uri = uri;
-		}
-
-		public int Id {
-			get { return id; }
-			set { id = value; }
-		}
-
-		public string Uri {
-			get { return uri; }
-		}
-
-		public void Method1 ()
-		{
-			_called++;
-			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
-		}
-
-		public void Method2 ()
-		{
-			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
-		}
-
-		public void Method2 (int i)
-		{
-			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
-		}
-
-		[OneWay ()]
-		public void Method3 ()
-		{
-			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
-		}
-
-		public static int Called {
-			get { return _called; }
-		}
-
-		public static bool IsMethodOneWay {
-			get { return methodOneWay; }
-		}
-
-		private static int _called;
-		private int id = 0;
-		private string uri;
-		private static bool methodOneWay = false;
-	}
-
-	// Another class used by the tests
-	public class DerivedMarshalObject : MarshalObject
-	{
-		public DerivedMarshalObject () { }
-
-		public DerivedMarshalObject (int id, string uri) : base (id, uri) { }
-	}
-
-	interface A
-	{
-	}
-
-	interface B : A
-	{
-	}
-
-	public class CC : MarshalByRefObject
-	{
-	}
-
-	public class DD : MarshalByRefObject
-	{
-	}
-
-
-} // namespace MonoTests.System.Runtime.Remoting.RemotingServicesInternal
-
-namespace MonoTests.Remoting
-{
-	using MonoTests.System.Runtime.Remoting.RemotingServicesInternal;
-
-	// The main test class
-	[TestFixture]
-	public class RemotingServicesTest : Assertion
-	{
-		private static int MarshalObjectId = 0;
-
-		public RemotingServicesTest ()
-		{
-			MarshalObjectId = 0;
-		}
-
-		// Helper function that create a new
-		// MarshalObject with an unique ID
-		private static MarshalObject NewMarshalObject ()
-		{
-			string uri = "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject" + MarshalObjectId.ToString ();
-			MarshalObject objMarshal = new MarshalObject (MarshalObjectId, uri);
-
-			MarshalObjectId++;
-
-			return objMarshal;
-		}
-
-		// Another helper function
-		private DerivedMarshalObject NewDerivedMarshalObject ()
-		{
-			string uri = "MonoTests.System.Runtime.Remoting.RemotingServicesTest.DerivedMarshalObject" + MarshalObjectId.ToString ();
-			DerivedMarshalObject objMarshal = new DerivedMarshalObject (MarshalObjectId, uri);
-
-			MarshalObjectId++;
-
-			return objMarshal;
-		}
-
-		// The two folling method test RemotingServices.Marshal()
-		[Test]
-		public void Marshal1 ()
-		{
-
-			MarshalObject objMarshal = NewMarshalObject ();
-			ObjRef objRef = RemotingServices.Marshal (objMarshal);
-
-			Assert ("#A01", objRef.URI != null);
-
-			MarshalObject objRem = (MarshalObject) RemotingServices.Unmarshal (objRef);
-			AssertEquals ("#A02", objMarshal.Id, objRem.Id);
-
-			objRem.Id = 2;
-			AssertEquals ("#A03", objMarshal.Id, objRem.Id);
-
-			// TODO: uncomment when RemotingServices.Disconnect is implemented
-			//RemotingServices.Disconnect(objMarshal);
-
-			objMarshal = NewMarshalObject ();
-
-			objRef = RemotingServices.Marshal (objMarshal, objMarshal.Uri);
-
-			Assert ("#A04", objRef.URI.EndsWith (objMarshal.Uri));
-			// TODO: uncomment when RemotingServices.Disconnect is implemented
-			//RemotingServices.Disconnect(objMarshal);
-		}
-
-		[Test]
-		public void Marshal2 ()
-		{
-			DerivedMarshalObject derivedObjMarshal = NewDerivedMarshalObject ();
-
-			ObjRef objRef = RemotingServices.Marshal (derivedObjMarshal, derivedObjMarshal.Uri, typeof (MarshalObject));
-
-			// Check that the type of the marshaled object is MarshalObject
-			Assert ("#A05", objRef.TypeInfo.TypeName.StartsWith ((typeof (MarshalObject)).ToString ()));
-
-			// TODO: uncomment when RemotingServices.Disconnect is implemented
-			//RemotingServices.Disconnect(derivedObjMarshal);
-		}
-
-		// Tests RemotingServices.GetObjectUri()
-		[Test]
-		public void GetObjectUri ()
-		{
-			MarshalObject objMarshal = NewMarshalObject ();
-
-			Assert ("#A06", RemotingServices.GetObjectUri (objMarshal) == null);
-
-			RemotingServices.Marshal (objMarshal);
-
-			Assert ("#A07", RemotingServices.GetObjectUri (objMarshal) != null);
-			// TODO: uncomment when RemotingServices.Disconnect is implemented
-			//RemotingServices.Disconnect(objMarshal);
-		}
-
-		// Tests RemotingServices.Connect
-		[Test]
-		public void Connect ()
-		{
-			MarshalObject objMarshal = NewMarshalObject ();
-
-			IDictionary props = new Hashtable ();
-			props ["name"] = objMarshal.Uri;
-			props ["port"] = 1236;
-			TcpChannel chn = new TcpChannel (props, null, null);
-			ChannelServices.RegisterChannel (chn);
-
-			try {
-				RemotingServices.Marshal (objMarshal, objMarshal.Uri);
-				MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), "tcp://localhost:1236/" + objMarshal.Uri);
-				Assert ("#A08", RemotingServices.IsTransparentProxy (objRem));
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-				RemotingServices.Disconnect (objMarshal);
-			}
-		}
-
-		// Tests RemotingServices.Marshal()
-		[Test]
-		public void MarshalThrowException ()
-		{
-			MarshalObject objMarshal = NewMarshalObject ();
-
-			IDictionary props = new Hashtable ();
-			props ["name"] = objMarshal.Uri;
-			props ["port"] = 1237;
-			TcpChannel chn = new TcpChannel (props, null, null);
-			ChannelServices.RegisterChannel (chn);
-
-			try {
-				RemotingServices.Marshal (objMarshal, objMarshal.Uri);
-				MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), "tcp://localhost:1237/" + objMarshal.Uri);
-				// This line should throw a RemotingException
-				// It is forbidden to export an object which is not
-				// a real object
-				try {
-					RemotingServices.Marshal (objRem, objMarshal.Uri);
-					Fail ("#1");
-				} catch (RemotingException e) {
-				}
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-
-				// TODO: uncomment when RemotingServices.Disconnect is implemented
-				//RemotingServices.Disconnect(objMarshal);
-			}
-		}
-
-		// Tests RemotingServices.ExecuteMessage()
-		// also tests GetMethodBaseFromMessage()
-		// IsMethodOverloaded()
-		[Test]
-		public void ExecuteMessage ()
-		{
-			TcpChannel chn = new TcpChannel (1235);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				MarshalObject objMarshal = NewMarshalObject ();
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall);
-
-				// use a proxy to catch the Message
-				MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1235/" + objMarshal.Uri));
-
-				MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy ();
-
-				objRem.Method1 ();
-
-				// Tests RemotingServices.GetMethodBaseFromMethodMessage()
-				AssertEquals ("#A09", "Method1", proxy.MthBase.Name);
-				Assert ("#A09.1", !proxy.IsMethodOverloaded);
-
-				objRem.Method2 ();
-				Assert ("#A09.2", proxy.IsMethodOverloaded);
-
-				// Tests RemotingServices.ExecuteMessage();
-				// If ExecuteMessage does it job well, Method1 should be called 2 times
-				AssertEquals ("#A10", 2, MarshalObject.Called);
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		// Tests the IsOneWay method
-		[Test]
-		public void IsOneWay ()
-		{
-			TcpChannel chn = new TcpChannel (1238);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MarshalObject.rem", WellKnownObjectMode.Singleton);
-
-				MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1238/MarshalObject.rem");
-
-				Assert ("#A10.1", RemotingServices.IsTransparentProxy (objRem));
-
-				objRem.Method1 ();
-				Thread.Sleep (20);
-				Assert ("#A10.2", !MarshalObject.IsMethodOneWay);
-				objRem.Method3 ();
-				Thread.Sleep (20);
-				Assert ("#A10.3", MarshalObject.IsMethodOneWay);
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		[Test]
-		public void GetObjRefForProxy ()
-		{
-			TcpChannel chn = new TcpChannel (1239);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				// Register le factory as a SAO
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObjectFactory), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap", WellKnownObjectMode.Singleton);
-
-				MarshalObjectFactory objFactory = (MarshalObjectFactory) Activator.GetObject (typeof (MarshalObjectFactory), "tcp://localhost:1239/MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap");
-
-				// Get a new "CAO"
-				MarshalObject objRem = objFactory.GetNewMarshalObject ();
-
-				ObjRef objRefRem = RemotingServices.GetObjRefForProxy ((MarshalByRefObject) objRem);
-
-				Assert ("#A11", objRefRem != null);
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		// Tests GetRealProxy
-		[Test]
-		public void GetRealProxy ()
-		{
-			TcpChannel chn = new TcpChannel (1241);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton);
-
-				MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalByRefObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1241/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap"));
-				MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy ();
-
-				RealProxy rp = RemotingServices.GetRealProxy (objRem);
-
-				Assert ("#A12", rp != null);
-				AssertEquals ("#A13", "MonoTests.System.Runtime.Remoting.RemotingServicesInternal.MyProxy", rp.GetType ().ToString ());
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		// Tests SetObjectUriForMarshal()
-		[Test]
-		public void SetObjectUriForMarshal ()
-		{
-			TcpChannel chn = new TcpChannel (1242);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				MarshalObject objRem = NewMarshalObject ();
-				RemotingServices.SetObjectUriForMarshal (objRem, objRem.Uri);
-				RemotingServices.Marshal (objRem);
-
-				objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1242/" + objRem.Uri);
-				Assert ("#A14", objRem != null);
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-
-		}
-
-		// Tests GetServeurTypeForUri()
-		[Test]
-		public void GetServeurTypeForUri ()
-		{
-			TcpChannel chn = new TcpChannel (1243);
-			Type type = typeof (MarshalObject);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				MarshalObject objRem = NewMarshalObject ();
-				RemotingServices.SetObjectUriForMarshal (objRem, objRem.Uri);
-				RemotingServices.Marshal (objRem);
-
-				Type typeRem = RemotingServices.GetServerTypeForUri (RemotingServices.GetObjectUri (objRem));
-				AssertEquals ("#A15", type, typeRem);
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		// Tests IsObjectOutOfDomain
-		// Tests IsObjectOutOfContext
-		[Test]
-		[Category ("NotWorking")]
-		public void IsObjectOutOf ()
-		{
-			TcpChannel chn = new TcpChannel (1245);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MarshalObject2.rem", WellKnownObjectMode.Singleton);
-
-				MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1245/MarshalObject2.rem");
-
-				Assert ("#A16", RemotingServices.IsObjectOutOfAppDomain (objRem));
-				Assert ("#A17", RemotingServices.IsObjectOutOfContext (objRem));
-
-				MarshalObject objMarshal = new MarshalObject ();
-				Assert ("#A18", !RemotingServices.IsObjectOutOfAppDomain (objMarshal));
-				Assert ("#A19", !RemotingServices.IsObjectOutOfContext (objMarshal));
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		[Test]
-		public void ApplicationNameTest ()
-		{
-			RemotingConfiguration.ApplicationName = "app";
-			TcpChannel chn = new TcpChannel (1246);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "obj3.rem", WellKnownObjectMode.Singleton);
-
-				MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1246/app/obj3.rem");
-				MarshalObject objRem2 = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1246/obj3.rem");
-
-				Assert ("#AN1", RemotingServices.IsTransparentProxy (objRem));
-				Assert ("#AN2", RemotingServices.IsTransparentProxy (objRem2));
-
-				AssertNotNull ("#AN3", RemotingServices.GetServerTypeForUri ("obj3.rem"));
-				AssertNotNull ("#AN4", RemotingServices.GetServerTypeForUri ("/app/obj3.rem"));
-				AssertNull ("#AN5", RemotingServices.GetServerTypeForUri ("//app/obj3.rem"));
-				AssertNull ("#AN6", RemotingServices.GetServerTypeForUri ("app/obj3.rem"));
-				AssertNull ("#AN7", RemotingServices.GetServerTypeForUri ("/whatever/obj3.rem"));
-				AssertNotNull ("#AN8", RemotingServices.GetServerTypeForUri ("/obj3.rem"));
-				AssertNull ("#AN9", RemotingServices.GetServerTypeForUri ("//obj3.rem"));
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		[Test]
-		public void GetObjectWithChannelDataTest ()
-		{
-			TcpChannel chn = new TcpChannel (1247);
-			ChannelServices.RegisterChannel (chn);
-			try {
-				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "getobjectwithchanneldata.rem", WellKnownObjectMode.Singleton);
-
-				string channelData = "test";
-				AssertNotNull ("#01", Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1247/getobjectwithchanneldata.rem", channelData));
-			} finally {
-				ChannelServices.UnregisterChannel (chn);
-			}
-		}
-
-		[Test]
-		[Ignore ("We cannot test RemotingConfiguration.Configure() because it keeps channels registered. If we really need to test it, do it as a standalone case")]
-		public void ConnectProxyCast ()
-		{
-			object o;
-			RemotingConfiguration.Configure (null);
-
-			o = RemotingServices.Connect (typeof (MarshalByRefObject), "tcp://localhost:3434/ff1.rem");
-			Assert ("#m1", o is DD);
-			Assert ("#m2", o is A);
-			Assert ("#m3", o is B);
-			Assert ("#m4", !(o is CC));
-
-			o = RemotingServices.Connect (typeof (A), "tcp://localhost:3434/ff3.rem");
-			Assert ("#a1", o is DD);
-			Assert ("#a2", o is A);
-			Assert ("#a3", o is B);
-			Assert ("#a4", !(o is CC));
-
-			o = RemotingServices.Connect (typeof (DD), "tcp://localhost:3434/ff4.rem");
-			Assert ("#d1", o is DD);
-			Assert ("#d2", o is A);
-			Assert ("#d3", o is B);
-			Assert ("#d4", !(o is CC));
-
-			o = RemotingServices.Connect (typeof (CC), "tcp://localhost:3434/ff5.rem");
-			Assert ("#c1", !(o is DD));
-			Assert ("#c2", o is A);
-			Assert ("#c3", o is B);
-			Assert ("#c4", o is CC);
-		}
-		// Don't add any tests that must create channels
-		// after ConnectProxyCast (), because this test calls
-		// RemotingConfiguration.Configure ().
-	} // end class RemotingServicesTest
-} // end of namespace MonoTests.Remoting
+//
+// System.Runtime.Remoting.RemotingServices NUnit V2.0 test class
+//
+// Author Jean-Marc ANDRE (jean-marc.andre@polymtl.ca)
+//
+// ToDo: I didn't write test functions for the method not yep
+// implemented by Mono
+
+using System;
+using System.Collections;
+using NUnit.Framework;
+using System.Reflection;
+using System.Runtime.Remoting;
+using System.Threading;
+using System.Runtime.Remoting.Activation;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+
+namespace MonoTests.System.Runtime.Remoting.RemotingServicesInternal
+{
+	// We need our own proxy to intercept messages to remote object
+	// and forward them using RemotingServices.ExecuteMessage
+	public class MyProxy : RealProxy
+	{
+		MarshalByRefObject target;
+		IMessageSink _sink;
+		MethodBase _mthBase;
+		bool methodOverloaded = false;
+
+		public MethodBase MthBase {
+			get { return _mthBase; }
+		}
+
+		public bool IsMethodOverloaded {
+			get { return methodOverloaded; }
+		}
+
+		public MyProxy (Type serverType, MarshalByRefObject target)
+			: base (serverType)
+		{
+			this.target = target;
+
+			IChannel [] registeredChannels = ChannelServices.RegisteredChannels;
+			string ObjectURI;
+
+			// A new IMessageSink chain has to be created
+			// since the RemotingServices.GetEnvoyChainForProxy() is not yet
+			// implemented.
+			foreach (IChannel channel in registeredChannels) {
+				IChannelSender channelSender = channel as IChannelSender;
+				if (channelSender != null) {
+					_sink = (IMessageSink) channelSender.CreateMessageSink (RemotingServices.GetObjectUri (target), null, out ObjectURI);
+				}
+			}
+
+		}
+
+		// Messages will be intercepted here and redirected
+		// to another object.
+		public override IMessage Invoke (IMessage msg)
+		{
+			try {
+				if (msg is IConstructionCallMessage) {
+					IActivator remActivator = (IActivator) RemotingServices.Connect (typeof (IActivator), "tcp://localhost:1234/RemoteActivationService.rem");
+					IConstructionReturnMessage crm = remActivator.Activate ((IConstructionCallMessage) msg);
+					return crm;
+				} else {
+					methodOverloaded = RemotingServices.IsMethodOverloaded ((IMethodMessage) msg);
+
+					_mthBase = RemotingServices.GetMethodBaseFromMethodMessage ((IMethodMessage) msg);
+					MethodCallMessageWrapper mcm = new MethodCallMessageWrapper ((IMethodCallMessage) msg);
+					mcm.Uri = RemotingServices.GetObjectUri ((MarshalByRefObject) target);
+					MarshalByRefObject objRem = (MarshalByRefObject) Activator.CreateInstance (GetProxiedType ());
+					RemotingServices.ExecuteMessage ((MarshalByRefObject) objRem, (IMethodCallMessage) msg);
+					IMessage rtnMsg = null;
+
+					try {
+						rtnMsg = _sink.SyncProcessMessage (msg);
+					} catch (Exception e) {
+						Console.WriteLine (e.Message);
+					}
+
+					Console.WriteLine ("RR:" + rtnMsg);
+					return rtnMsg;
+				}
+			} catch (Exception ex) {
+				Console.WriteLine (ex);
+				return null;
+			}
+		}
+	} // end MyProxy
+
+	// This class is used to create "CAO"
+	public class MarshalObjectFactory : MarshalByRefObject
+	{
+		public MarshalObject GetNewMarshalObject ()
+		{
+			return new MarshalObject ();
+		}
+	}
+
+	// A class used by the tests
+	public class MarshalObject : ContextBoundObject
+	{
+		public MarshalObject ()
+		{
+
+		}
+
+		public MarshalObject (int id, string uri)
+		{
+			this.id = id;
+			this.uri = uri;
+		}
+
+		public int Id {
+			get { return id; }
+			set { id = value; }
+		}
+
+		public string Uri {
+			get { return uri; }
+		}
+
+		public void Method1 ()
+		{
+			_called++;
+			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
+		}
+
+		public void Method2 ()
+		{
+			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
+		}
+
+		public void Method2 (int i)
+		{
+			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
+		}
+
+		[OneWay ()]
+		public void Method3 ()
+		{
+			methodOneWay = RemotingServices.IsOneWay (MethodBase.GetCurrentMethod ());
+		}
+
+		public static int Called {
+			get { return _called; }
+		}
+
+		public static bool IsMethodOneWay {
+			get { return methodOneWay; }
+		}
+
+		private static int _called;
+		private int id = 0;
+		private string uri;
+		private static bool methodOneWay = false;
+	}
+
+	// Another class used by the tests
+	public class DerivedMarshalObject : MarshalObject
+	{
+		public DerivedMarshalObject () { }
+
+		public DerivedMarshalObject (int id, string uri) : base (id, uri) { }
+	}
+
+	interface A
+	{
+	}
+
+	interface B : A
+	{
+	}
+
+	public class CC : MarshalByRefObject
+	{
+	}
+
+	public class DD : MarshalByRefObject
+	{
+	}
+
+
+} // namespace MonoTests.System.Runtime.Remoting.RemotingServicesInternal
+
+namespace MonoTests.Remoting
+{
+	using MonoTests.System.Runtime.Remoting.RemotingServicesInternal;
+
+	// The main test class
+	[TestFixture]
+	public class RemotingServicesTest : Assertion
+	{
+		private static int MarshalObjectId = 0;
+
+		public RemotingServicesTest ()
+		{
+			MarshalObjectId = 0;
+		}
+
+		// Helper function that create a new
+		// MarshalObject with an unique ID
+		private static MarshalObject NewMarshalObject ()
+		{
+			string uri = "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject" + MarshalObjectId.ToString ();
+			MarshalObject objMarshal = new MarshalObject (MarshalObjectId, uri);
+
+			MarshalObjectId++;
+
+			return objMarshal;
+		}
+
+		// Another helper function
+		private DerivedMarshalObject NewDerivedMarshalObject ()
+		{
+			string uri = "MonoTests.System.Runtime.Remoting.RemotingServicesTest.DerivedMarshalObject" + MarshalObjectId.ToString ();
+			DerivedMarshalObject objMarshal = new DerivedMarshalObject (MarshalObjectId, uri);
+
+			MarshalObjectId++;
+
+			return objMarshal;
+		}
+
+		// The two folling method test RemotingServices.Marshal()
+		[Test]
+		public void Marshal1 ()
+		{
+
+			MarshalObject objMarshal = NewMarshalObject ();
+			ObjRef objRef = RemotingServices.Marshal (objMarshal);
+
+			Assert ("#A01", objRef.URI != null);
+
+			MarshalObject objRem = (MarshalObject) RemotingServices.Unmarshal (objRef);
+			AssertEquals ("#A02", objMarshal.Id, objRem.Id);
+
+			objRem.Id = 2;
+			AssertEquals ("#A03", objMarshal.Id, objRem.Id);
+
+			// TODO: uncomment when RemotingServices.Disconnect is implemented
+			//RemotingServices.Disconnect(objMarshal);
+
+			objMarshal = NewMarshalObject ();
+
+			objRef = RemotingServices.Marshal (objMarshal, objMarshal.Uri);
+
+			Assert ("#A04", objRef.URI.EndsWith (objMarshal.Uri));
+			// TODO: uncomment when RemotingServices.Disconnect is implemented
+			//RemotingServices.Disconnect(objMarshal);
+		}
+
+		[Test]
+		public void Marshal2 ()
+		{
+			DerivedMarshalObject derivedObjMarshal = NewDerivedMarshalObject ();
+
+			ObjRef objRef = RemotingServices.Marshal (derivedObjMarshal, derivedObjMarshal.Uri, typeof (MarshalObject));
+
+			// Check that the type of the marshaled object is MarshalObject
+			Assert ("#A05", objRef.TypeInfo.TypeName.StartsWith ((typeof (MarshalObject)).ToString ()));
+
+			// TODO: uncomment when RemotingServices.Disconnect is implemented
+			//RemotingServices.Disconnect(derivedObjMarshal);
+		}
+
+		// Tests RemotingServices.GetObjectUri()
+		[Test]
+		public void GetObjectUri ()
+		{
+			MarshalObject objMarshal = NewMarshalObject ();
+
+			Assert ("#A06", RemotingServices.GetObjectUri (objMarshal) == null);
+
+			RemotingServices.Marshal (objMarshal);
+
+			Assert ("#A07", RemotingServices.GetObjectUri (objMarshal) != null);
+			// TODO: uncomment when RemotingServices.Disconnect is implemented
+			//RemotingServices.Disconnect(objMarshal);
+		}
+
+		// Tests RemotingServices.Connect
+		[Test]
+		public void Connect ()
+		{
+			MarshalObject objMarshal = NewMarshalObject ();
+
+			IDictionary props = new Hashtable ();
+			props ["name"] = objMarshal.Uri;
+			props ["port"] = 1236;
+			TcpChannel chn = new TcpChannel (props, null, null);
+			ChannelServices.RegisterChannel (chn);
+
+			try {
+				RemotingServices.Marshal (objMarshal, objMarshal.Uri);
+				MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), "tcp://localhost:1236/" + objMarshal.Uri);
+				Assert ("#A08", RemotingServices.IsTransparentProxy (objRem));
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+				RemotingServices.Disconnect (objMarshal);
+			}
+		}
+
+		// Tests RemotingServices.Marshal()
+		[Test]
+		public void MarshalThrowException ()
+		{
+			MarshalObject objMarshal = NewMarshalObject ();
+
+			IDictionary props = new Hashtable ();
+			props ["name"] = objMarshal.Uri;
+			props ["port"] = 1237;
+			TcpChannel chn = new TcpChannel (props, null, null);
+			ChannelServices.RegisterChannel (chn);
+
+			try {
+				RemotingServices.Marshal (objMarshal, objMarshal.Uri);
+				MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), "tcp://localhost:1237/" + objMarshal.Uri);
+				// This line should throw a RemotingException
+				// It is forbidden to export an object which is not
+				// a real object
+				try {
+					RemotingServices.Marshal (objRem, objMarshal.Uri);
+					Fail ("#1");
+				} catch (RemotingException e) {
+				}
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+
+				// TODO: uncomment when RemotingServices.Disconnect is implemented
+				//RemotingServices.Disconnect(objMarshal);
+			}
+		}
+
+		// Tests RemotingServices.ExecuteMessage()
+		// also tests GetMethodBaseFromMessage()
+		// IsMethodOverloaded()
+		[Test]
+		public void ExecuteMessage ()
+		{
+			TcpChannel chn = new TcpChannel (1235);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				MarshalObject objMarshal = NewMarshalObject ();
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall);
+
+				// use a proxy to catch the Message
+				MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1235/" + objMarshal.Uri));
+
+				MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy ();
+
+				objRem.Method1 ();
+
+				// Tests RemotingServices.GetMethodBaseFromMethodMessage()
+				AssertEquals ("#A09", "Method1", proxy.MthBase.Name);
+				Assert ("#A09.1", !proxy.IsMethodOverloaded);
+
+				objRem.Method2 ();
+				Assert ("#A09.2", proxy.IsMethodOverloaded);
+
+				// Tests RemotingServices.ExecuteMessage();
+				// If ExecuteMessage does it job well, Method1 should be called 2 times
+				AssertEquals ("#A10", 2, MarshalObject.Called);
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		// Tests the IsOneWay method
+		[Test]
+		public void IsOneWay ()
+		{
+			TcpChannel chn = new TcpChannel (1238);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MarshalObject.rem", WellKnownObjectMode.Singleton);
+
+				MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1238/MarshalObject.rem");
+
+				Assert ("#A10.1", RemotingServices.IsTransparentProxy (objRem));
+
+				objRem.Method1 ();
+				Thread.Sleep (20);
+				Assert ("#A10.2", !MarshalObject.IsMethodOneWay);
+				objRem.Method3 ();
+				Thread.Sleep (20);
+				Assert ("#A10.3", MarshalObject.IsMethodOneWay);
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		[Test]
+		public void GetObjRefForProxy ()
+		{
+			TcpChannel chn = new TcpChannel (1239);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				// Register le factory as a SAO
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObjectFactory), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap", WellKnownObjectMode.Singleton);
+
+				MarshalObjectFactory objFactory = (MarshalObjectFactory) Activator.GetObject (typeof (MarshalObjectFactory), "tcp://localhost:1239/MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap");
+
+				// Get a new "CAO"
+				MarshalObject objRem = objFactory.GetNewMarshalObject ();
+
+				ObjRef objRefRem = RemotingServices.GetObjRefForProxy ((MarshalByRefObject) objRem);
+
+				Assert ("#A11", objRefRem != null);
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		// Tests GetRealProxy
+		[Test]
+		public void GetRealProxy ()
+		{
+			TcpChannel chn = new TcpChannel (1241);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton);
+
+				MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalByRefObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1241/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap"));
+				MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy ();
+
+				RealProxy rp = RemotingServices.GetRealProxy (objRem);
+
+				Assert ("#A12", rp != null);
+				AssertEquals ("#A13", "MonoTests.System.Runtime.Remoting.RemotingServicesInternal.MyProxy", rp.GetType ().ToString ());
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		// Tests SetObjectUriForMarshal()
+		[Test]
+		public void SetObjectUriForMarshal ()
+		{
+			TcpChannel chn = new TcpChannel (1242);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				MarshalObject objRem = NewMarshalObject ();
+				RemotingServices.SetObjectUriForMarshal (objRem, objRem.Uri);
+				RemotingServices.Marshal (objRem);
+
+				objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1242/" + objRem.Uri);
+				Assert ("#A14", objRem != null);
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+
+		}
+
+		// Tests GetServeurTypeForUri()
+		[Test]
+		public void GetServeurTypeForUri ()
+		{
+			TcpChannel chn = new TcpChannel (1243);
+			Type type = typeof (MarshalObject);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				MarshalObject objRem = NewMarshalObject ();
+				RemotingServices.SetObjectUriForMarshal (objRem, objRem.Uri);
+				RemotingServices.Marshal (objRem);
+
+				Type typeRem = RemotingServices.GetServerTypeForUri (RemotingServices.GetObjectUri (objRem));
+				AssertEquals ("#A15", type, typeRem);
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		// Tests IsObjectOutOfDomain
+		// Tests IsObjectOutOfContext
+		[Test]
+		[Category ("NotWorking")]
+		public void IsObjectOutOf ()
+		{
+			TcpChannel chn = new TcpChannel (1245);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MarshalObject2.rem", WellKnownObjectMode.Singleton);
+
+				MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1245/MarshalObject2.rem");
+
+				Assert ("#A16", RemotingServices.IsObjectOutOfAppDomain (objRem));
+				Assert ("#A17", RemotingServices.IsObjectOutOfContext (objRem));
+
+				MarshalObject objMarshal = new MarshalObject ();
+				Assert ("#A18", !RemotingServices.IsObjectOutOfAppDomain (objMarshal));
+				Assert ("#A19", !RemotingServices.IsObjectOutOfContext (objMarshal));
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		[Test]
+		public void ApplicationNameTest ()
+		{
+			RemotingConfiguration.ApplicationName = "app";
+			TcpChannel chn = new TcpChannel (1246);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "obj3.rem", WellKnownObjectMode.Singleton);
+
+				MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1246/app/obj3.rem");
+				MarshalObject objRem2 = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1246/obj3.rem");
+
+				Assert ("#AN1", RemotingServices.IsTransparentProxy (objRem));
+				Assert ("#AN2", RemotingServices.IsTransparentProxy (objRem2));
+
+				AssertNotNull ("#AN3", RemotingServices.GetServerTypeForUri ("obj3.rem"));
+				AssertNotNull ("#AN4", RemotingServices.GetServerTypeForUri ("/app/obj3.rem"));
+				AssertNull ("#AN5", RemotingServices.GetServerTypeForUri ("//app/obj3.rem"));
+				AssertNull ("#AN6", RemotingServices.GetServerTypeForUri ("app/obj3.rem"));
+				AssertNull ("#AN7", RemotingServices.GetServerTypeForUri ("/whatever/obj3.rem"));
+				AssertNotNull ("#AN8", RemotingServices.GetServerTypeForUri ("/obj3.rem"));
+				AssertNull ("#AN9", RemotingServices.GetServerTypeForUri ("//obj3.rem"));
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		[Test]
+		public void GetObjectWithChannelDataTest ()
+		{
+			TcpChannel chn = new TcpChannel (1247);
+			ChannelServices.RegisterChannel (chn);
+			try {
+				RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "getobjectwithchanneldata.rem", WellKnownObjectMode.Singleton);
+
+				string channelData = "test";
+				AssertNotNull ("#01", Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1247/getobjectwithchanneldata.rem", channelData));
+			} finally {
+				ChannelServices.UnregisterChannel (chn);
+			}
+		}
+
+		[Test]
+		[Ignore ("We cannot test RemotingConfiguration.Configure() because it keeps channels registered. If we really need to test it, do it as a standalone case")]
+		public void ConnectProxyCast ()
+		{
+			object o;
+			RemotingConfiguration.Configure (null);
+
+			o = RemotingServices.Connect (typeof (MarshalByRefObject), "tcp://localhost:3434/ff1.rem");
+			Assert ("#m1", o is DD);
+			Assert ("#m2", o is A);
+			Assert ("#m3", o is B);
+			Assert ("#m4", !(o is CC));
+
+			o = RemotingServices.Connect (typeof (A), "tcp://localhost:3434/ff3.rem");
+			Assert ("#a1", o is DD);
+			Assert ("#a2", o is A);
+			Assert ("#a3", o is B);
+			Assert ("#a4", !(o is CC));
+
+			o = RemotingServices.Connect (typeof (DD), "tcp://localhost:3434/ff4.rem");
+			Assert ("#d1", o is DD);
+			Assert ("#d2", o is A);
+			Assert ("#d3", o is B);
+			Assert ("#d4", !(o is CC));
+
+			o = RemotingServices.Connect (typeof (CC), "tcp://localhost:3434/ff5.rem");
+			Assert ("#c1", !(o is DD));
+			Assert ("#c2", o is A);
+			Assert ("#c3", o is B);
+			Assert ("#c4", o is CC);
+		}
+		// Don't add any tests that must create channels
+		// after ConnectProxyCast (), because this test calls
+		// RemotingConfiguration.Configure ().
+	} // end class RemotingServicesTest
+} // end of namespace MonoTests.Remoting
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Remoting/Test/ServerObject.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Remoting/Test/ServerObject.cs
@@ -1,174 +1,174 @@
-//
-// MonoTests.Remoting.ServerObject.cs
-//
-// Author: Lluis Sanchez Gual (lluis@ximian.com)
-//
-// 2003 (C) Copyright, Ximian, Inc.
-//
-
-using System;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Lifetime;
-using System.Collections;
-using NUnit.Framework;
-
-namespace MonoTests.Remoting
-{
-	// A list of ServerObject instances
-
-	[ContextHook("x", false)]
-	public class ServerList: 
-		ContextBoundObject, 
-		IDisposable
-	{
-		ArrayList values = new ArrayList();
-		public int NumVal = 0;
-		public string StrVal = "val";
-
-		public ServerList()
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			CallSeq.Add ("List created");
-		}
-
-		public void Dispose()
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			CallSeq.Add ("List disposed");
-
-		}
-
-		public void Add (ServerObject v)
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			values.Add (v);
-			CallSeq.Add ("Added " + v.Name);
-		}
-
-		public void ProcessItems ()
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			CallSeq.Add ("Processing");
-
-			int total = 0;
-			foreach (ServerObject ob in values)
-				total += ob.GetValue();
-
-			CallSeq.Add ("Total: " + total);
-		}
-
-		public void Clear()
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			CallSeq.Add ("Clearing");
-			values.Clear();
-		}
-
-		public void ParameterTest1 (int a, out string b)
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			b = "adeu " + a;
-		}
-		
-		public void ParameterTest2 (int a, out int b)
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			b = a+1;
-		}
-		
-		public ServerObject NewItem(string name)
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			ServerObject obj = new ServerObject(name);
-			Add (obj);
-			return obj;
-		}
-
-		public ServerObject CreateItem(string name, int val)
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			ServerObject obj = new ServerObject(name);
-			obj.SetValue (val);
-			return obj;
-		}
-
-		public ComplexData SetComplexData (ComplexData data)
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			CallSeq.Add ("Showing content of ComplexData");
-			data.Dump ();
-			return data;
-		}
-
-		public override ObjRef CreateObjRef (Type type)
-		{
-			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
-			CallSeq.Add ("### ServerList.CreateObjRef");
-			return base.CreateObjRef (type);
-		}
-	}
-		
-	// A remotable object
-
-	public class ServerObject: 
-//		ContextBoundObject
-		MarshalByRefObject
-	{
-		int _value;
-		string _name;
-
-		public ServerObject (string name)
-		{
-			_name = name;
-		}
-
-		public string Name
-		{
-			get { return _name; }
-		}
-
-		public void SetValue (int v)
-		{
-			CallSeq.Add ("ServerObject " + _name + ": setting " + v);
-			_value = v;
-		}
-
-		public int GetValue ()
-		{
-			CallSeq.Add ("ServerObject " + _name + ": getting " + _value);
-			return _value;
-		}
-
-		public override ObjRef CreateObjRef (Type type)
-		{
-			CallSeq.Add ("### ServerObject.CreateObjRef");
-			return base.CreateObjRef (type);
-		}
-	}
-
-	// Some complex data for testing serialization
-
-	public enum AnEnum { a,b,c,d,e };
-
-	[Serializable]
-	public class ComplexData
-	{
-		public AnEnum Val = AnEnum.a;
-
-		public object[] Info;
-
-		public ComplexData (AnEnum va, object[] info)
-		{
-			Info = info;
-			Val = va;
-		}
-
-		public void Dump ()
-		{
-			CallSeq.Add ("Content:");
-			CallSeq.Add ("Val: " + Val);
-			foreach (object ob in Info)
-				CallSeq.Add ("Array item: " + ob);
-		}
-	}
-}
+//
+// MonoTests.Remoting.ServerObject.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ximian.com)
+//
+// 2003 (C) Copyright, Ximian, Inc.
+//
+
+using System;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Lifetime;
+using System.Collections;
+using NUnit.Framework;
+
+namespace MonoTests.Remoting
+{
+	// A list of ServerObject instances
+
+	[ContextHook("x", false)]
+	public class ServerList: 
+		ContextBoundObject, 
+		IDisposable
+	{
+		ArrayList values = new ArrayList();
+		public int NumVal = 0;
+		public string StrVal = "val";
+
+		public ServerList()
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			CallSeq.Add ("List created");
+		}
+
+		public void Dispose()
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			CallSeq.Add ("List disposed");
+
+		}
+
+		public void Add (ServerObject v)
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			values.Add (v);
+			CallSeq.Add ("Added " + v.Name);
+		}
+
+		public void ProcessItems ()
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			CallSeq.Add ("Processing");
+
+			int total = 0;
+			foreach (ServerObject ob in values)
+				total += ob.GetValue();
+
+			CallSeq.Add ("Total: " + total);
+		}
+
+		public void Clear()
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			CallSeq.Add ("Clearing");
+			values.Clear();
+		}
+
+		public void ParameterTest1 (int a, out string b)
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			b = "adeu " + a;
+		}
+		
+		public void ParameterTest2 (int a, out int b)
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			b = a+1;
+		}
+		
+		public ServerObject NewItem(string name)
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			ServerObject obj = new ServerObject(name);
+			Add (obj);
+			return obj;
+		}
+
+		public ServerObject CreateItem(string name, int val)
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			ServerObject obj = new ServerObject(name);
+			obj.SetValue (val);
+			return obj;
+		}
+
+		public ComplexData SetComplexData (ComplexData data)
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			CallSeq.Add ("Showing content of ComplexData");
+			data.Dump ();
+			return data;
+		}
+
+		public override ObjRef CreateObjRef (Type type)
+		{
+			Assert.IsTrue (RemotingServices.IsTransparentProxy(this));
+			CallSeq.Add ("### ServerList.CreateObjRef");
+			return base.CreateObjRef (type);
+		}
+	}
+		
+	// A remotable object
+
+	public class ServerObject: 
+//		ContextBoundObject
+		MarshalByRefObject
+	{
+		int _value;
+		string _name;
+
+		public ServerObject (string name)
+		{
+			_name = name;
+		}
+
+		public string Name
+		{
+			get { return _name; }
+		}
+
+		public void SetValue (int v)
+		{
+			CallSeq.Add ("ServerObject " + _name + ": setting " + v);
+			_value = v;
+		}
+
+		public int GetValue ()
+		{
+			CallSeq.Add ("ServerObject " + _name + ": getting " + _value);
+			return _value;
+		}
+
+		public override ObjRef CreateObjRef (Type type)
+		{
+			CallSeq.Add ("### ServerObject.CreateObjRef");
+			return base.CreateObjRef (type);
+		}
+	}
+
+	// Some complex data for testing serialization
+
+	public enum AnEnum { a,b,c,d,e };
+
+	[Serializable]
+	public class ComplexData
+	{
+		public AnEnum Val = AnEnum.a;
+
+		public object[] Info;
+
+		public ComplexData (AnEnum va, object[] info)
+		{
+			Info = info;
+			Val = va;
+		}
+
+		public void Dump ()
+		{
+			CallSeq.Add ("Content:");
+			CallSeq.Add ("Val: " + Val);
+			foreach (object ob in Info)
+				CallSeq.Add ("Array item: " + ob);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Documentation/System.Runtime.Serialization.Formatters.Soap.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Documentation/System.Runtime.Serialization.Formatters.Soap.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Runtime.Serialization.Formatters.Soap">
-    <class name="SoapFormatter" namespace="System.Runtime.Serialization.Formatters.Soap">
-        <constructor name="SoapFormatter" argnames="" />
-        <constructor name="SoapFormatter(System.Runtime.Serialization.ISurrogateSelector, System.Runtime.Serialization.StreamingContext)" argnames="selector, context" />
-        <property name="TopObject" propertytype="System.Runtime.Serialization.Formatters.ISoapMessage" />
-        <property name="TypeFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterTypeStyle" />
-        <property name="AssemblyFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterAssemblyStyle" />
-        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
-        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
-        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
-        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
-        <method name="Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])" argnames="serializationStream, graph, headers" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)" argnames="serializationStream, handler" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Runtime.Serialization.Formatters.Soap">
+    <class name="SoapFormatter" namespace="System.Runtime.Serialization.Formatters.Soap">
+        <constructor name="SoapFormatter" argnames="" />
+        <constructor name="SoapFormatter(System.Runtime.Serialization.ISurrogateSelector, System.Runtime.Serialization.StreamingContext)" argnames="selector, context" />
+        <property name="TopObject" propertytype="System.Runtime.Serialization.Formatters.ISoapMessage" />
+        <property name="TypeFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterTypeStyle" />
+        <property name="AssemblyFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterAssemblyStyle" />
+        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
+        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
+        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
+        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
+        <method name="Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])" argnames="serializationStream, graph, headers" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)" argnames="serializationStream, handler" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/README
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/README
@@ -1,17 +1,17 @@
-Build instruction:
-extract the archive to the mcs/class/ dir
-
-to build it on windows:
-	nant
-
-to build it on linux:
-	make -f makefile.gnu install prefix=/pathtoyourmonoinstallationdir/
-
-to run tests on windows:
-	nant test
-
-to run tests on linux:
-	cd Test
-	make -f makefile.gnu test
-
-If you want to use it with other applications, you have to reference it with "-r System.Runtime.Serialization.Formatters.Soap1.dll" 
+Build instruction:
+extract the archive to the mcs/class/ dir
+
+to build it on windows:
+	nant
+
+to build it on linux:
+	make -f makefile.gnu install prefix=/pathtoyourmonoinstallationdir/
+
+to run tests on windows:
+	nant test
+
+to run tests on linux:
+	cd Test
+	make -f makefile.gnu test
+
+If you want to use it with other applications, you have to reference it with "-r System.Runtime.Serialization.Formatters.Soap1.dll" 
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Sample.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Sample.txt
@@ -1,179 +1,179 @@
-namespace WindowsApplicationProve
-{
-	namespace Cxxx
-	{
-		[Serializable]
-		public struct OtherStruct
-		{
-		  public int FInt;
-		}
-
-		[Serializable]
-		public struct StructSample
-		  {
-			public int  FInt;
-			public char FChar;
-			public  object FObj;			
-		  }
-        [Serializable]
-		public enum EnumSample
-		  {
-			aa,
-			bb,
-		    cc
-		  }
-
-		[Serializable]
-		public delegate int DelegateProve(int i);
-
-		[Serializable]
-		public delegate void OtherDelegate();
-
-		public interface ISample
-		{
-			int FirstMethod(char charParam);
-		}
-
-
-		[Serializable]
-		public class cIntProve: ISample
-		{
-			public long FLongField;
-			public int FirstMethod(char charParam)
-			{
-				return 6;
-			}
-		}
-
-		public delegate string DlgProve(int i);
-
-		[Serializable]
-		public class  cAgregationClass:BaseClass
-		{
-			public Char FCharField;
-			public string FStr;
-			public cSerializableProve Fobj;
-			public ISample Fintf;			
-			//public int[][] FIntList;
-			public string DlgCatcher(int i)
-			{
-				return "Hello"; 
-			}
-    	}
-
-		[Serializable]
-		public class BaseClass
-		  {
-			public int FBaseint;
-			public cIntProve FIntObj;
-		  }
-		[Serializable]
-		public class cXXX
-		{
-			public int FI;
-		}
-
-		[Serializable]
-		public class cSerializableProve
-		{		
-			public object[]          FArrayProve;
-			public object[]          FNullArray;
-			//public ClassProve        FOtherAssObj;
-			public cAgregationClass  FAggField;			
-			//value types
-			public DelegateProve     FDelegateProve;		
-			public event  OtherDelegate FEventField;						
-			public ISample           FInterfaceField;
-			public string            FStrField;
-			private int              FPintField;
-			public int               FIntField;
-			public uint              FUintField;			
-			public short             FShortField;
-			public ushort            FUShortField;
-			public long              FLongField;
-			public ulong             FULongField;
-			public bool              FBoolField;
-			public double            FDoubleField;
-			public decimal           FDecimalField;
-			public char              FCharField;			
-			public StructSample      FStructField;						
-			public EnumSample        FEnumField;	
-		
-			public  cSerializableProve()
-			{		    	
-				InitReferences();
-				InitSimpleTypes();
-				InitStructs();							
-				InitArray();
-			}
-
-			private void InitReferences()
-			{
-				FAggField = new cAgregationClass();
-				FAggField.FCharField = 'a';
-				FAggField.FBaseint = 10;
-				FAggField.Fobj= this;				
-				FAggField.FStr= "Hhhh";
-				FStrField= FAggField.FStr;								
-				FAggField.FIntObj= new cIntProve ();
-				FInterfaceField= FAggField.FIntObj;
-				FAggField.Fintf= FInterfaceField;						        			
-			}
-
-			private void InitSimpleTypes()
-			{
-				FArrayProve= new Object[20];
-				FPintField= 10;
-				FIntField = 6;				
-				FUintField = 6;
-				FShortField = 6;
-				FUShortField = 6;
-				FLongField = 6;
-				FULongField = 6;
-				FDoubleField = 6;
-				FDecimalField = 5;
-				FBoolField = true;
-				FCharField = 'a';
-				FEnumField = EnumSample.aa;
-			}
-
-			private void InitStructs()
-			{
-              FStructField= new StructSample();				 
-			  FStructField.FChar= 'a';
-              FStructField.FInt= 10;
-			  FStructField.FObj= this.FAggField;              
-			}
-
-			private void InitArray()
-			{
-				FArrayProve[0]= new cAgregationClass();
-                ((cAgregationClass)FArrayProve[0]).FStr= "Hello";
-				FArrayProve[1]= new cAgregationClass[2];
-				((cAgregationClass[])FArrayProve[1])[0]= this.FAggField;				
-				FArrayProve[2]= new int[][][]{new int[][]{new int[3], new int[3], new int[3]}, new int[][]{new int[3], new int[3], new int[3]}};
-				/*Fill the integer array*/
-				((int[][][])FArrayProve[2])[1][1][1]= 10;
-				((int[][][])FArrayProve[2])[1][1][2]= 10;
-				((int[][][])FArrayProve[2])[1][1][0]= 10;				
-				FArrayProve[3]= new OtherStruct();				
-				FArrayProve[4]= 6;
-				FArrayProve[5]= true;
-				FArrayProve[6]= 2.5;
-				FArrayProve[7]= EnumSample.bb;
-				FArrayProve[8]= this.FInterfaceField; 	
-				FArrayProve[9]= "Hello";
-				FArrayProve[10]= new UInt32();
-				FArrayProve[11]= new short();
-				FArrayProve[12]= new UInt16();
-				FArrayProve[13]=  new decimal();			
-				FArrayProve[15]= new ulong();
-				FArrayProve[16]= new char();				
-				FArrayProve[18]= null;  
-			}
-
-			public void InitDelegates()
-			{             
-			  FDelegateProve= new DelegateProve(SIntProve);              
-		      FEventField= new OtherDelegate(OtherProve);
+namespace WindowsApplicationProve
+{
+	namespace Cxxx
+	{
+		[Serializable]
+		public struct OtherStruct
+		{
+		  public int FInt;
+		}
+
+		[Serializable]
+		public struct StructSample
+		  {
+			public int  FInt;
+			public char FChar;
+			public  object FObj;			
+		  }
+        [Serializable]
+		public enum EnumSample
+		  {
+			aa,
+			bb,
+		    cc
+		  }
+
+		[Serializable]
+		public delegate int DelegateProve(int i);
+
+		[Serializable]
+		public delegate void OtherDelegate();
+
+		public interface ISample
+		{
+			int FirstMethod(char charParam);
+		}
+
+
+		[Serializable]
+		public class cIntProve: ISample
+		{
+			public long FLongField;
+			public int FirstMethod(char charParam)
+			{
+				return 6;
+			}
+		}
+
+		public delegate string DlgProve(int i);
+
+		[Serializable]
+		public class  cAgregationClass:BaseClass
+		{
+			public Char FCharField;
+			public string FStr;
+			public cSerializableProve Fobj;
+			public ISample Fintf;			
+			//public int[][] FIntList;
+			public string DlgCatcher(int i)
+			{
+				return "Hello"; 
+			}
+    	}
+
+		[Serializable]
+		public class BaseClass
+		  {
+			public int FBaseint;
+			public cIntProve FIntObj;
+		  }
+		[Serializable]
+		public class cXXX
+		{
+			public int FI;
+		}
+
+		[Serializable]
+		public class cSerializableProve
+		{		
+			public object[]          FArrayProve;
+			public object[]          FNullArray;
+			//public ClassProve        FOtherAssObj;
+			public cAgregationClass  FAggField;			
+			//value types
+			public DelegateProve     FDelegateProve;		
+			public event  OtherDelegate FEventField;						
+			public ISample           FInterfaceField;
+			public string            FStrField;
+			private int              FPintField;
+			public int               FIntField;
+			public uint              FUintField;			
+			public short             FShortField;
+			public ushort            FUShortField;
+			public long              FLongField;
+			public ulong             FULongField;
+			public bool              FBoolField;
+			public double            FDoubleField;
+			public decimal           FDecimalField;
+			public char              FCharField;			
+			public StructSample      FStructField;						
+			public EnumSample        FEnumField;	
+		
+			public  cSerializableProve()
+			{		    	
+				InitReferences();
+				InitSimpleTypes();
+				InitStructs();							
+				InitArray();
+			}
+
+			private void InitReferences()
+			{
+				FAggField = new cAgregationClass();
+				FAggField.FCharField = 'a';
+				FAggField.FBaseint = 10;
+				FAggField.Fobj= this;				
+				FAggField.FStr= "Hhhh";
+				FStrField= FAggField.FStr;								
+				FAggField.FIntObj= new cIntProve ();
+				FInterfaceField= FAggField.FIntObj;
+				FAggField.Fintf= FInterfaceField;						        			
+			}
+
+			private void InitSimpleTypes()
+			{
+				FArrayProve= new Object[20];
+				FPintField= 10;
+				FIntField = 6;				
+				FUintField = 6;
+				FShortField = 6;
+				FUShortField = 6;
+				FLongField = 6;
+				FULongField = 6;
+				FDoubleField = 6;
+				FDecimalField = 5;
+				FBoolField = true;
+				FCharField = 'a';
+				FEnumField = EnumSample.aa;
+			}
+
+			private void InitStructs()
+			{
+              FStructField= new StructSample();				 
+			  FStructField.FChar= 'a';
+              FStructField.FInt= 10;
+			  FStructField.FObj= this.FAggField;              
+			}
+
+			private void InitArray()
+			{
+				FArrayProve[0]= new cAgregationClass();
+                ((cAgregationClass)FArrayProve[0]).FStr= "Hello";
+				FArrayProve[1]= new cAgregationClass[2];
+				((cAgregationClass[])FArrayProve[1])[0]= this.FAggField;				
+				FArrayProve[2]= new int[][][]{new int[][]{new int[3], new int[3], new int[3]}, new int[][]{new int[3], new int[3], new int[3]}};
+				/*Fill the integer array*/
+				((int[][][])FArrayProve[2])[1][1][1]= 10;
+				((int[][][])FArrayProve[2])[1][1][2]= 10;
+				((int[][][])FArrayProve[2])[1][1][0]= 10;				
+				FArrayProve[3]= new OtherStruct();				
+				FArrayProve[4]= 6;
+				FArrayProve[5]= true;
+				FArrayProve[6]= 2.5;
+				FArrayProve[7]= EnumSample.bb;
+				FArrayProve[8]= this.FInterfaceField; 	
+				FArrayProve[9]= "Hello";
+				FArrayProve[10]= new UInt32();
+				FArrayProve[11]= new short();
+				FArrayProve[12]= new UInt16();
+				FArrayProve[13]=  new decimal();			
+				FArrayProve[15]= new ulong();
+				FArrayProve[16]= new char();				
+				FArrayProve[18]= null;  
+			}
+
+			public void InitDelegates()
+			{             
+			  FDelegateProve= new DelegateProve(SIntProve);              
+		      FEventField= new OtherDelegate(OtherProve);
 			}
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapFormatter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapFormatter.cs
@@ -1,161 +1,161 @@
-// created on 07/04/2003 at 17:16
-//
-//	System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-//
-//	Authors:
-//		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Runtime.Remoting;
-using System.Runtime.Serialization;
-using System.Runtime.Remoting.Messaging;
-using System.Xml.Serialization;
-using System.Threading;
-using System.Globalization;
-
-
-namespace System.Runtime.Serialization.Formatters.Soap {
-	enum RemMessageType {
-		MethodCall, MethodResponse, ServerFault, NotRecognize
-	}
-	
-	public sealed class SoapFormatter: IRemotingFormatter, IFormatter {
-		private SerializationBinder _binder;
-		private StreamingContext _context;
-		private ISurrogateSelector _selector;
-		private FormatterAssemblyStyle _assemblyFormat = FormatterAssemblyStyle.Full;
-		private FormatterTypeStyle _typeFormat = FormatterTypeStyle.TypesWhenNeeded;
-		private ISoapMessage _topObject = null;
-		
-		TypeFilterLevel _filterLevel = TypeFilterLevel.Low;
-
-		public SoapFormatter() {
-			_selector = null;
-			_context = new StreamingContext(StreamingContextStates.All);
-		}
-		
-		public SoapFormatter(ISurrogateSelector selector, StreamingContext context) {
-			_selector = selector;
-			_context = context;
-		}
-		
-		public object Deserialize(Stream serializationStream) {
-			return Deserialize(serializationStream, null);
-		}
-		
-		public object Deserialize(Stream serializationStream, HeaderHandler handler) {
-			SoapReader soapReader = new SoapReader(_binder, _selector, _context);
-			return soapReader.Deserialize(serializationStream, _topObject);
-		}
-
-		public void Serialize(Stream serializationStream, object graph) {
-			Serialize(serializationStream, graph, null);
-		}
-		
-		public void Serialize(Stream serializationStream, object graph, Header[] headers) {
-			if(serializationStream == null)
-				throw new ArgumentNullException("serializationStream");
-			if(!serializationStream.CanWrite)
-				throw new SerializationException("Can't write in the serialization stream");
-			if(graph == null)
-				throw new ArgumentNullException("graph");
-			SoapWriter soapWriter = new SoapWriter(serializationStream, _selector, _context, _topObject);
-			soapWriter.Serialize (graph, headers, _typeFormat, _assemblyFormat);
-		}
-		
-		public ISurrogateSelector SurrogateSelector {
-			get {
-				return _selector;
-			}
-			set {
-				_selector = value;
-			}
-		}
-		
-		
-		public SerializationBinder Binder {
-			get {
-				return _binder;
-			}
-			set {
-				_binder = value;
-			}
-		}
-		
-		public StreamingContext Context {
-			get {
-				return _context;
-			}
-			set {
-				_context = value;
-			}
-		}
-		
-		public ISoapMessage TopObject {
-			get {
-				return _topObject;
-			}
-			set {
-				_topObject = value;
-			}
-		}
-		
-		[MonoTODO ("Interpret this")]
-		public TypeFilterLevel FilterLevel {
-			get {
-				return _filterLevel;
-			}
-			set {
-				_filterLevel = value;
-			}
-		}
-		
-		public FormatterAssemblyStyle AssemblyFormat
-		{
-			get {
-				return _assemblyFormat;
-			}
-			set {
-				_assemblyFormat = value;
-			}
-		}
-
-		public FormatterTypeStyle TypeFormat
-		{
-			get 
-			{
-				return _typeFormat;
-			}
-			set 
-			{
-				_typeFormat = value;
-			}
-		}
-
-	}
-}
+// created on 07/04/2003 at 17:16
+//
+//	System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+//
+//	Authors:
+//		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Runtime.Remoting;
+using System.Runtime.Serialization;
+using System.Runtime.Remoting.Messaging;
+using System.Xml.Serialization;
+using System.Threading;
+using System.Globalization;
+
+
+namespace System.Runtime.Serialization.Formatters.Soap {
+	enum RemMessageType {
+		MethodCall, MethodResponse, ServerFault, NotRecognize
+	}
+	
+	public sealed class SoapFormatter: IRemotingFormatter, IFormatter {
+		private SerializationBinder _binder;
+		private StreamingContext _context;
+		private ISurrogateSelector _selector;
+		private FormatterAssemblyStyle _assemblyFormat = FormatterAssemblyStyle.Full;
+		private FormatterTypeStyle _typeFormat = FormatterTypeStyle.TypesWhenNeeded;
+		private ISoapMessage _topObject = null;
+		
+		TypeFilterLevel _filterLevel = TypeFilterLevel.Low;
+
+		public SoapFormatter() {
+			_selector = null;
+			_context = new StreamingContext(StreamingContextStates.All);
+		}
+		
+		public SoapFormatter(ISurrogateSelector selector, StreamingContext context) {
+			_selector = selector;
+			_context = context;
+		}
+		
+		public object Deserialize(Stream serializationStream) {
+			return Deserialize(serializationStream, null);
+		}
+		
+		public object Deserialize(Stream serializationStream, HeaderHandler handler) {
+			SoapReader soapReader = new SoapReader(_binder, _selector, _context);
+			return soapReader.Deserialize(serializationStream, _topObject);
+		}
+
+		public void Serialize(Stream serializationStream, object graph) {
+			Serialize(serializationStream, graph, null);
+		}
+		
+		public void Serialize(Stream serializationStream, object graph, Header[] headers) {
+			if(serializationStream == null)
+				throw new ArgumentNullException("serializationStream");
+			if(!serializationStream.CanWrite)
+				throw new SerializationException("Can't write in the serialization stream");
+			if(graph == null)
+				throw new ArgumentNullException("graph");
+			SoapWriter soapWriter = new SoapWriter(serializationStream, _selector, _context, _topObject);
+			soapWriter.Serialize (graph, headers, _typeFormat, _assemblyFormat);
+		}
+		
+		public ISurrogateSelector SurrogateSelector {
+			get {
+				return _selector;
+			}
+			set {
+				_selector = value;
+			}
+		}
+		
+		
+		public SerializationBinder Binder {
+			get {
+				return _binder;
+			}
+			set {
+				_binder = value;
+			}
+		}
+		
+		public StreamingContext Context {
+			get {
+				return _context;
+			}
+			set {
+				_context = value;
+			}
+		}
+		
+		public ISoapMessage TopObject {
+			get {
+				return _topObject;
+			}
+			set {
+				_topObject = value;
+			}
+		}
+		
+		[MonoTODO ("Interpret this")]
+		public TypeFilterLevel FilterLevel {
+			get {
+				return _filterLevel;
+			}
+			set {
+				_filterLevel = value;
+			}
+		}
+		
+		public FormatterAssemblyStyle AssemblyFormat
+		{
+			get {
+				return _assemblyFormat;
+			}
+			set {
+				_assemblyFormat = value;
+			}
+		}
+
+		public FormatterTypeStyle TypeFormat
+		{
+			get 
+			{
+				return _typeFormat;
+			}
+			set 
+			{
+				_typeFormat = value;
+			}
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapReader.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapReader.cs
@@ -1,783 +1,783 @@
-// created on 24/04/2003 at 15:35
-//
-//	System.Runtime.Serialization.Formatters.Soap.SoapReader
-//
-//	Authors:
-//		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Xml;
-using System.Xml.Schema;
-using System.Reflection;
-using System.Collections;
-using System.Threading;
-using System.Globalization;
-using System.Runtime.Remoting;
-using System.Runtime.Serialization;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Remoting.Metadata;
-
-namespace System.Runtime.Serialization.Formatters.Soap {
-	internal sealed class SoapReader {
-
-		#region Fields
-
-		private SerializationBinder _binder;
-		private SoapTypeMapper mapper;
-		private ObjectManager objMgr;
-		private StreamingContext _context;
-		private long _nextAvailableId = long.MaxValue;
-		private ISurrogateSelector _surrogateSelector;
-		private XmlTextReader xmlReader;
-		private Hashtable _fieldIndices;
-		private long _topObjectId = 1;
-		
-		class TypeMetadata
-		{
-			public MemberInfo[] MemberInfos;
-			public Hashtable Indices;
-		}
-
-		#endregion
-
-		#region Properties
-
-		private long NextAvailableId
-		{
-			get 
-			{
-				_nextAvailableId--;
-				return _nextAvailableId;
-			}
-		}
-
-		#endregion
-
-		#region Constructors
-		
-		public SoapReader(SerializationBinder binder, ISurrogateSelector selector, StreamingContext context) 
-		{
-			_binder = binder;
-			objMgr = new ObjectManager(selector, context);
-			_context = context;
-			_surrogateSelector = selector;
-			_fieldIndices = new Hashtable();
-		}
-
-		#endregion
-
-		#region Public Methods
-
-		public object Deserialize(Stream inStream, ISoapMessage soapMessage)
-		{
-			var savedCi = CultureInfo.CurrentCulture;
-			try {
-				Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
-				Deserialize_inner(inStream, soapMessage);
-			}
-			finally {
-				Thread.CurrentThread.CurrentCulture = savedCi;
-			}
-
-			return TopObject;
-		}
-
-		void Deserialize_inner(Stream inStream, ISoapMessage soapMessage)
-		{
-			ArrayList headers = null;
-			xmlReader = new XmlTextReader(inStream);
-			xmlReader.WhitespaceHandling = WhitespaceHandling.None;
-			mapper = new SoapTypeMapper(_binder);
-
-			try
-			{
-				// SOAP-ENV:Envelope
-				xmlReader.MoveToContent();
-				xmlReader.ReadStartElement ();
-				xmlReader.MoveToContent();
-				
-				// Read headers
-				while (!(xmlReader.NodeType == XmlNodeType.Element && xmlReader.LocalName == "Body" && xmlReader.NamespaceURI == SoapTypeMapper.SoapEnvelopeNamespace))
-				{
-					if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.LocalName == "Header" && xmlReader.NamespaceURI == SoapTypeMapper.SoapEnvelopeNamespace)
-					{
-						if (headers == null) headers = new ArrayList ();
-						DeserializeHeaders (headers);
-					}
-					else
-						xmlReader.Skip ();
-					xmlReader.MoveToContent();
-				}
-				
-				// SOAP-ENV:Body
-				xmlReader.ReadStartElement();
-				xmlReader.MoveToContent();
-
-				// The root object
-				if (soapMessage != null)
-				{
-					if (DeserializeMessage (soapMessage)) {
-						_topObjectId = NextAvailableId;
-						RegisterObject (_topObjectId, soapMessage, null, 0, null, null);
-					}
-					xmlReader.MoveToContent();
-					
-					if (headers != null)
-						soapMessage.Headers = (Header[]) headers.ToArray (typeof(Header));
-				}
-				
-				while (xmlReader.NodeType != XmlNodeType.EndElement)
-					Deserialize();
-					
-				// SOAP-ENV:Body
-				xmlReader.ReadEndElement ();
-				xmlReader.MoveToContent();
-
-				// SOAP-ENV:Envelope
-				xmlReader.ReadEndElement ();
-			}
-			finally 
-			{
-				if(xmlReader != null) xmlReader.Close();
-			}
-		}
-		
-		#endregion
-		
-		public SoapTypeMapper Mapper {
-			get { return mapper; }
-		}
-		
-		public XmlTextReader XmlReader {
-			get { return xmlReader; }
-		}
-
-		#region Private Methods
-
-		private object TopObject 
-		{
-			get 
-			{
-				objMgr.DoFixups();
-				objMgr.RaiseDeserializationEvent();
-				return objMgr.GetObject(_topObjectId);
-			}
-		}
-
-		private bool IsNull()
-		{
-			string tmp = xmlReader["null", XmlSchema.InstanceNamespace];
-			return (tmp == null || tmp == string.Empty)?false:true;
-		}
-
-		private long GetId()
-		{
-			long id = 0;
-
-			string strId = xmlReader["id"];
-			if(strId == null || strId == String.Empty) return 0;
-			id = Convert.ToInt64(strId.Substring(4));
-			return id;
-		}
-
-		private long GetHref()
-		{
-			long href = 0;
-			
-			string strHref = xmlReader["href"];
-			if(strHref == null || strHref == string.Empty) return 0;
-			href = Convert.ToInt64(strHref.Substring(5));
-			return href;
-		}
-
-		private Type GetComponentType()
-		{
-			string strValue = xmlReader["type", XmlSchema.InstanceNamespace];
-			if(strValue == null) {
-				if(GetId() != 0) return typeof(string);
-				return null;
-			}
-			return GetTypeFromQName (strValue);
-		}
-
-		private bool DeserializeMessage(ISoapMessage message) 
-		{
-			string typeNamespace, assemblyName;
-
-			if(xmlReader.Name == SoapTypeMapper.SoapEnvelopePrefix + ":Fault")
-			{
-				Deserialize();
-				return false;
-			}
-
-			SoapServices.DecodeXmlNamespaceForClrTypeNamespace(
-				xmlReader.NamespaceURI,
-				out typeNamespace,
-				out assemblyName);
-			message.MethodName = xmlReader.LocalName;
-			message.XmlNameSpace = xmlReader.NamespaceURI;
-
-			ArrayList paramNames = new ArrayList();
-			ArrayList paramValues = new ArrayList();
-			long paramValuesId = NextAvailableId;
-			int[] indices = new int[1];
-
-			if (!xmlReader.IsEmptyElement)
-			{
-				int initialDepth = xmlReader.Depth;
-				xmlReader.Read();
-				int i = 0;
-				while(xmlReader.Depth > initialDepth) 
-				{
-					long paramId, paramHref;
-					object objParam = null;
-					paramNames.Add (xmlReader.Name);
-					Type paramType = null;
-					
-					if (message.ParamTypes != null) {
-						if (i >= message.ParamTypes.Length)
-							throw new SerializationException ("Not enough parameter types in SoapMessages");
-						paramType = message.ParamTypes [i];
-					}
-					
-					indices[0] = i;
-					objParam = DeserializeComponent(
-						paramType,
-						out paramId,
-						out paramHref,
-						paramValuesId,
-						null,
-						indices);
-					indices[0] = paramValues.Add(objParam);
-					if(paramHref != 0) 
-					{
-						RecordFixup(paramValuesId, paramHref, paramValues.ToArray(), null, null, null, indices);
-					}
-					else if(paramId != 0) 
-					{
-//						RegisterObject(paramId, objParam, null, paramValuesId, null, indices);
-					}
-					else 
-					{
-					}
-					i++;
-				}
-				xmlReader.ReadEndElement();
-			}
-			else
-			{
-				xmlReader.Read();
-			}
-			
-			message.ParamNames = (string[]) paramNames.ToArray(typeof(string));
-			message.ParamValues = paramValues.ToArray();
-			RegisterObject(paramValuesId, message.ParamValues, null, 0, null, null);
-			return true;
-		}
-
-		void DeserializeHeaders (ArrayList headers)
-		{
-			xmlReader.ReadStartElement ();
-			xmlReader.MoveToContent ();
-			
-			while (xmlReader.NodeType != XmlNodeType.EndElement) 
-			{
-				if (xmlReader.NodeType != XmlNodeType.Element) { xmlReader.Skip(); continue; }
-				
-				if (xmlReader.GetAttribute ("root", SoapTypeMapper.SoapEncodingNamespace) == "1")
-					headers.Add (DeserializeHeader ());
-				else
-					Deserialize ();
-
-				xmlReader.MoveToContent ();
-			}
-			
-			xmlReader.ReadEndElement ();
-		}
-		
-		Header DeserializeHeader ()
-		{
-			Header h = new Header (xmlReader.LocalName, null);
-			h.HeaderNamespace = xmlReader.NamespaceURI;
-			h.MustUnderstand = xmlReader.GetAttribute ("mustUnderstand", SoapTypeMapper.SoapEnvelopeNamespace) == "1";
-			
-			object value;
-			long fieldId, fieldHref;
-			long idHeader = NextAvailableId;
-			FieldInfo fieldInfo = typeof(Header).GetField ("Value");
-
-			value = DeserializeComponent (null, out fieldId, out fieldHref, idHeader, fieldInfo, null);
-			h.Value = value;
-
-			if(fieldHref != 0 && value == null)
-			{
-				RecordFixup (idHeader, fieldHref, h, null, null, fieldInfo, null);
-			}
-			else if(value != null && value.GetType().IsValueType && fieldId != 0)
-			{
-				RecordFixup (idHeader, fieldId, h, null, null, fieldInfo, null);
-			}
-			else if(fieldId != 0)
-			{
-				RegisterObject (fieldId, value, null, idHeader, fieldInfo, null);
-			}
-			
-			RegisterObject (idHeader, h, null, 0, null, null);
-			return h;
-		}
-
-		
-		private object DeserializeArray(long id)
-		{
-			// Special case for base64 byte arrays
-			if (GetComponentType () == typeof(byte[])) {
-				byte[] data = Convert.FromBase64String (xmlReader.ReadElementString());
-				RegisterObject(id, data, null, 0, null, null);
-				return data;
-			}
-			
-			// Get the array properties
-			string strArrayType = xmlReader["arrayType", SoapTypeMapper.SoapEncodingNamespace];
-			string[] arrayInfo = strArrayType.Split(':');
-			int arraySuffixInfo = arrayInfo[1].LastIndexOf('[');
-			String arrayElementType = arrayInfo[1].Substring(0, arraySuffixInfo);
-			String arraySuffix = arrayInfo[1].Substring(arraySuffixInfo);
-			string[] arrayDims = arraySuffix.Substring(1,arraySuffix.Length-2).Trim().Split(',');
-			int numberOfDims = arrayDims.Length;
-			int[] lengths = new int[numberOfDims];
-			
-			for (int i=0; i < numberOfDims; i++)
-			{
-				lengths[i] = Convert.ToInt32(arrayDims[i]);
-			}
-
-			int[] indices = new int[numberOfDims];
-
-			// Create the array
-			Type arrayType = mapper.GetType (arrayElementType, xmlReader.LookupNamespace(arrayInfo[0]));
-			Array array = Array.CreateInstance(
-				arrayType,
-				lengths);
-
-			for(int i = 0; i < numberOfDims; i++) 
-			{
-				indices[i] = array.GetLowerBound(i);
-			}
-
-			// Deserialize the array items
-			int arrayDepth = xmlReader.Depth;
-			xmlReader.Read();
-			while(xmlReader.Depth > arrayDepth)
-			{
-				Type itemType = GetComponentType();
-				if(itemType == null) 
-					itemType = array.GetType().GetElementType();
-				long itemId, itemHref;
-
-				object objItem = DeserializeComponent(itemType,
-					out itemId,
-					out itemHref,
-					id,
-					null,
-					indices);
-				if(itemHref != 0)
-				{
-					object obj = objMgr.GetObject(itemHref);
-					if(obj != null)
-						array.SetValue(obj, indices);
-					else
-						RecordFixup(id, itemHref, array, null, null, null, indices);
-				}
-				else if(objItem != null && objItem.GetType().IsValueType && itemId != 0)
-				{
-					RecordFixup(id, itemId, array, null, null, null, indices);
-				}
-				else if(itemId != 0)
-				{
-					RegisterObject(itemId, objItem, null, id, null, indices);
-					array.SetValue(objItem, indices);
-				}
-				else 
-				{
-					array.SetValue(objItem, indices);
-				}
-
-				// Get the next indice
-				for(int dim = array.Rank - 1; dim >= 0; dim--)
-				{
-					indices[dim]++;
-					if(indices[dim] > array.GetUpperBound(dim))
-					{
-						if(dim > 0)
-						{
-							indices[dim] = array.GetLowerBound(dim);
-							continue;
-						}
-						
-					}
-					break;
-				}
-			}
-
-			RegisterObject(id, array, null, 0, null, null);
-			xmlReader.ReadEndElement();
-			return array;
-
-		}
-
-
-		private object Deserialize()
-		{
-			object objReturn = null;
-			Type type = mapper.GetType (xmlReader.LocalName, xmlReader.NamespaceURI);
-
-			// Get the Id
-			long id = GetId();
-			id = (id == 0)?1:id;
-
-			if(type == typeof(Array))
-			{
-				objReturn = DeserializeArray(id);
-			}
-			else
-			{
-				objReturn = DeserializeObject(type, id, 0, null, null);
-
-			}
-
-			return objReturn;
-		}
-
-
-		private object DeserializeObject(
-			Type type, 
-			long id, 
-			long parentId, 
-			MemberInfo parentMemberInfo,
-			int[] indices)
-		{
-			SerializationInfo info = null;
-			bool NeedsSerializationInfo = false;
-			bool hasFixup;
-
-			// in case of String & TimeSpan we should allways use 'ReadInternalSoapValue' method
-			// in case of other internal types, we should use ReadInternalSoapValue' only if it is NOT
-			// the root object, means it is a data member of another object that is being serialized.
-			bool shouldReadInternal = (type == typeof(String) || type == typeof(TimeSpan) );
-			if(shouldReadInternal || mapper.IsInternalSoapType (type) && (indices != null || parentMemberInfo != null) ) 
-			{
-				object obj = mapper.ReadInternalSoapValue (this, type);
-				
-				if(id != 0) 
-					RegisterObject(id, obj, info, parentId, parentMemberInfo, indices);
-
-				return obj;
-			}
-			object objReturn = 
-				FormatterServices.GetUninitializedObject(type);
-
-			objMgr.RaiseOnDeserializingEvent (objReturn);
-			if(objReturn is ISerializable)
-				NeedsSerializationInfo = true;
-
-			if(_surrogateSelector != null && NeedsSerializationInfo == false)
-			{
-				ISurrogateSelector selector;
-				ISerializationSurrogate surrogate = _surrogateSelector.GetSurrogate(
-					type,
-					_context,
-					out selector);
-				NeedsSerializationInfo |= (surrogate != null);
-			}
-
-			if(NeedsSerializationInfo)
-			{
-				objReturn = 
-					DeserializeISerializableObject(objReturn, id, out info, out hasFixup);
-			}
-			else
-			{
-				objReturn = 
-					DeserializeSimpleObject(objReturn, id, out hasFixup);
-				if(!hasFixup && objReturn is IObjectReference)
-					objReturn = ((IObjectReference)objReturn).GetRealObject(_context);
-			}
-
-			RegisterObject(id, objReturn, info, parentId, parentMemberInfo, indices);
-			xmlReader.ReadEndElement();
-			return objReturn;
-		}
-
-
-		private object DeserializeSimpleObject(
-			object obj,
-			long id,
-			out bool hasFixup
-			)
-		{
-			hasFixup = false;
-			Type currentType = obj.GetType();
-			TypeMetadata tm = GetTypeMetadata (currentType);
-
-			object[] data = new object[tm.MemberInfos.Length];
-			xmlReader.Read();
-			xmlReader.MoveToContent ();
-			while (xmlReader.NodeType != XmlNodeType.EndElement)
-			{
-				if (xmlReader.NodeType != XmlNodeType.Element) {
-					xmlReader.Skip ();
-					continue;
-				}
-				
-				object fieldObject;
-				long fieldId, fieldHref;
-
-				object indexob = tm.Indices [xmlReader.LocalName];
-				if (indexob == null)
-					throw new SerializationException ("Field \"" + xmlReader.LocalName + "\" not found in class " + currentType.FullName);
-				
-				int index = (int) indexob;
-				FieldInfo fieldInfo = (tm.MemberInfos[index]) as FieldInfo;
-
-				fieldObject = 
-					DeserializeComponent(fieldInfo.FieldType,
-					out fieldId,
-					out fieldHref,
-					id,
-					fieldInfo,
-					null);
-
-				data[index] = fieldObject;
-
-				if(fieldHref != 0 && fieldObject == null)
-				{
-					RecordFixup(id, fieldHref, obj, null, null, fieldInfo, null);
-					hasFixup = true;
-					continue;
-				}
-				if(fieldObject != null && fieldObject.GetType().IsValueType && fieldId != 0)
-				{
-					RecordFixup(id, fieldId, obj, null, null, fieldInfo, null);
-					hasFixup = true;
-					continue;
-				}
-
-				if(fieldId != 0)
-				{
-					RegisterObject(fieldId, fieldObject, null, id, fieldInfo, null);
-				}
-			}
-
-			FormatterServices.PopulateObjectMembers (obj, tm.MemberInfos, data);
-			return obj;
-		}
-
-
-		private object DeserializeISerializableObject(
-			object obj, 
-			long id, 
-			out SerializationInfo info,
-			out bool hasFixup
-			)
-		{
-			long fieldId, fieldHref;
-			info = new SerializationInfo(obj.GetType(), new FormatterConverter());
-			hasFixup = false;
-			
-			int initialDepth = xmlReader.Depth;
-			xmlReader.Read();
-			while(xmlReader.Depth > initialDepth) 
-			{
-				Type fieldType = GetComponentType();
-				string fieldName = XmlConvert.DecodeName (xmlReader.LocalName);
-				object objField = DeserializeComponent(
-					fieldType,
-					out fieldId,
-					out fieldHref,
-					id,
-					null,
-					null);
-				if(fieldHref != 0 && objField == null) 
-				{
-					RecordFixup(id, fieldHref, obj, info, fieldName, null, null);
-					hasFixup = true;
-					continue;
-				}
-				else if(fieldId != 0 && objField.GetType().IsValueType)
-				{
-					RecordFixup(id, fieldId, obj, info, fieldName, null, null);
-					hasFixup = true;
-					continue;
-				}
-				
-				if(fieldId != 0) 
-				{
-					RegisterObject(fieldId, objField, null, id, null, null);
-				}
-
-				info.AddValue(fieldName, objField, (fieldType != null)?fieldType:typeof(object));
-			}
-
-			return obj;
-		}
-
-
-		private object DeserializeComponent(
-			Type componentType, 
-			out long componentId,
-			out long componentHref,
-			long parentId,
-			MemberInfo parentMemberInfo,
-			int[] indices)
-		{
-			object objReturn;
-			componentId = 0;
-			componentHref = 0;
-
-			if(IsNull())
-			{
-				xmlReader.Read();
-				return null;
-			}
-
-			Type xsiType = GetComponentType();
-			if(xsiType != null) componentType = xsiType;
-
-			if(xmlReader.HasAttributes)
-			{
-				componentId = GetId();
-				componentHref = GetHref();
-			}
-
-			if(componentId != 0)
-			{
-				// It's a string
-				string str = xmlReader.ReadElementString();
-				objMgr.RegisterObject (str, componentId);
-				return str;
-			}
-			if(componentHref != 0)
-			{
-				// Move the cursor to the next node
-				xmlReader.Read();
-				return objMgr.GetObject(componentHref);
-			}
-
-			if(componentType == null)
-				return xmlReader.ReadElementString();
-
-			componentId = NextAvailableId;
-			objReturn = DeserializeObject(
-				componentType,
-				componentId,
-				parentId,
-				parentMemberInfo,
-				indices);
-			return objReturn;
-		}
-
-		public void RecordFixup(
-			long parentObjectId, 
-			long childObjectId,
-			object parentObject,
-			SerializationInfo info,
-			string fieldName,
-			MemberInfo memberInfo,
-			int[] indices)
-		{
-			if(info != null)
-			{
-				objMgr.RecordDelayedFixup(parentObjectId, fieldName, childObjectId);
-			}
-			else if (parentObject is Array) 
-			{
-				if (indices.Length == 1)
-					objMgr.RecordArrayElementFixup (parentObjectId, indices[0], childObjectId);
-				else
-					objMgr.RecordArrayElementFixup (parentObjectId, (int[])indices.Clone(), childObjectId);
-			}
-			else 
-			{
-				objMgr.RecordFixup (parentObjectId, memberInfo, childObjectId);
-			}
-		}
-
-		private void RegisterObject (
-			long objectId, 
-			object objectInstance, 
-			SerializationInfo info, 
-			long parentObjectId, 
-			MemberInfo parentObjectMember, 
-			int[] indices)
-		{
-			if (parentObjectId == 0) indices = null;
-
-			if (!objectInstance.GetType ().IsValueType || parentObjectId == 0) {
-				if (objMgr.GetObject(objectId) != objectInstance)
-					objMgr.RegisterObject (objectInstance, objectId, info, 0, null, null);
-			} else
-			{
-				if(objMgr.GetObject(objectId) != null)
-					throw new SerializationException("Object already registered");
-				if (indices != null) indices = (int[])indices.Clone();
-				objMgr.RegisterObject (
-					objectInstance, 
-					objectId, 
-					info, 
-					parentObjectId, 
-					parentObjectMember, 
-					indices);
-			}
-		}
-
-		TypeMetadata GetTypeMetadata (Type type)
-		{
-			TypeMetadata tm = _fieldIndices[type] as TypeMetadata;
-			if (tm != null) return tm;
-			
-			tm = new TypeMetadata ();
-			tm.MemberInfos = FormatterServices.GetSerializableMembers (type, _context);
-			
-			tm.Indices	= new Hashtable();
-			for(int i = 0; i < tm.MemberInfos.Length; i++) {
-				SoapFieldAttribute at = (SoapFieldAttribute) InternalRemotingServices.GetCachedSoapAttribute (tm.MemberInfos[i]);
-				tm.Indices [XmlConvert.EncodeLocalName (at.XmlElementName)] = i;
-			}
-			
-			_fieldIndices[type] = tm;
-			return tm;
-		}
-		
-		public Type GetTypeFromQName (string qname)
-		{
-			string[] strName = qname.Split(':');
-			string namespaceURI = xmlReader.LookupNamespace (strName[0]);
-			return mapper.GetType (strName[1], namespaceURI);
-		}
-		
-		#endregion
-	}
-}
+// created on 24/04/2003 at 15:35
+//
+//	System.Runtime.Serialization.Formatters.Soap.SoapReader
+//
+//	Authors:
+//		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Xml;
+using System.Xml.Schema;
+using System.Reflection;
+using System.Collections;
+using System.Threading;
+using System.Globalization;
+using System.Runtime.Remoting;
+using System.Runtime.Serialization;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Remoting.Metadata;
+
+namespace System.Runtime.Serialization.Formatters.Soap {
+	internal sealed class SoapReader {
+
+		#region Fields
+
+		private SerializationBinder _binder;
+		private SoapTypeMapper mapper;
+		private ObjectManager objMgr;
+		private StreamingContext _context;
+		private long _nextAvailableId = long.MaxValue;
+		private ISurrogateSelector _surrogateSelector;
+		private XmlTextReader xmlReader;
+		private Hashtable _fieldIndices;
+		private long _topObjectId = 1;
+		
+		class TypeMetadata
+		{
+			public MemberInfo[] MemberInfos;
+			public Hashtable Indices;
+		}
+
+		#endregion
+
+		#region Properties
+
+		private long NextAvailableId
+		{
+			get 
+			{
+				_nextAvailableId--;
+				return _nextAvailableId;
+			}
+		}
+
+		#endregion
+
+		#region Constructors
+		
+		public SoapReader(SerializationBinder binder, ISurrogateSelector selector, StreamingContext context) 
+		{
+			_binder = binder;
+			objMgr = new ObjectManager(selector, context);
+			_context = context;
+			_surrogateSelector = selector;
+			_fieldIndices = new Hashtable();
+		}
+
+		#endregion
+
+		#region Public Methods
+
+		public object Deserialize(Stream inStream, ISoapMessage soapMessage)
+		{
+			var savedCi = CultureInfo.CurrentCulture;
+			try {
+				Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
+				Deserialize_inner(inStream, soapMessage);
+			}
+			finally {
+				Thread.CurrentThread.CurrentCulture = savedCi;
+			}
+
+			return TopObject;
+		}
+
+		void Deserialize_inner(Stream inStream, ISoapMessage soapMessage)
+		{
+			ArrayList headers = null;
+			xmlReader = new XmlTextReader(inStream);
+			xmlReader.WhitespaceHandling = WhitespaceHandling.None;
+			mapper = new SoapTypeMapper(_binder);
+
+			try
+			{
+				// SOAP-ENV:Envelope
+				xmlReader.MoveToContent();
+				xmlReader.ReadStartElement ();
+				xmlReader.MoveToContent();
+				
+				// Read headers
+				while (!(xmlReader.NodeType == XmlNodeType.Element && xmlReader.LocalName == "Body" && xmlReader.NamespaceURI == SoapTypeMapper.SoapEnvelopeNamespace))
+				{
+					if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.LocalName == "Header" && xmlReader.NamespaceURI == SoapTypeMapper.SoapEnvelopeNamespace)
+					{
+						if (headers == null) headers = new ArrayList ();
+						DeserializeHeaders (headers);
+					}
+					else
+						xmlReader.Skip ();
+					xmlReader.MoveToContent();
+				}
+				
+				// SOAP-ENV:Body
+				xmlReader.ReadStartElement();
+				xmlReader.MoveToContent();
+
+				// The root object
+				if (soapMessage != null)
+				{
+					if (DeserializeMessage (soapMessage)) {
+						_topObjectId = NextAvailableId;
+						RegisterObject (_topObjectId, soapMessage, null, 0, null, null);
+					}
+					xmlReader.MoveToContent();
+					
+					if (headers != null)
+						soapMessage.Headers = (Header[]) headers.ToArray (typeof(Header));
+				}
+				
+				while (xmlReader.NodeType != XmlNodeType.EndElement)
+					Deserialize();
+					
+				// SOAP-ENV:Body
+				xmlReader.ReadEndElement ();
+				xmlReader.MoveToContent();
+
+				// SOAP-ENV:Envelope
+				xmlReader.ReadEndElement ();
+			}
+			finally 
+			{
+				if(xmlReader != null) xmlReader.Close();
+			}
+		}
+		
+		#endregion
+		
+		public SoapTypeMapper Mapper {
+			get { return mapper; }
+		}
+		
+		public XmlTextReader XmlReader {
+			get { return xmlReader; }
+		}
+
+		#region Private Methods
+
+		private object TopObject 
+		{
+			get 
+			{
+				objMgr.DoFixups();
+				objMgr.RaiseDeserializationEvent();
+				return objMgr.GetObject(_topObjectId);
+			}
+		}
+
+		private bool IsNull()
+		{
+			string tmp = xmlReader["null", XmlSchema.InstanceNamespace];
+			return (tmp == null || tmp == string.Empty)?false:true;
+		}
+
+		private long GetId()
+		{
+			long id = 0;
+
+			string strId = xmlReader["id"];
+			if(strId == null || strId == String.Empty) return 0;
+			id = Convert.ToInt64(strId.Substring(4));
+			return id;
+		}
+
+		private long GetHref()
+		{
+			long href = 0;
+			
+			string strHref = xmlReader["href"];
+			if(strHref == null || strHref == string.Empty) return 0;
+			href = Convert.ToInt64(strHref.Substring(5));
+			return href;
+		}
+
+		private Type GetComponentType()
+		{
+			string strValue = xmlReader["type", XmlSchema.InstanceNamespace];
+			if(strValue == null) {
+				if(GetId() != 0) return typeof(string);
+				return null;
+			}
+			return GetTypeFromQName (strValue);
+		}
+
+		private bool DeserializeMessage(ISoapMessage message) 
+		{
+			string typeNamespace, assemblyName;
+
+			if(xmlReader.Name == SoapTypeMapper.SoapEnvelopePrefix + ":Fault")
+			{
+				Deserialize();
+				return false;
+			}
+
+			SoapServices.DecodeXmlNamespaceForClrTypeNamespace(
+				xmlReader.NamespaceURI,
+				out typeNamespace,
+				out assemblyName);
+			message.MethodName = xmlReader.LocalName;
+			message.XmlNameSpace = xmlReader.NamespaceURI;
+
+			ArrayList paramNames = new ArrayList();
+			ArrayList paramValues = new ArrayList();
+			long paramValuesId = NextAvailableId;
+			int[] indices = new int[1];
+
+			if (!xmlReader.IsEmptyElement)
+			{
+				int initialDepth = xmlReader.Depth;
+				xmlReader.Read();
+				int i = 0;
+				while(xmlReader.Depth > initialDepth) 
+				{
+					long paramId, paramHref;
+					object objParam = null;
+					paramNames.Add (xmlReader.Name);
+					Type paramType = null;
+					
+					if (message.ParamTypes != null) {
+						if (i >= message.ParamTypes.Length)
+							throw new SerializationException ("Not enough parameter types in SoapMessages");
+						paramType = message.ParamTypes [i];
+					}
+					
+					indices[0] = i;
+					objParam = DeserializeComponent(
+						paramType,
+						out paramId,
+						out paramHref,
+						paramValuesId,
+						null,
+						indices);
+					indices[0] = paramValues.Add(objParam);
+					if(paramHref != 0) 
+					{
+						RecordFixup(paramValuesId, paramHref, paramValues.ToArray(), null, null, null, indices);
+					}
+					else if(paramId != 0) 
+					{
+//						RegisterObject(paramId, objParam, null, paramValuesId, null, indices);
+					}
+					else 
+					{
+					}
+					i++;
+				}
+				xmlReader.ReadEndElement();
+			}
+			else
+			{
+				xmlReader.Read();
+			}
+			
+			message.ParamNames = (string[]) paramNames.ToArray(typeof(string));
+			message.ParamValues = paramValues.ToArray();
+			RegisterObject(paramValuesId, message.ParamValues, null, 0, null, null);
+			return true;
+		}
+
+		void DeserializeHeaders (ArrayList headers)
+		{
+			xmlReader.ReadStartElement ();
+			xmlReader.MoveToContent ();
+			
+			while (xmlReader.NodeType != XmlNodeType.EndElement) 
+			{
+				if (xmlReader.NodeType != XmlNodeType.Element) { xmlReader.Skip(); continue; }
+				
+				if (xmlReader.GetAttribute ("root", SoapTypeMapper.SoapEncodingNamespace) == "1")
+					headers.Add (DeserializeHeader ());
+				else
+					Deserialize ();
+
+				xmlReader.MoveToContent ();
+			}
+			
+			xmlReader.ReadEndElement ();
+		}
+		
+		Header DeserializeHeader ()
+		{
+			Header h = new Header (xmlReader.LocalName, null);
+			h.HeaderNamespace = xmlReader.NamespaceURI;
+			h.MustUnderstand = xmlReader.GetAttribute ("mustUnderstand", SoapTypeMapper.SoapEnvelopeNamespace) == "1";
+			
+			object value;
+			long fieldId, fieldHref;
+			long idHeader = NextAvailableId;
+			FieldInfo fieldInfo = typeof(Header).GetField ("Value");
+
+			value = DeserializeComponent (null, out fieldId, out fieldHref, idHeader, fieldInfo, null);
+			h.Value = value;
+
+			if(fieldHref != 0 && value == null)
+			{
+				RecordFixup (idHeader, fieldHref, h, null, null, fieldInfo, null);
+			}
+			else if(value != null && value.GetType().IsValueType && fieldId != 0)
+			{
+				RecordFixup (idHeader, fieldId, h, null, null, fieldInfo, null);
+			}
+			else if(fieldId != 0)
+			{
+				RegisterObject (fieldId, value, null, idHeader, fieldInfo, null);
+			}
+			
+			RegisterObject (idHeader, h, null, 0, null, null);
+			return h;
+		}
+
+		
+		private object DeserializeArray(long id)
+		{
+			// Special case for base64 byte arrays
+			if (GetComponentType () == typeof(byte[])) {
+				byte[] data = Convert.FromBase64String (xmlReader.ReadElementString());
+				RegisterObject(id, data, null, 0, null, null);
+				return data;
+			}
+			
+			// Get the array properties
+			string strArrayType = xmlReader["arrayType", SoapTypeMapper.SoapEncodingNamespace];
+			string[] arrayInfo = strArrayType.Split(':');
+			int arraySuffixInfo = arrayInfo[1].LastIndexOf('[');
+			String arrayElementType = arrayInfo[1].Substring(0, arraySuffixInfo);
+			String arraySuffix = arrayInfo[1].Substring(arraySuffixInfo);
+			string[] arrayDims = arraySuffix.Substring(1,arraySuffix.Length-2).Trim().Split(',');
+			int numberOfDims = arrayDims.Length;
+			int[] lengths = new int[numberOfDims];
+			
+			for (int i=0; i < numberOfDims; i++)
+			{
+				lengths[i] = Convert.ToInt32(arrayDims[i]);
+			}
+
+			int[] indices = new int[numberOfDims];
+
+			// Create the array
+			Type arrayType = mapper.GetType (arrayElementType, xmlReader.LookupNamespace(arrayInfo[0]));
+			Array array = Array.CreateInstance(
+				arrayType,
+				lengths);
+
+			for(int i = 0; i < numberOfDims; i++) 
+			{
+				indices[i] = array.GetLowerBound(i);
+			}
+
+			// Deserialize the array items
+			int arrayDepth = xmlReader.Depth;
+			xmlReader.Read();
+			while(xmlReader.Depth > arrayDepth)
+			{
+				Type itemType = GetComponentType();
+				if(itemType == null) 
+					itemType = array.GetType().GetElementType();
+				long itemId, itemHref;
+
+				object objItem = DeserializeComponent(itemType,
+					out itemId,
+					out itemHref,
+					id,
+					null,
+					indices);
+				if(itemHref != 0)
+				{
+					object obj = objMgr.GetObject(itemHref);
+					if(obj != null)
+						array.SetValue(obj, indices);
+					else
+						RecordFixup(id, itemHref, array, null, null, null, indices);
+				}
+				else if(objItem != null && objItem.GetType().IsValueType && itemId != 0)
+				{
+					RecordFixup(id, itemId, array, null, null, null, indices);
+				}
+				else if(itemId != 0)
+				{
+					RegisterObject(itemId, objItem, null, id, null, indices);
+					array.SetValue(objItem, indices);
+				}
+				else 
+				{
+					array.SetValue(objItem, indices);
+				}
+
+				// Get the next indice
+				for(int dim = array.Rank - 1; dim >= 0; dim--)
+				{
+					indices[dim]++;
+					if(indices[dim] > array.GetUpperBound(dim))
+					{
+						if(dim > 0)
+						{
+							indices[dim] = array.GetLowerBound(dim);
+							continue;
+						}
+						
+					}
+					break;
+				}
+			}
+
+			RegisterObject(id, array, null, 0, null, null);
+			xmlReader.ReadEndElement();
+			return array;
+
+		}
+
+
+		private object Deserialize()
+		{
+			object objReturn = null;
+			Type type = mapper.GetType (xmlReader.LocalName, xmlReader.NamespaceURI);
+
+			// Get the Id
+			long id = GetId();
+			id = (id == 0)?1:id;
+
+			if(type == typeof(Array))
+			{
+				objReturn = DeserializeArray(id);
+			}
+			else
+			{
+				objReturn = DeserializeObject(type, id, 0, null, null);
+
+			}
+
+			return objReturn;
+		}
+
+
+		private object DeserializeObject(
+			Type type, 
+			long id, 
+			long parentId, 
+			MemberInfo parentMemberInfo,
+			int[] indices)
+		{
+			SerializationInfo info = null;
+			bool NeedsSerializationInfo = false;
+			bool hasFixup;
+
+			// in case of String & TimeSpan we should allways use 'ReadInternalSoapValue' method
+			// in case of other internal types, we should use ReadInternalSoapValue' only if it is NOT
+			// the root object, means it is a data member of another object that is being serialized.
+			bool shouldReadInternal = (type == typeof(String) || type == typeof(TimeSpan) );
+			if(shouldReadInternal || mapper.IsInternalSoapType (type) && (indices != null || parentMemberInfo != null) ) 
+			{
+				object obj = mapper.ReadInternalSoapValue (this, type);
+				
+				if(id != 0) 
+					RegisterObject(id, obj, info, parentId, parentMemberInfo, indices);
+
+				return obj;
+			}
+			object objReturn = 
+				FormatterServices.GetUninitializedObject(type);
+
+			objMgr.RaiseOnDeserializingEvent (objReturn);
+			if(objReturn is ISerializable)
+				NeedsSerializationInfo = true;
+
+			if(_surrogateSelector != null && NeedsSerializationInfo == false)
+			{
+				ISurrogateSelector selector;
+				ISerializationSurrogate surrogate = _surrogateSelector.GetSurrogate(
+					type,
+					_context,
+					out selector);
+				NeedsSerializationInfo |= (surrogate != null);
+			}
+
+			if(NeedsSerializationInfo)
+			{
+				objReturn = 
+					DeserializeISerializableObject(objReturn, id, out info, out hasFixup);
+			}
+			else
+			{
+				objReturn = 
+					DeserializeSimpleObject(objReturn, id, out hasFixup);
+				if(!hasFixup && objReturn is IObjectReference)
+					objReturn = ((IObjectReference)objReturn).GetRealObject(_context);
+			}
+
+			RegisterObject(id, objReturn, info, parentId, parentMemberInfo, indices);
+			xmlReader.ReadEndElement();
+			return objReturn;
+		}
+
+
+		private object DeserializeSimpleObject(
+			object obj,
+			long id,
+			out bool hasFixup
+			)
+		{
+			hasFixup = false;
+			Type currentType = obj.GetType();
+			TypeMetadata tm = GetTypeMetadata (currentType);
+
+			object[] data = new object[tm.MemberInfos.Length];
+			xmlReader.Read();
+			xmlReader.MoveToContent ();
+			while (xmlReader.NodeType != XmlNodeType.EndElement)
+			{
+				if (xmlReader.NodeType != XmlNodeType.Element) {
+					xmlReader.Skip ();
+					continue;
+				}
+				
+				object fieldObject;
+				long fieldId, fieldHref;
+
+				object indexob = tm.Indices [xmlReader.LocalName];
+				if (indexob == null)
+					throw new SerializationException ("Field \"" + xmlReader.LocalName + "\" not found in class " + currentType.FullName);
+				
+				int index = (int) indexob;
+				FieldInfo fieldInfo = (tm.MemberInfos[index]) as FieldInfo;
+
+				fieldObject = 
+					DeserializeComponent(fieldInfo.FieldType,
+					out fieldId,
+					out fieldHref,
+					id,
+					fieldInfo,
+					null);
+
+				data[index] = fieldObject;
+
+				if(fieldHref != 0 && fieldObject == null)
+				{
+					RecordFixup(id, fieldHref, obj, null, null, fieldInfo, null);
+					hasFixup = true;
+					continue;
+				}
+				if(fieldObject != null && fieldObject.GetType().IsValueType && fieldId != 0)
+				{
+					RecordFixup(id, fieldId, obj, null, null, fieldInfo, null);
+					hasFixup = true;
+					continue;
+				}
+
+				if(fieldId != 0)
+				{
+					RegisterObject(fieldId, fieldObject, null, id, fieldInfo, null);
+				}
+			}
+
+			FormatterServices.PopulateObjectMembers (obj, tm.MemberInfos, data);
+			return obj;
+		}
+
+
+		private object DeserializeISerializableObject(
+			object obj, 
+			long id, 
+			out SerializationInfo info,
+			out bool hasFixup
+			)
+		{
+			long fieldId, fieldHref;
+			info = new SerializationInfo(obj.GetType(), new FormatterConverter());
+			hasFixup = false;
+			
+			int initialDepth = xmlReader.Depth;
+			xmlReader.Read();
+			while(xmlReader.Depth > initialDepth) 
+			{
+				Type fieldType = GetComponentType();
+				string fieldName = XmlConvert.DecodeName (xmlReader.LocalName);
+				object objField = DeserializeComponent(
+					fieldType,
+					out fieldId,
+					out fieldHref,
+					id,
+					null,
+					null);
+				if(fieldHref != 0 && objField == null) 
+				{
+					RecordFixup(id, fieldHref, obj, info, fieldName, null, null);
+					hasFixup = true;
+					continue;
+				}
+				else if(fieldId != 0 && objField.GetType().IsValueType)
+				{
+					RecordFixup(id, fieldId, obj, info, fieldName, null, null);
+					hasFixup = true;
+					continue;
+				}
+				
+				if(fieldId != 0) 
+				{
+					RegisterObject(fieldId, objField, null, id, null, null);
+				}
+
+				info.AddValue(fieldName, objField, (fieldType != null)?fieldType:typeof(object));
+			}
+
+			return obj;
+		}
+
+
+		private object DeserializeComponent(
+			Type componentType, 
+			out long componentId,
+			out long componentHref,
+			long parentId,
+			MemberInfo parentMemberInfo,
+			int[] indices)
+		{
+			object objReturn;
+			componentId = 0;
+			componentHref = 0;
+
+			if(IsNull())
+			{
+				xmlReader.Read();
+				return null;
+			}
+
+			Type xsiType = GetComponentType();
+			if(xsiType != null) componentType = xsiType;
+
+			if(xmlReader.HasAttributes)
+			{
+				componentId = GetId();
+				componentHref = GetHref();
+			}
+
+			if(componentId != 0)
+			{
+				// It's a string
+				string str = xmlReader.ReadElementString();
+				objMgr.RegisterObject (str, componentId);
+				return str;
+			}
+			if(componentHref != 0)
+			{
+				// Move the cursor to the next node
+				xmlReader.Read();
+				return objMgr.GetObject(componentHref);
+			}
+
+			if(componentType == null)
+				return xmlReader.ReadElementString();
+
+			componentId = NextAvailableId;
+			objReturn = DeserializeObject(
+				componentType,
+				componentId,
+				parentId,
+				parentMemberInfo,
+				indices);
+			return objReturn;
+		}
+
+		public void RecordFixup(
+			long parentObjectId, 
+			long childObjectId,
+			object parentObject,
+			SerializationInfo info,
+			string fieldName,
+			MemberInfo memberInfo,
+			int[] indices)
+		{
+			if(info != null)
+			{
+				objMgr.RecordDelayedFixup(parentObjectId, fieldName, childObjectId);
+			}
+			else if (parentObject is Array) 
+			{
+				if (indices.Length == 1)
+					objMgr.RecordArrayElementFixup (parentObjectId, indices[0], childObjectId);
+				else
+					objMgr.RecordArrayElementFixup (parentObjectId, (int[])indices.Clone(), childObjectId);
+			}
+			else 
+			{
+				objMgr.RecordFixup (parentObjectId, memberInfo, childObjectId);
+			}
+		}
+
+		private void RegisterObject (
+			long objectId, 
+			object objectInstance, 
+			SerializationInfo info, 
+			long parentObjectId, 
+			MemberInfo parentObjectMember, 
+			int[] indices)
+		{
+			if (parentObjectId == 0) indices = null;
+
+			if (!objectInstance.GetType ().IsValueType || parentObjectId == 0) {
+				if (objMgr.GetObject(objectId) != objectInstance)
+					objMgr.RegisterObject (objectInstance, objectId, info, 0, null, null);
+			} else
+			{
+				if(objMgr.GetObject(objectId) != null)
+					throw new SerializationException("Object already registered");
+				if (indices != null) indices = (int[])indices.Clone();
+				objMgr.RegisterObject (
+					objectInstance, 
+					objectId, 
+					info, 
+					parentObjectId, 
+					parentObjectMember, 
+					indices);
+			}
+		}
+
+		TypeMetadata GetTypeMetadata (Type type)
+		{
+			TypeMetadata tm = _fieldIndices[type] as TypeMetadata;
+			if (tm != null) return tm;
+			
+			tm = new TypeMetadata ();
+			tm.MemberInfos = FormatterServices.GetSerializableMembers (type, _context);
+			
+			tm.Indices	= new Hashtable();
+			for(int i = 0; i < tm.MemberInfos.Length; i++) {
+				SoapFieldAttribute at = (SoapFieldAttribute) InternalRemotingServices.GetCachedSoapAttribute (tm.MemberInfos[i]);
+				tm.Indices [XmlConvert.EncodeLocalName (at.XmlElementName)] = i;
+			}
+			
+			_fieldIndices[type] = tm;
+			return tm;
+		}
+		
+		public Type GetTypeFromQName (string qname)
+		{
+			string[] strName = qname.Split(':');
+			string namespaceURI = xmlReader.LookupNamespace (strName[0]);
+			return mapper.GetType (strName[1], namespaceURI);
+		}
+		
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapWriter.cs
@@ -1,631 +1,631 @@
-// created on 07/04/2003 at 17:56
-//
-//	System.Runtime.Serialization.Formatters.Soap.SoapWriter
-//
-//	Authors:
-//		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Threading;
-using System.Reflection;
-using System.Collections;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Metadata;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-using System.Globalization;
-using System.Text;
-
-namespace System.Runtime.Serialization.Formatters.Soap {
-	
-	internal class SoapWriter: IComparer {
-		private struct EnqueuedObject {
-			public long _id;
-			public object _object;
-			
-			public EnqueuedObject(object currentObject, long id) {
-				_id = id;
-				_object = currentObject;
-			}
-
-			public long Id 
-			{
-				get 
-				{
-					return _id;
-				}
-			}
-
-			public object Object 
-			{
-				get 
-				{
-					return _object;
-				}
-			}
-		}
-		
-		#region Fields
-
-		private XmlTextWriter _xmlWriter;
-		private Queue _objectQueue = new Queue();
-		private Hashtable _objectToIdTable = new Hashtable();
-		private ISurrogateSelector _surrogateSelector;
-		private SoapTypeMapper _mapper;
-		private StreamingContext _context;
-		private ObjectIDGenerator idGen = new ObjectIDGenerator();
-		private FormatterAssemblyStyle _assemblyFormat = FormatterAssemblyStyle.Full;
-		private FormatterTypeStyle _typeFormat = FormatterTypeStyle.TypesWhenNeeded;
-		private static string defaultMessageNamespace;
-		SerializationObjectManager _manager;
-
-		#endregion
-		
-		~SoapWriter() 
-		{
-		}
-
-		#region Constructors
-
-		internal SoapWriter(
-			Stream outStream, 
-			ISurrogateSelector selector, 
-			StreamingContext context,
-			ISoapMessage soapMessage)
-		{
-			_xmlWriter = new XmlTextWriter(outStream, null);
-			_xmlWriter.Formatting = Formatting.Indented;
-			_surrogateSelector = selector;
-			_context = context;
-			_manager = new SerializationObjectManager (_context);
-		}
-
-		static SoapWriter() 
-		{
-			defaultMessageNamespace = typeof(SoapWriter).Assembly.GetName().FullName;
-		}
-
-		#endregion
-		
-		public SoapTypeMapper Mapper {
-			get { return _mapper; }
-		}
-		
-		public XmlTextWriter XmlWriter {
-			get { return _xmlWriter; }
-		}
-
-		#region Internal Properties
-
-		internal FormatterAssemblyStyle AssemblyFormat
-		{
-			get 
-			{
-				return _assemblyFormat;
-			}
-			set 
-			{
-				_assemblyFormat = value;
-			}
-		}
-
-		internal FormatterTypeStyle TypeFormat 
-		{
-			get 
-			{
-				return _typeFormat;
-			}
-			set 
-			{
-				_typeFormat = value;
-			}
-		}
-
-		#endregion
-
-		private void Id(long id) 
-		{
-			_xmlWriter.WriteAttributeString(null, "id", null, "ref-" + id.ToString());
-		}
-
-		private void Href(long href) 
-		{
-			_xmlWriter.WriteAttributeString(null, "href", null, "#ref-" + href.ToString());
-		}
-
-
-		private void Null() 
-		{
-			_xmlWriter.WriteAttributeString("xsi", "null", XmlSchema.InstanceNamespace, "1");
-		}
-
-		private bool IsEncodingNeeded(
-			object componentObject,
-			Type componentType)
-		{
-			if(componentObject == null)
-				return false;
-			if(_typeFormat == FormatterTypeStyle.TypesAlways)
-				return true;
-			if(componentType == null) 
-			{
-				componentType = componentObject.GetType();
-				if(componentType.IsPrimitive || componentType == typeof(string))
-					return false;
-				else
-					return true;
-
-			}
-			else 
-			{
-				if(componentType == typeof(object) || componentType != componentObject.GetType())
-					return true;
-				else
-					return false;
-			}
-		}
-
-
-		internal void Serialize (object objGraph, Header[] headers, FormatterTypeStyle typeFormat, FormatterAssemblyStyle assemblyFormat)
-		{
-			CultureInfo savedCi = CultureInfo.CurrentCulture;
-			try {
-				Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
-				Serialize_inner (objGraph, headers, typeFormat, assemblyFormat);
-			} finally {
-				Thread.CurrentThread.CurrentCulture = savedCi;
-			}
-
-			_manager.RaiseOnSerializedEvent ();
-		}
-
-		void Serialize_inner (object objGraph, Header[] headers, FormatterTypeStyle typeFormat, FormatterAssemblyStyle assemblyFormat)
-		{
-			_typeFormat = typeFormat;
-			_assemblyFormat = assemblyFormat;
-			// Create the XmlDocument with the 
-			// Envelope and Body elements
-			_mapper = new SoapTypeMapper(_xmlWriter, assemblyFormat, typeFormat);
-
-			// The root element
-			_xmlWriter.WriteStartElement(
-				SoapTypeMapper.SoapEnvelopePrefix, 
-				"Envelope",
-				SoapTypeMapper.SoapEnvelopeNamespace);
-
-			// adding namespaces
-			_xmlWriter.WriteAttributeString(
-				"xmlns",
-				"xsi",
-				"http://www.w3.org/2000/xmlns/",
-				"http://www.w3.org/2001/XMLSchema-instance");
-
-			_xmlWriter.WriteAttributeString(
-				"xmlns",
-				"xsd",
-				"http://www.w3.org/2000/xmlns/",
-				XmlSchema.Namespace);
-
-			_xmlWriter.WriteAttributeString(
-				"xmlns",
-				SoapTypeMapper.SoapEncodingPrefix,
-				"http://www.w3.org/2000/xmlns/",
-				SoapTypeMapper.SoapEncodingNamespace);
-
-			_xmlWriter.WriteAttributeString(
-				"xmlns",
-				SoapTypeMapper.SoapEnvelopePrefix,
-				"http://www.w3.org/2000/xmlns/",
-				SoapTypeMapper.SoapEnvelopeNamespace);
-
-			_xmlWriter.WriteAttributeString(
-				"xmlns",
-				"clr",
-				"http://www.w3.org/2000/xmlns/",
-				SoapServices.XmlNsForClrType);
-
-			_xmlWriter.WriteAttributeString(
-				SoapTypeMapper.SoapEnvelopePrefix,
-				"encodingStyle",
-				SoapTypeMapper.SoapEnvelopeNamespace,
-				"http://schemas.xmlsoap.org/soap/encoding/");
-						
-			ISoapMessage msg = objGraph as ISoapMessage;
-			if (msg != null)
-				headers = msg.Headers;
-			
-			if (headers != null && headers.Length > 0)
-			{
-				_xmlWriter.WriteStartElement (SoapTypeMapper.SoapEnvelopePrefix, "Header", SoapTypeMapper.SoapEnvelopeNamespace);
-				foreach (Header h in headers)
-					SerializeHeader (h);
-					
-				WriteObjectQueue ();
-				_xmlWriter.WriteEndElement ();
-			}
-				
-			// The body element
-			_xmlWriter.WriteStartElement(
-				SoapTypeMapper.SoapEnvelopePrefix,
-				"Body",
-				SoapTypeMapper.SoapEnvelopeNamespace);
-
-
-			bool firstTime = false;
-
-			if (msg != null)
-				SerializeMessage(msg);
-			else
-				_objectQueue.Enqueue(new EnqueuedObject( objGraph, idGen.GetId(objGraph, out firstTime)));
-
-			WriteObjectQueue ();
-
-			_xmlWriter.WriteFullEndElement(); // the body element
-			_xmlWriter.WriteFullEndElement(); // the envelope element
-			_xmlWriter.Flush();
-		}
-		
-		private void WriteObjectQueue ()
-		{
-			while(_objectQueue.Count > 0) 
-			{
-				EnqueuedObject currentEnqueuedObject;
-				currentEnqueuedObject = (EnqueuedObject) _objectQueue.Dequeue();
-				object currentObject =	currentEnqueuedObject.Object;
-				Type currentType = currentObject.GetType();
-
-				if(!currentType.IsValueType) _objectToIdTable[currentObject] = currentEnqueuedObject.Id;
-
-				if(currentType.IsArray)
-					SerializeArray((Array) currentObject, currentEnqueuedObject.Id);
-				else
-					SerializeObject(currentObject, currentEnqueuedObject.Id);
-			}
-		}
-
-		private void SerializeMessage(ISoapMessage message) 
-		{
-			bool firstTime;
-			string ns = message.XmlNameSpace != null ? message.XmlNameSpace : defaultMessageNamespace;
-			
-			_xmlWriter.WriteStartElement("i2", message.MethodName, ns);
-			Id(idGen.GetId(message, out firstTime));
-
-			string[] paramNames = message.ParamNames;
-			object[] paramValues = message.ParamValues;
-			int length = (paramNames != null)?paramNames.Length:0;
-			for(int i = 0; i < length; i++) 
-			{
-				_xmlWriter.WriteStartElement(paramNames[i]);
-				SerializeComponent(paramValues[i], true);
-				_xmlWriter.WriteEndElement();
-			}
-
-
-			_xmlWriter.WriteFullEndElement();
-		}
-		
-		private void SerializeHeader (Header header)
-		{
-			string ns = header.HeaderNamespace != null ? header.HeaderNamespace : "http://schemas.microsoft.com/clr/soap"; 
-			_xmlWriter.WriteStartElement ("h4", header.Name, ns);
-			if (header.MustUnderstand)
-				_xmlWriter.WriteAttributeString ("mustUnderstand", SoapTypeMapper.SoapEnvelopeNamespace, "1");
-			_xmlWriter.WriteAttributeString ("root", SoapTypeMapper.SoapEncodingNamespace, "1");
-			
-			if (header.Name == "__MethodSignature") {
-				// This is a lame way of identifying the signature header, but looks like it is
-				// what MS.NET does.
-				Type[] val = header.Value as Type[];
-				if (val == null)
-					throw new SerializationException ("Invalid method signature.");
-				SerializeComponent (new MethodSignature (val), true);
-			} else
-				SerializeComponent (header.Value, true);
-				
-			_xmlWriter.WriteEndElement();
-		}
-
-		private void SerializeObject(object currentObject, long currentObjectId) 
-		{
-			bool needsSerializationInfo = false;
-			ISurrogateSelector selector;
-			ISerializationSurrogate surrogate = null;
-			if(_surrogateSelector != null)
-			{
-				 surrogate = _surrogateSelector.GetSurrogate(
-					currentObject.GetType(),
-					_context,
-					out selector);
-			}
-			if(currentObject is ISerializable || surrogate != null) needsSerializationInfo = true;
-
-			_manager.RegisterObject (currentObject);
-
-			if(needsSerializationInfo) 
-			{
-				SerializeISerializableObject(currentObject, currentObjectId, surrogate);
-			}
-			else 
-			{
-				if(!currentObject.GetType().IsSerializable)
-					throw new SerializationException(String.Format("Type {0} in assembly {1} is not marked as serializable.", currentObject.GetType(), currentObject.GetType().Assembly.FullName));
-				SerializeSimpleObject(currentObject, currentObjectId);
-			}
-		}
-
-		// implement IComparer
-		public int Compare(object x, object y) 
-		{
-			MemberInfo a = x as MemberInfo;
-			MemberInfo b = y as MemberInfo;
-
-			return String.Compare(a.Name, b.Name);
-		}
-
-		private void SerializeSimpleObject(
-			object currentObject, 
-			long currentObjectId) 
-		{
-			Type currentType = currentObject.GetType();
-			
-			// Value type have to be serialized "on the fly" so
-			// SerializeComponent calls SerializeObject when
-			// a field of another object is a struct. A node with the field
-			// name has already be written so WriteStartElement must not be called
-			// again. Fields that are structs are passed to SerializeObject
-			// with a id = 0
-			if(currentObjectId > 0)
-			{
-				Element element = _mapper.GetXmlElement (currentType);
-				_xmlWriter.WriteStartElement(element.Prefix, element.LocalName, element.NamespaceURI);
-				Id(currentObjectId);
-			}
-
-			if (currentType == typeof(TimeSpan))
-			{
-				_xmlWriter.WriteString(SoapTypeMapper.GetXsdValue(currentObject));
-			}
-			else if(currentType == typeof(string))
-			{
-				_xmlWriter.WriteString(currentObject.ToString());
-			}
-			else
-			{
-				MemberInfo[] memberInfos = FormatterServices.GetSerializableMembers(currentType, _context);
-				object[] objectData = FormatterServices.GetObjectData(currentObject, memberInfos);
-				
-				for(int i = 0; i < memberInfos.Length; i++) 
-				{
-					FieldInfo fieldInfo = (FieldInfo) memberInfos[i];
-					SoapFieldAttribute at = (SoapFieldAttribute) InternalRemotingServices.GetCachedSoapAttribute (fieldInfo);
-					_xmlWriter.WriteStartElement (XmlConvert.EncodeLocalName (at.XmlElementName));
-					SerializeComponent(
-						objectData[i], 
-						IsEncodingNeeded(objectData[i], fieldInfo.FieldType));
-					_xmlWriter.WriteEndElement();
-				}
-			}
-			if(currentObjectId > 0)
-				_xmlWriter.WriteFullEndElement();
-
-		}
-		
-		
-		private void SerializeISerializableObject(
-			object currentObject,
-			long currentObjectId,
-			ISerializationSurrogate surrogate)
-		{
-			Type currentType = currentObject.GetType();
-			SerializationInfo info = new SerializationInfo(currentType, new FormatterConverter());
-
-
-			ISerializable objISerializable = currentObject as ISerializable;
-			if(surrogate != null) surrogate.GetObjectData(currentObject, info, _context);
-			else
-			{
-				objISerializable.GetObjectData(info, _context);
-			}
-
-			// Same as above
-			if(currentObjectId > 0L)
-			{
-				Element element = _mapper. GetXmlElement (info.FullTypeName, info.AssemblyName);
-				_xmlWriter.WriteStartElement(element.Prefix, element.LocalName, element.NamespaceURI);
-				Id(currentObjectId);
-			}
-
-			foreach(SerializationEntry entry in info)
-			{
-				_xmlWriter.WriteStartElement(XmlConvert.EncodeLocalName (entry.Name));
-				SerializeComponent(entry.Value, IsEncodingNeeded(entry.Value, null));
-				_xmlWriter.WriteEndElement();
-			}
-			if(currentObjectId > 0)
-				_xmlWriter.WriteFullEndElement();
-
-		}
-
-		private void SerializeArray(Array currentArray, long currentArrayId) 
-		{
-			Element element = _mapper.GetXmlElement (typeof(System.Array));
-			
-
-			// Set the arrayType attribute
-			Type arrayType = currentArray.GetType().GetElementType();
-			Element xmlArrayType = _mapper.GetXmlElement (arrayType);
-			_xmlWriter.WriteStartElement(element.Prefix, element.LocalName, element.NamespaceURI);
-			if(currentArrayId > 0) Id(currentArrayId);
-			
-			if (arrayType == typeof(byte)) {
-				EncodeType (currentArray.GetType());
-				_xmlWriter.WriteString (Convert.ToBase64String ((byte[])currentArray));
-				_xmlWriter.WriteFullEndElement();
-				return;
-			}
-
-			string prefix = GetNamespacePrefix (xmlArrayType);
-
-			StringBuilder str = new StringBuilder();
-			str.AppendFormat("{0}:{1}[", prefix, xmlArrayType.LocalName);
-			for(int i = 0; i < currentArray.Rank; i++)
-			{
-				str.AppendFormat("{0},", currentArray.GetUpperBound(i) + 1);
-			}
-			str.Replace(',', ']', str.Length - 1, 1);
-			_xmlWriter.WriteAttributeString(
-				SoapTypeMapper.SoapEncodingPrefix,
-				"arrayType",
-				SoapTypeMapper.SoapEncodingNamespace,
-				str.ToString());
-				
-
-			// Get the array items
-			int lastNonNullItem = 0;
-			int currentIndex = 0;
-//			bool specifyEncoding = false;
-			foreach(object item in currentArray) 
-			{
-				if(item != null)
-				{
-					for(int j = lastNonNullItem; j < currentIndex; j++)
-					{
-						_xmlWriter.WriteStartElement("item");
-						Null();
-						_xmlWriter.WriteEndElement();
-					}; 
-					lastNonNullItem = currentIndex + 1;
-//					specifyEncoding |= (arrayType != item.GetType());
-					_xmlWriter.WriteStartElement("item");
-					SerializeComponent(item, IsEncodingNeeded(item, arrayType));
-					_xmlWriter.WriteEndElement();
-				}
-				currentIndex++;
-			}
-			_xmlWriter.WriteFullEndElement();
-			
-		}
-
-		private void SerializeComponent(
-			object obj,
-			bool specifyEncoding)
-		{
-			if(_typeFormat == FormatterTypeStyle.TypesAlways)
-				specifyEncoding = true;
-
-			// A null component
-			if(obj == null)
-			{
-				Null();
-				return;
-			}
-			Type objType = obj.GetType();
-			bool canBeValue = _mapper.IsInternalSoapType (objType);
-			bool firstTime;
-			long id = 0;
-			
-			// An object already serialized
-			if((id = idGen.HasId(obj, out firstTime)) != 0L) 
-			{
-				Href((long)idGen.GetId(obj, out firstTime));
-				return;
-			}
-
-
-
-			// A string
-			if(objType == typeof(string)) 
-			{
-				if(_typeFormat != FormatterTypeStyle.XsdString)
-				{
-					id = idGen.GetId(obj, out firstTime);
-					Id(id);
-				}
-//				specifyEncoding = false;
-			}
-
-			// This component has to be 
-			// serialized later
-			if(!canBeValue && !objType.IsValueType)
-			{
-				long href = idGen.GetId(obj, out firstTime);
-				Href(href);
-				_objectQueue.Enqueue(new EnqueuedObject(obj, href));
-				return;
-			}
-
-			if(specifyEncoding)
-			{
-				EncodeType(objType);
-			}
-
-			// A struct
-			if(!canBeValue && objType.IsValueType)
-			{
-				SerializeObject(obj, 0);
-				return;
-			}
-
-			_xmlWriter.WriteString (_mapper.GetInternalSoapValue (this, obj));
-		}
-		
-		private void EncodeType(Type type) 
-		{
-			if(type == null) 
-				throw new SerializationException("Oooops");
-
-			Element xmlType = _mapper.GetXmlElement (type);
-
-			string prefix = GetNamespacePrefix (xmlType);
-			
-			_xmlWriter.WriteAttributeString (
-				"xsi",
-				"type",
-				"http://www.w3.org/2001/XMLSchema-instance",
-				prefix + ":" + xmlType.LocalName);
-		}
-		
-		public string GetNamespacePrefix (Element xmlType)
-		{
-			string prefix = _xmlWriter.LookupPrefix (xmlType.NamespaceURI);
-			if(prefix == null || prefix == string.Empty) 
-			{
-				_xmlWriter.WriteAttributeString(
-					"xmlns",
-					xmlType.Prefix,
-					"http://www.w3.org/2000/xmlns/",
-					xmlType.NamespaceURI);
-				return xmlType.Prefix;
-			}
-			return prefix;
-		}
-	}
-}
+// created on 07/04/2003 at 17:56
+//
+//	System.Runtime.Serialization.Formatters.Soap.SoapWriter
+//
+//	Authors:
+//		Jean-Marc Andre (jean-marc.andre@polymtl.ca)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Threading;
+using System.Reflection;
+using System.Collections;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Metadata;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters;
+using System.Xml;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+using System.Globalization;
+using System.Text;
+
+namespace System.Runtime.Serialization.Formatters.Soap {
+	
+	internal class SoapWriter: IComparer {
+		private struct EnqueuedObject {
+			public long _id;
+			public object _object;
+			
+			public EnqueuedObject(object currentObject, long id) {
+				_id = id;
+				_object = currentObject;
+			}
+
+			public long Id 
+			{
+				get 
+				{
+					return _id;
+				}
+			}
+
+			public object Object 
+			{
+				get 
+				{
+					return _object;
+				}
+			}
+		}
+		
+		#region Fields
+
+		private XmlTextWriter _xmlWriter;
+		private Queue _objectQueue = new Queue();
+		private Hashtable _objectToIdTable = new Hashtable();
+		private ISurrogateSelector _surrogateSelector;
+		private SoapTypeMapper _mapper;
+		private StreamingContext _context;
+		private ObjectIDGenerator idGen = new ObjectIDGenerator();
+		private FormatterAssemblyStyle _assemblyFormat = FormatterAssemblyStyle.Full;
+		private FormatterTypeStyle _typeFormat = FormatterTypeStyle.TypesWhenNeeded;
+		private static string defaultMessageNamespace;
+		SerializationObjectManager _manager;
+
+		#endregion
+		
+		~SoapWriter() 
+		{
+		}
+
+		#region Constructors
+
+		internal SoapWriter(
+			Stream outStream, 
+			ISurrogateSelector selector, 
+			StreamingContext context,
+			ISoapMessage soapMessage)
+		{
+			_xmlWriter = new XmlTextWriter(outStream, null);
+			_xmlWriter.Formatting = Formatting.Indented;
+			_surrogateSelector = selector;
+			_context = context;
+			_manager = new SerializationObjectManager (_context);
+		}
+
+		static SoapWriter() 
+		{
+			defaultMessageNamespace = typeof(SoapWriter).Assembly.GetName().FullName;
+		}
+
+		#endregion
+		
+		public SoapTypeMapper Mapper {
+			get { return _mapper; }
+		}
+		
+		public XmlTextWriter XmlWriter {
+			get { return _xmlWriter; }
+		}
+
+		#region Internal Properties
+
+		internal FormatterAssemblyStyle AssemblyFormat
+		{
+			get 
+			{
+				return _assemblyFormat;
+			}
+			set 
+			{
+				_assemblyFormat = value;
+			}
+		}
+
+		internal FormatterTypeStyle TypeFormat 
+		{
+			get 
+			{
+				return _typeFormat;
+			}
+			set 
+			{
+				_typeFormat = value;
+			}
+		}
+
+		#endregion
+
+		private void Id(long id) 
+		{
+			_xmlWriter.WriteAttributeString(null, "id", null, "ref-" + id.ToString());
+		}
+
+		private void Href(long href) 
+		{
+			_xmlWriter.WriteAttributeString(null, "href", null, "#ref-" + href.ToString());
+		}
+
+
+		private void Null() 
+		{
+			_xmlWriter.WriteAttributeString("xsi", "null", XmlSchema.InstanceNamespace, "1");
+		}
+
+		private bool IsEncodingNeeded(
+			object componentObject,
+			Type componentType)
+		{
+			if(componentObject == null)
+				return false;
+			if(_typeFormat == FormatterTypeStyle.TypesAlways)
+				return true;
+			if(componentType == null) 
+			{
+				componentType = componentObject.GetType();
+				if(componentType.IsPrimitive || componentType == typeof(string))
+					return false;
+				else
+					return true;
+
+			}
+			else 
+			{
+				if(componentType == typeof(object) || componentType != componentObject.GetType())
+					return true;
+				else
+					return false;
+			}
+		}
+
+
+		internal void Serialize (object objGraph, Header[] headers, FormatterTypeStyle typeFormat, FormatterAssemblyStyle assemblyFormat)
+		{
+			CultureInfo savedCi = CultureInfo.CurrentCulture;
+			try {
+				Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
+				Serialize_inner (objGraph, headers, typeFormat, assemblyFormat);
+			} finally {
+				Thread.CurrentThread.CurrentCulture = savedCi;
+			}
+
+			_manager.RaiseOnSerializedEvent ();
+		}
+
+		void Serialize_inner (object objGraph, Header[] headers, FormatterTypeStyle typeFormat, FormatterAssemblyStyle assemblyFormat)
+		{
+			_typeFormat = typeFormat;
+			_assemblyFormat = assemblyFormat;
+			// Create the XmlDocument with the 
+			// Envelope and Body elements
+			_mapper = new SoapTypeMapper(_xmlWriter, assemblyFormat, typeFormat);
+
+			// The root element
+			_xmlWriter.WriteStartElement(
+				SoapTypeMapper.SoapEnvelopePrefix, 
+				"Envelope",
+				SoapTypeMapper.SoapEnvelopeNamespace);
+
+			// adding namespaces
+			_xmlWriter.WriteAttributeString(
+				"xmlns",
+				"xsi",
+				"http://www.w3.org/2000/xmlns/",
+				"http://www.w3.org/2001/XMLSchema-instance");
+
+			_xmlWriter.WriteAttributeString(
+				"xmlns",
+				"xsd",
+				"http://www.w3.org/2000/xmlns/",
+				XmlSchema.Namespace);
+
+			_xmlWriter.WriteAttributeString(
+				"xmlns",
+				SoapTypeMapper.SoapEncodingPrefix,
+				"http://www.w3.org/2000/xmlns/",
+				SoapTypeMapper.SoapEncodingNamespace);
+
+			_xmlWriter.WriteAttributeString(
+				"xmlns",
+				SoapTypeMapper.SoapEnvelopePrefix,
+				"http://www.w3.org/2000/xmlns/",
+				SoapTypeMapper.SoapEnvelopeNamespace);
+
+			_xmlWriter.WriteAttributeString(
+				"xmlns",
+				"clr",
+				"http://www.w3.org/2000/xmlns/",
+				SoapServices.XmlNsForClrType);
+
+			_xmlWriter.WriteAttributeString(
+				SoapTypeMapper.SoapEnvelopePrefix,
+				"encodingStyle",
+				SoapTypeMapper.SoapEnvelopeNamespace,
+				"http://schemas.xmlsoap.org/soap/encoding/");
+						
+			ISoapMessage msg = objGraph as ISoapMessage;
+			if (msg != null)
+				headers = msg.Headers;
+			
+			if (headers != null && headers.Length > 0)
+			{
+				_xmlWriter.WriteStartElement (SoapTypeMapper.SoapEnvelopePrefix, "Header", SoapTypeMapper.SoapEnvelopeNamespace);
+				foreach (Header h in headers)
+					SerializeHeader (h);
+					
+				WriteObjectQueue ();
+				_xmlWriter.WriteEndElement ();
+			}
+				
+			// The body element
+			_xmlWriter.WriteStartElement(
+				SoapTypeMapper.SoapEnvelopePrefix,
+				"Body",
+				SoapTypeMapper.SoapEnvelopeNamespace);
+
+
+			bool firstTime = false;
+
+			if (msg != null)
+				SerializeMessage(msg);
+			else
+				_objectQueue.Enqueue(new EnqueuedObject( objGraph, idGen.GetId(objGraph, out firstTime)));
+
+			WriteObjectQueue ();
+
+			_xmlWriter.WriteFullEndElement(); // the body element
+			_xmlWriter.WriteFullEndElement(); // the envelope element
+			_xmlWriter.Flush();
+		}
+		
+		private void WriteObjectQueue ()
+		{
+			while(_objectQueue.Count > 0) 
+			{
+				EnqueuedObject currentEnqueuedObject;
+				currentEnqueuedObject = (EnqueuedObject) _objectQueue.Dequeue();
+				object currentObject =	currentEnqueuedObject.Object;
+				Type currentType = currentObject.GetType();
+
+				if(!currentType.IsValueType) _objectToIdTable[currentObject] = currentEnqueuedObject.Id;
+
+				if(currentType.IsArray)
+					SerializeArray((Array) currentObject, currentEnqueuedObject.Id);
+				else
+					SerializeObject(currentObject, currentEnqueuedObject.Id);
+			}
+		}
+
+		private void SerializeMessage(ISoapMessage message) 
+		{
+			bool firstTime;
+			string ns = message.XmlNameSpace != null ? message.XmlNameSpace : defaultMessageNamespace;
+			
+			_xmlWriter.WriteStartElement("i2", message.MethodName, ns);
+			Id(idGen.GetId(message, out firstTime));
+
+			string[] paramNames = message.ParamNames;
+			object[] paramValues = message.ParamValues;
+			int length = (paramNames != null)?paramNames.Length:0;
+			for(int i = 0; i < length; i++) 
+			{
+				_xmlWriter.WriteStartElement(paramNames[i]);
+				SerializeComponent(paramValues[i], true);
+				_xmlWriter.WriteEndElement();
+			}
+
+
+			_xmlWriter.WriteFullEndElement();
+		}
+		
+		private void SerializeHeader (Header header)
+		{
+			string ns = header.HeaderNamespace != null ? header.HeaderNamespace : "http://schemas.microsoft.com/clr/soap"; 
+			_xmlWriter.WriteStartElement ("h4", header.Name, ns);
+			if (header.MustUnderstand)
+				_xmlWriter.WriteAttributeString ("mustUnderstand", SoapTypeMapper.SoapEnvelopeNamespace, "1");
+			_xmlWriter.WriteAttributeString ("root", SoapTypeMapper.SoapEncodingNamespace, "1");
+			
+			if (header.Name == "__MethodSignature") {
+				// This is a lame way of identifying the signature header, but looks like it is
+				// what MS.NET does.
+				Type[] val = header.Value as Type[];
+				if (val == null)
+					throw new SerializationException ("Invalid method signature.");
+				SerializeComponent (new MethodSignature (val), true);
+			} else
+				SerializeComponent (header.Value, true);
+				
+			_xmlWriter.WriteEndElement();
+		}
+
+		private void SerializeObject(object currentObject, long currentObjectId) 
+		{
+			bool needsSerializationInfo = false;
+			ISurrogateSelector selector;
+			ISerializationSurrogate surrogate = null;
+			if(_surrogateSelector != null)
+			{
+				 surrogate = _surrogateSelector.GetSurrogate(
+					currentObject.GetType(),
+					_context,
+					out selector);
+			}
+			if(currentObject is ISerializable || surrogate != null) needsSerializationInfo = true;
+
+			_manager.RegisterObject (currentObject);
+
+			if(needsSerializationInfo) 
+			{
+				SerializeISerializableObject(currentObject, currentObjectId, surrogate);
+			}
+			else 
+			{
+				if(!currentObject.GetType().IsSerializable)
+					throw new SerializationException(String.Format("Type {0} in assembly {1} is not marked as serializable.", currentObject.GetType(), currentObject.GetType().Assembly.FullName));
+				SerializeSimpleObject(currentObject, currentObjectId);
+			}
+		}
+
+		// implement IComparer
+		public int Compare(object x, object y) 
+		{
+			MemberInfo a = x as MemberInfo;
+			MemberInfo b = y as MemberInfo;
+
+			return String.Compare(a.Name, b.Name);
+		}
+
+		private void SerializeSimpleObject(
+			object currentObject, 
+			long currentObjectId) 
+		{
+			Type currentType = currentObject.GetType();
+			
+			// Value type have to be serialized "on the fly" so
+			// SerializeComponent calls SerializeObject when
+			// a field of another object is a struct. A node with the field
+			// name has already be written so WriteStartElement must not be called
+			// again. Fields that are structs are passed to SerializeObject
+			// with a id = 0
+			if(currentObjectId > 0)
+			{
+				Element element = _mapper.GetXmlElement (currentType);
+				_xmlWriter.WriteStartElement(element.Prefix, element.LocalName, element.NamespaceURI);
+				Id(currentObjectId);
+			}
+
+			if (currentType == typeof(TimeSpan))
+			{
+				_xmlWriter.WriteString(SoapTypeMapper.GetXsdValue(currentObject));
+			}
+			else if(currentType == typeof(string))
+			{
+				_xmlWriter.WriteString(currentObject.ToString());
+			}
+			else
+			{
+				MemberInfo[] memberInfos = FormatterServices.GetSerializableMembers(currentType, _context);
+				object[] objectData = FormatterServices.GetObjectData(currentObject, memberInfos);
+				
+				for(int i = 0; i < memberInfos.Length; i++) 
+				{
+					FieldInfo fieldInfo = (FieldInfo) memberInfos[i];
+					SoapFieldAttribute at = (SoapFieldAttribute) InternalRemotingServices.GetCachedSoapAttribute (fieldInfo);
+					_xmlWriter.WriteStartElement (XmlConvert.EncodeLocalName (at.XmlElementName));
+					SerializeComponent(
+						objectData[i], 
+						IsEncodingNeeded(objectData[i], fieldInfo.FieldType));
+					_xmlWriter.WriteEndElement();
+				}
+			}
+			if(currentObjectId > 0)
+				_xmlWriter.WriteFullEndElement();
+
+		}
+		
+		
+		private void SerializeISerializableObject(
+			object currentObject,
+			long currentObjectId,
+			ISerializationSurrogate surrogate)
+		{
+			Type currentType = currentObject.GetType();
+			SerializationInfo info = new SerializationInfo(currentType, new FormatterConverter());
+
+
+			ISerializable objISerializable = currentObject as ISerializable;
+			if(surrogate != null) surrogate.GetObjectData(currentObject, info, _context);
+			else
+			{
+				objISerializable.GetObjectData(info, _context);
+			}
+
+			// Same as above
+			if(currentObjectId > 0L)
+			{
+				Element element = _mapper. GetXmlElement (info.FullTypeName, info.AssemblyName);
+				_xmlWriter.WriteStartElement(element.Prefix, element.LocalName, element.NamespaceURI);
+				Id(currentObjectId);
+			}
+
+			foreach(SerializationEntry entry in info)
+			{
+				_xmlWriter.WriteStartElement(XmlConvert.EncodeLocalName (entry.Name));
+				SerializeComponent(entry.Value, IsEncodingNeeded(entry.Value, null));
+				_xmlWriter.WriteEndElement();
+			}
+			if(currentObjectId > 0)
+				_xmlWriter.WriteFullEndElement();
+
+		}
+
+		private void SerializeArray(Array currentArray, long currentArrayId) 
+		{
+			Element element = _mapper.GetXmlElement (typeof(System.Array));
+			
+
+			// Set the arrayType attribute
+			Type arrayType = currentArray.GetType().GetElementType();
+			Element xmlArrayType = _mapper.GetXmlElement (arrayType);
+			_xmlWriter.WriteStartElement(element.Prefix, element.LocalName, element.NamespaceURI);
+			if(currentArrayId > 0) Id(currentArrayId);
+			
+			if (arrayType == typeof(byte)) {
+				EncodeType (currentArray.GetType());
+				_xmlWriter.WriteString (Convert.ToBase64String ((byte[])currentArray));
+				_xmlWriter.WriteFullEndElement();
+				return;
+			}
+
+			string prefix = GetNamespacePrefix (xmlArrayType);
+
+			StringBuilder str = new StringBuilder();
+			str.AppendFormat("{0}:{1}[", prefix, xmlArrayType.LocalName);
+			for(int i = 0; i < currentArray.Rank; i++)
+			{
+				str.AppendFormat("{0},", currentArray.GetUpperBound(i) + 1);
+			}
+			str.Replace(',', ']', str.Length - 1, 1);
+			_xmlWriter.WriteAttributeString(
+				SoapTypeMapper.SoapEncodingPrefix,
+				"arrayType",
+				SoapTypeMapper.SoapEncodingNamespace,
+				str.ToString());
+				
+
+			// Get the array items
+			int lastNonNullItem = 0;
+			int currentIndex = 0;
+//			bool specifyEncoding = false;
+			foreach(object item in currentArray) 
+			{
+				if(item != null)
+				{
+					for(int j = lastNonNullItem; j < currentIndex; j++)
+					{
+						_xmlWriter.WriteStartElement("item");
+						Null();
+						_xmlWriter.WriteEndElement();
+					}; 
+					lastNonNullItem = currentIndex + 1;
+//					specifyEncoding |= (arrayType != item.GetType());
+					_xmlWriter.WriteStartElement("item");
+					SerializeComponent(item, IsEncodingNeeded(item, arrayType));
+					_xmlWriter.WriteEndElement();
+				}
+				currentIndex++;
+			}
+			_xmlWriter.WriteFullEndElement();
+			
+		}
+
+		private void SerializeComponent(
+			object obj,
+			bool specifyEncoding)
+		{
+			if(_typeFormat == FormatterTypeStyle.TypesAlways)
+				specifyEncoding = true;
+
+			// A null component
+			if(obj == null)
+			{
+				Null();
+				return;
+			}
+			Type objType = obj.GetType();
+			bool canBeValue = _mapper.IsInternalSoapType (objType);
+			bool firstTime;
+			long id = 0;
+			
+			// An object already serialized
+			if((id = idGen.HasId(obj, out firstTime)) != 0L) 
+			{
+				Href((long)idGen.GetId(obj, out firstTime));
+				return;
+			}
+
+
+
+			// A string
+			if(objType == typeof(string)) 
+			{
+				if(_typeFormat != FormatterTypeStyle.XsdString)
+				{
+					id = idGen.GetId(obj, out firstTime);
+					Id(id);
+				}
+//				specifyEncoding = false;
+			}
+
+			// This component has to be 
+			// serialized later
+			if(!canBeValue && !objType.IsValueType)
+			{
+				long href = idGen.GetId(obj, out firstTime);
+				Href(href);
+				_objectQueue.Enqueue(new EnqueuedObject(obj, href));
+				return;
+			}
+
+			if(specifyEncoding)
+			{
+				EncodeType(objType);
+			}
+
+			// A struct
+			if(!canBeValue && objType.IsValueType)
+			{
+				SerializeObject(obj, 0);
+				return;
+			}
+
+			_xmlWriter.WriteString (_mapper.GetInternalSoapValue (this, obj));
+		}
+		
+		private void EncodeType(Type type) 
+		{
+			if(type == null) 
+				throw new SerializationException("Oooops");
+
+			Element xmlType = _mapper.GetXmlElement (type);
+
+			string prefix = GetNamespacePrefix (xmlType);
+			
+			_xmlWriter.WriteAttributeString (
+				"xsi",
+				"type",
+				"http://www.w3.org/2001/XMLSchema-instance",
+				prefix + ":" + xmlType.LocalName);
+		}
+		
+		public string GetNamespacePrefix (Element xmlType)
+		{
+			string prefix = _xmlWriter.LookupPrefix (xmlType.NamespaceURI);
+			if(prefix == null || prefix == string.Empty) 
+			{
+				_xmlWriter.WriteAttributeString(
+					"xmlns",
+					xmlType.Prefix,
+					"http://www.w3.org/2000/xmlns/",
+					xmlType.NamespaceURI);
+				return xmlType.Prefix;
+			}
+			return prefix;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/AssemblyInfo.cs
@@ -1,32 +1,32 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following
-// attributes.
-//
-// change them to the information which is associated with the assembly
-// you compile.
-
-[assembly: AssemblyTitle("")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// The assembly version has following format :
-//
-// Major.Minor.Build.Revision
-//
-// You can specify all values by your own or you can build default build and revision
-// numbers with the '*' character (the default):
-
-[assembly: AssemblyVersion("1.0.0.0")]
-
-// The following attributes specify the key for the sign of your assembly. See the
-// .NET Framework documentation for more information about signing.
-// This is not required, if you don't want signing let these attributes like they're.
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("")]
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following
+// attributes.
+//
+// change them to the information which is associated with the assembly
+// you compile.
+
+[assembly: AssemblyTitle("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has following format :
+//
+// Major.Minor.Build.Revision
+//
+// You can specify all values by your own or you can build default build and revision
+// numbers with the '*' character (the default):
+
+[assembly: AssemblyVersion("1.0.0.0")]
+
+// The following attributes specify the key for the sign of your assembly. See the
+// .NET Framework documentation for more information about signing.
+// This is not required, if you don't want signing let these attributes like they're.
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/InternalSoapValuesTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/InternalSoapValuesTest.cs
@@ -1,92 +1,92 @@
-using System;
-using System.IO;
-using NUnit.Framework;
-using System.Runtime.Serialization.Formatters.Soap;
-
-namespace SoapShared
-{
-	/// <summary>
-	/// Summary description for InternalSoapValuesTest.
-	/// </summary>
-	[TestFixture]
-	public class InternalSoapValuesTest
-	{
-		private MemoryStream ms;
-		private SoapFormatter sf;
-		
-
-		public InternalSoapValuesTest()
-		{
-			ms = new MemoryStream();
-			sf = new SoapFormatter();
-		}
-
-		[Test]
-		public void WriteReadData()
-		{
-			SerializedClass c = new SerializedClass();
-			
-			SerializeDeserialize(c);
-			SerializeDeserialize(new SerializedClass[]{c,c});
-			SerializeDeserialize(c.str);
-			SerializeDeserialize(c.m_bool);
-			SerializeDeserialize(c.m_byte);
-			SerializeDeserialize(c.m_bytes);
-			SerializeDeserialize(c.m_decimal);
-			SerializeDeserialize(c.m_double);
-			SerializeDeserialize(c.m_float);
-			SerializeDeserialize(c.m_int);
-			SerializeDeserialize(c.m_long);
-			SerializeDeserialize(c.m_object);
-			SerializeDeserialize(c.m_sbyte);
-			SerializeDeserialize(c.m_short);
-			//SerializeDeserialize(c.m_time);
-			SerializeDeserialize(c.m_timeSpan);
-			SerializeDeserialize(c.m_uint);
-			SerializeDeserialize(c.m_ulong);
-			SerializeDeserialize(c.m_ushort);
-		}
-
-		private void SerializeDeserialize(object obj)
-		{
-			ms = new MemoryStream();
-			Serialize(obj, ms);
-			ms.Position = 0;
-			Object des = Deserialize(ms);
-			Assertion.AssertEquals(obj.GetType(), des.GetType());
-		}
-
-		private void Serialize(object ob, Stream stream)
-		{
-			sf.Serialize(stream, ob);
-		}
-
-		private object Deserialize(Stream stream)
-		{
-			Object obj = sf.Deserialize(stream);
-			return obj;
-		}
-	}
-	
-	[Serializable]
-	class SerializedClass
-	{
-		public string str = "rrr";
-		public bool m_bool;
-		public sbyte m_sbyte;
-		public byte m_byte;
-		public long m_long;
-		public ulong m_ulong;
-		public int m_int;
-		public uint m_uint;
-		public float m_float;
-		public double m_double;
-		public decimal m_decimal;
-		public short m_short;
-		public ushort m_ushort;
-		public object m_object = new object();
-		public TimeSpan m_timeSpan = TimeSpan.FromTicks(TimeSpan.TicksPerDay);
-		public byte[] m_bytes = new byte[10];
-		//public DateTime m_time = DateTime.Now;
-	}
-}
+using System;
+using System.IO;
+using NUnit.Framework;
+using System.Runtime.Serialization.Formatters.Soap;
+
+namespace SoapShared
+{
+	/// <summary>
+	/// Summary description for InternalSoapValuesTest.
+	/// </summary>
+	[TestFixture]
+	public class InternalSoapValuesTest
+	{
+		private MemoryStream ms;
+		private SoapFormatter sf;
+		
+
+		public InternalSoapValuesTest()
+		{
+			ms = new MemoryStream();
+			sf = new SoapFormatter();
+		}
+
+		[Test]
+		public void WriteReadData()
+		{
+			SerializedClass c = new SerializedClass();
+			
+			SerializeDeserialize(c);
+			SerializeDeserialize(new SerializedClass[]{c,c});
+			SerializeDeserialize(c.str);
+			SerializeDeserialize(c.m_bool);
+			SerializeDeserialize(c.m_byte);
+			SerializeDeserialize(c.m_bytes);
+			SerializeDeserialize(c.m_decimal);
+			SerializeDeserialize(c.m_double);
+			SerializeDeserialize(c.m_float);
+			SerializeDeserialize(c.m_int);
+			SerializeDeserialize(c.m_long);
+			SerializeDeserialize(c.m_object);
+			SerializeDeserialize(c.m_sbyte);
+			SerializeDeserialize(c.m_short);
+			//SerializeDeserialize(c.m_time);
+			SerializeDeserialize(c.m_timeSpan);
+			SerializeDeserialize(c.m_uint);
+			SerializeDeserialize(c.m_ulong);
+			SerializeDeserialize(c.m_ushort);
+		}
+
+		private void SerializeDeserialize(object obj)
+		{
+			ms = new MemoryStream();
+			Serialize(obj, ms);
+			ms.Position = 0;
+			Object des = Deserialize(ms);
+			Assertion.AssertEquals(obj.GetType(), des.GetType());
+		}
+
+		private void Serialize(object ob, Stream stream)
+		{
+			sf.Serialize(stream, ob);
+		}
+
+		private object Deserialize(Stream stream)
+		{
+			Object obj = sf.Deserialize(stream);
+			return obj;
+		}
+	}
+	
+	[Serializable]
+	class SerializedClass
+	{
+		public string str = "rrr";
+		public bool m_bool;
+		public sbyte m_sbyte;
+		public byte m_byte;
+		public long m_long;
+		public ulong m_ulong;
+		public int m_int;
+		public uint m_uint;
+		public float m_float;
+		public double m_double;
+		public decimal m_decimal;
+		public short m_short;
+		public ushort m_ushort;
+		public object m_object = new object();
+		public TimeSpan m_timeSpan = TimeSpan.FromTicks(TimeSpan.TicksPerDay);
+		public byte[] m_bytes = new byte[10];
+		//public DateTime m_time = DateTime.Now;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SerializationTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SerializationTest.cs
@@ -1,771 +1,771 @@
-//
-// System.Runtime.Serialization.SerializationTest.cs
-//
-// Author: Lluis Sanchez Gual  (lluis@ximian.com)
-//
-// (C) Ximian, Inc.
-//
-
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters.Soap;
-using System.Reflection;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Proxies;
-using System.Runtime.Remoting.Messaging;
-using System.Collections;
-using NUnit.Framework;
-
-namespace MonoTests.System.Runtime.Serialization.Formatters.Soap
-{
-	[TestFixture]
-	public class SerializationTest
-	{
-		MemoryStream ms;
-
-		[Test]
-		public void TestSerialization ()
-		{
-			MethodTester mt = new MethodTester();
-			RemotingServices.Marshal (mt, "myuri");
-
-			WriteData();
-			ReadData();
-
-			RemotingServices.Disconnect (mt);
-		}
-
-		public static void Main() 
-		{
-			SerializationTest test = new SerializationTest();
-			test.TestSerialization();
-		}
-
-		void WriteData ()
-		{
-			StreamingContext context = new StreamingContext (StreamingContextStates.Other);
-			SurrogateSelector sel = new SurrogateSelector();
-			sel.AddSurrogate (typeof (Point), context, new PointSurrogate());
-
-			List list = CreateTestData();
-			BinderTester_A bta = CreateBinderTestData();
-
-			ms = new MemoryStream();
-			SoapFormatter f = new SoapFormatter (sel, new StreamingContext(StreamingContextStates.Other));
-			f.Serialize (ms, list);
-//			ProcessMessages (ms, null);
-//			f.Serialize (ms, bta);
-			ms.Flush ();
-			ms.Position = 0;
-			StreamReader reader = new StreamReader(ms);
-			Console.WriteLine(reader.ReadToEnd());
-			ms.Position = 0;
-		}
-
-		void ReadData()
-		{
-			StreamingContext context = new StreamingContext (StreamingContextStates.Other);
-			SurrogateSelector sel = new SurrogateSelector();
-			sel.AddSurrogate (typeof (Point), context, new PointSurrogate());
-
-			SoapFormatter f = new SoapFormatter (sel, context);
-
-			object list = f.Deserialize (ms);
-
-			object[][] originalMsgData = null;
-			IMessage[] calls = null;
-			IMessage[] resps = null;
-
-//			originalMsgData = ProcessMessages (null, null);
-
-//			calls = new IMessage[originalMsgData.Length];
-//			resps = new IMessage[originalMsgData.Length];
-
-
-//			for (int n=0; n<originalMsgData.Length; n++)
-//			{
-//				calls[n] = (IMessage) f.Deserialize (ms);
-//				resps[n] = (IMessage) f.DeserializeMethodResponse (ms, null, (IMethodCallMessage)calls[n]);
-//			}
-//
-//			f.Binder = new TestBinder ();
-//			object btbob = f.Deserialize (ms);
-
-			ms.Close();
-
-			((List)list).CheckEquals(CreateTestData());
-//
-//			BinderTester_A bta = CreateBinderTestData();
-//			Assertion.AssertEquals ("BinderTest.class", btbob.GetType(), typeof (BinderTester_B));
-//			BinderTester_B btb = btbob as BinderTester_B;
-//			if (btb != null)
-//			{
-//				Assertion.AssertEquals ("BinderTest.x", btb.x, bta.x);
-//				Assertion.AssertEquals ("BinderTest.y", btb.y, bta.y);
-//			}
-//			
-//			CheckMessages ("MethodCall", originalMsgData, ProcessMessages (null, calls));
-//			CheckMessages ("MethodResponse", originalMsgData, ProcessMessages (null, resps));
-		}
-
-		BinderTester_A CreateBinderTestData ()
-		{
-			BinderTester_A bta = new BinderTester_A();
-			bta.x = 11;
-			bta.y = "binder tester";
-			return bta;
-		}
-
-		List CreateTestData()
-		{
-			List list = new List();
-			list.name = "my list";
-			list.values = new SomeValues();
-			list.values.Init();
-
-			ListItem item1 = new ListItem();
-			ListItem item2 = new ListItem();
-			ListItem item3 = new ListItem();
-
-			item1.label = "value label 1";
-			item1.next = item2;
-			item1.value.color = 111;
-			item1.value.point = new Point();
-			item1.value.point.x = 11;
-			item1.value.point.y = 22;
-
-			item2.label = "value label 2";
-			item2.next = item3;
-			item2.value.color = 222;
-
-			item2.value.point = new Point();
-			item2.value.point.x = 33;
-			item2.value.point.y = 44;
-
-			item3.label = "value label 3";
-			item3.value.color = 333;
-			item3.value.point = new Point();
-			item3.value.point.x = 55;
-			item3.value.point.y = 66;
-
-			list.children = new ListItem[3];
-
-			list.children[0] = item1;
-			list.children[1] = item2;
-			list.children[2] = item3;
-
-			return list;
-		}
-
-
-		object[][] ProcessMessages (Stream stream, IMessage[] messages)
-		{
-			object[][] results = new object[9][];
-
-			AuxProxy prx = new AuxProxy (stream, "myuri");
-			MethodTester mt = (MethodTester)prx.GetTransparentProxy();
-			object res;
-
-			if (messages != null) prx.SetTestMessage (messages[0]);
-			res = mt.OverloadedMethod();
-			results[0] = new object[] {res};
-
-			if (messages != null) prx.SetTestMessage (messages[1]);
-			res = mt.OverloadedMethod(22);
-			results[1] = new object[] {res};
-
-			if (messages != null) prx.SetTestMessage (messages[2]);
-			int[] par1 = new int[] {1,2,3};
-			res = mt.OverloadedMethod(par1);
-			results[2] = new object[] { res, par1 };
-
-			if (messages != null) prx.SetTestMessage (messages[3]);
-			mt.NoReturn();
-
-			if (messages != null) prx.SetTestMessage (messages[4]);
-			res = mt.Simple ("hello",44);
-			results[4] = new object[] { res };
-
-			if (messages != null) prx.SetTestMessage (messages[5]);
-			res = mt.Simple2 ('F');
-			results[5] = new object[] { res };
-
-			if (messages != null) prx.SetTestMessage (messages[6]);
-			char[] par2 = new char[] { 'G' };
-			res = mt.Simple3 (par2);
-			results[6] = new object[] { res, par2 };
-
-			if (messages != null) prx.SetTestMessage (messages[7]);
-			res = mt.Simple3 (null);
-			results[7] = new object[] { res };
-
-			if (messages != null) prx.SetTestMessage (messages[8]);
-
-			SimpleClass b = new SimpleClass ('H');
-			res = mt.SomeMethod (123456, b);
-			results[8] = new object[] { res, b };
-
-			return results;
-		}
-
-		void CheckMessages (string label, object[][] original, object[][] serialized)
-		{
-			for (int n=0; n<original.Length; n++)
-				EqualsArray (label + " " + n, original[n], serialized[n]);
-		}
-
-		public static void AssertEquals(string message, Object expected, Object actual)
-		{
-			if (expected != null && expected.GetType().IsArray)
-				EqualsArray (message, (Array)expected, (Array)actual);
-			else
-				Assertion.AssertEquals (message, expected, actual);
-		}
-
-		public static void EqualsArray (string message, object oar1, object oar2)
-		{
-			if (oar1 == null || oar2 == null || !(oar1 is Array) || !(oar2 is Array))
-			{
-				SerializationTest.AssertEquals (message, oar1, oar2);
-				return;
-			}
-
-			Array ar1 = (Array) oar1;
-			Array ar2 = (Array) oar2;
-
-			SerializationTest.AssertEquals(message + ".Length", ar1.Length,ar2.Length);
-
-			for (int n=0; n<ar1.Length; n++)
-			{
-				object av1 = ar1.GetValue(n);
-				object av2 = ar2.GetValue(n);
-				SerializationTest.AssertEquals (message + "[" + n + "]", av1, av2);
-			}
-		}
-	}
-
-
-
-	class PointSurrogate: ISerializationSurrogate
-	{
-		public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
-		{
-			Point p = (Point)obj;
-			info.AddValue ("xv",p.x);
-			info.AddValue ("yv",p.y);
-		}
-
-		public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
-		{
-			typeof (Point).GetField ("x").SetValue (obj, info.GetInt32 ("xv"));
-			typeof (Point).GetField ("y").SetValue (obj, info.GetInt32 ("yv"));
-			return obj;
-		}
-	}
-
-	[Serializable]
-	public class List
-	{
-		public string name = null;
-		public ListItem[] children = null; 
-		public SomeValues values;
-
-		public void CheckEquals(List val)
-		{
-			SerializationTest.AssertEquals ("List.children.Length", children.Length, val.children.Length);
-
-			for (int n=0; n<children.Length; n++)
-				children[n].CheckEquals (val.children[n]);
-
-			SerializationTest.AssertEquals ("List.name", name, val.name);
-			values.CheckEquals (val.values);
-		}
-	}
-
-	[Serializable]
-	public class ListItem: ISerializable
-	{
-		public ListItem()
-		{
-		}
-
-		ListItem (SerializationInfo info, StreamingContext ctx)
-		{
-			next = (ListItem)info.GetValue ("next", typeof (ListItem));
-			value = (ListValue)info.GetValue ("value", typeof (ListValue));
-			label = info.GetString ("label");
-		}
-
-		public void GetObjectData (SerializationInfo info, StreamingContext ctx)
-		{
-			info.AddValue ("next", next);
-			info.AddValue ("value", value);
-			info.AddValue ("label", label);
-		}
-
-		public void CheckEquals(ListItem val)
-		{
-			SerializationTest.AssertEquals ("ListItem.next", next, val.next);
-			SerializationTest.AssertEquals ("ListItem.label", label, val.label);
-			value.CheckEquals (val.value);
-		}
-		
-		public override bool Equals(object obj)
-		{
-			ListItem val = (ListItem)obj;
-			if ((next == null || val.next == null) && (next != val.next)) return false;
-			if (next == null) return true;
-			if (!next.Equals(val.next)) return false;
-			return value.Equals (val.value) && label == val.label;
-		}
-
-		public override int GetHashCode ()
-		{
-			return base.GetHashCode ();
-		}
-
-		public ListItem next;
-		public ListValue value;
-		public string label;
-	}
-
-	[Serializable]
-	public struct ListValue
-	{
-		public int color;
-		public Point point;
-		
-		public override bool Equals(object obj)
-		{
-			ListValue val = (ListValue)obj;
-			return (color == val.color && point.Equals(val.point));
-		}
-
-		public void CheckEquals(ListValue val)
-		{
-			SerializationTest.AssertEquals ("ListValue.color", color, val.color);
-			point.CheckEquals (val.point);
-		}
-
-		public override int GetHashCode ()
-		{
-			return base.GetHashCode ();
-		}
-	}
-
-//	[Serializable]
-	public struct Point
-	{
-		public int x;
-		public int y;
-
-		public override bool Equals(object obj)
-		{
-			Point p = (Point)obj;
-			return (x == p.x && y == p.y);
-		}
-
-		public void CheckEquals(Point p)
-		{
-			SerializationTest.AssertEquals ("Point.x", x, p.x);
-			SerializationTest.AssertEquals ("Point.y", y, p.y);
-		}
-
-		public override int GetHashCode ()
-		{
-			return base.GetHashCode ();
-		}
-	}
-
-	[Serializable]
-	public class SimpleClass
-	{
-		public SimpleClass (char v) { val = v; }
-
-		public override bool Equals(object obj)
-		{
-			if (obj == null) return false;
-			return val == ((SimpleClass)obj).val;
-		}
-
-		public override int GetHashCode()
-		{
-			return val.GetHashCode();
-		}
-
-		public int SampleCall (string str, SomeValues sv, ref int acum)
-		{
-			acum += (int)val;
-			return (int)val;
-		}
-
-		public char val;
-	}
-
-	enum IntEnum { aaa, bbb, ccc }
-	enum ByteEnum: byte { aaa=221, bbb=3, ccc=44 }
-
-	delegate int SampleDelegate (string str, SomeValues sv, ref int acum);
-
-	[Serializable]
-	public class SomeValues
-	{
-		Type _type;
-		Type _type2;
-		DBNull _dbnull;
-		Assembly _assembly;
-		IntEnum _intEnum;
-		ByteEnum _byteEnum;
-
-		bool _bool;
-		bool _bool2;
-		byte _byte;
-		char _char;
-//		DateTime _dateTime;
-		decimal _decimal;
-		double _double;
-		short _short;
-		int _int;
-		long _long;
-		sbyte _sbyte;
-		float _float;
-		ushort _ushort;
-		uint _uint;
-		ulong _ulong;
-
-		object[] _objects;
-		string[] _strings;
-		int[] _ints;
-		public int[,,] _intsMulti;
-		int[][] _intsJagged;
-		SimpleClass[] _simples;
-		SimpleClass[,] _simplesMulti;
-		SimpleClass[][] _simplesJagged;
-		double[] _doubles;
-		object[] _almostEmpty;
-
-		object[] _emptyObjectArray;
-		Type[] _emptyTypeArray;
-		SimpleClass[] _emptySimpleArray;
-		int[] _emptyIntArray;
-		string[] _emptyStringArray;
-
-
-		SampleDelegate _sampleDelegate;
-		SampleDelegate _sampleDelegate2;
-		SampleDelegate _sampleDelegate3;
-		SampleDelegate _sampleDelegateStatic;
-		SampleDelegate _sampleDelegateCombined;
-
-		SimpleClass _shared1;
-		SimpleClass _shared2;
-		SimpleClass _shared3;
-
-		public void Init()
-		{
-			_type = typeof (string);
-			_type2 = typeof (SomeValues);
-			_dbnull = DBNull.Value;
-			_assembly = typeof (SomeValues).Assembly;
-			_intEnum = IntEnum.bbb;
-			_byteEnum = ByteEnum.ccc;
-			_bool = true;
-			_bool2 = false;
-			_byte = 254;
-			_char = 'A';
-//			_dateTime = new DateTime (1972,7,13,1,20,59);
-			_decimal = (decimal)101010.10101;
-			_double = 123456.6789;
-			_short = -19191;
-			_int = -28282828;
-			_long = 37373737373;
-			_sbyte = -123;
-			_float = (float)654321.321;
-			_ushort = 61616;
-			_uint = 464646464;
-			_ulong = 55555555;
-
-			Point p = new Point();
-			p.x = 56; p.y = 67;
-			object boxedPoint = p;
-
-			long i = 22;
-			object boxedLong = i;
-
-			_objects = new object[] { "string", (int)1234, null , /*boxedPoint, boxedPoint,*/ boxedLong, boxedLong};
-			_strings = new string[] { "an", "array", "of", "strings","I","repeat","an", "array", "of", "strings" };
-			_ints = new int[] { 4,5,6,7,8 };
-			_intsMulti = new int[2,3,4] { { {1,2,3,4},{5,6,7,8},{9,10,11,12}}, { {13,14,15,16},{17,18,19,20},{21,22,23,24} } };
-			_intsJagged = new int[2][] { new int[3] {1,2,3}, new int[2] {4,5} };
-			_simples = new SimpleClass[] { new SimpleClass('a'),new SimpleClass('b'),new SimpleClass('c') };
-			_simplesMulti = new SimpleClass[2,3] {{new SimpleClass('d'),new SimpleClass('e'),new SimpleClass('f')}, {new SimpleClass('g'),new SimpleClass('j'),new SimpleClass('h')}};
-			_simplesJagged = new SimpleClass[2][] { new SimpleClass[1] { new SimpleClass('i') }, new SimpleClass[2] {null, new SimpleClass('k')}};
-			_almostEmpty = new object[2000];
-			_almostEmpty[1000] = 4;
-
-			_emptyObjectArray = new object[0];
-			_emptyTypeArray = new Type[0];
-			_emptySimpleArray = new SimpleClass[0];
-			_emptyIntArray = new int[0];
-			_emptyStringArray = new string[0];
-
-			// FIXME: Once double.ToString("G17") is implemented
-			// we'll be able to serialize double.MaxValue and double.MinValue.
-			// Currently, it throws a System.OverflowException.
-			//_doubles = new double[] { 1010101.101010, 292929.29292, 3838383.38383, 4747474.474, 56565.5656565, 0, Double.NaN, Double.MaxValue, Double.MinValue, Double.NegativeInfinity, Double.PositiveInfinity };
-			_doubles = new double[] { 1010101.101010, 292929.29292, 3838383.38383, 4747474.474, 56565.5656565, 0, Double.NaN, Double.NegativeInfinity, Double.PositiveInfinity };
-
-			_sampleDelegate = new SampleDelegate(SampleCall);
-			_sampleDelegate2 = new SampleDelegate(_simples[0].SampleCall);
-			_sampleDelegate3 = new SampleDelegate(new SimpleClass('x').SampleCall);
-			_sampleDelegateStatic = new SampleDelegate(SampleStaticCall);
-			_sampleDelegateCombined = (SampleDelegate)Delegate.Combine (new Delegate[] {_sampleDelegate, _sampleDelegate2, _sampleDelegate3, _sampleDelegateStatic });
-
-			// This is to test that references are correctly solved
-			_shared1 = new SimpleClass('A');
-			_shared2 = new SimpleClass('A');
-			_shared3 = _shared1;
-		}
-
-		public int SampleCall (string str, SomeValues sv, ref int acum)
-		{
-			acum += _int;
-			return _int;
-		}
-
-		public static int SampleStaticCall (string str, SomeValues sv, ref int acum)
-		{
-			acum += 99;
-			return 99;
-		}
-
-		public void CheckEquals(SomeValues obj)
-		{
-			SerializationTest.AssertEquals ("SomeValues._type", _type, obj._type);
-			SerializationTest.AssertEquals ("SomeValues._type2", _type2, obj._type2);
-			SerializationTest.AssertEquals ("SomeValues._dbnull", _dbnull, obj._dbnull);
-			SerializationTest.AssertEquals ("SomeValues._assembly", _assembly, obj._assembly);
-
-			SerializationTest.AssertEquals ("SomeValues._intEnum", _intEnum, obj._intEnum);
-			SerializationTest.AssertEquals ("SomeValues._byteEnum", _byteEnum, obj._byteEnum);
-			SerializationTest.AssertEquals ("SomeValues._bool", _bool, obj._bool);
-			SerializationTest.AssertEquals ("SomeValues._bool2", _bool2, obj._bool2);
-			SerializationTest.AssertEquals ("SomeValues._byte", _byte, obj._byte);
-			SerializationTest.AssertEquals ("SomeValues._char", _char, obj._char);
-//			SerializationTest.AssertEquals ("SomeValues._dateTime", _dateTime, obj._dateTime);
-			SerializationTest.AssertEquals ("SomeValues._decimal", _decimal, obj._decimal);
-			SerializationTest.AssertEquals ("SomeValues._int", _int, obj._int);
-			SerializationTest.AssertEquals ("SomeValues._long", _long, obj._long);
-			SerializationTest.AssertEquals ("SomeValues._sbyte", _sbyte, obj._sbyte);
-			SerializationTest.AssertEquals ("SomeValues._float", _float, obj._float);
-			SerializationTest.AssertEquals ("SomeValues._ushort", _ushort, obj._ushort);
-			SerializationTest.AssertEquals ("SomeValues._uint", _uint, obj._uint);
-			SerializationTest.AssertEquals ("SomeValues._ulong", _ulong, obj._ulong);
-
-			SerializationTest.EqualsArray ("SomeValues._objects", _objects, obj._objects);
-			SerializationTest.EqualsArray ("SomeValues._strings", _strings, obj._strings);
-			SerializationTest.EqualsArray ("SomeValues._doubles", _doubles, obj._doubles);
-			SerializationTest.EqualsArray ("SomeValues._ints", _ints, obj._ints);
-			SerializationTest.EqualsArray ("SomeValues._simples", _simples, obj._simples);
-			SerializationTest.EqualsArray ("SomeValues._almostEmpty", _almostEmpty, obj._almostEmpty);
-
-			SerializationTest.EqualsArray ("SomeValues._emptyObjectArray", _emptyObjectArray, obj._emptyObjectArray);
-			SerializationTest.EqualsArray ("SomeValues._emptyTypeArray", _emptyTypeArray, obj._emptyTypeArray);
-			SerializationTest.EqualsArray ("SomeValues._emptySimpleArray", _emptySimpleArray, obj._emptySimpleArray);
-			SerializationTest.EqualsArray ("SomeValues._emptyIntArray", _emptyIntArray, obj._emptyIntArray);
-			SerializationTest.EqualsArray ("SomeValues._emptyStringArray", _emptyStringArray, obj._emptyStringArray);
-
-			for (int i=0; i<2; i++)
-				for (int j=0; j<3; j++)
-					for (int k=0; k<4; k++)
-						SerializationTest.AssertEquals("SomeValues._intsMulti[" + i + "," + j + "," + k + "]", _intsMulti[i,j,k], obj._intsMulti[i,j,k]);
-
-			for (int i=0; i<_intsJagged.Length; i++)
-				for (int j=0; j<_intsJagged[i].Length; j++)
-					SerializationTest.AssertEquals ("SomeValues._intsJagged[" + i + "][" + j + "]", _intsJagged[i][j], obj._intsJagged[i][j]);
-
-			for (int i=0; i<2; i++)
-				for (int j=0; j<3; j++)
-					SerializationTest.AssertEquals ("SomeValues._simplesMulti[" + i + "," + j + "]", _simplesMulti[i,j], obj._simplesMulti[i,j]);
-
-			for (int i=0; i<_simplesJagged.Length; i++)
-				SerializationTest.EqualsArray ("SomeValues._simplesJagged", _simplesJagged[i], obj._simplesJagged[i]);
-
-			int acum = 0;
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegate", _sampleDelegate ("hi", this, ref acum), _int);
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegate_bis", _sampleDelegate ("hi", this, ref acum), obj._sampleDelegate ("hi", this, ref acum));
-
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegate2", _sampleDelegate2 ("hi", this, ref acum), (int)_simples[0].val);
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegate2_bis", _sampleDelegate2 ("hi", this, ref acum), obj._sampleDelegate2 ("hi", this, ref acum));
-
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegate3", _sampleDelegate3 ("hi", this, ref acum), (int)'x');
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegate3_bis", _sampleDelegate3 ("hi", this, ref acum), obj._sampleDelegate3 ("hi", this, ref acum));
-
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegateStatic", _sampleDelegateStatic ("hi", this, ref acum), 99);
-			SerializationTest.AssertEquals ("SomeValues._sampleDelegateStatic_bis", _sampleDelegateStatic ("hi", this, ref acum), obj._sampleDelegateStatic ("hi", this, ref acum));
-
-			int acum1 = 0;
-			int acum2 = 0;
-			_sampleDelegateCombined ("hi", this, ref acum1);
-			obj._sampleDelegateCombined ("hi", this, ref acum2);
-
-			SerializationTest.AssertEquals ("_sampleDelegateCombined", acum1, _int + (int)_simples[0].val + (int)'x' + 99);
-			SerializationTest.AssertEquals ("_sampleDelegateCombined_bis", acum1, acum2);
-
-			SerializationTest.AssertEquals ("SomeValues._shared1", _shared1, _shared2);
-			SerializationTest.AssertEquals ("SomeValues._shared1_bis", _shared1, _shared3);
-
-			_shared1.val = 'B';
-			SerializationTest.AssertEquals ("SomeValues._shared2", _shared2.val, 'A');
-			SerializationTest.AssertEquals ("SomeValues._shared3", _shared3.val, 'B');
-		}
-	}
-
-	class MethodTester : MarshalByRefObject
-	{
-		public int OverloadedMethod ()
-		{
-			return 123456789;
-		}
-
-		public int OverloadedMethod (int a)
-		{
-			return a+2;
-		}
-
-		public int OverloadedMethod (int[] a)
-		{
-			return a.Length;
-		}
-
-		public void NoReturn ()
-		{}
-
-		public string Simple (string a, int b)
-		{
-			return a + b;
-		}
-
-		public SimpleClass Simple2 (char c)
-		{
-			return new SimpleClass(c);
-		}
-
-		public SimpleClass Simple3 (char[] c)
-		{
-			if (c != null) return new SimpleClass(c[0]);
-			else return null;
-		}
-
-		public int SomeMethod (int a, SimpleClass b)
-		{
-			object[] d;
-			string c = "hi";
-			int r = a + c.Length;
-			c = "bye";
-			d = new object[3];
-			d[1] = b;
-			return r;
-		}
-	}
-
-	class AuxProxy: RealProxy
-	{
-		public static bool useHeaders = false;
-		Stream _stream;
-		string _uri;
-		IMethodMessage _testMsg;
-
-		public AuxProxy(Stream stream, string uri): base(typeof(MethodTester))
-		{
-			_stream = stream;
-			_uri = uri;
-		}
-
-		public void SetTestMessage (IMessage msg)
-		{
-			_testMsg = (IMethodMessage)msg;
-			_testMsg.Properties["__Uri"] = _uri;
-		}
-
-		public override IMessage Invoke(IMessage msg)
-		{
-			IMethodCallMessage call = (IMethodCallMessage)msg;
-			if (call.MethodName.StartsWith ("Initialize")) return new ReturnMessage(null,null,0,null,(IMethodCallMessage)msg);
-
-			call.Properties["__Uri"] = _uri;
-
-			if (_stream != null)
-			{
-				SerializeCall (call);
-				IMessage response = ChannelServices.SyncDispatchMessage (call);
-				SerializeResponse (response);
-				return response;
-			}
-			else if (_testMsg != null)
-			{
-				if (_testMsg is IMethodCallMessage)
-					return ChannelServices.SyncDispatchMessage (_testMsg);
-				else
-					return _testMsg;
-			}
-			else
-				return ChannelServices.SyncDispatchMessage (call);
-		}
-
-		void SerializeCall (IMessage call)
-		{
-			RemotingSurrogateSelector rss = new RemotingSurrogateSelector();
-			IRemotingFormatter fmt = new SoapFormatter (rss, new StreamingContext(StreamingContextStates.Remoting));
-			fmt.Serialize (_stream, call, GetHeaders());
-		}
-
-		void SerializeResponse (IMessage resp)
-		{
-			RemotingSurrogateSelector rss = new RemotingSurrogateSelector();
-			IRemotingFormatter fmt = new SoapFormatter (rss, new StreamingContext(StreamingContextStates.Remoting));
-			fmt.Serialize (_stream, resp, GetHeaders());
-		}
-
-		Header[] GetHeaders()
-		{
-			Header[] hs = null;
-			if (useHeaders)
-			{
-				hs = new Header[1];
-				hs[0] = new Header("unom",new SimpleClass('R'));
-			}
-			return hs;
-		}
-	}
-
-	public class TestBinder : SerializationBinder
-	{
-		public override Type BindToType (string assemblyName, string typeName)
-		{
-			if (typeName.IndexOf("BinderTester_A") != -1)
-				typeName = typeName.Replace ("BinderTester_A", "BinderTester_B");
-
-			return Assembly.Load (assemblyName).GetType (typeName);
-		}
-	}
-
-	[Serializable]
-	public class BinderTester_A
-	{
-		public int x;
-		public string y;
-	}
-
-	[Serializable]
-	public class BinderTester_B
-	{
-		public string y;
-		public int x;
-	}
-
-
-}
+//
+// System.Runtime.Serialization.SerializationTest.cs
+//
+// Author: Lluis Sanchez Gual  (lluis@ximian.com)
+//
+// (C) Ximian, Inc.
+//
+
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Soap;
+using System.Reflection;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Messaging;
+using System.Collections;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization.Formatters.Soap
+{
+	[TestFixture]
+	public class SerializationTest
+	{
+		MemoryStream ms;
+
+		[Test]
+		public void TestSerialization ()
+		{
+			MethodTester mt = new MethodTester();
+			RemotingServices.Marshal (mt, "myuri");
+
+			WriteData();
+			ReadData();
+
+			RemotingServices.Disconnect (mt);
+		}
+
+		public static void Main() 
+		{
+			SerializationTest test = new SerializationTest();
+			test.TestSerialization();
+		}
+
+		void WriteData ()
+		{
+			StreamingContext context = new StreamingContext (StreamingContextStates.Other);
+			SurrogateSelector sel = new SurrogateSelector();
+			sel.AddSurrogate (typeof (Point), context, new PointSurrogate());
+
+			List list = CreateTestData();
+			BinderTester_A bta = CreateBinderTestData();
+
+			ms = new MemoryStream();
+			SoapFormatter f = new SoapFormatter (sel, new StreamingContext(StreamingContextStates.Other));
+			f.Serialize (ms, list);
+//			ProcessMessages (ms, null);
+//			f.Serialize (ms, bta);
+			ms.Flush ();
+			ms.Position = 0;
+			StreamReader reader = new StreamReader(ms);
+			Console.WriteLine(reader.ReadToEnd());
+			ms.Position = 0;
+		}
+
+		void ReadData()
+		{
+			StreamingContext context = new StreamingContext (StreamingContextStates.Other);
+			SurrogateSelector sel = new SurrogateSelector();
+			sel.AddSurrogate (typeof (Point), context, new PointSurrogate());
+
+			SoapFormatter f = new SoapFormatter (sel, context);
+
+			object list = f.Deserialize (ms);
+
+			object[][] originalMsgData = null;
+			IMessage[] calls = null;
+			IMessage[] resps = null;
+
+//			originalMsgData = ProcessMessages (null, null);
+
+//			calls = new IMessage[originalMsgData.Length];
+//			resps = new IMessage[originalMsgData.Length];
+
+
+//			for (int n=0; n<originalMsgData.Length; n++)
+//			{
+//				calls[n] = (IMessage) f.Deserialize (ms);
+//				resps[n] = (IMessage) f.DeserializeMethodResponse (ms, null, (IMethodCallMessage)calls[n]);
+//			}
+//
+//			f.Binder = new TestBinder ();
+//			object btbob = f.Deserialize (ms);
+
+			ms.Close();
+
+			((List)list).CheckEquals(CreateTestData());
+//
+//			BinderTester_A bta = CreateBinderTestData();
+//			Assertion.AssertEquals ("BinderTest.class", btbob.GetType(), typeof (BinderTester_B));
+//			BinderTester_B btb = btbob as BinderTester_B;
+//			if (btb != null)
+//			{
+//				Assertion.AssertEquals ("BinderTest.x", btb.x, bta.x);
+//				Assertion.AssertEquals ("BinderTest.y", btb.y, bta.y);
+//			}
+//			
+//			CheckMessages ("MethodCall", originalMsgData, ProcessMessages (null, calls));
+//			CheckMessages ("MethodResponse", originalMsgData, ProcessMessages (null, resps));
+		}
+
+		BinderTester_A CreateBinderTestData ()
+		{
+			BinderTester_A bta = new BinderTester_A();
+			bta.x = 11;
+			bta.y = "binder tester";
+			return bta;
+		}
+
+		List CreateTestData()
+		{
+			List list = new List();
+			list.name = "my list";
+			list.values = new SomeValues();
+			list.values.Init();
+
+			ListItem item1 = new ListItem();
+			ListItem item2 = new ListItem();
+			ListItem item3 = new ListItem();
+
+			item1.label = "value label 1";
+			item1.next = item2;
+			item1.value.color = 111;
+			item1.value.point = new Point();
+			item1.value.point.x = 11;
+			item1.value.point.y = 22;
+
+			item2.label = "value label 2";
+			item2.next = item3;
+			item2.value.color = 222;
+
+			item2.value.point = new Point();
+			item2.value.point.x = 33;
+			item2.value.point.y = 44;
+
+			item3.label = "value label 3";
+			item3.value.color = 333;
+			item3.value.point = new Point();
+			item3.value.point.x = 55;
+			item3.value.point.y = 66;
+
+			list.children = new ListItem[3];
+
+			list.children[0] = item1;
+			list.children[1] = item2;
+			list.children[2] = item3;
+
+			return list;
+		}
+
+
+		object[][] ProcessMessages (Stream stream, IMessage[] messages)
+		{
+			object[][] results = new object[9][];
+
+			AuxProxy prx = new AuxProxy (stream, "myuri");
+			MethodTester mt = (MethodTester)prx.GetTransparentProxy();
+			object res;
+
+			if (messages != null) prx.SetTestMessage (messages[0]);
+			res = mt.OverloadedMethod();
+			results[0] = new object[] {res};
+
+			if (messages != null) prx.SetTestMessage (messages[1]);
+			res = mt.OverloadedMethod(22);
+			results[1] = new object[] {res};
+
+			if (messages != null) prx.SetTestMessage (messages[2]);
+			int[] par1 = new int[] {1,2,3};
+			res = mt.OverloadedMethod(par1);
+			results[2] = new object[] { res, par1 };
+
+			if (messages != null) prx.SetTestMessage (messages[3]);
+			mt.NoReturn();
+
+			if (messages != null) prx.SetTestMessage (messages[4]);
+			res = mt.Simple ("hello",44);
+			results[4] = new object[] { res };
+
+			if (messages != null) prx.SetTestMessage (messages[5]);
+			res = mt.Simple2 ('F');
+			results[5] = new object[] { res };
+
+			if (messages != null) prx.SetTestMessage (messages[6]);
+			char[] par2 = new char[] { 'G' };
+			res = mt.Simple3 (par2);
+			results[6] = new object[] { res, par2 };
+
+			if (messages != null) prx.SetTestMessage (messages[7]);
+			res = mt.Simple3 (null);
+			results[7] = new object[] { res };
+
+			if (messages != null) prx.SetTestMessage (messages[8]);
+
+			SimpleClass b = new SimpleClass ('H');
+			res = mt.SomeMethod (123456, b);
+			results[8] = new object[] { res, b };
+
+			return results;
+		}
+
+		void CheckMessages (string label, object[][] original, object[][] serialized)
+		{
+			for (int n=0; n<original.Length; n++)
+				EqualsArray (label + " " + n, original[n], serialized[n]);
+		}
+
+		public static void AssertEquals(string message, Object expected, Object actual)
+		{
+			if (expected != null && expected.GetType().IsArray)
+				EqualsArray (message, (Array)expected, (Array)actual);
+			else
+				Assertion.AssertEquals (message, expected, actual);
+		}
+
+		public static void EqualsArray (string message, object oar1, object oar2)
+		{
+			if (oar1 == null || oar2 == null || !(oar1 is Array) || !(oar2 is Array))
+			{
+				SerializationTest.AssertEquals (message, oar1, oar2);
+				return;
+			}
+
+			Array ar1 = (Array) oar1;
+			Array ar2 = (Array) oar2;
+
+			SerializationTest.AssertEquals(message + ".Length", ar1.Length,ar2.Length);
+
+			for (int n=0; n<ar1.Length; n++)
+			{
+				object av1 = ar1.GetValue(n);
+				object av2 = ar2.GetValue(n);
+				SerializationTest.AssertEquals (message + "[" + n + "]", av1, av2);
+			}
+		}
+	}
+
+
+
+	class PointSurrogate: ISerializationSurrogate
+	{
+		public void GetObjectData(object obj, SerializationInfo info, StreamingContext context)
+		{
+			Point p = (Point)obj;
+			info.AddValue ("xv",p.x);
+			info.AddValue ("yv",p.y);
+		}
+
+		public object SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
+		{
+			typeof (Point).GetField ("x").SetValue (obj, info.GetInt32 ("xv"));
+			typeof (Point).GetField ("y").SetValue (obj, info.GetInt32 ("yv"));
+			return obj;
+		}
+	}
+
+	[Serializable]
+	public class List
+	{
+		public string name = null;
+		public ListItem[] children = null; 
+		public SomeValues values;
+
+		public void CheckEquals(List val)
+		{
+			SerializationTest.AssertEquals ("List.children.Length", children.Length, val.children.Length);
+
+			for (int n=0; n<children.Length; n++)
+				children[n].CheckEquals (val.children[n]);
+
+			SerializationTest.AssertEquals ("List.name", name, val.name);
+			values.CheckEquals (val.values);
+		}
+	}
+
+	[Serializable]
+	public class ListItem: ISerializable
+	{
+		public ListItem()
+		{
+		}
+
+		ListItem (SerializationInfo info, StreamingContext ctx)
+		{
+			next = (ListItem)info.GetValue ("next", typeof (ListItem));
+			value = (ListValue)info.GetValue ("value", typeof (ListValue));
+			label = info.GetString ("label");
+		}
+
+		public void GetObjectData (SerializationInfo info, StreamingContext ctx)
+		{
+			info.AddValue ("next", next);
+			info.AddValue ("value", value);
+			info.AddValue ("label", label);
+		}
+
+		public void CheckEquals(ListItem val)
+		{
+			SerializationTest.AssertEquals ("ListItem.next", next, val.next);
+			SerializationTest.AssertEquals ("ListItem.label", label, val.label);
+			value.CheckEquals (val.value);
+		}
+		
+		public override bool Equals(object obj)
+		{
+			ListItem val = (ListItem)obj;
+			if ((next == null || val.next == null) && (next != val.next)) return false;
+			if (next == null) return true;
+			if (!next.Equals(val.next)) return false;
+			return value.Equals (val.value) && label == val.label;
+		}
+
+		public override int GetHashCode ()
+		{
+			return base.GetHashCode ();
+		}
+
+		public ListItem next;
+		public ListValue value;
+		public string label;
+	}
+
+	[Serializable]
+	public struct ListValue
+	{
+		public int color;
+		public Point point;
+		
+		public override bool Equals(object obj)
+		{
+			ListValue val = (ListValue)obj;
+			return (color == val.color && point.Equals(val.point));
+		}
+
+		public void CheckEquals(ListValue val)
+		{
+			SerializationTest.AssertEquals ("ListValue.color", color, val.color);
+			point.CheckEquals (val.point);
+		}
+
+		public override int GetHashCode ()
+		{
+			return base.GetHashCode ();
+		}
+	}
+
+//	[Serializable]
+	public struct Point
+	{
+		public int x;
+		public int y;
+
+		public override bool Equals(object obj)
+		{
+			Point p = (Point)obj;
+			return (x == p.x && y == p.y);
+		}
+
+		public void CheckEquals(Point p)
+		{
+			SerializationTest.AssertEquals ("Point.x", x, p.x);
+			SerializationTest.AssertEquals ("Point.y", y, p.y);
+		}
+
+		public override int GetHashCode ()
+		{
+			return base.GetHashCode ();
+		}
+	}
+
+	[Serializable]
+	public class SimpleClass
+	{
+		public SimpleClass (char v) { val = v; }
+
+		public override bool Equals(object obj)
+		{
+			if (obj == null) return false;
+			return val == ((SimpleClass)obj).val;
+		}
+
+		public override int GetHashCode()
+		{
+			return val.GetHashCode();
+		}
+
+		public int SampleCall (string str, SomeValues sv, ref int acum)
+		{
+			acum += (int)val;
+			return (int)val;
+		}
+
+		public char val;
+	}
+
+	enum IntEnum { aaa, bbb, ccc }
+	enum ByteEnum: byte { aaa=221, bbb=3, ccc=44 }
+
+	delegate int SampleDelegate (string str, SomeValues sv, ref int acum);
+
+	[Serializable]
+	public class SomeValues
+	{
+		Type _type;
+		Type _type2;
+		DBNull _dbnull;
+		Assembly _assembly;
+		IntEnum _intEnum;
+		ByteEnum _byteEnum;
+
+		bool _bool;
+		bool _bool2;
+		byte _byte;
+		char _char;
+//		DateTime _dateTime;
+		decimal _decimal;
+		double _double;
+		short _short;
+		int _int;
+		long _long;
+		sbyte _sbyte;
+		float _float;
+		ushort _ushort;
+		uint _uint;
+		ulong _ulong;
+
+		object[] _objects;
+		string[] _strings;
+		int[] _ints;
+		public int[,,] _intsMulti;
+		int[][] _intsJagged;
+		SimpleClass[] _simples;
+		SimpleClass[,] _simplesMulti;
+		SimpleClass[][] _simplesJagged;
+		double[] _doubles;
+		object[] _almostEmpty;
+
+		object[] _emptyObjectArray;
+		Type[] _emptyTypeArray;
+		SimpleClass[] _emptySimpleArray;
+		int[] _emptyIntArray;
+		string[] _emptyStringArray;
+
+
+		SampleDelegate _sampleDelegate;
+		SampleDelegate _sampleDelegate2;
+		SampleDelegate _sampleDelegate3;
+		SampleDelegate _sampleDelegateStatic;
+		SampleDelegate _sampleDelegateCombined;
+
+		SimpleClass _shared1;
+		SimpleClass _shared2;
+		SimpleClass _shared3;
+
+		public void Init()
+		{
+			_type = typeof (string);
+			_type2 = typeof (SomeValues);
+			_dbnull = DBNull.Value;
+			_assembly = typeof (SomeValues).Assembly;
+			_intEnum = IntEnum.bbb;
+			_byteEnum = ByteEnum.ccc;
+			_bool = true;
+			_bool2 = false;
+			_byte = 254;
+			_char = 'A';
+//			_dateTime = new DateTime (1972,7,13,1,20,59);
+			_decimal = (decimal)101010.10101;
+			_double = 123456.6789;
+			_short = -19191;
+			_int = -28282828;
+			_long = 37373737373;
+			_sbyte = -123;
+			_float = (float)654321.321;
+			_ushort = 61616;
+			_uint = 464646464;
+			_ulong = 55555555;
+
+			Point p = new Point();
+			p.x = 56; p.y = 67;
+			object boxedPoint = p;
+
+			long i = 22;
+			object boxedLong = i;
+
+			_objects = new object[] { "string", (int)1234, null , /*boxedPoint, boxedPoint,*/ boxedLong, boxedLong};
+			_strings = new string[] { "an", "array", "of", "strings","I","repeat","an", "array", "of", "strings" };
+			_ints = new int[] { 4,5,6,7,8 };
+			_intsMulti = new int[2,3,4] { { {1,2,3,4},{5,6,7,8},{9,10,11,12}}, { {13,14,15,16},{17,18,19,20},{21,22,23,24} } };
+			_intsJagged = new int[2][] { new int[3] {1,2,3}, new int[2] {4,5} };
+			_simples = new SimpleClass[] { new SimpleClass('a'),new SimpleClass('b'),new SimpleClass('c') };
+			_simplesMulti = new SimpleClass[2,3] {{new SimpleClass('d'),new SimpleClass('e'),new SimpleClass('f')}, {new SimpleClass('g'),new SimpleClass('j'),new SimpleClass('h')}};
+			_simplesJagged = new SimpleClass[2][] { new SimpleClass[1] { new SimpleClass('i') }, new SimpleClass[2] {null, new SimpleClass('k')}};
+			_almostEmpty = new object[2000];
+			_almostEmpty[1000] = 4;
+
+			_emptyObjectArray = new object[0];
+			_emptyTypeArray = new Type[0];
+			_emptySimpleArray = new SimpleClass[0];
+			_emptyIntArray = new int[0];
+			_emptyStringArray = new string[0];
+
+			// FIXME: Once double.ToString("G17") is implemented
+			// we'll be able to serialize double.MaxValue and double.MinValue.
+			// Currently, it throws a System.OverflowException.
+			//_doubles = new double[] { 1010101.101010, 292929.29292, 3838383.38383, 4747474.474, 56565.5656565, 0, Double.NaN, Double.MaxValue, Double.MinValue, Double.NegativeInfinity, Double.PositiveInfinity };
+			_doubles = new double[] { 1010101.101010, 292929.29292, 3838383.38383, 4747474.474, 56565.5656565, 0, Double.NaN, Double.NegativeInfinity, Double.PositiveInfinity };
+
+			_sampleDelegate = new SampleDelegate(SampleCall);
+			_sampleDelegate2 = new SampleDelegate(_simples[0].SampleCall);
+			_sampleDelegate3 = new SampleDelegate(new SimpleClass('x').SampleCall);
+			_sampleDelegateStatic = new SampleDelegate(SampleStaticCall);
+			_sampleDelegateCombined = (SampleDelegate)Delegate.Combine (new Delegate[] {_sampleDelegate, _sampleDelegate2, _sampleDelegate3, _sampleDelegateStatic });
+
+			// This is to test that references are correctly solved
+			_shared1 = new SimpleClass('A');
+			_shared2 = new SimpleClass('A');
+			_shared3 = _shared1;
+		}
+
+		public int SampleCall (string str, SomeValues sv, ref int acum)
+		{
+			acum += _int;
+			return _int;
+		}
+
+		public static int SampleStaticCall (string str, SomeValues sv, ref int acum)
+		{
+			acum += 99;
+			return 99;
+		}
+
+		public void CheckEquals(SomeValues obj)
+		{
+			SerializationTest.AssertEquals ("SomeValues._type", _type, obj._type);
+			SerializationTest.AssertEquals ("SomeValues._type2", _type2, obj._type2);
+			SerializationTest.AssertEquals ("SomeValues._dbnull", _dbnull, obj._dbnull);
+			SerializationTest.AssertEquals ("SomeValues._assembly", _assembly, obj._assembly);
+
+			SerializationTest.AssertEquals ("SomeValues._intEnum", _intEnum, obj._intEnum);
+			SerializationTest.AssertEquals ("SomeValues._byteEnum", _byteEnum, obj._byteEnum);
+			SerializationTest.AssertEquals ("SomeValues._bool", _bool, obj._bool);
+			SerializationTest.AssertEquals ("SomeValues._bool2", _bool2, obj._bool2);
+			SerializationTest.AssertEquals ("SomeValues._byte", _byte, obj._byte);
+			SerializationTest.AssertEquals ("SomeValues._char", _char, obj._char);
+//			SerializationTest.AssertEquals ("SomeValues._dateTime", _dateTime, obj._dateTime);
+			SerializationTest.AssertEquals ("SomeValues._decimal", _decimal, obj._decimal);
+			SerializationTest.AssertEquals ("SomeValues._int", _int, obj._int);
+			SerializationTest.AssertEquals ("SomeValues._long", _long, obj._long);
+			SerializationTest.AssertEquals ("SomeValues._sbyte", _sbyte, obj._sbyte);
+			SerializationTest.AssertEquals ("SomeValues._float", _float, obj._float);
+			SerializationTest.AssertEquals ("SomeValues._ushort", _ushort, obj._ushort);
+			SerializationTest.AssertEquals ("SomeValues._uint", _uint, obj._uint);
+			SerializationTest.AssertEquals ("SomeValues._ulong", _ulong, obj._ulong);
+
+			SerializationTest.EqualsArray ("SomeValues._objects", _objects, obj._objects);
+			SerializationTest.EqualsArray ("SomeValues._strings", _strings, obj._strings);
+			SerializationTest.EqualsArray ("SomeValues._doubles", _doubles, obj._doubles);
+			SerializationTest.EqualsArray ("SomeValues._ints", _ints, obj._ints);
+			SerializationTest.EqualsArray ("SomeValues._simples", _simples, obj._simples);
+			SerializationTest.EqualsArray ("SomeValues._almostEmpty", _almostEmpty, obj._almostEmpty);
+
+			SerializationTest.EqualsArray ("SomeValues._emptyObjectArray", _emptyObjectArray, obj._emptyObjectArray);
+			SerializationTest.EqualsArray ("SomeValues._emptyTypeArray", _emptyTypeArray, obj._emptyTypeArray);
+			SerializationTest.EqualsArray ("SomeValues._emptySimpleArray", _emptySimpleArray, obj._emptySimpleArray);
+			SerializationTest.EqualsArray ("SomeValues._emptyIntArray", _emptyIntArray, obj._emptyIntArray);
+			SerializationTest.EqualsArray ("SomeValues._emptyStringArray", _emptyStringArray, obj._emptyStringArray);
+
+			for (int i=0; i<2; i++)
+				for (int j=0; j<3; j++)
+					for (int k=0; k<4; k++)
+						SerializationTest.AssertEquals("SomeValues._intsMulti[" + i + "," + j + "," + k + "]", _intsMulti[i,j,k], obj._intsMulti[i,j,k]);
+
+			for (int i=0; i<_intsJagged.Length; i++)
+				for (int j=0; j<_intsJagged[i].Length; j++)
+					SerializationTest.AssertEquals ("SomeValues._intsJagged[" + i + "][" + j + "]", _intsJagged[i][j], obj._intsJagged[i][j]);
+
+			for (int i=0; i<2; i++)
+				for (int j=0; j<3; j++)
+					SerializationTest.AssertEquals ("SomeValues._simplesMulti[" + i + "," + j + "]", _simplesMulti[i,j], obj._simplesMulti[i,j]);
+
+			for (int i=0; i<_simplesJagged.Length; i++)
+				SerializationTest.EqualsArray ("SomeValues._simplesJagged", _simplesJagged[i], obj._simplesJagged[i]);
+
+			int acum = 0;
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegate", _sampleDelegate ("hi", this, ref acum), _int);
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegate_bis", _sampleDelegate ("hi", this, ref acum), obj._sampleDelegate ("hi", this, ref acum));
+
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegate2", _sampleDelegate2 ("hi", this, ref acum), (int)_simples[0].val);
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegate2_bis", _sampleDelegate2 ("hi", this, ref acum), obj._sampleDelegate2 ("hi", this, ref acum));
+
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegate3", _sampleDelegate3 ("hi", this, ref acum), (int)'x');
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegate3_bis", _sampleDelegate3 ("hi", this, ref acum), obj._sampleDelegate3 ("hi", this, ref acum));
+
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegateStatic", _sampleDelegateStatic ("hi", this, ref acum), 99);
+			SerializationTest.AssertEquals ("SomeValues._sampleDelegateStatic_bis", _sampleDelegateStatic ("hi", this, ref acum), obj._sampleDelegateStatic ("hi", this, ref acum));
+
+			int acum1 = 0;
+			int acum2 = 0;
+			_sampleDelegateCombined ("hi", this, ref acum1);
+			obj._sampleDelegateCombined ("hi", this, ref acum2);
+
+			SerializationTest.AssertEquals ("_sampleDelegateCombined", acum1, _int + (int)_simples[0].val + (int)'x' + 99);
+			SerializationTest.AssertEquals ("_sampleDelegateCombined_bis", acum1, acum2);
+
+			SerializationTest.AssertEquals ("SomeValues._shared1", _shared1, _shared2);
+			SerializationTest.AssertEquals ("SomeValues._shared1_bis", _shared1, _shared3);
+
+			_shared1.val = 'B';
+			SerializationTest.AssertEquals ("SomeValues._shared2", _shared2.val, 'A');
+			SerializationTest.AssertEquals ("SomeValues._shared3", _shared3.val, 'B');
+		}
+	}
+
+	class MethodTester : MarshalByRefObject
+	{
+		public int OverloadedMethod ()
+		{
+			return 123456789;
+		}
+
+		public int OverloadedMethod (int a)
+		{
+			return a+2;
+		}
+
+		public int OverloadedMethod (int[] a)
+		{
+			return a.Length;
+		}
+
+		public void NoReturn ()
+		{}
+
+		public string Simple (string a, int b)
+		{
+			return a + b;
+		}
+
+		public SimpleClass Simple2 (char c)
+		{
+			return new SimpleClass(c);
+		}
+
+		public SimpleClass Simple3 (char[] c)
+		{
+			if (c != null) return new SimpleClass(c[0]);
+			else return null;
+		}
+
+		public int SomeMethod (int a, SimpleClass b)
+		{
+			object[] d;
+			string c = "hi";
+			int r = a + c.Length;
+			c = "bye";
+			d = new object[3];
+			d[1] = b;
+			return r;
+		}
+	}
+
+	class AuxProxy: RealProxy
+	{
+		public static bool useHeaders = false;
+		Stream _stream;
+		string _uri;
+		IMethodMessage _testMsg;
+
+		public AuxProxy(Stream stream, string uri): base(typeof(MethodTester))
+		{
+			_stream = stream;
+			_uri = uri;
+		}
+
+		public void SetTestMessage (IMessage msg)
+		{
+			_testMsg = (IMethodMessage)msg;
+			_testMsg.Properties["__Uri"] = _uri;
+		}
+
+		public override IMessage Invoke(IMessage msg)
+		{
+			IMethodCallMessage call = (IMethodCallMessage)msg;
+			if (call.MethodName.StartsWith ("Initialize")) return new ReturnMessage(null,null,0,null,(IMethodCallMessage)msg);
+
+			call.Properties["__Uri"] = _uri;
+
+			if (_stream != null)
+			{
+				SerializeCall (call);
+				IMessage response = ChannelServices.SyncDispatchMessage (call);
+				SerializeResponse (response);
+				return response;
+			}
+			else if (_testMsg != null)
+			{
+				if (_testMsg is IMethodCallMessage)
+					return ChannelServices.SyncDispatchMessage (_testMsg);
+				else
+					return _testMsg;
+			}
+			else
+				return ChannelServices.SyncDispatchMessage (call);
+		}
+
+		void SerializeCall (IMessage call)
+		{
+			RemotingSurrogateSelector rss = new RemotingSurrogateSelector();
+			IRemotingFormatter fmt = new SoapFormatter (rss, new StreamingContext(StreamingContextStates.Remoting));
+			fmt.Serialize (_stream, call, GetHeaders());
+		}
+
+		void SerializeResponse (IMessage resp)
+		{
+			RemotingSurrogateSelector rss = new RemotingSurrogateSelector();
+			IRemotingFormatter fmt = new SoapFormatter (rss, new StreamingContext(StreamingContextStates.Remoting));
+			fmt.Serialize (_stream, resp, GetHeaders());
+		}
+
+		Header[] GetHeaders()
+		{
+			Header[] hs = null;
+			if (useHeaders)
+			{
+				hs = new Header[1];
+				hs[0] = new Header("unom",new SimpleClass('R'));
+			}
+			return hs;
+		}
+	}
+
+	public class TestBinder : SerializationBinder
+	{
+		public override Type BindToType (string assemblyName, string typeName)
+		{
+			if (typeName.IndexOf("BinderTester_A") != -1)
+				typeName = typeName.Replace ("BinderTester_A", "BinderTester_B");
+
+			return Assembly.Load (assemblyName).GetType (typeName);
+		}
+	}
+
+	[Serializable]
+	public class BinderTester_A
+	{
+		public int x;
+		public string y;
+	}
+
+	[Serializable]
+	public class BinderTester_B
+	{
+		public string y;
+		public int x;
+	}
+
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SoapFormatterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/SoapFormatterTest.cs
@@ -1,418 +1,418 @@
-// project created on 09/05/2003 at 18:07
-using System;
-using System.Collections;
-using System.Reflection;
-using System.Threading;
-using System.Globalization;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Messaging;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.Serialization.Formatters.Soap;
-using System.Runtime.Remoting.Metadata.W3cXsd2001;
-using System.IO;
-using NUnit.Framework;
-using System.Collections.Generic;
-
-namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
-	
-	internal class NonSerializableObject {
-		
-	}
-	
-	public delegate void TrucDlg(string s);
-	
-	[Serializable]
-	public class MoreComplexObject {
-		public event TrucDlg TrucEvent;
-		private string _string;
-		private string[] _strings = new string[]{};
-		private Queue _queue = new Queue();
-		public Dictionary<object, object> _table = new Dictionary<object, object> ();
-
-		public string ObjString {
-			get { return _string; }
-		}
-
-		public MoreComplexObject() {
-			TrucEvent += new TrucDlg(WriteString);
-			_queue.Enqueue(1);
-			_queue.Enqueue(null);
-			_queue.Enqueue("foo");
-			_table["foo"]="barr";
-			_table[1]="foo";
-			_table['c'] = "barr";
-			_table["barr"] = 1234567890;
-		}
-
-		public void OnTrucEvent(string s) {
-			TrucEvent(s);
-		}
-
-		public void WriteString(string s) {
-			_string = s;
-		}
-
-		public override bool Equals(object obj) {
-			MoreComplexObject objReturn = obj as MoreComplexObject;
-			if(objReturn == null) return false;
-			if(objReturn._string != this._string) return false;
-
-			Assert.AreEqual (_table.Count, objReturn._table.Count, "#1");
-			foreach(var e in objReturn._table) {
-				Assert.AreEqual (e.Value, _table[e.Key], e.Key.ToString ());
-			}
-			return SoapFormatterTest.CheckArray(this._queue.ToArray(), objReturn._queue.ToArray());
-		}
-		
-	}
-	
-	[Serializable]
-	internal class MarshalObject: MarshalByRefObject {
-		private string _name;
-		private long _id;
-		
-		public MarshalObject() {
-			
-		}
-		
-		public MarshalObject(string name, long id) {
-			_name = name;
-			_id = id;
-		}
-	}
-	
-	[Serializable]
-	internal class SimpleObject {
-		private string _name;
-		private int _id;
-		
-		public SimpleObject(string name, int id) {
-			_name = name;
-			_id = id;
-		}
-		
-		public override bool Equals(object obj) {
-			SimpleObject objCmp = obj as SimpleObject;
-			if(objCmp == null) return false;
-			if(objCmp._name != this._name) return false;
-			if(objCmp._id != this._id) return false;
-			return true;
-		}
-	}
-
-	[Serializable]
-	internal class Version1 {
-		public int _value;
-		
-		public Version1(int value) {
-			_value = value;
-		}
-	}
-
-	[Serializable]
-	internal class Version2: ISerializable {
-	   	public int _value;
-		public string _foo;
-
-		public Version2(int value, string foo) {
-		   	_value = value;
-		   	_foo = foo;
-		}
-
-		public void GetObjectData(SerializationInfo info, StreamingContext context) {
-		   	info.AddValue("_value", _value);
-			info.AddValue("_foo", _foo);
-		}
-
-		private Version2(SerializationInfo info, StreamingContext context) {
-		    	_value = info.GetInt32("_value");
-			try{
-				_foo = info.GetString("_foo");
-			}
-			catch(SerializationException) {
-			    _foo = "Default value";
-			}
-		}
-	}
-	
-	public class Version1ToVersion2Binder: SerializationBinder {
-		public override Type BindToType (string assemblyName, string typeName) {
-			Type returnType = null;
-			string typeVersion1 = "MonoTests.System.Runtime.Serialization.Formatters.Soap.Version1";
-			string assemName = Assembly.GetExecutingAssembly().FullName;
-
-			if(typeName == typeVersion1) {
-				typeName = "MonoTests.System.Runtime.Serialization.Formatters.Soap.Version2";
-			}
-
-			string typeFormat = String.Format("{0}, {1}", typeName, assemName);
-			returnType = Type.GetType( typeFormat);
-
-			return returnType;
-		}
-	}
-
-	[TestFixture]
-	public class SoapFormatterTest
-	{
-		private SoapFormatter _soapFormatter;
-		private SoapFormatter _soapFormatterDeserializer;
-		private RemotingSurrogateSelector _surrogate;
-
-#if DEBUG
-		private void Out(MemoryStream stream, object objGraph) {
-			Console.WriteLine("\n---------------------\n{0}\n", objGraph.ToString());
-			stream.Position = 0;
-			StreamReader r = new StreamReader(stream);
-			Console.WriteLine(r.ReadToEnd());
-		}			
-#endif
-		
-		private object Serialize(object objGraph) {
-			MemoryStream stream = new MemoryStream();
-			Assertion.Assert(objGraph != null);
-			Assertion.Assert(stream != null);
-			_soapFormatter.SurrogateSelector = _surrogate;
-			_soapFormatter.Serialize(stream, objGraph);
-			
-#if DEBUG
-			Out(stream, objGraph);
-#endif
-			stream.Position = 0;
-			
-			object objReturn = _soapFormatterDeserializer.Deserialize(stream);
-			Assertion.Assert(objReturn != null);
-			Assertion.AssertEquals("#Tests "+objGraph.GetType(), objGraph.GetType(), objReturn.GetType());
-			stream = new MemoryStream();
-			_soapFormatter.Serialize(stream, objReturn);
-			stream.Position = 0;
-			return objReturn;
-			
-		}
-		
-		[SetUp]
-		public void GetReady() {
-			StreamingContext context = new StreamingContext(StreamingContextStates.All);
-			_surrogate = new RemotingSurrogateSelector();
-			_soapFormatter = new SoapFormatter(_surrogate, context);
-			_soapFormatterDeserializer = new SoapFormatter(null, context);
-		}
-		
-		[TearDown]
-		public void Clean() {
-			
-		}
-		
-		
-		[Test]
-		public void TestValueTypes() {
-			object objReturn;
-			objReturn = Serialize((short)1);
-			Assertion.AssertEquals("#int16", objReturn, 1);
-			objReturn = Serialize(1);
-			Assertion.AssertEquals("#int32", objReturn, 1);
-			objReturn = Serialize((Single)0.1234);
-			Assertion.AssertEquals("#Single", objReturn, 0.123400003f);
-			objReturn = Serialize((Double)1234567890.0987654321);
-			Assertion.AssertEquals("#iDouble", objReturn, 1234567890.0987654321);
-			objReturn = Serialize(true);
-			Assertion.AssertEquals("#Bool", objReturn, true);
-			objReturn = Serialize((Int64) 1234567890);
-			Assertion.AssertEquals("#Int64", objReturn, 1234567890);
-			objReturn = Serialize('c');
-			Assertion.AssertEquals("#Char", objReturn, 'c');
-		}
-		
-		[Test]
-		public void TestObjects() {
-			object objReturn;
-			objReturn = Serialize("");
-			objReturn = Serialize("hello world!");
-			Assertion.AssertEquals("#string", "hello world!", objReturn);
-			SoapMessage soapMsg = new SoapMessage();
-			soapMsg.Headers = new Header[0];
-			soapMsg.MethodName = "Equals";
-			soapMsg.ParamNames = new String[0];
-			soapMsg.ParamTypes = new Type[0];
-			soapMsg.ParamValues = new object[0];
-			soapMsg.XmlNameSpace = SoapServices.CodeXmlNamespaceForClrTypeNamespace("String", "System");
-			_soapFormatterDeserializer.TopObject = new SoapMessage();
-			objReturn = Serialize(soapMsg);
-			_soapFormatterDeserializer.TopObject = null;
-			SimpleObject obj = new SimpleObject("simple object", 1);
-			objReturn = Serialize(obj);
-			Assertion.AssertEquals("#SimpleObject", obj, objReturn);
-			objReturn = Serialize(typeof(SimpleObject));
-			Assertion.AssertEquals("#Type", typeof(SimpleObject), (Type)objReturn);
-			objReturn = Serialize(obj.GetType().Assembly);
-			Assertion.AssertEquals("#Assembly", obj.GetType().Assembly, objReturn);
-		}
-		
-		public static bool CheckArray(object objTest, object objReturn) {
-			Array objTestAsArray = objTest as Array;
-			Array objReturnAsArray = objReturn as Array;
-			
-			Assertion.Assert("#Not an Array "+objTest, objReturnAsArray != null);
-			Assertion.AssertEquals("#Different lengths "+objTest, objTestAsArray.Length, objReturnAsArray.Length);
-			
-			IEnumerator iEnum = objReturnAsArray.GetEnumerator();
-			iEnum.Reset();
-			object obj2;
-			foreach(object obj1 in objTestAsArray) {
-				iEnum.MoveNext();
-				obj2 = iEnum.Current;
-				Assertion.AssertEquals("#The content of the 2 arrays is different", obj1, obj2);
-			}
-			
-			return true;
-		}
-		
-		[Test]
-		public void TestArray() {
-			object objReturn;
-			object objTest;
-			objReturn = Serialize(new int[]{});
-			objTest = new int[]{1, 2, 3, 4};
-			objReturn = Serialize(objTest);
-			CheckArray(objTest, objReturn);
-			objReturn = Serialize(new long[]{1, 2, 3, 4});
-			objTest = new object[]{1, null, ":-)", 1234567890};
-			objReturn = Serialize(objTest);
-			objTest = new int[,]{{0, 1}, {2, 3}, {123, 4}};
-			objReturn = Serialize(objTest);
-			CheckArray(objTest, objReturn);
-			objTest = new string[]{};
-			objReturn = Serialize(objTest);
-			CheckArray(objTest, objReturn);
-			object[,,] objArray = new object[3,2,1];
-			objArray[0,0,0] = 1;
-			objArray[2,1,0] = "end";
-			objReturn = Serialize(objArray);
-			CheckArray(objArray, objReturn);
-		}
-		
-		[Test]
-		public void TestMarshalByRefObject() {
-			Serialize(new MarshalObject("thing", 1234567890));
-		}
-		
-		[Test]
-		[ExpectedException(typeof(ArgumentNullException))]
-		public void TestNullObject() {
-			MemoryStream stream = new MemoryStream();
-			_soapFormatter.Serialize(stream, null);
-		}
-		
-		[Test]
-		[ExpectedException(typeof(SerializationException))]
-		public void TestNonSerialisable() {
-			Serialize(new NonSerializableObject());
-		}
-
-		[Test]
-		public void TestMoreComplexObject() {
-			MoreComplexObject objReturn;
-			MoreComplexObject objTest = new MoreComplexObject();
-			objReturn = (MoreComplexObject) Serialize(objTest);
-			Assertion.AssertEquals("#Equals", objTest, objReturn);
-			objReturn.OnTrucEvent("bidule");
-			Assertion.AssertEquals("#dlg", "bidule", objReturn.ObjString);
-		}
-
-		[Test]
-		public void TestSerializationbinder() {
-		    	Object objReturn;
-			MemoryStream stream = new MemoryStream();
-			Version1 objVer1 = new Version1(123);
-
-			_soapFormatter.SurrogateSelector = _surrogate;
-			_soapFormatter.Serialize(stream, objVer1);
-
-			stream.Position = 0;
-			_soapFormatterDeserializer.Binder = new Version1ToVersion2Binder();
-			objReturn = _soapFormatterDeserializer.Deserialize(stream);
-
-			Assertion.AssertEquals("#Version1 Version2", "Version2", objReturn.GetType().Name);
-			Assertion.AssertEquals("#_value", 123, ((Version2) objReturn)._value);
-			Assertion.AssertEquals("#_foo", "Default value", ((Version2) objReturn)._foo);
-		}
-		
-		[Test]
-		public void TestMethodSignatureSerialization ()
-		{
-			Header h = new Header ("__MethodSignature", new Type [] { typeof(string),typeof(SignatureTest[]) }, false, "http://schemas.microsoft.com/clr/soap/messageProperties");
-
-			SoapMessage msg = new SoapMessage ();
-			msg.MethodName = "Run";
-			msg.ParamNames = new string [] { "nom" };
-			msg.ParamTypes = new Type [] { typeof(SignatureTest) };
-			msg.ParamValues = new object[] { new SignatureTest () };
-			msg.Headers = new Header[] { h};
-
-			MemoryStream ms = new MemoryStream ();
-			SoapFormatter sf = new SoapFormatter ();
-			sf.Serialize (ms, msg);
-
-			ms.Position = 0;
-
-			SoapMessage t = new SoapMessage ();
-			sf.TopObject = t;
-			t = (SoapMessage) sf.Deserialize (ms);
-			
-			Assertion.AssertNotNull ("#1", t.Headers[0].Value);
-			Assertion.AssertEquals ("#2", t.Headers[0].Value.GetType (), typeof(Type[]));
-			
-			Type[] ts = (Type[]) t.Headers[0].Value;
-			
-			Assertion.AssertEquals ("#3", 2, ts.Length);
-			Assertion.AssertNotNull ("#4", ts[0]);
-			Assertion.AssertNotNull ("#5", ts[1]);
-			Console.WriteLine ("PPP:" + ts[0].GetType());
-			Assertion.AssertEquals ("#6", typeof(string), ts[0]);
-			Assertion.AssertEquals ("#7", typeof(SignatureTest[]), ts[1]);
-		}
-
-		[Test]
-		public void TestCulture ()
-		{
-			var currentCulture = Thread.CurrentThread.CurrentCulture;
-			try {
-				Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE");
-
-				var ms = new MemoryStream ();
-				var test = new CultureTest ();
-
-				_soapFormatter.Serialize(ms, test);
-				ms.Position = 0;
-				_soapFormatter.Deserialize(ms);
-			} finally {
-				Thread.CurrentThread.CurrentCulture = currentCulture;
-			}
-		}
-
-		[Serializable]
-		public class CultureTest
-		{
-			[OnDeserialized]
-			public void OnDeserialization (StreamingContext context)
-			{
-				var ci = Thread.CurrentThread.CurrentCulture;
-				Assertion.AssertEquals("#1", "German (Germany)", ci.EnglishName);
-			}
-			
-			[OnSerialized]
-			public void OnSerialized (StreamingContext context)
-			{
-				var ci = Thread.CurrentThread.CurrentCulture;
-				Assertion.AssertEquals("#2", "German (Germany)", ci.EnglishName);
-			}
-		}
-	}
-	
-	[Serializable]
-	public class SignatureTest
-	{
-		public SoapQName qn = new SoapQName ("e", "name", "espai");
-	}	
-}
+// project created on 09/05/2003 at 18:07
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Threading;
+using System.Globalization;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters;
+using System.Runtime.Serialization.Formatters.Soap;
+using System.Runtime.Remoting.Metadata.W3cXsd2001;
+using System.IO;
+using NUnit.Framework;
+using System.Collections.Generic;
+
+namespace MonoTests.System.Runtime.Serialization.Formatters.Soap {
+	
+	internal class NonSerializableObject {
+		
+	}
+	
+	public delegate void TrucDlg(string s);
+	
+	[Serializable]
+	public class MoreComplexObject {
+		public event TrucDlg TrucEvent;
+		private string _string;
+		private string[] _strings = new string[]{};
+		private Queue _queue = new Queue();
+		public Dictionary<object, object> _table = new Dictionary<object, object> ();
+
+		public string ObjString {
+			get { return _string; }
+		}
+
+		public MoreComplexObject() {
+			TrucEvent += new TrucDlg(WriteString);
+			_queue.Enqueue(1);
+			_queue.Enqueue(null);
+			_queue.Enqueue("foo");
+			_table["foo"]="barr";
+			_table[1]="foo";
+			_table['c'] = "barr";
+			_table["barr"] = 1234567890;
+		}
+
+		public void OnTrucEvent(string s) {
+			TrucEvent(s);
+		}
+
+		public void WriteString(string s) {
+			_string = s;
+		}
+
+		public override bool Equals(object obj) {
+			MoreComplexObject objReturn = obj as MoreComplexObject;
+			if(objReturn == null) return false;
+			if(objReturn._string != this._string) return false;
+
+			Assert.AreEqual (_table.Count, objReturn._table.Count, "#1");
+			foreach(var e in objReturn._table) {
+				Assert.AreEqual (e.Value, _table[e.Key], e.Key.ToString ());
+			}
+			return SoapFormatterTest.CheckArray(this._queue.ToArray(), objReturn._queue.ToArray());
+		}
+		
+	}
+	
+	[Serializable]
+	internal class MarshalObject: MarshalByRefObject {
+		private string _name;
+		private long _id;
+		
+		public MarshalObject() {
+			
+		}
+		
+		public MarshalObject(string name, long id) {
+			_name = name;
+			_id = id;
+		}
+	}
+	
+	[Serializable]
+	internal class SimpleObject {
+		private string _name;
+		private int _id;
+		
+		public SimpleObject(string name, int id) {
+			_name = name;
+			_id = id;
+		}
+		
+		public override bool Equals(object obj) {
+			SimpleObject objCmp = obj as SimpleObject;
+			if(objCmp == null) return false;
+			if(objCmp._name != this._name) return false;
+			if(objCmp._id != this._id) return false;
+			return true;
+		}
+	}
+
+	[Serializable]
+	internal class Version1 {
+		public int _value;
+		
+		public Version1(int value) {
+			_value = value;
+		}
+	}
+
+	[Serializable]
+	internal class Version2: ISerializable {
+	   	public int _value;
+		public string _foo;
+
+		public Version2(int value, string foo) {
+		   	_value = value;
+		   	_foo = foo;
+		}
+
+		public void GetObjectData(SerializationInfo info, StreamingContext context) {
+		   	info.AddValue("_value", _value);
+			info.AddValue("_foo", _foo);
+		}
+
+		private Version2(SerializationInfo info, StreamingContext context) {
+		    	_value = info.GetInt32("_value");
+			try{
+				_foo = info.GetString("_foo");
+			}
+			catch(SerializationException) {
+			    _foo = "Default value";
+			}
+		}
+	}
+	
+	public class Version1ToVersion2Binder: SerializationBinder {
+		public override Type BindToType (string assemblyName, string typeName) {
+			Type returnType = null;
+			string typeVersion1 = "MonoTests.System.Runtime.Serialization.Formatters.Soap.Version1";
+			string assemName = Assembly.GetExecutingAssembly().FullName;
+
+			if(typeName == typeVersion1) {
+				typeName = "MonoTests.System.Runtime.Serialization.Formatters.Soap.Version2";
+			}
+
+			string typeFormat = String.Format("{0}, {1}", typeName, assemName);
+			returnType = Type.GetType( typeFormat);
+
+			return returnType;
+		}
+	}
+
+	[TestFixture]
+	public class SoapFormatterTest
+	{
+		private SoapFormatter _soapFormatter;
+		private SoapFormatter _soapFormatterDeserializer;
+		private RemotingSurrogateSelector _surrogate;
+
+#if DEBUG
+		private void Out(MemoryStream stream, object objGraph) {
+			Console.WriteLine("\n---------------------\n{0}\n", objGraph.ToString());
+			stream.Position = 0;
+			StreamReader r = new StreamReader(stream);
+			Console.WriteLine(r.ReadToEnd());
+		}			
+#endif
+		
+		private object Serialize(object objGraph) {
+			MemoryStream stream = new MemoryStream();
+			Assertion.Assert(objGraph != null);
+			Assertion.Assert(stream != null);
+			_soapFormatter.SurrogateSelector = _surrogate;
+			_soapFormatter.Serialize(stream, objGraph);
+			
+#if DEBUG
+			Out(stream, objGraph);
+#endif
+			stream.Position = 0;
+			
+			object objReturn = _soapFormatterDeserializer.Deserialize(stream);
+			Assertion.Assert(objReturn != null);
+			Assertion.AssertEquals("#Tests "+objGraph.GetType(), objGraph.GetType(), objReturn.GetType());
+			stream = new MemoryStream();
+			_soapFormatter.Serialize(stream, objReturn);
+			stream.Position = 0;
+			return objReturn;
+			
+		}
+		
+		[SetUp]
+		public void GetReady() {
+			StreamingContext context = new StreamingContext(StreamingContextStates.All);
+			_surrogate = new RemotingSurrogateSelector();
+			_soapFormatter = new SoapFormatter(_surrogate, context);
+			_soapFormatterDeserializer = new SoapFormatter(null, context);
+		}
+		
+		[TearDown]
+		public void Clean() {
+			
+		}
+		
+		
+		[Test]
+		public void TestValueTypes() {
+			object objReturn;
+			objReturn = Serialize((short)1);
+			Assertion.AssertEquals("#int16", objReturn, 1);
+			objReturn = Serialize(1);
+			Assertion.AssertEquals("#int32", objReturn, 1);
+			objReturn = Serialize((Single)0.1234);
+			Assertion.AssertEquals("#Single", objReturn, 0.123400003f);
+			objReturn = Serialize((Double)1234567890.0987654321);
+			Assertion.AssertEquals("#iDouble", objReturn, 1234567890.0987654321);
+			objReturn = Serialize(true);
+			Assertion.AssertEquals("#Bool", objReturn, true);
+			objReturn = Serialize((Int64) 1234567890);
+			Assertion.AssertEquals("#Int64", objReturn, 1234567890);
+			objReturn = Serialize('c');
+			Assertion.AssertEquals("#Char", objReturn, 'c');
+		}
+		
+		[Test]
+		public void TestObjects() {
+			object objReturn;
+			objReturn = Serialize("");
+			objReturn = Serialize("hello world!");
+			Assertion.AssertEquals("#string", "hello world!", objReturn);
+			SoapMessage soapMsg = new SoapMessage();
+			soapMsg.Headers = new Header[0];
+			soapMsg.MethodName = "Equals";
+			soapMsg.ParamNames = new String[0];
+			soapMsg.ParamTypes = new Type[0];
+			soapMsg.ParamValues = new object[0];
+			soapMsg.XmlNameSpace = SoapServices.CodeXmlNamespaceForClrTypeNamespace("String", "System");
+			_soapFormatterDeserializer.TopObject = new SoapMessage();
+			objReturn = Serialize(soapMsg);
+			_soapFormatterDeserializer.TopObject = null;
+			SimpleObject obj = new SimpleObject("simple object", 1);
+			objReturn = Serialize(obj);
+			Assertion.AssertEquals("#SimpleObject", obj, objReturn);
+			objReturn = Serialize(typeof(SimpleObject));
+			Assertion.AssertEquals("#Type", typeof(SimpleObject), (Type)objReturn);
+			objReturn = Serialize(obj.GetType().Assembly);
+			Assertion.AssertEquals("#Assembly", obj.GetType().Assembly, objReturn);
+		}
+		
+		public static bool CheckArray(object objTest, object objReturn) {
+			Array objTestAsArray = objTest as Array;
+			Array objReturnAsArray = objReturn as Array;
+			
+			Assertion.Assert("#Not an Array "+objTest, objReturnAsArray != null);
+			Assertion.AssertEquals("#Different lengths "+objTest, objTestAsArray.Length, objReturnAsArray.Length);
+			
+			IEnumerator iEnum = objReturnAsArray.GetEnumerator();
+			iEnum.Reset();
+			object obj2;
+			foreach(object obj1 in objTestAsArray) {
+				iEnum.MoveNext();
+				obj2 = iEnum.Current;
+				Assertion.AssertEquals("#The content of the 2 arrays is different", obj1, obj2);
+			}
+			
+			return true;
+		}
+		
+		[Test]
+		public void TestArray() {
+			object objReturn;
+			object objTest;
+			objReturn = Serialize(new int[]{});
+			objTest = new int[]{1, 2, 3, 4};
+			objReturn = Serialize(objTest);
+			CheckArray(objTest, objReturn);
+			objReturn = Serialize(new long[]{1, 2, 3, 4});
+			objTest = new object[]{1, null, ":-)", 1234567890};
+			objReturn = Serialize(objTest);
+			objTest = new int[,]{{0, 1}, {2, 3}, {123, 4}};
+			objReturn = Serialize(objTest);
+			CheckArray(objTest, objReturn);
+			objTest = new string[]{};
+			objReturn = Serialize(objTest);
+			CheckArray(objTest, objReturn);
+			object[,,] objArray = new object[3,2,1];
+			objArray[0,0,0] = 1;
+			objArray[2,1,0] = "end";
+			objReturn = Serialize(objArray);
+			CheckArray(objArray, objReturn);
+		}
+		
+		[Test]
+		public void TestMarshalByRefObject() {
+			Serialize(new MarshalObject("thing", 1234567890));
+		}
+		
+		[Test]
+		[ExpectedException(typeof(ArgumentNullException))]
+		public void TestNullObject() {
+			MemoryStream stream = new MemoryStream();
+			_soapFormatter.Serialize(stream, null);
+		}
+		
+		[Test]
+		[ExpectedException(typeof(SerializationException))]
+		public void TestNonSerialisable() {
+			Serialize(new NonSerializableObject());
+		}
+
+		[Test]
+		public void TestMoreComplexObject() {
+			MoreComplexObject objReturn;
+			MoreComplexObject objTest = new MoreComplexObject();
+			objReturn = (MoreComplexObject) Serialize(objTest);
+			Assertion.AssertEquals("#Equals", objTest, objReturn);
+			objReturn.OnTrucEvent("bidule");
+			Assertion.AssertEquals("#dlg", "bidule", objReturn.ObjString);
+		}
+
+		[Test]
+		public void TestSerializationbinder() {
+		    	Object objReturn;
+			MemoryStream stream = new MemoryStream();
+			Version1 objVer1 = new Version1(123);
+
+			_soapFormatter.SurrogateSelector = _surrogate;
+			_soapFormatter.Serialize(stream, objVer1);
+
+			stream.Position = 0;
+			_soapFormatterDeserializer.Binder = new Version1ToVersion2Binder();
+			objReturn = _soapFormatterDeserializer.Deserialize(stream);
+
+			Assertion.AssertEquals("#Version1 Version2", "Version2", objReturn.GetType().Name);
+			Assertion.AssertEquals("#_value", 123, ((Version2) objReturn)._value);
+			Assertion.AssertEquals("#_foo", "Default value", ((Version2) objReturn)._foo);
+		}
+		
+		[Test]
+		public void TestMethodSignatureSerialization ()
+		{
+			Header h = new Header ("__MethodSignature", new Type [] { typeof(string),typeof(SignatureTest[]) }, false, "http://schemas.microsoft.com/clr/soap/messageProperties");
+
+			SoapMessage msg = new SoapMessage ();
+			msg.MethodName = "Run";
+			msg.ParamNames = new string [] { "nom" };
+			msg.ParamTypes = new Type [] { typeof(SignatureTest) };
+			msg.ParamValues = new object[] { new SignatureTest () };
+			msg.Headers = new Header[] { h};
+
+			MemoryStream ms = new MemoryStream ();
+			SoapFormatter sf = new SoapFormatter ();
+			sf.Serialize (ms, msg);
+
+			ms.Position = 0;
+
+			SoapMessage t = new SoapMessage ();
+			sf.TopObject = t;
+			t = (SoapMessage) sf.Deserialize (ms);
+			
+			Assertion.AssertNotNull ("#1", t.Headers[0].Value);
+			Assertion.AssertEquals ("#2", t.Headers[0].Value.GetType (), typeof(Type[]));
+			
+			Type[] ts = (Type[]) t.Headers[0].Value;
+			
+			Assertion.AssertEquals ("#3", 2, ts.Length);
+			Assertion.AssertNotNull ("#4", ts[0]);
+			Assertion.AssertNotNull ("#5", ts[1]);
+			Console.WriteLine ("PPP:" + ts[0].GetType());
+			Assertion.AssertEquals ("#6", typeof(string), ts[0]);
+			Assertion.AssertEquals ("#7", typeof(SignatureTest[]), ts[1]);
+		}
+
+		[Test]
+		public void TestCulture ()
+		{
+			var currentCulture = Thread.CurrentThread.CurrentCulture;
+			try {
+				Thread.CurrentThread.CurrentCulture = new CultureInfo ("de-DE");
+
+				var ms = new MemoryStream ();
+				var test = new CultureTest ();
+
+				_soapFormatter.Serialize(ms, test);
+				ms.Position = 0;
+				_soapFormatter.Deserialize(ms);
+			} finally {
+				Thread.CurrentThread.CurrentCulture = currentCulture;
+			}
+		}
+
+		[Serializable]
+		public class CultureTest
+		{
+			[OnDeserialized]
+			public void OnDeserialization (StreamingContext context)
+			{
+				var ci = Thread.CurrentThread.CurrentCulture;
+				Assertion.AssertEquals("#1", "German (Germany)", ci.EnglishName);
+			}
+			
+			[OnSerialized]
+			public void OnSerialized (StreamingContext context)
+			{
+				var ci = Thread.CurrentThread.CurrentCulture;
+				Assertion.AssertEquals("#2", "German (Germany)", ci.EnglishName);
+			}
+		}
+	}
+	
+	[Serializable]
+	public class SignatureTest
+	{
+		public SoapQName qn = new SoapQName ("e", "name", "espai");
+	}	
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/Test.cmbx
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/Test.cmbx
@@ -1,10 +1,10 @@
-<Combine fileversion="1.0" name="Test" description="">
-  <StartMode startupentry="Test" single="True" />
-  <Entries>
-    <Entry filename=".\Test.prjx" />
-  </Entries>
-  <Configurations active="Debug">
-    <Configuration name="Release" />
-    <Configuration name="Debug" />
-  </Configurations>
+<Combine fileversion="1.0" name="Test" description="">
+  <StartMode startupentry="Test" single="True" />
+  <Entries>
+    <Entry filename=".\Test.prjx" />
+  </Entries>
+  <Configurations active="Debug">
+    <Configuration name="Release" />
+    <Configuration name="Debug" />
+  </Configurations>
 </Combine>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/Test.prjx
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization.Formatters.Soap/Test/Test.prjx
@@ -1,29 +1,29 @@
-<Project name="Test" description="Creates an empty C# class library" newfilesearch="None" enableviewstate="True" version="1.1" projecttype="C#">
-  <Contents>
-    <File name=".\AssemblyInfo.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
-    <File name=".\SoapFormatterTest.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
-    <File name=".\main.cs" subtype="Code" buildaction="Nothing" dependson="" data="" />
-  </Contents>
-  <References>
-    <Reference type="Gac" refto="nunit.framework, Version=2.0.6.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77" />
-    <Reference type="Project" refto="SoapFormatter" />
-  </References>
-  <DeploymentInformation target="" script="" strategy="File" />
-  <Configuration runwithwarnings="True" name="Debug">
-    <CodeGeneration runtime="MsNet" compiler="Csc" warninglevel="0" includedebuginformation="True" optimize="True" unsafecodeallowed="True" generateoverflowchecks="True" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" />
-    <Execution commandlineparameters="" consolepause="True" />
-    <Output directory="..\" assembly="Test" />
-  </Configuration>
-  <Configurations active="Debug">
-    <Configuration runwithwarnings="True" name="Debug">
-      <CodeGeneration runtime="MsNet" compiler="Csc" warninglevel="0" includedebuginformation="True" optimize="True" unsafecodeallowed="True" generateoverflowchecks="True" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" />
-      <Execution commandlineparameters="" consolepause="True" />
-      <Output directory="..\" assembly="Test" />
-    </Configuration>
-    <Configuration runwithwarnings="True" name="Release">
-      <CodeGeneration runtime="MsNet" compiler="Csc" warninglevel="0" includedebuginformation="False" optimize="True" unsafecodeallowed="True" generateoverflowchecks="False" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" />
-      <Execution commandlineparameters="" consolepause="False" />
-      <Output directory=".\" assembly="SoapFormatterTest" />
-    </Configuration>
-  </Configurations>
+<Project name="Test" description="Creates an empty C# class library" newfilesearch="None" enableviewstate="True" version="1.1" projecttype="C#">
+  <Contents>
+    <File name=".\AssemblyInfo.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
+    <File name=".\SoapFormatterTest.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
+    <File name=".\main.cs" subtype="Code" buildaction="Nothing" dependson="" data="" />
+  </Contents>
+  <References>
+    <Reference type="Gac" refto="nunit.framework, Version=2.0.6.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77" />
+    <Reference type="Project" refto="SoapFormatter" />
+  </References>
+  <DeploymentInformation target="" script="" strategy="File" />
+  <Configuration runwithwarnings="True" name="Debug">
+    <CodeGeneration runtime="MsNet" compiler="Csc" warninglevel="0" includedebuginformation="True" optimize="True" unsafecodeallowed="True" generateoverflowchecks="True" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" />
+    <Execution commandlineparameters="" consolepause="True" />
+    <Output directory="..\" assembly="Test" />
+  </Configuration>
+  <Configurations active="Debug">
+    <Configuration runwithwarnings="True" name="Debug">
+      <CodeGeneration runtime="MsNet" compiler="Csc" warninglevel="0" includedebuginformation="True" optimize="True" unsafecodeallowed="True" generateoverflowchecks="True" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" />
+      <Execution commandlineparameters="" consolepause="True" />
+      <Output directory="..\" assembly="Test" />
+    </Configuration>
+    <Configuration runwithwarnings="True" name="Release">
+      <CodeGeneration runtime="MsNet" compiler="Csc" warninglevel="0" includedebuginformation="False" optimize="True" unsafecodeallowed="True" generateoverflowchecks="False" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" />
+      <Execution commandlineparameters="" consolepause="False" />
+      <Output directory=".\" assembly="SoapFormatterTest" />
+    </Configuration>
+  </Configurations>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization/Test/Resources/FrameworkTypes/System.Security.Policy.ApplicationTrust.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization/Test/Resources/FrameworkTypes/System.Security.Policy.ApplicationTrust.xml
@@ -1,3 +1,3 @@
-﻿<?xml version="1.0" encoding="utf-8"?><ApplicationTrust xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/System.Security.Policy"><m_appId xmlns:d2p1="http://schemas.datacontract.org/2004/07/System" i:nil="true" /><m_appTrustedToRun>false</m_appTrustedToRun><m_elExtraInfo xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Security" i:nil="true" /><m_extraInfo i:nil="true" /><m_fullTrustAssemblies i:nil="true" /><m_persist>false</m_persist><m_psDefaultGrant><m_attributes>Nothing</m_attributes><m_permSet xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Security"><d3p1:m_Unrestricted>false</d3p1:m_Unrestricted><d3p1:m_allPermissionsDecoded>true</d3p1:m_allPermissionsDecoded><d3p1:m_canUnrestrictedOverride>true</d3p1:m_canUnrestrictedOverride><d3p1:m_ignoreTypeLoadFailures>false</d3p1:m_ignoreTypeLoadFailures><d3p1:m_normalPermSet xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Security.Util" i:nil="true" /><d3p1:m_permSet xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Security.Util" i:nil="true" /><d3p1:m_serializedPermissionSet>&lt;PermissionSet class="System.Security.PermissionSet"
-version="1"/&gt;
+﻿<?xml version="1.0" encoding="utf-8"?><ApplicationTrust xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/System.Security.Policy"><m_appId xmlns:d2p1="http://schemas.datacontract.org/2004/07/System" i:nil="true" /><m_appTrustedToRun>false</m_appTrustedToRun><m_elExtraInfo xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Security" i:nil="true" /><m_extraInfo i:nil="true" /><m_fullTrustAssemblies i:nil="true" /><m_persist>false</m_persist><m_psDefaultGrant><m_attributes>Nothing</m_attributes><m_permSet xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Security"><d3p1:m_Unrestricted>false</d3p1:m_Unrestricted><d3p1:m_allPermissionsDecoded>true</d3p1:m_allPermissionsDecoded><d3p1:m_canUnrestrictedOverride>true</d3p1:m_canUnrestrictedOverride><d3p1:m_ignoreTypeLoadFailures>false</d3p1:m_ignoreTypeLoadFailures><d3p1:m_normalPermSet xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Security.Util" i:nil="true" /><d3p1:m_permSet xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Security.Util" i:nil="true" /><d3p1:m_serializedPermissionSet>&lt;PermissionSet class="System.Security.PermissionSet"
+version="1"/&gt;
 </d3p1:m_serializedPermissionSet><d3p1:m_unrestrictedPermSet xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Security.Util" i:nil="true" /><d3p1:readableonly>false</d3p1:readableonly></m_permSet></m_psDefaultGrant></ApplicationTrust>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization/Test/Resources/WSDL/collections.wsdl
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization/Test/Resources/WSDL/collections.wsdl
@@ -1,236 +1,236 @@
-<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions name="MyService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
-  <wsdl:types>
-    <xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-      <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
-      <xs:import namespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
-      <xs:element name="GetSimpleList">
-        <xs:complexType>
-          <xs:sequence />
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetSimpleListResponse">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element minOccurs="0" name="GetSimpleListResult" nillable="true" type="q1:ArrayOfint" xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetListOfStringArray">
-        <xs:complexType>
-          <xs:sequence />
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetListOfStringArrayResponse">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element minOccurs="0" name="GetListOfStringArrayResult" nillable="true" type="q2:ArrayOfArrayOfstring" xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetListOfFoo">
-        <xs:complexType>
-          <xs:sequence />
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetListOfFooResponse">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element minOccurs="0" name="GetListOfFooResult" nillable="true" type="q3:ArrayOfFoo" xmlns:q3="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetSimpleDictionary">
-        <xs:complexType>
-          <xs:sequence />
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetSimpleDictionaryResponse">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element minOccurs="0" name="GetSimpleDictionaryResult" nillable="true" type="q4:ArrayOfKeyValueOfintstring" xmlns:q4="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-    </xs:schema>
-    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/">
-      <xs:element name="anyType" nillable="true" type="xs:anyType" />
-      <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
-      <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
-      <xs:element name="boolean" nillable="true" type="xs:boolean" />
-      <xs:element name="byte" nillable="true" type="xs:byte" />
-      <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
-      <xs:element name="decimal" nillable="true" type="xs:decimal" />
-      <xs:element name="double" nillable="true" type="xs:double" />
-      <xs:element name="float" nillable="true" type="xs:float" />
-      <xs:element name="int" nillable="true" type="xs:int" />
-      <xs:element name="long" nillable="true" type="xs:long" />
-      <xs:element name="QName" nillable="true" type="xs:QName" />
-      <xs:element name="short" nillable="true" type="xs:short" />
-      <xs:element name="string" nillable="true" type="xs:string" />
-      <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
-      <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
-      <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
-      <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
-      <xs:element name="char" nillable="true" type="tns:char" />
-      <xs:simpleType name="char">
-        <xs:restriction base="xs:int" />
-      </xs:simpleType>
-      <xs:element name="duration" nillable="true" type="tns:duration" />
-      <xs:simpleType name="duration">
-        <xs:restriction base="xs:duration">
-          <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
-          <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
-          <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
-        </xs:restriction>
-      </xs:simpleType>
-      <xs:element name="guid" nillable="true" type="tns:guid" />
-      <xs:simpleType name="guid">
-        <xs:restriction base="xs:string">
-          <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
-        </xs:restriction>
-      </xs:simpleType>
-      <xs:attribute name="FactoryType" type="xs:QName" />
-      <xs:attribute name="Id" type="xs:ID" />
-      <xs:attribute name="Ref" type="xs:IDREF" />
-    </xs:schema>
-    <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
-      <xs:complexType name="ArrayOfint">
-        <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="ArrayOfint" nillable="true" type="tns:ArrayOfint" />
-      <xs:complexType name="ArrayOfArrayOfstring">
-        <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="ArrayOfArrayOfstring" nillable="true" type="tns:ArrayOfArrayOfstring" />
-      <xs:complexType name="ArrayOfstring">
-        <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
-      <xs:complexType name="ArrayOfKeyValueOfintstring">
-        <xs:annotation>
-          <xs:appinfo>
-            <IsDictionary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</IsDictionary>
-          </xs:appinfo>
-        </xs:annotation>
-        <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfintstring">
-            <xs:complexType>
-              <xs:sequence>
-                <xs:element name="Key" type="xs:int" />
-                <xs:element name="Value" nillable="true" type="xs:string" />
-              </xs:sequence>
-            </xs:complexType>
-          </xs:element>
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="ArrayOfKeyValueOfintstring" nillable="true" type="tns:ArrayOfKeyValueOfintstring" />
-    </xs:schema>
-    <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/TestWCF.Model">
-      <xs:complexType name="ArrayOfFoo">
-        <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="Foo" nillable="true" type="tns:Foo" />
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="ArrayOfFoo" nillable="true" type="tns:ArrayOfFoo" />
-      <xs:complexType name="Foo">
-        <xs:sequence>
-          <xs:element minOccurs="0" name="Text" nillable="true" type="xs:string" />
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="Foo" nillable="true" type="tns:Foo" />
-    </xs:schema>
-  </wsdl:types>
-  <wsdl:message name="IMyService_GetSimpleList_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetSimpleList" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetSimpleList_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetSimpleListResponse" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetListOfStringArray_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetListOfStringArray" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetListOfStringArray_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetListOfStringArrayResponse" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetListOfFoo_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetListOfFoo" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetListOfFoo_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetListOfFooResponse" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetSimpleDictionary_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetSimpleDictionary" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetSimpleDictionary_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetSimpleDictionaryResponse" />
-  </wsdl:message>
-  <wsdl:portType name="IMyService">
-    <wsdl:operation name="GetSimpleList">
-      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetSimpleList" message="tns:IMyService_GetSimpleList_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetSimpleListResponse" message="tns:IMyService_GetSimpleList_OutputMessage" />
-    </wsdl:operation>
-    <wsdl:operation name="GetListOfStringArray">
-      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetListOfStringArray" message="tns:IMyService_GetListOfStringArray_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetListOfStringArrayResponse" message="tns:IMyService_GetListOfStringArray_OutputMessage" />
-    </wsdl:operation>
-    <wsdl:operation name="GetListOfFoo">
-      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetListOfFoo" message="tns:IMyService_GetListOfFoo_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetListOfFooResponse" message="tns:IMyService_GetListOfFoo_OutputMessage" />
-    </wsdl:operation>
-    <wsdl:operation name="GetSimpleDictionary">
-      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetSimpleDictionary" message="tns:IMyService_GetSimpleDictionary_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetSimpleDictionaryResponse" message="tns:IMyService_GetSimpleDictionary_OutputMessage" />
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="defaultEndpoint" type="tns:IMyService">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
-    <wsdl:operation name="GetSimpleList">
-      <soap:operation soapAction="http://tempuri.org/IMyService/GetSimpleList" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetListOfStringArray">
-      <soap:operation soapAction="http://tempuri.org/IMyService/GetListOfStringArray" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetListOfFoo">
-      <soap:operation soapAction="http://tempuri.org/IMyService/GetListOfFoo" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetSimpleDictionary">
-      <soap:operation soapAction="http://tempuri.org/IMyService/GetSimpleDictionary" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="MyService">
-    <wsdl:port name="defaultEndpoint" binding="tns:defaultEndpoint">
-      <soap:address location="http://provcon-faust/TestWCF/MyService.svc" />
-    </wsdl:port>
-  </wsdl:service>
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions name="MyService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
+  <wsdl:types>
+    <xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+      <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+      <xs:import namespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
+      <xs:element name="GetSimpleList">
+        <xs:complexType>
+          <xs:sequence />
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetSimpleListResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="GetSimpleListResult" nillable="true" type="q1:ArrayOfint" xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetListOfStringArray">
+        <xs:complexType>
+          <xs:sequence />
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetListOfStringArrayResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="GetListOfStringArrayResult" nillable="true" type="q2:ArrayOfArrayOfstring" xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetListOfFoo">
+        <xs:complexType>
+          <xs:sequence />
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetListOfFooResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="GetListOfFooResult" nillable="true" type="q3:ArrayOfFoo" xmlns:q3="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetSimpleDictionary">
+        <xs:complexType>
+          <xs:sequence />
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetSimpleDictionaryResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="GetSimpleDictionaryResult" nillable="true" type="q4:ArrayOfKeyValueOfintstring" xmlns:q4="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:schema>
+    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/">
+      <xs:element name="anyType" nillable="true" type="xs:anyType" />
+      <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+      <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+      <xs:element name="boolean" nillable="true" type="xs:boolean" />
+      <xs:element name="byte" nillable="true" type="xs:byte" />
+      <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+      <xs:element name="decimal" nillable="true" type="xs:decimal" />
+      <xs:element name="double" nillable="true" type="xs:double" />
+      <xs:element name="float" nillable="true" type="xs:float" />
+      <xs:element name="int" nillable="true" type="xs:int" />
+      <xs:element name="long" nillable="true" type="xs:long" />
+      <xs:element name="QName" nillable="true" type="xs:QName" />
+      <xs:element name="short" nillable="true" type="xs:short" />
+      <xs:element name="string" nillable="true" type="xs:string" />
+      <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+      <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+      <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+      <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+      <xs:element name="char" nillable="true" type="tns:char" />
+      <xs:simpleType name="char">
+        <xs:restriction base="xs:int" />
+      </xs:simpleType>
+      <xs:element name="duration" nillable="true" type="tns:duration" />
+      <xs:simpleType name="duration">
+        <xs:restriction base="xs:duration">
+          <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+          <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+          <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:element name="guid" nillable="true" type="tns:guid" />
+      <xs:simpleType name="guid">
+        <xs:restriction base="xs:string">
+          <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:attribute name="FactoryType" type="xs:QName" />
+      <xs:attribute name="Id" type="xs:ID" />
+      <xs:attribute name="Ref" type="xs:IDREF" />
+    </xs:schema>
+    <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
+      <xs:complexType name="ArrayOfint">
+        <xs:sequence>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="ArrayOfint" nillable="true" type="tns:ArrayOfint" />
+      <xs:complexType name="ArrayOfArrayOfstring">
+        <xs:sequence>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="ArrayOfArrayOfstring" nillable="true" type="tns:ArrayOfArrayOfstring" />
+      <xs:complexType name="ArrayOfstring">
+        <xs:sequence>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
+      <xs:complexType name="ArrayOfKeyValueOfintstring">
+        <xs:annotation>
+          <xs:appinfo>
+            <IsDictionary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">true</IsDictionary>
+          </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfintstring">
+            <xs:complexType>
+              <xs:sequence>
+                <xs:element name="Key" type="xs:int" />
+                <xs:element name="Value" nillable="true" type="xs:string" />
+              </xs:sequence>
+            </xs:complexType>
+          </xs:element>
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="ArrayOfKeyValueOfintstring" nillable="true" type="tns:ArrayOfKeyValueOfintstring" />
+    </xs:schema>
+    <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/TestWCF.Model">
+      <xs:complexType name="ArrayOfFoo">
+        <xs:sequence>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="Foo" nillable="true" type="tns:Foo" />
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="ArrayOfFoo" nillable="true" type="tns:ArrayOfFoo" />
+      <xs:complexType name="Foo">
+        <xs:sequence>
+          <xs:element minOccurs="0" name="Text" nillable="true" type="xs:string" />
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="Foo" nillable="true" type="tns:Foo" />
+    </xs:schema>
+  </wsdl:types>
+  <wsdl:message name="IMyService_GetSimpleList_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetSimpleList" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetSimpleList_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetSimpleListResponse" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetListOfStringArray_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetListOfStringArray" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetListOfStringArray_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetListOfStringArrayResponse" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetListOfFoo_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetListOfFoo" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetListOfFoo_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetListOfFooResponse" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetSimpleDictionary_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetSimpleDictionary" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetSimpleDictionary_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetSimpleDictionaryResponse" />
+  </wsdl:message>
+  <wsdl:portType name="IMyService">
+    <wsdl:operation name="GetSimpleList">
+      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetSimpleList" message="tns:IMyService_GetSimpleList_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetSimpleListResponse" message="tns:IMyService_GetSimpleList_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetListOfStringArray">
+      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetListOfStringArray" message="tns:IMyService_GetListOfStringArray_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetListOfStringArrayResponse" message="tns:IMyService_GetListOfStringArray_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetListOfFoo">
+      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetListOfFoo" message="tns:IMyService_GetListOfFoo_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetListOfFooResponse" message="tns:IMyService_GetListOfFoo_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetSimpleDictionary">
+      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetSimpleDictionary" message="tns:IMyService_GetSimpleDictionary_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetSimpleDictionaryResponse" message="tns:IMyService_GetSimpleDictionary_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="defaultEndpoint" type="tns:IMyService">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="GetSimpleList">
+      <soap:operation soapAction="http://tempuri.org/IMyService/GetSimpleList" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListOfStringArray">
+      <soap:operation soapAction="http://tempuri.org/IMyService/GetListOfStringArray" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetListOfFoo">
+      <soap:operation soapAction="http://tempuri.org/IMyService/GetListOfFoo" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetSimpleDictionary">
+      <soap:operation soapAction="http://tempuri.org/IMyService/GetSimpleDictionary" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="MyService">
+    <wsdl:port name="defaultEndpoint" binding="tns:defaultEndpoint">
+      <soap:address location="http://provcon-faust/TestWCF/MyService.svc" />
+    </wsdl:port>
+  </wsdl:service>
 </wsdl:definitions>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization/Test/Resources/WSDL/custom-collections.wsdl
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization/Test/Resources/WSDL/custom-collections.wsdl
@@ -1,142 +1,142 @@
-<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions name="MyService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
-  <wsdl:types>
-    <xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-      <xs:import namespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
-      <xs:element name="GetCustomCollection">
-        <xs:complexType>
-          <xs:sequence />
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetCustomCollectionResponse">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element minOccurs="0" name="GetCustomCollectionResult" nillable="true" type="q1:MyCollection" xmlns:q1="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetCustomCollection2">
-        <xs:complexType>
-          <xs:sequence />
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="GetCustomCollection2Response">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element minOccurs="0" name="GetCustomCollection2Result" nillable="true" type="q2:MyCollectionOfdouble" xmlns:q2="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-    </xs:schema>
-    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/">
-      <xs:element name="anyType" nillable="true" type="xs:anyType" />
-      <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
-      <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
-      <xs:element name="boolean" nillable="true" type="xs:boolean" />
-      <xs:element name="byte" nillable="true" type="xs:byte" />
-      <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
-      <xs:element name="decimal" nillable="true" type="xs:decimal" />
-      <xs:element name="double" nillable="true" type="xs:double" />
-      <xs:element name="float" nillable="true" type="xs:float" />
-      <xs:element name="int" nillable="true" type="xs:int" />
-      <xs:element name="long" nillable="true" type="xs:long" />
-      <xs:element name="QName" nillable="true" type="xs:QName" />
-      <xs:element name="short" nillable="true" type="xs:short" />
-      <xs:element name="string" nillable="true" type="xs:string" />
-      <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
-      <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
-      <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
-      <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
-      <xs:element name="char" nillable="true" type="tns:char" />
-      <xs:simpleType name="char">
-        <xs:restriction base="xs:int" />
-      </xs:simpleType>
-      <xs:element name="duration" nillable="true" type="tns:duration" />
-      <xs:simpleType name="duration">
-        <xs:restriction base="xs:duration">
-          <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
-          <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
-          <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
-        </xs:restriction>
-      </xs:simpleType>
-      <xs:element name="guid" nillable="true" type="tns:guid" />
-      <xs:simpleType name="guid">
-        <xs:restriction base="xs:string">
-          <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
-        </xs:restriction>
-      </xs:simpleType>
-      <xs:attribute name="FactoryType" type="xs:QName" />
-      <xs:attribute name="Id" type="xs:ID" />
-      <xs:attribute name="Ref" type="xs:IDREF" />
-    </xs:schema>
-    <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/TestWCF.Model">
-      <xs:complexType name="MyCollection">
-        <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="MyCollection" nillable="true" type="tns:MyCollection" />
-      <xs:complexType name="MyCollectionOfdouble">
-        <xs:annotation>
-          <xs:appinfo>
-            <GenericType Name="MyCollectionOf{0}" Namespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
-              <GenericParameter Name="double" Namespace="http://www.w3.org/2001/XMLSchema" />
-            </GenericType>
-          </xs:appinfo>
-        </xs:annotation>
-        <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="double" type="xs:double" />
-        </xs:sequence>
-      </xs:complexType>
-      <xs:element name="MyCollectionOfdouble" nillable="true" type="tns:MyCollectionOfdouble" />
-    </xs:schema>
-  </wsdl:types>
-  <wsdl:message name="IMyService_GetCustomCollection_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetCustomCollection" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetCustomCollection_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetCustomCollectionResponse" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetCustomCollection2_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetCustomCollection2" />
-  </wsdl:message>
-  <wsdl:message name="IMyService_GetCustomCollection2_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetCustomCollection2Response" />
-  </wsdl:message>
-  <wsdl:portType name="IMyService">
-    <wsdl:operation name="GetCustomCollection">
-      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetCustomCollection" message="tns:IMyService_GetCustomCollection_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetCustomCollectionResponse" message="tns:IMyService_GetCustomCollection_OutputMessage" />
-    </wsdl:operation>
-    <wsdl:operation name="GetCustomCollection2">
-      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetCustomCollection2" message="tns:IMyService_GetCustomCollection2_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetCustomCollection2Response" message="tns:IMyService_GetCustomCollection2_OutputMessage" />
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="defaultEndpoint" type="tns:IMyService">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
-    <wsdl:operation name="GetCustomCollection">
-      <soap:operation soapAction="http://tempuri.org/IMyService/GetCustomCollection" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetCustomCollection2">
-      <soap:operation soapAction="http://tempuri.org/IMyService/GetCustomCollection2" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="MyService">
-    <wsdl:port name="defaultEndpoint" binding="tns:defaultEndpoint">
-      <soap:address location="http://provcon-faust/TestWCF/MyService.svc" />
-    </wsdl:port>
-  </wsdl:service>
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions name="MyService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
+  <wsdl:types>
+    <xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+      <xs:import namespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
+      <xs:element name="GetCustomCollection">
+        <xs:complexType>
+          <xs:sequence />
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetCustomCollectionResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="GetCustomCollectionResult" nillable="true" type="q1:MyCollection" xmlns:q1="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetCustomCollection2">
+        <xs:complexType>
+          <xs:sequence />
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="GetCustomCollection2Response">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element minOccurs="0" name="GetCustomCollection2Result" nillable="true" type="q2:MyCollectionOfdouble" xmlns:q2="http://schemas.datacontract.org/2004/07/TestWCF.Model" />
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:schema>
+    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/">
+      <xs:element name="anyType" nillable="true" type="xs:anyType" />
+      <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+      <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+      <xs:element name="boolean" nillable="true" type="xs:boolean" />
+      <xs:element name="byte" nillable="true" type="xs:byte" />
+      <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+      <xs:element name="decimal" nillable="true" type="xs:decimal" />
+      <xs:element name="double" nillable="true" type="xs:double" />
+      <xs:element name="float" nillable="true" type="xs:float" />
+      <xs:element name="int" nillable="true" type="xs:int" />
+      <xs:element name="long" nillable="true" type="xs:long" />
+      <xs:element name="QName" nillable="true" type="xs:QName" />
+      <xs:element name="short" nillable="true" type="xs:short" />
+      <xs:element name="string" nillable="true" type="xs:string" />
+      <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+      <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+      <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+      <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+      <xs:element name="char" nillable="true" type="tns:char" />
+      <xs:simpleType name="char">
+        <xs:restriction base="xs:int" />
+      </xs:simpleType>
+      <xs:element name="duration" nillable="true" type="tns:duration" />
+      <xs:simpleType name="duration">
+        <xs:restriction base="xs:duration">
+          <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+          <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+          <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:element name="guid" nillable="true" type="tns:guid" />
+      <xs:simpleType name="guid">
+        <xs:restriction base="xs:string">
+          <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:attribute name="FactoryType" type="xs:QName" />
+      <xs:attribute name="Id" type="xs:ID" />
+      <xs:attribute name="Ref" type="xs:IDREF" />
+    </xs:schema>
+    <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/TestWCF.Model">
+      <xs:complexType name="MyCollection">
+        <xs:sequence>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="MyCollection" nillable="true" type="tns:MyCollection" />
+      <xs:complexType name="MyCollectionOfdouble">
+        <xs:annotation>
+          <xs:appinfo>
+            <GenericType Name="MyCollectionOf{0}" Namespace="http://schemas.datacontract.org/2004/07/TestWCF.Model" xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
+              <GenericParameter Name="double" Namespace="http://www.w3.org/2001/XMLSchema" />
+            </GenericType>
+          </xs:appinfo>
+        </xs:annotation>
+        <xs:sequence>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="double" type="xs:double" />
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="MyCollectionOfdouble" nillable="true" type="tns:MyCollectionOfdouble" />
+    </xs:schema>
+  </wsdl:types>
+  <wsdl:message name="IMyService_GetCustomCollection_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetCustomCollection" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetCustomCollection_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetCustomCollectionResponse" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetCustomCollection2_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetCustomCollection2" />
+  </wsdl:message>
+  <wsdl:message name="IMyService_GetCustomCollection2_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetCustomCollection2Response" />
+  </wsdl:message>
+  <wsdl:portType name="IMyService">
+    <wsdl:operation name="GetCustomCollection">
+      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetCustomCollection" message="tns:IMyService_GetCustomCollection_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetCustomCollectionResponse" message="tns:IMyService_GetCustomCollection_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetCustomCollection2">
+      <wsdl:input wsaw:Action="http://tempuri.org/IMyService/GetCustomCollection2" message="tns:IMyService_GetCustomCollection2_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IMyService/GetCustomCollection2Response" message="tns:IMyService_GetCustomCollection2_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="defaultEndpoint" type="tns:IMyService">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="GetCustomCollection">
+      <soap:operation soapAction="http://tempuri.org/IMyService/GetCustomCollection" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetCustomCollection2">
+      <soap:operation soapAction="http://tempuri.org/IMyService/GetCustomCollection2" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="MyService">
+    <wsdl:port name="defaultEndpoint" binding="tns:defaultEndpoint">
+      <soap:address location="http://provcon-faust/TestWCF/MyService.svc" />
+    </wsdl:port>
+  </wsdl:service>
 </wsdl:definitions>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/AttributesTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Runtime.Serialization/Test/System.Runtime.Serialization/AttributesTest.cs
@@ -1,75 +1,75 @@
-//
-// AttributesTest.cs
-//
-// Author:
-//	Eyal Alaluf <mainsoft.com>
-//
-// Copyright (C) 2008 Mainsoft.co http://www.mainsoft.com
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-//
-// This test code contains tests for attributes in System.Runtime.Serialization
-//
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Net;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Xml;
-using NUnit.Framework;
-
-namespace MonoTests.System.Runtime.Serialization
-{
-	[TestFixture]
-	public class AttributesTest
-	{
-		[Test]
-		public void TestContractNamespaceAttribute ()
-		{
-			ContractNamespaceAttribute x = new ContractNamespaceAttribute ("test");
-			Assert.AreEqual (null, x.ClrNamespace, "#01");
-			Assert.AreEqual ("test", x.ContractNamespace, "#02");
-		}
-
-		[Test]
-		public void TestDataContractAttribute ()
-		{
-			DataContractAttribute x = new DataContractAttribute ();
-			Assert.AreEqual (null, x.Name, "#01");
-			Assert.AreEqual (null, x.Namespace, "#02");
-		}
-
-		[Test]
-		public void TestDataMemberAttribute ()
-		{
-			DataMemberAttribute x = new DataMemberAttribute ();
-			Assert.AreEqual (null, x.Name, "#01");
-			Assert.AreEqual (-1, x.Order, "#02");
-			Assert.AreEqual (true, x.EmitDefaultValue, "#02");
-			Assert.AreEqual (false, x.IsRequired, "#02");
-		}
-	}
-}
+//
+// AttributesTest.cs
+//
+// Author:
+//	Eyal Alaluf <mainsoft.com>
+//
+// Copyright (C) 2008 Mainsoft.co http://www.mainsoft.com
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+//
+// This test code contains tests for attributes in System.Runtime.Serialization
+//
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO;
+using System.Net;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.Runtime.Serialization
+{
+	[TestFixture]
+	public class AttributesTest
+	{
+		[Test]
+		public void TestContractNamespaceAttribute ()
+		{
+			ContractNamespaceAttribute x = new ContractNamespaceAttribute ("test");
+			Assert.AreEqual (null, x.ClrNamespace, "#01");
+			Assert.AreEqual ("test", x.ContractNamespace, "#02");
+		}
+
+		[Test]
+		public void TestDataContractAttribute ()
+		{
+			DataContractAttribute x = new DataContractAttribute ();
+			Assert.AreEqual (null, x.Name, "#01");
+			Assert.AreEqual (null, x.Namespace, "#02");
+		}
+
+		[Test]
+		public void TestDataMemberAttribute ()
+		{
+			DataMemberAttribute x = new DataMemberAttribute ();
+			Assert.AreEqual (null, x.Name, "#01");
+			Assert.AreEqual (-1, x.Order, "#02");
+			Assert.AreEqual (true, x.EmitDefaultValue, "#02");
+			Assert.AreEqual (false, x.IsRequired, "#02");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Security/System.Security.Cryptography.Xml/XmlDsigNodeList.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Security/System.Security.Cryptography.Xml/XmlDsigNodeList.cs
@@ -1,13 +1,13 @@
-//
-// XmlDsigNodeList.cs - derived node list class for dsig
-//
-// Author:
-//	Atsushi Enomoto <atsushi@ximian.com>
-//
-// (C)2004 Novell Inc.
-//
-// This class is mostly copied from System.Xml/XmlNodeArrayList.cs
-//
+//
+// XmlDsigNodeList.cs - derived node list class for dsig
+//
+// Author:
+//	Atsushi Enomoto <atsushi@ximian.com>
+//
+// (C)2004 Novell Inc.
+//
+// This class is mostly copied from System.Xml/XmlNodeArrayList.cs
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,37 +29,37 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-using System.Collections;
-using System.Xml;
-
-namespace System.Security.Cryptography.Xml
-{
-	// Copied from XmlNodeArrayList.cs
-	internal class XmlDsigNodeList : XmlNodeList
-	{
-		ArrayList _rgNodes;
-
-		public XmlDsigNodeList (ArrayList rgNodes)
-		{
-			_rgNodes = rgNodes;
-		}
-
-		public override int Count { get { return _rgNodes.Count; } }
-
-		public override IEnumerator GetEnumerator ()
-		{
-			return _rgNodes.GetEnumerator ();
-		}
-
-		public override XmlNode Item (int index)
-		{
-			// Return null if index is out of range. by  DOM design.
-			if (index < 0 || _rgNodes.Count <= index)
-				return null;
-
-			return (XmlNode) _rgNodes [index];
-		}
-	}
-}
+
+using System;
+using System.Collections;
+using System.Xml;
+
+namespace System.Security.Cryptography.Xml
+{
+	// Copied from XmlNodeArrayList.cs
+	internal class XmlDsigNodeList : XmlNodeList
+	{
+		ArrayList _rgNodes;
+
+		public XmlDsigNodeList (ArrayList rgNodes)
+		{
+			_rgNodes = rgNodes;
+		}
+
+		public override int Count { get { return _rgNodes.Count; } }
+
+		public override IEnumerator GetEnumerator ()
+		{
+			return _rgNodes.GetEnumerator ();
+		}
+
+		public override XmlNode Item (int index)
+		{
+			// Return null if index is out of range. by  DOM design.
+			if (index < 0 || _rgNodes.Count <= index)
+				return null;
+
+			return (XmlNode) _rgNodes [index];
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Security/System.Security.Cryptography/ProtectedData.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Security/System.Security.Cryptography/ProtectedData.cs
@@ -1,165 +1,165 @@
-//
-// ProtectedData.cs: Protect (encrypt) data without (user involved) key management
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-
-using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-using Mono.Security.Cryptography;
-
-namespace System.Security.Cryptography {
-
-	// References:
-	// a.	Windows Data Protection
-	//	http://msdn.microsoft.com/library/en-us/dnsecure/html/windataprotection-dpapi.asp?frame=true
-
-	public sealed class ProtectedData {
-
-		private ProtectedData ()
-		{
-		}
-
-// FIXME	[DataProtectionPermission (SecurityAction.Demand, ProtectData = true)]
-		public static byte[] Protect (byte[] userData, byte[] optionalEntropy, DataProtectionScope scope) 
-		{
-			if (userData == null)
-				throw new ArgumentNullException ("userData");
-
-			// on Windows this is supported only under 2000 and later OS
-			Check (scope);
-
-			switch (impl) {
-#if !MOBILE
-			case DataProtectionImplementation.ManagedProtection:
-				try {
-					return ManagedProtection.Protect (userData, optionalEntropy, scope);
-				}
-				catch (Exception e) {
-					string msg = Locale.GetText ("Data protection failed.");
-					throw new CryptographicException (msg, e);
-				}
-			case DataProtectionImplementation.Win32CryptoProtect:
-				try {
-					return NativeDapiProtection.Protect (userData, optionalEntropy, scope);
-				}
-				catch (Exception e) {
-					string msg = Locale.GetText ("Data protection failed.");
-					throw new CryptographicException (msg, e);
-				}
-#endif
-			default:
-				throw new PlatformNotSupportedException ();
-			}
-		}
-
-// FIXME	[DataProtectionPermission (SecurityAction.Demand, UnprotectData = true)]
-		public static byte[] Unprotect (byte[] encryptedData, byte[] optionalEntropy, DataProtectionScope scope) 
-		{
-			if (encryptedData == null)
-				throw new ArgumentNullException ("encryptedData");
-
-			// on Windows this is supported only under 2000 and later OS
-			Check (scope);
-
-			switch (impl) {
-#if !MOBILE
-			case DataProtectionImplementation.ManagedProtection:
-				try {
-					return ManagedProtection.Unprotect (encryptedData, optionalEntropy, scope);
-				}
-				catch (Exception e) {
-					string msg = Locale.GetText ("Data unprotection failed.");
-					throw new CryptographicException (msg, e);
-				}
-			case DataProtectionImplementation.Win32CryptoProtect:
-				try {
-					return NativeDapiProtection.Unprotect (encryptedData, optionalEntropy, scope);
-				}
-				catch (Exception e) {
-					string msg = Locale.GetText ("Data unprotection failed.");
-					throw new CryptographicException (msg, e);
-				}
-#endif
-			default:
-				throw new PlatformNotSupportedException ();
-			}
-		}
-
-		// private stuff
-
-		enum DataProtectionImplementation {
-			Unknown,
-			Win32CryptoProtect,
-			ManagedProtection,
-			Unsupported = Int32.MinValue
-		}
-
-		private static DataProtectionImplementation impl;
-
-		private static void Detect ()
-		{
-			OperatingSystem os = Environment.OSVersion;
-			switch (os.Platform) {
-			case PlatformID.Win32NT:
-				Version v = os.Version;
-				if (v.Major < 5) {
-					impl = DataProtectionImplementation.Unsupported;
-				} else {
-					// Windows 2000 (5.0) and later
-					impl = DataProtectionImplementation.Win32CryptoProtect;
-				}
-				break;
-			case PlatformID.Unix:
-				impl = DataProtectionImplementation.ManagedProtection;
-				break;
-			default:
-				impl = DataProtectionImplementation.Unsupported;
-				break;
-			}
-		}
-
-		private static void Check (DataProtectionScope scope)
-		{
-			if ((scope < DataProtectionScope.CurrentUser) || (scope > DataProtectionScope.LocalMachine)) {
-				string msg = Locale.GetText ("Invalid enum value '{0}' for '{1}'.", 
-					scope, "DataProtectionScope");
-				throw new ArgumentException (msg, "scope");
-			}
-
-			switch (impl) {
-			case DataProtectionImplementation.Unknown:
-				Detect ();
-				break;
-			case DataProtectionImplementation.Unsupported:
-				throw new PlatformNotSupportedException ();
-			}
-		}
-	}
-}
-
+//
+// ProtectedData.cs: Protect (encrypt) data without (user involved) key management
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+
+using System.Runtime.InteropServices;
+using System.Security.Permissions;
+
+using Mono.Security.Cryptography;
+
+namespace System.Security.Cryptography {
+
+	// References:
+	// a.	Windows Data Protection
+	//	http://msdn.microsoft.com/library/en-us/dnsecure/html/windataprotection-dpapi.asp?frame=true
+
+	public sealed class ProtectedData {
+
+		private ProtectedData ()
+		{
+		}
+
+// FIXME	[DataProtectionPermission (SecurityAction.Demand, ProtectData = true)]
+		public static byte[] Protect (byte[] userData, byte[] optionalEntropy, DataProtectionScope scope) 
+		{
+			if (userData == null)
+				throw new ArgumentNullException ("userData");
+
+			// on Windows this is supported only under 2000 and later OS
+			Check (scope);
+
+			switch (impl) {
+#if !MOBILE
+			case DataProtectionImplementation.ManagedProtection:
+				try {
+					return ManagedProtection.Protect (userData, optionalEntropy, scope);
+				}
+				catch (Exception e) {
+					string msg = Locale.GetText ("Data protection failed.");
+					throw new CryptographicException (msg, e);
+				}
+			case DataProtectionImplementation.Win32CryptoProtect:
+				try {
+					return NativeDapiProtection.Protect (userData, optionalEntropy, scope);
+				}
+				catch (Exception e) {
+					string msg = Locale.GetText ("Data protection failed.");
+					throw new CryptographicException (msg, e);
+				}
+#endif
+			default:
+				throw new PlatformNotSupportedException ();
+			}
+		}
+
+// FIXME	[DataProtectionPermission (SecurityAction.Demand, UnprotectData = true)]
+		public static byte[] Unprotect (byte[] encryptedData, byte[] optionalEntropy, DataProtectionScope scope) 
+		{
+			if (encryptedData == null)
+				throw new ArgumentNullException ("encryptedData");
+
+			// on Windows this is supported only under 2000 and later OS
+			Check (scope);
+
+			switch (impl) {
+#if !MOBILE
+			case DataProtectionImplementation.ManagedProtection:
+				try {
+					return ManagedProtection.Unprotect (encryptedData, optionalEntropy, scope);
+				}
+				catch (Exception e) {
+					string msg = Locale.GetText ("Data unprotection failed.");
+					throw new CryptographicException (msg, e);
+				}
+			case DataProtectionImplementation.Win32CryptoProtect:
+				try {
+					return NativeDapiProtection.Unprotect (encryptedData, optionalEntropy, scope);
+				}
+				catch (Exception e) {
+					string msg = Locale.GetText ("Data unprotection failed.");
+					throw new CryptographicException (msg, e);
+				}
+#endif
+			default:
+				throw new PlatformNotSupportedException ();
+			}
+		}
+
+		// private stuff
+
+		enum DataProtectionImplementation {
+			Unknown,
+			Win32CryptoProtect,
+			ManagedProtection,
+			Unsupported = Int32.MinValue
+		}
+
+		private static DataProtectionImplementation impl;
+
+		private static void Detect ()
+		{
+			OperatingSystem os = Environment.OSVersion;
+			switch (os.Platform) {
+			case PlatformID.Win32NT:
+				Version v = os.Version;
+				if (v.Major < 5) {
+					impl = DataProtectionImplementation.Unsupported;
+				} else {
+					// Windows 2000 (5.0) and later
+					impl = DataProtectionImplementation.Win32CryptoProtect;
+				}
+				break;
+			case PlatformID.Unix:
+				impl = DataProtectionImplementation.ManagedProtection;
+				break;
+			default:
+				impl = DataProtectionImplementation.Unsupported;
+				break;
+			}
+		}
+
+		private static void Check (DataProtectionScope scope)
+		{
+			if ((scope < DataProtectionScope.CurrentUser) || (scope > DataProtectionScope.LocalMachine)) {
+				string msg = Locale.GetText ("Invalid enum value '{0}' for '{1}'.", 
+					scope, "DataProtectionScope");
+				throw new ArgumentException (msg, "scope");
+			}
+
+			switch (impl) {
+			case DataProtectionImplementation.Unknown:
+				Detect ();
+				break;
+			case DataProtectionImplementation.Unsupported:
+				throw new PlatformNotSupportedException ();
+			}
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Security/System.Security.Cryptography/ProtectedMemory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Security/System.Security.Cryptography/ProtectedMemory.cs
@@ -44,159 +44,159 @@ namespace System.Security.Cryptography {
 		{
 		}
 
-		[MonoTODO ("only supported on Windows 2000 SP3 and later")]
-// FIXME	[DataProtectionPermission (SecurityAction.Demand, ProtectMemory = true)]
+		[MonoTODO ("only supported on Windows 2000 SP3 and later")]
+// FIXME	[DataProtectionPermission (SecurityAction.Demand, ProtectMemory = true)]
 		public static void Protect (byte[] userData, MemoryProtectionScope scope) 
 		{
 			if (userData == null)
-				throw new ArgumentNullException ("userData");
-
-			Check (userData.Length, scope);
-			try {
-				uint flags = (uint) scope;
-				uint length = (uint) userData.Length;
-
-				switch (impl) {
-				case MemoryProtectionImplementation.Win32RtlEncryptMemory:
-					int err = RtlEncryptMemory (userData, length, flags);
-					if (err < 0) {
-						string msg = Locale.GetText ("Error. NTSTATUS = {0}.", err);
-						throw new CryptographicException (msg);
-					}
-					break;
-				case MemoryProtectionImplementation.Win32CryptoProtect:
-					bool result = CryptProtectMemory (userData, length, flags);
-					if (!result)
-						throw new CryptographicException (Marshal.GetLastWin32Error ());
-					break;
-				default:
-					throw new PlatformNotSupportedException ();
-				}
-			}
-			catch {
-				// Windows 2000 before SP3 will throw
-				impl = MemoryProtectionImplementation.Unsupported;
-				throw new PlatformNotSupportedException ();
-			}
-		}
-
-		[MonoTODO ("only supported on Windows 2000 SP3 and later")]
-// FIXME	[DataProtectionPermission (SecurityAction.Demand, UnprotectMemory = true)]
+				throw new ArgumentNullException ("userData");
+
+			Check (userData.Length, scope);
+			try {
+				uint flags = (uint) scope;
+				uint length = (uint) userData.Length;
+
+				switch (impl) {
+				case MemoryProtectionImplementation.Win32RtlEncryptMemory:
+					int err = RtlEncryptMemory (userData, length, flags);
+					if (err < 0) {
+						string msg = Locale.GetText ("Error. NTSTATUS = {0}.", err);
+						throw new CryptographicException (msg);
+					}
+					break;
+				case MemoryProtectionImplementation.Win32CryptoProtect:
+					bool result = CryptProtectMemory (userData, length, flags);
+					if (!result)
+						throw new CryptographicException (Marshal.GetLastWin32Error ());
+					break;
+				default:
+					throw new PlatformNotSupportedException ();
+				}
+			}
+			catch {
+				// Windows 2000 before SP3 will throw
+				impl = MemoryProtectionImplementation.Unsupported;
+				throw new PlatformNotSupportedException ();
+			}
+		}
+
+		[MonoTODO ("only supported on Windows 2000 SP3 and later")]
+// FIXME	[DataProtectionPermission (SecurityAction.Demand, UnprotectMemory = true)]
 		public static void Unprotect (byte[] encryptedData, MemoryProtectionScope scope) 
 		{
 			if (encryptedData == null)
-				throw new ArgumentNullException ("encryptedData");
-
-			Check (encryptedData.Length, scope);
-			try {
-				uint flags = (uint) scope;
-				uint length = (uint) encryptedData.Length;
-
-				switch (impl) {
-				case MemoryProtectionImplementation.Win32RtlEncryptMemory:
-					int err = RtlDecryptMemory (encryptedData, length, flags);
-					if (err < 0) {
-						string msg = Locale.GetText ("Error. NTSTATUS = {0}.", err);
-						throw new CryptographicException (msg);
-					}
-					break;
-				case MemoryProtectionImplementation.Win32CryptoProtect:
-					bool result = CryptUnprotectMemory (encryptedData, length, flags);
-					if (!result)
-						throw new CryptographicException (Marshal.GetLastWin32Error ());
-					break;
-				default:
-					throw new PlatformNotSupportedException ();
-				}
-			}
-			catch {
-				// Windows 2000 before SP3 will throw
-				impl = MemoryProtectionImplementation.Unsupported;
-				throw new PlatformNotSupportedException ();
-			}
-		}
-
-		// private stuff
-
-		private const int BlockSize = 16;
-
-		enum MemoryProtectionImplementation {
-			Unknown,
-			Win32RtlEncryptMemory,
-			Win32CryptoProtect,
-			Unsupported = Int32.MinValue
-		}
-
-		private static MemoryProtectionImplementation impl;
-
-		private static void Detect ()
-		{
-			OperatingSystem os = Environment.OSVersion;
-			switch (os.Platform) {
-			case PlatformID.Win32NT:
-				Version v = os.Version;
-				if (v.Major < 5) {
-					impl = MemoryProtectionImplementation.Unsupported;
-				} else if (v.Major == 5) {
-					if (v.Minor < 2) {
-						// 2000 (5.0) Service Pack 3 and XP (5.1)
-						impl = MemoryProtectionImplementation.Win32RtlEncryptMemory;
-					} else {
-						impl = MemoryProtectionImplementation.Win32CryptoProtect;
-					}
-				} else {
-					// vista (6.0) and later
-					impl = MemoryProtectionImplementation.Win32CryptoProtect;
-				}
-				break;
-			default:
-				impl = MemoryProtectionImplementation.Unsupported;
-				break;
-			}
-		}
-
+				throw new ArgumentNullException ("encryptedData");
+
+			Check (encryptedData.Length, scope);
+			try {
+				uint flags = (uint) scope;
+				uint length = (uint) encryptedData.Length;
+
+				switch (impl) {
+				case MemoryProtectionImplementation.Win32RtlEncryptMemory:
+					int err = RtlDecryptMemory (encryptedData, length, flags);
+					if (err < 0) {
+						string msg = Locale.GetText ("Error. NTSTATUS = {0}.", err);
+						throw new CryptographicException (msg);
+					}
+					break;
+				case MemoryProtectionImplementation.Win32CryptoProtect:
+					bool result = CryptUnprotectMemory (encryptedData, length, flags);
+					if (!result)
+						throw new CryptographicException (Marshal.GetLastWin32Error ());
+					break;
+				default:
+					throw new PlatformNotSupportedException ();
+				}
+			}
+			catch {
+				// Windows 2000 before SP3 will throw
+				impl = MemoryProtectionImplementation.Unsupported;
+				throw new PlatformNotSupportedException ();
+			}
+		}
+
+		// private stuff
+
+		private const int BlockSize = 16;
+
+		enum MemoryProtectionImplementation {
+			Unknown,
+			Win32RtlEncryptMemory,
+			Win32CryptoProtect,
+			Unsupported = Int32.MinValue
+		}
+
+		private static MemoryProtectionImplementation impl;
+
+		private static void Detect ()
+		{
+			OperatingSystem os = Environment.OSVersion;
+			switch (os.Platform) {
+			case PlatformID.Win32NT:
+				Version v = os.Version;
+				if (v.Major < 5) {
+					impl = MemoryProtectionImplementation.Unsupported;
+				} else if (v.Major == 5) {
+					if (v.Minor < 2) {
+						// 2000 (5.0) Service Pack 3 and XP (5.1)
+						impl = MemoryProtectionImplementation.Win32RtlEncryptMemory;
+					} else {
+						impl = MemoryProtectionImplementation.Win32CryptoProtect;
+					}
+				} else {
+					// vista (6.0) and later
+					impl = MemoryProtectionImplementation.Win32CryptoProtect;
+				}
+				break;
+			default:
+				impl = MemoryProtectionImplementation.Unsupported;
+				break;
+			}
+		}
+
 		private static void Check (int size, MemoryProtectionScope scope)
-		{
-			if (size % BlockSize != 0) {
-				string msg = Locale.GetText ("Not a multiple of {0} bytes.", BlockSize);
-				throw new CryptographicException (msg);
+		{
+			if (size % BlockSize != 0) {
+				string msg = Locale.GetText ("Not a multiple of {0} bytes.", BlockSize);
+				throw new CryptographicException (msg);
 			}
 
 			if ((scope < MemoryProtectionScope.SameProcess) || (scope > MemoryProtectionScope.SameLogon)) {
 				string msg = Locale.GetText ("Invalid enum value for '{0}'.", "MemoryProtectionScope");
 				throw new ArgumentException (msg, "scope");
-			}
-
-			switch (impl) {
-			case MemoryProtectionImplementation.Unknown:
-				Detect ();
-				break;
-			case MemoryProtectionImplementation.Unsupported:
-				throw new PlatformNotSupportedException ();
-			}
-		}
-
-		// http://msdn.microsoft.com/library/en-us/dncode/html/secure06122003.asp
-		// Summary: CryptProtectMemory and CryptUnprotectMemory exists only in Windows 2003 +
-		// but they are available in advapi32.dll as RtlEncryptMemory (SystemFunction040) and
-		// RtlDecryptMemory (SystemFunction041) since Windows 2000 SP 3. Sadly both can disappear
+			}
+
+			switch (impl) {
+			case MemoryProtectionImplementation.Unknown:
+				Detect ();
+				break;
+			case MemoryProtectionImplementation.Unsupported:
+				throw new PlatformNotSupportedException ();
+			}
+		}
+
+		// http://msdn.microsoft.com/library/en-us/dncode/html/secure06122003.asp
+		// Summary: CryptProtectMemory and CryptUnprotectMemory exists only in Windows 2003 +
+		// but they are available in advapi32.dll as RtlEncryptMemory (SystemFunction040) and
+		// RtlDecryptMemory (SystemFunction041) since Windows 2000 SP 3. Sadly both can disappear
 		// anytime with newer OS so we include support for Crypt[Unp|P]rotectMemory too.
 
 		[SuppressUnmanagedCodeSecurity]
-		[DllImport ("advapi32.dll", EntryPoint="SystemFunction040", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
-		private static extern int RtlEncryptMemory (byte[] pData, uint cbData, uint dwFlags);
-
-		[SuppressUnmanagedCodeSecurity]
-		[DllImport ("advapi32.dll", EntryPoint = "SystemFunction041", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
-		private static extern int RtlDecryptMemory (byte[] pData, uint cbData, uint dwFlags);
-
-		[SuppressUnmanagedCodeSecurity]
-		[DllImport ("crypt32.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
-		private static extern bool CryptProtectMemory (byte[] pData, uint cbData, uint dwFlags);
-
-		[SuppressUnmanagedCodeSecurity]
-		[DllImport ("crypt32.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
-		private static extern bool CryptUnprotectMemory (byte[] pData, uint cbData, uint dwFlags);
+		[DllImport ("advapi32.dll", EntryPoint="SystemFunction040", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
+		private static extern int RtlEncryptMemory (byte[] pData, uint cbData, uint dwFlags);
+
+		[SuppressUnmanagedCodeSecurity]
+		[DllImport ("advapi32.dll", EntryPoint = "SystemFunction041", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
+		private static extern int RtlDecryptMemory (byte[] pData, uint cbData, uint dwFlags);
+
+		[SuppressUnmanagedCodeSecurity]
+		[DllImport ("crypt32.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
+		private static extern bool CryptProtectMemory (byte[] pData, uint cbData, uint dwFlags);
+
+		[SuppressUnmanagedCodeSecurity]
+		[DllImport ("crypt32.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
+		private static extern bool CryptUnprotectMemory (byte[] pData, uint cbData, uint dwFlags);
 	} 
 }
 
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Security/Test/System.Security.Cryptography.Xml/EncryptedXmlSample3.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Security/Test/System.Security.Cryptography.Xml/EncryptedXmlSample3.xml
@@ -1,51 +1,51 @@
-<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
-  <s:Header>
-    <a:Action s:mustUnderstand="1">http://tempuri.org/IFoo/Echo</a:Action>
-    <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
-      <o:BinarySecurityToken xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" u:Id="urn:uuid:d131b595-0752-437d-8c5e-7b2a98a2f45b">MIIBxTCCAS6gAwIBAgIQdpYkgiI1/kOLutzrMY5i1DANBgkqhkiG9w0BAQUFADAgMR4wHAYDVQQDExVNb25vIFRlc3QgUm9vdCBBZ2VuY3kwHhcNMDYwNzIxMDYzODUzWhcNMzkxMjMxMDk1OTU5WjAkMSIwIAYDVQQDExlQb3Vwb3Uncy1Tb2Z0d2FyZS1GYWN0b3J5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDSD0FU/Ymimao4JYiqVsgMYCVM1iRrfWtQwJ1/qUMfGj8GgmXyBcGxUz/cjpkn5n/TlzNVanjnNRYJS0FZifd4AbRnA3kON3R+YHKjWwzPqwoFHA7UQgRrrR7/QmuHOlXBPDOd/SgKjRtz6uWN2er0nYkwJyp/ihUktx1PLu7CWQIBETANBgkqhkiG9w0BAQUFAAOBgQCJzIlI/aUcM6/KHi6pgBJ77YbUcTXAlVFF7IPvOcVggC+OTXiRGK4tw5Q76QJK86HBE4QdUOd01eASPfJwCFNCq3X8g0bWRAukny8YON7XcLNP3psXRvNp2rudvSFJr51Eq1XtngZHMPDAFYCl4cBXvnlQZBwaHaWMGgngRCKnNA==</o:BinarySecurityToken>
-      <o:BinarySecurityToken xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" u:Id="urn:uuid:141b30e1-dd56-4310-a7f8-49c5a12ec43c">MIIBxTCCAS6gAwIBAgIQEee/K4+0mkmJA5E1MkwZvzANBgkqhkiG9w0BAQUFADAgMR4wHAYDVQQDExVNb25vIFRlc3QgUm9vdCBBZ2VuY3kwHhcNMDYwOTExMDc1MTI5WhcNMzkxMjMxMDk1OTU5WjAkMSIwIAYDVQQDExlQb3Vwb3Uncy1Tb2Z0d2FyZS1GYWN0b3J5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCklg/n5bi6DYjx5r1sU0zDtXjC23e/aMQIqSZZU2S9x1Guf146AYwaDnSNUR1dUOwIVqbtf/Hud10i/SObG9enp/WNX7dT72XIqY9SHLhPv2BtK3rqCv27RyYnjLjuhvh9RQnrAR1A74TOWaOUFtPPbgkPVUPMfZOchcwc01kiSQIBETANBgkqhkiG9w0BAQUFAAOBgQA8VkJvtMigFi4jDC8+/t8ycmWo0YmrPJWMPtTCogRmbr4fin1mR4DPilU0XMycJGNDFcmRscqIb+iFOU4HbFqItSXZ7R8AVy5lInHMqY4dII+tau0HlBsog77eqzqjcEvaQuL7p5/Pj8jsjJPrqL6KbWfE7Q6irLFrAWqRghHO7Q==</o:BinarySecurityToken>
-      <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
-        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
-        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
-          <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
-            <o:Reference URI="#urn:uuid:141b30e1-dd56-4310-a7f8-49c5a12ec43c" />
-          </o:SecurityTokenReference>
-        </KeyInfo>
-        <CipherData>
-          <CipherValue>CK8Oq5Yz0nDJr3lnXKorGloFU2SNdNxUjOJr29G3yZpBcWZs6DMQ74lkD2P+AE8lpNqSYdWSvKIyQp/RWZ+h8iSVZbk7fNQDsrgzHACaZt+IrLZ+9fp2bduMvW5arCLcyqQx6xyo1b71a6oClii9+4h/pU2yZknIgkbJkGVRI2k=</CipherValue>
-        </CipherData>
-        <ReferenceList>
-          <DataReference URI="_0" />
-        </ReferenceList>
-      </EncryptedKey>
-      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
-        <SignedInfo>
-          <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-          <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
-          <Reference URI="">
-            <Transforms>
-              <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
-            </Transforms>
-            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
-            <DigestValue>jERSBUIODT8GyYVl3vGZ9xol0ew=</DigestValue>
-          </Reference>
-        </SignedInfo>
-        <SignatureValue>YUmjsLb7VrLcG0SgpeyXJYEfyYeXBdwJTGm3z+Dd/koGPeCWZF7+B269oH0V+o8kMsob8G2es3tCdNv6Lrx3RE0dvUY2CWzrMzwa8kCI7B8g+jCoPvhZE8IEo0FNiqlEIC75iVino5XS9qFbiQG7U9/ORLO2A3F1WiZQe/wk7sM=</SignatureValue>
-        <KeyInfo>
-          <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
-            <o:Reference URI="#urn:uuid:d131b595-0752-437d-8c5e-7b2a98a2f45b" />
-          </o:SecurityTokenReference>
-        </KeyInfo>
-      </Signature>
-    </Security>
-  </s:Header>
-  <s:Body>
-    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
-      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
-      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#" />
-      <CipherData>
-        <CipherValue>bjfhChAWBuDrMmsnyyEw7zejIp1s8eMG6DUTXlX/7CsBPOkhmiHS1gPrtJ0ovbWJRA+E+FsD/maIKocUrqclUYa86/9JM+Qa3nN+OBVxX5cYp1T6wsJUuotRPV8bzz+p</CipherValue>
-      </CipherData>
-    </EncryptedData>
-  </s:Body>
-</s:Envelope>
+<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
+  <s:Header>
+    <a:Action s:mustUnderstand="1">http://tempuri.org/IFoo/Echo</a:Action>
+    <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
+      <o:BinarySecurityToken xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" u:Id="urn:uuid:d131b595-0752-437d-8c5e-7b2a98a2f45b">MIIBxTCCAS6gAwIBAgIQdpYkgiI1/kOLutzrMY5i1DANBgkqhkiG9w0BAQUFADAgMR4wHAYDVQQDExVNb25vIFRlc3QgUm9vdCBBZ2VuY3kwHhcNMDYwNzIxMDYzODUzWhcNMzkxMjMxMDk1OTU5WjAkMSIwIAYDVQQDExlQb3Vwb3Uncy1Tb2Z0d2FyZS1GYWN0b3J5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDSD0FU/Ymimao4JYiqVsgMYCVM1iRrfWtQwJ1/qUMfGj8GgmXyBcGxUz/cjpkn5n/TlzNVanjnNRYJS0FZifd4AbRnA3kON3R+YHKjWwzPqwoFHA7UQgRrrR7/QmuHOlXBPDOd/SgKjRtz6uWN2er0nYkwJyp/ihUktx1PLu7CWQIBETANBgkqhkiG9w0BAQUFAAOBgQCJzIlI/aUcM6/KHi6pgBJ77YbUcTXAlVFF7IPvOcVggC+OTXiRGK4tw5Q76QJK86HBE4QdUOd01eASPfJwCFNCq3X8g0bWRAukny8YON7XcLNP3psXRvNp2rudvSFJr51Eq1XtngZHMPDAFYCl4cBXvnlQZBwaHaWMGgngRCKnNA==</o:BinarySecurityToken>
+      <o:BinarySecurityToken xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" u:Id="urn:uuid:141b30e1-dd56-4310-a7f8-49c5a12ec43c">MIIBxTCCAS6gAwIBAgIQEee/K4+0mkmJA5E1MkwZvzANBgkqhkiG9w0BAQUFADAgMR4wHAYDVQQDExVNb25vIFRlc3QgUm9vdCBBZ2VuY3kwHhcNMDYwOTExMDc1MTI5WhcNMzkxMjMxMDk1OTU5WjAkMSIwIAYDVQQDExlQb3Vwb3Uncy1Tb2Z0d2FyZS1GYWN0b3J5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCklg/n5bi6DYjx5r1sU0zDtXjC23e/aMQIqSZZU2S9x1Guf146AYwaDnSNUR1dUOwIVqbtf/Hud10i/SObG9enp/WNX7dT72XIqY9SHLhPv2BtK3rqCv27RyYnjLjuhvh9RQnrAR1A74TOWaOUFtPPbgkPVUPMfZOchcwc01kiSQIBETANBgkqhkiG9w0BAQUFAAOBgQA8VkJvtMigFi4jDC8+/t8ycmWo0YmrPJWMPtTCogRmbr4fin1mR4DPilU0XMycJGNDFcmRscqIb+iFOU4HbFqItSXZ7R8AVy5lInHMqY4dII+tau0HlBsog77eqzqjcEvaQuL7p5/Pj8jsjJPrqL6KbWfE7Q6irLFrAWqRghHO7Q==</o:BinarySecurityToken>
+      <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
+        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+          <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
+            <o:Reference URI="#urn:uuid:141b30e1-dd56-4310-a7f8-49c5a12ec43c" />
+          </o:SecurityTokenReference>
+        </KeyInfo>
+        <CipherData>
+          <CipherValue>CK8Oq5Yz0nDJr3lnXKorGloFU2SNdNxUjOJr29G3yZpBcWZs6DMQ74lkD2P+AE8lpNqSYdWSvKIyQp/RWZ+h8iSVZbk7fNQDsrgzHACaZt+IrLZ+9fp2bduMvW5arCLcyqQx6xyo1b71a6oClii9+4h/pU2yZknIgkbJkGVRI2k=</CipherValue>
+        </CipherData>
+        <ReferenceList>
+          <DataReference URI="_0" />
+        </ReferenceList>
+      </EncryptedKey>
+      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+        <SignedInfo>
+          <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+          <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+          <Reference URI="">
+            <Transforms>
+              <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+            </Transforms>
+            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+            <DigestValue>jERSBUIODT8GyYVl3vGZ9xol0ew=</DigestValue>
+          </Reference>
+        </SignedInfo>
+        <SignatureValue>YUmjsLb7VrLcG0SgpeyXJYEfyYeXBdwJTGm3z+Dd/koGPeCWZF7+B269oH0V+o8kMsob8G2es3tCdNv6Lrx3RE0dvUY2CWzrMzwa8kCI7B8g+jCoPvhZE8IEo0FNiqlEIC75iVino5XS9qFbiQG7U9/ORLO2A3F1WiZQe/wk7sM=</SignatureValue>
+        <KeyInfo>
+          <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
+            <o:Reference URI="#urn:uuid:d131b595-0752-437d-8c5e-7b2a98a2f45b" />
+          </o:SecurityTokenReference>
+        </KeyInfo>
+      </Signature>
+    </Security>
+  </s:Header>
+  <s:Body>
+    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#" />
+      <CipherData>
+        <CipherValue>bjfhChAWBuDrMmsnyyEw7zejIp1s8eMG6DUTXlX/7CsBPOkhmiHS1gPrtJ0ovbWJRA+E+FsD/maIKocUrqclUYa86/9JM+Qa3nN+OBVxX5cYp1T6wsJUuotRPV8bzz+p</CipherValue>
+      </CipherData>
+    </EncryptedData>
+  </s:Body>
+</s:Envelope>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs
@@ -1,174 +1,174 @@
-﻿//
-// WebServiceHostTest.cs
-//
-// Author:
-//	Igor Zelmanovich  <igorz@mainsoft.com>
-//
-// Copyright (C) 2008 Mainsoft, Inc (http://www.mainsoft.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-#if !MOBILE
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using System.ServiceModel;
-using System.ServiceModel.Web;
-using System.ServiceModel.Description;
-using System.ServiceModel.Dispatcher;
-using System.Net;
-
-using MonoTests.Helpers;
-
-namespace MonoTests.System.ServiceModel.Web
-{
-	[TestFixture]
-	public class WebServiceHostTest
-	{
-		[Test]
-		[Category("NotWorking")]
-		public void ServiceDebugBehaviorTest () {
-
-			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
-			ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
-
-			Assert.AreEqual (true, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageEnabled, "HttpHelpPageEnabled #1");
-			Assert.AreEqual (true, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpsHelpPageEnabled, "HttpsHelpPageEnabled #1");
-
-			host.Open ();
-
-			Assert.AreEqual (false, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageEnabled, "HttpHelpPageEnabled #2");
-			Assert.AreEqual (false, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpsHelpPageEnabled, "HttpsHelpPageEnabled #2");
-
-			host.Close ();
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void WebHttpBehaviorTest1 () {
-
-			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
-			ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
-			ServiceEndpoint basicHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new BasicHttpBinding (), "BasicHttpBinding");
-
-			Assert.AreEqual (0, webHttp.Behaviors.Count, "webHttp.Behaviors.Count #1");
-			Assert.AreEqual (0, basicHttp.Behaviors.Count, "basicHttp.Behaviors.Count #1");
-
-			host.Open ();
-
-			Assert.AreEqual (1, webHttp.Behaviors.Count, "webHttp.Behaviors.Count #2");
-			Assert.AreEqual (typeof (WebHttpBehavior), webHttp.Behaviors [0].GetType (), "behavior type");
-			Assert.AreEqual (0, basicHttp.Behaviors.Count, "basicHttp.Behaviors.Count #2");
-
-			host.Close ();
-		}
-
-		[Test]
-		[Category("NotWorking")]
-		public void WebHttpBehaviorTest2 () {
-
-			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
-			ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
-			MyWebHttpBehavior behavior = new MyWebHttpBehavior ();
-			behavior.ApplyDispatchBehaviorBegin += delegate {
-				Assert.AreEqual (typeof (EndpointAddressMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].AddressFilter.GetType (), "AddressFilter.GetType #1");
-				Assert.AreEqual (typeof (ActionMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].ContractFilter.GetType (), "ContractFilter.GetType #1");
-			};
-			behavior.ApplyDispatchBehaviorEnd += delegate {
-				Assert.AreEqual (typeof (PrefixEndpointAddressMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].AddressFilter.GetType (), "AddressFilter.GetType #2");
-				Assert.AreEqual (typeof (MatchAllMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].ContractFilter.GetType (), "ContractFilter.GetType #2");
-			};
-			webHttp.Behaviors.Add (behavior);
-
-			host.Open ();
-			host.Close ();
-		}
-
-		[Test]
-		public void ServiceBaseUriTest () {
-
-			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
-			Assert.AreEqual (0, host.Description.Endpoints.Count, "no endpoints yet");
-			host.Open ();
-			Assert.AreEqual (1, host.Description.Endpoints.Count, "default endpoint after open");
-			host.Close ();
-		}
-
-		class MyWebHttpBehavior : WebHttpBehavior
-		{
-			public event EventHandler ApplyDispatchBehaviorBegin;
-			public event EventHandler ApplyDispatchBehaviorEnd;
-
-			public override void ApplyDispatchBehavior (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) {
-				if (ApplyDispatchBehaviorBegin != null)
-					ApplyDispatchBehaviorBegin (this, EventArgs.Empty);
-				base.ApplyDispatchBehavior (endpoint, endpointDispatcher);
-				if (ApplyDispatchBehaviorEnd != null)
-					ApplyDispatchBehaviorEnd (this, EventArgs.Empty);
-			}
-		}
-
-		[ServiceContract]
-		public class MyService
-		{
-			[OperationContract]
-			[WebGet (RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
-			public string Greet (string input) {
-				return "huh? " + input;
-			}
-		}
-
-		[Test]
-		public void Connect ()
-		{
-			var url = "http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString();
-			var host = new WebServiceHost (typeof (DemoService), new Uri
-						       (url));
-			try {
-				host.Open ();
-				var wc = new WebClient();
-				wc.DownloadString(url + "/testData");
-				Console.WriteLine();
-			} finally {
-				host.Close();
-			}
-		}
-		
-		[ServiceContract]
-		interface IDemoService {
-			[OperationContract]
-			[WebInvoke(UriTemplate = "/{testData}",
-				   Method = "GET",
-				   RequestFormat = WebMessageFormat.Json,
-				   ResponseFormat = WebMessageFormat.Json)]
-			void UpdateAttribute(string testData);
-		}
-
-		public class DemoService : IDemoService {
-			public void UpdateAttribute(string testData)
-			{
-				Console.WriteLine ("got it: "+testData);
-			}
-		}
-	}
-}
-#endif
+﻿//
+// WebServiceHostTest.cs
+//
+// Author:
+//	Igor Zelmanovich  <igorz@mainsoft.com>
+//
+// Copyright (C) 2008 Mainsoft, Inc (http://www.mainsoft.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if !MOBILE
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using System.ServiceModel;
+using System.ServiceModel.Web;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.Net;
+
+using MonoTests.Helpers;
+
+namespace MonoTests.System.ServiceModel.Web
+{
+	[TestFixture]
+	public class WebServiceHostTest
+	{
+		[Test]
+		[Category("NotWorking")]
+		public void ServiceDebugBehaviorTest () {
+
+			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
+			ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
+
+			Assert.AreEqual (true, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageEnabled, "HttpHelpPageEnabled #1");
+			Assert.AreEqual (true, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpsHelpPageEnabled, "HttpsHelpPageEnabled #1");
+
+			host.Open ();
+
+			Assert.AreEqual (false, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpHelpPageEnabled, "HttpHelpPageEnabled #2");
+			Assert.AreEqual (false, host.Description.Behaviors.Find<ServiceDebugBehavior> ().HttpsHelpPageEnabled, "HttpsHelpPageEnabled #2");
+
+			host.Close ();
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void WebHttpBehaviorTest1 () {
+
+			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
+			ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
+			ServiceEndpoint basicHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new BasicHttpBinding (), "BasicHttpBinding");
+
+			Assert.AreEqual (0, webHttp.Behaviors.Count, "webHttp.Behaviors.Count #1");
+			Assert.AreEqual (0, basicHttp.Behaviors.Count, "basicHttp.Behaviors.Count #1");
+
+			host.Open ();
+
+			Assert.AreEqual (1, webHttp.Behaviors.Count, "webHttp.Behaviors.Count #2");
+			Assert.AreEqual (typeof (WebHttpBehavior), webHttp.Behaviors [0].GetType (), "behavior type");
+			Assert.AreEqual (0, basicHttp.Behaviors.Count, "basicHttp.Behaviors.Count #2");
+
+			host.Close ();
+		}
+
+		[Test]
+		[Category("NotWorking")]
+		public void WebHttpBehaviorTest2 () {
+
+			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
+			ServiceEndpoint webHttp = host.AddServiceEndpoint ("MonoTests.System.ServiceModel.Web.WebServiceHostTest+MyService", new WebHttpBinding (), "WebHttpBinding");
+			MyWebHttpBehavior behavior = new MyWebHttpBehavior ();
+			behavior.ApplyDispatchBehaviorBegin += delegate {
+				Assert.AreEqual (typeof (EndpointAddressMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].AddressFilter.GetType (), "AddressFilter.GetType #1");
+				Assert.AreEqual (typeof (ActionMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].ContractFilter.GetType (), "ContractFilter.GetType #1");
+			};
+			behavior.ApplyDispatchBehaviorEnd += delegate {
+				Assert.AreEqual (typeof (PrefixEndpointAddressMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].AddressFilter.GetType (), "AddressFilter.GetType #2");
+				Assert.AreEqual (typeof (MatchAllMessageFilter), ((ChannelDispatcher) host.ChannelDispatchers [0]).Endpoints [0].ContractFilter.GetType (), "ContractFilter.GetType #2");
+			};
+			webHttp.Behaviors.Add (behavior);
+
+			host.Open ();
+			host.Close ();
+		}
+
+		[Test]
+		public void ServiceBaseUriTest () {
+
+			var host = new WebServiceHost (typeof (MyService), new Uri ("http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString()));
+			Assert.AreEqual (0, host.Description.Endpoints.Count, "no endpoints yet");
+			host.Open ();
+			Assert.AreEqual (1, host.Description.Endpoints.Count, "default endpoint after open");
+			host.Close ();
+		}
+
+		class MyWebHttpBehavior : WebHttpBehavior
+		{
+			public event EventHandler ApplyDispatchBehaviorBegin;
+			public event EventHandler ApplyDispatchBehaviorEnd;
+
+			public override void ApplyDispatchBehavior (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) {
+				if (ApplyDispatchBehaviorBegin != null)
+					ApplyDispatchBehaviorBegin (this, EventArgs.Empty);
+				base.ApplyDispatchBehavior (endpoint, endpointDispatcher);
+				if (ApplyDispatchBehaviorEnd != null)
+					ApplyDispatchBehaviorEnd (this, EventArgs.Empty);
+			}
+		}
+
+		[ServiceContract]
+		public class MyService
+		{
+			[OperationContract]
+			[WebGet (RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
+			public string Greet (string input) {
+				return "huh? " + input;
+			}
+		}
+
+		[Test]
+		public void Connect ()
+		{
+			var url = "http://" + NetworkHelpers.LocalEphemeralEndPoint().ToString();
+			var host = new WebServiceHost (typeof (DemoService), new Uri
+						       (url));
+			try {
+				host.Open ();
+				var wc = new WebClient();
+				wc.DownloadString(url + "/testData");
+				Console.WriteLine();
+			} finally {
+				host.Close();
+			}
+		}
+		
+		[ServiceContract]
+		interface IDemoService {
+			[OperationContract]
+			[WebInvoke(UriTemplate = "/{testData}",
+				   Method = "GET",
+				   RequestFormat = WebMessageFormat.Json,
+				   ResponseFormat = WebMessageFormat.Json)]
+			void UpdateAttribute(string testData);
+		}
+
+		public class DemoService : IDemoService {
+			public void UpdateAttribute(string testData)
+			{
+				Console.WriteLine ("got it: "+testData);
+			}
+		}
+	}
+}
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/System.ServiceModel_test_net_3_0.dll.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/System.ServiceModel_test_net_3_0.dll.config
@@ -1,41 +1,41 @@
-﻿<?xml version="1.0" encoding="utf-8"?><configuration>
-	<appSettings>
-		<add key="onlyClients" value="false" />
-		<add key="endpointBase" value="http://localhost:9999" />
-	</appSettings>
-  <system.serviceModel>
-    <behaviors>
-	  <serviceBehaviors>
-			<behavior name="MetadataBehavior">
-				<serviceMetadata httpGetEnabled="true" />
-			</behavior>
-	  </serviceBehaviors>
-      <endpointBehaviors>
-        <behavior name="behavior1">
-          <callbackDebug includeExceptionDetailInFaults="true" />
-        </behavior>
-        <behavior name="behavior2">
-          <callbackDebug includeExceptionDetailInFaults="false" />
-        </behavior>
-      </endpointBehaviors>
-    </behaviors>
-	<bindings>
-		<basicHttpBinding>
-			<binding name="basicHttp">
-				<security mode="None">
-				</security>
-			</binding>
-		</basicHttpBinding>
-	</bindings>
-    <client>
-      <endpoint address="http://test1_1" binding="basicHttpBinding" contract="MonoTests.System.ServiceModel.ICtorUseCase1" name="CtorUseCase1_1" />
-      <endpoint address="http://test2_1" binding="basicHttpBinding" contract="CtorUseCase2" name="CtorUseCase2_1" />
-      <endpoint address="http://test2_2" binding="basicHttpBinding" contract="CtorUseCase2" name="CtorUseCase2_2" behaviorConfiguration="behavior1" />
-      <endpoint address="http://test2_2" binding="basicHttpBinding" contract="CtorUseCase2" name="CtorUseCase2_3" behaviorConfiguration="behavior2" />
-      <endpoint name="" binding="basicHttpBinding" contract="test" />
-    </client>
-
-	<services>
-	</services>
-  </system.serviceModel>
+﻿<?xml version="1.0" encoding="utf-8"?><configuration>
+	<appSettings>
+		<add key="onlyClients" value="false" />
+		<add key="endpointBase" value="http://localhost:9999" />
+	</appSettings>
+  <system.serviceModel>
+    <behaviors>
+	  <serviceBehaviors>
+			<behavior name="MetadataBehavior">
+				<serviceMetadata httpGetEnabled="true" />
+			</behavior>
+	  </serviceBehaviors>
+      <endpointBehaviors>
+        <behavior name="behavior1">
+          <callbackDebug includeExceptionDetailInFaults="true" />
+        </behavior>
+        <behavior name="behavior2">
+          <callbackDebug includeExceptionDetailInFaults="false" />
+        </behavior>
+      </endpointBehaviors>
+    </behaviors>
+	<bindings>
+		<basicHttpBinding>
+			<binding name="basicHttp">
+				<security mode="None">
+				</security>
+			</binding>
+		</basicHttpBinding>
+	</bindings>
+    <client>
+      <endpoint address="http://test1_1" binding="basicHttpBinding" contract="MonoTests.System.ServiceModel.ICtorUseCase1" name="CtorUseCase1_1" />
+      <endpoint address="http://test2_1" binding="basicHttpBinding" contract="CtorUseCase2" name="CtorUseCase2_1" />
+      <endpoint address="http://test2_2" binding="basicHttpBinding" contract="CtorUseCase2" name="CtorUseCase2_2" behaviorConfiguration="behavior1" />
+      <endpoint address="http://test2_2" binding="basicHttpBinding" contract="CtorUseCase2" name="CtorUseCase2_3" behaviorConfiguration="behavior2" />
+      <endpoint name="" binding="basicHttpBinding" contract="test" />
+    </client>
+
+	<services>
+	</services>
+  </system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/AsyncPatternServer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/AsyncPatternServer.cs
@@ -1,63 +1,63 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Proxy.MonoTests.Features.Client
-{
-    
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IAsyncPattern")]
-    public interface IAsyncPattern
-    {
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IAsyncPattern/AsyncMethod", ReplyAction="http://MonoTests.Features.Contracts/IAsyncPattern/AsyncMethodResponse")]
-        int AsyncMethod();
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public interface IAsyncPatternChannel : Proxy.MonoTests.Features.Client.IAsyncPattern, System.ServiceModel.IClientChannel
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public partial class AsyncPatternClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IAsyncPattern>, Proxy.MonoTests.Features.Client.IAsyncPattern
-    {
-        
-        public AsyncPatternClient()
-        {
-        }
-        
-        public AsyncPatternClient(string endpointConfigurationName) : 
-                base(endpointConfigurationName)
-        {
-        }
-        
-        public AsyncPatternClient(string endpointConfigurationName, string remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public AsyncPatternClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public AsyncPatternClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(binding, remoteAddress)
-        {
-        }
-        
-        public int AsyncMethod()
-        {
-            return base.Channel.AsyncMethod();
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.1433
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Proxy.MonoTests.Features.Client
+{
+    
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IAsyncPattern")]
+    public interface IAsyncPattern
+    {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IAsyncPattern/AsyncMethod", ReplyAction="http://MonoTests.Features.Contracts/IAsyncPattern/AsyncMethodResponse")]
+        int AsyncMethod();
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public interface IAsyncPatternChannel : Proxy.MonoTests.Features.Client.IAsyncPattern, System.ServiceModel.IClientChannel
+    {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public partial class AsyncPatternClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IAsyncPattern>, Proxy.MonoTests.Features.Client.IAsyncPattern
+    {
+        
+        public AsyncPatternClient()
+        {
+        }
+        
+        public AsyncPatternClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName)
+        {
+        }
+        
+        public AsyncPatternClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public AsyncPatternClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public AsyncPatternClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress)
+        {
+        }
+        
+        public int AsyncMethod()
+        {
+            return base.Channel.AsyncMethod();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/ExitProcessHelperServer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/ExitProcessHelperServer.cs
@@ -1,63 +1,63 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Proxy.MonoTests.Features.Client
-{
-    
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IExitProcessHelper")]
-    public interface IExitProcessHelper
-    {
-        
-        [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://MonoTests.Features.Contracts/IExitProcessHelper/ExitProcess")]
-        void ExitProcess(int code);
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public interface IExitProcessHelperChannel : Proxy.MonoTests.Features.Client.IExitProcessHelper, System.ServiceModel.IClientChannel
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public partial class ExitProcessHelperClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IExitProcessHelper>, Proxy.MonoTests.Features.Client.IExitProcessHelper
-    {
-        
-        public ExitProcessHelperClient()
-        {
-        }
-        
-        public ExitProcessHelperClient(string endpointConfigurationName) : 
-                base(endpointConfigurationName)
-        {
-        }
-        
-        public ExitProcessHelperClient(string endpointConfigurationName, string remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public ExitProcessHelperClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public ExitProcessHelperClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(binding, remoteAddress)
-        {
-        }
-        
-        public void ExitProcess(int code)
-        {
-            base.Channel.ExitProcess(code);
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.1433
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Proxy.MonoTests.Features.Client
+{
+    
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IExitProcessHelper")]
+    public interface IExitProcessHelper
+    {
+        
+        [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://MonoTests.Features.Contracts/IExitProcessHelper/ExitProcess")]
+        void ExitProcess(int code);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public interface IExitProcessHelperChannel : Proxy.MonoTests.Features.Client.IExitProcessHelper, System.ServiceModel.IClientChannel
+    {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public partial class ExitProcessHelperClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IExitProcessHelper>, Proxy.MonoTests.Features.Client.IExitProcessHelper
+    {
+        
+        public ExitProcessHelperClient()
+        {
+        }
+        
+        public ExitProcessHelperClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName)
+        {
+        }
+        
+        public ExitProcessHelperClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public ExitProcessHelperClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public ExitProcessHelperClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress)
+        {
+        }
+        
+        public void ExitProcess(int code)
+        {
+            base.Channel.ExitProcess(code);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/OperationContractServer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/OperationContractServer.cs
@@ -1,79 +1,79 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Proxy.MonoTests.Features.Client
-{
-    
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IOperationContract")]
-    public interface IOperationContract
-    {
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IOperationContract/RenamedMethod", ReplyAction="http://MonoTests.Features.Contracts/IOperationContract/RenamedMethodResponse")]
-        int RenamedMethod();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IOperationContract/OrigMethod", ReplyAction="http://MonoTests.Features.Contracts/IOperationContract/OrigMethodResponse")]
-        int OrigMethod();
-        
-        [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://MonoTests.Features.Contracts/IOperationContract/Sleep")]
-        void Sleep(int mili);
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public interface IOperationContractChannel : Proxy.MonoTests.Features.Client.IOperationContract, System.ServiceModel.IClientChannel
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public partial class OperationContractClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IOperationContract>, Proxy.MonoTests.Features.Client.IOperationContract
-    {
-        
-        public OperationContractClient()
-        {
-        }
-        
-        public OperationContractClient(string endpointConfigurationName) : 
-                base(endpointConfigurationName)
-        {
-        }
-        
-        public OperationContractClient(string endpointConfigurationName, string remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public OperationContractClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public OperationContractClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(binding, remoteAddress)
-        {
-        }
-        
-        public int RenamedMethod()
-        {
-            return base.Channel.RenamedMethod();
-        }
-        
-        public int OrigMethod()
-        {
-            return base.Channel.OrigMethod();
-        }
-        
-        public void Sleep(int mili)
-        {
-            base.Channel.Sleep(mili);
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.1433
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Proxy.MonoTests.Features.Client
+{
+    
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IOperationContract")]
+    public interface IOperationContract
+    {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IOperationContract/RenamedMethod", ReplyAction="http://MonoTests.Features.Contracts/IOperationContract/RenamedMethodResponse")]
+        int RenamedMethod();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IOperationContract/OrigMethod", ReplyAction="http://MonoTests.Features.Contracts/IOperationContract/OrigMethodResponse")]
+        int OrigMethod();
+        
+        [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://MonoTests.Features.Contracts/IOperationContract/Sleep")]
+        void Sleep(int mili);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public interface IOperationContractChannel : Proxy.MonoTests.Features.Client.IOperationContract, System.ServiceModel.IClientChannel
+    {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public partial class OperationContractClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IOperationContract>, Proxy.MonoTests.Features.Client.IOperationContract
+    {
+        
+        public OperationContractClient()
+        {
+        }
+        
+        public OperationContractClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName)
+        {
+        }
+        
+        public OperationContractClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public OperationContractClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public OperationContractClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress)
+        {
+        }
+        
+        public int RenamedMethod()
+        {
+            return base.Channel.RenamedMethod();
+        }
+        
+        public int OrigMethod()
+        {
+            return base.Channel.OrigMethod();
+        }
+        
+        public void Sleep(int mili)
+        {
+            base.Channel.Sleep(mili);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/PrimitiveTester.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Client/PrimitiveTester.cs
@@ -1,169 +1,169 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Proxy.MonoTests.Features.Client
-{
-    
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IPrimitiveTesterContract")]
-    public interface IPrimitiveTesterContract
-    {
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/DoNothing", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/DoNothingResponse")]
-        void DoNothing();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByte", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByteResponse")]
-        int AddByte(byte n1, byte n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddSByte", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddSByteResponse")]
-        int AddSByte(sbyte n1, sbyte n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddShort", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddShortResponse")]
-        int AddShort(short n1, short n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUShort", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUShortResponse")]
-        int AddUShort(ushort n1, ushort n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddInt", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddIntResponse")]
-        int AddInt(int n1, int n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUInt", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUIntResponse")]
-        uint AddUInt(uint n1, uint n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddLong", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddLongResponse")]
-        long AddLong(long n1, long n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddULong", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddULongResponse")]
-        ulong AddULong(ulong n1, ulong n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddDouble", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddDoubleResponse")]
-        double AddDouble(double n1, double n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddFloat", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddFloatResponse")]
-        float AddFloat(float n1, float n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByRef", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByRefResponse")]
-        [return: System.ServiceModel.MessageParameterAttribute(Name="n3")]
-        double AddByRef(out double n4, double n1, double n2);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableInt", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableIntResponse")]
-        System.Nullable<int> NullableInt(System.Nullable<int> x);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableChar", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableCharResponse" +
-            "")]
-        System.Nullable<char> NullableChar(System.Nullable<char> x);
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public interface IPrimitiveTesterContractChannel : Proxy.MonoTests.Features.Client.IPrimitiveTesterContract, System.ServiceModel.IClientChannel
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
-    public partial class PrimitiveTesterContractClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IPrimitiveTesterContract>, Proxy.MonoTests.Features.Client.IPrimitiveTesterContract
-    {
-        
-        public PrimitiveTesterContractClient()
-        {
-        }
-        
-        public PrimitiveTesterContractClient(string endpointConfigurationName) : 
-                base(endpointConfigurationName)
-        {
-        }
-        
-        public PrimitiveTesterContractClient(string endpointConfigurationName, string remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public PrimitiveTesterContractClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public PrimitiveTesterContractClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(binding, remoteAddress)
-        {
-        }
-        
-        public void DoNothing()
-        {
-            base.Channel.DoNothing();
-        }
-        
-        public int AddByte(byte n1, byte n2)
-        {
-            return base.Channel.AddByte(n1, n2);
-        }
-        
-        public int AddSByte(sbyte n1, sbyte n2)
-        {
-            return base.Channel.AddSByte(n1, n2);
-        }
-        
-        public int AddShort(short n1, short n2)
-        {
-            return base.Channel.AddShort(n1, n2);
-        }
-        
-        public int AddUShort(ushort n1, ushort n2)
-        {
-            return base.Channel.AddUShort(n1, n2);
-        }
-        
-        public int AddInt(int n1, int n2)
-        {
-            return base.Channel.AddInt(n1, n2);
-        }
-        
-        public uint AddUInt(uint n1, uint n2)
-        {
-            return base.Channel.AddUInt(n1, n2);
-        }
-        
-        public long AddLong(long n1, long n2)
-        {
-            return base.Channel.AddLong(n1, n2);
-        }
-        
-        public ulong AddULong(ulong n1, ulong n2)
-        {
-            return base.Channel.AddULong(n1, n2);
-        }
-        
-        public double AddDouble(double n1, double n2)
-        {
-            return base.Channel.AddDouble(n1, n2);
-        }
-        
-        public float AddFloat(float n1, float n2)
-        {
-            return base.Channel.AddFloat(n1, n2);
-        }
-        
-        public double AddByRef(out double n4, double n1, double n2)
-        {
-            return base.Channel.AddByRef(out n4, n1, n2);
-        }
-        
-        public System.Nullable<int> NullableInt(System.Nullable<int> x)
-        {
-            return base.Channel.NullableInt(x);
-        }
-        
-        public System.Nullable<char> NullableChar(System.Nullable<char> x)
-        {
-            return base.Channel.NullableChar(x);
-        }
-    }
-}
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.1433
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Proxy.MonoTests.Features.Client
+{
+    
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://MonoTests.Features.Contracts", ConfigurationName="Proxy.MonoTests.Features.Client.IPrimitiveTesterContract")]
+    public interface IPrimitiveTesterContract
+    {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/DoNothing", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/DoNothingResponse")]
+        void DoNothing();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByte", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByteResponse")]
+        int AddByte(byte n1, byte n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddSByte", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddSByteResponse")]
+        int AddSByte(sbyte n1, sbyte n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddShort", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddShortResponse")]
+        int AddShort(short n1, short n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUShort", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUShortResponse")]
+        int AddUShort(ushort n1, ushort n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddInt", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddIntResponse")]
+        int AddInt(int n1, int n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUInt", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddUIntResponse")]
+        uint AddUInt(uint n1, uint n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddLong", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddLongResponse")]
+        long AddLong(long n1, long n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddULong", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddULongResponse")]
+        ulong AddULong(ulong n1, ulong n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddDouble", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddDoubleResponse")]
+        double AddDouble(double n1, double n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddFloat", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddFloatResponse")]
+        float AddFloat(float n1, float n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByRef", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/AddByRefResponse")]
+        [return: System.ServiceModel.MessageParameterAttribute(Name="n3")]
+        double AddByRef(out double n4, double n1, double n2);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableInt", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableIntResponse")]
+        System.Nullable<int> NullableInt(System.Nullable<int> x);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableChar", ReplyAction="http://MonoTests.Features.Contracts/IPrimitiveTesterContract/NullableCharResponse" +
+            "")]
+        System.Nullable<char> NullableChar(System.Nullable<char> x);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public interface IPrimitiveTesterContractChannel : Proxy.MonoTests.Features.Client.IPrimitiveTesterContract, System.ServiceModel.IClientChannel
+    {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
+    public partial class PrimitiveTesterContractClient : System.ServiceModel.ClientBase<Proxy.MonoTests.Features.Client.IPrimitiveTesterContract>, Proxy.MonoTests.Features.Client.IPrimitiveTesterContract
+    {
+        
+        public PrimitiveTesterContractClient()
+        {
+        }
+        
+        public PrimitiveTesterContractClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName)
+        {
+        }
+        
+        public PrimitiveTesterContractClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public PrimitiveTesterContractClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public PrimitiveTesterContractClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress)
+        {
+        }
+        
+        public void DoNothing()
+        {
+            base.Channel.DoNothing();
+        }
+        
+        public int AddByte(byte n1, byte n2)
+        {
+            return base.Channel.AddByte(n1, n2);
+        }
+        
+        public int AddSByte(sbyte n1, sbyte n2)
+        {
+            return base.Channel.AddSByte(n1, n2);
+        }
+        
+        public int AddShort(short n1, short n2)
+        {
+            return base.Channel.AddShort(n1, n2);
+        }
+        
+        public int AddUShort(ushort n1, ushort n2)
+        {
+            return base.Channel.AddUShort(n1, n2);
+        }
+        
+        public int AddInt(int n1, int n2)
+        {
+            return base.Channel.AddInt(n1, n2);
+        }
+        
+        public uint AddUInt(uint n1, uint n2)
+        {
+            return base.Channel.AddUInt(n1, n2);
+        }
+        
+        public long AddLong(long n1, long n2)
+        {
+            return base.Channel.AddLong(n1, n2);
+        }
+        
+        public ulong AddULong(ulong n1, ulong n2)
+        {
+            return base.Channel.AddULong(n1, n2);
+        }
+        
+        public double AddDouble(double n1, double n2)
+        {
+            return base.Channel.AddDouble(n1, n2);
+        }
+        
+        public float AddFloat(float n1, float n2)
+        {
+            return base.Channel.AddFloat(n1, n2);
+        }
+        
+        public double AddByRef(out double n4, double n1, double n2)
+        {
+            return base.Channel.AddByRef(out n4, n1, n2);
+        }
+        
+        public System.Nullable<int> NullableInt(System.Nullable<int> x)
+        {
+            return base.Channel.NullableInt(x);
+        }
+        
+        public System.Nullable<char> NullableChar(System.Nullable<char> x)
+        {
+            return base.Channel.NullableChar(x);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/AsyncPatternContract.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/AsyncPatternContract.cs
@@ -1,58 +1,58 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ServiceModel;
-using System.Threading;
-
-namespace MonoTests.Features.Contracts
-{
-	// Define a service contract.
-	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
-	public interface IAsyncPattern
-	{
-		[OperationContractAttribute (AsyncPattern = true)]
-		IAsyncResult BeginAsyncMethod (AsyncCallback callback, object asyncState);
-		int EndAsyncMethod (IAsyncResult result);
-
-		// TODO: Need to investigate asyn methods that have ref/out params that are not necessarily first
-		// e.g. how does foo(in, ref, out, in) map to AsyncPattern?
-
-	}
-
-	public class AsyncPatternServer : IAsyncPattern
-	{
-		// Simple async result implementation.
-		class CompletedAsyncResult<T> : IAsyncResult
-		{
-			T data;
-			object state;
-
-			public CompletedAsyncResult (T data, object state) { this.data = data; this.state = state; }
-
-			public T Data { get { return data; } }
-
-			#region IAsyncResult Members
-			public object AsyncState { get { return (object) state; } }
-
-			public WaitHandle AsyncWaitHandle { get { throw new Exception ("The method or operation is not implemented."); } }
-
-			public bool CompletedSynchronously { get { return true; } }
-
-			public bool IsCompleted { get { return true; } }
-			#endregion
-		}
-
-		public IAsyncResult BeginAsyncMethod (AsyncCallback callback, object asyncState) {
-			IAsyncResult result = new CompletedAsyncResult<int> (3, asyncState);
-			new Thread (new ThreadStart (
-				delegate {
-					callback (result);
-				})).Start ();
-			return result;
-		}
-
-		public int EndAsyncMethod (IAsyncResult r) {
-			return ((CompletedAsyncResult<int>) r).Data;
-		}
-	}
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+using System.Threading;
+
+namespace MonoTests.Features.Contracts
+{
+	// Define a service contract.
+	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
+	public interface IAsyncPattern
+	{
+		[OperationContractAttribute (AsyncPattern = true)]
+		IAsyncResult BeginAsyncMethod (AsyncCallback callback, object asyncState);
+		int EndAsyncMethod (IAsyncResult result);
+
+		// TODO: Need to investigate asyn methods that have ref/out params that are not necessarily first
+		// e.g. how does foo(in, ref, out, in) map to AsyncPattern?
+
+	}
+
+	public class AsyncPatternServer : IAsyncPattern
+	{
+		// Simple async result implementation.
+		class CompletedAsyncResult<T> : IAsyncResult
+		{
+			T data;
+			object state;
+
+			public CompletedAsyncResult (T data, object state) { this.data = data; this.state = state; }
+
+			public T Data { get { return data; } }
+
+			#region IAsyncResult Members
+			public object AsyncState { get { return (object) state; } }
+
+			public WaitHandle AsyncWaitHandle { get { throw new Exception ("The method or operation is not implemented."); } }
+
+			public bool CompletedSynchronously { get { return true; } }
+
+			public bool IsCompleted { get { return true; } }
+			#endregion
+		}
+
+		public IAsyncResult BeginAsyncMethod (AsyncCallback callback, object asyncState) {
+			IAsyncResult result = new CompletedAsyncResult<int> (3, asyncState);
+			new Thread (new ThreadStart (
+				delegate {
+					callback (result);
+				})).Start ();
+			return result;
+		}
+
+		public int EndAsyncMethod (IAsyncResult r) {
+			return ((CompletedAsyncResult<int>) r).Data;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/DualContract.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/DualContract.cs
@@ -1,28 +1,28 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ServiceModel;
-using System.Threading;
-
-namespace MonoTests.Features.Contracts
-{
-	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
-	public interface IFirstContract
-	{
-		[OperationContract]
-		int FirstMethod ();
-	}
-
-	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
-	public interface ISecondContract
-	{
-		[OperationContract]
-		int SecondMethod ();
-	}
-
-	public class DualContractServer : IFirstContract, ISecondContract
-	{
-		public int FirstMethod () { return 1; }
-		public int SecondMethod () { return 2; }
-	}
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+using System.Threading;
+
+namespace MonoTests.Features.Contracts
+{
+	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
+	public interface IFirstContract
+	{
+		[OperationContract]
+		int FirstMethod ();
+	}
+
+	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
+	public interface ISecondContract
+	{
+		[OperationContract]
+		int SecondMethod ();
+	}
+
+	public class DualContractServer : IFirstContract, ISecondContract
+	{
+		public int FirstMethod () { return 1; }
+		public int SecondMethod () { return 2; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/ExitpProcessHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/ExitpProcessHelper.cs
@@ -1,23 +1,23 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ServiceModel;
-using System.Threading;
-
-namespace MonoTests.Features.Contracts
-{
-	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
-	public interface IExitProcessHelper
-	{
-		[OperationContract(IsOneWay=true)]
-		void ExitProcess (int code);
-	}
-
-	public class ExitProcessHelperServer : IExitProcessHelper
-	{
-		public void ExitProcess (int code) {
-			Environment.Exit (code);
-		}
-	}
-
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+using System.Threading;
+
+namespace MonoTests.Features.Contracts
+{
+	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
+	public interface IExitProcessHelper
+	{
+		[OperationContract(IsOneWay=true)]
+		void ExitProcess (int code);
+	}
+
+	public class ExitProcessHelperServer : IExitProcessHelper
+	{
+		public void ExitProcess (int code) {
+			Environment.Exit (code);
+		}
+	}
+
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/OperationContract.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Contracts/OperationContract.cs
@@ -1,35 +1,35 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ServiceModel;
-using System.Threading;
-
-namespace MonoTests.Features.Contracts
-{
-	// Define a service contract.
-	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
-	public interface IOperationContract
-	{
-
-		[OperationContract (Name = "RenamedMethod")]
-		int OrigMethod ();
-
-		[OperationContract (Name = "OrigMethod")]
-		int RenamedMethod ();
-
-
-		[OperationContract (IsOneWay = true)]
-		void Sleep (int mili);
-	}
-
-	public class OperationContractServer : IOperationContract
-	{
-		public int OrigMethod () { return 1; }
-		public int RenamedMethod () { return 2; }
-
-		public void Sleep(int mili) 
-		{
-			 Thread.Sleep(mili); 
-		}
-	}
-}
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+using System.Threading;
+
+namespace MonoTests.Features.Contracts
+{
+	// Define a service contract.
+	[ServiceContract (Namespace = "http://MonoTests.Features.Contracts")]
+	public interface IOperationContract
+	{
+
+		[OperationContract (Name = "RenamedMethod")]
+		int OrigMethod ();
+
+		[OperationContract (Name = "OrigMethod")]
+		int RenamedMethod ();
+
+
+		[OperationContract (IsOneWay = true)]
+		void Sleep (int mili);
+	}
+
+	public class OperationContractServer : IOperationContract
+	{
+		public int OrigMethod () { return 1; }
+		public int RenamedMethod () { return 2; }
+
+		public void Sleep(int mili) 
+		{
+			 Thread.Sleep(mili); 
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/AsyncPatternTester.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/AsyncPatternTester.cs
@@ -1,21 +1,21 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using Proxy.MonoTests.Features.Client;
-using NUnit.Framework;
-using System.ServiceModel;
-using MonoTests.Features.Contracts;
-using System.Threading;
-
-namespace MonoTests.Features.Serialization
-{
-	[TestFixture]
-	public class AsyncPatternTest : TestFixtureBase<AsyncPatternClient, AsyncPatternServer, MonoTests.Features.Contracts.IAsyncPattern>
-	{
-
-		[Test]
-		public void TestAsync () {
-			Assert.AreEqual (ClientProxy.AsyncMethod (), 3, "Called method with AsyncPattern=true");
-		}
-	}
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using Proxy.MonoTests.Features.Client;
+using NUnit.Framework;
+using System.ServiceModel;
+using MonoTests.Features.Contracts;
+using System.Threading;
+
+namespace MonoTests.Features.Serialization
+{
+	[TestFixture]
+	public class AsyncPatternTest : TestFixtureBase<AsyncPatternClient, AsyncPatternServer, MonoTests.Features.Contracts.IAsyncPattern>
+	{
+
+		[Test]
+		public void TestAsync () {
+			Assert.AreEqual (ClientProxy.AsyncMethod (), 3, "Called method with AsyncPattern=true");
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/DualContractTester.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/DualContractTester.cs
@@ -1,30 +1,30 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using Proxy.MonoTests.Features.Client;
-using NUnit.Framework;
-using System.ServiceModel;
-using MonoTests.Features.Contracts;
-using System.Threading;
-
-namespace MonoTests.Features.Serialization
-{
-	[TestFixture]
-	public class DualContractFirstTest : TestFixtureBase<object, DualContractServer, MonoTests.Features.Contracts.IFirstContract>
-	{
-		[Test]
-		public void TestFirst () {
-			Assert.AreEqual (Client.FirstMethod (), 1, "IFirstContract.FirstMethod");
-		}
-	}
-
-	[TestFixture]
-	public class DualContractSecondTest : TestFixtureBase<object, DualContractServer, MonoTests.Features.Contracts.ISecondContract>
-	{
-		[Test]
-		public void TestSecond () {
-			Assert.AreEqual (Client.SecondMethod (), 2, "ISecondContract.SecondMethod");
-		}
-	}
-
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using Proxy.MonoTests.Features.Client;
+using NUnit.Framework;
+using System.ServiceModel;
+using MonoTests.Features.Contracts;
+using System.Threading;
+
+namespace MonoTests.Features.Serialization
+{
+	[TestFixture]
+	public class DualContractFirstTest : TestFixtureBase<object, DualContractServer, MonoTests.Features.Contracts.IFirstContract>
+	{
+		[Test]
+		public void TestFirst () {
+			Assert.AreEqual (Client.FirstMethod (), 1, "IFirstContract.FirstMethod");
+		}
+	}
+
+	[TestFixture]
+	public class DualContractSecondTest : TestFixtureBase<object, DualContractServer, MonoTests.Features.Contracts.ISecondContract>
+	{
+		[Test]
+		public void TestSecond () {
+			Assert.AreEqual (Client.SecondMethod (), 2, "ISecondContract.SecondMethod");
+		}
+	}
+
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ExitProcessHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/ExitProcessHelper.cs
@@ -1,15 +1,15 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using Proxy.MonoTests.Features.Client;
-using NUnit.Framework;
-using System.ServiceModel;
-using MonoTests.Features.Contracts;
-
-namespace MonoTests.Features.Serialization
-{
-	[TestFixture]
-	public class ExitProcessHelper : TestFixtureBase<Proxy.MonoTests.Features.Client.ExitProcessHelperClient, ExitProcessHelperServer, MonoTests.Features.Contracts.IExitProcessHelper>
-	{
-	}
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using Proxy.MonoTests.Features.Client;
+using NUnit.Framework;
+using System.ServiceModel;
+using MonoTests.Features.Contracts;
+
+namespace MonoTests.Features.Serialization
+{
+	[TestFixture]
+	public class ExitProcessHelper : TestFixtureBase<Proxy.MonoTests.Features.Client.ExitProcessHelperClient, ExitProcessHelperServer, MonoTests.Features.Contracts.IExitProcessHelper>
+	{
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/OperationContractTester.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/FeatureBased/Features.Serialization/OperationContractTester.cs
@@ -1,46 +1,46 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-using Proxy.MonoTests.Features.Client;
-using NUnit.Framework;
-using System.ServiceModel;
-using MonoTests.Features.Contracts;
-using System.Threading;
-
-namespace MonoTests.Features.Serialization
-{
-	[TestFixture]
-	public class OperationContractTest : TestFixtureBase<OperationContractClient, OperationContractServer, MonoTests.Features.Contracts.IOperationContract>
-	{
-		[Test]
-		[Category("NotWorking")]
-		public void TestName () {
-			Assert.AreEqual(Client.OrigMethod(),2,"Calling OrigMethod should actually call RenamedMethod");
-			Assert.AreEqual(Client.RenamedMethod(),1,"Calling RenamedMethod should actually call OrigMethod");
-		}
-
-		[Test]
-		[Category("NotWorking")]
-		public void TestOneWay () {
-			int sleepTime = 1 * 1000, failTime = 500; // Good times for inproc, no debugging.
-			if (!Configuration.IsLocal) {
-				sleepTime = 5 * 1000;
-				failTime = 2 * 1000;
-			}
-			DateTime start = DateTime.Now;
-			Client.Sleep (sleepTime);
-			DateTime end = DateTime.Now;
-			TimeSpan diff = end.Subtract (start);
-			TimeSpan max = TimeSpan.FromMilliseconds(failTime);
-			Assert.IsTrue (diff < max, "Sleep({0} milisec) must end in less than {1} seconds",sleepTime,failTime);
-			if (sleepTime > (int) diff.TotalMilliseconds)
-				Thread.Sleep (sleepTime - (int)diff.TotalMilliseconds); // wait for server thread to release itself
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void TestWsdl () {
-			CheckWsdlImpl ();
-		}
-	}
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using Proxy.MonoTests.Features.Client;
+using NUnit.Framework;
+using System.ServiceModel;
+using MonoTests.Features.Contracts;
+using System.Threading;
+
+namespace MonoTests.Features.Serialization
+{
+	[TestFixture]
+	public class OperationContractTest : TestFixtureBase<OperationContractClient, OperationContractServer, MonoTests.Features.Contracts.IOperationContract>
+	{
+		[Test]
+		[Category("NotWorking")]
+		public void TestName () {
+			Assert.AreEqual(Client.OrigMethod(),2,"Calling OrigMethod should actually call RenamedMethod");
+			Assert.AreEqual(Client.RenamedMethod(),1,"Calling RenamedMethod should actually call OrigMethod");
+		}
+
+		[Test]
+		[Category("NotWorking")]
+		public void TestOneWay () {
+			int sleepTime = 1 * 1000, failTime = 500; // Good times for inproc, no debugging.
+			if (!Configuration.IsLocal) {
+				sleepTime = 5 * 1000;
+				failTime = 2 * 1000;
+			}
+			DateTime start = DateTime.Now;
+			Client.Sleep (sleepTime);
+			DateTime end = DateTime.Now;
+			TimeSpan diff = end.Subtract (start);
+			TimeSpan max = TimeSpan.FromMilliseconds(failTime);
+			Assert.IsTrue (diff < max, "Sleep({0} milisec) must end in less than {1} seconds",sleepTime,failTime);
+			if (sleepTime > (int) diff.TotalMilliseconds)
+				Thread.Sleep (sleepTime - (int)diff.TotalMilliseconds); // wait for server thread to release itself
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void TestWsdl () {
+			CheckWsdlImpl ();
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/basicHttpBinding
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/basicHttpBinding
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/client.endpoint
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/client.endpoint
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/client.endpoint.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/client.endpoint.config
@@ -1,17 +1,17 @@
-﻿<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-	<system.serviceModel>
-		<client>
-			<endpoint address="http://igorxp:8080/" binding="basicHttpBinding"
-                contract="WCFClient.IHelloWorldService" name="BasicHttpBinding_IHelloWorldService">
-				<identity>
-					<userPrincipalName value="igorz@iloffice.mainsoft.com" />
-				</identity>
-				<headers>
-					<Header1>Header1-Value</Header1>
-					<myns:Header2 xmlns:myns="uri:my.custom.manespace">Header2-Value</myns:Header2>
-				</headers>
-			</endpoint>
-		</client>
-	</system.serviceModel>
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+	<system.serviceModel>
+		<client>
+			<endpoint address="http://igorxp:8080/" binding="basicHttpBinding"
+                contract="WCFClient.IHelloWorldService" name="BasicHttpBinding_IHelloWorldService">
+				<identity>
+					<userPrincipalName value="igorz@iloffice.mainsoft.com" />
+				</identity>
+				<headers>
+					<Header1>Header1-Value</Header1>
+					<myns:Header2 xmlns:myns="uri:my.custom.manespace">Header2-Value</myns:Header2>
+				</headers>
+			</endpoint>
+		</client>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/client.metadata
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/client.metadata
@@ -1,3 +1,3 @@
-DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
-USING ConfigurationManager.OpenExeConfiguration API.
+DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+USING ConfigurationManager.OpenExeConfiguration API.
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/client.metadata.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/client.metadata.config
@@ -1,19 +1,19 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-	<system.serviceModel>
-		<client>
-			<metadata>
-				<policyImporters>
-					<clear/>
-					<extension type="PolicyImporterType1" />
-					<extension type="PolicyImporterType2" />
-				</policyImporters>
-				<wsdlImporters>
-					<clear/>
-					<extension type="WSDLImporter1" />
-					<extension type="WSDLImporter2" />
-				</wsdlImporters>
-			</metadata>
-		</client>
-	</system.serviceModel>
-</configuration>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+	<system.serviceModel>
+		<client>
+			<metadata>
+				<policyImporters>
+					<clear/>
+					<extension type="PolicyImporterType1" />
+					<extension type="PolicyImporterType2" />
+				</policyImporters>
+				<wsdlImporters>
+					<clear/>
+					<extension type="WSDLImporter1" />
+					<extension type="WSDLImporter2" />
+				</wsdlImporters>
+			</metadata>
+		</client>
+	</system.serviceModel>
+</configuration>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/customBinding
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/customBinding
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/customBinding.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/customBinding.config
@@ -1,217 +1,217 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-	<system.serviceModel>
-		<bindings>
-			<customBinding>
-				<binding name="CustomBinding_1" closeTimeout="00:02:00" openTimeout="00:02:00"
-				 receiveTimeout="00:20:00" sendTimeout="00:02:00">
-					<binaryMessageEncoding maxReadPoolSize="128" maxWritePoolSize="32"
-					 maxSessionSize="1024">
-						<readerQuotas maxDepth="1024" maxStringContentLength="1024" maxArrayLength="1024"
-						 maxBytesPerRead="1024" maxNameTableCharCount="1024" />
-					</binaryMessageEncoding>
-					<compositeDuplex clientBaseAddress="http://client.base.address" />
-					<oneWay maxAcceptedChannels="5" packetRoutable="true">
-						<channelPoolSettings idleTimeout="00:01:00" leaseTimeout="00:12:00"
-						 maxOutboundChannelsPerEndpoint="5" />
-					</oneWay>
-					<httpTransport manualAddressing="true" maxBufferPoolSize="262144"
-					 maxReceivedMessageSize="32768" allowCookies="true" authenticationScheme="None"
-					 bypassProxyOnLocal="true" hostNameComparisonMode="Exact" keepAliveEnabled="false"
-					 maxBufferSize="32768" proxyAddress="http://proxy.address" proxyAuthenticationScheme="None"
-					 realm="Realm" transferMode="Streamed" unsafeConnectionNtlmAuthentication="true"
-					 useDefaultWebProxy="false" />
-					<pnrpPeerResolver />
-					<privacyNoticeAt url="http://url" version="5" />
-					<reliableSession acknowledgementInterval="00:00:00.4000000" flowControlEnabled="false"
-					 inactivityTimeout="00:15:00" maxPendingChannels="8" maxRetryCount="16"
-					 maxTransferWindowSize="16" ordered="false" reliableMessagingVersion="WSReliableMessaging11" />
-					<security defaultAlgorithmSuite="Basic256Rsa15" allowSerializedSigningTokenOnReply="true"
-					 authenticationMode="UserNameForCertificate" requireDerivedKeys="false"
-					 securityHeaderLayout="Lax" includeTimestamp="false" keyEntropyMode="ClientEntropy"
-					 messageProtectionOrder="EncryptBeforeSign" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11"
-					 requireSecurityContextCancellation="false" requireSignatureConfirmation="true">
-						<issuedTokenParameters keySize="6" keyType="AsymmetricKey" tokenType="TokenType">
-							<additionalRequestParameters>
-								<myxml>myinnertext</myxml>
-							</additionalRequestParameters>
-							<claimTypeRequirements>
-								<add claimType="NewClaimType" isOptional="true" />
-							</claimTypeRequirements>
-							<issuer address="http://address" binding="customBinding" bindingConfiguration="CustomBinding_1">
-								<headers>
-									<Tag1>Value1</Tag1>
-									<Tag2>Value2</Tag2>
-								</headers>
-								<identity>
-									<userPrincipalName value="UserProncipalName" />
-									<servicePrincipalName value="ServicePrincipalName" />
-									<dns value="Dns" />
-									<rsa value="Rsa" />
-									<certificate encodedValue="Certificate" />
-									<certificateReference storeName="Root" storeLocation="CurrentUser"
-									 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
-								</identity>
-							</issuer>
-							<issuerMetadata address="http://address">
-								<headers>
-									<Tag>Value</Tag>
-								</headers>
-								<identity>
-									<userPrincipalName value="UserPrincipalName" />
-									<servicePrincipalName value="ServicePrincipalName" />
-									<dns value="Dns" />
-									<rsa value="Rsa" />
-									<certificate encodedValue="Certificate" />
-									<certificateReference storeName="Root" storeLocation="CurrentUser"
-									 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
-								</identity>
-							</issuerMetadata>
-						</issuedTokenParameters>
-						<localClientSettings cacheCookies="false" detectReplays="false"
-						 replayCacheSize="600000" maxClockSkew="00:06:00" replayWindow="00:06:00"
-						 sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:06:00"
-						 reconnectTransportOnFailure="true" timestampValidityDuration="00:06:00"
-						 cookieRenewalThresholdPercentage="70" />
-						<localServiceSettings detectReplays="false" issuedCookieLifetime="15:00:00"
-						 maxStatefulNegotiations="256" replayCacheSize="600000" maxClockSkew="00:10:00"
-						 negotiationTimeout="00:02:00" replayWindow="00:08:00" inactivityTimeout="00:04:00"
-						 sessionKeyRenewalInterval="10:00:00" sessionKeyRolloverInterval="00:06:00"
-						 reconnectTransportOnFailure="false" maxPendingSessions="256"
-						 maxCachedCookies="2000" timestampValidityDuration="00:06:00" />
-						<secureConversationBootstrap defaultAlgorithmSuite="Basic256Rsa15"
-						 allowSerializedSigningTokenOnReply="true" authenticationMode="UserNameForCertificate"
-						 requireDerivedKeys="false" securityHeaderLayout="Lax" includeTimestamp="false"
-						 keyEntropyMode="ClientEntropy" messageProtectionOrder="EncryptBeforeSign"
-						 messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11"
-						 requireSecurityContextCancellation="false" requireSignatureConfirmation="true">
-							<issuedTokenParameters keySize="6" keyType="AsymmetricKey" tokenType="TokenType">
-								<additionalRequestParameters>
-									<myxml>myinnertext</myxml>
-								</additionalRequestParameters>
-								<claimTypeRequirements>
-									<add claimType="NewClaimType" isOptional="true" />
-								</claimTypeRequirements>
-								<issuer address="http://address" binding="customBinding" bindingConfiguration="CustomBinding_1">
-									<headers>
-										<Tag1>Value1</Tag1>
-										<Tag2>Value2</Tag2>
-									</headers>
-									<identity>
-										<userPrincipalName value="UserProncipalName" />
-										<servicePrincipalName value="ServicePrincipalName" />
-										<dns value="Dns" />
-										<rsa value="Rsa" />
-										<certificate encodedValue="Certificate" />
-										<certificateReference storeName="Root" storeLocation="CurrentUser"
-										 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
-									</identity>
-								</issuer>
-								<issuerMetadata address="http://address">
-									<headers>
-										<Tag>Value</Tag>
-									</headers>
-									<identity>
-										<userPrincipalName value="UserPrincipalName" />
-										<servicePrincipalName value="ServicePrincipalName" />
-										<dns value="Dns" />
-										<rsa value="Rsa" />
-										<certificate encodedValue="Certificate" />
-										<certificateReference storeName="Root" storeLocation="CurrentUser"
-										 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
-									</identity>
-								</issuerMetadata>
-							</issuedTokenParameters>
-							<localClientSettings cacheCookies="false" detectReplays="false"
-							 replayCacheSize="600000" maxClockSkew="00:06:00" replayWindow="00:06:00"
-							 sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:06:00"
-							 reconnectTransportOnFailure="true" timestampValidityDuration="00:06:00"
-							 cookieRenewalThresholdPercentage="70" />
-							<localServiceSettings detectReplays="false" issuedCookieLifetime="15:00:00"
-							 maxStatefulNegotiations="256" replayCacheSize="600000" maxClockSkew="00:10:00"
-							 negotiationTimeout="00:02:00" replayWindow="00:08:00" inactivityTimeout="00:04:00"
-							 sessionKeyRenewalInterval="10:00:00" sessionKeyRolloverInterval="00:06:00"
-							 reconnectTransportOnFailure="false" maxPendingSessions="256"
-							 maxCachedCookies="2000" timestampValidityDuration="00:06:00" />
-						</secureConversationBootstrap>
-					</security>
-					<sslStreamSecurity requireClientCertificate="true" />
-					<transactionFlow transactionProtocol="WSAtomicTransactionOctober2004" />
-					<useManagedPresentation />
-				</binding>
-				<binding name="CustomBinding_2">
-					<textMessageEncoding maxReadPoolSize="128" maxWritePoolSize="32"
-					 messageVersion="Soap11WSAddressingAugust2004" writeEncoding="utf-32">
-						<readerQuotas maxDepth="128" maxStringContentLength="128" maxArrayLength="128"
-						 maxBytesPerRead="128" maxNameTableCharCount="128" />
-					</textMessageEncoding>
-					<windowsStreamSecurity protectionLevel="None" />
-					<httpsTransport manualAddressing="true" maxBufferPoolSize="262144"
-					 maxReceivedMessageSize="32768" allowCookies="true" authenticationScheme="None"
-					 bypassProxyOnLocal="true" hostNameComparisonMode="Exact" keepAliveEnabled="true"
-					 maxBufferSize="32768" proxyAddress="https://proxy.address" proxyAuthenticationScheme="None"
-					 realm="Realm" transferMode="Streamed" unsafeConnectionNtlmAuthentication="true"
-					 useDefaultWebProxy="false" requireClientCertificate="true" />
-				</binding>
-				<binding name="CustomBinding_3">
-					<mtomMessageEncoding maxReadPoolSize="128" maxWritePoolSize="32"
-					 messageVersion="Soap11WSAddressingAugust2004" maxBufferSize="32768"
-					 writeEncoding="utf-32">
-						<readerQuotas maxDepth="256" maxStringContentLength="256" maxArrayLength="256"
-						 maxBytesPerRead="256" maxNameTableCharCount="256" />
-					</mtomMessageEncoding>
-					<msmqIntegration manualAddressing="true" maxBufferPoolSize="262144"
-					 maxReceivedMessageSize="32768" customDeadLetterQueue="http://CustomDeadLetterQueue"
-					 deadLetterQueue="Custom" durable="false" exactlyOnce="false"
-					 maxRetryCycles="3" receiveErrorHandling="Drop" receiveRetryCount="10"
-					 retryCycleDelay="00:15:00" timeToLive="1.12:00:00" useSourceJournal="true"
-					 useMsmqTracing="true" serializationFormat="Binary">
-						<msmqTransportSecurity msmqAuthenticationMode="Certificate" msmqEncryptionAlgorithm="Aes"
-						 msmqProtectionLevel="EncryptAndSign" msmqSecureHashAlgorithm="Sha256" />
-					</msmqIntegration>
-				</binding>
-				<binding name="CustomBinding_4">
-					<msmqTransport manualAddressing="true" maxBufferPoolSize="262144"
-					 maxReceivedMessageSize="262144" customDeadLetterQueue="http://CustomDeadLetterQueue"
-					 deadLetterQueue="Custom" durable="false" exactlyOnce="false"
-					 maxRetryCycles="3" receiveErrorHandling="Drop" receiveRetryCount="9"
-					 retryCycleDelay="00:15:00" timeToLive="1.12:00:00" useSourceJournal="true"
-					 useMsmqTracing="true" maxPoolSize="16" queueTransferProtocol="Srmp"
-					 useActiveDirectory="true">
-						<msmqTransportSecurity msmqAuthenticationMode="Certificate" msmqEncryptionAlgorithm="Aes"
-						 msmqProtectionLevel="EncryptAndSign" msmqSecureHashAlgorithm="Sha256" />
-					</msmqTransport>
-				</binding>
-				<binding name="CustomBinding_5">
-					<namedPipeTransport manualAddressing="true" maxBufferPoolSize="262144"
-					 maxReceivedMessageSize="32768" connectionBufferSize="4096" hostNameComparisonMode="Exact"
-					 channelInitializationTimeout="00:00:20" maxBufferSize="32768"
-					 maxPendingConnections="5" maxOutputDelay="00:00:01.2000000" maxPendingAccepts="3"
-					 transferMode="Streamed">
-						<connectionPoolSettings groupName="GroupName" idleTimeout="00:06:00"
-						 maxOutboundConnectionsPerEndpoint="20" />
-					</namedPipeTransport>
-				</binding>
-				<binding name="CustomBinding_6">
-					<tcpTransport manualAddressing="true" maxBufferPoolSize="262144"
-					 maxReceivedMessageSize="32768" connectionBufferSize="4096" hostNameComparisonMode="Exact"
-					 channelInitializationTimeout="00:00:15" maxBufferSize="32768"
-					 maxPendingConnections="20" maxOutputDelay="00:00:01.2000000"
-					 maxPendingAccepts="3" transferMode="Streamed" listenBacklog="20"
-					 portSharingEnabled="true" teredoEnabled="true">
-						<connectionPoolSettings groupName="GroupName" leaseTimeout="00:15:00"
-						 idleTimeout="00:02:30" maxOutboundConnectionsPerEndpoint="30" />
-					</tcpTransport>
-				</binding>
-				<binding name="CustomBinding_7">
-					<peerTransport listenIPAddress="192.168.0.1" maxBufferPoolSize="262144"
-					 maxReceivedMessageSize="32768" port="88">
-						<security mode="Message">
-							<transport credentialType="Certificate" />
-						</security>
-					</peerTransport>
-				</binding>
-			</customBinding>
-		</bindings>
-	</system.serviceModel>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+	<system.serviceModel>
+		<bindings>
+			<customBinding>
+				<binding name="CustomBinding_1" closeTimeout="00:02:00" openTimeout="00:02:00"
+				 receiveTimeout="00:20:00" sendTimeout="00:02:00">
+					<binaryMessageEncoding maxReadPoolSize="128" maxWritePoolSize="32"
+					 maxSessionSize="1024">
+						<readerQuotas maxDepth="1024" maxStringContentLength="1024" maxArrayLength="1024"
+						 maxBytesPerRead="1024" maxNameTableCharCount="1024" />
+					</binaryMessageEncoding>
+					<compositeDuplex clientBaseAddress="http://client.base.address" />
+					<oneWay maxAcceptedChannels="5" packetRoutable="true">
+						<channelPoolSettings idleTimeout="00:01:00" leaseTimeout="00:12:00"
+						 maxOutboundChannelsPerEndpoint="5" />
+					</oneWay>
+					<httpTransport manualAddressing="true" maxBufferPoolSize="262144"
+					 maxReceivedMessageSize="32768" allowCookies="true" authenticationScheme="None"
+					 bypassProxyOnLocal="true" hostNameComparisonMode="Exact" keepAliveEnabled="false"
+					 maxBufferSize="32768" proxyAddress="http://proxy.address" proxyAuthenticationScheme="None"
+					 realm="Realm" transferMode="Streamed" unsafeConnectionNtlmAuthentication="true"
+					 useDefaultWebProxy="false" />
+					<pnrpPeerResolver />
+					<privacyNoticeAt url="http://url" version="5" />
+					<reliableSession acknowledgementInterval="00:00:00.4000000" flowControlEnabled="false"
+					 inactivityTimeout="00:15:00" maxPendingChannels="8" maxRetryCount="16"
+					 maxTransferWindowSize="16" ordered="false" reliableMessagingVersion="WSReliableMessaging11" />
+					<security defaultAlgorithmSuite="Basic256Rsa15" allowSerializedSigningTokenOnReply="true"
+					 authenticationMode="UserNameForCertificate" requireDerivedKeys="false"
+					 securityHeaderLayout="Lax" includeTimestamp="false" keyEntropyMode="ClientEntropy"
+					 messageProtectionOrder="EncryptBeforeSign" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11"
+					 requireSecurityContextCancellation="false" requireSignatureConfirmation="true">
+						<issuedTokenParameters keySize="6" keyType="AsymmetricKey" tokenType="TokenType">
+							<additionalRequestParameters>
+								<myxml>myinnertext</myxml>
+							</additionalRequestParameters>
+							<claimTypeRequirements>
+								<add claimType="NewClaimType" isOptional="true" />
+							</claimTypeRequirements>
+							<issuer address="http://address" binding="customBinding" bindingConfiguration="CustomBinding_1">
+								<headers>
+									<Tag1>Value1</Tag1>
+									<Tag2>Value2</Tag2>
+								</headers>
+								<identity>
+									<userPrincipalName value="UserProncipalName" />
+									<servicePrincipalName value="ServicePrincipalName" />
+									<dns value="Dns" />
+									<rsa value="Rsa" />
+									<certificate encodedValue="Certificate" />
+									<certificateReference storeName="Root" storeLocation="CurrentUser"
+									 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
+								</identity>
+							</issuer>
+							<issuerMetadata address="http://address">
+								<headers>
+									<Tag>Value</Tag>
+								</headers>
+								<identity>
+									<userPrincipalName value="UserPrincipalName" />
+									<servicePrincipalName value="ServicePrincipalName" />
+									<dns value="Dns" />
+									<rsa value="Rsa" />
+									<certificate encodedValue="Certificate" />
+									<certificateReference storeName="Root" storeLocation="CurrentUser"
+									 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
+								</identity>
+							</issuerMetadata>
+						</issuedTokenParameters>
+						<localClientSettings cacheCookies="false" detectReplays="false"
+						 replayCacheSize="600000" maxClockSkew="00:06:00" replayWindow="00:06:00"
+						 sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:06:00"
+						 reconnectTransportOnFailure="true" timestampValidityDuration="00:06:00"
+						 cookieRenewalThresholdPercentage="70" />
+						<localServiceSettings detectReplays="false" issuedCookieLifetime="15:00:00"
+						 maxStatefulNegotiations="256" replayCacheSize="600000" maxClockSkew="00:10:00"
+						 negotiationTimeout="00:02:00" replayWindow="00:08:00" inactivityTimeout="00:04:00"
+						 sessionKeyRenewalInterval="10:00:00" sessionKeyRolloverInterval="00:06:00"
+						 reconnectTransportOnFailure="false" maxPendingSessions="256"
+						 maxCachedCookies="2000" timestampValidityDuration="00:06:00" />
+						<secureConversationBootstrap defaultAlgorithmSuite="Basic256Rsa15"
+						 allowSerializedSigningTokenOnReply="true" authenticationMode="UserNameForCertificate"
+						 requireDerivedKeys="false" securityHeaderLayout="Lax" includeTimestamp="false"
+						 keyEntropyMode="ClientEntropy" messageProtectionOrder="EncryptBeforeSign"
+						 messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11"
+						 requireSecurityContextCancellation="false" requireSignatureConfirmation="true">
+							<issuedTokenParameters keySize="6" keyType="AsymmetricKey" tokenType="TokenType">
+								<additionalRequestParameters>
+									<myxml>myinnertext</myxml>
+								</additionalRequestParameters>
+								<claimTypeRequirements>
+									<add claimType="NewClaimType" isOptional="true" />
+								</claimTypeRequirements>
+								<issuer address="http://address" binding="customBinding" bindingConfiguration="CustomBinding_1">
+									<headers>
+										<Tag1>Value1</Tag1>
+										<Tag2>Value2</Tag2>
+									</headers>
+									<identity>
+										<userPrincipalName value="UserProncipalName" />
+										<servicePrincipalName value="ServicePrincipalName" />
+										<dns value="Dns" />
+										<rsa value="Rsa" />
+										<certificate encodedValue="Certificate" />
+										<certificateReference storeName="Root" storeLocation="CurrentUser"
+										 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
+									</identity>
+								</issuer>
+								<issuerMetadata address="http://address">
+									<headers>
+										<Tag>Value</Tag>
+									</headers>
+									<identity>
+										<userPrincipalName value="UserPrincipalName" />
+										<servicePrincipalName value="ServicePrincipalName" />
+										<dns value="Dns" />
+										<rsa value="Rsa" />
+										<certificate encodedValue="Certificate" />
+										<certificateReference storeName="Root" storeLocation="CurrentUser"
+										 x509FindType="FindByIssuerName" findValue="FindValue" isChainIncluded="true" />
+									</identity>
+								</issuerMetadata>
+							</issuedTokenParameters>
+							<localClientSettings cacheCookies="false" detectReplays="false"
+							 replayCacheSize="600000" maxClockSkew="00:06:00" replayWindow="00:06:00"
+							 sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:06:00"
+							 reconnectTransportOnFailure="true" timestampValidityDuration="00:06:00"
+							 cookieRenewalThresholdPercentage="70" />
+							<localServiceSettings detectReplays="false" issuedCookieLifetime="15:00:00"
+							 maxStatefulNegotiations="256" replayCacheSize="600000" maxClockSkew="00:10:00"
+							 negotiationTimeout="00:02:00" replayWindow="00:08:00" inactivityTimeout="00:04:00"
+							 sessionKeyRenewalInterval="10:00:00" sessionKeyRolloverInterval="00:06:00"
+							 reconnectTransportOnFailure="false" maxPendingSessions="256"
+							 maxCachedCookies="2000" timestampValidityDuration="00:06:00" />
+						</secureConversationBootstrap>
+					</security>
+					<sslStreamSecurity requireClientCertificate="true" />
+					<transactionFlow transactionProtocol="WSAtomicTransactionOctober2004" />
+					<useManagedPresentation />
+				</binding>
+				<binding name="CustomBinding_2">
+					<textMessageEncoding maxReadPoolSize="128" maxWritePoolSize="32"
+					 messageVersion="Soap11WSAddressingAugust2004" writeEncoding="utf-32">
+						<readerQuotas maxDepth="128" maxStringContentLength="128" maxArrayLength="128"
+						 maxBytesPerRead="128" maxNameTableCharCount="128" />
+					</textMessageEncoding>
+					<windowsStreamSecurity protectionLevel="None" />
+					<httpsTransport manualAddressing="true" maxBufferPoolSize="262144"
+					 maxReceivedMessageSize="32768" allowCookies="true" authenticationScheme="None"
+					 bypassProxyOnLocal="true" hostNameComparisonMode="Exact" keepAliveEnabled="true"
+					 maxBufferSize="32768" proxyAddress="https://proxy.address" proxyAuthenticationScheme="None"
+					 realm="Realm" transferMode="Streamed" unsafeConnectionNtlmAuthentication="true"
+					 useDefaultWebProxy="false" requireClientCertificate="true" />
+				</binding>
+				<binding name="CustomBinding_3">
+					<mtomMessageEncoding maxReadPoolSize="128" maxWritePoolSize="32"
+					 messageVersion="Soap11WSAddressingAugust2004" maxBufferSize="32768"
+					 writeEncoding="utf-32">
+						<readerQuotas maxDepth="256" maxStringContentLength="256" maxArrayLength="256"
+						 maxBytesPerRead="256" maxNameTableCharCount="256" />
+					</mtomMessageEncoding>
+					<msmqIntegration manualAddressing="true" maxBufferPoolSize="262144"
+					 maxReceivedMessageSize="32768" customDeadLetterQueue="http://CustomDeadLetterQueue"
+					 deadLetterQueue="Custom" durable="false" exactlyOnce="false"
+					 maxRetryCycles="3" receiveErrorHandling="Drop" receiveRetryCount="10"
+					 retryCycleDelay="00:15:00" timeToLive="1.12:00:00" useSourceJournal="true"
+					 useMsmqTracing="true" serializationFormat="Binary">
+						<msmqTransportSecurity msmqAuthenticationMode="Certificate" msmqEncryptionAlgorithm="Aes"
+						 msmqProtectionLevel="EncryptAndSign" msmqSecureHashAlgorithm="Sha256" />
+					</msmqIntegration>
+				</binding>
+				<binding name="CustomBinding_4">
+					<msmqTransport manualAddressing="true" maxBufferPoolSize="262144"
+					 maxReceivedMessageSize="262144" customDeadLetterQueue="http://CustomDeadLetterQueue"
+					 deadLetterQueue="Custom" durable="false" exactlyOnce="false"
+					 maxRetryCycles="3" receiveErrorHandling="Drop" receiveRetryCount="9"
+					 retryCycleDelay="00:15:00" timeToLive="1.12:00:00" useSourceJournal="true"
+					 useMsmqTracing="true" maxPoolSize="16" queueTransferProtocol="Srmp"
+					 useActiveDirectory="true">
+						<msmqTransportSecurity msmqAuthenticationMode="Certificate" msmqEncryptionAlgorithm="Aes"
+						 msmqProtectionLevel="EncryptAndSign" msmqSecureHashAlgorithm="Sha256" />
+					</msmqTransport>
+				</binding>
+				<binding name="CustomBinding_5">
+					<namedPipeTransport manualAddressing="true" maxBufferPoolSize="262144"
+					 maxReceivedMessageSize="32768" connectionBufferSize="4096" hostNameComparisonMode="Exact"
+					 channelInitializationTimeout="00:00:20" maxBufferSize="32768"
+					 maxPendingConnections="5" maxOutputDelay="00:00:01.2000000" maxPendingAccepts="3"
+					 transferMode="Streamed">
+						<connectionPoolSettings groupName="GroupName" idleTimeout="00:06:00"
+						 maxOutboundConnectionsPerEndpoint="20" />
+					</namedPipeTransport>
+				</binding>
+				<binding name="CustomBinding_6">
+					<tcpTransport manualAddressing="true" maxBufferPoolSize="262144"
+					 maxReceivedMessageSize="32768" connectionBufferSize="4096" hostNameComparisonMode="Exact"
+					 channelInitializationTimeout="00:00:15" maxBufferSize="32768"
+					 maxPendingConnections="20" maxOutputDelay="00:00:01.2000000"
+					 maxPendingAccepts="3" transferMode="Streamed" listenBacklog="20"
+					 portSharingEnabled="true" teredoEnabled="true">
+						<connectionPoolSettings groupName="GroupName" leaseTimeout="00:15:00"
+						 idleTimeout="00:02:30" maxOutboundConnectionsPerEndpoint="30" />
+					</tcpTransport>
+				</binding>
+				<binding name="CustomBinding_7">
+					<peerTransport listenIPAddress="192.168.0.1" maxBufferPoolSize="262144"
+					 maxReceivedMessageSize="32768" port="88">
+						<security mode="Message">
+							<transport credentialType="Certificate" />
+						</security>
+					</peerTransport>
+				</binding>
+			</customBinding>
+		</bindings>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/empty
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/empty
@@ -1,3 +1,3 @@
-DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
-USING ConfigurationManager.OpenExeConfiguration API.
+DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+USING ConfigurationManager.OpenExeConfiguration API.
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/empty.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/empty.config
@@ -1,3 +1,3 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-</configuration>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+</configuration>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/endpointBehaviors
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/endpointBehaviors
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/endpointBehaviors.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/endpointBehaviors.config
@@ -1,35 +1,35 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-	<system.serviceModel>
-		<behaviors>
-			<endpointBehaviors>
-				<behavior name="NewBehavior">
-					<callbackDebug includeExceptionDetailInFaults="true" />
-					<callbackTimeouts transactionTimeout="00:02:30" />
-					<clientCredentials type="ClientCredentialType" supportInteractive="false">
-						<clientCertificate findValue="findValue" storeLocation="LocalMachine"
-						 storeName="Root" x509FindType="FindByExtension" />
-						<serviceCertificate>
-							<defaultCertificate findValue="findValue" storeLocation="LocalMachine"
-							 storeName="Root" x509FindType="FindByExtension" />
-							<scopedCertificates>
-								<add targetUri="http://target.uri" findValue="findValue" storeLocation="LocalMachine"
-								 storeName="Root" x509FindType="FindByExtension" />
-							</scopedCertificates>
-							<authentication customCertificateValidatorType="CustomCertificateValidatorType"
-							 certificateValidationMode="None" revocationMode="Offline" trustedStoreLocation="LocalMachine" />
-						</serviceCertificate>
-						<windows allowNtlm="false" allowedImpersonationLevel="None" />
-						<issuedToken cacheIssuedTokens="false" defaultKeyEntropyMode="ClientEntropy"
-						 issuedTokenRenewalThresholdPercentage="30" />
-						<httpDigest impersonationLevel="None" />
-					</clientCredentials>
-					<clientVia viaUri="http://via.uri" />
-					<dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="32768" />
-					<synchronousReceive />
-					<transactedBatching maxBatchSize="16" />
-				</behavior>
-			</endpointBehaviors>
-		</behaviors>
-	</system.serviceModel>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+	<system.serviceModel>
+		<behaviors>
+			<endpointBehaviors>
+				<behavior name="NewBehavior">
+					<callbackDebug includeExceptionDetailInFaults="true" />
+					<callbackTimeouts transactionTimeout="00:02:30" />
+					<clientCredentials type="ClientCredentialType" supportInteractive="false">
+						<clientCertificate findValue="findValue" storeLocation="LocalMachine"
+						 storeName="Root" x509FindType="FindByExtension" />
+						<serviceCertificate>
+							<defaultCertificate findValue="findValue" storeLocation="LocalMachine"
+							 storeName="Root" x509FindType="FindByExtension" />
+							<scopedCertificates>
+								<add targetUri="http://target.uri" findValue="findValue" storeLocation="LocalMachine"
+								 storeName="Root" x509FindType="FindByExtension" />
+							</scopedCertificates>
+							<authentication customCertificateValidatorType="CustomCertificateValidatorType"
+							 certificateValidationMode="None" revocationMode="Offline" trustedStoreLocation="LocalMachine" />
+						</serviceCertificate>
+						<windows allowNtlm="false" allowedImpersonationLevel="None" />
+						<issuedToken cacheIssuedTokens="false" defaultKeyEntropyMode="ClientEntropy"
+						 issuedTokenRenewalThresholdPercentage="30" />
+						<httpDigest impersonationLevel="None" />
+					</clientCredentials>
+					<clientVia viaUri="http://via.uri" />
+					<dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="32768" />
+					<synchronousReceive />
+					<transactedBatching maxBatchSize="16" />
+				</behavior>
+			</endpointBehaviors>
+		</behaviors>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/extensions
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/extensions
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/extensions.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/extensions.config
@@ -1,19 +1,19 @@
-﻿<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-	<system.serviceModel>
-		<extensions>
-			<bindingElementExtensions>
-				<add name="bindingElementExtensions1" type="MyBindingElementElement" />
-				<add name="bindingElementExtensions2" type="AnotherBindingElementElement" />
-			</bindingElementExtensions>
-			<behaviorExtensions>
-				<add name="behaviorExtensions1" type="MyBehaviorElement" />
-				<add name="behaviorExtensions2" type="AnotherBehaviorElement" />
-			</behaviorExtensions>
-			<bindingExtensions>
-				<add name="bindingExtensions1" type="MyBindingCollectionElement" />
-				<add name="bindingExtensions2" type="AnotherBindingCollectionElement" />
-			</bindingExtensions>
-		</extensions>
-	</system.serviceModel>
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+	<system.serviceModel>
+		<extensions>
+			<bindingElementExtensions>
+				<add name="bindingElementExtensions1" type="MyBindingElementElement" />
+				<add name="bindingElementExtensions2" type="AnotherBindingElementElement" />
+			</bindingElementExtensions>
+			<behaviorExtensions>
+				<add name="behaviorExtensions1" type="MyBehaviorElement" />
+				<add name="behaviorExtensions2" type="AnotherBehaviorElement" />
+			</behaviorExtensions>
+			<bindingExtensions>
+				<add name="bindingExtensions1" type="MyBindingCollectionElement" />
+				<add name="bindingExtensions2" type="AnotherBindingCollectionElement" />
+			</bindingExtensions>
+		</extensions>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/netTcpBinding
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/netTcpBinding
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/netTcpBinding.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/netTcpBinding.config
@@ -1,33 +1,33 @@
-﻿<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-	<system.serviceModel>
-		<bindings>
-			<netTcpBinding>
-				<binding name="NetTcpBinding_IHelloWorldService" closeTimeout="00:01:00"
-                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
-                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
-                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
-                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
-                    maxReceivedMessageSize="65536">
-					<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
-                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
-					<reliableSession ordered="true" inactivityTimeout="00:10:00"
-                        enabled="false" />
-					<security mode="Transport">
-						<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
-						<message clientCredentialType="Windows" />
-					</security>
-				</binding>
-			</netTcpBinding>
-		</bindings>
-		<client>
-			<endpoint address="net.tcp://igorxp:8081/" binding="netTcpBinding"
-                bindingConfiguration="NetTcpBinding_IHelloWorldService" contract="WCFClient.IHelloWorldService"
-                name="NetTcpBinding_IHelloWorldService">
-				<identity>
-					<userPrincipalName value="igorz@iloffice.mainsoft.com" />
-				</identity>
-			</endpoint>
-		</client>
-	</system.serviceModel>
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+	<system.serviceModel>
+		<bindings>
+			<netTcpBinding>
+				<binding name="NetTcpBinding_IHelloWorldService" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
+                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
+                    maxReceivedMessageSize="65536">
+					<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+					<reliableSession ordered="true" inactivityTimeout="00:10:00"
+                        enabled="false" />
+					<security mode="Transport">
+						<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
+						<message clientCredentialType="Windows" />
+					</security>
+				</binding>
+			</netTcpBinding>
+		</bindings>
+		<client>
+			<endpoint address="net.tcp://igorxp:8081/" binding="netTcpBinding"
+                bindingConfiguration="NetTcpBinding_IHelloWorldService" contract="WCFClient.IHelloWorldService"
+                name="NetTcpBinding_IHelloWorldService">
+				<identity>
+					<userPrincipalName value="igorz@iloffice.mainsoft.com" />
+				</identity>
+			</endpoint>
+		</client>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/service
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/service
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/service.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/service.config
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-	<system.serviceModel>
-		<services>
-			<service name="ServiceType">
-				<endpoint address="/rooted.path" 
-						  binding="basicHttpBinding"
-						  name="basicHttp" 
-						  contract="HttpServiceContract">
-					<headers>
-						<Tag>Value</Tag>
-					</headers>
-				</endpoint>
-				<endpoint  binding="wsHttpBinding"
-						   address="http://other.endpoint.com"
-						   contract="WSServiceContract">
-				</endpoint>
-				<endpoint address="path" 
-						  binding="netTcpBinding"
-						  bindingConfiguration="" 
-						  name="netTcp"
-						  contract="TcpServiceContract" />
-				<host>
-					<baseAddresses>
-						<add baseAddress="http://endpoint.com/some.path" />
-						<add baseAddress="net.tcp://endpoint.com" />
-					</baseAddresses>
-					<timeouts closeTimeout="00:00:20" openTimeout="00:02:00" />
-				</host>
-			</service>
-			<service name="AnotherServiceType">
-				<endpoint binding="basicHttpBinding" contract="HttpServiceContract"></endpoint>
-				<endpoint binding="basicHttpBinding" bindingName="MyBinding" contract="HttpServiceContract"></endpoint>
-				<endpoint binding="basicHttpBinding" address="aaa" contract="HttpServiceContract"></endpoint>
-				<host>
-					<baseAddresses>
-						<add baseAddress="http://kuku.com"/>
-					</baseAddresses>
-				</host>
-			</service>
-		</services>
-	</system.serviceModel>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+	<system.serviceModel>
+		<services>
+			<service name="ServiceType">
+				<endpoint address="/rooted.path" 
+						  binding="basicHttpBinding"
+						  name="basicHttp" 
+						  contract="HttpServiceContract">
+					<headers>
+						<Tag>Value</Tag>
+					</headers>
+				</endpoint>
+				<endpoint  binding="wsHttpBinding"
+						   address="http://other.endpoint.com"
+						   contract="WSServiceContract">
+				</endpoint>
+				<endpoint address="path" 
+						  binding="netTcpBinding"
+						  bindingConfiguration="" 
+						  name="netTcp"
+						  contract="TcpServiceContract" />
+				<host>
+					<baseAddresses>
+						<add baseAddress="http://endpoint.com/some.path" />
+						<add baseAddress="net.tcp://endpoint.com" />
+					</baseAddresses>
+					<timeouts closeTimeout="00:00:20" openTimeout="00:02:00" />
+				</host>
+			</service>
+			<service name="AnotherServiceType">
+				<endpoint binding="basicHttpBinding" contract="HttpServiceContract"></endpoint>
+				<endpoint binding="basicHttpBinding" bindingName="MyBinding" contract="HttpServiceContract"></endpoint>
+				<endpoint binding="basicHttpBinding" address="aaa" contract="HttpServiceContract"></endpoint>
+				<host>
+					<baseAddresses>
+						<add baseAddress="http://kuku.com"/>
+					</baseAddresses>
+				</host>
+			</service>
+		</services>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/serviceBehaviors
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/serviceBehaviors
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/serviceBehaviors.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/serviceBehaviors.config
@@ -1,66 +1,66 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-	<system.serviceModel>
-		<behaviors>
-			<serviceBehaviors>
-				<behavior name="NewBehavior">
-					<serviceAuthorization principalPermissionMode="UseAspNetRoles"
-					 roleProviderName="RoleProvider" impersonateCallerForAllOperations="true"
-					 serviceAuthorizationManagerType="SerAuthManagType">
-						<authorizationPolicies>
-							<add policyType="PolicyType1" />
-							<add policyType="PolicyType2" />
-						</authorizationPolicies>
-					</serviceAuthorization>
-					<dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="32768" />
-					<serviceCredentials type="ServiceCredentialsType">
-						<clientCertificate>
-							<certificate findValue="FindValue" storeLocation="CurrentUser"
-							 storeName="Root" x509FindType="FindByIssuerName" />
-							<authentication customCertificateValidatorType="CustomCertificateValidationType"
-							 certificateValidationMode="PeerOrChainTrust" revocationMode="Offline"
-							 trustedStoreLocation="CurrentUser" includeWindowsGroups="false"
-							 mapClientCertificateToWindowsAccount="true" />
-						</clientCertificate>
-						<serviceCertificate findValue="FindValue" storeLocation="CurrentUser"
-						 storeName="Root" x509FindType="FindByIssuerName" />
-						<userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
-						 includeWindowsGroups="false" membershipProviderName="MembershipProviderName"
-						 customUserNamePasswordValidatorType="CustomUserNamePasswordValidatorType"
-						 cacheLogonTokens="true" maxCachedLogonTokens="252" cachedLogonTokenLifetime="00:30:00" />
-						<windowsAuthentication includeWindowsGroups="false" allowAnonymousLogons="true" />
-						<peer>
-							<certificate findValue="FindValue" storeLocation="LocalMachine"
-							 storeName="Root" x509FindType="FindByIssuerName" />
-							<peerAuthentication customCertificateValidatorType="CustomCertificateValidatorType"
-							 certificateValidationMode="Custom" revocationMode="Offline" trustedStoreLocation="LocalMachine" />
-							<messageSenderAuthentication customCertificateValidatorType="CustomCertificateValidatorType"
-							 certificateValidationMode="None" revocationMode="Offline" trustedStoreLocation="LocalMachine" />
-						</peer>
-						<issuedTokenAuthentication customCertificateValidatorType="CustomCertificateValidatorType"
-						 certificateValidationMode="PeerOrChainTrust" revocationMode="Offline"
-						 trustedStoreLocation="CurrentUser" samlSerializerType="SalmSerializerType"
-						 allowUntrustedRsaIssuers="true">
-							<knownCertificates>
-								<add findValue="FindValue" storeLocation="CurrentUser" storeName="Root"
-								 x509FindType="FindByIssuerName" />
-							</knownCertificates>
-						</issuedTokenAuthentication>
-						<secureConversationAuthentication securityStateEncoderType="SecurityStateEncoderType" />
-					</serviceCredentials>
-					<serviceDebug httpHelpPageEnabled="false" httpHelpPageUrl="http://help.page.url"
-					 httpsHelpPageEnabled="false" httpsHelpPageUrl="https://help.page.url"
-					 includeExceptionDetailInFaults="true" />
-					<serviceMetadata externalMetadataLocation="http://external.metadata.location"
-					 httpGetEnabled="true" httpGetUrl="http://get.url" httpsGetEnabled="true"
-					 httpsGetUrl="https://get.url" policyVersion="Default" />
-					<serviceSecurityAudit auditLogLocation="Application" suppressAuditFailure="false"
-					 serviceAuthorizationAuditLevel="Success" messageAuthenticationAuditLevel="Success" />
-					<serviceThrottling maxConcurrentCalls="32" maxConcurrentSessions="20"
-					 maxConcurrentInstances="14" />
-					<serviceTimeouts transactionTimeout="00:03:00" />
-				</behavior>
-			</serviceBehaviors>
-		</behaviors>
-	</system.serviceModel>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+	<system.serviceModel>
+		<behaviors>
+			<serviceBehaviors>
+				<behavior name="NewBehavior">
+					<serviceAuthorization principalPermissionMode="UseAspNetRoles"
+					 roleProviderName="RoleProvider" impersonateCallerForAllOperations="true"
+					 serviceAuthorizationManagerType="SerAuthManagType">
+						<authorizationPolicies>
+							<add policyType="PolicyType1" />
+							<add policyType="PolicyType2" />
+						</authorizationPolicies>
+					</serviceAuthorization>
+					<dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="32768" />
+					<serviceCredentials type="ServiceCredentialsType">
+						<clientCertificate>
+							<certificate findValue="FindValue" storeLocation="CurrentUser"
+							 storeName="Root" x509FindType="FindByIssuerName" />
+							<authentication customCertificateValidatorType="CustomCertificateValidationType"
+							 certificateValidationMode="PeerOrChainTrust" revocationMode="Offline"
+							 trustedStoreLocation="CurrentUser" includeWindowsGroups="false"
+							 mapClientCertificateToWindowsAccount="true" />
+						</clientCertificate>
+						<serviceCertificate findValue="FindValue" storeLocation="CurrentUser"
+						 storeName="Root" x509FindType="FindByIssuerName" />
+						<userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
+						 includeWindowsGroups="false" membershipProviderName="MembershipProviderName"
+						 customUserNamePasswordValidatorType="CustomUserNamePasswordValidatorType"
+						 cacheLogonTokens="true" maxCachedLogonTokens="252" cachedLogonTokenLifetime="00:30:00" />
+						<windowsAuthentication includeWindowsGroups="false" allowAnonymousLogons="true" />
+						<peer>
+							<certificate findValue="FindValue" storeLocation="LocalMachine"
+							 storeName="Root" x509FindType="FindByIssuerName" />
+							<peerAuthentication customCertificateValidatorType="CustomCertificateValidatorType"
+							 certificateValidationMode="Custom" revocationMode="Offline" trustedStoreLocation="LocalMachine" />
+							<messageSenderAuthentication customCertificateValidatorType="CustomCertificateValidatorType"
+							 certificateValidationMode="None" revocationMode="Offline" trustedStoreLocation="LocalMachine" />
+						</peer>
+						<issuedTokenAuthentication customCertificateValidatorType="CustomCertificateValidatorType"
+						 certificateValidationMode="PeerOrChainTrust" revocationMode="Offline"
+						 trustedStoreLocation="CurrentUser" samlSerializerType="SalmSerializerType"
+						 allowUntrustedRsaIssuers="true">
+							<knownCertificates>
+								<add findValue="FindValue" storeLocation="CurrentUser" storeName="Root"
+								 x509FindType="FindByIssuerName" />
+							</knownCertificates>
+						</issuedTokenAuthentication>
+						<secureConversationAuthentication securityStateEncoderType="SecurityStateEncoderType" />
+					</serviceCredentials>
+					<serviceDebug httpHelpPageEnabled="false" httpHelpPageUrl="http://help.page.url"
+					 httpsHelpPageEnabled="false" httpsHelpPageUrl="https://help.page.url"
+					 includeExceptionDetailInFaults="true" />
+					<serviceMetadata externalMetadataLocation="http://external.metadata.location"
+					 httpGetEnabled="true" httpGetUrl="http://get.url" httpsGetEnabled="true"
+					 httpsGetUrl="https://get.url" policyVersion="Default" />
+					<serviceSecurityAudit auditLogLocation="Application" suppressAuditFailure="false"
+					 serviceAuthorizationAuditLevel="Success" messageAuthenticationAuditLevel="Success" />
+					<serviceThrottling maxConcurrentCalls="32" maxConcurrentSessions="20"
+					 maxConcurrentInstances="14" />
+					<serviceTimeouts transactionTimeout="00:03:00" />
+				</behavior>
+			</serviceBehaviors>
+		</behaviors>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/test1
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/test1
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/userBinding
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/userBinding
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/userBinding.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/userBinding.config
@@ -1,18 +1,18 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-	<system.serviceModel>
-		<bindings>
-			<userBinding>
-				<binding name="UserBinding_1" closeTimeout="00:02:00" openTimeout="00:01:30"
-                    receiveTimeout="00:15:00" sendTimeout="00:01:30" />
-				<binding name="UserBinding_2" closeTimeout="00:03:00" openTimeout="00:01:40"
-                    receiveTimeout="00:13:00" sendTimeout="00:02:30" />
-			</userBinding>
-		</bindings>
-		<extensions>
-			<bindingExtensions>
-				<add name="userBinding" type="MonoTests.System.ServiceModel.Configuration.UserBindingCollectionElement, System.ServiceModel_test_net_3_0, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
-			</bindingExtensions>
-		</extensions>
-	</system.serviceModel>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+	<system.serviceModel>
+		<bindings>
+			<userBinding>
+				<binding name="UserBinding_1" closeTimeout="00:02:00" openTimeout="00:01:30"
+                    receiveTimeout="00:15:00" sendTimeout="00:01:30" />
+				<binding name="UserBinding_2" closeTimeout="00:03:00" openTimeout="00:01:40"
+                    receiveTimeout="00:13:00" sendTimeout="00:02:30" />
+			</userBinding>
+		</bindings>
+		<extensions>
+			<bindingExtensions>
+				<add name="userBinding" type="MonoTests.System.ServiceModel.Configuration.UserBindingCollectionElement, System.ServiceModel_test_net_3_0, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
+			</bindingExtensions>
+		</extensions>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/wsHttpBinding
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/wsHttpBinding
@@ -1,3 +1,3 @@
-﻿DO NOT DELETE,
-IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
+﻿DO NOT DELETE,
+IT IS PLACEHOLDER, REQUIRED FOR READING *.config FILE
 USING ConfigurationManager.OpenExeConfiguration API.
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.ServiceModel/Test/config/wsHttpBinding.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.ServiceModel/Test/config/wsHttpBinding.config
@@ -1,31 +1,31 @@
-﻿<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
-	<system.serviceModel>
-		<bindings>
-			<wsHttpBinding>
-				<binding name="WSHttpBinding_IHelloWorldService" closeTimeout="00:01:00"
-                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
-                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
-                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
-                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
-                    allowCookies="false">
-					<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
-                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
-					<reliableSession ordered="true" inactivityTimeout="00:10:00"
-                        enabled="false" />
-					<security mode="Message">
-						<transport clientCredentialType="Windows" proxyCredentialType="None"
-                            realm="" />
-						<message clientCredentialType="Windows" negotiateServiceCredential="true"
-                            algorithmSuite="Default" establishSecurityContext="true" />
-					</security>
-				</binding>
-			</wsHttpBinding>
-		</bindings>
-		<client>
-			<endpoint address="http://localhost:2160/WCFWebApp/Service.svc"
-                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Service"
-                contract="ServiceReference1.Service" name="BasicHttpBinding_Service" />
-		</client>
-	</system.serviceModel>
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+	<system.serviceModel>
+		<bindings>
+			<wsHttpBinding>
+				<binding name="WSHttpBinding_IHelloWorldService" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
+                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
+                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
+                    allowCookies="false">
+					<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+					<reliableSession ordered="true" inactivityTimeout="00:10:00"
+                        enabled="false" />
+					<security mode="Message">
+						<transport clientCredentialType="Windows" proxyCredentialType="None"
+                            realm="" />
+						<message clientCredentialType="Windows" negotiateServiceCredential="true"
+                            algorithmSuite="Default" establishSecurityContext="true" />
+					</security>
+				</binding>
+			</wsHttpBinding>
+		</bindings>
+		<client>
+			<endpoint address="http://localhost:2160/WCFWebApp/Service.svc"
+                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Service"
+                contract="ServiceReference1.Service" name="BasicHttpBinding_Service" />
+		</client>
+	</system.serviceModel>
 </configuration>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.DynamicData/Test/WebPages/Site.css
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.DynamicData/Test/WebPages/Site.css
@@ -1,272 +1,272 @@
-﻿/* Cascading Stylesheet for Common Elements */
-
-/* Begin: General */
-body.template
-{
-    padding-left: 8px;
-    padding-right: 8px;
-    font-family: Tahoma, Arial, sans-serif;
-    font-size: 75%;
-    color: #666666;
-}
-body.template h1
-{
-    padding-bottom: 12px;
-    border-bottom: 1px dotted #bbbbbb;
-    font-size: 2.2em;
-    font-family: Trebuchet MS, Arial, sans-serif;
-    color: #888888;
-}
-span.allcaps
-{
-    font-variant: small-caps;
-}
-body.template h2
-{
-    margin-bottom: 10px;
-    font-family: Trebuchet MS, Arial, sans-serif;
-    font-size: 1.65em;
-    color: #888888;
-}
-div.back
-{
-    margin-bottom: -20px;
-    position: relative;
-    top: -28px;
-    padding-left: 5px;
-    padding-bottom: 5px;
-}
-div.back img
-{
-    position: relative;
-    margin-top: 0em;
-    padding-left: 8px;
-    padding-right: 8px;
-    border: none;
-    background-color: #ffffff;
-}
-div.back a:link,
-div.back a:visited
-{
-    color: #839ce7;
-    text-decoration: none;
-    background-color: #ffffff;
-    padding-right: 8px;
-    top: -.2em;
-    left: .25em;
-}
-div.back a:hover
-{
-    color: #000099;
-    text-decoration: underline !important;
-}
-/* End: General */
-
-/* Begin: Tables */
-body.template table.listview, table.gridview, table.detailstable 
-{
-    border: 1px solid #dbddff; 
-    border-bottom: 3px solid #dbddff;
-    border-collapse: collapse;
-    font-family: Tahoma, Arial, sans-serif;
-    color: #666666;
-    font-size: 95%; 
-
-}
-
-body.template table.listview th, table.gridview th, table.detailstable th,
-body.template table.listview td, table.gridview td, table.detailstable td 
-{
-    padding-top: 6px;
-    padding-bottom: 6px;
-    padding-left: 10px;
-    padding-right: 10px;
-    line-height: 1.1em;
-}
-
-body.template table.listview th, table.gridview th, table.detailstable th
-{
-    background-position: 1px 1px;
-    background-repeat: repeat-x;
-    background-color: #ffffff;
-    font-size: 100%;
-    text-align: left;
-    line-height: 1.3em;
-    color: #666666;
-    border-left: 1px solid #dbddff;
-    border-right: 1px solid #dbddff;
-    border-bottom: 1px solid #dbddff;
-}
-
-body.template table.listview td, table.gridview td, table.detailstable td
-{
-    border-left: 0px;
-    border-right: 0px;
-    border-bottom: 1px dotted #dadada;
-}
-
-body.template td.bold {
-    font-weight:bold;
-}
-
-body.template th a:link,
-body.template th a:visited,
-body.template th a:hover
-{
-    color: #666666;
-    text-decoration: none;
-}
-
-body.template td a:link,
-body.template td a:visited
-{
-    color: #718ABE;
-    text-decoration: none;
-    padding-right: 6px;
-}
-body.template td a:hover
-{
-    color: #000099;
-    text-decoration: underline !important;
-}
-table.gridview
-{
-    width: 100%;
-}
-table.gridview table td
-{
-    padding-left: .5em;
-    padding-right: .5em;
-}
-
-table.gridview th {
-    background-image:url(DynamicData/Content/Images/header_back.gif);
-}
-
-table.listview
-{
-    width: 100%;
-}
-table.listview td a:link, 
-table.listview td a:visited
-{
-    font-size: 100%;
-}
-table.listview table td
-{
-    padding-left: .5em;
-    padding-right: .5em;
-}
-
-table.listview th {
-    background-image:url(DynamicData/Content/Images/header_back.gif);
-}
-
-table.detailstable td
-{
-    border-left: 1px solid #dbddff;
-    border-right: 1px solid #dbddff;
-    vertical-align:top;
-}
-
-table.detailstable th
-{
-    background: #FCFDFE;
-    vertical-align:top;
-}
-
-td.nowrap 
-{
-    white-space: nowrap;
-}
-/* The following modifies the details table */
-body.template tr
-{
-    background: #FCFDFE;
-}
-/* The following modifies the controls in the list table footer */
-tr.footer td
-{
-    background: #dbddff;
-    height: 1.5em;
-}
-
-/* The following modifies the selected row in the list table */
-tr.selected td
-{
-    background: #fdffb8;
-}
-
-/* End: Tables */
-
-/* The following modifies the page number control which exists under the main table */
-div.pager
-{
-    padding: 0px;
-    padding-left: 6px;
-    padding-right: 6px;
-}
-span.results1
-{
-    float:left;
-}
-span.results2
-{
-    float:right;
-}
-/* The following modifies the results per page control which exists under the main table */
-div.results
-{
-    display: inline;
-    position: relative;
-    padding: 0px;
-    padding-left: 6px;
-    padding-right: 6px;
-    margin-top: -1.75em;
-    float:right;
-}
-/* Set's the appearance of the drop down control*/
-.droplist
-{
-    padding: 0px;
-    font-family: Tahoma, Arial, Sans-Serif;
-    font-size: .95em;
-    color: #666666;
-}
-/* Bottom hyperlink design*/
-div.bottomhyperlink
-{
-    font-family: Tahoma, Arial, Sans-Serif;
-    font-size: 100%;
-    margin-top: -3px;
-}
-div.bottomhyperlink a:link,
-div.bottomhyperlink a:visited
-{
-    color: #839ce7;
-    text-decoration: none;
-
-    font-family: Tahoma, Arial, Sans-Serif;
-
-    font-size: 100%;
-
-    margin-top: -3px;
-}
-div.bottomhyperlink a:hover
-{
-
-    color: #000099;
-
-    text-decoration: underline !important;
-
-    font-family: Tahoma, Arial, Sans-Serif;
-
-    font-size: 100%;
-}
-div.bottomhyperlink img
-{
-    position: relative;
-    top: 0em;
-    padding-right: .4em;
-    border: none;
+﻿/* Cascading Stylesheet for Common Elements */
+
+/* Begin: General */
+body.template
+{
+    padding-left: 8px;
+    padding-right: 8px;
+    font-family: Tahoma, Arial, sans-serif;
+    font-size: 75%;
+    color: #666666;
+}
+body.template h1
+{
+    padding-bottom: 12px;
+    border-bottom: 1px dotted #bbbbbb;
+    font-size: 2.2em;
+    font-family: Trebuchet MS, Arial, sans-serif;
+    color: #888888;
+}
+span.allcaps
+{
+    font-variant: small-caps;
+}
+body.template h2
+{
+    margin-bottom: 10px;
+    font-family: Trebuchet MS, Arial, sans-serif;
+    font-size: 1.65em;
+    color: #888888;
+}
+div.back
+{
+    margin-bottom: -20px;
+    position: relative;
+    top: -28px;
+    padding-left: 5px;
+    padding-bottom: 5px;
+}
+div.back img
+{
+    position: relative;
+    margin-top: 0em;
+    padding-left: 8px;
+    padding-right: 8px;
+    border: none;
+    background-color: #ffffff;
+}
+div.back a:link,
+div.back a:visited
+{
+    color: #839ce7;
+    text-decoration: none;
+    background-color: #ffffff;
+    padding-right: 8px;
+    top: -.2em;
+    left: .25em;
+}
+div.back a:hover
+{
+    color: #000099;
+    text-decoration: underline !important;
+}
+/* End: General */
+
+/* Begin: Tables */
+body.template table.listview, table.gridview, table.detailstable 
+{
+    border: 1px solid #dbddff; 
+    border-bottom: 3px solid #dbddff;
+    border-collapse: collapse;
+    font-family: Tahoma, Arial, sans-serif;
+    color: #666666;
+    font-size: 95%; 
+
+}
+
+body.template table.listview th, table.gridview th, table.detailstable th,
+body.template table.listview td, table.gridview td, table.detailstable td 
+{
+    padding-top: 6px;
+    padding-bottom: 6px;
+    padding-left: 10px;
+    padding-right: 10px;
+    line-height: 1.1em;
+}
+
+body.template table.listview th, table.gridview th, table.detailstable th
+{
+    background-position: 1px 1px;
+    background-repeat: repeat-x;
+    background-color: #ffffff;
+    font-size: 100%;
+    text-align: left;
+    line-height: 1.3em;
+    color: #666666;
+    border-left: 1px solid #dbddff;
+    border-right: 1px solid #dbddff;
+    border-bottom: 1px solid #dbddff;
+}
+
+body.template table.listview td, table.gridview td, table.detailstable td
+{
+    border-left: 0px;
+    border-right: 0px;
+    border-bottom: 1px dotted #dadada;
+}
+
+body.template td.bold {
+    font-weight:bold;
+}
+
+body.template th a:link,
+body.template th a:visited,
+body.template th a:hover
+{
+    color: #666666;
+    text-decoration: none;
+}
+
+body.template td a:link,
+body.template td a:visited
+{
+    color: #718ABE;
+    text-decoration: none;
+    padding-right: 6px;
+}
+body.template td a:hover
+{
+    color: #000099;
+    text-decoration: underline !important;
+}
+table.gridview
+{
+    width: 100%;
+}
+table.gridview table td
+{
+    padding-left: .5em;
+    padding-right: .5em;
+}
+
+table.gridview th {
+    background-image:url(DynamicData/Content/Images/header_back.gif);
+}
+
+table.listview
+{
+    width: 100%;
+}
+table.listview td a:link, 
+table.listview td a:visited
+{
+    font-size: 100%;
+}
+table.listview table td
+{
+    padding-left: .5em;
+    padding-right: .5em;
+}
+
+table.listview th {
+    background-image:url(DynamicData/Content/Images/header_back.gif);
+}
+
+table.detailstable td
+{
+    border-left: 1px solid #dbddff;
+    border-right: 1px solid #dbddff;
+    vertical-align:top;
+}
+
+table.detailstable th
+{
+    background: #FCFDFE;
+    vertical-align:top;
+}
+
+td.nowrap 
+{
+    white-space: nowrap;
+}
+/* The following modifies the details table */
+body.template tr
+{
+    background: #FCFDFE;
+}
+/* The following modifies the controls in the list table footer */
+tr.footer td
+{
+    background: #dbddff;
+    height: 1.5em;
+}
+
+/* The following modifies the selected row in the list table */
+tr.selected td
+{
+    background: #fdffb8;
+}
+
+/* End: Tables */
+
+/* The following modifies the page number control which exists under the main table */
+div.pager
+{
+    padding: 0px;
+    padding-left: 6px;
+    padding-right: 6px;
+}
+span.results1
+{
+    float:left;
+}
+span.results2
+{
+    float:right;
+}
+/* The following modifies the results per page control which exists under the main table */
+div.results
+{
+    display: inline;
+    position: relative;
+    padding: 0px;
+    padding-left: 6px;
+    padding-right: 6px;
+    margin-top: -1.75em;
+    float:right;
+}
+/* Set's the appearance of the drop down control*/
+.droplist
+{
+    padding: 0px;
+    font-family: Tahoma, Arial, Sans-Serif;
+    font-size: .95em;
+    color: #666666;
+}
+/* Bottom hyperlink design*/
+div.bottomhyperlink
+{
+    font-family: Tahoma, Arial, Sans-Serif;
+    font-size: 100%;
+    margin-top: -3px;
+}
+div.bottomhyperlink a:link,
+div.bottomhyperlink a:visited
+{
+    color: #839ce7;
+    text-decoration: none;
+
+    font-family: Tahoma, Arial, Sans-Serif;
+
+    font-size: 100%;
+
+    margin-top: -3px;
+}
+div.bottomhyperlink a:hover
+{
+
+    color: #000099;
+
+    text-decoration: underline !important;
+
+    font-family: Tahoma, Arial, Sans-Serif;
+
+    font-size: 100%;
+}
+div.bottomhyperlink img
+{
+    position: relative;
+    top: 0em;
+    padding-right: .4em;
+    border: none;
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.DynamicData/Test/WebPages/Site.master
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.DynamicData/Test/WebPages/Site.master
@@ -1,25 +1,25 @@
-﻿<%@ Master Language="C#" CodeFile="Site.master.cs" Inherits="Site" %>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head runat="server">
-    <title>Dynamic Data Site</title>
-    <link href="~/Site.css" rel="stylesheet" type="text/css" />
-</head>
-<body class="template">
-    <h1><span class="allcaps">Dynamic Data Site</span></h1>
-    <div class="back">
-        <a runat="server" href="~/"><img alt="Back to home page" runat="server" src="DynamicData/Content/Images/back.gif" />Back to home page</a>
-    </div>
-
-    <form id="form1" runat="server">
-    <div>
-        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/>
-        
-        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
-        </asp:ContentPlaceHolder>
-    </div>
-    </form>
-</body>
-</html>
+﻿<%@ Master Language="C#" CodeFile="Site.master.cs" Inherits="Site" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+    <title>Dynamic Data Site</title>
+    <link href="~/Site.css" rel="stylesheet" type="text/css" />
+</head>
+<body class="template">
+    <h1><span class="allcaps">Dynamic Data Site</span></h1>
+    <div class="back">
+        <a runat="server" href="~/"><img alt="Back to home page" runat="server" src="DynamicData/Content/Images/back.gif" />Back to home page</a>
+    </div>
+
+    <form id="form1" runat="server">
+    <div>
+        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/>
+        
+        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
+        </asp:ContentPlaceHolder>
+    </div>
+    </form>
+</body>
+</html>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/Resources/MicrosoftAjaxExtension.js
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/Resources/MicrosoftAjaxExtension.js
@@ -1,73 +1,73 @@
-Sys._Application.prototype.getForm = function Sys$_Application$getForm() {
-	return this._form;
-}
-
-Sys.Application._form = {
-	_application : Sys.Application
-}
-
-Sys.Application = {
-	_globalInstance : Sys.Application,
-	notifyScriptLoaded : Sys.Application.notifyScriptLoaded,
-
-	getInstance : function Sys$Application$getInstance(formElement) {
-		/// <param name="formElement" domElement="true"></param>
-		/// <returns type="Sys.Application"></returns>
-		var e = Function._validateParams(arguments, [
-			{name: "formElement", domElement: true}
-		]);
-		return formElement._application;
-	},
-
-	_initialize : function Sys$Application$_initialize(formElement) {
-		if (formElement._application) {
-			throw Error.invalidOperation('The Application cannot be initialized more than once.');
-		}
-		formElement._application = new Sys._Application();
-		formElement._application._form = formElement;
-	}
-}
-
-Sys.Component.prototype.registerWithApplication = function Sys$Component$registerWithApplication(application) {
-	/// <param name="application" type="Sys._Application"></param>
-	var e = Function._validateParams(arguments, [
-		{name: "application", type: Sys._Application}
-	]);
-	if (e) throw e;
-	if(this._application)
-		return;
-	this._application = application;
-	application.registerDisposableObject(this)
-}
-
-Sys.Component.prototype.registerAsSingleton = function Sys$Component$registerAsSingleton() {
-	if (arguments.length !== 0) throw Error.parameterCount();
-	this.registerWithApplication(Sys.Application._globalInstance);
-}
-
-Sys.Component.prototype.getApplication = function Sys$Component$getApplication() {
-	return this._application;
-}
-
-var $create = Sys.Component.create = function Sys$Component$createWithForm(formElement, type, properties, events, references, element) {
-	/// <param name="formElement" domElement="true"></param>
-	/// <param name="type" type="Type"></param>
-	/// <param name="properties" optional="true" mayBeNull="true"></param>
-	/// <param name="events" optional="true" mayBeNull="true"></param>
-	/// <param name="references" optional="true" mayBeNull="true"></param>
-	/// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
-	/// <returns type="Sys.UI.Component"></returns>
-	var e = Function._validateParams(arguments, [
-		{name: "formElement", domElement: true},
-		{name: "type", type: Type},
-		{name: "properties", mayBeNull: true, optional: true},
-		{name: "events", mayBeNull: true, optional: true},
-		{name: "references", mayBeNull: true, optional: true},
-		{name: "element", mayBeNull: true, domElement: true, optional: true}
-	]);
-	if (e) throw e;
-    
-	return Sys.Component._createInternal(formElement._application, type, properties, events, references, element);
-}
-
-var $find = null;
+Sys._Application.prototype.getForm = function Sys$_Application$getForm() {
+	return this._form;
+}
+
+Sys.Application._form = {
+	_application : Sys.Application
+}
+
+Sys.Application = {
+	_globalInstance : Sys.Application,
+	notifyScriptLoaded : Sys.Application.notifyScriptLoaded,
+
+	getInstance : function Sys$Application$getInstance(formElement) {
+		/// <param name="formElement" domElement="true"></param>
+		/// <returns type="Sys.Application"></returns>
+		var e = Function._validateParams(arguments, [
+			{name: "formElement", domElement: true}
+		]);
+		return formElement._application;
+	},
+
+	_initialize : function Sys$Application$_initialize(formElement) {
+		if (formElement._application) {
+			throw Error.invalidOperation('The Application cannot be initialized more than once.');
+		}
+		formElement._application = new Sys._Application();
+		formElement._application._form = formElement;
+	}
+}
+
+Sys.Component.prototype.registerWithApplication = function Sys$Component$registerWithApplication(application) {
+	/// <param name="application" type="Sys._Application"></param>
+	var e = Function._validateParams(arguments, [
+		{name: "application", type: Sys._Application}
+	]);
+	if (e) throw e;
+	if(this._application)
+		return;
+	this._application = application;
+	application.registerDisposableObject(this)
+}
+
+Sys.Component.prototype.registerAsSingleton = function Sys$Component$registerAsSingleton() {
+	if (arguments.length !== 0) throw Error.parameterCount();
+	this.registerWithApplication(Sys.Application._globalInstance);
+}
+
+Sys.Component.prototype.getApplication = function Sys$Component$getApplication() {
+	return this._application;
+}
+
+var $create = Sys.Component.create = function Sys$Component$createWithForm(formElement, type, properties, events, references, element) {
+	/// <param name="formElement" domElement="true"></param>
+	/// <param name="type" type="Type"></param>
+	/// <param name="properties" optional="true" mayBeNull="true"></param>
+	/// <param name="events" optional="true" mayBeNull="true"></param>
+	/// <param name="references" optional="true" mayBeNull="true"></param>
+	/// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
+	/// <returns type="Sys.UI.Component"></returns>
+	var e = Function._validateParams(arguments, [
+		{name: "formElement", domElement: true},
+		{name: "type", type: Type},
+		{name: "properties", mayBeNull: true, optional: true},
+		{name: "events", mayBeNull: true, optional: true},
+		{name: "references", mayBeNull: true, optional: true},
+		{name: "element", mayBeNull: true, domElement: true, optional: true}
+	]);
+	if (e) throw e;
+    
+	return Sys.Component._createInternal(formElement._application, type, properties, events, references, element);
+}
+
+var $find = null;
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/Resources/MicrosoftAjaxWebFormsExtension.js
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/Resources/MicrosoftAjaxWebFormsExtension.js
@@ -1,17 +1,17 @@
-Sys.WebForms.PageRequestManager.getInstance = function Sys$WebForms$PageRequestManager$getInstance(formElement) {
-    /// <param name="formElement" domElement="true"></param>
-    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
-    var e = Function._validateParams(arguments, [
-        {name: "formElement", domElement: true}
-    ]);
-	return formElement._pageRequestManager;
-}
-
-Sys.WebForms.PageRequestManager._initialize = function Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, formElement) {
-    if (formElement._pageRequestManager) {
-        throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
-    }
-    formElement._pageRequestManager = new Sys.WebForms.PageRequestManager();
-    formElement._pageRequestManager._application = formElement._application;
-    formElement._pageRequestManager._initializeInternal(scriptManagerID, formElement);
-}
+Sys.WebForms.PageRequestManager.getInstance = function Sys$WebForms$PageRequestManager$getInstance(formElement) {
+    /// <param name="formElement" domElement="true"></param>
+    /// <returns type="Sys.WebForms.PageRequestManager"></returns>
+    var e = Function._validateParams(arguments, [
+        {name: "formElement", domElement: true}
+    ]);
+	return formElement._pageRequestManager;
+}
+
+Sys.WebForms.PageRequestManager._initialize = function Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, formElement) {
+    if (formElement._pageRequestManager) {
+        throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
+    }
+    formElement._pageRequestManager = new Sys.WebForms.PageRequestManager();
+    formElement._pageRequestManager._application = formElement._application;
+    formElement._pageRequestManager._initializeInternal(scriptManagerID, formElement);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.Handlers/ScriptModule.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.Handlers/ScriptModule.cs
@@ -1,122 +1,122 @@
-﻿//
-// ScriptModule.cs
-//
-// Author:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//
-// (C) 2007 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Web.UI;
-using System.Web.Script.Services;
-
-namespace System.Web.Handlers
-{
-	public class ScriptModule : IHttpModule
-	{
-		protected virtual void Init (HttpApplication context) {
-			context.PreSendRequestHeaders += new EventHandler (PreSendRequestHeaders);
-			context.PostAcquireRequestState += new EventHandler (PostAcquireRequestState);
-			context.AuthenticateRequest += new EventHandler (AuthenticateRequest);
-		}
-
-		void AuthenticateRequest (object sender, EventArgs e) {
-			// The AuthenticateRequest event is raised after the identity of the current user has been 
-			// established. The handler for this event sets the SkipAuthorization property of the HttpContext 
-			// for the current request. This property is checked in the authorization module to see 
-			// if it has to omit authorization checking for the requested url. Usually an HttpModule 
-			// use this property to allow anonymous access to some resources (for example, 
-			// the Login Page if we’re using forms authentication). In our scenario, 
-			// the ScriptModule sets the SkipAuthorization to true if the requested url is 
-			// scriptresource.axd or if the authorization module is enabled and the request is a rest 
-			// request to the authorization web service.
-		}
-
-		void PostAcquireRequestState (object sender, EventArgs e) {
-			// The PostAcquireRequestState event is raised after the session data has been obtained. 
-			// If the request is for a class that implements System.Web.UI.Page and it is a rest 
-			// method call, the WebServiceData class (that was explained in a previous post) is used 
-			// to call the requested method from the Page. After the method has been called, 
-			// the CompleteRequest method is called, bypassing all pipeline events and executing 
-			// the EndRequest method. This allows MS AJAX to be able to call a method on a page 
-			// instead of having to create a web service to call a method.
-			HttpApplication app = (HttpApplication) sender;
-			HttpContext context = app.Context;
-			if (context == null)
-				return;
-			
-			HttpRequest request = context.Request;
-			string contentType = request.ContentType;
-			IHttpHandler currentHandler = context.CurrentHandler;
-			if (currentHandler == null)
-				return;
-			Type pageType = currentHandler.GetType ();
-			if (typeof (Page).IsAssignableFrom (pageType) && !String.IsNullOrEmpty (contentType) && contentType.StartsWith ("application/json", StringComparison.OrdinalIgnoreCase)) {
-				IHttpHandler h = RestHandler.GetHandler (context, pageType, request.FilePath);
-				h.ProcessRequest (context);
-				app.CompleteRequest ();
-			}
-		}
-
-		void PreSendRequestHeaders (object sender, EventArgs e)
-		{
-			HttpApplication app = (HttpApplication) sender;
-			HttpContext context = app.Context;
-			if (context.Request.Headers ["X-MicrosoftAjax"] == "Delta=true") {
-				Page p = context.CurrentHandler as Page;
-				ScriptManager sm = ScriptManager.GetCurrentInternal (p);
-				if (context.Response.StatusCode == 302) {
-					context.Response.StatusCode = 200;
-					context.Response.ClearContent ();
-					if (context.Error == null || (sm != null && sm.AllowCustomErrorsRedirect))
-						ScriptManager.WriteCallbackRedirect (context.Response.Output, context.Response.RedirectLocation);
-					else
-						ScriptManager.WriteCallbackException (sm, context.Response.Output, context.Error, false);
-				} else if (context.Error != null) {
-					context.Response.StatusCode = 200;
-					context.Response.ClearContent ();
-					ScriptManager.WriteCallbackException (sm, context.Response.Output, context.Error, true);
-				}
-			}
-		}
-
-		protected virtual void Dispose () {
-		}
-
-		#region IHttpModule Members
-
-		void IHttpModule.Dispose () {
-			Dispose ();
-		}
-
-		void IHttpModule.Init (HttpApplication context) {
-			Init (context);
-		}
-
-		#endregion
-	}
-}
-
+﻿//
+// ScriptModule.cs
+//
+// Author:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//
+// (C) 2007 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web.UI;
+using System.Web.Script.Services;
+
+namespace System.Web.Handlers
+{
+	public class ScriptModule : IHttpModule
+	{
+		protected virtual void Init (HttpApplication context) {
+			context.PreSendRequestHeaders += new EventHandler (PreSendRequestHeaders);
+			context.PostAcquireRequestState += new EventHandler (PostAcquireRequestState);
+			context.AuthenticateRequest += new EventHandler (AuthenticateRequest);
+		}
+
+		void AuthenticateRequest (object sender, EventArgs e) {
+			// The AuthenticateRequest event is raised after the identity of the current user has been 
+			// established. The handler for this event sets the SkipAuthorization property of the HttpContext 
+			// for the current request. This property is checked in the authorization module to see 
+			// if it has to omit authorization checking for the requested url. Usually an HttpModule 
+			// use this property to allow anonymous access to some resources (for example, 
+			// the Login Page if we’re using forms authentication). In our scenario, 
+			// the ScriptModule sets the SkipAuthorization to true if the requested url is 
+			// scriptresource.axd or if the authorization module is enabled and the request is a rest 
+			// request to the authorization web service.
+		}
+
+		void PostAcquireRequestState (object sender, EventArgs e) {
+			// The PostAcquireRequestState event is raised after the session data has been obtained. 
+			// If the request is for a class that implements System.Web.UI.Page and it is a rest 
+			// method call, the WebServiceData class (that was explained in a previous post) is used 
+			// to call the requested method from the Page. After the method has been called, 
+			// the CompleteRequest method is called, bypassing all pipeline events and executing 
+			// the EndRequest method. This allows MS AJAX to be able to call a method on a page 
+			// instead of having to create a web service to call a method.
+			HttpApplication app = (HttpApplication) sender;
+			HttpContext context = app.Context;
+			if (context == null)
+				return;
+			
+			HttpRequest request = context.Request;
+			string contentType = request.ContentType;
+			IHttpHandler currentHandler = context.CurrentHandler;
+			if (currentHandler == null)
+				return;
+			Type pageType = currentHandler.GetType ();
+			if (typeof (Page).IsAssignableFrom (pageType) && !String.IsNullOrEmpty (contentType) && contentType.StartsWith ("application/json", StringComparison.OrdinalIgnoreCase)) {
+				IHttpHandler h = RestHandler.GetHandler (context, pageType, request.FilePath);
+				h.ProcessRequest (context);
+				app.CompleteRequest ();
+			}
+		}
+
+		void PreSendRequestHeaders (object sender, EventArgs e)
+		{
+			HttpApplication app = (HttpApplication) sender;
+			HttpContext context = app.Context;
+			if (context.Request.Headers ["X-MicrosoftAjax"] == "Delta=true") {
+				Page p = context.CurrentHandler as Page;
+				ScriptManager sm = ScriptManager.GetCurrentInternal (p);
+				if (context.Response.StatusCode == 302) {
+					context.Response.StatusCode = 200;
+					context.Response.ClearContent ();
+					if (context.Error == null || (sm != null && sm.AllowCustomErrorsRedirect))
+						ScriptManager.WriteCallbackRedirect (context.Response.Output, context.Response.RedirectLocation);
+					else
+						ScriptManager.WriteCallbackException (sm, context.Response.Output, context.Error, false);
+				} else if (context.Error != null) {
+					context.Response.StatusCode = 200;
+					context.Response.ClearContent ();
+					ScriptManager.WriteCallbackException (sm, context.Response.Output, context.Error, true);
+				}
+			}
+		}
+
+		protected virtual void Dispose () {
+		}
+
+		#region IHttpModule Members
+
+		void IHttpModule.Dispose () {
+			Dispose ();
+		}
+
+		void IHttpModule.Init (HttpApplication context) {
+			Init (context);
+		}
+
+		#endregion
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.Handlers/ScriptResourceHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.Handlers/ScriptResourceHandler.cs
@@ -1,299 +1,299 @@
-﻿//
-// ScriptResourceHandler.cs
-//
-// Authors:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//   Marek Habersack <grendel@twistedcode.net>
-//
-// (C) 2007 Mainsoft, Inc.  http://www.mainsoft.com
-// (C) 2011 Novell, Inc.  http://novell.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
-using System.Security.Cryptography;
-using System.Reflection;
-using System.Resources;
-using System.Text;
-using System.Threading;
-using System.Web.Configuration;
-using System.Web.Hosting;
-using System.Web.UI;
-using System.Web.Util;
-
-namespace System.Web.Handlers
-{
-	public partial class ScriptResourceHandler : IHttpHandler
-	{		
-		protected virtual bool IsReusable {
-			get { return true; }
-		}
-
-		#region IHttpHandler Members
-
-		bool IHttpHandler.IsReusable {
-			get { return IsReusable; }
-		}
-
-		void IHttpHandler.ProcessRequest (HttpContext context) {
-			ProcessRequest (context);
-		}
-
-		#endregion
-		void AppendResourceScriptContents (StringWriter sw, CompositeEntry entry)
-		{
-			if (entry.Assembly == null || entry.Attribute == null || String.IsNullOrEmpty (entry.NameOrPath))
-				return;
-
-			using (Stream s = entry.Assembly.GetManifestResourceStream (entry.NameOrPath)) {
-				if (s == null)
-					throw new HttpException (404, "Resource '" + entry.NameOrPath + "' not found");
-
-				if (entry.Attribute.PerformSubstitution) {
-					using (var r = new StreamReader (s)) {
-						new PerformSubstitutionHelper (entry.Assembly).PerformSubstitution (r, sw);
-					}
-				} else {
-					using (var r = new StreamReader (s)) {
-						string line = r.ReadLine ();
-						while (line != null) {
-							sw.WriteLine (line);
-							line = r.ReadLine ();
-						}
-					}
-				}
-			}
-		}
-
-		void AppendFileScriptContents (StringWriter sw, CompositeEntry entry)
-		{
-			// FIXME: should we limit the script size in any way?
-			if (String.IsNullOrEmpty (entry.NameOrPath))
-				return;
-
-			string mappedPath;
-			if (!HostingEnvironment.HaveCustomVPP) {
-				// We'll take a shortcut here by bypassing the default VPP layers
-				mappedPath = HostingEnvironment.MapPath (entry.NameOrPath);
-				if (!File.Exists (mappedPath))
-					return;
-				sw.Write (File.ReadAllText (mappedPath));
-				return;
-			}
-
-			VirtualPathProvider vpp = HostingEnvironment.VirtualPathProvider;
-			if (!vpp.FileExists (entry.NameOrPath))
-				return;
-			VirtualFile file = vpp.GetFile (entry.NameOrPath);
-			if (file == null)
-				return;
-			using (Stream s = file.Open ()) {
-				using (var r = new StreamReader (s)) {
-					string line = r.ReadLine ();
-					while (line != null) {
-						sw.WriteLine (line);
-						line = r.ReadLine ();
-					}
-				}
-			}
-		}
-		
-		void AppendScriptContents (StringWriter sw, CompositeEntry entry)
-		{
-			if (entry.Assembly != null)
-				AppendResourceScriptContents (sw, entry);
-			else
-				AppendFileScriptContents (sw, entry);
-		}
-		
-		void SendCompositeScript (HttpContext context, HttpRequest request, bool notifyScriptLoaded, List <CompositeEntry> entries)
-		{
-			if (entries.Count == 0)
-				throw new HttpException (404, "Resource not found");
-
-			long atime;
-			DateTime modifiedSince;
-			bool hasIfModifiedSince = HasIfModifiedSince (context.Request, out modifiedSince);
-			
-			if (hasIfModifiedSince) {
-				bool notModified = true;
-			
-				foreach (CompositeEntry entry in entries) {
-					if (entry == null)
-						continue;
-					if (notModified) {
-						if (hasIfModifiedSince && entry.IsModifiedSince (modifiedSince))
-							notModified = false;
-					}
-				}
-
-				if (notModified) {
-					RespondWithNotModified (context);
-					return;
-				}
-			}
-			
-			StringBuilder contents = new StringBuilder ();
-			using (var sw = new StringWriter (contents)) {
-				foreach (CompositeEntry entry in entries) {
-					if (entry == null)
-						continue;
-					AppendScriptContents (sw, entry);
-				}
-			}
-			if (contents.Length == 0)
-				throw new HttpException (404, "Resource not found");
-
-			HttpResponse response = context.Response;
-			DateTime utcnow = DateTime.UtcNow;
-
-			response.ContentType = "text/javascript";
-			response.Headers.Add ("Last-Modified", utcnow.ToString ("r"));
-			response.ExpiresAbsolute = utcnow.AddYears (1);
-			response.CacheControl = "public";
-
-			response.Output.Write (contents.ToString ());
-			if (notifyScriptLoaded)
-				OutputScriptLoadedNotification (response.Output);
-		}
-		void OutputScriptLoadedNotification (TextWriter writer)
-		{
-			writer.WriteLine ();
-			writer.WriteLine ("if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();");
-		}
-		
-		protected virtual void ProcessRequest (HttpContext context)
-		{
-			HttpRequest request = context.Request;
-			bool notifyScriptLoaded = request.QueryString ["n"] == "t";
-			List <CompositeEntry> compositeEntries = CompositeScriptReference.GetCompositeScriptEntries (request.RawUrl);
-			if (compositeEntries != null) {
-				SendCompositeScript (context, request, notifyScriptLoaded, compositeEntries);
-				return;
-			}
-			EmbeddedResource res;
-			Assembly assembly;			
-			SendEmbeddedResource (context, out res, out assembly);
-
-			HttpResponse response = context.Response;
-			TextWriter writer = response.Output;
-			foreach (ScriptResourceAttribute sra in assembly.GetCustomAttributes (typeof (ScriptResourceAttribute), false)) {
-				if (String.Compare (sra.ScriptName, res.Name, StringComparison.Ordinal) == 0) {
-					string scriptResourceName = sra.ScriptResourceName;
-					ResourceSet rset = null;
-					try {
-						rset = new ResourceManager (scriptResourceName, assembly).GetResourceSet (Threading.Thread.CurrentThread.CurrentUICulture, true, true);
-					}
-					catch (MissingManifestResourceException) {
-						if (scriptResourceName.EndsWith (".resources", RuntimeHelpers.StringComparison)) {
-							scriptResourceName = scriptResourceName.Substring (0, scriptResourceName.Length - 10);
-							rset = new ResourceManager (scriptResourceName, assembly).GetResourceSet (Threading.Thread.CurrentThread.CurrentUICulture, true, true);
-						}
-						else
-							throw;
-					}
-					if (rset == null)
-						break;
-					writer.WriteLine ();
-					string ns = sra.TypeName;
-					int indx = ns.LastIndexOf ('.');
-					if (indx > 0)
-						writer.WriteLine ("Type.registerNamespace('" + ns.Substring (0, indx) + "')");
-					writer.Write ("{0}={{", sra.TypeName);
-					bool first = true;
-					foreach (DictionaryEntry de in rset) {
-						string value = de.Value as string;
-						if (value != null) {
-							if (first)
-								first = false;
-							else
-								writer.Write (',');
-							writer.WriteLine ();
-							writer.Write ("{0}:{1}", GetScriptStringLiteral ((string) de.Key), GetScriptStringLiteral (value));
-						}
-					}
-					writer.WriteLine ();
-					writer.WriteLine ("};");
-					break;
-				}
-			}
-			
-			if (notifyScriptLoaded)
-				OutputScriptLoadedNotification (writer);
-		}
-		static void CheckIfResourceIsCompositeScript (string resourceName, ref bool includeTimeStamp)
-		{
-			bool isCompositeScript = resourceName.StartsWith (CompositeScriptReference.COMPOSITE_SCRIPT_REFERENCE_PREFIX, StringComparison.Ordinal);
-			if (!isCompositeScript)
-				return;
-			
-			includeTimeStamp = false;
-		}
-
-		bool HandleCompositeScriptRequest (HttpContext context, HttpRequest request, string d)
-		{
-			return false;
-		}
-		// TODO: add value cache?
-		static string GetScriptStringLiteral (string value)
-		{
-			if (String.IsNullOrEmpty (value))
-				return "\"" + value + "\"";
-			
-			var sb = new StringBuilder ("\"");
-			for (int i = 0; i < value.Length; i++) {
-				char ch = value [i];
-				switch (ch) {
-					case '\'':
-						sb.Append ("\\u0027");
-						break;
-
-					case '"':
-						sb.Append ("\\\"");
-						break;
-
-					case '\\':
-						sb.Append ("\\\\");
-						break;
-
-					case '\n':
-						sb.Append ("\\n");
-						break;
-
-					case '\r':
-						sb.Append ("\\r");
-						break;
-
-					default:
-						sb.Append (ch);
-						break;
-				}
-			}
-			sb.Append ("\"");
-			
-			return sb.ToString ();
-		}
-	}
-}
+﻿//
+// ScriptResourceHandler.cs
+//
+// Authors:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//   Marek Habersack <grendel@twistedcode.net>
+//
+// (C) 2007 Mainsoft, Inc.  http://www.mainsoft.com
+// (C) 2011 Novell, Inc.  http://novell.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Security.Cryptography;
+using System.Reflection;
+using System.Resources;
+using System.Text;
+using System.Threading;
+using System.Web.Configuration;
+using System.Web.Hosting;
+using System.Web.UI;
+using System.Web.Util;
+
+namespace System.Web.Handlers
+{
+	public partial class ScriptResourceHandler : IHttpHandler
+	{		
+		protected virtual bool IsReusable {
+			get { return true; }
+		}
+
+		#region IHttpHandler Members
+
+		bool IHttpHandler.IsReusable {
+			get { return IsReusable; }
+		}
+
+		void IHttpHandler.ProcessRequest (HttpContext context) {
+			ProcessRequest (context);
+		}
+
+		#endregion
+		void AppendResourceScriptContents (StringWriter sw, CompositeEntry entry)
+		{
+			if (entry.Assembly == null || entry.Attribute == null || String.IsNullOrEmpty (entry.NameOrPath))
+				return;
+
+			using (Stream s = entry.Assembly.GetManifestResourceStream (entry.NameOrPath)) {
+				if (s == null)
+					throw new HttpException (404, "Resource '" + entry.NameOrPath + "' not found");
+
+				if (entry.Attribute.PerformSubstitution) {
+					using (var r = new StreamReader (s)) {
+						new PerformSubstitutionHelper (entry.Assembly).PerformSubstitution (r, sw);
+					}
+				} else {
+					using (var r = new StreamReader (s)) {
+						string line = r.ReadLine ();
+						while (line != null) {
+							sw.WriteLine (line);
+							line = r.ReadLine ();
+						}
+					}
+				}
+			}
+		}
+
+		void AppendFileScriptContents (StringWriter sw, CompositeEntry entry)
+		{
+			// FIXME: should we limit the script size in any way?
+			if (String.IsNullOrEmpty (entry.NameOrPath))
+				return;
+
+			string mappedPath;
+			if (!HostingEnvironment.HaveCustomVPP) {
+				// We'll take a shortcut here by bypassing the default VPP layers
+				mappedPath = HostingEnvironment.MapPath (entry.NameOrPath);
+				if (!File.Exists (mappedPath))
+					return;
+				sw.Write (File.ReadAllText (mappedPath));
+				return;
+			}
+
+			VirtualPathProvider vpp = HostingEnvironment.VirtualPathProvider;
+			if (!vpp.FileExists (entry.NameOrPath))
+				return;
+			VirtualFile file = vpp.GetFile (entry.NameOrPath);
+			if (file == null)
+				return;
+			using (Stream s = file.Open ()) {
+				using (var r = new StreamReader (s)) {
+					string line = r.ReadLine ();
+					while (line != null) {
+						sw.WriteLine (line);
+						line = r.ReadLine ();
+					}
+				}
+			}
+		}
+		
+		void AppendScriptContents (StringWriter sw, CompositeEntry entry)
+		{
+			if (entry.Assembly != null)
+				AppendResourceScriptContents (sw, entry);
+			else
+				AppendFileScriptContents (sw, entry);
+		}
+		
+		void SendCompositeScript (HttpContext context, HttpRequest request, bool notifyScriptLoaded, List <CompositeEntry> entries)
+		{
+			if (entries.Count == 0)
+				throw new HttpException (404, "Resource not found");
+
+			long atime;
+			DateTime modifiedSince;
+			bool hasIfModifiedSince = HasIfModifiedSince (context.Request, out modifiedSince);
+			
+			if (hasIfModifiedSince) {
+				bool notModified = true;
+			
+				foreach (CompositeEntry entry in entries) {
+					if (entry == null)
+						continue;
+					if (notModified) {
+						if (hasIfModifiedSince && entry.IsModifiedSince (modifiedSince))
+							notModified = false;
+					}
+				}
+
+				if (notModified) {
+					RespondWithNotModified (context);
+					return;
+				}
+			}
+			
+			StringBuilder contents = new StringBuilder ();
+			using (var sw = new StringWriter (contents)) {
+				foreach (CompositeEntry entry in entries) {
+					if (entry == null)
+						continue;
+					AppendScriptContents (sw, entry);
+				}
+			}
+			if (contents.Length == 0)
+				throw new HttpException (404, "Resource not found");
+
+			HttpResponse response = context.Response;
+			DateTime utcnow = DateTime.UtcNow;
+
+			response.ContentType = "text/javascript";
+			response.Headers.Add ("Last-Modified", utcnow.ToString ("r"));
+			response.ExpiresAbsolute = utcnow.AddYears (1);
+			response.CacheControl = "public";
+
+			response.Output.Write (contents.ToString ());
+			if (notifyScriptLoaded)
+				OutputScriptLoadedNotification (response.Output);
+		}
+		void OutputScriptLoadedNotification (TextWriter writer)
+		{
+			writer.WriteLine ();
+			writer.WriteLine ("if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();");
+		}
+		
+		protected virtual void ProcessRequest (HttpContext context)
+		{
+			HttpRequest request = context.Request;
+			bool notifyScriptLoaded = request.QueryString ["n"] == "t";
+			List <CompositeEntry> compositeEntries = CompositeScriptReference.GetCompositeScriptEntries (request.RawUrl);
+			if (compositeEntries != null) {
+				SendCompositeScript (context, request, notifyScriptLoaded, compositeEntries);
+				return;
+			}
+			EmbeddedResource res;
+			Assembly assembly;			
+			SendEmbeddedResource (context, out res, out assembly);
+
+			HttpResponse response = context.Response;
+			TextWriter writer = response.Output;
+			foreach (ScriptResourceAttribute sra in assembly.GetCustomAttributes (typeof (ScriptResourceAttribute), false)) {
+				if (String.Compare (sra.ScriptName, res.Name, StringComparison.Ordinal) == 0) {
+					string scriptResourceName = sra.ScriptResourceName;
+					ResourceSet rset = null;
+					try {
+						rset = new ResourceManager (scriptResourceName, assembly).GetResourceSet (Threading.Thread.CurrentThread.CurrentUICulture, true, true);
+					}
+					catch (MissingManifestResourceException) {
+						if (scriptResourceName.EndsWith (".resources", RuntimeHelpers.StringComparison)) {
+							scriptResourceName = scriptResourceName.Substring (0, scriptResourceName.Length - 10);
+							rset = new ResourceManager (scriptResourceName, assembly).GetResourceSet (Threading.Thread.CurrentThread.CurrentUICulture, true, true);
+						}
+						else
+							throw;
+					}
+					if (rset == null)
+						break;
+					writer.WriteLine ();
+					string ns = sra.TypeName;
+					int indx = ns.LastIndexOf ('.');
+					if (indx > 0)
+						writer.WriteLine ("Type.registerNamespace('" + ns.Substring (0, indx) + "')");
+					writer.Write ("{0}={{", sra.TypeName);
+					bool first = true;
+					foreach (DictionaryEntry de in rset) {
+						string value = de.Value as string;
+						if (value != null) {
+							if (first)
+								first = false;
+							else
+								writer.Write (',');
+							writer.WriteLine ();
+							writer.Write ("{0}:{1}", GetScriptStringLiteral ((string) de.Key), GetScriptStringLiteral (value));
+						}
+					}
+					writer.WriteLine ();
+					writer.WriteLine ("};");
+					break;
+				}
+			}
+			
+			if (notifyScriptLoaded)
+				OutputScriptLoadedNotification (writer);
+		}
+		static void CheckIfResourceIsCompositeScript (string resourceName, ref bool includeTimeStamp)
+		{
+			bool isCompositeScript = resourceName.StartsWith (CompositeScriptReference.COMPOSITE_SCRIPT_REFERENCE_PREFIX, StringComparison.Ordinal);
+			if (!isCompositeScript)
+				return;
+			
+			includeTimeStamp = false;
+		}
+
+		bool HandleCompositeScriptRequest (HttpContext context, HttpRequest request, string d)
+		{
+			return false;
+		}
+		// TODO: add value cache?
+		static string GetScriptStringLiteral (string value)
+		{
+			if (String.IsNullOrEmpty (value))
+				return "\"" + value + "\"";
+			
+			var sb = new StringBuilder ("\"");
+			for (int i = 0; i < value.Length; i++) {
+				char ch = value [i];
+				switch (ch) {
+					case '\'':
+						sb.Append ("\\u0027");
+						break;
+
+					case '"':
+						sb.Append ("\\\"");
+						break;
+
+					case '\\':
+						sb.Append ("\\\\");
+						break;
+
+					case '\n':
+						sb.Append ("\\n");
+						break;
+
+					case '\r':
+						sb.Append ("\\r");
+						break;
+
+					default:
+						sb.Append (ch);
+						break;
+				}
+			}
+			sb.Append ("\"");
+			
+			return sb.ToString ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.Script.Services/AuthenticationService.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.Script.Services/AuthenticationService.cs
@@ -1,76 +1,76 @@
-//
-// AuthenticationService.cs
-//
-// Author:
-//   Konstantin Triger <kostat@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Web.Services;
-using System.Web.Configuration;
-using System.Web.Security;
-
-namespace System.Web.Script.Services
-{
-	sealed class AuthenticationService
-	{
-		public const string DefaultWebServicePath = "/Authentication_JSON_AppService.axd";
-
-		readonly ScriptingAuthenticationServiceSection _section;
-
-		public AuthenticationService () {
-			_section = (ScriptingAuthenticationServiceSection) WebConfigurationManager.GetSection ("system.web.extensions/scripting/webServices/authenticationService");
-		}
-
-		void EnsureEnabled() {
-			if (_section == null || !_section.Enabled)
-				throw new InvalidOperationException ("Authentication service is disabled.");
-
-			if (_section.RequireSSL && !HttpContext.Current.Request.IsSecureConnection)
-				throw new HttpException ("SSL is required for this operation.");
-		}
-
-		[WebMethod ()]
-		public bool Login (string userName, string password, bool createPersistentCookie) {
-			EnsureEnabled ();
-
-			if (!Membership.Provider.ValidateUser (userName, password))
-				return false;
-
-			FormsAuthentication.SetAuthCookie (userName, createPersistentCookie);
-
-			return true;
-		}
-
-		[WebMethod ()]
-		public void Logout () {
-			EnsureEnabled ();
-
-			FormsAuthentication.SignOut ();
-		}
-	}
-}
+//
+// AuthenticationService.cs
+//
+// Author:
+//   Konstantin Triger <kostat@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web.Services;
+using System.Web.Configuration;
+using System.Web.Security;
+
+namespace System.Web.Script.Services
+{
+	sealed class AuthenticationService
+	{
+		public const string DefaultWebServicePath = "/Authentication_JSON_AppService.axd";
+
+		readonly ScriptingAuthenticationServiceSection _section;
+
+		public AuthenticationService () {
+			_section = (ScriptingAuthenticationServiceSection) WebConfigurationManager.GetSection ("system.web.extensions/scripting/webServices/authenticationService");
+		}
+
+		void EnsureEnabled() {
+			if (_section == null || !_section.Enabled)
+				throw new InvalidOperationException ("Authentication service is disabled.");
+
+			if (_section.RequireSSL && !HttpContext.Current.Request.IsSecureConnection)
+				throw new HttpException ("SSL is required for this operation.");
+		}
+
+		[WebMethod ()]
+		public bool Login (string userName, string password, bool createPersistentCookie) {
+			EnsureEnabled ();
+
+			if (!Membership.Provider.ValidateUser (userName, password))
+				return false;
+
+			FormsAuthentication.SetAuthCookie (userName, createPersistentCookie);
+
+			return true;
+		}
+
+		[WebMethod ()]
+		public void Logout () {
+			EnsureEnabled ();
+
+			FormsAuthentication.SignOut ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.Script.Services/ProxyGenerator.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.Script.Services/ProxyGenerator.cs
@@ -1,42 +1,42 @@
-//
-// ProxyGenerator.cs
-//
-// Author:
-//   Konstantin Triger <kostat@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace System.Web.Script.Services
-{
-	public static class ProxyGenerator
-	{
-		public static string GetClientProxyScript (Type type, string path, bool debug) {
-			return LogicalTypeInfo.GetLogicalTypeInfo (type, path).Proxy;
-		}
-	}
-}
+//
+// ProxyGenerator.cs
+//
+// Author:
+//   Konstantin Triger <kostat@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Web.Script.Services
+{
+	public static class ProxyGenerator
+	{
+		public static string GetClientProxyScript (Type type, string path, bool debug) {
+			return LogicalTypeInfo.GetLogicalTypeInfo (type, path).Proxy;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredArrayDeclaration.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredArrayDeclaration.cs
@@ -1,58 +1,58 @@
-//
-// RegisteredArrayDeclaration.cs
-//
-// Author:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Web.UI
-{
-	public sealed class RegisteredArrayDeclaration
-	{
-		readonly Control _control;
-		readonly string _name;
-		readonly string _value;
-
-		internal RegisteredArrayDeclaration (Control control, string name, string value) {
-			_control = control;
-			_name = name;
-			_value = value;
-		}
-
-		public Control Control {
-			get { return _control; }
-		}
-
-		public string Name {
-			get { return _name; }
-		}
-
-		public string Value {
-			get { return _value; }
-		}
-	}
-}
+//
+// RegisteredArrayDeclaration.cs
+//
+// Author:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Web.UI
+{
+	public sealed class RegisteredArrayDeclaration
+	{
+		readonly Control _control;
+		readonly string _name;
+		readonly string _value;
+
+		internal RegisteredArrayDeclaration (Control control, string name, string value) {
+			_control = control;
+			_name = name;
+			_value = value;
+		}
+
+		public Control Control {
+			get { return _control; }
+		}
+
+		public string Name {
+			get { return _name; }
+		}
+
+		public string Value {
+			get { return _value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredDisposeScript.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredDisposeScript.cs
@@ -1,58 +1,58 @@
-//
-// RegisteredDisposeScript.cs
-//
-// Author:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Web.UI
-{
-	public sealed class RegisteredDisposeScript
-	{
-		readonly Control _control;
-		readonly UpdatePanel _updatePanel;
-		readonly string _script;
-
-		internal RegisteredDisposeScript (Control control, string script, UpdatePanel updatePanel) {
-			_control = control;
-			_script = script;
-			_updatePanel = updatePanel;
-		}
-
-		public Control Control {
-			get { return _control; }
-		}
-
-		public string Script {
-			get { return _script; }
-		}
-
-		internal UpdatePanel UpdatePanel {
-			get { return _updatePanel; }
-		}
-	}
-}
+//
+// RegisteredDisposeScript.cs
+//
+// Author:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Web.UI
+{
+	public sealed class RegisteredDisposeScript
+	{
+		readonly Control _control;
+		readonly UpdatePanel _updatePanel;
+		readonly string _script;
+
+		internal RegisteredDisposeScript (Control control, string script, UpdatePanel updatePanel) {
+			_control = control;
+			_script = script;
+			_updatePanel = updatePanel;
+		}
+
+		public Control Control {
+			get { return _control; }
+		}
+
+		public string Script {
+			get { return _script; }
+		}
+
+		internal UpdatePanel UpdatePanel {
+			get { return _updatePanel; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredExpandoAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredExpandoAttribute.cs
@@ -1,70 +1,70 @@
-//
-// RegisteredArrayDeclaration.cs
-//
-// Author:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Web.UI
-{
-	public sealed class RegisteredExpandoAttribute
-	{
-		readonly Control _control;
-		readonly string _controlId;
-		readonly bool _encode;
-		readonly string _name;
-		readonly string _value;
-
-		internal RegisteredExpandoAttribute (Control control, string controlId, string name, string value, bool encode) {
-			_control = control;
-			_name = name;
-			_value = value;
-			_controlId = controlId;
-			_encode = encode;
-		}
-
-		public Control Control {
-			get { return _control; }
-		}
-
-		public string Name {
-			get { return _name; }
-		}
-
-		public string Value {
-			get { return _value; }
-		}
-
-		public string ControlId {
-			get { return _controlId; }
-		}
-
-		public bool Encode {
-			get { return _encode; }
-		}
-	}
-}
+//
+// RegisteredArrayDeclaration.cs
+//
+// Author:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Web.UI
+{
+	public sealed class RegisteredExpandoAttribute
+	{
+		readonly Control _control;
+		readonly string _controlId;
+		readonly bool _encode;
+		readonly string _name;
+		readonly string _value;
+
+		internal RegisteredExpandoAttribute (Control control, string controlId, string name, string value, bool encode) {
+			_control = control;
+			_name = name;
+			_value = value;
+			_controlId = controlId;
+			_encode = encode;
+		}
+
+		public Control Control {
+			get { return _control; }
+		}
+
+		public string Name {
+			get { return _name; }
+		}
+
+		public string Value {
+			get { return _value; }
+		}
+
+		public string ControlId {
+			get { return _controlId; }
+		}
+
+		public bool Encode {
+			get { return _encode; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredHiddenField.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredHiddenField.cs
@@ -1,58 +1,58 @@
-//
-// RegisteredHiddenField.cs
-//
-// Author:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Web.UI
-{
-	public sealed class RegisteredHiddenField
-	{
-		readonly Control _control;
-		readonly string _name;
-		readonly string _initialValue;
-
-		internal RegisteredHiddenField (Control control, string name, string initialValue) {
-			_control = control;
-			_name = name;
-			_initialValue = initialValue;
-		}
-
-		public Control Control {
-			get { return _control; }
-		}
-
-		public string Name {
-			get { return _name; }
-		}
-
-		public string InitialValue {
-			get { return _initialValue; }
-		}
-	}
-}
+//
+// RegisteredHiddenField.cs
+//
+// Author:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Web.UI
+{
+	public sealed class RegisteredHiddenField
+	{
+		readonly Control _control;
+		readonly string _name;
+		readonly string _initialValue;
+
+		internal RegisteredHiddenField (Control control, string name, string initialValue) {
+			_control = control;
+			_name = name;
+			_initialValue = initialValue;
+		}
+
+		public Control Control {
+			get { return _control; }
+		}
+
+		public string Name {
+			get { return _name; }
+		}
+
+		public string InitialValue {
+			get { return _initialValue; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredScript.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredScript.cs
@@ -1,82 +1,82 @@
-//
-// RegisteredScript.cs
-//
-// Author:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Web.UI
-{
-	public sealed class RegisteredScript
-	{
-		readonly Control _control;
-		readonly bool _addScriptTags;
-		readonly string _key;
-		readonly string _script;
-		readonly RegisteredScriptType _scriptType;
-		readonly Type _type;
-		readonly string _url;
-
-		internal RegisteredScript (Control control, Type type, string key, string script, string url, bool addScriptTag, RegisteredScriptType scriptType) {
-			_control = control;
-			_type = type;
-			_script = script;
-			_url = url;
-			_addScriptTags = addScriptTag;
-			_scriptType = scriptType;
-			_key = key;
-		}
-
-		public bool AddScriptTags {
-			get { return _addScriptTags; }
-		}
-
-		public Control Control {
-			get { return _control; }
-		}
-
-		public string Key {
-			get { return _key; }
-		}
-
-		public string Script {
-			get { return _script; }
-		}
-
-		public RegisteredScriptType ScriptType {
-			get { return _scriptType; }
-		}
-
-		public Type Type {
-			get { return _type; }
-		}
-
-		public string Url {
-			get { return _url; }
-		}
-	}
-}
+//
+// RegisteredScript.cs
+//
+// Author:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Web.UI
+{
+	public sealed class RegisteredScript
+	{
+		readonly Control _control;
+		readonly bool _addScriptTags;
+		readonly string _key;
+		readonly string _script;
+		readonly RegisteredScriptType _scriptType;
+		readonly Type _type;
+		readonly string _url;
+
+		internal RegisteredScript (Control control, Type type, string key, string script, string url, bool addScriptTag, RegisteredScriptType scriptType) {
+			_control = control;
+			_type = type;
+			_script = script;
+			_url = url;
+			_addScriptTags = addScriptTag;
+			_scriptType = scriptType;
+			_key = key;
+		}
+
+		public bool AddScriptTags {
+			get { return _addScriptTags; }
+		}
+
+		public Control Control {
+			get { return _control; }
+		}
+
+		public string Key {
+			get { return _key; }
+		}
+
+		public string Script {
+			get { return _script; }
+		}
+
+		public RegisteredScriptType ScriptType {
+			get { return _scriptType; }
+		}
+
+		public Type Type {
+			get { return _type; }
+		}
+
+		public string Url {
+			get { return _url; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredScriptType.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/System.Web.UI/RegisteredScriptType.cs
@@ -1,41 +1,41 @@
-//
-// RegisteredScriptType.cs
-//
-// Author:
-//   Igor Zelmanovich <igorz@mainsoft.com>
-//
-// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
-//
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.Web.UI
-{
-	public enum RegisteredScriptType
-	{
-		ClientScriptInclude = 0,
-		ClientScriptBlock = 1,
-		ClientStartupScript = 2,
-		OnSubmitStatement = 3,
-	}
-}
+//
+// RegisteredScriptType.cs
+//
+// Author:
+//   Igor Zelmanovich <igorz@mainsoft.com>
+//
+// (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
+//
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.Web.UI
+{
+	public enum RegisteredScriptType
+	{
+		ClientScriptInclude = 0,
+		ClientScriptBlock = 1,
+		ClientStartupScript = 2,
+		OnSubmitStatement = 3,
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Extensions/Test/resources/Web.mono.config
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Extensions/Test/resources/Web.mono.config
@@ -1,117 +1,117 @@
-﻿<?xml version="1.0"?>
-<!-- 
-    Note: As an alternative to hand editing this file you can use the 
-    web admin tool to configure settings for your application. Use
-    the Website->Asp.Net Configuration option in Visual Studio.
-    A full list of settings and comments can be found in 
-    machine.config.comments usually located in 
-    \Windows\Microsoft.Net\Framework\v2.x\Config 
--->
-<configuration>
-	<configSections>
-		<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
-			<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
-				<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
-				<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
-					<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
-					<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
-					<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
-					<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
-				</sectionGroup>
-			</sectionGroup>
-		</sectionGroup>
-	</configSections>
-	<appSettings/>
-	<connectionStrings/>
-	<system.web>
-		<!-- 
-            Set compilation debug="true" to insert debugging 
-            symbols into the compiled page. Because this 
-            affects performance, set this value to true only 
-            during development.
-        -->
-		<compilation debug="true">
-			<assemblies>
-				<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
-				<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-				<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
-				<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
-			</assemblies>
-		</compilation>
-		<!--
-            The <authentication> section enables configuration 
-            of the security authentication mode used by 
-            ASP.NET to identify an incoming user. 
-        -->
-		<authentication mode="Windows"/>
-		<!--
-            The <customErrors> section enables configuration 
-            of what to do if/when an unhandled error occurs 
-            during the execution of a request. Specifically, 
-            it enables developers to configure html error pages 
-            to be displayed in place of a error stack trace.
-
-        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
-            <error statusCode="403" redirect="NoAccess.htm" />
-            <error statusCode="404" redirect="FileNotFound.htm" />
-        </customErrors>
-        -->
-		<pages configSource="profile.config">
-			<controls/>
-		</pages>
-		<httpHandlers>
-			<remove verb="*" path="*.asmx"/>
-			<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-			<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-			<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
-		</httpHandlers>
-		<httpModules>
-			<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-		</httpModules>
-	</system.web>
-	<system.codedom>
-		<compilers>
-			<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-				<providerOption name="CompilerVersion" value="v3.5"/>
-				<providerOption name="WarnAsError" value="false"/>
-			</compiler>
-			<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-				<providerOption name="CompilerVersion" value="v3.5"/>
-				<providerOption name="OptionInfer" value="true"/>
-				<providerOption name="WarnAsError" value="false"/>
-			</compiler>
-		</compilers>
-	</system.codedom>
-	<!-- 
-        The system.webServer section is required for running ASP.NET AJAX under Internet
-        Information Services 7.0.  It is not necessary for previous version of IIS.
-    -->
-	<system.webServer>
-		<validation validateIntegratedModeConfiguration="false"/>
-		<modules>
-			<remove name="ScriptModule"/>
-			<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-		</modules>
-		<handlers>
-			<remove name="WebServiceHandlerFactory-Integrated"/>
-			<remove name="ScriptHandlerFactory"/>
-			<remove name="ScriptHandlerFactoryAppServices"/>
-			<remove name="ScriptResource"/>
-			<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-			<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-			<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
-		</handlers>
-	</system.webServer>
-	<runtime>
-		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-			<dependentAssembly>
-				<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
-				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
-			</dependentAssembly>
-			<dependentAssembly>
-				<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
-				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
-			</dependentAssembly>
-		</assemblyBinding>
-	</runtime>
-</configuration>
+﻿<?xml version="1.0"?>
+<!-- 
+    Note: As an alternative to hand editing this file you can use the 
+    web admin tool to configure settings for your application. Use
+    the Website->Asp.Net Configuration option in Visual Studio.
+    A full list of settings and comments can be found in 
+    machine.config.comments usually located in 
+    \Windows\Microsoft.Net\Framework\v2.x\Config 
+-->
+<configuration>
+	<configSections>
+		<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+			<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+				<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
+				<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+					<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
+					<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
+					<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
+					<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
+				</sectionGroup>
+			</sectionGroup>
+		</sectionGroup>
+	</configSections>
+	<appSettings/>
+	<connectionStrings/>
+	<system.web>
+		<!-- 
+            Set compilation debug="true" to insert debugging 
+            symbols into the compiled page. Because this 
+            affects performance, set this value to true only 
+            during development.
+        -->
+		<compilation debug="true">
+			<assemblies>
+				<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
+				<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+				<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
+				<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
+			</assemblies>
+		</compilation>
+		<!--
+            The <authentication> section enables configuration 
+            of the security authentication mode used by 
+            ASP.NET to identify an incoming user. 
+        -->
+		<authentication mode="Windows"/>
+		<!--
+            The <customErrors> section enables configuration 
+            of what to do if/when an unhandled error occurs 
+            during the execution of a request. Specifically, 
+            it enables developers to configure html error pages 
+            to be displayed in place of a error stack trace.
+
+        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
+            <error statusCode="403" redirect="NoAccess.htm" />
+            <error statusCode="404" redirect="FileNotFound.htm" />
+        </customErrors>
+        -->
+		<pages configSource="profile.config">
+			<controls/>
+		</pages>
+		<httpHandlers>
+			<remove verb="*" path="*.asmx"/>
+			<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+			<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+			<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
+		</httpHandlers>
+		<httpModules>
+			<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+		</httpModules>
+	</system.web>
+	<system.codedom>
+		<compilers>
+			<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+				<providerOption name="CompilerVersion" value="v3.5"/>
+				<providerOption name="WarnAsError" value="false"/>
+			</compiler>
+			<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+				<providerOption name="CompilerVersion" value="v3.5"/>
+				<providerOption name="OptionInfer" value="true"/>
+				<providerOption name="WarnAsError" value="false"/>
+			</compiler>
+		</compilers>
+	</system.codedom>
+	<!-- 
+        The system.webServer section is required for running ASP.NET AJAX under Internet
+        Information Services 7.0.  It is not necessary for previous version of IIS.
+    -->
+	<system.webServer>
+		<validation validateIntegratedModeConfiguration="false"/>
+		<modules>
+			<remove name="ScriptModule"/>
+			<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+		</modules>
+		<handlers>
+			<remove name="WebServiceHandlerFactory-Integrated"/>
+			<remove name="ScriptHandlerFactory"/>
+			<remove name="ScriptHandlerFactoryAppServices"/>
+			<remove name="ScriptResource"/>
+			<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+			<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+			<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
+		</handlers>
+	</system.webServer>
+	<runtime>
+		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+			<dependentAssembly>
+				<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
+				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
+			</dependentAssembly>
+			<dependentAssembly>
+				<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
+				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
+			</dependentAssembly>
+		</assemblyBinding>
+	</runtime>
+</configuration>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/DefaultWsdlHelpGenerator/WEB-INF/faces-config.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/DefaultWsdlHelpGenerator/WEB-INF/faces-config.xml
@@ -1,11 +1,11 @@
-﻿<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE faces-config PUBLIC
-  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
-  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
-
-<faces-config>
-  <application>
-    <state-manager>Mainsoft.Web.Hosting.ServletFacesStateManager</state-manager>
-    <view-handler>Mainsoft.Web.Hosting.ServletFacesViewHandler</view-handler>
-  </application>
+﻿<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE faces-config PUBLIC
+  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
+  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
+
+<faces-config>
+  <application>
+    <state-manager>Mainsoft.Web.Hosting.ServletFacesStateManager</state-manager>
+    <view-handler>Mainsoft.Web.Hosting.ServletFacesViewHandler</view-handler>
+  </application>
 </faces-config>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/DefaultWsdlHelpGenerator/WEB-INF/web.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/DefaultWsdlHelpGenerator/WEB-INF/web.xml
@@ -1,233 +1,233 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
-
-<web-app id="WebApp_ID">
-
-  <display-name>Mainsoft for Java EE application</display-name>
-  <description>Mainsoft for Java EE application.</description>
-  <context-param>
-    <param-name>EnableSessionPersistency</param-name>
-    <param-value>False</param-value>
-  </context-param>
-  <context-param>
-    <param-name>DataDirectory</param-name>
-    <param-value>App_Data</param-value>
-  </context-param>
-
-
-  <context-param>
-    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
-    <param-value>client</param-value>
-  </context-param>
-  <context-param>
-    <param-name>javax.faces.application.CONFIG_FILES</param-name>
-    <param-value>/WEB-INF/faces-config.xml</param-value>
-  </context-param>
-  <context-param>
-    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
-    <param-value>.aspx</param-value>
-  </context-param>
-
-  <listener>
-    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
-  </listener>
-
-  <listener>
-    <listener-class>Mainsoft.Web.SessionState.SessionListener</listener-class>
-  </listener>
-
-  <servlet>
-    <servlet-name>VmwIncludeHelperServlet</servlet-name>
-    <servlet-class>Mainsoft.Web.Hosting.IncludeHelperServlet</servlet-class>
-  </servlet>
-
-  <servlet>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <servlet-class>GhDynamicHttpServlet</servlet-class>
-  </servlet>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>/aspnetconfig</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>/aspnetconfig/</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>/assemblies/*</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.mdf</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.lck</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.properties</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.dat</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.ctrl</url-pattern>
-  </servlet-mapping>
-
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.aspx</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.asmx</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.ashx</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.invoke</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.soap</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.rem</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.axd</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.master</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.resource</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.skin</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.browser</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.sitemap</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.webinfo</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.resx</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.asax</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.ascx</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.config</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.Config</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.cs</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.vb</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.csproj</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.vbproj</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.licx</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.dll</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.class</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwDynamicServlet</servlet-name>
-    <url-pattern>*.jar</url-pattern>
-  </servlet-mapping>
-
-  <servlet-mapping>
-    <servlet-name>VmwIncludeHelperServlet</servlet-name>
-    <url-pattern>/servletincludehelper</url-pattern>
-  </servlet-mapping>
-
-  <session-config>
-    <session-timeout>20</session-timeout>
-  </session-config>
-
-  <welcome-file-list>
-    <welcome-file>Default.aspx</welcome-file>
-  </welcome-file-list>
-
-</web-app>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app id="WebApp_ID">
+
+  <display-name>Mainsoft for Java EE application</display-name>
+  <description>Mainsoft for Java EE application.</description>
+  <context-param>
+    <param-name>EnableSessionPersistency</param-name>
+    <param-value>False</param-value>
+  </context-param>
+  <context-param>
+    <param-name>DataDirectory</param-name>
+    <param-value>App_Data</param-value>
+  </context-param>
+
+
+  <context-param>
+    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+    <param-value>client</param-value>
+  </context-param>
+  <context-param>
+    <param-name>javax.faces.application.CONFIG_FILES</param-name>
+    <param-value>/WEB-INF/faces-config.xml</param-value>
+  </context-param>
+  <context-param>
+    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+    <param-value>.aspx</param-value>
+  </context-param>
+
+  <listener>
+    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
+  </listener>
+
+  <listener>
+    <listener-class>Mainsoft.Web.SessionState.SessionListener</listener-class>
+  </listener>
+
+  <servlet>
+    <servlet-name>VmwIncludeHelperServlet</servlet-name>
+    <servlet-class>Mainsoft.Web.Hosting.IncludeHelperServlet</servlet-class>
+  </servlet>
+
+  <servlet>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <servlet-class>GhDynamicHttpServlet</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>/aspnetconfig</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>/aspnetconfig/</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>/assemblies/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.mdf</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.lck</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.properties</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.dat</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.ctrl</url-pattern>
+  </servlet-mapping>
+
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.aspx</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.asmx</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.ashx</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.invoke</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.soap</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.rem</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.axd</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.master</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.resource</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.skin</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.browser</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.sitemap</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.webinfo</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.resx</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.asax</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.ascx</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.config</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.Config</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.cs</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.vb</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.csproj</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.vbproj</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.licx</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.dll</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.class</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwDynamicServlet</servlet-name>
+    <url-pattern>*.jar</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>VmwIncludeHelperServlet</servlet-name>
+    <url-pattern>/servletincludehelper</url-pattern>
+  </servlet-mapping>
+
+  <session-config>
+    <session-timeout>20</session-timeout>
+  </session-config>
+
+  <welcome-file-list>
+    <welcome-file>Default.aspx</welcome-file>
+  </welcome-file-list>
+
+</web-app>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/Documentation/System.Web.Services.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/Documentation/System.Web.Services.xml
@@ -1,2892 +1,2892 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Web.Services">
-    <class name="WebMethodAttribute" namespace="System.Web.Services">
-        <constructor name="WebMethodAttribute" argnames="" />
-        <constructor name="WebMethodAttribute(System.Boolean)" argnames="enableSession" />
-        <constructor name="WebMethodAttribute(System.Boolean, System.EnterpriseServices.TransactionOption)" argnames="enableSession, transactionOption" />
-        <constructor name="WebMethodAttribute(System.Boolean, System.EnterpriseServices.TransactionOption, System.Int32)" argnames="enableSession, transactionOption, cacheDuration" />
-        <constructor name="WebMethodAttribute(System.Boolean, System.EnterpriseServices.TransactionOption, System.Int32, System.Boolean)" argnames="enableSession, transactionOption, cacheDuration, bufferResponse" />
-        <property name="Description" propertytype="System.String" />
-        <property name="EnableSession" propertytype="System.Boolean" />
-        <property name="CacheDuration" propertytype="System.Int32" />
-        <property name="BufferResponse" propertytype="System.Boolean" />
-        <property name="TransactionOption" propertytype="System.EnterpriseServices.TransactionOption" />
-        <property name="TransactionEnabled" propertytype="System.Boolean" />
-        <property name="MessageName" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebService" namespace="System.Web.Services">
-        <constructor name="WebService" argnames="" />
-        <property name="Application" propertytype="System.Web.HttpApplicationState" />
-        <property name="Context" propertytype="System.Web.HttpContext" />
-        <property name="Session" propertytype="System.Web.SessionState.HttpSessionState" />
-        <property name="Server" propertytype="System.Web.HttpServerUtility" />
-        <property name="User" propertytype="System.Security.Principal.IPrincipal" />
-        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
-    </class>
-    <class name="WebServiceAttribute" namespace="System.Web.Services">
-        <constructor name="WebServiceAttribute" argnames="" />
-        <field name="DefaultNamespace" />
-        <property name="Description" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebServiceBindingAttribute" namespace="System.Web.Services">
-        <constructor name="WebServiceBindingAttribute" argnames="" />
-        <constructor name="WebServiceBindingAttribute(System.String)" argnames="name" />
-        <constructor name="WebServiceBindingAttribute(System.String, System.String)" argnames="name, ns" />
-        <constructor name="WebServiceBindingAttribute(System.String, System.String, System.String)" argnames="name, ns, location" />
-        <property name="Location" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeFormatter" namespace="System.Web.Services.Protocols">
-        <constructor name="MimeFormatter" argnames="" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetInitializer(System.Type, System.Web.Services.Protocols.LogicalMethodInfo)" argnames="type, methodInfo" returntype="System.Object" />
-        <method name="GetInitializers(System.Type, System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="type, methodInfos" returntype="System.Object[]" />
-        <method name="CreateInstance(System.Type, System.Object)" argnames="type, initializer" returntype="System.Web.Services.Protocols.MimeFormatter" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeReturnReader" namespace="System.Web.Services.Protocols">
-        <constructor name="MimeReturnReader" argnames="" />
-        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AnyReturnReader" namespace="System.Web.Services.Protocols">
-        <constructor name="AnyReturnReader" argnames="" />
-        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeParameterReader" namespace="System.Web.Services.Protocols">
-        <constructor name="MimeParameterReader" argnames="" />
-        <method name="Read(System.Web.HttpRequest)" argnames="request" returntype="System.Object[]" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ValueCollectionParameterReader" namespace="System.Web.Services.Protocols">
-        <constructor name="ValueCollectionParameterReader" argnames="" />
-        <method name="Read(System.Web.HttpRequest)" argnames="request" inherited="System.Web.Services.Protocols.MimeParameterReader" returntype="System.Object[]" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Read(System.Collections.Specialized.NameValueCollection)" argnames="collection" returntype="System.Object[]" />
-        <method name="IsSupported(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Boolean" />
-        <method name="IsSupported(System.Reflection.ParameterInfo)" argnames="paramInfo" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HtmlFormParameterReader" namespace="System.Web.Services.Protocols">
-        <constructor name="HtmlFormParameterReader" argnames="" />
-        <method name="Read(System.Web.HttpRequest)" argnames="request" returntype="System.Object[]" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="o" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Read(System.Collections.Specialized.NameValueCollection)" argnames="collection" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeParameterWriter" namespace="System.Web.Services.Protocols">
-        <constructor name="MimeParameterWriter" argnames="" />
-        <property name="UsesWriteRequest" propertytype="System.Boolean" />
-        <property name="RequestEncoding" propertytype="System.Text.Encoding" />
-        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" returntype="System.Void" />
-        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" returntype="System.Void" />
-        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" returntype="System.String" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UrlEncodedParameterWriter" namespace="System.Web.Services.Protocols">
-        <constructor name="UrlEncodedParameterWriter" argnames="" />
-        <property name="RequestEncoding" propertytype="System.Text.Encoding" />
-        <property name="UsesWriteRequest" inherited="System.Web.Services.Protocols.MimeParameterWriter" propertytype="System.Boolean" />
-        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
-        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
-        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.String" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Encode(System.IO.TextWriter, System.Object[])" argnames="writer, values" returntype="System.Void" />
-        <method name="Encode(System.IO.TextWriter, System.String, System.Object)" argnames="writer, name, value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HtmlFormParameterWriter" namespace="System.Web.Services.Protocols">
-        <constructor name="HtmlFormParameterWriter" argnames="" />
-        <property name="UsesWriteRequest" propertytype="System.Boolean" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" propertytype="System.Text.Encoding" />
-        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" returntype="System.Void" />
-        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" returntype="System.Void" />
-        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.String" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Encode(System.IO.TextWriter, System.Object[])" argnames="writer, values" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
-        <method name="Encode(System.IO.TextWriter, System.String, System.Object)" argnames="writer, name, value" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebClientProtocol" namespace="System.Web.Services.Protocols">
-        <constructor name="WebClientProtocol" argnames="" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <property name="ConnectionGroupName" propertytype="System.String" />
-        <property name="PendingSyncRequest" propertytype="System.Net.WebRequest" />
-        <property name="PreAuthenticate" propertytype="System.Boolean" />
-        <property name="Url" propertytype="System.String" />
-        <property name="Uri" propertytype="System.Uri" />
-        <property name="RequestEncoding" propertytype="System.Text.Encoding" />
-        <property name="Timeout" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" returntype="System.Net.WebResponse" />
-        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" returntype="System.Net.WebResponse" />
-        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
-        <method name="Abort" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetFromCache(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="AddToCache(System.Type, System.Object)" argnames="type, value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="HttpWebClientProtocol" namespace="System.Web.Services.Protocols">
-        <constructor name="HttpWebClientProtocol" argnames="" />
-        <property name="AllowAutoRedirect" propertytype="System.Boolean" />
-        <property name="CookieContainer" propertytype="System.Net.CookieContainer" />
-        <property name="ClientCertificates" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
-        <property name="UserAgent" propertytype="System.String" />
-        <property name="Proxy" propertytype="System.Net.IWebProxy" />
-        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
-        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
-        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
-        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" returntype="System.Net.WebResponse" />
-        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" returntype="System.Net.WebResponse" />
-        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
-        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="HttpSimpleClientProtocol" namespace="System.Web.Services.Protocols">
-        <constructor name="HttpSimpleClientProtocol" argnames="" />
-        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
-        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
-        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
-        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
-        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
-        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
-        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
-        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
-        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebRequest(System.Uri)" argnames="uri" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebRequest" />
-        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Invoke(System.String, System.String, System.Object[])" argnames="methodName, requestUrl, parameters" returntype="System.Object" />
-        <method name="BeginInvoke(System.String, System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, requestUrl, parameters, callback, asyncState" returntype="System.IAsyncResult" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="HttpGetClientProtocol" namespace="System.Web.Services.Protocols">
-        <constructor name="HttpGetClientProtocol" argnames="" />
-        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
-        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
-        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
-        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
-        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
-        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
-        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
-        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
-        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
-        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Invoke(System.String, System.String, System.Object[])" argnames="methodName, requestUrl, parameters" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
-        <method name="BeginInvoke(System.String, System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, requestUrl, parameters, callback, asyncState" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.IAsyncResult" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="HttpMethodAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="HttpMethodAttribute" argnames="" />
-        <constructor name="HttpMethodAttribute(System.Type, System.Type)" argnames="returnFormatter, parameterFormatter" />
-        <property name="ReturnFormatter" propertytype="System.Type" />
-        <property name="ParameterFormatter" propertytype="System.Type" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpPostClientProtocol" namespace="System.Web.Services.Protocols">
-        <constructor name="HttpPostClientProtocol" argnames="" />
-        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
-        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
-        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
-        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
-        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
-        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
-        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
-        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
-        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
-        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Invoke(System.String, System.String, System.Object[])" argnames="methodName, requestUrl, parameters" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
-        <method name="BeginInvoke(System.String, System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, requestUrl, parameters, callback, asyncState" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.IAsyncResult" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="NopReturnReader" namespace="System.Web.Services.Protocols">
-        <constructor name="NopReturnReader" argnames="" />
-        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapMessage" namespace="System.Web.Services.Protocols">
-        <property name="OneWay" propertytype="System.Boolean" />
-        <property name="Exception" propertytype="System.Web.Services.Protocols.SoapException" />
-        <property name="MethodInfo" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
-        <property name="Headers" propertytype="System.Web.Services.Protocols.SoapHeaderCollection" />
-        <property name="Stream" propertytype="System.IO.Stream" />
-        <property name="ContentType" propertytype="System.String" />
-        <property name="Stage" propertytype="System.Web.Services.Protocols.SoapMessageStage" />
-        <property name="Url" propertytype="System.String" />
-        <property name="Action" propertytype="System.String" />
-        <method name="EnsureInStage" argnames="" returntype="System.Void" />
-        <method name="EnsureOutStage" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetInParameterValue(System.Int32)" argnames="index" returntype="System.Object" />
-        <method name="GetOutParameterValue(System.Int32)" argnames="index" returntype="System.Object" />
-        <method name="GetReturnValue" argnames="" returntype="System.Object" />
-        <method name="EnsureStage(System.Web.Services.Protocols.SoapMessageStage)" argnames="stage" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapClientMessage" namespace="System.Web.Services.Protocols">
-        <property name="OneWay" propertytype="System.Boolean" />
-        <property name="Client" propertytype="System.Web.Services.Protocols.SoapHttpClientProtocol" />
-        <property name="MethodInfo" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
-        <property name="Url" propertytype="System.String" />
-        <property name="Action" propertytype="System.String" />
-        <property name="Method" propertytype="System.Web.Services.Protocols.SoapClientMethod" />
-        <property name="Exception" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapException" />
-        <property name="Headers" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapHeaderCollection" />
-        <property name="Stream" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.IO.Stream" />
-        <property name="ContentType" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.String" />
-        <property name="Stage" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapMessageStage" />
-        <method name="EnsureInStage" argnames="" returntype="System.Void" />
-        <method name="EnsureOutStage" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetInParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
-        <method name="GetOutParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
-        <method name="GetReturnValue" argnames="" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
-        <method name="EnsureStage(System.Web.Services.Protocols.SoapMessageStage)" argnames="stage" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapDocumentMethodAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapDocumentMethodAttribute" argnames="" />
-        <constructor name="SoapDocumentMethodAttribute(System.String)" argnames="action" />
-        <property name="Action" propertytype="System.String" />
-        <property name="OneWay" propertytype="System.Boolean" />
-        <property name="RequestNamespace" propertytype="System.String" />
-        <property name="ResponseNamespace" propertytype="System.String" />
-        <property name="RequestElementName" propertytype="System.String" />
-        <property name="ResponseElementName" propertytype="System.String" />
-        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
-        <property name="ParameterStyle" propertytype="System.Web.Services.Protocols.SoapParameterStyle" />
-        <property name="Binding" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapDocumentServiceAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapDocumentServiceAttribute" argnames="" />
-        <constructor name="SoapDocumentServiceAttribute(System.Web.Services.Description.SoapBindingUse)" argnames="use" />
-        <constructor name="SoapDocumentServiceAttribute(System.Web.Services.Description.SoapBindingUse, System.Web.Services.Protocols.SoapParameterStyle)" argnames="use, paramStyle" />
-        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
-        <property name="ParameterStyle" propertytype="System.Web.Services.Protocols.SoapParameterStyle" />
-        <property name="RoutingStyle" propertytype="System.Web.Services.Protocols.SoapServiceRoutingStyle" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapException" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String)" argnames="message, code, actor" />
-        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String, System.Exception)" argnames="message, code, actor, innerException" />
-        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName)" argnames="message, code" />
-        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.Exception)" argnames="message, code, innerException" />
-        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String, System.Xml.XmlNode)" argnames="message, code, actor, detail" />
-        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String, System.Xml.XmlNode, System.Exception)" argnames="message, code, actor, detail, innerException" />
-        <field name="ServerFaultCode" />
-        <field name="ClientFaultCode" />
-        <field name="VersionMismatchFaultCode" />
-        <field name="MustUnderstandFaultCode" />
-        <field name="DetailElementName" />
-        <property name="Actor" propertytype="System.String" />
-        <property name="Code" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Detail" propertytype="System.Xml.XmlNode" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapExtension" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapExtension" argnames="" />
-        <method name="ChainStream(System.IO.Stream)" argnames="stream" returntype="System.IO.Stream" />
-        <method name="ProcessMessage(System.Web.Services.Protocols.SoapMessage)" argnames="message" returntype="System.Void" />
-        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
-        <method name="GetInitializer(System.Type)" argnames="serviceType" returntype="System.Object" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo, System.Web.Services.Protocols.SoapExtensionAttribute)" argnames="methodInfo, attribute" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapExtensionAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapExtensionAttribute" argnames="" />
-        <property name="ExtensionType" propertytype="System.Type" />
-        <property name="Priority" propertytype="System.Int32" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapHeaderAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapHeaderAttribute(System.String)" argnames="memberName" />
-        <property name="MemberName" propertytype="System.String" />
-        <property name="Direction" propertytype="System.Web.Services.Protocols.SoapHeaderDirection" />
-        <property name="Required" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapHeaderException" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName, System.String)" argnames="message, code, actor" />
-        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName, System.String, System.Exception)" argnames="message, code, actor, innerException" />
-        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName)" argnames="message, code" />
-        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName, System.Exception)" argnames="message, code, innerException" />
-        <property name="Actor" inherited="System.Web.Services.Protocols.SoapException" propertytype="System.String" />
-        <property name="Code" inherited="System.Web.Services.Protocols.SoapException" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Detail" inherited="System.Web.Services.Protocols.SoapException" propertytype="System.Xml.XmlNode" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapRpcMethodAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapRpcMethodAttribute" argnames="" />
-        <constructor name="SoapRpcMethodAttribute(System.String)" argnames="action" />
-        <property name="Action" propertytype="System.String" />
-        <property name="OneWay" propertytype="System.Boolean" />
-        <property name="RequestNamespace" propertytype="System.String" />
-        <property name="ResponseNamespace" propertytype="System.String" />
-        <property name="RequestElementName" propertytype="System.String" />
-        <property name="ResponseElementName" propertytype="System.String" />
-        <property name="Binding" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapRpcServiceAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapRpcServiceAttribute" argnames="" />
-        <property name="RoutingStyle" propertytype="System.Web.Services.Protocols.SoapServiceRoutingStyle" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapHeader" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapHeader" argnames="" />
-        <property name="EncodedMustUnderstand" propertytype="System.String" />
-        <property name="MustUnderstand" propertytype="System.Boolean" />
-        <property name="InternalMustUnderstand" propertytype="System.Boolean" />
-        <property name="Actor" propertytype="System.String" />
-        <property name="InternalActor" propertytype="System.String" />
-        <property name="DidUnderstand" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapUnknownHeader" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapUnknownHeader" argnames="" />
-        <property name="Element" propertytype="System.Xml.XmlElement" />
-        <property name="InternalMustUnderstand" propertytype="System.Boolean" />
-        <property name="InternalActor" propertytype="System.String" />
-        <property name="EncodedMustUnderstand" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.String" />
-        <property name="MustUnderstand" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.Boolean" />
-        <property name="Actor" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.String" />
-        <property name="DidUnderstand" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UrlParameterReader" namespace="System.Web.Services.Protocols">
-        <constructor name="UrlParameterReader" argnames="" />
-        <method name="Read(System.Web.HttpRequest)" argnames="request" returntype="System.Object[]" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="o" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Read(System.Collections.Specialized.NameValueCollection)" argnames="collection" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UrlParameterWriter" namespace="System.Web.Services.Protocols">
-        <constructor name="UrlParameterWriter" argnames="" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" propertytype="System.Text.Encoding" />
-        <property name="UsesWriteRequest" inherited="System.Web.Services.Protocols.MimeParameterWriter" propertytype="System.Boolean" />
-        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
-        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
-        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" returntype="System.String" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Encode(System.IO.TextWriter, System.Object[])" argnames="writer, values" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
-        <method name="Encode(System.IO.TextWriter, System.String, System.Object)" argnames="writer, name, value" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlReturnReader" namespace="System.Web.Services.Protocols">
-        <constructor name="XmlReturnReader" argnames="" />
-        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebClientAsyncResult" namespace="System.Web.Services.Protocols">
-        <property name="AsyncState" propertytype="System.Object" />
-        <property name="AsyncWaitHandle" propertytype="System.Threading.WaitHandle" />
-        <property name="CompletedSynchronously" propertytype="System.Boolean" />
-        <property name="IsCompleted" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Abort" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MatchAttribute" namespace="System.Web.Services.Protocols">
-        <constructor name="MatchAttribute(System.String)" argnames="pattern" />
-        <property name="Pattern" propertytype="System.String" />
-        <property name="Group" propertytype="System.Int32" />
-        <property name="Capture" propertytype="System.Int32" />
-        <property name="IgnoreCase" propertytype="System.Boolean" />
-        <property name="MaxRepeats" propertytype="System.Int32" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PatternMatcher" namespace="System.Web.Services.Protocols">
-        <constructor name="PatternMatcher(System.Type)" argnames="type" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Match(System.String)" argnames="text" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapHeaderCollection" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapHeaderCollection" argnames="" />
-        <property name="Item" propertytype="System.Web.Services.Protocols.SoapHeader" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Protocols.SoapHeader)" argnames="index, header" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Protocols.SoapHeader[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapServerMessage" namespace="System.Web.Services.Protocols">
-        <property name="OneWay" propertytype="System.Boolean" />
-        <property name="Url" propertytype="System.String" />
-        <property name="Action" propertytype="System.String" />
-        <property name="Server" propertytype="System.Object" />
-        <property name="MethodInfo" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
-        <property name="Exception" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapException" />
-        <property name="Headers" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapHeaderCollection" />
-        <property name="Stream" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.IO.Stream" />
-        <property name="ContentType" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.String" />
-        <property name="Stage" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapMessageStage" />
-        <method name="EnsureInStage" argnames="" returntype="System.Void" />
-        <method name="EnsureOutStage" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetInParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
-        <method name="GetOutParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
-        <method name="GetReturnValue" argnames="" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
-        <method name="EnsureStage(System.Web.Services.Protocols.SoapMessageStage)" argnames="stage" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TextReturnReader" namespace="System.Web.Services.Protocols">
-        <constructor name="TextReturnReader" argnames="" />
-        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
-        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
-        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebServiceHandlerFactory" namespace="System.Web.Services.Protocols">
-        <constructor name="WebServiceHandlerFactory" argnames="" />
-        <method name="ReleaseHandler(System.Web.IHttpHandler)" argnames="handler" returntype="System.Void" />
-        <method name="GetHandler(System.Web.HttpContext, System.String, System.String, System.String)" argnames="context, verb, url, filePath" returntype="System.Web.IHttpHandler" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapHttpClientProtocol" namespace="System.Web.Services.Protocols">
-        <constructor name="SoapHttpClientProtocol" argnames="" />
-        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
-        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
-        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
-        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
-        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
-        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
-        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
-        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
-        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
-        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Discover" argnames="" returntype="System.Void" />
-        <method name="Invoke(System.String, System.Object[])" argnames="methodName, parameters" returntype="System.Object[]" />
-        <method name="BeginInvoke(System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, parameters, callback, asyncState" returntype="System.IAsyncResult" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" returntype="System.Object[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="LogicalMethodInfo" namespace="System.Web.Services.Protocols">
-        <constructor name="LogicalMethodInfo(System.Reflection.MethodInfo)" argnames="methodInfo" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="Name" propertytype="System.String" />
-        <property name="AsyncResultParameter" propertytype="System.Reflection.ParameterInfo" />
-        <property name="AsyncCallbackParameter" propertytype="System.Reflection.ParameterInfo" />
-        <property name="AsyncStateParameter" propertytype="System.Reflection.ParameterInfo" />
-        <property name="ReturnType" propertytype="System.Type" />
-        <property name="IsVoid" propertytype="System.Boolean" />
-        <property name="IsAsync" propertytype="System.Boolean" />
-        <property name="InParameters" propertytype="System.Reflection.ParameterInfo[]" />
-        <property name="OutParameters" propertytype="System.Reflection.ParameterInfo[]" />
-        <property name="Parameters" propertytype="System.Reflection.ParameterInfo[]" />
-        <property name="CustomAttributeProvider" propertytype="System.Reflection.ICustomAttributeProvider" />
-        <property name="ReturnTypeCustomAttributeProvider" propertytype="System.Reflection.ICustomAttributeProvider" />
-        <property name="MethodInfo" propertytype="System.Reflection.MethodInfo" />
-        <property name="BeginMethodInfo" propertytype="System.Reflection.MethodInfo" />
-        <property name="EndMethodInfo" propertytype="System.Reflection.MethodInfo" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Invoke(System.Object, System.Object[])" argnames="target, values" returntype="System.Object[]" />
-        <method name="BeginInvoke(System.Object, System.Object[], System.AsyncCallback, System.Object)" argnames="target, values, callback, asyncState" returntype="System.IAsyncResult" />
-        <method name="EndInvoke(System.Object, System.IAsyncResult)" argnames="target, asyncResult" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type)" argnames="type" returntype="System.Object[]" />
-        <method name="GetCustomAttribute(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="IsBeginMethod(System.Reflection.MethodInfo)" argnames="methodInfo" returntype="System.Boolean" />
-        <method name="IsEndMethod(System.Reflection.MethodInfo)" argnames="methodInfo" returntype="System.Boolean" />
-        <method name="Create(System.Reflection.MethodInfo[])" argnames="methodInfos" returntype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
-        <method name="Create(System.Reflection.MethodInfo[], System.Web.Services.Protocols.LogicalMethodTypes)" argnames="methodInfos, types" returntype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="SoapHeaderDirection" namespace="System.Web.Services.Protocols">
-        <field name="In" />
-        <field name="Out" />
-        <field name="InOut" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SoapMessageStage" namespace="System.Web.Services.Protocols">
-        <field name="BeforeSerialize" />
-        <field name="AfterSerialize" />
-        <field name="BeforeDeserialize" />
-        <field name="AfterDeserialize" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SoapParameterStyle" namespace="System.Web.Services.Protocols">
-        <field name="Default" />
-        <field name="Bare" />
-        <field name="Wrapped" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SoapServiceRoutingStyle" namespace="System.Web.Services.Protocols">
-        <field name="SoapAction" />
-        <field name="RequestElement" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LogicalMethodTypes" namespace="System.Web.Services.Protocols">
-        <field name="Sync" />
-        <field name="Async" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="DiscoveryReference" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryReference" argnames="" />
-        <property name="ClientProtocol" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
-        <property name="DefaultFilename" propertytype="System.String" />
-        <property name="Url" propertytype="System.String" />
-        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
-        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FilenameFromUrl(System.String)" argnames="url" returntype="System.String" />
-        <method name="Resolve" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryReferenceCollection" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryReferenceCollection" argnames="" />
-        <property name="Item" propertytype="System.Web.Services.Discovery.DiscoveryReference" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DynamicDiscoveryDocument" namespace="System.Web.Services.Discovery">
-        <constructor name="DynamicDiscoveryDocument" argnames="" />
-        <field name="Namespace" />
-        <property name="ExcludePaths" propertytype="System.Web.Services.Discovery.ExcludePathInfo[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="Load(System.IO.Stream)" argnames="stream" returntype="System.Web.Services.Discovery.DynamicDiscoveryDocument" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ExcludePathInfo" namespace="System.Web.Services.Discovery">
-        <constructor name="ExcludePathInfo" argnames="" />
-        <constructor name="ExcludePathInfo(System.String)" argnames="path" />
-        <property name="Path" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SchemaReference" namespace="System.Web.Services.Discovery">
-        <constructor name="SchemaReference" argnames="" />
-        <constructor name="SchemaReference(System.String)" argnames="url" />
-        <field name="Namespace" />
-        <property name="Ref" propertytype="System.String" />
-        <property name="TargetNamespace" propertytype="System.String" />
-        <property name="Url" propertytype="System.String" />
-        <property name="DefaultFilename" propertytype="System.String" />
-        <property name="Schema" propertytype="System.Xml.Schema.XmlSchema" />
-        <property name="ClientProtocol" inherited="System.Web.Services.Discovery.DiscoveryReference" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
-        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
-        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Resolve" argnames="" inherited="System.Web.Services.Discovery.DiscoveryReference" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapBinding" namespace="System.Web.Services.Discovery">
-        <constructor name="SoapBinding" argnames="" />
-        <field name="Namespace" />
-        <property name="Address" propertytype="System.String" />
-        <property name="Binding" propertytype="System.Xml.XmlQualifiedName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoverySearchPattern" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoverySearchPattern" argnames="" />
-        <property name="Pattern" propertytype="System.String" />
-        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ContractSearchPattern" namespace="System.Web.Services.Discovery">
-        <constructor name="ContractSearchPattern" argnames="" />
-        <property name="Pattern" propertytype="System.String" />
-        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryClientDocumentCollection" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryClientDocumentCollection" argnames="" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
-        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
-        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.String, System.Object)" argnames="url, value" returntype="System.Void" />
-        <method name="Contains(System.String)" argnames="url" returntype="System.Boolean" />
-        <method name="Remove(System.String)" argnames="url" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryClientProtocol" namespace="System.Web.Services.Discovery">
-        <class name="DiscoveryClientResultsFile" namespace="System.Web.Services.Discovery">
-            <constructor name="DiscoveryClientResultsFile" argnames="" />
-            <property name="Results" propertytype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="DiscoveryClientResultsFile" argnames="" />
-        <property name="AdditionalInformation" propertytype="System.Collections.IList" />
-        <property name="Documents" propertytype="System.Web.Services.Discovery.DiscoveryClientDocumentCollection" />
-        <property name="Errors" propertytype="System.Web.Services.Discovery.DiscoveryExceptionDictionary" />
-        <property name="References" propertytype="System.Web.Services.Discovery.DiscoveryClientReferenceCollection" />
-        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
-        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
-        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
-        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
-        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
-        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
-        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
-        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
-        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
-        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
-        <method name="GetWebRequest(System.Uri)" argnames="uri" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebRequest" />
-        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Discover(System.String)" argnames="url" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
-        <method name="DiscoverAny(System.String)" argnames="url" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
-        <method name="Download(System.String&amp;)" argnames="url" returntype="System.IO.Stream" />
-        <method name="Download(System.String&amp;, System.String&amp;)" argnames="url, contentType" returntype="System.IO.Stream" />
-        <method name="ReadAll(System.String)" argnames="topLevelFilename" returntype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
-        <method name="ResolveAll" argnames="" returntype="System.Void" />
-        <method name="ResolveOneLevel" argnames="" returntype="System.Void" />
-        <method name="WriteAll(System.String, System.String)" argnames="directory, topLevelFilename" returntype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DiscoveryClientResultsFile" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryClientResultsFile" argnames="" />
-        <property name="Results" propertytype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryClientResultCollection" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryClientResultCollection" argnames="" />
-        <property name="Item" propertytype="System.Web.Services.Discovery.DiscoveryClientResult" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Discovery.DiscoveryClientResult)" argnames="value" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Discovery.DiscoveryClientResult)" argnames="value" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Discovery.DiscoveryClientResult)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryClientResult" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryClientResult" argnames="" />
-        <constructor name="DiscoveryClientResult(System.Type, System.String, System.String)" argnames="referenceType, url, filename" />
-        <property name="ReferenceTypeName" propertytype="System.String" />
-        <property name="Url" propertytype="System.String" />
-        <property name="Filename" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryClientReferenceCollection" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryClientReferenceCollection" argnames="" />
-        <property name="Item" propertytype="System.Web.Services.Discovery.DiscoveryReference" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
-        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
-        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Void" />
-        <method name="Add(System.String, System.Web.Services.Discovery.DiscoveryReference)" argnames="url, value" returntype="System.Void" />
-        <method name="Contains(System.String)" argnames="url" returntype="System.Boolean" />
-        <method name="Remove(System.String)" argnames="url" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryDocumentLinksPattern" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryDocumentLinksPattern" argnames="" />
-        <property name="Pattern" propertytype="System.String" />
-        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryDocumentSearchPattern" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryDocumentSearchPattern" argnames="" />
-        <property name="Pattern" propertytype="System.String" />
-        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryExceptionDictionary" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryExceptionDictionary" argnames="" />
-        <property name="Item" propertytype="System.Exception" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
-        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
-        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.String, System.Exception)" argnames="url, value" returntype="System.Void" />
-        <method name="Contains(System.String)" argnames="url" returntype="System.Boolean" />
-        <method name="Remove(System.String)" argnames="url" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSearchPattern" namespace="System.Web.Services.Discovery">
-        <constructor name="XmlSchemaSearchPattern" argnames="" />
-        <property name="Pattern" propertytype="System.String" />
-        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ContractReference" namespace="System.Web.Services.Discovery">
-        <constructor name="ContractReference" argnames="" />
-        <constructor name="ContractReference(System.String)" argnames="href" />
-        <constructor name="ContractReference(System.String, System.String)" argnames="href, docRef" />
-        <field name="Namespace" />
-        <property name="Ref" propertytype="System.String" />
-        <property name="DocRef" propertytype="System.String" />
-        <property name="Url" propertytype="System.String" />
-        <property name="Contract" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="DefaultFilename" propertytype="System.String" />
-        <property name="ClientProtocol" inherited="System.Web.Services.Discovery.DiscoveryReference" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
-        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
-        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Resolve" argnames="" inherited="System.Web.Services.Discovery.DiscoveryReference" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryDocument" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryDocument" argnames="" />
-        <field name="Namespace" />
-        <property name="References" propertytype="System.Collections.IList" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Read(System.IO.Stream)" argnames="stream" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
-        <method name="Read(System.IO.TextReader)" argnames="reader" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
-        <method name="Read(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
-        <method name="CanRead(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Boolean" />
-        <method name="Write(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
-        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryDocumentReference" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryDocumentReference" argnames="" />
-        <constructor name="DiscoveryDocumentReference(System.String)" argnames="href" />
-        <property name="Ref" propertytype="System.String" />
-        <property name="DefaultFilename" propertytype="System.String" />
-        <property name="Document" propertytype="System.Web.Services.Discovery.DiscoveryDocument" />
-        <property name="Url" propertytype="System.String" />
-        <property name="ClientProtocol" inherited="System.Web.Services.Discovery.DiscoveryReference" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
-        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
-        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ResolveAll" argnames="" returntype="System.Void" />
-        <method name="Resolve" argnames="" inherited="System.Web.Services.Discovery.DiscoveryReference" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiscoveryRequestHandler" namespace="System.Web.Services.Discovery">
-        <constructor name="DiscoveryRequestHandler" argnames="" />
-        <property name="IsReusable" propertytype="System.Boolean" />
-        <method name="ProcessRequest(System.Web.HttpContext)" argnames="context" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceDescriptionFormatExtension" namespace="System.Web.Services.Description">
-        <constructor name="ServiceDescriptionFormatExtension" argnames="" />
-        <property name="Parent" propertytype="System.Object" />
-        <property name="Required" propertytype="System.Boolean" />
-        <property name="Handled" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpAddressBinding" namespace="System.Web.Services.Description">
-        <constructor name="HttpAddressBinding" argnames="" />
-        <property name="Location" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpBinding" namespace="System.Web.Services.Description">
-        <constructor name="HttpBinding" argnames="" />
-        <field name="Namespace" />
-        <property name="Verb" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpOperationBinding" namespace="System.Web.Services.Description">
-        <constructor name="HttpOperationBinding" argnames="" />
-        <property name="Location" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpUrlEncodedBinding" namespace="System.Web.Services.Description">
-        <constructor name="HttpUrlEncodedBinding" argnames="" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpUrlReplacementBinding" namespace="System.Web.Services.Description">
-        <constructor name="HttpUrlReplacementBinding" argnames="" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProtocolImporter" namespace="System.Web.Services.Description">
-        <constructor name="ProtocolImporter" argnames="" />
-        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
-        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="AbstractSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="ConcreteSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="CodeNamespace" propertytype="System.CodeDom.CodeNamespace" />
-        <property name="CodeTypeDeclaration" propertytype="System.CodeDom.CodeTypeDeclaration" />
-        <property name="Style" propertytype="System.Web.Services.Description.ServiceDescriptionImportStyle" />
-        <property name="Warnings" propertytype="System.Web.Services.Description.ServiceDescriptionImportWarnings" />
-        <property name="ClassNames" propertytype="System.Xml.Serialization.CodeIdentifiers" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="ClassName" propertytype="System.String" />
-        <property name="Port" propertytype="System.Web.Services.Description.Port" />
-        <property name="PortType" propertytype="System.Web.Services.Description.PortType" />
-        <property name="Binding" propertytype="System.Web.Services.Description.Binding" />
-        <property name="Service" propertytype="System.Web.Services.Description.Service" />
-        <property name="ServiceImporter" propertytype="System.Web.Services.Description.ServiceDescriptionImporter" />
-        <property name="Operation" propertytype="System.Web.Services.Description.Operation" />
-        <property name="OperationBinding" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="InputMessage" propertytype="System.Web.Services.Description.Message" />
-        <property name="OutputMessage" propertytype="System.Web.Services.Description.Message" />
-        <property name="ProtocolName" propertytype="System.String" />
-        <method name="EndNamespace" argnames="" returntype="System.Void" />
-        <method name="EndClass" argnames="" returntype="System.Void" />
-        <method name="GenerateMethod" argnames="" returntype="System.CodeDom.CodeMemberMethod" />
-        <method name="BeginClass" argnames="" returntype="System.CodeDom.CodeTypeDeclaration" />
-        <method name="IsOperationFlowSupported(System.Web.Services.Description.OperationFlow)" argnames="flow" returntype="System.Boolean" />
-        <method name="IsBindingSupported" argnames="" returntype="System.Boolean" />
-        <method name="BeginNamespace" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddExtensionWarningComments(System.CodeDom.CodeCommentStatementCollection, System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection)" argnames="comments, extensions" returntype="System.Void" />
-        <method name="UnsupportedBindingWarning(System.String)" argnames="text" returntype="System.Void" />
-        <method name="UnsupportedOperationWarning(System.String)" argnames="text" returntype="System.Void" />
-        <method name="UnsupportedOperationBindingWarning(System.String)" argnames="text" returntype="System.Void" />
-        <method name="OperationSyntaxException(System.String)" argnames="text" returntype="System.Exception" />
-        <method name="OperationBindingSyntaxException(System.String)" argnames="text" returntype="System.Exception" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProtocolReflector" namespace="System.Web.Services.Description">
-        <constructor name="ProtocolReflector" argnames="" />
-        <property name="Service" propertytype="System.Web.Services.Description.Service" />
-        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
-        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="SchemaExporter" propertytype="System.Xml.Serialization.XmlSchemaExporter" />
-        <property name="ReflectionImporter" propertytype="System.Xml.Serialization.XmlReflectionImporter" />
-        <property name="DefaultNamespace" propertytype="System.String" />
-        <property name="ServiceUrl" propertytype="System.String" />
-        <property name="ServiceType" propertytype="System.Type" />
-        <property name="Method" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
-        <property name="Binding" propertytype="System.Web.Services.Description.Binding" />
-        <property name="PortType" propertytype="System.Web.Services.Description.PortType" />
-        <property name="Port" propertytype="System.Web.Services.Description.Port" />
-        <property name="Operation" propertytype="System.Web.Services.Description.Operation" />
-        <property name="OperationBinding" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="MethodAttribute" propertytype="System.Web.Services.WebMethodAttribute" />
-        <property name="Methods" propertytype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
-        <property name="InputMessage" propertytype="System.Web.Services.Description.Message" />
-        <property name="OutputMessage" propertytype="System.Web.Services.Description.Message" />
-        <property name="HeaderMessages" propertytype="System.Web.Services.Description.MessageCollection" />
-        <property name="ProtocolName" propertytype="System.String" />
-        <method name="EndClass" argnames="" returntype="System.Void" />
-        <method name="ReflectMethodBinding" argnames="" returntype="System.String" />
-        <method name="ReflectMethod" argnames="" returntype="System.Boolean" />
-        <method name="BeginClass" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetServiceDescription(System.String)" argnames="ns" returntype="System.Web.Services.Description.ServiceDescription" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeContentBinding" namespace="System.Web.Services.Description">
-        <constructor name="MimeContentBinding" argnames="" />
-        <field name="Namespace" />
-        <property name="Part" propertytype="System.String" />
-        <property name="Type" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimePart" namespace="System.Web.Services.Description">
-        <constructor name="MimePart" argnames="" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeMultipartRelatedBinding" namespace="System.Web.Services.Description">
-        <constructor name="MimeMultipartRelatedBinding" argnames="" />
-        <property name="Parts" propertytype="System.Web.Services.Description.MimePartCollection" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeXmlBinding" namespace="System.Web.Services.Description">
-        <constructor name="MimeXmlBinding" argnames="" />
-        <property name="Part" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimePartCollection" namespace="System.Web.Services.Description">
-        <constructor name="MimePartCollection" argnames="" />
-        <property name="Item" propertytype="System.Web.Services.Description.MimePart" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.MimePart)" argnames="index, mimePart" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.MimePart[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeTextBinding" namespace="System.Web.Services.Description">
-        <constructor name="MimeTextBinding" argnames="" />
-        <field name="Namespace" />
-        <property name="Matches" propertytype="System.Web.Services.Description.MimeTextMatchCollection" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeTextMatch" namespace="System.Web.Services.Description">
-        <constructor name="MimeTextMatch" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Type" propertytype="System.String" />
-        <property name="Group" propertytype="System.Int32" />
-        <property name="Capture" propertytype="System.Int32" />
-        <property name="Repeats" propertytype="System.Int32" />
-        <property name="RepeatsString" propertytype="System.String" />
-        <property name="Pattern" propertytype="System.String" />
-        <property name="IgnoreCase" propertytype="System.Boolean" />
-        <property name="Matches" propertytype="System.Web.Services.Description.MimeTextMatchCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MimeTextMatchCollection" namespace="System.Web.Services.Description">
-        <constructor name="MimeTextMatchCollection" argnames="" />
-        <property name="Item" propertytype="System.Web.Services.Description.MimeTextMatch" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.MimeTextMatch)" argnames="index, match" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.MimeTextMatch[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceDescriptionBaseCollection" namespace="System.Web.Services.Description">
-        <property name="Table" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClear" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceDescriptionCollection" namespace="System.Web.Services.Description">
-        <constructor name="ServiceDescriptionCollection" argnames="" />
-        <property name="Item" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Item" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.ServiceDescription)" argnames="index, serviceDescription" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.ServiceDescription[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetMessage(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.Message" />
-        <method name="GetPortType(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.PortType" />
-        <method name="GetService(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.Service" />
-        <method name="GetBinding(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.Binding" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapBinding" namespace="System.Web.Services.Description">
-        <constructor name="SoapBinding" argnames="" />
-        <field name="Namespace" />
-        <field name="HttpTransport" />
-        <property name="Transport" propertytype="System.String" />
-        <property name="Style" propertytype="System.Web.Services.Description.SoapBindingStyle" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapOperationBinding" namespace="System.Web.Services.Description">
-        <constructor name="SoapOperationBinding" argnames="" />
-        <property name="SoapAction" propertytype="System.String" />
-        <property name="Style" propertytype="System.Web.Services.Description.SoapBindingStyle" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapBodyBinding" namespace="System.Web.Services.Description">
-        <constructor name="SoapBodyBinding" argnames="" />
-        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Encoding" propertytype="System.String" />
-        <property name="PartsString" propertytype="System.String" />
-        <property name="Parts" propertytype="System.String[]" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapFaultBinding" namespace="System.Web.Services.Description">
-        <constructor name="SoapFaultBinding" argnames="" />
-        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Encoding" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapHeaderBinding" namespace="System.Web.Services.Description">
-        <constructor name="SoapHeaderBinding" argnames="" />
-        <property name="MapToProperty" propertytype="System.Boolean" />
-        <property name="Message" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Part" propertytype="System.String" />
-        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
-        <property name="Encoding" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapHeaderFaultBinding" namespace="System.Web.Services.Description">
-        <constructor name="SoapHeaderFaultBinding" argnames="" />
-        <property name="Message" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Part" propertytype="System.String" />
-        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
-        <property name="Encoding" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapAddressBinding" namespace="System.Web.Services.Description">
-        <constructor name="SoapAddressBinding" argnames="" />
-        <property name="Location" propertytype="System.String" />
-        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
-        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapTransportImporter" namespace="System.Web.Services.Description">
-        <constructor name="SoapTransportImporter" argnames="" />
-        <property name="ImportContext" propertytype="System.Web.Services.Description.SoapProtocolImporter" />
-        <method name="ImportClass" argnames="" returntype="System.Void" />
-        <method name="IsSupportedTransport(System.String)" argnames="transport" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceDescriptionImporter" namespace="System.Web.Services.Description">
-        <constructor name="ServiceDescriptionImporter" argnames="" />
-        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
-        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="Style" propertytype="System.Web.Services.Description.ServiceDescriptionImportStyle" />
-        <property name="ProtocolName" propertytype="System.String" />
-        <property name="AllSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="AbstractSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="ConcreteSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddServiceDescription(System.Web.Services.Description.ServiceDescription, System.String, System.String)" argnames="serviceDescription, appSettingUrlKey, appSettingBaseUrl" returntype="System.Void" />
-        <method name="Import(System.CodeDom.CodeNamespace, System.CodeDom.CodeCompileUnit)" argnames="codeNamespace, codeCompileUnit" returntype="System.Web.Services.Description.ServiceDescriptionImportWarnings" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceDescriptionReflector" namespace="System.Web.Services.Description">
-        <constructor name="ServiceDescriptionReflector" argnames="" />
-        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
-        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Service" propertytype="System.Web.Services.Description.Service" />
-        <property name="ServiceType" propertytype="System.Type" />
-        <property name="Methods" propertytype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
-        <property name="ServiceUrl" propertytype="System.String" />
-        <property name="SchemaExporter" propertytype="System.Xml.Serialization.XmlSchemaExporter" />
-        <property name="ReflectionImporter" propertytype="System.Xml.Serialization.XmlReflectionImporter" />
-        <property name="ServiceAttribute" propertytype="System.Web.Services.WebServiceAttribute" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Reflect(System.Type, System.String)" argnames="type, url" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapExtensionImporter" namespace="System.Web.Services.Description">
-        <constructor name="SoapExtensionImporter" argnames="" />
-        <property name="ImportContext" propertytype="System.Web.Services.Description.SoapProtocolImporter" />
-        <method name="ImportMethod(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="metadata" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapExtensionReflector" namespace="System.Web.Services.Description">
-        <constructor name="SoapExtensionReflector" argnames="" />
-        <property name="ReflectionContext" propertytype="System.Web.Services.Description.ProtocolReflector" />
-        <method name="ReflectMethod" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapProtocolImporter" namespace="System.Web.Services.Description">
-        <constructor name="SoapProtocolImporter" argnames="" />
-        <property name="ProtocolName" propertytype="System.String" />
-        <property name="SoapBinding" propertytype="System.Web.Services.Description.SoapBinding" />
-        <property name="SoapImporter" propertytype="System.Xml.Serialization.SoapSchemaImporter" />
-        <property name="XmlImporter" propertytype="System.Xml.Serialization.XmlSchemaImporter" />
-        <property name="XmlExporter" propertytype="System.Xml.Serialization.XmlCodeExporter" />
-        <property name="SoapExporter" propertytype="System.Xml.Serialization.SoapCodeExporter" />
-        <property name="MetadataPropertiesAdded" propertytype="System.Boolean" />
-        <property name="ServiceDescriptions" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
-        <property name="Schemas" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="AbstractSchemas" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="ConcreteSchemas" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="CodeNamespace" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.CodeDom.CodeNamespace" />
-        <property name="CodeTypeDeclaration" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.CodeDom.CodeTypeDeclaration" />
-        <property name="Style" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.ServiceDescriptionImportStyle" />
-        <property name="Warnings" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.ServiceDescriptionImportWarnings" />
-        <property name="ClassNames" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.CodeIdentifiers" />
-        <property name="MethodName" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.String" />
-        <property name="ClassName" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.String" />
-        <property name="Port" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Port" />
-        <property name="PortType" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.PortType" />
-        <property name="Binding" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Binding" />
-        <property name="Service" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Service" />
-        <property name="Operation" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Operation" />
-        <property name="OperationBinding" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="InputMessage" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Message" />
-        <property name="OutputMessage" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Message" />
-        <method name="EndNamespace" argnames="" returntype="System.Void" />
-        <method name="EndClass" argnames="" returntype="System.Void" />
-        <method name="GenerateMethod" argnames="" returntype="System.CodeDom.CodeMemberMethod" />
-        <method name="BeginClass" argnames="" returntype="System.CodeDom.CodeTypeDeclaration" />
-        <method name="IsOperationFlowSupported(System.Web.Services.Description.OperationFlow)" argnames="flow" returntype="System.Boolean" />
-        <method name="IsBindingSupported" argnames="" returntype="System.Boolean" />
-        <method name="BeginNamespace" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddExtensionWarningComments(System.CodeDom.CodeCommentStatementCollection, System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection)" argnames="comments, extensions" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
-        <method name="UnsupportedBindingWarning(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
-        <method name="UnsupportedOperationWarning(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
-        <method name="UnsupportedOperationBindingWarning(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
-        <method name="OperationSyntaxException(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Exception" />
-        <method name="OperationBindingSyntaxException(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Exception" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DocumentableItem" namespace="System.Web.Services.Description">
-        <constructor name="DocumentableItem" argnames="" />
-        <property name="Documentation" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceDescription" namespace="System.Web.Services.Description">
-        <constructor name="ServiceDescription" argnames="" />
-        <field name="Namespace" />
-        <property name="RetrievalUrl" propertytype="System.String" />
-        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
-        <property name="Imports" propertytype="System.Web.Services.Description.ImportCollection" />
-        <property name="Types" propertytype="System.Web.Services.Description.Types" />
-        <property name="Messages" propertytype="System.Web.Services.Description.MessageCollection" />
-        <property name="PortTypes" propertytype="System.Web.Services.Description.PortTypeCollection" />
-        <property name="Bindings" propertytype="System.Web.Services.Description.BindingCollection" />
-        <property name="Services" propertytype="System.Web.Services.Description.ServiceCollection" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="TargetNamespace" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Serializer" propertytype="System.Xml.Serialization.XmlSerializer" />
-        <property name="AppSettingBaseUrl" propertytype="System.String" />
-        <property name="AppSettingUrlKey" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Read(System.IO.TextReader)" argnames="textReader" returntype="System.Web.Services.Description.ServiceDescription" />
-        <method name="Read(System.IO.Stream)" argnames="stream" returntype="System.Web.Services.Description.ServiceDescription" />
-        <method name="Read(System.Xml.XmlReader)" argnames="reader" returntype="System.Web.Services.Description.ServiceDescription" />
-        <method name="Read(System.String)" argnames="fileName" returntype="System.Web.Services.Description.ServiceDescription" />
-        <method name="CanRead(System.Xml.XmlReader)" argnames="reader" returntype="System.Boolean" />
-        <method name="Write(System.String)" argnames="fileName" returntype="System.Void" />
-        <method name="Write(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
-        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Import" namespace="System.Web.Services.Description">
-        <constructor name="Import" argnames="" />
-        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Location" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Port" namespace="System.Web.Services.Description">
-        <constructor name="Port" argnames="" />
-        <property name="Service" propertytype="System.Web.Services.Description.Service" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Binding" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Service" namespace="System.Web.Services.Description">
-        <constructor name="Service" argnames="" />
-        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="Ports" propertytype="System.Web.Services.Description.PortCollection" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MessageBinding" namespace="System.Web.Services.Description">
-        <constructor name="MessageBinding" argnames="" />
-        <property name="OperationBinding" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FaultBinding" namespace="System.Web.Services.Description">
-        <constructor name="FaultBinding" argnames="" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="OperationBinding" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="Name" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InputBinding" namespace="System.Web.Services.Description">
-        <constructor name="InputBinding" argnames="" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="OperationBinding" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="Name" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OutputBinding" namespace="System.Web.Services.Description">
-        <constructor name="OutputBinding" argnames="" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="OperationBinding" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="Name" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationBinding" namespace="System.Web.Services.Description">
-        <constructor name="OperationBinding" argnames="" />
-        <property name="Binding" propertytype="System.Web.Services.Description.Binding" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="Input" propertytype="System.Web.Services.Description.InputBinding" />
-        <property name="Output" propertytype="System.Web.Services.Description.OutputBinding" />
-        <property name="Faults" propertytype="System.Web.Services.Description.FaultBindingCollection" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Binding" namespace="System.Web.Services.Description">
-        <constructor name="Binding" argnames="" />
-        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="Operations" propertytype="System.Web.Services.Description.OperationBindingCollection" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Type" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationMessage" namespace="System.Web.Services.Description">
-        <constructor name="OperationMessage" argnames="" />
-        <property name="Operation" propertytype="System.Web.Services.Description.Operation" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Message" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationFault" namespace="System.Web.Services.Description">
-        <constructor name="OperationFault" argnames="" />
-        <property name="Operation" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Web.Services.Description.Operation" />
-        <property name="Name" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.String" />
-        <property name="Message" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationInput" namespace="System.Web.Services.Description">
-        <constructor name="OperationInput" argnames="" />
-        <property name="Operation" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Web.Services.Description.Operation" />
-        <property name="Name" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.String" />
-        <property name="Message" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationOutput" namespace="System.Web.Services.Description">
-        <constructor name="OperationOutput" argnames="" />
-        <property name="Operation" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Web.Services.Description.Operation" />
-        <property name="Name" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.String" />
-        <property name="Message" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Operation" namespace="System.Web.Services.Description">
-        <constructor name="Operation" argnames="" />
-        <property name="PortType" propertytype="System.Web.Services.Description.PortType" />
-        <property name="Name" propertytype="System.String" />
-        <property name="ParameterOrderString" propertytype="System.String" />
-        <property name="ParameterOrder" propertytype="System.String[]" />
-        <property name="Messages" propertytype="System.Web.Services.Description.OperationMessageCollection" />
-        <property name="Faults" propertytype="System.Web.Services.Description.OperationFaultCollection" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IsBoundBy(System.Web.Services.Description.OperationBinding)" argnames="operationBinding" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PortType" namespace="System.Web.Services.Description">
-        <constructor name="PortType" argnames="" />
-        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Operations" propertytype="System.Web.Services.Description.OperationCollection" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Message" namespace="System.Web.Services.Description">
-        <constructor name="Message" argnames="" />
-        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
-        <property name="Parts" propertytype="System.Web.Services.Description.MessagePartCollection" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FindPartsByName(System.String[])" argnames="partNames" returntype="System.Web.Services.Description.MessagePart[]" />
-        <method name="FindPartByName(System.String)" argnames="partName" returntype="System.Web.Services.Description.MessagePart" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MessagePart" namespace="System.Web.Services.Description">
-        <constructor name="MessagePart" argnames="" />
-        <property name="Message" propertytype="System.Web.Services.Description.Message" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Element" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Type" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Types" namespace="System.Web.Services.Description">
-        <constructor name="Types" argnames="" />
-        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
-        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
-        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceDescriptionFormatExtensionCollection" namespace="System.Web.Services.Description">
-        <constructor name="ServiceDescriptionFormatExtensionCollection(System.Object)" argnames="parent" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Object)" argnames="extension" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, extension" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="extension" returntype="System.Int32" />
-        <method name="Contains(System.Object)" argnames="extension" returntype="System.Boolean" />
-        <method name="Remove(System.Object)" argnames="extension" returntype="System.Void" />
-        <method name="CopyTo(System.Object[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Find(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="FindAll(System.Type)" argnames="type" returntype="System.Object[]" />
-        <method name="Find(System.String, System.String)" argnames="name, ns" returntype="System.Xml.XmlElement" />
-        <method name="FindAll(System.String, System.String)" argnames="name, ns" returntype="System.Xml.XmlElement[]" />
-        <method name="IsHandled(System.Object)" argnames="item" returntype="System.Boolean" />
-        <method name="IsRequired(System.Object)" argnames="item" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationMessageCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.OperationMessage" />
-        <property name="Input" propertytype="System.Web.Services.Description.OperationInput" />
-        <property name="Output" propertytype="System.Web.Services.Description.OperationOutput" />
-        <property name="Flow" propertytype="System.Web.Services.Description.OperationFlow" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.OperationMessage)" argnames="index, operationMessage" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.OperationMessage[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImportCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.Import" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.Import)" argnames="import" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.Import)" argnames="index, import" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.Import)" argnames="import" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.Import)" argnames="import" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.Import)" argnames="import" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.Import[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MessageCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.Message" />
-        <property name="Item" propertytype="System.Web.Services.Description.Message" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.Message)" argnames="message" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.Message)" argnames="index, message" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.Message)" argnames="message" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.Message)" argnames="message" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.Message)" argnames="message" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.Message[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PortCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.Port" />
-        <property name="Item" propertytype="System.Web.Services.Description.Port" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.Port)" argnames="port" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.Port)" argnames="index, port" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.Port)" argnames="port" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.Port)" argnames="port" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.Port)" argnames="port" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.Port[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PortTypeCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.PortType" />
-        <property name="Item" propertytype="System.Web.Services.Description.PortType" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.PortType)" argnames="index, portType" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.PortType[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BindingCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.Binding" />
-        <property name="Item" propertytype="System.Web.Services.Description.Binding" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.Binding)" argnames="index, binding" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.Binding[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServiceCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.Service" />
-        <property name="Item" propertytype="System.Web.Services.Description.Service" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.Service)" argnames="service" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.Service)" argnames="index, service" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.Service)" argnames="service" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.Service)" argnames="service" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.Service)" argnames="service" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.Service[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MessagePartCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.MessagePart" />
-        <property name="Item" propertytype="System.Web.Services.Description.MessagePart" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.MessagePart)" argnames="index, messagePart" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.MessagePart[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationBindingCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.OperationBinding" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.OperationBinding)" argnames="index, bindingOperation" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.OperationBinding[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FaultBindingCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.FaultBinding" />
-        <property name="Item" propertytype="System.Web.Services.Description.FaultBinding" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.FaultBinding)" argnames="index, bindingOperationFault" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.FaultBinding[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.Operation" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.Operation)" argnames="index, operation" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.Operation[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OperationFaultCollection" namespace="System.Web.Services.Description">
-        <property name="Item" propertytype="System.Web.Services.Description.OperationFault" />
-        <property name="Item" propertytype="System.Web.Services.Description.OperationFault" />
-        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Web.Services.Description.OperationFault)" argnames="index, operationFaultMessage" returntype="System.Void" />
-        <method name="IndexOf(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Int32" />
-        <method name="Contains(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Boolean" />
-        <method name="Remove(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Void" />
-        <method name="CopyTo(System.Web.Services.Description.OperationFault[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="SoapBindingStyle" namespace="System.Web.Services.Description">
-        <field name="Default" />
-        <field name="Document" />
-        <field name="Rpc" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SoapBindingUse" namespace="System.Web.Services.Description">
-        <field name="Default" />
-        <field name="Encoded" />
-        <field name="Literal" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ServiceDescriptionImportWarnings" namespace="System.Web.Services.Description">
-        <field name="NoCodeGenerated" />
-        <field name="OptionalExtensionsIgnored" />
-        <field name="RequiredExtensionsIgnored" />
-        <field name="UnsupportedOperationsIgnored" />
-        <field name="UnsupportedBindingsIgnored" />
-        <field name="NoMethodsGenerated" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ServiceDescriptionImportStyle" namespace="System.Web.Services.Description">
-        <field name="Client" />
-        <field name="Server" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="OperationFlow" namespace="System.Web.Services.Description">
-        <field name="None" />
-        <field name="OneWay" />
-        <field name="Notification" />
-        <field name="RequestResponse" />
-        <field name="SolicitResponse" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="XmlFormatExtensionAttribute" namespace="System.Web.Services.Configuration">
-        <constructor name="XmlFormatExtensionAttribute" argnames="" />
-        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type)" argnames="elementName, ns, extensionPoint1" />
-        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type, System.Type)" argnames="elementName, ns, extensionPoint1, extensionPoint2" />
-        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type, System.Type, System.Type)" argnames="elementName, ns, extensionPoint1, extensionPoint2, extensionPoint3" />
-        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type, System.Type, System.Type, System.Type)" argnames="elementName, ns, extensionPoint1, extensionPoint2, extensionPoint3, extensionPoint4" />
-        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type[])" argnames="elementName, ns, extensionPoints" />
-        <property name="ExtensionPoints" propertytype="System.Type[]" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlFormatExtensionPointAttribute" namespace="System.Web.Services.Configuration">
-        <constructor name="XmlFormatExtensionPointAttribute(System.String)" argnames="memberName" />
-        <property name="MemberName" propertytype="System.String" />
-        <property name="AllowElements" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlFormatExtensionPrefixAttribute" namespace="System.Web.Services.Configuration">
-        <constructor name="XmlFormatExtensionPrefixAttribute" argnames="" />
-        <constructor name="XmlFormatExtensionPrefixAttribute(System.String, System.String)" argnames="prefix, ns" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Web.Services">
+    <class name="WebMethodAttribute" namespace="System.Web.Services">
+        <constructor name="WebMethodAttribute" argnames="" />
+        <constructor name="WebMethodAttribute(System.Boolean)" argnames="enableSession" />
+        <constructor name="WebMethodAttribute(System.Boolean, System.EnterpriseServices.TransactionOption)" argnames="enableSession, transactionOption" />
+        <constructor name="WebMethodAttribute(System.Boolean, System.EnterpriseServices.TransactionOption, System.Int32)" argnames="enableSession, transactionOption, cacheDuration" />
+        <constructor name="WebMethodAttribute(System.Boolean, System.EnterpriseServices.TransactionOption, System.Int32, System.Boolean)" argnames="enableSession, transactionOption, cacheDuration, bufferResponse" />
+        <property name="Description" propertytype="System.String" />
+        <property name="EnableSession" propertytype="System.Boolean" />
+        <property name="CacheDuration" propertytype="System.Int32" />
+        <property name="BufferResponse" propertytype="System.Boolean" />
+        <property name="TransactionOption" propertytype="System.EnterpriseServices.TransactionOption" />
+        <property name="TransactionEnabled" propertytype="System.Boolean" />
+        <property name="MessageName" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebService" namespace="System.Web.Services">
+        <constructor name="WebService" argnames="" />
+        <property name="Application" propertytype="System.Web.HttpApplicationState" />
+        <property name="Context" propertytype="System.Web.HttpContext" />
+        <property name="Session" propertytype="System.Web.SessionState.HttpSessionState" />
+        <property name="Server" propertytype="System.Web.HttpServerUtility" />
+        <property name="User" propertytype="System.Security.Principal.IPrincipal" />
+        <property name="Events" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.MarshalByValueComponent" propertytype="System.Boolean" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Object" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.MarshalByValueComponent" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.MarshalByValueComponent" />
+    </class>
+    <class name="WebServiceAttribute" namespace="System.Web.Services">
+        <constructor name="WebServiceAttribute" argnames="" />
+        <field name="DefaultNamespace" />
+        <property name="Description" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebServiceBindingAttribute" namespace="System.Web.Services">
+        <constructor name="WebServiceBindingAttribute" argnames="" />
+        <constructor name="WebServiceBindingAttribute(System.String)" argnames="name" />
+        <constructor name="WebServiceBindingAttribute(System.String, System.String)" argnames="name, ns" />
+        <constructor name="WebServiceBindingAttribute(System.String, System.String, System.String)" argnames="name, ns, location" />
+        <property name="Location" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeFormatter" namespace="System.Web.Services.Protocols">
+        <constructor name="MimeFormatter" argnames="" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetInitializer(System.Type, System.Web.Services.Protocols.LogicalMethodInfo)" argnames="type, methodInfo" returntype="System.Object" />
+        <method name="GetInitializers(System.Type, System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="type, methodInfos" returntype="System.Object[]" />
+        <method name="CreateInstance(System.Type, System.Object)" argnames="type, initializer" returntype="System.Web.Services.Protocols.MimeFormatter" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeReturnReader" namespace="System.Web.Services.Protocols">
+        <constructor name="MimeReturnReader" argnames="" />
+        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AnyReturnReader" namespace="System.Web.Services.Protocols">
+        <constructor name="AnyReturnReader" argnames="" />
+        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeParameterReader" namespace="System.Web.Services.Protocols">
+        <constructor name="MimeParameterReader" argnames="" />
+        <method name="Read(System.Web.HttpRequest)" argnames="request" returntype="System.Object[]" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ValueCollectionParameterReader" namespace="System.Web.Services.Protocols">
+        <constructor name="ValueCollectionParameterReader" argnames="" />
+        <method name="Read(System.Web.HttpRequest)" argnames="request" inherited="System.Web.Services.Protocols.MimeParameterReader" returntype="System.Object[]" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Read(System.Collections.Specialized.NameValueCollection)" argnames="collection" returntype="System.Object[]" />
+        <method name="IsSupported(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Boolean" />
+        <method name="IsSupported(System.Reflection.ParameterInfo)" argnames="paramInfo" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HtmlFormParameterReader" namespace="System.Web.Services.Protocols">
+        <constructor name="HtmlFormParameterReader" argnames="" />
+        <method name="Read(System.Web.HttpRequest)" argnames="request" returntype="System.Object[]" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="o" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Read(System.Collections.Specialized.NameValueCollection)" argnames="collection" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeParameterWriter" namespace="System.Web.Services.Protocols">
+        <constructor name="MimeParameterWriter" argnames="" />
+        <property name="UsesWriteRequest" propertytype="System.Boolean" />
+        <property name="RequestEncoding" propertytype="System.Text.Encoding" />
+        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" returntype="System.Void" />
+        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" returntype="System.Void" />
+        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" returntype="System.String" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UrlEncodedParameterWriter" namespace="System.Web.Services.Protocols">
+        <constructor name="UrlEncodedParameterWriter" argnames="" />
+        <property name="RequestEncoding" propertytype="System.Text.Encoding" />
+        <property name="UsesWriteRequest" inherited="System.Web.Services.Protocols.MimeParameterWriter" propertytype="System.Boolean" />
+        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
+        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
+        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.String" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Encode(System.IO.TextWriter, System.Object[])" argnames="writer, values" returntype="System.Void" />
+        <method name="Encode(System.IO.TextWriter, System.String, System.Object)" argnames="writer, name, value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HtmlFormParameterWriter" namespace="System.Web.Services.Protocols">
+        <constructor name="HtmlFormParameterWriter" argnames="" />
+        <property name="UsesWriteRequest" propertytype="System.Boolean" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" propertytype="System.Text.Encoding" />
+        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" returntype="System.Void" />
+        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" returntype="System.Void" />
+        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.String" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Encode(System.IO.TextWriter, System.Object[])" argnames="writer, values" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
+        <method name="Encode(System.IO.TextWriter, System.String, System.Object)" argnames="writer, name, value" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebClientProtocol" namespace="System.Web.Services.Protocols">
+        <constructor name="WebClientProtocol" argnames="" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <property name="ConnectionGroupName" propertytype="System.String" />
+        <property name="PendingSyncRequest" propertytype="System.Net.WebRequest" />
+        <property name="PreAuthenticate" propertytype="System.Boolean" />
+        <property name="Url" propertytype="System.String" />
+        <property name="Uri" propertytype="System.Uri" />
+        <property name="RequestEncoding" propertytype="System.Text.Encoding" />
+        <property name="Timeout" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" returntype="System.Net.WebResponse" />
+        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" returntype="System.Net.WebResponse" />
+        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
+        <method name="Abort" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetFromCache(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="AddToCache(System.Type, System.Object)" argnames="type, value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="HttpWebClientProtocol" namespace="System.Web.Services.Protocols">
+        <constructor name="HttpWebClientProtocol" argnames="" />
+        <property name="AllowAutoRedirect" propertytype="System.Boolean" />
+        <property name="CookieContainer" propertytype="System.Net.CookieContainer" />
+        <property name="ClientCertificates" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
+        <property name="UserAgent" propertytype="System.String" />
+        <property name="Proxy" propertytype="System.Net.IWebProxy" />
+        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
+        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
+        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
+        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" returntype="System.Net.WebResponse" />
+        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" returntype="System.Net.WebResponse" />
+        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
+        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="HttpSimpleClientProtocol" namespace="System.Web.Services.Protocols">
+        <constructor name="HttpSimpleClientProtocol" argnames="" />
+        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
+        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
+        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
+        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
+        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
+        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
+        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
+        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
+        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebRequest(System.Uri)" argnames="uri" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebRequest" />
+        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Invoke(System.String, System.String, System.Object[])" argnames="methodName, requestUrl, parameters" returntype="System.Object" />
+        <method name="BeginInvoke(System.String, System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, requestUrl, parameters, callback, asyncState" returntype="System.IAsyncResult" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="HttpGetClientProtocol" namespace="System.Web.Services.Protocols">
+        <constructor name="HttpGetClientProtocol" argnames="" />
+        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
+        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
+        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
+        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
+        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
+        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
+        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
+        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
+        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
+        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Invoke(System.String, System.String, System.Object[])" argnames="methodName, requestUrl, parameters" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
+        <method name="BeginInvoke(System.String, System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, requestUrl, parameters, callback, asyncState" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.IAsyncResult" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="HttpMethodAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="HttpMethodAttribute" argnames="" />
+        <constructor name="HttpMethodAttribute(System.Type, System.Type)" argnames="returnFormatter, parameterFormatter" />
+        <property name="ReturnFormatter" propertytype="System.Type" />
+        <property name="ParameterFormatter" propertytype="System.Type" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpPostClientProtocol" namespace="System.Web.Services.Protocols">
+        <constructor name="HttpPostClientProtocol" argnames="" />
+        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
+        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
+        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
+        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
+        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
+        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
+        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
+        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
+        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
+        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Invoke(System.String, System.String, System.Object[])" argnames="methodName, requestUrl, parameters" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
+        <method name="BeginInvoke(System.String, System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, requestUrl, parameters, callback, asyncState" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.IAsyncResult" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Web.Services.Protocols.HttpSimpleClientProtocol" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="NopReturnReader" namespace="System.Web.Services.Protocols">
+        <constructor name="NopReturnReader" argnames="" />
+        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapMessage" namespace="System.Web.Services.Protocols">
+        <property name="OneWay" propertytype="System.Boolean" />
+        <property name="Exception" propertytype="System.Web.Services.Protocols.SoapException" />
+        <property name="MethodInfo" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
+        <property name="Headers" propertytype="System.Web.Services.Protocols.SoapHeaderCollection" />
+        <property name="Stream" propertytype="System.IO.Stream" />
+        <property name="ContentType" propertytype="System.String" />
+        <property name="Stage" propertytype="System.Web.Services.Protocols.SoapMessageStage" />
+        <property name="Url" propertytype="System.String" />
+        <property name="Action" propertytype="System.String" />
+        <method name="EnsureInStage" argnames="" returntype="System.Void" />
+        <method name="EnsureOutStage" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetInParameterValue(System.Int32)" argnames="index" returntype="System.Object" />
+        <method name="GetOutParameterValue(System.Int32)" argnames="index" returntype="System.Object" />
+        <method name="GetReturnValue" argnames="" returntype="System.Object" />
+        <method name="EnsureStage(System.Web.Services.Protocols.SoapMessageStage)" argnames="stage" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapClientMessage" namespace="System.Web.Services.Protocols">
+        <property name="OneWay" propertytype="System.Boolean" />
+        <property name="Client" propertytype="System.Web.Services.Protocols.SoapHttpClientProtocol" />
+        <property name="MethodInfo" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
+        <property name="Url" propertytype="System.String" />
+        <property name="Action" propertytype="System.String" />
+        <property name="Method" propertytype="System.Web.Services.Protocols.SoapClientMethod" />
+        <property name="Exception" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapException" />
+        <property name="Headers" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapHeaderCollection" />
+        <property name="Stream" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.IO.Stream" />
+        <property name="ContentType" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.String" />
+        <property name="Stage" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapMessageStage" />
+        <method name="EnsureInStage" argnames="" returntype="System.Void" />
+        <method name="EnsureOutStage" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetInParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
+        <method name="GetOutParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
+        <method name="GetReturnValue" argnames="" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
+        <method name="EnsureStage(System.Web.Services.Protocols.SoapMessageStage)" argnames="stage" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapDocumentMethodAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapDocumentMethodAttribute" argnames="" />
+        <constructor name="SoapDocumentMethodAttribute(System.String)" argnames="action" />
+        <property name="Action" propertytype="System.String" />
+        <property name="OneWay" propertytype="System.Boolean" />
+        <property name="RequestNamespace" propertytype="System.String" />
+        <property name="ResponseNamespace" propertytype="System.String" />
+        <property name="RequestElementName" propertytype="System.String" />
+        <property name="ResponseElementName" propertytype="System.String" />
+        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
+        <property name="ParameterStyle" propertytype="System.Web.Services.Protocols.SoapParameterStyle" />
+        <property name="Binding" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapDocumentServiceAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapDocumentServiceAttribute" argnames="" />
+        <constructor name="SoapDocumentServiceAttribute(System.Web.Services.Description.SoapBindingUse)" argnames="use" />
+        <constructor name="SoapDocumentServiceAttribute(System.Web.Services.Description.SoapBindingUse, System.Web.Services.Protocols.SoapParameterStyle)" argnames="use, paramStyle" />
+        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
+        <property name="ParameterStyle" propertytype="System.Web.Services.Protocols.SoapParameterStyle" />
+        <property name="RoutingStyle" propertytype="System.Web.Services.Protocols.SoapServiceRoutingStyle" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapException" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String)" argnames="message, code, actor" />
+        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String, System.Exception)" argnames="message, code, actor, innerException" />
+        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName)" argnames="message, code" />
+        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.Exception)" argnames="message, code, innerException" />
+        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String, System.Xml.XmlNode)" argnames="message, code, actor, detail" />
+        <constructor name="SoapException(System.String, System.Xml.XmlQualifiedName, System.String, System.Xml.XmlNode, System.Exception)" argnames="message, code, actor, detail, innerException" />
+        <field name="ServerFaultCode" />
+        <field name="ClientFaultCode" />
+        <field name="VersionMismatchFaultCode" />
+        <field name="MustUnderstandFaultCode" />
+        <field name="DetailElementName" />
+        <property name="Actor" propertytype="System.String" />
+        <property name="Code" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Detail" propertytype="System.Xml.XmlNode" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapExtension" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapExtension" argnames="" />
+        <method name="ChainStream(System.IO.Stream)" argnames="stream" returntype="System.IO.Stream" />
+        <method name="ProcessMessage(System.Web.Services.Protocols.SoapMessage)" argnames="message" returntype="System.Void" />
+        <method name="Initialize(System.Object)" argnames="initializer" returntype="System.Void" />
+        <method name="GetInitializer(System.Type)" argnames="serviceType" returntype="System.Object" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo, System.Web.Services.Protocols.SoapExtensionAttribute)" argnames="methodInfo, attribute" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapExtensionAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapExtensionAttribute" argnames="" />
+        <property name="ExtensionType" propertytype="System.Type" />
+        <property name="Priority" propertytype="System.Int32" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapHeaderAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapHeaderAttribute(System.String)" argnames="memberName" />
+        <property name="MemberName" propertytype="System.String" />
+        <property name="Direction" propertytype="System.Web.Services.Protocols.SoapHeaderDirection" />
+        <property name="Required" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapHeaderException" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName, System.String)" argnames="message, code, actor" />
+        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName, System.String, System.Exception)" argnames="message, code, actor, innerException" />
+        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName)" argnames="message, code" />
+        <constructor name="SoapHeaderException(System.String, System.Xml.XmlQualifiedName, System.Exception)" argnames="message, code, innerException" />
+        <property name="Actor" inherited="System.Web.Services.Protocols.SoapException" propertytype="System.String" />
+        <property name="Code" inherited="System.Web.Services.Protocols.SoapException" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Detail" inherited="System.Web.Services.Protocols.SoapException" propertytype="System.Xml.XmlNode" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapRpcMethodAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapRpcMethodAttribute" argnames="" />
+        <constructor name="SoapRpcMethodAttribute(System.String)" argnames="action" />
+        <property name="Action" propertytype="System.String" />
+        <property name="OneWay" propertytype="System.Boolean" />
+        <property name="RequestNamespace" propertytype="System.String" />
+        <property name="ResponseNamespace" propertytype="System.String" />
+        <property name="RequestElementName" propertytype="System.String" />
+        <property name="ResponseElementName" propertytype="System.String" />
+        <property name="Binding" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapRpcServiceAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapRpcServiceAttribute" argnames="" />
+        <property name="RoutingStyle" propertytype="System.Web.Services.Protocols.SoapServiceRoutingStyle" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapHeader" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapHeader" argnames="" />
+        <property name="EncodedMustUnderstand" propertytype="System.String" />
+        <property name="MustUnderstand" propertytype="System.Boolean" />
+        <property name="InternalMustUnderstand" propertytype="System.Boolean" />
+        <property name="Actor" propertytype="System.String" />
+        <property name="InternalActor" propertytype="System.String" />
+        <property name="DidUnderstand" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapUnknownHeader" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapUnknownHeader" argnames="" />
+        <property name="Element" propertytype="System.Xml.XmlElement" />
+        <property name="InternalMustUnderstand" propertytype="System.Boolean" />
+        <property name="InternalActor" propertytype="System.String" />
+        <property name="EncodedMustUnderstand" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.String" />
+        <property name="MustUnderstand" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.Boolean" />
+        <property name="Actor" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.String" />
+        <property name="DidUnderstand" inherited="System.Web.Services.Protocols.SoapHeader" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UrlParameterReader" namespace="System.Web.Services.Protocols">
+        <constructor name="UrlParameterReader" argnames="" />
+        <method name="Read(System.Web.HttpRequest)" argnames="request" returntype="System.Object[]" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="o" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Read(System.Collections.Specialized.NameValueCollection)" argnames="collection" inherited="System.Web.Services.Protocols.ValueCollectionParameterReader" returntype="System.Object[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UrlParameterWriter" namespace="System.Web.Services.Protocols">
+        <constructor name="UrlParameterWriter" argnames="" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" propertytype="System.Text.Encoding" />
+        <property name="UsesWriteRequest" inherited="System.Web.Services.Protocols.MimeParameterWriter" propertytype="System.Boolean" />
+        <method name="WriteRequest(System.IO.Stream, System.Object[])" argnames="requestStream, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
+        <method name="InitializeRequest(System.Net.WebRequest, System.Object[])" argnames="request, values" inherited="System.Web.Services.Protocols.MimeParameterWriter" returntype="System.Void" />
+        <method name="GetRequestUrl(System.String, System.Object[])" argnames="url, parameters" returntype="System.String" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="initializer" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Encode(System.IO.TextWriter, System.Object[])" argnames="writer, values" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
+        <method name="Encode(System.IO.TextWriter, System.String, System.Object)" argnames="writer, name, value" inherited="System.Web.Services.Protocols.UrlEncodedParameterWriter" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlReturnReader" namespace="System.Web.Services.Protocols">
+        <constructor name="XmlReturnReader" argnames="" />
+        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebClientAsyncResult" namespace="System.Web.Services.Protocols">
+        <property name="AsyncState" propertytype="System.Object" />
+        <property name="AsyncWaitHandle" propertytype="System.Threading.WaitHandle" />
+        <property name="CompletedSynchronously" propertytype="System.Boolean" />
+        <property name="IsCompleted" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Abort" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MatchAttribute" namespace="System.Web.Services.Protocols">
+        <constructor name="MatchAttribute(System.String)" argnames="pattern" />
+        <property name="Pattern" propertytype="System.String" />
+        <property name="Group" propertytype="System.Int32" />
+        <property name="Capture" propertytype="System.Int32" />
+        <property name="IgnoreCase" propertytype="System.Boolean" />
+        <property name="MaxRepeats" propertytype="System.Int32" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PatternMatcher" namespace="System.Web.Services.Protocols">
+        <constructor name="PatternMatcher(System.Type)" argnames="type" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Match(System.String)" argnames="text" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapHeaderCollection" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapHeaderCollection" argnames="" />
+        <property name="Item" propertytype="System.Web.Services.Protocols.SoapHeader" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Protocols.SoapHeader)" argnames="index, header" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Protocols.SoapHeader)" argnames="header" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Protocols.SoapHeader[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapServerMessage" namespace="System.Web.Services.Protocols">
+        <property name="OneWay" propertytype="System.Boolean" />
+        <property name="Url" propertytype="System.String" />
+        <property name="Action" propertytype="System.String" />
+        <property name="Server" propertytype="System.Object" />
+        <property name="MethodInfo" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
+        <property name="Exception" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapException" />
+        <property name="Headers" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapHeaderCollection" />
+        <property name="Stream" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.IO.Stream" />
+        <property name="ContentType" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.String" />
+        <property name="Stage" inherited="System.Web.Services.Protocols.SoapMessage" propertytype="System.Web.Services.Protocols.SoapMessageStage" />
+        <method name="EnsureInStage" argnames="" returntype="System.Void" />
+        <method name="EnsureOutStage" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetInParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
+        <method name="GetOutParameterValue(System.Int32)" argnames="index" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
+        <method name="GetReturnValue" argnames="" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Object" />
+        <method name="EnsureStage(System.Web.Services.Protocols.SoapMessageStage)" argnames="stage" inherited="System.Web.Services.Protocols.SoapMessage" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TextReturnReader" namespace="System.Web.Services.Protocols">
+        <constructor name="TextReturnReader" argnames="" />
+        <method name="Read(System.Net.WebResponse, System.IO.Stream)" argnames="response, responseStream" returntype="System.Object" />
+        <method name="GetInitializers(System.Web.Services.Protocols.LogicalMethodInfo[])" argnames="methodInfos" inherited="System.Web.Services.Protocols.MimeFormatter" returntype="System.Object[]" />
+        <method name="Initialize(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="GetInitializer(System.Web.Services.Protocols.LogicalMethodInfo)" argnames="methodInfo" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebServiceHandlerFactory" namespace="System.Web.Services.Protocols">
+        <constructor name="WebServiceHandlerFactory" argnames="" />
+        <method name="ReleaseHandler(System.Web.IHttpHandler)" argnames="handler" returntype="System.Void" />
+        <method name="GetHandler(System.Web.HttpContext, System.String, System.String, System.String)" argnames="context, verb, url, filePath" returntype="System.Web.IHttpHandler" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapHttpClientProtocol" namespace="System.Web.Services.Protocols">
+        <constructor name="SoapHttpClientProtocol" argnames="" />
+        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
+        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
+        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
+        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
+        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
+        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
+        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
+        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
+        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebRequest(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
+        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Discover" argnames="" returntype="System.Void" />
+        <method name="Invoke(System.String, System.Object[])" argnames="methodName, parameters" returntype="System.Object[]" />
+        <method name="BeginInvoke(System.String, System.Object[], System.AsyncCallback, System.Object)" argnames="methodName, parameters, callback, asyncState" returntype="System.IAsyncResult" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" returntype="System.Object[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="LogicalMethodInfo" namespace="System.Web.Services.Protocols">
+        <constructor name="LogicalMethodInfo(System.Reflection.MethodInfo)" argnames="methodInfo" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="Name" propertytype="System.String" />
+        <property name="AsyncResultParameter" propertytype="System.Reflection.ParameterInfo" />
+        <property name="AsyncCallbackParameter" propertytype="System.Reflection.ParameterInfo" />
+        <property name="AsyncStateParameter" propertytype="System.Reflection.ParameterInfo" />
+        <property name="ReturnType" propertytype="System.Type" />
+        <property name="IsVoid" propertytype="System.Boolean" />
+        <property name="IsAsync" propertytype="System.Boolean" />
+        <property name="InParameters" propertytype="System.Reflection.ParameterInfo[]" />
+        <property name="OutParameters" propertytype="System.Reflection.ParameterInfo[]" />
+        <property name="Parameters" propertytype="System.Reflection.ParameterInfo[]" />
+        <property name="CustomAttributeProvider" propertytype="System.Reflection.ICustomAttributeProvider" />
+        <property name="ReturnTypeCustomAttributeProvider" propertytype="System.Reflection.ICustomAttributeProvider" />
+        <property name="MethodInfo" propertytype="System.Reflection.MethodInfo" />
+        <property name="BeginMethodInfo" propertytype="System.Reflection.MethodInfo" />
+        <property name="EndMethodInfo" propertytype="System.Reflection.MethodInfo" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Invoke(System.Object, System.Object[])" argnames="target, values" returntype="System.Object[]" />
+        <method name="BeginInvoke(System.Object, System.Object[], System.AsyncCallback, System.Object)" argnames="target, values, callback, asyncState" returntype="System.IAsyncResult" />
+        <method name="EndInvoke(System.Object, System.IAsyncResult)" argnames="target, asyncResult" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type)" argnames="type" returntype="System.Object[]" />
+        <method name="GetCustomAttribute(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="IsBeginMethod(System.Reflection.MethodInfo)" argnames="methodInfo" returntype="System.Boolean" />
+        <method name="IsEndMethod(System.Reflection.MethodInfo)" argnames="methodInfo" returntype="System.Boolean" />
+        <method name="Create(System.Reflection.MethodInfo[])" argnames="methodInfos" returntype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
+        <method name="Create(System.Reflection.MethodInfo[], System.Web.Services.Protocols.LogicalMethodTypes)" argnames="methodInfos, types" returntype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="SoapHeaderDirection" namespace="System.Web.Services.Protocols">
+        <field name="In" />
+        <field name="Out" />
+        <field name="InOut" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SoapMessageStage" namespace="System.Web.Services.Protocols">
+        <field name="BeforeSerialize" />
+        <field name="AfterSerialize" />
+        <field name="BeforeDeserialize" />
+        <field name="AfterDeserialize" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SoapParameterStyle" namespace="System.Web.Services.Protocols">
+        <field name="Default" />
+        <field name="Bare" />
+        <field name="Wrapped" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SoapServiceRoutingStyle" namespace="System.Web.Services.Protocols">
+        <field name="SoapAction" />
+        <field name="RequestElement" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LogicalMethodTypes" namespace="System.Web.Services.Protocols">
+        <field name="Sync" />
+        <field name="Async" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="DiscoveryReference" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryReference" argnames="" />
+        <property name="ClientProtocol" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
+        <property name="DefaultFilename" propertytype="System.String" />
+        <property name="Url" propertytype="System.String" />
+        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
+        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FilenameFromUrl(System.String)" argnames="url" returntype="System.String" />
+        <method name="Resolve" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryReferenceCollection" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryReferenceCollection" argnames="" />
+        <property name="Item" propertytype="System.Web.Services.Discovery.DiscoveryReference" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DynamicDiscoveryDocument" namespace="System.Web.Services.Discovery">
+        <constructor name="DynamicDiscoveryDocument" argnames="" />
+        <field name="Namespace" />
+        <property name="ExcludePaths" propertytype="System.Web.Services.Discovery.ExcludePathInfo[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="Load(System.IO.Stream)" argnames="stream" returntype="System.Web.Services.Discovery.DynamicDiscoveryDocument" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ExcludePathInfo" namespace="System.Web.Services.Discovery">
+        <constructor name="ExcludePathInfo" argnames="" />
+        <constructor name="ExcludePathInfo(System.String)" argnames="path" />
+        <property name="Path" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SchemaReference" namespace="System.Web.Services.Discovery">
+        <constructor name="SchemaReference" argnames="" />
+        <constructor name="SchemaReference(System.String)" argnames="url" />
+        <field name="Namespace" />
+        <property name="Ref" propertytype="System.String" />
+        <property name="TargetNamespace" propertytype="System.String" />
+        <property name="Url" propertytype="System.String" />
+        <property name="DefaultFilename" propertytype="System.String" />
+        <property name="Schema" propertytype="System.Xml.Schema.XmlSchema" />
+        <property name="ClientProtocol" inherited="System.Web.Services.Discovery.DiscoveryReference" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
+        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
+        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Resolve" argnames="" inherited="System.Web.Services.Discovery.DiscoveryReference" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapBinding" namespace="System.Web.Services.Discovery">
+        <constructor name="SoapBinding" argnames="" />
+        <field name="Namespace" />
+        <property name="Address" propertytype="System.String" />
+        <property name="Binding" propertytype="System.Xml.XmlQualifiedName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoverySearchPattern" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoverySearchPattern" argnames="" />
+        <property name="Pattern" propertytype="System.String" />
+        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ContractSearchPattern" namespace="System.Web.Services.Discovery">
+        <constructor name="ContractSearchPattern" argnames="" />
+        <property name="Pattern" propertytype="System.String" />
+        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryClientDocumentCollection" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryClientDocumentCollection" argnames="" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
+        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
+        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.String, System.Object)" argnames="url, value" returntype="System.Void" />
+        <method name="Contains(System.String)" argnames="url" returntype="System.Boolean" />
+        <method name="Remove(System.String)" argnames="url" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryClientProtocol" namespace="System.Web.Services.Discovery">
+        <class name="DiscoveryClientResultsFile" namespace="System.Web.Services.Discovery">
+            <constructor name="DiscoveryClientResultsFile" argnames="" />
+            <property name="Results" propertytype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="DiscoveryClientResultsFile" argnames="" />
+        <property name="AdditionalInformation" propertytype="System.Collections.IList" />
+        <property name="Documents" propertytype="System.Web.Services.Discovery.DiscoveryClientDocumentCollection" />
+        <property name="Errors" propertytype="System.Web.Services.Discovery.DiscoveryExceptionDictionary" />
+        <property name="References" propertytype="System.Web.Services.Discovery.DiscoveryClientReferenceCollection" />
+        <property name="AllowAutoRedirect" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Boolean" />
+        <property name="CookieContainer" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.CookieContainer" />
+        <property name="ClientCertificates" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
+        <property name="UserAgent" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.String" />
+        <property name="Proxy" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" propertytype="System.Net.IWebProxy" />
+        <property name="Credentials" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Net.ICredentials" />
+        <property name="ConnectionGroupName" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="PreAuthenticate" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Boolean" />
+        <property name="Url" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.String" />
+        <property name="RequestEncoding" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Text.Encoding" />
+        <property name="Timeout" inherited="System.Web.Services.Protocols.WebClientProtocol" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetWebResponse(System.Net.WebRequest, System.IAsyncResult)" argnames="request, result" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebResponse(System.Net.WebRequest)" argnames="request" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebResponse" />
+        <method name="GetWebRequest(System.Uri)" argnames="uri" inherited="System.Web.Services.Protocols.HttpWebClientProtocol" returntype="System.Net.WebRequest" />
+        <method name="Abort" argnames="" inherited="System.Web.Services.Protocols.WebClientProtocol" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Discover(System.String)" argnames="url" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
+        <method name="DiscoverAny(System.String)" argnames="url" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
+        <method name="Download(System.String&amp;)" argnames="url" returntype="System.IO.Stream" />
+        <method name="Download(System.String&amp;, System.String&amp;)" argnames="url, contentType" returntype="System.IO.Stream" />
+        <method name="ReadAll(System.String)" argnames="topLevelFilename" returntype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
+        <method name="ResolveAll" argnames="" returntype="System.Void" />
+        <method name="ResolveOneLevel" argnames="" returntype="System.Void" />
+        <method name="WriteAll(System.String, System.String)" argnames="directory, topLevelFilename" returntype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DiscoveryClientResultsFile" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryClientResultsFile" argnames="" />
+        <property name="Results" propertytype="System.Web.Services.Discovery.DiscoveryClientResultCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryClientResultCollection" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryClientResultCollection" argnames="" />
+        <property name="Item" propertytype="System.Web.Services.Discovery.DiscoveryClientResult" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Discovery.DiscoveryClientResult)" argnames="value" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Discovery.DiscoveryClientResult)" argnames="value" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Discovery.DiscoveryClientResult)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryClientResult" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryClientResult" argnames="" />
+        <constructor name="DiscoveryClientResult(System.Type, System.String, System.String)" argnames="referenceType, url, filename" />
+        <property name="ReferenceTypeName" propertytype="System.String" />
+        <property name="Url" propertytype="System.String" />
+        <property name="Filename" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryClientReferenceCollection" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryClientReferenceCollection" argnames="" />
+        <property name="Item" propertytype="System.Web.Services.Discovery.DiscoveryReference" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
+        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
+        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Discovery.DiscoveryReference)" argnames="value" returntype="System.Void" />
+        <method name="Add(System.String, System.Web.Services.Discovery.DiscoveryReference)" argnames="url, value" returntype="System.Void" />
+        <method name="Contains(System.String)" argnames="url" returntype="System.Boolean" />
+        <method name="Remove(System.String)" argnames="url" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryDocumentLinksPattern" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryDocumentLinksPattern" argnames="" />
+        <property name="Pattern" propertytype="System.String" />
+        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryDocumentSearchPattern" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryDocumentSearchPattern" argnames="" />
+        <property name="Pattern" propertytype="System.String" />
+        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryExceptionDictionary" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryExceptionDictionary" argnames="" />
+        <property name="Item" propertytype="System.Exception" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
+        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
+        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.String, System.Exception)" argnames="url, value" returntype="System.Void" />
+        <method name="Contains(System.String)" argnames="url" returntype="System.Boolean" />
+        <method name="Remove(System.String)" argnames="url" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSearchPattern" namespace="System.Web.Services.Discovery">
+        <constructor name="XmlSchemaSearchPattern" argnames="" />
+        <property name="Pattern" propertytype="System.String" />
+        <method name="GetDiscoveryReference(System.String)" argnames="filename" returntype="System.Web.Services.Discovery.DiscoveryReference" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ContractReference" namespace="System.Web.Services.Discovery">
+        <constructor name="ContractReference" argnames="" />
+        <constructor name="ContractReference(System.String)" argnames="href" />
+        <constructor name="ContractReference(System.String, System.String)" argnames="href, docRef" />
+        <field name="Namespace" />
+        <property name="Ref" propertytype="System.String" />
+        <property name="DocRef" propertytype="System.String" />
+        <property name="Url" propertytype="System.String" />
+        <property name="Contract" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="DefaultFilename" propertytype="System.String" />
+        <property name="ClientProtocol" inherited="System.Web.Services.Discovery.DiscoveryReference" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
+        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
+        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Resolve" argnames="" inherited="System.Web.Services.Discovery.DiscoveryReference" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryDocument" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryDocument" argnames="" />
+        <field name="Namespace" />
+        <property name="References" propertytype="System.Collections.IList" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Read(System.IO.Stream)" argnames="stream" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
+        <method name="Read(System.IO.TextReader)" argnames="reader" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
+        <method name="Read(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Web.Services.Discovery.DiscoveryDocument" />
+        <method name="CanRead(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Boolean" />
+        <method name="Write(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
+        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryDocumentReference" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryDocumentReference" argnames="" />
+        <constructor name="DiscoveryDocumentReference(System.String)" argnames="href" />
+        <property name="Ref" propertytype="System.String" />
+        <property name="DefaultFilename" propertytype="System.String" />
+        <property name="Document" propertytype="System.Web.Services.Discovery.DiscoveryDocument" />
+        <property name="Url" propertytype="System.String" />
+        <property name="ClientProtocol" inherited="System.Web.Services.Discovery.DiscoveryReference" propertytype="System.Web.Services.Discovery.DiscoveryClientProtocol" />
+        <method name="ReadDocument(System.IO.Stream)" argnames="stream" returntype="System.Object" />
+        <method name="WriteDocument(System.Object, System.IO.Stream)" argnames="document, stream" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ResolveAll" argnames="" returntype="System.Void" />
+        <method name="Resolve" argnames="" inherited="System.Web.Services.Discovery.DiscoveryReference" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiscoveryRequestHandler" namespace="System.Web.Services.Discovery">
+        <constructor name="DiscoveryRequestHandler" argnames="" />
+        <property name="IsReusable" propertytype="System.Boolean" />
+        <method name="ProcessRequest(System.Web.HttpContext)" argnames="context" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceDescriptionFormatExtension" namespace="System.Web.Services.Description">
+        <constructor name="ServiceDescriptionFormatExtension" argnames="" />
+        <property name="Parent" propertytype="System.Object" />
+        <property name="Required" propertytype="System.Boolean" />
+        <property name="Handled" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpAddressBinding" namespace="System.Web.Services.Description">
+        <constructor name="HttpAddressBinding" argnames="" />
+        <property name="Location" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpBinding" namespace="System.Web.Services.Description">
+        <constructor name="HttpBinding" argnames="" />
+        <field name="Namespace" />
+        <property name="Verb" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpOperationBinding" namespace="System.Web.Services.Description">
+        <constructor name="HttpOperationBinding" argnames="" />
+        <property name="Location" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpUrlEncodedBinding" namespace="System.Web.Services.Description">
+        <constructor name="HttpUrlEncodedBinding" argnames="" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpUrlReplacementBinding" namespace="System.Web.Services.Description">
+        <constructor name="HttpUrlReplacementBinding" argnames="" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProtocolImporter" namespace="System.Web.Services.Description">
+        <constructor name="ProtocolImporter" argnames="" />
+        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
+        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="AbstractSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="ConcreteSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="CodeNamespace" propertytype="System.CodeDom.CodeNamespace" />
+        <property name="CodeTypeDeclaration" propertytype="System.CodeDom.CodeTypeDeclaration" />
+        <property name="Style" propertytype="System.Web.Services.Description.ServiceDescriptionImportStyle" />
+        <property name="Warnings" propertytype="System.Web.Services.Description.ServiceDescriptionImportWarnings" />
+        <property name="ClassNames" propertytype="System.Xml.Serialization.CodeIdentifiers" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="ClassName" propertytype="System.String" />
+        <property name="Port" propertytype="System.Web.Services.Description.Port" />
+        <property name="PortType" propertytype="System.Web.Services.Description.PortType" />
+        <property name="Binding" propertytype="System.Web.Services.Description.Binding" />
+        <property name="Service" propertytype="System.Web.Services.Description.Service" />
+        <property name="ServiceImporter" propertytype="System.Web.Services.Description.ServiceDescriptionImporter" />
+        <property name="Operation" propertytype="System.Web.Services.Description.Operation" />
+        <property name="OperationBinding" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="InputMessage" propertytype="System.Web.Services.Description.Message" />
+        <property name="OutputMessage" propertytype="System.Web.Services.Description.Message" />
+        <property name="ProtocolName" propertytype="System.String" />
+        <method name="EndNamespace" argnames="" returntype="System.Void" />
+        <method name="EndClass" argnames="" returntype="System.Void" />
+        <method name="GenerateMethod" argnames="" returntype="System.CodeDom.CodeMemberMethod" />
+        <method name="BeginClass" argnames="" returntype="System.CodeDom.CodeTypeDeclaration" />
+        <method name="IsOperationFlowSupported(System.Web.Services.Description.OperationFlow)" argnames="flow" returntype="System.Boolean" />
+        <method name="IsBindingSupported" argnames="" returntype="System.Boolean" />
+        <method name="BeginNamespace" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddExtensionWarningComments(System.CodeDom.CodeCommentStatementCollection, System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection)" argnames="comments, extensions" returntype="System.Void" />
+        <method name="UnsupportedBindingWarning(System.String)" argnames="text" returntype="System.Void" />
+        <method name="UnsupportedOperationWarning(System.String)" argnames="text" returntype="System.Void" />
+        <method name="UnsupportedOperationBindingWarning(System.String)" argnames="text" returntype="System.Void" />
+        <method name="OperationSyntaxException(System.String)" argnames="text" returntype="System.Exception" />
+        <method name="OperationBindingSyntaxException(System.String)" argnames="text" returntype="System.Exception" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProtocolReflector" namespace="System.Web.Services.Description">
+        <constructor name="ProtocolReflector" argnames="" />
+        <property name="Service" propertytype="System.Web.Services.Description.Service" />
+        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
+        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="SchemaExporter" propertytype="System.Xml.Serialization.XmlSchemaExporter" />
+        <property name="ReflectionImporter" propertytype="System.Xml.Serialization.XmlReflectionImporter" />
+        <property name="DefaultNamespace" propertytype="System.String" />
+        <property name="ServiceUrl" propertytype="System.String" />
+        <property name="ServiceType" propertytype="System.Type" />
+        <property name="Method" propertytype="System.Web.Services.Protocols.LogicalMethodInfo" />
+        <property name="Binding" propertytype="System.Web.Services.Description.Binding" />
+        <property name="PortType" propertytype="System.Web.Services.Description.PortType" />
+        <property name="Port" propertytype="System.Web.Services.Description.Port" />
+        <property name="Operation" propertytype="System.Web.Services.Description.Operation" />
+        <property name="OperationBinding" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="MethodAttribute" propertytype="System.Web.Services.WebMethodAttribute" />
+        <property name="Methods" propertytype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
+        <property name="InputMessage" propertytype="System.Web.Services.Description.Message" />
+        <property name="OutputMessage" propertytype="System.Web.Services.Description.Message" />
+        <property name="HeaderMessages" propertytype="System.Web.Services.Description.MessageCollection" />
+        <property name="ProtocolName" propertytype="System.String" />
+        <method name="EndClass" argnames="" returntype="System.Void" />
+        <method name="ReflectMethodBinding" argnames="" returntype="System.String" />
+        <method name="ReflectMethod" argnames="" returntype="System.Boolean" />
+        <method name="BeginClass" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetServiceDescription(System.String)" argnames="ns" returntype="System.Web.Services.Description.ServiceDescription" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeContentBinding" namespace="System.Web.Services.Description">
+        <constructor name="MimeContentBinding" argnames="" />
+        <field name="Namespace" />
+        <property name="Part" propertytype="System.String" />
+        <property name="Type" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimePart" namespace="System.Web.Services.Description">
+        <constructor name="MimePart" argnames="" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeMultipartRelatedBinding" namespace="System.Web.Services.Description">
+        <constructor name="MimeMultipartRelatedBinding" argnames="" />
+        <property name="Parts" propertytype="System.Web.Services.Description.MimePartCollection" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeXmlBinding" namespace="System.Web.Services.Description">
+        <constructor name="MimeXmlBinding" argnames="" />
+        <property name="Part" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimePartCollection" namespace="System.Web.Services.Description">
+        <constructor name="MimePartCollection" argnames="" />
+        <property name="Item" propertytype="System.Web.Services.Description.MimePart" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.MimePart)" argnames="index, mimePart" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.MimePart)" argnames="mimePart" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.MimePart[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeTextBinding" namespace="System.Web.Services.Description">
+        <constructor name="MimeTextBinding" argnames="" />
+        <field name="Namespace" />
+        <property name="Matches" propertytype="System.Web.Services.Description.MimeTextMatchCollection" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeTextMatch" namespace="System.Web.Services.Description">
+        <constructor name="MimeTextMatch" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Type" propertytype="System.String" />
+        <property name="Group" propertytype="System.Int32" />
+        <property name="Capture" propertytype="System.Int32" />
+        <property name="Repeats" propertytype="System.Int32" />
+        <property name="RepeatsString" propertytype="System.String" />
+        <property name="Pattern" propertytype="System.String" />
+        <property name="IgnoreCase" propertytype="System.Boolean" />
+        <property name="Matches" propertytype="System.Web.Services.Description.MimeTextMatchCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MimeTextMatchCollection" namespace="System.Web.Services.Description">
+        <constructor name="MimeTextMatchCollection" argnames="" />
+        <property name="Item" propertytype="System.Web.Services.Description.MimeTextMatch" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.MimeTextMatch)" argnames="index, match" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.MimeTextMatch)" argnames="match" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.MimeTextMatch[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceDescriptionBaseCollection" namespace="System.Web.Services.Description">
+        <property name="Table" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClear" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceDescriptionCollection" namespace="System.Web.Services.Description">
+        <constructor name="ServiceDescriptionCollection" argnames="" />
+        <property name="Item" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Item" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.ServiceDescription)" argnames="index, serviceDescription" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.ServiceDescription)" argnames="serviceDescription" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.ServiceDescription[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetMessage(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.Message" />
+        <method name="GetPortType(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.PortType" />
+        <method name="GetService(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.Service" />
+        <method name="GetBinding(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Web.Services.Description.Binding" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapBinding" namespace="System.Web.Services.Description">
+        <constructor name="SoapBinding" argnames="" />
+        <field name="Namespace" />
+        <field name="HttpTransport" />
+        <property name="Transport" propertytype="System.String" />
+        <property name="Style" propertytype="System.Web.Services.Description.SoapBindingStyle" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapOperationBinding" namespace="System.Web.Services.Description">
+        <constructor name="SoapOperationBinding" argnames="" />
+        <property name="SoapAction" propertytype="System.String" />
+        <property name="Style" propertytype="System.Web.Services.Description.SoapBindingStyle" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapBodyBinding" namespace="System.Web.Services.Description">
+        <constructor name="SoapBodyBinding" argnames="" />
+        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Encoding" propertytype="System.String" />
+        <property name="PartsString" propertytype="System.String" />
+        <property name="Parts" propertytype="System.String[]" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapFaultBinding" namespace="System.Web.Services.Description">
+        <constructor name="SoapFaultBinding" argnames="" />
+        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Encoding" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapHeaderBinding" namespace="System.Web.Services.Description">
+        <constructor name="SoapHeaderBinding" argnames="" />
+        <property name="MapToProperty" propertytype="System.Boolean" />
+        <property name="Message" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Part" propertytype="System.String" />
+        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
+        <property name="Encoding" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapHeaderFaultBinding" namespace="System.Web.Services.Description">
+        <constructor name="SoapHeaderFaultBinding" argnames="" />
+        <property name="Message" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Part" propertytype="System.String" />
+        <property name="Use" propertytype="System.Web.Services.Description.SoapBindingUse" />
+        <property name="Encoding" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapAddressBinding" namespace="System.Web.Services.Description">
+        <constructor name="SoapAddressBinding" argnames="" />
+        <property name="Location" propertytype="System.String" />
+        <property name="Parent" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Object" />
+        <property name="Required" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <property name="Handled" inherited="System.Web.Services.Description.ServiceDescriptionFormatExtension" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapTransportImporter" namespace="System.Web.Services.Description">
+        <constructor name="SoapTransportImporter" argnames="" />
+        <property name="ImportContext" propertytype="System.Web.Services.Description.SoapProtocolImporter" />
+        <method name="ImportClass" argnames="" returntype="System.Void" />
+        <method name="IsSupportedTransport(System.String)" argnames="transport" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceDescriptionImporter" namespace="System.Web.Services.Description">
+        <constructor name="ServiceDescriptionImporter" argnames="" />
+        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
+        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="Style" propertytype="System.Web.Services.Description.ServiceDescriptionImportStyle" />
+        <property name="ProtocolName" propertytype="System.String" />
+        <property name="AllSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="AbstractSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="ConcreteSchemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddServiceDescription(System.Web.Services.Description.ServiceDescription, System.String, System.String)" argnames="serviceDescription, appSettingUrlKey, appSettingBaseUrl" returntype="System.Void" />
+        <method name="Import(System.CodeDom.CodeNamespace, System.CodeDom.CodeCompileUnit)" argnames="codeNamespace, codeCompileUnit" returntype="System.Web.Services.Description.ServiceDescriptionImportWarnings" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceDescriptionReflector" namespace="System.Web.Services.Description">
+        <constructor name="ServiceDescriptionReflector" argnames="" />
+        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
+        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Service" propertytype="System.Web.Services.Description.Service" />
+        <property name="ServiceType" propertytype="System.Type" />
+        <property name="Methods" propertytype="System.Web.Services.Protocols.LogicalMethodInfo[]" />
+        <property name="ServiceUrl" propertytype="System.String" />
+        <property name="SchemaExporter" propertytype="System.Xml.Serialization.XmlSchemaExporter" />
+        <property name="ReflectionImporter" propertytype="System.Xml.Serialization.XmlReflectionImporter" />
+        <property name="ServiceAttribute" propertytype="System.Web.Services.WebServiceAttribute" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Reflect(System.Type, System.String)" argnames="type, url" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapExtensionImporter" namespace="System.Web.Services.Description">
+        <constructor name="SoapExtensionImporter" argnames="" />
+        <property name="ImportContext" propertytype="System.Web.Services.Description.SoapProtocolImporter" />
+        <method name="ImportMethod(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="metadata" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapExtensionReflector" namespace="System.Web.Services.Description">
+        <constructor name="SoapExtensionReflector" argnames="" />
+        <property name="ReflectionContext" propertytype="System.Web.Services.Description.ProtocolReflector" />
+        <method name="ReflectMethod" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapProtocolImporter" namespace="System.Web.Services.Description">
+        <constructor name="SoapProtocolImporter" argnames="" />
+        <property name="ProtocolName" propertytype="System.String" />
+        <property name="SoapBinding" propertytype="System.Web.Services.Description.SoapBinding" />
+        <property name="SoapImporter" propertytype="System.Xml.Serialization.SoapSchemaImporter" />
+        <property name="XmlImporter" propertytype="System.Xml.Serialization.XmlSchemaImporter" />
+        <property name="XmlExporter" propertytype="System.Xml.Serialization.XmlCodeExporter" />
+        <property name="SoapExporter" propertytype="System.Xml.Serialization.SoapCodeExporter" />
+        <property name="MetadataPropertiesAdded" propertytype="System.Boolean" />
+        <property name="ServiceDescriptions" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
+        <property name="Schemas" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="AbstractSchemas" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="ConcreteSchemas" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="CodeNamespace" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.CodeDom.CodeNamespace" />
+        <property name="CodeTypeDeclaration" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.CodeDom.CodeTypeDeclaration" />
+        <property name="Style" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.ServiceDescriptionImportStyle" />
+        <property name="Warnings" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.ServiceDescriptionImportWarnings" />
+        <property name="ClassNames" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Xml.Serialization.CodeIdentifiers" />
+        <property name="MethodName" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.String" />
+        <property name="ClassName" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.String" />
+        <property name="Port" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Port" />
+        <property name="PortType" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.PortType" />
+        <property name="Binding" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Binding" />
+        <property name="Service" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Service" />
+        <property name="Operation" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Operation" />
+        <property name="OperationBinding" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="InputMessage" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Message" />
+        <property name="OutputMessage" inherited="System.Web.Services.Description.ProtocolImporter" propertytype="System.Web.Services.Description.Message" />
+        <method name="EndNamespace" argnames="" returntype="System.Void" />
+        <method name="EndClass" argnames="" returntype="System.Void" />
+        <method name="GenerateMethod" argnames="" returntype="System.CodeDom.CodeMemberMethod" />
+        <method name="BeginClass" argnames="" returntype="System.CodeDom.CodeTypeDeclaration" />
+        <method name="IsOperationFlowSupported(System.Web.Services.Description.OperationFlow)" argnames="flow" returntype="System.Boolean" />
+        <method name="IsBindingSupported" argnames="" returntype="System.Boolean" />
+        <method name="BeginNamespace" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddExtensionWarningComments(System.CodeDom.CodeCommentStatementCollection, System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection)" argnames="comments, extensions" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
+        <method name="UnsupportedBindingWarning(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
+        <method name="UnsupportedOperationWarning(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
+        <method name="UnsupportedOperationBindingWarning(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Void" />
+        <method name="OperationSyntaxException(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Exception" />
+        <method name="OperationBindingSyntaxException(System.String)" argnames="text" inherited="System.Web.Services.Description.ProtocolImporter" returntype="System.Exception" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DocumentableItem" namespace="System.Web.Services.Description">
+        <constructor name="DocumentableItem" argnames="" />
+        <property name="Documentation" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceDescription" namespace="System.Web.Services.Description">
+        <constructor name="ServiceDescription" argnames="" />
+        <field name="Namespace" />
+        <property name="RetrievalUrl" propertytype="System.String" />
+        <property name="ServiceDescriptions" propertytype="System.Web.Services.Description.ServiceDescriptionCollection" />
+        <property name="Imports" propertytype="System.Web.Services.Description.ImportCollection" />
+        <property name="Types" propertytype="System.Web.Services.Description.Types" />
+        <property name="Messages" propertytype="System.Web.Services.Description.MessageCollection" />
+        <property name="PortTypes" propertytype="System.Web.Services.Description.PortTypeCollection" />
+        <property name="Bindings" propertytype="System.Web.Services.Description.BindingCollection" />
+        <property name="Services" propertytype="System.Web.Services.Description.ServiceCollection" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="TargetNamespace" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Serializer" propertytype="System.Xml.Serialization.XmlSerializer" />
+        <property name="AppSettingBaseUrl" propertytype="System.String" />
+        <property name="AppSettingUrlKey" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Read(System.IO.TextReader)" argnames="textReader" returntype="System.Web.Services.Description.ServiceDescription" />
+        <method name="Read(System.IO.Stream)" argnames="stream" returntype="System.Web.Services.Description.ServiceDescription" />
+        <method name="Read(System.Xml.XmlReader)" argnames="reader" returntype="System.Web.Services.Description.ServiceDescription" />
+        <method name="Read(System.String)" argnames="fileName" returntype="System.Web.Services.Description.ServiceDescription" />
+        <method name="CanRead(System.Xml.XmlReader)" argnames="reader" returntype="System.Boolean" />
+        <method name="Write(System.String)" argnames="fileName" returntype="System.Void" />
+        <method name="Write(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
+        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Import" namespace="System.Web.Services.Description">
+        <constructor name="Import" argnames="" />
+        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Location" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Port" namespace="System.Web.Services.Description">
+        <constructor name="Port" argnames="" />
+        <property name="Service" propertytype="System.Web.Services.Description.Service" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Binding" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Service" namespace="System.Web.Services.Description">
+        <constructor name="Service" argnames="" />
+        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="Ports" propertytype="System.Web.Services.Description.PortCollection" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MessageBinding" namespace="System.Web.Services.Description">
+        <constructor name="MessageBinding" argnames="" />
+        <property name="OperationBinding" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FaultBinding" namespace="System.Web.Services.Description">
+        <constructor name="FaultBinding" argnames="" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="OperationBinding" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="Name" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InputBinding" namespace="System.Web.Services.Description">
+        <constructor name="InputBinding" argnames="" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="OperationBinding" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="Name" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OutputBinding" namespace="System.Web.Services.Description">
+        <constructor name="OutputBinding" argnames="" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="OperationBinding" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="Name" inherited="System.Web.Services.Description.MessageBinding" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationBinding" namespace="System.Web.Services.Description">
+        <constructor name="OperationBinding" argnames="" />
+        <property name="Binding" propertytype="System.Web.Services.Description.Binding" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="Input" propertytype="System.Web.Services.Description.InputBinding" />
+        <property name="Output" propertytype="System.Web.Services.Description.OutputBinding" />
+        <property name="Faults" propertytype="System.Web.Services.Description.FaultBindingCollection" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Binding" namespace="System.Web.Services.Description">
+        <constructor name="Binding" argnames="" />
+        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="Operations" propertytype="System.Web.Services.Description.OperationBindingCollection" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Type" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationMessage" namespace="System.Web.Services.Description">
+        <constructor name="OperationMessage" argnames="" />
+        <property name="Operation" propertytype="System.Web.Services.Description.Operation" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Message" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationFault" namespace="System.Web.Services.Description">
+        <constructor name="OperationFault" argnames="" />
+        <property name="Operation" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Web.Services.Description.Operation" />
+        <property name="Name" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.String" />
+        <property name="Message" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationInput" namespace="System.Web.Services.Description">
+        <constructor name="OperationInput" argnames="" />
+        <property name="Operation" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Web.Services.Description.Operation" />
+        <property name="Name" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.String" />
+        <property name="Message" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationOutput" namespace="System.Web.Services.Description">
+        <constructor name="OperationOutput" argnames="" />
+        <property name="Operation" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Web.Services.Description.Operation" />
+        <property name="Name" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.String" />
+        <property name="Message" inherited="System.Web.Services.Description.OperationMessage" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Operation" namespace="System.Web.Services.Description">
+        <constructor name="Operation" argnames="" />
+        <property name="PortType" propertytype="System.Web.Services.Description.PortType" />
+        <property name="Name" propertytype="System.String" />
+        <property name="ParameterOrderString" propertytype="System.String" />
+        <property name="ParameterOrder" propertytype="System.String[]" />
+        <property name="Messages" propertytype="System.Web.Services.Description.OperationMessageCollection" />
+        <property name="Faults" propertytype="System.Web.Services.Description.OperationFaultCollection" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IsBoundBy(System.Web.Services.Description.OperationBinding)" argnames="operationBinding" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PortType" namespace="System.Web.Services.Description">
+        <constructor name="PortType" argnames="" />
+        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Operations" propertytype="System.Web.Services.Description.OperationCollection" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Message" namespace="System.Web.Services.Description">
+        <constructor name="Message" argnames="" />
+        <property name="ServiceDescription" propertytype="System.Web.Services.Description.ServiceDescription" />
+        <property name="Parts" propertytype="System.Web.Services.Description.MessagePartCollection" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FindPartsByName(System.String[])" argnames="partNames" returntype="System.Web.Services.Description.MessagePart[]" />
+        <method name="FindPartByName(System.String)" argnames="partName" returntype="System.Web.Services.Description.MessagePart" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MessagePart" namespace="System.Web.Services.Description">
+        <constructor name="MessagePart" argnames="" />
+        <property name="Message" propertytype="System.Web.Services.Description.Message" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Element" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Type" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Types" namespace="System.Web.Services.Description">
+        <constructor name="Types" argnames="" />
+        <property name="Schemas" propertytype="System.Xml.Serialization.XmlSchemas" />
+        <property name="Extensions" propertytype="System.Web.Services.Description.ServiceDescriptionFormatExtensionCollection" />
+        <property name="Documentation" inherited="System.Web.Services.Description.DocumentableItem" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceDescriptionFormatExtensionCollection" namespace="System.Web.Services.Description">
+        <constructor name="ServiceDescriptionFormatExtensionCollection(System.Object)" argnames="parent" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Object)" argnames="extension" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, extension" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="extension" returntype="System.Int32" />
+        <method name="Contains(System.Object)" argnames="extension" returntype="System.Boolean" />
+        <method name="Remove(System.Object)" argnames="extension" returntype="System.Void" />
+        <method name="CopyTo(System.Object[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Find(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="FindAll(System.Type)" argnames="type" returntype="System.Object[]" />
+        <method name="Find(System.String, System.String)" argnames="name, ns" returntype="System.Xml.XmlElement" />
+        <method name="FindAll(System.String, System.String)" argnames="name, ns" returntype="System.Xml.XmlElement[]" />
+        <method name="IsHandled(System.Object)" argnames="item" returntype="System.Boolean" />
+        <method name="IsRequired(System.Object)" argnames="item" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationMessageCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.OperationMessage" />
+        <property name="Input" propertytype="System.Web.Services.Description.OperationInput" />
+        <property name="Output" propertytype="System.Web.Services.Description.OperationOutput" />
+        <property name="Flow" propertytype="System.Web.Services.Description.OperationFlow" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.OperationMessage)" argnames="index, operationMessage" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.OperationMessage)" argnames="operationMessage" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.OperationMessage[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImportCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.Import" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.Import)" argnames="import" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.Import)" argnames="index, import" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.Import)" argnames="import" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.Import)" argnames="import" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.Import)" argnames="import" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.Import[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MessageCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.Message" />
+        <property name="Item" propertytype="System.Web.Services.Description.Message" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.Message)" argnames="message" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.Message)" argnames="index, message" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.Message)" argnames="message" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.Message)" argnames="message" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.Message)" argnames="message" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.Message[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PortCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.Port" />
+        <property name="Item" propertytype="System.Web.Services.Description.Port" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.Port)" argnames="port" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.Port)" argnames="index, port" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.Port)" argnames="port" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.Port)" argnames="port" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.Port)" argnames="port" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.Port[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PortTypeCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.PortType" />
+        <property name="Item" propertytype="System.Web.Services.Description.PortType" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.PortType)" argnames="index, portType" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.PortType)" argnames="portType" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.PortType[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BindingCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.Binding" />
+        <property name="Item" propertytype="System.Web.Services.Description.Binding" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.Binding)" argnames="index, binding" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.Binding)" argnames="binding" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.Binding[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServiceCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.Service" />
+        <property name="Item" propertytype="System.Web.Services.Description.Service" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.Service)" argnames="service" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.Service)" argnames="index, service" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.Service)" argnames="service" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.Service)" argnames="service" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.Service)" argnames="service" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.Service[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MessagePartCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.MessagePart" />
+        <property name="Item" propertytype="System.Web.Services.Description.MessagePart" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.MessagePart)" argnames="index, messagePart" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.MessagePart)" argnames="messagePart" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.MessagePart[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationBindingCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.OperationBinding" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.OperationBinding)" argnames="index, bindingOperation" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.OperationBinding)" argnames="bindingOperation" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.OperationBinding[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FaultBindingCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.FaultBinding" />
+        <property name="Item" propertytype="System.Web.Services.Description.FaultBinding" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.FaultBinding)" argnames="index, bindingOperationFault" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.FaultBinding)" argnames="bindingOperationFault" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.FaultBinding[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.Operation" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.Operation)" argnames="index, operation" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.Operation)" argnames="operation" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.Operation[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OperationFaultCollection" namespace="System.Web.Services.Description">
+        <property name="Item" propertytype="System.Web.Services.Description.OperationFault" />
+        <property name="Item" propertytype="System.Web.Services.Description.OperationFault" />
+        <property name="Table" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" propertytype="System.Collections.IDictionary" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="SetParent(System.Object, System.Object)" argnames="value, parent" returntype="System.Void" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Web.Services.Description.ServiceDescriptionBaseCollection" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Web.Services.Description.OperationFault)" argnames="index, operationFaultMessage" returntype="System.Void" />
+        <method name="IndexOf(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Int32" />
+        <method name="Contains(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Boolean" />
+        <method name="Remove(System.Web.Services.Description.OperationFault)" argnames="operationFaultMessage" returntype="System.Void" />
+        <method name="CopyTo(System.Web.Services.Description.OperationFault[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="SoapBindingStyle" namespace="System.Web.Services.Description">
+        <field name="Default" />
+        <field name="Document" />
+        <field name="Rpc" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SoapBindingUse" namespace="System.Web.Services.Description">
+        <field name="Default" />
+        <field name="Encoded" />
+        <field name="Literal" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ServiceDescriptionImportWarnings" namespace="System.Web.Services.Description">
+        <field name="NoCodeGenerated" />
+        <field name="OptionalExtensionsIgnored" />
+        <field name="RequiredExtensionsIgnored" />
+        <field name="UnsupportedOperationsIgnored" />
+        <field name="UnsupportedBindingsIgnored" />
+        <field name="NoMethodsGenerated" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ServiceDescriptionImportStyle" namespace="System.Web.Services.Description">
+        <field name="Client" />
+        <field name="Server" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="OperationFlow" namespace="System.Web.Services.Description">
+        <field name="None" />
+        <field name="OneWay" />
+        <field name="Notification" />
+        <field name="RequestResponse" />
+        <field name="SolicitResponse" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="XmlFormatExtensionAttribute" namespace="System.Web.Services.Configuration">
+        <constructor name="XmlFormatExtensionAttribute" argnames="" />
+        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type)" argnames="elementName, ns, extensionPoint1" />
+        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type, System.Type)" argnames="elementName, ns, extensionPoint1, extensionPoint2" />
+        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type, System.Type, System.Type)" argnames="elementName, ns, extensionPoint1, extensionPoint2, extensionPoint3" />
+        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type, System.Type, System.Type, System.Type)" argnames="elementName, ns, extensionPoint1, extensionPoint2, extensionPoint3, extensionPoint4" />
+        <constructor name="XmlFormatExtensionAttribute(System.String, System.String, System.Type[])" argnames="elementName, ns, extensionPoints" />
+        <property name="ExtensionPoints" propertytype="System.Type[]" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlFormatExtensionPointAttribute" namespace="System.Web.Services.Configuration">
+        <constructor name="XmlFormatExtensionPointAttribute(System.String)" argnames="memberName" />
+        <property name="MemberName" propertytype="System.String" />
+        <property name="AllowElements" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlFormatExtensionPrefixAttribute" namespace="System.Web.Services.Configuration">
+        <constructor name="XmlFormatExtensionPrefixAttribute" argnames="" />
+        <constructor name="XmlFormatExtensionPrefixAttribute(System.String, System.String)" argnames="prefix, ns" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/System.Web.Services.Description/wsdl-1.1-soap.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/System.Web.Services.Description/wsdl-1.1-soap.xsd
@@ -1,149 +1,149 @@
-<?xml version="1.0" encoding="UTF-8" ?> 
-<!-- 
- 
-Copyright 2001 - 2005, International Business Machines Corporation and Microsoft Corporation
-All Rights Reserved
-
-License for WSDL Schema Files
-
-The Authors grant permission to copy and distribute the WSDL Schema 
-Files in any medium without fee or royalty as long as this notice and 
-license are distributed with them.  The originals of these files can 
-be located at:
-
-http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd
-
-THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS 
-OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT 
-LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, 
-NON-INFRINGEMENT OR TITLE.  THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, 
-INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR 
-RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.
-
-The name and trademarks of the Authors may NOT be used in any manner, 
-including advertising or publicity pertaining to these files or any program 
-or service that uses these files, written prior permission.  Title to copyright 
-in these files will at all times remain with the Authors.
-
-No other rights are granted by implication, estoppel or otherwise.
-
-
---> 
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-           xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-           targetNamespace="http://schemas.xmlsoap.org/wsdl/soap/" >
-
-  <xs:import namespace = "http://schemas.xmlsoap.org/wsdl/" />
-
-  <xs:simpleType name="encodingStyle" >
-    <xs:annotation>
-      <xs:documentation>
-      "encodingStyle" indicates any canonicalization conventions followed in the contents of the containing element.  For example, the value "http://schemas.xmlsoap.org/soap/encoding/" indicates the pattern described in SOAP specification
-      </xs:documentation>
-    </xs:annotation>
-    <xs:list itemType="xs:anyURI" />
-  </xs:simpleType>
-
-  <xs:element name="binding" type="soap:tBinding" />
-  <xs:complexType name="tBinding" >
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibilityElement" >
-        <xs:attribute name="transport" type="xs:anyURI" use="required" />
-        <xs:attribute name="style" type="soap:tStyleChoice" use="optional" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:simpleType name="tStyleChoice" >
-    <xs:restriction base="xs:string" >
-      <xs:enumeration value="rpc" />
-      <xs:enumeration value="document" />
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:element name="operation" type="soap:tOperation" />
-  <xs:complexType name="tOperation" >
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibilityElement" >
-        <xs:attribute name="soapAction" type="xs:anyURI" use="optional" />
-        <xs:attribute name="style" type="soap:tStyleChoice" use="optional" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:element name="body" type="soap:tBody" />
-  <xs:attributeGroup name="tBodyAttributes" >
-    <xs:attribute name="encodingStyle" type="soap:encodingStyle" use="optional" />	   
-    <xs:attribute name="use" type="soap:useChoice" use="optional" />
-    <xs:attribute name="namespace" type="xs:anyURI" use="optional" />
-  </xs:attributeGroup>
-  <xs:complexType name="tBody" >
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibilityElement" >
-        <xs:attribute name="parts" type="xs:NMTOKENS" use="optional" />
-        <xs:attributeGroup ref = "soap:tBodyAttributes" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-  
-  <xs:simpleType name="useChoice" >
-    <xs:restriction base="xs:string" >
-      <xs:enumeration value="literal" />
-      <xs:enumeration value="encoded" />
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:element name="fault" type="soap:tFault" />
-  <xs:complexType name="tFaultRes" abstract="true" >
-    <xs:complexContent>
-      <xs:restriction base="soap:tBody" >
-	    <xs:attribute ref="wsdl:required" use="optional" /> 
-        <xs:attribute name="parts" type="xs:NMTOKENS" use="prohibited" />
-		<xs:attributeGroup ref="soap:tBodyAttributes" />
-      </xs:restriction>
-    </xs:complexContent>  	
-  </xs:complexType>
-  <xs:complexType name="tFault" >
-    <xs:complexContent>
-      <xs:extension base="soap:tFaultRes">
-        <xs:attribute name="name" type="xs:NCName" use="required" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-
-  <xs:element name="header" type="soap:tHeader" />
-  <xs:attributeGroup name="tHeaderAttributes" >
-    <xs:attribute name="message" type="xs:QName" use="required" />
-    <xs:attribute name="part" type="xs:NMTOKEN" use="required" />
-    <xs:attribute name="use" type="soap:useChoice" use="required" />
-    <xs:attribute name="encodingStyle" type="soap:encodingStyle" use="optional" />
-    <xs:attribute name="namespace" type="xs:anyURI" use="optional" />      
-  </xs:attributeGroup>
-  <xs:complexType name="tHeader" >
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibilityElement" >
-        <xs:sequence>
-          <xs:element ref="soap:headerfault" minOccurs="0" maxOccurs="unbounded" />
-        </xs:sequence>
-		<xs:attributeGroup ref="soap:tHeaderAttributes" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:element name="headerfault" type="soap:tHeaderFault" />
-  <xs:complexType name="tHeaderFault" >
-	<xs:attributeGroup ref="soap:tHeaderAttributes" />
-  </xs:complexType>
-
-  <xs:element name="address" type="soap:tAddress" />
-  <xs:complexType name="tAddress" >
-    <xs:complexContent>
-      <xs:extension base="wsdl:tExtensibilityElement" >
-        <xs:attribute name="location" type="xs:anyURI" use="required" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
+<?xml version="1.0" encoding="UTF-8" ?> 
+<!-- 
+ 
+Copyright 2001 - 2005, International Business Machines Corporation and Microsoft Corporation
+All Rights Reserved
+
+License for WSDL Schema Files
+
+The Authors grant permission to copy and distribute the WSDL Schema 
+Files in any medium without fee or royalty as long as this notice and 
+license are distributed with them.  The originals of these files can 
+be located at:
+
+http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd
+
+THESE SCHEMA FILES ARE PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS 
+OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THESE FILES, INCLUDING, BUT NOT 
+LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, 
+NON-INFRINGEMENT OR TITLE.  THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, 
+INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR 
+RELATING TO ANY USE OR DISTRIBUTION OF THESE FILES.
+
+The name and trademarks of the Authors may NOT be used in any manner, 
+including advertising or publicity pertaining to these files or any program 
+or service that uses these files, written prior permission.  Title to copyright 
+in these files will at all times remain with the Authors.
+
+No other rights are granted by implication, estoppel or otherwise.
+
+
+--> 
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+           xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+           targetNamespace="http://schemas.xmlsoap.org/wsdl/soap/" >
+
+  <xs:import namespace = "http://schemas.xmlsoap.org/wsdl/" />
+
+  <xs:simpleType name="encodingStyle" >
+    <xs:annotation>
+      <xs:documentation>
+      "encodingStyle" indicates any canonicalization conventions followed in the contents of the containing element.  For example, the value "http://schemas.xmlsoap.org/soap/encoding/" indicates the pattern described in SOAP specification
+      </xs:documentation>
+    </xs:annotation>
+    <xs:list itemType="xs:anyURI" />
+  </xs:simpleType>
+
+  <xs:element name="binding" type="soap:tBinding" />
+  <xs:complexType name="tBinding" >
+    <xs:complexContent>
+      <xs:extension base="wsdl:tExtensibilityElement" >
+        <xs:attribute name="transport" type="xs:anyURI" use="required" />
+        <xs:attribute name="style" type="soap:tStyleChoice" use="optional" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:simpleType name="tStyleChoice" >
+    <xs:restriction base="xs:string" >
+      <xs:enumeration value="rpc" />
+      <xs:enumeration value="document" />
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:element name="operation" type="soap:tOperation" />
+  <xs:complexType name="tOperation" >
+    <xs:complexContent>
+      <xs:extension base="wsdl:tExtensibilityElement" >
+        <xs:attribute name="soapAction" type="xs:anyURI" use="optional" />
+        <xs:attribute name="style" type="soap:tStyleChoice" use="optional" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="body" type="soap:tBody" />
+  <xs:attributeGroup name="tBodyAttributes" >
+    <xs:attribute name="encodingStyle" type="soap:encodingStyle" use="optional" />	   
+    <xs:attribute name="use" type="soap:useChoice" use="optional" />
+    <xs:attribute name="namespace" type="xs:anyURI" use="optional" />
+  </xs:attributeGroup>
+  <xs:complexType name="tBody" >
+    <xs:complexContent>
+      <xs:extension base="wsdl:tExtensibilityElement" >
+        <xs:attribute name="parts" type="xs:NMTOKENS" use="optional" />
+        <xs:attributeGroup ref = "soap:tBodyAttributes" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:simpleType name="useChoice" >
+    <xs:restriction base="xs:string" >
+      <xs:enumeration value="literal" />
+      <xs:enumeration value="encoded" />
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:element name="fault" type="soap:tFault" />
+  <xs:complexType name="tFaultRes" abstract="true" >
+    <xs:complexContent>
+      <xs:restriction base="soap:tBody" >
+	    <xs:attribute ref="wsdl:required" use="optional" /> 
+        <xs:attribute name="parts" type="xs:NMTOKENS" use="prohibited" />
+		<xs:attributeGroup ref="soap:tBodyAttributes" />
+      </xs:restriction>
+    </xs:complexContent>  	
+  </xs:complexType>
+  <xs:complexType name="tFault" >
+    <xs:complexContent>
+      <xs:extension base="soap:tFaultRes">
+        <xs:attribute name="name" type="xs:NCName" use="required" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+
+  <xs:element name="header" type="soap:tHeader" />
+  <xs:attributeGroup name="tHeaderAttributes" >
+    <xs:attribute name="message" type="xs:QName" use="required" />
+    <xs:attribute name="part" type="xs:NMTOKEN" use="required" />
+    <xs:attribute name="use" type="soap:useChoice" use="required" />
+    <xs:attribute name="encodingStyle" type="soap:encodingStyle" use="optional" />
+    <xs:attribute name="namespace" type="xs:anyURI" use="optional" />      
+  </xs:attributeGroup>
+  <xs:complexType name="tHeader" >
+    <xs:complexContent>
+      <xs:extension base="wsdl:tExtensibilityElement" >
+        <xs:sequence>
+          <xs:element ref="soap:headerfault" minOccurs="0" maxOccurs="unbounded" />
+        </xs:sequence>
+		<xs:attributeGroup ref="soap:tHeaderAttributes" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="headerfault" type="soap:tHeaderFault" />
+  <xs:complexType name="tHeaderFault" >
+	<xs:attributeGroup ref="soap:tHeaderAttributes" />
+  </xs:complexType>
+
+  <xs:element name="address" type="soap:tAddress" />
+  <xs:complexType name="tAddress" >
+    <xs:complexContent>
+      <xs:extension base="wsdl:tExtensibilityElement" >
+        <xs:attribute name="location" type="xs:anyURI" use="required" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
 </xs:schema>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/Test/System.Web.Services.Description/6041.wsdl
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/Test/System.Web.Services.Description/6041.wsdl
@@ -1,82 +1,82 @@
-<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://example.domain.openengsb.org" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ax21="http://event.example.domain.openengsb.org/xsd" xmlns:ax22="http://api.core.openengsb.org/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://example.domain.openengsb.org">
-    <wsdl:types>
-        <xs:schema xmlns:ax24="http://event.example.domain.openengsb.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://example.domain.openengsb.org">
-            <xs:import namespace="http://event.example.domain.openengsb.org/xsd"/>
-            <xs:element name="raiseEvent">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element minOccurs="0" name="args0" nillable="true" type="ax24:LogEvent"/>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-        </xs:schema>
-        <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://api.core.openengsb.org/xsd">
-            <xs:complexType name="Event">
-                <xs:sequence>
-                    <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
-                    <xs:element minOccurs="0" name="origin" nillable="true" type="xs:string"/>
-                    <xs:element minOccurs="0" name="processId" nillable="true" type="xs:long"/>
-                </xs:sequence>
-            </xs:complexType>
-        </xs:schema>
-        <xs:schema xmlns:ax23="http://api.core.openengsb.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://event.example.domain.openengsb.org/xsd">
-            <xs:import namespace="http://api.core.openengsb.org/xsd"/>
-            <xs:complexType name="LogEvent">
-                <xs:complexContent>
-                    <xs:extension base="ax23:Event">
-                        <xs:sequence>
-                            <xs:element minOccurs="0" name="level" nillable="true" type="xs:string"/>
-                            <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
-                        </xs:sequence>
-                    </xs:extension>
-                </xs:complexContent>
-            </xs:complexType>
-        </xs:schema>
-    </wsdl:types>
-    <wsdl:message name="raiseEventRequest">
-        <wsdl:part name="parameters" element="ns:raiseEvent"/>
-    </wsdl:message>
-    <wsdl:portType name="ExampleDomainEventsPortType">
-        <wsdl:operation name="raiseEvent">
-            <wsdl:input message="ns:raiseEventRequest" wsaw:Action="urn:raiseEvent"/>
-        </wsdl:operation>
-    </wsdl:portType>
-    <wsdl:binding name="ExampleDomainEventsSoap11Binding" type="ns:ExampleDomainEventsPortType">
-        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
-        <wsdl:operation name="raiseEvent">
-            <soap:operation soapAction="urn:raiseEvent" style="document"/>
-            <wsdl:input>
-                <soap:body use="literal"/>
-            </wsdl:input>
-        </wsdl:operation>
-    </wsdl:binding>
-    <wsdl:binding name="ExampleDomainEventsSoap12Binding" type="ns:ExampleDomainEventsPortType">
-        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
-        <wsdl:operation name="raiseEvent">
-            <soap12:operation soapAction="urn:raiseEvent" style="document"/>
-            <wsdl:input>
-                <soap12:body use="literal"/>
-            </wsdl:input>
-        </wsdl:operation>
-    </wsdl:binding>
-    <wsdl:binding name="ExampleDomainEventsHttpBinding" type="ns:ExampleDomainEventsPortType">
-        <http:binding verb="POST"/>
-        <wsdl:operation name="raiseEvent">
-            <http:operation location="raiseEvent"/>
-            <wsdl:input>
-                <mime:content type="application/xml" part="parameters"/>
-            </wsdl:input>
-        </wsdl:operation>
-    </wsdl:binding>
-    <wsdl:service name="ExampleDomainEvents">
-        <wsdl:port name="ExampleDomainEventsHttpSoap11Endpoint" binding="ns:ExampleDomainEventsSoap11Binding">
-            <soap:address location="http://localhost:8080/axis2/services/ExampleDomainEvents"/>
-        </wsdl:port>
-        <wsdl:port name="ExampleDomainEventsHttpSoap12Endpoint" binding="ns:ExampleDomainEventsSoap12Binding">
-            <soap12:address location="http://localhost:8080/axis2/services/ExampleDomainEvents"/>
-        </wsdl:port>
-        <wsdl:port name="ExampleDomainEventsHttpEndpoint" binding="ns:ExampleDomainEventsHttpBinding">
-            <http:address location="http://localhost:8080/axis2/services/ExampleDomainEvents"/>
-        </wsdl:port>
-    </wsdl:service>
-</wsdl:definitions>
+<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://example.domain.openengsb.org" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ax21="http://event.example.domain.openengsb.org/xsd" xmlns:ax22="http://api.core.openengsb.org/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://example.domain.openengsb.org">
+    <wsdl:types>
+        <xs:schema xmlns:ax24="http://event.example.domain.openengsb.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://example.domain.openengsb.org">
+            <xs:import namespace="http://event.example.domain.openengsb.org/xsd"/>
+            <xs:element name="raiseEvent">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element minOccurs="0" name="args0" nillable="true" type="ax24:LogEvent"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:schema>
+        <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://api.core.openengsb.org/xsd">
+            <xs:complexType name="Event">
+                <xs:sequence>
+                    <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
+                    <xs:element minOccurs="0" name="origin" nillable="true" type="xs:string"/>
+                    <xs:element minOccurs="0" name="processId" nillable="true" type="xs:long"/>
+                </xs:sequence>
+            </xs:complexType>
+        </xs:schema>
+        <xs:schema xmlns:ax23="http://api.core.openengsb.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://event.example.domain.openengsb.org/xsd">
+            <xs:import namespace="http://api.core.openengsb.org/xsd"/>
+            <xs:complexType name="LogEvent">
+                <xs:complexContent>
+                    <xs:extension base="ax23:Event">
+                        <xs:sequence>
+                            <xs:element minOccurs="0" name="level" nillable="true" type="xs:string"/>
+                            <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+                        </xs:sequence>
+                    </xs:extension>
+                </xs:complexContent>
+            </xs:complexType>
+        </xs:schema>
+    </wsdl:types>
+    <wsdl:message name="raiseEventRequest">
+        <wsdl:part name="parameters" element="ns:raiseEvent"/>
+    </wsdl:message>
+    <wsdl:portType name="ExampleDomainEventsPortType">
+        <wsdl:operation name="raiseEvent">
+            <wsdl:input message="ns:raiseEventRequest" wsaw:Action="urn:raiseEvent"/>
+        </wsdl:operation>
+    </wsdl:portType>
+    <wsdl:binding name="ExampleDomainEventsSoap11Binding" type="ns:ExampleDomainEventsPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <wsdl:operation name="raiseEvent">
+            <soap:operation soapAction="urn:raiseEvent" style="document"/>
+            <wsdl:input>
+                <soap:body use="literal"/>
+            </wsdl:input>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:binding name="ExampleDomainEventsSoap12Binding" type="ns:ExampleDomainEventsPortType">
+        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <wsdl:operation name="raiseEvent">
+            <soap12:operation soapAction="urn:raiseEvent" style="document"/>
+            <wsdl:input>
+                <soap12:body use="literal"/>
+            </wsdl:input>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:binding name="ExampleDomainEventsHttpBinding" type="ns:ExampleDomainEventsPortType">
+        <http:binding verb="POST"/>
+        <wsdl:operation name="raiseEvent">
+            <http:operation location="raiseEvent"/>
+            <wsdl:input>
+                <mime:content type="application/xml" part="parameters"/>
+            </wsdl:input>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="ExampleDomainEvents">
+        <wsdl:port name="ExampleDomainEventsHttpSoap11Endpoint" binding="ns:ExampleDomainEventsSoap11Binding">
+            <soap:address location="http://localhost:8080/axis2/services/ExampleDomainEvents"/>
+        </wsdl:port>
+        <wsdl:port name="ExampleDomainEventsHttpSoap12Endpoint" binding="ns:ExampleDomainEventsSoap12Binding">
+            <soap12:address location="http://localhost:8080/axis2/services/ExampleDomainEvents"/>
+        </wsdl:port>
+        <wsdl:port name="ExampleDomainEventsHttpEndpoint" binding="ns:ExampleDomainEventsHttpBinding">
+            <http:address location="http://localhost:8080/axis2/services/ExampleDomainEvents"/>
+        </wsdl:port>
+    </wsdl:service>
+</wsdl:definitions>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/Test/System.Web.Services.Description/check-import.wsdl
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/Test/System.Web.Services.Description/check-import.wsdl
@@ -1,6 +1,6 @@
-<definitions targetNamespace="urn:foo"
-   xmlns="http://schemas.xmlsoap.org/wsdl/"
-   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
->
-   <import location="check-import2.wsdl" namespace="urn:bar" />
-</definitions>
+<definitions targetNamespace="urn:foo"
+   xmlns="http://schemas.xmlsoap.org/wsdl/"
+   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+>
+   <import location="check-import2.wsdl" namespace="urn:bar" />
+</definitions>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/Test/System.Web.Services.Description/check-import2.wsdl
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/Test/System.Web.Services.Description/check-import2.wsdl
@@ -1,31 +1,31 @@
-<definitions targetNamespace="urn:bar"
-   xmlns="http://schemas.xmlsoap.org/wsdl/"
-   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-   xmlns:bar="urn:bar"
->
-<message name="BarMessage" />
-<message name="BarResponseMessage" />
-<portType name="BarPort">
-  <operation name="BarOperation">
-    <input message="bar:BarMessage" />
-    <output message="bar:BarResponseMessage" />
-  </operation>
-</portType>
-<binding name="BarBinding" type="bar:BarPort">
-  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
-  <operation name="BarOperation">
-    <soap:operation soapAction="" style="document" />
-    <input>
-      <soap:body use="literal" />
-    </input>
-    <output>
-      <soap:body use="literal" />
-    </output>
-  </operation>
-</binding>
-<service name="BarService">
-   <port binding="bar:BarBinding" name="BarPort">
-      <soap:address location="https://localhost/bar" />
-   </port>
-</service>
-</definitions>
+<definitions targetNamespace="urn:bar"
+   xmlns="http://schemas.xmlsoap.org/wsdl/"
+   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+   xmlns:bar="urn:bar"
+>
+<message name="BarMessage" />
+<message name="BarResponseMessage" />
+<portType name="BarPort">
+  <operation name="BarOperation">
+    <input message="bar:BarMessage" />
+    <output message="bar:BarResponseMessage" />
+  </operation>
+</portType>
+<binding name="BarBinding" type="bar:BarPort">
+  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+  <operation name="BarOperation">
+    <soap:operation soapAction="" style="document" />
+    <input>
+      <soap:body use="literal" />
+    </input>
+    <output>
+      <soap:body use="literal" />
+    </output>
+  </operation>
+</binding>
+<service name="BarService">
+   <port binding="bar:BarBinding" name="BarPort">
+      <soap:address location="https://localhost/bar" />
+   </port>
+</service>
+</definitions>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web.Services/Test/System.Web.Services.Description/test2.wsdl
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web.Services/Test/System.Web.Services.Description/test2.wsdl
@@ -1,46 +1,46 @@
-<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-  <wsdl:types>
-    <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
-      <s:element name="Hola">
-        <s:complexType />
-      </s:element>
-      <s:element name="HolaResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="1" maxOccurs="1" name="HolaResult" nillable="true" type="s:int" />
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-    </s:schema>
-  </wsdl:types>
-  <wsdl:message name="HolaSoapIn">
-    <wsdl:part name="parameters" element="tns:Hola" />
-  </wsdl:message>
-  <wsdl:message name="HolaSoapOut">
-    <wsdl:part name="parameters" element="tns:HolaResponse" />
-  </wsdl:message>
-  <wsdl:portType name="ServiceSoap">
-    <wsdl:operation name="Hola">
-      <wsdl:input message="tns:HolaSoapIn" />
-      <wsdl:output message="tns:HolaSoapOut" />
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
-    <wsdl:operation name="Hola">
-      <soap:operation soapAction="http://tempuri.org/Hola" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="Service">
-    <wsdl:port name="ServiceSoap" binding="tns:ServiceSoap">
-      <soap:address location="http://localhost:4810/WebSite6/Service.asmx" />
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
+      <s:element name="Hola">
+        <s:complexType />
+      </s:element>
+      <s:element name="HolaResponse">
+        <s:complexType>
+          <s:sequence>
+            <s:element minOccurs="1" maxOccurs="1" name="HolaResult" nillable="true" type="s:int" />
+          </s:sequence>
+        </s:complexType>
+      </s:element>
+    </s:schema>
+  </wsdl:types>
+  <wsdl:message name="HolaSoapIn">
+    <wsdl:part name="parameters" element="tns:Hola" />
+  </wsdl:message>
+  <wsdl:message name="HolaSoapOut">
+    <wsdl:part name="parameters" element="tns:HolaResponse" />
+  </wsdl:message>
+  <wsdl:portType name="ServiceSoap">
+    <wsdl:operation name="Hola">
+      <wsdl:input message="tns:HolaSoapIn" />
+      <wsdl:output message="tns:HolaSoapOut" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="Hola">
+      <soap:operation soapAction="http://tempuri.org/Hola" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="Service">
+    <wsdl:port name="ServiceSoap" binding="tns:ServiceSoap">
+      <soap:address location="http://localhost:4810/WebSite6/Service.asmx" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Documentation/en/System.Web.Security/ActiveDirectoryMembershipProvider.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Documentation/en/System.Web.Security/ActiveDirectoryMembershipProvider.xml
@@ -78,7 +78,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.ProviderUserKey" />
+            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.ProviderUserKey" />
                 </para>
           </term>
           <description>
@@ -90,7 +90,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.MembershipUser.UserName" />
+            <para> <see cref="P:System.Web.Security.MembershipUser.UserName" />
                 </para>
           </term>
           <description>
@@ -102,7 +102,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.Comment" />
+            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.Comment" />
                 </para>
           </term>
           <description>
@@ -114,7 +114,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.MembershipUser.CreationDate" />
+            <para> <see cref="P:System.Web.Security.MembershipUser.CreationDate" />
                 </para>
           </term>
           <description>
@@ -126,7 +126,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.Email" />
+            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.Email" />
                 </para>
           </term>
           <description>
@@ -138,7 +138,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.LastActivityDate" />
+            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.LastActivityDate" />
                 </para>
           </term>
           <description>
@@ -150,7 +150,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.LastLoginDate" />
+            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.LastLoginDate" />
                 </para>
           </term>
           <description>
@@ -162,7 +162,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.MembershipUser.LastPasswordChangedDate" />
+            <para> <see cref="P:System.Web.Security.MembershipUser.LastPasswordChangedDate" />
                 </para>
           </term>
           <description>
@@ -174,7 +174,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.MembershipUser.PasswordQuestion" />
+            <para> <see cref="P:System.Web.Security.MembershipUser.PasswordQuestion" />
                 </para>
           </term>
           <description>
@@ -186,7 +186,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.IsApproved" />
+            <para> <see cref="P:System.Web.Security.ActiveDirectoryMembershipUser.IsApproved" />
                 </para>
           </term>
           <description>
@@ -199,7 +199,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.MembershipUser.IsLockedOut" />
+            <para> <see cref="P:System.Web.Security.MembershipUser.IsLockedOut" />
                 </para>
           </term>
           <description>
@@ -213,7 +213,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.Security.MembershipUser.LastLockoutDate" />
+            <para> <see cref="P:System.Web.Security.MembershipUser.LastLockoutDate" />
                 </para>
           </term>
           <description>
@@ -241,7 +241,7 @@
         </listheader>
         <item>
           <term>
-            <para> attributeMapPasswordQuestion
+            <para> attributeMapPasswordQuestion
                 </para>
           </term>
           <description>
@@ -250,7 +250,7 @@
         </item>
         <item>
           <term>
-            <para> attributeMapPasswordAnswer
+            <para> attributeMapPasswordAnswer
                 </para>
           </term>
           <description>
@@ -259,7 +259,7 @@
         </item>
         <item>
           <term>
-            <para> attributeMapFailedPasswordAnswerCount
+            <para> attributeMapFailedPasswordAnswerCount
                 </para>
           </term>
           <description>
@@ -268,7 +268,7 @@
         </item>
         <item>
           <term>
-            <para> attributeMapFailedPasswordAnswerTime
+            <para> attributeMapFailedPasswordAnswerTime
                 </para>
           </term>
           <description>
@@ -277,7 +277,7 @@
         </item>
         <item>
           <term>
-            <para> attributeMapFailedPasswordAnswerLockoutTime
+            <para> attributeMapFailedPasswordAnswerLockoutTime
                 </para>
           </term>
           <description>
@@ -304,7 +304,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="F:System.Web.Security.ActiveDirectoryConnectionProtection.None" />
+            <para> <see cref="F:System.Web.Security.ActiveDirectoryConnectionProtection.None" />
                     </para>
           </term>
           <description>
@@ -321,7 +321,7 @@
         </item>
         <item>
           <term>
-            <para> Secure
+            <para> Secure
                     </para>
           </term>
           <description>
@@ -344,7 +344,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="F:System.Web.Security.ActiveDirectoryConnectionProtection.None" />
+            <para> <see cref="F:System.Web.Security.ActiveDirectoryConnectionProtection.None" />
                     </para>
           </term>
           <description>
@@ -359,7 +359,7 @@
         </item>
         <item>
           <term>
-            <para> Secure
+            <para> Secure
                     </para>
           </term>
           <description>
@@ -386,7 +386,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="F:System.Web.Security.ActiveDirectoryConnectionProtection.None" />
+            <para> <see cref="F:System.Web.Security.ActiveDirectoryConnectionProtection.None" />
                     </para>
           </term>
           <description>
@@ -395,7 +395,7 @@
         </item>
         <item>
           <term>
-            <para> Secure
+            <para> Secure
                     </para>
           </term>
           <description>
@@ -719,15 +719,15 @@
           <para>When the <see cref="P:System.Web.Security.ActiveDirectoryMembershipProvider.EnableSearchMethods" /> property is false, the following methods are not available:</para>
           <list type="bullet">
             <item>
-              <para> <see cref="M:System.Web.Security.ActiveDirectoryMembershipProvider.FindUsersByName(System.String,System.Int32,System.Int32,System.Int32@)" />
+              <para> <see cref="M:System.Web.Security.ActiveDirectoryMembershipProvider.FindUsersByName(System.String,System.Int32,System.Int32,System.Int32@)" />
               </para>
             </item>
             <item>
-              <para> <see cref="M:System.Web.Security.ActiveDirectoryMembershipProvider.FindUsersByEmail(System.String,System.Int32,System.Int32,System.Int32@)" />
+              <para> <see cref="M:System.Web.Security.ActiveDirectoryMembershipProvider.FindUsersByEmail(System.String,System.Int32,System.Int32,System.Int32@)" />
               </para>
             </item>
             <item>
-              <para> <see cref="M:System.Web.Security.ActiveDirectoryMembershipProvider.GetAllUsers(System.Int32,System.Int32,System.Int32@)" />
+              <para> <see cref="M:System.Web.Security.ActiveDirectoryMembershipProvider.GetAllUsers(System.Int32,System.Int32,System.Int32@)" />
               </para>
             </item>
           </list>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Documentation/en/System.Web.UI.WebControls/ChangePassword.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Documentation/en/System.Web.UI.WebControls/ChangePassword.xml
@@ -16,43 +16,43 @@
       <para>In this topic:</para>
       <list type="bullet">
         <item>
-          <para> <format type="text/html"><a href="#Introduction">Introduction</a></format>
+          <para> <format type="text/html"><a href="#Introduction">Introduction</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#sending_email_messages">Sending E-mail Messages</a></format>
+          <para> <format type="text/html"><a href="#sending_email_messages">Sending E-mail Messages</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#views">Views</a></format>
+          <para> <format type="text/html"><a href="#views">Views</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#styles_and_templates">Styles and Templates</a></format>
+          <para> <format type="text/html"><a href="#styles_and_templates">Styles and Templates</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#validation_groupings">Validation Groupings</a></format>
+          <para> <format type="text/html"><a href="#validation_groupings">Validation Groupings</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#access_keys_and_tab_indexes">Access Keys and Tab Indexes</a></format>
+          <para> <format type="text/html"><a href="#access_keys_and_tab_indexes">Access Keys and Tab Indexes</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#accessibility">Accessibility</a></format>
+          <para> <format type="text/html"><a href="#accessibility">Accessibility</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#accessing_controls_during_page_load_and_page_init">Accessing Controls During Page_Load and Page_Init</a></format>
+          <para> <format type="text/html"><a href="#accessing_controls_during_page_load_and_page_init">Accessing Controls During Page_Load and Page_Init</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#applying_styles">Applying CSS Styles</a></format>
+          <para> <format type="text/html"><a href="#applying_styles">Applying CSS Styles</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#DeclarativeSyntax">Declarative Syntax#</a></format>
+          <para> <format type="text/html"><a href="#DeclarativeSyntax">Declarative Syntax#</a></format>
               </para>
         </item>
       </list>
@@ -138,7 +138,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.CancelButtonStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.CancelButtonStyle" />
                     </para>
           </term>
           <description>
@@ -147,7 +147,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ChangePasswordButtonStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ChangePasswordButtonStyle" />
                     </para>
           </term>
           <description>
@@ -156,7 +156,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ContinueButtonStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ContinueButtonStyle" />
                     </para>
           </term>
           <description>
@@ -165,7 +165,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.FailureTextStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.FailureTextStyle" />
                     </para>
           </term>
           <description>
@@ -174,7 +174,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.HyperLinkStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.HyperLinkStyle" />
                     </para>
           </term>
           <description>
@@ -183,7 +183,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.InstructionTextStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.InstructionTextStyle" />
                     </para>
           </term>
           <description>
@@ -192,7 +192,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.LabelStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.LabelStyle" />
                     </para>
           </term>
           <description>
@@ -201,7 +201,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.PasswordHintStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.PasswordHintStyle" />
                     </para>
           </term>
           <description>
@@ -210,7 +210,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.SuccessTextStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.SuccessTextStyle" />
                     </para>
           </term>
           <description>
@@ -219,7 +219,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.TextBoxStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.TextBoxStyle" />
                     </para>
           </term>
           <description>
@@ -228,7 +228,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.TitleTextStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.TitleTextStyle" />
                     </para>
           </term>
           <description>
@@ -557,7 +557,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -566,7 +566,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -575,7 +575,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -584,7 +584,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -593,7 +593,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -602,7 +602,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -611,7 +611,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -620,7 +620,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -629,7 +629,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -638,7 +638,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -647,7 +647,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -656,7 +656,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -665,7 +665,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -872,7 +872,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -881,7 +881,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -890,7 +890,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -899,7 +899,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -908,7 +908,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -917,7 +917,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -926,7 +926,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -935,7 +935,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -944,7 +944,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -953,7 +953,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -962,7 +962,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -971,7 +971,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -980,7 +980,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -989,7 +989,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -998,7 +998,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -1163,7 +1163,7 @@
             </listheader>
             <item>
               <term>
-                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ChangePasswordTemplate" />
+                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ChangePasswordTemplate" />
                 </para>
               </term>
               <description>
@@ -1172,7 +1172,7 @@
             </item>
             <item>
               <term>
-                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.SuccessTemplate" />
+                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.SuccessTemplate" />
                 </para>
               </term>
               <description>
@@ -1197,7 +1197,7 @@
             </listheader>
             <item>
               <term>
-                <para> Cancel
+                <para> Cancel
                 </para>
               </term>
               <description>
@@ -1209,7 +1209,7 @@
             </item>
             <item>
               <term>
-                <para> ChangePassword
+                <para> ChangePassword
                 </para>
               </term>
               <description>
@@ -1221,7 +1221,7 @@
             </item>
             <item>
               <term>
-                <para> ConfirmNewPassword
+                <para> ConfirmNewPassword
                 </para>
               </term>
               <description>
@@ -1233,7 +1233,7 @@
             </item>
             <item>
               <term>
-                <para> Continue 
+                <para> Continue 
                 </para>
               </term>
               <description>
@@ -1245,7 +1245,7 @@
             </item>
             <item>
               <term>
-                <para> CurrentPassword 
+                <para> CurrentPassword 
                 </para>
               </term>
               <description>
@@ -1257,7 +1257,7 @@
             </item>
             <item>
               <term>
-                <para> FailureText 
+                <para> FailureText 
                 </para>
               </term>
               <description>
@@ -1269,7 +1269,7 @@
             </item>
             <item>
               <term>
-                <para> NewPassword 
+                <para> NewPassword 
                 </para>
               </term>
               <description>
@@ -1281,7 +1281,7 @@
             </item>
             <item>
               <term>
-                <para> UserName 
+                <para> UserName 
                 </para>
               </term>
               <description>
@@ -1601,7 +1601,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -1610,7 +1610,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -1619,7 +1619,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -1628,7 +1628,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -1637,7 +1637,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -1646,7 +1646,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -1655,7 +1655,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -1664,7 +1664,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -1673,7 +1673,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -1682,7 +1682,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -1691,7 +1691,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -1700,7 +1700,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -1709,7 +1709,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -1718,7 +1718,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -1727,7 +1727,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -2075,7 +2075,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -2084,7 +2084,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -2093,7 +2093,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -2102,7 +2102,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -2111,7 +2111,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -2120,7 +2120,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -2129,7 +2129,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -2138,7 +2138,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -2147,7 +2147,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -2156,7 +2156,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -2165,7 +2165,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -2174,7 +2174,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -2183,7 +2183,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -2192,7 +2192,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -2201,7 +2201,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -2320,7 +2320,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -2329,7 +2329,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -2338,7 +2338,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -2347,7 +2347,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -2356,7 +2356,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -2365,7 +2365,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -2374,7 +2374,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -2383,7 +2383,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -2392,7 +2392,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -2401,7 +2401,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -2410,7 +2410,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -2419,7 +2419,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -2428,7 +2428,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -2437,7 +2437,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -2446,7 +2446,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -2529,7 +2529,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -2538,7 +2538,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -2547,7 +2547,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -2556,7 +2556,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -2565,7 +2565,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -2574,7 +2574,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -2583,7 +2583,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -2592,7 +2592,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -2601,7 +2601,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -2610,7 +2610,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -2619,7 +2619,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -2628,7 +2628,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -2637,7 +2637,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -2646,7 +2646,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -2655,7 +2655,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -2709,7 +2709,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -2718,7 +2718,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -2727,7 +2727,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -2736,7 +2736,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -2745,7 +2745,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -2754,7 +2754,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -2763,7 +2763,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -2772,7 +2772,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -2781,7 +2781,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -2790,7 +2790,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -2799,7 +2799,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -2808,7 +2808,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -2817,7 +2817,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -2826,7 +2826,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -2835,7 +2835,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -2946,9 +2946,9 @@
             </listheader>
             <item>
               <term>
-                <para> <system>&lt;%</system>
-                  <paramref name="UserName" />
-                  <system>%&gt;</system>
+                <para> <system>&lt;%</system>
+                  <paramref name="UserName" />
+                  <system>%&gt;</system>
                 </para>
               </term>
               <description>
@@ -2958,8 +2958,8 @@
             <item>
               <term>
                 <para> <system>&lt;%</system>
-                  Password
-                  <system>%&gt;</system>
+                  Password
+                  <system>%&gt;</system>
                 </para>
               </term>
               <description>
@@ -3472,7 +3472,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -3481,7 +3481,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -3490,7 +3490,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -3499,7 +3499,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -3508,7 +3508,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -3517,7 +3517,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -3526,7 +3526,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -3535,7 +3535,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -3544,7 +3544,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -3553,7 +3553,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -3562,7 +3562,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -3571,7 +3571,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -3580,7 +3580,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -3589,7 +3589,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -3598,7 +3598,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -3986,7 +3986,7 @@
             </listheader>
             <item>
               <term>
-                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ChangePasswordTemplate" />
+                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.ChangePasswordTemplate" />
                 </para>
               </term>
               <description>
@@ -3995,7 +3995,7 @@
             </item>
             <item>
               <term>
-                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.SuccessTemplate" />
+                <para> <see cref="P:System.Web.UI.WebControls.ChangePassword.SuccessTemplate" />
                 </para>
               </term>
               <description>
@@ -4105,7 +4105,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -4114,7 +4114,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -4123,7 +4123,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -4132,7 +4132,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -4141,7 +4141,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -4150,7 +4150,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -4159,7 +4159,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -4168,7 +4168,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -4177,7 +4177,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -4186,7 +4186,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -4195,7 +4195,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -4204,7 +4204,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -4213,7 +4213,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -4222,7 +4222,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -4231,7 +4231,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -4337,7 +4337,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -4346,7 +4346,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -4355,7 +4355,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -4364,7 +4364,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -4373,7 +4373,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -4382,7 +4382,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -4391,7 +4391,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -4400,7 +4400,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -4409,7 +4409,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -4418,7 +4418,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -4427,7 +4427,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -4436,7 +4436,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -4445,7 +4445,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -4454,7 +4454,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -4463,7 +4463,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -4517,7 +4517,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -4526,7 +4526,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -4535,7 +4535,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -4544,7 +4544,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -4553,7 +4553,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -4562,7 +4562,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -4571,7 +4571,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -4580,7 +4580,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -4589,7 +4589,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -4598,7 +4598,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -4607,7 +4607,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -4616,7 +4616,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -4625,7 +4625,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -4634,7 +4634,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -4643,7 +4643,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
@@ -4798,7 +4798,7 @@
             </listheader>
             <item>
               <term>
-                <para> BackColor
+                <para> BackColor
                 </para>
               </term>
               <description>
@@ -4807,7 +4807,7 @@
             </item>
             <item>
               <term>
-                <para> BorderColor
+                <para> BorderColor
                 </para>
               </term>
               <description>
@@ -4816,7 +4816,7 @@
             </item>
             <item>
               <term>
-                <para> BorderStyle
+                <para> BorderStyle
                 </para>
               </term>
               <description>
@@ -4825,7 +4825,7 @@
             </item>
             <item>
               <term>
-                <para> BorderWidth
+                <para> BorderWidth
                 </para>
               </term>
               <description>
@@ -4834,7 +4834,7 @@
             </item>
             <item>
               <term>
-                <para> CssClass
+                <para> CssClass
                 </para>
               </term>
               <description>
@@ -4843,7 +4843,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Bold
+                <para> Font-Bold
                 </para>
               </term>
               <description>
@@ -4852,7 +4852,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Italic
+                <para> Font-Italic
                 </para>
               </term>
               <description>
@@ -4861,7 +4861,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Names
+                <para> Font-Names
                 </para>
               </term>
               <description>
@@ -4870,7 +4870,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Overline
+                <para> Font-Overline
                 </para>
               </term>
               <description>
@@ -4879,7 +4879,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Size
+                <para> Font-Size
                 </para>
               </term>
               <description>
@@ -4888,7 +4888,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Strikeout
+                <para> Font-Strikeout
                 </para>
               </term>
               <description>
@@ -4897,7 +4897,7 @@
             </item>
             <item>
               <term>
-                <para> Font-Underline
+                <para> Font-Underline
                 </para>
               </term>
               <description>
@@ -4906,7 +4906,7 @@
             </item>
             <item>
               <term>
-                <para> ForeColor
+                <para> ForeColor
                 </para>
               </term>
               <description>
@@ -4915,7 +4915,7 @@
             </item>
             <item>
               <term>
-                <para> Height
+                <para> Height
                 </para>
               </term>
               <description>
@@ -4924,7 +4924,7 @@
             </item>
             <item>
               <term>
-                <para> Width
+                <para> Width
                 </para>
               </term>
               <description>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Documentation/en/System.Web.UI.WebControls/DataList.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Documentation/en/System.Web.UI.WebControls/DataList.xml
@@ -37,27 +37,27 @@
       <para>In this topic:</para>
       <list type="bullet">
         <item>
-          <para> <format type="text/html"><a href="#introduction">Introduction</a></format>
+          <para> <format type="text/html"><a href="#introduction">Introduction</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#templates">Templates</a></format>
+          <para> <format type="text/html"><a href="#templates">Templates</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#customizing_the_appearance_of_the_datalist_control">Customizing the Appearance of the DataList Control</a></format>
+          <para> <format type="text/html"><a href="#customizing_the_appearance_of_the_datalist_control">Customizing the Appearance of the DataList Control</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#display_direction_and_layout">Display Direction and Layout</a></format>
+          <para> <format type="text/html"><a href="#display_direction_and_layout">Display Direction and Layout</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#security">Security</a></format>
+          <para> <format type="text/html"><a href="#security">Security</a></format>
               </para>
         </item>
         <item>
-          <para> <format type="text/html"><a href="#declarative_syntax">Declarative Syntax</a></format>
+          <para> <format type="text/html"><a href="#declarative_syntax">Declarative Syntax</a></format>
               </para>
         </item>
       </list>
@@ -88,7 +88,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemTemplate" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemTemplate" />
                     </para>
           </term>
           <description>
@@ -97,7 +97,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemTemplate" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemTemplate" />
                     </para>
           </term>
           <description>
@@ -106,7 +106,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.FooterTemplate" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.FooterTemplate" />
                     </para>
           </term>
           <description>
@@ -115,7 +115,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.HeaderTemplate" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.HeaderTemplate" />
                     </para>
           </term>
           <description>
@@ -124,7 +124,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemTemplate" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemTemplate" />
                     </para>
           </term>
           <description>
@@ -133,7 +133,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemTemplate" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemTemplate" />
                     </para>
           </term>
           <description>
@@ -142,7 +142,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.SeparatorTemplate" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.SeparatorTemplate" />
                     </para>
           </term>
           <description>
@@ -171,7 +171,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
                     </para>
           </term>
           <description>
@@ -180,7 +180,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
                     </para>
           </term>
           <description>
@@ -189,7 +189,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.FooterStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.FooterStyle" />
                     </para>
           </term>
           <description>
@@ -198,7 +198,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.HeaderStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.HeaderStyle" />
                     </para>
           </term>
           <description>
@@ -207,7 +207,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
                     </para>
           </term>
           <description>
@@ -216,7 +216,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
                     </para>
           </term>
           <description>
@@ -225,7 +225,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.SeparatorStyle" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.SeparatorStyle" />
                     </para>
           </term>
           <description>
@@ -247,7 +247,7 @@
         </listheader>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.ShowFooter" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.ShowFooter" />
                     </para>
           </term>
           <description>
@@ -256,7 +256,7 @@
         </item>
         <item>
           <term>
-            <para> <see cref="P:System.Web.UI.WebControls.DataList.ShowHeader" />
+            <para> <see cref="P:System.Web.UI.WebControls.DataList.ShowHeader" />
                     </para>
           </term>
           <description>
@@ -436,7 +436,7 @@
                 <para>1 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
                 </para>
               </description>
             </item>
@@ -445,7 +445,7 @@
                 <para>2 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
                 </para>
               </description>
             </item>
@@ -454,7 +454,7 @@
                 <para>3 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
                 </para>
               </description>
             </item>
@@ -463,7 +463,7 @@
                 <para>4 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
                 </para>
               </description>
             </item>
@@ -472,7 +472,7 @@
                 <para>5 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
                 </para>
               </description>
             </item>
@@ -846,7 +846,7 @@
                 <para>1 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
                 </para>
               </description>
             </item>
@@ -855,7 +855,7 @@
                 <para>2 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
                 </para>
               </description>
             </item>
@@ -864,7 +864,7 @@
                 <para>3 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
                 </para>
               </description>
             </item>
@@ -873,7 +873,7 @@
                 <para>4 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
                 </para>
               </description>
             </item>
@@ -882,7 +882,7 @@
                 <para>5 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
                 </para>
               </description>
             </item>
@@ -1101,7 +1101,7 @@
             </listheader>
             <item>
               <term>
-                <para> <see cref="F:System.Web.UI.WebControls.GridLines.None" />
+                <para> <see cref="F:System.Web.UI.WebControls.GridLines.None" />
                 </para>
               </term>
               <description>
@@ -1110,7 +1110,7 @@
             </item>
             <item>
               <term>
-                <para> <see cref="F:System.Web.UI.WebControls.GridLines.Horizontal" />
+                <para> <see cref="F:System.Web.UI.WebControls.GridLines.Horizontal" />
                 </para>
               </term>
               <description>
@@ -1119,7 +1119,7 @@
             </item>
             <item>
               <term>
-                <para> <see cref="F:System.Web.UI.WebControls.GridLines.Vertical" />
+                <para> <see cref="F:System.Web.UI.WebControls.GridLines.Vertical" />
                 </para>
               </term>
               <description>
@@ -1128,7 +1128,7 @@
             </item>
             <item>
               <term>
-                <para> <see cref="F:System.Web.UI.WebControls.GridLines.Both" />
+                <para> <see cref="F:System.Web.UI.WebControls.GridLines.Both" />
                 </para>
               </term>
               <description>
@@ -1398,7 +1398,7 @@
                 <para>1 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
                 </para>
               </description>
             </item>
@@ -1407,7 +1407,7 @@
                 <para>2 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
                 </para>
               </description>
             </item>
@@ -1416,7 +1416,7 @@
                 <para>3 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
                 </para>
               </description>
             </item>
@@ -1425,7 +1425,7 @@
                 <para>4 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
                 </para>
               </description>
             </item>
@@ -1434,7 +1434,7 @@
                 <para>5 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
                 </para>
               </description>
             </item>
@@ -2159,7 +2159,7 @@
                 <para>1 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.EditItemStyle" />
                 </para>
               </description>
             </item>
@@ -2168,7 +2168,7 @@
                 <para>2 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.SelectedItemStyle" />
                 </para>
               </description>
             </item>
@@ -2177,7 +2177,7 @@
                 <para>3 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.AlternatingItemStyle" />
                 </para>
               </description>
             </item>
@@ -2186,7 +2186,7 @@
                 <para>4 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.DataList.ItemStyle" />
                 </para>
               </description>
             </item>
@@ -2195,7 +2195,7 @@
                 <para>5 </para>
               </term>
               <description>
-                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
+                <para> <see cref="P:System.Web.UI.WebControls.WebControl.ControlStyle" />
                 </para>
               </description>
             </item>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Documentation/en/System.Web.UI/MasterPage.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Documentation/en/System.Web.UI/MasterPage.xml
@@ -35,71 +35,71 @@
       <para>The directives that are valid on a master page are the same as those that are available on a <see cref="T:System.Web.UI.UserControl" /> object. They can include the following attributes: </para>
       <list type="bullet">
         <item>
-          <para> AutoEventWireup
+          <para> AutoEventWireup
               </para>
         </item>
         <item>
-          <para> ClassName
+          <para> ClassName
               </para>
         </item>
         <item>
-          <para> CodeFile
+          <para> CodeFile
               </para>
         </item>
         <item>
-          <para> CompilerMode
+          <para> CompilerMode
               </para>
         </item>
         <item>
-          <para> CompilerOptions
+          <para> CompilerOptions
               </para>
         </item>
         <item>
-          <para> Debug
+          <para> Debug
               </para>
         </item>
         <item>
-          <para> Description
+          <para> Description
               </para>
         </item>
         <item>
-          <para> EnableTheming
+          <para> EnableTheming
               </para>
         </item>
         <item>
-          <para> EnableViewState
+          <para> EnableViewState
               </para>
         </item>
         <item>
-          <para> Explicit
+          <para> Explicit
               </para>
         </item>
         <item>
-          <para> Inherits
+          <para> Inherits
               </para>
         </item>
         <item>
-          <para> Language
+          <para> Language
               </para>
         </item>
         <item>
-          <para> LinePragmas
+          <para> LinePragmas
               </para>
         </item>
         <item>
-          <para> MasterPageFile
+          <para> MasterPageFile
               </para>
         </item>
         <item>
-          <para> Src
+          <para> Src
               </para>
         </item>
         <item>
-          <para> Strict
+          <para> Strict
               </para>
         </item>
         <item>
-          <para> WarningLevel
+          <para> WarningLevel
               </para>
         </item>
       </list>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Documentation/en/System.Web/HttpApplication.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Documentation/en/System.Web/HttpApplication.xml
@@ -37,70 +37,70 @@
       <para>The application events are raised in the following order:</para>
       <list type="ordered">
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.BeginRequest" />
+          <para> <see cref="E:System.Web.HttpApplication.BeginRequest" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.AuthenticateRequest" />
+          <para> <see cref="E:System.Web.HttpApplication.AuthenticateRequest" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostAuthenticateRequest" />
+          <para> <see cref="E:System.Web.HttpApplication.PostAuthenticateRequest" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.AuthorizeRequest" />
+          <para> <see cref="E:System.Web.HttpApplication.AuthorizeRequest" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostAuthorizeRequest" />
+          <para> <see cref="E:System.Web.HttpApplication.PostAuthorizeRequest" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.ResolveRequestCache" />
+          <para> <see cref="E:System.Web.HttpApplication.ResolveRequestCache" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostResolveRequestCache" />
+          <para> <see cref="E:System.Web.HttpApplication.PostResolveRequestCache" />
               </para>
           <para>After the <see cref="E:System.Web.HttpApplication.PostResolveRequestCache" /> event and before the <see cref="E:System.Web.HttpApplication.PostMapRequestHandler" /> event, an event handler (which is a page that corresponds to the request URL) is created. When a server is running IIS 7.0 in Integrated mode and at least the .NET Framework version 3.0, the <see cref="E:System.Web.HttpApplication.MapRequestHandler" /> event is raised. When a server is running IIS 7.0 in Classic mode or an earlier version of IIS, this event cannot be handled.</para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostMapRequestHandler" />
+          <para> <see cref="E:System.Web.HttpApplication.PostMapRequestHandler" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.AcquireRequestState" />
+          <para> <see cref="E:System.Web.HttpApplication.AcquireRequestState" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostAcquireRequestState" />
+          <para> <see cref="E:System.Web.HttpApplication.PostAcquireRequestState" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PreRequestHandlerExecute" />
+          <para> <see cref="E:System.Web.HttpApplication.PreRequestHandlerExecute" />
               </para>
           <para>The event handler is executed.</para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostRequestHandlerExecute" />
+          <para> <see cref="E:System.Web.HttpApplication.PostRequestHandlerExecute" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.ReleaseRequestState" />
+          <para> <see cref="E:System.Web.HttpApplication.ReleaseRequestState" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostReleaseRequestState" />
+          <para> <see cref="E:System.Web.HttpApplication.PostReleaseRequestState" />
               </para>
           <para>After the <see cref="E:System.Web.HttpApplication.PostReleaseRequestState" /> event is raised, any existing response filters will filter the output.</para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.UpdateRequestCache" />
+          <para> <see cref="E:System.Web.HttpApplication.UpdateRequestCache" />
               </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostUpdateRequestCache" />
+          <para> <see cref="E:System.Web.HttpApplication.PostUpdateRequestCache" />
               </para>
         </item>
         <item>
@@ -108,12 +108,12 @@
           <para>This event is supported in IIS 7.0 Integrated mode and at least the .NET Framework 3.0 </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.PostLogRequest" />
+          <para> <see cref="E:System.Web.HttpApplication.PostLogRequest" />
               </para>
           <para>This event is supported IIS 7.0 Integrated mode and at least the .NET Framework 3.0 </para>
         </item>
         <item>
-          <para> <see cref="E:System.Web.HttpApplication.EndRequest" />
+          <para> <see cref="E:System.Web.HttpApplication.EndRequest" />
               </para>
         </item>
       </list>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Test/mainsoft/NunitWebResources/App_GlobalResources/Common.fr-FR.resx
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Test/mainsoft/NunitWebResources/App_GlobalResources/Common.fr-FR.resx
@@ -1,165 +1,165 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="AdvancedParameters" xml:space="preserve">
-    <value>Paramètres avancés</value>
-  </data>
-  <data name="Anonymous" xml:space="preserve">
-    <value>Anonyme</value>
-  </data>
-  <data name="Authorizations" xml:space="preserve">
-    <value>Autorisations</value>
-  </data>
-  <data name="Cache" xml:space="preserve">
-    <value>Cache</value>
-  </data>
-  <data name="Close" xml:space="preserve">
-    <value>Fermer</value>
-  </data>
-  <data name="Display" xml:space="preserve">
-    <value>Affichage</value>
-  </data>
-  <data name="General" xml:space="preserve">
-    <value>Général</value>
-  </data>
-  <data name="Home" xml:space="preserve">
-    <value>Accueil</value>
-  </data>
-  <data name="Loading" xml:space="preserve">
-    <value>Chargement...</value>
-  </data>
-  <data name="Password" xml:space="preserve">
-    <value>Mot de passe</value>
-  </data>
-  <data name="Preferences" xml:space="preserve">
-    <value>Préférences</value>
-  </data>
-  <data name="Reload" xml:space="preserve">
-    <value>Recharger</value>
-  </data>
-  <data name="Save" xml:space="preserve">
-    <value>Enregistrer</value>
-  </data>
-  <data name="User" xml:space="preserve">
-    <value>Utilisateur</value>
-  </data>
-  <data name="Users" xml:space="preserve">
-    <value>Utilisateurs</value>
-  </data>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="AdvancedParameters" xml:space="preserve">
+    <value>Paramètres avancés</value>
+  </data>
+  <data name="Anonymous" xml:space="preserve">
+    <value>Anonyme</value>
+  </data>
+  <data name="Authorizations" xml:space="preserve">
+    <value>Autorisations</value>
+  </data>
+  <data name="Cache" xml:space="preserve">
+    <value>Cache</value>
+  </data>
+  <data name="Close" xml:space="preserve">
+    <value>Fermer</value>
+  </data>
+  <data name="Display" xml:space="preserve">
+    <value>Affichage</value>
+  </data>
+  <data name="General" xml:space="preserve">
+    <value>Général</value>
+  </data>
+  <data name="Home" xml:space="preserve">
+    <value>Accueil</value>
+  </data>
+  <data name="Loading" xml:space="preserve">
+    <value>Chargement...</value>
+  </data>
+  <data name="Password" xml:space="preserve">
+    <value>Mot de passe</value>
+  </data>
+  <data name="Preferences" xml:space="preserve">
+    <value>Préférences</value>
+  </data>
+  <data name="Reload" xml:space="preserve">
+    <value>Recharger</value>
+  </data>
+  <data name="Save" xml:space="preserve">
+    <value>Enregistrer</value>
+  </data>
+  <data name="User" xml:space="preserve">
+    <value>Utilisateur</value>
+  </data>
+  <data name="Users" xml:space="preserve">
+    <value>Utilisateurs</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Test/mainsoft/NunitWebResources/App_GlobalResources/Common.resx
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Test/mainsoft/NunitWebResources/App_GlobalResources/Common.resx
@@ -1,165 +1,165 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="AdvancedParameters" xml:space="preserve">
-    <value>Advanced parameters</value>
-  </data>
-  <data name="Anonymous" xml:space="preserve">
-    <value>Anonymous</value>
-  </data>
-  <data name="Authorizations" xml:space="preserve">
-    <value>Authorizations</value>
-  </data>
-  <data name="Cache" xml:space="preserve">
-    <value>Cache</value>
-  </data>
-  <data name="Close" xml:space="preserve">
-    <value>Close</value>
-  </data>
-  <data name="Display" xml:space="preserve">
-    <value>Display</value>
-  </data>
-  <data name="General" xml:space="preserve">
-    <value>Général</value>
-  </data>
-  <data name="Home" xml:space="preserve">
-    <value>Home</value>
-  </data>
-  <data name="Loading" xml:space="preserve">
-    <value>Loading...</value>
-  </data>
-  <data name="Password" xml:space="preserve">
-    <value>Password</value>
-  </data>
-  <data name="Preferences" xml:space="preserve">
-    <value>Preferences</value>
-  </data>
-  <data name="Reload" xml:space="preserve">
-    <value>Reload</value>
-  </data>
-  <data name="Save" xml:space="preserve">
-    <value>Save</value>
-  </data>
-  <data name="User" xml:space="preserve">
-    <value>User</value>
-  </data>
-  <data name="Users" xml:space="preserve">
-    <value>Users</value>
-  </data>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="AdvancedParameters" xml:space="preserve">
+    <value>Advanced parameters</value>
+  </data>
+  <data name="Anonymous" xml:space="preserve">
+    <value>Anonymous</value>
+  </data>
+  <data name="Authorizations" xml:space="preserve">
+    <value>Authorizations</value>
+  </data>
+  <data name="Cache" xml:space="preserve">
+    <value>Cache</value>
+  </data>
+  <data name="Close" xml:space="preserve">
+    <value>Close</value>
+  </data>
+  <data name="Display" xml:space="preserve">
+    <value>Display</value>
+  </data>
+  <data name="General" xml:space="preserve">
+    <value>Général</value>
+  </data>
+  <data name="Home" xml:space="preserve">
+    <value>Home</value>
+  </data>
+  <data name="Loading" xml:space="preserve">
+    <value>Loading...</value>
+  </data>
+  <data name="Password" xml:space="preserve">
+    <value>Password</value>
+  </data>
+  <data name="Preferences" xml:space="preserve">
+    <value>Preferences</value>
+  </data>
+  <data name="Reload" xml:space="preserve">
+    <value>Reload</value>
+  </data>
+  <data name="Save" xml:space="preserve">
+    <value>Save</value>
+  </data>
+  <data name="User" xml:space="preserve">
+    <value>User</value>
+  </data>
+  <data name="Users" xml:space="preserve">
+    <value>Users</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Test/mainsoft/NunitWebResources/NoDoubleOnInitOnRemoveAdd.aspx
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Test/mainsoft/NunitWebResources/NoDoubleOnInitOnRemoveAdd.aspx
@@ -1,13 +1,13 @@
-﻿<%@ Page Language="C#" AutoEventWireup="true"  Src="NoDoubleOnInitOnRemoveAdd.aspx.cs" Inherits="_Bug471305_Default" %>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" >
-<head runat="server">
-    <title>Bug #471305</title>
-</head>
-<body>
-    <form id="form1" runat="server">
-    </form>
-</body>
-</html>
+﻿<%@ Page Language="C#" AutoEventWireup="true"  Src="NoDoubleOnInitOnRemoveAdd.aspx.cs" Inherits="_Bug471305_Default" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head runat="server">
+    <title>Bug #471305</title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    </form>
+</body>
+</html>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Web/Test/mainsoft/NunitWebResources/NoDoubleOnInitOnRemoveAdd.aspx.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Web/Test/mainsoft/NunitWebResources/NoDoubleOnInitOnRemoveAdd.aspx.cs
@@ -1,32 +1,32 @@
-using System;
-using System.Data;
-using System.Configuration;
-using System.Web;
-using System.Web.Security;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-using System.Web.UI.WebControls.WebParts;
-using System.Web.UI.HtmlControls;
-
-public partial class _Bug471305_Default : System.Web.UI.Page 
-{
-    public class CustomControl : Control
-    {
-        protected override void OnInit(EventArgs e)
-        {
-            Label label = new Label();
-            label.Text = "label";
-            Controls.Add(label);
-
-            base.OnInit(e);
-        }
-    }
-
-    protected void Page_Load(object sender, EventArgs e)
-    {
-        CustomControl ctrl = new CustomControl();
-        Form.Controls.Add(ctrl);
-        Form.Controls.Remove(ctrl);
-        Form.Controls.Add(ctrl);
-    }
-}
+using System;
+using System.Data;
+using System.Configuration;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+public partial class _Bug471305_Default : System.Web.UI.Page 
+{
+    public class CustomControl : Control
+    {
+        protected override void OnInit(EventArgs e)
+        {
+            Label label = new Label();
+            label.Text = "label";
+            Controls.Add(label);
+
+            base.OnInit(e);
+        }
+    }
+
+    protected void Page_Load(object sender, EventArgs e)
+    {
+        CustomControl ctrl = new CustomControl();
+        Form.Controls.Add(ctrl);
+        Form.Controls.Remove(ctrl);
+        Form.Controls.Add(ctrl);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.dll.sources
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.dll.sources
@@ -1,139 +1,139 @@
-../../build/common/Consts.cs
-../../build/common/MonoTODOAttribute.cs
-Assembly/AssemblyInfo.cs
-System.Windows.Forms.DataVisualization.Charting/AnnotationPathPoint.cs
-System.Windows.Forms.DataVisualization.Charting/AnnotationPathPointCollection.cs
-System.Windows.Forms.DataVisualization.Charting/Annotation.cs
-System.Windows.Forms.DataVisualization.Charting/AnnotationCollection.cs
-System.Windows.Forms.DataVisualization.Charting/AnnotationGroup.cs
-System.Windows.Forms.DataVisualization.Charting/AnnotationPositionChangingEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/AnnotationSmartLabelStyle.cs
-System.Windows.Forms.DataVisualization.Charting/AnovaResult.cs
-System.Windows.Forms.DataVisualization.Charting/AntiAliasingStyles.cs
-System.Windows.Forms.DataVisualization.Charting/AreaAlignmentOrientations.cs
-System.Windows.Forms.DataVisualization.Charting/AreaAlignmentStyles.cs
-System.Windows.Forms.DataVisualization.Charting/ArrowAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/ArrowStyle.cs
-System.Windows.Forms.DataVisualization.Charting/Axis.cs
-System.Windows.Forms.DataVisualization.Charting/AxisArrowStyle.cs
-System.Windows.Forms.DataVisualization.Charting/AxisEnabled.cs
-System.Windows.Forms.DataVisualization.Charting/AxisName.cs
-System.Windows.Forms.DataVisualization.Charting/AxisScaleBreakStyle.cs
-System.Windows.Forms.DataVisualization.Charting/AxisScaleView.cs
-System.Windows.Forms.DataVisualization.Charting/AxisScrollBar.cs
-System.Windows.Forms.DataVisualization.Charting/AxisType.cs
-System.Windows.Forms.DataVisualization.Charting/Border3DAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/BorderSkin.cs
-System.Windows.Forms.DataVisualization.Charting/BorderSkinStyle.cs
-System.Windows.Forms.DataVisualization.Charting/BreakLineStyle.cs
-System.Windows.Forms.DataVisualization.Charting/CalloutAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/CalloutStyle.cs
-System.Windows.Forms.DataVisualization.Charting/Chart.cs
-System.Windows.Forms.DataVisualization.Charting/ChartArea.cs
-System.Windows.Forms.DataVisualization.Charting/ChartArea3DStyle.cs
-System.Windows.Forms.DataVisualization.Charting/ChartAreaCollection.cs
-System.Windows.Forms.DataVisualization.Charting/ChartColorPalette.cs
-System.Windows.Forms.DataVisualization.Charting/ChartDashStyle.cs
-System.Windows.Forms.DataVisualization.Charting/ChartElement.cs
-System.Windows.Forms.DataVisualization.Charting/ChartElementCollection.cs
-System.Windows.Forms.DataVisualization.Charting/ChartElementType.cs
-System.Windows.Forms.DataVisualization.Charting/ChartGraphics.cs
-System.Windows.Forms.DataVisualization.Charting/ChartHatchStyle.cs
-System.Windows.Forms.DataVisualization.Charting/ChartImageAlignmentStyle.cs
-System.Windows.Forms.DataVisualization.Charting/ChartImageFormat.cs
-System.Windows.Forms.DataVisualization.Charting/ChartImageWrapMode.cs
-System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs
-System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs
-System.Windows.Forms.DataVisualization.Charting/ChartPaintEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/ChartSerializer.cs
-System.Windows.Forms.DataVisualization.Charting/ChartValueType.cs
-System.Windows.Forms.DataVisualization.Charting/Cursor.cs
-System.Windows.Forms.DataVisualization.Charting/CursorEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/CustomizeLegendEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/CustomLabel.cs
-System.Windows.Forms.DataVisualization.Charting/CustomLabelCollection.cs
-System.Windows.Forms.DataVisualization.Charting/CustomProperties.cs
-System.Windows.Forms.DataVisualization.Charting/CompareMethod.cs
-System.Windows.Forms.DataVisualization.Charting/DataFormula.cs
-System.Windows.Forms.DataVisualization.Charting/DataManipulator.cs
-System.Windows.Forms.DataVisualization.Charting/DataPoint.cs
-System.Windows.Forms.DataVisualization.Charting/DataPointCollection.cs
-System.Windows.Forms.DataVisualization.Charting/DataPointCustomProperties.cs
-System.Windows.Forms.DataVisualization.Charting/DateRangeType.cs
-System.Windows.Forms.DataVisualization.Charting/DateTimeIntervalType.cs
-System.Windows.Forms.DataVisualization.Charting/Docking.cs
-System.Windows.Forms.DataVisualization.Charting/ElementPosition.cs
-System.Windows.Forms.DataVisualization.Charting/EllipseAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/FinancialFormula.cs
-System.Windows.Forms.DataVisualization.Charting/FTestResult.cs
-System.Windows.Forms.DataVisualization.Charting/FormatNumberEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/GradientStyle.cs
-System.Windows.Forms.DataVisualization.Charting/Grid.cs
-System.Windows.Forms.DataVisualization.Charting/GridTickTypes.cs
-System.Windows.Forms.DataVisualization.Charting/HitTestResult.cs
-System.Windows.Forms.DataVisualization.Charting/HorizontalLineAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/IDataPointFilter.cs
-System.Windows.Forms.DataVisualization.Charting/ImageAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/IntervalAutoMode.cs
-System.Windows.Forms.DataVisualization.Charting/IntervalType.cs
-System.Windows.Forms.DataVisualization.Charting/LabelAlignmentStyles.cs
-System.Windows.Forms.DataVisualization.Charting/LabelAutoFitStyles.cs
-System.Windows.Forms.DataVisualization.Charting/LabelCalloutStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LabelMarkStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LabelOutsidePlotAreaStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LabelStyle.cs
-System.Windows.Forms.DataVisualization.Charting/Legend.cs
-System.Windows.Forms.DataVisualization.Charting/LegendCell.cs
-System.Windows.Forms.DataVisualization.Charting/LegendCellCollection.cs
-System.Windows.Forms.DataVisualization.Charting/LegendCellColumn.cs
-System.Windows.Forms.DataVisualization.Charting/LegendCellColumnCollection.cs
-System.Windows.Forms.DataVisualization.Charting/LegendCellColumnType.cs
-System.Windows.Forms.DataVisualization.Charting/LegendCellType.cs
-System.Windows.Forms.DataVisualization.Charting/LegendCollection.cs
-System.Windows.Forms.DataVisualization.Charting/LegendImageStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LegendItem.cs
-System.Windows.Forms.DataVisualization.Charting/LegendItemOrder.cs
-System.Windows.Forms.DataVisualization.Charting/LegendItemsCollection.cs
-System.Windows.Forms.DataVisualization.Charting/LegendSeparatorStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LegendStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LegendTableStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LightStyle.cs
-System.Windows.Forms.DataVisualization.Charting/LineAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/LineAnchorCapStyle.cs
-System.Windows.Forms.DataVisualization.Charting/Margins.cs
-System.Windows.Forms.DataVisualization.Charting/MarkerStyle.cs
-System.Windows.Forms.DataVisualization.Charting/NamedImage.cs
-System.Windows.Forms.DataVisualization.Charting/NamedImagesCollection.cs
-System.Windows.Forms.DataVisualization.Charting/PointSortOrder.cs
-System.Windows.Forms.DataVisualization.Charting/Point3D.cs
-System.Windows.Forms.DataVisualization.Charting/PolygonAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/PolylineAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/PrintingManager.cs
-System.Windows.Forms.DataVisualization.Charting/RectangleAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonStyles.cs
-System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonType.cs
-System.Windows.Forms.DataVisualization.Charting/ScrollBarEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/ScrollType.cs
-System.Windows.Forms.DataVisualization.Charting/SerializationContents.cs
-System.Windows.Forms.DataVisualization.Charting/SerializationFormat.cs
-System.Windows.Forms.DataVisualization.Charting/Series.cs
-System.Windows.Forms.DataVisualization.Charting/SeriesChartType.cs
-System.Windows.Forms.DataVisualization.Charting/SeriesCollection.cs
-System.Windows.Forms.DataVisualization.Charting/SmartLabelStyle.cs
-System.Windows.Forms.DataVisualization.Charting/StatisticFormula.cs
-System.Windows.Forms.DataVisualization.Charting/StripLine.cs
-System.Windows.Forms.DataVisualization.Charting/StripLinesCollection.cs
-System.Windows.Forms.DataVisualization.Charting/StartFromZero.cs
-System.Windows.Forms.DataVisualization.Charting/TextAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/TextAntiAliasingQuality.cs
-System.Windows.Forms.DataVisualization.Charting/TextOrientation.cs
-System.Windows.Forms.DataVisualization.Charting/TextStyle.cs
-System.Windows.Forms.DataVisualization.Charting/TickMark.cs
-System.Windows.Forms.DataVisualization.Charting/TickMarkStyle.cs
-System.Windows.Forms.DataVisualization.Charting/Title.cs
-System.Windows.Forms.DataVisualization.Charting/TitleCollection.cs
-System.Windows.Forms.DataVisualization.Charting/ToolTipEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/TTestResult.cs
-System.Windows.Forms.DataVisualization.Charting/VerticalLineAnnotation.cs
-System.Windows.Forms.DataVisualization.Charting/ViewEventArgs.cs
-System.Windows.Forms.DataVisualization.Charting/ZTestResult.cs
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+Assembly/AssemblyInfo.cs
+System.Windows.Forms.DataVisualization.Charting/AnnotationPathPoint.cs
+System.Windows.Forms.DataVisualization.Charting/AnnotationPathPointCollection.cs
+System.Windows.Forms.DataVisualization.Charting/Annotation.cs
+System.Windows.Forms.DataVisualization.Charting/AnnotationCollection.cs
+System.Windows.Forms.DataVisualization.Charting/AnnotationGroup.cs
+System.Windows.Forms.DataVisualization.Charting/AnnotationPositionChangingEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/AnnotationSmartLabelStyle.cs
+System.Windows.Forms.DataVisualization.Charting/AnovaResult.cs
+System.Windows.Forms.DataVisualization.Charting/AntiAliasingStyles.cs
+System.Windows.Forms.DataVisualization.Charting/AreaAlignmentOrientations.cs
+System.Windows.Forms.DataVisualization.Charting/AreaAlignmentStyles.cs
+System.Windows.Forms.DataVisualization.Charting/ArrowAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/ArrowStyle.cs
+System.Windows.Forms.DataVisualization.Charting/Axis.cs
+System.Windows.Forms.DataVisualization.Charting/AxisArrowStyle.cs
+System.Windows.Forms.DataVisualization.Charting/AxisEnabled.cs
+System.Windows.Forms.DataVisualization.Charting/AxisName.cs
+System.Windows.Forms.DataVisualization.Charting/AxisScaleBreakStyle.cs
+System.Windows.Forms.DataVisualization.Charting/AxisScaleView.cs
+System.Windows.Forms.DataVisualization.Charting/AxisScrollBar.cs
+System.Windows.Forms.DataVisualization.Charting/AxisType.cs
+System.Windows.Forms.DataVisualization.Charting/Border3DAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/BorderSkin.cs
+System.Windows.Forms.DataVisualization.Charting/BorderSkinStyle.cs
+System.Windows.Forms.DataVisualization.Charting/BreakLineStyle.cs
+System.Windows.Forms.DataVisualization.Charting/CalloutAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/CalloutStyle.cs
+System.Windows.Forms.DataVisualization.Charting/Chart.cs
+System.Windows.Forms.DataVisualization.Charting/ChartArea.cs
+System.Windows.Forms.DataVisualization.Charting/ChartArea3DStyle.cs
+System.Windows.Forms.DataVisualization.Charting/ChartAreaCollection.cs
+System.Windows.Forms.DataVisualization.Charting/ChartColorPalette.cs
+System.Windows.Forms.DataVisualization.Charting/ChartDashStyle.cs
+System.Windows.Forms.DataVisualization.Charting/ChartElement.cs
+System.Windows.Forms.DataVisualization.Charting/ChartElementCollection.cs
+System.Windows.Forms.DataVisualization.Charting/ChartElementType.cs
+System.Windows.Forms.DataVisualization.Charting/ChartGraphics.cs
+System.Windows.Forms.DataVisualization.Charting/ChartHatchStyle.cs
+System.Windows.Forms.DataVisualization.Charting/ChartImageAlignmentStyle.cs
+System.Windows.Forms.DataVisualization.Charting/ChartImageFormat.cs
+System.Windows.Forms.DataVisualization.Charting/ChartImageWrapMode.cs
+System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs
+System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs
+System.Windows.Forms.DataVisualization.Charting/ChartPaintEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/ChartSerializer.cs
+System.Windows.Forms.DataVisualization.Charting/ChartValueType.cs
+System.Windows.Forms.DataVisualization.Charting/Cursor.cs
+System.Windows.Forms.DataVisualization.Charting/CursorEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/CustomizeLegendEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/CustomLabel.cs
+System.Windows.Forms.DataVisualization.Charting/CustomLabelCollection.cs
+System.Windows.Forms.DataVisualization.Charting/CustomProperties.cs
+System.Windows.Forms.DataVisualization.Charting/CompareMethod.cs
+System.Windows.Forms.DataVisualization.Charting/DataFormula.cs
+System.Windows.Forms.DataVisualization.Charting/DataManipulator.cs
+System.Windows.Forms.DataVisualization.Charting/DataPoint.cs
+System.Windows.Forms.DataVisualization.Charting/DataPointCollection.cs
+System.Windows.Forms.DataVisualization.Charting/DataPointCustomProperties.cs
+System.Windows.Forms.DataVisualization.Charting/DateRangeType.cs
+System.Windows.Forms.DataVisualization.Charting/DateTimeIntervalType.cs
+System.Windows.Forms.DataVisualization.Charting/Docking.cs
+System.Windows.Forms.DataVisualization.Charting/ElementPosition.cs
+System.Windows.Forms.DataVisualization.Charting/EllipseAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/FinancialFormula.cs
+System.Windows.Forms.DataVisualization.Charting/FTestResult.cs
+System.Windows.Forms.DataVisualization.Charting/FormatNumberEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/GradientStyle.cs
+System.Windows.Forms.DataVisualization.Charting/Grid.cs
+System.Windows.Forms.DataVisualization.Charting/GridTickTypes.cs
+System.Windows.Forms.DataVisualization.Charting/HitTestResult.cs
+System.Windows.Forms.DataVisualization.Charting/HorizontalLineAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/IDataPointFilter.cs
+System.Windows.Forms.DataVisualization.Charting/ImageAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/IntervalAutoMode.cs
+System.Windows.Forms.DataVisualization.Charting/IntervalType.cs
+System.Windows.Forms.DataVisualization.Charting/LabelAlignmentStyles.cs
+System.Windows.Forms.DataVisualization.Charting/LabelAutoFitStyles.cs
+System.Windows.Forms.DataVisualization.Charting/LabelCalloutStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LabelMarkStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LabelOutsidePlotAreaStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LabelStyle.cs
+System.Windows.Forms.DataVisualization.Charting/Legend.cs
+System.Windows.Forms.DataVisualization.Charting/LegendCell.cs
+System.Windows.Forms.DataVisualization.Charting/LegendCellCollection.cs
+System.Windows.Forms.DataVisualization.Charting/LegendCellColumn.cs
+System.Windows.Forms.DataVisualization.Charting/LegendCellColumnCollection.cs
+System.Windows.Forms.DataVisualization.Charting/LegendCellColumnType.cs
+System.Windows.Forms.DataVisualization.Charting/LegendCellType.cs
+System.Windows.Forms.DataVisualization.Charting/LegendCollection.cs
+System.Windows.Forms.DataVisualization.Charting/LegendImageStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LegendItem.cs
+System.Windows.Forms.DataVisualization.Charting/LegendItemOrder.cs
+System.Windows.Forms.DataVisualization.Charting/LegendItemsCollection.cs
+System.Windows.Forms.DataVisualization.Charting/LegendSeparatorStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LegendStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LegendTableStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LightStyle.cs
+System.Windows.Forms.DataVisualization.Charting/LineAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/LineAnchorCapStyle.cs
+System.Windows.Forms.DataVisualization.Charting/Margins.cs
+System.Windows.Forms.DataVisualization.Charting/MarkerStyle.cs
+System.Windows.Forms.DataVisualization.Charting/NamedImage.cs
+System.Windows.Forms.DataVisualization.Charting/NamedImagesCollection.cs
+System.Windows.Forms.DataVisualization.Charting/PointSortOrder.cs
+System.Windows.Forms.DataVisualization.Charting/Point3D.cs
+System.Windows.Forms.DataVisualization.Charting/PolygonAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/PolylineAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/PrintingManager.cs
+System.Windows.Forms.DataVisualization.Charting/RectangleAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonStyles.cs
+System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonType.cs
+System.Windows.Forms.DataVisualization.Charting/ScrollBarEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/ScrollType.cs
+System.Windows.Forms.DataVisualization.Charting/SerializationContents.cs
+System.Windows.Forms.DataVisualization.Charting/SerializationFormat.cs
+System.Windows.Forms.DataVisualization.Charting/Series.cs
+System.Windows.Forms.DataVisualization.Charting/SeriesChartType.cs
+System.Windows.Forms.DataVisualization.Charting/SeriesCollection.cs
+System.Windows.Forms.DataVisualization.Charting/SmartLabelStyle.cs
+System.Windows.Forms.DataVisualization.Charting/StatisticFormula.cs
+System.Windows.Forms.DataVisualization.Charting/StripLine.cs
+System.Windows.Forms.DataVisualization.Charting/StripLinesCollection.cs
+System.Windows.Forms.DataVisualization.Charting/StartFromZero.cs
+System.Windows.Forms.DataVisualization.Charting/TextAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/TextAntiAliasingQuality.cs
+System.Windows.Forms.DataVisualization.Charting/TextOrientation.cs
+System.Windows.Forms.DataVisualization.Charting/TextStyle.cs
+System.Windows.Forms.DataVisualization.Charting/TickMark.cs
+System.Windows.Forms.DataVisualization.Charting/TickMarkStyle.cs
+System.Windows.Forms.DataVisualization.Charting/Title.cs
+System.Windows.Forms.DataVisualization.Charting/TitleCollection.cs
+System.Windows.Forms.DataVisualization.Charting/ToolTipEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/TTestResult.cs
+System.Windows.Forms.DataVisualization.Charting/VerticalLineAnnotation.cs
+System.Windows.Forms.DataVisualization.Charting/ViewEventArgs.cs
+System.Windows.Forms.DataVisualization.Charting/ZTestResult.cs
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Documentation/System.Windows.Forms.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Documentation/System.Windows.Forms.xml
@@ -1,29449 +1,29449 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Windows.Forms">
-    <class name="ResXFileRef" namespace="System.Resources">
-        <class name="Converter" namespace="System.Resources">
-            <constructor name="Converter" argnames="" />
-            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="Converter(System.String, System.String)" argnames="fileName, typeName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Converter" namespace="System.Resources">
-        <constructor name="Converter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ResXResourceReader" namespace="System.Resources">
-        <constructor name="ResXResourceReader(System.String)" argnames="fileName" />
-        <constructor name="ResXResourceReader(System.IO.Stream)" argnames="stream" />
-        <constructor name="ResXResourceReader(System.IO.TextReader)" argnames="reader" />
-        <constructor name="ResXResourceReader(System.String, System.ComponentModel.Design.ITypeResolutionService)" argnames="fileName, typeResolver" />
-        <constructor name="ResXResourceReader(System.IO.Stream, System.ComponentModel.Design.ITypeResolutionService)" argnames="stream, typeResolver" />
-        <constructor name="ResXResourceReader(System.IO.TextReader, System.ComponentModel.Design.ITypeResolutionService)" argnames="reader, typeResolver" />
-        <property name="ResData" propertytype="System.Collections.IDictionary" />
-        <property name="TypeResolver" propertytype="System.ComponentModel.Design.ITypeResolutionService" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromFileContents(System.String)" argnames="fileContents" returntype="System.Resources.ResXResourceReader" />
-        <method name="FromFileContents(System.String, System.ComponentModel.Design.ITypeResolutionService)" argnames="fileContents, typeResolver" returntype="System.Resources.ResXResourceReader" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ResXResourceSet" namespace="System.Resources">
-        <constructor name="ResXResourceSet(System.String)" argnames="fileName" />
-        <constructor name="ResXResourceSet(System.IO.Stream)" argnames="stream" />
-        <field name="Reader" inherited="System.Resources.ResourceSet" />
-        <field name="Table" inherited="System.Resources.ResourceSet" />
-        <method name="Dispose" argnames="" inherited="System.Resources.ResourceSet" returntype="System.Void" />
-        <method name="ReadResources" argnames="" inherited="System.Resources.ResourceSet" returntype="System.Void" />
-        <method name="GetObject(System.String, System.Boolean)" argnames="name, ignoreCase" inherited="System.Resources.ResourceSet" returntype="System.Object" />
-        <method name="GetObject(System.String)" argnames="name" inherited="System.Resources.ResourceSet" returntype="System.Object" />
-        <method name="GetString(System.String, System.Boolean)" argnames="name, ignoreCase" inherited="System.Resources.ResourceSet" returntype="System.String" />
-        <method name="GetString(System.String)" argnames="name" inherited="System.Resources.ResourceSet" returntype="System.String" />
-        <method name="GetDefaultWriter" argnames="" returntype="System.Type" />
-        <method name="GetDefaultReader" argnames="" returntype="System.Type" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Resources.ResourceSet" returntype="System.Void" />
-        <method name="Close" argnames="" inherited="System.Resources.ResourceSet" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ResXResourceWriter" namespace="System.Resources">
-        <constructor name="ResXResourceWriter(System.String)" argnames="fileName" />
-        <constructor name="ResXResourceWriter(System.IO.Stream)" argnames="stream" />
-        <constructor name="ResXResourceWriter(System.IO.TextWriter)" argnames="textWriter" />
-        <field name="BinSerializedObjectMimeType" />
-        <field name="SoapSerializedObjectMimeType" />
-        <field name="DefaultSerializedObjectMimeType" />
-        <field name="ByteArraySerializedObjectMimeType" />
-        <field name="ResMimeType" />
-        <field name="Version" />
-        <field name="ResourceSchema" />
-        <property name="Writer" propertytype="System.Xml.XmlWriter" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Generate" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="AddResource(System.String, System.Byte[])" argnames="name, value" returntype="System.Void" />
-        <method name="AddResource(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
-        <method name="AddResource(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OCPFIPARAMS" namespace="System.Windows.Forms">
-        <constructor name="OCPFIPARAMS" argnames="" />
-        <field name="cbSizeOfStruct" />
-        <field name="hwndOwner" />
-        <field name="x" />
-        <field name="y" />
-        <field name="lpszCaption" />
-        <field name="cObjects" />
-        <field name="ppUnk" />
-        <field name="pageCount" />
-        <field name="uuid" />
-        <field name="lcid" />
-        <field name="dispidInitial" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SMsoComponentManager" namespace="System.Windows.Forms">
-        <constructor name="SMsoComponentManager" argnames="" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComStreamFromDataStream" namespace="System.Windows.Forms">
-        <constructor name="ComStreamFromDataStream(System.IO.Stream)" argnames="dataStream" />
-        <constructor name="ComStreamFromDataStream" argnames="" />
-        <field name="dataStream" />
-        <method name="Clone" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
-        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pstatstg, grfStatFlag" returntype="System.Void" />
-        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="Revert" argnames="" returntype="System.Void" />
-        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
-        <method name="CopyTo(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
-        <method name="SetSize(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.Int32)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, length" returntype="System.Int32" />
-        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, length" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetDataStream" argnames="" returntype="System.IO.Stream" />
-        <method name="EFail(System.String)" argnames="msg" returntype="System.Runtime.InteropServices.ExternalException" />
-        <method name="NotImplemented" argnames="" returntype="System.Void" />
-        <method name="Read(System.Byte[], System.Int32)" argnames="buffer, length" returntype="System.Int32" />
-        <method name="Write(System.Byte[], System.Int32)" argnames="buffer, length" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagQACONTAINER" namespace="System.Windows.Forms">
-        <constructor name="tagQACONTAINER" argnames="" />
-        <field name="cbSize" />
-        <field name="pClientSite" />
-        <field name="pAdviseSink" />
-        <field name="pPropertyNotifySink" />
-        <field name="pUnkEventSink" />
-        <field name="dwAmbientFlags" />
-        <field name="colorFore" />
-        <field name="colorBack" />
-        <field name="pFont" />
-        <field name="pUndoMgr" />
-        <field name="dwAppearance" />
-        <field name="lcid" />
-        <field name="hpal" />
-        <field name="pBindHost" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagQACONTROL" namespace="System.Windows.Forms">
-        <constructor name="tagQACONTROL" argnames="" />
-        <field name="cbSize" />
-        <field name="dwMiscStatus" />
-        <field name="dwViewStatus" />
-        <field name="dwEventCookie" />
-        <field name="dwPropNotifyCookie" />
-        <field name="dwPointerActivationPolicy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OFNOTIFY" namespace="System.Windows.Forms">
-        <constructor name="OFNOTIFY" argnames="" />
-        <field name="hdr_hwndFrom" />
-        <field name="hdr_idFrom" />
-        <field name="hdr_code" />
-        <field name="lpOFN" />
-        <field name="pszFile" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Control" namespace="System.Windows.Forms">
-        <class name="ControlCollection" namespace="System.Windows.Forms">
-            <constructor name="ControlCollection(System.Windows.Forms.Control)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Windows.Forms.Control" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.Control)" argnames="control" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" returntype="System.Int32" />
-            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="ControlAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="ControlAccessibleObject(System.Windows.Forms.Control)" argnames="ownerControl" />
-            <property name="DefaultAction" propertytype="System.String" />
-            <property name="Description" propertytype="System.String" />
-            <property name="Handle" propertytype="System.IntPtr" />
-            <property name="Help" propertytype="System.String" />
-            <property name="KeyboardShortcut" propertytype="System.String" />
-            <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
-            <property name="Name" propertytype="System.String" />
-            <property name="Owner" propertytype="System.Windows.Forms.Control" />
-            <property name="PreviousLabel" propertytype="System.Windows.Forms.Label" />
-            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" returntype="System.String" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" returntype="System.Void" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ControlAccessibleObject" argnames="" />
-        <constructor name="ControlAccessibleObject(System.String)" argnames="text" />
-        <constructor name="ControlAccessibleObject(System.String, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="text, left, top, width, height" />
-        <constructor name="ControlAccessibleObject(System.Windows.Forms.Control, System.String)" argnames="parent, text" />
-        <constructor name="ControlAccessibleObject(System.Windows.Forms.Control, System.String, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="parent, text, left, top, width, height" />
-        <property name="AccessibilityObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" propertytype="System.String" />
-        <property name="AccessibleDescription" propertytype="System.String" />
-        <property name="AccessibleName" propertytype="System.String" />
-        <property name="AccessibleRole" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="ActiveXAmbientBackColor" propertytype="System.Drawing.Color" />
-        <property name="ActiveXAmbientForeColor" propertytype="System.Drawing.Color" />
-        <property name="ActiveXAmbientFont" propertytype="System.Drawing.Font" />
-        <property name="ActiveXEventsFrozen" propertytype="System.Boolean" />
-        <property name="ActiveXHWNDParent" propertytype="System.IntPtr" />
-        <property name="ActiveXInstance" propertytype="System.Windows.Forms.Control+ActiveXImpl" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="AmbientPropertiesService" propertytype="System.Windows.Forms.AmbientProperties" />
-        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackBrush" propertytype="System.IntPtr" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="BitsPerPixel" propertytype="System.Int16" />
-        <property name="Bottom" propertytype="System.Int32" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="CachedImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="CanAccessProperties" propertytype="System.Boolean" />
-        <property name="CanFocus" propertytype="System.Boolean" />
-        <property name="CanRaiseEvents" propertytype="System.Boolean" />
-        <property name="CanSelect" propertytype="System.Boolean" />
-        <property name="Capture" propertytype="System.Boolean" />
-        <property name="CaptureInternal" propertytype="System.Boolean" />
-        <property name="CausesValidation" propertytype="System.Boolean" />
-        <property name="ClientRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" propertytype="System.String" />
-        <property name="ContainsFocus" propertytype="System.Boolean" />
-        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="ValidationCancelled" propertytype="System.Boolean" />
-        <property name="_CreateThreadId" propertytype="System.Int32" />
-        <property name="CreateThreadId" propertytype="System.Int32" />
-        <property name="CurrentImeContextMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultBackColor" propertytype="System.Drawing.Color" />
-        <property name="DefaultCursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultFont" propertytype="System.Drawing.Font" />
-        <property name="DefaultForeColor" propertytype="System.Drawing.Color" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DefaultRightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="DisabledColor" propertytype="System.Drawing.Color" />
-        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" propertytype="System.Boolean" />
-        <property name="Disposing" propertytype="System.Boolean" />
-        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="DoubleBufferingEnabled" propertytype="System.Boolean" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Focused" propertytype="System.Boolean" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="FontHandle" propertytype="System.IntPtr" />
-        <property name="FontHeight" propertytype="System.Int32" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="HasChildren" propertytype="System.Boolean" />
-        <property name="HasMenu" propertytype="System.Boolean" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="HostedInWin32DialogManager" propertytype="System.Boolean" />
-        <property name="IsHandleCreated" propertytype="System.Boolean" />
-        <property name="IsWindowObscured" propertytype="System.Boolean" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="ImeModeConversionBits" propertytype="System.Collections.Hashtable" />
-        <property name="InternalHandle" propertytype="System.IntPtr" />
-        <property name="InvokeRequired" propertytype="System.Boolean" />
-        <property name="IsAccessible" propertytype="System.Boolean" />
-        <property name="IsActiveX" propertytype="System.Boolean" />
-        <property name="IsBinding" propertytype="System.Boolean" />
-        <property name="Left" propertytype="System.Int32" />
-        <property name="Location" propertytype="System.Drawing.Point" />
-        <property name="Mnemonic" propertytype="System.Char" />
-        <property name="ModifierKeys" propertytype="System.Windows.Forms.Keys" />
-        <property name="MouseButtons" propertytype="System.Windows.Forms.MouseButtons" />
-        <property name="MousePosition" propertytype="System.Drawing.Point" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentInternal" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" propertytype="System.String" />
-        <property name="ProductVersion" propertytype="System.String" />
-        <property name="Properties" propertytype="System.Windows.Forms.PropertyStore" />
-        <property name="RawBackColor" propertytype="System.Drawing.Color" />
-        <property name="RecreatingHandle" propertytype="System.Boolean" />
-        <property name="Region" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" propertytype="System.Boolean" />
-        <property name="RenderTransparent" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" propertytype="System.Boolean" />
-        <property name="Right" propertytype="System.Int32" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" propertytype="System.Int32" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Tag" propertytype="System.Object" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TextWithoutMnemonics" propertytype="System.String" />
-        <property name="Top" propertytype="System.Int32" />
-        <property name="TopLevelControl" propertytype="System.Windows.Forms.Control" />
-        <property name="TopLevelControlInternal" propertytype="System.Windows.Forms.Control" />
-        <property name="TopMostParent" propertytype="System.Windows.Forms.Control" />
-        <property name="BufferManager" propertytype="System.Windows.Forms.GraphicsBufferManager" />
-        <property name="ShowKeyboardCues" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" propertytype="System.Boolean" />
-        <property name="ShowParams" propertytype="System.Int32" />
-        <property name="VersionInfo" propertytype="System.Windows.Forms.Control+ControlVersionInfo" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="WindowExStyle" propertytype="System.Int32" />
-        <property name="WindowStyle" propertytype="System.Int32" />
-        <property name="WindowTarget" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="WindowText" propertytype="System.String" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="ResetText" argnames="" returntype="System.Void" />
-        <method name="Refresh" argnames="" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" returntype="System.Void" />
-        <method name="ResetFont" argnames="" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetBindings" argnames="" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" returntype="System.Void" />
-        <method name="Focus" argnames="" returntype="System.Boolean" />
-        <method name="FromChildHandle(System.IntPtr)" argnames="handle" returntype="System.Windows.Forms.Control" />
-        <method name="FromHandle(System.IntPtr)" argnames="handle" returntype="System.Windows.Forms.Control" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" returntype="System.Boolean" />
-        <method name="Hide" argnames="" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" returntype="System.Void" />
-        <method name="Invalidate" argnames="" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" returntype="System.Void" />
-        <method name="IsMnemonic(System.Char, System.String)" argnames="charCode, text" returntype="System.Boolean" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" returntype="System.Drawing.Rectangle" />
-        <method name="ReflectMessage(System.IntPtr, System.Windows.Forms.Message&amp;)" argnames="hWnd, m" returntype="System.Boolean" />
-        <method name="ResetMouseEventArgs" argnames="" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="Select" argnames="" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" returntype="System.Void" />
-        <method name="Update" argnames="" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" />
-        <event name="BackgroundImageChanged" />
-        <event name="BindingContextChanged" />
-        <event name="CausesValidationChanged" />
-        <event name="ContextMenuChanged" />
-        <event name="CursorChanged" />
-        <event name="DockChanged" />
-        <event name="EnabledChanged" />
-        <event name="FontChanged" />
-        <event name="ForeColorChanged" />
-        <event name="LocationChanged" />
-        <event name="RightToLeftChanged" />
-        <event name="SizeChanged" />
-        <event name="TabIndexChanged" />
-        <event name="TabStopChanged" />
-        <event name="TextChanged" />
-        <event name="VisibleChanged" />
-        <event name="Click" />
-        <event name="ControlAdded" />
-        <event name="ControlRemoved" />
-        <event name="DragDrop" />
-        <event name="DragEnter" />
-        <event name="DragOver" />
-        <event name="DragLeave" />
-        <event name="GiveFeedback" />
-        <event name="HandleCreated" />
-        <event name="HandleDestroyed" />
-        <event name="HelpRequested" />
-        <event name="Invalidated" />
-        <event name="Paint" />
-        <event name="QueryContinueDrag" />
-        <event name="QueryAccessibilityHelp" />
-        <event name="DoubleClick" />
-        <event name="Enter" />
-        <event name="GotFocus" />
-        <event name="ImeModeChanged" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="KeyUp" />
-        <event name="Layout" />
-        <event name="Leave" />
-        <event name="LostFocus" />
-        <event name="MouseDown" />
-        <event name="MouseEnter" />
-        <event name="MouseLeave" />
-        <event name="MouseHover" />
-        <event name="MouseMove" />
-        <event name="MouseUp" />
-        <event name="MouseWheel" />
-        <event name="Move" />
-        <event name="Resize" />
-        <event name="ChangeUICues" />
-        <event name="StyleChanged" />
-        <event name="SystemColorsChanged" />
-        <event name="Validating" />
-        <event name="Validated" />
-        <event name="ParentChanged" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="NativeWindow" namespace="System.Windows.Forms">
-        <constructor name="NativeWindow" argnames="" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="PreviousWindow" propertytype="System.Windows.Forms.NativeWindow" />
-        <property name="WndProcFlags" propertytype="System.Int32" />
-        <property name="WndProcShouldBeDebuggable" propertytype="System.Boolean" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="ReleaseHandle" argnames="" returntype="System.Void" />
-        <method name="OnThreadException(System.Exception)" argnames="e" returntype="System.Void" />
-        <method name="OnHandleChange" argnames="" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" returntype="System.Void" />
-        <method name="CreateHandle(System.Windows.Forms.CreateParams)" argnames="cp" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AssignHandle(System.IntPtr)" argnames="handle" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="FromHandle(System.IntPtr)" argnames="handle" returntype="System.Windows.Forms.NativeWindow" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlCollection" namespace="System.Windows.Forms">
-        <constructor name="ControlCollection(System.Windows.Forms.Control)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Windows.Forms.Control" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="control" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" returntype="System.Int32" />
-        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="AccessibleObject" argnames="" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="DefaultAction" propertytype="System.String" />
-        <property name="Description" propertytype="System.String" />
-        <property name="EnumVariant" propertytype="System.Windows.Forms.UnsafeNativeMethods+IEnumVariant" />
-        <property name="Help" propertytype="System.String" />
-        <property name="KeyboardShortcut" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
-        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="ControlAccessibleObject(System.Windows.Forms.Control)" argnames="ownerControl" />
-        <property name="DefaultAction" propertytype="System.String" />
-        <property name="Description" propertytype="System.String" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="Help" propertytype="System.String" />
-        <property name="KeyboardShortcut" propertytype="System.String" />
-        <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Owner" propertytype="System.Windows.Forms.Control" />
-        <property name="PreviousLabel" propertytype="System.Windows.Forms.Label" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" returntype="System.Void" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ScrollableControl" namespace="System.Windows.Forms">
-        <class name="DockPaddingEdges" namespace="System.Windows.Forms">
-            <property name="All" propertytype="System.Int32" />
-            <property name="Bottom" propertytype="System.Int32" />
-            <property name="Left" propertytype="System.Int32" />
-            <property name="Right" propertytype="System.Int32" />
-            <property name="Top" propertytype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-            <method name="ToString" argnames="" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="DockPaddingEdgesConverter" namespace="System.Windows.Forms">
-            <constructor name="DockPaddingEdgesConverter" argnames="" />
-            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="DockPaddingEdgesConverter" argnames="" />
-        <field name="ScrollStateAutoScrolling" />
-        <field name="ScrollStateHScrollVisible" />
-        <field name="ScrollStateVScrollVisible" />
-        <field name="ScrollStateUserHasScrolled" />
-        <field name="ScrollStateFullDrag" />
-        <property name="AutoScroll" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" propertytype="System.Drawing.Size" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" propertytype="System.Boolean" />
-        <property name="VScroll" propertytype="System.Boolean" />
-        <property name="DockPadding" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DockPaddingEdges" namespace="System.Windows.Forms">
-        <property name="All" propertytype="System.Int32" />
-        <property name="Bottom" propertytype="System.Int32" />
-        <property name="Left" propertytype="System.Int32" />
-        <property name="Right" propertytype="System.Int32" />
-        <property name="Top" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DockPaddingEdgesConverter" namespace="System.Windows.Forms">
-        <constructor name="DockPaddingEdgesConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ContainerControl" namespace="System.Windows.Forms">
-        <constructor name="ContainerControl" argnames="" />
-        <property name="BindingContext" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" propertytype="System.Windows.Forms.Control" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="ParentForm" propertytype="System.Windows.Forms.Form" />
-        <property name="ParentFormInternal" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="UpdateDefaultButton" argnames="" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Validate" argnames="" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="Form" namespace="System.Windows.Forms">
-        <class name="ControlCollection" namespace="System.Windows.Forms">
-            <constructor name="ControlCollection(System.Windows.Forms.Form)" argnames="owner" />
-            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ControlCollection" argnames="" />
-        <property name="AcceptButton" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="Active" propertytype="System.Boolean" />
-        <property name="ActiveForm" propertytype="System.Windows.Forms.Form" />
-        <property name="ActiveMdiChild" propertytype="System.Windows.Forms.Form" />
-        <property name="AllowTransparency" propertytype="System.Boolean" />
-        <property name="AutoScale" propertytype="System.Boolean" />
-        <property name="AutoScaleBaseSize" propertytype="System.Drawing.Size" />
-        <property name="AutoScroll" propertytype="System.Boolean" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="FormBorderStyle" propertytype="System.Windows.Forms.FormBorderStyle" />
-        <property name="CancelButton" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ClientSize" propertytype="System.Drawing.Size" />
-        <property name="ControlBox" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultIcon" propertytype="System.Drawing.Icon" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultRestrictedIcon" propertytype="System.Drawing.Icon" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DesktopBounds" propertytype="System.Drawing.Rectangle" />
-        <property name="DesktopLocation" propertytype="System.Drawing.Point" />
-        <property name="DialogResult" propertytype="System.Windows.Forms.DialogResult" />
-        <property name="HasMenu" propertytype="System.Boolean" />
-        <property name="HelpButton" propertytype="System.Boolean" />
-        <property name="Icon" propertytype="System.Drawing.Icon" />
-        <property name="IsMdiChild" propertytype="System.Boolean" />
-        <property name="IsMdiContainer" propertytype="System.Boolean" />
-        <property name="KeyPreview" propertytype="System.Boolean" />
-        <property name="MaximizedBounds" propertytype="System.Drawing.Rectangle" />
-        <property name="MaximumSize" propertytype="System.Drawing.Size" />
-        <property name="Menu" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimumSize" propertytype="System.Drawing.Size" />
-        <property name="MaximizeBox" propertytype="System.Boolean" />
-        <property name="MdiChildren" propertytype="System.Windows.Forms.Form[]" />
-        <property name="MdiParent" propertytype="System.Windows.Forms.Form" />
-        <property name="MdiParentInternal" propertytype="System.Windows.Forms.Form" />
-        <property name="MergedMenu" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimizeBox" propertytype="System.Boolean" />
-        <property name="Modal" propertytype="System.Boolean" />
-        <property name="Opacity" propertytype="System.Double" />
-        <property name="OpacityAsByte" propertytype="System.Byte" />
-        <property name="OwnedForms" propertytype="System.Windows.Forms.Form[]" />
-        <property name="Owner" propertytype="System.Windows.Forms.Form" />
-        <property name="OwnerInternal" propertytype="System.Windows.Forms.Form" />
-        <property name="ParentInternal" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowInTaskbar" propertytype="System.Boolean" />
-        <property name="ShowParams" propertytype="System.Int32" />
-        <property name="Size" propertytype="System.Drawing.Size" />
-        <property name="SizeGripStyle" propertytype="System.Windows.Forms.SizeGripStyle" />
-        <property name="StartPosition" propertytype="System.Windows.Forms.FormStartPosition" />
-        <property name="TabIndex" propertytype="System.Int32" />
-        <property name="TopLevel" propertytype="System.Boolean" />
-        <property name="TopMost" propertytype="System.Boolean" />
-        <property name="TransparencyKey" propertytype="System.Drawing.Color" />
-        <property name="IsRestrictedWindow" propertytype="System.Boolean" />
-        <property name="WindowState" propertytype="System.Windows.Forms.FormWindowState" />
-        <property name="WindowText" propertytype="System.String" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnMenuComplete(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMenuStart(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLoad(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDeactivate(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnClosed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnActivated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Activate" argnames="" returntype="System.Void" />
-        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" returntype="System.Void" />
-        <method name="ApplyAutoScaling" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="GetAutoScaleSize(System.Drawing.Font)" argnames="font" returntype="System.Drawing.SizeF" />
-        <method name="CenterToParent" argnames="" returntype="System.Void" />
-        <method name="CenterToScreen" argnames="" returntype="System.Void" />
-        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" returntype="System.Void" />
-        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" returntype="System.Void" />
-        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" returntype="System.Void" />
-        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
-        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="MaximizedBoundsChanged" />
-        <event name="MaximumSizeChanged" />
-        <event name="MinimumSizeChanged" />
-        <event name="Activated" />
-        <event name="Closing" />
-        <event name="Closed" />
-        <event name="Deactivate" />
-        <event name="Load" />
-        <event name="MdiChildActivate" />
-        <event name="MenuComplete" />
-        <event name="MenuStart" />
-        <event name="InputLanguageChanged" />
-        <event name="InputLanguageChanging" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ControlCollection" namespace="System.Windows.Forms">
-        <constructor name="ControlCollection(System.Windows.Forms.Form)" argnames="owner" />
-        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AmbientProperties" namespace="System.Windows.Forms">
-        <constructor name="AmbientProperties" argnames="" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PaintEventArgs" namespace="System.Windows.Forms">
-        <constructor name="PaintEventArgs(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, clipRect" />
-        <property name="ClipRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="HDC" propertytype="System.IntPtr" />
-        <property name="Graphics" propertytype="System.Drawing.Graphics" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ApplicationContext" namespace="System.Windows.Forms">
-        <constructor name="ApplicationContext" argnames="" />
-        <constructor name="ApplicationContext(System.Windows.Forms.Form)" argnames="mainForm" />
-        <property name="MainForm" propertytype="System.Windows.Forms.Form" />
-        <method name="OnMainFormClosed(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="ExitThreadCore" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="ExitThread" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ThreadExit" />
-    </class>
-    <class name="CommonDialog" namespace="System.Windows.Forms">
-        <constructor name="CommonDialog" argnames="" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ShowDialog" argnames="" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="HelpRequest" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="FileDialog" namespace="System.Windows.Forms">
-        <field name="EventFileOk" />
-        <property name="AddExtension" propertytype="System.Boolean" />
-        <property name="CheckFileExists" propertytype="System.Boolean" />
-        <property name="CheckPathExists" propertytype="System.Boolean" />
-        <property name="DefaultExt" propertytype="System.String" />
-        <property name="DereferenceLinks" propertytype="System.Boolean" />
-        <property name="DialogCaption" propertytype="System.String" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="FileNames" propertytype="System.String[]" />
-        <property name="FileNamesInternal" propertytype="System.String[]" />
-        <property name="Filter" propertytype="System.String" />
-        <property name="FilterExtensions" propertytype="System.String[]" />
-        <property name="FilterIndex" propertytype="System.Int32" />
-        <property name="InitialDirectory" propertytype="System.String" />
-        <property name="Instance" propertytype="System.IntPtr" />
-        <property name="Options" propertytype="System.Int32" />
-        <property name="RestoreDirectory" propertytype="System.Boolean" />
-        <property name="ShowHelp" propertytype="System.Boolean" />
-        <property name="Title" propertytype="System.String" />
-        <property name="ValidateNames" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="OnFileOk(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="FileOk" />
-        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="BaseCollection" namespace="System.Windows.Forms">
-        <constructor name="BaseCollection" argnames="" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Binding" namespace="System.Windows.Forms">
-        <constructor name="Binding(System.String, System.Object, System.String)" argnames="propertyName, dataSource, dataMember" />
-        <property name="BindToObject" propertytype="System.Windows.Forms.BindToObject" />
-        <property name="DataSource" propertytype="System.Object" />
-        <property name="BindingMemberInfo" propertytype="System.Windows.Forms.BindingMemberInfo" />
-        <property name="Control" propertytype="System.Windows.Forms.Control" />
-        <property name="IsBinding" propertytype="System.Boolean" />
-        <property name="BindingManagerBase" propertytype="System.Windows.Forms.BindingManagerBase" />
-        <property name="PropertyName" propertytype="System.String" />
-        <property name="IsBindable" propertytype="System.Boolean" />
-        <method name="OnFormat(System.Windows.Forms.ConvertEventArgs)" argnames="cevent" returntype="System.Void" />
-        <method name="OnParse(System.Windows.Forms.ConvertEventArgs)" argnames="cevent" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Parse" />
-        <event name="Format" />
-    </class>
-    <class name="BindingManagerBase" namespace="System.Windows.Forms">
-        <constructor name="BindingManagerBase" argnames="" />
-        <property name="Bindings" propertytype="System.Windows.Forms.BindingsCollection" />
-        <property name="Current" propertytype="System.Object" />
-        <property name="BindType" propertytype="System.Type" />
-        <property name="Position" propertytype="System.Int32" />
-        <property name="DataSource" propertytype="System.Object" />
-        <property name="IsBinding" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="ResumeBinding" argnames="" returntype="System.Void" />
-        <method name="SuspendBinding" argnames="" returntype="System.Void" />
-        <method name="UpdateIsBinding" argnames="" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="AddNew" argnames="" returntype="System.Void" />
-        <method name="EndCurrentEdit" argnames="" returntype="System.Void" />
-        <method name="CancelCurrentEdit" argnames="" returntype="System.Void" />
-        <method name="GetItemProperties(System.Type, System.Int32, System.Collections.ArrayList, System.Collections.ArrayList)" argnames="listType, offset, dataSources, listAccessors" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetItemProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="PullData" argnames="" returntype="System.Void" />
-        <method name="PushData" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CurrentChanged" />
-        <event name="PositionChanged" />
-    </class>
-    <class name="BindingsCollection" namespace="System.Windows.Forms">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <property name="Item" propertytype="System.Windows.Forms.Binding" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
-        <method name="RemoveCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="ClearCore" argnames="" returntype="System.Void" />
-        <method name="AddCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-    </class>
-    <class name="ControlPaint" namespace="System.Windows.Forms">
-        <property name="ContrastControlDark" propertytype="System.Drawing.Color" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateHBitmap16Bit(System.Drawing.Bitmap, System.Drawing.Color)" argnames="bitmap, background" returntype="System.IntPtr" />
-        <method name="CreateHBitmapTransparencyMask(System.Drawing.Bitmap)" argnames="bitmap" returntype="System.IntPtr" />
-        <method name="CreateHBitmapColorMask(System.Drawing.Bitmap, System.IntPtr)" argnames="bitmap, monochromeMask" returntype="System.IntPtr" />
-        <method name="Dark(System.Drawing.Color, System.Single)" argnames="baseColor, percOfDarkDark" returntype="System.Drawing.Color" />
-        <method name="Dark(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
-        <method name="DarkDark(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
-        <method name="DrawBorder(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Color, System.Windows.Forms.ButtonBorderStyle)" argnames="graphics, bounds, color, style" returntype="System.Void" />
-        <method name="DrawBorder(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle)" argnames="graphics, bounds, leftColor, leftWidth, leftStyle, topColor, topWidth, topStyle, rightColor, rightWidth, rightStyle, bottomColor, bottomWidth, bottomStyle" returntype="System.Void" />
-        <method name="DrawBorder3D(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, rectangle" returntype="System.Void" />
-        <method name="DrawBorder3D(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.Border3DStyle)" argnames="graphics, rectangle, style" returntype="System.Void" />
-        <method name="DrawBorder3D(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.Border3DStyle, System.Windows.Forms.Border3DSide)" argnames="graphics, rectangle, style, sides" returntype="System.Void" />
-        <method name="DrawBorder3D(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="graphics, x, y, width, height" returntype="System.Void" />
-        <method name="DrawBorder3D(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.Border3DStyle)" argnames="graphics, x, y, width, height, style" returntype="System.Void" />
-        <method name="DrawBorder3D(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.Border3DStyle, System.Windows.Forms.Border3DSide)" argnames="graphics, x, y, width, height, style, sides" returntype="System.Void" />
-        <method name="DrawButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
-        <method name="DrawButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
-        <method name="DrawCaptionButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.CaptionButton, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, button, state" returntype="System.Void" />
-        <method name="DrawCaptionButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.CaptionButton, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, button, state" returntype="System.Void" />
-        <method name="DrawCheckBox(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
-        <method name="DrawCheckBox(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
-        <method name="DrawComboButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
-        <method name="DrawComboButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
-        <method name="DrawContainerGrabHandle(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, bounds" returntype="System.Void" />
-        <method name="DrawFocusRectangle(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, rectangle" returntype="System.Void" />
-        <method name="DrawFocusRectangle(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color)" argnames="graphics, rectangle, foreColor, backColor" returntype="System.Void" />
-        <method name="DrawGrabHandle(System.Drawing.Graphics, System.Drawing.Rectangle, System.Boolean, System.Boolean)" argnames="graphics, rectangle, primary, enabled" returntype="System.Void" />
-        <method name="DrawGrid(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Size, System.Drawing.Color)" argnames="graphics, area, pixelsBetweenDots, backColor" returntype="System.Void" />
-        <method name="DrawImageDisabled(System.Drawing.Graphics, System.Drawing.Image, System.Int32, System.Int32, System.Drawing.Color)" argnames="graphics, image, x, y, background" returntype="System.Void" />
-        <method name="DrawLockedFrame(System.Drawing.Graphics, System.Drawing.Rectangle, System.Boolean)" argnames="graphics, rectangle, primary" returntype="System.Void" />
-        <method name="DrawMenuGlyph(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.MenuGlyph)" argnames="graphics, rectangle, glyph" returntype="System.Void" />
-        <method name="DrawMenuGlyph(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.MenuGlyph)" argnames="graphics, x, y, width, height, glyph" returntype="System.Void" />
-        <method name="DrawMixedCheckBox(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
-        <method name="DrawMixedCheckBox(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
-        <method name="DrawRadioButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
-        <method name="DrawRadioButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
-        <method name="DrawReversibleFrame(System.Drawing.Rectangle, System.Drawing.Color, System.Windows.Forms.FrameStyle)" argnames="rectangle, backColor, style" returntype="System.Void" />
-        <method name="DrawReversibleLine(System.Drawing.Point, System.Drawing.Point, System.Drawing.Color)" argnames="start, end, backColor" returntype="System.Void" />
-        <method name="DrawScrollButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ScrollButton, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, button, state" returntype="System.Void" />
-        <method name="DrawScrollButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ScrollButton, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, button, state" returntype="System.Void" />
-        <method name="DrawSelectionFrame(System.Drawing.Graphics, System.Boolean, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.Color)" argnames="graphics, active, outsideRect, insideRect, backColor" returntype="System.Void" />
-        <method name="DrawSizeGrip(System.Drawing.Graphics, System.Drawing.Color, System.Drawing.Rectangle)" argnames="graphics, backColor, bounds" returntype="System.Void" />
-        <method name="DrawSizeGrip(System.Drawing.Graphics, System.Drawing.Color, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="graphics, backColor, x, y, width, height" returntype="System.Void" />
-        <method name="DrawStringDisabled(System.Drawing.Graphics, System.String, System.Drawing.Font, System.Drawing.Color, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="graphics, s, font, color, layoutRectangle, format" returntype="System.Void" />
-        <method name="FillReversibleRectangle(System.Drawing.Rectangle, System.Drawing.Color)" argnames="rectangle, backColor" returntype="System.Void" />
-        <method name="Light(System.Drawing.Color, System.Single)" argnames="baseColor, percOfLightLight" returntype="System.Drawing.Color" />
-        <method name="Light(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
-        <method name="LightLight(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TextBoxBase" namespace="System.Windows.Forms">
-        <property name="AcceptsTab" propertytype="System.Boolean" />
-        <property name="AutoSize" propertytype="System.Boolean" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CanRaiseTextChangedEvent" propertytype="System.Boolean" />
-        <property name="CanUndo" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultCursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="HideSelection" propertytype="System.Boolean" />
-        <property name="Lines" propertytype="System.String[]" />
-        <property name="MaxLength" propertytype="System.Int32" />
-        <property name="Modified" propertytype="System.Boolean" />
-        <property name="Multiline" propertytype="System.Boolean" />
-        <property name="PreferredHeight" propertytype="System.Int32" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="SelectedText" propertytype="System.String" />
-        <property name="SelectionLength" propertytype="System.Int32" />
-        <property name="SelectionStart" propertytype="System.Int32" />
-        <property name="SetSelectionInCreateHandle" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TextLength" propertytype="System.Int32" />
-        <property name="WindowText" propertytype="System.String" />
-        <property name="WordWrap" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="AppendText(System.String)" argnames="text" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="ClearUndo" argnames="" returntype="System.Void" />
-        <method name="Copy" argnames="" returntype="System.Void" />
-        <method name="Cut" argnames="" returntype="System.Void" />
-        <method name="Paste" argnames="" returntype="System.Void" />
-        <method name="ScrollToCaret" argnames="" returntype="System.Void" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" returntype="System.Void" />
-        <method name="SelectAll" argnames="" returntype="System.Void" />
-        <method name="Undo" argnames="" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AcceptsTabChanged" />
-        <event name="AutoSizeChanged" />
-        <event name="BorderStyleChanged" />
-        <event name="Click" />
-        <event name="HideSelectionChanged" />
-        <event name="ModifiedChanged" />
-        <event name="MultilineChanged" />
-        <event name="ReadOnlyChanged" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="TextBox" namespace="System.Windows.Forms">
-        <constructor name="TextBox" argnames="" />
-        <property name="AcceptsReturn" propertytype="System.Boolean" />
-        <property name="CharacterCasing" propertytype="System.Windows.Forms.CharacterCasing" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="PasswordChar" propertytype="System.Char" />
-        <property name="ScrollBars" propertytype="System.Windows.Forms.ScrollBars" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TextAlign" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="AcceptsTab" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="AutoSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CanUndo" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
-        <property name="HideSelection" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="Lines" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String[]" />
-        <property name="MaxLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="Modified" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="Multiline" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="PreferredHeight" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="ReadOnly" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="SelectedText" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String" />
-        <property name="SelectionLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="SelectionStart" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="TextLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="WordWrap" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.String" />
-        <method name="AppendText(System.String)" argnames="text" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ClearUndo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Copy" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Cut" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Paste" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ScrollToCaret" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="SelectAll" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Undo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="TextAlignChanged" />
-        <event name="AcceptsTabChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="AutoSizeChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="BorderStyleChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="Click" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="HideSelectionChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="ModifiedChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="MultilineChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="Paint" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DataGridTextBox" namespace="System.Windows.Forms">
-        <constructor name="DataGridTextBox" argnames="" />
-        <property name="IsInEditOrNavigateMode" propertytype="System.Boolean" />
-        <property name="AcceptsReturn" inherited="System.Windows.Forms.TextBox" propertytype="System.Boolean" />
-        <property name="CharacterCasing" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.CharacterCasing" />
-        <property name="CreateParams" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="PasswordChar" inherited="System.Windows.Forms.TextBox" propertytype="System.Char" />
-        <property name="ScrollBars" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.ScrollBars" />
-        <property name="Text" inherited="System.Windows.Forms.TextBox" propertytype="System.String" />
-        <property name="TextAlign" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="AcceptsTab" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="AutoSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CanUndo" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
-        <property name="HideSelection" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="Lines" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String[]" />
-        <property name="MaxLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="Modified" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="Multiline" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="PreferredHeight" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="ReadOnly" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="SelectedText" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String" />
-        <property name="SelectionLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="SelectionStart" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="TextLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="WordWrap" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
-        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBox" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.String" />
-        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="parentGrid" returntype="System.Void" />
-        <method name="AppendText(System.String)" argnames="text" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ClearUndo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Copy" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Cut" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Paste" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ScrollToCaret" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="SelectAll" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Undo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="TextAlignChanged" inherited="System.Windows.Forms.TextBox" />
-        <event name="AcceptsTabChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="AutoSizeChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="BorderStyleChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="Click" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="HideSelectionChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="ModifiedChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="MultilineChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="Paint" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="FontDialog" namespace="System.Windows.Forms">
-        <constructor name="FontDialog" argnames="" />
-        <field name="EventApply" />
-        <property name="AllowSimulations" propertytype="System.Boolean" />
-        <property name="AllowVectorFonts" propertytype="System.Boolean" />
-        <property name="AllowVerticalFonts" propertytype="System.Boolean" />
-        <property name="AllowScriptChange" propertytype="System.Boolean" />
-        <property name="Color" propertytype="System.Drawing.Color" />
-        <property name="FixedPitchOnly" propertytype="System.Boolean" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="FontMustExist" propertytype="System.Boolean" />
-        <property name="MaxSize" propertytype="System.Int32" />
-        <property name="MinSize" propertytype="System.Int32" />
-        <property name="Options" propertytype="System.Int32" />
-        <property name="ScriptsOnly" propertytype="System.Boolean" />
-        <property name="ShowApply" propertytype="System.Boolean" />
-        <property name="ShowColor" propertytype="System.Boolean" />
-        <property name="ShowEffects" propertytype="System.Boolean" />
-        <property name="ShowHelp" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnApply(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Apply" />
-        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="Clipboard" namespace="System.Windows.Forms">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SetDataObject(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="SetDataObject(System.Object, System.Boolean)" argnames="data, copy" returntype="System.Void" />
-        <method name="GetDataObject" argnames="" returntype="System.Windows.Forms.IDataObject" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DateTimePicker" namespace="System.Windows.Forms">
-        <class name="DateTimePickerAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="DateTimePickerAccessibleObject(System.Windows.Forms.DateTimePicker)" argnames="owner" />
-            <property name="Value" propertytype="System.String" />
-            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-            <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="DateTimePickerAccessibleObject" argnames="" />
-        <field name="DefaultTitleBackColor" />
-        <field name="DefaultTitleForeColor" />
-        <field name="DefaultMonthBackColor" />
-        <field name="DefaultTrailingForeColor" />
-        <field name="MinDateTime" />
-        <field name="MaxDateTime" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="CalendarForeColor" propertytype="System.Drawing.Color" />
-        <property name="CalendarFont" propertytype="System.Drawing.Font" />
-        <property name="CalendarFontHandle" propertytype="System.IntPtr" />
-        <property name="CalendarTitleBackColor" propertytype="System.Drawing.Color" />
-        <property name="CalendarTitleForeColor" propertytype="System.Drawing.Color" />
-        <property name="CalendarTrailingForeColor" propertytype="System.Drawing.Color" />
-        <property name="CalendarMonthBackground" propertytype="System.Drawing.Color" />
-        <property name="Checked" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="CustomFormat" propertytype="System.String" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DropDownAlign" propertytype="System.Windows.Forms.LeftRightAlignment" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Format" propertytype="System.Windows.Forms.DateTimePickerFormat" />
-        <property name="MaxDate" propertytype="System.DateTime" />
-        <property name="MinDate" propertytype="System.DateTime" />
-        <property name="PreferredHeight" propertytype="System.Int32" />
-        <property name="ShowCheckBox" propertytype="System.Boolean" />
-        <property name="ShowUpDown" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnValueChanged(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
-        <method name="OnFormatChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDropDown(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
-        <method name="OnCloseUp(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="FormatChanged" />
-        <event name="Paint" />
-        <event name="CloseUp" />
-        <event name="ValueChanged" />
-        <event name="DropDown" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DateTimePickerAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="DateTimePickerAccessibleObject(System.Windows.Forms.DateTimePicker)" argnames="owner" />
-        <property name="Value" propertytype="System.String" />
-        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-        <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColumnClickEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ColumnClickEventArgs(System.Int32)" argnames="column" />
-        <property name="Column" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColumnHeader" namespace="System.Windows.Forms">
-        <constructor name="ColumnHeader" argnames="" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="ListView" propertytype="System.Windows.Forms.ListView" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TextAlign" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="WidthInternal" propertytype="System.Int32" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="Panel" namespace="System.Windows.Forms">
-        <constructor name="Panel" argnames="" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="KeyUp" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="TabPage" namespace="System.Windows.Forms">
-        <class name="TabPageControlCollection" namespace="System.Windows.Forms">
-            <constructor name="TabPageControlCollection(System.Windows.Forms.TabPage)" argnames="owner" />
-            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.Control)" argnames="value" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="TabPageControlCollection" argnames="" />
-        <constructor name="TabPageControlCollection(System.String)" argnames="text" />
-        <property name="ImageIndex" propertytype="System.Int32" />
-        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="TabIndex" propertytype="System.Int32" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="ToolTipText" propertytype="System.String" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.Panel" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Panel" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Panel" propertytype="System.Drawing.Size" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.Panel" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetTabPageOfComponent(System.Object)" argnames="comp" returntype="System.Windows.Forms.TabPage" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Panel" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Panel" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Panel" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="TabPageControlCollection" namespace="System.Windows.Forms">
-        <constructor name="TabPageControlCollection(System.Windows.Forms.TabPage)" argnames="owner" />
-        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.Control)" argnames="value" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UpDownBase" namespace="System.Windows.Forms">
-        <constructor name="UpDownBase" argnames="" />
-        <property name="AutoScroll" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollMinSize" propertytype="System.Drawing.Size" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="ChangingText" propertytype="System.Boolean" />
-        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DockPadding" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="Focused" propertytype="System.Boolean" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="InterceptArrowKeys" propertytype="System.Boolean" />
-        <property name="PreferredHeight" propertytype="System.Int32" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TextAlign" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="TextBox" propertytype="System.Windows.Forms.TextBox" />
-        <property name="UpDownAlign" propertytype="System.Windows.Forms.LeftRightAlignment" />
-        <property name="UpDownButtonsInternal" propertytype="System.Windows.Forms.UpDownBase+UpDownButtons" />
-        <property name="UserEdit" propertytype="System.Boolean" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="ValidateEditText" argnames="" returntype="System.Void" />
-        <method name="UpdateEditText" argnames="" returntype="System.Void" />
-        <method name="UpButton" argnames="" returntype="System.Void" />
-        <method name="OnTextBoxTextChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnTextBoxResize(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnTextBoxLostFocus(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnTextBoxKeyPress(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnTextBoxKeyDown(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="DownButton" argnames="" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" returntype="System.Void" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DomainUpDown" namespace="System.Windows.Forms">
-        <class name="DomainUpDownItemCollection" namespace="System.Windows.Forms">
-            <property name="Item" propertytype="System.Object" />
-            <property name="Capacity" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
-            <property name="Count" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
-            <property name="IsFixedSize" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
-            <property name="IsReadOnly" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
-            <property name="IsSynchronized" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
-            <property name="SyncRoot" inherited="System.Collections.ArrayList" propertytype="System.Object" />
-            <method name="Clone" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object" />
-            <method name="GetEnumerator" argnames="" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="item" returntype="System.Void" />
-            <method name="Remove(System.Object)" argnames="item" returntype="System.Void" />
-            <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-            <method name="IndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="Clear" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="Contains(System.Object)" argnames="item" inherited="System.Collections.ArrayList" returntype="System.Boolean" />
-            <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
-            <method name="TrimToSize" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="ToArray(System.Type)" argnames="type" inherited="System.Collections.ArrayList" returntype="System.Array" />
-            <method name="ToArray" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object[]" />
-            <method name="Sort(System.Int32, System.Int32, System.Collections.IComparer)" argnames="index, count, comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="Sort(System.Collections.IComparer)" argnames="comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="Sort" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="GetRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.ArrayList" />
-            <method name="SetRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="Reverse(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="Reverse" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="RemoveRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="LastIndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="LastIndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="LastIndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="InsertRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="IndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="IndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="GetEnumerator(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Int32, System.Array, System.Int32, System.Int32)" argnames="index, array, arrayIndex, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="CopyTo(System.Array)" argnames="array" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="BinarySearch(System.Object, System.Collections.IComparer)" argnames="value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="BinarySearch(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="BinarySearch(System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="index, count, value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-            <method name="AddRange(System.Collections.ICollection)" argnames="c" inherited="System.Collections.ArrayList" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="DomainUpDownAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="DomainUpDownAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
-            <property name="ItemList" propertytype="System.Windows.Forms.DomainUpDown+DomainItemListAccessibleObject" />
-            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="DomainItemAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="DomainItemAccessibleObject(System.String, System.Windows.Forms.AccessibleObject)" argnames="name, parent" />
-            <property name="Name" propertytype="System.String" />
-            <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Value" propertytype="System.String" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="DomainItemAccessibleObject" argnames="" />
-        <property name="Items" propertytype="System.Windows.Forms.DomainUpDown+DomainUpDownItemCollection" />
-        <property name="SelectedIndex" propertytype="System.Int32" />
-        <property name="SelectedItem" propertytype="System.Object" />
-        <property name="Sorted" propertytype="System.Boolean" />
-        <property name="Wrap" propertytype="System.Boolean" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
-        <property name="BackColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="ChangingText" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="CreateParams" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
-        <property name="DockPadding" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="Focused" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="ForeColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
-        <property name="InterceptArrowKeys" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="PreferredHeight" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Int32" />
-        <property name="ReadOnly" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="Text" inherited="System.Windows.Forms.UpDownBase" propertytype="System.String" />
-        <property name="TextAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="UpDownAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.LeftRightAlignment" />
-        <property name="UserEdit" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="ValidateEditText" argnames="" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="UpdateEditText" argnames="" returntype="System.Void" />
-        <method name="UpButton" argnames="" returntype="System.Void" />
-        <method name="OnTextBoxTextChanged(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnTextBoxResize(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnTextBoxLostFocus(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnTextBoxKeyPress(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnTextBoxKeyDown(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="DownButton" argnames="" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="OnSelectedItemChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="SelectedItemChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DomainUpDownItemCollection" namespace="System.Windows.Forms">
-        <property name="Item" propertytype="System.Object" />
-        <property name="Capacity" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
-        <property name="Count" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
-        <property name="IsFixedSize" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
-        <property name="IsReadOnly" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Collections.ArrayList" propertytype="System.Object" />
-        <method name="Clone" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="item" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="item" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="Clear" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="item" inherited="System.Collections.ArrayList" returntype="System.Boolean" />
-        <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
-        <method name="TrimToSize" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="ToArray(System.Type)" argnames="type" inherited="System.Collections.ArrayList" returntype="System.Array" />
-        <method name="ToArray" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object[]" />
-        <method name="Sort(System.Int32, System.Int32, System.Collections.IComparer)" argnames="index, count, comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="Sort(System.Collections.IComparer)" argnames="comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="Sort" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="GetRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.ArrayList" />
-        <method name="SetRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="Reverse(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="Reverse" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="RemoveRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="LastIndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="InsertRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="IndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="IndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="GetEnumerator(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Int32, System.Array, System.Int32, System.Int32)" argnames="index, array, arrayIndex, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="CopyTo(System.Array)" argnames="array" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="BinarySearch(System.Object, System.Collections.IComparer)" argnames="value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="BinarySearch(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="BinarySearch(System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="index, count, value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
-        <method name="AddRange(System.Collections.ICollection)" argnames="c" inherited="System.Collections.ArrayList" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DomainUpDownAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="DomainUpDownAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
-        <property name="ItemList" propertytype="System.Windows.Forms.DomainUpDown+DomainItemListAccessibleObject" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DomainItemAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="DomainItemAccessibleObject(System.String, System.Windows.Forms.AccessibleObject)" argnames="name, parent" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GroupBox" namespace="System.Windows.Forms">
-        <constructor name="GroupBox" argnames="" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="FlatStyle" propertytype="System.Windows.Forms.FlatStyle" />
-        <property name="OwnerDraw" propertytype="System.Boolean" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" />
-        <event name="DoubleClick" />
-        <event name="KeyUp" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="MouseDown" />
-        <event name="MouseUp" />
-        <event name="MouseMove" />
-        <event name="MouseEnter" />
-        <event name="MouseLeave" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="Menu" namespace="System.Windows.Forms">
-        <class name="MenuItemCollection" namespace="System.Windows.Forms">
-            <constructor name="MenuItemCollection(System.Windows.Forms.Menu)" argnames="owner" />
-            <property name="Item" propertytype="System.Windows.Forms.MenuItem" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.MenuItem[])" argnames="items" returntype="System.Void" />
-            <method name="Add(System.Int32, System.Windows.Forms.MenuItem)" argnames="index, item" returntype="System.Int32" />
-            <method name="Add(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Int32" />
-            <method name="Add(System.String, System.Windows.Forms.MenuItem[])" argnames="caption, items" returntype="System.Windows.Forms.MenuItem" />
-            <method name="Add(System.String, System.EventHandler)" argnames="caption, onClick" returntype="System.Windows.Forms.MenuItem" />
-            <method name="Add(System.String)" argnames="caption" returntype="System.Windows.Forms.MenuItem" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="MenuItemCollection(System.Windows.Forms.MenuItem[])" argnames="items" />
-        <field name="FindHandle" />
-        <field name="FindShortcut" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="IsParent" propertytype="System.Boolean" />
-        <property name="MdiListItem" propertytype="System.Windows.Forms.MenuItem" />
-        <property name="MenuItems" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" returntype="System.Void" />
-        <method name="CreateMenuHandle" argnames="" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" returntype="System.Void" />
-        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" returntype="System.Windows.Forms.MenuItem" />
-        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" returntype="System.Int32" />
-        <method name="GetContextMenu" argnames="" returntype="System.Windows.Forms.ContextMenu" />
-        <method name="GetMainMenu" argnames="" returntype="System.Windows.Forms.MainMenu" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="MenuItemCollection" namespace="System.Windows.Forms">
-        <constructor name="MenuItemCollection(System.Windows.Forms.Menu)" argnames="owner" />
-        <property name="Item" propertytype="System.Windows.Forms.MenuItem" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.MenuItem[])" argnames="items" returntype="System.Void" />
-        <method name="Add(System.Int32, System.Windows.Forms.MenuItem)" argnames="index, item" returntype="System.Int32" />
-        <method name="Add(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Int32" />
-        <method name="Add(System.String, System.Windows.Forms.MenuItem[])" argnames="caption, items" returntype="System.Windows.Forms.MenuItem" />
-        <method name="Add(System.String, System.EventHandler)" argnames="caption, onClick" returntype="System.Windows.Forms.MenuItem" />
-        <method name="Add(System.String)" argnames="caption" returntype="System.Windows.Forms.MenuItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ContextMenu" namespace="System.Windows.Forms">
-        <constructor name="ContextMenu" argnames="" />
-        <constructor name="ContextMenu(System.Windows.Forms.MenuItem[])" argnames="menuItems" />
-        <property name="SourceControl" propertytype="System.Windows.Forms.Control" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Handle" inherited="System.Windows.Forms.Menu" propertytype="System.IntPtr" />
-        <property name="IsParent" inherited="System.Windows.Forms.Menu" propertytype="System.Boolean" />
-        <property name="MdiListItem" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.MenuItem" />
-        <property name="MenuItems" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
-        <method name="CreateMenuHandle" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.String" />
-        <method name="Show(System.Windows.Forms.Control, System.Drawing.Point)" argnames="control, pos" returntype="System.Void" />
-        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
-        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MenuItem" />
-        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" inherited="System.Windows.Forms.Menu" returntype="System.Int32" />
-        <method name="GetContextMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.ContextMenu" />
-        <method name="GetMainMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MainMenu" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Popup" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ScrollBar" namespace="System.Windows.Forms">
-        <constructor name="ScrollBar" argnames="" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="LargeChange" propertytype="System.Int32" />
-        <property name="Maximum" propertytype="System.Int32" />
-        <property name="Minimum" propertytype="System.Int32" />
-        <property name="SmallChange" propertytype="System.Int32" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Value" propertytype="System.Int32" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnScroll(System.Windows.Forms.ScrollEventArgs)" argnames="se" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="UpdateScrollInfo" argnames="" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" />
-        <event name="Paint" />
-        <event name="DoubleClick" />
-        <event name="MouseDown" />
-        <event name="MouseUp" />
-        <event name="MouseMove" />
-        <event name="Scroll" />
-        <event name="ValueChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="HScrollBar" namespace="System.Windows.Forms">
-        <constructor name="HScrollBar" argnames="" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="BackColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Image" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="ForeColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
-        <property name="Font" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Font" />
-        <property name="ImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="LargeChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="Maximum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="Minimum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="SmallChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Boolean" />
-        <property name="Text" inherited="System.Windows.Forms.ScrollBar" propertytype="System.String" />
-        <property name="Value" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="OnScroll(System.Windows.Forms.ScrollEventArgs)" argnames="se" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.String" />
-        <method name="UpdateScrollInfo" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="Paint" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="MouseDown" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="MouseUp" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="MouseMove" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="Scroll" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="ValueChanged" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ControlBindingsCollection" namespace="System.Windows.Forms">
-        <property name="Control" propertytype="System.Windows.Forms.Control" />
-        <property name="Item" propertytype="System.Windows.Forms.Binding" />
-        <property name="Count" inherited="System.Windows.Forms.BindingsCollection" propertytype="System.Int32" />
-        <property name="List" inherited="System.Windows.Forms.BindingsCollection" propertytype="System.Collections.ArrayList" />
-        <property name="Item" inherited="System.Windows.Forms.BindingsCollection" propertytype="System.Windows.Forms.Binding" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
-        <method name="RemoveCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" inherited="System.Windows.Forms.BindingsCollection" returntype="System.Void" />
-        <method name="ClearCore" argnames="" returntype="System.Void" />
-        <method name="AddCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Windows.Forms.Binding)" argnames="binding" returntype="System.Void" />
-        <method name="Add(System.String, System.Object, System.String)" argnames="propertyName, dataSource, dataMember" returntype="System.Windows.Forms.Binding" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.Binding)" argnames="binding" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" inherited="System.Windows.Forms.BindingsCollection" />
-    </class>
-    <class name="ControlEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ControlEventArgs(System.Windows.Forms.Control)" argnames="control" />
-        <property name="Control" propertytype="System.Windows.Forms.Control" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Label" namespace="System.Windows.Forms">
-        <constructor name="Label" argnames="" />
-        <property name="AutoSize" propertytype="System.Boolean" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="FlatStyle" propertytype="System.Windows.Forms.FlatStyle" />
-        <property name="Image" propertytype="System.Drawing.Image" />
-        <property name="ImageIndex" propertytype="System.Int32" />
-        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ImageAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="ImageBounds" propertytype="System.Drawing.Rectangle" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="OwnerDraw" propertytype="System.Boolean" />
-        <property name="PreferredHeight" propertytype="System.Int32" />
-        <property name="PreferredWidth" propertytype="System.Int32" />
-        <property name="RenderTransparent" propertytype="System.Boolean" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="UseMnemonic" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CalcImageRenderBounds(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="image, r, align" returntype="System.Drawing.Rectangle" />
-        <method name="DrawImage(System.Drawing.Graphics, System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="g, image, r, align" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AutoSizeChanged" />
-        <event name="TextAlignChanged" />
-        <event name="KeyUp" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ConvertEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ConvertEventArgs(System.Object, System.Type)" argnames="value, desiredType" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="DesiredType" propertytype="System.Type" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CreateParams" namespace="System.Windows.Forms">
-        <constructor name="CreateParams" argnames="" />
-        <property name="ClassName" propertytype="System.String" />
-        <property name="Caption" propertytype="System.String" />
-        <property name="Style" propertytype="System.Int32" />
-        <property name="ExStyle" propertytype="System.Int32" />
-        <property name="ClassStyle" propertytype="System.Int32" />
-        <property name="X" propertytype="System.Int32" />
-        <property name="Y" propertytype="System.Int32" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="Parent" propertytype="System.IntPtr" />
-        <property name="Param" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CurrencyManager" namespace="System.Windows.Forms">
-        <field name="listposition" />
-        <field name="finalType" />
-        <property name="AllowAdd" propertytype="System.Boolean" />
-        <property name="AllowEdit" propertytype="System.Boolean" />
-        <property name="AllowRemove" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Current" propertytype="System.Object" />
-        <property name="BindType" propertytype="System.Type" />
-        <property name="DataSource" propertytype="System.Object" />
-        <property name="IsBinding" propertytype="System.Boolean" />
-        <property name="List" propertytype="System.Collections.IList" />
-        <property name="Position" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Bindings" inherited="System.Windows.Forms.BindingManagerBase" propertytype="System.Windows.Forms.BindingsCollection" />
-        <method name="OnPositionChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnItemChanged(System.Windows.Forms.ItemChangedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="ResumeBinding" argnames="" returntype="System.Void" />
-        <method name="SuspendBinding" argnames="" returntype="System.Void" />
-        <method name="UpdateIsBinding" argnames="" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="AddNew" argnames="" returntype="System.Void" />
-        <method name="EndCurrentEdit" argnames="" returntype="System.Void" />
-        <method name="CancelCurrentEdit" argnames="" returntype="System.Void" />
-        <method name="GetItemProperties(System.Type, System.Int32, System.Collections.ArrayList, System.Collections.ArrayList)" argnames="listType, offset, dataSources, listAccessors" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetItemProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CheckEmpty" argnames="" returntype="System.Void" />
-        <method name="Refresh" argnames="" returntype="System.Void" />
-        <method name="PullData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
-        <method name="PushData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ItemChanged" />
-        <event name="CurrentChanged" inherited="System.Windows.Forms.BindingManagerBase" />
-        <event name="PositionChanged" inherited="System.Windows.Forms.BindingManagerBase" />
-    </class>
-    <class name="DataGrid" namespace="System.Windows.Forms">
-        <class name="HitTestInfo" namespace="System.Windows.Forms">
-            <field name="Nowhere" />
-            <property name="Column" propertytype="System.Int32" />
-            <property name="Row" propertytype="System.Int32" />
-            <property name="Type" propertytype="System.Windows.Forms.DataGrid+HitTestType" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-            <method name="ToString" argnames="" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <enum name="HitTestType" namespace="System.Windows.Forms">
-            <field name="None" />
-            <field name="Cell" />
-            <field name="ColumnHeader" />
-            <field name="RowHeader" />
-            <field name="ColumnResize" />
-            <field name="RowResize" />
-            <field name="Caption" />
-            <field name="ParentRows" />
-            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </enum>
-        <constructor name="HitTestType" argnames="" />
-        <property name="AllowSorting" propertytype="System.Boolean" />
-        <property name="AlternatingBackColor" propertytype="System.Drawing.Color" />
-        <property name="AlternatingBackBrush" propertytype="System.Drawing.Brush" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="BackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="ForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="BorderWidth" propertytype="System.Int32" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DefaultSelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultSelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultBackgroundBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultParentRowsForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultParentRowsBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultAlternatingBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultGridLineBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultHeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultHeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultHeaderForePen" propertytype="System.Drawing.Pen" />
-        <property name="DefaultLinkBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="ListHasErrors" propertytype="System.Boolean" />
-        <property name="Bound" propertytype="System.Boolean" />
-        <property name="Caption" propertytype="System.Windows.Forms.DataGridCaption" />
-        <property name="CaptionBackColor" propertytype="System.Drawing.Color" />
-        <property name="CaptionForeColor" propertytype="System.Drawing.Color" />
-        <property name="CaptionFont" propertytype="System.Drawing.Font" />
-        <property name="CaptionText" propertytype="System.String" />
-        <property name="CaptionVisible" propertytype="System.Boolean" />
-        <property name="CurrentCell" propertytype="System.Windows.Forms.DataGridCell" />
-        <property name="CurrentColumn" propertytype="System.Int32" />
-        <property name="CurrentRow" propertytype="System.Int32" />
-        <property name="SelectionBackColor" propertytype="System.Drawing.Color" />
-        <property name="SelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="SelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="SelectionForeColor" propertytype="System.Drawing.Color" />
-        <property name="DataGridRows" propertytype="System.Windows.Forms.DataGridRow[]" />
-        <property name="ToolTipProvider" propertytype="System.Windows.Forms.DataGridToolTip" />
-        <property name="ToolTipId" propertytype="System.Int32" />
-        <property name="DataGridRowsLength" propertytype="System.Int32" />
-        <property name="DataSource" propertytype="System.Object" />
-        <property name="DataMember" propertytype="System.String" />
-        <property name="ListManager" propertytype="System.Windows.Forms.CurrencyManager" />
-        <property name="CurrentRowIndex" propertytype="System.Int32" />
-        <property name="TableStyles" propertytype="System.Windows.Forms.GridTableStylesCollection" />
-        <property name="FontHeight" propertytype="System.Int32" />
-        <property name="ParentRowsAccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="ParentRowsBounds" propertytype="System.Drawing.Rectangle" />
-        <property name="GridLineColor" propertytype="System.Drawing.Color" />
-        <property name="GridLineBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="GridLineStyle" propertytype="System.Windows.Forms.DataGridLineStyle" />
-        <property name="GridLineWidth" propertytype="System.Int32" />
-        <property name="ParentRowsLabelStyle" propertytype="System.Windows.Forms.DataGridParentRowsLabelStyle" />
-        <property name="Initializing" propertytype="System.Boolean" />
-        <property name="FirstVisibleColumn" propertytype="System.Int32" />
-        <property name="FlatMode" propertytype="System.Boolean" />
-        <property name="HeaderBackColor" propertytype="System.Drawing.Color" />
-        <property name="HeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="BackgroundBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="BackgroundColor" propertytype="System.Drawing.Color" />
-        <property name="HeaderFont" propertytype="System.Drawing.Font" />
-        <property name="HeaderForeColor" propertytype="System.Drawing.Color" />
-        <property name="HeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="HeaderForePen" propertytype="System.Drawing.Pen" />
-        <property name="HorizontalOffset" propertytype="System.Int32" />
-        <property name="HorizScrollBar" propertytype="System.Windows.Forms.ScrollBar" />
-        <property name="LedgerStyle" propertytype="System.Boolean" />
-        <property name="LinkColor" propertytype="System.Drawing.Color" />
-        <property name="LinkBrush" propertytype="System.Drawing.Brush" />
-        <property name="LinkHoverColor" propertytype="System.Drawing.Color" />
-        <property name="LinkFont" propertytype="System.Drawing.Font" />
-        <property name="LinkFontHeight" propertytype="System.Int32" />
-        <property name="AllowNavigation" propertytype="System.Boolean" />
-        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="ParentRowsBackColor" propertytype="System.Drawing.Color" />
-        <property name="ParentRowsBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="ParentRowsForeColor" propertytype="System.Drawing.Color" />
-        <property name="ParentRowsForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="PreferredColumnWidth" propertytype="System.Int32" />
-        <property name="PreferredRowHeight" propertytype="System.Int32" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="ColumnHeadersVisible" propertytype="System.Boolean" />
-        <property name="ParentRowsVisible" propertytype="System.Boolean" />
-        <property name="RowHeadersVisible" propertytype="System.Boolean" />
-        <property name="RowHeaderWidth" propertytype="System.Int32" />
-        <property name="Text" propertytype="System.String" />
-        <property name="VertScrollBar" propertytype="System.Windows.Forms.ScrollBar" />
-        <property name="VisibleColumnCount" propertytype="System.Int32" />
-        <property name="VisibleRowCount" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32, System.Boolean)" argnames="gridColumn, rowNumber, shouldAbort" returntype="System.Boolean" />
-        <method name="BeginEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32)" argnames="gridColumn, rowNumber" returntype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="GetOutputTextDelimiter" argnames="" returntype="System.String" />
-        <method name="CancelEditing" argnames="" returntype="System.Void" />
-        <method name="CreateGridColumn(System.ComponentModel.PropertyDescriptor)" argnames="prop" returntype="System.Windows.Forms.DataGridColumnStyle" />
-        <method name="CreateGridColumn(System.ComponentModel.PropertyDescriptor, System.Boolean)" argnames="prop, isDefault" returntype="System.Windows.Forms.DataGridColumnStyle" />
-        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="GridVScrolled(System.Object, System.Windows.Forms.ScrollEventArgs)" argnames="sender, se" returntype="System.Void" />
-        <method name="GridHScrolled(System.Object, System.Windows.Forms.ScrollEventArgs)" argnames="sender, se" returntype="System.Void" />
-        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentRowsLabelStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentRowsVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAllowNavigationChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBackgroundColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnFlatModeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCurrentCellChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCaptionVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="ShouldSerializeParentRowsForeColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeParentRowsBackColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeLinkHoverColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeHeaderForeColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeBackgroundColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeHeaderBackColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeGridLineColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeSelectionForeColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeCaptionForeColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeCaptionBackColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeAlternatingBackColor" argnames="" returntype="System.Boolean" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="ebe" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="kpe" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="ke" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetAlternatingBackColor" argnames="" returntype="System.Void" />
-        <method name="ShouldSerializeSelectionBackColor" argnames="" returntype="System.Boolean" />
-        <method name="ResetSelectionBackColor" argnames="" returntype="System.Void" />
-        <method name="ResetSelectionForeColor" argnames="" returntype="System.Void" />
-        <method name="SetDataBinding(System.Object, System.String)" argnames="dataSource, dataMember" returntype="System.Void" />
-        <method name="ResetGridLineColor" argnames="" returntype="System.Void" />
-        <method name="ResetHeaderBackColor" argnames="" returntype="System.Void" />
-        <method name="ShouldSerializeHeaderFont" argnames="" returntype="System.Boolean" />
-        <method name="ResetHeaderFont" argnames="" returntype="System.Void" />
-        <method name="ResetHeaderForeColor" argnames="" returntype="System.Void" />
-        <method name="ResetLinkColor" argnames="" returntype="System.Void" />
-        <method name="ResetLinkHoverColor" argnames="" returntype="System.Void" />
-        <method name="ShouldSerializePreferredRowHeight" argnames="" returntype="System.Boolean" />
-        <method name="OnNavigate(System.Windows.Forms.NavigateEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnRowHeaderClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBackButtonClicked(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="OnShowParentDetailsButtonClicked(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="Collapse(System.Int32)" argnames="row" returntype="System.Void" />
-        <method name="Expand(System.Int32)" argnames="row" returntype="System.Void" />
-        <method name="GetCurrentCellBounds" argnames="" returntype="System.Drawing.Rectangle" />
-        <method name="GetCellBounds(System.Int32, System.Int32)" argnames="row, col" returntype="System.Drawing.Rectangle" />
-        <method name="GetCellBounds(System.Windows.Forms.DataGridCell)" argnames="dgc" returntype="System.Drawing.Rectangle" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.DataGrid+HitTestInfo" />
-        <method name="HitTest(System.Drawing.Point)" argnames="position" returntype="System.Windows.Forms.DataGrid+HitTestInfo" />
-        <method name="IsExpanded(System.Int32)" argnames="rowNumber" returntype="System.Boolean" />
-        <method name="IsSelected(System.Int32)" argnames="row" returntype="System.Boolean" />
-        <method name="NavigateBack" argnames="" returntype="System.Void" />
-        <method name="NavigateTo(System.Int32, System.String)" argnames="rowNumber, relationName" returntype="System.Void" />
-        <method name="ProcessGridKey(System.Windows.Forms.KeyEventArgs)" argnames="ke" returntype="System.Boolean" />
-        <method name="ProcessTabKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ResetSelection" argnames="" returntype="System.Void" />
-        <method name="Select(System.Int32)" argnames="row" returntype="System.Void" />
-        <method name="SubObjectsSiteChange(System.Boolean)" argnames="site" returntype="System.Void" />
-        <method name="UnSelect(System.Int32)" argnames="row" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BorderStyleChanged" />
-        <event name="CaptionVisibleChanged" />
-        <event name="CurrentCellChanged" />
-        <event name="DataSourceChanged" />
-        <event name="ParentRowsLabelStyleChanged" />
-        <event name="FlatModeChanged" />
-        <event name="BackgroundColorChanged" />
-        <event name="AllowNavigationChanged" />
-        <event name="ReadOnlyChanged" />
-        <event name="ParentRowsVisibleChanged" />
-        <event name="Navigate" />
-        <event name="RowHeaderClick" />
-        <event name="Scroll" />
-        <event name="BackButtonClick" />
-        <event name="ShowParentDetailsButtonClick" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="HitTestInfo" namespace="System.Windows.Forms">
-        <field name="Nowhere" />
-        <property name="Column" propertytype="System.Int32" />
-        <property name="Row" propertytype="System.Int32" />
-        <property name="Type" propertytype="System.Windows.Forms.DataGrid+HitTestType" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CursorConverter" namespace="System.Windows.Forms">
-        <constructor name="CursorConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Cursors" namespace="System.Windows.Forms">
-        <property name="AppStarting" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Arrow" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Cross" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Default" propertytype="System.Windows.Forms.Cursor" />
-        <property name="IBeam" propertytype="System.Windows.Forms.Cursor" />
-        <property name="No" propertytype="System.Windows.Forms.Cursor" />
-        <property name="SizeAll" propertytype="System.Windows.Forms.Cursor" />
-        <property name="SizeNESW" propertytype="System.Windows.Forms.Cursor" />
-        <property name="SizeNS" propertytype="System.Windows.Forms.Cursor" />
-        <property name="SizeNWSE" propertytype="System.Windows.Forms.Cursor" />
-        <property name="SizeWE" propertytype="System.Windows.Forms.Cursor" />
-        <property name="UpArrow" propertytype="System.Windows.Forms.Cursor" />
-        <property name="WaitCursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Help" propertytype="System.Windows.Forms.Cursor" />
-        <property name="HSplit" propertytype="System.Windows.Forms.Cursor" />
-        <property name="VSplit" propertytype="System.Windows.Forms.Cursor" />
-        <property name="NoMove2D" propertytype="System.Windows.Forms.Cursor" />
-        <property name="NoMoveHoriz" propertytype="System.Windows.Forms.Cursor" />
-        <property name="NoMoveVert" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanEast" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanNE" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanNorth" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanNW" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanSE" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanSouth" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanSW" propertytype="System.Windows.Forms.Cursor" />
-        <property name="PanWest" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Hand" propertytype="System.Windows.Forms.Cursor" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataFormats" namespace="System.Windows.Forms">
-        <class name="Format" namespace="System.Windows.Forms">
-            <constructor name="Format(System.String, System.Int32)" argnames="name, id" />
-            <property name="Name" propertytype="System.String" />
-            <property name="Id" propertytype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <field name="Text" />
-        <field name="UnicodeText" />
-        <field name="Dib" />
-        <field name="Bitmap" />
-        <field name="EnhancedMetafile" />
-        <field name="MetafilePict" />
-        <field name="SymbolicLink" />
-        <field name="Dif" />
-        <field name="Tiff" />
-        <field name="OemText" />
-        <field name="Palette" />
-        <field name="PenData" />
-        <field name="Riff" />
-        <field name="WaveAudio" />
-        <field name="FileDrop" />
-        <field name="Locale" />
-        <field name="Html" />
-        <field name="Rtf" />
-        <field name="CommaSeparatedValue" />
-        <field name="StringFormat" />
-        <field name="Serializable" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetFormat(System.String)" argnames="format" returntype="System.Windows.Forms.DataFormats+Format" />
-        <method name="GetFormat(System.Int32)" argnames="id" returntype="System.Windows.Forms.DataFormats+Format" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Format" namespace="System.Windows.Forms">
-        <constructor name="Format(System.String, System.Int32)" argnames="name, id" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Id" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LinkLabel" namespace="System.Windows.Forms">
-        <class name="LinkCollection" namespace="System.Windows.Forms">
-            <constructor name="LinkCollection(System.Windows.Forms.LinkLabel)" argnames="owner" />
-            <property name="Item" propertytype="System.Windows.Forms.LinkLabel+Link" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Int32, System.Int32)" argnames="start, length" returntype="System.Windows.Forms.LinkLabel+Link" />
-            <method name="Add(System.Int32, System.Int32, System.Object)" argnames="start, length, linkData" returntype="System.Windows.Forms.LinkLabel+Link" />
-            <method name="Contains(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Int32" />
-            <method name="Remove(System.Windows.Forms.LinkLabel.Link)" argnames="value" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="Link" namespace="System.Windows.Forms">
-            <property name="Enabled" propertytype="System.Boolean" />
-            <property name="Length" propertytype="System.Int32" />
-            <property name="LinkData" propertytype="System.Object" />
-            <property name="State" propertytype="System.Windows.Forms.LinkState" />
-            <property name="Start" propertytype="System.Int32" />
-            <property name="Visited" propertytype="System.Boolean" />
-            <property name="VisualRegion" propertytype="System.Drawing.Region" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="Link" argnames="" />
-        <property name="ActiveLinkColor" propertytype="System.Drawing.Color" />
-        <property name="DisabledLinkColor" propertytype="System.Drawing.Color" />
-        <property name="FocusLink" propertytype="System.Windows.Forms.LinkLabel+Link" />
-        <property name="IELinkColor" propertytype="System.Drawing.Color" />
-        <property name="IEActiveLinkColor" propertytype="System.Drawing.Color" />
-        <property name="IEVisitedLinkColor" propertytype="System.Drawing.Color" />
-        <property name="IEDisabledLinkColor" propertytype="System.Drawing.Color" />
-        <property name="LinkArea" propertytype="System.Windows.Forms.LinkArea" />
-        <property name="LinkBehavior" propertytype="System.Windows.Forms.LinkBehavior" />
-        <property name="LinkColor" propertytype="System.Drawing.Color" />
-        <property name="Links" propertytype="System.Windows.Forms.LinkLabel+LinkCollection" />
-        <property name="LinkVisited" propertytype="System.Boolean" />
-        <property name="OwnerDraw" propertytype="System.Boolean" />
-        <property name="OverrideCursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Text" propertytype="System.String" />
-        <property name="VisitedLinkColor" propertytype="System.Drawing.Color" />
-        <property name="AutoSize" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.Size" />
-        <property name="FlatStyle" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.FlatStyle" />
-        <property name="Image" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.Image" />
-        <property name="ImageIndex" inherited="System.Windows.Forms.Label" propertytype="System.Int32" />
-        <property name="ImageList" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ImageAlign" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.ContentAlignment" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="PreferredHeight" inherited="System.Windows.Forms.Label" propertytype="System.Int32" />
-        <property name="PreferredWidth" inherited="System.Windows.Forms.Label" propertytype="System.Int32" />
-        <property name="RenderTransparent" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
-        <property name="TabStop" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
-        <property name="TextAlign" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.ContentAlignment" />
-        <property name="UseMnemonic" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnLinkClicked(System.Windows.Forms.LinkLabelLinkClickedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Label" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Label" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Label" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Label" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Label" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Label" returntype="System.String" />
-        <method name="PointInLink(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.LinkLabel+Link" />
-        <method name="CalcImageRenderBounds(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="image, r, align" inherited="System.Windows.Forms.Label" returntype="System.Drawing.Rectangle" />
-        <method name="DrawImage(System.Drawing.Graphics, System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="g, image, r, align" inherited="System.Windows.Forms.Label" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="LinkClicked" />
-        <event name="AutoSizeChanged" inherited="System.Windows.Forms.Label" />
-        <event name="TextAlignChanged" inherited="System.Windows.Forms.Label" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Label" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Label" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Label" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="LinkCollection" namespace="System.Windows.Forms">
-        <constructor name="LinkCollection(System.Windows.Forms.LinkLabel)" argnames="owner" />
-        <property name="Item" propertytype="System.Windows.Forms.LinkLabel+Link" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Int32, System.Int32)" argnames="start, length" returntype="System.Windows.Forms.LinkLabel+Link" />
-        <method name="Add(System.Int32, System.Int32, System.Object)" argnames="start, length, linkData" returntype="System.Windows.Forms.LinkLabel+Link" />
-        <method name="Contains(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Int32" />
-        <method name="Remove(System.Windows.Forms.LinkLabel.Link)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Link" namespace="System.Windows.Forms">
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int32" />
-        <property name="LinkData" propertytype="System.Object" />
-        <property name="State" propertytype="System.Windows.Forms.LinkState" />
-        <property name="Start" propertytype="System.Int32" />
-        <property name="Visited" propertytype="System.Boolean" />
-        <property name="VisualRegion" propertytype="System.Drawing.Region" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataGridColumnStyle" namespace="System.Windows.Forms">
-        <constructor name="DataGridColumnStyle" argnames="" />
-        <constructor name="DataGridColumnStyle(System.ComponentModel.PropertyDescriptor)" argnames="prop" />
-        <property name="Alignment" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="HeaderAccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <property name="DataGridTableStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
-        <property name="FontHeight" propertytype="System.Int32" />
-        <property name="HeaderText" propertytype="System.String" />
-        <property name="MappingName" propertytype="System.String" />
-        <property name="NullText" propertytype="System.String" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="WantArrows" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invalidate" argnames="" returntype="System.Void" />
-        <method name="SetDataGridInColumn(System.Windows.Forms.DataGrid)" argnames="value" returntype="System.Void" />
-        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="value" returntype="System.Void" />
-        <method name="CreateHeaderAccessibleObject" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetHeaderText" argnames="" returntype="System.Void" />
-        <method name="BeginUpdate" argnames="" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" returntype="System.Void" />
-        <method name="CheckValidDataSource(System.Windows.Forms.CurrencyManager)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AlignmentChanged" />
-        <event name="PropertyDescriptorChanged" />
-        <event name="FontChanged" />
-        <event name="HeaderTextChanged" />
-        <event name="MappingNameChanged" />
-        <event name="NullTextChanged" />
-        <event name="ReadOnlyChanged" />
-        <event name="WidthChanged" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DataGridBoolColumn" namespace="System.Windows.Forms">
-        <constructor name="DataGridBoolColumn" argnames="" />
-        <constructor name="DataGridBoolColumn(System.ComponentModel.PropertyDescriptor)" argnames="prop" />
-        <constructor name="DataGridBoolColumn(System.ComponentModel.PropertyDescriptor, System.Boolean)" argnames="prop, isDefault" />
-        <property name="TrueValue" propertytype="System.Object" />
-        <property name="FalseValue" propertytype="System.Object" />
-        <property name="NullValue" propertytype="System.Object" />
-        <property name="AllowNull" propertytype="System.Boolean" />
-        <property name="Alignment" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="HeaderAccessibleObject" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="PropertyDescriptor" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <property name="DataGridTableStyle" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
-        <property name="FontHeight" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
-        <property name="HeaderText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
-        <property name="MappingName" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
-        <property name="NullText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
-        <property name="ReadOnly" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="SetDataGridInColumn(System.Windows.Forms.DataGrid)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="CreateHeaderAccessibleObject" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetHeaderText" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="CheckValidDataSource(System.Windows.Forms.CurrencyManager)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="TrueValueChanged" />
-        <event name="FalseValueChanged" />
-        <event name="AllowNullChanged" />
-        <event name="AlignmentChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="PropertyDescriptorChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="FontChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="HeaderTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="MappingNameChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="NullTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="WidthChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="GridColumnStylesCollection" namespace="System.Windows.Forms">
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <property name="Item" propertytype="System.Windows.Forms.DataGridColumnStyle" />
-        <property name="Item" propertytype="System.Windows.Forms.DataGridColumnStyle" />
-        <property name="Item" propertytype="System.Windows.Forms.DataGridColumnStyle" />
-        <property name="DataGridTableStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
-        <property name="Count" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
-        <method name="Add(System.Windows.Forms.DataGridColumnStyle)" argnames="column" returntype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddRange(System.Windows.Forms.DataGridColumnStyle[])" argnames="columns" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.ComponentModel.PropertyDescriptor)" argnames="propDesc" returntype="System.Boolean" />
-        <method name="Contains(System.Windows.Forms.DataGridColumnStyle)" argnames="column" returntype="System.Boolean" />
-        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.DataGridColumnStyle)" argnames="element" returntype="System.Int32" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.DataGridColumnStyle)" argnames="column" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="ResetPropertyDescriptors" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-    </class>
-    <class name="DataGridPreferredColumnWidthTypeConverter" namespace="System.Windows.Forms">
-        <constructor name="DataGridPreferredColumnWidthTypeConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataGridTableStyle" namespace="System.Windows.Forms">
-        <constructor name="DataGridTableStyle(System.Boolean)" argnames="isDefaultTableStyle" />
-        <constructor name="DataGridTableStyle" argnames="" />
-        <constructor name="DataGridTableStyle(System.Windows.Forms.CurrencyManager)" argnames="listManager" />
-        <field name="DefaultTableStyle" />
-        <property name="AllowSorting" propertytype="System.Boolean" />
-        <property name="AlternatingBackColor" propertytype="System.Drawing.Color" />
-        <property name="AlternatingBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="BackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BorderWidth" propertytype="System.Int32" />
-        <property name="DefaultAlternatingBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultGridLineBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultHeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultHeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultHeaderForePen" propertytype="System.Drawing.Pen" />
-        <property name="DefaultLinkBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultSelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="DefaultSelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="FocusedRelation" propertytype="System.Int32" />
-        <property name="FocusedTextWidth" propertytype="System.Int32" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="ForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="GridLineColor" propertytype="System.Drawing.Color" />
-        <property name="GridLineBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="GridLineWidth" propertytype="System.Int32" />
-        <property name="GridLineStyle" propertytype="System.Windows.Forms.DataGridLineStyle" />
-        <property name="HeaderBackColor" propertytype="System.Drawing.Color" />
-        <property name="HeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="HeaderFont" propertytype="System.Drawing.Font" />
-        <property name="HeaderForeColor" propertytype="System.Drawing.Color" />
-        <property name="HeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="HeaderForePen" propertytype="System.Drawing.Pen" />
-        <property name="LinkColor" propertytype="System.Drawing.Color" />
-        <property name="LinkBrush" propertytype="System.Drawing.Brush" />
-        <property name="LinkHoverColor" propertytype="System.Drawing.Color" />
-        <property name="RelationshipRect" propertytype="System.Drawing.Rectangle" />
-        <property name="RelationshipHeight" propertytype="System.Int32" />
-        <property name="PreferredColumnWidth" propertytype="System.Int32" />
-        <property name="PreferredRowHeight" propertytype="System.Int32" />
-        <property name="ColumnHeadersVisible" propertytype="System.Boolean" />
-        <property name="RowHeadersVisible" propertytype="System.Boolean" />
-        <property name="RowHeaderWidth" propertytype="System.Int32" />
-        <property name="SelectionBackColor" propertytype="System.Drawing.Color" />
-        <property name="SelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="SelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
-        <property name="SelectionForeColor" propertytype="System.Drawing.Color" />
-        <property name="MappingName" propertytype="System.String" />
-        <property name="RelationsList" propertytype="System.Collections.ArrayList" />
-        <property name="GridColumnStyles" propertytype="System.Windows.Forms.GridColumnStylesCollection" />
-        <property name="DataGrid" propertytype="System.Windows.Forms.DataGrid" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="IsDefault" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32, System.Boolean)" argnames="gridColumn, rowNumber, shouldAbort" returntype="System.Boolean" />
-        <method name="BeginEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32)" argnames="gridColumn, rowNumber" returntype="System.Boolean" />
-        <method name="OnSelectionBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSelectionForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnRowHeaderWidthChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnRowHeadersVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnColumnHeadersVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnPreferredColumnWidthChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnPreferredRowHeightChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLinkHoverColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLinkColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHeaderForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHeaderFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHeaderBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnGridLineStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnGridLineColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAllowSortingChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAlternatingBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMappingNameChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="ShouldSerializeSelectionForeColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeLinkHoverColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeLinkColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeHeaderForeColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeHeaderBackColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeGridLineColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeAlternatingBackColor" argnames="" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetAlternatingBackColor" argnames="" returntype="System.Void" />
-        <method name="ShouldSerializeBackColor" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeForeColor" argnames="" returntype="System.Boolean" />
-        <method name="ResetBackColor" argnames="" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" returntype="System.Void" />
-        <method name="ResetGridLineColor" argnames="" returntype="System.Void" />
-        <method name="ResetHeaderBackColor" argnames="" returntype="System.Void" />
-        <method name="ResetHeaderFont" argnames="" returntype="System.Void" />
-        <method name="ResetHeaderForeColor" argnames="" returntype="System.Void" />
-        <method name="ResetLinkColor" argnames="" returntype="System.Void" />
-        <method name="ResetLinkHoverColor" argnames="" returntype="System.Void" />
-        <method name="ShouldSerializePreferredRowHeight" argnames="" returntype="System.Boolean" />
-        <method name="ShouldSerializeSelectionBackColor" argnames="" returntype="System.Boolean" />
-        <method name="ResetSelectionBackColor" argnames="" returntype="System.Void" />
-        <method name="ResetSelectionForeColor" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AllowSortingChanged" />
-        <event name="AlternatingBackColorChanged" />
-        <event name="BackColorChanged" />
-        <event name="ForeColorChanged" />
-        <event name="GridLineColorChanged" />
-        <event name="GridLineStyleChanged" />
-        <event name="HeaderBackColorChanged" />
-        <event name="HeaderFontChanged" />
-        <event name="HeaderForeColorChanged" />
-        <event name="LinkColorChanged" />
-        <event name="LinkHoverColorChanged" />
-        <event name="PreferredColumnWidthChanged" />
-        <event name="PreferredRowHeightChanged" />
-        <event name="ColumnHeadersVisibleChanged" />
-        <event name="RowHeadersVisibleChanged" />
-        <event name="RowHeaderWidthChanged" />
-        <event name="SelectionBackColorChanged" />
-        <event name="SelectionForeColorChanged" />
-        <event name="MappingNameChanged" />
-        <event name="ReadOnlyChanged" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="GridTableStylesCollection" namespace="System.Windows.Forms">
-        <property name="List" propertytype="System.Collections.ArrayList" />
-        <property name="Item" propertytype="System.Windows.Forms.DataGridTableStyle" />
-        <property name="Item" propertytype="System.Windows.Forms.DataGridTableStyle" />
-        <property name="Count" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
-        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
-        <method name="AddRange(System.Windows.Forms.DataGridTableStyle[])" argnames="tables" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.DataGridTableStyle)" argnames="table" returntype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.DataGridTableStyle)" argnames="table" returntype="System.Boolean" />
-        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.DataGridTableStyle)" argnames="table" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-    </class>
-    <class name="GridTablesFactory" namespace="System.Windows.Forms">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateGridTables(System.Windows.Forms.DataGridTableStyle, System.Object, System.String, System.Windows.Forms.BindingContext)" argnames="gridTable, dataSource, dataMember, bindingManager" returntype="System.Windows.Forms.DataGridTableStyle[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListControl" namespace="System.Windows.Forms">
-        <constructor name="ListControl" argnames="" />
-        <property name="DataSource" propertytype="System.Object" />
-        <property name="DataManager" propertytype="System.Windows.Forms.CurrencyManager" />
-        <property name="DisplayMember" propertytype="System.String" />
-        <property name="ValueMember" propertytype="System.String" />
-        <property name="SelectedIndex" propertytype="System.Int32" />
-        <property name="SelectedValue" propertytype="System.Object" />
-        <property name="BindingFieldEmpty" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="SetItemsCore(System.Collections.IList)" argnames="items" returntype="System.Void" />
-        <method name="RefreshItem(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="FilterItemOnProperty(System.Object)" argnames="item" returntype="System.Object" />
-        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" returntype="System.Object" />
-        <method name="GetItemText(System.Object)" argnames="item" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="DataSourceChanged" />
-        <event name="DisplayMemberChanged" />
-        <event name="ValueMemberChanged" />
-        <event name="SelectedValueChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ListBox" namespace="System.Windows.Forms">
-        <class name="ObjectCollection" namespace="System.Windows.Forms">
-            <constructor name="ObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
-            <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Windows.Forms.ListBox.ObjectCollection)" argnames="owner, value" />
-            <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Object[])" argnames="owner, value" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Object" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-            <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-            <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
-            <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" returntype="System.Void" />
-            <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
-            <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
-            <constructor name="SelectedIndexCollection(System.Windows.Forms.ListBox)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Int32" />
-            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
-            <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="SelectedObjectCollection" namespace="System.Windows.Forms">
-            <constructor name="SelectedObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Object" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="IndexOf(System.Object)" argnames="selectedObject" returntype="System.Int32" />
-            <method name="Contains(System.Object)" argnames="selectedObject" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="SelectedObjectCollection" argnames="" />
-        <field name="NoMatches" />
-        <field name="DefaultItemHeight" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="ColumnWidth" propertytype="System.Int32" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DrawMode" propertytype="System.Windows.Forms.DrawMode" />
-        <property name="FocusedIndex" propertytype="System.Int32" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="HorizontalExtent" propertytype="System.Int32" />
-        <property name="HorizontalScrollbar" propertytype="System.Boolean" />
-        <property name="IntegralHeight" propertytype="System.Boolean" />
-        <property name="ItemHeight" propertytype="System.Int32" />
-        <property name="Items" propertytype="System.Windows.Forms.ListBox+ObjectCollection" />
-        <property name="MaxItemWidth" propertytype="System.Int32" />
-        <property name="MultiColumn" propertytype="System.Boolean" />
-        <property name="PreferredHeight" propertytype="System.Int32" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="RunningOnWin2K" propertytype="System.Boolean" />
-        <property name="ScrollAlwaysVisible" propertytype="System.Boolean" />
-        <property name="SelectedIndex" propertytype="System.Int32" />
-        <property name="SelectedIndices" propertytype="System.Windows.Forms.ListBox+SelectedIndexCollection" />
-        <property name="SelectedItem" propertytype="System.Object" />
-        <property name="SelectedItems" propertytype="System.Windows.Forms.ListBox+SelectedObjectCollection" />
-        <property name="SelectionMode" propertytype="System.Windows.Forms.SelectionMode" />
-        <property name="Sorted" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TopIndex" propertytype="System.Int32" />
-        <property name="UseTabStops" propertytype="System.Boolean" />
-        <property name="DataSource" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
-        <property name="DataManager" inherited="System.Windows.Forms.ListControl" propertytype="System.Windows.Forms.CurrencyManager" />
-        <property name="DisplayMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
-        <property name="ValueMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
-        <property name="SelectedValue" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="WmReflectCommand(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="Sort" argnames="" returntype="System.Void" />
-        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="CreateItemCollection" argnames="" returntype="System.Windows.Forms.ListBox+ObjectCollection" />
-        <method name="AddItemsCore(System.Object[])" argnames="value" returntype="System.Void" />
-        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="SetItemsCore(System.Collections.IList)" argnames="value" returntype="System.Void" />
-        <method name="RefreshItem(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ListControl" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="BeginUpdate" argnames="" returntype="System.Void" />
-        <method name="ClearSelected" argnames="" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" returntype="System.Void" />
-        <method name="FindString(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="FindString(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
-        <method name="FindStringExact(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="FindStringExact(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
-        <method name="GetItemHeight(System.Int32)" argnames="index" returntype="System.Int32" />
-        <method name="GetItemRectangle(System.Int32)" argnames="index" returntype="System.Drawing.Rectangle" />
-        <method name="GetSelected(System.Int32)" argnames="index" returntype="System.Boolean" />
-        <method name="IndexFromPoint(System.Drawing.Point)" argnames="p" returntype="System.Int32" />
-        <method name="IndexFromPoint(System.Int32, System.Int32)" argnames="x, y" returntype="System.Int32" />
-        <method name="SetSelected(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Void" />
-        <method name="FilterItemOnProperty(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
-        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
-        <method name="GetItemText(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" />
-        <event name="Paint" />
-        <event name="DrawItem" />
-        <event name="MeasureItem" />
-        <event name="SelectedIndexChanged" />
-        <event name="DataSourceChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="DisplayMemberChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="ValueMemberChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="SelectedValueChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ObjectCollection" namespace="System.Windows.Forms">
-        <constructor name="ObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
-        <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Windows.Forms.ListBox.ObjectCollection)" argnames="owner, value" />
-        <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Object[])" argnames="owner, value" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
-        <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
-        <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
-        <constructor name="SelectedIndexCollection(System.Windows.Forms.ListBox)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Int32" />
-        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
-        <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SelectedObjectCollection" namespace="System.Windows.Forms">
-        <constructor name="SelectedObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="selectedObject" returntype="System.Int32" />
-        <method name="Contains(System.Object)" argnames="selectedObject" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DataGridTextBoxColumn" namespace="System.Windows.Forms">
-        <constructor name="DataGridTextBoxColumn" argnames="" />
-        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor)" argnames="prop" />
-        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor, System.String)" argnames="prop, format" />
-        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor, System.String, System.Boolean)" argnames="prop, format, isDefault" />
-        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor, System.Boolean)" argnames="prop, isDefault" />
-        <property name="TextBox" propertytype="System.Windows.Forms.TextBox" />
-        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <property name="Format" propertytype="System.String" />
-        <property name="FormatInfo" propertytype="System.IFormatProvider" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="Alignment" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="HeaderAccessibleObject" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="DataGridTableStyle" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
-        <property name="FontHeight" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
-        <property name="HeaderText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
-        <property name="MappingName" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
-        <property name="NullText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
-        <property name="Width" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="SetDataGridInColumn(System.Windows.Forms.DataGrid)" argnames="value" returntype="System.Void" />
-        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="CreateHeaderAccessibleObject" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="HideEditBox" argnames="" returntype="System.Void" />
-        <method name="EndEdit" argnames="" returntype="System.Void" />
-        <method name="PaintText(System.Drawing.Graphics, System.Drawing.Rectangle, System.String, System.Boolean)" argnames="g, bounds, text, alignToRight" returntype="System.Void" />
-        <method name="PaintText(System.Drawing.Graphics, System.Drawing.Rectangle, System.String, System.Drawing.Brush, System.Drawing.Brush, System.Boolean)" argnames="g, textBounds, text, backBrush, foreBrush, alignToRight" returntype="System.Void" />
-        <method name="ResetHeaderText" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="CheckValidDataSource(System.Windows.Forms.CurrencyManager)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AlignmentChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="PropertyDescriptorChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="FontChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="HeaderTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="MappingNameChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="NullTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="WidthChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="DataObject" namespace="System.Windows.Forms">
-        <constructor name="DataObject" argnames="" />
-        <constructor name="DataObject(System.Object)" argnames="data" />
-        <constructor name="DataObject(System.String, System.Object)" argnames="format, data" />
-        <method name="GetFormats" argnames="" returntype="System.String[]" />
-        <method name="GetFormats(System.Boolean)" argnames="autoConvert" returntype="System.String[]" />
-        <method name="GetDataPresent(System.Type)" argnames="format" returntype="System.Boolean" />
-        <method name="GetDataPresent(System.String)" argnames="format" returntype="System.Boolean" />
-        <method name="GetDataPresent(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Boolean" />
-        <method name="SetData(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="SetData(System.Type, System.Object)" argnames="format, data" returntype="System.Void" />
-        <method name="SetData(System.String, System.Object)" argnames="format, data" returntype="System.Void" />
-        <method name="SetData(System.String, System.Boolean, System.Object)" argnames="format, autoConvert, data" returntype="System.Void" />
-        <method name="GetData(System.Type)" argnames="format" returntype="System.Object" />
-        <method name="GetData(System.String)" argnames="format" returntype="System.Object" />
-        <method name="GetData(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DateBoldEventArgs" namespace="System.Windows.Forms">
-        <property name="StartDate" propertytype="System.DateTime" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="DaysToBold" propertytype="System.Int32[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DateRangeEventArgs" namespace="System.Windows.Forms">
-        <constructor name="DateRangeEventArgs(System.DateTime, System.DateTime)" argnames="start, end" />
-        <property name="Start" propertytype="System.DateTime" />
-        <property name="End" propertytype="System.DateTime" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListView" namespace="System.Windows.Forms">
-        <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
-            <constructor name="CheckedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IndicesArray" propertytype="System.Int32[]" />
-            <property name="Item" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Int32)" argnames="checkedIndex" returntype="System.Boolean" />
-            <method name="IndexOf(System.Int32)" argnames="checkedIndex" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="CheckedListViewItemCollection" namespace="System.Windows.Forms">
-            <constructor name="CheckedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="ItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
-            <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
-            <constructor name="SelectedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IndicesArray" propertytype="System.Int32[]" />
-            <property name="Item" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
-            <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="SelectedListViewItemCollection" namespace="System.Windows.Forms">
-            <constructor name="SelectedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
-            <property name="SelectedItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="ColumnHeaderCollection" namespace="System.Windows.Forms">
-            <constructor name="ColumnHeaderCollection(System.Windows.Forms.ListView)" argnames="owner" />
-            <property name="Item" propertytype="System.Windows.Forms.ColumnHeader" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.ColumnHeader)" argnames="column" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.ColumnHeader[])" argnames="values" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
-            <method name="Add(System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="str, width, textAlign" returntype="System.Windows.Forms.ColumnHeader" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
-            <method name="Insert(System.Int32, System.Windows.Forms.ColumnHeader)" argnames="index, value" returntype="System.Void" />
-            <method name="Insert(System.Int32, System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="index, str, width, textAlign" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="ListViewItemCollection" namespace="System.Windows.Forms">
-            <constructor name="ListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.ListViewItem)" argnames="value" returntype="System.Windows.Forms.ListViewItem" />
-            <method name="Add(System.String, System.Int32)" argnames="text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
-            <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="AddRange(System.Windows.Forms.ListViewItem[])" argnames="values" returntype="System.Void" />
-            <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
-            <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem)" argnames="index, item" returntype="System.Windows.Forms.ListViewItem" />
-            <method name="Insert(System.Int32, System.String)" argnames="index, text" returntype="System.Windows.Forms.ListViewItem" />
-            <method name="Insert(System.Int32, System.String, System.Int32)" argnames="index, text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ListViewItemCollection" argnames="" />
-        <property name="Activation" propertytype="System.Windows.Forms.ItemActivation" />
-        <property name="Alignment" propertytype="System.Windows.Forms.ListViewAlignment" />
-        <property name="AllowColumnReorder" propertytype="System.Boolean" />
-        <property name="AutoArrange" propertytype="System.Boolean" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CheckBoxes" propertytype="System.Boolean" />
-        <property name="CheckedIndices" propertytype="System.Windows.Forms.ListView+CheckedIndexCollection" />
-        <property name="CheckedItems" propertytype="System.Windows.Forms.ListView+CheckedListViewItemCollection" />
-        <property name="Columns" propertytype="System.Windows.Forms.ListView+ColumnHeaderCollection" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="FocusedItem" propertytype="System.Windows.Forms.ListViewItem" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="FullRowSelect" propertytype="System.Boolean" />
-        <property name="HeaderStyle" propertytype="System.Windows.Forms.ColumnHeaderStyle" />
-        <property name="GridLines" propertytype="System.Boolean" />
-        <property name="HideSelection" propertytype="System.Boolean" />
-        <property name="HoverSelection" propertytype="System.Boolean" />
-        <property name="LabelEdit" propertytype="System.Boolean" />
-        <property name="LabelWrap" propertytype="System.Boolean" />
-        <property name="LargeImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="Items" propertytype="System.Windows.Forms.ListView+ListViewItemCollection" />
-        <property name="ListViewItemSorter" propertytype="System.Collections.IComparer" />
-        <property name="MultiSelect" propertytype="System.Boolean" />
-        <property name="Scrollable" propertytype="System.Boolean" />
-        <property name="SelectedIndices" propertytype="System.Windows.Forms.ListView+SelectedIndexCollection" />
-        <property name="SelectedItems" propertytype="System.Windows.Forms.ListView+SelectedListViewItemCollection" />
-        <property name="SmallImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="Sorting" propertytype="System.Windows.Forms.SortOrder" />
-        <property name="StateImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TopItem" propertytype="System.Windows.Forms.ListViewItem" />
-        <property name="View" propertytype="System.Windows.Forms.View" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnItemCheck(System.Windows.Forms.ItemCheckEventArgs)" argnames="ice" returntype="System.Void" />
-        <method name="OnItemActivate(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnColumnClick(System.Windows.Forms.ColumnClickEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBeforeLabelEdit(System.Windows.Forms.LabelEditEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAfterLabelEdit(System.Windows.Forms.LabelEditEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ArrangeIcons(System.Windows.Forms.ListViewAlignment)" argnames="value" returntype="System.Void" />
-        <method name="ArrangeIcons" argnames="" returntype="System.Void" />
-        <method name="BeginUpdate" argnames="" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" returntype="System.Void" />
-        <method name="EnsureVisible(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="GetItemAt(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.ListViewItem" />
-        <method name="GetItemRect(System.Int32)" argnames="index" returntype="System.Drawing.Rectangle" />
-        <method name="GetItemRect(System.Int32, System.Windows.Forms.ItemBoundsPortion)" argnames="index, portion" returntype="System.Drawing.Rectangle" />
-        <method name="RealizeProperties" argnames="" returntype="System.Void" />
-        <method name="Sort" argnames="" returntype="System.Void" />
-        <method name="UpdateExtendedStyles" argnames="" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AfterLabelEdit" />
-        <event name="BeforeLabelEdit" />
-        <event name="ColumnClick" />
-        <event name="ItemActivate" />
-        <event name="ItemCheck" />
-        <event name="ItemDrag" />
-        <event name="SelectedIndexChanged" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
-        <constructor name="CheckedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IndicesArray" propertytype="System.Int32[]" />
-        <property name="Item" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Int32)" argnames="checkedIndex" returntype="System.Boolean" />
-        <method name="IndexOf(System.Int32)" argnames="checkedIndex" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CheckedListViewItemCollection" namespace="System.Windows.Forms">
-        <constructor name="CheckedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="ItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
-        <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
-        <constructor name="SelectedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IndicesArray" propertytype="System.Int32[]" />
-        <property name="Item" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
-        <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SelectedListViewItemCollection" namespace="System.Windows.Forms">
-        <constructor name="SelectedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
-        <property name="SelectedItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColumnHeaderCollection" namespace="System.Windows.Forms">
-        <constructor name="ColumnHeaderCollection(System.Windows.Forms.ListView)" argnames="owner" />
-        <property name="Item" propertytype="System.Windows.Forms.ColumnHeader" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.ColumnHeader)" argnames="column" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.ColumnHeader[])" argnames="values" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
-        <method name="Add(System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="str, width, textAlign" returntype="System.Windows.Forms.ColumnHeader" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Windows.Forms.ColumnHeader)" argnames="index, value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="index, str, width, textAlign" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListViewItemCollection" namespace="System.Windows.Forms">
-        <constructor name="ListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.ListViewItem)" argnames="value" returntype="System.Windows.Forms.ListViewItem" />
-        <method name="Add(System.String, System.Int32)" argnames="text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
-        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddRange(System.Windows.Forms.ListViewItem[])" argnames="values" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem)" argnames="index, item" returntype="System.Windows.Forms.ListViewItem" />
-        <method name="Insert(System.Int32, System.String)" argnames="index, text" returntype="System.Windows.Forms.ListViewItem" />
-        <method name="Insert(System.Int32, System.String, System.Int32)" argnames="index, text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MdiClient" namespace="System.Windows.Forms">
-        <class name="ControlCollection" namespace="System.Windows.Forms">
-            <constructor name="ControlCollection(System.Windows.Forms.MdiClient)" argnames="owner" />
-            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ControlCollection" argnames="" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="MdiChildren" propertytype="System.Windows.Forms.Form[]" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ControlCollection" namespace="System.Windows.Forms">
-        <constructor name="ControlCollection(System.Windows.Forms.MdiClient)" argnames="owner" />
-        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DragEventArgs" namespace="System.Windows.Forms">
-        <constructor name="DragEventArgs(System.Windows.Forms.IDataObject, System.Int32, System.Int32, System.Int32, System.Windows.Forms.DragDropEffects, System.Windows.Forms.DragDropEffects)" argnames="data, keyState, x, y, allowedEffect, effect" />
-        <property name="Data" propertytype="System.Windows.Forms.IDataObject" />
-        <property name="KeyState" propertytype="System.Int32" />
-        <property name="X" propertytype="System.Int32" />
-        <property name="Y" propertytype="System.Int32" />
-        <property name="AllowedEffect" propertytype="System.Windows.Forms.DragDropEffects" />
-        <property name="Effect" propertytype="System.Windows.Forms.DragDropEffects" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DrawItemEventArgs" namespace="System.Windows.Forms">
-        <constructor name="DrawItemEventArgs(System.Drawing.Graphics, System.Drawing.Font, System.Drawing.Rectangle, System.Int32, System.Windows.Forms.DrawItemState)" argnames="graphics, font, rect, index, state" />
-        <constructor name="DrawItemEventArgs(System.Drawing.Graphics, System.Drawing.Font, System.Drawing.Rectangle, System.Int32, System.Windows.Forms.DrawItemState, System.Drawing.Color, System.Drawing.Color)" argnames="graphics, font, rect, index, state, foreColor, backColor" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Graphics" propertytype="System.Drawing.Graphics" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="State" propertytype="System.Windows.Forms.DrawItemState" />
-        <method name="DrawFocusRectangle" argnames="" returntype="System.Void" />
-        <method name="DrawBackground" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FeatureSupport" namespace="System.Windows.Forms">
-        <constructor name="FeatureSupport" argnames="" />
-        <method name="GetVersionPresent(System.Object)" argnames="feature" returntype="System.Version" />
-        <method name="IsPresent(System.Object, System.Version)" argnames="feature, minimumVersion" returntype="System.Boolean" />
-        <method name="IsPresent(System.Object)" argnames="feature" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IsPresent(System.String, System.String)" argnames="featureClassName, featureConstName" returntype="System.Boolean" />
-        <method name="IsPresent(System.String, System.String, System.Version)" argnames="featureClassName, featureConstName, minimumVersion" returntype="System.Boolean" />
-        <method name="GetVersionPresent(System.String, System.String)" argnames="featureClassName, featureConstName" returntype="System.Version" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PictureBox" namespace="System.Windows.Forms">
-        <constructor name="PictureBox" argnames="" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CausesValidation" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="Image" propertytype="System.Drawing.Image" />
-        <property name="ImageRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="SizeMode" propertytype="System.Windows.Forms.PictureBoxSizeMode" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="TabIndex" propertytype="System.Int32" />
-        <property name="Text" propertytype="System.String" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnSizeModeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="SizeModeChanged" />
-        <event name="Enter" />
-        <event name="KeyUp" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="Leave" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="GiveFeedbackEventArgs" namespace="System.Windows.Forms">
-        <constructor name="GiveFeedbackEventArgs(System.Windows.Forms.DragDropEffects, System.Boolean)" argnames="effect, useDefaultCursors" />
-        <property name="Effect" propertytype="System.Windows.Forms.DragDropEffects" />
-        <property name="UseDefaultCursors" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GridItem" namespace="System.Windows.Forms">
-        <constructor name="GridItem" argnames="" />
-        <property name="GridItems" propertytype="System.Windows.Forms.GridItemCollection" />
-        <property name="GridItemType" propertytype="System.Windows.Forms.GridItemType" />
-        <property name="Label" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Windows.Forms.GridItem" />
-        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="Expandable" propertytype="System.Boolean" />
-        <property name="Expanded" propertytype="System.Boolean" />
-        <method name="Select" argnames="" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GridItemCollection" namespace="System.Windows.Forms">
-        <field name="Empty" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Windows.Forms.GridItem" />
-        <property name="Item" propertytype="System.Windows.Forms.GridItem" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Help" namespace="System.Windows.Forms">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ShowHelp(System.Windows.Forms.Control, System.String)" argnames="parent, url" returntype="System.Void" />
-        <method name="ShowHelp(System.Windows.Forms.Control, System.String, System.Windows.Forms.HelpNavigator)" argnames="parent, url, navigator" returntype="System.Void" />
-        <method name="ShowHelp(System.Windows.Forms.Control, System.String, System.String)" argnames="parent, url, keyword" returntype="System.Void" />
-        <method name="ShowHelp(System.Windows.Forms.Control, System.String, System.Windows.Forms.HelpNavigator, System.Object)" argnames="parent, url, command, param" returntype="System.Void" />
-        <method name="ShowHelpIndex(System.Windows.Forms.Control, System.String)" argnames="parent, url" returntype="System.Void" />
-        <method name="ShowPopup(System.Windows.Forms.Control, System.String, System.Drawing.Point)" argnames="parent, caption, location" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HelpEventArgs" namespace="System.Windows.Forms">
-        <constructor name="HelpEventArgs(System.Drawing.Point)" argnames="mousePos" />
-        <property name="MousePos" propertytype="System.Drawing.Point" />
-        <property name="Handled" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HelpProvider" namespace="System.Windows.Forms">
-        <constructor name="HelpProvider" argnames="" />
-        <property name="HelpNamespace" propertytype="System.String" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="CanExtend(System.Object)" argnames="target" returntype="System.Boolean" />
-        <method name="ResetShowHelp(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Void" />
-        <method name="SetShowHelp(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, value" returntype="System.Void" />
-        <method name="SetHelpNavigator(System.Windows.Forms.Control, System.Windows.Forms.HelpNavigator)" argnames="ctl, navigator" returntype="System.Void" />
-        <method name="SetHelpKeyword(System.Windows.Forms.Control, System.String)" argnames="ctl, keyword" returntype="System.Void" />
-        <method name="SetHelpString(System.Windows.Forms.Control, System.String)" argnames="ctl, helpString" returntype="System.Void" />
-        <method name="GetShowHelp(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Boolean" />
-        <method name="GetHelpString(System.Windows.Forms.Control)" argnames="ctl" returntype="System.String" />
-        <method name="GetHelpNavigator(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Windows.Forms.HelpNavigator" />
-        <method name="GetHelpKeyword(System.Windows.Forms.Control)" argnames="ctl" returntype="System.String" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="Splitter" namespace="System.Windows.Forms">
-        <constructor name="Splitter" argnames="" />
-        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DefaultCursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Horizontal" propertytype="System.Boolean" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="MinExtra" propertytype="System.Int32" />
-        <property name="MinSize" propertytype="System.Int32" />
-        <property name="SplitPosition" propertytype="System.Int32" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="PreFilterMessage(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-        <method name="OnSplitterMoved(System.Windows.Forms.SplitterEventArgs)" argnames="sevent" returntype="System.Void" />
-        <method name="OnSplitterMoving(System.Windows.Forms.SplitterEventArgs)" argnames="sevent" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Enter" />
-        <event name="KeyUp" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="Leave" />
-        <event name="SplitterMoving" />
-        <event name="SplitterMoved" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ImageIndexConverter" namespace="System.Windows.Forms">
-        <constructor name="ImageIndexConverter" argnames="" />
-        <property name="IncludeNoneAsStandardValue" propertytype="System.Boolean" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageList" namespace="System.Windows.Forms">
-        <class name="ImageCollection" namespace="System.Windows.Forms">
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Empty" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Drawing.Image" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Drawing.Icon)" argnames="value" returntype="System.Void" />
-            <method name="Add(System.Drawing.Image)" argnames="value" returntype="System.Void" />
-            <method name="Add(System.Drawing.Image, System.Drawing.Color)" argnames="value, transparentColor" returntype="System.Int32" />
-            <method name="AddStrip(System.Drawing.Image)" argnames="value" returntype="System.Int32" />
-            <method name="Contains(System.Drawing.Image)" argnames="image" returntype="System.Boolean" />
-            <method name="IndexOf(System.Drawing.Image)" argnames="image" returntype="System.Int32" />
-            <method name="Remove(System.Drawing.Image)" argnames="image" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ImageCollection" argnames="" />
-        <constructor name="ImageCollection(System.ComponentModel.IContainer)" argnames="container" />
-        <property name="ColorDepth" propertytype="System.Windows.Forms.ColorDepth" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="HandleCreated" propertytype="System.Boolean" />
-        <property name="Images" propertytype="System.Windows.Forms.ImageList+ImageCollection" />
-        <property name="ImageSize" propertytype="System.Drawing.Size" />
-        <property name="ImageStream" propertytype="System.Windows.Forms.ImageListStreamer" />
-        <property name="TransparentColor" propertytype="System.Drawing.Color" />
-        <property name="UseTransparentColor" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Draw(System.Drawing.Graphics, System.Drawing.Point, System.Int32)" argnames="g, pt, index" returntype="System.Void" />
-        <method name="Draw(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32)" argnames="g, x, y, index" returntype="System.Void" />
-        <method name="Draw(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="g, x, y, width, height, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="RecreateHandle" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ImageCollection" namespace="System.Windows.Forms">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Empty" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Drawing.Image" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Drawing.Icon)" argnames="value" returntype="System.Void" />
-        <method name="Add(System.Drawing.Image)" argnames="value" returntype="System.Void" />
-        <method name="Add(System.Drawing.Image, System.Drawing.Color)" argnames="value, transparentColor" returntype="System.Int32" />
-        <method name="AddStrip(System.Drawing.Image)" argnames="value" returntype="System.Int32" />
-        <method name="Contains(System.Drawing.Image)" argnames="image" returntype="System.Boolean" />
-        <method name="IndexOf(System.Drawing.Image)" argnames="image" returntype="System.Int32" />
-        <method name="Remove(System.Drawing.Image)" argnames="image" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImageListStreamer" namespace="System.Windows.Forms">
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InputLanguageChangedEventArgs" namespace="System.Windows.Forms">
-        <constructor name="InputLanguageChangedEventArgs(System.Globalization.CultureInfo, System.Byte)" argnames="culture, charSet" />
-        <constructor name="InputLanguageChangedEventArgs(System.Windows.Forms.InputLanguage, System.Byte)" argnames="inputLanguage, charSet" />
-        <property name="InputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
-        <property name="Culture" propertytype="System.Globalization.CultureInfo" />
-        <property name="CharSet" propertytype="System.Byte" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InputLanguageChangingEventArgs" namespace="System.Windows.Forms">
-        <constructor name="InputLanguageChangingEventArgs(System.Globalization.CultureInfo, System.Boolean)" argnames="culture, sysCharSet" />
-        <constructor name="InputLanguageChangingEventArgs(System.Windows.Forms.InputLanguage, System.Boolean)" argnames="inputLanguage, sysCharSet" />
-        <property name="InputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
-        <property name="Culture" propertytype="System.Globalization.CultureInfo" />
-        <property name="SysCharSet" propertytype="System.Boolean" />
-        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InputLanguage" namespace="System.Windows.Forms">
-        <property name="Culture" propertytype="System.Globalization.CultureInfo" />
-        <property name="CurrentInputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
-        <property name="DefaultInputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="InstalledInputLanguages" propertytype="System.Windows.Forms.InputLanguageCollection" />
-        <property name="LayoutName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromCulture(System.Globalization.CultureInfo)" argnames="culture" returntype="System.Windows.Forms.InputLanguage" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InputLanguageCollection" namespace="System.Windows.Forms">
-        <property name="Item" propertytype="System.Windows.Forms.InputLanguage" />
-        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.InputLanguage)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.Windows.Forms.InputLanguage[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.Windows.Forms.InputLanguage)" argnames="value" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InvalidateEventArgs" namespace="System.Windows.Forms">
-        <constructor name="InvalidateEventArgs(System.Drawing.Rectangle)" argnames="invalidRect" />
-        <property name="InvalidRect" propertytype="System.Drawing.Rectangle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ItemChangedEventArgs" namespace="System.Windows.Forms">
-        <property name="Index" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ItemCheckEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ItemCheckEventArgs(System.Int32, System.Windows.Forms.CheckState, System.Windows.Forms.CheckState)" argnames="index, newCheckValue, currentValue" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="NewValue" propertytype="System.Windows.Forms.CheckState" />
-        <property name="CurrentValue" propertytype="System.Windows.Forms.CheckState" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ItemDragEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ItemDragEventArgs(System.Windows.Forms.MouseButtons)" argnames="button" />
-        <constructor name="ItemDragEventArgs(System.Windows.Forms.MouseButtons, System.Object)" argnames="button, item" />
-        <property name="Button" propertytype="System.Windows.Forms.MouseButtons" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="KeyEventArgs" namespace="System.Windows.Forms">
-        <constructor name="KeyEventArgs(System.Windows.Forms.Keys)" argnames="keyData" />
-        <property name="Alt" propertytype="System.Boolean" />
-        <property name="Control" propertytype="System.Boolean" />
-        <property name="Handled" propertytype="System.Boolean" />
-        <property name="KeyCode" propertytype="System.Windows.Forms.Keys" />
-        <property name="KeyValue" propertytype="System.Int32" />
-        <property name="KeyData" propertytype="System.Windows.Forms.Keys" />
-        <property name="Modifiers" propertytype="System.Windows.Forms.Keys" />
-        <property name="Shift" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="KeyPressEventArgs" namespace="System.Windows.Forms">
-        <constructor name="KeyPressEventArgs(System.Char)" argnames="keyChar" />
-        <property name="KeyChar" propertytype="System.Char" />
-        <property name="Handled" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="KeysConverter" namespace="System.Windows.Forms">
-        <constructor name="KeysConverter" argnames="" />
-        <property name="KeyNames" propertytype="System.Collections.IDictionary" />
-        <method name="Compare(System.Object, System.Object)" argnames="a, b" returntype="System.Int32" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StatusBar" namespace="System.Windows.Forms">
-        <class name="StatusBarPanelCollection" namespace="System.Windows.Forms">
-            <constructor name="StatusBarPanelCollection(System.Windows.Forms.StatusBar)" argnames="owner" />
-            <property name="Item" propertytype="System.Windows.Forms.StatusBarPanel" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Void" />
-            <method name="Insert(System.Int32, System.Windows.Forms.StatusBarPanel)" argnames="index, value" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.StatusBarPanel[])" argnames="panels" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Int32" />
-            <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.StatusBarPanel" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="StatusBarPanelCollection" argnames="" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="Panels" propertytype="System.Windows.Forms.StatusBar+StatusBarPanelCollection" />
-        <property name="Text" propertytype="System.String" />
-        <property name="ToolTipHandle" propertytype="System.IntPtr" />
-        <property name="ShowPanels" propertytype="System.Boolean" />
-        <property name="SizingGrip" propertytype="System.Boolean" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnDrawItem(System.Windows.Forms.StatusBarDrawItemEventArgs)" argnames="sbdievent" returntype="System.Void" />
-        <method name="OnPanelClick(System.Windows.Forms.StatusBarPanelClickEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="DrawItem" />
-        <event name="PanelClick" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="StatusBarPanelCollection" namespace="System.Windows.Forms">
-        <constructor name="StatusBarPanelCollection(System.Windows.Forms.StatusBar)" argnames="owner" />
-        <property name="Item" propertytype="System.Windows.Forms.StatusBarPanel" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Windows.Forms.StatusBarPanel)" argnames="index, value" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.StatusBarPanel[])" argnames="panels" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Int32" />
-        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.StatusBarPanel" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Tool" namespace="System.Windows.Forms">
-        <constructor name="Tool" argnames="" />
-        <field name="rect" />
-        <field name="text" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LabelEditEventArgs" namespace="System.Windows.Forms">
-        <constructor name="LabelEditEventArgs(System.Int32)" argnames="item" />
-        <constructor name="LabelEditEventArgs(System.Int32, System.String)" argnames="item, label" />
-        <property name="Label" propertytype="System.String" />
-        <property name="Item" propertytype="System.Int32" />
-        <property name="CancelEdit" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LayoutEventArgs" namespace="System.Windows.Forms">
-        <constructor name="LayoutEventArgs(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" />
-        <property name="AffectedControl" propertytype="System.Windows.Forms.Control" />
-        <property name="AffectedProperty" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LinkAreaConverter" namespace="System.Windows.Forms">
-        <constructor name="LinkAreaConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LinkClickedEventArgs" namespace="System.Windows.Forms">
-        <constructor name="LinkClickedEventArgs(System.String)" argnames="linkText" />
-        <property name="LinkText" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TabControl" namespace="System.Windows.Forms">
-        <class name="TabPageCollection" namespace="System.Windows.Forms">
-            <constructor name="TabPageCollection(System.Windows.Forms.TabControl)" argnames="owner" />
-            <property name="Item" propertytype="System.Windows.Forms.TabPage" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.TabPage[])" argnames="pages" returntype="System.Void" />
-            <method name="Contains(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Int32" />
-            <method name="Remove(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="ControlCollection" namespace="System.Windows.Forms">
-            <constructor name="ControlCollection(System.Windows.Forms.TabControl)" argnames="owner" />
-            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ControlCollection" argnames="" />
-        <property name="Alignment" propertytype="System.Windows.Forms.TabAlignment" />
-        <property name="Appearance" propertytype="System.Windows.Forms.TabAppearance" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="DrawMode" propertytype="System.Windows.Forms.TabDrawMode" />
-        <property name="HotTrack" propertytype="System.Boolean" />
-        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ItemSize" propertytype="System.Drawing.Size" />
-        <property name="Multiline" propertytype="System.Boolean" />
-        <property name="Padding" propertytype="System.Drawing.Point" />
-        <property name="RowCount" propertytype="System.Int32" />
-        <property name="SelectedIndex" propertytype="System.Int32" />
-        <property name="SelectedTab" propertytype="System.Windows.Forms.TabPage" />
-        <property name="SelectedTabInternal" propertytype="System.Windows.Forms.TabPage" />
-        <property name="SizeMode" propertytype="System.Windows.Forms.TabSizeMode" />
-        <property name="ShowToolTips" propertytype="System.Boolean" />
-        <property name="TabCount" propertytype="System.Int32" />
-        <property name="TabPages" propertytype="System.Windows.Forms.TabControl+TabPageCollection" />
-        <property name="Text" propertytype="System.String" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="GetItems(System.Type)" argnames="baseType" returntype="System.Object[]" />
-        <method name="GetItems" argnames="" returntype="System.Object[]" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="ke" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetControl(System.Int32)" argnames="index" returntype="System.Windows.Forms.Control" />
-        <method name="GetTabRect(System.Int32)" argnames="index" returntype="System.Drawing.Rectangle" />
-        <method name="GetToolTipText(System.Object)" argnames="item" returntype="System.String" />
-        <method name="RemoveAll" argnames="" returntype="System.Void" />
-        <method name="UpdateTabSelection(System.Boolean)" argnames="uiselected" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="DrawItem" />
-        <event name="SelectedIndexChanged" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="TabPageCollection" namespace="System.Windows.Forms">
-        <constructor name="TabPageCollection(System.Windows.Forms.TabControl)" argnames="owner" />
-        <property name="Item" propertytype="System.Windows.Forms.TabPage" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.TabPage[])" argnames="pages" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Int32" />
-        <method name="Remove(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ControlCollection" namespace="System.Windows.Forms">
-        <constructor name="ControlCollection(System.Windows.Forms.TabControl)" argnames="owner" />
-        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
-        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
-        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LinkLabelLinkClickedEventArgs" namespace="System.Windows.Forms">
-        <constructor name="LinkLabelLinkClickedEventArgs(System.Windows.Forms.LinkLabel.Link)" argnames="link" />
-        <property name="Link" propertytype="System.Windows.Forms.LinkLabel+Link" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListBindingConverter" namespace="System.Windows.Forms">
-        <constructor name="ListBindingConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListViewItemConverter" namespace="System.Windows.Forms">
-        <constructor name="ListViewItemConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolBar" namespace="System.Windows.Forms">
-        <class name="ToolBarButtonCollection" namespace="System.Windows.Forms">
-            <constructor name="ToolBarButtonCollection(System.Windows.Forms.ToolBar)" argnames="owner" />
-            <property name="Item" propertytype="System.Windows.Forms.ToolBarButton" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
-            <method name="Add(System.String)" argnames="text" returntype="System.Int32" />
-            <method name="AddRange(System.Windows.Forms.ToolBarButton[])" argnames="buttons" returntype="System.Void" />
-            <method name="Contains(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
-            <method name="Insert(System.Int32, System.Windows.Forms.ToolBarButton)" argnames="index, button" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ToolBarButtonCollection" argnames="" />
-        <property name="Appearance" propertytype="System.Windows.Forms.ToolBarAppearance" />
-        <property name="AutoSize" propertytype="System.Boolean" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="Buttons" propertytype="System.Windows.Forms.ToolBar+ToolBarButtonCollection" />
-        <property name="ButtonSize" propertytype="System.Drawing.Size" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="Divider" propertytype="System.Boolean" />
-        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="DropDownArrows" propertytype="System.Boolean" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ImageSize" propertytype="System.Drawing.Size" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="PreferredHeight" propertytype="System.Int32" />
-        <property name="PreferredWidth" propertytype="System.Int32" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="ShowToolTips" propertytype="System.Boolean" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TextAlign" propertytype="System.Windows.Forms.ToolBarTextAlign" />
-        <property name="Wrappable" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnButtonDropDown(System.Windows.Forms.ToolBarButtonClickEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnButtonClick(System.Windows.Forms.ToolBarButtonClickEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ButtonClick" />
-        <event name="ButtonDropDown" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ToolBarButtonCollection" namespace="System.Windows.Forms">
-        <constructor name="ToolBarButtonCollection(System.Windows.Forms.ToolBar)" argnames="owner" />
-        <property name="Item" propertytype="System.Windows.Forms.ToolBarButton" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
-        <method name="Add(System.String)" argnames="text" returntype="System.Int32" />
-        <method name="AddRange(System.Windows.Forms.ToolBarButton[])" argnames="buttons" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Windows.Forms.ToolBarButton)" argnames="index, button" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListViewItem" namespace="System.Windows.Forms">
-        <class name="ListViewSubItem" namespace="System.Windows.Forms">
-            <constructor name="ListViewSubItem" argnames="" />
-            <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String)" argnames="owner, text" />
-            <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="owner, text, foreColor, backColor, font" />
-            <property name="BackColor" propertytype="System.Drawing.Color" />
-            <property name="CustomStyle" propertytype="System.Boolean" />
-            <property name="Font" propertytype="System.Drawing.Font" />
-            <property name="ForeColor" propertytype="System.Drawing.Color" />
-            <property name="Text" propertytype="System.String" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" returntype="System.String" />
-            <method name="ResetStyle" argnames="" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="ListViewSubItemCollection" namespace="System.Windows.Forms">
-            <constructor name="ListViewSubItemCollection(System.Windows.Forms.ListViewItem)" argnames="owner" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-            <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-            <method name="Add(System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="text, foreColor, backColor, font" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-            <method name="AddRange(System.Windows.Forms.ListViewItem.ListViewSubItem[])" argnames="items" returntype="System.Void" />
-            <method name="AddRange(System.String[])" argnames="items" returntype="System.Void" />
-            <method name="AddRange(System.String[], System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="items, foreColor, backColor, font" returntype="System.Void" />
-            <method name="Contains(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Boolean" />
-            <method name="IndexOf(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Int32" />
-            <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="index, item" returntype="System.Void" />
-            <method name="Remove(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ListViewSubItemCollection" argnames="" />
-        <constructor name="ListViewSubItemCollection(System.String)" argnames="text" />
-        <constructor name="ListViewSubItemCollection(System.String, System.Int32)" argnames="text, imageIndex" />
-        <constructor name="ListViewSubItemCollection(System.String[])" argnames="items" />
-        <constructor name="ListViewSubItemCollection(System.String[], System.Int32)" argnames="items, imageIndex" />
-        <constructor name="ListViewSubItemCollection(System.String[], System.Int32, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="items, imageIndex, foreColor, backColor, font" />
-        <constructor name="ListViewSubItemCollection(System.Windows.Forms.ListViewItem.ListViewSubItem[], System.Int32)" argnames="subItems, imageIndex" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="Checked" propertytype="System.Boolean" />
-        <property name="Focused" propertytype="System.Boolean" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="ImageIndex" propertytype="System.Int32" />
-        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="ListView" propertytype="System.Windows.Forms.ListView" />
-        <property name="SavedStateImageIndex" propertytype="System.Int32" />
-        <property name="Selected" propertytype="System.Boolean" />
-        <property name="StateImageIndex" propertytype="System.Int32" />
-        <property name="StateSelected" propertytype="System.Boolean" />
-        <property name="SubItemCount" propertytype="System.Int32" />
-        <property name="SubItems" propertytype="System.Windows.Forms.ListViewItem+ListViewSubItemCollection" />
-        <property name="Tag" propertytype="System.Object" />
-        <property name="Text" propertytype="System.String" />
-        <property name="UseItemStyleForSubItems" propertytype="System.Boolean" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="Serialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="Deserialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="Remove" argnames="" returntype="System.Void" />
-        <method name="EnsureVisible" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="BeginEdit" argnames="" returntype="System.Void" />
-        <method name="GetBounds(System.Windows.Forms.ItemBoundsPortion)" argnames="portion" returntype="System.Drawing.Rectangle" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListViewSubItem" namespace="System.Windows.Forms">
-        <constructor name="ListViewSubItem" argnames="" />
-        <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String)" argnames="owner, text" />
-        <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="owner, text, foreColor, backColor, font" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="CustomStyle" propertytype="System.Boolean" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Text" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetStyle" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListViewSubItemCollection" namespace="System.Windows.Forms">
-        <constructor name="ListViewSubItemCollection(System.Windows.Forms.ListViewItem)" argnames="owner" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-        <method name="Add(System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="text, foreColor, backColor, font" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
-        <method name="AddRange(System.Windows.Forms.ListViewItem.ListViewSubItem[])" argnames="items" returntype="System.Void" />
-        <method name="AddRange(System.String[])" argnames="items" returntype="System.Void" />
-        <method name="AddRange(System.String[], System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="items, foreColor, backColor, font" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="index, item" returntype="System.Void" />
-        <method name="Remove(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MainMenu" namespace="System.Windows.Forms">
-        <constructor name="MainMenu" argnames="" />
-        <constructor name="MainMenu(System.Windows.Forms.MenuItem[])" argnames="items" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Handle" inherited="System.Windows.Forms.Menu" propertytype="System.IntPtr" />
-        <property name="IsParent" inherited="System.Windows.Forms.Menu" propertytype="System.Boolean" />
-        <property name="MdiListItem" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.MenuItem" />
-        <property name="MenuItems" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="CloneMenu" argnames="" returntype="System.Windows.Forms.MainMenu" />
-        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
-        <method name="CreateMenuHandle" argnames="" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetForm" argnames="" returntype="System.Windows.Forms.Form" />
-        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
-        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MenuItem" />
-        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" inherited="System.Windows.Forms.Menu" returntype="System.Int32" />
-        <method name="GetContextMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.ContextMenu" />
-        <method name="GetMainMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MainMenu" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="TrackBar" namespace="System.Windows.Forms">
-        <constructor name="TrackBar" argnames="" />
-        <property name="AutoSize" propertytype="System.Boolean" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="LargeChange" propertytype="System.Int32" />
-        <property name="Maximum" propertytype="System.Int32" />
-        <property name="Minimum" propertytype="System.Int32" />
-        <property name="Orientation" propertytype="System.Windows.Forms.Orientation" />
-        <property name="PreferredDimension" propertytype="System.Int32" />
-        <property name="SmallChange" propertytype="System.Int32" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TickStyle" propertytype="System.Windows.Forms.TickStyle" />
-        <property name="TickFrequency" propertytype="System.Int32" />
-        <property name="Value" propertytype="System.Int32" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="OnValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="SetRange(System.Int32, System.Int32)" argnames="minValue, maxValue" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" />
-        <event name="DoubleClick" />
-        <event name="Scroll" />
-        <event name="Paint" />
-        <event name="ValueChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="MeasureItemEventArgs" namespace="System.Windows.Forms">
-        <constructor name="MeasureItemEventArgs(System.Drawing.Graphics, System.Int32, System.Int32)" argnames="graphics, index, itemHeight" />
-        <constructor name="MeasureItemEventArgs(System.Drawing.Graphics, System.Int32)" argnames="graphics, index" />
-        <property name="Graphics" propertytype="System.Drawing.Graphics" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="ItemHeight" propertytype="System.Int32" />
-        <property name="ItemWidth" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TreeView" namespace="System.Windows.Forms">
-        <constructor name="TreeView" argnames="" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CheckBoxes" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="FullRowSelect" propertytype="System.Boolean" />
-        <property name="HideSelection" propertytype="System.Boolean" />
-        <property name="HotTracking" propertytype="System.Boolean" />
-        <property name="ImageIndex" propertytype="System.Int32" />
-        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="Indent" propertytype="System.Int32" />
-        <property name="ItemHeight" propertytype="System.Int32" />
-        <property name="LabelEdit" propertytype="System.Boolean" />
-        <property name="Nodes" propertytype="System.Windows.Forms.TreeNodeCollection" />
-        <property name="PathSeparator" propertytype="System.String" />
-        <property name="Scrollable" propertytype="System.Boolean" />
-        <property name="SelectedImageIndex" propertytype="System.Int32" />
-        <property name="SelectedNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="ShowLines" propertytype="System.Boolean" />
-        <property name="ShowPlusMinus" propertytype="System.Boolean" />
-        <property name="ShowRootLines" propertytype="System.Boolean" />
-        <property name="Sorted" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TopNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="VisibleCount" propertytype="System.Int32" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnAfterSelect(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBeforeSelect(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAfterExpand(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBeforeExpand(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAfterCollapse(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBeforeCollapse(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAfterCheck(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBeforeCheck(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAfterLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnBeforeLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="BeginUpdate" argnames="" returntype="System.Void" />
-        <method name="CollapseAll" argnames="" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" returntype="System.Void" />
-        <method name="ExpandAll" argnames="" returntype="System.Void" />
-        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" returntype="System.Int32" />
-        <method name="GetNodeAt(System.Drawing.Point)" argnames="pt" returntype="System.Windows.Forms.TreeNode" />
-        <method name="GetNodeAt(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.TreeNode" />
-        <method name="GetItemRenderStyles(System.Windows.Forms.TreeNode, System.Int32)" argnames="node, state" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BeforeLabelEdit" />
-        <event name="AfterLabelEdit" />
-        <event name="BeforeCheck" />
-        <event name="AfterCheck" />
-        <event name="BeforeCollapse" />
-        <event name="AfterCollapse" />
-        <event name="BeforeExpand" />
-        <event name="AfterExpand" />
-        <event name="ItemDrag" />
-        <event name="BeforeSelect" />
-        <event name="AfterSelect" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="MenuItem" namespace="System.Windows.Forms">
-        <constructor name="MenuItem" argnames="" />
-        <constructor name="MenuItem(System.String)" argnames="text" />
-        <constructor name="MenuItem(System.String, System.EventHandler)" argnames="text, onClick" />
-        <constructor name="MenuItem(System.String, System.EventHandler, System.Windows.Forms.Shortcut)" argnames="text, onClick, shortcut" />
-        <constructor name="MenuItem(System.String, System.Windows.Forms.MenuItem[])" argnames="text, items" />
-        <constructor name="MenuItem(System.Windows.Forms.MenuMerge, System.Int32, System.Windows.Forms.Shortcut, System.String, System.EventHandler, System.EventHandler, System.EventHandler, System.Windows.Forms.MenuItem[])" argnames="mergeType, mergeOrder, shortcut, text, onClick, onPopup, onSelect, items" />
-        <property name="BarBreak" propertytype="System.Boolean" />
-        <property name="Break" propertytype="System.Boolean" />
-        <property name="Checked" propertytype="System.Boolean" />
-        <property name="DefaultItem" propertytype="System.Boolean" />
-        <property name="OwnerDraw" propertytype="System.Boolean" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="IsParent" propertytype="System.Boolean" />
-        <property name="MdiList" propertytype="System.Boolean" />
-        <property name="MenuID" propertytype="System.Int32" />
-        <property name="MenuIndex" propertytype="System.Int32" />
-        <property name="MergeType" propertytype="System.Windows.Forms.MenuMerge" />
-        <property name="MergeOrder" propertytype="System.Int32" />
-        <property name="Mnemonic" propertytype="System.Char" />
-        <property name="Parent" propertytype="System.Windows.Forms.Menu" />
-        <property name="RadioCheck" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Shortcut" propertytype="System.Windows.Forms.Shortcut" />
-        <property name="ShowShortcut" propertytype="System.Boolean" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="ParentIsRightToLeft" propertytype="System.Boolean" />
-        <property name="Handle" inherited="System.Windows.Forms.Menu" propertytype="System.IntPtr" />
-        <property name="MdiListItem" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.MenuItem" />
-        <property name="MenuItems" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="PerformSelect" argnames="" returntype="System.Void" />
-        <method name="OnInitMenuPopup(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSelect(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnPopup(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="MergeMenu" argnames="" returntype="System.Windows.Forms.MenuItem" />
-        <method name="CloneMenu" argnames="" returntype="System.Windows.Forms.MenuItem" />
-        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
-        <method name="CreateMenuHandle" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CloneMenu(System.Windows.Forms.MenuItem)" argnames="itemSrc" returntype="System.Void" />
-        <method name="MergeMenu(System.Windows.Forms.MenuItem)" argnames="itemSrc" returntype="System.Void" />
-        <method name="PerformClick" argnames="" returntype="System.Void" />
-        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
-        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MenuItem" />
-        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" inherited="System.Windows.Forms.Menu" returntype="System.Int32" />
-        <method name="GetContextMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.ContextMenu" />
-        <method name="GetMainMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MainMenu" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" />
-        <event name="DrawItem" />
-        <event name="MeasureItem" />
-        <event name="Popup" />
-        <event name="Select" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="MessageBox" namespace="System.Windows.Forms">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton, System.Windows.Forms.MessageBoxOptions)" argnames="text, caption, buttons, icon, defaultButton, options" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton)" argnames="text, caption, buttons, icon, defaultButton" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon)" argnames="text, caption, buttons, icon" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons)" argnames="text, caption, buttons" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.String, System.String)" argnames="text, caption" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.String)" argnames="text" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton, System.Windows.Forms.MessageBoxOptions)" argnames="owner, text, caption, buttons, icon, defaultButton, options" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton)" argnames="owner, text, caption, buttons, icon, defaultButton" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon)" argnames="owner, text, caption, buttons, icon" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons)" argnames="owner, text, caption, buttons" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String)" argnames="owner, text, caption" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Show(System.Windows.Forms.IWin32Window, System.String)" argnames="owner, text" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProgressBar" namespace="System.Windows.Forms">
-        <constructor name="ProgressBar" argnames="" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="CausesValidation" propertytype="System.Boolean" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="Maximum" propertytype="System.Int32" />
-        <property name="Minimum" propertytype="System.Int32" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Step" propertytype="System.Int32" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Value" propertytype="System.Int32" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Increment(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="PerformStep" argnames="" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="DoubleClick" />
-        <event name="KeyUp" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="Enter" />
-        <event name="Leave" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="MouseEventArgs" namespace="System.Windows.Forms">
-        <constructor name="MouseEventArgs(System.Windows.Forms.MouseButtons, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="button, clicks, x, y, delta" />
-        <property name="Button" propertytype="System.Windows.Forms.MouseButtons" />
-        <property name="Clicks" propertytype="System.Int32" />
-        <property name="X" propertytype="System.Int32" />
-        <property name="Y" propertytype="System.Int32" />
-        <property name="Delta" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FONTDESC" namespace="System.Windows.Forms">
-        <constructor name="FONTDESC" argnames="" />
-        <field name="cbSizeOfStruct" />
-        <field name="lpstrName" />
-        <field name="cySize" />
-        <field name="sWeight" />
-        <field name="sCharset" />
-        <field name="fItalic" />
-        <field name="fUnderline" />
-        <field name="fStrikethrough" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PICTDESCbmp" namespace="System.Windows.Forms">
-        <constructor name="PICTDESCbmp(System.Drawing.Bitmap)" argnames="bitmap" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PICTDESCicon" namespace="System.Windows.Forms">
-        <constructor name="PICTDESCicon(System.Drawing.Icon)" argnames="icon" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PICTDESCemf" namespace="System.Windows.Forms">
-        <constructor name="PICTDESCemf(System.Drawing.Imaging.Metafile)" argnames="metafile" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="USEROBJECTFLAGS" namespace="System.Windows.Forms">
-        <constructor name="USEROBJECTFLAGS" argnames="" />
-        <field name="fInherit" />
-        <field name="fReserved" />
-        <field name="dwFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HH_AKLINK" namespace="System.Windows.Forms">
-        <constructor name="HH_AKLINK" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HH_POPUP" namespace="System.Windows.Forms">
-        <constructor name="HH_POPUP" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HH_FTS_QUERY" namespace="System.Windows.Forms">
-        <constructor name="HH_FTS_QUERY" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MONITORINFOEX" namespace="System.Windows.Forms">
-        <constructor name="MONITORINFOEX" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MONITORINFO" namespace="System.Windows.Forms">
-        <constructor name="MONITORINFO" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EDITSTREAM" namespace="System.Windows.Forms">
-        <constructor name="EDITSTREAM" argnames="" />
-        <field name="dwCookie" />
-        <field name="dwError" />
-        <field name="pfnCallback" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="INITCOMMONCONTROLSEX" namespace="System.Windows.Forms">
-        <constructor name="INITCOMMONCONTROLSEX" argnames="" />
-        <field name="dwSize" />
-        <field name="dwICC" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IMAGELISTDRAWPARAMS" namespace="System.Windows.Forms">
-        <constructor name="IMAGELISTDRAWPARAMS" argnames="" />
-        <field name="cbSize" />
-        <field name="himl" />
-        <field name="i" />
-        <field name="hdcDst" />
-        <field name="x" />
-        <field name="y" />
-        <field name="cx" />
-        <field name="cy" />
-        <field name="xBitmap" />
-        <field name="yBitmap" />
-        <field name="rgbBk" />
-        <field name="rgbFg" />
-        <field name="fStyle" />
-        <field name="dwRop" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IMAGEINFO" namespace="System.Windows.Forms">
-        <constructor name="IMAGEINFO" argnames="" />
-        <field name="hbmImage" />
-        <field name="hbmMask" />
-        <field name="Unused1" />
-        <field name="Unused2" />
-        <field name="rcImage_left" />
-        <field name="rcImage_top" />
-        <field name="rcImage_right" />
-        <field name="rcImage_bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TRACKMOUSEEVENT" namespace="System.Windows.Forms">
-        <constructor name="TRACKMOUSEEVENT" argnames="" />
-        <field name="cbSize" />
-        <field name="dwFlags" />
-        <field name="hwndTrack" />
-        <field name="dwHoverTime" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="POINT" namespace="System.Windows.Forms">
-        <constructor name="POINT" argnames="" />
-        <constructor name="POINT(System.Int32, System.Int32)" argnames="x, y" />
-        <field name="x" />
-        <field name="y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WNDCLASS" namespace="System.Windows.Forms">
-        <constructor name="WNDCLASS" argnames="" />
-        <field name="style" />
-        <field name="lpfnWndProc" />
-        <field name="cbClsExtra" />
-        <field name="cbWndExtra" />
-        <field name="hInstance" />
-        <field name="hIcon" />
-        <field name="hCursor" />
-        <field name="hbrBackground" />
-        <field name="lpszMenuName" />
-        <field name="lpszClassName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WNDCLASS_I" namespace="System.Windows.Forms">
-        <constructor name="WNDCLASS_I" argnames="" />
-        <field name="style" />
-        <field name="lpfnWndProc" />
-        <field name="cbClsExtra" />
-        <field name="cbWndExtra" />
-        <field name="hInstance" />
-        <field name="hIcon" />
-        <field name="hCursor" />
-        <field name="hbrBackground" />
-        <field name="lpszMenuName" />
-        <field name="lpszClassName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NONCLIENTMETRICS" namespace="System.Windows.Forms">
-        <constructor name="NONCLIENTMETRICS" argnames="" />
-        <field name="cbSize" />
-        <field name="iBorderWidth" />
-        <field name="iScrollWidth" />
-        <field name="iScrollHeight" />
-        <field name="iCaptionWidth" />
-        <field name="iCaptionHeight" />
-        <field name="lfCaptionFont" />
-        <field name="iSmCaptionWidth" />
-        <field name="iSmCaptionHeight" />
-        <field name="lfSmCaptionFont" />
-        <field name="iMenuWidth" />
-        <field name="iMenuHeight" />
-        <field name="lfMenuFont" />
-        <field name="lfStatusFont" />
-        <field name="lfMessageFont" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SCROLLINFO" namespace="System.Windows.Forms">
-        <constructor name="SCROLLINFO" argnames="" />
-        <constructor name="SCROLLINFO(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="mask, min, max, page, pos" />
-        <field name="cbSize" />
-        <field name="fMask" />
-        <field name="nMin" />
-        <field name="nMax" />
-        <field name="nPage" />
-        <field name="nPos" />
-        <field name="nTrackPos" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TPMPARAMS" namespace="System.Windows.Forms">
-        <constructor name="TPMPARAMS" argnames="" />
-        <field name="cbSize" />
-        <field name="rcExclude_left" />
-        <field name="rcExclude_top" />
-        <field name="rcExclude_right" />
-        <field name="rcExclude_bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SIZE" namespace="System.Windows.Forms">
-        <constructor name="SIZE" argnames="" />
-        <constructor name="SIZE(System.Int32, System.Int32)" argnames="cx, cy" />
-        <field name="cx" />
-        <field name="cy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="STARTUPINFO" namespace="System.Windows.Forms">
-        <constructor name="STARTUPINFO" argnames="" />
-        <field name="cb" />
-        <field name="lpReserved" />
-        <field name="lpDesktop" />
-        <field name="lpTitle" />
-        <field name="dwX" />
-        <field name="dwY" />
-        <field name="dwXSize" />
-        <field name="dwYSize" />
-        <field name="dwXCountChars" />
-        <field name="dwYCountChars" />
-        <field name="dwFillAttribute" />
-        <field name="dwFlags" />
-        <field name="wShowWindow" />
-        <field name="cbReserved2" />
-        <field name="lpReserved2" />
-        <field name="hStdInput" />
-        <field name="hStdOutput" />
-        <field name="hStdError" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="STARTUPINFO_I" namespace="System.Windows.Forms">
-        <constructor name="STARTUPINFO_I" argnames="" />
-        <field name="cb" />
-        <field name="lpReserved" />
-        <field name="lpDesktop" />
-        <field name="lpTitle" />
-        <field name="dwX" />
-        <field name="dwY" />
-        <field name="dwXSize" />
-        <field name="dwYSize" />
-        <field name="dwXCountChars" />
-        <field name="dwYCountChars" />
-        <field name="dwFillAttribute" />
-        <field name="dwFlags" />
-        <field name="wShowWindow" />
-        <field name="cbReserved2" />
-        <field name="lpReserved2" />
-        <field name="hStdInput" />
-        <field name="hStdOutput" />
-        <field name="hStdError" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PAGESETUPDLG" namespace="System.Windows.Forms">
-        <constructor name="PAGESETUPDLG" argnames="" />
-        <field name="lStructSize" />
-        <field name="hwndOwner" />
-        <field name="hDevMode" />
-        <field name="hDevNames" />
-        <field name="Flags" />
-        <field name="paperSizeX" />
-        <field name="paperSizeY" />
-        <field name="minMarginLeft" />
-        <field name="minMarginTop" />
-        <field name="minMarginRight" />
-        <field name="minMarginBottom" />
-        <field name="marginLeft" />
-        <field name="marginTop" />
-        <field name="marginRight" />
-        <field name="marginBottom" />
-        <field name="hInstance" />
-        <field name="lCustData" />
-        <field name="lpfnPageSetupHook" />
-        <field name="lpfnPagePaintHook" />
-        <field name="lpPageSetupTemplateName" />
-        <field name="hPageSetupTemplate" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PRINTDLG" namespace="System.Windows.Forms">
-        <constructor name="PRINTDLG" argnames="" />
-        <field name="lStructSize" />
-        <field name="hwndOwner" />
-        <field name="hDevMode" />
-        <field name="hDevNames" />
-        <field name="hDC" />
-        <field name="Flags" />
-        <field name="nFromPage" />
-        <field name="nToPage" />
-        <field name="nMinPage" />
-        <field name="nMaxPage" />
-        <field name="nCopies" />
-        <field name="hInstance" />
-        <field name="lCustData" />
-        <field name="lpfnPrintHook" />
-        <field name="lpfnSetupHook" />
-        <field name="lpPrintTemplateName" />
-        <field name="lpSetupTemplateName" />
-        <field name="hPrintTemplate" />
-        <field name="hSetupTemplate" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PICTDESC" namespace="System.Windows.Forms">
-        <constructor name="PICTDESC" argnames="" />
-        <field name="picType" />
-        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
-        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateBitmapPICTDESC(System.IntPtr, System.IntPtr)" argnames="hbitmap, hpal" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
-        <method name="CreateIconPICTDESC(System.IntPtr)" argnames="hicon" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
-        <method name="CreateEnhMetafilePICTDESC(System.IntPtr)" argnames="hEMF" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
-        <method name="CreateWinMetafilePICTDESC(System.IntPtr, System.Int32, System.Int32)" argnames="hmetafile, x, y" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagFONTDESC" namespace="System.Windows.Forms">
-        <constructor name="tagFONTDESC" argnames="" />
-        <field name="cbSizeofstruct" />
-        <field name="lpstrName" />
-        <field name="cySize" />
-        <field name="sWeight" />
-        <field name="sCharset" />
-        <field name="fItalic" />
-        <field name="fUnderline" />
-        <field name="fStrikethrough" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CHOOSECOLOR" namespace="System.Windows.Forms">
-        <constructor name="CHOOSECOLOR" argnames="" />
-        <field name="lStructSize" />
-        <field name="hwndOwner" />
-        <field name="hInstance" />
-        <field name="rgbResult" />
-        <field name="lpCustColors" />
-        <field name="Flags" />
-        <field name="lCustData" />
-        <field name="lpfnHook" />
-        <field name="lpTemplateName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BITMAP" namespace="System.Windows.Forms">
-        <constructor name="BITMAP" argnames="" />
-        <field name="bmType" />
-        <field name="bmWidth" />
-        <field name="bmHeight" />
-        <field name="bmWidthBytes" />
-        <field name="bmPlanes" />
-        <field name="bmBitsPixel" />
-        <field name="bmBits" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DIBSECTION" namespace="System.Windows.Forms">
-        <constructor name="DIBSECTION" argnames="" />
-        <field name="dsBm" />
-        <field name="dsBmih" />
-        <field name="dsBitfields" />
-        <field name="dshSection" />
-        <field name="dsOffset" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LOGPEN" namespace="System.Windows.Forms">
-        <constructor name="LOGPEN" argnames="" />
-        <field name="lopnStyle" />
-        <field name="lopnWidth_x" />
-        <field name="lopnWidth_y" />
-        <field name="lopnColor" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LOGBRUSH" namespace="System.Windows.Forms">
-        <constructor name="LOGBRUSH" argnames="" />
-        <field name="lbStyle" />
-        <field name="lbColor" />
-        <field name="lbHatch" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LOGFONT" namespace="System.Windows.Forms">
-        <constructor name="LOGFONT" argnames="" />
-        <field name="lfHeight" />
-        <field name="lfWidth" />
-        <field name="lfEscapement" />
-        <field name="lfOrientation" />
-        <field name="lfWeight" />
-        <field name="lfItalic" />
-        <field name="lfUnderline" />
-        <field name="lfStrikeOut" />
-        <field name="lfCharSet" />
-        <field name="lfOutPrecision" />
-        <field name="lfClipPrecision" />
-        <field name="lfQuality" />
-        <field name="lfPitchAndFamily" />
-        <field name="lfFaceName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LOGPALETTE" namespace="System.Windows.Forms">
-        <constructor name="LOGPALETTE" argnames="" />
-        <field name="palVersion" />
-        <field name="palNumEntries" />
-        <field name="palPalEntry" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TEXTMETRIC" namespace="System.Windows.Forms">
-        <constructor name="TEXTMETRIC" argnames="" />
-        <field name="tmHeight" />
-        <field name="tmAscent" />
-        <field name="tmDescent" />
-        <field name="tmInternalLeading" />
-        <field name="tmExternalLeading" />
-        <field name="tmAveCharWidth" />
-        <field name="tmMaxCharWidth" />
-        <field name="tmWeight" />
-        <field name="tmOverhang" />
-        <field name="tmDigitizedAspectX" />
-        <field name="tmDigitizedAspectY" />
-        <field name="tmFirstChar" />
-        <field name="tmLastChar" />
-        <field name="tmDefaultChar" />
-        <field name="tmBreakChar" />
-        <field name="tmItalic" />
-        <field name="tmUnderlined" />
-        <field name="tmStruckOut" />
-        <field name="tmPitchAndFamily" />
-        <field name="tmCharSet" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NOTIFYICONDATA" namespace="System.Windows.Forms">
-        <constructor name="NOTIFYICONDATA" argnames="" />
-        <field name="cbSize" />
-        <field name="hWnd" />
-        <field name="uID" />
-        <field name="uFlags" />
-        <field name="uCallbackMessage" />
-        <field name="hIcon" />
-        <field name="szTip" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MENUITEMINFO_T" namespace="System.Windows.Forms">
-        <constructor name="MENUITEMINFO_T" argnames="" />
-        <field name="cbSize" />
-        <field name="fMask" />
-        <field name="fType" />
-        <field name="fState" />
-        <field name="wID" />
-        <field name="hSubMenu" />
-        <field name="hbmpChecked" />
-        <field name="hbmpUnchecked" />
-        <field name="dwItemData" />
-        <field name="dwTypeData" />
-        <field name="cch" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OPENFILENAME_I" namespace="System.Windows.Forms">
-        <constructor name="OPENFILENAME_I" argnames="" />
-        <field name="lStructSize" />
-        <field name="hwndOwner" />
-        <field name="hInstance" />
-        <field name="lpstrFilter" />
-        <field name="lpstrCustomFilter" />
-        <field name="nMaxCustFilter" />
-        <field name="nFilterIndex" />
-        <field name="lpstrFile" />
-        <field name="nMaxFile" />
-        <field name="lpstrFileTitle" />
-        <field name="nMaxFileTitle" />
-        <field name="lpstrInitialDir" />
-        <field name="lpstrTitle" />
-        <field name="Flags" />
-        <field name="nFileOffset" />
-        <field name="nFileExtension" />
-        <field name="lpstrDefExt" />
-        <field name="lCustData" />
-        <field name="lpfnHook" />
-        <field name="lpTemplateName" />
-        <field name="pvReserved" />
-        <field name="dwReserved" />
-        <field name="FlagsEx" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CHOOSEFONT" namespace="System.Windows.Forms">
-        <constructor name="CHOOSEFONT" argnames="" />
-        <field name="lStructSize" />
-        <field name="hwndOwner" />
-        <field name="hDC" />
-        <field name="lpLogFont" />
-        <field name="iPointSize" />
-        <field name="Flags" />
-        <field name="rgbColors" />
-        <field name="lCustData" />
-        <field name="lpfnHook" />
-        <field name="lpTemplateName" />
-        <field name="hInstance" />
-        <field name="lpszStyle" />
-        <field name="nFontType" />
-        <field name="___MISSING_ALIGNMENT__" />
-        <field name="nSizeMin" />
-        <field name="nSizeMax" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BITMAPINFO" namespace="System.Windows.Forms">
-        <constructor name="BITMAPINFO" argnames="" />
-        <field name="bmiHeader_biSize" />
-        <field name="bmiHeader_biWidth" />
-        <field name="bmiHeader_biHeight" />
-        <field name="bmiHeader_biPlanes" />
-        <field name="bmiHeader_biBitCount" />
-        <field name="bmiHeader_biCompression" />
-        <field name="bmiHeader_biSizeImage" />
-        <field name="bmiHeader_biXPelsPerMeter" />
-        <field name="bmiHeader_biYPelsPerMeter" />
-        <field name="bmiHeader_biClrUsed" />
-        <field name="bmiHeader_biClrImportant" />
-        <field name="bmiColors_rgbBlue" />
-        <field name="bmiColors_rgbGreen" />
-        <field name="bmiColors_rgbRed" />
-        <field name="bmiColors_rgbReserved" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BITMAPINFOHEADER" namespace="System.Windows.Forms">
-        <constructor name="BITMAPINFOHEADER" argnames="" />
-        <field name="biSize" />
-        <field name="biWidth" />
-        <field name="biHeight" />
-        <field name="biPlanes" />
-        <field name="biBitCount" />
-        <field name="biCompression" />
-        <field name="biSizeImage" />
-        <field name="biXPelsPerMeter" />
-        <field name="biYPelsPerMeter" />
-        <field name="biClrUsed" />
-        <field name="biClrImportant" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Ole" namespace="System.Windows.Forms">
-        <constructor name="Ole" argnames="" />
-        <field name="PICTYPE_UNINITIALIZED" />
-        <field name="PICTYPE_NONE" />
-        <field name="PICTYPE_BITMAP" />
-        <field name="PICTYPE_METAFILE" />
-        <field name="PICTYPE_ICON" />
-        <field name="PICTYPE_ENHMETAFILE" />
-        <field name="STATFLAG_DEFAULT" />
-        <field name="STATFLAG_NONAME" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FORMATETC" namespace="System.Windows.Forms">
-        <constructor name="FORMATETC" argnames="" />
-        <field name="cfFormat" />
-        <field name="dummy" />
-        <field name="ptd" />
-        <field name="dwAspect" />
-        <field name="lindex" />
-        <field name="tymed" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="STATSTG" namespace="System.Windows.Forms">
-        <constructor name="STATSTG" argnames="" />
-        <field name="pwcsName" />
-        <field name="type" />
-        <field name="cbSize" />
-        <field name="mtime" />
-        <field name="ctime" />
-        <field name="atime" />
-        <field name="grfMode" />
-        <field name="grfLocksSupported" />
-        <field name="clsid_data1" />
-        <field name="clsid_data2" />
-        <field name="clsid_data3" />
-        <field name="clsid_b0" />
-        <field name="clsid_b1" />
-        <field name="clsid_b2" />
-        <field name="clsid_b3" />
-        <field name="clsid_b4" />
-        <field name="clsid_b5" />
-        <field name="clsid_b6" />
-        <field name="clsid_b7" />
-        <field name="grfStateBits" />
-        <field name="reserved" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FILETIME" namespace="System.Windows.Forms">
-        <constructor name="FILETIME" argnames="" />
-        <field name="dwLowDateTime" />
-        <field name="dwHighDateTime" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OVERLAPPED" namespace="System.Windows.Forms">
-        <constructor name="OVERLAPPED" argnames="" />
-        <field name="Internal" />
-        <field name="InternalHigh" />
-        <field name="Offset" />
-        <field name="OffsetHigh" />
-        <field name="hEvent" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SYSTEMTIME" namespace="System.Windows.Forms">
-        <constructor name="SYSTEMTIME" argnames="" />
-        <field name="wYear" />
-        <field name="wMonth" />
-        <field name="wDayOfWeek" />
-        <field name="wDay" />
-        <field name="wHour" />
-        <field name="wMinute" />
-        <field name="wSecond" />
-        <field name="wMilliseconds" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="STGMEDIUM" namespace="System.Windows.Forms">
-        <constructor name="STGMEDIUM" argnames="" />
-        <field name="tymed" />
-        <field name="unionmember" />
-        <field name="pUnkForRelease" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="_POINTL" namespace="System.Windows.Forms">
-        <constructor name="_POINTL" argnames="" />
-        <field name="x" />
-        <field name="y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagSIZE" namespace="System.Windows.Forms">
-        <constructor name="tagSIZE" argnames="" />
-        <field name="cx" />
-        <field name="cy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="COMRECT" namespace="System.Windows.Forms">
-        <constructor name="COMRECT" argnames="" />
-        <constructor name="COMRECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
-        <field name="left" />
-        <field name="top" />
-        <field name="right" />
-        <field name="bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Windows.Forms.NativeMethods+COMRECT" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagOleMenuGroupWidths" namespace="System.Windows.Forms">
-        <constructor name="tagOleMenuGroupWidths" argnames="" />
-        <field name="widths" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MSOCRINFOSTRUCT" namespace="System.Windows.Forms">
-        <constructor name="MSOCRINFOSTRUCT" argnames="" />
-        <field name="cbSize" />
-        <field name="uIdleTimeInterval" />
-        <field name="grfcrf" />
-        <field name="grfcadvf" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ConnectionPointCookie" namespace="System.Windows.Forms">
-        <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type)" argnames="source, sink, eventInterface" />
-        <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type, System.Boolean)" argnames="source, sink, eventInterface, throwException" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Disconnect" argnames="" returntype="System.Void" />
-        <method name="Disconnect(System.Boolean)" argnames="release" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagPOINTF" namespace="System.Windows.Forms">
-        <constructor name="tagPOINTF" argnames="" />
-        <field name="x" />
-        <field name="y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagOIFI" namespace="System.Windows.Forms">
-        <constructor name="tagOIFI" argnames="" />
-        <field name="cb" />
-        <field name="fMDIApp" />
-        <field name="hwndFrame" />
-        <field name="hAccel" />
-        <field name="cAccelEntries" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagSIZEL" namespace="System.Windows.Forms">
-        <constructor name="tagSIZEL" argnames="" />
-        <field name="cx" />
-        <field name="cy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagOLEVERB" namespace="System.Windows.Forms">
-        <constructor name="tagOLEVERB" argnames="" />
-        <field name="lVerb" />
-        <field name="lpszVerbName" />
-        <field name="fuFlags" />
-        <field name="grfAttribs" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagLOGPALETTE" namespace="System.Windows.Forms">
-        <constructor name="tagLOGPALETTE" argnames="" />
-        <field name="palVersion" />
-        <field name="palNumEntries" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagCONTROLINFO" namespace="System.Windows.Forms">
-        <constructor name="tagCONTROLINFO" argnames="" />
-        <field name="cb" />
-        <field name="hAccel" />
-        <field name="cAccel" />
-        <field name="dwFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CA_STRUCT" namespace="System.Windows.Forms">
-        <constructor name="CA_STRUCT" argnames="" />
-        <field name="cElems" />
-        <field name="pElems" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="VARIANT" namespace="System.Windows.Forms">
-        <constructor name="VARIANT" argnames="" />
-        <field name="vt" />
-        <field name="reserved1" />
-        <field name="reserved2" />
-        <field name="reserved3" />
-        <field name="data1" />
-        <field name="data2" />
-        <property name="Byref" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="FromObject(System.Object)" argnames="var" returntype="System.Windows.Forms.NativeMethods+VARIANT" />
-        <method name="SetLong(System.Int64)" argnames="lVal" returntype="System.Void" />
-        <method name="ToCoTaskMemPtr" argnames="" returntype="System.IntPtr" />
-        <method name="ToObject" argnames="" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagLICINFO" namespace="System.Windows.Forms">
-        <constructor name="tagLICINFO" argnames="" />
-        <field name="cbLicInfo" />
-        <field name="fRuntimeAvailable" />
-        <field name="fLicVerified" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WNDCLASS_D" namespace="System.Windows.Forms">
-        <constructor name="WNDCLASS_D" argnames="" />
-        <field name="style" />
-        <field name="lpfnWndProc" />
-        <field name="cbClsExtra" />
-        <field name="cbWndExtra" />
-        <field name="hInstance" />
-        <field name="hIcon" />
-        <field name="hCursor" />
-        <field name="hbrBackground" />
-        <field name="lpszMenuName" />
-        <field name="lpszClassName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MSOCM" namespace="System.Windows.Forms">
-        <constructor name="MSOCM" argnames="" />
-        <field name="msocrfNeedIdleTime" />
-        <field name="msocrfNeedPeriodicIdleTime" />
-        <field name="msocrfPreTranslateKeys" />
-        <field name="msocrfPreTranslateAll" />
-        <field name="msocrfNeedSpecActiveNotifs" />
-        <field name="msocrfNeedAllActiveNotifs" />
-        <field name="msocrfExclusiveBorderSpace" />
-        <field name="msocrfExclusiveActivation" />
-        <field name="msocrfNeedAllMacEvents" />
-        <field name="msocrfMaster" />
-        <field name="msocadvfModal" />
-        <field name="msocadvfRedrawOff" />
-        <field name="msocadvfWarningsOff" />
-        <field name="msocadvfRecording" />
-        <field name="msochostfExclusiveBorderSpace" />
-        <field name="msoidlefPeriodic" />
-        <field name="msoidlefNonPeriodic" />
-        <field name="msoidlefPriority" />
-        <field name="msoidlefAll" />
-        <field name="msoloopMain" />
-        <field name="msoloopFocusWait" />
-        <field name="msoloopDoEvents" />
-        <field name="msoloopDebug" />
-        <field name="msoloopModalForm" />
-        <field name="msoloopModalAlert" />
-        <field name="msocstateModal" />
-        <field name="msocstateRedrawOff" />
-        <field name="msocstateWarningsOff" />
-        <field name="msocstateRecording" />
-        <field name="msoccontextAll" />
-        <field name="msoccontextMine" />
-        <field name="msoccontextOthers" />
-        <field name="msogacActive" />
-        <field name="msogacTracking" />
-        <field name="msogacTrackingOrActive" />
-        <field name="msocWindowFrameToplevel" />
-        <field name="msocWindowFrameOwner" />
-        <field name="msocWindowComponent" />
-        <field name="msocWindowDlgOwner" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TOOLINFO_T" namespace="System.Windows.Forms">
-        <constructor name="TOOLINFO_T" argnames="" />
-        <field name="cbSize" />
-        <field name="uFlags" />
-        <field name="hwnd" />
-        <field name="uId" />
-        <field name="rect" />
-        <field name="hinst" />
-        <field name="lpszText" />
-        <field name="lParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagDVTARGETDEVICE" namespace="System.Windows.Forms">
-        <constructor name="tagDVTARGETDEVICE" argnames="" />
-        <field name="tdSize" />
-        <field name="tdDriverNameOffset" />
-        <field name="tdDeviceNameOffset" />
-        <field name="tdPortNameOffset" />
-        <field name="tdExtDevmodeOffset" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMTVDISPINFO" namespace="System.Windows.Forms">
-        <constructor name="NMTVDISPINFO" argnames="" />
-        <field name="hdr" />
-        <field name="item" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="POINTL" namespace="System.Windows.Forms">
-        <constructor name="POINTL" argnames="" />
-        <field name="x" />
-        <field name="y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TCITEM_T" namespace="System.Windows.Forms">
-        <constructor name="TCITEM_T" argnames="" />
-        <field name="mask" />
-        <field name="dwState" />
-        <field name="dwStateMask" />
-        <field name="pszText" />
-        <field name="cchTextMax" />
-        <field name="iImage" />
-        <field name="lParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="STATDATA" namespace="System.Windows.Forms">
-        <constructor name="STATDATA" argnames="" />
-        <field name="advf" />
-        <field name="dwConnection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagDISPPARAMS" namespace="System.Windows.Forms">
-        <constructor name="tagDISPPARAMS" argnames="" />
-        <field name="rgvarg" />
-        <field name="rgdispidNamedArgs" />
-        <field name="cArgs" />
-        <field name="cNamedArgs" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagEXCEPINFO" namespace="System.Windows.Forms">
-        <constructor name="tagEXCEPINFO" argnames="" />
-        <field name="wCode" />
-        <field name="wReserved" />
-        <field name="bstrSource" />
-        <field name="bstrDescription" />
-        <field name="bstrHelpFile" />
-        <field name="dwHelpContext" />
-        <field name="pvReserved" />
-        <field name="pfnDeferredFillIn" />
-        <field name="scode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagFUNCDESC" namespace="System.Windows.Forms">
-        <constructor name="tagFUNCDESC" argnames="" />
-        <field name="memid" />
-        <field name="lprgscode" />
-        <field name="lprgelemdescParam" />
-        <field name="funckind" />
-        <field name="invkind" />
-        <field name="callconv" />
-        <field name="cParams" />
-        <field name="cParamsOpt" />
-        <field name="oVft" />
-        <field name="cScodes" />
-        <field name="elemdescFunc" />
-        <field name="wFuncFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagVARDESC" namespace="System.Windows.Forms">
-        <constructor name="tagVARDESC" argnames="" />
-        <field name="memid" />
-        <field name="lpstrSchema" />
-        <field name="unionMember" />
-        <field name="elemdescVar" />
-        <field name="wVarFlags" />
-        <field name="varkind" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DRAWITEMSTRUCT" namespace="System.Windows.Forms">
-        <constructor name="DRAWITEMSTRUCT" argnames="" />
-        <field name="CtlType" />
-        <field name="CtlID" />
-        <field name="itemID" />
-        <field name="itemAction" />
-        <field name="itemState" />
-        <field name="hwndItem" />
-        <field name="hDC" />
-        <field name="rcItem" />
-        <field name="itemData" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MEASUREITEMSTRUCT" namespace="System.Windows.Forms">
-        <constructor name="MEASUREITEMSTRUCT" argnames="" />
-        <field name="CtlType" />
-        <field name="CtlID" />
-        <field name="itemID" />
-        <field name="itemWidth" />
-        <field name="itemHeight" />
-        <field name="itemData" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HELPINFO" namespace="System.Windows.Forms">
-        <constructor name="HELPINFO" argnames="" />
-        <field name="cbSize" />
-        <field name="iContextType" />
-        <field name="iCtrlId" />
-        <field name="hItemHandle" />
-        <field name="dwContextId" />
-        <field name="MousePos" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ACCEL" namespace="System.Windows.Forms">
-        <constructor name="ACCEL" argnames="" />
-        <field name="fVirt" />
-        <field name="key" />
-        <field name="cmd" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MINMAXINFO" namespace="System.Windows.Forms">
-        <constructor name="MINMAXINFO" argnames="" />
-        <field name="ptReserved" />
-        <field name="ptMaxSize" />
-        <field name="ptMaxPosition" />
-        <field name="ptMinTrackSize" />
-        <field name="ptMaxTrackSize" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CREATESTRUCT" namespace="System.Windows.Forms">
-        <constructor name="CREATESTRUCT" argnames="" />
-        <field name="lpCreateParams" />
-        <field name="hInstance" />
-        <field name="hMenu" />
-        <field name="hwndParent" />
-        <field name="cy" />
-        <field name="cx" />
-        <field name="y" />
-        <field name="x" />
-        <field name="style" />
-        <field name="lpszName" />
-        <field name="lpszClass" />
-        <field name="dwExStyle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagCAUUID" namespace="System.Windows.Forms">
-        <constructor name="tagCAUUID" argnames="" />
-        <field name="cElems" />
-        <field name="pElems" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TOOLTIPTEXT" namespace="System.Windows.Forms">
-        <constructor name="TOOLTIPTEXT" argnames="" />
-        <field name="hdr" />
-        <field name="lpszText" />
-        <field name="szText" />
-        <field name="hinst" />
-        <field name="uFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TOOLTIPTEXTA" namespace="System.Windows.Forms">
-        <constructor name="TOOLTIPTEXTA" argnames="" />
-        <field name="hdr" />
-        <field name="lpszText" />
-        <field name="szText" />
-        <field name="hinst" />
-        <field name="uFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TV_HITTESTINFO" namespace="System.Windows.Forms">
-        <constructor name="TV_HITTESTINFO" argnames="" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <field name="flags" />
-        <field name="hItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMTVCUSTOMDRAW" namespace="System.Windows.Forms">
-        <constructor name="NMTVCUSTOMDRAW" argnames="" />
-        <field name="nmcd" />
-        <field name="clrText" />
-        <field name="clrTextBk" />
-        <field name="iLevel" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MCHITTESTINFO" namespace="System.Windows.Forms">
-        <constructor name="MCHITTESTINFO" argnames="" />
-        <field name="cbSize" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <field name="uHit" />
-        <field name="st_wYear" />
-        <field name="st_wMonth" />
-        <field name="st_wDayOfWeek" />
-        <field name="st_wDay" />
-        <field name="st_wHour" />
-        <field name="st_wMinute" />
-        <field name="st_wSecond" />
-        <field name="st_wMilliseconds" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMSELCHANGE" namespace="System.Windows.Forms">
-        <constructor name="NMSELCHANGE" argnames="" />
-        <field name="nmhdr" />
-        <field name="stSelStart" />
-        <field name="stSelEnd" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMDAYSTATE" namespace="System.Windows.Forms">
-        <constructor name="NMDAYSTATE" argnames="" />
-        <field name="nmhdr" />
-        <field name="stStart" />
-        <field name="cDayState" />
-        <field name="prgDayState" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMLVKEYDOWN" namespace="System.Windows.Forms">
-        <constructor name="NMLVKEYDOWN" argnames="" />
-        <field name="hdr" />
-        <field name="wVKey" />
-        <field name="flags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LVHITTESTINFO" namespace="System.Windows.Forms">
-        <constructor name="LVHITTESTINFO" argnames="" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <field name="flags" />
-        <field name="iItem" />
-        <field name="iSubItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LVCOLUMN_T" namespace="System.Windows.Forms">
-        <constructor name="LVCOLUMN_T" argnames="" />
-        <field name="mask" />
-        <field name="fmt" />
-        <field name="cx" />
-        <field name="pszText" />
-        <field name="cchTextMax" />
-        <field name="iSubItem" />
-        <field name="iImage" />
-        <field name="iOrder" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LVCOLUMN" namespace="System.Windows.Forms">
-        <constructor name="LVCOLUMN" argnames="" />
-        <field name="mask" />
-        <field name="fmt" />
-        <field name="cx" />
-        <field name="pszText" />
-        <field name="cchTextMax" />
-        <field name="iSubItem" />
-        <field name="iImage" />
-        <field name="iOrder" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMLVDISPINFO" namespace="System.Windows.Forms">
-        <constructor name="NMLVDISPINFO" argnames="" />
-        <field name="hdr" />
-        <field name="item" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMLVDISPINFO_NOTEXT" namespace="System.Windows.Forms">
-        <constructor name="NMLVDISPINFO_NOTEXT" argnames="" />
-        <field name="hdr" />
-        <field name="item" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CLIENTCREATESTRUCT" namespace="System.Windows.Forms">
-        <constructor name="CLIENTCREATESTRUCT(System.IntPtr, System.Int32)" argnames="hmenu, idFirst" />
-        <field name="hWindowMenu" />
-        <field name="idFirstChild" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMDATETIMECHANGE" namespace="System.Windows.Forms">
-        <constructor name="NMDATETIMECHANGE" argnames="" />
-        <field name="nmhdr" />
-        <field name="dwFlags" />
-        <field name="st" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMDATETIMEFORMAT" namespace="System.Windows.Forms">
-        <constructor name="NMDATETIMEFORMAT" argnames="" />
-        <field name="nmhdr" />
-        <field name="pszFormat" />
-        <field name="st" />
-        <field name="pszDisplay" />
-        <field name="szDisplay" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMDATETIMEFORMATQUERY" namespace="System.Windows.Forms">
-        <constructor name="NMDATETIMEFORMATQUERY" argnames="" />
-        <field name="nmhdr" />
-        <field name="pszFormat" />
-        <field name="szMax" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMDATETIMEWMKEYDOWN" namespace="System.Windows.Forms">
-        <constructor name="NMDATETIMEWMKEYDOWN" argnames="" />
-        <field name="nmhdr" />
-        <field name="nVirtKey" />
-        <field name="pszFormat" />
-        <field name="st" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="COPYDATASTRUCT" namespace="System.Windows.Forms">
-        <constructor name="COPYDATASTRUCT" argnames="" />
-        <field name="dwData" />
-        <field name="cbData" />
-        <field name="lpData" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NMHEADER" namespace="System.Windows.Forms">
-        <constructor name="NMHEADER" argnames="" />
-        <field name="hwndFrom" />
-        <field name="idFrom" />
-        <field name="code" />
-        <field name="iItem" />
-        <field name="iButton" />
-        <field name="pItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MOUSEHOOKSTRUCT" namespace="System.Windows.Forms">
-        <constructor name="MOUSEHOOKSTRUCT" argnames="" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <field name="hWnd" />
-        <field name="wHitTestCode" />
-        <field name="dwExtraInfo" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CHARRANGE" namespace="System.Windows.Forms">
-        <constructor name="CHARRANGE" argnames="" />
-        <field name="cpMin" />
-        <field name="cpMax" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CHARFORMATA" namespace="System.Windows.Forms">
-        <constructor name="CHARFORMATA" argnames="" />
-        <field name="cbSize" />
-        <field name="dwMask" />
-        <field name="dwEffects" />
-        <field name="yHeight" />
-        <field name="yOffset" />
-        <field name="crTextColor" />
-        <field name="bCharSet" />
-        <field name="bPitchAndFamily" />
-        <field name="szFaceName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TEXTRANGE" namespace="System.Windows.Forms">
-        <constructor name="TEXTRANGE" argnames="" />
-        <field name="chrg" />
-        <field name="lpstrText" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SELCHANGE" namespace="System.Windows.Forms">
-        <constructor name="SELCHANGE" argnames="" />
-        <field name="nmhdr" />
-        <field name="chrg" />
-        <field name="seltyp" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PARAFORMAT" namespace="System.Windows.Forms">
-        <constructor name="PARAFORMAT" argnames="" />
-        <field name="cbSize" />
-        <field name="dwMask" />
-        <field name="wNumbering" />
-        <field name="wReserved" />
-        <field name="dxStartIndent" />
-        <field name="dxRightIndent" />
-        <field name="dxOffset" />
-        <field name="wAlignment" />
-        <field name="cTabCount" />
-        <field name="rgxTabs" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FINDTEXT" namespace="System.Windows.Forms">
-        <constructor name="FINDTEXT" argnames="" />
-        <field name="chrg" />
-        <field name="lpstrText" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="REPASTESPECIAL" namespace="System.Windows.Forms">
-        <constructor name="REPASTESPECIAL" argnames="" />
-        <field name="dwAspect" />
-        <field name="dwParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ENLINK" namespace="System.Windows.Forms">
-        <constructor name="ENLINK" argnames="" />
-        <field name="nmhdr" />
-        <field name="msg" />
-        <field name="wParam" />
-        <field name="lParam" />
-        <field name="charrange" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CharBuffer" namespace="System.Windows.Forms">
-        <constructor name="CharBuffer" argnames="" />
-        <method name="PutString(System.String)" argnames="s" returntype="System.Void" />
-        <method name="PutCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
-        <method name="GetString" argnames="" returntype="System.String" />
-        <method name="AllocCoTaskMem" argnames="" returntype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateBuffer(System.Int32)" argnames="size" returntype="System.Windows.Forms.NativeMethods+CharBuffer" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AnsiCharBuffer" namespace="System.Windows.Forms">
-        <constructor name="AnsiCharBuffer(System.Int32)" argnames="size" />
-        <method name="PutString(System.String)" argnames="s" returntype="System.Void" />
-        <method name="PutCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
-        <method name="GetString" argnames="" returntype="System.String" />
-        <method name="AllocCoTaskMem" argnames="" returntype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UnicodeCharBuffer" namespace="System.Windows.Forms">
-        <constructor name="UnicodeCharBuffer(System.Int32)" argnames="size" />
-        <method name="PutString(System.String)" argnames="s" returntype="System.Void" />
-        <method name="PutCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
-        <method name="GetString" argnames="" returntype="System.String" />
-        <method name="AllocCoTaskMem" argnames="" returntype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ENDROPFILES" namespace="System.Windows.Forms">
-        <constructor name="ENDROPFILES" argnames="" />
-        <field name="nmhdr" />
-        <field name="hDrop" />
-        <field name="cp" />
-        <field name="fProtected" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="REQRESIZE" namespace="System.Windows.Forms">
-        <constructor name="REQRESIZE" argnames="" />
-        <field name="nmhdr" />
-        <field name="rc" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ENPROTECTED" namespace="System.Windows.Forms">
-        <constructor name="ENPROTECTED" argnames="" />
-        <field name="nmhdr" />
-        <field name="msg" />
-        <field name="wParam" />
-        <field name="lParam" />
-        <field name="chrg" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ActiveX" namespace="System.Windows.Forms">
-        <constructor name="ActiveX" argnames="" />
-        <field name="IID_IUnknown" />
-        <field name="OCM__BASE" />
-        <field name="DISPID_VALUE" />
-        <field name="DISPID_UNKNOWN" />
-        <field name="DISPID_AUTOSIZE" />
-        <field name="DISPID_BACKCOLOR" />
-        <field name="DISPID_BACKSTYLE" />
-        <field name="DISPID_BORDERCOLOR" />
-        <field name="DISPID_BORDERSTYLE" />
-        <field name="DISPID_BORDERWIDTH" />
-        <field name="DISPID_DRAWMODE" />
-        <field name="DISPID_DRAWSTYLE" />
-        <field name="DISPID_DRAWWIDTH" />
-        <field name="DISPID_FILLCOLOR" />
-        <field name="DISPID_FILLSTYLE" />
-        <field name="DISPID_FONT" />
-        <field name="DISPID_FORECOLOR" />
-        <field name="DISPID_ENABLED" />
-        <field name="DISPID_HWND" />
-        <field name="DISPID_TABSTOP" />
-        <field name="DISPID_TEXT" />
-        <field name="DISPID_CAPTION" />
-        <field name="DISPID_BORDERVISIBLE" />
-        <field name="DISPID_APPEARANCE" />
-        <field name="DISPID_MOUSEPOINTER" />
-        <field name="DISPID_MOUSEICON" />
-        <field name="DISPID_PICTURE" />
-        <field name="DISPID_VALID" />
-        <field name="DISPID_READYSTATE" />
-        <field name="DISPID_REFRESH" />
-        <field name="DISPID_DOCLICK" />
-        <field name="DISPID_ABOUTBOX" />
-        <field name="DISPID_CLICK" />
-        <field name="DISPID_DBLCLICK" />
-        <field name="DISPID_KEYDOWN" />
-        <field name="DISPID_KEYPRESS" />
-        <field name="DISPID_KEYUP" />
-        <field name="DISPID_MOUSEDOWN" />
-        <field name="DISPID_MOUSEMOVE" />
-        <field name="DISPID_MOUSEUP" />
-        <field name="DISPID_ERROREVENT" />
-        <field name="DISPID_RIGHTTOLEFT" />
-        <field name="DISPID_READYSTATECHANGE" />
-        <field name="DISPID_AMBIENT_BACKCOLOR" />
-        <field name="DISPID_AMBIENT_DISPLAYNAME" />
-        <field name="DISPID_AMBIENT_FONT" />
-        <field name="DISPID_AMBIENT_FORECOLOR" />
-        <field name="DISPID_AMBIENT_LOCALEID" />
-        <field name="DISPID_AMBIENT_MESSAGEREFLECT" />
-        <field name="DISPID_AMBIENT_SCALEUNITS" />
-        <field name="DISPID_AMBIENT_TEXTALIGN" />
-        <field name="DISPID_AMBIENT_USERMODE" />
-        <field name="DISPID_AMBIENT_UIDEAD" />
-        <field name="DISPID_AMBIENT_SHOWGRABHANDLES" />
-        <field name="DISPID_AMBIENT_SHOWHATCHING" />
-        <field name="DISPID_AMBIENT_DISPLAYASDEFAULT" />
-        <field name="DISPID_AMBIENT_SUPPORTSMNEMONICS" />
-        <field name="DISPID_AMBIENT_AUTOCLIP" />
-        <field name="DISPID_AMBIENT_APPEARANCE" />
-        <field name="DISPID_AMBIENT_PALETTE" />
-        <field name="DISPID_AMBIENT_TRANSFERPRIORITY" />
-        <field name="DISPID_AMBIENT_RIGHTTOLEFT" />
-        <field name="DISPID_Name" />
-        <field name="DISPID_Delete" />
-        <field name="DISPID_Object" />
-        <field name="DISPID_Parent" />
-        <field name="DVASPECT_CONTENT" />
-        <field name="DVASPECT_THUMBNAIL" />
-        <field name="DVASPECT_ICON" />
-        <field name="DVASPECT_DOCPRINT" />
-        <field name="OLEMISC_RECOMPOSEONRESIZE" />
-        <field name="OLEMISC_ONLYICONIC" />
-        <field name="OLEMISC_INSERTNOTREPLACE" />
-        <field name="OLEMISC_STATIC" />
-        <field name="OLEMISC_CANTLINKINSIDE" />
-        <field name="OLEMISC_CANLINKBYOLE1" />
-        <field name="OLEMISC_ISLINKOBJECT" />
-        <field name="OLEMISC_INSIDEOUT" />
-        <field name="OLEMISC_ACTIVATEWHENVISIBLE" />
-        <field name="OLEMISC_RENDERINGISDEVICEINDEPENDENT" />
-        <field name="OLEMISC_INVISIBLEATRUNTIME" />
-        <field name="OLEMISC_ALWAYSRUN" />
-        <field name="OLEMISC_ACTSLIKEBUTTON" />
-        <field name="OLEMISC_ACTSLIKELABEL" />
-        <field name="OLEMISC_NOUIACTIVATE" />
-        <field name="OLEMISC_ALIGNABLE" />
-        <field name="OLEMISC_SIMPLEFRAME" />
-        <field name="OLEMISC_SETCLIENTSITEFIRST" />
-        <field name="OLEMISC_IMEMODE" />
-        <field name="OLEMISC_IGNOREACTIVATEWHENVISIBLE" />
-        <field name="OLEMISC_WANTSTOMENUMERGE" />
-        <field name="OLEMISC_SUPPORTSMULTILEVELUNDO" />
-        <field name="QACONTAINER_SHOWHATCHING" />
-        <field name="QACONTAINER_SHOWGRABHANDLES" />
-        <field name="QACONTAINER_USERMODE" />
-        <field name="QACONTAINER_DISPLAYASDEFAULT" />
-        <field name="QACONTAINER_UIDEAD" />
-        <field name="QACONTAINER_AUTOCLIP" />
-        <field name="QACONTAINER_MESSAGEREFLECT" />
-        <field name="QACONTAINER_SUPPORTSMNEMONICS" />
-        <field name="XFORMCOORDS_POSITION" />
-        <field name="XFORMCOORDS_SIZE" />
-        <field name="XFORMCOORDS_HIMETRICTOCONTAINER" />
-        <field name="XFORMCOORDS_CONTAINERTOHIMETRIC" />
-        <field name="PROPCAT_Nil" />
-        <field name="PROPCAT_Misc" />
-        <field name="PROPCAT_Font" />
-        <field name="PROPCAT_Position" />
-        <field name="PROPCAT_Appearance" />
-        <field name="PROPCAT_Behavior" />
-        <field name="PROPCAT_Data" />
-        <field name="PROPCAT_List" />
-        <field name="PROPCAT_Text" />
-        <field name="PROPCAT_Scale" />
-        <field name="PROPCAT_DDE" />
-        <field name="GC_WCH_SIBLING" />
-        <field name="GC_WCH_CONTAINER" />
-        <field name="GC_WCH_CONTAINED" />
-        <field name="GC_WCH_ALL" />
-        <field name="GC_WCH_FREVERSEDIR" />
-        <field name="GC_WCH_FONLYNEXT" />
-        <field name="GC_WCH_FONLYPREV" />
-        <field name="GC_WCH_FSELECTED" />
-        <field name="OLECONTF_EMBEDDINGS" />
-        <field name="OLECONTF_LINKS" />
-        <field name="OLECONTF_OTHERS" />
-        <field name="OLECONTF_ONLYUSER" />
-        <field name="OLECONTF_ONLYIFRUNNING" />
-        <field name="ALIGN_MIN" />
-        <field name="ALIGN_NO_CHANGE" />
-        <field name="ALIGN_TOP" />
-        <field name="ALIGN_BOTTOM" />
-        <field name="ALIGN_LEFT" />
-        <field name="ALIGN_RIGHT" />
-        <field name="ALIGN_MAX" />
-        <field name="OLEVERBATTRIB_NEVERDIRTIES" />
-        <field name="OLEVERBATTRIB_ONCONTAINERMENU" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Util" namespace="System.Windows.Forms">
-        <constructor name="Util" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="MAKELONG(System.Int32, System.Int32)" argnames="low, high" returntype="System.Int32" />
-        <method name="MAKELPARAM(System.Int32, System.Int32)" argnames="low, high" returntype="System.IntPtr" />
-        <method name="HIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="HIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="LOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="LOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="SignedHIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="SignedLOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="SignedHIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="SignedLOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="GetPInvokeStringLength(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagTLIBATTR" namespace="System.Windows.Forms">
-        <constructor name="tagTLIBATTR" argnames="" />
-        <field name="guid" />
-        <field name="lcid" />
-        <field name="syskind" />
-        <field name="wMajorVerNum" />
-        <field name="wMinorVerNum" />
-        <field name="wLibFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagTYPEDESC" namespace="System.Windows.Forms">
-        <constructor name="tagTYPEDESC" argnames="" />
-        <field name="unionMember" />
-        <field name="vt" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CommonHandles" namespace="System.Windows.Forms">
-        <constructor name="CommonHandles" argnames="" />
-        <field name="Accelerator" />
-        <field name="Cursor" />
-        <field name="EMF" />
-        <field name="Find" />
-        <field name="GDI" />
-        <field name="HDC" />
-        <field name="Icon" />
-        <field name="Kernel" />
-        <field name="Menu" />
-        <field name="Window" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HandleCollector" namespace="System.Windows.Forms">
-        <constructor name="HandleCollector" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
-        <method name="RegisterType(System.String, System.Int32, System.Int32)" argnames="typeName, expense, initialThreshold" returntype="System.Int32" />
-        <method name="Remove(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="HandleAdded" />
-        <event name="HandleRemoved" />
-    </class>
-    <class name="EVENTMSG" namespace="System.Windows.Forms">
-        <constructor name="EVENTMSG" argnames="" />
-        <field name="message" />
-        <field name="paramL" />
-        <field name="paramH" />
-        <field name="time" />
-        <field name="hwnd" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagTYPEATTR" namespace="System.Windows.Forms">
-        <constructor name="tagTYPEATTR" argnames="" />
-        <field name="guid" />
-        <field name="lcid" />
-        <field name="dwReserved" />
-        <field name="memidConstructor" />
-        <field name="memidDestructor" />
-        <field name="lpstrSchema" />
-        <field name="cbSizeInstance" />
-        <field name="typekind" />
-        <field name="cFuncs" />
-        <field name="cVars" />
-        <field name="cImplTypes" />
-        <field name="cbSizeVft" />
-        <field name="cbAlignment" />
-        <field name="wTypeFlags" />
-        <field name="wMajorVerNum" />
-        <field name="wMinorVerNum" />
-        <field name="tdescAlias_unionMember" />
-        <field name="tdescAlias_vt" />
-        <field name="idldescType_dwReserved" />
-        <field name="idldescType_wIDLFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Get_tdescAlias" argnames="" returntype="System.Windows.Forms.NativeMethods+tagTYPEDESC" />
-        <method name="Get_idldescType" argnames="" returntype="System.Windows.Forms.NativeMethods+tagIDLDESC" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="tagELEMDESC" namespace="System.Windows.Forms">
-        <constructor name="tagELEMDESC" argnames="" />
-        <field name="tdesc" />
-        <field name="paramdesc" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BITMAPINFO_ARRAY" namespace="System.Windows.Forms">
-        <constructor name="BITMAPINFO_ARRAY" argnames="" />
-        <field name="bmiHeader" />
-        <field name="bmiColors" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NavigateEventArgs" namespace="System.Windows.Forms">
-        <constructor name="NavigateEventArgs(System.Boolean)" argnames="isForward" />
-        <property name="Forward" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NodeLabelEditEventArgs" namespace="System.Windows.Forms">
-        <constructor name="NodeLabelEditEventArgs(System.Windows.Forms.TreeNode)" argnames="node" />
-        <constructor name="NodeLabelEditEventArgs(System.Windows.Forms.TreeNode, System.String)" argnames="node, label" />
-        <property name="CancelEdit" propertytype="System.Boolean" />
-        <property name="Label" propertytype="System.String" />
-        <property name="Node" propertytype="System.Windows.Forms.TreeNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NumericUpDown" namespace="System.Windows.Forms">
-        <constructor name="NumericUpDown" argnames="" />
-        <property name="DecimalPlaces" propertytype="System.Int32" />
-        <property name="Hexadecimal" propertytype="System.Boolean" />
-        <property name="Increment" propertytype="System.Decimal" />
-        <property name="Maximum" propertytype="System.Decimal" />
-        <property name="Minimum" propertytype="System.Decimal" />
-        <property name="Text" propertytype="System.String" />
-        <property name="ThousandsSeparator" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.Decimal" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
-        <property name="BackColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="ChangingText" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="CreateParams" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
-        <property name="DockPadding" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="Focused" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="ForeColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
-        <property name="InterceptArrowKeys" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="PreferredHeight" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Int32" />
-        <property name="ReadOnly" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="TextAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="UpDownAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.LeftRightAlignment" />
-        <property name="UserEdit" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="OnValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="ValidateEditText" argnames="" returntype="System.Void" />
-        <method name="UpdateEditText" argnames="" returntype="System.Void" />
-        <method name="UpButton" argnames="" returntype="System.Void" />
-        <method name="OnTextBoxTextChanged(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnTextBoxResize(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnTextBoxLostFocus(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnTextBoxKeyPress(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnTextBoxKeyDown(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnChanged(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="DownButton" argnames="" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ParseEditText" argnames="" returntype="System.Void" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ValueChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="OpacityConverter" namespace="System.Windows.Forms">
-        <constructor name="OpacityConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OpenFileDialog" namespace="System.Windows.Forms">
-        <constructor name="OpenFileDialog" argnames="" />
-        <property name="CheckFileExists" propertytype="System.Boolean" />
-        <property name="Multiselect" propertytype="System.Boolean" />
-        <property name="ReadOnlyChecked" propertytype="System.Boolean" />
-        <property name="ShowReadOnly" propertytype="System.Boolean" />
-        <property name="AddExtension" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="CheckPathExists" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="DefaultExt" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="DereferenceLinks" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="FileName" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="FileNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.String[]" />
-        <property name="Filter" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="FilterIndex" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
-        <property name="InitialDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="Instance" inherited="System.Windows.Forms.FileDialog" propertytype="System.IntPtr" />
-        <property name="Options" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
-        <property name="RestoreDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="ShowHelp" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="Title" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="ValidateNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" inherited="System.Windows.Forms.FileDialog" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.FileDialog" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.FileDialog" returntype="System.String" />
-        <method name="OpenFile" argnames="" returntype="System.IO.Stream" />
-        <method name="OnFileOk(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.FileDialog" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="FileOk" inherited="System.Windows.Forms.FileDialog" />
-        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="OSFeature" namespace="System.Windows.Forms">
-        <constructor name="OSFeature" argnames="" />
-        <field name="LayeredWindows" />
-        <field name="Themes" />
-        <property name="Feature" propertytype="System.Windows.Forms.OSFeature" />
-        <method name="GetVersionPresent(System.Object)" argnames="feature" returntype="System.Version" />
-        <method name="IsPresent(System.Object, System.Version)" argnames="feature, minimumVersion" inherited="System.Windows.Forms.FeatureSupport" returntype="System.Boolean" />
-        <method name="IsPresent(System.Object)" argnames="feature" inherited="System.Windows.Forms.FeatureSupport" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OwnerDrawPropertyBag" namespace="System.Windows.Forms">
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="FontHandle" propertytype="System.IntPtr" />
-        <method name="IsEmpty" argnames="" returntype="System.Boolean" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Copy(System.Windows.Forms.OwnerDrawPropertyBag)" argnames="value" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyGrid" namespace="System.Windows.Forms">
-        <class name="PropertyTabCollection" namespace="System.Windows.Forms">
-            <property name="Count" propertytype="System.Int32" />
-            <property name="Item" propertytype="System.Windows.Forms.Design.PropertyTab" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="AddTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
-            <method name="AddTabType(System.Type, System.ComponentModel.PropertyTabScope)" argnames="propertyTabType, tabScope" returntype="System.Void" />
-            <method name="Clear(System.ComponentModel.PropertyTabScope)" argnames="tabScope" returntype="System.Void" />
-            <method name="RemoveTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="PropertyTabCollection" argnames="" />
-        <property name="ActiveDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <property name="AutoScroll" propertytype="System.Boolean" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BrowsableAttributes" propertytype="System.ComponentModel.AttributeCollection" />
-        <property name="CanCopy" propertytype="System.Boolean" />
-        <property name="CanCut" propertytype="System.Boolean" />
-        <property name="CanPaste" propertytype="System.Boolean" />
-        <property name="CanUndo" propertytype="System.Boolean" />
-        <property name="CanShowCommands" propertytype="System.Boolean" />
-        <property name="CommandsBackColor" propertytype="System.Drawing.Color" />
-        <property name="CommandsForeColor" propertytype="System.Drawing.Color" />
-        <property name="CommandsVisible" propertytype="System.Boolean" />
-        <property name="CommandsVisibleIfAvailable" propertytype="System.Boolean" />
-        <property name="ContextMenuDefaultLocation" propertytype="System.Drawing.Point" />
-        <property name="Controls" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DefaultTabType" propertytype="System.Type" />
-        <property name="DrawFlatToolbar" propertytype="System.Boolean" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="FreezePainting" propertytype="System.Boolean" />
-        <property name="HelpBackColor" propertytype="System.Drawing.Color" />
-        <property name="HelpForeColor" propertytype="System.Drawing.Color" />
-        <property name="HelpVisible" propertytype="System.Boolean" />
-        <property name="LineColor" propertytype="System.Drawing.Color" />
-        <property name="PropertySort" propertytype="System.Windows.Forms.PropertySort" />
-        <property name="PropertyTabs" propertytype="System.Windows.Forms.PropertyGrid+PropertyTabCollection" />
-        <property name="SelectedObject" propertytype="System.Object" />
-        <property name="SelectedObjects" propertytype="System.Object[]" />
-        <property name="SelectedTab" propertytype="System.Windows.Forms.Design.PropertyTab" />
-        <property name="SelectedGridItem" propertytype="System.Windows.Forms.GridItem" />
-        <property name="ShowFocusCues" propertytype="System.Boolean" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="LargeButtons" propertytype="System.Boolean" />
-        <property name="ToolbarVisible" propertytype="System.Boolean" />
-        <property name="ViewBackColor" propertytype="System.Drawing.Color" />
-        <property name="ViewForeColor" propertytype="System.Drawing.Color" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="CreateParams" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnSelectedObjectsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSelectedGridItemChanged(System.Windows.Forms.SelectedGridItemChangedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnPropertyTabChanged(System.Windows.Forms.PropertyTabChangedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnPropertyValueChanged(System.Windows.Forms.PropertyValueChangedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="CreatePropertyTab(System.Type)" argnames="tabType" returntype="System.Windows.Forms.Design.PropertyTab" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="me" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="me" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="me" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="CollapseAllGridItems" argnames="" returntype="System.Void" />
-        <method name="ExpandAllGridItems" argnames="" returntype="System.Void" />
-        <method name="OnComComponentNameChanged(System.ComponentModel.Design.ComponentRenameEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnNotifyPropertyValueUIItemsChanged(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="RefreshTabs(System.ComponentModel.PropertyTabScope)" argnames="tabScope" returntype="System.Void" />
-        <method name="ResetSelectedProperty" argnames="" returntype="System.Void" />
-        <method name="ShowEventsButton(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PropertyValueChanged" />
-        <event name="PropertyTabChanged" />
-        <event name="PropertySortChanged" />
-        <event name="SelectedGridItemChanged" />
-        <event name="SelectedObjectsChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PropertyTabCollection" namespace="System.Windows.Forms">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Windows.Forms.Design.PropertyTab" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
-        <method name="AddTabType(System.Type, System.ComponentModel.PropertyTabScope)" argnames="propertyTabType, tabScope" returntype="System.Void" />
-        <method name="Clear(System.ComponentModel.PropertyTabScope)" argnames="tabScope" returntype="System.Void" />
-        <method name="RemoveTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ButtonBase" namespace="System.Windows.Forms">
-        <class name="ButtonBaseAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="ButtonBaseAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
-            <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-            <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ButtonBaseAccessibleObject" argnames="" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDefault" propertytype="System.Boolean" />
-        <property name="FlatStyle" propertytype="System.Windows.Forms.FlatStyle" />
-        <property name="Image" propertytype="System.Drawing.Image" />
-        <property name="ImageAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="ImageIndex" propertytype="System.Int32" />
-        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="OverChangeRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="OwnerDraw" propertytype="System.Boolean" />
-        <property name="DownChangeRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="MouseIsPressed" propertytype="System.Boolean" />
-        <property name="MouseIsDown" propertytype="System.Boolean" />
-        <property name="MouseIsOver" propertytype="System.Boolean" />
-        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetFlagsandPaint" argnames="" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ButtonBaseAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="ButtonBaseAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
-        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-        <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RadioButton" namespace="System.Windows.Forms">
-        <class name="RadioButtonAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="RadioButtonAccessibleObject(System.Windows.Forms.RadioButton)" argnames="owner" />
-            <property name="DefaultAction" propertytype="System.String" />
-            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="RadioButtonAccessibleObject" argnames="" />
-        <property name="AutoCheck" propertytype="System.Boolean" />
-        <property name="Appearance" propertytype="System.Windows.Forms.Appearance" />
-        <property name="CheckAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="Checked" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="OverChangeRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="DownChangeRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDefault" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Boolean" />
-        <property name="FlatStyle" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.FlatStyle" />
-        <property name="Image" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Image" />
-        <property name="ImageAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
-        <property name="ImageIndex" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Int32" />
-        <property name="ImageList" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnCheckedChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="PerformClick" argnames="" returntype="System.Void" />
-        <method name="ResetFlagsandPaint" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AppearanceChanged" />
-        <event name="CheckedChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="RadioButtonAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="RadioButtonAccessibleObject(System.Windows.Forms.RadioButton)" argnames="owner" />
-        <property name="DefaultAction" propertytype="System.String" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RichTextBox" namespace="System.Windows.Forms">
-        <constructor name="RichTextBox" argnames="" />
-        <property name="RichTextDbg" propertytype="System.Diagnostics.TraceSwitch" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="AutoWordSelection" propertytype="System.Boolean" />
-        <property name="AutoSize" propertytype="System.Boolean" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BulletIndent" propertytype="System.Int32" />
-        <property name="CanRaiseTextChangedEvent" propertytype="System.Boolean" />
-        <property name="CanRedo" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DetectUrls" propertytype="System.Boolean" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="MaxLength" propertytype="System.Int32" />
-        <property name="Multiline" propertytype="System.Boolean" />
-        <property name="RedoActionName" propertytype="System.String" />
-        <property name="RightMargin" propertytype="System.Int32" />
-        <property name="Rtf" propertytype="System.String" />
-        <property name="ScrollBars" propertytype="System.Windows.Forms.RichTextBoxScrollBars" />
-        <property name="SelectionAlignment" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="SelectionBullet" propertytype="System.Boolean" />
-        <property name="SelectionCharOffset" propertytype="System.Int32" />
-        <property name="SelectionColor" propertytype="System.Drawing.Color" />
-        <property name="SelectionFont" propertytype="System.Drawing.Font" />
-        <property name="SelectionHangingIndent" propertytype="System.Int32" />
-        <property name="SelectionIndent" propertytype="System.Int32" />
-        <property name="SelectionLength" propertytype="System.Int32" />
-        <property name="SelectionProtected" propertytype="System.Boolean" />
-        <property name="SelectedRtf" propertytype="System.String" />
-        <property name="SelectionRightIndent" propertytype="System.Int32" />
-        <property name="SelectionTabs" propertytype="System.Int32[]" />
-        <property name="SelectedText" propertytype="System.String" />
-        <property name="SelectionType" propertytype="System.Windows.Forms.RichTextBoxSelectionTypes" />
-        <property name="SetSelectionInCreateHandle" propertytype="System.Boolean" />
-        <property name="ShowSelectionMargin" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TextLength" propertytype="System.Int32" />
-        <property name="UndoActionName" propertytype="System.String" />
-        <property name="ZoomFactor" propertytype="System.Single" />
-        <property name="AcceptsTab" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="CanUndo" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="HideSelection" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="Lines" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String[]" />
-        <property name="Modified" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="PreferredHeight" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="ReadOnly" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="SelectionStart" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
-        <property name="WordWrap" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="CreateRichEditOleCallback" argnames="" returntype="System.Object" />
-        <method name="OnVScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSelectionChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnProtected(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnImeChange(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLinkClicked(System.Windows.Forms.LinkClickedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnHScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnContentsResized(System.Windows.Forms.ContentsResizedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.String" />
-        <method name="CanPaste(System.Windows.Forms.DataFormats.Format)" argnames="clipFormat" returntype="System.Boolean" />
-        <method name="Find(System.String)" argnames="str" returntype="System.Int32" />
-        <method name="Find(System.String, System.Windows.Forms.RichTextBoxFinds)" argnames="str, options" returntype="System.Int32" />
-        <method name="Find(System.String, System.Int32, System.Windows.Forms.RichTextBoxFinds)" argnames="str, start, options" returntype="System.Int32" />
-        <method name="Find(System.String, System.Int32, System.Int32, System.Windows.Forms.RichTextBoxFinds)" argnames="str, start, end, options" returntype="System.Int32" />
-        <method name="Find(System.Char[])" argnames="characterSet" returntype="System.Int32" />
-        <method name="Find(System.Char[], System.Int32)" argnames="characterSet, start" returntype="System.Int32" />
-        <method name="Find(System.Char[], System.Int32, System.Int32)" argnames="characterSet, start, end" returntype="System.Int32" />
-        <method name="GetCharFromPosition(System.Drawing.Point)" argnames="pt" returntype="System.Char" />
-        <method name="GetCharIndexFromPosition(System.Drawing.Point)" argnames="pt" returntype="System.Int32" />
-        <method name="GetLineFromCharIndex(System.Int32)" argnames="index" returntype="System.Int32" />
-        <method name="GetPositionFromCharIndex(System.Int32)" argnames="index" returntype="System.Drawing.Point" />
-        <method name="LoadFile(System.String)" argnames="path" returntype="System.Void" />
-        <method name="LoadFile(System.String, System.Windows.Forms.RichTextBoxStreamType)" argnames="path, fileType" returntype="System.Void" />
-        <method name="LoadFile(System.IO.Stream, System.Windows.Forms.RichTextBoxStreamType)" argnames="data, fileType" returntype="System.Void" />
-        <method name="Paste(System.Windows.Forms.DataFormats.Format)" argnames="clipFormat" returntype="System.Void" />
-        <method name="Redo" argnames="" returntype="System.Void" />
-        <method name="SaveFile(System.String)" argnames="path" returntype="System.Void" />
-        <method name="SaveFile(System.String, System.Windows.Forms.RichTextBoxStreamType)" argnames="path, fileType" returntype="System.Void" />
-        <method name="SaveFile(System.IO.Stream, System.Windows.Forms.RichTextBoxStreamType)" argnames="data, fileType" returntype="System.Void" />
-        <method name="AppendText(System.String)" argnames="text" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ClearUndo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Copy" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Cut" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Paste" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ScrollToCaret" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="SelectAll" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="Undo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ContentsResized" />
-        <event name="DoubleClick" />
-        <event name="DragDrop" />
-        <event name="DragEnter" />
-        <event name="DragLeave" />
-        <event name="DragOver" />
-        <event name="GiveFeedback" />
-        <event name="QueryContinueDrag" />
-        <event name="HScroll" />
-        <event name="LinkClicked" />
-        <event name="ImeChange" />
-        <event name="Protected" />
-        <event name="SelectionChanged" />
-        <event name="VScroll" />
-        <event name="AcceptsTabChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="AutoSizeChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="BorderStyleChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="Click" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="HideSelectionChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="ModifiedChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="MultilineChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="Paint" inherited="System.Windows.Forms.TextBoxBase" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PropertyManager" namespace="System.Windows.Forms">
-        <constructor name="PropertyManager" argnames="" />
-        <property name="Current" propertytype="System.Object" />
-        <property name="BindType" propertytype="System.Type" />
-        <property name="DataSource" propertytype="System.Object" />
-        <property name="IsBinding" propertytype="System.Boolean" />
-        <property name="Position" propertytype="System.Int32" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Bindings" inherited="System.Windows.Forms.BindingManagerBase" propertytype="System.Windows.Forms.BindingsCollection" />
-        <method name="ResumeBinding" argnames="" returntype="System.Void" />
-        <method name="SuspendBinding" argnames="" returntype="System.Void" />
-        <method name="UpdateIsBinding" argnames="" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="AddNew" argnames="" returntype="System.Void" />
-        <method name="EndCurrentEdit" argnames="" returntype="System.Void" />
-        <method name="CancelCurrentEdit" argnames="" returntype="System.Void" />
-        <method name="GetItemProperties(System.Type, System.Int32, System.Collections.ArrayList, System.Collections.ArrayList)" argnames="listType, offset, dataSources, listAccessors" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetItemProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="PullData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
-        <method name="PushData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CurrentChanged" inherited="System.Windows.Forms.BindingManagerBase" />
-        <event name="PositionChanged" inherited="System.Windows.Forms.BindingManagerBase" />
-    </class>
-    <class name="PropertyTabChangedEventArgs" namespace="System.Windows.Forms">
-        <constructor name="PropertyTabChangedEventArgs(System.Windows.Forms.Design.PropertyTab, System.Windows.Forms.Design.PropertyTab)" argnames="oldTab, newTab" />
-        <property name="OldTab" propertytype="System.Windows.Forms.Design.PropertyTab" />
-        <property name="NewTab" propertytype="System.Windows.Forms.Design.PropertyTab" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyValueChangedEventArgs" namespace="System.Windows.Forms">
-        <constructor name="PropertyValueChangedEventArgs(System.Windows.Forms.GridItem, System.Object)" argnames="changedItem, oldValue" />
-        <property name="ChangedItem" propertytype="System.Windows.Forms.GridItem" />
-        <property name="OldValue" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="QueryAccessibilityHelpEventArgs" namespace="System.Windows.Forms">
-        <constructor name="QueryAccessibilityHelpEventArgs" argnames="" />
-        <constructor name="QueryAccessibilityHelpEventArgs(System.String, System.String, System.String)" argnames="helpNamespace, helpString, helpKeyword" />
-        <property name="HelpNamespace" propertytype="System.String" />
-        <property name="HelpString" propertytype="System.String" />
-        <property name="HelpKeyword" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="QueryContinueDragEventArgs" namespace="System.Windows.Forms">
-        <constructor name="QueryContinueDragEventArgs(System.Int32, System.Boolean, System.Windows.Forms.DragAction)" argnames="keyState, escapePressed, action" />
-        <property name="KeyState" propertytype="System.Int32" />
-        <property name="EscapePressed" propertytype="System.Boolean" />
-        <property name="Action" propertytype="System.Windows.Forms.DragAction" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ContentsResizedEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ContentsResizedEventArgs(System.Drawing.Rectangle)" argnames="newRectangle" />
-        <property name="NewRectangle" propertytype="System.Drawing.Rectangle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Cursor" namespace="System.Windows.Forms">
-        <constructor name="Cursor(System.IntPtr)" argnames="handle" />
-        <constructor name="Cursor(System.String)" argnames="fileName" />
-        <constructor name="Cursor(System.Type, System.String)" argnames="type, resource" />
-        <constructor name="Cursor(System.IO.Stream)" argnames="stream" />
-        <property name="Clip" propertytype="System.Drawing.Rectangle" />
-        <property name="Current" propertytype="System.Windows.Forms.Cursor" />
-        <property name="CurrentInternal" propertytype="System.Windows.Forms.Cursor" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="Position" propertytype="System.Drawing.Point" />
-        <property name="Size" propertytype="System.Drawing.Size" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CopyHandle" argnames="" returntype="System.IntPtr" />
-        <method name="Draw(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="g, targetRect" returntype="System.Void" />
-        <method name="DrawStretched(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="g, targetRect" returntype="System.Void" />
-        <method name="Hide" argnames="" returntype="System.Void" />
-        <method name="Show" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Equality(System.Windows.Forms.Cursor, System.Windows.Forms.Cursor)" argnames="left, right" />
-        <operator name="op_Inequality(System.Windows.Forms.Cursor, System.Windows.Forms.Cursor)" argnames="left, right" />
-    </class>
-    <class name="SaveFileDialog" namespace="System.Windows.Forms">
-        <constructor name="SaveFileDialog" argnames="" />
-        <property name="CreatePrompt" propertytype="System.Boolean" />
-        <property name="OverwritePrompt" propertytype="System.Boolean" />
-        <property name="AddExtension" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="CheckFileExists" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="CheckPathExists" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="DefaultExt" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="DereferenceLinks" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="FileName" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="FileNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.String[]" />
-        <property name="Filter" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="FilterIndex" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
-        <property name="InitialDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="Instance" inherited="System.Windows.Forms.FileDialog" propertytype="System.IntPtr" />
-        <property name="Options" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
-        <property name="RestoreDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="ShowHelp" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="Title" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
-        <property name="ValidateNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" inherited="System.Windows.Forms.FileDialog" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.FileDialog" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.FileDialog" returntype="System.String" />
-        <method name="OpenFile" argnames="" returntype="System.IO.Stream" />
-        <method name="OnFileOk(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.FileDialog" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="FileOk" inherited="System.Windows.Forms.FileDialog" />
-        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="Screen" namespace="System.Windows.Forms">
-        <property name="AllScreens" propertytype="System.Windows.Forms.Screen[]" />
-        <property name="BitDepth" propertytype="System.Int32" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="DeviceName" propertytype="System.String" />
-        <property name="Primary" propertytype="System.Boolean" />
-        <property name="PrimaryScreen" propertytype="System.Windows.Forms.Screen" />
-        <property name="WorkingArea" propertytype="System.Drawing.Rectangle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromPoint(System.Drawing.Point)" argnames="point" returntype="System.Windows.Forms.Screen" />
-        <method name="FromRectangle(System.Drawing.Rectangle)" argnames="rect" returntype="System.Windows.Forms.Screen" />
-        <method name="FromControl(System.Windows.Forms.Control)" argnames="control" returntype="System.Windows.Forms.Screen" />
-        <method name="FromHandle(System.IntPtr)" argnames="hwnd" returntype="System.Windows.Forms.Screen" />
-        <method name="GetWorkingArea(System.Drawing.Point)" argnames="pt" returntype="System.Drawing.Rectangle" />
-        <method name="GetWorkingArea(System.Drawing.Rectangle)" argnames="rect" returntype="System.Drawing.Rectangle" />
-        <method name="GetWorkingArea(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Drawing.Rectangle" />
-        <method name="GetBounds(System.Drawing.Point)" argnames="pt" returntype="System.Drawing.Rectangle" />
-        <method name="GetBounds(System.Drawing.Rectangle)" argnames="rect" returntype="System.Drawing.Rectangle" />
-        <method name="GetBounds(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Drawing.Rectangle" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ThreadExceptionDialog" namespace="System.Windows.Forms">
-        <constructor name="ThreadExceptionDialog(System.Exception)" argnames="t" />
-        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
-        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
-        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
-        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
-        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
-        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
-        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
-        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
-        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="Activated" inherited="System.Windows.Forms.Form" />
-        <event name="Closing" inherited="System.Windows.Forms.Form" />
-        <event name="Closed" inherited="System.Windows.Forms.Form" />
-        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
-        <event name="Load" inherited="System.Windows.Forms.Form" />
-        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
-        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
-        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ScrollEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ScrollEventArgs(System.Windows.Forms.ScrollEventType, System.Int32)" argnames="type, newValue" />
-        <property name="Type" propertytype="System.Windows.Forms.ScrollEventType" />
-        <property name="NewValue" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SelectedGridItemChangedEventArgs" namespace="System.Windows.Forms">
-        <constructor name="SelectedGridItemChangedEventArgs(System.Windows.Forms.GridItem, System.Windows.Forms.GridItem)" argnames="oldSel, newSel" />
-        <property name="NewSelection" propertytype="System.Windows.Forms.GridItem" />
-        <property name="OldSelection" propertytype="System.Windows.Forms.GridItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SelectionRange" namespace="System.Windows.Forms">
-        <constructor name="SelectionRange" argnames="" />
-        <constructor name="SelectionRange(System.DateTime, System.DateTime)" argnames="lower, upper" />
-        <constructor name="SelectionRange(System.Windows.Forms.SelectionRange)" argnames="range" />
-        <property name="End" propertytype="System.DateTime" />
-        <property name="Start" propertytype="System.DateTime" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SelectionRangeConverter" namespace="System.Windows.Forms">
-        <constructor name="SelectionRangeConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SendKeys" namespace="System.Windows.Forms">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Send(System.String)" argnames="keys" returntype="System.Void" />
-        <method name="SendWait(System.String)" argnames="keys" returntype="System.Void" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="VScrollBar" namespace="System.Windows.Forms">
-        <constructor name="VScrollBar" argnames="" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="BackColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Image" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="ForeColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
-        <property name="Font" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Font" />
-        <property name="ImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="LargeChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="Maximum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="Minimum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="SmallChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Boolean" />
-        <property name="Text" inherited="System.Windows.Forms.ScrollBar" propertytype="System.String" />
-        <property name="Value" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="OnScroll(System.Windows.Forms.ScrollEventArgs)" argnames="se" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.String" />
-        <method name="UpdateScrollInfo" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="Paint" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="MouseDown" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="MouseUp" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="MouseMove" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="Scroll" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="ValueChanged" inherited="System.Windows.Forms.ScrollBar" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="SplitterEventArgs" namespace="System.Windows.Forms">
-        <constructor name="SplitterEventArgs(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, splitX, splitY" />
-        <property name="X" propertytype="System.Int32" />
-        <property name="Y" propertytype="System.Int32" />
-        <property name="SplitX" propertytype="System.Int32" />
-        <property name="SplitY" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StatusBarDrawItemEventArgs" namespace="System.Windows.Forms">
-        <constructor name="StatusBarDrawItemEventArgs(System.Drawing.Graphics, System.Drawing.Font, System.Drawing.Rectangle, System.Int32, System.Windows.Forms.DrawItemState, System.Windows.Forms.StatusBarPanel)" argnames="g, font, r, itemId, itemState, panel" />
-        <property name="Panel" propertytype="System.Windows.Forms.StatusBarPanel" />
-        <property name="BackColor" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Color" />
-        <property name="Bounds" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Rectangle" />
-        <property name="Font" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Color" />
-        <property name="Graphics" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Graphics" />
-        <property name="Index" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Int32" />
-        <property name="State" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Windows.Forms.DrawItemState" />
-        <method name="DrawFocusRectangle" argnames="" inherited="System.Windows.Forms.DrawItemEventArgs" returntype="System.Void" />
-        <method name="DrawBackground" argnames="" inherited="System.Windows.Forms.DrawItemEventArgs" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StatusBarPanel" namespace="System.Windows.Forms">
-        <constructor name="StatusBarPanel" argnames="" />
-        <property name="Alignment" propertytype="System.Windows.Forms.HorizontalAlignment" />
-        <property name="AutoSize" propertytype="System.Windows.Forms.StatusBarPanelAutoSize" />
-        <property name="BorderStyle" propertytype="System.Windows.Forms.StatusBarPanelBorderStyle" />
-        <property name="Created" propertytype="System.Boolean" />
-        <property name="Icon" propertytype="System.Drawing.Icon" />
-        <property name="MinWidth" propertytype="System.Int32" />
-        <property name="Parent" propertytype="System.Windows.Forms.StatusBar" />
-        <property name="Style" propertytype="System.Windows.Forms.StatusBarPanelStyle" />
-        <property name="Text" propertytype="System.String" />
-        <property name="ToolTipText" propertytype="System.String" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="StatusBarPanelClickEventArgs" namespace="System.Windows.Forms">
-        <constructor name="StatusBarPanelClickEventArgs(System.Windows.Forms.StatusBarPanel, System.Windows.Forms.MouseButtons, System.Int32, System.Int32, System.Int32)" argnames="statusBarPanel, button, clicks, x, y" />
-        <property name="StatusBarPanel" propertytype="System.Windows.Forms.StatusBarPanel" />
-        <property name="Button" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Windows.Forms.MouseButtons" />
-        <property name="Clicks" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
-        <property name="X" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
-        <property name="Y" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
-        <property name="Delta" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SystemInformation" namespace="System.Windows.Forms">
-        <property name="DragFullWindows" propertytype="System.Boolean" />
-        <property name="HighContrast" propertytype="System.Boolean" />
-        <property name="MouseWheelScrollLines" propertytype="System.Int32" />
-        <property name="PrimaryMonitorSize" propertytype="System.Drawing.Size" />
-        <property name="VerticalScrollBarWidth" propertytype="System.Int32" />
-        <property name="HorizontalScrollBarHeight" propertytype="System.Int32" />
-        <property name="CaptionHeight" propertytype="System.Int32" />
-        <property name="BorderSize" propertytype="System.Drawing.Size" />
-        <property name="FixedFrameBorderSize" propertytype="System.Drawing.Size" />
-        <property name="VerticalScrollBarThumbHeight" propertytype="System.Int32" />
-        <property name="HorizontalScrollBarThumbWidth" propertytype="System.Int32" />
-        <property name="IconSize" propertytype="System.Drawing.Size" />
-        <property name="CursorSize" propertytype="System.Drawing.Size" />
-        <property name="MenuFont" propertytype="System.Drawing.Font" />
-        <property name="MenuHeight" propertytype="System.Int32" />
-        <property name="WorkingArea" propertytype="System.Drawing.Rectangle" />
-        <property name="KanjiWindowHeight" propertytype="System.Int32" />
-        <property name="MousePresent" propertytype="System.Boolean" />
-        <property name="VerticalScrollBarArrowHeight" propertytype="System.Int32" />
-        <property name="HorizontalScrollBarArrowWidth" propertytype="System.Int32" />
-        <property name="DebugOS" propertytype="System.Boolean" />
-        <property name="MouseButtonsSwapped" propertytype="System.Boolean" />
-        <property name="MinimumWindowSize" propertytype="System.Drawing.Size" />
-        <property name="CaptionButtonSize" propertytype="System.Drawing.Size" />
-        <property name="FrameBorderSize" propertytype="System.Drawing.Size" />
-        <property name="MinWindowTrackSize" propertytype="System.Drawing.Size" />
-        <property name="DoubleClickSize" propertytype="System.Drawing.Size" />
-        <property name="DoubleClickTime" propertytype="System.Int32" />
-        <property name="IconSpacingSize" propertytype="System.Drawing.Size" />
-        <property name="RightAlignedMenus" propertytype="System.Boolean" />
-        <property name="PenWindows" propertytype="System.Boolean" />
-        <property name="DbcsEnabled" propertytype="System.Boolean" />
-        <property name="MouseButtons" propertytype="System.Int32" />
-        <property name="Secure" propertytype="System.Boolean" />
-        <property name="Border3DSize" propertytype="System.Drawing.Size" />
-        <property name="MinimizedWindowSpacingSize" propertytype="System.Drawing.Size" />
-        <property name="SmallIconSize" propertytype="System.Drawing.Size" />
-        <property name="ToolWindowCaptionHeight" propertytype="System.Int32" />
-        <property name="ToolWindowCaptionButtonSize" propertytype="System.Drawing.Size" />
-        <property name="MenuButtonSize" propertytype="System.Drawing.Size" />
-        <property name="ArrangeStartingPosition" propertytype="System.Windows.Forms.ArrangeStartingPosition" />
-        <property name="ArrangeDirection" propertytype="System.Windows.Forms.ArrangeDirection" />
-        <property name="MinimizedWindowSize" propertytype="System.Drawing.Size" />
-        <property name="MaxWindowTrackSize" propertytype="System.Drawing.Size" />
-        <property name="PrimaryMonitorMaximizedWindowSize" propertytype="System.Drawing.Size" />
-        <property name="Network" propertytype="System.Boolean" />
-        <property name="TerminalServerSession" propertytype="System.Boolean" />
-        <property name="BootMode" propertytype="System.Windows.Forms.BootMode" />
-        <property name="DragSize" propertytype="System.Drawing.Size" />
-        <property name="ShowSounds" propertytype="System.Boolean" />
-        <property name="MenuCheckSize" propertytype="System.Drawing.Size" />
-        <property name="MidEastEnabled" propertytype="System.Boolean" />
-        <property name="MultiMonitorSupport" propertytype="System.Boolean" />
-        <property name="NativeMouseWheelSupport" propertytype="System.Boolean" />
-        <property name="MouseWheelPresent" propertytype="System.Boolean" />
-        <property name="VirtualScreen" propertytype="System.Drawing.Rectangle" />
-        <property name="MonitorCount" propertytype="System.Int32" />
-        <property name="MonitorsSameDisplayFormat" propertytype="System.Boolean" />
-        <property name="ComputerName" propertytype="System.String" />
-        <property name="UserDomainName" propertytype="System.String" />
-        <property name="UserInteractive" propertytype="System.Boolean" />
-        <property name="UserName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UserControl" namespace="System.Windows.Forms">
-        <constructor name="UserControl" argnames="" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="Text" propertytype="System.String" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="CreateParams" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnLoad(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Load" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="BindingContext" namespace="System.Windows.Forms">
-        <constructor name="BindingContext" argnames="" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Windows.Forms.BindingManagerBase" />
-        <property name="Item" propertytype="System.Windows.Forms.BindingManagerBase" />
-        <method name="RemoveCore(System.Object)" argnames="dataSource" returntype="System.Void" />
-        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
-        <method name="ClearCore" argnames="" returntype="System.Void" />
-        <method name="AddCore(System.Object, System.Windows.Forms.BindingManagerBase)" argnames="dataSource, listManager" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Object)" argnames="dataSource" returntype="System.Boolean" />
-        <method name="Contains(System.Object, System.String)" argnames="dataSource, dataMember" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CollectionChanged" />
-    </class>
-    <class name="Timer" namespace="System.Windows.Forms">
-        <constructor name="Timer" argnames="" />
-        <constructor name="Timer(System.ComponentModel.IContainer)" argnames="container" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Interval" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnTick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Start" argnames="" returntype="System.Void" />
-        <method name="Stop" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Tick" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ToolBarButton" namespace="System.Windows.Forms">
-        <constructor name="ToolBarButton" argnames="" />
-        <constructor name="ToolBarButton(System.String)" argnames="text" />
-        <property name="DropDownMenu" propertytype="System.Windows.Forms.Menu" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="ImageIndex" propertytype="System.Int32" />
-        <property name="Parent" propertytype="System.Windows.Forms.ToolBar" />
-        <property name="PartialPush" propertytype="System.Boolean" />
-        <property name="Pushed" propertytype="System.Boolean" />
-        <property name="Rectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="Style" propertytype="System.Windows.Forms.ToolBarButtonStyle" />
-        <property name="Tag" propertytype="System.Object" />
-        <property name="Text" propertytype="System.String" />
-        <property name="ToolTipText" propertytype="System.String" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="Width" propertytype="System.Int16" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ToolBarButtonClickEventArgs" namespace="System.Windows.Forms">
-        <constructor name="ToolBarButtonClickEventArgs(System.Windows.Forms.ToolBarButton)" argnames="button" />
-        <property name="Button" propertytype="System.Windows.Forms.ToolBarButton" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolTip" namespace="System.Windows.Forms">
-        <constructor name="ToolTip(System.ComponentModel.IContainer)" argnames="cont" />
-        <constructor name="ToolTip" argnames="" />
-        <property name="Active" propertytype="System.Boolean" />
-        <property name="AutomaticDelay" propertytype="System.Int32" />
-        <property name="AutoPopDelay" propertytype="System.Int32" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="InitialDelay" propertytype="System.Int32" />
-        <property name="ReshowDelay" propertytype="System.Int32" />
-        <property name="ShowAlways" propertytype="System.Boolean" />
-        <property name="TopLevelControl" propertytype="System.Windows.Forms.Control" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="CanExtend(System.Object)" argnames="target" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetToolTip(System.Windows.Forms.Control)" argnames="control" returntype="System.String" />
-        <method name="RemoveAll" argnames="" returntype="System.Void" />
-        <method name="SetToolTip(System.Windows.Forms.Control, System.String)" argnames="control, caption" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="NotifyIcon" namespace="System.Windows.Forms">
-        <constructor name="NotifyIcon" argnames="" />
-        <constructor name="NotifyIcon(System.ComponentModel.IContainer)" argnames="container" />
-        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Icon" propertytype="System.Drawing.Icon" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" />
-        <event name="DoubleClick" />
-        <event name="MouseDown" />
-        <event name="MouseMove" />
-        <event name="MouseUp" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="TreeNode" namespace="System.Windows.Forms">
-        <constructor name="TreeNode" argnames="" />
-        <constructor name="TreeNode(System.String)" argnames="text" />
-        <constructor name="TreeNode(System.String, System.Windows.Forms.TreeNode[])" argnames="text, children" />
-        <constructor name="TreeNode(System.String, System.Int32, System.Int32)" argnames="text, imageIndex, selectedImageIndex" />
-        <constructor name="TreeNode(System.String, System.Int32, System.Int32, System.Windows.Forms.TreeNode[])" argnames="text, imageIndex, selectedImageIndex, children" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="CheckedInternal" propertytype="System.Boolean" />
-        <property name="Checked" propertytype="System.Boolean" />
-        <property name="FirstNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="FirstVisibleParent" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="FullPath" propertytype="System.String" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="ImageIndex" propertytype="System.Int32" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="IsEditing" propertytype="System.Boolean" />
-        <property name="IsExpanded" propertytype="System.Boolean" />
-        <property name="IsSelected" propertytype="System.Boolean" />
-        <property name="IsVisible" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="NextNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="NextVisibleNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="NodeFont" propertytype="System.Drawing.Font" />
-        <property name="Nodes" propertytype="System.Windows.Forms.TreeNodeCollection" />
-        <property name="Parent" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="PrevNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="PrevVisibleNode" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="SelectedImageIndex" propertytype="System.Int32" />
-        <property name="State" propertytype="System.Int32" />
-        <property name="Tag" propertytype="System.Object" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TreeView" propertytype="System.Windows.Forms.TreeView" />
-        <method name="Clone" argnames="" returntype="System.Object" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="FromHandle(System.Windows.Forms.TreeView, System.IntPtr)" argnames="tree, handle" returntype="System.Windows.Forms.TreeNode" />
-        <method name="BeginEdit" argnames="" returntype="System.Void" />
-        <method name="Collapse" argnames="" returntype="System.Void" />
-        <method name="EndEdit(System.Boolean)" argnames="cancel" returntype="System.Void" />
-        <method name="EnsureVisible" argnames="" returntype="System.Void" />
-        <method name="Expand" argnames="" returntype="System.Void" />
-        <method name="ExpandAll" argnames="" returntype="System.Void" />
-        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" returntype="System.Int32" />
-        <method name="Remove" argnames="" returntype="System.Void" />
-        <method name="Toggle" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TreeNodeCollection" namespace="System.Windows.Forms">
-        <property name="Item" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Windows.Forms.TreeNode)" argnames="index, node" returntype="System.Void" />
-        <method name="Add(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Int32" />
-        <method name="AddRange(System.Windows.Forms.TreeNode[])" argnames="nodes" returntype="System.Void" />
-        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.TreeNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Boolean" />
-        <method name="IndexOf(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Int32" />
-        <method name="Remove(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TreeNodeConverter" namespace="System.Windows.Forms">
-        <constructor name="TreeNodeConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TreeViewCancelEventArgs" namespace="System.Windows.Forms">
-        <constructor name="TreeViewCancelEventArgs(System.Windows.Forms.TreeNode, System.Boolean, System.Windows.Forms.TreeViewAction)" argnames="node, cancel, action" />
-        <property name="Node" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="Action" propertytype="System.Windows.Forms.TreeViewAction" />
-        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TreeViewEventArgs" namespace="System.Windows.Forms">
-        <constructor name="TreeViewEventArgs(System.Windows.Forms.TreeNode)" argnames="node" />
-        <constructor name="TreeViewEventArgs(System.Windows.Forms.TreeNode, System.Windows.Forms.TreeViewAction)" argnames="node, action" />
-        <property name="Node" propertytype="System.Windows.Forms.TreeNode" />
-        <property name="Action" propertytype="System.Windows.Forms.TreeViewAction" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TreeViewImageIndexConverter" namespace="System.Windows.Forms">
-        <constructor name="TreeViewImageIndexConverter" argnames="" />
-        <property name="IncludeNoneAsStandardValue" propertytype="System.Boolean" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UICuesEventArgs" namespace="System.Windows.Forms">
-        <constructor name="UICuesEventArgs(System.Windows.Forms.UICues)" argnames="uicues" />
-        <property name="ShowFocus" propertytype="System.Boolean" />
-        <property name="ShowKeyboard" propertytype="System.Boolean" />
-        <property name="ChangeFocus" propertytype="System.Boolean" />
-        <property name="ChangeKeyboard" propertytype="System.Boolean" />
-        <property name="Changed" propertytype="System.Windows.Forms.UICues" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UpDownEventArgs" namespace="System.Windows.Forms">
-        <constructor name="UpDownEventArgs(System.Int32)" argnames="buttonPushed" />
-        <property name="ButtonID" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ErrorProvider" namespace="System.Windows.Forms">
-        <constructor name="ErrorProvider" argnames="" />
-        <constructor name="ErrorProvider(System.Windows.Forms.ContainerControl)" argnames="parentControl" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="BlinkStyle" propertytype="System.Windows.Forms.ErrorBlinkStyle" />
-        <property name="ContainerControl" propertytype="System.Windows.Forms.ContainerControl" />
-        <property name="DataSource" propertytype="System.Object" />
-        <property name="DataMember" propertytype="System.String" />
-        <property name="BlinkRate" propertytype="System.Int32" />
-        <property name="DefaultIcon" propertytype="System.Drawing.Icon" />
-        <property name="Icon" propertytype="System.Drawing.Icon" />
-        <property name="Region" propertytype="System.Windows.Forms.ErrorProvider+IconRegion" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="BindToDataAndErrors(System.Object, System.String)" argnames="newDataSource, newDataMember" returntype="System.Void" />
-        <method name="UpdateBinding" argnames="" returntype="System.Void" />
-        <method name="GetError(System.Windows.Forms.Control)" argnames="control" returntype="System.String" />
-        <method name="GetIconAlignment(System.Windows.Forms.Control)" argnames="control" returntype="System.Windows.Forms.ErrorIconAlignment" />
-        <method name="GetIconPadding(System.Windows.Forms.Control)" argnames="control" returntype="System.Int32" />
-        <method name="SetError(System.Windows.Forms.Control, System.String)" argnames="control, value" returntype="System.Void" />
-        <method name="SetIconAlignment(System.Windows.Forms.Control, System.Windows.Forms.ErrorIconAlignment)" argnames="control, value" returntype="System.Void" />
-        <method name="SetIconPadding(System.Windows.Forms.Control, System.Int32)" argnames="control, padding" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ArraySubsetEnumerator" namespace="System.Windows.Forms">
-        <constructor name="ArraySubsetEnumerator(System.Object[], System.Int32)" argnames="array, count" />
-        <property name="Current" propertytype="System.Object" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="MoveNext" argnames="" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MonthCalendar" namespace="System.Windows.Forms">
-        <class name="HitTestInfo" namespace="System.Windows.Forms">
-            <property name="Point" propertytype="System.Drawing.Point" />
-            <property name="HitArea" propertytype="System.Windows.Forms.MonthCalendar+HitArea" />
-            <property name="Time" propertytype="System.DateTime" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <enum name="HitArea" namespace="System.Windows.Forms">
-            <field name="Nowhere" />
-            <field name="TitleBackground" />
-            <field name="TitleMonth" />
-            <field name="TitleYear" />
-            <field name="NextMonthButton" />
-            <field name="PrevMonthButton" />
-            <field name="CalendarBackground" />
-            <field name="Date" />
-            <field name="NextMonthDate" />
-            <field name="PrevMonthDate" />
-            <field name="DayOfWeek" />
-            <field name="WeekNumbers" />
-            <field name="TodayLink" />
-            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </enum>
-        <constructor name="HitArea" argnames="" />
-        <property name="AnnuallyBoldedDates" propertytype="System.DateTime[]" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="BoldedDates" propertytype="System.DateTime[]" />
-        <property name="CalendarDimensions" propertytype="System.Drawing.Size" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="FirstDayOfWeek" propertytype="System.Windows.Forms.Day" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="MaxDate" propertytype="System.DateTime" />
-        <property name="MaxSelectionCount" propertytype="System.Int32" />
-        <property name="MinDate" propertytype="System.DateTime" />
-        <property name="MonthlyBoldedDates" propertytype="System.DateTime[]" />
-        <property name="Now" propertytype="System.DateTime" />
-        <property name="ScrollChange" propertytype="System.Int32" />
-        <property name="SelectionEnd" propertytype="System.DateTime" />
-        <property name="SelectionStart" propertytype="System.DateTime" />
-        <property name="SelectionRange" propertytype="System.Windows.Forms.SelectionRange" />
-        <property name="ShowToday" propertytype="System.Boolean" />
-        <property name="ShowTodayCircle" propertytype="System.Boolean" />
-        <property name="ShowWeekNumbers" propertytype="System.Boolean" />
-        <property name="SingleMonthSize" propertytype="System.Drawing.Size" />
-        <property name="Text" propertytype="System.String" />
-        <property name="TodayDate" propertytype="System.DateTime" />
-        <property name="TodayDateSet" propertytype="System.Boolean" />
-        <property name="TitleBackColor" propertytype="System.Drawing.Color" />
-        <property name="TitleForeColor" propertytype="System.Drawing.Color" />
-        <property name="TrailingForeColor" propertytype="System.Drawing.Color" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnDateSelected(System.Windows.Forms.DateRangeEventArgs)" argnames="drevent" returntype="System.Void" />
-        <method name="OnDateChanged(System.Windows.Forms.DateRangeEventArgs)" argnames="drevent" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="AddAnnuallyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
-        <method name="AddBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
-        <method name="AddMonthlyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
-        <method name="GetDisplayRange(System.Boolean)" argnames="visible" returntype="System.Windows.Forms.SelectionRange" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.MonthCalendar+HitTestInfo" />
-        <method name="HitTest(System.Drawing.Point)" argnames="point" returntype="System.Windows.Forms.MonthCalendar+HitTestInfo" />
-        <method name="RemoveAllAnnuallyBoldedDates" argnames="" returntype="System.Void" />
-        <method name="RemoveAllBoldedDates" argnames="" returntype="System.Void" />
-        <method name="RemoveAllMonthlyBoldedDates" argnames="" returntype="System.Void" />
-        <method name="RemoveAnnuallyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
-        <method name="RemoveBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
-        <method name="RemoveMonthlyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
-        <method name="SetCalendarDimensions(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
-        <method name="SetDate(System.DateTime)" argnames="date" returntype="System.Void" />
-        <method name="SetSelectionRange(System.DateTime, System.DateTime)" argnames="date1, date2" returntype="System.Void" />
-        <method name="UpdateBoldedDates" argnames="" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Click" />
-        <event name="DateChanged" />
-        <event name="DateSelected" />
-        <event name="DoubleClick" />
-        <event name="Paint" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="HitTestInfo" namespace="System.Windows.Forms">
-        <property name="Point" propertytype="System.Drawing.Point" />
-        <property name="HitArea" propertytype="System.Windows.Forms.MonthCalendar+HitArea" />
-        <property name="Time" propertytype="System.DateTime" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Application" namespace="System.Windows.Forms">
-        <property name="AllowQuit" propertytype="System.Boolean" />
-        <property name="CommonAppDataRegistry" propertytype="Microsoft.Win32.RegistryKey" />
-        <property name="CommonAppDataPath" propertytype="System.String" />
-        <property name="CompanyName" propertytype="System.String" />
-        <property name="CurrentCulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="CurrentInputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
-        <property name="CustomThreadExceptionHandlerAttached" propertytype="System.Boolean" />
-        <property name="ExecutablePath" propertytype="System.String" />
-        <property name="LocalUserAppDataPath" propertytype="System.String" />
-        <property name="MessageLoop" propertytype="System.Boolean" />
-        <property name="ProductName" propertytype="System.String" />
-        <property name="ProductVersion" propertytype="System.String" />
-        <property name="SafeTopLevelCaptionFormat" propertytype="System.String" />
-        <property name="StartupPath" propertytype="System.String" />
-        <property name="UserAppDataPath" propertytype="System.String" />
-        <property name="UserAppDataRegistry" propertytype="Microsoft.Win32.RegistryKey" />
-        <property name="WindowsFormsVersion" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddMessageFilter(System.Windows.Forms.IMessageFilter)" argnames="value" returntype="System.Void" />
-        <method name="DoEvents" argnames="" returntype="System.Void" />
-        <method name="Exit" argnames="" returntype="System.Void" />
-        <method name="ExitThread" argnames="" returntype="System.Void" />
-        <method name="OleRequired" argnames="" returntype="System.Threading.ApartmentState" />
-        <method name="OnThreadException(System.Exception)" argnames="t" returntype="System.Void" />
-        <method name="RemoveMessageFilter(System.Windows.Forms.IMessageFilter)" argnames="value" returntype="System.Void" />
-        <method name="Run" argnames="" returntype="System.Void" />
-        <method name="Run(System.Windows.Forms.Form)" argnames="mainForm" returntype="System.Void" />
-        <method name="Run(System.Windows.Forms.ApplicationContext)" argnames="context" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ApplicationExit" />
-        <event name="Idle" />
-        <event name="ThreadException" />
-        <event name="ThreadExit" />
-    </class>
-    <class name="AxHost" namespace="System.Windows.Forms">
-        <class name="ClsidAttribute" namespace="System.Windows.Forms">
-            <constructor name="ClsidAttribute(System.String)" argnames="clsid" />
-            <property name="Value" propertytype="System.String" />
-            <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-            <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-            <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="TypeLibraryTimeStampAttribute" namespace="System.Windows.Forms">
-            <constructor name="TypeLibraryTimeStampAttribute(System.String)" argnames="timestamp" />
-            <property name="Value" propertytype="System.DateTime" />
-            <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-            <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-            <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="ConnectionPointCookie" namespace="System.Windows.Forms">
-            <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type)" argnames="source, sink, eventInterface" />
-            <method name="Finalize" argnames="" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Disconnect" argnames="" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="InvalidActiveXStateException" namespace="System.Windows.Forms">
-            <constructor name="InvalidActiveXStateException(System.String, System.Windows.Forms.AxHost.ActiveXInvokeKind)" argnames="name, kind" />
-            <property name="Message" inherited="System.Exception" propertytype="System.String" />
-            <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-            <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-            <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-            <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-            <property name="Source" inherited="System.Exception" propertytype="System.String" />
-            <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-            <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="StateConverter" namespace="System.Windows.Forms">
-            <constructor name="StateConverter" argnames="" />
-            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="State" namespace="System.Windows.Forms">
-            <constructor name="State(System.IO.Stream, System.Int32, System.Boolean, System.String)" argnames="ms, storageType, manualUpdate, licKey" />
-            <property name="Type" propertytype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="AxComponentEditor" namespace="System.Windows.Forms">
-            <constructor name="AxComponentEditor" argnames="" />
-            <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Int32" />
-            <method name="GetComponentEditorPages" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Type[]" />
-            <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" returntype="System.Boolean" />
-            <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-            <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <enum name="ActiveXInvokeKind" namespace="System.Windows.Forms">
-            <field name="MethodInvoke" />
-            <field name="PropertyGet" />
-            <field name="PropertySet" />
-            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </enum>
-        <constructor name="ActiveXInvokeKind(System.String)" argnames="clsid" />
-        <constructor name="ActiveXInvokeKind(System.String, System.Int32)" argnames="clsid, flags" />
-        <property name="CanUIActivate" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="RightToLeft" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="CanAccessProperties" propertytype="System.Boolean" />
-        <property name="EditMode" propertytype="System.Boolean" />
-        <property name="HasAboutBox" propertytype="System.Boolean" />
-        <property name="NoComponentChangeEvents" propertytype="System.Int32" />
-        <property name="OcxFlags" propertytype="System.Int32" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="OcxState" propertytype="System.Windows.Forms.AxHost+State" />
-        <property name="ContainingControl" propertytype="System.Windows.Forms.ContainerControl" />
-        <property name="RefreshAllProperties" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="DetachSink" argnames="" returntype="System.Void" />
-        <method name="CreateSink" argnames="" returntype="System.Void" />
-        <method name="OnInPlaceActive" argnames="" returntype="System.Void" />
-        <method name="AttachInterfaces" argnames="" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="PropsValid" argnames="" returntype="System.Boolean" />
-        <method name="ShowAboutBox" argnames="" returntype="System.Void" />
-        <method name="SetAboutBoxDelegate(System.Windows.Forms.AxHost.AboutBoxDelegate)" argnames="d" returntype="System.Void" />
-        <method name="DoVerb(System.Int32)" argnames="verb" returntype="System.Void" />
-        <method name="InvokeEditMode" argnames="" returntype="System.Void" />
-        <method name="GetOcx" argnames="" returntype="System.Object" />
-        <method name="HasPropertyPages" argnames="" returntype="System.Boolean" />
-        <method name="MakeDirty" argnames="" returntype="System.Void" />
-        <method name="ShowPropertyPages" argnames="" returntype="System.Void" />
-        <method name="ShowPropertyPages(System.Windows.Forms.Control)" argnames="control" returntype="System.Void" />
-        <method name="GetIPictureFromPicture(System.Drawing.Image)" argnames="image" returntype="System.Object" />
-        <method name="GetIPictureFromCursor(System.Windows.Forms.Cursor)" argnames="cursor" returntype="System.Object" />
-        <method name="GetIPictureDispFromPicture(System.Drawing.Image)" argnames="image" returntype="System.Object" />
-        <method name="GetPictureFromIPicture(System.Object)" argnames="picture" returntype="System.Drawing.Image" />
-        <method name="GetPictureFromIPictureDisp(System.Object)" argnames="picture" returntype="System.Drawing.Image" />
-        <method name="GetColorFromOleColor(System.UInt32)" argnames="color" returntype="System.Drawing.Color" />
-        <method name="GetOleColorFromColor(System.Drawing.Color)" argnames="color" returntype="System.UInt32" />
-        <method name="GetIFontFromFont(System.Drawing.Font)" argnames="font" returntype="System.Object" />
-        <method name="GetFontFromIFont(System.Object)" argnames="font" returntype="System.Drawing.Font" />
-        <method name="GetIFontDispFromFont(System.Drawing.Font)" argnames="font" returntype="System.Object" />
-        <method name="GetFontFromIFontDisp(System.Object)" argnames="font" returntype="System.Drawing.Font" />
-        <method name="GetOADateFromTime(System.DateTime)" argnames="time" returntype="System.Double" />
-        <method name="GetTimeFromOADate(System.Double)" argnames="date" returntype="System.DateTime" />
-        <method name="RaiseOnMouseMove(System.Object, System.Object, System.Object, System.Object)" argnames="o1, o2, o3, o4" returntype="System.Void" />
-        <method name="RaiseOnMouseMove(System.Int16, System.Int16, System.Single, System.Single)" argnames="button, shift, x, y" returntype="System.Void" />
-        <method name="RaiseOnMouseMove(System.Int16, System.Int16, System.Int32, System.Int32)" argnames="button, shift, x, y" returntype="System.Void" />
-        <method name="RaiseOnMouseUp(System.Object, System.Object, System.Object, System.Object)" argnames="o1, o2, o3, o4" returntype="System.Void" />
-        <method name="RaiseOnMouseUp(System.Int16, System.Int16, System.Single, System.Single)" argnames="button, shift, x, y" returntype="System.Void" />
-        <method name="RaiseOnMouseUp(System.Int16, System.Int16, System.Int32, System.Int32)" argnames="button, shift, x, y" returntype="System.Void" />
-        <method name="RaiseOnMouseDown(System.Object, System.Object, System.Object, System.Object)" argnames="o1, o2, o3, o4" returntype="System.Void" />
-        <method name="RaiseOnMouseDown(System.Int16, System.Int16, System.Single, System.Single)" argnames="button, shift, x, y" returntype="System.Void" />
-        <method name="RaiseOnMouseDown(System.Int16, System.Int16, System.Int32, System.Int32)" argnames="button, shift, x, y" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="BackColorChanged" />
-        <event name="BackgroundImageChanged" />
-        <event name="BindingContextChanged" />
-        <event name="ContextMenuChanged" />
-        <event name="CursorChanged" />
-        <event name="EnabledChanged" />
-        <event name="FontChanged" />
-        <event name="ForeColorChanged" />
-        <event name="RightToLeftChanged" />
-        <event name="TabIndexChanged" />
-        <event name="TabStopChanged" />
-        <event name="TextChanged" />
-        <event name="Click" />
-        <event name="DragDrop" />
-        <event name="DragEnter" />
-        <event name="DragOver" />
-        <event name="DragLeave" />
-        <event name="GiveFeedback" />
-        <event name="HelpRequested" />
-        <event name="Paint" />
-        <event name="QueryContinueDrag" />
-        <event name="QueryAccessibilityHelp" />
-        <event name="DoubleClick" />
-        <event name="ImeModeChanged" />
-        <event name="KeyDown" />
-        <event name="KeyPress" />
-        <event name="KeyUp" />
-        <event name="Layout" />
-        <event name="MouseDown" />
-        <event name="MouseEnter" />
-        <event name="MouseLeave" />
-        <event name="MouseHover" />
-        <event name="MouseMove" />
-        <event name="MouseUp" />
-        <event name="MouseWheel" />
-        <event name="ChangeUICues" />
-        <event name="StyleChanged" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ClsidAttribute" namespace="System.Windows.Forms">
-        <constructor name="ClsidAttribute(System.String)" argnames="clsid" />
-        <property name="Value" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TypeLibraryTimeStampAttribute" namespace="System.Windows.Forms">
-        <constructor name="TypeLibraryTimeStampAttribute(System.String)" argnames="timestamp" />
-        <property name="Value" propertytype="System.DateTime" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ConnectionPointCookie" namespace="System.Windows.Forms">
-        <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type)" argnames="source, sink, eventInterface" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Disconnect" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InvalidActiveXStateException" namespace="System.Windows.Forms">
-        <constructor name="InvalidActiveXStateException(System.String, System.Windows.Forms.AxHost.ActiveXInvokeKind)" argnames="name, kind" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StateConverter" namespace="System.Windows.Forms">
-        <constructor name="StateConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="State" namespace="System.Windows.Forms">
-        <constructor name="State(System.IO.Stream, System.Int32, System.Boolean, System.String)" argnames="ms, storageType, manualUpdate, licKey" />
-        <property name="Type" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AxComponentEditor" namespace="System.Windows.Forms">
-        <constructor name="AxComponentEditor" argnames="" />
-        <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Int32" />
-        <method name="GetComponentEditorPages" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Type[]" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" returntype="System.Boolean" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
-        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Button" namespace="System.Windows.Forms">
-        <constructor name="Button" argnames="" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DialogResult" propertytype="System.Windows.Forms.DialogResult" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Size" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDefault" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Boolean" />
-        <property name="FlatStyle" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.FlatStyle" />
-        <property name="Image" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Image" />
-        <property name="ImageAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
-        <property name="ImageIndex" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Int32" />
-        <property name="ImageList" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="TextAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="PerformClick" argnames="" returntype="System.Void" />
-        <method name="NotifyDefault(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetFlagsandPaint" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="DoubleClick" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="CheckBox" namespace="System.Windows.Forms">
-        <class name="CheckBoxAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="CheckBoxAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
-            <property name="DefaultAction" propertytype="System.String" />
-            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.ButtonBase+ButtonBaseAccessibleObject" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="CheckBoxAccessibleObject" argnames="" />
-        <property name="Appearance" propertytype="System.Windows.Forms.Appearance" />
-        <property name="AutoCheck" propertytype="System.Boolean" />
-        <property name="CheckAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="Checked" propertytype="System.Boolean" />
-        <property name="CheckState" propertytype="System.Windows.Forms.CheckState" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="OverChangeRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="DownChangeRectangle" propertytype="System.Drawing.Rectangle" />
-        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
-        <property name="ThreeState" propertytype="System.Boolean" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDefault" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Boolean" />
-        <property name="FlatStyle" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.FlatStyle" />
-        <property name="Image" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Image" />
-        <property name="ImageAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
-        <property name="ImageIndex" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Int32" />
-        <property name="ImageList" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImageList" />
-        <property name="ImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnCheckStateChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCheckedChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnAppearanceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ResetFlagsandPaint" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="AppearanceChanged" />
-        <event name="CheckedChanged" />
-        <event name="CheckStateChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="CheckBoxAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="CheckBoxAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
-        <property name="DefaultAction" propertytype="System.String" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
-        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
-        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.ButtonBase+ButtonBaseAccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CheckedListBox" namespace="System.Windows.Forms">
-        <class name="ObjectCollection" namespace="System.Windows.Forms">
-            <constructor name="ObjectCollection(System.Windows.Forms.CheckedListBox)" argnames="owner" />
-            <property name="Count" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Int32" />
-            <property name="IsReadOnly" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Boolean" />
-            <property name="Item" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Object" />
-            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-            <method name="Remove(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-            <method name="Insert(System.Int32, System.Object)" argnames="index, item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-            <method name="IndexOf(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
-            <method name="Clear" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-            <method name="Contains(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Object, System.Boolean)" argnames="item, isChecked" returntype="System.Int32" />
-            <method name="Add(System.Object, System.Windows.Forms.CheckState)" argnames="item, check" returntype="System.Int32" />
-            <method name="Add(System.Object)" argnames="item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
-            <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-            <method name="AddRange(System.Object[])" argnames="items" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-            <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Int32" />
-            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Contains(System.Int32)" argnames="index" returntype="System.Boolean" />
-            <method name="IndexOf(System.Int32)" argnames="index" returntype="System.Int32" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="CheckedItemCollection" namespace="System.Windows.Forms">
-            <property name="Count" propertytype="System.Int32" />
-            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-            <property name="Item" propertytype="System.Object" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-            <method name="IndexOf(System.Object)" argnames="item" returntype="System.Int32" />
-            <method name="Contains(System.Object)" argnames="item" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="CheckedItemCollection" argnames="" />
-        <property name="CheckOnClick" propertytype="System.Boolean" />
-        <property name="CheckedIndices" propertytype="System.Windows.Forms.CheckedListBox+CheckedIndexCollection" />
-        <property name="CheckedItems" propertytype="System.Windows.Forms.CheckedListBox+CheckedItemCollection" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DrawMode" propertytype="System.Windows.Forms.DrawMode" />
-        <property name="ItemHeight" propertytype="System.Int32" />
-        <property name="Items" propertytype="System.Windows.Forms.CheckedListBox+ObjectCollection" />
-        <property name="MaxItemWidth" propertytype="System.Int32" />
-        <property name="SelectionMode" propertytype="System.Windows.Forms.SelectionMode" />
-        <property name="ThreeDCheckBoxes" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Image" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="ColumnWidth" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Size" />
-        <property name="ForeColor" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Color" />
-        <property name="HorizontalExtent" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
-        <property name="HorizontalScrollbar" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
-        <property name="IntegralHeight" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
-        <property name="Items" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.ListBox+ObjectCollection" />
-        <property name="MultiColumn" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
-        <property name="PreferredHeight" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="ScrollAlwaysVisible" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
-        <property name="SelectedIndex" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
-        <property name="SelectedIndices" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.ListBox+SelectedIndexCollection" />
-        <property name="SelectedItem" inherited="System.Windows.Forms.ListBox" propertytype="System.Object" />
-        <property name="SelectedItems" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.ListBox+SelectedObjectCollection" />
-        <property name="Sorted" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
-        <property name="Text" inherited="System.Windows.Forms.ListBox" propertytype="System.String" />
-        <property name="TopIndex" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
-        <property name="UseTabStops" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
-        <property name="DataSource" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
-        <property name="DataManager" inherited="System.Windows.Forms.ListControl" propertytype="System.Windows.Forms.CurrencyManager" />
-        <property name="DisplayMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
-        <property name="ValueMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
-        <property name="SelectedValue" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnItemCheck(System.Windows.Forms.ItemCheckEventArgs)" argnames="ice" returntype="System.Void" />
-        <method name="WmReflectCommand(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="Sort" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="CreateItemCollection" argnames="" returntype="System.Windows.Forms.ListBox+ObjectCollection" />
-        <method name="AddItemsCore(System.Object[])" argnames="value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="SetItemsCore(System.Collections.IList)" argnames="value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="RefreshItem(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ListControl" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.String" />
-        <method name="GetItemCheckState(System.Int32)" argnames="index" returntype="System.Windows.Forms.CheckState" />
-        <method name="GetItemChecked(System.Int32)" argnames="index" returntype="System.Boolean" />
-        <method name="SetItemCheckState(System.Int32, System.Windows.Forms.CheckState)" argnames="index, value" returntype="System.Void" />
-        <method name="SetItemChecked(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Void" />
-        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="ClearSelected" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="FindString(System.String)" argnames="s" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
-        <method name="FindString(System.String, System.Int32)" argnames="s, startIndex" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
-        <method name="FindStringExact(System.String)" argnames="s" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
-        <method name="FindStringExact(System.String, System.Int32)" argnames="s, startIndex" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
-        <method name="GetItemHeight(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
-        <method name="GetItemRectangle(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Drawing.Rectangle" />
-        <method name="GetSelected(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Boolean" />
-        <method name="IndexFromPoint(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
-        <method name="IndexFromPoint(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
-        <method name="SetSelected(System.Int32, System.Boolean)" argnames="index, value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
-        <method name="FilterItemOnProperty(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
-        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
-        <method name="GetItemText(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ItemCheck" />
-        <event name="Click" />
-        <event name="DrawItem" />
-        <event name="MeasureItem" />
-        <event name="Paint" inherited="System.Windows.Forms.ListBox" />
-        <event name="SelectedIndexChanged" inherited="System.Windows.Forms.ListBox" />
-        <event name="DataSourceChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="DisplayMemberChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="ValueMemberChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="SelectedValueChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ObjectCollection" namespace="System.Windows.Forms">
-        <constructor name="ObjectCollection(System.Windows.Forms.CheckedListBox)" argnames="owner" />
-        <property name="Count" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Int32" />
-        <property name="IsReadOnly" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Boolean" />
-        <property name="Item" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Object" />
-        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
-        <method name="Clear" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Object, System.Boolean)" argnames="item, isChecked" returntype="System.Int32" />
-        <method name="Add(System.Object, System.Windows.Forms.CheckState)" argnames="item, check" returntype="System.Int32" />
-        <method name="Add(System.Object)" argnames="item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
-        <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-        <method name="AddRange(System.Object[])" argnames="items" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-        <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Int32" />
-        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Int32)" argnames="index" returntype="System.Boolean" />
-        <method name="IndexOf(System.Int32)" argnames="index" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CheckedItemCollection" namespace="System.Windows.Forms">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="item" returntype="System.Int32" />
-        <method name="Contains(System.Object)" argnames="item" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ColorDialog" namespace="System.Windows.Forms">
-        <constructor name="ColorDialog" argnames="" />
-        <property name="AllowFullOpen" propertytype="System.Boolean" />
-        <property name="AnyColor" propertytype="System.Boolean" />
-        <property name="Color" propertytype="System.Drawing.Color" />
-        <property name="CustomColors" propertytype="System.Int32[]" />
-        <property name="FullOpen" propertytype="System.Boolean" />
-        <property name="Instance" propertytype="System.IntPtr" />
-        <property name="Options" propertytype="System.Int32" />
-        <property name="ShowHelp" propertytype="System.Boolean" />
-        <property name="SolidColorOnly" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ComboBox" namespace="System.Windows.Forms">
-        <class name="ObjectCollection" namespace="System.Windows.Forms">
-            <constructor name="ObjectCollection(System.Windows.Forms.ComboBox)" argnames="owner" />
-            <property name="Comparer" propertytype="System.Collections.IComparer" />
-            <property name="InnerList" propertytype="System.Collections.ArrayList" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="IsReadOnly" propertytype="System.Boolean" />
-            <property name="Item" propertytype="System.Object" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-            <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-            <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-            <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-            <method name="Clear" argnames="" returntype="System.Void" />
-            <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
-            <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
-            <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <class name="ChildAccessibleObject" namespace="System.Windows.Forms">
-            <constructor name="ChildAccessibleObject(System.Windows.Forms.ComboBox, System.IntPtr)" argnames="owner, handle" />
-            <property name="Name" propertytype="System.String" />
-            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-            <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-            <property name="Role" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
-            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="ChildAccessibleObject" argnames="" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultSize" propertytype="System.Drawing.Size" />
-        <property name="DrawMode" propertytype="System.Windows.Forms.DrawMode" />
-        <property name="DropDownWidth" propertytype="System.Int32" />
-        <property name="DroppedDown" propertytype="System.Boolean" />
-        <property name="Focused" propertytype="System.Boolean" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="IntegralHeight" propertytype="System.Boolean" />
-        <property name="ItemHeight" propertytype="System.Int32" />
-        <property name="Items" propertytype="System.Windows.Forms.ComboBox+ObjectCollection" />
-        <property name="MaxDropDownItems" propertytype="System.Int32" />
-        <property name="MaxLength" propertytype="System.Int32" />
-        <property name="PreferredHeight" propertytype="System.Int32" />
-        <property name="SelectedIndex" propertytype="System.Int32" />
-        <property name="SelectedItem" propertytype="System.Object" />
-        <property name="SelectedText" propertytype="System.String" />
-        <property name="SelectionLength" propertytype="System.Int32" />
-        <property name="SelectionStart" propertytype="System.Int32" />
-        <property name="Sorted" propertytype="System.Boolean" />
-        <property name="DropDownStyle" propertytype="System.Windows.Forms.ComboBoxStyle" />
-        <property name="Text" propertytype="System.String" />
-        <property name="DataSource" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
-        <property name="DataManager" inherited="System.Windows.Forms.ListControl" propertytype="System.Windows.Forms.CurrencyManager" />
-        <property name="DisplayMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
-        <property name="ValueMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
-        <property name="SelectedValue" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnDropDownStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSelectedItemChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnSelectionChangeCommitted(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDropDown(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="AddItemsCore(System.Object[])" argnames="value" returntype="System.Void" />
-        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="SetItemsCore(System.Collections.IList)" argnames="value" returntype="System.Void" />
-        <method name="RefreshItem(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="BeginUpdate" argnames="" returntype="System.Void" />
-        <method name="EndUpdate" argnames="" returntype="System.Void" />
-        <method name="FindString(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="FindString(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
-        <method name="FindStringExact(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="FindStringExact(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
-        <method name="GetItemHeight(System.Int32)" argnames="index" returntype="System.Int32" />
-        <method name="Select(System.Int32, System.Int32)" argnames="start, length" returntype="System.Void" />
-        <method name="SelectAll" argnames="" returntype="System.Void" />
-        <method name="FilterItemOnProperty(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
-        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
-        <method name="GetItemText(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.String" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="DrawItem" />
-        <event name="DropDown" />
-        <event name="MeasureItem" />
-        <event name="SelectedIndexChanged" />
-        <event name="SelectionChangeCommitted" />
-        <event name="DropDownStyleChanged" />
-        <event name="Paint" />
-        <event name="DataSourceChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="DisplayMemberChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="ValueMemberChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="SelectedValueChanged" inherited="System.Windows.Forms.ListControl" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ObjectCollection" namespace="System.Windows.Forms">
-        <constructor name="ObjectCollection(System.Windows.Forms.ComboBox)" argnames="owner" />
-        <property name="Comparer" propertytype="System.Collections.IComparer" />
-        <property name="InnerList" propertytype="System.Collections.ArrayList" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
-        <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
-        <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ChildAccessibleObject" namespace="System.Windows.Forms">
-        <constructor name="ChildAccessibleObject(System.Windows.Forms.ComboBox, System.IntPtr)" argnames="owner, handle" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
-        <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="Role" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PageSetupDialog" namespace="System.Windows.Forms">
-        <constructor name="PageSetupDialog" argnames="" />
-        <property name="AllowMargins" propertytype="System.Boolean" />
-        <property name="AllowOrientation" propertytype="System.Boolean" />
-        <property name="AllowPaper" propertytype="System.Boolean" />
-        <property name="AllowPrinter" propertytype="System.Boolean" />
-        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
-        <property name="MinMargins" propertytype="System.Drawing.Printing.Margins" />
-        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
-        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
-        <property name="ShowHelp" propertytype="System.Boolean" />
-        <property name="ShowNetwork" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PrintControllerWithStatusDialog" namespace="System.Windows.Forms">
-        <constructor name="PrintControllerWithStatusDialog(System.Drawing.Printing.PrintController)" argnames="underlyingController" />
-        <constructor name="PrintControllerWithStatusDialog(System.Drawing.Printing.PrintController, System.String)" argnames="underlyingController, dialogTitle" />
-        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
-        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PrintDialog" namespace="System.Windows.Forms">
-        <constructor name="PrintDialog" argnames="" />
-        <property name="AllowSomePages" propertytype="System.Boolean" />
-        <property name="AllowPrintToFile" propertytype="System.Boolean" />
-        <property name="AllowSelection" propertytype="System.Boolean" />
-        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
-        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
-        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
-        <property name="PrintToFile" propertytype="System.Boolean" />
-        <property name="ShowHelp" propertytype="System.Boolean" />
-        <property name="ShowNetwork" propertytype="System.Boolean" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
-        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PrintPreviewDialog" namespace="System.Windows.Forms">
-        <constructor name="PrintPreviewDialog" argnames="" />
-        <property name="AcceptButton" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="AutoScale" propertytype="System.Boolean" />
-        <property name="AutoScroll" propertytype="System.Boolean" />
-        <property name="BackColor" propertytype="System.Drawing.Color" />
-        <property name="CancelButton" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ControlBox" propertytype="System.Boolean" />
-        <property name="FormBorderStyle" propertytype="System.Windows.Forms.FormBorderStyle" />
-        <property name="HelpButton" propertytype="System.Boolean" />
-        <property name="Icon" propertytype="System.Drawing.Icon" />
-        <property name="IsMdiContainer" propertytype="System.Boolean" />
-        <property name="KeyPreview" propertytype="System.Boolean" />
-        <property name="MaximumSize" propertytype="System.Drawing.Size" />
-        <property name="MaximizeBox" propertytype="System.Boolean" />
-        <property name="Menu" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimumSize" propertytype="System.Drawing.Size" />
-        <property name="Size" propertytype="System.Drawing.Size" />
-        <property name="StartPosition" propertytype="System.Windows.Forms.FormStartPosition" />
-        <property name="TopMost" propertytype="System.Boolean" />
-        <property name="TransparencyKey" propertytype="System.Drawing.Color" />
-        <property name="WindowState" propertytype="System.Windows.Forms.FormWindowState" />
-        <property name="AccessibleRole" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AccessibleDescription" propertytype="System.String" />
-        <property name="AccessibleName" propertytype="System.String" />
-        <property name="CausesValidation" propertytype="System.Boolean" />
-        <property name="DataBindings" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Location" propertytype="System.Drawing.Point" />
-        <property name="Tag" propertytype="System.Object" />
-        <property name="AllowDrop" propertytype="System.Boolean" />
-        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
-        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
-        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="AutoScrollMargin" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollMinSize" propertytype="System.Drawing.Size" />
-        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="ForeColor" propertytype="System.Drawing.Color" />
-        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Font" propertytype="System.Drawing.Font" />
-        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="DockPadding" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="UseAntiAlias" propertytype="System.Boolean" />
-        <property name="AutoScaleBaseSize" propertytype="System.Drawing.Size" />
-        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
-        <property name="MinimizeBox" propertytype="System.Boolean" />
-        <property name="PrintPreviewControl" propertytype="System.Windows.Forms.PrintPreviewControl" />
-        <property name="Opacity" propertytype="System.Double" />
-        <property name="ShowInTaskbar" propertytype="System.Boolean" />
-        <property name="SizeGripStyle" propertytype="System.Windows.Forms.SizeGripStyle" />
-        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
-        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
-        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
-        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
-        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="Activated" inherited="System.Windows.Forms.Form" />
-        <event name="Closing" inherited="System.Windows.Forms.Form" />
-        <event name="Closed" inherited="System.Windows.Forms.Form" />
-        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
-        <event name="Load" inherited="System.Windows.Forms.Form" />
-        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
-        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
-        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PrintPreviewControl" namespace="System.Windows.Forms">
-        <constructor name="PrintPreviewControl" argnames="" />
-        <property name="UseAntiAlias" propertytype="System.Boolean" />
-        <property name="AutoZoom" propertytype="System.Boolean" />
-        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
-        <property name="Columns" propertytype="System.Int32" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="Position" propertytype="System.Drawing.Point" />
-        <property name="Rows" propertytype="System.Int32" />
-        <property name="Text" propertytype="System.String" />
-        <property name="StartPage" propertytype="System.Int32" />
-        <property name="VirtualSize" propertytype="System.Drawing.Size" />
-        <property name="Zoom" propertytype="System.Double" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="OnStartPageChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="InvalidatePreview" argnames="" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="StartPageChanged" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <interface name="IOleDropTarget" namespace="System.Windows.Forms">
-        <method name="OleDrop(System.Object, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
-        <method name="OleDragLeave" argnames="" returntype="System.Int32" />
-        <method name="OleDragOver(System.Int32, System.Int64, System.Int32&amp;)" argnames="grfKeyState, pt, pdwEffect" returntype="System.Int32" />
-        <method name="OleDragEnter(System.Object, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleDataObject" namespace="System.Windows.Forms">
-        <method name="OleEnumDAdvise(System.Object[])" argnames="ppenumAdvise" returntype="System.Int32" />
-        <method name="OleDUnadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
-        <method name="OleDAdvise(System.Windows.Forms.NativeMethods.FORMATETC, System.Int32, System.Object, System.Int32[])" argnames="pFormatetc, advf, pAdvSink, pdwConnection" returntype="System.Int32" />
-        <method name="OleEnumFormatEtc(System.Int32)" argnames="dwDirection" returntype="System.Windows.Forms.UnsafeNativeMethods+IEnumFORMATETC" />
-        <method name="OleSetData(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM, System.Int32)" argnames="pFormatectIn, pmedium, fRelease" returntype="System.Int32" />
-        <method name="OleGetCanonicalFormatEtc(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.FORMATETC)" argnames="pformatectIn, pformatetcOut" returntype="System.Int32" />
-        <method name="OleQueryGetData(System.Windows.Forms.NativeMethods.FORMATETC)" argnames="pFormatetc" returntype="System.Int32" />
-        <method name="OleGetDataHere(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
-        <method name="OleGetData(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleDropSource" namespace="System.Windows.Forms">
-        <method name="OleGiveFeedback(System.Int32)" argnames="dwEffect" returntype="System.Int32" />
-        <method name="OleQueryContinueDrag(System.Int32, System.Int32)" argnames="fEscapePressed, grfKeyState" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleMessageFilter" namespace="System.Windows.Forms">
-        <method name="MessagePending(System.IntPtr, System.Int32, System.Int32)" argnames="hTaskCallee, dwTickCount, dwPendingType" returntype="System.Int32" />
-        <method name="RetryRejectedCall(System.IntPtr, System.Int32, System.Int32)" argnames="hTaskCallee, dwTickCount, dwRejectType" returntype="System.Int32" />
-        <method name="HandleInComingCall(System.Int32, System.IntPtr, System.Int32, System.IntPtr)" argnames="dwCallType, hTaskCaller, dwTickCount, lpInterfaceInfo" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleControlSite" namespace="System.Windows.Forms">
-        <method name="ShowPropertyFrame" argnames="" returntype="System.Int32" />
-        <method name="OnFocus(System.Int32)" argnames="fGotFocus" returntype="System.Int32" />
-        <method name="TranslateAccelerator(System.Windows.Forms.NativeMethods.MSG&amp;, System.Int32)" argnames="pMsg, grfModifiers" returntype="System.Int32" />
-        <method name="TransformCoords(System.Windows.Forms.NativeMethods._POINTL, System.Windows.Forms.NativeMethods.tagPOINTF, System.Int32)" argnames="pPtlHimetric, pPtfContainer, dwFlags" returntype="System.Int32" />
-        <method name="GetExtendedControl(System.Object&amp;)" argnames="ppDisp" returntype="System.Int32" />
-        <method name="LockInPlaceActive(System.Int32)" argnames="fLock" returntype="System.Int32" />
-        <method name="OnControlInfoChanged" argnames="" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleClientSite" namespace="System.Windows.Forms">
-        <method name="RequestNewObjectLayout" argnames="" returntype="System.Int32" />
-        <method name="OnShowWindow(System.Int32)" argnames="fShow" returntype="System.Int32" />
-        <method name="ShowObject" argnames="" returntype="System.Int32" />
-        <method name="GetContainer" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IOleContainer" />
-        <method name="GetMoniker(System.Int32, System.Int32)" argnames="dwAssign, dwWhichMoniker" returntype="System.Object" />
-        <method name="SaveObject" argnames="" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleInPlaceSite" namespace="System.Windows.Forms">
-        <method name="OnPosRectChange(System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprcPosRect" returntype="System.Int32" />
-        <method name="DeactivateAndUndo" argnames="" returntype="System.Int32" />
-        <method name="DiscardUndoState" argnames="" returntype="System.Int32" />
-        <method name="OnInPlaceDeactivate" argnames="" returntype="System.Int32" />
-        <method name="OnUIDeactivate(System.Int32)" argnames="fUndoable" returntype="System.Int32" />
-        <method name="Scroll(System.Windows.Forms.NativeMethods.tagSIZE)" argnames="scrollExtant" returntype="System.Int32" />
-        <method name="GetWindowContext(System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceFrame&amp;, System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceUIWindow&amp;, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.tagOIFI)" argnames="ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo" returntype="System.Int32" />
-        <method name="OnUIActivate" argnames="" returntype="System.Int32" />
-        <method name="OnInPlaceActivate" argnames="" returntype="System.Int32" />
-        <method name="CanInPlaceActivate" argnames="" returntype="System.Int32" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Int32" />
-        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <interface name="ISimpleFrameSite" namespace="System.Windows.Forms">
-        <method name="PostMessageFilter(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.IntPtr&amp;, System.Int32)" argnames="hwnd, msg, wp, lp, plResult, dwCookie" returntype="System.Int32" />
-        <method name="PreMessageFilter(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.IntPtr&amp;, System.Int32&amp;)" argnames="hwnd, msg, wp, lp, plResult, pdwCookie" returntype="System.Int32" />
-    </interface>
-    <interface name="IVBGetControl" namespace="System.Windows.Forms">
-        <method name="EnumControls(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.IEnumUnknown&amp;)" argnames="dwOleContF, dwWhich, ppenum" returntype="System.Int32" />
-    </interface>
-    <interface name="IGetVBAObject" namespace="System.Windows.Forms">
-        <method name="GetObject(System.Guid&amp;, System.Windows.Forms.UnsafeNativeMethods.IVBFormat[], System.Int32)" argnames="riid, rval, dwReserved" returntype="System.Int32" />
-    </interface>
-    <interface name="IPropertyNotifySink" namespace="System.Windows.Forms">
-        <method name="OnRequestEdit(System.Int32)" argnames="dispID" returntype="System.Int32" />
-        <method name="OnChanged(System.Int32)" argnames="dispID" returntype="System.Void" />
-    </interface>
-    <interface name="IVBFormat" namespace="System.Windows.Forms">
-        <method name="Format(System.Object&amp;, System.String, System.IntPtr, System.Int16, System.Int32, System.Int16, System.Int16, System.Int16[])" argnames="var, pszFormat, lpBuffer, cpBuffer, lcid, firstD, firstW, result" returntype="System.Int32" />
-    </interface>
-    <interface name="IEnumUnknown" namespace="System.Windows.Forms">
-        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumUnknown&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.IntPtr, System.IntPtr)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleContainer" namespace="System.Windows.Forms">
-        <method name="LockContainer(System.Int32)" argnames="fLock" returntype="System.Int32" />
-        <method name="EnumObjects(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IEnumUnknown&amp;)" argnames="grfFlags, ppenum" returntype="System.Int32" />
-        <method name="ParseDisplayName(System.Object, System.String, System.Int32[], System.Object[])" argnames="pbc, pszDisplayName, pchEaten, ppmkOut" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleInPlaceFrame" namespace="System.Windows.Forms">
-        <method name="TranslateAccelerator(System.Windows.Forms.NativeMethods.MSG&amp;, System.Int16)" argnames="lpmsg, wID" returntype="System.Int32" />
-        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Int32" />
-        <method name="SetStatusText(System.String)" argnames="pszStatusText" returntype="System.Int32" />
-        <method name="RemoveMenus(System.IntPtr)" argnames="hmenuShared" returntype="System.Int32" />
-        <method name="SetMenu(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="hmenuShared, holemenu, hwndActiveObject" returntype="System.Int32" />
-        <method name="InsertMenus(System.IntPtr, System.Windows.Forms.NativeMethods.tagOleMenuGroupWidths)" argnames="hmenuShared, lpMenuWidths" returntype="System.Int32" />
-        <method name="SetActiveObject(System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Int32" />
-        <method name="SetBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Int32" />
-        <method name="RequestBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Int32" />
-        <method name="GetBorder(System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Int32" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Int32" />
-        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <interface name="IExtender" namespace="System.Windows.Forms">
-        <property name="Align" propertytype="System.Int32" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Height" propertytype="System.Int32" />
-        <property name="Left" propertytype="System.Int32" />
-        <property name="TabStop" propertytype="System.Boolean" />
-        <property name="Top" propertytype="System.Int32" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Object" />
-        <property name="Hwnd" propertytype="System.IntPtr" />
-        <property name="Container" propertytype="System.Object" />
-        <method name="Move(System.Object, System.Object, System.Object, System.Object)" argnames="left, top, width, height" returntype="System.Void" />
-    </interface>
-    <interface name="IGetOleObject" namespace="System.Windows.Forms">
-        <method name="GetOleObject(System.Guid&amp;)" argnames="riid" returntype="System.Object" />
-    </interface>
-    <interface name="IMsoComponentManager" namespace="System.Windows.Forms">
-        <method name="FGetActiveComponent(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IMsoComponent[], System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT, System.Int32)" argnames="dwgac, ppic, pcrinfo, dwReserved" returntype="System.Boolean" />
-        <method name="FGetParentComponentManager(System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager&amp;)" argnames="ppicm" returntype="System.Boolean" />
-        <method name="FCreateSubComponentManager(System.Object, System.Object, System.Guid&amp;, System.IntPtr&amp;)" argnames="punkOuter, punkServProv, riid, ppvObj" returntype="System.Boolean" />
-        <method name="FPushMessageLoop(System.Int32, System.Int32, System.Int32)" argnames="dwComponentID, uReason, pvLoopData" returntype="System.Boolean" />
-        <method name="FContinueIdle" argnames="" returntype="System.Boolean" />
-        <method name="FInState(System.Int32, System.IntPtr)" argnames="uStateID, pvoid" returntype="System.Boolean" />
-        <method name="FOnComponentExitState(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="dwComponentID, uStateID, uContext, cpicmExclude, rgpicmExclude" returntype="System.Boolean" />
-        <method name="OnComponentEnterState(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="dwComponentID, uStateID, uContext, cpicmExclude, rgpicmExclude, dwReserved" returntype="System.Void" />
-        <method name="FSetTrackingComponent(System.Int32, System.Boolean)" argnames="dwComponentID, fTrack" returntype="System.Boolean" />
-        <method name="FOnComponentActivate(System.Int32)" argnames="dwComponentID" returntype="System.Boolean" />
-        <method name="FUpdateComponentRegistration(System.Int32, System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT)" argnames="dwComponentID, pcrinfo" returntype="System.Boolean" />
-        <method name="FRevokeComponent(System.Int32)" argnames="dwComponentID" returntype="System.Boolean" />
-        <method name="FRegisterComponent(System.Windows.Forms.UnsafeNativeMethods.IMsoComponent, System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT, System.Int32&amp;)" argnames="component, pcrinfo, dwComponentID" returntype="System.Boolean" />
-        <method name="FDebugMessage(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hInst, msg, wParam, lParam" returntype="System.Boolean" />
-        <method name="QueryService(System.Guid&amp;, System.Guid&amp;, System.Object&amp;)" argnames="guidService, iid, ppvObj" returntype="System.Int32" />
-    </interface>
-    <interface name="IMsoComponent" namespace="System.Windows.Forms">
-        <method name="HwndGetWindow(System.Int32, System.Int32)" argnames="dwWhich, dwReserved" returntype="System.IntPtr" />
-        <method name="Terminate" argnames="" returntype="System.Void" />
-        <method name="FQueryTerminate(System.Boolean)" argnames="fPromptUser" returntype="System.Boolean" />
-        <method name="FContinueMessageLoop(System.Int32, System.Int32, System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="uReason, pvLoopData, pMsgPeeked" returntype="System.Boolean" />
-        <method name="FDoIdle(System.Int32)" argnames="grfidlef" returntype="System.Boolean" />
-        <method name="OnActivationChange(System.Windows.Forms.UnsafeNativeMethods.IMsoComponent, System.Boolean, System.Int32, System.Boolean, System.Int32, System.Int32)" argnames="component, fSameComponent, pcrinfo, fHostIsActivating, pchostinfo, dwReserved" returntype="System.Void" />
-        <method name="OnLoseActivation" argnames="" returntype="System.Void" />
-        <method name="OnAppActivate(System.Boolean, System.Int32)" argnames="fActive, dwOtherThreadID" returntype="System.Void" />
-        <method name="OnEnterState(System.Int32, System.Boolean)" argnames="uStateID, fEnter" returntype="System.Void" />
-        <method name="FPreTranslateMessage(System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="msg" returntype="System.Boolean" />
-        <method name="FDebugMessage(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hInst, msg, wParam, lParam" returntype="System.Boolean" />
-    </interface>
-    <interface name="IRichEditOleCallback" namespace="System.Windows.Forms" />
-    <interface name="IRichTextBoxOleCallback" namespace="System.Windows.Forms">
-        <method name="GetContextMenu(System.Int16, System.IntPtr, System.Windows.Forms.NativeMethods.CHARRANGE, System.IntPtr&amp;)" argnames="seltype, lpoleobj, lpchrg, hmenu" returntype="System.Int32" />
-        <method name="GetDragDropEffect(System.Boolean, System.Int32, System.Int32&amp;)" argnames="fDrag, grfKeyState, pdwEffect" returntype="System.Int32" />
-        <method name="GetClipboardData(System.Windows.Forms.NativeMethods.CHARRANGE, System.Int32, System.IntPtr)" argnames="lpchrg, reco, lplpdataobj" returntype="System.Int32" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Int32" />
-        <method name="QueryAcceptData(System.Windows.Forms.UnsafeNativeMethods.IOleDataObject, System.IntPtr, System.Int32, System.Int32, System.IntPtr)" argnames="lpdataobj, lpcfFormat, reco, fReally, hMetaPict" returntype="System.Int32" />
-        <method name="DeleteObject(System.IntPtr)" argnames="lpoleobj" returntype="System.Int32" />
-        <method name="QueryInsertObject(System.Guid&amp;, System.IntPtr, System.Int32)" argnames="lpclsid, lpstg, cp" returntype="System.Int32" />
-        <method name="ShowContainerUI(System.Int32)" argnames="fShow" returntype="System.Int32" />
-        <method name="GetInPlaceContext(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="lplpFrame, lplpDoc, lpFrameInfo" returntype="System.Int32" />
-        <method name="GetNewStorage(System.Windows.Forms.UnsafeNativeMethods.IStorage&amp;)" argnames="ret" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleInPlaceUIWindow" namespace="System.Windows.Forms">
-        <method name="SetActiveObject(System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Void" />
-        <method name="SetBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
-        <method name="RequestBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
-        <method name="GetBorder(System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Void" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <interface name="IOleInPlaceActiveObject" namespace="System.Windows.Forms">
-        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Void" />
-        <method name="ResizeBorder(System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceUIWindow, System.Int32)" argnames="prcBorder, pUIWindow, fFrameWindow" returntype="System.Void" />
-        <method name="OnDocWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
-        <method name="OnFrameWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
-        <method name="TranslateAccelerator(System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="lpmsg" returntype="System.Int32" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleWindow" namespace="System.Windows.Forms">
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleInPlaceObject" namespace="System.Windows.Forms">
-        <method name="ReactivateAndUndo" argnames="" returntype="System.Void" />
-        <method name="SetObjectRects(System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprcPosRect, lprcClipRect" returntype="System.Void" />
-        <method name="UIDeactivate" argnames="" returntype="System.Int32" />
-        <method name="InPlaceDeactivate" argnames="" returntype="System.Void" />
-        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
-        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleObject" namespace="System.Windows.Forms">
-        <method name="SetColorScheme(System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="pLogpal" returntype="System.Int32" />
-        <method name="GetMiscStatus(System.Int32, System.Int32&amp;)" argnames="dwAspect, misc" returntype="System.Int32" />
-        <method name="EnumAdvise(System.Windows.Forms.UnsafeNativeMethods.IEnumSTATDATA&amp;)" argnames="e" returntype="System.Int32" />
-        <method name="Unadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
-        <method name="Advise(System.Windows.Forms.UnsafeNativeMethods.IAdviseSink, System.Int32&amp;)" argnames="pAdvSink, cookie" returntype="System.Int32" />
-        <method name="GetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
-        <method name="SetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
-        <method name="GetUserType(System.Int32, System.String&amp;)" argnames="dwFormOfType, userType" returntype="System.Int32" />
-        <method name="GetUserClassID(System.Guid&amp;)" argnames="pClsid" returntype="System.Int32" />
-        <method name="IsUpToDate" argnames="" returntype="System.Int32" />
-        <method name="OleUpdate" argnames="" returntype="System.Int32" />
-        <method name="EnumVerbs(System.Windows.Forms.UnsafeNativeMethods.IEnumOLEVERB&amp;)" argnames="e" returntype="System.Int32" />
-        <method name="DoVerb(System.Int32, System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.IOleClientSite, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT)" argnames="iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect" returntype="System.Int32" />
-        <method name="GetClipboardData(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IOleDataObject&amp;)" argnames="dwReserved, data" returntype="System.Int32" />
-        <method name="InitFromData(System.Windows.Forms.UnsafeNativeMethods.IOleDataObject, System.Int32, System.Int32)" argnames="pDataObject, fCreation, dwReserved" returntype="System.Int32" />
-        <method name="GetMoniker(System.Int32, System.Int32, System.Object&amp;)" argnames="dwAssign, dwWhichMoniker, moniker" returntype="System.Int32" />
-        <method name="SetMoniker(System.Int32, System.Object)" argnames="dwWhichMoniker, pmk" returntype="System.Int32" />
-        <method name="Close(System.Int32)" argnames="dwSaveOption" returntype="System.Int32" />
-        <method name="SetHostNames(System.String, System.String)" argnames="szContainerApp, szContainerObj" returntype="System.Int32" />
-        <method name="GetClientSite" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IOleClientSite" />
-        <method name="SetClientSite(System.Windows.Forms.UnsafeNativeMethods.IOleClientSite)" argnames="pClientSite" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleInPlaceObjectWindowless" namespace="System.Windows.Forms">
-        <method name="GetDropTarget(System.Object)" argnames="ppDropTarget" returntype="System.Int32" />
-        <method name="OnWindowMessage(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="msg, wParam, lParam, plResult" returntype="System.Int32" />
-        <method name="SetColorScheme(System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="pLogpal" returntype="System.Int32" />
-        <method name="GetMiscStatus(System.Int32, System.Int32&amp;)" argnames="dwAspect, misc" returntype="System.Int32" />
-        <method name="EnumAdvise(System.Windows.Forms.UnsafeNativeMethods.IEnumSTATDATA&amp;)" argnames="e" returntype="System.Int32" />
-        <method name="Unadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
-        <method name="Advise(System.Windows.Forms.UnsafeNativeMethods.IAdviseSink, System.Int32&amp;)" argnames="pAdvSink, cookie" returntype="System.Int32" />
-        <method name="GetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
-        <method name="SetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
-        <method name="GetUserType(System.Int32, System.String&amp;)" argnames="dwFormOfType, userType" returntype="System.Int32" />
-        <method name="GetUserClassID(System.Guid&amp;)" argnames="pClsid" returntype="System.Int32" />
-        <method name="IsUpToDate" argnames="" returntype="System.Int32" />
-        <method name="OleUpdate" argnames="" returntype="System.Int32" />
-        <method name="EnumVerbs(System.Windows.Forms.UnsafeNativeMethods.IEnumOLEVERB&amp;)" argnames="e" returntype="System.Int32" />
-        <method name="DoVerb(System.Int32, System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.IOleClientSite, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT)" argnames="iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect" returntype="System.Int32" />
-        <method name="GetClipboardData(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IOleDataObject&amp;)" argnames="dwReserved, data" returntype="System.Int32" />
-        <method name="InitFromData(System.Windows.Forms.UnsafeNativeMethods.IOleDataObject, System.Int32, System.Int32)" argnames="pDataObject, fCreation, dwReserved" returntype="System.Int32" />
-        <method name="GetMoniker(System.Int32, System.Int32, System.Object&amp;)" argnames="dwAssign, dwWhichMoniker, moniker" returntype="System.Int32" />
-        <method name="SetMoniker(System.Int32, System.Object)" argnames="dwWhichMoniker, pmk" returntype="System.Int32" />
-        <method name="Close(System.Int32)" argnames="dwSaveOption" returntype="System.Int32" />
-        <method name="SetHostNames(System.String, System.String)" argnames="szContainerApp, szContainerObj" returntype="System.Int32" />
-        <method name="GetClientSite(System.Windows.Forms.UnsafeNativeMethods.IOleClientSite&amp;)" argnames="site" returntype="System.Int32" />
-        <method name="SetClientSite(System.Windows.Forms.UnsafeNativeMethods.IOleClientSite)" argnames="pClientSite" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleControl" namespace="System.Windows.Forms">
-        <method name="FreezeEvents(System.Int32)" argnames="bFreeze" returntype="System.Int32" />
-        <method name="OnAmbientPropertyChange(System.Int32)" argnames="dispID" returntype="System.Int32" />
-        <method name="OnMnemonic(System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="pMsg" returntype="System.Int32" />
-        <method name="GetControlInfo(System.Windows.Forms.NativeMethods.tagCONTROLINFO)" argnames="pCI" returntype="System.Int32" />
-    </interface>
-    <interface name="IOleServiceProvider" namespace="System.Windows.Forms">
-        <method name="QueryService(System.Guid&amp;, System.Guid&amp;, System.IntPtr&amp;)" argnames="guidService, riid, ppvObject" returntype="System.Int32" />
-    </interface>
-    <interface name="IViewObject" namespace="System.Windows.Forms">
-        <method name="GetAdvise(System.Int32[], System.Int32[], System.Windows.Forms.UnsafeNativeMethods.IAdviseSink[])" argnames="paspects, advf, pAdvSink" returntype="System.Void" />
-        <method name="SetAdvise(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.IAdviseSink)" argnames="aspects, advf, pAdvSink" returntype="System.Void" />
-        <method name="Unfreeze(System.Int32)" argnames="dwFreeze" returntype="System.Int32" />
-        <method name="Freeze(System.Int32, System.Int32, System.IntPtr, System.IntPtr)" argnames="dwDrawAspect, lindex, pvAspect, pdwFreeze" returntype="System.Int32" />
-        <method name="GetColorSet(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet" returntype="System.Int32" />
-        <method name="Draw(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT, System.IntPtr, System.Int32)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue" returntype="System.Void" />
-    </interface>
-    <interface name="IViewObject2" namespace="System.Windows.Forms">
-        <method name="GetExtent(System.Int32, System.Int32, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, lindex, ptd, lpsizel" returntype="System.Void" />
-        <method name="GetAdvise(System.Int32[], System.Int32[], System.Windows.Forms.UnsafeNativeMethods.IAdviseSink[])" argnames="paspects, advf, pAdvSink" returntype="System.Void" />
-        <method name="SetAdvise(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.IAdviseSink)" argnames="aspects, advf, pAdvSink" returntype="System.Void" />
-        <method name="Unfreeze(System.Int32)" argnames="dwFreeze" returntype="System.Int32" />
-        <method name="Freeze(System.Int32, System.Int32, System.IntPtr, System.IntPtr)" argnames="dwDrawAspect, lindex, pvAspect, pdwFreeze" returntype="System.Int32" />
-        <method name="GetColorSet(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet" returntype="System.Int32" />
-        <method name="Draw(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT, System.IntPtr, System.Int32)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue" returntype="System.Void" />
-    </interface>
-    <interface name="IPersist" namespace="System.Windows.Forms">
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
-    </interface>
-    <interface name="IPersistPropertyBag" namespace="System.Windows.Forms">
-        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IPropertyBag, System.Boolean, System.Boolean)" argnames="pPropBag, fClearDirty, fSaveAllProperties" returntype="System.Void" />
-        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IPropertyBag, System.Windows.Forms.UnsafeNativeMethods.IErrorLog)" argnames="pPropBag, pErrorLog" returntype="System.Void" />
-        <method name="InitNew" argnames="" returntype="System.Void" />
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
-    </interface>
-    <interface name="IQuickActivate" namespace="System.Windows.Forms">
-        <method name="GetContentExtent(System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="pSizel" returntype="System.Void" />
-        <method name="SetContentExtent(System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="pSizel" returntype="System.Void" />
-        <method name="QuickActivate(System.Windows.Forms.UnsafeNativeMethods.tagQACONTAINER, System.Windows.Forms.UnsafeNativeMethods.tagQACONTROL)" argnames="pQaContainer, pQaControl" returntype="System.Void" />
-    </interface>
-    <interface name="IPropertyBag" namespace="System.Windows.Forms">
-        <method name="Write(System.String, System.Object&amp;)" argnames="pszPropName, pVar" returntype="System.Int32" />
-        <method name="Read(System.String, System.Object&amp;, System.Windows.Forms.UnsafeNativeMethods.IErrorLog)" argnames="pszPropName, pVar, pErrorLog" returntype="System.Int32" />
-    </interface>
-    <interface name="IErrorLog" namespace="System.Windows.Forms">
-        <method name="AddError(System.String, System.Windows.Forms.NativeMethods.tagEXCEPINFO)" argnames="pszPropName_p0, pExcepInfo_p1" returntype="System.Void" />
-    </interface>
-    <interface name="IPersistStream" namespace="System.Windows.Forms">
-        <method name="GetSizeMax" argnames="" returntype="System.Int64" />
-        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Boolean)" argnames="pstm, fClearDirty" returntype="System.Void" />
-        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
-        <method name="IsDirty" argnames="" returntype="System.Int32" />
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassId" returntype="System.Void" />
-    </interface>
-    <interface name="IPersistStreamInit" namespace="System.Windows.Forms">
-        <method name="InitNew" argnames="" returntype="System.Void" />
-        <method name="GetSizeMax(System.Int64)" argnames="pcbSize" returntype="System.Void" />
-        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Boolean)" argnames="pstm, fClearDirty" returntype="System.Void" />
-        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
-        <method name="IsDirty" argnames="" returntype="System.Int32" />
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
-    </interface>
-    <interface name="IConnectionPoint" namespace="System.Windows.Forms">
-        <method name="EnumConnections(System.Object&amp;)" argnames="pEnum" returntype="System.Int32" />
-        <method name="Unadvise(System.Int32)" argnames="cookie" returntype="System.Int32" />
-        <method name="Advise(System.Object, System.Int32&amp;)" argnames="pUnkSink, cookie" returntype="System.Int32" />
-        <method name="GetConnectionPointContainer(System.Windows.Forms.UnsafeNativeMethods.IConnectionPointContainer&amp;)" argnames="pContainer" returntype="System.Int32" />
-        <method name="GetConnectionInterface(System.Guid&amp;)" argnames="iid" returntype="System.Int32" />
-    </interface>
-    <interface name="IPersistStorage" namespace="System.Windows.Forms">
-        <method name="HandsOffStorage" argnames="" returntype="System.Void" />
-        <method name="SaveCompleted(System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="pStgNew" returntype="System.Void" />
-        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IStorage, System.Int32)" argnames="pStgSave, fSameAsLoad" returntype="System.Void" />
-        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="pstg" returntype="System.Int32" />
-        <method name="InitNew(System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="pstg" returntype="System.Void" />
-        <method name="IsDirty" argnames="" returntype="System.Int32" />
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
-    </interface>
-    <interface name="IEnumVariant" namespace="System.Windows.Forms">
-        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumVariant[])" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Void" />
-        <method name="Next(System.Int32, System.IntPtr, System.Int32[])" argnames="celt, rgvar, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="IEnumFORMATETC" namespace="System.Windows.Forms">
-        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumFORMATETC[])" argnames="ppenum" returntype="System.Int32" />
-        <method name="Reset" argnames="" returntype="System.Int32" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Windows.Forms.NativeMethods.FORMATETC, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="IEnumOLEVERB" namespace="System.Windows.Forms">
-        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumOLEVERB&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Windows.Forms.NativeMethods.tagOLEVERB, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="IAdviseSink" namespace="System.Windows.Forms">
-        <method name="OnClose" argnames="" returntype="System.Void" />
-        <method name="OnSave" argnames="" returntype="System.Void" />
-        <method name="OnRename(System.Object)" argnames="pmk" returntype="System.Void" />
-        <method name="OnViewChange(System.Int32, System.Int32)" argnames="dwAspect, lindex" returntype="System.Void" />
-        <method name="OnDataChange(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pStgmed" returntype="System.Void" />
-    </interface>
-    <interface name="IEnumSTATDATA" namespace="System.Windows.Forms">
-        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumSTATDATA[])" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Void" />
-        <method name="Next(System.Int32, System.Windows.Forms.NativeMethods.STATDATA, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Void" />
-    </interface>
-    <interface name="IStream" namespace="System.Windows.Forms">
-        <method name="Clone" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
-        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pStatstg, grfStatFlag" returntype="System.Void" />
-        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="Revert" argnames="" returntype="System.Void" />
-        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
-        <method name="CopyTo(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
-        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.Int32)" argnames="dlibMove, dwOrigin" returntype="System.Int64" />
-        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
-        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
-    </interface>
-    <interface name="IStorage" namespace="System.Windows.Forms">
-        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pStatStg, grfStatFlag" returntype="System.Void" />
-        <method name="SetStateBits(System.Int32, System.Int32)" argnames="grfStateBits, grfMask" returntype="System.Void" />
-        <method name="SetClass(System.Guid&amp;)" argnames="clsid" returntype="System.Void" />
-        <method name="SetElementTimes(System.String, System.Windows.Forms.NativeMethods.FILETIME, System.Windows.Forms.NativeMethods.FILETIME, System.Windows.Forms.NativeMethods.FILETIME)" argnames="pwcsName, pctime, patime, pmtime" returntype="System.Void" />
-        <method name="RenameElement(System.String, System.String)" argnames="pwcsOldName, pwcsNewName" returntype="System.Void" />
-        <method name="DestroyElement(System.String)" argnames="pwcsName" returntype="System.Void" />
-        <method name="EnumElements(System.Int32, System.IntPtr, System.Int32, System.Object&amp;)" argnames="reserved1, reserved2, reserved3, ppVal" returntype="System.Void" />
-        <method name="Revert" argnames="" returntype="System.Void" />
-        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
-        <method name="MoveElementTo(System.String, System.Windows.Forms.UnsafeNativeMethods.IStorage, System.String, System.Int32)" argnames="pwcsName, stgDest, pwcsNewName, grfFlags" returntype="System.Void" />
-        <method name="CopyTo(System.Int32, System.Guid[], System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="ciidExclude, pIIDExclude, snbExclude, stgDest" returntype="System.Void" />
-        <method name="OpenStorage(System.String, System.IntPtr, System.Int32, System.IntPtr, System.Int32)" argnames="pwcsName, pstgPriority, grfMode, snbExclude, reserved" returntype="System.Windows.Forms.UnsafeNativeMethods+IStorage" />
-        <method name="CreateStorage(System.String, System.Int32, System.Int32, System.Int32)" argnames="pwcsName, grfMode, reserved1, reserved2" returntype="System.Windows.Forms.UnsafeNativeMethods+IStorage" />
-        <method name="OpenStream(System.String, System.IntPtr, System.Int32, System.Int32)" argnames="pwcsName, reserved1, grfMode, reserved2" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
-        <method name="CreateStream(System.String, System.Int32, System.Int32, System.Int32)" argnames="pwcsName, grfMode, reserved1, reserved2" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
-    </interface>
-    <interface name="IClassFactory2" namespace="System.Windows.Forms">
-        <method name="CreateInstanceLic(System.Object, System.Object, System.Guid&amp;, System.String, System.Object&amp;)" argnames="pUnkOuter, pUnkReserved, riid, bstrKey, ppVal" returntype="System.Void" />
-        <method name="RequestLicKey(System.Int32, System.String[])" argnames="dwReserved, pBstrKey" returntype="System.Void" />
-        <method name="GetLicInfo(System.Windows.Forms.NativeMethods.tagLICINFO)" argnames="licInfo" returntype="System.Void" />
-        <method name="LockServer(System.Int32)" argnames="fLock" returntype="System.Void" />
-        <method name="CreateInstance(System.Object, System.Guid&amp;, System.Object[])" argnames="unused, refiid, ppunk" returntype="System.Void" />
-    </interface>
-    <interface name="IConnectionPointContainer" namespace="System.Windows.Forms">
-        <method name="FindConnectionPoint(System.Guid&amp;)" argnames="guid" returntype="System.Windows.Forms.UnsafeNativeMethods+IConnectionPoint" />
-        <method name="EnumConnectionPoints" argnames="" returntype="System.Object" />
-    </interface>
-    <interface name="IEnumConnectionPoints" namespace="System.Windows.Forms">
-        <method name="Clone" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IEnumConnectionPoints" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="cSkip" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IConnectionPoint&amp;, System.Int32&amp;)" argnames="cConnections, pCp, pcFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="IDispatch" namespace="System.Windows.Forms">
-        <method name="Invoke(System.Int32, System.Guid&amp;, System.Int32, System.Int32, System.Windows.Forms.NativeMethods.tagDISPPARAMS, System.Object[], System.Windows.Forms.NativeMethods.tagEXCEPINFO, System.IntPtr[])" argnames="dispIdMember, riid, lcid, dwFlags, pDispParams, pVarResult, pExcepInfo, pArgErr" returntype="System.Int32" />
-        <method name="GetIDsOfNames(System.Guid&amp;, System.String[], System.Int32, System.Int32, System.Int32[])" argnames="riid, rgszNames, cNames, lcid, rgDispId" returntype="System.Int32" />
-        <method name="GetTypeInfo(System.Int32, System.Int32)" argnames="iTInfo, lcid" returntype="System.Windows.Forms.UnsafeNativeMethods+ITypeInfo" />
-        <method name="GetTypeInfoCount" argnames="" returntype="System.Int32" />
-    </interface>
-    <interface name="ITypeInfo" namespace="System.Windows.Forms">
-        <method name="ReleaseVarDesc(System.IntPtr)" argnames="varDesc" returntype="System.Void" />
-        <method name="ReleaseFuncDesc(System.IntPtr)" argnames="funcDesc" returntype="System.Void" />
-        <method name="ReleaseTypeAttr(System.IntPtr)" argnames="typeAttr" returntype="System.Void" />
-        <method name="GetContainingTypeLib(System.Windows.Forms.UnsafeNativeMethods.ITypeLib[], System.Int32[])" argnames="ppTLib, pIndex" returntype="System.Int32" />
-        <method name="GetMops(System.Int32, System.String[])" argnames="memid, pBstrMops" returntype="System.Int32" />
-        <method name="CreateInstance(System.Guid&amp;, System.Object[])" argnames="riid, ppvObj" returntype="System.Int32" />
-        <method name="AddressOfMember" argnames="" returntype="System.Int32" />
-        <method name="GetRefTypeInfo(System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo&amp;)" argnames="hreftype, pTypeInfo" returntype="System.Int32" />
-        <method name="GetDllEntry(System.Int32, System.Windows.Forms.NativeMethods.tagINVOKEKIND, System.String[], System.String[], System.Int16[])" argnames="memid, invkind, pBstrDllName, pBstrName, pwOrdinal" returntype="System.Int32" />
-        <method name="GetDocumentation(System.Int32, System.String&amp;, System.String&amp;, System.Int32[], System.String[])" argnames="memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile" returntype="System.Int32" />
-        <method name="Invoke" argnames="" returntype="System.Int32" />
-        <method name="GetIDsOfNames(System.IntPtr, System.Int32, System.IntPtr)" argnames="rgszNames, cNames, pMemId" returntype="System.Int32" />
-        <method name="GetImplTypeFlags(System.Int32, System.Int32[])" argnames="index, pImplTypeFlags" returntype="System.Int32" />
-        <method name="GetRefTypeOfImplType(System.Int32, System.Int32[])" argnames="index, pRefType" returntype="System.Int32" />
-        <method name="GetNames(System.Int32, System.String[], System.Int32, System.Int32[])" argnames="memid, rgBstrNames, cMaxNames, pcNames" returntype="System.Int32" />
-        <method name="GetVarDesc(System.Int32, System.IntPtr&amp;)" argnames="index, pVarDesc" returntype="System.Int32" />
-        <method name="GetFuncDesc(System.Int32, System.IntPtr&amp;)" argnames="index, pFuncDesc" returntype="System.Int32" />
-        <method name="GetTypeComp(System.Windows.Forms.UnsafeNativeMethods.ITypeComp[])" argnames="ppTComp" returntype="System.Int32" />
-        <method name="GetTypeAttr(System.IntPtr&amp;)" argnames="pTypeAttr" returntype="System.Int32" />
-    </interface>
-    <interface name="ITypeComp" namespace="System.Windows.Forms">
-        <method name="RemoteBindType(System.String, System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[])" argnames="szName, lHashVal, ppTInfo" returntype="System.Void" />
-        <method name="RemoteBind(System.String, System.Int32, System.Int16, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[], System.Windows.Forms.NativeMethods.tagDESCKIND[], System.Windows.Forms.NativeMethods.tagFUNCDESC[], System.Windows.Forms.NativeMethods.tagVARDESC[], System.Windows.Forms.UnsafeNativeMethods.ITypeComp[], System.Int32[])" argnames="szName, lHashVal, wFlags, ppTInfo, pDescKind, ppFuncDesc, ppVarDesc, ppTypeComp, pDummy" returntype="System.Void" />
-    </interface>
-    <interface name="ITypeLib" namespace="System.Windows.Forms">
-        <method name="LocalReleaseTLibAttr" argnames="" returntype="System.Void" />
-        <method name="RemoteFindName(System.String, System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[], System.Int32[], System.Int16[], System.String[])" argnames="szNameBuf, lHashVal, ppTInfo, rgMemId, pcFound, pBstrLibName" returntype="System.Void" />
-        <method name="RemoteIsName(System.String, System.Int32, System.IntPtr[], System.String[])" argnames="szNameBuf, lHashVal, pfName, pBstrLibName" returntype="System.Void" />
-        <method name="RemoteGetDocumentation(System.Int32, System.Int32, System.String[], System.String[], System.Int32[], System.String[])" argnames="index, refPtrFlags, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile" returntype="System.Void" />
-        <method name="GetTypeComp(System.Windows.Forms.UnsafeNativeMethods.ITypeComp[])" argnames="ppTComp" returntype="System.Void" />
-        <method name="RemoteGetLibAttr(System.Windows.Forms.NativeMethods.tagTLIBATTR[], System.Int32[])" argnames="ppTLibAttr, pDummy" returntype="System.Void" />
-        <method name="GetTypeInfoOfGuid(System.Guid&amp;, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[])" argnames="guid, ppTInfo" returntype="System.Void" />
-        <method name="GetTypeInfoType(System.Int32, System.Windows.Forms.NativeMethods.tagTYPEKIND[])" argnames="index, pTKind" returntype="System.Void" />
-        <method name="GetTypeInfo(System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[])" argnames="index, ppTInfo" returntype="System.Void" />
-        <method name="RemoteGetTypeInfoCount(System.Int32[])" argnames="pcTInfo" returntype="System.Void" />
-    </interface>
-    <interface name="ISupportErrorInfo" namespace="System.Windows.Forms">
-        <method name="InterfaceSupportsErrorInfo(System.Guid&amp;)" argnames="riid" returntype="System.Int32" />
-    </interface>
-    <interface name="IErrorInfo" namespace="System.Windows.Forms">
-        <method name="GetHelpContext(System.Int32&amp;)" argnames="pdwHelpContext" returntype="System.Int32" />
-        <method name="GetHelpFile(System.String&amp;)" argnames="pBstrHelpFile" returntype="System.Int32" />
-        <method name="GetDescription(System.String&amp;)" argnames="pBstrDescription" returntype="System.Int32" />
-        <method name="GetSource(System.String&amp;)" argnames="pBstrSource" returntype="System.Int32" />
-        <method name="GetGUID(System.Guid&amp;)" argnames="pguid" returntype="System.Int32" />
-    </interface>
-    <interface name="ILockBytes" namespace="System.Windows.Forms">
-        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pstatstg, grfStatFlag" returntype="System.Void" />
-        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="SetSize(System.Int64)" argnames="cb" returntype="System.Void" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="WriteAt(System.Int64, System.IntPtr, System.Int32, System.Int32[])" argnames="ulOffset, pv, cb, pcbWritten" returntype="System.Void" />
-        <method name="ReadAt(System.Int64, System.IntPtr, System.Int32, System.Int32[])" argnames="ulOffset, pv, cb, pcbRead" returntype="System.Void" />
-    </interface>
-    <interface name="IWin32Window" namespace="System.Windows.Forms">
-        <property name="Handle" propertytype="System.IntPtr" />
-    </interface>
-    <interface name="IWindowTarget" namespace="System.Windows.Forms">
-        <method name="OnMessage(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
-        <method name="OnHandleChange(System.IntPtr)" argnames="newHandle" returntype="System.Void" />
-    </interface>
-    <interface name="IContainerControl" namespace="System.Windows.Forms">
-        <property name="ActiveControl" propertytype="System.Windows.Forms.Control" />
-        <method name="ActivateControl(System.Windows.Forms.Control)" argnames="active" returntype="System.Boolean" />
-    </interface>
-    <interface name="IDataGridEditingService" namespace="System.Windows.Forms">
-        <method name="EndEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32, System.Boolean)" argnames="gridColumn, rowNumber, shouldAbort" returntype="System.Boolean" />
-        <method name="BeginEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32)" argnames="gridColumn, rowNumber" returntype="System.Boolean" />
-    </interface>
-    <interface name="IButtonControl" namespace="System.Windows.Forms">
-        <property name="DialogResult" propertytype="System.Windows.Forms.DialogResult" />
-        <method name="PerformClick" argnames="" returntype="System.Void" />
-        <method name="NotifyDefault(System.Boolean)" argnames="value" returntype="System.Void" />
-    </interface>
-    <interface name="IDataGridColumnStyleEditingNotificationService" namespace="System.Windows.Forms">
-        <method name="ColumnStartedEditing(System.Windows.Forms.Control)" argnames="editingControl" returntype="System.Void" />
-    </interface>
-    <interface name="IDataObject" namespace="System.Windows.Forms">
-        <method name="GetFormats" argnames="" returntype="System.String[]" />
-        <method name="GetFormats(System.Boolean)" argnames="autoConvert" returntype="System.String[]" />
-        <method name="GetDataPresent(System.Type)" argnames="format" returntype="System.Boolean" />
-        <method name="GetDataPresent(System.String)" argnames="format" returntype="System.Boolean" />
-        <method name="GetDataPresent(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Boolean" />
-        <method name="SetData(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="SetData(System.Type, System.Object)" argnames="format, data" returntype="System.Void" />
-        <method name="SetData(System.String, System.Object)" argnames="format, data" returntype="System.Void" />
-        <method name="SetData(System.String, System.Boolean, System.Object)" argnames="format, autoConvert, data" returntype="System.Void" />
-        <method name="GetData(System.Type)" argnames="format" returntype="System.Object" />
-        <method name="GetData(System.String)" argnames="format" returntype="System.Object" />
-        <method name="GetData(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Object" />
-    </interface>
-    <interface name="IFeatureSupport" namespace="System.Windows.Forms">
-        <method name="GetVersionPresent(System.Object)" argnames="feature" returntype="System.Version" />
-        <method name="IsPresent(System.Object, System.Version)" argnames="feature, minimumVersion" returntype="System.Boolean" />
-        <method name="IsPresent(System.Object)" argnames="feature" returntype="System.Boolean" />
-    </interface>
-    <interface name="IMessageFilter" namespace="System.Windows.Forms">
-        <method name="PreFilterMessage(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
-    </interface>
-    <interface name="ICommandExecutor" namespace="System.Windows.Forms">
-        <method name="Execute" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IFileReaderService" namespace="System.Windows.Forms">
-        <method name="OpenFileFromSource(System.String)" argnames="relativePath" returntype="System.IO.Stream" />
-    </interface>
-    <interface name="IVsPerPropertyBrowsing" namespace="System.Windows.Forms">
-        <method name="ResetPropertyValue(System.Int32)" argnames="dispid" returntype="System.Int32" />
-        <method name="CanResetPropertyValue(System.Int32, System.Boolean&amp;)" argnames="dispid, pfCanReset" returntype="System.Int32" />
-        <method name="GetClassName(System.String&amp;)" argnames="pbstrClassName" returntype="System.Int32" />
-        <method name="IsPropertyReadOnly(System.Int32, System.Boolean&amp;)" argnames="dispid, fReadOnly" returntype="System.Int32" />
-        <method name="HasDefaultValue(System.Int32, System.Boolean&amp;)" argnames="dispid, fDefault" returntype="System.Int32" />
-        <method name="GetLocalizedPropertyInfo(System.Int32, System.Int32, System.String[], System.String[])" argnames="dispid, localeID, pbstrLocalizedName, pbstrLocalizeDescription" returntype="System.Int32" />
-        <method name="DisplayChildProperties(System.Int32, System.Boolean&amp;)" argnames="dispid, pfDisplay" returntype="System.Int32" />
-        <method name="HideProperty(System.Int32, System.Boolean&amp;)" argnames="dispid, pfHide" returntype="System.Int32" />
-    </interface>
-    <interface name="IManagedPerPropertyBrowsing" namespace="System.Windows.Forms">
-        <method name="GetPropertyAttributes(System.Int32, System.Int32&amp;, System.IntPtr&amp;, System.IntPtr&amp;)" argnames="dispid, pcAttributes, pbstrAttrNames, pvariantInitValues" returntype="System.Int32" />
-    </interface>
-    <interface name="IProvidePropertyBuilder" namespace="System.Windows.Forms">
-        <method name="ExecuteBuilder(System.Int32, System.String, System.Object, System.IntPtr, System.Object&amp;, System.Boolean&amp;)" argnames="dispid, bstrGuidBldr, pdispApp, hwndBldrOwner, pvarValue, actionCommitted" returntype="System.Int32" />
-        <method name="MapPropertyToBuilder(System.Int32, System.Int32[], System.String[], System.Boolean&amp;)" argnames="dispid, pdwCtlBldType, pbstrGuidBldr, builderAvailable" returntype="System.Int32" />
-    </interface>
-    <interface name="IPerPropertyBrowsing" namespace="System.Windows.Forms">
-        <method name="GetPredefinedValue(System.Int32, System.Int32, System.Windows.Forms.NativeMethods.VARIANT)" argnames="dispID, dwCookie, pVarOut" returntype="System.Int32" />
-        <method name="GetPredefinedStrings(System.Int32, System.Windows.Forms.NativeMethods.CA_STRUCT, System.Windows.Forms.NativeMethods.CA_STRUCT)" argnames="dispID, pCaStringsOut, pCaCookiesOut" returntype="System.Int32" />
-        <method name="MapPropertyToPage(System.Int32, System.Guid&amp;)" argnames="dispID, pGuid" returntype="System.Int32" />
-        <method name="GetDisplayString(System.Int32, System.String[])" argnames="dispID, pBstr" returntype="System.Int32" />
-    </interface>
-    <interface name="ICategorizeProperties" namespace="System.Windows.Forms">
-        <method name="GetCategoryName(System.Int32, System.Int32, System.String&amp;)" argnames="propcat, lcid, categoryName" returntype="System.Int32" />
-        <method name="MapPropertyToCategory(System.Int32, System.Int32&amp;)" argnames="dispID, categoryID" returntype="System.Int32" />
-    </interface>
-    <interface name="ISpecifyPropertyPages" namespace="System.Windows.Forms">
-        <method name="GetPages(System.Windows.Forms.NativeMethods.tagCAUUID)" argnames="pPages" returntype="System.Void" />
-    </interface>
-    <interface name="IProvideMultipleClassInfo" namespace="System.Windows.Forms">
-        <method name="GetInfoOfIndex(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo&amp;, System.Int32, System.Int32, System.IntPtr, System.IntPtr)" argnames="iti, dwFlags, pTypeInfo, pTIFlags, pcdispidReserved, piidPrimary, piidSource" returntype="System.Int32" />
-        <method name="GetMultiTypeInfoCount(System.Int32&amp;)" argnames="pcti" returntype="System.Int32" />
-        <method name="GetGUID(System.Int32, System.Guid&amp;)" argnames="dwGuidKind, pGuid" returntype="System.Int32" />
-        <method name="GetClassInfo" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+ITypeInfo" />
-    </interface>
-    <interface name="IProvideClassInfo" namespace="System.Windows.Forms">
-        <method name="GetClassInfo" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+ITypeInfo" />
-    </interface>
-    <interface name="IPicture" namespace="System.Windows.Forms">
-        <method name="GetAttributes" argnames="" returntype="System.Int32" />
-        <method name="SaveAsFile(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Int32, System.Int32&amp;)" argnames="pstm, fSaveMemCopy, pcbSize" returntype="System.Int32" />
-        <method name="PictureChanged" argnames="" returntype="System.Void" />
-        <method name="SetKeepOriginalFormat(System.Boolean)" argnames="pfkeep" returntype="System.Void" />
-        <method name="GetKeepOriginalFormat" argnames="" returntype="System.Boolean" />
-        <method name="SelectPicture(System.IntPtr, System.IntPtr[], System.IntPtr[])" argnames="hdcIn, phdcOut, phbmpOut" returntype="System.Void" />
-        <method name="GetCurDC" argnames="" returntype="System.IntPtr" />
-        <method name="SetHPal(System.IntPtr)" argnames="phpal" returntype="System.Void" />
-        <method name="Render(System.IntPtr, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.IntPtr)" argnames="hDC, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc, rcBounds" returntype="System.Void" />
-        <method name="GetHeight" argnames="" returntype="System.Int32" />
-        <method name="GetWidth" argnames="" returntype="System.Int32" />
-        <method name="GetPictureType" argnames="" returntype="System.Int16" />
-        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
-        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
-    </interface>
-    <interface name="IFont" namespace="System.Windows.Forms">
-        <method name="SetHdc(System.IntPtr)" argnames="hdc" returntype="System.Void" />
-        <method name="ReleaseHfont(System.IntPtr)" argnames="hFont" returntype="System.Void" />
-        <method name="AddRefHfont(System.IntPtr)" argnames="hFont" returntype="System.Void" />
-        <method name="QueryTextMetrics(System.IntPtr&amp;)" argnames="ptm" returntype="System.Void" />
-        <method name="SetRatio(System.Int32, System.Int32)" argnames="cyLogical, cyHimetric" returntype="System.Void" />
-        <method name="IsEqual(System.Windows.Forms.SafeNativeMethods.IFont)" argnames="pfontOther" returntype="System.Int32" />
-        <method name="Clone(System.Windows.Forms.SafeNativeMethods.IFont&amp;)" argnames="ppfont" returntype="System.Void" />
-        <method name="GetHFont" argnames="" returntype="System.IntPtr" />
-        <method name="SetCharset(System.Int16)" argnames="pcharset" returntype="System.Void" />
-        <method name="GetCharset" argnames="" returntype="System.Int16" />
-        <method name="SetWeight(System.Int16)" argnames="pweight" returntype="System.Void" />
-        <method name="GetWeight" argnames="" returntype="System.Int16" />
-        <method name="SetStrikethrough(System.Boolean)" argnames="pstrikethrough" returntype="System.Void" />
-        <method name="GetStrikethrough" argnames="" returntype="System.Boolean" />
-        <method name="SetUnderline(System.Boolean)" argnames="punderline" returntype="System.Void" />
-        <method name="GetUnderline" argnames="" returntype="System.Boolean" />
-        <method name="SetItalic(System.Boolean)" argnames="pitalic" returntype="System.Void" />
-        <method name="GetItalic" argnames="" returntype="System.Boolean" />
-        <method name="SetBold(System.Boolean)" argnames="pbold" returntype="System.Void" />
-        <method name="GetBold" argnames="" returntype="System.Boolean" />
-        <method name="SetSize(System.Int64)" argnames="psize" returntype="System.Void" />
-        <method name="GetSize" argnames="" returntype="System.Int64" />
-        <method name="SetName(System.String)" argnames="pname" returntype="System.Void" />
-        <method name="GetName" argnames="" returntype="System.String" />
-    </interface>
-    <interface name="IFontDisp" namespace="System.Windows.Forms">
-        <property name="Name" propertytype="System.String" />
-        <property name="Size" propertytype="System.Int64" />
-        <property name="Bold" propertytype="System.Boolean" />
-        <property name="Italic" propertytype="System.Boolean" />
-        <property name="Underline" propertytype="System.Boolean" />
-        <property name="Strikethrough" propertytype="System.Boolean" />
-        <property name="Weight" propertytype="System.Int16" />
-        <property name="Charset" propertytype="System.Int16" />
-    </interface>
-    <interface name="IPictureDisp" namespace="System.Windows.Forms">
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="HPal" propertytype="System.IntPtr" />
-        <property name="PictureType" propertytype="System.Int16" />
-        <property name="Width" propertytype="System.Int32" />
-        <property name="Height" propertytype="System.Int32" />
-        <method name="Render(System.IntPtr, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="hdc, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc" returntype="System.Void" />
-    </interface>
-    <interface name="IComponentEditorPageSite" namespace="System.Windows.Forms">
-        <method name="SetDirty" argnames="" returntype="System.Void" />
-        <method name="GetControl" argnames="" returntype="System.Windows.Forms.Control" />
-    </interface>
-    <struct name="BindingMemberInfo" namespace="System.Windows.Forms">
-        <constructor name="BindingMemberInfo(System.String)" argnames="dataMember" />
-        <property name="BindingPath" propertytype="System.String" />
-        <property name="BindingField" propertytype="System.String" />
-        <property name="BindingMember" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="otherObject" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="DataGridCell" namespace="System.Windows.Forms">
-        <constructor name="DataGridCell(System.Int32, System.Int32)" argnames="r, c" />
-        <property name="ColumnNumber" propertytype="System.Int32" />
-        <property name="RowNumber" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="LinkArea" namespace="System.Windows.Forms">
-        <class name="LinkAreaConverter" namespace="System.Windows.Forms">
-            <constructor name="LinkAreaConverter" argnames="" />
-            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="LinkAreaConverter(System.Int32, System.Int32)" argnames="start, length" />
-        <property name="Start" propertytype="System.Int32" />
-        <property name="Length" propertytype="System.Int32" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="Message" namespace="System.Windows.Forms">
-        <property name="HWnd" propertytype="System.IntPtr" />
-        <property name="Msg" propertytype="System.Int32" />
-        <property name="WParam" propertytype="System.IntPtr" />
-        <property name="LParam" propertytype="System.IntPtr" />
-        <property name="Result" propertytype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetLParam(System.Type)" argnames="cls" returntype="System.Object" />
-        <method name="Create(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.Windows.Forms.Message" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="RECT" namespace="System.Windows.Forms">
-        <constructor name="RECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
-        <field name="left" />
-        <field name="top" />
-        <field name="right" />
-        <field name="bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Windows.Forms.NativeMethods+RECT" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="MSG" namespace="System.Windows.Forms">
-        <field name="hwnd" />
-        <field name="message" />
-        <field name="wParam" />
-        <field name="lParam" />
-        <field name="time" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="PAINTSTRUCT" namespace="System.Windows.Forms">
-        <field name="hdc" />
-        <field name="fErase" />
-        <field name="rcPaint_left" />
-        <field name="rcPaint_top" />
-        <field name="rcPaint_right" />
-        <field name="rcPaint_bottom" />
-        <field name="fRestore" />
-        <field name="fIncUpdate" />
-        <field name="reserved1" />
-        <field name="reserved2" />
-        <field name="reserved3" />
-        <field name="reserved4" />
-        <field name="reserved5" />
-        <field name="reserved6" />
-        <field name="reserved7" />
-        <field name="reserved8" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="WINDOWPLACEMENT" namespace="System.Windows.Forms">
-        <field name="length" />
-        <field name="flags" />
-        <field name="showCmd" />
-        <field name="ptMinPosition_x" />
-        <field name="ptMinPosition_y" />
-        <field name="ptMaxPosition_x" />
-        <field name="ptMaxPosition_y" />
-        <field name="rcNormalPosition_left" />
-        <field name="rcNormalPosition_top" />
-        <field name="rcNormalPosition_right" />
-        <field name="rcNormalPosition_bottom" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="NMLISTVIEW" namespace="System.Windows.Forms">
-        <field name="hdr" />
-        <field name="iItem" />
-        <field name="iSubItem" />
-        <field name="uNewState" />
-        <field name="uOldState" />
-        <field name="uChanged" />
-        <field name="lParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="NMHDR" namespace="System.Windows.Forms">
-        <field name="hwndFrom" />
-        <field name="idFrom" />
-        <field name="code" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="TV_ITEM" namespace="System.Windows.Forms">
-        <field name="mask" />
-        <field name="hItem" />
-        <field name="state" />
-        <field name="stateMask" />
-        <field name="pszText" />
-        <field name="cchTextMax" />
-        <field name="iImage" />
-        <field name="iSelectedImage" />
-        <field name="cChildren" />
-        <field name="lParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="TV_INSERTSTRUCT" namespace="System.Windows.Forms">
-        <field name="hParent" />
-        <field name="hInsertAfter" />
-        <field name="item_mask" />
-        <field name="item_hItem" />
-        <field name="item_state" />
-        <field name="item_stateMask" />
-        <field name="item_pszText" />
-        <field name="item_cchTextMax" />
-        <field name="item_iImage" />
-        <field name="item_iSelectedImage" />
-        <field name="item_cChildren" />
-        <field name="item_lParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="NMTREEVIEW" namespace="System.Windows.Forms">
-        <field name="nmhdr" />
-        <field name="action" />
-        <field name="itemOld" />
-        <field name="itemNew" />
-        <field name="ptDrag_X" />
-        <field name="ptDrag_Y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="HIGHCONTRAST" namespace="System.Windows.Forms">
-        <field name="cbSize" />
-        <field name="dwFlags" />
-        <field name="lpszDefaultScheme" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="HIGHCONTRAST_I" namespace="System.Windows.Forms">
-        <field name="cbSize" />
-        <field name="dwFlags" />
-        <field name="lpszDefaultScheme" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="value_tagELEMDESC" namespace="System.Windows.Forms">
-        <field name="tdesc" />
-        <field name="paramdesc" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="WINDOWPOS" namespace="System.Windows.Forms">
-        <field name="hwnd" />
-        <field name="hwndInsertAfter" />
-        <field name="x" />
-        <field name="y" />
-        <field name="cx" />
-        <field name="cy" />
-        <field name="flags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="NMTOOLBAR" namespace="System.Windows.Forms">
-        <field name="hdr" />
-        <field name="iItem" />
-        <field name="tbButton" />
-        <field name="cchText" />
-        <field name="pszText" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="TBBUTTON" namespace="System.Windows.Forms">
-        <field name="iBitmap" />
-        <field name="idCommand" />
-        <field name="fsState" />
-        <field name="fsStyle" />
-        <field name="bReserved0" />
-        <field name="bReserved1" />
-        <field name="dwData" />
-        <field name="iString" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="TBBUTTONINFO" namespace="System.Windows.Forms">
-        <field name="cbSize" />
-        <field name="dwMask" />
-        <field name="idCommand" />
-        <field name="iImage" />
-        <field name="fsState" />
-        <field name="fsStyle" />
-        <field name="cx" />
-        <field name="lParam" />
-        <field name="pszText" />
-        <field name="cchTest" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="NMCUSTOMDRAW" namespace="System.Windows.Forms">
-        <field name="nmcd" />
-        <field name="dwDrawStage" />
-        <field name="hdc" />
-        <field name="rc" />
-        <field name="dwItemSpec" />
-        <field name="uItemState" />
-        <field name="lItemlParam" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="NMLVCUSTOMDRAW" namespace="System.Windows.Forms">
-        <field name="nmcd" />
-        <field name="clrText" />
-        <field name="clrTextBk" />
-        <field name="iSubItem" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="LVFINDINFO" namespace="System.Windows.Forms">
-        <field name="flags" />
-        <field name="psz" />
-        <field name="lParam" />
-        <field name="ptX" />
-        <field name="ptY" />
-        <field name="vkDirection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="LVITEM" namespace="System.Windows.Forms">
-        <field name="mask" />
-        <field name="iItem" />
-        <field name="iSubItem" />
-        <field name="state" />
-        <field name="stateMask" />
-        <field name="pszText" />
-        <field name="cchTextMax" />
-        <field name="iImage" />
-        <field name="lParam" />
-        <field name="iIndent" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="LVITEM_NOTEXT" namespace="System.Windows.Forms">
-        <field name="mask" />
-        <field name="iItem" />
-        <field name="iSubItem" />
-        <field name="state" />
-        <field name="stateMask" />
-        <field name="pszText" />
-        <field name="cchTextMax" />
-        <field name="iImage" />
-        <field name="lParam" />
-        <field name="iIndent" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="tagPARAMDESC" namespace="System.Windows.Forms">
-        <field name="pparamdescex" />
-        <field name="wParamFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="tagIDLDESC" namespace="System.Windows.Forms">
-        <field name="dwReserved" />
-        <field name="wIDLFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="RGBQUAD" namespace="System.Windows.Forms">
-        <field name="rgbBlue" />
-        <field name="rgbGreen" />
-        <field name="rgbRed" />
-        <field name="rgbReserved" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="PALETTEENTRY" namespace="System.Windows.Forms">
-        <field name="peRed" />
-        <field name="peGreen" />
-        <field name="peBlue" />
-        <field name="peFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="BITMAPINFO_FLAT" namespace="System.Windows.Forms">
-        <field name="bmiHeader_biSize" />
-        <field name="bmiHeader_biWidth" />
-        <field name="bmiHeader_biHeight" />
-        <field name="bmiHeader_biPlanes" />
-        <field name="bmiHeader_biBitCount" />
-        <field name="bmiHeader_biCompression" />
-        <field name="bmiHeader_biSizeImage" />
-        <field name="bmiHeader_biXPelsPerMeter" />
-        <field name="bmiHeader_biYPelsPerMeter" />
-        <field name="bmiHeader_biClrUsed" />
-        <field name="bmiHeader_biClrImportant" />
-        <field name="bmiColors" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <delegate name="ColumnClickEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ColumnClickEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ColumnClickEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ColumnClickEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ControlEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ControlEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ControlEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ControlEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ConvertEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ConvertEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ConvertEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ConvertEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DateBoldEventHandler" namespace="System.Windows.Forms">
-        <constructor name="DateBoldEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.DateBoldEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.DateBoldEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DateRangeEventHandler" namespace="System.Windows.Forms">
-        <constructor name="DateRangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.DateRangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.DateRangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DragEventHandler" namespace="System.Windows.Forms">
-        <constructor name="DragEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.DragEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.DragEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DrawItemEventHandler" namespace="System.Windows.Forms">
-        <constructor name="DrawItemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.DrawItemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.DrawItemEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="GiveFeedbackEventHandler" namespace="System.Windows.Forms">
-        <constructor name="GiveFeedbackEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.GiveFeedbackEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.GiveFeedbackEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="HelpEventHandler" namespace="System.Windows.Forms">
-        <constructor name="HelpEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.HelpEventArgs, System.AsyncCallback, System.Object)" argnames="sender, hlpevent, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.HelpEventArgs)" argnames="sender, hlpevent" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="InputLanguageChangedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="InputLanguageChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.InputLanguageChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="InputLanguageChangingEventHandler" namespace="System.Windows.Forms">
-        <constructor name="InputLanguageChangingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.InputLanguageChangingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="InvalidateEventHandler" namespace="System.Windows.Forms">
-        <constructor name="InvalidateEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.InvalidateEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.InvalidateEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ItemChangedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ItemChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ItemChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ItemChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ItemCheckEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ItemCheckEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ItemCheckEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ItemCheckEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ItemDragEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ItemDragEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ItemDragEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ItemDragEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="KeyEventHandler" namespace="System.Windows.Forms">
-        <constructor name="KeyEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.KeyEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="KeyPressEventHandler" namespace="System.Windows.Forms">
-        <constructor name="KeyPressEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.KeyPressEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="LabelEditEventHandler" namespace="System.Windows.Forms">
-        <constructor name="LabelEditEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.LabelEditEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.LabelEditEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="LayoutEventHandler" namespace="System.Windows.Forms">
-        <constructor name="LayoutEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.LayoutEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.LayoutEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="LinkClickedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="LinkClickedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.LinkClickedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.LinkClickedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="LinkLabelLinkClickedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="LinkLabelLinkClickedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.LinkLabelLinkClickedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.LinkLabelLinkClickedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="MeasureItemEventHandler" namespace="System.Windows.Forms">
-        <constructor name="MeasureItemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.MeasureItemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.MeasureItemEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="MethodInvoker" namespace="System.Windows.Forms">
-        <constructor name="MethodInvoker(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke" argnames="" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="MouseEventHandler" namespace="System.Windows.Forms">
-        <constructor name="MouseEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.MouseEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="EnumChildrenCallback" namespace="System.Windows.Forms">
-        <constructor name="EnumChildrenCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hwnd, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hwnd, lParam" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="EnumChildrenProc" namespace="System.Windows.Forms">
-        <constructor name="EnumChildrenProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hwnd, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hwnd, lParam" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="EditStreamCallback" namespace="System.Windows.Forms">
-        <constructor name="EditStreamCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.Int32&amp;, System.IAsyncResult)" argnames="transferred, result" returntype="System.Int32" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.Int32, System.Int32&amp;, System.AsyncCallback, System.Object)" argnames="dwCookie, buf, cb, transferred, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr, System.Int32, System.Int32&amp;)" argnames="dwCookie, buf, cb, transferred" returntype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="WndProc" namespace="System.Windows.Forms">
-        <constructor name="WndProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
-        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.IntPtr" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ListViewCompareCallback" namespace="System.Windows.Forms">
-        <constructor name="ListViewCompareCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="lParam1, lParam2, lParamSort, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="lParam1, lParam2, lParamSort" returntype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="HookProc" namespace="System.Windows.Forms">
-        <constructor name="HookProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
-        <method name="BeginInvoke(System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="nCode, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Int32, System.IntPtr, System.IntPtr)" argnames="nCode, wParam, lParam" returntype="System.IntPtr" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="EnumThreadWindowsCallback" namespace="System.Windows.Forms">
-        <constructor name="EnumThreadWindowsCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hWnd, lParam" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="TimerProc" namespace="System.Windows.Forms">
-        <constructor name="TimerProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="HandleChangeEventHandler" namespace="System.Windows.Forms">
-        <constructor name="HandleChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.String, System.IntPtr, System.Int32, System.AsyncCallback, System.Object)" argnames="handleType, handleValue, currentHandleCount, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.String, System.IntPtr, System.Int32)" argnames="handleType, handleValue, currentHandleCount" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="MonitorEnumProc" namespace="System.Windows.Forms">
-        <constructor name="MonitorEnumProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="monitor, hdc, lprcMonitor, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr, System.IntPtr, System.IntPtr)" argnames="monitor, hdc, lprcMonitor, lParam" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="NavigateEventHandler" namespace="System.Windows.Forms">
-        <constructor name="NavigateEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.NavigateEventArgs, System.AsyncCallback, System.Object)" argnames="sender, ne, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.NavigateEventArgs)" argnames="sender, ne" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="NodeLabelEditEventHandler" namespace="System.Windows.Forms">
-        <constructor name="NodeLabelEditEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.NodeLabelEditEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.NodeLabelEditEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="PaintEventHandler" namespace="System.Windows.Forms">
-        <constructor name="PaintEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.PaintEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="PropertyTabChangedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="PropertyTabChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.PropertyTabChangedEventArgs, System.AsyncCallback, System.Object)" argnames="s, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.PropertyTabChangedEventArgs)" argnames="s, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="PropertyValueChangedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="PropertyValueChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.PropertyValueChangedEventArgs, System.AsyncCallback, System.Object)" argnames="s, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.PropertyValueChangedEventArgs)" argnames="s, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="QueryAccessibilityHelpEventHandler" namespace="System.Windows.Forms">
-        <constructor name="QueryAccessibilityHelpEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.QueryAccessibilityHelpEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.QueryAccessibilityHelpEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="QueryContinueDragEventHandler" namespace="System.Windows.Forms">
-        <constructor name="QueryContinueDragEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.QueryContinueDragEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.QueryContinueDragEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ContentsResizedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ContentsResizedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ContentsResizedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ContentsResizedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ScrollEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ScrollEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ScrollEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ScrollEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="SelectedGridItemChangedEventHandler" namespace="System.Windows.Forms">
-        <constructor name="SelectedGridItemChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.SelectedGridItemChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.SelectedGridItemChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="SplitterEventHandler" namespace="System.Windows.Forms">
-        <constructor name="SplitterEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.SplitterEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.SplitterEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="StatusBarDrawItemEventHandler" namespace="System.Windows.Forms">
-        <constructor name="StatusBarDrawItemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.StatusBarDrawItemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, sbdevent, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.StatusBarDrawItemEventArgs)" argnames="sender, sbdevent" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="StatusBarPanelClickEventHandler" namespace="System.Windows.Forms">
-        <constructor name="StatusBarPanelClickEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.StatusBarPanelClickEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.StatusBarPanelClickEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ToolBarButtonClickEventHandler" namespace="System.Windows.Forms">
-        <constructor name="ToolBarButtonClickEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.ToolBarButtonClickEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.ToolBarButtonClickEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="TreeViewCancelEventHandler" namespace="System.Windows.Forms">
-        <constructor name="TreeViewCancelEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.TreeViewCancelEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.TreeViewCancelEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="TreeViewEventHandler" namespace="System.Windows.Forms">
-        <constructor name="TreeViewEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.TreeViewEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="UICuesEventHandler" namespace="System.Windows.Forms">
-        <constructor name="UICuesEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.UICuesEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.UICuesEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="UpDownEventHandler" namespace="System.Windows.Forms">
-        <constructor name="UpDownEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Windows.Forms.UpDownEventArgs, System.AsyncCallback, System.Object)" argnames="source, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Windows.Forms.UpDownEventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="AccessibleEvents" namespace="System.Windows.Forms">
-        <field name="SystemSound" />
-        <field name="SystemAlert" />
-        <field name="SystemForeground" />
-        <field name="SystemMenuStart" />
-        <field name="SystemMenuEnd" />
-        <field name="SystemMenuPopupStart" />
-        <field name="SystemMenuPopupEnd" />
-        <field name="SystemCaptureStart" />
-        <field name="SystemCaptureEnd" />
-        <field name="SystemMoveSizeStart" />
-        <field name="SystemMoveSizeEnd" />
-        <field name="SystemContextHelpStart" />
-        <field name="SystemContextHelpEnd" />
-        <field name="SystemDragDropStart" />
-        <field name="SystemDragDropEnd" />
-        <field name="SystemDialogStart" />
-        <field name="SystemDialogEnd" />
-        <field name="SystemScrollingStart" />
-        <field name="SystemScrollingEnd" />
-        <field name="SystemSwitchStart" />
-        <field name="SystemSwitchEnd" />
-        <field name="SystemMinimizeStart" />
-        <field name="SystemMinimizeEnd" />
-        <field name="Create" />
-        <field name="Destroy" />
-        <field name="Show" />
-        <field name="Hide" />
-        <field name="Reorder" />
-        <field name="Focus" />
-        <field name="Selection" />
-        <field name="SelectionAdd" />
-        <field name="SelectionRemove" />
-        <field name="SelectionWithin" />
-        <field name="StateChange" />
-        <field name="LocationChange" />
-        <field name="NameChange" />
-        <field name="DescriptionChange" />
-        <field name="ValueChange" />
-        <field name="ParentChange" />
-        <field name="HelpChange" />
-        <field name="DefaultActionChange" />
-        <field name="AcceleratorChange" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="AccessibleNavigation" namespace="System.Windows.Forms">
-        <field name="Down" />
-        <field name="FirstChild" />
-        <field name="LastChild" />
-        <field name="Left" />
-        <field name="Next" />
-        <field name="Previous" />
-        <field name="Right" />
-        <field name="Up" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EXTENDED_NAME_FORMAT" namespace="System.Windows.Forms">
-        <field name="NameUnknown" />
-        <field name="NameFullyQualifiedDN" />
-        <field name="NameSamCompatible" />
-        <field name="NameDisplay" />
-        <field name="NameUniqueId" />
-        <field name="NameCanonical" />
-        <field name="NameUserPrincipal" />
-        <field name="NameCanonicalEx" />
-        <field name="NameServicePrincipal" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="AccessibleRole" namespace="System.Windows.Forms">
-        <field name="Default" />
-        <field name="None" />
-        <field name="TitleBar" />
-        <field name="MenuBar" />
-        <field name="ScrollBar" />
-        <field name="Grip" />
-        <field name="Sound" />
-        <field name="Cursor" />
-        <field name="Caret" />
-        <field name="Alert" />
-        <field name="Window" />
-        <field name="Client" />
-        <field name="MenuPopup" />
-        <field name="MenuItem" />
-        <field name="ToolTip" />
-        <field name="Application" />
-        <field name="Document" />
-        <field name="Pane" />
-        <field name="Chart" />
-        <field name="Dialog" />
-        <field name="Border" />
-        <field name="Grouping" />
-        <field name="Separator" />
-        <field name="ToolBar" />
-        <field name="StatusBar" />
-        <field name="Table" />
-        <field name="ColumnHeader" />
-        <field name="RowHeader" />
-        <field name="Column" />
-        <field name="Row" />
-        <field name="Cell" />
-        <field name="Link" />
-        <field name="HelpBalloon" />
-        <field name="Character" />
-        <field name="List" />
-        <field name="ListItem" />
-        <field name="Outline" />
-        <field name="OutlineItem" />
-        <field name="PageTab" />
-        <field name="PropertyPage" />
-        <field name="Indicator" />
-        <field name="Graphic" />
-        <field name="StaticText" />
-        <field name="Text" />
-        <field name="PushButton" />
-        <field name="CheckButton" />
-        <field name="RadioButton" />
-        <field name="ComboBox" />
-        <field name="DropList" />
-        <field name="ProgressBar" />
-        <field name="Dial" />
-        <field name="HotkeyField" />
-        <field name="Slider" />
-        <field name="SpinButton" />
-        <field name="Diagram" />
-        <field name="Animation" />
-        <field name="Equation" />
-        <field name="ButtonDropDown" />
-        <field name="ButtonMenu" />
-        <field name="ButtonDropDownGrid" />
-        <field name="WhiteSpace" />
-        <field name="PageTabList" />
-        <field name="Clock" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="AccessibleSelection" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="TakeFocus" />
-        <field name="TakeSelection" />
-        <field name="ExtendSelection" />
-        <field name="AddSelection" />
-        <field name="RemoveSelection" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="AccessibleStates" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Unavailable" />
-        <field name="Selected" />
-        <field name="Focused" />
-        <field name="Pressed" />
-        <field name="Checked" />
-        <field name="Mixed" />
-        <field name="Indeterminate" />
-        <field name="ReadOnly" />
-        <field name="HotTracked" />
-        <field name="Default" />
-        <field name="Expanded" />
-        <field name="Collapsed" />
-        <field name="Busy" />
-        <field name="Floating" />
-        <field name="Marqueed" />
-        <field name="Animated" />
-        <field name="Invisible" />
-        <field name="Offscreen" />
-        <field name="Sizeable" />
-        <field name="Moveable" />
-        <field name="SelfVoicing" />
-        <field name="Focusable" />
-        <field name="Selectable" />
-        <field name="Linked" />
-        <field name="Traversed" />
-        <field name="MultiSelectable" />
-        <field name="ExtSelectable" />
-        <field name="AlertLow" />
-        <field name="AlertMedium" />
-        <field name="AlertHigh" />
-        <field name="Protected" />
-        <field name="Valid" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="AnchorStyles" namespace="System.Windows.Forms">
-        <field name="Top" />
-        <field name="Bottom" />
-        <field name="Left" />
-        <field name="Right" />
-        <field name="None" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Appearance" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="Button" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ArrangeDirection" namespace="System.Windows.Forms">
-        <field name="Down" />
-        <field name="Left" />
-        <field name="Right" />
-        <field name="Up" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ArrangeStartingPosition" namespace="System.Windows.Forms">
-        <field name="BottomLeft" />
-        <field name="BottomRight" />
-        <field name="Hide" />
-        <field name="TopLeft" />
-        <field name="TopRight" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="BootMode" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="FailSafe" />
-        <field name="FailSafeWithNetwork" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Border3DSide" namespace="System.Windows.Forms">
-        <field name="Left" />
-        <field name="Top" />
-        <field name="Right" />
-        <field name="Bottom" />
-        <field name="Middle" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Border3DStyle" namespace="System.Windows.Forms">
-        <field name="Adjust" />
-        <field name="Bump" />
-        <field name="Etched" />
-        <field name="Flat" />
-        <field name="Raised" />
-        <field name="RaisedInner" />
-        <field name="RaisedOuter" />
-        <field name="Sunken" />
-        <field name="SunkenInner" />
-        <field name="SunkenOuter" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="BorderStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="FixedSingle" />
-        <field name="Fixed3D" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="BoundsSpecified" namespace="System.Windows.Forms">
-        <field name="X" />
-        <field name="Y" />
-        <field name="Width" />
-        <field name="Height" />
-        <field name="Location" />
-        <field name="Size" />
-        <field name="All" />
-        <field name="None" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ButtonBorderStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Dotted" />
-        <field name="Dashed" />
-        <field name="Solid" />
-        <field name="Inset" />
-        <field name="Outset" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ButtonState" namespace="System.Windows.Forms">
-        <field name="Checked" />
-        <field name="Flat" />
-        <field name="Inactive" />
-        <field name="Normal" />
-        <field name="Pushed" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CaptionButton" namespace="System.Windows.Forms">
-        <field name="Close" />
-        <field name="Help" />
-        <field name="Maximize" />
-        <field name="Minimize" />
-        <field name="Restore" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CharacterCasing" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="Upper" />
-        <field name="Lower" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CheckState" namespace="System.Windows.Forms">
-        <field name="Unchecked" />
-        <field name="Checked" />
-        <field name="Indeterminate" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ColorDepth" namespace="System.Windows.Forms">
-        <field name="Depth4Bit" />
-        <field name="Depth8Bit" />
-        <field name="Depth16Bit" />
-        <field name="Depth24Bit" />
-        <field name="Depth32Bit" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ColumnHeaderStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Nonclickable" />
-        <field name="Clickable" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ComboBoxStyle" namespace="System.Windows.Forms">
-        <field name="Simple" />
-        <field name="DropDown" />
-        <field name="DropDownList" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ControlStyles" namespace="System.Windows.Forms">
-        <field name="ContainerControl" />
-        <field name="UserPaint" />
-        <field name="Opaque" />
-        <field name="ResizeRedraw" />
-        <field name="FixedWidth" />
-        <field name="FixedHeight" />
-        <field name="StandardClick" />
-        <field name="Selectable" />
-        <field name="UserMouse" />
-        <field name="SupportsTransparentBackColor" />
-        <field name="StandardDoubleClick" />
-        <field name="AllPaintingInWmPaint" />
-        <field name="CacheText" />
-        <field name="EnableNotifyMessage" />
-        <field name="DoubleBuffer" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="HitTestType" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Cell" />
-        <field name="ColumnHeader" />
-        <field name="RowHeader" />
-        <field name="ColumnResize" />
-        <field name="RowResize" />
-        <field name="Caption" />
-        <field name="ParentRows" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DataGridLineStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Solid" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DataGridParentRowsLabelStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="TableName" />
-        <field name="ColumnName" />
-        <field name="Both" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DateTimePickerFormat" namespace="System.Windows.Forms">
-        <field name="Long" />
-        <field name="Short" />
-        <field name="Time" />
-        <field name="Custom" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Day" namespace="System.Windows.Forms">
-        <field name="Monday" />
-        <field name="Tuesday" />
-        <field name="Wednesday" />
-        <field name="Thursday" />
-        <field name="Friday" />
-        <field name="Saturday" />
-        <field name="Sunday" />
-        <field name="Default" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DialogResult" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="OK" />
-        <field name="Cancel" />
-        <field name="Abort" />
-        <field name="Retry" />
-        <field name="Ignore" />
-        <field name="Yes" />
-        <field name="No" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DockStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Top" />
-        <field name="Bottom" />
-        <field name="Left" />
-        <field name="Right" />
-        <field name="Fill" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DragAction" namespace="System.Windows.Forms">
-        <field name="Continue" />
-        <field name="Drop" />
-        <field name="Cancel" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DragDropEffects" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Copy" />
-        <field name="Move" />
-        <field name="Link" />
-        <field name="Scroll" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DrawItemState" namespace="System.Windows.Forms">
-        <field name="Checked" />
-        <field name="ComboBoxEdit" />
-        <field name="Default" />
-        <field name="Disabled" />
-        <field name="Focus" />
-        <field name="Grayed" />
-        <field name="HotLight" />
-        <field name="Inactive" />
-        <field name="NoAccelerator" />
-        <field name="NoFocusRect" />
-        <field name="Selected" />
-        <field name="None" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DrawMode" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="OwnerDrawFixed" />
-        <field name="OwnerDrawVariable" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ErrorBlinkStyle" namespace="System.Windows.Forms">
-        <field name="BlinkIfDifferentError" />
-        <field name="AlwaysBlink" />
-        <field name="NeverBlink" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ErrorIconAlignment" namespace="System.Windows.Forms">
-        <field name="TopLeft" />
-        <field name="TopRight" />
-        <field name="MiddleLeft" />
-        <field name="MiddleRight" />
-        <field name="BottomLeft" />
-        <field name="BottomRight" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FlatStyle" namespace="System.Windows.Forms">
-        <field name="Flat" />
-        <field name="Popup" />
-        <field name="Standard" />
-        <field name="System" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FormBorderStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="FixedSingle" />
-        <field name="Fixed3D" />
-        <field name="FixedDialog" />
-        <field name="Sizable" />
-        <field name="FixedToolWindow" />
-        <field name="SizableToolWindow" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FormStartPosition" namespace="System.Windows.Forms">
-        <field name="Manual" />
-        <field name="CenterScreen" />
-        <field name="WindowsDefaultLocation" />
-        <field name="WindowsDefaultBounds" />
-        <field name="CenterParent" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FormWindowState" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="Minimized" />
-        <field name="Maximized" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FrameStyle" namespace="System.Windows.Forms">
-        <field name="Dashed" />
-        <field name="Thick" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="GridItemType" namespace="System.Windows.Forms">
-        <field name="Property" />
-        <field name="Category" />
-        <field name="ArrayValue" />
-        <field name="Root" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="HelpNavigator" namespace="System.Windows.Forms">
-        <field name="Topic" />
-        <field name="TableOfContents" />
-        <field name="Index" />
-        <field name="Find" />
-        <field name="AssociateIndex" />
-        <field name="KeywordIndex" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="HorizontalAlignment" namespace="System.Windows.Forms">
-        <field name="Left" />
-        <field name="Right" />
-        <field name="Center" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ImeMode" namespace="System.Windows.Forms">
-        <field name="Inherit" />
-        <field name="NoControl" />
-        <field name="On" />
-        <field name="Off" />
-        <field name="Disable" />
-        <field name="Hiragana" />
-        <field name="Katakana" />
-        <field name="KatakanaHalf" />
-        <field name="AlphaFull" />
-        <field name="Alpha" />
-        <field name="HangulFull" />
-        <field name="Hangul" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ItemActivation" namespace="System.Windows.Forms">
-        <field name="Standard" />
-        <field name="OneClick" />
-        <field name="TwoClick" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ItemBoundsPortion" namespace="System.Windows.Forms">
-        <field name="Entire" />
-        <field name="Icon" />
-        <field name="Label" />
-        <field name="ItemOnly" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Keys" namespace="System.Windows.Forms">
-        <field name="KeyCode" />
-        <field name="Modifiers" />
-        <field name="None" />
-        <field name="LButton" />
-        <field name="RButton" />
-        <field name="Cancel" />
-        <field name="MButton" />
-        <field name="XButton1" />
-        <field name="XButton2" />
-        <field name="Back" />
-        <field name="Tab" />
-        <field name="LineFeed" />
-        <field name="Clear" />
-        <field name="Return" />
-        <field name="Enter" />
-        <field name="ShiftKey" />
-        <field name="ControlKey" />
-        <field name="Menu" />
-        <field name="Pause" />
-        <field name="Capital" />
-        <field name="CapsLock" />
-        <field name="Escape" />
-        <field name="Space" />
-        <field name="Prior" />
-        <field name="PageUp" />
-        <field name="Next" />
-        <field name="PageDown" />
-        <field name="End" />
-        <field name="Home" />
-        <field name="Left" />
-        <field name="Up" />
-        <field name="Right" />
-        <field name="Down" />
-        <field name="Select" />
-        <field name="Print" />
-        <field name="Execute" />
-        <field name="Snapshot" />
-        <field name="PrintScreen" />
-        <field name="Insert" />
-        <field name="Delete" />
-        <field name="Help" />
-        <field name="D0" />
-        <field name="D1" />
-        <field name="D2" />
-        <field name="D3" />
-        <field name="D4" />
-        <field name="D5" />
-        <field name="D6" />
-        <field name="D7" />
-        <field name="D8" />
-        <field name="D9" />
-        <field name="A" />
-        <field name="B" />
-        <field name="C" />
-        <field name="D" />
-        <field name="E" />
-        <field name="F" />
-        <field name="G" />
-        <field name="H" />
-        <field name="I" />
-        <field name="J" />
-        <field name="K" />
-        <field name="L" />
-        <field name="M" />
-        <field name="N" />
-        <field name="O" />
-        <field name="P" />
-        <field name="Q" />
-        <field name="R" />
-        <field name="S" />
-        <field name="T" />
-        <field name="U" />
-        <field name="V" />
-        <field name="W" />
-        <field name="X" />
-        <field name="Y" />
-        <field name="Z" />
-        <field name="LWin" />
-        <field name="RWin" />
-        <field name="Apps" />
-        <field name="NumPad0" />
-        <field name="NumPad1" />
-        <field name="NumPad2" />
-        <field name="NumPad3" />
-        <field name="NumPad4" />
-        <field name="NumPad5" />
-        <field name="NumPad6" />
-        <field name="NumPad7" />
-        <field name="NumPad8" />
-        <field name="NumPad9" />
-        <field name="Multiply" />
-        <field name="Add" />
-        <field name="Separator" />
-        <field name="Subtract" />
-        <field name="Decimal" />
-        <field name="Divide" />
-        <field name="F1" />
-        <field name="F2" />
-        <field name="F3" />
-        <field name="F4" />
-        <field name="F5" />
-        <field name="F6" />
-        <field name="F7" />
-        <field name="F8" />
-        <field name="F9" />
-        <field name="F10" />
-        <field name="F11" />
-        <field name="F12" />
-        <field name="F13" />
-        <field name="F14" />
-        <field name="F15" />
-        <field name="F16" />
-        <field name="F17" />
-        <field name="F18" />
-        <field name="F19" />
-        <field name="F20" />
-        <field name="F21" />
-        <field name="F22" />
-        <field name="F23" />
-        <field name="F24" />
-        <field name="NumLock" />
-        <field name="Scroll" />
-        <field name="LShiftKey" />
-        <field name="RShiftKey" />
-        <field name="LControlKey" />
-        <field name="RControlKey" />
-        <field name="LMenu" />
-        <field name="RMenu" />
-        <field name="ProcessKey" />
-        <field name="Attn" />
-        <field name="Crsel" />
-        <field name="Exsel" />
-        <field name="EraseEof" />
-        <field name="Play" />
-        <field name="Zoom" />
-        <field name="NoName" />
-        <field name="Pa1" />
-        <field name="OemClear" />
-        <field name="KanaMode" />
-        <field name="HanguelMode" />
-        <field name="HangulMode" />
-        <field name="JunjaMode" />
-        <field name="FinalMode" />
-        <field name="HanjaMode" />
-        <field name="KanjiMode" />
-        <field name="IMEConvert" />
-        <field name="IMENonconvert" />
-        <field name="IMEAceept" />
-        <field name="IMEModeChange" />
-        <field name="BrowserBack" />
-        <field name="BrowserForward" />
-        <field name="BrowserRefresh" />
-        <field name="BrowserStop" />
-        <field name="BrowserSearch" />
-        <field name="BrowserFavorites" />
-        <field name="BrowserHome" />
-        <field name="VolumeMute" />
-        <field name="VolumeDown" />
-        <field name="VolumeUp" />
-        <field name="MediaNextTrack" />
-        <field name="MediaPreviousTrack" />
-        <field name="MediaStop" />
-        <field name="MediaPlayPause" />
-        <field name="LaunchMail" />
-        <field name="SelectMedia" />
-        <field name="LaunchApplication1" />
-        <field name="LaunchApplication2" />
-        <field name="OemSemicolon" />
-        <field name="Oemplus" />
-        <field name="Oemcomma" />
-        <field name="OemMinus" />
-        <field name="OemPeriod" />
-        <field name="OemQuestion" />
-        <field name="Oemtilde" />
-        <field name="OemOpenBrackets" />
-        <field name="OemPipe" />
-        <field name="OemCloseBrackets" />
-        <field name="OemQuotes" />
-        <field name="Oem8" />
-        <field name="OemBackslash" />
-        <field name="Shift" />
-        <field name="Control" />
-        <field name="Alt" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LeftRightAlignment" namespace="System.Windows.Forms">
-        <field name="Left" />
-        <field name="Right" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LinkBehavior" namespace="System.Windows.Forms">
-        <field name="SystemDefault" />
-        <field name="AlwaysUnderline" />
-        <field name="HoverUnderline" />
-        <field name="NeverUnderline" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LinkState" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="Hover" />
-        <field name="Active" />
-        <field name="Visited" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ListViewAlignment" namespace="System.Windows.Forms">
-        <field name="Default" />
-        <field name="Top" />
-        <field name="Left" />
-        <field name="SnapToGrid" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MdiLayout" namespace="System.Windows.Forms">
-        <field name="Cascade" />
-        <field name="TileHorizontal" />
-        <field name="TileVertical" />
-        <field name="ArrangeIcons" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MenuGlyph" namespace="System.Windows.Forms">
-        <field name="Arrow" />
-        <field name="Checkmark" />
-        <field name="Bullet" />
-        <field name="Min" />
-        <field name="Max" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MenuMerge" namespace="System.Windows.Forms">
-        <field name="Add" />
-        <field name="Replace" />
-        <field name="MergeItems" />
-        <field name="Remove" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MessageBoxButtons" namespace="System.Windows.Forms">
-        <field name="OK" />
-        <field name="OKCancel" />
-        <field name="AbortRetryIgnore" />
-        <field name="YesNoCancel" />
-        <field name="YesNo" />
-        <field name="RetryCancel" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MessageBoxDefaultButton" namespace="System.Windows.Forms">
-        <field name="Button1" />
-        <field name="Button2" />
-        <field name="Button3" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MessageBoxIcon" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Hand" />
-        <field name="Question" />
-        <field name="Exclamation" />
-        <field name="Asterisk" />
-        <field name="Stop" />
-        <field name="Error" />
-        <field name="Warning" />
-        <field name="Information" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MessageBoxOptions" namespace="System.Windows.Forms">
-        <field name="ServiceNotification" />
-        <field name="DefaultDesktopOnly" />
-        <field name="RightAlign" />
-        <field name="RtlReading" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MouseButtons" namespace="System.Windows.Forms">
-        <field name="Left" />
-        <field name="None" />
-        <field name="Right" />
-        <field name="Middle" />
-        <field name="XButton1" />
-        <field name="XButton2" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="tagVT" namespace="System.Windows.Forms">
-        <field name="VT_EMPTY" />
-        <field name="VT_NULL" />
-        <field name="VT_I2" />
-        <field name="VT_I4" />
-        <field name="VT_R4" />
-        <field name="VT_R8" />
-        <field name="VT_CY" />
-        <field name="VT_DATE" />
-        <field name="VT_BSTR" />
-        <field name="VT_DISPATCH" />
-        <field name="VT_ERROR" />
-        <field name="VT_BOOL" />
-        <field name="VT_VARIANT" />
-        <field name="VT_UNKNOWN" />
-        <field name="VT_DECIMAL" />
-        <field name="VT_I1" />
-        <field name="VT_UI1" />
-        <field name="VT_UI2" />
-        <field name="VT_UI4" />
-        <field name="VT_I8" />
-        <field name="VT_UI8" />
-        <field name="VT_INT" />
-        <field name="VT_UINT" />
-        <field name="VT_VOID" />
-        <field name="VT_HRESULT" />
-        <field name="VT_PTR" />
-        <field name="VT_SAFEARRAY" />
-        <field name="VT_CARRAY" />
-        <field name="VT_USERDEFINED" />
-        <field name="VT_LPSTR" />
-        <field name="VT_LPWSTR" />
-        <field name="VT_RECORD" />
-        <field name="VT_FILETIME" />
-        <field name="VT_BLOB" />
-        <field name="VT_STREAM" />
-        <field name="VT_STORAGE" />
-        <field name="VT_STREAMED_OBJECT" />
-        <field name="VT_STORED_OBJECT" />
-        <field name="VT_BLOB_OBJECT" />
-        <field name="VT_CF" />
-        <field name="VT_CLSID" />
-        <field name="VT_BSTR_BLOB" />
-        <field name="VT_VECTOR" />
-        <field name="VT_ARRAY" />
-        <field name="VT_BYREF" />
-        <field name="VT_RESERVED" />
-        <field name="VT_ILLEGAL" />
-        <field name="VT_ILLEGALMASKED" />
-        <field name="VT_TYPEMASK" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="tagINVOKEKIND" namespace="System.Windows.Forms">
-        <field name="INVOKE_FUNC" />
-        <field name="INVOKE_PROPERTYGET" />
-        <field name="INVOKE_PROPERTYPUT" />
-        <field name="INVOKE_PROPERTYPUTREF" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="tagDESCKIND" namespace="System.Windows.Forms">
-        <field name="DESCKIND_NONE" />
-        <field name="DESCKIND_FUNCDESC" />
-        <field name="DESCKIND_VARDESC" />
-        <field name="DESCKIND_TYPECOMP" />
-        <field name="DESCKIND_IMPLICITAPPOBJ" />
-        <field name="DESCKIND_MAX" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="tagTYPEKIND" namespace="System.Windows.Forms">
-        <field name="TKIND_ENUM" />
-        <field name="TKIND_RECORD" />
-        <field name="TKIND_MODULE" />
-        <field name="TKIND_INTERFACE" />
-        <field name="TKIND_DISPATCH" />
-        <field name="TKIND_COCLASS" />
-        <field name="TKIND_ALIAS" />
-        <field name="TKIND_UNION" />
-        <field name="TKIND_MAX" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="tagSYSKIND" namespace="System.Windows.Forms">
-        <field name="SYS_WIN16" />
-        <field name="SYS_MAC" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="tagVARFLAGS" namespace="System.Windows.Forms">
-        <field name="VARFLAG_FREADONLY" />
-        <field name="VARFLAG_FSOURCE" />
-        <field name="VARFLAG_FBINDABLE" />
-        <field name="VARFLAG_FREQUESTEDIT" />
-        <field name="VARFLAG_FDISPLAYBIND" />
-        <field name="VARFLAG_FDEFAULTBIND" />
-        <field name="VARFLAG_FHIDDEN" />
-        <field name="VARFLAG_FDEFAULTCOLLELEM" />
-        <field name="VARFLAG_FUIDEFAULT" />
-        <field name="VARFLAG_FNONBROWSABLE" />
-        <field name="VARFLAG_FREPLACEABLE" />
-        <field name="VARFLAG_FIMMEDIATEBIND" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="tagVARKIND" namespace="System.Windows.Forms">
-        <field name="VAR_PERINSTANCE" />
-        <field name="VAR_STATIC" />
-        <field name="VAR_CONST" />
-        <field name="VAR_DISPATCH" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Orientation" namespace="System.Windows.Forms">
-        <field name="Horizontal" />
-        <field name="Vertical" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PictureBoxSizeMode" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="StretchImage" />
-        <field name="AutoSize" />
-        <field name="CenterImage" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PropertySort" namespace="System.Windows.Forms">
-        <field name="NoSort" />
-        <field name="Alphabetical" />
-        <field name="Categorized" />
-        <field name="CategorizedAlphabetical" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RichTextBoxFinds" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="WholeWord" />
-        <field name="MatchCase" />
-        <field name="NoHighlight" />
-        <field name="Reverse" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RichTextBoxScrollBars" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Horizontal" />
-        <field name="Vertical" />
-        <field name="Both" />
-        <field name="ForcedHorizontal" />
-        <field name="ForcedVertical" />
-        <field name="ForcedBoth" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RichTextBoxSelectionAttribute" namespace="System.Windows.Forms">
-        <field name="Mixed" />
-        <field name="None" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RichTextBoxSelectionTypes" namespace="System.Windows.Forms">
-        <field name="Empty" />
-        <field name="Text" />
-        <field name="Object" />
-        <field name="MultiChar" />
-        <field name="MultiObject" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RichTextBoxStreamType" namespace="System.Windows.Forms">
-        <field name="RichText" />
-        <field name="PlainText" />
-        <field name="RichNoOleObjs" />
-        <field name="TextTextOleObjs" />
-        <field name="UnicodePlainText" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RichTextBoxWordPunctuations" namespace="System.Windows.Forms">
-        <field name="Level1" />
-        <field name="Level2" />
-        <field name="Custom" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RightToLeft" namespace="System.Windows.Forms">
-        <field name="No" />
-        <field name="Yes" />
-        <field name="Inherit" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ScrollBars" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Horizontal" />
-        <field name="Vertical" />
-        <field name="Both" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ScrollButton" namespace="System.Windows.Forms">
-        <field name="Down" />
-        <field name="Left" />
-        <field name="Right" />
-        <field name="Up" />
-        <field name="Min" />
-        <field name="Max" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ScrollEventType" namespace="System.Windows.Forms">
-        <field name="SmallDecrement" />
-        <field name="SmallIncrement" />
-        <field name="LargeDecrement" />
-        <field name="LargeIncrement" />
-        <field name="ThumbPosition" />
-        <field name="ThumbTrack" />
-        <field name="First" />
-        <field name="Last" />
-        <field name="EndScroll" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SecurityIDType" namespace="System.Windows.Forms">
-        <field name="User" />
-        <field name="Group" />
-        <field name="Domain" />
-        <field name="Alias" />
-        <field name="WellKnownGroup" />
-        <field name="DeletedAccount" />
-        <field name="Invalid" />
-        <field name="Unknown" />
-        <field name="Computer" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SelectionMode" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="One" />
-        <field name="MultiSimple" />
-        <field name="MultiExtended" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Shortcut" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="CtrlA" />
-        <field name="CtrlB" />
-        <field name="CtrlC" />
-        <field name="CtrlD" />
-        <field name="CtrlE" />
-        <field name="CtrlF" />
-        <field name="CtrlG" />
-        <field name="CtrlH" />
-        <field name="CtrlI" />
-        <field name="CtrlJ" />
-        <field name="CtrlK" />
-        <field name="CtrlL" />
-        <field name="CtrlM" />
-        <field name="CtrlN" />
-        <field name="CtrlO" />
-        <field name="CtrlP" />
-        <field name="CtrlQ" />
-        <field name="CtrlR" />
-        <field name="CtrlS" />
-        <field name="CtrlT" />
-        <field name="CtrlU" />
-        <field name="CtrlV" />
-        <field name="CtrlW" />
-        <field name="CtrlX" />
-        <field name="CtrlY" />
-        <field name="CtrlZ" />
-        <field name="CtrlShiftA" />
-        <field name="CtrlShiftB" />
-        <field name="CtrlShiftC" />
-        <field name="CtrlShiftD" />
-        <field name="CtrlShiftE" />
-        <field name="CtrlShiftF" />
-        <field name="CtrlShiftG" />
-        <field name="CtrlShiftH" />
-        <field name="CtrlShiftI" />
-        <field name="CtrlShiftJ" />
-        <field name="CtrlShiftK" />
-        <field name="CtrlShiftL" />
-        <field name="CtrlShiftM" />
-        <field name="CtrlShiftN" />
-        <field name="CtrlShiftO" />
-        <field name="CtrlShiftP" />
-        <field name="CtrlShiftQ" />
-        <field name="CtrlShiftR" />
-        <field name="CtrlShiftS" />
-        <field name="CtrlShiftT" />
-        <field name="CtrlShiftU" />
-        <field name="CtrlShiftV" />
-        <field name="CtrlShiftW" />
-        <field name="CtrlShiftX" />
-        <field name="CtrlShiftY" />
-        <field name="CtrlShiftZ" />
-        <field name="F1" />
-        <field name="F2" />
-        <field name="F3" />
-        <field name="F4" />
-        <field name="F5" />
-        <field name="F6" />
-        <field name="F7" />
-        <field name="F8" />
-        <field name="F9" />
-        <field name="F10" />
-        <field name="F11" />
-        <field name="F12" />
-        <field name="ShiftF1" />
-        <field name="ShiftF2" />
-        <field name="ShiftF3" />
-        <field name="ShiftF4" />
-        <field name="ShiftF5" />
-        <field name="ShiftF6" />
-        <field name="ShiftF7" />
-        <field name="ShiftF8" />
-        <field name="ShiftF9" />
-        <field name="ShiftF10" />
-        <field name="ShiftF11" />
-        <field name="ShiftF12" />
-        <field name="CtrlF1" />
-        <field name="CtrlF2" />
-        <field name="CtrlF3" />
-        <field name="CtrlF4" />
-        <field name="CtrlF5" />
-        <field name="CtrlF6" />
-        <field name="CtrlF7" />
-        <field name="CtrlF8" />
-        <field name="CtrlF9" />
-        <field name="CtrlF10" />
-        <field name="CtrlF11" />
-        <field name="CtrlF12" />
-        <field name="CtrlShiftF1" />
-        <field name="CtrlShiftF2" />
-        <field name="CtrlShiftF3" />
-        <field name="CtrlShiftF4" />
-        <field name="CtrlShiftF5" />
-        <field name="CtrlShiftF6" />
-        <field name="CtrlShiftF7" />
-        <field name="CtrlShiftF8" />
-        <field name="CtrlShiftF9" />
-        <field name="CtrlShiftF10" />
-        <field name="CtrlShiftF11" />
-        <field name="CtrlShiftF12" />
-        <field name="Ins" />
-        <field name="CtrlIns" />
-        <field name="ShiftIns" />
-        <field name="Del" />
-        <field name="CtrlDel" />
-        <field name="ShiftDel" />
-        <field name="AltBksp" />
-        <field name="AltF1" />
-        <field name="AltF2" />
-        <field name="AltF3" />
-        <field name="AltF4" />
-        <field name="AltF5" />
-        <field name="AltF6" />
-        <field name="AltF7" />
-        <field name="AltF8" />
-        <field name="AltF9" />
-        <field name="AltF10" />
-        <field name="AltF11" />
-        <field name="AltF12" />
-        <field name="Alt0" />
-        <field name="Alt1" />
-        <field name="Alt2" />
-        <field name="Alt3" />
-        <field name="Alt4" />
-        <field name="Alt5" />
-        <field name="Alt6" />
-        <field name="Alt7" />
-        <field name="Alt8" />
-        <field name="Alt9" />
-        <field name="Ctrl0" />
-        <field name="Ctrl1" />
-        <field name="Ctrl2" />
-        <field name="Ctrl3" />
-        <field name="Ctrl4" />
-        <field name="Ctrl5" />
-        <field name="Ctrl6" />
-        <field name="Ctrl7" />
-        <field name="Ctrl8" />
-        <field name="Ctrl9" />
-        <field name="CtrlShift0" />
-        <field name="CtrlShift1" />
-        <field name="CtrlShift2" />
-        <field name="CtrlShift3" />
-        <field name="CtrlShift4" />
-        <field name="CtrlShift5" />
-        <field name="CtrlShift6" />
-        <field name="CtrlShift7" />
-        <field name="CtrlShift8" />
-        <field name="CtrlShift9" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SizeGripStyle" namespace="System.Windows.Forms">
-        <field name="Auto" />
-        <field name="Show" />
-        <field name="Hide" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SortOrder" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Ascending" />
-        <field name="Descending" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StatusBarPanelAutoSize" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Spring" />
-        <field name="Contents" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StatusBarPanelBorderStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="Raised" />
-        <field name="Sunken" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StatusBarPanelStyle" namespace="System.Windows.Forms">
-        <field name="Text" />
-        <field name="OwnerDraw" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StructFormat" namespace="System.Windows.Forms">
-        <field name="Ansi" />
-        <field name="Unicode" />
-        <field name="Auto" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TabAlignment" namespace="System.Windows.Forms">
-        <field name="Top" />
-        <field name="Bottom" />
-        <field name="Left" />
-        <field name="Right" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TabAppearance" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="Buttons" />
-        <field name="FlatButtons" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TabDrawMode" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="OwnerDrawFixed" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TabSizeMode" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="FillToRight" />
-        <field name="Fixed" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TickStyle" namespace="System.Windows.Forms">
-        <field name="None" />
-        <field name="TopLeft" />
-        <field name="BottomRight" />
-        <field name="Both" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ToolBarAppearance" namespace="System.Windows.Forms">
-        <field name="Normal" />
-        <field name="Flat" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ToolBarButtonStyle" namespace="System.Windows.Forms">
-        <field name="PushButton" />
-        <field name="ToggleButton" />
-        <field name="Separator" />
-        <field name="DropDownButton" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ToolBarTextAlign" namespace="System.Windows.Forms">
-        <field name="Underneath" />
-        <field name="Right" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TreeViewAction" namespace="System.Windows.Forms">
-        <field name="Unknown" />
-        <field name="ByKeyboard" />
-        <field name="ByMouse" />
-        <field name="Collapse" />
-        <field name="Expand" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="UICues" namespace="System.Windows.Forms">
-        <field name="ShowFocus" />
-        <field name="ShowKeyboard" />
-        <field name="Shown" />
-        <field name="ChangeFocus" />
-        <field name="ChangeKeyboard" />
-        <field name="Changed" />
-        <field name="None" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="View" namespace="System.Windows.Forms">
-        <field name="LargeIcon" />
-        <field name="Details" />
-        <field name="SmallIcon" />
-        <field name="List" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="HitArea" namespace="System.Windows.Forms">
-        <field name="Nowhere" />
-        <field name="TitleBackground" />
-        <field name="TitleMonth" />
-        <field name="TitleYear" />
-        <field name="NextMonthButton" />
-        <field name="PrevMonthButton" />
-        <field name="CalendarBackground" />
-        <field name="Date" />
-        <field name="NextMonthDate" />
-        <field name="PrevMonthDate" />
-        <field name="DayOfWeek" />
-        <field name="WeekNumbers" />
-        <field name="TodayLink" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ActiveXInvokeKind" namespace="System.Windows.Forms">
-        <field name="MethodInvoke" />
-        <field name="PropertyGet" />
-        <field name="PropertySet" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="AboutBoxUITypeEditor" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
-        <constructor name="AboutBoxUITypeEditor" argnames="" />
-        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
-        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
-        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
-        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StructCache" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
-        <constructor name="StructCache" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetStruct(System.Type)" argnames="t" returntype="System.Object" />
-        <method name="ReleaseStruct(System.Object)" argnames="str" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Com2Variant" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
-        <constructor name="Com2Variant" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IComPropertyBrowser" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
-        <property name="InPropertySet" propertytype="System.Boolean" />
-        <method name="SaveState(Microsoft.Win32.RegistryKey)" argnames="key" returntype="System.Void" />
-        <method name="LoadState(Microsoft.Win32.RegistryKey)" argnames="key" returntype="System.Void" />
-        <method name="HandleF4" argnames="" returntype="System.Void" />
-        <method name="EnsurePendingChangesCommitted" argnames="" returntype="System.Boolean" />
-        <method name="DropDownDone" argnames="" returntype="System.Void" />
-        <event name="ComComponentNameChanged" />
-    </interface>
-    <interface name="ICom2PropertyPageDisplayService" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
-        <method name="ShowPropertyPage(System.String, System.Object, System.Int32, System.Guid, System.IntPtr)" argnames="title, component, dispid, pageGuid, parentHandle" returntype="System.Void" />
-    </interface>
-    <class name="WindowsFormsComponentEditor" namespace="System.Windows.Forms.Design">
-        <constructor name="WindowsFormsComponentEditor" argnames="" />
-        <method name="GetInitialComponentEditorPageIndex" argnames="" returntype="System.Int32" />
-        <method name="GetComponentEditorPages" argnames="" returntype="System.Type[]" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, component, owner" returntype="System.Boolean" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" returntype="System.Boolean" />
-        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentEditorForm" namespace="System.Windows.Forms.Design">
-        <constructor name="ComponentEditorForm(System.Object, System.Type[])" argnames="component, pageTypes" />
-        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
-        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
-        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
-        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
-        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
-        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
-        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
-        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
-        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
-        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
-        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
-        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
-        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
-        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
-        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
-        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
-        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="ShowForm(System.Windows.Forms.IWin32Window, System.Int32)" argnames="owner, page" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowForm(System.Windows.Forms.IWin32Window)" argnames="owner" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowForm(System.Int32)" argnames="page" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowForm" argnames="" returntype="System.Windows.Forms.DialogResult" />
-        <method name="OnSelChangeSelector(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="source, e" returntype="System.Void" />
-        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnActivated(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
-        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
-        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
-        <event name="Activated" inherited="System.Windows.Forms.Form" />
-        <event name="Closing" inherited="System.Windows.Forms.Form" />
-        <event name="Closed" inherited="System.Windows.Forms.Form" />
-        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
-        <event name="Load" inherited="System.Windows.Forms.Form" />
-        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
-        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
-        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
-        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ComponentEditorPage" namespace="System.Windows.Forms.Design">
-        <constructor name="ComponentEditorPage" argnames="" />
-        <property name="PageSite" propertytype="System.Windows.Forms.IComponentEditorPageSite" />
-        <property name="Component" propertytype="System.ComponentModel.IComponent" />
-        <property name="FirstActivate" propertytype="System.Boolean" />
-        <property name="LoadRequired" propertytype="System.Boolean" />
-        <property name="Loading" propertytype="System.Int32" />
-        <property name="CommitOnDeactivate" propertytype="System.Boolean" />
-        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
-        <property name="Icon" propertytype="System.Drawing.Icon" />
-        <property name="Title" propertytype="System.String" />
-        <property name="BorderStyle" inherited="System.Windows.Forms.Panel" propertytype="System.Windows.Forms.BorderStyle" />
-        <property name="DefaultSize" inherited="System.Windows.Forms.Panel" propertytype="System.Drawing.Size" />
-        <property name="TabStop" inherited="System.Windows.Forms.Panel" propertytype="System.Boolean" />
-        <property name="Text" inherited="System.Windows.Forms.Panel" propertytype="System.String" />
-        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
-        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
-        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
-        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
-        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
-        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
-        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
-        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
-        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
-        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
-        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
-        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
-        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
-        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
-        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
-        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
-        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
-        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
-        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
-        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
-        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
-        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
-        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
-        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
-        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
-        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
-        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
-        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
-        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="SupportsHelp" argnames="" returntype="System.Boolean" />
-        <method name="ShowHelp" argnames="" returntype="System.Void" />
-        <method name="SetSite(System.Windows.Forms.IComponentEditorPageSite)" argnames="site" returntype="System.Void" />
-        <method name="SetComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="SetDirty" argnames="" returntype="System.Void" />
-        <method name="SaveComponent" argnames="" returntype="System.Void" />
-        <method name="ReloadComponent" argnames="" returntype="System.Void" />
-        <method name="OnApplyComplete" argnames="" returntype="System.Void" />
-        <method name="LoadComponent" argnames="" returntype="System.Void" />
-        <method name="IsPageMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
-        <method name="GetControl" argnames="" returntype="System.Windows.Forms.Control" />
-        <method name="Deactivate" argnames="" returntype="System.Void" />
-        <method name="ApplyChanges" argnames="" returntype="System.Void" />
-        <method name="Activate" argnames="" returntype="System.Void" />
-        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnResize(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.Panel" returntype="System.Void" />
-        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
-        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Windows.Forms.Panel" returntype="System.String" />
-        <method name="EnterLoadingMode" argnames="" returntype="System.Void" />
-        <method name="ExitLoadingMode" argnames="" returntype="System.Void" />
-        <method name="GetSelectedComponent" argnames="" returntype="System.ComponentModel.IComponent" />
-        <method name="IsFirstActivate" argnames="" returntype="System.Boolean" />
-        <method name="IsLoading" argnames="" returntype="System.Boolean" />
-        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
-        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
-        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
-        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
-        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
-        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
-        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
-        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
-        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
-        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
-        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
-        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
-        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
-        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
-        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
-        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="KeyUp" inherited="System.Windows.Forms.Panel" />
-        <event name="KeyDown" inherited="System.Windows.Forms.Panel" />
-        <event name="KeyPress" inherited="System.Windows.Forms.Panel" />
-        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
-        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
-        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
-        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
-        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
-        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
-        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
-        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
-        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
-        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Click" inherited="System.Windows.Forms.Control" />
-        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
-        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
-        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
-        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
-        <event name="DragOver" inherited="System.Windows.Forms.Control" />
-        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
-        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
-        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
-        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
-        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
-        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
-        <event name="Paint" inherited="System.Windows.Forms.Control" />
-        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
-        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
-        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
-        <event name="Enter" inherited="System.Windows.Forms.Control" />
-        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
-        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Layout" inherited="System.Windows.Forms.Control" />
-        <event name="Leave" inherited="System.Windows.Forms.Control" />
-        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
-        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
-        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
-        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
-        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
-        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
-        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
-        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
-        <event name="Move" inherited="System.Windows.Forms.Control" />
-        <event name="Resize" inherited="System.Windows.Forms.Control" />
-        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
-        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
-        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Validating" inherited="System.Windows.Forms.Control" />
-        <event name="Validated" inherited="System.Windows.Forms.Control" />
-        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PropertyTab" namespace="System.Windows.Forms.Design">
-        <constructor name="PropertyTab" argnames="" />
-        <property name="Bitmap" propertytype="System.Drawing.Bitmap" />
-        <property name="Components" propertytype="System.Object[]" />
-        <property name="TabName" propertytype="System.String" />
-        <property name="HelpKeyword" propertytype="System.String" />
-        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetDefaultProperty(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventsTab" namespace="System.Windows.Forms.Design">
-        <constructor name="EventsTab(System.IServiceProvider)" argnames="sp" />
-        <property name="TabName" propertytype="System.String" />
-        <property name="HelpKeyword" propertytype="System.String" />
-        <property name="Bitmap" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Drawing.Bitmap" />
-        <property name="Components" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Object[]" />
-        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetDefaultProperty(System.Object)" argnames="obj" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IUIService" namespace="System.Windows.Forms.Design">
-        <property name="Styles" propertytype="System.Collections.IDictionary" />
-        <method name="ShowToolWindow(System.Guid)" argnames="toolWindow" returntype="System.Boolean" />
-        <method name="ShowMessage(System.String, System.String, System.Windows.Forms.MessageBoxButtons)" argnames="message, caption, buttons" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowMessage(System.String, System.String)" argnames="message, caption" returntype="System.Void" />
-        <method name="ShowMessage(System.String)" argnames="message" returntype="System.Void" />
-        <method name="ShowError(System.Exception, System.String)" argnames="ex, message" returntype="System.Void" />
-        <method name="ShowError(System.Exception)" argnames="ex" returntype="System.Void" />
-        <method name="ShowError(System.String)" argnames="message" returntype="System.Void" />
-        <method name="ShowDialog(System.Windows.Forms.Form)" argnames="form" returntype="System.Windows.Forms.DialogResult" />
-        <method name="ShowComponentEditor(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, parent" returntype="System.Boolean" />
-        <method name="SetUIDirty" argnames="" returntype="System.Void" />
-        <method name="GetDialogOwnerWindow" argnames="" returntype="System.Windows.Forms.IWin32Window" />
-        <method name="CanShowComponentEditor(System.Object)" argnames="component" returntype="System.Boolean" />
-    </interface>
-    <interface name="IWindowsFormsEditorService" namespace="System.Windows.Forms.Design">
-        <method name="ShowDialog(System.Windows.Forms.Form)" argnames="dialog" returntype="System.Windows.Forms.DialogResult" />
-        <method name="DropDownControl(System.Windows.Forms.Control)" argnames="control" returntype="System.Void" />
-        <method name="CloseDropDown" argnames="" returntype="System.Void" />
-    </interface>
-    <class name="GridEntryAccessibleObject" namespace="System.Windows.Forms.PropertyGridInternal">
-        <constructor name="GridEntryAccessibleObject(System.Windows.Forms.PropertyGridInternal.GridEntry)" argnames="owner" />
-        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
-        <property name="Description" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
-        <property name="PropertyGridView" propertytype="System.Windows.Forms.PropertyGridInternal.PropertyGridView" />
-        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
-        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
-        <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
-        <property name="Value" propertytype="System.String" />
-        <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
-        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" returntype="System.Void" />
-        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
-        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DisplayNameSortComparer" namespace="System.Windows.Forms.PropertyGridInternal">
-        <constructor name="DisplayNameSortComparer" argnames="" />
-        <method name="Compare(System.Object, System.Object)" argnames="left, right" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertiesTab" namespace="System.Windows.Forms.PropertyGridInternal">
-        <constructor name="PropertiesTab" argnames="" />
-        <property name="TabName" propertytype="System.String" />
-        <property name="HelpKeyword" propertytype="System.String" />
-        <property name="Bitmap" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Drawing.Bitmap" />
-        <property name="Components" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Object[]" />
-        <method name="CanExtend(System.Object)" argnames="extendee" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetDefaultProperty(System.Object)" argnames="obj" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyGridCommands" namespace="System.Windows.Forms.PropertyGridInternal">
-        <constructor name="PropertyGridCommands" argnames="" />
-        <field name="wfcMenuGroup" />
-        <field name="wfcMenuCommand" />
-        <field name="Reset" />
-        <field name="Description" />
-        <field name="Hide" />
-        <field name="Commands" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IRootGridEntry" namespace="System.Windows.Forms.PropertyGridInternal">
-        <property name="BrowsableAttributes" propertytype="System.ComponentModel.AttributeCollection" />
-        <method name="ShowCategories(System.Boolean)" argnames="showCategories" returntype="System.Void" />
-        <method name="ResetBrowsableAttributes" argnames="" returntype="System.Void" />
-    </interface>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Windows.Forms">
+    <class name="ResXFileRef" namespace="System.Resources">
+        <class name="Converter" namespace="System.Resources">
+            <constructor name="Converter" argnames="" />
+            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="Converter(System.String, System.String)" argnames="fileName, typeName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Converter" namespace="System.Resources">
+        <constructor name="Converter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ResXResourceReader" namespace="System.Resources">
+        <constructor name="ResXResourceReader(System.String)" argnames="fileName" />
+        <constructor name="ResXResourceReader(System.IO.Stream)" argnames="stream" />
+        <constructor name="ResXResourceReader(System.IO.TextReader)" argnames="reader" />
+        <constructor name="ResXResourceReader(System.String, System.ComponentModel.Design.ITypeResolutionService)" argnames="fileName, typeResolver" />
+        <constructor name="ResXResourceReader(System.IO.Stream, System.ComponentModel.Design.ITypeResolutionService)" argnames="stream, typeResolver" />
+        <constructor name="ResXResourceReader(System.IO.TextReader, System.ComponentModel.Design.ITypeResolutionService)" argnames="reader, typeResolver" />
+        <property name="ResData" propertytype="System.Collections.IDictionary" />
+        <property name="TypeResolver" propertytype="System.ComponentModel.Design.ITypeResolutionService" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromFileContents(System.String)" argnames="fileContents" returntype="System.Resources.ResXResourceReader" />
+        <method name="FromFileContents(System.String, System.ComponentModel.Design.ITypeResolutionService)" argnames="fileContents, typeResolver" returntype="System.Resources.ResXResourceReader" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ResXResourceSet" namespace="System.Resources">
+        <constructor name="ResXResourceSet(System.String)" argnames="fileName" />
+        <constructor name="ResXResourceSet(System.IO.Stream)" argnames="stream" />
+        <field name="Reader" inherited="System.Resources.ResourceSet" />
+        <field name="Table" inherited="System.Resources.ResourceSet" />
+        <method name="Dispose" argnames="" inherited="System.Resources.ResourceSet" returntype="System.Void" />
+        <method name="ReadResources" argnames="" inherited="System.Resources.ResourceSet" returntype="System.Void" />
+        <method name="GetObject(System.String, System.Boolean)" argnames="name, ignoreCase" inherited="System.Resources.ResourceSet" returntype="System.Object" />
+        <method name="GetObject(System.String)" argnames="name" inherited="System.Resources.ResourceSet" returntype="System.Object" />
+        <method name="GetString(System.String, System.Boolean)" argnames="name, ignoreCase" inherited="System.Resources.ResourceSet" returntype="System.String" />
+        <method name="GetString(System.String)" argnames="name" inherited="System.Resources.ResourceSet" returntype="System.String" />
+        <method name="GetDefaultWriter" argnames="" returntype="System.Type" />
+        <method name="GetDefaultReader" argnames="" returntype="System.Type" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Resources.ResourceSet" returntype="System.Void" />
+        <method name="Close" argnames="" inherited="System.Resources.ResourceSet" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ResXResourceWriter" namespace="System.Resources">
+        <constructor name="ResXResourceWriter(System.String)" argnames="fileName" />
+        <constructor name="ResXResourceWriter(System.IO.Stream)" argnames="stream" />
+        <constructor name="ResXResourceWriter(System.IO.TextWriter)" argnames="textWriter" />
+        <field name="BinSerializedObjectMimeType" />
+        <field name="SoapSerializedObjectMimeType" />
+        <field name="DefaultSerializedObjectMimeType" />
+        <field name="ByteArraySerializedObjectMimeType" />
+        <field name="ResMimeType" />
+        <field name="Version" />
+        <field name="ResourceSchema" />
+        <property name="Writer" propertytype="System.Xml.XmlWriter" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Generate" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="AddResource(System.String, System.Byte[])" argnames="name, value" returntype="System.Void" />
+        <method name="AddResource(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
+        <method name="AddResource(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OCPFIPARAMS" namespace="System.Windows.Forms">
+        <constructor name="OCPFIPARAMS" argnames="" />
+        <field name="cbSizeOfStruct" />
+        <field name="hwndOwner" />
+        <field name="x" />
+        <field name="y" />
+        <field name="lpszCaption" />
+        <field name="cObjects" />
+        <field name="ppUnk" />
+        <field name="pageCount" />
+        <field name="uuid" />
+        <field name="lcid" />
+        <field name="dispidInitial" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SMsoComponentManager" namespace="System.Windows.Forms">
+        <constructor name="SMsoComponentManager" argnames="" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComStreamFromDataStream" namespace="System.Windows.Forms">
+        <constructor name="ComStreamFromDataStream(System.IO.Stream)" argnames="dataStream" />
+        <constructor name="ComStreamFromDataStream" argnames="" />
+        <field name="dataStream" />
+        <method name="Clone" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
+        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pstatstg, grfStatFlag" returntype="System.Void" />
+        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="Revert" argnames="" returntype="System.Void" />
+        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
+        <method name="CopyTo(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
+        <method name="SetSize(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.Int32)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, length" returntype="System.Int32" />
+        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, length" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetDataStream" argnames="" returntype="System.IO.Stream" />
+        <method name="EFail(System.String)" argnames="msg" returntype="System.Runtime.InteropServices.ExternalException" />
+        <method name="NotImplemented" argnames="" returntype="System.Void" />
+        <method name="Read(System.Byte[], System.Int32)" argnames="buffer, length" returntype="System.Int32" />
+        <method name="Write(System.Byte[], System.Int32)" argnames="buffer, length" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagQACONTAINER" namespace="System.Windows.Forms">
+        <constructor name="tagQACONTAINER" argnames="" />
+        <field name="cbSize" />
+        <field name="pClientSite" />
+        <field name="pAdviseSink" />
+        <field name="pPropertyNotifySink" />
+        <field name="pUnkEventSink" />
+        <field name="dwAmbientFlags" />
+        <field name="colorFore" />
+        <field name="colorBack" />
+        <field name="pFont" />
+        <field name="pUndoMgr" />
+        <field name="dwAppearance" />
+        <field name="lcid" />
+        <field name="hpal" />
+        <field name="pBindHost" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagQACONTROL" namespace="System.Windows.Forms">
+        <constructor name="tagQACONTROL" argnames="" />
+        <field name="cbSize" />
+        <field name="dwMiscStatus" />
+        <field name="dwViewStatus" />
+        <field name="dwEventCookie" />
+        <field name="dwPropNotifyCookie" />
+        <field name="dwPointerActivationPolicy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OFNOTIFY" namespace="System.Windows.Forms">
+        <constructor name="OFNOTIFY" argnames="" />
+        <field name="hdr_hwndFrom" />
+        <field name="hdr_idFrom" />
+        <field name="hdr_code" />
+        <field name="lpOFN" />
+        <field name="pszFile" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Control" namespace="System.Windows.Forms">
+        <class name="ControlCollection" namespace="System.Windows.Forms">
+            <constructor name="ControlCollection(System.Windows.Forms.Control)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Windows.Forms.Control" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.Control)" argnames="control" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" returntype="System.Int32" />
+            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="ControlAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="ControlAccessibleObject(System.Windows.Forms.Control)" argnames="ownerControl" />
+            <property name="DefaultAction" propertytype="System.String" />
+            <property name="Description" propertytype="System.String" />
+            <property name="Handle" propertytype="System.IntPtr" />
+            <property name="Help" propertytype="System.String" />
+            <property name="KeyboardShortcut" propertytype="System.String" />
+            <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
+            <property name="Name" propertytype="System.String" />
+            <property name="Owner" propertytype="System.Windows.Forms.Control" />
+            <property name="PreviousLabel" propertytype="System.Windows.Forms.Label" />
+            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" returntype="System.String" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" returntype="System.Void" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ControlAccessibleObject" argnames="" />
+        <constructor name="ControlAccessibleObject(System.String)" argnames="text" />
+        <constructor name="ControlAccessibleObject(System.String, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="text, left, top, width, height" />
+        <constructor name="ControlAccessibleObject(System.Windows.Forms.Control, System.String)" argnames="parent, text" />
+        <constructor name="ControlAccessibleObject(System.Windows.Forms.Control, System.String, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="parent, text, left, top, width, height" />
+        <property name="AccessibilityObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" propertytype="System.String" />
+        <property name="AccessibleDescription" propertytype="System.String" />
+        <property name="AccessibleName" propertytype="System.String" />
+        <property name="AccessibleRole" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="ActiveXAmbientBackColor" propertytype="System.Drawing.Color" />
+        <property name="ActiveXAmbientForeColor" propertytype="System.Drawing.Color" />
+        <property name="ActiveXAmbientFont" propertytype="System.Drawing.Font" />
+        <property name="ActiveXEventsFrozen" propertytype="System.Boolean" />
+        <property name="ActiveXHWNDParent" propertytype="System.IntPtr" />
+        <property name="ActiveXInstance" propertytype="System.Windows.Forms.Control+ActiveXImpl" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="AmbientPropertiesService" propertytype="System.Windows.Forms.AmbientProperties" />
+        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackBrush" propertytype="System.IntPtr" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="BitsPerPixel" propertytype="System.Int16" />
+        <property name="Bottom" propertytype="System.Int32" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="CachedImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="CanAccessProperties" propertytype="System.Boolean" />
+        <property name="CanFocus" propertytype="System.Boolean" />
+        <property name="CanRaiseEvents" propertytype="System.Boolean" />
+        <property name="CanSelect" propertytype="System.Boolean" />
+        <property name="Capture" propertytype="System.Boolean" />
+        <property name="CaptureInternal" propertytype="System.Boolean" />
+        <property name="CausesValidation" propertytype="System.Boolean" />
+        <property name="ClientRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" propertytype="System.String" />
+        <property name="ContainsFocus" propertytype="System.Boolean" />
+        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="ValidationCancelled" propertytype="System.Boolean" />
+        <property name="_CreateThreadId" propertytype="System.Int32" />
+        <property name="CreateThreadId" propertytype="System.Int32" />
+        <property name="CurrentImeContextMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultBackColor" propertytype="System.Drawing.Color" />
+        <property name="DefaultCursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultFont" propertytype="System.Drawing.Font" />
+        <property name="DefaultForeColor" propertytype="System.Drawing.Color" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DefaultRightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="DisabledColor" propertytype="System.Drawing.Color" />
+        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" propertytype="System.Boolean" />
+        <property name="Disposing" propertytype="System.Boolean" />
+        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="DoubleBufferingEnabled" propertytype="System.Boolean" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Focused" propertytype="System.Boolean" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="FontHandle" propertytype="System.IntPtr" />
+        <property name="FontHeight" propertytype="System.Int32" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="HasChildren" propertytype="System.Boolean" />
+        <property name="HasMenu" propertytype="System.Boolean" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="HostedInWin32DialogManager" propertytype="System.Boolean" />
+        <property name="IsHandleCreated" propertytype="System.Boolean" />
+        <property name="IsWindowObscured" propertytype="System.Boolean" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="ImeModeConversionBits" propertytype="System.Collections.Hashtable" />
+        <property name="InternalHandle" propertytype="System.IntPtr" />
+        <property name="InvokeRequired" propertytype="System.Boolean" />
+        <property name="IsAccessible" propertytype="System.Boolean" />
+        <property name="IsActiveX" propertytype="System.Boolean" />
+        <property name="IsBinding" propertytype="System.Boolean" />
+        <property name="Left" propertytype="System.Int32" />
+        <property name="Location" propertytype="System.Drawing.Point" />
+        <property name="Mnemonic" propertytype="System.Char" />
+        <property name="ModifierKeys" propertytype="System.Windows.Forms.Keys" />
+        <property name="MouseButtons" propertytype="System.Windows.Forms.MouseButtons" />
+        <property name="MousePosition" propertytype="System.Drawing.Point" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentInternal" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" propertytype="System.String" />
+        <property name="ProductVersion" propertytype="System.String" />
+        <property name="Properties" propertytype="System.Windows.Forms.PropertyStore" />
+        <property name="RawBackColor" propertytype="System.Drawing.Color" />
+        <property name="RecreatingHandle" propertytype="System.Boolean" />
+        <property name="Region" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" propertytype="System.Boolean" />
+        <property name="RenderTransparent" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" propertytype="System.Boolean" />
+        <property name="Right" propertytype="System.Int32" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" propertytype="System.Int32" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Tag" propertytype="System.Object" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TextWithoutMnemonics" propertytype="System.String" />
+        <property name="Top" propertytype="System.Int32" />
+        <property name="TopLevelControl" propertytype="System.Windows.Forms.Control" />
+        <property name="TopLevelControlInternal" propertytype="System.Windows.Forms.Control" />
+        <property name="TopMostParent" propertytype="System.Windows.Forms.Control" />
+        <property name="BufferManager" propertytype="System.Windows.Forms.GraphicsBufferManager" />
+        <property name="ShowKeyboardCues" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" propertytype="System.Boolean" />
+        <property name="ShowParams" propertytype="System.Int32" />
+        <property name="VersionInfo" propertytype="System.Windows.Forms.Control+ControlVersionInfo" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="WindowExStyle" propertytype="System.Int32" />
+        <property name="WindowStyle" propertytype="System.Int32" />
+        <property name="WindowTarget" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="WindowText" propertytype="System.String" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="ResetText" argnames="" returntype="System.Void" />
+        <method name="Refresh" argnames="" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" returntype="System.Void" />
+        <method name="ResetFont" argnames="" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetBindings" argnames="" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" returntype="System.Void" />
+        <method name="Focus" argnames="" returntype="System.Boolean" />
+        <method name="FromChildHandle(System.IntPtr)" argnames="handle" returntype="System.Windows.Forms.Control" />
+        <method name="FromHandle(System.IntPtr)" argnames="handle" returntype="System.Windows.Forms.Control" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" returntype="System.Boolean" />
+        <method name="Hide" argnames="" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" returntype="System.Void" />
+        <method name="Invalidate" argnames="" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" returntype="System.Void" />
+        <method name="IsMnemonic(System.Char, System.String)" argnames="charCode, text" returntype="System.Boolean" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" returntype="System.Drawing.Rectangle" />
+        <method name="ReflectMessage(System.IntPtr, System.Windows.Forms.Message&amp;)" argnames="hWnd, m" returntype="System.Boolean" />
+        <method name="ResetMouseEventArgs" argnames="" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="Select" argnames="" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" returntype="System.Void" />
+        <method name="Update" argnames="" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" />
+        <event name="BackgroundImageChanged" />
+        <event name="BindingContextChanged" />
+        <event name="CausesValidationChanged" />
+        <event name="ContextMenuChanged" />
+        <event name="CursorChanged" />
+        <event name="DockChanged" />
+        <event name="EnabledChanged" />
+        <event name="FontChanged" />
+        <event name="ForeColorChanged" />
+        <event name="LocationChanged" />
+        <event name="RightToLeftChanged" />
+        <event name="SizeChanged" />
+        <event name="TabIndexChanged" />
+        <event name="TabStopChanged" />
+        <event name="TextChanged" />
+        <event name="VisibleChanged" />
+        <event name="Click" />
+        <event name="ControlAdded" />
+        <event name="ControlRemoved" />
+        <event name="DragDrop" />
+        <event name="DragEnter" />
+        <event name="DragOver" />
+        <event name="DragLeave" />
+        <event name="GiveFeedback" />
+        <event name="HandleCreated" />
+        <event name="HandleDestroyed" />
+        <event name="HelpRequested" />
+        <event name="Invalidated" />
+        <event name="Paint" />
+        <event name="QueryContinueDrag" />
+        <event name="QueryAccessibilityHelp" />
+        <event name="DoubleClick" />
+        <event name="Enter" />
+        <event name="GotFocus" />
+        <event name="ImeModeChanged" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="KeyUp" />
+        <event name="Layout" />
+        <event name="Leave" />
+        <event name="LostFocus" />
+        <event name="MouseDown" />
+        <event name="MouseEnter" />
+        <event name="MouseLeave" />
+        <event name="MouseHover" />
+        <event name="MouseMove" />
+        <event name="MouseUp" />
+        <event name="MouseWheel" />
+        <event name="Move" />
+        <event name="Resize" />
+        <event name="ChangeUICues" />
+        <event name="StyleChanged" />
+        <event name="SystemColorsChanged" />
+        <event name="Validating" />
+        <event name="Validated" />
+        <event name="ParentChanged" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="NativeWindow" namespace="System.Windows.Forms">
+        <constructor name="NativeWindow" argnames="" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="PreviousWindow" propertytype="System.Windows.Forms.NativeWindow" />
+        <property name="WndProcFlags" propertytype="System.Int32" />
+        <property name="WndProcShouldBeDebuggable" propertytype="System.Boolean" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="ReleaseHandle" argnames="" returntype="System.Void" />
+        <method name="OnThreadException(System.Exception)" argnames="e" returntype="System.Void" />
+        <method name="OnHandleChange" argnames="" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" returntype="System.Void" />
+        <method name="CreateHandle(System.Windows.Forms.CreateParams)" argnames="cp" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AssignHandle(System.IntPtr)" argnames="handle" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="FromHandle(System.IntPtr)" argnames="handle" returntype="System.Windows.Forms.NativeWindow" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlCollection" namespace="System.Windows.Forms">
+        <constructor name="ControlCollection(System.Windows.Forms.Control)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Windows.Forms.Control" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="control" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" returntype="System.Int32" />
+        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="AccessibleObject" argnames="" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="DefaultAction" propertytype="System.String" />
+        <property name="Description" propertytype="System.String" />
+        <property name="EnumVariant" propertytype="System.Windows.Forms.UnsafeNativeMethods+IEnumVariant" />
+        <property name="Help" propertytype="System.String" />
+        <property name="KeyboardShortcut" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
+        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="ControlAccessibleObject(System.Windows.Forms.Control)" argnames="ownerControl" />
+        <property name="DefaultAction" propertytype="System.String" />
+        <property name="Description" propertytype="System.String" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="Help" propertytype="System.String" />
+        <property name="KeyboardShortcut" propertytype="System.String" />
+        <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Owner" propertytype="System.Windows.Forms.Control" />
+        <property name="PreviousLabel" propertytype="System.Windows.Forms.Label" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" returntype="System.Void" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ScrollableControl" namespace="System.Windows.Forms">
+        <class name="DockPaddingEdges" namespace="System.Windows.Forms">
+            <property name="All" propertytype="System.Int32" />
+            <property name="Bottom" propertytype="System.Int32" />
+            <property name="Left" propertytype="System.Int32" />
+            <property name="Right" propertytype="System.Int32" />
+            <property name="Top" propertytype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+            <method name="ToString" argnames="" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="DockPaddingEdgesConverter" namespace="System.Windows.Forms">
+            <constructor name="DockPaddingEdgesConverter" argnames="" />
+            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="DockPaddingEdgesConverter" argnames="" />
+        <field name="ScrollStateAutoScrolling" />
+        <field name="ScrollStateHScrollVisible" />
+        <field name="ScrollStateVScrollVisible" />
+        <field name="ScrollStateUserHasScrolled" />
+        <field name="ScrollStateFullDrag" />
+        <property name="AutoScroll" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" propertytype="System.Drawing.Size" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" propertytype="System.Boolean" />
+        <property name="VScroll" propertytype="System.Boolean" />
+        <property name="DockPadding" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DockPaddingEdges" namespace="System.Windows.Forms">
+        <property name="All" propertytype="System.Int32" />
+        <property name="Bottom" propertytype="System.Int32" />
+        <property name="Left" propertytype="System.Int32" />
+        <property name="Right" propertytype="System.Int32" />
+        <property name="Top" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DockPaddingEdgesConverter" namespace="System.Windows.Forms">
+        <constructor name="DockPaddingEdgesConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ContainerControl" namespace="System.Windows.Forms">
+        <constructor name="ContainerControl" argnames="" />
+        <property name="BindingContext" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" propertytype="System.Windows.Forms.Control" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="ParentForm" propertytype="System.Windows.Forms.Form" />
+        <property name="ParentFormInternal" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="UpdateDefaultButton" argnames="" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Validate" argnames="" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="Form" namespace="System.Windows.Forms">
+        <class name="ControlCollection" namespace="System.Windows.Forms">
+            <constructor name="ControlCollection(System.Windows.Forms.Form)" argnames="owner" />
+            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ControlCollection" argnames="" />
+        <property name="AcceptButton" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="Active" propertytype="System.Boolean" />
+        <property name="ActiveForm" propertytype="System.Windows.Forms.Form" />
+        <property name="ActiveMdiChild" propertytype="System.Windows.Forms.Form" />
+        <property name="AllowTransparency" propertytype="System.Boolean" />
+        <property name="AutoScale" propertytype="System.Boolean" />
+        <property name="AutoScaleBaseSize" propertytype="System.Drawing.Size" />
+        <property name="AutoScroll" propertytype="System.Boolean" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="FormBorderStyle" propertytype="System.Windows.Forms.FormBorderStyle" />
+        <property name="CancelButton" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ClientSize" propertytype="System.Drawing.Size" />
+        <property name="ControlBox" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultIcon" propertytype="System.Drawing.Icon" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultRestrictedIcon" propertytype="System.Drawing.Icon" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DesktopBounds" propertytype="System.Drawing.Rectangle" />
+        <property name="DesktopLocation" propertytype="System.Drawing.Point" />
+        <property name="DialogResult" propertytype="System.Windows.Forms.DialogResult" />
+        <property name="HasMenu" propertytype="System.Boolean" />
+        <property name="HelpButton" propertytype="System.Boolean" />
+        <property name="Icon" propertytype="System.Drawing.Icon" />
+        <property name="IsMdiChild" propertytype="System.Boolean" />
+        <property name="IsMdiContainer" propertytype="System.Boolean" />
+        <property name="KeyPreview" propertytype="System.Boolean" />
+        <property name="MaximizedBounds" propertytype="System.Drawing.Rectangle" />
+        <property name="MaximumSize" propertytype="System.Drawing.Size" />
+        <property name="Menu" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimumSize" propertytype="System.Drawing.Size" />
+        <property name="MaximizeBox" propertytype="System.Boolean" />
+        <property name="MdiChildren" propertytype="System.Windows.Forms.Form[]" />
+        <property name="MdiParent" propertytype="System.Windows.Forms.Form" />
+        <property name="MdiParentInternal" propertytype="System.Windows.Forms.Form" />
+        <property name="MergedMenu" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimizeBox" propertytype="System.Boolean" />
+        <property name="Modal" propertytype="System.Boolean" />
+        <property name="Opacity" propertytype="System.Double" />
+        <property name="OpacityAsByte" propertytype="System.Byte" />
+        <property name="OwnedForms" propertytype="System.Windows.Forms.Form[]" />
+        <property name="Owner" propertytype="System.Windows.Forms.Form" />
+        <property name="OwnerInternal" propertytype="System.Windows.Forms.Form" />
+        <property name="ParentInternal" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowInTaskbar" propertytype="System.Boolean" />
+        <property name="ShowParams" propertytype="System.Int32" />
+        <property name="Size" propertytype="System.Drawing.Size" />
+        <property name="SizeGripStyle" propertytype="System.Windows.Forms.SizeGripStyle" />
+        <property name="StartPosition" propertytype="System.Windows.Forms.FormStartPosition" />
+        <property name="TabIndex" propertytype="System.Int32" />
+        <property name="TopLevel" propertytype="System.Boolean" />
+        <property name="TopMost" propertytype="System.Boolean" />
+        <property name="TransparencyKey" propertytype="System.Drawing.Color" />
+        <property name="IsRestrictedWindow" propertytype="System.Boolean" />
+        <property name="WindowState" propertytype="System.Windows.Forms.FormWindowState" />
+        <property name="WindowText" propertytype="System.String" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnMenuComplete(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMenuStart(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLoad(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDeactivate(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnClosed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnActivated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Activate" argnames="" returntype="System.Void" />
+        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" returntype="System.Void" />
+        <method name="ApplyAutoScaling" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="GetAutoScaleSize(System.Drawing.Font)" argnames="font" returntype="System.Drawing.SizeF" />
+        <method name="CenterToParent" argnames="" returntype="System.Void" />
+        <method name="CenterToScreen" argnames="" returntype="System.Void" />
+        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" returntype="System.Void" />
+        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" returntype="System.Void" />
+        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" returntype="System.Void" />
+        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Void" />
+        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="MaximizedBoundsChanged" />
+        <event name="MaximumSizeChanged" />
+        <event name="MinimumSizeChanged" />
+        <event name="Activated" />
+        <event name="Closing" />
+        <event name="Closed" />
+        <event name="Deactivate" />
+        <event name="Load" />
+        <event name="MdiChildActivate" />
+        <event name="MenuComplete" />
+        <event name="MenuStart" />
+        <event name="InputLanguageChanged" />
+        <event name="InputLanguageChanging" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ControlCollection" namespace="System.Windows.Forms">
+        <constructor name="ControlCollection(System.Windows.Forms.Form)" argnames="owner" />
+        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AmbientProperties" namespace="System.Windows.Forms">
+        <constructor name="AmbientProperties" argnames="" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PaintEventArgs" namespace="System.Windows.Forms">
+        <constructor name="PaintEventArgs(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, clipRect" />
+        <property name="ClipRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="HDC" propertytype="System.IntPtr" />
+        <property name="Graphics" propertytype="System.Drawing.Graphics" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ApplicationContext" namespace="System.Windows.Forms">
+        <constructor name="ApplicationContext" argnames="" />
+        <constructor name="ApplicationContext(System.Windows.Forms.Form)" argnames="mainForm" />
+        <property name="MainForm" propertytype="System.Windows.Forms.Form" />
+        <method name="OnMainFormClosed(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="ExitThreadCore" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="ExitThread" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ThreadExit" />
+    </class>
+    <class name="CommonDialog" namespace="System.Windows.Forms">
+        <constructor name="CommonDialog" argnames="" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ShowDialog" argnames="" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="HelpRequest" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="FileDialog" namespace="System.Windows.Forms">
+        <field name="EventFileOk" />
+        <property name="AddExtension" propertytype="System.Boolean" />
+        <property name="CheckFileExists" propertytype="System.Boolean" />
+        <property name="CheckPathExists" propertytype="System.Boolean" />
+        <property name="DefaultExt" propertytype="System.String" />
+        <property name="DereferenceLinks" propertytype="System.Boolean" />
+        <property name="DialogCaption" propertytype="System.String" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="FileNames" propertytype="System.String[]" />
+        <property name="FileNamesInternal" propertytype="System.String[]" />
+        <property name="Filter" propertytype="System.String" />
+        <property name="FilterExtensions" propertytype="System.String[]" />
+        <property name="FilterIndex" propertytype="System.Int32" />
+        <property name="InitialDirectory" propertytype="System.String" />
+        <property name="Instance" propertytype="System.IntPtr" />
+        <property name="Options" propertytype="System.Int32" />
+        <property name="RestoreDirectory" propertytype="System.Boolean" />
+        <property name="ShowHelp" propertytype="System.Boolean" />
+        <property name="Title" propertytype="System.String" />
+        <property name="ValidateNames" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="OnFileOk(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="FileOk" />
+        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="BaseCollection" namespace="System.Windows.Forms">
+        <constructor name="BaseCollection" argnames="" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Binding" namespace="System.Windows.Forms">
+        <constructor name="Binding(System.String, System.Object, System.String)" argnames="propertyName, dataSource, dataMember" />
+        <property name="BindToObject" propertytype="System.Windows.Forms.BindToObject" />
+        <property name="DataSource" propertytype="System.Object" />
+        <property name="BindingMemberInfo" propertytype="System.Windows.Forms.BindingMemberInfo" />
+        <property name="Control" propertytype="System.Windows.Forms.Control" />
+        <property name="IsBinding" propertytype="System.Boolean" />
+        <property name="BindingManagerBase" propertytype="System.Windows.Forms.BindingManagerBase" />
+        <property name="PropertyName" propertytype="System.String" />
+        <property name="IsBindable" propertytype="System.Boolean" />
+        <method name="OnFormat(System.Windows.Forms.ConvertEventArgs)" argnames="cevent" returntype="System.Void" />
+        <method name="OnParse(System.Windows.Forms.ConvertEventArgs)" argnames="cevent" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Parse" />
+        <event name="Format" />
+    </class>
+    <class name="BindingManagerBase" namespace="System.Windows.Forms">
+        <constructor name="BindingManagerBase" argnames="" />
+        <property name="Bindings" propertytype="System.Windows.Forms.BindingsCollection" />
+        <property name="Current" propertytype="System.Object" />
+        <property name="BindType" propertytype="System.Type" />
+        <property name="Position" propertytype="System.Int32" />
+        <property name="DataSource" propertytype="System.Object" />
+        <property name="IsBinding" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="ResumeBinding" argnames="" returntype="System.Void" />
+        <method name="SuspendBinding" argnames="" returntype="System.Void" />
+        <method name="UpdateIsBinding" argnames="" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="AddNew" argnames="" returntype="System.Void" />
+        <method name="EndCurrentEdit" argnames="" returntype="System.Void" />
+        <method name="CancelCurrentEdit" argnames="" returntype="System.Void" />
+        <method name="GetItemProperties(System.Type, System.Int32, System.Collections.ArrayList, System.Collections.ArrayList)" argnames="listType, offset, dataSources, listAccessors" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetItemProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="PullData" argnames="" returntype="System.Void" />
+        <method name="PushData" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CurrentChanged" />
+        <event name="PositionChanged" />
+    </class>
+    <class name="BindingsCollection" namespace="System.Windows.Forms">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <property name="Item" propertytype="System.Windows.Forms.Binding" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
+        <method name="RemoveCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="ClearCore" argnames="" returntype="System.Void" />
+        <method name="AddCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+    </class>
+    <class name="ControlPaint" namespace="System.Windows.Forms">
+        <property name="ContrastControlDark" propertytype="System.Drawing.Color" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateHBitmap16Bit(System.Drawing.Bitmap, System.Drawing.Color)" argnames="bitmap, background" returntype="System.IntPtr" />
+        <method name="CreateHBitmapTransparencyMask(System.Drawing.Bitmap)" argnames="bitmap" returntype="System.IntPtr" />
+        <method name="CreateHBitmapColorMask(System.Drawing.Bitmap, System.IntPtr)" argnames="bitmap, monochromeMask" returntype="System.IntPtr" />
+        <method name="Dark(System.Drawing.Color, System.Single)" argnames="baseColor, percOfDarkDark" returntype="System.Drawing.Color" />
+        <method name="Dark(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
+        <method name="DarkDark(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
+        <method name="DrawBorder(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Color, System.Windows.Forms.ButtonBorderStyle)" argnames="graphics, bounds, color, style" returntype="System.Void" />
+        <method name="DrawBorder(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle, System.Drawing.Color, System.Int32, System.Windows.Forms.ButtonBorderStyle)" argnames="graphics, bounds, leftColor, leftWidth, leftStyle, topColor, topWidth, topStyle, rightColor, rightWidth, rightStyle, bottomColor, bottomWidth, bottomStyle" returntype="System.Void" />
+        <method name="DrawBorder3D(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, rectangle" returntype="System.Void" />
+        <method name="DrawBorder3D(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.Border3DStyle)" argnames="graphics, rectangle, style" returntype="System.Void" />
+        <method name="DrawBorder3D(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.Border3DStyle, System.Windows.Forms.Border3DSide)" argnames="graphics, rectangle, style, sides" returntype="System.Void" />
+        <method name="DrawBorder3D(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="graphics, x, y, width, height" returntype="System.Void" />
+        <method name="DrawBorder3D(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.Border3DStyle)" argnames="graphics, x, y, width, height, style" returntype="System.Void" />
+        <method name="DrawBorder3D(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.Border3DStyle, System.Windows.Forms.Border3DSide)" argnames="graphics, x, y, width, height, style, sides" returntype="System.Void" />
+        <method name="DrawButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
+        <method name="DrawButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
+        <method name="DrawCaptionButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.CaptionButton, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, button, state" returntype="System.Void" />
+        <method name="DrawCaptionButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.CaptionButton, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, button, state" returntype="System.Void" />
+        <method name="DrawCheckBox(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
+        <method name="DrawCheckBox(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
+        <method name="DrawComboButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
+        <method name="DrawComboButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
+        <method name="DrawContainerGrabHandle(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, bounds" returntype="System.Void" />
+        <method name="DrawFocusRectangle(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="graphics, rectangle" returntype="System.Void" />
+        <method name="DrawFocusRectangle(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Color, System.Drawing.Color)" argnames="graphics, rectangle, foreColor, backColor" returntype="System.Void" />
+        <method name="DrawGrabHandle(System.Drawing.Graphics, System.Drawing.Rectangle, System.Boolean, System.Boolean)" argnames="graphics, rectangle, primary, enabled" returntype="System.Void" />
+        <method name="DrawGrid(System.Drawing.Graphics, System.Drawing.Rectangle, System.Drawing.Size, System.Drawing.Color)" argnames="graphics, area, pixelsBetweenDots, backColor" returntype="System.Void" />
+        <method name="DrawImageDisabled(System.Drawing.Graphics, System.Drawing.Image, System.Int32, System.Int32, System.Drawing.Color)" argnames="graphics, image, x, y, background" returntype="System.Void" />
+        <method name="DrawLockedFrame(System.Drawing.Graphics, System.Drawing.Rectangle, System.Boolean)" argnames="graphics, rectangle, primary" returntype="System.Void" />
+        <method name="DrawMenuGlyph(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.MenuGlyph)" argnames="graphics, rectangle, glyph" returntype="System.Void" />
+        <method name="DrawMenuGlyph(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.MenuGlyph)" argnames="graphics, x, y, width, height, glyph" returntype="System.Void" />
+        <method name="DrawMixedCheckBox(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
+        <method name="DrawMixedCheckBox(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
+        <method name="DrawRadioButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, state" returntype="System.Void" />
+        <method name="DrawRadioButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, state" returntype="System.Void" />
+        <method name="DrawReversibleFrame(System.Drawing.Rectangle, System.Drawing.Color, System.Windows.Forms.FrameStyle)" argnames="rectangle, backColor, style" returntype="System.Void" />
+        <method name="DrawReversibleLine(System.Drawing.Point, System.Drawing.Point, System.Drawing.Color)" argnames="start, end, backColor" returntype="System.Void" />
+        <method name="DrawScrollButton(System.Drawing.Graphics, System.Drawing.Rectangle, System.Windows.Forms.ScrollButton, System.Windows.Forms.ButtonState)" argnames="graphics, rectangle, button, state" returntype="System.Void" />
+        <method name="DrawScrollButton(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.ScrollButton, System.Windows.Forms.ButtonState)" argnames="graphics, x, y, width, height, button, state" returntype="System.Void" />
+        <method name="DrawSelectionFrame(System.Drawing.Graphics, System.Boolean, System.Drawing.Rectangle, System.Drawing.Rectangle, System.Drawing.Color)" argnames="graphics, active, outsideRect, insideRect, backColor" returntype="System.Void" />
+        <method name="DrawSizeGrip(System.Drawing.Graphics, System.Drawing.Color, System.Drawing.Rectangle)" argnames="graphics, backColor, bounds" returntype="System.Void" />
+        <method name="DrawSizeGrip(System.Drawing.Graphics, System.Drawing.Color, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="graphics, backColor, x, y, width, height" returntype="System.Void" />
+        <method name="DrawStringDisabled(System.Drawing.Graphics, System.String, System.Drawing.Font, System.Drawing.Color, System.Drawing.RectangleF, System.Drawing.StringFormat)" argnames="graphics, s, font, color, layoutRectangle, format" returntype="System.Void" />
+        <method name="FillReversibleRectangle(System.Drawing.Rectangle, System.Drawing.Color)" argnames="rectangle, backColor" returntype="System.Void" />
+        <method name="Light(System.Drawing.Color, System.Single)" argnames="baseColor, percOfLightLight" returntype="System.Drawing.Color" />
+        <method name="Light(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
+        <method name="LightLight(System.Drawing.Color)" argnames="baseColor" returntype="System.Drawing.Color" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TextBoxBase" namespace="System.Windows.Forms">
+        <property name="AcceptsTab" propertytype="System.Boolean" />
+        <property name="AutoSize" propertytype="System.Boolean" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CanRaiseTextChangedEvent" propertytype="System.Boolean" />
+        <property name="CanUndo" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultCursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="HideSelection" propertytype="System.Boolean" />
+        <property name="Lines" propertytype="System.String[]" />
+        <property name="MaxLength" propertytype="System.Int32" />
+        <property name="Modified" propertytype="System.Boolean" />
+        <property name="Multiline" propertytype="System.Boolean" />
+        <property name="PreferredHeight" propertytype="System.Int32" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="SelectedText" propertytype="System.String" />
+        <property name="SelectionLength" propertytype="System.Int32" />
+        <property name="SelectionStart" propertytype="System.Int32" />
+        <property name="SetSelectionInCreateHandle" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TextLength" propertytype="System.Int32" />
+        <property name="WindowText" propertytype="System.String" />
+        <property name="WordWrap" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="AppendText(System.String)" argnames="text" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="ClearUndo" argnames="" returntype="System.Void" />
+        <method name="Copy" argnames="" returntype="System.Void" />
+        <method name="Cut" argnames="" returntype="System.Void" />
+        <method name="Paste" argnames="" returntype="System.Void" />
+        <method name="ScrollToCaret" argnames="" returntype="System.Void" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" returntype="System.Void" />
+        <method name="SelectAll" argnames="" returntype="System.Void" />
+        <method name="Undo" argnames="" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AcceptsTabChanged" />
+        <event name="AutoSizeChanged" />
+        <event name="BorderStyleChanged" />
+        <event name="Click" />
+        <event name="HideSelectionChanged" />
+        <event name="ModifiedChanged" />
+        <event name="MultilineChanged" />
+        <event name="ReadOnlyChanged" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="TextBox" namespace="System.Windows.Forms">
+        <constructor name="TextBox" argnames="" />
+        <property name="AcceptsReturn" propertytype="System.Boolean" />
+        <property name="CharacterCasing" propertytype="System.Windows.Forms.CharacterCasing" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="PasswordChar" propertytype="System.Char" />
+        <property name="ScrollBars" propertytype="System.Windows.Forms.ScrollBars" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TextAlign" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="AcceptsTab" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="AutoSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CanUndo" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
+        <property name="HideSelection" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="Lines" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String[]" />
+        <property name="MaxLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="Modified" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="Multiline" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="PreferredHeight" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="ReadOnly" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="SelectedText" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String" />
+        <property name="SelectionLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="SelectionStart" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="TextLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="WordWrap" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.String" />
+        <method name="AppendText(System.String)" argnames="text" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ClearUndo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Copy" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Cut" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Paste" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ScrollToCaret" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="SelectAll" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Undo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="TextAlignChanged" />
+        <event name="AcceptsTabChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="AutoSizeChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="BorderStyleChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="Click" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="HideSelectionChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="ModifiedChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="MultilineChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="Paint" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DataGridTextBox" namespace="System.Windows.Forms">
+        <constructor name="DataGridTextBox" argnames="" />
+        <property name="IsInEditOrNavigateMode" propertytype="System.Boolean" />
+        <property name="AcceptsReturn" inherited="System.Windows.Forms.TextBox" propertytype="System.Boolean" />
+        <property name="CharacterCasing" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.CharacterCasing" />
+        <property name="CreateParams" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="PasswordChar" inherited="System.Windows.Forms.TextBox" propertytype="System.Char" />
+        <property name="ScrollBars" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.ScrollBars" />
+        <property name="Text" inherited="System.Windows.Forms.TextBox" propertytype="System.String" />
+        <property name="TextAlign" inherited="System.Windows.Forms.TextBox" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="AcceptsTab" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="AutoSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CanUndo" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
+        <property name="HideSelection" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="Lines" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String[]" />
+        <property name="MaxLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="Modified" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="Multiline" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="PreferredHeight" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="ReadOnly" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="SelectedText" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String" />
+        <property name="SelectionLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="SelectionStart" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="TextLength" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="WordWrap" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
+        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBox" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBox" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.String" />
+        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="parentGrid" returntype="System.Void" />
+        <method name="AppendText(System.String)" argnames="text" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ClearUndo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Copy" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Cut" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Paste" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ScrollToCaret" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="SelectAll" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Undo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="TextAlignChanged" inherited="System.Windows.Forms.TextBox" />
+        <event name="AcceptsTabChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="AutoSizeChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="BorderStyleChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="Click" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="HideSelectionChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="ModifiedChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="MultilineChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="Paint" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="FontDialog" namespace="System.Windows.Forms">
+        <constructor name="FontDialog" argnames="" />
+        <field name="EventApply" />
+        <property name="AllowSimulations" propertytype="System.Boolean" />
+        <property name="AllowVectorFonts" propertytype="System.Boolean" />
+        <property name="AllowVerticalFonts" propertytype="System.Boolean" />
+        <property name="AllowScriptChange" propertytype="System.Boolean" />
+        <property name="Color" propertytype="System.Drawing.Color" />
+        <property name="FixedPitchOnly" propertytype="System.Boolean" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="FontMustExist" propertytype="System.Boolean" />
+        <property name="MaxSize" propertytype="System.Int32" />
+        <property name="MinSize" propertytype="System.Int32" />
+        <property name="Options" propertytype="System.Int32" />
+        <property name="ScriptsOnly" propertytype="System.Boolean" />
+        <property name="ShowApply" propertytype="System.Boolean" />
+        <property name="ShowColor" propertytype="System.Boolean" />
+        <property name="ShowEffects" propertytype="System.Boolean" />
+        <property name="ShowHelp" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnApply(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Apply" />
+        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="Clipboard" namespace="System.Windows.Forms">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SetDataObject(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="SetDataObject(System.Object, System.Boolean)" argnames="data, copy" returntype="System.Void" />
+        <method name="GetDataObject" argnames="" returntype="System.Windows.Forms.IDataObject" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DateTimePicker" namespace="System.Windows.Forms">
+        <class name="DateTimePickerAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="DateTimePickerAccessibleObject(System.Windows.Forms.DateTimePicker)" argnames="owner" />
+            <property name="Value" propertytype="System.String" />
+            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+            <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="DateTimePickerAccessibleObject" argnames="" />
+        <field name="DefaultTitleBackColor" />
+        <field name="DefaultTitleForeColor" />
+        <field name="DefaultMonthBackColor" />
+        <field name="DefaultTrailingForeColor" />
+        <field name="MinDateTime" />
+        <field name="MaxDateTime" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="CalendarForeColor" propertytype="System.Drawing.Color" />
+        <property name="CalendarFont" propertytype="System.Drawing.Font" />
+        <property name="CalendarFontHandle" propertytype="System.IntPtr" />
+        <property name="CalendarTitleBackColor" propertytype="System.Drawing.Color" />
+        <property name="CalendarTitleForeColor" propertytype="System.Drawing.Color" />
+        <property name="CalendarTrailingForeColor" propertytype="System.Drawing.Color" />
+        <property name="CalendarMonthBackground" propertytype="System.Drawing.Color" />
+        <property name="Checked" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="CustomFormat" propertytype="System.String" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DropDownAlign" propertytype="System.Windows.Forms.LeftRightAlignment" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Format" propertytype="System.Windows.Forms.DateTimePickerFormat" />
+        <property name="MaxDate" propertytype="System.DateTime" />
+        <property name="MinDate" propertytype="System.DateTime" />
+        <property name="PreferredHeight" propertytype="System.Int32" />
+        <property name="ShowCheckBox" propertytype="System.Boolean" />
+        <property name="ShowUpDown" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnValueChanged(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
+        <method name="OnFormatChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDropDown(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
+        <method name="OnCloseUp(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="FormatChanged" />
+        <event name="Paint" />
+        <event name="CloseUp" />
+        <event name="ValueChanged" />
+        <event name="DropDown" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DateTimePickerAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="DateTimePickerAccessibleObject(System.Windows.Forms.DateTimePicker)" argnames="owner" />
+        <property name="Value" propertytype="System.String" />
+        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+        <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColumnClickEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ColumnClickEventArgs(System.Int32)" argnames="column" />
+        <property name="Column" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColumnHeader" namespace="System.Windows.Forms">
+        <constructor name="ColumnHeader" argnames="" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="ListView" propertytype="System.Windows.Forms.ListView" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TextAlign" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="WidthInternal" propertytype="System.Int32" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="Panel" namespace="System.Windows.Forms">
+        <constructor name="Panel" argnames="" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="KeyUp" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="TabPage" namespace="System.Windows.Forms">
+        <class name="TabPageControlCollection" namespace="System.Windows.Forms">
+            <constructor name="TabPageControlCollection(System.Windows.Forms.TabPage)" argnames="owner" />
+            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.Control)" argnames="value" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="TabPageControlCollection" argnames="" />
+        <constructor name="TabPageControlCollection(System.String)" argnames="text" />
+        <property name="ImageIndex" propertytype="System.Int32" />
+        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="TabIndex" propertytype="System.Int32" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="ToolTipText" propertytype="System.String" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.Panel" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Panel" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Panel" propertytype="System.Drawing.Size" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.Panel" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetTabPageOfComponent(System.Object)" argnames="comp" returntype="System.Windows.Forms.TabPage" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Panel" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Panel" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Panel" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="TabPageControlCollection" namespace="System.Windows.Forms">
+        <constructor name="TabPageControlCollection(System.Windows.Forms.TabPage)" argnames="owner" />
+        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.Control)" argnames="value" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UpDownBase" namespace="System.Windows.Forms">
+        <constructor name="UpDownBase" argnames="" />
+        <property name="AutoScroll" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollMinSize" propertytype="System.Drawing.Size" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="ChangingText" propertytype="System.Boolean" />
+        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DockPadding" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="Focused" propertytype="System.Boolean" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="InterceptArrowKeys" propertytype="System.Boolean" />
+        <property name="PreferredHeight" propertytype="System.Int32" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TextAlign" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="TextBox" propertytype="System.Windows.Forms.TextBox" />
+        <property name="UpDownAlign" propertytype="System.Windows.Forms.LeftRightAlignment" />
+        <property name="UpDownButtonsInternal" propertytype="System.Windows.Forms.UpDownBase+UpDownButtons" />
+        <property name="UserEdit" propertytype="System.Boolean" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="ValidateEditText" argnames="" returntype="System.Void" />
+        <method name="UpdateEditText" argnames="" returntype="System.Void" />
+        <method name="UpButton" argnames="" returntype="System.Void" />
+        <method name="OnTextBoxTextChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnTextBoxResize(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnTextBoxLostFocus(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnTextBoxKeyPress(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnTextBoxKeyDown(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="DownButton" argnames="" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" returntype="System.Void" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DomainUpDown" namespace="System.Windows.Forms">
+        <class name="DomainUpDownItemCollection" namespace="System.Windows.Forms">
+            <property name="Item" propertytype="System.Object" />
+            <property name="Capacity" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
+            <property name="Count" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
+            <property name="IsFixedSize" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
+            <property name="IsReadOnly" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
+            <property name="IsSynchronized" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
+            <property name="SyncRoot" inherited="System.Collections.ArrayList" propertytype="System.Object" />
+            <method name="Clone" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object" />
+            <method name="GetEnumerator" argnames="" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="item" returntype="System.Void" />
+            <method name="Remove(System.Object)" argnames="item" returntype="System.Void" />
+            <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+            <method name="IndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="Clear" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="Contains(System.Object)" argnames="item" inherited="System.Collections.ArrayList" returntype="System.Boolean" />
+            <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
+            <method name="TrimToSize" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="ToArray(System.Type)" argnames="type" inherited="System.Collections.ArrayList" returntype="System.Array" />
+            <method name="ToArray" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object[]" />
+            <method name="Sort(System.Int32, System.Int32, System.Collections.IComparer)" argnames="index, count, comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="Sort(System.Collections.IComparer)" argnames="comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="Sort" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="GetRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.ArrayList" />
+            <method name="SetRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="Reverse(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="Reverse" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="RemoveRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="LastIndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="LastIndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="LastIndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="InsertRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="IndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="IndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="GetEnumerator(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Int32, System.Array, System.Int32, System.Int32)" argnames="index, array, arrayIndex, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="CopyTo(System.Array)" argnames="array" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="BinarySearch(System.Object, System.Collections.IComparer)" argnames="value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="BinarySearch(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="BinarySearch(System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="index, count, value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+            <method name="AddRange(System.Collections.ICollection)" argnames="c" inherited="System.Collections.ArrayList" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="DomainUpDownAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="DomainUpDownAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
+            <property name="ItemList" propertytype="System.Windows.Forms.DomainUpDown+DomainItemListAccessibleObject" />
+            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="DomainItemAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="DomainItemAccessibleObject(System.String, System.Windows.Forms.AccessibleObject)" argnames="name, parent" />
+            <property name="Name" propertytype="System.String" />
+            <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Value" propertytype="System.String" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="DomainItemAccessibleObject" argnames="" />
+        <property name="Items" propertytype="System.Windows.Forms.DomainUpDown+DomainUpDownItemCollection" />
+        <property name="SelectedIndex" propertytype="System.Int32" />
+        <property name="SelectedItem" propertytype="System.Object" />
+        <property name="Sorted" propertytype="System.Boolean" />
+        <property name="Wrap" propertytype="System.Boolean" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
+        <property name="BackColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="ChangingText" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="CreateParams" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
+        <property name="DockPadding" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="Focused" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="ForeColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
+        <property name="InterceptArrowKeys" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="PreferredHeight" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Int32" />
+        <property name="ReadOnly" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="Text" inherited="System.Windows.Forms.UpDownBase" propertytype="System.String" />
+        <property name="TextAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="UpDownAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.LeftRightAlignment" />
+        <property name="UserEdit" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="ValidateEditText" argnames="" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="UpdateEditText" argnames="" returntype="System.Void" />
+        <method name="UpButton" argnames="" returntype="System.Void" />
+        <method name="OnTextBoxTextChanged(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnTextBoxResize(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnTextBoxLostFocus(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnTextBoxKeyPress(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnTextBoxKeyDown(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="DownButton" argnames="" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="OnSelectedItemChanged(System.Object, System.EventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="SelectedItemChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DomainUpDownItemCollection" namespace="System.Windows.Forms">
+        <property name="Item" propertytype="System.Object" />
+        <property name="Capacity" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
+        <property name="Count" inherited="System.Collections.ArrayList" propertytype="System.Int32" />
+        <property name="IsFixedSize" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
+        <property name="IsReadOnly" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Collections.ArrayList" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Collections.ArrayList" propertytype="System.Object" />
+        <method name="Clone" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="item" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="item" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="Clear" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="item" inherited="System.Collections.ArrayList" returntype="System.Boolean" />
+        <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
+        <method name="TrimToSize" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="ToArray(System.Type)" argnames="type" inherited="System.Collections.ArrayList" returntype="System.Array" />
+        <method name="ToArray" argnames="" inherited="System.Collections.ArrayList" returntype="System.Object[]" />
+        <method name="Sort(System.Int32, System.Int32, System.Collections.IComparer)" argnames="index, count, comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="Sort(System.Collections.IComparer)" argnames="comparer" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="Sort" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="GetRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.ArrayList" />
+        <method name="SetRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="Reverse(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="Reverse" argnames="" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="RemoveRange(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="LastIndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="InsertRange(System.Int32, System.Collections.ICollection)" argnames="index, c" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="IndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="IndexOf(System.Object, System.Int32)" argnames="value, startIndex" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="GetEnumerator(System.Int32, System.Int32)" argnames="index, count" inherited="System.Collections.ArrayList" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Int32, System.Array, System.Int32, System.Int32)" argnames="index, array, arrayIndex, count" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="CopyTo(System.Array)" argnames="array" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="BinarySearch(System.Object, System.Collections.IComparer)" argnames="value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="BinarySearch(System.Object)" argnames="value" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="BinarySearch(System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="index, count, value, comparer" inherited="System.Collections.ArrayList" returntype="System.Int32" />
+        <method name="AddRange(System.Collections.ICollection)" argnames="c" inherited="System.Collections.ArrayList" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DomainUpDownAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="DomainUpDownAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
+        <property name="ItemList" propertytype="System.Windows.Forms.DomainUpDown+DomainItemListAccessibleObject" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DomainItemAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="DomainItemAccessibleObject(System.String, System.Windows.Forms.AccessibleObject)" argnames="name, parent" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GroupBox" namespace="System.Windows.Forms">
+        <constructor name="GroupBox" argnames="" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="FlatStyle" propertytype="System.Windows.Forms.FlatStyle" />
+        <property name="OwnerDraw" propertytype="System.Boolean" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" />
+        <event name="DoubleClick" />
+        <event name="KeyUp" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="MouseDown" />
+        <event name="MouseUp" />
+        <event name="MouseMove" />
+        <event name="MouseEnter" />
+        <event name="MouseLeave" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="Menu" namespace="System.Windows.Forms">
+        <class name="MenuItemCollection" namespace="System.Windows.Forms">
+            <constructor name="MenuItemCollection(System.Windows.Forms.Menu)" argnames="owner" />
+            <property name="Item" propertytype="System.Windows.Forms.MenuItem" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.MenuItem[])" argnames="items" returntype="System.Void" />
+            <method name="Add(System.Int32, System.Windows.Forms.MenuItem)" argnames="index, item" returntype="System.Int32" />
+            <method name="Add(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Int32" />
+            <method name="Add(System.String, System.Windows.Forms.MenuItem[])" argnames="caption, items" returntype="System.Windows.Forms.MenuItem" />
+            <method name="Add(System.String, System.EventHandler)" argnames="caption, onClick" returntype="System.Windows.Forms.MenuItem" />
+            <method name="Add(System.String)" argnames="caption" returntype="System.Windows.Forms.MenuItem" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="MenuItemCollection(System.Windows.Forms.MenuItem[])" argnames="items" />
+        <field name="FindHandle" />
+        <field name="FindShortcut" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="IsParent" propertytype="System.Boolean" />
+        <property name="MdiListItem" propertytype="System.Windows.Forms.MenuItem" />
+        <property name="MenuItems" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" returntype="System.Void" />
+        <method name="CreateMenuHandle" argnames="" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" returntype="System.Void" />
+        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" returntype="System.Windows.Forms.MenuItem" />
+        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" returntype="System.Int32" />
+        <method name="GetContextMenu" argnames="" returntype="System.Windows.Forms.ContextMenu" />
+        <method name="GetMainMenu" argnames="" returntype="System.Windows.Forms.MainMenu" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="MenuItemCollection" namespace="System.Windows.Forms">
+        <constructor name="MenuItemCollection(System.Windows.Forms.Menu)" argnames="owner" />
+        <property name="Item" propertytype="System.Windows.Forms.MenuItem" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.MenuItem[])" argnames="items" returntype="System.Void" />
+        <method name="Add(System.Int32, System.Windows.Forms.MenuItem)" argnames="index, item" returntype="System.Int32" />
+        <method name="Add(System.Windows.Forms.MenuItem)" argnames="item" returntype="System.Int32" />
+        <method name="Add(System.String, System.Windows.Forms.MenuItem[])" argnames="caption, items" returntype="System.Windows.Forms.MenuItem" />
+        <method name="Add(System.String, System.EventHandler)" argnames="caption, onClick" returntype="System.Windows.Forms.MenuItem" />
+        <method name="Add(System.String)" argnames="caption" returntype="System.Windows.Forms.MenuItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.MenuItem)" argnames="value" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ContextMenu" namespace="System.Windows.Forms">
+        <constructor name="ContextMenu" argnames="" />
+        <constructor name="ContextMenu(System.Windows.Forms.MenuItem[])" argnames="menuItems" />
+        <property name="SourceControl" propertytype="System.Windows.Forms.Control" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Handle" inherited="System.Windows.Forms.Menu" propertytype="System.IntPtr" />
+        <property name="IsParent" inherited="System.Windows.Forms.Menu" propertytype="System.Boolean" />
+        <property name="MdiListItem" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.MenuItem" />
+        <property name="MenuItems" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
+        <method name="CreateMenuHandle" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.String" />
+        <method name="Show(System.Windows.Forms.Control, System.Drawing.Point)" argnames="control, pos" returntype="System.Void" />
+        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
+        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MenuItem" />
+        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" inherited="System.Windows.Forms.Menu" returntype="System.Int32" />
+        <method name="GetContextMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.ContextMenu" />
+        <method name="GetMainMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MainMenu" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Popup" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ScrollBar" namespace="System.Windows.Forms">
+        <constructor name="ScrollBar" argnames="" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="LargeChange" propertytype="System.Int32" />
+        <property name="Maximum" propertytype="System.Int32" />
+        <property name="Minimum" propertytype="System.Int32" />
+        <property name="SmallChange" propertytype="System.Int32" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Value" propertytype="System.Int32" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnScroll(System.Windows.Forms.ScrollEventArgs)" argnames="se" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="UpdateScrollInfo" argnames="" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" />
+        <event name="Paint" />
+        <event name="DoubleClick" />
+        <event name="MouseDown" />
+        <event name="MouseUp" />
+        <event name="MouseMove" />
+        <event name="Scroll" />
+        <event name="ValueChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="HScrollBar" namespace="System.Windows.Forms">
+        <constructor name="HScrollBar" argnames="" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="BackColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Image" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="ForeColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
+        <property name="Font" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Font" />
+        <property name="ImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="LargeChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="Maximum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="Minimum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="SmallChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Boolean" />
+        <property name="Text" inherited="System.Windows.Forms.ScrollBar" propertytype="System.String" />
+        <property name="Value" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="OnScroll(System.Windows.Forms.ScrollEventArgs)" argnames="se" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.String" />
+        <method name="UpdateScrollInfo" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="Paint" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="MouseDown" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="MouseUp" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="MouseMove" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="Scroll" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="ValueChanged" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ControlBindingsCollection" namespace="System.Windows.Forms">
+        <property name="Control" propertytype="System.Windows.Forms.Control" />
+        <property name="Item" propertytype="System.Windows.Forms.Binding" />
+        <property name="Count" inherited="System.Windows.Forms.BindingsCollection" propertytype="System.Int32" />
+        <property name="List" inherited="System.Windows.Forms.BindingsCollection" propertytype="System.Collections.ArrayList" />
+        <property name="Item" inherited="System.Windows.Forms.BindingsCollection" propertytype="System.Windows.Forms.Binding" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
+        <method name="RemoveCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" inherited="System.Windows.Forms.BindingsCollection" returntype="System.Void" />
+        <method name="ClearCore" argnames="" returntype="System.Void" />
+        <method name="AddCore(System.Windows.Forms.Binding)" argnames="dataBinding" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Windows.Forms.Binding)" argnames="binding" returntype="System.Void" />
+        <method name="Add(System.String, System.Object, System.String)" argnames="propertyName, dataSource, dataMember" returntype="System.Windows.Forms.Binding" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.Binding)" argnames="binding" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" inherited="System.Windows.Forms.BindingsCollection" />
+    </class>
+    <class name="ControlEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ControlEventArgs(System.Windows.Forms.Control)" argnames="control" />
+        <property name="Control" propertytype="System.Windows.Forms.Control" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Label" namespace="System.Windows.Forms">
+        <constructor name="Label" argnames="" />
+        <property name="AutoSize" propertytype="System.Boolean" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="FlatStyle" propertytype="System.Windows.Forms.FlatStyle" />
+        <property name="Image" propertytype="System.Drawing.Image" />
+        <property name="ImageIndex" propertytype="System.Int32" />
+        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ImageAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="ImageBounds" propertytype="System.Drawing.Rectangle" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="OwnerDraw" propertytype="System.Boolean" />
+        <property name="PreferredHeight" propertytype="System.Int32" />
+        <property name="PreferredWidth" propertytype="System.Int32" />
+        <property name="RenderTransparent" propertytype="System.Boolean" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="UseMnemonic" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CalcImageRenderBounds(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="image, r, align" returntype="System.Drawing.Rectangle" />
+        <method name="DrawImage(System.Drawing.Graphics, System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="g, image, r, align" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AutoSizeChanged" />
+        <event name="TextAlignChanged" />
+        <event name="KeyUp" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ConvertEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ConvertEventArgs(System.Object, System.Type)" argnames="value, desiredType" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="DesiredType" propertytype="System.Type" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CreateParams" namespace="System.Windows.Forms">
+        <constructor name="CreateParams" argnames="" />
+        <property name="ClassName" propertytype="System.String" />
+        <property name="Caption" propertytype="System.String" />
+        <property name="Style" propertytype="System.Int32" />
+        <property name="ExStyle" propertytype="System.Int32" />
+        <property name="ClassStyle" propertytype="System.Int32" />
+        <property name="X" propertytype="System.Int32" />
+        <property name="Y" propertytype="System.Int32" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="Parent" propertytype="System.IntPtr" />
+        <property name="Param" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CurrencyManager" namespace="System.Windows.Forms">
+        <field name="listposition" />
+        <field name="finalType" />
+        <property name="AllowAdd" propertytype="System.Boolean" />
+        <property name="AllowEdit" propertytype="System.Boolean" />
+        <property name="AllowRemove" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Current" propertytype="System.Object" />
+        <property name="BindType" propertytype="System.Type" />
+        <property name="DataSource" propertytype="System.Object" />
+        <property name="IsBinding" propertytype="System.Boolean" />
+        <property name="List" propertytype="System.Collections.IList" />
+        <property name="Position" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Bindings" inherited="System.Windows.Forms.BindingManagerBase" propertytype="System.Windows.Forms.BindingsCollection" />
+        <method name="OnPositionChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnItemChanged(System.Windows.Forms.ItemChangedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="ResumeBinding" argnames="" returntype="System.Void" />
+        <method name="SuspendBinding" argnames="" returntype="System.Void" />
+        <method name="UpdateIsBinding" argnames="" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="AddNew" argnames="" returntype="System.Void" />
+        <method name="EndCurrentEdit" argnames="" returntype="System.Void" />
+        <method name="CancelCurrentEdit" argnames="" returntype="System.Void" />
+        <method name="GetItemProperties(System.Type, System.Int32, System.Collections.ArrayList, System.Collections.ArrayList)" argnames="listType, offset, dataSources, listAccessors" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetItemProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CheckEmpty" argnames="" returntype="System.Void" />
+        <method name="Refresh" argnames="" returntype="System.Void" />
+        <method name="PullData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
+        <method name="PushData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ItemChanged" />
+        <event name="CurrentChanged" inherited="System.Windows.Forms.BindingManagerBase" />
+        <event name="PositionChanged" inherited="System.Windows.Forms.BindingManagerBase" />
+    </class>
+    <class name="DataGrid" namespace="System.Windows.Forms">
+        <class name="HitTestInfo" namespace="System.Windows.Forms">
+            <field name="Nowhere" />
+            <property name="Column" propertytype="System.Int32" />
+            <property name="Row" propertytype="System.Int32" />
+            <property name="Type" propertytype="System.Windows.Forms.DataGrid+HitTestType" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+            <method name="ToString" argnames="" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <enum name="HitTestType" namespace="System.Windows.Forms">
+            <field name="None" />
+            <field name="Cell" />
+            <field name="ColumnHeader" />
+            <field name="RowHeader" />
+            <field name="ColumnResize" />
+            <field name="RowResize" />
+            <field name="Caption" />
+            <field name="ParentRows" />
+            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </enum>
+        <constructor name="HitTestType" argnames="" />
+        <property name="AllowSorting" propertytype="System.Boolean" />
+        <property name="AlternatingBackColor" propertytype="System.Drawing.Color" />
+        <property name="AlternatingBackBrush" propertytype="System.Drawing.Brush" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="BackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="ForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="BorderWidth" propertytype="System.Int32" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DefaultSelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultSelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultBackgroundBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultParentRowsForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultParentRowsBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultAlternatingBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultGridLineBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultHeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultHeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultHeaderForePen" propertytype="System.Drawing.Pen" />
+        <property name="DefaultLinkBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="ListHasErrors" propertytype="System.Boolean" />
+        <property name="Bound" propertytype="System.Boolean" />
+        <property name="Caption" propertytype="System.Windows.Forms.DataGridCaption" />
+        <property name="CaptionBackColor" propertytype="System.Drawing.Color" />
+        <property name="CaptionForeColor" propertytype="System.Drawing.Color" />
+        <property name="CaptionFont" propertytype="System.Drawing.Font" />
+        <property name="CaptionText" propertytype="System.String" />
+        <property name="CaptionVisible" propertytype="System.Boolean" />
+        <property name="CurrentCell" propertytype="System.Windows.Forms.DataGridCell" />
+        <property name="CurrentColumn" propertytype="System.Int32" />
+        <property name="CurrentRow" propertytype="System.Int32" />
+        <property name="SelectionBackColor" propertytype="System.Drawing.Color" />
+        <property name="SelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="SelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="SelectionForeColor" propertytype="System.Drawing.Color" />
+        <property name="DataGridRows" propertytype="System.Windows.Forms.DataGridRow[]" />
+        <property name="ToolTipProvider" propertytype="System.Windows.Forms.DataGridToolTip" />
+        <property name="ToolTipId" propertytype="System.Int32" />
+        <property name="DataGridRowsLength" propertytype="System.Int32" />
+        <property name="DataSource" propertytype="System.Object" />
+        <property name="DataMember" propertytype="System.String" />
+        <property name="ListManager" propertytype="System.Windows.Forms.CurrencyManager" />
+        <property name="CurrentRowIndex" propertytype="System.Int32" />
+        <property name="TableStyles" propertytype="System.Windows.Forms.GridTableStylesCollection" />
+        <property name="FontHeight" propertytype="System.Int32" />
+        <property name="ParentRowsAccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="ParentRowsBounds" propertytype="System.Drawing.Rectangle" />
+        <property name="GridLineColor" propertytype="System.Drawing.Color" />
+        <property name="GridLineBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="GridLineStyle" propertytype="System.Windows.Forms.DataGridLineStyle" />
+        <property name="GridLineWidth" propertytype="System.Int32" />
+        <property name="ParentRowsLabelStyle" propertytype="System.Windows.Forms.DataGridParentRowsLabelStyle" />
+        <property name="Initializing" propertytype="System.Boolean" />
+        <property name="FirstVisibleColumn" propertytype="System.Int32" />
+        <property name="FlatMode" propertytype="System.Boolean" />
+        <property name="HeaderBackColor" propertytype="System.Drawing.Color" />
+        <property name="HeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="BackgroundBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="BackgroundColor" propertytype="System.Drawing.Color" />
+        <property name="HeaderFont" propertytype="System.Drawing.Font" />
+        <property name="HeaderForeColor" propertytype="System.Drawing.Color" />
+        <property name="HeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="HeaderForePen" propertytype="System.Drawing.Pen" />
+        <property name="HorizontalOffset" propertytype="System.Int32" />
+        <property name="HorizScrollBar" propertytype="System.Windows.Forms.ScrollBar" />
+        <property name="LedgerStyle" propertytype="System.Boolean" />
+        <property name="LinkColor" propertytype="System.Drawing.Color" />
+        <property name="LinkBrush" propertytype="System.Drawing.Brush" />
+        <property name="LinkHoverColor" propertytype="System.Drawing.Color" />
+        <property name="LinkFont" propertytype="System.Drawing.Font" />
+        <property name="LinkFontHeight" propertytype="System.Int32" />
+        <property name="AllowNavigation" propertytype="System.Boolean" />
+        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="ParentRowsBackColor" propertytype="System.Drawing.Color" />
+        <property name="ParentRowsBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="ParentRowsForeColor" propertytype="System.Drawing.Color" />
+        <property name="ParentRowsForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="PreferredColumnWidth" propertytype="System.Int32" />
+        <property name="PreferredRowHeight" propertytype="System.Int32" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="ColumnHeadersVisible" propertytype="System.Boolean" />
+        <property name="ParentRowsVisible" propertytype="System.Boolean" />
+        <property name="RowHeadersVisible" propertytype="System.Boolean" />
+        <property name="RowHeaderWidth" propertytype="System.Int32" />
+        <property name="Text" propertytype="System.String" />
+        <property name="VertScrollBar" propertytype="System.Windows.Forms.ScrollBar" />
+        <property name="VisibleColumnCount" propertytype="System.Int32" />
+        <property name="VisibleRowCount" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32, System.Boolean)" argnames="gridColumn, rowNumber, shouldAbort" returntype="System.Boolean" />
+        <method name="BeginEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32)" argnames="gridColumn, rowNumber" returntype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="GetOutputTextDelimiter" argnames="" returntype="System.String" />
+        <method name="CancelEditing" argnames="" returntype="System.Void" />
+        <method name="CreateGridColumn(System.ComponentModel.PropertyDescriptor)" argnames="prop" returntype="System.Windows.Forms.DataGridColumnStyle" />
+        <method name="CreateGridColumn(System.ComponentModel.PropertyDescriptor, System.Boolean)" argnames="prop, isDefault" returntype="System.Windows.Forms.DataGridColumnStyle" />
+        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="GridVScrolled(System.Object, System.Windows.Forms.ScrollEventArgs)" argnames="sender, se" returntype="System.Void" />
+        <method name="GridHScrolled(System.Object, System.Windows.Forms.ScrollEventArgs)" argnames="sender, se" returntype="System.Void" />
+        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentRowsLabelStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentRowsVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAllowNavigationChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBackgroundColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnFlatModeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCurrentCellChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCaptionVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="ShouldSerializeParentRowsForeColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeParentRowsBackColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeLinkHoverColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeHeaderForeColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeBackgroundColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeHeaderBackColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeGridLineColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeSelectionForeColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeCaptionForeColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeCaptionBackColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeAlternatingBackColor" argnames="" returntype="System.Boolean" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="ebe" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="kpe" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="ke" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetAlternatingBackColor" argnames="" returntype="System.Void" />
+        <method name="ShouldSerializeSelectionBackColor" argnames="" returntype="System.Boolean" />
+        <method name="ResetSelectionBackColor" argnames="" returntype="System.Void" />
+        <method name="ResetSelectionForeColor" argnames="" returntype="System.Void" />
+        <method name="SetDataBinding(System.Object, System.String)" argnames="dataSource, dataMember" returntype="System.Void" />
+        <method name="ResetGridLineColor" argnames="" returntype="System.Void" />
+        <method name="ResetHeaderBackColor" argnames="" returntype="System.Void" />
+        <method name="ShouldSerializeHeaderFont" argnames="" returntype="System.Boolean" />
+        <method name="ResetHeaderFont" argnames="" returntype="System.Void" />
+        <method name="ResetHeaderForeColor" argnames="" returntype="System.Void" />
+        <method name="ResetLinkColor" argnames="" returntype="System.Void" />
+        <method name="ResetLinkHoverColor" argnames="" returntype="System.Void" />
+        <method name="ShouldSerializePreferredRowHeight" argnames="" returntype="System.Boolean" />
+        <method name="OnNavigate(System.Windows.Forms.NavigateEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnRowHeaderClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBackButtonClicked(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="OnShowParentDetailsButtonClicked(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="Collapse(System.Int32)" argnames="row" returntype="System.Void" />
+        <method name="Expand(System.Int32)" argnames="row" returntype="System.Void" />
+        <method name="GetCurrentCellBounds" argnames="" returntype="System.Drawing.Rectangle" />
+        <method name="GetCellBounds(System.Int32, System.Int32)" argnames="row, col" returntype="System.Drawing.Rectangle" />
+        <method name="GetCellBounds(System.Windows.Forms.DataGridCell)" argnames="dgc" returntype="System.Drawing.Rectangle" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.DataGrid+HitTestInfo" />
+        <method name="HitTest(System.Drawing.Point)" argnames="position" returntype="System.Windows.Forms.DataGrid+HitTestInfo" />
+        <method name="IsExpanded(System.Int32)" argnames="rowNumber" returntype="System.Boolean" />
+        <method name="IsSelected(System.Int32)" argnames="row" returntype="System.Boolean" />
+        <method name="NavigateBack" argnames="" returntype="System.Void" />
+        <method name="NavigateTo(System.Int32, System.String)" argnames="rowNumber, relationName" returntype="System.Void" />
+        <method name="ProcessGridKey(System.Windows.Forms.KeyEventArgs)" argnames="ke" returntype="System.Boolean" />
+        <method name="ProcessTabKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ResetSelection" argnames="" returntype="System.Void" />
+        <method name="Select(System.Int32)" argnames="row" returntype="System.Void" />
+        <method name="SubObjectsSiteChange(System.Boolean)" argnames="site" returntype="System.Void" />
+        <method name="UnSelect(System.Int32)" argnames="row" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BorderStyleChanged" />
+        <event name="CaptionVisibleChanged" />
+        <event name="CurrentCellChanged" />
+        <event name="DataSourceChanged" />
+        <event name="ParentRowsLabelStyleChanged" />
+        <event name="FlatModeChanged" />
+        <event name="BackgroundColorChanged" />
+        <event name="AllowNavigationChanged" />
+        <event name="ReadOnlyChanged" />
+        <event name="ParentRowsVisibleChanged" />
+        <event name="Navigate" />
+        <event name="RowHeaderClick" />
+        <event name="Scroll" />
+        <event name="BackButtonClick" />
+        <event name="ShowParentDetailsButtonClick" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="HitTestInfo" namespace="System.Windows.Forms">
+        <field name="Nowhere" />
+        <property name="Column" propertytype="System.Int32" />
+        <property name="Row" propertytype="System.Int32" />
+        <property name="Type" propertytype="System.Windows.Forms.DataGrid+HitTestType" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CursorConverter" namespace="System.Windows.Forms">
+        <constructor name="CursorConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Cursors" namespace="System.Windows.Forms">
+        <property name="AppStarting" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Arrow" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Cross" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Default" propertytype="System.Windows.Forms.Cursor" />
+        <property name="IBeam" propertytype="System.Windows.Forms.Cursor" />
+        <property name="No" propertytype="System.Windows.Forms.Cursor" />
+        <property name="SizeAll" propertytype="System.Windows.Forms.Cursor" />
+        <property name="SizeNESW" propertytype="System.Windows.Forms.Cursor" />
+        <property name="SizeNS" propertytype="System.Windows.Forms.Cursor" />
+        <property name="SizeNWSE" propertytype="System.Windows.Forms.Cursor" />
+        <property name="SizeWE" propertytype="System.Windows.Forms.Cursor" />
+        <property name="UpArrow" propertytype="System.Windows.Forms.Cursor" />
+        <property name="WaitCursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Help" propertytype="System.Windows.Forms.Cursor" />
+        <property name="HSplit" propertytype="System.Windows.Forms.Cursor" />
+        <property name="VSplit" propertytype="System.Windows.Forms.Cursor" />
+        <property name="NoMove2D" propertytype="System.Windows.Forms.Cursor" />
+        <property name="NoMoveHoriz" propertytype="System.Windows.Forms.Cursor" />
+        <property name="NoMoveVert" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanEast" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanNE" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanNorth" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanNW" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanSE" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanSouth" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanSW" propertytype="System.Windows.Forms.Cursor" />
+        <property name="PanWest" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Hand" propertytype="System.Windows.Forms.Cursor" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataFormats" namespace="System.Windows.Forms">
+        <class name="Format" namespace="System.Windows.Forms">
+            <constructor name="Format(System.String, System.Int32)" argnames="name, id" />
+            <property name="Name" propertytype="System.String" />
+            <property name="Id" propertytype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <field name="Text" />
+        <field name="UnicodeText" />
+        <field name="Dib" />
+        <field name="Bitmap" />
+        <field name="EnhancedMetafile" />
+        <field name="MetafilePict" />
+        <field name="SymbolicLink" />
+        <field name="Dif" />
+        <field name="Tiff" />
+        <field name="OemText" />
+        <field name="Palette" />
+        <field name="PenData" />
+        <field name="Riff" />
+        <field name="WaveAudio" />
+        <field name="FileDrop" />
+        <field name="Locale" />
+        <field name="Html" />
+        <field name="Rtf" />
+        <field name="CommaSeparatedValue" />
+        <field name="StringFormat" />
+        <field name="Serializable" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetFormat(System.String)" argnames="format" returntype="System.Windows.Forms.DataFormats+Format" />
+        <method name="GetFormat(System.Int32)" argnames="id" returntype="System.Windows.Forms.DataFormats+Format" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Format" namespace="System.Windows.Forms">
+        <constructor name="Format(System.String, System.Int32)" argnames="name, id" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Id" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LinkLabel" namespace="System.Windows.Forms">
+        <class name="LinkCollection" namespace="System.Windows.Forms">
+            <constructor name="LinkCollection(System.Windows.Forms.LinkLabel)" argnames="owner" />
+            <property name="Item" propertytype="System.Windows.Forms.LinkLabel+Link" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Int32, System.Int32)" argnames="start, length" returntype="System.Windows.Forms.LinkLabel+Link" />
+            <method name="Add(System.Int32, System.Int32, System.Object)" argnames="start, length, linkData" returntype="System.Windows.Forms.LinkLabel+Link" />
+            <method name="Contains(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Int32" />
+            <method name="Remove(System.Windows.Forms.LinkLabel.Link)" argnames="value" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="Link" namespace="System.Windows.Forms">
+            <property name="Enabled" propertytype="System.Boolean" />
+            <property name="Length" propertytype="System.Int32" />
+            <property name="LinkData" propertytype="System.Object" />
+            <property name="State" propertytype="System.Windows.Forms.LinkState" />
+            <property name="Start" propertytype="System.Int32" />
+            <property name="Visited" propertytype="System.Boolean" />
+            <property name="VisualRegion" propertytype="System.Drawing.Region" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="Link" argnames="" />
+        <property name="ActiveLinkColor" propertytype="System.Drawing.Color" />
+        <property name="DisabledLinkColor" propertytype="System.Drawing.Color" />
+        <property name="FocusLink" propertytype="System.Windows.Forms.LinkLabel+Link" />
+        <property name="IELinkColor" propertytype="System.Drawing.Color" />
+        <property name="IEActiveLinkColor" propertytype="System.Drawing.Color" />
+        <property name="IEVisitedLinkColor" propertytype="System.Drawing.Color" />
+        <property name="IEDisabledLinkColor" propertytype="System.Drawing.Color" />
+        <property name="LinkArea" propertytype="System.Windows.Forms.LinkArea" />
+        <property name="LinkBehavior" propertytype="System.Windows.Forms.LinkBehavior" />
+        <property name="LinkColor" propertytype="System.Drawing.Color" />
+        <property name="Links" propertytype="System.Windows.Forms.LinkLabel+LinkCollection" />
+        <property name="LinkVisited" propertytype="System.Boolean" />
+        <property name="OwnerDraw" propertytype="System.Boolean" />
+        <property name="OverrideCursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Text" propertytype="System.String" />
+        <property name="VisitedLinkColor" propertytype="System.Drawing.Color" />
+        <property name="AutoSize" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.Size" />
+        <property name="FlatStyle" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.FlatStyle" />
+        <property name="Image" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.Image" />
+        <property name="ImageIndex" inherited="System.Windows.Forms.Label" propertytype="System.Int32" />
+        <property name="ImageList" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ImageAlign" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.ContentAlignment" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Label" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="PreferredHeight" inherited="System.Windows.Forms.Label" propertytype="System.Int32" />
+        <property name="PreferredWidth" inherited="System.Windows.Forms.Label" propertytype="System.Int32" />
+        <property name="RenderTransparent" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
+        <property name="TabStop" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
+        <property name="TextAlign" inherited="System.Windows.Forms.Label" propertytype="System.Drawing.ContentAlignment" />
+        <property name="UseMnemonic" inherited="System.Windows.Forms.Label" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnLinkClicked(System.Windows.Forms.LinkLabelLinkClickedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextAlignChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Label" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Label" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Label" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Label" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Label" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Label" returntype="System.String" />
+        <method name="PointInLink(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.LinkLabel+Link" />
+        <method name="CalcImageRenderBounds(System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="image, r, align" inherited="System.Windows.Forms.Label" returntype="System.Drawing.Rectangle" />
+        <method name="DrawImage(System.Drawing.Graphics, System.Drawing.Image, System.Drawing.Rectangle, System.Drawing.ContentAlignment)" argnames="g, image, r, align" inherited="System.Windows.Forms.Label" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="LinkClicked" />
+        <event name="AutoSizeChanged" inherited="System.Windows.Forms.Label" />
+        <event name="TextAlignChanged" inherited="System.Windows.Forms.Label" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Label" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Label" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Label" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="LinkCollection" namespace="System.Windows.Forms">
+        <constructor name="LinkCollection(System.Windows.Forms.LinkLabel)" argnames="owner" />
+        <property name="Item" propertytype="System.Windows.Forms.LinkLabel+Link" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Int32, System.Int32)" argnames="start, length" returntype="System.Windows.Forms.LinkLabel+Link" />
+        <method name="Add(System.Int32, System.Int32, System.Object)" argnames="start, length, linkData" returntype="System.Windows.Forms.LinkLabel+Link" />
+        <method name="Contains(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.LinkLabel.Link)" argnames="link" returntype="System.Int32" />
+        <method name="Remove(System.Windows.Forms.LinkLabel.Link)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Link" namespace="System.Windows.Forms">
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int32" />
+        <property name="LinkData" propertytype="System.Object" />
+        <property name="State" propertytype="System.Windows.Forms.LinkState" />
+        <property name="Start" propertytype="System.Int32" />
+        <property name="Visited" propertytype="System.Boolean" />
+        <property name="VisualRegion" propertytype="System.Drawing.Region" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataGridColumnStyle" namespace="System.Windows.Forms">
+        <constructor name="DataGridColumnStyle" argnames="" />
+        <constructor name="DataGridColumnStyle(System.ComponentModel.PropertyDescriptor)" argnames="prop" />
+        <property name="Alignment" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="HeaderAccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <property name="DataGridTableStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
+        <property name="FontHeight" propertytype="System.Int32" />
+        <property name="HeaderText" propertytype="System.String" />
+        <property name="MappingName" propertytype="System.String" />
+        <property name="NullText" propertytype="System.String" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="WantArrows" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invalidate" argnames="" returntype="System.Void" />
+        <method name="SetDataGridInColumn(System.Windows.Forms.DataGrid)" argnames="value" returntype="System.Void" />
+        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="value" returntype="System.Void" />
+        <method name="CreateHeaderAccessibleObject" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetHeaderText" argnames="" returntype="System.Void" />
+        <method name="BeginUpdate" argnames="" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" returntype="System.Void" />
+        <method name="CheckValidDataSource(System.Windows.Forms.CurrencyManager)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AlignmentChanged" />
+        <event name="PropertyDescriptorChanged" />
+        <event name="FontChanged" />
+        <event name="HeaderTextChanged" />
+        <event name="MappingNameChanged" />
+        <event name="NullTextChanged" />
+        <event name="ReadOnlyChanged" />
+        <event name="WidthChanged" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DataGridBoolColumn" namespace="System.Windows.Forms">
+        <constructor name="DataGridBoolColumn" argnames="" />
+        <constructor name="DataGridBoolColumn(System.ComponentModel.PropertyDescriptor)" argnames="prop" />
+        <constructor name="DataGridBoolColumn(System.ComponentModel.PropertyDescriptor, System.Boolean)" argnames="prop, isDefault" />
+        <property name="TrueValue" propertytype="System.Object" />
+        <property name="FalseValue" propertytype="System.Object" />
+        <property name="NullValue" propertytype="System.Object" />
+        <property name="AllowNull" propertytype="System.Boolean" />
+        <property name="Alignment" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="HeaderAccessibleObject" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="PropertyDescriptor" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <property name="DataGridTableStyle" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
+        <property name="FontHeight" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
+        <property name="HeaderText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
+        <property name="MappingName" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
+        <property name="NullText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
+        <property name="ReadOnly" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="SetDataGridInColumn(System.Windows.Forms.DataGrid)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="CreateHeaderAccessibleObject" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetHeaderText" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="CheckValidDataSource(System.Windows.Forms.CurrencyManager)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="TrueValueChanged" />
+        <event name="FalseValueChanged" />
+        <event name="AllowNullChanged" />
+        <event name="AlignmentChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="PropertyDescriptorChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="FontChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="HeaderTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="MappingNameChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="NullTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="WidthChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="GridColumnStylesCollection" namespace="System.Windows.Forms">
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <property name="Item" propertytype="System.Windows.Forms.DataGridColumnStyle" />
+        <property name="Item" propertytype="System.Windows.Forms.DataGridColumnStyle" />
+        <property name="Item" propertytype="System.Windows.Forms.DataGridColumnStyle" />
+        <property name="DataGridTableStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
+        <property name="Count" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
+        <method name="Add(System.Windows.Forms.DataGridColumnStyle)" argnames="column" returntype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddRange(System.Windows.Forms.DataGridColumnStyle[])" argnames="columns" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.ComponentModel.PropertyDescriptor)" argnames="propDesc" returntype="System.Boolean" />
+        <method name="Contains(System.Windows.Forms.DataGridColumnStyle)" argnames="column" returntype="System.Boolean" />
+        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.DataGridColumnStyle)" argnames="element" returntype="System.Int32" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.DataGridColumnStyle)" argnames="column" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="ResetPropertyDescriptors" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+    </class>
+    <class name="DataGridPreferredColumnWidthTypeConverter" namespace="System.Windows.Forms">
+        <constructor name="DataGridPreferredColumnWidthTypeConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataGridTableStyle" namespace="System.Windows.Forms">
+        <constructor name="DataGridTableStyle(System.Boolean)" argnames="isDefaultTableStyle" />
+        <constructor name="DataGridTableStyle" argnames="" />
+        <constructor name="DataGridTableStyle(System.Windows.Forms.CurrencyManager)" argnames="listManager" />
+        <field name="DefaultTableStyle" />
+        <property name="AllowSorting" propertytype="System.Boolean" />
+        <property name="AlternatingBackColor" propertytype="System.Drawing.Color" />
+        <property name="AlternatingBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="BackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BorderWidth" propertytype="System.Int32" />
+        <property name="DefaultAlternatingBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultGridLineBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultHeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultHeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultHeaderForePen" propertytype="System.Drawing.Pen" />
+        <property name="DefaultLinkBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultSelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="DefaultSelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="FocusedRelation" propertytype="System.Int32" />
+        <property name="FocusedTextWidth" propertytype="System.Int32" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="ForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="GridLineColor" propertytype="System.Drawing.Color" />
+        <property name="GridLineBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="GridLineWidth" propertytype="System.Int32" />
+        <property name="GridLineStyle" propertytype="System.Windows.Forms.DataGridLineStyle" />
+        <property name="HeaderBackColor" propertytype="System.Drawing.Color" />
+        <property name="HeaderBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="HeaderFont" propertytype="System.Drawing.Font" />
+        <property name="HeaderForeColor" propertytype="System.Drawing.Color" />
+        <property name="HeaderForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="HeaderForePen" propertytype="System.Drawing.Pen" />
+        <property name="LinkColor" propertytype="System.Drawing.Color" />
+        <property name="LinkBrush" propertytype="System.Drawing.Brush" />
+        <property name="LinkHoverColor" propertytype="System.Drawing.Color" />
+        <property name="RelationshipRect" propertytype="System.Drawing.Rectangle" />
+        <property name="RelationshipHeight" propertytype="System.Int32" />
+        <property name="PreferredColumnWidth" propertytype="System.Int32" />
+        <property name="PreferredRowHeight" propertytype="System.Int32" />
+        <property name="ColumnHeadersVisible" propertytype="System.Boolean" />
+        <property name="RowHeadersVisible" propertytype="System.Boolean" />
+        <property name="RowHeaderWidth" propertytype="System.Int32" />
+        <property name="SelectionBackColor" propertytype="System.Drawing.Color" />
+        <property name="SelectionBackBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="SelectionForeBrush" propertytype="System.Drawing.SolidBrush" />
+        <property name="SelectionForeColor" propertytype="System.Drawing.Color" />
+        <property name="MappingName" propertytype="System.String" />
+        <property name="RelationsList" propertytype="System.Collections.ArrayList" />
+        <property name="GridColumnStyles" propertytype="System.Windows.Forms.GridColumnStylesCollection" />
+        <property name="DataGrid" propertytype="System.Windows.Forms.DataGrid" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="IsDefault" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32, System.Boolean)" argnames="gridColumn, rowNumber, shouldAbort" returntype="System.Boolean" />
+        <method name="BeginEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32)" argnames="gridColumn, rowNumber" returntype="System.Boolean" />
+        <method name="OnSelectionBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSelectionForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnRowHeaderWidthChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnRowHeadersVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnColumnHeadersVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnPreferredColumnWidthChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnPreferredRowHeightChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLinkHoverColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLinkColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHeaderForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHeaderFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHeaderBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnGridLineStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnGridLineColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAllowSortingChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAlternatingBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMappingNameChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="ShouldSerializeSelectionForeColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeLinkHoverColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeLinkColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeHeaderForeColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeHeaderBackColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeGridLineColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeAlternatingBackColor" argnames="" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetAlternatingBackColor" argnames="" returntype="System.Void" />
+        <method name="ShouldSerializeBackColor" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeForeColor" argnames="" returntype="System.Boolean" />
+        <method name="ResetBackColor" argnames="" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" returntype="System.Void" />
+        <method name="ResetGridLineColor" argnames="" returntype="System.Void" />
+        <method name="ResetHeaderBackColor" argnames="" returntype="System.Void" />
+        <method name="ResetHeaderFont" argnames="" returntype="System.Void" />
+        <method name="ResetHeaderForeColor" argnames="" returntype="System.Void" />
+        <method name="ResetLinkColor" argnames="" returntype="System.Void" />
+        <method name="ResetLinkHoverColor" argnames="" returntype="System.Void" />
+        <method name="ShouldSerializePreferredRowHeight" argnames="" returntype="System.Boolean" />
+        <method name="ShouldSerializeSelectionBackColor" argnames="" returntype="System.Boolean" />
+        <method name="ResetSelectionBackColor" argnames="" returntype="System.Void" />
+        <method name="ResetSelectionForeColor" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AllowSortingChanged" />
+        <event name="AlternatingBackColorChanged" />
+        <event name="BackColorChanged" />
+        <event name="ForeColorChanged" />
+        <event name="GridLineColorChanged" />
+        <event name="GridLineStyleChanged" />
+        <event name="HeaderBackColorChanged" />
+        <event name="HeaderFontChanged" />
+        <event name="HeaderForeColorChanged" />
+        <event name="LinkColorChanged" />
+        <event name="LinkHoverColorChanged" />
+        <event name="PreferredColumnWidthChanged" />
+        <event name="PreferredRowHeightChanged" />
+        <event name="ColumnHeadersVisibleChanged" />
+        <event name="RowHeadersVisibleChanged" />
+        <event name="RowHeaderWidthChanged" />
+        <event name="SelectionBackColorChanged" />
+        <event name="SelectionForeColorChanged" />
+        <event name="MappingNameChanged" />
+        <event name="ReadOnlyChanged" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="GridTableStylesCollection" namespace="System.Windows.Forms">
+        <property name="List" propertytype="System.Collections.ArrayList" />
+        <property name="Item" propertytype="System.Windows.Forms.DataGridTableStyle" />
+        <property name="Item" propertytype="System.Windows.Forms.DataGridTableStyle" />
+        <property name="Count" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="IsSynchronized" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Boolean" />
+        <property name="SyncRoot" inherited="System.Windows.Forms.BaseCollection" propertytype="System.Object" />
+        <method name="AddRange(System.Windows.Forms.DataGridTableStyle[])" argnames="tables" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.DataGridTableStyle)" argnames="table" returntype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.BaseCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="ar, index" inherited="System.Windows.Forms.BaseCollection" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.DataGridTableStyle)" argnames="table" returntype="System.Boolean" />
+        <method name="Contains(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.DataGridTableStyle)" argnames="table" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+    </class>
+    <class name="GridTablesFactory" namespace="System.Windows.Forms">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateGridTables(System.Windows.Forms.DataGridTableStyle, System.Object, System.String, System.Windows.Forms.BindingContext)" argnames="gridTable, dataSource, dataMember, bindingManager" returntype="System.Windows.Forms.DataGridTableStyle[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListControl" namespace="System.Windows.Forms">
+        <constructor name="ListControl" argnames="" />
+        <property name="DataSource" propertytype="System.Object" />
+        <property name="DataManager" propertytype="System.Windows.Forms.CurrencyManager" />
+        <property name="DisplayMember" propertytype="System.String" />
+        <property name="ValueMember" propertytype="System.String" />
+        <property name="SelectedIndex" propertytype="System.Int32" />
+        <property name="SelectedValue" propertytype="System.Object" />
+        <property name="BindingFieldEmpty" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="SetItemsCore(System.Collections.IList)" argnames="items" returntype="System.Void" />
+        <method name="RefreshItem(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="FilterItemOnProperty(System.Object)" argnames="item" returntype="System.Object" />
+        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" returntype="System.Object" />
+        <method name="GetItemText(System.Object)" argnames="item" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="DataSourceChanged" />
+        <event name="DisplayMemberChanged" />
+        <event name="ValueMemberChanged" />
+        <event name="SelectedValueChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ListBox" namespace="System.Windows.Forms">
+        <class name="ObjectCollection" namespace="System.Windows.Forms">
+            <constructor name="ObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
+            <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Windows.Forms.ListBox.ObjectCollection)" argnames="owner, value" />
+            <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Object[])" argnames="owner, value" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Object" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+            <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+            <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
+            <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" returntype="System.Void" />
+            <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
+            <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
+            <constructor name="SelectedIndexCollection(System.Windows.Forms.ListBox)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Int32" />
+            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
+            <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="SelectedObjectCollection" namespace="System.Windows.Forms">
+            <constructor name="SelectedObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Object" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="IndexOf(System.Object)" argnames="selectedObject" returntype="System.Int32" />
+            <method name="Contains(System.Object)" argnames="selectedObject" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="SelectedObjectCollection" argnames="" />
+        <field name="NoMatches" />
+        <field name="DefaultItemHeight" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="ColumnWidth" propertytype="System.Int32" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DrawMode" propertytype="System.Windows.Forms.DrawMode" />
+        <property name="FocusedIndex" propertytype="System.Int32" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="HorizontalExtent" propertytype="System.Int32" />
+        <property name="HorizontalScrollbar" propertytype="System.Boolean" />
+        <property name="IntegralHeight" propertytype="System.Boolean" />
+        <property name="ItemHeight" propertytype="System.Int32" />
+        <property name="Items" propertytype="System.Windows.Forms.ListBox+ObjectCollection" />
+        <property name="MaxItemWidth" propertytype="System.Int32" />
+        <property name="MultiColumn" propertytype="System.Boolean" />
+        <property name="PreferredHeight" propertytype="System.Int32" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="RunningOnWin2K" propertytype="System.Boolean" />
+        <property name="ScrollAlwaysVisible" propertytype="System.Boolean" />
+        <property name="SelectedIndex" propertytype="System.Int32" />
+        <property name="SelectedIndices" propertytype="System.Windows.Forms.ListBox+SelectedIndexCollection" />
+        <property name="SelectedItem" propertytype="System.Object" />
+        <property name="SelectedItems" propertytype="System.Windows.Forms.ListBox+SelectedObjectCollection" />
+        <property name="SelectionMode" propertytype="System.Windows.Forms.SelectionMode" />
+        <property name="Sorted" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TopIndex" propertytype="System.Int32" />
+        <property name="UseTabStops" propertytype="System.Boolean" />
+        <property name="DataSource" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
+        <property name="DataManager" inherited="System.Windows.Forms.ListControl" propertytype="System.Windows.Forms.CurrencyManager" />
+        <property name="DisplayMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
+        <property name="ValueMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
+        <property name="SelectedValue" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="WmReflectCommand(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="Sort" argnames="" returntype="System.Void" />
+        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="CreateItemCollection" argnames="" returntype="System.Windows.Forms.ListBox+ObjectCollection" />
+        <method name="AddItemsCore(System.Object[])" argnames="value" returntype="System.Void" />
+        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="SetItemsCore(System.Collections.IList)" argnames="value" returntype="System.Void" />
+        <method name="RefreshItem(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ListControl" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="BeginUpdate" argnames="" returntype="System.Void" />
+        <method name="ClearSelected" argnames="" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" returntype="System.Void" />
+        <method name="FindString(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="FindString(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
+        <method name="FindStringExact(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="FindStringExact(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
+        <method name="GetItemHeight(System.Int32)" argnames="index" returntype="System.Int32" />
+        <method name="GetItemRectangle(System.Int32)" argnames="index" returntype="System.Drawing.Rectangle" />
+        <method name="GetSelected(System.Int32)" argnames="index" returntype="System.Boolean" />
+        <method name="IndexFromPoint(System.Drawing.Point)" argnames="p" returntype="System.Int32" />
+        <method name="IndexFromPoint(System.Int32, System.Int32)" argnames="x, y" returntype="System.Int32" />
+        <method name="SetSelected(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Void" />
+        <method name="FilterItemOnProperty(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
+        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
+        <method name="GetItemText(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" />
+        <event name="Paint" />
+        <event name="DrawItem" />
+        <event name="MeasureItem" />
+        <event name="SelectedIndexChanged" />
+        <event name="DataSourceChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="DisplayMemberChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="ValueMemberChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="SelectedValueChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ObjectCollection" namespace="System.Windows.Forms">
+        <constructor name="ObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
+        <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Windows.Forms.ListBox.ObjectCollection)" argnames="owner, value" />
+        <constructor name="ObjectCollection(System.Windows.Forms.ListBox, System.Object[])" argnames="owner, value" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
+        <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
+        <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
+        <constructor name="SelectedIndexCollection(System.Windows.Forms.ListBox)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Int32" />
+        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
+        <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SelectedObjectCollection" namespace="System.Windows.Forms">
+        <constructor name="SelectedObjectCollection(System.Windows.Forms.ListBox)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="selectedObject" returntype="System.Int32" />
+        <method name="Contains(System.Object)" argnames="selectedObject" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DataGridTextBoxColumn" namespace="System.Windows.Forms">
+        <constructor name="DataGridTextBoxColumn" argnames="" />
+        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor)" argnames="prop" />
+        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor, System.String)" argnames="prop, format" />
+        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor, System.String, System.Boolean)" argnames="prop, format, isDefault" />
+        <constructor name="DataGridTextBoxColumn(System.ComponentModel.PropertyDescriptor, System.Boolean)" argnames="prop, isDefault" />
+        <property name="TextBox" propertytype="System.Windows.Forms.TextBox" />
+        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <property name="Format" propertytype="System.String" />
+        <property name="FormatInfo" propertytype="System.IFormatProvider" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="Alignment" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="HeaderAccessibleObject" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="DataGridTableStyle" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Windows.Forms.DataGridTableStyle" />
+        <property name="FontHeight" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
+        <property name="HeaderText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
+        <property name="MappingName" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
+        <property name="NullText" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.String" />
+        <property name="Width" inherited="System.Windows.Forms.DataGridColumnStyle" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="SetDataGridInColumn(System.Windows.Forms.DataGrid)" argnames="value" returntype="System.Void" />
+        <method name="SetDataGrid(System.Windows.Forms.DataGrid)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="CreateHeaderAccessibleObject" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="HideEditBox" argnames="" returntype="System.Void" />
+        <method name="EndEdit" argnames="" returntype="System.Void" />
+        <method name="PaintText(System.Drawing.Graphics, System.Drawing.Rectangle, System.String, System.Boolean)" argnames="g, bounds, text, alignToRight" returntype="System.Void" />
+        <method name="PaintText(System.Drawing.Graphics, System.Drawing.Rectangle, System.String, System.Drawing.Brush, System.Drawing.Brush, System.Boolean)" argnames="g, textBounds, text, backBrush, foreBrush, alignToRight" returntype="System.Void" />
+        <method name="ResetHeaderText" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="CheckValidDataSource(System.Windows.Forms.CurrencyManager)" argnames="value" inherited="System.Windows.Forms.DataGridColumnStyle" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AlignmentChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="PropertyDescriptorChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="FontChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="HeaderTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="MappingNameChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="NullTextChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="WidthChanged" inherited="System.Windows.Forms.DataGridColumnStyle" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="DataObject" namespace="System.Windows.Forms">
+        <constructor name="DataObject" argnames="" />
+        <constructor name="DataObject(System.Object)" argnames="data" />
+        <constructor name="DataObject(System.String, System.Object)" argnames="format, data" />
+        <method name="GetFormats" argnames="" returntype="System.String[]" />
+        <method name="GetFormats(System.Boolean)" argnames="autoConvert" returntype="System.String[]" />
+        <method name="GetDataPresent(System.Type)" argnames="format" returntype="System.Boolean" />
+        <method name="GetDataPresent(System.String)" argnames="format" returntype="System.Boolean" />
+        <method name="GetDataPresent(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Boolean" />
+        <method name="SetData(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="SetData(System.Type, System.Object)" argnames="format, data" returntype="System.Void" />
+        <method name="SetData(System.String, System.Object)" argnames="format, data" returntype="System.Void" />
+        <method name="SetData(System.String, System.Boolean, System.Object)" argnames="format, autoConvert, data" returntype="System.Void" />
+        <method name="GetData(System.Type)" argnames="format" returntype="System.Object" />
+        <method name="GetData(System.String)" argnames="format" returntype="System.Object" />
+        <method name="GetData(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DateBoldEventArgs" namespace="System.Windows.Forms">
+        <property name="StartDate" propertytype="System.DateTime" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="DaysToBold" propertytype="System.Int32[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DateRangeEventArgs" namespace="System.Windows.Forms">
+        <constructor name="DateRangeEventArgs(System.DateTime, System.DateTime)" argnames="start, end" />
+        <property name="Start" propertytype="System.DateTime" />
+        <property name="End" propertytype="System.DateTime" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListView" namespace="System.Windows.Forms">
+        <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
+            <constructor name="CheckedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IndicesArray" propertytype="System.Int32[]" />
+            <property name="Item" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Int32)" argnames="checkedIndex" returntype="System.Boolean" />
+            <method name="IndexOf(System.Int32)" argnames="checkedIndex" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="CheckedListViewItemCollection" namespace="System.Windows.Forms">
+            <constructor name="CheckedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="ItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
+            <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
+            <constructor name="SelectedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IndicesArray" propertytype="System.Int32[]" />
+            <property name="Item" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
+            <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="SelectedListViewItemCollection" namespace="System.Windows.Forms">
+            <constructor name="SelectedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
+            <property name="SelectedItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="ColumnHeaderCollection" namespace="System.Windows.Forms">
+            <constructor name="ColumnHeaderCollection(System.Windows.Forms.ListView)" argnames="owner" />
+            <property name="Item" propertytype="System.Windows.Forms.ColumnHeader" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.ColumnHeader)" argnames="column" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.ColumnHeader[])" argnames="values" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
+            <method name="Add(System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="str, width, textAlign" returntype="System.Windows.Forms.ColumnHeader" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
+            <method name="Insert(System.Int32, System.Windows.Forms.ColumnHeader)" argnames="index, value" returntype="System.Void" />
+            <method name="Insert(System.Int32, System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="index, str, width, textAlign" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="ListViewItemCollection" namespace="System.Windows.Forms">
+            <constructor name="ListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.ListViewItem)" argnames="value" returntype="System.Windows.Forms.ListViewItem" />
+            <method name="Add(System.String, System.Int32)" argnames="text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
+            <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="AddRange(System.Windows.Forms.ListViewItem[])" argnames="values" returntype="System.Void" />
+            <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
+            <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem)" argnames="index, item" returntype="System.Windows.Forms.ListViewItem" />
+            <method name="Insert(System.Int32, System.String)" argnames="index, text" returntype="System.Windows.Forms.ListViewItem" />
+            <method name="Insert(System.Int32, System.String, System.Int32)" argnames="index, text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ListViewItemCollection" argnames="" />
+        <property name="Activation" propertytype="System.Windows.Forms.ItemActivation" />
+        <property name="Alignment" propertytype="System.Windows.Forms.ListViewAlignment" />
+        <property name="AllowColumnReorder" propertytype="System.Boolean" />
+        <property name="AutoArrange" propertytype="System.Boolean" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CheckBoxes" propertytype="System.Boolean" />
+        <property name="CheckedIndices" propertytype="System.Windows.Forms.ListView+CheckedIndexCollection" />
+        <property name="CheckedItems" propertytype="System.Windows.Forms.ListView+CheckedListViewItemCollection" />
+        <property name="Columns" propertytype="System.Windows.Forms.ListView+ColumnHeaderCollection" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="FocusedItem" propertytype="System.Windows.Forms.ListViewItem" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="FullRowSelect" propertytype="System.Boolean" />
+        <property name="HeaderStyle" propertytype="System.Windows.Forms.ColumnHeaderStyle" />
+        <property name="GridLines" propertytype="System.Boolean" />
+        <property name="HideSelection" propertytype="System.Boolean" />
+        <property name="HoverSelection" propertytype="System.Boolean" />
+        <property name="LabelEdit" propertytype="System.Boolean" />
+        <property name="LabelWrap" propertytype="System.Boolean" />
+        <property name="LargeImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="Items" propertytype="System.Windows.Forms.ListView+ListViewItemCollection" />
+        <property name="ListViewItemSorter" propertytype="System.Collections.IComparer" />
+        <property name="MultiSelect" propertytype="System.Boolean" />
+        <property name="Scrollable" propertytype="System.Boolean" />
+        <property name="SelectedIndices" propertytype="System.Windows.Forms.ListView+SelectedIndexCollection" />
+        <property name="SelectedItems" propertytype="System.Windows.Forms.ListView+SelectedListViewItemCollection" />
+        <property name="SmallImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="Sorting" propertytype="System.Windows.Forms.SortOrder" />
+        <property name="StateImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TopItem" propertytype="System.Windows.Forms.ListViewItem" />
+        <property name="View" propertytype="System.Windows.Forms.View" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnItemCheck(System.Windows.Forms.ItemCheckEventArgs)" argnames="ice" returntype="System.Void" />
+        <method name="OnItemActivate(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnColumnClick(System.Windows.Forms.ColumnClickEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBeforeLabelEdit(System.Windows.Forms.LabelEditEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAfterLabelEdit(System.Windows.Forms.LabelEditEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ArrangeIcons(System.Windows.Forms.ListViewAlignment)" argnames="value" returntype="System.Void" />
+        <method name="ArrangeIcons" argnames="" returntype="System.Void" />
+        <method name="BeginUpdate" argnames="" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" returntype="System.Void" />
+        <method name="EnsureVisible(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="GetItemAt(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.ListViewItem" />
+        <method name="GetItemRect(System.Int32)" argnames="index" returntype="System.Drawing.Rectangle" />
+        <method name="GetItemRect(System.Int32, System.Windows.Forms.ItemBoundsPortion)" argnames="index, portion" returntype="System.Drawing.Rectangle" />
+        <method name="RealizeProperties" argnames="" returntype="System.Void" />
+        <method name="Sort" argnames="" returntype="System.Void" />
+        <method name="UpdateExtendedStyles" argnames="" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AfterLabelEdit" />
+        <event name="BeforeLabelEdit" />
+        <event name="ColumnClick" />
+        <event name="ItemActivate" />
+        <event name="ItemCheck" />
+        <event name="ItemDrag" />
+        <event name="SelectedIndexChanged" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
+        <constructor name="CheckedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IndicesArray" propertytype="System.Int32[]" />
+        <property name="Item" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Int32)" argnames="checkedIndex" returntype="System.Boolean" />
+        <method name="IndexOf(System.Int32)" argnames="checkedIndex" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CheckedListViewItemCollection" namespace="System.Windows.Forms">
+        <constructor name="CheckedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="ItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
+        <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SelectedIndexCollection" namespace="System.Windows.Forms">
+        <constructor name="SelectedIndexCollection(System.Windows.Forms.ListView)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IndicesArray" propertytype="System.Int32[]" />
+        <property name="Item" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Int32)" argnames="selectedIndex" returntype="System.Boolean" />
+        <method name="IndexOf(System.Int32)" argnames="selectedIndex" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SelectedListViewItemCollection" namespace="System.Windows.Forms">
+        <constructor name="SelectedListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
+        <property name="SelectedItemArray" propertytype="System.Windows.Forms.ListViewItem[]" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColumnHeaderCollection" namespace="System.Windows.Forms">
+        <constructor name="ColumnHeaderCollection(System.Windows.Forms.ListView)" argnames="owner" />
+        <property name="Item" propertytype="System.Windows.Forms.ColumnHeader" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.ColumnHeader)" argnames="column" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.ColumnHeader[])" argnames="values" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
+        <method name="Add(System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="str, width, textAlign" returntype="System.Windows.Forms.ColumnHeader" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.ColumnHeader)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Windows.Forms.ColumnHeader)" argnames="index, value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.String, System.Int32, System.Windows.Forms.HorizontalAlignment)" argnames="index, str, width, textAlign" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListViewItemCollection" namespace="System.Windows.Forms">
+        <constructor name="ListViewItemCollection(System.Windows.Forms.ListView)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Windows.Forms.ListViewItem" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.ListViewItem)" argnames="value" returntype="System.Windows.Forms.ListViewItem" />
+        <method name="Add(System.String, System.Int32)" argnames="text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
+        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddRange(System.Windows.Forms.ListViewItem[])" argnames="values" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.ListViewItem)" argnames="item" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem)" argnames="index, item" returntype="System.Windows.Forms.ListViewItem" />
+        <method name="Insert(System.Int32, System.String)" argnames="index, text" returntype="System.Windows.Forms.ListViewItem" />
+        <method name="Insert(System.Int32, System.String, System.Int32)" argnames="index, text, imageIndex" returntype="System.Windows.Forms.ListViewItem" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MdiClient" namespace="System.Windows.Forms">
+        <class name="ControlCollection" namespace="System.Windows.Forms">
+            <constructor name="ControlCollection(System.Windows.Forms.MdiClient)" argnames="owner" />
+            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ControlCollection" argnames="" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="MdiChildren" propertytype="System.Windows.Forms.Form[]" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ControlCollection" namespace="System.Windows.Forms">
+        <constructor name="ControlCollection(System.Windows.Forms.MdiClient)" argnames="owner" />
+        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DragEventArgs" namespace="System.Windows.Forms">
+        <constructor name="DragEventArgs(System.Windows.Forms.IDataObject, System.Int32, System.Int32, System.Int32, System.Windows.Forms.DragDropEffects, System.Windows.Forms.DragDropEffects)" argnames="data, keyState, x, y, allowedEffect, effect" />
+        <property name="Data" propertytype="System.Windows.Forms.IDataObject" />
+        <property name="KeyState" propertytype="System.Int32" />
+        <property name="X" propertytype="System.Int32" />
+        <property name="Y" propertytype="System.Int32" />
+        <property name="AllowedEffect" propertytype="System.Windows.Forms.DragDropEffects" />
+        <property name="Effect" propertytype="System.Windows.Forms.DragDropEffects" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DrawItemEventArgs" namespace="System.Windows.Forms">
+        <constructor name="DrawItemEventArgs(System.Drawing.Graphics, System.Drawing.Font, System.Drawing.Rectangle, System.Int32, System.Windows.Forms.DrawItemState)" argnames="graphics, font, rect, index, state" />
+        <constructor name="DrawItemEventArgs(System.Drawing.Graphics, System.Drawing.Font, System.Drawing.Rectangle, System.Int32, System.Windows.Forms.DrawItemState, System.Drawing.Color, System.Drawing.Color)" argnames="graphics, font, rect, index, state, foreColor, backColor" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Graphics" propertytype="System.Drawing.Graphics" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="State" propertytype="System.Windows.Forms.DrawItemState" />
+        <method name="DrawFocusRectangle" argnames="" returntype="System.Void" />
+        <method name="DrawBackground" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FeatureSupport" namespace="System.Windows.Forms">
+        <constructor name="FeatureSupport" argnames="" />
+        <method name="GetVersionPresent(System.Object)" argnames="feature" returntype="System.Version" />
+        <method name="IsPresent(System.Object, System.Version)" argnames="feature, minimumVersion" returntype="System.Boolean" />
+        <method name="IsPresent(System.Object)" argnames="feature" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IsPresent(System.String, System.String)" argnames="featureClassName, featureConstName" returntype="System.Boolean" />
+        <method name="IsPresent(System.String, System.String, System.Version)" argnames="featureClassName, featureConstName, minimumVersion" returntype="System.Boolean" />
+        <method name="GetVersionPresent(System.String, System.String)" argnames="featureClassName, featureConstName" returntype="System.Version" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PictureBox" namespace="System.Windows.Forms">
+        <constructor name="PictureBox" argnames="" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CausesValidation" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="Image" propertytype="System.Drawing.Image" />
+        <property name="ImageRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="SizeMode" propertytype="System.Windows.Forms.PictureBoxSizeMode" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="TabIndex" propertytype="System.Int32" />
+        <property name="Text" propertytype="System.String" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnSizeModeChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pe" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="SizeModeChanged" />
+        <event name="Enter" />
+        <event name="KeyUp" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="Leave" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="GiveFeedbackEventArgs" namespace="System.Windows.Forms">
+        <constructor name="GiveFeedbackEventArgs(System.Windows.Forms.DragDropEffects, System.Boolean)" argnames="effect, useDefaultCursors" />
+        <property name="Effect" propertytype="System.Windows.Forms.DragDropEffects" />
+        <property name="UseDefaultCursors" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GridItem" namespace="System.Windows.Forms">
+        <constructor name="GridItem" argnames="" />
+        <property name="GridItems" propertytype="System.Windows.Forms.GridItemCollection" />
+        <property name="GridItemType" propertytype="System.Windows.Forms.GridItemType" />
+        <property name="Label" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Windows.Forms.GridItem" />
+        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="Expandable" propertytype="System.Boolean" />
+        <property name="Expanded" propertytype="System.Boolean" />
+        <method name="Select" argnames="" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GridItemCollection" namespace="System.Windows.Forms">
+        <field name="Empty" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Windows.Forms.GridItem" />
+        <property name="Item" propertytype="System.Windows.Forms.GridItem" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Help" namespace="System.Windows.Forms">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ShowHelp(System.Windows.Forms.Control, System.String)" argnames="parent, url" returntype="System.Void" />
+        <method name="ShowHelp(System.Windows.Forms.Control, System.String, System.Windows.Forms.HelpNavigator)" argnames="parent, url, navigator" returntype="System.Void" />
+        <method name="ShowHelp(System.Windows.Forms.Control, System.String, System.String)" argnames="parent, url, keyword" returntype="System.Void" />
+        <method name="ShowHelp(System.Windows.Forms.Control, System.String, System.Windows.Forms.HelpNavigator, System.Object)" argnames="parent, url, command, param" returntype="System.Void" />
+        <method name="ShowHelpIndex(System.Windows.Forms.Control, System.String)" argnames="parent, url" returntype="System.Void" />
+        <method name="ShowPopup(System.Windows.Forms.Control, System.String, System.Drawing.Point)" argnames="parent, caption, location" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HelpEventArgs" namespace="System.Windows.Forms">
+        <constructor name="HelpEventArgs(System.Drawing.Point)" argnames="mousePos" />
+        <property name="MousePos" propertytype="System.Drawing.Point" />
+        <property name="Handled" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HelpProvider" namespace="System.Windows.Forms">
+        <constructor name="HelpProvider" argnames="" />
+        <property name="HelpNamespace" propertytype="System.String" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="CanExtend(System.Object)" argnames="target" returntype="System.Boolean" />
+        <method name="ResetShowHelp(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Void" />
+        <method name="SetShowHelp(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, value" returntype="System.Void" />
+        <method name="SetHelpNavigator(System.Windows.Forms.Control, System.Windows.Forms.HelpNavigator)" argnames="ctl, navigator" returntype="System.Void" />
+        <method name="SetHelpKeyword(System.Windows.Forms.Control, System.String)" argnames="ctl, keyword" returntype="System.Void" />
+        <method name="SetHelpString(System.Windows.Forms.Control, System.String)" argnames="ctl, helpString" returntype="System.Void" />
+        <method name="GetShowHelp(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Boolean" />
+        <method name="GetHelpString(System.Windows.Forms.Control)" argnames="ctl" returntype="System.String" />
+        <method name="GetHelpNavigator(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Windows.Forms.HelpNavigator" />
+        <method name="GetHelpKeyword(System.Windows.Forms.Control)" argnames="ctl" returntype="System.String" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="Splitter" namespace="System.Windows.Forms">
+        <constructor name="Splitter" argnames="" />
+        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DefaultCursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Horizontal" propertytype="System.Boolean" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="MinExtra" propertytype="System.Int32" />
+        <property name="MinSize" propertytype="System.Int32" />
+        <property name="SplitPosition" propertytype="System.Int32" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="PreFilterMessage(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+        <method name="OnSplitterMoved(System.Windows.Forms.SplitterEventArgs)" argnames="sevent" returntype="System.Void" />
+        <method name="OnSplitterMoving(System.Windows.Forms.SplitterEventArgs)" argnames="sevent" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Enter" />
+        <event name="KeyUp" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="Leave" />
+        <event name="SplitterMoving" />
+        <event name="SplitterMoved" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ImageIndexConverter" namespace="System.Windows.Forms">
+        <constructor name="ImageIndexConverter" argnames="" />
+        <property name="IncludeNoneAsStandardValue" propertytype="System.Boolean" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageList" namespace="System.Windows.Forms">
+        <class name="ImageCollection" namespace="System.Windows.Forms">
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Empty" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Drawing.Image" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Drawing.Icon)" argnames="value" returntype="System.Void" />
+            <method name="Add(System.Drawing.Image)" argnames="value" returntype="System.Void" />
+            <method name="Add(System.Drawing.Image, System.Drawing.Color)" argnames="value, transparentColor" returntype="System.Int32" />
+            <method name="AddStrip(System.Drawing.Image)" argnames="value" returntype="System.Int32" />
+            <method name="Contains(System.Drawing.Image)" argnames="image" returntype="System.Boolean" />
+            <method name="IndexOf(System.Drawing.Image)" argnames="image" returntype="System.Int32" />
+            <method name="Remove(System.Drawing.Image)" argnames="image" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ImageCollection" argnames="" />
+        <constructor name="ImageCollection(System.ComponentModel.IContainer)" argnames="container" />
+        <property name="ColorDepth" propertytype="System.Windows.Forms.ColorDepth" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="HandleCreated" propertytype="System.Boolean" />
+        <property name="Images" propertytype="System.Windows.Forms.ImageList+ImageCollection" />
+        <property name="ImageSize" propertytype="System.Drawing.Size" />
+        <property name="ImageStream" propertytype="System.Windows.Forms.ImageListStreamer" />
+        <property name="TransparentColor" propertytype="System.Drawing.Color" />
+        <property name="UseTransparentColor" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Draw(System.Drawing.Graphics, System.Drawing.Point, System.Int32)" argnames="g, pt, index" returntype="System.Void" />
+        <method name="Draw(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32)" argnames="g, x, y, index" returntype="System.Void" />
+        <method name="Draw(System.Drawing.Graphics, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="g, x, y, width, height, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="RecreateHandle" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ImageCollection" namespace="System.Windows.Forms">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Empty" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Drawing.Image" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Drawing.Icon)" argnames="value" returntype="System.Void" />
+        <method name="Add(System.Drawing.Image)" argnames="value" returntype="System.Void" />
+        <method name="Add(System.Drawing.Image, System.Drawing.Color)" argnames="value, transparentColor" returntype="System.Int32" />
+        <method name="AddStrip(System.Drawing.Image)" argnames="value" returntype="System.Int32" />
+        <method name="Contains(System.Drawing.Image)" argnames="image" returntype="System.Boolean" />
+        <method name="IndexOf(System.Drawing.Image)" argnames="image" returntype="System.Int32" />
+        <method name="Remove(System.Drawing.Image)" argnames="image" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImageListStreamer" namespace="System.Windows.Forms">
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="si, context" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InputLanguageChangedEventArgs" namespace="System.Windows.Forms">
+        <constructor name="InputLanguageChangedEventArgs(System.Globalization.CultureInfo, System.Byte)" argnames="culture, charSet" />
+        <constructor name="InputLanguageChangedEventArgs(System.Windows.Forms.InputLanguage, System.Byte)" argnames="inputLanguage, charSet" />
+        <property name="InputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
+        <property name="Culture" propertytype="System.Globalization.CultureInfo" />
+        <property name="CharSet" propertytype="System.Byte" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InputLanguageChangingEventArgs" namespace="System.Windows.Forms">
+        <constructor name="InputLanguageChangingEventArgs(System.Globalization.CultureInfo, System.Boolean)" argnames="culture, sysCharSet" />
+        <constructor name="InputLanguageChangingEventArgs(System.Windows.Forms.InputLanguage, System.Boolean)" argnames="inputLanguage, sysCharSet" />
+        <property name="InputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
+        <property name="Culture" propertytype="System.Globalization.CultureInfo" />
+        <property name="SysCharSet" propertytype="System.Boolean" />
+        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InputLanguage" namespace="System.Windows.Forms">
+        <property name="Culture" propertytype="System.Globalization.CultureInfo" />
+        <property name="CurrentInputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
+        <property name="DefaultInputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="InstalledInputLanguages" propertytype="System.Windows.Forms.InputLanguageCollection" />
+        <property name="LayoutName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromCulture(System.Globalization.CultureInfo)" argnames="culture" returntype="System.Windows.Forms.InputLanguage" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InputLanguageCollection" namespace="System.Windows.Forms">
+        <property name="Item" propertytype="System.Windows.Forms.InputLanguage" />
+        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.InputLanguage)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.Windows.Forms.InputLanguage[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.Windows.Forms.InputLanguage)" argnames="value" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InvalidateEventArgs" namespace="System.Windows.Forms">
+        <constructor name="InvalidateEventArgs(System.Drawing.Rectangle)" argnames="invalidRect" />
+        <property name="InvalidRect" propertytype="System.Drawing.Rectangle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ItemChangedEventArgs" namespace="System.Windows.Forms">
+        <property name="Index" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ItemCheckEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ItemCheckEventArgs(System.Int32, System.Windows.Forms.CheckState, System.Windows.Forms.CheckState)" argnames="index, newCheckValue, currentValue" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="NewValue" propertytype="System.Windows.Forms.CheckState" />
+        <property name="CurrentValue" propertytype="System.Windows.Forms.CheckState" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ItemDragEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ItemDragEventArgs(System.Windows.Forms.MouseButtons)" argnames="button" />
+        <constructor name="ItemDragEventArgs(System.Windows.Forms.MouseButtons, System.Object)" argnames="button, item" />
+        <property name="Button" propertytype="System.Windows.Forms.MouseButtons" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="KeyEventArgs" namespace="System.Windows.Forms">
+        <constructor name="KeyEventArgs(System.Windows.Forms.Keys)" argnames="keyData" />
+        <property name="Alt" propertytype="System.Boolean" />
+        <property name="Control" propertytype="System.Boolean" />
+        <property name="Handled" propertytype="System.Boolean" />
+        <property name="KeyCode" propertytype="System.Windows.Forms.Keys" />
+        <property name="KeyValue" propertytype="System.Int32" />
+        <property name="KeyData" propertytype="System.Windows.Forms.Keys" />
+        <property name="Modifiers" propertytype="System.Windows.Forms.Keys" />
+        <property name="Shift" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="KeyPressEventArgs" namespace="System.Windows.Forms">
+        <constructor name="KeyPressEventArgs(System.Char)" argnames="keyChar" />
+        <property name="KeyChar" propertytype="System.Char" />
+        <property name="Handled" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="KeysConverter" namespace="System.Windows.Forms">
+        <constructor name="KeysConverter" argnames="" />
+        <property name="KeyNames" propertytype="System.Collections.IDictionary" />
+        <method name="Compare(System.Object, System.Object)" argnames="a, b" returntype="System.Int32" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StatusBar" namespace="System.Windows.Forms">
+        <class name="StatusBarPanelCollection" namespace="System.Windows.Forms">
+            <constructor name="StatusBarPanelCollection(System.Windows.Forms.StatusBar)" argnames="owner" />
+            <property name="Item" propertytype="System.Windows.Forms.StatusBarPanel" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Void" />
+            <method name="Insert(System.Int32, System.Windows.Forms.StatusBarPanel)" argnames="index, value" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.StatusBarPanel[])" argnames="panels" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Int32" />
+            <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.StatusBarPanel" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="StatusBarPanelCollection" argnames="" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="Panels" propertytype="System.Windows.Forms.StatusBar+StatusBarPanelCollection" />
+        <property name="Text" propertytype="System.String" />
+        <property name="ToolTipHandle" propertytype="System.IntPtr" />
+        <property name="ShowPanels" propertytype="System.Boolean" />
+        <property name="SizingGrip" propertytype="System.Boolean" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnDrawItem(System.Windows.Forms.StatusBarDrawItemEventArgs)" argnames="sbdievent" returntype="System.Void" />
+        <method name="OnPanelClick(System.Windows.Forms.StatusBarPanelClickEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="DrawItem" />
+        <event name="PanelClick" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="StatusBarPanelCollection" namespace="System.Windows.Forms">
+        <constructor name="StatusBarPanelCollection(System.Windows.Forms.StatusBar)" argnames="owner" />
+        <property name="Item" propertytype="System.Windows.Forms.StatusBarPanel" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Windows.Forms.StatusBarPanel)" argnames="index, value" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.StatusBarPanel[])" argnames="panels" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.StatusBarPanel)" argnames="value" returntype="System.Int32" />
+        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.StatusBarPanel" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.StatusBarPanel)" argnames="panel" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Tool" namespace="System.Windows.Forms">
+        <constructor name="Tool" argnames="" />
+        <field name="rect" />
+        <field name="text" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LabelEditEventArgs" namespace="System.Windows.Forms">
+        <constructor name="LabelEditEventArgs(System.Int32)" argnames="item" />
+        <constructor name="LabelEditEventArgs(System.Int32, System.String)" argnames="item, label" />
+        <property name="Label" propertytype="System.String" />
+        <property name="Item" propertytype="System.Int32" />
+        <property name="CancelEdit" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LayoutEventArgs" namespace="System.Windows.Forms">
+        <constructor name="LayoutEventArgs(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" />
+        <property name="AffectedControl" propertytype="System.Windows.Forms.Control" />
+        <property name="AffectedProperty" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LinkAreaConverter" namespace="System.Windows.Forms">
+        <constructor name="LinkAreaConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LinkClickedEventArgs" namespace="System.Windows.Forms">
+        <constructor name="LinkClickedEventArgs(System.String)" argnames="linkText" />
+        <property name="LinkText" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TabControl" namespace="System.Windows.Forms">
+        <class name="TabPageCollection" namespace="System.Windows.Forms">
+            <constructor name="TabPageCollection(System.Windows.Forms.TabControl)" argnames="owner" />
+            <property name="Item" propertytype="System.Windows.Forms.TabPage" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.TabPage[])" argnames="pages" returntype="System.Void" />
+            <method name="Contains(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Int32" />
+            <method name="Remove(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="ControlCollection" namespace="System.Windows.Forms">
+            <constructor name="ControlCollection(System.Windows.Forms.TabControl)" argnames="owner" />
+            <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+            <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+            <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+            <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ControlCollection" argnames="" />
+        <property name="Alignment" propertytype="System.Windows.Forms.TabAlignment" />
+        <property name="Appearance" propertytype="System.Windows.Forms.TabAppearance" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DisplayRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="DrawMode" propertytype="System.Windows.Forms.TabDrawMode" />
+        <property name="HotTrack" propertytype="System.Boolean" />
+        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ItemSize" propertytype="System.Drawing.Size" />
+        <property name="Multiline" propertytype="System.Boolean" />
+        <property name="Padding" propertytype="System.Drawing.Point" />
+        <property name="RowCount" propertytype="System.Int32" />
+        <property name="SelectedIndex" propertytype="System.Int32" />
+        <property name="SelectedTab" propertytype="System.Windows.Forms.TabPage" />
+        <property name="SelectedTabInternal" propertytype="System.Windows.Forms.TabPage" />
+        <property name="SizeMode" propertytype="System.Windows.Forms.TabSizeMode" />
+        <property name="ShowToolTips" propertytype="System.Boolean" />
+        <property name="TabCount" propertytype="System.Int32" />
+        <property name="TabPages" propertytype="System.Windows.Forms.TabControl+TabPageCollection" />
+        <property name="Text" propertytype="System.String" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="GetItems(System.Type)" argnames="baseType" returntype="System.Object[]" />
+        <method name="GetItems" argnames="" returntype="System.Object[]" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="ke" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetControl(System.Int32)" argnames="index" returntype="System.Windows.Forms.Control" />
+        <method name="GetTabRect(System.Int32)" argnames="index" returntype="System.Drawing.Rectangle" />
+        <method name="GetToolTipText(System.Object)" argnames="item" returntype="System.String" />
+        <method name="RemoveAll" argnames="" returntype="System.Void" />
+        <method name="UpdateTabSelection(System.Boolean)" argnames="uiselected" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="DrawItem" />
+        <event name="SelectedIndexChanged" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="TabPageCollection" namespace="System.Windows.Forms">
+        <constructor name="TabPageCollection(System.Windows.Forms.TabControl)" argnames="owner" />
+        <property name="Item" propertytype="System.Windows.Forms.TabPage" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.TabPage[])" argnames="pages" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.TabPage)" argnames="page" returntype="System.Int32" />
+        <method name="Remove(System.Windows.Forms.TabPage)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ControlCollection" namespace="System.Windows.Forms">
+        <constructor name="ControlCollection(System.Windows.Forms.TabControl)" argnames="owner" />
+        <property name="Count" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Boolean" />
+        <property name="Item" inherited="System.Windows.Forms.Control+ControlCollection" propertytype="System.Windows.Forms.Control" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Windows.Forms.Control[])" argnames="controls" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.Control)" argnames="value" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.Control)" argnames="control" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control)" argnames="child" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="GetChildIndex(System.Windows.Forms.Control, System.Boolean)" argnames="child, throwException" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Int32" />
+        <method name="SetChildIndex(System.Windows.Forms.Control, System.Int32)" argnames="child, newIndex" inherited="System.Windows.Forms.Control+ControlCollection" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LinkLabelLinkClickedEventArgs" namespace="System.Windows.Forms">
+        <constructor name="LinkLabelLinkClickedEventArgs(System.Windows.Forms.LinkLabel.Link)" argnames="link" />
+        <property name="Link" propertytype="System.Windows.Forms.LinkLabel+Link" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListBindingConverter" namespace="System.Windows.Forms">
+        <constructor name="ListBindingConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListViewItemConverter" namespace="System.Windows.Forms">
+        <constructor name="ListViewItemConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.ExpandableObjectConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolBar" namespace="System.Windows.Forms">
+        <class name="ToolBarButtonCollection" namespace="System.Windows.Forms">
+            <constructor name="ToolBarButtonCollection(System.Windows.Forms.ToolBar)" argnames="owner" />
+            <property name="Item" propertytype="System.Windows.Forms.ToolBarButton" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
+            <method name="Add(System.String)" argnames="text" returntype="System.Int32" />
+            <method name="AddRange(System.Windows.Forms.ToolBarButton[])" argnames="buttons" returntype="System.Void" />
+            <method name="Contains(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
+            <method name="Insert(System.Int32, System.Windows.Forms.ToolBarButton)" argnames="index, button" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ToolBarButtonCollection" argnames="" />
+        <property name="Appearance" propertytype="System.Windows.Forms.ToolBarAppearance" />
+        <property name="AutoSize" propertytype="System.Boolean" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="Buttons" propertytype="System.Windows.Forms.ToolBar+ToolBarButtonCollection" />
+        <property name="ButtonSize" propertytype="System.Drawing.Size" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="Divider" propertytype="System.Boolean" />
+        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="DropDownArrows" propertytype="System.Boolean" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ImageSize" propertytype="System.Drawing.Size" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="PreferredHeight" propertytype="System.Int32" />
+        <property name="PreferredWidth" propertytype="System.Int32" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="ShowToolTips" propertytype="System.Boolean" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TextAlign" propertytype="System.Windows.Forms.ToolBarTextAlign" />
+        <property name="Wrappable" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnButtonDropDown(System.Windows.Forms.ToolBarButtonClickEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnButtonClick(System.Windows.Forms.ToolBarButtonClickEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ButtonClick" />
+        <event name="ButtonDropDown" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ToolBarButtonCollection" namespace="System.Windows.Forms">
+        <constructor name="ToolBarButtonCollection(System.Windows.Forms.ToolBar)" argnames="owner" />
+        <property name="Item" propertytype="System.Windows.Forms.ToolBarButton" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
+        <method name="Add(System.String)" argnames="text" returntype="System.Int32" />
+        <method name="AddRange(System.Windows.Forms.ToolBarButton[])" argnames="buttons" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Windows.Forms.ToolBarButton)" argnames="index, button" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.ToolBarButton)" argnames="button" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListViewItem" namespace="System.Windows.Forms">
+        <class name="ListViewSubItem" namespace="System.Windows.Forms">
+            <constructor name="ListViewSubItem" argnames="" />
+            <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String)" argnames="owner, text" />
+            <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="owner, text, foreColor, backColor, font" />
+            <property name="BackColor" propertytype="System.Drawing.Color" />
+            <property name="CustomStyle" propertytype="System.Boolean" />
+            <property name="Font" propertytype="System.Drawing.Font" />
+            <property name="ForeColor" propertytype="System.Drawing.Color" />
+            <property name="Text" propertytype="System.String" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" returntype="System.String" />
+            <method name="ResetStyle" argnames="" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="ListViewSubItemCollection" namespace="System.Windows.Forms">
+            <constructor name="ListViewSubItemCollection(System.Windows.Forms.ListViewItem)" argnames="owner" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+            <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+            <method name="Add(System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="text, foreColor, backColor, font" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+            <method name="AddRange(System.Windows.Forms.ListViewItem.ListViewSubItem[])" argnames="items" returntype="System.Void" />
+            <method name="AddRange(System.String[])" argnames="items" returntype="System.Void" />
+            <method name="AddRange(System.String[], System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="items, foreColor, backColor, font" returntype="System.Void" />
+            <method name="Contains(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Boolean" />
+            <method name="IndexOf(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Int32" />
+            <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="index, item" returntype="System.Void" />
+            <method name="Remove(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ListViewSubItemCollection" argnames="" />
+        <constructor name="ListViewSubItemCollection(System.String)" argnames="text" />
+        <constructor name="ListViewSubItemCollection(System.String, System.Int32)" argnames="text, imageIndex" />
+        <constructor name="ListViewSubItemCollection(System.String[])" argnames="items" />
+        <constructor name="ListViewSubItemCollection(System.String[], System.Int32)" argnames="items, imageIndex" />
+        <constructor name="ListViewSubItemCollection(System.String[], System.Int32, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="items, imageIndex, foreColor, backColor, font" />
+        <constructor name="ListViewSubItemCollection(System.Windows.Forms.ListViewItem.ListViewSubItem[], System.Int32)" argnames="subItems, imageIndex" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="Checked" propertytype="System.Boolean" />
+        <property name="Focused" propertytype="System.Boolean" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="ImageIndex" propertytype="System.Int32" />
+        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="ListView" propertytype="System.Windows.Forms.ListView" />
+        <property name="SavedStateImageIndex" propertytype="System.Int32" />
+        <property name="Selected" propertytype="System.Boolean" />
+        <property name="StateImageIndex" propertytype="System.Int32" />
+        <property name="StateSelected" propertytype="System.Boolean" />
+        <property name="SubItemCount" propertytype="System.Int32" />
+        <property name="SubItems" propertytype="System.Windows.Forms.ListViewItem+ListViewSubItemCollection" />
+        <property name="Tag" propertytype="System.Object" />
+        <property name="Text" propertytype="System.String" />
+        <property name="UseItemStyleForSubItems" propertytype="System.Boolean" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="Serialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="Deserialize(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="Remove" argnames="" returntype="System.Void" />
+        <method name="EnsureVisible" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="BeginEdit" argnames="" returntype="System.Void" />
+        <method name="GetBounds(System.Windows.Forms.ItemBoundsPortion)" argnames="portion" returntype="System.Drawing.Rectangle" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListViewSubItem" namespace="System.Windows.Forms">
+        <constructor name="ListViewSubItem" argnames="" />
+        <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String)" argnames="owner, text" />
+        <constructor name="ListViewSubItem(System.Windows.Forms.ListViewItem, System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="owner, text, foreColor, backColor, font" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="CustomStyle" propertytype="System.Boolean" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Text" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetStyle" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListViewSubItemCollection" namespace="System.Windows.Forms">
+        <constructor name="ListViewSubItemCollection(System.Windows.Forms.ListViewItem)" argnames="owner" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+        <method name="Add(System.String, System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="text, foreColor, backColor, font" returntype="System.Windows.Forms.ListViewItem+ListViewSubItem" />
+        <method name="AddRange(System.Windows.Forms.ListViewItem.ListViewSubItem[])" argnames="items" returntype="System.Void" />
+        <method name="AddRange(System.String[])" argnames="items" returntype="System.Void" />
+        <method name="AddRange(System.String[], System.Drawing.Color, System.Drawing.Color, System.Drawing.Font)" argnames="items, foreColor, backColor, font" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="subItem" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="index, item" returntype="System.Void" />
+        <method name="Remove(System.Windows.Forms.ListViewItem.ListViewSubItem)" argnames="item" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MainMenu" namespace="System.Windows.Forms">
+        <constructor name="MainMenu" argnames="" />
+        <constructor name="MainMenu(System.Windows.Forms.MenuItem[])" argnames="items" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Handle" inherited="System.Windows.Forms.Menu" propertytype="System.IntPtr" />
+        <property name="IsParent" inherited="System.Windows.Forms.Menu" propertytype="System.Boolean" />
+        <property name="MdiListItem" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.MenuItem" />
+        <property name="MenuItems" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="CloneMenu" argnames="" returntype="System.Windows.Forms.MainMenu" />
+        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
+        <method name="CreateMenuHandle" argnames="" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetForm" argnames="" returntype="System.Windows.Forms.Form" />
+        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
+        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MenuItem" />
+        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" inherited="System.Windows.Forms.Menu" returntype="System.Int32" />
+        <method name="GetContextMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.ContextMenu" />
+        <method name="GetMainMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MainMenu" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="TrackBar" namespace="System.Windows.Forms">
+        <constructor name="TrackBar" argnames="" />
+        <property name="AutoSize" propertytype="System.Boolean" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="LargeChange" propertytype="System.Int32" />
+        <property name="Maximum" propertytype="System.Int32" />
+        <property name="Minimum" propertytype="System.Int32" />
+        <property name="Orientation" propertytype="System.Windows.Forms.Orientation" />
+        <property name="PreferredDimension" propertytype="System.Int32" />
+        <property name="SmallChange" propertytype="System.Int32" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TickStyle" propertytype="System.Windows.Forms.TickStyle" />
+        <property name="TickFrequency" propertytype="System.Int32" />
+        <property name="Value" propertytype="System.Int32" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="OnValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="SetRange(System.Int32, System.Int32)" argnames="minValue, maxValue" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" />
+        <event name="DoubleClick" />
+        <event name="Scroll" />
+        <event name="Paint" />
+        <event name="ValueChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="MeasureItemEventArgs" namespace="System.Windows.Forms">
+        <constructor name="MeasureItemEventArgs(System.Drawing.Graphics, System.Int32, System.Int32)" argnames="graphics, index, itemHeight" />
+        <constructor name="MeasureItemEventArgs(System.Drawing.Graphics, System.Int32)" argnames="graphics, index" />
+        <property name="Graphics" propertytype="System.Drawing.Graphics" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="ItemHeight" propertytype="System.Int32" />
+        <property name="ItemWidth" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TreeView" namespace="System.Windows.Forms">
+        <constructor name="TreeView" argnames="" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CheckBoxes" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="FullRowSelect" propertytype="System.Boolean" />
+        <property name="HideSelection" propertytype="System.Boolean" />
+        <property name="HotTracking" propertytype="System.Boolean" />
+        <property name="ImageIndex" propertytype="System.Int32" />
+        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="Indent" propertytype="System.Int32" />
+        <property name="ItemHeight" propertytype="System.Int32" />
+        <property name="LabelEdit" propertytype="System.Boolean" />
+        <property name="Nodes" propertytype="System.Windows.Forms.TreeNodeCollection" />
+        <property name="PathSeparator" propertytype="System.String" />
+        <property name="Scrollable" propertytype="System.Boolean" />
+        <property name="SelectedImageIndex" propertytype="System.Int32" />
+        <property name="SelectedNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="ShowLines" propertytype="System.Boolean" />
+        <property name="ShowPlusMinus" propertytype="System.Boolean" />
+        <property name="ShowRootLines" propertytype="System.Boolean" />
+        <property name="Sorted" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TopNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="VisibleCount" propertytype="System.Int32" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnAfterSelect(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBeforeSelect(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnItemDrag(System.Windows.Forms.ItemDragEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAfterExpand(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBeforeExpand(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAfterCollapse(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBeforeCollapse(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAfterCheck(System.Windows.Forms.TreeViewEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBeforeCheck(System.Windows.Forms.TreeViewCancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAfterLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnBeforeLabelEdit(System.Windows.Forms.NodeLabelEditEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="BeginUpdate" argnames="" returntype="System.Void" />
+        <method name="CollapseAll" argnames="" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" returntype="System.Void" />
+        <method name="ExpandAll" argnames="" returntype="System.Void" />
+        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" returntype="System.Int32" />
+        <method name="GetNodeAt(System.Drawing.Point)" argnames="pt" returntype="System.Windows.Forms.TreeNode" />
+        <method name="GetNodeAt(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.TreeNode" />
+        <method name="GetItemRenderStyles(System.Windows.Forms.TreeNode, System.Int32)" argnames="node, state" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BeforeLabelEdit" />
+        <event name="AfterLabelEdit" />
+        <event name="BeforeCheck" />
+        <event name="AfterCheck" />
+        <event name="BeforeCollapse" />
+        <event name="AfterCollapse" />
+        <event name="BeforeExpand" />
+        <event name="AfterExpand" />
+        <event name="ItemDrag" />
+        <event name="BeforeSelect" />
+        <event name="AfterSelect" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="MenuItem" namespace="System.Windows.Forms">
+        <constructor name="MenuItem" argnames="" />
+        <constructor name="MenuItem(System.String)" argnames="text" />
+        <constructor name="MenuItem(System.String, System.EventHandler)" argnames="text, onClick" />
+        <constructor name="MenuItem(System.String, System.EventHandler, System.Windows.Forms.Shortcut)" argnames="text, onClick, shortcut" />
+        <constructor name="MenuItem(System.String, System.Windows.Forms.MenuItem[])" argnames="text, items" />
+        <constructor name="MenuItem(System.Windows.Forms.MenuMerge, System.Int32, System.Windows.Forms.Shortcut, System.String, System.EventHandler, System.EventHandler, System.EventHandler, System.Windows.Forms.MenuItem[])" argnames="mergeType, mergeOrder, shortcut, text, onClick, onPopup, onSelect, items" />
+        <property name="BarBreak" propertytype="System.Boolean" />
+        <property name="Break" propertytype="System.Boolean" />
+        <property name="Checked" propertytype="System.Boolean" />
+        <property name="DefaultItem" propertytype="System.Boolean" />
+        <property name="OwnerDraw" propertytype="System.Boolean" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="IsParent" propertytype="System.Boolean" />
+        <property name="MdiList" propertytype="System.Boolean" />
+        <property name="MenuID" propertytype="System.Int32" />
+        <property name="MenuIndex" propertytype="System.Int32" />
+        <property name="MergeType" propertytype="System.Windows.Forms.MenuMerge" />
+        <property name="MergeOrder" propertytype="System.Int32" />
+        <property name="Mnemonic" propertytype="System.Char" />
+        <property name="Parent" propertytype="System.Windows.Forms.Menu" />
+        <property name="RadioCheck" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Shortcut" propertytype="System.Windows.Forms.Shortcut" />
+        <property name="ShowShortcut" propertytype="System.Boolean" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="ParentIsRightToLeft" propertytype="System.Boolean" />
+        <property name="Handle" inherited="System.Windows.Forms.Menu" propertytype="System.IntPtr" />
+        <property name="MdiListItem" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.MenuItem" />
+        <property name="MenuItems" inherited="System.Windows.Forms.Menu" propertytype="System.Windows.Forms.Menu+MenuItemCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="PerformSelect" argnames="" returntype="System.Void" />
+        <method name="OnInitMenuPopup(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSelect(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnPopup(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="MergeMenu" argnames="" returntype="System.Windows.Forms.MenuItem" />
+        <method name="CloneMenu" argnames="" returntype="System.Windows.Forms.MenuItem" />
+        <method name="MergeMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
+        <method name="CreateMenuHandle" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CloneMenu(System.Windows.Forms.MenuItem)" argnames="itemSrc" returntype="System.Void" />
+        <method name="MergeMenu(System.Windows.Forms.MenuItem)" argnames="itemSrc" returntype="System.Void" />
+        <method name="PerformClick" argnames="" returntype="System.Void" />
+        <method name="CloneMenu(System.Windows.Forms.Menu)" argnames="menuSrc" inherited="System.Windows.Forms.Menu" returntype="System.Void" />
+        <method name="FindMenuItem(System.Int32, System.IntPtr)" argnames="type, value" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MenuItem" />
+        <method name="FindMergePosition(System.Int32)" argnames="mergeOrder" inherited="System.Windows.Forms.Menu" returntype="System.Int32" />
+        <method name="GetContextMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.ContextMenu" />
+        <method name="GetMainMenu" argnames="" inherited="System.Windows.Forms.Menu" returntype="System.Windows.Forms.MainMenu" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" />
+        <event name="DrawItem" />
+        <event name="MeasureItem" />
+        <event name="Popup" />
+        <event name="Select" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="MessageBox" namespace="System.Windows.Forms">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton, System.Windows.Forms.MessageBoxOptions)" argnames="text, caption, buttons, icon, defaultButton, options" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton)" argnames="text, caption, buttons, icon, defaultButton" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon)" argnames="text, caption, buttons, icon" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.String, System.String, System.Windows.Forms.MessageBoxButtons)" argnames="text, caption, buttons" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.String, System.String)" argnames="text, caption" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.String)" argnames="text" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton, System.Windows.Forms.MessageBoxOptions)" argnames="owner, text, caption, buttons, icon, defaultButton, options" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton)" argnames="owner, text, caption, buttons, icon, defaultButton" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon)" argnames="owner, text, caption, buttons, icon" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons)" argnames="owner, text, caption, buttons" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.Windows.Forms.IWin32Window, System.String, System.String)" argnames="owner, text, caption" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Show(System.Windows.Forms.IWin32Window, System.String)" argnames="owner, text" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProgressBar" namespace="System.Windows.Forms">
+        <constructor name="ProgressBar" argnames="" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="CausesValidation" propertytype="System.Boolean" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="Maximum" propertytype="System.Int32" />
+        <property name="Minimum" propertytype="System.Int32" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Step" propertytype="System.Int32" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Value" propertytype="System.Int32" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Increment(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="PerformStep" argnames="" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="DoubleClick" />
+        <event name="KeyUp" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="Enter" />
+        <event name="Leave" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="MouseEventArgs" namespace="System.Windows.Forms">
+        <constructor name="MouseEventArgs(System.Windows.Forms.MouseButtons, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="button, clicks, x, y, delta" />
+        <property name="Button" propertytype="System.Windows.Forms.MouseButtons" />
+        <property name="Clicks" propertytype="System.Int32" />
+        <property name="X" propertytype="System.Int32" />
+        <property name="Y" propertytype="System.Int32" />
+        <property name="Delta" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FONTDESC" namespace="System.Windows.Forms">
+        <constructor name="FONTDESC" argnames="" />
+        <field name="cbSizeOfStruct" />
+        <field name="lpstrName" />
+        <field name="cySize" />
+        <field name="sWeight" />
+        <field name="sCharset" />
+        <field name="fItalic" />
+        <field name="fUnderline" />
+        <field name="fStrikethrough" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PICTDESCbmp" namespace="System.Windows.Forms">
+        <constructor name="PICTDESCbmp(System.Drawing.Bitmap)" argnames="bitmap" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PICTDESCicon" namespace="System.Windows.Forms">
+        <constructor name="PICTDESCicon(System.Drawing.Icon)" argnames="icon" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PICTDESCemf" namespace="System.Windows.Forms">
+        <constructor name="PICTDESCemf(System.Drawing.Imaging.Metafile)" argnames="metafile" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="USEROBJECTFLAGS" namespace="System.Windows.Forms">
+        <constructor name="USEROBJECTFLAGS" argnames="" />
+        <field name="fInherit" />
+        <field name="fReserved" />
+        <field name="dwFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HH_AKLINK" namespace="System.Windows.Forms">
+        <constructor name="HH_AKLINK" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HH_POPUP" namespace="System.Windows.Forms">
+        <constructor name="HH_POPUP" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HH_FTS_QUERY" namespace="System.Windows.Forms">
+        <constructor name="HH_FTS_QUERY" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MONITORINFOEX" namespace="System.Windows.Forms">
+        <constructor name="MONITORINFOEX" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MONITORINFO" namespace="System.Windows.Forms">
+        <constructor name="MONITORINFO" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EDITSTREAM" namespace="System.Windows.Forms">
+        <constructor name="EDITSTREAM" argnames="" />
+        <field name="dwCookie" />
+        <field name="dwError" />
+        <field name="pfnCallback" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="INITCOMMONCONTROLSEX" namespace="System.Windows.Forms">
+        <constructor name="INITCOMMONCONTROLSEX" argnames="" />
+        <field name="dwSize" />
+        <field name="dwICC" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IMAGELISTDRAWPARAMS" namespace="System.Windows.Forms">
+        <constructor name="IMAGELISTDRAWPARAMS" argnames="" />
+        <field name="cbSize" />
+        <field name="himl" />
+        <field name="i" />
+        <field name="hdcDst" />
+        <field name="x" />
+        <field name="y" />
+        <field name="cx" />
+        <field name="cy" />
+        <field name="xBitmap" />
+        <field name="yBitmap" />
+        <field name="rgbBk" />
+        <field name="rgbFg" />
+        <field name="fStyle" />
+        <field name="dwRop" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IMAGEINFO" namespace="System.Windows.Forms">
+        <constructor name="IMAGEINFO" argnames="" />
+        <field name="hbmImage" />
+        <field name="hbmMask" />
+        <field name="Unused1" />
+        <field name="Unused2" />
+        <field name="rcImage_left" />
+        <field name="rcImage_top" />
+        <field name="rcImage_right" />
+        <field name="rcImage_bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TRACKMOUSEEVENT" namespace="System.Windows.Forms">
+        <constructor name="TRACKMOUSEEVENT" argnames="" />
+        <field name="cbSize" />
+        <field name="dwFlags" />
+        <field name="hwndTrack" />
+        <field name="dwHoverTime" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="POINT" namespace="System.Windows.Forms">
+        <constructor name="POINT" argnames="" />
+        <constructor name="POINT(System.Int32, System.Int32)" argnames="x, y" />
+        <field name="x" />
+        <field name="y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WNDCLASS" namespace="System.Windows.Forms">
+        <constructor name="WNDCLASS" argnames="" />
+        <field name="style" />
+        <field name="lpfnWndProc" />
+        <field name="cbClsExtra" />
+        <field name="cbWndExtra" />
+        <field name="hInstance" />
+        <field name="hIcon" />
+        <field name="hCursor" />
+        <field name="hbrBackground" />
+        <field name="lpszMenuName" />
+        <field name="lpszClassName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WNDCLASS_I" namespace="System.Windows.Forms">
+        <constructor name="WNDCLASS_I" argnames="" />
+        <field name="style" />
+        <field name="lpfnWndProc" />
+        <field name="cbClsExtra" />
+        <field name="cbWndExtra" />
+        <field name="hInstance" />
+        <field name="hIcon" />
+        <field name="hCursor" />
+        <field name="hbrBackground" />
+        <field name="lpszMenuName" />
+        <field name="lpszClassName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NONCLIENTMETRICS" namespace="System.Windows.Forms">
+        <constructor name="NONCLIENTMETRICS" argnames="" />
+        <field name="cbSize" />
+        <field name="iBorderWidth" />
+        <field name="iScrollWidth" />
+        <field name="iScrollHeight" />
+        <field name="iCaptionWidth" />
+        <field name="iCaptionHeight" />
+        <field name="lfCaptionFont" />
+        <field name="iSmCaptionWidth" />
+        <field name="iSmCaptionHeight" />
+        <field name="lfSmCaptionFont" />
+        <field name="iMenuWidth" />
+        <field name="iMenuHeight" />
+        <field name="lfMenuFont" />
+        <field name="lfStatusFont" />
+        <field name="lfMessageFont" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SCROLLINFO" namespace="System.Windows.Forms">
+        <constructor name="SCROLLINFO" argnames="" />
+        <constructor name="SCROLLINFO(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="mask, min, max, page, pos" />
+        <field name="cbSize" />
+        <field name="fMask" />
+        <field name="nMin" />
+        <field name="nMax" />
+        <field name="nPage" />
+        <field name="nPos" />
+        <field name="nTrackPos" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TPMPARAMS" namespace="System.Windows.Forms">
+        <constructor name="TPMPARAMS" argnames="" />
+        <field name="cbSize" />
+        <field name="rcExclude_left" />
+        <field name="rcExclude_top" />
+        <field name="rcExclude_right" />
+        <field name="rcExclude_bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SIZE" namespace="System.Windows.Forms">
+        <constructor name="SIZE" argnames="" />
+        <constructor name="SIZE(System.Int32, System.Int32)" argnames="cx, cy" />
+        <field name="cx" />
+        <field name="cy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="STARTUPINFO" namespace="System.Windows.Forms">
+        <constructor name="STARTUPINFO" argnames="" />
+        <field name="cb" />
+        <field name="lpReserved" />
+        <field name="lpDesktop" />
+        <field name="lpTitle" />
+        <field name="dwX" />
+        <field name="dwY" />
+        <field name="dwXSize" />
+        <field name="dwYSize" />
+        <field name="dwXCountChars" />
+        <field name="dwYCountChars" />
+        <field name="dwFillAttribute" />
+        <field name="dwFlags" />
+        <field name="wShowWindow" />
+        <field name="cbReserved2" />
+        <field name="lpReserved2" />
+        <field name="hStdInput" />
+        <field name="hStdOutput" />
+        <field name="hStdError" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="STARTUPINFO_I" namespace="System.Windows.Forms">
+        <constructor name="STARTUPINFO_I" argnames="" />
+        <field name="cb" />
+        <field name="lpReserved" />
+        <field name="lpDesktop" />
+        <field name="lpTitle" />
+        <field name="dwX" />
+        <field name="dwY" />
+        <field name="dwXSize" />
+        <field name="dwYSize" />
+        <field name="dwXCountChars" />
+        <field name="dwYCountChars" />
+        <field name="dwFillAttribute" />
+        <field name="dwFlags" />
+        <field name="wShowWindow" />
+        <field name="cbReserved2" />
+        <field name="lpReserved2" />
+        <field name="hStdInput" />
+        <field name="hStdOutput" />
+        <field name="hStdError" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PAGESETUPDLG" namespace="System.Windows.Forms">
+        <constructor name="PAGESETUPDLG" argnames="" />
+        <field name="lStructSize" />
+        <field name="hwndOwner" />
+        <field name="hDevMode" />
+        <field name="hDevNames" />
+        <field name="Flags" />
+        <field name="paperSizeX" />
+        <field name="paperSizeY" />
+        <field name="minMarginLeft" />
+        <field name="minMarginTop" />
+        <field name="minMarginRight" />
+        <field name="minMarginBottom" />
+        <field name="marginLeft" />
+        <field name="marginTop" />
+        <field name="marginRight" />
+        <field name="marginBottom" />
+        <field name="hInstance" />
+        <field name="lCustData" />
+        <field name="lpfnPageSetupHook" />
+        <field name="lpfnPagePaintHook" />
+        <field name="lpPageSetupTemplateName" />
+        <field name="hPageSetupTemplate" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PRINTDLG" namespace="System.Windows.Forms">
+        <constructor name="PRINTDLG" argnames="" />
+        <field name="lStructSize" />
+        <field name="hwndOwner" />
+        <field name="hDevMode" />
+        <field name="hDevNames" />
+        <field name="hDC" />
+        <field name="Flags" />
+        <field name="nFromPage" />
+        <field name="nToPage" />
+        <field name="nMinPage" />
+        <field name="nMaxPage" />
+        <field name="nCopies" />
+        <field name="hInstance" />
+        <field name="lCustData" />
+        <field name="lpfnPrintHook" />
+        <field name="lpfnSetupHook" />
+        <field name="lpPrintTemplateName" />
+        <field name="lpSetupTemplateName" />
+        <field name="hPrintTemplate" />
+        <field name="hSetupTemplate" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PICTDESC" namespace="System.Windows.Forms">
+        <constructor name="PICTDESC" argnames="" />
+        <field name="picType" />
+        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
+        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateBitmapPICTDESC(System.IntPtr, System.IntPtr)" argnames="hbitmap, hpal" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
+        <method name="CreateIconPICTDESC(System.IntPtr)" argnames="hicon" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
+        <method name="CreateEnhMetafilePICTDESC(System.IntPtr)" argnames="hEMF" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
+        <method name="CreateWinMetafilePICTDESC(System.IntPtr, System.Int32, System.Int32)" argnames="hmetafile, x, y" returntype="System.Windows.Forms.NativeMethods+PICTDESC" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagFONTDESC" namespace="System.Windows.Forms">
+        <constructor name="tagFONTDESC" argnames="" />
+        <field name="cbSizeofstruct" />
+        <field name="lpstrName" />
+        <field name="cySize" />
+        <field name="sWeight" />
+        <field name="sCharset" />
+        <field name="fItalic" />
+        <field name="fUnderline" />
+        <field name="fStrikethrough" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CHOOSECOLOR" namespace="System.Windows.Forms">
+        <constructor name="CHOOSECOLOR" argnames="" />
+        <field name="lStructSize" />
+        <field name="hwndOwner" />
+        <field name="hInstance" />
+        <field name="rgbResult" />
+        <field name="lpCustColors" />
+        <field name="Flags" />
+        <field name="lCustData" />
+        <field name="lpfnHook" />
+        <field name="lpTemplateName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BITMAP" namespace="System.Windows.Forms">
+        <constructor name="BITMAP" argnames="" />
+        <field name="bmType" />
+        <field name="bmWidth" />
+        <field name="bmHeight" />
+        <field name="bmWidthBytes" />
+        <field name="bmPlanes" />
+        <field name="bmBitsPixel" />
+        <field name="bmBits" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DIBSECTION" namespace="System.Windows.Forms">
+        <constructor name="DIBSECTION" argnames="" />
+        <field name="dsBm" />
+        <field name="dsBmih" />
+        <field name="dsBitfields" />
+        <field name="dshSection" />
+        <field name="dsOffset" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LOGPEN" namespace="System.Windows.Forms">
+        <constructor name="LOGPEN" argnames="" />
+        <field name="lopnStyle" />
+        <field name="lopnWidth_x" />
+        <field name="lopnWidth_y" />
+        <field name="lopnColor" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LOGBRUSH" namespace="System.Windows.Forms">
+        <constructor name="LOGBRUSH" argnames="" />
+        <field name="lbStyle" />
+        <field name="lbColor" />
+        <field name="lbHatch" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LOGFONT" namespace="System.Windows.Forms">
+        <constructor name="LOGFONT" argnames="" />
+        <field name="lfHeight" />
+        <field name="lfWidth" />
+        <field name="lfEscapement" />
+        <field name="lfOrientation" />
+        <field name="lfWeight" />
+        <field name="lfItalic" />
+        <field name="lfUnderline" />
+        <field name="lfStrikeOut" />
+        <field name="lfCharSet" />
+        <field name="lfOutPrecision" />
+        <field name="lfClipPrecision" />
+        <field name="lfQuality" />
+        <field name="lfPitchAndFamily" />
+        <field name="lfFaceName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LOGPALETTE" namespace="System.Windows.Forms">
+        <constructor name="LOGPALETTE" argnames="" />
+        <field name="palVersion" />
+        <field name="palNumEntries" />
+        <field name="palPalEntry" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TEXTMETRIC" namespace="System.Windows.Forms">
+        <constructor name="TEXTMETRIC" argnames="" />
+        <field name="tmHeight" />
+        <field name="tmAscent" />
+        <field name="tmDescent" />
+        <field name="tmInternalLeading" />
+        <field name="tmExternalLeading" />
+        <field name="tmAveCharWidth" />
+        <field name="tmMaxCharWidth" />
+        <field name="tmWeight" />
+        <field name="tmOverhang" />
+        <field name="tmDigitizedAspectX" />
+        <field name="tmDigitizedAspectY" />
+        <field name="tmFirstChar" />
+        <field name="tmLastChar" />
+        <field name="tmDefaultChar" />
+        <field name="tmBreakChar" />
+        <field name="tmItalic" />
+        <field name="tmUnderlined" />
+        <field name="tmStruckOut" />
+        <field name="tmPitchAndFamily" />
+        <field name="tmCharSet" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NOTIFYICONDATA" namespace="System.Windows.Forms">
+        <constructor name="NOTIFYICONDATA" argnames="" />
+        <field name="cbSize" />
+        <field name="hWnd" />
+        <field name="uID" />
+        <field name="uFlags" />
+        <field name="uCallbackMessage" />
+        <field name="hIcon" />
+        <field name="szTip" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MENUITEMINFO_T" namespace="System.Windows.Forms">
+        <constructor name="MENUITEMINFO_T" argnames="" />
+        <field name="cbSize" />
+        <field name="fMask" />
+        <field name="fType" />
+        <field name="fState" />
+        <field name="wID" />
+        <field name="hSubMenu" />
+        <field name="hbmpChecked" />
+        <field name="hbmpUnchecked" />
+        <field name="dwItemData" />
+        <field name="dwTypeData" />
+        <field name="cch" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OPENFILENAME_I" namespace="System.Windows.Forms">
+        <constructor name="OPENFILENAME_I" argnames="" />
+        <field name="lStructSize" />
+        <field name="hwndOwner" />
+        <field name="hInstance" />
+        <field name="lpstrFilter" />
+        <field name="lpstrCustomFilter" />
+        <field name="nMaxCustFilter" />
+        <field name="nFilterIndex" />
+        <field name="lpstrFile" />
+        <field name="nMaxFile" />
+        <field name="lpstrFileTitle" />
+        <field name="nMaxFileTitle" />
+        <field name="lpstrInitialDir" />
+        <field name="lpstrTitle" />
+        <field name="Flags" />
+        <field name="nFileOffset" />
+        <field name="nFileExtension" />
+        <field name="lpstrDefExt" />
+        <field name="lCustData" />
+        <field name="lpfnHook" />
+        <field name="lpTemplateName" />
+        <field name="pvReserved" />
+        <field name="dwReserved" />
+        <field name="FlagsEx" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CHOOSEFONT" namespace="System.Windows.Forms">
+        <constructor name="CHOOSEFONT" argnames="" />
+        <field name="lStructSize" />
+        <field name="hwndOwner" />
+        <field name="hDC" />
+        <field name="lpLogFont" />
+        <field name="iPointSize" />
+        <field name="Flags" />
+        <field name="rgbColors" />
+        <field name="lCustData" />
+        <field name="lpfnHook" />
+        <field name="lpTemplateName" />
+        <field name="hInstance" />
+        <field name="lpszStyle" />
+        <field name="nFontType" />
+        <field name="___MISSING_ALIGNMENT__" />
+        <field name="nSizeMin" />
+        <field name="nSizeMax" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BITMAPINFO" namespace="System.Windows.Forms">
+        <constructor name="BITMAPINFO" argnames="" />
+        <field name="bmiHeader_biSize" />
+        <field name="bmiHeader_biWidth" />
+        <field name="bmiHeader_biHeight" />
+        <field name="bmiHeader_biPlanes" />
+        <field name="bmiHeader_biBitCount" />
+        <field name="bmiHeader_biCompression" />
+        <field name="bmiHeader_biSizeImage" />
+        <field name="bmiHeader_biXPelsPerMeter" />
+        <field name="bmiHeader_biYPelsPerMeter" />
+        <field name="bmiHeader_biClrUsed" />
+        <field name="bmiHeader_biClrImportant" />
+        <field name="bmiColors_rgbBlue" />
+        <field name="bmiColors_rgbGreen" />
+        <field name="bmiColors_rgbRed" />
+        <field name="bmiColors_rgbReserved" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BITMAPINFOHEADER" namespace="System.Windows.Forms">
+        <constructor name="BITMAPINFOHEADER" argnames="" />
+        <field name="biSize" />
+        <field name="biWidth" />
+        <field name="biHeight" />
+        <field name="biPlanes" />
+        <field name="biBitCount" />
+        <field name="biCompression" />
+        <field name="biSizeImage" />
+        <field name="biXPelsPerMeter" />
+        <field name="biYPelsPerMeter" />
+        <field name="biClrUsed" />
+        <field name="biClrImportant" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Ole" namespace="System.Windows.Forms">
+        <constructor name="Ole" argnames="" />
+        <field name="PICTYPE_UNINITIALIZED" />
+        <field name="PICTYPE_NONE" />
+        <field name="PICTYPE_BITMAP" />
+        <field name="PICTYPE_METAFILE" />
+        <field name="PICTYPE_ICON" />
+        <field name="PICTYPE_ENHMETAFILE" />
+        <field name="STATFLAG_DEFAULT" />
+        <field name="STATFLAG_NONAME" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FORMATETC" namespace="System.Windows.Forms">
+        <constructor name="FORMATETC" argnames="" />
+        <field name="cfFormat" />
+        <field name="dummy" />
+        <field name="ptd" />
+        <field name="dwAspect" />
+        <field name="lindex" />
+        <field name="tymed" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="STATSTG" namespace="System.Windows.Forms">
+        <constructor name="STATSTG" argnames="" />
+        <field name="pwcsName" />
+        <field name="type" />
+        <field name="cbSize" />
+        <field name="mtime" />
+        <field name="ctime" />
+        <field name="atime" />
+        <field name="grfMode" />
+        <field name="grfLocksSupported" />
+        <field name="clsid_data1" />
+        <field name="clsid_data2" />
+        <field name="clsid_data3" />
+        <field name="clsid_b0" />
+        <field name="clsid_b1" />
+        <field name="clsid_b2" />
+        <field name="clsid_b3" />
+        <field name="clsid_b4" />
+        <field name="clsid_b5" />
+        <field name="clsid_b6" />
+        <field name="clsid_b7" />
+        <field name="grfStateBits" />
+        <field name="reserved" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FILETIME" namespace="System.Windows.Forms">
+        <constructor name="FILETIME" argnames="" />
+        <field name="dwLowDateTime" />
+        <field name="dwHighDateTime" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OVERLAPPED" namespace="System.Windows.Forms">
+        <constructor name="OVERLAPPED" argnames="" />
+        <field name="Internal" />
+        <field name="InternalHigh" />
+        <field name="Offset" />
+        <field name="OffsetHigh" />
+        <field name="hEvent" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SYSTEMTIME" namespace="System.Windows.Forms">
+        <constructor name="SYSTEMTIME" argnames="" />
+        <field name="wYear" />
+        <field name="wMonth" />
+        <field name="wDayOfWeek" />
+        <field name="wDay" />
+        <field name="wHour" />
+        <field name="wMinute" />
+        <field name="wSecond" />
+        <field name="wMilliseconds" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="STGMEDIUM" namespace="System.Windows.Forms">
+        <constructor name="STGMEDIUM" argnames="" />
+        <field name="tymed" />
+        <field name="unionmember" />
+        <field name="pUnkForRelease" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="_POINTL" namespace="System.Windows.Forms">
+        <constructor name="_POINTL" argnames="" />
+        <field name="x" />
+        <field name="y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagSIZE" namespace="System.Windows.Forms">
+        <constructor name="tagSIZE" argnames="" />
+        <field name="cx" />
+        <field name="cy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="COMRECT" namespace="System.Windows.Forms">
+        <constructor name="COMRECT" argnames="" />
+        <constructor name="COMRECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
+        <field name="left" />
+        <field name="top" />
+        <field name="right" />
+        <field name="bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Windows.Forms.NativeMethods+COMRECT" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagOleMenuGroupWidths" namespace="System.Windows.Forms">
+        <constructor name="tagOleMenuGroupWidths" argnames="" />
+        <field name="widths" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MSOCRINFOSTRUCT" namespace="System.Windows.Forms">
+        <constructor name="MSOCRINFOSTRUCT" argnames="" />
+        <field name="cbSize" />
+        <field name="uIdleTimeInterval" />
+        <field name="grfcrf" />
+        <field name="grfcadvf" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ConnectionPointCookie" namespace="System.Windows.Forms">
+        <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type)" argnames="source, sink, eventInterface" />
+        <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type, System.Boolean)" argnames="source, sink, eventInterface, throwException" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Disconnect" argnames="" returntype="System.Void" />
+        <method name="Disconnect(System.Boolean)" argnames="release" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagPOINTF" namespace="System.Windows.Forms">
+        <constructor name="tagPOINTF" argnames="" />
+        <field name="x" />
+        <field name="y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagOIFI" namespace="System.Windows.Forms">
+        <constructor name="tagOIFI" argnames="" />
+        <field name="cb" />
+        <field name="fMDIApp" />
+        <field name="hwndFrame" />
+        <field name="hAccel" />
+        <field name="cAccelEntries" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagSIZEL" namespace="System.Windows.Forms">
+        <constructor name="tagSIZEL" argnames="" />
+        <field name="cx" />
+        <field name="cy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagOLEVERB" namespace="System.Windows.Forms">
+        <constructor name="tagOLEVERB" argnames="" />
+        <field name="lVerb" />
+        <field name="lpszVerbName" />
+        <field name="fuFlags" />
+        <field name="grfAttribs" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagLOGPALETTE" namespace="System.Windows.Forms">
+        <constructor name="tagLOGPALETTE" argnames="" />
+        <field name="palVersion" />
+        <field name="palNumEntries" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagCONTROLINFO" namespace="System.Windows.Forms">
+        <constructor name="tagCONTROLINFO" argnames="" />
+        <field name="cb" />
+        <field name="hAccel" />
+        <field name="cAccel" />
+        <field name="dwFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CA_STRUCT" namespace="System.Windows.Forms">
+        <constructor name="CA_STRUCT" argnames="" />
+        <field name="cElems" />
+        <field name="pElems" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="VARIANT" namespace="System.Windows.Forms">
+        <constructor name="VARIANT" argnames="" />
+        <field name="vt" />
+        <field name="reserved1" />
+        <field name="reserved2" />
+        <field name="reserved3" />
+        <field name="data1" />
+        <field name="data2" />
+        <property name="Byref" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="FromObject(System.Object)" argnames="var" returntype="System.Windows.Forms.NativeMethods+VARIANT" />
+        <method name="SetLong(System.Int64)" argnames="lVal" returntype="System.Void" />
+        <method name="ToCoTaskMemPtr" argnames="" returntype="System.IntPtr" />
+        <method name="ToObject" argnames="" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagLICINFO" namespace="System.Windows.Forms">
+        <constructor name="tagLICINFO" argnames="" />
+        <field name="cbLicInfo" />
+        <field name="fRuntimeAvailable" />
+        <field name="fLicVerified" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WNDCLASS_D" namespace="System.Windows.Forms">
+        <constructor name="WNDCLASS_D" argnames="" />
+        <field name="style" />
+        <field name="lpfnWndProc" />
+        <field name="cbClsExtra" />
+        <field name="cbWndExtra" />
+        <field name="hInstance" />
+        <field name="hIcon" />
+        <field name="hCursor" />
+        <field name="hbrBackground" />
+        <field name="lpszMenuName" />
+        <field name="lpszClassName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MSOCM" namespace="System.Windows.Forms">
+        <constructor name="MSOCM" argnames="" />
+        <field name="msocrfNeedIdleTime" />
+        <field name="msocrfNeedPeriodicIdleTime" />
+        <field name="msocrfPreTranslateKeys" />
+        <field name="msocrfPreTranslateAll" />
+        <field name="msocrfNeedSpecActiveNotifs" />
+        <field name="msocrfNeedAllActiveNotifs" />
+        <field name="msocrfExclusiveBorderSpace" />
+        <field name="msocrfExclusiveActivation" />
+        <field name="msocrfNeedAllMacEvents" />
+        <field name="msocrfMaster" />
+        <field name="msocadvfModal" />
+        <field name="msocadvfRedrawOff" />
+        <field name="msocadvfWarningsOff" />
+        <field name="msocadvfRecording" />
+        <field name="msochostfExclusiveBorderSpace" />
+        <field name="msoidlefPeriodic" />
+        <field name="msoidlefNonPeriodic" />
+        <field name="msoidlefPriority" />
+        <field name="msoidlefAll" />
+        <field name="msoloopMain" />
+        <field name="msoloopFocusWait" />
+        <field name="msoloopDoEvents" />
+        <field name="msoloopDebug" />
+        <field name="msoloopModalForm" />
+        <field name="msoloopModalAlert" />
+        <field name="msocstateModal" />
+        <field name="msocstateRedrawOff" />
+        <field name="msocstateWarningsOff" />
+        <field name="msocstateRecording" />
+        <field name="msoccontextAll" />
+        <field name="msoccontextMine" />
+        <field name="msoccontextOthers" />
+        <field name="msogacActive" />
+        <field name="msogacTracking" />
+        <field name="msogacTrackingOrActive" />
+        <field name="msocWindowFrameToplevel" />
+        <field name="msocWindowFrameOwner" />
+        <field name="msocWindowComponent" />
+        <field name="msocWindowDlgOwner" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TOOLINFO_T" namespace="System.Windows.Forms">
+        <constructor name="TOOLINFO_T" argnames="" />
+        <field name="cbSize" />
+        <field name="uFlags" />
+        <field name="hwnd" />
+        <field name="uId" />
+        <field name="rect" />
+        <field name="hinst" />
+        <field name="lpszText" />
+        <field name="lParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagDVTARGETDEVICE" namespace="System.Windows.Forms">
+        <constructor name="tagDVTARGETDEVICE" argnames="" />
+        <field name="tdSize" />
+        <field name="tdDriverNameOffset" />
+        <field name="tdDeviceNameOffset" />
+        <field name="tdPortNameOffset" />
+        <field name="tdExtDevmodeOffset" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMTVDISPINFO" namespace="System.Windows.Forms">
+        <constructor name="NMTVDISPINFO" argnames="" />
+        <field name="hdr" />
+        <field name="item" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="POINTL" namespace="System.Windows.Forms">
+        <constructor name="POINTL" argnames="" />
+        <field name="x" />
+        <field name="y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TCITEM_T" namespace="System.Windows.Forms">
+        <constructor name="TCITEM_T" argnames="" />
+        <field name="mask" />
+        <field name="dwState" />
+        <field name="dwStateMask" />
+        <field name="pszText" />
+        <field name="cchTextMax" />
+        <field name="iImage" />
+        <field name="lParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="STATDATA" namespace="System.Windows.Forms">
+        <constructor name="STATDATA" argnames="" />
+        <field name="advf" />
+        <field name="dwConnection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagDISPPARAMS" namespace="System.Windows.Forms">
+        <constructor name="tagDISPPARAMS" argnames="" />
+        <field name="rgvarg" />
+        <field name="rgdispidNamedArgs" />
+        <field name="cArgs" />
+        <field name="cNamedArgs" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagEXCEPINFO" namespace="System.Windows.Forms">
+        <constructor name="tagEXCEPINFO" argnames="" />
+        <field name="wCode" />
+        <field name="wReserved" />
+        <field name="bstrSource" />
+        <field name="bstrDescription" />
+        <field name="bstrHelpFile" />
+        <field name="dwHelpContext" />
+        <field name="pvReserved" />
+        <field name="pfnDeferredFillIn" />
+        <field name="scode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagFUNCDESC" namespace="System.Windows.Forms">
+        <constructor name="tagFUNCDESC" argnames="" />
+        <field name="memid" />
+        <field name="lprgscode" />
+        <field name="lprgelemdescParam" />
+        <field name="funckind" />
+        <field name="invkind" />
+        <field name="callconv" />
+        <field name="cParams" />
+        <field name="cParamsOpt" />
+        <field name="oVft" />
+        <field name="cScodes" />
+        <field name="elemdescFunc" />
+        <field name="wFuncFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagVARDESC" namespace="System.Windows.Forms">
+        <constructor name="tagVARDESC" argnames="" />
+        <field name="memid" />
+        <field name="lpstrSchema" />
+        <field name="unionMember" />
+        <field name="elemdescVar" />
+        <field name="wVarFlags" />
+        <field name="varkind" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DRAWITEMSTRUCT" namespace="System.Windows.Forms">
+        <constructor name="DRAWITEMSTRUCT" argnames="" />
+        <field name="CtlType" />
+        <field name="CtlID" />
+        <field name="itemID" />
+        <field name="itemAction" />
+        <field name="itemState" />
+        <field name="hwndItem" />
+        <field name="hDC" />
+        <field name="rcItem" />
+        <field name="itemData" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MEASUREITEMSTRUCT" namespace="System.Windows.Forms">
+        <constructor name="MEASUREITEMSTRUCT" argnames="" />
+        <field name="CtlType" />
+        <field name="CtlID" />
+        <field name="itemID" />
+        <field name="itemWidth" />
+        <field name="itemHeight" />
+        <field name="itemData" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HELPINFO" namespace="System.Windows.Forms">
+        <constructor name="HELPINFO" argnames="" />
+        <field name="cbSize" />
+        <field name="iContextType" />
+        <field name="iCtrlId" />
+        <field name="hItemHandle" />
+        <field name="dwContextId" />
+        <field name="MousePos" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ACCEL" namespace="System.Windows.Forms">
+        <constructor name="ACCEL" argnames="" />
+        <field name="fVirt" />
+        <field name="key" />
+        <field name="cmd" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MINMAXINFO" namespace="System.Windows.Forms">
+        <constructor name="MINMAXINFO" argnames="" />
+        <field name="ptReserved" />
+        <field name="ptMaxSize" />
+        <field name="ptMaxPosition" />
+        <field name="ptMinTrackSize" />
+        <field name="ptMaxTrackSize" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CREATESTRUCT" namespace="System.Windows.Forms">
+        <constructor name="CREATESTRUCT" argnames="" />
+        <field name="lpCreateParams" />
+        <field name="hInstance" />
+        <field name="hMenu" />
+        <field name="hwndParent" />
+        <field name="cy" />
+        <field name="cx" />
+        <field name="y" />
+        <field name="x" />
+        <field name="style" />
+        <field name="lpszName" />
+        <field name="lpszClass" />
+        <field name="dwExStyle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagCAUUID" namespace="System.Windows.Forms">
+        <constructor name="tagCAUUID" argnames="" />
+        <field name="cElems" />
+        <field name="pElems" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TOOLTIPTEXT" namespace="System.Windows.Forms">
+        <constructor name="TOOLTIPTEXT" argnames="" />
+        <field name="hdr" />
+        <field name="lpszText" />
+        <field name="szText" />
+        <field name="hinst" />
+        <field name="uFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TOOLTIPTEXTA" namespace="System.Windows.Forms">
+        <constructor name="TOOLTIPTEXTA" argnames="" />
+        <field name="hdr" />
+        <field name="lpszText" />
+        <field name="szText" />
+        <field name="hinst" />
+        <field name="uFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TV_HITTESTINFO" namespace="System.Windows.Forms">
+        <constructor name="TV_HITTESTINFO" argnames="" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <field name="flags" />
+        <field name="hItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMTVCUSTOMDRAW" namespace="System.Windows.Forms">
+        <constructor name="NMTVCUSTOMDRAW" argnames="" />
+        <field name="nmcd" />
+        <field name="clrText" />
+        <field name="clrTextBk" />
+        <field name="iLevel" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MCHITTESTINFO" namespace="System.Windows.Forms">
+        <constructor name="MCHITTESTINFO" argnames="" />
+        <field name="cbSize" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <field name="uHit" />
+        <field name="st_wYear" />
+        <field name="st_wMonth" />
+        <field name="st_wDayOfWeek" />
+        <field name="st_wDay" />
+        <field name="st_wHour" />
+        <field name="st_wMinute" />
+        <field name="st_wSecond" />
+        <field name="st_wMilliseconds" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMSELCHANGE" namespace="System.Windows.Forms">
+        <constructor name="NMSELCHANGE" argnames="" />
+        <field name="nmhdr" />
+        <field name="stSelStart" />
+        <field name="stSelEnd" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMDAYSTATE" namespace="System.Windows.Forms">
+        <constructor name="NMDAYSTATE" argnames="" />
+        <field name="nmhdr" />
+        <field name="stStart" />
+        <field name="cDayState" />
+        <field name="prgDayState" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMLVKEYDOWN" namespace="System.Windows.Forms">
+        <constructor name="NMLVKEYDOWN" argnames="" />
+        <field name="hdr" />
+        <field name="wVKey" />
+        <field name="flags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LVHITTESTINFO" namespace="System.Windows.Forms">
+        <constructor name="LVHITTESTINFO" argnames="" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <field name="flags" />
+        <field name="iItem" />
+        <field name="iSubItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LVCOLUMN_T" namespace="System.Windows.Forms">
+        <constructor name="LVCOLUMN_T" argnames="" />
+        <field name="mask" />
+        <field name="fmt" />
+        <field name="cx" />
+        <field name="pszText" />
+        <field name="cchTextMax" />
+        <field name="iSubItem" />
+        <field name="iImage" />
+        <field name="iOrder" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LVCOLUMN" namespace="System.Windows.Forms">
+        <constructor name="LVCOLUMN" argnames="" />
+        <field name="mask" />
+        <field name="fmt" />
+        <field name="cx" />
+        <field name="pszText" />
+        <field name="cchTextMax" />
+        <field name="iSubItem" />
+        <field name="iImage" />
+        <field name="iOrder" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMLVDISPINFO" namespace="System.Windows.Forms">
+        <constructor name="NMLVDISPINFO" argnames="" />
+        <field name="hdr" />
+        <field name="item" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMLVDISPINFO_NOTEXT" namespace="System.Windows.Forms">
+        <constructor name="NMLVDISPINFO_NOTEXT" argnames="" />
+        <field name="hdr" />
+        <field name="item" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CLIENTCREATESTRUCT" namespace="System.Windows.Forms">
+        <constructor name="CLIENTCREATESTRUCT(System.IntPtr, System.Int32)" argnames="hmenu, idFirst" />
+        <field name="hWindowMenu" />
+        <field name="idFirstChild" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMDATETIMECHANGE" namespace="System.Windows.Forms">
+        <constructor name="NMDATETIMECHANGE" argnames="" />
+        <field name="nmhdr" />
+        <field name="dwFlags" />
+        <field name="st" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMDATETIMEFORMAT" namespace="System.Windows.Forms">
+        <constructor name="NMDATETIMEFORMAT" argnames="" />
+        <field name="nmhdr" />
+        <field name="pszFormat" />
+        <field name="st" />
+        <field name="pszDisplay" />
+        <field name="szDisplay" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMDATETIMEFORMATQUERY" namespace="System.Windows.Forms">
+        <constructor name="NMDATETIMEFORMATQUERY" argnames="" />
+        <field name="nmhdr" />
+        <field name="pszFormat" />
+        <field name="szMax" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMDATETIMEWMKEYDOWN" namespace="System.Windows.Forms">
+        <constructor name="NMDATETIMEWMKEYDOWN" argnames="" />
+        <field name="nmhdr" />
+        <field name="nVirtKey" />
+        <field name="pszFormat" />
+        <field name="st" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="COPYDATASTRUCT" namespace="System.Windows.Forms">
+        <constructor name="COPYDATASTRUCT" argnames="" />
+        <field name="dwData" />
+        <field name="cbData" />
+        <field name="lpData" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NMHEADER" namespace="System.Windows.Forms">
+        <constructor name="NMHEADER" argnames="" />
+        <field name="hwndFrom" />
+        <field name="idFrom" />
+        <field name="code" />
+        <field name="iItem" />
+        <field name="iButton" />
+        <field name="pItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MOUSEHOOKSTRUCT" namespace="System.Windows.Forms">
+        <constructor name="MOUSEHOOKSTRUCT" argnames="" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <field name="hWnd" />
+        <field name="wHitTestCode" />
+        <field name="dwExtraInfo" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CHARRANGE" namespace="System.Windows.Forms">
+        <constructor name="CHARRANGE" argnames="" />
+        <field name="cpMin" />
+        <field name="cpMax" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CHARFORMATA" namespace="System.Windows.Forms">
+        <constructor name="CHARFORMATA" argnames="" />
+        <field name="cbSize" />
+        <field name="dwMask" />
+        <field name="dwEffects" />
+        <field name="yHeight" />
+        <field name="yOffset" />
+        <field name="crTextColor" />
+        <field name="bCharSet" />
+        <field name="bPitchAndFamily" />
+        <field name="szFaceName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TEXTRANGE" namespace="System.Windows.Forms">
+        <constructor name="TEXTRANGE" argnames="" />
+        <field name="chrg" />
+        <field name="lpstrText" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SELCHANGE" namespace="System.Windows.Forms">
+        <constructor name="SELCHANGE" argnames="" />
+        <field name="nmhdr" />
+        <field name="chrg" />
+        <field name="seltyp" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PARAFORMAT" namespace="System.Windows.Forms">
+        <constructor name="PARAFORMAT" argnames="" />
+        <field name="cbSize" />
+        <field name="dwMask" />
+        <field name="wNumbering" />
+        <field name="wReserved" />
+        <field name="dxStartIndent" />
+        <field name="dxRightIndent" />
+        <field name="dxOffset" />
+        <field name="wAlignment" />
+        <field name="cTabCount" />
+        <field name="rgxTabs" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FINDTEXT" namespace="System.Windows.Forms">
+        <constructor name="FINDTEXT" argnames="" />
+        <field name="chrg" />
+        <field name="lpstrText" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="REPASTESPECIAL" namespace="System.Windows.Forms">
+        <constructor name="REPASTESPECIAL" argnames="" />
+        <field name="dwAspect" />
+        <field name="dwParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ENLINK" namespace="System.Windows.Forms">
+        <constructor name="ENLINK" argnames="" />
+        <field name="nmhdr" />
+        <field name="msg" />
+        <field name="wParam" />
+        <field name="lParam" />
+        <field name="charrange" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CharBuffer" namespace="System.Windows.Forms">
+        <constructor name="CharBuffer" argnames="" />
+        <method name="PutString(System.String)" argnames="s" returntype="System.Void" />
+        <method name="PutCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
+        <method name="GetString" argnames="" returntype="System.String" />
+        <method name="AllocCoTaskMem" argnames="" returntype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateBuffer(System.Int32)" argnames="size" returntype="System.Windows.Forms.NativeMethods+CharBuffer" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AnsiCharBuffer" namespace="System.Windows.Forms">
+        <constructor name="AnsiCharBuffer(System.Int32)" argnames="size" />
+        <method name="PutString(System.String)" argnames="s" returntype="System.Void" />
+        <method name="PutCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
+        <method name="GetString" argnames="" returntype="System.String" />
+        <method name="AllocCoTaskMem" argnames="" returntype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UnicodeCharBuffer" namespace="System.Windows.Forms">
+        <constructor name="UnicodeCharBuffer(System.Int32)" argnames="size" />
+        <method name="PutString(System.String)" argnames="s" returntype="System.Void" />
+        <method name="PutCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
+        <method name="GetString" argnames="" returntype="System.String" />
+        <method name="AllocCoTaskMem" argnames="" returntype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ENDROPFILES" namespace="System.Windows.Forms">
+        <constructor name="ENDROPFILES" argnames="" />
+        <field name="nmhdr" />
+        <field name="hDrop" />
+        <field name="cp" />
+        <field name="fProtected" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="REQRESIZE" namespace="System.Windows.Forms">
+        <constructor name="REQRESIZE" argnames="" />
+        <field name="nmhdr" />
+        <field name="rc" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ENPROTECTED" namespace="System.Windows.Forms">
+        <constructor name="ENPROTECTED" argnames="" />
+        <field name="nmhdr" />
+        <field name="msg" />
+        <field name="wParam" />
+        <field name="lParam" />
+        <field name="chrg" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ActiveX" namespace="System.Windows.Forms">
+        <constructor name="ActiveX" argnames="" />
+        <field name="IID_IUnknown" />
+        <field name="OCM__BASE" />
+        <field name="DISPID_VALUE" />
+        <field name="DISPID_UNKNOWN" />
+        <field name="DISPID_AUTOSIZE" />
+        <field name="DISPID_BACKCOLOR" />
+        <field name="DISPID_BACKSTYLE" />
+        <field name="DISPID_BORDERCOLOR" />
+        <field name="DISPID_BORDERSTYLE" />
+        <field name="DISPID_BORDERWIDTH" />
+        <field name="DISPID_DRAWMODE" />
+        <field name="DISPID_DRAWSTYLE" />
+        <field name="DISPID_DRAWWIDTH" />
+        <field name="DISPID_FILLCOLOR" />
+        <field name="DISPID_FILLSTYLE" />
+        <field name="DISPID_FONT" />
+        <field name="DISPID_FORECOLOR" />
+        <field name="DISPID_ENABLED" />
+        <field name="DISPID_HWND" />
+        <field name="DISPID_TABSTOP" />
+        <field name="DISPID_TEXT" />
+        <field name="DISPID_CAPTION" />
+        <field name="DISPID_BORDERVISIBLE" />
+        <field name="DISPID_APPEARANCE" />
+        <field name="DISPID_MOUSEPOINTER" />
+        <field name="DISPID_MOUSEICON" />
+        <field name="DISPID_PICTURE" />
+        <field name="DISPID_VALID" />
+        <field name="DISPID_READYSTATE" />
+        <field name="DISPID_REFRESH" />
+        <field name="DISPID_DOCLICK" />
+        <field name="DISPID_ABOUTBOX" />
+        <field name="DISPID_CLICK" />
+        <field name="DISPID_DBLCLICK" />
+        <field name="DISPID_KEYDOWN" />
+        <field name="DISPID_KEYPRESS" />
+        <field name="DISPID_KEYUP" />
+        <field name="DISPID_MOUSEDOWN" />
+        <field name="DISPID_MOUSEMOVE" />
+        <field name="DISPID_MOUSEUP" />
+        <field name="DISPID_ERROREVENT" />
+        <field name="DISPID_RIGHTTOLEFT" />
+        <field name="DISPID_READYSTATECHANGE" />
+        <field name="DISPID_AMBIENT_BACKCOLOR" />
+        <field name="DISPID_AMBIENT_DISPLAYNAME" />
+        <field name="DISPID_AMBIENT_FONT" />
+        <field name="DISPID_AMBIENT_FORECOLOR" />
+        <field name="DISPID_AMBIENT_LOCALEID" />
+        <field name="DISPID_AMBIENT_MESSAGEREFLECT" />
+        <field name="DISPID_AMBIENT_SCALEUNITS" />
+        <field name="DISPID_AMBIENT_TEXTALIGN" />
+        <field name="DISPID_AMBIENT_USERMODE" />
+        <field name="DISPID_AMBIENT_UIDEAD" />
+        <field name="DISPID_AMBIENT_SHOWGRABHANDLES" />
+        <field name="DISPID_AMBIENT_SHOWHATCHING" />
+        <field name="DISPID_AMBIENT_DISPLAYASDEFAULT" />
+        <field name="DISPID_AMBIENT_SUPPORTSMNEMONICS" />
+        <field name="DISPID_AMBIENT_AUTOCLIP" />
+        <field name="DISPID_AMBIENT_APPEARANCE" />
+        <field name="DISPID_AMBIENT_PALETTE" />
+        <field name="DISPID_AMBIENT_TRANSFERPRIORITY" />
+        <field name="DISPID_AMBIENT_RIGHTTOLEFT" />
+        <field name="DISPID_Name" />
+        <field name="DISPID_Delete" />
+        <field name="DISPID_Object" />
+        <field name="DISPID_Parent" />
+        <field name="DVASPECT_CONTENT" />
+        <field name="DVASPECT_THUMBNAIL" />
+        <field name="DVASPECT_ICON" />
+        <field name="DVASPECT_DOCPRINT" />
+        <field name="OLEMISC_RECOMPOSEONRESIZE" />
+        <field name="OLEMISC_ONLYICONIC" />
+        <field name="OLEMISC_INSERTNOTREPLACE" />
+        <field name="OLEMISC_STATIC" />
+        <field name="OLEMISC_CANTLINKINSIDE" />
+        <field name="OLEMISC_CANLINKBYOLE1" />
+        <field name="OLEMISC_ISLINKOBJECT" />
+        <field name="OLEMISC_INSIDEOUT" />
+        <field name="OLEMISC_ACTIVATEWHENVISIBLE" />
+        <field name="OLEMISC_RENDERINGISDEVICEINDEPENDENT" />
+        <field name="OLEMISC_INVISIBLEATRUNTIME" />
+        <field name="OLEMISC_ALWAYSRUN" />
+        <field name="OLEMISC_ACTSLIKEBUTTON" />
+        <field name="OLEMISC_ACTSLIKELABEL" />
+        <field name="OLEMISC_NOUIACTIVATE" />
+        <field name="OLEMISC_ALIGNABLE" />
+        <field name="OLEMISC_SIMPLEFRAME" />
+        <field name="OLEMISC_SETCLIENTSITEFIRST" />
+        <field name="OLEMISC_IMEMODE" />
+        <field name="OLEMISC_IGNOREACTIVATEWHENVISIBLE" />
+        <field name="OLEMISC_WANTSTOMENUMERGE" />
+        <field name="OLEMISC_SUPPORTSMULTILEVELUNDO" />
+        <field name="QACONTAINER_SHOWHATCHING" />
+        <field name="QACONTAINER_SHOWGRABHANDLES" />
+        <field name="QACONTAINER_USERMODE" />
+        <field name="QACONTAINER_DISPLAYASDEFAULT" />
+        <field name="QACONTAINER_UIDEAD" />
+        <field name="QACONTAINER_AUTOCLIP" />
+        <field name="QACONTAINER_MESSAGEREFLECT" />
+        <field name="QACONTAINER_SUPPORTSMNEMONICS" />
+        <field name="XFORMCOORDS_POSITION" />
+        <field name="XFORMCOORDS_SIZE" />
+        <field name="XFORMCOORDS_HIMETRICTOCONTAINER" />
+        <field name="XFORMCOORDS_CONTAINERTOHIMETRIC" />
+        <field name="PROPCAT_Nil" />
+        <field name="PROPCAT_Misc" />
+        <field name="PROPCAT_Font" />
+        <field name="PROPCAT_Position" />
+        <field name="PROPCAT_Appearance" />
+        <field name="PROPCAT_Behavior" />
+        <field name="PROPCAT_Data" />
+        <field name="PROPCAT_List" />
+        <field name="PROPCAT_Text" />
+        <field name="PROPCAT_Scale" />
+        <field name="PROPCAT_DDE" />
+        <field name="GC_WCH_SIBLING" />
+        <field name="GC_WCH_CONTAINER" />
+        <field name="GC_WCH_CONTAINED" />
+        <field name="GC_WCH_ALL" />
+        <field name="GC_WCH_FREVERSEDIR" />
+        <field name="GC_WCH_FONLYNEXT" />
+        <field name="GC_WCH_FONLYPREV" />
+        <field name="GC_WCH_FSELECTED" />
+        <field name="OLECONTF_EMBEDDINGS" />
+        <field name="OLECONTF_LINKS" />
+        <field name="OLECONTF_OTHERS" />
+        <field name="OLECONTF_ONLYUSER" />
+        <field name="OLECONTF_ONLYIFRUNNING" />
+        <field name="ALIGN_MIN" />
+        <field name="ALIGN_NO_CHANGE" />
+        <field name="ALIGN_TOP" />
+        <field name="ALIGN_BOTTOM" />
+        <field name="ALIGN_LEFT" />
+        <field name="ALIGN_RIGHT" />
+        <field name="ALIGN_MAX" />
+        <field name="OLEVERBATTRIB_NEVERDIRTIES" />
+        <field name="OLEVERBATTRIB_ONCONTAINERMENU" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Util" namespace="System.Windows.Forms">
+        <constructor name="Util" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="MAKELONG(System.Int32, System.Int32)" argnames="low, high" returntype="System.Int32" />
+        <method name="MAKELPARAM(System.Int32, System.Int32)" argnames="low, high" returntype="System.IntPtr" />
+        <method name="HIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="HIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="LOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="LOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="SignedHIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="SignedLOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="SignedHIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="SignedLOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="GetPInvokeStringLength(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagTLIBATTR" namespace="System.Windows.Forms">
+        <constructor name="tagTLIBATTR" argnames="" />
+        <field name="guid" />
+        <field name="lcid" />
+        <field name="syskind" />
+        <field name="wMajorVerNum" />
+        <field name="wMinorVerNum" />
+        <field name="wLibFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagTYPEDESC" namespace="System.Windows.Forms">
+        <constructor name="tagTYPEDESC" argnames="" />
+        <field name="unionMember" />
+        <field name="vt" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CommonHandles" namespace="System.Windows.Forms">
+        <constructor name="CommonHandles" argnames="" />
+        <field name="Accelerator" />
+        <field name="Cursor" />
+        <field name="EMF" />
+        <field name="Find" />
+        <field name="GDI" />
+        <field name="HDC" />
+        <field name="Icon" />
+        <field name="Kernel" />
+        <field name="Menu" />
+        <field name="Window" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HandleCollector" namespace="System.Windows.Forms">
+        <constructor name="HandleCollector" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
+        <method name="RegisterType(System.String, System.Int32, System.Int32)" argnames="typeName, expense, initialThreshold" returntype="System.Int32" />
+        <method name="Remove(System.IntPtr, System.Int32)" argnames="handle, type" returntype="System.IntPtr" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="HandleAdded" />
+        <event name="HandleRemoved" />
+    </class>
+    <class name="EVENTMSG" namespace="System.Windows.Forms">
+        <constructor name="EVENTMSG" argnames="" />
+        <field name="message" />
+        <field name="paramL" />
+        <field name="paramH" />
+        <field name="time" />
+        <field name="hwnd" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagTYPEATTR" namespace="System.Windows.Forms">
+        <constructor name="tagTYPEATTR" argnames="" />
+        <field name="guid" />
+        <field name="lcid" />
+        <field name="dwReserved" />
+        <field name="memidConstructor" />
+        <field name="memidDestructor" />
+        <field name="lpstrSchema" />
+        <field name="cbSizeInstance" />
+        <field name="typekind" />
+        <field name="cFuncs" />
+        <field name="cVars" />
+        <field name="cImplTypes" />
+        <field name="cbSizeVft" />
+        <field name="cbAlignment" />
+        <field name="wTypeFlags" />
+        <field name="wMajorVerNum" />
+        <field name="wMinorVerNum" />
+        <field name="tdescAlias_unionMember" />
+        <field name="tdescAlias_vt" />
+        <field name="idldescType_dwReserved" />
+        <field name="idldescType_wIDLFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Get_tdescAlias" argnames="" returntype="System.Windows.Forms.NativeMethods+tagTYPEDESC" />
+        <method name="Get_idldescType" argnames="" returntype="System.Windows.Forms.NativeMethods+tagIDLDESC" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="tagELEMDESC" namespace="System.Windows.Forms">
+        <constructor name="tagELEMDESC" argnames="" />
+        <field name="tdesc" />
+        <field name="paramdesc" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BITMAPINFO_ARRAY" namespace="System.Windows.Forms">
+        <constructor name="BITMAPINFO_ARRAY" argnames="" />
+        <field name="bmiHeader" />
+        <field name="bmiColors" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NavigateEventArgs" namespace="System.Windows.Forms">
+        <constructor name="NavigateEventArgs(System.Boolean)" argnames="isForward" />
+        <property name="Forward" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NodeLabelEditEventArgs" namespace="System.Windows.Forms">
+        <constructor name="NodeLabelEditEventArgs(System.Windows.Forms.TreeNode)" argnames="node" />
+        <constructor name="NodeLabelEditEventArgs(System.Windows.Forms.TreeNode, System.String)" argnames="node, label" />
+        <property name="CancelEdit" propertytype="System.Boolean" />
+        <property name="Label" propertytype="System.String" />
+        <property name="Node" propertytype="System.Windows.Forms.TreeNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NumericUpDown" namespace="System.Windows.Forms">
+        <constructor name="NumericUpDown" argnames="" />
+        <property name="DecimalPlaces" propertytype="System.Int32" />
+        <property name="Hexadecimal" propertytype="System.Boolean" />
+        <property name="Increment" propertytype="System.Decimal" />
+        <property name="Maximum" propertytype="System.Decimal" />
+        <property name="Minimum" propertytype="System.Decimal" />
+        <property name="Text" propertytype="System.String" />
+        <property name="ThousandsSeparator" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.Decimal" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
+        <property name="BackColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="ChangingText" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="CreateParams" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Size" />
+        <property name="DockPadding" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="Focused" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="ForeColor" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Drawing.Color" />
+        <property name="InterceptArrowKeys" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="PreferredHeight" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Int32" />
+        <property name="ReadOnly" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="TextAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="UpDownAlign" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Windows.Forms.LeftRightAlignment" />
+        <property name="UserEdit" inherited="System.Windows.Forms.UpDownBase" propertytype="System.Boolean" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="OnValueChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="ValidateEditText" argnames="" returntype="System.Void" />
+        <method name="UpdateEditText" argnames="" returntype="System.Void" />
+        <method name="UpButton" argnames="" returntype="System.Void" />
+        <method name="OnTextBoxTextChanged(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnTextBoxResize(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnTextBoxLostFocus(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnTextBoxKeyPress(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnTextBoxKeyDown(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnChanged(System.Object, System.EventArgs)" argnames="source, e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="DownButton" argnames="" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ParseEditText" argnames="" returntype="System.Void" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.UpDownBase" returntype="System.Void" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ValueChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="OpacityConverter" namespace="System.Windows.Forms">
+        <constructor name="OpacityConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OpenFileDialog" namespace="System.Windows.Forms">
+        <constructor name="OpenFileDialog" argnames="" />
+        <property name="CheckFileExists" propertytype="System.Boolean" />
+        <property name="Multiselect" propertytype="System.Boolean" />
+        <property name="ReadOnlyChecked" propertytype="System.Boolean" />
+        <property name="ShowReadOnly" propertytype="System.Boolean" />
+        <property name="AddExtension" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="CheckPathExists" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="DefaultExt" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="DereferenceLinks" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="FileName" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="FileNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.String[]" />
+        <property name="Filter" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="FilterIndex" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
+        <property name="InitialDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="Instance" inherited="System.Windows.Forms.FileDialog" propertytype="System.IntPtr" />
+        <property name="Options" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
+        <property name="RestoreDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="ShowHelp" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="Title" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="ValidateNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" inherited="System.Windows.Forms.FileDialog" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.FileDialog" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.FileDialog" returntype="System.String" />
+        <method name="OpenFile" argnames="" returntype="System.IO.Stream" />
+        <method name="OnFileOk(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.FileDialog" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="FileOk" inherited="System.Windows.Forms.FileDialog" />
+        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="OSFeature" namespace="System.Windows.Forms">
+        <constructor name="OSFeature" argnames="" />
+        <field name="LayeredWindows" />
+        <field name="Themes" />
+        <property name="Feature" propertytype="System.Windows.Forms.OSFeature" />
+        <method name="GetVersionPresent(System.Object)" argnames="feature" returntype="System.Version" />
+        <method name="IsPresent(System.Object, System.Version)" argnames="feature, minimumVersion" inherited="System.Windows.Forms.FeatureSupport" returntype="System.Boolean" />
+        <method name="IsPresent(System.Object)" argnames="feature" inherited="System.Windows.Forms.FeatureSupport" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OwnerDrawPropertyBag" namespace="System.Windows.Forms">
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="FontHandle" propertytype="System.IntPtr" />
+        <method name="IsEmpty" argnames="" returntype="System.Boolean" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Copy(System.Windows.Forms.OwnerDrawPropertyBag)" argnames="value" returntype="System.Windows.Forms.OwnerDrawPropertyBag" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyGrid" namespace="System.Windows.Forms">
+        <class name="PropertyTabCollection" namespace="System.Windows.Forms">
+            <property name="Count" propertytype="System.Int32" />
+            <property name="Item" propertytype="System.Windows.Forms.Design.PropertyTab" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="AddTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
+            <method name="AddTabType(System.Type, System.ComponentModel.PropertyTabScope)" argnames="propertyTabType, tabScope" returntype="System.Void" />
+            <method name="Clear(System.ComponentModel.PropertyTabScope)" argnames="tabScope" returntype="System.Void" />
+            <method name="RemoveTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="PropertyTabCollection" argnames="" />
+        <property name="ActiveDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <property name="AutoScroll" propertytype="System.Boolean" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BrowsableAttributes" propertytype="System.ComponentModel.AttributeCollection" />
+        <property name="CanCopy" propertytype="System.Boolean" />
+        <property name="CanCut" propertytype="System.Boolean" />
+        <property name="CanPaste" propertytype="System.Boolean" />
+        <property name="CanUndo" propertytype="System.Boolean" />
+        <property name="CanShowCommands" propertytype="System.Boolean" />
+        <property name="CommandsBackColor" propertytype="System.Drawing.Color" />
+        <property name="CommandsForeColor" propertytype="System.Drawing.Color" />
+        <property name="CommandsVisible" propertytype="System.Boolean" />
+        <property name="CommandsVisibleIfAvailable" propertytype="System.Boolean" />
+        <property name="ContextMenuDefaultLocation" propertytype="System.Drawing.Point" />
+        <property name="Controls" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DefaultTabType" propertytype="System.Type" />
+        <property name="DrawFlatToolbar" propertytype="System.Boolean" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="FreezePainting" propertytype="System.Boolean" />
+        <property name="HelpBackColor" propertytype="System.Drawing.Color" />
+        <property name="HelpForeColor" propertytype="System.Drawing.Color" />
+        <property name="HelpVisible" propertytype="System.Boolean" />
+        <property name="LineColor" propertytype="System.Drawing.Color" />
+        <property name="PropertySort" propertytype="System.Windows.Forms.PropertySort" />
+        <property name="PropertyTabs" propertytype="System.Windows.Forms.PropertyGrid+PropertyTabCollection" />
+        <property name="SelectedObject" propertytype="System.Object" />
+        <property name="SelectedObjects" propertytype="System.Object[]" />
+        <property name="SelectedTab" propertytype="System.Windows.Forms.Design.PropertyTab" />
+        <property name="SelectedGridItem" propertytype="System.Windows.Forms.GridItem" />
+        <property name="ShowFocusCues" propertytype="System.Boolean" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="LargeButtons" propertytype="System.Boolean" />
+        <property name="ToolbarVisible" propertytype="System.Boolean" />
+        <property name="ViewBackColor" propertytype="System.Drawing.Color" />
+        <property name="ViewForeColor" propertytype="System.Drawing.Color" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="CreateParams" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnSelectedObjectsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSelectedGridItemChanged(System.Windows.Forms.SelectedGridItemChangedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnPropertyTabChanged(System.Windows.Forms.PropertyTabChangedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnPropertyValueChanged(System.Windows.Forms.PropertyValueChangedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="CreatePropertyTab(System.Type)" argnames="tabType" returntype="System.Windows.Forms.Design.PropertyTab" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="me" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="me" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="me" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="CollapseAllGridItems" argnames="" returntype="System.Void" />
+        <method name="ExpandAllGridItems" argnames="" returntype="System.Void" />
+        <method name="OnComComponentNameChanged(System.ComponentModel.Design.ComponentRenameEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnNotifyPropertyValueUIItemsChanged(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="RefreshTabs(System.ComponentModel.PropertyTabScope)" argnames="tabScope" returntype="System.Void" />
+        <method name="ResetSelectedProperty" argnames="" returntype="System.Void" />
+        <method name="ShowEventsButton(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PropertyValueChanged" />
+        <event name="PropertyTabChanged" />
+        <event name="PropertySortChanged" />
+        <event name="SelectedGridItemChanged" />
+        <event name="SelectedObjectsChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PropertyTabCollection" namespace="System.Windows.Forms">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Windows.Forms.Design.PropertyTab" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
+        <method name="AddTabType(System.Type, System.ComponentModel.PropertyTabScope)" argnames="propertyTabType, tabScope" returntype="System.Void" />
+        <method name="Clear(System.ComponentModel.PropertyTabScope)" argnames="tabScope" returntype="System.Void" />
+        <method name="RemoveTabType(System.Type)" argnames="propertyTabType" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ButtonBase" namespace="System.Windows.Forms">
+        <class name="ButtonBaseAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="ButtonBaseAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
+            <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+            <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ButtonBaseAccessibleObject" argnames="" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDefault" propertytype="System.Boolean" />
+        <property name="FlatStyle" propertytype="System.Windows.Forms.FlatStyle" />
+        <property name="Image" propertytype="System.Drawing.Image" />
+        <property name="ImageAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="ImageIndex" propertytype="System.Int32" />
+        <property name="ImageList" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="OverChangeRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="OwnerDraw" propertytype="System.Boolean" />
+        <property name="DownChangeRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="MouseIsPressed" propertytype="System.Boolean" />
+        <property name="MouseIsDown" propertytype="System.Boolean" />
+        <property name="MouseIsOver" propertytype="System.Boolean" />
+        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetFlagsandPaint" argnames="" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ButtonBaseAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="ButtonBaseAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
+        <property name="DefaultAction" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+        <property name="Role" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RadioButton" namespace="System.Windows.Forms">
+        <class name="RadioButtonAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="RadioButtonAccessibleObject(System.Windows.Forms.RadioButton)" argnames="owner" />
+            <property name="DefaultAction" propertytype="System.String" />
+            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="RadioButtonAccessibleObject" argnames="" />
+        <property name="AutoCheck" propertytype="System.Boolean" />
+        <property name="Appearance" propertytype="System.Windows.Forms.Appearance" />
+        <property name="CheckAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="Checked" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="OverChangeRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="DownChangeRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDefault" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Boolean" />
+        <property name="FlatStyle" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.FlatStyle" />
+        <property name="Image" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Image" />
+        <property name="ImageAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
+        <property name="ImageIndex" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Int32" />
+        <property name="ImageList" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnCheckedChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="PerformClick" argnames="" returntype="System.Void" />
+        <method name="ResetFlagsandPaint" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AppearanceChanged" />
+        <event name="CheckedChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="RadioButtonAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="RadioButtonAccessibleObject(System.Windows.Forms.RadioButton)" argnames="owner" />
+        <property name="DefaultAction" propertytype="System.String" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RichTextBox" namespace="System.Windows.Forms">
+        <constructor name="RichTextBox" argnames="" />
+        <property name="RichTextDbg" propertytype="System.Diagnostics.TraceSwitch" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="AutoWordSelection" propertytype="System.Boolean" />
+        <property name="AutoSize" propertytype="System.Boolean" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BulletIndent" propertytype="System.Int32" />
+        <property name="CanRaiseTextChangedEvent" propertytype="System.Boolean" />
+        <property name="CanRedo" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DetectUrls" propertytype="System.Boolean" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="MaxLength" propertytype="System.Int32" />
+        <property name="Multiline" propertytype="System.Boolean" />
+        <property name="RedoActionName" propertytype="System.String" />
+        <property name="RightMargin" propertytype="System.Int32" />
+        <property name="Rtf" propertytype="System.String" />
+        <property name="ScrollBars" propertytype="System.Windows.Forms.RichTextBoxScrollBars" />
+        <property name="SelectionAlignment" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="SelectionBullet" propertytype="System.Boolean" />
+        <property name="SelectionCharOffset" propertytype="System.Int32" />
+        <property name="SelectionColor" propertytype="System.Drawing.Color" />
+        <property name="SelectionFont" propertytype="System.Drawing.Font" />
+        <property name="SelectionHangingIndent" propertytype="System.Int32" />
+        <property name="SelectionIndent" propertytype="System.Int32" />
+        <property name="SelectionLength" propertytype="System.Int32" />
+        <property name="SelectionProtected" propertytype="System.Boolean" />
+        <property name="SelectedRtf" propertytype="System.String" />
+        <property name="SelectionRightIndent" propertytype="System.Int32" />
+        <property name="SelectionTabs" propertytype="System.Int32[]" />
+        <property name="SelectedText" propertytype="System.String" />
+        <property name="SelectionType" propertytype="System.Windows.Forms.RichTextBoxSelectionTypes" />
+        <property name="SetSelectionInCreateHandle" propertytype="System.Boolean" />
+        <property name="ShowSelectionMargin" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TextLength" propertytype="System.Int32" />
+        <property name="UndoActionName" propertytype="System.String" />
+        <property name="ZoomFactor" propertytype="System.Single" />
+        <property name="AcceptsTab" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Drawing.Color" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="CanUndo" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="HideSelection" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="Lines" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.String[]" />
+        <property name="Modified" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="PreferredHeight" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="ReadOnly" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="SelectionStart" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Int32" />
+        <property name="WordWrap" inherited="System.Windows.Forms.TextBoxBase" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="CreateRichEditOleCallback" argnames="" returntype="System.Object" />
+        <method name="OnVScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSelectionChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnProtected(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnImeChange(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLinkClicked(System.Windows.Forms.LinkClickedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnHScroll(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnContentsResized(System.Windows.Forms.ContentsResizedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnReadOnlyChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnMultilineChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnModifiedChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnHideSelectionChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnBorderStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnAcceptsTabChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnAutoSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.String" />
+        <method name="CanPaste(System.Windows.Forms.DataFormats.Format)" argnames="clipFormat" returntype="System.Boolean" />
+        <method name="Find(System.String)" argnames="str" returntype="System.Int32" />
+        <method name="Find(System.String, System.Windows.Forms.RichTextBoxFinds)" argnames="str, options" returntype="System.Int32" />
+        <method name="Find(System.String, System.Int32, System.Windows.Forms.RichTextBoxFinds)" argnames="str, start, options" returntype="System.Int32" />
+        <method name="Find(System.String, System.Int32, System.Int32, System.Windows.Forms.RichTextBoxFinds)" argnames="str, start, end, options" returntype="System.Int32" />
+        <method name="Find(System.Char[])" argnames="characterSet" returntype="System.Int32" />
+        <method name="Find(System.Char[], System.Int32)" argnames="characterSet, start" returntype="System.Int32" />
+        <method name="Find(System.Char[], System.Int32, System.Int32)" argnames="characterSet, start, end" returntype="System.Int32" />
+        <method name="GetCharFromPosition(System.Drawing.Point)" argnames="pt" returntype="System.Char" />
+        <method name="GetCharIndexFromPosition(System.Drawing.Point)" argnames="pt" returntype="System.Int32" />
+        <method name="GetLineFromCharIndex(System.Int32)" argnames="index" returntype="System.Int32" />
+        <method name="GetPositionFromCharIndex(System.Int32)" argnames="index" returntype="System.Drawing.Point" />
+        <method name="LoadFile(System.String)" argnames="path" returntype="System.Void" />
+        <method name="LoadFile(System.String, System.Windows.Forms.RichTextBoxStreamType)" argnames="path, fileType" returntype="System.Void" />
+        <method name="LoadFile(System.IO.Stream, System.Windows.Forms.RichTextBoxStreamType)" argnames="data, fileType" returntype="System.Void" />
+        <method name="Paste(System.Windows.Forms.DataFormats.Format)" argnames="clipFormat" returntype="System.Void" />
+        <method name="Redo" argnames="" returntype="System.Void" />
+        <method name="SaveFile(System.String)" argnames="path" returntype="System.Void" />
+        <method name="SaveFile(System.String, System.Windows.Forms.RichTextBoxStreamType)" argnames="path, fileType" returntype="System.Void" />
+        <method name="SaveFile(System.IO.Stream, System.Windows.Forms.RichTextBoxStreamType)" argnames="data, fileType" returntype="System.Void" />
+        <method name="AppendText(System.String)" argnames="text" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ClearUndo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Copy" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Cut" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Paste" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ScrollToCaret" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="SelectAll" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="Undo" argnames="" inherited="System.Windows.Forms.TextBoxBase" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ContentsResized" />
+        <event name="DoubleClick" />
+        <event name="DragDrop" />
+        <event name="DragEnter" />
+        <event name="DragLeave" />
+        <event name="DragOver" />
+        <event name="GiveFeedback" />
+        <event name="QueryContinueDrag" />
+        <event name="HScroll" />
+        <event name="LinkClicked" />
+        <event name="ImeChange" />
+        <event name="Protected" />
+        <event name="SelectionChanged" />
+        <event name="VScroll" />
+        <event name="AcceptsTabChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="AutoSizeChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="BorderStyleChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="Click" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="HideSelectionChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="ModifiedChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="MultilineChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="ReadOnlyChanged" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="Paint" inherited="System.Windows.Forms.TextBoxBase" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PropertyManager" namespace="System.Windows.Forms">
+        <constructor name="PropertyManager" argnames="" />
+        <property name="Current" propertytype="System.Object" />
+        <property name="BindType" propertytype="System.Type" />
+        <property name="DataSource" propertytype="System.Object" />
+        <property name="IsBinding" propertytype="System.Boolean" />
+        <property name="Position" propertytype="System.Int32" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Bindings" inherited="System.Windows.Forms.BindingManagerBase" propertytype="System.Windows.Forms.BindingsCollection" />
+        <method name="ResumeBinding" argnames="" returntype="System.Void" />
+        <method name="SuspendBinding" argnames="" returntype="System.Void" />
+        <method name="UpdateIsBinding" argnames="" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="AddNew" argnames="" returntype="System.Void" />
+        <method name="EndCurrentEdit" argnames="" returntype="System.Void" />
+        <method name="CancelCurrentEdit" argnames="" returntype="System.Void" />
+        <method name="GetItemProperties(System.Type, System.Int32, System.Collections.ArrayList, System.Collections.ArrayList)" argnames="listType, offset, dataSources, listAccessors" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetItemProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="PullData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
+        <method name="PushData" argnames="" inherited="System.Windows.Forms.BindingManagerBase" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CurrentChanged" inherited="System.Windows.Forms.BindingManagerBase" />
+        <event name="PositionChanged" inherited="System.Windows.Forms.BindingManagerBase" />
+    </class>
+    <class name="PropertyTabChangedEventArgs" namespace="System.Windows.Forms">
+        <constructor name="PropertyTabChangedEventArgs(System.Windows.Forms.Design.PropertyTab, System.Windows.Forms.Design.PropertyTab)" argnames="oldTab, newTab" />
+        <property name="OldTab" propertytype="System.Windows.Forms.Design.PropertyTab" />
+        <property name="NewTab" propertytype="System.Windows.Forms.Design.PropertyTab" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyValueChangedEventArgs" namespace="System.Windows.Forms">
+        <constructor name="PropertyValueChangedEventArgs(System.Windows.Forms.GridItem, System.Object)" argnames="changedItem, oldValue" />
+        <property name="ChangedItem" propertytype="System.Windows.Forms.GridItem" />
+        <property name="OldValue" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="QueryAccessibilityHelpEventArgs" namespace="System.Windows.Forms">
+        <constructor name="QueryAccessibilityHelpEventArgs" argnames="" />
+        <constructor name="QueryAccessibilityHelpEventArgs(System.String, System.String, System.String)" argnames="helpNamespace, helpString, helpKeyword" />
+        <property name="HelpNamespace" propertytype="System.String" />
+        <property name="HelpString" propertytype="System.String" />
+        <property name="HelpKeyword" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="QueryContinueDragEventArgs" namespace="System.Windows.Forms">
+        <constructor name="QueryContinueDragEventArgs(System.Int32, System.Boolean, System.Windows.Forms.DragAction)" argnames="keyState, escapePressed, action" />
+        <property name="KeyState" propertytype="System.Int32" />
+        <property name="EscapePressed" propertytype="System.Boolean" />
+        <property name="Action" propertytype="System.Windows.Forms.DragAction" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ContentsResizedEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ContentsResizedEventArgs(System.Drawing.Rectangle)" argnames="newRectangle" />
+        <property name="NewRectangle" propertytype="System.Drawing.Rectangle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Cursor" namespace="System.Windows.Forms">
+        <constructor name="Cursor(System.IntPtr)" argnames="handle" />
+        <constructor name="Cursor(System.String)" argnames="fileName" />
+        <constructor name="Cursor(System.Type, System.String)" argnames="type, resource" />
+        <constructor name="Cursor(System.IO.Stream)" argnames="stream" />
+        <property name="Clip" propertytype="System.Drawing.Rectangle" />
+        <property name="Current" propertytype="System.Windows.Forms.Cursor" />
+        <property name="CurrentInternal" propertytype="System.Windows.Forms.Cursor" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="Position" propertytype="System.Drawing.Point" />
+        <property name="Size" propertytype="System.Drawing.Size" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CopyHandle" argnames="" returntype="System.IntPtr" />
+        <method name="Draw(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="g, targetRect" returntype="System.Void" />
+        <method name="DrawStretched(System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="g, targetRect" returntype="System.Void" />
+        <method name="Hide" argnames="" returntype="System.Void" />
+        <method name="Show" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Equality(System.Windows.Forms.Cursor, System.Windows.Forms.Cursor)" argnames="left, right" />
+        <operator name="op_Inequality(System.Windows.Forms.Cursor, System.Windows.Forms.Cursor)" argnames="left, right" />
+    </class>
+    <class name="SaveFileDialog" namespace="System.Windows.Forms">
+        <constructor name="SaveFileDialog" argnames="" />
+        <property name="CreatePrompt" propertytype="System.Boolean" />
+        <property name="OverwritePrompt" propertytype="System.Boolean" />
+        <property name="AddExtension" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="CheckFileExists" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="CheckPathExists" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="DefaultExt" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="DereferenceLinks" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="FileName" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="FileNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.String[]" />
+        <property name="Filter" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="FilterIndex" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
+        <property name="InitialDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="Instance" inherited="System.Windows.Forms.FileDialog" propertytype="System.IntPtr" />
+        <property name="Options" inherited="System.Windows.Forms.FileDialog" propertytype="System.Int32" />
+        <property name="RestoreDirectory" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="ShowHelp" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="Title" inherited="System.Windows.Forms.FileDialog" propertytype="System.String" />
+        <property name="ValidateNames" inherited="System.Windows.Forms.FileDialog" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RunDialog(System.IntPtr)" argnames="hWndOwner" inherited="System.Windows.Forms.FileDialog" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.FileDialog" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.FileDialog" returntype="System.String" />
+        <method name="OpenFile" argnames="" returntype="System.IO.Stream" />
+        <method name="OnFileOk(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.FileDialog" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="FileOk" inherited="System.Windows.Forms.FileDialog" />
+        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="Screen" namespace="System.Windows.Forms">
+        <property name="AllScreens" propertytype="System.Windows.Forms.Screen[]" />
+        <property name="BitDepth" propertytype="System.Int32" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="DeviceName" propertytype="System.String" />
+        <property name="Primary" propertytype="System.Boolean" />
+        <property name="PrimaryScreen" propertytype="System.Windows.Forms.Screen" />
+        <property name="WorkingArea" propertytype="System.Drawing.Rectangle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromPoint(System.Drawing.Point)" argnames="point" returntype="System.Windows.Forms.Screen" />
+        <method name="FromRectangle(System.Drawing.Rectangle)" argnames="rect" returntype="System.Windows.Forms.Screen" />
+        <method name="FromControl(System.Windows.Forms.Control)" argnames="control" returntype="System.Windows.Forms.Screen" />
+        <method name="FromHandle(System.IntPtr)" argnames="hwnd" returntype="System.Windows.Forms.Screen" />
+        <method name="GetWorkingArea(System.Drawing.Point)" argnames="pt" returntype="System.Drawing.Rectangle" />
+        <method name="GetWorkingArea(System.Drawing.Rectangle)" argnames="rect" returntype="System.Drawing.Rectangle" />
+        <method name="GetWorkingArea(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Drawing.Rectangle" />
+        <method name="GetBounds(System.Drawing.Point)" argnames="pt" returntype="System.Drawing.Rectangle" />
+        <method name="GetBounds(System.Drawing.Rectangle)" argnames="rect" returntype="System.Drawing.Rectangle" />
+        <method name="GetBounds(System.Windows.Forms.Control)" argnames="ctl" returntype="System.Drawing.Rectangle" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ThreadExceptionDialog" namespace="System.Windows.Forms">
+        <constructor name="ThreadExceptionDialog(System.Exception)" argnames="t" />
+        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
+        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
+        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
+        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
+        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
+        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
+        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
+        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
+        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="Activated" inherited="System.Windows.Forms.Form" />
+        <event name="Closing" inherited="System.Windows.Forms.Form" />
+        <event name="Closed" inherited="System.Windows.Forms.Form" />
+        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
+        <event name="Load" inherited="System.Windows.Forms.Form" />
+        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
+        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
+        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ScrollEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ScrollEventArgs(System.Windows.Forms.ScrollEventType, System.Int32)" argnames="type, newValue" />
+        <property name="Type" propertytype="System.Windows.Forms.ScrollEventType" />
+        <property name="NewValue" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SelectedGridItemChangedEventArgs" namespace="System.Windows.Forms">
+        <constructor name="SelectedGridItemChangedEventArgs(System.Windows.Forms.GridItem, System.Windows.Forms.GridItem)" argnames="oldSel, newSel" />
+        <property name="NewSelection" propertytype="System.Windows.Forms.GridItem" />
+        <property name="OldSelection" propertytype="System.Windows.Forms.GridItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SelectionRange" namespace="System.Windows.Forms">
+        <constructor name="SelectionRange" argnames="" />
+        <constructor name="SelectionRange(System.DateTime, System.DateTime)" argnames="lower, upper" />
+        <constructor name="SelectionRange(System.Windows.Forms.SelectionRange)" argnames="range" />
+        <property name="End" propertytype="System.DateTime" />
+        <property name="Start" propertytype="System.DateTime" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SelectionRangeConverter" namespace="System.Windows.Forms">
+        <constructor name="SelectionRangeConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SendKeys" namespace="System.Windows.Forms">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Send(System.String)" argnames="keys" returntype="System.Void" />
+        <method name="SendWait(System.String)" argnames="keys" returntype="System.Void" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="VScrollBar" namespace="System.Windows.Forms">
+        <constructor name="VScrollBar" argnames="" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="BackColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Image" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="ForeColor" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Color" />
+        <property name="Font" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Drawing.Font" />
+        <property name="ImeMode" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="LargeChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="Maximum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="Minimum" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="SmallChange" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Boolean" />
+        <property name="Text" inherited="System.Windows.Forms.ScrollBar" propertytype="System.String" />
+        <property name="Value" inherited="System.Windows.Forms.ScrollBar" propertytype="System.Int32" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="OnScroll(System.Windows.Forms.ScrollEventArgs)" argnames="se" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.String" />
+        <method name="UpdateScrollInfo" argnames="" inherited="System.Windows.Forms.ScrollBar" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="Paint" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="MouseDown" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="MouseUp" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="MouseMove" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="Scroll" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="ValueChanged" inherited="System.Windows.Forms.ScrollBar" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="SplitterEventArgs" namespace="System.Windows.Forms">
+        <constructor name="SplitterEventArgs(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, splitX, splitY" />
+        <property name="X" propertytype="System.Int32" />
+        <property name="Y" propertytype="System.Int32" />
+        <property name="SplitX" propertytype="System.Int32" />
+        <property name="SplitY" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StatusBarDrawItemEventArgs" namespace="System.Windows.Forms">
+        <constructor name="StatusBarDrawItemEventArgs(System.Drawing.Graphics, System.Drawing.Font, System.Drawing.Rectangle, System.Int32, System.Windows.Forms.DrawItemState, System.Windows.Forms.StatusBarPanel)" argnames="g, font, r, itemId, itemState, panel" />
+        <property name="Panel" propertytype="System.Windows.Forms.StatusBarPanel" />
+        <property name="BackColor" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Color" />
+        <property name="Bounds" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Rectangle" />
+        <property name="Font" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Color" />
+        <property name="Graphics" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Drawing.Graphics" />
+        <property name="Index" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Int32" />
+        <property name="State" inherited="System.Windows.Forms.DrawItemEventArgs" propertytype="System.Windows.Forms.DrawItemState" />
+        <method name="DrawFocusRectangle" argnames="" inherited="System.Windows.Forms.DrawItemEventArgs" returntype="System.Void" />
+        <method name="DrawBackground" argnames="" inherited="System.Windows.Forms.DrawItemEventArgs" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StatusBarPanel" namespace="System.Windows.Forms">
+        <constructor name="StatusBarPanel" argnames="" />
+        <property name="Alignment" propertytype="System.Windows.Forms.HorizontalAlignment" />
+        <property name="AutoSize" propertytype="System.Windows.Forms.StatusBarPanelAutoSize" />
+        <property name="BorderStyle" propertytype="System.Windows.Forms.StatusBarPanelBorderStyle" />
+        <property name="Created" propertytype="System.Boolean" />
+        <property name="Icon" propertytype="System.Drawing.Icon" />
+        <property name="MinWidth" propertytype="System.Int32" />
+        <property name="Parent" propertytype="System.Windows.Forms.StatusBar" />
+        <property name="Style" propertytype="System.Windows.Forms.StatusBarPanelStyle" />
+        <property name="Text" propertytype="System.String" />
+        <property name="ToolTipText" propertytype="System.String" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="StatusBarPanelClickEventArgs" namespace="System.Windows.Forms">
+        <constructor name="StatusBarPanelClickEventArgs(System.Windows.Forms.StatusBarPanel, System.Windows.Forms.MouseButtons, System.Int32, System.Int32, System.Int32)" argnames="statusBarPanel, button, clicks, x, y" />
+        <property name="StatusBarPanel" propertytype="System.Windows.Forms.StatusBarPanel" />
+        <property name="Button" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Windows.Forms.MouseButtons" />
+        <property name="Clicks" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
+        <property name="X" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
+        <property name="Y" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
+        <property name="Delta" inherited="System.Windows.Forms.MouseEventArgs" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SystemInformation" namespace="System.Windows.Forms">
+        <property name="DragFullWindows" propertytype="System.Boolean" />
+        <property name="HighContrast" propertytype="System.Boolean" />
+        <property name="MouseWheelScrollLines" propertytype="System.Int32" />
+        <property name="PrimaryMonitorSize" propertytype="System.Drawing.Size" />
+        <property name="VerticalScrollBarWidth" propertytype="System.Int32" />
+        <property name="HorizontalScrollBarHeight" propertytype="System.Int32" />
+        <property name="CaptionHeight" propertytype="System.Int32" />
+        <property name="BorderSize" propertytype="System.Drawing.Size" />
+        <property name="FixedFrameBorderSize" propertytype="System.Drawing.Size" />
+        <property name="VerticalScrollBarThumbHeight" propertytype="System.Int32" />
+        <property name="HorizontalScrollBarThumbWidth" propertytype="System.Int32" />
+        <property name="IconSize" propertytype="System.Drawing.Size" />
+        <property name="CursorSize" propertytype="System.Drawing.Size" />
+        <property name="MenuFont" propertytype="System.Drawing.Font" />
+        <property name="MenuHeight" propertytype="System.Int32" />
+        <property name="WorkingArea" propertytype="System.Drawing.Rectangle" />
+        <property name="KanjiWindowHeight" propertytype="System.Int32" />
+        <property name="MousePresent" propertytype="System.Boolean" />
+        <property name="VerticalScrollBarArrowHeight" propertytype="System.Int32" />
+        <property name="HorizontalScrollBarArrowWidth" propertytype="System.Int32" />
+        <property name="DebugOS" propertytype="System.Boolean" />
+        <property name="MouseButtonsSwapped" propertytype="System.Boolean" />
+        <property name="MinimumWindowSize" propertytype="System.Drawing.Size" />
+        <property name="CaptionButtonSize" propertytype="System.Drawing.Size" />
+        <property name="FrameBorderSize" propertytype="System.Drawing.Size" />
+        <property name="MinWindowTrackSize" propertytype="System.Drawing.Size" />
+        <property name="DoubleClickSize" propertytype="System.Drawing.Size" />
+        <property name="DoubleClickTime" propertytype="System.Int32" />
+        <property name="IconSpacingSize" propertytype="System.Drawing.Size" />
+        <property name="RightAlignedMenus" propertytype="System.Boolean" />
+        <property name="PenWindows" propertytype="System.Boolean" />
+        <property name="DbcsEnabled" propertytype="System.Boolean" />
+        <property name="MouseButtons" propertytype="System.Int32" />
+        <property name="Secure" propertytype="System.Boolean" />
+        <property name="Border3DSize" propertytype="System.Drawing.Size" />
+        <property name="MinimizedWindowSpacingSize" propertytype="System.Drawing.Size" />
+        <property name="SmallIconSize" propertytype="System.Drawing.Size" />
+        <property name="ToolWindowCaptionHeight" propertytype="System.Int32" />
+        <property name="ToolWindowCaptionButtonSize" propertytype="System.Drawing.Size" />
+        <property name="MenuButtonSize" propertytype="System.Drawing.Size" />
+        <property name="ArrangeStartingPosition" propertytype="System.Windows.Forms.ArrangeStartingPosition" />
+        <property name="ArrangeDirection" propertytype="System.Windows.Forms.ArrangeDirection" />
+        <property name="MinimizedWindowSize" propertytype="System.Drawing.Size" />
+        <property name="MaxWindowTrackSize" propertytype="System.Drawing.Size" />
+        <property name="PrimaryMonitorMaximizedWindowSize" propertytype="System.Drawing.Size" />
+        <property name="Network" propertytype="System.Boolean" />
+        <property name="TerminalServerSession" propertytype="System.Boolean" />
+        <property name="BootMode" propertytype="System.Windows.Forms.BootMode" />
+        <property name="DragSize" propertytype="System.Drawing.Size" />
+        <property name="ShowSounds" propertytype="System.Boolean" />
+        <property name="MenuCheckSize" propertytype="System.Drawing.Size" />
+        <property name="MidEastEnabled" propertytype="System.Boolean" />
+        <property name="MultiMonitorSupport" propertytype="System.Boolean" />
+        <property name="NativeMouseWheelSupport" propertytype="System.Boolean" />
+        <property name="MouseWheelPresent" propertytype="System.Boolean" />
+        <property name="VirtualScreen" propertytype="System.Drawing.Rectangle" />
+        <property name="MonitorCount" propertytype="System.Int32" />
+        <property name="MonitorsSameDisplayFormat" propertytype="System.Boolean" />
+        <property name="ComputerName" propertytype="System.String" />
+        <property name="UserDomainName" propertytype="System.String" />
+        <property name="UserInteractive" propertytype="System.Boolean" />
+        <property name="UserName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UserControl" namespace="System.Windows.Forms">
+        <constructor name="UserControl" argnames="" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="Text" propertytype="System.String" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="CreateParams" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnLoad(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Load" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="BindingContext" namespace="System.Windows.Forms">
+        <constructor name="BindingContext" argnames="" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Windows.Forms.BindingManagerBase" />
+        <property name="Item" propertytype="System.Windows.Forms.BindingManagerBase" />
+        <method name="RemoveCore(System.Object)" argnames="dataSource" returntype="System.Void" />
+        <method name="OnCollectionChanged(System.ComponentModel.CollectionChangeEventArgs)" argnames="ccevent" returntype="System.Void" />
+        <method name="ClearCore" argnames="" returntype="System.Void" />
+        <method name="AddCore(System.Object, System.Windows.Forms.BindingManagerBase)" argnames="dataSource, listManager" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Object)" argnames="dataSource" returntype="System.Boolean" />
+        <method name="Contains(System.Object, System.String)" argnames="dataSource, dataMember" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CollectionChanged" />
+    </class>
+    <class name="Timer" namespace="System.Windows.Forms">
+        <constructor name="Timer" argnames="" />
+        <constructor name="Timer(System.ComponentModel.IContainer)" argnames="container" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Interval" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnTick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Start" argnames="" returntype="System.Void" />
+        <method name="Stop" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Tick" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ToolBarButton" namespace="System.Windows.Forms">
+        <constructor name="ToolBarButton" argnames="" />
+        <constructor name="ToolBarButton(System.String)" argnames="text" />
+        <property name="DropDownMenu" propertytype="System.Windows.Forms.Menu" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="ImageIndex" propertytype="System.Int32" />
+        <property name="Parent" propertytype="System.Windows.Forms.ToolBar" />
+        <property name="PartialPush" propertytype="System.Boolean" />
+        <property name="Pushed" propertytype="System.Boolean" />
+        <property name="Rectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="Style" propertytype="System.Windows.Forms.ToolBarButtonStyle" />
+        <property name="Tag" propertytype="System.Object" />
+        <property name="Text" propertytype="System.String" />
+        <property name="ToolTipText" propertytype="System.String" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="Width" propertytype="System.Int16" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ToolBarButtonClickEventArgs" namespace="System.Windows.Forms">
+        <constructor name="ToolBarButtonClickEventArgs(System.Windows.Forms.ToolBarButton)" argnames="button" />
+        <property name="Button" propertytype="System.Windows.Forms.ToolBarButton" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolTip" namespace="System.Windows.Forms">
+        <constructor name="ToolTip(System.ComponentModel.IContainer)" argnames="cont" />
+        <constructor name="ToolTip" argnames="" />
+        <property name="Active" propertytype="System.Boolean" />
+        <property name="AutomaticDelay" propertytype="System.Int32" />
+        <property name="AutoPopDelay" propertytype="System.Int32" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="InitialDelay" propertytype="System.Int32" />
+        <property name="ReshowDelay" propertytype="System.Int32" />
+        <property name="ShowAlways" propertytype="System.Boolean" />
+        <property name="TopLevelControl" propertytype="System.Windows.Forms.Control" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="CanExtend(System.Object)" argnames="target" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetToolTip(System.Windows.Forms.Control)" argnames="control" returntype="System.String" />
+        <method name="RemoveAll" argnames="" returntype="System.Void" />
+        <method name="SetToolTip(System.Windows.Forms.Control, System.String)" argnames="control, caption" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="NotifyIcon" namespace="System.Windows.Forms">
+        <constructor name="NotifyIcon" argnames="" />
+        <constructor name="NotifyIcon(System.ComponentModel.IContainer)" argnames="container" />
+        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Icon" propertytype="System.Drawing.Icon" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" />
+        <event name="DoubleClick" />
+        <event name="MouseDown" />
+        <event name="MouseMove" />
+        <event name="MouseUp" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="TreeNode" namespace="System.Windows.Forms">
+        <constructor name="TreeNode" argnames="" />
+        <constructor name="TreeNode(System.String)" argnames="text" />
+        <constructor name="TreeNode(System.String, System.Windows.Forms.TreeNode[])" argnames="text, children" />
+        <constructor name="TreeNode(System.String, System.Int32, System.Int32)" argnames="text, imageIndex, selectedImageIndex" />
+        <constructor name="TreeNode(System.String, System.Int32, System.Int32, System.Windows.Forms.TreeNode[])" argnames="text, imageIndex, selectedImageIndex, children" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="CheckedInternal" propertytype="System.Boolean" />
+        <property name="Checked" propertytype="System.Boolean" />
+        <property name="FirstNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="FirstVisibleParent" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="FullPath" propertytype="System.String" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="ImageIndex" propertytype="System.Int32" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="IsEditing" propertytype="System.Boolean" />
+        <property name="IsExpanded" propertytype="System.Boolean" />
+        <property name="IsSelected" propertytype="System.Boolean" />
+        <property name="IsVisible" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="NextNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="NextVisibleNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="NodeFont" propertytype="System.Drawing.Font" />
+        <property name="Nodes" propertytype="System.Windows.Forms.TreeNodeCollection" />
+        <property name="Parent" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="PrevNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="PrevVisibleNode" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="SelectedImageIndex" propertytype="System.Int32" />
+        <property name="State" propertytype="System.Int32" />
+        <property name="Tag" propertytype="System.Object" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TreeView" propertytype="System.Windows.Forms.TreeView" />
+        <method name="Clone" argnames="" returntype="System.Object" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="FromHandle(System.Windows.Forms.TreeView, System.IntPtr)" argnames="tree, handle" returntype="System.Windows.Forms.TreeNode" />
+        <method name="BeginEdit" argnames="" returntype="System.Void" />
+        <method name="Collapse" argnames="" returntype="System.Void" />
+        <method name="EndEdit(System.Boolean)" argnames="cancel" returntype="System.Void" />
+        <method name="EnsureVisible" argnames="" returntype="System.Void" />
+        <method name="Expand" argnames="" returntype="System.Void" />
+        <method name="ExpandAll" argnames="" returntype="System.Void" />
+        <method name="GetNodeCount(System.Boolean)" argnames="includeSubTrees" returntype="System.Int32" />
+        <method name="Remove" argnames="" returntype="System.Void" />
+        <method name="Toggle" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TreeNodeCollection" namespace="System.Windows.Forms">
+        <property name="Item" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Windows.Forms.TreeNode)" argnames="index, node" returntype="System.Void" />
+        <method name="Add(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Int32" />
+        <method name="AddRange(System.Windows.Forms.TreeNode[])" argnames="nodes" returntype="System.Void" />
+        <method name="Add(System.String)" argnames="text" returntype="System.Windows.Forms.TreeNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Boolean" />
+        <method name="IndexOf(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Int32" />
+        <method name="Remove(System.Windows.Forms.TreeNode)" argnames="node" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TreeNodeConverter" namespace="System.Windows.Forms">
+        <constructor name="TreeNodeConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TreeViewCancelEventArgs" namespace="System.Windows.Forms">
+        <constructor name="TreeViewCancelEventArgs(System.Windows.Forms.TreeNode, System.Boolean, System.Windows.Forms.TreeViewAction)" argnames="node, cancel, action" />
+        <property name="Node" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="Action" propertytype="System.Windows.Forms.TreeViewAction" />
+        <property name="Cancel" inherited="System.ComponentModel.CancelEventArgs" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TreeViewEventArgs" namespace="System.Windows.Forms">
+        <constructor name="TreeViewEventArgs(System.Windows.Forms.TreeNode)" argnames="node" />
+        <constructor name="TreeViewEventArgs(System.Windows.Forms.TreeNode, System.Windows.Forms.TreeViewAction)" argnames="node, action" />
+        <property name="Node" propertytype="System.Windows.Forms.TreeNode" />
+        <property name="Action" propertytype="System.Windows.Forms.TreeViewAction" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TreeViewImageIndexConverter" namespace="System.Windows.Forms">
+        <constructor name="TreeViewImageIndexConverter" argnames="" />
+        <property name="IncludeNoneAsStandardValue" propertytype="System.Boolean" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.Windows.Forms.ImageIndexConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UICuesEventArgs" namespace="System.Windows.Forms">
+        <constructor name="UICuesEventArgs(System.Windows.Forms.UICues)" argnames="uicues" />
+        <property name="ShowFocus" propertytype="System.Boolean" />
+        <property name="ShowKeyboard" propertytype="System.Boolean" />
+        <property name="ChangeFocus" propertytype="System.Boolean" />
+        <property name="ChangeKeyboard" propertytype="System.Boolean" />
+        <property name="Changed" propertytype="System.Windows.Forms.UICues" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UpDownEventArgs" namespace="System.Windows.Forms">
+        <constructor name="UpDownEventArgs(System.Int32)" argnames="buttonPushed" />
+        <property name="ButtonID" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ErrorProvider" namespace="System.Windows.Forms">
+        <constructor name="ErrorProvider" argnames="" />
+        <constructor name="ErrorProvider(System.Windows.Forms.ContainerControl)" argnames="parentControl" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="BlinkStyle" propertytype="System.Windows.Forms.ErrorBlinkStyle" />
+        <property name="ContainerControl" propertytype="System.Windows.Forms.ContainerControl" />
+        <property name="DataSource" propertytype="System.Object" />
+        <property name="DataMember" propertytype="System.String" />
+        <property name="BlinkRate" propertytype="System.Int32" />
+        <property name="DefaultIcon" propertytype="System.Drawing.Icon" />
+        <property name="Icon" propertytype="System.Drawing.Icon" />
+        <property name="Region" propertytype="System.Windows.Forms.ErrorProvider+IconRegion" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="BindToDataAndErrors(System.Object, System.String)" argnames="newDataSource, newDataMember" returntype="System.Void" />
+        <method name="UpdateBinding" argnames="" returntype="System.Void" />
+        <method name="GetError(System.Windows.Forms.Control)" argnames="control" returntype="System.String" />
+        <method name="GetIconAlignment(System.Windows.Forms.Control)" argnames="control" returntype="System.Windows.Forms.ErrorIconAlignment" />
+        <method name="GetIconPadding(System.Windows.Forms.Control)" argnames="control" returntype="System.Int32" />
+        <method name="SetError(System.Windows.Forms.Control, System.String)" argnames="control, value" returntype="System.Void" />
+        <method name="SetIconAlignment(System.Windows.Forms.Control, System.Windows.Forms.ErrorIconAlignment)" argnames="control, value" returntype="System.Void" />
+        <method name="SetIconPadding(System.Windows.Forms.Control, System.Int32)" argnames="control, padding" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ArraySubsetEnumerator" namespace="System.Windows.Forms">
+        <constructor name="ArraySubsetEnumerator(System.Object[], System.Int32)" argnames="array, count" />
+        <property name="Current" propertytype="System.Object" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="MoveNext" argnames="" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MonthCalendar" namespace="System.Windows.Forms">
+        <class name="HitTestInfo" namespace="System.Windows.Forms">
+            <property name="Point" propertytype="System.Drawing.Point" />
+            <property name="HitArea" propertytype="System.Windows.Forms.MonthCalendar+HitArea" />
+            <property name="Time" propertytype="System.DateTime" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <enum name="HitArea" namespace="System.Windows.Forms">
+            <field name="Nowhere" />
+            <field name="TitleBackground" />
+            <field name="TitleMonth" />
+            <field name="TitleYear" />
+            <field name="NextMonthButton" />
+            <field name="PrevMonthButton" />
+            <field name="CalendarBackground" />
+            <field name="Date" />
+            <field name="NextMonthDate" />
+            <field name="PrevMonthDate" />
+            <field name="DayOfWeek" />
+            <field name="WeekNumbers" />
+            <field name="TodayLink" />
+            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </enum>
+        <constructor name="HitArea" argnames="" />
+        <property name="AnnuallyBoldedDates" propertytype="System.DateTime[]" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="BoldedDates" propertytype="System.DateTime[]" />
+        <property name="CalendarDimensions" propertytype="System.Drawing.Size" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="FirstDayOfWeek" propertytype="System.Windows.Forms.Day" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="MaxDate" propertytype="System.DateTime" />
+        <property name="MaxSelectionCount" propertytype="System.Int32" />
+        <property name="MinDate" propertytype="System.DateTime" />
+        <property name="MonthlyBoldedDates" propertytype="System.DateTime[]" />
+        <property name="Now" propertytype="System.DateTime" />
+        <property name="ScrollChange" propertytype="System.Int32" />
+        <property name="SelectionEnd" propertytype="System.DateTime" />
+        <property name="SelectionStart" propertytype="System.DateTime" />
+        <property name="SelectionRange" propertytype="System.Windows.Forms.SelectionRange" />
+        <property name="ShowToday" propertytype="System.Boolean" />
+        <property name="ShowTodayCircle" propertytype="System.Boolean" />
+        <property name="ShowWeekNumbers" propertytype="System.Boolean" />
+        <property name="SingleMonthSize" propertytype="System.Drawing.Size" />
+        <property name="Text" propertytype="System.String" />
+        <property name="TodayDate" propertytype="System.DateTime" />
+        <property name="TodayDateSet" propertytype="System.Boolean" />
+        <property name="TitleBackColor" propertytype="System.Drawing.Color" />
+        <property name="TitleForeColor" propertytype="System.Drawing.Color" />
+        <property name="TrailingForeColor" propertytype="System.Drawing.Color" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnDateSelected(System.Windows.Forms.DateRangeEventArgs)" argnames="drevent" returntype="System.Void" />
+        <method name="OnDateChanged(System.Windows.Forms.DateRangeEventArgs)" argnames="drevent" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="AddAnnuallyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
+        <method name="AddBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
+        <method name="AddMonthlyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
+        <method name="GetDisplayRange(System.Boolean)" argnames="visible" returntype="System.Windows.Forms.SelectionRange" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" returntype="System.Windows.Forms.MonthCalendar+HitTestInfo" />
+        <method name="HitTest(System.Drawing.Point)" argnames="point" returntype="System.Windows.Forms.MonthCalendar+HitTestInfo" />
+        <method name="RemoveAllAnnuallyBoldedDates" argnames="" returntype="System.Void" />
+        <method name="RemoveAllBoldedDates" argnames="" returntype="System.Void" />
+        <method name="RemoveAllMonthlyBoldedDates" argnames="" returntype="System.Void" />
+        <method name="RemoveAnnuallyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
+        <method name="RemoveBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
+        <method name="RemoveMonthlyBoldedDate(System.DateTime)" argnames="date" returntype="System.Void" />
+        <method name="SetCalendarDimensions(System.Int32, System.Int32)" argnames="x, y" returntype="System.Void" />
+        <method name="SetDate(System.DateTime)" argnames="date" returntype="System.Void" />
+        <method name="SetSelectionRange(System.DateTime, System.DateTime)" argnames="date1, date2" returntype="System.Void" />
+        <method name="UpdateBoldedDates" argnames="" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Click" />
+        <event name="DateChanged" />
+        <event name="DateSelected" />
+        <event name="DoubleClick" />
+        <event name="Paint" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="HitTestInfo" namespace="System.Windows.Forms">
+        <property name="Point" propertytype="System.Drawing.Point" />
+        <property name="HitArea" propertytype="System.Windows.Forms.MonthCalendar+HitArea" />
+        <property name="Time" propertytype="System.DateTime" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Application" namespace="System.Windows.Forms">
+        <property name="AllowQuit" propertytype="System.Boolean" />
+        <property name="CommonAppDataRegistry" propertytype="Microsoft.Win32.RegistryKey" />
+        <property name="CommonAppDataPath" propertytype="System.String" />
+        <property name="CompanyName" propertytype="System.String" />
+        <property name="CurrentCulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="CurrentInputLanguage" propertytype="System.Windows.Forms.InputLanguage" />
+        <property name="CustomThreadExceptionHandlerAttached" propertytype="System.Boolean" />
+        <property name="ExecutablePath" propertytype="System.String" />
+        <property name="LocalUserAppDataPath" propertytype="System.String" />
+        <property name="MessageLoop" propertytype="System.Boolean" />
+        <property name="ProductName" propertytype="System.String" />
+        <property name="ProductVersion" propertytype="System.String" />
+        <property name="SafeTopLevelCaptionFormat" propertytype="System.String" />
+        <property name="StartupPath" propertytype="System.String" />
+        <property name="UserAppDataPath" propertytype="System.String" />
+        <property name="UserAppDataRegistry" propertytype="Microsoft.Win32.RegistryKey" />
+        <property name="WindowsFormsVersion" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddMessageFilter(System.Windows.Forms.IMessageFilter)" argnames="value" returntype="System.Void" />
+        <method name="DoEvents" argnames="" returntype="System.Void" />
+        <method name="Exit" argnames="" returntype="System.Void" />
+        <method name="ExitThread" argnames="" returntype="System.Void" />
+        <method name="OleRequired" argnames="" returntype="System.Threading.ApartmentState" />
+        <method name="OnThreadException(System.Exception)" argnames="t" returntype="System.Void" />
+        <method name="RemoveMessageFilter(System.Windows.Forms.IMessageFilter)" argnames="value" returntype="System.Void" />
+        <method name="Run" argnames="" returntype="System.Void" />
+        <method name="Run(System.Windows.Forms.Form)" argnames="mainForm" returntype="System.Void" />
+        <method name="Run(System.Windows.Forms.ApplicationContext)" argnames="context" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ApplicationExit" />
+        <event name="Idle" />
+        <event name="ThreadException" />
+        <event name="ThreadExit" />
+    </class>
+    <class name="AxHost" namespace="System.Windows.Forms">
+        <class name="ClsidAttribute" namespace="System.Windows.Forms">
+            <constructor name="ClsidAttribute(System.String)" argnames="clsid" />
+            <property name="Value" propertytype="System.String" />
+            <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+            <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+            <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="TypeLibraryTimeStampAttribute" namespace="System.Windows.Forms">
+            <constructor name="TypeLibraryTimeStampAttribute(System.String)" argnames="timestamp" />
+            <property name="Value" propertytype="System.DateTime" />
+            <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+            <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+            <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="ConnectionPointCookie" namespace="System.Windows.Forms">
+            <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type)" argnames="source, sink, eventInterface" />
+            <method name="Finalize" argnames="" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Disconnect" argnames="" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="InvalidActiveXStateException" namespace="System.Windows.Forms">
+            <constructor name="InvalidActiveXStateException(System.String, System.Windows.Forms.AxHost.ActiveXInvokeKind)" argnames="name, kind" />
+            <property name="Message" inherited="System.Exception" propertytype="System.String" />
+            <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+            <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+            <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+            <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+            <property name="Source" inherited="System.Exception" propertytype="System.String" />
+            <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+            <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+            <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="StateConverter" namespace="System.Windows.Forms">
+            <constructor name="StateConverter" argnames="" />
+            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="State" namespace="System.Windows.Forms">
+            <constructor name="State(System.IO.Stream, System.Int32, System.Boolean, System.String)" argnames="ms, storageType, manualUpdate, licKey" />
+            <property name="Type" propertytype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="AxComponentEditor" namespace="System.Windows.Forms">
+            <constructor name="AxComponentEditor" argnames="" />
+            <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Int32" />
+            <method name="GetComponentEditorPages" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Type[]" />
+            <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" returntype="System.Boolean" />
+            <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+            <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <enum name="ActiveXInvokeKind" namespace="System.Windows.Forms">
+            <field name="MethodInvoke" />
+            <field name="PropertyGet" />
+            <field name="PropertySet" />
+            <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+            <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+            <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+            <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+            <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </enum>
+        <constructor name="ActiveXInvokeKind(System.String)" argnames="clsid" />
+        <constructor name="ActiveXInvokeKind(System.String, System.Int32)" argnames="clsid, flags" />
+        <property name="CanUIActivate" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="RightToLeft" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="CanAccessProperties" propertytype="System.Boolean" />
+        <property name="EditMode" propertytype="System.Boolean" />
+        <property name="HasAboutBox" propertytype="System.Boolean" />
+        <property name="NoComponentChangeEvents" propertytype="System.Int32" />
+        <property name="OcxFlags" propertytype="System.Int32" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="OcxState" propertytype="System.Windows.Forms.AxHost+State" />
+        <property name="ContainingControl" propertytype="System.Windows.Forms.ContainerControl" />
+        <property name="RefreshAllProperties" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="DetachSink" argnames="" returntype="System.Void" />
+        <method name="CreateSink" argnames="" returntype="System.Void" />
+        <method name="OnInPlaceActive" argnames="" returntype="System.Void" />
+        <method name="AttachInterfaces" argnames="" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="PropsValid" argnames="" returntype="System.Boolean" />
+        <method name="ShowAboutBox" argnames="" returntype="System.Void" />
+        <method name="SetAboutBoxDelegate(System.Windows.Forms.AxHost.AboutBoxDelegate)" argnames="d" returntype="System.Void" />
+        <method name="DoVerb(System.Int32)" argnames="verb" returntype="System.Void" />
+        <method name="InvokeEditMode" argnames="" returntype="System.Void" />
+        <method name="GetOcx" argnames="" returntype="System.Object" />
+        <method name="HasPropertyPages" argnames="" returntype="System.Boolean" />
+        <method name="MakeDirty" argnames="" returntype="System.Void" />
+        <method name="ShowPropertyPages" argnames="" returntype="System.Void" />
+        <method name="ShowPropertyPages(System.Windows.Forms.Control)" argnames="control" returntype="System.Void" />
+        <method name="GetIPictureFromPicture(System.Drawing.Image)" argnames="image" returntype="System.Object" />
+        <method name="GetIPictureFromCursor(System.Windows.Forms.Cursor)" argnames="cursor" returntype="System.Object" />
+        <method name="GetIPictureDispFromPicture(System.Drawing.Image)" argnames="image" returntype="System.Object" />
+        <method name="GetPictureFromIPicture(System.Object)" argnames="picture" returntype="System.Drawing.Image" />
+        <method name="GetPictureFromIPictureDisp(System.Object)" argnames="picture" returntype="System.Drawing.Image" />
+        <method name="GetColorFromOleColor(System.UInt32)" argnames="color" returntype="System.Drawing.Color" />
+        <method name="GetOleColorFromColor(System.Drawing.Color)" argnames="color" returntype="System.UInt32" />
+        <method name="GetIFontFromFont(System.Drawing.Font)" argnames="font" returntype="System.Object" />
+        <method name="GetFontFromIFont(System.Object)" argnames="font" returntype="System.Drawing.Font" />
+        <method name="GetIFontDispFromFont(System.Drawing.Font)" argnames="font" returntype="System.Object" />
+        <method name="GetFontFromIFontDisp(System.Object)" argnames="font" returntype="System.Drawing.Font" />
+        <method name="GetOADateFromTime(System.DateTime)" argnames="time" returntype="System.Double" />
+        <method name="GetTimeFromOADate(System.Double)" argnames="date" returntype="System.DateTime" />
+        <method name="RaiseOnMouseMove(System.Object, System.Object, System.Object, System.Object)" argnames="o1, o2, o3, o4" returntype="System.Void" />
+        <method name="RaiseOnMouseMove(System.Int16, System.Int16, System.Single, System.Single)" argnames="button, shift, x, y" returntype="System.Void" />
+        <method name="RaiseOnMouseMove(System.Int16, System.Int16, System.Int32, System.Int32)" argnames="button, shift, x, y" returntype="System.Void" />
+        <method name="RaiseOnMouseUp(System.Object, System.Object, System.Object, System.Object)" argnames="o1, o2, o3, o4" returntype="System.Void" />
+        <method name="RaiseOnMouseUp(System.Int16, System.Int16, System.Single, System.Single)" argnames="button, shift, x, y" returntype="System.Void" />
+        <method name="RaiseOnMouseUp(System.Int16, System.Int16, System.Int32, System.Int32)" argnames="button, shift, x, y" returntype="System.Void" />
+        <method name="RaiseOnMouseDown(System.Object, System.Object, System.Object, System.Object)" argnames="o1, o2, o3, o4" returntype="System.Void" />
+        <method name="RaiseOnMouseDown(System.Int16, System.Int16, System.Single, System.Single)" argnames="button, shift, x, y" returntype="System.Void" />
+        <method name="RaiseOnMouseDown(System.Int16, System.Int16, System.Int32, System.Int32)" argnames="button, shift, x, y" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="BackColorChanged" />
+        <event name="BackgroundImageChanged" />
+        <event name="BindingContextChanged" />
+        <event name="ContextMenuChanged" />
+        <event name="CursorChanged" />
+        <event name="EnabledChanged" />
+        <event name="FontChanged" />
+        <event name="ForeColorChanged" />
+        <event name="RightToLeftChanged" />
+        <event name="TabIndexChanged" />
+        <event name="TabStopChanged" />
+        <event name="TextChanged" />
+        <event name="Click" />
+        <event name="DragDrop" />
+        <event name="DragEnter" />
+        <event name="DragOver" />
+        <event name="DragLeave" />
+        <event name="GiveFeedback" />
+        <event name="HelpRequested" />
+        <event name="Paint" />
+        <event name="QueryContinueDrag" />
+        <event name="QueryAccessibilityHelp" />
+        <event name="DoubleClick" />
+        <event name="ImeModeChanged" />
+        <event name="KeyDown" />
+        <event name="KeyPress" />
+        <event name="KeyUp" />
+        <event name="Layout" />
+        <event name="MouseDown" />
+        <event name="MouseEnter" />
+        <event name="MouseLeave" />
+        <event name="MouseHover" />
+        <event name="MouseMove" />
+        <event name="MouseUp" />
+        <event name="MouseWheel" />
+        <event name="ChangeUICues" />
+        <event name="StyleChanged" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ClsidAttribute" namespace="System.Windows.Forms">
+        <constructor name="ClsidAttribute(System.String)" argnames="clsid" />
+        <property name="Value" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TypeLibraryTimeStampAttribute" namespace="System.Windows.Forms">
+        <constructor name="TypeLibraryTimeStampAttribute(System.String)" argnames="timestamp" />
+        <property name="Value" propertytype="System.DateTime" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ConnectionPointCookie" namespace="System.Windows.Forms">
+        <constructor name="ConnectionPointCookie(System.Object, System.Object, System.Type)" argnames="source, sink, eventInterface" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Disconnect" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InvalidActiveXStateException" namespace="System.Windows.Forms">
+        <constructor name="InvalidActiveXStateException(System.String, System.Windows.Forms.AxHost.ActiveXInvokeKind)" argnames="name, kind" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StateConverter" namespace="System.Windows.Forms">
+        <constructor name="StateConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="State" namespace="System.Windows.Forms">
+        <constructor name="State(System.IO.Stream, System.Int32, System.Boolean, System.String)" argnames="ms, storageType, manualUpdate, licKey" />
+        <property name="Type" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AxComponentEditor" namespace="System.Windows.Forms">
+        <constructor name="AxComponentEditor" argnames="" />
+        <method name="GetInitialComponentEditorPageIndex" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Int32" />
+        <method name="GetComponentEditorPages" argnames="" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Type[]" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, obj, parent" returntype="System.Boolean" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" inherited="System.Windows.Forms.Design.WindowsFormsComponentEditor" returntype="System.Boolean" />
+        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Button" namespace="System.Windows.Forms">
+        <constructor name="Button" argnames="" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DialogResult" propertytype="System.Windows.Forms.DialogResult" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Size" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDefault" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Boolean" />
+        <property name="FlatStyle" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.FlatStyle" />
+        <property name="Image" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Image" />
+        <property name="ImageAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
+        <property name="ImageIndex" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Int32" />
+        <property name="ImageList" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="TextAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="PerformClick" argnames="" returntype="System.Void" />
+        <method name="NotifyDefault(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetFlagsandPaint" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="DoubleClick" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="CheckBox" namespace="System.Windows.Forms">
+        <class name="CheckBoxAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="CheckBoxAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
+            <property name="DefaultAction" propertytype="System.String" />
+            <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+            <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+            <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.ButtonBase+ButtonBaseAccessibleObject" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="CheckBoxAccessibleObject" argnames="" />
+        <property name="Appearance" propertytype="System.Windows.Forms.Appearance" />
+        <property name="AutoCheck" propertytype="System.Boolean" />
+        <property name="CheckAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="Checked" propertytype="System.Boolean" />
+        <property name="CheckState" propertytype="System.Windows.Forms.CheckState" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="OverChangeRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="DownChangeRectangle" propertytype="System.Drawing.Rectangle" />
+        <property name="TextAlign" propertytype="System.Drawing.ContentAlignment" />
+        <property name="ThreeState" propertytype="System.Boolean" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDefault" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Boolean" />
+        <property name="FlatStyle" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.FlatStyle" />
+        <property name="Image" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.Image" />
+        <property name="ImageAlign" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Drawing.ContentAlignment" />
+        <property name="ImageIndex" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Int32" />
+        <property name="ImageList" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImageList" />
+        <property name="ImeMode" inherited="System.Windows.Forms.ButtonBase" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnCheckStateChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCheckedChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnAppearanceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="mevent" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="mevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="kevent" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ResetFlagsandPaint" argnames="" inherited="System.Windows.Forms.ButtonBase" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="AppearanceChanged" />
+        <event name="CheckedChanged" />
+        <event name="CheckStateChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="CheckBoxAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="CheckBoxAccessibleObject(System.Windows.Forms.Control)" argnames="owner" />
+        <property name="DefaultAction" propertytype="System.String" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Description" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Handle" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.IntPtr" />
+        <property name="Help" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Name" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.String" />
+        <property name="Owner" inherited="System.Windows.Forms.Control+ControlAccessibleObject" propertytype="System.Windows.Forms.Control" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.ButtonBase+ButtonBaseAccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.String" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents)" argnames="accEvent" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="NotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control+ControlAccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CheckedListBox" namespace="System.Windows.Forms">
+        <class name="ObjectCollection" namespace="System.Windows.Forms">
+            <constructor name="ObjectCollection(System.Windows.Forms.CheckedListBox)" argnames="owner" />
+            <property name="Count" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Int32" />
+            <property name="IsReadOnly" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Boolean" />
+            <property name="Item" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Object" />
+            <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+            <method name="Remove(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+            <method name="Insert(System.Int32, System.Object)" argnames="index, item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+            <method name="IndexOf(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
+            <method name="Clear" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+            <method name="Contains(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Object, System.Boolean)" argnames="item, isChecked" returntype="System.Int32" />
+            <method name="Add(System.Object, System.Windows.Forms.CheckState)" argnames="item, check" returntype="System.Int32" />
+            <method name="Add(System.Object)" argnames="item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
+            <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+            <method name="AddRange(System.Object[])" argnames="items" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+            <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Int32" />
+            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Contains(System.Int32)" argnames="index" returntype="System.Boolean" />
+            <method name="IndexOf(System.Int32)" argnames="index" returntype="System.Int32" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="CheckedItemCollection" namespace="System.Windows.Forms">
+            <property name="Count" propertytype="System.Int32" />
+            <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+            <property name="Item" propertytype="System.Object" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+            <method name="IndexOf(System.Object)" argnames="item" returntype="System.Int32" />
+            <method name="Contains(System.Object)" argnames="item" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="CheckedItemCollection" argnames="" />
+        <property name="CheckOnClick" propertytype="System.Boolean" />
+        <property name="CheckedIndices" propertytype="System.Windows.Forms.CheckedListBox+CheckedIndexCollection" />
+        <property name="CheckedItems" propertytype="System.Windows.Forms.CheckedListBox+CheckedItemCollection" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DrawMode" propertytype="System.Windows.Forms.DrawMode" />
+        <property name="ItemHeight" propertytype="System.Int32" />
+        <property name="Items" propertytype="System.Windows.Forms.CheckedListBox+ObjectCollection" />
+        <property name="MaxItemWidth" propertytype="System.Int32" />
+        <property name="SelectionMode" propertytype="System.Windows.Forms.SelectionMode" />
+        <property name="ThreeDCheckBoxes" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Image" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="ColumnWidth" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Size" />
+        <property name="ForeColor" inherited="System.Windows.Forms.ListBox" propertytype="System.Drawing.Color" />
+        <property name="HorizontalExtent" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
+        <property name="HorizontalScrollbar" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
+        <property name="IntegralHeight" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
+        <property name="Items" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.ListBox+ObjectCollection" />
+        <property name="MultiColumn" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
+        <property name="PreferredHeight" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="ScrollAlwaysVisible" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
+        <property name="SelectedIndex" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
+        <property name="SelectedIndices" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.ListBox+SelectedIndexCollection" />
+        <property name="SelectedItem" inherited="System.Windows.Forms.ListBox" propertytype="System.Object" />
+        <property name="SelectedItems" inherited="System.Windows.Forms.ListBox" propertytype="System.Windows.Forms.ListBox+SelectedObjectCollection" />
+        <property name="Sorted" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
+        <property name="Text" inherited="System.Windows.Forms.ListBox" propertytype="System.String" />
+        <property name="TopIndex" inherited="System.Windows.Forms.ListBox" propertytype="System.Int32" />
+        <property name="UseTabStops" inherited="System.Windows.Forms.ListBox" propertytype="System.Boolean" />
+        <property name="DataSource" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
+        <property name="DataManager" inherited="System.Windows.Forms.ListControl" propertytype="System.Windows.Forms.CurrencyManager" />
+        <property name="DisplayMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
+        <property name="ValueMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
+        <property name="SelectedValue" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnItemCheck(System.Windows.Forms.ItemCheckEventArgs)" argnames="ice" returntype="System.Void" />
+        <method name="WmReflectCommand(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="Sort" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="CreateItemCollection" argnames="" returntype="System.Windows.Forms.ListBox+ObjectCollection" />
+        <method name="AddItemsCore(System.Object[])" argnames="value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="SetItemsCore(System.Collections.IList)" argnames="value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="RefreshItem(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.ListControl" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.String" />
+        <method name="GetItemCheckState(System.Int32)" argnames="index" returntype="System.Windows.Forms.CheckState" />
+        <method name="GetItemChecked(System.Int32)" argnames="index" returntype="System.Boolean" />
+        <method name="SetItemCheckState(System.Int32, System.Windows.Forms.CheckState)" argnames="index, value" returntype="System.Void" />
+        <method name="SetItemChecked(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Void" />
+        <method name="BeginUpdate" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="ClearSelected" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="FindString(System.String)" argnames="s" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
+        <method name="FindString(System.String, System.Int32)" argnames="s, startIndex" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
+        <method name="FindStringExact(System.String)" argnames="s" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
+        <method name="FindStringExact(System.String, System.Int32)" argnames="s, startIndex" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
+        <method name="GetItemHeight(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
+        <method name="GetItemRectangle(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Drawing.Rectangle" />
+        <method name="GetSelected(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox" returntype="System.Boolean" />
+        <method name="IndexFromPoint(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
+        <method name="IndexFromPoint(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ListBox" returntype="System.Int32" />
+        <method name="SetSelected(System.Int32, System.Boolean)" argnames="index, value" inherited="System.Windows.Forms.ListBox" returntype="System.Void" />
+        <method name="FilterItemOnProperty(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
+        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
+        <method name="GetItemText(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ItemCheck" />
+        <event name="Click" />
+        <event name="DrawItem" />
+        <event name="MeasureItem" />
+        <event name="Paint" inherited="System.Windows.Forms.ListBox" />
+        <event name="SelectedIndexChanged" inherited="System.Windows.Forms.ListBox" />
+        <event name="DataSourceChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="DisplayMemberChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="ValueMemberChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="SelectedValueChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ObjectCollection" namespace="System.Windows.Forms">
+        <constructor name="ObjectCollection(System.Windows.Forms.CheckedListBox)" argnames="owner" />
+        <property name="Count" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Int32" />
+        <property name="IsReadOnly" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Boolean" />
+        <property name="Item" inherited="System.Windows.Forms.ListBox+ObjectCollection" propertytype="System.Object" />
+        <method name="GetEnumerator" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
+        <method name="Clear" argnames="" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Object, System.Boolean)" argnames="item, isChecked" returntype="System.Int32" />
+        <method name="Add(System.Object, System.Windows.Forms.CheckState)" argnames="item, check" returntype="System.Int32" />
+        <method name="Add(System.Object)" argnames="item" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Int32" />
+        <method name="AddRange(System.Windows.Forms.ListBox.ObjectCollection)" argnames="value" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+        <method name="AddRange(System.Object[])" argnames="items" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+        <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" inherited="System.Windows.Forms.ListBox+ObjectCollection" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CheckedIndexCollection" namespace="System.Windows.Forms">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Int32" />
+        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Int32)" argnames="index" returntype="System.Boolean" />
+        <method name="IndexOf(System.Int32)" argnames="index" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CheckedItemCollection" namespace="System.Windows.Forms">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="InnerArray" propertytype="System.Windows.Forms.ListBox+ItemArray" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="item" returntype="System.Int32" />
+        <method name="Contains(System.Object)" argnames="item" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ColorDialog" namespace="System.Windows.Forms">
+        <constructor name="ColorDialog" argnames="" />
+        <property name="AllowFullOpen" propertytype="System.Boolean" />
+        <property name="AnyColor" propertytype="System.Boolean" />
+        <property name="Color" propertytype="System.Drawing.Color" />
+        <property name="CustomColors" propertytype="System.Int32[]" />
+        <property name="FullOpen" propertytype="System.Boolean" />
+        <property name="Instance" propertytype="System.IntPtr" />
+        <property name="Options" propertytype="System.Int32" />
+        <property name="ShowHelp" propertytype="System.Boolean" />
+        <property name="SolidColorOnly" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ComboBox" namespace="System.Windows.Forms">
+        <class name="ObjectCollection" namespace="System.Windows.Forms">
+            <constructor name="ObjectCollection(System.Windows.Forms.ComboBox)" argnames="owner" />
+            <property name="Comparer" propertytype="System.Collections.IComparer" />
+            <property name="InnerList" propertytype="System.Collections.ArrayList" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="IsReadOnly" propertytype="System.Boolean" />
+            <property name="Item" propertytype="System.Object" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+            <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+            <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+            <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+            <method name="Clear" argnames="" returntype="System.Void" />
+            <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
+            <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
+            <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <class name="ChildAccessibleObject" namespace="System.Windows.Forms">
+            <constructor name="ChildAccessibleObject(System.Windows.Forms.ComboBox, System.IntPtr)" argnames="owner, handle" />
+            <property name="Name" propertytype="System.String" />
+            <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+            <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+            <property name="Role" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
+            <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+            <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+            <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+            <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+            <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+            <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="ChildAccessibleObject" argnames="" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultSize" propertytype="System.Drawing.Size" />
+        <property name="DrawMode" propertytype="System.Windows.Forms.DrawMode" />
+        <property name="DropDownWidth" propertytype="System.Int32" />
+        <property name="DroppedDown" propertytype="System.Boolean" />
+        <property name="Focused" propertytype="System.Boolean" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="IntegralHeight" propertytype="System.Boolean" />
+        <property name="ItemHeight" propertytype="System.Int32" />
+        <property name="Items" propertytype="System.Windows.Forms.ComboBox+ObjectCollection" />
+        <property name="MaxDropDownItems" propertytype="System.Int32" />
+        <property name="MaxLength" propertytype="System.Int32" />
+        <property name="PreferredHeight" propertytype="System.Int32" />
+        <property name="SelectedIndex" propertytype="System.Int32" />
+        <property name="SelectedItem" propertytype="System.Object" />
+        <property name="SelectedText" propertytype="System.String" />
+        <property name="SelectionLength" propertytype="System.Int32" />
+        <property name="SelectionStart" propertytype="System.Int32" />
+        <property name="Sorted" propertytype="System.Boolean" />
+        <property name="DropDownStyle" propertytype="System.Windows.Forms.ComboBoxStyle" />
+        <property name="Text" propertytype="System.String" />
+        <property name="DataSource" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
+        <property name="DataManager" inherited="System.Windows.Forms.ListControl" propertytype="System.Windows.Forms.CurrencyManager" />
+        <property name="DisplayMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
+        <property name="ValueMember" inherited="System.Windows.Forms.ListControl" propertytype="System.String" />
+        <property name="SelectedValue" inherited="System.Windows.Forms.ListControl" propertytype="System.Object" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnDropDownStyleChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSelectedItemChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnSelectionChangeCommitted(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnMeasureItem(System.Windows.Forms.MeasureItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDropDown(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDrawItem(System.Windows.Forms.DrawItemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="AddItemsCore(System.Object[])" argnames="value" returntype="System.Void" />
+        <method name="SetItemCore(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="SetItemsCore(System.Collections.IList)" argnames="value" returntype="System.Void" />
+        <method name="RefreshItem(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="OnSelectedValueChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnValueMemberChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnSelectedIndexChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDisplayMemberChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDataSourceChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ListControl" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="BeginUpdate" argnames="" returntype="System.Void" />
+        <method name="EndUpdate" argnames="" returntype="System.Void" />
+        <method name="FindString(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="FindString(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
+        <method name="FindStringExact(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="FindStringExact(System.String, System.Int32)" argnames="s, startIndex" returntype="System.Int32" />
+        <method name="GetItemHeight(System.Int32)" argnames="index" returntype="System.Int32" />
+        <method name="Select(System.Int32, System.Int32)" argnames="start, length" returntype="System.Void" />
+        <method name="SelectAll" argnames="" returntype="System.Void" />
+        <method name="FilterItemOnProperty(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
+        <method name="FilterItemOnProperty(System.Object, System.String)" argnames="item, field" inherited="System.Windows.Forms.ListControl" returntype="System.Object" />
+        <method name="GetItemText(System.Object)" argnames="item" inherited="System.Windows.Forms.ListControl" returntype="System.String" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="DrawItem" />
+        <event name="DropDown" />
+        <event name="MeasureItem" />
+        <event name="SelectedIndexChanged" />
+        <event name="SelectionChangeCommitted" />
+        <event name="DropDownStyleChanged" />
+        <event name="Paint" />
+        <event name="DataSourceChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="DisplayMemberChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="ValueMemberChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="SelectedValueChanged" inherited="System.Windows.Forms.ListControl" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ObjectCollection" namespace="System.Windows.Forms">
+        <constructor name="ObjectCollection(System.Windows.Forms.ComboBox)" argnames="owner" />
+        <property name="Comparer" propertytype="System.Collections.IComparer" />
+        <property name="InnerList" propertytype="System.Collections.ArrayList" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Object)" argnames="item" returntype="System.Int32" />
+        <method name="AddRange(System.Object[])" argnames="items" returntype="System.Void" />
+        <method name="CopyTo(System.Object[], System.Int32)" argnames="dest, arrayIndex" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ChildAccessibleObject" namespace="System.Windows.Forms">
+        <constructor name="ChildAccessibleObject(System.Windows.Forms.ComboBox, System.IntPtr)" argnames="owner, handle" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Bounds" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Drawing.Rectangle" />
+        <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="Description" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="Role" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="State" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="Value" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PageSetupDialog" namespace="System.Windows.Forms">
+        <constructor name="PageSetupDialog" argnames="" />
+        <property name="AllowMargins" propertytype="System.Boolean" />
+        <property name="AllowOrientation" propertytype="System.Boolean" />
+        <property name="AllowPaper" propertytype="System.Boolean" />
+        <property name="AllowPrinter" propertytype="System.Boolean" />
+        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
+        <property name="MinMargins" propertytype="System.Drawing.Printing.Margins" />
+        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
+        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
+        <property name="ShowHelp" propertytype="System.Boolean" />
+        <property name="ShowNetwork" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PrintControllerWithStatusDialog" namespace="System.Windows.Forms">
+        <constructor name="PrintControllerWithStatusDialog(System.Drawing.Printing.PrintController)" argnames="underlyingController" />
+        <constructor name="PrintControllerWithStatusDialog(System.Drawing.Printing.PrintController, System.String)" argnames="underlyingController, dialogTitle" />
+        <method name="OnEndPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnEndPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="OnStartPage(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintPageEventArgs)" argnames="document, e" returntype="System.Drawing.Graphics" />
+        <method name="OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)" argnames="document, e" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PrintDialog" namespace="System.Windows.Forms">
+        <constructor name="PrintDialog" argnames="" />
+        <property name="AllowSomePages" propertytype="System.Boolean" />
+        <property name="AllowPrintToFile" propertytype="System.Boolean" />
+        <property name="AllowSelection" propertytype="System.Boolean" />
+        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
+        <property name="PageSettings" propertytype="System.Drawing.Printing.PageSettings" />
+        <property name="PrinterSettings" propertytype="System.Drawing.Printing.PrinterSettings" />
+        <property name="PrintToFile" propertytype="System.Boolean" />
+        <property name="ShowHelp" propertytype="System.Boolean" />
+        <property name="ShowNetwork" propertytype="System.Boolean" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="RunDialog(System.IntPtr)" argnames="hwndOwner" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="OwnerWndProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="OnHelpRequest(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.CommonDialog" returntype="System.Void" />
+        <method name="HookProc(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" inherited="System.Windows.Forms.CommonDialog" returntype="System.IntPtr" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.CommonDialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="HelpRequest" inherited="System.Windows.Forms.CommonDialog" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PrintPreviewDialog" namespace="System.Windows.Forms">
+        <constructor name="PrintPreviewDialog" argnames="" />
+        <property name="AcceptButton" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="AutoScale" propertytype="System.Boolean" />
+        <property name="AutoScroll" propertytype="System.Boolean" />
+        <property name="BackColor" propertytype="System.Drawing.Color" />
+        <property name="CancelButton" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ControlBox" propertytype="System.Boolean" />
+        <property name="FormBorderStyle" propertytype="System.Windows.Forms.FormBorderStyle" />
+        <property name="HelpButton" propertytype="System.Boolean" />
+        <property name="Icon" propertytype="System.Drawing.Icon" />
+        <property name="IsMdiContainer" propertytype="System.Boolean" />
+        <property name="KeyPreview" propertytype="System.Boolean" />
+        <property name="MaximumSize" propertytype="System.Drawing.Size" />
+        <property name="MaximizeBox" propertytype="System.Boolean" />
+        <property name="Menu" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimumSize" propertytype="System.Drawing.Size" />
+        <property name="Size" propertytype="System.Drawing.Size" />
+        <property name="StartPosition" propertytype="System.Windows.Forms.FormStartPosition" />
+        <property name="TopMost" propertytype="System.Boolean" />
+        <property name="TransparencyKey" propertytype="System.Drawing.Color" />
+        <property name="WindowState" propertytype="System.Windows.Forms.FormWindowState" />
+        <property name="AccessibleRole" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AccessibleDescription" propertytype="System.String" />
+        <property name="AccessibleName" propertytype="System.String" />
+        <property name="CausesValidation" propertytype="System.Boolean" />
+        <property name="DataBindings" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Location" propertytype="System.Drawing.Point" />
+        <property name="Tag" propertytype="System.Object" />
+        <property name="AllowDrop" propertytype="System.Boolean" />
+        <property name="Cursor" propertytype="System.Windows.Forms.Cursor" />
+        <property name="BackgroundImage" propertytype="System.Drawing.Image" />
+        <property name="ImeMode" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="AutoScrollMargin" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollMinSize" propertytype="System.Drawing.Size" />
+        <property name="Anchor" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="ForeColor" propertytype="System.Drawing.Color" />
+        <property name="RightToLeft" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Dock" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Font" propertytype="System.Drawing.Font" />
+        <property name="ContextMenu" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="DockPadding" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="UseAntiAlias" propertytype="System.Boolean" />
+        <property name="AutoScaleBaseSize" propertytype="System.Drawing.Size" />
+        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
+        <property name="MinimizeBox" propertytype="System.Boolean" />
+        <property name="PrintPreviewControl" propertytype="System.Windows.Forms.PrintPreviewControl" />
+        <property name="Opacity" propertytype="System.Double" />
+        <property name="ShowInTaskbar" propertytype="System.Boolean" />
+        <property name="SizeGripStyle" propertytype="System.Windows.Forms.SizeGripStyle" />
+        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
+        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
+        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
+        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnActivated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
+        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="Activated" inherited="System.Windows.Forms.Form" />
+        <event name="Closing" inherited="System.Windows.Forms.Form" />
+        <event name="Closed" inherited="System.Windows.Forms.Form" />
+        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
+        <event name="Load" inherited="System.Windows.Forms.Form" />
+        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
+        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
+        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PrintPreviewControl" namespace="System.Windows.Forms">
+        <constructor name="PrintPreviewControl" argnames="" />
+        <property name="UseAntiAlias" propertytype="System.Boolean" />
+        <property name="AutoZoom" propertytype="System.Boolean" />
+        <property name="Document" propertytype="System.Drawing.Printing.PrintDocument" />
+        <property name="Columns" propertytype="System.Int32" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="Position" propertytype="System.Drawing.Point" />
+        <property name="Rows" propertytype="System.Int32" />
+        <property name="Text" propertytype="System.String" />
+        <property name="StartPage" propertytype="System.Int32" />
+        <property name="VirtualSize" propertytype="System.Drawing.Size" />
+        <property name="Zoom" propertytype="System.Double" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="OnStartPageChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="eventargs" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="pevent" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="InvalidatePreview" argnames="" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="StartPageChanged" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <interface name="IOleDropTarget" namespace="System.Windows.Forms">
+        <method name="OleDrop(System.Object, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
+        <method name="OleDragLeave" argnames="" returntype="System.Int32" />
+        <method name="OleDragOver(System.Int32, System.Int64, System.Int32&amp;)" argnames="grfKeyState, pt, pdwEffect" returntype="System.Int32" />
+        <method name="OleDragEnter(System.Object, System.Int32, System.Int64, System.Int32&amp;)" argnames="pDataObj, grfKeyState, pt, pdwEffect" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleDataObject" namespace="System.Windows.Forms">
+        <method name="OleEnumDAdvise(System.Object[])" argnames="ppenumAdvise" returntype="System.Int32" />
+        <method name="OleDUnadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
+        <method name="OleDAdvise(System.Windows.Forms.NativeMethods.FORMATETC, System.Int32, System.Object, System.Int32[])" argnames="pFormatetc, advf, pAdvSink, pdwConnection" returntype="System.Int32" />
+        <method name="OleEnumFormatEtc(System.Int32)" argnames="dwDirection" returntype="System.Windows.Forms.UnsafeNativeMethods+IEnumFORMATETC" />
+        <method name="OleSetData(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM, System.Int32)" argnames="pFormatectIn, pmedium, fRelease" returntype="System.Int32" />
+        <method name="OleGetCanonicalFormatEtc(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.FORMATETC)" argnames="pformatectIn, pformatetcOut" returntype="System.Int32" />
+        <method name="OleQueryGetData(System.Windows.Forms.NativeMethods.FORMATETC)" argnames="pFormatetc" returntype="System.Int32" />
+        <method name="OleGetDataHere(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
+        <method name="OleGetData(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pMedium" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleDropSource" namespace="System.Windows.Forms">
+        <method name="OleGiveFeedback(System.Int32)" argnames="dwEffect" returntype="System.Int32" />
+        <method name="OleQueryContinueDrag(System.Int32, System.Int32)" argnames="fEscapePressed, grfKeyState" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleMessageFilter" namespace="System.Windows.Forms">
+        <method name="MessagePending(System.IntPtr, System.Int32, System.Int32)" argnames="hTaskCallee, dwTickCount, dwPendingType" returntype="System.Int32" />
+        <method name="RetryRejectedCall(System.IntPtr, System.Int32, System.Int32)" argnames="hTaskCallee, dwTickCount, dwRejectType" returntype="System.Int32" />
+        <method name="HandleInComingCall(System.Int32, System.IntPtr, System.Int32, System.IntPtr)" argnames="dwCallType, hTaskCaller, dwTickCount, lpInterfaceInfo" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleControlSite" namespace="System.Windows.Forms">
+        <method name="ShowPropertyFrame" argnames="" returntype="System.Int32" />
+        <method name="OnFocus(System.Int32)" argnames="fGotFocus" returntype="System.Int32" />
+        <method name="TranslateAccelerator(System.Windows.Forms.NativeMethods.MSG&amp;, System.Int32)" argnames="pMsg, grfModifiers" returntype="System.Int32" />
+        <method name="TransformCoords(System.Windows.Forms.NativeMethods._POINTL, System.Windows.Forms.NativeMethods.tagPOINTF, System.Int32)" argnames="pPtlHimetric, pPtfContainer, dwFlags" returntype="System.Int32" />
+        <method name="GetExtendedControl(System.Object&amp;)" argnames="ppDisp" returntype="System.Int32" />
+        <method name="LockInPlaceActive(System.Int32)" argnames="fLock" returntype="System.Int32" />
+        <method name="OnControlInfoChanged" argnames="" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleClientSite" namespace="System.Windows.Forms">
+        <method name="RequestNewObjectLayout" argnames="" returntype="System.Int32" />
+        <method name="OnShowWindow(System.Int32)" argnames="fShow" returntype="System.Int32" />
+        <method name="ShowObject" argnames="" returntype="System.Int32" />
+        <method name="GetContainer" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IOleContainer" />
+        <method name="GetMoniker(System.Int32, System.Int32)" argnames="dwAssign, dwWhichMoniker" returntype="System.Object" />
+        <method name="SaveObject" argnames="" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleInPlaceSite" namespace="System.Windows.Forms">
+        <method name="OnPosRectChange(System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprcPosRect" returntype="System.Int32" />
+        <method name="DeactivateAndUndo" argnames="" returntype="System.Int32" />
+        <method name="DiscardUndoState" argnames="" returntype="System.Int32" />
+        <method name="OnInPlaceDeactivate" argnames="" returntype="System.Int32" />
+        <method name="OnUIDeactivate(System.Int32)" argnames="fUndoable" returntype="System.Int32" />
+        <method name="Scroll(System.Windows.Forms.NativeMethods.tagSIZE)" argnames="scrollExtant" returntype="System.Int32" />
+        <method name="GetWindowContext(System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceFrame&amp;, System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceUIWindow&amp;, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.tagOIFI)" argnames="ppFrame, ppDoc, lprcPosRect, lprcClipRect, lpFrameInfo" returntype="System.Int32" />
+        <method name="OnUIActivate" argnames="" returntype="System.Int32" />
+        <method name="OnInPlaceActivate" argnames="" returntype="System.Int32" />
+        <method name="CanInPlaceActivate" argnames="" returntype="System.Int32" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Int32" />
+        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <interface name="ISimpleFrameSite" namespace="System.Windows.Forms">
+        <method name="PostMessageFilter(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.IntPtr&amp;, System.Int32)" argnames="hwnd, msg, wp, lp, plResult, dwCookie" returntype="System.Int32" />
+        <method name="PreMessageFilter(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.IntPtr&amp;, System.Int32&amp;)" argnames="hwnd, msg, wp, lp, plResult, pdwCookie" returntype="System.Int32" />
+    </interface>
+    <interface name="IVBGetControl" namespace="System.Windows.Forms">
+        <method name="EnumControls(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.IEnumUnknown&amp;)" argnames="dwOleContF, dwWhich, ppenum" returntype="System.Int32" />
+    </interface>
+    <interface name="IGetVBAObject" namespace="System.Windows.Forms">
+        <method name="GetObject(System.Guid&amp;, System.Windows.Forms.UnsafeNativeMethods.IVBFormat[], System.Int32)" argnames="riid, rval, dwReserved" returntype="System.Int32" />
+    </interface>
+    <interface name="IPropertyNotifySink" namespace="System.Windows.Forms">
+        <method name="OnRequestEdit(System.Int32)" argnames="dispID" returntype="System.Int32" />
+        <method name="OnChanged(System.Int32)" argnames="dispID" returntype="System.Void" />
+    </interface>
+    <interface name="IVBFormat" namespace="System.Windows.Forms">
+        <method name="Format(System.Object&amp;, System.String, System.IntPtr, System.Int16, System.Int32, System.Int16, System.Int16, System.Int16[])" argnames="var, pszFormat, lpBuffer, cpBuffer, lcid, firstD, firstW, result" returntype="System.Int32" />
+    </interface>
+    <interface name="IEnumUnknown" namespace="System.Windows.Forms">
+        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumUnknown&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.IntPtr, System.IntPtr)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleContainer" namespace="System.Windows.Forms">
+        <method name="LockContainer(System.Int32)" argnames="fLock" returntype="System.Int32" />
+        <method name="EnumObjects(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IEnumUnknown&amp;)" argnames="grfFlags, ppenum" returntype="System.Int32" />
+        <method name="ParseDisplayName(System.Object, System.String, System.Int32[], System.Object[])" argnames="pbc, pszDisplayName, pchEaten, ppmkOut" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleInPlaceFrame" namespace="System.Windows.Forms">
+        <method name="TranslateAccelerator(System.Windows.Forms.NativeMethods.MSG&amp;, System.Int16)" argnames="lpmsg, wID" returntype="System.Int32" />
+        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Int32" />
+        <method name="SetStatusText(System.String)" argnames="pszStatusText" returntype="System.Int32" />
+        <method name="RemoveMenus(System.IntPtr)" argnames="hmenuShared" returntype="System.Int32" />
+        <method name="SetMenu(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="hmenuShared, holemenu, hwndActiveObject" returntype="System.Int32" />
+        <method name="InsertMenus(System.IntPtr, System.Windows.Forms.NativeMethods.tagOleMenuGroupWidths)" argnames="hmenuShared, lpMenuWidths" returntype="System.Int32" />
+        <method name="SetActiveObject(System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Int32" />
+        <method name="SetBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Int32" />
+        <method name="RequestBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Int32" />
+        <method name="GetBorder(System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Int32" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Int32" />
+        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <interface name="IExtender" namespace="System.Windows.Forms">
+        <property name="Align" propertytype="System.Int32" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Height" propertytype="System.Int32" />
+        <property name="Left" propertytype="System.Int32" />
+        <property name="TabStop" propertytype="System.Boolean" />
+        <property name="Top" propertytype="System.Int32" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Object" />
+        <property name="Hwnd" propertytype="System.IntPtr" />
+        <property name="Container" propertytype="System.Object" />
+        <method name="Move(System.Object, System.Object, System.Object, System.Object)" argnames="left, top, width, height" returntype="System.Void" />
+    </interface>
+    <interface name="IGetOleObject" namespace="System.Windows.Forms">
+        <method name="GetOleObject(System.Guid&amp;)" argnames="riid" returntype="System.Object" />
+    </interface>
+    <interface name="IMsoComponentManager" namespace="System.Windows.Forms">
+        <method name="FGetActiveComponent(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IMsoComponent[], System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT, System.Int32)" argnames="dwgac, ppic, pcrinfo, dwReserved" returntype="System.Boolean" />
+        <method name="FGetParentComponentManager(System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager&amp;)" argnames="ppicm" returntype="System.Boolean" />
+        <method name="FCreateSubComponentManager(System.Object, System.Object, System.Guid&amp;, System.IntPtr&amp;)" argnames="punkOuter, punkServProv, riid, ppvObj" returntype="System.Boolean" />
+        <method name="FPushMessageLoop(System.Int32, System.Int32, System.Int32)" argnames="dwComponentID, uReason, pvLoopData" returntype="System.Boolean" />
+        <method name="FContinueIdle" argnames="" returntype="System.Boolean" />
+        <method name="FInState(System.Int32, System.IntPtr)" argnames="uStateID, pvoid" returntype="System.Boolean" />
+        <method name="FOnComponentExitState(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="dwComponentID, uStateID, uContext, cpicmExclude, rgpicmExclude" returntype="System.Boolean" />
+        <method name="OnComponentEnterState(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="dwComponentID, uStateID, uContext, cpicmExclude, rgpicmExclude, dwReserved" returntype="System.Void" />
+        <method name="FSetTrackingComponent(System.Int32, System.Boolean)" argnames="dwComponentID, fTrack" returntype="System.Boolean" />
+        <method name="FOnComponentActivate(System.Int32)" argnames="dwComponentID" returntype="System.Boolean" />
+        <method name="FUpdateComponentRegistration(System.Int32, System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT)" argnames="dwComponentID, pcrinfo" returntype="System.Boolean" />
+        <method name="FRevokeComponent(System.Int32)" argnames="dwComponentID" returntype="System.Boolean" />
+        <method name="FRegisterComponent(System.Windows.Forms.UnsafeNativeMethods.IMsoComponent, System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT, System.Int32&amp;)" argnames="component, pcrinfo, dwComponentID" returntype="System.Boolean" />
+        <method name="FDebugMessage(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hInst, msg, wParam, lParam" returntype="System.Boolean" />
+        <method name="QueryService(System.Guid&amp;, System.Guid&amp;, System.Object&amp;)" argnames="guidService, iid, ppvObj" returntype="System.Int32" />
+    </interface>
+    <interface name="IMsoComponent" namespace="System.Windows.Forms">
+        <method name="HwndGetWindow(System.Int32, System.Int32)" argnames="dwWhich, dwReserved" returntype="System.IntPtr" />
+        <method name="Terminate" argnames="" returntype="System.Void" />
+        <method name="FQueryTerminate(System.Boolean)" argnames="fPromptUser" returntype="System.Boolean" />
+        <method name="FContinueMessageLoop(System.Int32, System.Int32, System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="uReason, pvLoopData, pMsgPeeked" returntype="System.Boolean" />
+        <method name="FDoIdle(System.Int32)" argnames="grfidlef" returntype="System.Boolean" />
+        <method name="OnActivationChange(System.Windows.Forms.UnsafeNativeMethods.IMsoComponent, System.Boolean, System.Int32, System.Boolean, System.Int32, System.Int32)" argnames="component, fSameComponent, pcrinfo, fHostIsActivating, pchostinfo, dwReserved" returntype="System.Void" />
+        <method name="OnLoseActivation" argnames="" returntype="System.Void" />
+        <method name="OnAppActivate(System.Boolean, System.Int32)" argnames="fActive, dwOtherThreadID" returntype="System.Void" />
+        <method name="OnEnterState(System.Int32, System.Boolean)" argnames="uStateID, fEnter" returntype="System.Void" />
+        <method name="FPreTranslateMessage(System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="msg" returntype="System.Boolean" />
+        <method name="FDebugMessage(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hInst, msg, wParam, lParam" returntype="System.Boolean" />
+    </interface>
+    <interface name="IRichEditOleCallback" namespace="System.Windows.Forms" />
+    <interface name="IRichTextBoxOleCallback" namespace="System.Windows.Forms">
+        <method name="GetContextMenu(System.Int16, System.IntPtr, System.Windows.Forms.NativeMethods.CHARRANGE, System.IntPtr&amp;)" argnames="seltype, lpoleobj, lpchrg, hmenu" returntype="System.Int32" />
+        <method name="GetDragDropEffect(System.Boolean, System.Int32, System.Int32&amp;)" argnames="fDrag, grfKeyState, pdwEffect" returntype="System.Int32" />
+        <method name="GetClipboardData(System.Windows.Forms.NativeMethods.CHARRANGE, System.Int32, System.IntPtr)" argnames="lpchrg, reco, lplpdataobj" returntype="System.Int32" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Int32" />
+        <method name="QueryAcceptData(System.Windows.Forms.UnsafeNativeMethods.IOleDataObject, System.IntPtr, System.Int32, System.Int32, System.IntPtr)" argnames="lpdataobj, lpcfFormat, reco, fReally, hMetaPict" returntype="System.Int32" />
+        <method name="DeleteObject(System.IntPtr)" argnames="lpoleobj" returntype="System.Int32" />
+        <method name="QueryInsertObject(System.Guid&amp;, System.IntPtr, System.Int32)" argnames="lpclsid, lpstg, cp" returntype="System.Int32" />
+        <method name="ShowContainerUI(System.Int32)" argnames="fShow" returntype="System.Int32" />
+        <method name="GetInPlaceContext(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="lplpFrame, lplpDoc, lpFrameInfo" returntype="System.Int32" />
+        <method name="GetNewStorage(System.Windows.Forms.UnsafeNativeMethods.IStorage&amp;)" argnames="ret" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleInPlaceUIWindow" namespace="System.Windows.Forms">
+        <method name="SetActiveObject(System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceActiveObject, System.String)" argnames="pActiveObject, pszObjName" returntype="System.Void" />
+        <method name="SetBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
+        <method name="RequestBorderSpace(System.Windows.Forms.NativeMethods.COMRECT)" argnames="pborderwidths" returntype="System.Void" />
+        <method name="GetBorder(System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprectBorder" returntype="System.Void" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <interface name="IOleInPlaceActiveObject" namespace="System.Windows.Forms">
+        <method name="EnableModeless(System.Int32)" argnames="fEnable" returntype="System.Void" />
+        <method name="ResizeBorder(System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.UnsafeNativeMethods.IOleInPlaceUIWindow, System.Int32)" argnames="prcBorder, pUIWindow, fFrameWindow" returntype="System.Void" />
+        <method name="OnDocWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
+        <method name="OnFrameWindowActivate(System.Int32)" argnames="fActivate" returntype="System.Void" />
+        <method name="TranslateAccelerator(System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="lpmsg" returntype="System.Int32" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleWindow" namespace="System.Windows.Forms">
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleInPlaceObject" namespace="System.Windows.Forms">
+        <method name="ReactivateAndUndo" argnames="" returntype="System.Void" />
+        <method name="SetObjectRects(System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT)" argnames="lprcPosRect, lprcClipRect" returntype="System.Void" />
+        <method name="UIDeactivate" argnames="" returntype="System.Int32" />
+        <method name="InPlaceDeactivate" argnames="" returntype="System.Void" />
+        <method name="ContextSensitiveHelp(System.Int32)" argnames="fEnterMode" returntype="System.Void" />
+        <method name="GetWindow(System.IntPtr&amp;)" argnames="hwnd" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleObject" namespace="System.Windows.Forms">
+        <method name="SetColorScheme(System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="pLogpal" returntype="System.Int32" />
+        <method name="GetMiscStatus(System.Int32, System.Int32&amp;)" argnames="dwAspect, misc" returntype="System.Int32" />
+        <method name="EnumAdvise(System.Windows.Forms.UnsafeNativeMethods.IEnumSTATDATA&amp;)" argnames="e" returntype="System.Int32" />
+        <method name="Unadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
+        <method name="Advise(System.Windows.Forms.UnsafeNativeMethods.IAdviseSink, System.Int32&amp;)" argnames="pAdvSink, cookie" returntype="System.Int32" />
+        <method name="GetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
+        <method name="SetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
+        <method name="GetUserType(System.Int32, System.String&amp;)" argnames="dwFormOfType, userType" returntype="System.Int32" />
+        <method name="GetUserClassID(System.Guid&amp;)" argnames="pClsid" returntype="System.Int32" />
+        <method name="IsUpToDate" argnames="" returntype="System.Int32" />
+        <method name="OleUpdate" argnames="" returntype="System.Int32" />
+        <method name="EnumVerbs(System.Windows.Forms.UnsafeNativeMethods.IEnumOLEVERB&amp;)" argnames="e" returntype="System.Int32" />
+        <method name="DoVerb(System.Int32, System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.IOleClientSite, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT)" argnames="iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect" returntype="System.Int32" />
+        <method name="GetClipboardData(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IOleDataObject&amp;)" argnames="dwReserved, data" returntype="System.Int32" />
+        <method name="InitFromData(System.Windows.Forms.UnsafeNativeMethods.IOleDataObject, System.Int32, System.Int32)" argnames="pDataObject, fCreation, dwReserved" returntype="System.Int32" />
+        <method name="GetMoniker(System.Int32, System.Int32, System.Object&amp;)" argnames="dwAssign, dwWhichMoniker, moniker" returntype="System.Int32" />
+        <method name="SetMoniker(System.Int32, System.Object)" argnames="dwWhichMoniker, pmk" returntype="System.Int32" />
+        <method name="Close(System.Int32)" argnames="dwSaveOption" returntype="System.Int32" />
+        <method name="SetHostNames(System.String, System.String)" argnames="szContainerApp, szContainerObj" returntype="System.Int32" />
+        <method name="GetClientSite" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IOleClientSite" />
+        <method name="SetClientSite(System.Windows.Forms.UnsafeNativeMethods.IOleClientSite)" argnames="pClientSite" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleInPlaceObjectWindowless" namespace="System.Windows.Forms">
+        <method name="GetDropTarget(System.Object)" argnames="ppDropTarget" returntype="System.Int32" />
+        <method name="OnWindowMessage(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="msg, wParam, lParam, plResult" returntype="System.Int32" />
+        <method name="SetColorScheme(System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="pLogpal" returntype="System.Int32" />
+        <method name="GetMiscStatus(System.Int32, System.Int32&amp;)" argnames="dwAspect, misc" returntype="System.Int32" />
+        <method name="EnumAdvise(System.Windows.Forms.UnsafeNativeMethods.IEnumSTATDATA&amp;)" argnames="e" returntype="System.Int32" />
+        <method name="Unadvise(System.Int32)" argnames="dwConnection" returntype="System.Int32" />
+        <method name="Advise(System.Windows.Forms.UnsafeNativeMethods.IAdviseSink, System.Int32&amp;)" argnames="pAdvSink, cookie" returntype="System.Int32" />
+        <method name="GetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
+        <method name="SetExtent(System.Int32, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, pSizel" returntype="System.Int32" />
+        <method name="GetUserType(System.Int32, System.String&amp;)" argnames="dwFormOfType, userType" returntype="System.Int32" />
+        <method name="GetUserClassID(System.Guid&amp;)" argnames="pClsid" returntype="System.Int32" />
+        <method name="IsUpToDate" argnames="" returntype="System.Int32" />
+        <method name="OleUpdate" argnames="" returntype="System.Int32" />
+        <method name="EnumVerbs(System.Windows.Forms.UnsafeNativeMethods.IEnumOLEVERB&amp;)" argnames="e" returntype="System.Int32" />
+        <method name="DoVerb(System.Int32, System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.IOleClientSite, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT)" argnames="iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect" returntype="System.Int32" />
+        <method name="GetClipboardData(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IOleDataObject&amp;)" argnames="dwReserved, data" returntype="System.Int32" />
+        <method name="InitFromData(System.Windows.Forms.UnsafeNativeMethods.IOleDataObject, System.Int32, System.Int32)" argnames="pDataObject, fCreation, dwReserved" returntype="System.Int32" />
+        <method name="GetMoniker(System.Int32, System.Int32, System.Object&amp;)" argnames="dwAssign, dwWhichMoniker, moniker" returntype="System.Int32" />
+        <method name="SetMoniker(System.Int32, System.Object)" argnames="dwWhichMoniker, pmk" returntype="System.Int32" />
+        <method name="Close(System.Int32)" argnames="dwSaveOption" returntype="System.Int32" />
+        <method name="SetHostNames(System.String, System.String)" argnames="szContainerApp, szContainerObj" returntype="System.Int32" />
+        <method name="GetClientSite(System.Windows.Forms.UnsafeNativeMethods.IOleClientSite&amp;)" argnames="site" returntype="System.Int32" />
+        <method name="SetClientSite(System.Windows.Forms.UnsafeNativeMethods.IOleClientSite)" argnames="pClientSite" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleControl" namespace="System.Windows.Forms">
+        <method name="FreezeEvents(System.Int32)" argnames="bFreeze" returntype="System.Int32" />
+        <method name="OnAmbientPropertyChange(System.Int32)" argnames="dispID" returntype="System.Int32" />
+        <method name="OnMnemonic(System.Windows.Forms.NativeMethods.MSG&amp;)" argnames="pMsg" returntype="System.Int32" />
+        <method name="GetControlInfo(System.Windows.Forms.NativeMethods.tagCONTROLINFO)" argnames="pCI" returntype="System.Int32" />
+    </interface>
+    <interface name="IOleServiceProvider" namespace="System.Windows.Forms">
+        <method name="QueryService(System.Guid&amp;, System.Guid&amp;, System.IntPtr&amp;)" argnames="guidService, riid, ppvObject" returntype="System.Int32" />
+    </interface>
+    <interface name="IViewObject" namespace="System.Windows.Forms">
+        <method name="GetAdvise(System.Int32[], System.Int32[], System.Windows.Forms.UnsafeNativeMethods.IAdviseSink[])" argnames="paspects, advf, pAdvSink" returntype="System.Void" />
+        <method name="SetAdvise(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.IAdviseSink)" argnames="aspects, advf, pAdvSink" returntype="System.Void" />
+        <method name="Unfreeze(System.Int32)" argnames="dwFreeze" returntype="System.Int32" />
+        <method name="Freeze(System.Int32, System.Int32, System.IntPtr, System.IntPtr)" argnames="dwDrawAspect, lindex, pvAspect, pdwFreeze" returntype="System.Int32" />
+        <method name="GetColorSet(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet" returntype="System.Int32" />
+        <method name="Draw(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT, System.IntPtr, System.Int32)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue" returntype="System.Void" />
+    </interface>
+    <interface name="IViewObject2" namespace="System.Windows.Forms">
+        <method name="GetExtent(System.Int32, System.Int32, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="dwDrawAspect, lindex, ptd, lpsizel" returntype="System.Void" />
+        <method name="GetAdvise(System.Int32[], System.Int32[], System.Windows.Forms.UnsafeNativeMethods.IAdviseSink[])" argnames="paspects, advf, pAdvSink" returntype="System.Void" />
+        <method name="SetAdvise(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.IAdviseSink)" argnames="aspects, advf, pAdvSink" returntype="System.Void" />
+        <method name="Unfreeze(System.Int32)" argnames="dwFreeze" returntype="System.Int32" />
+        <method name="Freeze(System.Int32, System.Int32, System.IntPtr, System.IntPtr)" argnames="dwDrawAspect, lindex, pvAspect, pdwFreeze" returntype="System.Int32" />
+        <method name="GetColorSet(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.Windows.Forms.NativeMethods.tagLOGPALETTE)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet" returntype="System.Int32" />
+        <method name="Draw(System.Int32, System.Int32, System.IntPtr, System.Windows.Forms.NativeMethods.tagDVTARGETDEVICE, System.IntPtr, System.IntPtr, System.Windows.Forms.NativeMethods.COMRECT, System.Windows.Forms.NativeMethods.COMRECT, System.IntPtr, System.Int32)" argnames="dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue" returntype="System.Void" />
+    </interface>
+    <interface name="IPersist" namespace="System.Windows.Forms">
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
+    </interface>
+    <interface name="IPersistPropertyBag" namespace="System.Windows.Forms">
+        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IPropertyBag, System.Boolean, System.Boolean)" argnames="pPropBag, fClearDirty, fSaveAllProperties" returntype="System.Void" />
+        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IPropertyBag, System.Windows.Forms.UnsafeNativeMethods.IErrorLog)" argnames="pPropBag, pErrorLog" returntype="System.Void" />
+        <method name="InitNew" argnames="" returntype="System.Void" />
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
+    </interface>
+    <interface name="IQuickActivate" namespace="System.Windows.Forms">
+        <method name="GetContentExtent(System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="pSizel" returntype="System.Void" />
+        <method name="SetContentExtent(System.Windows.Forms.NativeMethods.tagSIZEL)" argnames="pSizel" returntype="System.Void" />
+        <method name="QuickActivate(System.Windows.Forms.UnsafeNativeMethods.tagQACONTAINER, System.Windows.Forms.UnsafeNativeMethods.tagQACONTROL)" argnames="pQaContainer, pQaControl" returntype="System.Void" />
+    </interface>
+    <interface name="IPropertyBag" namespace="System.Windows.Forms">
+        <method name="Write(System.String, System.Object&amp;)" argnames="pszPropName, pVar" returntype="System.Int32" />
+        <method name="Read(System.String, System.Object&amp;, System.Windows.Forms.UnsafeNativeMethods.IErrorLog)" argnames="pszPropName, pVar, pErrorLog" returntype="System.Int32" />
+    </interface>
+    <interface name="IErrorLog" namespace="System.Windows.Forms">
+        <method name="AddError(System.String, System.Windows.Forms.NativeMethods.tagEXCEPINFO)" argnames="pszPropName_p0, pExcepInfo_p1" returntype="System.Void" />
+    </interface>
+    <interface name="IPersistStream" namespace="System.Windows.Forms">
+        <method name="GetSizeMax" argnames="" returntype="System.Int64" />
+        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Boolean)" argnames="pstm, fClearDirty" returntype="System.Void" />
+        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
+        <method name="IsDirty" argnames="" returntype="System.Int32" />
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassId" returntype="System.Void" />
+    </interface>
+    <interface name="IPersistStreamInit" namespace="System.Windows.Forms">
+        <method name="InitNew" argnames="" returntype="System.Void" />
+        <method name="GetSizeMax(System.Int64)" argnames="pcbSize" returntype="System.Void" />
+        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Boolean)" argnames="pstm, fClearDirty" returntype="System.Void" />
+        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IStream)" argnames="pstm" returntype="System.Void" />
+        <method name="IsDirty" argnames="" returntype="System.Int32" />
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
+    </interface>
+    <interface name="IConnectionPoint" namespace="System.Windows.Forms">
+        <method name="EnumConnections(System.Object&amp;)" argnames="pEnum" returntype="System.Int32" />
+        <method name="Unadvise(System.Int32)" argnames="cookie" returntype="System.Int32" />
+        <method name="Advise(System.Object, System.Int32&amp;)" argnames="pUnkSink, cookie" returntype="System.Int32" />
+        <method name="GetConnectionPointContainer(System.Windows.Forms.UnsafeNativeMethods.IConnectionPointContainer&amp;)" argnames="pContainer" returntype="System.Int32" />
+        <method name="GetConnectionInterface(System.Guid&amp;)" argnames="iid" returntype="System.Int32" />
+    </interface>
+    <interface name="IPersistStorage" namespace="System.Windows.Forms">
+        <method name="HandsOffStorage" argnames="" returntype="System.Void" />
+        <method name="SaveCompleted(System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="pStgNew" returntype="System.Void" />
+        <method name="Save(System.Windows.Forms.UnsafeNativeMethods.IStorage, System.Int32)" argnames="pStgSave, fSameAsLoad" returntype="System.Void" />
+        <method name="Load(System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="pstg" returntype="System.Int32" />
+        <method name="InitNew(System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="pstg" returntype="System.Void" />
+        <method name="IsDirty" argnames="" returntype="System.Int32" />
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
+    </interface>
+    <interface name="IEnumVariant" namespace="System.Windows.Forms">
+        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumVariant[])" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Void" />
+        <method name="Next(System.Int32, System.IntPtr, System.Int32[])" argnames="celt, rgvar, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="IEnumFORMATETC" namespace="System.Windows.Forms">
+        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumFORMATETC[])" argnames="ppenum" returntype="System.Int32" />
+        <method name="Reset" argnames="" returntype="System.Int32" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Windows.Forms.NativeMethods.FORMATETC, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="IEnumOLEVERB" namespace="System.Windows.Forms">
+        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumOLEVERB&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Windows.Forms.NativeMethods.tagOLEVERB, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="IAdviseSink" namespace="System.Windows.Forms">
+        <method name="OnClose" argnames="" returntype="System.Void" />
+        <method name="OnSave" argnames="" returntype="System.Void" />
+        <method name="OnRename(System.Object)" argnames="pmk" returntype="System.Void" />
+        <method name="OnViewChange(System.Int32, System.Int32)" argnames="dwAspect, lindex" returntype="System.Void" />
+        <method name="OnDataChange(System.Windows.Forms.NativeMethods.FORMATETC, System.Windows.Forms.NativeMethods.STGMEDIUM)" argnames="pFormatetc, pStgmed" returntype="System.Void" />
+    </interface>
+    <interface name="IEnumSTATDATA" namespace="System.Windows.Forms">
+        <method name="Clone(System.Windows.Forms.UnsafeNativeMethods.IEnumSTATDATA[])" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Void" />
+        <method name="Next(System.Int32, System.Windows.Forms.NativeMethods.STATDATA, System.Int32[])" argnames="celt, rgelt, pceltFetched" returntype="System.Void" />
+    </interface>
+    <interface name="IStream" namespace="System.Windows.Forms">
+        <method name="Clone" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
+        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pStatstg, grfStatFlag" returntype="System.Void" />
+        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="Revert" argnames="" returntype="System.Void" />
+        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
+        <method name="CopyTo(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Int64, System.Int64[])" argnames="pstm, cb, pcbRead" returntype="System.Int64" />
+        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.Int32)" argnames="dlibMove, dwOrigin" returntype="System.Int64" />
+        <method name="Write(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
+        <method name="Read(System.IntPtr, System.Int32)" argnames="buf, len" returntype="System.Int32" />
+    </interface>
+    <interface name="IStorage" namespace="System.Windows.Forms">
+        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pStatStg, grfStatFlag" returntype="System.Void" />
+        <method name="SetStateBits(System.Int32, System.Int32)" argnames="grfStateBits, grfMask" returntype="System.Void" />
+        <method name="SetClass(System.Guid&amp;)" argnames="clsid" returntype="System.Void" />
+        <method name="SetElementTimes(System.String, System.Windows.Forms.NativeMethods.FILETIME, System.Windows.Forms.NativeMethods.FILETIME, System.Windows.Forms.NativeMethods.FILETIME)" argnames="pwcsName, pctime, patime, pmtime" returntype="System.Void" />
+        <method name="RenameElement(System.String, System.String)" argnames="pwcsOldName, pwcsNewName" returntype="System.Void" />
+        <method name="DestroyElement(System.String)" argnames="pwcsName" returntype="System.Void" />
+        <method name="EnumElements(System.Int32, System.IntPtr, System.Int32, System.Object&amp;)" argnames="reserved1, reserved2, reserved3, ppVal" returntype="System.Void" />
+        <method name="Revert" argnames="" returntype="System.Void" />
+        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
+        <method name="MoveElementTo(System.String, System.Windows.Forms.UnsafeNativeMethods.IStorage, System.String, System.Int32)" argnames="pwcsName, stgDest, pwcsNewName, grfFlags" returntype="System.Void" />
+        <method name="CopyTo(System.Int32, System.Guid[], System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.IStorage)" argnames="ciidExclude, pIIDExclude, snbExclude, stgDest" returntype="System.Void" />
+        <method name="OpenStorage(System.String, System.IntPtr, System.Int32, System.IntPtr, System.Int32)" argnames="pwcsName, pstgPriority, grfMode, snbExclude, reserved" returntype="System.Windows.Forms.UnsafeNativeMethods+IStorage" />
+        <method name="CreateStorage(System.String, System.Int32, System.Int32, System.Int32)" argnames="pwcsName, grfMode, reserved1, reserved2" returntype="System.Windows.Forms.UnsafeNativeMethods+IStorage" />
+        <method name="OpenStream(System.String, System.IntPtr, System.Int32, System.Int32)" argnames="pwcsName, reserved1, grfMode, reserved2" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
+        <method name="CreateStream(System.String, System.Int32, System.Int32, System.Int32)" argnames="pwcsName, grfMode, reserved1, reserved2" returntype="System.Windows.Forms.UnsafeNativeMethods+IStream" />
+    </interface>
+    <interface name="IClassFactory2" namespace="System.Windows.Forms">
+        <method name="CreateInstanceLic(System.Object, System.Object, System.Guid&amp;, System.String, System.Object&amp;)" argnames="pUnkOuter, pUnkReserved, riid, bstrKey, ppVal" returntype="System.Void" />
+        <method name="RequestLicKey(System.Int32, System.String[])" argnames="dwReserved, pBstrKey" returntype="System.Void" />
+        <method name="GetLicInfo(System.Windows.Forms.NativeMethods.tagLICINFO)" argnames="licInfo" returntype="System.Void" />
+        <method name="LockServer(System.Int32)" argnames="fLock" returntype="System.Void" />
+        <method name="CreateInstance(System.Object, System.Guid&amp;, System.Object[])" argnames="unused, refiid, ppunk" returntype="System.Void" />
+    </interface>
+    <interface name="IConnectionPointContainer" namespace="System.Windows.Forms">
+        <method name="FindConnectionPoint(System.Guid&amp;)" argnames="guid" returntype="System.Windows.Forms.UnsafeNativeMethods+IConnectionPoint" />
+        <method name="EnumConnectionPoints" argnames="" returntype="System.Object" />
+    </interface>
+    <interface name="IEnumConnectionPoints" namespace="System.Windows.Forms">
+        <method name="Clone" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+IEnumConnectionPoints" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="cSkip" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Windows.Forms.UnsafeNativeMethods.IConnectionPoint&amp;, System.Int32&amp;)" argnames="cConnections, pCp, pcFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="IDispatch" namespace="System.Windows.Forms">
+        <method name="Invoke(System.Int32, System.Guid&amp;, System.Int32, System.Int32, System.Windows.Forms.NativeMethods.tagDISPPARAMS, System.Object[], System.Windows.Forms.NativeMethods.tagEXCEPINFO, System.IntPtr[])" argnames="dispIdMember, riid, lcid, dwFlags, pDispParams, pVarResult, pExcepInfo, pArgErr" returntype="System.Int32" />
+        <method name="GetIDsOfNames(System.Guid&amp;, System.String[], System.Int32, System.Int32, System.Int32[])" argnames="riid, rgszNames, cNames, lcid, rgDispId" returntype="System.Int32" />
+        <method name="GetTypeInfo(System.Int32, System.Int32)" argnames="iTInfo, lcid" returntype="System.Windows.Forms.UnsafeNativeMethods+ITypeInfo" />
+        <method name="GetTypeInfoCount" argnames="" returntype="System.Int32" />
+    </interface>
+    <interface name="ITypeInfo" namespace="System.Windows.Forms">
+        <method name="ReleaseVarDesc(System.IntPtr)" argnames="varDesc" returntype="System.Void" />
+        <method name="ReleaseFuncDesc(System.IntPtr)" argnames="funcDesc" returntype="System.Void" />
+        <method name="ReleaseTypeAttr(System.IntPtr)" argnames="typeAttr" returntype="System.Void" />
+        <method name="GetContainingTypeLib(System.Windows.Forms.UnsafeNativeMethods.ITypeLib[], System.Int32[])" argnames="ppTLib, pIndex" returntype="System.Int32" />
+        <method name="GetMops(System.Int32, System.String[])" argnames="memid, pBstrMops" returntype="System.Int32" />
+        <method name="CreateInstance(System.Guid&amp;, System.Object[])" argnames="riid, ppvObj" returntype="System.Int32" />
+        <method name="AddressOfMember" argnames="" returntype="System.Int32" />
+        <method name="GetRefTypeInfo(System.IntPtr, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo&amp;)" argnames="hreftype, pTypeInfo" returntype="System.Int32" />
+        <method name="GetDllEntry(System.Int32, System.Windows.Forms.NativeMethods.tagINVOKEKIND, System.String[], System.String[], System.Int16[])" argnames="memid, invkind, pBstrDllName, pBstrName, pwOrdinal" returntype="System.Int32" />
+        <method name="GetDocumentation(System.Int32, System.String&amp;, System.String&amp;, System.Int32[], System.String[])" argnames="memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile" returntype="System.Int32" />
+        <method name="Invoke" argnames="" returntype="System.Int32" />
+        <method name="GetIDsOfNames(System.IntPtr, System.Int32, System.IntPtr)" argnames="rgszNames, cNames, pMemId" returntype="System.Int32" />
+        <method name="GetImplTypeFlags(System.Int32, System.Int32[])" argnames="index, pImplTypeFlags" returntype="System.Int32" />
+        <method name="GetRefTypeOfImplType(System.Int32, System.Int32[])" argnames="index, pRefType" returntype="System.Int32" />
+        <method name="GetNames(System.Int32, System.String[], System.Int32, System.Int32[])" argnames="memid, rgBstrNames, cMaxNames, pcNames" returntype="System.Int32" />
+        <method name="GetVarDesc(System.Int32, System.IntPtr&amp;)" argnames="index, pVarDesc" returntype="System.Int32" />
+        <method name="GetFuncDesc(System.Int32, System.IntPtr&amp;)" argnames="index, pFuncDesc" returntype="System.Int32" />
+        <method name="GetTypeComp(System.Windows.Forms.UnsafeNativeMethods.ITypeComp[])" argnames="ppTComp" returntype="System.Int32" />
+        <method name="GetTypeAttr(System.IntPtr&amp;)" argnames="pTypeAttr" returntype="System.Int32" />
+    </interface>
+    <interface name="ITypeComp" namespace="System.Windows.Forms">
+        <method name="RemoteBindType(System.String, System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[])" argnames="szName, lHashVal, ppTInfo" returntype="System.Void" />
+        <method name="RemoteBind(System.String, System.Int32, System.Int16, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[], System.Windows.Forms.NativeMethods.tagDESCKIND[], System.Windows.Forms.NativeMethods.tagFUNCDESC[], System.Windows.Forms.NativeMethods.tagVARDESC[], System.Windows.Forms.UnsafeNativeMethods.ITypeComp[], System.Int32[])" argnames="szName, lHashVal, wFlags, ppTInfo, pDescKind, ppFuncDesc, ppVarDesc, ppTypeComp, pDummy" returntype="System.Void" />
+    </interface>
+    <interface name="ITypeLib" namespace="System.Windows.Forms">
+        <method name="LocalReleaseTLibAttr" argnames="" returntype="System.Void" />
+        <method name="RemoteFindName(System.String, System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[], System.Int32[], System.Int16[], System.String[])" argnames="szNameBuf, lHashVal, ppTInfo, rgMemId, pcFound, pBstrLibName" returntype="System.Void" />
+        <method name="RemoteIsName(System.String, System.Int32, System.IntPtr[], System.String[])" argnames="szNameBuf, lHashVal, pfName, pBstrLibName" returntype="System.Void" />
+        <method name="RemoteGetDocumentation(System.Int32, System.Int32, System.String[], System.String[], System.Int32[], System.String[])" argnames="index, refPtrFlags, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile" returntype="System.Void" />
+        <method name="GetTypeComp(System.Windows.Forms.UnsafeNativeMethods.ITypeComp[])" argnames="ppTComp" returntype="System.Void" />
+        <method name="RemoteGetLibAttr(System.Windows.Forms.NativeMethods.tagTLIBATTR[], System.Int32[])" argnames="ppTLibAttr, pDummy" returntype="System.Void" />
+        <method name="GetTypeInfoOfGuid(System.Guid&amp;, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[])" argnames="guid, ppTInfo" returntype="System.Void" />
+        <method name="GetTypeInfoType(System.Int32, System.Windows.Forms.NativeMethods.tagTYPEKIND[])" argnames="index, pTKind" returntype="System.Void" />
+        <method name="GetTypeInfo(System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo[])" argnames="index, ppTInfo" returntype="System.Void" />
+        <method name="RemoteGetTypeInfoCount(System.Int32[])" argnames="pcTInfo" returntype="System.Void" />
+    </interface>
+    <interface name="ISupportErrorInfo" namespace="System.Windows.Forms">
+        <method name="InterfaceSupportsErrorInfo(System.Guid&amp;)" argnames="riid" returntype="System.Int32" />
+    </interface>
+    <interface name="IErrorInfo" namespace="System.Windows.Forms">
+        <method name="GetHelpContext(System.Int32&amp;)" argnames="pdwHelpContext" returntype="System.Int32" />
+        <method name="GetHelpFile(System.String&amp;)" argnames="pBstrHelpFile" returntype="System.Int32" />
+        <method name="GetDescription(System.String&amp;)" argnames="pBstrDescription" returntype="System.Int32" />
+        <method name="GetSource(System.String&amp;)" argnames="pBstrSource" returntype="System.Int32" />
+        <method name="GetGUID(System.Guid&amp;)" argnames="pguid" returntype="System.Int32" />
+    </interface>
+    <interface name="ILockBytes" namespace="System.Windows.Forms">
+        <method name="Stat(System.Windows.Forms.NativeMethods.STATSTG, System.Int32)" argnames="pstatstg, grfStatFlag" returntype="System.Void" />
+        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="SetSize(System.Int64)" argnames="cb" returntype="System.Void" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="WriteAt(System.Int64, System.IntPtr, System.Int32, System.Int32[])" argnames="ulOffset, pv, cb, pcbWritten" returntype="System.Void" />
+        <method name="ReadAt(System.Int64, System.IntPtr, System.Int32, System.Int32[])" argnames="ulOffset, pv, cb, pcbRead" returntype="System.Void" />
+    </interface>
+    <interface name="IWin32Window" namespace="System.Windows.Forms">
+        <property name="Handle" propertytype="System.IntPtr" />
+    </interface>
+    <interface name="IWindowTarget" namespace="System.Windows.Forms">
+        <method name="OnMessage(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Void" />
+        <method name="OnHandleChange(System.IntPtr)" argnames="newHandle" returntype="System.Void" />
+    </interface>
+    <interface name="IContainerControl" namespace="System.Windows.Forms">
+        <property name="ActiveControl" propertytype="System.Windows.Forms.Control" />
+        <method name="ActivateControl(System.Windows.Forms.Control)" argnames="active" returntype="System.Boolean" />
+    </interface>
+    <interface name="IDataGridEditingService" namespace="System.Windows.Forms">
+        <method name="EndEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32, System.Boolean)" argnames="gridColumn, rowNumber, shouldAbort" returntype="System.Boolean" />
+        <method name="BeginEdit(System.Windows.Forms.DataGridColumnStyle, System.Int32)" argnames="gridColumn, rowNumber" returntype="System.Boolean" />
+    </interface>
+    <interface name="IButtonControl" namespace="System.Windows.Forms">
+        <property name="DialogResult" propertytype="System.Windows.Forms.DialogResult" />
+        <method name="PerformClick" argnames="" returntype="System.Void" />
+        <method name="NotifyDefault(System.Boolean)" argnames="value" returntype="System.Void" />
+    </interface>
+    <interface name="IDataGridColumnStyleEditingNotificationService" namespace="System.Windows.Forms">
+        <method name="ColumnStartedEditing(System.Windows.Forms.Control)" argnames="editingControl" returntype="System.Void" />
+    </interface>
+    <interface name="IDataObject" namespace="System.Windows.Forms">
+        <method name="GetFormats" argnames="" returntype="System.String[]" />
+        <method name="GetFormats(System.Boolean)" argnames="autoConvert" returntype="System.String[]" />
+        <method name="GetDataPresent(System.Type)" argnames="format" returntype="System.Boolean" />
+        <method name="GetDataPresent(System.String)" argnames="format" returntype="System.Boolean" />
+        <method name="GetDataPresent(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Boolean" />
+        <method name="SetData(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="SetData(System.Type, System.Object)" argnames="format, data" returntype="System.Void" />
+        <method name="SetData(System.String, System.Object)" argnames="format, data" returntype="System.Void" />
+        <method name="SetData(System.String, System.Boolean, System.Object)" argnames="format, autoConvert, data" returntype="System.Void" />
+        <method name="GetData(System.Type)" argnames="format" returntype="System.Object" />
+        <method name="GetData(System.String)" argnames="format" returntype="System.Object" />
+        <method name="GetData(System.String, System.Boolean)" argnames="format, autoConvert" returntype="System.Object" />
+    </interface>
+    <interface name="IFeatureSupport" namespace="System.Windows.Forms">
+        <method name="GetVersionPresent(System.Object)" argnames="feature" returntype="System.Version" />
+        <method name="IsPresent(System.Object, System.Version)" argnames="feature, minimumVersion" returntype="System.Boolean" />
+        <method name="IsPresent(System.Object)" argnames="feature" returntype="System.Boolean" />
+    </interface>
+    <interface name="IMessageFilter" namespace="System.Windows.Forms">
+        <method name="PreFilterMessage(System.Windows.Forms.Message&amp;)" argnames="m" returntype="System.Boolean" />
+    </interface>
+    <interface name="ICommandExecutor" namespace="System.Windows.Forms">
+        <method name="Execute" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IFileReaderService" namespace="System.Windows.Forms">
+        <method name="OpenFileFromSource(System.String)" argnames="relativePath" returntype="System.IO.Stream" />
+    </interface>
+    <interface name="IVsPerPropertyBrowsing" namespace="System.Windows.Forms">
+        <method name="ResetPropertyValue(System.Int32)" argnames="dispid" returntype="System.Int32" />
+        <method name="CanResetPropertyValue(System.Int32, System.Boolean&amp;)" argnames="dispid, pfCanReset" returntype="System.Int32" />
+        <method name="GetClassName(System.String&amp;)" argnames="pbstrClassName" returntype="System.Int32" />
+        <method name="IsPropertyReadOnly(System.Int32, System.Boolean&amp;)" argnames="dispid, fReadOnly" returntype="System.Int32" />
+        <method name="HasDefaultValue(System.Int32, System.Boolean&amp;)" argnames="dispid, fDefault" returntype="System.Int32" />
+        <method name="GetLocalizedPropertyInfo(System.Int32, System.Int32, System.String[], System.String[])" argnames="dispid, localeID, pbstrLocalizedName, pbstrLocalizeDescription" returntype="System.Int32" />
+        <method name="DisplayChildProperties(System.Int32, System.Boolean&amp;)" argnames="dispid, pfDisplay" returntype="System.Int32" />
+        <method name="HideProperty(System.Int32, System.Boolean&amp;)" argnames="dispid, pfHide" returntype="System.Int32" />
+    </interface>
+    <interface name="IManagedPerPropertyBrowsing" namespace="System.Windows.Forms">
+        <method name="GetPropertyAttributes(System.Int32, System.Int32&amp;, System.IntPtr&amp;, System.IntPtr&amp;)" argnames="dispid, pcAttributes, pbstrAttrNames, pvariantInitValues" returntype="System.Int32" />
+    </interface>
+    <interface name="IProvidePropertyBuilder" namespace="System.Windows.Forms">
+        <method name="ExecuteBuilder(System.Int32, System.String, System.Object, System.IntPtr, System.Object&amp;, System.Boolean&amp;)" argnames="dispid, bstrGuidBldr, pdispApp, hwndBldrOwner, pvarValue, actionCommitted" returntype="System.Int32" />
+        <method name="MapPropertyToBuilder(System.Int32, System.Int32[], System.String[], System.Boolean&amp;)" argnames="dispid, pdwCtlBldType, pbstrGuidBldr, builderAvailable" returntype="System.Int32" />
+    </interface>
+    <interface name="IPerPropertyBrowsing" namespace="System.Windows.Forms">
+        <method name="GetPredefinedValue(System.Int32, System.Int32, System.Windows.Forms.NativeMethods.VARIANT)" argnames="dispID, dwCookie, pVarOut" returntype="System.Int32" />
+        <method name="GetPredefinedStrings(System.Int32, System.Windows.Forms.NativeMethods.CA_STRUCT, System.Windows.Forms.NativeMethods.CA_STRUCT)" argnames="dispID, pCaStringsOut, pCaCookiesOut" returntype="System.Int32" />
+        <method name="MapPropertyToPage(System.Int32, System.Guid&amp;)" argnames="dispID, pGuid" returntype="System.Int32" />
+        <method name="GetDisplayString(System.Int32, System.String[])" argnames="dispID, pBstr" returntype="System.Int32" />
+    </interface>
+    <interface name="ICategorizeProperties" namespace="System.Windows.Forms">
+        <method name="GetCategoryName(System.Int32, System.Int32, System.String&amp;)" argnames="propcat, lcid, categoryName" returntype="System.Int32" />
+        <method name="MapPropertyToCategory(System.Int32, System.Int32&amp;)" argnames="dispID, categoryID" returntype="System.Int32" />
+    </interface>
+    <interface name="ISpecifyPropertyPages" namespace="System.Windows.Forms">
+        <method name="GetPages(System.Windows.Forms.NativeMethods.tagCAUUID)" argnames="pPages" returntype="System.Void" />
+    </interface>
+    <interface name="IProvideMultipleClassInfo" namespace="System.Windows.Forms">
+        <method name="GetInfoOfIndex(System.Int32, System.Int32, System.Windows.Forms.UnsafeNativeMethods.ITypeInfo&amp;, System.Int32, System.Int32, System.IntPtr, System.IntPtr)" argnames="iti, dwFlags, pTypeInfo, pTIFlags, pcdispidReserved, piidPrimary, piidSource" returntype="System.Int32" />
+        <method name="GetMultiTypeInfoCount(System.Int32&amp;)" argnames="pcti" returntype="System.Int32" />
+        <method name="GetGUID(System.Int32, System.Guid&amp;)" argnames="dwGuidKind, pGuid" returntype="System.Int32" />
+        <method name="GetClassInfo" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+ITypeInfo" />
+    </interface>
+    <interface name="IProvideClassInfo" namespace="System.Windows.Forms">
+        <method name="GetClassInfo" argnames="" returntype="System.Windows.Forms.UnsafeNativeMethods+ITypeInfo" />
+    </interface>
+    <interface name="IPicture" namespace="System.Windows.Forms">
+        <method name="GetAttributes" argnames="" returntype="System.Int32" />
+        <method name="SaveAsFile(System.Windows.Forms.UnsafeNativeMethods.IStream, System.Int32, System.Int32&amp;)" argnames="pstm, fSaveMemCopy, pcbSize" returntype="System.Int32" />
+        <method name="PictureChanged" argnames="" returntype="System.Void" />
+        <method name="SetKeepOriginalFormat(System.Boolean)" argnames="pfkeep" returntype="System.Void" />
+        <method name="GetKeepOriginalFormat" argnames="" returntype="System.Boolean" />
+        <method name="SelectPicture(System.IntPtr, System.IntPtr[], System.IntPtr[])" argnames="hdcIn, phdcOut, phbmpOut" returntype="System.Void" />
+        <method name="GetCurDC" argnames="" returntype="System.IntPtr" />
+        <method name="SetHPal(System.IntPtr)" argnames="phpal" returntype="System.Void" />
+        <method name="Render(System.IntPtr, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.IntPtr)" argnames="hDC, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc, rcBounds" returntype="System.Void" />
+        <method name="GetHeight" argnames="" returntype="System.Int32" />
+        <method name="GetWidth" argnames="" returntype="System.Int32" />
+        <method name="GetPictureType" argnames="" returntype="System.Int16" />
+        <method name="GetHPal" argnames="" returntype="System.IntPtr" />
+        <method name="GetHandle" argnames="" returntype="System.IntPtr" />
+    </interface>
+    <interface name="IFont" namespace="System.Windows.Forms">
+        <method name="SetHdc(System.IntPtr)" argnames="hdc" returntype="System.Void" />
+        <method name="ReleaseHfont(System.IntPtr)" argnames="hFont" returntype="System.Void" />
+        <method name="AddRefHfont(System.IntPtr)" argnames="hFont" returntype="System.Void" />
+        <method name="QueryTextMetrics(System.IntPtr&amp;)" argnames="ptm" returntype="System.Void" />
+        <method name="SetRatio(System.Int32, System.Int32)" argnames="cyLogical, cyHimetric" returntype="System.Void" />
+        <method name="IsEqual(System.Windows.Forms.SafeNativeMethods.IFont)" argnames="pfontOther" returntype="System.Int32" />
+        <method name="Clone(System.Windows.Forms.SafeNativeMethods.IFont&amp;)" argnames="ppfont" returntype="System.Void" />
+        <method name="GetHFont" argnames="" returntype="System.IntPtr" />
+        <method name="SetCharset(System.Int16)" argnames="pcharset" returntype="System.Void" />
+        <method name="GetCharset" argnames="" returntype="System.Int16" />
+        <method name="SetWeight(System.Int16)" argnames="pweight" returntype="System.Void" />
+        <method name="GetWeight" argnames="" returntype="System.Int16" />
+        <method name="SetStrikethrough(System.Boolean)" argnames="pstrikethrough" returntype="System.Void" />
+        <method name="GetStrikethrough" argnames="" returntype="System.Boolean" />
+        <method name="SetUnderline(System.Boolean)" argnames="punderline" returntype="System.Void" />
+        <method name="GetUnderline" argnames="" returntype="System.Boolean" />
+        <method name="SetItalic(System.Boolean)" argnames="pitalic" returntype="System.Void" />
+        <method name="GetItalic" argnames="" returntype="System.Boolean" />
+        <method name="SetBold(System.Boolean)" argnames="pbold" returntype="System.Void" />
+        <method name="GetBold" argnames="" returntype="System.Boolean" />
+        <method name="SetSize(System.Int64)" argnames="psize" returntype="System.Void" />
+        <method name="GetSize" argnames="" returntype="System.Int64" />
+        <method name="SetName(System.String)" argnames="pname" returntype="System.Void" />
+        <method name="GetName" argnames="" returntype="System.String" />
+    </interface>
+    <interface name="IFontDisp" namespace="System.Windows.Forms">
+        <property name="Name" propertytype="System.String" />
+        <property name="Size" propertytype="System.Int64" />
+        <property name="Bold" propertytype="System.Boolean" />
+        <property name="Italic" propertytype="System.Boolean" />
+        <property name="Underline" propertytype="System.Boolean" />
+        <property name="Strikethrough" propertytype="System.Boolean" />
+        <property name="Weight" propertytype="System.Int16" />
+        <property name="Charset" propertytype="System.Int16" />
+    </interface>
+    <interface name="IPictureDisp" namespace="System.Windows.Forms">
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="HPal" propertytype="System.IntPtr" />
+        <property name="PictureType" propertytype="System.Int16" />
+        <property name="Width" propertytype="System.Int32" />
+        <property name="Height" propertytype="System.Int32" />
+        <method name="Render(System.IntPtr, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="hdc, x, y, cx, cy, xSrc, ySrc, cxSrc, cySrc" returntype="System.Void" />
+    </interface>
+    <interface name="IComponentEditorPageSite" namespace="System.Windows.Forms">
+        <method name="SetDirty" argnames="" returntype="System.Void" />
+        <method name="GetControl" argnames="" returntype="System.Windows.Forms.Control" />
+    </interface>
+    <struct name="BindingMemberInfo" namespace="System.Windows.Forms">
+        <constructor name="BindingMemberInfo(System.String)" argnames="dataMember" />
+        <property name="BindingPath" propertytype="System.String" />
+        <property name="BindingField" propertytype="System.String" />
+        <property name="BindingMember" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="otherObject" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="DataGridCell" namespace="System.Windows.Forms">
+        <constructor name="DataGridCell(System.Int32, System.Int32)" argnames="r, c" />
+        <property name="ColumnNumber" propertytype="System.Int32" />
+        <property name="RowNumber" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="LinkArea" namespace="System.Windows.Forms">
+        <class name="LinkAreaConverter" namespace="System.Windows.Forms">
+            <constructor name="LinkAreaConverter" argnames="" />
+            <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+            <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+            <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+            <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+            <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+            <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+            <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+            <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+            <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+            <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+            <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+            <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="LinkAreaConverter(System.Int32, System.Int32)" argnames="start, length" />
+        <property name="Start" propertytype="System.Int32" />
+        <property name="Length" propertytype="System.Int32" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="Message" namespace="System.Windows.Forms">
+        <property name="HWnd" propertytype="System.IntPtr" />
+        <property name="Msg" propertytype="System.Int32" />
+        <property name="WParam" propertytype="System.IntPtr" />
+        <property name="LParam" propertytype="System.IntPtr" />
+        <property name="Result" propertytype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetLParam(System.Type)" argnames="cls" returntype="System.Object" />
+        <method name="Create(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wparam, lparam" returntype="System.Windows.Forms.Message" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="RECT" namespace="System.Windows.Forms">
+        <constructor name="RECT(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="left, top, right, bottom" />
+        <field name="left" />
+        <field name="top" />
+        <field name="right" />
+        <field name="bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="FromXYWH(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" returntype="System.Windows.Forms.NativeMethods+RECT" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="MSG" namespace="System.Windows.Forms">
+        <field name="hwnd" />
+        <field name="message" />
+        <field name="wParam" />
+        <field name="lParam" />
+        <field name="time" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="PAINTSTRUCT" namespace="System.Windows.Forms">
+        <field name="hdc" />
+        <field name="fErase" />
+        <field name="rcPaint_left" />
+        <field name="rcPaint_top" />
+        <field name="rcPaint_right" />
+        <field name="rcPaint_bottom" />
+        <field name="fRestore" />
+        <field name="fIncUpdate" />
+        <field name="reserved1" />
+        <field name="reserved2" />
+        <field name="reserved3" />
+        <field name="reserved4" />
+        <field name="reserved5" />
+        <field name="reserved6" />
+        <field name="reserved7" />
+        <field name="reserved8" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="WINDOWPLACEMENT" namespace="System.Windows.Forms">
+        <field name="length" />
+        <field name="flags" />
+        <field name="showCmd" />
+        <field name="ptMinPosition_x" />
+        <field name="ptMinPosition_y" />
+        <field name="ptMaxPosition_x" />
+        <field name="ptMaxPosition_y" />
+        <field name="rcNormalPosition_left" />
+        <field name="rcNormalPosition_top" />
+        <field name="rcNormalPosition_right" />
+        <field name="rcNormalPosition_bottom" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="NMLISTVIEW" namespace="System.Windows.Forms">
+        <field name="hdr" />
+        <field name="iItem" />
+        <field name="iSubItem" />
+        <field name="uNewState" />
+        <field name="uOldState" />
+        <field name="uChanged" />
+        <field name="lParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="NMHDR" namespace="System.Windows.Forms">
+        <field name="hwndFrom" />
+        <field name="idFrom" />
+        <field name="code" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="TV_ITEM" namespace="System.Windows.Forms">
+        <field name="mask" />
+        <field name="hItem" />
+        <field name="state" />
+        <field name="stateMask" />
+        <field name="pszText" />
+        <field name="cchTextMax" />
+        <field name="iImage" />
+        <field name="iSelectedImage" />
+        <field name="cChildren" />
+        <field name="lParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="TV_INSERTSTRUCT" namespace="System.Windows.Forms">
+        <field name="hParent" />
+        <field name="hInsertAfter" />
+        <field name="item_mask" />
+        <field name="item_hItem" />
+        <field name="item_state" />
+        <field name="item_stateMask" />
+        <field name="item_pszText" />
+        <field name="item_cchTextMax" />
+        <field name="item_iImage" />
+        <field name="item_iSelectedImage" />
+        <field name="item_cChildren" />
+        <field name="item_lParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="NMTREEVIEW" namespace="System.Windows.Forms">
+        <field name="nmhdr" />
+        <field name="action" />
+        <field name="itemOld" />
+        <field name="itemNew" />
+        <field name="ptDrag_X" />
+        <field name="ptDrag_Y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="HIGHCONTRAST" namespace="System.Windows.Forms">
+        <field name="cbSize" />
+        <field name="dwFlags" />
+        <field name="lpszDefaultScheme" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="HIGHCONTRAST_I" namespace="System.Windows.Forms">
+        <field name="cbSize" />
+        <field name="dwFlags" />
+        <field name="lpszDefaultScheme" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="value_tagELEMDESC" namespace="System.Windows.Forms">
+        <field name="tdesc" />
+        <field name="paramdesc" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="WINDOWPOS" namespace="System.Windows.Forms">
+        <field name="hwnd" />
+        <field name="hwndInsertAfter" />
+        <field name="x" />
+        <field name="y" />
+        <field name="cx" />
+        <field name="cy" />
+        <field name="flags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="NMTOOLBAR" namespace="System.Windows.Forms">
+        <field name="hdr" />
+        <field name="iItem" />
+        <field name="tbButton" />
+        <field name="cchText" />
+        <field name="pszText" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="TBBUTTON" namespace="System.Windows.Forms">
+        <field name="iBitmap" />
+        <field name="idCommand" />
+        <field name="fsState" />
+        <field name="fsStyle" />
+        <field name="bReserved0" />
+        <field name="bReserved1" />
+        <field name="dwData" />
+        <field name="iString" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="TBBUTTONINFO" namespace="System.Windows.Forms">
+        <field name="cbSize" />
+        <field name="dwMask" />
+        <field name="idCommand" />
+        <field name="iImage" />
+        <field name="fsState" />
+        <field name="fsStyle" />
+        <field name="cx" />
+        <field name="lParam" />
+        <field name="pszText" />
+        <field name="cchTest" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="NMCUSTOMDRAW" namespace="System.Windows.Forms">
+        <field name="nmcd" />
+        <field name="dwDrawStage" />
+        <field name="hdc" />
+        <field name="rc" />
+        <field name="dwItemSpec" />
+        <field name="uItemState" />
+        <field name="lItemlParam" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="NMLVCUSTOMDRAW" namespace="System.Windows.Forms">
+        <field name="nmcd" />
+        <field name="clrText" />
+        <field name="clrTextBk" />
+        <field name="iSubItem" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="LVFINDINFO" namespace="System.Windows.Forms">
+        <field name="flags" />
+        <field name="psz" />
+        <field name="lParam" />
+        <field name="ptX" />
+        <field name="ptY" />
+        <field name="vkDirection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="LVITEM" namespace="System.Windows.Forms">
+        <field name="mask" />
+        <field name="iItem" />
+        <field name="iSubItem" />
+        <field name="state" />
+        <field name="stateMask" />
+        <field name="pszText" />
+        <field name="cchTextMax" />
+        <field name="iImage" />
+        <field name="lParam" />
+        <field name="iIndent" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="LVITEM_NOTEXT" namespace="System.Windows.Forms">
+        <field name="mask" />
+        <field name="iItem" />
+        <field name="iSubItem" />
+        <field name="state" />
+        <field name="stateMask" />
+        <field name="pszText" />
+        <field name="cchTextMax" />
+        <field name="iImage" />
+        <field name="lParam" />
+        <field name="iIndent" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="tagPARAMDESC" namespace="System.Windows.Forms">
+        <field name="pparamdescex" />
+        <field name="wParamFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="tagIDLDESC" namespace="System.Windows.Forms">
+        <field name="dwReserved" />
+        <field name="wIDLFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="RGBQUAD" namespace="System.Windows.Forms">
+        <field name="rgbBlue" />
+        <field name="rgbGreen" />
+        <field name="rgbRed" />
+        <field name="rgbReserved" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="PALETTEENTRY" namespace="System.Windows.Forms">
+        <field name="peRed" />
+        <field name="peGreen" />
+        <field name="peBlue" />
+        <field name="peFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="BITMAPINFO_FLAT" namespace="System.Windows.Forms">
+        <field name="bmiHeader_biSize" />
+        <field name="bmiHeader_biWidth" />
+        <field name="bmiHeader_biHeight" />
+        <field name="bmiHeader_biPlanes" />
+        <field name="bmiHeader_biBitCount" />
+        <field name="bmiHeader_biCompression" />
+        <field name="bmiHeader_biSizeImage" />
+        <field name="bmiHeader_biXPelsPerMeter" />
+        <field name="bmiHeader_biYPelsPerMeter" />
+        <field name="bmiHeader_biClrUsed" />
+        <field name="bmiHeader_biClrImportant" />
+        <field name="bmiColors" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <delegate name="ColumnClickEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ColumnClickEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ColumnClickEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ColumnClickEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ControlEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ControlEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ControlEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ControlEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ConvertEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ConvertEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ConvertEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ConvertEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DateBoldEventHandler" namespace="System.Windows.Forms">
+        <constructor name="DateBoldEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.DateBoldEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.DateBoldEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DateRangeEventHandler" namespace="System.Windows.Forms">
+        <constructor name="DateRangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.DateRangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.DateRangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DragEventHandler" namespace="System.Windows.Forms">
+        <constructor name="DragEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.DragEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.DragEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DrawItemEventHandler" namespace="System.Windows.Forms">
+        <constructor name="DrawItemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.DrawItemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.DrawItemEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="GiveFeedbackEventHandler" namespace="System.Windows.Forms">
+        <constructor name="GiveFeedbackEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.GiveFeedbackEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.GiveFeedbackEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="HelpEventHandler" namespace="System.Windows.Forms">
+        <constructor name="HelpEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.HelpEventArgs, System.AsyncCallback, System.Object)" argnames="sender, hlpevent, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.HelpEventArgs)" argnames="sender, hlpevent" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="InputLanguageChangedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="InputLanguageChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.InputLanguageChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="InputLanguageChangingEventHandler" namespace="System.Windows.Forms">
+        <constructor name="InputLanguageChangingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.InputLanguageChangingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="InvalidateEventHandler" namespace="System.Windows.Forms">
+        <constructor name="InvalidateEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.InvalidateEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.InvalidateEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ItemChangedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ItemChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ItemChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ItemChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ItemCheckEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ItemCheckEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ItemCheckEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ItemCheckEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ItemDragEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ItemDragEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ItemDragEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ItemDragEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="KeyEventHandler" namespace="System.Windows.Forms">
+        <constructor name="KeyEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.KeyEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="KeyPressEventHandler" namespace="System.Windows.Forms">
+        <constructor name="KeyPressEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.KeyPressEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.KeyPressEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="LabelEditEventHandler" namespace="System.Windows.Forms">
+        <constructor name="LabelEditEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.LabelEditEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.LabelEditEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="LayoutEventHandler" namespace="System.Windows.Forms">
+        <constructor name="LayoutEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.LayoutEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.LayoutEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="LinkClickedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="LinkClickedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.LinkClickedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.LinkClickedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="LinkLabelLinkClickedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="LinkLabelLinkClickedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.LinkLabelLinkClickedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.LinkLabelLinkClickedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="MeasureItemEventHandler" namespace="System.Windows.Forms">
+        <constructor name="MeasureItemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.MeasureItemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.MeasureItemEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="MethodInvoker" namespace="System.Windows.Forms">
+        <constructor name="MethodInvoker(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke" argnames="" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="MouseEventHandler" namespace="System.Windows.Forms">
+        <constructor name="MouseEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.MouseEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="EnumChildrenCallback" namespace="System.Windows.Forms">
+        <constructor name="EnumChildrenCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hwnd, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hwnd, lParam" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="EnumChildrenProc" namespace="System.Windows.Forms">
+        <constructor name="EnumChildrenProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hwnd, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hwnd, lParam" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="EditStreamCallback" namespace="System.Windows.Forms">
+        <constructor name="EditStreamCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.Int32&amp;, System.IAsyncResult)" argnames="transferred, result" returntype="System.Int32" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.Int32, System.Int32&amp;, System.AsyncCallback, System.Object)" argnames="dwCookie, buf, cb, transferred, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr, System.Int32, System.Int32&amp;)" argnames="dwCookie, buf, cb, transferred" returntype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="WndProc" namespace="System.Windows.Forms">
+        <constructor name="WndProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
+        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.IntPtr" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ListViewCompareCallback" namespace="System.Windows.Forms">
+        <constructor name="ListViewCompareCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="lParam1, lParam2, lParamSort, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr, System.IntPtr)" argnames="lParam1, lParam2, lParamSort" returntype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="HookProc" namespace="System.Windows.Forms">
+        <constructor name="HookProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
+        <method name="BeginInvoke(System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="nCode, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Int32, System.IntPtr, System.IntPtr)" argnames="nCode, wParam, lParam" returntype="System.IntPtr" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="EnumThreadWindowsCallback" namespace="System.Windows.Forms">
+        <constructor name="EnumThreadWindowsCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hWnd, lParam" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="TimerProc" namespace="System.Windows.Forms">
+        <constructor name="TimerProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="HandleChangeEventHandler" namespace="System.Windows.Forms">
+        <constructor name="HandleChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.String, System.IntPtr, System.Int32, System.AsyncCallback, System.Object)" argnames="handleType, handleValue, currentHandleCount, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.String, System.IntPtr, System.Int32)" argnames="handleType, handleValue, currentHandleCount" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="MonitorEnumProc" namespace="System.Windows.Forms">
+        <constructor name="MonitorEnumProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="monitor, hdc, lprcMonitor, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr, System.IntPtr, System.IntPtr)" argnames="monitor, hdc, lprcMonitor, lParam" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="NavigateEventHandler" namespace="System.Windows.Forms">
+        <constructor name="NavigateEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.NavigateEventArgs, System.AsyncCallback, System.Object)" argnames="sender, ne, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.NavigateEventArgs)" argnames="sender, ne" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="NodeLabelEditEventHandler" namespace="System.Windows.Forms">
+        <constructor name="NodeLabelEditEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.NodeLabelEditEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.NodeLabelEditEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="PaintEventHandler" namespace="System.Windows.Forms">
+        <constructor name="PaintEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.PaintEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="PropertyTabChangedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="PropertyTabChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.PropertyTabChangedEventArgs, System.AsyncCallback, System.Object)" argnames="s, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.PropertyTabChangedEventArgs)" argnames="s, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="PropertyValueChangedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="PropertyValueChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.PropertyValueChangedEventArgs, System.AsyncCallback, System.Object)" argnames="s, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.PropertyValueChangedEventArgs)" argnames="s, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="QueryAccessibilityHelpEventHandler" namespace="System.Windows.Forms">
+        <constructor name="QueryAccessibilityHelpEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.QueryAccessibilityHelpEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.QueryAccessibilityHelpEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="QueryContinueDragEventHandler" namespace="System.Windows.Forms">
+        <constructor name="QueryContinueDragEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.QueryContinueDragEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.QueryContinueDragEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ContentsResizedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ContentsResizedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ContentsResizedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ContentsResizedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ScrollEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ScrollEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ScrollEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ScrollEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="SelectedGridItemChangedEventHandler" namespace="System.Windows.Forms">
+        <constructor name="SelectedGridItemChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.SelectedGridItemChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.SelectedGridItemChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="SplitterEventHandler" namespace="System.Windows.Forms">
+        <constructor name="SplitterEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.SplitterEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.SplitterEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="StatusBarDrawItemEventHandler" namespace="System.Windows.Forms">
+        <constructor name="StatusBarDrawItemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.StatusBarDrawItemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, sbdevent, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.StatusBarDrawItemEventArgs)" argnames="sender, sbdevent" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="StatusBarPanelClickEventHandler" namespace="System.Windows.Forms">
+        <constructor name="StatusBarPanelClickEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.StatusBarPanelClickEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.StatusBarPanelClickEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ToolBarButtonClickEventHandler" namespace="System.Windows.Forms">
+        <constructor name="ToolBarButtonClickEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.ToolBarButtonClickEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.ToolBarButtonClickEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="TreeViewCancelEventHandler" namespace="System.Windows.Forms">
+        <constructor name="TreeViewCancelEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.TreeViewCancelEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.TreeViewCancelEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="TreeViewEventHandler" namespace="System.Windows.Forms">
+        <constructor name="TreeViewEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.TreeViewEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="UICuesEventHandler" namespace="System.Windows.Forms">
+        <constructor name="UICuesEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.UICuesEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.UICuesEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="UpDownEventHandler" namespace="System.Windows.Forms">
+        <constructor name="UpDownEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Windows.Forms.UpDownEventArgs, System.AsyncCallback, System.Object)" argnames="source, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Windows.Forms.UpDownEventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="AccessibleEvents" namespace="System.Windows.Forms">
+        <field name="SystemSound" />
+        <field name="SystemAlert" />
+        <field name="SystemForeground" />
+        <field name="SystemMenuStart" />
+        <field name="SystemMenuEnd" />
+        <field name="SystemMenuPopupStart" />
+        <field name="SystemMenuPopupEnd" />
+        <field name="SystemCaptureStart" />
+        <field name="SystemCaptureEnd" />
+        <field name="SystemMoveSizeStart" />
+        <field name="SystemMoveSizeEnd" />
+        <field name="SystemContextHelpStart" />
+        <field name="SystemContextHelpEnd" />
+        <field name="SystemDragDropStart" />
+        <field name="SystemDragDropEnd" />
+        <field name="SystemDialogStart" />
+        <field name="SystemDialogEnd" />
+        <field name="SystemScrollingStart" />
+        <field name="SystemScrollingEnd" />
+        <field name="SystemSwitchStart" />
+        <field name="SystemSwitchEnd" />
+        <field name="SystemMinimizeStart" />
+        <field name="SystemMinimizeEnd" />
+        <field name="Create" />
+        <field name="Destroy" />
+        <field name="Show" />
+        <field name="Hide" />
+        <field name="Reorder" />
+        <field name="Focus" />
+        <field name="Selection" />
+        <field name="SelectionAdd" />
+        <field name="SelectionRemove" />
+        <field name="SelectionWithin" />
+        <field name="StateChange" />
+        <field name="LocationChange" />
+        <field name="NameChange" />
+        <field name="DescriptionChange" />
+        <field name="ValueChange" />
+        <field name="ParentChange" />
+        <field name="HelpChange" />
+        <field name="DefaultActionChange" />
+        <field name="AcceleratorChange" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="AccessibleNavigation" namespace="System.Windows.Forms">
+        <field name="Down" />
+        <field name="FirstChild" />
+        <field name="LastChild" />
+        <field name="Left" />
+        <field name="Next" />
+        <field name="Previous" />
+        <field name="Right" />
+        <field name="Up" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EXTENDED_NAME_FORMAT" namespace="System.Windows.Forms">
+        <field name="NameUnknown" />
+        <field name="NameFullyQualifiedDN" />
+        <field name="NameSamCompatible" />
+        <field name="NameDisplay" />
+        <field name="NameUniqueId" />
+        <field name="NameCanonical" />
+        <field name="NameUserPrincipal" />
+        <field name="NameCanonicalEx" />
+        <field name="NameServicePrincipal" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="AccessibleRole" namespace="System.Windows.Forms">
+        <field name="Default" />
+        <field name="None" />
+        <field name="TitleBar" />
+        <field name="MenuBar" />
+        <field name="ScrollBar" />
+        <field name="Grip" />
+        <field name="Sound" />
+        <field name="Cursor" />
+        <field name="Caret" />
+        <field name="Alert" />
+        <field name="Window" />
+        <field name="Client" />
+        <field name="MenuPopup" />
+        <field name="MenuItem" />
+        <field name="ToolTip" />
+        <field name="Application" />
+        <field name="Document" />
+        <field name="Pane" />
+        <field name="Chart" />
+        <field name="Dialog" />
+        <field name="Border" />
+        <field name="Grouping" />
+        <field name="Separator" />
+        <field name="ToolBar" />
+        <field name="StatusBar" />
+        <field name="Table" />
+        <field name="ColumnHeader" />
+        <field name="RowHeader" />
+        <field name="Column" />
+        <field name="Row" />
+        <field name="Cell" />
+        <field name="Link" />
+        <field name="HelpBalloon" />
+        <field name="Character" />
+        <field name="List" />
+        <field name="ListItem" />
+        <field name="Outline" />
+        <field name="OutlineItem" />
+        <field name="PageTab" />
+        <field name="PropertyPage" />
+        <field name="Indicator" />
+        <field name="Graphic" />
+        <field name="StaticText" />
+        <field name="Text" />
+        <field name="PushButton" />
+        <field name="CheckButton" />
+        <field name="RadioButton" />
+        <field name="ComboBox" />
+        <field name="DropList" />
+        <field name="ProgressBar" />
+        <field name="Dial" />
+        <field name="HotkeyField" />
+        <field name="Slider" />
+        <field name="SpinButton" />
+        <field name="Diagram" />
+        <field name="Animation" />
+        <field name="Equation" />
+        <field name="ButtonDropDown" />
+        <field name="ButtonMenu" />
+        <field name="ButtonDropDownGrid" />
+        <field name="WhiteSpace" />
+        <field name="PageTabList" />
+        <field name="Clock" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="AccessibleSelection" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="TakeFocus" />
+        <field name="TakeSelection" />
+        <field name="ExtendSelection" />
+        <field name="AddSelection" />
+        <field name="RemoveSelection" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="AccessibleStates" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Unavailable" />
+        <field name="Selected" />
+        <field name="Focused" />
+        <field name="Pressed" />
+        <field name="Checked" />
+        <field name="Mixed" />
+        <field name="Indeterminate" />
+        <field name="ReadOnly" />
+        <field name="HotTracked" />
+        <field name="Default" />
+        <field name="Expanded" />
+        <field name="Collapsed" />
+        <field name="Busy" />
+        <field name="Floating" />
+        <field name="Marqueed" />
+        <field name="Animated" />
+        <field name="Invisible" />
+        <field name="Offscreen" />
+        <field name="Sizeable" />
+        <field name="Moveable" />
+        <field name="SelfVoicing" />
+        <field name="Focusable" />
+        <field name="Selectable" />
+        <field name="Linked" />
+        <field name="Traversed" />
+        <field name="MultiSelectable" />
+        <field name="ExtSelectable" />
+        <field name="AlertLow" />
+        <field name="AlertMedium" />
+        <field name="AlertHigh" />
+        <field name="Protected" />
+        <field name="Valid" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="AnchorStyles" namespace="System.Windows.Forms">
+        <field name="Top" />
+        <field name="Bottom" />
+        <field name="Left" />
+        <field name="Right" />
+        <field name="None" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Appearance" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="Button" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ArrangeDirection" namespace="System.Windows.Forms">
+        <field name="Down" />
+        <field name="Left" />
+        <field name="Right" />
+        <field name="Up" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ArrangeStartingPosition" namespace="System.Windows.Forms">
+        <field name="BottomLeft" />
+        <field name="BottomRight" />
+        <field name="Hide" />
+        <field name="TopLeft" />
+        <field name="TopRight" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="BootMode" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="FailSafe" />
+        <field name="FailSafeWithNetwork" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Border3DSide" namespace="System.Windows.Forms">
+        <field name="Left" />
+        <field name="Top" />
+        <field name="Right" />
+        <field name="Bottom" />
+        <field name="Middle" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Border3DStyle" namespace="System.Windows.Forms">
+        <field name="Adjust" />
+        <field name="Bump" />
+        <field name="Etched" />
+        <field name="Flat" />
+        <field name="Raised" />
+        <field name="RaisedInner" />
+        <field name="RaisedOuter" />
+        <field name="Sunken" />
+        <field name="SunkenInner" />
+        <field name="SunkenOuter" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="BorderStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="FixedSingle" />
+        <field name="Fixed3D" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="BoundsSpecified" namespace="System.Windows.Forms">
+        <field name="X" />
+        <field name="Y" />
+        <field name="Width" />
+        <field name="Height" />
+        <field name="Location" />
+        <field name="Size" />
+        <field name="All" />
+        <field name="None" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ButtonBorderStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Dotted" />
+        <field name="Dashed" />
+        <field name="Solid" />
+        <field name="Inset" />
+        <field name="Outset" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ButtonState" namespace="System.Windows.Forms">
+        <field name="Checked" />
+        <field name="Flat" />
+        <field name="Inactive" />
+        <field name="Normal" />
+        <field name="Pushed" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CaptionButton" namespace="System.Windows.Forms">
+        <field name="Close" />
+        <field name="Help" />
+        <field name="Maximize" />
+        <field name="Minimize" />
+        <field name="Restore" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CharacterCasing" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="Upper" />
+        <field name="Lower" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CheckState" namespace="System.Windows.Forms">
+        <field name="Unchecked" />
+        <field name="Checked" />
+        <field name="Indeterminate" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ColorDepth" namespace="System.Windows.Forms">
+        <field name="Depth4Bit" />
+        <field name="Depth8Bit" />
+        <field name="Depth16Bit" />
+        <field name="Depth24Bit" />
+        <field name="Depth32Bit" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ColumnHeaderStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Nonclickable" />
+        <field name="Clickable" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ComboBoxStyle" namespace="System.Windows.Forms">
+        <field name="Simple" />
+        <field name="DropDown" />
+        <field name="DropDownList" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ControlStyles" namespace="System.Windows.Forms">
+        <field name="ContainerControl" />
+        <field name="UserPaint" />
+        <field name="Opaque" />
+        <field name="ResizeRedraw" />
+        <field name="FixedWidth" />
+        <field name="FixedHeight" />
+        <field name="StandardClick" />
+        <field name="Selectable" />
+        <field name="UserMouse" />
+        <field name="SupportsTransparentBackColor" />
+        <field name="StandardDoubleClick" />
+        <field name="AllPaintingInWmPaint" />
+        <field name="CacheText" />
+        <field name="EnableNotifyMessage" />
+        <field name="DoubleBuffer" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="HitTestType" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Cell" />
+        <field name="ColumnHeader" />
+        <field name="RowHeader" />
+        <field name="ColumnResize" />
+        <field name="RowResize" />
+        <field name="Caption" />
+        <field name="ParentRows" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DataGridLineStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Solid" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DataGridParentRowsLabelStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="TableName" />
+        <field name="ColumnName" />
+        <field name="Both" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DateTimePickerFormat" namespace="System.Windows.Forms">
+        <field name="Long" />
+        <field name="Short" />
+        <field name="Time" />
+        <field name="Custom" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Day" namespace="System.Windows.Forms">
+        <field name="Monday" />
+        <field name="Tuesday" />
+        <field name="Wednesday" />
+        <field name="Thursday" />
+        <field name="Friday" />
+        <field name="Saturday" />
+        <field name="Sunday" />
+        <field name="Default" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DialogResult" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="OK" />
+        <field name="Cancel" />
+        <field name="Abort" />
+        <field name="Retry" />
+        <field name="Ignore" />
+        <field name="Yes" />
+        <field name="No" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DockStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Top" />
+        <field name="Bottom" />
+        <field name="Left" />
+        <field name="Right" />
+        <field name="Fill" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DragAction" namespace="System.Windows.Forms">
+        <field name="Continue" />
+        <field name="Drop" />
+        <field name="Cancel" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DragDropEffects" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Copy" />
+        <field name="Move" />
+        <field name="Link" />
+        <field name="Scroll" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DrawItemState" namespace="System.Windows.Forms">
+        <field name="Checked" />
+        <field name="ComboBoxEdit" />
+        <field name="Default" />
+        <field name="Disabled" />
+        <field name="Focus" />
+        <field name="Grayed" />
+        <field name="HotLight" />
+        <field name="Inactive" />
+        <field name="NoAccelerator" />
+        <field name="NoFocusRect" />
+        <field name="Selected" />
+        <field name="None" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DrawMode" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="OwnerDrawFixed" />
+        <field name="OwnerDrawVariable" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ErrorBlinkStyle" namespace="System.Windows.Forms">
+        <field name="BlinkIfDifferentError" />
+        <field name="AlwaysBlink" />
+        <field name="NeverBlink" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ErrorIconAlignment" namespace="System.Windows.Forms">
+        <field name="TopLeft" />
+        <field name="TopRight" />
+        <field name="MiddleLeft" />
+        <field name="MiddleRight" />
+        <field name="BottomLeft" />
+        <field name="BottomRight" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FlatStyle" namespace="System.Windows.Forms">
+        <field name="Flat" />
+        <field name="Popup" />
+        <field name="Standard" />
+        <field name="System" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FormBorderStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="FixedSingle" />
+        <field name="Fixed3D" />
+        <field name="FixedDialog" />
+        <field name="Sizable" />
+        <field name="FixedToolWindow" />
+        <field name="SizableToolWindow" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FormStartPosition" namespace="System.Windows.Forms">
+        <field name="Manual" />
+        <field name="CenterScreen" />
+        <field name="WindowsDefaultLocation" />
+        <field name="WindowsDefaultBounds" />
+        <field name="CenterParent" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FormWindowState" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="Minimized" />
+        <field name="Maximized" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FrameStyle" namespace="System.Windows.Forms">
+        <field name="Dashed" />
+        <field name="Thick" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="GridItemType" namespace="System.Windows.Forms">
+        <field name="Property" />
+        <field name="Category" />
+        <field name="ArrayValue" />
+        <field name="Root" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="HelpNavigator" namespace="System.Windows.Forms">
+        <field name="Topic" />
+        <field name="TableOfContents" />
+        <field name="Index" />
+        <field name="Find" />
+        <field name="AssociateIndex" />
+        <field name="KeywordIndex" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="HorizontalAlignment" namespace="System.Windows.Forms">
+        <field name="Left" />
+        <field name="Right" />
+        <field name="Center" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ImeMode" namespace="System.Windows.Forms">
+        <field name="Inherit" />
+        <field name="NoControl" />
+        <field name="On" />
+        <field name="Off" />
+        <field name="Disable" />
+        <field name="Hiragana" />
+        <field name="Katakana" />
+        <field name="KatakanaHalf" />
+        <field name="AlphaFull" />
+        <field name="Alpha" />
+        <field name="HangulFull" />
+        <field name="Hangul" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ItemActivation" namespace="System.Windows.Forms">
+        <field name="Standard" />
+        <field name="OneClick" />
+        <field name="TwoClick" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ItemBoundsPortion" namespace="System.Windows.Forms">
+        <field name="Entire" />
+        <field name="Icon" />
+        <field name="Label" />
+        <field name="ItemOnly" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Keys" namespace="System.Windows.Forms">
+        <field name="KeyCode" />
+        <field name="Modifiers" />
+        <field name="None" />
+        <field name="LButton" />
+        <field name="RButton" />
+        <field name="Cancel" />
+        <field name="MButton" />
+        <field name="XButton1" />
+        <field name="XButton2" />
+        <field name="Back" />
+        <field name="Tab" />
+        <field name="LineFeed" />
+        <field name="Clear" />
+        <field name="Return" />
+        <field name="Enter" />
+        <field name="ShiftKey" />
+        <field name="ControlKey" />
+        <field name="Menu" />
+        <field name="Pause" />
+        <field name="Capital" />
+        <field name="CapsLock" />
+        <field name="Escape" />
+        <field name="Space" />
+        <field name="Prior" />
+        <field name="PageUp" />
+        <field name="Next" />
+        <field name="PageDown" />
+        <field name="End" />
+        <field name="Home" />
+        <field name="Left" />
+        <field name="Up" />
+        <field name="Right" />
+        <field name="Down" />
+        <field name="Select" />
+        <field name="Print" />
+        <field name="Execute" />
+        <field name="Snapshot" />
+        <field name="PrintScreen" />
+        <field name="Insert" />
+        <field name="Delete" />
+        <field name="Help" />
+        <field name="D0" />
+        <field name="D1" />
+        <field name="D2" />
+        <field name="D3" />
+        <field name="D4" />
+        <field name="D5" />
+        <field name="D6" />
+        <field name="D7" />
+        <field name="D8" />
+        <field name="D9" />
+        <field name="A" />
+        <field name="B" />
+        <field name="C" />
+        <field name="D" />
+        <field name="E" />
+        <field name="F" />
+        <field name="G" />
+        <field name="H" />
+        <field name="I" />
+        <field name="J" />
+        <field name="K" />
+        <field name="L" />
+        <field name="M" />
+        <field name="N" />
+        <field name="O" />
+        <field name="P" />
+        <field name="Q" />
+        <field name="R" />
+        <field name="S" />
+        <field name="T" />
+        <field name="U" />
+        <field name="V" />
+        <field name="W" />
+        <field name="X" />
+        <field name="Y" />
+        <field name="Z" />
+        <field name="LWin" />
+        <field name="RWin" />
+        <field name="Apps" />
+        <field name="NumPad0" />
+        <field name="NumPad1" />
+        <field name="NumPad2" />
+        <field name="NumPad3" />
+        <field name="NumPad4" />
+        <field name="NumPad5" />
+        <field name="NumPad6" />
+        <field name="NumPad7" />
+        <field name="NumPad8" />
+        <field name="NumPad9" />
+        <field name="Multiply" />
+        <field name="Add" />
+        <field name="Separator" />
+        <field name="Subtract" />
+        <field name="Decimal" />
+        <field name="Divide" />
+        <field name="F1" />
+        <field name="F2" />
+        <field name="F3" />
+        <field name="F4" />
+        <field name="F5" />
+        <field name="F6" />
+        <field name="F7" />
+        <field name="F8" />
+        <field name="F9" />
+        <field name="F10" />
+        <field name="F11" />
+        <field name="F12" />
+        <field name="F13" />
+        <field name="F14" />
+        <field name="F15" />
+        <field name="F16" />
+        <field name="F17" />
+        <field name="F18" />
+        <field name="F19" />
+        <field name="F20" />
+        <field name="F21" />
+        <field name="F22" />
+        <field name="F23" />
+        <field name="F24" />
+        <field name="NumLock" />
+        <field name="Scroll" />
+        <field name="LShiftKey" />
+        <field name="RShiftKey" />
+        <field name="LControlKey" />
+        <field name="RControlKey" />
+        <field name="LMenu" />
+        <field name="RMenu" />
+        <field name="ProcessKey" />
+        <field name="Attn" />
+        <field name="Crsel" />
+        <field name="Exsel" />
+        <field name="EraseEof" />
+        <field name="Play" />
+        <field name="Zoom" />
+        <field name="NoName" />
+        <field name="Pa1" />
+        <field name="OemClear" />
+        <field name="KanaMode" />
+        <field name="HanguelMode" />
+        <field name="HangulMode" />
+        <field name="JunjaMode" />
+        <field name="FinalMode" />
+        <field name="HanjaMode" />
+        <field name="KanjiMode" />
+        <field name="IMEConvert" />
+        <field name="IMENonconvert" />
+        <field name="IMEAceept" />
+        <field name="IMEModeChange" />
+        <field name="BrowserBack" />
+        <field name="BrowserForward" />
+        <field name="BrowserRefresh" />
+        <field name="BrowserStop" />
+        <field name="BrowserSearch" />
+        <field name="BrowserFavorites" />
+        <field name="BrowserHome" />
+        <field name="VolumeMute" />
+        <field name="VolumeDown" />
+        <field name="VolumeUp" />
+        <field name="MediaNextTrack" />
+        <field name="MediaPreviousTrack" />
+        <field name="MediaStop" />
+        <field name="MediaPlayPause" />
+        <field name="LaunchMail" />
+        <field name="SelectMedia" />
+        <field name="LaunchApplication1" />
+        <field name="LaunchApplication2" />
+        <field name="OemSemicolon" />
+        <field name="Oemplus" />
+        <field name="Oemcomma" />
+        <field name="OemMinus" />
+        <field name="OemPeriod" />
+        <field name="OemQuestion" />
+        <field name="Oemtilde" />
+        <field name="OemOpenBrackets" />
+        <field name="OemPipe" />
+        <field name="OemCloseBrackets" />
+        <field name="OemQuotes" />
+        <field name="Oem8" />
+        <field name="OemBackslash" />
+        <field name="Shift" />
+        <field name="Control" />
+        <field name="Alt" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LeftRightAlignment" namespace="System.Windows.Forms">
+        <field name="Left" />
+        <field name="Right" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LinkBehavior" namespace="System.Windows.Forms">
+        <field name="SystemDefault" />
+        <field name="AlwaysUnderline" />
+        <field name="HoverUnderline" />
+        <field name="NeverUnderline" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LinkState" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="Hover" />
+        <field name="Active" />
+        <field name="Visited" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ListViewAlignment" namespace="System.Windows.Forms">
+        <field name="Default" />
+        <field name="Top" />
+        <field name="Left" />
+        <field name="SnapToGrid" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MdiLayout" namespace="System.Windows.Forms">
+        <field name="Cascade" />
+        <field name="TileHorizontal" />
+        <field name="TileVertical" />
+        <field name="ArrangeIcons" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MenuGlyph" namespace="System.Windows.Forms">
+        <field name="Arrow" />
+        <field name="Checkmark" />
+        <field name="Bullet" />
+        <field name="Min" />
+        <field name="Max" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MenuMerge" namespace="System.Windows.Forms">
+        <field name="Add" />
+        <field name="Replace" />
+        <field name="MergeItems" />
+        <field name="Remove" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MessageBoxButtons" namespace="System.Windows.Forms">
+        <field name="OK" />
+        <field name="OKCancel" />
+        <field name="AbortRetryIgnore" />
+        <field name="YesNoCancel" />
+        <field name="YesNo" />
+        <field name="RetryCancel" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MessageBoxDefaultButton" namespace="System.Windows.Forms">
+        <field name="Button1" />
+        <field name="Button2" />
+        <field name="Button3" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MessageBoxIcon" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Hand" />
+        <field name="Question" />
+        <field name="Exclamation" />
+        <field name="Asterisk" />
+        <field name="Stop" />
+        <field name="Error" />
+        <field name="Warning" />
+        <field name="Information" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MessageBoxOptions" namespace="System.Windows.Forms">
+        <field name="ServiceNotification" />
+        <field name="DefaultDesktopOnly" />
+        <field name="RightAlign" />
+        <field name="RtlReading" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MouseButtons" namespace="System.Windows.Forms">
+        <field name="Left" />
+        <field name="None" />
+        <field name="Right" />
+        <field name="Middle" />
+        <field name="XButton1" />
+        <field name="XButton2" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="tagVT" namespace="System.Windows.Forms">
+        <field name="VT_EMPTY" />
+        <field name="VT_NULL" />
+        <field name="VT_I2" />
+        <field name="VT_I4" />
+        <field name="VT_R4" />
+        <field name="VT_R8" />
+        <field name="VT_CY" />
+        <field name="VT_DATE" />
+        <field name="VT_BSTR" />
+        <field name="VT_DISPATCH" />
+        <field name="VT_ERROR" />
+        <field name="VT_BOOL" />
+        <field name="VT_VARIANT" />
+        <field name="VT_UNKNOWN" />
+        <field name="VT_DECIMAL" />
+        <field name="VT_I1" />
+        <field name="VT_UI1" />
+        <field name="VT_UI2" />
+        <field name="VT_UI4" />
+        <field name="VT_I8" />
+        <field name="VT_UI8" />
+        <field name="VT_INT" />
+        <field name="VT_UINT" />
+        <field name="VT_VOID" />
+        <field name="VT_HRESULT" />
+        <field name="VT_PTR" />
+        <field name="VT_SAFEARRAY" />
+        <field name="VT_CARRAY" />
+        <field name="VT_USERDEFINED" />
+        <field name="VT_LPSTR" />
+        <field name="VT_LPWSTR" />
+        <field name="VT_RECORD" />
+        <field name="VT_FILETIME" />
+        <field name="VT_BLOB" />
+        <field name="VT_STREAM" />
+        <field name="VT_STORAGE" />
+        <field name="VT_STREAMED_OBJECT" />
+        <field name="VT_STORED_OBJECT" />
+        <field name="VT_BLOB_OBJECT" />
+        <field name="VT_CF" />
+        <field name="VT_CLSID" />
+        <field name="VT_BSTR_BLOB" />
+        <field name="VT_VECTOR" />
+        <field name="VT_ARRAY" />
+        <field name="VT_BYREF" />
+        <field name="VT_RESERVED" />
+        <field name="VT_ILLEGAL" />
+        <field name="VT_ILLEGALMASKED" />
+        <field name="VT_TYPEMASK" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="tagINVOKEKIND" namespace="System.Windows.Forms">
+        <field name="INVOKE_FUNC" />
+        <field name="INVOKE_PROPERTYGET" />
+        <field name="INVOKE_PROPERTYPUT" />
+        <field name="INVOKE_PROPERTYPUTREF" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="tagDESCKIND" namespace="System.Windows.Forms">
+        <field name="DESCKIND_NONE" />
+        <field name="DESCKIND_FUNCDESC" />
+        <field name="DESCKIND_VARDESC" />
+        <field name="DESCKIND_TYPECOMP" />
+        <field name="DESCKIND_IMPLICITAPPOBJ" />
+        <field name="DESCKIND_MAX" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="tagTYPEKIND" namespace="System.Windows.Forms">
+        <field name="TKIND_ENUM" />
+        <field name="TKIND_RECORD" />
+        <field name="TKIND_MODULE" />
+        <field name="TKIND_INTERFACE" />
+        <field name="TKIND_DISPATCH" />
+        <field name="TKIND_COCLASS" />
+        <field name="TKIND_ALIAS" />
+        <field name="TKIND_UNION" />
+        <field name="TKIND_MAX" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="tagSYSKIND" namespace="System.Windows.Forms">
+        <field name="SYS_WIN16" />
+        <field name="SYS_MAC" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="tagVARFLAGS" namespace="System.Windows.Forms">
+        <field name="VARFLAG_FREADONLY" />
+        <field name="VARFLAG_FSOURCE" />
+        <field name="VARFLAG_FBINDABLE" />
+        <field name="VARFLAG_FREQUESTEDIT" />
+        <field name="VARFLAG_FDISPLAYBIND" />
+        <field name="VARFLAG_FDEFAULTBIND" />
+        <field name="VARFLAG_FHIDDEN" />
+        <field name="VARFLAG_FDEFAULTCOLLELEM" />
+        <field name="VARFLAG_FUIDEFAULT" />
+        <field name="VARFLAG_FNONBROWSABLE" />
+        <field name="VARFLAG_FREPLACEABLE" />
+        <field name="VARFLAG_FIMMEDIATEBIND" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="tagVARKIND" namespace="System.Windows.Forms">
+        <field name="VAR_PERINSTANCE" />
+        <field name="VAR_STATIC" />
+        <field name="VAR_CONST" />
+        <field name="VAR_DISPATCH" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Orientation" namespace="System.Windows.Forms">
+        <field name="Horizontal" />
+        <field name="Vertical" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PictureBoxSizeMode" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="StretchImage" />
+        <field name="AutoSize" />
+        <field name="CenterImage" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PropertySort" namespace="System.Windows.Forms">
+        <field name="NoSort" />
+        <field name="Alphabetical" />
+        <field name="Categorized" />
+        <field name="CategorizedAlphabetical" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RichTextBoxFinds" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="WholeWord" />
+        <field name="MatchCase" />
+        <field name="NoHighlight" />
+        <field name="Reverse" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RichTextBoxScrollBars" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Horizontal" />
+        <field name="Vertical" />
+        <field name="Both" />
+        <field name="ForcedHorizontal" />
+        <field name="ForcedVertical" />
+        <field name="ForcedBoth" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RichTextBoxSelectionAttribute" namespace="System.Windows.Forms">
+        <field name="Mixed" />
+        <field name="None" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RichTextBoxSelectionTypes" namespace="System.Windows.Forms">
+        <field name="Empty" />
+        <field name="Text" />
+        <field name="Object" />
+        <field name="MultiChar" />
+        <field name="MultiObject" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RichTextBoxStreamType" namespace="System.Windows.Forms">
+        <field name="RichText" />
+        <field name="PlainText" />
+        <field name="RichNoOleObjs" />
+        <field name="TextTextOleObjs" />
+        <field name="UnicodePlainText" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RichTextBoxWordPunctuations" namespace="System.Windows.Forms">
+        <field name="Level1" />
+        <field name="Level2" />
+        <field name="Custom" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RightToLeft" namespace="System.Windows.Forms">
+        <field name="No" />
+        <field name="Yes" />
+        <field name="Inherit" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ScrollBars" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Horizontal" />
+        <field name="Vertical" />
+        <field name="Both" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ScrollButton" namespace="System.Windows.Forms">
+        <field name="Down" />
+        <field name="Left" />
+        <field name="Right" />
+        <field name="Up" />
+        <field name="Min" />
+        <field name="Max" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ScrollEventType" namespace="System.Windows.Forms">
+        <field name="SmallDecrement" />
+        <field name="SmallIncrement" />
+        <field name="LargeDecrement" />
+        <field name="LargeIncrement" />
+        <field name="ThumbPosition" />
+        <field name="ThumbTrack" />
+        <field name="First" />
+        <field name="Last" />
+        <field name="EndScroll" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SecurityIDType" namespace="System.Windows.Forms">
+        <field name="User" />
+        <field name="Group" />
+        <field name="Domain" />
+        <field name="Alias" />
+        <field name="WellKnownGroup" />
+        <field name="DeletedAccount" />
+        <field name="Invalid" />
+        <field name="Unknown" />
+        <field name="Computer" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SelectionMode" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="One" />
+        <field name="MultiSimple" />
+        <field name="MultiExtended" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Shortcut" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="CtrlA" />
+        <field name="CtrlB" />
+        <field name="CtrlC" />
+        <field name="CtrlD" />
+        <field name="CtrlE" />
+        <field name="CtrlF" />
+        <field name="CtrlG" />
+        <field name="CtrlH" />
+        <field name="CtrlI" />
+        <field name="CtrlJ" />
+        <field name="CtrlK" />
+        <field name="CtrlL" />
+        <field name="CtrlM" />
+        <field name="CtrlN" />
+        <field name="CtrlO" />
+        <field name="CtrlP" />
+        <field name="CtrlQ" />
+        <field name="CtrlR" />
+        <field name="CtrlS" />
+        <field name="CtrlT" />
+        <field name="CtrlU" />
+        <field name="CtrlV" />
+        <field name="CtrlW" />
+        <field name="CtrlX" />
+        <field name="CtrlY" />
+        <field name="CtrlZ" />
+        <field name="CtrlShiftA" />
+        <field name="CtrlShiftB" />
+        <field name="CtrlShiftC" />
+        <field name="CtrlShiftD" />
+        <field name="CtrlShiftE" />
+        <field name="CtrlShiftF" />
+        <field name="CtrlShiftG" />
+        <field name="CtrlShiftH" />
+        <field name="CtrlShiftI" />
+        <field name="CtrlShiftJ" />
+        <field name="CtrlShiftK" />
+        <field name="CtrlShiftL" />
+        <field name="CtrlShiftM" />
+        <field name="CtrlShiftN" />
+        <field name="CtrlShiftO" />
+        <field name="CtrlShiftP" />
+        <field name="CtrlShiftQ" />
+        <field name="CtrlShiftR" />
+        <field name="CtrlShiftS" />
+        <field name="CtrlShiftT" />
+        <field name="CtrlShiftU" />
+        <field name="CtrlShiftV" />
+        <field name="CtrlShiftW" />
+        <field name="CtrlShiftX" />
+        <field name="CtrlShiftY" />
+        <field name="CtrlShiftZ" />
+        <field name="F1" />
+        <field name="F2" />
+        <field name="F3" />
+        <field name="F4" />
+        <field name="F5" />
+        <field name="F6" />
+        <field name="F7" />
+        <field name="F8" />
+        <field name="F9" />
+        <field name="F10" />
+        <field name="F11" />
+        <field name="F12" />
+        <field name="ShiftF1" />
+        <field name="ShiftF2" />
+        <field name="ShiftF3" />
+        <field name="ShiftF4" />
+        <field name="ShiftF5" />
+        <field name="ShiftF6" />
+        <field name="ShiftF7" />
+        <field name="ShiftF8" />
+        <field name="ShiftF9" />
+        <field name="ShiftF10" />
+        <field name="ShiftF11" />
+        <field name="ShiftF12" />
+        <field name="CtrlF1" />
+        <field name="CtrlF2" />
+        <field name="CtrlF3" />
+        <field name="CtrlF4" />
+        <field name="CtrlF5" />
+        <field name="CtrlF6" />
+        <field name="CtrlF7" />
+        <field name="CtrlF8" />
+        <field name="CtrlF9" />
+        <field name="CtrlF10" />
+        <field name="CtrlF11" />
+        <field name="CtrlF12" />
+        <field name="CtrlShiftF1" />
+        <field name="CtrlShiftF2" />
+        <field name="CtrlShiftF3" />
+        <field name="CtrlShiftF4" />
+        <field name="CtrlShiftF5" />
+        <field name="CtrlShiftF6" />
+        <field name="CtrlShiftF7" />
+        <field name="CtrlShiftF8" />
+        <field name="CtrlShiftF9" />
+        <field name="CtrlShiftF10" />
+        <field name="CtrlShiftF11" />
+        <field name="CtrlShiftF12" />
+        <field name="Ins" />
+        <field name="CtrlIns" />
+        <field name="ShiftIns" />
+        <field name="Del" />
+        <field name="CtrlDel" />
+        <field name="ShiftDel" />
+        <field name="AltBksp" />
+        <field name="AltF1" />
+        <field name="AltF2" />
+        <field name="AltF3" />
+        <field name="AltF4" />
+        <field name="AltF5" />
+        <field name="AltF6" />
+        <field name="AltF7" />
+        <field name="AltF8" />
+        <field name="AltF9" />
+        <field name="AltF10" />
+        <field name="AltF11" />
+        <field name="AltF12" />
+        <field name="Alt0" />
+        <field name="Alt1" />
+        <field name="Alt2" />
+        <field name="Alt3" />
+        <field name="Alt4" />
+        <field name="Alt5" />
+        <field name="Alt6" />
+        <field name="Alt7" />
+        <field name="Alt8" />
+        <field name="Alt9" />
+        <field name="Ctrl0" />
+        <field name="Ctrl1" />
+        <field name="Ctrl2" />
+        <field name="Ctrl3" />
+        <field name="Ctrl4" />
+        <field name="Ctrl5" />
+        <field name="Ctrl6" />
+        <field name="Ctrl7" />
+        <field name="Ctrl8" />
+        <field name="Ctrl9" />
+        <field name="CtrlShift0" />
+        <field name="CtrlShift1" />
+        <field name="CtrlShift2" />
+        <field name="CtrlShift3" />
+        <field name="CtrlShift4" />
+        <field name="CtrlShift5" />
+        <field name="CtrlShift6" />
+        <field name="CtrlShift7" />
+        <field name="CtrlShift8" />
+        <field name="CtrlShift9" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SizeGripStyle" namespace="System.Windows.Forms">
+        <field name="Auto" />
+        <field name="Show" />
+        <field name="Hide" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SortOrder" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Ascending" />
+        <field name="Descending" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StatusBarPanelAutoSize" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Spring" />
+        <field name="Contents" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StatusBarPanelBorderStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="Raised" />
+        <field name="Sunken" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StatusBarPanelStyle" namespace="System.Windows.Forms">
+        <field name="Text" />
+        <field name="OwnerDraw" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StructFormat" namespace="System.Windows.Forms">
+        <field name="Ansi" />
+        <field name="Unicode" />
+        <field name="Auto" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TabAlignment" namespace="System.Windows.Forms">
+        <field name="Top" />
+        <field name="Bottom" />
+        <field name="Left" />
+        <field name="Right" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TabAppearance" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="Buttons" />
+        <field name="FlatButtons" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TabDrawMode" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="OwnerDrawFixed" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TabSizeMode" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="FillToRight" />
+        <field name="Fixed" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TickStyle" namespace="System.Windows.Forms">
+        <field name="None" />
+        <field name="TopLeft" />
+        <field name="BottomRight" />
+        <field name="Both" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ToolBarAppearance" namespace="System.Windows.Forms">
+        <field name="Normal" />
+        <field name="Flat" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ToolBarButtonStyle" namespace="System.Windows.Forms">
+        <field name="PushButton" />
+        <field name="ToggleButton" />
+        <field name="Separator" />
+        <field name="DropDownButton" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ToolBarTextAlign" namespace="System.Windows.Forms">
+        <field name="Underneath" />
+        <field name="Right" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TreeViewAction" namespace="System.Windows.Forms">
+        <field name="Unknown" />
+        <field name="ByKeyboard" />
+        <field name="ByMouse" />
+        <field name="Collapse" />
+        <field name="Expand" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="UICues" namespace="System.Windows.Forms">
+        <field name="ShowFocus" />
+        <field name="ShowKeyboard" />
+        <field name="Shown" />
+        <field name="ChangeFocus" />
+        <field name="ChangeKeyboard" />
+        <field name="Changed" />
+        <field name="None" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="View" namespace="System.Windows.Forms">
+        <field name="LargeIcon" />
+        <field name="Details" />
+        <field name="SmallIcon" />
+        <field name="List" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="HitArea" namespace="System.Windows.Forms">
+        <field name="Nowhere" />
+        <field name="TitleBackground" />
+        <field name="TitleMonth" />
+        <field name="TitleYear" />
+        <field name="NextMonthButton" />
+        <field name="PrevMonthButton" />
+        <field name="CalendarBackground" />
+        <field name="Date" />
+        <field name="NextMonthDate" />
+        <field name="PrevMonthDate" />
+        <field name="DayOfWeek" />
+        <field name="WeekNumbers" />
+        <field name="TodayLink" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ActiveXInvokeKind" namespace="System.Windows.Forms">
+        <field name="MethodInvoke" />
+        <field name="PropertyGet" />
+        <field name="PropertySet" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="AboutBoxUITypeEditor" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
+        <constructor name="AboutBoxUITypeEditor" argnames="" />
+        <method name="PaintValue(System.Drawing.Design.PaintValueEventArgs)" argnames="e" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetEditStyle(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="EditValue(System.ComponentModel.ITypeDescriptorContext, System.IServiceProvider, System.Object)" argnames="context, provider, value" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditValue(System.IServiceProvider, System.Object)" argnames="provider, value" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Object" />
+        <method name="GetEditStyle" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Drawing.Design.UITypeEditorEditStyle" />
+        <method name="GetPaintValueSupported" argnames="" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Boolean" />
+        <method name="PaintValue(System.Object, System.Drawing.Graphics, System.Drawing.Rectangle)" argnames="value, canvas, rectangle" inherited="System.Drawing.Design.UITypeEditor" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StructCache" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
+        <constructor name="StructCache" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetStruct(System.Type)" argnames="t" returntype="System.Object" />
+        <method name="ReleaseStruct(System.Object)" argnames="str" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Com2Variant" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
+        <constructor name="Com2Variant" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IComPropertyBrowser" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
+        <property name="InPropertySet" propertytype="System.Boolean" />
+        <method name="SaveState(Microsoft.Win32.RegistryKey)" argnames="key" returntype="System.Void" />
+        <method name="LoadState(Microsoft.Win32.RegistryKey)" argnames="key" returntype="System.Void" />
+        <method name="HandleF4" argnames="" returntype="System.Void" />
+        <method name="EnsurePendingChangesCommitted" argnames="" returntype="System.Boolean" />
+        <method name="DropDownDone" argnames="" returntype="System.Void" />
+        <event name="ComComponentNameChanged" />
+    </interface>
+    <interface name="ICom2PropertyPageDisplayService" namespace="System.Windows.Forms.ComponentModel.Com2Interop">
+        <method name="ShowPropertyPage(System.String, System.Object, System.Int32, System.Guid, System.IntPtr)" argnames="title, component, dispid, pageGuid, parentHandle" returntype="System.Void" />
+    </interface>
+    <class name="WindowsFormsComponentEditor" namespace="System.Windows.Forms.Design">
+        <constructor name="WindowsFormsComponentEditor" argnames="" />
+        <method name="GetInitialComponentEditorPageIndex" argnames="" returntype="System.Int32" />
+        <method name="GetComponentEditorPages" argnames="" returntype="System.Type[]" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Windows.Forms.IWin32Window)" argnames="context, component, owner" returntype="System.Boolean" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditComponent(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, owner" returntype="System.Boolean" />
+        <method name="EditComponent(System.Object)" argnames="component" inherited="System.ComponentModel.ComponentEditor" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentEditorForm" namespace="System.Windows.Forms.Design">
+        <constructor name="ComponentEditorForm(System.Object, System.Type[])" argnames="component, pageTypes" />
+        <property name="AcceptButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ActiveMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="AllowTransparency" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScale" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="AutoScaleBaseSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="BackColor" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="FormBorderStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormBorderStyle" />
+        <property name="CancelButton" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.IButtonControl" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="ControlBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="CreateParams" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="DesktopBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="DesktopLocation" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Point" />
+        <property name="DialogResult" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.DialogResult" />
+        <property name="HelpButton" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Icon" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Icon" />
+        <property name="IsMdiChild" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="IsMdiContainer" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="KeyPreview" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MaximizedBounds" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Rectangle" />
+        <property name="MaximumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="Menu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimumSize" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="MaximizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="MdiChildren" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="MdiParent" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="MergedMenu" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.MainMenu" />
+        <property name="MinimizeBox" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Modal" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Opacity" inherited="System.Windows.Forms.Form" propertytype="System.Double" />
+        <property name="OwnedForms" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form[]" />
+        <property name="Owner" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.Form" />
+        <property name="ShowInTaskbar" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="Size" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Size" />
+        <property name="SizeGripStyle" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.SizeGripStyle" />
+        <property name="StartPosition" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormStartPosition" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Form" propertytype="System.Int32" />
+        <property name="TopLevel" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TopMost" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="TransparencyKey" inherited="System.Windows.Forms.Form" propertytype="System.Drawing.Color" />
+        <property name="IsRestrictedWindow" inherited="System.Windows.Forms.Form" propertytype="System.Boolean" />
+        <property name="WindowState" inherited="System.Windows.Forms.Form" propertytype="System.Windows.Forms.FormWindowState" />
+        <property name="BindingContext" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="ActiveControl" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Control" />
+        <property name="ParentForm" inherited="System.Windows.Forms.ContainerControl" propertytype="System.Windows.Forms.Form" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="TabStop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Text" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="ShowForm(System.Windows.Forms.IWin32Window, System.Int32)" argnames="owner, page" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowForm(System.Windows.Forms.IWin32Window)" argnames="owner" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowForm(System.Int32)" argnames="page" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowForm" argnames="" returntype="System.Windows.Forms.DialogResult" />
+        <method name="OnSelChangeSelector(System.Object, System.Windows.Forms.TreeViewEventArgs)" argnames="source, e" returntype="System.Void" />
+        <method name="OnMenuComplete(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMenuStart(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMdiChildActivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanging(System.Windows.Forms.InputLanguageChangingEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnInputLanguageChanged(System.Windows.Forms.InputLanguageChangedEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMinimumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximumSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMaximizedBoundsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLoad(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnDeactivate(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnClosing(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnActivated(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="UpdateDefaultButton" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ProcessTabKey(System.Boolean)" argnames="forward" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Form" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.ContainerControl" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Form" returntype="System.String" />
+        <method name="Activate" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="AddOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ApplyAutoScaling" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="Close" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToParent" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="CenterToScreen" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="LayoutMdi(System.Windows.Forms.MdiLayout)" argnames="value" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ActivateMdiChild(System.Windows.Forms.Form)" argnames="form" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="RemoveOwnedForm(System.Windows.Forms.Form)" argnames="ownedForm" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="SetDesktopLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Form" returntype="System.Void" />
+        <method name="ShowDialog" argnames="" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowDialog(System.Windows.Forms.IWin32Window)" argnames="owner" inherited="System.Windows.Forms.Form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="Validate" argnames="" inherited="System.Windows.Forms.ContainerControl" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="MaximizedBoundsChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MaximumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="MinimumSizeChanged" inherited="System.Windows.Forms.Form" />
+        <event name="Activated" inherited="System.Windows.Forms.Form" />
+        <event name="Closing" inherited="System.Windows.Forms.Form" />
+        <event name="Closed" inherited="System.Windows.Forms.Form" />
+        <event name="Deactivate" inherited="System.Windows.Forms.Form" />
+        <event name="Load" inherited="System.Windows.Forms.Form" />
+        <event name="MdiChildActivate" inherited="System.Windows.Forms.Form" />
+        <event name="MenuComplete" inherited="System.Windows.Forms.Form" />
+        <event name="MenuStart" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanged" inherited="System.Windows.Forms.Form" />
+        <event name="InputLanguageChanging" inherited="System.Windows.Forms.Form" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Control" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Control" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ComponentEditorPage" namespace="System.Windows.Forms.Design">
+        <constructor name="ComponentEditorPage" argnames="" />
+        <property name="PageSite" propertytype="System.Windows.Forms.IComponentEditorPageSite" />
+        <property name="Component" propertytype="System.ComponentModel.IComponent" />
+        <property name="FirstActivate" propertytype="System.Boolean" />
+        <property name="LoadRequired" propertytype="System.Boolean" />
+        <property name="Loading" propertytype="System.Int32" />
+        <property name="CommitOnDeactivate" propertytype="System.Boolean" />
+        <property name="CreateParams" propertytype="System.Windows.Forms.CreateParams" />
+        <property name="Icon" propertytype="System.Drawing.Icon" />
+        <property name="Title" propertytype="System.String" />
+        <property name="BorderStyle" inherited="System.Windows.Forms.Panel" propertytype="System.Windows.Forms.BorderStyle" />
+        <property name="DefaultSize" inherited="System.Windows.Forms.Panel" propertytype="System.Drawing.Size" />
+        <property name="TabStop" inherited="System.Windows.Forms.Panel" propertytype="System.Boolean" />
+        <property name="Text" inherited="System.Windows.Forms.Panel" propertytype="System.String" />
+        <property name="AutoScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="AutoScrollMargin" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="AutoScrollPosition" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Point" />
+        <property name="AutoScrollMinSize" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Size" />
+        <property name="DisplayRectangle" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Drawing.Rectangle" />
+        <property name="HScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="VScroll" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Boolean" />
+        <property name="DockPadding" inherited="System.Windows.Forms.ScrollableControl" propertytype="System.Windows.Forms.ScrollableControl+DockPaddingEdges" />
+        <property name="AccessibilityObject" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="AccessibleDefaultActionDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleDescription" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="AccessibleRole" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="AllowDrop" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Anchor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.AnchorStyles" />
+        <property name="BackColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="BackgroundImage" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Image" />
+        <property name="DataBindings" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ControlBindingsCollection" />
+        <property name="BindingContext" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.BindingContext" />
+        <property name="Bottom" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Bounds" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="CanFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CanSelect" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Capture" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="CausesValidation" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ClientRectangle" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Rectangle" />
+        <property name="ClientSize" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="CompanyName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ContainsFocus" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ContextMenu" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ContextMenu" />
+        <property name="Controls" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control+ControlCollection" />
+        <property name="Created" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Cursor" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Cursor" />
+        <property name="DefaultImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="IsDisposed" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Disposing" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Dock" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.DockStyle" />
+        <property name="Enabled" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Focused" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Font" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Font" />
+        <property name="FontHeight" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="ForeColor" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Color" />
+        <property name="Handle" inherited="System.Windows.Forms.Control" propertytype="System.IntPtr" />
+        <property name="HasChildren" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Height" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="IsHandleCreated" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ImeMode" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.ImeMode" />
+        <property name="InvokeRequired" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="IsAccessible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Left" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Location" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Point" />
+        <property name="Name" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="Parent" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ProductName" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="ProductVersion" inherited="System.Windows.Forms.Control" propertytype="System.String" />
+        <property name="RecreatingHandle" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Region" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Region" />
+        <property name="RenderRightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ResizeRedraw" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Right" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="RightToLeft" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.RightToLeft" />
+        <property name="Site" inherited="System.Windows.Forms.Control" propertytype="System.ComponentModel.ISite" />
+        <property name="Size" inherited="System.Windows.Forms.Control" propertytype="System.Drawing.Size" />
+        <property name="TabIndex" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="Tag" inherited="System.Windows.Forms.Control" propertytype="System.Object" />
+        <property name="Top" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="TopLevelControl" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.Control" />
+        <property name="ShowKeyboardCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="ShowFocusCues" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.Windows.Forms.Control" propertytype="System.Boolean" />
+        <property name="Width" inherited="System.Windows.Forms.Control" propertytype="System.Int32" />
+        <property name="WindowTarget" inherited="System.Windows.Forms.Control" propertytype="System.Windows.Forms.IWindowTarget" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="SupportsHelp" argnames="" returntype="System.Boolean" />
+        <method name="ShowHelp" argnames="" returntype="System.Void" />
+        <method name="SetSite(System.Windows.Forms.IComponentEditorPageSite)" argnames="site" returntype="System.Void" />
+        <method name="SetComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="SetDirty" argnames="" returntype="System.Void" />
+        <method name="SaveComponent" argnames="" returntype="System.Void" />
+        <method name="ReloadComponent" argnames="" returntype="System.Void" />
+        <method name="OnApplyComplete" argnames="" returntype="System.Void" />
+        <method name="LoadComponent" argnames="" returntype="System.Void" />
+        <method name="IsPageMessage(System.Windows.Forms.Message&amp;)" argnames="msg" returntype="System.Boolean" />
+        <method name="GetControl" argnames="" returntype="System.Windows.Forms.Control" />
+        <method name="Deactivate" argnames="" returntype="System.Void" />
+        <method name="ApplyChanges" argnames="" returntype="System.Void" />
+        <method name="Activate" argnames="" returntype="System.Void" />
+        <method name="AdjustFormScrollbars(System.Boolean)" argnames="displayScrollbars" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="asyncResult" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="WndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetVisibleCore(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetClientSizeCore(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBoundsCore(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select(System.Boolean, System.Boolean)" argnames="directed, forward" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ScaleCore(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetText" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Refresh" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetRightToLeft" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetForeColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetFont" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetCursor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetBackColor" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ProcessMnemonic(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyPreview(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessKeyEventArgs(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessDialogChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="ProcessCmdKey(System.Windows.Forms.Message&amp;, System.Windows.Forms.Keys)" argnames="msg, keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="PreProcessMessage(System.Windows.Forms.Message&amp;)" argnames="msg" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="OnValidated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnValidating(System.ComponentModel.CancelEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSystemColorsChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnStyleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnChangeUICues(System.Windows.Forms.UICuesEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnSizeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnResize(System.EventArgs)" argnames="eventargs" inherited="System.Windows.Forms.Panel" returntype="System.Void" />
+        <method name="OnQueryContinueDrag(System.Windows.Forms.QueryContinueDragEventArgs)" argnames="qcdevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaintBackground(System.Windows.Forms.PaintEventArgs)" argnames="pevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnPaint(System.Windows.Forms.PaintEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMove(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseWheel(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnMouseUp(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseMove(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseHover(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnMouseDown(System.Windows.Forms.MouseEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLostFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLayout(System.Windows.Forms.LayoutEventArgs)" argnames="levent" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnKeyUp(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyPress(System.Windows.Forms.KeyPressEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnKeyDown(System.Windows.Forms.KeyEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnInvalidated(System.Windows.Forms.InvalidateEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnImeModeChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHelpRequested(System.Windows.Forms.HelpEventArgs)" argnames="hevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGotFocus(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnter(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnGiveFeedback(System.Windows.Forms.GiveFeedbackEventArgs)" argnames="gfbevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragDrop(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragLeave(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragOver(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDragEnter(System.Windows.Forms.DragEventArgs)" argnames="drgevent" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDoubleClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleDestroyed(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnLocationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnHandleCreated(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlRemoved(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnControlAdded(System.Windows.Forms.ControlEventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnClick(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="OnTextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabStopChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnTabIndexChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentVisibleChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnParentBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnNotifyMessage(System.Windows.Forms.Message)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnRightToLeftChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnForeColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnFontChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnEnabledChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnDockChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCursorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnContextMenuChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnCausesValidationChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBindingContextChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackgroundImageChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="OnBackColorChanged(System.EventArgs)" argnames="e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="NotifyInvalidate(System.Drawing.Rectangle)" argnames="invalidatedArea" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="IsInputKey(System.Windows.Forms.Keys)" argnames="keyData" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="IsInputChar(System.Char)" argnames="charCode" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="InitLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DestroyHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DefWndProc(System.Windows.Forms.Message&amp;)" argnames="m" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateControlsInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control+ControlCollection" />
+        <method name="CreateAccessibilityInstance" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Windows.Forms.Panel" returntype="System.String" />
+        <method name="EnterLoadingMode" argnames="" returntype="System.Void" />
+        <method name="ExitLoadingMode" argnames="" returntype="System.Void" />
+        <method name="GetSelectedComponent" argnames="" returntype="System.ComponentModel.IComponent" />
+        <method name="IsFirstActivate" argnames="" returntype="System.Boolean" />
+        <method name="IsLoading" argnames="" returntype="System.Boolean" />
+        <method name="GetScrollState(System.Int32)" argnames="bit" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Boolean" />
+        <method name="SetDisplayRectLocation(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ScrollControlIntoView(System.Windows.Forms.Control)" argnames="activeControl" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetAutoScrollMargin(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="SetScrollState(System.Int32, System.Boolean)" argnames="bit, value" inherited="System.Windows.Forms.ScrollableControl" returntype="System.Void" />
+        <method name="ResetBindings" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="AccessibilityNotifyClients(System.Windows.Forms.AccessibleEvents, System.Int32)" argnames="accEvent, childID" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="BeginInvoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.IAsyncResult" />
+        <method name="BringToFront" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Contains(System.Windows.Forms.Control)" argnames="ctl" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="CreateGraphics" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Graphics" />
+        <method name="CreateControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="DoDragDrop(System.Object, System.Windows.Forms.DragDropEffects)" argnames="data, allowedEffects" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.DragDropEffects" />
+        <method name="FindForm" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Form" />
+        <method name="GetTopLevel" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="RaiseKeyEvent(System.Object, System.Windows.Forms.KeyEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaiseMouseEvent(System.Object, System.Windows.Forms.MouseEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Focus" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="GetChildAtPoint(System.Drawing.Point)" argnames="pt" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetContainerControl" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.IContainerControl" />
+        <method name="GetNextControl(System.Windows.Forms.Control, System.Boolean)" argnames="ctl, forward" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.Control" />
+        <method name="GetStyle(System.Windows.Forms.ControlStyles)" argnames="flag" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="Hide" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region)" argnames="region" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Region, System.Boolean)" argnames="region, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Boolean)" argnames="invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle)" argnames="rc" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invalidate(System.Drawing.Rectangle, System.Boolean)" argnames="rc, invalidateChildren" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Invoke(System.Delegate)" argnames="method" inherited="System.Windows.Forms.Control" returntype="System.Object" />
+        <method name="InvokePaint(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokePaintBackground(System.Windows.Forms.Control, System.Windows.Forms.PaintEventArgs)" argnames="c, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeOnClick(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeGotFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="InvokeLostFocus(System.Windows.Forms.Control, System.EventArgs)" argnames="toInvoke, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PerformLayout(System.Windows.Forms.Control, System.String)" argnames="affectedControl, affectedProperty" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="PointToClient(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="PointToScreen(System.Drawing.Point)" argnames="p" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Point" />
+        <method name="RaiseDragEvent(System.Object, System.Windows.Forms.DragEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RaisePaintEvent(System.Object, System.Windows.Forms.PaintEventArgs)" argnames="key, e" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResetImeMode" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RecreateHandle" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RectangleToClient(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="RectangleToScreen(System.Drawing.Rectangle)" argnames="r" inherited="System.Windows.Forms.Control" returntype="System.Drawing.Rectangle" />
+        <method name="ResetMouseEventArgs" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="ResumeLayout(System.Boolean)" argnames="performLayout" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single)" argnames="ratio" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Scale(System.Single, System.Single)" argnames="dx, dy" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Select" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SelectNextControl(System.Windows.Forms.Control, System.Boolean, System.Boolean, System.Boolean, System.Boolean)" argnames="ctl, forward, tabStopOnly, nested, wrap" inherited="System.Windows.Forms.Control" returntype="System.Boolean" />
+        <method name="SendToBack" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Windows.Forms.BoundsSpecified)" argnames="x, y, width, height, specified" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetStyle(System.Windows.Forms.ControlStyles, System.Boolean)" argnames="flag, value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SetTopLevel(System.Boolean)" argnames="value" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateAlignment(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateAlignment(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="RtlTranslateHorizontal(System.Windows.Forms.HorizontalAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.HorizontalAlignment" />
+        <method name="RtlTranslateLeftRight(System.Windows.Forms.LeftRightAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Windows.Forms.LeftRightAlignment" />
+        <method name="RtlTranslateContent(System.Drawing.ContentAlignment)" argnames="align" inherited="System.Windows.Forms.Control" returntype="System.Drawing.ContentAlignment" />
+        <method name="Show" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="SuspendLayout" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="Update" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateBounds(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="x, y, width, height, clientWidth, clientHeight" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateZOrder" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="UpdateStyles" argnames="" inherited="System.Windows.Forms.Control" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="KeyUp" inherited="System.Windows.Forms.Panel" />
+        <event name="KeyDown" inherited="System.Windows.Forms.Panel" />
+        <event name="KeyPress" inherited="System.Windows.Forms.Panel" />
+        <event name="BackColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BackgroundImageChanged" inherited="System.Windows.Forms.Control" />
+        <event name="BindingContextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CausesValidationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ContextMenuChanged" inherited="System.Windows.Forms.Control" />
+        <event name="CursorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="DockChanged" inherited="System.Windows.Forms.Control" />
+        <event name="EnabledChanged" inherited="System.Windows.Forms.Control" />
+        <event name="FontChanged" inherited="System.Windows.Forms.Control" />
+        <event name="ForeColorChanged" inherited="System.Windows.Forms.Control" />
+        <event name="LocationChanged" inherited="System.Windows.Forms.Control" />
+        <event name="RightToLeftChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SizeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabIndexChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TabStopChanged" inherited="System.Windows.Forms.Control" />
+        <event name="TextChanged" inherited="System.Windows.Forms.Control" />
+        <event name="VisibleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Click" inherited="System.Windows.Forms.Control" />
+        <event name="ControlAdded" inherited="System.Windows.Forms.Control" />
+        <event name="ControlRemoved" inherited="System.Windows.Forms.Control" />
+        <event name="DragDrop" inherited="System.Windows.Forms.Control" />
+        <event name="DragEnter" inherited="System.Windows.Forms.Control" />
+        <event name="DragOver" inherited="System.Windows.Forms.Control" />
+        <event name="DragLeave" inherited="System.Windows.Forms.Control" />
+        <event name="GiveFeedback" inherited="System.Windows.Forms.Control" />
+        <event name="HandleCreated" inherited="System.Windows.Forms.Control" />
+        <event name="HandleDestroyed" inherited="System.Windows.Forms.Control" />
+        <event name="HelpRequested" inherited="System.Windows.Forms.Control" />
+        <event name="Invalidated" inherited="System.Windows.Forms.Control" />
+        <event name="Paint" inherited="System.Windows.Forms.Control" />
+        <event name="QueryContinueDrag" inherited="System.Windows.Forms.Control" />
+        <event name="QueryAccessibilityHelp" inherited="System.Windows.Forms.Control" />
+        <event name="DoubleClick" inherited="System.Windows.Forms.Control" />
+        <event name="Enter" inherited="System.Windows.Forms.Control" />
+        <event name="GotFocus" inherited="System.Windows.Forms.Control" />
+        <event name="ImeModeChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Layout" inherited="System.Windows.Forms.Control" />
+        <event name="Leave" inherited="System.Windows.Forms.Control" />
+        <event name="LostFocus" inherited="System.Windows.Forms.Control" />
+        <event name="MouseDown" inherited="System.Windows.Forms.Control" />
+        <event name="MouseEnter" inherited="System.Windows.Forms.Control" />
+        <event name="MouseLeave" inherited="System.Windows.Forms.Control" />
+        <event name="MouseHover" inherited="System.Windows.Forms.Control" />
+        <event name="MouseMove" inherited="System.Windows.Forms.Control" />
+        <event name="MouseUp" inherited="System.Windows.Forms.Control" />
+        <event name="MouseWheel" inherited="System.Windows.Forms.Control" />
+        <event name="Move" inherited="System.Windows.Forms.Control" />
+        <event name="Resize" inherited="System.Windows.Forms.Control" />
+        <event name="ChangeUICues" inherited="System.Windows.Forms.Control" />
+        <event name="StyleChanged" inherited="System.Windows.Forms.Control" />
+        <event name="SystemColorsChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Validating" inherited="System.Windows.Forms.Control" />
+        <event name="Validated" inherited="System.Windows.Forms.Control" />
+        <event name="ParentChanged" inherited="System.Windows.Forms.Control" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PropertyTab" namespace="System.Windows.Forms.Design">
+        <constructor name="PropertyTab" argnames="" />
+        <property name="Bitmap" propertytype="System.Drawing.Bitmap" />
+        <property name="Components" propertytype="System.Object[]" />
+        <property name="TabName" propertytype="System.String" />
+        <property name="HelpKeyword" propertytype="System.String" />
+        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetDefaultProperty(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventsTab" namespace="System.Windows.Forms.Design">
+        <constructor name="EventsTab(System.IServiceProvider)" argnames="sp" />
+        <property name="TabName" propertytype="System.String" />
+        <property name="HelpKeyword" propertytype="System.String" />
+        <property name="Bitmap" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Drawing.Bitmap" />
+        <property name="Components" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Object[]" />
+        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetDefaultProperty(System.Object)" argnames="obj" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IUIService" namespace="System.Windows.Forms.Design">
+        <property name="Styles" propertytype="System.Collections.IDictionary" />
+        <method name="ShowToolWindow(System.Guid)" argnames="toolWindow" returntype="System.Boolean" />
+        <method name="ShowMessage(System.String, System.String, System.Windows.Forms.MessageBoxButtons)" argnames="message, caption, buttons" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowMessage(System.String, System.String)" argnames="message, caption" returntype="System.Void" />
+        <method name="ShowMessage(System.String)" argnames="message" returntype="System.Void" />
+        <method name="ShowError(System.Exception, System.String)" argnames="ex, message" returntype="System.Void" />
+        <method name="ShowError(System.Exception)" argnames="ex" returntype="System.Void" />
+        <method name="ShowError(System.String)" argnames="message" returntype="System.Void" />
+        <method name="ShowDialog(System.Windows.Forms.Form)" argnames="form" returntype="System.Windows.Forms.DialogResult" />
+        <method name="ShowComponentEditor(System.Object, System.Windows.Forms.IWin32Window)" argnames="component, parent" returntype="System.Boolean" />
+        <method name="SetUIDirty" argnames="" returntype="System.Void" />
+        <method name="GetDialogOwnerWindow" argnames="" returntype="System.Windows.Forms.IWin32Window" />
+        <method name="CanShowComponentEditor(System.Object)" argnames="component" returntype="System.Boolean" />
+    </interface>
+    <interface name="IWindowsFormsEditorService" namespace="System.Windows.Forms.Design">
+        <method name="ShowDialog(System.Windows.Forms.Form)" argnames="dialog" returntype="System.Windows.Forms.DialogResult" />
+        <method name="DropDownControl(System.Windows.Forms.Control)" argnames="control" returntype="System.Void" />
+        <method name="CloseDropDown" argnames="" returntype="System.Void" />
+    </interface>
+    <class name="GridEntryAccessibleObject" namespace="System.Windows.Forms.PropertyGridInternal">
+        <constructor name="GridEntryAccessibleObject(System.Windows.Forms.PropertyGridInternal.GridEntry)" argnames="owner" />
+        <property name="Bounds" propertytype="System.Drawing.Rectangle" />
+        <property name="Description" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Windows.Forms.AccessibleObject" />
+        <property name="PropertyGridView" propertytype="System.Windows.Forms.PropertyGridInternal.PropertyGridView" />
+        <property name="Role" propertytype="System.Windows.Forms.AccessibleRole" />
+        <property name="State" propertytype="System.Windows.Forms.AccessibleStates" />
+        <property name="MarshalingControl" propertytype="System.Windows.Forms.Control" />
+        <property name="Value" propertytype="System.String" />
+        <property name="DefaultAction" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="Help" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <property name="KeyboardShortcut" inherited="System.Windows.Forms.AccessibleObject" propertytype="System.String" />
+        <method name="Select(System.Windows.Forms.AccessibleSelection)" argnames="flags" returntype="System.Void" />
+        <method name="Navigate(System.Windows.Forms.AccessibleNavigation)" argnames="navdir" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="DoDefaultAction" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="HitTest(System.Int32, System.Int32)" argnames="x, y" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetSelected" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetHelpTopic(System.String&amp;)" argnames="fileName" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetFocused" argnames="" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="GetChildCount" argnames="" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Int32" />
+        <method name="GetChild(System.Int32)" argnames="index" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Windows.Forms.AccessibleObject" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="UseStdAccessibleObjects(System.IntPtr)" argnames="handle" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="UseStdAccessibleObjects(System.IntPtr, System.Int32)" argnames="handle, objid" inherited="System.Windows.Forms.AccessibleObject" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DisplayNameSortComparer" namespace="System.Windows.Forms.PropertyGridInternal">
+        <constructor name="DisplayNameSortComparer" argnames="" />
+        <method name="Compare(System.Object, System.Object)" argnames="left, right" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertiesTab" namespace="System.Windows.Forms.PropertyGridInternal">
+        <constructor name="PropertiesTab" argnames="" />
+        <property name="TabName" propertytype="System.String" />
+        <property name="HelpKeyword" propertytype="System.String" />
+        <property name="Bitmap" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Drawing.Bitmap" />
+        <property name="Components" inherited="System.Windows.Forms.Design.PropertyTab" propertytype="System.Object[]" />
+        <method name="CanExtend(System.Object)" argnames="extendee" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object)" argnames="component" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetDefaultProperty(System.Object)" argnames="obj" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Windows.Forms.Design.PropertyTab" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyGridCommands" namespace="System.Windows.Forms.PropertyGridInternal">
+        <constructor name="PropertyGridCommands" argnames="" />
+        <field name="wfcMenuGroup" />
+        <field name="wfcMenuCommand" />
+        <field name="Reset" />
+        <field name="Description" />
+        <field name="Hide" />
+        <field name="Commands" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IRootGridEntry" namespace="System.Windows.Forms.PropertyGridInternal">
+        <property name="BrowsableAttributes" propertytype="System.ComponentModel.AttributeCollection" />
+        <method name="ShowCategories(System.Boolean)" argnames="showCategories" returntype="System.Void" />
+        <method name="ResetBrowsableAttributes" argnames="" returntype="System.Void" />
+    </interface>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Design/ToolStripItemDesignerAvailability.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Design/ToolStripItemDesignerAvailability.cs
@@ -1,43 +1,43 @@
-//
-// ToolStripItemDesignerAvailability.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System;
-
-namespace System.Windows.Forms.Design
-{
-	[Flags]
-	public enum ToolStripItemDesignerAvailability
-	{
-		None = 0,
-		ToolStrip = 1,
-		MenuStrip = 2,
-		ContextMenuStrip = 4,
-		StatusStrip = 8,
-		All = 15
-	}
-}
+//
+// ToolStripItemDesignerAvailability.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System;
+
+namespace System.Windows.Forms.Design
+{
+	[Flags]
+	public enum ToolStripItemDesignerAvailability
+	{
+		None = 0,
+		ToolStrip = 1,
+		MenuStrip = 2,
+		ContextMenuStrip = 4,
+		StatusStrip = 8,
+		All = 15
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Design/ToolStripItemDesignerAvailabilityAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Design/ToolStripItemDesignerAvailabilityAttribute.cs
@@ -1,81 +1,81 @@
-//
-// ToolStripItemDesignerAvailabilityAttribute.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace System.Windows.Forms.Design
-{
-	[AttributeUsage (AttributeTargets.Class)]
-	public sealed class ToolStripItemDesignerAvailabilityAttribute : Attribute
-	{
-		private ToolStripItemDesignerAvailability visibility;
-		public static readonly ToolStripItemDesignerAvailabilityAttribute Default = new ToolStripItemDesignerAvailabilityAttribute ();
-
-		#region Public Constructors
-		public ToolStripItemDesignerAvailabilityAttribute ()
-			: base ()
-		{
-			this.visibility = ToolStripItemDesignerAvailability.None;
-		}
-
-		public ToolStripItemDesignerAvailabilityAttribute (ToolStripItemDesignerAvailability visibility)
-			: base ()
-		{
-			this.visibility = visibility;
-		}
-		#endregion
-
-		#region Public Properties
-		public ToolStripItemDesignerAvailability ItemAdditionVisibility {
-			get { return this.visibility; }
-		}
-		#endregion
-
-		#region Public Methods
-		public override bool Equals (object obj)
-		{
-			if (!(obj is ToolStripItemDesignerAvailabilityAttribute))
-				return false;
-
-			return this.ItemAdditionVisibility == (obj as ToolStripItemDesignerAvailabilityAttribute).ItemAdditionVisibility;
-		}
-
-		public override int GetHashCode ()
-		{
-			return (int)this.visibility;
-		}
-
-		public override bool IsDefaultAttribute ()
-		{
-			return this.visibility == ToolStripItemDesignerAvailability.None;
-		}
-		#endregion
-	}
-}
+//
+// ToolStripItemDesignerAvailabilityAttribute.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Windows.Forms.Design
+{
+	[AttributeUsage (AttributeTargets.Class)]
+	public sealed class ToolStripItemDesignerAvailabilityAttribute : Attribute
+	{
+		private ToolStripItemDesignerAvailability visibility;
+		public static readonly ToolStripItemDesignerAvailabilityAttribute Default = new ToolStripItemDesignerAvailabilityAttribute ();
+
+		#region Public Constructors
+		public ToolStripItemDesignerAvailabilityAttribute ()
+			: base ()
+		{
+			this.visibility = ToolStripItemDesignerAvailability.None;
+		}
+
+		public ToolStripItemDesignerAvailabilityAttribute (ToolStripItemDesignerAvailability visibility)
+			: base ()
+		{
+			this.visibility = visibility;
+		}
+		#endregion
+
+		#region Public Properties
+		public ToolStripItemDesignerAvailability ItemAdditionVisibility {
+			get { return this.visibility; }
+		}
+		#endregion
+
+		#region Public Methods
+		public override bool Equals (object obj)
+		{
+			if (!(obj is ToolStripItemDesignerAvailabilityAttribute))
+				return false;
+
+			return this.ItemAdditionVisibility == (obj as ToolStripItemDesignerAvailabilityAttribute).ItemAdditionVisibility;
+		}
+
+		public override int GetHashCode ()
+		{
+			return (int)this.visibility;
+		}
+
+		public override bool IsDefaultAttribute ()
+		{
+			return this.visibility == ToolStripItemDesignerAvailability.None;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Layout/TableLayoutSettingsTypeConverter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Layout/TableLayoutSettingsTypeConverter.cs
@@ -1,233 +1,233 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Novell, Inc.
-//
-
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Globalization;
-using System.Xml;
-using System.IO;
-using System.Collections.Generic;
-
-namespace System.Windows.Forms.Layout
-{
-	public class TableLayoutSettingsTypeConverter : TypeConverter
-	{
-		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-		{
-			if (destinationType == typeof (string))
-				return true;
-
-			return base.CanConvertTo (context, destinationType);
-		}
-
-		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
-		{
-			if (sourceType == typeof(string))
-				return true;
-
-			return base.CanConvertFrom (context, sourceType);
-		}
-
-		
-
-		public override object ConvertTo (ITypeDescriptorContext context,
-						  CultureInfo culture,
-						  object value,
-						  Type destinationType)
-		{
-			if (!(value is TableLayoutSettings) || destinationType != typeof (string))
-				return base.ConvertTo (context, culture, value, destinationType);
-
-			TableLayoutSettings settings = value as TableLayoutSettings;
-			StringWriter sw = new StringWriter ();
-			XmlTextWriter xw = new XmlTextWriter (sw);
-			xw.WriteStartDocument ();
-			List<ControlInfo> list = settings.GetControls ();
-			xw.WriteStartElement ("TableLayoutSettings");
-			xw.WriteStartElement ("Controls");
-			
-			foreach (ControlInfo info in list) {
-				xw.WriteStartElement ("Control");
-				xw.WriteAttributeString ("Name", info.Control.ToString ());
-				xw.WriteAttributeString ("Row", info.Row.ToString ());
-				xw.WriteAttributeString ("RowSpan", info.RowSpan.ToString ());
-				xw.WriteAttributeString ("Column", info.Col.ToString ());
-				xw.WriteAttributeString ("ColumnSpan", info.ColSpan.ToString ());
-				xw.WriteEndElement ();
-			}
-			xw.WriteEndElement ();
-
-
-			List<string> styles = new List<string> ();
-			
-			foreach (ColumnStyle style in settings.ColumnStyles) {
-				styles.Add (style.SizeType.ToString ());
-				styles.Add (style.Width.ToString (CultureInfo.InvariantCulture));
-			}
-
-			
-			xw.WriteStartElement ("Columns");
-			xw.WriteAttributeString ("Styles", String.Join (",", styles.ToArray ()));
-			xw.WriteEndElement ();
-			
-			styles.Clear();
-			foreach (RowStyle style in settings.RowStyles) {
-				styles.Add (style.SizeType.ToString ());
-				styles.Add (style.Height.ToString (CultureInfo.InvariantCulture));
-			}
-
-			xw.WriteStartElement ("Rows");
-			xw.WriteAttributeString ("Styles", String.Join (",", styles.ToArray ()));
-			xw.WriteEndElement ();
-
-			xw.WriteEndElement ();
-			xw.WriteEndDocument ();
-			xw.Close ();
-
-			return sw.ToString ();
-
-		}
-
-		public override object ConvertFrom (ITypeDescriptorContext context,
-						    CultureInfo culture,
-						    object value)
-		{
-			if (!(value is string))
-				return base.ConvertFrom(context, culture, value);
-
-			XmlDocument xmldoc = new XmlDocument();
-			xmldoc.LoadXml (value as string);
-			TableLayoutSettings settings = new TableLayoutSettings(new TableLayoutPanel());
-			int count = ParseControl (xmldoc, settings);
-			ParseColumnStyle (xmldoc, settings);
-			ParseRowStyle (xmldoc, settings);
-			settings.RowCount = count;
-			
-
-			return settings;
-		}
-
-
-		private int ParseControl (XmlDocument xmldoc, TableLayoutSettings settings)
-		{
-			int count = 0;
-			foreach (XmlNode node in xmldoc.GetElementsByTagName ("Control")) {
-				if (node.Attributes["Name"] == null || string.IsNullOrEmpty(node.Attributes["Name"].Value))
-					continue;
-				if (node.Attributes["Row"] != null) {
-					settings.SetRow (node.Attributes["Name"].Value, GetValue (node.Attributes["Row"].Value));
-					count++;
-				}
-				if (node.Attributes["RowSpan"] != null) {
-					settings.SetRowSpan (node.Attributes["Name"].Value, GetValue (node.Attributes["RowSpan"].Value));
-				}
-				if (node.Attributes["Column"] != null)
-					settings.SetColumn (node.Attributes["Name"].Value, GetValue (node.Attributes["Column"].Value));
-				if (node.Attributes["ColumnSpan"] != null)
-					settings.SetColumnSpan (node.Attributes["Name"].Value, GetValue (node.Attributes["ColumnSpan"].Value));
-			}
-			return count;
-		}
-
-		private void ParseColumnStyle (XmlDocument xmldoc, TableLayoutSettings settings)
-		{
-			foreach (XmlNode node in xmldoc.GetElementsByTagName ("Columns")) {
-				if (node.Attributes["Styles"] == null)
-					continue;
-				string styles = node.Attributes["Styles"].Value;
-				if (string.IsNullOrEmpty (styles))
-					continue;
-				string[] list = BuggySplit (styles);
-				for (int i = 0; i < list.Length; i+=2) {
-					float width = 0f;
-					SizeType type = (SizeType) Enum.Parse (typeof (SizeType), list[i]);
-					float.TryParse (list[i+1], NumberStyles.Float, CultureInfo.InvariantCulture, out width);
-					settings.ColumnStyles.Add (new ColumnStyle (type, width));
-				}				
-			}
-		}
-
-		private void ParseRowStyle (XmlDocument xmldoc, TableLayoutSettings settings)
-		{
-			foreach (XmlNode node in xmldoc.GetElementsByTagName ("Rows")) {
-				if (node.Attributes["Styles"] == null)
-					continue;
-				string styles = node.Attributes["Styles"].Value;
-				if (string.IsNullOrEmpty(styles))
-					continue;
-				string[] list = BuggySplit (styles);
-				for (int i = 0; i < list.Length; i += 2) {
-					float height = 0f;
-					SizeType type = (SizeType) Enum.Parse (typeof (SizeType), list[i]);
-					float.TryParse (list[i + 1], NumberStyles.Float, CultureInfo.InvariantCulture, out height);
-					settings.RowStyles.Add (new RowStyle (type, height));
-				}
-			}
-		}
-
-		private int GetValue (string attValue)
-		{
-			int val = -1;
-			if (!string.IsNullOrEmpty (attValue)) {
-				int.TryParse (attValue, out val);
-			}
-			return val;
-		}
-
-		// .Net accidently uses the local culture separator, so
-		// Percent,50.0,Percent,50.0	can be
-		// Percent,50,0,Percent,50,0
-		// Make sure we can handle this
-		private string[] BuggySplit (string s)
-		{
-			List<string> l = new List<string> ();
-			
-			string[] split = s.Split (',');
-			
-			for (int i = 0; i < split.Length; i++) {
-				switch (split[i].ToLowerInvariant ()) {
-					case "autosize":
-					case "absolute":
-					case "percent":
-						l.Add (split[i]);
-						break;
-					default:
-						if (i + 1 < split.Length) {
-							float test;
-							
-							if (float.TryParse (split[i + 1], out test)) {
-								l.Add (string.Format ("{0}.{1}", split[i], split[i + 1]));
-								i++;	
-							} else
-								l.Add (split[i]);
-						} else
-							l.Add (split[i]);
-						break;
-				}
-			}
-			
-			return l.ToArray ();
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Novell, Inc.
+//
+
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Globalization;
+using System.Xml;
+using System.IO;
+using System.Collections.Generic;
+
+namespace System.Windows.Forms.Layout
+{
+	public class TableLayoutSettingsTypeConverter : TypeConverter
+	{
+		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+		{
+			if (destinationType == typeof (string))
+				return true;
+
+			return base.CanConvertTo (context, destinationType);
+		}
+
+		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+		{
+			if (sourceType == typeof(string))
+				return true;
+
+			return base.CanConvertFrom (context, sourceType);
+		}
+
+		
+
+		public override object ConvertTo (ITypeDescriptorContext context,
+						  CultureInfo culture,
+						  object value,
+						  Type destinationType)
+		{
+			if (!(value is TableLayoutSettings) || destinationType != typeof (string))
+				return base.ConvertTo (context, culture, value, destinationType);
+
+			TableLayoutSettings settings = value as TableLayoutSettings;
+			StringWriter sw = new StringWriter ();
+			XmlTextWriter xw = new XmlTextWriter (sw);
+			xw.WriteStartDocument ();
+			List<ControlInfo> list = settings.GetControls ();
+			xw.WriteStartElement ("TableLayoutSettings");
+			xw.WriteStartElement ("Controls");
+			
+			foreach (ControlInfo info in list) {
+				xw.WriteStartElement ("Control");
+				xw.WriteAttributeString ("Name", info.Control.ToString ());
+				xw.WriteAttributeString ("Row", info.Row.ToString ());
+				xw.WriteAttributeString ("RowSpan", info.RowSpan.ToString ());
+				xw.WriteAttributeString ("Column", info.Col.ToString ());
+				xw.WriteAttributeString ("ColumnSpan", info.ColSpan.ToString ());
+				xw.WriteEndElement ();
+			}
+			xw.WriteEndElement ();
+
+
+			List<string> styles = new List<string> ();
+			
+			foreach (ColumnStyle style in settings.ColumnStyles) {
+				styles.Add (style.SizeType.ToString ());
+				styles.Add (style.Width.ToString (CultureInfo.InvariantCulture));
+			}
+
+			
+			xw.WriteStartElement ("Columns");
+			xw.WriteAttributeString ("Styles", String.Join (",", styles.ToArray ()));
+			xw.WriteEndElement ();
+			
+			styles.Clear();
+			foreach (RowStyle style in settings.RowStyles) {
+				styles.Add (style.SizeType.ToString ());
+				styles.Add (style.Height.ToString (CultureInfo.InvariantCulture));
+			}
+
+			xw.WriteStartElement ("Rows");
+			xw.WriteAttributeString ("Styles", String.Join (",", styles.ToArray ()));
+			xw.WriteEndElement ();
+
+			xw.WriteEndElement ();
+			xw.WriteEndDocument ();
+			xw.Close ();
+
+			return sw.ToString ();
+
+		}
+
+		public override object ConvertFrom (ITypeDescriptorContext context,
+						    CultureInfo culture,
+						    object value)
+		{
+			if (!(value is string))
+				return base.ConvertFrom(context, culture, value);
+
+			XmlDocument xmldoc = new XmlDocument();
+			xmldoc.LoadXml (value as string);
+			TableLayoutSettings settings = new TableLayoutSettings(new TableLayoutPanel());
+			int count = ParseControl (xmldoc, settings);
+			ParseColumnStyle (xmldoc, settings);
+			ParseRowStyle (xmldoc, settings);
+			settings.RowCount = count;
+			
+
+			return settings;
+		}
+
+
+		private int ParseControl (XmlDocument xmldoc, TableLayoutSettings settings)
+		{
+			int count = 0;
+			foreach (XmlNode node in xmldoc.GetElementsByTagName ("Control")) {
+				if (node.Attributes["Name"] == null || string.IsNullOrEmpty(node.Attributes["Name"].Value))
+					continue;
+				if (node.Attributes["Row"] != null) {
+					settings.SetRow (node.Attributes["Name"].Value, GetValue (node.Attributes["Row"].Value));
+					count++;
+				}
+				if (node.Attributes["RowSpan"] != null) {
+					settings.SetRowSpan (node.Attributes["Name"].Value, GetValue (node.Attributes["RowSpan"].Value));
+				}
+				if (node.Attributes["Column"] != null)
+					settings.SetColumn (node.Attributes["Name"].Value, GetValue (node.Attributes["Column"].Value));
+				if (node.Attributes["ColumnSpan"] != null)
+					settings.SetColumnSpan (node.Attributes["Name"].Value, GetValue (node.Attributes["ColumnSpan"].Value));
+			}
+			return count;
+		}
+
+		private void ParseColumnStyle (XmlDocument xmldoc, TableLayoutSettings settings)
+		{
+			foreach (XmlNode node in xmldoc.GetElementsByTagName ("Columns")) {
+				if (node.Attributes["Styles"] == null)
+					continue;
+				string styles = node.Attributes["Styles"].Value;
+				if (string.IsNullOrEmpty (styles))
+					continue;
+				string[] list = BuggySplit (styles);
+				for (int i = 0; i < list.Length; i+=2) {
+					float width = 0f;
+					SizeType type = (SizeType) Enum.Parse (typeof (SizeType), list[i]);
+					float.TryParse (list[i+1], NumberStyles.Float, CultureInfo.InvariantCulture, out width);
+					settings.ColumnStyles.Add (new ColumnStyle (type, width));
+				}				
+			}
+		}
+
+		private void ParseRowStyle (XmlDocument xmldoc, TableLayoutSettings settings)
+		{
+			foreach (XmlNode node in xmldoc.GetElementsByTagName ("Rows")) {
+				if (node.Attributes["Styles"] == null)
+					continue;
+				string styles = node.Attributes["Styles"].Value;
+				if (string.IsNullOrEmpty(styles))
+					continue;
+				string[] list = BuggySplit (styles);
+				for (int i = 0; i < list.Length; i += 2) {
+					float height = 0f;
+					SizeType type = (SizeType) Enum.Parse (typeof (SizeType), list[i]);
+					float.TryParse (list[i + 1], NumberStyles.Float, CultureInfo.InvariantCulture, out height);
+					settings.RowStyles.Add (new RowStyle (type, height));
+				}
+			}
+		}
+
+		private int GetValue (string attValue)
+		{
+			int val = -1;
+			if (!string.IsNullOrEmpty (attValue)) {
+				int.TryParse (attValue, out val);
+			}
+			return val;
+		}
+
+		// .Net accidently uses the local culture separator, so
+		// Percent,50.0,Percent,50.0	can be
+		// Percent,50,0,Percent,50,0
+		// Make sure we can handle this
+		private string[] BuggySplit (string s)
+		{
+			List<string> l = new List<string> ();
+			
+			string[] split = s.Split (',');
+			
+			for (int i = 0; i < split.Length; i++) {
+				switch (split[i].ToLowerInvariant ()) {
+					case "autosize":
+					case "absolute":
+					case "percent":
+						l.Add (split[i]);
+						break;
+					default:
+						if (i + 1 < split.Length) {
+							float test;
+							
+							if (float.TryParse (split[i + 1], out test)) {
+								l.Add (string.Format ("{0}.{1}", split[i], split[i + 1]));
+								i++;	
+							} else
+								l.Add (split[i]);
+						} else
+							l.Add (split[i]);
+						break;
+				}
+			}
+			
+			return l.ToArray ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/ButtonPainter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/ButtonPainter.cs
@@ -1,189 +1,189 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita (avidigal@novell.com)
-
-using System;
-using System.Drawing;
-
-namespace System.Windows.Forms.Theming.Default
-{
-	/// <summary>
-	/// Summary description for Button.
-	/// </summary>
-	internal class ButtonPainter
-	{
-		public ButtonPainter ()
-		{
-
-		}
-
-		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
-		
-		#region Buttons
-		#region Standard Button
-		public virtual void Draw (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor) {
-			bool is_themecolor = backColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb () || backColor == Color.Empty ? true : false;
-			CPColor cpcolor = is_themecolor ? CPColor.Empty : ResPool.GetCPColor (backColor);
-			Pen pen;
-			
-			switch (state) {
-				case ButtonThemeState.Normal:
-				case ButtonThemeState.Entered:
-				case ButtonThemeState.Disabled:
-					pen = is_themecolor ? SystemPens.ControlLightLight : ResPool.GetPen (cpcolor.LightLight);
-					g.DrawLine (pen, bounds.X, bounds.Y, bounds.X, bounds.Bottom - 2);
-					g.DrawLine (pen, bounds.X + 1, bounds.Y, bounds.Right - 2, bounds.Y);
-
-					pen = is_themecolor ? SystemPens.Control : ResPool.GetPen (backColor);
-					g.DrawLine (pen, bounds.X + 1, bounds.Y + 1, bounds.X + 1, bounds.Bottom - 3);
-					g.DrawLine (pen, bounds.X + 2, bounds.Y + 1, bounds.Right - 3, bounds.Y + 1);
-
-					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
-					g.DrawLine (pen, bounds.X + 1, bounds.Bottom - 2, bounds.Right - 2, bounds.Bottom - 2);
-					g.DrawLine (pen, bounds.Right - 2, bounds.Y + 1, bounds.Right - 2, bounds.Bottom - 3);
-
-					pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetPen (cpcolor.DarkDark);
-					g.DrawLine (pen, bounds.X, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 1);
-					g.DrawLine (pen, bounds.Right - 1, bounds.Y, bounds.Right - 1, bounds.Bottom - 2);
-					break;
-				case ButtonThemeState.Pressed:
-					g.DrawRectangle (ResPool.GetPen (foreColor), bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1);
-
-					bounds.Inflate (-1, -1);
-					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
-					g.DrawRectangle (pen, bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1);
-					break;
-				case ButtonThemeState.Default:
-					g.DrawRectangle (ResPool.GetPen (foreColor), bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1);
-
-					bounds.Inflate (-1, -1);
-					pen = is_themecolor ? SystemPens.ControlLightLight : ResPool.GetPen (cpcolor.LightLight);
-					g.DrawLine (pen, bounds.X, bounds.Y, bounds.X, bounds.Bottom - 2);
-					g.DrawLine (pen, bounds.X + 1, bounds.Y, bounds.Right - 2, bounds.Y);
-
-					pen = is_themecolor ? SystemPens.Control : ResPool.GetPen (backColor);
-					g.DrawLine (pen, bounds.X + 1, bounds.Y + 1, bounds.X + 1, bounds.Bottom - 3);
-					g.DrawLine (pen, bounds.X + 2, bounds.Y + 1, bounds.Right - 3, bounds.Y + 1);
-
-					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
-					g.DrawLine (pen, bounds.X + 1, bounds.Bottom - 2, bounds.Right - 2, bounds.Bottom - 2);
-					g.DrawLine (pen, bounds.Right - 2, bounds.Y + 1, bounds.Right - 2, bounds.Bottom - 3);
-
-					pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetPen (cpcolor.DarkDark);
-					g.DrawLine (pen, bounds.X, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 1);
-					g.DrawLine (pen, bounds.Right - 1, bounds.Y, bounds.Right - 1, bounds.Bottom - 2);
-					break;
-			}
-		}
-		#endregion
-
-		#region FlatStyle Button
-		public virtual void DrawFlat (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor, FlatButtonAppearance appearance) {
-			bool is_themecolor = backColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb () || backColor == Color.Empty ? true : false;
-			CPColor cpcolor = is_themecolor ? CPColor.Empty : ResPool.GetCPColor (backColor);
-			Pen pen;
-			
-			switch (state) {
-				case ButtonThemeState.Normal:
-				case ButtonThemeState.Disabled:
-					// This will just use the BackColor
-					break;
-				case ButtonThemeState.Entered:
-				case ButtonThemeState.Default | ButtonThemeState.Entered:
-					if (appearance.MouseOverBackColor != Color.Empty)
-						g.FillRectangle (ResPool.GetSolidBrush (appearance.MouseOverBackColor), bounds);
-					else
-						g.FillRectangle (ResPool.GetSolidBrush (ChangeIntensity (backColor, .9F)), bounds);
-					break;
-				case ButtonThemeState.Pressed:
-					if (appearance.MouseDownBackColor != Color.Empty)
-						g.FillRectangle (ResPool.GetSolidBrush (appearance.MouseDownBackColor), bounds);
-					else
-						g.FillRectangle (ResPool.GetSolidBrush (ChangeIntensity (backColor, .95F)), bounds);
-					break;
-				case ButtonThemeState.Default:
-					if (appearance.CheckedBackColor != Color.Empty)
-						g.FillRectangle (ResPool.GetSolidBrush (appearance.CheckedBackColor), bounds);
-					break;
-			}
-			
-			if (appearance.BorderColor == Color.Empty)
-				pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetSizedPen (cpcolor.DarkDark, appearance.BorderSize);
-			else
-				pen = ResPool.GetSizedPen (appearance.BorderColor, appearance.BorderSize);
-				
-			bounds.Width -= 1;
-			bounds.Height -= 1;
-				
-			if (appearance.BorderSize > 0)
-				g.DrawRectangle (pen, bounds);
-		}
-		#endregion
-
-		#region Popup Button
-		public virtual void DrawPopup (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor) {
-			bool is_themecolor = backColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb () || backColor == Color.Empty ? true : false;
-			CPColor cpcolor = is_themecolor ? CPColor.Empty : ResPool.GetCPColor (backColor);
-			Pen pen;
-
-			switch (state) {
-				case ButtonThemeState.Normal:
-				case ButtonThemeState.Disabled:
-				case ButtonThemeState.Pressed:
-				case ButtonThemeState.Default:
-					pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetPen (cpcolor.DarkDark);
-
-					bounds.Width -= 1;
-					bounds.Height -= 1;
-					g.DrawRectangle (pen, bounds);
-
-					if (state == ButtonThemeState.Default || state == ButtonThemeState.Pressed) {
-						bounds.Inflate (-1, -1);
-						g.DrawRectangle (pen, bounds);
-					}
-					break;
-				case ButtonThemeState.Entered:
-					pen = is_themecolor ? SystemPens.ControlLightLight : ResPool.GetPen (cpcolor.LightLight);
-					g.DrawLine (pen, bounds.X, bounds.Y, bounds.X, bounds.Bottom - 2);
-					g.DrawLine (pen, bounds.X + 1, bounds.Y, bounds.Right - 2, bounds.Y);
-
-					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
-					g.DrawLine (pen, bounds.X, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 1);
-					g.DrawLine (pen, bounds.Right - 1, bounds.Y, bounds.Right - 1, bounds.Bottom - 2);
-					break;
-			}
-		}
-		#endregion
-		#endregion
-		
-		private static Color ChangeIntensity (Color baseColor, float percent)
-		{
-			int H, I, S;
-
-			ControlPaint.Color2HBS (baseColor, out H, out I, out S);
-			int NewIntensity = Math.Min (255, (int)(I * percent));
-
-			return ControlPaint.HBS2Color (H, NewIntensity, S);			
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+
+using System;
+using System.Drawing;
+
+namespace System.Windows.Forms.Theming.Default
+{
+	/// <summary>
+	/// Summary description for Button.
+	/// </summary>
+	internal class ButtonPainter
+	{
+		public ButtonPainter ()
+		{
+
+		}
+
+		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
+		
+		#region Buttons
+		#region Standard Button
+		public virtual void Draw (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor) {
+			bool is_themecolor = backColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb () || backColor == Color.Empty ? true : false;
+			CPColor cpcolor = is_themecolor ? CPColor.Empty : ResPool.GetCPColor (backColor);
+			Pen pen;
+			
+			switch (state) {
+				case ButtonThemeState.Normal:
+				case ButtonThemeState.Entered:
+				case ButtonThemeState.Disabled:
+					pen = is_themecolor ? SystemPens.ControlLightLight : ResPool.GetPen (cpcolor.LightLight);
+					g.DrawLine (pen, bounds.X, bounds.Y, bounds.X, bounds.Bottom - 2);
+					g.DrawLine (pen, bounds.X + 1, bounds.Y, bounds.Right - 2, bounds.Y);
+
+					pen = is_themecolor ? SystemPens.Control : ResPool.GetPen (backColor);
+					g.DrawLine (pen, bounds.X + 1, bounds.Y + 1, bounds.X + 1, bounds.Bottom - 3);
+					g.DrawLine (pen, bounds.X + 2, bounds.Y + 1, bounds.Right - 3, bounds.Y + 1);
+
+					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
+					g.DrawLine (pen, bounds.X + 1, bounds.Bottom - 2, bounds.Right - 2, bounds.Bottom - 2);
+					g.DrawLine (pen, bounds.Right - 2, bounds.Y + 1, bounds.Right - 2, bounds.Bottom - 3);
+
+					pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetPen (cpcolor.DarkDark);
+					g.DrawLine (pen, bounds.X, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 1);
+					g.DrawLine (pen, bounds.Right - 1, bounds.Y, bounds.Right - 1, bounds.Bottom - 2);
+					break;
+				case ButtonThemeState.Pressed:
+					g.DrawRectangle (ResPool.GetPen (foreColor), bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1);
+
+					bounds.Inflate (-1, -1);
+					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
+					g.DrawRectangle (pen, bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1);
+					break;
+				case ButtonThemeState.Default:
+					g.DrawRectangle (ResPool.GetPen (foreColor), bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1);
+
+					bounds.Inflate (-1, -1);
+					pen = is_themecolor ? SystemPens.ControlLightLight : ResPool.GetPen (cpcolor.LightLight);
+					g.DrawLine (pen, bounds.X, bounds.Y, bounds.X, bounds.Bottom - 2);
+					g.DrawLine (pen, bounds.X + 1, bounds.Y, bounds.Right - 2, bounds.Y);
+
+					pen = is_themecolor ? SystemPens.Control : ResPool.GetPen (backColor);
+					g.DrawLine (pen, bounds.X + 1, bounds.Y + 1, bounds.X + 1, bounds.Bottom - 3);
+					g.DrawLine (pen, bounds.X + 2, bounds.Y + 1, bounds.Right - 3, bounds.Y + 1);
+
+					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
+					g.DrawLine (pen, bounds.X + 1, bounds.Bottom - 2, bounds.Right - 2, bounds.Bottom - 2);
+					g.DrawLine (pen, bounds.Right - 2, bounds.Y + 1, bounds.Right - 2, bounds.Bottom - 3);
+
+					pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetPen (cpcolor.DarkDark);
+					g.DrawLine (pen, bounds.X, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 1);
+					g.DrawLine (pen, bounds.Right - 1, bounds.Y, bounds.Right - 1, bounds.Bottom - 2);
+					break;
+			}
+		}
+		#endregion
+
+		#region FlatStyle Button
+		public virtual void DrawFlat (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor, FlatButtonAppearance appearance) {
+			bool is_themecolor = backColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb () || backColor == Color.Empty ? true : false;
+			CPColor cpcolor = is_themecolor ? CPColor.Empty : ResPool.GetCPColor (backColor);
+			Pen pen;
+			
+			switch (state) {
+				case ButtonThemeState.Normal:
+				case ButtonThemeState.Disabled:
+					// This will just use the BackColor
+					break;
+				case ButtonThemeState.Entered:
+				case ButtonThemeState.Default | ButtonThemeState.Entered:
+					if (appearance.MouseOverBackColor != Color.Empty)
+						g.FillRectangle (ResPool.GetSolidBrush (appearance.MouseOverBackColor), bounds);
+					else
+						g.FillRectangle (ResPool.GetSolidBrush (ChangeIntensity (backColor, .9F)), bounds);
+					break;
+				case ButtonThemeState.Pressed:
+					if (appearance.MouseDownBackColor != Color.Empty)
+						g.FillRectangle (ResPool.GetSolidBrush (appearance.MouseDownBackColor), bounds);
+					else
+						g.FillRectangle (ResPool.GetSolidBrush (ChangeIntensity (backColor, .95F)), bounds);
+					break;
+				case ButtonThemeState.Default:
+					if (appearance.CheckedBackColor != Color.Empty)
+						g.FillRectangle (ResPool.GetSolidBrush (appearance.CheckedBackColor), bounds);
+					break;
+			}
+			
+			if (appearance.BorderColor == Color.Empty)
+				pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetSizedPen (cpcolor.DarkDark, appearance.BorderSize);
+			else
+				pen = ResPool.GetSizedPen (appearance.BorderColor, appearance.BorderSize);
+				
+			bounds.Width -= 1;
+			bounds.Height -= 1;
+				
+			if (appearance.BorderSize > 0)
+				g.DrawRectangle (pen, bounds);
+		}
+		#endregion
+
+		#region Popup Button
+		public virtual void DrawPopup (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor) {
+			bool is_themecolor = backColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb () || backColor == Color.Empty ? true : false;
+			CPColor cpcolor = is_themecolor ? CPColor.Empty : ResPool.GetCPColor (backColor);
+			Pen pen;
+
+			switch (state) {
+				case ButtonThemeState.Normal:
+				case ButtonThemeState.Disabled:
+				case ButtonThemeState.Pressed:
+				case ButtonThemeState.Default:
+					pen = is_themecolor ? SystemPens.ControlDarkDark : ResPool.GetPen (cpcolor.DarkDark);
+
+					bounds.Width -= 1;
+					bounds.Height -= 1;
+					g.DrawRectangle (pen, bounds);
+
+					if (state == ButtonThemeState.Default || state == ButtonThemeState.Pressed) {
+						bounds.Inflate (-1, -1);
+						g.DrawRectangle (pen, bounds);
+					}
+					break;
+				case ButtonThemeState.Entered:
+					pen = is_themecolor ? SystemPens.ControlLightLight : ResPool.GetPen (cpcolor.LightLight);
+					g.DrawLine (pen, bounds.X, bounds.Y, bounds.X, bounds.Bottom - 2);
+					g.DrawLine (pen, bounds.X + 1, bounds.Y, bounds.Right - 2, bounds.Y);
+
+					pen = is_themecolor ? SystemPens.ControlDark : ResPool.GetPen (cpcolor.Dark);
+					g.DrawLine (pen, bounds.X, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 1);
+					g.DrawLine (pen, bounds.Right - 1, bounds.Y, bounds.Right - 1, bounds.Bottom - 2);
+					break;
+			}
+		}
+		#endregion
+		#endregion
+		
+		private static Color ChangeIntensity (Color baseColor, float percent)
+		{
+			int H, I, S;
+
+			ControlPaint.Color2HBS (baseColor, out H, out I, out S);
+			int NewIntensity = Math.Min (255, (int)(I * percent));
+
+			return ControlPaint.HBS2Color (H, NewIntensity, S);			
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/CheckBoxPainter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/CheckBoxPainter.cs
@@ -1,357 +1,357 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-
-using System;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-
-namespace System.Windows.Forms.Theming.Default
-{
-	/// <summary>
-	/// Summary description for Button.
-	/// </summary>
-	internal class CheckBoxPainter
-	{
-		public CheckBoxPainter ()
-		{
-		}
-
-		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
-
-		public void PaintCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, ElementState state, FlatStyle style, CheckState checkState)
-		{
-			switch (style) {
-				case FlatStyle.Standard:
-				case FlatStyle.System:
-					switch (state) {
-						case ElementState.Normal:
-							DrawNormalCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Hot:
-							DrawHotCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Pressed:
-							DrawPressedCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Disabled:
-							DrawDisabledCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-					}
-					break;
-				case FlatStyle.Flat:
-					switch (state) {
-						case ElementState.Normal:
-							DrawFlatNormalCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Hot:
-							DrawFlatHotCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Pressed:
-							DrawFlatPressedCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Disabled:
-							DrawFlatDisabledCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-					}
-					break;
-				case FlatStyle.Popup:
-					switch (state) {
-						case ElementState.Normal:
-							DrawPopupNormalCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Hot:
-							DrawPopupHotCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Pressed:
-							DrawPopupPressedCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-						case ElementState.Disabled:
-							DrawPopupDisabledCheckBox (g, bounds, backColor, foreColor, checkState);
-							break;
-					}
-					break;
-			}
-		}
-
-		#region Standard
-		public virtual void DrawNormalCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			int check_box_visible_size = (bounds.Height > bounds.Width) ? bounds.Width : bounds.Height;
-			int x_pos = Math.Max (0, bounds.X + (bounds.Width / 2) - check_box_visible_size / 2);
-			int y_pos = Math.Max (0, bounds.Y + (bounds.Height / 2) - check_box_visible_size / 2);
-
-			Rectangle rect = new Rectangle (x_pos, y_pos, check_box_visible_size, check_box_visible_size);
-
-			g.FillRectangle (SystemBrushes.ControlLightLight, rect.X + 2, rect.Y + 2, rect.Width - 3, rect.Height - 3);
-
-			Pen pen = SystemPens.ControlDark;
-			g.DrawLine (pen, rect.X, rect.Y, rect.X, rect.Bottom - 2);
-			g.DrawLine (pen, rect.X + 1, rect.Y, rect.Right - 2, rect.Y);
-
-			pen = SystemPens.ControlDarkDark;
-			g.DrawLine (pen, rect.X + 1, rect.Y + 1, rect.X + 1, rect.Bottom - 3);
-			g.DrawLine (pen, rect.X + 2, rect.Y + 1, rect.Right - 3, rect.Y + 1);
-
-			pen = SystemPens.ControlLightLight;
-			g.DrawLine (pen, rect.Right - 1, rect.Y, rect.Right - 1, rect.Bottom - 1);
-			g.DrawLine (pen, rect.X, rect.Bottom - 1, rect.Right - 1, rect.Bottom - 1);
-
-			// oh boy, matching ms is like fighting against windmills
-			using (Pen h_pen = new Pen (ResPool.GetHatchBrush (HatchStyle.Percent50,
-									   Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255),
-											   ColorControl.G, ColorControl.B), ColorControl))) {
-				g.DrawLine (h_pen, rect.X + 1, rect.Bottom - 2, rect.Right - 2, rect.Bottom - 2);
-				g.DrawLine (h_pen, rect.Right - 2, rect.Y + 1, rect.Right - 2, rect.Bottom - 2);
-			}
-			
-			if (state == CheckState.Checked)
-				DrawCheck (g, bounds, Color.Black);
-			else if (state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDark);
-		}
-		
-		public virtual void DrawHotCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			DrawNormalCheckBox (g, bounds, backColor, foreColor, state);
-		}
-
-		public virtual void DrawPressedCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			int check_box_visible_size = (bounds.Height > bounds.Width) ? bounds.Width : bounds.Height;
-			int x_pos = Math.Max (0, bounds.X + (bounds.Width / 2) - check_box_visible_size / 2);
-			int y_pos = Math.Max (0, bounds.Y + (bounds.Height / 2) - check_box_visible_size / 2);
-
-			Rectangle rect = new Rectangle (x_pos, y_pos, check_box_visible_size, check_box_visible_size);
-
-			g.FillRectangle (ResPool.GetHatchBrush (HatchStyle.Percent50,
-								 Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255),
-										 ColorControl.G, ColorControl.B),
-								 ColorControl), rect.X + 2, rect.Y + 2, rect.Width - 3, rect.Height - 3);
-
-			Pen pen = SystemPens.ControlDark;
-			g.DrawLine (pen, rect.X, rect.Y, rect.X, rect.Bottom - 2);
-			g.DrawLine (pen, rect.X + 1, rect.Y, rect.Right - 2, rect.Y);
-
-			pen = SystemPens.ControlDarkDark;
-			g.DrawLine (pen, rect.X + 1, rect.Y + 1, rect.X + 1, rect.Bottom - 3);
-			g.DrawLine (pen, rect.X + 2, rect.Y + 1, rect.Right - 3, rect.Y + 1);
-
-			pen = SystemPens.ControlLightLight;
-			g.DrawLine (pen, rect.Right - 1, rect.Y, rect.Right - 1, rect.Bottom - 1);
-			g.DrawLine (pen, rect.X, rect.Bottom - 1, rect.Right - 1, rect.Bottom - 1);
-
-			// oh boy, matching ms is like fighting against windmills
-			using (Pen h_pen = new Pen (ResPool.GetHatchBrush (HatchStyle.Percent50,
-									   Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255),
-											   ColorControl.G, ColorControl.B), ColorControl))) {
-				g.DrawLine (h_pen, rect.X + 1, rect.Bottom - 2, rect.Right - 2, rect.Bottom - 2);
-				g.DrawLine (h_pen, rect.Right - 2, rect.Y + 1, rect.Right - 2, rect.Bottom - 2);
-			}
-
-			if (state == CheckState.Checked)
-				DrawCheck (g, bounds, Color.Black);
-			else if (state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawDisabledCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			DrawPressedCheckBox (g, bounds, backColor, foreColor, CheckState.Unchecked);
-
-			if (state == CheckState.Checked || state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDark);
-		}
-		#endregion
-
-		#region FlatStyle
-		public virtual void DrawFlatNormalCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			Rectangle checkbox_rectangle;
-			Rectangle fill_rectangle;
-
-			// set up our rectangles first
-			// clip two pixels from bottom right for non popup rendered checkboxes
-			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 2, 0), Math.Max (bounds.Height - 2, 0));
-			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 2, 0), Math.Max (checkbox_rectangle.Height - 2, 0));
-
-			g.FillRectangle (ResPool.GetSolidBrush (ControlPaint.LightLight (backColor)), fill_rectangle);
-			ControlPaint.DrawBorder (g, checkbox_rectangle, foreColor, ButtonBorderStyle.Solid);
-
-			bounds.Offset (-1, 0);
-			
-			if (state == CheckState.Checked)
-				DrawCheck (g, bounds, Color.Black);
-			else if (state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawFlatHotCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			Rectangle checkbox_rectangle;
-			Rectangle fill_rectangle;
-
-			// set up our rectangles first
-			// clip two pixels from bottom right for non popup rendered checkboxes
-			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 2, 0), Math.Max (bounds.Height - 2, 0));
-			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 2, 0), Math.Max (checkbox_rectangle.Height - 2, 0));
-
-			g.FillRectangle (ResPool.GetSolidBrush (backColor), fill_rectangle);
-			ControlPaint.DrawBorder (g, checkbox_rectangle, foreColor, ButtonBorderStyle.Solid);
-
-			bounds.Offset (-1, 0);
-
-			if (state == CheckState.Checked)
-				DrawCheck (g, bounds, Color.Black);
-			else if (state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawFlatPressedCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			DrawFlatNormalCheckBox (g, bounds, backColor, foreColor, state);
-		}
-
-		public virtual void DrawFlatDisabledCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			Rectangle checkbox_rectangle;
-
-			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 2, 0), Math.Max (bounds.Height - 2, 0));
-
-			ControlPaint.DrawBorder (g, checkbox_rectangle, foreColor, ButtonBorderStyle.Solid);
-
-			bounds.Offset (-1, 0);
-
-			if (state == CheckState.Checked || state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
-		}
-		#endregion
-
-		#region Popup
-		public virtual void DrawPopupNormalCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			DrawFlatNormalCheckBox (g, bounds, backColor, foreColor, state);
-		}
-
-		public virtual void DrawPopupHotCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			Rectangle checkbox_rectangle;
-			Rectangle fill_rectangle;
-
-			// clip one pixel from bottom right for non popup rendered checkboxes
-			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 1, 0), Math.Max (bounds.Height - 1, 0));
-			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 3, 0), Math.Max (checkbox_rectangle.Height - 3, 0));
-
-			g.FillRectangle (ResPool.GetSolidBrush (ControlPaint.LightLight (backColor)), fill_rectangle);
-			
-			// draw sunken effect
-			ThemeEngine.Current.CPDrawBorder3D (g, checkbox_rectangle, Border3DStyle.SunkenInner, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom, backColor);
-
-			bounds.Offset (-1, 0);
-			
-			if (state == CheckState.Checked)
-				DrawCheck (g, bounds, Color.Black);
-			else if (state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawPopupPressedCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			Rectangle checkbox_rectangle;
-			Rectangle fill_rectangle;
-
-			// clip one pixel from bottom right for non popup rendered checkboxes
-			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 1, 0), Math.Max (bounds.Height - 1, 0));
-			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 3, 0), Math.Max (checkbox_rectangle.Height - 3, 0));
-
-			g.FillRectangle (ResPool.GetSolidBrush (backColor), fill_rectangle);
-
-			// draw sunken effect
-			ThemeEngine.Current.CPDrawBorder3D (g, checkbox_rectangle, Border3DStyle.SunkenInner, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom, backColor);
-
-			bounds.Offset (-1, 0);
-
-			if (state == CheckState.Checked)
-				DrawCheck (g, bounds, Color.Black);
-			else if (state == CheckState.Indeterminate)
-				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawPopupDisabledCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
-		{
-			DrawFlatDisabledCheckBox (g, bounds, backColor, foreColor, state);
-		}
-		#endregion
-
-		#region Check
-		public virtual void DrawCheck (Graphics g, Rectangle bounds, Color checkColor)
-		{
-			int check_size = (bounds.Height > bounds.Width) ? bounds.Width / 2 : bounds.Height / 2;
-
-			Pen check_pen = ResPool.GetPen (checkColor);
-
-			if (check_size < 7) {
-				int lineWidth = Math.Max (3, check_size / 3);
-				int Scale = Math.Max (1, check_size / 9);
-
-				Rectangle rect = new Rectangle (bounds.X + (bounds.Width / 2) - (check_size / 2) - 1, bounds.Y + (bounds.Height / 2) - (check_size / 2) - 1,
-								check_size, check_size);
-
-				for (int i = 0; i < lineWidth; i++) {
-					g.DrawLine (check_pen, rect.Left + lineWidth / 2, rect.Top + lineWidth + i, rect.Left + lineWidth / 2 + 2 * Scale, rect.Top + lineWidth + 2 * Scale + i);
-					g.DrawLine (check_pen, rect.Left + lineWidth / 2 + 2 * Scale, rect.Top + lineWidth + 2 * Scale + i, rect.Left + lineWidth / 2 + 6 * Scale, rect.Top + lineWidth - 2 * Scale + i);
-				}
-			} else {
-				int lineWidth = Math.Max (3, check_size / 3) + 1;
-
-				int x_half = bounds.Width / 2;
-				int y_half = bounds.Height / 2;
-
-				Rectangle rect = new Rectangle (bounds.X + x_half - (check_size / 2) - 1, bounds.Y + y_half - (check_size / 2),
-								check_size, check_size);
-
-				int gradient_left = check_size / 3;
-				int gradient_right = check_size - gradient_left - 1;
-
-				for (int i = 0; i < lineWidth; i++) {
-					g.DrawLine (check_pen, rect.X, rect.Bottom - 1 - gradient_left - i, rect.X + gradient_left, rect.Bottom - 1 - i);
-					g.DrawLine (check_pen, rect.X + gradient_left, rect.Bottom - 1 - i, rect.Right - 1, rect.Bottom - i - 1 - gradient_right);
-				}
-			}
-		}
-		#endregion
-		
-		#region Private Methods
-		private int Clamp (int value, int lower, int upper)
-		{
-			if (value < lower) return lower;
-			else if (value > upper) return upper;
-			else return value;
-		}
-
-		private Color ColorControl {
-			get { return SystemColors.Control; }
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+
+namespace System.Windows.Forms.Theming.Default
+{
+	/// <summary>
+	/// Summary description for Button.
+	/// </summary>
+	internal class CheckBoxPainter
+	{
+		public CheckBoxPainter ()
+		{
+		}
+
+		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
+
+		public void PaintCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, ElementState state, FlatStyle style, CheckState checkState)
+		{
+			switch (style) {
+				case FlatStyle.Standard:
+				case FlatStyle.System:
+					switch (state) {
+						case ElementState.Normal:
+							DrawNormalCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Hot:
+							DrawHotCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Pressed:
+							DrawPressedCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Disabled:
+							DrawDisabledCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+					}
+					break;
+				case FlatStyle.Flat:
+					switch (state) {
+						case ElementState.Normal:
+							DrawFlatNormalCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Hot:
+							DrawFlatHotCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Pressed:
+							DrawFlatPressedCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Disabled:
+							DrawFlatDisabledCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+					}
+					break;
+				case FlatStyle.Popup:
+					switch (state) {
+						case ElementState.Normal:
+							DrawPopupNormalCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Hot:
+							DrawPopupHotCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Pressed:
+							DrawPopupPressedCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+						case ElementState.Disabled:
+							DrawPopupDisabledCheckBox (g, bounds, backColor, foreColor, checkState);
+							break;
+					}
+					break;
+			}
+		}
+
+		#region Standard
+		public virtual void DrawNormalCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			int check_box_visible_size = (bounds.Height > bounds.Width) ? bounds.Width : bounds.Height;
+			int x_pos = Math.Max (0, bounds.X + (bounds.Width / 2) - check_box_visible_size / 2);
+			int y_pos = Math.Max (0, bounds.Y + (bounds.Height / 2) - check_box_visible_size / 2);
+
+			Rectangle rect = new Rectangle (x_pos, y_pos, check_box_visible_size, check_box_visible_size);
+
+			g.FillRectangle (SystemBrushes.ControlLightLight, rect.X + 2, rect.Y + 2, rect.Width - 3, rect.Height - 3);
+
+			Pen pen = SystemPens.ControlDark;
+			g.DrawLine (pen, rect.X, rect.Y, rect.X, rect.Bottom - 2);
+			g.DrawLine (pen, rect.X + 1, rect.Y, rect.Right - 2, rect.Y);
+
+			pen = SystemPens.ControlDarkDark;
+			g.DrawLine (pen, rect.X + 1, rect.Y + 1, rect.X + 1, rect.Bottom - 3);
+			g.DrawLine (pen, rect.X + 2, rect.Y + 1, rect.Right - 3, rect.Y + 1);
+
+			pen = SystemPens.ControlLightLight;
+			g.DrawLine (pen, rect.Right - 1, rect.Y, rect.Right - 1, rect.Bottom - 1);
+			g.DrawLine (pen, rect.X, rect.Bottom - 1, rect.Right - 1, rect.Bottom - 1);
+
+			// oh boy, matching ms is like fighting against windmills
+			using (Pen h_pen = new Pen (ResPool.GetHatchBrush (HatchStyle.Percent50,
+									   Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255),
+											   ColorControl.G, ColorControl.B), ColorControl))) {
+				g.DrawLine (h_pen, rect.X + 1, rect.Bottom - 2, rect.Right - 2, rect.Bottom - 2);
+				g.DrawLine (h_pen, rect.Right - 2, rect.Y + 1, rect.Right - 2, rect.Bottom - 2);
+			}
+			
+			if (state == CheckState.Checked)
+				DrawCheck (g, bounds, Color.Black);
+			else if (state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDark);
+		}
+		
+		public virtual void DrawHotCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			DrawNormalCheckBox (g, bounds, backColor, foreColor, state);
+		}
+
+		public virtual void DrawPressedCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			int check_box_visible_size = (bounds.Height > bounds.Width) ? bounds.Width : bounds.Height;
+			int x_pos = Math.Max (0, bounds.X + (bounds.Width / 2) - check_box_visible_size / 2);
+			int y_pos = Math.Max (0, bounds.Y + (bounds.Height / 2) - check_box_visible_size / 2);
+
+			Rectangle rect = new Rectangle (x_pos, y_pos, check_box_visible_size, check_box_visible_size);
+
+			g.FillRectangle (ResPool.GetHatchBrush (HatchStyle.Percent50,
+								 Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255),
+										 ColorControl.G, ColorControl.B),
+								 ColorControl), rect.X + 2, rect.Y + 2, rect.Width - 3, rect.Height - 3);
+
+			Pen pen = SystemPens.ControlDark;
+			g.DrawLine (pen, rect.X, rect.Y, rect.X, rect.Bottom - 2);
+			g.DrawLine (pen, rect.X + 1, rect.Y, rect.Right - 2, rect.Y);
+
+			pen = SystemPens.ControlDarkDark;
+			g.DrawLine (pen, rect.X + 1, rect.Y + 1, rect.X + 1, rect.Bottom - 3);
+			g.DrawLine (pen, rect.X + 2, rect.Y + 1, rect.Right - 3, rect.Y + 1);
+
+			pen = SystemPens.ControlLightLight;
+			g.DrawLine (pen, rect.Right - 1, rect.Y, rect.Right - 1, rect.Bottom - 1);
+			g.DrawLine (pen, rect.X, rect.Bottom - 1, rect.Right - 1, rect.Bottom - 1);
+
+			// oh boy, matching ms is like fighting against windmills
+			using (Pen h_pen = new Pen (ResPool.GetHatchBrush (HatchStyle.Percent50,
+									   Color.FromArgb (Clamp (ColorControl.R + 3, 0, 255),
+											   ColorControl.G, ColorControl.B), ColorControl))) {
+				g.DrawLine (h_pen, rect.X + 1, rect.Bottom - 2, rect.Right - 2, rect.Bottom - 2);
+				g.DrawLine (h_pen, rect.Right - 2, rect.Y + 1, rect.Right - 2, rect.Bottom - 2);
+			}
+
+			if (state == CheckState.Checked)
+				DrawCheck (g, bounds, Color.Black);
+			else if (state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawDisabledCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			DrawPressedCheckBox (g, bounds, backColor, foreColor, CheckState.Unchecked);
+
+			if (state == CheckState.Checked || state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDark);
+		}
+		#endregion
+
+		#region FlatStyle
+		public virtual void DrawFlatNormalCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			Rectangle checkbox_rectangle;
+			Rectangle fill_rectangle;
+
+			// set up our rectangles first
+			// clip two pixels from bottom right for non popup rendered checkboxes
+			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 2, 0), Math.Max (bounds.Height - 2, 0));
+			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 2, 0), Math.Max (checkbox_rectangle.Height - 2, 0));
+
+			g.FillRectangle (ResPool.GetSolidBrush (ControlPaint.LightLight (backColor)), fill_rectangle);
+			ControlPaint.DrawBorder (g, checkbox_rectangle, foreColor, ButtonBorderStyle.Solid);
+
+			bounds.Offset (-1, 0);
+			
+			if (state == CheckState.Checked)
+				DrawCheck (g, bounds, Color.Black);
+			else if (state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawFlatHotCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			Rectangle checkbox_rectangle;
+			Rectangle fill_rectangle;
+
+			// set up our rectangles first
+			// clip two pixels from bottom right for non popup rendered checkboxes
+			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 2, 0), Math.Max (bounds.Height - 2, 0));
+			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 2, 0), Math.Max (checkbox_rectangle.Height - 2, 0));
+
+			g.FillRectangle (ResPool.GetSolidBrush (backColor), fill_rectangle);
+			ControlPaint.DrawBorder (g, checkbox_rectangle, foreColor, ButtonBorderStyle.Solid);
+
+			bounds.Offset (-1, 0);
+
+			if (state == CheckState.Checked)
+				DrawCheck (g, bounds, Color.Black);
+			else if (state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawFlatPressedCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			DrawFlatNormalCheckBox (g, bounds, backColor, foreColor, state);
+		}
+
+		public virtual void DrawFlatDisabledCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			Rectangle checkbox_rectangle;
+
+			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 2, 0), Math.Max (bounds.Height - 2, 0));
+
+			ControlPaint.DrawBorder (g, checkbox_rectangle, foreColor, ButtonBorderStyle.Solid);
+
+			bounds.Offset (-1, 0);
+
+			if (state == CheckState.Checked || state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
+		}
+		#endregion
+
+		#region Popup
+		public virtual void DrawPopupNormalCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			DrawFlatNormalCheckBox (g, bounds, backColor, foreColor, state);
+		}
+
+		public virtual void DrawPopupHotCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			Rectangle checkbox_rectangle;
+			Rectangle fill_rectangle;
+
+			// clip one pixel from bottom right for non popup rendered checkboxes
+			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 1, 0), Math.Max (bounds.Height - 1, 0));
+			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 3, 0), Math.Max (checkbox_rectangle.Height - 3, 0));
+
+			g.FillRectangle (ResPool.GetSolidBrush (ControlPaint.LightLight (backColor)), fill_rectangle);
+			
+			// draw sunken effect
+			ThemeEngine.Current.CPDrawBorder3D (g, checkbox_rectangle, Border3DStyle.SunkenInner, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom, backColor);
+
+			bounds.Offset (-1, 0);
+			
+			if (state == CheckState.Checked)
+				DrawCheck (g, bounds, Color.Black);
+			else if (state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawPopupPressedCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			Rectangle checkbox_rectangle;
+			Rectangle fill_rectangle;
+
+			// clip one pixel from bottom right for non popup rendered checkboxes
+			checkbox_rectangle = new Rectangle (bounds.X, bounds.Y, Math.Max (bounds.Width - 1, 0), Math.Max (bounds.Height - 1, 0));
+			fill_rectangle = new Rectangle (checkbox_rectangle.X + 1, checkbox_rectangle.Y + 1, Math.Max (checkbox_rectangle.Width - 3, 0), Math.Max (checkbox_rectangle.Height - 3, 0));
+
+			g.FillRectangle (ResPool.GetSolidBrush (backColor), fill_rectangle);
+
+			// draw sunken effect
+			ThemeEngine.Current.CPDrawBorder3D (g, checkbox_rectangle, Border3DStyle.SunkenInner, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom, backColor);
+
+			bounds.Offset (-1, 0);
+
+			if (state == CheckState.Checked)
+				DrawCheck (g, bounds, Color.Black);
+			else if (state == CheckState.Indeterminate)
+				DrawCheck (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawPopupDisabledCheckBox (Graphics g, Rectangle bounds, Color backColor, Color foreColor, CheckState state)
+		{
+			DrawFlatDisabledCheckBox (g, bounds, backColor, foreColor, state);
+		}
+		#endregion
+
+		#region Check
+		public virtual void DrawCheck (Graphics g, Rectangle bounds, Color checkColor)
+		{
+			int check_size = (bounds.Height > bounds.Width) ? bounds.Width / 2 : bounds.Height / 2;
+
+			Pen check_pen = ResPool.GetPen (checkColor);
+
+			if (check_size < 7) {
+				int lineWidth = Math.Max (3, check_size / 3);
+				int Scale = Math.Max (1, check_size / 9);
+
+				Rectangle rect = new Rectangle (bounds.X + (bounds.Width / 2) - (check_size / 2) - 1, bounds.Y + (bounds.Height / 2) - (check_size / 2) - 1,
+								check_size, check_size);
+
+				for (int i = 0; i < lineWidth; i++) {
+					g.DrawLine (check_pen, rect.Left + lineWidth / 2, rect.Top + lineWidth + i, rect.Left + lineWidth / 2 + 2 * Scale, rect.Top + lineWidth + 2 * Scale + i);
+					g.DrawLine (check_pen, rect.Left + lineWidth / 2 + 2 * Scale, rect.Top + lineWidth + 2 * Scale + i, rect.Left + lineWidth / 2 + 6 * Scale, rect.Top + lineWidth - 2 * Scale + i);
+				}
+			} else {
+				int lineWidth = Math.Max (3, check_size / 3) + 1;
+
+				int x_half = bounds.Width / 2;
+				int y_half = bounds.Height / 2;
+
+				Rectangle rect = new Rectangle (bounds.X + x_half - (check_size / 2) - 1, bounds.Y + y_half - (check_size / 2),
+								check_size, check_size);
+
+				int gradient_left = check_size / 3;
+				int gradient_right = check_size - gradient_left - 1;
+
+				for (int i = 0; i < lineWidth; i++) {
+					g.DrawLine (check_pen, rect.X, rect.Bottom - 1 - gradient_left - i, rect.X + gradient_left, rect.Bottom - 1 - i);
+					g.DrawLine (check_pen, rect.X + gradient_left, rect.Bottom - 1 - i, rect.Right - 1, rect.Bottom - i - 1 - gradient_right);
+				}
+			}
+		}
+		#endregion
+		
+		#region Private Methods
+		private int Clamp (int value, int lower, int upper)
+		{
+			if (value < lower) return lower;
+			else if (value > upper) return upper;
+			else return value;
+		}
+
+		private Color ColorControl {
+			get { return SystemColors.Control; }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/RadioButtonPainter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/RadioButtonPainter.cs
@@ -1,239 +1,239 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-
-using System;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-
-namespace System.Windows.Forms.Theming.Default
-{
-	/// <summary>
-	/// Summary description for Button.
-	/// </summary>
-	internal class RadioButtonPainter
-	{
-		public RadioButtonPainter ()
-		{
-		}
-
-		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
-
-		public void PaintRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, ElementState state, FlatStyle style, bool isChecked)
-		{
-			switch (style) {
-				case FlatStyle.Standard:
-				case FlatStyle.System:
-					switch (state) {
-						case ElementState.Normal:
-							DrawNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Hot:
-							DrawHotRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Pressed:
-							DrawPressedRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Disabled:
-							DrawDisabledRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-					}
-					break;
-				case FlatStyle.Flat:
-					switch (state) {
-						case ElementState.Normal:
-							DrawFlatNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Hot:
-							DrawFlatHotRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Pressed:
-							DrawFlatPressedRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Disabled:
-							DrawFlatDisabledRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-					}
-					break;
-				case FlatStyle.Popup:
-					switch (state) {
-						case ElementState.Normal:
-							DrawPopupNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Hot:
-							DrawPopupHotRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Pressed:
-							DrawPopupPressedRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-						case ElementState.Disabled:
-							DrawPopupDisabledRadioButton (g, bounds, backColor, foreColor, isChecked);
-							break;
-					}
-					break;
-			}
-		}
-
-		#region Standard
-		public virtual void DrawNormalRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			ButtonState bs = ButtonState.Normal;
-
-			if (isChecked)
-				bs |= ButtonState.Checked;
-
-			ControlPaint.DrawRadioButton (g, bounds, bs);
-		}
-
-		public virtual void DrawHotRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			DrawNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
-		}
-
-		public virtual void DrawPressedRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			ButtonState bs = ButtonState.Pushed;
-
-			if (isChecked)
-				bs |= ButtonState.Checked;
-
-			ControlPaint.DrawRadioButton (g, bounds, bs);
-		}
-
-		public virtual void DrawDisabledRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			ButtonState bs = ButtonState.Inactive;
-
-			if (isChecked)
-				bs |= ButtonState.Checked;
-
-			ControlPaint.DrawRadioButton (g, bounds, bs);
-		}
-		#endregion
-
-		#region FlatStyle
-		public virtual void DrawFlatNormalRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.DrawArc (SystemPens.ControlDarkDark, bounds, 0, 359);
-			g.FillPie (SystemBrushes.ControlLightLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawFlatHotRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.DrawArc (SystemPens.ControlDarkDark, bounds, 0, 359);
-			g.FillPie (SystemBrushes.ControlLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawFlatPressedRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.DrawArc (SystemPens.ControlDarkDark, bounds, 0, 359);
-			g.FillPie (SystemBrushes.ControlLightLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawFlatDisabledRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.FillPie (SystemBrushes.Control, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
-			g.DrawArc (SystemPens.ControlDark, bounds, 0, 359);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDark);
-		}
-		#endregion
-
-		#region Popup
-		public virtual void DrawPopupNormalRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.FillPie (SystemBrushes.ControlLightLight, bounds, 0, 359);
-			g.DrawArc (SystemPens.ControlDark, bounds, 0, 359);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawPopupHotRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.FillPie (SystemBrushes.ControlLightLight, bounds, 0, 359);
-			g.DrawArc (SystemPens.ControlLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
-
-			g.DrawArc (SystemPens.ControlDark, bounds, 135, 180);
-			g.DrawArc (SystemPens.ControlLightLight, bounds, 315, 180);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawPopupPressedRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.FillPie (SystemBrushes.ControlLightLight, bounds, 0, 359);
-			g.DrawArc (SystemPens.ControlLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
-
-			g.DrawArc (SystemPens.ControlDark, bounds, 135, 180);
-			g.DrawArc (SystemPens.ControlLightLight, bounds, 315, 180);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
-		}
-
-		public virtual void DrawPopupDisabledRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
-		{
-			g.FillPie (SystemBrushes.Control, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
-			g.DrawArc (SystemPens.ControlDark, bounds, 0, 359);
-
-			if (isChecked)
-				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
-		}
-		#endregion
-
-		#region Glyph
-		protected void DrawFlatRadioGlyphDot (Graphics g, Rectangle bounds, Color dotColor)
-		{
-			int lineWidth = Math.Max (1, Math.Min (bounds.Width, bounds.Height) / 3);
-
-			Pen dot_pen = ResPool.GetPen (dotColor);
-			Brush dot_brush = ResPool.GetSolidBrush (dotColor);
-
-			if (bounds.Height > 13) {
-				g.FillPie (dot_brush, bounds.X + lineWidth, bounds.Y + lineWidth, bounds.Width - lineWidth * 2, bounds.Height - lineWidth * 2, 0, 359);
-			} else {
-				int x_half_pos = (bounds.Width / 2) + bounds.X;
-				int y_half_pos = (bounds.Height / 2) + bounds.Y;
-
-				g.DrawLine (dot_pen, x_half_pos - 1, y_half_pos, x_half_pos + 2, y_half_pos);
-				g.DrawLine (dot_pen, x_half_pos - 1, y_half_pos + 1, x_half_pos + 2, y_half_pos + 1);
-
-				g.DrawLine (dot_pen, x_half_pos, y_half_pos - 1, x_half_pos, y_half_pos + 2);
-				g.DrawLine (dot_pen, x_half_pos + 1, y_half_pos - 1, x_half_pos + 1, y_half_pos + 2);
-			}
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+
+namespace System.Windows.Forms.Theming.Default
+{
+	/// <summary>
+	/// Summary description for Button.
+	/// </summary>
+	internal class RadioButtonPainter
+	{
+		public RadioButtonPainter ()
+		{
+		}
+
+		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
+
+		public void PaintRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, ElementState state, FlatStyle style, bool isChecked)
+		{
+			switch (style) {
+				case FlatStyle.Standard:
+				case FlatStyle.System:
+					switch (state) {
+						case ElementState.Normal:
+							DrawNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Hot:
+							DrawHotRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Pressed:
+							DrawPressedRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Disabled:
+							DrawDisabledRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+					}
+					break;
+				case FlatStyle.Flat:
+					switch (state) {
+						case ElementState.Normal:
+							DrawFlatNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Hot:
+							DrawFlatHotRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Pressed:
+							DrawFlatPressedRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Disabled:
+							DrawFlatDisabledRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+					}
+					break;
+				case FlatStyle.Popup:
+					switch (state) {
+						case ElementState.Normal:
+							DrawPopupNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Hot:
+							DrawPopupHotRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Pressed:
+							DrawPopupPressedRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+						case ElementState.Disabled:
+							DrawPopupDisabledRadioButton (g, bounds, backColor, foreColor, isChecked);
+							break;
+					}
+					break;
+			}
+		}
+
+		#region Standard
+		public virtual void DrawNormalRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			ButtonState bs = ButtonState.Normal;
+
+			if (isChecked)
+				bs |= ButtonState.Checked;
+
+			ControlPaint.DrawRadioButton (g, bounds, bs);
+		}
+
+		public virtual void DrawHotRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			DrawNormalRadioButton (g, bounds, backColor, foreColor, isChecked);
+		}
+
+		public virtual void DrawPressedRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			ButtonState bs = ButtonState.Pushed;
+
+			if (isChecked)
+				bs |= ButtonState.Checked;
+
+			ControlPaint.DrawRadioButton (g, bounds, bs);
+		}
+
+		public virtual void DrawDisabledRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			ButtonState bs = ButtonState.Inactive;
+
+			if (isChecked)
+				bs |= ButtonState.Checked;
+
+			ControlPaint.DrawRadioButton (g, bounds, bs);
+		}
+		#endregion
+
+		#region FlatStyle
+		public virtual void DrawFlatNormalRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.DrawArc (SystemPens.ControlDarkDark, bounds, 0, 359);
+			g.FillPie (SystemBrushes.ControlLightLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawFlatHotRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.DrawArc (SystemPens.ControlDarkDark, bounds, 0, 359);
+			g.FillPie (SystemBrushes.ControlLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawFlatPressedRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.DrawArc (SystemPens.ControlDarkDark, bounds, 0, 359);
+			g.FillPie (SystemBrushes.ControlLightLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawFlatDisabledRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.FillPie (SystemBrushes.Control, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
+			g.DrawArc (SystemPens.ControlDark, bounds, 0, 359);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDark);
+		}
+		#endregion
+
+		#region Popup
+		public virtual void DrawPopupNormalRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.FillPie (SystemBrushes.ControlLightLight, bounds, 0, 359);
+			g.DrawArc (SystemPens.ControlDark, bounds, 0, 359);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawPopupHotRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.FillPie (SystemBrushes.ControlLightLight, bounds, 0, 359);
+			g.DrawArc (SystemPens.ControlLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
+
+			g.DrawArc (SystemPens.ControlDark, bounds, 135, 180);
+			g.DrawArc (SystemPens.ControlLightLight, bounds, 315, 180);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawPopupPressedRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.FillPie (SystemBrushes.ControlLightLight, bounds, 0, 359);
+			g.DrawArc (SystemPens.ControlLight, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
+
+			g.DrawArc (SystemPens.ControlDark, bounds, 135, 180);
+			g.DrawArc (SystemPens.ControlLightLight, bounds, 315, 180);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
+		}
+
+		public virtual void DrawPopupDisabledRadioButton (Graphics g, Rectangle bounds, Color backColor, Color foreColor, bool isChecked)
+		{
+			g.FillPie (SystemBrushes.Control, bounds.X + 1, bounds.Y + 1, bounds.Width - 2, bounds.Height - 2, 0, 359);
+			g.DrawArc (SystemPens.ControlDark, bounds, 0, 359);
+
+			if (isChecked)
+				DrawFlatRadioGlyphDot (g, bounds, SystemColors.ControlDarkDark);
+		}
+		#endregion
+
+		#region Glyph
+		protected void DrawFlatRadioGlyphDot (Graphics g, Rectangle bounds, Color dotColor)
+		{
+			int lineWidth = Math.Max (1, Math.Min (bounds.Width, bounds.Height) / 3);
+
+			Pen dot_pen = ResPool.GetPen (dotColor);
+			Brush dot_brush = ResPool.GetSolidBrush (dotColor);
+
+			if (bounds.Height > 13) {
+				g.FillPie (dot_brush, bounds.X + lineWidth, bounds.Y + lineWidth, bounds.Width - lineWidth * 2, bounds.Height - lineWidth * 2, 0, 359);
+			} else {
+				int x_half_pos = (bounds.Width / 2) + bounds.X;
+				int y_half_pos = (bounds.Height / 2) + bounds.Y;
+
+				g.DrawLine (dot_pen, x_half_pos - 1, y_half_pos, x_half_pos + 2, y_half_pos);
+				g.DrawLine (dot_pen, x_half_pos - 1, y_half_pos + 1, x_half_pos + 2, y_half_pos + 1);
+
+				g.DrawLine (dot_pen, x_half_pos, y_half_pos - 1, x_half_pos, y_half_pos + 2);
+				g.DrawLine (dot_pen, x_half_pos + 1, y_half_pos - 1, x_half_pos + 1, y_half_pos + 2);
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/TabControlPainter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/TabControlPainter.cs
@@ -1,507 +1,507 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita (avidigal@novell.com)
-
-using System;
-using System.Drawing;
-using System.Drawing.Text;
-using System.Windows.Forms;
-using System.Windows.Forms.VisualStyles;
-
-namespace System.Windows.Forms.Theming.Default
-{
-	/// <summary>
-	/// Summary description for TabControl.
-	/// </summary>
-	internal class TabControlPainter {
-		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
-
-		#region private
-
-		private Size	defaultItemSize;
-		private Point	defaultPadding;
-		private int		minimumTabWidth;
-		private Rectangle selectedTabDelta;
-
-		private Point	tabPanelOffset;
-		
-		private int		selectedSpacing;
-
-		private Size	rowSpacingNormal;
-		private Size	rowSpacingButtons;
-		private Size	rowSpacingFlatButtons;
-		private int		scrollerWidth;
-		private Point	focusRectSpacing;
-		private Rectangle tabPageSpacing;
-		private int		colSpacing;
-		private int		flatButtonSpacing;
-
-		private Point	imagePadding;
-
-		private StringFormat defaultFormatting;
-
-		private Rectangle borderThickness;
-
-		#endregion
-
-		#region Properties
-
-		public virtual Size DefaultItemSize {
-			get { return defaultItemSize; }
-			set { defaultItemSize = value; }
-		}
-
-		public virtual Point DefaultPadding {
-			get { return defaultPadding; }
-			set { defaultPadding = value; }
-		}
-
-		public virtual int MinimumTabWidth {
-			get { return minimumTabWidth; }
-			set { minimumTabWidth = value; }
-		}
-
-		public virtual Rectangle SelectedTabDelta {
-			get { return selectedTabDelta; }
-			set { selectedTabDelta = value; }
-		}
-
-		public virtual Point TabPanelOffset {
-			get { return tabPanelOffset; }
-			set { tabPanelOffset = value; }
-		}
-
-		public virtual int SelectedSpacing {
-			get { return selectedSpacing; }
-			set { selectedSpacing = value; }
-		}
-
-		public virtual Size RowSpacingNormal { 
-			get { return rowSpacingNormal; }
-			set { rowSpacingNormal = value; }
-		}
-
-		public virtual Size RowSpacingButtons { 
-			get { return rowSpacingButtons; }
-			set { rowSpacingButtons = value; }
-		}
-
-		public virtual Size RowSpacingFlatButtons { 
-			get { return rowSpacingFlatButtons; }
-			set { rowSpacingFlatButtons = value; }
-		}
-
-		public virtual Point FocusRectSpacing {
-			get { return focusRectSpacing; }
-			set { focusRectSpacing = value; }
-		}
-
-		public virtual int ColSpacing { 
-			get { return colSpacing; }
-			set { colSpacing = value; }
-		}
-
-		public virtual int FlatButtonSpacing { 
-			get { return flatButtonSpacing; }
-			set { flatButtonSpacing = value; }
-		}
-
-		public virtual Rectangle TabPageSpacing {
-			get { return tabPageSpacing; }
-			set { tabPageSpacing = value; }
-		}
-
-		public virtual Point ImagePadding {
-			get { return imagePadding; }
-			set { imagePadding = value; }
-		}
-
-		public virtual StringFormat DefaultFormatting {
-			get { return defaultFormatting; }
-			set { defaultFormatting = value; }
-		}
-
-		public virtual Rectangle BorderThickness {
-			get { return borderThickness; }
-			set { borderThickness = value; }
-		}
-
-		public virtual int ScrollerWidth {
-			get { return scrollerWidth; }
-			set { scrollerWidth = value; }
-		}
-
-		public virtual Size RowSpacing (System.Windows.Forms.TabControl tab) {
-			switch (tab.Appearance) {
-				case TabAppearance.Normal:
-					return rowSpacingNormal;
-				case TabAppearance.Buttons:
-					return rowSpacingButtons;
-				case TabAppearance.FlatButtons:
-					return rowSpacingFlatButtons;
-				default:
-					throw new Exception ("Invalid Appearance value: " + tab.Appearance);
-			}
-		}
-		#endregion
-
-		public TabControlPainter ()
-		{
-			defaultItemSize = new Size (42, 16);
-			defaultPadding = new Point (6, 3);
-			selectedTabDelta = new Rectangle (2, 2, 4, 3);
-			selectedSpacing = 0;
-
-			rowSpacingNormal = new Size (0, 0);
-			rowSpacingButtons = new Size (3, 3);
-			rowSpacingFlatButtons = new Size (9, 3);
-			
-			colSpacing = 0;
-
-			minimumTabWidth = 42;
-			scrollerWidth = 17;
-			focusRectSpacing = new Point (2, 2);
-			tabPanelOffset = new Point (4, 0);
-			flatButtonSpacing = 8;
-			tabPageSpacing = new Rectangle (4, 2, 3, 4);
-
-			imagePadding = new Point (2, 3);
-
-			defaultFormatting = new StringFormat();
-			// Horizontal Alignment is handled in the Draw method
-			defaultFormatting.Alignment = StringAlignment.Near;
-			defaultFormatting.LineAlignment = StringAlignment.Center;
-			defaultFormatting.FormatFlags = StringFormatFlags.NoWrap | StringFormatFlags.NoClip;
-			defaultFormatting.HotkeyPrefix = HotkeyPrefix.Show;
-
-			borderThickness = new Rectangle (1, 1, 2, 2);
-		}
-
-		public virtual Rectangle GetLeftScrollRect (System.Windows.Forms.TabControl tab)
-		{
-			switch (tab.Alignment) {
-				case TabAlignment.Top:
-					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth * 2), tab.ClientRectangle.Top + 1, scrollerWidth, scrollerWidth);
-				default:
-					Rectangle panel_rect = GetTabPanelRect (tab);
-					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth * 2), panel_rect.Bottom + 2, scrollerWidth, scrollerWidth);
-			}
-		}
-
-		public virtual Rectangle GetRightScrollRect (System.Windows.Forms.TabControl tab)
-		{
-			switch (tab.Alignment) {
-				case TabAlignment.Top:
-					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth), tab.ClientRectangle.Top + 1, scrollerWidth, scrollerWidth);
-				default:
-					Rectangle panel_rect = GetTabPanelRect (tab);
-					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth), panel_rect.Bottom + 2, scrollerWidth, scrollerWidth);
-			}
-		}
-
-		public Rectangle GetDisplayRectangle (System.Windows.Forms.TabControl tab)
-		{
-			Rectangle ext = GetTabPanelRect (tab);
-			// Account for border size
-			return new Rectangle (ext.Left + tabPageSpacing.X, ext.Top + tabPageSpacing.Y, 
-				ext.Width - tabPageSpacing.X - tabPageSpacing.Width, ext.Height - tabPageSpacing.Y - tabPageSpacing.Height);
-		}
-		
-		public Rectangle GetTabPanelRect (System.Windows.Forms.TabControl tab)
-		{	
-			// Offset the tab page (panel) from the top corner
-			Rectangle res = tab.ClientRectangle;
-
-			if (tab.TabCount == 0)
-				return res;
-
-			int spacing = RowSpacing (tab).Height;
-			int tabOffset = (tab.ItemSize.Height + spacing - selectedTabDelta.Height) * tab.RowCount + selectedTabDelta.Y;
-			switch (tab.Alignment) {
-				case TabAlignment.Top:
-					res.Y += tabOffset;
-					res.Height -= tabOffset;
-					break;
-				case TabAlignment.Bottom:
-					res.Height -= tabOffset;
-					break;
-				case TabAlignment.Left:
-					res.X += tabOffset;
-					res.Width -= tabOffset;
-					break;
-				case TabAlignment.Right:
-					res.Width -= tabOffset;
-					break;
-			}
-
-			return res;
-		}
-
-		public virtual void Draw (Graphics dc, Rectangle area, TabControl tab)
-		{
-			DrawBackground (dc, area, tab);
-
-			int start = 0;
-			int end = tab.TabPages.Count;
-			int delta = 1;
-
-			if (tab.Alignment == TabAlignment.Top) {
-				start = end;
-				end = 0;
-				delta = -1;
-			}
-
-			if (tab.SizeMode == TabSizeMode.Fixed)
-				defaultFormatting.Alignment = StringAlignment.Center;
-			else
-				defaultFormatting.Alignment = StringAlignment.Near;
-
-			int counter = start;
-			for (; counter != end; counter += delta) {
-				for (int i = tab.SliderPos; i < tab.TabPages.Count; i++) {
-					if (i == tab.SelectedIndex)
-						continue;
-					if (counter != tab.TabPages[i].Row)
-						continue;
-					Rectangle rect = tab.GetTabRect (i);
-					if (!rect.IntersectsWith (area))
-						continue;
-					DrawTab (dc, tab.TabPages[i], tab, rect, false);
-				}
-			}
-
-			if (tab.SelectedIndex != -1 && tab.SelectedIndex >= tab.SliderPos) {
-				Rectangle rect = tab.GetTabRect (tab.SelectedIndex);
-				if (rect.IntersectsWith (area))
-					DrawTab (dc, tab.TabPages[tab.SelectedIndex], tab, rect, true);
-			}
-
-			if (tab.ShowSlider) {
-				Rectangle right = GetRightScrollRect (tab);
-				Rectangle left = GetLeftScrollRect (tab);
-				DrawScrollButton (dc, right, area, ScrollButton.Right, tab.RightSliderState);
-				DrawScrollButton (dc, left, area, ScrollButton.Left, tab.LeftSliderState);
-			}
-		}
-
-		protected virtual void DrawScrollButton (Graphics dc, Rectangle bounds, Rectangle clippingArea, ScrollButton button, PushButtonState state)
-		{
-			ControlPaint.DrawScrollButton (dc, bounds, button, GetButtonState (state));
-		}
-
-		static ButtonState GetButtonState (PushButtonState state)
-		{
-			switch (state) {
-			case PushButtonState.Pressed:
-				return ButtonState.Pushed;
-			default:
-				return ButtonState.Normal;
-			}
-		}
-
-		protected virtual void DrawBackground (Graphics dc, Rectangle area, TabControl tab)
-		{
-			Brush brush = SystemBrushes.Control;
-			dc.FillRectangle (brush, area);
-			Rectangle panel_rect = GetTabPanelRect (tab);
-
-			if (tab.Appearance == TabAppearance.Normal) {
-				ControlPaint.DrawBorder3D (dc, panel_rect, Border3DStyle.RaisedInner, Border3DSide.Left | Border3DSide.Top);
-				ControlPaint.DrawBorder3D (dc, panel_rect, Border3DStyle.Raised, Border3DSide.Right | Border3DSide.Bottom);
-			}
-		}
-
-		protected virtual int DrawTab (Graphics dc, System.Windows.Forms.TabPage page, System.Windows.Forms.TabControl tab, Rectangle bounds, bool is_selected)
-		{
-			Rectangle interior;
-			int res = bounds.Width;
-
-			dc.FillRectangle (ResPool.GetSolidBrush (tab.BackColor), bounds);
-
-			if (tab.Appearance == TabAppearance.Buttons || tab.Appearance == TabAppearance.FlatButtons) {
-				// Separators
-				if (tab.Appearance == TabAppearance.FlatButtons) {
-					int width = bounds.Width;
-					bounds.Width += (flatButtonSpacing - 2);
-					res = bounds.Width;
-					if (tab.Alignment == TabAlignment.Top || tab.Alignment == TabAlignment.Bottom)
-						ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Etched, Border3DSide.Right);
-					else
-						ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Etched, Border3DSide.Top);
-					bounds.Width = width;
-				}
-
-				if (is_selected) {
-					ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Sunken, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom);
-				} else if (tab.Appearance != TabAppearance.FlatButtons) {
-					ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Raised, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom);
-				}
-
-
-			} else {
-				CPColor cpcolor = ResPool.GetCPColor (tab.BackColor);
-
-				Pen light = ResPool.GetPen (cpcolor.LightLight);
-
-				switch (tab.Alignment) {
-
-					case TabAlignment.Top:
-
-						dc.DrawLine (light, bounds.Left, bounds.Bottom - 1, bounds.Left, bounds.Top + 3);
-						dc.DrawLine (light, bounds.Left, bounds.Top + 3, bounds.Left + 2, bounds.Top);
-						dc.DrawLine (light, bounds.Left + 2, bounds.Top, bounds.Right - 3, bounds.Top);
-
-						dc.DrawLine (SystemPens.ControlDark, bounds.Right - 2, bounds.Top + 1, bounds.Right - 2, bounds.Bottom - 1);
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 2, bounds.Top + 1, bounds.Right - 1, bounds.Top + 2);
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 1, bounds.Top + 2, bounds.Right - 1, bounds.Bottom - 1);
-						break;
-
-					case TabAlignment.Bottom:
-
-						dc.DrawLine (light, bounds.Left, bounds.Top, bounds.Left, bounds.Bottom - 2);
-						dc.DrawLine (light, bounds.Left, bounds.Bottom - 2, bounds.Left + 3, bounds.Bottom);
-						
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Left + 3, bounds.Bottom, bounds.Right - 3, bounds.Bottom);
-						dc.DrawLine (SystemPens.ControlDark, bounds.Left + 3, bounds.Bottom - 1, bounds.Right - 3, bounds.Bottom - 1);
-
-						dc.DrawLine (SystemPens.ControlDark, bounds.Right - 2, bounds.Bottom - 1, bounds.Right - 2, bounds.Top + 1);
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 2, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 2);
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 1, bounds.Bottom - 2, bounds.Right - 1, bounds.Top + 1);
-
-						break;
-
-					case TabAlignment.Left:
-
-						dc.DrawLine (light, bounds.Left - 2, bounds.Top, bounds.Right, bounds.Top);
-						dc.DrawLine (light, bounds.Left, bounds.Top + 2, bounds.Left - 2, bounds.Top);
-						dc.DrawLine (light, bounds.Left, bounds.Top + 2, bounds.Left, bounds.Bottom - 2);
-
-						dc.DrawLine (SystemPens.ControlDark, bounds.Left, bounds.Bottom - 2, bounds.Left + 2, bounds.Bottom - 1);
-
-						dc.DrawLine (SystemPens.ControlDark, bounds.Left + 2, bounds.Bottom - 1, bounds.Right, bounds.Bottom - 1);
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Left + 2, bounds.Bottom, bounds.Right, bounds.Bottom);
-
-						break;
-
-					default: // TabAlignment.Right
-
-						dc.DrawLine (light, bounds.Left, bounds.Top, bounds.Right - 3, bounds.Top);
-						dc.DrawLine (light, bounds.Right - 3, bounds.Top, bounds.Right, bounds.Top + 3);
-
-						dc.DrawLine (SystemPens.ControlDark, bounds.Right - 1, bounds.Top + 1, bounds.Right - 1, bounds.Bottom - 1);
-						dc.DrawLine (SystemPens.ControlDark, bounds.Left, bounds.Bottom - 1, bounds.Right - 2, bounds.Bottom - 1);
-
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right, bounds.Top + 3, bounds.Right, bounds.Bottom - 3);
-						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Left, bounds.Bottom, bounds.Right - 3, bounds.Bottom);
-
-						break;
-				}
-			}
-
-			Point padding = tab.Padding;
-			interior = new Rectangle (bounds.Left + padding.X - 1, // substract a little offset
-				bounds.Top + padding.Y,
-				bounds.Width - (padding.X * 2), 
-				bounds.Height - (padding.Y * 2));
-
-			if (tab.DrawMode == TabDrawMode.Normal && page.Text != null) {
-				if (tab.Alignment == TabAlignment.Left) {
-					dc.TranslateTransform (bounds.Left, bounds.Bottom);
-					dc.RotateTransform (-90);
-					dc.DrawString (page.Text, tab.Font,
-						SystemBrushes.ControlText, 
-						tab.Padding.X - 2, // drawstring adds some extra unwanted leading spaces, so trimming
-						tab.Padding.Y,
-						defaultFormatting);
-					dc.ResetTransform ();
-				} else if (tab.Alignment == TabAlignment.Right) {
-					dc.TranslateTransform (bounds.Right, bounds.Top);
-					dc.RotateTransform (90);
-					dc.DrawString (page.Text, tab.Font,
-						SystemBrushes.ControlText, 
-						tab.Padding.X - 2, // drawstring adds some extra unwanted leading spaces, so trimming
-						tab.Padding.Y,
-						defaultFormatting);
-					dc.ResetTransform ();
-				} else {
-					Rectangle str_rect = interior;
-
-					if (is_selected) {
-						// Reduce the interior size to match the inner size of non-selected tabs
-						str_rect.X += selectedTabDelta.X;
-						str_rect.Y += selectedTabDelta.Y;
-						str_rect.Width -= selectedTabDelta.Width;
-						str_rect.Height -= selectedTabDelta.Height;
-
-						str_rect.Y -= selectedTabDelta.Y; // Move up the text / image of the selected tab
-					}
-
-					if (tab.ImageList != null && page.ImageIndex >= 0 && page.ImageIndex < tab.ImageList.Images.Count) {
-						int image_x;
-						if (tab.SizeMode != TabSizeMode.Fixed) {
-							image_x = str_rect.X;
-						}
-						else {
-							image_x = str_rect.X + (str_rect.Width - tab.ImageList.ImageSize.Width) / 2;
-							if (page.Text != null) {
-								SizeF textSize = dc.MeasureString(page.Text, page.Font, str_rect.Size);
-								image_x -= (int)(textSize.Width / 2);
-							}
-						}
-						int image_y = str_rect.Y + (str_rect.Height - tab.ImageList.ImageSize.Height) / 2;
-						tab.ImageList.Draw (dc, new Point (image_x, image_y), page.ImageIndex);
-						str_rect.X += tab.ImageList.ImageSize.Width + 2;
-						str_rect.Width -= tab.ImageList.ImageSize.Width + 2;
-					}
-					dc.DrawString (page.Text, tab.Font,
-						SystemBrushes.ControlText,
-						str_rect, 
-						defaultFormatting);
-
-				}
-			} else if (page.Text != null) {
-				DrawItemState state = DrawItemState.None;
-				if (page == tab.SelectedTab)
-					state |= DrawItemState.Selected;
-				DrawItemEventArgs e = new DrawItemEventArgs (dc,
-					tab.Font, bounds, tab.IndexForTabPage (page),
-					state, page.ForeColor, page.BackColor);
-				tab.OnDrawItemInternal (e);
-				return res;
-			}
-
-			// TabControl ignores the value of ShowFocusCues
-			if (page.Parent.Focused && is_selected) {
-				Rectangle focus_rect = bounds;
-				focus_rect.Inflate (-2, -2);
-				ThemeEngine.Current.CPDrawFocusRectangle (dc, focus_rect, tab.BackColor, tab.ForeColor);
-			}
-
-			return res;
-		}
-
-		public virtual bool HasHotElementStyles (TabControl tabControl) {
-			return false;
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+
+using System;
+using System.Drawing;
+using System.Drawing.Text;
+using System.Windows.Forms;
+using System.Windows.Forms.VisualStyles;
+
+namespace System.Windows.Forms.Theming.Default
+{
+	/// <summary>
+	/// Summary description for TabControl.
+	/// </summary>
+	internal class TabControlPainter {
+		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
+
+		#region private
+
+		private Size	defaultItemSize;
+		private Point	defaultPadding;
+		private int		minimumTabWidth;
+		private Rectangle selectedTabDelta;
+
+		private Point	tabPanelOffset;
+		
+		private int		selectedSpacing;
+
+		private Size	rowSpacingNormal;
+		private Size	rowSpacingButtons;
+		private Size	rowSpacingFlatButtons;
+		private int		scrollerWidth;
+		private Point	focusRectSpacing;
+		private Rectangle tabPageSpacing;
+		private int		colSpacing;
+		private int		flatButtonSpacing;
+
+		private Point	imagePadding;
+
+		private StringFormat defaultFormatting;
+
+		private Rectangle borderThickness;
+
+		#endregion
+
+		#region Properties
+
+		public virtual Size DefaultItemSize {
+			get { return defaultItemSize; }
+			set { defaultItemSize = value; }
+		}
+
+		public virtual Point DefaultPadding {
+			get { return defaultPadding; }
+			set { defaultPadding = value; }
+		}
+
+		public virtual int MinimumTabWidth {
+			get { return minimumTabWidth; }
+			set { minimumTabWidth = value; }
+		}
+
+		public virtual Rectangle SelectedTabDelta {
+			get { return selectedTabDelta; }
+			set { selectedTabDelta = value; }
+		}
+
+		public virtual Point TabPanelOffset {
+			get { return tabPanelOffset; }
+			set { tabPanelOffset = value; }
+		}
+
+		public virtual int SelectedSpacing {
+			get { return selectedSpacing; }
+			set { selectedSpacing = value; }
+		}
+
+		public virtual Size RowSpacingNormal { 
+			get { return rowSpacingNormal; }
+			set { rowSpacingNormal = value; }
+		}
+
+		public virtual Size RowSpacingButtons { 
+			get { return rowSpacingButtons; }
+			set { rowSpacingButtons = value; }
+		}
+
+		public virtual Size RowSpacingFlatButtons { 
+			get { return rowSpacingFlatButtons; }
+			set { rowSpacingFlatButtons = value; }
+		}
+
+		public virtual Point FocusRectSpacing {
+			get { return focusRectSpacing; }
+			set { focusRectSpacing = value; }
+		}
+
+		public virtual int ColSpacing { 
+			get { return colSpacing; }
+			set { colSpacing = value; }
+		}
+
+		public virtual int FlatButtonSpacing { 
+			get { return flatButtonSpacing; }
+			set { flatButtonSpacing = value; }
+		}
+
+		public virtual Rectangle TabPageSpacing {
+			get { return tabPageSpacing; }
+			set { tabPageSpacing = value; }
+		}
+
+		public virtual Point ImagePadding {
+			get { return imagePadding; }
+			set { imagePadding = value; }
+		}
+
+		public virtual StringFormat DefaultFormatting {
+			get { return defaultFormatting; }
+			set { defaultFormatting = value; }
+		}
+
+		public virtual Rectangle BorderThickness {
+			get { return borderThickness; }
+			set { borderThickness = value; }
+		}
+
+		public virtual int ScrollerWidth {
+			get { return scrollerWidth; }
+			set { scrollerWidth = value; }
+		}
+
+		public virtual Size RowSpacing (System.Windows.Forms.TabControl tab) {
+			switch (tab.Appearance) {
+				case TabAppearance.Normal:
+					return rowSpacingNormal;
+				case TabAppearance.Buttons:
+					return rowSpacingButtons;
+				case TabAppearance.FlatButtons:
+					return rowSpacingFlatButtons;
+				default:
+					throw new Exception ("Invalid Appearance value: " + tab.Appearance);
+			}
+		}
+		#endregion
+
+		public TabControlPainter ()
+		{
+			defaultItemSize = new Size (42, 16);
+			defaultPadding = new Point (6, 3);
+			selectedTabDelta = new Rectangle (2, 2, 4, 3);
+			selectedSpacing = 0;
+
+			rowSpacingNormal = new Size (0, 0);
+			rowSpacingButtons = new Size (3, 3);
+			rowSpacingFlatButtons = new Size (9, 3);
+			
+			colSpacing = 0;
+
+			minimumTabWidth = 42;
+			scrollerWidth = 17;
+			focusRectSpacing = new Point (2, 2);
+			tabPanelOffset = new Point (4, 0);
+			flatButtonSpacing = 8;
+			tabPageSpacing = new Rectangle (4, 2, 3, 4);
+
+			imagePadding = new Point (2, 3);
+
+			defaultFormatting = new StringFormat();
+			// Horizontal Alignment is handled in the Draw method
+			defaultFormatting.Alignment = StringAlignment.Near;
+			defaultFormatting.LineAlignment = StringAlignment.Center;
+			defaultFormatting.FormatFlags = StringFormatFlags.NoWrap | StringFormatFlags.NoClip;
+			defaultFormatting.HotkeyPrefix = HotkeyPrefix.Show;
+
+			borderThickness = new Rectangle (1, 1, 2, 2);
+		}
+
+		public virtual Rectangle GetLeftScrollRect (System.Windows.Forms.TabControl tab)
+		{
+			switch (tab.Alignment) {
+				case TabAlignment.Top:
+					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth * 2), tab.ClientRectangle.Top + 1, scrollerWidth, scrollerWidth);
+				default:
+					Rectangle panel_rect = GetTabPanelRect (tab);
+					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth * 2), panel_rect.Bottom + 2, scrollerWidth, scrollerWidth);
+			}
+		}
+
+		public virtual Rectangle GetRightScrollRect (System.Windows.Forms.TabControl tab)
+		{
+			switch (tab.Alignment) {
+				case TabAlignment.Top:
+					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth), tab.ClientRectangle.Top + 1, scrollerWidth, scrollerWidth);
+				default:
+					Rectangle panel_rect = GetTabPanelRect (tab);
+					return new Rectangle (tab.ClientRectangle.Right - (scrollerWidth), panel_rect.Bottom + 2, scrollerWidth, scrollerWidth);
+			}
+		}
+
+		public Rectangle GetDisplayRectangle (System.Windows.Forms.TabControl tab)
+		{
+			Rectangle ext = GetTabPanelRect (tab);
+			// Account for border size
+			return new Rectangle (ext.Left + tabPageSpacing.X, ext.Top + tabPageSpacing.Y, 
+				ext.Width - tabPageSpacing.X - tabPageSpacing.Width, ext.Height - tabPageSpacing.Y - tabPageSpacing.Height);
+		}
+		
+		public Rectangle GetTabPanelRect (System.Windows.Forms.TabControl tab)
+		{	
+			// Offset the tab page (panel) from the top corner
+			Rectangle res = tab.ClientRectangle;
+
+			if (tab.TabCount == 0)
+				return res;
+
+			int spacing = RowSpacing (tab).Height;
+			int tabOffset = (tab.ItemSize.Height + spacing - selectedTabDelta.Height) * tab.RowCount + selectedTabDelta.Y;
+			switch (tab.Alignment) {
+				case TabAlignment.Top:
+					res.Y += tabOffset;
+					res.Height -= tabOffset;
+					break;
+				case TabAlignment.Bottom:
+					res.Height -= tabOffset;
+					break;
+				case TabAlignment.Left:
+					res.X += tabOffset;
+					res.Width -= tabOffset;
+					break;
+				case TabAlignment.Right:
+					res.Width -= tabOffset;
+					break;
+			}
+
+			return res;
+		}
+
+		public virtual void Draw (Graphics dc, Rectangle area, TabControl tab)
+		{
+			DrawBackground (dc, area, tab);
+
+			int start = 0;
+			int end = tab.TabPages.Count;
+			int delta = 1;
+
+			if (tab.Alignment == TabAlignment.Top) {
+				start = end;
+				end = 0;
+				delta = -1;
+			}
+
+			if (tab.SizeMode == TabSizeMode.Fixed)
+				defaultFormatting.Alignment = StringAlignment.Center;
+			else
+				defaultFormatting.Alignment = StringAlignment.Near;
+
+			int counter = start;
+			for (; counter != end; counter += delta) {
+				for (int i = tab.SliderPos; i < tab.TabPages.Count; i++) {
+					if (i == tab.SelectedIndex)
+						continue;
+					if (counter != tab.TabPages[i].Row)
+						continue;
+					Rectangle rect = tab.GetTabRect (i);
+					if (!rect.IntersectsWith (area))
+						continue;
+					DrawTab (dc, tab.TabPages[i], tab, rect, false);
+				}
+			}
+
+			if (tab.SelectedIndex != -1 && tab.SelectedIndex >= tab.SliderPos) {
+				Rectangle rect = tab.GetTabRect (tab.SelectedIndex);
+				if (rect.IntersectsWith (area))
+					DrawTab (dc, tab.TabPages[tab.SelectedIndex], tab, rect, true);
+			}
+
+			if (tab.ShowSlider) {
+				Rectangle right = GetRightScrollRect (tab);
+				Rectangle left = GetLeftScrollRect (tab);
+				DrawScrollButton (dc, right, area, ScrollButton.Right, tab.RightSliderState);
+				DrawScrollButton (dc, left, area, ScrollButton.Left, tab.LeftSliderState);
+			}
+		}
+
+		protected virtual void DrawScrollButton (Graphics dc, Rectangle bounds, Rectangle clippingArea, ScrollButton button, PushButtonState state)
+		{
+			ControlPaint.DrawScrollButton (dc, bounds, button, GetButtonState (state));
+		}
+
+		static ButtonState GetButtonState (PushButtonState state)
+		{
+			switch (state) {
+			case PushButtonState.Pressed:
+				return ButtonState.Pushed;
+			default:
+				return ButtonState.Normal;
+			}
+		}
+
+		protected virtual void DrawBackground (Graphics dc, Rectangle area, TabControl tab)
+		{
+			Brush brush = SystemBrushes.Control;
+			dc.FillRectangle (brush, area);
+			Rectangle panel_rect = GetTabPanelRect (tab);
+
+			if (tab.Appearance == TabAppearance.Normal) {
+				ControlPaint.DrawBorder3D (dc, panel_rect, Border3DStyle.RaisedInner, Border3DSide.Left | Border3DSide.Top);
+				ControlPaint.DrawBorder3D (dc, panel_rect, Border3DStyle.Raised, Border3DSide.Right | Border3DSide.Bottom);
+			}
+		}
+
+		protected virtual int DrawTab (Graphics dc, System.Windows.Forms.TabPage page, System.Windows.Forms.TabControl tab, Rectangle bounds, bool is_selected)
+		{
+			Rectangle interior;
+			int res = bounds.Width;
+
+			dc.FillRectangle (ResPool.GetSolidBrush (tab.BackColor), bounds);
+
+			if (tab.Appearance == TabAppearance.Buttons || tab.Appearance == TabAppearance.FlatButtons) {
+				// Separators
+				if (tab.Appearance == TabAppearance.FlatButtons) {
+					int width = bounds.Width;
+					bounds.Width += (flatButtonSpacing - 2);
+					res = bounds.Width;
+					if (tab.Alignment == TabAlignment.Top || tab.Alignment == TabAlignment.Bottom)
+						ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Etched, Border3DSide.Right);
+					else
+						ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Etched, Border3DSide.Top);
+					bounds.Width = width;
+				}
+
+				if (is_selected) {
+					ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Sunken, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom);
+				} else if (tab.Appearance != TabAppearance.FlatButtons) {
+					ThemeEngine.Current.CPDrawBorder3D (dc, bounds, Border3DStyle.Raised, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom);
+				}
+
+
+			} else {
+				CPColor cpcolor = ResPool.GetCPColor (tab.BackColor);
+
+				Pen light = ResPool.GetPen (cpcolor.LightLight);
+
+				switch (tab.Alignment) {
+
+					case TabAlignment.Top:
+
+						dc.DrawLine (light, bounds.Left, bounds.Bottom - 1, bounds.Left, bounds.Top + 3);
+						dc.DrawLine (light, bounds.Left, bounds.Top + 3, bounds.Left + 2, bounds.Top);
+						dc.DrawLine (light, bounds.Left + 2, bounds.Top, bounds.Right - 3, bounds.Top);
+
+						dc.DrawLine (SystemPens.ControlDark, bounds.Right - 2, bounds.Top + 1, bounds.Right - 2, bounds.Bottom - 1);
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 2, bounds.Top + 1, bounds.Right - 1, bounds.Top + 2);
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 1, bounds.Top + 2, bounds.Right - 1, bounds.Bottom - 1);
+						break;
+
+					case TabAlignment.Bottom:
+
+						dc.DrawLine (light, bounds.Left, bounds.Top, bounds.Left, bounds.Bottom - 2);
+						dc.DrawLine (light, bounds.Left, bounds.Bottom - 2, bounds.Left + 3, bounds.Bottom);
+						
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Left + 3, bounds.Bottom, bounds.Right - 3, bounds.Bottom);
+						dc.DrawLine (SystemPens.ControlDark, bounds.Left + 3, bounds.Bottom - 1, bounds.Right - 3, bounds.Bottom - 1);
+
+						dc.DrawLine (SystemPens.ControlDark, bounds.Right - 2, bounds.Bottom - 1, bounds.Right - 2, bounds.Top + 1);
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 2, bounds.Bottom - 1, bounds.Right - 1, bounds.Bottom - 2);
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right - 1, bounds.Bottom - 2, bounds.Right - 1, bounds.Top + 1);
+
+						break;
+
+					case TabAlignment.Left:
+
+						dc.DrawLine (light, bounds.Left - 2, bounds.Top, bounds.Right, bounds.Top);
+						dc.DrawLine (light, bounds.Left, bounds.Top + 2, bounds.Left - 2, bounds.Top);
+						dc.DrawLine (light, bounds.Left, bounds.Top + 2, bounds.Left, bounds.Bottom - 2);
+
+						dc.DrawLine (SystemPens.ControlDark, bounds.Left, bounds.Bottom - 2, bounds.Left + 2, bounds.Bottom - 1);
+
+						dc.DrawLine (SystemPens.ControlDark, bounds.Left + 2, bounds.Bottom - 1, bounds.Right, bounds.Bottom - 1);
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Left + 2, bounds.Bottom, bounds.Right, bounds.Bottom);
+
+						break;
+
+					default: // TabAlignment.Right
+
+						dc.DrawLine (light, bounds.Left, bounds.Top, bounds.Right - 3, bounds.Top);
+						dc.DrawLine (light, bounds.Right - 3, bounds.Top, bounds.Right, bounds.Top + 3);
+
+						dc.DrawLine (SystemPens.ControlDark, bounds.Right - 1, bounds.Top + 1, bounds.Right - 1, bounds.Bottom - 1);
+						dc.DrawLine (SystemPens.ControlDark, bounds.Left, bounds.Bottom - 1, bounds.Right - 2, bounds.Bottom - 1);
+
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Right, bounds.Top + 3, bounds.Right, bounds.Bottom - 3);
+						dc.DrawLine (SystemPens.ControlDarkDark, bounds.Left, bounds.Bottom, bounds.Right - 3, bounds.Bottom);
+
+						break;
+				}
+			}
+
+			Point padding = tab.Padding;
+			interior = new Rectangle (bounds.Left + padding.X - 1, // substract a little offset
+				bounds.Top + padding.Y,
+				bounds.Width - (padding.X * 2), 
+				bounds.Height - (padding.Y * 2));
+
+			if (tab.DrawMode == TabDrawMode.Normal && page.Text != null) {
+				if (tab.Alignment == TabAlignment.Left) {
+					dc.TranslateTransform (bounds.Left, bounds.Bottom);
+					dc.RotateTransform (-90);
+					dc.DrawString (page.Text, tab.Font,
+						SystemBrushes.ControlText, 
+						tab.Padding.X - 2, // drawstring adds some extra unwanted leading spaces, so trimming
+						tab.Padding.Y,
+						defaultFormatting);
+					dc.ResetTransform ();
+				} else if (tab.Alignment == TabAlignment.Right) {
+					dc.TranslateTransform (bounds.Right, bounds.Top);
+					dc.RotateTransform (90);
+					dc.DrawString (page.Text, tab.Font,
+						SystemBrushes.ControlText, 
+						tab.Padding.X - 2, // drawstring adds some extra unwanted leading spaces, so trimming
+						tab.Padding.Y,
+						defaultFormatting);
+					dc.ResetTransform ();
+				} else {
+					Rectangle str_rect = interior;
+
+					if (is_selected) {
+						// Reduce the interior size to match the inner size of non-selected tabs
+						str_rect.X += selectedTabDelta.X;
+						str_rect.Y += selectedTabDelta.Y;
+						str_rect.Width -= selectedTabDelta.Width;
+						str_rect.Height -= selectedTabDelta.Height;
+
+						str_rect.Y -= selectedTabDelta.Y; // Move up the text / image of the selected tab
+					}
+
+					if (tab.ImageList != null && page.ImageIndex >= 0 && page.ImageIndex < tab.ImageList.Images.Count) {
+						int image_x;
+						if (tab.SizeMode != TabSizeMode.Fixed) {
+							image_x = str_rect.X;
+						}
+						else {
+							image_x = str_rect.X + (str_rect.Width - tab.ImageList.ImageSize.Width) / 2;
+							if (page.Text != null) {
+								SizeF textSize = dc.MeasureString(page.Text, page.Font, str_rect.Size);
+								image_x -= (int)(textSize.Width / 2);
+							}
+						}
+						int image_y = str_rect.Y + (str_rect.Height - tab.ImageList.ImageSize.Height) / 2;
+						tab.ImageList.Draw (dc, new Point (image_x, image_y), page.ImageIndex);
+						str_rect.X += tab.ImageList.ImageSize.Width + 2;
+						str_rect.Width -= tab.ImageList.ImageSize.Width + 2;
+					}
+					dc.DrawString (page.Text, tab.Font,
+						SystemBrushes.ControlText,
+						str_rect, 
+						defaultFormatting);
+
+				}
+			} else if (page.Text != null) {
+				DrawItemState state = DrawItemState.None;
+				if (page == tab.SelectedTab)
+					state |= DrawItemState.Selected;
+				DrawItemEventArgs e = new DrawItemEventArgs (dc,
+					tab.Font, bounds, tab.IndexForTabPage (page),
+					state, page.ForeColor, page.BackColor);
+				tab.OnDrawItemInternal (e);
+				return res;
+			}
+
+			// TabControl ignores the value of ShowFocusCues
+			if (page.Parent.Focused && is_selected) {
+				Rectangle focus_rect = bounds;
+				focus_rect.Inflate (-2, -2);
+				ThemeEngine.Current.CPDrawFocusRectangle (dc, focus_rect, tab.BackColor, tab.ForeColor);
+			}
+
+			return res;
+		}
+
+		public virtual bool HasHotElementStyles (TabControl tabControl) {
+			return false;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/ToolStripPainter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/Default/ToolStripPainter.cs
@@ -1,189 +1,189 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-
-using System;
-using System.Drawing;
-
-namespace System.Windows.Forms.Theming.Default
-{
-	internal class ToolStripPainter
-	{
-		public ToolStripPainter ()
-		{
-		}
-
-		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
-		
-		#region Painting
-		public virtual void OnRenderButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			if (e.Item.Enabled == false)
-				return;
-
-			Rectangle paint_here = new Rectangle (0, 0, e.Item.Width, e.Item.Height);
-			
-			ToolStripButton tsb = e.Item as ToolStripButton;
-			
-			if (e.Item.Pressed || (tsb != null && tsb.Checked))
-				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
-			else if (e.Item.Selected)
-				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
-			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
-				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
-		}
-
-		public virtual void OnRenderDropDownButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			if (e.Item.Enabled == false)
-				return;
-
-			Rectangle paint_here = new Rectangle (0, 0, e.Item.Width, e.Item.Height);
-
-			if (e.Item.Pressed)
-				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
-			else if (e.Item.Selected)
-				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
-			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
-				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
-		}
-
-		public virtual void OnRenderGrip (ToolStripGripRenderEventArgs e)
-		{
-			if (e.GripStyle == ToolStripGripStyle.Hidden)
-				return;
-
-			if (e.GripDisplayStyle == ToolStripGripDisplayStyle.Vertical) {
-				e.Graphics.DrawLine (Pens.White, 0, 2, 1, 2);
-				e.Graphics.DrawLine (Pens.White, 0, 2, 0, e.GripBounds.Height - 3);
-				e.Graphics.DrawLine (SystemPens.ControlDark, 2, 2, 2, e.GripBounds.Height - 3);
-				e.Graphics.DrawLine (SystemPens.ControlDark, 2, e.GripBounds.Height - 3, 0, e.GripBounds.Height - 3);
-			}
-			else {
-				e.Graphics.DrawLine (Pens.White, 2, 0, e.GripBounds.Width - 3, 0);
-				e.Graphics.DrawLine (Pens.White, 2, 0, 2, 1);
-				e.Graphics.DrawLine (SystemPens.ControlDark, e.GripBounds.Width - 3, 0, e.GripBounds.Width - 3, 2);
-				e.Graphics.DrawLine (SystemPens.ControlDark, 2, 2, e.GripBounds.Width - 3, 2);
-			}
-		}
-
-		public virtual void OnRenderMenuItemBackground (ToolStripItemRenderEventArgs e)
-		{
-			ToolStripMenuItem tsmi = (ToolStripMenuItem)e.Item;
-			Rectangle paint_here = new Rectangle (Point.Empty, tsmi.Size);
-			
-			if (tsmi.IsOnDropDown) {
-				// Drop down menu item
-				if (e.Item.Selected || e.Item.Pressed)
-					e.Graphics.FillRectangle (SystemBrushes.Highlight, paint_here);
-			} else {
-				// Top level menu item
-				if (e.Item.Pressed)
-					ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
-				else if (e.Item.Selected)
-					ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
-				else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
-					e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
-			}
-		}
-
-		public virtual void OnRenderOverflowButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			Rectangle paint_here = new Rectangle (Point.Empty, e.Item.Size);
-
-			if (e.Item.Pressed)
-				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
-			else if (e.Item.Selected)
-				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
-			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
-				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
-
-			// Paint the arrow
-			ToolStripRenderer.DrawDownArrow (e.Graphics, SystemPens.ControlText, e.Item.Width / 2 - 3, e.Item.Height / 2 - 1);
-		}
-
-		public virtual void OnRenderSeparator (ToolStripSeparatorRenderEventArgs e)
-		{
-			if (e.Vertical) {
-				e.Graphics.DrawLine (Pens.White, 4, 3, 4, e.Item.Height - 1);
-				e.Graphics.DrawLine (SystemPens.ControlDark, 3, 3, 3, e.Item.Height - 1);
-			} else {
-				if (!e.Item.IsOnDropDown) {
-					e.Graphics.DrawLine (Pens.White, 2, 4, e.Item.Right - 1, 4);
-					e.Graphics.DrawLine (SystemPens.ControlDark, 2, 3, e.Item.Right - 1, 3);
-				} else {
-					e.Graphics.DrawLine (Pens.White, 3, 4, e.Item.Right - 4, 4);
-					e.Graphics.DrawLine (SystemPens.ControlDark, 3, 3, e.Item.Right - 4, 3);
-				}
-			}
-		}
-		
-		public virtual void OnRenderSplitButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			ToolStripSplitButton tssb = (ToolStripSplitButton)e.Item;
-
-			Rectangle button_part = new Rectangle (Point.Empty, tssb.ButtonBounds.Size);
-			Point drop_start = new Point (tssb.Width - tssb.DropDownButtonBounds.Width, 0);
-			Rectangle drop_part = new Rectangle (drop_start, tssb.DropDownButtonBounds.Size);
-
-			// Regular button part
-			if (tssb.ButtonPressed)
-				ControlPaint.DrawBorder3D (e.Graphics, button_part, Border3DStyle.SunkenOuter);
-			else if (tssb.ButtonSelected)
-				ControlPaint.DrawBorder3D (e.Graphics, button_part, Border3DStyle.RaisedInner);
-			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
-				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), button_part);
-
-			// Drop down button part
-			if (tssb.DropDownButtonPressed || tssb.ButtonPressed)
-				ControlPaint.DrawBorder3D (e.Graphics, drop_part, Border3DStyle.SunkenOuter);
-			else if (tssb.DropDownButtonSelected || tssb.ButtonSelected)
-				ControlPaint.DrawBorder3D (e.Graphics, drop_part, Border3DStyle.RaisedInner);
-			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
-				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), drop_part);
-		}
-
-		public virtual void OnRenderToolStripBackground (ToolStripRenderEventArgs e)
-		{
-			if (e.ToolStrip.BackgroundImage == null)
-				e.Graphics.Clear (e.BackColor);
-
-			if (e.ToolStrip is StatusStrip)
-				e.Graphics.DrawLine (Pens.White, e.AffectedBounds.Left, e.AffectedBounds.Top, e.AffectedBounds.Right, e.AffectedBounds.Top);
-		}
-
-		public virtual void OnRenderToolStripBorder (ToolStripRenderEventArgs e)
-		{
-			if (e.ToolStrip is StatusStrip)
-				return;
-				
-			if (e.ToolStrip is ToolStripDropDown)
-				ControlPaint.DrawBorder3D (e.Graphics, e.AffectedBounds, Border3DStyle.Raised);
-			else {
-				e.Graphics.DrawLine (SystemPens.ControlDark, new Point (e.ToolStrip.Left, e.ToolStrip.Height - 2), new Point (e.ToolStrip.Right, e.ToolStrip.Height - 2));
-				e.Graphics.DrawLine (Pens.White, new Point (e.ToolStrip.Left, e.ToolStrip.Height - 1), new Point (e.ToolStrip.Right, e.ToolStrip.Height - 1));
-			}
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+
+using System;
+using System.Drawing;
+
+namespace System.Windows.Forms.Theming.Default
+{
+	internal class ToolStripPainter
+	{
+		public ToolStripPainter ()
+		{
+		}
+
+		protected SystemResPool ResPool { get { return ThemeEngine.Current.ResPool; } }
+		
+		#region Painting
+		public virtual void OnRenderButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			if (e.Item.Enabled == false)
+				return;
+
+			Rectangle paint_here = new Rectangle (0, 0, e.Item.Width, e.Item.Height);
+			
+			ToolStripButton tsb = e.Item as ToolStripButton;
+			
+			if (e.Item.Pressed || (tsb != null && tsb.Checked))
+				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
+			else if (e.Item.Selected)
+				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
+			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
+				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
+		}
+
+		public virtual void OnRenderDropDownButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			if (e.Item.Enabled == false)
+				return;
+
+			Rectangle paint_here = new Rectangle (0, 0, e.Item.Width, e.Item.Height);
+
+			if (e.Item.Pressed)
+				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
+			else if (e.Item.Selected)
+				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
+			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
+				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
+		}
+
+		public virtual void OnRenderGrip (ToolStripGripRenderEventArgs e)
+		{
+			if (e.GripStyle == ToolStripGripStyle.Hidden)
+				return;
+
+			if (e.GripDisplayStyle == ToolStripGripDisplayStyle.Vertical) {
+				e.Graphics.DrawLine (Pens.White, 0, 2, 1, 2);
+				e.Graphics.DrawLine (Pens.White, 0, 2, 0, e.GripBounds.Height - 3);
+				e.Graphics.DrawLine (SystemPens.ControlDark, 2, 2, 2, e.GripBounds.Height - 3);
+				e.Graphics.DrawLine (SystemPens.ControlDark, 2, e.GripBounds.Height - 3, 0, e.GripBounds.Height - 3);
+			}
+			else {
+				e.Graphics.DrawLine (Pens.White, 2, 0, e.GripBounds.Width - 3, 0);
+				e.Graphics.DrawLine (Pens.White, 2, 0, 2, 1);
+				e.Graphics.DrawLine (SystemPens.ControlDark, e.GripBounds.Width - 3, 0, e.GripBounds.Width - 3, 2);
+				e.Graphics.DrawLine (SystemPens.ControlDark, 2, 2, e.GripBounds.Width - 3, 2);
+			}
+		}
+
+		public virtual void OnRenderMenuItemBackground (ToolStripItemRenderEventArgs e)
+		{
+			ToolStripMenuItem tsmi = (ToolStripMenuItem)e.Item;
+			Rectangle paint_here = new Rectangle (Point.Empty, tsmi.Size);
+			
+			if (tsmi.IsOnDropDown) {
+				// Drop down menu item
+				if (e.Item.Selected || e.Item.Pressed)
+					e.Graphics.FillRectangle (SystemBrushes.Highlight, paint_here);
+			} else {
+				// Top level menu item
+				if (e.Item.Pressed)
+					ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
+				else if (e.Item.Selected)
+					ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
+				else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
+					e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
+			}
+		}
+
+		public virtual void OnRenderOverflowButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			Rectangle paint_here = new Rectangle (Point.Empty, e.Item.Size);
+
+			if (e.Item.Pressed)
+				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.SunkenOuter);
+			else if (e.Item.Selected)
+				ControlPaint.DrawBorder3D (e.Graphics, paint_here, Border3DStyle.RaisedInner);
+			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
+				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), paint_here);
+
+			// Paint the arrow
+			ToolStripRenderer.DrawDownArrow (e.Graphics, SystemPens.ControlText, e.Item.Width / 2 - 3, e.Item.Height / 2 - 1);
+		}
+
+		public virtual void OnRenderSeparator (ToolStripSeparatorRenderEventArgs e)
+		{
+			if (e.Vertical) {
+				e.Graphics.DrawLine (Pens.White, 4, 3, 4, e.Item.Height - 1);
+				e.Graphics.DrawLine (SystemPens.ControlDark, 3, 3, 3, e.Item.Height - 1);
+			} else {
+				if (!e.Item.IsOnDropDown) {
+					e.Graphics.DrawLine (Pens.White, 2, 4, e.Item.Right - 1, 4);
+					e.Graphics.DrawLine (SystemPens.ControlDark, 2, 3, e.Item.Right - 1, 3);
+				} else {
+					e.Graphics.DrawLine (Pens.White, 3, 4, e.Item.Right - 4, 4);
+					e.Graphics.DrawLine (SystemPens.ControlDark, 3, 3, e.Item.Right - 4, 3);
+				}
+			}
+		}
+		
+		public virtual void OnRenderSplitButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			ToolStripSplitButton tssb = (ToolStripSplitButton)e.Item;
+
+			Rectangle button_part = new Rectangle (Point.Empty, tssb.ButtonBounds.Size);
+			Point drop_start = new Point (tssb.Width - tssb.DropDownButtonBounds.Width, 0);
+			Rectangle drop_part = new Rectangle (drop_start, tssb.DropDownButtonBounds.Size);
+
+			// Regular button part
+			if (tssb.ButtonPressed)
+				ControlPaint.DrawBorder3D (e.Graphics, button_part, Border3DStyle.SunkenOuter);
+			else if (tssb.ButtonSelected)
+				ControlPaint.DrawBorder3D (e.Graphics, button_part, Border3DStyle.RaisedInner);
+			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
+				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), button_part);
+
+			// Drop down button part
+			if (tssb.DropDownButtonPressed || tssb.ButtonPressed)
+				ControlPaint.DrawBorder3D (e.Graphics, drop_part, Border3DStyle.SunkenOuter);
+			else if (tssb.DropDownButtonSelected || tssb.ButtonSelected)
+				ControlPaint.DrawBorder3D (e.Graphics, drop_part, Border3DStyle.RaisedInner);
+			else if (e.Item.BackColor != Control.DefaultBackColor && e.Item.BackColor != Color.Empty)
+				e.Graphics.FillRectangle (ResPool.GetSolidBrush (e.Item.BackColor), drop_part);
+		}
+
+		public virtual void OnRenderToolStripBackground (ToolStripRenderEventArgs e)
+		{
+			if (e.ToolStrip.BackgroundImage == null)
+				e.Graphics.Clear (e.BackColor);
+
+			if (e.ToolStrip is StatusStrip)
+				e.Graphics.DrawLine (Pens.White, e.AffectedBounds.Left, e.AffectedBounds.Top, e.AffectedBounds.Right, e.AffectedBounds.Top);
+		}
+
+		public virtual void OnRenderToolStripBorder (ToolStripRenderEventArgs e)
+		{
+			if (e.ToolStrip is StatusStrip)
+				return;
+				
+			if (e.ToolStrip is ToolStripDropDown)
+				ControlPaint.DrawBorder3D (e.Graphics, e.AffectedBounds, Border3DStyle.Raised);
+			else {
+				e.Graphics.DrawLine (SystemPens.ControlDark, new Point (e.ToolStrip.Left, e.ToolStrip.Height - 2), new Point (e.ToolStrip.Right, e.ToolStrip.Height - 2));
+				e.Graphics.DrawLine (Pens.White, new Point (e.ToolStrip.Left, e.ToolStrip.Height - 1), new Point (e.ToolStrip.Right, e.ToolStrip.Height - 1));
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/ThemeElements.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/ThemeElements.cs
@@ -1,142 +1,142 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//	Everaldo Canuto  <ecanuto@novell.com>
-
-using System;
-using System.Drawing;
-using System.Reflection;
-
-namespace System.Windows.Forms.Theming
-{
-	internal class ThemeElements
-	{
-		private static ThemeElementsDefault theme;
-		public static ThemeElementsDefault CurrentTheme {
-			get { return theme; }
-		}
-
-		static ThemeElements ()
-		{
-			string theme_var;
-
-			theme_var = Environment.GetEnvironmentVariable ("MONO_THEME");
-
-			if (theme_var == null)
-				theme_var = "win32";
-			else
-				theme_var = theme_var.ToLower ();
-	
-			theme = LoadTheme (theme_var);
-
-		}
-
-		private static ThemeElementsDefault LoadTheme (string themeName) 
-		{
-			if (themeName == "visualstyles")
-				if (Application.VisualStylesEnabled)
-					return new ThemeElementsVisualStyles ();
-				else
-					return new ThemeElementsDefault ();
-			Assembly ass = Assembly.GetExecutingAssembly ();
-			string iname = typeof(ThemeElements).FullName;
-			string assemblyname = iname + themeName;
-			Type type = ass.GetType (assemblyname, false, true);
-			if (type != null) {
-				object o = ass.CreateInstance (type.FullName);
-				if (o != null)
-					return (ThemeElementsDefault) o;
-			}
-			return new ThemeElementsDefault ();
-		}
-
-		#region Buttons
-		public static void DrawButton (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor)
-		{
-			theme.ButtonPainter.Draw (g, bounds, state, backColor, foreColor);
-		}
-
-		public static void DrawFlatButton (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor, FlatButtonAppearance appearance)
-		{
-			theme.ButtonPainter.DrawFlat (g, bounds, state, backColor, foreColor, appearance);
-		}
-
-		public static void DrawPopupButton (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor)
-		{
-			theme.ButtonPainter.DrawPopup (g, bounds, state, backColor, foreColor);
-		}
-		#endregion
-		
-		#region Painters
-
-		public virtual Default.ButtonPainter ButtonPainter {
-			get { return theme.ButtonPainter; }
-		}
-
-		public static Default.LabelPainter LabelPainter	{
-			get { return theme.LabelPainter; }
-		}
-
-		public static Default.LinkLabelPainter LinkLabelPainter	{
-			get { return theme.LinkLabelPainter; }
-		}
-
-		public virtual Default.TabControlPainter TabControlPainter {
-			get { return theme.TabControlPainter; }
-		}
-
-		public virtual Default.CheckBoxPainter CheckBoxPainter {
-			get { return theme.CheckBoxPainter; }
-		}
-
-		public virtual Default.RadioButtonPainter RadioButtonPainter {
-			get { return theme.RadioButtonPainter; }
-		}
-
-		public virtual Default.ToolStripPainter ToolStripPainter {
-			get { return theme.ToolStripPainter; }
-		}
-
-		#endregion
-	}
-
-	#region Internal Enums
-	[Flags]
-	internal enum ButtonThemeState
-	{
-		Normal = 1,
-		Entered = 2,
-		Pressed = 4,
-		Disabled = 8,
-		Default = 16
-	}
-
-	internal enum ElementState
-	{
-		Normal = 1,
-		Hot = 2,
-		Pressed = 3,
-		Disabled = 4
-	}
-	#endregion
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//	Everaldo Canuto  <ecanuto@novell.com>
+
+using System;
+using System.Drawing;
+using System.Reflection;
+
+namespace System.Windows.Forms.Theming
+{
+	internal class ThemeElements
+	{
+		private static ThemeElementsDefault theme;
+		public static ThemeElementsDefault CurrentTheme {
+			get { return theme; }
+		}
+
+		static ThemeElements ()
+		{
+			string theme_var;
+
+			theme_var = Environment.GetEnvironmentVariable ("MONO_THEME");
+
+			if (theme_var == null)
+				theme_var = "win32";
+			else
+				theme_var = theme_var.ToLower ();
+	
+			theme = LoadTheme (theme_var);
+
+		}
+
+		private static ThemeElementsDefault LoadTheme (string themeName) 
+		{
+			if (themeName == "visualstyles")
+				if (Application.VisualStylesEnabled)
+					return new ThemeElementsVisualStyles ();
+				else
+					return new ThemeElementsDefault ();
+			Assembly ass = Assembly.GetExecutingAssembly ();
+			string iname = typeof(ThemeElements).FullName;
+			string assemblyname = iname + themeName;
+			Type type = ass.GetType (assemblyname, false, true);
+			if (type != null) {
+				object o = ass.CreateInstance (type.FullName);
+				if (o != null)
+					return (ThemeElementsDefault) o;
+			}
+			return new ThemeElementsDefault ();
+		}
+
+		#region Buttons
+		public static void DrawButton (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor)
+		{
+			theme.ButtonPainter.Draw (g, bounds, state, backColor, foreColor);
+		}
+
+		public static void DrawFlatButton (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor, FlatButtonAppearance appearance)
+		{
+			theme.ButtonPainter.DrawFlat (g, bounds, state, backColor, foreColor, appearance);
+		}
+
+		public static void DrawPopupButton (Graphics g, Rectangle bounds, ButtonThemeState state, Color backColor, Color foreColor)
+		{
+			theme.ButtonPainter.DrawPopup (g, bounds, state, backColor, foreColor);
+		}
+		#endregion
+		
+		#region Painters
+
+		public virtual Default.ButtonPainter ButtonPainter {
+			get { return theme.ButtonPainter; }
+		}
+
+		public static Default.LabelPainter LabelPainter	{
+			get { return theme.LabelPainter; }
+		}
+
+		public static Default.LinkLabelPainter LinkLabelPainter	{
+			get { return theme.LinkLabelPainter; }
+		}
+
+		public virtual Default.TabControlPainter TabControlPainter {
+			get { return theme.TabControlPainter; }
+		}
+
+		public virtual Default.CheckBoxPainter CheckBoxPainter {
+			get { return theme.CheckBoxPainter; }
+		}
+
+		public virtual Default.RadioButtonPainter RadioButtonPainter {
+			get { return theme.RadioButtonPainter; }
+		}
+
+		public virtual Default.ToolStripPainter ToolStripPainter {
+			get { return theme.ToolStripPainter; }
+		}
+
+		#endregion
+	}
+
+	#region Internal Enums
+	[Flags]
+	internal enum ButtonThemeState
+	{
+		Normal = 1,
+		Entered = 2,
+		Pressed = 4,
+		Disabled = 8,
+		Default = 16
+	}
+
+	internal enum ElementState
+	{
+		Normal = 1,
+		Hot = 2,
+		Pressed = 3,
+		Disabled = 4
+	}
+	#endregion
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/ThemeElementsDefault.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.Theming/ThemeElementsDefault.cs
@@ -1,95 +1,95 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//	Andreia Gaita (avidigal@novell.com)
-
-using System;
-
-namespace System.Windows.Forms.Theming
-{
-	internal class ThemeElementsDefault
-	{
-		protected Default.TabControlPainter tabControlPainter;
-		public virtual Default.TabControlPainter TabControlPainter {
-			get {
-				if (tabControlPainter == null)
-					tabControlPainter = new Default.TabControlPainter ();
-				return tabControlPainter;
-			}
-		}
-
-		protected Default.ButtonPainter buttonPainter;
-		public virtual Default.ButtonPainter ButtonPainter {
-			get {
-				if (buttonPainter == null)
-					buttonPainter = new Default.ButtonPainter ();
-				return buttonPainter;
-			}
-		}
-
-		protected Default.LabelPainter labelPainter;
-		public virtual Default.LabelPainter LabelPainter {
-			get {
-				if (labelPainter == null)
-					labelPainter = new Default.LabelPainter ();
-				return labelPainter;
-			}
-		}
-
-		protected Default.LinkLabelPainter linklabelPainter;
-		public virtual Default.LinkLabelPainter LinkLabelPainter {
-			get {
-				if (linklabelPainter == null)
-					linklabelPainter = new Default.LinkLabelPainter ();
-				return linklabelPainter;
-			}
-		}
-
-		protected Default.ToolStripPainter toolStripPainter;
-		public virtual Default.ToolStripPainter ToolStripPainter {
-			get {
-				if (toolStripPainter == null)
-					toolStripPainter = new Default.ToolStripPainter ();
-				return toolStripPainter;
-			}
-		}
-
-		protected Default.CheckBoxPainter checkBoxPainter;
-		public virtual Default.CheckBoxPainter CheckBoxPainter {
-			get {
-				if (checkBoxPainter == null)
-					checkBoxPainter = new Default.CheckBoxPainter ();
-				return checkBoxPainter;
-			}
-		}
-
-		protected Default.RadioButtonPainter radioButtonPainter;
-		public virtual Default.RadioButtonPainter RadioButtonPainter {
-			get {
-				if (radioButtonPainter == null)
-					radioButtonPainter = new Default.RadioButtonPainter ();
-				return radioButtonPainter;
-			}
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//	Andreia Gaita (avidigal@novell.com)
+
+using System;
+
+namespace System.Windows.Forms.Theming
+{
+	internal class ThemeElementsDefault
+	{
+		protected Default.TabControlPainter tabControlPainter;
+		public virtual Default.TabControlPainter TabControlPainter {
+			get {
+				if (tabControlPainter == null)
+					tabControlPainter = new Default.TabControlPainter ();
+				return tabControlPainter;
+			}
+		}
+
+		protected Default.ButtonPainter buttonPainter;
+		public virtual Default.ButtonPainter ButtonPainter {
+			get {
+				if (buttonPainter == null)
+					buttonPainter = new Default.ButtonPainter ();
+				return buttonPainter;
+			}
+		}
+
+		protected Default.LabelPainter labelPainter;
+		public virtual Default.LabelPainter LabelPainter {
+			get {
+				if (labelPainter == null)
+					labelPainter = new Default.LabelPainter ();
+				return labelPainter;
+			}
+		}
+
+		protected Default.LinkLabelPainter linklabelPainter;
+		public virtual Default.LinkLabelPainter LinkLabelPainter {
+			get {
+				if (linklabelPainter == null)
+					linklabelPainter = new Default.LinkLabelPainter ();
+				return linklabelPainter;
+			}
+		}
+
+		protected Default.ToolStripPainter toolStripPainter;
+		public virtual Default.ToolStripPainter ToolStripPainter {
+			get {
+				if (toolStripPainter == null)
+					toolStripPainter = new Default.ToolStripPainter ();
+				return toolStripPainter;
+			}
+		}
+
+		protected Default.CheckBoxPainter checkBoxPainter;
+		public virtual Default.CheckBoxPainter CheckBoxPainter {
+			get {
+				if (checkBoxPainter == null)
+					checkBoxPainter = new Default.CheckBoxPainter ();
+				return checkBoxPainter;
+			}
+		}
+
+		protected Default.RadioButtonPainter radioButtonPainter;
+		public virtual Default.RadioButtonPainter RadioButtonPainter {
+			get {
+				if (radioButtonPainter == null)
+					radioButtonPainter = new Default.RadioButtonPainter ();
+				return radioButtonPainter;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/AlertCheck.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/AlertCheck.cs
@@ -1,61 +1,61 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace System.Windows.Forms.WebBrowserDialogs
-{
-	internal class AlertCheck : Generic
-	{
-		private bool check;
-		public bool Checked {
-			get { return check; }
-		}
-
-		public AlertCheck (string title, string text, string checkMessage, bool checkState)
-			: base (title)
-		{
-			InitTable (3, 1);
-
-			AddLabel (0, 0, 0, text, -1, -1);
-			AddCheck (1, 0, 0, checkMessage, checkState, -1, -1, new EventHandler (CheckedChanged));
-			AddButton (2, 0, 0, "OK", -1, -1, true, false, new EventHandler (OkClick));
-		}
-
-		private void OkClick (object sender, EventArgs e)
-		{
-			this.DialogResult = DialogResult.OK;
-			this.Close ();
-		}
-
-		private void CheckedChanged (object sender, EventArgs e)
-		{
-			CheckBox c = sender as CheckBox;
-			check = c.Checked;
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Windows.Forms.WebBrowserDialogs
+{
+	internal class AlertCheck : Generic
+	{
+		private bool check;
+		public bool Checked {
+			get { return check; }
+		}
+
+		public AlertCheck (string title, string text, string checkMessage, bool checkState)
+			: base (title)
+		{
+			InitTable (3, 1);
+
+			AddLabel (0, 0, 0, text, -1, -1);
+			AddCheck (1, 0, 0, checkMessage, checkState, -1, -1, new EventHandler (CheckedChanged));
+			AddButton (2, 0, 0, "OK", -1, -1, true, false, new EventHandler (OkClick));
+		}
+
+		private void OkClick (object sender, EventArgs e)
+		{
+			this.DialogResult = DialogResult.OK;
+			this.Close ();
+		}
+
+		private void CheckedChanged (object sender, EventArgs e)
+		{
+			CheckBox c = sender as CheckBox;
+			check = c.Checked;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/ConfirmCheck.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/ConfirmCheck.cs
@@ -1,69 +1,69 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace System.Windows.Forms.WebBrowserDialogs
-{
-	internal class ConfirmCheck : Generic
-	{
-		private bool check;
-		public bool Checked
-		{
-			get { return check; }
-		}
-
-		public ConfirmCheck (string title, string text, string checkMessage, bool checkState)
-			: base (title)
-		{
-			InitTable (3, 2);
-
-			AddLabel (0, 0, 2, text, -1, -1);
-			AddCheck (1, 0, 2, checkMessage, checkState, -1, -1, new EventHandler (CheckedChanged));
-			AddButton (2, 0, 0, Locale.GetText ("OK"), -1, -1, true, false, new EventHandler (OkClick));
-			AddButton (2, 1, 0, Locale.GetText ("Cancel"), -1, -1, false, true, new EventHandler (CancelClick));
-		}
-
-		private void OkClick (object sender, EventArgs e)
-		{
-			this.DialogResult = DialogResult.OK;
-			this.Close ();
-		}
-
-		private void CancelClick (object sender, EventArgs e)
-		{
-			this.DialogResult = DialogResult.Cancel;
-			this.Close ();
-		}
-
-		private void CheckedChanged (object sender, EventArgs e)
-		{
-			CheckBox c = sender as CheckBox;
-			check = c.Checked;
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Windows.Forms.WebBrowserDialogs
+{
+	internal class ConfirmCheck : Generic
+	{
+		private bool check;
+		public bool Checked
+		{
+			get { return check; }
+		}
+
+		public ConfirmCheck (string title, string text, string checkMessage, bool checkState)
+			: base (title)
+		{
+			InitTable (3, 2);
+
+			AddLabel (0, 0, 2, text, -1, -1);
+			AddCheck (1, 0, 2, checkMessage, checkState, -1, -1, new EventHandler (CheckedChanged));
+			AddButton (2, 0, 0, Locale.GetText ("OK"), -1, -1, true, false, new EventHandler (OkClick));
+			AddButton (2, 1, 0, Locale.GetText ("Cancel"), -1, -1, false, true, new EventHandler (CancelClick));
+		}
+
+		private void OkClick (object sender, EventArgs e)
+		{
+			this.DialogResult = DialogResult.OK;
+			this.Close ();
+		}
+
+		private void CancelClick (object sender, EventArgs e)
+		{
+			this.DialogResult = DialogResult.Cancel;
+			this.Close ();
+		}
+
+		private void CheckedChanged (object sender, EventArgs e)
+		{
+			CheckBox c = sender as CheckBox;
+			check = c.Checked;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/Generic.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/Generic.cs
@@ -1,191 +1,191 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
-using System.Drawing;
-
-namespace System.Windows.Forms.WebBrowserDialogs
-{
-	internal class Generic : Form
-	{
-		TableLayoutPanel table;
-
-		public Generic (string title)
-		{
-			this.SuspendLayout ();
-			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-			this.AutoSize = true;
-			this.ControlBox = true;
-			this.MinimizeBox = false;
-			this.MaximizeBox = false;
-			this.ShowInTaskbar = (Owner == null);
-			this.FormBorderStyle = FormBorderStyle.FixedDialog;
-
-			table = new TableLayoutPanel ();
-			table.SuspendLayout ();
-			table.AutoSize = true;
-			this.Controls.Add (table);
-
-			this.Text = title;
-		}
-
-		public new DialogResult Show ()
-		{
-			return this.RunDialog ();
-		}
-
-		private void InitSize ()
-		{
-		}
-
-		protected void InitTable (int rows, int cols)
-		{
-			table.ColumnCount = cols;
-			for (int i = 0; i < cols; i++)
-				table.ColumnStyles.Add (new ColumnStyle ());
-			table.RowCount = rows;
-			for (int i = 0; i < rows; i++)
-				table.RowStyles.Add (new RowStyle ());
-		}
-
-		protected void AddLabel (int row, int col, int colspan, string text, int width, int height)
-		{
-			Label ctl = new Label ();
-			ctl.Text = text;
-			if (width == -1 && height == -1)
-				ctl.AutoSize = true;
-			else {
-				ctl.Width = width;
-				ctl.Height = height;
-			}
-			table.Controls.Add (ctl, col, row);
-			if (colspan > 1)
-				table.SetColumnSpan (ctl, colspan);
-		}
-
-		protected void AddButton (int row, int col, int colspan, string text, int width, int height, bool isAccept, bool isCancel, EventHandler onClick)
-		{
-			Button ctl = new Button ();
-			ctl.Text = text;
-			if (width == -1 && height == -1) {
-				//SizeF s = TextRenderer.MeasureString (text, ctl.Font);
-				//ctl.Width = (int) ((float) s.Width / 62f);
-				//ctl.Height = (int)s.Height;
-			} else {
-				ctl.Width = width;
-				ctl.Height = height;
-			}
-
-			if (onClick != null)
-				ctl.Click += onClick;
-			if (isAccept)
-				AcceptButton = ctl;
-			if (isCancel)
-				CancelButton = ctl;
-			table.Controls.Add (ctl, col, row);
-			if (colspan > 1)
-				table.SetColumnSpan (ctl, colspan);
-		}
-
-		protected void AddCheck (int row, int col, int colspan, string text, bool check, int width, int height, EventHandler onCheck)
-		{
-			CheckBox ctl = new CheckBox ();
-			ctl.Text = text;
-			ctl.Checked = check;
-
-			if (width == -1 && height == -1) {
-				SizeF s = TextRenderer.MeasureString (text, ctl.Font);
-				ctl.Width += (int) ((float) s.Width / 62f);
-				if (s.Height > ctl.Height)
-					ctl.Height = (int) s.Height;
-			} else {
-				ctl.Width = width;
-				ctl.Height = height;
-			}
-
-			if (onCheck != null)
-				ctl.CheckedChanged += onCheck;
-
-			table.Controls.Add (ctl, col, row);
-			if (colspan > 1)
-				table.SetColumnSpan (ctl, colspan);
-		}
-
-		protected void AddText (int row, int col, int colspan, string text, int width, int height, EventHandler onText)
-		{
-			TextBox ctl = new TextBox ();
-			ctl.Text = text;
-
-			if (width > -1)
-				ctl.Width = width;
-			if (height > -1)
-				ctl.Height = height;
-
-			if (onText != null)
-				ctl.TextChanged += onText;
-
-			table.Controls.Add (ctl, col, row);
-			if (colspan > 1)
-				table.SetColumnSpan (ctl, colspan);
-		}
-
-		protected void AddPassword (int row, int col, int colspan, string text, int width, int height, EventHandler onText)
-		{
-			TextBox ctl = new TextBox ();
-			ctl.PasswordChar = '*';
-			ctl.Text = text;
-
-			if (width > -1)
-				ctl.Width = width;
-			if (height > -1)
-				ctl.Height = height;
-
-			if (onText != null)
-				ctl.TextChanged += onText;
-
-			table.Controls.Add (ctl, col, row);
-			if (colspan > 1)
-				table.SetColumnSpan (ctl, colspan);
-		}
-
-		protected DialogResult RunDialog ()
-		{
-			this.StartPosition = FormStartPosition.CenterScreen;
-
-			InitSize ();
-
-			table.ResumeLayout (false);
-			table.PerformLayout ();
-			this.ResumeLayout (false);
-			this.PerformLayout ();
-
-			this.ShowDialog ();
-
-			return this.DialogResult;
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using System.Drawing;
+
+namespace System.Windows.Forms.WebBrowserDialogs
+{
+	internal class Generic : Form
+	{
+		TableLayoutPanel table;
+
+		public Generic (string title)
+		{
+			this.SuspendLayout ();
+			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+			this.AutoSize = true;
+			this.ControlBox = true;
+			this.MinimizeBox = false;
+			this.MaximizeBox = false;
+			this.ShowInTaskbar = (Owner == null);
+			this.FormBorderStyle = FormBorderStyle.FixedDialog;
+
+			table = new TableLayoutPanel ();
+			table.SuspendLayout ();
+			table.AutoSize = true;
+			this.Controls.Add (table);
+
+			this.Text = title;
+		}
+
+		public new DialogResult Show ()
+		{
+			return this.RunDialog ();
+		}
+
+		private void InitSize ()
+		{
+		}
+
+		protected void InitTable (int rows, int cols)
+		{
+			table.ColumnCount = cols;
+			for (int i = 0; i < cols; i++)
+				table.ColumnStyles.Add (new ColumnStyle ());
+			table.RowCount = rows;
+			for (int i = 0; i < rows; i++)
+				table.RowStyles.Add (new RowStyle ());
+		}
+
+		protected void AddLabel (int row, int col, int colspan, string text, int width, int height)
+		{
+			Label ctl = new Label ();
+			ctl.Text = text;
+			if (width == -1 && height == -1)
+				ctl.AutoSize = true;
+			else {
+				ctl.Width = width;
+				ctl.Height = height;
+			}
+			table.Controls.Add (ctl, col, row);
+			if (colspan > 1)
+				table.SetColumnSpan (ctl, colspan);
+		}
+
+		protected void AddButton (int row, int col, int colspan, string text, int width, int height, bool isAccept, bool isCancel, EventHandler onClick)
+		{
+			Button ctl = new Button ();
+			ctl.Text = text;
+			if (width == -1 && height == -1) {
+				//SizeF s = TextRenderer.MeasureString (text, ctl.Font);
+				//ctl.Width = (int) ((float) s.Width / 62f);
+				//ctl.Height = (int)s.Height;
+			} else {
+				ctl.Width = width;
+				ctl.Height = height;
+			}
+
+			if (onClick != null)
+				ctl.Click += onClick;
+			if (isAccept)
+				AcceptButton = ctl;
+			if (isCancel)
+				CancelButton = ctl;
+			table.Controls.Add (ctl, col, row);
+			if (colspan > 1)
+				table.SetColumnSpan (ctl, colspan);
+		}
+
+		protected void AddCheck (int row, int col, int colspan, string text, bool check, int width, int height, EventHandler onCheck)
+		{
+			CheckBox ctl = new CheckBox ();
+			ctl.Text = text;
+			ctl.Checked = check;
+
+			if (width == -1 && height == -1) {
+				SizeF s = TextRenderer.MeasureString (text, ctl.Font);
+				ctl.Width += (int) ((float) s.Width / 62f);
+				if (s.Height > ctl.Height)
+					ctl.Height = (int) s.Height;
+			} else {
+				ctl.Width = width;
+				ctl.Height = height;
+			}
+
+			if (onCheck != null)
+				ctl.CheckedChanged += onCheck;
+
+			table.Controls.Add (ctl, col, row);
+			if (colspan > 1)
+				table.SetColumnSpan (ctl, colspan);
+		}
+
+		protected void AddText (int row, int col, int colspan, string text, int width, int height, EventHandler onText)
+		{
+			TextBox ctl = new TextBox ();
+			ctl.Text = text;
+
+			if (width > -1)
+				ctl.Width = width;
+			if (height > -1)
+				ctl.Height = height;
+
+			if (onText != null)
+				ctl.TextChanged += onText;
+
+			table.Controls.Add (ctl, col, row);
+			if (colspan > 1)
+				table.SetColumnSpan (ctl, colspan);
+		}
+
+		protected void AddPassword (int row, int col, int colspan, string text, int width, int height, EventHandler onText)
+		{
+			TextBox ctl = new TextBox ();
+			ctl.PasswordChar = '*';
+			ctl.Text = text;
+
+			if (width > -1)
+				ctl.Width = width;
+			if (height > -1)
+				ctl.Height = height;
+
+			if (onText != null)
+				ctl.TextChanged += onText;
+
+			table.Controls.Add (ctl, col, row);
+			if (colspan > 1)
+				table.SetColumnSpan (ctl, colspan);
+		}
+
+		protected DialogResult RunDialog ()
+		{
+			this.StartPosition = FormStartPosition.CenterScreen;
+
+			InitSize ();
+
+			table.ResumeLayout (false);
+			table.PerformLayout ();
+			this.ResumeLayout (false);
+			this.PerformLayout ();
+
+			this.ShowDialog ();
+
+			return this.DialogResult;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/Prompt.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms.WebBrowserDialogs/Prompt.cs
@@ -1,62 +1,62 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace System.Windows.Forms.WebBrowserDialogs
-{
-	internal class Prompt : Generic
-	{
-		private string text;
-		public new string Text
-		{
-			get { return text; }
-		}
-
-		public Prompt (string title, string message, string text)
-			: base (title)
-		{
-			InitTable (3, 1);
-
-			AddLabel (0, 0, 0, message, -1, -1);
-			AddText (1, 0, 0, text, -1, -1, new EventHandler (onText));
-			AddButton (2, 0, 0, Locale.GetText ("OK"), -1, -1, true, false, new EventHandler (OkClick));
-		}
-
-		private void OkClick (object sender, EventArgs e)
-		{
-			this.DialogResult = DialogResult.OK;
-			this.Close ();
-		}
-
-		private void onText (object sender, EventArgs e)
-		{
-			TextBox c = sender as TextBox;
-			text = c.Text;
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Windows.Forms.WebBrowserDialogs
+{
+	internal class Prompt : Generic
+	{
+		private string text;
+		public new string Text
+		{
+			get { return text; }
+		}
+
+		public Prompt (string title, string message, string text)
+			: base (title)
+		{
+			InitTable (3, 1);
+
+			AddLabel (0, 0, 0, message, -1, -1);
+			AddText (1, 0, 0, text, -1, -1, new EventHandler (onText));
+			AddButton (2, 0, 0, Locale.GetText ("OK"), -1, -1, true, false, new EventHandler (OkClick));
+		}
+
+		private void OkClick (object sender, EventArgs e)
+		{
+			this.DialogResult = DialogResult.OK;
+			this.Close ();
+		}
+
+		private void onText (object sender, EventArgs e)
+		{
+			TextBox c = sender as TextBox;
+			text = c.Text;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/ColumnHeaderConverter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/ColumnHeaderConverter.cs
@@ -1,95 +1,95 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	olivier Dufour olivier.duff@free.fr
-//
-
-
-// COMPLETE
-
-using System.ComponentModel;
-using System.ComponentModel.Design.Serialization;
-using System.Collections;
-using System.Globalization;
-using System.Reflection;
-
-namespace System.Windows.Forms
-{
-	public class ColumnHeaderConverter : ExpandableObjectConverter
-	{
-		public ColumnHeaderConverter ()
-		{
-		}
-
-		public override Object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, Object value, Type destinationType)
-		{
-			if (destinationType == typeof (InstanceDescriptor) && value is ColumnHeader)
-			{
-				ConstructorInfo constructor_info;
-				Type[] type;
-				ColumnHeader column_header;
-
-				column_header = (ColumnHeader)value;
-				if (column_header.ImageIndex != -1)
-				{
-					type = new Type[] { typeof (int) };
-					constructor_info = typeof (ColumnHeader).GetConstructor (type);
-					if (constructor_info != null)
-					{
-						object[] arguments = new object[] { column_header.ImageIndex };
-						return new InstanceDescriptor (constructor_info, (ICollection)arguments, false);
-					}
-				}
-				else if (string.IsNullOrEmpty(column_header.ImageKey))
-				{
-					type = new Type[] { typeof (string) };
-					constructor_info = typeof (ColumnHeader).GetConstructor (type);
-					if (constructor_info != null)
-					{
-						object[] arguments = new object[] { column_header.ImageKey };
-						return new InstanceDescriptor (constructor_info, (ICollection)arguments, false);
-					}
-				}
-				else
-				{
-					type = Type.EmptyTypes;
-					constructor_info = typeof (ColumnHeader).GetConstructor (type);
-					if (constructor_info != null)
-					{
-						object[] arguments = new object[0] {};
-						return new InstanceDescriptor (constructor_info, (ICollection)arguments, false);
-					}
-				}
-
-			}
-			return base.ConvertTo (context, culture, value, destinationType);
-		}
-
-		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-		{
-			if (destinationType == typeof (InstanceDescriptor))
-				return true;
-			else
-				return base.CanConvertTo (context, destinationType);
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	olivier Dufour olivier.duff@free.fr
+//
+
+
+// COMPLETE
+
+using System.ComponentModel;
+using System.ComponentModel.Design.Serialization;
+using System.Collections;
+using System.Globalization;
+using System.Reflection;
+
+namespace System.Windows.Forms
+{
+	public class ColumnHeaderConverter : ExpandableObjectConverter
+	{
+		public ColumnHeaderConverter ()
+		{
+		}
+
+		public override Object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, Object value, Type destinationType)
+		{
+			if (destinationType == typeof (InstanceDescriptor) && value is ColumnHeader)
+			{
+				ConstructorInfo constructor_info;
+				Type[] type;
+				ColumnHeader column_header;
+
+				column_header = (ColumnHeader)value;
+				if (column_header.ImageIndex != -1)
+				{
+					type = new Type[] { typeof (int) };
+					constructor_info = typeof (ColumnHeader).GetConstructor (type);
+					if (constructor_info != null)
+					{
+						object[] arguments = new object[] { column_header.ImageIndex };
+						return new InstanceDescriptor (constructor_info, (ICollection)arguments, false);
+					}
+				}
+				else if (string.IsNullOrEmpty(column_header.ImageKey))
+				{
+					type = new Type[] { typeof (string) };
+					constructor_info = typeof (ColumnHeader).GetConstructor (type);
+					if (constructor_info != null)
+					{
+						object[] arguments = new object[] { column_header.ImageKey };
+						return new InstanceDescriptor (constructor_info, (ICollection)arguments, false);
+					}
+				}
+				else
+				{
+					type = Type.EmptyTypes;
+					constructor_info = typeof (ColumnHeader).GetConstructor (type);
+					if (constructor_info != null)
+					{
+						object[] arguments = new object[0] {};
+						return new InstanceDescriptor (constructor_info, (ICollection)arguments, false);
+					}
+				}
+
+			}
+			return base.ConvertTo (context, culture, value, destinationType);
+		}
+
+		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+		{
+			if (destinationType == typeof (InstanceDescriptor))
+				return true;
+			else
+				return base.CanConvertTo (context, destinationType);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/DataGridViewLinkCell.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/DataGridViewLinkCell.cs
@@ -1,334 +1,334 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//	olivier Dufour	olivier.duff@free.fr
-//
-//
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Security.Permissions;
-using System.ComponentModel;
-
-namespace System.Windows.Forms
-{
-	public class DataGridViewLinkCell : DataGridViewCell
-	{
-
-		public DataGridViewLinkCell ()
-		{
-			activeLinkColor = Color.Red;
-			linkColor = Color.FromArgb (0, 0, 255);
-			trackVisitedState = true;
-			visited_link_color = Color.FromArgb (128, 0, 128);
-		}
-
-		#region Public Methods
-
-		public override object Clone ()
-		{
-			DataGridViewLinkCell clone = (DataGridViewLinkCell)base.Clone ();
-			
-			clone.activeLinkColor = this.activeLinkColor;
-			clone.linkColor = this.linkColor;
-			clone.linkVisited = this.linkVisited;
-			clone.linkBehavior = this.linkBehavior;
-			clone.visited_link_color = this.visited_link_color;
-			clone.trackVisitedState = this.trackVisitedState;
-			
-			return clone;
-		}
-
-		public override string ToString ()
-		{
-			return string.Format ("DataGridViewLinkCell {{ ColumnIndex={0}, RowIndex={1} }}", ColumnIndex, RowIndex);
-		}
-
-		#endregion
-
-		#region Protected Methods
-
-		protected override AccessibleObject CreateAccessibilityInstance ()
-		{
-			return new DataGridViewLinkCellAccessibleObject (this);
-		}
-		
-		protected override Rectangle GetContentBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex)
-		{
-			if (DataGridView == null)
-				return Rectangle.Empty;
-
-			object o = FormattedValue;
-			Size s = Size.Empty;
-
-			if (o != null) {
-				s = DataGridViewCell.MeasureTextSize (graphics, o.ToString (), cellStyle.Font, TextFormatFlags.Default);
-				s.Height += 3;
-			} else {
-				return new Rectangle (1, 10, 0, 0);
-			}
-
-			return new Rectangle (1, (OwningRow.Height - s.Height) / 2 - 1, s.Width, s.Height);
-		}
-		
-		protected override Rectangle GetErrorIconBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex)
-		{
-			if (DataGridView == null || string.IsNullOrEmpty (ErrorText))
-				return Rectangle.Empty;
-
-			Size error_icon = new Size (12, 11);
-			return new Rectangle (new Point (Size.Width - error_icon.Width - 5, (Size.Height - error_icon.Height) / 2), error_icon);
-		}
-		
-		protected override Size GetPreferredSize (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize)
-		{
-			object o = FormattedValue;
-
-			if (o != null) {
-				Size s = DataGridViewCell.MeasureTextSize (graphics, o.ToString (), cellStyle.Font, TextFormatFlags.Default);
-				s.Height = Math.Max (s.Height, 20);
-				s.Width += 4;
-				return s;
-			} else
-				return new Size (21, 20);
-		}
-		
-		protected override object GetValue (int rowIndex)
-		{
-			if (useColumnTextForLinkValue)
-				return (OwningColumn as DataGridViewLinkColumn).Text;
-				
-			return base.GetValue (rowIndex);
-		}
-
-		protected override bool KeyUpUnsharesRow (KeyEventArgs e, int rowIndex)
-		{
-			if (e.KeyCode != Keys.Space
-				&& trackVisitedState == true
-				&& linkVisited == false
-				&& !e.Shift 
-				&& !e.Control
-				&& !e.Alt)
-				return true;
-
-			return false;
-		}
-		
-		protected override bool MouseDownUnsharesRow (DataGridViewCellMouseEventArgs e)
-		{
-			return true;
-		}
-		
-		protected override bool MouseLeaveUnsharesRow (int rowIndex)
-		{
-			return (linkState != LinkState.Normal);
-		}
-
-		protected override bool MouseMoveUnsharesRow (DataGridViewCellMouseEventArgs e)
-		{
-			if (linkState == LinkState.Hover)
-				return true;
-
-			return false;
-		}
-
-		protected override bool MouseUpUnsharesRow (DataGridViewCellMouseEventArgs e)
-		{
-			return (linkState == LinkState.Hover);
-		}
-		
-		protected override void OnKeyUp (KeyEventArgs e, int rowIndex)
-		{
-			if ((e.KeyData & Keys.Space) == Keys.Space) {
-				linkState = LinkState.Normal;
-				DataGridView.InvalidateCell (this);
-			}
-		}
-
-		protected override void OnMouseDown (DataGridViewCellMouseEventArgs e)
-		{
-			base.OnMouseDown (e);
-			
-			linkState = LinkState.Active;
-			DataGridView.InvalidateCell (this);
-		}
-		
-		protected override void OnMouseLeave (int rowIndex)
-		{
-			base.OnMouseLeave (rowIndex);
-			
-			linkState = LinkState.Normal;
-			DataGridView.InvalidateCell (this);
-			DataGridView.Cursor = parent_cursor;
-		}
-		
-		protected override void OnMouseMove (DataGridViewCellMouseEventArgs e)
-		{
-			base.OnMouseMove (e);
-			
-			if (linkState != LinkState.Hover) {
-				linkState = LinkState.Hover;
-				DataGridView.InvalidateCell (this);
-				parent_cursor = DataGridView.Cursor;
-				DataGridView.Cursor = Cursors.Hand;
-			}
-		}
-		
-		protected override void OnMouseUp (DataGridViewCellMouseEventArgs e)
-		{
-			base.OnMouseUp (e);
-			
-			linkState = LinkState.Hover;
-			LinkVisited = true;
-			DataGridView.InvalidateCell (this);
-		}
-
-		protected override void Paint (Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
-		{
-			base.Paint (graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
-		}
-		
-		internal override void PaintPartContent (Graphics graphics, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, DataGridViewCellStyle cellStyle, object formattedValue)
-		{
-			Font font = cellStyle.Font;
-
-			switch (LinkBehavior) {
-				case LinkBehavior.AlwaysUnderline:
-				case LinkBehavior.SystemDefault:
-					font = new Font (font, FontStyle.Underline);
-					break;
-				case LinkBehavior.HoverUnderline:
-					if (linkState == LinkState.Hover)
-						font = new Font (font, FontStyle.Underline);
-					break;
-			}
-
-			Color color;
-			
-			if (linkState == LinkState.Active)
-				color = ActiveLinkColor;
-			else if (linkVisited)
-				color = VisitedLinkColor;
-			else
-				color = LinkColor;
-
-			TextFormatFlags flags = TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter | TextFormatFlags.TextBoxControl;
-
-			cellBounds.Height -= 2;
-			cellBounds.Width -= 2;
-
-			if (formattedValue != null)
-				TextRenderer.DrawText (graphics, formattedValue.ToString (), font, cellBounds, color, flags);
-		}
-		#endregion
-
-		#region Private fields
-
-		private Color activeLinkColor;
-		private LinkBehavior linkBehavior;
-		private Color linkColor;
-		private bool linkVisited;
-		private Cursor parent_cursor;
-		private bool trackVisitedState;
-		private bool useColumnTextForLinkValue;
-		private Color visited_link_color;
-		private LinkState linkState;
-
-		#endregion
-
-		#region Public properties
-
-		public Color ActiveLinkColor {
-			get { return activeLinkColor; }
-			set { activeLinkColor = value; }
-		}
-
-		[DefaultValue (LinkBehavior.SystemDefault)]
-		public LinkBehavior LinkBehavior {
-			get { return linkBehavior; }
-			set { linkBehavior = value; }
-		}
-		public Color LinkColor {
-			get { return linkColor; }
-			set { linkColor = value; }
-		}
-		public bool LinkVisited {
-			get { return linkVisited; }
-			set { linkVisited = value; }
-		}
-		[DefaultValue (true)]
-		public bool TrackVisitedState {
-			get { return trackVisitedState; }
-			set { trackVisitedState = value; }
-		}
-		[DefaultValue (false)]
-		public bool UseColumnTextForLinkValue {
-			get { return useColumnTextForLinkValue; }
-			set { useColumnTextForLinkValue = value; }
-		}
-
-		public Color VisitedLinkColor {
-			get { return visited_link_color; }
-			set { visited_link_color = value; }
-		}
-
-		public override Type ValueType {
-			get { return base.ValueType == null ? typeof (object) : base.ValueType; }
-		}
-
-		public override Type EditType {
-			get { return null; }
-		}
-		public override Type FormattedValueType {
-			get { return typeof(string); }
-		}
-
-		#endregion
-
-		protected class DataGridViewLinkCellAccessibleObject : DataGridViewCell.DataGridViewCellAccessibleObject
-		{
-			public DataGridViewLinkCellAccessibleObject (DataGridViewCell owner) : base(owner) 
-			{
-				//DO NOTHING
-			}
-
-			[MonoTODO ("Stub, does nothing")]
-			[SecurityPermission (SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
-			public override void DoDefaultAction ()
-			{
-				//DataGridViewLinkCell cell = base.Owner as DataGridViewLinkCell;
-				//if (cell.DataGridView != null && cell.RowIndex == -1)
-				//        throw new InvalidOperationException ();
-			}
-
-			public override int GetChildCount ()
-			{
-				return -1;
-			}
-
-			public override string DefaultAction { get { return "Click"; } }
-		}
-		
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//	olivier Dufour	olivier.duff@free.fr
+//
+//
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Security.Permissions;
+using System.ComponentModel;
+
+namespace System.Windows.Forms
+{
+	public class DataGridViewLinkCell : DataGridViewCell
+	{
+
+		public DataGridViewLinkCell ()
+		{
+			activeLinkColor = Color.Red;
+			linkColor = Color.FromArgb (0, 0, 255);
+			trackVisitedState = true;
+			visited_link_color = Color.FromArgb (128, 0, 128);
+		}
+
+		#region Public Methods
+
+		public override object Clone ()
+		{
+			DataGridViewLinkCell clone = (DataGridViewLinkCell)base.Clone ();
+			
+			clone.activeLinkColor = this.activeLinkColor;
+			clone.linkColor = this.linkColor;
+			clone.linkVisited = this.linkVisited;
+			clone.linkBehavior = this.linkBehavior;
+			clone.visited_link_color = this.visited_link_color;
+			clone.trackVisitedState = this.trackVisitedState;
+			
+			return clone;
+		}
+
+		public override string ToString ()
+		{
+			return string.Format ("DataGridViewLinkCell {{ ColumnIndex={0}, RowIndex={1} }}", ColumnIndex, RowIndex);
+		}
+
+		#endregion
+
+		#region Protected Methods
+
+		protected override AccessibleObject CreateAccessibilityInstance ()
+		{
+			return new DataGridViewLinkCellAccessibleObject (this);
+		}
+		
+		protected override Rectangle GetContentBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex)
+		{
+			if (DataGridView == null)
+				return Rectangle.Empty;
+
+			object o = FormattedValue;
+			Size s = Size.Empty;
+
+			if (o != null) {
+				s = DataGridViewCell.MeasureTextSize (graphics, o.ToString (), cellStyle.Font, TextFormatFlags.Default);
+				s.Height += 3;
+			} else {
+				return new Rectangle (1, 10, 0, 0);
+			}
+
+			return new Rectangle (1, (OwningRow.Height - s.Height) / 2 - 1, s.Width, s.Height);
+		}
+		
+		protected override Rectangle GetErrorIconBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex)
+		{
+			if (DataGridView == null || string.IsNullOrEmpty (ErrorText))
+				return Rectangle.Empty;
+
+			Size error_icon = new Size (12, 11);
+			return new Rectangle (new Point (Size.Width - error_icon.Width - 5, (Size.Height - error_icon.Height) / 2), error_icon);
+		}
+		
+		protected override Size GetPreferredSize (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize)
+		{
+			object o = FormattedValue;
+
+			if (o != null) {
+				Size s = DataGridViewCell.MeasureTextSize (graphics, o.ToString (), cellStyle.Font, TextFormatFlags.Default);
+				s.Height = Math.Max (s.Height, 20);
+				s.Width += 4;
+				return s;
+			} else
+				return new Size (21, 20);
+		}
+		
+		protected override object GetValue (int rowIndex)
+		{
+			if (useColumnTextForLinkValue)
+				return (OwningColumn as DataGridViewLinkColumn).Text;
+				
+			return base.GetValue (rowIndex);
+		}
+
+		protected override bool KeyUpUnsharesRow (KeyEventArgs e, int rowIndex)
+		{
+			if (e.KeyCode != Keys.Space
+				&& trackVisitedState == true
+				&& linkVisited == false
+				&& !e.Shift 
+				&& !e.Control
+				&& !e.Alt)
+				return true;
+
+			return false;
+		}
+		
+		protected override bool MouseDownUnsharesRow (DataGridViewCellMouseEventArgs e)
+		{
+			return true;
+		}
+		
+		protected override bool MouseLeaveUnsharesRow (int rowIndex)
+		{
+			return (linkState != LinkState.Normal);
+		}
+
+		protected override bool MouseMoveUnsharesRow (DataGridViewCellMouseEventArgs e)
+		{
+			if (linkState == LinkState.Hover)
+				return true;
+
+			return false;
+		}
+
+		protected override bool MouseUpUnsharesRow (DataGridViewCellMouseEventArgs e)
+		{
+			return (linkState == LinkState.Hover);
+		}
+		
+		protected override void OnKeyUp (KeyEventArgs e, int rowIndex)
+		{
+			if ((e.KeyData & Keys.Space) == Keys.Space) {
+				linkState = LinkState.Normal;
+				DataGridView.InvalidateCell (this);
+			}
+		}
+
+		protected override void OnMouseDown (DataGridViewCellMouseEventArgs e)
+		{
+			base.OnMouseDown (e);
+			
+			linkState = LinkState.Active;
+			DataGridView.InvalidateCell (this);
+		}
+		
+		protected override void OnMouseLeave (int rowIndex)
+		{
+			base.OnMouseLeave (rowIndex);
+			
+			linkState = LinkState.Normal;
+			DataGridView.InvalidateCell (this);
+			DataGridView.Cursor = parent_cursor;
+		}
+		
+		protected override void OnMouseMove (DataGridViewCellMouseEventArgs e)
+		{
+			base.OnMouseMove (e);
+			
+			if (linkState != LinkState.Hover) {
+				linkState = LinkState.Hover;
+				DataGridView.InvalidateCell (this);
+				parent_cursor = DataGridView.Cursor;
+				DataGridView.Cursor = Cursors.Hand;
+			}
+		}
+		
+		protected override void OnMouseUp (DataGridViewCellMouseEventArgs e)
+		{
+			base.OnMouseUp (e);
+			
+			linkState = LinkState.Hover;
+			LinkVisited = true;
+			DataGridView.InvalidateCell (this);
+		}
+
+		protected override void Paint (Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
+		{
+			base.Paint (graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
+		}
+		
+		internal override void PaintPartContent (Graphics graphics, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, DataGridViewCellStyle cellStyle, object formattedValue)
+		{
+			Font font = cellStyle.Font;
+
+			switch (LinkBehavior) {
+				case LinkBehavior.AlwaysUnderline:
+				case LinkBehavior.SystemDefault:
+					font = new Font (font, FontStyle.Underline);
+					break;
+				case LinkBehavior.HoverUnderline:
+					if (linkState == LinkState.Hover)
+						font = new Font (font, FontStyle.Underline);
+					break;
+			}
+
+			Color color;
+			
+			if (linkState == LinkState.Active)
+				color = ActiveLinkColor;
+			else if (linkVisited)
+				color = VisitedLinkColor;
+			else
+				color = LinkColor;
+
+			TextFormatFlags flags = TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter | TextFormatFlags.TextBoxControl;
+
+			cellBounds.Height -= 2;
+			cellBounds.Width -= 2;
+
+			if (formattedValue != null)
+				TextRenderer.DrawText (graphics, formattedValue.ToString (), font, cellBounds, color, flags);
+		}
+		#endregion
+
+		#region Private fields
+
+		private Color activeLinkColor;
+		private LinkBehavior linkBehavior;
+		private Color linkColor;
+		private bool linkVisited;
+		private Cursor parent_cursor;
+		private bool trackVisitedState;
+		private bool useColumnTextForLinkValue;
+		private Color visited_link_color;
+		private LinkState linkState;
+
+		#endregion
+
+		#region Public properties
+
+		public Color ActiveLinkColor {
+			get { return activeLinkColor; }
+			set { activeLinkColor = value; }
+		}
+
+		[DefaultValue (LinkBehavior.SystemDefault)]
+		public LinkBehavior LinkBehavior {
+			get { return linkBehavior; }
+			set { linkBehavior = value; }
+		}
+		public Color LinkColor {
+			get { return linkColor; }
+			set { linkColor = value; }
+		}
+		public bool LinkVisited {
+			get { return linkVisited; }
+			set { linkVisited = value; }
+		}
+		[DefaultValue (true)]
+		public bool TrackVisitedState {
+			get { return trackVisitedState; }
+			set { trackVisitedState = value; }
+		}
+		[DefaultValue (false)]
+		public bool UseColumnTextForLinkValue {
+			get { return useColumnTextForLinkValue; }
+			set { useColumnTextForLinkValue = value; }
+		}
+
+		public Color VisitedLinkColor {
+			get { return visited_link_color; }
+			set { visited_link_color = value; }
+		}
+
+		public override Type ValueType {
+			get { return base.ValueType == null ? typeof (object) : base.ValueType; }
+		}
+
+		public override Type EditType {
+			get { return null; }
+		}
+		public override Type FormattedValueType {
+			get { return typeof(string); }
+		}
+
+		#endregion
+
+		protected class DataGridViewLinkCellAccessibleObject : DataGridViewCell.DataGridViewCellAccessibleObject
+		{
+			public DataGridViewLinkCellAccessibleObject (DataGridViewCell owner) : base(owner) 
+			{
+				//DO NOTHING
+			}
+
+			[MonoTODO ("Stub, does nothing")]
+			[SecurityPermission (SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
+			public override void DoDefaultAction ()
+			{
+				//DataGridViewLinkCell cell = base.Owner as DataGridViewLinkCell;
+				//if (cell.DataGridView != null && cell.RowIndex == -1)
+				//        throw new InvalidOperationException ();
+			}
+
+			public override int GetChildCount ()
+			{
+				return -1;
+			}
+
+			public override string DefaultAction { get { return "Click"; } }
+		}
+		
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/DataGridViewLinkColumn.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/DataGridViewLinkColumn.cs
@@ -1,249 +1,249 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//	olivier Dufour	olivier.duff@free.fr
-//
-//
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Text;
-using System.Drawing;
-
-namespace System.Windows.Forms
-{
-	[ToolboxBitmap ("")]
-	public class DataGridViewLinkColumn : DataGridViewColumn
-	{
-		
-		public DataGridViewLinkColumn ()
-		{
-			base.CellTemplate = new DataGridViewLinkCell ();
-		}
-
-		public override object Clone ()
-		{
-			DataGridViewLinkColumn clone = (DataGridViewLinkColumn)base.Clone ();
-			clone.CellTemplate = (DataGridViewCell) this.CellTemplate.Clone ();
-			return clone;
-		}
-
-		public override string ToString ()
-		{
-			return base.ToString ();
-		}
-
-		#region private fields
-
-		private string text = string.Empty;
-
-		#endregion
-
-		#region Public Properties
-
-		public Color ActiveLinkColor {
-			get {
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				return template.ActiveLinkColor; 
-			}
-			set {
-				if (this.ActiveLinkColor == value) 
-					return;
-
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-
-				template.ActiveLinkColor = value;
-
-				foreach (DataGridViewRow row in DataGridView.Rows) {
-					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
-					if (cell != null)
-						cell.ActiveLinkColor = value;
-				}
-				DataGridView.InvalidateColumn (Index);
-
-			}
-		}
-
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[Browsable (false)]
-		public override DataGridViewCell CellTemplate {
-			get { return base.CellTemplate; }
-			set { base.CellTemplate = value as DataGridViewLinkCell; }
-		}
-
-
-		[DefaultValue (LinkBehavior.SystemDefault)]
-		public LinkBehavior LinkBehavior {
-			get	{
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				return template.LinkBehavior;
-			}
-			set	{
-				if (this.LinkBehavior == value) 
-					return;
-
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-
-				template.LinkBehavior = value;
-				foreach (DataGridViewRow row in DataGridView.Rows)
-				{
-					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
-					if (cell != null)
-						cell.LinkBehavior = value;
-				}
-				DataGridView.InvalidateColumn (Index);
-			}
-		}
-
-		public Color LinkColor {
-			get	{
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				return template.LinkColor;
-			}
-			set	{
-				if (this.LinkColor == value)
-					return;
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				template.LinkColor = value;
-				foreach (DataGridViewRow row in DataGridView.Rows)
-				{
-					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
-					if (cell != null)
-						cell.LinkColor = value;
-				}
-				DataGridView.InvalidateColumn (Index);
-			}
-		}
-		[MonoInternalNote ("")]
-		[DefaultValue ((string) null)]
-		public string Text {
-			get {
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				return text;
-			}
-			set {
-				if (this.Text == value)
-					return;
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				//TODO : sets the Text property of every cell in the column 
-				//TODO only if UseColumnTextForLinkValue is true
-				text = value;
-				DataGridView.InvalidateColumn (Index);
-			}
-		}
-
-		//When TrackVisitedState is true, the VisitedLinkColor property value is used to display links that have already been visited.
-		[DefaultValue (true)]
-		public bool TrackVisitedState {
-			get {
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				return template.TrackVisitedState;
-			}
-			set {
-				if (this.TrackVisitedState == value)
-					return;
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				template.TrackVisitedState = value;
-				foreach (DataGridViewRow row in DataGridView.Rows)
-				{
-					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
-					if (cell != null)
-						cell.TrackVisitedState = value;
-				}
-				DataGridView.InvalidateColumn (Index);
-			}
-		}
-
-		// true if the Text property value is displayed as the link text; false if the cell FormattedValue property value is displayed as the link text. The default is false.
-		[DefaultValue (false)]
-		public bool UseColumnTextForLinkValue {
-			get {
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				return template.UseColumnTextForLinkValue;
-			}
-			set {
-				if (this.UseColumnTextForLinkValue == value)
-					return;
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				template.UseColumnTextForLinkValue = value;
-				foreach (DataGridViewRow row in DataGridView.Rows)
-				{
-					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
-					if (cell != null)
-						cell.UseColumnTextForLinkValue = value;
-				}
-				DataGridView.InvalidateColumn (Index);
-			}
-		}
-
-		//If the TrackVisitedState property is set to false, the VisitedLinkColor property is ignored.
-		public Color VisitedLinkColor {
-			get {
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				return template.VisitedLinkColor;
-			}
-			set {
-				if (this.VisitedLinkColor == value)
-					return;
-				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
-				if (template == null)
-					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
-				template.VisitedLinkColor = value;
-				foreach (DataGridViewRow row in DataGridView.Rows)
-				{
-					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
-					if (cell != null)
-						cell.VisitedLinkColor = value;
-				}
-				DataGridView.InvalidateColumn (Index);
-			}
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//	olivier Dufour	olivier.duff@free.fr
+//
+//
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Text;
+using System.Drawing;
+
+namespace System.Windows.Forms
+{
+	[ToolboxBitmap ("")]
+	public class DataGridViewLinkColumn : DataGridViewColumn
+	{
+		
+		public DataGridViewLinkColumn ()
+		{
+			base.CellTemplate = new DataGridViewLinkCell ();
+		}
+
+		public override object Clone ()
+		{
+			DataGridViewLinkColumn clone = (DataGridViewLinkColumn)base.Clone ();
+			clone.CellTemplate = (DataGridViewCell) this.CellTemplate.Clone ();
+			return clone;
+		}
+
+		public override string ToString ()
+		{
+			return base.ToString ();
+		}
+
+		#region private fields
+
+		private string text = string.Empty;
+
+		#endregion
+
+		#region Public Properties
+
+		public Color ActiveLinkColor {
+			get {
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				return template.ActiveLinkColor; 
+			}
+			set {
+				if (this.ActiveLinkColor == value) 
+					return;
+
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+
+				template.ActiveLinkColor = value;
+
+				foreach (DataGridViewRow row in DataGridView.Rows) {
+					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
+					if (cell != null)
+						cell.ActiveLinkColor = value;
+				}
+				DataGridView.InvalidateColumn (Index);
+
+			}
+		}
+
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[Browsable (false)]
+		public override DataGridViewCell CellTemplate {
+			get { return base.CellTemplate; }
+			set { base.CellTemplate = value as DataGridViewLinkCell; }
+		}
+
+
+		[DefaultValue (LinkBehavior.SystemDefault)]
+		public LinkBehavior LinkBehavior {
+			get	{
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				return template.LinkBehavior;
+			}
+			set	{
+				if (this.LinkBehavior == value) 
+					return;
+
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+
+				template.LinkBehavior = value;
+				foreach (DataGridViewRow row in DataGridView.Rows)
+				{
+					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
+					if (cell != null)
+						cell.LinkBehavior = value;
+				}
+				DataGridView.InvalidateColumn (Index);
+			}
+		}
+
+		public Color LinkColor {
+			get	{
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				return template.LinkColor;
+			}
+			set	{
+				if (this.LinkColor == value)
+					return;
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				template.LinkColor = value;
+				foreach (DataGridViewRow row in DataGridView.Rows)
+				{
+					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
+					if (cell != null)
+						cell.LinkColor = value;
+				}
+				DataGridView.InvalidateColumn (Index);
+			}
+		}
+		[MonoInternalNote ("")]
+		[DefaultValue ((string) null)]
+		public string Text {
+			get {
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				return text;
+			}
+			set {
+				if (this.Text == value)
+					return;
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				//TODO : sets the Text property of every cell in the column 
+				//TODO only if UseColumnTextForLinkValue is true
+				text = value;
+				DataGridView.InvalidateColumn (Index);
+			}
+		}
+
+		//When TrackVisitedState is true, the VisitedLinkColor property value is used to display links that have already been visited.
+		[DefaultValue (true)]
+		public bool TrackVisitedState {
+			get {
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				return template.TrackVisitedState;
+			}
+			set {
+				if (this.TrackVisitedState == value)
+					return;
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				template.TrackVisitedState = value;
+				foreach (DataGridViewRow row in DataGridView.Rows)
+				{
+					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
+					if (cell != null)
+						cell.TrackVisitedState = value;
+				}
+				DataGridView.InvalidateColumn (Index);
+			}
+		}
+
+		// true if the Text property value is displayed as the link text; false if the cell FormattedValue property value is displayed as the link text. The default is false.
+		[DefaultValue (false)]
+		public bool UseColumnTextForLinkValue {
+			get {
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				return template.UseColumnTextForLinkValue;
+			}
+			set {
+				if (this.UseColumnTextForLinkValue == value)
+					return;
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				template.UseColumnTextForLinkValue = value;
+				foreach (DataGridViewRow row in DataGridView.Rows)
+				{
+					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
+					if (cell != null)
+						cell.UseColumnTextForLinkValue = value;
+				}
+				DataGridView.InvalidateColumn (Index);
+			}
+		}
+
+		//If the TrackVisitedState property is set to false, the VisitedLinkColor property is ignored.
+		public Color VisitedLinkColor {
+			get {
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				return template.VisitedLinkColor;
+			}
+			set {
+				if (this.VisitedLinkColor == value)
+					return;
+				DataGridViewLinkCell template = CellTemplate as DataGridViewLinkCell;
+				if (template == null)
+					throw new InvalidOperationException ("CellTemplate is null when getting this property.");
+				template.VisitedLinkColor = value;
+				foreach (DataGridViewRow row in DataGridView.Rows)
+				{
+					DataGridViewLinkCell cell = row.Cells[Index] as DataGridViewLinkCell;
+					if (cell != null)
+						cell.VisitedLinkColor = value;
+				}
+				DataGridView.InvalidateColumn (Index);
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElement.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElement.cs
@@ -1,702 +1,702 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007, 2008 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.Drawing;
-using System.ComponentModel;
-using Mono.WebBrowser.DOM;
-
-namespace System.Windows.Forms
-{
-	public sealed class HtmlElement
-	{
-		private EventHandlerList events;
-		private Mono.WebBrowser.IWebBrowser webHost;
-		internal IElement element;
-		private WebBrowser owner;
-		
-		internal HtmlElement (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, IElement element)
-		{
-			this.webHost = webHost;
-			this.element = element;
-			this.owner = owner;
-		}
-
-		internal EventHandlerList Events {
-			get {
-				if (events == null)
-					events = new EventHandlerList();
-
-				return events;
-			}
-		}
-
-		#region Properties
-		public HtmlElementCollection All {
-			get {
-				return new HtmlElementCollection (owner, webHost, this.element.All);
-			}
-		}
-
-		// from http://www.w3.org/TR/html401/index/elements.html
-		public bool CanHaveChildren {
-			get {
-				string tag = this.TagName;
-				switch (tag.ToLowerInvariant ()) {
-					case "area":
-					case "base":
-					case "basefont":
-					case "br":
-					case "col":
-					case "frame":
-					case "hr":
-					case "img":
-					case "input":
-					case "isindex":
-					case "link":
-					case "meta":
-					case "param":
-						return false;
-					default:
-						return true;
-				}
-			}
-		}
-
-		public HtmlElementCollection Children {
-			get {
-				return new HtmlElementCollection (owner, webHost, this.element.Children);
-			}
-		}
-
-		public Rectangle ClientRectangle {
-			get { return new Rectangle (0, 0, this.element.ClientWidth, this.element.ClientHeight); }
-		}
-		
-		public Rectangle OffsetRectangle {
-			get { return new Rectangle (this.element.OffsetLeft, this.element.OffsetTop, this.element.OffsetWidth, this.element.OffsetHeight); }
-		}
-
-		public Rectangle ScrollRectangle {
-			get { return new Rectangle (this.element.ScrollLeft, this.element.ScrollTop, this.element.ScrollWidth, this.element.ScrollHeight); }
-		}
-
-		public int ScrollLeft {
-			get { return this.element.ScrollLeft; }
-			set { this.element.ScrollLeft = value; }
-		}
-
-		public int ScrollTop {
-			get { return this.element.ScrollTop; }
-			set { this.element.ScrollTop = value; }
-		}
-
-		public HtmlElement OffsetParent {
-			get { return new HtmlElement (owner, this.webHost, this.element.OffsetParent); }
-		}
-
-		public HtmlDocument Document {
-			get {
-				return new HtmlDocument (owner, webHost, element.Owner);
-			}
-		}
-
-		public bool Enabled	{
-			get { return !this.element.Disabled; }
-			set { this.element.Disabled = !value; }
-		}
-
-		public string InnerHtml	{
-			get { return this.element.InnerHTML; }
-			set { this.element.InnerHTML = value; }
-		}
-
-		public string InnerText {
-			get { return this.element.InnerText; }
-			set { this.element.InnerText = value; }
-		}
-
-		public string Id {
-			get { return GetAttribute("id"); }
-			set { SetAttribute ("id", value); }
-		}
-
-		public string Name {
-			get { return GetAttribute ("name"); }
-			set { SetAttribute ("name", value); }
-		}
-
-		public HtmlElement FirstChild {
-			get {
-				return new HtmlElement (owner, webHost, (IElement)element.FirstChild); 
-			}
-		}
-
-		public HtmlElement NextSibling {
-			get { return new HtmlElement (owner, webHost, (IElement)element.Next); }
-		}
-		
-		public HtmlElement Parent {
-			get { return new HtmlElement (owner, webHost, (IElement)element.Parent); }
-		}
-
-		public string TagName {
-			get { return element.TagName; }
-		}
-
-		public short TabIndex {
-			get { return (short)element.TabIndex; }
-			set { element.TabIndex = value; }
-		}
-
-		public object DomElement {
-			get { throw new NotSupportedException ("Retrieving a reference to an mshtml interface is not supported. Sorry."); } 
-		}
-
-		public string OuterHtml {
-			get { return this.element.OuterHTML; }
-			set { this.element.OuterHTML = value; }
-		}
-
-		public string OuterText {
-			get { return this.element.OuterText; }
-			set { this.element.OuterText = value; }
-		}
-
-		public string Style {
-			get { return this.element.Style; }
-			set { this.element.Style = value; }
-		}
-
-		#endregion
-		
-		#region Methods
-		public HtmlElement AppendChild (HtmlElement newElement)
-		{
-			IElement newChild = this.element.AppendChild (newElement.element);
-			newElement.element = newChild;
-			return newElement;
-		}
-		
-		public void AttachEventHandler (string eventName, EventHandler eventHandler)
-		{
-			element.AttachEventHandler (eventName, eventHandler);
-		}
-
-		public void DetachEventHandler (string eventName, EventHandler eventHandler)
-		{
-			element.DetachEventHandler (eventName, eventHandler);
-		}
-		
-		public void Focus ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		public string GetAttribute (string attributeName)
-		{
-			return element.GetAttribute (attributeName);
-		}
-
-		public HtmlElementCollection GetElementsByTagName (string tagName)
-		{
-			Mono.WebBrowser.DOM.IElementCollection col = element.GetElementsByTagName (tagName);
-			return new HtmlElementCollection (owner, webHost, col);
-		}
-		
-		public override int GetHashCode ()
-		{
-			if (element == null)
-				return 0;
-			return element.GetHashCode ();
-		}
-
-		internal bool HasAttribute (string name)
-		{
-			return element.HasAttribute (name);
-		}
-
-		public HtmlElement InsertAdjacentElement (HtmlElementInsertionOrientation orient, HtmlElement newElement)
-		{
-			switch (orient) {
-				case HtmlElementInsertionOrientation.BeforeBegin:
-					element.Parent.InsertBefore (newElement.element, element);
-					return newElement;
-				case HtmlElementInsertionOrientation.AfterBegin:
-					element.InsertBefore (newElement.element, element.FirstChild);
-					return newElement;
-				case HtmlElementInsertionOrientation.BeforeEnd:
-					return this.AppendChild (newElement);
-				case HtmlElementInsertionOrientation.AfterEnd:
-					return this.AppendChild (newElement);
-			}
-			return null;
-		}
-		
-		public object InvokeMember (string methodName)
-		{
-			return this.element.Owner.InvokeScript ("eval ('" + methodName + "()');");
-		}
-
-		public object InvokeMember (string methodName, params object[] parameter)
-		{
-			string[] strArgs = new string[parameter.Length];
-			for (int i = 0; i < parameter.Length; i++) {
-				strArgs[i] = parameter.ToString();
-			}
-			return this.element.Owner.InvokeScript ("eval ('" + methodName + "(" + String.Join (",", strArgs) + ")');");
-		}
-		
-		public void RaiseEvent (string eventName) 
-		{
-			this.element.FireEvent (eventName);
-		}
-
-		public void RemoveFocus () 
-		{
-			this.element.Blur ();
-		}
-
-		public void ScrollIntoView (bool alignWithTop) 
-		{
-			this.element.ScrollIntoView (alignWithTop);
-		}
-		
-		public void SetAttribute (string attributeName, string value)
-		{
-			this.element.SetAttribute (attributeName, value);
-		}
-
-		public override bool Equals (object obj)
-		{
-			return this == (HtmlElement) obj;
-		}
-		
-		public static bool operator == (HtmlElement left, HtmlElement right)
-		{
-			if ((object)left == (object)right)
-				return true;
-			if ((object)left == null || (object)right == null)
-				return false;
-			return left.element.Equals (right.element); 
-		}
-
-		public static bool operator != (HtmlElement left, HtmlElement right)
-		{
-			return !(left == right);
-		}
-		#endregion
-
-		#region Events
-		private void OnClick (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[ClickEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		private static object ClickEvent = new object ();
-		public event HtmlElementEventHandler Click {
-			add { 
-				Events.AddHandler (ClickEvent, value);
-				element.Click += new NodeEventHandler (OnClick);
-			}
-			remove { 
-				Events.RemoveHandler (ClickEvent, value);
-				element.Click -= new NodeEventHandler (OnClick);
-			}
-		}
-
-		private void OnDoubleClick (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DoubleClickEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		private static object DoubleClickEvent = new object ();
-		public event HtmlElementEventHandler DoubleClick {
-			add {
-				Events.AddHandler (DoubleClickEvent, value);
-				element.DoubleClick += new NodeEventHandler (OnDoubleClick);
-			}
-			remove {
-				Events.RemoveHandler (DoubleClickEvent, value);
-				element.DoubleClick -= new NodeEventHandler (OnDoubleClick);
-			}
-		}
-
-		private void OnMouseDown (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseDownEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		private static object MouseDownEvent = new object ();
-		public event HtmlElementEventHandler MouseDown {
-			add {
-				Events.AddHandler (MouseDownEvent, value);
-				element.MouseDown += new NodeEventHandler (OnMouseDown);
-			}
-			remove {
-				Events.RemoveHandler (MouseDownEvent, value);
-				element.MouseDown -= new NodeEventHandler (OnMouseDown);
-			}
-		}
-
-		private void OnMouseUp (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseUpEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		private static object MouseUpEvent = new object ();
-		public event HtmlElementEventHandler MouseUp {
-			add {
-				Events.AddHandler (MouseUpEvent, value);
-				element.MouseUp += new NodeEventHandler (OnMouseUp);
-			}
-			remove {
-				Events.RemoveHandler (MouseUpEvent, value);
-				element.MouseUp -= new NodeEventHandler (OnMouseUp);
-			}
-		}
-
-		private void OnMouseMove (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseMoveEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		private static object MouseMoveEvent = new object ();
-		public event HtmlElementEventHandler MouseMove {
-			add {
-				Events.AddHandler (MouseMoveEvent, value);
-				element.MouseMove += new NodeEventHandler (OnMouseMove);
-			}
-			remove {
-				Events.RemoveHandler (MouseMoveEvent, value);
-				element.MouseMove -= new NodeEventHandler (OnMouseMove);
-			}
-		}
-
-		private void OnMouseOver (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseOverEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		private static object MouseOverEvent = new object ();
-		public event HtmlElementEventHandler MouseOver {
-			add { 
-				Events.AddHandler (MouseOverEvent, value);
-				element.MouseOver += new NodeEventHandler (OnMouseOver);
-			}
-			remove { 
-				Events.RemoveHandler (MouseOverEvent, value);
-				element.MouseOver -= new NodeEventHandler (OnMouseOver);
-			}
-		}
-		
-		private void OnMouseEnter (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseEnterEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		
-		private static object MouseEnterEvent = new object ();
-		public event HtmlElementEventHandler MouseEnter {
-			add {
-				Events.AddHandler (MouseEnterEvent, value);
-				element.MouseEnter += new NodeEventHandler (OnMouseEnter);
-			}
-			remove {
-				Events.RemoveHandler (MouseEnterEvent, value);
-				element.MouseEnter -= new NodeEventHandler (OnMouseEnter);
-			}
-		}
-		
-		private void OnMouseLeave (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseLeaveEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		
-		private static object MouseLeaveEvent = new object ();
-		public event HtmlElementEventHandler MouseLeave {
-			add {
-				Events.AddHandler (MouseLeaveEvent, value);
-				element.MouseLeave += new NodeEventHandler (OnMouseLeave);
-			}
-			remove {
-				Events.RemoveHandler (MouseLeaveEvent, value);
-				element.MouseLeave -= new NodeEventHandler (OnMouseLeave);
-			}
-		}
-
-		private void OnKeyDown (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[KeyDownEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		
-		private static object KeyDownEvent = new object ();
-		public event HtmlElementEventHandler KeyDown {
-			add {
-				Events.AddHandler (KeyDownEvent, value);
-				element.KeyDown += new NodeEventHandler (OnKeyDown);
-			}
-			remove {
-				Events.RemoveHandler (KeyDownEvent, value);
-				element.KeyDown -= new NodeEventHandler (OnKeyDown);
-			}
-		}
-
-		private void OnKeyPress (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[KeyPressEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		
-		private static object KeyPressEvent = new object ();
-		public event HtmlElementEventHandler KeyPress {
-			add {
-				Events.AddHandler (KeyPressEvent, value);
-				element.KeyPress += new NodeEventHandler (OnKeyPress);
-			}
-			remove {
-				Events.RemoveHandler (KeyPressEvent, value);
-				element.KeyPress -= new NodeEventHandler (OnKeyPress);
-			}
-		}
-
-		private void OnKeyUp (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[KeyUpEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		
-		private static object KeyUpEvent = new object ();
-		public event HtmlElementEventHandler KeyUp {
-			add {
-				Events.AddHandler (KeyUpEvent, value);
-				element.KeyUp += new NodeEventHandler (OnKeyUp);
-			}
-			remove {
-				Events.RemoveHandler (KeyUpEvent, value);
-				element.KeyUp -= new NodeEventHandler (OnKeyUp);
-			}
-		}
-
-		private static object DragEvent = new object ();
-		public event HtmlElementEventHandler Drag {
-			add {
-				Events.AddHandler (DragEvent, value);
-			}
-			remove {
-				Events.RemoveHandler (DragEvent, value);
-			}
-		}
-
-		private void OnDrag (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-
-		private static object DragEndEvent = new object ();
-		public event HtmlElementEventHandler DragEnd {
-			add	{
-				Events.AddHandler (DragEndEvent, value);
-			}
-			remove {
-				Events.RemoveHandler (DragEndEvent, value);
-			}
-		}
-
-		private void OnDragEnd (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragEndEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		private static object DragLeaveEvent = new object ();
-		public event HtmlElementEventHandler DragLeave {
-			add {
-				Events.AddHandler (DragLeaveEvent, value);
-			}
-			remove {
-				Events.RemoveHandler (DragLeaveEvent, value);
-			}
-		}
-
-		private void OnDragLeave (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragLeaveEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		private static object DragOverEvent = new object ();
-		public event HtmlElementEventHandler DragOver {
-			add {
-				Events.AddHandler (DragOverEvent, value);
-			}
-			remove {
-				Events.RemoveHandler (DragOverEvent, value);
-			}
-		}
-
-		private void OnDragOver (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragOverEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		private static object FocusingEvent = new object ();
-		public event HtmlElementEventHandler Focusing {
-			add {
-				Events.AddHandler (FocusingEvent, value);
-				((INode)element).OnFocus += new NodeEventHandler (OnFocusing);
-			}
-			remove {
-				Events.RemoveHandler (FocusingEvent, value);
-				((INode)element).OnFocus -= new NodeEventHandler (OnFocusing);
-			}
-		}
-
-		private void OnFocusing (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[FocusingEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		private static object GotFocusEvent = new object ();
-		public event HtmlElementEventHandler GotFocus {
-			add {
-				Events.AddHandler (GotFocusEvent, value);
-				((INode)element).OnFocus += new NodeEventHandler (OnGotFocus);
-			}
-			remove {
-				Events.RemoveHandler (GotFocusEvent, value);
-				((INode)element).OnFocus -= new NodeEventHandler (OnGotFocus);
-			}
-		}
-
-		private void OnGotFocus (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[GotFocusEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		private static object LosingFocusEvent = new object ();
-		public event HtmlElementEventHandler LosingFocus {
-			add {
-				Events.AddHandler (LosingFocusEvent, value);
-				((INode)element).OnBlur += new NodeEventHandler (OnLosingFocus);
-			}
-			remove {
-				Events.RemoveHandler (LosingFocusEvent, value);
-				((INode)element).OnBlur -= new NodeEventHandler (OnLosingFocus);
-			}
-		}
-
-		private void OnLosingFocus (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[LosingFocusEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-		private static object LostFocusEvent = new object ();
-		public event HtmlElementEventHandler LostFocus {
-			add {
-				Events.AddHandler (LostFocusEvent, value);
-				((INode)element).OnBlur += new NodeEventHandler (OnLostFocus);
-			}
-			remove {
-				Events.RemoveHandler (LostFocusEvent, value);
-				((INode)element).OnBlur -= new NodeEventHandler (OnLostFocus);
-			}
-		}
-
-		private void OnLostFocus (object sender, EventArgs e)
-		{
-			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[LostFocusEvent];
-			if (eh != null) {
-				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
-				eh (this, ev);
-			}
-		}
-
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.Drawing;
+using System.ComponentModel;
+using Mono.WebBrowser.DOM;
+
+namespace System.Windows.Forms
+{
+	public sealed class HtmlElement
+	{
+		private EventHandlerList events;
+		private Mono.WebBrowser.IWebBrowser webHost;
+		internal IElement element;
+		private WebBrowser owner;
+		
+		internal HtmlElement (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, IElement element)
+		{
+			this.webHost = webHost;
+			this.element = element;
+			this.owner = owner;
+		}
+
+		internal EventHandlerList Events {
+			get {
+				if (events == null)
+					events = new EventHandlerList();
+
+				return events;
+			}
+		}
+
+		#region Properties
+		public HtmlElementCollection All {
+			get {
+				return new HtmlElementCollection (owner, webHost, this.element.All);
+			}
+		}
+
+		// from http://www.w3.org/TR/html401/index/elements.html
+		public bool CanHaveChildren {
+			get {
+				string tag = this.TagName;
+				switch (tag.ToLowerInvariant ()) {
+					case "area":
+					case "base":
+					case "basefont":
+					case "br":
+					case "col":
+					case "frame":
+					case "hr":
+					case "img":
+					case "input":
+					case "isindex":
+					case "link":
+					case "meta":
+					case "param":
+						return false;
+					default:
+						return true;
+				}
+			}
+		}
+
+		public HtmlElementCollection Children {
+			get {
+				return new HtmlElementCollection (owner, webHost, this.element.Children);
+			}
+		}
+
+		public Rectangle ClientRectangle {
+			get { return new Rectangle (0, 0, this.element.ClientWidth, this.element.ClientHeight); }
+		}
+		
+		public Rectangle OffsetRectangle {
+			get { return new Rectangle (this.element.OffsetLeft, this.element.OffsetTop, this.element.OffsetWidth, this.element.OffsetHeight); }
+		}
+
+		public Rectangle ScrollRectangle {
+			get { return new Rectangle (this.element.ScrollLeft, this.element.ScrollTop, this.element.ScrollWidth, this.element.ScrollHeight); }
+		}
+
+		public int ScrollLeft {
+			get { return this.element.ScrollLeft; }
+			set { this.element.ScrollLeft = value; }
+		}
+
+		public int ScrollTop {
+			get { return this.element.ScrollTop; }
+			set { this.element.ScrollTop = value; }
+		}
+
+		public HtmlElement OffsetParent {
+			get { return new HtmlElement (owner, this.webHost, this.element.OffsetParent); }
+		}
+
+		public HtmlDocument Document {
+			get {
+				return new HtmlDocument (owner, webHost, element.Owner);
+			}
+		}
+
+		public bool Enabled	{
+			get { return !this.element.Disabled; }
+			set { this.element.Disabled = !value; }
+		}
+
+		public string InnerHtml	{
+			get { return this.element.InnerHTML; }
+			set { this.element.InnerHTML = value; }
+		}
+
+		public string InnerText {
+			get { return this.element.InnerText; }
+			set { this.element.InnerText = value; }
+		}
+
+		public string Id {
+			get { return GetAttribute("id"); }
+			set { SetAttribute ("id", value); }
+		}
+
+		public string Name {
+			get { return GetAttribute ("name"); }
+			set { SetAttribute ("name", value); }
+		}
+
+		public HtmlElement FirstChild {
+			get {
+				return new HtmlElement (owner, webHost, (IElement)element.FirstChild); 
+			}
+		}
+
+		public HtmlElement NextSibling {
+			get { return new HtmlElement (owner, webHost, (IElement)element.Next); }
+		}
+		
+		public HtmlElement Parent {
+			get { return new HtmlElement (owner, webHost, (IElement)element.Parent); }
+		}
+
+		public string TagName {
+			get { return element.TagName; }
+		}
+
+		public short TabIndex {
+			get { return (short)element.TabIndex; }
+			set { element.TabIndex = value; }
+		}
+
+		public object DomElement {
+			get { throw new NotSupportedException ("Retrieving a reference to an mshtml interface is not supported. Sorry."); } 
+		}
+
+		public string OuterHtml {
+			get { return this.element.OuterHTML; }
+			set { this.element.OuterHTML = value; }
+		}
+
+		public string OuterText {
+			get { return this.element.OuterText; }
+			set { this.element.OuterText = value; }
+		}
+
+		public string Style {
+			get { return this.element.Style; }
+			set { this.element.Style = value; }
+		}
+
+		#endregion
+		
+		#region Methods
+		public HtmlElement AppendChild (HtmlElement newElement)
+		{
+			IElement newChild = this.element.AppendChild (newElement.element);
+			newElement.element = newChild;
+			return newElement;
+		}
+		
+		public void AttachEventHandler (string eventName, EventHandler eventHandler)
+		{
+			element.AttachEventHandler (eventName, eventHandler);
+		}
+
+		public void DetachEventHandler (string eventName, EventHandler eventHandler)
+		{
+			element.DetachEventHandler (eventName, eventHandler);
+		}
+		
+		public void Focus ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		public string GetAttribute (string attributeName)
+		{
+			return element.GetAttribute (attributeName);
+		}
+
+		public HtmlElementCollection GetElementsByTagName (string tagName)
+		{
+			Mono.WebBrowser.DOM.IElementCollection col = element.GetElementsByTagName (tagName);
+			return new HtmlElementCollection (owner, webHost, col);
+		}
+		
+		public override int GetHashCode ()
+		{
+			if (element == null)
+				return 0;
+			return element.GetHashCode ();
+		}
+
+		internal bool HasAttribute (string name)
+		{
+			return element.HasAttribute (name);
+		}
+
+		public HtmlElement InsertAdjacentElement (HtmlElementInsertionOrientation orient, HtmlElement newElement)
+		{
+			switch (orient) {
+				case HtmlElementInsertionOrientation.BeforeBegin:
+					element.Parent.InsertBefore (newElement.element, element);
+					return newElement;
+				case HtmlElementInsertionOrientation.AfterBegin:
+					element.InsertBefore (newElement.element, element.FirstChild);
+					return newElement;
+				case HtmlElementInsertionOrientation.BeforeEnd:
+					return this.AppendChild (newElement);
+				case HtmlElementInsertionOrientation.AfterEnd:
+					return this.AppendChild (newElement);
+			}
+			return null;
+		}
+		
+		public object InvokeMember (string methodName)
+		{
+			return this.element.Owner.InvokeScript ("eval ('" + methodName + "()');");
+		}
+
+		public object InvokeMember (string methodName, params object[] parameter)
+		{
+			string[] strArgs = new string[parameter.Length];
+			for (int i = 0; i < parameter.Length; i++) {
+				strArgs[i] = parameter.ToString();
+			}
+			return this.element.Owner.InvokeScript ("eval ('" + methodName + "(" + String.Join (",", strArgs) + ")');");
+		}
+		
+		public void RaiseEvent (string eventName) 
+		{
+			this.element.FireEvent (eventName);
+		}
+
+		public void RemoveFocus () 
+		{
+			this.element.Blur ();
+		}
+
+		public void ScrollIntoView (bool alignWithTop) 
+		{
+			this.element.ScrollIntoView (alignWithTop);
+		}
+		
+		public void SetAttribute (string attributeName, string value)
+		{
+			this.element.SetAttribute (attributeName, value);
+		}
+
+		public override bool Equals (object obj)
+		{
+			return this == (HtmlElement) obj;
+		}
+		
+		public static bool operator == (HtmlElement left, HtmlElement right)
+		{
+			if ((object)left == (object)right)
+				return true;
+			if ((object)left == null || (object)right == null)
+				return false;
+			return left.element.Equals (right.element); 
+		}
+
+		public static bool operator != (HtmlElement left, HtmlElement right)
+		{
+			return !(left == right);
+		}
+		#endregion
+
+		#region Events
+		private void OnClick (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[ClickEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		private static object ClickEvent = new object ();
+		public event HtmlElementEventHandler Click {
+			add { 
+				Events.AddHandler (ClickEvent, value);
+				element.Click += new NodeEventHandler (OnClick);
+			}
+			remove { 
+				Events.RemoveHandler (ClickEvent, value);
+				element.Click -= new NodeEventHandler (OnClick);
+			}
+		}
+
+		private void OnDoubleClick (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DoubleClickEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		private static object DoubleClickEvent = new object ();
+		public event HtmlElementEventHandler DoubleClick {
+			add {
+				Events.AddHandler (DoubleClickEvent, value);
+				element.DoubleClick += new NodeEventHandler (OnDoubleClick);
+			}
+			remove {
+				Events.RemoveHandler (DoubleClickEvent, value);
+				element.DoubleClick -= new NodeEventHandler (OnDoubleClick);
+			}
+		}
+
+		private void OnMouseDown (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseDownEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		private static object MouseDownEvent = new object ();
+		public event HtmlElementEventHandler MouseDown {
+			add {
+				Events.AddHandler (MouseDownEvent, value);
+				element.MouseDown += new NodeEventHandler (OnMouseDown);
+			}
+			remove {
+				Events.RemoveHandler (MouseDownEvent, value);
+				element.MouseDown -= new NodeEventHandler (OnMouseDown);
+			}
+		}
+
+		private void OnMouseUp (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseUpEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		private static object MouseUpEvent = new object ();
+		public event HtmlElementEventHandler MouseUp {
+			add {
+				Events.AddHandler (MouseUpEvent, value);
+				element.MouseUp += new NodeEventHandler (OnMouseUp);
+			}
+			remove {
+				Events.RemoveHandler (MouseUpEvent, value);
+				element.MouseUp -= new NodeEventHandler (OnMouseUp);
+			}
+		}
+
+		private void OnMouseMove (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseMoveEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		private static object MouseMoveEvent = new object ();
+		public event HtmlElementEventHandler MouseMove {
+			add {
+				Events.AddHandler (MouseMoveEvent, value);
+				element.MouseMove += new NodeEventHandler (OnMouseMove);
+			}
+			remove {
+				Events.RemoveHandler (MouseMoveEvent, value);
+				element.MouseMove -= new NodeEventHandler (OnMouseMove);
+			}
+		}
+
+		private void OnMouseOver (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseOverEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		private static object MouseOverEvent = new object ();
+		public event HtmlElementEventHandler MouseOver {
+			add { 
+				Events.AddHandler (MouseOverEvent, value);
+				element.MouseOver += new NodeEventHandler (OnMouseOver);
+			}
+			remove { 
+				Events.RemoveHandler (MouseOverEvent, value);
+				element.MouseOver -= new NodeEventHandler (OnMouseOver);
+			}
+		}
+		
+		private void OnMouseEnter (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseEnterEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		
+		private static object MouseEnterEvent = new object ();
+		public event HtmlElementEventHandler MouseEnter {
+			add {
+				Events.AddHandler (MouseEnterEvent, value);
+				element.MouseEnter += new NodeEventHandler (OnMouseEnter);
+			}
+			remove {
+				Events.RemoveHandler (MouseEnterEvent, value);
+				element.MouseEnter -= new NodeEventHandler (OnMouseEnter);
+			}
+		}
+		
+		private void OnMouseLeave (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[MouseLeaveEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		
+		private static object MouseLeaveEvent = new object ();
+		public event HtmlElementEventHandler MouseLeave {
+			add {
+				Events.AddHandler (MouseLeaveEvent, value);
+				element.MouseLeave += new NodeEventHandler (OnMouseLeave);
+			}
+			remove {
+				Events.RemoveHandler (MouseLeaveEvent, value);
+				element.MouseLeave -= new NodeEventHandler (OnMouseLeave);
+			}
+		}
+
+		private void OnKeyDown (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[KeyDownEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		
+		private static object KeyDownEvent = new object ();
+		public event HtmlElementEventHandler KeyDown {
+			add {
+				Events.AddHandler (KeyDownEvent, value);
+				element.KeyDown += new NodeEventHandler (OnKeyDown);
+			}
+			remove {
+				Events.RemoveHandler (KeyDownEvent, value);
+				element.KeyDown -= new NodeEventHandler (OnKeyDown);
+			}
+		}
+
+		private void OnKeyPress (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[KeyPressEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		
+		private static object KeyPressEvent = new object ();
+		public event HtmlElementEventHandler KeyPress {
+			add {
+				Events.AddHandler (KeyPressEvent, value);
+				element.KeyPress += new NodeEventHandler (OnKeyPress);
+			}
+			remove {
+				Events.RemoveHandler (KeyPressEvent, value);
+				element.KeyPress -= new NodeEventHandler (OnKeyPress);
+			}
+		}
+
+		private void OnKeyUp (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[KeyUpEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		
+		private static object KeyUpEvent = new object ();
+		public event HtmlElementEventHandler KeyUp {
+			add {
+				Events.AddHandler (KeyUpEvent, value);
+				element.KeyUp += new NodeEventHandler (OnKeyUp);
+			}
+			remove {
+				Events.RemoveHandler (KeyUpEvent, value);
+				element.KeyUp -= new NodeEventHandler (OnKeyUp);
+			}
+		}
+
+		private static object DragEvent = new object ();
+		public event HtmlElementEventHandler Drag {
+			add {
+				Events.AddHandler (DragEvent, value);
+			}
+			remove {
+				Events.RemoveHandler (DragEvent, value);
+			}
+		}
+
+		private void OnDrag (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+
+		private static object DragEndEvent = new object ();
+		public event HtmlElementEventHandler DragEnd {
+			add	{
+				Events.AddHandler (DragEndEvent, value);
+			}
+			remove {
+				Events.RemoveHandler (DragEndEvent, value);
+			}
+		}
+
+		private void OnDragEnd (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragEndEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		private static object DragLeaveEvent = new object ();
+		public event HtmlElementEventHandler DragLeave {
+			add {
+				Events.AddHandler (DragLeaveEvent, value);
+			}
+			remove {
+				Events.RemoveHandler (DragLeaveEvent, value);
+			}
+		}
+
+		private void OnDragLeave (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragLeaveEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		private static object DragOverEvent = new object ();
+		public event HtmlElementEventHandler DragOver {
+			add {
+				Events.AddHandler (DragOverEvent, value);
+			}
+			remove {
+				Events.RemoveHandler (DragOverEvent, value);
+			}
+		}
+
+		private void OnDragOver (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[DragOverEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		private static object FocusingEvent = new object ();
+		public event HtmlElementEventHandler Focusing {
+			add {
+				Events.AddHandler (FocusingEvent, value);
+				((INode)element).OnFocus += new NodeEventHandler (OnFocusing);
+			}
+			remove {
+				Events.RemoveHandler (FocusingEvent, value);
+				((INode)element).OnFocus -= new NodeEventHandler (OnFocusing);
+			}
+		}
+
+		private void OnFocusing (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[FocusingEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		private static object GotFocusEvent = new object ();
+		public event HtmlElementEventHandler GotFocus {
+			add {
+				Events.AddHandler (GotFocusEvent, value);
+				((INode)element).OnFocus += new NodeEventHandler (OnGotFocus);
+			}
+			remove {
+				Events.RemoveHandler (GotFocusEvent, value);
+				((INode)element).OnFocus -= new NodeEventHandler (OnGotFocus);
+			}
+		}
+
+		private void OnGotFocus (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[GotFocusEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		private static object LosingFocusEvent = new object ();
+		public event HtmlElementEventHandler LosingFocus {
+			add {
+				Events.AddHandler (LosingFocusEvent, value);
+				((INode)element).OnBlur += new NodeEventHandler (OnLosingFocus);
+			}
+			remove {
+				Events.RemoveHandler (LosingFocusEvent, value);
+				((INode)element).OnBlur -= new NodeEventHandler (OnLosingFocus);
+			}
+		}
+
+		private void OnLosingFocus (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[LosingFocusEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+		private static object LostFocusEvent = new object ();
+		public event HtmlElementEventHandler LostFocus {
+			add {
+				Events.AddHandler (LostFocusEvent, value);
+				((INode)element).OnBlur += new NodeEventHandler (OnLostFocus);
+			}
+			remove {
+				Events.RemoveHandler (LostFocusEvent, value);
+				((INode)element).OnBlur -= new NodeEventHandler (OnLostFocus);
+			}
+		}
+
+		private void OnLostFocus (object sender, EventArgs e)
+		{
+			HtmlElementEventHandler eh = (HtmlElementEventHandler) Events[LostFocusEvent];
+			if (eh != null) {
+				HtmlElementEventArgs ev = new HtmlElementEventArgs ();
+				eh (this, ev);
+			}
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementCollection.cs
@@ -1,116 +1,116 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007, 2008 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using Mono.WebBrowser.DOM;
-
-namespace System.Windows.Forms
-{
-	public sealed class HtmlElementCollection: ICollection, IEnumerable
-	{
-		private List<HtmlElement> elements;
-		private Mono.WebBrowser.IWebBrowser webHost;
-		private WebBrowser owner;
-
-		internal HtmlElementCollection (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, IElementCollection col)
-		{
-			elements = new List<HtmlElement>();
-			foreach (IElement elem in col) {
-				elements.Add (new HtmlElement (owner, webHost, elem));
-			}
-			this.webHost = webHost;
-			this.owner = owner;
-		}
-
-		private HtmlElementCollection (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, List<HtmlElement> elems)
-		{
-			elements = elems;
-			this.webHost = webHost;
-			this.owner = owner;
-		}
-
-		public int Count
-		{
-			get { 
-				return elements.Count;
-			}
-		}
-
-		public HtmlElement this[string elementId]
-		{
-			get {
-				foreach (HtmlElement element in elements) {
-					if (element.Id.Equals (elementId))
-						return element;
-				}
-				return null;
-			}
-		}
-
-		public HtmlElement this[int index]
-		{
-			get {
-				if (index > elements.Count || index < 0)
-					return null;
-				return elements[index];
-			}
-		}
-
-		public HtmlElementCollection GetElementsByName (string name)
-		{
-			List<HtmlElement> elems = new List<HtmlElement>();
-
-			foreach (HtmlElement elem in elements) {
-				if (elem.HasAttribute ("name") && elem.GetAttribute ("name").Equals (name)) {
-					elems.Add (new HtmlElement (owner, webHost, elem.element));
-				}
-			}
-			return new HtmlElementCollection (owner, webHost, elems);
-		}
-
-		
-		public IEnumerator GetEnumerator ()
-		{
-			return elements.GetEnumerator ();
-		}
-
-		void ICollection.CopyTo (Array dest, int index)
-		{
-			elements.CopyTo (dest as HtmlElement[], index);
-		}
-
-		object ICollection.SyncRoot
-		{
-			get { return this; }
-		}
-
-		bool ICollection.IsSynchronized
-		{
-			get { return false; }
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Mono.WebBrowser.DOM;
+
+namespace System.Windows.Forms
+{
+	public sealed class HtmlElementCollection: ICollection, IEnumerable
+	{
+		private List<HtmlElement> elements;
+		private Mono.WebBrowser.IWebBrowser webHost;
+		private WebBrowser owner;
+
+		internal HtmlElementCollection (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, IElementCollection col)
+		{
+			elements = new List<HtmlElement>();
+			foreach (IElement elem in col) {
+				elements.Add (new HtmlElement (owner, webHost, elem));
+			}
+			this.webHost = webHost;
+			this.owner = owner;
+		}
+
+		private HtmlElementCollection (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, List<HtmlElement> elems)
+		{
+			elements = elems;
+			this.webHost = webHost;
+			this.owner = owner;
+		}
+
+		public int Count
+		{
+			get { 
+				return elements.Count;
+			}
+		}
+
+		public HtmlElement this[string elementId]
+		{
+			get {
+				foreach (HtmlElement element in elements) {
+					if (element.Id.Equals (elementId))
+						return element;
+				}
+				return null;
+			}
+		}
+
+		public HtmlElement this[int index]
+		{
+			get {
+				if (index > elements.Count || index < 0)
+					return null;
+				return elements[index];
+			}
+		}
+
+		public HtmlElementCollection GetElementsByName (string name)
+		{
+			List<HtmlElement> elems = new List<HtmlElement>();
+
+			foreach (HtmlElement elem in elements) {
+				if (elem.HasAttribute ("name") && elem.GetAttribute ("name").Equals (name)) {
+					elems.Add (new HtmlElement (owner, webHost, elem.element));
+				}
+			}
+			return new HtmlElementCollection (owner, webHost, elems);
+		}
+
+		
+		public IEnumerator GetEnumerator ()
+		{
+			return elements.GetEnumerator ();
+		}
+
+		void ICollection.CopyTo (Array dest, int index)
+		{
+			elements.CopyTo (dest as HtmlElement[], index);
+		}
+
+		object ICollection.SyncRoot
+		{
+			get { return this; }
+		}
+
+		bool ICollection.IsSynchronized
+		{
+			get { return false; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementErrorEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementErrorEventArgs.cs
@@ -1,65 +1,65 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst		monkey@jpobst.com
-//
-
-namespace System.Windows.Forms
-{
-	public sealed class HtmlElementErrorEventArgs : EventArgs
-	{
-		#region Fields
-		private string description;
-		private bool handled;
-		private int line_number;
-		private Uri url;
-		#endregion
-
-		#region Internal Constructor
-		internal HtmlElementErrorEventArgs (string description, int lineNumber, Uri url)
-		{
-			this.description = description;
-			this.line_number = lineNumber;
-			this.url = url;
-		}
-		#endregion
-
-		#region Public Properties
-		public string Description {
-			get { return this.description; }
-		}
-		
-		public bool Handled {
-			get { return this.handled; }
-			set { this.handled = value; }
-		}
-		
-		public int LineNumber {
-			get { return this.line_number; }
-		}
-		
-		public Uri Url {
-			get { return this.url; }
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst		monkey@jpobst.com
+//
+
+namespace System.Windows.Forms
+{
+	public sealed class HtmlElementErrorEventArgs : EventArgs
+	{
+		#region Fields
+		private string description;
+		private bool handled;
+		private int line_number;
+		private Uri url;
+		#endregion
+
+		#region Internal Constructor
+		internal HtmlElementErrorEventArgs (string description, int lineNumber, Uri url)
+		{
+			this.description = description;
+			this.line_number = lineNumber;
+			this.url = url;
+		}
+		#endregion
+
+		#region Public Properties
+		public string Description {
+			get { return this.description; }
+		}
+		
+		public bool Handled {
+			get { return this.handled; }
+			set { this.handled = value; }
+		}
+		
+		public int LineNumber {
+			get { return this.line_number; }
+		}
+		
+		public Uri Url {
+			get { return this.url; }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementErrorEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementErrorEventHandler.cs
@@ -1,29 +1,29 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst	monkey@jpobst.com
-//
-
-namespace System.Windows.Forms
-{
-	public delegate void HtmlElementErrorEventHandler (object sender, HtmlElementErrorEventArgs e);
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst	monkey@jpobst.com
+//
+
+namespace System.Windows.Forms
+{
+	public delegate void HtmlElementErrorEventHandler (object sender, HtmlElementErrorEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementEventArgs.cs
@@ -1,127 +1,127 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	avidigal@novell.com
-//
-
-using System.Drawing;
-using System.ComponentModel;
-namespace System.Windows.Forms
-{
-	public sealed class HtmlElementEventArgs : EventArgs
-	{
-		#region Fields
-		private bool alt_key_pressed;
-		private bool bubble_event;
-		private Point client_mouse_position;
-		private bool ctrl_key_pressed;
-		private string event_type;
-		private HtmlElement from_element;
-		private int key_pressed_code;
-		private MouseButtons mouse_buttons_pressed;
-		private Point mouse_position;
-		private Point offset_mouse_position;
-		private bool return_value;
-		private bool shift_key_pressed;
-		private HtmlElement to_element;
-		#endregion
-
-		#region Constructor
-		internal HtmlElementEventArgs ()
-		{
-			alt_key_pressed = false;
-			bubble_event = false;
-			client_mouse_position = Point.Empty;
-			ctrl_key_pressed = false;;
-			event_type = null;
-			from_element = null;
-			key_pressed_code = 0;
-			mouse_buttons_pressed = MouseButtons.None;
-			mouse_position = Point.Empty;
-			offset_mouse_position = Point.Empty;
-			return_value = false;
-			shift_key_pressed = false;
-			to_element = null;
-		}
-		#endregion
-
-		#region Public Properties
-		public bool AltKeyPressed {
-			get { return alt_key_pressed; }
-		}
-		
-		public bool BubbleEvent {
-			get { return bubble_event; }
-			set { bubble_event = value; }
-		}
-		
-		public Point ClientMousePosition {
-			get { return client_mouse_position; }
-		}
-		
-		public bool CtrlKeyPressed {
-			get { return ctrl_key_pressed; }
-		}
-		
-		public string EventType {
-			get { return event_type; }
-		}
-
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public HtmlElement FromElement {
-			get { return from_element; }
-		}
-		
-		public int KeyPressedCode {
-			get { return key_pressed_code; }
-		}
-		
-		public MouseButtons MouseButtonsPressed {
-			get { return mouse_buttons_pressed; }
-		}
-		
-		public Point MousePosition {
-			get { return mouse_position; }
-		}
-		
-		public Point OffsetMousePosition {
-			get { return offset_mouse_position; }
-		}
-		
-		public bool ReturnValue {
-			get { return return_value; }
-			set { return_value = value; }
-		}
-		
-		public bool ShiftKeyPressed {
-			get { return shift_key_pressed; }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public HtmlElement ToElement {
-			get { return to_element; }
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	avidigal@novell.com
+//
+
+using System.Drawing;
+using System.ComponentModel;
+namespace System.Windows.Forms
+{
+	public sealed class HtmlElementEventArgs : EventArgs
+	{
+		#region Fields
+		private bool alt_key_pressed;
+		private bool bubble_event;
+		private Point client_mouse_position;
+		private bool ctrl_key_pressed;
+		private string event_type;
+		private HtmlElement from_element;
+		private int key_pressed_code;
+		private MouseButtons mouse_buttons_pressed;
+		private Point mouse_position;
+		private Point offset_mouse_position;
+		private bool return_value;
+		private bool shift_key_pressed;
+		private HtmlElement to_element;
+		#endregion
+
+		#region Constructor
+		internal HtmlElementEventArgs ()
+		{
+			alt_key_pressed = false;
+			bubble_event = false;
+			client_mouse_position = Point.Empty;
+			ctrl_key_pressed = false;;
+			event_type = null;
+			from_element = null;
+			key_pressed_code = 0;
+			mouse_buttons_pressed = MouseButtons.None;
+			mouse_position = Point.Empty;
+			offset_mouse_position = Point.Empty;
+			return_value = false;
+			shift_key_pressed = false;
+			to_element = null;
+		}
+		#endregion
+
+		#region Public Properties
+		public bool AltKeyPressed {
+			get { return alt_key_pressed; }
+		}
+		
+		public bool BubbleEvent {
+			get { return bubble_event; }
+			set { bubble_event = value; }
+		}
+		
+		public Point ClientMousePosition {
+			get { return client_mouse_position; }
+		}
+		
+		public bool CtrlKeyPressed {
+			get { return ctrl_key_pressed; }
+		}
+		
+		public string EventType {
+			get { return event_type; }
+		}
+
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Advanced)]
+		public HtmlElement FromElement {
+			get { return from_element; }
+		}
+		
+		public int KeyPressedCode {
+			get { return key_pressed_code; }
+		}
+		
+		public MouseButtons MouseButtonsPressed {
+			get { return mouse_buttons_pressed; }
+		}
+		
+		public Point MousePosition {
+			get { return mouse_position; }
+		}
+		
+		public Point OffsetMousePosition {
+			get { return offset_mouse_position; }
+		}
+		
+		public bool ReturnValue {
+			get { return return_value; }
+			set { return_value = value; }
+		}
+		
+		public bool ShiftKeyPressed {
+			get { return shift_key_pressed; }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Advanced)]
+		public HtmlElement ToElement {
+			get { return to_element; }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlElementEventHandler.cs
@@ -1,29 +1,29 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	avidigal@novell.com
-//
-
-namespace System.Windows.Forms
-{
-	public delegate void HtmlElementEventHandler (object sender, HtmlElementEventArgs e);
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	avidigal@novell.com
+//
+
+namespace System.Windows.Forms
+{
+	public delegate void HtmlElementEventHandler (object sender, HtmlElementEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlWindowCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/HtmlWindowCollection.cs
@@ -1,87 +1,87 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007, 2008 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita (avidigal@novell.com)
-//
-
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using Mono.WebBrowser.DOM;
-
-namespace System.Windows.Forms
-{
-	public class HtmlWindowCollection: ICollection, IEnumerable
-	{
-		private List<HtmlWindow> windows;
-		
-
-		internal HtmlWindowCollection (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, IWindowCollection col)
-		{
-			windows = new List<HtmlWindow>();
-			foreach (IWindow window in col)
-				windows.Add (new HtmlWindow (owner, webHost, window));
-		}
-		
-		public int Count {
-			get {
-				return windows.Count;
-			}
-		}
-
-		public HtmlWindow this [string windowId] {
-			get {
-				foreach (HtmlWindow window in windows)
-					if (window.Name.Equals (windowId))
-						return window;
-				return null;
-			}
-		}
-		
-		public HtmlWindow this [int index] {
-			get {
-				if (index > windows.Count || index < 0)
-					return null;
-				return windows [index];
-			}
-		}
-
-		public IEnumerator GetEnumerator ()
-		{
-			return windows.GetEnumerator ();
-		}
-
-		void ICollection.CopyTo (Array dest, int index)
-		{
-			windows.CopyTo (dest as HtmlWindow[], index);
-		}
-
-		object ICollection.SyncRoot {
-			get { return this; }
-		}
-
-		bool ICollection.IsSynchronized {
-			get { return false; }
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+//
+
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Mono.WebBrowser.DOM;
+
+namespace System.Windows.Forms
+{
+	public class HtmlWindowCollection: ICollection, IEnumerable
+	{
+		private List<HtmlWindow> windows;
+		
+
+		internal HtmlWindowCollection (WebBrowser owner, Mono.WebBrowser.IWebBrowser webHost, IWindowCollection col)
+		{
+			windows = new List<HtmlWindow>();
+			foreach (IWindow window in col)
+				windows.Add (new HtmlWindow (owner, webHost, window));
+		}
+		
+		public int Count {
+			get {
+				return windows.Count;
+			}
+		}
+
+		public HtmlWindow this [string windowId] {
+			get {
+				foreach (HtmlWindow window in windows)
+					if (window.Name.Equals (windowId))
+						return window;
+				return null;
+			}
+		}
+		
+		public HtmlWindow this [int index] {
+			get {
+				if (index > windows.Count || index < 0)
+					return null;
+				return windows [index];
+			}
+		}
+
+		public IEnumerator GetEnumerator ()
+		{
+			return windows.GetEnumerator ();
+		}
+
+		void ICollection.CopyTo (Array dest, int index)
+		{
+			windows.CopyTo (dest as HtmlWindow[], index);
+		}
+
+		object ICollection.SyncRoot {
+			get { return this; }
+		}
+
+		bool ICollection.IsSynchronized {
+			get { return false; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/ImageKeyConverter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/ImageKeyConverter.cs
@@ -1,96 +1,96 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//   Jonathan Pobst  monkey@jpobst.com
-//
-
-using System.Drawing;
-using System.ComponentModel;
-using System.Collections;
-using System.Diagnostics;
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-namespace System.Windows.Forms
-{
-	public class ImageKeyConverter : StringConverter
-	{
-		#region Constructors
-		public ImageKeyConverter () { }
-		#endregion Constructors
-
-		#region Protected Properties
-		protected virtual bool IncludeNoneAsStandardValue {
-			get { return true; }
-		}
-		#endregion Protected Properties
-
-		#region Public Methods
-		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
-		{
-			if (sourceType == typeof (string))
-				return true;
-
-			return false;
-		}
-		
-		public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
-		{
-			if (value != null && value is string)
-				return (string) value;
-			else
-				return base.ConvertFrom (context, culture, value);
-		}
-
-		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture,
-						  object value, Type destinationType)
-		{
-			if (value == null)
-				return "(none)";
-			else if (destinationType == typeof (string)) {
-				if (value is string && (string) value == string.Empty)
-					return "(none)";
-				else
-					return value.ToString ();
-			}
-			else
-				return base.ConvertTo (context, culture, value, destinationType);
-		}
-
-		public override StandardValuesCollection GetStandardValues (ITypeDescriptorContext context)
-		{
-			string[] stdVal = new string[] { string.Empty };
-			return new TypeConverter.StandardValuesCollection (stdVal);
-		}
-
-		public override bool GetStandardValuesExclusive (ITypeDescriptorContext context)
-		{
-			return true;
-		}
-
-		public override bool GetStandardValuesSupported (ITypeDescriptorContext context)
-		{
-			return true;
-		}
-		#endregion Public Methods
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//   Jonathan Pobst  monkey@jpobst.com
+//
+
+using System.Drawing;
+using System.ComponentModel;
+using System.Collections;
+using System.Diagnostics;
+using System.Globalization;
+using System.Runtime.InteropServices;
+
+namespace System.Windows.Forms
+{
+	public class ImageKeyConverter : StringConverter
+	{
+		#region Constructors
+		public ImageKeyConverter () { }
+		#endregion Constructors
+
+		#region Protected Properties
+		protected virtual bool IncludeNoneAsStandardValue {
+			get { return true; }
+		}
+		#endregion Protected Properties
+
+		#region Public Methods
+		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+		{
+			if (sourceType == typeof (string))
+				return true;
+
+			return false;
+		}
+		
+		public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
+		{
+			if (value != null && value is string)
+				return (string) value;
+			else
+				return base.ConvertFrom (context, culture, value);
+		}
+
+		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture,
+						  object value, Type destinationType)
+		{
+			if (value == null)
+				return "(none)";
+			else if (destinationType == typeof (string)) {
+				if (value is string && (string) value == string.Empty)
+					return "(none)";
+				else
+					return value.ToString ();
+			}
+			else
+				return base.ConvertTo (context, culture, value, destinationType);
+		}
+
+		public override StandardValuesCollection GetStandardValues (ITypeDescriptorContext context)
+		{
+			string[] stdVal = new string[] { string.Empty };
+			return new TypeConverter.StandardValuesCollection (stdVal);
+		}
+
+		public override bool GetStandardValuesExclusive (ITypeDescriptorContext context)
+		{
+			return true;
+		}
+
+		public override bool GetStandardValuesSupported (ITypeDescriptorContext context)
+		{
+			return true;
+		}
+		#endregion Public Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/Line.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/Line.cs
@@ -1,811 +1,811 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2004-2006 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//	Peter Bartok	pbartok@novell.com
-//
-//
-
-using System;
-using System.Collections;
-using System.Drawing;
-using System.Drawing.Text;
-using System.Text;
-
-namespace System.Windows.Forms
-{
-	internal class Line : ICloneable, IComparable
-	{
-		#region	Local Variables
-
-		internal Document document;
-		// Stuff that matters for our line
-		internal StringBuilder		text;			// Characters for the line
-		internal float[]		widths;			// Width of each character; always one larger than text.Length
-		internal int			space;			// Number of elements in text and widths
-		internal int			line_no;		// Line number
-		internal LineTag		tags;			// Tags describing the text
-		internal int			offset;			// Baseline can be on the X or Y axis depending if we are in multiline mode or not
-		internal int			height;			// Height of the line (height of tallest tag)
-		internal int			ascent;			// Ascent of the line (ascent of the tallest tag)
-		internal HorizontalAlignment	alignment;		// Alignment of the line
-		internal int			align_shift;		// Pixel shift caused by the alignment
-		internal int			indent;			// Left indent for the first line
-		internal int			hanging_indent;		// Hanging indent (left indent for all but the first line)
-		internal int			right_indent;		// Right indent for all lines
-		internal LineEnding		ending;
-
-		// Stuff that's important for the tree
-		internal Line			parent;			// Our parent line
-		internal Line			left;			// Line with smaller line number
-		internal Line			right;			// Line with higher line number
-		internal LineColor		color;			// We're doing a black/red tree. this is the node color
-		static int			DEFAULT_TEXT_LEN = 0;	// 
-		internal bool			recalc;			// Line changed
-
-		private static Hashtable kerning_fonts = new Hashtable ();		// record which fonts use kerning
-		#endregion	// Local Variables
-
-		#region Constructors
-		internal Line (Document document, LineEnding ending)
-		{
-			this.document = document; 
-			color = LineColor.Red;
-			left = null;
-			right = null;
-			parent = null;
-			text = null;
-			recalc = true;
-			alignment = document.alignment;
-
-			this.ending = ending;
-		}
-
-		internal Line (Document document, int LineNo, string Text, Font font, Color color, LineEnding ending) : this (document, ending)
-		{
-			space = Text.Length > DEFAULT_TEXT_LEN ? Text.Length+1 : DEFAULT_TEXT_LEN;
-
-			text = new StringBuilder (Text, space);
-			line_no = LineNo;
-			this.ending = ending;
-
-			widths = new float[space + 1];
-
-			
-			tags = new LineTag(this, 1);
-			tags.Font = font;
-			tags.Color = color;
-		}
-
-		internal Line (Document document, int LineNo, string Text, HorizontalAlignment align, Font font, Color color, LineEnding ending) : this(document, ending)
-		{
-			space = Text.Length > DEFAULT_TEXT_LEN ? Text.Length+1 : DEFAULT_TEXT_LEN;
-
-			text = new StringBuilder (Text, space);
-			line_no = LineNo;
-			this.ending = ending;
-			alignment = align;
-
-			widths = new float[space + 1];
-
-			
-			tags = new LineTag(this, 1);
-			tags.Font = font;
-			tags.Color = color;
-		}
-
-		internal Line (Document document, int LineNo, string Text, LineTag tag, LineEnding ending) : this(document, ending)
-		{
-			space = Text.Length > DEFAULT_TEXT_LEN ? Text.Length+1 : DEFAULT_TEXT_LEN;
-
-			text = new StringBuilder (Text, space);
-			this.ending = ending;
-			line_no = LineNo;
-
-			widths = new float[space + 1];
-			tags = tag;
-		}
-
-		#endregion	// Constructors
-
-		#region Internal Properties
-		internal HorizontalAlignment Alignment {
-			get { return alignment; }
-			set {
-				if (alignment != value) {
-					alignment = value;
-					recalc = true;
-				}
-			}
-		}
-
-		internal int HangingIndent {
-			get { return hanging_indent; }
-			set {
-				hanging_indent = value;
-				recalc = true;
-			}
-		}
-
-		// UIA: Method used via reflection in TextRangeProvider
-		internal int Height {
-			get { return height; }
-			set { height = value; }
-		}
-
-		internal int Indent {
-			get { return indent; }
-			set { 
-				indent = value;
-				recalc = true;
-			}
-		}
-
-		internal int LineNo {
-			get { return line_no; }
-			set { line_no = value; }
-		}
-
-		internal int RightIndent {
-			get { return right_indent; }
-			set { 
-				right_indent = value;
-				recalc = true;
-			}
-		}
-			
-		// UIA: Method used via reflection in TextRangeProvider
-		internal int Width {
-			get {
-				int res = (int) widths [text.Length];
-				return res;
-			}
-		}
-
-		internal string Text {
-			get { return text.ToString(); }
-			set {
-				int prev_length = text.Length;
-				text = new StringBuilder(value, value.Length > DEFAULT_TEXT_LEN ? value.Length + 1 : DEFAULT_TEXT_LEN);
-
-				if (text.Length > prev_length)
-					Grow (text.Length - prev_length);
-			}
-		}
-		
-		// UIA: Method used via reflection in TextRangeProvider
-		internal int X {
-			get {
-				if (document.multiline)
-					return align_shift;
-				return offset + align_shift;
-			}
-		}
-
-		// UIA: Method used via reflection in TextRangeProvider
-		internal int Y {
-			get {
-				if (!document.multiline)
-					return document.top_margin;
-				return document.top_margin + offset;
-			}
-		}
-		#endregion	// Internal Properties
-
-		#region Internal Methods
-
-		/// <summary>
-		///  Builds a simple code to record which tags are links and how many tags
-		///  used to compare lines before and after to see if the scan for links
-		///  process has changed anything.
-		/// </summary>
-		internal void LinkRecord (StringBuilder linkRecord)
-		{
-			LineTag tag = tags;
-
-			while (tag != null) {
-				if (tag.IsLink)
-					linkRecord.Append ("L");
-				else
-					linkRecord.Append ("N");
-
-				tag = tag.Next;
-			}
-		}
-
-		/// <summary>
-		///  Clears all link properties from tags
-		/// </summary>
-		internal void ClearLinks ()
-		{
-			LineTag tag = tags;
-
-			while (tag != null) {
-				tag.IsLink = false;
-				tag = tag.Next;
-			}
-		}
-
-		public void DeleteCharacters(int pos, int count)
-		{
-			LineTag tag;
-			bool streamline = false;
-			
-			// Can't delete more than the line has
-			if (pos >= text.Length)
-				return;
-
-			// Find the first tag that we are deleting from
-			tag = FindTag (pos + 1);
-
-			// Remove the characters from the line
-			text.Remove (pos, count);
-
-			if (tag == null)
-				return;
-
-			// Check if we're crossing tag boundaries
-			if ((pos + count) > (tag.Start + tag.Length - 1)) {
-				int left;
-
-				// We have to delete cross tag boundaries
-				streamline = true;
-				left = count;
-
-				left -= tag.Start + tag.Length - pos - 1;
-				tag = tag.Next;
-				
-				// Update the start of each tag
-				while ((tag != null) && (left > 0)) {
-					// Cache tag.Length as is will be indireclty modified
-					// by changes to tag.Start
-					int tag_length = tag.Length;
-					tag.Start -= count - left;
-
-					if (tag_length > left) {
-						left = 0;
-					} else {
-						left -= tag_length;
-						tag = tag.Next;
-					}
-
-				}
-			} else {
-				// We got off easy, same tag
-
-				if (tag.Length == 0)
-					streamline = true;
-			}
-
-			// Delete empty orphaned tags at the end
-			LineTag walk = tag;
-			while (walk != null && walk.Next != null && walk.Next.Length == 0) {
-				LineTag t = walk;
-				walk.Next = walk.Next.Next;
-				if (walk.Next != null)
-					walk.Next.Previous = t;
-				walk = walk.Next;
-			}
-
-			// Adjust the start point of any tags following
-			if (tag != null) {
-				tag = tag.Next;
-				while (tag != null) {
-					tag.Start -= count;
-					tag = tag.Next;
-				}
-			}
-
-			recalc = true;
-
-			if (streamline)
-				Streamline (document.Lines);
-		}
-		
-		// This doesn't do exactly what you would think, it just pulls off the \n part of the ending
-		internal void DrawEnding (Graphics dc, float y)
-		{
-			if (document.multiline)
-				return;
-			LineTag last = tags;
-			while (last.Next != null)
-				last = last.Next;
-
-			string end_str = null;
-			switch (document.LineEndingLength (ending)) {
-			case 0:
-				return;
-			case 1:
-				end_str = "\u0013";
-				break;
-			case 2:
-				end_str = "\u0013\u0013";
-				break;
-			case 3:
-				end_str = "\u0013\u0013\u0013";
-				break;
-			}
-
-			TextBoxTextRenderer.DrawText (dc, end_str, last.Font, last.Color, X + widths [TextLengthWithoutEnding ()] - document.viewport_x + document.OffsetX, y, true);
-		}
-
-		/// <summary> Find the tag on a line based on the character position, pos is 0-based</summary>
-		internal LineTag FindTag (int pos)
-		{
-			LineTag tag;
-
-			if (pos == 0)
-				return tags;
-
-			tag = this.tags;
-
-			if (pos >= text.Length)
-				pos = text.Length - 1;
-
-			while (tag != null) {
-				if (((tag.Start - 1) <= pos) && (pos <= (tag.Start + tag.Length - 1)))
-					return LineTag.GetFinalTag (tag);
-
-				tag = tag.Next;
-			}
-			
-			return null;
-		}
-
-		public override int GetHashCode ()
-		{
-			return base.GetHashCode ();
-		}
-		
-		// Get the tag that contains this x coordinate
-		public LineTag GetTag (int x)
-		{
-			LineTag tag = tags;
-			
-			// Coord is to the left of the first character
-			if (x < tag.X)
-				return LineTag.GetFinalTag (tag);
-			
-			// All we have is a linked-list of tags, so we have
-			// to do a linear search.  But there shouldn't be
-			// too many tags per line in general.
-			while (true) {
-				if (x >= tag.X && x < (tag.X + tag.Width))
-					return tag;
-					
-				if (tag.Next != null)
-					tag = tag.Next;
-				else
-					return LineTag.GetFinalTag (tag);			
-			}
-		}
-					
-		// Make sure we always have enoughs space in text and widths
-		internal void Grow (int minimum)
-		{
-			int	length;
-			float[]	new_widths;
-
-			length = text.Length;
-
-			if ((length + minimum) > space) {
-				// We need to grow; double the size
-
-				if ((length + minimum) > (space * 2)) {
-					new_widths = new float[length + minimum * 2 + 1];
-					space = length + minimum * 2;
-				} else {				
-					new_widths = new float[space * 2 + 1];
-					space *= 2;
-				}
-				widths.CopyTo (new_widths, 0);
-
-				widths = new_widths;
-			}
-		}
-		public void InsertString (int pos, string s)
-		{
-			InsertString (pos, s, FindTag (pos));
-		}
-
-		// Inserts a string at the given position
-		public void InsertString (int pos, string s, LineTag tag)
-		{
-			int len = s.Length;
-
-			// Insert the text into the StringBuilder
-			text.Insert (pos, s);
-
-			// Update the start position of every tag after this one
-			tag = tag.Next;
-
-			while (tag != null) {
-				tag.Start += len;
-				tag = tag.Next;
-			}
-
-			// Make sure we have room in the widths array
-			Grow (len);
-
-			// This line needs to be recalculated
-			recalc = true;
-		}
-
-		/// <summary>
-		/// Go through all tags on a line and recalculate all size-related values;
-		/// returns true if lineheight changed
-		/// </summary>
-		internal bool RecalculateLine (Graphics g, Document doc)
-		{
-			return RecalculateLine (g, doc, kerning_fonts.ContainsKey (tags.Font.GetHashCode ()));
-		}
-
-		private bool RecalculateLine (Graphics g, Document doc, bool handleKerning)
-		{
-			LineTag tag;
-			int pos;
-			int len;
-			SizeF size;
-			float w;
-			int prev_offset;
-			bool retval;
-			bool wrapped;
-			Line line;
-			int wrap_pos;
-			int prev_height;
-			int prev_ascent;
-
-			pos = 0;
-			len = this.text.Length;
-			tag = this.tags;
-			prev_offset = this.offset;	// For drawing optimization calculations
-			prev_height = this.height;
-			prev_ascent = this.ascent;
-			this.height = 0;		// Reset line height
-			this.ascent = 0;		// Reset the ascent for the line
-			tag.Shift = 0;			// Reset shift (which should be stored as pixels, not as points)
-
-			if (ending == LineEnding.Wrap)
-				widths[0] = document.left_margin + hanging_indent;
-			else
-				widths[0] = document.left_margin + indent;
-
-			this.recalc = false;
-			retval = false;
-			wrapped = false;
-
-			wrap_pos = 0;
-
-			while (pos < len) {
-
-				while (tag.Length == 0) {	// We should always have tags after a tag.length==0 unless len==0
-					//tag.Ascent = 0;
-					tag.Shift = (tag.Line.ascent - tag.Ascent) / 72;
-					tag = tag.Next;
-				}
-
-				// kerning is a problem.  The original code in this method assumed that the
-				// width of a string equals the sum of the widths of its characters.  This is
-				// not true when kerning takes place during the display process.  Since it's
-				// impossible to find out easily whether a font does kerning, and with which
-				// characters, we just detect that kerning must have happened and use a slower
-				// (but accurate) measurement for those fonts henceforth.  Without handling
-				// kerning, many fonts for English become unreadable during typing for many
-				// input strings, and text in many other languages is even worse trying to
-				// type in TextBoxes.
-				// See https://bugzilla.xamarin.com/show_bug.cgi?id=26478 for details.
-				float newWidth;
-				if (handleKerning && !Char.IsWhiteSpace(text[pos]))
-				{
-					// MeasureText doesn't measure trailing spaces, so we do the best we can for those
-					// in the else branch.
-					size = TextBoxTextRenderer.MeasureText (g, text.ToString (0, pos + 1), tag.Font);
-					newWidth = widths[0] + size.Width;
-				}
-				else
-				{
-					size = tag.SizeOfPosition (g, pos);
-					w = size.Width;
-					newWidth = widths[pos] + w;
-				}
-
-				if (Char.IsWhiteSpace (text[pos]))
-					wrap_pos = pos + 1;
-
-				if (doc.wrap) {
-					if ((wrap_pos > 0) && (wrap_pos != len) && (newWidth + 5) > (doc.viewport_width - this.right_indent)) {
-						// Make sure to set the last width of the line before wrapping
-						widths[pos + 1] = newWidth;
-
-						pos = wrap_pos;
-						len = text.Length;
-						doc.Split (this, tag, pos);
-						ending = LineEnding.Wrap;
-						len = this.text.Length;
-
-						retval = true;
-						wrapped = true;
-					} else if (pos > 1 && newWidth > (doc.viewport_width - this.right_indent)) {
-						// No suitable wrap position was found so break right in the middle of a word
-
-						// Make sure to set the last width of the line before wrapping
-						widths[pos + 1] = newWidth;
-
-						doc.Split (this, tag, pos);
-						ending = LineEnding.Wrap;
-						len = this.text.Length;
-						retval = true;
-						wrapped = true;
-					}
-				}
-
-				// Contract all wrapped lines that follow back into our line
-				if (!wrapped) {
-					pos++;
-
-					widths[pos] = newWidth;
-
-					if (pos == len) {
-						line = doc.GetLine (this.line_no + 1);
-						if ((line != null) && (ending == LineEnding.Wrap || ending == LineEnding.None)) {
-							// Pull the two lines together
-							doc.Combine (this.line_no, this.line_no + 1);
-							len = this.text.Length;
-							retval = true;
-						}
-					}
-				}
-
-				if (pos == (tag.Start - 1 + tag.Length)) {
-					// We just found the end of our current tag
-					tag.Height = tag.MaxHeight ();
-
-					// Check if we're the tallest on the line (so far)
-					if (tag.Height > this.height)
-						this.height = tag.Height;	// Yep; make sure the line knows
-
-					if (tag.Ascent > this.ascent) {
-						LineTag t;
-
-						// We have a tag that has a taller ascent than the line;
-						t = tags;
-						while (t != null && t != tag) {
-							t.Shift = (tag.Ascent - t.Ascent) / 72;
-							t = t.Next;
-						}
-
-						// Save on our line
-						this.ascent = tag.Ascent;
-					} else {
-						tag.Shift = (this.ascent - tag.Ascent) / 72;
-					}
-
-					tag = tag.Next;
-					if (tag != null) {
-						tag.Shift = 0;
-						wrap_pos = pos;
-					}
-				}
-			}
-
-			var fullText = text.ToString();
-			if (!handleKerning && fullText.Length > 1 && !wrapped)
-			{
-				// Check whether kerning takes place for this string and font.
-				var realSize = TextBoxTextRenderer.MeasureText(g, fullText, tags.Font);
-				float realWidth = realSize.Width + widths[0];
-				// MeasureText ignores trailing whitespace, so we will too at this point.
-				int length = fullText.TrimEnd().Length;
-				float sumWidth = widths[length];
-				if (realWidth != sumWidth)
-				{
-					kerning_fonts.Add(tags.Font.GetHashCode (), true);
-					// Using a slightly incorrect width this time around isn't that bad. All that happens
-					// is that the cursor is a pixel or two off until the next character is typed.  It's
-					// the accumulation of pixel after pixel that causes display problems.
-				}
-			}
-
-			while (tag != null) {	
-				tag.Shift = (tag.Line.ascent - tag.Ascent) / 72;
-				tag = tag.Next;
-			}
-
-			if (this.height == 0) {
-				this.height = tags.Font.Height;
-				tags.Height = this.height;
-				tags.Shift = 0;
-			}
-
-			if (prev_offset != offset || prev_height != this.height || prev_ascent != this.ascent)
-				retval = true;
-
-			return retval;
-		}
-
-		/// <summary>
-		/// Recalculate a single line using the same char for every character in the line
-		/// </summary>
-		internal bool RecalculatePasswordLine (Graphics g, Document doc)
-		{
-			LineTag tag;
-			int pos;
-			int len;
-			float w;
-			bool ret;
-
-			pos = 0;
-			len = this.text.Length;
-			tag = this.tags;
-			ascent = 0;
-			tag.Shift = 0;
-
-			this.recalc = false;
-			widths[0] = document.left_margin + indent;
-
-			w = TextBoxTextRenderer.MeasureText (g, doc.password_char, tags.Font).Width;
-
-			if (this.height != (int)tag.Font.Height)
-				ret = true;
-			else
-				ret = false;
-
-			this.height = (int)tag.Font.Height;
-			tag.Height = this.height;
-
-			this.ascent = tag.Ascent;
-
-			while (pos < len) {
-				pos++;
-				widths[pos] = widths[pos - 1] + w;
-			}
-
-			return ret;
-		}
-		
-		internal void Streamline (int lines)
-		{
-			LineTag current;
-			LineTag next;
-
-			current = this.tags;
-			next = current.Next;
-
-			//
-			// Catch what the loop below wont; eliminate 0 length 
-			// tags, but only if there are other tags after us
-			// We only eliminate text tags if there is another text tag
-			// after it.  Otherwise we wind up trying to type on picture tags
-			//
-			while ((current.Length == 0) && (next != null) && (next.IsTextTag)) {
-				tags = next;
-				tags.Previous = null;
-				current = next;
-				next = current.Next;
-			}
-
-
-			if (next == null)
-				return;
-
-			while (next != null) {
-				// Take out 0 length tags unless it's the last tag in the document
-				if (current.IsTextTag && next.Length == 0 && next.IsTextTag) {
-					if ((next.Next != null) || (line_no != lines)) {
-						current.Next = next.Next;
-						if (current.Next != null) {
-							current.Next.Previous = current;
-						}
-						next = current.Next;
-						continue;
-					}
-				}
-				
-				if (current.Combine (next)) {
-					next = current.Next;
-					continue;
-				}
-
-				current = current.Next;
-				next = current.Next;
-			}
-		}
-
-		internal int TextLengthWithoutEnding ()
-		{
-			return text.Length - document.LineEndingLength (ending);
-		}
-
-		internal string TextWithoutEnding ()
-		{
-			return text.ToString (0, text.Length - document.LineEndingLength (ending));
-		}
-		#endregion	// Internal Methods
-
-		#region Administrative
-		public object Clone ()
-		{
-			Line	clone;
-
-			clone = new Line (document, ending);
-
-			clone.text = text;
-
-			if (left != null)
-				clone.left = (Line)left.Clone();
-
-			if (left != null)
-				clone.left = (Line)left.Clone();
-
-			return clone;
-		}
-
-		internal object CloneLine ()
-		{
-			Line	clone;
-
-			clone = new Line (document, ending);
-
-			clone.text = text;
-
-			return clone;
-		}
-
-		public int CompareTo (object obj)
-		{
-			if (obj == null)
-				return 1;
-
-			if (! (obj is Line))
-				throw new ArgumentException("Object is not of type Line", "obj");
-
-			if (line_no < ((Line)obj).line_no)
-				return -1;
-			else if (line_no > ((Line)obj).line_no)
-				return 1;
-			else
-				return 0;
-		}
-
-		public override bool Equals (object obj)
-		{
-			if (obj == null)
-				return false;
-
-			if (!(obj is Line))
-				return false;
-
-			if (obj == this)
-				return true;
-
-			if (line_no == ((Line)obj).line_no)
-				return true;
-
-			return false;
-		}
-
-		public override string ToString()
-		{
-			return string.Format ("Line {0}", line_no);
-		}
-		#endregion	// Administrative
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2004-2006 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//	Peter Bartok	pbartok@novell.com
+//
+//
+
+using System;
+using System.Collections;
+using System.Drawing;
+using System.Drawing.Text;
+using System.Text;
+
+namespace System.Windows.Forms
+{
+	internal class Line : ICloneable, IComparable
+	{
+		#region	Local Variables
+
+		internal Document document;
+		// Stuff that matters for our line
+		internal StringBuilder		text;			// Characters for the line
+		internal float[]		widths;			// Width of each character; always one larger than text.Length
+		internal int			space;			// Number of elements in text and widths
+		internal int			line_no;		// Line number
+		internal LineTag		tags;			// Tags describing the text
+		internal int			offset;			// Baseline can be on the X or Y axis depending if we are in multiline mode or not
+		internal int			height;			// Height of the line (height of tallest tag)
+		internal int			ascent;			// Ascent of the line (ascent of the tallest tag)
+		internal HorizontalAlignment	alignment;		// Alignment of the line
+		internal int			align_shift;		// Pixel shift caused by the alignment
+		internal int			indent;			// Left indent for the first line
+		internal int			hanging_indent;		// Hanging indent (left indent for all but the first line)
+		internal int			right_indent;		// Right indent for all lines
+		internal LineEnding		ending;
+
+		// Stuff that's important for the tree
+		internal Line			parent;			// Our parent line
+		internal Line			left;			// Line with smaller line number
+		internal Line			right;			// Line with higher line number
+		internal LineColor		color;			// We're doing a black/red tree. this is the node color
+		static int			DEFAULT_TEXT_LEN = 0;	// 
+		internal bool			recalc;			// Line changed
+
+		private static Hashtable kerning_fonts = new Hashtable ();		// record which fonts use kerning
+		#endregion	// Local Variables
+
+		#region Constructors
+		internal Line (Document document, LineEnding ending)
+		{
+			this.document = document; 
+			color = LineColor.Red;
+			left = null;
+			right = null;
+			parent = null;
+			text = null;
+			recalc = true;
+			alignment = document.alignment;
+
+			this.ending = ending;
+		}
+
+		internal Line (Document document, int LineNo, string Text, Font font, Color color, LineEnding ending) : this (document, ending)
+		{
+			space = Text.Length > DEFAULT_TEXT_LEN ? Text.Length+1 : DEFAULT_TEXT_LEN;
+
+			text = new StringBuilder (Text, space);
+			line_no = LineNo;
+			this.ending = ending;
+
+			widths = new float[space + 1];
+
+			
+			tags = new LineTag(this, 1);
+			tags.Font = font;
+			tags.Color = color;
+		}
+
+		internal Line (Document document, int LineNo, string Text, HorizontalAlignment align, Font font, Color color, LineEnding ending) : this(document, ending)
+		{
+			space = Text.Length > DEFAULT_TEXT_LEN ? Text.Length+1 : DEFAULT_TEXT_LEN;
+
+			text = new StringBuilder (Text, space);
+			line_no = LineNo;
+			this.ending = ending;
+			alignment = align;
+
+			widths = new float[space + 1];
+
+			
+			tags = new LineTag(this, 1);
+			tags.Font = font;
+			tags.Color = color;
+		}
+
+		internal Line (Document document, int LineNo, string Text, LineTag tag, LineEnding ending) : this(document, ending)
+		{
+			space = Text.Length > DEFAULT_TEXT_LEN ? Text.Length+1 : DEFAULT_TEXT_LEN;
+
+			text = new StringBuilder (Text, space);
+			this.ending = ending;
+			line_no = LineNo;
+
+			widths = new float[space + 1];
+			tags = tag;
+		}
+
+		#endregion	// Constructors
+
+		#region Internal Properties
+		internal HorizontalAlignment Alignment {
+			get { return alignment; }
+			set {
+				if (alignment != value) {
+					alignment = value;
+					recalc = true;
+				}
+			}
+		}
+
+		internal int HangingIndent {
+			get { return hanging_indent; }
+			set {
+				hanging_indent = value;
+				recalc = true;
+			}
+		}
+
+		// UIA: Method used via reflection in TextRangeProvider
+		internal int Height {
+			get { return height; }
+			set { height = value; }
+		}
+
+		internal int Indent {
+			get { return indent; }
+			set { 
+				indent = value;
+				recalc = true;
+			}
+		}
+
+		internal int LineNo {
+			get { return line_no; }
+			set { line_no = value; }
+		}
+
+		internal int RightIndent {
+			get { return right_indent; }
+			set { 
+				right_indent = value;
+				recalc = true;
+			}
+		}
+			
+		// UIA: Method used via reflection in TextRangeProvider
+		internal int Width {
+			get {
+				int res = (int) widths [text.Length];
+				return res;
+			}
+		}
+
+		internal string Text {
+			get { return text.ToString(); }
+			set {
+				int prev_length = text.Length;
+				text = new StringBuilder(value, value.Length > DEFAULT_TEXT_LEN ? value.Length + 1 : DEFAULT_TEXT_LEN);
+
+				if (text.Length > prev_length)
+					Grow (text.Length - prev_length);
+			}
+		}
+		
+		// UIA: Method used via reflection in TextRangeProvider
+		internal int X {
+			get {
+				if (document.multiline)
+					return align_shift;
+				return offset + align_shift;
+			}
+		}
+
+		// UIA: Method used via reflection in TextRangeProvider
+		internal int Y {
+			get {
+				if (!document.multiline)
+					return document.top_margin;
+				return document.top_margin + offset;
+			}
+		}
+		#endregion	// Internal Properties
+
+		#region Internal Methods
+
+		/// <summary>
+		///  Builds a simple code to record which tags are links and how many tags
+		///  used to compare lines before and after to see if the scan for links
+		///  process has changed anything.
+		/// </summary>
+		internal void LinkRecord (StringBuilder linkRecord)
+		{
+			LineTag tag = tags;
+
+			while (tag != null) {
+				if (tag.IsLink)
+					linkRecord.Append ("L");
+				else
+					linkRecord.Append ("N");
+
+				tag = tag.Next;
+			}
+		}
+
+		/// <summary>
+		///  Clears all link properties from tags
+		/// </summary>
+		internal void ClearLinks ()
+		{
+			LineTag tag = tags;
+
+			while (tag != null) {
+				tag.IsLink = false;
+				tag = tag.Next;
+			}
+		}
+
+		public void DeleteCharacters(int pos, int count)
+		{
+			LineTag tag;
+			bool streamline = false;
+			
+			// Can't delete more than the line has
+			if (pos >= text.Length)
+				return;
+
+			// Find the first tag that we are deleting from
+			tag = FindTag (pos + 1);
+
+			// Remove the characters from the line
+			text.Remove (pos, count);
+
+			if (tag == null)
+				return;
+
+			// Check if we're crossing tag boundaries
+			if ((pos + count) > (tag.Start + tag.Length - 1)) {
+				int left;
+
+				// We have to delete cross tag boundaries
+				streamline = true;
+				left = count;
+
+				left -= tag.Start + tag.Length - pos - 1;
+				tag = tag.Next;
+				
+				// Update the start of each tag
+				while ((tag != null) && (left > 0)) {
+					// Cache tag.Length as is will be indireclty modified
+					// by changes to tag.Start
+					int tag_length = tag.Length;
+					tag.Start -= count - left;
+
+					if (tag_length > left) {
+						left = 0;
+					} else {
+						left -= tag_length;
+						tag = tag.Next;
+					}
+
+				}
+			} else {
+				// We got off easy, same tag
+
+				if (tag.Length == 0)
+					streamline = true;
+			}
+
+			// Delete empty orphaned tags at the end
+			LineTag walk = tag;
+			while (walk != null && walk.Next != null && walk.Next.Length == 0) {
+				LineTag t = walk;
+				walk.Next = walk.Next.Next;
+				if (walk.Next != null)
+					walk.Next.Previous = t;
+				walk = walk.Next;
+			}
+
+			// Adjust the start point of any tags following
+			if (tag != null) {
+				tag = tag.Next;
+				while (tag != null) {
+					tag.Start -= count;
+					tag = tag.Next;
+				}
+			}
+
+			recalc = true;
+
+			if (streamline)
+				Streamline (document.Lines);
+		}
+		
+		// This doesn't do exactly what you would think, it just pulls off the \n part of the ending
+		internal void DrawEnding (Graphics dc, float y)
+		{
+			if (document.multiline)
+				return;
+			LineTag last = tags;
+			while (last.Next != null)
+				last = last.Next;
+
+			string end_str = null;
+			switch (document.LineEndingLength (ending)) {
+			case 0:
+				return;
+			case 1:
+				end_str = "\u0013";
+				break;
+			case 2:
+				end_str = "\u0013\u0013";
+				break;
+			case 3:
+				end_str = "\u0013\u0013\u0013";
+				break;
+			}
+
+			TextBoxTextRenderer.DrawText (dc, end_str, last.Font, last.Color, X + widths [TextLengthWithoutEnding ()] - document.viewport_x + document.OffsetX, y, true);
+		}
+
+		/// <summary> Find the tag on a line based on the character position, pos is 0-based</summary>
+		internal LineTag FindTag (int pos)
+		{
+			LineTag tag;
+
+			if (pos == 0)
+				return tags;
+
+			tag = this.tags;
+
+			if (pos >= text.Length)
+				pos = text.Length - 1;
+
+			while (tag != null) {
+				if (((tag.Start - 1) <= pos) && (pos <= (tag.Start + tag.Length - 1)))
+					return LineTag.GetFinalTag (tag);
+
+				tag = tag.Next;
+			}
+			
+			return null;
+		}
+
+		public override int GetHashCode ()
+		{
+			return base.GetHashCode ();
+		}
+		
+		// Get the tag that contains this x coordinate
+		public LineTag GetTag (int x)
+		{
+			LineTag tag = tags;
+			
+			// Coord is to the left of the first character
+			if (x < tag.X)
+				return LineTag.GetFinalTag (tag);
+			
+			// All we have is a linked-list of tags, so we have
+			// to do a linear search.  But there shouldn't be
+			// too many tags per line in general.
+			while (true) {
+				if (x >= tag.X && x < (tag.X + tag.Width))
+					return tag;
+					
+				if (tag.Next != null)
+					tag = tag.Next;
+				else
+					return LineTag.GetFinalTag (tag);			
+			}
+		}
+					
+		// Make sure we always have enoughs space in text and widths
+		internal void Grow (int minimum)
+		{
+			int	length;
+			float[]	new_widths;
+
+			length = text.Length;
+
+			if ((length + minimum) > space) {
+				// We need to grow; double the size
+
+				if ((length + minimum) > (space * 2)) {
+					new_widths = new float[length + minimum * 2 + 1];
+					space = length + minimum * 2;
+				} else {				
+					new_widths = new float[space * 2 + 1];
+					space *= 2;
+				}
+				widths.CopyTo (new_widths, 0);
+
+				widths = new_widths;
+			}
+		}
+		public void InsertString (int pos, string s)
+		{
+			InsertString (pos, s, FindTag (pos));
+		}
+
+		// Inserts a string at the given position
+		public void InsertString (int pos, string s, LineTag tag)
+		{
+			int len = s.Length;
+
+			// Insert the text into the StringBuilder
+			text.Insert (pos, s);
+
+			// Update the start position of every tag after this one
+			tag = tag.Next;
+
+			while (tag != null) {
+				tag.Start += len;
+				tag = tag.Next;
+			}
+
+			// Make sure we have room in the widths array
+			Grow (len);
+
+			// This line needs to be recalculated
+			recalc = true;
+		}
+
+		/// <summary>
+		/// Go through all tags on a line and recalculate all size-related values;
+		/// returns true if lineheight changed
+		/// </summary>
+		internal bool RecalculateLine (Graphics g, Document doc)
+		{
+			return RecalculateLine (g, doc, kerning_fonts.ContainsKey (tags.Font.GetHashCode ()));
+		}
+
+		private bool RecalculateLine (Graphics g, Document doc, bool handleKerning)
+		{
+			LineTag tag;
+			int pos;
+			int len;
+			SizeF size;
+			float w;
+			int prev_offset;
+			bool retval;
+			bool wrapped;
+			Line line;
+			int wrap_pos;
+			int prev_height;
+			int prev_ascent;
+
+			pos = 0;
+			len = this.text.Length;
+			tag = this.tags;
+			prev_offset = this.offset;	// For drawing optimization calculations
+			prev_height = this.height;
+			prev_ascent = this.ascent;
+			this.height = 0;		// Reset line height
+			this.ascent = 0;		// Reset the ascent for the line
+			tag.Shift = 0;			// Reset shift (which should be stored as pixels, not as points)
+
+			if (ending == LineEnding.Wrap)
+				widths[0] = document.left_margin + hanging_indent;
+			else
+				widths[0] = document.left_margin + indent;
+
+			this.recalc = false;
+			retval = false;
+			wrapped = false;
+
+			wrap_pos = 0;
+
+			while (pos < len) {
+
+				while (tag.Length == 0) {	// We should always have tags after a tag.length==0 unless len==0
+					//tag.Ascent = 0;
+					tag.Shift = (tag.Line.ascent - tag.Ascent) / 72;
+					tag = tag.Next;
+				}
+
+				// kerning is a problem.  The original code in this method assumed that the
+				// width of a string equals the sum of the widths of its characters.  This is
+				// not true when kerning takes place during the display process.  Since it's
+				// impossible to find out easily whether a font does kerning, and with which
+				// characters, we just detect that kerning must have happened and use a slower
+				// (but accurate) measurement for those fonts henceforth.  Without handling
+				// kerning, many fonts for English become unreadable during typing for many
+				// input strings, and text in many other languages is even worse trying to
+				// type in TextBoxes.
+				// See https://bugzilla.xamarin.com/show_bug.cgi?id=26478 for details.
+				float newWidth;
+				if (handleKerning && !Char.IsWhiteSpace(text[pos]))
+				{
+					// MeasureText doesn't measure trailing spaces, so we do the best we can for those
+					// in the else branch.
+					size = TextBoxTextRenderer.MeasureText (g, text.ToString (0, pos + 1), tag.Font);
+					newWidth = widths[0] + size.Width;
+				}
+				else
+				{
+					size = tag.SizeOfPosition (g, pos);
+					w = size.Width;
+					newWidth = widths[pos] + w;
+				}
+
+				if (Char.IsWhiteSpace (text[pos]))
+					wrap_pos = pos + 1;
+
+				if (doc.wrap) {
+					if ((wrap_pos > 0) && (wrap_pos != len) && (newWidth + 5) > (doc.viewport_width - this.right_indent)) {
+						// Make sure to set the last width of the line before wrapping
+						widths[pos + 1] = newWidth;
+
+						pos = wrap_pos;
+						len = text.Length;
+						doc.Split (this, tag, pos);
+						ending = LineEnding.Wrap;
+						len = this.text.Length;
+
+						retval = true;
+						wrapped = true;
+					} else if (pos > 1 && newWidth > (doc.viewport_width - this.right_indent)) {
+						// No suitable wrap position was found so break right in the middle of a word
+
+						// Make sure to set the last width of the line before wrapping
+						widths[pos + 1] = newWidth;
+
+						doc.Split (this, tag, pos);
+						ending = LineEnding.Wrap;
+						len = this.text.Length;
+						retval = true;
+						wrapped = true;
+					}
+				}
+
+				// Contract all wrapped lines that follow back into our line
+				if (!wrapped) {
+					pos++;
+
+					widths[pos] = newWidth;
+
+					if (pos == len) {
+						line = doc.GetLine (this.line_no + 1);
+						if ((line != null) && (ending == LineEnding.Wrap || ending == LineEnding.None)) {
+							// Pull the two lines together
+							doc.Combine (this.line_no, this.line_no + 1);
+							len = this.text.Length;
+							retval = true;
+						}
+					}
+				}
+
+				if (pos == (tag.Start - 1 + tag.Length)) {
+					// We just found the end of our current tag
+					tag.Height = tag.MaxHeight ();
+
+					// Check if we're the tallest on the line (so far)
+					if (tag.Height > this.height)
+						this.height = tag.Height;	// Yep; make sure the line knows
+
+					if (tag.Ascent > this.ascent) {
+						LineTag t;
+
+						// We have a tag that has a taller ascent than the line;
+						t = tags;
+						while (t != null && t != tag) {
+							t.Shift = (tag.Ascent - t.Ascent) / 72;
+							t = t.Next;
+						}
+
+						// Save on our line
+						this.ascent = tag.Ascent;
+					} else {
+						tag.Shift = (this.ascent - tag.Ascent) / 72;
+					}
+
+					tag = tag.Next;
+					if (tag != null) {
+						tag.Shift = 0;
+						wrap_pos = pos;
+					}
+				}
+			}
+
+			var fullText = text.ToString();
+			if (!handleKerning && fullText.Length > 1 && !wrapped)
+			{
+				// Check whether kerning takes place for this string and font.
+				var realSize = TextBoxTextRenderer.MeasureText(g, fullText, tags.Font);
+				float realWidth = realSize.Width + widths[0];
+				// MeasureText ignores trailing whitespace, so we will too at this point.
+				int length = fullText.TrimEnd().Length;
+				float sumWidth = widths[length];
+				if (realWidth != sumWidth)
+				{
+					kerning_fonts.Add(tags.Font.GetHashCode (), true);
+					// Using a slightly incorrect width this time around isn't that bad. All that happens
+					// is that the cursor is a pixel or two off until the next character is typed.  It's
+					// the accumulation of pixel after pixel that causes display problems.
+				}
+			}
+
+			while (tag != null) {	
+				tag.Shift = (tag.Line.ascent - tag.Ascent) / 72;
+				tag = tag.Next;
+			}
+
+			if (this.height == 0) {
+				this.height = tags.Font.Height;
+				tags.Height = this.height;
+				tags.Shift = 0;
+			}
+
+			if (prev_offset != offset || prev_height != this.height || prev_ascent != this.ascent)
+				retval = true;
+
+			return retval;
+		}
+
+		/// <summary>
+		/// Recalculate a single line using the same char for every character in the line
+		/// </summary>
+		internal bool RecalculatePasswordLine (Graphics g, Document doc)
+		{
+			LineTag tag;
+			int pos;
+			int len;
+			float w;
+			bool ret;
+
+			pos = 0;
+			len = this.text.Length;
+			tag = this.tags;
+			ascent = 0;
+			tag.Shift = 0;
+
+			this.recalc = false;
+			widths[0] = document.left_margin + indent;
+
+			w = TextBoxTextRenderer.MeasureText (g, doc.password_char, tags.Font).Width;
+
+			if (this.height != (int)tag.Font.Height)
+				ret = true;
+			else
+				ret = false;
+
+			this.height = (int)tag.Font.Height;
+			tag.Height = this.height;
+
+			this.ascent = tag.Ascent;
+
+			while (pos < len) {
+				pos++;
+				widths[pos] = widths[pos - 1] + w;
+			}
+
+			return ret;
+		}
+		
+		internal void Streamline (int lines)
+		{
+			LineTag current;
+			LineTag next;
+
+			current = this.tags;
+			next = current.Next;
+
+			//
+			// Catch what the loop below wont; eliminate 0 length 
+			// tags, but only if there are other tags after us
+			// We only eliminate text tags if there is another text tag
+			// after it.  Otherwise we wind up trying to type on picture tags
+			//
+			while ((current.Length == 0) && (next != null) && (next.IsTextTag)) {
+				tags = next;
+				tags.Previous = null;
+				current = next;
+				next = current.Next;
+			}
+
+
+			if (next == null)
+				return;
+
+			while (next != null) {
+				// Take out 0 length tags unless it's the last tag in the document
+				if (current.IsTextTag && next.Length == 0 && next.IsTextTag) {
+					if ((next.Next != null) || (line_no != lines)) {
+						current.Next = next.Next;
+						if (current.Next != null) {
+							current.Next.Previous = current;
+						}
+						next = current.Next;
+						continue;
+					}
+				}
+				
+				if (current.Combine (next)) {
+					next = current.Next;
+					continue;
+				}
+
+				current = current.Next;
+				next = current.Next;
+			}
+		}
+
+		internal int TextLengthWithoutEnding ()
+		{
+			return text.Length - document.LineEndingLength (ending);
+		}
+
+		internal string TextWithoutEnding ()
+		{
+			return text.ToString (0, text.Length - document.LineEndingLength (ending));
+		}
+		#endregion	// Internal Methods
+
+		#region Administrative
+		public object Clone ()
+		{
+			Line	clone;
+
+			clone = new Line (document, ending);
+
+			clone.text = text;
+
+			if (left != null)
+				clone.left = (Line)left.Clone();
+
+			if (left != null)
+				clone.left = (Line)left.Clone();
+
+			return clone;
+		}
+
+		internal object CloneLine ()
+		{
+			Line	clone;
+
+			clone = new Line (document, ending);
+
+			clone.text = text;
+
+			return clone;
+		}
+
+		public int CompareTo (object obj)
+		{
+			if (obj == null)
+				return 1;
+
+			if (! (obj is Line))
+				throw new ArgumentException("Object is not of type Line", "obj");
+
+			if (line_no < ((Line)obj).line_no)
+				return -1;
+			else if (line_no > ((Line)obj).line_no)
+				return 1;
+			else
+				return 0;
+		}
+
+		public override bool Equals (object obj)
+		{
+			if (obj == null)
+				return false;
+
+			if (!(obj is Line))
+				return false;
+
+			if (obj == this)
+				return true;
+
+			if (line_no == ((Line)obj).line_no)
+				return true;
+
+			return false;
+		}
+
+		public override string ToString()
+		{
+			return string.Format ("Line {0}", line_no);
+		}
+		#endregion	// Administrative
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/LineTag.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/LineTag.cs
@@ -1,618 +1,618 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2004-2006 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//	Peter Bartok	pbartok@novell.com
-//
-//
-
-using System;
-using System.Collections;
-using System.Drawing;
-using System.Drawing.Text;
-using System.Text;
-
-namespace System.Windows.Forms
-{
-	internal class LineTag
-	{
-		#region	Local Variables
-		// Formatting
-		private Font		font;		// System.Drawing.Font object for this tag
-		private Color		color;		// The font color for this tag
-		private Color		back_color;	// In 2.0 tags can have background colours.
-		private Font		link_font;	// Cached font used for link if IsLink
-		private bool		is_link;	// Whether this tag is a link
-		private string		link_text;	// The full link text e.g. this might be 
-							// word-wrapped to "w" but this would be
-							// "www.mono-project.com"
-
-		// Payload; text
-		private int		start;		// start, in chars; index into Line.text
-							// 1 based!!
-
-		// Drawing support
-		private int		height;		// Height in pixels of the text this tag describes
-		private int		ascent;		// Ascent of the font for this tag
-		private int		descent;	// Descent of the font for this tag
-		private int		shift;		// Shift down for this tag, to stay on baseline
-
-		// Administrative
-		private Line		line;		// The line we're on
-		private LineTag		next;		// Next tag on the same line
-		private LineTag		previous;	// Previous tag on the same line
-		#endregion
-
-		#region Constructors
-		public LineTag (Line line, int start)
-		{
-			this.line = line;
-			Start = start;
-			link_font = null;
-			is_link = false;
-			link_text = null;
-		}
-		#endregion	// Constructors
-
-		#region Public Properties
-		public int Ascent {
-			get { return ascent; }
-		}
-		
-		public Color BackColor {
-			get { return back_color; }
-			set { back_color = value; }
-		}
-
-		public Color ColorToDisplay {
-			get {
-				if (IsLink == true)
-					return Color.Blue;
-
-				return color;
-			}
-		}
-
-		public Color Color {
-			get { return color; }
-			set { color = value; }
-		}
-		
-		public int Descent {
-			get { return descent; }
-		}
-
-		public int End {
-			get { return start + Length; }
-		}
-
-		public Font FontToDisplay {
-			get {
-				if (IsLink) {
-					if (link_font == null)
-						link_font = new Font (font.FontFamily, font.Size, font.Style | FontStyle.Underline);
-
-					return link_font;
-				}
-
-				return font;
-			}
-		}
-
-		public Font Font {
-			get { return font; }
-			set { 
-				if (font != value) {
-					link_font = null;
-					font = value;
-	
-					height = Font.Height;
-					XplatUI.GetFontMetrics (Hwnd.GraphicsContext, Font, out ascent, out descent);
-					line.recalc = true;
-				}
-			}
-		}
-
-		public int Height {
-			get { return height; }
-			set { height = value; }
-		}
-
-		public virtual bool IsTextTag {
-			get { return true; }
-		}
-
-		public int Length {
-			get {
-				int res = 0;
-				if (next != null)
-					res = next.start - start;
-				else
-					res = line.text.Length - (start - 1);
-
-				return res > 0 ? res : 0;
-			}
-		}
-
-		public Line Line {
-			get { return line; }
-			set { line = value; }
-		}
-
-		public LineTag Next {
-			get { return next; }
-			set { next = value; }
-		}
-
-		public LineTag Previous {
-			get { return previous; }
-			set { previous = value; }
-		}
-
-		public int Shift {
-			get { return shift; }
-			set { shift = value; }
-		}
-
-		public int Start {
-			get { return start; }
-			set {
-#if DEBUG
-				if (value <= 0)
-					throw new Exception("Start of tag must be 1 or higher!");
-
-				if (this.Previous != null) {
-					if  (this.Previous.Start == value)
-						System.Console.Write("Creating empty tag");
-					if  (this.Previous.Start > value)
-						throw new Exception("New tag makes an insane tag");
-				}
-#endif
-				start = value; 
-			}
-		}
-
-		public int TextEnd {
-			get { return start + TextLength; }
-		}
-
-		public int TextLength {
-			get {
-				int res = 0;
-				if (next != null)
-					res = next.start - start;
-				else
-					res = line.TextLengthWithoutEnding () - (start - 1);
-
-				return res > 0 ? res : 0;
-			}
-		}
-
-		public float Width {
-			get {
-				if (Length == 0)
-					return 0;
-				return line.widths [start + Length - 1] - (start != 0 ? line.widths [start - 1] : 0);
-			}
-		}
-
-		public float X {
-			get {
-				if (start == 0)
-					return line.X;
-				return line.X + line.widths [start - 1];
-			}
-		}
-
-		public bool IsLink {
-			get { return is_link; }
-			set { is_link = value; }
-		}
-
-		public string LinkText {
-			get { return link_text; }
-			set { link_text = value; }
-		}
-		#endregion
-		
-		#region Public Methods
-		///<summary>Break a tag into two with identical attributes; pos is 1-based; returns tag starting at &gt;pos&lt; or null if end-of-line</summary>
-		public LineTag Break (int pos)
-		{
-			LineTag	new_tag;
-
-#if DEBUG
-			// Sanity
-			if (pos < this.Start)
-				throw new Exception ("Breaking at a negative point");
-#endif
-
-#if DEBUG
-			if (pos > End)
-				throw new Exception ("Breaking past the end of a line");
-#endif
-
-			new_tag = new LineTag(line, pos);
-			new_tag.CopyFormattingFrom (this);
-
-			new_tag.next = this.next;
-			this.next = new_tag;
-			new_tag.previous = this;
-
-			if (new_tag.next != null)
-				new_tag.next.previous = new_tag;
-
-			return new_tag;
-		}
-
-		/// <summary>Combines 'this' tag with 'other' tag</summary>
-		public bool Combine (LineTag other)
-		{
-			if (!this.Equals (other))
-				return false;
-
-			this.next = other.next;
-			
-			if (this.next != null)
-				this.next.previous = this;
-
-			return true;
-		}
-
-		public void CopyFormattingFrom (LineTag other)
-		{
-			Font = other.font;
-			color = other.color;
-			back_color = other.back_color;
-		}
-
-		public void Delete ()
-		{
-			// If we are the only tag, we can't be deleted
-			if (previous == null && next == null)
-				return;
-				
-			// If we are the last tag, deletion is easy
-			if (next == null) {
-				previous.next = null;
-				return;
-			}
-			
-			// Easy cases gone, little tougher, delete ourself
-			// Update links, and start
-			next.previous = null;
-			
-			LineTag loop = next;
-			
-			while (loop != null) {
-				loop.Start -= Length;
-				loop = loop.next;			
-			}
-			
-			return;
-		}
-		
-		public virtual void Draw (Graphics dc, Color color, float x, float y, int start, int end)
-		{
-			TextBoxTextRenderer.DrawText (dc, line.text.ToString (start, end).Replace ("\r", string.Empty), FontToDisplay, color, x, y, false);
-		}
-		
-		public virtual void Draw (Graphics dc, Color color, float xoff, float y, int start, int end, string text)
-		{
-			Rectangle measured_text;
-			Draw (dc, color, xoff, y, start, end, text, out measured_text, false);
-		}
-
-		/// <summary>
-		/// 
-		/// </summary>
-		/// <param name="drawStart">0 based start index</param>
-		public virtual void Draw (Graphics dc, Color color, float xoff, float y, int drawStart, int drawEnd,
-					  string text, out Rectangle measuredText, bool measureText)
-		{
-			if (measureText) {
-				int xstart = (int)line.widths [drawStart] + (int)xoff;
-				int xend = (int)line.widths [drawEnd] - (int)line.widths [drawStart];
-				int ystart = (int)y;
-				int yend = (int)TextBoxTextRenderer.MeasureText (dc, Text (), FontToDisplay).Height;
-
-				measuredText = new Rectangle (xstart, ystart, xend, yend);
-			} else {
-				measuredText = new Rectangle ();
-			}
-
-			while (drawStart < drawEnd) {
-				int tab_index = text.IndexOf ("\t", drawStart);
-				
-				if (tab_index == -1)
-					tab_index = drawEnd;
-
-				TextBoxTextRenderer.DrawText (dc, text.Substring (drawStart, tab_index - drawStart).Replace ("\r", string.Empty), FontToDisplay, color, xoff + line.widths [drawStart], y, false);
-
-				// non multilines get the unknown char 
-				if (!line.document.multiline && tab_index != drawEnd)
-					TextBoxTextRenderer.DrawText (dc, "\u0013", FontToDisplay, color, xoff + line.widths [tab_index], y, true);
-
-				drawStart = tab_index + 1;
-			}
-		}
-
-		/// <summary>Checks if 'this' tag describes the same formatting options as 'obj'</summary>
-		public override bool Equals (object obj)
-		{
-			LineTag other;
-
-			if (obj == null)
-				return false;
-
-			if (!(obj is LineTag))
-				return false;
-
-			if (obj == this)
-				return true;
-
-			other = (LineTag)obj;
-
-			if (other.IsTextTag != IsTextTag)
-				return false;
-
-			if (this.IsLink != other.IsLink)
-				return false;
-
-			if (this.LinkText != other.LinkText)
-				return false;
-
-			if (this.font.Equals (other.font) && this.color.Equals (other.color))
-				return true;
-
-			return false;
-		}
-
-		/// <summary>Finds the tag that describes the character at position 'pos' (0 based) on 'line'</summary>
-		public static LineTag FindTag (Line line, int pos)
-		{
-			LineTag tag = line.tags;
-
-			// Beginning of line is a bit special
-			if (pos == 0)
-				return tag;	// Not sure if we should get the final tag here
-
-			while (tag != null) {
-				// [H  e][l][l  o  _  W][o  r]  Text
-				// [1  2][3][4  5  6  7][8  9]  Start
-				//     3  4           8     10  End
-				// 0 1  2  3  4  5  6  7  8  9   Pos
-				if ((tag.start <= pos) && (pos < tag.End))
-					return GetFinalTag (tag);
-
-				tag = tag.next;
-			}
-
-			return null;
-		}
-
-		/// <summary>Applies 'font' and 'brush' to characters starting at 'start' for 'length' chars; 
-		/// Removes any previous tags overlapping the same area; 
-		/// returns true if lineheight has changed</summary>
-		/// <param name="formatStart">1-based character position on line</param>
-		public static bool FormatText (Line line, int formatStart, int length, Font font, Color color, Color backColor, FormatSpecified specified)
-		{
-			LineTag tag;
-			LineTag start_tag;
-			LineTag end_tag;
-			int end;
-			bool retval = false;		// Assume line-height doesn't change
-
-			// Too simple?
-			if (((FormatSpecified.Font & specified) == FormatSpecified.Font) && font.Height != line.height)
-				retval = true;
-
-			line.recalc = true;		// This forces recalculation of the line in RecalculateDocument
-
-			// A little sanity, not sure if it's needed, might be able to remove for speed
-			if (length > line.text.Length)
-				length = line.text.Length;
-
-			tag = line.tags;
-			end = formatStart + length;
-
-			// Common special case
-			if ((formatStart == 1) && (length == tag.Length)) {
-				SetFormat (tag, font, color, backColor, specified);
-				return retval;
-			}
-
-			// empty selection style at begining of line means
-			// we only need one new tag
-			if  (formatStart == 1 && length == 0) {
-				line.tags.Break (1);
-				SetFormat (line.tags, font, color, backColor, specified);
-				return retval;
-			}
-
-			start_tag = FindTag (line, formatStart - 1);
-
-			// we are at an empty tag already!
-			// e.g. [Tag 0 - "He"][Tag 1 = 0 length][Tag 2 "llo world"]
-			// Find Tag will return tag 0 at position 3, but we should just
-			// use the empty tag after..
-			if (start_tag.End == formatStart && length == 0 && start_tag.Next != null && start_tag.Next.Length == 0) {
-				SetFormat (start_tag.Next, font, color, backColor, specified);
-				return retval;
-			}
-
-			// if we are at the end of a tag, we want to move to the next tag
-			while (start_tag.End == formatStart && start_tag.Next != null)
-				start_tag = start_tag.Next;
-
-			tag = start_tag.Break (formatStart);
-
-			// empty selection style at end of line - its the only situation
-			// where the rest of the tag would be empty, since we moved to the
-			// begining of next non empty tag
-			if (tag.Length == 0) {
-				SetFormat (tag, font, color, backColor, specified);
-				return retval;
-			}
-
-			// empty - so we just create another tag for
-			// after our new (now) empty one..
-			if (length == 0) {
-				tag.Break (formatStart);
-				SetFormat (tag, font, color, backColor, specified);
-				return retval;
-			}
-
-			while (tag != null && tag.End <= end) {
-				SetFormat (tag, font, color, backColor, specified);
-				tag = tag.next;
-			}
-
-			// did the last tag conveniently fit?
-			if (tag != null && tag.End == end)
-				return retval;
-
-			/// Now do the last tag
-			end_tag = FindTag (line, end-1);
-
-			if (end_tag != null) {
-				end_tag.Break (end);
-				SetFormat (end_tag, font, color, backColor, specified);
-			}
-
-			return retval;
-		}
-
-		// Gets the character at the x-coordinate.  Index is based from the
-		// line, not the start of the tag.
-		// returns 0 based index (0 means before character at 1, 1 means at character 1)
-		public int GetCharIndex (int x)
-		{
-			int low = start;
-			int high = low + Length;
-			int length_no_ending = line.TextLengthWithoutEnding ();
-
-			if (Length == 0)
-				return low-1;
-
-			if (length_no_ending == 0)
-				return 0;
-
-			if (x < line.widths [low]) {
-				if (low == 1 && x > (line.widths [1] / 2))
-					return low;
-				return low - 1;
-			}
-
-			if (x > line.widths[length_no_ending])
-				return length_no_ending;
-				
-			while (low < high - 1) {
-				int mid = (high + low) / 2;
-				float width = line.widths[mid];
-
-				if (width < x)
-					low = mid;
-				else
-					high = mid;
-			}
-
-			float char_width = line.widths[high] - line.widths[low];
-
-			if ((x - line.widths[low]) >= (char_width / 2))
-				return high;
-			else
-				return low;	
-		}
-		
-		// There can be multiple tags at the same position, we want to make
-		// sure we are using the very last tag at the given position
-		// Empty tags are necessary if style is set at a position with
-		// no length.
-		public static LineTag GetFinalTag (LineTag tag)
-		{
-			LineTag res = tag;
-
-			while (res.Length == 0 && res.next != null && res.next.Length == 0)
-				res = res.next;
-
-			return res;
-		}
-
-		public override int GetHashCode ()
-		{
-			return base.GetHashCode ();
-		}
-		
-		internal virtual int MaxHeight ()
-		{
-			return font.Height;
-		}
-
-		private static void SetFormat (LineTag tag, Font font, Color color, Color back_color, FormatSpecified specified)
-		{
-			if ((FormatSpecified.Font & specified) == FormatSpecified.Font) {
-				tag.Font = font;
-			}
-			if ((FormatSpecified.Color & specified) == FormatSpecified.Color)
-				tag.color = color;
-			if ((FormatSpecified.BackColor & specified) == FormatSpecified.BackColor) {
-				tag.back_color = back_color;
-			}
-			// Console.WriteLine ("setting format:   {0}  {1}   new color {2}", color.Color, specified, tag.color.Color);
-		}
-
-		public virtual SizeF SizeOfPosition (Graphics dc, int pos)
-		{
-			if (pos >= line.TextLengthWithoutEnding () && line.document.multiline)
-				return SizeF.Empty;
-
-			string text = line.text.ToString (pos, 1);
-			switch ((int) text [0]) {
-			case '\t':
-				if (!line.document.multiline)
-					goto case 10;
-				SizeF res = TextBoxTextRenderer.MeasureText (dc, " ", font); 
-				res.Width *= 8.0F;
-				return res;
-			case 10:
-			case 13:
-				return TextBoxTextRenderer.MeasureText (dc, "\u000D", font);
-			}
-			
-			return TextBoxTextRenderer.MeasureText (dc, text, font);
-		}
-
-		public virtual string Text ()
-		{
-			return line.text.ToString (start - 1, Length);
-		}
-
-		public override string ToString ()
-		{
-			if (Length > 0)
-				return string.Format ("{0} Tag starts at index: {1}, length: {2}, text: {3}, font: {4}", GetType (), start, Length, Text (), font.ToString ());
-				
-			return string.Format ("Zero Length tag at index: {0}", start);
-		}
-		#endregion	// Internal Methods
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2004-2006 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//	Peter Bartok	pbartok@novell.com
+//
+//
+
+using System;
+using System.Collections;
+using System.Drawing;
+using System.Drawing.Text;
+using System.Text;
+
+namespace System.Windows.Forms
+{
+	internal class LineTag
+	{
+		#region	Local Variables
+		// Formatting
+		private Font		font;		// System.Drawing.Font object for this tag
+		private Color		color;		// The font color for this tag
+		private Color		back_color;	// In 2.0 tags can have background colours.
+		private Font		link_font;	// Cached font used for link if IsLink
+		private bool		is_link;	// Whether this tag is a link
+		private string		link_text;	// The full link text e.g. this might be 
+							// word-wrapped to "w" but this would be
+							// "www.mono-project.com"
+
+		// Payload; text
+		private int		start;		// start, in chars; index into Line.text
+							// 1 based!!
+
+		// Drawing support
+		private int		height;		// Height in pixels of the text this tag describes
+		private int		ascent;		// Ascent of the font for this tag
+		private int		descent;	// Descent of the font for this tag
+		private int		shift;		// Shift down for this tag, to stay on baseline
+
+		// Administrative
+		private Line		line;		// The line we're on
+		private LineTag		next;		// Next tag on the same line
+		private LineTag		previous;	// Previous tag on the same line
+		#endregion
+
+		#region Constructors
+		public LineTag (Line line, int start)
+		{
+			this.line = line;
+			Start = start;
+			link_font = null;
+			is_link = false;
+			link_text = null;
+		}
+		#endregion	// Constructors
+
+		#region Public Properties
+		public int Ascent {
+			get { return ascent; }
+		}
+		
+		public Color BackColor {
+			get { return back_color; }
+			set { back_color = value; }
+		}
+
+		public Color ColorToDisplay {
+			get {
+				if (IsLink == true)
+					return Color.Blue;
+
+				return color;
+			}
+		}
+
+		public Color Color {
+			get { return color; }
+			set { color = value; }
+		}
+		
+		public int Descent {
+			get { return descent; }
+		}
+
+		public int End {
+			get { return start + Length; }
+		}
+
+		public Font FontToDisplay {
+			get {
+				if (IsLink) {
+					if (link_font == null)
+						link_font = new Font (font.FontFamily, font.Size, font.Style | FontStyle.Underline);
+
+					return link_font;
+				}
+
+				return font;
+			}
+		}
+
+		public Font Font {
+			get { return font; }
+			set { 
+				if (font != value) {
+					link_font = null;
+					font = value;
+	
+					height = Font.Height;
+					XplatUI.GetFontMetrics (Hwnd.GraphicsContext, Font, out ascent, out descent);
+					line.recalc = true;
+				}
+			}
+		}
+
+		public int Height {
+			get { return height; }
+			set { height = value; }
+		}
+
+		public virtual bool IsTextTag {
+			get { return true; }
+		}
+
+		public int Length {
+			get {
+				int res = 0;
+				if (next != null)
+					res = next.start - start;
+				else
+					res = line.text.Length - (start - 1);
+
+				return res > 0 ? res : 0;
+			}
+		}
+
+		public Line Line {
+			get { return line; }
+			set { line = value; }
+		}
+
+		public LineTag Next {
+			get { return next; }
+			set { next = value; }
+		}
+
+		public LineTag Previous {
+			get { return previous; }
+			set { previous = value; }
+		}
+
+		public int Shift {
+			get { return shift; }
+			set { shift = value; }
+		}
+
+		public int Start {
+			get { return start; }
+			set {
+#if DEBUG
+				if (value <= 0)
+					throw new Exception("Start of tag must be 1 or higher!");
+
+				if (this.Previous != null) {
+					if  (this.Previous.Start == value)
+						System.Console.Write("Creating empty tag");
+					if  (this.Previous.Start > value)
+						throw new Exception("New tag makes an insane tag");
+				}
+#endif
+				start = value; 
+			}
+		}
+
+		public int TextEnd {
+			get { return start + TextLength; }
+		}
+
+		public int TextLength {
+			get {
+				int res = 0;
+				if (next != null)
+					res = next.start - start;
+				else
+					res = line.TextLengthWithoutEnding () - (start - 1);
+
+				return res > 0 ? res : 0;
+			}
+		}
+
+		public float Width {
+			get {
+				if (Length == 0)
+					return 0;
+				return line.widths [start + Length - 1] - (start != 0 ? line.widths [start - 1] : 0);
+			}
+		}
+
+		public float X {
+			get {
+				if (start == 0)
+					return line.X;
+				return line.X + line.widths [start - 1];
+			}
+		}
+
+		public bool IsLink {
+			get { return is_link; }
+			set { is_link = value; }
+		}
+
+		public string LinkText {
+			get { return link_text; }
+			set { link_text = value; }
+		}
+		#endregion
+		
+		#region Public Methods
+		///<summary>Break a tag into two with identical attributes; pos is 1-based; returns tag starting at &gt;pos&lt; or null if end-of-line</summary>
+		public LineTag Break (int pos)
+		{
+			LineTag	new_tag;
+
+#if DEBUG
+			// Sanity
+			if (pos < this.Start)
+				throw new Exception ("Breaking at a negative point");
+#endif
+
+#if DEBUG
+			if (pos > End)
+				throw new Exception ("Breaking past the end of a line");
+#endif
+
+			new_tag = new LineTag(line, pos);
+			new_tag.CopyFormattingFrom (this);
+
+			new_tag.next = this.next;
+			this.next = new_tag;
+			new_tag.previous = this;
+
+			if (new_tag.next != null)
+				new_tag.next.previous = new_tag;
+
+			return new_tag;
+		}
+
+		/// <summary>Combines 'this' tag with 'other' tag</summary>
+		public bool Combine (LineTag other)
+		{
+			if (!this.Equals (other))
+				return false;
+
+			this.next = other.next;
+			
+			if (this.next != null)
+				this.next.previous = this;
+
+			return true;
+		}
+
+		public void CopyFormattingFrom (LineTag other)
+		{
+			Font = other.font;
+			color = other.color;
+			back_color = other.back_color;
+		}
+
+		public void Delete ()
+		{
+			// If we are the only tag, we can't be deleted
+			if (previous == null && next == null)
+				return;
+				
+			// If we are the last tag, deletion is easy
+			if (next == null) {
+				previous.next = null;
+				return;
+			}
+			
+			// Easy cases gone, little tougher, delete ourself
+			// Update links, and start
+			next.previous = null;
+			
+			LineTag loop = next;
+			
+			while (loop != null) {
+				loop.Start -= Length;
+				loop = loop.next;			
+			}
+			
+			return;
+		}
+		
+		public virtual void Draw (Graphics dc, Color color, float x, float y, int start, int end)
+		{
+			TextBoxTextRenderer.DrawText (dc, line.text.ToString (start, end).Replace ("\r", string.Empty), FontToDisplay, color, x, y, false);
+		}
+		
+		public virtual void Draw (Graphics dc, Color color, float xoff, float y, int start, int end, string text)
+		{
+			Rectangle measured_text;
+			Draw (dc, color, xoff, y, start, end, text, out measured_text, false);
+		}
+
+		/// <summary>
+		/// 
+		/// </summary>
+		/// <param name="drawStart">0 based start index</param>
+		public virtual void Draw (Graphics dc, Color color, float xoff, float y, int drawStart, int drawEnd,
+					  string text, out Rectangle measuredText, bool measureText)
+		{
+			if (measureText) {
+				int xstart = (int)line.widths [drawStart] + (int)xoff;
+				int xend = (int)line.widths [drawEnd] - (int)line.widths [drawStart];
+				int ystart = (int)y;
+				int yend = (int)TextBoxTextRenderer.MeasureText (dc, Text (), FontToDisplay).Height;
+
+				measuredText = new Rectangle (xstart, ystart, xend, yend);
+			} else {
+				measuredText = new Rectangle ();
+			}
+
+			while (drawStart < drawEnd) {
+				int tab_index = text.IndexOf ("\t", drawStart);
+				
+				if (tab_index == -1)
+					tab_index = drawEnd;
+
+				TextBoxTextRenderer.DrawText (dc, text.Substring (drawStart, tab_index - drawStart).Replace ("\r", string.Empty), FontToDisplay, color, xoff + line.widths [drawStart], y, false);
+
+				// non multilines get the unknown char 
+				if (!line.document.multiline && tab_index != drawEnd)
+					TextBoxTextRenderer.DrawText (dc, "\u0013", FontToDisplay, color, xoff + line.widths [tab_index], y, true);
+
+				drawStart = tab_index + 1;
+			}
+		}
+
+		/// <summary>Checks if 'this' tag describes the same formatting options as 'obj'</summary>
+		public override bool Equals (object obj)
+		{
+			LineTag other;
+
+			if (obj == null)
+				return false;
+
+			if (!(obj is LineTag))
+				return false;
+
+			if (obj == this)
+				return true;
+
+			other = (LineTag)obj;
+
+			if (other.IsTextTag != IsTextTag)
+				return false;
+
+			if (this.IsLink != other.IsLink)
+				return false;
+
+			if (this.LinkText != other.LinkText)
+				return false;
+
+			if (this.font.Equals (other.font) && this.color.Equals (other.color))
+				return true;
+
+			return false;
+		}
+
+		/// <summary>Finds the tag that describes the character at position 'pos' (0 based) on 'line'</summary>
+		public static LineTag FindTag (Line line, int pos)
+		{
+			LineTag tag = line.tags;
+
+			// Beginning of line is a bit special
+			if (pos == 0)
+				return tag;	// Not sure if we should get the final tag here
+
+			while (tag != null) {
+				// [H  e][l][l  o  _  W][o  r]  Text
+				// [1  2][3][4  5  6  7][8  9]  Start
+				//     3  4           8     10  End
+				// 0 1  2  3  4  5  6  7  8  9   Pos
+				if ((tag.start <= pos) && (pos < tag.End))
+					return GetFinalTag (tag);
+
+				tag = tag.next;
+			}
+
+			return null;
+		}
+
+		/// <summary>Applies 'font' and 'brush' to characters starting at 'start' for 'length' chars; 
+		/// Removes any previous tags overlapping the same area; 
+		/// returns true if lineheight has changed</summary>
+		/// <param name="formatStart">1-based character position on line</param>
+		public static bool FormatText (Line line, int formatStart, int length, Font font, Color color, Color backColor, FormatSpecified specified)
+		{
+			LineTag tag;
+			LineTag start_tag;
+			LineTag end_tag;
+			int end;
+			bool retval = false;		// Assume line-height doesn't change
+
+			// Too simple?
+			if (((FormatSpecified.Font & specified) == FormatSpecified.Font) && font.Height != line.height)
+				retval = true;
+
+			line.recalc = true;		// This forces recalculation of the line in RecalculateDocument
+
+			// A little sanity, not sure if it's needed, might be able to remove for speed
+			if (length > line.text.Length)
+				length = line.text.Length;
+
+			tag = line.tags;
+			end = formatStart + length;
+
+			// Common special case
+			if ((formatStart == 1) && (length == tag.Length)) {
+				SetFormat (tag, font, color, backColor, specified);
+				return retval;
+			}
+
+			// empty selection style at begining of line means
+			// we only need one new tag
+			if  (formatStart == 1 && length == 0) {
+				line.tags.Break (1);
+				SetFormat (line.tags, font, color, backColor, specified);
+				return retval;
+			}
+
+			start_tag = FindTag (line, formatStart - 1);
+
+			// we are at an empty tag already!
+			// e.g. [Tag 0 - "He"][Tag 1 = 0 length][Tag 2 "llo world"]
+			// Find Tag will return tag 0 at position 3, but we should just
+			// use the empty tag after..
+			if (start_tag.End == formatStart && length == 0 && start_tag.Next != null && start_tag.Next.Length == 0) {
+				SetFormat (start_tag.Next, font, color, backColor, specified);
+				return retval;
+			}
+
+			// if we are at the end of a tag, we want to move to the next tag
+			while (start_tag.End == formatStart && start_tag.Next != null)
+				start_tag = start_tag.Next;
+
+			tag = start_tag.Break (formatStart);
+
+			// empty selection style at end of line - its the only situation
+			// where the rest of the tag would be empty, since we moved to the
+			// begining of next non empty tag
+			if (tag.Length == 0) {
+				SetFormat (tag, font, color, backColor, specified);
+				return retval;
+			}
+
+			// empty - so we just create another tag for
+			// after our new (now) empty one..
+			if (length == 0) {
+				tag.Break (formatStart);
+				SetFormat (tag, font, color, backColor, specified);
+				return retval;
+			}
+
+			while (tag != null && tag.End <= end) {
+				SetFormat (tag, font, color, backColor, specified);
+				tag = tag.next;
+			}
+
+			// did the last tag conveniently fit?
+			if (tag != null && tag.End == end)
+				return retval;
+
+			/// Now do the last tag
+			end_tag = FindTag (line, end-1);
+
+			if (end_tag != null) {
+				end_tag.Break (end);
+				SetFormat (end_tag, font, color, backColor, specified);
+			}
+
+			return retval;
+		}
+
+		// Gets the character at the x-coordinate.  Index is based from the
+		// line, not the start of the tag.
+		// returns 0 based index (0 means before character at 1, 1 means at character 1)
+		public int GetCharIndex (int x)
+		{
+			int low = start;
+			int high = low + Length;
+			int length_no_ending = line.TextLengthWithoutEnding ();
+
+			if (Length == 0)
+				return low-1;
+
+			if (length_no_ending == 0)
+				return 0;
+
+			if (x < line.widths [low]) {
+				if (low == 1 && x > (line.widths [1] / 2))
+					return low;
+				return low - 1;
+			}
+
+			if (x > line.widths[length_no_ending])
+				return length_no_ending;
+				
+			while (low < high - 1) {
+				int mid = (high + low) / 2;
+				float width = line.widths[mid];
+
+				if (width < x)
+					low = mid;
+				else
+					high = mid;
+			}
+
+			float char_width = line.widths[high] - line.widths[low];
+
+			if ((x - line.widths[low]) >= (char_width / 2))
+				return high;
+			else
+				return low;	
+		}
+		
+		// There can be multiple tags at the same position, we want to make
+		// sure we are using the very last tag at the given position
+		// Empty tags are necessary if style is set at a position with
+		// no length.
+		public static LineTag GetFinalTag (LineTag tag)
+		{
+			LineTag res = tag;
+
+			while (res.Length == 0 && res.next != null && res.next.Length == 0)
+				res = res.next;
+
+			return res;
+		}
+
+		public override int GetHashCode ()
+		{
+			return base.GetHashCode ();
+		}
+		
+		internal virtual int MaxHeight ()
+		{
+			return font.Height;
+		}
+
+		private static void SetFormat (LineTag tag, Font font, Color color, Color back_color, FormatSpecified specified)
+		{
+			if ((FormatSpecified.Font & specified) == FormatSpecified.Font) {
+				tag.Font = font;
+			}
+			if ((FormatSpecified.Color & specified) == FormatSpecified.Color)
+				tag.color = color;
+			if ((FormatSpecified.BackColor & specified) == FormatSpecified.BackColor) {
+				tag.back_color = back_color;
+			}
+			// Console.WriteLine ("setting format:   {0}  {1}   new color {2}", color.Color, specified, tag.color.Color);
+		}
+
+		public virtual SizeF SizeOfPosition (Graphics dc, int pos)
+		{
+			if (pos >= line.TextLengthWithoutEnding () && line.document.multiline)
+				return SizeF.Empty;
+
+			string text = line.text.ToString (pos, 1);
+			switch ((int) text [0]) {
+			case '\t':
+				if (!line.document.multiline)
+					goto case 10;
+				SizeF res = TextBoxTextRenderer.MeasureText (dc, " ", font); 
+				res.Width *= 8.0F;
+				return res;
+			case 10:
+			case 13:
+				return TextBoxTextRenderer.MeasureText (dc, "\u000D", font);
+			}
+			
+			return TextBoxTextRenderer.MeasureText (dc, text, font);
+		}
+
+		public virtual string Text ()
+		{
+			return line.text.ToString (start - 1, Length);
+		}
+
+		public override string ToString ()
+		{
+			if (Length > 0)
+				return string.Format ("{0} Tag starts at index: {1}, length: {2}, text: {3}, font: {4}", GetType (), start, Length, Text (), font.ToString ());
+				
+			return string.Format ("Zero Length tag at index: {0}", start);
+		}
+		#endregion	// Internal Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/LinkConverter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/LinkConverter.cs
@@ -1,85 +1,85 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//   Jonathan Pobst  monkey@jpobst.com
-//
-
-using System.ComponentModel;
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-namespace System.Windows.Forms
-{
-	public class LinkConverter : TypeConverter
-	{
-		#region Constructors
-		public LinkConverter () { }
-		#endregion Constructors
-
-		#region Public Methods
-		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
-		{
-			if (sourceType == typeof (string))
-				return true;
-
-			return false;
-		}
-
-		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
-		{
-			if (destinationType == typeof (string))
-				return true;
-
-			return base.CanConvertTo (context, destinationType);
-		}
-
-		public override object ConvertFrom (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
-		{
-			if ((value == null) || !(value is String))
-				return base.ConvertFrom (context, culture, value);
-
-			if (culture == null)
-				culture = CultureInfo.CurrentCulture;
-
-			if (((string)value).Length == 0)
-				return null;
-				
-			string[] parts = ((string)value).Split (culture.TextInfo.ListSeparator.ToCharArray ());
-
-			return new LinkLabel.Link (int.Parse (parts[0].Trim ()), int.Parse (parts[1].Trim ()));
-		}
-
-		public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
-		{
-			if ((value == null) || !(value is LinkLabel.Link) || (destinationType != typeof (string)))
-				return base.ConvertTo (context, culture, value, destinationType);
-
-			if (culture == null)
-				culture = CultureInfo.CurrentCulture;
-
-			LinkLabel.Link l = (LinkLabel.Link)value;
-
-			return string.Format ("{0}{2} {1}", l.Start, l.Length, culture.TextInfo.ListSeparator);
-		}
-		#endregion Public Methods
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//   Jonathan Pobst  monkey@jpobst.com
+//
+
+using System.ComponentModel;
+using System.Globalization;
+using System.Runtime.InteropServices;
+
+namespace System.Windows.Forms
+{
+	public class LinkConverter : TypeConverter
+	{
+		#region Constructors
+		public LinkConverter () { }
+		#endregion Constructors
+
+		#region Public Methods
+		public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+		{
+			if (sourceType == typeof (string))
+				return true;
+
+			return false;
+		}
+
+		public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+		{
+			if (destinationType == typeof (string))
+				return true;
+
+			return base.CanConvertTo (context, destinationType);
+		}
+
+		public override object ConvertFrom (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
+		{
+			if ((value == null) || !(value is String))
+				return base.ConvertFrom (context, culture, value);
+
+			if (culture == null)
+				culture = CultureInfo.CurrentCulture;
+
+			if (((string)value).Length == 0)
+				return null;
+				
+			string[] parts = ((string)value).Split (culture.TextInfo.ListSeparator.ToCharArray ());
+
+			return new LinkLabel.Link (int.Parse (parts[0].Trim ()), int.Parse (parts[1].Trim ()));
+		}
+
+		public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
+		{
+			if ((value == null) || !(value is LinkLabel.Link) || (destinationType != typeof (string)))
+				return base.ConvertTo (context, culture, value, destinationType);
+
+			if (culture == null)
+				culture = CultureInfo.CurrentCulture;
+
+			LinkLabel.Link l = (LinkLabel.Link)value;
+
+			return string.Format ("{0}{2} {1}", l.Start, l.Length, culture.TextInfo.ListSeparator);
+		}
+		#endregion Public Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/MdiControlStrip.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/MdiControlStrip.cs
@@ -1,207 +1,207 @@
-//
-// MdiControlStrip.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms.Layout;
-using System.Collections.Generic;
-using System.ComponentModel.Design.Serialization;
-
-namespace System.Windows.Forms
-{
-	internal class MdiControlStrip
-	{
-		public class SystemMenuItem : ToolStripMenuItem
-		{
-			private Form form;
-			
-			public SystemMenuItem (Form ownerForm)
-			{
-				form = ownerForm;
-				
-				base.AutoSize = false;
-				base.Size = new Size (20, 20);
-				base.Image = ownerForm.Icon.ToBitmap ();
-				base.MergeIndex = int.MinValue;
-				base.DisplayStyle = ToolStripItemDisplayStyle.Image;
-
-				DropDownItems.Add ("&Restore", null, RestoreItemHandler);
-				ToolStripMenuItem tsiMove = (ToolStripMenuItem)DropDownItems.Add ("&Move");
-				tsiMove.Enabled = false;
-				ToolStripMenuItem tsiSize = (ToolStripMenuItem)DropDownItems.Add ("&Size");
-				tsiSize.Enabled = false;
-				DropDownItems.Add ("Mi&nimize", null, MinimizeItemHandler);
-				ToolStripMenuItem tsiMaximize = (ToolStripMenuItem)DropDownItems.Add ("Ma&ximize");
-				tsiMaximize.Enabled = false;
-				DropDownItems.Add ("-");
-				ToolStripMenuItem tsiClose = (ToolStripMenuItem)DropDownItems.Add ("&Close", null, CloseItemHandler);
-				tsiClose.ShortcutKeys = Keys.Control | Keys.F4;
-				DropDownItems.Add ("-");
-				ToolStripMenuItem tsiNext = (ToolStripMenuItem)DropDownItems.Add ("Nex&t", null, NextItemHandler);
-				tsiNext.ShortcutKeys = Keys.Control | Keys.F6;
-			}
-
-			protected override void OnPaint (PaintEventArgs e)
-			{
-				// Can't render without an owner
-				if (this.Owner == null)
-					return;
-
-				// If DropDown.ShowImageMargin is false, we don't display the image
-				Image draw_image = this.Image;
-
-				// Figure out where our text and image go
-				Rectangle text_layout_rect;
-				Rectangle image_layout_rect;
-
-				this.CalculateTextAndImageRectangles (out text_layout_rect, out image_layout_rect);
-
-				if (image_layout_rect != Rectangle.Empty)
-					this.Owner.Renderer.DrawItemImage (new ToolStripItemImageRenderEventArgs (e.Graphics, this, draw_image, image_layout_rect));
-
-				return;
-			}
-
-			public Form MdiForm {
-				get { return form; }
-				set { form = value; }
-			}
-
-			private void RestoreItemHandler (object sender, EventArgs e)
-			{
-				form.WindowState = FormWindowState.Normal;
-			}
-
-			private void MinimizeItemHandler (object sender, EventArgs e)
-			{
-				form.WindowState = FormWindowState.Minimized;
-			}
-
-			private void CloseItemHandler (object sender, EventArgs e)
-			{
-				form.Close ();
-			}
-
-			private void NextItemHandler (object sender, EventArgs e)
-			{
-				form.MdiParent.MdiContainer.ActivateNextChild ();
-			}
-		}
-		
-		public class ControlBoxMenuItem : ToolStripMenuItem
-		{
-			private Form form;
-			private ControlBoxType type;
-			
-			public ControlBoxMenuItem (Form ownerForm, ControlBoxType type)
-			{
-				form = ownerForm;
-				this.type = type;
-				
-				base.AutoSize = false;
-				base.Alignment = ToolStripItemAlignment.Right;
-				base.Size = new Size (20, 20);
-				base.MergeIndex = int.MaxValue;
-				base.DisplayStyle = ToolStripItemDisplayStyle.None;
-
-				switch (type) {
-					case ControlBoxType.Close:
-						this.Click += new EventHandler(CloseItemHandler);
-						break;
-					case ControlBoxType.Min:
-						this.Click += new EventHandler (MinimizeItemHandler);
-						break;
-					case ControlBoxType.Max:
-						this.Click += new EventHandler (RestoreItemHandler);
-						break;
-				}
-			}
-
-			protected override void OnPaint (PaintEventArgs e)
-			{
-				base.OnPaint (e);
-				Graphics g = e.Graphics;
-				
-				switch (type) {
-					case ControlBoxType.Close:
-						g.FillRectangle (Brushes.Black, 8, 8, 4, 4);
-						g.FillRectangle (Brushes.Black, 6, 6, 2, 2);
-						g.FillRectangle (Brushes.Black, 6, 12, 2, 2);
-						g.FillRectangle (Brushes.Black, 12, 6, 2, 2);
-						g.FillRectangle (Brushes.Black, 12, 12, 2, 2);
-						g.DrawLine (Pens.Black, 8, 7, 8, 12);
-						g.DrawLine (Pens.Black, 7, 8, 12, 8);
-						g.DrawLine (Pens.Black, 11, 7, 11, 12);
-						g.DrawLine (Pens.Black, 7, 11, 12, 11);
-						break;
-					case ControlBoxType.Min:
-						g.DrawLine (Pens.Black, 6, 12, 11, 12);
-						g.DrawLine (Pens.Black, 6, 13, 11, 13);
-						break;
-					case ControlBoxType.Max:
-						g.DrawLines (Pens.Black, new Point[] {new Point (7, 8), new Point (7, 5), new Point (13, 5), new Point (13, 10), new Point (11, 10)});
-						g.DrawLine (Pens.Black, 7, 6, 12, 6);
-						
-						g.DrawRectangle (Pens.Black, new Rectangle (5, 8, 6, 5));
-						g.DrawLine (Pens.Black, 5, 9, 11, 9);
-						
-						break;
-				}
-			}
-
-			public Form MdiForm {
-				get { return form; }
-				set { form = value; }
-			}
-			
-			private void RestoreItemHandler (object sender, EventArgs e)
-			{
-				form.WindowState = FormWindowState.Normal;
-			}
-
-			private void MinimizeItemHandler (object sender, EventArgs e)
-			{
-				form.WindowState = FormWindowState.Minimized;
-			}
-
-			private void CloseItemHandler (object sender, EventArgs e)
-			{
-				form.Close ();
-			}
-		}
-		
-		public enum ControlBoxType
-		{
-			Close,
-			Min,
-			Max
-		}
-	}
-}
+//
+// MdiControlStrip.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System;
+using System.Runtime.InteropServices;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms.Layout;
+using System.Collections.Generic;
+using System.ComponentModel.Design.Serialization;
+
+namespace System.Windows.Forms
+{
+	internal class MdiControlStrip
+	{
+		public class SystemMenuItem : ToolStripMenuItem
+		{
+			private Form form;
+			
+			public SystemMenuItem (Form ownerForm)
+			{
+				form = ownerForm;
+				
+				base.AutoSize = false;
+				base.Size = new Size (20, 20);
+				base.Image = ownerForm.Icon.ToBitmap ();
+				base.MergeIndex = int.MinValue;
+				base.DisplayStyle = ToolStripItemDisplayStyle.Image;
+
+				DropDownItems.Add ("&Restore", null, RestoreItemHandler);
+				ToolStripMenuItem tsiMove = (ToolStripMenuItem)DropDownItems.Add ("&Move");
+				tsiMove.Enabled = false;
+				ToolStripMenuItem tsiSize = (ToolStripMenuItem)DropDownItems.Add ("&Size");
+				tsiSize.Enabled = false;
+				DropDownItems.Add ("Mi&nimize", null, MinimizeItemHandler);
+				ToolStripMenuItem tsiMaximize = (ToolStripMenuItem)DropDownItems.Add ("Ma&ximize");
+				tsiMaximize.Enabled = false;
+				DropDownItems.Add ("-");
+				ToolStripMenuItem tsiClose = (ToolStripMenuItem)DropDownItems.Add ("&Close", null, CloseItemHandler);
+				tsiClose.ShortcutKeys = Keys.Control | Keys.F4;
+				DropDownItems.Add ("-");
+				ToolStripMenuItem tsiNext = (ToolStripMenuItem)DropDownItems.Add ("Nex&t", null, NextItemHandler);
+				tsiNext.ShortcutKeys = Keys.Control | Keys.F6;
+			}
+
+			protected override void OnPaint (PaintEventArgs e)
+			{
+				// Can't render without an owner
+				if (this.Owner == null)
+					return;
+
+				// If DropDown.ShowImageMargin is false, we don't display the image
+				Image draw_image = this.Image;
+
+				// Figure out where our text and image go
+				Rectangle text_layout_rect;
+				Rectangle image_layout_rect;
+
+				this.CalculateTextAndImageRectangles (out text_layout_rect, out image_layout_rect);
+
+				if (image_layout_rect != Rectangle.Empty)
+					this.Owner.Renderer.DrawItemImage (new ToolStripItemImageRenderEventArgs (e.Graphics, this, draw_image, image_layout_rect));
+
+				return;
+			}
+
+			public Form MdiForm {
+				get { return form; }
+				set { form = value; }
+			}
+
+			private void RestoreItemHandler (object sender, EventArgs e)
+			{
+				form.WindowState = FormWindowState.Normal;
+			}
+
+			private void MinimizeItemHandler (object sender, EventArgs e)
+			{
+				form.WindowState = FormWindowState.Minimized;
+			}
+
+			private void CloseItemHandler (object sender, EventArgs e)
+			{
+				form.Close ();
+			}
+
+			private void NextItemHandler (object sender, EventArgs e)
+			{
+				form.MdiParent.MdiContainer.ActivateNextChild ();
+			}
+		}
+		
+		public class ControlBoxMenuItem : ToolStripMenuItem
+		{
+			private Form form;
+			private ControlBoxType type;
+			
+			public ControlBoxMenuItem (Form ownerForm, ControlBoxType type)
+			{
+				form = ownerForm;
+				this.type = type;
+				
+				base.AutoSize = false;
+				base.Alignment = ToolStripItemAlignment.Right;
+				base.Size = new Size (20, 20);
+				base.MergeIndex = int.MaxValue;
+				base.DisplayStyle = ToolStripItemDisplayStyle.None;
+
+				switch (type) {
+					case ControlBoxType.Close:
+						this.Click += new EventHandler(CloseItemHandler);
+						break;
+					case ControlBoxType.Min:
+						this.Click += new EventHandler (MinimizeItemHandler);
+						break;
+					case ControlBoxType.Max:
+						this.Click += new EventHandler (RestoreItemHandler);
+						break;
+				}
+			}
+
+			protected override void OnPaint (PaintEventArgs e)
+			{
+				base.OnPaint (e);
+				Graphics g = e.Graphics;
+				
+				switch (type) {
+					case ControlBoxType.Close:
+						g.FillRectangle (Brushes.Black, 8, 8, 4, 4);
+						g.FillRectangle (Brushes.Black, 6, 6, 2, 2);
+						g.FillRectangle (Brushes.Black, 6, 12, 2, 2);
+						g.FillRectangle (Brushes.Black, 12, 6, 2, 2);
+						g.FillRectangle (Brushes.Black, 12, 12, 2, 2);
+						g.DrawLine (Pens.Black, 8, 7, 8, 12);
+						g.DrawLine (Pens.Black, 7, 8, 12, 8);
+						g.DrawLine (Pens.Black, 11, 7, 11, 12);
+						g.DrawLine (Pens.Black, 7, 11, 12, 11);
+						break;
+					case ControlBoxType.Min:
+						g.DrawLine (Pens.Black, 6, 12, 11, 12);
+						g.DrawLine (Pens.Black, 6, 13, 11, 13);
+						break;
+					case ControlBoxType.Max:
+						g.DrawLines (Pens.Black, new Point[] {new Point (7, 8), new Point (7, 5), new Point (13, 5), new Point (13, 10), new Point (11, 10)});
+						g.DrawLine (Pens.Black, 7, 6, 12, 6);
+						
+						g.DrawRectangle (Pens.Black, new Rectangle (5, 8, 6, 5));
+						g.DrawLine (Pens.Black, 5, 9, 11, 9);
+						
+						break;
+				}
+			}
+
+			public Form MdiForm {
+				get { return form; }
+				set { form = value; }
+			}
+			
+			private void RestoreItemHandler (object sender, EventArgs e)
+			{
+				form.WindowState = FormWindowState.Normal;
+			}
+
+			private void MinimizeItemHandler (object sender, EventArgs e)
+			{
+				form.WindowState = FormWindowState.Minimized;
+			}
+
+			private void CloseItemHandler (object sender, EventArgs e)
+			{
+				form.Close ();
+			}
+		}
+		
+		public enum ControlBoxType
+		{
+			Close,
+			Min,
+			Max
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/NumericUpDownAcceleration.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/NumericUpDownAcceleration.cs
@@ -1,62 +1,62 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita (avidigal@novell.com)
-
-
-using System;
-
-namespace System.Windows.Forms
-{
-	public class NumericUpDownAcceleration
-	{
-		#region Fields
-		private decimal increment;
-		private int seconds;
-		#endregion
-
-		#region Properties
-		public decimal Increment {
-			get { return increment;}
-			set { increment = value;}
-		}
-
-		public int Seconds {
-			get { return seconds;}
-			set { seconds = value;}
-		}
-		#endregion
-
-		#region Constructor
-		public NumericUpDownAcceleration (int seconds, decimal increment)
-		{
-			if (seconds < 0)
-				throw new ArgumentOutOfRangeException ("Invalid seconds value. The seconds value must be equal or greater than zero.");
-			if (increment < 0)
-				throw new ArgumentOutOfRangeException ("Invalid increment value. The increment value must be equal or greater than zero.");
-	
-			this.increment = increment;
-			this.seconds = seconds;
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+
+
+using System;
+
+namespace System.Windows.Forms
+{
+	public class NumericUpDownAcceleration
+	{
+		#region Fields
+		private decimal increment;
+		private int seconds;
+		#endregion
+
+		#region Properties
+		public decimal Increment {
+			get { return increment;}
+			set { increment = value;}
+		}
+
+		public int Seconds {
+			get { return seconds;}
+			set { seconds = value;}
+		}
+		#endregion
+
+		#region Constructor
+		public NumericUpDownAcceleration (int seconds, decimal increment)
+		{
+			if (seconds < 0)
+				throw new ArgumentOutOfRangeException ("Invalid seconds value. The seconds value must be equal or greater than zero.");
+			if (increment < 0)
+				throw new ArgumentOutOfRangeException ("Invalid increment value. The increment value must be equal or greater than zero.");
+	
+			this.increment = increment;
+			this.seconds = seconds;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/NumericUpDownAccelerationCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/NumericUpDownAccelerationCollection.cs
@@ -1,113 +1,113 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita (avidigal@novell.com)
-
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Collections.Generic;
-
-namespace System.Windows.Forms
-{
-	[ListBindable (false)]
-	public class NumericUpDownAccelerationCollection : MarshalByRefObject, ICollection<NumericUpDownAcceleration>, 
-		IEnumerable<NumericUpDownAcceleration>, IEnumerable
-	{
-		#region Fields
-		private List<NumericUpDownAcceleration> items;
-		#endregion
-
-		#region Properties
-		public int Count {
-			get { return items.Count; }
-		}
-
-		public bool IsReadOnly {
-			get { return false; }
-		}
-
-		public NumericUpDownAcceleration this[int index] {
-			get { return items[index]; }
-		}
-		#endregion
-
-		#region Constructor
-		public NumericUpDownAccelerationCollection ()
-		{
-			items = new List<NumericUpDownAcceleration> ();
-		}
-		#endregion
-
-		#region Public Methods
-		public void Add (NumericUpDownAcceleration acceleration)
-		{
-			if (acceleration == null)
-				throw new ArgumentNullException ("Acceleration cannot be null");
-
-			int i = 0;
-			for (; i < items.Count; i++) {
-				if (acceleration.Seconds < items[i].Seconds)
-					break;
-			}
-			items.Insert (i, acceleration);
-		}
-
-		public void AddRange (params NumericUpDownAcceleration[] accelerations)
-		{
-			for (int i = 0; i < accelerations.Length; i++)
-				Add (accelerations [i]);
-		}
-
-		public void Clear ()
-		{
-			items.Clear ();
-		}
-
-		public bool Contains (NumericUpDownAcceleration acceleration)
-		{
-			return items.Contains (acceleration);
-		}
-
-		public void CopyTo (NumericUpDownAcceleration[] array, int index)
-		{
-			items.CopyTo (array, index);
-		}
-
-		public bool Remove (NumericUpDownAcceleration acceleration)
-		{
-			return items.Remove (acceleration);
-		}
-
-		IEnumerator<NumericUpDownAcceleration> IEnumerable<NumericUpDownAcceleration>.GetEnumerator ()
-		{
-			return items.GetEnumerator ();
-		}
-
-		IEnumerator IEnumerable.GetEnumerator ()
-		{
-			return items.GetEnumerator ();
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita (avidigal@novell.com)
+
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace System.Windows.Forms
+{
+	[ListBindable (false)]
+	public class NumericUpDownAccelerationCollection : MarshalByRefObject, ICollection<NumericUpDownAcceleration>, 
+		IEnumerable<NumericUpDownAcceleration>, IEnumerable
+	{
+		#region Fields
+		private List<NumericUpDownAcceleration> items;
+		#endregion
+
+		#region Properties
+		public int Count {
+			get { return items.Count; }
+		}
+
+		public bool IsReadOnly {
+			get { return false; }
+		}
+
+		public NumericUpDownAcceleration this[int index] {
+			get { return items[index]; }
+		}
+		#endregion
+
+		#region Constructor
+		public NumericUpDownAccelerationCollection ()
+		{
+			items = new List<NumericUpDownAcceleration> ();
+		}
+		#endregion
+
+		#region Public Methods
+		public void Add (NumericUpDownAcceleration acceleration)
+		{
+			if (acceleration == null)
+				throw new ArgumentNullException ("Acceleration cannot be null");
+
+			int i = 0;
+			for (; i < items.Count; i++) {
+				if (acceleration.Seconds < items[i].Seconds)
+					break;
+			}
+			items.Insert (i, acceleration);
+		}
+
+		public void AddRange (params NumericUpDownAcceleration[] accelerations)
+		{
+			for (int i = 0; i < accelerations.Length; i++)
+				Add (accelerations [i]);
+		}
+
+		public void Clear ()
+		{
+			items.Clear ();
+		}
+
+		public bool Contains (NumericUpDownAcceleration acceleration)
+		{
+			return items.Contains (acceleration);
+		}
+
+		public void CopyTo (NumericUpDownAcceleration[] array, int index)
+		{
+			items.CopyTo (array, index);
+		}
+
+		public bool Remove (NumericUpDownAcceleration acceleration)
+		{
+			return items.Remove (acceleration);
+		}
+
+		IEnumerator<NumericUpDownAcceleration> IEnumerable<NumericUpDownAcceleration>.GetEnumerator ()
+		{
+			return items.GetEnumerator ();
+		}
+
+		IEnumerator IEnumerable.GetEnumerator ()
+		{
+			return items.GetEnumerator ();
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/PowerStatus.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/PowerStatus.cs
@@ -1,72 +1,72 @@
-//
-// PowerStatus.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-namespace System.Windows.Forms
-{
-	public class PowerStatus
-	{
-		private BatteryChargeStatus battery_charge_status;
-		private int battery_full_lifetime;
-		private float battery_life_percent;
-		private int battery_life_remaining;
-		private PowerLineStatus power_line_status;
-
-		#region Internal Constructor
-		internal PowerStatus (BatteryChargeStatus batteryChargeStatus, int batteryFullLifetime, float batteryLifePercent, int batteryLifeRemaining, PowerLineStatus powerLineStatus)
-		{
-			this.battery_charge_status = batteryChargeStatus;
-			this.battery_full_lifetime = batteryFullLifetime;
-			this.battery_life_percent = batteryLifePercent;
-			this.battery_life_remaining = batteryLifeRemaining;
-			this.power_line_status = powerLineStatus;
-		}
-		#endregion
-		
-		#region Public Properties
-		public BatteryChargeStatus BatteryChargeStatus {
-			get { return battery_charge_status; }
-		}
-		
-		public int BatteryFullLifetime {
-			get { return battery_full_lifetime; }
-		}
-		
-		public float BatteryLifePercent {
-			get { return battery_life_percent; }
-		}
-		
-		public int BatteryLifeRemaining {
-			get { return battery_life_remaining; }
-		}
-		
-		public PowerLineStatus PowerLineStatus {
-			get { return power_line_status; }
-		}
-		#endregion
-	}
-}
+//
+// PowerStatus.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+namespace System.Windows.Forms
+{
+	public class PowerStatus
+	{
+		private BatteryChargeStatus battery_charge_status;
+		private int battery_full_lifetime;
+		private float battery_life_percent;
+		private int battery_life_remaining;
+		private PowerLineStatus power_line_status;
+
+		#region Internal Constructor
+		internal PowerStatus (BatteryChargeStatus batteryChargeStatus, int batteryFullLifetime, float batteryLifePercent, int batteryLifeRemaining, PowerLineStatus powerLineStatus)
+		{
+			this.battery_charge_status = batteryChargeStatus;
+			this.battery_full_lifetime = batteryFullLifetime;
+			this.battery_life_percent = batteryLifePercent;
+			this.battery_life_remaining = batteryLifeRemaining;
+			this.power_line_status = powerLineStatus;
+		}
+		#endregion
+		
+		#region Public Properties
+		public BatteryChargeStatus BatteryChargeStatus {
+			get { return battery_charge_status; }
+		}
+		
+		public int BatteryFullLifetime {
+			get { return battery_full_lifetime; }
+		}
+		
+		public float BatteryLifePercent {
+			get { return battery_life_percent; }
+		}
+		
+		public int BatteryLifeRemaining {
+			get { return battery_life_remaining; }
+		}
+		
+		public PowerLineStatus PowerLineStatus {
+			get { return power_line_status; }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/TextBoxTextRenderer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/TextBoxTextRenderer.cs
@@ -1,131 +1,131 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//	Jonathan Pobst	monkey@jpobst.com
-//
-//
-
-using System;
-using System.Drawing;
-using System.Drawing.Text;
-using System.Text;
-using System.Collections;
-
-namespace System.Windows.Forms
-{
-	internal class TextBoxTextRenderer
-	{
-		private static Size max_size;
-		private static bool use_textrenderer;
-		private static StringFormat sf_nonprinting;
-		private static StringFormat sf_printing;
-		private static Hashtable measure_cache;
-				
-		static TextBoxTextRenderer ()
-		{
-			// On Windows, we want to use TextRenderer (GDI)
-			// On Linux, we want to use DrawString (GDI+)
-			// TextRenderer provides translation from TextRenderer to
-			// DrawString, but I doubt it's exact enough.
-			// Another option would be to put Pango here for Linux.
-			int platform = (int)Environment.OSVersion.Platform;
-			
-			if (platform == 4 || platform == 128 || platform == 6)
-				use_textrenderer = false;
-			else
-				use_textrenderer = true;
-
-			// windows 2000 doesn't draw with gdi if bounds are In32.MaxValue
-			max_size = new Size (Int16.MaxValue, Int16.MaxValue);
-			
-			sf_nonprinting = new StringFormat (StringFormat.GenericTypographic);
-			sf_nonprinting.Trimming = StringTrimming.None;
-			sf_nonprinting.FormatFlags = StringFormatFlags.DisplayFormatControl;	
-			sf_nonprinting.HotkeyPrefix = HotkeyPrefix.None;		
-
-			sf_printing = StringFormat.GenericTypographic;
-			sf_printing.HotkeyPrefix = HotkeyPrefix.None;
-			
-			measure_cache = new Hashtable ();
-		}
-		
-		public static void DrawText (Graphics g, string text, Font font, Color color, float x, float y, bool showNonPrint)
-		{
-			if (!use_textrenderer) {
-				if (showNonPrint)
-					g.DrawString (text, font, ThemeEngine.Current.ResPool.GetSolidBrush (color), x, y, sf_nonprinting);
-				else
-					g.DrawString (text, font, ThemeEngine.Current.ResPool.GetSolidBrush (color), x, y, sf_printing);
-			} else {
-				if (showNonPrint)
-					TextRenderer.DrawTextInternal (g, text, font, new Rectangle (new Point ((int)x, (int)y), max_size), color, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
-				else
-					TextRenderer.DrawTextInternal (g, text, font, new Rectangle (new Point ((int)x, (int)y), max_size), color, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
-			}
-		}
-		
-		public static SizeF MeasureText (Graphics g, string text, Font font)
-		{
-			// Due to the way the TextBox currently works, it measures each
-			// character one at a time.  And it does this alot.  So here we
-			// are implementing a cache for each font/character combination
-			// measurement.  Since the number of fonts and number of characters
-			// used tends to be small, this is a good performance gain for
-			// not too much memory.
-			if (text.Length == 1) {
-				// If g.VisibleClipBounds is {X=0, Y=0, Width=1, Height=1}, then some characters
-				// (in some fonts for some point sizes) return a different width then when the
-				// VisibleClipBounds has a different (usually but not always more reasonable) value.
-				// This state of the Graphics object can occur during initialization of text boxes
-				// with preset Text values. See https://bugzilla.xamarin.com/show_bug.cgi?id=26258
-				// for more details.
-				string sep;
-				var bounds = g.VisibleClipBounds;
-				if (bounds.Width == 1 && bounds.Height == 1 && bounds.X == 0 && bounds.Y == 0)
-					sep = "-1x1|";
-				else
-					sep = "|";
-				string key = font.GetHashCode ().ToString () + sep + text;
-				
-				if (measure_cache.ContainsKey (key)) {
-					return (SizeF)measure_cache[key];
-				} else {
-					SizeF size;
-					
-					if (!use_textrenderer)
-						size = g.MeasureString (text, font, 10000, sf_nonprinting);
-					else
-						size = TextRenderer.MeasureTextInternal (g, text, font, Size.Empty, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
-				
-					measure_cache[key] = size;
-				
-					return size;
-				}
-			}
-			
-			if (!use_textrenderer)
-				return g.MeasureString (text, font, 10000, sf_nonprinting);
-			else
-				return TextRenderer.MeasureTextInternal (g, text, font, Size.Empty, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//	Jonathan Pobst	monkey@jpobst.com
+//
+//
+
+using System;
+using System.Drawing;
+using System.Drawing.Text;
+using System.Text;
+using System.Collections;
+
+namespace System.Windows.Forms
+{
+	internal class TextBoxTextRenderer
+	{
+		private static Size max_size;
+		private static bool use_textrenderer;
+		private static StringFormat sf_nonprinting;
+		private static StringFormat sf_printing;
+		private static Hashtable measure_cache;
+				
+		static TextBoxTextRenderer ()
+		{
+			// On Windows, we want to use TextRenderer (GDI)
+			// On Linux, we want to use DrawString (GDI+)
+			// TextRenderer provides translation from TextRenderer to
+			// DrawString, but I doubt it's exact enough.
+			// Another option would be to put Pango here for Linux.
+			int platform = (int)Environment.OSVersion.Platform;
+			
+			if (platform == 4 || platform == 128 || platform == 6)
+				use_textrenderer = false;
+			else
+				use_textrenderer = true;
+
+			// windows 2000 doesn't draw with gdi if bounds are In32.MaxValue
+			max_size = new Size (Int16.MaxValue, Int16.MaxValue);
+			
+			sf_nonprinting = new StringFormat (StringFormat.GenericTypographic);
+			sf_nonprinting.Trimming = StringTrimming.None;
+			sf_nonprinting.FormatFlags = StringFormatFlags.DisplayFormatControl;	
+			sf_nonprinting.HotkeyPrefix = HotkeyPrefix.None;		
+
+			sf_printing = StringFormat.GenericTypographic;
+			sf_printing.HotkeyPrefix = HotkeyPrefix.None;
+			
+			measure_cache = new Hashtable ();
+		}
+		
+		public static void DrawText (Graphics g, string text, Font font, Color color, float x, float y, bool showNonPrint)
+		{
+			if (!use_textrenderer) {
+				if (showNonPrint)
+					g.DrawString (text, font, ThemeEngine.Current.ResPool.GetSolidBrush (color), x, y, sf_nonprinting);
+				else
+					g.DrawString (text, font, ThemeEngine.Current.ResPool.GetSolidBrush (color), x, y, sf_printing);
+			} else {
+				if (showNonPrint)
+					TextRenderer.DrawTextInternal (g, text, font, new Rectangle (new Point ((int)x, (int)y), max_size), color, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
+				else
+					TextRenderer.DrawTextInternal (g, text, font, new Rectangle (new Point ((int)x, (int)y), max_size), color, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
+			}
+		}
+		
+		public static SizeF MeasureText (Graphics g, string text, Font font)
+		{
+			// Due to the way the TextBox currently works, it measures each
+			// character one at a time.  And it does this alot.  So here we
+			// are implementing a cache for each font/character combination
+			// measurement.  Since the number of fonts and number of characters
+			// used tends to be small, this is a good performance gain for
+			// not too much memory.
+			if (text.Length == 1) {
+				// If g.VisibleClipBounds is {X=0, Y=0, Width=1, Height=1}, then some characters
+				// (in some fonts for some point sizes) return a different width then when the
+				// VisibleClipBounds has a different (usually but not always more reasonable) value.
+				// This state of the Graphics object can occur during initialization of text boxes
+				// with preset Text values. See https://bugzilla.xamarin.com/show_bug.cgi?id=26258
+				// for more details.
+				string sep;
+				var bounds = g.VisibleClipBounds;
+				if (bounds.Width == 1 && bounds.Height == 1 && bounds.X == 0 && bounds.Y == 0)
+					sep = "-1x1|";
+				else
+					sep = "|";
+				string key = font.GetHashCode ().ToString () + sep + text;
+				
+				if (measure_cache.ContainsKey (key)) {
+					return (SizeF)measure_cache[key];
+				} else {
+					SizeF size;
+					
+					if (!use_textrenderer)
+						size = g.MeasureString (text, font, 10000, sf_nonprinting);
+					else
+						size = TextRenderer.MeasureTextInternal (g, text, font, Size.Empty, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
+				
+					measure_cache[key] = size;
+				
+					return size;
+				}
+			}
+			
+			if (!use_textrenderer)
+				return g.MeasureString (text, font, 10000, sf_nonprinting);
+			else
+				return TextRenderer.MeasureTextInternal (g, text, font, Size.Empty, TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix, false);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/ToolStripDropDownItemAccessibleObject.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/ToolStripDropDownItemAccessibleObject.cs
@@ -1,66 +1,66 @@
-//
-// ToolStripDropDownItemAccessibleObject.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System.Drawing;
-using System.ComponentModel;
-using System.Windows.Forms.Design;
-
-namespace System.Windows.Forms
-{
-	public class ToolStripDropDownItemAccessibleObject : ToolStripItem.ToolStripItemAccessibleObject
-	{
-		#region Public Constructor
-		public ToolStripDropDownItemAccessibleObject (ToolStripDropDownItem item) : base (item)
-		{
-		}
-		#endregion
-
-		#region Public Properties
-		public override AccessibleRole Role {
-			get { return base.Role; }
-		}
-		#endregion
-
-		#region Public Methods
-		public override void DoDefaultAction ()
-		{
-			base.DoDefaultAction ();
-		}
-
-		public override AccessibleObject GetChild (int index)
-		{
-			return (owner_item as ToolStripDropDownItem).DropDownItems[index].AccessibilityObject;
-		}
-
-		public override int GetChildCount ()
-		{
-			return (owner_item as ToolStripDropDownItem).DropDownItems.Count;
-		}
-		#endregion
-	}
-}
+//
+// ToolStripDropDownItemAccessibleObject.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System.Drawing;
+using System.ComponentModel;
+using System.Windows.Forms.Design;
+
+namespace System.Windows.Forms
+{
+	public class ToolStripDropDownItemAccessibleObject : ToolStripItem.ToolStripItemAccessibleObject
+	{
+		#region Public Constructor
+		public ToolStripDropDownItemAccessibleObject (ToolStripDropDownItem item) : base (item)
+		{
+		}
+		#endregion
+
+		#region Public Properties
+		public override AccessibleRole Role {
+			get { return base.Role; }
+		}
+		#endregion
+
+		#region Public Methods
+		public override void DoDefaultAction ()
+		{
+			base.DoDefaultAction ();
+		}
+
+		public override AccessibleObject GetChild (int index)
+		{
+			return (owner_item as ToolStripDropDownItem).DropDownItems[index].AccessibilityObject;
+		}
+
+		public override int GetChildCount ()
+		{
+			return (owner_item as ToolStripDropDownItem).DropDownItems.Count;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/ToolStripSystemRenderer.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/ToolStripSystemRenderer.cs
@@ -1,130 +1,130 @@
-//
-// ToolStripSystemRenderer.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Drawing.Imaging;
-using System.Windows.Forms.Theming;
-
-namespace System.Windows.Forms
-{
-	public class ToolStripSystemRenderer : ToolStripRenderer
-	{
-		#region Public Constructor
-		public ToolStripSystemRenderer ()
-		{
-		}
-		#endregion
-
-		#region Protected Methods
-		protected override void OnRenderButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderButtonBackground (e);
-
-			base.OnRenderButtonBackground (e);
-		}
-
-		protected override void OnRenderDropDownButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderDropDownButtonBackground (e);
-
-			base.OnRenderDropDownButtonBackground (e);
-		}
-
-		protected override void OnRenderGrip (ToolStripGripRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderGrip (e);
-
-			base.OnRenderGrip (e);
-		}
-
-		protected override void OnRenderImageMargin (ToolStripRenderEventArgs e)
-		{
-			base.OnRenderImageMargin (e);
-		}
-
-		protected override void OnRenderItemBackground (ToolStripItemRenderEventArgs e)
-		{
-			base.OnRenderItemBackground (e);
-		}
-
-		protected override void OnRenderLabelBackground (ToolStripItemRenderEventArgs e)
-		{
-			base.OnRenderLabelBackground (e);
-		}
-
-		protected override void OnRenderMenuItemBackground (ToolStripItemRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderMenuItemBackground (e);
-			
-			base.OnRenderMenuItemBackground (e);
-		}
-
-		protected override void OnRenderOverflowButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderOverflowButtonBackground (e);
-
-			base.OnRenderOverflowButtonBackground (e);
-		}
-
-		protected override void OnRenderSeparator (ToolStripSeparatorRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderSeparator (e);
-
-			base.OnRenderSeparator (e);
-		}
-
-		protected override void OnRenderSplitButtonBackground (ToolStripItemRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderSplitButtonBackground (e);
-
-			base.OnRenderSplitButtonBackground (e);
-		}
-
-		protected override void OnRenderToolStripBackground (ToolStripRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderToolStripBackground (e);
-
-			base.OnRenderToolStripBackground (e);
-		}
-
-		protected override void OnRenderToolStripBorder (ToolStripRenderEventArgs e)
-		{
-			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderToolStripBorder (e);
-
-			base.OnRenderToolStripBorder (e);
-		}
-
-		protected override void OnRenderToolStripStatusLabelBackground (ToolStripItemRenderEventArgs e)
-		{
-			base.OnRenderToolStripStatusLabelBackground (e);
-		}
-		#endregion
-	}
-}
+//
+// ToolStripSystemRenderer.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
+using System.Windows.Forms.Theming;
+
+namespace System.Windows.Forms
+{
+	public class ToolStripSystemRenderer : ToolStripRenderer
+	{
+		#region Public Constructor
+		public ToolStripSystemRenderer ()
+		{
+		}
+		#endregion
+
+		#region Protected Methods
+		protected override void OnRenderButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderButtonBackground (e);
+
+			base.OnRenderButtonBackground (e);
+		}
+
+		protected override void OnRenderDropDownButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderDropDownButtonBackground (e);
+
+			base.OnRenderDropDownButtonBackground (e);
+		}
+
+		protected override void OnRenderGrip (ToolStripGripRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderGrip (e);
+
+			base.OnRenderGrip (e);
+		}
+
+		protected override void OnRenderImageMargin (ToolStripRenderEventArgs e)
+		{
+			base.OnRenderImageMargin (e);
+		}
+
+		protected override void OnRenderItemBackground (ToolStripItemRenderEventArgs e)
+		{
+			base.OnRenderItemBackground (e);
+		}
+
+		protected override void OnRenderLabelBackground (ToolStripItemRenderEventArgs e)
+		{
+			base.OnRenderLabelBackground (e);
+		}
+
+		protected override void OnRenderMenuItemBackground (ToolStripItemRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderMenuItemBackground (e);
+			
+			base.OnRenderMenuItemBackground (e);
+		}
+
+		protected override void OnRenderOverflowButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderOverflowButtonBackground (e);
+
+			base.OnRenderOverflowButtonBackground (e);
+		}
+
+		protected override void OnRenderSeparator (ToolStripSeparatorRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderSeparator (e);
+
+			base.OnRenderSeparator (e);
+		}
+
+		protected override void OnRenderSplitButtonBackground (ToolStripItemRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderSplitButtonBackground (e);
+
+			base.OnRenderSplitButtonBackground (e);
+		}
+
+		protected override void OnRenderToolStripBackground (ToolStripRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderToolStripBackground (e);
+
+			base.OnRenderToolStripBackground (e);
+		}
+
+		protected override void OnRenderToolStripBorder (ToolStripRenderEventArgs e)
+		{
+			ThemeElements.CurrentTheme.ToolStripPainter.OnRenderToolStripBorder (e);
+
+			base.OnRenderToolStripBorder (e);
+		}
+
+		protected override void OnRenderToolStripStatusLabelBackground (ToolStripItemRenderEventArgs e)
+		{
+			base.OnRenderToolStripStatusLabelBackground (e);
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/TreeViewImageKeyConverter.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/TreeViewImageKeyConverter.cs
@@ -1,50 +1,50 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//   Jonathan Pobst  monkey@jpobst.com
-//
-
-using System.Drawing;
-using System.ComponentModel;
-using System.Collections;
-using System.Diagnostics;
-using System.Globalization;
-using System.Runtime.InteropServices;
-
-namespace System.Windows.Forms
-{
-	public class TreeViewImageKeyConverter : ImageKeyConverter
-	{
-		#region Constructors
-		public TreeViewImageKeyConverter () { }
-		#endregion Constructors
-
-		#region Public Methods
-		// XXX - Can't find the difference from the base method
-		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture,
-						  object value, Type destinationType)
-		{
-			return base.ConvertTo (context, culture, value, destinationType);
-		}
-		#endregion Public Methods
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//   Jonathan Pobst  monkey@jpobst.com
+//
+
+using System.Drawing;
+using System.ComponentModel;
+using System.Collections;
+using System.Diagnostics;
+using System.Globalization;
+using System.Runtime.InteropServices;
+
+namespace System.Windows.Forms
+{
+	public class TreeViewImageKeyConverter : ImageKeyConverter
+	{
+		#region Constructors
+		public TreeViewImageKeyConverter () { }
+		#endregion Constructors
+
+		#region Public Methods
+		// XXX - Can't find the difference from the base method
+		public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture,
+						  object value, Type destinationType)
+		{
+			return base.ConvertTo (context, culture, value, destinationType);
+		}
+		#endregion Public Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/WebBrowser.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/WebBrowser.cs
@@ -1,706 +1,706 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007, 2008 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using System.Reflection;
-using System.Windows.Forms;
-using System.IO;
-using System.Drawing;
-
-namespace System.Windows.Forms
-{
-	[DefaultProperty ("Url")]
-	[DefaultEvent ("DocumentCompleted")]
-	[Docking (DockingBehavior.AutoDock)]
-	[ClassInterface (ClassInterfaceType.AutoDispatch)]
-	[ComVisible(true)]
-	[Designer("System.Windows.Forms.Design.WebBrowserDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-	public class WebBrowser : WebBrowserBase
-	{
-		bool allowNavigation; // if this is true, no other navigation is allowed
-		
-		bool allowWebBrowserDrop = true;
-		bool isWebBrowserContextMenuEnabled;
-		object objectForScripting;
-		bool webBrowserShortcutsEnabled;
-		bool scrollbarsEnabled = true;
-		
-		WebBrowserReadyState readyState;
-
-		HtmlDocument document;
-		
-		WebBrowserEncryptionLevel securityLevel;
-
-		Stream data;
-		bool isStreamSet;
-
-		string url;
-
-		#region Public Properties
-
-		[DefaultValue(true)]
-		public bool AllowNavigation {
-			get { return allowNavigation; }
-			set { allowNavigation = value; }
-		}
-
-		[DefaultValue (true)]
-		public bool AllowWebBrowserDrop {
-			get { return allowWebBrowserDrop; }
-			set { allowWebBrowserDrop = value; }
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public bool CanGoBack {
-			get { return this.WebHost.Navigation.CanGoBack; }
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public bool CanGoForward {
-			get { return this.WebHost.Navigation.CanGoForward; }
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public HtmlDocument Document {
-			get {
-				if (document == null && documentReady)
-					document = new HtmlDocument (this, this.WebHost);
-				return document; 
-			}
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public Stream DocumentStream {
-			get {
-				if (WebHost.Document == null || WebHost.Document.DocumentElement == null)
-					return null;
-
-				return null; //WebHost.Document.DocumentElement.ContentStream;
-			}
-			set { 
-				if (this.allowNavigation)
-					return;
-
-				this.Url = new Uri ("about:blank");
-
-				data = value;
-				isStreamSet = true;
-			}
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public string DocumentText {
-			get { 
-				if (WebHost.Document == null || WebHost.Document.DocumentElement == null)
-					return String.Empty;
-				return WebHost.Document.DocumentElement.OuterHTML;
-			}
-			set {
-				if (WebHost.Document != null && WebHost.Document.DocumentElement != null)
-					WebHost.Document.DocumentElement.OuterHTML = value;
-			}
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public string DocumentTitle {
-			get {
-				if (document != null)
-					return document.Title;
-				return String.Empty;
-			}
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public string DocumentType {
-			get {
-				if (document != null)
-					return document.DocType;
-				return String.Empty;
-			}
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public WebBrowserEncryptionLevel EncryptionLevel {
-			get { return securityLevel; }
-		}
-
-		public override bool Focused {
-			get { return base.Focused; }
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public bool IsBusy {
-			get { return !documentReady; }
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public bool IsOffline {
-			get { return WebHost.Offline; }
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		[DefaultValue(true)]
-		public bool IsWebBrowserContextMenuEnabled {
-			get { return isWebBrowserContextMenuEnabled; }
-			set { isWebBrowserContextMenuEnabled = value; }
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public object ObjectForScripting {
-			get { return objectForScripting; }
-			set { objectForScripting = value; }
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public WebBrowserReadyState ReadyState {
-			get { return readyState; }
-		}
-
-		[DefaultValue(false)]
-		public bool ScriptErrorsSuppressed {
-			get { return SuppressDialogs; }
-			set { SuppressDialogs = value; }
-		}
-		
-		[DefaultValue(true)]
-		public bool ScrollBarsEnabled {
-			get { return scrollbarsEnabled; }
-			set {
-				scrollbarsEnabled = value;
-				if (document != null)
-					SetScrollbars ();
-			}
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public virtual string StatusText {
-			get { return base.status; }
-		}
-
-		[BindableAttribute(true)] 
-		[DefaultValue(null)]
-		[TypeConverter(typeof(WebBrowserUriTypeConverter))]
-		public Uri Url {
-			get {
-				if (url != null)
-					return new Uri (url);
-				if (WebHost.Document != null && WebHost.Document.Url != null)
-					return new Uri (WebHost.Document.Url);
-				return null;
-			}
-			set {
-				url = null;
-				this.Navigate (value); 
-			}
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		public Version Version {
-			get { 
-				Assembly ass = WebHost.GetType().Assembly;
-				return ass.GetName().Version;
-			}
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		[DefaultValue(true)]
-		public bool WebBrowserShortcutsEnabled {
-			get { return webBrowserShortcutsEnabled; }
-			set { webBrowserShortcutsEnabled = value; }
-		}
-		
-		protected override Size DefaultSize {
-			get { return base.DefaultSize; }
-		}
-
-		[BrowsableAttribute(false)]
-		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new Padding Padding {
-			get { return base.Padding; }
-			set { base.Padding = value; }
-		}
-		
-		#endregion
-
-		[MonoTODO ("WebBrowser control is only supported on Linux/Windows. No support for OSX.")]
-		public WebBrowser ()
-		{
-		}
-
-		#region Public Methods
-
-		public bool GoBack ()
-		{
-			documentReady = false;
-			document = null;
-			return WebHost.Navigation.Back ();
-		}
-
-		public bool GoForward ()
-		{
-			documentReady = false;
-			document = null;
-			return WebHost.Navigation.Forward ();
-		}
-
-		public void GoHome ()
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Home ();
-		}
-
-		public void Navigate (string urlString)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (urlString);
-		}
-
-		public void Navigate (Uri url)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (url.ToString ());
-		}
-
-		public void Navigate (string urlString, bool newWindow)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (urlString);
-		}
-
-		public void Navigate (string urlString, string targetFrameName)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (urlString);
-		}
-
-		public void Navigate (Uri url, bool newWindow)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (url.ToString ());
-		}
-
-		public void Navigate (Uri url, string targetFrameName)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (url.ToString ());
-		}
-
-		public void Navigate (string urlString, string targetFrameName, byte[] postData, string additionalHeaders)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (urlString);
-		}
-
-		public void Navigate (Uri url, string targetFrameName, byte[] postData, string additionalHeaders)
-		{
-			documentReady = false;
-			document = null;
-			WebHost.Navigation.Go (url.ToString ());
-		}
-
-		public override void Refresh ()
-		{
-			Refresh (WebBrowserRefreshOption.IfExpired);
-		}
-
-		public void Refresh (WebBrowserRefreshOption opt)
-		{
-			documentReady = false;
-			document = null;
-			switch (opt) {
-				case WebBrowserRefreshOption.Normal:
-					WebHost.Navigation.Reload (Mono.WebBrowser.ReloadOption.Proxy);
-					break;
-				case WebBrowserRefreshOption.IfExpired:
-					WebHost.Navigation.Reload (Mono.WebBrowser.ReloadOption.None);
-					break;
-				case WebBrowserRefreshOption.Completely:
-					WebHost.Navigation.Reload (Mono.WebBrowser.ReloadOption.Full);
-					break;
-			}
-		}
-
-		public void Stop ()
-		{
-			WebHost.Navigation.Stop ();
-		}
-
-		public void GoSearch ()
-		{
-			string url = "http://www.google.com";
-			try {
-				Microsoft.Win32.RegistryKey reg = Microsoft.Win32.Registry.CurrentUser.OpenSubKey (@"Software\Microsoft\Internet Explorer\Main\Search Page");
-				if (reg != null) {
-					object searchUrl = reg.GetValue ("Default_Search_URL");
-					if (searchUrl != null && searchUrl is string) {
-						Uri uri;
-						if (System.Uri.TryCreate (searchUrl as string, UriKind.Absolute, out uri))
-							url = uri.ToString ();
-					}
-				}
-			} catch {
-			}
-			Navigate (url);
-		}
-
-		public void Print ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		public void ShowPageSetupDialog ()
-		{
-			throw new NotImplementedException ();
-		}
-
-		public void ShowPrintDialog()
-		{
-			throw new NotImplementedException ();
-		}
-		
-		public void ShowPrintPreviewDialog()
-		{
-			throw new NotImplementedException ();
-		}
-		
-		public void ShowPropertiesDialog()
-		{
-			throw new NotImplementedException ();
-		}
-		
-		public void ShowSaveAsDialog()
-		{
-			throw new NotImplementedException ();
-		}
-
-		#endregion
-
-		#region Protected Overridden Methods
-
-		[MonoTODO ("Stub, not implemented")]
-		protected override void AttachInterfaces (object nativeActiveXObject)
-		{
-			base.AttachInterfaces (nativeActiveXObject);
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		protected override void CreateSink ()
-		{
-			base.CreateSink ();
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		protected override WebBrowserSiteBase CreateWebBrowserSiteBase ()
-		{
-			return base.CreateWebBrowserSiteBase ();
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		protected override void DetachInterfaces ()
-		{
-			base.DetachInterfaces ();
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		protected override void DetachSink ()
-		{
-			base.DetachSink ();
-		}
-
-		protected override void Dispose (bool disposing)
-		{
-			base.Dispose (disposing);
-		}
-
-		protected override void WndProc (ref Message m)
-		{
-			base.WndProc (ref m);
-		}
-
-		#endregion
-
-		#region OnXXX methods
-
-		protected virtual void OnCanGoBackChanged(EventArgs e)
-		{
-			if (CanGoBackChanged != null)
-				CanGoBackChanged (this, e);
-		}
-
-		protected virtual void OnCanGoForwardChanged(EventArgs e)
-		{			
-			if (CanGoForwardChanged != null)
-				CanGoForwardChanged (this, e);
-		}
-
-		protected virtual void OnDocumentCompleted(WebBrowserDocumentCompletedEventArgs e)
-		{
-			if (DocumentCompleted != null)
-				DocumentCompleted (this, e);
-		}
-
-		protected virtual void OnDocumentTitleChanged(EventArgs e)
-		{
-			if (DocumentTitleChanged != null)
-				DocumentTitleChanged (this, e);
-		}
-
-		protected virtual void OnEncryptionLevelChanged(EventArgs e)
-		{
-			if (EncryptionLevelChanged != null)
-				EncryptionLevelChanged (this, e);
-		}
-
-		protected virtual void OnFileDownload(EventArgs e)
-		{
-			if (FileDownload != null)
-				FileDownload (this, e);
-		}
-
-		protected virtual void OnNavigated(WebBrowserNavigatedEventArgs e)
-		{
-			if (Navigated != null)
-				Navigated (this, e);
-		}
-
-		protected virtual void OnNavigating(WebBrowserNavigatingEventArgs e)
-		{
-			if (Navigating != null)
-				Navigating (this, e);
-		}
-
-		protected virtual void OnNewWindow(CancelEventArgs e)
-		{
-			if (NewWindow != null)
-				NewWindow (this, e);
-		}
-
-		protected virtual void OnProgressChanged(WebBrowserProgressChangedEventArgs e)
-		{
-			if (ProgressChanged != null)
-				ProgressChanged (this, e);
-		}
-
-		protected virtual void OnStatusTextChanged(EventArgs e)
-		{
-			if (StatusTextChanged != null)
-				StatusTextChanged (this, e);
-		}
-
-		#endregion
-
-		#region Events	
-		[BrowsableAttribute(false)]
-		public event EventHandler CanGoBackChanged;
-
-		[BrowsableAttribute(false)]
-		public event EventHandler CanGoForwardChanged;
-
-		public event WebBrowserDocumentCompletedEventHandler DocumentCompleted;
-
-		[BrowsableAttribute(false)]
-		public event EventHandler DocumentTitleChanged;
-
-		[BrowsableAttribute(false)]
-		public event EventHandler EncryptionLevelChanged;
-
-		public event EventHandler FileDownload;
-
-		public event WebBrowserNavigatedEventHandler Navigated;
-
-		public event WebBrowserNavigatingEventHandler Navigating;
-
-		public event CancelEventHandler NewWindow;
-		
-		public event WebBrowserProgressChangedEventHandler ProgressChanged;
-
-		[BrowsableAttribute(false)]
-		public event EventHandler StatusTextChanged;
-
-#pragma warning disable 0067
-		[MonoTODO]
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public new event EventHandler PaddingChanged;
-#pragma warning restore 0067
-
-		#endregion
-
-		#region Internal
-
-		internal override bool OnNewWindowInternal ()
-		{
-			CancelEventArgs c = new CancelEventArgs ();
-			OnNewWindow (c);
-			return c.Cancel;
-		}
-		
-		internal override void OnWebHostLoadStarted (object sender, Mono.WebBrowser.LoadStartedEventArgs e)
-		{
-			documentReady = false;
-			document = null;
-			readyState = WebBrowserReadyState.Loading;
-			WebBrowserNavigatingEventArgs n = new WebBrowserNavigatingEventArgs (new Uri (e.Uri), e.FrameName);
-			OnNavigating (n);
-		}
-
-		internal override void OnWebHostLoadCommited (object sender, Mono.WebBrowser.LoadCommitedEventArgs e)
-		{
-			readyState = WebBrowserReadyState.Loaded;
-			url = e.Uri;
-			SetScrollbars ();
-			WebBrowserNavigatedEventArgs n = new WebBrowserNavigatedEventArgs (new Uri (e.Uri));
-			OnNavigated (n);
-		}
-		internal override void OnWebHostProgressChanged (object sender, Mono.WebBrowser.ProgressChangedEventArgs e)
-		{
-			readyState = WebBrowserReadyState.Interactive;
-			WebBrowserProgressChangedEventArgs n = new WebBrowserProgressChangedEventArgs (e.Progress, e.MaxProgress);
-			OnProgressChanged (n);
-		}
-
-		internal override void OnWebHostLoadFinished (object sender, Mono.WebBrowser.LoadFinishedEventArgs e)
-		{
-			url = null;
-			documentReady = true;
-			readyState = WebBrowserReadyState.Complete;
-			if (isStreamSet) {
-				byte[] buffer = new byte [data.Length];
-				long len = data.Length;
-				int count = 0;
-				data.Position = 0;
-				do {
-					count = data.Read (buffer, (int) data.Position, (int) (len - data.Position));
-				} while (count > 0);
-				WebHost.Render (buffer);
-				data = null;
-				isStreamSet = false;
-			}
-			SetScrollbars ();
-			WebBrowserDocumentCompletedEventArgs n = new WebBrowserDocumentCompletedEventArgs (new Uri (e.Uri));
-			OnDocumentCompleted (n);
-		}
-		
-		internal override void OnWebHostSecurityChanged (object sender, Mono.WebBrowser.SecurityChangedEventArgs e)
-		{
-			switch (e.State) {
-				case Mono.WebBrowser.SecurityLevel.Insecure:
-					securityLevel = WebBrowserEncryptionLevel.Insecure;
-				break;
-				case Mono.WebBrowser.SecurityLevel.Mixed:
-					securityLevel = WebBrowserEncryptionLevel.Mixed;
-				break;
-				case Mono.WebBrowser.SecurityLevel.Secure:
-					securityLevel = WebBrowserEncryptionLevel.Bit56;
-				break;
-			}
-		}
-		
-		internal override void OnWebHostContextMenuShown (object sender, Mono.WebBrowser.ContextMenuEventArgs e) {
-			if (!isWebBrowserContextMenuEnabled)
-				return;
-					
-            ContextMenu menu = new ContextMenu();
-                        
-			MenuItem item = new MenuItem("Back", delegate { 
-				GoBack(); 
-			});
-			item.Enabled = this.CanGoBack;
-			menu.MenuItems.Add (item);
-			
-			item = new MenuItem("Forward", delegate { 
-				GoForward(); 
-			});
-			item.Enabled = this.CanGoForward;
-			menu.MenuItems.Add (item);
-			
-			item = new MenuItem("Refresh", delegate { 
-				Refresh (); 
-			});
-			menu.MenuItems.Add (item);
-            
-            menu.MenuItems.Add (new MenuItem ("-"));
-            
-            menu.Show(this, PointToClient(MousePosition));
-		}
-
-		internal override void OnWebHostStatusChanged (object sender, Mono.WebBrowser.StatusChangedEventArgs e) {
-			base.status = e.Message;
-			OnStatusTextChanged (null);
-		}
-		
-		#endregion
-
-
-		void SetScrollbars () {
-			//if (!scrollbarsEnabled)
-			//        WebHost.ExecuteScript ("document.body.style.overflow='hidden';");
-			//else
-			//        WebHost.ExecuteScript ("document.body.style.overflow='auto';");
-		}
-
-		[MonoTODO ("Stub, not implemented")]
-		[ComVisible (false)]
-		protected class WebBrowserSite : WebBrowserSiteBase
-		{
-			[MonoTODO ("Stub, not implemented")]
-			public WebBrowserSite (WebBrowser host)
-				: base ()
-			{
-			}
-		}
-	}
-
-	internal class WebBrowserUriTypeConverter : UriTypeConverter
-	{
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.ComponentModel;
+using System.Runtime.InteropServices;
+using System.Reflection;
+using System.Windows.Forms;
+using System.IO;
+using System.Drawing;
+
+namespace System.Windows.Forms
+{
+	[DefaultProperty ("Url")]
+	[DefaultEvent ("DocumentCompleted")]
+	[Docking (DockingBehavior.AutoDock)]
+	[ClassInterface (ClassInterfaceType.AutoDispatch)]
+	[ComVisible(true)]
+	[Designer("System.Windows.Forms.Design.WebBrowserDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+	public class WebBrowser : WebBrowserBase
+	{
+		bool allowNavigation; // if this is true, no other navigation is allowed
+		
+		bool allowWebBrowserDrop = true;
+		bool isWebBrowserContextMenuEnabled;
+		object objectForScripting;
+		bool webBrowserShortcutsEnabled;
+		bool scrollbarsEnabled = true;
+		
+		WebBrowserReadyState readyState;
+
+		HtmlDocument document;
+		
+		WebBrowserEncryptionLevel securityLevel;
+
+		Stream data;
+		bool isStreamSet;
+
+		string url;
+
+		#region Public Properties
+
+		[DefaultValue(true)]
+		public bool AllowNavigation {
+			get { return allowNavigation; }
+			set { allowNavigation = value; }
+		}
+
+		[DefaultValue (true)]
+		public bool AllowWebBrowserDrop {
+			get { return allowWebBrowserDrop; }
+			set { allowWebBrowserDrop = value; }
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public bool CanGoBack {
+			get { return this.WebHost.Navigation.CanGoBack; }
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public bool CanGoForward {
+			get { return this.WebHost.Navigation.CanGoForward; }
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public HtmlDocument Document {
+			get {
+				if (document == null && documentReady)
+					document = new HtmlDocument (this, this.WebHost);
+				return document; 
+			}
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public Stream DocumentStream {
+			get {
+				if (WebHost.Document == null || WebHost.Document.DocumentElement == null)
+					return null;
+
+				return null; //WebHost.Document.DocumentElement.ContentStream;
+			}
+			set { 
+				if (this.allowNavigation)
+					return;
+
+				this.Url = new Uri ("about:blank");
+
+				data = value;
+				isStreamSet = true;
+			}
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public string DocumentText {
+			get { 
+				if (WebHost.Document == null || WebHost.Document.DocumentElement == null)
+					return String.Empty;
+				return WebHost.Document.DocumentElement.OuterHTML;
+			}
+			set {
+				if (WebHost.Document != null && WebHost.Document.DocumentElement != null)
+					WebHost.Document.DocumentElement.OuterHTML = value;
+			}
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public string DocumentTitle {
+			get {
+				if (document != null)
+					return document.Title;
+				return String.Empty;
+			}
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public string DocumentType {
+			get {
+				if (document != null)
+					return document.DocType;
+				return String.Empty;
+			}
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public WebBrowserEncryptionLevel EncryptionLevel {
+			get { return securityLevel; }
+		}
+
+		public override bool Focused {
+			get { return base.Focused; }
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public bool IsBusy {
+			get { return !documentReady; }
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public bool IsOffline {
+			get { return WebHost.Offline; }
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		[DefaultValue(true)]
+		public bool IsWebBrowserContextMenuEnabled {
+			get { return isWebBrowserContextMenuEnabled; }
+			set { isWebBrowserContextMenuEnabled = value; }
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public object ObjectForScripting {
+			get { return objectForScripting; }
+			set { objectForScripting = value; }
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public WebBrowserReadyState ReadyState {
+			get { return readyState; }
+		}
+
+		[DefaultValue(false)]
+		public bool ScriptErrorsSuppressed {
+			get { return SuppressDialogs; }
+			set { SuppressDialogs = value; }
+		}
+		
+		[DefaultValue(true)]
+		public bool ScrollBarsEnabled {
+			get { return scrollbarsEnabled; }
+			set {
+				scrollbarsEnabled = value;
+				if (document != null)
+					SetScrollbars ();
+			}
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public virtual string StatusText {
+			get { return base.status; }
+		}
+
+		[BindableAttribute(true)] 
+		[DefaultValue(null)]
+		[TypeConverter(typeof(WebBrowserUriTypeConverter))]
+		public Uri Url {
+			get {
+				if (url != null)
+					return new Uri (url);
+				if (WebHost.Document != null && WebHost.Document.Url != null)
+					return new Uri (WebHost.Document.Url);
+				return null;
+			}
+			set {
+				url = null;
+				this.Navigate (value); 
+			}
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		public Version Version {
+			get { 
+				Assembly ass = WebHost.GetType().Assembly;
+				return ass.GetName().Version;
+			}
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		[DefaultValue(true)]
+		public bool WebBrowserShortcutsEnabled {
+			get { return webBrowserShortcutsEnabled; }
+			set { webBrowserShortcutsEnabled = value; }
+		}
+		
+		protected override Size DefaultSize {
+			get { return base.DefaultSize; }
+		}
+
+		[BrowsableAttribute(false)]
+		[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new Padding Padding {
+			get { return base.Padding; }
+			set { base.Padding = value; }
+		}
+		
+		#endregion
+
+		[MonoTODO ("WebBrowser control is only supported on Linux/Windows. No support for OSX.")]
+		public WebBrowser ()
+		{
+		}
+
+		#region Public Methods
+
+		public bool GoBack ()
+		{
+			documentReady = false;
+			document = null;
+			return WebHost.Navigation.Back ();
+		}
+
+		public bool GoForward ()
+		{
+			documentReady = false;
+			document = null;
+			return WebHost.Navigation.Forward ();
+		}
+
+		public void GoHome ()
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Home ();
+		}
+
+		public void Navigate (string urlString)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (urlString);
+		}
+
+		public void Navigate (Uri url)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (url.ToString ());
+		}
+
+		public void Navigate (string urlString, bool newWindow)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (urlString);
+		}
+
+		public void Navigate (string urlString, string targetFrameName)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (urlString);
+		}
+
+		public void Navigate (Uri url, bool newWindow)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (url.ToString ());
+		}
+
+		public void Navigate (Uri url, string targetFrameName)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (url.ToString ());
+		}
+
+		public void Navigate (string urlString, string targetFrameName, byte[] postData, string additionalHeaders)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (urlString);
+		}
+
+		public void Navigate (Uri url, string targetFrameName, byte[] postData, string additionalHeaders)
+		{
+			documentReady = false;
+			document = null;
+			WebHost.Navigation.Go (url.ToString ());
+		}
+
+		public override void Refresh ()
+		{
+			Refresh (WebBrowserRefreshOption.IfExpired);
+		}
+
+		public void Refresh (WebBrowserRefreshOption opt)
+		{
+			documentReady = false;
+			document = null;
+			switch (opt) {
+				case WebBrowserRefreshOption.Normal:
+					WebHost.Navigation.Reload (Mono.WebBrowser.ReloadOption.Proxy);
+					break;
+				case WebBrowserRefreshOption.IfExpired:
+					WebHost.Navigation.Reload (Mono.WebBrowser.ReloadOption.None);
+					break;
+				case WebBrowserRefreshOption.Completely:
+					WebHost.Navigation.Reload (Mono.WebBrowser.ReloadOption.Full);
+					break;
+			}
+		}
+
+		public void Stop ()
+		{
+			WebHost.Navigation.Stop ();
+		}
+
+		public void GoSearch ()
+		{
+			string url = "http://www.google.com";
+			try {
+				Microsoft.Win32.RegistryKey reg = Microsoft.Win32.Registry.CurrentUser.OpenSubKey (@"Software\Microsoft\Internet Explorer\Main\Search Page");
+				if (reg != null) {
+					object searchUrl = reg.GetValue ("Default_Search_URL");
+					if (searchUrl != null && searchUrl is string) {
+						Uri uri;
+						if (System.Uri.TryCreate (searchUrl as string, UriKind.Absolute, out uri))
+							url = uri.ToString ();
+					}
+				}
+			} catch {
+			}
+			Navigate (url);
+		}
+
+		public void Print ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		public void ShowPageSetupDialog ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		public void ShowPrintDialog()
+		{
+			throw new NotImplementedException ();
+		}
+		
+		public void ShowPrintPreviewDialog()
+		{
+			throw new NotImplementedException ();
+		}
+		
+		public void ShowPropertiesDialog()
+		{
+			throw new NotImplementedException ();
+		}
+		
+		public void ShowSaveAsDialog()
+		{
+			throw new NotImplementedException ();
+		}
+
+		#endregion
+
+		#region Protected Overridden Methods
+
+		[MonoTODO ("Stub, not implemented")]
+		protected override void AttachInterfaces (object nativeActiveXObject)
+		{
+			base.AttachInterfaces (nativeActiveXObject);
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		protected override void CreateSink ()
+		{
+			base.CreateSink ();
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		protected override WebBrowserSiteBase CreateWebBrowserSiteBase ()
+		{
+			return base.CreateWebBrowserSiteBase ();
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		protected override void DetachInterfaces ()
+		{
+			base.DetachInterfaces ();
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		protected override void DetachSink ()
+		{
+			base.DetachSink ();
+		}
+
+		protected override void Dispose (bool disposing)
+		{
+			base.Dispose (disposing);
+		}
+
+		protected override void WndProc (ref Message m)
+		{
+			base.WndProc (ref m);
+		}
+
+		#endregion
+
+		#region OnXXX methods
+
+		protected virtual void OnCanGoBackChanged(EventArgs e)
+		{
+			if (CanGoBackChanged != null)
+				CanGoBackChanged (this, e);
+		}
+
+		protected virtual void OnCanGoForwardChanged(EventArgs e)
+		{			
+			if (CanGoForwardChanged != null)
+				CanGoForwardChanged (this, e);
+		}
+
+		protected virtual void OnDocumentCompleted(WebBrowserDocumentCompletedEventArgs e)
+		{
+			if (DocumentCompleted != null)
+				DocumentCompleted (this, e);
+		}
+
+		protected virtual void OnDocumentTitleChanged(EventArgs e)
+		{
+			if (DocumentTitleChanged != null)
+				DocumentTitleChanged (this, e);
+		}
+
+		protected virtual void OnEncryptionLevelChanged(EventArgs e)
+		{
+			if (EncryptionLevelChanged != null)
+				EncryptionLevelChanged (this, e);
+		}
+
+		protected virtual void OnFileDownload(EventArgs e)
+		{
+			if (FileDownload != null)
+				FileDownload (this, e);
+		}
+
+		protected virtual void OnNavigated(WebBrowserNavigatedEventArgs e)
+		{
+			if (Navigated != null)
+				Navigated (this, e);
+		}
+
+		protected virtual void OnNavigating(WebBrowserNavigatingEventArgs e)
+		{
+			if (Navigating != null)
+				Navigating (this, e);
+		}
+
+		protected virtual void OnNewWindow(CancelEventArgs e)
+		{
+			if (NewWindow != null)
+				NewWindow (this, e);
+		}
+
+		protected virtual void OnProgressChanged(WebBrowserProgressChangedEventArgs e)
+		{
+			if (ProgressChanged != null)
+				ProgressChanged (this, e);
+		}
+
+		protected virtual void OnStatusTextChanged(EventArgs e)
+		{
+			if (StatusTextChanged != null)
+				StatusTextChanged (this, e);
+		}
+
+		#endregion
+
+		#region Events	
+		[BrowsableAttribute(false)]
+		public event EventHandler CanGoBackChanged;
+
+		[BrowsableAttribute(false)]
+		public event EventHandler CanGoForwardChanged;
+
+		public event WebBrowserDocumentCompletedEventHandler DocumentCompleted;
+
+		[BrowsableAttribute(false)]
+		public event EventHandler DocumentTitleChanged;
+
+		[BrowsableAttribute(false)]
+		public event EventHandler EncryptionLevelChanged;
+
+		public event EventHandler FileDownload;
+
+		public event WebBrowserNavigatedEventHandler Navigated;
+
+		public event WebBrowserNavigatingEventHandler Navigating;
+
+		public event CancelEventHandler NewWindow;
+		
+		public event WebBrowserProgressChangedEventHandler ProgressChanged;
+
+		[BrowsableAttribute(false)]
+		public event EventHandler StatusTextChanged;
+
+#pragma warning disable 0067
+		[MonoTODO]
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		public new event EventHandler PaddingChanged;
+#pragma warning restore 0067
+
+		#endregion
+
+		#region Internal
+
+		internal override bool OnNewWindowInternal ()
+		{
+			CancelEventArgs c = new CancelEventArgs ();
+			OnNewWindow (c);
+			return c.Cancel;
+		}
+		
+		internal override void OnWebHostLoadStarted (object sender, Mono.WebBrowser.LoadStartedEventArgs e)
+		{
+			documentReady = false;
+			document = null;
+			readyState = WebBrowserReadyState.Loading;
+			WebBrowserNavigatingEventArgs n = new WebBrowserNavigatingEventArgs (new Uri (e.Uri), e.FrameName);
+			OnNavigating (n);
+		}
+
+		internal override void OnWebHostLoadCommited (object sender, Mono.WebBrowser.LoadCommitedEventArgs e)
+		{
+			readyState = WebBrowserReadyState.Loaded;
+			url = e.Uri;
+			SetScrollbars ();
+			WebBrowserNavigatedEventArgs n = new WebBrowserNavigatedEventArgs (new Uri (e.Uri));
+			OnNavigated (n);
+		}
+		internal override void OnWebHostProgressChanged (object sender, Mono.WebBrowser.ProgressChangedEventArgs e)
+		{
+			readyState = WebBrowserReadyState.Interactive;
+			WebBrowserProgressChangedEventArgs n = new WebBrowserProgressChangedEventArgs (e.Progress, e.MaxProgress);
+			OnProgressChanged (n);
+		}
+
+		internal override void OnWebHostLoadFinished (object sender, Mono.WebBrowser.LoadFinishedEventArgs e)
+		{
+			url = null;
+			documentReady = true;
+			readyState = WebBrowserReadyState.Complete;
+			if (isStreamSet) {
+				byte[] buffer = new byte [data.Length];
+				long len = data.Length;
+				int count = 0;
+				data.Position = 0;
+				do {
+					count = data.Read (buffer, (int) data.Position, (int) (len - data.Position));
+				} while (count > 0);
+				WebHost.Render (buffer);
+				data = null;
+				isStreamSet = false;
+			}
+			SetScrollbars ();
+			WebBrowserDocumentCompletedEventArgs n = new WebBrowserDocumentCompletedEventArgs (new Uri (e.Uri));
+			OnDocumentCompleted (n);
+		}
+		
+		internal override void OnWebHostSecurityChanged (object sender, Mono.WebBrowser.SecurityChangedEventArgs e)
+		{
+			switch (e.State) {
+				case Mono.WebBrowser.SecurityLevel.Insecure:
+					securityLevel = WebBrowserEncryptionLevel.Insecure;
+				break;
+				case Mono.WebBrowser.SecurityLevel.Mixed:
+					securityLevel = WebBrowserEncryptionLevel.Mixed;
+				break;
+				case Mono.WebBrowser.SecurityLevel.Secure:
+					securityLevel = WebBrowserEncryptionLevel.Bit56;
+				break;
+			}
+		}
+		
+		internal override void OnWebHostContextMenuShown (object sender, Mono.WebBrowser.ContextMenuEventArgs e) {
+			if (!isWebBrowserContextMenuEnabled)
+				return;
+					
+            ContextMenu menu = new ContextMenu();
+                        
+			MenuItem item = new MenuItem("Back", delegate { 
+				GoBack(); 
+			});
+			item.Enabled = this.CanGoBack;
+			menu.MenuItems.Add (item);
+			
+			item = new MenuItem("Forward", delegate { 
+				GoForward(); 
+			});
+			item.Enabled = this.CanGoForward;
+			menu.MenuItems.Add (item);
+			
+			item = new MenuItem("Refresh", delegate { 
+				Refresh (); 
+			});
+			menu.MenuItems.Add (item);
+            
+            menu.MenuItems.Add (new MenuItem ("-"));
+            
+            menu.Show(this, PointToClient(MousePosition));
+		}
+
+		internal override void OnWebHostStatusChanged (object sender, Mono.WebBrowser.StatusChangedEventArgs e) {
+			base.status = e.Message;
+			OnStatusTextChanged (null);
+		}
+		
+		#endregion
+
+
+		void SetScrollbars () {
+			//if (!scrollbarsEnabled)
+			//        WebHost.ExecuteScript ("document.body.style.overflow='hidden';");
+			//else
+			//        WebHost.ExecuteScript ("document.body.style.overflow='auto';");
+		}
+
+		[MonoTODO ("Stub, not implemented")]
+		[ComVisible (false)]
+		protected class WebBrowserSite : WebBrowserSiteBase
+		{
+			[MonoTODO ("Stub, not implemented")]
+			public WebBrowserSite (WebBrowser host)
+				: base ()
+			{
+			}
+		}
+	}
+
+	internal class WebBrowserUriTypeConverter : UriTypeConverter
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/WebBrowserBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/WebBrowserBase.cs
@@ -1,755 +1,755 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007, 2008 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-#undef debug
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using System.Windows.Forms;
-using System.Collections.Generic;
-using Mono.WebBrowser;
-
-namespace System.Windows.Forms
-{
-	[ClassInterface(ClassInterfaceType.AutoDispatch)]
-	[ComVisible(true)]
-	[DefaultProperty ("Name")]
-	[DefaultEvent ("Enter")]
-	[Designer("System.Windows.Forms.Design.AxDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-	public class WebBrowserBase : Control
-	{
-		internal bool documentReady;
-		private bool suppressDialogs;
-		internal bool SuppressDialogs {
-			get { return suppressDialogs; }
-			set { 
-				suppressDialogs = value;
-				webHost.Alert -= new Mono.WebBrowser.AlertEventHandler (OnWebHostAlert);
-				if (!suppressDialogs)
-					webHost.Alert += new Mono.WebBrowser.AlertEventHandler (OnWebHostAlert);				
-			}
-		}
-		
-		protected string status;
-
-		#region Public Properties
-
-		[Browsable (false)] 
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public Object ActiveXInstance {
-			get { throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry."); }
-		}
-
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public override bool AllowDrop {
-			get { return base.AllowDrop; }
-			set { base.AllowDrop = value; }
-		}
-
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public override Color BackColor {
-			get { return base.BackColor; }
-			set { base.BackColor = value; }
-		}
-
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public override Image BackgroundImage {
-			get { return base.BackgroundImage; }
-			set { base.BackgroundImage = value; }
-		}
-
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		public override ImageLayout BackgroundImageLayout {
-			get { return base.BackgroundImageLayout; }
-			set { base.BackgroundImageLayout = value; }
-		}
-
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public override Cursor Cursor {
-			get { return base.Cursor; }
-			set { throw new NotSupportedException (); }
-		}
-
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new bool Enabled {
-			get { return base.Enabled; }
-			set { throw new NotSupportedException (); }
-		}
-
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public override Font Font {
-			get { return base.Font; }
-			set { base.Font = value; }
-		}
-
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public override Color ForeColor {
-			get { return base.ForeColor; }
-			set { base.ForeColor = value; }
-		}
-
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new ImeMode ImeMode {
-			get { return base.ImeMode; }
-			set { base.ImeMode = value; }
-		}
-
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		[Localizable (false)]
-		public new virtual RightToLeft RightToLeft {
-			get { return base.RightToLeft; }
-			set { base.RightToLeft = value; }
-		}
-
-		public override ISite Site {
-			set { base.Site = value; }
-		}
-
-		[Bindable (false)]
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public override string Text {
-			get { return String.Empty; }
-			set { throw new NotSupportedException (); }
-		}
-
-		[Browsable (false)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new bool UseWaitCursor {
-			get { return base.UseWaitCursor; }
-			set { throw new NotSupportedException (); }
-		}
-
-		#endregion
-
-		#region Protected Properties
-
-		protected override Size DefaultSize {
-			get { return new Size (100, 100); }
-		}
-
-		#endregion
-
-		#region Public Methods
-
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new void DrawToBitmap (Bitmap bitmap, Rectangle targetBounds)
-		{
-			base.DrawToBitmap (bitmap, targetBounds);
-		}
-
-		public override bool  PreProcessMessage(ref Message msg)
-		{
- 			 return base.PreProcessMessage(ref msg);
-		}
-
-		#endregion
-
-		#region Protected Virtual Methods
-
-		protected virtual void AttachInterfaces (object nativeActiveXObject)
-		{
-			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
-		}
-
-		protected virtual void CreateSink ()
-		{
-			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
-		}
-
-		protected virtual WebBrowserSiteBase CreateWebBrowserSiteBase ()
-		{
-			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
-		}
-
-		protected virtual void DetachInterfaces ()
-		{
-			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
-		}
-
-		protected virtual void DetachSink ()
-		{
-			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
-		}
-
-		#endregion
-
-		#region Protected Overriden Methods
-
-		protected override void Dispose (bool disposing)
-		{
-			WebHost.Shutdown ();
-			base.Dispose (disposing);
-		}
-
-		protected override bool IsInputChar (char charCode)
-		{
-			return base.IsInputChar (charCode);
-		}
-
-		protected override void OnBackColorChanged (EventArgs e)
-		{
-			base.OnBackColorChanged (e);
-		}
-
-		protected override void OnFontChanged (EventArgs e)
-		{
-			base.OnFontChanged (e);
-		}
-
-		protected override void OnForeColorChanged (EventArgs e)
-		{
-			base.OnForeColorChanged (e);
-		}
-
-		protected override void OnGotFocus (EventArgs e)
-		{
-#if debug
-			Console.Error.WriteLine ("WebBrowserBase: OnGotFocus");
-#endif
-			base.OnGotFocus (e);
-//			WebHost.FocusIn (Mono.WebBrowser.FocusOption.FocusFirstElement);
-		}
-
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		protected override void OnHandleCreated (EventArgs e)
-		{
-			base.OnHandleCreated (e);
-		}
-
-		protected override void OnLostFocus (EventArgs e)
-		{
-#if debug
-			Console.Error.WriteLine ("WebBrowserBase: OnLostFocus");
-#endif
-			base.OnLostFocus (e);
-			WebHost.FocusOut ();
-		}
-
-		protected override void OnParentChanged (EventArgs e)
-		{
-			base.OnParentChanged (e);
-		}
-		
-		protected override void OnRightToLeftChanged (EventArgs e)
-		{
-			base.OnRightToLeftChanged (e);
-		}
-
-		protected override void OnVisibleChanged (EventArgs e)
-		{
-			base.OnVisibleChanged (e);
-			if (Visible && !Disposing && !IsDisposed && state == State.Loaded) {
-				state = State.Active;
-				webHost.Activate ();
-			} else if (!Visible && state == State.Active) {
-				state = State.Loaded;
-				webHost.Deactivate ();
-			}
-		}
-
-		protected override bool ProcessMnemonic (char charCode)
-		{
-			return base.ProcessMnemonic (charCode);
-		}
-
-		protected override void WndProc (ref Message m)
-		{
-			base.WndProc (ref m);
-		}
-		
-		#endregion
-
-		#region Internal Properties
-
-		enum State
-		{
-			Unloaded,
-			Loaded,
-			Active
-		}
-		private State state;
-
-		private Mono.WebBrowser.IWebBrowser webHost;
-		internal Mono.WebBrowser.IWebBrowser WebHost {
-			get { return webHost; }
-		}
-
-		internal override void SetBoundsCoreInternal (int x, int y, int width, int height, BoundsSpecified specified)
-		{
-			base.SetBoundsCoreInternal (x, y, width, height, specified);
-			this.webHost.Resize (width, height);
-		}
-
-		#endregion
-
-		#region Internal Methods
-
-		internal WebBrowserBase ()
-		{
-			webHost = Mono.WebBrowser.Manager.GetNewInstance ();
-			bool loaded = webHost.Load (this.Handle, this.Width, this.Height);
-			if (!loaded)
-				return;
-				
-			state = State.Loaded;
-
-			webHost.MouseClick += new Mono.WebBrowser.DOM.NodeEventHandler (OnWebHostMouseClick);
-			webHost.Focus += new EventHandler (OnWebHostFocus);
-			webHost.CreateNewWindow += new Mono.WebBrowser.CreateNewWindowEventHandler (OnWebHostCreateNewWindow);
-			webHost.LoadStarted += new LoadStartedEventHandler (OnWebHostLoadStarted);
-			webHost.LoadCommited += new LoadCommitedEventHandler (OnWebHostLoadCommited);
-			webHost.ProgressChanged += new Mono.WebBrowser.ProgressChangedEventHandler (OnWebHostProgressChanged);
-			webHost.LoadFinished += new LoadFinishedEventHandler (OnWebHostLoadFinished);
-			
-			if (!suppressDialogs)
-				webHost.Alert += new Mono.WebBrowser.AlertEventHandler (OnWebHostAlert);
-
-			webHost.StatusChanged += new StatusChangedEventHandler (OnWebHostStatusChanged);
-			
-			webHost.SecurityChanged += new SecurityChangedEventHandler (OnWebHostSecurityChanged);
-			webHost.ContextMenuShown += new ContextMenuEventHandler (OnWebHostContextMenuShown);
-		}
-
-		void OnWebHostAlert (object sender, Mono.WebBrowser.AlertEventArgs e)
-		{
-			switch (e.Type) {
-				case Mono.WebBrowser.DialogType.Alert:
-					MessageBox.Show (e.Text, e.Title);
-					break;
-				case Mono.WebBrowser.DialogType.AlertCheck:
-					WebBrowserDialogs.AlertCheck form1 = new WebBrowserDialogs.AlertCheck (e.Title, e.Text, e.CheckMessage, e.CheckState);
-					form1.Show ();
-					e.CheckState = form1.Checked;
-					e.BoolReturn = true;
-					break;
-				case Mono.WebBrowser.DialogType.Confirm:
-					DialogResult r1 = MessageBox.Show (e.Text, e.Title, MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
-					e.BoolReturn = (r1 == DialogResult.OK);
-					break;
-				case Mono.WebBrowser.DialogType.ConfirmCheck:
-					WebBrowserDialogs.ConfirmCheck form2 = new WebBrowserDialogs.ConfirmCheck (e.Title, e.Text, e.CheckMessage, e.CheckState);
-					DialogResult r2 = form2.Show ();
-					e.CheckState = form2.Checked;
-					e.BoolReturn = (r2 == DialogResult.OK);
-					break;
-				case Mono.WebBrowser.DialogType.ConfirmEx:
-					MessageBox.Show (e.Text, e.Title);
-					break;
-				case Mono.WebBrowser.DialogType.Prompt:
-					WebBrowserDialogs.Prompt form4 = new WebBrowserDialogs.Prompt (e.Title, e.Text, e.Text2);
-					DialogResult r4 = form4.Show ();
-					e.StringReturn = form4.Text;
-					e.BoolReturn = (r4 == DialogResult.OK);
-					break;
-				case Mono.WebBrowser.DialogType.PromptPassword:
-					MessageBox.Show (e.Text, e.Title);
-					break;
-				case Mono.WebBrowser.DialogType.PromptUsernamePassword:
-					MessageBox.Show (e.Text, e.Title);
-					break;
-				case Mono.WebBrowser.DialogType.Select:
-					MessageBox.Show (e.Text, e.Title);
-					break;
-			}
-			
-		}
-
-		#region Events raised by the embedded web browser
-
-		bool OnWebHostCreateNewWindow (object sender, Mono.WebBrowser.CreateNewWindowEventArgs e)
-		{
-			return OnNewWindowInternal ();
-		}
-
-		internal override void OnResizeInternal (EventArgs e)
-		{
-			base.OnResizeInternal (e);
-
-			if (state == State.Active)
-				this.webHost.Resize (this.Width, this.Height);
-		}
-
-		private void OnWebHostMouseClick (object sender, EventArgs e)
-		{
-			//MessageBox.Show ("clicked");
-		}
-
-		/// <summary>
-		/// Event raised from the embedded webbrowser control, saying that it has received focus
-		/// (via a mouse click, for instance).
-		/// </summary>
-		/// <param name="sender"></param>
-		/// <param name="e"></param>
-		private void OnWebHostFocus (object sender, EventArgs e)
-		{
-#if debug
-			Console.Error.WriteLine ("WebBrowserBase: OnWebHostFocus");
-#endif
-			this.Focus ();
-		}
-		
-		#endregion
-
-		internal virtual bool OnNewWindowInternal ()
-		{
-			return false;
-		}
-
-		internal virtual void OnWebHostLoadStarted (object sender, LoadStartedEventArgs e)
-		{
-		}
-
-		internal virtual void OnWebHostLoadCommited (object sender, LoadCommitedEventArgs e)
-		{
-		}
-		internal virtual void OnWebHostProgressChanged (object sender, Mono.WebBrowser.ProgressChangedEventArgs e)
-		{
-		}
-		internal virtual void OnWebHostLoadFinished (object sender, LoadFinishedEventArgs e)
-		{
-		}
-		
-		internal virtual void OnWebHostSecurityChanged (object sender, SecurityChangedEventArgs e)
-		{
-		}
-		
-		internal virtual void OnWebHostContextMenuShown (object sender, ContextMenuEventArgs e) {
-		}
-
-		internal virtual void OnWebHostStatusChanged (object sender, StatusChangedEventArgs e) {
-		}
-
-		#endregion
-
-		#region Events
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler BackColorChanged {
-			add { throw new NotSupportedException ("Invalid event handler for BackColorChanged"); }
-			remove { }
-		}
-
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler BackgroundImageChanged {
-			add { throw new NotSupportedException ("Invalid event handler for BackgroundImageChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler BackgroundImageLayoutChanged {
-			add { throw new NotSupportedException ("Invalid event handler for BackgroundImageLayoutChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler BindingContextChanged {
-			add { throw new NotSupportedException ("Invalid event handler for BindingContextChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event UICuesEventHandler ChangeUICues {
-			add { throw new NotSupportedException ("Invalid event handler for ChangeUICues"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler Click {
-			add { throw new NotSupportedException ("Invalid event handler for Click"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler CursorChanged {
-			add { throw new NotSupportedException ("Invalid event handler for CursorChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler DoubleClick {
-			add { throw new NotSupportedException ("Invalid event handler for DoubleClick"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event DragEventHandler DragDrop {
-			add { throw new NotSupportedException ("Invalid event handler for DragDrop"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event DragEventHandler DragEnter {
-			add { throw new NotSupportedException ("Invalid event handler for DragEnter"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler DragLeave {
-			add { throw new NotSupportedException ("Invalid event handler for DragLeave"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event DragEventHandler DragOver {
-			add { throw new NotSupportedException ("Invalid event handler for DragOver"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler EnabledChanged {
-			add { throw new NotSupportedException ("Invalid event handler for EnabledChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler Enter {
-			add { throw new NotSupportedException ("Invalid event handler for Enter"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler FontChanged {
-			add { throw new NotSupportedException ("Invalid event handler for FontChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler ForeColorChanged {
-			add { throw new NotSupportedException ("Invalid event handler for ForeColorChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event GiveFeedbackEventHandler GiveFeedback {
-			add { throw new NotSupportedException ("Invalid event handler for GiveFeedback"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event HelpEventHandler HelpRequested {
-			add { throw new NotSupportedException ("Invalid event handler for HelpRequested"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler ImeModeChanged {
-			add { throw new NotSupportedException ("Invalid event handler for ImeModeChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event KeyEventHandler KeyDown {
-			add { throw new NotSupportedException ("Invalid event handler for KeyDown"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event KeyPressEventHandler KeyPress {
-			add { throw new NotSupportedException ("Invalid event handler for KeyPress"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event KeyEventHandler KeyUp {
-			add { throw new NotSupportedException ("Invalid event handler for KeyUp"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event LayoutEventHandler Layout {
-			add { throw new NotSupportedException ("Invalid event handler for Layout"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler Leave {
-			add { throw new NotSupportedException ("Invalid event handler for Leave"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler MouseCaptureChanged {
-			add { throw new NotSupportedException ("Invalid event handler for MouseCaptureChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event MouseEventHandler MouseClick {
-			add { throw new NotSupportedException ("Invalid event handler for MouseClick"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event MouseEventHandler MouseDoubleClick {
-			add { throw new NotSupportedException ("Invalid event handler for MouseDoubleClick"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event MouseEventHandler MouseDown {
-			add { throw new NotSupportedException ("Invalid event handler for MouseDown"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler MouseEnter {
-			add { throw new NotSupportedException ("Invalid event handler for MouseEnter"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler MouseHover {
-			add { throw new NotSupportedException ("Invalid event handler for MouseHover"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler MouseLeave {
-			add { throw new NotSupportedException ("Invalid event handler for MouseLeave"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event MouseEventHandler MouseMove {
-			add { throw new NotSupportedException ("Invalid event handler for MouseMove"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event MouseEventHandler MouseUp {
-			add { throw new NotSupportedException ("Invalid event handler for MouseUp"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event MouseEventHandler MouseWheel {
-			add { throw new NotSupportedException ("Invalid event handler for MouseWheel"); }
-			remove { }
-		}
-		
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event PaintEventHandler Paint {
-			add { throw new NotSupportedException ("Invalid event handler for Paint"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event QueryAccessibilityHelpEventHandler QueryAccessibilityHelp {
-			add { throw new NotSupportedException ("Invalid event handler for QueryAccessibilityHelp"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event QueryContinueDragEventHandler QueryContinueDrag {
-			add { throw new NotSupportedException ("Invalid event handler for QueryContinueDrag"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler RightToLeftChanged {
-			add { throw new NotSupportedException ("Invalid event handler for RightToLeftChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler StyleChanged {
-			add { throw new NotSupportedException ("Invalid event handler for StyleChanged"); }
-			remove { }
-		}
-		
-		[Browsable (false)]
-		[EditorBrowsable (EditorBrowsableState.Never)]
-		public new event EventHandler TextChanged {
-			add { throw new NotSupportedException ("Invalid event handler for TextChanged"); }
-			remove { }
-		}
-
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007, 2008 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+#undef debug
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using System.Windows.Forms;
+using System.Collections.Generic;
+using Mono.WebBrowser;
+
+namespace System.Windows.Forms
+{
+	[ClassInterface(ClassInterfaceType.AutoDispatch)]
+	[ComVisible(true)]
+	[DefaultProperty ("Name")]
+	[DefaultEvent ("Enter")]
+	[Designer("System.Windows.Forms.Design.AxDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+	public class WebBrowserBase : Control
+	{
+		internal bool documentReady;
+		private bool suppressDialogs;
+		internal bool SuppressDialogs {
+			get { return suppressDialogs; }
+			set { 
+				suppressDialogs = value;
+				webHost.Alert -= new Mono.WebBrowser.AlertEventHandler (OnWebHostAlert);
+				if (!suppressDialogs)
+					webHost.Alert += new Mono.WebBrowser.AlertEventHandler (OnWebHostAlert);				
+			}
+		}
+		
+		protected string status;
+
+		#region Public Properties
+
+		[Browsable (false)] 
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		public Object ActiveXInstance {
+			get { throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry."); }
+		}
+
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public override bool AllowDrop {
+			get { return base.AllowDrop; }
+			set { base.AllowDrop = value; }
+		}
+
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		public override Color BackColor {
+			get { return base.BackColor; }
+			set { base.BackColor = value; }
+		}
+
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		public override Image BackgroundImage {
+			get { return base.BackgroundImage; }
+			set { base.BackgroundImage = value; }
+		}
+
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		public override ImageLayout BackgroundImageLayout {
+			get { return base.BackgroundImageLayout; }
+			set { base.BackgroundImageLayout = value; }
+		}
+
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public override Cursor Cursor {
+			get { return base.Cursor; }
+			set { throw new NotSupportedException (); }
+		}
+
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new bool Enabled {
+			get { return base.Enabled; }
+			set { throw new NotSupportedException (); }
+		}
+
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public override Font Font {
+			get { return base.Font; }
+			set { base.Font = value; }
+		}
+
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public override Color ForeColor {
+			get { return base.ForeColor; }
+			set { base.ForeColor = value; }
+		}
+
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new ImeMode ImeMode {
+			get { return base.ImeMode; }
+			set { base.ImeMode = value; }
+		}
+
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		[Localizable (false)]
+		public new virtual RightToLeft RightToLeft {
+			get { return base.RightToLeft; }
+			set { base.RightToLeft = value; }
+		}
+
+		public override ISite Site {
+			set { base.Site = value; }
+		}
+
+		[Bindable (false)]
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public override string Text {
+			get { return String.Empty; }
+			set { throw new NotSupportedException (); }
+		}
+
+		[Browsable (false)]
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new bool UseWaitCursor {
+			get { return base.UseWaitCursor; }
+			set { throw new NotSupportedException (); }
+		}
+
+		#endregion
+
+		#region Protected Properties
+
+		protected override Size DefaultSize {
+			get { return new Size (100, 100); }
+		}
+
+		#endregion
+
+		#region Public Methods
+
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new void DrawToBitmap (Bitmap bitmap, Rectangle targetBounds)
+		{
+			base.DrawToBitmap (bitmap, targetBounds);
+		}
+
+		public override bool  PreProcessMessage(ref Message msg)
+		{
+ 			 return base.PreProcessMessage(ref msg);
+		}
+
+		#endregion
+
+		#region Protected Virtual Methods
+
+		protected virtual void AttachInterfaces (object nativeActiveXObject)
+		{
+			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
+		}
+
+		protected virtual void CreateSink ()
+		{
+			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
+		}
+
+		protected virtual WebBrowserSiteBase CreateWebBrowserSiteBase ()
+		{
+			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
+		}
+
+		protected virtual void DetachInterfaces ()
+		{
+			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
+		}
+
+		protected virtual void DetachSink ()
+		{
+			throw new NotSupportedException ("Retrieving a reference to an activex interface is not supported. Sorry.");
+		}
+
+		#endregion
+
+		#region Protected Overriden Methods
+
+		protected override void Dispose (bool disposing)
+		{
+			WebHost.Shutdown ();
+			base.Dispose (disposing);
+		}
+
+		protected override bool IsInputChar (char charCode)
+		{
+			return base.IsInputChar (charCode);
+		}
+
+		protected override void OnBackColorChanged (EventArgs e)
+		{
+			base.OnBackColorChanged (e);
+		}
+
+		protected override void OnFontChanged (EventArgs e)
+		{
+			base.OnFontChanged (e);
+		}
+
+		protected override void OnForeColorChanged (EventArgs e)
+		{
+			base.OnForeColorChanged (e);
+		}
+
+		protected override void OnGotFocus (EventArgs e)
+		{
+#if debug
+			Console.Error.WriteLine ("WebBrowserBase: OnGotFocus");
+#endif
+			base.OnGotFocus (e);
+//			WebHost.FocusIn (Mono.WebBrowser.FocusOption.FocusFirstElement);
+		}
+
+		[EditorBrowsable (EditorBrowsableState.Advanced)]
+		protected override void OnHandleCreated (EventArgs e)
+		{
+			base.OnHandleCreated (e);
+		}
+
+		protected override void OnLostFocus (EventArgs e)
+		{
+#if debug
+			Console.Error.WriteLine ("WebBrowserBase: OnLostFocus");
+#endif
+			base.OnLostFocus (e);
+			WebHost.FocusOut ();
+		}
+
+		protected override void OnParentChanged (EventArgs e)
+		{
+			base.OnParentChanged (e);
+		}
+		
+		protected override void OnRightToLeftChanged (EventArgs e)
+		{
+			base.OnRightToLeftChanged (e);
+		}
+
+		protected override void OnVisibleChanged (EventArgs e)
+		{
+			base.OnVisibleChanged (e);
+			if (Visible && !Disposing && !IsDisposed && state == State.Loaded) {
+				state = State.Active;
+				webHost.Activate ();
+			} else if (!Visible && state == State.Active) {
+				state = State.Loaded;
+				webHost.Deactivate ();
+			}
+		}
+
+		protected override bool ProcessMnemonic (char charCode)
+		{
+			return base.ProcessMnemonic (charCode);
+		}
+
+		protected override void WndProc (ref Message m)
+		{
+			base.WndProc (ref m);
+		}
+		
+		#endregion
+
+		#region Internal Properties
+
+		enum State
+		{
+			Unloaded,
+			Loaded,
+			Active
+		}
+		private State state;
+
+		private Mono.WebBrowser.IWebBrowser webHost;
+		internal Mono.WebBrowser.IWebBrowser WebHost {
+			get { return webHost; }
+		}
+
+		internal override void SetBoundsCoreInternal (int x, int y, int width, int height, BoundsSpecified specified)
+		{
+			base.SetBoundsCoreInternal (x, y, width, height, specified);
+			this.webHost.Resize (width, height);
+		}
+
+		#endregion
+
+		#region Internal Methods
+
+		internal WebBrowserBase ()
+		{
+			webHost = Mono.WebBrowser.Manager.GetNewInstance ();
+			bool loaded = webHost.Load (this.Handle, this.Width, this.Height);
+			if (!loaded)
+				return;
+				
+			state = State.Loaded;
+
+			webHost.MouseClick += new Mono.WebBrowser.DOM.NodeEventHandler (OnWebHostMouseClick);
+			webHost.Focus += new EventHandler (OnWebHostFocus);
+			webHost.CreateNewWindow += new Mono.WebBrowser.CreateNewWindowEventHandler (OnWebHostCreateNewWindow);
+			webHost.LoadStarted += new LoadStartedEventHandler (OnWebHostLoadStarted);
+			webHost.LoadCommited += new LoadCommitedEventHandler (OnWebHostLoadCommited);
+			webHost.ProgressChanged += new Mono.WebBrowser.ProgressChangedEventHandler (OnWebHostProgressChanged);
+			webHost.LoadFinished += new LoadFinishedEventHandler (OnWebHostLoadFinished);
+			
+			if (!suppressDialogs)
+				webHost.Alert += new Mono.WebBrowser.AlertEventHandler (OnWebHostAlert);
+
+			webHost.StatusChanged += new StatusChangedEventHandler (OnWebHostStatusChanged);
+			
+			webHost.SecurityChanged += new SecurityChangedEventHandler (OnWebHostSecurityChanged);
+			webHost.ContextMenuShown += new ContextMenuEventHandler (OnWebHostContextMenuShown);
+		}
+
+		void OnWebHostAlert (object sender, Mono.WebBrowser.AlertEventArgs e)
+		{
+			switch (e.Type) {
+				case Mono.WebBrowser.DialogType.Alert:
+					MessageBox.Show (e.Text, e.Title);
+					break;
+				case Mono.WebBrowser.DialogType.AlertCheck:
+					WebBrowserDialogs.AlertCheck form1 = new WebBrowserDialogs.AlertCheck (e.Title, e.Text, e.CheckMessage, e.CheckState);
+					form1.Show ();
+					e.CheckState = form1.Checked;
+					e.BoolReturn = true;
+					break;
+				case Mono.WebBrowser.DialogType.Confirm:
+					DialogResult r1 = MessageBox.Show (e.Text, e.Title, MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
+					e.BoolReturn = (r1 == DialogResult.OK);
+					break;
+				case Mono.WebBrowser.DialogType.ConfirmCheck:
+					WebBrowserDialogs.ConfirmCheck form2 = new WebBrowserDialogs.ConfirmCheck (e.Title, e.Text, e.CheckMessage, e.CheckState);
+					DialogResult r2 = form2.Show ();
+					e.CheckState = form2.Checked;
+					e.BoolReturn = (r2 == DialogResult.OK);
+					break;
+				case Mono.WebBrowser.DialogType.ConfirmEx:
+					MessageBox.Show (e.Text, e.Title);
+					break;
+				case Mono.WebBrowser.DialogType.Prompt:
+					WebBrowserDialogs.Prompt form4 = new WebBrowserDialogs.Prompt (e.Title, e.Text, e.Text2);
+					DialogResult r4 = form4.Show ();
+					e.StringReturn = form4.Text;
+					e.BoolReturn = (r4 == DialogResult.OK);
+					break;
+				case Mono.WebBrowser.DialogType.PromptPassword:
+					MessageBox.Show (e.Text, e.Title);
+					break;
+				case Mono.WebBrowser.DialogType.PromptUsernamePassword:
+					MessageBox.Show (e.Text, e.Title);
+					break;
+				case Mono.WebBrowser.DialogType.Select:
+					MessageBox.Show (e.Text, e.Title);
+					break;
+			}
+			
+		}
+
+		#region Events raised by the embedded web browser
+
+		bool OnWebHostCreateNewWindow (object sender, Mono.WebBrowser.CreateNewWindowEventArgs e)
+		{
+			return OnNewWindowInternal ();
+		}
+
+		internal override void OnResizeInternal (EventArgs e)
+		{
+			base.OnResizeInternal (e);
+
+			if (state == State.Active)
+				this.webHost.Resize (this.Width, this.Height);
+		}
+
+		private void OnWebHostMouseClick (object sender, EventArgs e)
+		{
+			//MessageBox.Show ("clicked");
+		}
+
+		/// <summary>
+		/// Event raised from the embedded webbrowser control, saying that it has received focus
+		/// (via a mouse click, for instance).
+		/// </summary>
+		/// <param name="sender"></param>
+		/// <param name="e"></param>
+		private void OnWebHostFocus (object sender, EventArgs e)
+		{
+#if debug
+			Console.Error.WriteLine ("WebBrowserBase: OnWebHostFocus");
+#endif
+			this.Focus ();
+		}
+		
+		#endregion
+
+		internal virtual bool OnNewWindowInternal ()
+		{
+			return false;
+		}
+
+		internal virtual void OnWebHostLoadStarted (object sender, LoadStartedEventArgs e)
+		{
+		}
+
+		internal virtual void OnWebHostLoadCommited (object sender, LoadCommitedEventArgs e)
+		{
+		}
+		internal virtual void OnWebHostProgressChanged (object sender, Mono.WebBrowser.ProgressChangedEventArgs e)
+		{
+		}
+		internal virtual void OnWebHostLoadFinished (object sender, LoadFinishedEventArgs e)
+		{
+		}
+		
+		internal virtual void OnWebHostSecurityChanged (object sender, SecurityChangedEventArgs e)
+		{
+		}
+		
+		internal virtual void OnWebHostContextMenuShown (object sender, ContextMenuEventArgs e) {
+		}
+
+		internal virtual void OnWebHostStatusChanged (object sender, StatusChangedEventArgs e) {
+		}
+
+		#endregion
+
+		#region Events
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler BackColorChanged {
+			add { throw new NotSupportedException ("Invalid event handler for BackColorChanged"); }
+			remove { }
+		}
+
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler BackgroundImageChanged {
+			add { throw new NotSupportedException ("Invalid event handler for BackgroundImageChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler BackgroundImageLayoutChanged {
+			add { throw new NotSupportedException ("Invalid event handler for BackgroundImageLayoutChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler BindingContextChanged {
+			add { throw new NotSupportedException ("Invalid event handler for BindingContextChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event UICuesEventHandler ChangeUICues {
+			add { throw new NotSupportedException ("Invalid event handler for ChangeUICues"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler Click {
+			add { throw new NotSupportedException ("Invalid event handler for Click"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler CursorChanged {
+			add { throw new NotSupportedException ("Invalid event handler for CursorChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler DoubleClick {
+			add { throw new NotSupportedException ("Invalid event handler for DoubleClick"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event DragEventHandler DragDrop {
+			add { throw new NotSupportedException ("Invalid event handler for DragDrop"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event DragEventHandler DragEnter {
+			add { throw new NotSupportedException ("Invalid event handler for DragEnter"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler DragLeave {
+			add { throw new NotSupportedException ("Invalid event handler for DragLeave"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event DragEventHandler DragOver {
+			add { throw new NotSupportedException ("Invalid event handler for DragOver"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler EnabledChanged {
+			add { throw new NotSupportedException ("Invalid event handler for EnabledChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler Enter {
+			add { throw new NotSupportedException ("Invalid event handler for Enter"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler FontChanged {
+			add { throw new NotSupportedException ("Invalid event handler for FontChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler ForeColorChanged {
+			add { throw new NotSupportedException ("Invalid event handler for ForeColorChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event GiveFeedbackEventHandler GiveFeedback {
+			add { throw new NotSupportedException ("Invalid event handler for GiveFeedback"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event HelpEventHandler HelpRequested {
+			add { throw new NotSupportedException ("Invalid event handler for HelpRequested"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler ImeModeChanged {
+			add { throw new NotSupportedException ("Invalid event handler for ImeModeChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event KeyEventHandler KeyDown {
+			add { throw new NotSupportedException ("Invalid event handler for KeyDown"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event KeyPressEventHandler KeyPress {
+			add { throw new NotSupportedException ("Invalid event handler for KeyPress"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event KeyEventHandler KeyUp {
+			add { throw new NotSupportedException ("Invalid event handler for KeyUp"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event LayoutEventHandler Layout {
+			add { throw new NotSupportedException ("Invalid event handler for Layout"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler Leave {
+			add { throw new NotSupportedException ("Invalid event handler for Leave"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler MouseCaptureChanged {
+			add { throw new NotSupportedException ("Invalid event handler for MouseCaptureChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event MouseEventHandler MouseClick {
+			add { throw new NotSupportedException ("Invalid event handler for MouseClick"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event MouseEventHandler MouseDoubleClick {
+			add { throw new NotSupportedException ("Invalid event handler for MouseDoubleClick"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event MouseEventHandler MouseDown {
+			add { throw new NotSupportedException ("Invalid event handler for MouseDown"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler MouseEnter {
+			add { throw new NotSupportedException ("Invalid event handler for MouseEnter"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler MouseHover {
+			add { throw new NotSupportedException ("Invalid event handler for MouseHover"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler MouseLeave {
+			add { throw new NotSupportedException ("Invalid event handler for MouseLeave"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event MouseEventHandler MouseMove {
+			add { throw new NotSupportedException ("Invalid event handler for MouseMove"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event MouseEventHandler MouseUp {
+			add { throw new NotSupportedException ("Invalid event handler for MouseUp"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event MouseEventHandler MouseWheel {
+			add { throw new NotSupportedException ("Invalid event handler for MouseWheel"); }
+			remove { }
+		}
+		
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event PaintEventHandler Paint {
+			add { throw new NotSupportedException ("Invalid event handler for Paint"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event QueryAccessibilityHelpEventHandler QueryAccessibilityHelp {
+			add { throw new NotSupportedException ("Invalid event handler for QueryAccessibilityHelp"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event QueryContinueDragEventHandler QueryContinueDrag {
+			add { throw new NotSupportedException ("Invalid event handler for QueryContinueDrag"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler RightToLeftChanged {
+			add { throw new NotSupportedException ("Invalid event handler for RightToLeftChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler StyleChanged {
+			add { throw new NotSupportedException ("Invalid event handler for StyleChanged"); }
+			remove { }
+		}
+		
+		[Browsable (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		public new event EventHandler TextChanged {
+			add { throw new NotSupportedException ("Invalid event handler for TextChanged"); }
+			remove { }
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/WebBrowserSiteBase.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/WebBrowserSiteBase.cs
@@ -1,53 +1,53 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Andreia Gaita	<avidigal@novell.com>
-
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using System.Windows.Forms;
-
-namespace System.Windows.Forms
-{
-	[MonoTODO ("Needs Implementation")]
-    [ComVisible(true)]
-	public class WebBrowserSiteBase : IDisposable
-	{
-		internal WebBrowserSiteBase ()
-		{
-		}
-		
-		#region Methods
-		public void Dispose ()
-		{
-		}
-
-		protected virtual void Dispose (bool disposing)
-		{
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Andreia Gaita	<avidigal@novell.com>
+
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using System.Windows.Forms;
+
+namespace System.Windows.Forms
+{
+	[MonoTODO ("Needs Implementation")]
+    [ComVisible(true)]
+	public class WebBrowserSiteBase : IDisposable
+	{
+		internal WebBrowserSiteBase ()
+		{
+		}
+		
+		#region Methods
+		public void Dispose ()
+		{
+		}
+
+		protected virtual void Dispose (bool disposing)
+		{
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/System.Windows.Forms/WindowsFormsSynchronizationContext.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/System.Windows.Forms/WindowsFormsSynchronizationContext.cs
@@ -1,89 +1,89 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-
-using System;
-using System.Threading;
-using System.ComponentModel;
-
-
-// Some implementation details:
-// http://msdn.microsoft.com/msdnmag/issues/06/06/NETMatters/default.aspx
-namespace System.Windows.Forms
-{
-	public sealed class WindowsFormsSynchronizationContext : SynchronizationContext, IDisposable
-	{
-		private static bool auto_installed;
-		private static Control invoke_control;
-		private static SynchronizationContext previous_context;
-		
-		#region Public Constructor
-		public WindowsFormsSynchronizationContext ()
-		{
-		}
-		
-		static WindowsFormsSynchronizationContext ()
-		{
-			invoke_control = new Control ();
-			invoke_control.CreateControl ();
-			auto_installed = true;
-			previous_context = SynchronizationContext.Current;
-		}
-		#endregion
-
-		#region Public Properties
-		[EditorBrowsable (EditorBrowsableState.Advanced)]
-		public static bool AutoInstall {
-			get { return auto_installed; }
-			set { auto_installed = value; }
-		}
-		#endregion
-
-		#region Public Methods
-		public override SynchronizationContext CreateCopy ()
-		{
-			return base.CreateCopy ();
-		}
-		
-		public void Dispose ()
-		{
-		}
-
-		public override void Post (SendOrPostCallback d, object state)
-		{
-			invoke_control.BeginInvoke (d, new object[] { state });
-		}
-
-		public override void Send (SendOrPostCallback d, object state)
-		{
-			invoke_control.Invoke (d, new object[] { state });
-		}
-		
-		public static void Uninstall ()
-		{
-			if (previous_context == null)
-				previous_context = new SynchronizationContext ();
-				
-			SynchronizationContext.SetSynchronizationContext (previous_context);
-		}
-		#endregion
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+using System;
+using System.Threading;
+using System.ComponentModel;
+
+
+// Some implementation details:
+// http://msdn.microsoft.com/msdnmag/issues/06/06/NETMatters/default.aspx
+namespace System.Windows.Forms
+{
+	public sealed class WindowsFormsSynchronizationContext : SynchronizationContext, IDisposable
+	{
+		private static bool auto_installed;
+		private static Control invoke_control;
+		private static SynchronizationContext previous_context;
+		
+		#region Public Constructor
+		public WindowsFormsSynchronizationContext ()
+		{
+		}
+		
+		static WindowsFormsSynchronizationContext ()
+		{
+			invoke_control = new Control ();
+			invoke_control.CreateControl ();
+			auto_installed = true;
+			previous_context = SynchronizationContext.Current;
+		}
+		#endregion
+
+		#region Public Properties
+		[EditorBrowsable (EditorBrowsableState.Advanced)]
+		public static bool AutoInstall {
+			get { return auto_installed; }
+			set { auto_installed = value; }
+		}
+		#endregion
+
+		#region Public Methods
+		public override SynchronizationContext CreateCopy ()
+		{
+			return base.CreateCopy ();
+		}
+		
+		public void Dispose ()
+		{
+		}
+
+		public override void Post (SendOrPostCallback d, object state)
+		{
+			invoke_control.BeginInvoke (d, new object[] { state });
+		}
+
+		public override void Send (SendOrPostCallback d, object state)
+		{
+			invoke_control.Invoke (d, new object[] { state });
+		}
+		
+		public static void Uninstall ()
+		{
+			if (previous_context == null)
+				previous_context = new SynchronizationContext ();
+				
+			SynchronizationContext.SetSynchronizationContext (previous_context);
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ButtonBaseTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ButtonBaseTest.cs
@@ -1,62 +1,62 @@
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//      Jonathan Pobst  <monkey@jpobst.com>
-//
-
-using System;
-using System.Windows.Forms;
-using System.Drawing;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ButtonBaseTest : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			MockButton b = new MockButton ();
-			
-			Assert.AreEqual (SystemColors.Control, b.BackColor, "A4");
-			Assert.AreEqual (FlatStyle.Standard, b.FlatStyle, "A6");
-			Assert.IsNull (b.Image, "A7");
-			Assert.AreEqual (ContentAlignment.MiddleCenter, b.ImageAlign, "A8");
-			Assert.AreEqual (-1, b.ImageIndex, "A9");
-			Assert.IsNull (b.ImageList, "A11");
-			Assert.AreEqual (ImeMode.Disable, b.ImeMode, "A12");
-			Assert.AreEqual (string.Empty, b.Text, "A13");
-			Assert.AreEqual (ContentAlignment.MiddleCenter, b.TextAlign, "A14");
-
-			Assert.IsFalse (b.AutoEllipsis, "A1");
-			Assert.IsFalse (b.AutoSize, "A2");
-			Assert.AreEqual (string.Empty, b.ImageKey, "A10");
-			Assert.AreEqual (TextImageRelation.Overlay, b.TextImageRelation, "A15");
-			Assert.IsTrue (b.UseCompatibleTextRendering, "A16");
-			Assert.IsTrue (b.UseMnemonic, "A17");
-			Assert.IsTrue (b.UseVisualStyleBackColor, "A18");
-			Assert.AreEqual (AccessibleStates.None, b.AccessibilityObject.State, "A19");
-		}
-
-		[Test]
-		public void IsDefault ()
-		{
-			MockButton b = new MockButton ();
-			Assert.IsFalse (b.IsDefault, "#1");
-			b.IsDefault = true;
-			Assert.IsTrue (b.IsDefault, "#2");
-			b.IsDefault = false;
-			Assert.IsFalse (b.IsDefault, "#3");
-		}
-		
-		private class MockButton : ButtonBase
-		{
-			public new bool IsDefault {
-				get { return base.IsDefault; }
-				set { base.IsDefault = value; }
-			}
-		}
-	}
-}
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//      Jonathan Pobst  <monkey@jpobst.com>
+//
+
+using System;
+using System.Windows.Forms;
+using System.Drawing;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ButtonBaseTest : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			MockButton b = new MockButton ();
+			
+			Assert.AreEqual (SystemColors.Control, b.BackColor, "A4");
+			Assert.AreEqual (FlatStyle.Standard, b.FlatStyle, "A6");
+			Assert.IsNull (b.Image, "A7");
+			Assert.AreEqual (ContentAlignment.MiddleCenter, b.ImageAlign, "A8");
+			Assert.AreEqual (-1, b.ImageIndex, "A9");
+			Assert.IsNull (b.ImageList, "A11");
+			Assert.AreEqual (ImeMode.Disable, b.ImeMode, "A12");
+			Assert.AreEqual (string.Empty, b.Text, "A13");
+			Assert.AreEqual (ContentAlignment.MiddleCenter, b.TextAlign, "A14");
+
+			Assert.IsFalse (b.AutoEllipsis, "A1");
+			Assert.IsFalse (b.AutoSize, "A2");
+			Assert.AreEqual (string.Empty, b.ImageKey, "A10");
+			Assert.AreEqual (TextImageRelation.Overlay, b.TextImageRelation, "A15");
+			Assert.IsTrue (b.UseCompatibleTextRendering, "A16");
+			Assert.IsTrue (b.UseMnemonic, "A17");
+			Assert.IsTrue (b.UseVisualStyleBackColor, "A18");
+			Assert.AreEqual (AccessibleStates.None, b.AccessibilityObject.State, "A19");
+		}
+
+		[Test]
+		public void IsDefault ()
+		{
+			MockButton b = new MockButton ();
+			Assert.IsFalse (b.IsDefault, "#1");
+			b.IsDefault = true;
+			Assert.IsTrue (b.IsDefault, "#2");
+			b.IsDefault = false;
+			Assert.IsFalse (b.IsDefault, "#3");
+		}
+		
+		private class MockButton : ButtonBase
+		{
+			public new bool IsDefault {
+				get { return base.IsDefault; }
+				set { base.IsDefault = value; }
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/DataObjectTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/DataObjectTest.cs
@@ -1,172 +1,172 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-
-
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-using System.ComponentModel;
-using System.Collections.Specialized;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class DataObjectTest : TestHelper
-	{
-		[Test]
-		public void TestConvertible ()
-		{
-			DataObject o = new DataObject ();
-			o.SetData (DataFormats.Text, false, "abc");
-
-			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (), "#01");
-			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (true), "#02");
-			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (false), "#03");
-
-			o = new DataObject ();
-			o.SetData (DataFormats.Text, true, "abc");
-
-			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#B1");
-			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#B2");
-			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (false), "#B3");
-
-
-			o = new DataObject ();
-			o.SetData (DataFormats.UnicodeText, true, "abc");
-
-			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C1");
-			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C2");
-			Assert.AreEqual (new string [] { DataFormats.UnicodeText }, o.GetFormats (false), "#C3");
-
-			o = new DataObject ();
-			o.SetData (DataFormats.UnicodeText, false, "abc");
-
-			Assert.AreEqual (new string [] { DataFormats.UnicodeText }, o.GetFormats (), "#D1");
-			Assert.AreEqual (new string [] { DataFormats.UnicodeText}, o.GetFormats (), "#D2");
-			Assert.AreEqual (new string [] { DataFormats.UnicodeText }, o.GetFormats (false), "#D3");
-
-			o = new DataObject ();
-			o.SetData (DataFormats.StringFormat, true, "abc");
-
-			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C1");
-			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C2");
-			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (false), "#C3");
-
-			o = new DataObject ();
-			o.SetData (DataFormats.StringFormat, false, "abc");
-
-			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (), "#D1");
-			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (), "#D2");
-			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (false), "#D3");
-		}
-	
-		[Test]
-		public void TestAudio ()
-		{
-			DataObject d = new DataObject ();
-			byte[] b = new byte[] { 1, 2, 3 };
-
-			d.SetAudio (b);
-
-			Assert.AreEqual (true, d.ContainsAudio (), "A1");
-			Assert.AreEqual (false, d.ContainsFileDropList (), "A2");
-			Assert.AreEqual (false, d.ContainsImage (), "A3");
-			Assert.AreEqual (false, d.ContainsText (), "A4");
-			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
-
-			Assert.AreEqual (b.Length, d.GetAudioStream ().Length, "A6");
-		}
-
-		[Test]
-		public void TestFileDrop ()
-		{
-			DataObject d = new DataObject ();
-			StringCollection sc = new StringCollection ();
-			
-			sc.AddRange (new string[] {"A", "B", "C"});
-
-			d.SetFileDropList (sc);
-
-			Assert.AreEqual (false, d.ContainsAudio (), "A1");
-			Assert.AreEqual (true, d.ContainsFileDropList (), "A2");
-			Assert.AreEqual (false, d.ContainsImage (), "A3");
-			Assert.AreEqual (false, d.ContainsText (), "A4");
-			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
-
-			Assert.AreEqual (sc.Count, d.GetFileDropList ().Count, "A6");
-		}
-
-		[Test]
-		public void TestImage ()
-		{
-			DataObject d = new DataObject ();
-			Image i = new Bitmap (16, 16);
-			
-			d.SetImage (i);
-
-			Assert.AreEqual (false, d.ContainsAudio (), "A1");
-			Assert.AreEqual (false, d.ContainsFileDropList (), "A2");
-			Assert.AreEqual (true, d.ContainsImage (), "A3");
-			Assert.AreEqual (false, d.ContainsText (), "A4");
-			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
-
-			Assert.AreSame (i, d.GetImage (), "A6");
-		}
-
-		[Test]
-		public void TestText ()
-		{
-			DataObject d = new DataObject ();
-
-			d.SetText ("yo");
-
-			Assert.AreEqual (false, d.ContainsAudio (), "A1");
-			Assert.AreEqual (false, d.ContainsFileDropList (), "A2");
-			Assert.AreEqual (false, d.ContainsImage (), "A3");
-			Assert.AreEqual (true, d.ContainsText (), "A4");
-			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
-
-			Assert.AreEqual ("yo", d.GetText (), "A6");
-			Assert.AreEqual ("yo", d.GetData (DataFormats.StringFormat), "A6-1");
-			
-			d.SetText ("<html></html>", TextDataFormat.Html);
-			Assert.AreEqual (true, d.ContainsText (), "A7");
-			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A8");
-			Assert.AreEqual (true, d.ContainsText (TextDataFormat.Html), "A9");
-			Assert.AreEqual (false, d.ContainsText (TextDataFormat.Rtf), "A10");
-			Assert.AreEqual (true, d.ContainsText (TextDataFormat.Text), "A11");
-			Assert.AreEqual (true, d.ContainsText (TextDataFormat.UnicodeText), "A12");
-
-			// directly put a string
-			d.SetData ("yo");
-
-			Assert.AreEqual (true, d.ContainsText (TextDataFormat.Text), "A13");
-			Assert.AreEqual (true, d.ContainsText (TextDataFormat.UnicodeText), "A14");
-
-			Assert.AreEqual ("yo", d.GetData (DataFormats.StringFormat), "A15");
-			Assert.AreEqual ("yo", d.GetData (DataFormats.Text), "A16");
-			Assert.AreEqual ("yo", d.GetData (DataFormats.UnicodeText), "A17");
-		}
-
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+using System.ComponentModel;
+using System.Collections.Specialized;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class DataObjectTest : TestHelper
+	{
+		[Test]
+		public void TestConvertible ()
+		{
+			DataObject o = new DataObject ();
+			o.SetData (DataFormats.Text, false, "abc");
+
+			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (), "#01");
+			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (true), "#02");
+			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (false), "#03");
+
+			o = new DataObject ();
+			o.SetData (DataFormats.Text, true, "abc");
+
+			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#B1");
+			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#B2");
+			Assert.AreEqual (new string [] { DataFormats.Text }, o.GetFormats (false), "#B3");
+
+
+			o = new DataObject ();
+			o.SetData (DataFormats.UnicodeText, true, "abc");
+
+			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C1");
+			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C2");
+			Assert.AreEqual (new string [] { DataFormats.UnicodeText }, o.GetFormats (false), "#C3");
+
+			o = new DataObject ();
+			o.SetData (DataFormats.UnicodeText, false, "abc");
+
+			Assert.AreEqual (new string [] { DataFormats.UnicodeText }, o.GetFormats (), "#D1");
+			Assert.AreEqual (new string [] { DataFormats.UnicodeText}, o.GetFormats (), "#D2");
+			Assert.AreEqual (new string [] { DataFormats.UnicodeText }, o.GetFormats (false), "#D3");
+
+			o = new DataObject ();
+			o.SetData (DataFormats.StringFormat, true, "abc");
+
+			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C1");
+			Assert.AreEqual (new string [] { DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text }, o.GetFormats (), "#C2");
+			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (false), "#C3");
+
+			o = new DataObject ();
+			o.SetData (DataFormats.StringFormat, false, "abc");
+
+			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (), "#D1");
+			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (), "#D2");
+			Assert.AreEqual (new string [] { DataFormats.StringFormat }, o.GetFormats (false), "#D3");
+		}
+	
+		[Test]
+		public void TestAudio ()
+		{
+			DataObject d = new DataObject ();
+			byte[] b = new byte[] { 1, 2, 3 };
+
+			d.SetAudio (b);
+
+			Assert.AreEqual (true, d.ContainsAudio (), "A1");
+			Assert.AreEqual (false, d.ContainsFileDropList (), "A2");
+			Assert.AreEqual (false, d.ContainsImage (), "A3");
+			Assert.AreEqual (false, d.ContainsText (), "A4");
+			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
+
+			Assert.AreEqual (b.Length, d.GetAudioStream ().Length, "A6");
+		}
+
+		[Test]
+		public void TestFileDrop ()
+		{
+			DataObject d = new DataObject ();
+			StringCollection sc = new StringCollection ();
+			
+			sc.AddRange (new string[] {"A", "B", "C"});
+
+			d.SetFileDropList (sc);
+
+			Assert.AreEqual (false, d.ContainsAudio (), "A1");
+			Assert.AreEqual (true, d.ContainsFileDropList (), "A2");
+			Assert.AreEqual (false, d.ContainsImage (), "A3");
+			Assert.AreEqual (false, d.ContainsText (), "A4");
+			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
+
+			Assert.AreEqual (sc.Count, d.GetFileDropList ().Count, "A6");
+		}
+
+		[Test]
+		public void TestImage ()
+		{
+			DataObject d = new DataObject ();
+			Image i = new Bitmap (16, 16);
+			
+			d.SetImage (i);
+
+			Assert.AreEqual (false, d.ContainsAudio (), "A1");
+			Assert.AreEqual (false, d.ContainsFileDropList (), "A2");
+			Assert.AreEqual (true, d.ContainsImage (), "A3");
+			Assert.AreEqual (false, d.ContainsText (), "A4");
+			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
+
+			Assert.AreSame (i, d.GetImage (), "A6");
+		}
+
+		[Test]
+		public void TestText ()
+		{
+			DataObject d = new DataObject ();
+
+			d.SetText ("yo");
+
+			Assert.AreEqual (false, d.ContainsAudio (), "A1");
+			Assert.AreEqual (false, d.ContainsFileDropList (), "A2");
+			Assert.AreEqual (false, d.ContainsImage (), "A3");
+			Assert.AreEqual (true, d.ContainsText (), "A4");
+			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A5");
+
+			Assert.AreEqual ("yo", d.GetText (), "A6");
+			Assert.AreEqual ("yo", d.GetData (DataFormats.StringFormat), "A6-1");
+			
+			d.SetText ("<html></html>", TextDataFormat.Html);
+			Assert.AreEqual (true, d.ContainsText (), "A7");
+			Assert.AreEqual (false, d.ContainsText (TextDataFormat.CommaSeparatedValue), "A8");
+			Assert.AreEqual (true, d.ContainsText (TextDataFormat.Html), "A9");
+			Assert.AreEqual (false, d.ContainsText (TextDataFormat.Rtf), "A10");
+			Assert.AreEqual (true, d.ContainsText (TextDataFormat.Text), "A11");
+			Assert.AreEqual (true, d.ContainsText (TextDataFormat.UnicodeText), "A12");
+
+			// directly put a string
+			d.SetData ("yo");
+
+			Assert.AreEqual (true, d.ContainsText (TextDataFormat.Text), "A13");
+			Assert.AreEqual (true, d.ContainsText (TextDataFormat.UnicodeText), "A14");
+
+			Assert.AreEqual ("yo", d.GetData (DataFormats.StringFormat), "A15");
+			Assert.AreEqual ("yo", d.GetData (DataFormats.Text), "A16");
+			Assert.AreEqual ("yo", d.GetData (DataFormats.UnicodeText), "A17");
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/EventArgsTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/EventArgsTest.cs
@@ -1,700 +1,700 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Windows.Forms;
-using System.ComponentModel;
-using System.Drawing;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class EventArgsTest : TestHelper
-	{
-		[Test]
-		public void TestBindingCompleteEventArgs ()
-		{
-			Binding b = new Binding ("TestBind", null, "TestMember");
-			BindingCompleteContext c = new BindingCompleteContext ();
-			string errorText = "This is an error!";
-			Exception ex = new ArgumentNullException ();
-
-			BindingCompleteEventArgs e = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c);
-
-			Assert.AreEqual (b, e.Binding, "A1");
-			Assert.AreEqual (BindingCompleteState.Success, e.BindingCompleteState, "A2");
-			Assert.AreEqual (c, e.BindingCompleteContext, "A3");
-			Assert.AreEqual (false, e.Cancel, "A4");
-			Assert.AreEqual (String.Empty, e.ErrorText, "A5");
-			Assert.AreEqual (null, e.Exception, "A6");
-
-			BindingCompleteEventArgs e2 = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c, errorText);
-
-			Assert.AreEqual (b, e2.Binding, "B1");
-			Assert.AreEqual (BindingCompleteState.Success, e2.BindingCompleteState, "B2");
-			Assert.AreEqual (c, e2.BindingCompleteContext, "B3");
-			Assert.AreEqual (false, e2.Cancel, "B4");
-			Assert.AreEqual (errorText, e2.ErrorText, "B5");
-			Assert.AreEqual (null, e2.Exception, "B6");
-
-			BindingCompleteEventArgs e3 = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c, errorText, ex);
-
-			Assert.AreEqual (b, e3.Binding, "C1");
-			Assert.AreEqual (BindingCompleteState.Success, e3.BindingCompleteState, "C2");
-			Assert.AreEqual (c, e3.BindingCompleteContext, "C3");
-			Assert.AreEqual (false, e3.Cancel, "C4");
-			Assert.AreEqual (errorText, e3.ErrorText, "C5");
-			Assert.AreEqual (ex, e3.Exception, "C6");
-
-			BindingCompleteEventArgs e4 = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c, errorText, ex, true);
-
-			Assert.AreEqual (b, e4.Binding, "D1");
-			Assert.AreEqual (BindingCompleteState.Success, e4.BindingCompleteState, "D2");
-			Assert.AreEqual (c, e4.BindingCompleteContext, "D3");
-			Assert.AreEqual (true, e4.Cancel, "D4");
-			Assert.AreEqual (errorText, e4.ErrorText, "D5");
-			Assert.AreEqual (ex, e4.Exception, "D6");
-
-		}
-
-		[Test]
-		public void TestBindingManagerDataErrorEventArgs ()
-		{
-			Exception ex = new ArgumentNullException ();
-
-			BindingManagerDataErrorEventArgs e = new BindingManagerDataErrorEventArgs (ex);
-
-			Assert.AreEqual (ex, e.Exception, "A1");
-		}
-
-		[Test]
-		public void TestCacheVirtualItemsEventArgs ()
-		{
-			int start = 7;
-			int end = 26;
-
-			CacheVirtualItemsEventArgs e = new CacheVirtualItemsEventArgs (start, end);
-
-			Assert.AreEqual (start, e.StartIndex, "A1");
-			Assert.AreEqual (end, e.EndIndex, "A2");
-		}
-
-		[Test]
-		public void TestColumnReorderedEventArgs ()
-		{
-			int oldindex = 7;
-			int newindex = 26;
-			ColumnHeader ch = new ColumnHeader ();
-			ch.Text = "TestHeader";
-
-			ColumnReorderedEventArgs e = new ColumnReorderedEventArgs (oldindex, newindex, ch);
-
-			Assert.AreEqual (oldindex, e.OldDisplayIndex, "A1");
-			Assert.AreEqual (newindex, e.NewDisplayIndex, "A2");
-			Assert.AreEqual (ch, e.Header, "A3");
-			Assert.AreEqual (false, e.Cancel, "A4");
-		}
-
-		[Test]
-		public void TestColumnWidthChangedEventArgs ()
-		{
-			int col = 42;
-
-			ColumnWidthChangedEventArgs e = new ColumnWidthChangedEventArgs (col);
-
-			Assert.AreEqual (col, e.ColumnIndex, "A1");
-		}
-
-		[Test]
-		public void TestColumnWidthChangingEventArgs ()
-		{
-			int col = 27;
-			int width = 543;
-
-			ColumnWidthChangingEventArgs e = new ColumnWidthChangingEventArgs (col, width);
-
-			Assert.AreEqual (col, e.ColumnIndex, "A1");
-			Assert.AreEqual (width, e.NewWidth, "A2");
-			Assert.AreEqual (false, e.Cancel, "A3");
-
-			ColumnWidthChangingEventArgs e2 = new ColumnWidthChangingEventArgs (col, width, true);
-
-			Assert.AreEqual (col, e2.ColumnIndex, "B1");
-			Assert.AreEqual (width, e2.NewWidth, "B2");
-			Assert.AreEqual (true, e2.Cancel, "B3");
-		}
-
-		[Test]
-		public void TestFormClosedEventArgs ()
-		{
-			CloseReason cr = CloseReason.WindowsShutDown;
-
-			FormClosedEventArgs e = new FormClosedEventArgs (cr);
-
-			Assert.AreEqual (cr, e.CloseReason, "A1");
-		}
-
-		[Test]
-		public void TestFormClosingEventArgs ()
-		{
-			CloseReason cr = CloseReason.WindowsShutDown;
-
-			FormClosingEventArgs e = new FormClosingEventArgs (cr, true);
-
-			Assert.AreEqual (cr, e.CloseReason, "A1");
-			Assert.AreEqual (true, e.Cancel, "A2");
-		}
-
-		[Test]
-		public void TestItemCheckedEventArgs ()
-		{
-			ListViewItem item = new ListViewItem ("TestItem");
-
-			ItemCheckedEventArgs e = new ItemCheckedEventArgs (item);
-
-			Assert.AreEqual (item, e.Item, "A1");
-		}
-
-		[Test]
-		public void TestListControlConvertEventArgs ()
-		{
-			ListViewItem item = new ListViewItem ("TestItem");
-			object value = (object)"TestObject";
-			Type t = typeof (string);
-
-			ListControlConvertEventArgs e = new ListControlConvertEventArgs (value, t, item);
-
-			Assert.AreEqual (item, e.ListItem, "A1");
-			Assert.AreEqual (value, e.Value, "A2");
-			Assert.AreEqual (t, e.DesiredType, "A3");
-		}
-
-		[Test]
-		public void TestListViewItemMouseHoverEventArgs ()
-		{
-			ListViewItem item = new ListViewItem ("TestItem");
-
-			ListViewItemMouseHoverEventArgs e = new ListViewItemMouseHoverEventArgs (item);
-
-			Assert.AreEqual (item, e.Item, "A1");
-		}
-
-		[Test]
-		public void TestListViewItemSelectionChangedEventArgs ()
-		{
-			ListViewItem item = new ListViewItem ("TestItem");
-			bool selected = false;
-			int index = 35;
-
-			ListViewItemSelectionChangedEventArgs e = new ListViewItemSelectionChangedEventArgs (item, index, selected);
-
-			Assert.AreEqual (item, e.Item, "A1");
-			Assert.AreEqual (selected, e.IsSelected, "A2");
-			Assert.AreEqual (index, e.ItemIndex, "A3");
-		}
-
-		[Test]
-		public void TestListViewVirtualItemsSelectionRangeChangedEventArgs ()
-		{
-			bool selected = false;
-			int start = 3;
-			int end = 76;
-
-			ListViewVirtualItemsSelectionRangeChangedEventArgs e = new ListViewVirtualItemsSelectionRangeChangedEventArgs (start, end, selected);
-
-			Assert.AreEqual (selected, e.IsSelected, "A1");
-			Assert.AreEqual (start, e.StartIndex, "A2");
-			Assert.AreEqual (end, e.EndIndex, "A3");
-		}
-
-		[Test]
-		public void TestMaskInputRejectedEventArgs ()
-		{
-			int pos = 2;
-			MaskedTextResultHint hint = MaskedTextResultHint.InvalidInput;
-
-			MaskInputRejectedEventArgs e = new MaskInputRejectedEventArgs (pos, hint);
-
-			Assert.AreEqual (pos, e.Position, "A1");
-			Assert.AreEqual (hint, e.RejectionHint, "A2");
-		}
-
-		[Test]
-		public void TestPopupEventArgs ()
-		{
-			Control c = new ListBox ();
-			IWin32Window w = null;
-			bool balloon = true;
-			Size s = new Size (123, 54);
-
-			PopupEventArgs e = new PopupEventArgs (w, c, balloon, s);
-
-			Assert.AreEqual (c, e.AssociatedControl, "A1");
-			Assert.AreEqual (w, e.AssociatedWindow, "A2");
-			Assert.AreEqual (balloon, e.IsBalloon, "A3");
-			Assert.AreEqual (s, e.ToolTipSize, "A4");
-		}
-
-		[Test]
-		public void TestPreviewKeyDownEventArgs ()
-		{
-			Keys k = (Keys)196674;  // Control-Shift-B
-
-			PreviewKeyDownEventArgs e = new PreviewKeyDownEventArgs (k);
-
-			Assert.AreEqual (false, e.Alt, "A1");
-			Assert.AreEqual (true, e.Control, "A2");
-			Assert.AreEqual (false, e.IsInputKey, "A3");
-			Assert.AreEqual ((Keys)66, e.KeyCode, "A4");  // B
-			Assert.AreEqual (k, e.KeyData, "A5");
-			Assert.AreEqual (Convert.ToInt32 (k), e.KeyValue, "A6");
-			Assert.AreEqual ((Keys)196608, e.Modifiers, "A7");  // Control + Shift
-			Assert.AreEqual (true, e.Shift, "A8");
-
-			e.IsInputKey = true;
-
-			Assert.AreEqual (true, e.IsInputKey, "A9");
-		}
-
-		[Test]
-		public void TestRetrieveVirtualItemEventArgs()
-		{
-			ListViewItem item = new ListViewItem("TestItem");
-			int index = 75;
-			
-			RetrieveVirtualItemEventArgs e = new RetrieveVirtualItemEventArgs(index);
-			
-			Assert.AreEqual(index, e.ItemIndex, "A1");
-			Assert.AreEqual(null, e.Item, "A2");
-			
-			e.Item = item;
-			
-			Assert.AreEqual(item, e.Item, "A3");
-		}
-		
-		[Test]
-		public void TestSearchForVirtualItemEventArgs()
-		{
-			SearchDirectionHint sdh = SearchDirectionHint.Right;
-			bool includesubitems = true;
-			int index = 84;
-			bool isprefix = true;
-			bool istext = false;
-			int start = 34;
-			Point startpoint = new Point(64,35);
-			string text = "HiThere!";
-			
-			SearchForVirtualItemEventArgs e = new SearchForVirtualItemEventArgs(istext, isprefix, includesubitems, text, startpoint, sdh, start);
-			
-			Assert.AreEqual(sdh, e.Direction, "A1");
-			Assert.AreEqual(includesubitems, e.IncludeSubItemsInSearch, "A2");
-			Assert.AreEqual(-1, e.Index, "A3");
-			Assert.AreEqual(isprefix, e.IsPrefixSearch, "A4");
-			Assert.AreEqual(istext, e.IsTextSearch, "A5");
-			Assert.AreEqual(start, e.StartIndex, "A6");
-			Assert.AreEqual(startpoint, e.StartingPoint, "A7");
-			Assert.AreEqual(text, e.Text, "A8");
-			
-			e.Index = index;
-			Assert.AreEqual(index, e.Index, "A9");
-		}
-		
-		[Test]
-		public void TestSplitterCancelEventArgs()
-		{
-			int mx = 23;
-			int my = 33;
-			int sx = 43;
-			int sy = 53;
-			
-			SplitterCancelEventArgs e = new SplitterCancelEventArgs(mx, my, sx, sy);
-			
-			Assert.AreEqual(mx, e.MouseCursorX, "A1");
-			Assert.AreEqual(my, e.MouseCursorY, "A2");
-			Assert.AreEqual(sx, e.SplitX, "A3");
-			Assert.AreEqual(sy, e.SplitY, "A4");
-			
-			e.SplitX = 11;
-			e.SplitY = 12;
-			
-			Assert.AreEqual(11, e.SplitX, "A5");
-			Assert.AreEqual(12, e.SplitY, "A6");
-		}
-		
-		[Test]
-		public void TestTabControlCancelEventArgs()
-		{
-			TabControlAction tca = TabControlAction.Deselecting;
-			TabPage tp = new TabPage("HI!");
-			int index = 477;
-			
-			TabControlCancelEventArgs e = new TabControlCancelEventArgs(tp, index, true, tca);
-			
-			Assert.AreEqual(tca, e.Action, "A1");
-			Assert.AreEqual(tp, e.TabPage, "A2");
-			Assert.AreEqual(index, e.TabPageIndex, "A3");
-			Assert.AreEqual(true, e.Cancel, "A4");
-		}
-
-		[Test]
-		public void TestTabControlEventArgs ()
-		{
-			TabControlAction tca = TabControlAction.Selected;
-			TabPage tp = new TabPage ("HI!");
-			int index = 477;
-
-			TabControlEventArgs e = new TabControlEventArgs (tp, index, tca);
-
-			Assert.AreEqual (tca, e.Action, "A1");
-			Assert.AreEqual (tp, e.TabPage, "A2");
-			Assert.AreEqual (index, e.TabPageIndex, "A3");
-		}
-		
-		[Test]
-		public void TestTableLayoutCellPaintEventArgs()
-		{
-			Rectangle bounds = new Rectangle(0, 0, 100, 200);
-			Rectangle clip = new Rectangle(50, 50, 50, 50);
-			int col = 54;
-			int row = 77;
-			Bitmap b = new Bitmap(100, 100);
-			Graphics g = Graphics.FromImage(b);
-			
-			TableLayoutCellPaintEventArgs e = new TableLayoutCellPaintEventArgs(g, clip, bounds, col, row);
-			
-			Assert.AreEqual(bounds, e.CellBounds, "A1");
-			Assert.AreEqual(col, e.Column, "A2");
-			Assert.AreEqual(row, e.Row, "A3");
-			Assert.AreEqual(g, e.Graphics, "A4");
-			Assert.AreEqual(clip, e.ClipRectangle, "A5");
-		}
-		
-		[Test]
-		public void TestToolStripDropDownClosedEventArgs()
-		{
-			ToolStripDropDownCloseReason cr = ToolStripDropDownCloseReason.CloseCalled;
-			
-			ToolStripDropDownClosedEventArgs e = new ToolStripDropDownClosedEventArgs(cr);
-			
-			Assert.AreEqual(cr, e.CloseReason, "A1");
-		}
-
-		[Test]
-		public void TestToolStripDropDownClosingEventArgs ()
-		{
-			ToolStripDropDownCloseReason cr = ToolStripDropDownCloseReason.CloseCalled;
-
-			ToolStripDropDownClosingEventArgs e = new ToolStripDropDownClosingEventArgs (cr);
-
-			Assert.AreEqual (cr, e.CloseReason, "A1");
-		}
-		
-		[Test]
-		public void TestTreeNodeMouseClickEventArgs()
-		{
-			TreeNode tn = new TreeNode("HI");
-			int clicks = 4;
-			int x = 75;
-			int y = 34;
-			MouseButtons mb = MouseButtons.Right;
-			
-			TreeNodeMouseClickEventArgs e = new TreeNodeMouseClickEventArgs(tn, mb, clicks, x, y);
-			
-			Assert.AreEqual(tn, e.Node, "A1");
-			Assert.AreEqual(clicks, e.Clicks, "A2");
-			Assert.AreEqual(x, e.X, "A3");
-			Assert.AreEqual(y, e.Y, "A4");
-			Assert.AreEqual(mb, e.Button, "A5");
-		}
-
-		[Test]
-		public void TestTreeNodeMouseHoverEventArgs ()
-		{
-			TreeNode tn = new TreeNode ("HI");
-
-			TreeNodeMouseHoverEventArgs e = new TreeNodeMouseHoverEventArgs (tn);
-
-			Assert.AreEqual (tn, e.Node, "A1");
-		}
-
-		[Test]
-		public void TestTypeValidationEventArgs()
-		{
-			bool valid = true;
-			string message = "This is a test.";
-			object rv = (object) "MyObject";
-			Type vt = typeof(int);
-			
-			TypeValidationEventArgs e = new TypeValidationEventArgs (vt, valid, rv, message);
-			
-			Assert.AreEqual(valid, e.IsValidInput, "A1");
-			Assert.AreEqual(message, e.Message, "A2");
-			Assert.AreEqual(rv, e.ReturnValue, "A3");
-			Assert.AreEqual(vt, e.ValidatingType, "A4");
-			Assert.AreEqual(false, e.Cancel, "A5");
-			
-			e.Cancel = true;
-			
-			Assert.AreEqual(true, e.Cancel, "A6");
-		}
-		
-		[Test]
-		public void TestWebBrowserDocumentCompletedEventArgs()
-		{
-			Uri url = new Uri("http://www.mono-project.com/");
-			
-			WebBrowserDocumentCompletedEventArgs e = new WebBrowserDocumentCompletedEventArgs(url);
-			
-			Assert.AreEqual(url, e.Url, "A1");
-		}
-
-		[Test]
-		public void TestWebBrowserNavigatedEventArgs ()
-		{
-			Uri url = new Uri ("http://www.mono-project.com/");
-
-			WebBrowserNavigatedEventArgs e = new WebBrowserNavigatedEventArgs (url);
-
-			Assert.AreEqual (url, e.Url, "A1");
-		}
-
-		[Test]
-		public void TestWebBrowserNavigatingEventArgs ()
-		{
-			Uri url = new Uri ("http://www.mono-project.com/");
-			string frame = "TOP";
-
-			WebBrowserNavigatingEventArgs e = new WebBrowserNavigatingEventArgs (url, frame);
-
-			Assert.AreEqual (url, e.Url, "A1");
-			Assert.AreEqual(frame, e.TargetFrameName, "A2");
-		}
-
-		[Test]
-		public void TestWebBrowserProgressChangedEventArgs ()
-		{
-			long current = 3000;
-			long max = 5000;
-
-			WebBrowserProgressChangedEventArgs e = new WebBrowserProgressChangedEventArgs (current, max);
-
-			Assert.AreEqual (current, e.CurrentProgress, "A1");
-			Assert.AreEqual (max, e.MaximumProgress, "A2");
-		}
-
-		[Test]
-		public void TestToolStripArrowRenderEventArgs ()
-		{
-			Graphics g = Graphics.FromImage(new Bitmap(5,5));
-			ToolStripItem tsi = new ToolStripButton();
-			Rectangle r = new Rectangle(0,0,10,10);
-			ToolStripArrowRenderEventArgs e = new ToolStripArrowRenderEventArgs(g,tsi,r,Color.BurlyWood, ArrowDirection.Down);
-			
-			Assert.AreEqual(g, e.Graphics, "A1");
-			Assert.AreEqual(tsi, e.Item, "A2");
-			Assert.AreEqual(r, e.ArrowRectangle, "A3");
-			Assert.AreEqual(Color.BurlyWood, e.ArrowColor, "A4");
-			Assert.AreEqual(ArrowDirection.Down, e.Direction, "A5");
-			
-			Rectangle r2 = new Rectangle(0,0,5,5);
-			
-			e.ArrowColor = Color.BlanchedAlmond;
-			e.ArrowRectangle = r2;
-			e.Direction = ArrowDirection.Right;
-
-			Assert.AreEqual (Color.BlanchedAlmond, e.ArrowColor, "A6");
-			Assert.AreEqual (r2, e.ArrowRectangle, "A7");
-			Assert.AreEqual (ArrowDirection.Right, e.Direction, "A8");
-		}
-		
-		[Test]
-		public void TestToolStripContentPanelRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStripContentPanel tscp = new ToolStripContentPanel();
-			ToolStripContentPanelRenderEventArgs e = new ToolStripContentPanelRenderEventArgs(g, tscp);
-
-			Assert.AreEqual (g, e.Graphics, "BBB1");
-			Assert.AreEqual (false, e.Handled, "BBB2");
-			Assert.AreEqual (tscp, e.ToolStripContentPanel, "BBB3");	
-			
-			e.Handled = true;
-
-			Assert.AreEqual (true, e.Handled, "BBB4");
-		}
-		
-		[Test]
-		public void TestToolStripGripRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStrip ts = new ToolStrip();
-			ToolStripGripRenderEventArgs e = new ToolStripGripRenderEventArgs(g, ts);
-
-			Assert.AreEqual (new Rectangle(2,0,3,25), e.GripBounds, "CCC1");
-			Assert.AreEqual (ToolStripGripDisplayStyle.Vertical, e.GripDisplayStyle, "CCC1");
-			Assert.AreEqual (ToolStripGripStyle.Visible, e.GripStyle, "CCC3");
-			Assert.AreEqual (g, e.Graphics, "CCC4");
-			Assert.AreEqual (ts, e.ToolStrip, "CCC5");
-	
-		}
-		
-		[Test]
-		public void TestToolStripItemClickedEventArgs()
-		{
-			ToolStripItem tsi = new ToolStripButton ();
-			ToolStripItemClickedEventArgs e = new ToolStripItemClickedEventArgs(tsi);
-
-			Assert.AreEqual (tsi, e.ClickedItem, "DDD1");
-		}
-		
-		[Test]
-		public void TestToolStripItemEventArgs()
-		{
-			ToolStripItem tsi = new ToolStripButton ();
-			ToolStripItemEventArgs e = new ToolStripItemEventArgs(tsi);
-
-			Assert.AreEqual (tsi, e.Item, "EEE1");
-		}
-		
-		[Test]
-		public void TestToolStripItemImageRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStripItem tsi = new ToolStripButton ();
-			Rectangle r = new Rectangle(0,0,16,16);
-			ToolStripItemImageRenderEventArgs e = new ToolStripItemImageRenderEventArgs(g, tsi, r);
-
-			Assert.AreEqual (g, e.Graphics, "FFF1");
-			Assert.AreEqual (tsi, e.Item, "FFF2");
-			Assert.AreEqual (r, e.ImageRectangle, "FFF3");
-			Assert.AreEqual (null, e.Image, "FFF4");
-			
-			Image i = new Bitmap(16,16);
-			e = new ToolStripItemImageRenderEventArgs (g, tsi, i, r);
-
-			Assert.AreEqual (g, e.Graphics, "FFF5");
-			Assert.AreEqual (tsi, e.Item, "FFF6");
-			Assert.AreEqual (r, e.ImageRectangle, "FFF7");
-			Assert.AreEqual (i, e.Image, "FFF8");
-		}
-		
-		[Test]
-		public void TestToolStripItemRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStripItem tsi = new ToolStripButton ();
-			ToolStripItemRenderEventArgs e = new ToolStripItemRenderEventArgs(g, tsi);
-
-			Assert.AreEqual (g, e.Graphics, "GGG1");
-			Assert.AreEqual (tsi, e.Item, "GGG2");
-			Assert.AreEqual (null, e.ToolStrip, "GGG3");
-		}
-		
-		[Test]
-		public void TestToolStripItemTextRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStripItem tsi = new ToolStripButton ();
-			string text = "Test String";
-			Rectangle r = new Rectangle(0,0,15,15);
-			Color c = Color.Bisque;
-			Font f = new Font("Arial", 12);
-			
-			ToolStripItemTextRenderEventArgs e = new ToolStripItemTextRenderEventArgs(g,tsi,text,r,c,f, ContentAlignment.BottomRight);
-
-			Assert.AreEqual (g, e.Graphics, "HHH1");
-			Assert.AreEqual (tsi, e.Item, "HHH2");
-			Assert.AreEqual (text, e.Text, "HHH3");
-			Assert.AreEqual (r, e.TextRectangle, "HHH4");
-			Assert.AreEqual (c, e.TextColor, "HHH5");
-			Assert.AreEqual (f, e.TextFont, "HHH6");
-			Assert.AreEqual (ToolStripTextDirection.Horizontal, e.TextDirection, "HHH7");
-			Assert.AreEqual (TextFormatFlags.Bottom | TextFormatFlags.Right | TextFormatFlags.HidePrefix, e.TextFormat, "HHH8");
-			Assert.AreEqual (null, e.ToolStrip, "HHH9");
-
-			e = new ToolStripItemTextRenderEventArgs (g, tsi, text, r, c, f, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
-
-			Assert.AreEqual (g, e.Graphics, "HHH10");
-			Assert.AreEqual (tsi, e.Item, "HHH11");
-			Assert.AreEqual (text, e.Text, "HHH12");
-			Assert.AreEqual (r, e.TextRectangle, "HHH13");
-			Assert.AreEqual (c, e.TextColor, "HHH14");
-			Assert.AreEqual (f, e.TextFont, "HHH15");
-			Assert.AreEqual (ToolStripTextDirection.Horizontal, e.TextDirection, "HHH16");
-			Assert.AreEqual (TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter, e.TextFormat, "HHH17");
-			Assert.AreEqual (null, e.ToolStrip, "HHH18");
-			
-			Font f2 = new Font("Tahoma", 14);
-			Rectangle r2 = new Rectangle(0,0,100,100);
-			
-			e.Text = "More Text";
-			e.TextColor = Color.Khaki;
-			e.TextDirection = ToolStripTextDirection.Vertical270;
-			e.TextFont = f2;
-			e.TextFormat = TextFormatFlags.SingleLine;
-			e.TextRectangle = r2;
-
-			Assert.AreEqual ("More Text", e.Text, "HHH19");
-			Assert.AreEqual (r2, e.TextRectangle, "HHH20");
-			Assert.AreEqual (Color.Khaki, e.TextColor, "HHH21");
-			Assert.AreEqual (f2, e.TextFont, "HHH22");
-			Assert.AreEqual (ToolStripTextDirection.Vertical270, e.TextDirection, "HHH23");
-			Assert.AreEqual (TextFormatFlags.SingleLine, e.TextFormat, "HHH24");
-		}
-		
-		[Test]
-		public void TestToolStripPanelRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStripPanel tsp = new ToolStripPanel();
-			
-			ToolStripPanelRenderEventArgs e = new ToolStripPanelRenderEventArgs(g, tsp);
-
-			Assert.AreEqual (g, e.Graphics, "III1");
-			Assert.AreEqual (false, e.Handled, "III2");
-			Assert.AreEqual (tsp, e.ToolStripPanel, "III3");
-			
-			e.Handled = true;
-
-			Assert.AreEqual (true, e.Handled, "III2");
-		}
-		
-		[Test]
-		public void TestToolStripRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStrip ts = new ToolStrip();
-			
-			ToolStripRenderEventArgs e = new ToolStripRenderEventArgs(g, ts);
-
-			Assert.AreEqual (g, e.Graphics, "JJJ1");
-			Assert.AreEqual (new Rectangle(0,0,100,25) , e.AffectedBounds, "JJJ2");
-			Assert.AreEqual (SystemColors.Control, e.BackColor, "JJJ3");
-			Assert.AreEqual (Rectangle.Empty, e.ConnectedArea, "JJJ4");
-			Assert.AreEqual (ts, e.ToolStrip, "JJJ5");
-
-			Rectangle r = new Rectangle (0, 23, 40, 100);
-			e = new ToolStripRenderEventArgs (g, ts, r, Color.DodgerBlue);
-
-			Assert.AreEqual (g, e.Graphics, "JJJ6");
-			Assert.AreEqual (r, e.AffectedBounds, "JJJ7");
-			Assert.AreEqual (Color.DodgerBlue, e.BackColor, "JJJ8");
-			Assert.AreEqual (Rectangle.Empty, e.ConnectedArea, "JJJ9");
-			Assert.AreEqual (ts, e.ToolStrip, "JJJ10");
-		}
-		
-		[Test]
-		public void TestToolStripSeparatorRenderEventArgs()
-		{
-			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
-			ToolStripSeparator tss = new ToolStripSeparator();
-			
-			ToolStripSeparatorRenderEventArgs e = new ToolStripSeparatorRenderEventArgs(g, tss, true);
-
-			Assert.AreEqual (g, e.Graphics, "LLL1");
-			Assert.AreEqual (tss, e.Item, "LLL2");
-			Assert.AreEqual (true, e.Vertical, "LLL3");
-			Assert.AreEqual (null, e.ToolStrip, "LLL4");
-		}
-	}
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Windows.Forms;
+using System.ComponentModel;
+using System.Drawing;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class EventArgsTest : TestHelper
+	{
+		[Test]
+		public void TestBindingCompleteEventArgs ()
+		{
+			Binding b = new Binding ("TestBind", null, "TestMember");
+			BindingCompleteContext c = new BindingCompleteContext ();
+			string errorText = "This is an error!";
+			Exception ex = new ArgumentNullException ();
+
+			BindingCompleteEventArgs e = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c);
+
+			Assert.AreEqual (b, e.Binding, "A1");
+			Assert.AreEqual (BindingCompleteState.Success, e.BindingCompleteState, "A2");
+			Assert.AreEqual (c, e.BindingCompleteContext, "A3");
+			Assert.AreEqual (false, e.Cancel, "A4");
+			Assert.AreEqual (String.Empty, e.ErrorText, "A5");
+			Assert.AreEqual (null, e.Exception, "A6");
+
+			BindingCompleteEventArgs e2 = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c, errorText);
+
+			Assert.AreEqual (b, e2.Binding, "B1");
+			Assert.AreEqual (BindingCompleteState.Success, e2.BindingCompleteState, "B2");
+			Assert.AreEqual (c, e2.BindingCompleteContext, "B3");
+			Assert.AreEqual (false, e2.Cancel, "B4");
+			Assert.AreEqual (errorText, e2.ErrorText, "B5");
+			Assert.AreEqual (null, e2.Exception, "B6");
+
+			BindingCompleteEventArgs e3 = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c, errorText, ex);
+
+			Assert.AreEqual (b, e3.Binding, "C1");
+			Assert.AreEqual (BindingCompleteState.Success, e3.BindingCompleteState, "C2");
+			Assert.AreEqual (c, e3.BindingCompleteContext, "C3");
+			Assert.AreEqual (false, e3.Cancel, "C4");
+			Assert.AreEqual (errorText, e3.ErrorText, "C5");
+			Assert.AreEqual (ex, e3.Exception, "C6");
+
+			BindingCompleteEventArgs e4 = new BindingCompleteEventArgs (b, BindingCompleteState.Success, c, errorText, ex, true);
+
+			Assert.AreEqual (b, e4.Binding, "D1");
+			Assert.AreEqual (BindingCompleteState.Success, e4.BindingCompleteState, "D2");
+			Assert.AreEqual (c, e4.BindingCompleteContext, "D3");
+			Assert.AreEqual (true, e4.Cancel, "D4");
+			Assert.AreEqual (errorText, e4.ErrorText, "D5");
+			Assert.AreEqual (ex, e4.Exception, "D6");
+
+		}
+
+		[Test]
+		public void TestBindingManagerDataErrorEventArgs ()
+		{
+			Exception ex = new ArgumentNullException ();
+
+			BindingManagerDataErrorEventArgs e = new BindingManagerDataErrorEventArgs (ex);
+
+			Assert.AreEqual (ex, e.Exception, "A1");
+		}
+
+		[Test]
+		public void TestCacheVirtualItemsEventArgs ()
+		{
+			int start = 7;
+			int end = 26;
+
+			CacheVirtualItemsEventArgs e = new CacheVirtualItemsEventArgs (start, end);
+
+			Assert.AreEqual (start, e.StartIndex, "A1");
+			Assert.AreEqual (end, e.EndIndex, "A2");
+		}
+
+		[Test]
+		public void TestColumnReorderedEventArgs ()
+		{
+			int oldindex = 7;
+			int newindex = 26;
+			ColumnHeader ch = new ColumnHeader ();
+			ch.Text = "TestHeader";
+
+			ColumnReorderedEventArgs e = new ColumnReorderedEventArgs (oldindex, newindex, ch);
+
+			Assert.AreEqual (oldindex, e.OldDisplayIndex, "A1");
+			Assert.AreEqual (newindex, e.NewDisplayIndex, "A2");
+			Assert.AreEqual (ch, e.Header, "A3");
+			Assert.AreEqual (false, e.Cancel, "A4");
+		}
+
+		[Test]
+		public void TestColumnWidthChangedEventArgs ()
+		{
+			int col = 42;
+
+			ColumnWidthChangedEventArgs e = new ColumnWidthChangedEventArgs (col);
+
+			Assert.AreEqual (col, e.ColumnIndex, "A1");
+		}
+
+		[Test]
+		public void TestColumnWidthChangingEventArgs ()
+		{
+			int col = 27;
+			int width = 543;
+
+			ColumnWidthChangingEventArgs e = new ColumnWidthChangingEventArgs (col, width);
+
+			Assert.AreEqual (col, e.ColumnIndex, "A1");
+			Assert.AreEqual (width, e.NewWidth, "A2");
+			Assert.AreEqual (false, e.Cancel, "A3");
+
+			ColumnWidthChangingEventArgs e2 = new ColumnWidthChangingEventArgs (col, width, true);
+
+			Assert.AreEqual (col, e2.ColumnIndex, "B1");
+			Assert.AreEqual (width, e2.NewWidth, "B2");
+			Assert.AreEqual (true, e2.Cancel, "B3");
+		}
+
+		[Test]
+		public void TestFormClosedEventArgs ()
+		{
+			CloseReason cr = CloseReason.WindowsShutDown;
+
+			FormClosedEventArgs e = new FormClosedEventArgs (cr);
+
+			Assert.AreEqual (cr, e.CloseReason, "A1");
+		}
+
+		[Test]
+		public void TestFormClosingEventArgs ()
+		{
+			CloseReason cr = CloseReason.WindowsShutDown;
+
+			FormClosingEventArgs e = new FormClosingEventArgs (cr, true);
+
+			Assert.AreEqual (cr, e.CloseReason, "A1");
+			Assert.AreEqual (true, e.Cancel, "A2");
+		}
+
+		[Test]
+		public void TestItemCheckedEventArgs ()
+		{
+			ListViewItem item = new ListViewItem ("TestItem");
+
+			ItemCheckedEventArgs e = new ItemCheckedEventArgs (item);
+
+			Assert.AreEqual (item, e.Item, "A1");
+		}
+
+		[Test]
+		public void TestListControlConvertEventArgs ()
+		{
+			ListViewItem item = new ListViewItem ("TestItem");
+			object value = (object)"TestObject";
+			Type t = typeof (string);
+
+			ListControlConvertEventArgs e = new ListControlConvertEventArgs (value, t, item);
+
+			Assert.AreEqual (item, e.ListItem, "A1");
+			Assert.AreEqual (value, e.Value, "A2");
+			Assert.AreEqual (t, e.DesiredType, "A3");
+		}
+
+		[Test]
+		public void TestListViewItemMouseHoverEventArgs ()
+		{
+			ListViewItem item = new ListViewItem ("TestItem");
+
+			ListViewItemMouseHoverEventArgs e = new ListViewItemMouseHoverEventArgs (item);
+
+			Assert.AreEqual (item, e.Item, "A1");
+		}
+
+		[Test]
+		public void TestListViewItemSelectionChangedEventArgs ()
+		{
+			ListViewItem item = new ListViewItem ("TestItem");
+			bool selected = false;
+			int index = 35;
+
+			ListViewItemSelectionChangedEventArgs e = new ListViewItemSelectionChangedEventArgs (item, index, selected);
+
+			Assert.AreEqual (item, e.Item, "A1");
+			Assert.AreEqual (selected, e.IsSelected, "A2");
+			Assert.AreEqual (index, e.ItemIndex, "A3");
+		}
+
+		[Test]
+		public void TestListViewVirtualItemsSelectionRangeChangedEventArgs ()
+		{
+			bool selected = false;
+			int start = 3;
+			int end = 76;
+
+			ListViewVirtualItemsSelectionRangeChangedEventArgs e = new ListViewVirtualItemsSelectionRangeChangedEventArgs (start, end, selected);
+
+			Assert.AreEqual (selected, e.IsSelected, "A1");
+			Assert.AreEqual (start, e.StartIndex, "A2");
+			Assert.AreEqual (end, e.EndIndex, "A3");
+		}
+
+		[Test]
+		public void TestMaskInputRejectedEventArgs ()
+		{
+			int pos = 2;
+			MaskedTextResultHint hint = MaskedTextResultHint.InvalidInput;
+
+			MaskInputRejectedEventArgs e = new MaskInputRejectedEventArgs (pos, hint);
+
+			Assert.AreEqual (pos, e.Position, "A1");
+			Assert.AreEqual (hint, e.RejectionHint, "A2");
+		}
+
+		[Test]
+		public void TestPopupEventArgs ()
+		{
+			Control c = new ListBox ();
+			IWin32Window w = null;
+			bool balloon = true;
+			Size s = new Size (123, 54);
+
+			PopupEventArgs e = new PopupEventArgs (w, c, balloon, s);
+
+			Assert.AreEqual (c, e.AssociatedControl, "A1");
+			Assert.AreEqual (w, e.AssociatedWindow, "A2");
+			Assert.AreEqual (balloon, e.IsBalloon, "A3");
+			Assert.AreEqual (s, e.ToolTipSize, "A4");
+		}
+
+		[Test]
+		public void TestPreviewKeyDownEventArgs ()
+		{
+			Keys k = (Keys)196674;  // Control-Shift-B
+
+			PreviewKeyDownEventArgs e = new PreviewKeyDownEventArgs (k);
+
+			Assert.AreEqual (false, e.Alt, "A1");
+			Assert.AreEqual (true, e.Control, "A2");
+			Assert.AreEqual (false, e.IsInputKey, "A3");
+			Assert.AreEqual ((Keys)66, e.KeyCode, "A4");  // B
+			Assert.AreEqual (k, e.KeyData, "A5");
+			Assert.AreEqual (Convert.ToInt32 (k), e.KeyValue, "A6");
+			Assert.AreEqual ((Keys)196608, e.Modifiers, "A7");  // Control + Shift
+			Assert.AreEqual (true, e.Shift, "A8");
+
+			e.IsInputKey = true;
+
+			Assert.AreEqual (true, e.IsInputKey, "A9");
+		}
+
+		[Test]
+		public void TestRetrieveVirtualItemEventArgs()
+		{
+			ListViewItem item = new ListViewItem("TestItem");
+			int index = 75;
+			
+			RetrieveVirtualItemEventArgs e = new RetrieveVirtualItemEventArgs(index);
+			
+			Assert.AreEqual(index, e.ItemIndex, "A1");
+			Assert.AreEqual(null, e.Item, "A2");
+			
+			e.Item = item;
+			
+			Assert.AreEqual(item, e.Item, "A3");
+		}
+		
+		[Test]
+		public void TestSearchForVirtualItemEventArgs()
+		{
+			SearchDirectionHint sdh = SearchDirectionHint.Right;
+			bool includesubitems = true;
+			int index = 84;
+			bool isprefix = true;
+			bool istext = false;
+			int start = 34;
+			Point startpoint = new Point(64,35);
+			string text = "HiThere!";
+			
+			SearchForVirtualItemEventArgs e = new SearchForVirtualItemEventArgs(istext, isprefix, includesubitems, text, startpoint, sdh, start);
+			
+			Assert.AreEqual(sdh, e.Direction, "A1");
+			Assert.AreEqual(includesubitems, e.IncludeSubItemsInSearch, "A2");
+			Assert.AreEqual(-1, e.Index, "A3");
+			Assert.AreEqual(isprefix, e.IsPrefixSearch, "A4");
+			Assert.AreEqual(istext, e.IsTextSearch, "A5");
+			Assert.AreEqual(start, e.StartIndex, "A6");
+			Assert.AreEqual(startpoint, e.StartingPoint, "A7");
+			Assert.AreEqual(text, e.Text, "A8");
+			
+			e.Index = index;
+			Assert.AreEqual(index, e.Index, "A9");
+		}
+		
+		[Test]
+		public void TestSplitterCancelEventArgs()
+		{
+			int mx = 23;
+			int my = 33;
+			int sx = 43;
+			int sy = 53;
+			
+			SplitterCancelEventArgs e = new SplitterCancelEventArgs(mx, my, sx, sy);
+			
+			Assert.AreEqual(mx, e.MouseCursorX, "A1");
+			Assert.AreEqual(my, e.MouseCursorY, "A2");
+			Assert.AreEqual(sx, e.SplitX, "A3");
+			Assert.AreEqual(sy, e.SplitY, "A4");
+			
+			e.SplitX = 11;
+			e.SplitY = 12;
+			
+			Assert.AreEqual(11, e.SplitX, "A5");
+			Assert.AreEqual(12, e.SplitY, "A6");
+		}
+		
+		[Test]
+		public void TestTabControlCancelEventArgs()
+		{
+			TabControlAction tca = TabControlAction.Deselecting;
+			TabPage tp = new TabPage("HI!");
+			int index = 477;
+			
+			TabControlCancelEventArgs e = new TabControlCancelEventArgs(tp, index, true, tca);
+			
+			Assert.AreEqual(tca, e.Action, "A1");
+			Assert.AreEqual(tp, e.TabPage, "A2");
+			Assert.AreEqual(index, e.TabPageIndex, "A3");
+			Assert.AreEqual(true, e.Cancel, "A4");
+		}
+
+		[Test]
+		public void TestTabControlEventArgs ()
+		{
+			TabControlAction tca = TabControlAction.Selected;
+			TabPage tp = new TabPage ("HI!");
+			int index = 477;
+
+			TabControlEventArgs e = new TabControlEventArgs (tp, index, tca);
+
+			Assert.AreEqual (tca, e.Action, "A1");
+			Assert.AreEqual (tp, e.TabPage, "A2");
+			Assert.AreEqual (index, e.TabPageIndex, "A3");
+		}
+		
+		[Test]
+		public void TestTableLayoutCellPaintEventArgs()
+		{
+			Rectangle bounds = new Rectangle(0, 0, 100, 200);
+			Rectangle clip = new Rectangle(50, 50, 50, 50);
+			int col = 54;
+			int row = 77;
+			Bitmap b = new Bitmap(100, 100);
+			Graphics g = Graphics.FromImage(b);
+			
+			TableLayoutCellPaintEventArgs e = new TableLayoutCellPaintEventArgs(g, clip, bounds, col, row);
+			
+			Assert.AreEqual(bounds, e.CellBounds, "A1");
+			Assert.AreEqual(col, e.Column, "A2");
+			Assert.AreEqual(row, e.Row, "A3");
+			Assert.AreEqual(g, e.Graphics, "A4");
+			Assert.AreEqual(clip, e.ClipRectangle, "A5");
+		}
+		
+		[Test]
+		public void TestToolStripDropDownClosedEventArgs()
+		{
+			ToolStripDropDownCloseReason cr = ToolStripDropDownCloseReason.CloseCalled;
+			
+			ToolStripDropDownClosedEventArgs e = new ToolStripDropDownClosedEventArgs(cr);
+			
+			Assert.AreEqual(cr, e.CloseReason, "A1");
+		}
+
+		[Test]
+		public void TestToolStripDropDownClosingEventArgs ()
+		{
+			ToolStripDropDownCloseReason cr = ToolStripDropDownCloseReason.CloseCalled;
+
+			ToolStripDropDownClosingEventArgs e = new ToolStripDropDownClosingEventArgs (cr);
+
+			Assert.AreEqual (cr, e.CloseReason, "A1");
+		}
+		
+		[Test]
+		public void TestTreeNodeMouseClickEventArgs()
+		{
+			TreeNode tn = new TreeNode("HI");
+			int clicks = 4;
+			int x = 75;
+			int y = 34;
+			MouseButtons mb = MouseButtons.Right;
+			
+			TreeNodeMouseClickEventArgs e = new TreeNodeMouseClickEventArgs(tn, mb, clicks, x, y);
+			
+			Assert.AreEqual(tn, e.Node, "A1");
+			Assert.AreEqual(clicks, e.Clicks, "A2");
+			Assert.AreEqual(x, e.X, "A3");
+			Assert.AreEqual(y, e.Y, "A4");
+			Assert.AreEqual(mb, e.Button, "A5");
+		}
+
+		[Test]
+		public void TestTreeNodeMouseHoverEventArgs ()
+		{
+			TreeNode tn = new TreeNode ("HI");
+
+			TreeNodeMouseHoverEventArgs e = new TreeNodeMouseHoverEventArgs (tn);
+
+			Assert.AreEqual (tn, e.Node, "A1");
+		}
+
+		[Test]
+		public void TestTypeValidationEventArgs()
+		{
+			bool valid = true;
+			string message = "This is a test.";
+			object rv = (object) "MyObject";
+			Type vt = typeof(int);
+			
+			TypeValidationEventArgs e = new TypeValidationEventArgs (vt, valid, rv, message);
+			
+			Assert.AreEqual(valid, e.IsValidInput, "A1");
+			Assert.AreEqual(message, e.Message, "A2");
+			Assert.AreEqual(rv, e.ReturnValue, "A3");
+			Assert.AreEqual(vt, e.ValidatingType, "A4");
+			Assert.AreEqual(false, e.Cancel, "A5");
+			
+			e.Cancel = true;
+			
+			Assert.AreEqual(true, e.Cancel, "A6");
+		}
+		
+		[Test]
+		public void TestWebBrowserDocumentCompletedEventArgs()
+		{
+			Uri url = new Uri("http://www.mono-project.com/");
+			
+			WebBrowserDocumentCompletedEventArgs e = new WebBrowserDocumentCompletedEventArgs(url);
+			
+			Assert.AreEqual(url, e.Url, "A1");
+		}
+
+		[Test]
+		public void TestWebBrowserNavigatedEventArgs ()
+		{
+			Uri url = new Uri ("http://www.mono-project.com/");
+
+			WebBrowserNavigatedEventArgs e = new WebBrowserNavigatedEventArgs (url);
+
+			Assert.AreEqual (url, e.Url, "A1");
+		}
+
+		[Test]
+		public void TestWebBrowserNavigatingEventArgs ()
+		{
+			Uri url = new Uri ("http://www.mono-project.com/");
+			string frame = "TOP";
+
+			WebBrowserNavigatingEventArgs e = new WebBrowserNavigatingEventArgs (url, frame);
+
+			Assert.AreEqual (url, e.Url, "A1");
+			Assert.AreEqual(frame, e.TargetFrameName, "A2");
+		}
+
+		[Test]
+		public void TestWebBrowserProgressChangedEventArgs ()
+		{
+			long current = 3000;
+			long max = 5000;
+
+			WebBrowserProgressChangedEventArgs e = new WebBrowserProgressChangedEventArgs (current, max);
+
+			Assert.AreEqual (current, e.CurrentProgress, "A1");
+			Assert.AreEqual (max, e.MaximumProgress, "A2");
+		}
+
+		[Test]
+		public void TestToolStripArrowRenderEventArgs ()
+		{
+			Graphics g = Graphics.FromImage(new Bitmap(5,5));
+			ToolStripItem tsi = new ToolStripButton();
+			Rectangle r = new Rectangle(0,0,10,10);
+			ToolStripArrowRenderEventArgs e = new ToolStripArrowRenderEventArgs(g,tsi,r,Color.BurlyWood, ArrowDirection.Down);
+			
+			Assert.AreEqual(g, e.Graphics, "A1");
+			Assert.AreEqual(tsi, e.Item, "A2");
+			Assert.AreEqual(r, e.ArrowRectangle, "A3");
+			Assert.AreEqual(Color.BurlyWood, e.ArrowColor, "A4");
+			Assert.AreEqual(ArrowDirection.Down, e.Direction, "A5");
+			
+			Rectangle r2 = new Rectangle(0,0,5,5);
+			
+			e.ArrowColor = Color.BlanchedAlmond;
+			e.ArrowRectangle = r2;
+			e.Direction = ArrowDirection.Right;
+
+			Assert.AreEqual (Color.BlanchedAlmond, e.ArrowColor, "A6");
+			Assert.AreEqual (r2, e.ArrowRectangle, "A7");
+			Assert.AreEqual (ArrowDirection.Right, e.Direction, "A8");
+		}
+		
+		[Test]
+		public void TestToolStripContentPanelRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStripContentPanel tscp = new ToolStripContentPanel();
+			ToolStripContentPanelRenderEventArgs e = new ToolStripContentPanelRenderEventArgs(g, tscp);
+
+			Assert.AreEqual (g, e.Graphics, "BBB1");
+			Assert.AreEqual (false, e.Handled, "BBB2");
+			Assert.AreEqual (tscp, e.ToolStripContentPanel, "BBB3");	
+			
+			e.Handled = true;
+
+			Assert.AreEqual (true, e.Handled, "BBB4");
+		}
+		
+		[Test]
+		public void TestToolStripGripRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStrip ts = new ToolStrip();
+			ToolStripGripRenderEventArgs e = new ToolStripGripRenderEventArgs(g, ts);
+
+			Assert.AreEqual (new Rectangle(2,0,3,25), e.GripBounds, "CCC1");
+			Assert.AreEqual (ToolStripGripDisplayStyle.Vertical, e.GripDisplayStyle, "CCC1");
+			Assert.AreEqual (ToolStripGripStyle.Visible, e.GripStyle, "CCC3");
+			Assert.AreEqual (g, e.Graphics, "CCC4");
+			Assert.AreEqual (ts, e.ToolStrip, "CCC5");
+	
+		}
+		
+		[Test]
+		public void TestToolStripItemClickedEventArgs()
+		{
+			ToolStripItem tsi = new ToolStripButton ();
+			ToolStripItemClickedEventArgs e = new ToolStripItemClickedEventArgs(tsi);
+
+			Assert.AreEqual (tsi, e.ClickedItem, "DDD1");
+		}
+		
+		[Test]
+		public void TestToolStripItemEventArgs()
+		{
+			ToolStripItem tsi = new ToolStripButton ();
+			ToolStripItemEventArgs e = new ToolStripItemEventArgs(tsi);
+
+			Assert.AreEqual (tsi, e.Item, "EEE1");
+		}
+		
+		[Test]
+		public void TestToolStripItemImageRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStripItem tsi = new ToolStripButton ();
+			Rectangle r = new Rectangle(0,0,16,16);
+			ToolStripItemImageRenderEventArgs e = new ToolStripItemImageRenderEventArgs(g, tsi, r);
+
+			Assert.AreEqual (g, e.Graphics, "FFF1");
+			Assert.AreEqual (tsi, e.Item, "FFF2");
+			Assert.AreEqual (r, e.ImageRectangle, "FFF3");
+			Assert.AreEqual (null, e.Image, "FFF4");
+			
+			Image i = new Bitmap(16,16);
+			e = new ToolStripItemImageRenderEventArgs (g, tsi, i, r);
+
+			Assert.AreEqual (g, e.Graphics, "FFF5");
+			Assert.AreEqual (tsi, e.Item, "FFF6");
+			Assert.AreEqual (r, e.ImageRectangle, "FFF7");
+			Assert.AreEqual (i, e.Image, "FFF8");
+		}
+		
+		[Test]
+		public void TestToolStripItemRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStripItem tsi = new ToolStripButton ();
+			ToolStripItemRenderEventArgs e = new ToolStripItemRenderEventArgs(g, tsi);
+
+			Assert.AreEqual (g, e.Graphics, "GGG1");
+			Assert.AreEqual (tsi, e.Item, "GGG2");
+			Assert.AreEqual (null, e.ToolStrip, "GGG3");
+		}
+		
+		[Test]
+		public void TestToolStripItemTextRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStripItem tsi = new ToolStripButton ();
+			string text = "Test String";
+			Rectangle r = new Rectangle(0,0,15,15);
+			Color c = Color.Bisque;
+			Font f = new Font("Arial", 12);
+			
+			ToolStripItemTextRenderEventArgs e = new ToolStripItemTextRenderEventArgs(g,tsi,text,r,c,f, ContentAlignment.BottomRight);
+
+			Assert.AreEqual (g, e.Graphics, "HHH1");
+			Assert.AreEqual (tsi, e.Item, "HHH2");
+			Assert.AreEqual (text, e.Text, "HHH3");
+			Assert.AreEqual (r, e.TextRectangle, "HHH4");
+			Assert.AreEqual (c, e.TextColor, "HHH5");
+			Assert.AreEqual (f, e.TextFont, "HHH6");
+			Assert.AreEqual (ToolStripTextDirection.Horizontal, e.TextDirection, "HHH7");
+			Assert.AreEqual (TextFormatFlags.Bottom | TextFormatFlags.Right | TextFormatFlags.HidePrefix, e.TextFormat, "HHH8");
+			Assert.AreEqual (null, e.ToolStrip, "HHH9");
+
+			e = new ToolStripItemTextRenderEventArgs (g, tsi, text, r, c, f, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
+
+			Assert.AreEqual (g, e.Graphics, "HHH10");
+			Assert.AreEqual (tsi, e.Item, "HHH11");
+			Assert.AreEqual (text, e.Text, "HHH12");
+			Assert.AreEqual (r, e.TextRectangle, "HHH13");
+			Assert.AreEqual (c, e.TextColor, "HHH14");
+			Assert.AreEqual (f, e.TextFont, "HHH15");
+			Assert.AreEqual (ToolStripTextDirection.Horizontal, e.TextDirection, "HHH16");
+			Assert.AreEqual (TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter, e.TextFormat, "HHH17");
+			Assert.AreEqual (null, e.ToolStrip, "HHH18");
+			
+			Font f2 = new Font("Tahoma", 14);
+			Rectangle r2 = new Rectangle(0,0,100,100);
+			
+			e.Text = "More Text";
+			e.TextColor = Color.Khaki;
+			e.TextDirection = ToolStripTextDirection.Vertical270;
+			e.TextFont = f2;
+			e.TextFormat = TextFormatFlags.SingleLine;
+			e.TextRectangle = r2;
+
+			Assert.AreEqual ("More Text", e.Text, "HHH19");
+			Assert.AreEqual (r2, e.TextRectangle, "HHH20");
+			Assert.AreEqual (Color.Khaki, e.TextColor, "HHH21");
+			Assert.AreEqual (f2, e.TextFont, "HHH22");
+			Assert.AreEqual (ToolStripTextDirection.Vertical270, e.TextDirection, "HHH23");
+			Assert.AreEqual (TextFormatFlags.SingleLine, e.TextFormat, "HHH24");
+		}
+		
+		[Test]
+		public void TestToolStripPanelRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStripPanel tsp = new ToolStripPanel();
+			
+			ToolStripPanelRenderEventArgs e = new ToolStripPanelRenderEventArgs(g, tsp);
+
+			Assert.AreEqual (g, e.Graphics, "III1");
+			Assert.AreEqual (false, e.Handled, "III2");
+			Assert.AreEqual (tsp, e.ToolStripPanel, "III3");
+			
+			e.Handled = true;
+
+			Assert.AreEqual (true, e.Handled, "III2");
+		}
+		
+		[Test]
+		public void TestToolStripRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStrip ts = new ToolStrip();
+			
+			ToolStripRenderEventArgs e = new ToolStripRenderEventArgs(g, ts);
+
+			Assert.AreEqual (g, e.Graphics, "JJJ1");
+			Assert.AreEqual (new Rectangle(0,0,100,25) , e.AffectedBounds, "JJJ2");
+			Assert.AreEqual (SystemColors.Control, e.BackColor, "JJJ3");
+			Assert.AreEqual (Rectangle.Empty, e.ConnectedArea, "JJJ4");
+			Assert.AreEqual (ts, e.ToolStrip, "JJJ5");
+
+			Rectangle r = new Rectangle (0, 23, 40, 100);
+			e = new ToolStripRenderEventArgs (g, ts, r, Color.DodgerBlue);
+
+			Assert.AreEqual (g, e.Graphics, "JJJ6");
+			Assert.AreEqual (r, e.AffectedBounds, "JJJ7");
+			Assert.AreEqual (Color.DodgerBlue, e.BackColor, "JJJ8");
+			Assert.AreEqual (Rectangle.Empty, e.ConnectedArea, "JJJ9");
+			Assert.AreEqual (ts, e.ToolStrip, "JJJ10");
+		}
+		
+		[Test]
+		public void TestToolStripSeparatorRenderEventArgs()
+		{
+			Graphics g = Graphics.FromImage (new Bitmap (5, 5));
+			ToolStripSeparator tss = new ToolStripSeparator();
+			
+			ToolStripSeparatorRenderEventArgs e = new ToolStripSeparatorRenderEventArgs(g, tss, true);
+
+			Assert.AreEqual (g, e.Graphics, "LLL1");
+			Assert.AreEqual (tss, e.Item, "LLL2");
+			Assert.AreEqual (true, e.Vertical, "LLL3");
+			Assert.AreEqual (null, e.ToolStrip, "LLL4");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/EventLogger.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/EventLogger.cs
@@ -1,173 +1,173 @@
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//      Rolf Bjarne Kvinge  (RKvinge@novell.com)
-//
-
-using System;
-using System.Text;
-using System.IO;
-using NUnit.Framework;
-using System.Windows.Forms;
-using System.ComponentModel;
-using System.Drawing;
-using System.Collections;
-using System.Reflection;
-using System.Reflection.Emit;
-
-namespace MonoTests.System.Windows.Forms
-{
-	public class EventLogger
-	{
-		public class EventLog : ArrayList
-		{
-			public bool PrintAdds = false;
-			
-			new public int Add (object obj)
-			{
-				if (PrintAdds)
-					Console.WriteLine ("{1} EventLog: {0}", obj, DateTime.Now.ToLongTimeString ());
-				return base.Add (obj);
-			}
-		}
-	
-		private EventLog log;
-		private object instance;
-
-		public bool PrintAdds {
-			get { return log.PrintAdds; }
-			set { log.PrintAdds = value; }
-		}
-
-		// Tests if all the names in Names are in log with the order given in Names.
-		public bool ContainsEventsOrdered (params string [] Names) 
-		{
-			if (Names.Length == 0)
-				return true;
-		
-			int n = 0;
-			for (int i = 0; i < log.Count; i++) {
-				if ((string) log [i] == Names [n]) {
-					n++;
-					if (n == Names.Length)
-						return true;
-				}
-			}
-			
-			if (n == Names.Length) {
-				return true;
-			} else {
-				Console.WriteLine ("ContainsEventsOrdered: logged events '" + EventsJoined () + "' didn't match correct events '" + string.Join (";", Names) + "'");
-				return false;
-			}
-		}
-		
-		public int CountEvents (string Name)
-		{
-			int count = 0;
-			foreach (string str in log) {
-				if (Name.Equals (str)) {
-					count++;	
-				}
-			}
-			return count;
-		}
-		
-		public bool EventRaised (string Name) 
-		{
-			return log.Contains (Name);
-		}
-		
-		public int EventsRaised {
-			get {
-				return log.Count;
-			}
-		}
-
-		public string EventsJoined ()
-		{
-			return EventsJoined (";");
-		}
-		
-		public string EventsJoined (string separator)
-		{
-			return string.Join (";", ToArray ());
-		}
-		
-		public void Clear ()
-		{
-			log.Clear ();
-		}
-		
-		public string [] ToArray ()
-		{
-			string [] result = new string [log.Count];
-			log.CopyTo (result);
-			return result;
-		}
-		
-		public EventLogger (object item)
-		{
-			if (item == null) {
-				throw new ArgumentNullException ("item");
-			}
-
-			log = new EventLog ();
-			
-			Type itemType = item.GetType ();
-			AssemblyName name = new AssemblyName ();
-			name.Name = "EventLoggerAssembly";
-			AssemblyBuilder assembly = AppDomain.CurrentDomain.DefineDynamicAssembly (name, AssemblyBuilderAccess.RunAndSave);
-			ModuleBuilder module = assembly.DefineDynamicModule ("EventLoggerAssembly", "EventLoggerAssembly.dll");
-			
-			Type ListType = log.GetType ();
-			
-			TypeBuilder logType = module.DefineType ("Logger");
-			FieldBuilder logField = logType.DefineField ("log", ListType, FieldAttributes.Public);
-			ConstructorBuilder logCtor = logType.DefineConstructor (MethodAttributes.Public, CallingConventions.HasThis, new Type [] {ListType, itemType});
-			logCtor.DefineParameter (1, ParameterAttributes.None, "test");
-			logCtor.DefineParameter (2, ParameterAttributes.None, "obj");
-			ILGenerator logIL = logCtor.GetILGenerator ();
-
-			logIL.Emit (OpCodes.Ldarg_0);
-			logIL.Emit (OpCodes.Call, typeof (object).GetConstructor (Type.EmptyTypes));
-
-			logIL.Emit (OpCodes.Ldarg_0);
-			logIL.Emit (OpCodes.Ldarg_1);
-			logIL.Emit (OpCodes.Stfld, logField);
-
-			
-			foreach (EventInfo Event in itemType.GetEvents ()) {
-				ILGenerator il;
-
-				MethodInfo invoke = Event.EventHandlerType.GetMethod ("Invoke");
-				MethodBuilder method = logType.DefineMethod (Event.Name, MethodAttributes.Public, null, new Type [] { invoke.GetParameters () [0].ParameterType, invoke.GetParameters () [1].ParameterType });
-				method.DefineParameter (1, ParameterAttributes.None, "test");
-				method.DefineParameter (2, ParameterAttributes.None, "test2");
-				il = method.GetILGenerator ();
-				il.Emit (OpCodes.Ldarg_0);
-				il.Emit (OpCodes.Ldfld, logField);
-				il.Emit (OpCodes.Ldstr, Event.Name);
-				il.Emit (OpCodes.Callvirt, ListType.GetMethod ("Add"));
-				il.Emit (OpCodes.Pop);
-				il.Emit (OpCodes.Ret);
-				
-				logIL.Emit (OpCodes.Ldarg_2);
-				logIL.Emit (OpCodes.Ldarg_0);
-				logIL.Emit (OpCodes.Dup);
-				logIL.Emit (OpCodes.Ldvirtftn, method);
-				logIL.Emit (OpCodes.Newobj, Event.EventHandlerType.GetConstructor (new Type [] {typeof(object), typeof(IntPtr)}));
-				logIL.Emit (OpCodes.Call, Event.GetAddMethod ());
-			}
-
-			logIL.Emit (OpCodes.Ret);		
-			Type builtLogType = logType.CreateType ();
-			
-			instance = builtLogType.GetConstructors () [0].Invoke (new object [] { log, item });
-			TestHelper.RemoveWarning (instance);
-			
-			//assembly.Save ("EventLoggerAssembly.dll");
-		}
-	}
-}
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//      Rolf Bjarne Kvinge  (RKvinge@novell.com)
+//
+
+using System;
+using System.Text;
+using System.IO;
+using NUnit.Framework;
+using System.Windows.Forms;
+using System.ComponentModel;
+using System.Drawing;
+using System.Collections;
+using System.Reflection;
+using System.Reflection.Emit;
+
+namespace MonoTests.System.Windows.Forms
+{
+	public class EventLogger
+	{
+		public class EventLog : ArrayList
+		{
+			public bool PrintAdds = false;
+			
+			new public int Add (object obj)
+			{
+				if (PrintAdds)
+					Console.WriteLine ("{1} EventLog: {0}", obj, DateTime.Now.ToLongTimeString ());
+				return base.Add (obj);
+			}
+		}
+	
+		private EventLog log;
+		private object instance;
+
+		public bool PrintAdds {
+			get { return log.PrintAdds; }
+			set { log.PrintAdds = value; }
+		}
+
+		// Tests if all the names in Names are in log with the order given in Names.
+		public bool ContainsEventsOrdered (params string [] Names) 
+		{
+			if (Names.Length == 0)
+				return true;
+		
+			int n = 0;
+			for (int i = 0; i < log.Count; i++) {
+				if ((string) log [i] == Names [n]) {
+					n++;
+					if (n == Names.Length)
+						return true;
+				}
+			}
+			
+			if (n == Names.Length) {
+				return true;
+			} else {
+				Console.WriteLine ("ContainsEventsOrdered: logged events '" + EventsJoined () + "' didn't match correct events '" + string.Join (";", Names) + "'");
+				return false;
+			}
+		}
+		
+		public int CountEvents (string Name)
+		{
+			int count = 0;
+			foreach (string str in log) {
+				if (Name.Equals (str)) {
+					count++;	
+				}
+			}
+			return count;
+		}
+		
+		public bool EventRaised (string Name) 
+		{
+			return log.Contains (Name);
+		}
+		
+		public int EventsRaised {
+			get {
+				return log.Count;
+			}
+		}
+
+		public string EventsJoined ()
+		{
+			return EventsJoined (";");
+		}
+		
+		public string EventsJoined (string separator)
+		{
+			return string.Join (";", ToArray ());
+		}
+		
+		public void Clear ()
+		{
+			log.Clear ();
+		}
+		
+		public string [] ToArray ()
+		{
+			string [] result = new string [log.Count];
+			log.CopyTo (result);
+			return result;
+		}
+		
+		public EventLogger (object item)
+		{
+			if (item == null) {
+				throw new ArgumentNullException ("item");
+			}
+
+			log = new EventLog ();
+			
+			Type itemType = item.GetType ();
+			AssemblyName name = new AssemblyName ();
+			name.Name = "EventLoggerAssembly";
+			AssemblyBuilder assembly = AppDomain.CurrentDomain.DefineDynamicAssembly (name, AssemblyBuilderAccess.RunAndSave);
+			ModuleBuilder module = assembly.DefineDynamicModule ("EventLoggerAssembly", "EventLoggerAssembly.dll");
+			
+			Type ListType = log.GetType ();
+			
+			TypeBuilder logType = module.DefineType ("Logger");
+			FieldBuilder logField = logType.DefineField ("log", ListType, FieldAttributes.Public);
+			ConstructorBuilder logCtor = logType.DefineConstructor (MethodAttributes.Public, CallingConventions.HasThis, new Type [] {ListType, itemType});
+			logCtor.DefineParameter (1, ParameterAttributes.None, "test");
+			logCtor.DefineParameter (2, ParameterAttributes.None, "obj");
+			ILGenerator logIL = logCtor.GetILGenerator ();
+
+			logIL.Emit (OpCodes.Ldarg_0);
+			logIL.Emit (OpCodes.Call, typeof (object).GetConstructor (Type.EmptyTypes));
+
+			logIL.Emit (OpCodes.Ldarg_0);
+			logIL.Emit (OpCodes.Ldarg_1);
+			logIL.Emit (OpCodes.Stfld, logField);
+
+			
+			foreach (EventInfo Event in itemType.GetEvents ()) {
+				ILGenerator il;
+
+				MethodInfo invoke = Event.EventHandlerType.GetMethod ("Invoke");
+				MethodBuilder method = logType.DefineMethod (Event.Name, MethodAttributes.Public, null, new Type [] { invoke.GetParameters () [0].ParameterType, invoke.GetParameters () [1].ParameterType });
+				method.DefineParameter (1, ParameterAttributes.None, "test");
+				method.DefineParameter (2, ParameterAttributes.None, "test2");
+				il = method.GetILGenerator ();
+				il.Emit (OpCodes.Ldarg_0);
+				il.Emit (OpCodes.Ldfld, logField);
+				il.Emit (OpCodes.Ldstr, Event.Name);
+				il.Emit (OpCodes.Callvirt, ListType.GetMethod ("Add"));
+				il.Emit (OpCodes.Pop);
+				il.Emit (OpCodes.Ret);
+				
+				logIL.Emit (OpCodes.Ldarg_2);
+				logIL.Emit (OpCodes.Ldarg_0);
+				logIL.Emit (OpCodes.Dup);
+				logIL.Emit (OpCodes.Ldvirtftn, method);
+				logIL.Emit (OpCodes.Newobj, Event.EventHandlerType.GetConstructor (new Type [] {typeof(object), typeof(IntPtr)}));
+				logIL.Emit (OpCodes.Call, Event.GetAddMethod ());
+			}
+
+			logIL.Emit (OpCodes.Ret);		
+			Type builtLogType = logType.CreateType ();
+			
+			instance = builtLogType.GetConstructors () [0].Invoke (new object [] { log, item });
+			TestHelper.RemoveWarning (instance);
+			
+			//assembly.Save ("EventLoggerAssembly.dll");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/FlowPanelTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/FlowPanelTests.cs
@@ -1,1643 +1,1643 @@
-using System;
-using System.Text;
-using NUnit.Framework;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Collections.Generic;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture()]	
-	public class FlowPanelTests : TestHelper
-	{
-		[Test]
-		public void TestConstruction()
-		{
-			FlowLayoutPanel p = new FlowLayoutPanel();
-			
-			Assert.AreEqual(FlowDirection.LeftToRight, p.FlowDirection, "A1");
-			Assert.AreEqual(true, p.WrapContents, "A2");
-			Assert.AreEqual("System.Windows.Forms.Layout.FlowLayout", p.LayoutEngine.ToString(), "A3");
-			
-			p.FlowDirection = FlowDirection.BottomUp;
-			p.WrapContents = false;
-
-			Assert.AreEqual (FlowDirection.BottomUp, p.FlowDirection, "A4");
-			Assert.AreEqual (false, p.WrapContents, "A5");
-		}
-		
-		[Test]
-		public void TestExtenderProvider()
-		{
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			Button b = new Button();
-			
-			Assert.AreEqual(false, p.GetFlowBreak(b), "B1");
-			
-			p.SetFlowBreak(b, true);
-
-			Assert.AreEqual (true, p.GetFlowBreak (b), "B2");
-		}
-
-		#region LeftToRight Tests
-		[Test]
-		public void LeftToRightLayoutTest1 ()
-		{
-			// 2 Normal Buttons
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "C1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "C2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest2 ()
-		{
-			// Dock Fill and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "D1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "D2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest3 ()
-		{
-			// Anchored: Top/Bottom and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "E1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "E2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest4 ()
-		{
-			// Anchored: Top/Bottom and Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "F1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "F2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest5 ()
-		{
-			// 2 Anchored: Top/Bottom
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "G1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "G2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest6 ()
-		{
-			// 2 Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "H1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "H2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest7 ()
-		{
-			// Dock Top
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Top, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "I1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "I2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest8 ()
-		{
-			// Dock Bottom
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Bottom, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 50, 100, 50), p.Controls[0].Bounds, "J1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "J2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest9 ()
-		{
-			// Anchor Bottom
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 50, 100, 50), p.Controls[0].Bounds, "K1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "K2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest10 ()
-		{
-			// No Dock or Anchor
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.None));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 25, 100, 50), p.Controls[0].Bounds, "L1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "L2");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest11 ()
-		{
-			// WrapContents = true
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "M1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "M2");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[2].Bounds, "M3");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[3].Bounds, "M4");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest12 ()
-		{
-			// WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.WrapContents = false;
-			
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "N1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "N2");
-			Assert.AreEqual (new Rectangle (200, 0, 100, 100), p.Controls[2].Bounds, "N3");
-			Assert.AreEqual (new Rectangle (300, 0, 100, 100), p.Controls[3].Bounds, "N4");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest13 ()
-		{
-			// SetFlowBreak 1, 3
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-			
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "O1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "O2");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "O3");
-			Assert.AreEqual (new Rectangle (0, 200, 100, 100), p.Controls[3].Bounds, "O4");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest14 ()
-		{
-			// Margins
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1,3,5,2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7,3,12,5), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14,7,1,3), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (1, 3, 50, 50), p.Controls[0].Bounds, "P1");
-			Assert.AreEqual (new Rectangle (63, 3, 50, 50), p.Controls[1].Bounds, "P2");
-			Assert.AreEqual (new Rectangle (139, 7, 50, 50), p.Controls[2].Bounds, "P3");
-			Assert.AreEqual (new Rectangle (4, 64, 50, 50), p.Controls[3].Bounds, "P4");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest15 ()
-		{
-			// Margins and Different Sizes
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "Q1");
-			Assert.AreEqual (new Rectangle (46, 9, 60, 20), p.Controls[1].Bounds, "Q2");
-			Assert.AreEqual (new Rectangle (117, 2, 15, 85), p.Controls[2].Bounds, "Q3");
-			Assert.AreEqual (new Rectangle (138, 4, 50, 20), p.Controls[3].Bounds, "Q4");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest16 ()
-		{
-			// Random Complex Layout 1
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Top, new Padding (6), AnchorStyles.None));
-
-			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "R1");
-			Assert.AreEqual (new Rectangle (46, 9, 60, 39), p.Controls[1].Bounds, "R2");
-			Assert.AreEqual (new Rectangle (117, 2, 15, 53), p.Controls[2].Bounds, "R3");
-			Assert.AreEqual (new Rectangle (138, 33, 50, 20), p.Controls[3].Bounds, "R4");
-			Assert.AreEqual (new Rectangle (12, 69, 13, 22), p.Controls[4].Bounds, "R5");
-			Assert.AreEqual (new Rectangle (43, 63, 73, 28), p.Controls[5].Bounds, "R6");
-		}
-
-		[Test]
-		public void LeftToRightLayoutTest17 ()
-		{
-			// Random Complex Layout 2
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-
-			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Bottom, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Top, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Top, new Padding (3, 3, 3, 1), AnchorStyles.None));
-			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Top | AnchorStyles.Bottom));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-
-			Assert.AreEqual (new Rectangle (1, 2, 12, 345), p.Controls[0].Bounds, "S1");
-			Assert.AreEqual (new Rectangle (6, 354, 9, 44), p.Controls[1].Bounds, "S2");
-			Assert.AreEqual (new Rectangle (22, 352, 78, 49), p.Controls[2].Bounds, "S3");
-			Assert.AreEqual (new Rectangle (3, 408, 21, 64), p.Controls[3].Bounds, "S4");
-			Assert.AreEqual (new Rectangle (38, 409, 14, 61), p.Controls[4].Bounds, "S5");
-			Assert.AreEqual (new Rectangle (63, 410, 132, 58), p.Controls[5].Bounds, "S6");
-		}
-		
-		[Test]
-		public void LeftToRightLayoutTest18 ()
-		{
-			// SetFlowBreak has no effect when WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.WrapContents = false;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak(p.Controls[0], true);
-			
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "T1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "T2");
-		}
-		#endregion
-
-		#region RightToLeft Tests
-		[Test]
-		public void RightToLeftLayoutTest1 ()
-		{
-			// 2 Normal Buttons
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-			
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AC1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AC2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest2 ()
-		{
-			// Dock Fill and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AD1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AD2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest3 ()
-		{
-			// Anchored: Top/Bottom and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AE1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AE2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest4 ()
-		{
-			// Anchored: Top/Bottom and Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AF1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AF2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest5 ()
-		{
-			// 2 Anchored: Top/Bottom
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AG1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AG2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest6 ()
-		{
-			// 2 Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AH1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AH2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest7 ()
-		{
-			// Dock Top
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Top, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AI1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AI2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest8 ()
-		{
-			// Dock Bottom
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Bottom, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 50, 100, 50), p.Controls[0].Bounds, "AJ1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AJ2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest9 ()
-		{
-			// Anchor Bottom
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 50, 100, 50), p.Controls[0].Bounds, "AK1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AK2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest10 ()
-		{
-			// No Dock or Anchor
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.None));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 25, 100, 50), p.Controls[0].Bounds, "AL1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AL2");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest11 ()
-		{
-			// WrapContents = true
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AM1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AM2");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "AM3");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[3].Bounds, "AM4");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest12 ()
-		{
-			// WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.WrapContents = false;
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AN1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AN2");
-			Assert.AreEqual (new Rectangle (-100, 0, 100, 100), p.Controls[2].Bounds, "AN3");
-			Assert.AreEqual (new Rectangle (-200, 0, 100, 100), p.Controls[3].Bounds, "AN4");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest13 ()
-		{
-			// SetFlowBreak 1, 3
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AO1");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[1].Bounds, "AO2");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[2].Bounds, "AO3");
-			Assert.AreEqual (new Rectangle (100, 200, 100, 100), p.Controls[3].Bounds, "AO4");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest14 ()
-		{
-			// Margins
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (145, 3, 50, 50), p.Controls[0].Bounds, "AP1");
-			Assert.AreEqual (new Rectangle (82, 3, 50, 50), p.Controls[1].Bounds, "AP2");
-			Assert.AreEqual (new Rectangle (24, 7, 50, 50), p.Controls[2].Bounds, "AP3");
-			Assert.AreEqual (new Rectangle (146, 64, 50, 50), p.Controls[3].Bounds, "AP4");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest15 ()
-		{
-			// Margins and Different Sizes
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (169, 6, 25, 45), p.Controls[0].Bounds, "AQ1");
-			Assert.AreEqual (new Rectangle (94, 9, 60, 20), p.Controls[1].Bounds, "AQ2");
-			Assert.AreEqual (new Rectangle (68, 2, 15, 85), p.Controls[2].Bounds, "AQ3");
-			Assert.AreEqual (new Rectangle (12, 4, 50, 20), p.Controls[3].Bounds, "AQ4");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest16 ()
-		{
-			// Random Complex Layout 1
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Top, new Padding (6), AnchorStyles.None));
-
-			Assert.AreEqual (new Rectangle (169, 6, 25, 45), p.Controls[0].Bounds, "AR1");
-			Assert.AreEqual (new Rectangle (94, 9, 60, 39), p.Controls[1].Bounds, "AR2");
-			Assert.AreEqual (new Rectangle (68, 2, 15, 53), p.Controls[2].Bounds, "AR3");
-			Assert.AreEqual (new Rectangle (12, 33, 50, 20), p.Controls[3].Bounds, "AR4");
-			Assert.AreEqual (new Rectangle (175, 69, 13, 22), p.Controls[4].Bounds, "AR5");
-			Assert.AreEqual (new Rectangle (84, 63, 73, 28), p.Controls[5].Bounds, "AR6");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest17 ()
-		{
-			// Random Complex Layout 2
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Bottom, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Top, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Top, new Padding (3, 3, 3, 1), AnchorStyles.None));
-			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Top | AnchorStyles.Bottom));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-
-			Assert.AreEqual (new Rectangle (185, 2, 12, 345), p.Controls[0].Bounds, "AS1");
-			Assert.AreEqual (new Rectangle (189, 354, 9, 44), p.Controls[1].Bounds, "AS2");
-			Assert.AreEqual (new Rectangle (103, 352, 78, 49), p.Controls[2].Bounds, "AS3");
-			Assert.AreEqual (new Rectangle (176, 408, 21, 64), p.Controls[3].Bounds, "AS4");
-			Assert.AreEqual (new Rectangle (153, 409, 14, 61), p.Controls[4].Bounds, "AS5");
-			Assert.AreEqual (new Rectangle (6, 410, 132, 58), p.Controls[5].Bounds, "AS6");
-		}
-
-		[Test]
-		public void RightToLeftLayoutTest18 ()
-		{
-			// SetFlowBreak has no effect when WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.WrapContents = false;
-			p.FlowDirection = FlowDirection.RightToLeft;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak (p.Controls[0], true);
-
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AT1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AT2");
-		}
-		#endregion
-
-		#region TopDown Tests
-		[Test]
-		public void TopDownLayoutTest1 ()
-		{
-			// 2 Normal Buttons
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BC1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BC2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest2 ()
-		{
-			// Dock Fill and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BD1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BD2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest3 ()
-		{
-			// Anchored: Left/Right and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BE1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BE2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest4 ()
-		{
-			// Anchored: Left/Right and Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BF1");
-			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BF2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest5 ()
-		{
-			// 2 Anchored: Left/Right
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-
-			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BG1");
-			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BG2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest6 ()
-		{
-			// 2 Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BH1");
-			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BH2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest7 ()
-		{
-			// Dock Left
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Left, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BI1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BI2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest8 ()
-		{
-			// Dock Right
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Right, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (50, 0, 50, 100), p.Controls[0].Bounds, "BJ1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BJ2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest9 ()
-		{
-			// Anchor Right
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Left));
-
-			Assert.AreEqual (new Rectangle (50, 0, 50, 100), p.Controls[0].Bounds, "BK1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BK2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest10 ()
-		{
-			// No Dock or Anchor
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.None));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (25, 0, 50, 100), p.Controls[0].Bounds, "BL1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BL2");
-		}
-
-		[Test]
-		public void TopDownLayoutTest11 ()
-		{
-			// WrapContents = true
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BM1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BM2");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[2].Bounds, "BM3");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[3].Bounds, "BM4");
-		}
-
-		[Test]
-		public void TopDownLayoutTest12 ()
-		{
-			// WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.WrapContents = false;
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BN1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BN2");
-			Assert.AreEqual (new Rectangle (0, 200, 100, 100), p.Controls[2].Bounds, "BN3");
-			Assert.AreEqual (new Rectangle (0, 300, 100, 100), p.Controls[3].Bounds, "BN4");
-		}
-
-		[Test]
-		public void TopDownLayoutTest13 ()
-		{
-			// SetFlowBreak 1, 3
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BO1");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "BO2");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "BO3");
-			Assert.AreEqual (new Rectangle (200, 0, 100, 100), p.Controls[3].Bounds, "BO4");
-		}
-
-		[Test]
-		public void TopDownLayoutTest14 ()
-		{
-			// Margins
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (1, 3, 50, 50), p.Controls[0].Bounds, "BP1");
-			Assert.AreEqual (new Rectangle (7, 58, 50, 50), p.Controls[1].Bounds, "BP2");
-			Assert.AreEqual (new Rectangle (14, 120, 50, 50), p.Controls[2].Bounds, "BP3");
-			Assert.AreEqual (new Rectangle (73, 4, 50, 50), p.Controls[3].Bounds, "BP4");
-		}
-
-		[Test]
-		public void TopDownLayoutTest15 ()
-		{
-			// Margins and Different Sizes
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "BQ1");
-			Assert.AreEqual (new Rectangle (9, 66, 60, 20), p.Controls[1].Bounds, "BQ2");
-			Assert.AreEqual (new Rectangle (2, 97, 15, 85), p.Controls[2].Bounds, "BQ3");
-			Assert.AreEqual (new Rectangle (82, 4, 50, 20), p.Controls[3].Bounds, "BQ4");
-		}
-
-		[Test]
-		public void TopDownLayoutTest16 ()
-		{
-			// Random Complex Layout 1
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Left, new Padding (6), AnchorStyles.None));
-
-			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "BR1");
-			Assert.AreEqual (new Rectangle (9, 66, 19, 20), p.Controls[1].Bounds, "BR2");
-			Assert.AreEqual (new Rectangle (2, 97, 15, 85), p.Controls[2].Bounds, "BR3");
-			Assert.AreEqual (new Rectangle (41, 4, 50, 20), p.Controls[3].Bounds, "BR4");
-			Assert.AreEqual (new Rectangle (49, 40, 61, 22), p.Controls[4].Bounds, "BR5");
-			Assert.AreEqual (new Rectangle (43, 80, 73, 28), p.Controls[5].Bounds, "BR6");
-		}
-
-		[Test]
-		public void TopDownLayoutTest17 ()
-		{
-			// Random Complex Layout 2
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Right, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Left, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Left, new Padding (3, 3, 3, 1), AnchorStyles.None));
-			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Left | AnchorStyles.Right));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-
-			Assert.AreEqual (new Rectangle (1, 2, 12, 345), p.Controls[0].Bounds, "BS1");
-			Assert.AreEqual (new Rectangle (22, 3, 9, 44), p.Controls[1].Bounds, "BS2");
-			Assert.AreEqual (new Rectangle (21, 55, 10, 14), p.Controls[2].Bounds, "BS3");
-			Assert.AreEqual (new Rectangle (36, 3, 21, 64), p.Controls[3].Bounds, "BS4");
-			Assert.AreEqual (new Rectangle (44, 72, 10, 14), p.Controls[4].Bounds, "BS5");
-			Assert.AreEqual (new Rectangle (38, 94, 18, 6), p.Controls[5].Bounds, "BS6");
-		}
-
-		[Test]
-		public void TopDownLayoutTest18 ()
-		{
-			// SetFlowBreak has no effect when WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.WrapContents = false;
-			p.FlowDirection = FlowDirection.TopDown;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak (p.Controls[0], true);
-
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BT1");
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BT2");
-		}
-		#endregion
-
-		#region BottomUp Tests
-		[Test]
-		public void BottomUpLayoutTest1 ()
-		{
-			// 2 Normal Buttons
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CC1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CC2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest2 ()
-		{
-			// Dock Fill and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CD1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CD2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest3 ()
-		{
-			// Anchored: Left/Right and Normal
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CE1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CE2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest4 ()
-		{
-			// Anchored: Left/Right and Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CF1");
-			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CF2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest5 ()
-		{
-			// 2 Anchored: Left/Right
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
-
-			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CG1");
-			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CG2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest6 ()
-		{
-			// 2 Dock Fill
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CH1");
-			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CH2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest7 ()
-		{
-			// Dock Left
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Left, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CI1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CI2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest8 ()
-		{
-			// Dock Right
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Right, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (50, 100, 50, 100), p.Controls[0].Bounds, "CJ1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CJ2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest9 ()
-		{
-			// Anchor Right
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Left));
-
-			Assert.AreEqual (new Rectangle (50, 100, 50, 100), p.Controls[0].Bounds, "CK1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CK2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest10 ()
-		{
-			// No Dock or Anchor
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.None));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (25, 100, 50, 100), p.Controls[0].Bounds, "CL1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CL2");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest11 ()
-		{
-			// WrapContents = true
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CM1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CM2");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "CM3");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[3].Bounds, "CM4");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest12 ()
-		{
-			// WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.WrapContents = false;
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CN1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CN2");
-			Assert.AreEqual (new Rectangle (0, -100, 100, 100), p.Controls[2].Bounds, "CN3");
-			Assert.AreEqual (new Rectangle (0, -200, 100, 100), p.Controls[3].Bounds, "CN4");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest13 ()
-		{
-			// SetFlowBreak 1, 3
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CO1");
-			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[1].Bounds, "CO2");
-			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[2].Bounds, "CO3");
-			Assert.AreEqual (new Rectangle (200, 100, 100, 100), p.Controls[3].Bounds, "CO4");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest14 ()
-		{
-			// Margins
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (1, 148, 50, 50), p.Controls[0].Bounds, "CP1");
-			Assert.AreEqual (new Rectangle (7, 90, 50, 50), p.Controls[1].Bounds, "CP2");
-			Assert.AreEqual (new Rectangle (14, 34, 50, 50), p.Controls[2].Bounds, "CP3");
-			Assert.AreEqual (new Rectangle (73, 146, 50, 50), p.Controls[3].Bounds, "CP4");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest15 ()
-		{
-			// Margins and Different Sizes
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
-
-			Assert.AreEqual (new Rectangle (6, 149, 25, 45), p.Controls[0].Bounds, "CQ1");
-			Assert.AreEqual (new Rectangle (9, 114, 60, 20), p.Controls[1].Bounds, "CQ2");
-			Assert.AreEqual (new Rectangle (2, 18, 15, 85), p.Controls[2].Bounds, "CQ3");
-			Assert.AreEqual (new Rectangle (82, 176, 50, 20), p.Controls[3].Bounds, "CQ4");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest16 ()
-		{
-			// Random Complex Layout 1
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
-			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Left, new Padding (6), AnchorStyles.None));
-
-			Assert.AreEqual (new Rectangle (6, 149, 25, 45), p.Controls[0].Bounds, "CR1");
-			Assert.AreEqual (new Rectangle (9, 114, 19, 20), p.Controls[1].Bounds, "CR2");
-			Assert.AreEqual (new Rectangle (2, 18, 15, 85), p.Controls[2].Bounds, "CR3");
-			Assert.AreEqual (new Rectangle (41, 176, 50, 20), p.Controls[3].Bounds, "CR4");
-			Assert.AreEqual (new Rectangle (49, 138, 61, 22), p.Controls[4].Bounds, "CR5");
-			Assert.AreEqual (new Rectangle (43, 92, 73, 28), p.Controls[5].Bounds, "CR6");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest17 ()
-		{
-			// Random Complex Layout 2
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Right, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Left, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Left, new Padding (3, 3, 3, 1), AnchorStyles.None));
-			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Left | AnchorStyles.Right));
-			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Left | AnchorStyles.Right));
-
-			p.SetFlowBreak (p.Controls[0], true);
-			p.SetFlowBreak (p.Controls[2], true);
-
-			Assert.AreEqual (new Rectangle (1, -149, 12, 345), p.Controls[0].Bounds, "CS1");
-			Assert.AreEqual (new Rectangle (22, 149, 9, 44), p.Controls[1].Bounds, "CS2");
-			Assert.AreEqual (new Rectangle (21, 128, 10, 14), p.Controls[2].Bounds, "CS3");
-			Assert.AreEqual (new Rectangle (36, 135, 21, 64), p.Controls[3].Bounds, "CS4");
-			Assert.AreEqual (new Rectangle (44, 115, 10, 14), p.Controls[4].Bounds, "CS5");
-			Assert.AreEqual (new Rectangle (38, 100, 18, 6), p.Controls[5].Bounds, "CS6");
-		}
-
-		[Test]
-		public void BottomUpLayoutTest18 ()
-		{
-			// SetFlowBreak has no effect when WrapContents = false
-			FlowLayoutPanel p = new FlowLayoutPanel ();
-			p.Size = new Size (100, 200);
-			p.WrapContents = false;
-			p.FlowDirection = FlowDirection.BottomUp;
-
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
-
-			p.SetFlowBreak (p.Controls[0], true);
-
-			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CT1");
-			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CT2");
-		}
-		#endregion
-
-		private Button CreateButton (int width, int height, bool autosize, DockStyle dock, Padding margin, AnchorStyles anchor)
-		{
-			Button b = new Button ();
-			b.Size = new Size(width, height);
-			b.AutoSize = autosize;
-			b.Anchor = anchor;
-			b.Dock = dock;
-			b.Margin = margin;
-			
-			return b;
-		}
-
-		#region PreferredSize
-		[Test]
-		public void PreferredSize ()
-		{
-			FlowLayoutPanel panel = new FlowLayoutPanel ();
-			panel.Controls.AddRange (new Control [] { new PreferredSizeControl (), new PreferredSizeControl () });
-			Assert.AreEqual (new Size (212, 106), panel.PreferredSize, "1");
-			Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (150, 150)), "2");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1000, 1000)) , "3");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 0)), "4");
-			Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (1, 1)), "5");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 150)), "6");
-			Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (150, 0)), "7");
-			panel.WrapContents = false;
-			Assert.AreEqual (new Size (212, 106), panel.PreferredSize, "1, WrapContents");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (150, 150)), "2, WrapContents");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1000, 1000)) , "3, WrapContents");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 0)), "4, WrapContents");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1, 1)), "5, WrapContents");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 150)), "6, WrapContents");
-			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (150, 0)), "7, WrapContents");
-		}
-
-		class PreferredSizeControl : Control
-		{
-			protected override Size DefaultSize {
-				get {
-					return new Size (100, 100);
-				}
-			}
-		}
-		#endregion
-		
-		[Test]
-		public void Padding ()
-		{
-			Form f = new Form ();
-			
-			FlowLayoutPanel flp = new FlowLayoutPanel ();
-			flp.Padding = new Padding (20);
-			flp.Size = new Size (100, 100);
-
-			Button b = new Button ();
-			b.Size = new Size (50, 50);
-
-			Button b2 = new Button ();
-			b2.Size = new Size (50, 50);
-
-			flp.Controls.Add (b);
-			flp.Controls.Add (b2);
-
-			f.Controls.Add (flp);
-			
-			Assert.AreEqual (new Rectangle (23, 23, 50, 50), b.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (23, 79, 50, 50), b2.Bounds, "A2");
-		}
-	}
-
-	[TestFixture]
-	public class FlowPanelTests_AutoSize: TestHelper
-	{
-		private Form f;
-		protected override void SetUp ()
-		{
-			base.SetUp ();
-			f = new Form ();
-			f.AutoSize = false;
-			f.ClientSize = new Size (100, 300);
-			f.ShowInTaskbar = false;
-			f.Show ();
-		}
-
-		protected override void TearDown ()
-		{
-			f.Dispose ();
-			base.TearDown ();
-		}
-
-		[Test]
-		public void AutoSizeGrowOnly_ResizeIfLarger ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle (5, 5, 10, 10);
-			panel.Dock = DockStyle.None;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add (panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (192, panel.Width, "1"); // 2 * 90 + 4 * 3 margin
-			Assert.AreEqual (25, panel.Height, "2");
-		}
-
-		[Test]
-		public void AutoSizeGrowOnly_ResizeIfLarger_DockBottom ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle (5, 5, 10, 10);
-			panel.Dock = DockStyle.Bottom;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add (panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (250, panel.Top, "1");
-			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
-			Assert.AreEqual (50, panel.Height, "3");
-		}
-
-		[Test]
-		public void AutoSizeGrowOnly_DontResizeIfSmaller ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle(5, 5, 100, 100);
-			panel.Dock = DockStyle.None;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add (panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (100, panel.Width, "1");
-			Assert.AreEqual (100, panel.Height, "2");
-		}
-
-		[Test]
-		public void AutoSizeGrowOnly_ResizeIfSmaller_DockTop ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle(5, 5, 100, 100);
-			panel.Dock = DockStyle.Top;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add(panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (0, panel.Top, "1");
-			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
-			Assert.AreEqual (25, panel.Height, "3");
-		}
-
-		[Test]
-		public void AutoSizeGrowOnly_ResizeIfSmaller_DockBottom ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle(5, 5, 100, 100);
-			panel.Dock = DockStyle.Bottom;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add(panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (275, panel.Top, "1");
-			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
-			Assert.AreEqual (25, panel.Height, "3");
-		}
-
-		[Test]
-		public void AutoSizeGrowOnly_ResizeIfSmaller_DockLeft ()
-		{
-			f.ClientSize = new Size (300, 100);
-
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle(5, 5, 100, 100);
-			panel.Dock = DockStyle.Left;
-
-			var c = new Label ();
-			c.Size = new Size (25, 90);
-			panel.Controls.Add (c);
-			f.Controls.Add(panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (0, panel.Left, "1");
-			Assert.AreEqual (f.ClientRectangle.Height, panel.Height, "2");
-			Assert.AreEqual (31, panel.Width, "3"); // 25 + 2*3 margin
-		}
-
-		[Test]
-		public void AutoSizeGrowOnly_ResizeIfSmaller_DockRight ()
-		{
-			f.ClientSize = new Size (300, 100);
-
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle(5, 5, 100, 100);
-			panel.Dock = DockStyle.Right;
-
-			var c = new Label ();
-			c.Size = new Size (25, 90);
-			panel.Controls.Add (c);
-			f.Controls.Add(panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (269, panel.Left, "1");
-			Assert.AreEqual (f.ClientRectangle.Height, panel.Height, "2");
-			Assert.AreEqual (31, panel.Width, "3"); // 25 + 2*3 margin
-		}
-
-		[Test]
-		public void AutoSizeGrowAndShrink_ResizeIfSmaller ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle (5, 5, 100, 100);
-			panel.Dock = DockStyle.None;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add(panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (96, panel.Width, "1"); // 90 + 2*3 margin
-			Assert.AreEqual (25, panel.Height, "2");
-		}
-
-		[Test]
-		public void AutoSizeGrowAndShrink_ResizeIfSmaller_DockBottom ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = true;
-			panel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle (5, 5, 100, 100);
-			panel.Dock = DockStyle.Bottom;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add (panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (275, panel.Top, "1");
-			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
-			Assert.AreEqual (25, panel.Height, "3");
-		}
-
-		[Test]
-		public void NoAutoSize_DontResizeIfLarger ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = false;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle (5, 5, 10, 10);
-			panel.Dock = DockStyle.None;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add (panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (10, panel.Width, "1");
-			Assert.AreEqual (10, panel.Height, "2");
-		}
-
-		[Test]
-		public void NoAutoSize_DontResizeIfLarger_DockBottom ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = false;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle (5, 5, 10, 10);
-			panel.Dock = DockStyle.Bottom;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add (panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (290, panel.Top, "1");
-			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
-			Assert.AreEqual (10, panel.Height, "3");
-		}
-
-		[Test]
-		public void NoAutoSize_DontResizeIfSmaller ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = false;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle(5, 5, 100, 100);
-			panel.Dock = DockStyle.None;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add (panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (100, panel.Width, "1");
-			Assert.AreEqual (100, panel.Height, "2");
-		}
-
-		[Test]
-		public void NoAutoSize_DontResizeIfSmaller_DockBottom ()
-		{
-			var panel = new FlowLayoutPanel ();
-			panel.SuspendLayout ();
-			panel.AutoSize = false;
-			panel.WrapContents = true;
-			panel.Bounds = new Rectangle(5, 5, 100, 100);
-			panel.Dock = DockStyle.Bottom;
-
-			var c = new Label ();
-			c.Size = new Size (90, 25);
-			panel.Controls.Add (c);
-			f.Controls.Add(panel);
-			panel.ResumeLayout (true);
-
-			Assert.AreEqual (200, panel.Top, "1");
-			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
-			Assert.AreEqual (100, panel.Height, "3");
-		}
-	}
-}
+using System;
+using System.Text;
+using NUnit.Framework;
+using System.Windows.Forms;
+using System.Drawing;
+using System.Collections.Generic;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture()]	
+	public class FlowPanelTests : TestHelper
+	{
+		[Test]
+		public void TestConstruction()
+		{
+			FlowLayoutPanel p = new FlowLayoutPanel();
+			
+			Assert.AreEqual(FlowDirection.LeftToRight, p.FlowDirection, "A1");
+			Assert.AreEqual(true, p.WrapContents, "A2");
+			Assert.AreEqual("System.Windows.Forms.Layout.FlowLayout", p.LayoutEngine.ToString(), "A3");
+			
+			p.FlowDirection = FlowDirection.BottomUp;
+			p.WrapContents = false;
+
+			Assert.AreEqual (FlowDirection.BottomUp, p.FlowDirection, "A4");
+			Assert.AreEqual (false, p.WrapContents, "A5");
+		}
+		
+		[Test]
+		public void TestExtenderProvider()
+		{
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			Button b = new Button();
+			
+			Assert.AreEqual(false, p.GetFlowBreak(b), "B1");
+			
+			p.SetFlowBreak(b, true);
+
+			Assert.AreEqual (true, p.GetFlowBreak (b), "B2");
+		}
+
+		#region LeftToRight Tests
+		[Test]
+		public void LeftToRightLayoutTest1 ()
+		{
+			// 2 Normal Buttons
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "C1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "C2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest2 ()
+		{
+			// Dock Fill and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "D1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "D2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest3 ()
+		{
+			// Anchored: Top/Bottom and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "E1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "E2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest4 ()
+		{
+			// Anchored: Top/Bottom and Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "F1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "F2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest5 ()
+		{
+			// 2 Anchored: Top/Bottom
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "G1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "G2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest6 ()
+		{
+			// 2 Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "H1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "H2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest7 ()
+		{
+			// Dock Top
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Top, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "I1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "I2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest8 ()
+		{
+			// Dock Bottom
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Bottom, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 50, 100, 50), p.Controls[0].Bounds, "J1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "J2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest9 ()
+		{
+			// Anchor Bottom
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 50, 100, 50), p.Controls[0].Bounds, "K1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "K2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest10 ()
+		{
+			// No Dock or Anchor
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.None));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 25, 100, 50), p.Controls[0].Bounds, "L1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "L2");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest11 ()
+		{
+			// WrapContents = true
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "M1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "M2");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[2].Bounds, "M3");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[3].Bounds, "M4");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest12 ()
+		{
+			// WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.WrapContents = false;
+			
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "N1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "N2");
+			Assert.AreEqual (new Rectangle (200, 0, 100, 100), p.Controls[2].Bounds, "N3");
+			Assert.AreEqual (new Rectangle (300, 0, 100, 100), p.Controls[3].Bounds, "N4");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest13 ()
+		{
+			// SetFlowBreak 1, 3
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+			
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "O1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "O2");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "O3");
+			Assert.AreEqual (new Rectangle (0, 200, 100, 100), p.Controls[3].Bounds, "O4");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest14 ()
+		{
+			// Margins
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1,3,5,2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7,3,12,5), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14,7,1,3), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (1, 3, 50, 50), p.Controls[0].Bounds, "P1");
+			Assert.AreEqual (new Rectangle (63, 3, 50, 50), p.Controls[1].Bounds, "P2");
+			Assert.AreEqual (new Rectangle (139, 7, 50, 50), p.Controls[2].Bounds, "P3");
+			Assert.AreEqual (new Rectangle (4, 64, 50, 50), p.Controls[3].Bounds, "P4");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest15 ()
+		{
+			// Margins and Different Sizes
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "Q1");
+			Assert.AreEqual (new Rectangle (46, 9, 60, 20), p.Controls[1].Bounds, "Q2");
+			Assert.AreEqual (new Rectangle (117, 2, 15, 85), p.Controls[2].Bounds, "Q3");
+			Assert.AreEqual (new Rectangle (138, 4, 50, 20), p.Controls[3].Bounds, "Q4");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest16 ()
+		{
+			// Random Complex Layout 1
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Top, new Padding (6), AnchorStyles.None));
+
+			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "R1");
+			Assert.AreEqual (new Rectangle (46, 9, 60, 39), p.Controls[1].Bounds, "R2");
+			Assert.AreEqual (new Rectangle (117, 2, 15, 53), p.Controls[2].Bounds, "R3");
+			Assert.AreEqual (new Rectangle (138, 33, 50, 20), p.Controls[3].Bounds, "R4");
+			Assert.AreEqual (new Rectangle (12, 69, 13, 22), p.Controls[4].Bounds, "R5");
+			Assert.AreEqual (new Rectangle (43, 63, 73, 28), p.Controls[5].Bounds, "R6");
+		}
+
+		[Test]
+		public void LeftToRightLayoutTest17 ()
+		{
+			// Random Complex Layout 2
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+
+			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Bottom, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Top, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Top, new Padding (3, 3, 3, 1), AnchorStyles.None));
+			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Top | AnchorStyles.Bottom));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+
+			Assert.AreEqual (new Rectangle (1, 2, 12, 345), p.Controls[0].Bounds, "S1");
+			Assert.AreEqual (new Rectangle (6, 354, 9, 44), p.Controls[1].Bounds, "S2");
+			Assert.AreEqual (new Rectangle (22, 352, 78, 49), p.Controls[2].Bounds, "S3");
+			Assert.AreEqual (new Rectangle (3, 408, 21, 64), p.Controls[3].Bounds, "S4");
+			Assert.AreEqual (new Rectangle (38, 409, 14, 61), p.Controls[4].Bounds, "S5");
+			Assert.AreEqual (new Rectangle (63, 410, 132, 58), p.Controls[5].Bounds, "S6");
+		}
+		
+		[Test]
+		public void LeftToRightLayoutTest18 ()
+		{
+			// SetFlowBreak has no effect when WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.WrapContents = false;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak(p.Controls[0], true);
+			
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "T1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "T2");
+		}
+		#endregion
+
+		#region RightToLeft Tests
+		[Test]
+		public void RightToLeftLayoutTest1 ()
+		{
+			// 2 Normal Buttons
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+			
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AC1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AC2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest2 ()
+		{
+			// Dock Fill and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AD1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AD2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest3 ()
+		{
+			// Anchored: Top/Bottom and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AE1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AE2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest4 ()
+		{
+			// Anchored: Top/Bottom and Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AF1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AF2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest5 ()
+		{
+			// 2 Anchored: Top/Bottom
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AG1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AG2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest6 ()
+		{
+			// 2 Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AH1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AH2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest7 ()
+		{
+			// Dock Top
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Top, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AI1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AI2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest8 ()
+		{
+			// Dock Bottom
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.Bottom, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 50, 100, 50), p.Controls[0].Bounds, "AJ1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AJ2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest9 ()
+		{
+			// Anchor Bottom
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 50, 100, 50), p.Controls[0].Bounds, "AK1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AK2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest10 ()
+		{
+			// No Dock or Anchor
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.None));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 25, 100, 50), p.Controls[0].Bounds, "AL1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AL2");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest11 ()
+		{
+			// WrapContents = true
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AM1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AM2");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "AM3");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[3].Bounds, "AM4");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest12 ()
+		{
+			// WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.WrapContents = false;
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AN1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AN2");
+			Assert.AreEqual (new Rectangle (-100, 0, 100, 100), p.Controls[2].Bounds, "AN3");
+			Assert.AreEqual (new Rectangle (-200, 0, 100, 100), p.Controls[3].Bounds, "AN4");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest13 ()
+		{
+			// SetFlowBreak 1, 3
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AO1");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[1].Bounds, "AO2");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[2].Bounds, "AO3");
+			Assert.AreEqual (new Rectangle (100, 200, 100, 100), p.Controls[3].Bounds, "AO4");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest14 ()
+		{
+			// Margins
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (145, 3, 50, 50), p.Controls[0].Bounds, "AP1");
+			Assert.AreEqual (new Rectangle (82, 3, 50, 50), p.Controls[1].Bounds, "AP2");
+			Assert.AreEqual (new Rectangle (24, 7, 50, 50), p.Controls[2].Bounds, "AP3");
+			Assert.AreEqual (new Rectangle (146, 64, 50, 50), p.Controls[3].Bounds, "AP4");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest15 ()
+		{
+			// Margins and Different Sizes
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (169, 6, 25, 45), p.Controls[0].Bounds, "AQ1");
+			Assert.AreEqual (new Rectangle (94, 9, 60, 20), p.Controls[1].Bounds, "AQ2");
+			Assert.AreEqual (new Rectangle (68, 2, 15, 85), p.Controls[2].Bounds, "AQ3");
+			Assert.AreEqual (new Rectangle (12, 4, 50, 20), p.Controls[3].Bounds, "AQ4");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest16 ()
+		{
+			// Random Complex Layout 1
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Top, new Padding (6), AnchorStyles.None));
+
+			Assert.AreEqual (new Rectangle (169, 6, 25, 45), p.Controls[0].Bounds, "AR1");
+			Assert.AreEqual (new Rectangle (94, 9, 60, 39), p.Controls[1].Bounds, "AR2");
+			Assert.AreEqual (new Rectangle (68, 2, 15, 53), p.Controls[2].Bounds, "AR3");
+			Assert.AreEqual (new Rectangle (12, 33, 50, 20), p.Controls[3].Bounds, "AR4");
+			Assert.AreEqual (new Rectangle (175, 69, 13, 22), p.Controls[4].Bounds, "AR5");
+			Assert.AreEqual (new Rectangle (84, 63, 73, 28), p.Controls[5].Bounds, "AR6");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest17 ()
+		{
+			// Random Complex Layout 2
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Bottom, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Top, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Top, new Padding (3, 3, 3, 1), AnchorStyles.None));
+			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Top | AnchorStyles.Bottom));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+
+			Assert.AreEqual (new Rectangle (185, 2, 12, 345), p.Controls[0].Bounds, "AS1");
+			Assert.AreEqual (new Rectangle (189, 354, 9, 44), p.Controls[1].Bounds, "AS2");
+			Assert.AreEqual (new Rectangle (103, 352, 78, 49), p.Controls[2].Bounds, "AS3");
+			Assert.AreEqual (new Rectangle (176, 408, 21, 64), p.Controls[3].Bounds, "AS4");
+			Assert.AreEqual (new Rectangle (153, 409, 14, 61), p.Controls[4].Bounds, "AS5");
+			Assert.AreEqual (new Rectangle (6, 410, 132, 58), p.Controls[5].Bounds, "AS6");
+		}
+
+		[Test]
+		public void RightToLeftLayoutTest18 ()
+		{
+			// SetFlowBreak has no effect when WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.WrapContents = false;
+			p.FlowDirection = FlowDirection.RightToLeft;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak (p.Controls[0], true);
+
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AT1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AT2");
+		}
+		#endregion
+
+		#region TopDown Tests
+		[Test]
+		public void TopDownLayoutTest1 ()
+		{
+			// 2 Normal Buttons
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BC1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BC2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest2 ()
+		{
+			// Dock Fill and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BD1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BD2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest3 ()
+		{
+			// Anchored: Left/Right and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BE1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BE2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest4 ()
+		{
+			// Anchored: Left/Right and Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BF1");
+			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BF2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest5 ()
+		{
+			// 2 Anchored: Left/Right
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+
+			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BG1");
+			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BG2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest6 ()
+		{
+			// 2 Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BH1");
+			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BH2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest7 ()
+		{
+			// Dock Left
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Left, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BI1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BI2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest8 ()
+		{
+			// Dock Right
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Right, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (50, 0, 50, 100), p.Controls[0].Bounds, "BJ1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BJ2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest9 ()
+		{
+			// Anchor Right
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Left));
+
+			Assert.AreEqual (new Rectangle (50, 0, 50, 100), p.Controls[0].Bounds, "BK1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BK2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest10 ()
+		{
+			// No Dock or Anchor
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.None));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (25, 0, 50, 100), p.Controls[0].Bounds, "BL1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BL2");
+		}
+
+		[Test]
+		public void TopDownLayoutTest11 ()
+		{
+			// WrapContents = true
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BM1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BM2");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[2].Bounds, "BM3");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[3].Bounds, "BM4");
+		}
+
+		[Test]
+		public void TopDownLayoutTest12 ()
+		{
+			// WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.WrapContents = false;
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BN1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BN2");
+			Assert.AreEqual (new Rectangle (0, 200, 100, 100), p.Controls[2].Bounds, "BN3");
+			Assert.AreEqual (new Rectangle (0, 300, 100, 100), p.Controls[3].Bounds, "BN4");
+		}
+
+		[Test]
+		public void TopDownLayoutTest13 ()
+		{
+			// SetFlowBreak 1, 3
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BO1");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "BO2");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "BO3");
+			Assert.AreEqual (new Rectangle (200, 0, 100, 100), p.Controls[3].Bounds, "BO4");
+		}
+
+		[Test]
+		public void TopDownLayoutTest14 ()
+		{
+			// Margins
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (1, 3, 50, 50), p.Controls[0].Bounds, "BP1");
+			Assert.AreEqual (new Rectangle (7, 58, 50, 50), p.Controls[1].Bounds, "BP2");
+			Assert.AreEqual (new Rectangle (14, 120, 50, 50), p.Controls[2].Bounds, "BP3");
+			Assert.AreEqual (new Rectangle (73, 4, 50, 50), p.Controls[3].Bounds, "BP4");
+		}
+
+		[Test]
+		public void TopDownLayoutTest15 ()
+		{
+			// Margins and Different Sizes
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "BQ1");
+			Assert.AreEqual (new Rectangle (9, 66, 60, 20), p.Controls[1].Bounds, "BQ2");
+			Assert.AreEqual (new Rectangle (2, 97, 15, 85), p.Controls[2].Bounds, "BQ3");
+			Assert.AreEqual (new Rectangle (82, 4, 50, 20), p.Controls[3].Bounds, "BQ4");
+		}
+
+		[Test]
+		public void TopDownLayoutTest16 ()
+		{
+			// Random Complex Layout 1
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Left, new Padding (6), AnchorStyles.None));
+
+			Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "BR1");
+			Assert.AreEqual (new Rectangle (9, 66, 19, 20), p.Controls[1].Bounds, "BR2");
+			Assert.AreEqual (new Rectangle (2, 97, 15, 85), p.Controls[2].Bounds, "BR3");
+			Assert.AreEqual (new Rectangle (41, 4, 50, 20), p.Controls[3].Bounds, "BR4");
+			Assert.AreEqual (new Rectangle (49, 40, 61, 22), p.Controls[4].Bounds, "BR5");
+			Assert.AreEqual (new Rectangle (43, 80, 73, 28), p.Controls[5].Bounds, "BR6");
+		}
+
+		[Test]
+		public void TopDownLayoutTest17 ()
+		{
+			// Random Complex Layout 2
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Right, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Left, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Left, new Padding (3, 3, 3, 1), AnchorStyles.None));
+			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Left | AnchorStyles.Right));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+
+			Assert.AreEqual (new Rectangle (1, 2, 12, 345), p.Controls[0].Bounds, "BS1");
+			Assert.AreEqual (new Rectangle (22, 3, 9, 44), p.Controls[1].Bounds, "BS2");
+			Assert.AreEqual (new Rectangle (21, 55, 10, 14), p.Controls[2].Bounds, "BS3");
+			Assert.AreEqual (new Rectangle (36, 3, 21, 64), p.Controls[3].Bounds, "BS4");
+			Assert.AreEqual (new Rectangle (44, 72, 10, 14), p.Controls[4].Bounds, "BS5");
+			Assert.AreEqual (new Rectangle (38, 94, 18, 6), p.Controls[5].Bounds, "BS6");
+		}
+
+		[Test]
+		public void TopDownLayoutTest18 ()
+		{
+			// SetFlowBreak has no effect when WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.WrapContents = false;
+			p.FlowDirection = FlowDirection.TopDown;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak (p.Controls[0], true);
+
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BT1");
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BT2");
+		}
+		#endregion
+
+		#region BottomUp Tests
+		[Test]
+		public void BottomUpLayoutTest1 ()
+		{
+			// 2 Normal Buttons
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CC1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CC2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest2 ()
+		{
+			// Dock Fill and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CD1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CD2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest3 ()
+		{
+			// Anchored: Left/Right and Normal
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CE1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CE2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest4 ()
+		{
+			// Anchored: Left/Right and Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CF1");
+			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CF2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest5 ()
+		{
+			// 2 Anchored: Left/Right
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
+
+			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CG1");
+			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CG2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest6 ()
+		{
+			// 2 Dock Fill
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CH1");
+			Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CH2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest7 ()
+		{
+			// Dock Left
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Left, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CI1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CI2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest8 ()
+		{
+			// Dock Right
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.Right, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (50, 100, 50, 100), p.Controls[0].Bounds, "CJ1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CJ2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest9 ()
+		{
+			// Anchor Right
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Left));
+
+			Assert.AreEqual (new Rectangle (50, 100, 50, 100), p.Controls[0].Bounds, "CK1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CK2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest10 ()
+		{
+			// No Dock or Anchor
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.None));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (25, 100, 50, 100), p.Controls[0].Bounds, "CL1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CL2");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest11 ()
+		{
+			// WrapContents = true
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CM1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CM2");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "CM3");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[3].Bounds, "CM4");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest12 ()
+		{
+			// WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.WrapContents = false;
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CN1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CN2");
+			Assert.AreEqual (new Rectangle (0, -100, 100, 100), p.Controls[2].Bounds, "CN3");
+			Assert.AreEqual (new Rectangle (0, -200, 100, 100), p.Controls[3].Bounds, "CN4");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest13 ()
+		{
+			// SetFlowBreak 1, 3
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CO1");
+			Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[1].Bounds, "CO2");
+			Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[2].Bounds, "CO3");
+			Assert.AreEqual (new Rectangle (200, 100, 100, 100), p.Controls[3].Bounds, "CO4");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest14 ()
+		{
+			// Margins
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (1, 148, 50, 50), p.Controls[0].Bounds, "CP1");
+			Assert.AreEqual (new Rectangle (7, 90, 50, 50), p.Controls[1].Bounds, "CP2");
+			Assert.AreEqual (new Rectangle (14, 34, 50, 50), p.Controls[2].Bounds, "CP3");
+			Assert.AreEqual (new Rectangle (73, 146, 50, 50), p.Controls[3].Bounds, "CP4");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest15 ()
+		{
+			// Margins and Different Sizes
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
+
+			Assert.AreEqual (new Rectangle (6, 149, 25, 45), p.Controls[0].Bounds, "CQ1");
+			Assert.AreEqual (new Rectangle (9, 114, 60, 20), p.Controls[1].Bounds, "CQ2");
+			Assert.AreEqual (new Rectangle (2, 18, 15, 85), p.Controls[2].Bounds, "CQ3");
+			Assert.AreEqual (new Rectangle (82, 176, 50, 20), p.Controls[3].Bounds, "CQ4");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest16 ()
+		{
+			// Random Complex Layout 1
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
+			p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (73, 28, false, DockStyle.Left, new Padding (6), AnchorStyles.None));
+
+			Assert.AreEqual (new Rectangle (6, 149, 25, 45), p.Controls[0].Bounds, "CR1");
+			Assert.AreEqual (new Rectangle (9, 114, 19, 20), p.Controls[1].Bounds, "CR2");
+			Assert.AreEqual (new Rectangle (2, 18, 15, 85), p.Controls[2].Bounds, "CR3");
+			Assert.AreEqual (new Rectangle (41, 176, 50, 20), p.Controls[3].Bounds, "CR4");
+			Assert.AreEqual (new Rectangle (49, 138, 61, 22), p.Controls[4].Bounds, "CR5");
+			Assert.AreEqual (new Rectangle (43, 92, 73, 28), p.Controls[5].Bounds, "CR6");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest17 ()
+		{
+			// Random Complex Layout 2
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (12, 345, false, DockStyle.Right, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (9, 44, false, DockStyle.Left, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (21, 64, false, DockStyle.Left, new Padding (3, 3, 3, 1), AnchorStyles.None));
+			p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Left | AnchorStyles.Right));
+			p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Left | AnchorStyles.Right));
+
+			p.SetFlowBreak (p.Controls[0], true);
+			p.SetFlowBreak (p.Controls[2], true);
+
+			Assert.AreEqual (new Rectangle (1, -149, 12, 345), p.Controls[0].Bounds, "CS1");
+			Assert.AreEqual (new Rectangle (22, 149, 9, 44), p.Controls[1].Bounds, "CS2");
+			Assert.AreEqual (new Rectangle (21, 128, 10, 14), p.Controls[2].Bounds, "CS3");
+			Assert.AreEqual (new Rectangle (36, 135, 21, 64), p.Controls[3].Bounds, "CS4");
+			Assert.AreEqual (new Rectangle (44, 115, 10, 14), p.Controls[4].Bounds, "CS5");
+			Assert.AreEqual (new Rectangle (38, 100, 18, 6), p.Controls[5].Bounds, "CS6");
+		}
+
+		[Test]
+		public void BottomUpLayoutTest18 ()
+		{
+			// SetFlowBreak has no effect when WrapContents = false
+			FlowLayoutPanel p = new FlowLayoutPanel ();
+			p.Size = new Size (100, 200);
+			p.WrapContents = false;
+			p.FlowDirection = FlowDirection.BottomUp;
+
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+			p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
+
+			p.SetFlowBreak (p.Controls[0], true);
+
+			Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CT1");
+			Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CT2");
+		}
+		#endregion
+
+		private Button CreateButton (int width, int height, bool autosize, DockStyle dock, Padding margin, AnchorStyles anchor)
+		{
+			Button b = new Button ();
+			b.Size = new Size(width, height);
+			b.AutoSize = autosize;
+			b.Anchor = anchor;
+			b.Dock = dock;
+			b.Margin = margin;
+			
+			return b;
+		}
+
+		#region PreferredSize
+		[Test]
+		public void PreferredSize ()
+		{
+			FlowLayoutPanel panel = new FlowLayoutPanel ();
+			panel.Controls.AddRange (new Control [] { new PreferredSizeControl (), new PreferredSizeControl () });
+			Assert.AreEqual (new Size (212, 106), panel.PreferredSize, "1");
+			Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (150, 150)), "2");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1000, 1000)) , "3");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 0)), "4");
+			Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (1, 1)), "5");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 150)), "6");
+			Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (150, 0)), "7");
+			panel.WrapContents = false;
+			Assert.AreEqual (new Size (212, 106), panel.PreferredSize, "1, WrapContents");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (150, 150)), "2, WrapContents");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1000, 1000)) , "3, WrapContents");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 0)), "4, WrapContents");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1, 1)), "5, WrapContents");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 150)), "6, WrapContents");
+			Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (150, 0)), "7, WrapContents");
+		}
+
+		class PreferredSizeControl : Control
+		{
+			protected override Size DefaultSize {
+				get {
+					return new Size (100, 100);
+				}
+			}
+		}
+		#endregion
+		
+		[Test]
+		public void Padding ()
+		{
+			Form f = new Form ();
+			
+			FlowLayoutPanel flp = new FlowLayoutPanel ();
+			flp.Padding = new Padding (20);
+			flp.Size = new Size (100, 100);
+
+			Button b = new Button ();
+			b.Size = new Size (50, 50);
+
+			Button b2 = new Button ();
+			b2.Size = new Size (50, 50);
+
+			flp.Controls.Add (b);
+			flp.Controls.Add (b2);
+
+			f.Controls.Add (flp);
+			
+			Assert.AreEqual (new Rectangle (23, 23, 50, 50), b.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (23, 79, 50, 50), b2.Bounds, "A2");
+		}
+	}
+
+	[TestFixture]
+	public class FlowPanelTests_AutoSize: TestHelper
+	{
+		private Form f;
+		protected override void SetUp ()
+		{
+			base.SetUp ();
+			f = new Form ();
+			f.AutoSize = false;
+			f.ClientSize = new Size (100, 300);
+			f.ShowInTaskbar = false;
+			f.Show ();
+		}
+
+		protected override void TearDown ()
+		{
+			f.Dispose ();
+			base.TearDown ();
+		}
+
+		[Test]
+		public void AutoSizeGrowOnly_ResizeIfLarger ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle (5, 5, 10, 10);
+			panel.Dock = DockStyle.None;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add (panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (192, panel.Width, "1"); // 2 * 90 + 4 * 3 margin
+			Assert.AreEqual (25, panel.Height, "2");
+		}
+
+		[Test]
+		public void AutoSizeGrowOnly_ResizeIfLarger_DockBottom ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle (5, 5, 10, 10);
+			panel.Dock = DockStyle.Bottom;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add (panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (250, panel.Top, "1");
+			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
+			Assert.AreEqual (50, panel.Height, "3");
+		}
+
+		[Test]
+		public void AutoSizeGrowOnly_DontResizeIfSmaller ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle(5, 5, 100, 100);
+			panel.Dock = DockStyle.None;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add (panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (100, panel.Width, "1");
+			Assert.AreEqual (100, panel.Height, "2");
+		}
+
+		[Test]
+		public void AutoSizeGrowOnly_ResizeIfSmaller_DockTop ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle(5, 5, 100, 100);
+			panel.Dock = DockStyle.Top;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add(panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (0, panel.Top, "1");
+			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
+			Assert.AreEqual (25, panel.Height, "3");
+		}
+
+		[Test]
+		public void AutoSizeGrowOnly_ResizeIfSmaller_DockBottom ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle(5, 5, 100, 100);
+			panel.Dock = DockStyle.Bottom;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add(panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (275, panel.Top, "1");
+			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
+			Assert.AreEqual (25, panel.Height, "3");
+		}
+
+		[Test]
+		public void AutoSizeGrowOnly_ResizeIfSmaller_DockLeft ()
+		{
+			f.ClientSize = new Size (300, 100);
+
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle(5, 5, 100, 100);
+			panel.Dock = DockStyle.Left;
+
+			var c = new Label ();
+			c.Size = new Size (25, 90);
+			panel.Controls.Add (c);
+			f.Controls.Add(panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (0, panel.Left, "1");
+			Assert.AreEqual (f.ClientRectangle.Height, panel.Height, "2");
+			Assert.AreEqual (31, panel.Width, "3"); // 25 + 2*3 margin
+		}
+
+		[Test]
+		public void AutoSizeGrowOnly_ResizeIfSmaller_DockRight ()
+		{
+			f.ClientSize = new Size (300, 100);
+
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowOnly;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle(5, 5, 100, 100);
+			panel.Dock = DockStyle.Right;
+
+			var c = new Label ();
+			c.Size = new Size (25, 90);
+			panel.Controls.Add (c);
+			f.Controls.Add(panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (269, panel.Left, "1");
+			Assert.AreEqual (f.ClientRectangle.Height, panel.Height, "2");
+			Assert.AreEqual (31, panel.Width, "3"); // 25 + 2*3 margin
+		}
+
+		[Test]
+		public void AutoSizeGrowAndShrink_ResizeIfSmaller ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle (5, 5, 100, 100);
+			panel.Dock = DockStyle.None;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add(panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (96, panel.Width, "1"); // 90 + 2*3 margin
+			Assert.AreEqual (25, panel.Height, "2");
+		}
+
+		[Test]
+		public void AutoSizeGrowAndShrink_ResizeIfSmaller_DockBottom ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = true;
+			panel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle (5, 5, 100, 100);
+			panel.Dock = DockStyle.Bottom;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add (panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (275, panel.Top, "1");
+			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
+			Assert.AreEqual (25, panel.Height, "3");
+		}
+
+		[Test]
+		public void NoAutoSize_DontResizeIfLarger ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = false;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle (5, 5, 10, 10);
+			panel.Dock = DockStyle.None;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add (panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (10, panel.Width, "1");
+			Assert.AreEqual (10, panel.Height, "2");
+		}
+
+		[Test]
+		public void NoAutoSize_DontResizeIfLarger_DockBottom ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = false;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle (5, 5, 10, 10);
+			panel.Dock = DockStyle.Bottom;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add (panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (290, panel.Top, "1");
+			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
+			Assert.AreEqual (10, panel.Height, "3");
+		}
+
+		[Test]
+		public void NoAutoSize_DontResizeIfSmaller ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = false;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle(5, 5, 100, 100);
+			panel.Dock = DockStyle.None;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add (panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (100, panel.Width, "1");
+			Assert.AreEqual (100, panel.Height, "2");
+		}
+
+		[Test]
+		public void NoAutoSize_DontResizeIfSmaller_DockBottom ()
+		{
+			var panel = new FlowLayoutPanel ();
+			panel.SuspendLayout ();
+			panel.AutoSize = false;
+			panel.WrapContents = true;
+			panel.Bounds = new Rectangle(5, 5, 100, 100);
+			panel.Dock = DockStyle.Bottom;
+
+			var c = new Label ();
+			c.Size = new Size (90, 25);
+			panel.Controls.Add (c);
+			f.Controls.Add(panel);
+			panel.ResumeLayout (true);
+
+			Assert.AreEqual (200, panel.Top, "1");
+			Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");
+			Assert.AreEqual (100, panel.Height, "3");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/FormHandleTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/FormHandleTest.cs
@@ -1,1185 +1,1185 @@
-//
-// FormTest.cs: Test cases for Form.
-//
-// Author:
-//   Ritvik Mayank (mritvik@novell.com)
-//
-// (C) 2005 Novell, Inc. (http://www.novell.com)
-//
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Reflection;
-using System.Windows.Forms;
-
-using NUnit.Framework;
-
-using CategoryAttribute = NUnit.Framework.CategoryAttribute;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class FormHandleTest : TestHelper
-	{
-		[Test]
-		public void TestConstructors ()
-		{
-			Form c = new Form ();
-			Assert.IsFalse (c.IsHandleCreated, "A1");
-		}
-
-		[Test]
-		public void TestContextMenu ()
-		{
-			Form c = new Form ();
-			c.ContextMenu = new ContextMenu ();
-			c.ContextMenu.MenuItems.Add (new MenuItem ());
-			c.ContextMenu.MenuItems [0].Text = "New";
-			Assert.IsFalse (c.IsHandleCreated);
-		}
-
-		[Test] // bug #81272
-		public void TestMenu ()
-		{
-			Form c = new Form ();
-			c.Menu = new MainMenu ();
-			c.Menu.MenuItems.Add (new MenuItem ());
-			c.Menu.MenuItems [0].Text = "New";
-			Assert.IsFalse (c.IsHandleCreated);
-		}
-
-		[Test]
-		public void TestPublicProperties ()
-		{
-			// This long, carpal-tunnel syndrome inducing test shows us that
-			// the following properties cause the Handle to be created:
-			// - AccessibilityObject	[get]
-			// - Capture			[set]
-			// - Handle			[get]
-			// - Visible			[set]
-			
-			Form c = new Form ();
-			// A
-			object o = c.AccessibilityObject;
-			Assert.IsTrue (c.IsHandleCreated, "A0");
-			c.Dispose ();
-			
-			c = new Form ();
-			o = c.AccessibleDefaultActionDescription;
-			c.AccessibleDefaultActionDescription = "playdoh";
-			Assert.IsFalse (c.IsHandleCreated, "A1");
-			o = c.AccessibleDescription;
-			c.AccessibleDescription = "more playdoh!";
-			Assert.IsFalse (c.IsHandleCreated, "A2");
-			o = c.AccessibleName;
-			c.AccessibleName = "playdoh fun factory";
-			Assert.IsFalse (c.IsHandleCreated, "A3");
-			o = c.AccessibleRole;
-			c.AccessibleRole = AccessibleRole.Border;
-			Assert.IsFalse (c.IsHandleCreated, "A4");
-			o = c.AllowDrop;
-			c.AllowDrop = true;
-			Assert.IsFalse (c.IsHandleCreated, "A5");
-			// If we don't reset the control, handle creation will fail
-			// because AllowDrop requires STAThread, which Nunit doesn't do
-			c.Dispose ();
-			
-			c = new Form ();
-			o = c.Anchor;
-			c.Anchor = AnchorStyles.Right;
-			Assert.IsFalse (c.IsHandleCreated, "A6");
-#if !__MonoCS__
-			o = c.AutoScrollOffset;
-			c.AutoScrollOffset = new Point (40, 40);
-			Assert.IsFalse (c.IsHandleCreated, "A7");
-#endif
-			o = c.AutoSize;
-			c.AutoSize = true;
-			Assert.IsFalse (c.IsHandleCreated, "A8");
-
-			// A - Form			
-			o = c.AcceptButton;
-			c.AcceptButton = null;
-			Assert.IsFalse (c.IsHandleCreated, "FA1");
-			
-			o = c.ActiveControl;
-			c.ActiveControl = null;
-			Assert.IsFalse (c.IsHandleCreated, "FA2");
-			
-			o = c.ActiveMdiChild;
-			Assert.IsFalse (c.IsHandleCreated, "FA3");
-			
-			o = c.AllowTransparency;
-			c.AllowTransparency = !c.AllowTransparency;
-			Assert.IsFalse (c.IsHandleCreated, "FA4");
-
-			o = c.AutoScaleDimensions;
-			c.AutoScaleDimensions = SizeF.Empty;
-			Assert.IsFalse (c.IsHandleCreated, "FA5");
-			
-			o = c.AutoScaleMode;
-			c.AutoScaleMode = AutoScaleMode.Dpi;
-			Assert.IsFalse (c.IsHandleCreated, "FA6");
-			o = c.AutoScroll;
-			c.AutoScroll = !c.AutoScroll;
-			Assert.IsFalse (c.IsHandleCreated, "FA7");
-			
-			o = c.AutoScrollMargin;
-			c.AutoScrollMargin = new Size (c.AutoScrollMargin.Width + 1, c.AutoScrollMargin.Height + 1);
-			Assert.IsFalse (c.IsHandleCreated, "FA8");
-			
-			o = c.AutoScrollMinSize;
-			c.AutoScrollMinSize = new Size (c.AutoScrollMinSize.Width + 1, c.AutoScrollMinSize.Height + 1);
-			Assert.IsFalse (c.IsHandleCreated, "FA9");
-
-#if !__MonoCS__
-			o = c.AutoScrollOffset;
-			c.AutoScrollOffset = new Point (c.AutoScrollOffset.X + 1, c.AutoScrollOffset.Y + 1);
-			Assert.IsFalse (c.IsHandleCreated, "FA10"); 
-#endif
-			
-			o = c.AutoScrollPosition;
-			c.AutoScrollPosition = new Point (c.AutoScrollPosition.X + 1, c.AutoScrollPosition.Y + 1);
-			Assert.IsFalse (c.IsHandleCreated, "FA11");
-
-			o = c.AutoSize;
-			c.AutoSize = !c.AutoSize;
-			Assert.IsFalse (c.IsHandleCreated, "FA12"); 
-#if !__MonoCS__
-			o = c.AutoSizeMode;
-			c.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			Assert.IsFalse (c.IsHandleCreated, "FA13");
-#endif		
-			o = c.AutoValidate;
-			c.AutoValidate = AutoValidate.EnableAllowFocusChange;
-			Assert.IsFalse (c.IsHandleCreated, "FA14");
-
-			// B
-			o = c.BackColor;
-			c.BackColor = Color.Green;
-			Assert.IsFalse (c.IsHandleCreated, "A9");
-			o = c.BackgroundImage;
-			c.BackgroundImage = new Bitmap (1, 1);
-			Assert.IsFalse (c.IsHandleCreated, "A10");
-			o = c.BackgroundImageLayout;
-			c.BackgroundImageLayout = ImageLayout.Stretch;
-			Assert.IsFalse (c.IsHandleCreated, "A11");
-			o = c.BindingContext;
-			c.BindingContext = new BindingContext ();
-			Assert.IsFalse (c.IsHandleCreated, "A12");
-			o = c.Bottom;
-			Assert.IsFalse (c.IsHandleCreated, "A13");
-			o = c.Bounds;
-			c.Bounds = new Rectangle (0, 0, 12, 12);
-			Assert.IsFalse (c.IsHandleCreated, "A14");
-
-
-			// B - Form
-			o = c.BindingContext;
-			c.BindingContext = null;
-			Assert.IsFalse (c.IsHandleCreated, "FB1");
-			
-			// C
-			o = c.CanFocus;
-			Assert.IsFalse (c.IsHandleCreated, "A15");
-			o = c.CanSelect;
-			Assert.IsFalse (c.IsHandleCreated, "A16");
-			o = c.Capture;
-			Assert.IsFalse (c.IsHandleCreated, "A17a");
-			c.Capture = true;
-			Assert.IsTrue (c.IsHandleCreated, "A17b");
-			c.Dispose ();
-			
-			c = new Form ();
-			o = c.CausesValidation;
-			c.CausesValidation = false;
-			Assert.IsFalse (c.IsHandleCreated, "A18");
-			o = c.ClientRectangle;
-			Assert.IsFalse (c.IsHandleCreated, "A19");
-			o = c.ClientSize;
-			c.ClientSize = new Size (30, 30);
-			Assert.IsFalse (c.IsHandleCreated, "A20");
-			o = c.CompanyName;
-			Assert.IsFalse (c.IsHandleCreated, "A21");
-			o = c.Container;
-			Assert.IsFalse (c.IsHandleCreated, "A22");
-			o = c.ContainsFocus;
-			Assert.IsFalse (c.IsHandleCreated, "A23");
-			o = c.ContextMenu;
-			c.ContextMenu = new ContextMenu ();
-			Assert.IsFalse (c.IsHandleCreated, "A24");
-			o = c.ContextMenuStrip;
-			c.ContextMenuStrip = new ContextMenuStrip ();
-			Assert.IsFalse (c.IsHandleCreated, "A25");
-			o = c.Controls;
-			Assert.IsFalse (c.IsHandleCreated, "A26");
-			o = c.Created;
-			Assert.IsFalse (c.IsHandleCreated, "A27");
-			o = c.Cursor;
-			c.Cursor = Cursors.Arrow;
-			Assert.IsFalse (c.IsHandleCreated, "A28");
-
-			// C - Form
-			o = c.CancelButton;
-			c.CancelButton = null;
-			Assert.IsFalse (c.IsHandleCreated, "FC1");
-			
-			o = c.ClientSize;
-			c.ClientSize = new Size (c.ClientSize.Width + 1, c.ClientSize.Height + 1);
-			Assert.IsFalse (c.IsHandleCreated, "FC2");
-			
-			o = c.Container;
-			Assert.IsFalse (c.IsHandleCreated, "FC3");
-			
-			o = c.ControlBox;
-			c.ControlBox = !c.ControlBox;
-			Assert.IsFalse (c.IsHandleCreated, "FC4");
-
-			o = c.CurrentAutoScaleDimensions;
-			Assert.IsFalse (c.IsHandleCreated, "FC5"); 
-
-			// D
-			o = c.DataBindings;
-			Assert.IsFalse (c.IsHandleCreated, "A29");
-			o = c.DisplayRectangle;
-			Assert.IsFalse (c.IsHandleCreated, "A30");
-			o = c.Disposing;
-			Assert.IsFalse (c.IsHandleCreated, "A31");
-			o = c.Dock;
-			c.Dock = DockStyle.Fill;
-			Assert.IsFalse (c.IsHandleCreated, "A32");
-
-			// D - Form
-			o = c.DataBindings;
-			Assert.IsFalse (c.IsHandleCreated, "FD6");
-			
-			o = c.DesktopBounds;
-			c.DesktopBounds = new Rectangle (3, 5, c.DesktopBounds.Width + 1, c.DesktopBounds.Height + 1);
-			Assert.IsFalse (c.IsHandleCreated, "FD7");
-			
-			o = c.DesktopLocation;
-			c.DesktopLocation = c.DesktopLocation + new Size (1, 1);
-			Assert.IsFalse (c.IsHandleCreated, "FD8");
-			
-			o = c.DialogResult;
-			c.DialogResult = DialogResult.Abort;
-			Assert.IsFalse (c.IsHandleCreated, "FD9");
-			
-			o = c.DisplayRectangle;
-			Assert.IsFalse (c.IsHandleCreated, "FD10");
-			
-			o = c.Disposing;
-			Assert.IsFalse (c.IsHandleCreated, "FD11");
-			
-			o = c.Dock;
-			c.Dock = DockStyle.Right;
-			Assert.IsFalse (c.IsHandleCreated, "FD12");
-
-			// E-H
-			o = c.Enabled;
-			c.Enabled = false;
-			Assert.IsFalse (c.IsHandleCreated, "A33");
-			c.Dispose ();
-			
-			c = new Form ();  //Reset just in case enable = false affects things
-			o = c.Focused;
-			Assert.IsFalse (c.IsHandleCreated, "A34");
-			o = c.Font;
-			c.Font = new Font (c.Font, FontStyle.Bold);
-			Assert.IsFalse (c.IsHandleCreated, "A35");
-			o = c.ForeColor;
-			c.ForeColor = Color.Green;
-			Assert.IsFalse (c.IsHandleCreated, "A36");
-			o = c.Handle;
-			Assert.IsTrue (c.IsHandleCreated, "A37");
-			c.Dispose ();
-			
-			c = new Form ();
-			o = c.HasChildren;
-			Assert.IsFalse (c.IsHandleCreated, "A38");
-			o = c.Height;
-			c.Height = 12;
-			Assert.IsFalse (c.IsHandleCreated, "A39");
-
-			// E-H - Form
-			o = c.FormBorderStyle;
-			c.FormBorderStyle = FormBorderStyle.FixedToolWindow;
-			Assert.IsFalse (c.IsHandleCreated, "FF1");
-			
-			o = c.HelpButton;
-			c.HelpButton = !c.HelpButton;
-			Assert.IsFalse (c.IsHandleCreated, "FH1");
-
-#if !__MonoCS__
-			o = c.HorizontalScroll;
-			Assert.IsFalse (c.IsHandleCreated, "FH2"); 
-#endif
-			// I - L
-			c.ImeMode = ImeMode.On;
-			Assert.IsFalse (c.IsHandleCreated, "A40");
-			o = c.InvokeRequired;
-			Assert.IsFalse (c.IsHandleCreated, "A41");
-			o = c.IsAccessible;
-			Assert.IsFalse (c.IsHandleCreated, "A42");
-			o = c.IsDisposed;
-			Assert.IsFalse (c.IsHandleCreated, "A43");
-#if !__MonoCS__
-			o = c.IsMirrored;
-			Assert.IsFalse (c.IsHandleCreated, "A44");
-#endif
-			o = c.LayoutEngine;
-			Assert.IsFalse (c.IsHandleCreated, "A45");
-			o = c.Left;
-			c.Left = 15;
-			Assert.IsFalse (c.IsHandleCreated, "A46");
-			o = c.Location;
-			c.Location = new Point (20, 20);
-			Assert.IsFalse (c.IsHandleCreated, "A47");
-
-			// I - L - Form
-			
-			o = c.Icon;
-			c.Icon = null;
-			Assert.IsFalse (c.IsHandleCreated, "FI1");
-			
-			o = c.IsMdiChild;
-			Assert.IsFalse (c.IsHandleCreated, "FI2");
-
-			o = c.IsMdiContainer;
-			c.IsMdiContainer = false;
-			Assert.IsFalse (c.IsHandleCreated, "FI3");
-			
-			o = c.IsRestrictedWindow;
-			Assert.IsFalse (c.IsHandleCreated, "FI4");
-			
-			o = c.KeyPreview;
-			c.KeyPreview = !c.KeyPreview;
-			Assert.IsFalse (c.IsHandleCreated, "FK1");
-			
-			o = c.Location;
-			c.Location = c.Location + new Size (1, 1);
-			Assert.IsFalse (c.IsHandleCreated, "FL1");
-			
-			
-			// M - N
-			o = c.Margin;
-			c.Margin = new Padding (6);
-			Assert.IsFalse (c.IsHandleCreated, "A48");
-			o = c.MaximumSize;
-			c.MaximumSize = new Size (500, 500);
-			Assert.IsFalse (c.IsHandleCreated, "A49");
-			o = c.MinimumSize;
-			c.MinimumSize = new Size (100, 100);
-			Assert.IsFalse (c.IsHandleCreated, "A50");
-			o = c.Name;
-			c.Name = "web";
-			Assert.IsFalse (c.IsHandleCreated, "A51");
-
-			// M - O - Form
-			o = c.MainMenuStrip;
-			c.MainMenuStrip = null;
-			Assert.IsFalse (c.IsHandleCreated, "FM1"); 
-			
-			o = c.MaximizeBox;
-			c.MaximizeBox = !c.MaximizeBox;
-			Assert.IsFalse (c.IsHandleCreated, "FM2");
-			
-			o = c.MaximumSize;
-			c.MaximumSize = c.MaximumSize + new Size (1, 1);
-			Assert.IsFalse (c.IsHandleCreated, "FM3");
-			
-			o = c.MdiChildren;
-			Assert.IsFalse (c.IsHandleCreated, "FM4");
-			
-			o = c.MdiParent;
-			c.MdiParent = null;
-			Assert.IsFalse (c.IsHandleCreated, "FM5");
-			
-			o = c.Menu;
-			c.Menu = null;
-			Assert.IsFalse (c.IsHandleCreated, "FM6");
-			
-			o = c.MergedMenu;
-			Assert.IsFalse (c.IsHandleCreated, "FM7");
-			
-			o = c.MinimizeBox;
-			c.MinimizeBox = !c.MinimizeBox;
-			Assert.IsFalse (c.IsHandleCreated, "FM8");
-			
-			o = c.MinimumSize;
-			c.MinimumSize = c.MinimumSize + new Size (1, 1);
-			Assert.IsFalse (c.IsHandleCreated, "FM9");
-			
-			o = c.Modal;
-			Assert.IsFalse (c.IsHandleCreated, "FM10");
-			
-			o = c.Opacity;
-			c.Opacity = 0.9;
-			Assert.IsFalse (c.IsHandleCreated, "FO1");
-			
-			o = c.OwnedForms;
-			Assert.IsFalse (c.IsHandleCreated, "FO2");
-			
-			o = c.Owner;
-			c.Owner = null;
-			Assert.IsFalse (c.IsHandleCreated, "FO3");
-			
-			// P - R
-			o = c.Padding;
-			c.Padding = new Padding (4);
-			Assert.IsFalse (c.IsHandleCreated, "A52");
-			o = c.Parent;
-			c.TopLevel = false;
-			c.Parent = new Form ();
-			Assert.IsFalse (c.IsHandleCreated, "A53");
-			c.Close ();
-			
-			c = new Form ();
-			o = c.PreferredSize;
-			Assert.IsFalse (c.IsHandleCreated, "A54");
-			o = c.ProductName;
-			Assert.IsFalse (c.IsHandleCreated, "A55");
-			o = c.ProductVersion;
-			Assert.IsFalse (c.IsHandleCreated, "A56");
-			o = c.RecreatingHandle;
-			Assert.IsFalse (c.IsHandleCreated, "A57");
-			o = c.Region;
-			c.Region = new Region (new Rectangle (0, 0, 177, 177));
-			Assert.IsFalse (c.IsHandleCreated, "A58");
-			o = c.Right;
-			Assert.IsFalse (c.IsHandleCreated, "A59");
-			o = c.RightToLeft;
-			c.RightToLeft = RightToLeft.Yes;
-			Assert.IsFalse (c.IsHandleCreated, "A60");
-
-			// P - R - Form
-			o = c.ParentForm;
-			Assert.IsFalse (c.IsHandleCreated, "FP1");
-
-#if !__MonoCS__
-			o = c.RestoreBounds;
-			Assert.IsFalse (c.IsHandleCreated, "FR1"); 
-#endif
-			
-
-			// S - W
-			o = c.Site;
-			Assert.IsFalse (c.IsHandleCreated, "A61");
-			o = c.Size;
-			c.Size = new Size (188, 188);
-			Assert.IsFalse (c.IsHandleCreated, "A62");
-			o = c.TabIndex;
-			c.TabIndex = 5;
-			Assert.IsFalse (c.IsHandleCreated, "A63");
-			o = c.Tag;
-			c.Tag = "moooooooo";
-			Assert.IsFalse (c.IsHandleCreated, "A64");
-			o = c.Text;
-			c.Text = "meoooowww";
-			Assert.IsFalse (c.IsHandleCreated, "A65");
-			o = c.Top;
-			c.Top = 16;
-			Assert.IsFalse (c.IsHandleCreated, "A66");
-			o = c.TopLevelControl;
-			Assert.IsFalse (c.IsHandleCreated, "A67");
-#if !__MonoCS__
-			o = c.UseWaitCursor;
-			c.UseWaitCursor = true;
-			Assert.IsFalse (c.IsHandleCreated, "A68");
-#endif
-			o = c.Visible;
-			Assert.IsFalse (c.IsHandleCreated, "A69");
-			
-			c.Visible = true;
-			Assert.IsTrue (c.IsHandleCreated, "A69-b");
-			c.Dispose ();
-			c = new Form ();
-			
-			o = c.Width;
-			c.Width = 190;
-			Assert.IsFalse (c.IsHandleCreated, "A70");
-			o = c.WindowTarget;
-			Assert.IsFalse (c.IsHandleCreated, "A71");
-
-			// S - W - Form
-
-			o = c.ShowIcon;
-			c.ShowIcon = !c.ShowIcon;
-			Assert.IsFalse (c.IsHandleCreated, "FS1"); 
-			
-			o = c.ShowInTaskbar;
-			c.ShowInTaskbar = !c.ShowInTaskbar;
-			Assert.IsFalse (c.IsHandleCreated, "FS2");
-			
-			o = c.Size;
-			c.Size = c.Size + new Size (1, 1);
-			Assert.IsFalse (c.IsHandleCreated, "FS3");
-			
-			o = c.SizeGripStyle;
-			c.SizeGripStyle = SizeGripStyle.Show;
-			Assert.IsFalse (c.IsHandleCreated, "FS4");
-			
-			o = c.StartPosition;
-			c.StartPosition = FormStartPosition.Manual;
-			Assert.IsFalse (c.IsHandleCreated, "FS5");
-			
-			o = c.Text;
-			c.Text = "hooray!";
-			Assert.IsFalse (c.IsHandleCreated, "FT1");
-			
-			o = c.TopLevel;
-			c.TopLevel = true;
-			Assert.IsFalse (c.IsHandleCreated, "FT2-a");
-
-			o = c.TopLevel;
-			c.TopLevel = false;
-			Assert.IsFalse (c.IsHandleCreated, "FT2-b");
-			
-			o = c.TopMost;
-			c.TopMost = !c.TopMost;
-			Assert.IsFalse (c.IsHandleCreated, "FT3");
-			
-			o = c.TransparencyKey;
-			c.TransparencyKey = Color.BurlyWood;
-			Assert.IsFalse (c.IsHandleCreated, "FT4");
-
-#if !__MonoCS__
-			o = c.VerticalScroll;
-			Assert.IsFalse (c.IsHandleCreated, "FV1"); 
-#endif
-			
-			o = c.WindowState;
-			c.WindowState = FormWindowState.Maximized;
-			Assert.IsFalse (c.IsHandleCreated, "FW1");
-
-			c.Dispose ();
-			TestHelper.RemoveWarning (o);
-		}
-
-		[Test]
-		public void TestProtectedProperties ()
-		{
-			// Not a surprise, but none of these cause handle creation.
-			// Included just to absolutely certain.
-			ProtectedPropertyForm c = new ProtectedPropertyForm ();
-
-			object o;
-#if !__MonoCS__
-			o = c.PublicCanRaiseEvents;
-			Assert.IsFalse (c.IsHandleCreated, "A1");
-#endif
-			o = c.PublicCreateParams;
-			Assert.IsFalse (c.IsHandleCreated, "A2");
-			o = c.PublicDefaultCursor;
-			Assert.IsFalse (c.IsHandleCreated, "A3");
-			o = c.PublicDefaultImeMode;
-			Assert.IsFalse (c.IsHandleCreated, "A4");
-			o = c.PublicDefaultMargin;
-			Assert.IsFalse (c.IsHandleCreated, "A5");
-			o = c.PublicDefaultMaximumSize;
-			Assert.IsFalse (c.IsHandleCreated, "A6");
-			o = c.PublicDefaultMinimumSize;
-			Assert.IsFalse (c.IsHandleCreated, "A7");
-			o = c.PublicDefaultPadding;
-			Assert.IsFalse (c.IsHandleCreated, "A8");
-			o = c.PublicDefaultSize;
-			Assert.IsFalse (c.IsHandleCreated, "A9");
-			o = c.PublicDoubleBuffered;
-			c.PublicDoubleBuffered = !c.PublicDoubleBuffered;
-			Assert.IsFalse (c.IsHandleCreated, "A10");
-			o = c.PublicFontHeight;
-			c.PublicFontHeight = c.PublicFontHeight + 1;
-			Assert.IsFalse (c.IsHandleCreated, "A11");
-			o = c.PublicRenderRightToLeft;
-			Assert.IsFalse (c.IsHandleCreated, "A12");
-			o = c.PublicResizeRedraw;
-			c.PublicResizeRedraw = !c.PublicResizeRedraw;
-			Assert.IsFalse (c.IsHandleCreated, "A13");
-#if !__MonoCS__
-			o = c.PublicScaleChildren;
-			Assert.IsFalse (c.IsHandleCreated, "A14");
-#endif
-			o = c.PublicShowFocusCues;
-			Assert.IsFalse (c.IsHandleCreated, "A15");
-			o = c.PublicShowKeyboardCues;
-			Assert.IsFalse (c.IsHandleCreated, "A16");
-
-			o = c.PublicAutoScaleFactor;
-			Assert.IsFalse (c.IsHandleCreated, "F1"); 
-			
-			o = c.PublicDesignMode;
-			Assert.IsFalse (c.IsHandleCreated, "F2");
-			
-			o = c.PublicEvents;
-			Assert.IsFalse (c.IsHandleCreated, "F3");
-			
-			o = c.PublicHScroll;
-			c.PublicHScroll = !c.PublicHScroll;
-			Assert.IsFalse (c.IsHandleCreated, "F4");
-			
-			o = c.PublicMaximizedBounds;
-			c.PublicMaximizedBounds = new Rectangle (1, 1, 1, 1);
-			Assert.IsFalse (c.IsHandleCreated, "F5");
-
-			o = c.PublicShowWithoutActivation;
-			Assert.IsFalse (c.IsHandleCreated, "F6"); 
-						
-			o = c.PublicVScroll;
-			c.PublicVScroll = !c.PublicVScroll;
-			Assert.IsFalse (c.IsHandleCreated, "F7");
-			
-
-			TestHelper.RemoveWarning (o);
-		}
-
-		Form invokeform = new Form ();
-
-		[Test]
-		public void TestPublicMethods ()
-		{
-			// Public Methods that force Handle creation:
-			// - CreateGraphics ()
-			// - GetChildAtPoint ()
-			// - Invoke, BeginInvoke throws InvalidOperationException if Handle has not been created
-			// - PointToClient ()
-			// - PointToScreen ()
-			// - RectangleToClient ()
-			// - RectangleToScreen ()
-			// - Select ()
-			// - Show (IWin32Window)
-			// Notes:
-			// - CreateControl does NOT force Handle creation!
-			
-			Form c = new Form ();
-
-			c.BringToFront ();
-			Assert.IsFalse (c.IsHandleCreated, "A1");
-			
-			c.Contains (new Form ());
-			Assert.IsFalse (c.IsHandleCreated, "A2");
-			
-			c.CreateControl ();
-			Assert.IsFalse (c.IsHandleCreated, "A3");
-			
-			c = new Form ();
-			Graphics g = c.CreateGraphics ();
-			g.Dispose ();
-			Assert.IsTrue (c.IsHandleCreated, "A4");
-			c.Dispose ();
-			c = new Form ();
-			
-			c.Dispose ();
-			Assert.IsFalse (c.IsHandleCreated, "A5");
-			c = new Form ();
-
-			// This is weird, it causes a form to appear that won't go away until you move the mouse over it, 
-			// but it doesn't create a handle??
-			//DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
-			//Assert.IsFalse (c.IsHandleCreated, "A6");
-			//Assert.AreEqual (DragDropEffects.None, d, "A6b");
-			
-			//Bitmap b = new Bitmap (100, 100);
-			//c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));
-			//Assert.IsFalse (c.IsHandleCreated, "A7");
-			//b.Dispose ();
-			c.FindForm ();
-			Assert.IsFalse (c.IsHandleCreated, "A8");
-			
-			c.Focus ();
-			Assert.IsFalse (c.IsHandleCreated, "A9");
-
-			c.GetChildAtPoint (new Point (10, 10));
-			Assert.IsTrue (c.IsHandleCreated, "A10");
-			c.Dispose ();
-			c = new Form ();
-			
-			c.GetContainerControl ();
-			Assert.IsFalse (c.IsHandleCreated, "A11");
-			c.Dispose ();
-			
-			c = new Form ();
-			c.GetNextControl (new Control (), true);
-			Assert.IsFalse (c.IsHandleCreated, "A12");
-			c.GetPreferredSize (Size.Empty);
-			Assert.IsFalse (c.IsHandleCreated, "A13");
-			c.Hide ();
-			Assert.IsFalse (c.IsHandleCreated, "A14");
-			
-			c.Invalidate ();
-			Assert.IsFalse (c.IsHandleCreated, "A15");
-			
-			//c.Invoke (new InvokeDelegate (InvokeMethod));
-			//Assert.IsFalse (c.IsHandleCreated, "A16");
-			c.PerformLayout ();
-			Assert.IsFalse (c.IsHandleCreated, "A17");
-			
-			c.PointToClient (new Point (100, 100));
-			Assert.IsTrue (c.IsHandleCreated, "A18");
-			c.Dispose ();
-			c = new Form ();
-			
-			c.PointToScreen (new Point (100, 100));
-			Assert.IsTrue (c.IsHandleCreated, "A19");
-			c.Dispose ();
-			
-			c = new Form ();
-			
-			//c.PreProcessControlMessage   ???
-			//c.PreProcessMessage          ???
-			c.RectangleToClient (new Rectangle (0, 0, 100, 100));
-			Assert.IsTrue (c.IsHandleCreated, "A20");
-			c.Dispose ();
-			c = new Form ();
-			c.RectangleToScreen (new Rectangle (0, 0, 100, 100));
-			Assert.IsTrue (c.IsHandleCreated, "A21");
-			c.Dispose ();
-			c = new Form ();
-			c.Refresh ();
-			Assert.IsFalse (c.IsHandleCreated, "A22");
-			c.ResetBackColor ();
-			Assert.IsFalse (c.IsHandleCreated, "A23");
-			c.ResetBindings ();
-			Assert.IsFalse (c.IsHandleCreated, "A24");
-			c.ResetCursor ();
-			Assert.IsFalse (c.IsHandleCreated, "A25");
-			c.ResetFont ();
-			Assert.IsFalse (c.IsHandleCreated, "A26");
-			c.ResetForeColor ();
-			Assert.IsFalse (c.IsHandleCreated, "A27");
-			c.ResetImeMode ();
-			Assert.IsFalse (c.IsHandleCreated, "A28");
-			c.ResetRightToLeft ();
-			Assert.IsFalse (c.IsHandleCreated, "A29");
-			c.ResetText ();
-			Assert.IsFalse (c.IsHandleCreated, "A30");
-			c.SuspendLayout ();
-			Assert.IsFalse (c.IsHandleCreated, "A31");
-			c.ResumeLayout ();
-			Assert.IsFalse (c.IsHandleCreated, "A32");
-			c.Scale (new SizeF (1.5f, 1.5f));
-			Assert.IsFalse (c.IsHandleCreated, "A33");
-			c.Select ();
-			Assert.IsTrue (c.IsHandleCreated, "A34");
-			c.Dispose ();
-			
-			c = new Form ();
-			
-			c.SelectNextControl (new Control (), true, true, true, true);
-			Assert.IsFalse (c.IsHandleCreated, "A35");
-			c.SetBounds (0, 0, 100, 100);
-			Assert.IsFalse (c.IsHandleCreated, "A36");
-			c.Update ();
-			Assert.IsFalse (c.IsHandleCreated, "A37");
-			
-			// Form
-			
-			c.Activate ();
-			Assert.IsFalse (c.IsHandleCreated, "F1");
-			
-			c.AddOwnedForm (new Form ());
-			Assert.IsFalse (c.IsHandleCreated, "F2");
-			
-			c.Close ();
-			Assert.IsFalse (c.IsHandleCreated, "F3");
-			
-			c.Hide ();
-			Assert.IsFalse (c.IsHandleCreated, "F4");
-			
-			c.LayoutMdi (MdiLayout.Cascade);
-			Assert.IsFalse (c.IsHandleCreated, "F5");
-
-#if !__MonoCS__
-			c.PerformAutoScale ();
-			Assert.IsFalse (c.IsHandleCreated, "F6"); 
-#endif
-			
-			c.PerformLayout ();
-			Assert.IsFalse (c.IsHandleCreated, "F7");
-			
-			c.AddOwnedForm (new Form ());
-			c.RemoveOwnedForm (c.OwnedForms [c.OwnedForms.Length - 1]);
-			Assert.IsFalse (c.IsHandleCreated, "F8");
-			
-			c.ScrollControlIntoView (null);
-			Assert.IsFalse (c.IsHandleCreated, "F9");
-			
-			c.SetAutoScrollMargin (7, 13);
-			Assert.IsFalse (c.IsHandleCreated, "F10");
-			
-			c.SetDesktopBounds (-1, -1, 144, 169);
-			Assert.IsFalse (c.IsHandleCreated, "F11");
-			
-			c.SetDesktopLocation (7, 13);
-			Assert.IsFalse (c.IsHandleCreated, "F12");
-
-			c = new Form ();
-			c.Show (null);
-			Assert.IsTrue (c.IsHandleCreated, "F13");
-			c.Close ();
-			c = new Form (); 
-			
-			//c.ShowDialog ()
-			
-			c.ToString ();
-			Assert.IsFalse (c.IsHandleCreated, "F14");
-			
-			c.Validate ();
-			Assert.IsFalse (c.IsHandleCreated, "F15");
-
-#if !__MonoCS__
-			c.ValidateChildren ();
-			Assert.IsFalse (c.IsHandleCreated, "F16"); 
-#endif
-
-			c.Close ();
-		}
-
-		[Test]
-		public void Show ()
-		{
-			Form c = new Form ();
-			Assert.IsFalse (c.IsHandleCreated, "A1");
-			c.HandleCreated += new EventHandler (HandleCreated_WriteStackTrace);
-			c.Show ();
-			Assert.IsTrue (c.IsHandleCreated, "A2");
-			c.Dispose ();
-		}
-
-		void HandleCreated_WriteStackTrace (object sender, EventArgs e)
-		{
-			//Console.WriteLine (Environment.StackTrace);
-		}
-
-		public delegate void InvokeDelegate ();
-		public void InvokeMethod () { invokeform.Text = "methodinvoked"; }
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void InvokeIOE ()
-		{
-			Form c = new Form ();
-			c.Invoke (new InvokeDelegate (InvokeMethod));
-		}
-
-		public class ProtectedPropertyForm : Form
-		{
-			public SizeF PublicAutoScaleFactor { get { return base.AutoScaleFactor; } } 
-#if !__MonoCS__
-			public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
-#endif
-			public CreateParams PublicCreateParams { get { return base.CreateParams; } }
-			public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
-			public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
-			public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
-			public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
-			public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
-			public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
-			public Size PublicDefaultSize { get { return base.DefaultSize; } }
-			public bool PublicDesignMode { get {return base.DesignMode; } }
-			public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
-			public EventHandlerList PublicEvents { get {return base.Events; } }			
-			public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
-			public bool PublicHScroll { get {return base.HScroll; } set { base.HScroll = value;} }
-			public Rectangle PublicMaximizedBounds { get {return base.MaximizedBounds; } set { base.MaximizedBounds = value; }}
-			public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
-			public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
-#if !__MonoCS__
-			public bool PublicScaleChildren { get { return base.ScaleChildren; } }
-#endif
-			public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
-			public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }
-			public bool PublicShowWithoutActivation { get { return base.ShowWithoutActivation; } } 
-			public bool PublicVScroll { get { return base.VScroll; } set { base.VScroll = value; } }
-		}
-
-		[Test]
-		public void TestProtectedMethods ()
-		{
-			// Protected Methods that force Handle creation:
-			// - CreateAccessibilityInstance ()
-			// - CreateHandle ()
-			// - IsInputChar ()
-			// - Select ()
-			// - SetVisibleCore ()
-			// - CenterToParent ()
-			// - CenterToScreen ()
-			ProtectedMethodsForm c = new ProtectedMethodsForm ();
-
-			c.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
-			Assert.IsFalse (c.IsHandleCreated, "A1");
-			c.PublicCreateAccessibilityInstance ();
-			Assert.IsTrue (c.IsHandleCreated, "A2");
-			c.Dispose ();
-			c = new ProtectedMethodsForm ();
-			c.PublicCreateControlsInstance ();
-			Assert.IsFalse (c.IsHandleCreated, "A3");
-			c.PublicCreateHandle ();
-			Assert.IsTrue (c.IsHandleCreated, "A4");
-			c.Dispose ();
-			
-			c = new ProtectedMethodsForm ();
-			c.PublicDestroyHandle ();
-			Assert.IsFalse (c.IsHandleCreated, "A5");
-			c.Dispose ();
-			c = new ProtectedMethodsForm ();
-			c.PublicGetAccessibilityObjectById (0);
-			Assert.IsFalse (c.IsHandleCreated, "A6");
-#if !__MonoCS__
-			c.PublicGetAutoSizeMode ();
-			Assert.IsFalse (c.IsHandleCreated, "A7");
-			c.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
-			Assert.IsFalse (c.IsHandleCreated, "A8");
-#endif
-			c.PublicGetStyle (ControlStyles.FixedHeight);
-			Assert.IsFalse (c.IsHandleCreated, "A9");
-			c.PublicGetTopLevel ();
-			Assert.IsFalse (c.IsHandleCreated, "A10");
-			c.PublicInitLayout ();
-			Assert.IsFalse (c.IsHandleCreated, "A11");
-			c.PublicInvokeGotFocus (c, EventArgs.Empty);
-			Assert.IsFalse (c.IsHandleCreated, "A12");
-			c.PublicInvokeLostFocus (c, EventArgs.Empty);
-			Assert.IsFalse (c.IsHandleCreated, "A13");
-			c.PublicInvokeOnClick (c, EventArgs.Empty);
-			Assert.IsFalse (c.IsHandleCreated, "A14");
-			c.PublicInvokePaint (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
-			Assert.IsFalse (c.IsHandleCreated, "A15");
-			c.PublicInvokePaintBackground (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
-			Assert.IsFalse (c.IsHandleCreated, "A16");
-			c.PublicIsInputChar ('c');
-			Assert.IsTrue (c.IsHandleCreated, "A17");
-			c.Dispose ();
-			
-			c = new ProtectedMethodsForm ();
-			c.PublicIsInputKey (Keys.B);
-			Assert.IsFalse (c.IsHandleCreated, "A18");
-			c.PublicNotifyInvalidate (Rectangle.Empty);
-			Assert.IsFalse (c.IsHandleCreated, "A19");
-			Form f = new Form ();
-			c.TopLevel = false;
-			f.Controls.Add (c);
-			c.PublicOnVisibleChanged (EventArgs.Empty);
-			Assert.IsFalse (c.IsHandleCreated, "A20");
-			c.Dispose ();
-			c = new ProtectedMethodsForm ();
-			c.PublicRaiseDragEvent (null, null);
-			Assert.IsFalse (c.IsHandleCreated, "A21");
-			c.PublicRaiseKeyEvent (null, null);
-			Assert.IsFalse (c.IsHandleCreated, "A22");
-			c.PublicRaiseMouseEvent (null, null);
-			Assert.IsFalse (c.IsHandleCreated, "A23");
-			c.PublicRaisePaintEvent (null, null);
-			Assert.IsFalse (c.IsHandleCreated, "A24");
-			c.PublicRecreateHandle ();
-			Assert.IsFalse (c.IsHandleCreated, "A25");
-			c.PublicResetMouseEventArgs ();
-			Assert.IsFalse (c.IsHandleCreated, "A26");
-			c.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
-			Assert.IsFalse (c.IsHandleCreated, "A27");
-			c.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
-			Assert.IsFalse (c.IsHandleCreated, "A28");
-			c.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
-			Assert.IsFalse (c.IsHandleCreated, "A29");
-			c.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
-			Assert.IsFalse (c.IsHandleCreated, "A30");
-#if !__MonoCS__
-			c.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
-			Assert.IsFalse (c.IsHandleCreated, "A31");
-#endif
-			c.PublicScaleCore (1.5f, 1.5f);
-			Assert.IsFalse (c.IsHandleCreated, "A32");
-			c.PublicSelect ();
-			Assert.IsTrue (c.IsHandleCreated, "A33");
-			c.Dispose ();
-			
-			c = new ProtectedMethodsForm ();
-#if !__MonoCS__
-			c.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
-			Assert.IsFalse (c.IsHandleCreated, "A34");
-#endif
-			c.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
-			Assert.IsFalse (c.IsHandleCreated, "A35");
-			c.PublicSetClientSizeCore (122, 122);
-			Assert.IsFalse (c.IsHandleCreated, "A36");
-			c.PublicSetStyle (ControlStyles.FixedHeight, true);
-			Assert.IsFalse (c.IsHandleCreated, "A37");
-			
-			c.PublicSetTopLevel (true);
-			Assert.IsFalse (c.IsHandleCreated, "A38");
-			c.Dispose ();
-			
-			c = new ProtectedMethodsForm ();
-			
-			c.PublicSetVisibleCore (true);
-			Assert.IsTrue (c.IsHandleCreated, "A39");
-			c.Dispose ();
-			
-			c = new ProtectedMethodsForm ();
-			c.PublicSizeFromClientSize (new Size (160, 160));
-			Assert.IsFalse (c.IsHandleCreated, "A40");
-			c.PublicUpdateBounds ();
-			Assert.IsFalse (c.IsHandleCreated, "A41");
-			c.PublicUpdateStyles ();
-			Assert.IsFalse (c.IsHandleCreated, "A42");
-			c.PublicUpdateZOrder ();
-			Assert.IsFalse (c.IsHandleCreated, "A43");
-			c.Dispose ();
-			
-			// Form
-			c = new ProtectedMethodsForm ();
-			c.IsMdiContainer = true;
-			new Form ().MdiParent = c;
-			new Form ().MdiParent = c;
-			c.PublicActivateMdiChild (c.MdiChildren [0]);
-			c.PublicActivateMdiChild (c.MdiChildren [1]);
-			Assert.IsFalse (c.IsHandleCreated, "F1");
-			c.Dispose ();
-			c = new ProtectedMethodsForm();
-
-			c.PublicAdjustFormScrollbars (true);
-			Assert.IsFalse (c.IsHandleCreated, "F2");
-			
-			c.PublicCenterToParent ();
-			Assert.IsTrue (c.IsHandleCreated, "F3");
-			c.Dispose ();
-			c = new ProtectedMethodsForm ();
-			
-			c.PublicCenterToScreen ();
-			Assert.IsTrue (c.IsHandleCreated, "F4");
-			c.Dispose ();
-			c = new ProtectedMethodsForm ();
-			
-			c.PublicGetScrollState (1);
-			Assert.IsFalse (c.IsHandleCreated, "F5");
-			
-			c.PublicGetService (typeof (int));
-			Assert.IsFalse (c.IsHandleCreated, "F6");
-
-			Message m = new Message ();
-			c.PublicProcessCmdKey (ref m, Keys.C);
-			Assert.IsFalse (c.IsHandleCreated, "F7");
-			
-			c.PublicProcessDialogChar ('p');
-			Assert.IsFalse (c.IsHandleCreated, "F8");
-			
-			c.PublicProcessDialogKey (Keys.D);
-			Assert.IsFalse (c.IsHandleCreated, "F9");
-			
-			c.PublicProcessKeyEventArgs (ref m);
-			Assert.IsFalse (c.IsHandleCreated, "F10");
-			
-			c.PublicProcessKeyMessage (ref m);
-			Assert.IsFalse (c.IsHandleCreated, "F11");
-			
-			c.PublicProcessKeyPreview (ref m);
-			Assert.IsFalse (c.IsHandleCreated, "F12");
-
-			c.PublicProcessMnemonic ('Z');
-			Assert.IsFalse (c.IsHandleCreated, "F13");
-			
-			c.PublicProcessTabKey (true);
-			Assert.IsFalse (c.IsHandleCreated, "F14");
-
-#if !__MonoCS__
-			c.Controls.Add (new Control ());
-			c.PublicScrollToControl (c.Controls [0]);
-			Assert.IsFalse (c.IsHandleCreated, "F15");
-			c.Dispose ();
-			c = new ProtectedMethodsForm (); 
-#endif
-			
-			c.PublicSelect (true, true);
-			Assert.IsTrue (c.IsHandleCreated, "F16");
-			c.Dispose ();
-			
-			c = new ProtectedMethodsForm();
-			
-			c.PublicSetDisplayRectLocation (13, 17);
-			Assert.IsFalse (c.IsHandleCreated, "F17");
-			
-			c.PublicSetScrollState (5, false);
-			Assert.IsFalse (c.IsHandleCreated, "F18");
-			
-			c.PublicUpdateDefaultButton (3, false);
-			Assert.IsFalse (c.IsHandleCreated, "F19");
-
-			c.Dispose ();
-		}
-
-		public class ProtectedMethodsForm : Form
-		{
-			public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }
-			public void PublicActivateMdiChild (Form form) { base.ActivateMdiChild (form); }
-			public void PublicAdjustFormScrollbars (bool displayScrollbars) {base.AdjustFormScrollbars (displayScrollbars); }
-			public void PublicCenterToParent () { base.CenterToParent (); }
-			public void PublicCenterToScreen () { base.CenterToScreen (); }
-			public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }
-			public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
-			public void PublicCreateHandle () { base.CreateHandle (); }
-			public void PublicDestroyHandle () { base.DestroyHandle (); }
-			public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
-#if !__MonoCS__
-			public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
-			public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
-#endif
-			public bool PublicGetScrollState (int bit) { return base.GetScrollState (bit); }
-			public object PublicGetService (Type service) { return base.GetService (service); }
-			public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }
-			public bool PublicGetTopLevel () { return base.GetTopLevel (); }
-			public void PublicInitLayout () { base.InitLayout (); }
-			public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }
-			public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }
-			public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }
-			public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }
-			public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }
-			public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
-			public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
-			public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
-			public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
-			public void PublicProcessCmdKey (ref Message msg, Keys keyData) { base.ProcessCmdKey (ref msg, keyData); }
-			public void PublicProcessDialogChar (char charCode) { base.ProcessDialogChar (charCode); }
-			public void PublicProcessDialogKey (Keys keyData) { base.ProcessDialogKey (keyData); }
-			public void PublicProcessKeyEventArgs (ref Message m) { base.ProcessKeyEventArgs (ref m); }
-			public void PublicProcessKeyMessage (ref Message m) { base.ProcessKeyMessage (ref m); }
-			public void PublicProcessKeyPreview (ref Message m) { base.ProcessKeyPreview (ref m); }
-			public void PublicProcessMnemonic (char charCode) { base.ProcessMnemonic (charCode); }
-			public void PublicProcessTabKey (bool forward) { base.ProcessTabKey (forward); }
-			public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
-			public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
-			public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
-			public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }
-			public void PublicRecreateHandle () { base.RecreateHandle (); }
-			public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }
-			public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }
-			public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
-			public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
-			public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
-#if !__MonoCS__
-			public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
-#endif
-			public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
-#if !__MonoCS__
-			public void PublicScrollToControl (Control activeControl) { base.ScrollToControl (activeControl); } 
-#endif
-			public void PublicSelect () { base.Select (); }
-			public void PublicSelect (bool directed, bool forward) { base.Select (directed, forward); }
-
-#if !__MonoCS__
-			public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
-#endif
-			public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
-			public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }
-			public void PublicSetDisplayRectLocation (int x, int y) { base.SetDisplayRectLocation (x, y); }
-			public void PublicSetScrollState (int bit, bool value) { base.SetScrollState (bit, value); }
-			public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
-			public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
-			public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
-			public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
-			public void PublicUpdateBounds () { base.UpdateBounds (); }
-			public void PublicUpdateDefaultButton (int bit, bool value) { base.UpdateDefaultButton (); }
-			public void PublicUpdateStyles () { base.UpdateStyles (); }
-			public void PublicUpdateZOrder () { base.UpdateZOrder (); }
-		}
-	}
-}
+//
+// FormTest.cs: Test cases for Form.
+//
+// Author:
+//   Ritvik Mayank (mritvik@novell.com)
+//
+// (C) 2005 Novell, Inc. (http://www.novell.com)
+//
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Reflection;
+using System.Windows.Forms;
+
+using NUnit.Framework;
+
+using CategoryAttribute = NUnit.Framework.CategoryAttribute;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class FormHandleTest : TestHelper
+	{
+		[Test]
+		public void TestConstructors ()
+		{
+			Form c = new Form ();
+			Assert.IsFalse (c.IsHandleCreated, "A1");
+		}
+
+		[Test]
+		public void TestContextMenu ()
+		{
+			Form c = new Form ();
+			c.ContextMenu = new ContextMenu ();
+			c.ContextMenu.MenuItems.Add (new MenuItem ());
+			c.ContextMenu.MenuItems [0].Text = "New";
+			Assert.IsFalse (c.IsHandleCreated);
+		}
+
+		[Test] // bug #81272
+		public void TestMenu ()
+		{
+			Form c = new Form ();
+			c.Menu = new MainMenu ();
+			c.Menu.MenuItems.Add (new MenuItem ());
+			c.Menu.MenuItems [0].Text = "New";
+			Assert.IsFalse (c.IsHandleCreated);
+		}
+
+		[Test]
+		public void TestPublicProperties ()
+		{
+			// This long, carpal-tunnel syndrome inducing test shows us that
+			// the following properties cause the Handle to be created:
+			// - AccessibilityObject	[get]
+			// - Capture			[set]
+			// - Handle			[get]
+			// - Visible			[set]
+			
+			Form c = new Form ();
+			// A
+			object o = c.AccessibilityObject;
+			Assert.IsTrue (c.IsHandleCreated, "A0");
+			c.Dispose ();
+			
+			c = new Form ();
+			o = c.AccessibleDefaultActionDescription;
+			c.AccessibleDefaultActionDescription = "playdoh";
+			Assert.IsFalse (c.IsHandleCreated, "A1");
+			o = c.AccessibleDescription;
+			c.AccessibleDescription = "more playdoh!";
+			Assert.IsFalse (c.IsHandleCreated, "A2");
+			o = c.AccessibleName;
+			c.AccessibleName = "playdoh fun factory";
+			Assert.IsFalse (c.IsHandleCreated, "A3");
+			o = c.AccessibleRole;
+			c.AccessibleRole = AccessibleRole.Border;
+			Assert.IsFalse (c.IsHandleCreated, "A4");
+			o = c.AllowDrop;
+			c.AllowDrop = true;
+			Assert.IsFalse (c.IsHandleCreated, "A5");
+			// If we don't reset the control, handle creation will fail
+			// because AllowDrop requires STAThread, which Nunit doesn't do
+			c.Dispose ();
+			
+			c = new Form ();
+			o = c.Anchor;
+			c.Anchor = AnchorStyles.Right;
+			Assert.IsFalse (c.IsHandleCreated, "A6");
+#if !__MonoCS__
+			o = c.AutoScrollOffset;
+			c.AutoScrollOffset = new Point (40, 40);
+			Assert.IsFalse (c.IsHandleCreated, "A7");
+#endif
+			o = c.AutoSize;
+			c.AutoSize = true;
+			Assert.IsFalse (c.IsHandleCreated, "A8");
+
+			// A - Form			
+			o = c.AcceptButton;
+			c.AcceptButton = null;
+			Assert.IsFalse (c.IsHandleCreated, "FA1");
+			
+			o = c.ActiveControl;
+			c.ActiveControl = null;
+			Assert.IsFalse (c.IsHandleCreated, "FA2");
+			
+			o = c.ActiveMdiChild;
+			Assert.IsFalse (c.IsHandleCreated, "FA3");
+			
+			o = c.AllowTransparency;
+			c.AllowTransparency = !c.AllowTransparency;
+			Assert.IsFalse (c.IsHandleCreated, "FA4");
+
+			o = c.AutoScaleDimensions;
+			c.AutoScaleDimensions = SizeF.Empty;
+			Assert.IsFalse (c.IsHandleCreated, "FA5");
+			
+			o = c.AutoScaleMode;
+			c.AutoScaleMode = AutoScaleMode.Dpi;
+			Assert.IsFalse (c.IsHandleCreated, "FA6");
+			o = c.AutoScroll;
+			c.AutoScroll = !c.AutoScroll;
+			Assert.IsFalse (c.IsHandleCreated, "FA7");
+			
+			o = c.AutoScrollMargin;
+			c.AutoScrollMargin = new Size (c.AutoScrollMargin.Width + 1, c.AutoScrollMargin.Height + 1);
+			Assert.IsFalse (c.IsHandleCreated, "FA8");
+			
+			o = c.AutoScrollMinSize;
+			c.AutoScrollMinSize = new Size (c.AutoScrollMinSize.Width + 1, c.AutoScrollMinSize.Height + 1);
+			Assert.IsFalse (c.IsHandleCreated, "FA9");
+
+#if !__MonoCS__
+			o = c.AutoScrollOffset;
+			c.AutoScrollOffset = new Point (c.AutoScrollOffset.X + 1, c.AutoScrollOffset.Y + 1);
+			Assert.IsFalse (c.IsHandleCreated, "FA10"); 
+#endif
+			
+			o = c.AutoScrollPosition;
+			c.AutoScrollPosition = new Point (c.AutoScrollPosition.X + 1, c.AutoScrollPosition.Y + 1);
+			Assert.IsFalse (c.IsHandleCreated, "FA11");
+
+			o = c.AutoSize;
+			c.AutoSize = !c.AutoSize;
+			Assert.IsFalse (c.IsHandleCreated, "FA12"); 
+#if !__MonoCS__
+			o = c.AutoSizeMode;
+			c.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			Assert.IsFalse (c.IsHandleCreated, "FA13");
+#endif		
+			o = c.AutoValidate;
+			c.AutoValidate = AutoValidate.EnableAllowFocusChange;
+			Assert.IsFalse (c.IsHandleCreated, "FA14");
+
+			// B
+			o = c.BackColor;
+			c.BackColor = Color.Green;
+			Assert.IsFalse (c.IsHandleCreated, "A9");
+			o = c.BackgroundImage;
+			c.BackgroundImage = new Bitmap (1, 1);
+			Assert.IsFalse (c.IsHandleCreated, "A10");
+			o = c.BackgroundImageLayout;
+			c.BackgroundImageLayout = ImageLayout.Stretch;
+			Assert.IsFalse (c.IsHandleCreated, "A11");
+			o = c.BindingContext;
+			c.BindingContext = new BindingContext ();
+			Assert.IsFalse (c.IsHandleCreated, "A12");
+			o = c.Bottom;
+			Assert.IsFalse (c.IsHandleCreated, "A13");
+			o = c.Bounds;
+			c.Bounds = new Rectangle (0, 0, 12, 12);
+			Assert.IsFalse (c.IsHandleCreated, "A14");
+
+
+			// B - Form
+			o = c.BindingContext;
+			c.BindingContext = null;
+			Assert.IsFalse (c.IsHandleCreated, "FB1");
+			
+			// C
+			o = c.CanFocus;
+			Assert.IsFalse (c.IsHandleCreated, "A15");
+			o = c.CanSelect;
+			Assert.IsFalse (c.IsHandleCreated, "A16");
+			o = c.Capture;
+			Assert.IsFalse (c.IsHandleCreated, "A17a");
+			c.Capture = true;
+			Assert.IsTrue (c.IsHandleCreated, "A17b");
+			c.Dispose ();
+			
+			c = new Form ();
+			o = c.CausesValidation;
+			c.CausesValidation = false;
+			Assert.IsFalse (c.IsHandleCreated, "A18");
+			o = c.ClientRectangle;
+			Assert.IsFalse (c.IsHandleCreated, "A19");
+			o = c.ClientSize;
+			c.ClientSize = new Size (30, 30);
+			Assert.IsFalse (c.IsHandleCreated, "A20");
+			o = c.CompanyName;
+			Assert.IsFalse (c.IsHandleCreated, "A21");
+			o = c.Container;
+			Assert.IsFalse (c.IsHandleCreated, "A22");
+			o = c.ContainsFocus;
+			Assert.IsFalse (c.IsHandleCreated, "A23");
+			o = c.ContextMenu;
+			c.ContextMenu = new ContextMenu ();
+			Assert.IsFalse (c.IsHandleCreated, "A24");
+			o = c.ContextMenuStrip;
+			c.ContextMenuStrip = new ContextMenuStrip ();
+			Assert.IsFalse (c.IsHandleCreated, "A25");
+			o = c.Controls;
+			Assert.IsFalse (c.IsHandleCreated, "A26");
+			o = c.Created;
+			Assert.IsFalse (c.IsHandleCreated, "A27");
+			o = c.Cursor;
+			c.Cursor = Cursors.Arrow;
+			Assert.IsFalse (c.IsHandleCreated, "A28");
+
+			// C - Form
+			o = c.CancelButton;
+			c.CancelButton = null;
+			Assert.IsFalse (c.IsHandleCreated, "FC1");
+			
+			o = c.ClientSize;
+			c.ClientSize = new Size (c.ClientSize.Width + 1, c.ClientSize.Height + 1);
+			Assert.IsFalse (c.IsHandleCreated, "FC2");
+			
+			o = c.Container;
+			Assert.IsFalse (c.IsHandleCreated, "FC3");
+			
+			o = c.ControlBox;
+			c.ControlBox = !c.ControlBox;
+			Assert.IsFalse (c.IsHandleCreated, "FC4");
+
+			o = c.CurrentAutoScaleDimensions;
+			Assert.IsFalse (c.IsHandleCreated, "FC5"); 
+
+			// D
+			o = c.DataBindings;
+			Assert.IsFalse (c.IsHandleCreated, "A29");
+			o = c.DisplayRectangle;
+			Assert.IsFalse (c.IsHandleCreated, "A30");
+			o = c.Disposing;
+			Assert.IsFalse (c.IsHandleCreated, "A31");
+			o = c.Dock;
+			c.Dock = DockStyle.Fill;
+			Assert.IsFalse (c.IsHandleCreated, "A32");
+
+			// D - Form
+			o = c.DataBindings;
+			Assert.IsFalse (c.IsHandleCreated, "FD6");
+			
+			o = c.DesktopBounds;
+			c.DesktopBounds = new Rectangle (3, 5, c.DesktopBounds.Width + 1, c.DesktopBounds.Height + 1);
+			Assert.IsFalse (c.IsHandleCreated, "FD7");
+			
+			o = c.DesktopLocation;
+			c.DesktopLocation = c.DesktopLocation + new Size (1, 1);
+			Assert.IsFalse (c.IsHandleCreated, "FD8");
+			
+			o = c.DialogResult;
+			c.DialogResult = DialogResult.Abort;
+			Assert.IsFalse (c.IsHandleCreated, "FD9");
+			
+			o = c.DisplayRectangle;
+			Assert.IsFalse (c.IsHandleCreated, "FD10");
+			
+			o = c.Disposing;
+			Assert.IsFalse (c.IsHandleCreated, "FD11");
+			
+			o = c.Dock;
+			c.Dock = DockStyle.Right;
+			Assert.IsFalse (c.IsHandleCreated, "FD12");
+
+			// E-H
+			o = c.Enabled;
+			c.Enabled = false;
+			Assert.IsFalse (c.IsHandleCreated, "A33");
+			c.Dispose ();
+			
+			c = new Form ();  //Reset just in case enable = false affects things
+			o = c.Focused;
+			Assert.IsFalse (c.IsHandleCreated, "A34");
+			o = c.Font;
+			c.Font = new Font (c.Font, FontStyle.Bold);
+			Assert.IsFalse (c.IsHandleCreated, "A35");
+			o = c.ForeColor;
+			c.ForeColor = Color.Green;
+			Assert.IsFalse (c.IsHandleCreated, "A36");
+			o = c.Handle;
+			Assert.IsTrue (c.IsHandleCreated, "A37");
+			c.Dispose ();
+			
+			c = new Form ();
+			o = c.HasChildren;
+			Assert.IsFalse (c.IsHandleCreated, "A38");
+			o = c.Height;
+			c.Height = 12;
+			Assert.IsFalse (c.IsHandleCreated, "A39");
+
+			// E-H - Form
+			o = c.FormBorderStyle;
+			c.FormBorderStyle = FormBorderStyle.FixedToolWindow;
+			Assert.IsFalse (c.IsHandleCreated, "FF1");
+			
+			o = c.HelpButton;
+			c.HelpButton = !c.HelpButton;
+			Assert.IsFalse (c.IsHandleCreated, "FH1");
+
+#if !__MonoCS__
+			o = c.HorizontalScroll;
+			Assert.IsFalse (c.IsHandleCreated, "FH2"); 
+#endif
+			// I - L
+			c.ImeMode = ImeMode.On;
+			Assert.IsFalse (c.IsHandleCreated, "A40");
+			o = c.InvokeRequired;
+			Assert.IsFalse (c.IsHandleCreated, "A41");
+			o = c.IsAccessible;
+			Assert.IsFalse (c.IsHandleCreated, "A42");
+			o = c.IsDisposed;
+			Assert.IsFalse (c.IsHandleCreated, "A43");
+#if !__MonoCS__
+			o = c.IsMirrored;
+			Assert.IsFalse (c.IsHandleCreated, "A44");
+#endif
+			o = c.LayoutEngine;
+			Assert.IsFalse (c.IsHandleCreated, "A45");
+			o = c.Left;
+			c.Left = 15;
+			Assert.IsFalse (c.IsHandleCreated, "A46");
+			o = c.Location;
+			c.Location = new Point (20, 20);
+			Assert.IsFalse (c.IsHandleCreated, "A47");
+
+			// I - L - Form
+			
+			o = c.Icon;
+			c.Icon = null;
+			Assert.IsFalse (c.IsHandleCreated, "FI1");
+			
+			o = c.IsMdiChild;
+			Assert.IsFalse (c.IsHandleCreated, "FI2");
+
+			o = c.IsMdiContainer;
+			c.IsMdiContainer = false;
+			Assert.IsFalse (c.IsHandleCreated, "FI3");
+			
+			o = c.IsRestrictedWindow;
+			Assert.IsFalse (c.IsHandleCreated, "FI4");
+			
+			o = c.KeyPreview;
+			c.KeyPreview = !c.KeyPreview;
+			Assert.IsFalse (c.IsHandleCreated, "FK1");
+			
+			o = c.Location;
+			c.Location = c.Location + new Size (1, 1);
+			Assert.IsFalse (c.IsHandleCreated, "FL1");
+			
+			
+			// M - N
+			o = c.Margin;
+			c.Margin = new Padding (6);
+			Assert.IsFalse (c.IsHandleCreated, "A48");
+			o = c.MaximumSize;
+			c.MaximumSize = new Size (500, 500);
+			Assert.IsFalse (c.IsHandleCreated, "A49");
+			o = c.MinimumSize;
+			c.MinimumSize = new Size (100, 100);
+			Assert.IsFalse (c.IsHandleCreated, "A50");
+			o = c.Name;
+			c.Name = "web";
+			Assert.IsFalse (c.IsHandleCreated, "A51");
+
+			// M - O - Form
+			o = c.MainMenuStrip;
+			c.MainMenuStrip = null;
+			Assert.IsFalse (c.IsHandleCreated, "FM1"); 
+			
+			o = c.MaximizeBox;
+			c.MaximizeBox = !c.MaximizeBox;
+			Assert.IsFalse (c.IsHandleCreated, "FM2");
+			
+			o = c.MaximumSize;
+			c.MaximumSize = c.MaximumSize + new Size (1, 1);
+			Assert.IsFalse (c.IsHandleCreated, "FM3");
+			
+			o = c.MdiChildren;
+			Assert.IsFalse (c.IsHandleCreated, "FM4");
+			
+			o = c.MdiParent;
+			c.MdiParent = null;
+			Assert.IsFalse (c.IsHandleCreated, "FM5");
+			
+			o = c.Menu;
+			c.Menu = null;
+			Assert.IsFalse (c.IsHandleCreated, "FM6");
+			
+			o = c.MergedMenu;
+			Assert.IsFalse (c.IsHandleCreated, "FM7");
+			
+			o = c.MinimizeBox;
+			c.MinimizeBox = !c.MinimizeBox;
+			Assert.IsFalse (c.IsHandleCreated, "FM8");
+			
+			o = c.MinimumSize;
+			c.MinimumSize = c.MinimumSize + new Size (1, 1);
+			Assert.IsFalse (c.IsHandleCreated, "FM9");
+			
+			o = c.Modal;
+			Assert.IsFalse (c.IsHandleCreated, "FM10");
+			
+			o = c.Opacity;
+			c.Opacity = 0.9;
+			Assert.IsFalse (c.IsHandleCreated, "FO1");
+			
+			o = c.OwnedForms;
+			Assert.IsFalse (c.IsHandleCreated, "FO2");
+			
+			o = c.Owner;
+			c.Owner = null;
+			Assert.IsFalse (c.IsHandleCreated, "FO3");
+			
+			// P - R
+			o = c.Padding;
+			c.Padding = new Padding (4);
+			Assert.IsFalse (c.IsHandleCreated, "A52");
+			o = c.Parent;
+			c.TopLevel = false;
+			c.Parent = new Form ();
+			Assert.IsFalse (c.IsHandleCreated, "A53");
+			c.Close ();
+			
+			c = new Form ();
+			o = c.PreferredSize;
+			Assert.IsFalse (c.IsHandleCreated, "A54");
+			o = c.ProductName;
+			Assert.IsFalse (c.IsHandleCreated, "A55");
+			o = c.ProductVersion;
+			Assert.IsFalse (c.IsHandleCreated, "A56");
+			o = c.RecreatingHandle;
+			Assert.IsFalse (c.IsHandleCreated, "A57");
+			o = c.Region;
+			c.Region = new Region (new Rectangle (0, 0, 177, 177));
+			Assert.IsFalse (c.IsHandleCreated, "A58");
+			o = c.Right;
+			Assert.IsFalse (c.IsHandleCreated, "A59");
+			o = c.RightToLeft;
+			c.RightToLeft = RightToLeft.Yes;
+			Assert.IsFalse (c.IsHandleCreated, "A60");
+
+			// P - R - Form
+			o = c.ParentForm;
+			Assert.IsFalse (c.IsHandleCreated, "FP1");
+
+#if !__MonoCS__
+			o = c.RestoreBounds;
+			Assert.IsFalse (c.IsHandleCreated, "FR1"); 
+#endif
+			
+
+			// S - W
+			o = c.Site;
+			Assert.IsFalse (c.IsHandleCreated, "A61");
+			o = c.Size;
+			c.Size = new Size (188, 188);
+			Assert.IsFalse (c.IsHandleCreated, "A62");
+			o = c.TabIndex;
+			c.TabIndex = 5;
+			Assert.IsFalse (c.IsHandleCreated, "A63");
+			o = c.Tag;
+			c.Tag = "moooooooo";
+			Assert.IsFalse (c.IsHandleCreated, "A64");
+			o = c.Text;
+			c.Text = "meoooowww";
+			Assert.IsFalse (c.IsHandleCreated, "A65");
+			o = c.Top;
+			c.Top = 16;
+			Assert.IsFalse (c.IsHandleCreated, "A66");
+			o = c.TopLevelControl;
+			Assert.IsFalse (c.IsHandleCreated, "A67");
+#if !__MonoCS__
+			o = c.UseWaitCursor;
+			c.UseWaitCursor = true;
+			Assert.IsFalse (c.IsHandleCreated, "A68");
+#endif
+			o = c.Visible;
+			Assert.IsFalse (c.IsHandleCreated, "A69");
+			
+			c.Visible = true;
+			Assert.IsTrue (c.IsHandleCreated, "A69-b");
+			c.Dispose ();
+			c = new Form ();
+			
+			o = c.Width;
+			c.Width = 190;
+			Assert.IsFalse (c.IsHandleCreated, "A70");
+			o = c.WindowTarget;
+			Assert.IsFalse (c.IsHandleCreated, "A71");
+
+			// S - W - Form
+
+			o = c.ShowIcon;
+			c.ShowIcon = !c.ShowIcon;
+			Assert.IsFalse (c.IsHandleCreated, "FS1"); 
+			
+			o = c.ShowInTaskbar;
+			c.ShowInTaskbar = !c.ShowInTaskbar;
+			Assert.IsFalse (c.IsHandleCreated, "FS2");
+			
+			o = c.Size;
+			c.Size = c.Size + new Size (1, 1);
+			Assert.IsFalse (c.IsHandleCreated, "FS3");
+			
+			o = c.SizeGripStyle;
+			c.SizeGripStyle = SizeGripStyle.Show;
+			Assert.IsFalse (c.IsHandleCreated, "FS4");
+			
+			o = c.StartPosition;
+			c.StartPosition = FormStartPosition.Manual;
+			Assert.IsFalse (c.IsHandleCreated, "FS5");
+			
+			o = c.Text;
+			c.Text = "hooray!";
+			Assert.IsFalse (c.IsHandleCreated, "FT1");
+			
+			o = c.TopLevel;
+			c.TopLevel = true;
+			Assert.IsFalse (c.IsHandleCreated, "FT2-a");
+
+			o = c.TopLevel;
+			c.TopLevel = false;
+			Assert.IsFalse (c.IsHandleCreated, "FT2-b");
+			
+			o = c.TopMost;
+			c.TopMost = !c.TopMost;
+			Assert.IsFalse (c.IsHandleCreated, "FT3");
+			
+			o = c.TransparencyKey;
+			c.TransparencyKey = Color.BurlyWood;
+			Assert.IsFalse (c.IsHandleCreated, "FT4");
+
+#if !__MonoCS__
+			o = c.VerticalScroll;
+			Assert.IsFalse (c.IsHandleCreated, "FV1"); 
+#endif
+			
+			o = c.WindowState;
+			c.WindowState = FormWindowState.Maximized;
+			Assert.IsFalse (c.IsHandleCreated, "FW1");
+
+			c.Dispose ();
+			TestHelper.RemoveWarning (o);
+		}
+
+		[Test]
+		public void TestProtectedProperties ()
+		{
+			// Not a surprise, but none of these cause handle creation.
+			// Included just to absolutely certain.
+			ProtectedPropertyForm c = new ProtectedPropertyForm ();
+
+			object o;
+#if !__MonoCS__
+			o = c.PublicCanRaiseEvents;
+			Assert.IsFalse (c.IsHandleCreated, "A1");
+#endif
+			o = c.PublicCreateParams;
+			Assert.IsFalse (c.IsHandleCreated, "A2");
+			o = c.PublicDefaultCursor;
+			Assert.IsFalse (c.IsHandleCreated, "A3");
+			o = c.PublicDefaultImeMode;
+			Assert.IsFalse (c.IsHandleCreated, "A4");
+			o = c.PublicDefaultMargin;
+			Assert.IsFalse (c.IsHandleCreated, "A5");
+			o = c.PublicDefaultMaximumSize;
+			Assert.IsFalse (c.IsHandleCreated, "A6");
+			o = c.PublicDefaultMinimumSize;
+			Assert.IsFalse (c.IsHandleCreated, "A7");
+			o = c.PublicDefaultPadding;
+			Assert.IsFalse (c.IsHandleCreated, "A8");
+			o = c.PublicDefaultSize;
+			Assert.IsFalse (c.IsHandleCreated, "A9");
+			o = c.PublicDoubleBuffered;
+			c.PublicDoubleBuffered = !c.PublicDoubleBuffered;
+			Assert.IsFalse (c.IsHandleCreated, "A10");
+			o = c.PublicFontHeight;
+			c.PublicFontHeight = c.PublicFontHeight + 1;
+			Assert.IsFalse (c.IsHandleCreated, "A11");
+			o = c.PublicRenderRightToLeft;
+			Assert.IsFalse (c.IsHandleCreated, "A12");
+			o = c.PublicResizeRedraw;
+			c.PublicResizeRedraw = !c.PublicResizeRedraw;
+			Assert.IsFalse (c.IsHandleCreated, "A13");
+#if !__MonoCS__
+			o = c.PublicScaleChildren;
+			Assert.IsFalse (c.IsHandleCreated, "A14");
+#endif
+			o = c.PublicShowFocusCues;
+			Assert.IsFalse (c.IsHandleCreated, "A15");
+			o = c.PublicShowKeyboardCues;
+			Assert.IsFalse (c.IsHandleCreated, "A16");
+
+			o = c.PublicAutoScaleFactor;
+			Assert.IsFalse (c.IsHandleCreated, "F1"); 
+			
+			o = c.PublicDesignMode;
+			Assert.IsFalse (c.IsHandleCreated, "F2");
+			
+			o = c.PublicEvents;
+			Assert.IsFalse (c.IsHandleCreated, "F3");
+			
+			o = c.PublicHScroll;
+			c.PublicHScroll = !c.PublicHScroll;
+			Assert.IsFalse (c.IsHandleCreated, "F4");
+			
+			o = c.PublicMaximizedBounds;
+			c.PublicMaximizedBounds = new Rectangle (1, 1, 1, 1);
+			Assert.IsFalse (c.IsHandleCreated, "F5");
+
+			o = c.PublicShowWithoutActivation;
+			Assert.IsFalse (c.IsHandleCreated, "F6"); 
+						
+			o = c.PublicVScroll;
+			c.PublicVScroll = !c.PublicVScroll;
+			Assert.IsFalse (c.IsHandleCreated, "F7");
+			
+
+			TestHelper.RemoveWarning (o);
+		}
+
+		Form invokeform = new Form ();
+
+		[Test]
+		public void TestPublicMethods ()
+		{
+			// Public Methods that force Handle creation:
+			// - CreateGraphics ()
+			// - GetChildAtPoint ()
+			// - Invoke, BeginInvoke throws InvalidOperationException if Handle has not been created
+			// - PointToClient ()
+			// - PointToScreen ()
+			// - RectangleToClient ()
+			// - RectangleToScreen ()
+			// - Select ()
+			// - Show (IWin32Window)
+			// Notes:
+			// - CreateControl does NOT force Handle creation!
+			
+			Form c = new Form ();
+
+			c.BringToFront ();
+			Assert.IsFalse (c.IsHandleCreated, "A1");
+			
+			c.Contains (new Form ());
+			Assert.IsFalse (c.IsHandleCreated, "A2");
+			
+			c.CreateControl ();
+			Assert.IsFalse (c.IsHandleCreated, "A3");
+			
+			c = new Form ();
+			Graphics g = c.CreateGraphics ();
+			g.Dispose ();
+			Assert.IsTrue (c.IsHandleCreated, "A4");
+			c.Dispose ();
+			c = new Form ();
+			
+			c.Dispose ();
+			Assert.IsFalse (c.IsHandleCreated, "A5");
+			c = new Form ();
+
+			// This is weird, it causes a form to appear that won't go away until you move the mouse over it, 
+			// but it doesn't create a handle??
+			//DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
+			//Assert.IsFalse (c.IsHandleCreated, "A6");
+			//Assert.AreEqual (DragDropEffects.None, d, "A6b");
+			
+			//Bitmap b = new Bitmap (100, 100);
+			//c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));
+			//Assert.IsFalse (c.IsHandleCreated, "A7");
+			//b.Dispose ();
+			c.FindForm ();
+			Assert.IsFalse (c.IsHandleCreated, "A8");
+			
+			c.Focus ();
+			Assert.IsFalse (c.IsHandleCreated, "A9");
+
+			c.GetChildAtPoint (new Point (10, 10));
+			Assert.IsTrue (c.IsHandleCreated, "A10");
+			c.Dispose ();
+			c = new Form ();
+			
+			c.GetContainerControl ();
+			Assert.IsFalse (c.IsHandleCreated, "A11");
+			c.Dispose ();
+			
+			c = new Form ();
+			c.GetNextControl (new Control (), true);
+			Assert.IsFalse (c.IsHandleCreated, "A12");
+			c.GetPreferredSize (Size.Empty);
+			Assert.IsFalse (c.IsHandleCreated, "A13");
+			c.Hide ();
+			Assert.IsFalse (c.IsHandleCreated, "A14");
+			
+			c.Invalidate ();
+			Assert.IsFalse (c.IsHandleCreated, "A15");
+			
+			//c.Invoke (new InvokeDelegate (InvokeMethod));
+			//Assert.IsFalse (c.IsHandleCreated, "A16");
+			c.PerformLayout ();
+			Assert.IsFalse (c.IsHandleCreated, "A17");
+			
+			c.PointToClient (new Point (100, 100));
+			Assert.IsTrue (c.IsHandleCreated, "A18");
+			c.Dispose ();
+			c = new Form ();
+			
+			c.PointToScreen (new Point (100, 100));
+			Assert.IsTrue (c.IsHandleCreated, "A19");
+			c.Dispose ();
+			
+			c = new Form ();
+			
+			//c.PreProcessControlMessage   ???
+			//c.PreProcessMessage          ???
+			c.RectangleToClient (new Rectangle (0, 0, 100, 100));
+			Assert.IsTrue (c.IsHandleCreated, "A20");
+			c.Dispose ();
+			c = new Form ();
+			c.RectangleToScreen (new Rectangle (0, 0, 100, 100));
+			Assert.IsTrue (c.IsHandleCreated, "A21");
+			c.Dispose ();
+			c = new Form ();
+			c.Refresh ();
+			Assert.IsFalse (c.IsHandleCreated, "A22");
+			c.ResetBackColor ();
+			Assert.IsFalse (c.IsHandleCreated, "A23");
+			c.ResetBindings ();
+			Assert.IsFalse (c.IsHandleCreated, "A24");
+			c.ResetCursor ();
+			Assert.IsFalse (c.IsHandleCreated, "A25");
+			c.ResetFont ();
+			Assert.IsFalse (c.IsHandleCreated, "A26");
+			c.ResetForeColor ();
+			Assert.IsFalse (c.IsHandleCreated, "A27");
+			c.ResetImeMode ();
+			Assert.IsFalse (c.IsHandleCreated, "A28");
+			c.ResetRightToLeft ();
+			Assert.IsFalse (c.IsHandleCreated, "A29");
+			c.ResetText ();
+			Assert.IsFalse (c.IsHandleCreated, "A30");
+			c.SuspendLayout ();
+			Assert.IsFalse (c.IsHandleCreated, "A31");
+			c.ResumeLayout ();
+			Assert.IsFalse (c.IsHandleCreated, "A32");
+			c.Scale (new SizeF (1.5f, 1.5f));
+			Assert.IsFalse (c.IsHandleCreated, "A33");
+			c.Select ();
+			Assert.IsTrue (c.IsHandleCreated, "A34");
+			c.Dispose ();
+			
+			c = new Form ();
+			
+			c.SelectNextControl (new Control (), true, true, true, true);
+			Assert.IsFalse (c.IsHandleCreated, "A35");
+			c.SetBounds (0, 0, 100, 100);
+			Assert.IsFalse (c.IsHandleCreated, "A36");
+			c.Update ();
+			Assert.IsFalse (c.IsHandleCreated, "A37");
+			
+			// Form
+			
+			c.Activate ();
+			Assert.IsFalse (c.IsHandleCreated, "F1");
+			
+			c.AddOwnedForm (new Form ());
+			Assert.IsFalse (c.IsHandleCreated, "F2");
+			
+			c.Close ();
+			Assert.IsFalse (c.IsHandleCreated, "F3");
+			
+			c.Hide ();
+			Assert.IsFalse (c.IsHandleCreated, "F4");
+			
+			c.LayoutMdi (MdiLayout.Cascade);
+			Assert.IsFalse (c.IsHandleCreated, "F5");
+
+#if !__MonoCS__
+			c.PerformAutoScale ();
+			Assert.IsFalse (c.IsHandleCreated, "F6"); 
+#endif
+			
+			c.PerformLayout ();
+			Assert.IsFalse (c.IsHandleCreated, "F7");
+			
+			c.AddOwnedForm (new Form ());
+			c.RemoveOwnedForm (c.OwnedForms [c.OwnedForms.Length - 1]);
+			Assert.IsFalse (c.IsHandleCreated, "F8");
+			
+			c.ScrollControlIntoView (null);
+			Assert.IsFalse (c.IsHandleCreated, "F9");
+			
+			c.SetAutoScrollMargin (7, 13);
+			Assert.IsFalse (c.IsHandleCreated, "F10");
+			
+			c.SetDesktopBounds (-1, -1, 144, 169);
+			Assert.IsFalse (c.IsHandleCreated, "F11");
+			
+			c.SetDesktopLocation (7, 13);
+			Assert.IsFalse (c.IsHandleCreated, "F12");
+
+			c = new Form ();
+			c.Show (null);
+			Assert.IsTrue (c.IsHandleCreated, "F13");
+			c.Close ();
+			c = new Form (); 
+			
+			//c.ShowDialog ()
+			
+			c.ToString ();
+			Assert.IsFalse (c.IsHandleCreated, "F14");
+			
+			c.Validate ();
+			Assert.IsFalse (c.IsHandleCreated, "F15");
+
+#if !__MonoCS__
+			c.ValidateChildren ();
+			Assert.IsFalse (c.IsHandleCreated, "F16"); 
+#endif
+
+			c.Close ();
+		}
+
+		[Test]
+		public void Show ()
+		{
+			Form c = new Form ();
+			Assert.IsFalse (c.IsHandleCreated, "A1");
+			c.HandleCreated += new EventHandler (HandleCreated_WriteStackTrace);
+			c.Show ();
+			Assert.IsTrue (c.IsHandleCreated, "A2");
+			c.Dispose ();
+		}
+
+		void HandleCreated_WriteStackTrace (object sender, EventArgs e)
+		{
+			//Console.WriteLine (Environment.StackTrace);
+		}
+
+		public delegate void InvokeDelegate ();
+		public void InvokeMethod () { invokeform.Text = "methodinvoked"; }
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void InvokeIOE ()
+		{
+			Form c = new Form ();
+			c.Invoke (new InvokeDelegate (InvokeMethod));
+		}
+
+		public class ProtectedPropertyForm : Form
+		{
+			public SizeF PublicAutoScaleFactor { get { return base.AutoScaleFactor; } } 
+#if !__MonoCS__
+			public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
+#endif
+			public CreateParams PublicCreateParams { get { return base.CreateParams; } }
+			public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
+			public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
+			public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
+			public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
+			public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
+			public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
+			public Size PublicDefaultSize { get { return base.DefaultSize; } }
+			public bool PublicDesignMode { get {return base.DesignMode; } }
+			public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
+			public EventHandlerList PublicEvents { get {return base.Events; } }			
+			public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
+			public bool PublicHScroll { get {return base.HScroll; } set { base.HScroll = value;} }
+			public Rectangle PublicMaximizedBounds { get {return base.MaximizedBounds; } set { base.MaximizedBounds = value; }}
+			public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
+			public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
+#if !__MonoCS__
+			public bool PublicScaleChildren { get { return base.ScaleChildren; } }
+#endif
+			public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
+			public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }
+			public bool PublicShowWithoutActivation { get { return base.ShowWithoutActivation; } } 
+			public bool PublicVScroll { get { return base.VScroll; } set { base.VScroll = value; } }
+		}
+
+		[Test]
+		public void TestProtectedMethods ()
+		{
+			// Protected Methods that force Handle creation:
+			// - CreateAccessibilityInstance ()
+			// - CreateHandle ()
+			// - IsInputChar ()
+			// - Select ()
+			// - SetVisibleCore ()
+			// - CenterToParent ()
+			// - CenterToScreen ()
+			ProtectedMethodsForm c = new ProtectedMethodsForm ();
+
+			c.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
+			Assert.IsFalse (c.IsHandleCreated, "A1");
+			c.PublicCreateAccessibilityInstance ();
+			Assert.IsTrue (c.IsHandleCreated, "A2");
+			c.Dispose ();
+			c = new ProtectedMethodsForm ();
+			c.PublicCreateControlsInstance ();
+			Assert.IsFalse (c.IsHandleCreated, "A3");
+			c.PublicCreateHandle ();
+			Assert.IsTrue (c.IsHandleCreated, "A4");
+			c.Dispose ();
+			
+			c = new ProtectedMethodsForm ();
+			c.PublicDestroyHandle ();
+			Assert.IsFalse (c.IsHandleCreated, "A5");
+			c.Dispose ();
+			c = new ProtectedMethodsForm ();
+			c.PublicGetAccessibilityObjectById (0);
+			Assert.IsFalse (c.IsHandleCreated, "A6");
+#if !__MonoCS__
+			c.PublicGetAutoSizeMode ();
+			Assert.IsFalse (c.IsHandleCreated, "A7");
+			c.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
+			Assert.IsFalse (c.IsHandleCreated, "A8");
+#endif
+			c.PublicGetStyle (ControlStyles.FixedHeight);
+			Assert.IsFalse (c.IsHandleCreated, "A9");
+			c.PublicGetTopLevel ();
+			Assert.IsFalse (c.IsHandleCreated, "A10");
+			c.PublicInitLayout ();
+			Assert.IsFalse (c.IsHandleCreated, "A11");
+			c.PublicInvokeGotFocus (c, EventArgs.Empty);
+			Assert.IsFalse (c.IsHandleCreated, "A12");
+			c.PublicInvokeLostFocus (c, EventArgs.Empty);
+			Assert.IsFalse (c.IsHandleCreated, "A13");
+			c.PublicInvokeOnClick (c, EventArgs.Empty);
+			Assert.IsFalse (c.IsHandleCreated, "A14");
+			c.PublicInvokePaint (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
+			Assert.IsFalse (c.IsHandleCreated, "A15");
+			c.PublicInvokePaintBackground (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
+			Assert.IsFalse (c.IsHandleCreated, "A16");
+			c.PublicIsInputChar ('c');
+			Assert.IsTrue (c.IsHandleCreated, "A17");
+			c.Dispose ();
+			
+			c = new ProtectedMethodsForm ();
+			c.PublicIsInputKey (Keys.B);
+			Assert.IsFalse (c.IsHandleCreated, "A18");
+			c.PublicNotifyInvalidate (Rectangle.Empty);
+			Assert.IsFalse (c.IsHandleCreated, "A19");
+			Form f = new Form ();
+			c.TopLevel = false;
+			f.Controls.Add (c);
+			c.PublicOnVisibleChanged (EventArgs.Empty);
+			Assert.IsFalse (c.IsHandleCreated, "A20");
+			c.Dispose ();
+			c = new ProtectedMethodsForm ();
+			c.PublicRaiseDragEvent (null, null);
+			Assert.IsFalse (c.IsHandleCreated, "A21");
+			c.PublicRaiseKeyEvent (null, null);
+			Assert.IsFalse (c.IsHandleCreated, "A22");
+			c.PublicRaiseMouseEvent (null, null);
+			Assert.IsFalse (c.IsHandleCreated, "A23");
+			c.PublicRaisePaintEvent (null, null);
+			Assert.IsFalse (c.IsHandleCreated, "A24");
+			c.PublicRecreateHandle ();
+			Assert.IsFalse (c.IsHandleCreated, "A25");
+			c.PublicResetMouseEventArgs ();
+			Assert.IsFalse (c.IsHandleCreated, "A26");
+			c.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
+			Assert.IsFalse (c.IsHandleCreated, "A27");
+			c.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
+			Assert.IsFalse (c.IsHandleCreated, "A28");
+			c.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
+			Assert.IsFalse (c.IsHandleCreated, "A29");
+			c.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
+			Assert.IsFalse (c.IsHandleCreated, "A30");
+#if !__MonoCS__
+			c.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
+			Assert.IsFalse (c.IsHandleCreated, "A31");
+#endif
+			c.PublicScaleCore (1.5f, 1.5f);
+			Assert.IsFalse (c.IsHandleCreated, "A32");
+			c.PublicSelect ();
+			Assert.IsTrue (c.IsHandleCreated, "A33");
+			c.Dispose ();
+			
+			c = new ProtectedMethodsForm ();
+#if !__MonoCS__
+			c.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
+			Assert.IsFalse (c.IsHandleCreated, "A34");
+#endif
+			c.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
+			Assert.IsFalse (c.IsHandleCreated, "A35");
+			c.PublicSetClientSizeCore (122, 122);
+			Assert.IsFalse (c.IsHandleCreated, "A36");
+			c.PublicSetStyle (ControlStyles.FixedHeight, true);
+			Assert.IsFalse (c.IsHandleCreated, "A37");
+			
+			c.PublicSetTopLevel (true);
+			Assert.IsFalse (c.IsHandleCreated, "A38");
+			c.Dispose ();
+			
+			c = new ProtectedMethodsForm ();
+			
+			c.PublicSetVisibleCore (true);
+			Assert.IsTrue (c.IsHandleCreated, "A39");
+			c.Dispose ();
+			
+			c = new ProtectedMethodsForm ();
+			c.PublicSizeFromClientSize (new Size (160, 160));
+			Assert.IsFalse (c.IsHandleCreated, "A40");
+			c.PublicUpdateBounds ();
+			Assert.IsFalse (c.IsHandleCreated, "A41");
+			c.PublicUpdateStyles ();
+			Assert.IsFalse (c.IsHandleCreated, "A42");
+			c.PublicUpdateZOrder ();
+			Assert.IsFalse (c.IsHandleCreated, "A43");
+			c.Dispose ();
+			
+			// Form
+			c = new ProtectedMethodsForm ();
+			c.IsMdiContainer = true;
+			new Form ().MdiParent = c;
+			new Form ().MdiParent = c;
+			c.PublicActivateMdiChild (c.MdiChildren [0]);
+			c.PublicActivateMdiChild (c.MdiChildren [1]);
+			Assert.IsFalse (c.IsHandleCreated, "F1");
+			c.Dispose ();
+			c = new ProtectedMethodsForm();
+
+			c.PublicAdjustFormScrollbars (true);
+			Assert.IsFalse (c.IsHandleCreated, "F2");
+			
+			c.PublicCenterToParent ();
+			Assert.IsTrue (c.IsHandleCreated, "F3");
+			c.Dispose ();
+			c = new ProtectedMethodsForm ();
+			
+			c.PublicCenterToScreen ();
+			Assert.IsTrue (c.IsHandleCreated, "F4");
+			c.Dispose ();
+			c = new ProtectedMethodsForm ();
+			
+			c.PublicGetScrollState (1);
+			Assert.IsFalse (c.IsHandleCreated, "F5");
+			
+			c.PublicGetService (typeof (int));
+			Assert.IsFalse (c.IsHandleCreated, "F6");
+
+			Message m = new Message ();
+			c.PublicProcessCmdKey (ref m, Keys.C);
+			Assert.IsFalse (c.IsHandleCreated, "F7");
+			
+			c.PublicProcessDialogChar ('p');
+			Assert.IsFalse (c.IsHandleCreated, "F8");
+			
+			c.PublicProcessDialogKey (Keys.D);
+			Assert.IsFalse (c.IsHandleCreated, "F9");
+			
+			c.PublicProcessKeyEventArgs (ref m);
+			Assert.IsFalse (c.IsHandleCreated, "F10");
+			
+			c.PublicProcessKeyMessage (ref m);
+			Assert.IsFalse (c.IsHandleCreated, "F11");
+			
+			c.PublicProcessKeyPreview (ref m);
+			Assert.IsFalse (c.IsHandleCreated, "F12");
+
+			c.PublicProcessMnemonic ('Z');
+			Assert.IsFalse (c.IsHandleCreated, "F13");
+			
+			c.PublicProcessTabKey (true);
+			Assert.IsFalse (c.IsHandleCreated, "F14");
+
+#if !__MonoCS__
+			c.Controls.Add (new Control ());
+			c.PublicScrollToControl (c.Controls [0]);
+			Assert.IsFalse (c.IsHandleCreated, "F15");
+			c.Dispose ();
+			c = new ProtectedMethodsForm (); 
+#endif
+			
+			c.PublicSelect (true, true);
+			Assert.IsTrue (c.IsHandleCreated, "F16");
+			c.Dispose ();
+			
+			c = new ProtectedMethodsForm();
+			
+			c.PublicSetDisplayRectLocation (13, 17);
+			Assert.IsFalse (c.IsHandleCreated, "F17");
+			
+			c.PublicSetScrollState (5, false);
+			Assert.IsFalse (c.IsHandleCreated, "F18");
+			
+			c.PublicUpdateDefaultButton (3, false);
+			Assert.IsFalse (c.IsHandleCreated, "F19");
+
+			c.Dispose ();
+		}
+
+		public class ProtectedMethodsForm : Form
+		{
+			public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }
+			public void PublicActivateMdiChild (Form form) { base.ActivateMdiChild (form); }
+			public void PublicAdjustFormScrollbars (bool displayScrollbars) {base.AdjustFormScrollbars (displayScrollbars); }
+			public void PublicCenterToParent () { base.CenterToParent (); }
+			public void PublicCenterToScreen () { base.CenterToScreen (); }
+			public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }
+			public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
+			public void PublicCreateHandle () { base.CreateHandle (); }
+			public void PublicDestroyHandle () { base.DestroyHandle (); }
+			public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
+#if !__MonoCS__
+			public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
+			public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
+#endif
+			public bool PublicGetScrollState (int bit) { return base.GetScrollState (bit); }
+			public object PublicGetService (Type service) { return base.GetService (service); }
+			public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }
+			public bool PublicGetTopLevel () { return base.GetTopLevel (); }
+			public void PublicInitLayout () { base.InitLayout (); }
+			public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }
+			public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }
+			public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }
+			public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }
+			public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }
+			public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
+			public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
+			public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
+			public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
+			public void PublicProcessCmdKey (ref Message msg, Keys keyData) { base.ProcessCmdKey (ref msg, keyData); }
+			public void PublicProcessDialogChar (char charCode) { base.ProcessDialogChar (charCode); }
+			public void PublicProcessDialogKey (Keys keyData) { base.ProcessDialogKey (keyData); }
+			public void PublicProcessKeyEventArgs (ref Message m) { base.ProcessKeyEventArgs (ref m); }
+			public void PublicProcessKeyMessage (ref Message m) { base.ProcessKeyMessage (ref m); }
+			public void PublicProcessKeyPreview (ref Message m) { base.ProcessKeyPreview (ref m); }
+			public void PublicProcessMnemonic (char charCode) { base.ProcessMnemonic (charCode); }
+			public void PublicProcessTabKey (bool forward) { base.ProcessTabKey (forward); }
+			public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
+			public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
+			public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
+			public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }
+			public void PublicRecreateHandle () { base.RecreateHandle (); }
+			public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }
+			public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }
+			public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
+			public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
+			public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
+#if !__MonoCS__
+			public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
+#endif
+			public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
+#if !__MonoCS__
+			public void PublicScrollToControl (Control activeControl) { base.ScrollToControl (activeControl); } 
+#endif
+			public void PublicSelect () { base.Select (); }
+			public void PublicSelect (bool directed, bool forward) { base.Select (directed, forward); }
+
+#if !__MonoCS__
+			public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
+#endif
+			public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
+			public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }
+			public void PublicSetDisplayRectLocation (int x, int y) { base.SetDisplayRectLocation (x, y); }
+			public void PublicSetScrollState (int bit, bool value) { base.SetScrollState (bit, value); }
+			public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
+			public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
+			public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
+			public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
+			public void PublicUpdateBounds () { base.UpdateBounds (); }
+			public void PublicUpdateDefaultButton (int bit, bool value) { base.UpdateDefaultButton (); }
+			public void PublicUpdateStyles () { base.UpdateStyles (); }
+			public void PublicUpdateZOrder () { base.UpdateZOrder (); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/HScrollPropertiesTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/HScrollPropertiesTest.cs
@@ -1,125 +1,125 @@
-//
-// HScrollPropertiesTest.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class HScrollPropertiesTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-
-			Assert.AreEqual (true, sp.Enabled, "A1");
-			Assert.AreEqual (10, sp.LargeChange, "A2");
-			Assert.AreEqual (100, sp.Maximum, "A3");
-			Assert.AreEqual (0, sp.Minimum, "A4");
-			Assert.AreEqual (1, sp.SmallChange, "A5");
-			Assert.AreEqual (0, sp.Value, "A6");
-			Assert.AreEqual (false, sp.Visible, "A7");
-		}
-
-		[Test]
-		public void PropertyEnabled ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-
-			sp.Enabled = false;
-			Assert.AreEqual (false, sp.Enabled, "B1");
-		}
-
-		[Test]
-		public void PropertyLargeChange ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-
-			sp.LargeChange = 25;
-			Assert.AreEqual (25, sp.LargeChange, "B1");
-		}
-
-		[Test]
-		public void PropertyMaximum ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-
-			sp.Maximum = 200;
-			Assert.AreEqual (200, sp.Maximum, "B1");
-		}
-
-		[Test]
-		public void PropertyMinimum ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-
-			sp.Minimum = 20;
-			Assert.AreEqual (20, sp.Minimum, "B1");
-		}
-
-		[Test]
-		public void PropertySmallChange ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-
-			sp.SmallChange = 5;
-			Assert.AreEqual (5, sp.SmallChange, "B1");
-		}
-
-		[Test]
-		public void PropertyValue ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-			
-			sp.Value = 10;
-			Assert.AreEqual (10, sp.Value, "B1");
-		}
-
-		[Test]
-		public void PropertyVisible ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.HorizontalScroll;
-
-			sp.Visible = true;
-			Assert.AreEqual (true, sp.Visible, "B1");
-		}
-
-	}
-}
+//
+// HScrollPropertiesTest.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class HScrollPropertiesTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+
+			Assert.AreEqual (true, sp.Enabled, "A1");
+			Assert.AreEqual (10, sp.LargeChange, "A2");
+			Assert.AreEqual (100, sp.Maximum, "A3");
+			Assert.AreEqual (0, sp.Minimum, "A4");
+			Assert.AreEqual (1, sp.SmallChange, "A5");
+			Assert.AreEqual (0, sp.Value, "A6");
+			Assert.AreEqual (false, sp.Visible, "A7");
+		}
+
+		[Test]
+		public void PropertyEnabled ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+
+			sp.Enabled = false;
+			Assert.AreEqual (false, sp.Enabled, "B1");
+		}
+
+		[Test]
+		public void PropertyLargeChange ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+
+			sp.LargeChange = 25;
+			Assert.AreEqual (25, sp.LargeChange, "B1");
+		}
+
+		[Test]
+		public void PropertyMaximum ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+
+			sp.Maximum = 200;
+			Assert.AreEqual (200, sp.Maximum, "B1");
+		}
+
+		[Test]
+		public void PropertyMinimum ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+
+			sp.Minimum = 20;
+			Assert.AreEqual (20, sp.Minimum, "B1");
+		}
+
+		[Test]
+		public void PropertySmallChange ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+
+			sp.SmallChange = 5;
+			Assert.AreEqual (5, sp.SmallChange, "B1");
+		}
+
+		[Test]
+		public void PropertyValue ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+			
+			sp.Value = 10;
+			Assert.AreEqual (10, sp.Value, "B1");
+		}
+
+		[Test]
+		public void PropertyVisible ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.HorizontalScroll;
+
+			sp.Visible = true;
+			Assert.AreEqual (true, sp.Visible, "B1");
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ImageKeyConverterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ImageKeyConverterTest.cs
@@ -1,103 +1,103 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using System.Windows.Forms;
-using System.Windows.Forms.Layout;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ImageKeyConverterTest : TestHelper
-	{
-		[Test]
-		public void PropertyIncludeNoneAsStandardValue ()
-		{
-			PublicImageKeyConverter c = new PublicImageKeyConverter ();
-			Assert.AreEqual (true, c.PublicIncludeNoneAsStandardValue, "A1");
-		}
-		
-		private class PublicImageKeyConverter : ImageKeyConverter
-		{
-			public bool PublicIncludeNoneAsStandardValue { get { return base.IncludeNoneAsStandardValue; } }
-		}
-		
-		[Test]
-		public void GetStandardValues ()
-		{
-			ImageKeyConverter c = new ImageKeyConverter ();
-			Assert.AreEqual (1, c.GetStandardValues (null).Count, "B1");
-			Assert.AreEqual (string.Empty, c.GetStandardValues (null)[0].ToString (), "B2");
-		}
-
-		[Test]
-		public void GetStandardValuesExclusive ()
-		{
-			ImageKeyConverter c = new ImageKeyConverter ();
-			Assert.AreEqual (true, c.GetStandardValuesExclusive (null), "C1");
-		}
-
-		[Test]
-		public void GetStandardValuesSupported ()
-		{
-			ImageKeyConverter c = new ImageKeyConverter ();
-			Assert.AreEqual (true, c.GetStandardValuesSupported (null), "D1");
-		}
-		
-		[Test]
-		public void CanConvertFrom ()
-		{
-			ImageKeyConverter c = new ImageKeyConverter ();
-
-			Assert.IsTrue (c.CanConvertFrom (null, typeof (string)), "1");
-			Assert.IsFalse (c.CanConvertFrom (null, typeof (int)), "2");
-			Assert.IsFalse (c.CanConvertFrom (null, typeof (float)), "3");
-			Assert.IsFalse (c.CanConvertFrom (null, typeof (object)), "4");
-		}
-		
-		[Test]
-		public void ConvertFrom ()
-		{
-			ImageKeyConverter ikc = new ImageKeyConverter ();
-			Assert.AreEqual (string.Empty, ikc.ConvertFrom (null, null, string.Empty), "N1");
-			Assert.AreEqual (string.Empty, ikc.ConvertFrom (null, null, null), "N2");
-			Assert.AreEqual ("(none)", ikc.ConvertFrom (null, null, "(none)"), "N2-1");
-			Assert.AreEqual ("bob", ikc.ConvertFrom (null, null, "bob"), "N3");
-			Assert.AreEqual ("oSCar", ikc.ConvertFrom (null, null, "oSCar"), "N4");
-		}
-
-		[Test]
-		public void ConvertTo ()
-		{
-			ImageKeyConverter ikc = new ImageKeyConverter ();
-			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, string.Empty, typeof (string)), "N1");
-			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, null, typeof (string)), "N2");
-			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, "(none)", typeof (string)), "N2-1");
-			Assert.AreEqual ("bob", ikc.ConvertTo (null, null, "bob", typeof (string)), "N3");
-			Assert.AreEqual ("oSCar", ikc.ConvertTo (null, null, "oSCar", typeof (string)), "N4");
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Windows.Forms;
+using System.Windows.Forms.Layout;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ImageKeyConverterTest : TestHelper
+	{
+		[Test]
+		public void PropertyIncludeNoneAsStandardValue ()
+		{
+			PublicImageKeyConverter c = new PublicImageKeyConverter ();
+			Assert.AreEqual (true, c.PublicIncludeNoneAsStandardValue, "A1");
+		}
+		
+		private class PublicImageKeyConverter : ImageKeyConverter
+		{
+			public bool PublicIncludeNoneAsStandardValue { get { return base.IncludeNoneAsStandardValue; } }
+		}
+		
+		[Test]
+		public void GetStandardValues ()
+		{
+			ImageKeyConverter c = new ImageKeyConverter ();
+			Assert.AreEqual (1, c.GetStandardValues (null).Count, "B1");
+			Assert.AreEqual (string.Empty, c.GetStandardValues (null)[0].ToString (), "B2");
+		}
+
+		[Test]
+		public void GetStandardValuesExclusive ()
+		{
+			ImageKeyConverter c = new ImageKeyConverter ();
+			Assert.AreEqual (true, c.GetStandardValuesExclusive (null), "C1");
+		}
+
+		[Test]
+		public void GetStandardValuesSupported ()
+		{
+			ImageKeyConverter c = new ImageKeyConverter ();
+			Assert.AreEqual (true, c.GetStandardValuesSupported (null), "D1");
+		}
+		
+		[Test]
+		public void CanConvertFrom ()
+		{
+			ImageKeyConverter c = new ImageKeyConverter ();
+
+			Assert.IsTrue (c.CanConvertFrom (null, typeof (string)), "1");
+			Assert.IsFalse (c.CanConvertFrom (null, typeof (int)), "2");
+			Assert.IsFalse (c.CanConvertFrom (null, typeof (float)), "3");
+			Assert.IsFalse (c.CanConvertFrom (null, typeof (object)), "4");
+		}
+		
+		[Test]
+		public void ConvertFrom ()
+		{
+			ImageKeyConverter ikc = new ImageKeyConverter ();
+			Assert.AreEqual (string.Empty, ikc.ConvertFrom (null, null, string.Empty), "N1");
+			Assert.AreEqual (string.Empty, ikc.ConvertFrom (null, null, null), "N2");
+			Assert.AreEqual ("(none)", ikc.ConvertFrom (null, null, "(none)"), "N2-1");
+			Assert.AreEqual ("bob", ikc.ConvertFrom (null, null, "bob"), "N3");
+			Assert.AreEqual ("oSCar", ikc.ConvertFrom (null, null, "oSCar"), "N4");
+		}
+
+		[Test]
+		public void ConvertTo ()
+		{
+			ImageKeyConverter ikc = new ImageKeyConverter ();
+			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, string.Empty, typeof (string)), "N1");
+			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, null, typeof (string)), "N2");
+			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, "(none)", typeof (string)), "N2-1");
+			Assert.AreEqual ("bob", ikc.ConvertTo (null, null, "bob", typeof (string)), "N3");
+			Assert.AreEqual ("oSCar", ikc.ConvertTo (null, null, "oSCar", typeof (string)), "N4");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/KeysConverterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/KeysConverterTest.cs
@@ -1,49 +1,49 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using System.Windows.Forms;
-using System.Windows.Forms.Layout;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class KeysConverterTest : TestHelper
-	{
-		[Test]
-		public void CanConvertTo ()
-		{
-			KeysConverter c = new KeysConverter ();
-
-			Assert.AreEqual (true, c.CanConvertTo (null, typeof (string)), "A1");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (int)), "A2");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (float)), "A3");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (object)), "A4");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (Enum)), "A5");
-			Assert.AreEqual (true, c.CanConvertTo (null, typeof (Enum [])), "A6");
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Windows.Forms;
+using System.Windows.Forms.Layout;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class KeysConverterTest : TestHelper
+	{
+		[Test]
+		public void CanConvertTo ()
+		{
+			KeysConverter c = new KeysConverter ();
+
+			Assert.AreEqual (true, c.CanConvertTo (null, typeof (string)), "A1");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (int)), "A2");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (float)), "A3");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (object)), "A4");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (Enum)), "A5");
+			Assert.AreEqual (true, c.CanConvertTo (null, typeof (Enum [])), "A6");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/LinkConverterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/LinkConverterTest.cs
@@ -1,93 +1,93 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using System.Windows.Forms;
-using System.Windows.Forms.Layout;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class LinkConverterTest : TestHelper
-	{
-		[Test]
-		public void CanConvertFrom ()
-		{
-			LinkConverter c = new LinkConverter ();
-
-			Assert.AreEqual (true, c.CanConvertFrom (null, typeof (string)), "1");
-			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (int)), "2");
-			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (float)), "3");
-			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (object)), "4");
-			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (LinkLabel)), "5");
-			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (LinkLabel.Link)), "6");
-		}
-
-		[Test]
-		public void CanConvertTo ()
-		{
-			LinkConverter c = new LinkConverter ();
-
-			Assert.AreEqual (true, c.CanConvertTo (null, typeof (string)), "A1");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (int)), "A2");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (float)), "A3");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (object)), "A4");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (LinkLabel)), "A5");
-			Assert.AreEqual (false, c.CanConvertTo (null, typeof (LinkLabel.Link)), "A6");
-		}
-
-		[Test]
-		public void ConvertFrom ()
-		{
-			LinkConverter lc = new LinkConverter ();
-			Assert.AreEqual (null, lc.ConvertFrom (null, null, string.Empty), "N1");
-			Assert.AreEqual (new LinkLabel.Link ().Start, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("0{0} 0", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Start, "N2");
-			Assert.AreEqual (new LinkLabel.Link (-1, 8).Start, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("-1{0} 8", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Start, "N3");
-			Assert.AreEqual (new LinkLabel.Link (12, 24).Start, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("12{0} 24", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Start, "N4");
-			Assert.AreEqual (new LinkLabel.Link ().Length, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("0{0} 0", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Length, "N5");
-			Assert.AreEqual (new LinkLabel.Link (-1, 8).Length, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("-1{0} 8", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Length, "N6");
-			Assert.AreEqual (new LinkLabel.Link (12, 24).Length, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("12{0} 24", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Length, "N7");
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotSupportedException))]
-		public void ConvertFromNSE ()
-		{
-			LinkConverter lc = new LinkConverter ();
-			Assert.AreEqual (new LinkLabel.Link (), lc.ConvertFrom (null, null, null), "N2");
-		}
-		
-		[Test]
-		public void ConvertTo ()
-		{
-			LinkConverter lc = new LinkConverter ();
-			Assert.AreEqual (string.Empty, lc.ConvertTo (null, null, null, typeof (string)), "N1");
-			Assert.AreEqual (string.Format ("0{0} 0", CultureInfo.CurrentCulture.TextInfo.ListSeparator), lc.ConvertTo (null, null, new LinkLabel.Link (), typeof (string)), "N2");
-			Assert.AreEqual (string.Format ("0{0} 7", CultureInfo.CurrentCulture.TextInfo.ListSeparator), lc.ConvertTo (null, null, new LinkLabel.Link (0, 7), typeof (string)), "N3");
-			Assert.AreEqual (string.Format ("5{0} 12", CultureInfo.CurrentCulture.TextInfo.ListSeparator), lc.ConvertTo (null, null, new LinkLabel.Link (5, 12, "mydata"), typeof (string)), "N4");
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Windows.Forms;
+using System.Windows.Forms.Layout;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class LinkConverterTest : TestHelper
+	{
+		[Test]
+		public void CanConvertFrom ()
+		{
+			LinkConverter c = new LinkConverter ();
+
+			Assert.AreEqual (true, c.CanConvertFrom (null, typeof (string)), "1");
+			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (int)), "2");
+			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (float)), "3");
+			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (object)), "4");
+			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (LinkLabel)), "5");
+			Assert.AreEqual (false, c.CanConvertFrom (null, typeof (LinkLabel.Link)), "6");
+		}
+
+		[Test]
+		public void CanConvertTo ()
+		{
+			LinkConverter c = new LinkConverter ();
+
+			Assert.AreEqual (true, c.CanConvertTo (null, typeof (string)), "A1");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (int)), "A2");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (float)), "A3");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (object)), "A4");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (LinkLabel)), "A5");
+			Assert.AreEqual (false, c.CanConvertTo (null, typeof (LinkLabel.Link)), "A6");
+		}
+
+		[Test]
+		public void ConvertFrom ()
+		{
+			LinkConverter lc = new LinkConverter ();
+			Assert.AreEqual (null, lc.ConvertFrom (null, null, string.Empty), "N1");
+			Assert.AreEqual (new LinkLabel.Link ().Start, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("0{0} 0", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Start, "N2");
+			Assert.AreEqual (new LinkLabel.Link (-1, 8).Start, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("-1{0} 8", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Start, "N3");
+			Assert.AreEqual (new LinkLabel.Link (12, 24).Start, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("12{0} 24", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Start, "N4");
+			Assert.AreEqual (new LinkLabel.Link ().Length, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("0{0} 0", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Length, "N5");
+			Assert.AreEqual (new LinkLabel.Link (-1, 8).Length, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("-1{0} 8", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Length, "N6");
+			Assert.AreEqual (new LinkLabel.Link (12, 24).Length, ((LinkLabel.Link)lc.ConvertFrom (null, null, string.Format ("12{0} 24", CultureInfo.CurrentCulture.TextInfo.ListSeparator))).Length, "N7");
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void ConvertFromNSE ()
+		{
+			LinkConverter lc = new LinkConverter ();
+			Assert.AreEqual (new LinkLabel.Link (), lc.ConvertFrom (null, null, null), "N2");
+		}
+		
+		[Test]
+		public void ConvertTo ()
+		{
+			LinkConverter lc = new LinkConverter ();
+			Assert.AreEqual (string.Empty, lc.ConvertTo (null, null, null, typeof (string)), "N1");
+			Assert.AreEqual (string.Format ("0{0} 0", CultureInfo.CurrentCulture.TextInfo.ListSeparator), lc.ConvertTo (null, null, new LinkLabel.Link (), typeof (string)), "N2");
+			Assert.AreEqual (string.Format ("0{0} 7", CultureInfo.CurrentCulture.TextInfo.ListSeparator), lc.ConvertTo (null, null, new LinkLabel.Link (0, 7), typeof (string)), "N3");
+			Assert.AreEqual (string.Format ("5{0} 12", CultureInfo.CurrentCulture.TextInfo.ListSeparator), lc.ConvertTo (null, null, new LinkLabel.Link (5, 12, "mydata"), typeof (string)), "N4");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/LinkLabelTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/LinkLabelTest.cs
@@ -1,394 +1,394 @@
-//
-// LinkLabelTest.cs: MWF LinkLabel unit tests.
-//
-// Author:
-//   Everaldo Canuto (ecanuto@novell.com)
-//
-// (C) 2007 Novell, Inc. (http://www.novell.com)
-//
-
-using System;
-using NUnit.Framework;
-using System.Windows.Forms;
-using System.Drawing;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class LinkLabelTest : TestHelper
-	{
-		[Test]
-		public void LinkLabelAccessibility ()
-		{
-			LinkLabel l = new LinkLabel ();
-			Assert.IsNotNull (l.AccessibilityObject, "#1");
-		}
-
-		[Test]
-		public void TestTabStop ()
-		{
-			LinkLabel l = new LinkLabel();
-
-			Assert.IsFalse (l.TabStop, "#1");
-			l.Text = "Hello";
-			Assert.IsTrue (l.TabStop, "#2");
-			l.Text = "";
-			Assert.IsFalse (l.TabStop, "#3");
-		}
-		
-		[Test]
-		public void TestLinkArea ()
-		{
-			LinkLabel l = new LinkLabel();
-
-			Assert.AreEqual (0, l.LinkArea.Start, "#1");
-			Assert.AreEqual (0, l.LinkArea.Length, "#2");
-			l.Text = "Hello";
-			Assert.AreEqual (0, l.LinkArea.Start, "#3");
-			Assert.AreEqual (5, l.LinkArea.Length, "#4");
-			l.Text = "";
-			Assert.AreEqual (0, l.LinkArea.Start, "#5");
-			Assert.AreEqual (0, l.LinkArea.Length, "#6");
-		}
-
-		[Test] // bug #344012
-		public void InvalidateManualLinks ()
-		{
-			Form form = new Form ();
-			form.ShowInTaskbar = false;
-
-			LinkLabel l = new LinkLabel ();
-			l.Text = "linkLabel1";
-			form.Controls.Add (l);
-
-			LinkLabel.Link link = new LinkLabel.Link (2, 5);
-			l.Links.Add (link);
-
-			form.Show ();
-			form.Dispose ();
-		}
-		
-		[Test]	// bug 410709
-		public void LinkAreaSetter ()
-		{
-			// Basically this test is to show that setting LinkArea erased
-			// any previous links
-			LinkLabel l = new LinkLabel ();
-			
-			l.Text = "Really long text";
-			
-			Assert.AreEqual (1, l.Links.Count, "A1");
-			
-			l.Links.Clear ();
-			l.Links.Add (0, 3);
-			l.Links.Add (5, 3);
-
-			Assert.AreEqual (2, l.Links.Count, "A2");
-		
-			l.LinkArea = new LinkArea (1, 7);
-
-			Assert.AreEqual (1, l.Links.Count, "A3");
-			Assert.AreEqual (1, l.LinkArea.Start, "A4");
-			Assert.AreEqual (7, l.LinkArea.Length, "A5");
-		}
-	}
-
-
-	[TestFixture]
-	public class LinkTest : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			LinkLabel.Link l = new LinkLabel.Link ();
-			
-			Assert.AreEqual (null, l.Description, "A1");
-			Assert.AreEqual (true, l.Enabled, "A2");
-			Assert.AreEqual (0, l.Length, "A3");
-			Assert.AreEqual (null, l.LinkData, "A4");
-			Assert.AreEqual (string.Empty, l.Name, "A5");
-			Assert.AreEqual (0, l.Start, "A6");
-			Assert.AreEqual (null, l.Tag, "A7");
-			Assert.AreEqual (false, l.Visited, "A8");
-
-			l = new LinkLabel.Link (5, 20);
-
-			Assert.AreEqual (null, l.Description, "A9");
-			Assert.AreEqual (true, l.Enabled, "A10");
-			Assert.AreEqual (20, l.Length, "A11");
-			Assert.AreEqual (null, l.LinkData, "A12");
-			Assert.AreEqual (string.Empty, l.Name, "A13");
-			Assert.AreEqual (5, l.Start, "A14");
-			Assert.AreEqual (null, l.Tag, "A15");
-			Assert.AreEqual (false, l.Visited, "A16");
-
-			l = new LinkLabel.Link (3, 7, "test");
-
-			Assert.AreEqual (null, l.Description, "A17");
-			Assert.AreEqual (true, l.Enabled, "A18");
-			Assert.AreEqual (7, l.Length, "A19");
-			Assert.AreEqual ("test", l.LinkData, "A20");
-			Assert.AreEqual (string.Empty, l.Name, "A21");
-			Assert.AreEqual (3, l.Start, "A22");
-			Assert.AreEqual (null, l.Tag, "A23");
-			Assert.AreEqual (false, l.Visited, "A24");
-		}
-	}
-
-	[TestFixture]
-	public class LinkCollectionTest : TestHelper
-	{
-		[Test] // ctor (LinkLabel)
-		public void Constructor1 ()
-		{
-			LinkLabel l = new LinkLabel ();
-			l.Text = "Managed Windows Forms";
-
-			LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
-				l);
-			LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
-				l);
-
-			Assert.AreEqual (1, links1.Count, "#A1");
-			Assert.IsFalse (links1.IsReadOnly, "#A2");
-			Assert.IsFalse (links1.LinksAdded, "#A3");
-
-			LinkLabel.Link link = links1 [0];
-			Assert.IsNull (link.Description, "#B1");
-			Assert.IsTrue (link.Enabled, "#B2");
-			Assert.AreEqual (21, link.Length, "#B3");
-			Assert.IsNull (link.LinkData, "#B4");
-			Assert.IsNotNull (link.Name, "#B5");
-			Assert.AreEqual (string.Empty, link.Name, "#B6");
-			Assert.AreEqual (0, link.Start, "#B7");
-			Assert.IsNull (link.Tag, "#B8");
-			Assert.IsFalse (link.Visited, "#B9");
-
-			Assert.AreEqual (1, links2.Count, "#C1");
-			Assert.IsFalse (links2.IsReadOnly, "#C2");
-			Assert.IsFalse (links2.LinksAdded, "#C3");
-			Assert.AreSame (link, links2 [0], "#C4");
-		}
-
-		[Test] // ctor (LinkLabel)
-		public void Constructor1_Owner_Null ()
-		{
-			try {
-				new LinkLabel.LinkCollection ((LinkLabel) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.IsNotNull (ex.ParamName, "#5");
-				Assert.AreEqual ("owner", ex.ParamName, "#6");
-			}
-		}
-
-		[Test] // Add (LinkLabel.Link)
-		public void Add1 ()
-		{
-			LinkLabel l = new LinkLabel ();
-			l.Text = "Managed Windows Forms";
-
-			LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
-				l);
-			LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
-				l);
-
-			LinkLabel.Link linkA = new LinkLabel.Link (0, 7);
-			Assert.AreEqual (0, links1.Add (linkA), "#A1");
-			Assert.AreEqual (1, links1.Count, "#A2");
-			Assert.AreEqual (1, links2.Count, "#A3");
-			Assert.IsTrue (links1.LinksAdded, "#A4");
-			Assert.IsFalse (links2.LinksAdded, "#A5");
-			Assert.AreSame (linkA, links1 [0], "#A6");
-			Assert.AreSame (linkA, links2 [0], "#A7");
-
-			LinkLabel.Link linkB = new LinkLabel.Link (8, 7);
-			Assert.AreEqual (1, links1.Add (linkB), "#B1");
-			Assert.AreEqual (2, links1.Count, "#B2");
-			Assert.AreEqual (2, links2.Count, "#B3");
-			Assert.IsTrue (links1.LinksAdded, "#B4");
-			Assert.IsFalse (links2.LinksAdded, "#B5");
-			Assert.AreSame (linkA, links1 [0], "#B6");
-			Assert.AreSame (linkA, links2 [0], "#B7");
-			Assert.AreSame (linkB, links1 [1], "#B8");
-			Assert.AreSame (linkB, links2 [1], "#B9");
-
-			LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection (
-				l);
-			Assert.AreEqual (2, links3.Count, "#C1");
-			Assert.IsFalse (links3.LinksAdded, "#C2");
-			Assert.AreSame (linkA, links3 [0], "#C3");
-			Assert.AreSame (linkB, links3 [1], "#C4");
-		}
-
-		[Test] // Add (LinkLabel.Link)
-		public void Add1_Overlap ()
-		{
-			LinkLabel l = new LinkLabel ();
-			l.Text = "Managed Windows Forms";
-
-			LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
-				l);
-
-			LinkLabel.Link linkA = new LinkLabel.Link (0, 7);
-			links.Add (linkA);
-			Assert.AreEqual (1, links.Count, "#A1");
-			Assert.IsTrue (links.LinksAdded, "#A2");
-			Assert.AreSame (linkA, links [0], "#A3");
-
-			LinkLabel.Link linkB = new LinkLabel.Link (5, 4);
-			try {
-				links.Add (linkB);
-				Assert.Fail ("#B1");
-			} catch (InvalidOperationException ex) {
-				// Overlapping link regions
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-			}
-
-			Assert.AreEqual (2, links.Count, "#B5");
-			Assert.IsTrue (links.LinksAdded, "#B6");
-			Assert.AreSame (linkA, links [0], "#B7");
-			Assert.AreSame (linkB, links [1], "#B8");
-			Assert.AreEqual (0, linkA.Start, "#B9");
-			Assert.AreEqual (7, linkA.Length, "#B10");
-			Assert.AreEqual (5, linkB.Start, "#B11");
-			Assert.AreEqual (4, linkB.Length, "#B12");
-
-			LinkLabel.Link linkC = new LinkLabel.Link (14, 3);
-			try {
-				links.Add (linkC);
-				Assert.Fail ("#C1");
-			} catch (InvalidOperationException ex) {
-				// Overlapping link regions
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
-				Assert.IsNull (ex.InnerException, "#C3");
-				Assert.IsNotNull (ex.Message, "#C4");
-			}
-
-			Assert.AreEqual (3, links.Count, "#C5");
-			Assert.IsTrue (links.LinksAdded, "#C6");
-			Assert.AreSame (linkA, links [0], "#C7");
-			Assert.AreSame (linkB, links [1], "#C8");
-			Assert.AreSame (linkC, links [2], "#C9");
-			Assert.AreEqual (0, linkA.Start, "#C10");
-			Assert.AreEqual (7, linkA.Length, "#C11");
-			Assert.AreEqual (5, linkB.Start, "#C12");
-			Assert.AreEqual (4, linkB.Length, "#C13");
-			Assert.AreEqual (14, linkC.Start, "#C14");
-			Assert.AreEqual (3, linkC.Length, "#C15");
-		}
-
-		[Test] // Add (LinkLabel.Link)
-		public void Add1_Value_Null ()
-		{
-			LinkLabel l = new LinkLabel ();
-			l.Text = "Managed Windows Forms";
-
-			LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
-				l);
-			try {
-				links.Add ((LinkLabel.Link) null);
-				Assert.Fail ("#1");
-			} catch (NullReferenceException) {
-			}
-		}
-
-		[Test] // Add (int, int)
-		public void Add2 ()
-		{
-			LinkLabel l = new LinkLabel ();
-			l.Text = "Managed Windows Forms";
-
-			LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
-				l);
-			LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
-				l);
-
-			LinkLabel.Link linkA = links1.Add (0, 7);
-			Assert.AreEqual (1, links1.Count, "#A1");
-			Assert.AreEqual (1, links2.Count, "#A2");
-			Assert.IsTrue (links1.LinksAdded, "#A3");
-			Assert.IsFalse (links2.LinksAdded, "#A4");
-			Assert.AreSame (linkA, links1 [0], "#A5");
-			Assert.AreSame (linkA, links2 [0], "#A6");
-
-			LinkLabel.Link linkB = links1.Add (8, 7);
-			Assert.AreEqual (2, links1.Count, "#B1");
-			Assert.AreEqual (2, links2.Count, "#B2");
-			Assert.IsTrue (links1.LinksAdded, "#B3");
-			Assert.IsFalse (links2.LinksAdded, "#B4");
-			Assert.AreSame (linkA, links1 [0], "#B5");
-			Assert.AreSame (linkA, links2 [0], "#B6");
-			Assert.AreSame (linkB, links1 [1], "#B7");
-			Assert.AreSame (linkB, links2 [1], "#B8");
-
-			LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection (
-				l);
-			Assert.AreEqual (2, links3.Count, "#C1");
-			Assert.IsFalse (links3.LinksAdded, "#C2");
-			Assert.AreSame (linkA, links3 [0], "#C3");
-			Assert.AreSame (linkB, links3 [1], "#C4");
-		}
-
-		[Test] // Add (int, int)
-		public void Add2_Overlap ()
-		{
-			LinkLabel l = new LinkLabel ();
-			l.Text = "Managed Windows Forms";
-
-			LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
-				l);
-
-			LinkLabel.Link linkA = links.Add (0, 7);
-			Assert.AreEqual (1, links.Count, "#A1");
-			Assert.IsTrue (links.LinksAdded, "#A2");
-			Assert.AreSame (linkA, links [0], "#A3");
-
-			try {
-				links.Add (5, 4);
-				Assert.Fail ("#B1");
-			} catch (InvalidOperationException ex) {
-				// Overlapping link regions
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-			}
-
-			Assert.AreEqual (2, links.Count, "#B5");
-			Assert.IsTrue (links.LinksAdded, "#B6");
-			Assert.AreSame (linkA, links [0], "#B7");
-			Assert.IsNotNull (links [1], "#B8");
-			Assert.AreEqual (0, linkA.Start, "#B9");
-			Assert.AreEqual (7, linkA.Length, "#B10");
-			Assert.AreEqual (5, links [1].Start, "#B11");
-			Assert.AreEqual (4, links [1].Length, "#B12");
-
-			try {
-				links.Add (14, 3);
-				Assert.Fail ("#C1");
-			} catch (InvalidOperationException ex) {
-				// Overlapping link regions
-				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
-				Assert.IsNull (ex.InnerException, "#C3");
-				Assert.IsNotNull (ex.Message, "#C4");
-			}
-
-			Assert.AreEqual (3, links.Count, "#C5");
-			Assert.IsTrue (links.LinksAdded, "#C6");
-			Assert.AreSame (linkA, links [0], "#C7");
-			Assert.IsNotNull (links [1], "#C8");
-			Assert.IsNotNull (links [2], "#C9");
-			Assert.AreEqual (0, linkA.Start, "#C10");
-			Assert.AreEqual (7, linkA.Length, "#C11");
-			Assert.AreEqual (5, links [1].Start, "#C12");
-			Assert.AreEqual (4, links [1].Length, "#C13");
-			Assert.AreEqual (14, links [2].Start, "#C14");
-			Assert.AreEqual (3, links [2].Length, "#C15");
-		}
-	}
-}
+//
+// LinkLabelTest.cs: MWF LinkLabel unit tests.
+//
+// Author:
+//   Everaldo Canuto (ecanuto@novell.com)
+//
+// (C) 2007 Novell, Inc. (http://www.novell.com)
+//
+
+using System;
+using NUnit.Framework;
+using System.Windows.Forms;
+using System.Drawing;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class LinkLabelTest : TestHelper
+	{
+		[Test]
+		public void LinkLabelAccessibility ()
+		{
+			LinkLabel l = new LinkLabel ();
+			Assert.IsNotNull (l.AccessibilityObject, "#1");
+		}
+
+		[Test]
+		public void TestTabStop ()
+		{
+			LinkLabel l = new LinkLabel();
+
+			Assert.IsFalse (l.TabStop, "#1");
+			l.Text = "Hello";
+			Assert.IsTrue (l.TabStop, "#2");
+			l.Text = "";
+			Assert.IsFalse (l.TabStop, "#3");
+		}
+		
+		[Test]
+		public void TestLinkArea ()
+		{
+			LinkLabel l = new LinkLabel();
+
+			Assert.AreEqual (0, l.LinkArea.Start, "#1");
+			Assert.AreEqual (0, l.LinkArea.Length, "#2");
+			l.Text = "Hello";
+			Assert.AreEqual (0, l.LinkArea.Start, "#3");
+			Assert.AreEqual (5, l.LinkArea.Length, "#4");
+			l.Text = "";
+			Assert.AreEqual (0, l.LinkArea.Start, "#5");
+			Assert.AreEqual (0, l.LinkArea.Length, "#6");
+		}
+
+		[Test] // bug #344012
+		public void InvalidateManualLinks ()
+		{
+			Form form = new Form ();
+			form.ShowInTaskbar = false;
+
+			LinkLabel l = new LinkLabel ();
+			l.Text = "linkLabel1";
+			form.Controls.Add (l);
+
+			LinkLabel.Link link = new LinkLabel.Link (2, 5);
+			l.Links.Add (link);
+
+			form.Show ();
+			form.Dispose ();
+		}
+		
+		[Test]	// bug 410709
+		public void LinkAreaSetter ()
+		{
+			// Basically this test is to show that setting LinkArea erased
+			// any previous links
+			LinkLabel l = new LinkLabel ();
+			
+			l.Text = "Really long text";
+			
+			Assert.AreEqual (1, l.Links.Count, "A1");
+			
+			l.Links.Clear ();
+			l.Links.Add (0, 3);
+			l.Links.Add (5, 3);
+
+			Assert.AreEqual (2, l.Links.Count, "A2");
+		
+			l.LinkArea = new LinkArea (1, 7);
+
+			Assert.AreEqual (1, l.Links.Count, "A3");
+			Assert.AreEqual (1, l.LinkArea.Start, "A4");
+			Assert.AreEqual (7, l.LinkArea.Length, "A5");
+		}
+	}
+
+
+	[TestFixture]
+	public class LinkTest : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			LinkLabel.Link l = new LinkLabel.Link ();
+			
+			Assert.AreEqual (null, l.Description, "A1");
+			Assert.AreEqual (true, l.Enabled, "A2");
+			Assert.AreEqual (0, l.Length, "A3");
+			Assert.AreEqual (null, l.LinkData, "A4");
+			Assert.AreEqual (string.Empty, l.Name, "A5");
+			Assert.AreEqual (0, l.Start, "A6");
+			Assert.AreEqual (null, l.Tag, "A7");
+			Assert.AreEqual (false, l.Visited, "A8");
+
+			l = new LinkLabel.Link (5, 20);
+
+			Assert.AreEqual (null, l.Description, "A9");
+			Assert.AreEqual (true, l.Enabled, "A10");
+			Assert.AreEqual (20, l.Length, "A11");
+			Assert.AreEqual (null, l.LinkData, "A12");
+			Assert.AreEqual (string.Empty, l.Name, "A13");
+			Assert.AreEqual (5, l.Start, "A14");
+			Assert.AreEqual (null, l.Tag, "A15");
+			Assert.AreEqual (false, l.Visited, "A16");
+
+			l = new LinkLabel.Link (3, 7, "test");
+
+			Assert.AreEqual (null, l.Description, "A17");
+			Assert.AreEqual (true, l.Enabled, "A18");
+			Assert.AreEqual (7, l.Length, "A19");
+			Assert.AreEqual ("test", l.LinkData, "A20");
+			Assert.AreEqual (string.Empty, l.Name, "A21");
+			Assert.AreEqual (3, l.Start, "A22");
+			Assert.AreEqual (null, l.Tag, "A23");
+			Assert.AreEqual (false, l.Visited, "A24");
+		}
+	}
+
+	[TestFixture]
+	public class LinkCollectionTest : TestHelper
+	{
+		[Test] // ctor (LinkLabel)
+		public void Constructor1 ()
+		{
+			LinkLabel l = new LinkLabel ();
+			l.Text = "Managed Windows Forms";
+
+			LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
+				l);
+			LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
+				l);
+
+			Assert.AreEqual (1, links1.Count, "#A1");
+			Assert.IsFalse (links1.IsReadOnly, "#A2");
+			Assert.IsFalse (links1.LinksAdded, "#A3");
+
+			LinkLabel.Link link = links1 [0];
+			Assert.IsNull (link.Description, "#B1");
+			Assert.IsTrue (link.Enabled, "#B2");
+			Assert.AreEqual (21, link.Length, "#B3");
+			Assert.IsNull (link.LinkData, "#B4");
+			Assert.IsNotNull (link.Name, "#B5");
+			Assert.AreEqual (string.Empty, link.Name, "#B6");
+			Assert.AreEqual (0, link.Start, "#B7");
+			Assert.IsNull (link.Tag, "#B8");
+			Assert.IsFalse (link.Visited, "#B9");
+
+			Assert.AreEqual (1, links2.Count, "#C1");
+			Assert.IsFalse (links2.IsReadOnly, "#C2");
+			Assert.IsFalse (links2.LinksAdded, "#C3");
+			Assert.AreSame (link, links2 [0], "#C4");
+		}
+
+		[Test] // ctor (LinkLabel)
+		public void Constructor1_Owner_Null ()
+		{
+			try {
+				new LinkLabel.LinkCollection ((LinkLabel) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.IsNotNull (ex.ParamName, "#5");
+				Assert.AreEqual ("owner", ex.ParamName, "#6");
+			}
+		}
+
+		[Test] // Add (LinkLabel.Link)
+		public void Add1 ()
+		{
+			LinkLabel l = new LinkLabel ();
+			l.Text = "Managed Windows Forms";
+
+			LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
+				l);
+			LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
+				l);
+
+			LinkLabel.Link linkA = new LinkLabel.Link (0, 7);
+			Assert.AreEqual (0, links1.Add (linkA), "#A1");
+			Assert.AreEqual (1, links1.Count, "#A2");
+			Assert.AreEqual (1, links2.Count, "#A3");
+			Assert.IsTrue (links1.LinksAdded, "#A4");
+			Assert.IsFalse (links2.LinksAdded, "#A5");
+			Assert.AreSame (linkA, links1 [0], "#A6");
+			Assert.AreSame (linkA, links2 [0], "#A7");
+
+			LinkLabel.Link linkB = new LinkLabel.Link (8, 7);
+			Assert.AreEqual (1, links1.Add (linkB), "#B1");
+			Assert.AreEqual (2, links1.Count, "#B2");
+			Assert.AreEqual (2, links2.Count, "#B3");
+			Assert.IsTrue (links1.LinksAdded, "#B4");
+			Assert.IsFalse (links2.LinksAdded, "#B5");
+			Assert.AreSame (linkA, links1 [0], "#B6");
+			Assert.AreSame (linkA, links2 [0], "#B7");
+			Assert.AreSame (linkB, links1 [1], "#B8");
+			Assert.AreSame (linkB, links2 [1], "#B9");
+
+			LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection (
+				l);
+			Assert.AreEqual (2, links3.Count, "#C1");
+			Assert.IsFalse (links3.LinksAdded, "#C2");
+			Assert.AreSame (linkA, links3 [0], "#C3");
+			Assert.AreSame (linkB, links3 [1], "#C4");
+		}
+
+		[Test] // Add (LinkLabel.Link)
+		public void Add1_Overlap ()
+		{
+			LinkLabel l = new LinkLabel ();
+			l.Text = "Managed Windows Forms";
+
+			LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
+				l);
+
+			LinkLabel.Link linkA = new LinkLabel.Link (0, 7);
+			links.Add (linkA);
+			Assert.AreEqual (1, links.Count, "#A1");
+			Assert.IsTrue (links.LinksAdded, "#A2");
+			Assert.AreSame (linkA, links [0], "#A3");
+
+			LinkLabel.Link linkB = new LinkLabel.Link (5, 4);
+			try {
+				links.Add (linkB);
+				Assert.Fail ("#B1");
+			} catch (InvalidOperationException ex) {
+				// Overlapping link regions
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+			}
+
+			Assert.AreEqual (2, links.Count, "#B5");
+			Assert.IsTrue (links.LinksAdded, "#B6");
+			Assert.AreSame (linkA, links [0], "#B7");
+			Assert.AreSame (linkB, links [1], "#B8");
+			Assert.AreEqual (0, linkA.Start, "#B9");
+			Assert.AreEqual (7, linkA.Length, "#B10");
+			Assert.AreEqual (5, linkB.Start, "#B11");
+			Assert.AreEqual (4, linkB.Length, "#B12");
+
+			LinkLabel.Link linkC = new LinkLabel.Link (14, 3);
+			try {
+				links.Add (linkC);
+				Assert.Fail ("#C1");
+			} catch (InvalidOperationException ex) {
+				// Overlapping link regions
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
+				Assert.IsNull (ex.InnerException, "#C3");
+				Assert.IsNotNull (ex.Message, "#C4");
+			}
+
+			Assert.AreEqual (3, links.Count, "#C5");
+			Assert.IsTrue (links.LinksAdded, "#C6");
+			Assert.AreSame (linkA, links [0], "#C7");
+			Assert.AreSame (linkB, links [1], "#C8");
+			Assert.AreSame (linkC, links [2], "#C9");
+			Assert.AreEqual (0, linkA.Start, "#C10");
+			Assert.AreEqual (7, linkA.Length, "#C11");
+			Assert.AreEqual (5, linkB.Start, "#C12");
+			Assert.AreEqual (4, linkB.Length, "#C13");
+			Assert.AreEqual (14, linkC.Start, "#C14");
+			Assert.AreEqual (3, linkC.Length, "#C15");
+		}
+
+		[Test] // Add (LinkLabel.Link)
+		public void Add1_Value_Null ()
+		{
+			LinkLabel l = new LinkLabel ();
+			l.Text = "Managed Windows Forms";
+
+			LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
+				l);
+			try {
+				links.Add ((LinkLabel.Link) null);
+				Assert.Fail ("#1");
+			} catch (NullReferenceException) {
+			}
+		}
+
+		[Test] // Add (int, int)
+		public void Add2 ()
+		{
+			LinkLabel l = new LinkLabel ();
+			l.Text = "Managed Windows Forms";
+
+			LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection (
+				l);
+			LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection (
+				l);
+
+			LinkLabel.Link linkA = links1.Add (0, 7);
+			Assert.AreEqual (1, links1.Count, "#A1");
+			Assert.AreEqual (1, links2.Count, "#A2");
+			Assert.IsTrue (links1.LinksAdded, "#A3");
+			Assert.IsFalse (links2.LinksAdded, "#A4");
+			Assert.AreSame (linkA, links1 [0], "#A5");
+			Assert.AreSame (linkA, links2 [0], "#A6");
+
+			LinkLabel.Link linkB = links1.Add (8, 7);
+			Assert.AreEqual (2, links1.Count, "#B1");
+			Assert.AreEqual (2, links2.Count, "#B2");
+			Assert.IsTrue (links1.LinksAdded, "#B3");
+			Assert.IsFalse (links2.LinksAdded, "#B4");
+			Assert.AreSame (linkA, links1 [0], "#B5");
+			Assert.AreSame (linkA, links2 [0], "#B6");
+			Assert.AreSame (linkB, links1 [1], "#B7");
+			Assert.AreSame (linkB, links2 [1], "#B8");
+
+			LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection (
+				l);
+			Assert.AreEqual (2, links3.Count, "#C1");
+			Assert.IsFalse (links3.LinksAdded, "#C2");
+			Assert.AreSame (linkA, links3 [0], "#C3");
+			Assert.AreSame (linkB, links3 [1], "#C4");
+		}
+
+		[Test] // Add (int, int)
+		public void Add2_Overlap ()
+		{
+			LinkLabel l = new LinkLabel ();
+			l.Text = "Managed Windows Forms";
+
+			LinkLabel.LinkCollection links = new LinkLabel.LinkCollection (
+				l);
+
+			LinkLabel.Link linkA = links.Add (0, 7);
+			Assert.AreEqual (1, links.Count, "#A1");
+			Assert.IsTrue (links.LinksAdded, "#A2");
+			Assert.AreSame (linkA, links [0], "#A3");
+
+			try {
+				links.Add (5, 4);
+				Assert.Fail ("#B1");
+			} catch (InvalidOperationException ex) {
+				// Overlapping link regions
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+			}
+
+			Assert.AreEqual (2, links.Count, "#B5");
+			Assert.IsTrue (links.LinksAdded, "#B6");
+			Assert.AreSame (linkA, links [0], "#B7");
+			Assert.IsNotNull (links [1], "#B8");
+			Assert.AreEqual (0, linkA.Start, "#B9");
+			Assert.AreEqual (7, linkA.Length, "#B10");
+			Assert.AreEqual (5, links [1].Start, "#B11");
+			Assert.AreEqual (4, links [1].Length, "#B12");
+
+			try {
+				links.Add (14, 3);
+				Assert.Fail ("#C1");
+			} catch (InvalidOperationException ex) {
+				// Overlapping link regions
+				Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
+				Assert.IsNull (ex.InnerException, "#C3");
+				Assert.IsNotNull (ex.Message, "#C4");
+			}
+
+			Assert.AreEqual (3, links.Count, "#C5");
+			Assert.IsTrue (links.LinksAdded, "#C6");
+			Assert.AreSame (linkA, links [0], "#C7");
+			Assert.IsNotNull (links [1], "#C8");
+			Assert.IsNotNull (links [2], "#C9");
+			Assert.AreEqual (0, linkA.Start, "#C10");
+			Assert.AreEqual (7, linkA.Length, "#C11");
+			Assert.AreEqual (5, links [1].Start, "#C12");
+			Assert.AreEqual (4, links [1].Length, "#C13");
+			Assert.AreEqual (14, links [2].Start, "#C14");
+			Assert.AreEqual (3, links [2].Length, "#C15");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/MaskedTextBoxTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/MaskedTextBoxTest.cs
@@ -1,970 +1,970 @@
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//      Rolf Bjarne Kvinge  (RKvinge@novell.com)
-//
-
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms;
-using System.Xml;
-using System.Threading;
-using NUnit.Framework;
-using System.Globalization;
-using Thread=System.Threading.Thread;
-using CategoryAttribute=NUnit.Framework.CategoryAttribute;
-using System.Reflection;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class MaskedTextBoxTest : TestHelper
-	{
-		[SetUp]
-		protected override void SetUp () {
-			Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");
-			base.SetUp ();
-		}
-
-		[Test]
-		public void InitialProperties ()
-		{
-			MaskedTextBox mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.AcceptsTab, "#A1");
-			Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A2");
-			Assert.AreEqual (false, mtb.AsciiOnly, "#A3");
-			Assert.AreEqual (false, mtb.BeepOnError, "#B1");
-			Assert.AreEqual (false, mtb.CanUndo, "#C1");
-			Assert.IsNotNull (mtb.Culture, "#C3");
-			Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#4");
-			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C5");
-			Assert.IsNull (mtb.FormatProvider, "#F1");
-			Assert.AreEqual (false, mtb.HidePromptOnLeave, "#H1");
-			Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I1");
-			Assert.AreEqual (false, mtb.IsOverwriteMode, "#I2");
-			Assert.AreEqual (0, mtb.Lines.Length, "#L1");
-			Assert.AreEqual ("", mtb.Mask, "#M1");
-			Assert.AreEqual (true, mtb.MaskCompleted, "#M2");
-			Assert.IsNull (mtb.MaskedTextProvider, "#M3");
-			Assert.AreEqual (true, mtb.MaskFull, "#M4");
-			Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#M5");
-			Assert.AreEqual (false, mtb.Multiline, "#M6");
-			Assert.AreEqual ('\0', mtb.PasswordChar, "#P1");
-			Assert.AreEqual ('_', mtb.PromptChar, "#P2");
-			Assert.AreEqual (false, mtb.ReadOnly, "#R1");
-			Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#R2");
-			Assert.AreEqual (true, mtb.ResetOnPrompt, "#R3");
-			Assert.AreEqual (true, mtb.ResetOnSpace, "#R4");
-			Assert.AreEqual ("", mtb.SelectedText, "#S1");
-			Assert.AreEqual (true, mtb.SkipLiterals, "#S2");
-			Assert.AreEqual ("", mtb.Text, "#T1");
-			Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T2");
-			Assert.AreEqual (0, mtb.TextLength, "#T3");
-			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T4");
-			Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#U1");
-			Assert.IsNull (mtb.ValidatingType, "#V1");
-			Assert.AreEqual (false, mtb.WordWrap, "#W1");
-			
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void WordWrapTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.WordWrap, "#W1");
-			mtb.WordWrap = true;
-			Assert.AreEqual (false, mtb.WordWrap, "#W2");
-			
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void ValidatingTypeTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.IsNull (mtb.ValidatingType, "#V1");
-			mtb.ValidatingType = typeof(int);
-			Assert.IsNotNull (mtb.ValidatingType, "#V2");
-			Assert.AreSame (typeof(int), mtb.ValidatingType, "#V3");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void UseSystemPasswordCharTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#U1");
-			mtb.UseSystemPasswordChar = true;
-			Assert.AreEqual (true, mtb.UseSystemPasswordChar, "#U2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void TextMaskFormatTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T1");
-			mtb.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
-			Assert.AreEqual (MaskFormat.ExcludePromptAndLiterals, mtb.TextMaskFormat, "#T2");
-			mtb.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
-			Assert.AreEqual (MaskFormat.IncludePromptAndLiterals, mtb.TextMaskFormat, "#T3");
-			mtb.TextMaskFormat = MaskFormat.IncludePrompt;
-			Assert.AreEqual (MaskFormat.IncludePrompt, mtb.TextMaskFormat, "#T4");
-			mtb.TextMaskFormat = MaskFormat.IncludeLiterals;
-			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T4");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		[ExpectedException (typeof(InvalidEnumArgumentException))]
-		public void TextMaskFormatExceptionTestException ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			mtb.TextMaskFormat = (MaskFormat) 123;
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void TextLengthTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (0, mtb.TextLength, "#T1");
-			mtb.Text = "abc";
-			Assert.AreEqual (3, mtb.TextLength, "#T2");
-			
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void TextAlignTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T1");
-			mtb.TextAlign = HorizontalAlignment.Center;
-			Assert.AreEqual (HorizontalAlignment.Center, mtb.TextAlign, "#T2");
-			mtb.TextAlign = HorizontalAlignment.Right;
-			Assert.AreEqual (HorizontalAlignment.Right, mtb.TextAlign, "#T3");
-			mtb.TextAlign = HorizontalAlignment.Left;
-			Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T4");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		[ExpectedException (typeof (InvalidEnumArgumentException))]
-		public void TextAlignExceptionTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			mtb.TextAlign = (HorizontalAlignment) 123;
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void TextTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual ("", mtb.Text, "#T1");
-			mtb.Text = "abc";
-			Assert.AreEqual ("abc", mtb.Text, "#T2");
-			mtb.Text = "ABC";
-			Assert.AreEqual ("ABC", mtb.Text, "#T3");
-			mtb.Mask = "abc";
-			mtb.Text = "abc";
-			Assert.AreEqual ("abc", mtb.Text, "#T4");
-			mtb.Text = "ABC";
-			Assert.AreEqual ("Abc", mtb.Text, "#T5");
-			mtb.Text = "123";
-			Assert.AreEqual ("1bc", mtb.Text, "#T6");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void TextTest2 ()
-		{
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			mtb.Mask = "99 99";
-
-			mtb.Text = "23 34";
-			Assert.AreEqual ("23 34", mtb.Text, "#T1");
-
-			mtb.RejectInputOnFirstFailure = true;
-			mtb.Text = "23 34";
-			Assert.AreEqual ("23 34", mtb.Text, "#T2");
-
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void TextTest3 ()
-		{
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			mtb.Mask = "00-00";
-			mtb.Text = "12 3";
-			Assert.AreEqual ("12- 3", mtb.Text, "#T1");
-
-			mtb.Text = "b31i4";
-			Assert.AreEqual ("31-4", mtb.Text, "#T2");
-
-			mtb.Text = "1234";
-			Assert.AreEqual ("12-34", mtb.Text, "#T3");
-
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void SkipLiteralsTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (true, mtb.SkipLiterals, "#S1");
-			mtb.SkipLiterals = false;
-			Assert.AreEqual (false, mtb.SkipLiterals, "#S2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void SelectedTextTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual ("", mtb.SelectedText, "#S1");
-			mtb.Text = "abc";
-			Assert.AreEqual ("", mtb.SelectedText, "#S2");
-			mtb.SelectAll ();
-			Assert.AreEqual ("abc", mtb.SelectedText, "#S3");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void ResetOnSpaceTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (true, mtb.ResetOnSpace, "#R1");
-			mtb.ResetOnSpace = false;
-			Assert.AreEqual (false, mtb.ResetOnSpace, "#R2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void ResetOnPromptTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (true, mtb.ResetOnPrompt, "#R1");
-			mtb.ResetOnPrompt = false;
-			Assert.AreEqual (false, mtb.ResetOnPrompt, "#R2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void RejectInputOnFirstFailureTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#R1");
-			mtb.RejectInputOnFirstFailure = true;
-			Assert.AreEqual (true, mtb.RejectInputOnFirstFailure, "#R2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void ReadOnlyTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.ReadOnly, "#R1");
-			mtb.ReadOnly = true;
-			Assert.AreEqual (true, mtb.ReadOnly, "#R2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void PromptCharTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual ('_', mtb.PromptChar, "#P1");
-			mtb.PromptChar = '*';
-			Assert.AreEqual ('*', mtb.PromptChar, "#P2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void PasswordCharTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual ('\0', mtb.PasswordChar, "#P1");
-			mtb.PasswordChar = '*';
-			Assert.AreEqual ('*', mtb.PasswordChar, "#P2");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void MultilineTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.Multiline, "#M1");
-			mtb.Multiline = true;
-			Assert.AreEqual (false, mtb.Multiline, "#M2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void MaskFullTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (true, mtb.MaskFull, "#M1");
-			mtb.Mask = "abc";
-			Assert.AreEqual (false, mtb.MaskFull, "#M2");
-			mtb.Text = "abc";
-			Assert.AreEqual (true, mtb.MaskFull, "#M3");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void MaskedTextProviderTest ()
-		{
-
-			MaskedTextBox mtb;
-			MaskedTextProvider mtp;
-
-			mtb = new MaskedTextBox ();
-			Assert.IsNull (mtb.MaskedTextProvider, "#M1");
-			mtb.Mask = "abc";
-			Assert.IsNotNull (mtb.MaskedTextProvider, "#M2");
-			Assert.AreEqual ("abc", mtb.MaskedTextProvider.Mask, "#M3");
-			// We always get a clone of the current mtp.
-			Assert.IsTrue (mtb.MaskedTextProvider != mtb.MaskedTextProvider, "#M4");
-			mtb.Dispose ();
-
-			mtp = new MaskedTextProvider ("Z");
-			mtb = new MaskedTextBox (mtp);
-			Assert.IsNotNull (mtb.MaskedTextProvider, "#M5");
-			Assert.AreEqual ("Z", mtb.MaskedTextProvider.Mask, "#6");
-			Assert.IsTrue (mtb.MaskedTextProvider != mtb.MaskedTextProvider, "#M7");
-			Assert.IsTrue (mtb.MaskedTextProvider != mtp, "#M8");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void MaskCompletedTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (true, mtb.MaskCompleted, "#M1");
-			mtb.Mask = "abcABCZZZ";
-			Assert.AreEqual (false, mtb.MaskCompleted, "#M2");
-			mtb.Text = "abcabcabc";
-			Assert.AreEqual (true, mtb.MaskCompleted, "#M3");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void MaskTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual ("", mtb.Mask, "#M1");
-			mtb.Mask = "abc";
-			Assert.AreEqual ("abc", mtb.Mask, "#M2");
-			mtb.Mask = "";
-			Assert.AreEqual ("", mtb.Mask, "#M3");
-			mtb.Mask = null;
-			Assert.AreEqual ("", mtb.Mask, "#M4");
-			mtb.Mask = "";
-			Assert.AreEqual ("", mtb.Mask, "#M5");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void LinesTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (0, mtb.Lines.Length, "#L1");
-			mtb.Text = "abc";
-			Assert.AreEqual (1, mtb.Lines.Length, "#L2");
-			Assert.AreEqual ("abc", mtb.Lines [0], "#L2a");
-			mtb.Text = "abc\nabc";
-			Assert.AreEqual (2, mtb.Lines.Length, "#L3");
-			Assert.AreEqual ("abc", mtb.Lines [0], "#L3a");
-			Assert.AreEqual ("abc", mtb.Lines [1], "#L3b");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void IsOverwriteModeTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.IsOverwriteMode, "#I1");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void InsertKeyModeTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I1");
-			mtb.InsertKeyMode = InsertKeyMode.Insert;
-			Assert.AreEqual (InsertKeyMode.Insert, mtb.InsertKeyMode, "#I2");
-			mtb.InsertKeyMode = InsertKeyMode.Overwrite;
-			Assert.AreEqual (InsertKeyMode.Overwrite, mtb.InsertKeyMode, "#I3");
-			mtb.InsertKeyMode = InsertKeyMode.Default;
-			Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I4");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidEnumArgumentException))]
-		public void InsertKeyModeExceptionTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			mtb.InsertKeyMode = (InsertKeyMode) 123;
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void HidePromptOnLeaveTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.HidePromptOnLeave, "#H1");
-			mtb.HidePromptOnLeave = true;
-			Assert.AreEqual (true, mtb.HidePromptOnLeave, "#H1");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void FormatProviderTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.IsNull (mtb.FormatProvider, "#F1");
-			mtb.FormatProvider = CultureInfo.CurrentCulture.NumberFormat;
-			Assert.IsNotNull (mtb.FormatProvider, "#F2");
-			Assert.AreSame (CultureInfo.CurrentCulture.NumberFormat, mtb.FormatProvider, "#F3");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void CutCopyMaskFormatTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C1");
-			mtb.CutCopyMaskFormat = MaskFormat.ExcludePromptAndLiterals;
-			Assert.AreEqual (MaskFormat.ExcludePromptAndLiterals, mtb.CutCopyMaskFormat, "#C2");
-			mtb.CutCopyMaskFormat = MaskFormat.IncludeLiterals;
-			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C3");
-			mtb.CutCopyMaskFormat = MaskFormat.IncludePrompt;
-			Assert.AreEqual (MaskFormat.IncludePrompt, mtb.CutCopyMaskFormat, "#C4");
-			mtb.CutCopyMaskFormat = MaskFormat.IncludePromptAndLiterals;
-			Assert.AreEqual (MaskFormat.IncludePromptAndLiterals, mtb.CutCopyMaskFormat, "#C5");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		[ExpectedException (typeof (InvalidEnumArgumentException))]
-		public void CutCopyMaskFormatExceptionTest ()
-		{
-
-			MaskedTextBox mtb;
-
-			mtb = new MaskedTextBox ();
-			mtb.CutCopyMaskFormat = (MaskFormat) 123;
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void CultureTest ()
-		{
-			MaskedTextBox mtb;
-			MaskedTextProvider mtp;
-			try {
-				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");
-				mtb = new MaskedTextBox ();
-				Assert.IsNotNull (mtb.Culture, "#A1");
-				Assert.AreEqual ("en-US", mtb.Culture.Name, "#A2");
-				mtb.Dispose ();
-
-				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("es-ES");
-				mtb = new MaskedTextBox ();
-				Assert.IsNotNull (mtb.Culture, "#B1");
-				Assert.AreEqual ("es-ES", mtb.Culture.Name, "#B2");
-				mtb.Dispose ();
-
-				mtp = new MaskedTextProvider ("abc");
-				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("es-AR");
-				mtb = new MaskedTextBox (mtp);
-				Assert.IsNotNull (mtb.Culture, "#C1");
-				Assert.AreEqual ("es-ES", mtb.Culture.Name, "#C2");
-				mtb.Dispose ();
-				
-				mtb = new MaskedTextBox ();
-				mtb.Culture = CultureInfo.GetCultureInfo ("de-DE");
-				Assert.AreEqual ("de-DE", mtb.Culture.Name, "#D1");
-				
-			} finally {
-				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");
-			}
-		}
-		
-		[Test]
-		public void CanUndoTest ()
-		{
-			MaskedTextBox mtb = new MaskedTextBox ();
-			TextBoxBase tbb = mtb;
-			Assert.AreEqual (false, mtb.CanUndo, "#A1");
-			Assert.AreEqual (false, tbb.CanUndo, "#A2");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void BeepOnErrorTest ()
-		{
-			MaskedTextBox mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.BeepOnError, "#A1");
-			mtb.BeepOnError = true;
-			Assert.AreEqual (true, mtb.BeepOnError, "#A2");
-			mtb.BeepOnError = false;
-			Assert.AreEqual (false, mtb.BeepOnError, "#A3");
-			mtb.Dispose ();
-		}
-
-		[Test]
-		public void AsciiOnlyTest ()
-		{
-			MaskedTextBox mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.AsciiOnly, "#A1");
-			mtb.AsciiOnly = true;
-			Assert.AreEqual (true, mtb.AsciiOnly, "#A2");
-			mtb.AsciiOnly = false;
-			Assert.AreEqual (false, mtb.AsciiOnly, "#A3");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void AllowPromptAsInputTest ()
-		{
-			MaskedTextBox mtb = new MaskedTextBox ();
-			Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A1");
-			mtb.AllowPromptAsInput = true;
-			Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A2");
-			mtb.AllowPromptAsInput = false;
-			Assert.AreEqual (false, mtb.AllowPromptAsInput, "#A3");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void AcceptsTabTest ()
-		{
-			MaskedTextBox mtb = new MaskedTextBox ();
-			Assert.AreEqual (false, mtb.AcceptsTab, "#A1");
-			mtb.AcceptsTab = true;
-			Assert.AreEqual (false, mtb.AcceptsTab, "#A2");
-			mtb.AcceptsTab = false;
-			Assert.AreEqual (false, mtb.AcceptsTab, "#A3");
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void ConstructorTest ()
-		{
-			using (MaskedTextBox mtb = new MaskedTextBox ()) {
-				Assert.AreEqual (false, mtb.AcceptsTab, "#A_A1");
-				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A_A2");
-				Assert.AreEqual (false, mtb.AsciiOnly, "#A_A3");
-				Assert.AreEqual (false, mtb.BeepOnError, "#A_B1");
-				Assert.AreEqual (false, mtb.CanUndo, "#A_C1");
-				Assert.IsNotNull (mtb.Culture, "#A_C3");
-				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#A_4");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#A_C5");
-				Assert.IsNull (mtb.FormatProvider, "#A_F1");
-				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#A_H1");
-				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#A_I1");
-				Assert.AreEqual (false, mtb.IsOverwriteMode, "#A_I2");
-				Assert.AreEqual (0, mtb.Lines.Length, "#A_L1");
-				Assert.AreEqual ("", mtb.Mask, "#A_M1");
-				Assert.AreEqual (true, mtb.MaskCompleted, "#A_M2");
-				Assert.IsNull (mtb.MaskedTextProvider, "#A_M3");
-				Assert.AreEqual (true, mtb.MaskFull, "#A_M4");
-				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#A_M5");
-				Assert.AreEqual (false, mtb.Multiline, "#A_M6");
-				Assert.AreEqual ('\0', mtb.PasswordChar, "#A_P1");
-				Assert.AreEqual ('_', mtb.PromptChar, "#A_P2");
-				Assert.AreEqual (false, mtb.ReadOnly, "#A_R1");
-				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#A_R2");
-				Assert.AreEqual (true, mtb.ResetOnPrompt, "#A_R3");
-				Assert.AreEqual (true, mtb.ResetOnSpace, "#A_R4");
-				Assert.AreEqual ("", mtb.SelectedText, "#A_S1");
-				Assert.AreEqual (true, mtb.SkipLiterals, "#A_S2");
-				Assert.AreEqual ("", mtb.Text, "#A_T1");
-				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#A_T2");
-				Assert.AreEqual (0, mtb.TextLength, "#A_T3");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#A_T4");
-				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#A_U1");
-				Assert.IsNull (mtb.ValidatingType, "#A_V1");
-				Assert.AreEqual (false, mtb.WordWrap, "#A_W1");
-			}
-
-			using (MaskedTextBox mtb = new MaskedTextBox ("abc")) {
-				Assert.AreEqual (false, mtb.AcceptsTab, "#B_A1");
-				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#B_A2");
-				Assert.AreEqual (false, mtb.AsciiOnly, "#B_A3");
-				Assert.AreEqual (false, mtb.BeepOnError, "#B_B1");
-				Assert.AreEqual (false, mtb.CanUndo, "#B_C1");
-				Assert.IsNotNull (mtb.Culture, "#B_C3");
-				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#B_4");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#B_C5");
-				Assert.IsNull (mtb.FormatProvider, "#B_F1");
-				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#B_H1");
-				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#B_I1");
-				Assert.AreEqual (false, mtb.IsOverwriteMode, "#B_I2");
-				Assert.AreEqual (1, mtb.Lines.Length, "#B_L1");
-				Assert.AreEqual ("abc", mtb.Mask, "#B_M1");
-				Assert.AreEqual (true, mtb.MaskCompleted, "#B_M2");
-				Assert.IsNotNull (mtb.MaskedTextProvider, "#B_M3");
-				Assert.AreEqual (false, mtb.MaskFull, "#B_M4");
-				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#B_M5");
-				Assert.AreEqual (false, mtb.Multiline, "#B_M6");
-				Assert.AreEqual ('\0', mtb.PasswordChar, "#B_P1");
-				Assert.AreEqual ('_', mtb.PromptChar, "#B_P2");
-				Assert.AreEqual (false, mtb.ReadOnly, "#B_R1");
-				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#B_R2");
-				Assert.AreEqual (true, mtb.ResetOnPrompt, "#B_R3");
-				Assert.AreEqual (true, mtb.ResetOnSpace, "#B_R4");
-				Assert.AreEqual ("", mtb.SelectedText, "#B_S1");
-				Assert.AreEqual (true, mtb.SkipLiterals, "#B_S2");
-				Assert.AreEqual (" bc", mtb.Text, "#B_T1");
-				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#B_T2");
-				Assert.AreEqual (3, mtb.TextLength, "#B_T3");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#B_T4");
-				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#B_U1");
-				Assert.IsNull (mtb.ValidatingType, "#B_V1");
-				Assert.AreEqual (false, mtb.WordWrap, "#B_W1");
-			}
-
-			using (MaskedTextBox mtb = new MaskedTextBox ("<>")) {
-				Assert.AreEqual (false, mtb.AcceptsTab, "#C_A1");
-				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#C_A2");
-				Assert.AreEqual (false, mtb.AsciiOnly, "#C_A3");
-				Assert.AreEqual (false, mtb.BeepOnError, "#C_B1");
-				Assert.AreEqual (false, mtb.CanUndo, "#C_C1");
-				Assert.IsNotNull (mtb.Culture, "#C_C3");
-				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#C_4");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C_C5");
-				Assert.IsNull (mtb.FormatProvider, "#C_F1");
-				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#C_H1");
-				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#C_I1");
-				Assert.AreEqual (false, mtb.IsOverwriteMode, "#C_I2");
-				Assert.AreEqual (0, mtb.Lines.Length, "#C_L1");
-				Assert.AreEqual ("<>", mtb.Mask, "#C_M1");
-				Assert.AreEqual (true, mtb.MaskCompleted, "#C_M2");
-				Assert.IsNotNull (mtb.MaskedTextProvider, "#C_M3");
-				Assert.AreEqual (true, mtb.MaskFull, "#C_M4");
-				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#C_M5");
-				Assert.AreEqual (false, mtb.Multiline, "#C_M6");
-				Assert.AreEqual ('\0', mtb.PasswordChar, "#C_P1");
-				Assert.AreEqual ('_', mtb.PromptChar, "#C_P2");
-				Assert.AreEqual (false, mtb.ReadOnly, "#C_R1");
-				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#C_R2");
-				Assert.AreEqual (true, mtb.ResetOnPrompt, "#C_R3");
-				Assert.AreEqual (true, mtb.ResetOnSpace, "#C_R4");
-				Assert.AreEqual ("", mtb.SelectedText, "#C_S1");
-				Assert.AreEqual (true, mtb.SkipLiterals, "#C_S2");
-				Assert.AreEqual ("", mtb.Text, "#C_T1");
-				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#C_T2");
-				Assert.AreEqual (0, mtb.TextLength, "#C_T3");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#C_T4");
-				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#C_U1");
-				Assert.IsNull (mtb.ValidatingType, "#C_V1");
-				Assert.AreEqual (false, mtb.WordWrap, "#C_W1");
-			}
-
-			using (MaskedTextBox mtb = new MaskedTextBox ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][")) {
-				Assert.AreEqual (false, mtb.AcceptsTab, "#D_A1");
-				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#D_A2");
-				Assert.AreEqual (false, mtb.AsciiOnly, "#D_A3");
-				Assert.AreEqual (false, mtb.BeepOnError, "#D_B1");
-				Assert.AreEqual (false, mtb.CanUndo, "#D_C1");
-				Assert.IsNotNull (mtb.Culture, "#D_C3");
-				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#D_4");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#D_C5");
-				Assert.IsNull (mtb.FormatProvider, "#D_F1");
-				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#D_H1");
-				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#D_I1");
-				Assert.AreEqual (false, mtb.IsOverwriteMode, "#D_I2");
-				Assert.AreEqual (1, mtb.Lines.Length, "#D_L1");
-				Assert.AreEqual ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][", mtb.Mask, "#D_M1");
-				Assert.AreEqual (false, mtb.MaskCompleted, "#D_M2");
-				Assert.IsNotNull (mtb.MaskedTextProvider, "#D_M3");
-				Assert.AreEqual (false, mtb.MaskFull, "#D_M4");
-				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#D_M5");
-				Assert.AreEqual (false, mtb.Multiline, "#D_M6");
-				Assert.AreEqual ('\0', mtb.PasswordChar, "#D_P1");
-				Assert.AreEqual ('_', mtb.PromptChar, "#D_P2");
-				Assert.AreEqual (false, mtb.ReadOnly, "#D_R1");
-				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#D_R2");
-				Assert.AreEqual (true, mtb.ResetOnPrompt, "#D_R3");
-				Assert.AreEqual (true, mtb.ResetOnSpace, "#D_R4");
-				Assert.AreEqual ("", mtb.SelectedText, "#D_S1");
-				Assert.AreEqual (true, mtb.SkipLiterals, "#D_S2");
-				Assert.AreEqual (" bcdefghijklmopqrstuvwxyz B DEFGHIJK MOPQRSTUVWXYZ12345678  ÑñæøåÆØÅ!ºª\"·$% /()=' ¡¿`^+*´¨Çç-_.:,;}{][", mtb.Text, "#D_T1");
-				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#D_T2");
-				Assert.AreEqual (102, mtb.TextLength, "#D_T3");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#D_T4");
-				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#D_U1");
-				Assert.IsNull (mtb.ValidatingType, "#D_V1");
-				Assert.AreEqual (false, mtb.WordWrap, "#D_W1");
-			}
-
-			MaskedTextProvider mtp = new MaskedTextProvider ("abcd", CultureInfo.GetCultureInfo ("es-AR"), false, '>', '^', false);
-			using (MaskedTextBox mtb = new MaskedTextBox (mtp)) {
-				Assert.AreEqual (false, mtb.AcceptsTab, "#E_A1");
-				Assert.AreEqual (false, mtb.AllowPromptAsInput, "#E_A2");
-				Assert.AreEqual (false, mtb.AsciiOnly, "#E_A3");
-				Assert.AreEqual (false, mtb.BeepOnError, "#E_B1");
-				Assert.AreEqual (false, mtb.CanUndo, "#E_C1");
-				Assert.IsNotNull (mtb.Culture, "#E_C3");
-				Assert.AreEqual ("es-AR", mtb.Culture.Name, "#E_4");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#E_C5");
-				Assert.IsNull (mtb.FormatProvider, "#E_F1");
-				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#E_H1");
-				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#E_I1");
-				Assert.AreEqual (false, mtb.IsOverwriteMode, "#E_I2");
-				Assert.AreEqual (1, mtb.Lines.Length, "#E_L1");
-				Assert.AreEqual ("abcd", mtb.Mask, "#E_M1");
-				Assert.AreEqual (true, mtb.MaskCompleted, "#E_M2");
-				Assert.IsNotNull (mtb.MaskedTextProvider, "#E_M3");
-				Assert.IsFalse (mtb.MaskedTextProvider == mtp, "#E_M3-b");
-				Assert.AreEqual (false, mtb.MaskFull, "#E_M4");
-				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#E_M5");
-				Assert.AreEqual (false, mtb.Multiline, "#E_M6");
-				Assert.AreEqual ('^', mtb.PasswordChar, "#E_P1");
-				Assert.AreEqual ('>', mtb.PromptChar, "#E_P2");
-				Assert.AreEqual (false, mtb.ReadOnly, "#E_R1");
-				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#E_R2");
-				Assert.AreEqual (true, mtb.ResetOnPrompt, "#E_R3");
-				Assert.AreEqual (true, mtb.ResetOnSpace, "#E_R4");
-				Assert.AreEqual ("", mtb.SelectedText, "#E_S1");
-				Assert.AreEqual (true, mtb.SkipLiterals, "#E_S2");
-				Assert.AreEqual (" bcd", mtb.Text, "#E_T1");
-				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#E_T2");
-				Assert.AreEqual (4, mtb.TextLength, "#E_T3");
-				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#E_T4");
-				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#E_U1");
-				Assert.IsNull (mtb.ValidatingType, "#E_V1");
-				Assert.AreEqual (false, mtb.WordWrap, "#E_W1");
-			}
-			
-		}
-		
-		[Test]
-		public void UndoTest ()
-		{
-			MaskedTextBox mtb;
-			
-			mtb = new MaskedTextBox ();
-			mtb.Text = "abcdef";
-			Assert.AreEqual (false, mtb.CanUndo, "#A0-c");
-			mtb.Undo ();
-			Assert.AreEqual ("abcdef", mtb.Text, "#A1");
-			Assert.AreEqual (false, mtb.CanUndo, "#A1-c");
-			mtb.Text = "cdef";
-			mtb.ClearUndo ();
-			Assert.AreEqual ("cdef", mtb.Text, "#A2");
-			Assert.AreEqual (false, mtb.CanUndo, "#A2-c");
-			
-			mtb.Dispose ();
-		}
-		
-		[Test]
-		public void CreateHandleTest ()
-		{
-			using (MaskedTextBox mtb = new MaskedTextBox ()) {
-				Assert.AreEqual (false, mtb.IsHandleCreated, "#A1");
-				typeof (MaskedTextBox).GetMethod ("CreateHandle", global::System.Reflection.BindingFlags.Instance | global::System.Reflection.BindingFlags.NonPublic).Invoke (mtb, new object [] { });
-				Assert.AreEqual (true, mtb.IsHandleCreated, "#A2");
-			}
-		}
-		
-		[Test]
-		public void GetFirstCharIndexFromLineTest ()
-		{
-			using (MaskedTextBox mtb = new MaskedTextBox ()) {
-				for (int i = -100; i < 100; i++) { 
-					Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#A" + i.ToString ());
-				}
-				mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";
-				for (int i = -100; i < 100; i++) {
-					Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#B" + i.ToString ());
-				}
-			}
-		}
-
-
-		[Test]
-		public void GetFirstCharIndexOfCurrentLineTest ()
-		{
-			using (MaskedTextBox mtb = new MaskedTextBox ()) {
-				Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#A1");
-				mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";
-				Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#B1");
-			}
-		}
-
-		[Test]
-		public void GetLineFromCharIndexTest ()
-		{
-			using (MaskedTextBox mtb = new MaskedTextBox ()) {
-				for (int i = -100; i < 100; i++) {
-					Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#A" + i.ToString ());
-				}
-				mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";
-				for (int i = -100; i < 100; i++) {
-					Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#B" + i.ToString ());
-				}
-			}
-		}
-		
-		[Test]
-		public void IsInputKeyTest ()
-		{
-			using (Form f = new Form ()) {
-			using (MaskedTextBox mtb = new MaskedTextBox ()) {
-				f.Controls.Add (mtb);
-				f.Show ();
-				MethodInfo IsInputKey = typeof (MaskedTextBox).GetMethod ("IsInputKey", global::System.Reflection.BindingFlags.NonPublic | global::System.Reflection.BindingFlags.Instance);
-				
-				for (int i = 0; i <= 0xFF; i++) {
-					Keys key = (Keys) i;
-					Keys key_ALT = key | Keys.Alt;
-					Keys key_SHIFT = key | Keys.Shift;
-					Keys key_CTRL = key | Keys.Control;
-					Keys key_ALT_SHIFT = key | Keys.Alt | Keys.Shift;
-					Keys key_ALT_CTRL = key | Keys.Alt | Keys.Control;
-					Keys key_SHIFT_CTLR = key | Keys.Shift | Keys.Control;
-					Keys key_ALT_SHIFT_CTLR = key | Keys.Alt | Keys.Shift | Keys.Control;
-
-					bool is_input = false;
-					
-					switch (key) {
-					case Keys.PageDown:
-					case Keys.PageUp:
-					case Keys.End:
-					case Keys.Home:
-					case Keys.Left:
-					case Keys.Right:
-					case Keys.Up:
-					case Keys.Down:
-						is_input = true;
-						break;
-					}
-
-					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key }));
-					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT }));
-					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT }));
-					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_CTRL }));
-					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT }));
-					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_CTRL }));
-					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT_CTLR }));
-					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT_CTLR }));
-				}
-			}
-			}
-		}
-		
-		[Test]
-		public void ValidateTextTest ()
-		{
-			Assert.Ignore ("Pending implementation");
-		}
-		
-		[Test]
-		public void ToStringTest ()
-		{
-			Assert.Ignore ("Pending implementation");
-		}
-	}
-}
-
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//      Rolf Bjarne Kvinge  (RKvinge@novell.com)
+//
+
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+using System.Xml;
+using System.Threading;
+using NUnit.Framework;
+using System.Globalization;
+using Thread=System.Threading.Thread;
+using CategoryAttribute=NUnit.Framework.CategoryAttribute;
+using System.Reflection;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class MaskedTextBoxTest : TestHelper
+	{
+		[SetUp]
+		protected override void SetUp () {
+			Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");
+			base.SetUp ();
+		}
+
+		[Test]
+		public void InitialProperties ()
+		{
+			MaskedTextBox mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.AcceptsTab, "#A1");
+			Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A2");
+			Assert.AreEqual (false, mtb.AsciiOnly, "#A3");
+			Assert.AreEqual (false, mtb.BeepOnError, "#B1");
+			Assert.AreEqual (false, mtb.CanUndo, "#C1");
+			Assert.IsNotNull (mtb.Culture, "#C3");
+			Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#4");
+			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C5");
+			Assert.IsNull (mtb.FormatProvider, "#F1");
+			Assert.AreEqual (false, mtb.HidePromptOnLeave, "#H1");
+			Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I1");
+			Assert.AreEqual (false, mtb.IsOverwriteMode, "#I2");
+			Assert.AreEqual (0, mtb.Lines.Length, "#L1");
+			Assert.AreEqual ("", mtb.Mask, "#M1");
+			Assert.AreEqual (true, mtb.MaskCompleted, "#M2");
+			Assert.IsNull (mtb.MaskedTextProvider, "#M3");
+			Assert.AreEqual (true, mtb.MaskFull, "#M4");
+			Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#M5");
+			Assert.AreEqual (false, mtb.Multiline, "#M6");
+			Assert.AreEqual ('\0', mtb.PasswordChar, "#P1");
+			Assert.AreEqual ('_', mtb.PromptChar, "#P2");
+			Assert.AreEqual (false, mtb.ReadOnly, "#R1");
+			Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#R2");
+			Assert.AreEqual (true, mtb.ResetOnPrompt, "#R3");
+			Assert.AreEqual (true, mtb.ResetOnSpace, "#R4");
+			Assert.AreEqual ("", mtb.SelectedText, "#S1");
+			Assert.AreEqual (true, mtb.SkipLiterals, "#S2");
+			Assert.AreEqual ("", mtb.Text, "#T1");
+			Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T2");
+			Assert.AreEqual (0, mtb.TextLength, "#T3");
+			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T4");
+			Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#U1");
+			Assert.IsNull (mtb.ValidatingType, "#V1");
+			Assert.AreEqual (false, mtb.WordWrap, "#W1");
+			
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void WordWrapTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.WordWrap, "#W1");
+			mtb.WordWrap = true;
+			Assert.AreEqual (false, mtb.WordWrap, "#W2");
+			
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void ValidatingTypeTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.IsNull (mtb.ValidatingType, "#V1");
+			mtb.ValidatingType = typeof(int);
+			Assert.IsNotNull (mtb.ValidatingType, "#V2");
+			Assert.AreSame (typeof(int), mtb.ValidatingType, "#V3");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void UseSystemPasswordCharTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#U1");
+			mtb.UseSystemPasswordChar = true;
+			Assert.AreEqual (true, mtb.UseSystemPasswordChar, "#U2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void TextMaskFormatTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T1");
+			mtb.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
+			Assert.AreEqual (MaskFormat.ExcludePromptAndLiterals, mtb.TextMaskFormat, "#T2");
+			mtb.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
+			Assert.AreEqual (MaskFormat.IncludePromptAndLiterals, mtb.TextMaskFormat, "#T3");
+			mtb.TextMaskFormat = MaskFormat.IncludePrompt;
+			Assert.AreEqual (MaskFormat.IncludePrompt, mtb.TextMaskFormat, "#T4");
+			mtb.TextMaskFormat = MaskFormat.IncludeLiterals;
+			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#T4");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		[ExpectedException (typeof(InvalidEnumArgumentException))]
+		public void TextMaskFormatExceptionTestException ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			mtb.TextMaskFormat = (MaskFormat) 123;
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void TextLengthTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (0, mtb.TextLength, "#T1");
+			mtb.Text = "abc";
+			Assert.AreEqual (3, mtb.TextLength, "#T2");
+			
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void TextAlignTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T1");
+			mtb.TextAlign = HorizontalAlignment.Center;
+			Assert.AreEqual (HorizontalAlignment.Center, mtb.TextAlign, "#T2");
+			mtb.TextAlign = HorizontalAlignment.Right;
+			Assert.AreEqual (HorizontalAlignment.Right, mtb.TextAlign, "#T3");
+			mtb.TextAlign = HorizontalAlignment.Left;
+			Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#T4");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		[ExpectedException (typeof (InvalidEnumArgumentException))]
+		public void TextAlignExceptionTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			mtb.TextAlign = (HorizontalAlignment) 123;
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void TextTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual ("", mtb.Text, "#T1");
+			mtb.Text = "abc";
+			Assert.AreEqual ("abc", mtb.Text, "#T2");
+			mtb.Text = "ABC";
+			Assert.AreEqual ("ABC", mtb.Text, "#T3");
+			mtb.Mask = "abc";
+			mtb.Text = "abc";
+			Assert.AreEqual ("abc", mtb.Text, "#T4");
+			mtb.Text = "ABC";
+			Assert.AreEqual ("Abc", mtb.Text, "#T5");
+			mtb.Text = "123";
+			Assert.AreEqual ("1bc", mtb.Text, "#T6");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void TextTest2 ()
+		{
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			mtb.Mask = "99 99";
+
+			mtb.Text = "23 34";
+			Assert.AreEqual ("23 34", mtb.Text, "#T1");
+
+			mtb.RejectInputOnFirstFailure = true;
+			mtb.Text = "23 34";
+			Assert.AreEqual ("23 34", mtb.Text, "#T2");
+
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void TextTest3 ()
+		{
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			mtb.Mask = "00-00";
+			mtb.Text = "12 3";
+			Assert.AreEqual ("12- 3", mtb.Text, "#T1");
+
+			mtb.Text = "b31i4";
+			Assert.AreEqual ("31-4", mtb.Text, "#T2");
+
+			mtb.Text = "1234";
+			Assert.AreEqual ("12-34", mtb.Text, "#T3");
+
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void SkipLiteralsTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (true, mtb.SkipLiterals, "#S1");
+			mtb.SkipLiterals = false;
+			Assert.AreEqual (false, mtb.SkipLiterals, "#S2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void SelectedTextTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual ("", mtb.SelectedText, "#S1");
+			mtb.Text = "abc";
+			Assert.AreEqual ("", mtb.SelectedText, "#S2");
+			mtb.SelectAll ();
+			Assert.AreEqual ("abc", mtb.SelectedText, "#S3");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void ResetOnSpaceTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (true, mtb.ResetOnSpace, "#R1");
+			mtb.ResetOnSpace = false;
+			Assert.AreEqual (false, mtb.ResetOnSpace, "#R2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void ResetOnPromptTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (true, mtb.ResetOnPrompt, "#R1");
+			mtb.ResetOnPrompt = false;
+			Assert.AreEqual (false, mtb.ResetOnPrompt, "#R2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void RejectInputOnFirstFailureTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#R1");
+			mtb.RejectInputOnFirstFailure = true;
+			Assert.AreEqual (true, mtb.RejectInputOnFirstFailure, "#R2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void ReadOnlyTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.ReadOnly, "#R1");
+			mtb.ReadOnly = true;
+			Assert.AreEqual (true, mtb.ReadOnly, "#R2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void PromptCharTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual ('_', mtb.PromptChar, "#P1");
+			mtb.PromptChar = '*';
+			Assert.AreEqual ('*', mtb.PromptChar, "#P2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void PasswordCharTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual ('\0', mtb.PasswordChar, "#P1");
+			mtb.PasswordChar = '*';
+			Assert.AreEqual ('*', mtb.PasswordChar, "#P2");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void MultilineTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.Multiline, "#M1");
+			mtb.Multiline = true;
+			Assert.AreEqual (false, mtb.Multiline, "#M2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void MaskFullTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (true, mtb.MaskFull, "#M1");
+			mtb.Mask = "abc";
+			Assert.AreEqual (false, mtb.MaskFull, "#M2");
+			mtb.Text = "abc";
+			Assert.AreEqual (true, mtb.MaskFull, "#M3");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void MaskedTextProviderTest ()
+		{
+
+			MaskedTextBox mtb;
+			MaskedTextProvider mtp;
+
+			mtb = new MaskedTextBox ();
+			Assert.IsNull (mtb.MaskedTextProvider, "#M1");
+			mtb.Mask = "abc";
+			Assert.IsNotNull (mtb.MaskedTextProvider, "#M2");
+			Assert.AreEqual ("abc", mtb.MaskedTextProvider.Mask, "#M3");
+			// We always get a clone of the current mtp.
+			Assert.IsTrue (mtb.MaskedTextProvider != mtb.MaskedTextProvider, "#M4");
+			mtb.Dispose ();
+
+			mtp = new MaskedTextProvider ("Z");
+			mtb = new MaskedTextBox (mtp);
+			Assert.IsNotNull (mtb.MaskedTextProvider, "#M5");
+			Assert.AreEqual ("Z", mtb.MaskedTextProvider.Mask, "#6");
+			Assert.IsTrue (mtb.MaskedTextProvider != mtb.MaskedTextProvider, "#M7");
+			Assert.IsTrue (mtb.MaskedTextProvider != mtp, "#M8");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void MaskCompletedTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (true, mtb.MaskCompleted, "#M1");
+			mtb.Mask = "abcABCZZZ";
+			Assert.AreEqual (false, mtb.MaskCompleted, "#M2");
+			mtb.Text = "abcabcabc";
+			Assert.AreEqual (true, mtb.MaskCompleted, "#M3");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void MaskTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual ("", mtb.Mask, "#M1");
+			mtb.Mask = "abc";
+			Assert.AreEqual ("abc", mtb.Mask, "#M2");
+			mtb.Mask = "";
+			Assert.AreEqual ("", mtb.Mask, "#M3");
+			mtb.Mask = null;
+			Assert.AreEqual ("", mtb.Mask, "#M4");
+			mtb.Mask = "";
+			Assert.AreEqual ("", mtb.Mask, "#M5");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void LinesTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (0, mtb.Lines.Length, "#L1");
+			mtb.Text = "abc";
+			Assert.AreEqual (1, mtb.Lines.Length, "#L2");
+			Assert.AreEqual ("abc", mtb.Lines [0], "#L2a");
+			mtb.Text = "abc\nabc";
+			Assert.AreEqual (2, mtb.Lines.Length, "#L3");
+			Assert.AreEqual ("abc", mtb.Lines [0], "#L3a");
+			Assert.AreEqual ("abc", mtb.Lines [1], "#L3b");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void IsOverwriteModeTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.IsOverwriteMode, "#I1");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void InsertKeyModeTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I1");
+			mtb.InsertKeyMode = InsertKeyMode.Insert;
+			Assert.AreEqual (InsertKeyMode.Insert, mtb.InsertKeyMode, "#I2");
+			mtb.InsertKeyMode = InsertKeyMode.Overwrite;
+			Assert.AreEqual (InsertKeyMode.Overwrite, mtb.InsertKeyMode, "#I3");
+			mtb.InsertKeyMode = InsertKeyMode.Default;
+			Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#I4");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidEnumArgumentException))]
+		public void InsertKeyModeExceptionTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			mtb.InsertKeyMode = (InsertKeyMode) 123;
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void HidePromptOnLeaveTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.HidePromptOnLeave, "#H1");
+			mtb.HidePromptOnLeave = true;
+			Assert.AreEqual (true, mtb.HidePromptOnLeave, "#H1");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void FormatProviderTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.IsNull (mtb.FormatProvider, "#F1");
+			mtb.FormatProvider = CultureInfo.CurrentCulture.NumberFormat;
+			Assert.IsNotNull (mtb.FormatProvider, "#F2");
+			Assert.AreSame (CultureInfo.CurrentCulture.NumberFormat, mtb.FormatProvider, "#F3");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void CutCopyMaskFormatTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C1");
+			mtb.CutCopyMaskFormat = MaskFormat.ExcludePromptAndLiterals;
+			Assert.AreEqual (MaskFormat.ExcludePromptAndLiterals, mtb.CutCopyMaskFormat, "#C2");
+			mtb.CutCopyMaskFormat = MaskFormat.IncludeLiterals;
+			Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C3");
+			mtb.CutCopyMaskFormat = MaskFormat.IncludePrompt;
+			Assert.AreEqual (MaskFormat.IncludePrompt, mtb.CutCopyMaskFormat, "#C4");
+			mtb.CutCopyMaskFormat = MaskFormat.IncludePromptAndLiterals;
+			Assert.AreEqual (MaskFormat.IncludePromptAndLiterals, mtb.CutCopyMaskFormat, "#C5");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		[ExpectedException (typeof (InvalidEnumArgumentException))]
+		public void CutCopyMaskFormatExceptionTest ()
+		{
+
+			MaskedTextBox mtb;
+
+			mtb = new MaskedTextBox ();
+			mtb.CutCopyMaskFormat = (MaskFormat) 123;
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void CultureTest ()
+		{
+			MaskedTextBox mtb;
+			MaskedTextProvider mtp;
+			try {
+				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");
+				mtb = new MaskedTextBox ();
+				Assert.IsNotNull (mtb.Culture, "#A1");
+				Assert.AreEqual ("en-US", mtb.Culture.Name, "#A2");
+				mtb.Dispose ();
+
+				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("es-ES");
+				mtb = new MaskedTextBox ();
+				Assert.IsNotNull (mtb.Culture, "#B1");
+				Assert.AreEqual ("es-ES", mtb.Culture.Name, "#B2");
+				mtb.Dispose ();
+
+				mtp = new MaskedTextProvider ("abc");
+				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("es-AR");
+				mtb = new MaskedTextBox (mtp);
+				Assert.IsNotNull (mtb.Culture, "#C1");
+				Assert.AreEqual ("es-ES", mtb.Culture.Name, "#C2");
+				mtb.Dispose ();
+				
+				mtb = new MaskedTextBox ();
+				mtb.Culture = CultureInfo.GetCultureInfo ("de-DE");
+				Assert.AreEqual ("de-DE", mtb.Culture.Name, "#D1");
+				
+			} finally {
+				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US");
+			}
+		}
+		
+		[Test]
+		public void CanUndoTest ()
+		{
+			MaskedTextBox mtb = new MaskedTextBox ();
+			TextBoxBase tbb = mtb;
+			Assert.AreEqual (false, mtb.CanUndo, "#A1");
+			Assert.AreEqual (false, tbb.CanUndo, "#A2");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void BeepOnErrorTest ()
+		{
+			MaskedTextBox mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.BeepOnError, "#A1");
+			mtb.BeepOnError = true;
+			Assert.AreEqual (true, mtb.BeepOnError, "#A2");
+			mtb.BeepOnError = false;
+			Assert.AreEqual (false, mtb.BeepOnError, "#A3");
+			mtb.Dispose ();
+		}
+
+		[Test]
+		public void AsciiOnlyTest ()
+		{
+			MaskedTextBox mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.AsciiOnly, "#A1");
+			mtb.AsciiOnly = true;
+			Assert.AreEqual (true, mtb.AsciiOnly, "#A2");
+			mtb.AsciiOnly = false;
+			Assert.AreEqual (false, mtb.AsciiOnly, "#A3");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void AllowPromptAsInputTest ()
+		{
+			MaskedTextBox mtb = new MaskedTextBox ();
+			Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A1");
+			mtb.AllowPromptAsInput = true;
+			Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A2");
+			mtb.AllowPromptAsInput = false;
+			Assert.AreEqual (false, mtb.AllowPromptAsInput, "#A3");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void AcceptsTabTest ()
+		{
+			MaskedTextBox mtb = new MaskedTextBox ();
+			Assert.AreEqual (false, mtb.AcceptsTab, "#A1");
+			mtb.AcceptsTab = true;
+			Assert.AreEqual (false, mtb.AcceptsTab, "#A2");
+			mtb.AcceptsTab = false;
+			Assert.AreEqual (false, mtb.AcceptsTab, "#A3");
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void ConstructorTest ()
+		{
+			using (MaskedTextBox mtb = new MaskedTextBox ()) {
+				Assert.AreEqual (false, mtb.AcceptsTab, "#A_A1");
+				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#A_A2");
+				Assert.AreEqual (false, mtb.AsciiOnly, "#A_A3");
+				Assert.AreEqual (false, mtb.BeepOnError, "#A_B1");
+				Assert.AreEqual (false, mtb.CanUndo, "#A_C1");
+				Assert.IsNotNull (mtb.Culture, "#A_C3");
+				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#A_4");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#A_C5");
+				Assert.IsNull (mtb.FormatProvider, "#A_F1");
+				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#A_H1");
+				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#A_I1");
+				Assert.AreEqual (false, mtb.IsOverwriteMode, "#A_I2");
+				Assert.AreEqual (0, mtb.Lines.Length, "#A_L1");
+				Assert.AreEqual ("", mtb.Mask, "#A_M1");
+				Assert.AreEqual (true, mtb.MaskCompleted, "#A_M2");
+				Assert.IsNull (mtb.MaskedTextProvider, "#A_M3");
+				Assert.AreEqual (true, mtb.MaskFull, "#A_M4");
+				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#A_M5");
+				Assert.AreEqual (false, mtb.Multiline, "#A_M6");
+				Assert.AreEqual ('\0', mtb.PasswordChar, "#A_P1");
+				Assert.AreEqual ('_', mtb.PromptChar, "#A_P2");
+				Assert.AreEqual (false, mtb.ReadOnly, "#A_R1");
+				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#A_R2");
+				Assert.AreEqual (true, mtb.ResetOnPrompt, "#A_R3");
+				Assert.AreEqual (true, mtb.ResetOnSpace, "#A_R4");
+				Assert.AreEqual ("", mtb.SelectedText, "#A_S1");
+				Assert.AreEqual (true, mtb.SkipLiterals, "#A_S2");
+				Assert.AreEqual ("", mtb.Text, "#A_T1");
+				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#A_T2");
+				Assert.AreEqual (0, mtb.TextLength, "#A_T3");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#A_T4");
+				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#A_U1");
+				Assert.IsNull (mtb.ValidatingType, "#A_V1");
+				Assert.AreEqual (false, mtb.WordWrap, "#A_W1");
+			}
+
+			using (MaskedTextBox mtb = new MaskedTextBox ("abc")) {
+				Assert.AreEqual (false, mtb.AcceptsTab, "#B_A1");
+				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#B_A2");
+				Assert.AreEqual (false, mtb.AsciiOnly, "#B_A3");
+				Assert.AreEqual (false, mtb.BeepOnError, "#B_B1");
+				Assert.AreEqual (false, mtb.CanUndo, "#B_C1");
+				Assert.IsNotNull (mtb.Culture, "#B_C3");
+				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#B_4");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#B_C5");
+				Assert.IsNull (mtb.FormatProvider, "#B_F1");
+				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#B_H1");
+				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#B_I1");
+				Assert.AreEqual (false, mtb.IsOverwriteMode, "#B_I2");
+				Assert.AreEqual (1, mtb.Lines.Length, "#B_L1");
+				Assert.AreEqual ("abc", mtb.Mask, "#B_M1");
+				Assert.AreEqual (true, mtb.MaskCompleted, "#B_M2");
+				Assert.IsNotNull (mtb.MaskedTextProvider, "#B_M3");
+				Assert.AreEqual (false, mtb.MaskFull, "#B_M4");
+				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#B_M5");
+				Assert.AreEqual (false, mtb.Multiline, "#B_M6");
+				Assert.AreEqual ('\0', mtb.PasswordChar, "#B_P1");
+				Assert.AreEqual ('_', mtb.PromptChar, "#B_P2");
+				Assert.AreEqual (false, mtb.ReadOnly, "#B_R1");
+				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#B_R2");
+				Assert.AreEqual (true, mtb.ResetOnPrompt, "#B_R3");
+				Assert.AreEqual (true, mtb.ResetOnSpace, "#B_R4");
+				Assert.AreEqual ("", mtb.SelectedText, "#B_S1");
+				Assert.AreEqual (true, mtb.SkipLiterals, "#B_S2");
+				Assert.AreEqual (" bc", mtb.Text, "#B_T1");
+				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#B_T2");
+				Assert.AreEqual (3, mtb.TextLength, "#B_T3");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#B_T4");
+				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#B_U1");
+				Assert.IsNull (mtb.ValidatingType, "#B_V1");
+				Assert.AreEqual (false, mtb.WordWrap, "#B_W1");
+			}
+
+			using (MaskedTextBox mtb = new MaskedTextBox ("<>")) {
+				Assert.AreEqual (false, mtb.AcceptsTab, "#C_A1");
+				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#C_A2");
+				Assert.AreEqual (false, mtb.AsciiOnly, "#C_A3");
+				Assert.AreEqual (false, mtb.BeepOnError, "#C_B1");
+				Assert.AreEqual (false, mtb.CanUndo, "#C_C1");
+				Assert.IsNotNull (mtb.Culture, "#C_C3");
+				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#C_4");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#C_C5");
+				Assert.IsNull (mtb.FormatProvider, "#C_F1");
+				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#C_H1");
+				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#C_I1");
+				Assert.AreEqual (false, mtb.IsOverwriteMode, "#C_I2");
+				Assert.AreEqual (0, mtb.Lines.Length, "#C_L1");
+				Assert.AreEqual ("<>", mtb.Mask, "#C_M1");
+				Assert.AreEqual (true, mtb.MaskCompleted, "#C_M2");
+				Assert.IsNotNull (mtb.MaskedTextProvider, "#C_M3");
+				Assert.AreEqual (true, mtb.MaskFull, "#C_M4");
+				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#C_M5");
+				Assert.AreEqual (false, mtb.Multiline, "#C_M6");
+				Assert.AreEqual ('\0', mtb.PasswordChar, "#C_P1");
+				Assert.AreEqual ('_', mtb.PromptChar, "#C_P2");
+				Assert.AreEqual (false, mtb.ReadOnly, "#C_R1");
+				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#C_R2");
+				Assert.AreEqual (true, mtb.ResetOnPrompt, "#C_R3");
+				Assert.AreEqual (true, mtb.ResetOnSpace, "#C_R4");
+				Assert.AreEqual ("", mtb.SelectedText, "#C_S1");
+				Assert.AreEqual (true, mtb.SkipLiterals, "#C_S2");
+				Assert.AreEqual ("", mtb.Text, "#C_T1");
+				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#C_T2");
+				Assert.AreEqual (0, mtb.TextLength, "#C_T3");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#C_T4");
+				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#C_U1");
+				Assert.IsNull (mtb.ValidatingType, "#C_V1");
+				Assert.AreEqual (false, mtb.WordWrap, "#C_W1");
+			}
+
+			using (MaskedTextBox mtb = new MaskedTextBox ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][")) {
+				Assert.AreEqual (false, mtb.AcceptsTab, "#D_A1");
+				Assert.AreEqual (true, mtb.AllowPromptAsInput, "#D_A2");
+				Assert.AreEqual (false, mtb.AsciiOnly, "#D_A3");
+				Assert.AreEqual (false, mtb.BeepOnError, "#D_B1");
+				Assert.AreEqual (false, mtb.CanUndo, "#D_C1");
+				Assert.IsNotNull (mtb.Culture, "#D_C3");
+				Assert.AreEqual (Thread.CurrentThread.CurrentCulture.Name, mtb.Culture.Name, "#D_4");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#D_C5");
+				Assert.IsNull (mtb.FormatProvider, "#D_F1");
+				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#D_H1");
+				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#D_I1");
+				Assert.AreEqual (false, mtb.IsOverwriteMode, "#D_I2");
+				Assert.AreEqual (1, mtb.Lines.Length, "#D_L1");
+				Assert.AreEqual ("abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890ÑñæøåÆØÅ!\\ºª\"·$%&/()='?¡¿`^+*´¨Çç-_.:,;}{][", mtb.Mask, "#D_M1");
+				Assert.AreEqual (false, mtb.MaskCompleted, "#D_M2");
+				Assert.IsNotNull (mtb.MaskedTextProvider, "#D_M3");
+				Assert.AreEqual (false, mtb.MaskFull, "#D_M4");
+				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#D_M5");
+				Assert.AreEqual (false, mtb.Multiline, "#D_M6");
+				Assert.AreEqual ('\0', mtb.PasswordChar, "#D_P1");
+				Assert.AreEqual ('_', mtb.PromptChar, "#D_P2");
+				Assert.AreEqual (false, mtb.ReadOnly, "#D_R1");
+				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#D_R2");
+				Assert.AreEqual (true, mtb.ResetOnPrompt, "#D_R3");
+				Assert.AreEqual (true, mtb.ResetOnSpace, "#D_R4");
+				Assert.AreEqual ("", mtb.SelectedText, "#D_S1");
+				Assert.AreEqual (true, mtb.SkipLiterals, "#D_S2");
+				Assert.AreEqual (" bcdefghijklmopqrstuvwxyz B DEFGHIJK MOPQRSTUVWXYZ12345678  ÑñæøåÆØÅ!ºª\"·$% /()=' ¡¿`^+*´¨Çç-_.:,;}{][", mtb.Text, "#D_T1");
+				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#D_T2");
+				Assert.AreEqual (102, mtb.TextLength, "#D_T3");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#D_T4");
+				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#D_U1");
+				Assert.IsNull (mtb.ValidatingType, "#D_V1");
+				Assert.AreEqual (false, mtb.WordWrap, "#D_W1");
+			}
+
+			MaskedTextProvider mtp = new MaskedTextProvider ("abcd", CultureInfo.GetCultureInfo ("es-AR"), false, '>', '^', false);
+			using (MaskedTextBox mtb = new MaskedTextBox (mtp)) {
+				Assert.AreEqual (false, mtb.AcceptsTab, "#E_A1");
+				Assert.AreEqual (false, mtb.AllowPromptAsInput, "#E_A2");
+				Assert.AreEqual (false, mtb.AsciiOnly, "#E_A3");
+				Assert.AreEqual (false, mtb.BeepOnError, "#E_B1");
+				Assert.AreEqual (false, mtb.CanUndo, "#E_C1");
+				Assert.IsNotNull (mtb.Culture, "#E_C3");
+				Assert.AreEqual ("es-AR", mtb.Culture.Name, "#E_4");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.CutCopyMaskFormat, "#E_C5");
+				Assert.IsNull (mtb.FormatProvider, "#E_F1");
+				Assert.AreEqual (false, mtb.HidePromptOnLeave, "#E_H1");
+				Assert.AreEqual (InsertKeyMode.Default, mtb.InsertKeyMode, "#E_I1");
+				Assert.AreEqual (false, mtb.IsOverwriteMode, "#E_I2");
+				Assert.AreEqual (1, mtb.Lines.Length, "#E_L1");
+				Assert.AreEqual ("abcd", mtb.Mask, "#E_M1");
+				Assert.AreEqual (true, mtb.MaskCompleted, "#E_M2");
+				Assert.IsNotNull (mtb.MaskedTextProvider, "#E_M3");
+				Assert.IsFalse (mtb.MaskedTextProvider == mtp, "#E_M3-b");
+				Assert.AreEqual (false, mtb.MaskFull, "#E_M4");
+				Assert.AreEqual (Int16.MaxValue, mtb.MaxLength, "#E_M5");
+				Assert.AreEqual (false, mtb.Multiline, "#E_M6");
+				Assert.AreEqual ('^', mtb.PasswordChar, "#E_P1");
+				Assert.AreEqual ('>', mtb.PromptChar, "#E_P2");
+				Assert.AreEqual (false, mtb.ReadOnly, "#E_R1");
+				Assert.AreEqual (false, mtb.RejectInputOnFirstFailure, "#E_R2");
+				Assert.AreEqual (true, mtb.ResetOnPrompt, "#E_R3");
+				Assert.AreEqual (true, mtb.ResetOnSpace, "#E_R4");
+				Assert.AreEqual ("", mtb.SelectedText, "#E_S1");
+				Assert.AreEqual (true, mtb.SkipLiterals, "#E_S2");
+				Assert.AreEqual (" bcd", mtb.Text, "#E_T1");
+				Assert.AreEqual (HorizontalAlignment.Left, mtb.TextAlign, "#E_T2");
+				Assert.AreEqual (4, mtb.TextLength, "#E_T3");
+				Assert.AreEqual (MaskFormat.IncludeLiterals, mtb.TextMaskFormat, "#E_T4");
+				Assert.AreEqual (false, mtb.UseSystemPasswordChar, "#E_U1");
+				Assert.IsNull (mtb.ValidatingType, "#E_V1");
+				Assert.AreEqual (false, mtb.WordWrap, "#E_W1");
+			}
+			
+		}
+		
+		[Test]
+		public void UndoTest ()
+		{
+			MaskedTextBox mtb;
+			
+			mtb = new MaskedTextBox ();
+			mtb.Text = "abcdef";
+			Assert.AreEqual (false, mtb.CanUndo, "#A0-c");
+			mtb.Undo ();
+			Assert.AreEqual ("abcdef", mtb.Text, "#A1");
+			Assert.AreEqual (false, mtb.CanUndo, "#A1-c");
+			mtb.Text = "cdef";
+			mtb.ClearUndo ();
+			Assert.AreEqual ("cdef", mtb.Text, "#A2");
+			Assert.AreEqual (false, mtb.CanUndo, "#A2-c");
+			
+			mtb.Dispose ();
+		}
+		
+		[Test]
+		public void CreateHandleTest ()
+		{
+			using (MaskedTextBox mtb = new MaskedTextBox ()) {
+				Assert.AreEqual (false, mtb.IsHandleCreated, "#A1");
+				typeof (MaskedTextBox).GetMethod ("CreateHandle", global::System.Reflection.BindingFlags.Instance | global::System.Reflection.BindingFlags.NonPublic).Invoke (mtb, new object [] { });
+				Assert.AreEqual (true, mtb.IsHandleCreated, "#A2");
+			}
+		}
+		
+		[Test]
+		public void GetFirstCharIndexFromLineTest ()
+		{
+			using (MaskedTextBox mtb = new MaskedTextBox ()) {
+				for (int i = -100; i < 100; i++) { 
+					Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#A" + i.ToString ());
+				}
+				mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";
+				for (int i = -100; i < 100; i++) {
+					Assert.AreEqual (0, mtb.GetFirstCharIndexFromLine (i), "#B" + i.ToString ());
+				}
+			}
+		}
+
+
+		[Test]
+		public void GetFirstCharIndexOfCurrentLineTest ()
+		{
+			using (MaskedTextBox mtb = new MaskedTextBox ()) {
+				Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#A1");
+				mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";
+				Assert.AreEqual (0, mtb.GetFirstCharIndexOfCurrentLine (), "#B1");
+			}
+		}
+
+		[Test]
+		public void GetLineFromCharIndexTest ()
+		{
+			using (MaskedTextBox mtb = new MaskedTextBox ()) {
+				for (int i = -100; i < 100; i++) {
+					Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#A" + i.ToString ());
+				}
+				mtb.Text = "alñsdh gaph" + Environment.NewLine + "asldg";
+				for (int i = -100; i < 100; i++) {
+					Assert.AreEqual (0, mtb.GetLineFromCharIndex (i), "#B" + i.ToString ());
+				}
+			}
+		}
+		
+		[Test]
+		public void IsInputKeyTest ()
+		{
+			using (Form f = new Form ()) {
+			using (MaskedTextBox mtb = new MaskedTextBox ()) {
+				f.Controls.Add (mtb);
+				f.Show ();
+				MethodInfo IsInputKey = typeof (MaskedTextBox).GetMethod ("IsInputKey", global::System.Reflection.BindingFlags.NonPublic | global::System.Reflection.BindingFlags.Instance);
+				
+				for (int i = 0; i <= 0xFF; i++) {
+					Keys key = (Keys) i;
+					Keys key_ALT = key | Keys.Alt;
+					Keys key_SHIFT = key | Keys.Shift;
+					Keys key_CTRL = key | Keys.Control;
+					Keys key_ALT_SHIFT = key | Keys.Alt | Keys.Shift;
+					Keys key_ALT_CTRL = key | Keys.Alt | Keys.Control;
+					Keys key_SHIFT_CTLR = key | Keys.Shift | Keys.Control;
+					Keys key_ALT_SHIFT_CTLR = key | Keys.Alt | Keys.Shift | Keys.Control;
+
+					bool is_input = false;
+					
+					switch (key) {
+					case Keys.PageDown:
+					case Keys.PageUp:
+					case Keys.End:
+					case Keys.Home:
+					case Keys.Left:
+					case Keys.Right:
+					case Keys.Up:
+					case Keys.Down:
+						is_input = true;
+						break;
+					}
+
+					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key }));
+					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT }));
+					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT }));
+					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_CTRL }));
+					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT }));
+					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_CTRL }));
+					Assert.AreEqual (is_input, (bool)IsInputKey.Invoke (mtb, new object [] { key_SHIFT_CTLR }));
+					Assert.AreEqual (false, (bool)IsInputKey.Invoke (mtb, new object [] { key_ALT_SHIFT_CTLR }));
+				}
+			}
+			}
+		}
+		
+		[Test]
+		public void ValidateTextTest ()
+		{
+			Assert.Ignore ("Pending implementation");
+		}
+		
+		[Test]
+		public void ToStringTest ()
+		{
+			Assert.Ignore ("Pending implementation");
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/MdiFormHandleTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/MdiFormHandleTest.cs
@@ -1,1496 +1,1496 @@
-//
-// FormTest.cs: Test cases for Form.
-//
-// Author:
-//   Ritvik Mayank (mritvik@novell.com)
-//
-// (C) 2005 Novell, Inc. (http://www.novell.com)
-//
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Reflection;
-using System.Windows.Forms;
-
-using NUnit.Framework;
-
-using CategoryAttribute = NUnit.Framework.CategoryAttribute;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class MdiFormHandleTest : TestHelper
-	{
-		private ProtectedForm main;
-		private ProtectedForm child1;
-		private ProtectedForm child2;
-		
-		[TearDown]
-		protected override void TearDown ()
-		{
-			if (main != null) {
-				main.Dispose ();
-				main = null;
-			}
-			
-			if (child1 != null) {
-				child1.Dispose ();
-				child1 = null;
-			}
-			
-			if (child2 != null) {
-				child2.Dispose ();
-				child2 = null;
-			}
-			base.TearDown ();
-		}
-		
-		void SetUp ()
-		{
-			TearDown ();
-			main = new ProtectedForm ();
-			main.IsMdiContainer = true;
-			main.ShowInTaskbar = false;
-
-			child1 = new ProtectedForm ();
-			child1.MdiParent = main;
-
-			child2 = new ProtectedForm ();
-			child2.MdiParent = main;
-			
-			main.Show ();
-		}
-		
-		[Test]
-		public void TestPublicProperties ()
-		{
-			// This long, carpal-tunnel syndrome inducing test shows us that
-			// the following properties cause the Handle to be created:
-			// - AccessibilityObject	[get]
-			// - Capture			[set]
-			// - Handle			[get]
-			// - Visible			[set]
-
-			// A
-			SetUp ();
-			object o = child1.AccessibilityObject;
-			Assert.IsTrue (child1.IsHandleCreated, "A0");
-			
-			SetUp ();
-			o = child1.AccessibleDefaultActionDescription;
-			child1.AccessibleDefaultActionDescription = "playdoh";
-			Assert.IsFalse (child1.IsHandleCreated, "A1");
-			
-			SetUp ();
-			o = child1.AccessibleDescription;
-			child1.AccessibleDescription = "more playdoh!";
-			Assert.IsFalse (child1.IsHandleCreated, "A2");
-
-			SetUp ();
-			o = child1.AccessibleName;
-			child1.AccessibleName = "playdoh fun factory";
-			Assert.IsFalse (child1.IsHandleCreated, "A3");
-
-			SetUp ();
-			o = child1.AccessibleRole;
-			child1.AccessibleRole = AccessibleRole.Border;
-			Assert.IsFalse (child1.IsHandleCreated, "A4");
-
-			SetUp ();
-			o = child1.AllowDrop;
-			child1.AllowDrop = true;
-			Assert.IsFalse (child1.IsHandleCreated, "A5");
-			
-			// If we don't reset the control, handle creation will fail
-			// because AllowDrop requires STAThread, which Nunit doesn't do
-
-			SetUp ();
-			o = child1.Anchor;
-			child1.Anchor = AnchorStyles.Right;
-			Assert.IsFalse (child1.IsHandleCreated, "A6");
-#if !__MonoCS__
-			SetUp ();
-			o = child1.AutoScrollOffset;
-			child1.AutoScrollOffset = new Point (40, 40);
-			Assert.IsFalse (child1.IsHandleCreated, "A7");
-#endif
-			SetUp ();
-			o = child1.AutoSize;
-			child1.AutoSize = true;
-			Assert.IsFalse (child1.IsHandleCreated, "A8");
-
-			// A - Form	
-			SetUp ();
-			o = child1.AcceptButton;
-			child1.AcceptButton = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FA1");
-
-			SetUp ();
-			o = child1.ActiveControl;
-			child1.ActiveControl = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FA2");
-
-			SetUp ();
-			o = child1.ActiveMdiChild;
-			Assert.IsFalse (child1.IsHandleCreated, "FA3");
-
-			SetUp ();
-			o = child1.AllowTransparency;
-			child1.AllowTransparency = !child1.AllowTransparency;
-			Assert.IsFalse (child1.IsHandleCreated, "FA4");
-
-			SetUp ();
-			o = child1.AutoScaleDimensions;
-			child1.AutoScaleDimensions = SizeF.Empty;
-			Assert.IsFalse (child1.IsHandleCreated, "FA5");
-
-			SetUp ();
-			o = child1.AutoScaleMode;
-			child1.AutoScaleMode = AutoScaleMode.Dpi;
-			Assert.IsFalse (child1.IsHandleCreated, "FA6");
-			SetUp ();
-			o = child1.AutoScroll;
-			child1.AutoScroll = !child1.AutoScroll;
-			Assert.IsFalse (child1.IsHandleCreated, "FA7");
-
-			SetUp ();
-			o = child1.AutoScrollMargin;
-			child1.AutoScrollMargin = new Size (child1.AutoScrollMargin.Width + 1, child1.AutoScrollMargin.Height + 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FA8");
-
-			SetUp ();
-			o = child1.AutoScrollMinSize;
-			child1.AutoScrollMinSize = new Size (child1.AutoScrollMinSize.Width + 1, child1.AutoScrollMinSize.Height + 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FA9");
-
-#if !__MonoCS__
-			SetUp ();
-			o = child1.AutoScrollOffset;
-			child1.AutoScrollOffset = new Point (child1.AutoScrollOffset.X + 1, child1.AutoScrollOffset.Y + 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FA10"); 
-#endif
-
-			SetUp ();
-			o = child1.AutoScrollPosition;
-			child1.AutoScrollPosition = new Point (child1.AutoScrollPosition.X + 1, child1.AutoScrollPosition.Y + 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FA11");
-
-			SetUp ();
-			o = child1.AutoSize;
-			child1.AutoSize = !child1.AutoSize;
-			Assert.IsFalse (child1.IsHandleCreated, "FA12");
-#if !__MonoCS__
-			SetUp ();
-			o = child1.AutoSizeMode;
-			child1.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			Assert.IsFalse (child1.IsHandleCreated, "FA13");
-#endif
-			SetUp ();
-			o = child1.AutoValidate;
-			child1.AutoValidate = AutoValidate.EnableAllowFocusChange;
-			Assert.IsFalse (child1.IsHandleCreated, "FA14");
-
-			// B
-			SetUp ();
-			o = child1.BackColor;
-			child1.BackColor = Color.Green;
-			Assert.IsFalse (child1.IsHandleCreated, "A9");
-
-			SetUp ();
-			o = child1.BackgroundImage;
-			child1.BackgroundImage = new Bitmap (1, 1);
-			Assert.IsFalse (child1.IsHandleCreated, "A10");
-			SetUp ();
-			o = child1.BackgroundImageLayout;
-			child1.BackgroundImageLayout = ImageLayout.Stretch;
-			Assert.IsFalse (child1.IsHandleCreated, "A11");
-			SetUp ();
-			o = child1.BindingContext;
-			child1.BindingContext = new BindingContext ();
-			Assert.IsFalse (child1.IsHandleCreated, "A12");
-
-			SetUp ();
-			o = child1.Bottom;
-			Assert.IsFalse (child1.IsHandleCreated, "A13");
-
-			SetUp ();
-			o = child1.Bounds;
-			child1.Bounds = new Rectangle (0, 0, 12, 12);
-			Assert.IsFalse (child1.IsHandleCreated, "A14");
-
-
-			// B - Form
-			SetUp ();
-			o = child1.BindingContext;
-			child1.BindingContext = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FB1");
-
-			// C
-			SetUp ();
-			o = child1.CanFocus;
-			Assert.IsFalse (child1.IsHandleCreated, "A15");
-
-			SetUp ();
-			o = child1.CanSelect;
-			Assert.IsFalse (child1.IsHandleCreated, "A16");
-
-			SetUp ();
-			o = child1.Capture;
-			Assert.IsFalse (child1.IsHandleCreated, "A17a");
-
-			SetUp ();
-			child1.Capture = true;
-			Assert.IsTrue (child1.IsHandleCreated, "A17b");
-
-			SetUp ();
-			o = child1.CausesValidation;
-			child1.CausesValidation = false;
-			Assert.IsFalse (child1.IsHandleCreated, "A18");
-
-			SetUp ();
-			o = child1.ClientRectangle;
-			Assert.IsFalse (child1.IsHandleCreated, "A19");
-
-			SetUp ();
-			o = child1.ClientSize;
-			child1.ClientSize = new Size (30, 30);
-			Assert.IsFalse (child1.IsHandleCreated, "A20");
-
-			SetUp ();
-			o = child1.CompanyName;
-			Assert.IsFalse (child1.IsHandleCreated, "A21");
-
-			SetUp ();
-			o = child1.Container;
-			Assert.IsFalse (child1.IsHandleCreated, "A22");
-
-			SetUp ();
-			o = child1.ContainsFocus;
-			Assert.IsFalse (child1.IsHandleCreated, "A23");
-
-			SetUp ();
-			o = child1.ContextMenu;
-			child1.ContextMenu = new ContextMenu ();
-			Assert.IsFalse (child1.IsHandleCreated, "A24");
-
-			SetUp ();
-			o = child1.ContextMenuStrip;
-			child1.ContextMenuStrip = new ContextMenuStrip ();
-			Assert.IsFalse (child1.IsHandleCreated, "A25");
-			SetUp ();
-			o = child1.Controls;
-			Assert.IsFalse (child1.IsHandleCreated, "A26");
-
-			SetUp ();
-			o = child1.Created;
-			Assert.IsFalse (child1.IsHandleCreated, "A27");
-
-			SetUp ();
-			o = child1.Cursor;
-			child1.Cursor = Cursors.Arrow;
-			Assert.IsFalse (child1.IsHandleCreated, "A28");
-
-			// C - Form
-			SetUp ();
-			o = child1.CancelButton;
-			child1.CancelButton = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FC1");
-
-			SetUp ();
-			o = child1.ClientSize;
-			child1.ClientSize = new Size (child1.ClientSize.Width + 1, child1.ClientSize.Height + 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FC2");
-
-			SetUp ();
-			o = child1.Container;
-			Assert.IsFalse (child1.IsHandleCreated, "FC3");
-
-			SetUp ();
-			o = child1.ControlBox;
-			child1.ControlBox = !child1.ControlBox;
-			Assert.IsFalse (child1.IsHandleCreated, "FC4");
-
-			SetUp ();
-			o = child1.CurrentAutoScaleDimensions;
-			Assert.IsFalse (child1.IsHandleCreated, "FC5"); 
-
-			// D
-			SetUp ();
-			o = child1.DataBindings;
-			Assert.IsFalse (child1.IsHandleCreated, "A29");
-
-			SetUp ();
-			o = child1.DisplayRectangle;
-			Assert.IsFalse (child1.IsHandleCreated, "A30");
-
-			SetUp ();
-			o = child1.Disposing;
-			Assert.IsFalse (child1.IsHandleCreated, "A31");
-
-			SetUp ();
-			o = child1.Dock;
-			child1.Dock = DockStyle.Fill;
-			Assert.IsFalse (child1.IsHandleCreated, "A32");
-
-			// D - Form
-			SetUp ();
-			o = child1.DataBindings;
-			Assert.IsFalse (child1.IsHandleCreated, "FD6");
-
-			SetUp ();
-			o = child1.DesktopBounds;
-			child1.DesktopBounds = new Rectangle (3, 5, child1.DesktopBounds.Width + 1, child1.DesktopBounds.Height + 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FD7");
-
-			SetUp ();
-			o = child1.DesktopLocation;
-			child1.DesktopLocation = child1.DesktopLocation + new Size (1, 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FD8");
-
-			SetUp ();
-			o = child1.DialogResult;
-			child1.DialogResult = DialogResult.Abort;
-			Assert.IsFalse (child1.IsHandleCreated, "FD9");
-
-			SetUp ();
-			o = child1.DisplayRectangle;
-			Assert.IsFalse (child1.IsHandleCreated, "FD10");
-
-			SetUp ();
-			o = child1.Disposing;
-			Assert.IsFalse (child1.IsHandleCreated, "FD11");
-
-			SetUp ();
-			o = child1.Dock;
-			child1.Dock = DockStyle.Right;
-			Assert.IsFalse (child1.IsHandleCreated, "FD12");
-
-			// E-H
-			SetUp ();
-			o = child1.Enabled;
-			child1.Enabled = false;
-			Assert.IsFalse (child1.IsHandleCreated, "A33");
-
-			SetUp ();
-			o = child1.Focused;
-			Assert.IsFalse (child1.IsHandleCreated, "A34");
-
-			SetUp ();
-			o = child1.Font;
-			child1.Font = new Font (child1.Font, FontStyle.Bold);
-			Assert.IsFalse (child1.IsHandleCreated, "A35");
-
-			SetUp ();
-			o = child1.ForeColor;
-			child1.ForeColor = Color.Green;
-			Assert.IsFalse (child1.IsHandleCreated, "A36");
-
-			SetUp ();
-			o = child1.Handle;
-			Assert.IsTrue (child1.IsHandleCreated, "A37");
-
-			SetUp ();
-			o = child1.HasChildren;
-			Assert.IsFalse (child1.IsHandleCreated, "A38");
-
-			SetUp ();
-			o = child1.Height;
-			child1.Height = 12;
-			Assert.IsFalse (child1.IsHandleCreated, "A39");
-
-			// E-H - Form
-			SetUp ();
-			o = child1.FormBorderStyle;
-			child1.FormBorderStyle = FormBorderStyle.FixedToolWindow;
-			Assert.IsFalse (child1.IsHandleCreated, "FF1");
-
-			SetUp ();
-			o = child1.HelpButton;
-			child1.HelpButton = !child1.HelpButton;
-			Assert.IsFalse (child1.IsHandleCreated, "FH1");
-
-#if !__MonoCS__
-			SetUp ();
-			o = child1.HorizontalScroll;
-			Assert.IsFalse (child1.IsHandleCreated, "FH2"); 
-#endif
-			// I - L
-			SetUp ();
-			child1.ImeMode = ImeMode.On;
-			Assert.IsFalse (child1.IsHandleCreated, "A40");
-
-			SetUp ();
-			o = child1.InvokeRequired;
-			Assert.IsFalse (child1.IsHandleCreated, "A41");
-
-			SetUp ();
-			o = child1.IsAccessible;
-			Assert.IsFalse (child1.IsHandleCreated, "A42");
-
-			SetUp ();
-			o = child1.IsDisposed;
-			Assert.IsFalse (child1.IsHandleCreated, "A43");
-#if !__MonoCS__
-			SetUp ();
-			o = child1.IsMirrored;
-			Assert.IsFalse (child1.IsHandleCreated, "A44");
-#endif
-			SetUp ();
-			o = child1.LayoutEngine;
-			Assert.IsFalse (child1.IsHandleCreated, "A45");
-			SetUp ();
-			o = child1.Left;
-			child1.Left = 15;
-			Assert.IsFalse (child1.IsHandleCreated, "A46");
-
-			SetUp ();
-			o = child1.Location;
-			child1.Location = new Point (20, 20);
-			Assert.IsFalse (child1.IsHandleCreated, "A47");
-
-			// I - L - Form
-
-			SetUp ();
-			o = child1.Icon;
-			child1.Icon = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FI1");
-
-			SetUp ();
-			o = child1.IsMdiChild;
-			Assert.IsFalse (child1.IsHandleCreated, "FI2");
-
-			SetUp ();
-			o = child1.IsMdiContainer;
-			child1.IsMdiContainer = false;
-			Assert.IsFalse (child1.IsHandleCreated, "FI3");
-
-			SetUp ();
-			o = child1.IsRestrictedWindow;
-			Assert.IsFalse (child1.IsHandleCreated, "FI4");
-
-			SetUp ();
-			o = child1.KeyPreview;
-			child1.KeyPreview = !child1.KeyPreview;
-			Assert.IsFalse (child1.IsHandleCreated, "FK1");
-
-			SetUp ();
-			o = child1.Location;
-			child1.Location = child1.Location + new Size (1, 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FL1");
-			
-			
-			// M - N
-			SetUp ();
-			o = child1.Margin;
-			child1.Margin = new Padding (6);
-			Assert.IsFalse (child1.IsHandleCreated, "A48");
-
-			SetUp ();
-			o = child1.MaximumSize;
-			child1.MaximumSize = new Size (500, 500);
-			Assert.IsFalse (child1.IsHandleCreated, "A49");
-
-			SetUp ();
-			o = child1.MinimumSize;
-			child1.MinimumSize = new Size (100, 100);
-			Assert.IsFalse (child1.IsHandleCreated, "A50");
-			SetUp ();
-			o = child1.Name;
-			child1.Name = "web";
-			Assert.IsFalse (child1.IsHandleCreated, "A51");
-
-			// M - O - Form
-			SetUp ();
-			o = child1.MainMenuStrip;
-			child1.MainMenuStrip = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FM1"); 
-
-			SetUp ();
-			o = child1.MaximizeBox;
-			child1.MaximizeBox = !child1.MaximizeBox;
-			Assert.IsFalse (child1.IsHandleCreated, "FM2");
-
-			SetUp ();
-			o = child1.MaximumSize;
-			child1.MaximumSize = child1.MaximumSize + new Size (1, 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FM3");
-
-			SetUp ();
-			o = child1.MdiChildren;
-			Assert.IsFalse (child1.IsHandleCreated, "FM4");
-
-			SetUp ();
-			o = child1.MdiParent;
-			child1.MdiParent = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FM5");
-
-			SetUp ();
-			o = child1.Menu;
-			child1.Menu = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FM6");
-
-			SetUp ();
-			o = child1.MergedMenu;
-			Assert.IsFalse (child1.IsHandleCreated, "FM7");
-
-			SetUp ();
-			o = child1.MinimizeBox;
-			child1.MinimizeBox = !child1.MinimizeBox;
-			Assert.IsFalse (child1.IsHandleCreated, "FM8");
-
-			SetUp ();
-			o = child1.MinimumSize;
-			child1.MinimumSize = child1.MinimumSize + new Size (1, 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FM9");
-
-			SetUp ();
-			o = child1.Modal;
-			Assert.IsFalse (child1.IsHandleCreated, "FM10");
-
-			SetUp ();
-			o = child1.Opacity;
-			child1.Opacity = 0.9;
-			Assert.IsFalse (child1.IsHandleCreated, "FO1");
-
-			SetUp ();
-			o = child1.OwnedForms;
-			Assert.IsFalse (child1.IsHandleCreated, "FO2");
-
-			SetUp ();
-			o = child1.Owner;
-			child1.Owner = null;
-			Assert.IsFalse (child1.IsHandleCreated, "FO3");
-			
-			// P - R
-			SetUp ();
-			o = child1.Padding;
-			child1.Padding = new Padding (4);
-			Assert.IsFalse (child1.IsHandleCreated, "A52");
-			try {
-				SetUp ();
-				o = child1.Parent;
-				child1.TopLevel = false;
-				child1.Parent = new Form ();
-				Assert.Fail ("A53 - Expected ArgumentException, got no exception");
-			} catch (ArgumentException ex) {
-				TestHelper.RemoveWarning (ex);
-			} catch (Exception ex) {
-				Assert.Fail ("A53 - Expected ArgumentException, got " + ex.GetType ().Name);
-			} finally {
-				Assert.IsFalse (child1.IsHandleCreated, "A53");
-			}
-			SetUp ();
-			o = child1.PreferredSize;
-			Assert.IsFalse (child1.IsHandleCreated, "A54");
-			SetUp ();
-			o = child1.ProductName;
-			Assert.IsFalse (child1.IsHandleCreated, "A55");
-
-			SetUp ();
-			o = child1.ProductVersion;
-			Assert.IsFalse (child1.IsHandleCreated, "A56");
-
-			SetUp ();
-			o = child1.RecreatingHandle;
-			Assert.IsFalse (child1.IsHandleCreated, "A57");
-
-			SetUp ();
-			o = child1.Region;
-			child1.Region = new Region (new Rectangle (0, 0, 177, 177));
-			Assert.IsFalse (child1.IsHandleCreated, "A58");
-
-			SetUp ();
-			o = child1.Right;
-			Assert.IsFalse (child1.IsHandleCreated, "A59");
-
-			SetUp ();
-			o = child1.RightToLeft;
-			child1.RightToLeft = RightToLeft.Yes;
-			Assert.IsFalse (child1.IsHandleCreated, "A60");
-
-			// P - R - Form
-			SetUp ();
-			o = child1.ParentForm;
-			Assert.IsFalse (child1.IsHandleCreated, "FP1");
-
-#if !__MonoCS__
-			SetUp ();
-			o = child1.RestoreBounds;
-			Assert.IsFalse (child1.IsHandleCreated, "FR1"); 
-#endif
-
-
-			// S - W
-			SetUp ();
-			o = child1.Site;
-			Assert.IsFalse (child1.IsHandleCreated, "A61");
-
-			SetUp ();
-			o = child1.Size;
-			child1.Size = new Size (188, 188);
-			Assert.IsFalse (child1.IsHandleCreated, "A62");
-
-			SetUp ();
-			o = child1.TabIndex;
-			child1.TabIndex = 5;
-			Assert.IsFalse (child1.IsHandleCreated, "A63");
-
-			SetUp ();
-			o = child1.Tag;
-			child1.Tag = "moooooooo";
-			Assert.IsFalse (child1.IsHandleCreated, "A64");
-
-			SetUp ();
-			o = child1.Text;
-			child1.Text = "meoooowww";
-			Assert.IsFalse (child1.IsHandleCreated, "A65");
-
-			SetUp ();
-			o = child1.Top;
-			child1.Top = 16;
-			Assert.IsFalse (child1.IsHandleCreated, "A66");
-
-			SetUp ();
-			o = child1.TopLevelControl;
-			Assert.IsFalse (child1.IsHandleCreated, "A67");
-#if !__MonoCS__
-			SetUp ();
-			o = child1.UseWaitCursor;
-			child1.UseWaitCursor = true;
-			Assert.IsFalse (child1.IsHandleCreated, "A68");
-#endif
-			SetUp ();
-			o = child1.Visible;
-			Assert.IsFalse (child1.IsHandleCreated, "A69-a");
-			
-			SetUp ();
-			child1.Visible = true;
-			Assert.IsTrue (child1.IsHandleCreated, "A69-b");
-			
-			SetUp ();
-			o = child1.Width;
-			child1.Width = 190;
-			Assert.IsFalse (child1.IsHandleCreated, "A70");
-
-			SetUp ();
-			o = child1.WindowTarget;
-			Assert.IsFalse (child1.IsHandleCreated, "A71");
-
-			// S - W - Form
-
-			SetUp ();
-			o = child1.ShowIcon;
-			child1.ShowIcon = !child1.ShowIcon;
-			Assert.IsFalse (child1.IsHandleCreated, "FS1"); 
-
-			SetUp ();
-			o = child1.ShowInTaskbar;
-			child1.ShowInTaskbar = !child1.ShowInTaskbar;
-			Assert.IsFalse (child1.IsHandleCreated, "FS2");
-
-			SetUp ();
-			o = child1.Size;
-			child1.Size = child1.Size + new Size (1, 1);
-			Assert.IsFalse (child1.IsHandleCreated, "FS3");
-
-			SetUp ();
-			o = child1.SizeGripStyle;
-			child1.SizeGripStyle = SizeGripStyle.Show;
-			Assert.IsFalse (child1.IsHandleCreated, "FS4");
-
-			SetUp ();
-			o = child1.StartPosition;
-			child1.StartPosition = FormStartPosition.Manual;
-			Assert.IsFalse (child1.IsHandleCreated, "FS5");
-
-			SetUp ();
-			o = child1.Text;
-			child1.Text = "hooray!";
-			Assert.IsFalse (child1.IsHandleCreated, "FT1");
-
-			try {
-				SetUp ();
-				o = child1.TopLevel;
-				child1.TopLevel = !child1.TopLevel;
-				Assert.Fail ("FT2 - expected ArgumentException, got no exception.");
-			} catch (ArgumentException ex) {
-				TestHelper.RemoveWarning (ex);
-			} catch (Exception ex) {
-				Assert.Fail ("FT2 - expected ArgumentException, got " + ex.GetType ().Name);
-			} finally {
-				Assert.IsFalse (child1.IsHandleCreated, "FT2");
-			}
-
-			SetUp ();
-			o = child1.TopMost;
-			child1.TopMost = !child1.TopMost;
-			Assert.IsFalse (child1.IsHandleCreated, "FT3");
-
-			SetUp ();
-			o = child1.TransparencyKey;
-			child1.TransparencyKey = Color.BurlyWood;
-			Assert.IsFalse (child1.IsHandleCreated, "FT4");
-
-#if !__MonoCS__
-			SetUp ();
-			o = child1.VerticalScroll;
-			Assert.IsFalse (child1.IsHandleCreated, "FV1"); 
-#endif
-
-			SetUp ();
-			o = child1.WindowState;
-			child1.WindowState = FormWindowState.Maximized;
-			Assert.IsFalse (child1.IsHandleCreated, "FW1");
-
-			TestHelper.RemoveWarning (o);
-		}
-
-		[Test]
-		public void TestProtectedProperties ()
-		{
-			// Not a surprise, but none of these cause handle creation.
-			// Included just to absolutely certain.
-			object o;
-#if !__MonoCS__
-			SetUp ();
-			o = child1.PublicCanRaiseEvents;
-			Assert.IsFalse (child1.IsHandleCreated, "A1");
-#endif
-			SetUp ();
-			o = child1.PublicCreateParams;
-			Assert.IsFalse (child1.IsHandleCreated, "A2");
-			SetUp ();
-			o = child1.PublicDefaultCursor;
-			Assert.IsFalse (child1.IsHandleCreated, "A3");
-			SetUp ();
-			o = child1.PublicDefaultImeMode;
-			Assert.IsFalse (child1.IsHandleCreated, "A4");
-			SetUp ();
-			o = child1.PublicDefaultMargin;
-			Assert.IsFalse (child1.IsHandleCreated, "A5");
-			
-			SetUp ();
-			o = child1.PublicDefaultMaximumSize;
-			Assert.IsFalse (child1.IsHandleCreated, "A6");
-
-			SetUp ();
-			o = child1.PublicDefaultMinimumSize;
-			Assert.IsFalse (child1.IsHandleCreated, "A7");
-
-			SetUp ();
-			o = child1.PublicDefaultPadding;
-			Assert.IsFalse (child1.IsHandleCreated, "A8");
-
-			SetUp ();
-			o = child1.PublicDefaultSize;
-			Assert.IsFalse (child1.IsHandleCreated, "A9");
-
-			SetUp ();
-			o = child1.PublicDoubleBuffered;
-			child1.PublicDoubleBuffered = !child1.PublicDoubleBuffered;
-			Assert.IsFalse (child1.IsHandleCreated, "A10");
-			SetUp ();
-			o = child1.PublicFontHeight;
-			child1.PublicFontHeight = child1.PublicFontHeight + 1;
-			Assert.IsFalse (child1.IsHandleCreated, "A11");
-
-			SetUp ();
-			o = child1.PublicRenderRightToLeft;
-			Assert.IsFalse (child1.IsHandleCreated, "A12");
-
-			SetUp ();
-			o = child1.PublicResizeRedraw;
-			child1.PublicResizeRedraw = !child1.PublicResizeRedraw;
-			Assert.IsFalse (child1.IsHandleCreated, "A13");
-#if !__MonoCS__
-			SetUp ();
-			o = child1.PublicScaleChildren;
-			Assert.IsFalse (child1.IsHandleCreated, "A14");
-#endif
-			SetUp ();
-			o = child1.PublicShowFocusCues;
-			Assert.IsFalse (child1.IsHandleCreated, "A15");
-
-			SetUp ();
-			o = child1.PublicShowKeyboardCues;
-			Assert.IsFalse (child1.IsHandleCreated, "A16");
-
-			SetUp ();
-			o = child1.PublicAutoScaleFactor;
-			Assert.IsFalse (child1.IsHandleCreated, "F1"); 
-			SetUp ();
-			o = child1.PublicDesignMode;
-			Assert.IsFalse (child1.IsHandleCreated, "F2");
-
-			SetUp ();
-			o = child1.PublicEvents;
-			Assert.IsFalse (child1.IsHandleCreated, "F3");
-
-			SetUp ();
-			o = child1.PublicHScroll;
-			child1.PublicHScroll = !child1.PublicHScroll;
-			Assert.IsFalse (child1.IsHandleCreated, "F4");
-
-			SetUp ();
-			o = child1.PublicMaximizedBounds;
-			child1.PublicMaximizedBounds = new Rectangle (1, 1, 1, 1);
-			Assert.IsFalse (child1.IsHandleCreated, "F5");
-
-			SetUp ();
-			o = child1.PublicShowWithoutActivation;
-			Assert.IsFalse (child1.IsHandleCreated, "F6"); 
-			SetUp ();
-			o = child1.PublicVScroll;
-			child1.PublicVScroll = !child1.PublicVScroll;
-			Assert.IsFalse (child1.IsHandleCreated, "F7");
-			
-
-			TestHelper.RemoveWarning (o);
-		}
-
-		[Test]
-		public void TestPublicMethods ()
-		{
-			// Public Methods that force Handle creation:
-			// - CreateGraphics ()
-			// - Focus ()
-			// - GetChildAtPoint ()
-			// - PointToClient ()
-			// - PointToScreen ()
-			// - RectangleToClient ()
-			// - RectangleToScreen ()
-			// - Select ()
-			
-			SetUp ();
-			child1.BringToFront ();
-			Assert.IsFalse (child1.IsHandleCreated, "A1");
-
-			SetUp ();
-			child1.Contains (new Form ());
-			Assert.IsFalse (child1.IsHandleCreated, "A2");
-
-			SetUp ();
-			child1.CreateControl ();
-			Assert.IsFalse (child1.IsHandleCreated, "A3");
-
-			SetUp ();
-			Graphics g = child1.CreateGraphics ();
-			Assert.IsTrue (child1.IsHandleCreated, "A4");
-			g.Dispose ();
-
-			SetUp ();
-			child1.Dispose ();
-			Assert.IsFalse (child1.IsHandleCreated, "A5");
-
-			// This is weird, it causes a form to appear that won't go away until you move the mouse over it, 
-			// but it doesn't create a handle??
-			//DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
-			//Assert.IsFalse (c.IsHandleCreated, "A6");
-			//Assert.AreEqual (DragDropEffects.None, d, "A6b");
-			
-			//Bitmap b = new Bitmap (100, 100);
-			//c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));
-			//Assert.IsFalse (c.IsHandleCreated, "A7");
-			//b.Dispose ();
-			SetUp ();
-			child1.FindForm ();
-			Assert.IsFalse (child1.IsHandleCreated, "A8");
-
-			SetUp ();
-			child1.Focus ();
-			Assert.IsTrue (child1.IsHandleCreated, "A9");
-
-			SetUp ();
-			child1.GetChildAtPoint (new Point (10, 10));
-			Assert.IsTrue (child1.IsHandleCreated, "A10");
-
-			SetUp ();
-			child1.GetContainerControl ();
-			Assert.IsFalse (child1.IsHandleCreated, "A11");
-			
-			SetUp ();
-			child1.GetNextControl (new Control (), true);
-			Assert.IsFalse (child1.IsHandleCreated, "A12");
-			SetUp ();
-			child1.GetPreferredSize (Size.Empty);
-			Assert.IsFalse (child1.IsHandleCreated, "A13");
-			SetUp ();
-			child1.Hide ();
-			Assert.IsFalse (child1.IsHandleCreated, "A14");
-
-			SetUp ();
-			child1.Invalidate ();
-			Assert.IsFalse (child1.IsHandleCreated, "A15");
-
-			child1.Invoke (new InvokeDelegate (InvokeMethod));
-			Assert.IsFalse (child1.IsHandleCreated, "A16");
-			
-			SetUp ();
-			child1.PerformLayout ();
-			Assert.IsFalse (child1.IsHandleCreated, "A17");
-
-			SetUp ();
-			child1.PointToClient (new Point (100, 100));
-			Assert.IsTrue (child1.IsHandleCreated, "A18");
-
-			SetUp ();
-			child1.PointToScreen (new Point (100, 100));
-			Assert.IsTrue (child1.IsHandleCreated, "A19");
-			
-			//c.PreProcessControlMessage   ???
-			//c.PreProcessMessage          ???
-			SetUp ();
-			child1.RectangleToClient (new Rectangle (0, 0, 100, 100));
-			Assert.IsTrue (child1.IsHandleCreated, "A20");
-			
-			SetUp ();
-			child1.RectangleToScreen (new Rectangle (0, 0, 100, 100));
-			Assert.IsTrue (child1.IsHandleCreated, "A21");
-
-			SetUp ();
-			child1.Refresh ();
-			Assert.IsFalse (child1.IsHandleCreated, "A22");
-
-			SetUp ();
-			child1.ResetBackColor ();
-			Assert.IsFalse (child1.IsHandleCreated, "A23");
-
-			SetUp ();
-			child1.ResetBindings ();
-			Assert.IsFalse (child1.IsHandleCreated, "A24");
-
-			SetUp ();
-			child1.ResetCursor ();
-			Assert.IsFalse (child1.IsHandleCreated, "A25");
-
-			SetUp ();
-			child1.ResetFont ();
-			Assert.IsFalse (child1.IsHandleCreated, "A26");
-
-			SetUp ();
-			child1.ResetForeColor ();
-			Assert.IsFalse (child1.IsHandleCreated, "A27");
-
-			SetUp ();
-			child1.ResetImeMode ();
-			Assert.IsFalse (child1.IsHandleCreated, "A28");
-
-			SetUp ();
-			child1.ResetRightToLeft ();
-			Assert.IsFalse (child1.IsHandleCreated, "A29");
-
-			SetUp ();
-			child1.ResetText ();
-			Assert.IsFalse (child1.IsHandleCreated, "A30");
-
-			SetUp ();
-			child1.SuspendLayout ();
-			Assert.IsFalse (child1.IsHandleCreated, "A31");
-
-			SetUp ();
-			child1.ResumeLayout ();
-			Assert.IsFalse (child1.IsHandleCreated, "A32");
-			
-			SetUp ();
-			child1.Scale (new SizeF (1.5f, 1.5f));
-			Assert.IsFalse (child1.IsHandleCreated, "A33");
-			SetUp ();
-			child1.Select ();
-			Assert.IsTrue (child1.IsHandleCreated, "A34");
-
-			SetUp ();
-			child1.SelectNextControl (new Control (), true, true, true, true);
-			Assert.IsFalse (child1.IsHandleCreated, "A35");
-
-			SetUp ();
-			child1.SetBounds (0, 0, 100, 100);
-			Assert.IsFalse (child1.IsHandleCreated, "A36");
-
-			SetUp ();
-			child1.Update ();
-			Assert.IsFalse (child1.IsHandleCreated, "A37");
-
-			// Form
-
-			SetUp ();
-			child1.Activate ();
-			Assert.IsFalse (child1.IsHandleCreated, "F1");
-
-			SetUp ();
-			child1.AddOwnedForm (new Form ());
-			Assert.IsFalse (child1.IsHandleCreated, "F2");
-
-			SetUp ();
-			child1.Close ();
-			Assert.IsFalse (child1.IsHandleCreated, "F3");
-
-			SetUp ();
-			child1.Hide ();
-			Assert.IsFalse (child1.IsHandleCreated, "F4");
-
-			SetUp ();
-			child1.LayoutMdi (MdiLayout.Cascade);
-			Assert.IsFalse (child1.IsHandleCreated, "F5");
-
-#if !__MonoCS__
-			SetUp ();
-			child1.PerformAutoScale ();
-			Assert.IsFalse (child1.IsHandleCreated, "F6");
-#endif
-
-			SetUp ();
-			child1.PerformLayout ();
-			Assert.IsFalse (child1.IsHandleCreated, "F7");
-
-			SetUp ();
-			child1.AddOwnedForm (new Form ());
-			child1.RemoveOwnedForm (child1.OwnedForms [child1.OwnedForms.Length - 1]);
-			Assert.IsFalse (child1.IsHandleCreated, "F8");
-
-			SetUp ();
-			child1.ScrollControlIntoView (null);
-			Assert.IsFalse (child1.IsHandleCreated, "F9");
-
-			SetUp ();
-			child1.SetAutoScrollMargin (7, 13);
-			Assert.IsFalse (child1.IsHandleCreated, "F10");
-
-			SetUp ();
-			child1.SetDesktopBounds (-1, -1, 144, 169);
-			Assert.IsFalse (child1.IsHandleCreated, "F11");
-
-			SetUp ();
-			child1.SetDesktopLocation (7, 13);
-			Assert.IsFalse (child1.IsHandleCreated, "F12");
-
-			try {
-				SetUp ();
-				child1.Show (null);
-				Assert.Fail ("F13 - expected InvalidOperationException, got no exception.");
-			} catch (InvalidOperationException ex) {
-				TestHelper.RemoveWarning (ex);
-			} catch (Exception ex) {
-				Assert.Fail ("F13 - expected InvalidOperationException, got " + ex.GetType ().Name);
-			} finally {
-				Assert.IsFalse (child1.IsHandleCreated, "F13");
-			}
-			
-			//c.ShowDialog ()
-
-			SetUp ();
-			child1.ToString ();
-			Assert.IsFalse (child1.IsHandleCreated, "F14");
-
-			SetUp ();
-			child1.Validate ();
-			Assert.IsFalse (child1.IsHandleCreated, "F15");
-
-#if !__MonoCS__
-			SetUp ();
-			child1.ValidateChildren ();
-			Assert.IsFalse (child1.IsHandleCreated, "F16"); 
-#endif
-		}
-
-		[Test]
-		public void Show ()
-		{
-			SetUp ();
-			Assert.IsFalse (child1.IsHandleCreated, "A1");
-			child1.HandleCreated += new EventHandler (HandleCreated_WriteStackTrace);
-			child1.Show ();
-			Assert.IsTrue (child1.IsHandleCreated, "A2");
-		}
-
-		void HandleCreated_WriteStackTrace (object sender, EventArgs e)
-		{
-			Console.WriteLine ("Stacktrace?");//Environment.StackTrace);
-		}
-
-		public delegate void InvokeDelegate ();
-		public void InvokeMethod () { invokeform.Text = "methodinvoked"; }
-
-		Form invokeform = new Form ();
-
-		[Test]
-		public void TestProtectedMethods ()
-		{
-			// Protected Methods that force Handle creation:
-			// - CreateAccessibilityInstance ()
-			// - CreateHandle ()
-			// - IsInputChar ()
-			// - Select ()
-			// - SetVisibleCore ()
-			
-			SetUp ();
-			child1.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
-			Assert.IsFalse (child1.IsHandleCreated, "A1");
-			child1.PublicCreateAccessibilityInstance ();
-			Assert.IsTrue (child1.IsHandleCreated, "A2");
-
-			SetUp ();
-			child1.PublicCreateControlsInstance ();
-			Assert.IsFalse (child1.IsHandleCreated, "A3");
-
-			SetUp ();
-			child1.PublicCreateHandle ();
-			Assert.IsTrue (child1.IsHandleCreated, "A4");
-
-			SetUp ();
-			child1.PublicDestroyHandle ();
-			Assert.IsFalse (child1.IsHandleCreated, "A5");
-
-			SetUp ();
-			child1.PublicGetAccessibilityObjectById (0);
-			Assert.IsFalse (child1.IsHandleCreated, "A6");
-#if !__MonoCS__
-			SetUp ();
-			child1.PublicGetAutoSizeMode ();
-			Assert.IsFalse (child1.IsHandleCreated, "A7");
-
-			SetUp ();
-			child1.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
-			Assert.IsFalse (child1.IsHandleCreated, "A8");
-#endif
-			SetUp ();
-			child1.PublicGetStyle (ControlStyles.FixedHeight);
-			Assert.IsFalse (child1.IsHandleCreated, "A9");
-
-			SetUp ();
-			child1.PublicGetTopLevel ();
-			Assert.IsFalse (child1.IsHandleCreated, "A10");
-
-			SetUp ();
-			child1.PublicInitLayout ();
-			Assert.IsFalse (child1.IsHandleCreated, "A11");
-
-			SetUp ();
-			child1.PublicInvokeGotFocus (child1, EventArgs.Empty);
-			Assert.IsFalse (child1.IsHandleCreated, "A12");
-
-			SetUp ();
-			child1.PublicInvokeLostFocus (child1, EventArgs.Empty);
-			Assert.IsFalse (child1.IsHandleCreated, "A13");
-
-			SetUp ();
-			child1.PublicInvokeOnClick (child1, EventArgs.Empty);
-			Assert.IsFalse (child1.IsHandleCreated, "A14");
-
-			SetUp ();
-			child1.PublicInvokePaint (child1, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
-			Assert.IsFalse (child1.IsHandleCreated, "A15");
-
-			SetUp ();
-			child1.PublicInvokePaintBackground (child1, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
-			Assert.IsFalse (child1.IsHandleCreated, "A16");
-
-			SetUp ();
-			child1.PublicIsInputChar ('c');
-			Assert.IsTrue (child1.IsHandleCreated, "A17");
-
-			SetUp ();
-			child1.PublicIsInputKey (Keys.B);
-			Assert.IsFalse (child1.IsHandleCreated, "A18");
-
-			SetUp ();
-			child1.PublicNotifyInvalidate (Rectangle.Empty);
-			Assert.IsFalse (child1.IsHandleCreated, "A19");
-
-			SetUp ();
-			child1.PublicOnVisibleChanged (EventArgs.Empty);
-			Assert.IsFalse (child1.IsHandleCreated, "A20");
-
-			SetUp ();
-			child1.PublicRaiseDragEvent (null, null);
-			Assert.IsFalse (child1.IsHandleCreated, "A21");
-
-			SetUp ();
-			child1.PublicRaiseKeyEvent (null, null);
-			Assert.IsFalse (child1.IsHandleCreated, "A22");
-
-			SetUp ();
-			child1.PublicRaiseMouseEvent (null, null);
-			Assert.IsFalse (child1.IsHandleCreated, "A23");
-
-			SetUp ();
-			child1.PublicRaisePaintEvent (null, null);
-			Assert.IsFalse (child1.IsHandleCreated, "A24");
-
-			SetUp ();
-			child1.PublicRecreateHandle ();
-			Assert.IsFalse (child1.IsHandleCreated, "A25");
-
-			SetUp ();
-			child1.PublicResetMouseEventArgs ();
-			Assert.IsFalse (child1.IsHandleCreated, "A26");
-
-			SetUp ();
-			child1.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
-			Assert.IsFalse (child1.IsHandleCreated, "A27");
-
-			SetUp ();
-			child1.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
-			Assert.IsFalse (child1.IsHandleCreated, "A28");
-
-			SetUp ();
-			child1.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
-			Assert.IsFalse (child1.IsHandleCreated, "A29");
-
-			SetUp ();
-			child1.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
-			Assert.IsFalse (child1.IsHandleCreated, "A30");
-#if !__MonoCS__
-			SetUp ();
-			child1.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
-			Assert.IsFalse (child1.IsHandleCreated, "A31");
-#endif
-			SetUp ();
-			child1.PublicScaleCore (1.5f, 1.5f);
-			Assert.IsFalse (child1.IsHandleCreated, "A32");
-
-			SetUp ();
-			child1.PublicSelect ();
-			Assert.IsTrue (child1.IsHandleCreated, "A33");
-			
-#if !__MonoCS__
-			SetUp ();
-			child1.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
-			Assert.IsFalse (child1.IsHandleCreated, "A34");
-#endif
-			SetUp ();
-			child1.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
-			Assert.IsFalse (child1.IsHandleCreated, "A35");
-
-			SetUp ();
-			child1.PublicSetClientSizeCore (122, 122);
-			Assert.IsFalse (child1.IsHandleCreated, "A36");
-
-			SetUp ();
-			child1.PublicSetStyle (ControlStyles.FixedHeight, true);
-			Assert.IsFalse (child1.IsHandleCreated, "A37");
-
-			try {
-				SetUp ();
-				child1.PublicSetTopLevel (true);
-				Assert.Fail ("A38, expected ArgumentException, got no exception");
-			} catch (ArgumentException ex) {
-				TestHelper.RemoveWarning (ex);
-			} catch (Exception ex) {
-				Assert.Fail ("A38, expected ArgumentException, got " + ex.GetType ().Name);
-			} finally {
-				Assert.IsFalse (child1.IsHandleCreated, "A38");
-			}
-
-			SetUp ();
-			child1.PublicSetVisibleCore (true);
-			Assert.IsTrue (child1.IsHandleCreated, "A39");
-			SetUp ();
-			child1.PublicSizeFromClientSize (new Size (160, 160));
-			Assert.IsFalse (child1.IsHandleCreated, "A40");
-
-			SetUp ();
-			child1.PublicUpdateBounds ();
-			Assert.IsFalse (child1.IsHandleCreated, "A41");
-
-			SetUp ();
-			child1.PublicUpdateStyles ();
-			Assert.IsFalse (child1.IsHandleCreated, "A42");
-
-			SetUp ();
-			child1.PublicUpdateZOrder ();
-			Assert.IsFalse (child1.IsHandleCreated, "A43");
-
-
-			// Form
-
-			SetUp ();
-			main.PublicActivateMdiChild (child1);
-			main.PublicActivateMdiChild (child2);
-			Assert.IsFalse (child1.IsHandleCreated, "F1-a");
-			Assert.IsFalse (child2.IsHandleCreated, "F1-b");
-
-			SetUp ();
-			child1.PublicAdjustFormScrollbars (true);
-			Assert.IsFalse (child1.IsHandleCreated, "F2");
-
-			SetUp ();
-			child1.PublicCenterToParent ();
-			Assert.IsFalse (child1.IsHandleCreated, "F3");
-
-			SetUp ();
-			child1.PublicCenterToScreen ();
-			Assert.IsFalse (child1.IsHandleCreated, "F4");
-
-			SetUp ();
-			child1.PublicGetScrollState (1);
-			Assert.IsFalse (child1.IsHandleCreated, "F5");
-
-			SetUp ();
-			child1.PublicGetService (typeof (int));
-			Assert.IsFalse (child1.IsHandleCreated, "F6");
-
-			SetUp ();
-			Message m = new Message ();
-			child1.PublicProcessCmdKey (ref m, Keys.C);
-			Assert.IsFalse (child1.IsHandleCreated, "F7");
-
-			SetUp ();
-			child1.PublicProcessDialogChar ('p');
-			Assert.IsFalse (child1.IsHandleCreated, "F8");
-
-			SetUp ();
-			child1.PublicProcessDialogKey (Keys.D);
-			Assert.IsFalse (child1.IsHandleCreated, "F9");
-
-			SetUp ();
-			child1.PublicProcessKeyEventArgs (ref m);
-			Assert.IsFalse (child1.IsHandleCreated, "F10");
-
-			SetUp ();
-			child1.PublicProcessKeyMessage (ref m);
-			Assert.IsFalse (child1.IsHandleCreated, "F11");
-
-			SetUp ();
-			child1.PublicProcessKeyPreview (ref m);
-			Assert.IsFalse (child1.IsHandleCreated, "F12");
-
-			SetUp ();
-			child1.PublicProcessMnemonic ('Z');
-			Assert.IsFalse (child1.IsHandleCreated, "F13");
-
-			SetUp ();
-			child1.PublicProcessTabKey (true);
-			Assert.IsFalse (child1.IsHandleCreated, "F14");
-
-#if !__MonoCS__
-			SetUp ();
-			child1.Controls.Add (new Control ());
-			child1.PublicScrollToControl (child1.Controls [0]);
-			Assert.IsFalse (child1.IsHandleCreated, "F15");
-#endif
-
-			SetUp ();
-			child1.PublicSelect (true, true);
-			Assert.IsTrue (child1.IsHandleCreated, "F16");
-
-			SetUp ();
-			child1.PublicSetDisplayRectLocation (13, 17);
-			Assert.IsFalse (child1.IsHandleCreated, "F17");
-
-			SetUp ();
-			child1.PublicSetScrollState (5, false);
-			Assert.IsFalse (child1.IsHandleCreated, "F18");
-
-			SetUp ();
-			child1.PublicUpdateDefaultButton (3, false);
-			Assert.IsFalse (child1.IsHandleCreated, "F19");
-		}
-
-		private class ProtectedForm : Form
-		{
-			// Properties
-			public SizeF PublicAutoScaleFactor { get { return base.AutoScaleFactor; } } 
-#if !__MonoCS__
-			public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
-#endif
-			public CreateParams PublicCreateParams { get { return base.CreateParams; } }
-			public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
-			public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
-			public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
-			public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
-			public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
-			public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
-			public Size PublicDefaultSize { get { return base.DefaultSize; } }
-			public bool PublicDesignMode { get {return base.DesignMode; } }
-			public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
-			public EventHandlerList PublicEvents { get {return base.Events; } }			
-			public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
-			public bool PublicHScroll { get {return base.HScroll; } set { base.HScroll = value;} }
-			public Rectangle PublicMaximizedBounds { get {return base.MaximizedBounds; } set { base.MaximizedBounds = value; }}
-			public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
-			public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
-#if !__MonoCS__
-			public bool PublicScaleChildren { get { return base.ScaleChildren; } }
-#endif
-			public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
-			public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }
-			public bool PublicShowWithoutActivation { get { return base.ShowWithoutActivation; } } 
-			public bool PublicVScroll { get { return base.VScroll; } set { base.VScroll = value; } }
-			
-			
-			// Methods
-			public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }
-			public void PublicActivateMdiChild (Form form) { base.ActivateMdiChild (form); }
-			public void PublicAdjustFormScrollbars (bool displayScrollbars) {base.AdjustFormScrollbars (displayScrollbars); }
-			public void PublicCenterToParent () { base.CenterToParent (); }
-			public void PublicCenterToScreen () { base.CenterToScreen (); }
-			public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }
-			public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
-			public void PublicCreateHandle () { base.CreateHandle (); }
-			public void PublicDestroyHandle () { base.DestroyHandle (); }
-			public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
-#if !__MonoCS__
-			public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
-			public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
-#endif
-			public bool PublicGetScrollState (int bit) { return base.GetScrollState (bit); }
-			public object PublicGetService (Type service) { return base.GetService (service); }
-			public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }
-			public bool PublicGetTopLevel () { return base.GetTopLevel (); }
-			public void PublicInitLayout () { base.InitLayout (); }
-			public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }
-			public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }
-			public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }
-			public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }
-			public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }
-			public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
-			public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
-			public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
-			public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
-			public void PublicProcessCmdKey (ref Message msg, Keys keyData) { base.ProcessCmdKey (ref msg, keyData); }
-			public void PublicProcessDialogChar (char charCode) { base.ProcessDialogChar (charCode); }
-			public void PublicProcessDialogKey (Keys keyData) { base.ProcessDialogKey (keyData); }
-			public void PublicProcessKeyEventArgs (ref Message m) { base.ProcessKeyEventArgs (ref m); }
-			public void PublicProcessKeyMessage (ref Message m) { base.ProcessKeyMessage (ref m); }
-			public void PublicProcessKeyPreview (ref Message m) { base.ProcessKeyPreview (ref m); }
-			public void PublicProcessMnemonic (char charCode) { base.ProcessMnemonic (charCode); }
-			public void PublicProcessTabKey (bool forward) { base.ProcessTabKey (forward); }
-			public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
-			public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
-			public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
-			public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }
-			public void PublicRecreateHandle () { base.RecreateHandle (); }
-			public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }
-			public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }
-			public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
-			public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
-			public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
-#if !__MonoCS__
-			public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
-#endif
-			public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
-#if !__MonoCS__
-			public void PublicScrollToControl (Control activeControl) { base.ScrollToControl (activeControl); } 
-#endif
-			public void PublicSelect () { base.Select (); }
-			public void PublicSelect (bool directed, bool forward) { base.Select (directed, forward); }
-
-#if !__MonoCS__
-			public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
-#endif
-			public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
-			public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }
-			public void PublicSetDisplayRectLocation (int x, int y) { base.SetDisplayRectLocation (x, y); }
-			public void PublicSetScrollState (int bit, bool value) { base.SetScrollState (bit, value); }
-			public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
-			public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
-			public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
-			public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
-			public void PublicUpdateBounds () { base.UpdateBounds (); }
-			public void PublicUpdateDefaultButton (int bit, bool value) { base.UpdateDefaultButton (); }
-			public void PublicUpdateStyles () { base.UpdateStyles (); }
-			public void PublicUpdateZOrder () { base.UpdateZOrder (); }
-		}
-	}
-}
+//
+// FormTest.cs: Test cases for Form.
+//
+// Author:
+//   Ritvik Mayank (mritvik@novell.com)
+//
+// (C) 2005 Novell, Inc. (http://www.novell.com)
+//
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Reflection;
+using System.Windows.Forms;
+
+using NUnit.Framework;
+
+using CategoryAttribute = NUnit.Framework.CategoryAttribute;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class MdiFormHandleTest : TestHelper
+	{
+		private ProtectedForm main;
+		private ProtectedForm child1;
+		private ProtectedForm child2;
+		
+		[TearDown]
+		protected override void TearDown ()
+		{
+			if (main != null) {
+				main.Dispose ();
+				main = null;
+			}
+			
+			if (child1 != null) {
+				child1.Dispose ();
+				child1 = null;
+			}
+			
+			if (child2 != null) {
+				child2.Dispose ();
+				child2 = null;
+			}
+			base.TearDown ();
+		}
+		
+		void SetUp ()
+		{
+			TearDown ();
+			main = new ProtectedForm ();
+			main.IsMdiContainer = true;
+			main.ShowInTaskbar = false;
+
+			child1 = new ProtectedForm ();
+			child1.MdiParent = main;
+
+			child2 = new ProtectedForm ();
+			child2.MdiParent = main;
+			
+			main.Show ();
+		}
+		
+		[Test]
+		public void TestPublicProperties ()
+		{
+			// This long, carpal-tunnel syndrome inducing test shows us that
+			// the following properties cause the Handle to be created:
+			// - AccessibilityObject	[get]
+			// - Capture			[set]
+			// - Handle			[get]
+			// - Visible			[set]
+
+			// A
+			SetUp ();
+			object o = child1.AccessibilityObject;
+			Assert.IsTrue (child1.IsHandleCreated, "A0");
+			
+			SetUp ();
+			o = child1.AccessibleDefaultActionDescription;
+			child1.AccessibleDefaultActionDescription = "playdoh";
+			Assert.IsFalse (child1.IsHandleCreated, "A1");
+			
+			SetUp ();
+			o = child1.AccessibleDescription;
+			child1.AccessibleDescription = "more playdoh!";
+			Assert.IsFalse (child1.IsHandleCreated, "A2");
+
+			SetUp ();
+			o = child1.AccessibleName;
+			child1.AccessibleName = "playdoh fun factory";
+			Assert.IsFalse (child1.IsHandleCreated, "A3");
+
+			SetUp ();
+			o = child1.AccessibleRole;
+			child1.AccessibleRole = AccessibleRole.Border;
+			Assert.IsFalse (child1.IsHandleCreated, "A4");
+
+			SetUp ();
+			o = child1.AllowDrop;
+			child1.AllowDrop = true;
+			Assert.IsFalse (child1.IsHandleCreated, "A5");
+			
+			// If we don't reset the control, handle creation will fail
+			// because AllowDrop requires STAThread, which Nunit doesn't do
+
+			SetUp ();
+			o = child1.Anchor;
+			child1.Anchor = AnchorStyles.Right;
+			Assert.IsFalse (child1.IsHandleCreated, "A6");
+#if !__MonoCS__
+			SetUp ();
+			o = child1.AutoScrollOffset;
+			child1.AutoScrollOffset = new Point (40, 40);
+			Assert.IsFalse (child1.IsHandleCreated, "A7");
+#endif
+			SetUp ();
+			o = child1.AutoSize;
+			child1.AutoSize = true;
+			Assert.IsFalse (child1.IsHandleCreated, "A8");
+
+			// A - Form	
+			SetUp ();
+			o = child1.AcceptButton;
+			child1.AcceptButton = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FA1");
+
+			SetUp ();
+			o = child1.ActiveControl;
+			child1.ActiveControl = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FA2");
+
+			SetUp ();
+			o = child1.ActiveMdiChild;
+			Assert.IsFalse (child1.IsHandleCreated, "FA3");
+
+			SetUp ();
+			o = child1.AllowTransparency;
+			child1.AllowTransparency = !child1.AllowTransparency;
+			Assert.IsFalse (child1.IsHandleCreated, "FA4");
+
+			SetUp ();
+			o = child1.AutoScaleDimensions;
+			child1.AutoScaleDimensions = SizeF.Empty;
+			Assert.IsFalse (child1.IsHandleCreated, "FA5");
+
+			SetUp ();
+			o = child1.AutoScaleMode;
+			child1.AutoScaleMode = AutoScaleMode.Dpi;
+			Assert.IsFalse (child1.IsHandleCreated, "FA6");
+			SetUp ();
+			o = child1.AutoScroll;
+			child1.AutoScroll = !child1.AutoScroll;
+			Assert.IsFalse (child1.IsHandleCreated, "FA7");
+
+			SetUp ();
+			o = child1.AutoScrollMargin;
+			child1.AutoScrollMargin = new Size (child1.AutoScrollMargin.Width + 1, child1.AutoScrollMargin.Height + 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FA8");
+
+			SetUp ();
+			o = child1.AutoScrollMinSize;
+			child1.AutoScrollMinSize = new Size (child1.AutoScrollMinSize.Width + 1, child1.AutoScrollMinSize.Height + 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FA9");
+
+#if !__MonoCS__
+			SetUp ();
+			o = child1.AutoScrollOffset;
+			child1.AutoScrollOffset = new Point (child1.AutoScrollOffset.X + 1, child1.AutoScrollOffset.Y + 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FA10"); 
+#endif
+
+			SetUp ();
+			o = child1.AutoScrollPosition;
+			child1.AutoScrollPosition = new Point (child1.AutoScrollPosition.X + 1, child1.AutoScrollPosition.Y + 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FA11");
+
+			SetUp ();
+			o = child1.AutoSize;
+			child1.AutoSize = !child1.AutoSize;
+			Assert.IsFalse (child1.IsHandleCreated, "FA12");
+#if !__MonoCS__
+			SetUp ();
+			o = child1.AutoSizeMode;
+			child1.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			Assert.IsFalse (child1.IsHandleCreated, "FA13");
+#endif
+			SetUp ();
+			o = child1.AutoValidate;
+			child1.AutoValidate = AutoValidate.EnableAllowFocusChange;
+			Assert.IsFalse (child1.IsHandleCreated, "FA14");
+
+			// B
+			SetUp ();
+			o = child1.BackColor;
+			child1.BackColor = Color.Green;
+			Assert.IsFalse (child1.IsHandleCreated, "A9");
+
+			SetUp ();
+			o = child1.BackgroundImage;
+			child1.BackgroundImage = new Bitmap (1, 1);
+			Assert.IsFalse (child1.IsHandleCreated, "A10");
+			SetUp ();
+			o = child1.BackgroundImageLayout;
+			child1.BackgroundImageLayout = ImageLayout.Stretch;
+			Assert.IsFalse (child1.IsHandleCreated, "A11");
+			SetUp ();
+			o = child1.BindingContext;
+			child1.BindingContext = new BindingContext ();
+			Assert.IsFalse (child1.IsHandleCreated, "A12");
+
+			SetUp ();
+			o = child1.Bottom;
+			Assert.IsFalse (child1.IsHandleCreated, "A13");
+
+			SetUp ();
+			o = child1.Bounds;
+			child1.Bounds = new Rectangle (0, 0, 12, 12);
+			Assert.IsFalse (child1.IsHandleCreated, "A14");
+
+
+			// B - Form
+			SetUp ();
+			o = child1.BindingContext;
+			child1.BindingContext = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FB1");
+
+			// C
+			SetUp ();
+			o = child1.CanFocus;
+			Assert.IsFalse (child1.IsHandleCreated, "A15");
+
+			SetUp ();
+			o = child1.CanSelect;
+			Assert.IsFalse (child1.IsHandleCreated, "A16");
+
+			SetUp ();
+			o = child1.Capture;
+			Assert.IsFalse (child1.IsHandleCreated, "A17a");
+
+			SetUp ();
+			child1.Capture = true;
+			Assert.IsTrue (child1.IsHandleCreated, "A17b");
+
+			SetUp ();
+			o = child1.CausesValidation;
+			child1.CausesValidation = false;
+			Assert.IsFalse (child1.IsHandleCreated, "A18");
+
+			SetUp ();
+			o = child1.ClientRectangle;
+			Assert.IsFalse (child1.IsHandleCreated, "A19");
+
+			SetUp ();
+			o = child1.ClientSize;
+			child1.ClientSize = new Size (30, 30);
+			Assert.IsFalse (child1.IsHandleCreated, "A20");
+
+			SetUp ();
+			o = child1.CompanyName;
+			Assert.IsFalse (child1.IsHandleCreated, "A21");
+
+			SetUp ();
+			o = child1.Container;
+			Assert.IsFalse (child1.IsHandleCreated, "A22");
+
+			SetUp ();
+			o = child1.ContainsFocus;
+			Assert.IsFalse (child1.IsHandleCreated, "A23");
+
+			SetUp ();
+			o = child1.ContextMenu;
+			child1.ContextMenu = new ContextMenu ();
+			Assert.IsFalse (child1.IsHandleCreated, "A24");
+
+			SetUp ();
+			o = child1.ContextMenuStrip;
+			child1.ContextMenuStrip = new ContextMenuStrip ();
+			Assert.IsFalse (child1.IsHandleCreated, "A25");
+			SetUp ();
+			o = child1.Controls;
+			Assert.IsFalse (child1.IsHandleCreated, "A26");
+
+			SetUp ();
+			o = child1.Created;
+			Assert.IsFalse (child1.IsHandleCreated, "A27");
+
+			SetUp ();
+			o = child1.Cursor;
+			child1.Cursor = Cursors.Arrow;
+			Assert.IsFalse (child1.IsHandleCreated, "A28");
+
+			// C - Form
+			SetUp ();
+			o = child1.CancelButton;
+			child1.CancelButton = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FC1");
+
+			SetUp ();
+			o = child1.ClientSize;
+			child1.ClientSize = new Size (child1.ClientSize.Width + 1, child1.ClientSize.Height + 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FC2");
+
+			SetUp ();
+			o = child1.Container;
+			Assert.IsFalse (child1.IsHandleCreated, "FC3");
+
+			SetUp ();
+			o = child1.ControlBox;
+			child1.ControlBox = !child1.ControlBox;
+			Assert.IsFalse (child1.IsHandleCreated, "FC4");
+
+			SetUp ();
+			o = child1.CurrentAutoScaleDimensions;
+			Assert.IsFalse (child1.IsHandleCreated, "FC5"); 
+
+			// D
+			SetUp ();
+			o = child1.DataBindings;
+			Assert.IsFalse (child1.IsHandleCreated, "A29");
+
+			SetUp ();
+			o = child1.DisplayRectangle;
+			Assert.IsFalse (child1.IsHandleCreated, "A30");
+
+			SetUp ();
+			o = child1.Disposing;
+			Assert.IsFalse (child1.IsHandleCreated, "A31");
+
+			SetUp ();
+			o = child1.Dock;
+			child1.Dock = DockStyle.Fill;
+			Assert.IsFalse (child1.IsHandleCreated, "A32");
+
+			// D - Form
+			SetUp ();
+			o = child1.DataBindings;
+			Assert.IsFalse (child1.IsHandleCreated, "FD6");
+
+			SetUp ();
+			o = child1.DesktopBounds;
+			child1.DesktopBounds = new Rectangle (3, 5, child1.DesktopBounds.Width + 1, child1.DesktopBounds.Height + 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FD7");
+
+			SetUp ();
+			o = child1.DesktopLocation;
+			child1.DesktopLocation = child1.DesktopLocation + new Size (1, 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FD8");
+
+			SetUp ();
+			o = child1.DialogResult;
+			child1.DialogResult = DialogResult.Abort;
+			Assert.IsFalse (child1.IsHandleCreated, "FD9");
+
+			SetUp ();
+			o = child1.DisplayRectangle;
+			Assert.IsFalse (child1.IsHandleCreated, "FD10");
+
+			SetUp ();
+			o = child1.Disposing;
+			Assert.IsFalse (child1.IsHandleCreated, "FD11");
+
+			SetUp ();
+			o = child1.Dock;
+			child1.Dock = DockStyle.Right;
+			Assert.IsFalse (child1.IsHandleCreated, "FD12");
+
+			// E-H
+			SetUp ();
+			o = child1.Enabled;
+			child1.Enabled = false;
+			Assert.IsFalse (child1.IsHandleCreated, "A33");
+
+			SetUp ();
+			o = child1.Focused;
+			Assert.IsFalse (child1.IsHandleCreated, "A34");
+
+			SetUp ();
+			o = child1.Font;
+			child1.Font = new Font (child1.Font, FontStyle.Bold);
+			Assert.IsFalse (child1.IsHandleCreated, "A35");
+
+			SetUp ();
+			o = child1.ForeColor;
+			child1.ForeColor = Color.Green;
+			Assert.IsFalse (child1.IsHandleCreated, "A36");
+
+			SetUp ();
+			o = child1.Handle;
+			Assert.IsTrue (child1.IsHandleCreated, "A37");
+
+			SetUp ();
+			o = child1.HasChildren;
+			Assert.IsFalse (child1.IsHandleCreated, "A38");
+
+			SetUp ();
+			o = child1.Height;
+			child1.Height = 12;
+			Assert.IsFalse (child1.IsHandleCreated, "A39");
+
+			// E-H - Form
+			SetUp ();
+			o = child1.FormBorderStyle;
+			child1.FormBorderStyle = FormBorderStyle.FixedToolWindow;
+			Assert.IsFalse (child1.IsHandleCreated, "FF1");
+
+			SetUp ();
+			o = child1.HelpButton;
+			child1.HelpButton = !child1.HelpButton;
+			Assert.IsFalse (child1.IsHandleCreated, "FH1");
+
+#if !__MonoCS__
+			SetUp ();
+			o = child1.HorizontalScroll;
+			Assert.IsFalse (child1.IsHandleCreated, "FH2"); 
+#endif
+			// I - L
+			SetUp ();
+			child1.ImeMode = ImeMode.On;
+			Assert.IsFalse (child1.IsHandleCreated, "A40");
+
+			SetUp ();
+			o = child1.InvokeRequired;
+			Assert.IsFalse (child1.IsHandleCreated, "A41");
+
+			SetUp ();
+			o = child1.IsAccessible;
+			Assert.IsFalse (child1.IsHandleCreated, "A42");
+
+			SetUp ();
+			o = child1.IsDisposed;
+			Assert.IsFalse (child1.IsHandleCreated, "A43");
+#if !__MonoCS__
+			SetUp ();
+			o = child1.IsMirrored;
+			Assert.IsFalse (child1.IsHandleCreated, "A44");
+#endif
+			SetUp ();
+			o = child1.LayoutEngine;
+			Assert.IsFalse (child1.IsHandleCreated, "A45");
+			SetUp ();
+			o = child1.Left;
+			child1.Left = 15;
+			Assert.IsFalse (child1.IsHandleCreated, "A46");
+
+			SetUp ();
+			o = child1.Location;
+			child1.Location = new Point (20, 20);
+			Assert.IsFalse (child1.IsHandleCreated, "A47");
+
+			// I - L - Form
+
+			SetUp ();
+			o = child1.Icon;
+			child1.Icon = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FI1");
+
+			SetUp ();
+			o = child1.IsMdiChild;
+			Assert.IsFalse (child1.IsHandleCreated, "FI2");
+
+			SetUp ();
+			o = child1.IsMdiContainer;
+			child1.IsMdiContainer = false;
+			Assert.IsFalse (child1.IsHandleCreated, "FI3");
+
+			SetUp ();
+			o = child1.IsRestrictedWindow;
+			Assert.IsFalse (child1.IsHandleCreated, "FI4");
+
+			SetUp ();
+			o = child1.KeyPreview;
+			child1.KeyPreview = !child1.KeyPreview;
+			Assert.IsFalse (child1.IsHandleCreated, "FK1");
+
+			SetUp ();
+			o = child1.Location;
+			child1.Location = child1.Location + new Size (1, 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FL1");
+			
+			
+			// M - N
+			SetUp ();
+			o = child1.Margin;
+			child1.Margin = new Padding (6);
+			Assert.IsFalse (child1.IsHandleCreated, "A48");
+
+			SetUp ();
+			o = child1.MaximumSize;
+			child1.MaximumSize = new Size (500, 500);
+			Assert.IsFalse (child1.IsHandleCreated, "A49");
+
+			SetUp ();
+			o = child1.MinimumSize;
+			child1.MinimumSize = new Size (100, 100);
+			Assert.IsFalse (child1.IsHandleCreated, "A50");
+			SetUp ();
+			o = child1.Name;
+			child1.Name = "web";
+			Assert.IsFalse (child1.IsHandleCreated, "A51");
+
+			// M - O - Form
+			SetUp ();
+			o = child1.MainMenuStrip;
+			child1.MainMenuStrip = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FM1"); 
+
+			SetUp ();
+			o = child1.MaximizeBox;
+			child1.MaximizeBox = !child1.MaximizeBox;
+			Assert.IsFalse (child1.IsHandleCreated, "FM2");
+
+			SetUp ();
+			o = child1.MaximumSize;
+			child1.MaximumSize = child1.MaximumSize + new Size (1, 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FM3");
+
+			SetUp ();
+			o = child1.MdiChildren;
+			Assert.IsFalse (child1.IsHandleCreated, "FM4");
+
+			SetUp ();
+			o = child1.MdiParent;
+			child1.MdiParent = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FM5");
+
+			SetUp ();
+			o = child1.Menu;
+			child1.Menu = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FM6");
+
+			SetUp ();
+			o = child1.MergedMenu;
+			Assert.IsFalse (child1.IsHandleCreated, "FM7");
+
+			SetUp ();
+			o = child1.MinimizeBox;
+			child1.MinimizeBox = !child1.MinimizeBox;
+			Assert.IsFalse (child1.IsHandleCreated, "FM8");
+
+			SetUp ();
+			o = child1.MinimumSize;
+			child1.MinimumSize = child1.MinimumSize + new Size (1, 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FM9");
+
+			SetUp ();
+			o = child1.Modal;
+			Assert.IsFalse (child1.IsHandleCreated, "FM10");
+
+			SetUp ();
+			o = child1.Opacity;
+			child1.Opacity = 0.9;
+			Assert.IsFalse (child1.IsHandleCreated, "FO1");
+
+			SetUp ();
+			o = child1.OwnedForms;
+			Assert.IsFalse (child1.IsHandleCreated, "FO2");
+
+			SetUp ();
+			o = child1.Owner;
+			child1.Owner = null;
+			Assert.IsFalse (child1.IsHandleCreated, "FO3");
+			
+			// P - R
+			SetUp ();
+			o = child1.Padding;
+			child1.Padding = new Padding (4);
+			Assert.IsFalse (child1.IsHandleCreated, "A52");
+			try {
+				SetUp ();
+				o = child1.Parent;
+				child1.TopLevel = false;
+				child1.Parent = new Form ();
+				Assert.Fail ("A53 - Expected ArgumentException, got no exception");
+			} catch (ArgumentException ex) {
+				TestHelper.RemoveWarning (ex);
+			} catch (Exception ex) {
+				Assert.Fail ("A53 - Expected ArgumentException, got " + ex.GetType ().Name);
+			} finally {
+				Assert.IsFalse (child1.IsHandleCreated, "A53");
+			}
+			SetUp ();
+			o = child1.PreferredSize;
+			Assert.IsFalse (child1.IsHandleCreated, "A54");
+			SetUp ();
+			o = child1.ProductName;
+			Assert.IsFalse (child1.IsHandleCreated, "A55");
+
+			SetUp ();
+			o = child1.ProductVersion;
+			Assert.IsFalse (child1.IsHandleCreated, "A56");
+
+			SetUp ();
+			o = child1.RecreatingHandle;
+			Assert.IsFalse (child1.IsHandleCreated, "A57");
+
+			SetUp ();
+			o = child1.Region;
+			child1.Region = new Region (new Rectangle (0, 0, 177, 177));
+			Assert.IsFalse (child1.IsHandleCreated, "A58");
+
+			SetUp ();
+			o = child1.Right;
+			Assert.IsFalse (child1.IsHandleCreated, "A59");
+
+			SetUp ();
+			o = child1.RightToLeft;
+			child1.RightToLeft = RightToLeft.Yes;
+			Assert.IsFalse (child1.IsHandleCreated, "A60");
+
+			// P - R - Form
+			SetUp ();
+			o = child1.ParentForm;
+			Assert.IsFalse (child1.IsHandleCreated, "FP1");
+
+#if !__MonoCS__
+			SetUp ();
+			o = child1.RestoreBounds;
+			Assert.IsFalse (child1.IsHandleCreated, "FR1"); 
+#endif
+
+
+			// S - W
+			SetUp ();
+			o = child1.Site;
+			Assert.IsFalse (child1.IsHandleCreated, "A61");
+
+			SetUp ();
+			o = child1.Size;
+			child1.Size = new Size (188, 188);
+			Assert.IsFalse (child1.IsHandleCreated, "A62");
+
+			SetUp ();
+			o = child1.TabIndex;
+			child1.TabIndex = 5;
+			Assert.IsFalse (child1.IsHandleCreated, "A63");
+
+			SetUp ();
+			o = child1.Tag;
+			child1.Tag = "moooooooo";
+			Assert.IsFalse (child1.IsHandleCreated, "A64");
+
+			SetUp ();
+			o = child1.Text;
+			child1.Text = "meoooowww";
+			Assert.IsFalse (child1.IsHandleCreated, "A65");
+
+			SetUp ();
+			o = child1.Top;
+			child1.Top = 16;
+			Assert.IsFalse (child1.IsHandleCreated, "A66");
+
+			SetUp ();
+			o = child1.TopLevelControl;
+			Assert.IsFalse (child1.IsHandleCreated, "A67");
+#if !__MonoCS__
+			SetUp ();
+			o = child1.UseWaitCursor;
+			child1.UseWaitCursor = true;
+			Assert.IsFalse (child1.IsHandleCreated, "A68");
+#endif
+			SetUp ();
+			o = child1.Visible;
+			Assert.IsFalse (child1.IsHandleCreated, "A69-a");
+			
+			SetUp ();
+			child1.Visible = true;
+			Assert.IsTrue (child1.IsHandleCreated, "A69-b");
+			
+			SetUp ();
+			o = child1.Width;
+			child1.Width = 190;
+			Assert.IsFalse (child1.IsHandleCreated, "A70");
+
+			SetUp ();
+			o = child1.WindowTarget;
+			Assert.IsFalse (child1.IsHandleCreated, "A71");
+
+			// S - W - Form
+
+			SetUp ();
+			o = child1.ShowIcon;
+			child1.ShowIcon = !child1.ShowIcon;
+			Assert.IsFalse (child1.IsHandleCreated, "FS1"); 
+
+			SetUp ();
+			o = child1.ShowInTaskbar;
+			child1.ShowInTaskbar = !child1.ShowInTaskbar;
+			Assert.IsFalse (child1.IsHandleCreated, "FS2");
+
+			SetUp ();
+			o = child1.Size;
+			child1.Size = child1.Size + new Size (1, 1);
+			Assert.IsFalse (child1.IsHandleCreated, "FS3");
+
+			SetUp ();
+			o = child1.SizeGripStyle;
+			child1.SizeGripStyle = SizeGripStyle.Show;
+			Assert.IsFalse (child1.IsHandleCreated, "FS4");
+
+			SetUp ();
+			o = child1.StartPosition;
+			child1.StartPosition = FormStartPosition.Manual;
+			Assert.IsFalse (child1.IsHandleCreated, "FS5");
+
+			SetUp ();
+			o = child1.Text;
+			child1.Text = "hooray!";
+			Assert.IsFalse (child1.IsHandleCreated, "FT1");
+
+			try {
+				SetUp ();
+				o = child1.TopLevel;
+				child1.TopLevel = !child1.TopLevel;
+				Assert.Fail ("FT2 - expected ArgumentException, got no exception.");
+			} catch (ArgumentException ex) {
+				TestHelper.RemoveWarning (ex);
+			} catch (Exception ex) {
+				Assert.Fail ("FT2 - expected ArgumentException, got " + ex.GetType ().Name);
+			} finally {
+				Assert.IsFalse (child1.IsHandleCreated, "FT2");
+			}
+
+			SetUp ();
+			o = child1.TopMost;
+			child1.TopMost = !child1.TopMost;
+			Assert.IsFalse (child1.IsHandleCreated, "FT3");
+
+			SetUp ();
+			o = child1.TransparencyKey;
+			child1.TransparencyKey = Color.BurlyWood;
+			Assert.IsFalse (child1.IsHandleCreated, "FT4");
+
+#if !__MonoCS__
+			SetUp ();
+			o = child1.VerticalScroll;
+			Assert.IsFalse (child1.IsHandleCreated, "FV1"); 
+#endif
+
+			SetUp ();
+			o = child1.WindowState;
+			child1.WindowState = FormWindowState.Maximized;
+			Assert.IsFalse (child1.IsHandleCreated, "FW1");
+
+			TestHelper.RemoveWarning (o);
+		}
+
+		[Test]
+		public void TestProtectedProperties ()
+		{
+			// Not a surprise, but none of these cause handle creation.
+			// Included just to absolutely certain.
+			object o;
+#if !__MonoCS__
+			SetUp ();
+			o = child1.PublicCanRaiseEvents;
+			Assert.IsFalse (child1.IsHandleCreated, "A1");
+#endif
+			SetUp ();
+			o = child1.PublicCreateParams;
+			Assert.IsFalse (child1.IsHandleCreated, "A2");
+			SetUp ();
+			o = child1.PublicDefaultCursor;
+			Assert.IsFalse (child1.IsHandleCreated, "A3");
+			SetUp ();
+			o = child1.PublicDefaultImeMode;
+			Assert.IsFalse (child1.IsHandleCreated, "A4");
+			SetUp ();
+			o = child1.PublicDefaultMargin;
+			Assert.IsFalse (child1.IsHandleCreated, "A5");
+			
+			SetUp ();
+			o = child1.PublicDefaultMaximumSize;
+			Assert.IsFalse (child1.IsHandleCreated, "A6");
+
+			SetUp ();
+			o = child1.PublicDefaultMinimumSize;
+			Assert.IsFalse (child1.IsHandleCreated, "A7");
+
+			SetUp ();
+			o = child1.PublicDefaultPadding;
+			Assert.IsFalse (child1.IsHandleCreated, "A8");
+
+			SetUp ();
+			o = child1.PublicDefaultSize;
+			Assert.IsFalse (child1.IsHandleCreated, "A9");
+
+			SetUp ();
+			o = child1.PublicDoubleBuffered;
+			child1.PublicDoubleBuffered = !child1.PublicDoubleBuffered;
+			Assert.IsFalse (child1.IsHandleCreated, "A10");
+			SetUp ();
+			o = child1.PublicFontHeight;
+			child1.PublicFontHeight = child1.PublicFontHeight + 1;
+			Assert.IsFalse (child1.IsHandleCreated, "A11");
+
+			SetUp ();
+			o = child1.PublicRenderRightToLeft;
+			Assert.IsFalse (child1.IsHandleCreated, "A12");
+
+			SetUp ();
+			o = child1.PublicResizeRedraw;
+			child1.PublicResizeRedraw = !child1.PublicResizeRedraw;
+			Assert.IsFalse (child1.IsHandleCreated, "A13");
+#if !__MonoCS__
+			SetUp ();
+			o = child1.PublicScaleChildren;
+			Assert.IsFalse (child1.IsHandleCreated, "A14");
+#endif
+			SetUp ();
+			o = child1.PublicShowFocusCues;
+			Assert.IsFalse (child1.IsHandleCreated, "A15");
+
+			SetUp ();
+			o = child1.PublicShowKeyboardCues;
+			Assert.IsFalse (child1.IsHandleCreated, "A16");
+
+			SetUp ();
+			o = child1.PublicAutoScaleFactor;
+			Assert.IsFalse (child1.IsHandleCreated, "F1"); 
+			SetUp ();
+			o = child1.PublicDesignMode;
+			Assert.IsFalse (child1.IsHandleCreated, "F2");
+
+			SetUp ();
+			o = child1.PublicEvents;
+			Assert.IsFalse (child1.IsHandleCreated, "F3");
+
+			SetUp ();
+			o = child1.PublicHScroll;
+			child1.PublicHScroll = !child1.PublicHScroll;
+			Assert.IsFalse (child1.IsHandleCreated, "F4");
+
+			SetUp ();
+			o = child1.PublicMaximizedBounds;
+			child1.PublicMaximizedBounds = new Rectangle (1, 1, 1, 1);
+			Assert.IsFalse (child1.IsHandleCreated, "F5");
+
+			SetUp ();
+			o = child1.PublicShowWithoutActivation;
+			Assert.IsFalse (child1.IsHandleCreated, "F6"); 
+			SetUp ();
+			o = child1.PublicVScroll;
+			child1.PublicVScroll = !child1.PublicVScroll;
+			Assert.IsFalse (child1.IsHandleCreated, "F7");
+			
+
+			TestHelper.RemoveWarning (o);
+		}
+
+		[Test]
+		public void TestPublicMethods ()
+		{
+			// Public Methods that force Handle creation:
+			// - CreateGraphics ()
+			// - Focus ()
+			// - GetChildAtPoint ()
+			// - PointToClient ()
+			// - PointToScreen ()
+			// - RectangleToClient ()
+			// - RectangleToScreen ()
+			// - Select ()
+			
+			SetUp ();
+			child1.BringToFront ();
+			Assert.IsFalse (child1.IsHandleCreated, "A1");
+
+			SetUp ();
+			child1.Contains (new Form ());
+			Assert.IsFalse (child1.IsHandleCreated, "A2");
+
+			SetUp ();
+			child1.CreateControl ();
+			Assert.IsFalse (child1.IsHandleCreated, "A3");
+
+			SetUp ();
+			Graphics g = child1.CreateGraphics ();
+			Assert.IsTrue (child1.IsHandleCreated, "A4");
+			g.Dispose ();
+
+			SetUp ();
+			child1.Dispose ();
+			Assert.IsFalse (child1.IsHandleCreated, "A5");
+
+			// This is weird, it causes a form to appear that won't go away until you move the mouse over it, 
+			// but it doesn't create a handle??
+			//DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
+			//Assert.IsFalse (c.IsHandleCreated, "A6");
+			//Assert.AreEqual (DragDropEffects.None, d, "A6b");
+			
+			//Bitmap b = new Bitmap (100, 100);
+			//c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));
+			//Assert.IsFalse (c.IsHandleCreated, "A7");
+			//b.Dispose ();
+			SetUp ();
+			child1.FindForm ();
+			Assert.IsFalse (child1.IsHandleCreated, "A8");
+
+			SetUp ();
+			child1.Focus ();
+			Assert.IsTrue (child1.IsHandleCreated, "A9");
+
+			SetUp ();
+			child1.GetChildAtPoint (new Point (10, 10));
+			Assert.IsTrue (child1.IsHandleCreated, "A10");
+
+			SetUp ();
+			child1.GetContainerControl ();
+			Assert.IsFalse (child1.IsHandleCreated, "A11");
+			
+			SetUp ();
+			child1.GetNextControl (new Control (), true);
+			Assert.IsFalse (child1.IsHandleCreated, "A12");
+			SetUp ();
+			child1.GetPreferredSize (Size.Empty);
+			Assert.IsFalse (child1.IsHandleCreated, "A13");
+			SetUp ();
+			child1.Hide ();
+			Assert.IsFalse (child1.IsHandleCreated, "A14");
+
+			SetUp ();
+			child1.Invalidate ();
+			Assert.IsFalse (child1.IsHandleCreated, "A15");
+
+			child1.Invoke (new InvokeDelegate (InvokeMethod));
+			Assert.IsFalse (child1.IsHandleCreated, "A16");
+			
+			SetUp ();
+			child1.PerformLayout ();
+			Assert.IsFalse (child1.IsHandleCreated, "A17");
+
+			SetUp ();
+			child1.PointToClient (new Point (100, 100));
+			Assert.IsTrue (child1.IsHandleCreated, "A18");
+
+			SetUp ();
+			child1.PointToScreen (new Point (100, 100));
+			Assert.IsTrue (child1.IsHandleCreated, "A19");
+			
+			//c.PreProcessControlMessage   ???
+			//c.PreProcessMessage          ???
+			SetUp ();
+			child1.RectangleToClient (new Rectangle (0, 0, 100, 100));
+			Assert.IsTrue (child1.IsHandleCreated, "A20");
+			
+			SetUp ();
+			child1.RectangleToScreen (new Rectangle (0, 0, 100, 100));
+			Assert.IsTrue (child1.IsHandleCreated, "A21");
+
+			SetUp ();
+			child1.Refresh ();
+			Assert.IsFalse (child1.IsHandleCreated, "A22");
+
+			SetUp ();
+			child1.ResetBackColor ();
+			Assert.IsFalse (child1.IsHandleCreated, "A23");
+
+			SetUp ();
+			child1.ResetBindings ();
+			Assert.IsFalse (child1.IsHandleCreated, "A24");
+
+			SetUp ();
+			child1.ResetCursor ();
+			Assert.IsFalse (child1.IsHandleCreated, "A25");
+
+			SetUp ();
+			child1.ResetFont ();
+			Assert.IsFalse (child1.IsHandleCreated, "A26");
+
+			SetUp ();
+			child1.ResetForeColor ();
+			Assert.IsFalse (child1.IsHandleCreated, "A27");
+
+			SetUp ();
+			child1.ResetImeMode ();
+			Assert.IsFalse (child1.IsHandleCreated, "A28");
+
+			SetUp ();
+			child1.ResetRightToLeft ();
+			Assert.IsFalse (child1.IsHandleCreated, "A29");
+
+			SetUp ();
+			child1.ResetText ();
+			Assert.IsFalse (child1.IsHandleCreated, "A30");
+
+			SetUp ();
+			child1.SuspendLayout ();
+			Assert.IsFalse (child1.IsHandleCreated, "A31");
+
+			SetUp ();
+			child1.ResumeLayout ();
+			Assert.IsFalse (child1.IsHandleCreated, "A32");
+			
+			SetUp ();
+			child1.Scale (new SizeF (1.5f, 1.5f));
+			Assert.IsFalse (child1.IsHandleCreated, "A33");
+			SetUp ();
+			child1.Select ();
+			Assert.IsTrue (child1.IsHandleCreated, "A34");
+
+			SetUp ();
+			child1.SelectNextControl (new Control (), true, true, true, true);
+			Assert.IsFalse (child1.IsHandleCreated, "A35");
+
+			SetUp ();
+			child1.SetBounds (0, 0, 100, 100);
+			Assert.IsFalse (child1.IsHandleCreated, "A36");
+
+			SetUp ();
+			child1.Update ();
+			Assert.IsFalse (child1.IsHandleCreated, "A37");
+
+			// Form
+
+			SetUp ();
+			child1.Activate ();
+			Assert.IsFalse (child1.IsHandleCreated, "F1");
+
+			SetUp ();
+			child1.AddOwnedForm (new Form ());
+			Assert.IsFalse (child1.IsHandleCreated, "F2");
+
+			SetUp ();
+			child1.Close ();
+			Assert.IsFalse (child1.IsHandleCreated, "F3");
+
+			SetUp ();
+			child1.Hide ();
+			Assert.IsFalse (child1.IsHandleCreated, "F4");
+
+			SetUp ();
+			child1.LayoutMdi (MdiLayout.Cascade);
+			Assert.IsFalse (child1.IsHandleCreated, "F5");
+
+#if !__MonoCS__
+			SetUp ();
+			child1.PerformAutoScale ();
+			Assert.IsFalse (child1.IsHandleCreated, "F6");
+#endif
+
+			SetUp ();
+			child1.PerformLayout ();
+			Assert.IsFalse (child1.IsHandleCreated, "F7");
+
+			SetUp ();
+			child1.AddOwnedForm (new Form ());
+			child1.RemoveOwnedForm (child1.OwnedForms [child1.OwnedForms.Length - 1]);
+			Assert.IsFalse (child1.IsHandleCreated, "F8");
+
+			SetUp ();
+			child1.ScrollControlIntoView (null);
+			Assert.IsFalse (child1.IsHandleCreated, "F9");
+
+			SetUp ();
+			child1.SetAutoScrollMargin (7, 13);
+			Assert.IsFalse (child1.IsHandleCreated, "F10");
+
+			SetUp ();
+			child1.SetDesktopBounds (-1, -1, 144, 169);
+			Assert.IsFalse (child1.IsHandleCreated, "F11");
+
+			SetUp ();
+			child1.SetDesktopLocation (7, 13);
+			Assert.IsFalse (child1.IsHandleCreated, "F12");
+
+			try {
+				SetUp ();
+				child1.Show (null);
+				Assert.Fail ("F13 - expected InvalidOperationException, got no exception.");
+			} catch (InvalidOperationException ex) {
+				TestHelper.RemoveWarning (ex);
+			} catch (Exception ex) {
+				Assert.Fail ("F13 - expected InvalidOperationException, got " + ex.GetType ().Name);
+			} finally {
+				Assert.IsFalse (child1.IsHandleCreated, "F13");
+			}
+			
+			//c.ShowDialog ()
+
+			SetUp ();
+			child1.ToString ();
+			Assert.IsFalse (child1.IsHandleCreated, "F14");
+
+			SetUp ();
+			child1.Validate ();
+			Assert.IsFalse (child1.IsHandleCreated, "F15");
+
+#if !__MonoCS__
+			SetUp ();
+			child1.ValidateChildren ();
+			Assert.IsFalse (child1.IsHandleCreated, "F16"); 
+#endif
+		}
+
+		[Test]
+		public void Show ()
+		{
+			SetUp ();
+			Assert.IsFalse (child1.IsHandleCreated, "A1");
+			child1.HandleCreated += new EventHandler (HandleCreated_WriteStackTrace);
+			child1.Show ();
+			Assert.IsTrue (child1.IsHandleCreated, "A2");
+		}
+
+		void HandleCreated_WriteStackTrace (object sender, EventArgs e)
+		{
+			Console.WriteLine ("Stacktrace?");//Environment.StackTrace);
+		}
+
+		public delegate void InvokeDelegate ();
+		public void InvokeMethod () { invokeform.Text = "methodinvoked"; }
+
+		Form invokeform = new Form ();
+
+		[Test]
+		public void TestProtectedMethods ()
+		{
+			// Protected Methods that force Handle creation:
+			// - CreateAccessibilityInstance ()
+			// - CreateHandle ()
+			// - IsInputChar ()
+			// - Select ()
+			// - SetVisibleCore ()
+			
+			SetUp ();
+			child1.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
+			Assert.IsFalse (child1.IsHandleCreated, "A1");
+			child1.PublicCreateAccessibilityInstance ();
+			Assert.IsTrue (child1.IsHandleCreated, "A2");
+
+			SetUp ();
+			child1.PublicCreateControlsInstance ();
+			Assert.IsFalse (child1.IsHandleCreated, "A3");
+
+			SetUp ();
+			child1.PublicCreateHandle ();
+			Assert.IsTrue (child1.IsHandleCreated, "A4");
+
+			SetUp ();
+			child1.PublicDestroyHandle ();
+			Assert.IsFalse (child1.IsHandleCreated, "A5");
+
+			SetUp ();
+			child1.PublicGetAccessibilityObjectById (0);
+			Assert.IsFalse (child1.IsHandleCreated, "A6");
+#if !__MonoCS__
+			SetUp ();
+			child1.PublicGetAutoSizeMode ();
+			Assert.IsFalse (child1.IsHandleCreated, "A7");
+
+			SetUp ();
+			child1.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
+			Assert.IsFalse (child1.IsHandleCreated, "A8");
+#endif
+			SetUp ();
+			child1.PublicGetStyle (ControlStyles.FixedHeight);
+			Assert.IsFalse (child1.IsHandleCreated, "A9");
+
+			SetUp ();
+			child1.PublicGetTopLevel ();
+			Assert.IsFalse (child1.IsHandleCreated, "A10");
+
+			SetUp ();
+			child1.PublicInitLayout ();
+			Assert.IsFalse (child1.IsHandleCreated, "A11");
+
+			SetUp ();
+			child1.PublicInvokeGotFocus (child1, EventArgs.Empty);
+			Assert.IsFalse (child1.IsHandleCreated, "A12");
+
+			SetUp ();
+			child1.PublicInvokeLostFocus (child1, EventArgs.Empty);
+			Assert.IsFalse (child1.IsHandleCreated, "A13");
+
+			SetUp ();
+			child1.PublicInvokeOnClick (child1, EventArgs.Empty);
+			Assert.IsFalse (child1.IsHandleCreated, "A14");
+
+			SetUp ();
+			child1.PublicInvokePaint (child1, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
+			Assert.IsFalse (child1.IsHandleCreated, "A15");
+
+			SetUp ();
+			child1.PublicInvokePaintBackground (child1, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
+			Assert.IsFalse (child1.IsHandleCreated, "A16");
+
+			SetUp ();
+			child1.PublicIsInputChar ('c');
+			Assert.IsTrue (child1.IsHandleCreated, "A17");
+
+			SetUp ();
+			child1.PublicIsInputKey (Keys.B);
+			Assert.IsFalse (child1.IsHandleCreated, "A18");
+
+			SetUp ();
+			child1.PublicNotifyInvalidate (Rectangle.Empty);
+			Assert.IsFalse (child1.IsHandleCreated, "A19");
+
+			SetUp ();
+			child1.PublicOnVisibleChanged (EventArgs.Empty);
+			Assert.IsFalse (child1.IsHandleCreated, "A20");
+
+			SetUp ();
+			child1.PublicRaiseDragEvent (null, null);
+			Assert.IsFalse (child1.IsHandleCreated, "A21");
+
+			SetUp ();
+			child1.PublicRaiseKeyEvent (null, null);
+			Assert.IsFalse (child1.IsHandleCreated, "A22");
+
+			SetUp ();
+			child1.PublicRaiseMouseEvent (null, null);
+			Assert.IsFalse (child1.IsHandleCreated, "A23");
+
+			SetUp ();
+			child1.PublicRaisePaintEvent (null, null);
+			Assert.IsFalse (child1.IsHandleCreated, "A24");
+
+			SetUp ();
+			child1.PublicRecreateHandle ();
+			Assert.IsFalse (child1.IsHandleCreated, "A25");
+
+			SetUp ();
+			child1.PublicResetMouseEventArgs ();
+			Assert.IsFalse (child1.IsHandleCreated, "A26");
+
+			SetUp ();
+			child1.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
+			Assert.IsFalse (child1.IsHandleCreated, "A27");
+
+			SetUp ();
+			child1.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
+			Assert.IsFalse (child1.IsHandleCreated, "A28");
+
+			SetUp ();
+			child1.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
+			Assert.IsFalse (child1.IsHandleCreated, "A29");
+
+			SetUp ();
+			child1.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
+			Assert.IsFalse (child1.IsHandleCreated, "A30");
+#if !__MonoCS__
+			SetUp ();
+			child1.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
+			Assert.IsFalse (child1.IsHandleCreated, "A31");
+#endif
+			SetUp ();
+			child1.PublicScaleCore (1.5f, 1.5f);
+			Assert.IsFalse (child1.IsHandleCreated, "A32");
+
+			SetUp ();
+			child1.PublicSelect ();
+			Assert.IsTrue (child1.IsHandleCreated, "A33");
+			
+#if !__MonoCS__
+			SetUp ();
+			child1.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
+			Assert.IsFalse (child1.IsHandleCreated, "A34");
+#endif
+			SetUp ();
+			child1.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
+			Assert.IsFalse (child1.IsHandleCreated, "A35");
+
+			SetUp ();
+			child1.PublicSetClientSizeCore (122, 122);
+			Assert.IsFalse (child1.IsHandleCreated, "A36");
+
+			SetUp ();
+			child1.PublicSetStyle (ControlStyles.FixedHeight, true);
+			Assert.IsFalse (child1.IsHandleCreated, "A37");
+
+			try {
+				SetUp ();
+				child1.PublicSetTopLevel (true);
+				Assert.Fail ("A38, expected ArgumentException, got no exception");
+			} catch (ArgumentException ex) {
+				TestHelper.RemoveWarning (ex);
+			} catch (Exception ex) {
+				Assert.Fail ("A38, expected ArgumentException, got " + ex.GetType ().Name);
+			} finally {
+				Assert.IsFalse (child1.IsHandleCreated, "A38");
+			}
+
+			SetUp ();
+			child1.PublicSetVisibleCore (true);
+			Assert.IsTrue (child1.IsHandleCreated, "A39");
+			SetUp ();
+			child1.PublicSizeFromClientSize (new Size (160, 160));
+			Assert.IsFalse (child1.IsHandleCreated, "A40");
+
+			SetUp ();
+			child1.PublicUpdateBounds ();
+			Assert.IsFalse (child1.IsHandleCreated, "A41");
+
+			SetUp ();
+			child1.PublicUpdateStyles ();
+			Assert.IsFalse (child1.IsHandleCreated, "A42");
+
+			SetUp ();
+			child1.PublicUpdateZOrder ();
+			Assert.IsFalse (child1.IsHandleCreated, "A43");
+
+
+			// Form
+
+			SetUp ();
+			main.PublicActivateMdiChild (child1);
+			main.PublicActivateMdiChild (child2);
+			Assert.IsFalse (child1.IsHandleCreated, "F1-a");
+			Assert.IsFalse (child2.IsHandleCreated, "F1-b");
+
+			SetUp ();
+			child1.PublicAdjustFormScrollbars (true);
+			Assert.IsFalse (child1.IsHandleCreated, "F2");
+
+			SetUp ();
+			child1.PublicCenterToParent ();
+			Assert.IsFalse (child1.IsHandleCreated, "F3");
+
+			SetUp ();
+			child1.PublicCenterToScreen ();
+			Assert.IsFalse (child1.IsHandleCreated, "F4");
+
+			SetUp ();
+			child1.PublicGetScrollState (1);
+			Assert.IsFalse (child1.IsHandleCreated, "F5");
+
+			SetUp ();
+			child1.PublicGetService (typeof (int));
+			Assert.IsFalse (child1.IsHandleCreated, "F6");
+
+			SetUp ();
+			Message m = new Message ();
+			child1.PublicProcessCmdKey (ref m, Keys.C);
+			Assert.IsFalse (child1.IsHandleCreated, "F7");
+
+			SetUp ();
+			child1.PublicProcessDialogChar ('p');
+			Assert.IsFalse (child1.IsHandleCreated, "F8");
+
+			SetUp ();
+			child1.PublicProcessDialogKey (Keys.D);
+			Assert.IsFalse (child1.IsHandleCreated, "F9");
+
+			SetUp ();
+			child1.PublicProcessKeyEventArgs (ref m);
+			Assert.IsFalse (child1.IsHandleCreated, "F10");
+
+			SetUp ();
+			child1.PublicProcessKeyMessage (ref m);
+			Assert.IsFalse (child1.IsHandleCreated, "F11");
+
+			SetUp ();
+			child1.PublicProcessKeyPreview (ref m);
+			Assert.IsFalse (child1.IsHandleCreated, "F12");
+
+			SetUp ();
+			child1.PublicProcessMnemonic ('Z');
+			Assert.IsFalse (child1.IsHandleCreated, "F13");
+
+			SetUp ();
+			child1.PublicProcessTabKey (true);
+			Assert.IsFalse (child1.IsHandleCreated, "F14");
+
+#if !__MonoCS__
+			SetUp ();
+			child1.Controls.Add (new Control ());
+			child1.PublicScrollToControl (child1.Controls [0]);
+			Assert.IsFalse (child1.IsHandleCreated, "F15");
+#endif
+
+			SetUp ();
+			child1.PublicSelect (true, true);
+			Assert.IsTrue (child1.IsHandleCreated, "F16");
+
+			SetUp ();
+			child1.PublicSetDisplayRectLocation (13, 17);
+			Assert.IsFalse (child1.IsHandleCreated, "F17");
+
+			SetUp ();
+			child1.PublicSetScrollState (5, false);
+			Assert.IsFalse (child1.IsHandleCreated, "F18");
+
+			SetUp ();
+			child1.PublicUpdateDefaultButton (3, false);
+			Assert.IsFalse (child1.IsHandleCreated, "F19");
+		}
+
+		private class ProtectedForm : Form
+		{
+			// Properties
+			public SizeF PublicAutoScaleFactor { get { return base.AutoScaleFactor; } } 
+#if !__MonoCS__
+			public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
+#endif
+			public CreateParams PublicCreateParams { get { return base.CreateParams; } }
+			public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
+			public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
+			public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
+			public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
+			public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
+			public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
+			public Size PublicDefaultSize { get { return base.DefaultSize; } }
+			public bool PublicDesignMode { get {return base.DesignMode; } }
+			public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
+			public EventHandlerList PublicEvents { get {return base.Events; } }			
+			public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
+			public bool PublicHScroll { get {return base.HScroll; } set { base.HScroll = value;} }
+			public Rectangle PublicMaximizedBounds { get {return base.MaximizedBounds; } set { base.MaximizedBounds = value; }}
+			public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
+			public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
+#if !__MonoCS__
+			public bool PublicScaleChildren { get { return base.ScaleChildren; } }
+#endif
+			public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
+			public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }
+			public bool PublicShowWithoutActivation { get { return base.ShowWithoutActivation; } } 
+			public bool PublicVScroll { get { return base.VScroll; } set { base.VScroll = value; } }
+			
+			
+			// Methods
+			public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }
+			public void PublicActivateMdiChild (Form form) { base.ActivateMdiChild (form); }
+			public void PublicAdjustFormScrollbars (bool displayScrollbars) {base.AdjustFormScrollbars (displayScrollbars); }
+			public void PublicCenterToParent () { base.CenterToParent (); }
+			public void PublicCenterToScreen () { base.CenterToScreen (); }
+			public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }
+			public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
+			public void PublicCreateHandle () { base.CreateHandle (); }
+			public void PublicDestroyHandle () { base.DestroyHandle (); }
+			public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
+#if !__MonoCS__
+			public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
+			public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
+#endif
+			public bool PublicGetScrollState (int bit) { return base.GetScrollState (bit); }
+			public object PublicGetService (Type service) { return base.GetService (service); }
+			public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }
+			public bool PublicGetTopLevel () { return base.GetTopLevel (); }
+			public void PublicInitLayout () { base.InitLayout (); }
+			public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }
+			public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }
+			public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }
+			public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }
+			public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }
+			public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
+			public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
+			public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
+			public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
+			public void PublicProcessCmdKey (ref Message msg, Keys keyData) { base.ProcessCmdKey (ref msg, keyData); }
+			public void PublicProcessDialogChar (char charCode) { base.ProcessDialogChar (charCode); }
+			public void PublicProcessDialogKey (Keys keyData) { base.ProcessDialogKey (keyData); }
+			public void PublicProcessKeyEventArgs (ref Message m) { base.ProcessKeyEventArgs (ref m); }
+			public void PublicProcessKeyMessage (ref Message m) { base.ProcessKeyMessage (ref m); }
+			public void PublicProcessKeyPreview (ref Message m) { base.ProcessKeyPreview (ref m); }
+			public void PublicProcessMnemonic (char charCode) { base.ProcessMnemonic (charCode); }
+			public void PublicProcessTabKey (bool forward) { base.ProcessTabKey (forward); }
+			public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
+			public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
+			public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
+			public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }
+			public void PublicRecreateHandle () { base.RecreateHandle (); }
+			public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }
+			public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }
+			public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
+			public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
+			public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
+#if !__MonoCS__
+			public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
+#endif
+			public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
+#if !__MonoCS__
+			public void PublicScrollToControl (Control activeControl) { base.ScrollToControl (activeControl); } 
+#endif
+			public void PublicSelect () { base.Select (); }
+			public void PublicSelect (bool directed, bool forward) { base.Select (directed, forward); }
+
+#if !__MonoCS__
+			public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
+#endif
+			public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
+			public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }
+			public void PublicSetDisplayRectLocation (int x, int y) { base.SetDisplayRectLocation (x, y); }
+			public void PublicSetScrollState (int bit, bool value) { base.SetScrollState (bit, value); }
+			public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
+			public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
+			public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
+			public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
+			public void PublicUpdateBounds () { base.UpdateBounds (); }
+			public void PublicUpdateDefaultButton (int bit, bool value) { base.UpdateDefaultButton (); }
+			public void PublicUpdateStyles () { base.UpdateStyles (); }
+			public void PublicUpdateZOrder () { base.UpdateZOrder (); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/PanelTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/PanelTest.cs
@@ -1,60 +1,60 @@
-//
-// PanelTest.cs: Test cases for PanelTest.
-//
-// Author:
-//   Jonathan Pobst (monkey@jpobst.com)
-//
-// (C) 2007 Novell, Inc.
-//
-
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class PanelTest : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			Panel p = new Panel ();
-
-			Assert.AreEqual (false, p.AutoSize, "A1");
-			Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "A2");
-			Assert.AreEqual (BorderStyle.None, p.BorderStyle, "A3");
-			Assert.AreEqual (false, p.TabStop, "A4");
-			Assert.AreEqual (string.Empty, p.Text, "A5");
-		}
-
-		[Test]
-		public void AutoSize ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-
-			Panel p = new Panel ();
-			p.AutoSize = true;
-			f.Controls.Add (p);
-			
-			Button b = new Button ();
-			b.Size = new Size (200, 200);
-			b.Location = new Point (200, 200);
-			p.Controls.Add (b);
-
-			f.Show ();
-
-			Assert.AreEqual (new Size (403, 403), p.ClientSize, "A1");
-			
-			p.Controls.Remove (b);
-			Assert.AreEqual (new Size (200, 100), p.ClientSize, "A2");
-			
-			p.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			Assert.AreEqual (new Size (0, 0), p.ClientSize, "A3");
-			f.Dispose ();
-		}
-	}
-}
+//
+// PanelTest.cs: Test cases for PanelTest.
+//
+// Author:
+//   Jonathan Pobst (monkey@jpobst.com)
+//
+// (C) 2007 Novell, Inc.
+//
+
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class PanelTest : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			Panel p = new Panel ();
+
+			Assert.AreEqual (false, p.AutoSize, "A1");
+			Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "A2");
+			Assert.AreEqual (BorderStyle.None, p.BorderStyle, "A3");
+			Assert.AreEqual (false, p.TabStop, "A4");
+			Assert.AreEqual (string.Empty, p.Text, "A5");
+		}
+
+		[Test]
+		public void AutoSize ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+
+			Panel p = new Panel ();
+			p.AutoSize = true;
+			f.Controls.Add (p);
+			
+			Button b = new Button ();
+			b.Size = new Size (200, 200);
+			b.Location = new Point (200, 200);
+			p.Controls.Add (b);
+
+			f.Show ();
+
+			Assert.AreEqual (new Size (403, 403), p.ClientSize, "A1");
+			
+			p.Controls.Remove (b);
+			Assert.AreEqual (new Size (200, 100), p.ClientSize, "A2");
+			
+			p.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			Assert.AreEqual (new Size (0, 0), p.ClientSize, "A3");
+			f.Dispose ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/SendKeysTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/SendKeysTest.cs
@@ -1,249 +1,249 @@
-/**
- * SendKeysTest.cs: Test cases for SendKeys
- * 
- * These tests can only run in ms.net one at a time.
- * Since ms.net apparently hooks the keyboard to 
- * implement this, running two tests in a row
- * makes the second test run before the hook
- * of the first test is released, effectively
- * hanging the keyboard. CTRL-ALT-DEL releases
- * the keyboard, but the test still hangs.
- * Running each test separately works.
- * 
- * Author:
- *		Andreia Gaita (avidigal@novell.com)
- * 
- * (C) 2005 Novell, Inc. (http://www.novell.com)
- * 
-*/ 
-
-using System;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Reflection;
-using System.Text;
-using System.Collections;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]	
-	[Category("NotDotNet")]
-	[Category("NotWithXvfb")]
-	[Category("Interactive")]
-	public class SendKeysTest  : TestHelper {
-
-		static Queue keys = new Queue();
-
-		internal struct Keys {
-			public string key;
-			public bool up;
-			public bool shift;
-			public bool ctrl;
-			public bool alt;
-
-			public Keys(string key, bool up, bool shift, bool ctrl, bool alt) {
-				this.key = key;
-				this.up = up;
-				this.shift = shift;
-				this.ctrl = ctrl;
-				this.alt = alt;
-			}
-		}
-
-		internal class Custom: TextBox {
-
-			protected override void OnKeyDown(KeyEventArgs e) {
-				keys.Enqueue(new Keys(e.KeyData.ToString(), false, e.Shift, e.Control, e.Alt));
-				base.OnKeyDown (e);
-			}
-
-			protected override void OnKeyUp(KeyEventArgs e) {
-				keys.Enqueue(new Keys(e.KeyData.ToString(), true, e.Shift, e.Control, e.Alt));
-				base.OnKeyUp (e);
-			}
-		}
-
-		
-		
-		public SendKeysTest() {
-		}
-
-		Form f;
-		Timer t;
-		Custom c;
-
-		[Test]
-		public void SendKeysTest1() {
-			f = new Form();
-			f.Activated +=new EventHandler(SendKeysTest1_activated);
-			c = new Custom();
-			f.Controls.Add(c);
-			Application.Run(f);
-			c.Dispose();
-		}
-
-		private void SendKeysTest1_activated(object sender, EventArgs e) {
-			SendKeys.SendWait("a");
-
-			t = new  Timer();
-			t.Interval = 1;
-			t.Tick +=new EventHandler(SendKeysTest1_tick);
-			t.Start();
-			
-		}
-
-		private void SendKeysTest1_tick(object sender, EventArgs e) {
-			if (f.InvokeRequired) {
-				f.Invoke (new EventHandler (SendKeysTest1_tick), new object [] { sender, e });
-				return;
-			}
-			t.Stop();
-			Assert.AreEqual(2, keys.Count, "#A1");
-			Keys k = (Keys)keys.Dequeue();
-			Assert.IsFalse(k.up, "#A2");
-			Assert.IsFalse(k.shift, "#A3");
-			Assert.IsFalse(k.ctrl, "#A4");
-			Assert.IsFalse(k.alt, "#A5");
-			Assert.AreEqual("A", k.key, "#A6");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsTrue(k.up, "#A2");
-			Assert.IsFalse(k.shift, "#A3");
-			Assert.IsFalse(k.ctrl, "#A4");
-			Assert.IsFalse(k.alt, "#A5");
-			Assert.AreEqual("A", k.key, "#A6");
-			
-			t.Dispose();
-			f.Close ();
-		}
-
-		[SetUp]
-		protected override void SetUp () {
-			keys.Clear();
-			base.SetUp ();
-		}
-
-
-		[Test]
-		public void SendKeysTest2() {
-			f = new Form();
-			f.Activated +=new EventHandler(SendKeysTest2_activated);
-			c = new Custom();
-			f.Controls.Add(c);
-			Application.Run(f);
-			c.Dispose();
-		}
-
-
-		private void SendKeysTest2_activated(object sender, EventArgs e) {
-			SendKeys.SendWait("+(abc){BACKSPACE 2}");
-
-			t = new Timer();
-			t.Interval = 1;
-			t.Tick +=new EventHandler(SendKeysTest2_tick);
-			t.Start();
-			
-		}
-
-		private void SendKeysTest2_tick(object sender, EventArgs e) {
-			t.Stop();
-			if (f.InvokeRequired) {
-				f.Invoke (new EventHandler (SendKeysTest2_tick), new object [] {sender, e});
-				return;
-			}
-			Assert.AreEqual(12, keys.Count, "#A1");
-
-			Keys k = (Keys)keys.Dequeue();
-			Assert.IsFalse(k.up, "#A2");
-			Assert.IsTrue(k.shift, "#A3");
-			Assert.IsFalse(k.ctrl, "#A4");
-			Assert.IsFalse(k.alt, "#A5");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsFalse(k.up, "#A7");
-			Assert.IsTrue(k.shift, "#A8");
-			Assert.IsFalse(k.ctrl, "#A9");
-			Assert.IsFalse(k.alt, "#A10");
-			Assert.AreEqual("A, Shift", k.key, "#A11");
-			
-			k = (Keys)keys.Dequeue();
-			Assert.IsTrue(k.up, "#A12");
-			Assert.IsTrue(k.shift, "#A13");
-			Assert.IsFalse(k.ctrl, "#A14");
-			Assert.IsFalse(k.alt, "#A15");
-			Assert.AreEqual("A, Shift", k.key, "#A16");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsFalse(k.up, "#A17");
-			Assert.IsTrue(k.shift, "#A18");
-			Assert.IsFalse(k.ctrl, "#A19");
-			Assert.IsFalse(k.alt, "#A20");
-			Assert.AreEqual("B, Shift", k.key, "#A21");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsTrue(k.up, "#A22");
-			Assert.IsTrue(k.shift, "#A23");
-			Assert.IsFalse(k.ctrl, "#A24");
-			Assert.IsFalse(k.alt, "#A25");
-			Assert.AreEqual("B, Shift", k.key, "#A26");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsFalse(k.up, "#A27");
-			Assert.IsTrue(k.shift, "#A28");
-			Assert.IsFalse(k.ctrl, "#A28");
-			Assert.IsFalse(k.alt, "#A29");
-			Assert.AreEqual("C, Shift", k.key, "#A30");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsTrue(k.up, "#A31");
-			Assert.IsTrue(k.shift, "#A32");
-			Assert.IsFalse(k.ctrl, "#A33");
-			Assert.IsFalse(k.alt, "#A34");
-			Assert.AreEqual("C, Shift", k.key, "#A35");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsTrue(k.up, "#A36");
-			Assert.IsFalse(k.shift, "#A37");
-			Assert.IsFalse(k.ctrl, "#A38");
-			Assert.IsFalse(k.alt, "#A39");
-			Assert.AreEqual("ShiftKey", k.key, "#A40");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsFalse(k.up, "#b1");
-			Assert.IsFalse(k.shift, "#b2");
-			Assert.IsFalse(k.ctrl, "#b3");
-			Assert.IsFalse(k.alt, "#b4");
-			Assert.AreEqual("Back", k.key, "#b5");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsTrue(k.up, "#b6");
-			Assert.IsFalse(k.shift, "#b7");
-			Assert.IsFalse(k.ctrl, "#b8");
-			Assert.IsFalse(k.alt, "#b9");
-			Assert.AreEqual("Back", k.key, "#b10");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsFalse(k.up, "#c1");
-			Assert.IsFalse(k.shift, "#c2");
-			Assert.IsFalse(k.ctrl, "#c3");
-			Assert.IsFalse(k.alt, "#c4");
-			Assert.AreEqual("Back", k.key, "#c5");
-
-			k = (Keys)keys.Dequeue();
-			Assert.IsTrue(k.up, "#c6");
-			Assert.IsFalse(k.shift, "#c7");
-			Assert.IsFalse(k.ctrl, "#c8");
-			Assert.IsFalse(k.alt, "#c9");
-			Assert.AreEqual("Back", k.key, "#c10");
-
-			Assert.AreEqual(0, keys.Count, "#d1");
-
-			Assert.AreEqual("A", c.Text, "#e1");
-
-			t.Dispose();
-			f.Close ();
-		}
-
-	}
-}
+/**
+ * SendKeysTest.cs: Test cases for SendKeys
+ * 
+ * These tests can only run in ms.net one at a time.
+ * Since ms.net apparently hooks the keyboard to 
+ * implement this, running two tests in a row
+ * makes the second test run before the hook
+ * of the first test is released, effectively
+ * hanging the keyboard. CTRL-ALT-DEL releases
+ * the keyboard, but the test still hangs.
+ * Running each test separately works.
+ * 
+ * Author:
+ *		Andreia Gaita (avidigal@novell.com)
+ * 
+ * (C) 2005 Novell, Inc. (http://www.novell.com)
+ * 
+*/ 
+
+using System;
+using System.Windows.Forms;
+using System.Drawing;
+using System.Reflection;
+using System.Text;
+using System.Collections;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]	
+	[Category("NotDotNet")]
+	[Category("NotWithXvfb")]
+	[Category("Interactive")]
+	public class SendKeysTest  : TestHelper {
+
+		static Queue keys = new Queue();
+
+		internal struct Keys {
+			public string key;
+			public bool up;
+			public bool shift;
+			public bool ctrl;
+			public bool alt;
+
+			public Keys(string key, bool up, bool shift, bool ctrl, bool alt) {
+				this.key = key;
+				this.up = up;
+				this.shift = shift;
+				this.ctrl = ctrl;
+				this.alt = alt;
+			}
+		}
+
+		internal class Custom: TextBox {
+
+			protected override void OnKeyDown(KeyEventArgs e) {
+				keys.Enqueue(new Keys(e.KeyData.ToString(), false, e.Shift, e.Control, e.Alt));
+				base.OnKeyDown (e);
+			}
+
+			protected override void OnKeyUp(KeyEventArgs e) {
+				keys.Enqueue(new Keys(e.KeyData.ToString(), true, e.Shift, e.Control, e.Alt));
+				base.OnKeyUp (e);
+			}
+		}
+
+		
+		
+		public SendKeysTest() {
+		}
+
+		Form f;
+		Timer t;
+		Custom c;
+
+		[Test]
+		public void SendKeysTest1() {
+			f = new Form();
+			f.Activated +=new EventHandler(SendKeysTest1_activated);
+			c = new Custom();
+			f.Controls.Add(c);
+			Application.Run(f);
+			c.Dispose();
+		}
+
+		private void SendKeysTest1_activated(object sender, EventArgs e) {
+			SendKeys.SendWait("a");
+
+			t = new  Timer();
+			t.Interval = 1;
+			t.Tick +=new EventHandler(SendKeysTest1_tick);
+			t.Start();
+			
+		}
+
+		private void SendKeysTest1_tick(object sender, EventArgs e) {
+			if (f.InvokeRequired) {
+				f.Invoke (new EventHandler (SendKeysTest1_tick), new object [] { sender, e });
+				return;
+			}
+			t.Stop();
+			Assert.AreEqual(2, keys.Count, "#A1");
+			Keys k = (Keys)keys.Dequeue();
+			Assert.IsFalse(k.up, "#A2");
+			Assert.IsFalse(k.shift, "#A3");
+			Assert.IsFalse(k.ctrl, "#A4");
+			Assert.IsFalse(k.alt, "#A5");
+			Assert.AreEqual("A", k.key, "#A6");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsTrue(k.up, "#A2");
+			Assert.IsFalse(k.shift, "#A3");
+			Assert.IsFalse(k.ctrl, "#A4");
+			Assert.IsFalse(k.alt, "#A5");
+			Assert.AreEqual("A", k.key, "#A6");
+			
+			t.Dispose();
+			f.Close ();
+		}
+
+		[SetUp]
+		protected override void SetUp () {
+			keys.Clear();
+			base.SetUp ();
+		}
+
+
+		[Test]
+		public void SendKeysTest2() {
+			f = new Form();
+			f.Activated +=new EventHandler(SendKeysTest2_activated);
+			c = new Custom();
+			f.Controls.Add(c);
+			Application.Run(f);
+			c.Dispose();
+		}
+
+
+		private void SendKeysTest2_activated(object sender, EventArgs e) {
+			SendKeys.SendWait("+(abc){BACKSPACE 2}");
+
+			t = new Timer();
+			t.Interval = 1;
+			t.Tick +=new EventHandler(SendKeysTest2_tick);
+			t.Start();
+			
+		}
+
+		private void SendKeysTest2_tick(object sender, EventArgs e) {
+			t.Stop();
+			if (f.InvokeRequired) {
+				f.Invoke (new EventHandler (SendKeysTest2_tick), new object [] {sender, e});
+				return;
+			}
+			Assert.AreEqual(12, keys.Count, "#A1");
+
+			Keys k = (Keys)keys.Dequeue();
+			Assert.IsFalse(k.up, "#A2");
+			Assert.IsTrue(k.shift, "#A3");
+			Assert.IsFalse(k.ctrl, "#A4");
+			Assert.IsFalse(k.alt, "#A5");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsFalse(k.up, "#A7");
+			Assert.IsTrue(k.shift, "#A8");
+			Assert.IsFalse(k.ctrl, "#A9");
+			Assert.IsFalse(k.alt, "#A10");
+			Assert.AreEqual("A, Shift", k.key, "#A11");
+			
+			k = (Keys)keys.Dequeue();
+			Assert.IsTrue(k.up, "#A12");
+			Assert.IsTrue(k.shift, "#A13");
+			Assert.IsFalse(k.ctrl, "#A14");
+			Assert.IsFalse(k.alt, "#A15");
+			Assert.AreEqual("A, Shift", k.key, "#A16");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsFalse(k.up, "#A17");
+			Assert.IsTrue(k.shift, "#A18");
+			Assert.IsFalse(k.ctrl, "#A19");
+			Assert.IsFalse(k.alt, "#A20");
+			Assert.AreEqual("B, Shift", k.key, "#A21");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsTrue(k.up, "#A22");
+			Assert.IsTrue(k.shift, "#A23");
+			Assert.IsFalse(k.ctrl, "#A24");
+			Assert.IsFalse(k.alt, "#A25");
+			Assert.AreEqual("B, Shift", k.key, "#A26");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsFalse(k.up, "#A27");
+			Assert.IsTrue(k.shift, "#A28");
+			Assert.IsFalse(k.ctrl, "#A28");
+			Assert.IsFalse(k.alt, "#A29");
+			Assert.AreEqual("C, Shift", k.key, "#A30");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsTrue(k.up, "#A31");
+			Assert.IsTrue(k.shift, "#A32");
+			Assert.IsFalse(k.ctrl, "#A33");
+			Assert.IsFalse(k.alt, "#A34");
+			Assert.AreEqual("C, Shift", k.key, "#A35");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsTrue(k.up, "#A36");
+			Assert.IsFalse(k.shift, "#A37");
+			Assert.IsFalse(k.ctrl, "#A38");
+			Assert.IsFalse(k.alt, "#A39");
+			Assert.AreEqual("ShiftKey", k.key, "#A40");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsFalse(k.up, "#b1");
+			Assert.IsFalse(k.shift, "#b2");
+			Assert.IsFalse(k.ctrl, "#b3");
+			Assert.IsFalse(k.alt, "#b4");
+			Assert.AreEqual("Back", k.key, "#b5");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsTrue(k.up, "#b6");
+			Assert.IsFalse(k.shift, "#b7");
+			Assert.IsFalse(k.ctrl, "#b8");
+			Assert.IsFalse(k.alt, "#b9");
+			Assert.AreEqual("Back", k.key, "#b10");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsFalse(k.up, "#c1");
+			Assert.IsFalse(k.shift, "#c2");
+			Assert.IsFalse(k.ctrl, "#c3");
+			Assert.IsFalse(k.alt, "#c4");
+			Assert.AreEqual("Back", k.key, "#c5");
+
+			k = (Keys)keys.Dequeue();
+			Assert.IsTrue(k.up, "#c6");
+			Assert.IsFalse(k.shift, "#c7");
+			Assert.IsFalse(k.ctrl, "#c8");
+			Assert.IsFalse(k.alt, "#c9");
+			Assert.AreEqual("Back", k.key, "#c10");
+
+			Assert.AreEqual(0, keys.Count, "#d1");
+
+			Assert.AreEqual("A", c.Text, "#e1");
+
+			t.Dispose();
+			f.Close ();
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/SplitContainerTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/SplitContainerTests.cs
@@ -1,310 +1,310 @@
-using System;
-using NUnit.Framework;
-using System.Windows.Forms;
-using System.Drawing;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class SplitContainerTests : TestHelper
-	{
-		[Test]
-		public void TestSplitContainerConstruction ()
-		{
-			SplitContainer sc = new SplitContainer ();
-
-			Assert.AreEqual (new Size (150, 100), sc.Size, "A1");
-			Assert.AreEqual (FixedPanel.None, sc.FixedPanel, "A2");
-			Assert.AreEqual (false, sc.IsSplitterFixed, "A3");
-			Assert.AreEqual (Orientation.Vertical, sc.Orientation, "A4");
-			Assert.AreEqual (false, sc.Panel1Collapsed, "A6");
-			Assert.AreEqual (25, sc.Panel1MinSize, "A7");
-			Assert.AreEqual (false, sc.Panel2Collapsed, "A9");
-			Assert.AreEqual (25, sc.Panel2MinSize, "A10");
-			Assert.AreEqual (50, sc.SplitterDistance, "A11");
-			Assert.AreEqual (1, sc.SplitterIncrement, "A12");
-			Assert.AreEqual (new Rectangle(50, 0, 4, 100), sc.SplitterRectangle, "A13");
-			Assert.AreEqual (4, sc.SplitterWidth, "A14");
-			Assert.AreEqual (BorderStyle.None, sc.BorderStyle, "A14");
-			Assert.AreEqual (DockStyle.None, sc.Dock, "A15");
-		}
-		
-		[Test]
-		public void TestProperties ()
-		{
-			SplitContainer sc = new SplitContainer ();
-			
-			sc.BorderStyle = BorderStyle.FixedSingle;
-			Assert.AreEqual (BorderStyle.FixedSingle, sc.BorderStyle, "C1");
-
-			sc.Dock =  DockStyle.Fill;
-			Assert.AreEqual (DockStyle.Fill, sc.Dock, "C2");
-
-			sc.FixedPanel = FixedPanel.Panel1;
-			Assert.AreEqual (FixedPanel.Panel1, sc.FixedPanel, "C3");
-
-			sc.IsSplitterFixed = true;
-			Assert.AreEqual (true, sc.IsSplitterFixed, "C4");
-
-			sc.Orientation = Orientation.Horizontal;
-			Assert.AreEqual (Orientation.Horizontal, sc.Orientation, "C5");
-
-			sc.Panel1Collapsed = true;
-			Assert.AreEqual (true, sc.Panel1Collapsed, "C6");
-			
-			sc.Panel1MinSize = 10;
-			Assert.AreEqual (10, sc.Panel1MinSize, "C7");
-
-			sc.Panel2Collapsed = true;
-			Assert.AreEqual (true, sc.Panel2Collapsed, "C8");
-
-			sc.Panel2MinSize = 10;
-			Assert.AreEqual (10, sc.Panel2MinSize, "C9");
-
-			sc.SplitterDistance = 77;
-			Assert.AreEqual (77, sc.SplitterDistance, "C10");
-			
-			sc.SplitterIncrement = 5;
-			Assert.AreEqual (5, sc.SplitterIncrement, "C11");
-			
-			sc.SplitterWidth = 10;
-			Assert.AreEqual (10, sc.SplitterWidth, "C12");
-		}
-		
-		[Test]
-		public void TestPanelProperties ()
-		{
-			SplitContainer sc = new SplitContainer ();
-			SplitterPanel p = sc.Panel1;
-
-			Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "D1");
-			p.Anchor = AnchorStyles.None;
-			Assert.AreEqual (AnchorStyles.None, p.Anchor, "D1-2");
-
-			Assert.AreEqual (false, p.AutoSize, "D2");
-			p.AutoSize = true;
-			Assert.AreEqual (true, p.AutoSize, "D2-2");
-
-			Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3");
-			p.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3-2");
-
-			Assert.AreEqual (BorderStyle.None, p.BorderStyle, "D4");
-			p.BorderStyle = BorderStyle.FixedSingle;
-			Assert.AreEqual (BorderStyle.FixedSingle, p.BorderStyle, "D4-2");
-
-			Assert.AreEqual (DockStyle.None, p.Dock, "D5");
-			p.Dock = DockStyle.Left;
-			Assert.AreEqual (DockStyle.Left, p.Dock, "D5-2");
-
-			Assert.AreEqual (new Point (0, 0), p.Location, "D7");
-			p.Location = new Point (10, 10);
-			Assert.AreEqual (new Point (0, 0), p.Location, "D7-2");
-
-			Assert.AreEqual (new Size (0, 0), p.MaximumSize, "D8");
-			p.MaximumSize = new Size (10, 10);
-			Assert.AreEqual (new Size (10, 10), p.MaximumSize, "D8-2");
-
-			Assert.AreEqual (new Size (0, 0), p.MinimumSize, "D9");
-			p.MinimumSize = new Size (10, 10);
-			Assert.AreEqual (new Size (10, 10), p.MinimumSize, "D9-2");
-
-			Assert.AreEqual (String.Empty, p.Name, "D10");
-			p.Name = "MyPanel";
-			Assert.AreEqual ("MyPanel", p.Name, "D10-2");
-
-			// We set a new max/min size above, so let's start over with new controls
-			sc = new SplitContainer();
-			p = sc.Panel1;
-
-			Assert.AreEqual (new Size (50, 100), p.Size, "D12");
-			p.Size = new Size (10, 10);
-			Assert.AreEqual (new Size (50, 100), p.Size, "D12-2");
-
-			//Assert.AreEqual (0, p.TabIndex, "D13");
-			p.TabIndex = 4;
-			Assert.AreEqual (4, p.TabIndex, "D13-2");
-
-			Assert.AreEqual (false, p.TabStop, "D14");
-			p.TabStop = true;
-			Assert.AreEqual (true, p.TabStop, "D14-2");
-
-			Assert.AreEqual (true, p.Visible, "D15");
-			p.Visible = false;
-			Assert.AreEqual (false, p.Visible, "D15-2");
-		}
-		
-		[Test]
-		[ExpectedException (typeof (NotSupportedException))]
-		public void TestPanelHeightProperty ()
-		{
-			SplitContainer sc = new SplitContainer ();
-			SplitterPanel p = sc.Panel1;
-
-			Assert.AreEqual (100, p.Height, "E1");
-			
-			p.Height = 200;
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotSupportedException))]
-		public void TestPanelWidthProperty ()
-		{
-			SplitContainer sc = new SplitContainer ();
-			SplitterPanel p = sc.Panel1;
-
-			Assert.AreEqual (50, p.Width, "F1");
-
-			p.Width = 200;
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotSupportedException))]
-		public void TestPanelParentProperty ()
-		{
-			SplitContainer sc = new SplitContainer ();
-			SplitContainer sc2 = new SplitContainer ();
-			SplitterPanel p = sc.Panel1;
-
-			Assert.AreEqual (sc, p.Parent, "G1");
-
-			p.Parent = sc2;
-		}
-
-		[Test]
-		public void TestSplitterPosition ()
-		{
-			SplitContainer sc = new SplitContainer ();
-
-			Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "H1");
-			
-			sc.Orientation = Orientation.Horizontal;
-			Assert.AreEqual (new Rectangle (0, 50, 150, 4), sc.SplitterRectangle, "H2");
-		}
-
-		[Test]
-		public void TestFixedPanelNone ()
-		{
-			SplitContainer sc = new SplitContainer ();
-
-			Assert.AreEqual (50, sc.SplitterDistance, "I1");
-
-			sc.Width = 300;
-			Assert.AreEqual (100, sc.SplitterDistance, "I2");
-		}
-		
-		[Test]
-		public void TestFixedPanel1 ()
-		{
-			SplitContainer sc = new SplitContainer ();
-			sc.FixedPanel = FixedPanel.Panel1;
-			
-			Assert.AreEqual (50, sc.SplitterDistance, "J1");
-
-			sc.Width = 300;
-			Assert.AreEqual (50, sc.SplitterDistance, "J2");
-		}
-		
-		[Test]
-		public void TestFixedPanel2 ()
-		{
-			SplitContainer sc = new SplitContainer ();
-			sc.FixedPanel = FixedPanel.Panel2;
-
-			Assert.AreEqual (50, sc.SplitterDistance, "K1");
-
-			sc.Width = 300;
-			Assert.AreEqual (200, sc.SplitterDistance, "K2");
-		}
-
-		[Test]
-		public void TestSplitterDistance ()
-		{
-			SplitContainer sc = new SplitContainer ();
-
-			Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "L1");
-
-			sc.SplitterDistance = 100;
-			Assert.AreEqual (new Rectangle (100, 0, 4, 100), sc.SplitterRectangle, "L2");
-		}
-
-		[Test]
-		public void TestSplitterWidth ()
-		{
-			SplitContainer sc = new SplitContainer ();
-
-			Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "M1");
-
-			sc.SplitterWidth = 10;
-			Assert.AreEqual (new Rectangle (50, 0, 10, 100), sc.SplitterRectangle, "M2");
-		}
-
-		[Test]
-		public void MethodScaleControl ()
-		{
-			Form f = new Form ();
-
-			PublicSplitContainer gb = new PublicSplitContainer ();
-			gb.Location = new Point (5, 10);
-			f.Controls.Add (gb);
-
-			Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A1");
-
-			gb.PublicScaleControl (new SizeF (2.0f, 2.0f), BoundsSpecified.All);
-			Assert.AreEqual (new Rectangle (10, 20, 300, 200), gb.Bounds, "A2");
-
-			gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Location);
-			Assert.AreEqual (new Rectangle (5, 10, 300, 200), gb.Bounds, "A3");
-
-			gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Size);
-			Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A4");
-
-			gb.PublicScaleControl (new SizeF (3.5f, 3.5f), BoundsSpecified.Size);
-			Assert.AreEqual (new Rectangle (5, 10, 525, 350), gb.Bounds, "A5");
-
-			gb.PublicScaleControl (new SizeF (2.5f, 2.5f), BoundsSpecified.Size);
-			Assert.AreEqual (new Rectangle (5, 10, 1312, 875), gb.Bounds, "A6");
-
-			gb.PublicScaleControl (new SizeF (.2f, .2f), BoundsSpecified.Size);
-			Assert.AreEqual (new Rectangle (5, 10, 262, 175), gb.Bounds, "A7");
-
-			f.Dispose ();
-		}
-
-		[Test]
-		public void ControlStyle ()
-		{
-			PublicSplitContainer epp = new PublicSplitContainer ();
-
-			ControlStyles cs = ControlStyles.ContainerControl;
-			cs |= ControlStyles.UserPaint;
-			cs |= ControlStyles.StandardClick;
-			cs |= ControlStyles.SupportsTransparentBackColor;
-			cs |= ControlStyles.StandardDoubleClick;
-			cs |= ControlStyles.Selectable;
-			cs |= ControlStyles.OptimizedDoubleBuffer;
-			cs |= ControlStyles.UseTextForAccessibility;
-
-			Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");
-		}
-
-		private class PublicSplitContainer : SplitContainer
-		{
-			public void PublicScaleControl (SizeF factor, BoundsSpecified specified)
-			{
-				base.ScaleControl (factor, specified);
-			}
-
-			public ControlStyles GetControlStyles ()
-			{
-				ControlStyles retval = (ControlStyles)0;
-
-				foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
-					if (this.GetStyle (cs) == true)
-						retval |= cs;
-
-				return retval;
-			}
-		}
-	}
-}
+using System;
+using NUnit.Framework;
+using System.Windows.Forms;
+using System.Drawing;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class SplitContainerTests : TestHelper
+	{
+		[Test]
+		public void TestSplitContainerConstruction ()
+		{
+			SplitContainer sc = new SplitContainer ();
+
+			Assert.AreEqual (new Size (150, 100), sc.Size, "A1");
+			Assert.AreEqual (FixedPanel.None, sc.FixedPanel, "A2");
+			Assert.AreEqual (false, sc.IsSplitterFixed, "A3");
+			Assert.AreEqual (Orientation.Vertical, sc.Orientation, "A4");
+			Assert.AreEqual (false, sc.Panel1Collapsed, "A6");
+			Assert.AreEqual (25, sc.Panel1MinSize, "A7");
+			Assert.AreEqual (false, sc.Panel2Collapsed, "A9");
+			Assert.AreEqual (25, sc.Panel2MinSize, "A10");
+			Assert.AreEqual (50, sc.SplitterDistance, "A11");
+			Assert.AreEqual (1, sc.SplitterIncrement, "A12");
+			Assert.AreEqual (new Rectangle(50, 0, 4, 100), sc.SplitterRectangle, "A13");
+			Assert.AreEqual (4, sc.SplitterWidth, "A14");
+			Assert.AreEqual (BorderStyle.None, sc.BorderStyle, "A14");
+			Assert.AreEqual (DockStyle.None, sc.Dock, "A15");
+		}
+		
+		[Test]
+		public void TestProperties ()
+		{
+			SplitContainer sc = new SplitContainer ();
+			
+			sc.BorderStyle = BorderStyle.FixedSingle;
+			Assert.AreEqual (BorderStyle.FixedSingle, sc.BorderStyle, "C1");
+
+			sc.Dock =  DockStyle.Fill;
+			Assert.AreEqual (DockStyle.Fill, sc.Dock, "C2");
+
+			sc.FixedPanel = FixedPanel.Panel1;
+			Assert.AreEqual (FixedPanel.Panel1, sc.FixedPanel, "C3");
+
+			sc.IsSplitterFixed = true;
+			Assert.AreEqual (true, sc.IsSplitterFixed, "C4");
+
+			sc.Orientation = Orientation.Horizontal;
+			Assert.AreEqual (Orientation.Horizontal, sc.Orientation, "C5");
+
+			sc.Panel1Collapsed = true;
+			Assert.AreEqual (true, sc.Panel1Collapsed, "C6");
+			
+			sc.Panel1MinSize = 10;
+			Assert.AreEqual (10, sc.Panel1MinSize, "C7");
+
+			sc.Panel2Collapsed = true;
+			Assert.AreEqual (true, sc.Panel2Collapsed, "C8");
+
+			sc.Panel2MinSize = 10;
+			Assert.AreEqual (10, sc.Panel2MinSize, "C9");
+
+			sc.SplitterDistance = 77;
+			Assert.AreEqual (77, sc.SplitterDistance, "C10");
+			
+			sc.SplitterIncrement = 5;
+			Assert.AreEqual (5, sc.SplitterIncrement, "C11");
+			
+			sc.SplitterWidth = 10;
+			Assert.AreEqual (10, sc.SplitterWidth, "C12");
+		}
+		
+		[Test]
+		public void TestPanelProperties ()
+		{
+			SplitContainer sc = new SplitContainer ();
+			SplitterPanel p = sc.Panel1;
+
+			Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "D1");
+			p.Anchor = AnchorStyles.None;
+			Assert.AreEqual (AnchorStyles.None, p.Anchor, "D1-2");
+
+			Assert.AreEqual (false, p.AutoSize, "D2");
+			p.AutoSize = true;
+			Assert.AreEqual (true, p.AutoSize, "D2-2");
+
+			Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3");
+			p.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3-2");
+
+			Assert.AreEqual (BorderStyle.None, p.BorderStyle, "D4");
+			p.BorderStyle = BorderStyle.FixedSingle;
+			Assert.AreEqual (BorderStyle.FixedSingle, p.BorderStyle, "D4-2");
+
+			Assert.AreEqual (DockStyle.None, p.Dock, "D5");
+			p.Dock = DockStyle.Left;
+			Assert.AreEqual (DockStyle.Left, p.Dock, "D5-2");
+
+			Assert.AreEqual (new Point (0, 0), p.Location, "D7");
+			p.Location = new Point (10, 10);
+			Assert.AreEqual (new Point (0, 0), p.Location, "D7-2");
+
+			Assert.AreEqual (new Size (0, 0), p.MaximumSize, "D8");
+			p.MaximumSize = new Size (10, 10);
+			Assert.AreEqual (new Size (10, 10), p.MaximumSize, "D8-2");
+
+			Assert.AreEqual (new Size (0, 0), p.MinimumSize, "D9");
+			p.MinimumSize = new Size (10, 10);
+			Assert.AreEqual (new Size (10, 10), p.MinimumSize, "D9-2");
+
+			Assert.AreEqual (String.Empty, p.Name, "D10");
+			p.Name = "MyPanel";
+			Assert.AreEqual ("MyPanel", p.Name, "D10-2");
+
+			// We set a new max/min size above, so let's start over with new controls
+			sc = new SplitContainer();
+			p = sc.Panel1;
+
+			Assert.AreEqual (new Size (50, 100), p.Size, "D12");
+			p.Size = new Size (10, 10);
+			Assert.AreEqual (new Size (50, 100), p.Size, "D12-2");
+
+			//Assert.AreEqual (0, p.TabIndex, "D13");
+			p.TabIndex = 4;
+			Assert.AreEqual (4, p.TabIndex, "D13-2");
+
+			Assert.AreEqual (false, p.TabStop, "D14");
+			p.TabStop = true;
+			Assert.AreEqual (true, p.TabStop, "D14-2");
+
+			Assert.AreEqual (true, p.Visible, "D15");
+			p.Visible = false;
+			Assert.AreEqual (false, p.Visible, "D15-2");
+		}
+		
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void TestPanelHeightProperty ()
+		{
+			SplitContainer sc = new SplitContainer ();
+			SplitterPanel p = sc.Panel1;
+
+			Assert.AreEqual (100, p.Height, "E1");
+			
+			p.Height = 200;
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void TestPanelWidthProperty ()
+		{
+			SplitContainer sc = new SplitContainer ();
+			SplitterPanel p = sc.Panel1;
+
+			Assert.AreEqual (50, p.Width, "F1");
+
+			p.Width = 200;
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotSupportedException))]
+		public void TestPanelParentProperty ()
+		{
+			SplitContainer sc = new SplitContainer ();
+			SplitContainer sc2 = new SplitContainer ();
+			SplitterPanel p = sc.Panel1;
+
+			Assert.AreEqual (sc, p.Parent, "G1");
+
+			p.Parent = sc2;
+		}
+
+		[Test]
+		public void TestSplitterPosition ()
+		{
+			SplitContainer sc = new SplitContainer ();
+
+			Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "H1");
+			
+			sc.Orientation = Orientation.Horizontal;
+			Assert.AreEqual (new Rectangle (0, 50, 150, 4), sc.SplitterRectangle, "H2");
+		}
+
+		[Test]
+		public void TestFixedPanelNone ()
+		{
+			SplitContainer sc = new SplitContainer ();
+
+			Assert.AreEqual (50, sc.SplitterDistance, "I1");
+
+			sc.Width = 300;
+			Assert.AreEqual (100, sc.SplitterDistance, "I2");
+		}
+		
+		[Test]
+		public void TestFixedPanel1 ()
+		{
+			SplitContainer sc = new SplitContainer ();
+			sc.FixedPanel = FixedPanel.Panel1;
+			
+			Assert.AreEqual (50, sc.SplitterDistance, "J1");
+
+			sc.Width = 300;
+			Assert.AreEqual (50, sc.SplitterDistance, "J2");
+		}
+		
+		[Test]
+		public void TestFixedPanel2 ()
+		{
+			SplitContainer sc = new SplitContainer ();
+			sc.FixedPanel = FixedPanel.Panel2;
+
+			Assert.AreEqual (50, sc.SplitterDistance, "K1");
+
+			sc.Width = 300;
+			Assert.AreEqual (200, sc.SplitterDistance, "K2");
+		}
+
+		[Test]
+		public void TestSplitterDistance ()
+		{
+			SplitContainer sc = new SplitContainer ();
+
+			Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "L1");
+
+			sc.SplitterDistance = 100;
+			Assert.AreEqual (new Rectangle (100, 0, 4, 100), sc.SplitterRectangle, "L2");
+		}
+
+		[Test]
+		public void TestSplitterWidth ()
+		{
+			SplitContainer sc = new SplitContainer ();
+
+			Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "M1");
+
+			sc.SplitterWidth = 10;
+			Assert.AreEqual (new Rectangle (50, 0, 10, 100), sc.SplitterRectangle, "M2");
+		}
+
+		[Test]
+		public void MethodScaleControl ()
+		{
+			Form f = new Form ();
+
+			PublicSplitContainer gb = new PublicSplitContainer ();
+			gb.Location = new Point (5, 10);
+			f.Controls.Add (gb);
+
+			Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A1");
+
+			gb.PublicScaleControl (new SizeF (2.0f, 2.0f), BoundsSpecified.All);
+			Assert.AreEqual (new Rectangle (10, 20, 300, 200), gb.Bounds, "A2");
+
+			gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Location);
+			Assert.AreEqual (new Rectangle (5, 10, 300, 200), gb.Bounds, "A3");
+
+			gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Size);
+			Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A4");
+
+			gb.PublicScaleControl (new SizeF (3.5f, 3.5f), BoundsSpecified.Size);
+			Assert.AreEqual (new Rectangle (5, 10, 525, 350), gb.Bounds, "A5");
+
+			gb.PublicScaleControl (new SizeF (2.5f, 2.5f), BoundsSpecified.Size);
+			Assert.AreEqual (new Rectangle (5, 10, 1312, 875), gb.Bounds, "A6");
+
+			gb.PublicScaleControl (new SizeF (.2f, .2f), BoundsSpecified.Size);
+			Assert.AreEqual (new Rectangle (5, 10, 262, 175), gb.Bounds, "A7");
+
+			f.Dispose ();
+		}
+
+		[Test]
+		public void ControlStyle ()
+		{
+			PublicSplitContainer epp = new PublicSplitContainer ();
+
+			ControlStyles cs = ControlStyles.ContainerControl;
+			cs |= ControlStyles.UserPaint;
+			cs |= ControlStyles.StandardClick;
+			cs |= ControlStyles.SupportsTransparentBackColor;
+			cs |= ControlStyles.StandardDoubleClick;
+			cs |= ControlStyles.Selectable;
+			cs |= ControlStyles.OptimizedDoubleBuffer;
+			cs |= ControlStyles.UseTextForAccessibility;
+
+			Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");
+		}
+
+		private class PublicSplitContainer : SplitContainer
+		{
+			public void PublicScaleControl (SizeF factor, BoundsSpecified specified)
+			{
+				base.ScaleControl (factor, specified);
+			}
+
+			public ControlStyles GetControlStyles ()
+			{
+				ControlStyles retval = (ControlStyles)0;
+
+				foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
+					if (this.GetStyle (cs) == true)
+						retval |= cs;
+
+				return retval;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/StatusStripTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/StatusStripTest.cs
@@ -1,207 +1,207 @@
-//
-// StatusStripTests.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Novell, Inc.
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-using System.ComponentModel;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class StatusStripTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			Assert.AreEqual (false, ts.CanOverflow, "A1");
-			Assert.AreEqual (new Rectangle (1, 0, 185, 22), ts.DisplayRectangle, "A2");
-			Assert.AreEqual (DockStyle.Bottom, ts.Dock, "A3");
-			Assert.AreEqual (ToolStripGripStyle.Hidden, ts.GripStyle, "A4");
-			Assert.AreEqual (ToolStripLayoutStyle.Table, ts.LayoutStyle, "A5");
-			Assert.AreEqual (new Padding (1, 0, 14, 0), ts.Padding, "A6");
-			Assert.AreEqual (false, ts.ShowItemToolTips, "A7");
-			Assert.AreEqual (new Rectangle (188, 0, 12, 22), ts.SizeGripBounds, "A8");
-			Assert.AreEqual (true, ts.SizingGrip, "A9");
-			Assert.AreEqual (true, ts.Stretch, "A10");
-			Assert.AreEqual (ToolStripRenderMode.System, ts.RenderMode, "A11");
-			
-			Assert.AreEqual ("System.Windows.Forms.StatusStrip+StatusStripAccessibleObject", ts.AccessibilityObject.GetType ().ToString ());
-		}
-
-		[Test]
-		public void ControlStyle ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-		
-			ControlStyles cs = ControlStyles.ContainerControl;
-			cs |= ControlStyles.UserPaint;
-			cs |= ControlStyles.ResizeRedraw;
-			cs |= ControlStyles.StandardClick;
-			cs |= ControlStyles.SupportsTransparentBackColor;
-			cs |= ControlStyles.StandardDoubleClick;
-			cs |= ControlStyles.AllPaintingInWmPaint;
-			cs |= ControlStyles.OptimizedDoubleBuffer;
-			cs |= ControlStyles.UseTextForAccessibility;
-
-			Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");		
-		}
-
-		[Test]
-		public void ProtectedProperties ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual (DockStyle.Bottom, epp.DefaultDock, "C1");
-			Assert.AreEqual (new Padding (1, 0, 14, 0), epp.DefaultPadding, "C2");
-			Assert.AreEqual (false, epp.DefaultShowItemToolTips, "C3");
-			Assert.AreEqual (new Size (200, 22), epp.DefaultSize, "C4");
-		}
-
-		[Test]
-		public void PropertyCanOverflow ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.CanOverflow = true;
-			Assert.AreEqual (true, ts.CanOverflow, "B1");
-		}
-
-		[Test]
-		public void PropertyDock ()
-		{
-			StatusStrip ts = new StatusStrip ();
-			
-			ts.Dock = DockStyle.Top;
-			Assert.AreEqual (DockStyle.Top, ts.Dock, "B1");
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidEnumArgumentException))]
-		public void PropertyDockIEAE ()
-		{
-			StatusStrip ts = new StatusStrip ();
-			ts.Dock = (DockStyle)42;
-		}
-
-		[Test]
-		public void PropertyGripStyle ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.GripStyle = ToolStripGripStyle.Visible;
-			Assert.AreEqual (ToolStripGripStyle.Visible, ts.GripStyle, "B1");
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidEnumArgumentException))]
-		public void PropertyGripStyleIEAE ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.GripStyle = (ToolStripGripStyle) 42;
-		}
-
-		[Test]
-		public void PropertyLayoutStyle ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.LayoutStyle = ToolStripLayoutStyle.VerticalStackWithOverflow;
-			Assert.AreEqual (ToolStripLayoutStyle.VerticalStackWithOverflow, ts.LayoutStyle, "B1");
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidEnumArgumentException))]
-		public void PropertyLayoutStyleIEAE ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.LayoutStyle = (ToolStripLayoutStyle) 42;
-		}
-
-		[Test]
-		public void PropertyPadding ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.Padding = new Padding (7);
-			Assert.AreEqual (new Padding (7), ts.Padding, "B1");
-		}
-
-		[Test]
-		public void PropertyShowItemToolTips ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.ShowItemToolTips = true;
-			Assert.AreEqual (true, ts.ShowItemToolTips, "B1");
-		}
-
-		[Test]
-		public void PropertySizingGrip ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.SizingGrip = false;
-			Assert.AreEqual (false, ts.SizingGrip, "B1");
-		}
-
-		[Test]
-		public void PropertyStretch ()
-		{
-			StatusStrip ts = new StatusStrip ();
-
-			ts.Stretch = false;
-			Assert.AreEqual (false, ts.Stretch, "B1");
-		}
-		
-		private class ExposeProtectedProperties : StatusStrip
-		{
-			public new DockStyle DefaultDock { get { return base.DefaultDock; } }
-			public new Padding DefaultPadding { get { return base.DefaultPadding; } }
-			public new bool DefaultShowItemToolTips { get { return base.DefaultShowItemToolTips; } }
-			public new Size DefaultSize { get { return base.DefaultSize; } }
-			
-			public ControlStyles GetControlStyles ()
-			{
-				ControlStyles retval = (ControlStyles) 0;
-				
-				foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
-					if (this.GetStyle (cs) == true)
-						retval |= cs;
-						
-				return retval;
-			}
-		}
-	}
-}
+//
+// StatusStripTests.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Novell, Inc.
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+using System.ComponentModel;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class StatusStripTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			Assert.AreEqual (false, ts.CanOverflow, "A1");
+			Assert.AreEqual (new Rectangle (1, 0, 185, 22), ts.DisplayRectangle, "A2");
+			Assert.AreEqual (DockStyle.Bottom, ts.Dock, "A3");
+			Assert.AreEqual (ToolStripGripStyle.Hidden, ts.GripStyle, "A4");
+			Assert.AreEqual (ToolStripLayoutStyle.Table, ts.LayoutStyle, "A5");
+			Assert.AreEqual (new Padding (1, 0, 14, 0), ts.Padding, "A6");
+			Assert.AreEqual (false, ts.ShowItemToolTips, "A7");
+			Assert.AreEqual (new Rectangle (188, 0, 12, 22), ts.SizeGripBounds, "A8");
+			Assert.AreEqual (true, ts.SizingGrip, "A9");
+			Assert.AreEqual (true, ts.Stretch, "A10");
+			Assert.AreEqual (ToolStripRenderMode.System, ts.RenderMode, "A11");
+			
+			Assert.AreEqual ("System.Windows.Forms.StatusStrip+StatusStripAccessibleObject", ts.AccessibilityObject.GetType ().ToString ());
+		}
+
+		[Test]
+		public void ControlStyle ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+		
+			ControlStyles cs = ControlStyles.ContainerControl;
+			cs |= ControlStyles.UserPaint;
+			cs |= ControlStyles.ResizeRedraw;
+			cs |= ControlStyles.StandardClick;
+			cs |= ControlStyles.SupportsTransparentBackColor;
+			cs |= ControlStyles.StandardDoubleClick;
+			cs |= ControlStyles.AllPaintingInWmPaint;
+			cs |= ControlStyles.OptimizedDoubleBuffer;
+			cs |= ControlStyles.UseTextForAccessibility;
+
+			Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");		
+		}
+
+		[Test]
+		public void ProtectedProperties ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual (DockStyle.Bottom, epp.DefaultDock, "C1");
+			Assert.AreEqual (new Padding (1, 0, 14, 0), epp.DefaultPadding, "C2");
+			Assert.AreEqual (false, epp.DefaultShowItemToolTips, "C3");
+			Assert.AreEqual (new Size (200, 22), epp.DefaultSize, "C4");
+		}
+
+		[Test]
+		public void PropertyCanOverflow ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.CanOverflow = true;
+			Assert.AreEqual (true, ts.CanOverflow, "B1");
+		}
+
+		[Test]
+		public void PropertyDock ()
+		{
+			StatusStrip ts = new StatusStrip ();
+			
+			ts.Dock = DockStyle.Top;
+			Assert.AreEqual (DockStyle.Top, ts.Dock, "B1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidEnumArgumentException))]
+		public void PropertyDockIEAE ()
+		{
+			StatusStrip ts = new StatusStrip ();
+			ts.Dock = (DockStyle)42;
+		}
+
+		[Test]
+		public void PropertyGripStyle ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.GripStyle = ToolStripGripStyle.Visible;
+			Assert.AreEqual (ToolStripGripStyle.Visible, ts.GripStyle, "B1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidEnumArgumentException))]
+		public void PropertyGripStyleIEAE ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.GripStyle = (ToolStripGripStyle) 42;
+		}
+
+		[Test]
+		public void PropertyLayoutStyle ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.LayoutStyle = ToolStripLayoutStyle.VerticalStackWithOverflow;
+			Assert.AreEqual (ToolStripLayoutStyle.VerticalStackWithOverflow, ts.LayoutStyle, "B1");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidEnumArgumentException))]
+		public void PropertyLayoutStyleIEAE ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.LayoutStyle = (ToolStripLayoutStyle) 42;
+		}
+
+		[Test]
+		public void PropertyPadding ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.Padding = new Padding (7);
+			Assert.AreEqual (new Padding (7), ts.Padding, "B1");
+		}
+
+		[Test]
+		public void PropertyShowItemToolTips ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.ShowItemToolTips = true;
+			Assert.AreEqual (true, ts.ShowItemToolTips, "B1");
+		}
+
+		[Test]
+		public void PropertySizingGrip ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.SizingGrip = false;
+			Assert.AreEqual (false, ts.SizingGrip, "B1");
+		}
+
+		[Test]
+		public void PropertyStretch ()
+		{
+			StatusStrip ts = new StatusStrip ();
+
+			ts.Stretch = false;
+			Assert.AreEqual (false, ts.Stretch, "B1");
+		}
+		
+		private class ExposeProtectedProperties : StatusStrip
+		{
+			public new DockStyle DefaultDock { get { return base.DefaultDock; } }
+			public new Padding DefaultPadding { get { return base.DefaultPadding; } }
+			public new bool DefaultShowItemToolTips { get { return base.DefaultShowItemToolTips; } }
+			public new Size DefaultSize { get { return base.DefaultSize; } }
+			
+			public ControlStyles GetControlStyles ()
+			{
+				ControlStyles retval = (ControlStyles) 0;
+				
+				foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
+					if (this.GetStyle (cs) == true)
+						retval |= cs;
+						
+				return retval;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TableLayoutTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TableLayoutTest.cs
@@ -1,1724 +1,1724 @@
-//
-// TableLayoutTests.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System;
-using System.Drawing;
-using System.IO;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Windows.Forms;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class TableLayoutTests : TestHelper
-	{
-		[Test]
-		public void TestConstruction ()
-		{
-			TableLayoutPanel p = new TableLayoutPanel ();
-
-			Assert.AreEqual (BorderStyle.None, p.BorderStyle, "A1");
-			Assert.AreEqual (TableLayoutPanelCellBorderStyle.None, p.CellBorderStyle, "A2");
-			Assert.AreEqual (0, p.ColumnCount, "A3");
-			Assert.AreEqual (TableLayoutPanelGrowStyle.AddRows, p.GrowStyle, "A4");
-			Assert.AreEqual ("System.Windows.Forms.Layout.TableLayout", p.LayoutEngine.ToString (), "A5");
-			Assert.AreEqual ("System.Windows.Forms.TableLayoutSettings", p.LayoutSettings.ToString (), "A6");
-			Assert.AreEqual (0, p.RowCount, "A7");
-			Assert.AreEqual (0, p.ColumnStyles.Count, "A8");
-			Assert.AreEqual (0, p.RowStyles.Count, "A9");
-			Assert.AreEqual (new Size (200, 100), p.Size, "A10");
-		}
-
-		[Test]
-		public void TestPropertySetters ()
-		{
-			TableLayoutPanel p = new TableLayoutPanel ();
-
-			p.BorderStyle = BorderStyle.Fixed3D;
-			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
-			p.ColumnCount = 1;
-			p.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;
-			p.RowCount = 1;
-
-			Assert.AreEqual (BorderStyle.Fixed3D, p.BorderStyle, "A1");
-			Assert.AreEqual (TableLayoutPanelCellBorderStyle.OutsetDouble, p.CellBorderStyle, "A2");
-			Assert.AreEqual (1, p.ColumnCount, "A3");
-			Assert.AreEqual (TableLayoutPanelGrowStyle.FixedSize, p.GrowStyle, "A4");
-			Assert.AreEqual (1, p.RowCount, "A7");
-		}
-
-		[Test]
-		public void TestExtenderMethods ()
-		{
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c = new Button ();
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (-1, -1), p.GetCellPosition (c), "A1");
-			Assert.AreEqual (-1, p.GetColumn (c), "A2");
-			Assert.AreEqual (1, p.GetColumnSpan (c), "A3");
-			Assert.AreEqual (-1, p.GetRow (c), "A4");
-			Assert.AreEqual (1, p.GetRowSpan (c), "A5");
-
-			p.SetCellPosition (c, new TableLayoutPanelCellPosition (1, 1));
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetCellPosition (c), "A6");
-
-			p.SetColumn (c, 2);
-			Assert.AreEqual (2, p.GetColumn (c), "A7");
-			p.SetRow (c, 2);
-			Assert.AreEqual (2, p.GetRow (c), "A9");
-
-			p.SetColumnSpan (c, 2);
-			Assert.AreEqual (2, p.GetColumnSpan (c), "A8");
-
-
-			p.SetRowSpan (c, 2);
-			Assert.AreEqual (2, p.GetRowSpan (c), "A10");
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 2), p.GetCellPosition (c), "A11");
-
-			// ???????
-			//Assert.AreEqual (new TableLayoutPanelCellPosition (-1, -1), p.GetPositionFromControl (c), "A12");
-			//Assert.AreEqual (c, p.GetControlFromPosition(0, 0), "A13");
-		}
-
-		[Test]
-		public void TestColumnStyles ()
-		{
-			TableLayoutPanel p = new TableLayoutPanel ();
-
-			p.ColumnStyles.Add (new ColumnStyle ());
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 20F));
-
-			Assert.AreEqual (3, p.ColumnStyles.Count, "A1");
-			Assert.AreEqual (SizeType.AutoSize, p.ColumnStyles[0].SizeType, "A2");
-			Assert.AreEqual (0, p.ColumnStyles[0].Width, "A3");
-			Assert.AreEqual (SizeType.Absolute, p.ColumnStyles[1].SizeType, "A4");
-			Assert.AreEqual (0, p.ColumnStyles[1].Width, "A5");
-			Assert.AreEqual (SizeType.Percent, p.ColumnStyles[2].SizeType, "A6");
-			Assert.AreEqual (20F, p.ColumnStyles[2].Width, "A7");
-
-			p.ColumnStyles.Remove (p.ColumnStyles[0]);
-
-			Assert.AreEqual (2, p.ColumnStyles.Count, "A8");
-			Assert.AreEqual (SizeType.Absolute, p.ColumnStyles[0].SizeType, "A9");
-			Assert.AreEqual (0, p.ColumnStyles[0].Width, "A10");
-			Assert.AreEqual (SizeType.Percent, p.ColumnStyles[1].SizeType, "A11");
-			Assert.AreEqual (20F, p.ColumnStyles[1].Width, "A12");
-		}
-
-		[Test]
-		public void TestRowStyles ()
-		{
-			TableLayoutPanel p = new TableLayoutPanel ();
-
-			p.RowStyles.Add (new RowStyle ());
-			p.RowStyles.Add (new RowStyle (SizeType.Absolute));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 20F));
-
-			Assert.AreEqual (3, p.RowStyles.Count, "A1");
-			Assert.AreEqual (SizeType.AutoSize, p.RowStyles[0].SizeType, "A2");
-			Assert.AreEqual (0, p.RowStyles[0].Height, "A3");
-			Assert.AreEqual (SizeType.Absolute, p.RowStyles[1].SizeType, "A4");
-			Assert.AreEqual (0, p.RowStyles[1].Height, "A5");
-			Assert.AreEqual (SizeType.Percent, p.RowStyles[2].SizeType, "A6");
-			Assert.AreEqual (20F, p.RowStyles[2].Height, "A7");
-
-			p.RowStyles.Remove (p.RowStyles[0]);
-
-			Assert.AreEqual (2, p.RowStyles.Count, "A8");
-			Assert.AreEqual (SizeType.Absolute, p.RowStyles[0].SizeType, "A9");
-			Assert.AreEqual (0, p.RowStyles[0].Height, "A10");
-			Assert.AreEqual (SizeType.Percent, p.RowStyles[1].SizeType, "A11");
-			Assert.AreEqual (20F, p.RowStyles[1].Height, "A12");
-		}
-
-		[Test]
-		public void TestColumnStyles3 ()
-		{
-			// Don't lose the 2nd style
-			TableLayoutPanel p = new TableLayoutPanel ();
-
-			p.ColumnCount = 2;
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20F));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20F));
-
-			p.ColumnCount = 1;
-
-			Assert.AreEqual (2, p.ColumnStyles.Count, "A1");
-		}
-
-		[Test]
-		public void TestColumnStyles2 ()
-		{
-			// Don't lose the 2nd style
-			TableLayoutPanel p = new TableLayoutPanel ();
-
-			p.ColumnCount = 1;
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20F));
-
-			p.ColumnCount = 2;
-
-			Assert.AreEqual (1, p.ColumnStyles.Count, "A2");
-		}
-
-		[Test]
-		public void TestCellPositioning ()
-		{
-			// Standard Add
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c4), "C4");
-		}
-
-		[Test]
-		public void TestCellPositioning2 ()
-		{
-			// Growstyle = Add Rows
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-			Control c5 = new Button ();
-			Control c6 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-			p.Controls.Add (c5);
-			p.Controls.Add (c6);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c4), "C4");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c5), "C5");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 2), p.GetPositionFromControl (c6), "C6");
-		}
-
-		[Test]
-		public void TestCellPositioning3 ()
-		{
-			// Growstyle = Add Columns
-			TableLayoutPanel p = new TableLayoutPanel ();
-			p.GrowStyle = TableLayoutPanelGrowStyle.AddColumns;
-
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-			Control c5 = new Button ();
-			Control c6 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-			p.Controls.Add (c5);
-			p.Controls.Add (c6);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 0), p.GetPositionFromControl (c3), "C3");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c4), "C4");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c5), "C5");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 1), p.GetPositionFromControl (c6), "C6");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void TestCellPositioning4 ()
-		{
-			// Growstyle = Fixed Size
-			TableLayoutPanel p = new TableLayoutPanel ();
-			p.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;
-
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-			Control c5 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-			p.Controls.Add (c5);
-		}
-
-		[Test]
-		public void TestCellPositioning5 ()
-		{
-			// One control have fixed position
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetCellPosition (c4, new TableLayoutPanelCellPosition (0, 0));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c4), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c1), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C3");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C4");
-		}
-
-		[Test]
-		public void TestCellPositioning6 ()
-		{
-			// One control has fixed column, it should be ignored
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetColumn (c3, 1);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c4), "C4");
-		}
-
-		[Test]
-		public void TestCellPositioning7 ()
-		{
-			// One control has fixed column and row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetColumn (c3, 1);
-			p.SetRow (c3, 1);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C3");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c4), "C4");
-		}
-
-		[Test]
-		public void TestCellPositioning8 ()
-		{
-			// Column span
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetColumnSpan (c1, 2);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning9 ()
-		{
-			// Row span
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetRowSpan (c1, 2);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning10 ()
-		{
-			// Column span = 2, but control is in the last column, forces control back into 1st column, next row
-			// I have no clue why c3 shouldn't be in (1,0), but MS says it's not
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetColumnSpan (c2, 2);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning11 ()
-		{
-			// Row span = 2, but control is in the last row, creates new row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetRowSpan (c3, 2);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning12 ()
-		{
-			// Requesting a column greater than ColumnCount, request is ignored
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetColumn (c1, 4);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning13 ()
-		{
-			// Row span = 2, but control is in the last row, creates new row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 3;
-			p.RowCount = 2;
-
-			p.SetRowSpan (c3, 2);
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 0), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void TestCellPositioning14 ()
-		{
-			// Col span = 3, fixed grow style
-			TableLayoutPanel p = new TableLayoutPanel ();
-			p.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;
-			Control c1 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetColumnSpan (c1, 3);
-
-			p.Controls.Add (c1);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-		}
-
-		[Test]
-		public void TestCellPositioning15 ()
-		{
-			// Column span = 2, but control is in the last column, forces control back into 1st column, next row
-			// I have no clue why c3 shouldn't be in (1,0), but MS says it's not
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetColumnSpan (c2, 2);
-			p.SetCellPosition (c2, new TableLayoutPanelCellPosition (1, 0));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning16 ()
-		{
-			// Row span = 2, but control is in the last row, creates new row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.SetRowSpan (c3, 2);
-			p.SetCellPosition (c3, new TableLayoutPanelCellPosition (0, 1));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning17 ()
-		{
-			// ColumnCount == RowCount == 0, but control is added at > 0.
-			// The columns and rows are created, but ColumnCount and RowCount remains 0
-			//
-			TableLayoutPanel p = new TableLayoutPanel ();
-			p.ColumnCount = 0;
-			p.RowCount = 0;
-			Control c1 = new Button ();
-
-			p.Controls.Add (c1, 6, 7);
-			Assert.AreEqual (new TableLayoutPanelCellPosition (6, 7), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (0, p.LayoutSettings.ColumnCount, "C2");
-			Assert.AreEqual (0, p.LayoutSettings.RowCount, "C3");
-		}
-
-		[Test]
-		public void TestCellPositioning18 ()
-		{
-			// A control with both rowspan and columnspan > 1 was getting
-			// other controls put into its extent (i.e. c3 was ending up
-			// at (1,1) instead of (2,1).
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-
-			p.ColumnCount = 3;
-			p.RowCount = 4;
-
-			p.SetRowSpan (c1, 2);
-			p.SetColumnSpan (c1, 2);
-			p.SetCellPosition (c1, new TableLayoutPanelCellPosition (0, 0));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 0), p.GetPositionFromControl (c2), "C2");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 1), p.GetPositionFromControl (c3), "C3");
-			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c4), "C4");
-		}
-
-		[Test]
-		public void TestRowColumnSizes1 ()
-		{
-			// Row span = 2, but control is in the last row, creates new row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 1;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (71, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
-		}
-
-		[Test]
-		public void TestRowColumnSizes2 ()
-		{
-			// Row span = 2, but control is in the last row, creates new row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 1;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 100F));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (100, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
-		}
-
-		[Test]
-		public void TestRowColumnSizes3 ()
-		{
-			// Row span = 2, but control is in the last row, creates new row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-			Control c5 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 1;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-			p.Controls.Add (c5);
-
-			Assert.AreEqual (42, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (29, p.GetRowHeights ()[2], "D3");
-		}
-
-		[Test]
-		public void TestRowColumnSizes4 ()
-		{
-			// Row span = 2, but control is in the last row, creates new row
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-			Control c4 = new Button ();
-			Control c5 = new Button ();
-			Control c6 = new Button ();
-			Control c7 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 1;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-			p.Controls.Add (c4);
-			p.Controls.Add (c5);
-			p.Controls.Add (c6);
-			p.Controls.Add (c7);
-
-			//Assert.AreEqual (100, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (29, p.GetRowHeights ()[2], "D3");
-			Assert.AreEqual (29, p.GetRowHeights ()[3], "D4");
-		}
-
-		[Test]
-		public void TestRowColumnSizes5 ()
-		{
-			// 2 Absolute Columns/Rows
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 20));
-			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 30));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 30));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (20, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (80, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (20, p.GetColumnWidths ()[0], "D3");
-			Assert.AreEqual (180, p.GetColumnWidths ()[1], "D4");
-		}
-
-		[Test]
-		public void TestRowColumnSizes6 ()
-		{
-			// 2 50% Columns/Rows
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (50, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (100, p.GetColumnWidths ()[0], "D3");
-			Assert.AreEqual (100, p.GetColumnWidths ()[1], "D4");
-		}
-
-		[Test]
-		public void TestRowColumnSizes7 ()
-		{
-			// 1 Absolute and 2 Percent Columns/Rows
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 3;
-			p.RowCount = 3;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 50));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 50));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (25, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (25, p.GetRowHeights ()[2], "D3");
-			Assert.AreEqual (50, p.GetColumnWidths ()[0], "D4");
-			Assert.AreEqual (75, p.GetColumnWidths ()[1], "D5");
-			Assert.AreEqual (75, p.GetColumnWidths ()[2], "D6");
-		}
-
-		[Test]
-		public void TestRowColumnSizes8 ()
-		{
-			// 1 Absolute and 2 Percent Columns/Rows (with total percents > 100)
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 3;
-			p.RowCount = 3;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 50));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 50));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (25, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (25, p.GetRowHeights ()[2], "D3");
-			Assert.AreEqual (50, p.GetColumnWidths ()[0], "D4");
-			Assert.AreEqual (75, p.GetColumnWidths ()[1], "D5");
-			Assert.AreEqual (75, p.GetColumnWidths ()[2], "D6");
-		}
-
-		[Test]
-		public void TestRowColumnSizes9 ()
-		{
-			// 1 Absolute and 2 Percent Columns/Rows (with total percents > 100)
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 3;
-			p.RowCount = 3;
-
-			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 50));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 80));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 40));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 50));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 80));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 40));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (33, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (17, p.GetRowHeights ()[2], "D3");
-			Assert.AreEqual (50, p.GetColumnWidths ()[0], "D4");
-			Assert.AreEqual (100, p.GetColumnWidths ()[1], "D5");
-			Assert.AreEqual (50, p.GetColumnWidths ()[2], "D6");
-		}
-
-		[Test]
-		public void TestRowColumnSizes10 ()
-		{
-			// 2 AutoSize Columns/Rows
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			p.ColumnCount = 2;
-			p.RowCount = 2;
-
-			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
-
-			p.Controls.Add (c1);
-			p.Controls.Add (c2);
-			p.Controls.Add (c3);
-
-			Assert.AreEqual (29, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (71, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (81, p.GetColumnWidths ()[0], "D3");
-			Assert.AreEqual (119, p.GetColumnWidths ()[1], "D4");
-		}
-
-		[Test]
-		public void TestRowColumnSizes11 ()
-		{
-			// AutoSize Columns/Rows, and column-spanning controls, but
-			// no control starts in column 1.
-			// Mono's old behavior was for column 1 to have a zero width.
-			TableLayoutPanel p = new TableLayoutPanel ();
-			Control c1 = new Button ();
-			Control c2 = new Button ();
-			Control c3 = new Button ();
-
-			c1.Size = new Size (150, 25);
-			c2.Size = new Size (75, 25);
-			c3.Size = new Size (150, 25);
-
-			p.ColumnCount = 4;
-			p.RowCount = 3;
-
-			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
-			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
-
-			p.SetColumnSpan (c1, 2);
-			p.SetColumnSpan (c3, 2);
-
-			p.Controls.Add (c1, 0, 0);
-			p.Controls.Add (c2, 0, 1);
-			p.Controls.Add (c3, 1, 1);
-
-			// The bug fix gets Mono to behave very closely to .NET,
-			// but not exactly...3 pixels off somewhere...
-			Assert.AreEqual (31, p.GetRowHeights ()[0], "D1");
-			Assert.AreEqual (31, p.GetRowHeights ()[1], "D2");
-			Assert.AreEqual (81, p.GetColumnWidths ()[0], "D3");
-			Assert.LessOrEqual (75, p.GetColumnWidths ()[1], "D4");
-			Assert.GreaterOrEqual (78, p.GetColumnWidths ()[1], "D5");
-			Assert.LessOrEqual (78, p.GetColumnWidths ()[2], "D6");
-			Assert.GreaterOrEqual (81, p.GetColumnWidths ()[2], "D7");
-		}
-		
-		[Test]
-		public void Bug81843 ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-			
-		        TableLayoutPanel tableLayoutPanel1;
-			Button button2;
-			TextBox textBox1;
-			Button button4;
-
-			tableLayoutPanel1 = new TableLayoutPanel ();
-			button2 = new Button ();
-			button4 = new Button ();
-			textBox1 = new TextBox ();
-			tableLayoutPanel1.SuspendLayout ();
-			f.SuspendLayout ();
-
-			tableLayoutPanel1.AutoSize = true;
-			tableLayoutPanel1.ColumnCount = 3;
-			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
-			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
-			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
-			tableLayoutPanel1.Controls.Add (button2, 0, 1);
-			tableLayoutPanel1.Controls.Add (button4, 2, 1);
-			tableLayoutPanel1.Controls.Add (textBox1, 1, 0);
-			tableLayoutPanel1.Location = new Point (0, 0);
-			tableLayoutPanel1.RowCount = 2;
-			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
-			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
-			tableLayoutPanel1.Size = new Size (292, 287);
-
-			button2.Size = new Size (75, 23);
-			
-			button4.Size = new Size (75, 23);
-
-			textBox1.Dock = DockStyle.Fill;
-			textBox1.Location = new Point (84, 3);
-			textBox1.Multiline = true;
-			textBox1.Size = new Size (94, 137);
-
-			f.ClientSize = new Size (292, 312);
-			f.Controls.Add (tableLayoutPanel1);
-			f.Name = "Form1";
-			f.Text = "Form1";
-			tableLayoutPanel1.ResumeLayout (false);
-			tableLayoutPanel1.PerformLayout ();
-			f.ResumeLayout (false);
-			f.PerformLayout ();
-
-			f.Show ();
-
-			Assert.AreEqual (new Rectangle (3, 146, 75, 23), button2.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (184, 146, 75, 23), button4.Bounds, "A2");
-			Assert.AreEqual (new Rectangle (84, 3, 94, 137), textBox1.Bounds, "A3");
-			
-			f.Dispose ();
-		}
-		
-		[Test]  // From bug #81884
-		public void CellBorderStyle ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-
-			TableLayoutPanel p = new TableLayoutPanel ();
-			p = new TableLayoutPanel ();
-			p.ColumnCount = 3;
-			p.ColumnStyles.Add (new ColumnStyle ());
-			p.ColumnStyles.Add (new ColumnStyle ());
-			p.ColumnStyles.Add (new ColumnStyle ());
-			p.Dock = DockStyle.Top;
-			p.Height = 200;
-			p.RowCount = 2;
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
-			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
-			f.Controls.Add (p);
-
-			Label _labelA = new Label ();
-			_labelA.Dock = DockStyle.Fill;
-			_labelA.Size = new Size (95, 20);
-			_labelA.Text = "A";
-			p.Controls.Add (_labelA, 0, 0);
-
-			Label _labelB = new Label ();
-			_labelB.Dock = DockStyle.Fill;
-			_labelB.Size = new Size (95, 20);
-			_labelB.Text = "B";
-			p.Controls.Add (_labelB, 1, 0);
-
-			Label _labelC = new Label ();
-			_labelC.Dock = DockStyle.Fill;
-			_labelC.Size = new Size (95, 20);
-			_labelC.Text = "C";
-			p.Controls.Add (_labelC, 2, 0);
-
-			Label _labelD = new Label ();
-			_labelD.Dock = DockStyle.Fill;
-			_labelD.Size = new Size (95, 20);
-			_labelD.Text = "D";
-			p.Controls.Add (_labelD, 0, 1);
-
-			Label _labelE = new Label ();
-			_labelE.Dock = DockStyle.Fill;
-			_labelE.Size = new Size (95, 20);
-			_labelE.Text = "E";
-			p.Controls.Add (_labelE, 1, 1);
-
-			Label _labelF = new Label ();
-			_labelF.Dock = DockStyle.Fill;
-			_labelF.Size = new Size (95, 20);
-			_labelF.Text = "F";
-			p.Controls.Add (_labelF, 2, 1);
-
-			_labelA.BackColor = Color.Red;
-			_labelB.BackColor = Color.Orange;
-			_labelC.BackColor = Color.Yellow;
-			_labelD.BackColor = Color.Green;
-			_labelE.BackColor = Color.Blue;
-			_labelF.BackColor = Color.Purple;
-
-			f.Show ();
-			// None
-			Assert.AreEqual (new Rectangle (3, 0, 95, 100), _labelA.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (104, 0, 95, 100), _labelB.Bounds, "A2");
-			Assert.AreEqual (new Rectangle (205, 0, 95, 100), _labelC.Bounds, "A3");
-			Assert.AreEqual (new Rectangle (3, 100, 95, 100), _labelD.Bounds, "A4");
-			Assert.AreEqual (new Rectangle (104, 100, 95, 100), _labelE.Bounds, "A5");
-			Assert.AreEqual (new Rectangle (205, 100, 95, 100), _labelF.Bounds, "A6");
-			
-			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
-			Assert.AreEqual (new Rectangle (4, 1, 95, 98), _labelA.Bounds, "A7");
-			Assert.AreEqual (new Rectangle (106, 1, 95, 98), _labelB.Bounds, "A8");
-			Assert.AreEqual (new Rectangle (208, 1, 95, 98), _labelC.Bounds, "A9");
-			Assert.AreEqual (new Rectangle (4, 100, 95, 99), _labelD.Bounds, "A10");
-			Assert.AreEqual (new Rectangle (106, 100, 95, 99), _labelE.Bounds, "A11");
-			Assert.AreEqual (new Rectangle (208, 100, 95, 99), _labelF.Bounds, "A12");
-
-			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset;
-			Assert.AreEqual (new Rectangle (5, 2, 95, 97), _labelA.Bounds, "A13");
-			Assert.AreEqual (new Rectangle (108, 2, 95, 97), _labelB.Bounds, "A14");
-			Assert.AreEqual (new Rectangle (211, 2, 95, 97), _labelC.Bounds, "A15");
-			Assert.AreEqual (new Rectangle (5, 101, 95, 97), _labelD.Bounds, "A16");
-			Assert.AreEqual (new Rectangle (108, 101, 95, 97), _labelE.Bounds, "A17");
-			Assert.AreEqual (new Rectangle (211, 101, 95, 97), _labelF.Bounds, "A18");
-
-			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.InsetDouble;
-			Assert.AreEqual (new Rectangle (6, 3, 95, 95), _labelA.Bounds, "A19");
-			Assert.AreEqual (new Rectangle (110, 3, 95, 95), _labelB.Bounds, "A20");
-			Assert.AreEqual (new Rectangle (214, 3, 95, 95), _labelC.Bounds, "A21");
-			Assert.AreEqual (new Rectangle (6, 101, 95, 96), _labelD.Bounds, "A22");
-			Assert.AreEqual (new Rectangle (110, 101, 95, 96), _labelE.Bounds, "A23");
-			Assert.AreEqual (new Rectangle (214, 101, 95, 96), _labelF.Bounds, "A24");
-
-			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.Outset;
-			Assert.AreEqual (new Rectangle (5, 2, 95, 97), _labelA.Bounds, "A25");
-			Assert.AreEqual (new Rectangle (108, 2, 95, 97), _labelB.Bounds, "A26");
-			Assert.AreEqual (new Rectangle (211, 2, 95, 97), _labelC.Bounds, "A27");
-			Assert.AreEqual (new Rectangle (5, 101, 95, 97), _labelD.Bounds, "A28");
-			Assert.AreEqual (new Rectangle (108, 101, 95, 97), _labelE.Bounds, "A29");
-			Assert.AreEqual (new Rectangle (211, 101, 95, 97), _labelF.Bounds, "A30");
-
-			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
-			Assert.AreEqual (new Rectangle (6, 3, 95, 95), _labelA.Bounds, "A31");
-			Assert.AreEqual (new Rectangle (110, 3, 95, 95), _labelB.Bounds, "A32");
-			Assert.AreEqual (new Rectangle (214, 3, 95, 95), _labelC.Bounds, "A33");
-			Assert.AreEqual (new Rectangle (6, 101, 95, 96), _labelD.Bounds, "A34");
-			Assert.AreEqual (new Rectangle (110, 101, 95, 96), _labelE.Bounds, "A35");
-			Assert.AreEqual (new Rectangle (214, 101, 95, 96), _labelF.Bounds, "A36");
-
-			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetPartial;
-			Assert.AreEqual (new Rectangle (6, 3, 95, 95), _labelA.Bounds, "A37");
-			Assert.AreEqual (new Rectangle (110, 3, 95, 95), _labelB.Bounds, "A38");
-			Assert.AreEqual (new Rectangle (214, 3, 95, 95), _labelC.Bounds, "A39");
-			Assert.AreEqual (new Rectangle (6, 101, 95, 96), _labelD.Bounds, "A40");
-			Assert.AreEqual (new Rectangle (110, 101, 95, 96), _labelE.Bounds, "A41");
-			Assert.AreEqual (new Rectangle (214, 101, 95, 96), _labelF.Bounds, "A42");
-			
-			f.Close ();
-		}
-
-		[Test]
-		public void Bug81936 ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-
-			TableLayoutPanel tableLayoutPanel1;
-			Label button2;
-			Label button4;
-
-			tableLayoutPanel1 = new TableLayoutPanel ();
-			button2 = new Label ();
-			button4 = new Label ();
-			button2.Text = "Test1";
-			button4.Text = "Test2";
-			button2.Anchor = AnchorStyles.Left;
-			button4.Anchor = AnchorStyles.Left;
-			button2.Height = 14;
-			button4.Height = 14;
-			tableLayoutPanel1.SuspendLayout ();
-			f.SuspendLayout ();
-
-			tableLayoutPanel1.ColumnCount = 1;
-			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
-			tableLayoutPanel1.Controls.Add (button2, 0, 0);
-			tableLayoutPanel1.Controls.Add (button4, 0, 1);
-			tableLayoutPanel1.Location = new Point (0, 0);
-			tableLayoutPanel1.RowCount = 2;
-			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Absolute, 28F));
-			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Absolute, 28F));
-			tableLayoutPanel1.Size = new Size (292, 56);
-
-			f.ClientSize = new Size (292, 312);
-			f.Controls.Add (tableLayoutPanel1);
-			f.Name = "Form1";
-			f.Text = "Form1";
-			tableLayoutPanel1.ResumeLayout (false);
-			tableLayoutPanel1.PerformLayout ();
-			f.ResumeLayout (false);
-			f.PerformLayout ();
-
-			f.Show ();
-
-			Assert.AreEqual (new Rectangle (3, 7, 100, 14), button2.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (3, 35, 100, 14), button4.Bounds, "A2");
-
-			f.Dispose ();
-		}
-
-		[Test]
-		public void Bug82605 ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-			
-			Label l = new Label ();
-
-			TableLayoutPanel table = new TableLayoutPanel ();
-			table.ColumnCount = 1;
-			table.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100F));
-
-			table.RowCount = 2;
-			table.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
-			table.RowStyles.Add (new RowStyle (SizeType.Absolute, 20F));
-
-			table.Controls.Add (l, 0, 1);
-			table.Location = new Point (0, 0);
-			table.Width = 250;
-
-			l.Anchor = AnchorStyles.Left | AnchorStyles.Right;
-			l.AutoSize = true;
-			l.Location = new Point (3, 352);
-			l.Size = new Size (578, 13);
-			l.Text = "label1";
-			l.TextAlign = ContentAlignment.MiddleCenter;
-
-			f.Controls.Add (table);
-			f.Show ();
-			
-			// Height is font dependent, but this bug is about the width anyways
-			Assert.AreEqual (244, l.Width, "A1");
-
-			f.Dispose ();
-		}
-		
-		[Test] // bug #82040
-		public void ShowNoChildren ()
-		{
-			Form form = new Form ();
-			form.ShowInTaskbar = false;
-
-			TableLayoutPanel tableLayoutPanel = new TableLayoutPanel ();
-			tableLayoutPanel.ColumnCount = 3;
-			tableLayoutPanel.Dock = DockStyle.Fill;
-			tableLayoutPanel.RowCount = 11;
-			form.Controls.Add (tableLayoutPanel);
-
-			form.Show ();
-			form.Refresh ();
-			form.Dispose ();
-		}
-
-		[Test] // bug #82041
-		public void DontCallResumeLayout ()
-		{
-			Form form = new Form ();
-			form.ShowInTaskbar = false;
-
-			TableLayoutPanel tableLayoutPanel = new TableLayoutPanel ();
-			form.Controls.Add (tableLayoutPanel);
-			tableLayoutPanel.SuspendLayout ();
-			tableLayoutPanel.ColumnCount = 3;
-			tableLayoutPanel.Dock = DockStyle.Fill;
-			tableLayoutPanel.RowCount = 11;
-			tableLayoutPanel.Controls.Add (new Button ());
-
-			form.Show ();
-			form.Refresh ();
-			form.Dispose ();
-		}
-		
-		[Test] // bug #346246
-		public void AutoSizePanelVertical ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-			
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.AutoSize = true;
-			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			tlp.ColumnCount = 1;
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100F));
-			tlp.Location = new Point (12, 12);
-			tlp.Name = "tableLayoutPanel1";
-			tlp.RowCount = 2;
-			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
-			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
-			tlp.Size = new Size (139, 182);
-			tlp.TabIndex = 0;
-
-			f.Controls.Add (tlp);
-
-			Button b = new Button ();
-			b.Size = new Size (100, 100);
-			tlp.Controls.Add (b, 0, 0);
-
-			PictureBox p = new PictureBox ();
-			p.Size = new Size (100, 100);
-			tlp.Controls.Add (p,0,1);
-			
-			f.Show ();
-
-			Assert.AreEqual (new Rectangle (12, 12, 106, 212), tlp.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (3, 3, 100, 100), b.Bounds, "A2");
-			Assert.AreEqual (new Rectangle (3, 109, 100, 100), p.Bounds, "A3");
-			
-			b.Width += 20;
-			b.Height += 20;
-
-			Assert.AreEqual (new Rectangle (12, 12, 126, 252), tlp.Bounds, "B1");
-			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "B2");
-			Assert.AreEqual (new Rectangle (3, 129, 100, 100), p.Bounds, "B3");
-
-			p.Width += 20;
-			p.Height += 20;
-
-			Assert.AreEqual (new Rectangle (12, 12, 126, 252), tlp.Bounds, "C1");
-			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "C2");
-			Assert.AreEqual (new Rectangle (3, 129, 120, 120), p.Bounds, "C3");
-			
-			f.Dispose ();
-		}
-
-		[Test] // bug #346246
-		public void AutoSizePanelHorizontal ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.AutoSize = true;
-			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			tlp.ColumnCount = 2;
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50F));
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50F));
-			tlp.Location = new Point (12, 12);
-			tlp.Name = "tableLayoutPanel1";
-			tlp.RowCount = 1;
-			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
-			tlp.Size = new Size (139, 182);
-			tlp.TabIndex = 0;
-
-			f.Controls.Add (tlp);
-
-			Button b = new Button ();
-			b.Size = new Size (100, 100);
-			tlp.Controls.Add (b, 0, 0);
-
-			PictureBox p = new PictureBox ();
-			p.Size = new Size (100, 100);
-			tlp.Controls.Add (p, 1, 0);
-
-			f.Show ();
-
-			Assert.AreEqual (new Rectangle (12, 12, 212, 106), tlp.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (3, 3, 100, 100), b.Bounds, "A2");
-			Assert.AreEqual (new Rectangle (109, 3, 100, 100), p.Bounds, "A3");
-
-			b.Width += 20;
-			b.Height += 20;
-
-			Assert.AreEqual (new Rectangle (12, 12, 252, 126), tlp.Bounds, "B1");
-			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "B2");
-			Assert.AreEqual (new Rectangle (129, 3, 100, 100), p.Bounds, "B3");
-
-			p.Width += 20;
-			p.Height += 20;
-
-			Assert.AreEqual (new Rectangle (12, 12, 252, 126), tlp.Bounds, "C1");
-			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "C2");
-			Assert.AreEqual (new Rectangle (129, 3, 120, 120), p.Bounds, "C3");
-
-			f.Dispose ();
-		}
-		
-		[Test]
-		public void Bug354676 ()
-		{
-			Form f = new Form ();
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.Dock = DockStyle.Fill;
-			tlp.Padding = new Padding (40);
-			tlp.RowCount = 2;
-			tlp.ColumnCount = 1;
-			f.Controls.Add (tlp);
-
-			Button b1 = new Button ();
-			tlp.Controls.Add (b1);
-
-			Button b2 = new Button ();
-			tlp.Controls.Add (b2);
-
-			f.Show ();
-
-			Assert.AreEqual (new Rectangle (43, 43, 75, 23), b1.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (43, 72, 75, 23), b2.Bounds, "A2");
-			
-			f.Close ();
-			f.Dispose ();
-		}
-		
-		[Test]
-		public void Bug355408 ()
-		{
-			Form f = new Form ();
-			f.ClientSize = new Size (300, 300);
-			
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.Dock = DockStyle.Fill;
-			tlp.RowCount = 2;
-			tlp.ColumnCount = 2;
-			f.Controls.Add (tlp);
-
-			Button b1 = new Button ();
-			tlp.Controls.Add (b1);
-
-			Button b2 = new Button ();
-			tlp.Controls.Add (b2);
-			
-			Button b3 = new Button ();
-			b3.Dock = DockStyle.Fill;
-			b3.Width = 250;
-			tlp.SetColumnSpan (b3, 2);
-			tlp.Controls.Add (b3);
-
-			f.Show ();
-
-			Assert.AreEqual (new Rectangle (3, 3, 75, 23), b1.Bounds, "A1");
-			Assert.AreEqual (new Rectangle (84, 3, 75, 23), b2.Bounds, "A2");
-			Assert.AreEqual (new Rectangle (3, 32, 294, 265), b3.Bounds, "A3");
-
-			f.Close ();
-			f.Dispose ();
-		}
-		
-		[Test]
-		public void Bug402651 ()
-		{
-			Form f = new Form ();
-			f.ClientSize = new Size (300, 300);
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.Dock = DockStyle.Fill;
-			tlp.RowCount = 2;
-			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
-			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			f.Controls.Add (tlp);
-
-			Button b1 = new Button ();
-			b1.Text = String.Empty;
-			b1.Dock = DockStyle.Fill;
-			tlp.Controls.Add (b1, 0, 0);
-
-			Button b2 = new Button ();
-			b2.Text = String.Empty;
-			b2.Size = new Size (100, 100);
-			b2.Anchor = AnchorStyles.None;
-			b2.Dock = DockStyle.None;
-			b2.Visible = false;
-			tlp.Controls.Add (b2, 0, 1);
-
-			f.Show ();
-
-			b2.Visible = true;
-			Assert.AreEqual (new Size (100, 100), b2.Size, "A1");
-
-			b2.Visible = false;
-			b2.Anchor = AnchorStyles.Left;
-			b2.Visible = true;
-			Assert.AreEqual (new Size (100, 100), b2.Size, "A2");
-
-			f.Dispose ();
-		}
-
-		[Test]
-		public void Bug354672 ()
-		{
-			Form f = new Form ();
-			f.ClientSize = new Size (300, 300);
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.AutoSize = true;
-			tlp.ColumnCount = 2;
-			tlp.RowCount = 1;
-			f.Controls.Add (tlp);
-
-			TextBox t1 = new TextBox ();
-			t1.Dock = DockStyle.Fill;
-			tlp.Controls.Add (t1);
-
-			TextBox t2 = new TextBox ();
-			t2.Dock = DockStyle.Fill;
-			tlp.Controls.Add (t2);
-
-			Assert.AreEqual (new Size (212, t1.Height + 6), tlp.PreferredSize, "A1");
-
-			f.Dispose ();
-		}
-
-		[Test]
-		public void Bug354672More ()
-		{
-			Form f = new Form ();
-			f.ClientSize = new Size (300, 300);
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.AutoSize = true;
-			tlp.ColumnCount = 2;
-			tlp.RowCount = 1;
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50f));
-			
-			f.Controls.Add (tlp);
-
-			TextBox t1 = new TextBox ();
-			t1.Dock = DockStyle.Fill;
-			tlp.Controls.Add (t1);
-
-			TextBox t2 = new TextBox ();
-			t2.Dock = DockStyle.Fill;
-			tlp.Controls.Add (t2);
-
-			Assert.AreEqual (new Size (212, t1.Height + 6), tlp.PreferredSize, "A1");
-
-			f.Dispose ();
-		}
-		
-		[Test]
-		public void Bug367249 ()
-		{
-			// Setting a colspan greater than the number of columns was
-			// causing an IOORE, this test just should not exception
-			TableLayoutPanel LayoutPanel = new TableLayoutPanel ();
-			LayoutPanel.ColumnCount = 1;
-			LayoutPanel.RowCount = 2;
-
-			Button OkButton = new Button ();
-			OkButton.Text = "OK";
-			LayoutPanel.Controls.Add (OkButton);
-			LayoutPanel.SetColumnSpan (OkButton, 3);
-		}
-		
-		[Test]
-		public void Bug396141 ()
-		{
-			// The issue is the user has set the RowCount to 0, but after
-			// we arrange the controls, we have 1 row.  GetPreferredSize (for
-			// AutoSize) was using 0 instead of 1.
-
-			Form f = new Form ();
-			f.ClientSize = new Size (300, 300);
-			f.ShowInTaskbar = false;
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.AutoSize = true;
-			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			tlp.ColumnCount = 2;
-			tlp.RowCount = 0;
-
-			f.Controls.Add (tlp);
-
-			TextBox t1 = new TextBox ();
-			t1.Dock = DockStyle.Fill;
-			tlp.Controls.Add (t1);
-
-			TextBox t2 = new TextBox ();
-			t2.Dock = DockStyle.Fill;
-			tlp.Controls.Add (t2);
-
-			f.Show ();
-			
-			Assert.IsTrue (tlp.Height > 0, "Height must be > 0");
-			Assert.IsTrue (tlp.Width > 0, "Width must be > 0");
-
-			f.Dispose ();
-		}
-		
-		[Test]
-		public void Bug396433 ()
-		{
-			// We were not taking the CellBorderStyle into account when calculating
-			// the preferred size.
-			Form f = new Form ();
-			f.ClientSize = new Size (300, 300);
-			f.ShowInTaskbar = false;
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.AutoSize = true;
-			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-			tlp.ColumnCount = 2;
-			tlp.RowCount = 1;
-
-			f.Controls.Add (tlp);
-
-			Button t1 = new Button ();
-			tlp.Controls.Add (t1);
-
-			Button t2 = new Button ();
-			tlp.Controls.Add (t2);
-
-			f.Show ();
-
-			Assert.AreEqual (new Size (162, 29), tlp.PreferredSize, "A1");
-			
-			tlp.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
-
-			Assert.AreEqual (new Size (165, 31), tlp.PreferredSize, "A2");
-
-			f.Dispose ();
-		}
-		
-		[Test]
-		public void IgnoreAutoSizeMode ()
-		{
-			// It would seem that AutoSizeMode for a TableLayoutPanel is always
-			// treated as GrowAndShrink
-			Form f = new Form ();
-			f.ClientSize = new Size (300, 300);
-			f.ShowInTaskbar = false;
-
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.AutoSize = true;
-			tlp.Dock = DockStyle.Top;
-			tlp.ColumnCount = 1;
-			tlp.RowCount = 1;
-
-			f.Controls.Add (tlp);
-
-			Button t1 = new Button ();
-			tlp.Controls.Add (t1);
-
-			f.Show ();
-
-			Assert.AreEqual (29, tlp.Height, "A1");
-
-			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
-
-			Assert.AreEqual (29, tlp.Height, "A2");
-
-			f.Dispose ();
-		}
-
-		[Test]
-		public void TestTableLayoutStyleOwned ()
-		{
-			try {
-				ColumnStyle style = new ColumnStyle ();
-				TableLayoutColumnStyleCollection coll = new TableLayoutPanel ().ColumnStyles;
-				coll.Add (style);
-				TableLayoutColumnStyleCollection coll2 = new TableLayoutPanel ().ColumnStyles;
-				coll2.Add (style);
-				Assert.Fail ("#1");
-			} catch (ArgumentException ex) {
-				// PASS
-			}
-
-			try {
-				RowStyle style = new RowStyle ();
-				TableLayoutRowStyleCollection coll = new TableLayoutPanel ().RowStyles;
-				coll.Add (style);
-				TableLayoutRowStyleCollection coll2 = new TableLayoutPanel ().RowStyles;
-				coll2.Add (style);
-				Assert.Fail ("#2");
-			} catch (ArgumentException ex) {
-				// PASS
-			}
-		}
-
-		[Test] // Novell bug #497562
-		public void TestLayoutSettingsSetter ()
-		{
-			using (var tlp = new TableLayoutPanel ()) {
-				TableLayoutSettings tls;
-
-				using (var ms = new MemoryStream ()) {
-					var formatter = new BinaryFormatter ();
-					formatter.Serialize (ms, tlp.LayoutSettings);
-
-					ms.Position = 0;
-
-					tls = (TableLayoutSettings) formatter.Deserialize (ms);
-				}
-
-				tlp.LayoutSettings = tls;
-				tlp.LayoutSettings = tls; // Should not throw an exception
-			}
-		}
-
-		[Test]
-		public void XamarinBug18638 ()
-		{
-			// Spanning items should not have their entire width assigned to the first column in the span.
-			TableLayoutPanel tlp = new TableLayoutPanel ();
-			tlp.SuspendLayout ();
-			tlp.Size = new Size(291, 100);
-			tlp.AutoSize = true;
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 60));
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100));
-			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 45));
-			tlp.ColumnCount = 3;
-			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			var label1 = new Label {AutoSize = true, Text = @"This line spans all three columns in the table!"};
-			tlp.Controls.Add (label1, 0, 0);
-			tlp.SetColumnSpan (label1, 3);
-			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			tlp.RowCount = 1;
-			var label2 = new Label {AutoSize = true, Text = @"This line spans columns two and three."};
-			tlp.Controls.Add (label2, 1, 1);
-			tlp.SetColumnSpan (label2, 2);
-			tlp.RowCount = 2;
-			AddTableRow (tlp, "First Row", "This is a test");
-			AddTableRow (tlp, "Row 2", "This is another test");
-			tlp.ResumeLayout ();
-
-			var widths = tlp.GetColumnWidths ();
-			Assert.AreEqual (4, tlp.RowCount, "X18638-1");
-			Assert.AreEqual (3, tlp.ColumnCount, "X18638-2");
-			Assert.AreEqual (60, widths[0], "X18638-3");
-			Assert.Greater (label2.Width, widths[1], "X18638-5");
-			Assert.AreEqual (45, widths[2], "X18638-4");
-		}
-
-		private void AddTableRow(TableLayoutPanel tlp, string label, string text)
-		{
-			tlp.SuspendLayout ();
-			int row = tlp.RowCount;
-			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
-			var first = new Label {AutoSize = true, Dock = DockStyle.Fill, Text = label};
-			tlp.Controls.Add (first, 0, row);
-			var second = new TextBox {AutoSize = true, Text = text, Dock = DockStyle.Fill, Multiline = true};
-			tlp.Controls.Add (second, 1, row);
-			var third = new Button {Text = @"DEL", Dock = DockStyle.Fill};
-			tlp.Controls.Add (third, 2, row);
-			tlp.RowCount = row + 1;
-			tlp.ResumeLayout ();
-		}
-	}
-}
+//
+// TableLayoutTests.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System;
+using System.Drawing;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Windows.Forms;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class TableLayoutTests : TestHelper
+	{
+		[Test]
+		public void TestConstruction ()
+		{
+			TableLayoutPanel p = new TableLayoutPanel ();
+
+			Assert.AreEqual (BorderStyle.None, p.BorderStyle, "A1");
+			Assert.AreEqual (TableLayoutPanelCellBorderStyle.None, p.CellBorderStyle, "A2");
+			Assert.AreEqual (0, p.ColumnCount, "A3");
+			Assert.AreEqual (TableLayoutPanelGrowStyle.AddRows, p.GrowStyle, "A4");
+			Assert.AreEqual ("System.Windows.Forms.Layout.TableLayout", p.LayoutEngine.ToString (), "A5");
+			Assert.AreEqual ("System.Windows.Forms.TableLayoutSettings", p.LayoutSettings.ToString (), "A6");
+			Assert.AreEqual (0, p.RowCount, "A7");
+			Assert.AreEqual (0, p.ColumnStyles.Count, "A8");
+			Assert.AreEqual (0, p.RowStyles.Count, "A9");
+			Assert.AreEqual (new Size (200, 100), p.Size, "A10");
+		}
+
+		[Test]
+		public void TestPropertySetters ()
+		{
+			TableLayoutPanel p = new TableLayoutPanel ();
+
+			p.BorderStyle = BorderStyle.Fixed3D;
+			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
+			p.ColumnCount = 1;
+			p.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;
+			p.RowCount = 1;
+
+			Assert.AreEqual (BorderStyle.Fixed3D, p.BorderStyle, "A1");
+			Assert.AreEqual (TableLayoutPanelCellBorderStyle.OutsetDouble, p.CellBorderStyle, "A2");
+			Assert.AreEqual (1, p.ColumnCount, "A3");
+			Assert.AreEqual (TableLayoutPanelGrowStyle.FixedSize, p.GrowStyle, "A4");
+			Assert.AreEqual (1, p.RowCount, "A7");
+		}
+
+		[Test]
+		public void TestExtenderMethods ()
+		{
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c = new Button ();
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (-1, -1), p.GetCellPosition (c), "A1");
+			Assert.AreEqual (-1, p.GetColumn (c), "A2");
+			Assert.AreEqual (1, p.GetColumnSpan (c), "A3");
+			Assert.AreEqual (-1, p.GetRow (c), "A4");
+			Assert.AreEqual (1, p.GetRowSpan (c), "A5");
+
+			p.SetCellPosition (c, new TableLayoutPanelCellPosition (1, 1));
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetCellPosition (c), "A6");
+
+			p.SetColumn (c, 2);
+			Assert.AreEqual (2, p.GetColumn (c), "A7");
+			p.SetRow (c, 2);
+			Assert.AreEqual (2, p.GetRow (c), "A9");
+
+			p.SetColumnSpan (c, 2);
+			Assert.AreEqual (2, p.GetColumnSpan (c), "A8");
+
+
+			p.SetRowSpan (c, 2);
+			Assert.AreEqual (2, p.GetRowSpan (c), "A10");
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 2), p.GetCellPosition (c), "A11");
+
+			// ???????
+			//Assert.AreEqual (new TableLayoutPanelCellPosition (-1, -1), p.GetPositionFromControl (c), "A12");
+			//Assert.AreEqual (c, p.GetControlFromPosition(0, 0), "A13");
+		}
+
+		[Test]
+		public void TestColumnStyles ()
+		{
+			TableLayoutPanel p = new TableLayoutPanel ();
+
+			p.ColumnStyles.Add (new ColumnStyle ());
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 20F));
+
+			Assert.AreEqual (3, p.ColumnStyles.Count, "A1");
+			Assert.AreEqual (SizeType.AutoSize, p.ColumnStyles[0].SizeType, "A2");
+			Assert.AreEqual (0, p.ColumnStyles[0].Width, "A3");
+			Assert.AreEqual (SizeType.Absolute, p.ColumnStyles[1].SizeType, "A4");
+			Assert.AreEqual (0, p.ColumnStyles[1].Width, "A5");
+			Assert.AreEqual (SizeType.Percent, p.ColumnStyles[2].SizeType, "A6");
+			Assert.AreEqual (20F, p.ColumnStyles[2].Width, "A7");
+
+			p.ColumnStyles.Remove (p.ColumnStyles[0]);
+
+			Assert.AreEqual (2, p.ColumnStyles.Count, "A8");
+			Assert.AreEqual (SizeType.Absolute, p.ColumnStyles[0].SizeType, "A9");
+			Assert.AreEqual (0, p.ColumnStyles[0].Width, "A10");
+			Assert.AreEqual (SizeType.Percent, p.ColumnStyles[1].SizeType, "A11");
+			Assert.AreEqual (20F, p.ColumnStyles[1].Width, "A12");
+		}
+
+		[Test]
+		public void TestRowStyles ()
+		{
+			TableLayoutPanel p = new TableLayoutPanel ();
+
+			p.RowStyles.Add (new RowStyle ());
+			p.RowStyles.Add (new RowStyle (SizeType.Absolute));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 20F));
+
+			Assert.AreEqual (3, p.RowStyles.Count, "A1");
+			Assert.AreEqual (SizeType.AutoSize, p.RowStyles[0].SizeType, "A2");
+			Assert.AreEqual (0, p.RowStyles[0].Height, "A3");
+			Assert.AreEqual (SizeType.Absolute, p.RowStyles[1].SizeType, "A4");
+			Assert.AreEqual (0, p.RowStyles[1].Height, "A5");
+			Assert.AreEqual (SizeType.Percent, p.RowStyles[2].SizeType, "A6");
+			Assert.AreEqual (20F, p.RowStyles[2].Height, "A7");
+
+			p.RowStyles.Remove (p.RowStyles[0]);
+
+			Assert.AreEqual (2, p.RowStyles.Count, "A8");
+			Assert.AreEqual (SizeType.Absolute, p.RowStyles[0].SizeType, "A9");
+			Assert.AreEqual (0, p.RowStyles[0].Height, "A10");
+			Assert.AreEqual (SizeType.Percent, p.RowStyles[1].SizeType, "A11");
+			Assert.AreEqual (20F, p.RowStyles[1].Height, "A12");
+		}
+
+		[Test]
+		public void TestColumnStyles3 ()
+		{
+			// Don't lose the 2nd style
+			TableLayoutPanel p = new TableLayoutPanel ();
+
+			p.ColumnCount = 2;
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20F));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20F));
+
+			p.ColumnCount = 1;
+
+			Assert.AreEqual (2, p.ColumnStyles.Count, "A1");
+		}
+
+		[Test]
+		public void TestColumnStyles2 ()
+		{
+			// Don't lose the 2nd style
+			TableLayoutPanel p = new TableLayoutPanel ();
+
+			p.ColumnCount = 1;
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20F));
+
+			p.ColumnCount = 2;
+
+			Assert.AreEqual (1, p.ColumnStyles.Count, "A2");
+		}
+
+		[Test]
+		public void TestCellPositioning ()
+		{
+			// Standard Add
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c4), "C4");
+		}
+
+		[Test]
+		public void TestCellPositioning2 ()
+		{
+			// Growstyle = Add Rows
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+			Control c5 = new Button ();
+			Control c6 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+			p.Controls.Add (c5);
+			p.Controls.Add (c6);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c4), "C4");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c5), "C5");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 2), p.GetPositionFromControl (c6), "C6");
+		}
+
+		[Test]
+		public void TestCellPositioning3 ()
+		{
+			// Growstyle = Add Columns
+			TableLayoutPanel p = new TableLayoutPanel ();
+			p.GrowStyle = TableLayoutPanelGrowStyle.AddColumns;
+
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+			Control c5 = new Button ();
+			Control c6 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+			p.Controls.Add (c5);
+			p.Controls.Add (c6);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 0), p.GetPositionFromControl (c3), "C3");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c4), "C4");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c5), "C5");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 1), p.GetPositionFromControl (c6), "C6");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void TestCellPositioning4 ()
+		{
+			// Growstyle = Fixed Size
+			TableLayoutPanel p = new TableLayoutPanel ();
+			p.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;
+
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+			Control c5 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+			p.Controls.Add (c5);
+		}
+
+		[Test]
+		public void TestCellPositioning5 ()
+		{
+			// One control have fixed position
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetCellPosition (c4, new TableLayoutPanelCellPosition (0, 0));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c4), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c1), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C3");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C4");
+		}
+
+		[Test]
+		public void TestCellPositioning6 ()
+		{
+			// One control has fixed column, it should be ignored
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetColumn (c3, 1);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c4), "C4");
+		}
+
+		[Test]
+		public void TestCellPositioning7 ()
+		{
+			// One control has fixed column and row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetColumn (c3, 1);
+			p.SetRow (c3, 1);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C3");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c4), "C4");
+		}
+
+		[Test]
+		public void TestCellPositioning8 ()
+		{
+			// Column span
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetColumnSpan (c1, 2);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning9 ()
+		{
+			// Row span
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetRowSpan (c1, 2);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 1), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning10 ()
+		{
+			// Column span = 2, but control is in the last column, forces control back into 1st column, next row
+			// I have no clue why c3 shouldn't be in (1,0), but MS says it's not
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetColumnSpan (c2, 2);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning11 ()
+		{
+			// Row span = 2, but control is in the last row, creates new row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetRowSpan (c3, 2);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning12 ()
+		{
+			// Requesting a column greater than ColumnCount, request is ignored
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetColumn (c1, 4);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning13 ()
+		{
+			// Row span = 2, but control is in the last row, creates new row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 3;
+			p.RowCount = 2;
+
+			p.SetRowSpan (c3, 2);
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 0), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void TestCellPositioning14 ()
+		{
+			// Col span = 3, fixed grow style
+			TableLayoutPanel p = new TableLayoutPanel ();
+			p.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;
+			Control c1 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetColumnSpan (c1, 3);
+
+			p.Controls.Add (c1);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+		}
+
+		[Test]
+		public void TestCellPositioning15 ()
+		{
+			// Column span = 2, but control is in the last column, forces control back into 1st column, next row
+			// I have no clue why c3 shouldn't be in (1,0), but MS says it's not
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetColumnSpan (c2, 2);
+			p.SetCellPosition (c2, new TableLayoutPanelCellPosition (1, 0));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning16 ()
+		{
+			// Row span = 2, but control is in the last row, creates new row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.SetRowSpan (c3, 2);
+			p.SetCellPosition (c3, new TableLayoutPanelCellPosition (0, 1));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (1, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 1), p.GetPositionFromControl (c3), "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning17 ()
+		{
+			// ColumnCount == RowCount == 0, but control is added at > 0.
+			// The columns and rows are created, but ColumnCount and RowCount remains 0
+			//
+			TableLayoutPanel p = new TableLayoutPanel ();
+			p.ColumnCount = 0;
+			p.RowCount = 0;
+			Control c1 = new Button ();
+
+			p.Controls.Add (c1, 6, 7);
+			Assert.AreEqual (new TableLayoutPanelCellPosition (6, 7), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (0, p.LayoutSettings.ColumnCount, "C2");
+			Assert.AreEqual (0, p.LayoutSettings.RowCount, "C3");
+		}
+
+		[Test]
+		public void TestCellPositioning18 ()
+		{
+			// A control with both rowspan and columnspan > 1 was getting
+			// other controls put into its extent (i.e. c3 was ending up
+			// at (1,1) instead of (2,1).
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+
+			p.ColumnCount = 3;
+			p.RowCount = 4;
+
+			p.SetRowSpan (c1, 2);
+			p.SetColumnSpan (c1, 2);
+			p.SetCellPosition (c1, new TableLayoutPanelCellPosition (0, 0));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 0), p.GetPositionFromControl (c1), "C1");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 0), p.GetPositionFromControl (c2), "C2");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (2, 1), p.GetPositionFromControl (c3), "C3");
+			Assert.AreEqual (new TableLayoutPanelCellPosition (0, 2), p.GetPositionFromControl (c4), "C4");
+		}
+
+		[Test]
+		public void TestRowColumnSizes1 ()
+		{
+			// Row span = 2, but control is in the last row, creates new row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 1;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (71, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
+		}
+
+		[Test]
+		public void TestRowColumnSizes2 ()
+		{
+			// Row span = 2, but control is in the last row, creates new row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 1;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 100F));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (100, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
+		}
+
+		[Test]
+		public void TestRowColumnSizes3 ()
+		{
+			// Row span = 2, but control is in the last row, creates new row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+			Control c5 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 1;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+			p.Controls.Add (c5);
+
+			Assert.AreEqual (42, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (29, p.GetRowHeights ()[2], "D3");
+		}
+
+		[Test]
+		public void TestRowColumnSizes4 ()
+		{
+			// Row span = 2, but control is in the last row, creates new row
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+			Control c4 = new Button ();
+			Control c5 = new Button ();
+			Control c6 = new Button ();
+			Control c7 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 1;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+			p.Controls.Add (c4);
+			p.Controls.Add (c5);
+			p.Controls.Add (c6);
+			p.Controls.Add (c7);
+
+			//Assert.AreEqual (100, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (29, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (29, p.GetRowHeights ()[2], "D3");
+			Assert.AreEqual (29, p.GetRowHeights ()[3], "D4");
+		}
+
+		[Test]
+		public void TestRowColumnSizes5 ()
+		{
+			// 2 Absolute Columns/Rows
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 20));
+			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 30));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 20));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 30));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (20, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (80, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (20, p.GetColumnWidths ()[0], "D3");
+			Assert.AreEqual (180, p.GetColumnWidths ()[1], "D4");
+		}
+
+		[Test]
+		public void TestRowColumnSizes6 ()
+		{
+			// 2 50% Columns/Rows
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (50, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (100, p.GetColumnWidths ()[0], "D3");
+			Assert.AreEqual (100, p.GetColumnWidths ()[1], "D4");
+		}
+
+		[Test]
+		public void TestRowColumnSizes7 ()
+		{
+			// 1 Absolute and 2 Percent Columns/Rows
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 3;
+			p.RowCount = 3;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 50));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 50));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (25, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (25, p.GetRowHeights ()[2], "D3");
+			Assert.AreEqual (50, p.GetColumnWidths ()[0], "D4");
+			Assert.AreEqual (75, p.GetColumnWidths ()[1], "D5");
+			Assert.AreEqual (75, p.GetColumnWidths ()[2], "D6");
+		}
+
+		[Test]
+		public void TestRowColumnSizes8 ()
+		{
+			// 1 Absolute and 2 Percent Columns/Rows (with total percents > 100)
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 3;
+			p.RowCount = 3;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 50));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 100));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 50));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (25, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (25, p.GetRowHeights ()[2], "D3");
+			Assert.AreEqual (50, p.GetColumnWidths ()[0], "D4");
+			Assert.AreEqual (75, p.GetColumnWidths ()[1], "D5");
+			Assert.AreEqual (75, p.GetColumnWidths ()[2], "D6");
+		}
+
+		[Test]
+		public void TestRowColumnSizes9 ()
+		{
+			// 1 Absolute and 2 Percent Columns/Rows (with total percents > 100)
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 3;
+			p.RowCount = 3;
+
+			p.RowStyles.Add (new RowStyle (SizeType.Absolute, 50));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 80));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 40));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 50));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 80));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 40));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (50, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (33, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (17, p.GetRowHeights ()[2], "D3");
+			Assert.AreEqual (50, p.GetColumnWidths ()[0], "D4");
+			Assert.AreEqual (100, p.GetColumnWidths ()[1], "D5");
+			Assert.AreEqual (50, p.GetColumnWidths ()[2], "D6");
+		}
+
+		[Test]
+		public void TestRowColumnSizes10 ()
+		{
+			// 2 AutoSize Columns/Rows
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			p.ColumnCount = 2;
+			p.RowCount = 2;
+
+			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
+
+			p.Controls.Add (c1);
+			p.Controls.Add (c2);
+			p.Controls.Add (c3);
+
+			Assert.AreEqual (29, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (71, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (81, p.GetColumnWidths ()[0], "D3");
+			Assert.AreEqual (119, p.GetColumnWidths ()[1], "D4");
+		}
+
+		[Test]
+		public void TestRowColumnSizes11 ()
+		{
+			// AutoSize Columns/Rows, and column-spanning controls, but
+			// no control starts in column 1.
+			// Mono's old behavior was for column 1 to have a zero width.
+			TableLayoutPanel p = new TableLayoutPanel ();
+			Control c1 = new Button ();
+			Control c2 = new Button ();
+			Control c3 = new Button ();
+
+			c1.Size = new Size (150, 25);
+			c2.Size = new Size (75, 25);
+			c3.Size = new Size (150, 25);
+
+			p.ColumnCount = 4;
+			p.RowCount = 3;
+
+			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			p.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
+			p.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
+
+			p.SetColumnSpan (c1, 2);
+			p.SetColumnSpan (c3, 2);
+
+			p.Controls.Add (c1, 0, 0);
+			p.Controls.Add (c2, 0, 1);
+			p.Controls.Add (c3, 1, 1);
+
+			// The bug fix gets Mono to behave very closely to .NET,
+			// but not exactly...3 pixels off somewhere...
+			Assert.AreEqual (31, p.GetRowHeights ()[0], "D1");
+			Assert.AreEqual (31, p.GetRowHeights ()[1], "D2");
+			Assert.AreEqual (81, p.GetColumnWidths ()[0], "D3");
+			Assert.LessOrEqual (75, p.GetColumnWidths ()[1], "D4");
+			Assert.GreaterOrEqual (78, p.GetColumnWidths ()[1], "D5");
+			Assert.LessOrEqual (78, p.GetColumnWidths ()[2], "D6");
+			Assert.GreaterOrEqual (81, p.GetColumnWidths ()[2], "D7");
+		}
+		
+		[Test]
+		public void Bug81843 ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+			
+		        TableLayoutPanel tableLayoutPanel1;
+			Button button2;
+			TextBox textBox1;
+			Button button4;
+
+			tableLayoutPanel1 = new TableLayoutPanel ();
+			button2 = new Button ();
+			button4 = new Button ();
+			textBox1 = new TextBox ();
+			tableLayoutPanel1.SuspendLayout ();
+			f.SuspendLayout ();
+
+			tableLayoutPanel1.AutoSize = true;
+			tableLayoutPanel1.ColumnCount = 3;
+			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
+			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
+			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
+			tableLayoutPanel1.Controls.Add (button2, 0, 1);
+			tableLayoutPanel1.Controls.Add (button4, 2, 1);
+			tableLayoutPanel1.Controls.Add (textBox1, 1, 0);
+			tableLayoutPanel1.Location = new Point (0, 0);
+			tableLayoutPanel1.RowCount = 2;
+			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
+			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
+			tableLayoutPanel1.Size = new Size (292, 287);
+
+			button2.Size = new Size (75, 23);
+			
+			button4.Size = new Size (75, 23);
+
+			textBox1.Dock = DockStyle.Fill;
+			textBox1.Location = new Point (84, 3);
+			textBox1.Multiline = true;
+			textBox1.Size = new Size (94, 137);
+
+			f.ClientSize = new Size (292, 312);
+			f.Controls.Add (tableLayoutPanel1);
+			f.Name = "Form1";
+			f.Text = "Form1";
+			tableLayoutPanel1.ResumeLayout (false);
+			tableLayoutPanel1.PerformLayout ();
+			f.ResumeLayout (false);
+			f.PerformLayout ();
+
+			f.Show ();
+
+			Assert.AreEqual (new Rectangle (3, 146, 75, 23), button2.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (184, 146, 75, 23), button4.Bounds, "A2");
+			Assert.AreEqual (new Rectangle (84, 3, 94, 137), textBox1.Bounds, "A3");
+			
+			f.Dispose ();
+		}
+		
+		[Test]  // From bug #81884
+		public void CellBorderStyle ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+
+			TableLayoutPanel p = new TableLayoutPanel ();
+			p = new TableLayoutPanel ();
+			p.ColumnCount = 3;
+			p.ColumnStyles.Add (new ColumnStyle ());
+			p.ColumnStyles.Add (new ColumnStyle ());
+			p.ColumnStyles.Add (new ColumnStyle ());
+			p.Dock = DockStyle.Top;
+			p.Height = 200;
+			p.RowCount = 2;
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
+			p.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
+			f.Controls.Add (p);
+
+			Label _labelA = new Label ();
+			_labelA.Dock = DockStyle.Fill;
+			_labelA.Size = new Size (95, 20);
+			_labelA.Text = "A";
+			p.Controls.Add (_labelA, 0, 0);
+
+			Label _labelB = new Label ();
+			_labelB.Dock = DockStyle.Fill;
+			_labelB.Size = new Size (95, 20);
+			_labelB.Text = "B";
+			p.Controls.Add (_labelB, 1, 0);
+
+			Label _labelC = new Label ();
+			_labelC.Dock = DockStyle.Fill;
+			_labelC.Size = new Size (95, 20);
+			_labelC.Text = "C";
+			p.Controls.Add (_labelC, 2, 0);
+
+			Label _labelD = new Label ();
+			_labelD.Dock = DockStyle.Fill;
+			_labelD.Size = new Size (95, 20);
+			_labelD.Text = "D";
+			p.Controls.Add (_labelD, 0, 1);
+
+			Label _labelE = new Label ();
+			_labelE.Dock = DockStyle.Fill;
+			_labelE.Size = new Size (95, 20);
+			_labelE.Text = "E";
+			p.Controls.Add (_labelE, 1, 1);
+
+			Label _labelF = new Label ();
+			_labelF.Dock = DockStyle.Fill;
+			_labelF.Size = new Size (95, 20);
+			_labelF.Text = "F";
+			p.Controls.Add (_labelF, 2, 1);
+
+			_labelA.BackColor = Color.Red;
+			_labelB.BackColor = Color.Orange;
+			_labelC.BackColor = Color.Yellow;
+			_labelD.BackColor = Color.Green;
+			_labelE.BackColor = Color.Blue;
+			_labelF.BackColor = Color.Purple;
+
+			f.Show ();
+			// None
+			Assert.AreEqual (new Rectangle (3, 0, 95, 100), _labelA.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (104, 0, 95, 100), _labelB.Bounds, "A2");
+			Assert.AreEqual (new Rectangle (205, 0, 95, 100), _labelC.Bounds, "A3");
+			Assert.AreEqual (new Rectangle (3, 100, 95, 100), _labelD.Bounds, "A4");
+			Assert.AreEqual (new Rectangle (104, 100, 95, 100), _labelE.Bounds, "A5");
+			Assert.AreEqual (new Rectangle (205, 100, 95, 100), _labelF.Bounds, "A6");
+			
+			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
+			Assert.AreEqual (new Rectangle (4, 1, 95, 98), _labelA.Bounds, "A7");
+			Assert.AreEqual (new Rectangle (106, 1, 95, 98), _labelB.Bounds, "A8");
+			Assert.AreEqual (new Rectangle (208, 1, 95, 98), _labelC.Bounds, "A9");
+			Assert.AreEqual (new Rectangle (4, 100, 95, 99), _labelD.Bounds, "A10");
+			Assert.AreEqual (new Rectangle (106, 100, 95, 99), _labelE.Bounds, "A11");
+			Assert.AreEqual (new Rectangle (208, 100, 95, 99), _labelF.Bounds, "A12");
+
+			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset;
+			Assert.AreEqual (new Rectangle (5, 2, 95, 97), _labelA.Bounds, "A13");
+			Assert.AreEqual (new Rectangle (108, 2, 95, 97), _labelB.Bounds, "A14");
+			Assert.AreEqual (new Rectangle (211, 2, 95, 97), _labelC.Bounds, "A15");
+			Assert.AreEqual (new Rectangle (5, 101, 95, 97), _labelD.Bounds, "A16");
+			Assert.AreEqual (new Rectangle (108, 101, 95, 97), _labelE.Bounds, "A17");
+			Assert.AreEqual (new Rectangle (211, 101, 95, 97), _labelF.Bounds, "A18");
+
+			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.InsetDouble;
+			Assert.AreEqual (new Rectangle (6, 3, 95, 95), _labelA.Bounds, "A19");
+			Assert.AreEqual (new Rectangle (110, 3, 95, 95), _labelB.Bounds, "A20");
+			Assert.AreEqual (new Rectangle (214, 3, 95, 95), _labelC.Bounds, "A21");
+			Assert.AreEqual (new Rectangle (6, 101, 95, 96), _labelD.Bounds, "A22");
+			Assert.AreEqual (new Rectangle (110, 101, 95, 96), _labelE.Bounds, "A23");
+			Assert.AreEqual (new Rectangle (214, 101, 95, 96), _labelF.Bounds, "A24");
+
+			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.Outset;
+			Assert.AreEqual (new Rectangle (5, 2, 95, 97), _labelA.Bounds, "A25");
+			Assert.AreEqual (new Rectangle (108, 2, 95, 97), _labelB.Bounds, "A26");
+			Assert.AreEqual (new Rectangle (211, 2, 95, 97), _labelC.Bounds, "A27");
+			Assert.AreEqual (new Rectangle (5, 101, 95, 97), _labelD.Bounds, "A28");
+			Assert.AreEqual (new Rectangle (108, 101, 95, 97), _labelE.Bounds, "A29");
+			Assert.AreEqual (new Rectangle (211, 101, 95, 97), _labelF.Bounds, "A30");
+
+			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
+			Assert.AreEqual (new Rectangle (6, 3, 95, 95), _labelA.Bounds, "A31");
+			Assert.AreEqual (new Rectangle (110, 3, 95, 95), _labelB.Bounds, "A32");
+			Assert.AreEqual (new Rectangle (214, 3, 95, 95), _labelC.Bounds, "A33");
+			Assert.AreEqual (new Rectangle (6, 101, 95, 96), _labelD.Bounds, "A34");
+			Assert.AreEqual (new Rectangle (110, 101, 95, 96), _labelE.Bounds, "A35");
+			Assert.AreEqual (new Rectangle (214, 101, 95, 96), _labelF.Bounds, "A36");
+
+			p.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetPartial;
+			Assert.AreEqual (new Rectangle (6, 3, 95, 95), _labelA.Bounds, "A37");
+			Assert.AreEqual (new Rectangle (110, 3, 95, 95), _labelB.Bounds, "A38");
+			Assert.AreEqual (new Rectangle (214, 3, 95, 95), _labelC.Bounds, "A39");
+			Assert.AreEqual (new Rectangle (6, 101, 95, 96), _labelD.Bounds, "A40");
+			Assert.AreEqual (new Rectangle (110, 101, 95, 96), _labelE.Bounds, "A41");
+			Assert.AreEqual (new Rectangle (214, 101, 95, 96), _labelF.Bounds, "A42");
+			
+			f.Close ();
+		}
+
+		[Test]
+		public void Bug81936 ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+
+			TableLayoutPanel tableLayoutPanel1;
+			Label button2;
+			Label button4;
+
+			tableLayoutPanel1 = new TableLayoutPanel ();
+			button2 = new Label ();
+			button4 = new Label ();
+			button2.Text = "Test1";
+			button4.Text = "Test2";
+			button2.Anchor = AnchorStyles.Left;
+			button4.Anchor = AnchorStyles.Left;
+			button2.Height = 14;
+			button4.Height = 14;
+			tableLayoutPanel1.SuspendLayout ();
+			f.SuspendLayout ();
+
+			tableLayoutPanel1.ColumnCount = 1;
+			tableLayoutPanel1.ColumnStyles.Add (new ColumnStyle ());
+			tableLayoutPanel1.Controls.Add (button2, 0, 0);
+			tableLayoutPanel1.Controls.Add (button4, 0, 1);
+			tableLayoutPanel1.Location = new Point (0, 0);
+			tableLayoutPanel1.RowCount = 2;
+			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Absolute, 28F));
+			tableLayoutPanel1.RowStyles.Add (new RowStyle (SizeType.Absolute, 28F));
+			tableLayoutPanel1.Size = new Size (292, 56);
+
+			f.ClientSize = new Size (292, 312);
+			f.Controls.Add (tableLayoutPanel1);
+			f.Name = "Form1";
+			f.Text = "Form1";
+			tableLayoutPanel1.ResumeLayout (false);
+			tableLayoutPanel1.PerformLayout ();
+			f.ResumeLayout (false);
+			f.PerformLayout ();
+
+			f.Show ();
+
+			Assert.AreEqual (new Rectangle (3, 7, 100, 14), button2.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (3, 35, 100, 14), button4.Bounds, "A2");
+
+			f.Dispose ();
+		}
+
+		[Test]
+		public void Bug82605 ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+			
+			Label l = new Label ();
+
+			TableLayoutPanel table = new TableLayoutPanel ();
+			table.ColumnCount = 1;
+			table.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100F));
+
+			table.RowCount = 2;
+			table.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
+			table.RowStyles.Add (new RowStyle (SizeType.Absolute, 20F));
+
+			table.Controls.Add (l, 0, 1);
+			table.Location = new Point (0, 0);
+			table.Width = 250;
+
+			l.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+			l.AutoSize = true;
+			l.Location = new Point (3, 352);
+			l.Size = new Size (578, 13);
+			l.Text = "label1";
+			l.TextAlign = ContentAlignment.MiddleCenter;
+
+			f.Controls.Add (table);
+			f.Show ();
+			
+			// Height is font dependent, but this bug is about the width anyways
+			Assert.AreEqual (244, l.Width, "A1");
+
+			f.Dispose ();
+		}
+		
+		[Test] // bug #82040
+		public void ShowNoChildren ()
+		{
+			Form form = new Form ();
+			form.ShowInTaskbar = false;
+
+			TableLayoutPanel tableLayoutPanel = new TableLayoutPanel ();
+			tableLayoutPanel.ColumnCount = 3;
+			tableLayoutPanel.Dock = DockStyle.Fill;
+			tableLayoutPanel.RowCount = 11;
+			form.Controls.Add (tableLayoutPanel);
+
+			form.Show ();
+			form.Refresh ();
+			form.Dispose ();
+		}
+
+		[Test] // bug #82041
+		public void DontCallResumeLayout ()
+		{
+			Form form = new Form ();
+			form.ShowInTaskbar = false;
+
+			TableLayoutPanel tableLayoutPanel = new TableLayoutPanel ();
+			form.Controls.Add (tableLayoutPanel);
+			tableLayoutPanel.SuspendLayout ();
+			tableLayoutPanel.ColumnCount = 3;
+			tableLayoutPanel.Dock = DockStyle.Fill;
+			tableLayoutPanel.RowCount = 11;
+			tableLayoutPanel.Controls.Add (new Button ());
+
+			form.Show ();
+			form.Refresh ();
+			form.Dispose ();
+		}
+		
+		[Test] // bug #346246
+		public void AutoSizePanelVertical ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+			
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.AutoSize = true;
+			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			tlp.ColumnCount = 1;
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100F));
+			tlp.Location = new Point (12, 12);
+			tlp.Name = "tableLayoutPanel1";
+			tlp.RowCount = 2;
+			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
+			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 50F));
+			tlp.Size = new Size (139, 182);
+			tlp.TabIndex = 0;
+
+			f.Controls.Add (tlp);
+
+			Button b = new Button ();
+			b.Size = new Size (100, 100);
+			tlp.Controls.Add (b, 0, 0);
+
+			PictureBox p = new PictureBox ();
+			p.Size = new Size (100, 100);
+			tlp.Controls.Add (p,0,1);
+			
+			f.Show ();
+
+			Assert.AreEqual (new Rectangle (12, 12, 106, 212), tlp.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (3, 3, 100, 100), b.Bounds, "A2");
+			Assert.AreEqual (new Rectangle (3, 109, 100, 100), p.Bounds, "A3");
+			
+			b.Width += 20;
+			b.Height += 20;
+
+			Assert.AreEqual (new Rectangle (12, 12, 126, 252), tlp.Bounds, "B1");
+			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "B2");
+			Assert.AreEqual (new Rectangle (3, 129, 100, 100), p.Bounds, "B3");
+
+			p.Width += 20;
+			p.Height += 20;
+
+			Assert.AreEqual (new Rectangle (12, 12, 126, 252), tlp.Bounds, "C1");
+			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "C2");
+			Assert.AreEqual (new Rectangle (3, 129, 120, 120), p.Bounds, "C3");
+			
+			f.Dispose ();
+		}
+
+		[Test] // bug #346246
+		public void AutoSizePanelHorizontal ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.AutoSize = true;
+			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			tlp.ColumnCount = 2;
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50F));
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50F));
+			tlp.Location = new Point (12, 12);
+			tlp.Name = "tableLayoutPanel1";
+			tlp.RowCount = 1;
+			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
+			tlp.Size = new Size (139, 182);
+			tlp.TabIndex = 0;
+
+			f.Controls.Add (tlp);
+
+			Button b = new Button ();
+			b.Size = new Size (100, 100);
+			tlp.Controls.Add (b, 0, 0);
+
+			PictureBox p = new PictureBox ();
+			p.Size = new Size (100, 100);
+			tlp.Controls.Add (p, 1, 0);
+
+			f.Show ();
+
+			Assert.AreEqual (new Rectangle (12, 12, 212, 106), tlp.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (3, 3, 100, 100), b.Bounds, "A2");
+			Assert.AreEqual (new Rectangle (109, 3, 100, 100), p.Bounds, "A3");
+
+			b.Width += 20;
+			b.Height += 20;
+
+			Assert.AreEqual (new Rectangle (12, 12, 252, 126), tlp.Bounds, "B1");
+			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "B2");
+			Assert.AreEqual (new Rectangle (129, 3, 100, 100), p.Bounds, "B3");
+
+			p.Width += 20;
+			p.Height += 20;
+
+			Assert.AreEqual (new Rectangle (12, 12, 252, 126), tlp.Bounds, "C1");
+			Assert.AreEqual (new Rectangle (3, 3, 120, 120), b.Bounds, "C2");
+			Assert.AreEqual (new Rectangle (129, 3, 120, 120), p.Bounds, "C3");
+
+			f.Dispose ();
+		}
+		
+		[Test]
+		public void Bug354676 ()
+		{
+			Form f = new Form ();
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.Dock = DockStyle.Fill;
+			tlp.Padding = new Padding (40);
+			tlp.RowCount = 2;
+			tlp.ColumnCount = 1;
+			f.Controls.Add (tlp);
+
+			Button b1 = new Button ();
+			tlp.Controls.Add (b1);
+
+			Button b2 = new Button ();
+			tlp.Controls.Add (b2);
+
+			f.Show ();
+
+			Assert.AreEqual (new Rectangle (43, 43, 75, 23), b1.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (43, 72, 75, 23), b2.Bounds, "A2");
+			
+			f.Close ();
+			f.Dispose ();
+		}
+		
+		[Test]
+		public void Bug355408 ()
+		{
+			Form f = new Form ();
+			f.ClientSize = new Size (300, 300);
+			
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.Dock = DockStyle.Fill;
+			tlp.RowCount = 2;
+			tlp.ColumnCount = 2;
+			f.Controls.Add (tlp);
+
+			Button b1 = new Button ();
+			tlp.Controls.Add (b1);
+
+			Button b2 = new Button ();
+			tlp.Controls.Add (b2);
+			
+			Button b3 = new Button ();
+			b3.Dock = DockStyle.Fill;
+			b3.Width = 250;
+			tlp.SetColumnSpan (b3, 2);
+			tlp.Controls.Add (b3);
+
+			f.Show ();
+
+			Assert.AreEqual (new Rectangle (3, 3, 75, 23), b1.Bounds, "A1");
+			Assert.AreEqual (new Rectangle (84, 3, 75, 23), b2.Bounds, "A2");
+			Assert.AreEqual (new Rectangle (3, 32, 294, 265), b3.Bounds, "A3");
+
+			f.Close ();
+			f.Dispose ();
+		}
+		
+		[Test]
+		public void Bug402651 ()
+		{
+			Form f = new Form ();
+			f.ClientSize = new Size (300, 300);
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.Dock = DockStyle.Fill;
+			tlp.RowCount = 2;
+			tlp.RowStyles.Add (new RowStyle (SizeType.Percent, 100F));
+			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			f.Controls.Add (tlp);
+
+			Button b1 = new Button ();
+			b1.Text = String.Empty;
+			b1.Dock = DockStyle.Fill;
+			tlp.Controls.Add (b1, 0, 0);
+
+			Button b2 = new Button ();
+			b2.Text = String.Empty;
+			b2.Size = new Size (100, 100);
+			b2.Anchor = AnchorStyles.None;
+			b2.Dock = DockStyle.None;
+			b2.Visible = false;
+			tlp.Controls.Add (b2, 0, 1);
+
+			f.Show ();
+
+			b2.Visible = true;
+			Assert.AreEqual (new Size (100, 100), b2.Size, "A1");
+
+			b2.Visible = false;
+			b2.Anchor = AnchorStyles.Left;
+			b2.Visible = true;
+			Assert.AreEqual (new Size (100, 100), b2.Size, "A2");
+
+			f.Dispose ();
+		}
+
+		[Test]
+		public void Bug354672 ()
+		{
+			Form f = new Form ();
+			f.ClientSize = new Size (300, 300);
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.AutoSize = true;
+			tlp.ColumnCount = 2;
+			tlp.RowCount = 1;
+			f.Controls.Add (tlp);
+
+			TextBox t1 = new TextBox ();
+			t1.Dock = DockStyle.Fill;
+			tlp.Controls.Add (t1);
+
+			TextBox t2 = new TextBox ();
+			t2.Dock = DockStyle.Fill;
+			tlp.Controls.Add (t2);
+
+			Assert.AreEqual (new Size (212, t1.Height + 6), tlp.PreferredSize, "A1");
+
+			f.Dispose ();
+		}
+
+		[Test]
+		public void Bug354672More ()
+		{
+			Form f = new Form ();
+			f.ClientSize = new Size (300, 300);
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.AutoSize = true;
+			tlp.ColumnCount = 2;
+			tlp.RowCount = 1;
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.AutoSize));
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 50f));
+			
+			f.Controls.Add (tlp);
+
+			TextBox t1 = new TextBox ();
+			t1.Dock = DockStyle.Fill;
+			tlp.Controls.Add (t1);
+
+			TextBox t2 = new TextBox ();
+			t2.Dock = DockStyle.Fill;
+			tlp.Controls.Add (t2);
+
+			Assert.AreEqual (new Size (212, t1.Height + 6), tlp.PreferredSize, "A1");
+
+			f.Dispose ();
+		}
+		
+		[Test]
+		public void Bug367249 ()
+		{
+			// Setting a colspan greater than the number of columns was
+			// causing an IOORE, this test just should not exception
+			TableLayoutPanel LayoutPanel = new TableLayoutPanel ();
+			LayoutPanel.ColumnCount = 1;
+			LayoutPanel.RowCount = 2;
+
+			Button OkButton = new Button ();
+			OkButton.Text = "OK";
+			LayoutPanel.Controls.Add (OkButton);
+			LayoutPanel.SetColumnSpan (OkButton, 3);
+		}
+		
+		[Test]
+		public void Bug396141 ()
+		{
+			// The issue is the user has set the RowCount to 0, but after
+			// we arrange the controls, we have 1 row.  GetPreferredSize (for
+			// AutoSize) was using 0 instead of 1.
+
+			Form f = new Form ();
+			f.ClientSize = new Size (300, 300);
+			f.ShowInTaskbar = false;
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.AutoSize = true;
+			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			tlp.ColumnCount = 2;
+			tlp.RowCount = 0;
+
+			f.Controls.Add (tlp);
+
+			TextBox t1 = new TextBox ();
+			t1.Dock = DockStyle.Fill;
+			tlp.Controls.Add (t1);
+
+			TextBox t2 = new TextBox ();
+			t2.Dock = DockStyle.Fill;
+			tlp.Controls.Add (t2);
+
+			f.Show ();
+			
+			Assert.IsTrue (tlp.Height > 0, "Height must be > 0");
+			Assert.IsTrue (tlp.Width > 0, "Width must be > 0");
+
+			f.Dispose ();
+		}
+		
+		[Test]
+		public void Bug396433 ()
+		{
+			// We were not taking the CellBorderStyle into account when calculating
+			// the preferred size.
+			Form f = new Form ();
+			f.ClientSize = new Size (300, 300);
+			f.ShowInTaskbar = false;
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.AutoSize = true;
+			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+			tlp.ColumnCount = 2;
+			tlp.RowCount = 1;
+
+			f.Controls.Add (tlp);
+
+			Button t1 = new Button ();
+			tlp.Controls.Add (t1);
+
+			Button t2 = new Button ();
+			tlp.Controls.Add (t2);
+
+			f.Show ();
+
+			Assert.AreEqual (new Size (162, 29), tlp.PreferredSize, "A1");
+			
+			tlp.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
+
+			Assert.AreEqual (new Size (165, 31), tlp.PreferredSize, "A2");
+
+			f.Dispose ();
+		}
+		
+		[Test]
+		public void IgnoreAutoSizeMode ()
+		{
+			// It would seem that AutoSizeMode for a TableLayoutPanel is always
+			// treated as GrowAndShrink
+			Form f = new Form ();
+			f.ClientSize = new Size (300, 300);
+			f.ShowInTaskbar = false;
+
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.AutoSize = true;
+			tlp.Dock = DockStyle.Top;
+			tlp.ColumnCount = 1;
+			tlp.RowCount = 1;
+
+			f.Controls.Add (tlp);
+
+			Button t1 = new Button ();
+			tlp.Controls.Add (t1);
+
+			f.Show ();
+
+			Assert.AreEqual (29, tlp.Height, "A1");
+
+			tlp.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+
+			Assert.AreEqual (29, tlp.Height, "A2");
+
+			f.Dispose ();
+		}
+
+		[Test]
+		public void TestTableLayoutStyleOwned ()
+		{
+			try {
+				ColumnStyle style = new ColumnStyle ();
+				TableLayoutColumnStyleCollection coll = new TableLayoutPanel ().ColumnStyles;
+				coll.Add (style);
+				TableLayoutColumnStyleCollection coll2 = new TableLayoutPanel ().ColumnStyles;
+				coll2.Add (style);
+				Assert.Fail ("#1");
+			} catch (ArgumentException ex) {
+				// PASS
+			}
+
+			try {
+				RowStyle style = new RowStyle ();
+				TableLayoutRowStyleCollection coll = new TableLayoutPanel ().RowStyles;
+				coll.Add (style);
+				TableLayoutRowStyleCollection coll2 = new TableLayoutPanel ().RowStyles;
+				coll2.Add (style);
+				Assert.Fail ("#2");
+			} catch (ArgumentException ex) {
+				// PASS
+			}
+		}
+
+		[Test] // Novell bug #497562
+		public void TestLayoutSettingsSetter ()
+		{
+			using (var tlp = new TableLayoutPanel ()) {
+				TableLayoutSettings tls;
+
+				using (var ms = new MemoryStream ()) {
+					var formatter = new BinaryFormatter ();
+					formatter.Serialize (ms, tlp.LayoutSettings);
+
+					ms.Position = 0;
+
+					tls = (TableLayoutSettings) formatter.Deserialize (ms);
+				}
+
+				tlp.LayoutSettings = tls;
+				tlp.LayoutSettings = tls; // Should not throw an exception
+			}
+		}
+
+		[Test]
+		public void XamarinBug18638 ()
+		{
+			// Spanning items should not have their entire width assigned to the first column in the span.
+			TableLayoutPanel tlp = new TableLayoutPanel ();
+			tlp.SuspendLayout ();
+			tlp.Size = new Size(291, 100);
+			tlp.AutoSize = true;
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 60));
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Percent, 100));
+			tlp.ColumnStyles.Add (new ColumnStyle (SizeType.Absolute, 45));
+			tlp.ColumnCount = 3;
+			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			var label1 = new Label {AutoSize = true, Text = @"This line spans all three columns in the table!"};
+			tlp.Controls.Add (label1, 0, 0);
+			tlp.SetColumnSpan (label1, 3);
+			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			tlp.RowCount = 1;
+			var label2 = new Label {AutoSize = true, Text = @"This line spans columns two and three."};
+			tlp.Controls.Add (label2, 1, 1);
+			tlp.SetColumnSpan (label2, 2);
+			tlp.RowCount = 2;
+			AddTableRow (tlp, "First Row", "This is a test");
+			AddTableRow (tlp, "Row 2", "This is another test");
+			tlp.ResumeLayout ();
+
+			var widths = tlp.GetColumnWidths ();
+			Assert.AreEqual (4, tlp.RowCount, "X18638-1");
+			Assert.AreEqual (3, tlp.ColumnCount, "X18638-2");
+			Assert.AreEqual (60, widths[0], "X18638-3");
+			Assert.Greater (label2.Width, widths[1], "X18638-5");
+			Assert.AreEqual (45, widths[2], "X18638-4");
+		}
+
+		private void AddTableRow(TableLayoutPanel tlp, string label, string text)
+		{
+			tlp.SuspendLayout ();
+			int row = tlp.RowCount;
+			tlp.RowStyles.Add (new RowStyle (SizeType.AutoSize));
+			var first = new Label {AutoSize = true, Dock = DockStyle.Fill, Text = label};
+			tlp.Controls.Add (first, 0, row);
+			var second = new TextBox {AutoSize = true, Text = text, Dock = DockStyle.Fill, Multiline = true};
+			tlp.Controls.Add (second, 1, row);
+			var third = new Button {Text = @"DEL", Dock = DockStyle.Fill};
+			tlp.Controls.Add (third, 2, row);
+			tlp.RowCount = row + 1;
+			tlp.ResumeLayout ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TimerTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TimerTest.cs
@@ -1,196 +1,196 @@
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-// Authors:
-//	Rolf Bjarne Kvinge  (RKvinge@novell.com)
-//
-
-using System;
-using System.Drawing;
-using System.Reflection;
-using System.Windows.Forms;
-using System.Threading;
-using Timer = System.Windows.Forms.Timer;
-using Sys_Threading=System.Threading;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class TimerTest : TestHelper
-	{
-		bool Ticked;
-		
-		[Test ()]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void IntervalException1 ()
-		{
-			Timer timer = new Timer ();
-			timer.Interval = 0;
-		}
-
-		[Test ()]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void IntervalException2 ()
-		{
-			Timer timer = new Timer ();
-			timer.Interval = -1;
-		}
-
-		[Test ()]
-		public void IntervalException3 ()
-		{
-			Timer timer = new Timer ();
-			timer.Interval = int.MaxValue;
-		}
-
-		[Test ()]
-		[ExpectedException (typeof (ArgumentOutOfRangeException))]
-		public void IntervalException4 ()
-		{
-			Timer timer = new Timer ();
-			timer.Interval = int.MinValue;
-		}
-		
-		[Test]
-		[Category ("NotWorking")]
-		public void StartTest ()
-		{
-			// This test fails about 50% of the time on the buildbots.
-			Ticked = false;
-			using (Timer timer = new Timer ()) {
-				timer.Tick += new EventHandler (TickHandler);
-				timer.Start ();
-				Sys_Threading.Thread.Sleep (500);
-				Application.DoEvents ();
-				Assert.AreEqual (true, timer.Enabled, "1");
-				Assert.AreEqual (true, Ticked, "2");
-			}
-		}
-
-		[Test]
-		public void StopTest ()
-		{
-			Ticked = false;
-			using (Timer timer = new Timer ()) {
-				timer.Tick += new EventHandler (TickHandler);
-				timer.Interval = 200;
-				timer.Start ();
-				Assert.AreEqual (true, timer.Enabled, "1");
-				Assert.AreEqual (false, Ticked, "2");
-				timer.Stop ();
-				Assert.AreEqual (false, Ticked, "3"); // This may fail if we are running on a very slow machine...
-				Assert.AreEqual (false, timer.Enabled, "4");
-				Sys_Threading.Thread.Sleep (500);
-				Assert.AreEqual (false, Ticked, "5");
-			}
-		}
-		
-		[Test]
-		public void TagTest ()
-		{
-			Timer timer = new Timer ();
-			timer.Tag = "a";
-			Assert.AreEqual ("a", timer.Tag, "1");
-		}
-
-		/* Application.DoEvents and Sleep are not guarenteed on Linux
-		[Test]
-		public void EnabledTest ()
-		{
-			Ticked = false;
-			using (Timer timer = new Timer ()) {
-				timer.Tick += new EventHandler (TickHandler);
-				timer.Enabled = true;
-				Sys_Threading.Thread.Sleep (150);
-				Application.DoEvents ();
-				Assert.AreEqual (true, timer.Enabled, "1");
-				Assert.AreEqual (true, Ticked, "2");
-			}
-			
-			Ticked = false;
-			using (Timer timer = new Timer ()) {
-				timer.Tick += new EventHandler (TickHandler);
-				timer.Interval = 1000;
-				timer.Enabled = true;
-				Assert.AreEqual (true, timer.Enabled, "3");
-				Assert.AreEqual (false, Ticked, "4");
-				timer.Enabled = false;
-				Assert.AreEqual (false, Ticked, "5"); // This may fail if we are running on a very slow machine...
-				Assert.AreEqual (false, timer.Enabled, "6");
-			}
-		}
-		*/
-
-		void TickHandler (object sender, EventArgs e)
-		{
-			Ticked = true;
-		}
-		
-		[Test]
-		public void DefaultProperties ()
-		{
-			Timer timer = new Timer ();
-			Assert.AreEqual (null, timer.Container, "C1");
-			Assert.AreEqual (false, timer.Enabled, "E1");
-			Assert.AreEqual (100, timer.Interval, "I1");
-			Assert.AreEqual (null, timer.Site, "S1");
-			Assert.AreEqual (null, timer.Tag, "T1");
-		}
-
-		[Test] // bug #325033
-		public void RunningThread ()
-		{
-			Application.Run (new Bug325033Form ());
-			Application.Run (new Bug325033Form2 ());
-		}
-
-		class Bug325033Form : Form
-		{
-			public Bug325033Form ()
-			{
-				Load += new EventHandler (Form_Load);
-			}
-
-			void Form_Load (object sender, EventArgs e)
-			{
-				Thread t = new Thread (new ThreadStart (Run));
-				t.IsBackground = true;
-				t.Start ();
-				t.Join ();
-				Close ();
-			}
-
-			void Run ()
-			{
-				Application.Run (new Bug325033Form2 ());
-			}
-		}
-
-		class Bug325033Form2 : Form
-		{
-			public Bug325033Form2 ()
-			{
-				_label = new Label ();
-				_label.AutoSize = true;
-				_label.Dock = DockStyle.Fill;
-				_label.Text = "It should close automatically.";
-				Controls.Add (_label);
-				_timer = new Timer ();
-				_timer.Tick += new EventHandler (Timer_Tick);
-				_timer.Interval = 500;
-				_timer.Start ();
-			}
-
-			void Timer_Tick (object sender, EventArgs e)
-			{
-				_timer.Stop ();
-				Close ();
-			}
-
-			private Label _label;
-			private Timer _timer;
-		}
-	}
-}
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//	Rolf Bjarne Kvinge  (RKvinge@novell.com)
+//
+
+using System;
+using System.Drawing;
+using System.Reflection;
+using System.Windows.Forms;
+using System.Threading;
+using Timer = System.Windows.Forms.Timer;
+using Sys_Threading=System.Threading;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class TimerTest : TestHelper
+	{
+		bool Ticked;
+		
+		[Test ()]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void IntervalException1 ()
+		{
+			Timer timer = new Timer ();
+			timer.Interval = 0;
+		}
+
+		[Test ()]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void IntervalException2 ()
+		{
+			Timer timer = new Timer ();
+			timer.Interval = -1;
+		}
+
+		[Test ()]
+		public void IntervalException3 ()
+		{
+			Timer timer = new Timer ();
+			timer.Interval = int.MaxValue;
+		}
+
+		[Test ()]
+		[ExpectedException (typeof (ArgumentOutOfRangeException))]
+		public void IntervalException4 ()
+		{
+			Timer timer = new Timer ();
+			timer.Interval = int.MinValue;
+		}
+		
+		[Test]
+		[Category ("NotWorking")]
+		public void StartTest ()
+		{
+			// This test fails about 50% of the time on the buildbots.
+			Ticked = false;
+			using (Timer timer = new Timer ()) {
+				timer.Tick += new EventHandler (TickHandler);
+				timer.Start ();
+				Sys_Threading.Thread.Sleep (500);
+				Application.DoEvents ();
+				Assert.AreEqual (true, timer.Enabled, "1");
+				Assert.AreEqual (true, Ticked, "2");
+			}
+		}
+
+		[Test]
+		public void StopTest ()
+		{
+			Ticked = false;
+			using (Timer timer = new Timer ()) {
+				timer.Tick += new EventHandler (TickHandler);
+				timer.Interval = 200;
+				timer.Start ();
+				Assert.AreEqual (true, timer.Enabled, "1");
+				Assert.AreEqual (false, Ticked, "2");
+				timer.Stop ();
+				Assert.AreEqual (false, Ticked, "3"); // This may fail if we are running on a very slow machine...
+				Assert.AreEqual (false, timer.Enabled, "4");
+				Sys_Threading.Thread.Sleep (500);
+				Assert.AreEqual (false, Ticked, "5");
+			}
+		}
+		
+		[Test]
+		public void TagTest ()
+		{
+			Timer timer = new Timer ();
+			timer.Tag = "a";
+			Assert.AreEqual ("a", timer.Tag, "1");
+		}
+
+		/* Application.DoEvents and Sleep are not guarenteed on Linux
+		[Test]
+		public void EnabledTest ()
+		{
+			Ticked = false;
+			using (Timer timer = new Timer ()) {
+				timer.Tick += new EventHandler (TickHandler);
+				timer.Enabled = true;
+				Sys_Threading.Thread.Sleep (150);
+				Application.DoEvents ();
+				Assert.AreEqual (true, timer.Enabled, "1");
+				Assert.AreEqual (true, Ticked, "2");
+			}
+			
+			Ticked = false;
+			using (Timer timer = new Timer ()) {
+				timer.Tick += new EventHandler (TickHandler);
+				timer.Interval = 1000;
+				timer.Enabled = true;
+				Assert.AreEqual (true, timer.Enabled, "3");
+				Assert.AreEqual (false, Ticked, "4");
+				timer.Enabled = false;
+				Assert.AreEqual (false, Ticked, "5"); // This may fail if we are running on a very slow machine...
+				Assert.AreEqual (false, timer.Enabled, "6");
+			}
+		}
+		*/
+
+		void TickHandler (object sender, EventArgs e)
+		{
+			Ticked = true;
+		}
+		
+		[Test]
+		public void DefaultProperties ()
+		{
+			Timer timer = new Timer ();
+			Assert.AreEqual (null, timer.Container, "C1");
+			Assert.AreEqual (false, timer.Enabled, "E1");
+			Assert.AreEqual (100, timer.Interval, "I1");
+			Assert.AreEqual (null, timer.Site, "S1");
+			Assert.AreEqual (null, timer.Tag, "T1");
+		}
+
+		[Test] // bug #325033
+		public void RunningThread ()
+		{
+			Application.Run (new Bug325033Form ());
+			Application.Run (new Bug325033Form2 ());
+		}
+
+		class Bug325033Form : Form
+		{
+			public Bug325033Form ()
+			{
+				Load += new EventHandler (Form_Load);
+			}
+
+			void Form_Load (object sender, EventArgs e)
+			{
+				Thread t = new Thread (new ThreadStart (Run));
+				t.IsBackground = true;
+				t.Start ();
+				t.Join ();
+				Close ();
+			}
+
+			void Run ()
+			{
+				Application.Run (new Bug325033Form2 ());
+			}
+		}
+
+		class Bug325033Form2 : Form
+		{
+			public Bug325033Form2 ()
+			{
+				_label = new Label ();
+				_label.AutoSize = true;
+				_label.Dock = DockStyle.Fill;
+				_label.Text = "It should close automatically.";
+				Controls.Add (_label);
+				_timer = new Timer ();
+				_timer.Tick += new EventHandler (Timer_Tick);
+				_timer.Interval = 500;
+				_timer.Start ();
+			}
+
+			void Timer_Tick (object sender, EventArgs e)
+			{
+				_timer.Stop ();
+				Close ();
+			}
+
+			private Label _label;
+			private Timer _timer;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripContainerTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripContainerTest.cs
@@ -1,142 +1,142 @@
-//
-// ToolStripContainerTests.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripContainerTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			ToolStripContainer tsc = new ToolStripContainer ();
-
-			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.BottomToolStripPanel.ToString (), "A1");
-			Assert.AreEqual (true, tsc.BottomToolStripPanelVisible, "A2");
-			Assert.AreEqual ("System.Windows.Forms.ToolStripContentPanel", tsc.ContentPanel.GetType ().ToString (), "A3");
-			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.LeftToolStripPanel.ToString (), "A4");
-			Assert.AreEqual (true, tsc.LeftToolStripPanelVisible, "A5");
-			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.RightToolStripPanel.ToString (), "A6");
-			Assert.AreEqual (true, tsc.RightToolStripPanelVisible, "A7");
-			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.TopToolStripPanel.ToString (), "A8");
-			Assert.AreEqual (true, tsc.TopToolStripPanelVisible, "A9");
-		}
-
-		[Test]
-		public void ProtectedProperties ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual (new Size (150, 175), epp.DefaultSize, "C1");
-		}
-
-		[Test]
-		public void PropertyBottomToolStripPanelVisible ()
-		{
-			ToolStripContainer tsc = new ToolStripContainer ();
-
-			tsc.BottomToolStripPanelVisible = false; ;
-			Assert.AreEqual (false, tsc.BottomToolStripPanelVisible, "B1");
-		}
-
-		[Test]
-		public void PropertyLeftToolStripPanelVisible ()
-		{
-			ToolStripContainer tsc = new ToolStripContainer ();
-
-			tsc.LeftToolStripPanelVisible = false; ;
-			Assert.AreEqual (false, tsc.LeftToolStripPanelVisible, "B1");
-		}
-
-		[Test]
-		public void PropertyRightToolStripPanelVisible ()
-		{
-			ToolStripContainer tsc = new ToolStripContainer ();
-
-			tsc.RightToolStripPanelVisible = false; ;
-			Assert.AreEqual (false, tsc.RightToolStripPanelVisible, "B1");
-		}
-
-		[Test]
-		public void PropertyTopToolStripPanelVisible ()
-		{
-			ToolStripContainer tsc = new ToolStripContainer ();
-
-			tsc.TopToolStripPanelVisible = false; ;
-			Assert.AreEqual (false, tsc.TopToolStripPanelVisible, "B1");
-		}
-
-		[Test]
-		public void MethodCreateControlsInstance ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual ("System.Windows.Forms.ToolStripContainer+ToolStripContainerTypedControlCollection", epp.CreateControlsInstance (). GetType ().ToString (), "B1");
-		}
-
-		[Test]
-		public void ControlStyle ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			ControlStyles cs = ControlStyles.ContainerControl;
-			cs |= ControlStyles.UserPaint;
-			cs |= ControlStyles.StandardClick;
-			cs |= ControlStyles.SupportsTransparentBackColor;
-			cs |= ControlStyles.StandardDoubleClick;
-			cs |= ControlStyles.Selectable;
-			cs |= ControlStyles.ResizeRedraw;
-			cs |= ControlStyles.UseTextForAccessibility;
-
-			Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");
-		}
-
-		private class ExposeProtectedProperties : ToolStripContainer
-		{
-			public new Size DefaultSize { get { return base.DefaultSize; } }
-			public new ControlCollection CreateControlsInstance () { return base.CreateControlsInstance (); }
-
-			public ControlStyles GetControlStyles ()
-			{
-				ControlStyles retval = (ControlStyles)0;
-
-				foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
-					if (this.GetStyle (cs) == true)
-						retval |= cs;
-
-				return retval;
-			}
-		}
-	}
-}
+//
+// ToolStripContainerTests.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripContainerTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			ToolStripContainer tsc = new ToolStripContainer ();
+
+			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.BottomToolStripPanel.ToString (), "A1");
+			Assert.AreEqual (true, tsc.BottomToolStripPanelVisible, "A2");
+			Assert.AreEqual ("System.Windows.Forms.ToolStripContentPanel", tsc.ContentPanel.GetType ().ToString (), "A3");
+			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.LeftToolStripPanel.ToString (), "A4");
+			Assert.AreEqual (true, tsc.LeftToolStripPanelVisible, "A5");
+			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.RightToolStripPanel.ToString (), "A6");
+			Assert.AreEqual (true, tsc.RightToolStripPanelVisible, "A7");
+			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel", tsc.TopToolStripPanel.ToString (), "A8");
+			Assert.AreEqual (true, tsc.TopToolStripPanelVisible, "A9");
+		}
+
+		[Test]
+		public void ProtectedProperties ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual (new Size (150, 175), epp.DefaultSize, "C1");
+		}
+
+		[Test]
+		public void PropertyBottomToolStripPanelVisible ()
+		{
+			ToolStripContainer tsc = new ToolStripContainer ();
+
+			tsc.BottomToolStripPanelVisible = false; ;
+			Assert.AreEqual (false, tsc.BottomToolStripPanelVisible, "B1");
+		}
+
+		[Test]
+		public void PropertyLeftToolStripPanelVisible ()
+		{
+			ToolStripContainer tsc = new ToolStripContainer ();
+
+			tsc.LeftToolStripPanelVisible = false; ;
+			Assert.AreEqual (false, tsc.LeftToolStripPanelVisible, "B1");
+		}
+
+		[Test]
+		public void PropertyRightToolStripPanelVisible ()
+		{
+			ToolStripContainer tsc = new ToolStripContainer ();
+
+			tsc.RightToolStripPanelVisible = false; ;
+			Assert.AreEqual (false, tsc.RightToolStripPanelVisible, "B1");
+		}
+
+		[Test]
+		public void PropertyTopToolStripPanelVisible ()
+		{
+			ToolStripContainer tsc = new ToolStripContainer ();
+
+			tsc.TopToolStripPanelVisible = false; ;
+			Assert.AreEqual (false, tsc.TopToolStripPanelVisible, "B1");
+		}
+
+		[Test]
+		public void MethodCreateControlsInstance ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual ("System.Windows.Forms.ToolStripContainer+ToolStripContainerTypedControlCollection", epp.CreateControlsInstance (). GetType ().ToString (), "B1");
+		}
+
+		[Test]
+		public void ControlStyle ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			ControlStyles cs = ControlStyles.ContainerControl;
+			cs |= ControlStyles.UserPaint;
+			cs |= ControlStyles.StandardClick;
+			cs |= ControlStyles.SupportsTransparentBackColor;
+			cs |= ControlStyles.StandardDoubleClick;
+			cs |= ControlStyles.Selectable;
+			cs |= ControlStyles.ResizeRedraw;
+			cs |= ControlStyles.UseTextForAccessibility;
+
+			Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");
+		}
+
+		private class ExposeProtectedProperties : ToolStripContainer
+		{
+			public new Size DefaultSize { get { return base.DefaultSize; } }
+			public new ControlCollection CreateControlsInstance () { return base.CreateControlsInstance (); }
+
+			public ControlStyles GetControlStyles ()
+			{
+				ControlStyles retval = (ControlStyles)0;
+
+				foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
+					if (this.GetStyle (cs) == true)
+						retval |= cs;
+
+				return retval;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripContentPanelTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripContentPanelTest.cs
@@ -1,121 +1,121 @@
-//
-// ToolStripContentPanelTests.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripContentPanelTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			ToolStripContentPanel tsp = new ToolStripContentPanel ();
-
-			Assert.AreEqual (SystemColors.Control, tsp.BackColor, "A1");
-			Assert.AreEqual ("System.Windows.Forms.ToolStripSystemRenderer", tsp.Renderer.ToString (), "A2");
-			Assert.AreEqual (ToolStripRenderMode.System, tsp.RenderMode, "A3");
-		}
-
-		[Test]
-		public void PropertyBackColor ()
-		{
-			ToolStripContentPanel tsp = new ToolStripContentPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.BackColor = Color.Green;
-			Assert.AreEqual (Color.Green, tsp.BackColor, "B1");
-			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.BackColor = Color.Green;
-			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyRenderer ()
-		{
-			ToolStripContentPanel tsp = new ToolStripContentPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			ToolStripProfessionalRenderer pr = new ToolStripProfessionalRenderer ();
-
-			tsp.Renderer = pr;
-			Assert.AreSame (pr, tsp.Renderer, "B1");
-			Assert.AreEqual (ToolStripRenderMode.Custom, tsp.RenderMode, "B1-2");
-			// I refuse to call the event twice like .Net does.
-			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.Renderer = pr;
-			//Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyRenderMode ()
-		{
-			ToolStripContentPanel tsp = new ToolStripContentPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.RenderMode = ToolStripRenderMode.ManagerRenderMode;
-			Assert.AreEqual (ToolStripRenderMode.ManagerRenderMode, tsp.RenderMode, "B1");
-			// I refuse to call the event twice like .Net does.
-			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.RenderMode = ToolStripRenderMode.ManagerRenderMode;
-			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		private class EventWatcher
-		{
-			private string events = string.Empty;
-
-			public EventWatcher (ToolStripContentPanel tsp)
-			{
-				tsp.Load += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Load;"); });
-				tsp.RendererChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("RendererChanged;"); });
-			}
-
-			public override string ToString ()
-			{
-				return events.TrimEnd (';');
-			}
-
-			public void Clear ()
-			{
-				events = string.Empty;
-			}
-		}
-	}
-}
+//
+// ToolStripContentPanelTests.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripContentPanelTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			ToolStripContentPanel tsp = new ToolStripContentPanel ();
+
+			Assert.AreEqual (SystemColors.Control, tsp.BackColor, "A1");
+			Assert.AreEqual ("System.Windows.Forms.ToolStripSystemRenderer", tsp.Renderer.ToString (), "A2");
+			Assert.AreEqual (ToolStripRenderMode.System, tsp.RenderMode, "A3");
+		}
+
+		[Test]
+		public void PropertyBackColor ()
+		{
+			ToolStripContentPanel tsp = new ToolStripContentPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.BackColor = Color.Green;
+			Assert.AreEqual (Color.Green, tsp.BackColor, "B1");
+			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.BackColor = Color.Green;
+			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyRenderer ()
+		{
+			ToolStripContentPanel tsp = new ToolStripContentPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			ToolStripProfessionalRenderer pr = new ToolStripProfessionalRenderer ();
+
+			tsp.Renderer = pr;
+			Assert.AreSame (pr, tsp.Renderer, "B1");
+			Assert.AreEqual (ToolStripRenderMode.Custom, tsp.RenderMode, "B1-2");
+			// I refuse to call the event twice like .Net does.
+			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.Renderer = pr;
+			//Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyRenderMode ()
+		{
+			ToolStripContentPanel tsp = new ToolStripContentPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.RenderMode = ToolStripRenderMode.ManagerRenderMode;
+			Assert.AreEqual (ToolStripRenderMode.ManagerRenderMode, tsp.RenderMode, "B1");
+			// I refuse to call the event twice like .Net does.
+			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.RenderMode = ToolStripRenderMode.ManagerRenderMode;
+			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		private class EventWatcher
+		{
+			private string events = string.Empty;
+
+			public EventWatcher (ToolStripContentPanel tsp)
+			{
+				tsp.Load += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Load;"); });
+				tsp.RendererChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("RendererChanged;"); });
+			}
+
+			public override string ToString ()
+			{
+				return events.TrimEnd (';');
+			}
+
+			public void Clear ()
+			{
+				events = string.Empty;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripDropDownTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripDropDownTest.cs
@@ -1,173 +1,173 @@
-//
-// ToolStripDropDownTests.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripDropDownTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			ToolStripDropDown tsdd = new ToolStripDropDown ();
-
-			Assert.AreEqual (false, tsdd.AllowTransparency, "A1");
-			Assert.AreEqual (true, tsdd.AutoClose, "A2");
-			Assert.AreEqual (false, tsdd.CanOverflow, "A3");
-			Assert.AreEqual (ToolStripDropDownDirection.Right, tsdd.DefaultDropDownDirection, "A4");
-			Assert.AreEqual (true, tsdd.DropShadowEnabled, "A5");
-			Assert.AreEqual (false, tsdd.IsAutoGenerated, "A6");
-			Assert.AreEqual (1, tsdd.Opacity, "A7");
-			Assert.AreEqual (Orientation.Horizontal, tsdd.Orientation, "A7-2");
-			Assert.AreEqual (null, tsdd.OwnerItem, "A8");
-			Assert.AreEqual (null, tsdd.Region, "A9");
-			Assert.AreEqual (RightToLeft.No, tsdd.RightToLeft, "A10");
-			Assert.AreEqual (ToolStripTextDirection.Horizontal, tsdd.TextDirection, "A11");
-			Assert.AreEqual (true, tsdd.TopLevel, "A12");
-			Assert.AreEqual (false, tsdd.Visible, "A13");
-			
-			Assert.AreEqual ("System.Windows.Forms.ToolStripDropDown+ToolStripDropDownAccessibleObject", tsdd.AccessibilityObject.GetType ().ToString (), "A14");
-		}
-
-		[Test]
-		public void Layout ()
-		{
-			ToolStripDropDown drop_down = new ToolStripDropDown ();
-			drop_down.Items.Add (new ToolStripVariableSizeItem ());
-			drop_down.PerformLayout ();
-
-			// We want to be sure the DropDown is using the size provided
-			// by GetPreferredSize, not DefaultSize, and since the extra padding/margin
-			// can change by some few pixels, we do a light check
-			Assert.AreEqual (true, drop_down.Size.Width >= 100, "A1");
-			Assert.AreEqual (true, drop_down.Size.Height >= 100, "A2");
-		}
-
-		private class ToolStripVariableSizeItem : ToolStripItem {
-
-			public override Size GetPreferredSize (Size constrainingSize) 
-			{
-				return new Size (100, 100);
-			}
-
-			protected override Size DefaultSize {
-				get {
-					return new Size (33, 33);
-				}
-			}
-		}
-
-		[Test]
-		public void ProtectedProperties ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_POPUP, (WindowStyles)epp.CreateParams.Style, "C1");
-			// This makes no sense
-			// Assert.AreEqual (WindowExStyles.WS_EX_CONTROLPARENT, (WindowExStyles)epp.CreateParams.ExStyle, "C2");
-			Assert.AreEqual (DockStyle.None, epp.DefaultDock, "C3");
-			Assert.AreEqual (new Padding (1, 2, 1, 2), epp.DefaultPadding, "C4");
-			Assert.AreEqual (true, epp.DefaultShowItemToolTips, "C5");
-			// Dependent on monitor resolution
-			// Assert.AreEqual (new Size (1678, 1016), epp.MaxItemSize, "C6");
-			Assert.AreEqual (true, epp.TopMost, "C7");
-		}
-
-		[Test]
-		public void MethodCreateLayoutSettings ()
-		{
-			ExposeProtectedProperties ts = new ExposeProtectedProperties ();
-
-			Assert.AreEqual ("System.Windows.Forms.FlowLayoutSettings", ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.Flow).ToString (), "A1");
-			Assert.AreEqual (null, ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.HorizontalStackWithOverflow), "A2");
-			Assert.AreEqual (null, ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.StackWithOverflow), "A3");
-			//Assert.AreEqual ("System.Windows.Forms.TableLayoutSettings", ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.Table).ToString (), "A4");
-			Assert.AreEqual (null, ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.VerticalStackWithOverflow), "A5");
-		}
-
-		//[Test]
-		//public void Accessibility ()
-		//{
-		//        ToolStripSeparator tsi = new ToolStripSeparator ();
-		//        AccessibleObject ao = tsi.AccessibilityObject;
-
-		//        Assert.AreEqual ("ToolStripItemAccessibleObject: Owner = " + tsi.ToString (), ao.ToString (), "L");
-		//        Assert.AreEqual (Rectangle.Empty, ao.Bounds, "L1");
-		//        Assert.AreEqual ("Press", ao.DefaultAction, "L2");
-		//        Assert.AreEqual (null, ao.Description, "L3");
-		//        Assert.AreEqual (null, ao.Help, "L4");
-		//        Assert.AreEqual (string.Empty, ao.KeyboardShortcut, "L5");
-		//        Assert.AreEqual (string.Empty, ao.Name, "L6");
-		//        Assert.AreEqual (null, ao.Parent, "L7");
-		//        Assert.AreEqual (AccessibleRole.Separator, ao.Role, "L8");
-		//        Assert.AreEqual (AccessibleStates.None, ao.State, "L9");
-		//        Assert.AreEqual (string.Empty, ao.Value, "L10");
-
-		//        tsi.Name = "Label1";
-		//        tsi.Text = "Test Label";
-		//        tsi.AccessibleDescription = "Label Desc";
-
-		//        Assert.AreEqual (Rectangle.Empty, ao.Bounds, "L11");
-		//        Assert.AreEqual ("Press", ao.DefaultAction, "L12");
-		//        Assert.AreEqual ("Label Desc", ao.Description, "L13");
-		//        Assert.AreEqual (null, ao.Help, "L14");
-		//        Assert.AreEqual (string.Empty, ao.KeyboardShortcut, "L15");
-		//        Assert.AreEqual ("Test Label", ao.Name, "L16");
-		//        Assert.AreEqual (null, ao.Parent, "L17");
-		//        Assert.AreEqual (AccessibleRole.Separator, ao.Role, "L18");
-		//        Assert.AreEqual (AccessibleStates.None, ao.State, "L19");
-		//        Assert.AreEqual (string.Empty, ao.Value, "L20");
-
-		//        tsi.AccessibleName = "Access Label";
-		//        Assert.AreEqual ("Access Label", ao.Name, "L21");
-
-		//        tsi.Text = "Test Label";
-		//        Assert.AreEqual ("Access Label", ao.Name, "L22");
-
-		//        tsi.AccessibleDefaultActionDescription = "AAA";
-		//        Assert.AreEqual ("AAA", tsi.AccessibleDefaultActionDescription, "L23");
-		//}
-
-		private class ExposeProtectedProperties : ToolStripDropDown
-		{
-			public new CreateParams CreateParams { get { return base.CreateParams; } }
-			public new DockStyle DefaultDock { get { return base.DefaultDock; } }
-			public new Padding DefaultPadding { get { return base.DefaultPadding; } }
-			public new bool DefaultShowItemToolTips { get { return base.DefaultShowItemToolTips; } }
-			public new Size MaxItemSize { get { return base.MaxItemSize; } }
-			public new bool TopMost { get { return base.TopMost; } }
-			public LayoutSettings PublicCreateLayoutSettings (ToolStripLayoutStyle style) { return base.CreateLayoutSettings (style); }
-		}
-	}
-}
+//
+// ToolStripDropDownTests.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripDropDownTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			ToolStripDropDown tsdd = new ToolStripDropDown ();
+
+			Assert.AreEqual (false, tsdd.AllowTransparency, "A1");
+			Assert.AreEqual (true, tsdd.AutoClose, "A2");
+			Assert.AreEqual (false, tsdd.CanOverflow, "A3");
+			Assert.AreEqual (ToolStripDropDownDirection.Right, tsdd.DefaultDropDownDirection, "A4");
+			Assert.AreEqual (true, tsdd.DropShadowEnabled, "A5");
+			Assert.AreEqual (false, tsdd.IsAutoGenerated, "A6");
+			Assert.AreEqual (1, tsdd.Opacity, "A7");
+			Assert.AreEqual (Orientation.Horizontal, tsdd.Orientation, "A7-2");
+			Assert.AreEqual (null, tsdd.OwnerItem, "A8");
+			Assert.AreEqual (null, tsdd.Region, "A9");
+			Assert.AreEqual (RightToLeft.No, tsdd.RightToLeft, "A10");
+			Assert.AreEqual (ToolStripTextDirection.Horizontal, tsdd.TextDirection, "A11");
+			Assert.AreEqual (true, tsdd.TopLevel, "A12");
+			Assert.AreEqual (false, tsdd.Visible, "A13");
+			
+			Assert.AreEqual ("System.Windows.Forms.ToolStripDropDown+ToolStripDropDownAccessibleObject", tsdd.AccessibilityObject.GetType ().ToString (), "A14");
+		}
+
+		[Test]
+		public void Layout ()
+		{
+			ToolStripDropDown drop_down = new ToolStripDropDown ();
+			drop_down.Items.Add (new ToolStripVariableSizeItem ());
+			drop_down.PerformLayout ();
+
+			// We want to be sure the DropDown is using the size provided
+			// by GetPreferredSize, not DefaultSize, and since the extra padding/margin
+			// can change by some few pixels, we do a light check
+			Assert.AreEqual (true, drop_down.Size.Width >= 100, "A1");
+			Assert.AreEqual (true, drop_down.Size.Height >= 100, "A2");
+		}
+
+		private class ToolStripVariableSizeItem : ToolStripItem {
+
+			public override Size GetPreferredSize (Size constrainingSize) 
+			{
+				return new Size (100, 100);
+			}
+
+			protected override Size DefaultSize {
+				get {
+					return new Size (33, 33);
+				}
+			}
+		}
+
+		[Test]
+		public void ProtectedProperties ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_POPUP, (WindowStyles)epp.CreateParams.Style, "C1");
+			// This makes no sense
+			// Assert.AreEqual (WindowExStyles.WS_EX_CONTROLPARENT, (WindowExStyles)epp.CreateParams.ExStyle, "C2");
+			Assert.AreEqual (DockStyle.None, epp.DefaultDock, "C3");
+			Assert.AreEqual (new Padding (1, 2, 1, 2), epp.DefaultPadding, "C4");
+			Assert.AreEqual (true, epp.DefaultShowItemToolTips, "C5");
+			// Dependent on monitor resolution
+			// Assert.AreEqual (new Size (1678, 1016), epp.MaxItemSize, "C6");
+			Assert.AreEqual (true, epp.TopMost, "C7");
+		}
+
+		[Test]
+		public void MethodCreateLayoutSettings ()
+		{
+			ExposeProtectedProperties ts = new ExposeProtectedProperties ();
+
+			Assert.AreEqual ("System.Windows.Forms.FlowLayoutSettings", ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.Flow).ToString (), "A1");
+			Assert.AreEqual (null, ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.HorizontalStackWithOverflow), "A2");
+			Assert.AreEqual (null, ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.StackWithOverflow), "A3");
+			//Assert.AreEqual ("System.Windows.Forms.TableLayoutSettings", ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.Table).ToString (), "A4");
+			Assert.AreEqual (null, ts.PublicCreateLayoutSettings (ToolStripLayoutStyle.VerticalStackWithOverflow), "A5");
+		}
+
+		//[Test]
+		//public void Accessibility ()
+		//{
+		//        ToolStripSeparator tsi = new ToolStripSeparator ();
+		//        AccessibleObject ao = tsi.AccessibilityObject;
+
+		//        Assert.AreEqual ("ToolStripItemAccessibleObject: Owner = " + tsi.ToString (), ao.ToString (), "L");
+		//        Assert.AreEqual (Rectangle.Empty, ao.Bounds, "L1");
+		//        Assert.AreEqual ("Press", ao.DefaultAction, "L2");
+		//        Assert.AreEqual (null, ao.Description, "L3");
+		//        Assert.AreEqual (null, ao.Help, "L4");
+		//        Assert.AreEqual (string.Empty, ao.KeyboardShortcut, "L5");
+		//        Assert.AreEqual (string.Empty, ao.Name, "L6");
+		//        Assert.AreEqual (null, ao.Parent, "L7");
+		//        Assert.AreEqual (AccessibleRole.Separator, ao.Role, "L8");
+		//        Assert.AreEqual (AccessibleStates.None, ao.State, "L9");
+		//        Assert.AreEqual (string.Empty, ao.Value, "L10");
+
+		//        tsi.Name = "Label1";
+		//        tsi.Text = "Test Label";
+		//        tsi.AccessibleDescription = "Label Desc";
+
+		//        Assert.AreEqual (Rectangle.Empty, ao.Bounds, "L11");
+		//        Assert.AreEqual ("Press", ao.DefaultAction, "L12");
+		//        Assert.AreEqual ("Label Desc", ao.Description, "L13");
+		//        Assert.AreEqual (null, ao.Help, "L14");
+		//        Assert.AreEqual (string.Empty, ao.KeyboardShortcut, "L15");
+		//        Assert.AreEqual ("Test Label", ao.Name, "L16");
+		//        Assert.AreEqual (null, ao.Parent, "L17");
+		//        Assert.AreEqual (AccessibleRole.Separator, ao.Role, "L18");
+		//        Assert.AreEqual (AccessibleStates.None, ao.State, "L19");
+		//        Assert.AreEqual (string.Empty, ao.Value, "L20");
+
+		//        tsi.AccessibleName = "Access Label";
+		//        Assert.AreEqual ("Access Label", ao.Name, "L21");
+
+		//        tsi.Text = "Test Label";
+		//        Assert.AreEqual ("Access Label", ao.Name, "L22");
+
+		//        tsi.AccessibleDefaultActionDescription = "AAA";
+		//        Assert.AreEqual ("AAA", tsi.AccessibleDefaultActionDescription, "L23");
+		//}
+
+		private class ExposeProtectedProperties : ToolStripDropDown
+		{
+			public new CreateParams CreateParams { get { return base.CreateParams; } }
+			public new DockStyle DefaultDock { get { return base.DefaultDock; } }
+			public new Padding DefaultPadding { get { return base.DefaultPadding; } }
+			public new bool DefaultShowItemToolTips { get { return base.DefaultShowItemToolTips; } }
+			public new Size MaxItemSize { get { return base.MaxItemSize; } }
+			public new bool TopMost { get { return base.TopMost; } }
+			public LayoutSettings PublicCreateLayoutSettings (ToolStripLayoutStyle style) { return base.CreateLayoutSettings (style); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripManagerTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripManagerTest.cs
@@ -1,935 +1,935 @@
-//
-// ToolStripManagerTest.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripManagerTest : TestHelper
-	{
-		[Test]
-		[Ignore ("This has to run all by itself.  Toolstrips in other tests register themselves and mess this up.")]
-		public void BehaviorFindToolStrip ()
-		{
-			// Default stuff
-			Assert.AreEqual (null, ToolStripManager.FindToolStrip (string.Empty), "A1");
-			Assert.AreEqual (null, ToolStripManager.FindToolStrip ("MyStrip"), "A2");
-			
-			ToolStrip ts = new ToolStrip ();
-			ts.Name = "MyStrip";
-
-			// Basic operation
-			Assert.AreSame (ts, ToolStripManager.FindToolStrip ("MyStrip"), "A3");
-			
-			// Dispose removes them
-			ts.Dispose ();
-			Assert.AreEqual (null, ToolStripManager.FindToolStrip ("MyStrip"), "A4");
-			
-			ts = new ToolStrip ();
-			ts.Name = "MyStrip1";
-			MenuStrip ms = new MenuStrip ();
-			ms.Name = "MyStrip2";
-
-			// Basic operation
-			Assert.AreSame (ts, ToolStripManager.FindToolStrip ("MyStrip1"), "A5");
-			Assert.AreSame (ms, ToolStripManager.FindToolStrip ("MyStrip2"), "A6");
-		
-			// Find unnamed strip
-			StatusStrip ss = new StatusStrip ();
-			Assert.AreEqual (ss, ToolStripManager.FindToolStrip (string.Empty), "A7");
-			
-			// Always return first unnamed strip
-			ContextMenuStrip cms = new ContextMenuStrip ();
-			Assert.AreEqual (ss, ToolStripManager.FindToolStrip (string.Empty), "A8");
-			
-			// Remove first unnamed strip, returns second one
-			ss.Dispose ();
-			Assert.AreEqual (cms, ToolStripManager.FindToolStrip (string.Empty), "A9");
-			
-			// ContextMenuStrips are included
-			cms.Name = "Context";
-			Assert.AreEqual (cms, ToolStripManager.FindToolStrip ("Context"), "A10");
-		}
-		
-		[Test]
-		public void MethodIsShortcutValid ()
-		{
-			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.F1), "A1");
-			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.F7), "A1");
-			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.Shift | Keys.F1), "A1");
-			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.Control | Keys.F1), "A1");
-			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.Shift), "A1");
-			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.Alt), "A1");
-			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.D6), "A1");
-			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.Control | Keys.S), "A1");
-			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.L), "A1");
-		}
-		
-		[Test]
-		public void BehaviorTwoShortcuts ()
-		{
-			ToolStripMenuItem tsmi = new ToolStripMenuItem ();
-			tsmi.ShortcutKeys = Keys.Control | Keys.D;
-			ToolStripMenuItem tsmi2 = new ToolStripMenuItem ();
-			tsmi2.ShortcutKeys = Keys.Control | Keys.D;
-
-			Assert.AreEqual (Keys.Control | Keys.D, tsmi.ShortcutKeys, "A1");
-			Assert.AreEqual (Keys.Control | Keys.D, tsmi2.ShortcutKeys, "A2");
-			
-			ToolStrip ts = new ToolStrip ();
-			ts.Items.Add (tsmi);
-			ts.Items.Add (tsmi2);
-
-			Assert.AreEqual (Keys.Control | Keys.D, tsmi.ShortcutKeys, "A3");
-			Assert.AreEqual (Keys.Control | Keys.D, tsmi2.ShortcutKeys, "A4");
-		}
-		
-		[Test]
-		public void MethodMergeToolStripsAppend ()
-		{
-			// MergeAction = Append
-			ToolStrip ts1 = new ToolStrip ();
-			ToolStrip ts2 = new ToolStrip ();
-
-			ts1.Items.Add ("ts1-A");
-			ts1.Items.Add ("ts1-B");
-			ts1.Items.Add ("ts1-C");
-			ts1.Items.Add ("ts1-D");
-
-			ts2.Items.Add ("ts2-A");
-			ts2.Items.Add ("ts2-B");
-			ts2.Items.Add ("ts2-C");
-			ts2.Items.Add ("ts2-D");
-
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (8, ts1.Items.Count, "M1");
-			Assert.AreEqual (0, ts2.Items.Count, "M2");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M3-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M3-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M3-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M3-4");
-			Assert.AreEqual ("ts2-A", ts1.Items[4].Text, "M3-5");
-			Assert.AreEqual ("ts2-B", ts1.Items[5].Text, "M3-6");
-			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M3-7");
-			Assert.AreEqual ("ts2-D", ts1.Items[7].Text, "M3-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M4");
-			Assert.AreEqual (4, ts2.Items.Count, "M5");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M6-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M6-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M6-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M6-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M6-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M6-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M6-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M6-8");
-
-			// Do merge twice, as it helps verify things got back
-			// to the proper state in the unmerge
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (8, ts1.Items.Count, "M7");
-			Assert.AreEqual (0, ts2.Items.Count, "M8");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M9-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M9-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M9-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M9-4");
-			Assert.AreEqual ("ts2-A", ts1.Items[4].Text, "M9-5");
-			Assert.AreEqual ("ts2-B", ts1.Items[5].Text, "M9-6");
-			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M9-7");
-			Assert.AreEqual ("ts2-D", ts1.Items[7].Text, "M9-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M10");
-			Assert.AreEqual (4, ts2.Items.Count, "M11");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M12-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M12-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M12-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M12-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M12-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M12-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M12-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M12-8");
-		}
-		
-		[Test]
-		public void MethodMergeToolStripsInsert ()
-		{
-			// MergeAction = Insert
-			ToolStrip ts1 = new ToolStrip ();
-			ToolStrip ts2 = new ToolStrip ();
-
-			ts1.Items.Add ("ts1-A");
-			ts1.Items.Add ("ts1-B");
-			ts1.Items.Add ("ts1-C");
-			ts1.Items.Add ("ts1-D");
-
-			ts2.Items.Add ("ts2-A");
-			ts2.Items.Add ("ts2-B");
-			ts2.Items.Add ("ts2-C");
-			ts2.Items.Add ("ts2-D");
-
-			ts2.Items[0].MergeAction = MergeAction.Insert;
-			ts2.Items[0].MergeIndex = 2;
-			ts2.Items[1].MergeAction = MergeAction.Insert;
-			ts2.Items[2].MergeAction = MergeAction.Insert;
-			ts2.Items[2].MergeIndex = 12;
-			ts2.Items[3].MergeAction = MergeAction.Insert;
-			ts2.Items[3].MergeIndex = 0;
-			
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (7, ts1.Items.Count, "M1");
-			Assert.AreEqual (1, ts2.Items.Count, "M2");
-
-			Assert.AreEqual ("ts2-D", ts1.Items[0].Text, "M3-1");
-			Assert.AreEqual ("ts1-A", ts1.Items[1].Text, "M3-2");
-			Assert.AreEqual ("ts1-B", ts1.Items[2].Text, "M3-3");
-			Assert.AreEqual ("ts2-A", ts1.Items[3].Text, "M3-4");
-			Assert.AreEqual ("ts1-C", ts1.Items[4].Text, "M3-5");
-			Assert.AreEqual ("ts1-D", ts1.Items[5].Text, "M3-6");
-			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M3-7");
-			Assert.AreEqual ("ts2-B", ts2.Items[0].Text, "M3-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M4");
-			Assert.AreEqual (4, ts2.Items.Count, "M5");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M6-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M6-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M6-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M6-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M6-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M6-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M6-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M6-8");
-
-			// Do merge twice, as it helps verify things got back
-			// to the proper state in the unmerge
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (7, ts1.Items.Count, "M7");
-			Assert.AreEqual (1, ts2.Items.Count, "M8");
-
-			Assert.AreEqual ("ts2-D", ts1.Items[0].Text, "M9-1");
-			Assert.AreEqual ("ts1-A", ts1.Items[1].Text, "M9-2");
-			Assert.AreEqual ("ts1-B", ts1.Items[2].Text, "M9-3");
-			Assert.AreEqual ("ts2-A", ts1.Items[3].Text, "M9-4");
-			Assert.AreEqual ("ts1-C", ts1.Items[4].Text, "M9-5");
-			Assert.AreEqual ("ts1-D", ts1.Items[5].Text, "M9-6");
-			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M9-7");
-			Assert.AreEqual ("ts2-B", ts2.Items[0].Text, "M9-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M10");
-			Assert.AreEqual (4, ts2.Items.Count, "M11");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M12-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M12-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M12-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M12-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M12-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M12-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M12-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M12-8");
-		}
-
-		[Test]
-		public void MethodMergeToolStripsRemove ()
-		{
-			// MergeAction = Remove
-			ToolStrip ts1 = new ToolStrip ();
-			ToolStrip ts2 = new ToolStrip ();
-
-			ts1.Items.Add ("ts1-A");
-			ts1.Items.Add ("ts1-B");
-			ts1.Items.Add ("ts1-C");
-			ts1.Items.Add ("ts1-D");
-
-			ts2.Items.Add ("ts1-A");
-			ts2.Items.Add ("ts1-B");
-			ts2.Items.Add ("ts1-C");
-			ts2.Items.Add ("ts1-D");
-
-			ts2.Items[0].MergeAction = MergeAction.Remove;
-			ts2.Items[1].MergeAction = MergeAction.Remove;
-			ts2.Items[2].MergeAction = MergeAction.Remove;
-			ts2.Items[3].MergeAction = MergeAction.Remove;
-
-			// Both the item from ts1 and ts2 must have the same Text for Remove to work,
-			// so I need to give these a Name so I can differentiate them later.
-			ts1.Items[0].Name = "ts1-A";
-			ts1.Items[1].Name = "ts1-B";
-			ts1.Items[2].Name = "ts1-C";
-			ts1.Items[3].Name = "ts1-D";
-			ts2.Items[0].Name = "ts2-A";
-			ts2.Items[1].Name = "ts2-B";
-			ts2.Items[2].Name = "ts2-C";
-			ts2.Items[3].Name = "ts2-D";
-
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (0, ts1.Items.Count, "M1");
-			Assert.AreEqual (4, ts2.Items.Count, "M2");
-
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M3-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M3-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M3-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M3-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M4");
-			Assert.AreEqual (4, ts2.Items.Count, "M5");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M6-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M6-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M6-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M6-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M6-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M6-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M6-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M6-8");
-
-			// Do merge twice, as it helps verify things got back
-			// to the proper state in the unmerge
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (0, ts1.Items.Count, "M7");
-			Assert.AreEqual (4, ts2.Items.Count, "M8");
-
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M9-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M9-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M9-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M9-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M10");
-			Assert.AreEqual (4, ts2.Items.Count, "M11");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M12-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M12-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M12-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M12-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M12-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M12-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M12-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M12-8");
-		}
-
-		[Test]
-		public void MethodMergeToolStripsReplace ()
-		{
-			// MergeAction = Replace
-			ToolStrip ts1 = new ToolStrip ();
-			ToolStrip ts2 = new ToolStrip ();
-
-			ts1.Items.Add ("ts1-A");
-			ts1.Items.Add ("ts1-B");
-			ts1.Items.Add ("ts1-C");
-			ts1.Items.Add ("ts1-D");
-
-			ts2.Items.Add ("ts1-A");
-			ts2.Items.Add ("ts1-B");
-			ts2.Items.Add ("ts1-C");
-			ts2.Items.Add ("ts1-D");
-
-			ts2.Items[0].MergeAction = MergeAction.Replace;
-			ts2.Items[1].MergeAction = MergeAction.Replace;
-			ts2.Items[2].MergeAction = MergeAction.Replace;
-			ts2.Items[3].MergeAction = MergeAction.Replace;
-
-			// Both the item from ts1 and ts2 must have the same Text for Replace to work,
-			// so I need to give these a Name so I can differentiate them later.
-			ts1.Items[0].Name = "ts1-A";
-			ts1.Items[1].Name = "ts1-B";
-			ts1.Items[2].Name = "ts1-C";
-			ts1.Items[3].Name = "ts1-D";
-			ts2.Items[0].Name = "ts2-A";
-			ts2.Items[1].Name = "ts2-B";
-			ts2.Items[2].Name = "ts2-C";
-			ts2.Items[3].Name = "ts2-D";
-
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M1");
-			Assert.AreEqual (0, ts2.Items.Count, "M2");
-
-			Assert.AreEqual ("ts2-A", ts1.Items[0].Name, "M3-5");
-			Assert.AreEqual ("ts2-B", ts1.Items[1].Name, "M3-6");
-			Assert.AreEqual ("ts2-C", ts1.Items[2].Name, "M3-7");
-			Assert.AreEqual ("ts2-D", ts1.Items[3].Name, "M3-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M4");
-			Assert.AreEqual (4, ts2.Items.Count, "M5");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M6-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M6-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M6-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M6-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M6-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M6-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M6-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M6-8");
-
-			// Do merge twice, as it helps verify things got back
-			// to the proper state in the unmerge
-			ToolStripManager.Merge (ts2, ts1);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M7");
-			Assert.AreEqual (0, ts2.Items.Count, "M8");
-
-			Assert.AreEqual ("ts2-A", ts1.Items[0].Name, "M9-5");
-			Assert.AreEqual ("ts2-B", ts1.Items[1].Name, "M9-6");
-			Assert.AreEqual ("ts2-C", ts1.Items[2].Name, "M9-7");
-			Assert.AreEqual ("ts2-D", ts1.Items[3].Name, "M9-8");
-
-			ToolStripManager.RevertMerge (ts1, ts2);
-
-			Assert.AreEqual (4, ts1.Items.Count, "M10");
-			Assert.AreEqual (4, ts2.Items.Count, "M11");
-
-			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M12-1");
-			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M12-2");
-			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M12-3");
-			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M12-4");
-			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M12-5");
-			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M12-6");
-			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M12-7");
-			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M12-8");
-		}
-		
-		[Test]
-		public void MethodMergeToolStripsMatchOnly ()
-		{
-			MenuStrip ms1 = new MenuStrip ();
-			MenuStrip ms2 = new MenuStrip ();
-
-			ToolStripMenuItem tsmi1 = (ToolStripMenuItem)ms1.Items.Add ("File");
-			ToolStripMenuItem tsmi2 = (ToolStripMenuItem)ms2.Items.Add ("File");
-
-			tsmi1.DropDownItems.Add ("New 1");
-			tsmi1.DropDownItems.Add ("Open 1");
-
-			tsmi2.DropDownItems.Add ("New 2");
-			tsmi2.DropDownItems.Add ("Open 2");
-			
-			tsmi2.MergeAction = MergeAction.MatchOnly;
-
-			ToolStripManager.Merge (ms2, ms1);
-
-			Assert.AreEqual (4, tsmi1.DropDownItems.Count, "M1");
-			Assert.AreEqual (0, tsmi2.DropDownItems.Count, "M2");
-
-			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M3-1");
-			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M3-2");
-			Assert.AreEqual ("New 2", tsmi1.DropDownItems[2].Text, "M3-3");
-			Assert.AreEqual ("Open 2", tsmi1.DropDownItems[3].Text, "M3-4");
-
-			ToolStripManager.RevertMerge (ms1, ms2);
-
-			Assert.AreEqual (2, tsmi1.DropDownItems.Count, "M4");
-			Assert.AreEqual (2, tsmi2.DropDownItems.Count, "M5");
-
-			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M6-1");
-			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M6-2");
-			Assert.AreEqual ("New 2", tsmi2.DropDownItems[0].Text, "M6-3");
-			Assert.AreEqual ("Open 2", tsmi2.DropDownItems[1].Text, "M6-4");
-
-			// Do merge twice, as it helps verify things got back
-			// to the proper state in the unmerge
-			ToolStripManager.Merge (ms2, ms1);
-
-			Assert.AreEqual (4, tsmi1.DropDownItems.Count, "M7");
-			Assert.AreEqual (0, tsmi2.DropDownItems.Count, "M8");
-
-			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M9-1");
-			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M9-2");
-			Assert.AreEqual ("New 2", tsmi1.DropDownItems[2].Text, "M9-3");
-			Assert.AreEqual ("Open 2", tsmi1.DropDownItems[3].Text, "M9-4");
-
-			ToolStripManager.RevertMerge (ms1, ms2);
-
-			Assert.AreEqual (2, tsmi1.DropDownItems.Count, "M10");
-			Assert.AreEqual (2, tsmi2.DropDownItems.Count, "M11");
-
-			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M12-1");
-			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M12-2");
-			Assert.AreEqual ("New 2", tsmi2.DropDownItems[0].Text, "M12-3");
-			Assert.AreEqual ("Open 2", tsmi2.DropDownItems[1].Text, "M12-4");
-		}
-
-		[Test]  // For bug #81477
-		public void MethodMergeRecursive ()
-		{
-			MenuStrip ms1 = new MenuStrip ();
-			MenuStrip ms2 = new MenuStrip ();
-
-			ToolStripMenuItem tsmi1 = (ToolStripMenuItem)ms1.Items.Add ("File");
-			ToolStripMenuItem tsmi2 = (ToolStripMenuItem)ms2.Items.Add ("File");
-
-			tsmi1.DropDownItems.Add ("New 1");
-			tsmi1.DropDownItems.Add ("Open 1");
-
-			tsmi2.DropDownItems.Add ("New 2");
-			tsmi2.DropDownItems.Add ("Open 2");
-			
-			tsmi2.DropDownItems[0].MergeAction = MergeAction.Insert;
-			tsmi2.DropDownItems[0].MergeIndex = 0;
-
-			tsmi2.MergeAction = MergeAction.MatchOnly;
-
-			ToolStripManager.Merge (ms2, ms1);
-
-			Assert.AreEqual ("New 2", tsmi1.DropDownItems[0].Text, "M13");
-		}
-		
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void MethodMergeANE1 ()
-		{
-			ToolStrip ts = new ToolStrip ();
-			ts.Name = "moose";
-			ToolStripManager.Merge (null, "moose");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void MethodMergeANE2 ()
-		{
-			ToolStrip ts = new ToolStrip ();
-			ToolStripManager.Merge (ts, (string)null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void MethodMergeAE ()
-		{
-			ToolStrip ts = new ToolStrip ();
-			ts.Name = "mergeae";
-			ToolStripManager.Merge (ts, "mergeae");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void MethodMergeANE3 ()
-		{
-			ToolStrip ts = new ToolStrip ();
-			ToolStripManager.Merge (null, ts);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void MethodMergeANE4 ()
-		{
-			ToolStrip ts = new ToolStrip ();
-			ToolStripManager.Merge (ts, (ToolStrip)null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void MethodMergeAE2 ()
-		{
-			ToolStrip ts = new ToolStrip ();
-			ToolStripManager.Merge (ts, ts);
-		}
-
-		[Test]
-		public void MethodRevertMergeNullArgument1 ()
-		{
-			String ts = null;
-
-			Assert.AreEqual (false, ToolStripManager.RevertMerge (ts), "C1");
-		}
-
-		[Test]
-		public void MethodRevertMergeNullArgument2 ()
-		{
-			ToolStrip ts = null;
-
-			Assert.AreEqual (false, ToolStripManager.RevertMerge (ts), "C2");
-		}
-
-		[Test]
-		public void MethodRevertMergeNullArgument3 ()
-		{
-			ToolStrip ts = new ToolStrip ();
-			
-			Assert.AreEqual (false, ToolStripManager.RevertMerge (ts, null), "C3");
-		}
-		
-		[Test]
-		public void MethodMergeNothing ()
-		{
-			// Merge returns false if it can't successfully merge anything
-			ToolStrip ts1 = new ToolStrip ();
-			ToolStrip ts2 = new ToolStrip ();
-			
-			Assert.AreEqual (false, ToolStripManager.Merge (ts1, ts2), "K1");
-		}
-		
-		[Test]  // Should not throw AOORE
-		public void Bug347669 ()
-		{
-			Form main = new MainForm ();
-			main.Show ();
-			Form frm = new Childform ();
-			frm.MdiParent = main;
-			frm.Show ();
-			main.Dispose ();
-		}
-		
-		private class MainForm : Form
-		{
-
-			public MainForm ()
-			{
-				mainMenuStrip1 = new MenuStrip ();
-				File = new ToolStripMenuItem ();
-				openToolStripMenuItem = new ToolStripMenuItem ();
-				toolStripSeparator2 = new ToolStripSeparator ();
-				Dokument = new ToolStripMenuItem ();
-				arveToolStripMenuItem = new ToolStripMenuItem ();
-
-				WareHouse = new ToolStripMenuItem ();
-				Personnel = new ToolStripMenuItem ();
-				Payroll = new ToolStripMenuItem ();
-				FixedAssets = new ToolStripMenuItem ();
-				Supplies = new ToolStripMenuItem ();
-				GeneralLedger = new ToolStripMenuItem ();
-				Manufacturing = new ToolStripMenuItem ();
-				PointOfSale = new ToolStripMenuItem ();
-				CardTerminal = new ToolStripMenuItem ();
-				Rent = new ToolStripMenuItem ();
-				WayBill = new ToolStripMenuItem ();
-				CustomerRelationManagement = new ToolStripMenuItem ();
-				toolStripSeparator8 = new ToolStripSeparator ();
-				NewUserToolStripMenuItem = new ToolStripMenuItem ();
-				exitToolStripMenuItem = new ToolStripMenuItem ();
-
-				mainMenuStrip1.Items.AddRange (new ToolStripItem[] {
-            File
-        });
-				mainMenuStrip1.Location = new Point (0, 0);
-				mainMenuStrip1.Name = "mainMenuStrip1";
-				mainMenuStrip1.Size = new Size (644, 24);
-				mainMenuStrip1.TabIndex = 3;
-				mainMenuStrip1.Text = "menuStrip1";
-				File.DropDownItems.AddRange (new ToolStripItem[] {
-            openToolStripMenuItem,
-            toolStripSeparator2,
-            Dokument,
-            WareHouse,
-            Personnel,
-            Payroll,
-            FixedAssets,
-            Supplies,
-            GeneralLedger,
-            Manufacturing,
-            PointOfSale,
-            CardTerminal,
-            Rent,
-            WayBill,
-            CustomerRelationManagement,
-            toolStripSeparator8,
-            NewUserToolStripMenuItem,
-            exitToolStripMenuItem});
-				File.MergeAction = MergeAction.Insert;
-				File.MergeIndex = 1;
-				File.Name = "File";
-				File.Size = new Size (35, 20);
-				File.Text = "&File";
-				openToolStripMenuItem.MergeIndex = 1;
-				openToolStripMenuItem.Name = "openToolStripMenuItem";
-				openToolStripMenuItem.Size = new Size (196, 22);
-				openToolStripMenuItem.Text = "Open";
-				toolStripSeparator2.MergeIndex = 2;
-				toolStripSeparator2.Name = "toolStripSeparator2";
-				toolStripSeparator2.Size = new Size (193, 6);
-				Dokument.DropDownItems.AddRange (new ToolStripItem[] {
-            arveToolStripMenuItem
-        });
-				Dokument.MergeIndex = 3;
-				Dokument.Name = "Dokument";
-				Dokument.Size = new Size (196, 22);
-				Dokument.Text = "&Dokument";
-				arveToolStripMenuItem.Name = "arveToolStripMenuItem";
-				arveToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+E";
-				arveToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control | Keys.E)));
-				arveToolStripMenuItem.Size = new Size (146, 22);
-				arveToolStripMenuItem.Text = "Arve";
-				WareHouse.MergeIndex = 4;
-				WareHouse.Name = "WareHouse";
-				WareHouse.Size = new Size (196, 22);
-				WareHouse.Text = "&Ladu";
-				Personnel.MergeIndex = 5;
-				Personnel.Name = "Personnel";
-				Personnel.Size = new Size (196, 22);
-				Personnel.Text = "&Kaader";
-				Payroll.MergeIndex = 6;
-				Payroll.Name = "Payroll";
-				Payroll.Size = new Size (196, 22);
-				Payroll.Text = "&Palk";
-				FixedAssets.MergeIndex = 7;
-				FixedAssets.Name = "FixedAssets";
-				FixedAssets.Size = new Size (196, 22);
-				FixedAssets.Text = "Test";
-				Supplies.MergeIndex = 8;
-				Supplies.Name = "Supplies";
-				Supplies.Size = new Size (196, 22);
-				Supplies.Text = "Sample";
-				GeneralLedger.MergeIndex = 9;
-				GeneralLedger.Name = "GeneralLedger";
-				GeneralLedger.Size = new Size (196, 22);
-				GeneralLedger.Text = "Blah";
-				Manufacturing.MergeIndex = 10;
-				Manufacturing.Name = "Manufacturing";
-				Manufacturing.Size = new Size (196, 22);
-				Manufacturing.Text = "&Tootmine";
-				PointOfSale.MergeIndex = 11;
-				PointOfSale.Name = "PointOfSale";
-				PointOfSale.Size = new Size (196, 22);
-				PointOfSale.Text = "IceCream";
-				CardTerminal.MergeIndex = 12;
-				CardTerminal.Name = "CardTerminal";
-				CardTerminal.Size = new Size (196, 22);
-				CardTerminal.Text = "Terminal";
-				Rent.MergeIndex = 13;
-				Rent.Name = "Rent";
-				Rent.Size = new Size (196, 22);
-				Rent.Text = "Rent";
-				WayBill.MergeIndex = 14;
-				WayBill.Name = "WayBill";
-				WayBill.Size = new Size (196, 22);
-				WayBill.Text = "WayBill";
-				CustomerRelationManagement.MergeIndex = 15;
-				CustomerRelationManagement.Name = "CustomerRelationManagement";
-				CustomerRelationManagement.Size = new Size (196, 22);
-				CustomerRelationManagement.Text = "CustomerRelationManagement";
-				toolStripSeparator8.MergeAction = MergeAction.Insert;
-				toolStripSeparator8.MergeIndex = 20;
-				toolStripSeparator8.Name = "toolStripSeparator8";
-				toolStripSeparator8.Size = new Size (193, 6);
-				NewUserToolStripMenuItem.MergeIndex = 21;
-				NewUserToolStripMenuItem.Name = "NewUserToolStripMenuItem";
-				NewUserToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Shift |
-			Keys.F2)));
-				NewUserToolStripMenuItem.Size = new Size (196, 22);
-				NewUserToolStripMenuItem.Text = "Uus kasutaja";
-				exitToolStripMenuItem.MergeIndex = 22;
-				exitToolStripMenuItem.Name = "exitToolStripMenuItem";
-				exitToolStripMenuItem.Size = new Size (196, 22);
-				exitToolStripMenuItem.Text = "Exit";
-
-				AutoScaleDimensions = new SizeF (6F, 13F);
-				AutoScaleMode = AutoScaleMode.Font;
-				BackgroundImageLayout = ImageLayout.Center;
-				ClientSize = new Size (644, 396);
-				Controls.Add (mainMenuStrip1);
-				IsMdiContainer = true;
-				KeyPreview = false;
-				MainMenuStrip = mainMenuStrip1;
-				Name = "MainForm";
-			}
-
-			MenuStrip mainMenuStrip1;
-			ToolStripMenuItem File;
-			ToolStripMenuItem openToolStripMenuItem;
-			ToolStripSeparator toolStripSeparator2;
-			ToolStripMenuItem exitToolStripMenuItem;
-			ToolStripMenuItem Dokument;
-			ToolStripMenuItem arveToolStripMenuItem;
-			ToolStripMenuItem WareHouse;
-			ToolStripMenuItem Personnel;
-			ToolStripMenuItem Payroll;
-			ToolStripMenuItem FixedAssets;
-			ToolStripMenuItem Supplies;
-			ToolStripMenuItem GeneralLedger;
-			ToolStripMenuItem Manufacturing;
-			ToolStripMenuItem PointOfSale;
-			ToolStripMenuItem CardTerminal;
-			ToolStripMenuItem Rent;
-			ToolStripMenuItem WayBill;
-			ToolStripMenuItem CustomerRelationManagement;
-			ToolStripSeparator toolStripSeparator8;
-			ToolStripMenuItem NewUserToolStripMenuItem;
-		}
-
-		private class Childform : Form
-		{
-			public Childform ()
-			{
-
-				menuStrip1 = new MenuStrip ();
-				fileToolStripMenuItem = new ToolStripMenuItem ();
-				toolStripSeparator = new ToolStripSeparator ();
-				printToolStripMenuItem = new ToolStripMenuItem ();
-				editToolStripMenuItem = new ToolStripMenuItem ();
-				toolStripSeparator3 = new ToolStripSeparator ();
-				copyToolStripMenuItem = new ToolStripMenuItem ();
-				toolStripSeparator4 = new ToolStripSeparator ();
-				selectAllToolStripMenuItem = new ToolStripMenuItem ();
-				toolsToolStripMenuItem = new ToolStripMenuItem ();
-				addToolStripMenuItem = new ToolStripMenuItem ();
-				deleteToolStripMenuItem = new ToolStripMenuItem ();
-				filterToolStripMenuItem = new ToolStripMenuItem ();
-				helpToolStripMenuItem = new ToolStripMenuItem ();
-				searchToolStripMenuItem = new ToolStripMenuItem ();
-				menuStrip1.SuspendLayout ();
-				SuspendLayout ();
-
-				menuStrip1.Items.AddRange (new ToolStripItem[] {
-            fileToolStripMenuItem,
-	    editToolStripMenuItem,
-	    toolsToolStripMenuItem,
-	    helpToolStripMenuItem});
-				menuStrip1.Location = new Point (0, 0);
-				menuStrip1.Name = "menuStrip1";
-				menuStrip1.RenderMode = ToolStripRenderMode.System;
-				menuStrip1.Size = new Size (337, 24);
-				menuStrip1.TabIndex = 2;
-				menuStrip1.Text = "menuStrip1";
-				menuStrip1.Visible = false;
-
-				fileToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
-            toolStripSeparator,
-            printToolStripMenuItem});
-				fileToolStripMenuItem.MergeAction = MergeAction.MatchOnly;
-				fileToolStripMenuItem.Name = "fileToolStripMenuItem";
-				fileToolStripMenuItem.Size = new Size (35, 20);
-				fileToolStripMenuItem.Text = "&File";
-				toolStripSeparator.MergeAction = MergeAction.Insert;
-				toolStripSeparator.MergeIndex = 3;
-				toolStripSeparator.Name = "toolStripSeparator";
-				toolStripSeparator.Size = new Size (149, 6);
-				printToolStripMenuItem.MergeAction = MergeAction.Insert;
-				printToolStripMenuItem.MergeIndex = 2;
-				printToolStripMenuItem.Name = "printToolStripMenuItem";
-				printToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control |
-			Keys.P)));
-				printToolStripMenuItem.Size = new Size (152, 22);
-				printToolStripMenuItem.Text = "&Print";
-				editToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
-	    toolStripSeparator3,
-	    copyToolStripMenuItem,
-	    toolStripSeparator4,
-	    selectAllToolStripMenuItem});
-				editToolStripMenuItem.MergeAction = MergeAction.Insert;
-				editToolStripMenuItem.MergeIndex = 1;
-				editToolStripMenuItem.Name = "editToolStripMenuItem";
-				editToolStripMenuItem.Size = new Size (59, 20);
-				editToolStripMenuItem.Text = "&Paranda";
-				toolStripSeparator3.Name = "toolStripSeparator3";
-				toolStripSeparator3.Size = new Size (157, 6);
-				copyToolStripMenuItem.Name = "copyToolStripMenuItem";
-				copyToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control | Keys.C)));
-				copyToolStripMenuItem.Size = new Size (160, 22);
-				copyToolStripMenuItem.Text = "Kopeeri";
-				toolStripSeparator4.Name = "toolStripSeparator4";
-				toolStripSeparator4.Size = new Size (157, 6);
-				selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
-				selectAllToolStripMenuItem.Size = new Size (160, 22);
-				selectAllToolStripMenuItem.Text = "selectAllToolStripMenuItem";
-				toolsToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
-	    addToolStripMenuItem,
-	    deleteToolStripMenuItem,
-	    filterToolStripMenuItem});
-				toolsToolStripMenuItem.MergeAction = MergeAction.Insert;
-				toolsToolStripMenuItem.MergeIndex = 2;
-				toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
-				toolsToolStripMenuItem.Size = new Size (60, 20);
-				toolsToolStripMenuItem.Text = "&Tegevus";
-				addToolStripMenuItem.Name = "addToolStripMenuItem";
-				addToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control | Keys.N)));
-				addToolStripMenuItem.Size = new Size (160, 22);
-				addToolStripMenuItem.Text = "Lisa";
-				deleteToolStripMenuItem.Name = "deleteToolStripMenuItem";
-				deleteToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control |
-			Keys.T)));
-				deleteToolStripMenuItem.Size = new Size (160, 22);
-				deleteToolStripMenuItem.Text = "Kustuta";
-				filterToolStripMenuItem.ImageTransparentColor =
-			Color.Silver;
-				filterToolStripMenuItem.Name = "filterToolStripMenuItem";
-				filterToolStripMenuItem.ShortcutKeys = Keys.F11;
-				filterToolStripMenuItem.Size = new Size (160, 22);
-				filterToolStripMenuItem.Text = "Tingimus";
-				helpToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
-	    searchToolStripMenuItem});
-				helpToolStripMenuItem.MergeAction = MergeAction.MatchOnly;
-				helpToolStripMenuItem.Name = "helpToolStripMenuItem";
-				helpToolStripMenuItem.Size = new Size (34, 20);
-				helpToolStripMenuItem.Text = "&Abi";
-				searchToolStripMenuItem.MergeAction = MergeAction.Insert;
-				searchToolStripMenuItem.MergeIndex = 1;
-				searchToolStripMenuItem.Name = "searchToolStripMenuItem";
-				searchToolStripMenuItem.ShortcutKeys = Keys.F1;
-				searchToolStripMenuItem.Size = new Size (160, 22);
-				searchToolStripMenuItem.Text = "&Otsi teemat";
-
-				AutoScaleDimensions = new SizeF (6F, 13F);
-				ClientSize = new Size (337, 272);
-				Controls.Add (menuStrip1);
-			}
-
-			MenuStrip menuStrip1;
-			ToolStripMenuItem fileToolStripMenuItem;
-			ToolStripSeparator toolStripSeparator;
-			ToolStripMenuItem printToolStripMenuItem;
-			ToolStripMenuItem editToolStripMenuItem;
-			ToolStripSeparator toolStripSeparator3;
-			ToolStripMenuItem copyToolStripMenuItem;
-			ToolStripSeparator toolStripSeparator4;
-			ToolStripMenuItem selectAllToolStripMenuItem;
-			ToolStripMenuItem toolsToolStripMenuItem;
-			ToolStripMenuItem addToolStripMenuItem;
-			ToolStripMenuItem deleteToolStripMenuItem;
-			ToolStripMenuItem filterToolStripMenuItem;
-			ToolStripMenuItem helpToolStripMenuItem;
-			ToolStripMenuItem searchToolStripMenuItem;
-		}
-	}
-}
+//
+// ToolStripManagerTest.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripManagerTest : TestHelper
+	{
+		[Test]
+		[Ignore ("This has to run all by itself.  Toolstrips in other tests register themselves and mess this up.")]
+		public void BehaviorFindToolStrip ()
+		{
+			// Default stuff
+			Assert.AreEqual (null, ToolStripManager.FindToolStrip (string.Empty), "A1");
+			Assert.AreEqual (null, ToolStripManager.FindToolStrip ("MyStrip"), "A2");
+			
+			ToolStrip ts = new ToolStrip ();
+			ts.Name = "MyStrip";
+
+			// Basic operation
+			Assert.AreSame (ts, ToolStripManager.FindToolStrip ("MyStrip"), "A3");
+			
+			// Dispose removes them
+			ts.Dispose ();
+			Assert.AreEqual (null, ToolStripManager.FindToolStrip ("MyStrip"), "A4");
+			
+			ts = new ToolStrip ();
+			ts.Name = "MyStrip1";
+			MenuStrip ms = new MenuStrip ();
+			ms.Name = "MyStrip2";
+
+			// Basic operation
+			Assert.AreSame (ts, ToolStripManager.FindToolStrip ("MyStrip1"), "A5");
+			Assert.AreSame (ms, ToolStripManager.FindToolStrip ("MyStrip2"), "A6");
+		
+			// Find unnamed strip
+			StatusStrip ss = new StatusStrip ();
+			Assert.AreEqual (ss, ToolStripManager.FindToolStrip (string.Empty), "A7");
+			
+			// Always return first unnamed strip
+			ContextMenuStrip cms = new ContextMenuStrip ();
+			Assert.AreEqual (ss, ToolStripManager.FindToolStrip (string.Empty), "A8");
+			
+			// Remove first unnamed strip, returns second one
+			ss.Dispose ();
+			Assert.AreEqual (cms, ToolStripManager.FindToolStrip (string.Empty), "A9");
+			
+			// ContextMenuStrips are included
+			cms.Name = "Context";
+			Assert.AreEqual (cms, ToolStripManager.FindToolStrip ("Context"), "A10");
+		}
+		
+		[Test]
+		public void MethodIsShortcutValid ()
+		{
+			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.F1), "A1");
+			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.F7), "A1");
+			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.Shift | Keys.F1), "A1");
+			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.Control | Keys.F1), "A1");
+			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.Shift), "A1");
+			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.Alt), "A1");
+			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.D6), "A1");
+			Assert.AreEqual (true, ToolStripManager.IsValidShortcut (Keys.Control | Keys.S), "A1");
+			Assert.AreEqual (false, ToolStripManager.IsValidShortcut (Keys.L), "A1");
+		}
+		
+		[Test]
+		public void BehaviorTwoShortcuts ()
+		{
+			ToolStripMenuItem tsmi = new ToolStripMenuItem ();
+			tsmi.ShortcutKeys = Keys.Control | Keys.D;
+			ToolStripMenuItem tsmi2 = new ToolStripMenuItem ();
+			tsmi2.ShortcutKeys = Keys.Control | Keys.D;
+
+			Assert.AreEqual (Keys.Control | Keys.D, tsmi.ShortcutKeys, "A1");
+			Assert.AreEqual (Keys.Control | Keys.D, tsmi2.ShortcutKeys, "A2");
+			
+			ToolStrip ts = new ToolStrip ();
+			ts.Items.Add (tsmi);
+			ts.Items.Add (tsmi2);
+
+			Assert.AreEqual (Keys.Control | Keys.D, tsmi.ShortcutKeys, "A3");
+			Assert.AreEqual (Keys.Control | Keys.D, tsmi2.ShortcutKeys, "A4");
+		}
+		
+		[Test]
+		public void MethodMergeToolStripsAppend ()
+		{
+			// MergeAction = Append
+			ToolStrip ts1 = new ToolStrip ();
+			ToolStrip ts2 = new ToolStrip ();
+
+			ts1.Items.Add ("ts1-A");
+			ts1.Items.Add ("ts1-B");
+			ts1.Items.Add ("ts1-C");
+			ts1.Items.Add ("ts1-D");
+
+			ts2.Items.Add ("ts2-A");
+			ts2.Items.Add ("ts2-B");
+			ts2.Items.Add ("ts2-C");
+			ts2.Items.Add ("ts2-D");
+
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (8, ts1.Items.Count, "M1");
+			Assert.AreEqual (0, ts2.Items.Count, "M2");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M3-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M3-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M3-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M3-4");
+			Assert.AreEqual ("ts2-A", ts1.Items[4].Text, "M3-5");
+			Assert.AreEqual ("ts2-B", ts1.Items[5].Text, "M3-6");
+			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M3-7");
+			Assert.AreEqual ("ts2-D", ts1.Items[7].Text, "M3-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M4");
+			Assert.AreEqual (4, ts2.Items.Count, "M5");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M6-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M6-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M6-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M6-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M6-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M6-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M6-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M6-8");
+
+			// Do merge twice, as it helps verify things got back
+			// to the proper state in the unmerge
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (8, ts1.Items.Count, "M7");
+			Assert.AreEqual (0, ts2.Items.Count, "M8");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M9-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M9-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M9-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M9-4");
+			Assert.AreEqual ("ts2-A", ts1.Items[4].Text, "M9-5");
+			Assert.AreEqual ("ts2-B", ts1.Items[5].Text, "M9-6");
+			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M9-7");
+			Assert.AreEqual ("ts2-D", ts1.Items[7].Text, "M9-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M10");
+			Assert.AreEqual (4, ts2.Items.Count, "M11");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M12-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M12-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M12-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M12-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M12-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M12-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M12-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M12-8");
+		}
+		
+		[Test]
+		public void MethodMergeToolStripsInsert ()
+		{
+			// MergeAction = Insert
+			ToolStrip ts1 = new ToolStrip ();
+			ToolStrip ts2 = new ToolStrip ();
+
+			ts1.Items.Add ("ts1-A");
+			ts1.Items.Add ("ts1-B");
+			ts1.Items.Add ("ts1-C");
+			ts1.Items.Add ("ts1-D");
+
+			ts2.Items.Add ("ts2-A");
+			ts2.Items.Add ("ts2-B");
+			ts2.Items.Add ("ts2-C");
+			ts2.Items.Add ("ts2-D");
+
+			ts2.Items[0].MergeAction = MergeAction.Insert;
+			ts2.Items[0].MergeIndex = 2;
+			ts2.Items[1].MergeAction = MergeAction.Insert;
+			ts2.Items[2].MergeAction = MergeAction.Insert;
+			ts2.Items[2].MergeIndex = 12;
+			ts2.Items[3].MergeAction = MergeAction.Insert;
+			ts2.Items[3].MergeIndex = 0;
+			
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (7, ts1.Items.Count, "M1");
+			Assert.AreEqual (1, ts2.Items.Count, "M2");
+
+			Assert.AreEqual ("ts2-D", ts1.Items[0].Text, "M3-1");
+			Assert.AreEqual ("ts1-A", ts1.Items[1].Text, "M3-2");
+			Assert.AreEqual ("ts1-B", ts1.Items[2].Text, "M3-3");
+			Assert.AreEqual ("ts2-A", ts1.Items[3].Text, "M3-4");
+			Assert.AreEqual ("ts1-C", ts1.Items[4].Text, "M3-5");
+			Assert.AreEqual ("ts1-D", ts1.Items[5].Text, "M3-6");
+			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M3-7");
+			Assert.AreEqual ("ts2-B", ts2.Items[0].Text, "M3-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M4");
+			Assert.AreEqual (4, ts2.Items.Count, "M5");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M6-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M6-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M6-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M6-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M6-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M6-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M6-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M6-8");
+
+			// Do merge twice, as it helps verify things got back
+			// to the proper state in the unmerge
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (7, ts1.Items.Count, "M7");
+			Assert.AreEqual (1, ts2.Items.Count, "M8");
+
+			Assert.AreEqual ("ts2-D", ts1.Items[0].Text, "M9-1");
+			Assert.AreEqual ("ts1-A", ts1.Items[1].Text, "M9-2");
+			Assert.AreEqual ("ts1-B", ts1.Items[2].Text, "M9-3");
+			Assert.AreEqual ("ts2-A", ts1.Items[3].Text, "M9-4");
+			Assert.AreEqual ("ts1-C", ts1.Items[4].Text, "M9-5");
+			Assert.AreEqual ("ts1-D", ts1.Items[5].Text, "M9-6");
+			Assert.AreEqual ("ts2-C", ts1.Items[6].Text, "M9-7");
+			Assert.AreEqual ("ts2-B", ts2.Items[0].Text, "M9-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M10");
+			Assert.AreEqual (4, ts2.Items.Count, "M11");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Text, "M12-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Text, "M12-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Text, "M12-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Text, "M12-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Text, "M12-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Text, "M12-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Text, "M12-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Text, "M12-8");
+		}
+
+		[Test]
+		public void MethodMergeToolStripsRemove ()
+		{
+			// MergeAction = Remove
+			ToolStrip ts1 = new ToolStrip ();
+			ToolStrip ts2 = new ToolStrip ();
+
+			ts1.Items.Add ("ts1-A");
+			ts1.Items.Add ("ts1-B");
+			ts1.Items.Add ("ts1-C");
+			ts1.Items.Add ("ts1-D");
+
+			ts2.Items.Add ("ts1-A");
+			ts2.Items.Add ("ts1-B");
+			ts2.Items.Add ("ts1-C");
+			ts2.Items.Add ("ts1-D");
+
+			ts2.Items[0].MergeAction = MergeAction.Remove;
+			ts2.Items[1].MergeAction = MergeAction.Remove;
+			ts2.Items[2].MergeAction = MergeAction.Remove;
+			ts2.Items[3].MergeAction = MergeAction.Remove;
+
+			// Both the item from ts1 and ts2 must have the same Text for Remove to work,
+			// so I need to give these a Name so I can differentiate them later.
+			ts1.Items[0].Name = "ts1-A";
+			ts1.Items[1].Name = "ts1-B";
+			ts1.Items[2].Name = "ts1-C";
+			ts1.Items[3].Name = "ts1-D";
+			ts2.Items[0].Name = "ts2-A";
+			ts2.Items[1].Name = "ts2-B";
+			ts2.Items[2].Name = "ts2-C";
+			ts2.Items[3].Name = "ts2-D";
+
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (0, ts1.Items.Count, "M1");
+			Assert.AreEqual (4, ts2.Items.Count, "M2");
+
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M3-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M3-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M3-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M3-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M4");
+			Assert.AreEqual (4, ts2.Items.Count, "M5");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M6-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M6-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M6-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M6-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M6-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M6-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M6-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M6-8");
+
+			// Do merge twice, as it helps verify things got back
+			// to the proper state in the unmerge
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (0, ts1.Items.Count, "M7");
+			Assert.AreEqual (4, ts2.Items.Count, "M8");
+
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M9-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M9-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M9-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M9-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M10");
+			Assert.AreEqual (4, ts2.Items.Count, "M11");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M12-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M12-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M12-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M12-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M12-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M12-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M12-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M12-8");
+		}
+
+		[Test]
+		public void MethodMergeToolStripsReplace ()
+		{
+			// MergeAction = Replace
+			ToolStrip ts1 = new ToolStrip ();
+			ToolStrip ts2 = new ToolStrip ();
+
+			ts1.Items.Add ("ts1-A");
+			ts1.Items.Add ("ts1-B");
+			ts1.Items.Add ("ts1-C");
+			ts1.Items.Add ("ts1-D");
+
+			ts2.Items.Add ("ts1-A");
+			ts2.Items.Add ("ts1-B");
+			ts2.Items.Add ("ts1-C");
+			ts2.Items.Add ("ts1-D");
+
+			ts2.Items[0].MergeAction = MergeAction.Replace;
+			ts2.Items[1].MergeAction = MergeAction.Replace;
+			ts2.Items[2].MergeAction = MergeAction.Replace;
+			ts2.Items[3].MergeAction = MergeAction.Replace;
+
+			// Both the item from ts1 and ts2 must have the same Text for Replace to work,
+			// so I need to give these a Name so I can differentiate them later.
+			ts1.Items[0].Name = "ts1-A";
+			ts1.Items[1].Name = "ts1-B";
+			ts1.Items[2].Name = "ts1-C";
+			ts1.Items[3].Name = "ts1-D";
+			ts2.Items[0].Name = "ts2-A";
+			ts2.Items[1].Name = "ts2-B";
+			ts2.Items[2].Name = "ts2-C";
+			ts2.Items[3].Name = "ts2-D";
+
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M1");
+			Assert.AreEqual (0, ts2.Items.Count, "M2");
+
+			Assert.AreEqual ("ts2-A", ts1.Items[0].Name, "M3-5");
+			Assert.AreEqual ("ts2-B", ts1.Items[1].Name, "M3-6");
+			Assert.AreEqual ("ts2-C", ts1.Items[2].Name, "M3-7");
+			Assert.AreEqual ("ts2-D", ts1.Items[3].Name, "M3-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M4");
+			Assert.AreEqual (4, ts2.Items.Count, "M5");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M6-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M6-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M6-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M6-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M6-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M6-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M6-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M6-8");
+
+			// Do merge twice, as it helps verify things got back
+			// to the proper state in the unmerge
+			ToolStripManager.Merge (ts2, ts1);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M7");
+			Assert.AreEqual (0, ts2.Items.Count, "M8");
+
+			Assert.AreEqual ("ts2-A", ts1.Items[0].Name, "M9-5");
+			Assert.AreEqual ("ts2-B", ts1.Items[1].Name, "M9-6");
+			Assert.AreEqual ("ts2-C", ts1.Items[2].Name, "M9-7");
+			Assert.AreEqual ("ts2-D", ts1.Items[3].Name, "M9-8");
+
+			ToolStripManager.RevertMerge (ts1, ts2);
+
+			Assert.AreEqual (4, ts1.Items.Count, "M10");
+			Assert.AreEqual (4, ts2.Items.Count, "M11");
+
+			Assert.AreEqual ("ts1-A", ts1.Items[0].Name, "M12-1");
+			Assert.AreEqual ("ts1-B", ts1.Items[1].Name, "M12-2");
+			Assert.AreEqual ("ts1-C", ts1.Items[2].Name, "M12-3");
+			Assert.AreEqual ("ts1-D", ts1.Items[3].Name, "M12-4");
+			Assert.AreEqual ("ts2-A", ts2.Items[0].Name, "M12-5");
+			Assert.AreEqual ("ts2-B", ts2.Items[1].Name, "M12-6");
+			Assert.AreEqual ("ts2-C", ts2.Items[2].Name, "M12-7");
+			Assert.AreEqual ("ts2-D", ts2.Items[3].Name, "M12-8");
+		}
+		
+		[Test]
+		public void MethodMergeToolStripsMatchOnly ()
+		{
+			MenuStrip ms1 = new MenuStrip ();
+			MenuStrip ms2 = new MenuStrip ();
+
+			ToolStripMenuItem tsmi1 = (ToolStripMenuItem)ms1.Items.Add ("File");
+			ToolStripMenuItem tsmi2 = (ToolStripMenuItem)ms2.Items.Add ("File");
+
+			tsmi1.DropDownItems.Add ("New 1");
+			tsmi1.DropDownItems.Add ("Open 1");
+
+			tsmi2.DropDownItems.Add ("New 2");
+			tsmi2.DropDownItems.Add ("Open 2");
+			
+			tsmi2.MergeAction = MergeAction.MatchOnly;
+
+			ToolStripManager.Merge (ms2, ms1);
+
+			Assert.AreEqual (4, tsmi1.DropDownItems.Count, "M1");
+			Assert.AreEqual (0, tsmi2.DropDownItems.Count, "M2");
+
+			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M3-1");
+			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M3-2");
+			Assert.AreEqual ("New 2", tsmi1.DropDownItems[2].Text, "M3-3");
+			Assert.AreEqual ("Open 2", tsmi1.DropDownItems[3].Text, "M3-4");
+
+			ToolStripManager.RevertMerge (ms1, ms2);
+
+			Assert.AreEqual (2, tsmi1.DropDownItems.Count, "M4");
+			Assert.AreEqual (2, tsmi2.DropDownItems.Count, "M5");
+
+			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M6-1");
+			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M6-2");
+			Assert.AreEqual ("New 2", tsmi2.DropDownItems[0].Text, "M6-3");
+			Assert.AreEqual ("Open 2", tsmi2.DropDownItems[1].Text, "M6-4");
+
+			// Do merge twice, as it helps verify things got back
+			// to the proper state in the unmerge
+			ToolStripManager.Merge (ms2, ms1);
+
+			Assert.AreEqual (4, tsmi1.DropDownItems.Count, "M7");
+			Assert.AreEqual (0, tsmi2.DropDownItems.Count, "M8");
+
+			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M9-1");
+			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M9-2");
+			Assert.AreEqual ("New 2", tsmi1.DropDownItems[2].Text, "M9-3");
+			Assert.AreEqual ("Open 2", tsmi1.DropDownItems[3].Text, "M9-4");
+
+			ToolStripManager.RevertMerge (ms1, ms2);
+
+			Assert.AreEqual (2, tsmi1.DropDownItems.Count, "M10");
+			Assert.AreEqual (2, tsmi2.DropDownItems.Count, "M11");
+
+			Assert.AreEqual ("New 1", tsmi1.DropDownItems[0].Text, "M12-1");
+			Assert.AreEqual ("Open 1", tsmi1.DropDownItems[1].Text, "M12-2");
+			Assert.AreEqual ("New 2", tsmi2.DropDownItems[0].Text, "M12-3");
+			Assert.AreEqual ("Open 2", tsmi2.DropDownItems[1].Text, "M12-4");
+		}
+
+		[Test]  // For bug #81477
+		public void MethodMergeRecursive ()
+		{
+			MenuStrip ms1 = new MenuStrip ();
+			MenuStrip ms2 = new MenuStrip ();
+
+			ToolStripMenuItem tsmi1 = (ToolStripMenuItem)ms1.Items.Add ("File");
+			ToolStripMenuItem tsmi2 = (ToolStripMenuItem)ms2.Items.Add ("File");
+
+			tsmi1.DropDownItems.Add ("New 1");
+			tsmi1.DropDownItems.Add ("Open 1");
+
+			tsmi2.DropDownItems.Add ("New 2");
+			tsmi2.DropDownItems.Add ("Open 2");
+			
+			tsmi2.DropDownItems[0].MergeAction = MergeAction.Insert;
+			tsmi2.DropDownItems[0].MergeIndex = 0;
+
+			tsmi2.MergeAction = MergeAction.MatchOnly;
+
+			ToolStripManager.Merge (ms2, ms1);
+
+			Assert.AreEqual ("New 2", tsmi1.DropDownItems[0].Text, "M13");
+		}
+		
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void MethodMergeANE1 ()
+		{
+			ToolStrip ts = new ToolStrip ();
+			ts.Name = "moose";
+			ToolStripManager.Merge (null, "moose");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void MethodMergeANE2 ()
+		{
+			ToolStrip ts = new ToolStrip ();
+			ToolStripManager.Merge (ts, (string)null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MethodMergeAE ()
+		{
+			ToolStrip ts = new ToolStrip ();
+			ts.Name = "mergeae";
+			ToolStripManager.Merge (ts, "mergeae");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void MethodMergeANE3 ()
+		{
+			ToolStrip ts = new ToolStrip ();
+			ToolStripManager.Merge (null, ts);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void MethodMergeANE4 ()
+		{
+			ToolStrip ts = new ToolStrip ();
+			ToolStripManager.Merge (ts, (ToolStrip)null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MethodMergeAE2 ()
+		{
+			ToolStrip ts = new ToolStrip ();
+			ToolStripManager.Merge (ts, ts);
+		}
+
+		[Test]
+		public void MethodRevertMergeNullArgument1 ()
+		{
+			String ts = null;
+
+			Assert.AreEqual (false, ToolStripManager.RevertMerge (ts), "C1");
+		}
+
+		[Test]
+		public void MethodRevertMergeNullArgument2 ()
+		{
+			ToolStrip ts = null;
+
+			Assert.AreEqual (false, ToolStripManager.RevertMerge (ts), "C2");
+		}
+
+		[Test]
+		public void MethodRevertMergeNullArgument3 ()
+		{
+			ToolStrip ts = new ToolStrip ();
+			
+			Assert.AreEqual (false, ToolStripManager.RevertMerge (ts, null), "C3");
+		}
+		
+		[Test]
+		public void MethodMergeNothing ()
+		{
+			// Merge returns false if it can't successfully merge anything
+			ToolStrip ts1 = new ToolStrip ();
+			ToolStrip ts2 = new ToolStrip ();
+			
+			Assert.AreEqual (false, ToolStripManager.Merge (ts1, ts2), "K1");
+		}
+		
+		[Test]  // Should not throw AOORE
+		public void Bug347669 ()
+		{
+			Form main = new MainForm ();
+			main.Show ();
+			Form frm = new Childform ();
+			frm.MdiParent = main;
+			frm.Show ();
+			main.Dispose ();
+		}
+		
+		private class MainForm : Form
+		{
+
+			public MainForm ()
+			{
+				mainMenuStrip1 = new MenuStrip ();
+				File = new ToolStripMenuItem ();
+				openToolStripMenuItem = new ToolStripMenuItem ();
+				toolStripSeparator2 = new ToolStripSeparator ();
+				Dokument = new ToolStripMenuItem ();
+				arveToolStripMenuItem = new ToolStripMenuItem ();
+
+				WareHouse = new ToolStripMenuItem ();
+				Personnel = new ToolStripMenuItem ();
+				Payroll = new ToolStripMenuItem ();
+				FixedAssets = new ToolStripMenuItem ();
+				Supplies = new ToolStripMenuItem ();
+				GeneralLedger = new ToolStripMenuItem ();
+				Manufacturing = new ToolStripMenuItem ();
+				PointOfSale = new ToolStripMenuItem ();
+				CardTerminal = new ToolStripMenuItem ();
+				Rent = new ToolStripMenuItem ();
+				WayBill = new ToolStripMenuItem ();
+				CustomerRelationManagement = new ToolStripMenuItem ();
+				toolStripSeparator8 = new ToolStripSeparator ();
+				NewUserToolStripMenuItem = new ToolStripMenuItem ();
+				exitToolStripMenuItem = new ToolStripMenuItem ();
+
+				mainMenuStrip1.Items.AddRange (new ToolStripItem[] {
+            File
+        });
+				mainMenuStrip1.Location = new Point (0, 0);
+				mainMenuStrip1.Name = "mainMenuStrip1";
+				mainMenuStrip1.Size = new Size (644, 24);
+				mainMenuStrip1.TabIndex = 3;
+				mainMenuStrip1.Text = "menuStrip1";
+				File.DropDownItems.AddRange (new ToolStripItem[] {
+            openToolStripMenuItem,
+            toolStripSeparator2,
+            Dokument,
+            WareHouse,
+            Personnel,
+            Payroll,
+            FixedAssets,
+            Supplies,
+            GeneralLedger,
+            Manufacturing,
+            PointOfSale,
+            CardTerminal,
+            Rent,
+            WayBill,
+            CustomerRelationManagement,
+            toolStripSeparator8,
+            NewUserToolStripMenuItem,
+            exitToolStripMenuItem});
+				File.MergeAction = MergeAction.Insert;
+				File.MergeIndex = 1;
+				File.Name = "File";
+				File.Size = new Size (35, 20);
+				File.Text = "&File";
+				openToolStripMenuItem.MergeIndex = 1;
+				openToolStripMenuItem.Name = "openToolStripMenuItem";
+				openToolStripMenuItem.Size = new Size (196, 22);
+				openToolStripMenuItem.Text = "Open";
+				toolStripSeparator2.MergeIndex = 2;
+				toolStripSeparator2.Name = "toolStripSeparator2";
+				toolStripSeparator2.Size = new Size (193, 6);
+				Dokument.DropDownItems.AddRange (new ToolStripItem[] {
+            arveToolStripMenuItem
+        });
+				Dokument.MergeIndex = 3;
+				Dokument.Name = "Dokument";
+				Dokument.Size = new Size (196, 22);
+				Dokument.Text = "&Dokument";
+				arveToolStripMenuItem.Name = "arveToolStripMenuItem";
+				arveToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+E";
+				arveToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control | Keys.E)));
+				arveToolStripMenuItem.Size = new Size (146, 22);
+				arveToolStripMenuItem.Text = "Arve";
+				WareHouse.MergeIndex = 4;
+				WareHouse.Name = "WareHouse";
+				WareHouse.Size = new Size (196, 22);
+				WareHouse.Text = "&Ladu";
+				Personnel.MergeIndex = 5;
+				Personnel.Name = "Personnel";
+				Personnel.Size = new Size (196, 22);
+				Personnel.Text = "&Kaader";
+				Payroll.MergeIndex = 6;
+				Payroll.Name = "Payroll";
+				Payroll.Size = new Size (196, 22);
+				Payroll.Text = "&Palk";
+				FixedAssets.MergeIndex = 7;
+				FixedAssets.Name = "FixedAssets";
+				FixedAssets.Size = new Size (196, 22);
+				FixedAssets.Text = "Test";
+				Supplies.MergeIndex = 8;
+				Supplies.Name = "Supplies";
+				Supplies.Size = new Size (196, 22);
+				Supplies.Text = "Sample";
+				GeneralLedger.MergeIndex = 9;
+				GeneralLedger.Name = "GeneralLedger";
+				GeneralLedger.Size = new Size (196, 22);
+				GeneralLedger.Text = "Blah";
+				Manufacturing.MergeIndex = 10;
+				Manufacturing.Name = "Manufacturing";
+				Manufacturing.Size = new Size (196, 22);
+				Manufacturing.Text = "&Tootmine";
+				PointOfSale.MergeIndex = 11;
+				PointOfSale.Name = "PointOfSale";
+				PointOfSale.Size = new Size (196, 22);
+				PointOfSale.Text = "IceCream";
+				CardTerminal.MergeIndex = 12;
+				CardTerminal.Name = "CardTerminal";
+				CardTerminal.Size = new Size (196, 22);
+				CardTerminal.Text = "Terminal";
+				Rent.MergeIndex = 13;
+				Rent.Name = "Rent";
+				Rent.Size = new Size (196, 22);
+				Rent.Text = "Rent";
+				WayBill.MergeIndex = 14;
+				WayBill.Name = "WayBill";
+				WayBill.Size = new Size (196, 22);
+				WayBill.Text = "WayBill";
+				CustomerRelationManagement.MergeIndex = 15;
+				CustomerRelationManagement.Name = "CustomerRelationManagement";
+				CustomerRelationManagement.Size = new Size (196, 22);
+				CustomerRelationManagement.Text = "CustomerRelationManagement";
+				toolStripSeparator8.MergeAction = MergeAction.Insert;
+				toolStripSeparator8.MergeIndex = 20;
+				toolStripSeparator8.Name = "toolStripSeparator8";
+				toolStripSeparator8.Size = new Size (193, 6);
+				NewUserToolStripMenuItem.MergeIndex = 21;
+				NewUserToolStripMenuItem.Name = "NewUserToolStripMenuItem";
+				NewUserToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Shift |
+			Keys.F2)));
+				NewUserToolStripMenuItem.Size = new Size (196, 22);
+				NewUserToolStripMenuItem.Text = "Uus kasutaja";
+				exitToolStripMenuItem.MergeIndex = 22;
+				exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+				exitToolStripMenuItem.Size = new Size (196, 22);
+				exitToolStripMenuItem.Text = "Exit";
+
+				AutoScaleDimensions = new SizeF (6F, 13F);
+				AutoScaleMode = AutoScaleMode.Font;
+				BackgroundImageLayout = ImageLayout.Center;
+				ClientSize = new Size (644, 396);
+				Controls.Add (mainMenuStrip1);
+				IsMdiContainer = true;
+				KeyPreview = false;
+				MainMenuStrip = mainMenuStrip1;
+				Name = "MainForm";
+			}
+
+			MenuStrip mainMenuStrip1;
+			ToolStripMenuItem File;
+			ToolStripMenuItem openToolStripMenuItem;
+			ToolStripSeparator toolStripSeparator2;
+			ToolStripMenuItem exitToolStripMenuItem;
+			ToolStripMenuItem Dokument;
+			ToolStripMenuItem arveToolStripMenuItem;
+			ToolStripMenuItem WareHouse;
+			ToolStripMenuItem Personnel;
+			ToolStripMenuItem Payroll;
+			ToolStripMenuItem FixedAssets;
+			ToolStripMenuItem Supplies;
+			ToolStripMenuItem GeneralLedger;
+			ToolStripMenuItem Manufacturing;
+			ToolStripMenuItem PointOfSale;
+			ToolStripMenuItem CardTerminal;
+			ToolStripMenuItem Rent;
+			ToolStripMenuItem WayBill;
+			ToolStripMenuItem CustomerRelationManagement;
+			ToolStripSeparator toolStripSeparator8;
+			ToolStripMenuItem NewUserToolStripMenuItem;
+		}
+
+		private class Childform : Form
+		{
+			public Childform ()
+			{
+
+				menuStrip1 = new MenuStrip ();
+				fileToolStripMenuItem = new ToolStripMenuItem ();
+				toolStripSeparator = new ToolStripSeparator ();
+				printToolStripMenuItem = new ToolStripMenuItem ();
+				editToolStripMenuItem = new ToolStripMenuItem ();
+				toolStripSeparator3 = new ToolStripSeparator ();
+				copyToolStripMenuItem = new ToolStripMenuItem ();
+				toolStripSeparator4 = new ToolStripSeparator ();
+				selectAllToolStripMenuItem = new ToolStripMenuItem ();
+				toolsToolStripMenuItem = new ToolStripMenuItem ();
+				addToolStripMenuItem = new ToolStripMenuItem ();
+				deleteToolStripMenuItem = new ToolStripMenuItem ();
+				filterToolStripMenuItem = new ToolStripMenuItem ();
+				helpToolStripMenuItem = new ToolStripMenuItem ();
+				searchToolStripMenuItem = new ToolStripMenuItem ();
+				menuStrip1.SuspendLayout ();
+				SuspendLayout ();
+
+				menuStrip1.Items.AddRange (new ToolStripItem[] {
+            fileToolStripMenuItem,
+	    editToolStripMenuItem,
+	    toolsToolStripMenuItem,
+	    helpToolStripMenuItem});
+				menuStrip1.Location = new Point (0, 0);
+				menuStrip1.Name = "menuStrip1";
+				menuStrip1.RenderMode = ToolStripRenderMode.System;
+				menuStrip1.Size = new Size (337, 24);
+				menuStrip1.TabIndex = 2;
+				menuStrip1.Text = "menuStrip1";
+				menuStrip1.Visible = false;
+
+				fileToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
+            toolStripSeparator,
+            printToolStripMenuItem});
+				fileToolStripMenuItem.MergeAction = MergeAction.MatchOnly;
+				fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+				fileToolStripMenuItem.Size = new Size (35, 20);
+				fileToolStripMenuItem.Text = "&File";
+				toolStripSeparator.MergeAction = MergeAction.Insert;
+				toolStripSeparator.MergeIndex = 3;
+				toolStripSeparator.Name = "toolStripSeparator";
+				toolStripSeparator.Size = new Size (149, 6);
+				printToolStripMenuItem.MergeAction = MergeAction.Insert;
+				printToolStripMenuItem.MergeIndex = 2;
+				printToolStripMenuItem.Name = "printToolStripMenuItem";
+				printToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control |
+			Keys.P)));
+				printToolStripMenuItem.Size = new Size (152, 22);
+				printToolStripMenuItem.Text = "&Print";
+				editToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
+	    toolStripSeparator3,
+	    copyToolStripMenuItem,
+	    toolStripSeparator4,
+	    selectAllToolStripMenuItem});
+				editToolStripMenuItem.MergeAction = MergeAction.Insert;
+				editToolStripMenuItem.MergeIndex = 1;
+				editToolStripMenuItem.Name = "editToolStripMenuItem";
+				editToolStripMenuItem.Size = new Size (59, 20);
+				editToolStripMenuItem.Text = "&Paranda";
+				toolStripSeparator3.Name = "toolStripSeparator3";
+				toolStripSeparator3.Size = new Size (157, 6);
+				copyToolStripMenuItem.Name = "copyToolStripMenuItem";
+				copyToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control | Keys.C)));
+				copyToolStripMenuItem.Size = new Size (160, 22);
+				copyToolStripMenuItem.Text = "Kopeeri";
+				toolStripSeparator4.Name = "toolStripSeparator4";
+				toolStripSeparator4.Size = new Size (157, 6);
+				selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
+				selectAllToolStripMenuItem.Size = new Size (160, 22);
+				selectAllToolStripMenuItem.Text = "selectAllToolStripMenuItem";
+				toolsToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
+	    addToolStripMenuItem,
+	    deleteToolStripMenuItem,
+	    filterToolStripMenuItem});
+				toolsToolStripMenuItem.MergeAction = MergeAction.Insert;
+				toolsToolStripMenuItem.MergeIndex = 2;
+				toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
+				toolsToolStripMenuItem.Size = new Size (60, 20);
+				toolsToolStripMenuItem.Text = "&Tegevus";
+				addToolStripMenuItem.Name = "addToolStripMenuItem";
+				addToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control | Keys.N)));
+				addToolStripMenuItem.Size = new Size (160, 22);
+				addToolStripMenuItem.Text = "Lisa";
+				deleteToolStripMenuItem.Name = "deleteToolStripMenuItem";
+				deleteToolStripMenuItem.ShortcutKeys = ((Keys)((Keys.Control |
+			Keys.T)));
+				deleteToolStripMenuItem.Size = new Size (160, 22);
+				deleteToolStripMenuItem.Text = "Kustuta";
+				filterToolStripMenuItem.ImageTransparentColor =
+			Color.Silver;
+				filterToolStripMenuItem.Name = "filterToolStripMenuItem";
+				filterToolStripMenuItem.ShortcutKeys = Keys.F11;
+				filterToolStripMenuItem.Size = new Size (160, 22);
+				filterToolStripMenuItem.Text = "Tingimus";
+				helpToolStripMenuItem.DropDownItems.AddRange (new ToolStripItem[] {
+	    searchToolStripMenuItem});
+				helpToolStripMenuItem.MergeAction = MergeAction.MatchOnly;
+				helpToolStripMenuItem.Name = "helpToolStripMenuItem";
+				helpToolStripMenuItem.Size = new Size (34, 20);
+				helpToolStripMenuItem.Text = "&Abi";
+				searchToolStripMenuItem.MergeAction = MergeAction.Insert;
+				searchToolStripMenuItem.MergeIndex = 1;
+				searchToolStripMenuItem.Name = "searchToolStripMenuItem";
+				searchToolStripMenuItem.ShortcutKeys = Keys.F1;
+				searchToolStripMenuItem.Size = new Size (160, 22);
+				searchToolStripMenuItem.Text = "&Otsi teemat";
+
+				AutoScaleDimensions = new SizeF (6F, 13F);
+				ClientSize = new Size (337, 272);
+				Controls.Add (menuStrip1);
+			}
+
+			MenuStrip menuStrip1;
+			ToolStripMenuItem fileToolStripMenuItem;
+			ToolStripSeparator toolStripSeparator;
+			ToolStripMenuItem printToolStripMenuItem;
+			ToolStripMenuItem editToolStripMenuItem;
+			ToolStripSeparator toolStripSeparator3;
+			ToolStripMenuItem copyToolStripMenuItem;
+			ToolStripSeparator toolStripSeparator4;
+			ToolStripMenuItem selectAllToolStripMenuItem;
+			ToolStripMenuItem toolsToolStripMenuItem;
+			ToolStripMenuItem addToolStripMenuItem;
+			ToolStripMenuItem deleteToolStripMenuItem;
+			ToolStripMenuItem filterToolStripMenuItem;
+			ToolStripMenuItem helpToolStripMenuItem;
+			ToolStripMenuItem searchToolStripMenuItem;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripOverflowButtonTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripOverflowButtonTest.cs
@@ -1,143 +1,143 @@
-//
-// ToolStripOverflowButtonTest.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripOverflowButtonTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-		}
-
-		[Test]
-		public void ProtectedProperties ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual (new Padding (0, 1, 0, 2), epp.DefaultMargin, "C1");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void Size2 ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-			f.Show ();
-
-			ToolStrip ts = new ToolStrip ();
-			f.Controls.Add (ts);
-			ToolStripOverflowButton tsi = ts.OverflowButton;
-
-			Assert.AreEqual (new Size (16, 25), tsi.Size, "B1");
-			Assert.AreEqual (false, tsi.Visible, "B3");
-			ToolStripItem test = ts.Items.Add ("test");
-			test.Overflow = ToolStripItemOverflow.Always;
-			ts.PerformLayout ();
-
-			Assert.AreEqual (Size.Empty, tsi.Size, "B2");
-			f.Hide ();
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void MethodGetPreferredSize ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-			f.Show ();
-
-			ToolStrip ts = new ToolStrip ();
-			f.Controls.Add (ts);
-			ToolStripOverflowButton tsi = ts.OverflowButton;
-
-			Assert.AreEqual (Size.Empty, tsi.GetPreferredSize (Size.Empty), "B1");
-			Assert.AreEqual (false, tsi.Visible, "B2");
-			
-			ToolStripItem test = ts.Items.Add ("test");
-			test.Overflow = ToolStripItemOverflow.Always;
-			ts.PerformLayout ();
-
-			Assert.AreEqual (new Size (16, 25), tsi.GetPreferredSize (new Size (100, 100)), "B3");
-			Assert.AreEqual (false, tsi.Visible, "B4");
-			f.Hide ();
-		}
-		
-		[Test]
-		[Category ("NotWorking")]
-		public void BehaviorItemsOnOverflow ()
-		{
-			Form f = new Form ();
-			f.ShowInTaskbar = false;
-			MyToolStrip ts = new MyToolStrip ();
-			f.Controls.Add (ts);
-			f.Show ();
-			
-			Assert.AreEqual (0, ts.Items.Count, "A1");
-			Assert.AreEqual (1, ts.PublicDisplayedItems.Count, "A2");
-			Assert.AreEqual (false, ts.OverflowButton.Visible, "A3");
-			Assert.AreEqual (0, ts.OverflowButton.DropDown.Items.Count, "A3");
-
-			ToolStripItem tsi = ts.Items.Add ("test");
-
-			Assert.AreEqual (1, ts.Items.Count, "A4");
-			Assert.AreEqual (2, ts.PublicDisplayedItems.Count, "A5");
-			Assert.AreEqual (false, ts.OverflowButton.Visible, "A3");
-			Assert.AreEqual (0, ts.OverflowButton.DropDown.Items.Count, "A6");
-
-			tsi.Overflow = ToolStripItemOverflow.Always;
-
-			Assert.AreEqual (1, ts.Items.Count, "A7");
-			Assert.AreEqual (2, ts.PublicDisplayedItems.Count, "A8");
-			Assert.AreEqual (true, ts.OverflowButton.Visible, "A3");
-			Assert.AreEqual (0, ts.OverflowButton.DropDown.Items.Count, "A9");
-			Console.WriteLine (ts.PublicDisplayedItems[1].GetType().ToString());
-			f.Dispose ();
-		}
-		
-		private class ExposeProtectedProperties : ToolStripButton
-		{
-			public new Padding DefaultMargin { get { return base.DefaultMargin; } }
-		}
-		
-		private class MyToolStrip : ToolStrip
-		{
-			public ToolStripItemCollection PublicDisplayedItems {
-				get { return base.DisplayedItems; }
-			}
-		}
-	}
-}
+//
+// ToolStripOverflowButtonTest.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripOverflowButtonTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+		}
+
+		[Test]
+		public void ProtectedProperties ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual (new Padding (0, 1, 0, 2), epp.DefaultMargin, "C1");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void Size2 ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+			f.Show ();
+
+			ToolStrip ts = new ToolStrip ();
+			f.Controls.Add (ts);
+			ToolStripOverflowButton tsi = ts.OverflowButton;
+
+			Assert.AreEqual (new Size (16, 25), tsi.Size, "B1");
+			Assert.AreEqual (false, tsi.Visible, "B3");
+			ToolStripItem test = ts.Items.Add ("test");
+			test.Overflow = ToolStripItemOverflow.Always;
+			ts.PerformLayout ();
+
+			Assert.AreEqual (Size.Empty, tsi.Size, "B2");
+			f.Hide ();
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void MethodGetPreferredSize ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+			f.Show ();
+
+			ToolStrip ts = new ToolStrip ();
+			f.Controls.Add (ts);
+			ToolStripOverflowButton tsi = ts.OverflowButton;
+
+			Assert.AreEqual (Size.Empty, tsi.GetPreferredSize (Size.Empty), "B1");
+			Assert.AreEqual (false, tsi.Visible, "B2");
+			
+			ToolStripItem test = ts.Items.Add ("test");
+			test.Overflow = ToolStripItemOverflow.Always;
+			ts.PerformLayout ();
+
+			Assert.AreEqual (new Size (16, 25), tsi.GetPreferredSize (new Size (100, 100)), "B3");
+			Assert.AreEqual (false, tsi.Visible, "B4");
+			f.Hide ();
+		}
+		
+		[Test]
+		[Category ("NotWorking")]
+		public void BehaviorItemsOnOverflow ()
+		{
+			Form f = new Form ();
+			f.ShowInTaskbar = false;
+			MyToolStrip ts = new MyToolStrip ();
+			f.Controls.Add (ts);
+			f.Show ();
+			
+			Assert.AreEqual (0, ts.Items.Count, "A1");
+			Assert.AreEqual (1, ts.PublicDisplayedItems.Count, "A2");
+			Assert.AreEqual (false, ts.OverflowButton.Visible, "A3");
+			Assert.AreEqual (0, ts.OverflowButton.DropDown.Items.Count, "A3");
+
+			ToolStripItem tsi = ts.Items.Add ("test");
+
+			Assert.AreEqual (1, ts.Items.Count, "A4");
+			Assert.AreEqual (2, ts.PublicDisplayedItems.Count, "A5");
+			Assert.AreEqual (false, ts.OverflowButton.Visible, "A3");
+			Assert.AreEqual (0, ts.OverflowButton.DropDown.Items.Count, "A6");
+
+			tsi.Overflow = ToolStripItemOverflow.Always;
+
+			Assert.AreEqual (1, ts.Items.Count, "A7");
+			Assert.AreEqual (2, ts.PublicDisplayedItems.Count, "A8");
+			Assert.AreEqual (true, ts.OverflowButton.Visible, "A3");
+			Assert.AreEqual (0, ts.OverflowButton.DropDown.Items.Count, "A9");
+			Console.WriteLine (ts.PublicDisplayedItems[1].GetType().ToString());
+			f.Dispose ();
+		}
+		
+		private class ExposeProtectedProperties : ToolStripButton
+		{
+			public new Padding DefaultMargin { get { return base.DefaultMargin; } }
+		}
+		
+		private class MyToolStrip : ToolStrip
+		{
+			public ToolStripItemCollection PublicDisplayedItems {
+				get { return base.DisplayedItems; }
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripOverflowTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripOverflowTest.cs
@@ -1,49 +1,49 @@
-//
-// ToolStripOverflowTest.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripOverflowTests : TestHelper
-	{
-		[Test]
-		[Category ("NotWorking")]
-		public void Constructor ()
-		{
-			ToolStripOverflow tso = (ToolStripOverflow)new ToolStrip ().OverflowButton.DropDown;
-			
-			Assert.AreEqual ("System.Windows.Forms.Layout.FlowLayout", tso.LayoutEngine.ToString (), "A1");
-		}
-	}
-}
+//
+// ToolStripOverflowTest.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripOverflowTests : TestHelper
+	{
+		[Test]
+		[Category ("NotWorking")]
+		public void Constructor ()
+		{
+			ToolStripOverflow tso = (ToolStripOverflow)new ToolStrip ().OverflowButton.DropDown;
+			
+			Assert.AreEqual ("System.Windows.Forms.Layout.FlowLayout", tso.LayoutEngine.ToString (), "A1");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripPanelTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripPanelTest.cs
@@ -1,211 +1,211 @@
-//
-// ToolStripPanelTests.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripPanelTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-
-			Assert.AreEqual (true, tsp.AutoSize, "A1");
-			Assert.AreEqual (DockStyle.None, tsp.Dock, "A2");
-			Assert.AreEqual ("System.Windows.Forms.Layout.FlowLayout", tsp.LayoutEngine.ToString (), "A3");
-			Assert.AreEqual (false, tsp.Locked, "A4");
-			Assert.AreEqual (Orientation.Horizontal, tsp.Orientation, "A5");
-			Assert.AreSame (ToolStripManager.Renderer, tsp.Renderer, "A6");
-			Assert.AreEqual (ToolStripRenderMode.ManagerRenderMode, tsp.RenderMode, "A7");
-			Assert.AreEqual (new Padding (3, 0, 0, 0), tsp.RowMargin, "A8");
-			Assert.AreEqual ("System.Windows.Forms.ToolStripPanelRow[]", tsp.Rows.ToString (), "A9");
-		}
-
-		[Test]
-		public void ProtectedProperties ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual (new Padding (0), epp.DefaultMargin, "C1");
-			Assert.AreEqual (new Padding (0), epp.DefaultPadding, "C2");
-		}
-
-		[Test]
-		public void PropertyAutoSize ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.AutoSize = false;
-			Assert.AreEqual (false, tsp.AutoSize, "B1");
-			Assert.AreEqual ("AutoSizeChanged", ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.AutoSize = false;
-			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyDock ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.Dock = DockStyle.Left;
-			Assert.AreEqual (DockStyle.Left, tsp.Dock, "B1");
-			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.Dock = DockStyle.Left;
-			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyLocked ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.Locked = true;
-			Assert.AreEqual (true, tsp.Locked, "B1");
-			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.Locked = true;
-			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyOrientation ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.Orientation = Orientation.Vertical;
-			Assert.AreEqual (Orientation.Vertical, tsp.Orientation, "B1");
-			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.Orientation = Orientation.Vertical;
-			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyRenderer ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			ToolStripProfessionalRenderer pr = new ToolStripProfessionalRenderer ();
-
-			tsp.Renderer = pr;
-			Assert.AreSame (pr, tsp.Renderer, "B1");
-			Assert.AreEqual (ToolStripRenderMode.Custom, tsp.RenderMode, "B1-2");
-			// I refuse to call the event twice like .Net does.
-			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.Renderer = pr;
-			//Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyRenderMode ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.RenderMode = ToolStripRenderMode.System;
-			Assert.AreEqual (ToolStripRenderMode.System, tsp.RenderMode, "B1");
-			// I refuse to call the event twice like .Net does.
-			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.RenderMode = ToolStripRenderMode.System;
-			//Assert.AreEqual ("RendererChanged", ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void PropertyRowMargin ()
-		{
-			ToolStripPanel tsp = new ToolStripPanel ();
-			EventWatcher ew = new EventWatcher (tsp);
-
-			tsp.RowMargin = new Padding (4);
-			Assert.AreEqual (new Padding (4), tsp.RowMargin, "B1");
-			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
-
-			ew.Clear ();
-			tsp.RowMargin = new Padding (4);
-			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
-		}
-
-		[Test]
-		public void MethodCreateControlsInstance ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel+ToolStripPanelControlCollection", epp.CreateControlsInstance (). GetType ().ToString (), "B1");
-		}
-
-		private class EventWatcher
-		{
-			private string events = string.Empty;
-
-			public EventWatcher (ToolStripPanel tsp)
-			{
-				tsp.AutoSizeChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("AutoSizeChanged;"); });
-				tsp.RendererChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("RendererChanged;"); });
-			}
-
-			public override string ToString ()
-			{
-				return events.TrimEnd (';');
-			}
-
-			public void Clear ()
-			{
-				events = string.Empty;
-			}
-		}
-
-		private class ExposeProtectedProperties : ToolStripPanel
-		{
-			public new Padding DefaultMargin { get { return base.DefaultMargin; } }
-			public new Padding DefaultPadding { get { return base.DefaultPadding; } }
-			public new ControlCollection CreateControlsInstance () { return base.CreateControlsInstance (); }
-		}
-	}
-}
+//
+// ToolStripPanelTests.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripPanelTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+
+			Assert.AreEqual (true, tsp.AutoSize, "A1");
+			Assert.AreEqual (DockStyle.None, tsp.Dock, "A2");
+			Assert.AreEqual ("System.Windows.Forms.Layout.FlowLayout", tsp.LayoutEngine.ToString (), "A3");
+			Assert.AreEqual (false, tsp.Locked, "A4");
+			Assert.AreEqual (Orientation.Horizontal, tsp.Orientation, "A5");
+			Assert.AreSame (ToolStripManager.Renderer, tsp.Renderer, "A6");
+			Assert.AreEqual (ToolStripRenderMode.ManagerRenderMode, tsp.RenderMode, "A7");
+			Assert.AreEqual (new Padding (3, 0, 0, 0), tsp.RowMargin, "A8");
+			Assert.AreEqual ("System.Windows.Forms.ToolStripPanelRow[]", tsp.Rows.ToString (), "A9");
+		}
+
+		[Test]
+		public void ProtectedProperties ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual (new Padding (0), epp.DefaultMargin, "C1");
+			Assert.AreEqual (new Padding (0), epp.DefaultPadding, "C2");
+		}
+
+		[Test]
+		public void PropertyAutoSize ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.AutoSize = false;
+			Assert.AreEqual (false, tsp.AutoSize, "B1");
+			Assert.AreEqual ("AutoSizeChanged", ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.AutoSize = false;
+			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyDock ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.Dock = DockStyle.Left;
+			Assert.AreEqual (DockStyle.Left, tsp.Dock, "B1");
+			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.Dock = DockStyle.Left;
+			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyLocked ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.Locked = true;
+			Assert.AreEqual (true, tsp.Locked, "B1");
+			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.Locked = true;
+			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyOrientation ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.Orientation = Orientation.Vertical;
+			Assert.AreEqual (Orientation.Vertical, tsp.Orientation, "B1");
+			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.Orientation = Orientation.Vertical;
+			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyRenderer ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			ToolStripProfessionalRenderer pr = new ToolStripProfessionalRenderer ();
+
+			tsp.Renderer = pr;
+			Assert.AreSame (pr, tsp.Renderer, "B1");
+			Assert.AreEqual (ToolStripRenderMode.Custom, tsp.RenderMode, "B1-2");
+			// I refuse to call the event twice like .Net does.
+			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.Renderer = pr;
+			//Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyRenderMode ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.RenderMode = ToolStripRenderMode.System;
+			Assert.AreEqual (ToolStripRenderMode.System, tsp.RenderMode, "B1");
+			// I refuse to call the event twice like .Net does.
+			//Assert.AreEqual ("RendererChanged;RendererChanged", ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.RenderMode = ToolStripRenderMode.System;
+			//Assert.AreEqual ("RendererChanged", ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void PropertyRowMargin ()
+		{
+			ToolStripPanel tsp = new ToolStripPanel ();
+			EventWatcher ew = new EventWatcher (tsp);
+
+			tsp.RowMargin = new Padding (4);
+			Assert.AreEqual (new Padding (4), tsp.RowMargin, "B1");
+			Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+			ew.Clear ();
+			tsp.RowMargin = new Padding (4);
+			Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+		}
+
+		[Test]
+		public void MethodCreateControlsInstance ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual ("System.Windows.Forms.ToolStripPanel+ToolStripPanelControlCollection", epp.CreateControlsInstance (). GetType ().ToString (), "B1");
+		}
+
+		private class EventWatcher
+		{
+			private string events = string.Empty;
+
+			public EventWatcher (ToolStripPanel tsp)
+			{
+				tsp.AutoSizeChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("AutoSizeChanged;"); });
+				tsp.RendererChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("RendererChanged;"); });
+			}
+
+			public override string ToString ()
+			{
+				return events.TrimEnd (';');
+			}
+
+			public void Clear ()
+			{
+				events = string.Empty;
+			}
+		}
+
+		private class ExposeProtectedProperties : ToolStripPanel
+		{
+			public new Padding DefaultMargin { get { return base.DefaultMargin; } }
+			public new Padding DefaultPadding { get { return base.DefaultPadding; } }
+			public new ControlCollection CreateControlsInstance () { return base.CreateControlsInstance (); }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripStatusLabelTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/ToolStripStatusLabelTest.cs
@@ -1,205 +1,205 @@
-//
-// ToolStripStatusLabelTests.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2006 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class ToolStripStatusLabelTests : TestHelper
-	{
-		//[Test]
-		//public void Constructor ()
-		//{
-		//        ToolStripLabel tsi = new ToolStripLabel ();
-
-		//        Assert.AreEqual (Color.Red, tsi.ActiveLinkColor, "A1");
-		//        Assert.AreEqual (false, tsi.CanSelect, "A2");
-		//        Assert.AreEqual (false, tsi.IsLink, "A3");
-		//        Assert.AreEqual (LinkBehavior.SystemDefault, tsi.LinkBehavior, "A4");
-		//        Assert.AreEqual (Color.FromArgb (0,0,255), tsi.LinkColor, "A5");
-		//        Assert.AreEqual (false, tsi.LinkVisited, "A6");
-		//        Assert.AreEqual (Color.FromArgb (128, 0, 128), tsi.VisitedLinkColor, "A7");
-
-		//        int count = 0;
-		//        EventHandler oc = new EventHandler (delegate (object sender, EventArgs e) { count++; });
-		//        Image i = new Bitmap (1,1);
-
-		//        tsi = new ToolStripLabel (i);
-		//        tsi.PerformClick();
-		//        Assert.AreEqual (null, tsi.Text, "A8");
-		//        Assert.AreSame (i, tsi.Image, "A9");
-		//        Assert.AreEqual (false, tsi.IsLink, "A10");
-		//        Assert.AreEqual (0, count, "A11");
-		//        Assert.AreEqual (string.Empty, tsi.Name, "A12");
-
-		//        tsi = new ToolStripLabel ("Text");
-		//        tsi.PerformClick ();
-		//        Assert.AreEqual ("Text", tsi.Text, "A13");
-		//        Assert.AreSame (null, tsi.Image, "A14");
-		//        Assert.AreEqual (false, tsi.IsLink, "A15");
-		//        Assert.AreEqual (0, count, "A16");
-		//        Assert.AreEqual (string.Empty, tsi.Name, "A17");
-
-		//        tsi = new ToolStripLabel ("Text", i);
-		//        tsi.PerformClick ();
-		//        Assert.AreEqual ("Text", tsi.Text, "A18");
-		//        Assert.AreSame (i, tsi.Image, "A19");
-		//        Assert.AreEqual (false, tsi.IsLink, "A20");
-		//        Assert.AreEqual (0, count, "A21");
-		//        Assert.AreEqual (string.Empty, tsi.Name, "A22");
-
-		//        tsi = new ToolStripLabel ("Text", i, true);
-		//        tsi.PerformClick ();
-		//        Assert.AreEqual ("Text", tsi.Text, "A23");
-		//        Assert.AreSame (i, tsi.Image, "A24");
-		//        Assert.AreEqual (true, tsi.IsLink, "A25");
-		//        Assert.AreEqual (0, count, "A26");
-		//        Assert.AreEqual (string.Empty, tsi.Name, "A27");
-
-		//        tsi = new ToolStripLabel ("Text", i, true, oc);
-		//        tsi.PerformClick ();
-		//        Assert.AreEqual ("Text", tsi.Text, "A28");
-		//        Assert.AreSame (i, tsi.Image, "A29");
-		//        Assert.AreEqual (true, tsi.IsLink, "A30");
-		//        Assert.AreEqual (1, count, "A31");
-		//        Assert.AreEqual (string.Empty, tsi.Name, "A32");
-
-		//        tsi = new ToolStripLabel ("Text", i, true, oc, "Name");
-		//        tsi.PerformClick ();
-		//        Assert.AreEqual ("Text", tsi.Text, "A33");
-		//        Assert.AreSame (i, tsi.Image, "A34");
-		//        Assert.AreEqual (true, tsi.IsLink, "A35");
-		//        Assert.AreEqual (2, count, "A36");
-		//        Assert.AreEqual ("Name", tsi.Name, "A37");
-		//}
-
-		[Test]
-		public void ProtectedProperties ()
-		{
-			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
-
-			Assert.AreEqual (new Padding (0, 3, 0, 2), epp.DefaultMargin, "C3");
-		}
-
-		//[Test]
-		//public void PropertyActiveLinkColor ()
-		//{
-		//        ToolStripLabel tsi = new ToolStripLabel ();
-
-		//        tsi.ActiveLinkColor = Color.Green;
-		//        Assert.AreEqual (Color.Green, tsi.ActiveLinkColor, "B1");
-		//}
-
-		//[Test]
-		//public void PropertyIsLink ()
-		//{
-		//        ToolStripLabel tsi = new ToolStripLabel ();
-
-		//        tsi.IsLink = true;
-		//        Assert.AreEqual (true, tsi.IsLink, "B1");
-		//}
-
-		//[Test]
-		//public void PropertyLinkBehavior ()
-		//{
-		//        ToolStripLabel tsi = new ToolStripLabel ();
-
-		//        tsi.LinkBehavior = LinkBehavior.NeverUnderline;
-		//        Assert.AreEqual (LinkBehavior.NeverUnderline, tsi.LinkBehavior, "B1");
-		//}
-
-		//[Test]
-		//public void PropertyLinkColor ()
-		//{
-		//        ToolStripLabel tsi = new ToolStripLabel ();
-
-		//        tsi.LinkColor = Color.Green;
-		//        Assert.AreEqual (Color.Green, tsi.LinkColor, "B1");
-		//}
-
-		//[Test]
-		//public void PropertyLinkVisited ()
-		//{
-		//        ToolStripLabel tsi = new ToolStripLabel ();
-
-		//        tsi.LinkVisited = true;
-		//        Assert.AreEqual (true, tsi.LinkVisited, "B1");
-		//}
-
-		//[Test]
-		//public void PropertyVisitedLinkColor ()
-		//{
-		//        ToolStripLabel tsi = new ToolStripLabel ();
-
-		//        tsi.VisitedLinkColor = Color.Green;
-		//        Assert.AreEqual (Color.Green, tsi.VisitedLinkColor, "B1");
-		//}
-
-
-		//[Test]
-		//public void PropertyAnchorAndDocking ()
-		//{
-		//        ToolStripItem ts = new NullToolStripItem ();
-
-		//        ts.Anchor = AnchorStyles.Top | AnchorStyles.Bottom;
-
-		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Bottom, ts.Anchor, "A1");
-		//        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
-
-		//        ts.Anchor = AnchorStyles.Left | AnchorStyles.Right;
-
-		//        Assert.AreEqual (AnchorStyles.Left | AnchorStyles.Right, ts.Anchor, "A1");
-		//        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
-
-		//        ts.Dock = DockStyle.Left;
-
-		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
-		//        Assert.AreEqual (DockStyle.Left, ts.Dock, "A2");
-
-		//        ts.Dock = DockStyle.None;
-
-		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
-		//        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
-
-		//        ts.Dock = DockStyle.Top;
-
-		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
-		//        Assert.AreEqual (DockStyle.Top, ts.Dock, "A2");
-		//}
-
-		private class ExposeProtectedProperties : ToolStripStatusLabel
-		{
-			public new Padding DefaultMargin { get { return base.DefaultMargin; } }
-		}
-	}
-}
+//
+// ToolStripStatusLabelTests.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2006 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class ToolStripStatusLabelTests : TestHelper
+	{
+		//[Test]
+		//public void Constructor ()
+		//{
+		//        ToolStripLabel tsi = new ToolStripLabel ();
+
+		//        Assert.AreEqual (Color.Red, tsi.ActiveLinkColor, "A1");
+		//        Assert.AreEqual (false, tsi.CanSelect, "A2");
+		//        Assert.AreEqual (false, tsi.IsLink, "A3");
+		//        Assert.AreEqual (LinkBehavior.SystemDefault, tsi.LinkBehavior, "A4");
+		//        Assert.AreEqual (Color.FromArgb (0,0,255), tsi.LinkColor, "A5");
+		//        Assert.AreEqual (false, tsi.LinkVisited, "A6");
+		//        Assert.AreEqual (Color.FromArgb (128, 0, 128), tsi.VisitedLinkColor, "A7");
+
+		//        int count = 0;
+		//        EventHandler oc = new EventHandler (delegate (object sender, EventArgs e) { count++; });
+		//        Image i = new Bitmap (1,1);
+
+		//        tsi = new ToolStripLabel (i);
+		//        tsi.PerformClick();
+		//        Assert.AreEqual (null, tsi.Text, "A8");
+		//        Assert.AreSame (i, tsi.Image, "A9");
+		//        Assert.AreEqual (false, tsi.IsLink, "A10");
+		//        Assert.AreEqual (0, count, "A11");
+		//        Assert.AreEqual (string.Empty, tsi.Name, "A12");
+
+		//        tsi = new ToolStripLabel ("Text");
+		//        tsi.PerformClick ();
+		//        Assert.AreEqual ("Text", tsi.Text, "A13");
+		//        Assert.AreSame (null, tsi.Image, "A14");
+		//        Assert.AreEqual (false, tsi.IsLink, "A15");
+		//        Assert.AreEqual (0, count, "A16");
+		//        Assert.AreEqual (string.Empty, tsi.Name, "A17");
+
+		//        tsi = new ToolStripLabel ("Text", i);
+		//        tsi.PerformClick ();
+		//        Assert.AreEqual ("Text", tsi.Text, "A18");
+		//        Assert.AreSame (i, tsi.Image, "A19");
+		//        Assert.AreEqual (false, tsi.IsLink, "A20");
+		//        Assert.AreEqual (0, count, "A21");
+		//        Assert.AreEqual (string.Empty, tsi.Name, "A22");
+
+		//        tsi = new ToolStripLabel ("Text", i, true);
+		//        tsi.PerformClick ();
+		//        Assert.AreEqual ("Text", tsi.Text, "A23");
+		//        Assert.AreSame (i, tsi.Image, "A24");
+		//        Assert.AreEqual (true, tsi.IsLink, "A25");
+		//        Assert.AreEqual (0, count, "A26");
+		//        Assert.AreEqual (string.Empty, tsi.Name, "A27");
+
+		//        tsi = new ToolStripLabel ("Text", i, true, oc);
+		//        tsi.PerformClick ();
+		//        Assert.AreEqual ("Text", tsi.Text, "A28");
+		//        Assert.AreSame (i, tsi.Image, "A29");
+		//        Assert.AreEqual (true, tsi.IsLink, "A30");
+		//        Assert.AreEqual (1, count, "A31");
+		//        Assert.AreEqual (string.Empty, tsi.Name, "A32");
+
+		//        tsi = new ToolStripLabel ("Text", i, true, oc, "Name");
+		//        tsi.PerformClick ();
+		//        Assert.AreEqual ("Text", tsi.Text, "A33");
+		//        Assert.AreSame (i, tsi.Image, "A34");
+		//        Assert.AreEqual (true, tsi.IsLink, "A35");
+		//        Assert.AreEqual (2, count, "A36");
+		//        Assert.AreEqual ("Name", tsi.Name, "A37");
+		//}
+
+		[Test]
+		public void ProtectedProperties ()
+		{
+			ExposeProtectedProperties epp = new ExposeProtectedProperties ();
+
+			Assert.AreEqual (new Padding (0, 3, 0, 2), epp.DefaultMargin, "C3");
+		}
+
+		//[Test]
+		//public void PropertyActiveLinkColor ()
+		//{
+		//        ToolStripLabel tsi = new ToolStripLabel ();
+
+		//        tsi.ActiveLinkColor = Color.Green;
+		//        Assert.AreEqual (Color.Green, tsi.ActiveLinkColor, "B1");
+		//}
+
+		//[Test]
+		//public void PropertyIsLink ()
+		//{
+		//        ToolStripLabel tsi = new ToolStripLabel ();
+
+		//        tsi.IsLink = true;
+		//        Assert.AreEqual (true, tsi.IsLink, "B1");
+		//}
+
+		//[Test]
+		//public void PropertyLinkBehavior ()
+		//{
+		//        ToolStripLabel tsi = new ToolStripLabel ();
+
+		//        tsi.LinkBehavior = LinkBehavior.NeverUnderline;
+		//        Assert.AreEqual (LinkBehavior.NeverUnderline, tsi.LinkBehavior, "B1");
+		//}
+
+		//[Test]
+		//public void PropertyLinkColor ()
+		//{
+		//        ToolStripLabel tsi = new ToolStripLabel ();
+
+		//        tsi.LinkColor = Color.Green;
+		//        Assert.AreEqual (Color.Green, tsi.LinkColor, "B1");
+		//}
+
+		//[Test]
+		//public void PropertyLinkVisited ()
+		//{
+		//        ToolStripLabel tsi = new ToolStripLabel ();
+
+		//        tsi.LinkVisited = true;
+		//        Assert.AreEqual (true, tsi.LinkVisited, "B1");
+		//}
+
+		//[Test]
+		//public void PropertyVisitedLinkColor ()
+		//{
+		//        ToolStripLabel tsi = new ToolStripLabel ();
+
+		//        tsi.VisitedLinkColor = Color.Green;
+		//        Assert.AreEqual (Color.Green, tsi.VisitedLinkColor, "B1");
+		//}
+
+
+		//[Test]
+		//public void PropertyAnchorAndDocking ()
+		//{
+		//        ToolStripItem ts = new NullToolStripItem ();
+
+		//        ts.Anchor = AnchorStyles.Top | AnchorStyles.Bottom;
+
+		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Bottom, ts.Anchor, "A1");
+		//        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
+
+		//        ts.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+
+		//        Assert.AreEqual (AnchorStyles.Left | AnchorStyles.Right, ts.Anchor, "A1");
+		//        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
+
+		//        ts.Dock = DockStyle.Left;
+
+		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
+		//        Assert.AreEqual (DockStyle.Left, ts.Dock, "A2");
+
+		//        ts.Dock = DockStyle.None;
+
+		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
+		//        Assert.AreEqual (DockStyle.None, ts.Dock, "A2");
+
+		//        ts.Dock = DockStyle.Top;
+
+		//        Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, ts.Anchor, "A1");
+		//        Assert.AreEqual (DockStyle.Top, ts.Dock, "A2");
+		//}
+
+		private class ExposeProtectedProperties : ToolStripStatusLabel
+		{
+			public new Padding DefaultMargin { get { return base.DefaultMargin; } }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TreeViewImageIndexConverterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TreeViewImageIndexConverterTest.cs
@@ -1,82 +1,82 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using System.Windows.Forms;
-using System.Windows.Forms.Layout;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class TreeViewImageIndexConverterTest : TestHelper
-	{
-		[Test]
-		public void PropertyIncludeNoneAsStandardValue ()
-		{
-			PublicImageIndexConverter c = new PublicImageIndexConverter ();
-			Assert.AreEqual (false, c.PublicIncludeNoneAsStandardValue, "A1");
-		}
-
-		private class PublicImageIndexConverter : TreeViewImageIndexConverter
-		{
-			public bool PublicIncludeNoneAsStandardValue { get { return base.IncludeNoneAsStandardValue; } }
-		}
-		
-		[Test]
-		public void GetStandardValues ()
-		{
-			TreeViewImageIndexConverter c = new TreeViewImageIndexConverter ();
-			Assert.AreEqual (2, c.GetStandardValues (null).Count, "B1");
-			Assert.AreEqual ("-1", c.GetStandardValues (null)[0].ToString (), "B2");
-			Assert.AreEqual ("-2", c.GetStandardValues (null)[1].ToString (), "B3");
-		}
-		
-		[Test]
-		public void ConvertFrom ()
-		{
-			TreeViewImageIndexConverter iic = new TreeViewImageIndexConverter ();
-			Assert.AreEqual (-1, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(default)"), "N1");
-			Assert.AreEqual (-1, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(DEFAULT)"), "N1-1");
-			Assert.AreEqual (-2, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(none)"), "N2");
-			Assert.AreEqual (-2, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(nONE)"), "N2-1");
-			Assert.AreEqual (0, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "0"), "N3");
-			Assert.AreEqual (6, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "6"), "N4");
-			Assert.AreEqual (-1, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "-1"), "N5");
-			Assert.AreEqual (-2, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "-2"), "N6");
-		}
-		
-		[Test]
-		public void ConvertTo ()
-		{
-			TreeViewImageIndexConverter iic = new TreeViewImageIndexConverter ();
-			Assert.AreEqual (string.Empty, iic.ConvertTo (null, null, string.Empty, typeof (string)), "N1");
-			Assert.AreEqual (string.Empty, iic.ConvertTo (null, null, null, typeof (string)), "N2");
-			Assert.AreEqual ("6", iic.ConvertTo (null, null, 6, typeof (string)), "N3");
-			Assert.AreEqual ("(default)", iic.ConvertTo (null, null, -1, typeof (string)), "N4");
-			Assert.AreEqual ("(none)", iic.ConvertTo (null, null, -2, typeof (string)), "N5");
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Windows.Forms;
+using System.Windows.Forms.Layout;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class TreeViewImageIndexConverterTest : TestHelper
+	{
+		[Test]
+		public void PropertyIncludeNoneAsStandardValue ()
+		{
+			PublicImageIndexConverter c = new PublicImageIndexConverter ();
+			Assert.AreEqual (false, c.PublicIncludeNoneAsStandardValue, "A1");
+		}
+
+		private class PublicImageIndexConverter : TreeViewImageIndexConverter
+		{
+			public bool PublicIncludeNoneAsStandardValue { get { return base.IncludeNoneAsStandardValue; } }
+		}
+		
+		[Test]
+		public void GetStandardValues ()
+		{
+			TreeViewImageIndexConverter c = new TreeViewImageIndexConverter ();
+			Assert.AreEqual (2, c.GetStandardValues (null).Count, "B1");
+			Assert.AreEqual ("-1", c.GetStandardValues (null)[0].ToString (), "B2");
+			Assert.AreEqual ("-2", c.GetStandardValues (null)[1].ToString (), "B3");
+		}
+		
+		[Test]
+		public void ConvertFrom ()
+		{
+			TreeViewImageIndexConverter iic = new TreeViewImageIndexConverter ();
+			Assert.AreEqual (-1, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(default)"), "N1");
+			Assert.AreEqual (-1, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(DEFAULT)"), "N1-1");
+			Assert.AreEqual (-2, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(none)"), "N2");
+			Assert.AreEqual (-2, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "(nONE)"), "N2-1");
+			Assert.AreEqual (0, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "0"), "N3");
+			Assert.AreEqual (6, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "6"), "N4");
+			Assert.AreEqual (-1, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "-1"), "N5");
+			Assert.AreEqual (-2, iic.ConvertFrom (null, CultureInfo.CurrentCulture, "-2"), "N6");
+		}
+		
+		[Test]
+		public void ConvertTo ()
+		{
+			TreeViewImageIndexConverter iic = new TreeViewImageIndexConverter ();
+			Assert.AreEqual (string.Empty, iic.ConvertTo (null, null, string.Empty, typeof (string)), "N1");
+			Assert.AreEqual (string.Empty, iic.ConvertTo (null, null, null, typeof (string)), "N2");
+			Assert.AreEqual ("6", iic.ConvertTo (null, null, 6, typeof (string)), "N3");
+			Assert.AreEqual ("(default)", iic.ConvertTo (null, null, -1, typeof (string)), "N4");
+			Assert.AreEqual ("(none)", iic.ConvertTo (null, null, -2, typeof (string)), "N5");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TreeViewImageKeyConverterTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/TreeViewImageKeyConverterTest.cs
@@ -1,47 +1,47 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Novell, Inc.
-//
-
-
-using System;
-using System.ComponentModel;
-using System.Globalization;
-using System.Windows.Forms;
-using System.Windows.Forms.Layout;
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class TreeViewImageKeyConverterTest : TestHelper
-	{
-		[Test]
-		public void ConvertTo ()
-		{
-			ImageKeyConverter ikc = new ImageKeyConverter ();
-			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, string.Empty, typeof (string)), "N1");
-			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, null, typeof (string)), "N2");
-			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, "(none)", typeof (string)), "N2-1");
-			Assert.AreEqual ("bob", ikc.ConvertTo (null, null, "bob", typeof (string)), "N3");
-			Assert.AreEqual ("oSCar", ikc.ConvertTo (null, null, "oSCar", typeof (string)), "N4");
-		}
-	}
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+
+
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Windows.Forms;
+using System.Windows.Forms.Layout;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class TreeViewImageKeyConverterTest : TestHelper
+	{
+		[Test]
+		public void ConvertTo ()
+		{
+			ImageKeyConverter ikc = new ImageKeyConverter ();
+			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, string.Empty, typeof (string)), "N1");
+			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, null, typeof (string)), "N2");
+			Assert.AreEqual ("(none)", ikc.ConvertTo (null, null, "(none)", typeof (string)), "N2-1");
+			Assert.AreEqual ("bob", ikc.ConvertTo (null, null, "bob", typeof (string)), "N3");
+			Assert.AreEqual ("oSCar", ikc.ConvertTo (null, null, "oSCar", typeof (string)), "N4");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/UpDownTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/UpDownTest.cs
@@ -1,1034 +1,1034 @@
-﻿//
-// 
-//
-// Authors:
-//      Alexander Olk (alex.olk@googlemail.com)
-//      Gert Driesen (drieseng@users.sourceforge.net)
-//
-
-using System;
-using System.Collections;
-using System.Drawing;
-using System.Globalization;
-using System.Windows.Forms;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class UpDownTest : TestHelper
-	{
-		[SetUp]
-		protected override void SetUp () {
-			Reset ();
-			base.SetUp ();
-		}
-
-		private void Reset ()
-		{
-			selected_item_changed = 0;
-			text_changed = 0;
-			value_changed = 0;
-		}
-
-		[Test]
-		public void UpDownActiveControlTest ()
-		{
-			NumericUpDown n1 = new NumericUpDown ();
-			Assert.IsNull (n1.ActiveControl, "1");
-		}
-
-		[Test]
-		public void UpDownBasePropTest ()
-		{
-			NumericUpDown n1 = new NumericUpDown ();
-			
-			Assert.AreEqual (BorderStyle.Fixed3D, n1.BorderStyle, "#1");
-			Assert.AreEqual (true, n1.InterceptArrowKeys, "#2");
-			Assert.AreEqual (LeftRightAlignment.Right, n1.UpDownAlign, "#3");
-		}
-
-		[Test]
-		public void ToStringTest ()
-		{
-			NumericUpDown n1 = new NumericUpDown ();
-
-			Assert.AreEqual ("System.Windows.Forms.NumericUpDown, Minimum = 0, Maximum = 100", n1.ToString (), "1");
-
-			n1.Minimum = 0.33m;
-			n1.Maximum = 100.33m;
-			Assert.AreEqual (string.Format (CultureInfo.CurrentCulture,
-				"System.Windows.Forms.NumericUpDown, Minimum = {0}, Maximum = {1}",
-				0.33, 100.33), n1.ToString (), "2");
-		}
-
-		[Test] // bug #80620
-		public void NumericUpDownClientRectangle_Borders ()
-		{
-			NumericUpDown nud = new NumericUpDown ();
-			nud.CreateControl ();
-			Assert.AreEqual (nud.ClientRectangle, new NumericUpDown ().ClientRectangle);
-		}
-
-		[Test]
-		public void NumericUpDownStandardPropTest ()
-		{
-			NumericUpDown n1 = new NumericUpDown ();
-			
-			Assert.AreEqual (100, n1.Maximum, "#4");
-			Assert.AreEqual (0, n1.Minimum, "#5");
-			Assert.AreEqual (0, n1.Value, "#6");
-			Assert.AreEqual (0, n1.DecimalPlaces, "#7");
-			Assert.IsFalse (n1.Hexadecimal, "#8");
-			Assert.IsFalse (n1.ThousandsSeparator, "#9");
-			Assert.AreEqual (1, n1.Increment, "#10");
-		}
-
-		[Test]
-		public void NumericUpDownEnhancedPropTest ()
-		{
-			NumericUpDown n1 = new NumericUpDown ();
-			
-			n1.Minimum = 200;
-			Assert.AreEqual (200, n1.Maximum, "#11");
-			Assert.AreEqual (200, n1.Value, "#12");
-			
-			n1.Minimum = 100;
-			n1.Maximum = 50;
-			Assert.AreEqual (50, n1.Minimum, "#13");
-			
-			n1.Minimum = 0;
-			n1.Maximum = 100;
-			n1.Value = 90;
-			n1.Maximum = 50;
-			Assert.AreEqual (50, n1.Value, "#14");
-			
-			n1.Minimum = 0;
-			n1.Maximum = 100;
-			n1.Value = 90;
-			n1.DownButton ();
-			Assert.AreEqual (89, n1.Value, "#15");
-			
-			n1.UpButton ();
-			Assert.AreEqual (90, n1.Value, "#16");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void NumericUpDownEditValidateTest ()
-		{
-			NumericNew nn = new NumericNew ();
-			Assert.IsTrue (nn.update_edit_text_called, "#17");
-			
-			Assert.IsFalse (nn.user_edit, "#18");
-			
-			nn.Reset ();
-			nn.user_edit = true;
-			nn.Text = "10";
-			Assert.IsTrue (nn.validate_edit_text_called, "#19");
-			Assert.IsTrue (nn.update_edit_text_called, "#20");
-			
-			nn.Reset ();
-			nn.user_edit = false;
-			nn.Text = "11";
-			Assert.IsTrue (nn.validate_edit_text_called, "#21");
-			Assert.IsTrue (nn.update_edit_text_called, "#22");
-			
-			nn.DownButton ();
-			Assert.AreEqual (10, nn.Value, "#23");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void NumericUpDown_BeginInit ()
-		{
-			NumericNew nud = new NumericNew ();
-			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
-			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
-			Assert.AreEqual (2, nud.CallStack.Count, "#A1");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
-			Assert.AreEqual (0, nud.Value, "#A4");
-			Assert.AreEqual (2, nud.CallStack.Count, "#A5");
-			Assert.AreEqual (0, value_changed, "#A6");
-			Assert.AreEqual (0, text_changed, "#A7");
-
-			nud.BeginInit ();
-			Assert.AreEqual (2, nud.CallStack.Count, "#B1");
-			nud.Value = 10;
-			Assert.AreEqual (3, nud.CallStack.Count, "#B2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#B3");
-			Assert.AreEqual ("0", nud.Text, "#B4");
-			Assert.AreEqual (10, nud.Value, "#B5");
-			Assert.AreEqual (3, nud.CallStack.Count, "#B6");
-			Assert.AreEqual (1, value_changed, "#B7");
-			Assert.AreEqual (0, text_changed, "#B8");
-			nud.EndInit ();
-			Assert.AreEqual (4, nud.CallStack.Count, "#B9");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B10");
-			Assert.AreEqual (1, text_changed, "#B11");
-			Assert.AreEqual ("10", nud.Text, "#B12");
-			Assert.AreEqual (10, nud.Value, "#B13");
-			Assert.AreEqual (4, nud.CallStack.Count, "#B14");
-			Assert.AreEqual (1, value_changed, "#B15");
-			Assert.AreEqual (1, text_changed, "#B16");
-
-			// multiple calls to BeginInit are undone by a single EndInit call
-			nud.BeginInit ();
-			nud.BeginInit ();
-			Assert.AreEqual (4, nud.CallStack.Count, "#C1");
-			nud.Value = 20;
-			Assert.AreEqual (5, nud.CallStack.Count, "#C2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C3");
-			Assert.AreEqual ("10", nud.Text, "#C4");
-			Assert.AreEqual (20, nud.Value, "#C5");
-			Assert.AreEqual (5, nud.CallStack.Count, "#C6");
-			Assert.AreEqual (2, value_changed, "#C7");
-			Assert.AreEqual (1, text_changed, "#C8");
-			nud.EndInit ();
-			Assert.AreEqual (6, nud.CallStack.Count, "#C9");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#C10");
-			Assert.AreEqual (2, text_changed, "#C11");
-			Assert.AreEqual ("20", nud.Text, "#C12");
-			Assert.AreEqual (20, nud.Value, "#C13");
-			Assert.AreEqual (6, nud.CallStack.Count, "#C14");
-			Assert.AreEqual (2, value_changed, "#C15");
-			Assert.AreEqual (2, text_changed, "#C16");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void NumericUpDown_ChangingText ()
-		{
-			NumericNew nud = new NumericNew ();
-			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
-			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
-			Assert.IsFalse (nud.changing_text, "#A1");
-			Assert.IsFalse (nud.user_edit, "#A2");
-			Assert.AreEqual (0, text_changed, "#A3");
-
-			nud.Text = "1";
-			Assert.IsFalse (nud.changing_text, "#B1");
-			Assert.IsFalse (nud.user_edit, "#B2");
-			Assert.AreEqual (5, nud.CallStack.Count, "#B3");
-			Assert.AreEqual (1, text_changed, "#B4");
-
-			nud.changing_text = true;
-			nud.Text = "2";
-			Assert.IsFalse (nud.changing_text, "#C1");
-			Assert.IsFalse (nud.user_edit, "#C2");
-			Assert.AreEqual (5, nud.CallStack.Count, "#C3");
-			Assert.AreEqual (2, text_changed, "#C4");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void NumericUpDown_EndInit ()
-		{
-			NumericNew nud = new NumericNew ();
-			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
-			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
-			Assert.AreEqual (2, nud.CallStack.Count, "#A1");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
-			Assert.AreEqual (0, nud.Value, "#A4");
-			Assert.AreEqual (2, nud.CallStack.Count, "#A5");
-			Assert.AreEqual (0, value_changed, "#A6");
-			Assert.AreEqual (0, text_changed, "#A7");
-
-			// EndInit without corresponding BeginInit
-			nud.EndInit ();
-			Assert.AreEqual (3, nud.CallStack.Count, "#B1");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#B2");
-			Assert.AreEqual (0, nud.Value, "#B3");
-			Assert.AreEqual (3, nud.CallStack.Count, "#B4");
-			Assert.AreEqual (0, value_changed, "#B5");
-			Assert.AreEqual (0, text_changed, "#B6");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void NumericUpDown_UpButton ()
-		{
-			NumericNew nud = new NumericNew ();
-			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
-			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
-			nud.UpButton ();
-			Assert.AreEqual (3, nud.CallStack.Count, "#A1");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#A4");
-			Assert.AreEqual (1, value_changed, "#A5");
-			Assert.AreEqual (1, nud.Value, "#A6");
-			Assert.AreEqual (3, nud.CallStack.Count, "#A7");
-			Assert.AreEqual (1, value_changed, "#A8");
-			Assert.AreEqual (1, text_changed, "#A9");
-
-			nud.Text = "5";
-			nud.UpButton ();
-			Assert.AreEqual (7, nud.CallStack.Count, "#B1");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [3], "#B2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#B3");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#B4");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#B5");
-			Assert.AreEqual (3, value_changed, "#B6");
-			Assert.AreEqual (6, nud.Value, "#B7");
-			Assert.AreEqual ("6", nud.Text, "#B8");
-			Assert.AreEqual (7, nud.CallStack.Count, "#B9");
-			Assert.AreEqual (3, value_changed, "#B10");
-			Assert.AreEqual (3, text_changed, "#B11");
-
-			nud.Text = "7";
-			nud.user_edit = true;
-			nud.UpButton ();
-			Assert.AreEqual (11, nud.CallStack.Count, "#C1");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [7], "#C2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [8], "#C3");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [9], "#C4");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [10], "#C5");
-			Assert.AreEqual (5, value_changed, "#C6");
-			Assert.AreEqual (8, nud.Value, "#C7");
-			Assert.AreEqual (11, nud.CallStack.Count, "#C8");
-			Assert.AreEqual (5, value_changed, "#C9");
-			Assert.AreEqual (5, text_changed, "#C10");
-			nud.user_edit = false;
-			Assert.AreEqual ("8", nud.Text, "#C11");
-			Assert.AreEqual (11, nud.CallStack.Count, "#C12");
-			Assert.AreEqual (5, value_changed, "#C13");
-			Assert.AreEqual (5, text_changed, "#C14");
-
-			nud.user_edit = false;
-			nud.Text = "555";
-			nud.user_edit = true;
-			nud.UpButton ();
-			Assert.AreEqual (14, nud.CallStack.Count, "#D1");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [11], "#D2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [12], "#D3");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [13], "#D4");
-			Assert.AreEqual (6, value_changed, "#D5");
-			Assert.AreEqual (100, nud.Value, "#D6");
-			Assert.AreEqual (14, nud.CallStack.Count, "#D7");
-			Assert.AreEqual (6, value_changed, "#D8");
-			Assert.AreEqual (7, text_changed, "#D9");
-			nud.user_edit = false;
-			Assert.AreEqual ("100", nud.Text, "#D10");
-			Assert.AreEqual (14, nud.CallStack.Count, "#D11");
-			Assert.AreEqual (6, value_changed, "#D12");
-			Assert.AreEqual (7, text_changed, "#D13");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void NumericUpDown_Value ()
-		{
-			// obtain Value when UserEdit is false
-			NumericNew nud = new NumericNew ();
-			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
-			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
-			Assert.AreEqual (2, nud.CallStack.Count, "#A1");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
-			Assert.AreEqual (0, nud.Value, "#A4");
-			Assert.AreEqual (2, nud.CallStack.Count, "#A5");
-			Assert.AreEqual (0, value_changed, "#A6");
-			Assert.AreEqual (0, text_changed, "#A7");
-
-			// obtain Value when UserEdit is true
-			nud.user_edit = true;
-			Assert.AreEqual (2, nud.CallStack.Count, "#B1");
-			Assert.AreEqual (0, nud.Value, "#B2");
-			Assert.AreEqual (4, nud.CallStack.Count, "#B3");
-			Assert.AreEqual ("ValidateEditText", nud.CallStack [2], "#B4");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B5");
-			Assert.AreEqual (0, value_changed, "#B6");
-			Assert.AreEqual (0, text_changed, "#B7");
-
-			// modify Value when UserEdit is false
-			nud.user_edit = false;
-			nud.Value = 10;
-			Assert.AreEqual (5, nud.CallStack.Count, "#C1");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C2");
-			Assert.AreEqual (1, value_changed, "#C3");
-			Assert.AreEqual (1, text_changed, "#C4");
-			Assert.AreEqual (10, nud.Value, "#C5");
-			Assert.AreEqual (5, nud.CallStack.Count, "#C6");
-			Assert.AreEqual (1, value_changed, "#C7");
-			Assert.AreEqual (1, text_changed, "#C8");
-
-			// setting same Value
-			nud.Value = 10;
-			Assert.AreEqual (5, nud.CallStack.Count, "#D1");
-			Assert.AreEqual (1, value_changed, "#D2");
-			Assert.AreEqual (10, nud.Value, "#D3");
-			Assert.AreEqual (5, nud.CallStack.Count, "#D4");
-			Assert.AreEqual (1, value_changed, "#D5");
-			Assert.AreEqual (1, text_changed, "#D6");
-
-			// modify Value when UserEdit is true
-			nud.user_edit = true;
-			nud.Value = 20;
-			Assert.AreEqual (7, nud.CallStack.Count, "#E1");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#E2");
-			Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#E3");
-			Assert.AreEqual (3, value_changed, "#E4");
-			Assert.AreEqual (1, text_changed, "#E5");
-			nud.user_edit = false; // reset UserEdit to avoid Value being parsed from Text
-			Assert.AreEqual (10, nud.Value, "#E6");
-			Assert.AreEqual (7, nud.CallStack.Count, "#E7");
-			Assert.AreEqual (3, value_changed, "#E8");
-			Assert.AreEqual (1, text_changed, "#E9");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void NumericUpDown_Value_Invalid ()
-		{
-			NumericNew nud = new NumericNew ();
-
-			try {
-				nud.Value = 1000;
-				Assert.Fail ("#A1");
-			} catch (ArgumentOutOfRangeException ex) {
-				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
-				Assert.IsNotNull (ex.Message, "#A3");
-				Assert.IsNotNull (ex.ParamName, "#A4");
-				Assert.AreEqual ("Value", ex.ParamName, "#A5");
-				Assert.IsNull (ex.InnerException, "#A6");
-			}
-
-			try {
-				nud.Value = 1000;
-				Assert.Fail ("#B1");
-			} catch (ArgumentOutOfRangeException ex) {
-				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
-				Assert.IsNotNull (ex.Message, "#B3");
-				Assert.IsNotNull (ex.ParamName, "#B4");
-				Assert.AreEqual ("Value", ex.ParamName, "#B5");
-				Assert.IsNull (ex.InnerException, "#B6");
-			}
-
-			try {
-				nud.Value = -1000;
-				Assert.Fail ("#C1");
-			} catch (ArgumentOutOfRangeException ex) {
-				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
-				Assert.IsNotNull (ex.Message, "#C3");
-				Assert.IsNotNull (ex.ParamName, "#C4");
-				Assert.AreEqual ("Value", ex.ParamName, "#C5");
-				Assert.IsNull (ex.InnerException, "#C6");
-			}
-
-			nud.BeginInit ();
-
-			nud.Value = 1000;
-			Assert.AreEqual (1000, nud.Value, "#D1");
-			nud.Value = 1000;
-			Assert.AreEqual (1000, nud.Value, "#D2");
-			nud.Value = -1000;
-			Assert.AreEqual (-1000, nud.Value, "#D3");
-			nud.EndInit ();
-			try {
-				nud.Value = -1000;
-				Assert.Fail ("#E1");
-			} catch (ArgumentOutOfRangeException ex) {
-				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#E2");
-				Assert.IsNotNull (ex.Message, "#E3");
-				Assert.IsNotNull (ex.ParamName, "#E4");
-				Assert.AreEqual ("Value", ex.ParamName, "#E5");
-				Assert.IsNull (ex.InnerException, "#E6");
-			}
-		}
-
-		void NumericUpDown_TextChanged (object sender, EventArgs e)
-		{
-			text_changed++;
-		}
-
-		void NumericUpDown_ValueChanged (object sender, EventArgs e)
-		{
-			value_changed++;
-		}
-
-		public class NumericNew : NumericUpDown
-		{
-			public bool update_edit_text_called = false;
-			public bool validate_edit_text_called = false;
-			private ArrayList _callStack = new ArrayList ();
-
-			public ArrayList CallStack {
-				get { return _callStack; }
-			}
-
-			public bool user_edit {
-				get {
-					return UserEdit;
-				}
-				set {
-					UserEdit = value;
-				}
-			}
-
-			public bool changing_text {
-				get {
-					return ChangingText;
-				}
-				set {
-					ChangingText = value;
-				}
-			}
-
-			public void Reset ()
-			{
-				update_edit_text_called = false;
-				validate_edit_text_called = false;
-				_callStack.Clear ();
-			}
-
-			protected override void UpdateEditText ()
-			{
-				_callStack.Add ("UpdateEditText");
-				update_edit_text_called = true;
-				base.UpdateEditText ();
-			}
-
-			protected override void ValidateEditText ()
-			{
-				_callStack.Add ("ValidateEditText");
-				validate_edit_text_called = true;
-				base.ValidateEditText ();
-			}
-		}
-
-		[Test]
-		public void DomainUpDownStandardPropTest ()
-		{
-			DomainUpDown d1 = new DomainUpDown ();
-			
-			Assert.AreEqual (0, d1.Items.Count, "#24");
-			Assert.AreEqual (false, d1.Sorted, "#25");
-			Assert.AreEqual (false, d1.Wrap, "#26");
-			Assert.AreEqual ("System.Windows.Forms.DomainUpDown, Items.Count: 0, SelectedIndex: -1", d1.ToString (), "#26a");
-			
-			d1.Items.Add ("item1");
-			d1.Items.Add ("item2");
-			d1.Items.Add ("item3");
-			d1.Items.Add ("item4");
-			
-			Assert.AreEqual (4, d1.Items.Count, "#27");
-			Assert.AreEqual (-1, d1.SelectedIndex, "#28");
-			Assert.AreEqual (null, d1.SelectedItem, "#29");
-		}
-		
-		[Test]
-		[Category ("NotWorking")]
-		public void DomainUpDownEnhancedPropTest ()
-		{
-			DomainUpDown d1 = new DomainUpDown ();
-			
-			d1.Items.Add ("item1");
-			d1.Items.Add ("item2");
-			d1.Items.Add ("item3");
-			d1.Items.Add ("item4");
-				
-			d1.SelectedIndex = 3;
-			Assert.AreEqual (3, d1.SelectedIndex, "#30");
-			
-			d1.Items.Remove ("item1");
-			
-			Assert.AreEqual (3, d1.Items.Count, "#31");
-			Assert.AreEqual (2, d1.SelectedIndex, "#32");
-			
-			d1.Items.Remove ("item4");
-			Assert.AreEqual (2, d1.Items.Count, "#33");
-			Assert.AreEqual (-1, d1.SelectedIndex, "#34");
-			Assert.AreEqual (null, d1.SelectedItem, "#35");
-			
-			// strange, ArgumentOutOfRangeException on windows
-			// d1.SelectedIndex = 1;
-			//Assert.AreEqual (1, d1.SelectedIndex, "#36");
-			
-			d1.Items.Clear ();
-			Assert.AreEqual (0, d1.Items.Count, "#37");
-			Assert.AreEqual (-1, d1.SelectedIndex, "#38");
-			Assert.AreEqual (null, d1.SelectedItem, "#39");
-			
-			d1.Items.Add ("zitem1");
-			d1.Items.Add ("oitem2");
-			d1.Items.Add ("mitem3");
-			d1.Items.Add ("aitem4");
-			
-			d1.SelectedIndex = 0;
-			Assert.AreEqual ("zitem1", d1.SelectedItem.ToString (), "#40");
-			
-			d1.Sorted = true;
-			Assert.AreEqual ("aitem4", d1.SelectedItem.ToString (), "#41");
-			Assert.AreEqual ("aitem4", d1.Items[0].ToString (), "#42");
-			
-			d1.Items.Clear ();
-			d1.Items.Add ("item1");
-			d1.Items.Add ("item2");
-			d1.Items.Add ("item3");
-			d1.Items.Add ("item4");
-			d1.SelectedIndex = 0;
-			
-			d1.UpButton ();
-			Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#43");
-			
-			d1.DownButton ();
-			Assert.AreEqual ("item2", d1.SelectedItem.ToString (), "#44");
-			
-			d1.SelectedIndex = 0;
-			d1.Wrap = true;
-			d1.UpButton ();
-			Assert.AreEqual ("item4", d1.SelectedItem.ToString (), "#45");
-			
-			d1.DownButton ();
-			Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#46");
-			
-			d1.Text = "item3";
-			Assert.AreEqual (null, d1.SelectedItem, "#47");
-		}
-
-		[Test] // bug #80620
-		public void DomainUpDownClientRectangle_Borders ()
-		{
-			DomainUpDown dud = new DomainUpDown ();
-			dud.CreateControl ();
-			Assert.AreEqual (dud.ClientRectangle, new DomainUpDown ().ClientRectangle);
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void DomainUpDown_SelectedIndex ()
-		{
-			MockDomainUpDown dud = new MockDomainUpDown ();
-			dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
-			dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
-			Assert.AreEqual (1, dud.CallStack.Count, "#A1");
-			Assert.AreEqual ("set_Text: (0)", dud.CallStack [0], "#A2");
-			Assert.AreEqual (0, selected_item_changed, "#A3");
-			Assert.AreEqual (0, text_changed, "#A4");
-			Assert.AreEqual (-1, dud.SelectedIndex, "#A5");
-
-			string itemA = "itemA";
-			dud.Items.Add (itemA);
-			Assert.AreEqual (1, dud.CallStack.Count, "#B1");
-			Assert.AreEqual (0, selected_item_changed, "#B2");
-			Assert.AreEqual (0, text_changed, "#B3");
-			Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
-
-			dud.SelectedIndex = 0;
-			Assert.AreEqual (4, dud.CallStack.Count, "#C1");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [1], "#C2");
-			Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [2], "#C3");
-			Assert.AreEqual ("OnChanged", dud.CallStack [3], "#C4");
-			Assert.AreEqual (1, selected_item_changed, "#C5");
-			Assert.AreEqual (1, text_changed, "#C6");
-			Assert.AreEqual (0, dud.SelectedIndex, "#C7");
-
-			dud.SelectedIndex = 0;
-			Assert.AreEqual (4, dud.CallStack.Count, "#D1");
-			Assert.AreEqual (1, selected_item_changed, "#D2");
-			Assert.AreEqual (1, text_changed, "#D3");
-			Assert.AreEqual (0, dud.SelectedIndex, "#D4");
-
-			dud.SelectedIndex = -1;
-			Assert.AreEqual (4, dud.CallStack.Count, "#E1");
-			Assert.AreEqual (1, selected_item_changed, "#E2");
-			Assert.AreEqual (1, text_changed, "#E3");
-			Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
-
-			dud.SelectedIndex = 0;
-			Assert.AreEqual (6, dud.CallStack.Count, "#F1");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [4], "#F2");
-			Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [5], "#F3");
-			Assert.AreEqual (1, selected_item_changed, "#F4");
-			Assert.AreEqual (1, text_changed, "#F5");
-			Assert.AreEqual (0, dud.SelectedIndex, "#F6");
-
-			string itemAbis = "itemA";
-			dud.Items.Add (itemAbis);
-			Assert.AreEqual (6, dud.CallStack.Count, "#G1");
-			Assert.AreEqual (1, selected_item_changed, "#G2");
-			Assert.AreEqual (1, text_changed, "#G3");
-			Assert.AreEqual (0, dud.SelectedIndex, "#G4");
-
-			dud.SelectedIndex = 1;
-			Assert.AreEqual (8, dud.CallStack.Count, "#H1");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#H2");
-			Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [7], "#H3");
-			Assert.AreEqual (1, selected_item_changed, "#H4");
-			Assert.AreEqual (1, text_changed, "#H5");
-			Assert.AreEqual (1, dud.SelectedIndex, "#H6");
-
-			string itemB = "itemB";
-			dud.Items.Add (itemB);
-			Assert.AreEqual (8, dud.CallStack.Count, "#I1");
-			Assert.AreEqual (1, selected_item_changed, "#I2");
-			Assert.AreEqual (1, text_changed, "#I3");
-			Assert.AreEqual (1, dud.SelectedIndex, "#I4");
-
-			dud.SelectedIndex = 2;
-			Assert.AreEqual (11, dud.CallStack.Count, "#J1");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#J2");
-			Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#J3");
-			Assert.AreEqual ("OnChanged", dud.CallStack [10], "#J4");
-			Assert.AreEqual (2, selected_item_changed, "#J5");
-			Assert.AreEqual (2, text_changed, "#J6");
-			Assert.AreEqual (2, dud.SelectedIndex, "#J7");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void DomainUpDown_Items_Add ()
-		{
-			MockItem itemA = new MockItem ("itemA");
-			MockItem itemB = new MockItem ("itemB");
-			MockItem itemC = new MockItem ("itemC");
-
-			MockDomainUpDown dud = new MockDomainUpDown ();
-			dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
-			dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
-			dud.Reset ();
-
-			dud.Items.Add (itemA);
-			Assert.AreEqual (0, dud.CallStack.Count, "#A1");
-			Assert.AreEqual (0, selected_item_changed, "#A2");
-			Assert.AreEqual (0, text_changed, "#A3");
-			Assert.AreEqual (-1, dud.SelectedIndex, "#A4");
-			Assert.AreEqual (string.Empty, dud.Text, "#A5");
-			Assert.AreEqual (1, dud.Items.Count, "#A6");
-			Assert.AreSame (itemA, dud.Items [0], "#A7");
-
-			dud.Items.Add (itemC);
-			Assert.AreEqual (0, dud.CallStack.Count, "#B1");
-			Assert.AreEqual (0, selected_item_changed, "#B2");
-			Assert.AreEqual (0, text_changed, "#B3");
-			Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
-			Assert.AreEqual (string.Empty, dud.Text, "#B5");
-			Assert.AreEqual (2, dud.Items.Count, "#B6");
-			Assert.AreSame (itemC, dud.Items [1], "#B7");
-
-			dud.Items.Add (itemA);
-			Assert.AreEqual (0, dud.CallStack.Count, "#C1");
-			Assert.AreEqual (0, selected_item_changed, "#C2");
-			Assert.AreEqual (0, text_changed, "#C3");
-			Assert.AreEqual (-1, dud.SelectedIndex, "#C4");
-			Assert.AreEqual (string.Empty, dud.Text, "#C5");
-			Assert.AreEqual (3, dud.Items.Count, "#C6");
-			Assert.AreSame (itemA, dud.Items [2], "#C7");
-
-			dud.Sorted = true;
-			Assert.AreEqual (3, dud.Items.Count, "#D1");
-			Assert.AreSame (itemA, dud.Items [0], "#D2");
-			Assert.AreSame (itemA, dud.Items [1], "#D3");
-			Assert.AreSame (itemC, dud.Items [2], "#D4");
-
-			// adding item causes re-sort
-			dud.Items.Add (itemB);
-			Assert.AreEqual (0, dud.CallStack.Count, "#E1");
-			Assert.AreEqual (0, selected_item_changed, "#E2");
-			Assert.AreEqual (0, text_changed, "#E3");
-			Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
-			Assert.AreEqual (string.Empty, dud.Text, "#E5");
-			Assert.AreEqual (4, dud.Items.Count, "#E6");
-			Assert.AreSame (itemA, dud.Items [0], "#E7");
-			Assert.AreSame (itemA, dud.Items [1], "#E8");
-			Assert.AreSame (itemB, dud.Items [2], "#E9");
-			Assert.AreSame (itemC, dud.Items [3], "#E10");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void DomainUpDown_Items_Indexer ()
-		{
-			MockItem itemA = new MockItem ("itemA");
-			MockItem itemAbis = new MockItem ("itemA");
-			MockItem itemB = new MockItem ("itemB");
-			MockItem itemC = new MockItem ("itemC");
-			MockItem itemD = new MockItem ("itemD");
-			MockItem itemE = new MockItem ("itemE");
-
-			TestHelper.RemoveWarning (itemAbis);
-			
-			MockDomainUpDown dud = new MockDomainUpDown ();
-			dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
-			dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
-			dud.Items.Add (itemC);
-			dud.Items.Add (itemA);
-			dud.Items.Add (itemB);
-			dud.Items.Add (itemA);
-			dud.SelectedIndex = 1;
-			dud.Reset ();
-			Reset ();
-
-			Assert.AreSame (itemC, dud.Items [0], "#A1");
-			Assert.AreSame (itemA, dud.Items [1], "#A2");
-			Assert.AreSame (itemB, dud.Items [2], "#A3");
-			Assert.AreSame (itemA, dud.Items [3], "#A4");
-			Assert.AreEqual (itemA.Text, dud.Text, "#A5");
-
-			dud.Items [3] = itemD;
-			Assert.AreEqual (0, dud.CallStack.Count, "#B1");
-			Assert.AreEqual (0, selected_item_changed, "#B2");
-			Assert.AreEqual (0, text_changed, "#B3");
-			Assert.AreEqual (1, dud.SelectedIndex, "#B4");
-			Assert.AreEqual (itemA.Text, dud.Text, "#B5");
-
-			dud.Items [1] = itemE;
-			Assert.AreEqual (3, dud.CallStack.Count, "#C1");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [0], "#C2");
-			Assert.AreEqual ("set_Text:itemE (5)", dud.CallStack [1], "#C3");
-			Assert.AreEqual ("OnChanged", dud.CallStack [2], "#C4");
-			Assert.AreEqual (1, selected_item_changed, "#C5");
-			Assert.AreEqual (1, text_changed, "#C6");
-			Assert.AreEqual (1, dud.SelectedIndex, "#C7");
-			Assert.AreEqual (itemE.Text, dud.Text, "#C8");
-
-			dud.Sorted = true;
-			Assert.AreEqual (8, dud.CallStack.Count, "#D1");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [3], "#D2");
-			Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [4], "#D3");
-			Assert.AreEqual ("OnChanged", dud.CallStack [5], "#D4");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#D5");
-			Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [7], "#D6");
-			Assert.AreEqual (2, selected_item_changed, "#D7");
-			Assert.AreEqual (2, text_changed, "#D8");
-			Assert.AreEqual (1, dud.SelectedIndex, "#D9");
-			Assert.AreEqual (itemC.Text, dud.Text, "#D10");
-			Assert.AreSame (itemB, dud.Items [0], "#D11");
-			Assert.AreSame (itemC, dud.Items [1], "#D12");
-			Assert.AreSame (itemD, dud.Items [2], "#D13");
-			Assert.AreSame (itemE, dud.Items [3], "#D14");
-
-			dud.Items [3] = itemA;
-			Assert.AreEqual (13, dud.CallStack.Count, "#E1");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#E2");
-			Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#E3");
-			Assert.AreEqual ("OnChanged", dud.CallStack [10], "#E4");
-			Assert.AreEqual ("UpdateEditText", dud.CallStack [11], "#E5");
-			Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [12], "#E6");
-			Assert.AreEqual (3, selected_item_changed, "#E7");
-			Assert.AreEqual (3, text_changed, "#E8");
-			Assert.AreEqual (1, dud.SelectedIndex, "#E9");
-			Assert.AreEqual (itemB.Text, dud.Text, "#E10");
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void DomainUpDown_Items_Indexer_Null ()
-		{
-			MockDomainUpDown dud = new MockDomainUpDown ();
-			dud.Items.Add ("itemA");
-			dud.Items.Add ("itemB");
-			dud.Items.Add ("itemC");
-			dud.SelectedIndex = 0;
-
-			// TODO: report as MS bug
-			dud.Items [2] = null;
-			dud.Items [1] = null;
-			try {
-				dud.Items [0] = null;
-				Assert.Fail ();
-			} catch (NullReferenceException ex) {
-				TestHelper.RemoveWarning (ex);
-			}
-		}
-
-		[Test]
-		public void DomainUpDown_Items_Insert ()
-		{
-			// TODO
-		}
-
-		[Test]
-		public void DomainUpDown_Items_Remove ()
-		{
-			// TODO
-		}
-
-		[Test]
-		public void DomainUpDown_Items_RemoveAt ()
-		{
-			// TODO
-		}
-
-		[Test]
-		[Category ("NotWorking")]
-		public void DomainUpDown_SelectedIndex_Invalid ()
-		{
-			DomainUpDown dud = new DomainUpDown ();
-			dud.Items.Add ("item1");
-
-			try {
-				dud.SelectedIndex = -2;
-				Assert.Fail ("#A1");
-			} catch (ArgumentOutOfRangeException ex) {
-				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
-				Assert.IsNotNull (ex.Message, "#A3");
-				Assert.IsNotNull (ex.ParamName, "#A4");
-				Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
-				Assert.IsNull (ex.InnerException, "#A6");
-			}
-
-			try {
-				dud.SelectedIndex = 1;
-				Assert.Fail ("#B1");
-			} catch (ArgumentOutOfRangeException ex) {
-				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
-				Assert.IsNotNull (ex.Message, "#A3");
-				Assert.IsNotNull (ex.ParamName, "#A4");
-				Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
-				Assert.IsNull (ex.InnerException, "#A6");
-			}
-		}
-
-		[Test]
-		public void DomainUpDown_SelectedItem_Null ()
-		{
-			DomainUpDown dud = new DomainUpDown ();
-			dud.Items.Add ("item1");
-			dud.SelectedIndex = 0;
-			Assert.AreEqual (0, dud.SelectedIndex, "#A1");
-			Assert.IsNotNull (dud.SelectedItem, "#A2");
-
-			dud.SelectedItem = null;
-			Assert.AreEqual (-1, dud.SelectedIndex, "#B1");
-			Assert.IsNull (dud.SelectedItem, "#B2");
-		}
-
-		void DomainUpDown_TextChanged (object sender, EventArgs e)
-		{
-			text_changed++;
-		}
-
-		void DomainUpDown_SelectedItemChanged (object sender, EventArgs e)
-		{
-			selected_item_changed++;
-		}
-
-		public class MockDomainUpDown : DomainUpDown
-		{
-			private ArrayList _callStack = new ArrayList ();
-
-			public ArrayList CallStack {
-				get { return _callStack; }
-			}
-
-			public bool user_edit {
-				get {
-					return UserEdit;
-				}
-				set {
-					UserEdit = value;
-				}
-			}
-
-			public bool changing_text {
-				get {
-					return ChangingText;
-				}
-				set {
-					ChangingText = value;
-				}
-			}
-
-			public void Reset ()
-			{
-				_callStack.Clear ();
-			}
-
-			public override string Text {
-				get {
-					return base.Text;
-				}
-				set {
-					if (value == null)
-						_callStack.Add ("set_Text:null");
-					else
-						_callStack.Add ("set_Text:" + value + " (" + value.Length + ")");
-					base.Text = value;
-				}
-			}
-
-			protected override void OnChanged (object source, EventArgs e)
-			{
-				_callStack.Add ("OnChanged");
-				base.OnChanged (source, e);
-			}
-
-			protected override void UpdateEditText ()
-			{
-				_callStack.Add ("UpdateEditText");
-				base.UpdateEditText ();
-			}
-
-			protected override void ValidateEditText ()
-			{
-				_callStack.Add ("ValidateEditText");
-				base.ValidateEditText ();
-			}
-		}
-
-		private int selected_item_changed = 0;
-		private int text_changed = 0;
-		private int value_changed = 0;
-
-		public class MockItem
-		{
-			public MockItem (string text)
-			{
-				_text = text;
-			}
-
-			public string Text {
-				get { return _text; }
-			}
-
-			public override string ToString ()
-			{
-				return _text;
-			}
-
-			private readonly string _text;
-		}
-		
-		[Test]
-		public void Defaults ()
-		{
-			UpDownBase udb = new MockUpDown ();
-			
-			Assert.AreEqual (new Size (0, 0), udb.MaximumSize, "A1");
-			Assert.AreEqual (new Size (0, 0), udb.MinimumSize, "A2");
-			
-			udb.MaximumSize = new Size (100, 100);
-			udb.MinimumSize = new Size (100, 100);
-
-			Assert.AreEqual (new Size (100, 0), udb.MaximumSize, "A3");
-			Assert.AreEqual (new Size (100, 0), udb.MinimumSize, "A4");
-		}
-		
-		private class MockUpDown : UpDownBase
-		{
-			public MockUpDown () : base ()
-			{
-			}
-
-			public override void DownButton ()
-			{
-				throw new Exception ("The method or operation is not implemented.");
-			}
-
-			public override void UpButton ()
-			{
-				throw new Exception ("The method or operation is not implemented.");
-			}
-
-			protected override void UpdateEditText ()
-			{
-				throw new Exception ("The method or operation is not implemented.");
-			}
-		}
-	}
-}
+﻿//
+// 
+//
+// Authors:
+//      Alexander Olk (alex.olk@googlemail.com)
+//      Gert Driesen (drieseng@users.sourceforge.net)
+//
+
+using System;
+using System.Collections;
+using System.Drawing;
+using System.Globalization;
+using System.Windows.Forms;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class UpDownTest : TestHelper
+	{
+		[SetUp]
+		protected override void SetUp () {
+			Reset ();
+			base.SetUp ();
+		}
+
+		private void Reset ()
+		{
+			selected_item_changed = 0;
+			text_changed = 0;
+			value_changed = 0;
+		}
+
+		[Test]
+		public void UpDownActiveControlTest ()
+		{
+			NumericUpDown n1 = new NumericUpDown ();
+			Assert.IsNull (n1.ActiveControl, "1");
+		}
+
+		[Test]
+		public void UpDownBasePropTest ()
+		{
+			NumericUpDown n1 = new NumericUpDown ();
+			
+			Assert.AreEqual (BorderStyle.Fixed3D, n1.BorderStyle, "#1");
+			Assert.AreEqual (true, n1.InterceptArrowKeys, "#2");
+			Assert.AreEqual (LeftRightAlignment.Right, n1.UpDownAlign, "#3");
+		}
+
+		[Test]
+		public void ToStringTest ()
+		{
+			NumericUpDown n1 = new NumericUpDown ();
+
+			Assert.AreEqual ("System.Windows.Forms.NumericUpDown, Minimum = 0, Maximum = 100", n1.ToString (), "1");
+
+			n1.Minimum = 0.33m;
+			n1.Maximum = 100.33m;
+			Assert.AreEqual (string.Format (CultureInfo.CurrentCulture,
+				"System.Windows.Forms.NumericUpDown, Minimum = {0}, Maximum = {1}",
+				0.33, 100.33), n1.ToString (), "2");
+		}
+
+		[Test] // bug #80620
+		public void NumericUpDownClientRectangle_Borders ()
+		{
+			NumericUpDown nud = new NumericUpDown ();
+			nud.CreateControl ();
+			Assert.AreEqual (nud.ClientRectangle, new NumericUpDown ().ClientRectangle);
+		}
+
+		[Test]
+		public void NumericUpDownStandardPropTest ()
+		{
+			NumericUpDown n1 = new NumericUpDown ();
+			
+			Assert.AreEqual (100, n1.Maximum, "#4");
+			Assert.AreEqual (0, n1.Minimum, "#5");
+			Assert.AreEqual (0, n1.Value, "#6");
+			Assert.AreEqual (0, n1.DecimalPlaces, "#7");
+			Assert.IsFalse (n1.Hexadecimal, "#8");
+			Assert.IsFalse (n1.ThousandsSeparator, "#9");
+			Assert.AreEqual (1, n1.Increment, "#10");
+		}
+
+		[Test]
+		public void NumericUpDownEnhancedPropTest ()
+		{
+			NumericUpDown n1 = new NumericUpDown ();
+			
+			n1.Minimum = 200;
+			Assert.AreEqual (200, n1.Maximum, "#11");
+			Assert.AreEqual (200, n1.Value, "#12");
+			
+			n1.Minimum = 100;
+			n1.Maximum = 50;
+			Assert.AreEqual (50, n1.Minimum, "#13");
+			
+			n1.Minimum = 0;
+			n1.Maximum = 100;
+			n1.Value = 90;
+			n1.Maximum = 50;
+			Assert.AreEqual (50, n1.Value, "#14");
+			
+			n1.Minimum = 0;
+			n1.Maximum = 100;
+			n1.Value = 90;
+			n1.DownButton ();
+			Assert.AreEqual (89, n1.Value, "#15");
+			
+			n1.UpButton ();
+			Assert.AreEqual (90, n1.Value, "#16");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NumericUpDownEditValidateTest ()
+		{
+			NumericNew nn = new NumericNew ();
+			Assert.IsTrue (nn.update_edit_text_called, "#17");
+			
+			Assert.IsFalse (nn.user_edit, "#18");
+			
+			nn.Reset ();
+			nn.user_edit = true;
+			nn.Text = "10";
+			Assert.IsTrue (nn.validate_edit_text_called, "#19");
+			Assert.IsTrue (nn.update_edit_text_called, "#20");
+			
+			nn.Reset ();
+			nn.user_edit = false;
+			nn.Text = "11";
+			Assert.IsTrue (nn.validate_edit_text_called, "#21");
+			Assert.IsTrue (nn.update_edit_text_called, "#22");
+			
+			nn.DownButton ();
+			Assert.AreEqual (10, nn.Value, "#23");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NumericUpDown_BeginInit ()
+		{
+			NumericNew nud = new NumericNew ();
+			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
+			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
+			Assert.AreEqual (2, nud.CallStack.Count, "#A1");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
+			Assert.AreEqual (0, nud.Value, "#A4");
+			Assert.AreEqual (2, nud.CallStack.Count, "#A5");
+			Assert.AreEqual (0, value_changed, "#A6");
+			Assert.AreEqual (0, text_changed, "#A7");
+
+			nud.BeginInit ();
+			Assert.AreEqual (2, nud.CallStack.Count, "#B1");
+			nud.Value = 10;
+			Assert.AreEqual (3, nud.CallStack.Count, "#B2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#B3");
+			Assert.AreEqual ("0", nud.Text, "#B4");
+			Assert.AreEqual (10, nud.Value, "#B5");
+			Assert.AreEqual (3, nud.CallStack.Count, "#B6");
+			Assert.AreEqual (1, value_changed, "#B7");
+			Assert.AreEqual (0, text_changed, "#B8");
+			nud.EndInit ();
+			Assert.AreEqual (4, nud.CallStack.Count, "#B9");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B10");
+			Assert.AreEqual (1, text_changed, "#B11");
+			Assert.AreEqual ("10", nud.Text, "#B12");
+			Assert.AreEqual (10, nud.Value, "#B13");
+			Assert.AreEqual (4, nud.CallStack.Count, "#B14");
+			Assert.AreEqual (1, value_changed, "#B15");
+			Assert.AreEqual (1, text_changed, "#B16");
+
+			// multiple calls to BeginInit are undone by a single EndInit call
+			nud.BeginInit ();
+			nud.BeginInit ();
+			Assert.AreEqual (4, nud.CallStack.Count, "#C1");
+			nud.Value = 20;
+			Assert.AreEqual (5, nud.CallStack.Count, "#C2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C3");
+			Assert.AreEqual ("10", nud.Text, "#C4");
+			Assert.AreEqual (20, nud.Value, "#C5");
+			Assert.AreEqual (5, nud.CallStack.Count, "#C6");
+			Assert.AreEqual (2, value_changed, "#C7");
+			Assert.AreEqual (1, text_changed, "#C8");
+			nud.EndInit ();
+			Assert.AreEqual (6, nud.CallStack.Count, "#C9");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#C10");
+			Assert.AreEqual (2, text_changed, "#C11");
+			Assert.AreEqual ("20", nud.Text, "#C12");
+			Assert.AreEqual (20, nud.Value, "#C13");
+			Assert.AreEqual (6, nud.CallStack.Count, "#C14");
+			Assert.AreEqual (2, value_changed, "#C15");
+			Assert.AreEqual (2, text_changed, "#C16");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NumericUpDown_ChangingText ()
+		{
+			NumericNew nud = new NumericNew ();
+			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
+			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
+			Assert.IsFalse (nud.changing_text, "#A1");
+			Assert.IsFalse (nud.user_edit, "#A2");
+			Assert.AreEqual (0, text_changed, "#A3");
+
+			nud.Text = "1";
+			Assert.IsFalse (nud.changing_text, "#B1");
+			Assert.IsFalse (nud.user_edit, "#B2");
+			Assert.AreEqual (5, nud.CallStack.Count, "#B3");
+			Assert.AreEqual (1, text_changed, "#B4");
+
+			nud.changing_text = true;
+			nud.Text = "2";
+			Assert.IsFalse (nud.changing_text, "#C1");
+			Assert.IsFalse (nud.user_edit, "#C2");
+			Assert.AreEqual (5, nud.CallStack.Count, "#C3");
+			Assert.AreEqual (2, text_changed, "#C4");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NumericUpDown_EndInit ()
+		{
+			NumericNew nud = new NumericNew ();
+			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
+			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
+			Assert.AreEqual (2, nud.CallStack.Count, "#A1");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
+			Assert.AreEqual (0, nud.Value, "#A4");
+			Assert.AreEqual (2, nud.CallStack.Count, "#A5");
+			Assert.AreEqual (0, value_changed, "#A6");
+			Assert.AreEqual (0, text_changed, "#A7");
+
+			// EndInit without corresponding BeginInit
+			nud.EndInit ();
+			Assert.AreEqual (3, nud.CallStack.Count, "#B1");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#B2");
+			Assert.AreEqual (0, nud.Value, "#B3");
+			Assert.AreEqual (3, nud.CallStack.Count, "#B4");
+			Assert.AreEqual (0, value_changed, "#B5");
+			Assert.AreEqual (0, text_changed, "#B6");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NumericUpDown_UpButton ()
+		{
+			NumericNew nud = new NumericNew ();
+			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
+			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
+			nud.UpButton ();
+			Assert.AreEqual (3, nud.CallStack.Count, "#A1");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#A4");
+			Assert.AreEqual (1, value_changed, "#A5");
+			Assert.AreEqual (1, nud.Value, "#A6");
+			Assert.AreEqual (3, nud.CallStack.Count, "#A7");
+			Assert.AreEqual (1, value_changed, "#A8");
+			Assert.AreEqual (1, text_changed, "#A9");
+
+			nud.Text = "5";
+			nud.UpButton ();
+			Assert.AreEqual (7, nud.CallStack.Count, "#B1");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [3], "#B2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#B3");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#B4");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#B5");
+			Assert.AreEqual (3, value_changed, "#B6");
+			Assert.AreEqual (6, nud.Value, "#B7");
+			Assert.AreEqual ("6", nud.Text, "#B8");
+			Assert.AreEqual (7, nud.CallStack.Count, "#B9");
+			Assert.AreEqual (3, value_changed, "#B10");
+			Assert.AreEqual (3, text_changed, "#B11");
+
+			nud.Text = "7";
+			nud.user_edit = true;
+			nud.UpButton ();
+			Assert.AreEqual (11, nud.CallStack.Count, "#C1");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [7], "#C2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [8], "#C3");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [9], "#C4");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [10], "#C5");
+			Assert.AreEqual (5, value_changed, "#C6");
+			Assert.AreEqual (8, nud.Value, "#C7");
+			Assert.AreEqual (11, nud.CallStack.Count, "#C8");
+			Assert.AreEqual (5, value_changed, "#C9");
+			Assert.AreEqual (5, text_changed, "#C10");
+			nud.user_edit = false;
+			Assert.AreEqual ("8", nud.Text, "#C11");
+			Assert.AreEqual (11, nud.CallStack.Count, "#C12");
+			Assert.AreEqual (5, value_changed, "#C13");
+			Assert.AreEqual (5, text_changed, "#C14");
+
+			nud.user_edit = false;
+			nud.Text = "555";
+			nud.user_edit = true;
+			nud.UpButton ();
+			Assert.AreEqual (14, nud.CallStack.Count, "#D1");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [11], "#D2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [12], "#D3");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [13], "#D4");
+			Assert.AreEqual (6, value_changed, "#D5");
+			Assert.AreEqual (100, nud.Value, "#D6");
+			Assert.AreEqual (14, nud.CallStack.Count, "#D7");
+			Assert.AreEqual (6, value_changed, "#D8");
+			Assert.AreEqual (7, text_changed, "#D9");
+			nud.user_edit = false;
+			Assert.AreEqual ("100", nud.Text, "#D10");
+			Assert.AreEqual (14, nud.CallStack.Count, "#D11");
+			Assert.AreEqual (6, value_changed, "#D12");
+			Assert.AreEqual (7, text_changed, "#D13");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NumericUpDown_Value ()
+		{
+			// obtain Value when UserEdit is false
+			NumericNew nud = new NumericNew ();
+			nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
+			nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
+			Assert.AreEqual (2, nud.CallStack.Count, "#A1");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
+			Assert.AreEqual (0, nud.Value, "#A4");
+			Assert.AreEqual (2, nud.CallStack.Count, "#A5");
+			Assert.AreEqual (0, value_changed, "#A6");
+			Assert.AreEqual (0, text_changed, "#A7");
+
+			// obtain Value when UserEdit is true
+			nud.user_edit = true;
+			Assert.AreEqual (2, nud.CallStack.Count, "#B1");
+			Assert.AreEqual (0, nud.Value, "#B2");
+			Assert.AreEqual (4, nud.CallStack.Count, "#B3");
+			Assert.AreEqual ("ValidateEditText", nud.CallStack [2], "#B4");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B5");
+			Assert.AreEqual (0, value_changed, "#B6");
+			Assert.AreEqual (0, text_changed, "#B7");
+
+			// modify Value when UserEdit is false
+			nud.user_edit = false;
+			nud.Value = 10;
+			Assert.AreEqual (5, nud.CallStack.Count, "#C1");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C2");
+			Assert.AreEqual (1, value_changed, "#C3");
+			Assert.AreEqual (1, text_changed, "#C4");
+			Assert.AreEqual (10, nud.Value, "#C5");
+			Assert.AreEqual (5, nud.CallStack.Count, "#C6");
+			Assert.AreEqual (1, value_changed, "#C7");
+			Assert.AreEqual (1, text_changed, "#C8");
+
+			// setting same Value
+			nud.Value = 10;
+			Assert.AreEqual (5, nud.CallStack.Count, "#D1");
+			Assert.AreEqual (1, value_changed, "#D2");
+			Assert.AreEqual (10, nud.Value, "#D3");
+			Assert.AreEqual (5, nud.CallStack.Count, "#D4");
+			Assert.AreEqual (1, value_changed, "#D5");
+			Assert.AreEqual (1, text_changed, "#D6");
+
+			// modify Value when UserEdit is true
+			nud.user_edit = true;
+			nud.Value = 20;
+			Assert.AreEqual (7, nud.CallStack.Count, "#E1");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#E2");
+			Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#E3");
+			Assert.AreEqual (3, value_changed, "#E4");
+			Assert.AreEqual (1, text_changed, "#E5");
+			nud.user_edit = false; // reset UserEdit to avoid Value being parsed from Text
+			Assert.AreEqual (10, nud.Value, "#E6");
+			Assert.AreEqual (7, nud.CallStack.Count, "#E7");
+			Assert.AreEqual (3, value_changed, "#E8");
+			Assert.AreEqual (1, text_changed, "#E9");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NumericUpDown_Value_Invalid ()
+		{
+			NumericNew nud = new NumericNew ();
+
+			try {
+				nud.Value = 1000;
+				Assert.Fail ("#A1");
+			} catch (ArgumentOutOfRangeException ex) {
+				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
+				Assert.IsNotNull (ex.Message, "#A3");
+				Assert.IsNotNull (ex.ParamName, "#A4");
+				Assert.AreEqual ("Value", ex.ParamName, "#A5");
+				Assert.IsNull (ex.InnerException, "#A6");
+			}
+
+			try {
+				nud.Value = 1000;
+				Assert.Fail ("#B1");
+			} catch (ArgumentOutOfRangeException ex) {
+				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
+				Assert.IsNotNull (ex.Message, "#B3");
+				Assert.IsNotNull (ex.ParamName, "#B4");
+				Assert.AreEqual ("Value", ex.ParamName, "#B5");
+				Assert.IsNull (ex.InnerException, "#B6");
+			}
+
+			try {
+				nud.Value = -1000;
+				Assert.Fail ("#C1");
+			} catch (ArgumentOutOfRangeException ex) {
+				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
+				Assert.IsNotNull (ex.Message, "#C3");
+				Assert.IsNotNull (ex.ParamName, "#C4");
+				Assert.AreEqual ("Value", ex.ParamName, "#C5");
+				Assert.IsNull (ex.InnerException, "#C6");
+			}
+
+			nud.BeginInit ();
+
+			nud.Value = 1000;
+			Assert.AreEqual (1000, nud.Value, "#D1");
+			nud.Value = 1000;
+			Assert.AreEqual (1000, nud.Value, "#D2");
+			nud.Value = -1000;
+			Assert.AreEqual (-1000, nud.Value, "#D3");
+			nud.EndInit ();
+			try {
+				nud.Value = -1000;
+				Assert.Fail ("#E1");
+			} catch (ArgumentOutOfRangeException ex) {
+				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#E2");
+				Assert.IsNotNull (ex.Message, "#E3");
+				Assert.IsNotNull (ex.ParamName, "#E4");
+				Assert.AreEqual ("Value", ex.ParamName, "#E5");
+				Assert.IsNull (ex.InnerException, "#E6");
+			}
+		}
+
+		void NumericUpDown_TextChanged (object sender, EventArgs e)
+		{
+			text_changed++;
+		}
+
+		void NumericUpDown_ValueChanged (object sender, EventArgs e)
+		{
+			value_changed++;
+		}
+
+		public class NumericNew : NumericUpDown
+		{
+			public bool update_edit_text_called = false;
+			public bool validate_edit_text_called = false;
+			private ArrayList _callStack = new ArrayList ();
+
+			public ArrayList CallStack {
+				get { return _callStack; }
+			}
+
+			public bool user_edit {
+				get {
+					return UserEdit;
+				}
+				set {
+					UserEdit = value;
+				}
+			}
+
+			public bool changing_text {
+				get {
+					return ChangingText;
+				}
+				set {
+					ChangingText = value;
+				}
+			}
+
+			public void Reset ()
+			{
+				update_edit_text_called = false;
+				validate_edit_text_called = false;
+				_callStack.Clear ();
+			}
+
+			protected override void UpdateEditText ()
+			{
+				_callStack.Add ("UpdateEditText");
+				update_edit_text_called = true;
+				base.UpdateEditText ();
+			}
+
+			protected override void ValidateEditText ()
+			{
+				_callStack.Add ("ValidateEditText");
+				validate_edit_text_called = true;
+				base.ValidateEditText ();
+			}
+		}
+
+		[Test]
+		public void DomainUpDownStandardPropTest ()
+		{
+			DomainUpDown d1 = new DomainUpDown ();
+			
+			Assert.AreEqual (0, d1.Items.Count, "#24");
+			Assert.AreEqual (false, d1.Sorted, "#25");
+			Assert.AreEqual (false, d1.Wrap, "#26");
+			Assert.AreEqual ("System.Windows.Forms.DomainUpDown, Items.Count: 0, SelectedIndex: -1", d1.ToString (), "#26a");
+			
+			d1.Items.Add ("item1");
+			d1.Items.Add ("item2");
+			d1.Items.Add ("item3");
+			d1.Items.Add ("item4");
+			
+			Assert.AreEqual (4, d1.Items.Count, "#27");
+			Assert.AreEqual (-1, d1.SelectedIndex, "#28");
+			Assert.AreEqual (null, d1.SelectedItem, "#29");
+		}
+		
+		[Test]
+		[Category ("NotWorking")]
+		public void DomainUpDownEnhancedPropTest ()
+		{
+			DomainUpDown d1 = new DomainUpDown ();
+			
+			d1.Items.Add ("item1");
+			d1.Items.Add ("item2");
+			d1.Items.Add ("item3");
+			d1.Items.Add ("item4");
+				
+			d1.SelectedIndex = 3;
+			Assert.AreEqual (3, d1.SelectedIndex, "#30");
+			
+			d1.Items.Remove ("item1");
+			
+			Assert.AreEqual (3, d1.Items.Count, "#31");
+			Assert.AreEqual (2, d1.SelectedIndex, "#32");
+			
+			d1.Items.Remove ("item4");
+			Assert.AreEqual (2, d1.Items.Count, "#33");
+			Assert.AreEqual (-1, d1.SelectedIndex, "#34");
+			Assert.AreEqual (null, d1.SelectedItem, "#35");
+			
+			// strange, ArgumentOutOfRangeException on windows
+			// d1.SelectedIndex = 1;
+			//Assert.AreEqual (1, d1.SelectedIndex, "#36");
+			
+			d1.Items.Clear ();
+			Assert.AreEqual (0, d1.Items.Count, "#37");
+			Assert.AreEqual (-1, d1.SelectedIndex, "#38");
+			Assert.AreEqual (null, d1.SelectedItem, "#39");
+			
+			d1.Items.Add ("zitem1");
+			d1.Items.Add ("oitem2");
+			d1.Items.Add ("mitem3");
+			d1.Items.Add ("aitem4");
+			
+			d1.SelectedIndex = 0;
+			Assert.AreEqual ("zitem1", d1.SelectedItem.ToString (), "#40");
+			
+			d1.Sorted = true;
+			Assert.AreEqual ("aitem4", d1.SelectedItem.ToString (), "#41");
+			Assert.AreEqual ("aitem4", d1.Items[0].ToString (), "#42");
+			
+			d1.Items.Clear ();
+			d1.Items.Add ("item1");
+			d1.Items.Add ("item2");
+			d1.Items.Add ("item3");
+			d1.Items.Add ("item4");
+			d1.SelectedIndex = 0;
+			
+			d1.UpButton ();
+			Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#43");
+			
+			d1.DownButton ();
+			Assert.AreEqual ("item2", d1.SelectedItem.ToString (), "#44");
+			
+			d1.SelectedIndex = 0;
+			d1.Wrap = true;
+			d1.UpButton ();
+			Assert.AreEqual ("item4", d1.SelectedItem.ToString (), "#45");
+			
+			d1.DownButton ();
+			Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#46");
+			
+			d1.Text = "item3";
+			Assert.AreEqual (null, d1.SelectedItem, "#47");
+		}
+
+		[Test] // bug #80620
+		public void DomainUpDownClientRectangle_Borders ()
+		{
+			DomainUpDown dud = new DomainUpDown ();
+			dud.CreateControl ();
+			Assert.AreEqual (dud.ClientRectangle, new DomainUpDown ().ClientRectangle);
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void DomainUpDown_SelectedIndex ()
+		{
+			MockDomainUpDown dud = new MockDomainUpDown ();
+			dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
+			dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
+			Assert.AreEqual (1, dud.CallStack.Count, "#A1");
+			Assert.AreEqual ("set_Text: (0)", dud.CallStack [0], "#A2");
+			Assert.AreEqual (0, selected_item_changed, "#A3");
+			Assert.AreEqual (0, text_changed, "#A4");
+			Assert.AreEqual (-1, dud.SelectedIndex, "#A5");
+
+			string itemA = "itemA";
+			dud.Items.Add (itemA);
+			Assert.AreEqual (1, dud.CallStack.Count, "#B1");
+			Assert.AreEqual (0, selected_item_changed, "#B2");
+			Assert.AreEqual (0, text_changed, "#B3");
+			Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
+
+			dud.SelectedIndex = 0;
+			Assert.AreEqual (4, dud.CallStack.Count, "#C1");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [1], "#C2");
+			Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [2], "#C3");
+			Assert.AreEqual ("OnChanged", dud.CallStack [3], "#C4");
+			Assert.AreEqual (1, selected_item_changed, "#C5");
+			Assert.AreEqual (1, text_changed, "#C6");
+			Assert.AreEqual (0, dud.SelectedIndex, "#C7");
+
+			dud.SelectedIndex = 0;
+			Assert.AreEqual (4, dud.CallStack.Count, "#D1");
+			Assert.AreEqual (1, selected_item_changed, "#D2");
+			Assert.AreEqual (1, text_changed, "#D3");
+			Assert.AreEqual (0, dud.SelectedIndex, "#D4");
+
+			dud.SelectedIndex = -1;
+			Assert.AreEqual (4, dud.CallStack.Count, "#E1");
+			Assert.AreEqual (1, selected_item_changed, "#E2");
+			Assert.AreEqual (1, text_changed, "#E3");
+			Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
+
+			dud.SelectedIndex = 0;
+			Assert.AreEqual (6, dud.CallStack.Count, "#F1");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [4], "#F2");
+			Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [5], "#F3");
+			Assert.AreEqual (1, selected_item_changed, "#F4");
+			Assert.AreEqual (1, text_changed, "#F5");
+			Assert.AreEqual (0, dud.SelectedIndex, "#F6");
+
+			string itemAbis = "itemA";
+			dud.Items.Add (itemAbis);
+			Assert.AreEqual (6, dud.CallStack.Count, "#G1");
+			Assert.AreEqual (1, selected_item_changed, "#G2");
+			Assert.AreEqual (1, text_changed, "#G3");
+			Assert.AreEqual (0, dud.SelectedIndex, "#G4");
+
+			dud.SelectedIndex = 1;
+			Assert.AreEqual (8, dud.CallStack.Count, "#H1");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#H2");
+			Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [7], "#H3");
+			Assert.AreEqual (1, selected_item_changed, "#H4");
+			Assert.AreEqual (1, text_changed, "#H5");
+			Assert.AreEqual (1, dud.SelectedIndex, "#H6");
+
+			string itemB = "itemB";
+			dud.Items.Add (itemB);
+			Assert.AreEqual (8, dud.CallStack.Count, "#I1");
+			Assert.AreEqual (1, selected_item_changed, "#I2");
+			Assert.AreEqual (1, text_changed, "#I3");
+			Assert.AreEqual (1, dud.SelectedIndex, "#I4");
+
+			dud.SelectedIndex = 2;
+			Assert.AreEqual (11, dud.CallStack.Count, "#J1");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#J2");
+			Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#J3");
+			Assert.AreEqual ("OnChanged", dud.CallStack [10], "#J4");
+			Assert.AreEqual (2, selected_item_changed, "#J5");
+			Assert.AreEqual (2, text_changed, "#J6");
+			Assert.AreEqual (2, dud.SelectedIndex, "#J7");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void DomainUpDown_Items_Add ()
+		{
+			MockItem itemA = new MockItem ("itemA");
+			MockItem itemB = new MockItem ("itemB");
+			MockItem itemC = new MockItem ("itemC");
+
+			MockDomainUpDown dud = new MockDomainUpDown ();
+			dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
+			dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
+			dud.Reset ();
+
+			dud.Items.Add (itemA);
+			Assert.AreEqual (0, dud.CallStack.Count, "#A1");
+			Assert.AreEqual (0, selected_item_changed, "#A2");
+			Assert.AreEqual (0, text_changed, "#A3");
+			Assert.AreEqual (-1, dud.SelectedIndex, "#A4");
+			Assert.AreEqual (string.Empty, dud.Text, "#A5");
+			Assert.AreEqual (1, dud.Items.Count, "#A6");
+			Assert.AreSame (itemA, dud.Items [0], "#A7");
+
+			dud.Items.Add (itemC);
+			Assert.AreEqual (0, dud.CallStack.Count, "#B1");
+			Assert.AreEqual (0, selected_item_changed, "#B2");
+			Assert.AreEqual (0, text_changed, "#B3");
+			Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
+			Assert.AreEqual (string.Empty, dud.Text, "#B5");
+			Assert.AreEqual (2, dud.Items.Count, "#B6");
+			Assert.AreSame (itemC, dud.Items [1], "#B7");
+
+			dud.Items.Add (itemA);
+			Assert.AreEqual (0, dud.CallStack.Count, "#C1");
+			Assert.AreEqual (0, selected_item_changed, "#C2");
+			Assert.AreEqual (0, text_changed, "#C3");
+			Assert.AreEqual (-1, dud.SelectedIndex, "#C4");
+			Assert.AreEqual (string.Empty, dud.Text, "#C5");
+			Assert.AreEqual (3, dud.Items.Count, "#C6");
+			Assert.AreSame (itemA, dud.Items [2], "#C7");
+
+			dud.Sorted = true;
+			Assert.AreEqual (3, dud.Items.Count, "#D1");
+			Assert.AreSame (itemA, dud.Items [0], "#D2");
+			Assert.AreSame (itemA, dud.Items [1], "#D3");
+			Assert.AreSame (itemC, dud.Items [2], "#D4");
+
+			// adding item causes re-sort
+			dud.Items.Add (itemB);
+			Assert.AreEqual (0, dud.CallStack.Count, "#E1");
+			Assert.AreEqual (0, selected_item_changed, "#E2");
+			Assert.AreEqual (0, text_changed, "#E3");
+			Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
+			Assert.AreEqual (string.Empty, dud.Text, "#E5");
+			Assert.AreEqual (4, dud.Items.Count, "#E6");
+			Assert.AreSame (itemA, dud.Items [0], "#E7");
+			Assert.AreSame (itemA, dud.Items [1], "#E8");
+			Assert.AreSame (itemB, dud.Items [2], "#E9");
+			Assert.AreSame (itemC, dud.Items [3], "#E10");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void DomainUpDown_Items_Indexer ()
+		{
+			MockItem itemA = new MockItem ("itemA");
+			MockItem itemAbis = new MockItem ("itemA");
+			MockItem itemB = new MockItem ("itemB");
+			MockItem itemC = new MockItem ("itemC");
+			MockItem itemD = new MockItem ("itemD");
+			MockItem itemE = new MockItem ("itemE");
+
+			TestHelper.RemoveWarning (itemAbis);
+			
+			MockDomainUpDown dud = new MockDomainUpDown ();
+			dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
+			dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
+			dud.Items.Add (itemC);
+			dud.Items.Add (itemA);
+			dud.Items.Add (itemB);
+			dud.Items.Add (itemA);
+			dud.SelectedIndex = 1;
+			dud.Reset ();
+			Reset ();
+
+			Assert.AreSame (itemC, dud.Items [0], "#A1");
+			Assert.AreSame (itemA, dud.Items [1], "#A2");
+			Assert.AreSame (itemB, dud.Items [2], "#A3");
+			Assert.AreSame (itemA, dud.Items [3], "#A4");
+			Assert.AreEqual (itemA.Text, dud.Text, "#A5");
+
+			dud.Items [3] = itemD;
+			Assert.AreEqual (0, dud.CallStack.Count, "#B1");
+			Assert.AreEqual (0, selected_item_changed, "#B2");
+			Assert.AreEqual (0, text_changed, "#B3");
+			Assert.AreEqual (1, dud.SelectedIndex, "#B4");
+			Assert.AreEqual (itemA.Text, dud.Text, "#B5");
+
+			dud.Items [1] = itemE;
+			Assert.AreEqual (3, dud.CallStack.Count, "#C1");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [0], "#C2");
+			Assert.AreEqual ("set_Text:itemE (5)", dud.CallStack [1], "#C3");
+			Assert.AreEqual ("OnChanged", dud.CallStack [2], "#C4");
+			Assert.AreEqual (1, selected_item_changed, "#C5");
+			Assert.AreEqual (1, text_changed, "#C6");
+			Assert.AreEqual (1, dud.SelectedIndex, "#C7");
+			Assert.AreEqual (itemE.Text, dud.Text, "#C8");
+
+			dud.Sorted = true;
+			Assert.AreEqual (8, dud.CallStack.Count, "#D1");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [3], "#D2");
+			Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [4], "#D3");
+			Assert.AreEqual ("OnChanged", dud.CallStack [5], "#D4");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#D5");
+			Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [7], "#D6");
+			Assert.AreEqual (2, selected_item_changed, "#D7");
+			Assert.AreEqual (2, text_changed, "#D8");
+			Assert.AreEqual (1, dud.SelectedIndex, "#D9");
+			Assert.AreEqual (itemC.Text, dud.Text, "#D10");
+			Assert.AreSame (itemB, dud.Items [0], "#D11");
+			Assert.AreSame (itemC, dud.Items [1], "#D12");
+			Assert.AreSame (itemD, dud.Items [2], "#D13");
+			Assert.AreSame (itemE, dud.Items [3], "#D14");
+
+			dud.Items [3] = itemA;
+			Assert.AreEqual (13, dud.CallStack.Count, "#E1");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#E2");
+			Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#E3");
+			Assert.AreEqual ("OnChanged", dud.CallStack [10], "#E4");
+			Assert.AreEqual ("UpdateEditText", dud.CallStack [11], "#E5");
+			Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [12], "#E6");
+			Assert.AreEqual (3, selected_item_changed, "#E7");
+			Assert.AreEqual (3, text_changed, "#E8");
+			Assert.AreEqual (1, dud.SelectedIndex, "#E9");
+			Assert.AreEqual (itemB.Text, dud.Text, "#E10");
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void DomainUpDown_Items_Indexer_Null ()
+		{
+			MockDomainUpDown dud = new MockDomainUpDown ();
+			dud.Items.Add ("itemA");
+			dud.Items.Add ("itemB");
+			dud.Items.Add ("itemC");
+			dud.SelectedIndex = 0;
+
+			// TODO: report as MS bug
+			dud.Items [2] = null;
+			dud.Items [1] = null;
+			try {
+				dud.Items [0] = null;
+				Assert.Fail ();
+			} catch (NullReferenceException ex) {
+				TestHelper.RemoveWarning (ex);
+			}
+		}
+
+		[Test]
+		public void DomainUpDown_Items_Insert ()
+		{
+			// TODO
+		}
+
+		[Test]
+		public void DomainUpDown_Items_Remove ()
+		{
+			// TODO
+		}
+
+		[Test]
+		public void DomainUpDown_Items_RemoveAt ()
+		{
+			// TODO
+		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void DomainUpDown_SelectedIndex_Invalid ()
+		{
+			DomainUpDown dud = new DomainUpDown ();
+			dud.Items.Add ("item1");
+
+			try {
+				dud.SelectedIndex = -2;
+				Assert.Fail ("#A1");
+			} catch (ArgumentOutOfRangeException ex) {
+				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
+				Assert.IsNotNull (ex.Message, "#A3");
+				Assert.IsNotNull (ex.ParamName, "#A4");
+				Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
+				Assert.IsNull (ex.InnerException, "#A6");
+			}
+
+			try {
+				dud.SelectedIndex = 1;
+				Assert.Fail ("#B1");
+			} catch (ArgumentOutOfRangeException ex) {
+				Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
+				Assert.IsNotNull (ex.Message, "#A3");
+				Assert.IsNotNull (ex.ParamName, "#A4");
+				Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
+				Assert.IsNull (ex.InnerException, "#A6");
+			}
+		}
+
+		[Test]
+		public void DomainUpDown_SelectedItem_Null ()
+		{
+			DomainUpDown dud = new DomainUpDown ();
+			dud.Items.Add ("item1");
+			dud.SelectedIndex = 0;
+			Assert.AreEqual (0, dud.SelectedIndex, "#A1");
+			Assert.IsNotNull (dud.SelectedItem, "#A2");
+
+			dud.SelectedItem = null;
+			Assert.AreEqual (-1, dud.SelectedIndex, "#B1");
+			Assert.IsNull (dud.SelectedItem, "#B2");
+		}
+
+		void DomainUpDown_TextChanged (object sender, EventArgs e)
+		{
+			text_changed++;
+		}
+
+		void DomainUpDown_SelectedItemChanged (object sender, EventArgs e)
+		{
+			selected_item_changed++;
+		}
+
+		public class MockDomainUpDown : DomainUpDown
+		{
+			private ArrayList _callStack = new ArrayList ();
+
+			public ArrayList CallStack {
+				get { return _callStack; }
+			}
+
+			public bool user_edit {
+				get {
+					return UserEdit;
+				}
+				set {
+					UserEdit = value;
+				}
+			}
+
+			public bool changing_text {
+				get {
+					return ChangingText;
+				}
+				set {
+					ChangingText = value;
+				}
+			}
+
+			public void Reset ()
+			{
+				_callStack.Clear ();
+			}
+
+			public override string Text {
+				get {
+					return base.Text;
+				}
+				set {
+					if (value == null)
+						_callStack.Add ("set_Text:null");
+					else
+						_callStack.Add ("set_Text:" + value + " (" + value.Length + ")");
+					base.Text = value;
+				}
+			}
+
+			protected override void OnChanged (object source, EventArgs e)
+			{
+				_callStack.Add ("OnChanged");
+				base.OnChanged (source, e);
+			}
+
+			protected override void UpdateEditText ()
+			{
+				_callStack.Add ("UpdateEditText");
+				base.UpdateEditText ();
+			}
+
+			protected override void ValidateEditText ()
+			{
+				_callStack.Add ("ValidateEditText");
+				base.ValidateEditText ();
+			}
+		}
+
+		private int selected_item_changed = 0;
+		private int text_changed = 0;
+		private int value_changed = 0;
+
+		public class MockItem
+		{
+			public MockItem (string text)
+			{
+				_text = text;
+			}
+
+			public string Text {
+				get { return _text; }
+			}
+
+			public override string ToString ()
+			{
+				return _text;
+			}
+
+			private readonly string _text;
+		}
+		
+		[Test]
+		public void Defaults ()
+		{
+			UpDownBase udb = new MockUpDown ();
+			
+			Assert.AreEqual (new Size (0, 0), udb.MaximumSize, "A1");
+			Assert.AreEqual (new Size (0, 0), udb.MinimumSize, "A2");
+			
+			udb.MaximumSize = new Size (100, 100);
+			udb.MinimumSize = new Size (100, 100);
+
+			Assert.AreEqual (new Size (100, 0), udb.MaximumSize, "A3");
+			Assert.AreEqual (new Size (100, 0), udb.MinimumSize, "A4");
+		}
+		
+		private class MockUpDown : UpDownBase
+		{
+			public MockUpDown () : base ()
+			{
+			}
+
+			public override void DownButton ()
+			{
+				throw new Exception ("The method or operation is not implemented.");
+			}
+
+			public override void UpButton ()
+			{
+				throw new Exception ("The method or operation is not implemented.");
+			}
+
+			protected override void UpdateEditText ()
+			{
+				throw new Exception ("The method or operation is not implemented.");
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/VScrollPropertiesTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.Windows.Forms/Test/System.Windows.Forms/VScrollPropertiesTest.cs
@@ -1,125 +1,125 @@
-//
-// VScrollPropertiesTest.cs
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2007 Jonathan Pobst
-//
-// Authors:
-//	Jonathan Pobst (monkey@jpobst.com)
-//
-
-using System;
-using NUnit.Framework;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace MonoTests.System.Windows.Forms
-{
-	[TestFixture]
-	public class VScrollPropertiesTests : TestHelper
-	{
-		[Test]
-		public void Constructor ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-
-			Assert.AreEqual (true, sp.Enabled, "A1");
-			Assert.AreEqual (10, sp.LargeChange, "A2");
-			Assert.AreEqual (100, sp.Maximum, "A3");
-			Assert.AreEqual (0, sp.Minimum, "A4");
-			Assert.AreEqual (1, sp.SmallChange, "A5");
-			Assert.AreEqual (0, sp.Value, "A6");
-			Assert.AreEqual (false, sp.Visible, "A7");
-		}
-
-		[Test]
-		public void PropertyEnabled ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-
-			sp.Enabled = false;
-			Assert.AreEqual (false, sp.Enabled, "B1");
-		}
-
-		[Test]
-		public void PropertyLargeChange ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-
-			sp.LargeChange = 25;
-			Assert.AreEqual (25, sp.LargeChange, "B1");
-		}
-
-		[Test]
-		public void PropertyMaximum ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-
-			sp.Maximum = 200;
-			Assert.AreEqual (200, sp.Maximum, "B1");
-		}
-
-		[Test]
-		public void PropertyMinimum ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-
-			sp.Minimum = 20;
-			Assert.AreEqual (20, sp.Minimum, "B1");
-		}
-
-		[Test]
-		public void PropertySmallChange ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-
-			sp.SmallChange = 5;
-			Assert.AreEqual (5, sp.SmallChange, "B1");
-		}
-
-		[Test]
-		public void PropertyValue ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-			
-			sp.Value = 10;
-			Assert.AreEqual (10, sp.Value, "B1");
-		}
-
-		[Test]
-		public void PropertyVisible ()
-		{
-			ScrollableControl sc = new ScrollableControl ();
-			ScrollProperties sp = sc.VerticalScroll;
-
-			sp.Visible = true;
-			Assert.AreEqual (true, sp.Visible, "B1");
-		}
-
-	}
-}
+//
+// VScrollPropertiesTest.cs
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2007 Jonathan Pobst
+//
+// Authors:
+//	Jonathan Pobst (monkey@jpobst.com)
+//
+
+using System;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MonoTests.System.Windows.Forms
+{
+	[TestFixture]
+	public class VScrollPropertiesTests : TestHelper
+	{
+		[Test]
+		public void Constructor ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+
+			Assert.AreEqual (true, sp.Enabled, "A1");
+			Assert.AreEqual (10, sp.LargeChange, "A2");
+			Assert.AreEqual (100, sp.Maximum, "A3");
+			Assert.AreEqual (0, sp.Minimum, "A4");
+			Assert.AreEqual (1, sp.SmallChange, "A5");
+			Assert.AreEqual (0, sp.Value, "A6");
+			Assert.AreEqual (false, sp.Visible, "A7");
+		}
+
+		[Test]
+		public void PropertyEnabled ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+
+			sp.Enabled = false;
+			Assert.AreEqual (false, sp.Enabled, "B1");
+		}
+
+		[Test]
+		public void PropertyLargeChange ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+
+			sp.LargeChange = 25;
+			Assert.AreEqual (25, sp.LargeChange, "B1");
+		}
+
+		[Test]
+		public void PropertyMaximum ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+
+			sp.Maximum = 200;
+			Assert.AreEqual (200, sp.Maximum, "B1");
+		}
+
+		[Test]
+		public void PropertyMinimum ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+
+			sp.Minimum = 20;
+			Assert.AreEqual (20, sp.Minimum, "B1");
+		}
+
+		[Test]
+		public void PropertySmallChange ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+
+			sp.SmallChange = 5;
+			Assert.AreEqual (5, sp.SmallChange, "B1");
+		}
+
+		[Test]
+		public void PropertyValue ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+			
+			sp.Value = 10;
+			Assert.AreEqual (10, sp.Value, "B1");
+		}
+
+		[Test]
+		public void PropertyVisible ()
+		{
+			ScrollableControl sc = new ScrollableControl ();
+			ScrollProperties sp = sc.VerticalScroll;
+
+			sp.Visible = true;
+			Assert.AreEqual (true, sp.Visible, "B1");
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Documentation/System.Xml.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Documentation/System.Xml.xml
@@ -1,5173 +1,5173 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System.Xml">
-    <class name="XPathNavigator" namespace="System.Xml.XPath">
-        <constructor name="XPathNavigator" argnames="" />
-        <property name="NodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="IsEmptyElement" propertytype="System.Boolean" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="HasAttributes" propertytype="System.Boolean" />
-        <property name="HasChildren" propertytype="System.Boolean" />
-        <property name="IndexInParent" propertytype="System.Int32" />
-        <method name="IsDescendant(System.Xml.XPath.XPathNavigator)" argnames="nav" returntype="System.Boolean" />
-        <method name="ComparePosition(System.Xml.XPath.XPathNavigator)" argnames="nav" returntype="System.Xml.XmlNodeOrder" />
-        <method name="SelectAncestors(System.String, System.String, System.Boolean)" argnames="name, namespaceURI, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="SelectAncestors(System.Xml.XPath.XPathNodeType, System.Boolean)" argnames="type, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="SelectDescendants(System.String, System.String, System.Boolean)" argnames="name, namespaceURI, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="SelectDescendants(System.Xml.XPath.XPathNodeType, System.Boolean)" argnames="type, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="SelectChildren(System.String, System.String)" argnames="name, namespaceURI" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="SelectChildren(System.Xml.XPath.XPathNodeType)" argnames="type" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="Select(System.String)" argnames="xpath" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="Select(System.Xml.XPath.XPathExpression)" argnames="expr" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="Matches(System.String)" argnames="xpath" returntype="System.Boolean" />
-        <method name="Matches(System.Xml.XPath.XPathExpression)" argnames="expr" returntype="System.Boolean" />
-        <method name="Evaluate(System.String)" argnames="xpath" returntype="System.Object" />
-        <method name="Evaluate(System.Xml.XPath.XPathExpression, System.Xml.XPath.XPathNodeIterator)" argnames="expr, context" returntype="System.Object" />
-        <method name="Evaluate(System.Xml.XPath.XPathExpression)" argnames="expr" returntype="System.Object" />
-        <method name="Compile(System.String)" argnames="xpath" returntype="System.Xml.XPath.XPathExpression" />
-        <method name="IsSamePosition(System.Xml.XPath.XPathNavigator)" argnames="other" returntype="System.Boolean" />
-        <method name="MoveToId(System.String)" argnames="id" returntype="System.Boolean" />
-        <method name="MoveTo(System.Xml.XPath.XPathNavigator)" argnames="other" returntype="System.Boolean" />
-        <method name="MoveToRoot" argnames="" returntype="System.Void" />
-        <method name="MoveToParent" argnames="" returntype="System.Boolean" />
-        <method name="MoveToFirstChild" argnames="" returntype="System.Boolean" />
-        <method name="MoveToFirst" argnames="" returntype="System.Boolean" />
-        <method name="MoveToPrevious" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNext" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNextNamespace(System.Xml.XPath.XPathNamespaceScope)" argnames="namespaceScope" returntype="System.Boolean" />
-        <method name="MoveToFirstNamespace(System.Xml.XPath.XPathNamespaceScope)" argnames="namespaceScope" returntype="System.Boolean" />
-        <method name="MoveToNamespace(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="GetNamespace(System.String)" argnames="name" returntype="System.String" />
-        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
-        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
-        <method name="Clone" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="MoveToFirstNamespace" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNextNamespace" argnames="" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XPathNodeIterator" namespace="System.Xml.XPath">
-        <constructor name="XPathNodeIterator" argnames="" />
-        <property name="Current" propertytype="System.Xml.XPath.XPathNavigator" />
-        <property name="CurrentPosition" propertytype="System.Int32" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="MoveNext" argnames="" returntype="System.Boolean" />
-        <method name="Clone" argnames="" returntype="System.Xml.XPath.XPathNodeIterator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XPathExpression" namespace="System.Xml.XPath">
-        <property name="Expression" propertytype="System.String" />
-        <property name="ReturnType" propertytype="System.Xml.XPath.XPathResultType" />
-        <method name="SetContext(System.Xml.XmlNamespaceManager)" argnames="nsManager" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Xml.XPath.XPathExpression" />
-        <method name="AddSort(System.Object, System.Xml.XPath.XmlSortOrder, System.Xml.XPath.XmlCaseOrder, System.String, System.Xml.XPath.XmlDataType)" argnames="expr, order, caseOrder, lang, dataType" returntype="System.Void" />
-        <method name="AddSort(System.Object, System.Collections.IComparer)" argnames="expr, comparer" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XPathDocument" namespace="System.Xml.XPath">
-        <constructor name="XPathDocument(System.Xml.XmlReader, System.Xml.XmlSpace)" argnames="reader, space" />
-        <constructor name="XPathDocument(System.Xml.XmlReader)" argnames="reader" />
-        <constructor name="XPathDocument(System.IO.TextReader)" argnames="reader" />
-        <constructor name="XPathDocument(System.IO.Stream)" argnames="stream" />
-        <constructor name="XPathDocument(System.String)" argnames="uri" />
-        <constructor name="XPathDocument(System.String, System.Xml.XmlSpace)" argnames="uri, space" />
-        <method name="CreateNavigator" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XPathException" namespace="System.Xml.XPath">
-        <constructor name="XPathException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="XPathException(System.String, System.Exception)" argnames="message, innerException" />
-        <property name="Message" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IXPathNavigable" namespace="System.Xml.XPath">
-        <method name="CreateNavigator" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
-    </interface>
-    <enum name="XmlSortOrder" namespace="System.Xml.XPath">
-        <field name="Ascending" />
-        <field name="Descending" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlCaseOrder" namespace="System.Xml.XPath">
-        <field name="None" />
-        <field name="UpperFirst" />
-        <field name="LowerFirst" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlDataType" namespace="System.Xml.XPath">
-        <field name="Text" />
-        <field name="Number" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XPathResultType" namespace="System.Xml.XPath">
-        <field name="Number" />
-        <field name="String" />
-        <field name="Boolean" />
-        <field name="NodeSet" />
-        <field name="Navigator" />
-        <field name="Any" />
-        <field name="Error" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XPathNamespaceScope" namespace="System.Xml.XPath">
-        <field name="All" />
-        <field name="ExcludeXml" />
-        <field name="Local" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XPathNodeType" namespace="System.Xml.XPath">
-        <field name="Root" />
-        <field name="Element" />
-        <field name="Attribute" />
-        <field name="Namespace" />
-        <field name="Text" />
-        <field name="SignificantWhitespace" />
-        <field name="Whitespace" />
-        <field name="ProcessingInstruction" />
-        <field name="Comment" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LexKind" namespace="System.Xml.XPath">
-        <field name="Comma" />
-        <field name="Slash" />
-        <field name="At" />
-        <field name="Dot" />
-        <field name="LParens" />
-        <field name="RParens" />
-        <field name="LBracket" />
-        <field name="RBracket" />
-        <field name="Star" />
-        <field name="Plus" />
-        <field name="Minus" />
-        <field name="Eq" />
-        <field name="Lt" />
-        <field name="Gt" />
-        <field name="Bang" />
-        <field name="Dollar" />
-        <field name="Apos" />
-        <field name="Quote" />
-        <field name="Union" />
-        <field name="Ne" />
-        <field name="Le" />
-        <field name="Ge" />
-        <field name="And" />
-        <field name="Or" />
-        <field name="DotDot" />
-        <field name="SlashSlash" />
-        <field name="Name" />
-        <field name="String" />
-        <field name="Number" />
-        <field name="Axe" />
-        <field name="Eof" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="XmlNameTable" namespace="System.Xml">
-        <constructor name="XmlNameTable" argnames="" />
-        <method name="Add(System.String)" argnames="array" returntype="System.String" />
-        <method name="Add(System.Char[], System.Int32, System.Int32)" argnames="array, offset, length" returntype="System.String" />
-        <method name="Get(System.String)" argnames="array" returntype="System.String" />
-        <method name="Get(System.Char[], System.Int32, System.Int32)" argnames="array, offset, length" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NameTable" namespace="System.Xml">
-        <constructor name="NameTable" argnames="" />
-        <method name="Add(System.String)" argnames="key" returntype="System.String" />
-        <method name="Add(System.Char[], System.Int32, System.Int32)" argnames="key, start, len" returntype="System.String" />
-        <method name="Get(System.String)" argnames="value" returntype="System.String" />
-        <method name="Get(System.Char[], System.Int32, System.Int32)" argnames="key, start, len" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNode" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="NullNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" propertytype="System.Xml.XmlNode" />
-        <property name="IsContainer" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
-        <property name="HasChildNodes" propertytype="System.Boolean" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="InnerText" propertytype="System.String" />
-        <property name="OuterXml" propertytype="System.String" />
-        <property name="InnerXml" propertytype="System.String" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="Document" propertytype="System.Xml.XmlDocument" />
-        <property name="Item" propertytype="System.Xml.XmlElement" />
-        <property name="Item" propertytype="System.Xml.XmlElement" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="XPLocalName" propertytype="System.String" />
-        <method name="CreateNavigator" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" returntype="System.String" />
-        <method name="RemoveAll" argnames="" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAttribute" namespace="System.Xml">
-        <property name="XmlName" propertytype="System.Xml.XmlName" />
-        <property name="ParentNode" propertytype="System.Xml.XmlNode" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
-        <property name="Value" propertytype="System.String" />
-        <property name="InnerText" propertytype="System.String" />
-        <property name="IsContainer" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
-        <property name="Specified" propertytype="System.Boolean" />
-        <property name="OwnerElement" propertytype="System.Xml.XmlElement" />
-        <property name="InnerXml" propertytype="System.String" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="XPLocalName" propertytype="System.String" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNamedNodeMap" namespace="System.Xml">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Nodes" propertytype="System.Collections.ArrayList" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveNamedItem(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNode" />
-        <method name="GetNamedItem(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNode" />
-        <method name="Item(System.Int32)" argnames="index" returntype="System.Xml.XmlNode" />
-        <method name="RemoveNamedItem(System.String)" argnames="name" returntype="System.Xml.XmlNode" />
-        <method name="SetNamedItem(System.Xml.XmlNode)" argnames="node" returntype="System.Xml.XmlNode" />
-        <method name="GetNamedItem(System.String)" argnames="name" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAttributeCollection" namespace="System.Xml">
-        <property name="ItemOf" propertytype="System.Xml.XmlAttribute" />
-        <property name="ItemOf" propertytype="System.Xml.XmlAttribute" />
-        <property name="ItemOf" propertytype="System.Xml.XmlAttribute" />
-        <property name="Count" inherited="System.Xml.XmlNamedNodeMap" propertytype="System.Int32" />
-        <method name="RemoveAll" argnames="" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="i" returntype="System.Xml.XmlAttribute" />
-        <method name="Remove(System.Xml.XmlAttribute)" argnames="node" returntype="System.Xml.XmlAttribute" />
-        <method name="InsertAfter(System.Xml.XmlAttribute, System.Xml.XmlAttribute)" argnames="newNode, refNode" returntype="System.Xml.XmlAttribute" />
-        <method name="InsertBefore(System.Xml.XmlAttribute, System.Xml.XmlAttribute)" argnames="newNode, refNode" returntype="System.Xml.XmlAttribute" />
-        <method name="Append(System.Xml.XmlAttribute)" argnames="node" returntype="System.Xml.XmlAttribute" />
-        <method name="Prepend(System.Xml.XmlAttribute)" argnames="node" returntype="System.Xml.XmlAttribute" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveNamedItem(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
-        <method name="GetNamedItem(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
-        <method name="Item(System.Int32)" argnames="index" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
-        <method name="RemoveNamedItem(System.String)" argnames="name" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
-        <method name="SetNamedItem(System.Xml.XmlNode)" argnames="node" returntype="System.Xml.XmlNode" />
-        <method name="GetNamedItem(System.String)" argnames="name" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CopyTo(System.Xml.XmlAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlLinkedNode" namespace="System.Xml">
-        <property name="PreviousSibling" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" propertytype="System.Xml.XmlNode" />
-        <property name="Name" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="NodeType" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeType" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="LocalName" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlCharacterData" namespace="System.Xml">
-        <property name="Value" propertytype="System.String" />
-        <property name="InnerText" propertytype="System.String" />
-        <property name="Data" propertytype="System.String" />
-        <property name="Length" propertytype="System.Int32" />
-        <property name="Builder" propertytype="System.Text.StringBuilder" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="Name" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="NodeType" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeType" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="LocalName" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" returntype="System.Void" />
-        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" returntype="System.Void" />
-        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" returntype="System.Void" />
-        <method name="AppendData(System.String)" argnames="strData" returntype="System.Void" />
-        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" returntype="System.String" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlCDataSection" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="Value" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNodeList" namespace="System.Xml">
-        <constructor name="XmlNodeList" argnames="" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="ItemOf" propertytype="System.Xml.XmlNode" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Item(System.Int32)" argnames="index" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlComment" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="Value" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlConvert" namespace="System.Xml">
-        <constructor name="XmlConvert" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EncodeName(System.String)" argnames="name" returntype="System.String" />
-        <method name="EncodeNmToken(System.String)" argnames="name" returntype="System.String" />
-        <method name="EncodeLocalName(System.String)" argnames="name" returntype="System.String" />
-        <method name="DecodeName(System.String)" argnames="name" returntype="System.String" />
-        <method name="VerifyName(System.String)" argnames="name" returntype="System.String" />
-        <method name="VerifyNCName(System.String)" argnames="name" returntype="System.String" />
-        <method name="ToString(System.Boolean)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Char)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Decimal)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.SByte)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Int16)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Int32)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Int64)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Byte)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.UInt16)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.UInt32)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.UInt64)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Single)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Double)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.TimeSpan)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.DateTime)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.DateTime, System.String)" argnames="value, format" returntype="System.String" />
-        <method name="ToString(System.Guid)" argnames="value" returntype="System.String" />
-        <method name="ToBoolean(System.String)" argnames="s" returntype="System.Boolean" />
-        <method name="ToChar(System.String)" argnames="s" returntype="System.Char" />
-        <method name="ToDecimal(System.String)" argnames="s" returntype="System.Decimal" />
-        <method name="ToSByte(System.String)" argnames="s" returntype="System.SByte" />
-        <method name="ToInt16(System.String)" argnames="s" returntype="System.Int16" />
-        <method name="ToInt32(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="ToInt64(System.String)" argnames="s" returntype="System.Int64" />
-        <method name="ToByte(System.String)" argnames="s" returntype="System.Byte" />
-        <method name="ToUInt16(System.String)" argnames="s" returntype="System.UInt16" />
-        <method name="ToUInt32(System.String)" argnames="s" returntype="System.UInt32" />
-        <method name="ToUInt64(System.String)" argnames="s" returntype="System.UInt64" />
-        <method name="ToSingle(System.String)" argnames="s" returntype="System.Single" />
-        <method name="ToDouble(System.String)" argnames="s" returntype="System.Double" />
-        <method name="ToTimeSpan(System.String)" argnames="s" returntype="System.TimeSpan" />
-        <method name="ToDateTime(System.String)" argnames="s" returntype="System.DateTime" />
-        <method name="ToDateTime(System.String, System.String)" argnames="s, format" returntype="System.DateTime" />
-        <method name="ToDateTime(System.String, System.String[])" argnames="s, formats" returntype="System.DateTime" />
-        <method name="ToGuid(System.String)" argnames="s" returntype="System.Guid" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlDeclaration" namespace="System.Xml">
-        <property name="Version" propertytype="System.String" />
-        <property name="Encoding" propertytype="System.String" />
-        <property name="Standalone" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <property name="InnerText" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlDocument" namespace="System.Xml">
-        <constructor name="XmlDocument" argnames="" />
-        <constructor name="XmlDocument(System.Xml.XmlNameTable)" argnames="nt" />
-        <property name="SchemaInformation" propertytype="System.Xml.Schema.SchemaInfo" />
-        <property name="NullNode" propertytype="System.Xml.XmlNode" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="DocumentType" propertytype="System.Xml.XmlDocumentType" />
-        <property name="Declaration" propertytype="System.Xml.XmlDeclaration" />
-        <property name="Implementation" propertytype="System.Xml.XmlImplementation" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="DocumentElement" propertytype="System.Xml.XmlElement" />
-        <property name="IsContainer" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
-        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
-        <property name="HasSetResolver" propertytype="System.Boolean" />
-        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="PreserveWhitespace" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Entities" propertytype="System.Xml.XmlNamedNodeMap" />
-        <property name="IsLoading" propertytype="System.Boolean" />
-        <property name="ActualLoadingStatus" propertytype="System.Boolean" />
-        <property name="TextEncoding" propertytype="System.Text.Encoding" />
-        <property name="InnerXml" propertytype="System.String" />
-        <property name="Version" propertytype="System.String" />
-        <property name="Encoding" propertytype="System.String" />
-        <property name="Standalone" propertytype="System.String" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="Save(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Save(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
-        <method name="Save(System.IO.Stream)" argnames="outStream" returntype="System.Void" />
-        <method name="Save(System.String)" argnames="filename" returntype="System.Void" />
-        <method name="LoadXml(System.String)" argnames="xml" returntype="System.Void" />
-        <method name="Load(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
-        <method name="Load(System.IO.TextReader)" argnames="txtReader" returntype="System.Void" />
-        <method name="Load(System.IO.Stream)" argnames="inStream" returntype="System.Void" />
-        <method name="Load(System.String)" argnames="filename" returntype="System.Void" />
-        <method name="ReadNode(System.Xml.XmlReader)" argnames="reader" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String)" argnames="type, name, namespaceURI" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.String, System.String, System.String)" argnames="nodeTypeString, name, namespaceURI" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String, System.String)" argnames="type, prefix, name, namespaceURI" returntype="System.Xml.XmlNode" />
-        <method name="CreateElement(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" returntype="System.Xml.XmlElement" />
-        <method name="CreateAttribute(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
-        <method name="ImportNode(System.Xml.XmlNode, System.Boolean)" argnames="node, deep" returntype="System.Xml.XmlNode" />
-        <method name="GetElementById(System.String)" argnames="elementId" returntype="System.Xml.XmlElement" />
-        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNodeList" />
-        <method name="GetElementsByTagName(System.String)" argnames="name" returntype="System.Xml.XmlNodeList" />
-        <method name="CreateWhitespace(System.String)" argnames="text" returntype="System.Xml.XmlWhitespace" />
-        <method name="CreateSignificantWhitespace(System.String)" argnames="text" returntype="System.Xml.XmlSignificantWhitespace" />
-        <method name="CreateTextNode(System.String)" argnames="text" returntype="System.Xml.XmlText" />
-        <method name="CreateXmlDeclaration(System.String, System.String, System.String)" argnames="version, encoding, standalone" returntype="System.Xml.XmlDeclaration" />
-        <method name="CreateProcessingInstruction(System.String, System.String)" argnames="target, data" returntype="System.Xml.XmlProcessingInstruction" />
-        <method name="CreateEntityReference(System.String)" argnames="name" returntype="System.Xml.XmlEntityReference" />
-        <method name="CreateDocumentFragment" argnames="" returntype="System.Xml.XmlDocumentFragment" />
-        <method name="CreateDocumentType(System.String, System.String, System.String, System.String)" argnames="name, publicId, systemId, internalSubset" returntype="System.Xml.XmlDocumentType" />
-        <method name="CreateComment(System.String)" argnames="data" returntype="System.Xml.XmlComment" />
-        <method name="CreateCDataSection(System.String)" argnames="data" returntype="System.Xml.XmlCDataSection" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="xw" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateAttribute(System.String)" argnames="name" returntype="System.Xml.XmlAttribute" />
-        <method name="CreateElement(System.String)" argnames="name" returntype="System.Xml.XmlElement" />
-        <method name="CreateAttribute(System.String, System.String)" argnames="qualifiedName, namespaceURI" returntype="System.Xml.XmlAttribute" />
-        <method name="CreateElement(System.String, System.String)" argnames="qualifiedName, namespaceURI" returntype="System.Xml.XmlElement" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="NodeInserting" />
-        <event name="NodeInserted" />
-        <event name="NodeRemoving" />
-        <event name="NodeRemoved" />
-        <event name="NodeChanging" />
-        <event name="NodeChanged" />
-    </class>
-    <class name="XmlDocumentFragment" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="ParentNode" propertytype="System.Xml.XmlNode" />
-        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
-        <property name="InnerXml" propertytype="System.String" />
-        <property name="IsContainer" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlDocumentType" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Entities" propertytype="System.Xml.XmlNamedNodeMap" />
-        <property name="Notations" propertytype="System.Xml.XmlNamedNodeMap" />
-        <property name="PublicId" propertytype="System.String" />
-        <property name="SystemId" propertytype="System.String" />
-        <property name="InternalSubset" propertytype="System.String" />
-        <property name="ParseWithNamespaces" propertytype="System.Boolean" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlWriter" namespace="System.Xml">
-        <constructor name="XmlWriter" argnames="" />
-        <property name="WriteState" propertytype="System.Xml.WriteState" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <method name="WriteNode(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" returntype="System.Void" />
-        <method name="WriteAttributes(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" returntype="System.Void" />
-        <method name="WriteQualifiedName(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
-        <method name="WriteName(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteNmToken(System.String)" argnames="name" returntype="System.Void" />
-        <method name="LookupPrefix(System.String)" argnames="ns" returntype="System.String" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="WriteBinHex(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteBase64(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteRaw(System.String)" argnames="data" returntype="System.Void" />
-        <method name="WriteRaw(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteChars(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteSurrogateCharEntity(System.Char, System.Char)" argnames="lowChar, highChar" returntype="System.Void" />
-        <method name="WriteString(System.String)" argnames="text" returntype="System.Void" />
-        <method name="WriteWhitespace(System.String)" argnames="ws" returntype="System.Void" />
-        <method name="WriteCharEntity(System.Char)" argnames="ch" returntype="System.Void" />
-        <method name="WriteEntityRef(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteProcessingInstruction(System.String, System.String)" argnames="name, text" returntype="System.Void" />
-        <method name="WriteComment(System.String)" argnames="text" returntype="System.Void" />
-        <method name="WriteCData(System.String)" argnames="text" returntype="System.Void" />
-        <method name="WriteEndAttribute" argnames="" returntype="System.Void" />
-        <method name="WriteStartAttribute(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
-        <method name="WriteFullEndElement" argnames="" returntype="System.Void" />
-        <method name="WriteEndElement" argnames="" returntype="System.Void" />
-        <method name="WriteStartElement(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
-        <method name="WriteDocType(System.String, System.String, System.String, System.String)" argnames="name, pubid, sysid, subset" returntype="System.Void" />
-        <method name="WriteEndDocument" argnames="" returntype="System.Void" />
-        <method name="WriteStartDocument(System.Boolean)" argnames="standalone" returntype="System.Void" />
-        <method name="WriteStartDocument" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="WriteStartElement(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
-        <method name="WriteStartElement(System.String)" argnames="localName" returntype="System.Void" />
-        <method name="WriteAttributeString(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="WriteAttributeString(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteAttributeString(System.String, System.String, System.String, System.String)" argnames="prefix, localName, ns, value" returntype="System.Void" />
-        <method name="WriteStartAttribute(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlTextWriter" namespace="System.Xml">
-        <constructor name="XmlTextWriter(System.IO.Stream, System.Text.Encoding)" argnames="w, encoding" />
-        <constructor name="XmlTextWriter(System.String, System.Text.Encoding)" argnames="filename, encoding" />
-        <constructor name="XmlTextWriter(System.IO.TextWriter)" argnames="w" />
-        <property name="BaseStream" propertytype="System.IO.Stream" />
-        <property name="Namespaces" propertytype="System.Boolean" />
-        <property name="Formatting" propertytype="System.Xml.Formatting" />
-        <property name="Indentation" propertytype="System.Int32" />
-        <property name="IndentChar" propertytype="System.Char" />
-        <property name="QuoteChar" propertytype="System.Char" />
-        <property name="WriteState" propertytype="System.Xml.WriteState" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <method name="WriteNode(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteAttributes(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteQualifiedName(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
-        <method name="WriteName(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteNmToken(System.String)" argnames="name" returntype="System.Void" />
-        <method name="LookupPrefix(System.String)" argnames="ns" returntype="System.String" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="WriteBinHex(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteBase64(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteRaw(System.String)" argnames="data" returntype="System.Void" />
-        <method name="WriteRaw(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteChars(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteSurrogateCharEntity(System.Char, System.Char)" argnames="lowChar, highChar" returntype="System.Void" />
-        <method name="WriteString(System.String)" argnames="text" returntype="System.Void" />
-        <method name="WriteWhitespace(System.String)" argnames="ws" returntype="System.Void" />
-        <method name="WriteCharEntity(System.Char)" argnames="ch" returntype="System.Void" />
-        <method name="WriteEntityRef(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteProcessingInstruction(System.String, System.String)" argnames="name, text" returntype="System.Void" />
-        <method name="WriteComment(System.String)" argnames="text" returntype="System.Void" />
-        <method name="WriteCData(System.String)" argnames="text" returntype="System.Void" />
-        <method name="WriteEndAttribute" argnames="" returntype="System.Void" />
-        <method name="WriteStartAttribute(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
-        <method name="WriteFullEndElement" argnames="" returntype="System.Void" />
-        <method name="WriteEndElement" argnames="" returntype="System.Void" />
-        <method name="WriteStartElement(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
-        <method name="WriteDocType(System.String, System.String, System.String, System.String)" argnames="name, pubid, sysid, subset" returntype="System.Void" />
-        <method name="WriteEndDocument" argnames="" returntype="System.Void" />
-        <method name="WriteStartDocument(System.Boolean)" argnames="standalone" returntype="System.Void" />
-        <method name="WriteStartDocument" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="WriteStartElement(System.String, System.String)" argnames="localName, ns" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteStartElement(System.String)" argnames="localName" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteAttributeString(System.String, System.String, System.String)" argnames="localName, ns, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteAttributeString(System.String, System.String)" argnames="localName, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteAttributeString(System.String, System.String, System.String, System.String)" argnames="prefix, localName, ns, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteStartAttribute(System.String, System.String)" argnames="localName, ns" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String)" argnames="localName, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String, System.String)" argnames="localName, ns, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlElement" namespace="System.Xml">
-        <property name="XmlName" propertytype="System.Xml.XmlName" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
-        <property name="IsContainer" propertytype="System.Boolean" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
-        <property name="Attributes" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="HasAttributes" propertytype="System.Boolean" />
-        <property name="InnerXml" propertytype="System.String" />
-        <property name="InnerText" propertytype="System.String" />
-        <property name="NextSibling" propertytype="System.Xml.XmlNode" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="XPLocalName" propertytype="System.String" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="RemoveAllAttributes" argnames="" returntype="System.Void" />
-        <method name="RemoveAttributeAt(System.Int32)" argnames="i" returntype="System.Xml.XmlNode" />
-        <method name="HasAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
-        <method name="HasAttribute(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNodeList" />
-        <method name="RemoveAttributeNode(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
-        <method name="SetAttributeNode(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
-        <method name="GetAttributeNode(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
-        <method name="RemoveAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Void" />
-        <method name="SetAttribute(System.String, System.String, System.String)" argnames="localName, namespaceURI, value" returntype="System.String" />
-        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
-        <method name="GetElementsByTagName(System.String)" argnames="name" returntype="System.Xml.XmlNodeList" />
-        <method name="RemoveAttributeNode(System.Xml.XmlAttribute)" argnames="oldAttr" returntype="System.Xml.XmlAttribute" />
-        <method name="SetAttributeNode(System.Xml.XmlAttribute)" argnames="newAttr" returntype="System.Xml.XmlAttribute" />
-        <method name="GetAttributeNode(System.String)" argnames="name" returntype="System.Xml.XmlAttribute" />
-        <method name="RemoveAttribute(System.String)" argnames="name" returntype="System.Void" />
-        <method name="SetAttribute(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlEntity" namespace="System.Xml">
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="InnerText" propertytype="System.String" />
-        <property name="IsContainer" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="PublicId" propertytype="System.String" />
-        <property name="SystemId" propertytype="System.String" />
-        <property name="NotationName" propertytype="System.String" />
-        <property name="OuterXml" propertytype="System.String" />
-        <property name="InnerXml" propertytype="System.String" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlReader" namespace="System.Xml">
-        <constructor name="XmlReader" argnames="" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="HasValue" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="IsEmptyElement" propertytype="System.Boolean" />
-        <property name="IsDefault" propertytype="System.Boolean" />
-        <property name="QuoteChar" propertytype="System.Char" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="AttributeCount" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="CanResolveEntity" propertytype="System.Boolean" />
-        <property name="EOF" propertytype="System.Boolean" />
-        <property name="ReadState" propertytype="System.Xml.ReadState" />
-        <property name="HasAttributes" propertytype="System.Boolean" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
-        <property name="StandAlone" propertytype="System.Boolean" />
-        <property name="SchemaTypeObject" propertytype="System.Object" />
-        <property name="TypedValueObject" propertytype="System.Object" />
-        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
-        <method name="ResolveEntity" argnames="" returntype="System.Void" />
-        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
-        <method name="ReadOuterXml" argnames="" returntype="System.String" />
-        <method name="ReadInnerXml" argnames="" returntype="System.String" />
-        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" returntype="System.Boolean" />
-        <method name="IsStartElement(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="IsStartElement" argnames="" returntype="System.Boolean" />
-        <method name="ReadEndElement" argnames="" returntype="System.Void" />
-        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" returntype="System.String" />
-        <method name="ReadElementString(System.String)" argnames="name" returntype="System.String" />
-        <method name="ReadElementString" argnames="" returntype="System.String" />
-        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" returntype="System.Void" />
-        <method name="ReadStartElement(System.String)" argnames="name" returntype="System.Void" />
-        <method name="ReadStartElement" argnames="" returntype="System.Void" />
-        <method name="MoveToContent" argnames="" returntype="System.Xml.XmlNodeType" />
-        <method name="ReadString" argnames="" returntype="System.String" />
-        <method name="Skip" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Read" argnames="" returntype="System.Boolean" />
-        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
-        <method name="MoveToAttribute(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetAttribute(System.String, System.String)" argnames="name, namespaceURI" returntype="System.String" />
-        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IsName(System.String)" argnames="str" returntype="System.Boolean" />
-        <method name="IsNameToken(System.String)" argnames="str" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlTextReader" namespace="System.Xml">
-        <constructor name="XmlTextReader" argnames="" />
-        <constructor name="XmlTextReader(System.Xml.XmlNameTable)" argnames="nt" />
-        <constructor name="XmlTextReader(System.IO.Stream)" argnames="input" />
-        <constructor name="XmlTextReader(System.String, System.IO.Stream)" argnames="url, input" />
-        <constructor name="XmlTextReader(System.IO.Stream, System.Xml.XmlNameTable)" argnames="input, nt" />
-        <constructor name="XmlTextReader(System.String, System.IO.Stream, System.Xml.XmlNameTable)" argnames="url, input, nt" />
-        <constructor name="XmlTextReader(System.IO.TextReader)" argnames="input" />
-        <constructor name="XmlTextReader(System.String, System.IO.TextReader)" argnames="url, input" />
-        <constructor name="XmlTextReader(System.IO.TextReader, System.Xml.XmlNameTable)" argnames="input, nt" />
-        <constructor name="XmlTextReader(System.String, System.IO.TextReader, System.Xml.XmlNameTable)" argnames="url, input, nt" />
-        <constructor name="XmlTextReader(System.IO.Stream, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
-        <constructor name="XmlTextReader(System.String, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
-        <constructor name="XmlTextReader(System.String)" argnames="url" />
-        <constructor name="XmlTextReader(System.String, System.Xml.XmlNameTable)" argnames="url, nt" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="HasValue" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="IsEmptyElement" propertytype="System.Boolean" />
-        <property name="IsDefault" propertytype="System.Boolean" />
-        <property name="QuoteChar" propertytype="System.Char" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="AttributeCount" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="EOF" propertytype="System.Boolean" />
-        <property name="ReadState" propertytype="System.Xml.ReadState" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="Namespaces" propertytype="System.Boolean" />
-        <property name="Normalization" propertytype="System.Boolean" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <property name="WhitespaceHandling" propertytype="System.Xml.WhitespaceHandling" />
-        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
-        <property name="StandAlone" propertytype="System.Boolean" />
-        <property name="IsAttrText" propertytype="System.Boolean" />
-        <property name="RawValue" propertytype="System.String" />
-        <property name="DTD" propertytype="System.Xml.Schema.DtdParser" />
-        <property name="ValueContainEntity" propertytype="System.Xml.ValueContainEntity" />
-        <property name="IsXmlNsAttribute" propertytype="System.Boolean" />
-        <property name="AttributeValue" propertytype="System.String" />
-        <property name="SchemaTypeObject" propertytype="System.Object" />
-        <property name="TypedValueObject" propertytype="System.Object" />
-        <property name="PartialContentNodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="IsReadingAttributeValue" propertytype="System.Boolean" />
-        <property name="CheckWhitespaceNodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="CanResolveEntity" inherited="System.Xml.XmlReader" propertytype="System.Boolean" />
-        <property name="HasAttributes" inherited="System.Xml.XmlReader" propertytype="System.Boolean" />
-        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
-        <method name="ResolveEntity" argnames="" returntype="System.Void" />
-        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
-        <method name="ReadOuterXml" argnames="" returntype="System.String" />
-        <method name="ReadInnerXml" argnames="" returntype="System.String" />
-        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="IsStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="IsStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="ReadEndElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadElementString(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadElementString" argnames="" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="MoveToContent" argnames="" inherited="System.Xml.XmlReader" returntype="System.Xml.XmlNodeType" />
-        <method name="ReadString" argnames="" returntype="System.String" />
-        <method name="Skip" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Read" argnames="" returntype="System.Boolean" />
-        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
-        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
-        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ResetState" argnames="" returntype="System.Void" />
-        <method name="GetRemainder" argnames="" returntype="System.IO.TextReader" />
-        <method name="ReadChars(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
-        <method name="ReadBase64(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, len" returntype="System.Int32" />
-        <method name="ReadBinHex(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, len" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlEntityReference" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsContainer" propertytype="System.Boolean" />
-        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="ChildBaseURI" propertytype="System.String" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlException" namespace="System.Xml">
-        <constructor name="XmlException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="XmlException(System.String, System.Exception)" argnames="message, innerException" />
-        <property name="Message" propertytype="System.String" />
-        <property name="ErrorCode" propertytype="System.String" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <property name="msg" propertytype="System.String[]" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlImplementation" namespace="System.Xml">
-        <constructor name="XmlImplementation" argnames="" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <method name="CreateDocument" argnames="" returntype="System.Xml.XmlDocument" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="HasFeature(System.String, System.String)" argnames="strFeature, strVersion" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNamespaceManager" namespace="System.Xml">
-        <constructor name="XmlNamespaceManager(System.Xml.XmlNameTable)" argnames="nameTable" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="DefaultNamespace" propertytype="System.String" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="HasNamespace(System.String)" argnames="prefix" returntype="System.Boolean" />
-        <method name="LookupPrefix(System.String)" argnames="uri" returntype="System.String" />
-        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
-        <method name="RemoveNamespace(System.String, System.String)" argnames="prefix, uri" returntype="System.Void" />
-        <method name="AddNamespace(System.String, System.String)" argnames="prefix, uri" returntype="System.Void" />
-        <method name="PopScope" argnames="" returntype="System.Boolean" />
-        <method name="PushScope" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNodeChangedEventArgs" namespace="System.Xml">
-        <property name="Action" propertytype="System.Xml.XmlNodeChangedAction" />
-        <property name="Node" propertytype="System.Xml.XmlNode" />
-        <property name="OldParent" propertytype="System.Xml.XmlNode" />
-        <property name="NewParent" propertytype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNodeReader" namespace="System.Xml">
-        <constructor name="XmlNodeReader(System.Xml.XmlNode)" argnames="node" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="HasValue" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="CanResolveEntity" propertytype="System.Boolean" />
-        <property name="IsEmptyElement" propertytype="System.Boolean" />
-        <property name="IsDefault" propertytype="System.Boolean" />
-        <property name="QuoteChar" propertytype="System.Char" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="AttributeCount" propertytype="System.Int32" />
-        <property name="EOF" propertytype="System.Boolean" />
-        <property name="ReadState" propertytype="System.Xml.ReadState" />
-        <property name="HasAttributes" propertytype="System.Boolean" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
-        <method name="ResolveEntity" argnames="" returntype="System.Void" />
-        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
-        <method name="ReadOuterXml" argnames="" returntype="System.String" />
-        <method name="ReadInnerXml" argnames="" returntype="System.String" />
-        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="IsStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="IsStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="ReadEndElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadElementString(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadElementString" argnames="" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="MoveToContent" argnames="" inherited="System.Xml.XmlReader" returntype="System.Xml.XmlNodeType" />
-        <method name="ReadString" argnames="" returntype="System.String" />
-        <method name="Skip" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Read" argnames="" returntype="System.Boolean" />
-        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.Int32)" argnames="attributeIndex" returntype="System.Void" />
-        <method name="MoveToAttribute(System.String, System.String)" argnames="name, namespaceURI" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="GetAttribute(System.Int32)" argnames="attributeIndex" returntype="System.String" />
-        <method name="GetAttribute(System.String, System.String)" argnames="name, namespaceURI" returntype="System.String" />
-        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNotation" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="PublicId" propertytype="System.String" />
-        <property name="SystemId" propertytype="System.String" />
-        <property name="OuterXml" propertytype="System.String" />
-        <property name="InnerXml" propertytype="System.String" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlParserContext" namespace="System.Xml">
-        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.Xml.XmlSpace)" argnames="nt, nsMgr, xmlLang, xmlSpace" />
-        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.Xml.XmlSpace, System.Text.Encoding)" argnames="nt, nsMgr, xmlLang, xmlSpace, enc" />
-        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.String, System.String, System.String, System.String, System.String, System.Xml.XmlSpace)" argnames="nt, nsMgr, docTypeName, pubId, sysId, internalSubset, baseURI, xmlLang, xmlSpace" />
-        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.String, System.String, System.String, System.String, System.String, System.Xml.XmlSpace, System.Text.Encoding)" argnames="nt, nsMgr, docTypeName, pubId, sysId, internalSubset, baseURI, xmlLang, xmlSpace, enc" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
-        <property name="DocTypeName" propertytype="System.String" />
-        <property name="PublicId" propertytype="System.String" />
-        <property name="SystemId" propertytype="System.String" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="InternalSubset" propertytype="System.String" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlProcessingInstruction" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Target" propertytype="System.String" />
-        <property name="Data" propertytype="System.String" />
-        <property name="InnerText" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="XPLocalName" propertytype="System.String" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlQualifiedName" namespace="System.Xml">
-        <constructor name="XmlQualifiedName" argnames="" />
-        <constructor name="XmlQualifiedName(System.String)" argnames="name" />
-        <constructor name="XmlQualifiedName(System.String, System.String)" argnames="name, ns" />
-        <field name="Empty" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ToString(System.String, System.String)" argnames="name, ns" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <operator name="op_Equality(System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="a, b" />
-        <operator name="op_Inequality(System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="a, b" />
-    </class>
-    <class name="XmlResolver" namespace="System.Xml">
-        <constructor name="XmlResolver" argnames="" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <method name="ResolveUri(System.Uri, System.String)" argnames="baseUri, relativeUri" returntype="System.Uri" />
-        <method name="GetEntity(System.Uri, System.String, System.Type)" argnames="absoluteUri, role, ofObjectToReturn" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSignificantWhitespace" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Value" propertytype="System.String" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlText" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Value" propertytype="System.String" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="SplitText(System.Int32)" argnames="offset" returntype="System.Xml.XmlText" />
-        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlUrlResolver" namespace="System.Xml">
-        <constructor name="XmlUrlResolver" argnames="" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <method name="ResolveUri(System.Uri, System.String)" argnames="baseUri, relativeUri" returntype="System.Uri" />
-        <method name="GetEntity(System.Uri, System.String, System.Type)" argnames="absoluteUri, role, ofObjectToReturn" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlValidatingReader" namespace="System.Xml">
-        <constructor name="XmlValidatingReader(System.Xml.XmlReader)" argnames="reader" />
-        <constructor name="XmlValidatingReader(System.String, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
-        <constructor name="XmlValidatingReader(System.IO.Stream, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="Schemas" propertytype="System.Xml.Schema.XmlSchemaCollection" />
-        <property name="SchemaType" propertytype="System.Object" />
-        <property name="HasValue" propertytype="System.Boolean" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Depth" propertytype="System.Int32" />
-        <property name="BaseURI" propertytype="System.String" />
-        <property name="IsEmptyElement" propertytype="System.Boolean" />
-        <property name="IsDefault" propertytype="System.Boolean" />
-        <property name="QuoteChar" propertytype="System.Char" />
-        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
-        <property name="XmlLang" propertytype="System.String" />
-        <property name="AttributeCount" propertytype="System.Int32" />
-        <property name="Reader" propertytype="System.Xml.XmlReader" />
-        <property name="ValidationType" propertytype="System.Xml.ValidationType" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="EOF" propertytype="System.Boolean" />
-        <property name="ReadState" propertytype="System.Xml.ReadState" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="EntityHandling" propertytype="System.Xml.EntityHandling" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
-        <property name="CanResolveEntity" propertytype="System.Boolean" />
-        <property name="Namespaces" propertytype="System.Boolean" />
-        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
-        <property name="SchemaTypeObject" propertytype="System.Object" />
-        <property name="TypedValueObject" propertytype="System.Object" />
-        <property name="StandAlone" propertytype="System.Boolean" />
-        <property name="RawValue" propertytype="System.String" />
-        <property name="DisableUndeclaredEntityCheck" propertytype="System.Boolean" />
-        <property name="HasAttributes" inherited="System.Xml.XmlReader" propertytype="System.Boolean" />
-        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
-        <method name="ResolveEntity" argnames="" returntype="System.Void" />
-        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
-        <method name="ReadOuterXml" argnames="" returntype="System.String" />
-        <method name="ReadInnerXml" argnames="" returntype="System.String" />
-        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="IsStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="IsStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
-        <method name="ReadEndElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadElementString(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadElementString" argnames="" inherited="System.Xml.XmlReader" returntype="System.String" />
-        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="ReadStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="MoveToContent" argnames="" inherited="System.Xml.XmlReader" returntype="System.Xml.XmlNodeType" />
-        <method name="ReadString" argnames="" returntype="System.String" />
-        <method name="Skip" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Read" argnames="" returntype="System.Boolean" />
-        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
-        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
-        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
-        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
-        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ReadTypedValue" argnames="" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ValidationEventHandler" />
-    </class>
-    <class name="XmlWhitespace" namespace="System.Xml">
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Value" propertytype="System.String" />
-        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
-        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
-        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
-        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IHasXmlNode" namespace="System.Xml">
-        <method name="GetNode" argnames="" returntype="System.Xml.XmlNode" />
-    </interface>
-    <interface name="IXmlLineInfo" namespace="System.Xml">
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <method name="HasLineInfo" argnames="" returntype="System.Boolean" />
-    </interface>
-    <struct name="VirtualAttribute" namespace="System.Xml">
-        <constructor name="VirtualAttribute(System.String, System.String)" argnames="name, value" />
-        <field name="name" />
-        <field name="value" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <delegate name="XmlNodeChangedEventHandler" namespace="System.Xml">
-        <constructor name="XmlNodeChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Xml.XmlNodeChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Xml.XmlNodeChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="EntityHandling" namespace="System.Xml">
-        <field name="ExpandEntities" />
-        <field name="ExpandCharEntities" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ReadState" namespace="System.Xml">
-        <field name="Initial" />
-        <field name="Interactive" />
-        <field name="Error" />
-        <field name="EndOfFile" />
-        <field name="Closed" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ValidationType" namespace="System.Xml">
-        <field name="None" />
-        <field name="Auto" />
-        <field name="DTD" />
-        <field name="XDR" />
-        <field name="Schema" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="WhitespaceHandling" namespace="System.Xml">
-        <field name="All" />
-        <field name="Significant" />
-        <field name="None" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlNodeChangedAction" namespace="System.Xml">
-        <field name="Insert" />
-        <field name="Remove" />
-        <field name="Change" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlNodeOrder" namespace="System.Xml">
-        <field name="Before" />
-        <field name="After" />
-        <field name="Same" />
-        <field name="Unknown" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlNodeType" namespace="System.Xml">
-        <field name="None" />
-        <field name="Element" />
-        <field name="Attribute" />
-        <field name="Text" />
-        <field name="CDATA" />
-        <field name="EntityReference" />
-        <field name="Entity" />
-        <field name="ProcessingInstruction" />
-        <field name="Comment" />
-        <field name="Document" />
-        <field name="DocumentType" />
-        <field name="DocumentFragment" />
-        <field name="Notation" />
-        <field name="Whitespace" />
-        <field name="SignificantWhitespace" />
-        <field name="EndElement" />
-        <field name="EndEntity" />
-        <field name="XmlDeclaration" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlSpace" namespace="System.Xml">
-        <field name="None" />
-        <field name="Default" />
-        <field name="Preserve" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlTokenizedType" namespace="System.Xml">
-        <field name="CDATA" />
-        <field name="ID" />
-        <field name="IDREF" />
-        <field name="IDREFS" />
-        <field name="ENTITY" />
-        <field name="ENTITIES" />
-        <field name="NMTOKEN" />
-        <field name="NMTOKENS" />
-        <field name="NOTATION" />
-        <field name="ENUMERATION" />
-        <field name="QName" />
-        <field name="NCName" />
-        <field name="None" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Formatting" namespace="System.Xml">
-        <field name="None" />
-        <field name="Indented" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="WriteState" namespace="System.Xml">
-        <field name="Start" />
-        <field name="Prolog" />
-        <field name="Element" />
-        <field name="Attribute" />
-        <field name="Content" />
-        <field name="Closed" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="XsltContext" namespace="System.Xml.Xsl">
-        <constructor name="XsltContext(System.Xml.NameTable)" argnames="table" />
-        <constructor name="XsltContext" argnames="" />
-        <property name="Whitespace" propertytype="System.Boolean" />
-        <property name="NameTable" inherited="System.Xml.XmlNamespaceManager" propertytype="System.Xml.XmlNameTable" />
-        <property name="DefaultNamespace" inherited="System.Xml.XmlNamespaceManager" propertytype="System.String" />
-        <method name="CompareDocument(System.String, System.String)" argnames="baseUri, nextbaseUri" returntype="System.Int32" />
-        <method name="PreserveWhitespace(System.Xml.XPath.XPathNavigator)" argnames="node" returntype="System.Boolean" />
-        <method name="ResolveFunction(System.String, System.String, System.Xml.XPath.XPathResultType[])" argnames="prefix, name, ArgTypes" returntype="System.Xml.Xsl.IXsltContextFunction" />
-        <method name="ResolveVariable(System.String, System.String)" argnames="prefix, name" returntype="System.Xml.Xsl.IXsltContextVariable" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNamespaceManager" returntype="System.Collections.IEnumerator" />
-        <method name="HasNamespace(System.String)" argnames="prefix" inherited="System.Xml.XmlNamespaceManager" returntype="System.Boolean" />
-        <method name="LookupPrefix(System.String)" argnames="uri" inherited="System.Xml.XmlNamespaceManager" returntype="System.String" />
-        <method name="LookupNamespace(System.String)" argnames="prefix" inherited="System.Xml.XmlNamespaceManager" returntype="System.String" />
-        <method name="RemoveNamespace(System.String, System.String)" argnames="prefix, uri" inherited="System.Xml.XmlNamespaceManager" returntype="System.Void" />
-        <method name="AddNamespace(System.String, System.String)" argnames="prefix, uri" inherited="System.Xml.XmlNamespaceManager" returntype="System.Void" />
-        <method name="PopScope" argnames="" inherited="System.Xml.XmlNamespaceManager" returntype="System.Boolean" />
-        <method name="PushScope" argnames="" inherited="System.Xml.XmlNamespaceManager" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XsltArgumentList" namespace="System.Xml.Xsl">
-        <constructor name="XsltArgumentList" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetParam(System.String, System.String)" argnames="name, namespaceUri" returntype="System.Object" />
-        <method name="GetExtensionObject(System.String)" argnames="namespaceUri" returntype="System.Object" />
-        <method name="AddParam(System.String, System.String, System.Object)" argnames="name, namespaceUri, parameter" returntype="System.Void" />
-        <method name="AddExtensionObject(System.String, System.Object)" argnames="namespaceUri, extension" returntype="System.Void" />
-        <method name="RemoveParam(System.String, System.String)" argnames="name, namespaceUri" returntype="System.Object" />
-        <method name="RemoveExtensionObject(System.String)" argnames="namespaceUri" returntype="System.Object" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XsltException" namespace="System.Xml.Xsl">
-        <constructor name="XsltException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="XsltException(System.String, System.Exception)" argnames="message, innerException" />
-        <property name="SourceUri" propertytype="System.String" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <property name="Message" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XsltCompileException" namespace="System.Xml.Xsl">
-        <constructor name="XsltCompileException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="XsltCompileException(System.Exception, System.String, System.Int32, System.Int32)" argnames="inner, sourceUri, lineNumber, linePosition" />
-        <property name="Message" propertytype="System.String" />
-        <property name="SourceUri" inherited="System.Xml.Xsl.XsltException" propertytype="System.String" />
-        <property name="LineNumber" inherited="System.Xml.Xsl.XsltException" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Xsl.XsltException" propertytype="System.Int32" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XslTransform" namespace="System.Xml.Xsl">
-        <constructor name="XslTransform" argnames="" />
-        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
-        <property name="Debugger" propertytype="System.Xml.Xsl.Debugger.IXsltDebugger" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList)" argnames="input, args" returntype="System.Xml.XmlReader" />
-        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList, System.IO.TextWriter)" argnames="input, args, output" returntype="System.Void" />
-        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList, System.IO.Stream)" argnames="input, args, output" returntype="System.Void" />
-        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList, System.Xml.XmlWriter)" argnames="input, args, output" returntype="System.Void" />
-        <method name="Load(System.String)" argnames="url" returntype="System.Void" />
-        <method name="Load(System.String, System.Xml.XmlResolver)" argnames="url, resolver" returntype="System.Void" />
-        <method name="Load(System.Xml.XmlReader)" argnames="stylesheet" returntype="System.Void" />
-        <method name="Load(System.Xml.XmlReader, System.Xml.XmlResolver)" argnames="stylesheet, resolver" returntype="System.Void" />
-        <method name="Load(System.Xml.XPath.XPathNavigator)" argnames="stylesheet" returntype="System.Void" />
-        <method name="Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver)" argnames="stylesheet, resolver" returntype="System.Void" />
-        <method name="Load(System.Xml.XPath.IXPathNavigable)" argnames="stylesheet" returntype="System.Void" />
-        <method name="Load(System.Xml.XPath.IXPathNavigable, System.Xml.XmlResolver)" argnames="stylesheet, resolver" returntype="System.Void" />
-        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList)" argnames="input, args" returntype="System.Xml.XmlReader" />
-        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList, System.Xml.XmlWriter)" argnames="input, args, output" returntype="System.Void" />
-        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList, System.IO.Stream)" argnames="input, args, output" returntype="System.Void" />
-        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList, System.IO.TextWriter)" argnames="input, args, output" returntype="System.Void" />
-        <method name="Transform(System.String, System.String)" argnames="inputfile, outputfile" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IXsltContextVariable" namespace="System.Xml.Xsl">
-        <property name="IsLocal" propertytype="System.Boolean" />
-        <property name="IsParam" propertytype="System.Boolean" />
-        <property name="VariableType" propertytype="System.Xml.XPath.XPathResultType" />
-        <method name="Evaluate(System.Xml.Xsl.XsltContext)" argnames="xsltContext" returntype="System.Object" />
-    </interface>
-    <interface name="IXsltContextFunction" namespace="System.Xml.Xsl">
-        <property name="Minargs" propertytype="System.Int32" />
-        <property name="Maxargs" propertytype="System.Int32" />
-        <property name="ReturnType" propertytype="System.Xml.XPath.XPathResultType" />
-        <property name="ArgTypes" propertytype="System.Xml.XPath.XPathResultType[]" />
-        <method name="Invoke(System.Xml.Xsl.XsltContext, System.Object[], System.Xml.XPath.XPathNavigator)" argnames="xsltContext, args, docContext" returntype="System.Object" />
-    </interface>
-    <class name="XmlSchemaDatatype" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaDatatype" argnames="" />
-        <property name="ValueType" propertytype="System.Type" />
-        <property name="TokenizedType" propertytype="System.Xml.XmlTokenizedType" />
-        <property name="AnyType" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
-        <property name="Variety" propertytype="System.Xml.Schema.XmlSchemaDatatypeVariety" />
-        <method name="ParseValue(System.String, System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager)" argnames="s, nameTable, nsmgr" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ValidationEventArgs" namespace="System.Xml.Schema">
-        <property name="Severity" propertytype="System.Xml.Schema.XmlSeverityType" />
-        <property name="Exception" propertytype="System.Xml.Schema.XmlSchemaException" />
-        <property name="Message" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaObject" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaObject" argnames="" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <property name="SourceUri" propertytype="System.String" />
-        <property name="Parent" propertytype="System.Xml.Schema.XmlSchemaObject" />
-        <property name="Namespaces" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <property name="IdAttribute" propertytype="System.String" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchema" namespace="System.Xml.Schema">
-        <constructor name="XmlSchema" argnames="" />
-        <field name="Namespace" />
-        <field name="InstanceNamespace" />
-        <property name="AttributeFormDefault" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="BlockDefault" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="FinalDefault" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="ElementFormDefault" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="TargetNamespace" propertytype="System.String" />
-        <property name="Version" propertytype="System.String" />
-        <property name="Includes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="IsCompiled" propertytype="System.Boolean" />
-        <property name="IsPreprocessed" propertytype="System.Boolean" />
-        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="AttributeGroups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="SchemaTypes" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="Elements" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="Id" propertytype="System.String" />
-        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="Groups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="Notations" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="IdentityConstraints" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="BaseUri" propertytype="System.String" />
-        <property name="Ids" propertytype="System.Collections.Hashtable" />
-        <property name="Examplars" propertytype="System.Collections.Hashtable" />
-        <property name="Document" propertytype="System.Xml.XmlDocument" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="ErrorCount" propertytype="System.Int32" />
-        <property name="IdAttribute" propertytype="System.String" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Read(System.IO.TextReader, System.Xml.Schema.ValidationEventHandler)" argnames="reader, validationEventHandler" returntype="System.Xml.Schema.XmlSchema" />
-        <method name="Read(System.IO.Stream, System.Xml.Schema.ValidationEventHandler)" argnames="stream, validationEventHandler" returntype="System.Xml.Schema.XmlSchema" />
-        <method name="Read(System.Xml.XmlReader, System.Xml.Schema.ValidationEventHandler)" argnames="reader, validationEventHandler" returntype="System.Xml.Schema.XmlSchema" />
-        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="Write(System.IO.Stream, System.Xml.XmlNamespaceManager)" argnames="stream, namespaceManager" returntype="System.Void" />
-        <method name="Write(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
-        <method name="Write(System.IO.TextWriter, System.Xml.XmlNamespaceManager)" argnames="writer, namespaceManager" returntype="System.Void" />
-        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-        <method name="Write(System.Xml.XmlWriter, System.Xml.XmlNamespaceManager)" argnames="writer, namespaceManager" returntype="System.Void" />
-        <method name="Compile(System.Xml.Schema.ValidationEventHandler)" argnames="validationEventHandler" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAnnotated" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAnnotated" argnames="" />
-        <property name="Id" propertytype="System.String" />
-        <property name="Annotation" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="IdAttribute" propertytype="System.String" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaParticle" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaParticle" argnames="" />
-        <property name="MinOccursString" propertytype="System.String" />
-        <property name="MaxOccursString" propertytype="System.String" />
-        <property name="MinOccurs" propertytype="System.Decimal" />
-        <property name="MaxOccurs" propertytype="System.Decimal" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="IsMultipleOccurrence" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaGroupBase" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaGroupBase" argnames="" />
-        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAll" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAll" argnames="" />
-        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAnnotation" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAnnotation" argnames="" />
-        <property name="Id" propertytype="System.String" />
-        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="IdAttribute" propertytype="System.String" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAny" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAny" argnames="" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="ProcessContents" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
-        <property name="NamespaceList" propertytype="System.Xml.Schema.NamespaceList" />
-        <property name="ProcessContentsCorrect" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
-        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAnyAttribute" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAnyAttribute" argnames="" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="ProcessContents" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
-        <property name="NamespaceList" propertytype="System.Xml.Schema.NamespaceList" />
-        <property name="ProcessContentsCorrect" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAppInfo" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAppInfo" argnames="" />
-        <property name="Source" propertytype="System.String" />
-        <property name="Markup" propertytype="System.Xml.XmlNode[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAttribute" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAttribute" argnames="" />
-        <property name="DefaultValue" propertytype="System.String" />
-        <property name="FixedValue" propertytype="System.String" />
-        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="Name" propertytype="System.String" />
-        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="SchemaTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="SchemaType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
-        <property name="Use" propertytype="System.Xml.Schema.XmlSchemaUse" />
-        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="AttributeType" propertytype="System.Object" />
-        <property name="Datatype" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
-        <property name="Prefix" propertytype="System.String" />
-        <property name="AttDef" propertytype="System.Xml.Schema.SchemaAttDef" />
-        <property name="Validating" propertytype="System.Boolean" />
-        <property name="HasDefault" propertytype="System.Boolean" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAttributeGroup" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAttributeGroup" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="AttributeUses" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="AttributeWildcard" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="RedefinedAttributeGroup" propertytype="System.Xml.Schema.XmlSchemaAttributeGroup" />
-        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaAttributeGroup" />
-        <property name="Validating" propertytype="System.Boolean" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaAttributeGroupRef" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaAttributeGroupRef" argnames="" />
-        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaChoice" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaChoice" argnames="" />
-        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaCollection" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaCollection" argnames="" />
-        <constructor name="XmlSchemaCollection(System.Xml.XmlNameTable)" argnames="nametable" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
-        <property name="Item" propertytype="System.Xml.Schema.XmlSchema" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.String, System.String)" argnames="ns, uri" returntype="System.Xml.Schema.XmlSchema" />
-        <method name="Add(System.String, System.Xml.XmlReader)" argnames="ns, reader" returntype="System.Xml.Schema.XmlSchema" />
-        <method name="Add(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Xml.Schema.XmlSchema" />
-        <method name="Add(System.Xml.Schema.XmlSchemaCollection)" argnames="schema" returntype="System.Void" />
-        <method name="Contains(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Boolean" />
-        <method name="Contains(System.String)" argnames="ns" returntype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Xml.Schema.XmlSchemaCollectionEnumerator" />
-        <method name="CopyTo(System.Xml.Schema.XmlSchema[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="ValidationEventHandler" />
-    </class>
-    <class name="XmlSchemaCollectionEnumerator" namespace="System.Xml.Schema">
-        <property name="Current" propertytype="System.Xml.Schema.XmlSchema" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="MoveNext" argnames="" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaContentModel" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaContentModel" argnames="" />
-        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaContent" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaComplexContent" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaComplexContent" argnames="" />
-        <property name="IsMixed" propertytype="System.Boolean" />
-        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaContent" />
-        <property name="HasMixedAttribute" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaContent" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaContent" argnames="" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaComplexContentExtension" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaComplexContentExtension" argnames="" />
-        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
-        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaComplexContentRestriction" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaComplexContentRestriction" argnames="" />
-        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
-        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaType" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaType" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Final" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="FinalResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="BaseSchemaType" propertytype="System.Object" />
-        <property name="DerivedBy" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="Datatype" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
-        <property name="IsMixed" propertytype="System.Boolean" />
-        <property name="ElementDecl" propertytype="System.Xml.Schema.SchemaElementDecl" />
-        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaType" />
-        <property name="Validating" propertytype="System.Boolean" />
-        <property name="DerivedFrom" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaComplexType" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaComplexType" argnames="" />
-        <property name="AnyType" propertytype="System.Xml.Schema.XmlSchemaComplexType" />
-        <property name="IsAbstract" propertytype="System.Boolean" />
-        <property name="Block" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="IsMixed" propertytype="System.Boolean" />
-        <property name="ContentModel" propertytype="System.Xml.Schema.XmlSchemaContentModel" />
-        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
-        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="ContentType" propertytype="System.Xml.Schema.XmlSchemaContentType" />
-        <property name="ContentTypeParticle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
-        <property name="BlockResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="AttributeUses" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="AttributeWildcard" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="LocalElements" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="LocalElementDecls" propertytype="System.Collections.Hashtable" />
-        <property name="DerivedFrom" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Name" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.String" />
-        <property name="Final" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="FinalResolved" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="BaseSchemaType" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Object" />
-        <property name="DerivedBy" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="Datatype" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaDocumentation" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaDocumentation" argnames="" />
-        <property name="Source" propertytype="System.String" />
-        <property name="Language" propertytype="System.String" />
-        <property name="Markup" propertytype="System.Xml.XmlNode[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaElement" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaElement" argnames="" />
-        <property name="IsAbstract" propertytype="System.Boolean" />
-        <property name="Block" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="DefaultValue" propertytype="System.String" />
-        <property name="Final" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="FixedValue" propertytype="System.String" />
-        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="Name" propertytype="System.String" />
-        <property name="IsNillable" propertytype="System.Boolean" />
-        <property name="HasNillableAttribute" propertytype="System.Boolean" />
-        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="SubstitutionGroup" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="SchemaTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="SchemaType" propertytype="System.Xml.Schema.XmlSchemaType" />
-        <property name="Constraints" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="ElementType" propertytype="System.Object" />
-        <property name="BlockResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="FinalResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="HasDefault" propertytype="System.Boolean" />
-        <property name="HasConstraints" propertytype="System.Boolean" />
-        <property name="ElementDecl" propertytype="System.Xml.Schema.SchemaElementDecl" />
-        <property name="Validating" propertytype="System.Boolean" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaException" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="XmlSchemaException(System.String, System.Exception)" argnames="message, innerException" />
-        <property name="Message" propertytype="System.String" />
-        <property name="SourceUri" propertytype="System.String" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <property name="SourceSchemaObject" propertytype="System.Xml.Schema.XmlSchemaObject" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaExternal" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaExternal" argnames="" />
-        <property name="SchemaLocation" propertytype="System.String" />
-        <property name="Schema" propertytype="System.Xml.Schema.XmlSchema" />
-        <property name="Id" propertytype="System.String" />
-        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="FullPath" propertytype="System.String" />
-        <property name="IdAttribute" propertytype="System.String" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaFacet" argnames="" />
-        <property name="Value" propertytype="System.String" />
-        <property name="IsFixed" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaNumericFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaNumericFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaLengthFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaLengthFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaMinLengthFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaMinLengthFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaMaxLengthFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaMaxLengthFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaPatternFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaPatternFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaEnumerationFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaEnumerationFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaMinExclusiveFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaMinExclusiveFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaMinInclusiveFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaMinInclusiveFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaMaxExclusiveFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaMaxExclusiveFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaMaxInclusiveFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaMaxInclusiveFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaTotalDigitsFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaTotalDigitsFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaFractionDigitsFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaFractionDigitsFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaWhiteSpaceFacet" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaWhiteSpaceFacet" argnames="" />
-        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
-        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaGroup" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaGroup" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaGroupBase" />
-        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="CanonicalParticle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
-        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaGroup" />
-        <property name="Validating" propertytype="System.Boolean" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaGroupRef" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaGroupRef" argnames="" />
-        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaGroupBase" />
-        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaGroup" />
-        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaIdentityConstraint" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaIdentityConstraint" argnames="" />
-        <property name="Validating" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Selector" propertytype="System.Xml.Schema.XmlSchemaXPath" />
-        <property name="Fields" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="CompiledConstraint" propertytype="System.Xml.Schema.CompiledIdentityConstraint" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaXPath" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaXPath" argnames="" />
-        <property name="XPath" propertytype="System.String" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaUnique" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaUnique" argnames="" />
-        <property name="Name" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.String" />
-        <property name="Selector" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaXPath" />
-        <property name="Fields" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaKey" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaKey" argnames="" />
-        <property name="Name" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.String" />
-        <property name="Selector" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaXPath" />
-        <property name="Fields" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaKeyref" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaKeyref" argnames="" />
-        <property name="Refer" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Name" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.String" />
-        <property name="Selector" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaXPath" />
-        <property name="Fields" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaImport" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaImport" argnames="" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Annotation" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="SchemaLocation" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
-        <property name="Schema" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.Schema.XmlSchema" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaInclude" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaInclude" argnames="" />
-        <property name="Annotation" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="SchemaLocation" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
-        <property name="Schema" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.Schema.XmlSchema" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaNotation" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaNotation" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Public" propertytype="System.String" />
-        <property name="System" propertytype="System.String" />
-        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="NameAttribute" propertytype="System.String" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaObjectCollection" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaObjectCollection" argnames="" />
-        <constructor name="XmlSchemaObjectCollection(System.Xml.Schema.XmlSchemaObject)" argnames="parent" />
-        <property name="Item" propertytype="System.Xml.Schema.XmlSchemaObject" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-        <method name="OnClear" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" returntype="System.Xml.Schema.XmlSchemaObjectEnumerator" />
-        <method name="Add(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Xml.Schema.XmlSchemaObject)" argnames="index, item" returntype="System.Void" />
-        <method name="IndexOf(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Int32" />
-        <method name="Contains(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Boolean" />
-        <method name="Remove(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Void" />
-        <method name="CopyTo(System.Xml.Schema.XmlSchemaObject[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaObjectEnumerator" namespace="System.Xml.Schema">
-        <property name="Current" propertytype="System.Xml.Schema.XmlSchemaObject" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="MoveNext" argnames="" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaObjectTable" namespace="System.Xml.Schema">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Xml.Schema.XmlSchemaObject" />
-        <property name="Names" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaRedefine" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaRedefine" argnames="" />
-        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="AttributeGroups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="SchemaTypes" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="Groups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
-        <property name="SchemaLocation" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
-        <property name="Schema" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.Schema.XmlSchema" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSequence" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSequence" argnames="" />
-        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="IsEmpty" propertytype="System.Boolean" />
-        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
-        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleContent" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleContent" argnames="" />
-        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaContent" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleContentExtension" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleContentExtension" argnames="" />
-        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleContentRestriction" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleContentRestriction" argnames="" />
-        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="BaseType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
-        <property name="Facets" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleType" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleType" argnames="" />
-        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaSimpleTypeContent" />
-        <property name="DerivedFrom" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="Name" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.String" />
-        <property name="Final" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="FinalResolved" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="BaseSchemaType" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Object" />
-        <property name="DerivedBy" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
-        <property name="Datatype" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
-        <property name="IsMixed" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Boolean" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleTypeContent" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleTypeContent" argnames="" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleTypeList" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleTypeList" argnames="" />
-        <property name="ItemTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="ItemType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleTypeRestriction" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleTypeRestriction" argnames="" />
-        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="BaseType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
-        <property name="Facets" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaSimpleTypeUnion" namespace="System.Xml.Schema">
-        <constructor name="XmlSchemaSimpleTypeUnion" argnames="" />
-        <property name="BaseTypes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
-        <property name="MemberTypes" propertytype="System.Xml.XmlQualifiedName[]" />
-        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
-        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
-        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
-        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
-        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
-        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="ValidationEventHandler" namespace="System.Xml.Schema">
-        <constructor name="ValidationEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Xml.Schema.ValidationEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Xml.Schema.ValidationEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="ConstraintRole" namespace="System.Xml.Schema">
-        <field name="Unique" />
-        <field name="Key" />
-        <field name="Keyref" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ListType" namespace="System.Xml.Schema">
-        <field name="Any" />
-        <field name="Other" />
-        <field name="Set" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Use" namespace="System.Xml.Schema">
-        <field name="Default" />
-        <field name="Required" />
-        <field name="Implied" />
-        <field name="Fixed" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Reserve" namespace="System.Xml.Schema">
-        <field name="None" />
-        <field name="XmlSpace" />
-        <field name="XmlLang" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Type" namespace="System.Xml.Schema">
-        <field name="ID" />
-        <field name="NOTATION" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlSchemaContentProcessing" namespace="System.Xml.Schema">
-        <field name="None" />
-        <field name="Skip" />
-        <field name="Lax" />
-        <field name="Strict" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlSchemaContentType" namespace="System.Xml.Schema">
-        <field name="TextOnly" />
-        <field name="Empty" />
-        <field name="ElementOnly" />
-        <field name="Mixed" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlSchemaDerivationMethod" namespace="System.Xml.Schema">
-        <field name="Empty" />
-        <field name="Substitution" />
-        <field name="Extension" />
-        <field name="Restriction" />
-        <field name="List" />
-        <field name="Union" />
-        <field name="All" />
-        <field name="None" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlSchemaForm" namespace="System.Xml.Schema">
-        <field name="None" />
-        <field name="Qualified" />
-        <field name="Unqualified" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlSchemaUse" namespace="System.Xml.Schema">
-        <field name="None" />
-        <field name="Optional" />
-        <field name="Prohibited" />
-        <field name="Required" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="XmlSeverityType" namespace="System.Xml.Schema">
-        <field name="Error" />
-        <field name="Warning" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="XmlAttributeEventArgs" namespace="System.Xml.Serialization">
-        <property name="ObjectBeingDeserialized" propertytype="System.Object" />
-        <property name="Attr" propertytype="System.Xml.XmlAttribute" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlElementEventArgs" namespace="System.Xml.Serialization">
-        <property name="ObjectBeingDeserialized" propertytype="System.Object" />
-        <property name="Element" propertytype="System.Xml.XmlElement" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNodeEventArgs" namespace="System.Xml.Serialization">
-        <property name="XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ObjectBeingDeserialized" propertytype="System.Object" />
-        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
-        <property name="Name" propertytype="System.String" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="NamespaceURI" propertytype="System.String" />
-        <property name="Text" propertytype="System.String" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="LinePosition" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UnreferencedObjectEventArgs" namespace="System.Xml.Serialization">
-        <constructor name="UnreferencedObjectEventArgs(System.Object, System.String)" argnames="o, id" />
-        <property name="UnreferencedObject" propertytype="System.Object" />
-        <property name="UnreferencedId" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeIdentifiers" namespace="System.Xml.Serialization">
-        <constructor name="CodeIdentifiers" argnames="" />
-        <property name="UseCamelCasing" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="MakeRightCase(System.String)" argnames="identifier" returntype="System.String" />
-        <method name="MakeUnique(System.String)" argnames="identifier" returntype="System.String" />
-        <method name="AddReserved(System.String)" argnames="identifier" returntype="System.Void" />
-        <method name="RemoveReserved(System.String)" argnames="identifier" returntype="System.Void" />
-        <method name="AddUnique(System.String, System.Object)" argnames="identifier, value" returntype="System.String" />
-        <method name="IsInUse(System.String)" argnames="identifier" returntype="System.Boolean" />
-        <method name="Add(System.String, System.Object)" argnames="identifier, value" returntype="System.Void" />
-        <method name="Remove(System.String)" argnames="identifier" returntype="System.Void" />
-        <method name="ToArray(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapAttributeAttribute" namespace="System.Xml.Serialization">
-        <constructor name="SoapAttributeAttribute" argnames="" />
-        <constructor name="SoapAttributeAttribute(System.String)" argnames="attrName" />
-        <property name="AttributeName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="DataType" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapAttributeOverrides" namespace="System.Xml.Serialization">
-        <constructor name="SoapAttributeOverrides" argnames="" />
-        <property name="Item" propertytype="System.Xml.Serialization.SoapAttributes" />
-        <property name="Item" propertytype="System.Xml.Serialization.SoapAttributes" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Type, System.Xml.Serialization.SoapAttributes)" argnames="type, attributes" returntype="System.Void" />
-        <method name="Add(System.Type, System.String, System.Xml.Serialization.SoapAttributes)" argnames="type, member, attributes" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapAttributes" namespace="System.Xml.Serialization">
-        <constructor name="SoapAttributes" argnames="" />
-        <constructor name="SoapAttributes(System.Reflection.ICustomAttributeProvider)" argnames="provider" />
-        <property name="SoapFlags" propertytype="System.Xml.Serialization.SoapAttributeFlags" />
-        <property name="SoapType" propertytype="System.Xml.Serialization.SoapTypeAttribute" />
-        <property name="SoapEnum" propertytype="System.Xml.Serialization.SoapEnumAttribute" />
-        <property name="SoapIgnore" propertytype="System.Boolean" />
-        <property name="SoapElement" propertytype="System.Xml.Serialization.SoapElementAttribute" />
-        <property name="SoapAttribute" propertytype="System.Xml.Serialization.SoapAttributeAttribute" />
-        <property name="SoapDefaultValue" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapCodeExporter" namespace="System.Xml.Serialization">
-        <constructor name="SoapCodeExporter(System.CodeDom.CodeNamespace)" argnames="codeNamespace" />
-        <constructor name="SoapCodeExporter(System.CodeDom.CodeNamespace, System.CodeDom.CodeCompileUnit)" argnames="codeNamespace, codeCompileUnit" />
-        <property name="IncludeMetadata" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
-        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
-        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping, System.Boolean)" argnames="metadata, member, forceUseMemberName" returntype="System.Void" />
-        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping)" argnames="metadata, member" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapElementAttribute" namespace="System.Xml.Serialization">
-        <constructor name="SoapElementAttribute" argnames="" />
-        <constructor name="SoapElementAttribute(System.String)" argnames="elementName" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="DataType" propertytype="System.String" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapEnumAttribute" namespace="System.Xml.Serialization">
-        <constructor name="SoapEnumAttribute" argnames="" />
-        <constructor name="SoapEnumAttribute(System.String)" argnames="name" />
-        <property name="Name" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapIgnoreAttribute" namespace="System.Xml.Serialization">
-        <constructor name="SoapIgnoreAttribute" argnames="" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapIncludeAttribute" namespace="System.Xml.Serialization">
-        <constructor name="SoapIncludeAttribute(System.Type)" argnames="type" />
-        <property name="Type" propertytype="System.Type" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapSchemaExporter" namespace="System.Xml.Serialization">
-        <constructor name="SoapSchemaExporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
-        <property name="Document" propertytype="System.Xml.XmlDocument" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
-        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
-        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping, System.Boolean)" argnames="xmlMembersMapping, exportEnclosingType" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapSchemaImporter" namespace="System.Xml.Serialization">
-        <constructor name="SoapSchemaImporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
-        <constructor name="SoapSchemaImporter(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeIdentifiers)" argnames="schemas, typeIdentifiers" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ImportDerivedTypeMapping(System.Xml.XmlQualifiedName, System.Type, System.Boolean)" argnames="name, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember)" argnames="name, ns, member" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember[])" argnames="name, ns, members" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember[], System.Boolean)" argnames="name, ns, members, hasWrapperElement" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember[], System.Boolean, System.Type, System.Boolean)" argnames="name, ns, members, hasWrapperElement, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapSchemaMember" namespace="System.Xml.Serialization">
-        <constructor name="SoapSchemaMember" argnames="" />
-        <property name="MemberType" propertytype="System.Xml.XmlQualifiedName" />
-        <property name="MemberName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapTypeAttribute" namespace="System.Xml.Serialization">
-        <constructor name="SoapTypeAttribute" argnames="" />
-        <constructor name="SoapTypeAttribute(System.String)" argnames="typeName" />
-        <constructor name="SoapTypeAttribute(System.String, System.String)" argnames="typeName, ns" />
-        <property name="IncludeInSchema" propertytype="System.Boolean" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAnyAttributeAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlAnyAttributeAttribute" argnames="" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAnyElementAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlAnyElementAttribute" argnames="" />
-        <constructor name="XmlAnyElementAttribute(System.String)" argnames="name" />
-        <constructor name="XmlAnyElementAttribute(System.String, System.String)" argnames="name, ns" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAnyElementAttributes" namespace="System.Xml.Serialization">
-        <constructor name="XmlAnyElementAttributes" argnames="" />
-        <property name="Item" propertytype="System.Xml.Serialization.XmlAnyElementAttribute" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Xml.Serialization.XmlAnyElementAttribute)" argnames="index, attribute" returntype="System.Void" />
-        <method name="IndexOf(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Int32" />
-        <method name="Contains(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Boolean" />
-        <method name="Remove(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Void" />
-        <method name="CopyTo(System.Xml.Serialization.XmlAnyElementAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlArrayAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlArrayAttribute" argnames="" />
-        <constructor name="XmlArrayAttribute(System.String)" argnames="elementName" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlArrayItemAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlArrayItemAttribute" argnames="" />
-        <constructor name="XmlArrayItemAttribute(System.String)" argnames="elementName" />
-        <constructor name="XmlArrayItemAttribute(System.Type)" argnames="type" />
-        <constructor name="XmlArrayItemAttribute(System.String, System.Type)" argnames="elementName, type" />
-        <property name="Type" propertytype="System.Type" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="NestingLevel" propertytype="System.Int32" />
-        <property name="DataType" propertytype="System.String" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="IsNullableSpecified" propertytype="System.Boolean" />
-        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlArrayItemAttributes" namespace="System.Xml.Serialization">
-        <constructor name="XmlArrayItemAttributes" argnames="" />
-        <property name="Item" propertytype="System.Xml.Serialization.XmlArrayItemAttribute" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Xml.Serialization.XmlArrayItemAttribute)" argnames="index, attribute" returntype="System.Void" />
-        <method name="IndexOf(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Int32" />
-        <method name="Contains(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Boolean" />
-        <method name="Remove(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Void" />
-        <method name="CopyTo(System.Xml.Serialization.XmlArrayItemAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAttributeAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlAttributeAttribute" argnames="" />
-        <constructor name="XmlAttributeAttribute(System.String)" argnames="attributeName" />
-        <constructor name="XmlAttributeAttribute(System.Type)" argnames="type" />
-        <constructor name="XmlAttributeAttribute(System.String, System.Type)" argnames="attributeName, type" />
-        <property name="Type" propertytype="System.Type" />
-        <property name="AttributeName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="DataType" propertytype="System.String" />
-        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAttributeOverrides" namespace="System.Xml.Serialization">
-        <constructor name="XmlAttributeOverrides" argnames="" />
-        <property name="Item" propertytype="System.Xml.Serialization.XmlAttributes" />
-        <property name="Item" propertytype="System.Xml.Serialization.XmlAttributes" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Type, System.Xml.Serialization.XmlAttributes)" argnames="type, attributes" returntype="System.Void" />
-        <method name="Add(System.Type, System.String, System.Xml.Serialization.XmlAttributes)" argnames="type, member, attributes" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlAttributes" namespace="System.Xml.Serialization">
-        <constructor name="XmlAttributes" argnames="" />
-        <constructor name="XmlAttributes(System.Reflection.ICustomAttributeProvider)" argnames="provider" />
-        <property name="XmlFlags" propertytype="System.Xml.Serialization.XmlAttributeFlags" />
-        <property name="XmlElements" propertytype="System.Xml.Serialization.XmlElementAttributes" />
-        <property name="XmlAttribute" propertytype="System.Xml.Serialization.XmlAttributeAttribute" />
-        <property name="XmlEnum" propertytype="System.Xml.Serialization.XmlEnumAttribute" />
-        <property name="XmlText" propertytype="System.Xml.Serialization.XmlTextAttribute" />
-        <property name="XmlArray" propertytype="System.Xml.Serialization.XmlArrayAttribute" />
-        <property name="XmlArrayItems" propertytype="System.Xml.Serialization.XmlArrayItemAttributes" />
-        <property name="XmlDefaultValue" propertytype="System.Object" />
-        <property name="XmlIgnore" propertytype="System.Boolean" />
-        <property name="XmlType" propertytype="System.Xml.Serialization.XmlTypeAttribute" />
-        <property name="XmlRoot" propertytype="System.Xml.Serialization.XmlRootAttribute" />
-        <property name="XmlAnyElements" propertytype="System.Xml.Serialization.XmlAnyElementAttributes" />
-        <property name="XmlAnyAttribute" propertytype="System.Xml.Serialization.XmlAnyAttributeAttribute" />
-        <property name="XmlChoiceIdentifier" propertytype="System.Xml.Serialization.XmlChoiceIdentifierAttribute" />
-        <property name="Xmlns" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlChoiceIdentifierAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlChoiceIdentifierAttribute" argnames="" />
-        <constructor name="XmlChoiceIdentifierAttribute(System.String)" argnames="name" />
-        <property name="MemberName" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlCodeExporter" namespace="System.Xml.Serialization">
-        <constructor name="XmlCodeExporter(System.CodeDom.CodeNamespace)" argnames="codeNamespace" />
-        <constructor name="XmlCodeExporter(System.CodeDom.CodeNamespace, System.CodeDom.CodeCompileUnit)" argnames="codeNamespace, codeCompileUnit" />
-        <property name="IncludeMetadata" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
-        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
-        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlTypeMapping, System.String)" argnames="metadata, mapping, ns" returntype="System.Void" />
-        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping, System.String, System.Boolean)" argnames="metadata, member, ns, forceUseMemberName" returntype="System.Void" />
-        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping, System.String)" argnames="metadata, member, ns" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlElementAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlElementAttribute" argnames="" />
-        <constructor name="XmlElementAttribute(System.String)" argnames="elementName" />
-        <constructor name="XmlElementAttribute(System.Type)" argnames="type" />
-        <constructor name="XmlElementAttribute(System.String, System.Type)" argnames="elementName, type" />
-        <property name="Type" propertytype="System.Type" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="DataType" propertytype="System.String" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlElementAttributes" namespace="System.Xml.Serialization">
-        <constructor name="XmlElementAttributes" argnames="" />
-        <property name="Item" propertytype="System.Xml.Serialization.XmlElementAttribute" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Xml.Serialization.XmlElementAttribute)" argnames="index, attribute" returntype="System.Void" />
-        <method name="IndexOf(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Int32" />
-        <method name="Contains(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Boolean" />
-        <method name="Remove(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Void" />
-        <method name="CopyTo(System.Xml.Serialization.XmlElementAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlEnumAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlEnumAttribute" argnames="" />
-        <constructor name="XmlEnumAttribute(System.String)" argnames="name" />
-        <property name="Name" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlIgnoreAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlIgnoreAttribute" argnames="" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlIncludeAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlIncludeAttribute(System.Type)" argnames="type" />
-        <property name="Type" propertytype="System.Type" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlMemberMapping" namespace="System.Xml.Serialization">
-        <property name="Scope" propertytype="System.Xml.Serialization.TypeScope" />
-        <property name="Mapping" propertytype="System.Xml.Serialization.MemberMapping" />
-        <property name="Accessor" propertytype="System.Xml.Serialization.Accessor" />
-        <property name="Any" propertytype="System.Boolean" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="MemberName" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="TypeNamespace" propertytype="System.String" />
-        <property name="TypeFullName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlMapping" namespace="System.Xml.Serialization">
-        <property name="Scope" propertytype="System.Xml.Serialization.TypeScope" />
-        <property name="GenerateSerializer" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlMembersMapping" namespace="System.Xml.Serialization">
-        <property name="Accessor" propertytype="System.Xml.Serialization.ElementAccessor" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="TypeNamespace" propertytype="System.String" />
-        <property name="Item" propertytype="System.Xml.Serialization.XmlMemberMapping" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlNamespaceDeclarationsAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlNamespaceDeclarationsAttribute" argnames="" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlReflectionMember" namespace="System.Xml.Serialization">
-        <constructor name="XmlReflectionMember" argnames="" />
-        <property name="MemberType" propertytype="System.Type" />
-        <property name="XmlAttributes" propertytype="System.Xml.Serialization.XmlAttributes" />
-        <property name="SoapAttributes" propertytype="System.Xml.Serialization.SoapAttributes" />
-        <property name="MemberName" propertytype="System.String" />
-        <property name="IsReturnValue" propertytype="System.Boolean" />
-        <property name="OverrideIsNullable" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlRootAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlRootAttribute" argnames="" />
-        <constructor name="XmlRootAttribute(System.String)" argnames="elementName" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="DataType" propertytype="System.String" />
-        <property name="IsNullable" propertytype="System.Boolean" />
-        <property name="IsNullableSpecified" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaExporter" namespace="System.Xml.Serialization">
-        <constructor name="XmlSchemaExporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
-        <method name="ExportTypeMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Xml.XmlQualifiedName" />
-        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
-        <method name="ExportAnyType(System.String)" argnames="ns" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemas" namespace="System.Xml.Serialization">
-        <constructor name="XmlSchemas" argnames="" />
-        <property name="Item" propertytype="System.Xml.Schema.XmlSchema" />
-        <property name="Item" propertytype="System.Xml.Schema.XmlSchema" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClear" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Int32" />
-        <method name="Add(System.Xml.Serialization.XmlSchemas)" argnames="schemas" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Xml.Schema.XmlSchema)" argnames="index, schema" returntype="System.Void" />
-        <method name="IndexOf(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Int32" />
-        <method name="Contains(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Boolean" />
-        <method name="Remove(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Void" />
-        <method name="CopyTo(System.Xml.Schema.XmlSchema[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Find(System.Xml.XmlQualifiedName, System.Type)" argnames="name, type" returntype="System.Object" />
-        <method name="IsDataSet(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSerializerNamespaces" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializerNamespaces" argnames="" />
-        <constructor name="XmlSerializerNamespaces(System.Xml.Serialization.XmlSerializerNamespaces)" argnames="namespaces" />
-        <constructor name="XmlSerializerNamespaces(System.Xml.XmlQualifiedName[])" argnames="namespaces" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="NamespaceList" propertytype="System.Collections.ArrayList" />
-        <property name="Namespaces" propertytype="System.Collections.Hashtable" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.String, System.String)" argnames="prefix, ns" returntype="System.Void" />
-        <method name="ToArray" argnames="" returntype="System.Xml.XmlQualifiedName[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlTextAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlTextAttribute" argnames="" />
-        <constructor name="XmlTextAttribute(System.Type)" argnames="type" />
-        <property name="Type" propertytype="System.Type" />
-        <property name="DataType" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlTypeAttribute" namespace="System.Xml.Serialization">
-        <constructor name="XmlTypeAttribute" argnames="" />
-        <constructor name="XmlTypeAttribute(System.String)" argnames="typeName" />
-        <property name="IncludeInSchema" propertytype="System.Boolean" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlTypeMapping" namespace="System.Xml.Serialization">
-        <property name="Accessor" propertytype="System.Xml.Serialization.ElementAccessor" />
-        <property name="ElementName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Mapping" propertytype="System.Xml.Serialization.TypeMapping" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="TypeFullName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeIdentifier" namespace="System.Xml.Serialization">
-        <constructor name="CodeIdentifier" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="MakePascal(System.String)" argnames="identifier" returntype="System.String" />
-        <method name="MakeCamel(System.String)" argnames="identifier" returntype="System.String" />
-        <method name="MakeValid(System.String)" argnames="identifier" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SoapReflectionImporter" namespace="System.Xml.Serialization">
-        <constructor name="SoapReflectionImporter" argnames="" />
-        <constructor name="SoapReflectionImporter(System.String)" argnames="defaultNamespace" />
-        <constructor name="SoapReflectionImporter(System.Xml.Serialization.SoapAttributeOverrides)" argnames="attributeOverrides" />
-        <constructor name="SoapReflectionImporter(System.Xml.Serialization.SoapAttributeOverrides, System.String)" argnames="attributeOverrides, defaultNamespace" />
-        <property name="TypeScope" propertytype="System.Xml.Serialization.TypeScope" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IncludeTypes(System.Reflection.ICustomAttributeProvider)" argnames="provider" returntype="System.Void" />
-        <method name="IncludeType(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="ImportTypeMapping(System.Type)" argnames="type" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportTypeMapping(System.Type, System.String)" argnames="type, defaultNamespace" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[])" argnames="elementName, ns, members" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[], System.Boolean, System.Boolean)" argnames="elementName, ns, members, hasWrapperElement, writeAccessors" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[], System.Boolean, System.Boolean, System.Boolean)" argnames="elementName, ns, members, hasWrapperElement, writeAccessors, validate" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlReflectionImporter" namespace="System.Xml.Serialization">
-        <constructor name="XmlReflectionImporter" argnames="" />
-        <constructor name="XmlReflectionImporter(System.String)" argnames="defaultNamespace" />
-        <constructor name="XmlReflectionImporter(System.Xml.Serialization.XmlAttributeOverrides)" argnames="attributeOverrides" />
-        <constructor name="XmlReflectionImporter(System.Xml.Serialization.XmlAttributeOverrides, System.String)" argnames="attributeOverrides, defaultNamespace" />
-        <property name="TypeScope" propertytype="System.Xml.Serialization.TypeScope" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IncludeTypes(System.Reflection.ICustomAttributeProvider)" argnames="provider" returntype="System.Void" />
-        <method name="IncludeType(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="ImportTypeMapping(System.Type)" argnames="type" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportTypeMapping(System.Type, System.String)" argnames="type, defaultNamespace" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportTypeMapping(System.Type, System.Xml.Serialization.XmlRootAttribute)" argnames="type, root" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportTypeMapping(System.Type, System.Xml.Serialization.XmlRootAttribute, System.String)" argnames="type, root, defaultNamespace" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[], System.Boolean)" argnames="elementName, ns, members, hasWrapperElement" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSchemaImporter" namespace="System.Xml.Serialization">
-        <constructor name="XmlSchemaImporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
-        <constructor name="XmlSchemaImporter(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeIdentifiers)" argnames="schemas, typeIdentifiers" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ImportDerivedTypeMapping(System.Xml.XmlQualifiedName, System.Type)" argnames="name, baseType" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportDerivedTypeMapping(System.Xml.XmlQualifiedName, System.Type, System.Boolean)" argnames="name, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportTypeMapping(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Xml.Serialization.XmlTypeMapping" />
-        <method name="ImportMembersMapping(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportAnyType(System.Xml.XmlQualifiedName, System.String)" argnames="typeName, elementName" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportMembersMapping(System.Xml.XmlQualifiedName[])" argnames="names" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="ImportMembersMapping(System.Xml.XmlQualifiedName[], System.Type, System.Boolean)" argnames="names, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlMembersMapping" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSerializationReader" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializationReader" argnames="" />
-        <property name="Reader" propertytype="System.Xml.XmlReader" />
-        <property name="Document" propertytype="System.Xml.XmlDocument" />
-        <method name="InitCallbacks" argnames="" returntype="System.Void" />
-        <method name="InitIDs" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetXsiType" argnames="" returntype="System.Xml.XmlQualifiedName" />
-        <method name="ReadTypedPrimitive(System.Xml.XmlQualifiedName)" argnames="type" returntype="System.Object" />
-        <method name="IsXmlnsAttribute(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="ParseWsdlArrayType(System.Xml.XmlAttribute)" argnames="attr" returntype="System.Void" />
-        <method name="ReadNull" argnames="" returntype="System.Boolean" />
-        <method name="GetNullAttr" argnames="" returntype="System.Boolean" />
-        <method name="ReadNullableString" argnames="" returntype="System.String" />
-        <method name="ReadNullableQualifiedName" argnames="" returntype="System.Xml.XmlQualifiedName" />
-        <method name="ReadElementQualifiedName" argnames="" returntype="System.Xml.XmlQualifiedName" />
-        <method name="ReadXmlNode(System.Boolean)" argnames="wrapped" returntype="System.Xml.XmlNode" />
-        <method name="ToByteArrayBase64(System.String)" argnames="value" returntype="System.Byte[]" />
-        <method name="ToByteArrayBase64(System.Boolean)" argnames="isNull" returntype="System.Byte[]" />
-        <method name="ToByteArrayHex(System.String)" argnames="value" returntype="System.Byte[]" />
-        <method name="ToByteArrayHex(System.Boolean)" argnames="isNull" returntype="System.Byte[]" />
-        <method name="GetArrayLength(System.String, System.String)" argnames="name, ns" returntype="System.Int32" />
-        <method name="ToDateTime(System.String)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDate(System.String)" argnames="value" returntype="System.DateTime" />
-        <method name="ToTime(System.String)" argnames="value" returntype="System.DateTime" />
-        <method name="ToChar(System.String)" argnames="value" returntype="System.Char" />
-        <method name="ToEnum(System.String, System.Collections.Hashtable, System.String)" argnames="value, h, typeName" returntype="System.Int64" />
-        <method name="ToXmlName(System.String)" argnames="value" returntype="System.String" />
-        <method name="ToXmlNCName(System.String)" argnames="value" returntype="System.String" />
-        <method name="ToXmlNmToken(System.String)" argnames="value" returntype="System.String" />
-        <method name="ToXmlNmTokens(System.String)" argnames="value" returntype="System.String" />
-        <method name="ToXmlQualifiedName(System.String)" argnames="value" returntype="System.Xml.XmlQualifiedName" />
-        <method name="UnknownAttribute(System.Object, System.Xml.XmlAttribute)" argnames="o, attr" returntype="System.Void" />
-        <method name="UnknownElement(System.Object, System.Xml.XmlElement)" argnames="o, elem" returntype="System.Void" />
-        <method name="UnknownNode(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="UnreferencedObject(System.String, System.Object)" argnames="id, o" returntype="System.Void" />
-        <method name="CreateUnknownTypeException(System.Xml.XmlQualifiedName)" argnames="type" returntype="System.Exception" />
-        <method name="CreateReadOnlyCollectionException(System.String)" argnames="name" returntype="System.Exception" />
-        <method name="CreateAbstractTypeException(System.String, System.String)" argnames="name, ns" returntype="System.Exception" />
-        <method name="CreateUnknownNodeException" argnames="" returntype="System.Exception" />
-        <method name="CreateUnknownConstantException(System.String, System.Type)" argnames="value, enumType" returntype="System.Exception" />
-        <method name="CreateInvalidCastException(System.Type, System.Object)" argnames="type, value" returntype="System.Exception" />
-        <method name="EnsureArrayIndex(System.Array, System.Int32, System.Type)" argnames="a, index, elementType" returntype="System.Array" />
-        <method name="ShrinkArray(System.Array, System.Int32, System.Type, System.Boolean)" argnames="a, length, elementType, isNullable" returntype="System.Array" />
-        <method name="ReadString(System.String)" argnames="value" returntype="System.String" />
-        <method name="ReadSerializable(System.Xml.Serialization.IXmlSerializable)" argnames="serializable" returntype="System.Xml.Serialization.IXmlSerializable" />
-        <method name="ReadReference(System.String&amp;)" argnames="fixupReference" returntype="System.Boolean" />
-        <method name="AddTarget(System.String, System.Object)" argnames="id, o" returntype="System.Void" />
-        <method name="AddFixup(System.Xml.Serialization.XmlSerializationReader.Fixup)" argnames="fixup" returntype="System.Void" />
-        <method name="AddFixup(System.Xml.Serialization.XmlSerializationReader.CollectionFixup)" argnames="fixup" returntype="System.Void" />
-        <method name="GetTarget(System.String)" argnames="id" returntype="System.Object" />
-        <method name="Referenced(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="FixupArrayRefs(System.Object)" argnames="fixup" returntype="System.Void" />
-        <method name="ReadReferencedElements" argnames="" returntype="System.Void" />
-        <method name="ReadReferencedElement" argnames="" returntype="System.Object" />
-        <method name="ReadReferencedElement(System.String, System.String)" argnames="name, ns" returntype="System.Object" />
-        <method name="ReadReferencingElement(System.String&amp;)" argnames="fixupReference" returntype="System.Object" />
-        <method name="ReadReferencingElement(System.String, System.String, System.String&amp;)" argnames="name, ns, fixupReference" returntype="System.Object" />
-        <method name="ReadReferencingElement(System.String, System.String, System.Boolean, System.String&amp;)" argnames="name, ns, elementCanBeType, fixupReference" returntype="System.Object" />
-        <method name="AddReadCallback(System.String, System.String, System.Type, System.Xml.Serialization.XmlSerializationReadCallback)" argnames="name, ns, type, read" returntype="System.Void" />
-        <method name="ReadEndElement" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSerializationWriter" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializationWriter" argnames="" />
-        <property name="Writer" propertytype="System.Xml.XmlWriter" />
-        <property name="Namespaces" propertytype="System.Collections.ArrayList" />
-        <method name="InitCallbacks" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FromByteArrayBase64(System.Byte[])" argnames="value" returntype="System.Byte[]" />
-        <method name="FromByteArrayHex(System.Byte[])" argnames="value" returntype="System.String" />
-        <method name="FromDateTime(System.DateTime)" argnames="value" returntype="System.String" />
-        <method name="FromDate(System.DateTime)" argnames="value" returntype="System.String" />
-        <method name="FromTime(System.DateTime)" argnames="value" returntype="System.String" />
-        <method name="FromChar(System.Char)" argnames="value" returntype="System.String" />
-        <method name="FromEnum(System.Int64, System.String[], System.Int64[])" argnames="value, values, ids" returntype="System.String" />
-        <method name="FromXmlName(System.String)" argnames="name" returntype="System.String" />
-        <method name="FromXmlNCName(System.String)" argnames="ncName" returntype="System.String" />
-        <method name="FromXmlNmToken(System.String)" argnames="nmToken" returntype="System.String" />
-        <method name="FromXmlNmTokens(System.String)" argnames="nmTokens" returntype="System.String" />
-        <method name="WriteXsiType(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
-        <method name="WriteTypedPrimitive(System.String, System.String, System.Object, System.Boolean)" argnames="name, ns, o, xsiType" returntype="System.Void" />
-        <method name="FromXmlQualifiedName(System.Xml.XmlQualifiedName)" argnames="xmlQualifiedName" returntype="System.String" />
-        <method name="WriteStartElement(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteStartElement(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
-        <method name="WriteStartElement(System.String, System.String, System.Boolean)" argnames="name, ns, writePrefixed" returntype="System.Void" />
-        <method name="WriteStartElement(System.String, System.String, System.Object)" argnames="name, ns, o" returntype="System.Void" />
-        <method name="WriteStartElement(System.String, System.String, System.Object, System.Boolean)" argnames="name, ns, o, writePrefixed" returntype="System.Void" />
-        <method name="WriteNullTagEncoded(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteNullTagEncoded(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
-        <method name="WriteNullTagLiteral(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteNullTagLiteral(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
-        <method name="WriteEmptyTag(System.String)" argnames="name" returntype="System.Void" />
-        <method name="WriteEmptyTag(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
-        <method name="WriteEndElement" argnames="" returntype="System.Void" />
-        <method name="WriteEndElement(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="WriteSerializable(System.Xml.Serialization.IXmlSerializable, System.String, System.String, System.Boolean)" argnames="serializable, name, ns, isNullable" returntype="System.Void" />
-        <method name="WriteNullableStringEncoded(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
-        <method name="WriteNullableStringLiteral(System.String, System.String, System.String)" argnames="name, ns, value" returntype="System.Void" />
-        <method name="WriteNullableStringEncodedRaw(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
-        <method name="WriteNullableStringEncodedRaw(System.String, System.String, System.Byte[], System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
-        <method name="WriteNullableStringLiteralRaw(System.String, System.String, System.String)" argnames="name, ns, value" returntype="System.Void" />
-        <method name="WriteNullableStringLiteralRaw(System.String, System.String, System.Byte[])" argnames="name, ns, value" returntype="System.Void" />
-        <method name="WriteNullableQualifiedNameEncoded(System.String, System.String, System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
-        <method name="WriteNullableQualifiedNameLiteral(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="name, ns, value" returntype="System.Void" />
-        <method name="WriteElementEncoded(System.Xml.XmlNode, System.String, System.String, System.Boolean, System.Boolean)" argnames="node, name, ns, isNullable, any" returntype="System.Void" />
-        <method name="WriteElementLiteral(System.Xml.XmlNode, System.String, System.String, System.Boolean, System.Boolean)" argnames="node, name, ns, isNullable, any" returntype="System.Void" />
-        <method name="CreateUnknownTypeException(System.Object)" argnames="o" returntype="System.Exception" />
-        <method name="CreateUnknownTypeException(System.Type)" argnames="type" returntype="System.Exception" />
-        <method name="CreateMismatchChoiceException(System.String, System.String, System.String)" argnames="value, elementName, enumValue" returntype="System.Exception" />
-        <method name="CreateUnknownAnyElementException(System.String, System.String)" argnames="name, ns" returntype="System.Exception" />
-        <method name="WriteReferencingElement(System.String, System.String, System.Object)" argnames="n, ns, o" returntype="System.Void" />
-        <method name="WriteReferencingElement(System.String, System.String, System.Object, System.Boolean)" argnames="n, ns, o, isNullable" returntype="System.Void" />
-        <method name="WriteId(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="WriteXmlAttribute(System.Xml.XmlNode)" argnames="node" returntype="System.Void" />
-        <method name="WriteXmlAttribute(System.Xml.XmlNode, System.Object)" argnames="node, container" returntype="System.Void" />
-        <method name="WriteAttribute(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="WriteAttribute(System.String, System.String, System.Byte[])" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="WriteAttribute(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteAttribute(System.String, System.Byte[])" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteAttribute(System.String, System.String, System.String, System.String)" argnames="prefix, localName, ns, value" returntype="System.Void" />
-        <method name="WriteValue(System.String)" argnames="value" returntype="System.Void" />
-        <method name="WriteValue(System.Byte[])" argnames="value" returntype="System.Void" />
-        <method name="WriteStartDocument" argnames="" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
-        <method name="WriteElementString(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.Byte[])" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.String, System.Byte[])" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.Byte[], System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
-        <method name="WriteElementStringRaw(System.String, System.String, System.Byte[], System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
-        <method name="WriteElementQualifiedName(System.String, System.Xml.XmlQualifiedName)" argnames="localName, value" returntype="System.Void" />
-        <method name="WriteElementQualifiedName(System.String, System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
-        <method name="WriteElementQualifiedName(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, ns, value" returntype="System.Void" />
-        <method name="WriteElementQualifiedName(System.String, System.String, System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
-        <method name="AddWriteCallback(System.Type, System.String, System.String, System.Xml.Serialization.XmlSerializationWriteCallback)" argnames="type, typeName, typeNs, callback" returntype="System.Void" />
-        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object)" argnames="n, ns, o" returntype="System.Void" />
-        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object, System.Type)" argnames="n, ns, o, ambientType" returntype="System.Void" />
-        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object, System.Type, System.Boolean)" argnames="n, ns, o, ambientType, suppressReference" returntype="System.Void" />
-        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object, System.Type, System.Boolean, System.Boolean)" argnames="n, ns, o, ambientType, suppressReference, isNullable" returntype="System.Void" />
-        <method name="WriteReferencedElements" argnames="" returntype="System.Void" />
-        <method name="TopLevelElement" argnames="" returntype="System.Void" />
-        <method name="WriteNamespaceDeclarations(System.Xml.Serialization.XmlSerializerNamespaces)" argnames="xmlns" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="XmlSerializer" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializer" argnames="" />
-        <constructor name="XmlSerializer(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String)" argnames="type, overrides, extraTypes, root, defaultNamespace" />
-        <constructor name="XmlSerializer(System.Type, System.String)" argnames="type, defaultNamespace" />
-        <constructor name="XmlSerializer(System.Type, System.Xml.Serialization.XmlRootAttribute)" argnames="type, root" />
-        <constructor name="XmlSerializer(System.Type, System.Type[])" argnames="type, extraTypes" />
-        <constructor name="XmlSerializer(System.Type, System.Xml.Serialization.XmlAttributeOverrides)" argnames="type, overrides" />
-        <constructor name="XmlSerializer(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" />
-        <constructor name="XmlSerializer(System.Type)" argnames="type" />
-        <method name="Serialize(System.Object, System.Xml.Serialization.XmlSerializationWriter)" argnames="o, writer" returntype="System.Void" />
-        <method name="CreateWriter" argnames="" returntype="System.Xml.Serialization.XmlSerializationWriter" />
-        <method name="Deserialize(System.Xml.Serialization.XmlSerializationReader)" argnames="reader" returntype="System.Object" />
-        <method name="CreateReader" argnames="" returntype="System.Xml.Serialization.XmlSerializationReader" />
-        <method name="CanDeserialize(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Serialize(System.IO.TextWriter, System.Object)" argnames="textWriter, o" returntype="System.Void" />
-        <method name="Serialize(System.IO.TextWriter, System.Object, System.Xml.Serialization.XmlSerializerNamespaces)" argnames="textWriter, o, namespaces" returntype="System.Void" />
-        <method name="Serialize(System.IO.Stream, System.Object)" argnames="stream, o" returntype="System.Void" />
-        <method name="Serialize(System.IO.Stream, System.Object, System.Xml.Serialization.XmlSerializerNamespaces)" argnames="stream, o, namespaces" returntype="System.Void" />
-        <method name="Serialize(System.Xml.XmlWriter, System.Object)" argnames="xmlWriter, o" returntype="System.Void" />
-        <method name="Serialize(System.Xml.XmlWriter, System.Object, System.Xml.Serialization.XmlSerializerNamespaces)" argnames="xmlWriter, o, namespaces" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream)" argnames="stream" returntype="System.Object" />
-        <method name="Deserialize(System.IO.TextReader)" argnames="textReader" returntype="System.Object" />
-        <method name="Deserialize(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Object" />
-        <method name="FromMappings(System.Xml.Serialization.XmlMapping[])" argnames="mappings" returntype="System.Xml.Serialization.XmlSerializer[]" />
-        <method name="FromTypes(System.Type[])" argnames="types" returntype="System.Xml.Serialization.XmlSerializer[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="UnknownNode" />
-        <event name="UnknownAttribute" />
-        <event name="UnknownElement" />
-        <event name="UnreferencedObject" />
-    </class>
-    <interface name="IXmlSerializable" namespace="System.Xml.Serialization">
-        <method name="WriteXml(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
-        <method name="ReadXml(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
-        <method name="GetSchema" argnames="" returntype="System.Xml.Schema.XmlSchema" />
-    </interface>
-    <delegate name="XmlAttributeEventHandler" namespace="System.Xml.Serialization">
-        <constructor name="XmlAttributeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Xml.Serialization.XmlAttributeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Xml.Serialization.XmlAttributeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="XmlElementEventHandler" namespace="System.Xml.Serialization">
-        <constructor name="XmlElementEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Xml.Serialization.XmlElementEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Xml.Serialization.XmlElementEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="XmlNodeEventHandler" namespace="System.Xml.Serialization">
-        <constructor name="XmlNodeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Xml.Serialization.XmlNodeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Xml.Serialization.XmlNodeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="UnreferencedObjectEventHandler" namespace="System.Xml.Serialization">
-        <constructor name="UnreferencedObjectEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Xml.Serialization.UnreferencedObjectEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Xml.Serialization.UnreferencedObjectEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="XmlSerializationFixupCallback" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializationFixupCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="fixup, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object)" argnames="fixup" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="XmlSerializationCollectionFixupCallback" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializationCollectionFixupCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Object, System.AsyncCallback, System.Object)" argnames="collection, collectionItems, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Object)" argnames="collection, collectionItems" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="XmlSerializationReadCallback" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializationReadCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
-        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke" argnames="" returntype="System.Object" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="XmlSerializationWriteCallback" namespace="System.Xml.Serialization">
-        <constructor name="XmlSerializationWriteCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="o, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System.Xml">
+    <class name="XPathNavigator" namespace="System.Xml.XPath">
+        <constructor name="XPathNavigator" argnames="" />
+        <property name="NodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="IsEmptyElement" propertytype="System.Boolean" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="HasAttributes" propertytype="System.Boolean" />
+        <property name="HasChildren" propertytype="System.Boolean" />
+        <property name="IndexInParent" propertytype="System.Int32" />
+        <method name="IsDescendant(System.Xml.XPath.XPathNavigator)" argnames="nav" returntype="System.Boolean" />
+        <method name="ComparePosition(System.Xml.XPath.XPathNavigator)" argnames="nav" returntype="System.Xml.XmlNodeOrder" />
+        <method name="SelectAncestors(System.String, System.String, System.Boolean)" argnames="name, namespaceURI, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="SelectAncestors(System.Xml.XPath.XPathNodeType, System.Boolean)" argnames="type, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="SelectDescendants(System.String, System.String, System.Boolean)" argnames="name, namespaceURI, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="SelectDescendants(System.Xml.XPath.XPathNodeType, System.Boolean)" argnames="type, matchSelf" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="SelectChildren(System.String, System.String)" argnames="name, namespaceURI" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="SelectChildren(System.Xml.XPath.XPathNodeType)" argnames="type" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="Select(System.String)" argnames="xpath" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="Select(System.Xml.XPath.XPathExpression)" argnames="expr" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="Matches(System.String)" argnames="xpath" returntype="System.Boolean" />
+        <method name="Matches(System.Xml.XPath.XPathExpression)" argnames="expr" returntype="System.Boolean" />
+        <method name="Evaluate(System.String)" argnames="xpath" returntype="System.Object" />
+        <method name="Evaluate(System.Xml.XPath.XPathExpression, System.Xml.XPath.XPathNodeIterator)" argnames="expr, context" returntype="System.Object" />
+        <method name="Evaluate(System.Xml.XPath.XPathExpression)" argnames="expr" returntype="System.Object" />
+        <method name="Compile(System.String)" argnames="xpath" returntype="System.Xml.XPath.XPathExpression" />
+        <method name="IsSamePosition(System.Xml.XPath.XPathNavigator)" argnames="other" returntype="System.Boolean" />
+        <method name="MoveToId(System.String)" argnames="id" returntype="System.Boolean" />
+        <method name="MoveTo(System.Xml.XPath.XPathNavigator)" argnames="other" returntype="System.Boolean" />
+        <method name="MoveToRoot" argnames="" returntype="System.Void" />
+        <method name="MoveToParent" argnames="" returntype="System.Boolean" />
+        <method name="MoveToFirstChild" argnames="" returntype="System.Boolean" />
+        <method name="MoveToFirst" argnames="" returntype="System.Boolean" />
+        <method name="MoveToPrevious" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNext" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNextNamespace(System.Xml.XPath.XPathNamespaceScope)" argnames="namespaceScope" returntype="System.Boolean" />
+        <method name="MoveToFirstNamespace(System.Xml.XPath.XPathNamespaceScope)" argnames="namespaceScope" returntype="System.Boolean" />
+        <method name="MoveToNamespace(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="GetNamespace(System.String)" argnames="name" returntype="System.String" />
+        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
+        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
+        <method name="Clone" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="MoveToFirstNamespace" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNextNamespace" argnames="" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XPathNodeIterator" namespace="System.Xml.XPath">
+        <constructor name="XPathNodeIterator" argnames="" />
+        <property name="Current" propertytype="System.Xml.XPath.XPathNavigator" />
+        <property name="CurrentPosition" propertytype="System.Int32" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="MoveNext" argnames="" returntype="System.Boolean" />
+        <method name="Clone" argnames="" returntype="System.Xml.XPath.XPathNodeIterator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XPathExpression" namespace="System.Xml.XPath">
+        <property name="Expression" propertytype="System.String" />
+        <property name="ReturnType" propertytype="System.Xml.XPath.XPathResultType" />
+        <method name="SetContext(System.Xml.XmlNamespaceManager)" argnames="nsManager" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Xml.XPath.XPathExpression" />
+        <method name="AddSort(System.Object, System.Xml.XPath.XmlSortOrder, System.Xml.XPath.XmlCaseOrder, System.String, System.Xml.XPath.XmlDataType)" argnames="expr, order, caseOrder, lang, dataType" returntype="System.Void" />
+        <method name="AddSort(System.Object, System.Collections.IComparer)" argnames="expr, comparer" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XPathDocument" namespace="System.Xml.XPath">
+        <constructor name="XPathDocument(System.Xml.XmlReader, System.Xml.XmlSpace)" argnames="reader, space" />
+        <constructor name="XPathDocument(System.Xml.XmlReader)" argnames="reader" />
+        <constructor name="XPathDocument(System.IO.TextReader)" argnames="reader" />
+        <constructor name="XPathDocument(System.IO.Stream)" argnames="stream" />
+        <constructor name="XPathDocument(System.String)" argnames="uri" />
+        <constructor name="XPathDocument(System.String, System.Xml.XmlSpace)" argnames="uri, space" />
+        <method name="CreateNavigator" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XPathException" namespace="System.Xml.XPath">
+        <constructor name="XPathException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="XPathException(System.String, System.Exception)" argnames="message, innerException" />
+        <property name="Message" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IXPathNavigable" namespace="System.Xml.XPath">
+        <method name="CreateNavigator" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
+    </interface>
+    <enum name="XmlSortOrder" namespace="System.Xml.XPath">
+        <field name="Ascending" />
+        <field name="Descending" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlCaseOrder" namespace="System.Xml.XPath">
+        <field name="None" />
+        <field name="UpperFirst" />
+        <field name="LowerFirst" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlDataType" namespace="System.Xml.XPath">
+        <field name="Text" />
+        <field name="Number" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XPathResultType" namespace="System.Xml.XPath">
+        <field name="Number" />
+        <field name="String" />
+        <field name="Boolean" />
+        <field name="NodeSet" />
+        <field name="Navigator" />
+        <field name="Any" />
+        <field name="Error" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XPathNamespaceScope" namespace="System.Xml.XPath">
+        <field name="All" />
+        <field name="ExcludeXml" />
+        <field name="Local" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XPathNodeType" namespace="System.Xml.XPath">
+        <field name="Root" />
+        <field name="Element" />
+        <field name="Attribute" />
+        <field name="Namespace" />
+        <field name="Text" />
+        <field name="SignificantWhitespace" />
+        <field name="Whitespace" />
+        <field name="ProcessingInstruction" />
+        <field name="Comment" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LexKind" namespace="System.Xml.XPath">
+        <field name="Comma" />
+        <field name="Slash" />
+        <field name="At" />
+        <field name="Dot" />
+        <field name="LParens" />
+        <field name="RParens" />
+        <field name="LBracket" />
+        <field name="RBracket" />
+        <field name="Star" />
+        <field name="Plus" />
+        <field name="Minus" />
+        <field name="Eq" />
+        <field name="Lt" />
+        <field name="Gt" />
+        <field name="Bang" />
+        <field name="Dollar" />
+        <field name="Apos" />
+        <field name="Quote" />
+        <field name="Union" />
+        <field name="Ne" />
+        <field name="Le" />
+        <field name="Ge" />
+        <field name="And" />
+        <field name="Or" />
+        <field name="DotDot" />
+        <field name="SlashSlash" />
+        <field name="Name" />
+        <field name="String" />
+        <field name="Number" />
+        <field name="Axe" />
+        <field name="Eof" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="XmlNameTable" namespace="System.Xml">
+        <constructor name="XmlNameTable" argnames="" />
+        <method name="Add(System.String)" argnames="array" returntype="System.String" />
+        <method name="Add(System.Char[], System.Int32, System.Int32)" argnames="array, offset, length" returntype="System.String" />
+        <method name="Get(System.String)" argnames="array" returntype="System.String" />
+        <method name="Get(System.Char[], System.Int32, System.Int32)" argnames="array, offset, length" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NameTable" namespace="System.Xml">
+        <constructor name="NameTable" argnames="" />
+        <method name="Add(System.String)" argnames="key" returntype="System.String" />
+        <method name="Add(System.Char[], System.Int32, System.Int32)" argnames="key, start, len" returntype="System.String" />
+        <method name="Get(System.String)" argnames="value" returntype="System.String" />
+        <method name="Get(System.Char[], System.Int32, System.Int32)" argnames="key, start, len" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNode" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="NullNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" propertytype="System.Xml.XmlNode" />
+        <property name="IsContainer" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
+        <property name="HasChildNodes" propertytype="System.Boolean" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="InnerText" propertytype="System.String" />
+        <property name="OuterXml" propertytype="System.String" />
+        <property name="InnerXml" propertytype="System.String" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="Document" propertytype="System.Xml.XmlDocument" />
+        <property name="Item" propertytype="System.Xml.XmlElement" />
+        <property name="Item" propertytype="System.Xml.XmlElement" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="XPLocalName" propertytype="System.String" />
+        <method name="CreateNavigator" argnames="" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" returntype="System.String" />
+        <method name="RemoveAll" argnames="" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAttribute" namespace="System.Xml">
+        <property name="XmlName" propertytype="System.Xml.XmlName" />
+        <property name="ParentNode" propertytype="System.Xml.XmlNode" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
+        <property name="Value" propertytype="System.String" />
+        <property name="InnerText" propertytype="System.String" />
+        <property name="IsContainer" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
+        <property name="Specified" propertytype="System.Boolean" />
+        <property name="OwnerElement" propertytype="System.Xml.XmlElement" />
+        <property name="InnerXml" propertytype="System.String" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="XPLocalName" propertytype="System.String" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNamedNodeMap" namespace="System.Xml">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Nodes" propertytype="System.Collections.ArrayList" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveNamedItem(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNode" />
+        <method name="GetNamedItem(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNode" />
+        <method name="Item(System.Int32)" argnames="index" returntype="System.Xml.XmlNode" />
+        <method name="RemoveNamedItem(System.String)" argnames="name" returntype="System.Xml.XmlNode" />
+        <method name="SetNamedItem(System.Xml.XmlNode)" argnames="node" returntype="System.Xml.XmlNode" />
+        <method name="GetNamedItem(System.String)" argnames="name" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAttributeCollection" namespace="System.Xml">
+        <property name="ItemOf" propertytype="System.Xml.XmlAttribute" />
+        <property name="ItemOf" propertytype="System.Xml.XmlAttribute" />
+        <property name="ItemOf" propertytype="System.Xml.XmlAttribute" />
+        <property name="Count" inherited="System.Xml.XmlNamedNodeMap" propertytype="System.Int32" />
+        <method name="RemoveAll" argnames="" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="i" returntype="System.Xml.XmlAttribute" />
+        <method name="Remove(System.Xml.XmlAttribute)" argnames="node" returntype="System.Xml.XmlAttribute" />
+        <method name="InsertAfter(System.Xml.XmlAttribute, System.Xml.XmlAttribute)" argnames="newNode, refNode" returntype="System.Xml.XmlAttribute" />
+        <method name="InsertBefore(System.Xml.XmlAttribute, System.Xml.XmlAttribute)" argnames="newNode, refNode" returntype="System.Xml.XmlAttribute" />
+        <method name="Append(System.Xml.XmlAttribute)" argnames="node" returntype="System.Xml.XmlAttribute" />
+        <method name="Prepend(System.Xml.XmlAttribute)" argnames="node" returntype="System.Xml.XmlAttribute" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveNamedItem(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
+        <method name="GetNamedItem(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
+        <method name="Item(System.Int32)" argnames="index" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
+        <method name="RemoveNamedItem(System.String)" argnames="name" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
+        <method name="SetNamedItem(System.Xml.XmlNode)" argnames="node" returntype="System.Xml.XmlNode" />
+        <method name="GetNamedItem(System.String)" argnames="name" inherited="System.Xml.XmlNamedNodeMap" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CopyTo(System.Xml.XmlAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlLinkedNode" namespace="System.Xml">
+        <property name="PreviousSibling" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" propertytype="System.Xml.XmlNode" />
+        <property name="Name" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="NodeType" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeType" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="LocalName" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlCharacterData" namespace="System.Xml">
+        <property name="Value" propertytype="System.String" />
+        <property name="InnerText" propertytype="System.String" />
+        <property name="Data" propertytype="System.String" />
+        <property name="Length" propertytype="System.Int32" />
+        <property name="Builder" propertytype="System.Text.StringBuilder" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="Name" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="NodeType" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeType" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="LocalName" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" returntype="System.Void" />
+        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" returntype="System.Void" />
+        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" returntype="System.Void" />
+        <method name="AppendData(System.String)" argnames="strData" returntype="System.Void" />
+        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" returntype="System.String" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlCDataSection" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="Value" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNodeList" namespace="System.Xml">
+        <constructor name="XmlNodeList" argnames="" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="ItemOf" propertytype="System.Xml.XmlNode" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Item(System.Int32)" argnames="index" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlComment" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="Value" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlConvert" namespace="System.Xml">
+        <constructor name="XmlConvert" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EncodeName(System.String)" argnames="name" returntype="System.String" />
+        <method name="EncodeNmToken(System.String)" argnames="name" returntype="System.String" />
+        <method name="EncodeLocalName(System.String)" argnames="name" returntype="System.String" />
+        <method name="DecodeName(System.String)" argnames="name" returntype="System.String" />
+        <method name="VerifyName(System.String)" argnames="name" returntype="System.String" />
+        <method name="VerifyNCName(System.String)" argnames="name" returntype="System.String" />
+        <method name="ToString(System.Boolean)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Char)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Decimal)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.SByte)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Int16)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Int32)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Int64)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Byte)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.UInt16)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.UInt32)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.UInt64)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Single)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Double)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.TimeSpan)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.DateTime)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.DateTime, System.String)" argnames="value, format" returntype="System.String" />
+        <method name="ToString(System.Guid)" argnames="value" returntype="System.String" />
+        <method name="ToBoolean(System.String)" argnames="s" returntype="System.Boolean" />
+        <method name="ToChar(System.String)" argnames="s" returntype="System.Char" />
+        <method name="ToDecimal(System.String)" argnames="s" returntype="System.Decimal" />
+        <method name="ToSByte(System.String)" argnames="s" returntype="System.SByte" />
+        <method name="ToInt16(System.String)" argnames="s" returntype="System.Int16" />
+        <method name="ToInt32(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="ToInt64(System.String)" argnames="s" returntype="System.Int64" />
+        <method name="ToByte(System.String)" argnames="s" returntype="System.Byte" />
+        <method name="ToUInt16(System.String)" argnames="s" returntype="System.UInt16" />
+        <method name="ToUInt32(System.String)" argnames="s" returntype="System.UInt32" />
+        <method name="ToUInt64(System.String)" argnames="s" returntype="System.UInt64" />
+        <method name="ToSingle(System.String)" argnames="s" returntype="System.Single" />
+        <method name="ToDouble(System.String)" argnames="s" returntype="System.Double" />
+        <method name="ToTimeSpan(System.String)" argnames="s" returntype="System.TimeSpan" />
+        <method name="ToDateTime(System.String)" argnames="s" returntype="System.DateTime" />
+        <method name="ToDateTime(System.String, System.String)" argnames="s, format" returntype="System.DateTime" />
+        <method name="ToDateTime(System.String, System.String[])" argnames="s, formats" returntype="System.DateTime" />
+        <method name="ToGuid(System.String)" argnames="s" returntype="System.Guid" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlDeclaration" namespace="System.Xml">
+        <property name="Version" propertytype="System.String" />
+        <property name="Encoding" propertytype="System.String" />
+        <property name="Standalone" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <property name="InnerText" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlDocument" namespace="System.Xml">
+        <constructor name="XmlDocument" argnames="" />
+        <constructor name="XmlDocument(System.Xml.XmlNameTable)" argnames="nt" />
+        <property name="SchemaInformation" propertytype="System.Xml.Schema.SchemaInfo" />
+        <property name="NullNode" propertytype="System.Xml.XmlNode" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="DocumentType" propertytype="System.Xml.XmlDocumentType" />
+        <property name="Declaration" propertytype="System.Xml.XmlDeclaration" />
+        <property name="Implementation" propertytype="System.Xml.XmlImplementation" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="DocumentElement" propertytype="System.Xml.XmlElement" />
+        <property name="IsContainer" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
+        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
+        <property name="HasSetResolver" propertytype="System.Boolean" />
+        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="PreserveWhitespace" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Entities" propertytype="System.Xml.XmlNamedNodeMap" />
+        <property name="IsLoading" propertytype="System.Boolean" />
+        <property name="ActualLoadingStatus" propertytype="System.Boolean" />
+        <property name="TextEncoding" propertytype="System.Text.Encoding" />
+        <property name="InnerXml" propertytype="System.String" />
+        <property name="Version" propertytype="System.String" />
+        <property name="Encoding" propertytype="System.String" />
+        <property name="Standalone" propertytype="System.String" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="Save(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Save(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
+        <method name="Save(System.IO.Stream)" argnames="outStream" returntype="System.Void" />
+        <method name="Save(System.String)" argnames="filename" returntype="System.Void" />
+        <method name="LoadXml(System.String)" argnames="xml" returntype="System.Void" />
+        <method name="Load(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
+        <method name="Load(System.IO.TextReader)" argnames="txtReader" returntype="System.Void" />
+        <method name="Load(System.IO.Stream)" argnames="inStream" returntype="System.Void" />
+        <method name="Load(System.String)" argnames="filename" returntype="System.Void" />
+        <method name="ReadNode(System.Xml.XmlReader)" argnames="reader" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String)" argnames="type, name, namespaceURI" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.String, System.String, System.String)" argnames="nodeTypeString, name, namespaceURI" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String, System.String)" argnames="type, prefix, name, namespaceURI" returntype="System.Xml.XmlNode" />
+        <method name="CreateElement(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" returntype="System.Xml.XmlElement" />
+        <method name="CreateAttribute(System.String, System.String, System.String)" argnames="prefix, localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
+        <method name="ImportNode(System.Xml.XmlNode, System.Boolean)" argnames="node, deep" returntype="System.Xml.XmlNode" />
+        <method name="GetElementById(System.String)" argnames="elementId" returntype="System.Xml.XmlElement" />
+        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNodeList" />
+        <method name="GetElementsByTagName(System.String)" argnames="name" returntype="System.Xml.XmlNodeList" />
+        <method name="CreateWhitespace(System.String)" argnames="text" returntype="System.Xml.XmlWhitespace" />
+        <method name="CreateSignificantWhitespace(System.String)" argnames="text" returntype="System.Xml.XmlSignificantWhitespace" />
+        <method name="CreateTextNode(System.String)" argnames="text" returntype="System.Xml.XmlText" />
+        <method name="CreateXmlDeclaration(System.String, System.String, System.String)" argnames="version, encoding, standalone" returntype="System.Xml.XmlDeclaration" />
+        <method name="CreateProcessingInstruction(System.String, System.String)" argnames="target, data" returntype="System.Xml.XmlProcessingInstruction" />
+        <method name="CreateEntityReference(System.String)" argnames="name" returntype="System.Xml.XmlEntityReference" />
+        <method name="CreateDocumentFragment" argnames="" returntype="System.Xml.XmlDocumentFragment" />
+        <method name="CreateDocumentType(System.String, System.String, System.String, System.String)" argnames="name, publicId, systemId, internalSubset" returntype="System.Xml.XmlDocumentType" />
+        <method name="CreateComment(System.String)" argnames="data" returntype="System.Xml.XmlComment" />
+        <method name="CreateCDataSection(System.String)" argnames="data" returntype="System.Xml.XmlCDataSection" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="xw" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateAttribute(System.String)" argnames="name" returntype="System.Xml.XmlAttribute" />
+        <method name="CreateElement(System.String)" argnames="name" returntype="System.Xml.XmlElement" />
+        <method name="CreateAttribute(System.String, System.String)" argnames="qualifiedName, namespaceURI" returntype="System.Xml.XmlAttribute" />
+        <method name="CreateElement(System.String, System.String)" argnames="qualifiedName, namespaceURI" returntype="System.Xml.XmlElement" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="NodeInserting" />
+        <event name="NodeInserted" />
+        <event name="NodeRemoving" />
+        <event name="NodeRemoved" />
+        <event name="NodeChanging" />
+        <event name="NodeChanged" />
+    </class>
+    <class name="XmlDocumentFragment" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="ParentNode" propertytype="System.Xml.XmlNode" />
+        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
+        <property name="InnerXml" propertytype="System.String" />
+        <property name="IsContainer" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlDocumentType" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Entities" propertytype="System.Xml.XmlNamedNodeMap" />
+        <property name="Notations" propertytype="System.Xml.XmlNamedNodeMap" />
+        <property name="PublicId" propertytype="System.String" />
+        <property name="SystemId" propertytype="System.String" />
+        <property name="InternalSubset" propertytype="System.String" />
+        <property name="ParseWithNamespaces" propertytype="System.Boolean" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlWriter" namespace="System.Xml">
+        <constructor name="XmlWriter" argnames="" />
+        <property name="WriteState" propertytype="System.Xml.WriteState" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <method name="WriteNode(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" returntype="System.Void" />
+        <method name="WriteAttributes(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" returntype="System.Void" />
+        <method name="WriteQualifiedName(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
+        <method name="WriteName(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteNmToken(System.String)" argnames="name" returntype="System.Void" />
+        <method name="LookupPrefix(System.String)" argnames="ns" returntype="System.String" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="WriteBinHex(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteBase64(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteRaw(System.String)" argnames="data" returntype="System.Void" />
+        <method name="WriteRaw(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteChars(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteSurrogateCharEntity(System.Char, System.Char)" argnames="lowChar, highChar" returntype="System.Void" />
+        <method name="WriteString(System.String)" argnames="text" returntype="System.Void" />
+        <method name="WriteWhitespace(System.String)" argnames="ws" returntype="System.Void" />
+        <method name="WriteCharEntity(System.Char)" argnames="ch" returntype="System.Void" />
+        <method name="WriteEntityRef(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteProcessingInstruction(System.String, System.String)" argnames="name, text" returntype="System.Void" />
+        <method name="WriteComment(System.String)" argnames="text" returntype="System.Void" />
+        <method name="WriteCData(System.String)" argnames="text" returntype="System.Void" />
+        <method name="WriteEndAttribute" argnames="" returntype="System.Void" />
+        <method name="WriteStartAttribute(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
+        <method name="WriteFullEndElement" argnames="" returntype="System.Void" />
+        <method name="WriteEndElement" argnames="" returntype="System.Void" />
+        <method name="WriteStartElement(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
+        <method name="WriteDocType(System.String, System.String, System.String, System.String)" argnames="name, pubid, sysid, subset" returntype="System.Void" />
+        <method name="WriteEndDocument" argnames="" returntype="System.Void" />
+        <method name="WriteStartDocument(System.Boolean)" argnames="standalone" returntype="System.Void" />
+        <method name="WriteStartDocument" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="WriteStartElement(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
+        <method name="WriteStartElement(System.String)" argnames="localName" returntype="System.Void" />
+        <method name="WriteAttributeString(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="WriteAttributeString(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteAttributeString(System.String, System.String, System.String, System.String)" argnames="prefix, localName, ns, value" returntype="System.Void" />
+        <method name="WriteStartAttribute(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlTextWriter" namespace="System.Xml">
+        <constructor name="XmlTextWriter(System.IO.Stream, System.Text.Encoding)" argnames="w, encoding" />
+        <constructor name="XmlTextWriter(System.String, System.Text.Encoding)" argnames="filename, encoding" />
+        <constructor name="XmlTextWriter(System.IO.TextWriter)" argnames="w" />
+        <property name="BaseStream" propertytype="System.IO.Stream" />
+        <property name="Namespaces" propertytype="System.Boolean" />
+        <property name="Formatting" propertytype="System.Xml.Formatting" />
+        <property name="Indentation" propertytype="System.Int32" />
+        <property name="IndentChar" propertytype="System.Char" />
+        <property name="QuoteChar" propertytype="System.Char" />
+        <property name="WriteState" propertytype="System.Xml.WriteState" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <method name="WriteNode(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteAttributes(System.Xml.XmlReader, System.Boolean)" argnames="reader, defattr" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteQualifiedName(System.String, System.String)" argnames="localName, ns" returntype="System.Void" />
+        <method name="WriteName(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteNmToken(System.String)" argnames="name" returntype="System.Void" />
+        <method name="LookupPrefix(System.String)" argnames="ns" returntype="System.String" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="WriteBinHex(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteBase64(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteRaw(System.String)" argnames="data" returntype="System.Void" />
+        <method name="WriteRaw(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteChars(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteSurrogateCharEntity(System.Char, System.Char)" argnames="lowChar, highChar" returntype="System.Void" />
+        <method name="WriteString(System.String)" argnames="text" returntype="System.Void" />
+        <method name="WriteWhitespace(System.String)" argnames="ws" returntype="System.Void" />
+        <method name="WriteCharEntity(System.Char)" argnames="ch" returntype="System.Void" />
+        <method name="WriteEntityRef(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteProcessingInstruction(System.String, System.String)" argnames="name, text" returntype="System.Void" />
+        <method name="WriteComment(System.String)" argnames="text" returntype="System.Void" />
+        <method name="WriteCData(System.String)" argnames="text" returntype="System.Void" />
+        <method name="WriteEndAttribute" argnames="" returntype="System.Void" />
+        <method name="WriteStartAttribute(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
+        <method name="WriteFullEndElement" argnames="" returntype="System.Void" />
+        <method name="WriteEndElement" argnames="" returntype="System.Void" />
+        <method name="WriteStartElement(System.String, System.String, System.String)" argnames="prefix, localName, ns" returntype="System.Void" />
+        <method name="WriteDocType(System.String, System.String, System.String, System.String)" argnames="name, pubid, sysid, subset" returntype="System.Void" />
+        <method name="WriteEndDocument" argnames="" returntype="System.Void" />
+        <method name="WriteStartDocument(System.Boolean)" argnames="standalone" returntype="System.Void" />
+        <method name="WriteStartDocument" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="WriteStartElement(System.String, System.String)" argnames="localName, ns" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteStartElement(System.String)" argnames="localName" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteAttributeString(System.String, System.String, System.String)" argnames="localName, ns, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteAttributeString(System.String, System.String)" argnames="localName, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteAttributeString(System.String, System.String, System.String, System.String)" argnames="prefix, localName, ns, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteStartAttribute(System.String, System.String)" argnames="localName, ns" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String)" argnames="localName, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String, System.String)" argnames="localName, ns, value" inherited="System.Xml.XmlWriter" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlElement" namespace="System.Xml">
+        <property name="XmlName" propertytype="System.Xml.XmlName" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="OwnerDocument" propertytype="System.Xml.XmlDocument" />
+        <property name="IsContainer" propertytype="System.Boolean" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
+        <property name="Attributes" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="HasAttributes" propertytype="System.Boolean" />
+        <property name="InnerXml" propertytype="System.String" />
+        <property name="InnerText" propertytype="System.String" />
+        <property name="NextSibling" propertytype="System.Xml.XmlNode" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="XPLocalName" propertytype="System.String" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="RemoveAllAttributes" argnames="" returntype="System.Void" />
+        <method name="RemoveAttributeAt(System.Int32)" argnames="i" returntype="System.Xml.XmlNode" />
+        <method name="HasAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
+        <method name="HasAttribute(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlNodeList" />
+        <method name="RemoveAttributeNode(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
+        <method name="SetAttributeNode(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
+        <method name="GetAttributeNode(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Xml.XmlAttribute" />
+        <method name="RemoveAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Void" />
+        <method name="SetAttribute(System.String, System.String, System.String)" argnames="localName, namespaceURI, value" returntype="System.String" />
+        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
+        <method name="GetElementsByTagName(System.String)" argnames="name" returntype="System.Xml.XmlNodeList" />
+        <method name="RemoveAttributeNode(System.Xml.XmlAttribute)" argnames="oldAttr" returntype="System.Xml.XmlAttribute" />
+        <method name="SetAttributeNode(System.Xml.XmlAttribute)" argnames="newAttr" returntype="System.Xml.XmlAttribute" />
+        <method name="GetAttributeNode(System.String)" argnames="name" returntype="System.Xml.XmlAttribute" />
+        <method name="RemoveAttribute(System.String)" argnames="name" returntype="System.Void" />
+        <method name="SetAttribute(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlEntity" namespace="System.Xml">
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="InnerText" propertytype="System.String" />
+        <property name="IsContainer" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="PublicId" propertytype="System.String" />
+        <property name="SystemId" propertytype="System.String" />
+        <property name="NotationName" propertytype="System.String" />
+        <property name="OuterXml" propertytype="System.String" />
+        <property name="InnerXml" propertytype="System.String" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlReader" namespace="System.Xml">
+        <constructor name="XmlReader" argnames="" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="HasValue" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="IsEmptyElement" propertytype="System.Boolean" />
+        <property name="IsDefault" propertytype="System.Boolean" />
+        <property name="QuoteChar" propertytype="System.Char" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="AttributeCount" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="CanResolveEntity" propertytype="System.Boolean" />
+        <property name="EOF" propertytype="System.Boolean" />
+        <property name="ReadState" propertytype="System.Xml.ReadState" />
+        <property name="HasAttributes" propertytype="System.Boolean" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
+        <property name="StandAlone" propertytype="System.Boolean" />
+        <property name="SchemaTypeObject" propertytype="System.Object" />
+        <property name="TypedValueObject" propertytype="System.Object" />
+        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
+        <method name="ResolveEntity" argnames="" returntype="System.Void" />
+        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
+        <method name="ReadOuterXml" argnames="" returntype="System.String" />
+        <method name="ReadInnerXml" argnames="" returntype="System.String" />
+        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" returntype="System.Boolean" />
+        <method name="IsStartElement(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="IsStartElement" argnames="" returntype="System.Boolean" />
+        <method name="ReadEndElement" argnames="" returntype="System.Void" />
+        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" returntype="System.String" />
+        <method name="ReadElementString(System.String)" argnames="name" returntype="System.String" />
+        <method name="ReadElementString" argnames="" returntype="System.String" />
+        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" returntype="System.Void" />
+        <method name="ReadStartElement(System.String)" argnames="name" returntype="System.Void" />
+        <method name="ReadStartElement" argnames="" returntype="System.Void" />
+        <method name="MoveToContent" argnames="" returntype="System.Xml.XmlNodeType" />
+        <method name="ReadString" argnames="" returntype="System.String" />
+        <method name="Skip" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Read" argnames="" returntype="System.Boolean" />
+        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
+        <method name="MoveToAttribute(System.String, System.String)" argnames="name, ns" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetAttribute(System.String, System.String)" argnames="name, namespaceURI" returntype="System.String" />
+        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IsName(System.String)" argnames="str" returntype="System.Boolean" />
+        <method name="IsNameToken(System.String)" argnames="str" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlTextReader" namespace="System.Xml">
+        <constructor name="XmlTextReader" argnames="" />
+        <constructor name="XmlTextReader(System.Xml.XmlNameTable)" argnames="nt" />
+        <constructor name="XmlTextReader(System.IO.Stream)" argnames="input" />
+        <constructor name="XmlTextReader(System.String, System.IO.Stream)" argnames="url, input" />
+        <constructor name="XmlTextReader(System.IO.Stream, System.Xml.XmlNameTable)" argnames="input, nt" />
+        <constructor name="XmlTextReader(System.String, System.IO.Stream, System.Xml.XmlNameTable)" argnames="url, input, nt" />
+        <constructor name="XmlTextReader(System.IO.TextReader)" argnames="input" />
+        <constructor name="XmlTextReader(System.String, System.IO.TextReader)" argnames="url, input" />
+        <constructor name="XmlTextReader(System.IO.TextReader, System.Xml.XmlNameTable)" argnames="input, nt" />
+        <constructor name="XmlTextReader(System.String, System.IO.TextReader, System.Xml.XmlNameTable)" argnames="url, input, nt" />
+        <constructor name="XmlTextReader(System.IO.Stream, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
+        <constructor name="XmlTextReader(System.String, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
+        <constructor name="XmlTextReader(System.String)" argnames="url" />
+        <constructor name="XmlTextReader(System.String, System.Xml.XmlNameTable)" argnames="url, nt" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="HasValue" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="IsEmptyElement" propertytype="System.Boolean" />
+        <property name="IsDefault" propertytype="System.Boolean" />
+        <property name="QuoteChar" propertytype="System.Char" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="AttributeCount" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="EOF" propertytype="System.Boolean" />
+        <property name="ReadState" propertytype="System.Xml.ReadState" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="Namespaces" propertytype="System.Boolean" />
+        <property name="Normalization" propertytype="System.Boolean" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <property name="WhitespaceHandling" propertytype="System.Xml.WhitespaceHandling" />
+        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
+        <property name="StandAlone" propertytype="System.Boolean" />
+        <property name="IsAttrText" propertytype="System.Boolean" />
+        <property name="RawValue" propertytype="System.String" />
+        <property name="DTD" propertytype="System.Xml.Schema.DtdParser" />
+        <property name="ValueContainEntity" propertytype="System.Xml.ValueContainEntity" />
+        <property name="IsXmlNsAttribute" propertytype="System.Boolean" />
+        <property name="AttributeValue" propertytype="System.String" />
+        <property name="SchemaTypeObject" propertytype="System.Object" />
+        <property name="TypedValueObject" propertytype="System.Object" />
+        <property name="PartialContentNodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="IsReadingAttributeValue" propertytype="System.Boolean" />
+        <property name="CheckWhitespaceNodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="CanResolveEntity" inherited="System.Xml.XmlReader" propertytype="System.Boolean" />
+        <property name="HasAttributes" inherited="System.Xml.XmlReader" propertytype="System.Boolean" />
+        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
+        <method name="ResolveEntity" argnames="" returntype="System.Void" />
+        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
+        <method name="ReadOuterXml" argnames="" returntype="System.String" />
+        <method name="ReadInnerXml" argnames="" returntype="System.String" />
+        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="IsStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="IsStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="ReadEndElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadElementString(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadElementString" argnames="" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="MoveToContent" argnames="" inherited="System.Xml.XmlReader" returntype="System.Xml.XmlNodeType" />
+        <method name="ReadString" argnames="" returntype="System.String" />
+        <method name="Skip" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Read" argnames="" returntype="System.Boolean" />
+        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
+        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
+        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ResetState" argnames="" returntype="System.Void" />
+        <method name="GetRemainder" argnames="" returntype="System.IO.TextReader" />
+        <method name="ReadChars(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
+        <method name="ReadBase64(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, len" returntype="System.Int32" />
+        <method name="ReadBinHex(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, len" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlEntityReference" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsContainer" propertytype="System.Boolean" />
+        <property name="LastNode" propertytype="System.Xml.XmlLinkedNode" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="ChildBaseURI" propertytype="System.String" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlException" namespace="System.Xml">
+        <constructor name="XmlException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="XmlException(System.String, System.Exception)" argnames="message, innerException" />
+        <property name="Message" propertytype="System.String" />
+        <property name="ErrorCode" propertytype="System.String" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <property name="msg" propertytype="System.String[]" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlImplementation" namespace="System.Xml">
+        <constructor name="XmlImplementation" argnames="" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <method name="CreateDocument" argnames="" returntype="System.Xml.XmlDocument" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="HasFeature(System.String, System.String)" argnames="strFeature, strVersion" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNamespaceManager" namespace="System.Xml">
+        <constructor name="XmlNamespaceManager(System.Xml.XmlNameTable)" argnames="nameTable" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="DefaultNamespace" propertytype="System.String" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="HasNamespace(System.String)" argnames="prefix" returntype="System.Boolean" />
+        <method name="LookupPrefix(System.String)" argnames="uri" returntype="System.String" />
+        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
+        <method name="RemoveNamespace(System.String, System.String)" argnames="prefix, uri" returntype="System.Void" />
+        <method name="AddNamespace(System.String, System.String)" argnames="prefix, uri" returntype="System.Void" />
+        <method name="PopScope" argnames="" returntype="System.Boolean" />
+        <method name="PushScope" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNodeChangedEventArgs" namespace="System.Xml">
+        <property name="Action" propertytype="System.Xml.XmlNodeChangedAction" />
+        <property name="Node" propertytype="System.Xml.XmlNode" />
+        <property name="OldParent" propertytype="System.Xml.XmlNode" />
+        <property name="NewParent" propertytype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNodeReader" namespace="System.Xml">
+        <constructor name="XmlNodeReader(System.Xml.XmlNode)" argnames="node" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="HasValue" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="CanResolveEntity" propertytype="System.Boolean" />
+        <property name="IsEmptyElement" propertytype="System.Boolean" />
+        <property name="IsDefault" propertytype="System.Boolean" />
+        <property name="QuoteChar" propertytype="System.Char" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="AttributeCount" propertytype="System.Int32" />
+        <property name="EOF" propertytype="System.Boolean" />
+        <property name="ReadState" propertytype="System.Xml.ReadState" />
+        <property name="HasAttributes" propertytype="System.Boolean" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
+        <method name="ResolveEntity" argnames="" returntype="System.Void" />
+        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
+        <method name="ReadOuterXml" argnames="" returntype="System.String" />
+        <method name="ReadInnerXml" argnames="" returntype="System.String" />
+        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="IsStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="IsStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="ReadEndElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadElementString(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadElementString" argnames="" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="MoveToContent" argnames="" inherited="System.Xml.XmlReader" returntype="System.Xml.XmlNodeType" />
+        <method name="ReadString" argnames="" returntype="System.String" />
+        <method name="Skip" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Read" argnames="" returntype="System.Boolean" />
+        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.Int32)" argnames="attributeIndex" returntype="System.Void" />
+        <method name="MoveToAttribute(System.String, System.String)" argnames="name, namespaceURI" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="GetAttribute(System.Int32)" argnames="attributeIndex" returntype="System.String" />
+        <method name="GetAttribute(System.String, System.String)" argnames="name, namespaceURI" returntype="System.String" />
+        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNotation" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="PublicId" propertytype="System.String" />
+        <property name="SystemId" propertytype="System.String" />
+        <property name="OuterXml" propertytype="System.String" />
+        <property name="InnerXml" propertytype="System.String" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlParserContext" namespace="System.Xml">
+        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.Xml.XmlSpace)" argnames="nt, nsMgr, xmlLang, xmlSpace" />
+        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.Xml.XmlSpace, System.Text.Encoding)" argnames="nt, nsMgr, xmlLang, xmlSpace, enc" />
+        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.String, System.String, System.String, System.String, System.String, System.Xml.XmlSpace)" argnames="nt, nsMgr, docTypeName, pubId, sysId, internalSubset, baseURI, xmlLang, xmlSpace" />
+        <constructor name="XmlParserContext(System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager, System.String, System.String, System.String, System.String, System.String, System.String, System.Xml.XmlSpace, System.Text.Encoding)" argnames="nt, nsMgr, docTypeName, pubId, sysId, internalSubset, baseURI, xmlLang, xmlSpace, enc" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
+        <property name="DocTypeName" propertytype="System.String" />
+        <property name="PublicId" propertytype="System.String" />
+        <property name="SystemId" propertytype="System.String" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="InternalSubset" propertytype="System.String" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlProcessingInstruction" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Target" propertytype="System.String" />
+        <property name="Data" propertytype="System.String" />
+        <property name="InnerText" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="XPLocalName" propertytype="System.String" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlQualifiedName" namespace="System.Xml">
+        <constructor name="XmlQualifiedName" argnames="" />
+        <constructor name="XmlQualifiedName(System.String)" argnames="name" />
+        <constructor name="XmlQualifiedName(System.String, System.String)" argnames="name, ns" />
+        <field name="Empty" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ToString(System.String, System.String)" argnames="name, ns" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <operator name="op_Equality(System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="a, b" />
+        <operator name="op_Inequality(System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="a, b" />
+    </class>
+    <class name="XmlResolver" namespace="System.Xml">
+        <constructor name="XmlResolver" argnames="" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <method name="ResolveUri(System.Uri, System.String)" argnames="baseUri, relativeUri" returntype="System.Uri" />
+        <method name="GetEntity(System.Uri, System.String, System.Type)" argnames="absoluteUri, role, ofObjectToReturn" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSignificantWhitespace" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Value" propertytype="System.String" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlText" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Value" propertytype="System.String" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="SplitText(System.Int32)" argnames="offset" returntype="System.Xml.XmlText" />
+        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlUrlResolver" namespace="System.Xml">
+        <constructor name="XmlUrlResolver" argnames="" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <method name="ResolveUri(System.Uri, System.String)" argnames="baseUri, relativeUri" returntype="System.Uri" />
+        <method name="GetEntity(System.Uri, System.String, System.Type)" argnames="absoluteUri, role, ofObjectToReturn" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlValidatingReader" namespace="System.Xml">
+        <constructor name="XmlValidatingReader(System.Xml.XmlReader)" argnames="reader" />
+        <constructor name="XmlValidatingReader(System.String, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
+        <constructor name="XmlValidatingReader(System.IO.Stream, System.Xml.XmlNodeType, System.Xml.XmlParserContext)" argnames="xmlFragment, fragType, context" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="Schemas" propertytype="System.Xml.Schema.XmlSchemaCollection" />
+        <property name="SchemaType" propertytype="System.Object" />
+        <property name="HasValue" propertytype="System.Boolean" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Depth" propertytype="System.Int32" />
+        <property name="BaseURI" propertytype="System.String" />
+        <property name="IsEmptyElement" propertytype="System.Boolean" />
+        <property name="IsDefault" propertytype="System.Boolean" />
+        <property name="QuoteChar" propertytype="System.Char" />
+        <property name="XmlSpace" propertytype="System.Xml.XmlSpace" />
+        <property name="XmlLang" propertytype="System.String" />
+        <property name="AttributeCount" propertytype="System.Int32" />
+        <property name="Reader" propertytype="System.Xml.XmlReader" />
+        <property name="ValidationType" propertytype="System.Xml.ValidationType" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="EOF" propertytype="System.Boolean" />
+        <property name="ReadState" propertytype="System.Xml.ReadState" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="EntityHandling" propertytype="System.Xml.EntityHandling" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
+        <property name="CanResolveEntity" propertytype="System.Boolean" />
+        <property name="Namespaces" propertytype="System.Boolean" />
+        <property name="NamespaceManager" propertytype="System.Xml.XmlNamespaceManager" />
+        <property name="SchemaTypeObject" propertytype="System.Object" />
+        <property name="TypedValueObject" propertytype="System.Object" />
+        <property name="StandAlone" propertytype="System.Boolean" />
+        <property name="RawValue" propertytype="System.String" />
+        <property name="DisableUndeclaredEntityCheck" propertytype="System.Boolean" />
+        <property name="HasAttributes" inherited="System.Xml.XmlReader" propertytype="System.Boolean" />
+        <method name="ReadAttributeValue" argnames="" returntype="System.Boolean" />
+        <method name="ResolveEntity" argnames="" returntype="System.Void" />
+        <method name="LookupNamespace(System.String)" argnames="prefix" returntype="System.String" />
+        <method name="ReadOuterXml" argnames="" returntype="System.String" />
+        <method name="ReadInnerXml" argnames="" returntype="System.String" />
+        <method name="IsStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="IsStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="IsStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Boolean" />
+        <method name="ReadEndElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadElementString(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadElementString(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadElementString" argnames="" inherited="System.Xml.XmlReader" returntype="System.String" />
+        <method name="ReadStartElement(System.String, System.String)" argnames="localname, ns" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadStartElement(System.String)" argnames="name" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="ReadStartElement" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="MoveToContent" argnames="" inherited="System.Xml.XmlReader" returntype="System.Xml.XmlNodeType" />
+        <method name="ReadString" argnames="" returntype="System.String" />
+        <method name="Skip" argnames="" inherited="System.Xml.XmlReader" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Read" argnames="" returntype="System.Boolean" />
+        <method name="MoveToElement" argnames="" returntype="System.Boolean" />
+        <method name="MoveToNextAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToFirstAttribute" argnames="" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.Int32)" argnames="i" returntype="System.Void" />
+        <method name="MoveToAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.Boolean" />
+        <method name="MoveToAttribute(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="GetAttribute(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GetAttribute(System.String, System.String)" argnames="localName, namespaceURI" returntype="System.String" />
+        <method name="GetAttribute(System.String)" argnames="name" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ReadTypedValue" argnames="" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ValidationEventHandler" />
+    </class>
+    <class name="XmlWhitespace" namespace="System.Xml">
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Value" propertytype="System.String" />
+        <property name="XPNodeType" propertytype="System.Xml.XPath.XPathNodeType" />
+        <property name="InnerText" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Data" inherited="System.Xml.XmlCharacterData" propertytype="System.String" />
+        <property name="Length" inherited="System.Xml.XmlCharacterData" propertytype="System.Int32" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlLinkedNode" propertytype="System.Xml.XmlNode" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlDocument" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="ReplaceData(System.Int32, System.Int32, System.String)" argnames="offset, count, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="DeleteData(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="InsertData(System.Int32, System.String)" argnames="offset, strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="AppendData(System.String)" argnames="strData" inherited="System.Xml.XmlCharacterData" returntype="System.Void" />
+        <method name="Substring(System.Int32, System.Int32)" argnames="offset, count" inherited="System.Xml.XmlCharacterData" returntype="System.String" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IHasXmlNode" namespace="System.Xml">
+        <method name="GetNode" argnames="" returntype="System.Xml.XmlNode" />
+    </interface>
+    <interface name="IXmlLineInfo" namespace="System.Xml">
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <method name="HasLineInfo" argnames="" returntype="System.Boolean" />
+    </interface>
+    <struct name="VirtualAttribute" namespace="System.Xml">
+        <constructor name="VirtualAttribute(System.String, System.String)" argnames="name, value" />
+        <field name="name" />
+        <field name="value" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <delegate name="XmlNodeChangedEventHandler" namespace="System.Xml">
+        <constructor name="XmlNodeChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Xml.XmlNodeChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Xml.XmlNodeChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="EntityHandling" namespace="System.Xml">
+        <field name="ExpandEntities" />
+        <field name="ExpandCharEntities" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ReadState" namespace="System.Xml">
+        <field name="Initial" />
+        <field name="Interactive" />
+        <field name="Error" />
+        <field name="EndOfFile" />
+        <field name="Closed" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ValidationType" namespace="System.Xml">
+        <field name="None" />
+        <field name="Auto" />
+        <field name="DTD" />
+        <field name="XDR" />
+        <field name="Schema" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="WhitespaceHandling" namespace="System.Xml">
+        <field name="All" />
+        <field name="Significant" />
+        <field name="None" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlNodeChangedAction" namespace="System.Xml">
+        <field name="Insert" />
+        <field name="Remove" />
+        <field name="Change" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlNodeOrder" namespace="System.Xml">
+        <field name="Before" />
+        <field name="After" />
+        <field name="Same" />
+        <field name="Unknown" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlNodeType" namespace="System.Xml">
+        <field name="None" />
+        <field name="Element" />
+        <field name="Attribute" />
+        <field name="Text" />
+        <field name="CDATA" />
+        <field name="EntityReference" />
+        <field name="Entity" />
+        <field name="ProcessingInstruction" />
+        <field name="Comment" />
+        <field name="Document" />
+        <field name="DocumentType" />
+        <field name="DocumentFragment" />
+        <field name="Notation" />
+        <field name="Whitespace" />
+        <field name="SignificantWhitespace" />
+        <field name="EndElement" />
+        <field name="EndEntity" />
+        <field name="XmlDeclaration" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlSpace" namespace="System.Xml">
+        <field name="None" />
+        <field name="Default" />
+        <field name="Preserve" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlTokenizedType" namespace="System.Xml">
+        <field name="CDATA" />
+        <field name="ID" />
+        <field name="IDREF" />
+        <field name="IDREFS" />
+        <field name="ENTITY" />
+        <field name="ENTITIES" />
+        <field name="NMTOKEN" />
+        <field name="NMTOKENS" />
+        <field name="NOTATION" />
+        <field name="ENUMERATION" />
+        <field name="QName" />
+        <field name="NCName" />
+        <field name="None" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Formatting" namespace="System.Xml">
+        <field name="None" />
+        <field name="Indented" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="WriteState" namespace="System.Xml">
+        <field name="Start" />
+        <field name="Prolog" />
+        <field name="Element" />
+        <field name="Attribute" />
+        <field name="Content" />
+        <field name="Closed" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="XsltContext" namespace="System.Xml.Xsl">
+        <constructor name="XsltContext(System.Xml.NameTable)" argnames="table" />
+        <constructor name="XsltContext" argnames="" />
+        <property name="Whitespace" propertytype="System.Boolean" />
+        <property name="NameTable" inherited="System.Xml.XmlNamespaceManager" propertytype="System.Xml.XmlNameTable" />
+        <property name="DefaultNamespace" inherited="System.Xml.XmlNamespaceManager" propertytype="System.String" />
+        <method name="CompareDocument(System.String, System.String)" argnames="baseUri, nextbaseUri" returntype="System.Int32" />
+        <method name="PreserveWhitespace(System.Xml.XPath.XPathNavigator)" argnames="node" returntype="System.Boolean" />
+        <method name="ResolveFunction(System.String, System.String, System.Xml.XPath.XPathResultType[])" argnames="prefix, name, ArgTypes" returntype="System.Xml.Xsl.IXsltContextFunction" />
+        <method name="ResolveVariable(System.String, System.String)" argnames="prefix, name" returntype="System.Xml.Xsl.IXsltContextVariable" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNamespaceManager" returntype="System.Collections.IEnumerator" />
+        <method name="HasNamespace(System.String)" argnames="prefix" inherited="System.Xml.XmlNamespaceManager" returntype="System.Boolean" />
+        <method name="LookupPrefix(System.String)" argnames="uri" inherited="System.Xml.XmlNamespaceManager" returntype="System.String" />
+        <method name="LookupNamespace(System.String)" argnames="prefix" inherited="System.Xml.XmlNamespaceManager" returntype="System.String" />
+        <method name="RemoveNamespace(System.String, System.String)" argnames="prefix, uri" inherited="System.Xml.XmlNamespaceManager" returntype="System.Void" />
+        <method name="AddNamespace(System.String, System.String)" argnames="prefix, uri" inherited="System.Xml.XmlNamespaceManager" returntype="System.Void" />
+        <method name="PopScope" argnames="" inherited="System.Xml.XmlNamespaceManager" returntype="System.Boolean" />
+        <method name="PushScope" argnames="" inherited="System.Xml.XmlNamespaceManager" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XsltArgumentList" namespace="System.Xml.Xsl">
+        <constructor name="XsltArgumentList" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetParam(System.String, System.String)" argnames="name, namespaceUri" returntype="System.Object" />
+        <method name="GetExtensionObject(System.String)" argnames="namespaceUri" returntype="System.Object" />
+        <method name="AddParam(System.String, System.String, System.Object)" argnames="name, namespaceUri, parameter" returntype="System.Void" />
+        <method name="AddExtensionObject(System.String, System.Object)" argnames="namespaceUri, extension" returntype="System.Void" />
+        <method name="RemoveParam(System.String, System.String)" argnames="name, namespaceUri" returntype="System.Object" />
+        <method name="RemoveExtensionObject(System.String)" argnames="namespaceUri" returntype="System.Object" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XsltException" namespace="System.Xml.Xsl">
+        <constructor name="XsltException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="XsltException(System.String, System.Exception)" argnames="message, innerException" />
+        <property name="SourceUri" propertytype="System.String" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <property name="Message" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XsltCompileException" namespace="System.Xml.Xsl">
+        <constructor name="XsltCompileException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="XsltCompileException(System.Exception, System.String, System.Int32, System.Int32)" argnames="inner, sourceUri, lineNumber, linePosition" />
+        <property name="Message" propertytype="System.String" />
+        <property name="SourceUri" inherited="System.Xml.Xsl.XsltException" propertytype="System.String" />
+        <property name="LineNumber" inherited="System.Xml.Xsl.XsltException" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Xsl.XsltException" propertytype="System.Int32" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XslTransform" namespace="System.Xml.Xsl">
+        <constructor name="XslTransform" argnames="" />
+        <property name="XmlResolver" propertytype="System.Xml.XmlResolver" />
+        <property name="Debugger" propertytype="System.Xml.Xsl.Debugger.IXsltDebugger" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList)" argnames="input, args" returntype="System.Xml.XmlReader" />
+        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList, System.IO.TextWriter)" argnames="input, args, output" returntype="System.Void" />
+        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList, System.IO.Stream)" argnames="input, args, output" returntype="System.Void" />
+        <method name="Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList, System.Xml.XmlWriter)" argnames="input, args, output" returntype="System.Void" />
+        <method name="Load(System.String)" argnames="url" returntype="System.Void" />
+        <method name="Load(System.String, System.Xml.XmlResolver)" argnames="url, resolver" returntype="System.Void" />
+        <method name="Load(System.Xml.XmlReader)" argnames="stylesheet" returntype="System.Void" />
+        <method name="Load(System.Xml.XmlReader, System.Xml.XmlResolver)" argnames="stylesheet, resolver" returntype="System.Void" />
+        <method name="Load(System.Xml.XPath.XPathNavigator)" argnames="stylesheet" returntype="System.Void" />
+        <method name="Load(System.Xml.XPath.XPathNavigator, System.Xml.XmlResolver)" argnames="stylesheet, resolver" returntype="System.Void" />
+        <method name="Load(System.Xml.XPath.IXPathNavigable)" argnames="stylesheet" returntype="System.Void" />
+        <method name="Load(System.Xml.XPath.IXPathNavigable, System.Xml.XmlResolver)" argnames="stylesheet, resolver" returntype="System.Void" />
+        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList)" argnames="input, args" returntype="System.Xml.XmlReader" />
+        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList, System.Xml.XmlWriter)" argnames="input, args, output" returntype="System.Void" />
+        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList, System.IO.Stream)" argnames="input, args, output" returntype="System.Void" />
+        <method name="Transform(System.Xml.XPath.XPathNavigator, System.Xml.Xsl.XsltArgumentList, System.IO.TextWriter)" argnames="input, args, output" returntype="System.Void" />
+        <method name="Transform(System.String, System.String)" argnames="inputfile, outputfile" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IXsltContextVariable" namespace="System.Xml.Xsl">
+        <property name="IsLocal" propertytype="System.Boolean" />
+        <property name="IsParam" propertytype="System.Boolean" />
+        <property name="VariableType" propertytype="System.Xml.XPath.XPathResultType" />
+        <method name="Evaluate(System.Xml.Xsl.XsltContext)" argnames="xsltContext" returntype="System.Object" />
+    </interface>
+    <interface name="IXsltContextFunction" namespace="System.Xml.Xsl">
+        <property name="Minargs" propertytype="System.Int32" />
+        <property name="Maxargs" propertytype="System.Int32" />
+        <property name="ReturnType" propertytype="System.Xml.XPath.XPathResultType" />
+        <property name="ArgTypes" propertytype="System.Xml.XPath.XPathResultType[]" />
+        <method name="Invoke(System.Xml.Xsl.XsltContext, System.Object[], System.Xml.XPath.XPathNavigator)" argnames="xsltContext, args, docContext" returntype="System.Object" />
+    </interface>
+    <class name="XmlSchemaDatatype" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaDatatype" argnames="" />
+        <property name="ValueType" propertytype="System.Type" />
+        <property name="TokenizedType" propertytype="System.Xml.XmlTokenizedType" />
+        <property name="AnyType" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
+        <property name="Variety" propertytype="System.Xml.Schema.XmlSchemaDatatypeVariety" />
+        <method name="ParseValue(System.String, System.Xml.XmlNameTable, System.Xml.XmlNamespaceManager)" argnames="s, nameTable, nsmgr" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ValidationEventArgs" namespace="System.Xml.Schema">
+        <property name="Severity" propertytype="System.Xml.Schema.XmlSeverityType" />
+        <property name="Exception" propertytype="System.Xml.Schema.XmlSchemaException" />
+        <property name="Message" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaObject" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaObject" argnames="" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <property name="SourceUri" propertytype="System.String" />
+        <property name="Parent" propertytype="System.Xml.Schema.XmlSchemaObject" />
+        <property name="Namespaces" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <property name="IdAttribute" propertytype="System.String" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchema" namespace="System.Xml.Schema">
+        <constructor name="XmlSchema" argnames="" />
+        <field name="Namespace" />
+        <field name="InstanceNamespace" />
+        <property name="AttributeFormDefault" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="BlockDefault" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="FinalDefault" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="ElementFormDefault" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="TargetNamespace" propertytype="System.String" />
+        <property name="Version" propertytype="System.String" />
+        <property name="Includes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="IsCompiled" propertytype="System.Boolean" />
+        <property name="IsPreprocessed" propertytype="System.Boolean" />
+        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="AttributeGroups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="SchemaTypes" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="Elements" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="Id" propertytype="System.String" />
+        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="Groups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="Notations" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="IdentityConstraints" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="BaseUri" propertytype="System.String" />
+        <property name="Ids" propertytype="System.Collections.Hashtable" />
+        <property name="Examplars" propertytype="System.Collections.Hashtable" />
+        <property name="Document" propertytype="System.Xml.XmlDocument" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="ErrorCount" propertytype="System.Int32" />
+        <property name="IdAttribute" propertytype="System.String" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Read(System.IO.TextReader, System.Xml.Schema.ValidationEventHandler)" argnames="reader, validationEventHandler" returntype="System.Xml.Schema.XmlSchema" />
+        <method name="Read(System.IO.Stream, System.Xml.Schema.ValidationEventHandler)" argnames="stream, validationEventHandler" returntype="System.Xml.Schema.XmlSchema" />
+        <method name="Read(System.Xml.XmlReader, System.Xml.Schema.ValidationEventHandler)" argnames="reader, validationEventHandler" returntype="System.Xml.Schema.XmlSchema" />
+        <method name="Write(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="Write(System.IO.Stream, System.Xml.XmlNamespaceManager)" argnames="stream, namespaceManager" returntype="System.Void" />
+        <method name="Write(System.IO.TextWriter)" argnames="writer" returntype="System.Void" />
+        <method name="Write(System.IO.TextWriter, System.Xml.XmlNamespaceManager)" argnames="writer, namespaceManager" returntype="System.Void" />
+        <method name="Write(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+        <method name="Write(System.Xml.XmlWriter, System.Xml.XmlNamespaceManager)" argnames="writer, namespaceManager" returntype="System.Void" />
+        <method name="Compile(System.Xml.Schema.ValidationEventHandler)" argnames="validationEventHandler" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAnnotated" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAnnotated" argnames="" />
+        <property name="Id" propertytype="System.String" />
+        <property name="Annotation" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="IdAttribute" propertytype="System.String" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaParticle" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaParticle" argnames="" />
+        <property name="MinOccursString" propertytype="System.String" />
+        <property name="MaxOccursString" propertytype="System.String" />
+        <property name="MinOccurs" propertytype="System.Decimal" />
+        <property name="MaxOccurs" propertytype="System.Decimal" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="IsMultipleOccurrence" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaGroupBase" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaGroupBase" argnames="" />
+        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAll" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAll" argnames="" />
+        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAnnotation" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAnnotation" argnames="" />
+        <property name="Id" propertytype="System.String" />
+        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="IdAttribute" propertytype="System.String" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAny" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAny" argnames="" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="ProcessContents" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
+        <property name="NamespaceList" propertytype="System.Xml.Schema.NamespaceList" />
+        <property name="ProcessContentsCorrect" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
+        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAnyAttribute" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAnyAttribute" argnames="" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="ProcessContents" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
+        <property name="NamespaceList" propertytype="System.Xml.Schema.NamespaceList" />
+        <property name="ProcessContentsCorrect" propertytype="System.Xml.Schema.XmlSchemaContentProcessing" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAppInfo" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAppInfo" argnames="" />
+        <property name="Source" propertytype="System.String" />
+        <property name="Markup" propertytype="System.Xml.XmlNode[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAttribute" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAttribute" argnames="" />
+        <property name="DefaultValue" propertytype="System.String" />
+        <property name="FixedValue" propertytype="System.String" />
+        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="Name" propertytype="System.String" />
+        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="SchemaTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="SchemaType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
+        <property name="Use" propertytype="System.Xml.Schema.XmlSchemaUse" />
+        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="AttributeType" propertytype="System.Object" />
+        <property name="Datatype" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
+        <property name="Prefix" propertytype="System.String" />
+        <property name="AttDef" propertytype="System.Xml.Schema.SchemaAttDef" />
+        <property name="Validating" propertytype="System.Boolean" />
+        <property name="HasDefault" propertytype="System.Boolean" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAttributeGroup" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAttributeGroup" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="AttributeUses" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="AttributeWildcard" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="RedefinedAttributeGroup" propertytype="System.Xml.Schema.XmlSchemaAttributeGroup" />
+        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaAttributeGroup" />
+        <property name="Validating" propertytype="System.Boolean" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaAttributeGroupRef" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaAttributeGroupRef" argnames="" />
+        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaChoice" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaChoice" argnames="" />
+        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaCollection" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaCollection" argnames="" />
+        <constructor name="XmlSchemaCollection(System.Xml.XmlNameTable)" argnames="nametable" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="NameTable" propertytype="System.Xml.XmlNameTable" />
+        <property name="Item" propertytype="System.Xml.Schema.XmlSchema" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.String, System.String)" argnames="ns, uri" returntype="System.Xml.Schema.XmlSchema" />
+        <method name="Add(System.String, System.Xml.XmlReader)" argnames="ns, reader" returntype="System.Xml.Schema.XmlSchema" />
+        <method name="Add(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Xml.Schema.XmlSchema" />
+        <method name="Add(System.Xml.Schema.XmlSchemaCollection)" argnames="schema" returntype="System.Void" />
+        <method name="Contains(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Boolean" />
+        <method name="Contains(System.String)" argnames="ns" returntype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Xml.Schema.XmlSchemaCollectionEnumerator" />
+        <method name="CopyTo(System.Xml.Schema.XmlSchema[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="ValidationEventHandler" />
+    </class>
+    <class name="XmlSchemaCollectionEnumerator" namespace="System.Xml.Schema">
+        <property name="Current" propertytype="System.Xml.Schema.XmlSchema" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="MoveNext" argnames="" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaContentModel" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaContentModel" argnames="" />
+        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaContent" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaComplexContent" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaComplexContent" argnames="" />
+        <property name="IsMixed" propertytype="System.Boolean" />
+        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaContent" />
+        <property name="HasMixedAttribute" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaContent" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaContent" argnames="" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaComplexContentExtension" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaComplexContentExtension" argnames="" />
+        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
+        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaComplexContentRestriction" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaComplexContentRestriction" argnames="" />
+        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
+        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaType" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaType" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Final" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="FinalResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="BaseSchemaType" propertytype="System.Object" />
+        <property name="DerivedBy" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="Datatype" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
+        <property name="IsMixed" propertytype="System.Boolean" />
+        <property name="ElementDecl" propertytype="System.Xml.Schema.SchemaElementDecl" />
+        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaType" />
+        <property name="Validating" propertytype="System.Boolean" />
+        <property name="DerivedFrom" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaComplexType" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaComplexType" argnames="" />
+        <property name="AnyType" propertytype="System.Xml.Schema.XmlSchemaComplexType" />
+        <property name="IsAbstract" propertytype="System.Boolean" />
+        <property name="Block" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="IsMixed" propertytype="System.Boolean" />
+        <property name="ContentModel" propertytype="System.Xml.Schema.XmlSchemaContentModel" />
+        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
+        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="ContentType" propertytype="System.Xml.Schema.XmlSchemaContentType" />
+        <property name="ContentTypeParticle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
+        <property name="BlockResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="AttributeUses" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="AttributeWildcard" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="LocalElements" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="LocalElementDecls" propertytype="System.Collections.Hashtable" />
+        <property name="DerivedFrom" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Name" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.String" />
+        <property name="Final" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="FinalResolved" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="BaseSchemaType" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Object" />
+        <property name="DerivedBy" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="Datatype" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaDocumentation" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaDocumentation" argnames="" />
+        <property name="Source" propertytype="System.String" />
+        <property name="Language" propertytype="System.String" />
+        <property name="Markup" propertytype="System.Xml.XmlNode[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaElement" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaElement" argnames="" />
+        <property name="IsAbstract" propertytype="System.Boolean" />
+        <property name="Block" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="DefaultValue" propertytype="System.String" />
+        <property name="Final" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="FixedValue" propertytype="System.String" />
+        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="Name" propertytype="System.String" />
+        <property name="IsNillable" propertytype="System.Boolean" />
+        <property name="HasNillableAttribute" propertytype="System.Boolean" />
+        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="SubstitutionGroup" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="SchemaTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="SchemaType" propertytype="System.Xml.Schema.XmlSchemaType" />
+        <property name="Constraints" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="ElementType" propertytype="System.Object" />
+        <property name="BlockResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="FinalResolved" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="HasDefault" propertytype="System.Boolean" />
+        <property name="HasConstraints" propertytype="System.Boolean" />
+        <property name="ElementDecl" propertytype="System.Xml.Schema.SchemaElementDecl" />
+        <property name="Validating" propertytype="System.Boolean" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaException" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="XmlSchemaException(System.String, System.Exception)" argnames="message, innerException" />
+        <property name="Message" propertytype="System.String" />
+        <property name="SourceUri" propertytype="System.String" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <property name="SourceSchemaObject" propertytype="System.Xml.Schema.XmlSchemaObject" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaExternal" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaExternal" argnames="" />
+        <property name="SchemaLocation" propertytype="System.String" />
+        <property name="Schema" propertytype="System.Xml.Schema.XmlSchema" />
+        <property name="Id" propertytype="System.String" />
+        <property name="UnhandledAttributes" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="FullPath" propertytype="System.String" />
+        <property name="IdAttribute" propertytype="System.String" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaFacet" argnames="" />
+        <property name="Value" propertytype="System.String" />
+        <property name="IsFixed" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaNumericFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaNumericFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaLengthFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaLengthFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaMinLengthFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaMinLengthFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaMaxLengthFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaMaxLengthFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaPatternFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaPatternFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaEnumerationFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaEnumerationFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaMinExclusiveFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaMinExclusiveFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaMinInclusiveFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaMinInclusiveFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaMaxExclusiveFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaMaxExclusiveFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaMaxInclusiveFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaMaxInclusiveFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaTotalDigitsFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaTotalDigitsFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaFractionDigitsFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaFractionDigitsFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaWhiteSpaceFacet" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaWhiteSpaceFacet" argnames="" />
+        <property name="Value" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.String" />
+        <property name="IsFixed" inherited="System.Xml.Schema.XmlSchemaFacet" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaGroup" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaGroup" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaGroupBase" />
+        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="CanonicalParticle" propertytype="System.Xml.Schema.XmlSchemaParticle" />
+        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaGroup" />
+        <property name="Validating" propertytype="System.Boolean" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaGroupRef" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaGroupRef" argnames="" />
+        <property name="RefName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Particle" propertytype="System.Xml.Schema.XmlSchemaGroupBase" />
+        <property name="Redefined" propertytype="System.Xml.Schema.XmlSchemaGroup" />
+        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaIdentityConstraint" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaIdentityConstraint" argnames="" />
+        <property name="Validating" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Selector" propertytype="System.Xml.Schema.XmlSchemaXPath" />
+        <property name="Fields" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="CompiledConstraint" propertytype="System.Xml.Schema.CompiledIdentityConstraint" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaXPath" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaXPath" argnames="" />
+        <property name="XPath" propertytype="System.String" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaUnique" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaUnique" argnames="" />
+        <property name="Name" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.String" />
+        <property name="Selector" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaXPath" />
+        <property name="Fields" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaKey" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaKey" argnames="" />
+        <property name="Name" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.String" />
+        <property name="Selector" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaXPath" />
+        <property name="Fields" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaKeyref" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaKeyref" argnames="" />
+        <property name="Refer" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Name" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.String" />
+        <property name="Selector" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaXPath" />
+        <property name="Fields" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaIdentityConstraint" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaImport" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaImport" argnames="" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Annotation" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="SchemaLocation" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
+        <property name="Schema" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.Schema.XmlSchema" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaInclude" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaInclude" argnames="" />
+        <property name="Annotation" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="SchemaLocation" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
+        <property name="Schema" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.Schema.XmlSchema" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaNotation" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaNotation" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Public" propertytype="System.String" />
+        <property name="System" propertytype="System.String" />
+        <property name="QualifiedName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="NameAttribute" propertytype="System.String" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaObjectCollection" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaObjectCollection" argnames="" />
+        <constructor name="XmlSchemaObjectCollection(System.Xml.Schema.XmlSchemaObject)" argnames="parent" />
+        <property name="Item" propertytype="System.Xml.Schema.XmlSchemaObject" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+        <method name="OnClear" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, item" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" returntype="System.Xml.Schema.XmlSchemaObjectEnumerator" />
+        <method name="Add(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Xml.Schema.XmlSchemaObject)" argnames="index, item" returntype="System.Void" />
+        <method name="IndexOf(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Int32" />
+        <method name="Contains(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Boolean" />
+        <method name="Remove(System.Xml.Schema.XmlSchemaObject)" argnames="item" returntype="System.Void" />
+        <method name="CopyTo(System.Xml.Schema.XmlSchemaObject[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaObjectEnumerator" namespace="System.Xml.Schema">
+        <property name="Current" propertytype="System.Xml.Schema.XmlSchemaObject" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="MoveNext" argnames="" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaObjectTable" namespace="System.Xml.Schema">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Xml.Schema.XmlSchemaObject" />
+        <property name="Names" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaRedefine" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaRedefine" argnames="" />
+        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="AttributeGroups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="SchemaTypes" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="Groups" propertytype="System.Xml.Schema.XmlSchemaObjectTable" />
+        <property name="SchemaLocation" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
+        <property name="Schema" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.Schema.XmlSchema" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.String" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaExternal" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSequence" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSequence" argnames="" />
+        <property name="Items" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="IsEmpty" propertytype="System.Boolean" />
+        <property name="MinOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MaxOccursString" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.String" />
+        <property name="MinOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="MaxOccurs" inherited="System.Xml.Schema.XmlSchemaParticle" propertytype="System.Decimal" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleContent" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleContent" argnames="" />
+        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaContent" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleContentExtension" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleContentExtension" argnames="" />
+        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleContentRestriction" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleContentRestriction" argnames="" />
+        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="BaseType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
+        <property name="Facets" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="Attributes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="AnyAttribute" propertytype="System.Xml.Schema.XmlSchemaAnyAttribute" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleType" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleType" argnames="" />
+        <property name="Content" propertytype="System.Xml.Schema.XmlSchemaSimpleTypeContent" />
+        <property name="DerivedFrom" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="Name" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.String" />
+        <property name="Final" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="QualifiedName" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="FinalResolved" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="BaseSchemaType" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Object" />
+        <property name="DerivedBy" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDerivationMethod" />
+        <property name="Datatype" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Xml.Schema.XmlSchemaDatatype" />
+        <property name="IsMixed" inherited="System.Xml.Schema.XmlSchemaType" propertytype="System.Boolean" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleTypeContent" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleTypeContent" argnames="" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleTypeList" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleTypeList" argnames="" />
+        <property name="ItemTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="ItemType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleTypeRestriction" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleTypeRestriction" argnames="" />
+        <property name="BaseTypeName" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="BaseType" propertytype="System.Xml.Schema.XmlSchemaSimpleType" />
+        <property name="Facets" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaSimpleTypeUnion" namespace="System.Xml.Schema">
+        <constructor name="XmlSchemaSimpleTypeUnion" argnames="" />
+        <property name="BaseTypes" propertytype="System.Xml.Schema.XmlSchemaObjectCollection" />
+        <property name="MemberTypes" propertytype="System.Xml.XmlQualifiedName[]" />
+        <property name="Id" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.String" />
+        <property name="Annotation" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.Schema.XmlSchemaAnnotation" />
+        <property name="UnhandledAttributes" inherited="System.Xml.Schema.XmlSchemaAnnotated" propertytype="System.Xml.XmlAttribute[]" />
+        <property name="LineNumber" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="LinePosition" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Int32" />
+        <property name="SourceUri" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.String" />
+        <property name="Namespaces" inherited="System.Xml.Schema.XmlSchemaObject" propertytype="System.Xml.Serialization.XmlSerializerNamespaces" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="ValidationEventHandler" namespace="System.Xml.Schema">
+        <constructor name="ValidationEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Xml.Schema.ValidationEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Xml.Schema.ValidationEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="ConstraintRole" namespace="System.Xml.Schema">
+        <field name="Unique" />
+        <field name="Key" />
+        <field name="Keyref" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ListType" namespace="System.Xml.Schema">
+        <field name="Any" />
+        <field name="Other" />
+        <field name="Set" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Use" namespace="System.Xml.Schema">
+        <field name="Default" />
+        <field name="Required" />
+        <field name="Implied" />
+        <field name="Fixed" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Reserve" namespace="System.Xml.Schema">
+        <field name="None" />
+        <field name="XmlSpace" />
+        <field name="XmlLang" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Type" namespace="System.Xml.Schema">
+        <field name="ID" />
+        <field name="NOTATION" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlSchemaContentProcessing" namespace="System.Xml.Schema">
+        <field name="None" />
+        <field name="Skip" />
+        <field name="Lax" />
+        <field name="Strict" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlSchemaContentType" namespace="System.Xml.Schema">
+        <field name="TextOnly" />
+        <field name="Empty" />
+        <field name="ElementOnly" />
+        <field name="Mixed" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlSchemaDerivationMethod" namespace="System.Xml.Schema">
+        <field name="Empty" />
+        <field name="Substitution" />
+        <field name="Extension" />
+        <field name="Restriction" />
+        <field name="List" />
+        <field name="Union" />
+        <field name="All" />
+        <field name="None" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlSchemaForm" namespace="System.Xml.Schema">
+        <field name="None" />
+        <field name="Qualified" />
+        <field name="Unqualified" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlSchemaUse" namespace="System.Xml.Schema">
+        <field name="None" />
+        <field name="Optional" />
+        <field name="Prohibited" />
+        <field name="Required" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="XmlSeverityType" namespace="System.Xml.Schema">
+        <field name="Error" />
+        <field name="Warning" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="XmlAttributeEventArgs" namespace="System.Xml.Serialization">
+        <property name="ObjectBeingDeserialized" propertytype="System.Object" />
+        <property name="Attr" propertytype="System.Xml.XmlAttribute" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlElementEventArgs" namespace="System.Xml.Serialization">
+        <property name="ObjectBeingDeserialized" propertytype="System.Object" />
+        <property name="Element" propertytype="System.Xml.XmlElement" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNodeEventArgs" namespace="System.Xml.Serialization">
+        <property name="XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ObjectBeingDeserialized" propertytype="System.Object" />
+        <property name="NodeType" propertytype="System.Xml.XmlNodeType" />
+        <property name="Name" propertytype="System.String" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="NamespaceURI" propertytype="System.String" />
+        <property name="Text" propertytype="System.String" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="LinePosition" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UnreferencedObjectEventArgs" namespace="System.Xml.Serialization">
+        <constructor name="UnreferencedObjectEventArgs(System.Object, System.String)" argnames="o, id" />
+        <property name="UnreferencedObject" propertytype="System.Object" />
+        <property name="UnreferencedId" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeIdentifiers" namespace="System.Xml.Serialization">
+        <constructor name="CodeIdentifiers" argnames="" />
+        <property name="UseCamelCasing" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="MakeRightCase(System.String)" argnames="identifier" returntype="System.String" />
+        <method name="MakeUnique(System.String)" argnames="identifier" returntype="System.String" />
+        <method name="AddReserved(System.String)" argnames="identifier" returntype="System.Void" />
+        <method name="RemoveReserved(System.String)" argnames="identifier" returntype="System.Void" />
+        <method name="AddUnique(System.String, System.Object)" argnames="identifier, value" returntype="System.String" />
+        <method name="IsInUse(System.String)" argnames="identifier" returntype="System.Boolean" />
+        <method name="Add(System.String, System.Object)" argnames="identifier, value" returntype="System.Void" />
+        <method name="Remove(System.String)" argnames="identifier" returntype="System.Void" />
+        <method name="ToArray(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapAttributeAttribute" namespace="System.Xml.Serialization">
+        <constructor name="SoapAttributeAttribute" argnames="" />
+        <constructor name="SoapAttributeAttribute(System.String)" argnames="attrName" />
+        <property name="AttributeName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="DataType" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapAttributeOverrides" namespace="System.Xml.Serialization">
+        <constructor name="SoapAttributeOverrides" argnames="" />
+        <property name="Item" propertytype="System.Xml.Serialization.SoapAttributes" />
+        <property name="Item" propertytype="System.Xml.Serialization.SoapAttributes" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Type, System.Xml.Serialization.SoapAttributes)" argnames="type, attributes" returntype="System.Void" />
+        <method name="Add(System.Type, System.String, System.Xml.Serialization.SoapAttributes)" argnames="type, member, attributes" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapAttributes" namespace="System.Xml.Serialization">
+        <constructor name="SoapAttributes" argnames="" />
+        <constructor name="SoapAttributes(System.Reflection.ICustomAttributeProvider)" argnames="provider" />
+        <property name="SoapFlags" propertytype="System.Xml.Serialization.SoapAttributeFlags" />
+        <property name="SoapType" propertytype="System.Xml.Serialization.SoapTypeAttribute" />
+        <property name="SoapEnum" propertytype="System.Xml.Serialization.SoapEnumAttribute" />
+        <property name="SoapIgnore" propertytype="System.Boolean" />
+        <property name="SoapElement" propertytype="System.Xml.Serialization.SoapElementAttribute" />
+        <property name="SoapAttribute" propertytype="System.Xml.Serialization.SoapAttributeAttribute" />
+        <property name="SoapDefaultValue" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapCodeExporter" namespace="System.Xml.Serialization">
+        <constructor name="SoapCodeExporter(System.CodeDom.CodeNamespace)" argnames="codeNamespace" />
+        <constructor name="SoapCodeExporter(System.CodeDom.CodeNamespace, System.CodeDom.CodeCompileUnit)" argnames="codeNamespace, codeCompileUnit" />
+        <property name="IncludeMetadata" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
+        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
+        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping, System.Boolean)" argnames="metadata, member, forceUseMemberName" returntype="System.Void" />
+        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping)" argnames="metadata, member" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapElementAttribute" namespace="System.Xml.Serialization">
+        <constructor name="SoapElementAttribute" argnames="" />
+        <constructor name="SoapElementAttribute(System.String)" argnames="elementName" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="DataType" propertytype="System.String" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapEnumAttribute" namespace="System.Xml.Serialization">
+        <constructor name="SoapEnumAttribute" argnames="" />
+        <constructor name="SoapEnumAttribute(System.String)" argnames="name" />
+        <property name="Name" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapIgnoreAttribute" namespace="System.Xml.Serialization">
+        <constructor name="SoapIgnoreAttribute" argnames="" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapIncludeAttribute" namespace="System.Xml.Serialization">
+        <constructor name="SoapIncludeAttribute(System.Type)" argnames="type" />
+        <property name="Type" propertytype="System.Type" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapSchemaExporter" namespace="System.Xml.Serialization">
+        <constructor name="SoapSchemaExporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
+        <property name="Document" propertytype="System.Xml.XmlDocument" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
+        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
+        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping, System.Boolean)" argnames="xmlMembersMapping, exportEnclosingType" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapSchemaImporter" namespace="System.Xml.Serialization">
+        <constructor name="SoapSchemaImporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
+        <constructor name="SoapSchemaImporter(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeIdentifiers)" argnames="schemas, typeIdentifiers" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ImportDerivedTypeMapping(System.Xml.XmlQualifiedName, System.Type, System.Boolean)" argnames="name, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember)" argnames="name, ns, member" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember[])" argnames="name, ns, members" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember[], System.Boolean)" argnames="name, ns, members, hasWrapperElement" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.SoapSchemaMember[], System.Boolean, System.Type, System.Boolean)" argnames="name, ns, members, hasWrapperElement, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapSchemaMember" namespace="System.Xml.Serialization">
+        <constructor name="SoapSchemaMember" argnames="" />
+        <property name="MemberType" propertytype="System.Xml.XmlQualifiedName" />
+        <property name="MemberName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapTypeAttribute" namespace="System.Xml.Serialization">
+        <constructor name="SoapTypeAttribute" argnames="" />
+        <constructor name="SoapTypeAttribute(System.String)" argnames="typeName" />
+        <constructor name="SoapTypeAttribute(System.String, System.String)" argnames="typeName, ns" />
+        <property name="IncludeInSchema" propertytype="System.Boolean" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAnyAttributeAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlAnyAttributeAttribute" argnames="" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAnyElementAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlAnyElementAttribute" argnames="" />
+        <constructor name="XmlAnyElementAttribute(System.String)" argnames="name" />
+        <constructor name="XmlAnyElementAttribute(System.String, System.String)" argnames="name, ns" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAnyElementAttributes" namespace="System.Xml.Serialization">
+        <constructor name="XmlAnyElementAttributes" argnames="" />
+        <property name="Item" propertytype="System.Xml.Serialization.XmlAnyElementAttribute" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Xml.Serialization.XmlAnyElementAttribute)" argnames="index, attribute" returntype="System.Void" />
+        <method name="IndexOf(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Int32" />
+        <method name="Contains(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Boolean" />
+        <method name="Remove(System.Xml.Serialization.XmlAnyElementAttribute)" argnames="attribute" returntype="System.Void" />
+        <method name="CopyTo(System.Xml.Serialization.XmlAnyElementAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlArrayAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlArrayAttribute" argnames="" />
+        <constructor name="XmlArrayAttribute(System.String)" argnames="elementName" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlArrayItemAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlArrayItemAttribute" argnames="" />
+        <constructor name="XmlArrayItemAttribute(System.String)" argnames="elementName" />
+        <constructor name="XmlArrayItemAttribute(System.Type)" argnames="type" />
+        <constructor name="XmlArrayItemAttribute(System.String, System.Type)" argnames="elementName, type" />
+        <property name="Type" propertytype="System.Type" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="NestingLevel" propertytype="System.Int32" />
+        <property name="DataType" propertytype="System.String" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="IsNullableSpecified" propertytype="System.Boolean" />
+        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlArrayItemAttributes" namespace="System.Xml.Serialization">
+        <constructor name="XmlArrayItemAttributes" argnames="" />
+        <property name="Item" propertytype="System.Xml.Serialization.XmlArrayItemAttribute" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Xml.Serialization.XmlArrayItemAttribute)" argnames="index, attribute" returntype="System.Void" />
+        <method name="IndexOf(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Int32" />
+        <method name="Contains(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Boolean" />
+        <method name="Remove(System.Xml.Serialization.XmlArrayItemAttribute)" argnames="attribute" returntype="System.Void" />
+        <method name="CopyTo(System.Xml.Serialization.XmlArrayItemAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAttributeAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlAttributeAttribute" argnames="" />
+        <constructor name="XmlAttributeAttribute(System.String)" argnames="attributeName" />
+        <constructor name="XmlAttributeAttribute(System.Type)" argnames="type" />
+        <constructor name="XmlAttributeAttribute(System.String, System.Type)" argnames="attributeName, type" />
+        <property name="Type" propertytype="System.Type" />
+        <property name="AttributeName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="DataType" propertytype="System.String" />
+        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAttributeOverrides" namespace="System.Xml.Serialization">
+        <constructor name="XmlAttributeOverrides" argnames="" />
+        <property name="Item" propertytype="System.Xml.Serialization.XmlAttributes" />
+        <property name="Item" propertytype="System.Xml.Serialization.XmlAttributes" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Type, System.Xml.Serialization.XmlAttributes)" argnames="type, attributes" returntype="System.Void" />
+        <method name="Add(System.Type, System.String, System.Xml.Serialization.XmlAttributes)" argnames="type, member, attributes" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlAttributes" namespace="System.Xml.Serialization">
+        <constructor name="XmlAttributes" argnames="" />
+        <constructor name="XmlAttributes(System.Reflection.ICustomAttributeProvider)" argnames="provider" />
+        <property name="XmlFlags" propertytype="System.Xml.Serialization.XmlAttributeFlags" />
+        <property name="XmlElements" propertytype="System.Xml.Serialization.XmlElementAttributes" />
+        <property name="XmlAttribute" propertytype="System.Xml.Serialization.XmlAttributeAttribute" />
+        <property name="XmlEnum" propertytype="System.Xml.Serialization.XmlEnumAttribute" />
+        <property name="XmlText" propertytype="System.Xml.Serialization.XmlTextAttribute" />
+        <property name="XmlArray" propertytype="System.Xml.Serialization.XmlArrayAttribute" />
+        <property name="XmlArrayItems" propertytype="System.Xml.Serialization.XmlArrayItemAttributes" />
+        <property name="XmlDefaultValue" propertytype="System.Object" />
+        <property name="XmlIgnore" propertytype="System.Boolean" />
+        <property name="XmlType" propertytype="System.Xml.Serialization.XmlTypeAttribute" />
+        <property name="XmlRoot" propertytype="System.Xml.Serialization.XmlRootAttribute" />
+        <property name="XmlAnyElements" propertytype="System.Xml.Serialization.XmlAnyElementAttributes" />
+        <property name="XmlAnyAttribute" propertytype="System.Xml.Serialization.XmlAnyAttributeAttribute" />
+        <property name="XmlChoiceIdentifier" propertytype="System.Xml.Serialization.XmlChoiceIdentifierAttribute" />
+        <property name="Xmlns" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlChoiceIdentifierAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlChoiceIdentifierAttribute" argnames="" />
+        <constructor name="XmlChoiceIdentifierAttribute(System.String)" argnames="name" />
+        <property name="MemberName" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlCodeExporter" namespace="System.Xml.Serialization">
+        <constructor name="XmlCodeExporter(System.CodeDom.CodeNamespace)" argnames="codeNamespace" />
+        <constructor name="XmlCodeExporter(System.CodeDom.CodeNamespace, System.CodeDom.CodeCompileUnit)" argnames="codeNamespace, codeCompileUnit" />
+        <property name="IncludeMetadata" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
+        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
+        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlTypeMapping, System.String)" argnames="metadata, mapping, ns" returntype="System.Void" />
+        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping, System.String, System.Boolean)" argnames="metadata, member, ns, forceUseMemberName" returntype="System.Void" />
+        <method name="AddMappingMetadata(System.CodeDom.CodeAttributeDeclarationCollection, System.Xml.Serialization.XmlMemberMapping, System.String)" argnames="metadata, member, ns" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlElementAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlElementAttribute" argnames="" />
+        <constructor name="XmlElementAttribute(System.String)" argnames="elementName" />
+        <constructor name="XmlElementAttribute(System.Type)" argnames="type" />
+        <constructor name="XmlElementAttribute(System.String, System.Type)" argnames="elementName, type" />
+        <property name="Type" propertytype="System.Type" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="DataType" propertytype="System.String" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="Form" propertytype="System.Xml.Schema.XmlSchemaForm" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlElementAttributes" namespace="System.Xml.Serialization">
+        <constructor name="XmlElementAttributes" argnames="" />
+        <property name="Item" propertytype="System.Xml.Serialization.XmlElementAttribute" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Xml.Serialization.XmlElementAttribute)" argnames="index, attribute" returntype="System.Void" />
+        <method name="IndexOf(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Int32" />
+        <method name="Contains(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Boolean" />
+        <method name="Remove(System.Xml.Serialization.XmlElementAttribute)" argnames="attribute" returntype="System.Void" />
+        <method name="CopyTo(System.Xml.Serialization.XmlElementAttribute[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlEnumAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlEnumAttribute" argnames="" />
+        <constructor name="XmlEnumAttribute(System.String)" argnames="name" />
+        <property name="Name" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlIgnoreAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlIgnoreAttribute" argnames="" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlIncludeAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlIncludeAttribute(System.Type)" argnames="type" />
+        <property name="Type" propertytype="System.Type" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlMemberMapping" namespace="System.Xml.Serialization">
+        <property name="Scope" propertytype="System.Xml.Serialization.TypeScope" />
+        <property name="Mapping" propertytype="System.Xml.Serialization.MemberMapping" />
+        <property name="Accessor" propertytype="System.Xml.Serialization.Accessor" />
+        <property name="Any" propertytype="System.Boolean" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="MemberName" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="TypeNamespace" propertytype="System.String" />
+        <property name="TypeFullName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlMapping" namespace="System.Xml.Serialization">
+        <property name="Scope" propertytype="System.Xml.Serialization.TypeScope" />
+        <property name="GenerateSerializer" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlMembersMapping" namespace="System.Xml.Serialization">
+        <property name="Accessor" propertytype="System.Xml.Serialization.ElementAccessor" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="TypeNamespace" propertytype="System.String" />
+        <property name="Item" propertytype="System.Xml.Serialization.XmlMemberMapping" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlNamespaceDeclarationsAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlNamespaceDeclarationsAttribute" argnames="" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlReflectionMember" namespace="System.Xml.Serialization">
+        <constructor name="XmlReflectionMember" argnames="" />
+        <property name="MemberType" propertytype="System.Type" />
+        <property name="XmlAttributes" propertytype="System.Xml.Serialization.XmlAttributes" />
+        <property name="SoapAttributes" propertytype="System.Xml.Serialization.SoapAttributes" />
+        <property name="MemberName" propertytype="System.String" />
+        <property name="IsReturnValue" propertytype="System.Boolean" />
+        <property name="OverrideIsNullable" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlRootAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlRootAttribute" argnames="" />
+        <constructor name="XmlRootAttribute(System.String)" argnames="elementName" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="DataType" propertytype="System.String" />
+        <property name="IsNullable" propertytype="System.Boolean" />
+        <property name="IsNullableSpecified" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaExporter" namespace="System.Xml.Serialization">
+        <constructor name="XmlSchemaExporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ExportTypeMapping(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" returntype="System.Void" />
+        <method name="ExportTypeMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Xml.XmlQualifiedName" />
+        <method name="ExportMembersMapping(System.Xml.Serialization.XmlMembersMapping)" argnames="xmlMembersMapping" returntype="System.Void" />
+        <method name="ExportAnyType(System.String)" argnames="ns" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemas" namespace="System.Xml.Serialization">
+        <constructor name="XmlSchemas" argnames="" />
+        <property name="Item" propertytype="System.Xml.Schema.XmlSchema" />
+        <property name="Item" propertytype="System.Xml.Schema.XmlSchema" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClear" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Int32" />
+        <method name="Add(System.Xml.Serialization.XmlSchemas)" argnames="schemas" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Xml.Schema.XmlSchema)" argnames="index, schema" returntype="System.Void" />
+        <method name="IndexOf(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Int32" />
+        <method name="Contains(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Boolean" />
+        <method name="Remove(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Void" />
+        <method name="CopyTo(System.Xml.Schema.XmlSchema[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Find(System.Xml.XmlQualifiedName, System.Type)" argnames="name, type" returntype="System.Object" />
+        <method name="IsDataSet(System.Xml.Schema.XmlSchema)" argnames="schema" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSerializerNamespaces" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializerNamespaces" argnames="" />
+        <constructor name="XmlSerializerNamespaces(System.Xml.Serialization.XmlSerializerNamespaces)" argnames="namespaces" />
+        <constructor name="XmlSerializerNamespaces(System.Xml.XmlQualifiedName[])" argnames="namespaces" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="NamespaceList" propertytype="System.Collections.ArrayList" />
+        <property name="Namespaces" propertytype="System.Collections.Hashtable" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.String, System.String)" argnames="prefix, ns" returntype="System.Void" />
+        <method name="ToArray" argnames="" returntype="System.Xml.XmlQualifiedName[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlTextAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlTextAttribute" argnames="" />
+        <constructor name="XmlTextAttribute(System.Type)" argnames="type" />
+        <property name="Type" propertytype="System.Type" />
+        <property name="DataType" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlTypeAttribute" namespace="System.Xml.Serialization">
+        <constructor name="XmlTypeAttribute" argnames="" />
+        <constructor name="XmlTypeAttribute(System.String)" argnames="typeName" />
+        <property name="IncludeInSchema" propertytype="System.Boolean" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlTypeMapping" namespace="System.Xml.Serialization">
+        <property name="Accessor" propertytype="System.Xml.Serialization.ElementAccessor" />
+        <property name="ElementName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Mapping" propertytype="System.Xml.Serialization.TypeMapping" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="TypeFullName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeIdentifier" namespace="System.Xml.Serialization">
+        <constructor name="CodeIdentifier" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="MakePascal(System.String)" argnames="identifier" returntype="System.String" />
+        <method name="MakeCamel(System.String)" argnames="identifier" returntype="System.String" />
+        <method name="MakeValid(System.String)" argnames="identifier" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SoapReflectionImporter" namespace="System.Xml.Serialization">
+        <constructor name="SoapReflectionImporter" argnames="" />
+        <constructor name="SoapReflectionImporter(System.String)" argnames="defaultNamespace" />
+        <constructor name="SoapReflectionImporter(System.Xml.Serialization.SoapAttributeOverrides)" argnames="attributeOverrides" />
+        <constructor name="SoapReflectionImporter(System.Xml.Serialization.SoapAttributeOverrides, System.String)" argnames="attributeOverrides, defaultNamespace" />
+        <property name="TypeScope" propertytype="System.Xml.Serialization.TypeScope" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IncludeTypes(System.Reflection.ICustomAttributeProvider)" argnames="provider" returntype="System.Void" />
+        <method name="IncludeType(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="ImportTypeMapping(System.Type)" argnames="type" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportTypeMapping(System.Type, System.String)" argnames="type, defaultNamespace" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[])" argnames="elementName, ns, members" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[], System.Boolean, System.Boolean)" argnames="elementName, ns, members, hasWrapperElement, writeAccessors" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[], System.Boolean, System.Boolean, System.Boolean)" argnames="elementName, ns, members, hasWrapperElement, writeAccessors, validate" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlReflectionImporter" namespace="System.Xml.Serialization">
+        <constructor name="XmlReflectionImporter" argnames="" />
+        <constructor name="XmlReflectionImporter(System.String)" argnames="defaultNamespace" />
+        <constructor name="XmlReflectionImporter(System.Xml.Serialization.XmlAttributeOverrides)" argnames="attributeOverrides" />
+        <constructor name="XmlReflectionImporter(System.Xml.Serialization.XmlAttributeOverrides, System.String)" argnames="attributeOverrides, defaultNamespace" />
+        <property name="TypeScope" propertytype="System.Xml.Serialization.TypeScope" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IncludeTypes(System.Reflection.ICustomAttributeProvider)" argnames="provider" returntype="System.Void" />
+        <method name="IncludeType(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="ImportTypeMapping(System.Type)" argnames="type" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportTypeMapping(System.Type, System.String)" argnames="type, defaultNamespace" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportTypeMapping(System.Type, System.Xml.Serialization.XmlRootAttribute)" argnames="type, root" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportTypeMapping(System.Type, System.Xml.Serialization.XmlRootAttribute, System.String)" argnames="type, root, defaultNamespace" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportMembersMapping(System.String, System.String, System.Xml.Serialization.XmlReflectionMember[], System.Boolean)" argnames="elementName, ns, members, hasWrapperElement" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSchemaImporter" namespace="System.Xml.Serialization">
+        <constructor name="XmlSchemaImporter(System.Xml.Serialization.XmlSchemas)" argnames="schemas" />
+        <constructor name="XmlSchemaImporter(System.Xml.Serialization.XmlSchemas, System.Xml.Serialization.CodeIdentifiers)" argnames="schemas, typeIdentifiers" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ImportDerivedTypeMapping(System.Xml.XmlQualifiedName, System.Type)" argnames="name, baseType" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportDerivedTypeMapping(System.Xml.XmlQualifiedName, System.Type, System.Boolean)" argnames="name, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportTypeMapping(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Xml.Serialization.XmlTypeMapping" />
+        <method name="ImportMembersMapping(System.Xml.XmlQualifiedName)" argnames="name" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportAnyType(System.Xml.XmlQualifiedName, System.String)" argnames="typeName, elementName" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportMembersMapping(System.Xml.XmlQualifiedName[])" argnames="names" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="ImportMembersMapping(System.Xml.XmlQualifiedName[], System.Type, System.Boolean)" argnames="names, baseType, baseTypeCanBeIndirect" returntype="System.Xml.Serialization.XmlMembersMapping" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSerializationReader" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializationReader" argnames="" />
+        <property name="Reader" propertytype="System.Xml.XmlReader" />
+        <property name="Document" propertytype="System.Xml.XmlDocument" />
+        <method name="InitCallbacks" argnames="" returntype="System.Void" />
+        <method name="InitIDs" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetXsiType" argnames="" returntype="System.Xml.XmlQualifiedName" />
+        <method name="ReadTypedPrimitive(System.Xml.XmlQualifiedName)" argnames="type" returntype="System.Object" />
+        <method name="IsXmlnsAttribute(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="ParseWsdlArrayType(System.Xml.XmlAttribute)" argnames="attr" returntype="System.Void" />
+        <method name="ReadNull" argnames="" returntype="System.Boolean" />
+        <method name="GetNullAttr" argnames="" returntype="System.Boolean" />
+        <method name="ReadNullableString" argnames="" returntype="System.String" />
+        <method name="ReadNullableQualifiedName" argnames="" returntype="System.Xml.XmlQualifiedName" />
+        <method name="ReadElementQualifiedName" argnames="" returntype="System.Xml.XmlQualifiedName" />
+        <method name="ReadXmlNode(System.Boolean)" argnames="wrapped" returntype="System.Xml.XmlNode" />
+        <method name="ToByteArrayBase64(System.String)" argnames="value" returntype="System.Byte[]" />
+        <method name="ToByteArrayBase64(System.Boolean)" argnames="isNull" returntype="System.Byte[]" />
+        <method name="ToByteArrayHex(System.String)" argnames="value" returntype="System.Byte[]" />
+        <method name="ToByteArrayHex(System.Boolean)" argnames="isNull" returntype="System.Byte[]" />
+        <method name="GetArrayLength(System.String, System.String)" argnames="name, ns" returntype="System.Int32" />
+        <method name="ToDateTime(System.String)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDate(System.String)" argnames="value" returntype="System.DateTime" />
+        <method name="ToTime(System.String)" argnames="value" returntype="System.DateTime" />
+        <method name="ToChar(System.String)" argnames="value" returntype="System.Char" />
+        <method name="ToEnum(System.String, System.Collections.Hashtable, System.String)" argnames="value, h, typeName" returntype="System.Int64" />
+        <method name="ToXmlName(System.String)" argnames="value" returntype="System.String" />
+        <method name="ToXmlNCName(System.String)" argnames="value" returntype="System.String" />
+        <method name="ToXmlNmToken(System.String)" argnames="value" returntype="System.String" />
+        <method name="ToXmlNmTokens(System.String)" argnames="value" returntype="System.String" />
+        <method name="ToXmlQualifiedName(System.String)" argnames="value" returntype="System.Xml.XmlQualifiedName" />
+        <method name="UnknownAttribute(System.Object, System.Xml.XmlAttribute)" argnames="o, attr" returntype="System.Void" />
+        <method name="UnknownElement(System.Object, System.Xml.XmlElement)" argnames="o, elem" returntype="System.Void" />
+        <method name="UnknownNode(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="UnreferencedObject(System.String, System.Object)" argnames="id, o" returntype="System.Void" />
+        <method name="CreateUnknownTypeException(System.Xml.XmlQualifiedName)" argnames="type" returntype="System.Exception" />
+        <method name="CreateReadOnlyCollectionException(System.String)" argnames="name" returntype="System.Exception" />
+        <method name="CreateAbstractTypeException(System.String, System.String)" argnames="name, ns" returntype="System.Exception" />
+        <method name="CreateUnknownNodeException" argnames="" returntype="System.Exception" />
+        <method name="CreateUnknownConstantException(System.String, System.Type)" argnames="value, enumType" returntype="System.Exception" />
+        <method name="CreateInvalidCastException(System.Type, System.Object)" argnames="type, value" returntype="System.Exception" />
+        <method name="EnsureArrayIndex(System.Array, System.Int32, System.Type)" argnames="a, index, elementType" returntype="System.Array" />
+        <method name="ShrinkArray(System.Array, System.Int32, System.Type, System.Boolean)" argnames="a, length, elementType, isNullable" returntype="System.Array" />
+        <method name="ReadString(System.String)" argnames="value" returntype="System.String" />
+        <method name="ReadSerializable(System.Xml.Serialization.IXmlSerializable)" argnames="serializable" returntype="System.Xml.Serialization.IXmlSerializable" />
+        <method name="ReadReference(System.String&amp;)" argnames="fixupReference" returntype="System.Boolean" />
+        <method name="AddTarget(System.String, System.Object)" argnames="id, o" returntype="System.Void" />
+        <method name="AddFixup(System.Xml.Serialization.XmlSerializationReader.Fixup)" argnames="fixup" returntype="System.Void" />
+        <method name="AddFixup(System.Xml.Serialization.XmlSerializationReader.CollectionFixup)" argnames="fixup" returntype="System.Void" />
+        <method name="GetTarget(System.String)" argnames="id" returntype="System.Object" />
+        <method name="Referenced(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="FixupArrayRefs(System.Object)" argnames="fixup" returntype="System.Void" />
+        <method name="ReadReferencedElements" argnames="" returntype="System.Void" />
+        <method name="ReadReferencedElement" argnames="" returntype="System.Object" />
+        <method name="ReadReferencedElement(System.String, System.String)" argnames="name, ns" returntype="System.Object" />
+        <method name="ReadReferencingElement(System.String&amp;)" argnames="fixupReference" returntype="System.Object" />
+        <method name="ReadReferencingElement(System.String, System.String, System.String&amp;)" argnames="name, ns, fixupReference" returntype="System.Object" />
+        <method name="ReadReferencingElement(System.String, System.String, System.Boolean, System.String&amp;)" argnames="name, ns, elementCanBeType, fixupReference" returntype="System.Object" />
+        <method name="AddReadCallback(System.String, System.String, System.Type, System.Xml.Serialization.XmlSerializationReadCallback)" argnames="name, ns, type, read" returntype="System.Void" />
+        <method name="ReadEndElement" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSerializationWriter" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializationWriter" argnames="" />
+        <property name="Writer" propertytype="System.Xml.XmlWriter" />
+        <property name="Namespaces" propertytype="System.Collections.ArrayList" />
+        <method name="InitCallbacks" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FromByteArrayBase64(System.Byte[])" argnames="value" returntype="System.Byte[]" />
+        <method name="FromByteArrayHex(System.Byte[])" argnames="value" returntype="System.String" />
+        <method name="FromDateTime(System.DateTime)" argnames="value" returntype="System.String" />
+        <method name="FromDate(System.DateTime)" argnames="value" returntype="System.String" />
+        <method name="FromTime(System.DateTime)" argnames="value" returntype="System.String" />
+        <method name="FromChar(System.Char)" argnames="value" returntype="System.String" />
+        <method name="FromEnum(System.Int64, System.String[], System.Int64[])" argnames="value, values, ids" returntype="System.String" />
+        <method name="FromXmlName(System.String)" argnames="name" returntype="System.String" />
+        <method name="FromXmlNCName(System.String)" argnames="ncName" returntype="System.String" />
+        <method name="FromXmlNmToken(System.String)" argnames="nmToken" returntype="System.String" />
+        <method name="FromXmlNmTokens(System.String)" argnames="nmTokens" returntype="System.String" />
+        <method name="WriteXsiType(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
+        <method name="WriteTypedPrimitive(System.String, System.String, System.Object, System.Boolean)" argnames="name, ns, o, xsiType" returntype="System.Void" />
+        <method name="FromXmlQualifiedName(System.Xml.XmlQualifiedName)" argnames="xmlQualifiedName" returntype="System.String" />
+        <method name="WriteStartElement(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteStartElement(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
+        <method name="WriteStartElement(System.String, System.String, System.Boolean)" argnames="name, ns, writePrefixed" returntype="System.Void" />
+        <method name="WriteStartElement(System.String, System.String, System.Object)" argnames="name, ns, o" returntype="System.Void" />
+        <method name="WriteStartElement(System.String, System.String, System.Object, System.Boolean)" argnames="name, ns, o, writePrefixed" returntype="System.Void" />
+        <method name="WriteNullTagEncoded(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteNullTagEncoded(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
+        <method name="WriteNullTagLiteral(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteNullTagLiteral(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
+        <method name="WriteEmptyTag(System.String)" argnames="name" returntype="System.Void" />
+        <method name="WriteEmptyTag(System.String, System.String)" argnames="name, ns" returntype="System.Void" />
+        <method name="WriteEndElement" argnames="" returntype="System.Void" />
+        <method name="WriteEndElement(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="WriteSerializable(System.Xml.Serialization.IXmlSerializable, System.String, System.String, System.Boolean)" argnames="serializable, name, ns, isNullable" returntype="System.Void" />
+        <method name="WriteNullableStringEncoded(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
+        <method name="WriteNullableStringLiteral(System.String, System.String, System.String)" argnames="name, ns, value" returntype="System.Void" />
+        <method name="WriteNullableStringEncodedRaw(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
+        <method name="WriteNullableStringEncodedRaw(System.String, System.String, System.Byte[], System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
+        <method name="WriteNullableStringLiteralRaw(System.String, System.String, System.String)" argnames="name, ns, value" returntype="System.Void" />
+        <method name="WriteNullableStringLiteralRaw(System.String, System.String, System.Byte[])" argnames="name, ns, value" returntype="System.Void" />
+        <method name="WriteNullableQualifiedNameEncoded(System.String, System.String, System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="name, ns, value, xsiType" returntype="System.Void" />
+        <method name="WriteNullableQualifiedNameLiteral(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="name, ns, value" returntype="System.Void" />
+        <method name="WriteElementEncoded(System.Xml.XmlNode, System.String, System.String, System.Boolean, System.Boolean)" argnames="node, name, ns, isNullable, any" returntype="System.Void" />
+        <method name="WriteElementLiteral(System.Xml.XmlNode, System.String, System.String, System.Boolean, System.Boolean)" argnames="node, name, ns, isNullable, any" returntype="System.Void" />
+        <method name="CreateUnknownTypeException(System.Object)" argnames="o" returntype="System.Exception" />
+        <method name="CreateUnknownTypeException(System.Type)" argnames="type" returntype="System.Exception" />
+        <method name="CreateMismatchChoiceException(System.String, System.String, System.String)" argnames="value, elementName, enumValue" returntype="System.Exception" />
+        <method name="CreateUnknownAnyElementException(System.String, System.String)" argnames="name, ns" returntype="System.Exception" />
+        <method name="WriteReferencingElement(System.String, System.String, System.Object)" argnames="n, ns, o" returntype="System.Void" />
+        <method name="WriteReferencingElement(System.String, System.String, System.Object, System.Boolean)" argnames="n, ns, o, isNullable" returntype="System.Void" />
+        <method name="WriteId(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="WriteXmlAttribute(System.Xml.XmlNode)" argnames="node" returntype="System.Void" />
+        <method name="WriteXmlAttribute(System.Xml.XmlNode, System.Object)" argnames="node, container" returntype="System.Void" />
+        <method name="WriteAttribute(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="WriteAttribute(System.String, System.String, System.Byte[])" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="WriteAttribute(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteAttribute(System.String, System.Byte[])" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteAttribute(System.String, System.String, System.String, System.String)" argnames="prefix, localName, ns, value" returntype="System.Void" />
+        <method name="WriteValue(System.String)" argnames="value" returntype="System.Void" />
+        <method name="WriteValue(System.Byte[])" argnames="value" returntype="System.Void" />
+        <method name="WriteStartDocument" argnames="" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
+        <method name="WriteElementString(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.String)" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.Byte[])" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.String, System.String)" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.String, System.Byte[])" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.Byte[], System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
+        <method name="WriteElementStringRaw(System.String, System.String, System.Byte[], System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
+        <method name="WriteElementQualifiedName(System.String, System.Xml.XmlQualifiedName)" argnames="localName, value" returntype="System.Void" />
+        <method name="WriteElementQualifiedName(System.String, System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="localName, value, xsiType" returntype="System.Void" />
+        <method name="WriteElementQualifiedName(System.String, System.String, System.Xml.XmlQualifiedName)" argnames="localName, ns, value" returntype="System.Void" />
+        <method name="WriteElementQualifiedName(System.String, System.String, System.Xml.XmlQualifiedName, System.Xml.XmlQualifiedName)" argnames="localName, ns, value, xsiType" returntype="System.Void" />
+        <method name="AddWriteCallback(System.Type, System.String, System.String, System.Xml.Serialization.XmlSerializationWriteCallback)" argnames="type, typeName, typeNs, callback" returntype="System.Void" />
+        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object)" argnames="n, ns, o" returntype="System.Void" />
+        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object, System.Type)" argnames="n, ns, o, ambientType" returntype="System.Void" />
+        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object, System.Type, System.Boolean)" argnames="n, ns, o, ambientType, suppressReference" returntype="System.Void" />
+        <method name="WritePotentiallyReferencingElement(System.String, System.String, System.Object, System.Type, System.Boolean, System.Boolean)" argnames="n, ns, o, ambientType, suppressReference, isNullable" returntype="System.Void" />
+        <method name="WriteReferencedElements" argnames="" returntype="System.Void" />
+        <method name="TopLevelElement" argnames="" returntype="System.Void" />
+        <method name="WriteNamespaceDeclarations(System.Xml.Serialization.XmlSerializerNamespaces)" argnames="xmlns" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="XmlSerializer" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializer" argnames="" />
+        <constructor name="XmlSerializer(System.Type, System.Xml.Serialization.XmlAttributeOverrides, System.Type[], System.Xml.Serialization.XmlRootAttribute, System.String)" argnames="type, overrides, extraTypes, root, defaultNamespace" />
+        <constructor name="XmlSerializer(System.Type, System.String)" argnames="type, defaultNamespace" />
+        <constructor name="XmlSerializer(System.Type, System.Xml.Serialization.XmlRootAttribute)" argnames="type, root" />
+        <constructor name="XmlSerializer(System.Type, System.Type[])" argnames="type, extraTypes" />
+        <constructor name="XmlSerializer(System.Type, System.Xml.Serialization.XmlAttributeOverrides)" argnames="type, overrides" />
+        <constructor name="XmlSerializer(System.Xml.Serialization.XmlTypeMapping)" argnames="xmlTypeMapping" />
+        <constructor name="XmlSerializer(System.Type)" argnames="type" />
+        <method name="Serialize(System.Object, System.Xml.Serialization.XmlSerializationWriter)" argnames="o, writer" returntype="System.Void" />
+        <method name="CreateWriter" argnames="" returntype="System.Xml.Serialization.XmlSerializationWriter" />
+        <method name="Deserialize(System.Xml.Serialization.XmlSerializationReader)" argnames="reader" returntype="System.Object" />
+        <method name="CreateReader" argnames="" returntype="System.Xml.Serialization.XmlSerializationReader" />
+        <method name="CanDeserialize(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Serialize(System.IO.TextWriter, System.Object)" argnames="textWriter, o" returntype="System.Void" />
+        <method name="Serialize(System.IO.TextWriter, System.Object, System.Xml.Serialization.XmlSerializerNamespaces)" argnames="textWriter, o, namespaces" returntype="System.Void" />
+        <method name="Serialize(System.IO.Stream, System.Object)" argnames="stream, o" returntype="System.Void" />
+        <method name="Serialize(System.IO.Stream, System.Object, System.Xml.Serialization.XmlSerializerNamespaces)" argnames="stream, o, namespaces" returntype="System.Void" />
+        <method name="Serialize(System.Xml.XmlWriter, System.Object)" argnames="xmlWriter, o" returntype="System.Void" />
+        <method name="Serialize(System.Xml.XmlWriter, System.Object, System.Xml.Serialization.XmlSerializerNamespaces)" argnames="xmlWriter, o, namespaces" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream)" argnames="stream" returntype="System.Object" />
+        <method name="Deserialize(System.IO.TextReader)" argnames="textReader" returntype="System.Object" />
+        <method name="Deserialize(System.Xml.XmlReader)" argnames="xmlReader" returntype="System.Object" />
+        <method name="FromMappings(System.Xml.Serialization.XmlMapping[])" argnames="mappings" returntype="System.Xml.Serialization.XmlSerializer[]" />
+        <method name="FromTypes(System.Type[])" argnames="types" returntype="System.Xml.Serialization.XmlSerializer[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="UnknownNode" />
+        <event name="UnknownAttribute" />
+        <event name="UnknownElement" />
+        <event name="UnreferencedObject" />
+    </class>
+    <interface name="IXmlSerializable" namespace="System.Xml.Serialization">
+        <method name="WriteXml(System.Xml.XmlWriter)" argnames="writer" returntype="System.Void" />
+        <method name="ReadXml(System.Xml.XmlReader)" argnames="reader" returntype="System.Void" />
+        <method name="GetSchema" argnames="" returntype="System.Xml.Schema.XmlSchema" />
+    </interface>
+    <delegate name="XmlAttributeEventHandler" namespace="System.Xml.Serialization">
+        <constructor name="XmlAttributeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Xml.Serialization.XmlAttributeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Xml.Serialization.XmlAttributeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="XmlElementEventHandler" namespace="System.Xml.Serialization">
+        <constructor name="XmlElementEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Xml.Serialization.XmlElementEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Xml.Serialization.XmlElementEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="XmlNodeEventHandler" namespace="System.Xml.Serialization">
+        <constructor name="XmlNodeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Xml.Serialization.XmlNodeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Xml.Serialization.XmlNodeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="UnreferencedObjectEventHandler" namespace="System.Xml.Serialization">
+        <constructor name="UnreferencedObjectEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Xml.Serialization.UnreferencedObjectEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Xml.Serialization.UnreferencedObjectEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="XmlSerializationFixupCallback" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializationFixupCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="fixup, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object)" argnames="fixup" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="XmlSerializationCollectionFixupCallback" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializationCollectionFixupCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Object, System.AsyncCallback, System.Object)" argnames="collection, collectionItems, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Object)" argnames="collection, collectionItems" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="XmlSerializationReadCallback" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializationReadCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
+        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke" argnames="" returntype="System.Object" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="XmlSerializationWriteCallback" namespace="System.Xml.Serialization">
+        <constructor name="XmlSerializationWriteCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="o, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Documentation/en/System.Xml/XmlWriter.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Documentation/en/System.Xml/XmlWriter.xml
@@ -50,15 +50,15 @@
         <format type="text/html">
           <a href="#create">Creating an XML writer</a>
         </format>
-        <br />
-<format type="text/html"><a href="#output">Specifying the output format</a></format><br />
-<format type="text/html"><a href="#conformance">Data conformance</a></format><br />
-<format type="text/html"><a href="#writing_elements">Writing elements</a></format><br />
-<format type="text/html"><a href="#writing_attributes">Writing attributes</a></format><br />
-<format type="text/html"><a href="#handling_ns">Handling namespaces</a></format><br />
-<format type="text/html"><a href="#writing_types">Writing typed data</a></format><br />
-<format type="text/html"><a href="#close">Closing the XML writer</a></format><br />
-<format type="text/html"><a href="#async">Asynchronous programming</a></format><br />
+        <br />
+<format type="text/html"><a href="#output">Specifying the output format</a></format><br />
+<format type="text/html"><a href="#conformance">Data conformance</a></format><br />
+<format type="text/html"><a href="#writing_elements">Writing elements</a></format><br />
+<format type="text/html"><a href="#writing_attributes">Writing attributes</a></format><br />
+<format type="text/html"><a href="#handling_ns">Handling namespaces</a></format><br />
+<format type="text/html"><a href="#writing_types">Writing typed data</a></format><br />
+<format type="text/html"><a href="#close">Closing the XML writer</a></format><br />
+<format type="text/html"><a href="#async">Asynchronous programming</a></format><br />
 <format type="text/html"><a href="#security">Security considerations</a></format></para>
       <format type="text/html">
         <a href="#create" />
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/array.output
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/array.output
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<PurchaseOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <ItemsOrdered>
-    <Item>
-      <ItemID>aaa111</ItemID>
-      <ItemPrice>34.22</ItemPrice>
-    </Item>
-    <Item>
-      <ItemID>bbb222</ItemID>
-      <ItemPrice>2.89</ItemPrice>
-    </Item>
-  </ItemsOrdered>
+<?xml version="1.0" encoding="utf-8"?>
+<PurchaseOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <ItemsOrdered>
+    <Item>
+      <ItemID>aaa111</ItemID>
+      <ItemPrice>34.22</ItemPrice>
+    </Item>
+    <Item>
+      <ItemID>bbb222</ItemID>
+      <ItemPrice>2.89</ItemPrice>
+    </Item>
+  </ItemsOrdered>
 </PurchaseOrder>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/complex.output
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/complex.output
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8"?>
-<PurchaseOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <MyAddress>
-    <FirstName>George</FirstName>
-  </MyAddress>
+<?xml version="1.0" encoding="utf-8"?>
+<PurchaseOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <MyAddress>
+    <FirstName>George</FirstName>
+  </MyAddress>
 </PurchaseOrder>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/dataset.output
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/dataset.output
@@ -1,52 +1,52 @@
-<?xml version="1.0" encoding="utf-8"?>
-<DataSet>
-  <xs:schema id="myDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xs:element name="myDataSet" msdata:IsDataSet="true" msdata:Locale="en-GB">
-      <xs:complexType>
-        <xs:choice maxOccurs="unbounded">
-          <xs:element name="table1">
-            <xs:complexType>
-              <xs:sequence>
-                <xs:element name="thing" type="xs:string" minOccurs="0" />
-              </xs:sequence>
-            </xs:complexType>
-          </xs:element>
-        </xs:choice>
-      </xs:complexType>
-    </xs:element>
-  </xs:schema>
-  <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
-    <myDataSet>
-      <table1 diffgr:id="table11" msdata:rowOrder="0" diffgr:hasChanges="inserted">
-        <thing>Thing 0</thing>
-      </table1>
-      <table1 diffgr:id="table12" msdata:rowOrder="1" diffgr:hasChanges="inserted">
-        <thing>Thing 1</thing>
-      </table1>
-      <table1 diffgr:id="table13" msdata:rowOrder="2" diffgr:hasChanges="inserted">
-        <thing>Thing 2</thing>
-      </table1>
-      <table1 diffgr:id="table14" msdata:rowOrder="3" diffgr:hasChanges="inserted">
-        <thing>Thing 3</thing>
-      </table1>
-      <table1 diffgr:id="table15" msdata:rowOrder="4" diffgr:hasChanges="inserted">
-        <thing>Thing 4</thing>
-      </table1>
-      <table1 diffgr:id="table16" msdata:rowOrder="5" diffgr:hasChanges="inserted">
-        <thing>Thing 5</thing>
-      </table1>
-      <table1 diffgr:id="table17" msdata:rowOrder="6" diffgr:hasChanges="inserted">
-        <thing>Thing 6</thing>
-      </table1>
-      <table1 diffgr:id="table18" msdata:rowOrder="7" diffgr:hasChanges="inserted">
-        <thing>Thing 7</thing>
-      </table1>
-      <table1 diffgr:id="table19" msdata:rowOrder="8" diffgr:hasChanges="inserted">
-        <thing>Thing 8</thing>
-      </table1>
-      <table1 diffgr:id="table110" msdata:rowOrder="9" diffgr:hasChanges="inserted">
-        <thing>Thing 9</thing>
-      </table1>
-    </myDataSet>
-  </diffgr:diffgram>
+<?xml version="1.0" encoding="utf-8"?>
+<DataSet>
+  <xs:schema id="myDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xs:element name="myDataSet" msdata:IsDataSet="true" msdata:Locale="en-GB">
+      <xs:complexType>
+        <xs:choice maxOccurs="unbounded">
+          <xs:element name="table1">
+            <xs:complexType>
+              <xs:sequence>
+                <xs:element name="thing" type="xs:string" minOccurs="0" />
+              </xs:sequence>
+            </xs:complexType>
+          </xs:element>
+        </xs:choice>
+      </xs:complexType>
+    </xs:element>
+  </xs:schema>
+  <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
+    <myDataSet>
+      <table1 diffgr:id="table11" msdata:rowOrder="0" diffgr:hasChanges="inserted">
+        <thing>Thing 0</thing>
+      </table1>
+      <table1 diffgr:id="table12" msdata:rowOrder="1" diffgr:hasChanges="inserted">
+        <thing>Thing 1</thing>
+      </table1>
+      <table1 diffgr:id="table13" msdata:rowOrder="2" diffgr:hasChanges="inserted">
+        <thing>Thing 2</thing>
+      </table1>
+      <table1 diffgr:id="table14" msdata:rowOrder="3" diffgr:hasChanges="inserted">
+        <thing>Thing 3</thing>
+      </table1>
+      <table1 diffgr:id="table15" msdata:rowOrder="4" diffgr:hasChanges="inserted">
+        <thing>Thing 4</thing>
+      </table1>
+      <table1 diffgr:id="table16" msdata:rowOrder="5" diffgr:hasChanges="inserted">
+        <thing>Thing 5</thing>
+      </table1>
+      <table1 diffgr:id="table17" msdata:rowOrder="6" diffgr:hasChanges="inserted">
+        <thing>Thing 6</thing>
+      </table1>
+      <table1 diffgr:id="table18" msdata:rowOrder="7" diffgr:hasChanges="inserted">
+        <thing>Thing 7</thing>
+      </table1>
+      <table1 diffgr:id="table19" msdata:rowOrder="8" diffgr:hasChanges="inserted">
+        <thing>Thing 8</thing>
+      </table1>
+      <table1 diffgr:id="table110" msdata:rowOrder="9" diffgr:hasChanges="inserted">
+        <thing>Thing 9</thing>
+      </table1>
+    </myDataSet>
+  </diffgr:diffgram>
 </DataSet>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/icollection.output
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/icollection.output
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ArrayOfEmployee xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <Employee>
-    <EmpName>John</EmpName>
-    <EmpID>100xxx</EmpID>
-  </Employee>
+<?xml version="1.0" encoding="utf-8"?>
+<ArrayOfEmployee xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <Employee>
+    <EmpName>John</EmpName>
+    <EmpID>100xxx</EmpID>
+  </Employee>
 </ArrayOfEmployee>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/potest.output
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/potest.output
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8"?>
-<PurchaseOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://cpandl.com">
-  <ShipTo Name="Teresa Atkinson">
-    <Line1>1 Main St.</Line1>
-    <City>AnyTown</City>
-    <State>WA</State>
-    <Zip>00000</Zip>
-  </ShipTo>
-  <OrderDate>13 May 2003</OrderDate>
-  <Items>
-    <OrderedItem>
-      <ItemName>Widget S</ItemName>
-      <Description>Small widget</Description>
-      <UnitPrice>5.23</UnitPrice>
-      <Quantity>3</Quantity>
-      <LineTotal>15.69</LineTotal>
-    </OrderedItem>
-  </Items>
-  <SubTotal>15.69</SubTotal>
-  <ShipCost>12.51</ShipCost>
-  <TotalCost>28.20</TotalCost>
+<?xml version="1.0" encoding="utf-8"?>
+<PurchaseOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://cpandl.com">
+  <ShipTo Name="Teresa Atkinson">
+    <Line1>1 Main St.</Line1>
+    <City>AnyTown</City>
+    <State>WA</State>
+    <Zip>00000</Zip>
+  </ShipTo>
+  <OrderDate>13 May 2003</OrderDate>
+  <Items>
+    <OrderedItem>
+      <ItemName>Widget S</ItemName>
+      <Description>Small widget</Description>
+      <UnitPrice>5.23</UnitPrice>
+      <Quantity>3</Quantity>
+      <LineTotal>15.69</LineTotal>
+    </OrderedItem>
+  </Items>
+  <SubTotal>15.69</SubTotal>
+  <ShipCost>12.51</ShipCost>
+  <TotalCost>28.20</TotalCost>
 </PurchaseOrder>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/xmlelement.output
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/xmlelement.output
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <MyElement xmlns="ns">Hello, World!</MyElement>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/xmlnode.output
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/System.Xml.Serialization/standalone_tests/xmlnode.output
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <MyNode xmlns="ns">Hello, World!</MyNode>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/Microsoft.Test.csproj
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/Microsoft.Test.csproj
@@ -1,162 +1,162 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.0.9466"
-        SchemaVersion = "1.0"
-        ProjectGuid = "{D6C51F53-33E2-41DF-981A-33FCFA81CDA7}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "Microsoft.Test"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                RootNamespace = "Test"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "true"
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "..\..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
-                />
-                <Reference
-                    Name = "NUnitCore"
-                    AssemblyName = "NUnitCore"
-                    HintPath = "..\..\..\nunit\NUnitCore.dll"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AllTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ChangeLog"
-                    BuildAction = "None"
-                />
-                <File
-                    RelPath = "NameTableTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlAttributeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlCDataSectionTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlCommentTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlDeclarationTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlDocumentTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlDocumentTypeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlElementTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlNamespaceManagerTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlNodeListTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlSignificantWhitespaceTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlTextReaderTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlTextWriterTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlWhiteSpaceTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.0.9466"
+        SchemaVersion = "1.0"
+        ProjectGuid = "{D6C51F53-33E2-41DF-981A-33FCFA81CDA7}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "Microsoft.Test"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                RootNamespace = "Test"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "true"
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "..\..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
+                />
+                <Reference
+                    Name = "NUnitCore"
+                    AssemblyName = "NUnitCore"
+                    HintPath = "..\..\..\nunit\NUnitCore.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AllTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ChangeLog"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "NameTableTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlAttributeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlCDataSectionTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlCommentTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlDeclarationTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlDocumentTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlDocumentTypeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlElementTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlNamespaceManagerTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlNodeListTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlSignificantWhitespaceTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlTextReaderTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlTextWriterTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlWhiteSpaceTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/Mono.Test.csproj
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/Mono.Test.csproj
@@ -1,167 +1,167 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.0.9466"
-        SchemaVersion = "1.0"
-        ProjectGuid = "{D6C51F53-33E2-41DF-981A-33FCFA81CDA7}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "Mono.Test"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                RootNamespace = "Test"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "true"
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "..\..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
-                />
-                <Reference
-                    Name = "Mono.System.XML"
-                    Project = "{0CB7FB41-3C0F-40E8-ACD3-8C5B8BC35B2C}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "NUnitCore"
-                    AssemblyName = "NUnitCore"
-                    HintPath = "..\..\..\nunit\NUnitCore.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AllTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ChangeLog"
-                    BuildAction = "None"
-                />
-                <File
-                    RelPath = "NameTableTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlAttributeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlCDataSectionTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlCommentTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlDeclarationTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlDocumentTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlDocumentTypeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlElementTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlNamespaceManagerTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlNodeListTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlSignificantWhitespaceTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlTextReaderTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlTextWriterTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlWhiteSpaceTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.0.9466"
+        SchemaVersion = "1.0"
+        ProjectGuid = "{D6C51F53-33E2-41DF-981A-33FCFA81CDA7}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "Mono.Test"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                RootNamespace = "Test"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "true"
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "..\..\..\..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
+                />
+                <Reference
+                    Name = "Mono.System.XML"
+                    Project = "{0CB7FB41-3C0F-40E8-ACD3-8C5B8BC35B2C}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "NUnitCore"
+                    AssemblyName = "NUnitCore"
+                    HintPath = "..\..\..\nunit\NUnitCore.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AllTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ChangeLog"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "NameTableTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlAttributeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlCDataSectionTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlCommentTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlDeclarationTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlDocumentTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlDocumentTypeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlElementTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlNamespaceManagerTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlNodeListTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlSignificantWhitespaceTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlTextReaderTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlTextWriterTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlWhiteSpaceTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/MonoMicro.Test.csproj
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/MonoMicro.Test.csproj
@@ -1,428 +1,428 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{F7734143-3845-4288-B1CA-FE614FFA70F0}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "MonoMicro.Test"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "MonoMicro.Test"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "true"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
-                />
-                <Reference
-                    Name = "nunit.framework"
-                    AssemblyName = "nunit.framework"
-                    HintPath = "..\..\..\..\..\Program Files\NUnit V2.0\bin\nunit.framework.dll"
-                />
-                <Reference
-                    Name = "Mono.System.XML"
-                    Project = "{0CB7FB41-3C0F-40E8-ACD3-8C5B8BC35B2C}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "ChangeLog"
-                    BuildAction = "None"
-                />
-                <File
-                    RelPath = "System.Xml\NameTableTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlAttributeCollectionTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlAttributeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlCDataSectionTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlCharacterDataTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlCharTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlCommentTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlConvertTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlDeclarationTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlDocumentEventTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlDocumentFragmentTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlDocumentTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlDocumentTypeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlElementTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlEntityReferenceTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlEntityTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlNamespaceManagerTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlNodeListTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlNodeReaderTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlNodeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlProcessingInstructionTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlReaderCommonTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlSecureResolverTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlSignificantWhitespaceTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlTextReaderTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlTextTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlTextWriterTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlUrlResolverTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlValidatingReaderTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlWhiteSpaceTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XmlWriterTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XsdParticleValidationTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\XsdValidatingReaderTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\ITest.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\util.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\Attr\Attr.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\CharacterData\CharacterData.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\Comment\Comment.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\Document\Document.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\DOMImplementation\DOMImplementation.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\Element\Element.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\NamedNodeMap\NamedNodeMap.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\Node\Node.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\NodeList\NodeList.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml\nist_dom\fundamental\Text\Text.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaAssertion.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaBuiltInDatatypeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaCollectionTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaComplexTypeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaDatatypeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaGroupRefTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaLengthFacetTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Schema\XmlSchemaTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Serialization\DeserializeTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Serialization\XmlAttributesTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Serialization\XmlReflectionImporterTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Serialization\XmlSerializationWriterTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Serialization\XmlSerializerTestClasses.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Serialization\XmlSerializerTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.XPath\SelectNodesTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.XPath\XPathNavigatorCommonTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.XPath\XPathNavigatorEvaluateTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.XPath\XPathNavigatorMatchesTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.XPath\XPathNavigatorTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Xsl\MsxslScriptTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Xsl\XsltArgumentListTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "System.Xml.Xsl\XslTransformTests.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{F7734143-3845-4288-B1CA-FE614FFA70F0}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "MonoMicro.Test"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "MonoMicro.Test"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "true"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
+                />
+                <Reference
+                    Name = "nunit.framework"
+                    AssemblyName = "nunit.framework"
+                    HintPath = "..\..\..\..\..\Program Files\NUnit V2.0\bin\nunit.framework.dll"
+                />
+                <Reference
+                    Name = "Mono.System.XML"
+                    Project = "{0CB7FB41-3C0F-40E8-ACD3-8C5B8BC35B2C}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "ChangeLog"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "System.Xml\NameTableTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlAttributeCollectionTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlAttributeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlCDataSectionTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlCharacterDataTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlCharTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlCommentTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlConvertTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlDeclarationTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlDocumentEventTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlDocumentFragmentTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlDocumentTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlDocumentTypeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlElementTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlEntityReferenceTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlEntityTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlNamespaceManagerTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlNodeListTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlNodeReaderTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlNodeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlProcessingInstructionTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlReaderCommonTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlSecureResolverTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlSignificantWhitespaceTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlTextReaderTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlTextTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlTextWriterTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlUrlResolverTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlValidatingReaderTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlWhiteSpaceTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XmlWriterTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XsdParticleValidationTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\XsdValidatingReaderTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\ITest.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\util.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\Attr\Attr.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\CharacterData\CharacterData.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\Comment\Comment.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\Document\Document.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\DOMImplementation\DOMImplementation.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\Element\Element.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\NamedNodeMap\NamedNodeMap.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\Node\Node.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\NodeList\NodeList.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml\nist_dom\fundamental\Text\Text.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaAssertion.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaBuiltInDatatypeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaCollectionTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaComplexTypeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaDatatypeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaGroupRefTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaLengthFacetTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Schema\XmlSchemaTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Serialization\DeserializeTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Serialization\XmlAttributesTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Serialization\XmlReflectionImporterTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Serialization\XmlSerializationWriterTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Serialization\XmlSerializerTestClasses.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Serialization\XmlSerializerTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.XPath\SelectNodesTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.XPath\XPathNavigatorCommonTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.XPath\XPathNavigatorEvaluateTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.XPath\XPathNavigatorMatchesTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.XPath\XPathNavigatorTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Xsl\MsxslScriptTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Xsl\XsltArgumentListTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "System.Xml.Xsl\XslTransformTests.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaBuiltInDatatypeTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaBuiltInDatatypeTests.cs
@@ -1,82 +1,82 @@
-//
-// Tests for the properties of the builtin types.
-// 
-// Author:
-//   David Sheldon <dave-mono@earth.li>
-//
-//
-
-using System;
-using System.Xml;
-using System.Xml.Schema;
-using System.IO;
-using NUnit.Framework;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlSchemaBuiltInDatatypeTests
-	{
-
-    [Test]
-    public void TestWhiteSpaceCollapse () {
-       WhiteSpaceTest("date", "2003-10-10");
-       WhiteSpaceTest("decimal", "2003.10");
-       WhiteSpaceTest("integer", "0004");
-       WhiteSpaceTest("float", "1.3");
-       WhiteSpaceTest("boolean", "true");
-       WhiteSpaceTest("double", "2.3");
-       WhiteSpaceTest("time", "12:34:56");
-       WhiteSpaceTest("duration", "P1347Y");
-       WhiteSpaceTest("dateTime", "2003-10-10T12:34:56.78");
-       WhiteSpaceTest("gYearMonth", "2003-10");
-       WhiteSpaceTest("gYear", "2003");
-       WhiteSpaceTest("gMonthDay", "--12-12");  // 
-       WhiteSpaceTest("gMonth", "--12--");      //  These three will fail, due to 
-       WhiteSpaceTest("gDay", "---12");         //  bug 52274
-       WhiteSpaceTest("hexBinary", "0fB7");
-    }
-
-
-    /* Takes a type name, and a valid example of that type, 
-       Creates a schema consisting of a single element of that
-       type, and validates a bit of xml containing the valid 
-       value, with whitespace against that schema.
-     
-FIXME: Really we want to test the value of whitespace more
-       directly that by creating a schema then parsing a string.
-     
-     */
-
-    public void WhiteSpaceTest(string type, string valid) {
-      passed = true;
-      XmlSchema schema = new XmlSchema();
-
-      schema.TargetNamespace= "http://example.com/testCase";
-      XmlSchemaElement element = new XmlSchemaElement();
-      element.Name = "a";
-      element.SchemaTypeName = new XmlQualifiedName(type, "http://www.w3.org/2001/XMLSchema");
-      schema.Items.Add(element);
-      schema.Compile(new ValidationEventHandler(ValidationCallbackOne));
-
-      XmlValidatingReader vr = new XmlValidatingReader(new XmlTextReader(new StringReader("<a xmlns='http://example.com/testCase'>\n\n"+valid+"\n\n</a>" )));
-      vr.Schemas.Add(schema);
-      vr.ValidationType = ValidationType.Schema;
-//      vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne);
-      while(vr.Read()) { };
-      vr.Close();
-      
-      Assert.IsTrue (passed, type + " doesn't collapse whitespace: " + (errorInfo != null ? errorInfo.Message : null));
-    }
-
-    bool passed = true;
-    ValidationEventArgs errorInfo;
-
-    public void ValidationCallbackOne(object sender, ValidationEventArgs args) {
-      passed = false;
-      errorInfo = args;
-    }
-
-
-  }  
-}
+//
+// Tests for the properties of the builtin types.
+// 
+// Author:
+//   David Sheldon <dave-mono@earth.li>
+//
+//
+
+using System;
+using System.Xml;
+using System.Xml.Schema;
+using System.IO;
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlSchemaBuiltInDatatypeTests
+	{
+
+    [Test]
+    public void TestWhiteSpaceCollapse () {
+       WhiteSpaceTest("date", "2003-10-10");
+       WhiteSpaceTest("decimal", "2003.10");
+       WhiteSpaceTest("integer", "0004");
+       WhiteSpaceTest("float", "1.3");
+       WhiteSpaceTest("boolean", "true");
+       WhiteSpaceTest("double", "2.3");
+       WhiteSpaceTest("time", "12:34:56");
+       WhiteSpaceTest("duration", "P1347Y");
+       WhiteSpaceTest("dateTime", "2003-10-10T12:34:56.78");
+       WhiteSpaceTest("gYearMonth", "2003-10");
+       WhiteSpaceTest("gYear", "2003");
+       WhiteSpaceTest("gMonthDay", "--12-12");  // 
+       WhiteSpaceTest("gMonth", "--12--");      //  These three will fail, due to 
+       WhiteSpaceTest("gDay", "---12");         //  bug 52274
+       WhiteSpaceTest("hexBinary", "0fB7");
+    }
+
+
+    /* Takes a type name, and a valid example of that type, 
+       Creates a schema consisting of a single element of that
+       type, and validates a bit of xml containing the valid 
+       value, with whitespace against that schema.
+     
+FIXME: Really we want to test the value of whitespace more
+       directly that by creating a schema then parsing a string.
+     
+     */
+
+    public void WhiteSpaceTest(string type, string valid) {
+      passed = true;
+      XmlSchema schema = new XmlSchema();
+
+      schema.TargetNamespace= "http://example.com/testCase";
+      XmlSchemaElement element = new XmlSchemaElement();
+      element.Name = "a";
+      element.SchemaTypeName = new XmlQualifiedName(type, "http://www.w3.org/2001/XMLSchema");
+      schema.Items.Add(element);
+      schema.Compile(new ValidationEventHandler(ValidationCallbackOne));
+
+      XmlValidatingReader vr = new XmlValidatingReader(new XmlTextReader(new StringReader("<a xmlns='http://example.com/testCase'>\n\n"+valid+"\n\n</a>" )));
+      vr.Schemas.Add(schema);
+      vr.ValidationType = ValidationType.Schema;
+//      vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallbackOne);
+      while(vr.Read()) { };
+      vr.Close();
+      
+      Assert.IsTrue (passed, type + " doesn't collapse whitespace: " + (errorInfo != null ? errorInfo.Message : null));
+    }
+
+    bool passed = true;
+    ValidationEventArgs errorInfo;
+
+    public void ValidationCallbackOne(object sender, ValidationEventArgs args) {
+      passed = false;
+      errorInfo = args;
+    }
+
+
+  }  
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaLengthFacetTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaLengthFacetTests.cs
@@ -1,85 +1,85 @@
-//
-// Tests for the length facets.
-// 
-// Author:
-//   David Sheldon <dave-mono@earth.li>
-//
-//
-
-using System;
-using System.Xml;
-using System.Xml.Schema;
-using NUnit.Framework;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlSchemaLengthFacetTests
-	{
-
-    [Test]
-    public void TestValidCombinations () {
-      CreateSimpletypeLength("5","-","-", true);
-      CreateSimpletypeLength("5","1","-", false);
-      CreateSimpletypeLength("5","-","1", false);
-      
-      CreateSimpletypeLength("-","1","10", true);
-      CreateSimpletypeLength("-","10","1", false);
-      CreateSimpletypeLength("-","1","-", true);
-      CreateSimpletypeLength("-","-","1", true);
-      
-      CreateSimpletypeLength("-5","-","-", false);
-      CreateSimpletypeLength("-","-1","-", false);
-      CreateSimpletypeLength("-","-","-1", false);
-
-      CreateSimpletypeLength("5.4","-","-", false);
-      CreateSimpletypeLength("-","1.0","-", false);
-      CreateSimpletypeLength("-","-","1.3", false);
-
-      CreateSimpletypeLength("+5","-","-", true);
-      CreateSimpletypeLength("-","+1","-", true);
-      CreateSimpletypeLength("-","-","+1", true);
-     }
-
-    private void CreateSimpletypeLength(string length, string minLength, string maxLength, bool expected) {
-      passed = true;
-
-      XmlSchema schema = new XmlSchema();
-
-      XmlSchemaSimpleType testType = new XmlSchemaSimpleType();
-      testType.Name = "TestType";
-
-      XmlSchemaSimpleTypeRestriction testTypeRestriction = new XmlSchemaSimpleTypeRestriction();
-      testTypeRestriction.BaseTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
-
-      if (length != "-") {
-        XmlSchemaLengthFacet _length = new XmlSchemaLengthFacet();
-        _length.Value = length;
-        testTypeRestriction.Facets.Add(_length);
-      }
-      if (minLength != "-") {
-        XmlSchemaMinLengthFacet _minLength = new XmlSchemaMinLengthFacet();
-        _minLength.Value = minLength;
-        testTypeRestriction.Facets.Add(_minLength);
-      }
-      if (maxLength != "-") {
-        XmlSchemaMaxLengthFacet _maxLength = new XmlSchemaMaxLengthFacet();
-        _maxLength.Value = maxLength;
-        testTypeRestriction.Facets.Add(_maxLength);
-      }
-
-      testType.Content = testTypeRestriction;
-      schema.Items.Add(testType);
-      schema.Compile(new ValidationEventHandler(ValidationCallbackOne));
-
-      Assert.IsTrue (expected == passed, (passed ? "Test passed, should have failed" : "Test failed, should have passed") + ": " + length + " " + minLength + " " + maxLength);
-      
-    }
-
-    bool passed = true;
-
-    private void ValidationCallbackOne(object sender, ValidationEventArgs args) {
-      passed = false;
-    }
-  }  
-}
+//
+// Tests for the length facets.
+// 
+// Author:
+//   David Sheldon <dave-mono@earth.li>
+//
+//
+
+using System;
+using System.Xml;
+using System.Xml.Schema;
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlSchemaLengthFacetTests
+	{
+
+    [Test]
+    public void TestValidCombinations () {
+      CreateSimpletypeLength("5","-","-", true);
+      CreateSimpletypeLength("5","1","-", false);
+      CreateSimpletypeLength("5","-","1", false);
+      
+      CreateSimpletypeLength("-","1","10", true);
+      CreateSimpletypeLength("-","10","1", false);
+      CreateSimpletypeLength("-","1","-", true);
+      CreateSimpletypeLength("-","-","1", true);
+      
+      CreateSimpletypeLength("-5","-","-", false);
+      CreateSimpletypeLength("-","-1","-", false);
+      CreateSimpletypeLength("-","-","-1", false);
+
+      CreateSimpletypeLength("5.4","-","-", false);
+      CreateSimpletypeLength("-","1.0","-", false);
+      CreateSimpletypeLength("-","-","1.3", false);
+
+      CreateSimpletypeLength("+5","-","-", true);
+      CreateSimpletypeLength("-","+1","-", true);
+      CreateSimpletypeLength("-","-","+1", true);
+     }
+
+    private void CreateSimpletypeLength(string length, string minLength, string maxLength, bool expected) {
+      passed = true;
+
+      XmlSchema schema = new XmlSchema();
+
+      XmlSchemaSimpleType testType = new XmlSchemaSimpleType();
+      testType.Name = "TestType";
+
+      XmlSchemaSimpleTypeRestriction testTypeRestriction = new XmlSchemaSimpleTypeRestriction();
+      testTypeRestriction.BaseTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
+
+      if (length != "-") {
+        XmlSchemaLengthFacet _length = new XmlSchemaLengthFacet();
+        _length.Value = length;
+        testTypeRestriction.Facets.Add(_length);
+      }
+      if (minLength != "-") {
+        XmlSchemaMinLengthFacet _minLength = new XmlSchemaMinLengthFacet();
+        _minLength.Value = minLength;
+        testTypeRestriction.Facets.Add(_minLength);
+      }
+      if (maxLength != "-") {
+        XmlSchemaMaxLengthFacet _maxLength = new XmlSchemaMaxLengthFacet();
+        _maxLength.Value = maxLength;
+        testTypeRestriction.Facets.Add(_maxLength);
+      }
+
+      testType.Content = testTypeRestriction;
+      schema.Items.Add(testType);
+      schema.Compile(new ValidationEventHandler(ValidationCallbackOne));
+
+      Assert.IsTrue (expected == passed, (passed ? "Test passed, should have failed" : "Test failed, should have passed") + ": " + length + " " + minLength + " " + maxLength);
+      
+    }
+
+    bool passed = true;
+
+    private void ValidationCallbackOne(object sender, ValidationEventArgs args) {
+      passed = false;
+    }
+  }  
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XmlDocumentEventTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XmlDocumentEventTests.cs
@@ -1,110 +1,110 @@
-//
-// XmlDocumentEventTests.cs
-//
-// Author:
-//	Atsushi Enomoto  <atsushi@ximian.com>
-//
-// (C)2004 Novell Inc.
-//
-// This class is a set of event test.
-//
-using NUnit.Framework;
-using System;
-using System.Text;
-using System.Xml;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlDocumentEventTests
-	{
-		private StringBuilder eventLogBuilder = new StringBuilder ();
-
-		private XmlDocument GetEventDocument ()
-		{
-			XmlDocument document = new XmlDocument ();
-			SetEvents (document);
-			return document;
-		}
-
-		private void SetEvents (XmlDocument document)
-		{
-			document.NodeInserting += new XmlNodeChangedEventHandler (OnInsertingLog);
-			document.NodeInserted += new XmlNodeChangedEventHandler (OnInsertedLog);
-			document.NodeChanging += new XmlNodeChangedEventHandler (OnChangingLog);
-			document.NodeChanged += new XmlNodeChangedEventHandler (OnChangedLog);
-			document.NodeRemoving += new XmlNodeChangedEventHandler (OnRemovingLog);
-			document.NodeRemoved += new XmlNodeChangedEventHandler (OnRemovedLog);
-		}
-
-		private void OnInsertingLog (object o, XmlNodeChangedEventArgs e)
-		{
-			eventLogBuilder.Append ("Inserting: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
-		}
-
-		private void OnInsertedLog (object o, XmlNodeChangedEventArgs e)
-		{
-			eventLogBuilder.Append ("Inserted: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
-		}
-
-		private void OnChangingLog (object o, XmlNodeChangedEventArgs e)
-		{
-			eventLogBuilder.Append ("Changing: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
-		}
-
-		private void OnChangedLog (object o, XmlNodeChangedEventArgs e)
-		{
-			eventLogBuilder.Append ("Changed: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
-		}
-
-		private void OnRemovingLog (object o, XmlNodeChangedEventArgs e)
-		{
-			eventLogBuilder.Append ("Removing: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
-		}
-
-		private void OnRemovedLog (object o, XmlNodeChangedEventArgs e)
-		{
-			eventLogBuilder.Append ("Removed: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
-		}
-
-		[SetUp]
-		public void SetUp ()
-		{
-			eventLogBuilder.Length = 0;
-		}
-
-		private string EventLog {
-			get { return eventLogBuilder.ToString (); }
-		}
-
-		[Test]
-		public void InsertingOrder ()
-		{
-			XmlDocument document = GetEventDocument ();
-			XmlElement el = document.CreateElement ("root");
-			el.AppendChild (document.CreateTextNode ("simple text node."));
-			document.AppendChild (el);
-			Assert.AreEqual ("Inserting: Text into Element.\n" +
-				"Inserted: Text into Element.\n" +
-				"Inserting: Element into Document.\n" +
-				"Inserted: Element into Document.\n",
-				EventLog);
-		}
-
-		[Test]
-		public void DefaultAttributeRemoval ()
-		{
-			XmlDocument doc = new XmlDocument ();
-			doc.LoadXml ("<!DOCTYPE root [<!ELEMENT root (#PCDATA)><!ATTLIST root foo CDATA 'foo-def'>]><root></root>");
-			SetEvents (doc);
-			doc.DocumentElement.RemoveAll ();
-			Assert.AreEqual ("Removing: Attribute from Element.\n" +
-				"Removed: Attribute from Element.\n" +
-				"Inserting: Text into Attribute.\n" +
-				"Inserted: Text into Attribute.\n" +
-				"Inserting: Attribute into Element.\n" +
-				"Inserted: Attribute into Element.\n",
-				EventLog);
-		}
-	}
-}
+//
+// XmlDocumentEventTests.cs
+//
+// Author:
+//	Atsushi Enomoto  <atsushi@ximian.com>
+//
+// (C)2004 Novell Inc.
+//
+// This class is a set of event test.
+//
+using NUnit.Framework;
+using System;
+using System.Text;
+using System.Xml;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlDocumentEventTests
+	{
+		private StringBuilder eventLogBuilder = new StringBuilder ();
+
+		private XmlDocument GetEventDocument ()
+		{
+			XmlDocument document = new XmlDocument ();
+			SetEvents (document);
+			return document;
+		}
+
+		private void SetEvents (XmlDocument document)
+		{
+			document.NodeInserting += new XmlNodeChangedEventHandler (OnInsertingLog);
+			document.NodeInserted += new XmlNodeChangedEventHandler (OnInsertedLog);
+			document.NodeChanging += new XmlNodeChangedEventHandler (OnChangingLog);
+			document.NodeChanged += new XmlNodeChangedEventHandler (OnChangedLog);
+			document.NodeRemoving += new XmlNodeChangedEventHandler (OnRemovingLog);
+			document.NodeRemoved += new XmlNodeChangedEventHandler (OnRemovedLog);
+		}
+
+		private void OnInsertingLog (object o, XmlNodeChangedEventArgs e)
+		{
+			eventLogBuilder.Append ("Inserting: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
+		}
+
+		private void OnInsertedLog (object o, XmlNodeChangedEventArgs e)
+		{
+			eventLogBuilder.Append ("Inserted: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
+		}
+
+		private void OnChangingLog (object o, XmlNodeChangedEventArgs e)
+		{
+			eventLogBuilder.Append ("Changing: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
+		}
+
+		private void OnChangedLog (object o, XmlNodeChangedEventArgs e)
+		{
+			eventLogBuilder.Append ("Changed: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
+		}
+
+		private void OnRemovingLog (object o, XmlNodeChangedEventArgs e)
+		{
+			eventLogBuilder.Append ("Removing: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
+		}
+
+		private void OnRemovedLog (object o, XmlNodeChangedEventArgs e)
+		{
+			eventLogBuilder.Append ("Removed: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
+		}
+
+		[SetUp]
+		public void SetUp ()
+		{
+			eventLogBuilder.Length = 0;
+		}
+
+		private string EventLog {
+			get { return eventLogBuilder.ToString (); }
+		}
+
+		[Test]
+		public void InsertingOrder ()
+		{
+			XmlDocument document = GetEventDocument ();
+			XmlElement el = document.CreateElement ("root");
+			el.AppendChild (document.CreateTextNode ("simple text node."));
+			document.AppendChild (el);
+			Assert.AreEqual ("Inserting: Text into Element.\n" +
+				"Inserted: Text into Element.\n" +
+				"Inserting: Element into Document.\n" +
+				"Inserted: Element into Document.\n",
+				EventLog);
+		}
+
+		[Test]
+		public void DefaultAttributeRemoval ()
+		{
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml ("<!DOCTYPE root [<!ELEMENT root (#PCDATA)><!ATTLIST root foo CDATA 'foo-def'>]><root></root>");
+			SetEvents (doc);
+			doc.DocumentElement.RemoveAll ();
+			Assert.AreEqual ("Removing: Attribute from Element.\n" +
+				"Removed: Attribute from Element.\n" +
+				"Inserting: Text into Attribute.\n" +
+				"Inserted: Text into Attribute.\n" +
+				"Inserting: Attribute into Element.\n" +
+				"Inserted: Attribute into Element.\n",
+				EventLog);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XmlNodeReaderTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XmlNodeReaderTests.cs
@@ -1,205 +1,205 @@
-//
-// System.Xml.XmlNodeReaderTests
-//
-// Authors:
-//   Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
-//   Martin Willemoes Hansen <mwh@sysrq.dk>
-//
-// (C) 2003 Atsushi Enomoto
-// (C) 2003 Martin Willemoes Hansen
-//
-//
-
-using System;
-using System.IO;
-using System.Text;
-using System.Xml;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlNodeReaderTests
-	{
-		[SetUp]
-		public void GetReady ()
-		{
-			document.LoadXml ("<root attr1='value1'><child /></root>");
-		}
-
-		XmlDocument document = new XmlDocument ();
-
-		[Test]
-		public void InvalidConstruction ()
-		{
-			XmlNodeReader nrdr;
-			try {
-				nrdr = new XmlNodeReader (null);
-				Assert.Fail ("ArgumentNullException is expected.");
-			} catch (ArgumentNullException) {
-			}
-			nrdr = new XmlNodeReader (new XmlDocument ());
-			nrdr.Read ();
-			Assert.AreEqual (ReadState.Error, nrdr.ReadState, "newDoc.ReadState");
-			Assert.AreEqual (true, nrdr.EOF, "newDoc.EOF");
-			Assert.AreEqual (XmlNodeType.None, nrdr.NodeType, "newDoc.NodeType");
-			nrdr = new XmlNodeReader (document.CreateDocumentFragment ());
-			nrdr.Read ();
-			Assert.AreEqual (ReadState.Error, nrdr.ReadState, "Fragment.ReadState");
-			Assert.AreEqual (true, nrdr.EOF, "Fragment.EOF");
-			Assert.AreEqual (XmlNodeType.None, nrdr.NodeType, "Fragment.NodeType");
-		}
-
-		[Test]
-		public void ReadFromElement ()
-		{
-			XmlNodeReader nrdr = new XmlNodeReader (document.DocumentElement);
-			nrdr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, nrdr.NodeType, "<root>.NodeType");
-			Assert.AreEqual ("root", nrdr.Name, "<root>.Name");
-			Assert.AreEqual (ReadState.Interactive, nrdr.ReadState, "<root>.ReadState");
-			Assert.AreEqual (0, nrdr.Depth, "<root>.Depth");
-		}
-
-
-		[Test]
-		public void ReadInnerXmlWrongInit ()
-		{
-			document.LoadXml ("<root>test of <b>mixed</b> string.</root>");
-			XmlNodeReader nrdr = new XmlNodeReader (document);
-			nrdr.ReadInnerXml ();
-			Assert.AreEqual (ReadState.Initial, nrdr.ReadState, "initial.ReadState");
-			Assert.AreEqual (false, nrdr.EOF, "initial.EOF");
-			Assert.AreEqual (XmlNodeType.None, nrdr.NodeType, "initial.NodeType");
-		}
-
-		[Test]
-		public void ResolveEntity ()
-		{
-			string ent1 = "<!ENTITY ent 'entity string'>";
-			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
-			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
-			string xml = dtd + "<root>&ent;&ent2;</root>";
-			document.LoadXml (xml);
-			Assert.AreEqual (xml, document.OuterXml);
-			XmlNodeReader nr = new XmlNodeReader (document);
-			nr.Read ();	// DTD
-			nr.Read ();	// root
-			nr.Read ();	// &ent;
-			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
-			Assert.AreEqual (1, nr.Depth, "depth#1");
-			nr.ResolveEntity ();
-			// It is still entity reference.
-			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
-			nr.Read ();
-			Assert.AreEqual (XmlNodeType.Text, nr.NodeType);
-			Assert.AreEqual (2, nr.Depth, "depth#2");
-			Assert.AreEqual ("entity string", nr.Value);
-			nr.Read ();
-			Assert.AreEqual (XmlNodeType.EndEntity, nr.NodeType);
-			Assert.AreEqual (1, nr.Depth, "depth#3");
-			Assert.AreEqual ("", nr.Value);
-
-			nr.Read ();	// &ent2;
-			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
-			Assert.AreEqual (1, nr.Depth, "depth#4");
-			nr.ResolveEntity ();
-			Assert.AreEqual (xml, document.OuterXml);
-			// It is still entity reference.
-			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
-			// It now became element node.
-			nr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, nr.NodeType);
-			Assert.AreEqual (2, nr.Depth, "depth#5");
-
-			Assert.AreEqual (xml, document.OuterXml);
-		}
-
-		[Test]
-		[Ignore (".NET 2.0 XmlNodeReader does not allow undeclared entities at all.")]
-		public void ResolveEntity2 ()
-		{
-			document.RemoveAll ();
-			string ent1 = "<!ENTITY ent 'entity string'>";
-			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
-			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
-			string xml = dtd + "<root>&ent3;&ent2;</root>";
-			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
-			xtr.Read ();
-			document.AppendChild (document.ReadNode (xtr));
-			document.AppendChild (document.ReadNode (xtr));
-			xtr.Close ();
-			Assert.AreEqual (xml, document.OuterXml);
-			XmlNodeReader nr = new XmlNodeReader (document);
-			nr.Read ();	// DTD
-			nr.Read ();	// root
-			nr.Read ();	// &ent3;
-			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
-			// ent3 does not exist in this dtd.
-			nr.ResolveEntity ();
-			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
-			nr.Read ();
-#if false
-			// Hmm... MS.NET returned as it is a Text node.
-			Assert.AreEqual (XmlNodeType.Text, nr.NodeType);
-			Assert.AreEqual (String.Empty, nr.Value);
-			nr.Read ();
-			// Really!?
-			Assert.AreEqual (XmlNodeType.EndEntity, nr.NodeType);
-			Assert.AreEqual (String.Empty, nr.Value);
-#endif
-		}
-
-		[Test]
-		[Ignore (".NET 2.0 XmlNodeReader does not allow undeclared entities at all.")]
-		public void ResolveEntityWithoutDTD ()
-		{
-			document.RemoveAll ();
-			string xml = "<root>&ent;&ent2;</root>";
-			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
-			xtr.Read ();
-			document.AppendChild (document.ReadNode (xtr));
-			xtr.Close ();
-			Assert.AreEqual (xml, document.OuterXml);
-			XmlNodeReader nr = new XmlNodeReader (document);
-			nr.Read ();	// root
-			nr.Read ();	// &ent;
-			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
-			// ent does not exist in this dtd.
-			nr.ResolveEntity ();
-		}
-
-		[Test] // bug #76260
-		public void FromEmptyNonDocumentElement ()
-		{
-			document.LoadXml ("<root><child/></root>");
-			XmlNodeReader nr = new XmlNodeReader (
-				document.DocumentElement.FirstChild);
-			nr.Read ();
-			Assert.AreEqual (true, nr.IsEmptyElement, "#0");
-			Assert.IsTrue (!nr.Read (), "#1");
-
-			document.LoadXml ("<root><child></child></root>");
-			nr = new XmlNodeReader (
-				document.DocumentElement.FirstChild);
-			nr.Read ();
-			Assert.IsTrue (nr.Read (), "#2");
-			Assert.AreEqual (false, nr.IsEmptyElement, "#2.2");
-			Assert.IsTrue (!nr.Read (), "#3");
-		}
-		
-		[Test] // bug #550379
-		public void MoveToNextAttributeFromValue ()
-		{
-			document.LoadXml ("<ul test='xxx'></ul>");
-			XmlNodeReader nr = new XmlNodeReader (document);
-			nr.Read ();
-			//nr.Read (); // why twice?
-			Assert.IsTrue (nr.MoveToFirstAttribute (), "#1");
-			Assert.IsTrue (nr.ReadAttributeValue (), "#2");
-			Assert.IsFalse (nr.MoveToNextAttribute (), "#3");
-		}
-	}
-
-}
+//
+// System.Xml.XmlNodeReaderTests
+//
+// Authors:
+//   Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//   Martin Willemoes Hansen <mwh@sysrq.dk>
+//
+// (C) 2003 Atsushi Enomoto
+// (C) 2003 Martin Willemoes Hansen
+//
+//
+
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlNodeReaderTests
+	{
+		[SetUp]
+		public void GetReady ()
+		{
+			document.LoadXml ("<root attr1='value1'><child /></root>");
+		}
+
+		XmlDocument document = new XmlDocument ();
+
+		[Test]
+		public void InvalidConstruction ()
+		{
+			XmlNodeReader nrdr;
+			try {
+				nrdr = new XmlNodeReader (null);
+				Assert.Fail ("ArgumentNullException is expected.");
+			} catch (ArgumentNullException) {
+			}
+			nrdr = new XmlNodeReader (new XmlDocument ());
+			nrdr.Read ();
+			Assert.AreEqual (ReadState.Error, nrdr.ReadState, "newDoc.ReadState");
+			Assert.AreEqual (true, nrdr.EOF, "newDoc.EOF");
+			Assert.AreEqual (XmlNodeType.None, nrdr.NodeType, "newDoc.NodeType");
+			nrdr = new XmlNodeReader (document.CreateDocumentFragment ());
+			nrdr.Read ();
+			Assert.AreEqual (ReadState.Error, nrdr.ReadState, "Fragment.ReadState");
+			Assert.AreEqual (true, nrdr.EOF, "Fragment.EOF");
+			Assert.AreEqual (XmlNodeType.None, nrdr.NodeType, "Fragment.NodeType");
+		}
+
+		[Test]
+		public void ReadFromElement ()
+		{
+			XmlNodeReader nrdr = new XmlNodeReader (document.DocumentElement);
+			nrdr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, nrdr.NodeType, "<root>.NodeType");
+			Assert.AreEqual ("root", nrdr.Name, "<root>.Name");
+			Assert.AreEqual (ReadState.Interactive, nrdr.ReadState, "<root>.ReadState");
+			Assert.AreEqual (0, nrdr.Depth, "<root>.Depth");
+		}
+
+
+		[Test]
+		public void ReadInnerXmlWrongInit ()
+		{
+			document.LoadXml ("<root>test of <b>mixed</b> string.</root>");
+			XmlNodeReader nrdr = new XmlNodeReader (document);
+			nrdr.ReadInnerXml ();
+			Assert.AreEqual (ReadState.Initial, nrdr.ReadState, "initial.ReadState");
+			Assert.AreEqual (false, nrdr.EOF, "initial.EOF");
+			Assert.AreEqual (XmlNodeType.None, nrdr.NodeType, "initial.NodeType");
+		}
+
+		[Test]
+		public void ResolveEntity ()
+		{
+			string ent1 = "<!ENTITY ent 'entity string'>";
+			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
+			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
+			string xml = dtd + "<root>&ent;&ent2;</root>";
+			document.LoadXml (xml);
+			Assert.AreEqual (xml, document.OuterXml);
+			XmlNodeReader nr = new XmlNodeReader (document);
+			nr.Read ();	// DTD
+			nr.Read ();	// root
+			nr.Read ();	// &ent;
+			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
+			Assert.AreEqual (1, nr.Depth, "depth#1");
+			nr.ResolveEntity ();
+			// It is still entity reference.
+			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
+			nr.Read ();
+			Assert.AreEqual (XmlNodeType.Text, nr.NodeType);
+			Assert.AreEqual (2, nr.Depth, "depth#2");
+			Assert.AreEqual ("entity string", nr.Value);
+			nr.Read ();
+			Assert.AreEqual (XmlNodeType.EndEntity, nr.NodeType);
+			Assert.AreEqual (1, nr.Depth, "depth#3");
+			Assert.AreEqual ("", nr.Value);
+
+			nr.Read ();	// &ent2;
+			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
+			Assert.AreEqual (1, nr.Depth, "depth#4");
+			nr.ResolveEntity ();
+			Assert.AreEqual (xml, document.OuterXml);
+			// It is still entity reference.
+			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
+			// It now became element node.
+			nr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, nr.NodeType);
+			Assert.AreEqual (2, nr.Depth, "depth#5");
+
+			Assert.AreEqual (xml, document.OuterXml);
+		}
+
+		[Test]
+		[Ignore (".NET 2.0 XmlNodeReader does not allow undeclared entities at all.")]
+		public void ResolveEntity2 ()
+		{
+			document.RemoveAll ();
+			string ent1 = "<!ENTITY ent 'entity string'>";
+			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
+			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
+			string xml = dtd + "<root>&ent3;&ent2;</root>";
+			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+			xtr.Read ();
+			document.AppendChild (document.ReadNode (xtr));
+			document.AppendChild (document.ReadNode (xtr));
+			xtr.Close ();
+			Assert.AreEqual (xml, document.OuterXml);
+			XmlNodeReader nr = new XmlNodeReader (document);
+			nr.Read ();	// DTD
+			nr.Read ();	// root
+			nr.Read ();	// &ent3;
+			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
+			// ent3 does not exist in this dtd.
+			nr.ResolveEntity ();
+			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
+			nr.Read ();
+#if false
+			// Hmm... MS.NET returned as it is a Text node.
+			Assert.AreEqual (XmlNodeType.Text, nr.NodeType);
+			Assert.AreEqual (String.Empty, nr.Value);
+			nr.Read ();
+			// Really!?
+			Assert.AreEqual (XmlNodeType.EndEntity, nr.NodeType);
+			Assert.AreEqual (String.Empty, nr.Value);
+#endif
+		}
+
+		[Test]
+		[Ignore (".NET 2.0 XmlNodeReader does not allow undeclared entities at all.")]
+		public void ResolveEntityWithoutDTD ()
+		{
+			document.RemoveAll ();
+			string xml = "<root>&ent;&ent2;</root>";
+			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+			xtr.Read ();
+			document.AppendChild (document.ReadNode (xtr));
+			xtr.Close ();
+			Assert.AreEqual (xml, document.OuterXml);
+			XmlNodeReader nr = new XmlNodeReader (document);
+			nr.Read ();	// root
+			nr.Read ();	// &ent;
+			Assert.AreEqual (XmlNodeType.EntityReference, nr.NodeType);
+			// ent does not exist in this dtd.
+			nr.ResolveEntity ();
+		}
+
+		[Test] // bug #76260
+		public void FromEmptyNonDocumentElement ()
+		{
+			document.LoadXml ("<root><child/></root>");
+			XmlNodeReader nr = new XmlNodeReader (
+				document.DocumentElement.FirstChild);
+			nr.Read ();
+			Assert.AreEqual (true, nr.IsEmptyElement, "#0");
+			Assert.IsTrue (!nr.Read (), "#1");
+
+			document.LoadXml ("<root><child></child></root>");
+			nr = new XmlNodeReader (
+				document.DocumentElement.FirstChild);
+			nr.Read ();
+			Assert.IsTrue (nr.Read (), "#2");
+			Assert.AreEqual (false, nr.IsEmptyElement, "#2.2");
+			Assert.IsTrue (!nr.Read (), "#3");
+		}
+		
+		[Test] // bug #550379
+		public void MoveToNextAttributeFromValue ()
+		{
+			document.LoadXml ("<ul test='xxx'></ul>");
+			XmlNodeReader nr = new XmlNodeReader (document);
+			nr.Read ();
+			//nr.Read (); // why twice?
+			Assert.IsTrue (nr.MoveToFirstAttribute (), "#1");
+			Assert.IsTrue (nr.ReadAttributeValue (), "#2");
+			Assert.IsFalse (nr.MoveToNextAttribute (), "#3");
+		}
+	}
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XmlReaderCommonTests.cs
@@ -1,2352 +1,2352 @@
-//
-// System.Xml.XmlReaderCommonTests
-//
-// Authors:
-//   Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
-//
-// (C) 2003 Atsushi Enomoto
-//  Note: Most of testcases are moved from XmlTextReaderTests.cs and
-//  XmlNodeReaderTests.cs.
-//
-
-using System;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.XPath;
-#if NET_4_5
-using System.Threading;
-using System.Threading.Tasks;
-#endif
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlReaderTests
-	{
-		[SetUp]
-		public void GetReady ()
-		{
-			document = new XmlDocument ();
-			document.LoadXml (xml1);
-		}
-
-		XmlDocument document;
-		const string xml1 = "<root attr1='value1'><child /></root>";
-		const string xml2 = "<root><foo/><bar>test.</bar></root>";
-		const string xml3 = "<root>  test of <b>mixed</b> string.<![CDATA[ cdata string.]]></root>";
-		const string xml4 = "<root>test of <b>mixed</b> string.</root>";
-		XmlTextReader xtr;
-		XmlNodeReader xnr;
-
-		// copy from XmlTextReaderTests
-		private void AssertStartDocument (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.ReadState == ReadState.Initial);
-			Assert.IsTrue (xmlReader.NodeType == XmlNodeType.None);
-			Assert.IsTrue (xmlReader.Depth == 0);
-			Assert.IsTrue (!xmlReader.EOF);
-		}
-
-		private void AssertNode (
-			XmlReader xmlReader,
-			XmlNodeType nodeType,
-			int depth,
-			bool isEmptyElement,
-			string name,
-			string prefix,
-			string localName,
-			string namespaceURI,
-			string value,
-			int attributeCount)
-		{
-			AssertNode ("", xmlReader, nodeType, depth,
-				isEmptyElement, name, prefix, localName,
-				namespaceURI, value, attributeCount);
-		}
-
-		private void AssertNode (
-			string label,
-			XmlReader xmlReader,
-			XmlNodeType nodeType,
-			int depth,
-			bool isEmptyElement,
-			string name,
-			string prefix,
-			string localName,
-			string namespaceURI,
-			string value,
-			int attributeCount)
-		{
-			Assert.IsTrue (xmlReader.Read (), label + " Read() return value");
-			Assert.IsTrue (xmlReader.ReadState == ReadState.Interactive, label + " ReadState");
-			Assert.IsTrue (!xmlReader.EOF, label + " !EOF");
-			AssertNodeValues (label, xmlReader, nodeType, depth,
-				isEmptyElement, name, prefix, localName,
-				namespaceURI, value, value != String.Empty,
-				attributeCount, attributeCount > 0);
-		}
-
-		private void AssertNodeValues (
-			string label,
-			XmlReader xmlReader,
-			XmlNodeType nodeType,
-			int depth,
-			bool isEmptyElement,
-			string name,
-			string prefix,
-			string localName,
-			string namespaceURI,
-			string value,
-			int attributeCount)
-		{
-			AssertNodeValues (label, xmlReader, nodeType, depth,
-				isEmptyElement, name, prefix, localName,
-				namespaceURI, value, value != String.Empty,
-				attributeCount, attributeCount > 0);
-		}
-
-		private void AssertNodeValues (
-			string label,
-			XmlReader xmlReader,
-			XmlNodeType nodeType,
-			int depth,
-			bool isEmptyElement,
-			string name,
-			string prefix,
-			string localName,
-			string namespaceURI,
-			string value,
-			bool hasValue,
-			int attributeCount,
-			bool hasAttributes)
-		{
-			label = String.Concat (label, "(", xmlReader.GetType ().Name, ")");
-			Assert.AreEqual (nodeType, xmlReader.NodeType, label + ": NodeType");
-			Assert.AreEqual (isEmptyElement, xmlReader.IsEmptyElement, label + ": IsEmptyElement");
-
-			Assert.AreEqual (name, xmlReader.Name, label + ": name");
-
-			Assert.AreEqual (prefix, xmlReader.Prefix, label + ": prefix");
-
-			Assert.AreEqual (localName, xmlReader.LocalName, label + ": localName");
-
-			Assert.AreEqual (namespaceURI, xmlReader.NamespaceURI, label + ": namespaceURI");
-
-			Assert.AreEqual (depth, xmlReader.Depth, label + ": Depth");
-
-			Assert.AreEqual (hasValue, xmlReader.HasValue, label + ": hasValue");
-
-			Assert.AreEqual (value, xmlReader.Value, label + ": Value");
-
-			Assert.AreEqual (hasAttributes, xmlReader.HasAttributes, label + ": hasAttributes");
-
-			Assert.AreEqual (attributeCount, xmlReader.AttributeCount, label + ": attributeCount");
-		}
-
-		private void AssertAttribute (
-			XmlReader xmlReader,
-			string name,
-			string prefix,
-			string localName,
-			string namespaceURI,
-			string value)
-		{
-			Assert.AreEqual (value, xmlReader [name], "value");
-
-			Assert.IsTrue (xmlReader.GetAttribute (name) == value);
-
-			if (namespaceURI != String.Empty) {
-				Assert.IsTrue (xmlReader[localName, namespaceURI] == value);
-				Assert.IsTrue (xmlReader.GetAttribute (localName, namespaceURI) == value);
-			}
-		}
-
-		private void AssertEndDocument (XmlReader xmlReader)
-		{
-			Assert.IsTrue (!xmlReader.Read (), "could read");
-			Assert.AreEqual (XmlNodeType.None, xmlReader.NodeType, "NodeType is not XmlNodeType.None");
-			Assert.AreEqual (0, xmlReader.Depth, "Depth is not 0");
-			Assert.AreEqual (ReadState.EndOfFile, xmlReader.ReadState, "ReadState is not ReadState.EndOfFile");
-			Assert.IsTrue (xmlReader.EOF, "not EOF");
-
-			xmlReader.Close ();
-			Assert.AreEqual (ReadState.Closed, xmlReader.ReadState, "ReadState is not ReadState.Cosed");
-		}
-
-		private delegate void TestMethod (XmlReader reader);
-
-		private void RunTest (string xml, TestMethod method)
-		{
-			xtr = new XmlTextReader (new StringReader (xml));
-			method (xtr);
-
-			// DTD validation
-			xtr = new XmlTextReader (new StringReader (xml));
-			XmlValidatingReader xvr = new XmlValidatingReader (xtr);
-			xvr.ValidationType = ValidationType.DTD;
-			xvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			method (xvr);
-
-			// XSD validation
-			xtr = new XmlTextReader (new StringReader (xml));
-			xvr = new XmlValidatingReader (xtr);
-			xvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			method (xvr);
-
-			document.XmlResolver = null;
-			document.LoadXml (xml);
-			xnr = new XmlNodeReader (document);
-			method (xnr);
-/*
-			// XPathNavigatorReader tests
-			System.Xml.XPath.XPathDocument doc = new System.Xml.XPath.XPathDocument (new StringReader (xml));
-			XmlReader xpr = doc.CreateNavigator ().ReadSubtree ();
-			method (xpr);
-*/
-		}
-
-
-
-
-
-		[Test]
-		public void InitialState ()
-		{
-			RunTest (xml1, new TestMethod (InitialState));
-		}
-
-		private void InitialState (XmlReader reader)
-		{
-			Assert.AreEqual (0, reader.Depth, "Depth");
-			Assert.AreEqual (false, reader.EOF, "EOF");
-			Assert.AreEqual (false, reader.HasValue, "HasValue");
-			Assert.AreEqual (false, reader.IsEmptyElement, "IsEmptyElement");
-			Assert.AreEqual (String.Empty, reader.LocalName, "LocalName");
-			Assert.AreEqual (XmlNodeType.None, reader.NodeType, "NodeType");
-			Assert.AreEqual (ReadState.Initial, reader.ReadState, "ReadState");
-		}
-
-		[Test]
-		public void Read ()
-		{
-			RunTest (xml1, new TestMethod (Read));
-		}
-
-		public void Read (XmlReader reader)
-		{
-			reader.Read ();
-			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "<root>.NodeType");
-			Assert.AreEqual ("root", reader.Name, "<root>.Name");
-			Assert.AreEqual (ReadState.Interactive, reader.ReadState, "<root>.ReadState");
-			Assert.AreEqual (0, reader.Depth, "<root>.Depth");
-
-			// move to 'child'
-			reader.Read ();
-			Assert.AreEqual (1, reader.Depth, "<child/>.Depth");
-			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "<child/>.NodeType");
-			Assert.AreEqual ("child", reader.Name, "<child/>.Name");
-
-			reader.Read ();
-			Assert.AreEqual (0, reader.Depth, "</root>.Depth");
-			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "</root>.NodeType");
-			Assert.AreEqual ("root", reader.Name, "</root>.Name");
-
-			reader.Read ();
-			Assert.AreEqual (true, reader.EOF, "end.EOF");
-			Assert.AreEqual (XmlNodeType.None, reader.NodeType, "end.NodeType");
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		public void ReadAttributeValue ()
-		{
-			RunTest ("<root attr=''/>", new TestMethod (ReadAttributeValue));
-		}
-
-		public void ReadAttributeValue (XmlReader reader)
-		{
-			reader.Read ();	// root
-			Assert.IsTrue (reader.MoveToFirstAttribute ());
-			// It looks like that MS.NET shows AttributeCount and
-			// HasAttributes as the same as element node!
-			this.AssertNodeValues ("#1",
-				reader, XmlNodeType.Attribute,
-				1, false, "attr", "", "attr", "", "", true, 1, true);
-			Assert.IsTrue (reader.ReadAttributeValue ());
-			// MS.NET XmlTextReader fails. Its Prefix returns 
-			// null instead of "". It is fixed in MS.NET 2.0.
-			this.AssertNodeValues ("#2",
-				reader, XmlNodeType.Text,
-				2, false, "", "", "", "", "", true, 1, true);
-			Assert.IsTrue (reader.MoveToElement ());
-			this.AssertNodeValues ("#3",
-				reader, XmlNodeType.Element,
-				0, true, "root", "", "root", "", "", false, 1, true);
-		}
-
-		[Test]
-		public void ReadEmptyElement ()
-		{
-			RunTest (xml2, new TestMethod (ReadEmptyElement));
-		}
-
-		public void ReadEmptyElement (XmlReader reader)
-		{
-			reader.Read ();	// root
-			Assert.AreEqual (false, reader.IsEmptyElement);
-			reader.Read ();	// foo
-			Assert.AreEqual ("foo", reader.Name);
-			Assert.AreEqual (true, reader.IsEmptyElement);
-			reader.Read ();	// bar
-			Assert.AreEqual ("bar", reader.Name);
-			Assert.AreEqual (false, reader.IsEmptyElement);
-		}
-
-		[Test]
-		public void ReadStringFromElement ()
-		{
-			RunTest (xml3, new TestMethod (ReadStringFromElement));
-		}
-
-		public void ReadStringFromElement (XmlReader reader)
-		{
-			// Note: ReadString() test works only when the reader is
-			// positioned at the container element.
-			// In case the reader is positioned at the first 
-			// character node, XmlTextReader and XmlNodeReader works
-			// different!!
-
-			reader.Read ();
-			string s = reader.ReadString ();
-			Assert.AreEqual ("  test of ", s, "readString.1.ret_val");
-			Assert.AreEqual ("b", reader.Name, "readString.1.Name");
-			s = reader.ReadString ();
-			Assert.AreEqual ("mixed", s, "readString.2.ret_val");
-			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "readString.2.NodeType");
-			s = reader.ReadString ();	// never proceeds.
-			Assert.AreEqual (String.Empty, s, "readString.3.ret_val");
-			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "readString.3.NodeType");
-			reader.Read ();
-			Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "readString.4.NodeType");
-			Assert.AreEqual (" string.", reader.Value, "readString.4.Value");
-			s = reader.ReadString ();	// reads the same Text node.
-			Assert.AreEqual (" string. cdata string.", s, "readString.5.ret_val");
-			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "readString.5.NodeType");
-		}
-
-		[Test]
-		public void ReadInnerXml ()
-		{
-			const string xml = "<root><foo>test of <b>mixed</b> string.</foo><bar /></root>";
-			RunTest (xml, new TestMethod (ReadInnerXml));
-		}
-
-		public void ReadInnerXml (XmlReader reader)
-		{
-			reader.Read ();
-			reader.Read ();
-			Assert.AreEqual (ReadState.Interactive, reader.ReadState, "initial.ReadState");
-			Assert.AreEqual (false, reader.EOF, "initial.EOF");
-			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "initial.NodeType");
-			string s = reader.ReadInnerXml ();
-			Assert.AreEqual ("test of <b>mixed</b> string.", s, "read_all");
-			Assert.AreEqual ("bar", reader.Name, "after.Name");
-			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "after.NodeType");
-		}
-
-
-		[Test]
-		public void EmptyElement ()
-		{
-			RunTest ("<foo/>", new TestMethod (EmptyElement));
-		}
-		
-		public void EmptyElement (XmlReader xmlReader)
-		{
-
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, // depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void NestedEmptyTag ()
-		{
-			string xml = "<foo><bar/></foo>";
-			RunTest (xml, new TestMethod (NestedEmptyTag));
-		}
-
-		public void NestedEmptyTag (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				"#1",
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				"#2",
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				1, //depth
-				true, // isEmptyElement
-				"bar", // name
-				String.Empty, // prefix
-				"bar", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				"#3",
-				xmlReader, // xmlReader
-				XmlNodeType.EndElement, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void NestedText ()
-		{
-			string xml = "<foo>bar</foo>";
-			RunTest (xml, new TestMethod (NestedText));
-		}
-
-		public void NestedText (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Text, // nodeType
-				1, //depth
-				false, // isEmptyElement
-				String.Empty, // name
-				String.Empty, // prefix
-				String.Empty, // localName
-				String.Empty, // namespaceURI
-				"bar", // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.EndElement, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void EmptyElementWithAttributes ()
-		{
-			string xml = @"<foo bar=""baz"" quux='quuux' x:foo='x-foo' xmlns:x = 'urn:xfoo' />";
-			RunTest (xml, new TestMethod (EmptyElementWithAttributes ));
-		}
-
-		public void EmptyElementWithAttributes (XmlReader xmlReader)
-		{
-
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				4 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"bar", // name
-				String.Empty, // prefix
-				"bar", // localName
-				String.Empty, // namespaceURI
-				"baz" // value
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"quux", // name
-				String.Empty, // prefix
-				"quux", // localName
-				String.Empty, // namespaceURI
-				"quuux" // value
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"notexist", // name
-				String.Empty, // prefix
-				"notexist", // localName
-				String.Empty, // namespaceURI
-				null // value
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"x:foo", // name
-				"x", // prefix
-				"foo", // localName
-				"urn:xfoo", // namespaceURI
-				"x-foo" // value
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"x:bar", // name
-				"x", // prefix
-				"bar", // localName
-				"urn:xfoo", // namespaceURI
-				null // value
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void ProcessingInstructionBeforeDocumentElement ()
-		{
-			string xml = "<?foo bar?><baz/>";
-			RunTest (xml, new TestMethod (ProcessingInstructionBeforeDocumentElement));
-		}
-
-		public void ProcessingInstructionBeforeDocumentElement (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.ProcessingInstruction, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				"bar", // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				true, // isEmptyElement
-				"baz", // name
-				String.Empty, // prefix
-				"baz", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void CommentBeforeDocumentElement ()
-		{
-			string xml = "<!--foo--><bar/>";
-			RunTest (xml, new TestMethod (CommentBeforeDocumentElement));
-		}
-
-		public void CommentBeforeDocumentElement (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Comment, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				String.Empty, // name
-				String.Empty, // prefix
-				String.Empty, // localName
-				String.Empty, // namespaceURI
-				"foo", // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				true, // isEmptyElement
-				"bar", // name
-				String.Empty, // prefix
-				"bar", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void PredefinedEntities ()
-		{
-			string xml = "<foo>&lt;&gt;&amp;&apos;&quot;</foo>";
-			RunTest (xml, new TestMethod (PredefinedEntities));
-		}
-
-		public void PredefinedEntities (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Text, // nodeType
-				1, //depth
-				false, // isEmptyElement
-				String.Empty, // name
-				String.Empty, // prefix
-				String.Empty, // localName
-				String.Empty, // namespaceURI
-				"<>&'\"", // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.EndElement, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void CharacterReferences ()
-		{
-			string xml = "<foo>&#70;&#x4F;&#x4f;</foo>";
-			RunTest (xml, new TestMethod (CharacterReferences));
-		}
-
-		public void CharacterReferences (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Text, // nodeType
-				1, //depth
-				false, // isEmptyElement
-				String.Empty, // name
-				String.Empty, // prefix
-				String.Empty, // localName
-				String.Empty, // namespaceURI
-				"FOO", // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.EndElement, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void PredefinedEntitiesInAttribute ()
-		{
-			string xml = "<foo bar='&lt;&gt;&amp;&apos;&quot;'/>";
-			RunTest (xml, new TestMethod (PredefinedEntitiesInAttribute ));
-		}
-
-		public void PredefinedEntitiesInAttribute (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				1 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"bar", // name
-				String.Empty, // prefix
-				"bar", // localName
-				String.Empty, // namespaceURI
-				"<>&'\"" // value
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void CharacterReferencesInAttribute ()
-		{
-			string xml = "<foo bar='&#70;&#x4F;&#x4f;'/>";
-			RunTest (xml, new TestMethod (CharacterReferencesInAttribute));
-		}
-
-		public void CharacterReferencesInAttribute (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				1 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"bar", // name
-				String.Empty, // prefix
-				"bar", // localName
-				String.Empty, // namespaceURI
-				"FOO" // value
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void CDATA ()
-		{
-			string xml = "<foo><![CDATA[<>&]]></foo>";
-			RunTest (xml, new TestMethod (CDATA));
-		}
-
-		public void CDATA (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.CDATA, // nodeType
-				1, //depth
-				false, // isEmptyElement
-				String.Empty, // name
-				String.Empty, // prefix
-				String.Empty, // localName
-				String.Empty, // namespaceURI
-				"<>&", // value
-				0 // attributeCount
-			);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.EndElement, // nodeType
-				0, //depth
-				false, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void EmptyElementInDefaultNamespace ()
-		{
-			string xml = @"<foo xmlns='http://foo/' />";
-			RunTest (xml, new TestMethod (EmptyElementInDefaultNamespace));
-		}
-
-		public void EmptyElementInDefaultNamespace (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, // depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				"http://foo/", // namespaceURI
-				String.Empty, // value
-				1 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"xmlns", // name
-				String.Empty, // prefix
-				"xmlns", // localName
-				"http://www.w3.org/2000/xmlns/", // namespaceURI
-				"http://foo/" // value
-			);
-
-			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace (String.Empty));
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void ChildElementInNamespace ()
-		{
-			string xml = @"<foo:bar xmlns:foo='http://foo/'><baz:quux xmlns:baz='http://baz/' /></foo:bar>";
-			RunTest (xml, new TestMethod (ChildElementInNamespace));
-		}
-
-		public void ChildElementInNamespace (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, // depth
-				false, // isEmptyElement
-				"foo:bar", // name
-				"foo", // prefix
-				"bar", // localName
-				"http://foo/", // namespaceURI
-				String.Empty, // value
-				1 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"xmlns:foo", // name
-				"xmlns", // prefix
-				"foo", // localName
-				"http://www.w3.org/2000/xmlns/", // namespaceURI
-				"http://foo/" // value
-			);
-
-			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				1, // depth
-				true, // isEmptyElement
-				"baz:quux", // name
-				"baz", // prefix
-				"quux", // localName
-				"http://baz/", // namespaceURI
-				String.Empty, // value
-				1 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"xmlns:baz", // name
-				"xmlns", // prefix
-				"baz", // localName
-				"http://www.w3.org/2000/xmlns/", // namespaceURI
-				"http://baz/" // value
-			);
-
-			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
-			Assert.AreEqual ("http://baz/", xmlReader.LookupNamespace ("baz"));
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.EndElement, // nodeType
-				0, // depth
-				false, // isEmptyElement
-				"foo:bar", // name
-				"foo", // prefix
-				"bar", // localName
-				"http://foo/", // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
-			Assert.IsNull (xmlReader.LookupNamespace ("baz"));
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void ChildElementInDefaultNamespace ()
-		{
-			string xml = @"<foo:bar xmlns:foo='http://foo/'><baz xmlns='http://baz/' /></foo:bar>";
-			RunTest (xml, new TestMethod (ChildElementInDefaultNamespace));
-		}
-
-		public void ChildElementInDefaultNamespace (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, // depth
-				false, // isEmptyElement
-				"foo:bar", // name
-				"foo", // prefix
-				"bar", // localName
-				"http://foo/", // namespaceURI
-				String.Empty, // value
-				1 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"xmlns:foo", // name
-				"xmlns", // prefix
-				"foo", // localName
-				"http://www.w3.org/2000/xmlns/", // namespaceURI
-				"http://foo/" // value
-			);
-
-			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				1, // depth
-				true, // isEmptyElement
-				"baz", // name
-				String.Empty, // prefix
-				"baz", // localName
-				"http://baz/", // namespaceURI
-				String.Empty, // value
-				1 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"xmlns", // name
-				String.Empty, // prefix
-				"xmlns", // localName
-				"http://www.w3.org/2000/xmlns/", // namespaceURI
-				"http://baz/" // value
-			);
-
-			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
-			Assert.AreEqual ("http://baz/", xmlReader.LookupNamespace (String.Empty));
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.EndElement, // nodeType
-				0, // depth
-				false, // isEmptyElement
-				"foo:bar", // name
-				"foo", // prefix
-				"bar", // localName
-				"http://foo/", // namespaceURI
-				String.Empty, // value
-				0 // attributeCount
-			);
-
-			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void AttributeInNamespace ()
-		{
-			string xml = @"<foo bar:baz='quux' xmlns:bar='http://bar/' />";
-			RunTest (xml, new TestMethod (AttributeInNamespace));
-		}
-
-		public void AttributeInNamespace (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, // depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				2 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"bar:baz", // name
-				"bar", // prefix
-				"baz", // localName
-				"http://bar/", // namespaceURI
-				"quux" // value
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"xmlns:bar", // name
-				"xmlns", // prefix
-				"bar", // localName
-				"http://www.w3.org/2000/xmlns/", // namespaceURI
-				"http://bar/" // value
-			);
-
-			Assert.AreEqual ("http://bar/", xmlReader.LookupNamespace ("bar"));
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-		public void MoveToElementFromAttribute ()
-		{
-			string xml = @"<foo bar=""baz"" />";
-			RunTest (xml, new TestMethod (MoveToElementFromAttribute));
-		}
-
-		public void MoveToElementFromAttribute (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.Read ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-			Assert.IsTrue (xmlReader.MoveToFirstAttribute ());
-			Assert.AreEqual (XmlNodeType.Attribute, xmlReader.NodeType);
-			Assert.IsTrue (xmlReader.MoveToElement ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-		}
-
-		[Test]
-		public void MoveToElementFromElement ()
-		{
-			string xml = @"<foo bar=""baz"" />";
-			RunTest (xml, new TestMethod (MoveToElementFromElement));
-		}
-
-		public void MoveToElementFromElement (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.Read ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-			Assert.IsTrue (!xmlReader.MoveToElement ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-		}
-
-		[Test]
-		public void MoveToFirstAttributeWithNoAttributes ()
-		{
-			string xml = @"<foo />";
-			RunTest (xml, new TestMethod (MoveToFirstAttributeWithNoAttributes));
-		}
-
-		public void MoveToFirstAttributeWithNoAttributes (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.Read ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-			Assert.IsTrue (!xmlReader.MoveToFirstAttribute ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-		}
-
-		[Test]
-		public void MoveToNextAttributeWithNoAttributes ()
-		{
-			string xml = @"<foo />";
-			RunTest (xml, new TestMethod (MoveToNextAttributeWithNoAttributes));
-		}
-
-		public void MoveToNextAttributeWithNoAttributes (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.Read ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-		}
-
-		[Test]
-		public void MoveToNextAttribute()
-		{
-			string xml = @"<foo bar=""baz"" quux='quuux'/>";
-			RunTest (xml, new TestMethod (MoveToNextAttribute));
-		}
-
-		public void MoveToNextAttribute (XmlReader xmlReader)
-		{
-			AssertStartDocument (xmlReader);
-
-			AssertNode (
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				2 // attributeCount
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"bar", // name
-				String.Empty, // prefix
-				"bar", // localName
-				String.Empty, // namespaceURI
-				"baz" // value
-			);
-
-			AssertAttribute (
-				xmlReader, // xmlReader
-				"quux", // name
-				String.Empty, // prefix
-				"quux", // localName
-				String.Empty, // namespaceURI
-				"quuux" // value
-			);
-
-			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", xmlReader.Name);
-			Assert.AreEqual ("baz", xmlReader.Value);
-
-			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
-			Assert.AreEqual ("quux", xmlReader.Name);
-			Assert.AreEqual ("quuux", xmlReader.Value);
-
-			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
-
-			Assert.IsTrue (xmlReader.MoveToElement ());
-
-			AssertNodeValues (
-				"#1",
-				xmlReader, // xmlReader
-				XmlNodeType.Element, // nodeType
-				0, //depth
-				true, // isEmptyElement
-				"foo", // name
-				String.Empty, // prefix
-				"foo", // localName
-				String.Empty, // namespaceURI
-				String.Empty, // value
-				2 // attributeCount
-			);
-
-			AssertEndDocument (xmlReader);
-		}
-
-		[Test]
-//		[Category ("NotDotNet")] // MS XmlNodeReader never moves to xml declaration.
-		[Ignore ("Too inconsistent reference implementations to determine which is correct behavior.")]
-		public void MoveToXmlDeclAttributes ()
-		{
-			string xml = "<?xml version=\"1.0\" standalone=\"yes\"?><root/>";
-			RunTest (xml, new TestMethod (MoveToXmlDeclAttributes));
-		}
-
-		public void MoveToXmlDeclAttributes (XmlReader xmlReader)
-		{
-			xmlReader.Read ();
-			this.AssertNodeValues ("#1", xmlReader, 
-				XmlNodeType.XmlDeclaration,
-				0,
-				false,
-				"xml",
-				String.Empty,
-				"xml",
-				String.Empty,
-				"version=\"1.0\" standalone=\"yes\"",
-				2);
-			Assert.IsTrue (xmlReader.MoveToFirstAttribute (), "MoveToFirstAttribute");
-			this.AssertNodeValues ("#2", xmlReader, 
-				XmlNodeType.Attribute,
-				0, // FIXME: might be 1
-				false,
-				"version",
-				String.Empty,
-				"version",
-				String.Empty,
-				"1.0",
-				2);
-			xmlReader.ReadAttributeValue ();
-			this.AssertNodeValues ("#3", xmlReader, 
-				XmlNodeType.Text,
-				1, // FIXME might be 2
-				false,
-				String.Empty,
-				null, // FIXME: should be String.Empty,
-				String.Empty,
-				null, // FIXME: should be String.Empty,
-				"1.0",
-				2);
-			xmlReader.MoveToNextAttribute ();
-			this.AssertNodeValues ("#4", xmlReader, 
-				XmlNodeType.Attribute,
-				0, // FIXME: might be 1
-				false,
-				"standalone",
-				String.Empty,
-				"standalone",
-				String.Empty,
-				"yes",
-				2);
-			xmlReader.ReadAttributeValue ();
-			this.AssertNodeValues ("#5", xmlReader, 
-				XmlNodeType.Text,
-				1, // FIXME: might be 2
-				false,
-				String.Empty,
-				null, // FIXME: should be String.Empty,
-				String.Empty,
-				null, // FIXME: should be String.Empty,
-				"yes",
-				2);
-		}
-
-		[Test]
-		public void AttributeOrder ()
-		{
-			string xml = @"<foo _1='1' _2='2' _3='3' />";
-			RunTest (xml, new TestMethod (AttributeOrder));
-		}
-
-		public void AttributeOrder (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.Read ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-
-			Assert.IsTrue (xmlReader.MoveToFirstAttribute ());
-			Assert.AreEqual ("_1", xmlReader.Name);
-			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
-			Assert.AreEqual ("_2", xmlReader.Name);
-			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
-			Assert.AreEqual ("_3", xmlReader.Name);
-
-			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		[Ignore ("Bug in Microsoft referencesource")]
-		public void IndexerAndAttributes ()
-		{
-			string xml = @"<?xml version='1.0' standalone='no'?><foo _1='1' _2='2' _3='3' />";
-			RunTest (xml, new TestMethod (IndexerAndAttributes));
-		}
-
-		public void IndexerAndAttributes (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.Read ());
-			Assert.AreEqual ("1.0", xmlReader ["version"]);
-			Assert.AreEqual ("1.0", xmlReader.GetAttribute ("version"));
-			// .NET 1.1 BUG. XmlTextReader returns null, while XmlNodeReader returns "".
-			Assert.AreEqual (null, xmlReader ["encoding"]);
-			Assert.AreEqual (null, xmlReader.GetAttribute ("encoding"));
-			Assert.AreEqual ("no", xmlReader ["standalone"]);
-			Assert.AreEqual ("no", xmlReader.GetAttribute ("standalone"));
-			Assert.AreEqual ("1.0", xmlReader [0]);
-			Assert.AreEqual ("1.0", xmlReader.GetAttribute (0));
-			Assert.AreEqual ("no", xmlReader [1]);
-			Assert.AreEqual ("no", xmlReader.GetAttribute (1));
-
-			Assert.IsTrue (xmlReader.Read ());
-			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
-			Assert.AreEqual ("1", xmlReader ["_1"]);
-
-			Assert.IsTrue (xmlReader.MoveToFirstAttribute ());
-			Assert.AreEqual ("_1", xmlReader.Name);
-			Assert.AreEqual ("1", xmlReader ["_1"]);
-			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
-			Assert.AreEqual ("_2", xmlReader.Name);
-			Assert.AreEqual ("1", xmlReader ["_1"]);
-			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
-			Assert.AreEqual ("_3", xmlReader.Name);
-			Assert.AreEqual ("1", xmlReader ["_1"]);
-
-			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
-		}
-
-		[Test]
-		public void ProhibitedMultipleAttributes ()
-		{
-			string xml = @"<foo _1='1' _1='1' />";
-			try {
-				RunTest (xml, new TestMethod (ReadAll));
-			} catch (XmlException) {
-			}
-			xml = @"<foo _1='1' _1='2' />";
-			try {
-				RunTest (xml, new TestMethod (ReadAll));
-			} catch (XmlException) {
-			}
-		}
-
-		public void ReadAll (XmlReader xmlReader)
-		{
-			while (!xmlReader.EOF)
-				xmlReader.Read ();
-		}
-
-		[Test]
-		public void SurrogatePairContent ()
-		{
-			string xml = "<root xmlns='&#x10100;'/>";
-			RunTest (xml, new TestMethod (SurrogatePairContent));
-		}
-
-		public void SurrogatePairContent (XmlReader xmlReader)
-		{
-			xmlReader.Read ();
-			Assert.AreEqual (true, xmlReader.MoveToAttribute ("xmlns"));
-			Assert.AreEqual ("xmlns", xmlReader.Name);
-			Assert.AreEqual (2, xmlReader.Value.Length);
-			Assert.AreEqual (0xD800, (int) xmlReader.Value [0]);
-			Assert.AreEqual (0xDD00, (int) xmlReader.Value [1]);
-		}
-
-		[Test]
-		public void ReadOuterXmlOnEndElement ()
-		{
-			string xml = "<root><foo></foo></root>";
-			RunTest (xml, new TestMethod (ReadOuterXmlOnEndElement));
-		}
-
-		public void ReadOuterXmlOnEndElement (XmlReader xmlReader)
-		{
-			xmlReader.Read ();
-			xmlReader.Read ();
-			xmlReader.Read ();
-			Assert.AreEqual (String.Empty, xmlReader.ReadOuterXml ());
-		}
-
-		[Test]
-		public void ReadInnerXmlOnEndElement ()
-		{
-			string xml = "<root><foo></foo></root>";
-			RunTest (xml, new TestMethod (ReadInnerXmlOnEndElement));
-		}
-
-		private void ReadInnerXmlOnEndElement (XmlReader xmlReader)
-		{
-			xmlReader.Read ();
-			xmlReader.Read ();
-			xmlReader.Read ();
-			Assert.AreEqual (String.Empty, xmlReader.ReadInnerXml ());
-		}
-
-		[Test]
-		public void LookupEmptyPrefix ()
-		{
-			string xml = "<root><foo></foo></root>";
-			RunTest (xml, new TestMethod (LookupEmptyPrefix));
-		}
-
-		void LookupEmptyPrefix (XmlReader xmlReader)
-		{
-			xmlReader.Read ();
-			Assert.IsNull (xmlReader.LookupNamespace (String.Empty));
-		}
-
-		[Test]
-		public void ReadStartElement ()
-		{
-			string xml = "<root>test</root>";
-			RunTest (xml, new TestMethod (ReadStartElement));
-		}
-
-		void ReadStartElement (XmlReader xr)
-		{
-			xr.Read ();
-			xr.ReadStartElement ();
-			// consume Element node.
-			Assert.AreEqual (XmlNodeType.Text, xr.NodeType);
-		}
-
-		[Test]
-		public void LookupNamespaceAtEndElement ()
-		{
-			string xml = "<root xmlns:x='urn:foo'><foo/></root>";
-			RunTest (xml, new TestMethod (LookupNamespaceAtEndElement));
-		}
-
-		void LookupNamespaceAtEndElement (XmlReader reader)
-		{
-			reader.Read ();
-			Assert.AreEqual ("urn:foo", reader.LookupNamespace ("x"), "#1");
-			reader.Read ();
-			Assert.AreEqual ("urn:foo", reader.LookupNamespace ("x"), "#2");
-			reader.Read ();
-			Assert.AreEqual ("urn:foo", reader.LookupNamespace ("x"), "#3");
-		}
-
-		[Test]
-		public void ReadClosedReader ()
-		{
-			string xml = "<fin>aaa</fin>";
-			RunTest (xml, new TestMethod (ReadClosedReader));
-		}
-
-		void ReadClosedReader (XmlReader reader)
-		{
-			reader.Read ();
-			reader.Close();
-			reader.Read (); // silently returns false
-		}
-
-		[Test]
-		public void CreateSimple ()
-		{
-			XmlReaderSettings s = new XmlReaderSettings ();
-			s.ProhibitDtd = false;
-			XmlReader xr = XmlReader.Create ("Test/XmlFiles/nested-dtd-test.xml", s);
-			xr.Read ();
-			Assert.AreEqual (XmlNodeType.DocumentType, xr.NodeType, "#1");
-			xr.Read ();
-			Assert.AreEqual (XmlNodeType.Whitespace, xr.NodeType, "#2");
-			xr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, xr.NodeType, "#3");
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlException))]
-		public void CreateSimpleProhibitDtd ()
-		{
-			XmlReader xr = XmlReader.Create ("Test/XmlFiles/nested-dtd-test.xml");
-			xr.Read ();
-		}
-
-		[Test]
-		// a bit revised version of bug #78706
-		public void CreateFromUrlClose ()
-		{
-			string file = Path.Combine (Path.GetTempPath (), "78706.xml");
-			try {
-				if (!File.Exists (file))
-					File.Create (file).Close ();
-				XmlReaderSettings s = new XmlReaderSettings ();
-				s.CloseInput = false; // explicitly
-				XmlReader r = XmlReader.Create (file, s);
-				r.Close ();
-				XmlTextWriter w = new XmlTextWriter (file, null);
-				w.Close ();
-			} finally {
-				if (File.Exists (file))
-					File.Delete (file);
-			}
-		}
-
-		[Test]
-		// a bit revised version of bug #385638
-		public void CreateFromUrlClose2 ()
-		{
-			string file = Path.Combine (Path.GetTempPath (), "385638.xml");
-			try {
-				if (File.Exists (file))
-					File.Delete (file);
-				using (TextWriter tw = File.CreateText (file))
-					tw.Write ("<xml />");
-				XmlReaderSettings s = new XmlReaderSettings ();
-				s.IgnoreWhitespace = true; // this results in XmlFilterReader, which is the key for this bug.
-				XmlReader r = XmlReader.Create (file, s);
-				r.Close ();
-				XmlTextWriter w = new XmlTextWriter (file, null);
-				w.Close ();
-			} finally {
-				if (File.Exists (file))
-					File.Delete (file);
-			}
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void Create_String_Empty ()
-		{
-			XmlReader.Create (String.Empty);
-		}
-
-		[Test]
-		public void ReadToDescendant ()
-		{
-			string xml = @"<root><foo/><bar/><foo> test text <bar><bar></bar></bar></foo></root>";
-			RunTest (xml, new TestMethod (ReadToDescendant));
-		}
-
-		void ReadToDescendant (XmlReader xmlReader)
-		{
-			// move to first <bar/>
-			Assert.IsTrue (xmlReader.ReadToDescendant ("bar"), "#1");
-			// no children in <bar/>. It is empty.
-			Assert.IsTrue (!xmlReader.ReadToDescendant ("bar"), "#2");
-			Assert.AreEqual ("bar", xmlReader.Name, "#2-2");
-
-			// move to the second <foo>
-			xmlReader.Read ();
-			// move to the second <bar>
-			Assert.IsTrue (xmlReader.ReadToDescendant ("bar"), "#3");
-			// move to <bar> inside <bar>...</bar>
-			Assert.IsTrue (xmlReader.ReadToDescendant ("bar"), "#4");
-			// the next is EndElement of </bar>, so no move.
-			Assert.IsTrue (!xmlReader.ReadToDescendant ("bar"), "#5");
-			Assert.AreEqual (XmlNodeType.EndElement, xmlReader.NodeType, "#5-2");
-		}
-
-		[Test]
-		public void ReadToDescepdant2 ()
-		{
-			string xml = "<root/>";
-			RunTest (xml, new TestMethod (ReadToDescendant2));
-		}
-
-		void ReadToDescendant2 (XmlReader xmlReader)
-		{
-			// make sure that it works when the reader is at Initial state.
-			Assert.IsTrue (xmlReader.ReadToDescendant ("root"));
-		}
-
-		[Test]
-		public void ReadToFollowing ()
-		{
-			string xml = @"<root><foo/><bar/><foo><bar><bar></bar></bar></foo></root>";
-			RunTest (xml, new TestMethod (ReadToFollowing));
-		}
-
-		public void ReadToFollowing (XmlReader xmlReader)
-		{
-			Assert.IsTrue (xmlReader.ReadToFollowing ("bar"), "#1");
-			Assert.IsTrue (xmlReader.ReadToFollowing ("bar"), "#2");
-			Assert.AreEqual (2, xmlReader.Depth, "#2-2");
-			Assert.IsTrue (xmlReader.ReadToFollowing ("bar"), "#3");
-			Assert.AreEqual (3, xmlReader.Depth, "#3-2");
-			Assert.IsTrue (!xmlReader.ReadToFollowing ("bar"), "#4");
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		public void ReadToNextSiblingAtInitialState ()
-		{
-			string xml = @"<root></root>";
-			RunTest (xml, new TestMethod (ReadToNextSiblingAtInitialState ));
-		}
-
-		void ReadToNextSiblingAtInitialState (XmlReader xmlReader)
-		{
-			Assert.IsTrue (!xmlReader.ReadToNextSibling ("bar"), "#1");
-			Assert.IsTrue (!xmlReader.ReadToNextSibling ("root"), "#2");
-		}
-
-		[Test]
-		public void ReadToNextSibling ()
-		{
-			string xml = @"<root><foo/><bar attr='value'/><foo><pooh/><bar></bar><foo></foo><bar/></foo></root>";
-			RunTest (xml, new TestMethod (ReadToNextSibling));
-		}
-
-		void ReadToNextSibling (XmlReader xmlReader)
-		{
-			// It is funky, but without it MS.NET results in an infinite loop.
-			xmlReader.Read (); // root
-
-			xmlReader.Read (); // foo
-			Assert.IsTrue (xmlReader.ReadToNextSibling ("bar"), "#3");
-
-			Assert.AreEqual ("value", xmlReader.GetAttribute ("attr"), "#3-2");
-			xmlReader.Read (); // foo
-			xmlReader.Read (); // pooh
-			Assert.IsTrue (xmlReader.ReadToNextSibling ("bar"), "#4");
-			Assert.IsTrue (!xmlReader.IsEmptyElement, "#4-2");
-			Assert.IsTrue (xmlReader.ReadToNextSibling ("bar"), "#5");
-			Assert.IsTrue (xmlReader.IsEmptyElement, "#5-2");
-			Assert.IsTrue (xmlReader.Read (), "#6"); // /foo
-
-			AssertNodeValues ("#7", xmlReader,
-				XmlNodeType.EndElement,
-				1,		// Depth
-				false,		// IsEmptyElement
-				"foo",		// Name
-				String.Empty,	// Prefix
-				"foo",		// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				0,		// AttributeCount
-				false);		// HasAttributes
-		}
-
-		// bug #81451
-		[Test]
-		public void ReadToNextSibling2 ()
-		{
-			string xml = @"<root><baz><bar><foo attr='value'/></bar><foo attr='value2'><bar><foo /></bar></foo></baz></root>";
-			RunTest (xml, new TestMethod (ReadToNextSibling2));
-		}
-
-		void ReadToNextSibling2 (XmlReader r)
-		{
-			r.MoveToContent (); // ->root
-			r.Read (); // root->baz
-			r.Read (); // baz->bar
-			Assert.IsTrue (r.ReadToNextSibling ("foo"), "#1");
-			Assert.AreEqual ("value2", r.GetAttribute ("attr"), "#2");
-			r.Read (); // foo[@value='value2']->bar
-			Assert.IsTrue (!r.ReadToNextSibling ("foo"), "#3");
-			Assert.AreEqual (XmlNodeType.EndElement, r.NodeType, "#4");
-			Assert.AreEqual ("foo", r.LocalName, "#5");
-		}
-
-		// bug #347768
-		[Test]
-		public void ReadToNextSibling3 ()
-		{
-			string xml = @" <books> <book> <name>Happy C Sharp</name> </book> </books>";
-			XmlReader reader = XmlReader.Create (new StringReader (xml));
-
-			reader.MoveToContent ();
-
-			while (reader.Read ())
-				reader.ReadToNextSibling ("book"); // should not result in an infinite loop
-		}
-
-		// bug #676020
-		[Test]
-		public void ReadToNextSibling4 ()
-		{
-			string xml = @"<SerializableStringDictionary>
-<SerializableStringDictionary>
-<DictionaryEntry Key=""Key1"" Value=""Value1""/>
-<DictionaryEntry Key=""Key2"" Value=""Value2""/>
-<DictionaryEntry Key=""Key3"" Value=""Value3""/>
-</SerializableStringDictionary>
-</SerializableStringDictionary>";
-
-			var reader = XmlReader.Create (new StringReader (xml));
-
-			Assert.IsTrue (reader.ReadToDescendant ("SerializableStringDictionary"), "#1");
-			Assert.IsTrue (reader.ReadToDescendant ("DictionaryEntry"), "#2");
-
-			int count = 0;
-			do {
-				reader.MoveToAttribute ("Key");
-				var key = reader.ReadContentAsString ();
-				reader.MoveToAttribute ("Value");
-				var value = reader.ReadContentAsString ();
-				count++;
-			}
-			while (reader.ReadToNextSibling ("DictionaryEntry"));
-			Assert.AreEqual (3, count, "#3");
-		}
-
-		[Test, Category("NotWorking")]
-		public void ReadToNextSiblingInInitialReadState ()
-		{
-			var xml = "<Text name=\"hello\"><Something></Something></Text>";
-			var ms = new MemoryStream(Encoding.Default.GetBytes(xml));
-			var xtr = XmlReader.Create(ms);
-
-			Assert.AreEqual(xtr.ReadState, ReadState.Initial);
-			xtr.ReadToNextSibling("Text");
-
-			Assert.AreEqual("hello", xtr.GetAttribute("name"));
-		}
-
-		[Test]
-		public void ReadSubtree ()
-		{
-			string xml = @"<root><foo/><bar attr='value'></bar></root>";
-			RunTest (xml, new TestMethod (ReadSubtree));
-		}
-
-		void ReadSubtree (XmlReader reader)
-		{
-			reader.MoveToContent (); // root
-			reader.Read (); // foo
-			XmlReader st = reader.ReadSubtree (); // <foo/>
-
-			// MS bug: IsEmptyElement should be false here.
-			/*
-			AssertNodeValues ("#1", st,
-				XmlNodeType.None,
-				0,		// Depth
-				false,		// IsEmptyElement
-				String.Empty,	// Name
-				String.Empty,	// Prefix
-				String.Empty,	// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				0,		// AttributeCount
-				false);		// HasAttributes
-			*/
-			Assert.AreEqual (XmlNodeType.None, st.NodeType, "#1");
-
-			st.Read ();
-			AssertNodeValues ("#2", st,
-				XmlNodeType.Element,
-				0,
-				true,		// IsEmptyElement
-				"foo",		// Name
-				String.Empty,	// Prefix
-				"foo",		// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				0,		// AttributeCount
-				false);		// HasAttributes
-
-			Assert.IsTrue (!st.Read (), "#3");
-
-			// At this state, reader is not positioned on <bar> yet
-			AssertNodeValues ("#3-2", reader,
-				XmlNodeType.Element,
-				1,		// Depth. It is 1 for main tree.
-				true,		// IsEmptyElement
-				"foo",		// Name
-				String.Empty,	// Prefix
-				"foo",		// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				0,		// AttributeCount
-				false);		// HasAttributes
-
-			reader.Read ();
-
-			AssertNodeValues ("#4", reader,
-				XmlNodeType.Element,
-				1,		// Depth. It is 1 for main tree.
-				false,		// IsEmptyElement
-				"bar",		// Name
-				String.Empty,	// Prefix
-				"bar",		// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				1,		// AttributeCount
-				true);		// HasAttributes
-
-			st = reader.ReadSubtree ();
-			st.Read (); // Initial -> Interactive
-			AssertNodeValues ("#5", st,
-				XmlNodeType.Element,
-				0,		// Depth. It is 0 for subtree.
-				false,		// IsEmptyElement
-				"bar",		// Name
-				String.Empty,	// Prefix
-				"bar",		// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				1,		// AttributeCount
-				true);		// HasAttributes
-
-			st.Read ();
-			AssertNodeValues ("#6-1", st,
-				XmlNodeType.EndElement,
-				0,		// Depth. It is 0 for subtree.
-				false,		// IsEmptyElement
-				"bar",		// Name
-				String.Empty,	// Prefix
-				"bar",		// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				0,		// AttributeCount
-				false);		// HasAttributes
-
-			AssertNodeValues ("#6-2", st,
-				XmlNodeType.EndElement,
-				0,		// Depth. It is 0 for subtree.
-				false,		// IsEmptyElement
-				"bar",		// Name
-				String.Empty,	// Prefix
-				"bar",		// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				0,		// AttributeCount
-				false);		// HasAttributes
-
-			Assert.IsTrue (!st.Read (), "#7");
-		}
-
-		[Test]
-		public void ReadInteger ()
-		{
-			string xml1 = "<root>1</root>";
-			XmlReader xr;
-			
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			Assert.AreEqual ("1", xr.ReadElementContentAsString (), "#1");
-
-			AssertNodeValues ("#1-2", xr,
-				XmlNodeType.None,
-				0,		// Depth. It is 0 for subtree.
-				false,		// IsEmptyElement
-				String.Empty,	// Name
-				String.Empty,	// Prefix
-				String.Empty,	// LocalName
-				String.Empty,	// NamespaceURI
-				String.Empty,	// Value
-				false,		// HasValue
-				0,		// AttributeCount
-				false);		// HasAttributes
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			// this XmlReader has no schema, thus the value is untyped
-			Assert.AreEqual ("1", xr.ReadElementContentAsObject (), "#2");
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			xr.Read ();
-			Assert.AreEqual ("1", xr.ReadContentAsString (), "#3");
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			Assert.AreEqual (1, xr.ReadElementContentAsInt (), "#4");
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			Assert.AreEqual (1, xr.ReadElementContentAs (typeof (int), null), "#5");
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlException))]
-		public void ReadContentAsIntFail ()
-		{
-			XmlReader xr = XmlReader.Create (
-				new StringReader ("<doc>1.0</doc>"));
-			xr.Read ();
-			xr.ReadElementContentAsInt ();
-		}
-
-		[Test]
-		public void ReadDateTime ()
-		{
-			DateTime time = new DateTime (2006, 1, 2, 3, 4, 56);
-			string xml1 = "<root>2006-01-02T03:04:56</root>";
-			XmlReader xr;
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			// this XmlReader has no schema, thus the value is untyped
-			Assert.AreEqual ("2006-01-02T03:04:56", xr.ReadElementContentAsString (), "#1");
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			xr.Read ();
-			Assert.AreEqual (time, xr.ReadContentAsDateTime (), "#2");
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			Assert.AreEqual (time, xr.ReadElementContentAsDateTime (), "#3");
-
-			xr = XmlReader.Create (new StringReader (xml1));
-			xr.Read ();
-			Assert.AreEqual (time, xr.ReadElementContentAs (typeof (DateTime), null), "#4");
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlException))]
-		public void ReadContentAsDateTimeFail ()
-		{
-			XmlReader xr = XmlReader.Create (
-				new StringReader ("<doc>P1Y2M3D</doc>"));
-			xr.Read ();
-			xr.ReadElementContentAsDateTime ();
-		}
-
-		[Test]
-		public void ReadContentAs_QNameEmptyNSResolver ()
-		{
-			XmlReader xr = XmlReader.Create (
-				new StringReader ("<doc xmlns:x='urn:foo'>x:el</doc>"));
-			xr.Read ();
-			object o = xr.ReadElementContentAs (
-				typeof (XmlQualifiedName), null);
-			// without IXmlNamespaceResolver, it still resolves
-			// x:el as valid QName.
-			Assert.IsNotNull (o, "#1");
-			XmlQualifiedName q = o as XmlQualifiedName;
-			Assert.AreEqual (new XmlQualifiedName ("el", "urn:foo"), q, "#2 : " + o.GetType ());
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void ReadContentStringOnElementFail ()
-		{
-			XmlReader xr = XmlReader.Create (new StringReader ("<a>test</a>"));
-			xr.Read ();
-			xr.ReadContentAsString ();
-		}
-
-		[Test]
-		public void ReadContentStringOnEndElement ()
-		{
-			XmlReader xr = XmlReader.Create (new StringReader ("<a>test</a>"));
-			xr.Read ();
-			xr.Read ();
-			xr.Read ();
-			Assert.AreEqual (String.Empty, xr.ReadContentAsString ()); // does not fail, unlike at Element!
-		}
-
-		[Test]
-		public void ReadContentStringOnPI ()
-		{
-			XmlReader xr = XmlReader.Create (new StringReader ("<?pi ?><a>test</a>"));
-			xr.Read ();
-			Assert.AreEqual (String.Empty, xr.ReadContentAsString ());
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))] // unlike ReadContentAsString()
-		public void ReadElementContentStringOnPI ()
-		{
-			XmlReader xr = XmlReader.Create (new StringReader ("<?pi ?><a>test</a>"));
-			xr.Read ();
-			Assert.AreEqual (XmlNodeType.ProcessingInstruction, xr.NodeType);
-			xr.ReadElementContentAsString ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlException))]
-		public void ReadElementContentStringMixedContent ()
-		{
-			XmlReader xr = XmlReader.Create (
-				new StringReader ("<doc>123<child>456</child>789</doc>"));
-			xr.Read ();
-			// "child" is regarded as an invalid node.
-			string s = xr.ReadElementContentAsString ();
-		}
-
-		[Test]
-		public void ReadContentStringMixedContent ()
-		{
-			XmlReader xr = XmlReader.Create (
-				new StringReader ("<doc>123<child>456</child>789</doc>"));
-			xr.Read ();
-			xr.Read (); // from Text "123"
-			string s = xr.ReadContentAsString ();
-			Assert.AreEqual ("123", s, "#1");
-			Assert.AreEqual (XmlNodeType.Element, xr.NodeType, "#2");
-		}
-
-		[Test]
-		public void ReadElementContentAsString ()
-		{
-			XmlTextReader r = new XmlTextReader (
-				"<root/>", XmlNodeType.Document, null);
-			r.Read ();
-			Assert.AreEqual (String.Empty, r.ReadElementContentAsString (), "#1");
-			Assert.AreEqual (XmlNodeType.None, r.NodeType, "#2");
-		}
-
-		[Test]
-		public void ReadElementContentAs ()
-		{
-			// as System.Object
-
-			XmlTextReader r = new XmlTextReader (
-				"<root/>", XmlNodeType.Document, null);
-			r.Read ();
-			Assert.AreEqual (String.Empty, r.ReadElementContentAs (typeof (object), null), "#1");
-			Assert.AreEqual (XmlNodeType.None, r.NodeType, "#2");
-
-			// regardless of its value, the return value is string.
-			r = new XmlTextReader ("<root>1</root>", XmlNodeType.Document, null);
-			r.Read ();
-			Assert.AreEqual ("1", r.ReadElementContentAs (typeof (object), null), "#3");
-			Assert.AreEqual (XmlNodeType.None, r.NodeType, "#4");
-		}
-
-		[Test]
-		public void ReadContentStringOnAttribute ()
-		{
-			string xml = @"<root id='myId'><child /></root>";
-			RunTest (xml, new TestMethod (ReadContentStringOnAttribute));
-		}
-
-		void ReadContentStringOnAttribute (XmlReader reader)
-		{
-			reader.Read ();
-			Assert.IsTrue (reader.MoveToAttribute ("id"));
-			Assert.AreEqual ("myId", reader.ReadContentAsString ());
-		}
-
-		[Test]
-		public void ReadElementContentAsStringEmpty ()
-		{
-			string xml = "<root><sample/></root>";
-			RunTest (xml, new TestMethod (ReadElementContentAsStringEmpty));
-		}
-
-		void ReadElementContentAsStringEmpty (XmlReader reader)
-		{
-			reader.MoveToContent ();
-			reader.Read ();
-			Assert.AreEqual (String.Empty, reader.ReadElementContentAsString ("sample", ""));
-			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType);
-		}
-
-		[Test]
-		public void ReadSubtreeClose ()
-		{
-			// bug #334752
-			string xml = @"<root><item-list><item id='a'/><item id='b'/></item-list></root>";
-			RunTest (xml, new TestMethod (ReadSubtreeClose));
-		}
-
-		void ReadSubtreeClose (XmlReader reader)
-		{
-			reader.ReadToFollowing ("item-list");
-			XmlReader sub = reader.ReadSubtree ();
-			sub.ReadToDescendant ("item");
-			sub.Close ();
-			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#1");
-			Assert.AreEqual ("item-list", reader.Name, "#2");
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void ReadSubtreeOnNonElement ()
-		{
-			string xml = @"<x> <y/></x>";
-			XmlReader r = XmlReader.Create (new StringReader (xml));
-			r.Read (); // x
-			r.Read (); // ws
-			r.ReadSubtree ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void ReadSubtreeOnNonElement2 ()
-		{
-			string xml = @"<x> <y/></x>";
-			XmlReader r = XmlReader.Create (new StringReader (xml));
-			r.ReadSubtree ();
-		}
-
-		[Test]
-		public void ReadSubtreeEmptyElement ()
-		{
-			string xml = @"<x/>";
-			XmlReader r = XmlReader.Create (new StringReader (xml));
-			r.Read ();
-			XmlReader s = r.ReadSubtree ();
-			Assert.IsTrue (s.Read (), "#1");
-			Assert.AreEqual (XmlNodeType.Element, s.NodeType, "#2");
-			Assert.IsTrue (!s.Read (), "#3");
-			Assert.AreEqual (XmlNodeType.None, s.NodeType, "#4");
-		}
-
-		[Test]
-		public void ReadSubtreeEmptyElementWithAttribute ()
-		{
-			string xml = @"<root><x a='b'/></root>";
-			XmlReader r = XmlReader.Create (new StringReader (xml));
-			r.Read ();
-			r.Read ();
-			XmlReader r2 = r.ReadSubtree ();
-			Console.WriteLine ("X");
-			r2.Read ();
-			XmlReader r3 = r2.ReadSubtree ();
-			r2.MoveToFirstAttribute ();
-			Assert.IsTrue (!r.IsEmptyElement, "#1");
-			Assert.IsTrue (!r2.IsEmptyElement, "#2");
-			r3.Close ();
-			Assert.IsTrue (r.IsEmptyElement, "#3");
-			Assert.IsTrue (r2.IsEmptyElement, "#4");
-			r2.Close ();
-			Assert.IsTrue (r.IsEmptyElement, "#5");
-			Assert.IsTrue (r2.IsEmptyElement, "#6");
-		}
-
-		[Test]
-		public void ReadContentAsBase64 ()
-		{
-			byte[] randomData = new byte[24];
-			for (int i = 0; i < randomData.Length; i++)
-				randomData [i] = (byte) i;
-
-			string xmlString = "<?xml version=\"1.0\"?><data>" +
-			Convert.ToBase64String (randomData) + "</data>";
-			TextReader textReader = new StringReader (xmlString);
-			XmlReader xmlReader = XmlReader.Create (textReader);
-			xmlReader.ReadToFollowing ("data");
-
-			int readBytes = 0;
-			byte[] buffer = new byte [24];
-
-			xmlReader.ReadStartElement ();
-			readBytes = xmlReader.ReadContentAsBase64 (buffer, 0, buffer.Length);
-			Assert.AreEqual (24, readBytes, "#1");
-			Assert.AreEqual (0, xmlReader.ReadContentAsBase64 (buffer, 0, buffer.Length), "#2");
-			StringWriter sw = new StringWriter ();
-			foreach (byte b in buffer) sw.Write ("{0:X02}", b);
-			Assert.AreEqual ("000102030405060708090A0B0C0D0E0F1011121314151617", sw.ToString (), "#3");
-		}
-
-		[Test]
-		public void ReadContentAsBase64_2 () // bug #480066
-		{
-			StringReader readerString = new StringReader ("<root><b64>TWFu</b64><b64>TWFu</b64>\r\n\t<b64>TWFu</b64><b64>TWFu</b64></root>");
-			XmlReaderSettings settingsXml = new XmlReaderSettings ();
-			settingsXml.XmlResolver = null;
-			using (var readerXml = XmlReader.Create (readerString, settingsXml)) {
-				readerXml.MoveToContent ();
-				readerXml.Read ();
-				readerXml.ReadStartElement ("b64");
-				const int bufferLength = 1024;
-				byte [] buffer = new byte [bufferLength];
-				readerXml.ReadContentAsBase64 (buffer, 0, bufferLength);
-				Assert.AreEqual (XmlNodeType.EndElement, readerXml.NodeType, "#1");
-				readerXml.Read ();
-				Assert.AreEqual (XmlNodeType.Element, readerXml.NodeType, "#2");
-			}
-		}
-		
-		[Test]
-		public void ReadContentAsBase64_3 () // bug #543332			
-		{
-			byte [] fakeState = new byte[25];
-			byte [] fixedSizeBuffer = new byte [25];
-			byte [] readDataBuffer = new byte [25];
-			var ms = new MemoryStream ();
-			var xw = XmlWriter.Create (ms);
-			xw.WriteStartElement ("root");
-			xw.WriteBase64 (fakeState, 0, fakeState.Length);
-			xw.WriteEndElement ();
-			xw.Close ();
-			var reader = XmlReader.Create (new MemoryStream (ms.ToArray ()));
-			reader.MoveToContent ();
-			// we cannot completely trust the length read to indicate the end.
-			int bytesRead;
-			bytesRead = reader.ReadElementContentAsBase64 (fixedSizeBuffer, 0, fixedSizeBuffer.Length);
-			Assert.AreEqual (25, bytesRead, "#1");
-			Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#2");
-			bytesRead = reader.ReadElementContentAsBase64 (fixedSizeBuffer, 0, fixedSizeBuffer.Length);
-			Assert.AreEqual (0, bytesRead, "#3");
-			Assert.AreEqual (XmlNodeType.None, reader.NodeType, "#4");
-		}
-
-		[Test]
-		public void ReadElementContentAsQNameDefaultNS ()
-		{
-			var sw = new StringWriter ();
-			var xw = XmlWriter.Create (sw);
-			xw.WriteStartElement ("", "foo", "urn:foo");
-			xw.WriteValue (new XmlQualifiedName ("x", "urn:foo"));
-			xw.WriteEndElement ();
-			xw.Close ();
-			var xr = XmlReader.Create (new StringReader (sw.ToString ()));
-			xr.MoveToContent ();
-			var q = (XmlQualifiedName) xr.ReadElementContentAs (typeof (XmlQualifiedName), xr as IXmlNamespaceResolver);
-			Assert.AreEqual ("urn:foo", q.Namespace, "#1");
-		}
-
-		[Test]
-		public void ReadElementContentAsArray ()
-		{
-			var sw = new StringWriter ();
-			var xw = XmlWriter.Create (sw);
-			xw.WriteStartElement ("root");
-			xw.WriteAttributeString ("xmlns", "b", "http://www.w3.org/2000/xmlns/", "urn:bar");
-			var arr = new XmlQualifiedName [] { new XmlQualifiedName ("foo"), new XmlQualifiedName ("bar", "urn:bar") };
-			xw.WriteValue (arr);
-			xw.Close ();
-			var xr = XmlReader.Create (new StringReader (sw.ToString ()));
-			xr.MoveToContent ();
-			var ret = xr.ReadElementContentAs (typeof (XmlQualifiedName []), null) as XmlQualifiedName [];
-			Assert.IsNotNull (ret, "#1");
-			Assert.AreEqual (arr [0], ret [0], "#2");
-			Assert.AreEqual (arr [1], ret [1], "#3");
-		}
-
-		[Test]
-		public void ReadContentAs ()
-		{
-			var xr = XmlReader.Create (new StringReader ("<doc a=' 1 '/>"));
-			xr.Read ();
-			xr.MoveToAttribute ("a");
-
-			Assert.AreEqual ((Byte) 1, xr.ReadContentAs (typeof (Byte), null), "#1");
-			Assert.AreEqual ((SByte) 1, xr.ReadContentAs (typeof (SByte), null), "#2");
-			Assert.AreEqual ((Int16) 1, xr.ReadContentAs (typeof (Int16), null), "#3");
-			Assert.AreEqual ((UInt16) 1, xr.ReadContentAs (typeof (UInt16), null), "#4");
-			Assert.AreEqual ((Int32) 1, xr.ReadContentAs (typeof (Int32), null), "#5");
-			Assert.AreEqual ((UInt32) 1, xr.ReadContentAs (typeof (UInt32), null), "#6");
-			Assert.AreEqual ((Int64) 1, xr.ReadContentAs (typeof (Int64), null), "#7");
-			Assert.AreEqual ((UInt64) 1, xr.ReadContentAs (typeof (UInt64), null), "#8");
-		}
-
-#if NET_4_5
-		[Test]
-		[ExpectedException(typeof(InvalidOperationException))]
-		public void MustSetAsyncFlag ()
-		{
-			var r = XmlReader.Create (new StringReader ("<root/>"));
-			r.ReadAsync ();
-		}
-
-		Exception RunAsync (Action action)
-		{
-			var task = Task<Exception>.Run (async () => {
-				try {
-					action ();
-					return null;
-				} catch (Exception ex) {
-					return ex;
-				}
-			});
-			task.Wait ();
-			Assert.That (task.IsCompleted);
-			return task.Result;
-		}
-
-		[Test]
-		public void SimpleAsync ()
-		{
-			var xml = "<root test=\"monkey\"/>";
-			var task = Task<Exception>.Run (async () => {
-				try {
-					var s = new XmlReaderSettings ();
-					s.Async = true;
-					var r = XmlReader.Create (new StringReader (xml), s);
-
-					Assert.That (await r.ReadAsync ());
-					Assert.That (r.MoveToFirstAttribute ());
-
-					Assert.AreEqual (await r.GetValueAsync (), "monkey");
-					r.Close ();
-					return null;
-				} catch (Exception ex) {
-					return ex;
-				}
-			});
-			task.Wait ();
-			Assert.That (task.IsCompleted);
-			if (task.Result != null)
-				throw task.Result;
-		}
-#endif
-	}
-}
+//
+// System.Xml.XmlReaderCommonTests
+//
+// Authors:
+//   Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//
+// (C) 2003 Atsushi Enomoto
+//  Note: Most of testcases are moved from XmlTextReaderTests.cs and
+//  XmlNodeReaderTests.cs.
+//
+
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Schema;
+using System.Xml.XPath;
+#if NET_4_5
+using System.Threading;
+using System.Threading.Tasks;
+#endif
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlReaderTests
+	{
+		[SetUp]
+		public void GetReady ()
+		{
+			document = new XmlDocument ();
+			document.LoadXml (xml1);
+		}
+
+		XmlDocument document;
+		const string xml1 = "<root attr1='value1'><child /></root>";
+		const string xml2 = "<root><foo/><bar>test.</bar></root>";
+		const string xml3 = "<root>  test of <b>mixed</b> string.<![CDATA[ cdata string.]]></root>";
+		const string xml4 = "<root>test of <b>mixed</b> string.</root>";
+		XmlTextReader xtr;
+		XmlNodeReader xnr;
+
+		// copy from XmlTextReaderTests
+		private void AssertStartDocument (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.ReadState == ReadState.Initial);
+			Assert.IsTrue (xmlReader.NodeType == XmlNodeType.None);
+			Assert.IsTrue (xmlReader.Depth == 0);
+			Assert.IsTrue (!xmlReader.EOF);
+		}
+
+		private void AssertNode (
+			XmlReader xmlReader,
+			XmlNodeType nodeType,
+			int depth,
+			bool isEmptyElement,
+			string name,
+			string prefix,
+			string localName,
+			string namespaceURI,
+			string value,
+			int attributeCount)
+		{
+			AssertNode ("", xmlReader, nodeType, depth,
+				isEmptyElement, name, prefix, localName,
+				namespaceURI, value, attributeCount);
+		}
+
+		private void AssertNode (
+			string label,
+			XmlReader xmlReader,
+			XmlNodeType nodeType,
+			int depth,
+			bool isEmptyElement,
+			string name,
+			string prefix,
+			string localName,
+			string namespaceURI,
+			string value,
+			int attributeCount)
+		{
+			Assert.IsTrue (xmlReader.Read (), label + " Read() return value");
+			Assert.IsTrue (xmlReader.ReadState == ReadState.Interactive, label + " ReadState");
+			Assert.IsTrue (!xmlReader.EOF, label + " !EOF");
+			AssertNodeValues (label, xmlReader, nodeType, depth,
+				isEmptyElement, name, prefix, localName,
+				namespaceURI, value, value != String.Empty,
+				attributeCount, attributeCount > 0);
+		}
+
+		private void AssertNodeValues (
+			string label,
+			XmlReader xmlReader,
+			XmlNodeType nodeType,
+			int depth,
+			bool isEmptyElement,
+			string name,
+			string prefix,
+			string localName,
+			string namespaceURI,
+			string value,
+			int attributeCount)
+		{
+			AssertNodeValues (label, xmlReader, nodeType, depth,
+				isEmptyElement, name, prefix, localName,
+				namespaceURI, value, value != String.Empty,
+				attributeCount, attributeCount > 0);
+		}
+
+		private void AssertNodeValues (
+			string label,
+			XmlReader xmlReader,
+			XmlNodeType nodeType,
+			int depth,
+			bool isEmptyElement,
+			string name,
+			string prefix,
+			string localName,
+			string namespaceURI,
+			string value,
+			bool hasValue,
+			int attributeCount,
+			bool hasAttributes)
+		{
+			label = String.Concat (label, "(", xmlReader.GetType ().Name, ")");
+			Assert.AreEqual (nodeType, xmlReader.NodeType, label + ": NodeType");
+			Assert.AreEqual (isEmptyElement, xmlReader.IsEmptyElement, label + ": IsEmptyElement");
+
+			Assert.AreEqual (name, xmlReader.Name, label + ": name");
+
+			Assert.AreEqual (prefix, xmlReader.Prefix, label + ": prefix");
+
+			Assert.AreEqual (localName, xmlReader.LocalName, label + ": localName");
+
+			Assert.AreEqual (namespaceURI, xmlReader.NamespaceURI, label + ": namespaceURI");
+
+			Assert.AreEqual (depth, xmlReader.Depth, label + ": Depth");
+
+			Assert.AreEqual (hasValue, xmlReader.HasValue, label + ": hasValue");
+
+			Assert.AreEqual (value, xmlReader.Value, label + ": Value");
+
+			Assert.AreEqual (hasAttributes, xmlReader.HasAttributes, label + ": hasAttributes");
+
+			Assert.AreEqual (attributeCount, xmlReader.AttributeCount, label + ": attributeCount");
+		}
+
+		private void AssertAttribute (
+			XmlReader xmlReader,
+			string name,
+			string prefix,
+			string localName,
+			string namespaceURI,
+			string value)
+		{
+			Assert.AreEqual (value, xmlReader [name], "value");
+
+			Assert.IsTrue (xmlReader.GetAttribute (name) == value);
+
+			if (namespaceURI != String.Empty) {
+				Assert.IsTrue (xmlReader[localName, namespaceURI] == value);
+				Assert.IsTrue (xmlReader.GetAttribute (localName, namespaceURI) == value);
+			}
+		}
+
+		private void AssertEndDocument (XmlReader xmlReader)
+		{
+			Assert.IsTrue (!xmlReader.Read (), "could read");
+			Assert.AreEqual (XmlNodeType.None, xmlReader.NodeType, "NodeType is not XmlNodeType.None");
+			Assert.AreEqual (0, xmlReader.Depth, "Depth is not 0");
+			Assert.AreEqual (ReadState.EndOfFile, xmlReader.ReadState, "ReadState is not ReadState.EndOfFile");
+			Assert.IsTrue (xmlReader.EOF, "not EOF");
+
+			xmlReader.Close ();
+			Assert.AreEqual (ReadState.Closed, xmlReader.ReadState, "ReadState is not ReadState.Cosed");
+		}
+
+		private delegate void TestMethod (XmlReader reader);
+
+		private void RunTest (string xml, TestMethod method)
+		{
+			xtr = new XmlTextReader (new StringReader (xml));
+			method (xtr);
+
+			// DTD validation
+			xtr = new XmlTextReader (new StringReader (xml));
+			XmlValidatingReader xvr = new XmlValidatingReader (xtr);
+			xvr.ValidationType = ValidationType.DTD;
+			xvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			method (xvr);
+
+			// XSD validation
+			xtr = new XmlTextReader (new StringReader (xml));
+			xvr = new XmlValidatingReader (xtr);
+			xvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			method (xvr);
+
+			document.XmlResolver = null;
+			document.LoadXml (xml);
+			xnr = new XmlNodeReader (document);
+			method (xnr);
+/*
+			// XPathNavigatorReader tests
+			System.Xml.XPath.XPathDocument doc = new System.Xml.XPath.XPathDocument (new StringReader (xml));
+			XmlReader xpr = doc.CreateNavigator ().ReadSubtree ();
+			method (xpr);
+*/
+		}
+
+
+
+
+
+		[Test]
+		public void InitialState ()
+		{
+			RunTest (xml1, new TestMethod (InitialState));
+		}
+
+		private void InitialState (XmlReader reader)
+		{
+			Assert.AreEqual (0, reader.Depth, "Depth");
+			Assert.AreEqual (false, reader.EOF, "EOF");
+			Assert.AreEqual (false, reader.HasValue, "HasValue");
+			Assert.AreEqual (false, reader.IsEmptyElement, "IsEmptyElement");
+			Assert.AreEqual (String.Empty, reader.LocalName, "LocalName");
+			Assert.AreEqual (XmlNodeType.None, reader.NodeType, "NodeType");
+			Assert.AreEqual (ReadState.Initial, reader.ReadState, "ReadState");
+		}
+
+		[Test]
+		public void Read ()
+		{
+			RunTest (xml1, new TestMethod (Read));
+		}
+
+		public void Read (XmlReader reader)
+		{
+			reader.Read ();
+			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "<root>.NodeType");
+			Assert.AreEqual ("root", reader.Name, "<root>.Name");
+			Assert.AreEqual (ReadState.Interactive, reader.ReadState, "<root>.ReadState");
+			Assert.AreEqual (0, reader.Depth, "<root>.Depth");
+
+			// move to 'child'
+			reader.Read ();
+			Assert.AreEqual (1, reader.Depth, "<child/>.Depth");
+			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "<child/>.NodeType");
+			Assert.AreEqual ("child", reader.Name, "<child/>.Name");
+
+			reader.Read ();
+			Assert.AreEqual (0, reader.Depth, "</root>.Depth");
+			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "</root>.NodeType");
+			Assert.AreEqual ("root", reader.Name, "</root>.Name");
+
+			reader.Read ();
+			Assert.AreEqual (true, reader.EOF, "end.EOF");
+			Assert.AreEqual (XmlNodeType.None, reader.NodeType, "end.NodeType");
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		public void ReadAttributeValue ()
+		{
+			RunTest ("<root attr=''/>", new TestMethod (ReadAttributeValue));
+		}
+
+		public void ReadAttributeValue (XmlReader reader)
+		{
+			reader.Read ();	// root
+			Assert.IsTrue (reader.MoveToFirstAttribute ());
+			// It looks like that MS.NET shows AttributeCount and
+			// HasAttributes as the same as element node!
+			this.AssertNodeValues ("#1",
+				reader, XmlNodeType.Attribute,
+				1, false, "attr", "", "attr", "", "", true, 1, true);
+			Assert.IsTrue (reader.ReadAttributeValue ());
+			// MS.NET XmlTextReader fails. Its Prefix returns 
+			// null instead of "". It is fixed in MS.NET 2.0.
+			this.AssertNodeValues ("#2",
+				reader, XmlNodeType.Text,
+				2, false, "", "", "", "", "", true, 1, true);
+			Assert.IsTrue (reader.MoveToElement ());
+			this.AssertNodeValues ("#3",
+				reader, XmlNodeType.Element,
+				0, true, "root", "", "root", "", "", false, 1, true);
+		}
+
+		[Test]
+		public void ReadEmptyElement ()
+		{
+			RunTest (xml2, new TestMethod (ReadEmptyElement));
+		}
+
+		public void ReadEmptyElement (XmlReader reader)
+		{
+			reader.Read ();	// root
+			Assert.AreEqual (false, reader.IsEmptyElement);
+			reader.Read ();	// foo
+			Assert.AreEqual ("foo", reader.Name);
+			Assert.AreEqual (true, reader.IsEmptyElement);
+			reader.Read ();	// bar
+			Assert.AreEqual ("bar", reader.Name);
+			Assert.AreEqual (false, reader.IsEmptyElement);
+		}
+
+		[Test]
+		public void ReadStringFromElement ()
+		{
+			RunTest (xml3, new TestMethod (ReadStringFromElement));
+		}
+
+		public void ReadStringFromElement (XmlReader reader)
+		{
+			// Note: ReadString() test works only when the reader is
+			// positioned at the container element.
+			// In case the reader is positioned at the first 
+			// character node, XmlTextReader and XmlNodeReader works
+			// different!!
+
+			reader.Read ();
+			string s = reader.ReadString ();
+			Assert.AreEqual ("  test of ", s, "readString.1.ret_val");
+			Assert.AreEqual ("b", reader.Name, "readString.1.Name");
+			s = reader.ReadString ();
+			Assert.AreEqual ("mixed", s, "readString.2.ret_val");
+			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "readString.2.NodeType");
+			s = reader.ReadString ();	// never proceeds.
+			Assert.AreEqual (String.Empty, s, "readString.3.ret_val");
+			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "readString.3.NodeType");
+			reader.Read ();
+			Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "readString.4.NodeType");
+			Assert.AreEqual (" string.", reader.Value, "readString.4.Value");
+			s = reader.ReadString ();	// reads the same Text node.
+			Assert.AreEqual (" string. cdata string.", s, "readString.5.ret_val");
+			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "readString.5.NodeType");
+		}
+
+		[Test]
+		public void ReadInnerXml ()
+		{
+			const string xml = "<root><foo>test of <b>mixed</b> string.</foo><bar /></root>";
+			RunTest (xml, new TestMethod (ReadInnerXml));
+		}
+
+		public void ReadInnerXml (XmlReader reader)
+		{
+			reader.Read ();
+			reader.Read ();
+			Assert.AreEqual (ReadState.Interactive, reader.ReadState, "initial.ReadState");
+			Assert.AreEqual (false, reader.EOF, "initial.EOF");
+			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "initial.NodeType");
+			string s = reader.ReadInnerXml ();
+			Assert.AreEqual ("test of <b>mixed</b> string.", s, "read_all");
+			Assert.AreEqual ("bar", reader.Name, "after.Name");
+			Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "after.NodeType");
+		}
+
+
+		[Test]
+		public void EmptyElement ()
+		{
+			RunTest ("<foo/>", new TestMethod (EmptyElement));
+		}
+		
+		public void EmptyElement (XmlReader xmlReader)
+		{
+
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, // depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void NestedEmptyTag ()
+		{
+			string xml = "<foo><bar/></foo>";
+			RunTest (xml, new TestMethod (NestedEmptyTag));
+		}
+
+		public void NestedEmptyTag (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				"#1",
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				"#2",
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				1, //depth
+				true, // isEmptyElement
+				"bar", // name
+				String.Empty, // prefix
+				"bar", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				"#3",
+				xmlReader, // xmlReader
+				XmlNodeType.EndElement, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void NestedText ()
+		{
+			string xml = "<foo>bar</foo>";
+			RunTest (xml, new TestMethod (NestedText));
+		}
+
+		public void NestedText (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Text, // nodeType
+				1, //depth
+				false, // isEmptyElement
+				String.Empty, // name
+				String.Empty, // prefix
+				String.Empty, // localName
+				String.Empty, // namespaceURI
+				"bar", // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.EndElement, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void EmptyElementWithAttributes ()
+		{
+			string xml = @"<foo bar=""baz"" quux='quuux' x:foo='x-foo' xmlns:x = 'urn:xfoo' />";
+			RunTest (xml, new TestMethod (EmptyElementWithAttributes ));
+		}
+
+		public void EmptyElementWithAttributes (XmlReader xmlReader)
+		{
+
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				4 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"bar", // name
+				String.Empty, // prefix
+				"bar", // localName
+				String.Empty, // namespaceURI
+				"baz" // value
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"quux", // name
+				String.Empty, // prefix
+				"quux", // localName
+				String.Empty, // namespaceURI
+				"quuux" // value
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"notexist", // name
+				String.Empty, // prefix
+				"notexist", // localName
+				String.Empty, // namespaceURI
+				null // value
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"x:foo", // name
+				"x", // prefix
+				"foo", // localName
+				"urn:xfoo", // namespaceURI
+				"x-foo" // value
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"x:bar", // name
+				"x", // prefix
+				"bar", // localName
+				"urn:xfoo", // namespaceURI
+				null // value
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void ProcessingInstructionBeforeDocumentElement ()
+		{
+			string xml = "<?foo bar?><baz/>";
+			RunTest (xml, new TestMethod (ProcessingInstructionBeforeDocumentElement));
+		}
+
+		public void ProcessingInstructionBeforeDocumentElement (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.ProcessingInstruction, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				"bar", // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				true, // isEmptyElement
+				"baz", // name
+				String.Empty, // prefix
+				"baz", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void CommentBeforeDocumentElement ()
+		{
+			string xml = "<!--foo--><bar/>";
+			RunTest (xml, new TestMethod (CommentBeforeDocumentElement));
+		}
+
+		public void CommentBeforeDocumentElement (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Comment, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				String.Empty, // name
+				String.Empty, // prefix
+				String.Empty, // localName
+				String.Empty, // namespaceURI
+				"foo", // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				true, // isEmptyElement
+				"bar", // name
+				String.Empty, // prefix
+				"bar", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void PredefinedEntities ()
+		{
+			string xml = "<foo>&lt;&gt;&amp;&apos;&quot;</foo>";
+			RunTest (xml, new TestMethod (PredefinedEntities));
+		}
+
+		public void PredefinedEntities (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Text, // nodeType
+				1, //depth
+				false, // isEmptyElement
+				String.Empty, // name
+				String.Empty, // prefix
+				String.Empty, // localName
+				String.Empty, // namespaceURI
+				"<>&'\"", // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.EndElement, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void CharacterReferences ()
+		{
+			string xml = "<foo>&#70;&#x4F;&#x4f;</foo>";
+			RunTest (xml, new TestMethod (CharacterReferences));
+		}
+
+		public void CharacterReferences (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Text, // nodeType
+				1, //depth
+				false, // isEmptyElement
+				String.Empty, // name
+				String.Empty, // prefix
+				String.Empty, // localName
+				String.Empty, // namespaceURI
+				"FOO", // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.EndElement, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void PredefinedEntitiesInAttribute ()
+		{
+			string xml = "<foo bar='&lt;&gt;&amp;&apos;&quot;'/>";
+			RunTest (xml, new TestMethod (PredefinedEntitiesInAttribute ));
+		}
+
+		public void PredefinedEntitiesInAttribute (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				1 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"bar", // name
+				String.Empty, // prefix
+				"bar", // localName
+				String.Empty, // namespaceURI
+				"<>&'\"" // value
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void CharacterReferencesInAttribute ()
+		{
+			string xml = "<foo bar='&#70;&#x4F;&#x4f;'/>";
+			RunTest (xml, new TestMethod (CharacterReferencesInAttribute));
+		}
+
+		public void CharacterReferencesInAttribute (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				1 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"bar", // name
+				String.Empty, // prefix
+				"bar", // localName
+				String.Empty, // namespaceURI
+				"FOO" // value
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void CDATA ()
+		{
+			string xml = "<foo><![CDATA[<>&]]></foo>";
+			RunTest (xml, new TestMethod (CDATA));
+		}
+
+		public void CDATA (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.CDATA, // nodeType
+				1, //depth
+				false, // isEmptyElement
+				String.Empty, // name
+				String.Empty, // prefix
+				String.Empty, // localName
+				String.Empty, // namespaceURI
+				"<>&", // value
+				0 // attributeCount
+			);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.EndElement, // nodeType
+				0, //depth
+				false, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void EmptyElementInDefaultNamespace ()
+		{
+			string xml = @"<foo xmlns='http://foo/' />";
+			RunTest (xml, new TestMethod (EmptyElementInDefaultNamespace));
+		}
+
+		public void EmptyElementInDefaultNamespace (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, // depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				"http://foo/", // namespaceURI
+				String.Empty, // value
+				1 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"xmlns", // name
+				String.Empty, // prefix
+				"xmlns", // localName
+				"http://www.w3.org/2000/xmlns/", // namespaceURI
+				"http://foo/" // value
+			);
+
+			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace (String.Empty));
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void ChildElementInNamespace ()
+		{
+			string xml = @"<foo:bar xmlns:foo='http://foo/'><baz:quux xmlns:baz='http://baz/' /></foo:bar>";
+			RunTest (xml, new TestMethod (ChildElementInNamespace));
+		}
+
+		public void ChildElementInNamespace (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, // depth
+				false, // isEmptyElement
+				"foo:bar", // name
+				"foo", // prefix
+				"bar", // localName
+				"http://foo/", // namespaceURI
+				String.Empty, // value
+				1 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"xmlns:foo", // name
+				"xmlns", // prefix
+				"foo", // localName
+				"http://www.w3.org/2000/xmlns/", // namespaceURI
+				"http://foo/" // value
+			);
+
+			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				1, // depth
+				true, // isEmptyElement
+				"baz:quux", // name
+				"baz", // prefix
+				"quux", // localName
+				"http://baz/", // namespaceURI
+				String.Empty, // value
+				1 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"xmlns:baz", // name
+				"xmlns", // prefix
+				"baz", // localName
+				"http://www.w3.org/2000/xmlns/", // namespaceURI
+				"http://baz/" // value
+			);
+
+			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
+			Assert.AreEqual ("http://baz/", xmlReader.LookupNamespace ("baz"));
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.EndElement, // nodeType
+				0, // depth
+				false, // isEmptyElement
+				"foo:bar", // name
+				"foo", // prefix
+				"bar", // localName
+				"http://foo/", // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
+			Assert.IsNull (xmlReader.LookupNamespace ("baz"));
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void ChildElementInDefaultNamespace ()
+		{
+			string xml = @"<foo:bar xmlns:foo='http://foo/'><baz xmlns='http://baz/' /></foo:bar>";
+			RunTest (xml, new TestMethod (ChildElementInDefaultNamespace));
+		}
+
+		public void ChildElementInDefaultNamespace (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, // depth
+				false, // isEmptyElement
+				"foo:bar", // name
+				"foo", // prefix
+				"bar", // localName
+				"http://foo/", // namespaceURI
+				String.Empty, // value
+				1 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"xmlns:foo", // name
+				"xmlns", // prefix
+				"foo", // localName
+				"http://www.w3.org/2000/xmlns/", // namespaceURI
+				"http://foo/" // value
+			);
+
+			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				1, // depth
+				true, // isEmptyElement
+				"baz", // name
+				String.Empty, // prefix
+				"baz", // localName
+				"http://baz/", // namespaceURI
+				String.Empty, // value
+				1 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"xmlns", // name
+				String.Empty, // prefix
+				"xmlns", // localName
+				"http://www.w3.org/2000/xmlns/", // namespaceURI
+				"http://baz/" // value
+			);
+
+			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
+			Assert.AreEqual ("http://baz/", xmlReader.LookupNamespace (String.Empty));
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.EndElement, // nodeType
+				0, // depth
+				false, // isEmptyElement
+				"foo:bar", // name
+				"foo", // prefix
+				"bar", // localName
+				"http://foo/", // namespaceURI
+				String.Empty, // value
+				0 // attributeCount
+			);
+
+			Assert.AreEqual ("http://foo/", xmlReader.LookupNamespace ("foo"));
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void AttributeInNamespace ()
+		{
+			string xml = @"<foo bar:baz='quux' xmlns:bar='http://bar/' />";
+			RunTest (xml, new TestMethod (AttributeInNamespace));
+		}
+
+		public void AttributeInNamespace (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, // depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				2 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"bar:baz", // name
+				"bar", // prefix
+				"baz", // localName
+				"http://bar/", // namespaceURI
+				"quux" // value
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"xmlns:bar", // name
+				"xmlns", // prefix
+				"bar", // localName
+				"http://www.w3.org/2000/xmlns/", // namespaceURI
+				"http://bar/" // value
+			);
+
+			Assert.AreEqual ("http://bar/", xmlReader.LookupNamespace ("bar"));
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+		public void MoveToElementFromAttribute ()
+		{
+			string xml = @"<foo bar=""baz"" />";
+			RunTest (xml, new TestMethod (MoveToElementFromAttribute));
+		}
+
+		public void MoveToElementFromAttribute (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.Read ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+			Assert.IsTrue (xmlReader.MoveToFirstAttribute ());
+			Assert.AreEqual (XmlNodeType.Attribute, xmlReader.NodeType);
+			Assert.IsTrue (xmlReader.MoveToElement ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+		}
+
+		[Test]
+		public void MoveToElementFromElement ()
+		{
+			string xml = @"<foo bar=""baz"" />";
+			RunTest (xml, new TestMethod (MoveToElementFromElement));
+		}
+
+		public void MoveToElementFromElement (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.Read ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+			Assert.IsTrue (!xmlReader.MoveToElement ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+		}
+
+		[Test]
+		public void MoveToFirstAttributeWithNoAttributes ()
+		{
+			string xml = @"<foo />";
+			RunTest (xml, new TestMethod (MoveToFirstAttributeWithNoAttributes));
+		}
+
+		public void MoveToFirstAttributeWithNoAttributes (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.Read ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+			Assert.IsTrue (!xmlReader.MoveToFirstAttribute ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+		}
+
+		[Test]
+		public void MoveToNextAttributeWithNoAttributes ()
+		{
+			string xml = @"<foo />";
+			RunTest (xml, new TestMethod (MoveToNextAttributeWithNoAttributes));
+		}
+
+		public void MoveToNextAttributeWithNoAttributes (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.Read ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+		}
+
+		[Test]
+		public void MoveToNextAttribute()
+		{
+			string xml = @"<foo bar=""baz"" quux='quuux'/>";
+			RunTest (xml, new TestMethod (MoveToNextAttribute));
+		}
+
+		public void MoveToNextAttribute (XmlReader xmlReader)
+		{
+			AssertStartDocument (xmlReader);
+
+			AssertNode (
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				2 // attributeCount
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"bar", // name
+				String.Empty, // prefix
+				"bar", // localName
+				String.Empty, // namespaceURI
+				"baz" // value
+			);
+
+			AssertAttribute (
+				xmlReader, // xmlReader
+				"quux", // name
+				String.Empty, // prefix
+				"quux", // localName
+				String.Empty, // namespaceURI
+				"quuux" // value
+			);
+
+			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", xmlReader.Name);
+			Assert.AreEqual ("baz", xmlReader.Value);
+
+			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
+			Assert.AreEqual ("quux", xmlReader.Name);
+			Assert.AreEqual ("quuux", xmlReader.Value);
+
+			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
+
+			Assert.IsTrue (xmlReader.MoveToElement ());
+
+			AssertNodeValues (
+				"#1",
+				xmlReader, // xmlReader
+				XmlNodeType.Element, // nodeType
+				0, //depth
+				true, // isEmptyElement
+				"foo", // name
+				String.Empty, // prefix
+				"foo", // localName
+				String.Empty, // namespaceURI
+				String.Empty, // value
+				2 // attributeCount
+			);
+
+			AssertEndDocument (xmlReader);
+		}
+
+		[Test]
+//		[Category ("NotDotNet")] // MS XmlNodeReader never moves to xml declaration.
+		[Ignore ("Too inconsistent reference implementations to determine which is correct behavior.")]
+		public void MoveToXmlDeclAttributes ()
+		{
+			string xml = "<?xml version=\"1.0\" standalone=\"yes\"?><root/>";
+			RunTest (xml, new TestMethod (MoveToXmlDeclAttributes));
+		}
+
+		public void MoveToXmlDeclAttributes (XmlReader xmlReader)
+		{
+			xmlReader.Read ();
+			this.AssertNodeValues ("#1", xmlReader, 
+				XmlNodeType.XmlDeclaration,
+				0,
+				false,
+				"xml",
+				String.Empty,
+				"xml",
+				String.Empty,
+				"version=\"1.0\" standalone=\"yes\"",
+				2);
+			Assert.IsTrue (xmlReader.MoveToFirstAttribute (), "MoveToFirstAttribute");
+			this.AssertNodeValues ("#2", xmlReader, 
+				XmlNodeType.Attribute,
+				0, // FIXME: might be 1
+				false,
+				"version",
+				String.Empty,
+				"version",
+				String.Empty,
+				"1.0",
+				2);
+			xmlReader.ReadAttributeValue ();
+			this.AssertNodeValues ("#3", xmlReader, 
+				XmlNodeType.Text,
+				1, // FIXME might be 2
+				false,
+				String.Empty,
+				null, // FIXME: should be String.Empty,
+				String.Empty,
+				null, // FIXME: should be String.Empty,
+				"1.0",
+				2);
+			xmlReader.MoveToNextAttribute ();
+			this.AssertNodeValues ("#4", xmlReader, 
+				XmlNodeType.Attribute,
+				0, // FIXME: might be 1
+				false,
+				"standalone",
+				String.Empty,
+				"standalone",
+				String.Empty,
+				"yes",
+				2);
+			xmlReader.ReadAttributeValue ();
+			this.AssertNodeValues ("#5", xmlReader, 
+				XmlNodeType.Text,
+				1, // FIXME: might be 2
+				false,
+				String.Empty,
+				null, // FIXME: should be String.Empty,
+				String.Empty,
+				null, // FIXME: should be String.Empty,
+				"yes",
+				2);
+		}
+
+		[Test]
+		public void AttributeOrder ()
+		{
+			string xml = @"<foo _1='1' _2='2' _3='3' />";
+			RunTest (xml, new TestMethod (AttributeOrder));
+		}
+
+		public void AttributeOrder (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.Read ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+
+			Assert.IsTrue (xmlReader.MoveToFirstAttribute ());
+			Assert.AreEqual ("_1", xmlReader.Name);
+			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
+			Assert.AreEqual ("_2", xmlReader.Name);
+			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
+			Assert.AreEqual ("_3", xmlReader.Name);
+
+			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		[Ignore ("Bug in Microsoft referencesource")]
+		public void IndexerAndAttributes ()
+		{
+			string xml = @"<?xml version='1.0' standalone='no'?><foo _1='1' _2='2' _3='3' />";
+			RunTest (xml, new TestMethod (IndexerAndAttributes));
+		}
+
+		public void IndexerAndAttributes (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.Read ());
+			Assert.AreEqual ("1.0", xmlReader ["version"]);
+			Assert.AreEqual ("1.0", xmlReader.GetAttribute ("version"));
+			// .NET 1.1 BUG. XmlTextReader returns null, while XmlNodeReader returns "".
+			Assert.AreEqual (null, xmlReader ["encoding"]);
+			Assert.AreEqual (null, xmlReader.GetAttribute ("encoding"));
+			Assert.AreEqual ("no", xmlReader ["standalone"]);
+			Assert.AreEqual ("no", xmlReader.GetAttribute ("standalone"));
+			Assert.AreEqual ("1.0", xmlReader [0]);
+			Assert.AreEqual ("1.0", xmlReader.GetAttribute (0));
+			Assert.AreEqual ("no", xmlReader [1]);
+			Assert.AreEqual ("no", xmlReader.GetAttribute (1));
+
+			Assert.IsTrue (xmlReader.Read ());
+			Assert.AreEqual (XmlNodeType.Element, xmlReader.NodeType);
+			Assert.AreEqual ("1", xmlReader ["_1"]);
+
+			Assert.IsTrue (xmlReader.MoveToFirstAttribute ());
+			Assert.AreEqual ("_1", xmlReader.Name);
+			Assert.AreEqual ("1", xmlReader ["_1"]);
+			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
+			Assert.AreEqual ("_2", xmlReader.Name);
+			Assert.AreEqual ("1", xmlReader ["_1"]);
+			Assert.IsTrue (xmlReader.MoveToNextAttribute ());
+			Assert.AreEqual ("_3", xmlReader.Name);
+			Assert.AreEqual ("1", xmlReader ["_1"]);
+
+			Assert.IsTrue (!xmlReader.MoveToNextAttribute ());
+		}
+
+		[Test]
+		public void ProhibitedMultipleAttributes ()
+		{
+			string xml = @"<foo _1='1' _1='1' />";
+			try {
+				RunTest (xml, new TestMethod (ReadAll));
+			} catch (XmlException) {
+			}
+			xml = @"<foo _1='1' _1='2' />";
+			try {
+				RunTest (xml, new TestMethod (ReadAll));
+			} catch (XmlException) {
+			}
+		}
+
+		public void ReadAll (XmlReader xmlReader)
+		{
+			while (!xmlReader.EOF)
+				xmlReader.Read ();
+		}
+
+		[Test]
+		public void SurrogatePairContent ()
+		{
+			string xml = "<root xmlns='&#x10100;'/>";
+			RunTest (xml, new TestMethod (SurrogatePairContent));
+		}
+
+		public void SurrogatePairContent (XmlReader xmlReader)
+		{
+			xmlReader.Read ();
+			Assert.AreEqual (true, xmlReader.MoveToAttribute ("xmlns"));
+			Assert.AreEqual ("xmlns", xmlReader.Name);
+			Assert.AreEqual (2, xmlReader.Value.Length);
+			Assert.AreEqual (0xD800, (int) xmlReader.Value [0]);
+			Assert.AreEqual (0xDD00, (int) xmlReader.Value [1]);
+		}
+
+		[Test]
+		public void ReadOuterXmlOnEndElement ()
+		{
+			string xml = "<root><foo></foo></root>";
+			RunTest (xml, new TestMethod (ReadOuterXmlOnEndElement));
+		}
+
+		public void ReadOuterXmlOnEndElement (XmlReader xmlReader)
+		{
+			xmlReader.Read ();
+			xmlReader.Read ();
+			xmlReader.Read ();
+			Assert.AreEqual (String.Empty, xmlReader.ReadOuterXml ());
+		}
+
+		[Test]
+		public void ReadInnerXmlOnEndElement ()
+		{
+			string xml = "<root><foo></foo></root>";
+			RunTest (xml, new TestMethod (ReadInnerXmlOnEndElement));
+		}
+
+		private void ReadInnerXmlOnEndElement (XmlReader xmlReader)
+		{
+			xmlReader.Read ();
+			xmlReader.Read ();
+			xmlReader.Read ();
+			Assert.AreEqual (String.Empty, xmlReader.ReadInnerXml ());
+		}
+
+		[Test]
+		public void LookupEmptyPrefix ()
+		{
+			string xml = "<root><foo></foo></root>";
+			RunTest (xml, new TestMethod (LookupEmptyPrefix));
+		}
+
+		void LookupEmptyPrefix (XmlReader xmlReader)
+		{
+			xmlReader.Read ();
+			Assert.IsNull (xmlReader.LookupNamespace (String.Empty));
+		}
+
+		[Test]
+		public void ReadStartElement ()
+		{
+			string xml = "<root>test</root>";
+			RunTest (xml, new TestMethod (ReadStartElement));
+		}
+
+		void ReadStartElement (XmlReader xr)
+		{
+			xr.Read ();
+			xr.ReadStartElement ();
+			// consume Element node.
+			Assert.AreEqual (XmlNodeType.Text, xr.NodeType);
+		}
+
+		[Test]
+		public void LookupNamespaceAtEndElement ()
+		{
+			string xml = "<root xmlns:x='urn:foo'><foo/></root>";
+			RunTest (xml, new TestMethod (LookupNamespaceAtEndElement));
+		}
+
+		void LookupNamespaceAtEndElement (XmlReader reader)
+		{
+			reader.Read ();
+			Assert.AreEqual ("urn:foo", reader.LookupNamespace ("x"), "#1");
+			reader.Read ();
+			Assert.AreEqual ("urn:foo", reader.LookupNamespace ("x"), "#2");
+			reader.Read ();
+			Assert.AreEqual ("urn:foo", reader.LookupNamespace ("x"), "#3");
+		}
+
+		[Test]
+		public void ReadClosedReader ()
+		{
+			string xml = "<fin>aaa</fin>";
+			RunTest (xml, new TestMethod (ReadClosedReader));
+		}
+
+		void ReadClosedReader (XmlReader reader)
+		{
+			reader.Read ();
+			reader.Close();
+			reader.Read (); // silently returns false
+		}
+
+		[Test]
+		public void CreateSimple ()
+		{
+			XmlReaderSettings s = new XmlReaderSettings ();
+			s.ProhibitDtd = false;
+			XmlReader xr = XmlReader.Create ("Test/XmlFiles/nested-dtd-test.xml", s);
+			xr.Read ();
+			Assert.AreEqual (XmlNodeType.DocumentType, xr.NodeType, "#1");
+			xr.Read ();
+			Assert.AreEqual (XmlNodeType.Whitespace, xr.NodeType, "#2");
+			xr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, xr.NodeType, "#3");
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlException))]
+		public void CreateSimpleProhibitDtd ()
+		{
+			XmlReader xr = XmlReader.Create ("Test/XmlFiles/nested-dtd-test.xml");
+			xr.Read ();
+		}
+
+		[Test]
+		// a bit revised version of bug #78706
+		public void CreateFromUrlClose ()
+		{
+			string file = Path.Combine (Path.GetTempPath (), "78706.xml");
+			try {
+				if (!File.Exists (file))
+					File.Create (file).Close ();
+				XmlReaderSettings s = new XmlReaderSettings ();
+				s.CloseInput = false; // explicitly
+				XmlReader r = XmlReader.Create (file, s);
+				r.Close ();
+				XmlTextWriter w = new XmlTextWriter (file, null);
+				w.Close ();
+			} finally {
+				if (File.Exists (file))
+					File.Delete (file);
+			}
+		}
+
+		[Test]
+		// a bit revised version of bug #385638
+		public void CreateFromUrlClose2 ()
+		{
+			string file = Path.Combine (Path.GetTempPath (), "385638.xml");
+			try {
+				if (File.Exists (file))
+					File.Delete (file);
+				using (TextWriter tw = File.CreateText (file))
+					tw.Write ("<xml />");
+				XmlReaderSettings s = new XmlReaderSettings ();
+				s.IgnoreWhitespace = true; // this results in XmlFilterReader, which is the key for this bug.
+				XmlReader r = XmlReader.Create (file, s);
+				r.Close ();
+				XmlTextWriter w = new XmlTextWriter (file, null);
+				w.Close ();
+			} finally {
+				if (File.Exists (file))
+					File.Delete (file);
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void Create_String_Empty ()
+		{
+			XmlReader.Create (String.Empty);
+		}
+
+		[Test]
+		public void ReadToDescendant ()
+		{
+			string xml = @"<root><foo/><bar/><foo> test text <bar><bar></bar></bar></foo></root>";
+			RunTest (xml, new TestMethod (ReadToDescendant));
+		}
+
+		void ReadToDescendant (XmlReader xmlReader)
+		{
+			// move to first <bar/>
+			Assert.IsTrue (xmlReader.ReadToDescendant ("bar"), "#1");
+			// no children in <bar/>. It is empty.
+			Assert.IsTrue (!xmlReader.ReadToDescendant ("bar"), "#2");
+			Assert.AreEqual ("bar", xmlReader.Name, "#2-2");
+
+			// move to the second <foo>
+			xmlReader.Read ();
+			// move to the second <bar>
+			Assert.IsTrue (xmlReader.ReadToDescendant ("bar"), "#3");
+			// move to <bar> inside <bar>...</bar>
+			Assert.IsTrue (xmlReader.ReadToDescendant ("bar"), "#4");
+			// the next is EndElement of </bar>, so no move.
+			Assert.IsTrue (!xmlReader.ReadToDescendant ("bar"), "#5");
+			Assert.AreEqual (XmlNodeType.EndElement, xmlReader.NodeType, "#5-2");
+		}
+
+		[Test]
+		public void ReadToDescepdant2 ()
+		{
+			string xml = "<root/>";
+			RunTest (xml, new TestMethod (ReadToDescendant2));
+		}
+
+		void ReadToDescendant2 (XmlReader xmlReader)
+		{
+			// make sure that it works when the reader is at Initial state.
+			Assert.IsTrue (xmlReader.ReadToDescendant ("root"));
+		}
+
+		[Test]
+		public void ReadToFollowing ()
+		{
+			string xml = @"<root><foo/><bar/><foo><bar><bar></bar></bar></foo></root>";
+			RunTest (xml, new TestMethod (ReadToFollowing));
+		}
+
+		public void ReadToFollowing (XmlReader xmlReader)
+		{
+			Assert.IsTrue (xmlReader.ReadToFollowing ("bar"), "#1");
+			Assert.IsTrue (xmlReader.ReadToFollowing ("bar"), "#2");
+			Assert.AreEqual (2, xmlReader.Depth, "#2-2");
+			Assert.IsTrue (xmlReader.ReadToFollowing ("bar"), "#3");
+			Assert.AreEqual (3, xmlReader.Depth, "#3-2");
+			Assert.IsTrue (!xmlReader.ReadToFollowing ("bar"), "#4");
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		public void ReadToNextSiblingAtInitialState ()
+		{
+			string xml = @"<root></root>";
+			RunTest (xml, new TestMethod (ReadToNextSiblingAtInitialState ));
+		}
+
+		void ReadToNextSiblingAtInitialState (XmlReader xmlReader)
+		{
+			Assert.IsTrue (!xmlReader.ReadToNextSibling ("bar"), "#1");
+			Assert.IsTrue (!xmlReader.ReadToNextSibling ("root"), "#2");
+		}
+
+		[Test]
+		public void ReadToNextSibling ()
+		{
+			string xml = @"<root><foo/><bar attr='value'/><foo><pooh/><bar></bar><foo></foo><bar/></foo></root>";
+			RunTest (xml, new TestMethod (ReadToNextSibling));
+		}
+
+		void ReadToNextSibling (XmlReader xmlReader)
+		{
+			// It is funky, but without it MS.NET results in an infinite loop.
+			xmlReader.Read (); // root
+
+			xmlReader.Read (); // foo
+			Assert.IsTrue (xmlReader.ReadToNextSibling ("bar"), "#3");
+
+			Assert.AreEqual ("value", xmlReader.GetAttribute ("attr"), "#3-2");
+			xmlReader.Read (); // foo
+			xmlReader.Read (); // pooh
+			Assert.IsTrue (xmlReader.ReadToNextSibling ("bar"), "#4");
+			Assert.IsTrue (!xmlReader.IsEmptyElement, "#4-2");
+			Assert.IsTrue (xmlReader.ReadToNextSibling ("bar"), "#5");
+			Assert.IsTrue (xmlReader.IsEmptyElement, "#5-2");
+			Assert.IsTrue (xmlReader.Read (), "#6"); // /foo
+
+			AssertNodeValues ("#7", xmlReader,
+				XmlNodeType.EndElement,
+				1,		// Depth
+				false,		// IsEmptyElement
+				"foo",		// Name
+				String.Empty,	// Prefix
+				"foo",		// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				0,		// AttributeCount
+				false);		// HasAttributes
+		}
+
+		// bug #81451
+		[Test]
+		public void ReadToNextSibling2 ()
+		{
+			string xml = @"<root><baz><bar><foo attr='value'/></bar><foo attr='value2'><bar><foo /></bar></foo></baz></root>";
+			RunTest (xml, new TestMethod (ReadToNextSibling2));
+		}
+
+		void ReadToNextSibling2 (XmlReader r)
+		{
+			r.MoveToContent (); // ->root
+			r.Read (); // root->baz
+			r.Read (); // baz->bar
+			Assert.IsTrue (r.ReadToNextSibling ("foo"), "#1");
+			Assert.AreEqual ("value2", r.GetAttribute ("attr"), "#2");
+			r.Read (); // foo[@value='value2']->bar
+			Assert.IsTrue (!r.ReadToNextSibling ("foo"), "#3");
+			Assert.AreEqual (XmlNodeType.EndElement, r.NodeType, "#4");
+			Assert.AreEqual ("foo", r.LocalName, "#5");
+		}
+
+		// bug #347768
+		[Test]
+		public void ReadToNextSibling3 ()
+		{
+			string xml = @" <books> <book> <name>Happy C Sharp</name> </book> </books>";
+			XmlReader reader = XmlReader.Create (new StringReader (xml));
+
+			reader.MoveToContent ();
+
+			while (reader.Read ())
+				reader.ReadToNextSibling ("book"); // should not result in an infinite loop
+		}
+
+		// bug #676020
+		[Test]
+		public void ReadToNextSibling4 ()
+		{
+			string xml = @"<SerializableStringDictionary>
+<SerializableStringDictionary>
+<DictionaryEntry Key=""Key1"" Value=""Value1""/>
+<DictionaryEntry Key=""Key2"" Value=""Value2""/>
+<DictionaryEntry Key=""Key3"" Value=""Value3""/>
+</SerializableStringDictionary>
+</SerializableStringDictionary>";
+
+			var reader = XmlReader.Create (new StringReader (xml));
+
+			Assert.IsTrue (reader.ReadToDescendant ("SerializableStringDictionary"), "#1");
+			Assert.IsTrue (reader.ReadToDescendant ("DictionaryEntry"), "#2");
+
+			int count = 0;
+			do {
+				reader.MoveToAttribute ("Key");
+				var key = reader.ReadContentAsString ();
+				reader.MoveToAttribute ("Value");
+				var value = reader.ReadContentAsString ();
+				count++;
+			}
+			while (reader.ReadToNextSibling ("DictionaryEntry"));
+			Assert.AreEqual (3, count, "#3");
+		}
+
+		[Test, Category("NotWorking")]
+		public void ReadToNextSiblingInInitialReadState ()
+		{
+			var xml = "<Text name=\"hello\"><Something></Something></Text>";
+			var ms = new MemoryStream(Encoding.Default.GetBytes(xml));
+			var xtr = XmlReader.Create(ms);
+
+			Assert.AreEqual(xtr.ReadState, ReadState.Initial);
+			xtr.ReadToNextSibling("Text");
+
+			Assert.AreEqual("hello", xtr.GetAttribute("name"));
+		}
+
+		[Test]
+		public void ReadSubtree ()
+		{
+			string xml = @"<root><foo/><bar attr='value'></bar></root>";
+			RunTest (xml, new TestMethod (ReadSubtree));
+		}
+
+		void ReadSubtree (XmlReader reader)
+		{
+			reader.MoveToContent (); // root
+			reader.Read (); // foo
+			XmlReader st = reader.ReadSubtree (); // <foo/>
+
+			// MS bug: IsEmptyElement should be false here.
+			/*
+			AssertNodeValues ("#1", st,
+				XmlNodeType.None,
+				0,		// Depth
+				false,		// IsEmptyElement
+				String.Empty,	// Name
+				String.Empty,	// Prefix
+				String.Empty,	// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				0,		// AttributeCount
+				false);		// HasAttributes
+			*/
+			Assert.AreEqual (XmlNodeType.None, st.NodeType, "#1");
+
+			st.Read ();
+			AssertNodeValues ("#2", st,
+				XmlNodeType.Element,
+				0,
+				true,		// IsEmptyElement
+				"foo",		// Name
+				String.Empty,	// Prefix
+				"foo",		// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				0,		// AttributeCount
+				false);		// HasAttributes
+
+			Assert.IsTrue (!st.Read (), "#3");
+
+			// At this state, reader is not positioned on <bar> yet
+			AssertNodeValues ("#3-2", reader,
+				XmlNodeType.Element,
+				1,		// Depth. It is 1 for main tree.
+				true,		// IsEmptyElement
+				"foo",		// Name
+				String.Empty,	// Prefix
+				"foo",		// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				0,		// AttributeCount
+				false);		// HasAttributes
+
+			reader.Read ();
+
+			AssertNodeValues ("#4", reader,
+				XmlNodeType.Element,
+				1,		// Depth. It is 1 for main tree.
+				false,		// IsEmptyElement
+				"bar",		// Name
+				String.Empty,	// Prefix
+				"bar",		// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				1,		// AttributeCount
+				true);		// HasAttributes
+
+			st = reader.ReadSubtree ();
+			st.Read (); // Initial -> Interactive
+			AssertNodeValues ("#5", st,
+				XmlNodeType.Element,
+				0,		// Depth. It is 0 for subtree.
+				false,		// IsEmptyElement
+				"bar",		// Name
+				String.Empty,	// Prefix
+				"bar",		// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				1,		// AttributeCount
+				true);		// HasAttributes
+
+			st.Read ();
+			AssertNodeValues ("#6-1", st,
+				XmlNodeType.EndElement,
+				0,		// Depth. It is 0 for subtree.
+				false,		// IsEmptyElement
+				"bar",		// Name
+				String.Empty,	// Prefix
+				"bar",		// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				0,		// AttributeCount
+				false);		// HasAttributes
+
+			AssertNodeValues ("#6-2", st,
+				XmlNodeType.EndElement,
+				0,		// Depth. It is 0 for subtree.
+				false,		// IsEmptyElement
+				"bar",		// Name
+				String.Empty,	// Prefix
+				"bar",		// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				0,		// AttributeCount
+				false);		// HasAttributes
+
+			Assert.IsTrue (!st.Read (), "#7");
+		}
+
+		[Test]
+		public void ReadInteger ()
+		{
+			string xml1 = "<root>1</root>";
+			XmlReader xr;
+			
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			Assert.AreEqual ("1", xr.ReadElementContentAsString (), "#1");
+
+			AssertNodeValues ("#1-2", xr,
+				XmlNodeType.None,
+				0,		// Depth. It is 0 for subtree.
+				false,		// IsEmptyElement
+				String.Empty,	// Name
+				String.Empty,	// Prefix
+				String.Empty,	// LocalName
+				String.Empty,	// NamespaceURI
+				String.Empty,	// Value
+				false,		// HasValue
+				0,		// AttributeCount
+				false);		// HasAttributes
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			// this XmlReader has no schema, thus the value is untyped
+			Assert.AreEqual ("1", xr.ReadElementContentAsObject (), "#2");
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			xr.Read ();
+			Assert.AreEqual ("1", xr.ReadContentAsString (), "#3");
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			Assert.AreEqual (1, xr.ReadElementContentAsInt (), "#4");
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			Assert.AreEqual (1, xr.ReadElementContentAs (typeof (int), null), "#5");
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlException))]
+		public void ReadContentAsIntFail ()
+		{
+			XmlReader xr = XmlReader.Create (
+				new StringReader ("<doc>1.0</doc>"));
+			xr.Read ();
+			xr.ReadElementContentAsInt ();
+		}
+
+		[Test]
+		public void ReadDateTime ()
+		{
+			DateTime time = new DateTime (2006, 1, 2, 3, 4, 56);
+			string xml1 = "<root>2006-01-02T03:04:56</root>";
+			XmlReader xr;
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			// this XmlReader has no schema, thus the value is untyped
+			Assert.AreEqual ("2006-01-02T03:04:56", xr.ReadElementContentAsString (), "#1");
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			xr.Read ();
+			Assert.AreEqual (time, xr.ReadContentAsDateTime (), "#2");
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			Assert.AreEqual (time, xr.ReadElementContentAsDateTime (), "#3");
+
+			xr = XmlReader.Create (new StringReader (xml1));
+			xr.Read ();
+			Assert.AreEqual (time, xr.ReadElementContentAs (typeof (DateTime), null), "#4");
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlException))]
+		public void ReadContentAsDateTimeFail ()
+		{
+			XmlReader xr = XmlReader.Create (
+				new StringReader ("<doc>P1Y2M3D</doc>"));
+			xr.Read ();
+			xr.ReadElementContentAsDateTime ();
+		}
+
+		[Test]
+		public void ReadContentAs_QNameEmptyNSResolver ()
+		{
+			XmlReader xr = XmlReader.Create (
+				new StringReader ("<doc xmlns:x='urn:foo'>x:el</doc>"));
+			xr.Read ();
+			object o = xr.ReadElementContentAs (
+				typeof (XmlQualifiedName), null);
+			// without IXmlNamespaceResolver, it still resolves
+			// x:el as valid QName.
+			Assert.IsNotNull (o, "#1");
+			XmlQualifiedName q = o as XmlQualifiedName;
+			Assert.AreEqual (new XmlQualifiedName ("el", "urn:foo"), q, "#2 : " + o.GetType ());
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void ReadContentStringOnElementFail ()
+		{
+			XmlReader xr = XmlReader.Create (new StringReader ("<a>test</a>"));
+			xr.Read ();
+			xr.ReadContentAsString ();
+		}
+
+		[Test]
+		public void ReadContentStringOnEndElement ()
+		{
+			XmlReader xr = XmlReader.Create (new StringReader ("<a>test</a>"));
+			xr.Read ();
+			xr.Read ();
+			xr.Read ();
+			Assert.AreEqual (String.Empty, xr.ReadContentAsString ()); // does not fail, unlike at Element!
+		}
+
+		[Test]
+		public void ReadContentStringOnPI ()
+		{
+			XmlReader xr = XmlReader.Create (new StringReader ("<?pi ?><a>test</a>"));
+			xr.Read ();
+			Assert.AreEqual (String.Empty, xr.ReadContentAsString ());
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))] // unlike ReadContentAsString()
+		public void ReadElementContentStringOnPI ()
+		{
+			XmlReader xr = XmlReader.Create (new StringReader ("<?pi ?><a>test</a>"));
+			xr.Read ();
+			Assert.AreEqual (XmlNodeType.ProcessingInstruction, xr.NodeType);
+			xr.ReadElementContentAsString ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlException))]
+		public void ReadElementContentStringMixedContent ()
+		{
+			XmlReader xr = XmlReader.Create (
+				new StringReader ("<doc>123<child>456</child>789</doc>"));
+			xr.Read ();
+			// "child" is regarded as an invalid node.
+			string s = xr.ReadElementContentAsString ();
+		}
+
+		[Test]
+		public void ReadContentStringMixedContent ()
+		{
+			XmlReader xr = XmlReader.Create (
+				new StringReader ("<doc>123<child>456</child>789</doc>"));
+			xr.Read ();
+			xr.Read (); // from Text "123"
+			string s = xr.ReadContentAsString ();
+			Assert.AreEqual ("123", s, "#1");
+			Assert.AreEqual (XmlNodeType.Element, xr.NodeType, "#2");
+		}
+
+		[Test]
+		public void ReadElementContentAsString ()
+		{
+			XmlTextReader r = new XmlTextReader (
+				"<root/>", XmlNodeType.Document, null);
+			r.Read ();
+			Assert.AreEqual (String.Empty, r.ReadElementContentAsString (), "#1");
+			Assert.AreEqual (XmlNodeType.None, r.NodeType, "#2");
+		}
+
+		[Test]
+		public void ReadElementContentAs ()
+		{
+			// as System.Object
+
+			XmlTextReader r = new XmlTextReader (
+				"<root/>", XmlNodeType.Document, null);
+			r.Read ();
+			Assert.AreEqual (String.Empty, r.ReadElementContentAs (typeof (object), null), "#1");
+			Assert.AreEqual (XmlNodeType.None, r.NodeType, "#2");
+
+			// regardless of its value, the return value is string.
+			r = new XmlTextReader ("<root>1</root>", XmlNodeType.Document, null);
+			r.Read ();
+			Assert.AreEqual ("1", r.ReadElementContentAs (typeof (object), null), "#3");
+			Assert.AreEqual (XmlNodeType.None, r.NodeType, "#4");
+		}
+
+		[Test]
+		public void ReadContentStringOnAttribute ()
+		{
+			string xml = @"<root id='myId'><child /></root>";
+			RunTest (xml, new TestMethod (ReadContentStringOnAttribute));
+		}
+
+		void ReadContentStringOnAttribute (XmlReader reader)
+		{
+			reader.Read ();
+			Assert.IsTrue (reader.MoveToAttribute ("id"));
+			Assert.AreEqual ("myId", reader.ReadContentAsString ());
+		}
+
+		[Test]
+		public void ReadElementContentAsStringEmpty ()
+		{
+			string xml = "<root><sample/></root>";
+			RunTest (xml, new TestMethod (ReadElementContentAsStringEmpty));
+		}
+
+		void ReadElementContentAsStringEmpty (XmlReader reader)
+		{
+			reader.MoveToContent ();
+			reader.Read ();
+			Assert.AreEqual (String.Empty, reader.ReadElementContentAsString ("sample", ""));
+			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType);
+		}
+
+		[Test]
+		public void ReadSubtreeClose ()
+		{
+			// bug #334752
+			string xml = @"<root><item-list><item id='a'/><item id='b'/></item-list></root>";
+			RunTest (xml, new TestMethod (ReadSubtreeClose));
+		}
+
+		void ReadSubtreeClose (XmlReader reader)
+		{
+			reader.ReadToFollowing ("item-list");
+			XmlReader sub = reader.ReadSubtree ();
+			sub.ReadToDescendant ("item");
+			sub.Close ();
+			Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#1");
+			Assert.AreEqual ("item-list", reader.Name, "#2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void ReadSubtreeOnNonElement ()
+		{
+			string xml = @"<x> <y/></x>";
+			XmlReader r = XmlReader.Create (new StringReader (xml));
+			r.Read (); // x
+			r.Read (); // ws
+			r.ReadSubtree ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void ReadSubtreeOnNonElement2 ()
+		{
+			string xml = @"<x> <y/></x>";
+			XmlReader r = XmlReader.Create (new StringReader (xml));
+			r.ReadSubtree ();
+		}
+
+		[Test]
+		public void ReadSubtreeEmptyElement ()
+		{
+			string xml = @"<x/>";
+			XmlReader r = XmlReader.Create (new StringReader (xml));
+			r.Read ();
+			XmlReader s = r.ReadSubtree ();
+			Assert.IsTrue (s.Read (), "#1");
+			Assert.AreEqual (XmlNodeType.Element, s.NodeType, "#2");
+			Assert.IsTrue (!s.Read (), "#3");
+			Assert.AreEqual (XmlNodeType.None, s.NodeType, "#4");
+		}
+
+		[Test]
+		public void ReadSubtreeEmptyElementWithAttribute ()
+		{
+			string xml = @"<root><x a='b'/></root>";
+			XmlReader r = XmlReader.Create (new StringReader (xml));
+			r.Read ();
+			r.Read ();
+			XmlReader r2 = r.ReadSubtree ();
+			Console.WriteLine ("X");
+			r2.Read ();
+			XmlReader r3 = r2.ReadSubtree ();
+			r2.MoveToFirstAttribute ();
+			Assert.IsTrue (!r.IsEmptyElement, "#1");
+			Assert.IsTrue (!r2.IsEmptyElement, "#2");
+			r3.Close ();
+			Assert.IsTrue (r.IsEmptyElement, "#3");
+			Assert.IsTrue (r2.IsEmptyElement, "#4");
+			r2.Close ();
+			Assert.IsTrue (r.IsEmptyElement, "#5");
+			Assert.IsTrue (r2.IsEmptyElement, "#6");
+		}
+
+		[Test]
+		public void ReadContentAsBase64 ()
+		{
+			byte[] randomData = new byte[24];
+			for (int i = 0; i < randomData.Length; i++)
+				randomData [i] = (byte) i;
+
+			string xmlString = "<?xml version=\"1.0\"?><data>" +
+			Convert.ToBase64String (randomData) + "</data>";
+			TextReader textReader = new StringReader (xmlString);
+			XmlReader xmlReader = XmlReader.Create (textReader);
+			xmlReader.ReadToFollowing ("data");
+
+			int readBytes = 0;
+			byte[] buffer = new byte [24];
+
+			xmlReader.ReadStartElement ();
+			readBytes = xmlReader.ReadContentAsBase64 (buffer, 0, buffer.Length);
+			Assert.AreEqual (24, readBytes, "#1");
+			Assert.AreEqual (0, xmlReader.ReadContentAsBase64 (buffer, 0, buffer.Length), "#2");
+			StringWriter sw = new StringWriter ();
+			foreach (byte b in buffer) sw.Write ("{0:X02}", b);
+			Assert.AreEqual ("000102030405060708090A0B0C0D0E0F1011121314151617", sw.ToString (), "#3");
+		}
+
+		[Test]
+		public void ReadContentAsBase64_2 () // bug #480066
+		{
+			StringReader readerString = new StringReader ("<root><b64>TWFu</b64><b64>TWFu</b64>\r\n\t<b64>TWFu</b64><b64>TWFu</b64></root>");
+			XmlReaderSettings settingsXml = new XmlReaderSettings ();
+			settingsXml.XmlResolver = null;
+			using (var readerXml = XmlReader.Create (readerString, settingsXml)) {
+				readerXml.MoveToContent ();
+				readerXml.Read ();
+				readerXml.ReadStartElement ("b64");
+				const int bufferLength = 1024;
+				byte [] buffer = new byte [bufferLength];
+				readerXml.ReadContentAsBase64 (buffer, 0, bufferLength);
+				Assert.AreEqual (XmlNodeType.EndElement, readerXml.NodeType, "#1");
+				readerXml.Read ();
+				Assert.AreEqual (XmlNodeType.Element, readerXml.NodeType, "#2");
+			}
+		}
+		
+		[Test]
+		public void ReadContentAsBase64_3 () // bug #543332			
+		{
+			byte [] fakeState = new byte[25];
+			byte [] fixedSizeBuffer = new byte [25];
+			byte [] readDataBuffer = new byte [25];
+			var ms = new MemoryStream ();
+			var xw = XmlWriter.Create (ms);
+			xw.WriteStartElement ("root");
+			xw.WriteBase64 (fakeState, 0, fakeState.Length);
+			xw.WriteEndElement ();
+			xw.Close ();
+			var reader = XmlReader.Create (new MemoryStream (ms.ToArray ()));
+			reader.MoveToContent ();
+			// we cannot completely trust the length read to indicate the end.
+			int bytesRead;
+			bytesRead = reader.ReadElementContentAsBase64 (fixedSizeBuffer, 0, fixedSizeBuffer.Length);
+			Assert.AreEqual (25, bytesRead, "#1");
+			Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#2");
+			bytesRead = reader.ReadElementContentAsBase64 (fixedSizeBuffer, 0, fixedSizeBuffer.Length);
+			Assert.AreEqual (0, bytesRead, "#3");
+			Assert.AreEqual (XmlNodeType.None, reader.NodeType, "#4");
+		}
+
+		[Test]
+		public void ReadElementContentAsQNameDefaultNS ()
+		{
+			var sw = new StringWriter ();
+			var xw = XmlWriter.Create (sw);
+			xw.WriteStartElement ("", "foo", "urn:foo");
+			xw.WriteValue (new XmlQualifiedName ("x", "urn:foo"));
+			xw.WriteEndElement ();
+			xw.Close ();
+			var xr = XmlReader.Create (new StringReader (sw.ToString ()));
+			xr.MoveToContent ();
+			var q = (XmlQualifiedName) xr.ReadElementContentAs (typeof (XmlQualifiedName), xr as IXmlNamespaceResolver);
+			Assert.AreEqual ("urn:foo", q.Namespace, "#1");
+		}
+
+		[Test]
+		public void ReadElementContentAsArray ()
+		{
+			var sw = new StringWriter ();
+			var xw = XmlWriter.Create (sw);
+			xw.WriteStartElement ("root");
+			xw.WriteAttributeString ("xmlns", "b", "http://www.w3.org/2000/xmlns/", "urn:bar");
+			var arr = new XmlQualifiedName [] { new XmlQualifiedName ("foo"), new XmlQualifiedName ("bar", "urn:bar") };
+			xw.WriteValue (arr);
+			xw.Close ();
+			var xr = XmlReader.Create (new StringReader (sw.ToString ()));
+			xr.MoveToContent ();
+			var ret = xr.ReadElementContentAs (typeof (XmlQualifiedName []), null) as XmlQualifiedName [];
+			Assert.IsNotNull (ret, "#1");
+			Assert.AreEqual (arr [0], ret [0], "#2");
+			Assert.AreEqual (arr [1], ret [1], "#3");
+		}
+
+		[Test]
+		public void ReadContentAs ()
+		{
+			var xr = XmlReader.Create (new StringReader ("<doc a=' 1 '/>"));
+			xr.Read ();
+			xr.MoveToAttribute ("a");
+
+			Assert.AreEqual ((Byte) 1, xr.ReadContentAs (typeof (Byte), null), "#1");
+			Assert.AreEqual ((SByte) 1, xr.ReadContentAs (typeof (SByte), null), "#2");
+			Assert.AreEqual ((Int16) 1, xr.ReadContentAs (typeof (Int16), null), "#3");
+			Assert.AreEqual ((UInt16) 1, xr.ReadContentAs (typeof (UInt16), null), "#4");
+			Assert.AreEqual ((Int32) 1, xr.ReadContentAs (typeof (Int32), null), "#5");
+			Assert.AreEqual ((UInt32) 1, xr.ReadContentAs (typeof (UInt32), null), "#6");
+			Assert.AreEqual ((Int64) 1, xr.ReadContentAs (typeof (Int64), null), "#7");
+			Assert.AreEqual ((UInt64) 1, xr.ReadContentAs (typeof (UInt64), null), "#8");
+		}
+
+#if NET_4_5
+		[Test]
+		[ExpectedException(typeof(InvalidOperationException))]
+		public void MustSetAsyncFlag ()
+		{
+			var r = XmlReader.Create (new StringReader ("<root/>"));
+			r.ReadAsync ();
+		}
+
+		Exception RunAsync (Action action)
+		{
+			var task = Task<Exception>.Run (async () => {
+				try {
+					action ();
+					return null;
+				} catch (Exception ex) {
+					return ex;
+				}
+			});
+			task.Wait ();
+			Assert.That (task.IsCompleted);
+			return task.Result;
+		}
+
+		[Test]
+		public void SimpleAsync ()
+		{
+			var xml = "<root test=\"monkey\"/>";
+			var task = Task<Exception>.Run (async () => {
+				try {
+					var s = new XmlReaderSettings ();
+					s.Async = true;
+					var r = XmlReader.Create (new StringReader (xml), s);
+
+					Assert.That (await r.ReadAsync ());
+					Assert.That (r.MoveToFirstAttribute ());
+
+					Assert.AreEqual (await r.GetValueAsync (), "monkey");
+					r.Close ();
+					return null;
+				} catch (Exception ex) {
+					return ex;
+				}
+			});
+			task.Wait ();
+			Assert.That (task.IsCompleted);
+			if (task.Result != null)
+				throw task.Result;
+		}
+#endif
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XmlUrlResolverTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XmlUrlResolverTests.cs
@@ -1,131 +1,131 @@
-//
-// System.Xml.XmlUrlResolver.cs
-//
-// Authors:
-//	Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
-//
-// (C) 2003 Atsushi Enomoto
-//
-using System;
-using System.IO;
-using System.Xml;
-using NUnit.Framework;
-#if NET_4_5
-using System.Reflection;
-#endif
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlUrlResolverTests
-	{
-		XmlUrlResolver resolver;
-
-		[SetUp]
-		public void GetReady ()
-		{
-			resolver = new XmlUrlResolver ();
-		}
-
-		[Test]
-		public void FileUri ()
-		{
-			Uri resolved = resolver.ResolveUri (null, "Test/XmlFiles/xsd/xml.xsd");
-			Assert.AreEqual ("file", resolved.Scheme);
-			Stream s = resolver.GetEntity (resolved, null, typeof (Stream)) as Stream;
-		}
-
-		[Test]
-		public void FileUri2 ()
-		{
-			Assert.AreEqual (resolver.ResolveUri (new Uri ("file://usr/local/src"), null).ToString (), "file://usr/local/src");
-			// MS.NET returns the Uri.ToString() as 
-			// file://usr/local/src, but it is apparently 
-			// incorrect in the context of Unix path.
-			Assert.AreEqual (resolver.ResolveUri (new Uri ("file:///usr/local/src"), null).ToString (), "file:///usr/local/src");
-		}
-
-		[Test]
-		public void HttpUri ()
-		{
-			Assert.AreEqual (resolver.ResolveUri (null, "http://test.xml").ToString (), "http://test.xml/");
-		}
-
-		[Test]
-		public void HttpUri2 ()
-		{
-			Assert.AreEqual (resolver.ResolveUri (new Uri ("http://go-mono.com"), null).ToString (), "http://go-mono.com/");
-		}
-
-		[Test]
-		[Category ("NotDotNet")] // It should throw ArgumentNullException.
-		[Ignore(".NET implementation does not throw ArgumentNullException.")]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void ResolveUriWithNullArgs ()
-		{
-			resolver.ResolveUri (null, null);
-			Assert.Fail ("Should be error (MS.NET throws ArgumentException here).");
-		}
-
-//		[Test] Uncomment if you want to test.
-		public void GetEntityWithNullArgs ()
-		{
-			Uri uri = new Uri ("http://www.go-mono.com/index.rss");
-			resolver.GetEntity (uri, null, null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void GetEntityWithRelativeFileUri ()
-		{
-			resolver.GetEntity (new Uri ("file.txt", UriKind.Relative), null, typeof (Stream));
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlException))]
-		public void GetEntityWithNonStreamReturnType ()
-		{
-			resolver.GetEntity (new Uri ("http://www.go-mono.com/"), null, typeof (File));
-		}
-
-		[Test] // bug #998
-		public void NullAbsoluteUriWithCustomSchemedRelativeUri ()
-		{
-			XmlResolver res = new XmlUrlResolver ();
-			var uri = res.ResolveUri (null, "view:Standard.xslt");
-			Assert.AreEqual ("view", uri.Scheme, "#1");
-			Assert.AreEqual ("Standard.xslt", uri.AbsolutePath, "#2");
-			Assert.AreEqual ("view:Standard.xslt", uri.AbsoluteUri, "#2");
-		}
-
-#if NET_4_5
-		[Test]
-		public void TestAsync ()
-		{
-			var loc = Assembly.GetExecutingAssembly ().Location;
-			Uri resolved = resolver.ResolveUri (null, loc);
-			Assert.AreEqual ("file", resolved.Scheme);
-			var task = resolver.GetEntityAsync (resolved, null, typeof (Stream));
-			Assert.IsTrue (task.Wait (3000));
-			Assert.IsTrue (task.Result is Stream);
-		}
-
-		[Test]
-		public void TestAsyncError ()
-		{
-			var loc = Assembly.GetExecutingAssembly ().Location;
-			Uri resolved = resolver.ResolveUri (null, loc);
-			Assert.AreEqual ("file", resolved.Scheme);
-			var task = resolver.GetEntityAsync (resolved, null, typeof (File));
-			try {
-				task.Wait (3000);
-				Assert.Fail ("#1");
-			} catch (Exception ex) {
-				if (ex is AggregateException)
-					ex = ((AggregateException) ex).InnerException;
-				Assert.IsTrue (ex is XmlException);
-			}
-		}
-#endif
-	}
-}
+//
+// System.Xml.XmlUrlResolver.cs
+//
+// Authors:
+//	Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
+//
+// (C) 2003 Atsushi Enomoto
+//
+using System;
+using System.IO;
+using System.Xml;
+using NUnit.Framework;
+#if NET_4_5
+using System.Reflection;
+#endif
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlUrlResolverTests
+	{
+		XmlUrlResolver resolver;
+
+		[SetUp]
+		public void GetReady ()
+		{
+			resolver = new XmlUrlResolver ();
+		}
+
+		[Test]
+		public void FileUri ()
+		{
+			Uri resolved = resolver.ResolveUri (null, "Test/XmlFiles/xsd/xml.xsd");
+			Assert.AreEqual ("file", resolved.Scheme);
+			Stream s = resolver.GetEntity (resolved, null, typeof (Stream)) as Stream;
+		}
+
+		[Test]
+		public void FileUri2 ()
+		{
+			Assert.AreEqual (resolver.ResolveUri (new Uri ("file://usr/local/src"), null).ToString (), "file://usr/local/src");
+			// MS.NET returns the Uri.ToString() as 
+			// file://usr/local/src, but it is apparently 
+			// incorrect in the context of Unix path.
+			Assert.AreEqual (resolver.ResolveUri (new Uri ("file:///usr/local/src"), null).ToString (), "file:///usr/local/src");
+		}
+
+		[Test]
+		public void HttpUri ()
+		{
+			Assert.AreEqual (resolver.ResolveUri (null, "http://test.xml").ToString (), "http://test.xml/");
+		}
+
+		[Test]
+		public void HttpUri2 ()
+		{
+			Assert.AreEqual (resolver.ResolveUri (new Uri ("http://go-mono.com"), null).ToString (), "http://go-mono.com/");
+		}
+
+		[Test]
+		[Category ("NotDotNet")] // It should throw ArgumentNullException.
+		[Ignore(".NET implementation does not throw ArgumentNullException.")]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void ResolveUriWithNullArgs ()
+		{
+			resolver.ResolveUri (null, null);
+			Assert.Fail ("Should be error (MS.NET throws ArgumentException here).");
+		}
+
+//		[Test] Uncomment if you want to test.
+		public void GetEntityWithNullArgs ()
+		{
+			Uri uri = new Uri ("http://www.go-mono.com/index.rss");
+			resolver.GetEntity (uri, null, null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void GetEntityWithRelativeFileUri ()
+		{
+			resolver.GetEntity (new Uri ("file.txt", UriKind.Relative), null, typeof (Stream));
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlException))]
+		public void GetEntityWithNonStreamReturnType ()
+		{
+			resolver.GetEntity (new Uri ("http://www.go-mono.com/"), null, typeof (File));
+		}
+
+		[Test] // bug #998
+		public void NullAbsoluteUriWithCustomSchemedRelativeUri ()
+		{
+			XmlResolver res = new XmlUrlResolver ();
+			var uri = res.ResolveUri (null, "view:Standard.xslt");
+			Assert.AreEqual ("view", uri.Scheme, "#1");
+			Assert.AreEqual ("Standard.xslt", uri.AbsolutePath, "#2");
+			Assert.AreEqual ("view:Standard.xslt", uri.AbsoluteUri, "#2");
+		}
+
+#if NET_4_5
+		[Test]
+		public void TestAsync ()
+		{
+			var loc = Assembly.GetExecutingAssembly ().Location;
+			Uri resolved = resolver.ResolveUri (null, loc);
+			Assert.AreEqual ("file", resolved.Scheme);
+			var task = resolver.GetEntityAsync (resolved, null, typeof (Stream));
+			Assert.IsTrue (task.Wait (3000));
+			Assert.IsTrue (task.Result is Stream);
+		}
+
+		[Test]
+		public void TestAsyncError ()
+		{
+			var loc = Assembly.GetExecutingAssembly ().Location;
+			Uri resolved = resolver.ResolveUri (null, loc);
+			Assert.AreEqual ("file", resolved.Scheme);
+			var task = resolver.GetEntityAsync (resolved, null, typeof (File));
+			try {
+				task.Wait (3000);
+				Assert.Fail ("#1");
+			} catch (Exception ex) {
+				if (ex is AggregateException)
+					ex = ((AggregateException) ex).InnerException;
+				Assert.IsTrue (ex is XmlException);
+			}
+		}
+#endif
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs
@@ -1,1054 +1,1054 @@
-//
-// MonoTests.System.Xml.XmlValidatingReaderTests.cs
-//
-// Author:
-//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
-//
-// (C)2003 Atsushi Enomoto
-//
-using System;
-using System.IO;
-using System.Xml;
-using System.Xml.Schema;
-using NUnit.Framework;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlValidatingReaderTests
-	{
-		public XmlValidatingReaderTests ()
-		{
-		}
-
-		XmlValidatingReader dvr;
-
-		private XmlValidatingReader PrepareXmlReader (string xml)
-		{
-			XmlReader reader = new XmlTextReader (xml, XmlNodeType.Document, null);
-//			XmlDocument doc = new XmlDocument ();
-//			doc.LoadXml (xml);
-//			XmlReader reader = new XmlNodeReader (doc);
-
-			return new XmlValidatingReader (reader);
-		}
-
-		[Test]
-		public void TestSingleElement ()
-		{
-			string intSubset = "<!ELEMENT root EMPTY>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();
-
-			xml = dtd + "<invalid />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			try {
-				dvr.Read ();	// invalid element.
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root>invalid PCDATA.</root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			try {
-				dvr.Read ();	// invalid text
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root><invalid_child /></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			try {
-				dvr.Read ();	// invalid child
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestElementContent ()
-		{
-			string intSubset = "<!ELEMENT root (foo)><!ELEMENT foo EMPTY>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			try {
-				dvr.Read ();	// root: invalid end
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root>Test.</root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			try {
-				dvr.Read ();	// invalid end
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root><foo /></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-
-			xml = dtd + "<root><bar /></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			try {
-				dvr.Read ();	// invalid element
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestMixedContent ()
-		{
-			string intSubset = "<!ELEMENT root (#PCDATA | foo)*><!ELEMENT foo EMPTY>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// end
-
-			xml = dtd + "<root>Test.</root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// valid PCDATA
-			dvr.Read ();	// endelement root
-
-			xml = dtd + "<root><foo/>Test.<foo></foo></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// valid foo
-			dvr.Read ();	// valid #PCDATA
-			dvr.Read ();	// valid foo
-			dvr.Read ();	// valid endElement foo
-			dvr.Read ();	// valid endElement root
-
-			xml = dtd + "<root>Test.<bar /></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// valid #PCDATA
-			try {
-				dvr.Read ();	// invalid element
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestSequence ()
-		{
-			string intSubset = "<!ELEMENT root (foo, bar)><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root><foo/><bar/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			dvr.Read ();	// bar
-			dvr.Read ();	// end root
-
-			xml = dtd + "<root><foo/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			try {
-				dvr.Read ();	// invalid end root
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root><bar/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			try {
-				dvr.Read ();	// invalid element bar
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestChoice ()
-		{
-			string intSubset = "<!ELEMENT root (foo|bar)><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root><foo/><bar/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			try {
-				dvr.Read ();	// invalid element bar
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root><foo/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			dvr.Read ();	// end root
-
-			xml = dtd + "<root><bar/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// bar
-			dvr.Read ();	// end root
-
-			xml = dtd + "<root><foo/>text.<bar/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			try {
-				dvr.Read ();	// invalid text
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestAny ()
-		{
-			string intSubset = "<!ELEMENT root ANY><!ELEMENT foo EMPTY>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// empty root.
-			dvr.Read ();	// end of document.
-
-			xml = dtd + "<root><foo/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			dvr.Read ();	// end root
-
-			xml = dtd + "<root><foo /><foo></foo><foo/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			dvr.Read ();	// foo
-			dvr.Read ();	// foo
-			dvr.Read ();	// end root
-
-			xml = dtd + "<root><bar /></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			try {
-				dvr.Read ();	// bar: invalid (undeclared) element
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		// MS fails to validate nondeterministic content validation.
-		public void TestNonDeterministicContent ()
-		{
-			string intSubset = "<!ELEMENT root ((foo, bar)|(foo,baz))><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY><!ELEMENT baz EMPTY>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root><foo/><bar/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			dvr.Read ();	// bar
-			dvr.Read ();	// end root
-
-			xml = dtd + "<root><foo/><baz/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// foo
-			dvr.Read ();	// end root
-		}
-
-		[Test]
-		[Category ("NotDotNet")]
-		public void TestAttributes ()
-		{
-			// simple content and attributes are required
-			string intSubset = "<!ELEMENT root (foo)><!ELEMENT foo EMPTY><!ATTLIST root foo CDATA #REQUIRED bar CDATA #IMPLIED>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root><foo/></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationType = ValidationType.DTD;
-			dvr.Read ();	// DTD
-			try {
-				dvr.Read ();	// missing attributes
-				Assert.Fail ("should be failed."); // MS.NET fails to fail this test.
-			} catch (XmlSchemaException) {
-			}
-
-			// empty element but attributes are required
-			intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA #REQUIRED bar CDATA #IMPLIED>";
-			dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			xml = dtd + "<root />";
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationType = ValidationType.DTD;
-			dvr.Read ();	// DTD
-			try {
-				dvr.Read ();	// missing attributes
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root foo='value' />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// end of document
-
-			xml = dtd + "<root foo='value' bar='2nd' />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// end of document
-
-			xml = dtd + "<root foo='value' bar='2nd' baz='3rd' />";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			try {
-				dvr.Read ();	// undeclared attribute baz
-				Assert.Fail ("should be failed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestAttributeDefaultContribution ()
-		{
-			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root />";
-
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationType = ValidationType.DTD;
-			this.TestAttributeDefaultContributionInternal (dvr);
-
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationType = ValidationType.None;
-			this.TestAttributeDefaultContributionInternal (dvr);
-		}
-
-		private void TestAttributeDefaultContributionInternal (XmlReader dvr)
-		{
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-			Assert.AreEqual (2, dvr.AttributeCount);
-			// foo
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.AreEqual ("foo-def", dvr ["foo"]);
-			Assert.IsNotNull (dvr ["bar"]);
-			Assert.AreEqual ("foo-def", dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual ("foo-def", dvr.Value);
-			// bar
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			Assert.AreEqual ("foo-def", dvr ["foo"]);
-			Assert.IsNotNull (dvr ["bar"]);
-			Assert.AreEqual ("bar-def", dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual ("bar-def", dvr.Value);
-		}
-
-		[Test]
-		public void TestExpandEntity ()
-		{
-			string intSubset = "<!ELEMENT root (#PCDATA)><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'><!ENTITY ent 'entity string'>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root foo='&ent;' bar='internal &ent; value'>&ent;</root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.EntityHandling = EntityHandling.ExpandEntities;
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.AreEqual ("entity string", dvr.Value);
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			Assert.AreEqual ("internal entity string value", dvr.Value);
-			Assert.AreEqual ("entity string", dvr.ReadString ());
-
-			// ValidationType = None
-
-			dvr = PrepareXmlReader (xml);
-			dvr.EntityHandling = EntityHandling.ExpandEntities;
-			dvr.ValidationType = ValidationType.None;
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.AreEqual ("entity string", dvr.Value);
-
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			Assert.AreEqual ("internal entity string value", dvr.Value);
-			Assert.AreEqual ("entity string", dvr.ReadString ());
-		}
-
-		[Test]
-		public void TestPreserveEntity ()
-		{
-			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'><!ENTITY ent 'entity string'>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root foo='&ent;' bar='internal &ent; value' />";
-			dvr = PrepareXmlReader (xml);
-			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			// MS BUG: it returns "entity string", however, entity should not be exanded.
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (!dvr.ReadAttributeValue ());
-
-			// bar
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual ("internal ", dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual (" value", dvr.Value);
-
-			// ValidationType = None
-
-			dvr = PrepareXmlReader (xml);
-			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			dvr.ValidationType = ValidationType.None;
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-
-			// foo
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (!dvr.ReadAttributeValue ());
-
-			// bar
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual ("internal ", dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual (" value", dvr.Value);
-		}
-
-		[Test]
-		// it used to be regarded as MS bug but it was not really.
-		public void TestPreserveEntityNotOnDotNet ()
-		{
-			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'><!ENTITY ent 'entity string'>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root foo='&ent;' bar='internal &ent; value' />";
-			dvr = PrepareXmlReader (xml);
-			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.AreEqual ("entity string", dvr.Value);
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (!dvr.ReadAttributeValue ());
-
-			// bar
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			Assert.AreEqual ("internal entity string value", dvr.Value);
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual ("internal ", dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual (" value", dvr.Value);
-
-			// ValidationType = None
-
-			dvr = PrepareXmlReader (xml);
-			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			dvr.ValidationType = ValidationType.None;
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-
-			// foo
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.AreEqual ("entity string", dvr.Value);
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (!dvr.ReadAttributeValue ());
-
-			// bar
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			Assert.AreEqual ("internal entity string value", dvr.Value);
-			//  ReadAttributeValue()
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual ("internal ", dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual ("ent", dvr.Name);
-			Assert.AreEqual (String.Empty, dvr.Value);
-			Assert.IsTrue (dvr.ReadAttributeValue ());
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (String.Empty, dvr.Name);
-			Assert.AreEqual (" value", dvr.Value);
-		}
-
-		[Test]
-		public void TestNormalization ()
-		{
-			string intSubset = "<!ELEMENT root EMPTY>"
-				+ "<!ATTLIST root foo ID #REQUIRED"
-				+ " bar NMTOKEN #IMPLIED "
-				+ " baz NMTOKENS #IMPLIED "
-				+ " quux CDATA #IMPLIED >";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root foo=' id1 ' bar='  nameToken  ' baz=' list  of\r\nname token' quux=' quuux\tquuux\t ' />";
-			dvr = PrepareXmlReader (xml);
-			((XmlTextReader) dvr.Reader).Normalization = true;
-			dvr.EntityHandling = EntityHandling.ExpandEntities;
-			dvr.Read ();	// DTD
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual ("root", dvr.Name);
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.AreEqual ("id1", dvr.Value);
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("bar", dvr.Name);
-			Assert.AreEqual ("nameToken", dvr.Value);
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("baz", dvr.Name);
-			Assert.AreEqual ("list of name token", dvr.Value);
-			Assert.IsTrue (dvr.MoveToNextAttribute ());
-			Assert.AreEqual ("quux", dvr.Name);
-			Assert.AreEqual (" quuux quuux  ", dvr.Value);
-		}
-
-		[Test]
-		public void TestValidationEvent ()
-		{
-			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<foo><bar att='val' /></foo>";
-			eventFired = false;
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationEventHandler += new ValidationEventHandler (OnInvalidityFound);
-			dvr.ValidationType = ValidationType.DTD;
-			dvr.Read ();	// DTD
-			Assert.IsTrue (dvr.Read ());	// invalid foo
-			Assert.IsTrue (eventFired);
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.IsTrue (dvr.Read ());	// invalid bar
-			Assert.AreEqual ("bar", dvr.Name);
-			Assert.IsTrue (dvr.MoveToFirstAttribute ());	// att
-			Assert.AreEqual ("att", dvr.Name);
-			Assert.IsTrue (dvr.Read ());	// invalid end foo
-			Assert.AreEqual ("foo", dvr.Name);
-			Assert.AreEqual (XmlNodeType.EndElement, dvr.NodeType);
-			Assert.IsTrue (!dvr.Read ());
-
-			// When ValidationType is None, event should not be fired,
-			eventFired = false;
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationEventHandler += new ValidationEventHandler (OnInvalidityFound);
-			dvr.ValidationType = ValidationType.None;
-			dvr.Read ();	// DTD
-			Assert.IsTrue (dvr.Read ());	// invalid foo
-			Assert.IsTrue (!eventFired);
-		}
-
-		private bool eventFired;
-		private void OnInvalidityFound (object o, ValidationEventArgs e)
-		{
-			eventFired = true;
-		}
-
-		[Test]
-		public void TestIdentityConstraints ()
-		{
-			string intSubset = "<!ELEMENT root (c)+><!ELEMENT c EMPTY><!ATTLIST root foo ID #REQUIRED>";
-			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			string xml = dtd + "<root><c foo='val' /><c foo='val'></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationType = ValidationType.DTD;
-			dvr.Read ();	// DTD
-			try {
-				dvr.Read ();	// root misses attribute foo
-				Assert.Fail ();
-			} catch (XmlSchemaException) {
-			}
-
-			intSubset = "<!ELEMENT root (c)+><!ELEMENT c EMPTY><!ATTLIST c foo ID #REQUIRED bar IDREF #IMPLIED baz IDREFS #IMPLIED>";
-			dtd = "<!DOCTYPE root [" + intSubset + "]>";
-			xml = dtd + "<root><c foo='val' /><c foo='val'></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.ValidationType = ValidationType.DTD;
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// c[1]
-			try {
-				dvr.Read ();	// c[2]
-				Assert.Fail ();
-			} catch (XmlSchemaException) {
-			}
-
-			xml = dtd + "<root><c foo='val' /><c baz='val val val 1 2 3'></root>";
-			dvr = PrepareXmlReader (xml);
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// c[1]
-			try {
-				dvr.Read ();	// c[2]
-				Assert.Fail ();
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		// Entity tests are almost copied from XmlNodeReaderTests.
-		[Test]
-		public void ResolveEntity ()
-		{
-			string ent1 = "<!ENTITY ent 'entity string'>";
-			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
-			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
-			string xml = dtd + "<root>&ent;&ent2;</root>";
-			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
-			dvr.ValidationType = ValidationType.None;
-			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// &ent;
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual (1, dvr.Depth);
-			dvr.ResolveEntity ();
-			// It is still entity reference.
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
-			Assert.AreEqual (2, dvr.Depth);
-			Assert.AreEqual ("entity string", dvr.Value);
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.EndEntity, dvr.NodeType);
-			Assert.AreEqual (1, dvr.Depth);
-			Assert.AreEqual (String.Empty, dvr.Value);
-
-			dvr.Read ();	// &ent2;
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			Assert.AreEqual (1, dvr.Depth);
-			dvr.ResolveEntity ();
-			// It is still entity reference.
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			// It now became element node.
-			dvr.Read ();
-			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
-			Assert.AreEqual (2, dvr.Depth);
-		}
-
-		[Test]
-		public void ResolveEntity2 ()
-		{
-			string ent1 = "<!ENTITY ent 'entity string'>";
-			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
-			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
-			string xml = dtd + "<root>&ent3;&ent2;</root>";
-			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
-			dvr.ValidationType = ValidationType.None;
-			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
-			dvr.Read ();	// DTD
-			dvr.Read ();	// root
-			dvr.Read ();	// &ent3;
-			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
-			// under .NET 2.0, an error is raised here.
-			// under .NET 1.1, the error is thrown on the next read.
-			try {
-				dvr.ResolveEntity ();
-				Assert.Fail ("Attempt to resolve undeclared entity should fail.");
-			} catch (XmlException) {
-			}
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlException))]
-		public void ResolveEntityWithoutDTD ()
-		{
-			string xml = "<root>&ent;&ent2;</root>";
-			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
-			dvr.Read ();	// root
-			dvr.Read ();	// &ent;
-		}
-
-		[Test]
-		public void ResolveEntityReadAttributeValue ()
-		{
-			string dtd = "<!DOCTYPE root [<!ELEMENT root (#PCDATA)*><!ATTLIST root attr CDATA #REQUIRED><!ENTITY ent 'entity string'>]>";
-			string xml = dtd + "<root attr='&ent; text'>&ent;</root>";
-			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
-			dvr.Read (); // doctype
-			dvr.Read (); // root
-			dvr.MoveToAttribute (0); // attr
-			Assert.IsTrue (dvr.ReadAttributeValue ()); // Should read expanded text
-			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType); // not EntityReference
-			Assert.AreEqual ("entity string text", dvr.Value);
-			Assert.IsTrue (!dvr.ReadAttributeValue ());
-		}
-
-		[Test]
-		public void ResolveEntitySequentialText ()
-		{
-			string xml = @"<!DOCTYPE doc [
-				<!ELEMENT doc ANY>
-				<!ELEMENT foo  ANY>
-				<!ENTITY ref1 '<![CDATA[cdata]]>test'>
-				]>
-				<doc><foo>&ref1; test </foo></doc>";
-			string refOut = "<doc><foo><![CDATA[cdata]]>test test </foo></doc>";
-
-			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
-			XmlValidatingReader r = new XmlValidatingReader (xtr);
-			r.Read ();
-			r.Read ();
-			r.Read ();
-			Assert.AreEqual (refOut, r.ReadOuterXml ());
-		}
-
-		[Test]
-		// imported testcase from sys.security which had regression.
-		public void ResolveEntityAndBaseURI ()
-		{
-			string world = Path.Combine (Path.GetTempPath (), "world.txt");
-			string dtd = Path.Combine (Path.GetTempPath (), "doc.dtd");
-			try {
-				using (TextWriter w = File.CreateText (world)) {
-					w.WriteLine ("world");
-				}
-				using (TextWriter w = File.CreateText (dtd)) {
-					w.WriteLine ("<!-- dummy -->");
-				}
-
-				string xml = String.Format ("<!DOCTYPE doc SYSTEM \"{1}\" [\n" +
-					"<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>\n" +
-					"<!ENTITY ent1 \"Hello\">\n" +
-					"<!ENTITY ent2 SYSTEM \"{0}\">\n" +
-					"<!ENTITY entExt SYSTEM \"earth.gif\" NDATA gif>\n" +
-					"<!NOTATION gif SYSTEM \"viewgif.exe\">\n" +
-					"]>\n" +
-					"<doc attrExtEnt=\"entExt\">\n" +
-					"   &ent1;, &ent2;!\n" +
-					"</doc>\n" +
-					"\n" +
-					"<!-- Let world.txt contain \"world\" (excluding the quotes) -->\n",
-					world, dtd);
-
-				XmlValidatingReader xvr =
-					new XmlValidatingReader (
-					xml, XmlNodeType.Document, null);
-				xvr.ValidationType = ValidationType.None;
-				xvr.EntityHandling =
-					EntityHandling.ExpandCharEntities;
-				XmlDocument doc = new XmlDocument ();
-				doc.Load (xvr);
-
-			} finally {
-				if (File.Exists (world))
-					File.Delete (world);
-				if (File.Exists (dtd))
-					File.Delete (dtd);
-			}
-		}
-
-		[Test]
-		//[NotWorking ("default namespace seems null, not String.Empty")]
-		public void DefaultXmlnsAttributeLookup ()
-		{
-			string xml = @"<!DOCTYPE X [
-			<!ELEMENT X (Y)+>
-			<!ENTITY baz 'urn:baz'>
-			<!ATTLIST X
-				xmlns CDATA 'urn:foo'
-				xmlns:bar CDATA 'urn:bar'
-				xmlns:baz CDATA #IMPLIED
-				dummy CDATA 'dummy'
-				baz:dummy CDATA 'dummy'>
-			<!ELEMENT Y (#PCDATA)*>
-			<!ATTLIST Y
-				xmlns CDATA #IMPLIED
-				xmlns:bar CDATA #IMPLIED>
-			]>
-			<X xmlns:baz='&baz;'><Y/><Y>text.</Y><Y xmlns='' xmlns:bar='urn:hoge'>text.</Y></X>";
-			XmlValidatingReader xvr = new XmlValidatingReader (
-				xml, XmlNodeType.Document, null);
-			xvr.Read (); // DTD
-			xvr.Read (); // whitespace
-			xvr.Read ();
-			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#1-1");
-			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#1-2");
-
-			Assert.AreEqual ("urn:baz", xvr.LookupNamespace ("baz"), "#1-a");
-			Assert.IsTrue (xvr.MoveToAttribute ("baz:dummy"), "#1-b");
-			Assert.AreEqual ("urn:baz", xvr.NamespaceURI, "#1-c");
-
-			Assert.IsTrue (xvr.MoveToAttribute ("dummy"), "#1-d");
-			Assert.AreEqual (String.Empty, xvr.NamespaceURI, "#1-e");
-
-			xvr.Read (); // first Y, empty element
-			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#2-1");
-			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#2-2");
-			xvr.Read (); // second Y, start element
-			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#3-1");
-			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#3-2");
-			xvr.Read (); // inside normal Y. Check inheritance
-			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#4-1");
-			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#4-2");
-			xvr.Read (); // second Y, end element
-			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#5-1");
-			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#5-2");
-			xvr.Read (); // third Y, suppresses default namespaces
-			Assert.AreEqual (null, xvr.LookupNamespace (String.Empty), "#6-1");
-			Assert.AreEqual ("urn:hoge", xvr.LookupNamespace ("bar"), "#6-2");
-			xvr.Read (); // inside suppressing Y. Check inheritance
-			Assert.AreEqual (null, xvr.LookupNamespace (String.Empty), "#7-1");
-			Assert.AreEqual ("urn:hoge", xvr.LookupNamespace ("bar"), "#7-2");
-			xvr.Read (); // end of suppressing element
-			Assert.AreEqual (null, xvr.LookupNamespace (String.Empty), "#8-1");
-			Assert.AreEqual ("urn:hoge", xvr.LookupNamespace ("bar"), "#8-2");
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlSchemaException))]
-		public void Bug80231 ()
-		{
-			string xml = "<!DOCTYPE file [<!ELEMENT file EMPTY><!ATTLIST file name CDATA #REQUIRED>]><file name=\"foo\" bar=\"baz\" />";
-			XmlReaderSettings settings = new XmlReaderSettings ();
-			settings.ProhibitDtd = false;
-			settings.ValidationType = ValidationType.DTD;
-			XmlReader r = XmlReader.Create (new StringReader (xml), settings);
-			while (!r.EOF)
-				r.Read ();
-		}
-
-		[Test]		
-		public void Bug501814 ()
-		{
-			string xsd = @"
-			<xs:schema id='Layout'
-				targetNamespace='foo'
-				elementFormDefault='qualified'
-				xmlns='foo'                  
-				xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-
-				<xs:element name='Layout' type='Layout' />
-
-				<xs:complexType name='Layout'>
-					<xs:group ref='AnyLayoutElement' minOccurs='0' maxOccurs='unbounded' />
-				</xs:complexType>
-
-				<xs:group name='AnyLayoutElement'>
-					<xs:choice>			
-						<xs:element name='Label' type='Label' />			
-					</xs:choice>
-				</xs:group>
-	
-				<xs:complexType name='LayoutElement' abstract='true'>
-					<xs:attribute name='id' type='xs:ID' use='optional' />
-					<xs:attribute name='visible' type='xs:boolean' use='optional' default='true' />
-				</xs:complexType>
-	
-				<xs:complexType name='Label'>
-					<xs:complexContent mixed='true'>
-						<xs:extension base='LayoutElement'>
-						<xs:attribute name='bold' type='xs:boolean' use='required'/>
-						</xs:extension>
-					</xs:complexContent>
-					</xs:complexType>
-			</xs:schema>";
-			
-			XmlDocument doc = new XmlDocument ();
-			
-			XmlSchema schema = XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null);			
-			
-			doc.LoadXml (@"
-				<Layout xmlns='foo'>
-	            <Label bold='false'>Text inside label</Label>
-                </Layout>");
-			doc.Schemas.Add (schema);
-			doc.Validate (null);
-		}
-		
-		[Test]		
-		public void Bug502168 ()
-		{
-			string xsd = @"<xs:schema id='Layout'
-				targetNamespace='foo'
-				elementFormDefault='qualified'
-				xmlns='foo'                  
-				xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-
-				<xs:element name='Layout' type='Layout' />
-				
-				 <xs:complexType name='Layout'>
-				  <xs:group ref='AnyLayoutElement' minOccurs='0' maxOccurs='unbounded' />
-				 </xs:complexType>
-				
-				 <xs:group name='AnyLayoutElement'>
-				  <xs:choice>
-				   <xs:element name='Layout' type='Layout' />   
-				   <xs:element name='ImageContainer' type='ImageContainer' />
-				   <xs:element name='VideoInstance' type='VideoInstance'/>
-				  </xs:choice>
-				 </xs:group>
-				
-				 <xs:complexType name='ImageDummy'>
-				 </xs:complexType>
-				
-				 <xs:complexType name='LayoutElement' abstract='true'>  
-				 </xs:complexType>
-				
-				 <xs:group name='AnyImageElement'>
-				  <xs:choice>
-				   <xs:element name='ImageDummy' type='ImageDummy' />
-				  </xs:choice>
-				 </xs:group>
-				
-				 <xs:complexType name='ImageContainer'>
-				  <xs:complexContent>
-				   <xs:extension base='LayoutElement'>
-				    <xs:choice minOccurs='1' maxOccurs='1'>
-				     <xs:element name='Content' type='SingleImage' minOccurs='1' maxOccurs='1'
-				nillable='false'/>
-				    </xs:choice>    
-				   </xs:extension>
-				  </xs:complexContent>
-				 </xs:complexType>
-				
-				 <xs:complexType name='SingleImage'>
-				  <xs:group ref='AnyImageElement' minOccurs='1' maxOccurs='1'/>
-				 </xs:complexType>
-				
-				 <xs:complexType name='VideoApplicationFile'>
-				  <xs:complexContent>
-				   <xs:extension base='VideoInstance'>
-				    <xs:attribute name='fileName' type='xs:string' use='optional'/>
-				   </xs:extension>
-				  </xs:complexContent>
-				 </xs:complexType>
-				
-				 <xs:complexType abstract='true' name='Video'>
-				  <xs:complexContent>
-				   <xs:extension base='LayoutElement'>
-				    <xs:group ref='AnyImageElement' minOccurs='0' maxOccurs='1'/>    
-				   </xs:extension>
-				  </xs:complexContent>
-				 </xs:complexType>
-				
-				 <xs:complexType abstract='true' name='VideoInstance'>
-				  <xs:complexContent>
-				   <xs:extension base='Video'>
-				    <xs:attribute name='name' type='xs:string' use='optional'/>
-				   </xs:extension>
-				  </xs:complexContent>
-				 </xs:complexType>
-				</xs:schema>";
-
-
-			XmlDocument doc = new XmlDocument ();
-			XmlSchema schema = XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null);
-			doc.LoadXml (@"<Layout xmlns='foo' />");
-			doc.Schemas.Add(schema);
-			doc.Validate(null);
-		}
-	}
-}
+//
+// MonoTests.System.Xml.XmlValidatingReaderTests.cs
+//
+// Author:
+//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//
+// (C)2003 Atsushi Enomoto
+//
+using System;
+using System.IO;
+using System.Xml;
+using System.Xml.Schema;
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlValidatingReaderTests
+	{
+		public XmlValidatingReaderTests ()
+		{
+		}
+
+		XmlValidatingReader dvr;
+
+		private XmlValidatingReader PrepareXmlReader (string xml)
+		{
+			XmlReader reader = new XmlTextReader (xml, XmlNodeType.Document, null);
+//			XmlDocument doc = new XmlDocument ();
+//			doc.LoadXml (xml);
+//			XmlReader reader = new XmlNodeReader (doc);
+
+			return new XmlValidatingReader (reader);
+		}
+
+		[Test]
+		public void TestSingleElement ()
+		{
+			string intSubset = "<!ELEMENT root EMPTY>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();
+
+			xml = dtd + "<invalid />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			try {
+				dvr.Read ();	// invalid element.
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root>invalid PCDATA.</root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			try {
+				dvr.Read ();	// invalid text
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root><invalid_child /></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			try {
+				dvr.Read ();	// invalid child
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestElementContent ()
+		{
+			string intSubset = "<!ELEMENT root (foo)><!ELEMENT foo EMPTY>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			try {
+				dvr.Read ();	// root: invalid end
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root>Test.</root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			try {
+				dvr.Read ();	// invalid end
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root><foo /></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+
+			xml = dtd + "<root><bar /></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			try {
+				dvr.Read ();	// invalid element
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestMixedContent ()
+		{
+			string intSubset = "<!ELEMENT root (#PCDATA | foo)*><!ELEMENT foo EMPTY>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// end
+
+			xml = dtd + "<root>Test.</root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// valid PCDATA
+			dvr.Read ();	// endelement root
+
+			xml = dtd + "<root><foo/>Test.<foo></foo></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// valid foo
+			dvr.Read ();	// valid #PCDATA
+			dvr.Read ();	// valid foo
+			dvr.Read ();	// valid endElement foo
+			dvr.Read ();	// valid endElement root
+
+			xml = dtd + "<root>Test.<bar /></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// valid #PCDATA
+			try {
+				dvr.Read ();	// invalid element
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestSequence ()
+		{
+			string intSubset = "<!ELEMENT root (foo, bar)><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root><foo/><bar/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			dvr.Read ();	// bar
+			dvr.Read ();	// end root
+
+			xml = dtd + "<root><foo/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			try {
+				dvr.Read ();	// invalid end root
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root><bar/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			try {
+				dvr.Read ();	// invalid element bar
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestChoice ()
+		{
+			string intSubset = "<!ELEMENT root (foo|bar)><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root><foo/><bar/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			try {
+				dvr.Read ();	// invalid element bar
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root><foo/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			dvr.Read ();	// end root
+
+			xml = dtd + "<root><bar/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// bar
+			dvr.Read ();	// end root
+
+			xml = dtd + "<root><foo/>text.<bar/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			try {
+				dvr.Read ();	// invalid text
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestAny ()
+		{
+			string intSubset = "<!ELEMENT root ANY><!ELEMENT foo EMPTY>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// empty root.
+			dvr.Read ();	// end of document.
+
+			xml = dtd + "<root><foo/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			dvr.Read ();	// end root
+
+			xml = dtd + "<root><foo /><foo></foo><foo/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			dvr.Read ();	// foo
+			dvr.Read ();	// foo
+			dvr.Read ();	// end root
+
+			xml = dtd + "<root><bar /></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			try {
+				dvr.Read ();	// bar: invalid (undeclared) element
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		// MS fails to validate nondeterministic content validation.
+		public void TestNonDeterministicContent ()
+		{
+			string intSubset = "<!ELEMENT root ((foo, bar)|(foo,baz))><!ELEMENT foo EMPTY><!ELEMENT bar EMPTY><!ELEMENT baz EMPTY>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root><foo/><bar/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			dvr.Read ();	// bar
+			dvr.Read ();	// end root
+
+			xml = dtd + "<root><foo/><baz/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// foo
+			dvr.Read ();	// end root
+		}
+
+		[Test]
+		[Category ("NotDotNet")]
+		public void TestAttributes ()
+		{
+			// simple content and attributes are required
+			string intSubset = "<!ELEMENT root (foo)><!ELEMENT foo EMPTY><!ATTLIST root foo CDATA #REQUIRED bar CDATA #IMPLIED>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root><foo/></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationType = ValidationType.DTD;
+			dvr.Read ();	// DTD
+			try {
+				dvr.Read ();	// missing attributes
+				Assert.Fail ("should be failed."); // MS.NET fails to fail this test.
+			} catch (XmlSchemaException) {
+			}
+
+			// empty element but attributes are required
+			intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA #REQUIRED bar CDATA #IMPLIED>";
+			dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			xml = dtd + "<root />";
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationType = ValidationType.DTD;
+			dvr.Read ();	// DTD
+			try {
+				dvr.Read ();	// missing attributes
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root foo='value' />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// end of document
+
+			xml = dtd + "<root foo='value' bar='2nd' />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// end of document
+
+			xml = dtd + "<root foo='value' bar='2nd' baz='3rd' />";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			try {
+				dvr.Read ();	// undeclared attribute baz
+				Assert.Fail ("should be failed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestAttributeDefaultContribution ()
+		{
+			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root />";
+
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationType = ValidationType.DTD;
+			this.TestAttributeDefaultContributionInternal (dvr);
+
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationType = ValidationType.None;
+			this.TestAttributeDefaultContributionInternal (dvr);
+		}
+
+		private void TestAttributeDefaultContributionInternal (XmlReader dvr)
+		{
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+			Assert.AreEqual (2, dvr.AttributeCount);
+			// foo
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.AreEqual ("foo-def", dvr ["foo"]);
+			Assert.IsNotNull (dvr ["bar"]);
+			Assert.AreEqual ("foo-def", dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual ("foo-def", dvr.Value);
+			// bar
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			Assert.AreEqual ("foo-def", dvr ["foo"]);
+			Assert.IsNotNull (dvr ["bar"]);
+			Assert.AreEqual ("bar-def", dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual ("bar-def", dvr.Value);
+		}
+
+		[Test]
+		public void TestExpandEntity ()
+		{
+			string intSubset = "<!ELEMENT root (#PCDATA)><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'><!ENTITY ent 'entity string'>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root foo='&ent;' bar='internal &ent; value'>&ent;</root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.EntityHandling = EntityHandling.ExpandEntities;
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.AreEqual ("entity string", dvr.Value);
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			Assert.AreEqual ("internal entity string value", dvr.Value);
+			Assert.AreEqual ("entity string", dvr.ReadString ());
+
+			// ValidationType = None
+
+			dvr = PrepareXmlReader (xml);
+			dvr.EntityHandling = EntityHandling.ExpandEntities;
+			dvr.ValidationType = ValidationType.None;
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.AreEqual ("entity string", dvr.Value);
+
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			Assert.AreEqual ("internal entity string value", dvr.Value);
+			Assert.AreEqual ("entity string", dvr.ReadString ());
+		}
+
+		[Test]
+		public void TestPreserveEntity ()
+		{
+			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'><!ENTITY ent 'entity string'>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root foo='&ent;' bar='internal &ent; value' />";
+			dvr = PrepareXmlReader (xml);
+			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			// MS BUG: it returns "entity string", however, entity should not be exanded.
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (!dvr.ReadAttributeValue ());
+
+			// bar
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual ("internal ", dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual (" value", dvr.Value);
+
+			// ValidationType = None
+
+			dvr = PrepareXmlReader (xml);
+			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			dvr.ValidationType = ValidationType.None;
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+
+			// foo
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (!dvr.ReadAttributeValue ());
+
+			// bar
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual ("internal ", dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual (" value", dvr.Value);
+		}
+
+		[Test]
+		// it used to be regarded as MS bug but it was not really.
+		public void TestPreserveEntityNotOnDotNet ()
+		{
+			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'><!ENTITY ent 'entity string'>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root foo='&ent;' bar='internal &ent; value' />";
+			dvr = PrepareXmlReader (xml);
+			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.AreEqual ("entity string", dvr.Value);
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (!dvr.ReadAttributeValue ());
+
+			// bar
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			Assert.AreEqual ("internal entity string value", dvr.Value);
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual ("internal ", dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual (" value", dvr.Value);
+
+			// ValidationType = None
+
+			dvr = PrepareXmlReader (xml);
+			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			dvr.ValidationType = ValidationType.None;
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+
+			// foo
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.AreEqual ("entity string", dvr.Value);
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (!dvr.ReadAttributeValue ());
+
+			// bar
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			Assert.AreEqual ("internal entity string value", dvr.Value);
+			//  ReadAttributeValue()
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual ("internal ", dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual ("ent", dvr.Name);
+			Assert.AreEqual (String.Empty, dvr.Value);
+			Assert.IsTrue (dvr.ReadAttributeValue ());
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (String.Empty, dvr.Name);
+			Assert.AreEqual (" value", dvr.Value);
+		}
+
+		[Test]
+		public void TestNormalization ()
+		{
+			string intSubset = "<!ELEMENT root EMPTY>"
+				+ "<!ATTLIST root foo ID #REQUIRED"
+				+ " bar NMTOKEN #IMPLIED "
+				+ " baz NMTOKENS #IMPLIED "
+				+ " quux CDATA #IMPLIED >";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root foo=' id1 ' bar='  nameToken  ' baz=' list  of\r\nname token' quux=' quuux\tquuux\t ' />";
+			dvr = PrepareXmlReader (xml);
+			((XmlTextReader) dvr.Reader).Normalization = true;
+			dvr.EntityHandling = EntityHandling.ExpandEntities;
+			dvr.Read ();	// DTD
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual ("root", dvr.Name);
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.AreEqual ("id1", dvr.Value);
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("bar", dvr.Name);
+			Assert.AreEqual ("nameToken", dvr.Value);
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("baz", dvr.Name);
+			Assert.AreEqual ("list of name token", dvr.Value);
+			Assert.IsTrue (dvr.MoveToNextAttribute ());
+			Assert.AreEqual ("quux", dvr.Name);
+			Assert.AreEqual (" quuux quuux  ", dvr.Value);
+		}
+
+		[Test]
+		public void TestValidationEvent ()
+		{
+			string intSubset = "<!ELEMENT root EMPTY><!ATTLIST root foo CDATA 'foo-def' bar CDATA 'bar-def'>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<foo><bar att='val' /></foo>";
+			eventFired = false;
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationEventHandler += new ValidationEventHandler (OnInvalidityFound);
+			dvr.ValidationType = ValidationType.DTD;
+			dvr.Read ();	// DTD
+			Assert.IsTrue (dvr.Read ());	// invalid foo
+			Assert.IsTrue (eventFired);
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.IsTrue (dvr.Read ());	// invalid bar
+			Assert.AreEqual ("bar", dvr.Name);
+			Assert.IsTrue (dvr.MoveToFirstAttribute ());	// att
+			Assert.AreEqual ("att", dvr.Name);
+			Assert.IsTrue (dvr.Read ());	// invalid end foo
+			Assert.AreEqual ("foo", dvr.Name);
+			Assert.AreEqual (XmlNodeType.EndElement, dvr.NodeType);
+			Assert.IsTrue (!dvr.Read ());
+
+			// When ValidationType is None, event should not be fired,
+			eventFired = false;
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationEventHandler += new ValidationEventHandler (OnInvalidityFound);
+			dvr.ValidationType = ValidationType.None;
+			dvr.Read ();	// DTD
+			Assert.IsTrue (dvr.Read ());	// invalid foo
+			Assert.IsTrue (!eventFired);
+		}
+
+		private bool eventFired;
+		private void OnInvalidityFound (object o, ValidationEventArgs e)
+		{
+			eventFired = true;
+		}
+
+		[Test]
+		public void TestIdentityConstraints ()
+		{
+			string intSubset = "<!ELEMENT root (c)+><!ELEMENT c EMPTY><!ATTLIST root foo ID #REQUIRED>";
+			string dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			string xml = dtd + "<root><c foo='val' /><c foo='val'></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationType = ValidationType.DTD;
+			dvr.Read ();	// DTD
+			try {
+				dvr.Read ();	// root misses attribute foo
+				Assert.Fail ();
+			} catch (XmlSchemaException) {
+			}
+
+			intSubset = "<!ELEMENT root (c)+><!ELEMENT c EMPTY><!ATTLIST c foo ID #REQUIRED bar IDREF #IMPLIED baz IDREFS #IMPLIED>";
+			dtd = "<!DOCTYPE root [" + intSubset + "]>";
+			xml = dtd + "<root><c foo='val' /><c foo='val'></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.ValidationType = ValidationType.DTD;
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// c[1]
+			try {
+				dvr.Read ();	// c[2]
+				Assert.Fail ();
+			} catch (XmlSchemaException) {
+			}
+
+			xml = dtd + "<root><c foo='val' /><c baz='val val val 1 2 3'></root>";
+			dvr = PrepareXmlReader (xml);
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// c[1]
+			try {
+				dvr.Read ();	// c[2]
+				Assert.Fail ();
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		// Entity tests are almost copied from XmlNodeReaderTests.
+		[Test]
+		public void ResolveEntity ()
+		{
+			string ent1 = "<!ENTITY ent 'entity string'>";
+			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
+			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
+			string xml = dtd + "<root>&ent;&ent2;</root>";
+			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+			dvr.ValidationType = ValidationType.None;
+			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// &ent;
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual (1, dvr.Depth);
+			dvr.ResolveEntity ();
+			// It is still entity reference.
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType);
+			Assert.AreEqual (2, dvr.Depth);
+			Assert.AreEqual ("entity string", dvr.Value);
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.EndEntity, dvr.NodeType);
+			Assert.AreEqual (1, dvr.Depth);
+			Assert.AreEqual (String.Empty, dvr.Value);
+
+			dvr.Read ();	// &ent2;
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			Assert.AreEqual (1, dvr.Depth);
+			dvr.ResolveEntity ();
+			// It is still entity reference.
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			// It now became element node.
+			dvr.Read ();
+			Assert.AreEqual (XmlNodeType.Element, dvr.NodeType);
+			Assert.AreEqual (2, dvr.Depth);
+		}
+
+		[Test]
+		public void ResolveEntity2 ()
+		{
+			string ent1 = "<!ENTITY ent 'entity string'>";
+			string ent2 = "<!ENTITY ent2 '<foo/><foo/>'>]>";
+			string dtd = "<!DOCTYPE root[<!ELEMENT root (#PCDATA|foo)*>" + ent1 + ent2;
+			string xml = dtd + "<root>&ent3;&ent2;</root>";
+			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+			dvr.ValidationType = ValidationType.None;
+			dvr.EntityHandling = EntityHandling.ExpandCharEntities;
+			dvr.Read ();	// DTD
+			dvr.Read ();	// root
+			dvr.Read ();	// &ent3;
+			Assert.AreEqual (XmlNodeType.EntityReference, dvr.NodeType);
+			// under .NET 2.0, an error is raised here.
+			// under .NET 1.1, the error is thrown on the next read.
+			try {
+				dvr.ResolveEntity ();
+				Assert.Fail ("Attempt to resolve undeclared entity should fail.");
+			} catch (XmlException) {
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlException))]
+		public void ResolveEntityWithoutDTD ()
+		{
+			string xml = "<root>&ent;&ent2;</root>";
+			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+			dvr.Read ();	// root
+			dvr.Read ();	// &ent;
+		}
+
+		[Test]
+		public void ResolveEntityReadAttributeValue ()
+		{
+			string dtd = "<!DOCTYPE root [<!ELEMENT root (#PCDATA)*><!ATTLIST root attr CDATA #REQUIRED><!ENTITY ent 'entity string'>]>";
+			string xml = dtd + "<root attr='&ent; text'>&ent;</root>";
+			dvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+			dvr.Read (); // doctype
+			dvr.Read (); // root
+			dvr.MoveToAttribute (0); // attr
+			Assert.IsTrue (dvr.ReadAttributeValue ()); // Should read expanded text
+			Assert.AreEqual (XmlNodeType.Text, dvr.NodeType); // not EntityReference
+			Assert.AreEqual ("entity string text", dvr.Value);
+			Assert.IsTrue (!dvr.ReadAttributeValue ());
+		}
+
+		[Test]
+		public void ResolveEntitySequentialText ()
+		{
+			string xml = @"<!DOCTYPE doc [
+				<!ELEMENT doc ANY>
+				<!ELEMENT foo  ANY>
+				<!ENTITY ref1 '<![CDATA[cdata]]>test'>
+				]>
+				<doc><foo>&ref1; test </foo></doc>";
+			string refOut = "<doc><foo><![CDATA[cdata]]>test test </foo></doc>";
+
+			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+			XmlValidatingReader r = new XmlValidatingReader (xtr);
+			r.Read ();
+			r.Read ();
+			r.Read ();
+			Assert.AreEqual (refOut, r.ReadOuterXml ());
+		}
+
+		[Test]
+		// imported testcase from sys.security which had regression.
+		public void ResolveEntityAndBaseURI ()
+		{
+			string world = Path.Combine (Path.GetTempPath (), "world.txt");
+			string dtd = Path.Combine (Path.GetTempPath (), "doc.dtd");
+			try {
+				using (TextWriter w = File.CreateText (world)) {
+					w.WriteLine ("world");
+				}
+				using (TextWriter w = File.CreateText (dtd)) {
+					w.WriteLine ("<!-- dummy -->");
+				}
+
+				string xml = String.Format ("<!DOCTYPE doc SYSTEM \"{1}\" [\n" +
+					"<!ATTLIST doc attrExtEnt ENTITY #IMPLIED>\n" +
+					"<!ENTITY ent1 \"Hello\">\n" +
+					"<!ENTITY ent2 SYSTEM \"{0}\">\n" +
+					"<!ENTITY entExt SYSTEM \"earth.gif\" NDATA gif>\n" +
+					"<!NOTATION gif SYSTEM \"viewgif.exe\">\n" +
+					"]>\n" +
+					"<doc attrExtEnt=\"entExt\">\n" +
+					"   &ent1;, &ent2;!\n" +
+					"</doc>\n" +
+					"\n" +
+					"<!-- Let world.txt contain \"world\" (excluding the quotes) -->\n",
+					world, dtd);
+
+				XmlValidatingReader xvr =
+					new XmlValidatingReader (
+					xml, XmlNodeType.Document, null);
+				xvr.ValidationType = ValidationType.None;
+				xvr.EntityHandling =
+					EntityHandling.ExpandCharEntities;
+				XmlDocument doc = new XmlDocument ();
+				doc.Load (xvr);
+
+			} finally {
+				if (File.Exists (world))
+					File.Delete (world);
+				if (File.Exists (dtd))
+					File.Delete (dtd);
+			}
+		}
+
+		[Test]
+		//[NotWorking ("default namespace seems null, not String.Empty")]
+		public void DefaultXmlnsAttributeLookup ()
+		{
+			string xml = @"<!DOCTYPE X [
+			<!ELEMENT X (Y)+>
+			<!ENTITY baz 'urn:baz'>
+			<!ATTLIST X
+				xmlns CDATA 'urn:foo'
+				xmlns:bar CDATA 'urn:bar'
+				xmlns:baz CDATA #IMPLIED
+				dummy CDATA 'dummy'
+				baz:dummy CDATA 'dummy'>
+			<!ELEMENT Y (#PCDATA)*>
+			<!ATTLIST Y
+				xmlns CDATA #IMPLIED
+				xmlns:bar CDATA #IMPLIED>
+			]>
+			<X xmlns:baz='&baz;'><Y/><Y>text.</Y><Y xmlns='' xmlns:bar='urn:hoge'>text.</Y></X>";
+			XmlValidatingReader xvr = new XmlValidatingReader (
+				xml, XmlNodeType.Document, null);
+			xvr.Read (); // DTD
+			xvr.Read (); // whitespace
+			xvr.Read ();
+			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#1-1");
+			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#1-2");
+
+			Assert.AreEqual ("urn:baz", xvr.LookupNamespace ("baz"), "#1-a");
+			Assert.IsTrue (xvr.MoveToAttribute ("baz:dummy"), "#1-b");
+			Assert.AreEqual ("urn:baz", xvr.NamespaceURI, "#1-c");
+
+			Assert.IsTrue (xvr.MoveToAttribute ("dummy"), "#1-d");
+			Assert.AreEqual (String.Empty, xvr.NamespaceURI, "#1-e");
+
+			xvr.Read (); // first Y, empty element
+			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#2-1");
+			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#2-2");
+			xvr.Read (); // second Y, start element
+			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#3-1");
+			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#3-2");
+			xvr.Read (); // inside normal Y. Check inheritance
+			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#4-1");
+			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#4-2");
+			xvr.Read (); // second Y, end element
+			Assert.AreEqual ("urn:foo", xvr.LookupNamespace (String.Empty), "#5-1");
+			Assert.AreEqual ("urn:bar", xvr.LookupNamespace ("bar"), "#5-2");
+			xvr.Read (); // third Y, suppresses default namespaces
+			Assert.AreEqual (null, xvr.LookupNamespace (String.Empty), "#6-1");
+			Assert.AreEqual ("urn:hoge", xvr.LookupNamespace ("bar"), "#6-2");
+			xvr.Read (); // inside suppressing Y. Check inheritance
+			Assert.AreEqual (null, xvr.LookupNamespace (String.Empty), "#7-1");
+			Assert.AreEqual ("urn:hoge", xvr.LookupNamespace ("bar"), "#7-2");
+			xvr.Read (); // end of suppressing element
+			Assert.AreEqual (null, xvr.LookupNamespace (String.Empty), "#8-1");
+			Assert.AreEqual ("urn:hoge", xvr.LookupNamespace ("bar"), "#8-2");
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlSchemaException))]
+		public void Bug80231 ()
+		{
+			string xml = "<!DOCTYPE file [<!ELEMENT file EMPTY><!ATTLIST file name CDATA #REQUIRED>]><file name=\"foo\" bar=\"baz\" />";
+			XmlReaderSettings settings = new XmlReaderSettings ();
+			settings.ProhibitDtd = false;
+			settings.ValidationType = ValidationType.DTD;
+			XmlReader r = XmlReader.Create (new StringReader (xml), settings);
+			while (!r.EOF)
+				r.Read ();
+		}
+
+		[Test]		
+		public void Bug501814 ()
+		{
+			string xsd = @"
+			<xs:schema id='Layout'
+				targetNamespace='foo'
+				elementFormDefault='qualified'
+				xmlns='foo'                  
+				xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+
+				<xs:element name='Layout' type='Layout' />
+
+				<xs:complexType name='Layout'>
+					<xs:group ref='AnyLayoutElement' minOccurs='0' maxOccurs='unbounded' />
+				</xs:complexType>
+
+				<xs:group name='AnyLayoutElement'>
+					<xs:choice>			
+						<xs:element name='Label' type='Label' />			
+					</xs:choice>
+				</xs:group>
+	
+				<xs:complexType name='LayoutElement' abstract='true'>
+					<xs:attribute name='id' type='xs:ID' use='optional' />
+					<xs:attribute name='visible' type='xs:boolean' use='optional' default='true' />
+				</xs:complexType>
+	
+				<xs:complexType name='Label'>
+					<xs:complexContent mixed='true'>
+						<xs:extension base='LayoutElement'>
+						<xs:attribute name='bold' type='xs:boolean' use='required'/>
+						</xs:extension>
+					</xs:complexContent>
+					</xs:complexType>
+			</xs:schema>";
+			
+			XmlDocument doc = new XmlDocument ();
+			
+			XmlSchema schema = XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null);			
+			
+			doc.LoadXml (@"
+				<Layout xmlns='foo'>
+	            <Label bold='false'>Text inside label</Label>
+                </Layout>");
+			doc.Schemas.Add (schema);
+			doc.Validate (null);
+		}
+		
+		[Test]		
+		public void Bug502168 ()
+		{
+			string xsd = @"<xs:schema id='Layout'
+				targetNamespace='foo'
+				elementFormDefault='qualified'
+				xmlns='foo'                  
+				xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+
+				<xs:element name='Layout' type='Layout' />
+				
+				 <xs:complexType name='Layout'>
+				  <xs:group ref='AnyLayoutElement' minOccurs='0' maxOccurs='unbounded' />
+				 </xs:complexType>
+				
+				 <xs:group name='AnyLayoutElement'>
+				  <xs:choice>
+				   <xs:element name='Layout' type='Layout' />   
+				   <xs:element name='ImageContainer' type='ImageContainer' />
+				   <xs:element name='VideoInstance' type='VideoInstance'/>
+				  </xs:choice>
+				 </xs:group>
+				
+				 <xs:complexType name='ImageDummy'>
+				 </xs:complexType>
+				
+				 <xs:complexType name='LayoutElement' abstract='true'>  
+				 </xs:complexType>
+				
+				 <xs:group name='AnyImageElement'>
+				  <xs:choice>
+				   <xs:element name='ImageDummy' type='ImageDummy' />
+				  </xs:choice>
+				 </xs:group>
+				
+				 <xs:complexType name='ImageContainer'>
+				  <xs:complexContent>
+				   <xs:extension base='LayoutElement'>
+				    <xs:choice minOccurs='1' maxOccurs='1'>
+				     <xs:element name='Content' type='SingleImage' minOccurs='1' maxOccurs='1'
+				nillable='false'/>
+				    </xs:choice>    
+				   </xs:extension>
+				  </xs:complexContent>
+				 </xs:complexType>
+				
+				 <xs:complexType name='SingleImage'>
+				  <xs:group ref='AnyImageElement' minOccurs='1' maxOccurs='1'/>
+				 </xs:complexType>
+				
+				 <xs:complexType name='VideoApplicationFile'>
+				  <xs:complexContent>
+				   <xs:extension base='VideoInstance'>
+				    <xs:attribute name='fileName' type='xs:string' use='optional'/>
+				   </xs:extension>
+				  </xs:complexContent>
+				 </xs:complexType>
+				
+				 <xs:complexType abstract='true' name='Video'>
+				  <xs:complexContent>
+				   <xs:extension base='LayoutElement'>
+				    <xs:group ref='AnyImageElement' minOccurs='0' maxOccurs='1'/>    
+				   </xs:extension>
+				  </xs:complexContent>
+				 </xs:complexType>
+				
+				 <xs:complexType abstract='true' name='VideoInstance'>
+				  <xs:complexContent>
+				   <xs:extension base='Video'>
+				    <xs:attribute name='name' type='xs:string' use='optional'/>
+				   </xs:extension>
+				  </xs:complexContent>
+				 </xs:complexType>
+				</xs:schema>";
+
+
+			XmlDocument doc = new XmlDocument ();
+			XmlSchema schema = XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null);
+			doc.LoadXml (@"<Layout xmlns='foo' />");
+			doc.Schemas.Add(schema);
+			doc.Validate(null);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XmlWriterTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XmlWriterTests.cs
@@ -1,982 +1,982 @@
-//
-// System.Xml.XmlTextWriterTests
-//
-// Authors:
-//   Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
-//   Martin Willemoes Hansen <mwh@sysrq.dk>
-//
-// (C) 2003 Atsushi Enomoto
-// (C) 2003 Martin Willemoes Hansen
-//
-//
-//  This class mainly checks inheritance and behaviors of XmlWriter.
-//
-
-using System;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Xml.XPath;
-
-using NUnit.Framework;
-
-using AssertType = NUnit.Framework.Assert;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XmlWriterTests
-	{
-		StringWriter writer;
-		XmlTextWriter xtw;
-
-		[SetUp]
-		public void SetUp ()
-		{
-			writer = new StringWriter ();
-			xtw = new XmlTextWriter (writer);
-		}
-
-		[Test]
-		public void WriteNodeFullDocument ()
-		{
-			string xml = "<?xml version='1.0'?><root />";
-			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
-			xtw.WriteNode (xtr, false);
-			Assert.AreEqual (xml, writer.ToString ());
-
-			writer.GetStringBuilder ().Length = 0;
-
-			// With encoding
-			xml = "<?xml version='1.0' encoding='iso-2022-jp'?><root />";
-			xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
-			xtw.WriteNode (xtr, false);
-			Assert.AreEqual (xml, writer.ToString ());
-			xtr.Close ();
-		}
-
-		[Test]
-		public void WriteNodeXmlDecl ()
-		{
-			string xml = "<?xml version='1.0'?><root />";
-			StringReader sr = new StringReader (xml);
-			XmlTextReader xtr = new XmlTextReader (sr);
-			xtr.Read ();
-			xtw.WriteNode (xtr, false);
-			Assert.AreEqual ("<?xml version='1.0'?>",
-				 writer.ToString ());
-			xtr.Close ();
-		}
-
-		[Test]
-		public void WriteNodeEmptyElement ()
-		{
-			string xml = "<root attr='value' attr2='value' />";
-			StringReader sr = new StringReader (xml);
-			XmlTextReader xtr = new XmlTextReader (sr);
-			xtw.WriteNode (xtr, false);
-			Assert.AreEqual (xml.Replace ("'", "\""),
-				writer.ToString ());
-			xtr.Close ();
-		}
-
-		[Test]
-		public void WriteNodeNonEmptyElement ()
-		{
-			string xml = @"<foo><bar></bar></foo>";
-			xtw.WriteNode (new XmlTextReader (xml, XmlNodeType.Document, null), false);
-			Assert.AreEqual (xml, writer.ToString ());
-		}
-
-		[Test]
-		public void WriteNodeSingleContentElement ()
-		{
-			string xml = "<root attr='value' attr2='value'><foo /></root>";
-			StringReader sr = new StringReader (xml);
-			XmlTextReader xtr = new XmlTextReader (sr);
-			xtw.WriteNode (xtr, false);
-			Assert.AreEqual (xml.Replace ("'", "\""),
-				writer.ToString ());
-			xtr.Close ();
-		}
-
-		[Test]
-		public void WriteNodeNone ()
-		{
-			XmlTextReader xtr = new XmlTextReader ("", XmlNodeType.Element, null);
-			xtr.Read ();
-			xtw.WriteNode (xtr, false); // does not report any errors
-			xtr.Close ();
-		}
-
-		[Test]
-		[Category ("NotDotNet")] // enbugged in 2.0
-		[Ignore ("Bug in Microsoft referencesource")]
-		[ExpectedException (typeof (XmlException))]
-		public void WriteNodeError ()
-		{
-			XmlTextReader xtr = new XmlTextReader ("<root>", XmlNodeType.Document, null);
-			xtr.Read ();
-			try {
-				xtr.Read ();
-			} catch {
-			}
-			XmlTextWriter xtw = new XmlTextWriter (new StringWriter ());
-			xtw.WriteNode (xtr, false);
-		}
-
-		[Test]
-		public void WriteSurrogateCharEntity ()
-		{
-			xtw.WriteSurrogateCharEntity ('\udfff', '\udb00');
-			Assert.AreEqual ("&#xD03FF;", writer.ToString ());
-
-			try {
-				xtw.WriteSurrogateCharEntity ('\ud800', '\udc00');
-				Assert.Fail ();
-			} catch {
-			}
-			try {
-				xtw.WriteSurrogateCharEntity ('\udbff', '\ud800');
-				Assert.Fail ();
-			} catch {
-			}
-			try {
-				xtw.WriteSurrogateCharEntity ('\ue000', '\ud800');
-				Assert.Fail ();
-			} catch {
-			}
-			try {
-				xtw.WriteSurrogateCharEntity ('\udfff', '\udc00');
-				Assert.Fail ();
-			} catch {
-			}
-		}
-
-		// MS.NET's not-overriden XmlWriter.WriteStartElement(name)
-		// invokes WriteStartElement(null, name, null). 
-		// WriteStartElement(name, ns) invokes (null, name, ns), too.
-		[Test]
-		public void StartElement ()
-		{
-			StartElementTestWriter xw = new StartElementTestWriter ();
-			xw.WriteStartDocument ();
-			xw.WriteStartElement ("test");
-			Assert.IsNull (xw.NS, "StartElementOverride.NS");
-			Assert.IsNull (xw.Prefix, "StartElementOverride.Prefix");
-			xw.NS = String.Empty;
-			xw.Prefix = String.Empty;
-			xw.WriteStartElement ("test", "urn:hoge");
-			Assert.AreEqual ("urn:hoge", xw.NS, "StartElementOverride.NS");
-			Assert.IsNull (null, xw.Prefix, "StartElementOverride.Prefix");
-		}
-		
-		class StartElementTestWriter : DefaultXmlWriter
-		{
-			public StartElementTestWriter () : base () {}
-			public string NS = String.Empty;
-			public string Prefix = String.Empty;
-
-			public override void WriteStartElement (string prefix, string localName, string ns)
-			{
-				this.NS = ns;
-				this.Prefix = prefix;
-			}
-		}
-
-		[Test]
-		public void WriteAttributes ()
-		{
-			string xml = "<root><test a='b' c='d' /><b /></root>";
-			XmlTextReader xtr = new XmlTextReader (xml,
-				XmlNodeType.Document, null);
-			xtw.QuoteChar = '\'';
-			xtr.Read ();
-			xtw.WriteStartElement ("root"); // <root
-			xtr.Read ();
-			xtw.WriteStartElement ("test"); // ><test
-			xtw.WriteAttributes (xtr, false); // a='b' c='d'
-			Assert.AreEqual (XmlNodeType.Element, xtr.NodeType);
-			xtw.WriteEndElement (); // />
-			xtw.WriteStartElement ("b"); // <b
-			xtw.WriteEndElement (); // />
-			xtw.WriteEndElement (); // </root>
-			xtw.Close ();
-			Assert.AreEqual (xml, writer.ToString ());
-		}
-
-		[Test]
-		public void Create_File ()
-		{
-			string file = Path.GetTempFileName ();
-			XmlWriter writer = XmlWriter.Create (file);
-			Assert.IsNotNull (writer.Settings, "#A1");
-			//Assert.IsTrue (writer.Settings.CloseOutput, "#A2");
-			writer.Close ();
-			File.Delete (file);
-
-			XmlWriterSettings settings = new XmlWriterSettings ();
-			settings.CloseOutput = true;
-			writer = XmlWriter.Create (file, settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
-			Assert.IsTrue (settings.CloseOutput, "#B2");
-			writer.Close ();
-			File.Delete (file);
-
-			writer = XmlWriter.Create (file, (XmlWriterSettings) null);
-			Assert.IsNotNull (writer.Settings, "#C1");
-			//Assert.IsTrue (writer.Settings.CloseOutput, "#C2");
-			writer.Close ();
-			File.Delete (file);
-
-			settings = new XmlWriterSettings ();
-			writer = XmlWriter.Create (file, settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#D1");
-			//Assert.IsTrue (writer.Settings.CloseOutput, "#D2");
-			writer.Close ();
-			File.Delete (file);
-
-			writer = XmlWriter.Create (file);
-			Assert.IsNotNull (writer.Settings, "#E1");
-			//Assert.IsTrue (writer.Settings.CloseOutput, "#E2");
-			writer.Close ();
-			File.Delete (file);
-		}
-
-		[Test]
-		public void Create_Stream ()
-		{
-			MemoryStream ms = new MemoryStream ();
-			XmlWriter writer = XmlWriter.Create (ms);
-			Assert.IsNotNull (writer.Settings, "#A1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
-			writer.Close ();
-			Assert.IsTrue (ms.CanWrite, "#A3");
-
-			XmlWriterSettings settings = new XmlWriterSettings ();
-			settings.CloseOutput = true;
-			writer = XmlWriter.Create (ms, settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
-			Assert.IsTrue (settings.CloseOutput, "#B2");
-			writer.Close ();
-			Assert.IsFalse (ms.CanWrite, "#B3");
-
-			ms = new MemoryStream ();
-			settings = new XmlWriterSettings ();
-			writer = XmlWriter.Create (ms, settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#C1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#C2");
-			writer.Close ();
-			Assert.IsTrue (ms.CanWrite, "#C3");
-
-			ms = new MemoryStream ();
-			writer = XmlWriter.Create (ms, (XmlWriterSettings) null);
-			Assert.IsNotNull (writer.Settings, "#D1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#D2");
-			writer.Close ();
-			Assert.IsTrue (ms.CanWrite, "#D3");
-		}
-
-		[Test]
-		public void Create_TextWriter ()
-		{
-			MemoryStream ms = new MemoryStream ();
-			XmlWriter writer = XmlWriter.Create (new StreamWriter (ms));
-			Assert.IsNotNull (writer.Settings, "#A1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
-			writer.Close ();
-			Assert.IsTrue (ms.CanWrite, "#A3");
-
-			XmlWriterSettings settings = new XmlWriterSettings ();
-			settings.CloseOutput = true;
-			writer = XmlWriter.Create (new StreamWriter (ms), settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
-			Assert.IsTrue (settings.CloseOutput, "#B2");
-			writer.Close ();
-			Assert.IsFalse (ms.CanWrite, "#B3");
-
-			ms = new MemoryStream ();
-			settings = new XmlWriterSettings ();
-			writer = XmlWriter.Create (new StreamWriter (ms), settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#C1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#C2");
-			writer.Close ();
-			Assert.IsTrue (ms.CanWrite, "#C3");
-
-			ms = new MemoryStream ();
-			writer = XmlWriter.Create (new StreamWriter (ms), (XmlWriterSettings) null);
-			Assert.IsNotNull (writer.Settings, "#D1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#D2");
-			writer.Close ();
-			Assert.IsTrue (ms.CanWrite, "#D3");
-		}
-
-		[Test]
-		public void Create_XmlWriter ()
-		{
-			MemoryStream ms = new MemoryStream ();
-			XmlTextWriter xtw = new XmlTextWriter (ms, Encoding.UTF8);
-			XmlWriter writer = XmlWriter.Create (xtw);
-			Assert.IsNotNull (writer.Settings, "#A1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
-			writer.Close ();
-			Assert.IsFalse (ms.CanWrite, "#A3");
-
-			ms = new MemoryStream ();
-			xtw = new XmlTextWriter (ms, Encoding.UTF8);
-			XmlWriterSettings settings = new XmlWriterSettings ();
-			settings.CloseOutput = true;
-			writer = XmlWriter.Create (xtw, settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
-			//Assert.IsFalse (writer.Settings.CloseOutput, "#B2");
-			writer.Close ();
-			Assert.IsFalse (ms.CanWrite, "#B3");
-
-			ms = new MemoryStream ();
-			xtw = new XmlTextWriter (ms, Encoding.UTF8);
-			settings = new XmlWriterSettings ();
-			writer = XmlWriter.Create (xtw, settings);
-			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#C1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#C2");
-			writer.Close ();
-			Assert.IsFalse (ms.CanWrite, "#C3");
-
-			ms = new MemoryStream ();
-			xtw = new XmlTextWriter (ms, Encoding.UTF8);
-			writer = XmlWriter.Create (xtw, (XmlWriterSettings) null);
-			Assert.IsNotNull (writer.Settings, "#D1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#D2");
-			writer.Close ();
-			Assert.IsFalse (ms.CanWrite, "#D3");
-		}
-
-		[Test]
-		public void Create_XmlWriter2 ()
-		{
-			MemoryStream ms = new MemoryStream ();
-			XmlWriterSettings settings = new XmlWriterSettings ();
-			XmlWriter xw = XmlWriter.Create (ms, settings);
-			XmlWriter writer = XmlWriter.Create (xw, new XmlWriterSettings ());
-			Assert.IsNotNull (writer.Settings, "#A1");
-			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
-			writer.Close ();
-			Assert.IsTrue (ms.CanWrite, "#A3");
-
-			ms = new MemoryStream ();
-			settings = new XmlWriterSettings ();
-			settings.CloseOutput = true;
-			settings.OmitXmlDeclaration = true;
-			xw = XmlWriter.Create (ms, settings);
-			writer = XmlWriter.Create (xw, new XmlWriterSettings ());
-			Assert.IsNotNull (writer.Settings, "#B1");
-			Assert.IsTrue (writer.Settings.CloseOutput, "#B2");
-			Assert.IsTrue (writer.Settings.OmitXmlDeclaration, "#B3");
-			writer.Close ();
-			Assert.IsFalse (ms.CanWrite, "#B3");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void CreateWriter_AttributeNamespacesXmlnsXmlns ()
-		{
-			// Unlike XmlTextWriter, null namespace is not ignored.
-			XmlWriter w = XmlWriter.Create (new StringWriter ());
-			w.WriteStartElement ("foo");
-			w.WriteAttributeString ("xmlns", "xmlns", null, "http://abc.def");
-		}
-
-		XmlWriter CreateWriter (TextWriter tw)
-		{
-			XmlWriterSettings s = new XmlWriterSettings ();
-			s.OmitXmlDeclaration = true;
-			XmlWriter w = XmlWriter.Create (tw, s);
-			w.WriteStartElement ("root");
-			return w;
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void WriteValueNull ()
-		{
-			XmlWriter w = CreateWriter (TextWriter.Null);
-			w.WriteValue ((object) null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidCastException))] // it throws somewhat funny exception
-		public void WriteValueNonExistentQName ()
-		{
-			XmlWriter w = CreateWriter (TextWriter.Null);
-			w.WriteValue (new XmlQualifiedName ("foo", "urn:foo"));
-		}
-
-		[Test]
-		public void WriteValueEmptyQName ()
-		{
-			StringWriter sw = new StringWriter ();
-			XmlWriter w = CreateWriter (sw);
-			w.WriteValue (XmlQualifiedName.Empty);
-			w.Close ();
-		}
-
-		[Test]
-		public void WriteValueQName ()
-		{
-			StringWriter sw = new StringWriter ();
-			XmlWriter w = CreateWriter (sw);
-			w.WriteAttributeString ("xmlns", "x", "http://www.w3.org/2000/xmlns/", "urn:foo");
-			w.WriteValue (new XmlQualifiedName ("foo", "urn:foo"));
-			w.Close ();
-			Assert.AreEqual ("<root xmlns:x=\"urn:foo\">x:foo</root>", sw.ToString ());
-		}
-
-		[Test]
-		public void WriteValueTimeSpan ()
-		{
-			StringWriter sw = new StringWriter ();
-			XmlWriter w = CreateWriter (sw);
-			w.WriteValue (TimeSpan.FromSeconds (5));
-			w.Close ();
-			Assert.AreEqual ("<root>PT5S</root>", sw.ToString ());
-		}
-
-		[Test]
-		public void WriteValueArray ()
-		{
-			StringWriter sw = new StringWriter ();
-			XmlWriter w = CreateWriter (sw);
-			w.WriteValue (new int [] {1, 2, 3});
-			w.WriteValue (new int [] {4, 5, 6});
-			w.Close ();
-			Assert.AreEqual ("<root>1 2 34 5 6</root>", sw.ToString ());
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidCastException))] // it throws somewhat funny exception
-		public void WriteValueTextReader ()
-		{
-			// it is documented as supported, but actually isn't.
-			XmlWriter w = CreateWriter (TextWriter.Null);
-			w.WriteValue (new StringReader ("foobar"));
-		}
-
-		XPathNavigator GetNavigator (string xml)
-		{
-			return new XPathDocument (XmlReader.Create (
-				new StringReader (xml))).CreateNavigator ();
-		}
-
-		string WriteNavigator (XPathNavigator nav, bool defattr)
-		{
-			StringWriter sw = new StringWriter ();
-			XmlWriterSettings settings = new XmlWriterSettings ();
-			settings.OmitXmlDeclaration = true;
-			settings.ConformanceLevel = ConformanceLevel.Fragment;
-			using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-				w.WriteNode (nav, defattr);
-			}
-			return sw.ToString ();
-		}
-
-		[Test]
-		public void WriteNodeNavigator1 ()
-		{
-			XPathNavigator nav = GetNavigator ("<root>test<!-- comment --></root>");
-			// at Root
-			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteNavigator (nav, false), "#1");
-			// at document element
-			nav.MoveToFirstChild ();
-			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteNavigator (nav, false), "#2");
-			// at text
-			nav.MoveToFirstChild ();
-			AssertType.AreEqual ("test", WriteNavigator (nav, false), "#3");
-
-			// at comment
-			nav.MoveToNext ();
-			AssertType.AreEqual ("<!-- comment -->", WriteNavigator (nav, false), "#4");
-		}
-
-		string WriteSubtree (XPathNavigator nav)
-		{
-			StringWriter sw = new StringWriter ();
-			XmlWriterSettings settings = new XmlWriterSettings ();
-			settings.OmitXmlDeclaration = true;
-			settings.ConformanceLevel = ConformanceLevel.Fragment;
-			using (XmlWriter w = XmlWriter.Create (sw, settings)) {
-				nav.WriteSubtree(w);
-			}
-			return sw.ToString ();
-		}
-
-		[Test]
-		public void NavigatorWriteSubtree1 ()
-		{
-			XPathNavigator nav = GetNavigator ("<root>test<!-- comment --></root>");
-			// at Root
-			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteSubtree (nav), "#1");
-			// at document element
-			nav.MoveToFirstChild ();
-			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteSubtree (nav), "#2");
-			// at text
-			nav.MoveToFirstChild ();
-			AssertType.AreEqual ("test", WriteSubtree (nav), "#3");
-
-			// at comment
-			nav.MoveToNext ();
-			AssertType.AreEqual ("<!-- comment -->", WriteSubtree (nav), "#4");
-		}
-
-		[Test]
-		public void WriteNodeXPathNavigator ()
-		{
-			string xml = "<A xmlns='urn:x'><B xmlns='urn:y' /></A>";
-			XPathNavigator nav = new XPathDocument (new StringReader(xml)).CreateNavigator ();
-			XmlWriterSettings s = new XmlWriterSettings ();
-			s.OmitXmlDeclaration = true;
-			StringWriter sw = new StringWriter ();
-			XmlWriter w = XmlWriter.Create (sw, s);
-			w.WriteNode (nav, false);
-			w.Close ();
-			AssertType.AreEqual ("<A xmlns=\"urn:x\"><B xmlns=\"urn:y\" /></A>", sw.ToString ());
-		}
-
-		[Test]
-		public void WriteNodeXPathNavigatorAttribute ()
-		{
-			string xml = "<!DOCTYPE root [<!ELEMENT root EMPTY> <!ATTLIST root implicit NMTOKEN 'nam'>]><root attr='val' />";
-			XPathNavigator nav = new XPathDocument (new StringReader (xml)).CreateNavigator ();
-			XmlWriterSettings s = new XmlWriterSettings ();
-			s.OmitXmlDeclaration = true;
-			StringWriter sw = new StringWriter ();
-			XmlWriter w = XmlWriter.Create (sw, s);
-			w.WriteStartElement ("hoge");
-			nav.MoveToFirstChild ();
-			nav.MoveToFirstAttribute ();
-			w.WriteNode (nav, false);
-			nav.MoveToNextAttribute ();
-			w.WriteNode (nav, false);
-			w.Close ();
-			AssertType.AreEqual ("<hoge />", sw.ToString ());
-		}
-
-		[Test]
-		public void WriteStringDifferentBehavior ()
-		{
-			// Messy implementation difference.
-			// from XmlTextWriter -> <foo />
-			// from XmlWriter.XCreate() -> <foo></foo>
-			var sw = new StringWriter ();
-			var xw = XmlWriter.Create (sw);
-			xw.WriteStartElement ("foo");
-			xw.WriteString ("");
-			xw.WriteEndElement ();
-			xw.Close ();
-			AssertType.AreEqual ("<?xml version='1.0' encoding='utf-16'?><foo></foo>".Replace ('\'', '"'), sw.ToString ());
-		}
-
-		//          |       |      |returns the same reader
-		// source   |wrapper|result| |checks state (and err)
-		// overrides|setting|      | | |test name
-		// ---------+----------------------------
-		//      -   | -(Doc)| Doc  | |x|0:CreateNOCL
-		//          | Auto  | Doc  | |x|1:CreateNOCLSettingsCLAuto
-		//          | Doc   | Doc  | |x|2:CreateNOCLSettingsCLDoc
-		//          | Frag  | Doc  | |x|3:CreateNOCLSettingsCLFrag
-		// Auto     | -(Doc)| Doc  | | |4:CreateCLAuto
-		//          | Auto  | Auto |=|x|5:CreateCLAutoSettingsCLAuto
-		//          | Doc   | Doc  | | |6:CreateCLAutoSettingsCLDoc
-		//          | Frag  | Frag | | |7:CreateCLAutoSettingsCLFrag
-		// Document | -(Doc)| Doc  |=|x|8:CreateCLDoc
-		//          | Auto  | Doc  |=|x|9:CreateCLDocSettingsCLAuto
-		//          | Doc   | Doc  |=|x|A:CreateCLDocSettingsCLDoc
-		//          | Frag  | Frag | | |B:CreateCLDocSettingsCLFrag
-		// Fragment | -(Doc)| Doc  | | |C:CreateCLFrag
-		//          | Auto  | Frag |=|x|D:CreateCLFragSettingsCLAuto
-		//          | Doc   | Doc  | | |E:CreateCLFragSettingsCLDoc
-		//          | Frag  | Frag |=|x|F:CreateCLFragSettingsCLFrag
-		//
-		// What we can see from above:
-		// - default ConformanceLevel is Document. (0 4 8 C)
-		// - If wrapper is Auto, it delegates to source. (1 5 9 D)
-		//   - Auto can happen only if both inputs are Auto (5)
-		// - If wrapper is Frag, all but default becomes Frag (7 B F)
-		//   - with default it becomes Document (3)
-		//     So a default value is likely stronger(!)
-		// - Basically, when there is no difference between the wrapper
-		//   and the source settings, it does not create wrapper.
-
-		[Test]
-		public void CreateCLAuto ()
-		{
-			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
-			XmlWriter xw = XmlWriter.Create (cl);
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateCLDoc ()
-		{
-			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
-			XmlWriter xw = XmlWriter.Create (cl);
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreEqual (xw, cl, "#2"); // equal
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		public void CreateCLFrag ()
-		{
-			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
-			XmlWriter xw = XmlWriter.Create (cl);
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateNOCL ()
-		{
-			InvalidWriteState cl = new InvalidWriteState ();
-			Assert.IsNull (cl.Settings, "#0");
-			XmlWriter xw = XmlWriter.Create (cl);
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateNOCLSettingsCLAuto ()
-		{
-			InvalidWriteState cl = new InvalidWriteState ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateNOCLSettingsCLDoc ()
-		{
-			InvalidWriteState cl = new InvalidWriteState ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateNOCLSettingsCLFrag ()
-		{
-			InvalidWriteState cl = new InvalidWriteState ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateCLAutoSettingsCLAuto ()
-		{
-			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
-			Assert.AreEqual (ConformanceLevel.Auto, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreEqual (xw, cl, "#2"); // equal
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		public void CreateCLAutoSettingsCLDoc ()
-		{
-			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		public void CreateCLAutoSettingsCLFrag ()
-		{
-			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
-			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateCLDocSettingsCLAuto ()
-		{
-			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreEqual (xw, cl, "#2"); // equal
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateCLDocSettingsCLDoc ()
-		{
-			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreEqual (xw, cl, "#2"); // equal
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		public void CreateCLDocSettingsCLFrag ()
-		{
-			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
-			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateCLFragSettingsCLAuto ()
-		{
-			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
-			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreEqual (xw, cl, "#2"); // equal
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		public void CreateCLFragSettingsCLDoc ()
-		{
-			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
-			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreNotEqual (xw, cl, "#2");
-			WriteState state = xw.WriteState;
-		}
-
-		[Test]
-		[ExpectedException (typeof (InvalidOperationException))]
-		public void CreateCLFragSettingsCLFrag ()
-		{
-			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
-			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
-			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
-			Assert.AreEqual (xw, cl, "#2"); // equal
-			WriteState state = xw.WriteState;
-		}
-
-
-	}
-
-	internal class DefaultXmlWriter : XmlWriter
-	{
-		public DefaultXmlWriter () : base ()
-		{
-		}
-
-		public override void Close ()
-		{
-		}
-
-		public override void Flush ()
-		{
-		}
-
-		public override string LookupPrefix (string ns)
-		{
-			return null;
-		}
-
-		public override void WriteBase64 (byte [] buffer, int index, int count)
-		{
-		}
-
-		public override void WriteBinHex (byte [] buffer, int index, int count)
-		{
-		}
-
-		public override void WriteCData (string text)
-		{
-		}
-
-		public override void WriteCharEntity (char ch)
-		{
-		}
-
-		public override void WriteChars (char [] buffer, int index, int count)
-		{
-		}
-
-		public override void WriteComment (string text)
-		{
-		}
-
-		public override void WriteDocType (string name, string pubid, string sysid, string subset)
-		{
-		}
-
-		public override void WriteEndAttribute ()
-		{
-		}
-
-		public override void WriteEndDocument ()
-		{
-		}
-
-		public override void WriteEndElement ()
-		{
-		}
-
-		public override void WriteEntityRef (string name)
-		{
-		}
-
-		public override void WriteFullEndElement ()
-		{
-		}
-
-		public override void WriteName (string name)
-		{
-		}
-
-		public override void WriteNmToken (string name)
-		{
-		}
-
-		public override void WriteNode (XmlReader reader, bool defattr)
-		{
-		}
-
-		public override void WriteProcessingInstruction (string name, string text)
-		{
-		}
-
-		public override void WriteQualifiedName (string localName, string ns)
-		{
-		}
-
-		public override void WriteRaw (string data)
-		{
-		}
-
-		public override void WriteRaw (char [] buffer, int index, int count)
-		{
-		}
-
-		public override void WriteStartAttribute (string prefix, string localName, string ns)
-		{
-		}
-
-		public override void WriteStartDocument (bool standalone)
-		{
-		}
-
-		public override void WriteStartDocument ()
-		{
-		}
-
-		public override void WriteStartElement (string prefix, string localName, string ns)
-		{
-		}
-
-		public override void WriteString (string text)
-		{
-		}
-
-		public override void WriteSurrogateCharEntity (char lowChar, char highChar)
-		{
-		}
-
-		public override void WriteWhitespace (string ws)
-		{
-		}
-
-		public override WriteState WriteState {
-			get {
-				return WriteState.Start;
-			}
-		}
-
-		public override string XmlLang {
-			get {
-				return null;
-			}
-		}
-
-		public override XmlSpace XmlSpace {
-			get {
-				return XmlSpace.None;
-			}
-		}
-
-	}
-
-
-	class InvalidWriteState : XmlWriter {
-		public override void Close () { }
-		public override void Flush () { }
-		public override string LookupPrefix (string ns) { return null; }
-		public override void WriteBase64 (byte [] buffer, int index, int count) { }
-		public override void WriteCData (string text) { }
-		public override void WriteCharEntity (char ch) { }
-		public override void WriteChars (char [] buffer, int index, int count) { }
-		public override void WriteComment (string text) { }
-		public override void WriteDocType (string name, string pubid, string sysid, string subset) { }
-		public override void WriteEndAttribute () { }
-		public override void WriteEndDocument () { }
-		public override void WriteEndElement () { }
-		public override void WriteEntityRef (string name) { }
-		public override void WriteFullEndElement () { }
-		public override void WriteProcessingInstruction (string name, string text) {}
-		public override void WriteRaw (string data) {}
-		public override void WriteRaw (char [] buffer, int index, int count) {}
-		public override void WriteStartAttribute (string prefix, string localName, string ns) {}
-		public override void WriteStartDocument (bool standalone) {}
-		public override void WriteStartDocument () {}
-		public override void WriteStartElement (string prefix, string localName, string ns) {}
-		public override void WriteString (string text) {}
-		public override void WriteSurrogateCharEntity (char lowChar, char highChar) {}
-		public override void WriteWhitespace (string ws) {}
-
-		public override WriteState WriteState {
-			get { throw new InvalidOperationException (); }
-		}
-	}
-
-	class ConformanceLevelAuto : InvalidWriteState {
-		public override XmlWriterSettings Settings {
-			get {
-				return new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto };
-			}
-		}
-	}
-
-	class ConformanceLevelDocument : InvalidWriteState {
-		public override XmlWriterSettings Settings {
-			get {
-				return new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document };
-			}
-		}
-	}
-
-	class ConformanceLevelFragment : InvalidWriteState {
-		public override XmlWriterSettings Settings {
-			get {
-				return new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment };
-			}
-		}
-	}
-
-}
-
+//
+// System.Xml.XmlTextWriterTests
+//
+// Authors:
+//   Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//   Martin Willemoes Hansen <mwh@sysrq.dk>
+//
+// (C) 2003 Atsushi Enomoto
+// (C) 2003 Martin Willemoes Hansen
+//
+//
+//  This class mainly checks inheritance and behaviors of XmlWriter.
+//
+
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+
+using NUnit.Framework;
+
+using AssertType = NUnit.Framework.Assert;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XmlWriterTests
+	{
+		StringWriter writer;
+		XmlTextWriter xtw;
+
+		[SetUp]
+		public void SetUp ()
+		{
+			writer = new StringWriter ();
+			xtw = new XmlTextWriter (writer);
+		}
+
+		[Test]
+		public void WriteNodeFullDocument ()
+		{
+			string xml = "<?xml version='1.0'?><root />";
+			XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+			xtw.WriteNode (xtr, false);
+			Assert.AreEqual (xml, writer.ToString ());
+
+			writer.GetStringBuilder ().Length = 0;
+
+			// With encoding
+			xml = "<?xml version='1.0' encoding='iso-2022-jp'?><root />";
+			xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
+			xtw.WriteNode (xtr, false);
+			Assert.AreEqual (xml, writer.ToString ());
+			xtr.Close ();
+		}
+
+		[Test]
+		public void WriteNodeXmlDecl ()
+		{
+			string xml = "<?xml version='1.0'?><root />";
+			StringReader sr = new StringReader (xml);
+			XmlTextReader xtr = new XmlTextReader (sr);
+			xtr.Read ();
+			xtw.WriteNode (xtr, false);
+			Assert.AreEqual ("<?xml version='1.0'?>",
+				 writer.ToString ());
+			xtr.Close ();
+		}
+
+		[Test]
+		public void WriteNodeEmptyElement ()
+		{
+			string xml = "<root attr='value' attr2='value' />";
+			StringReader sr = new StringReader (xml);
+			XmlTextReader xtr = new XmlTextReader (sr);
+			xtw.WriteNode (xtr, false);
+			Assert.AreEqual (xml.Replace ("'", "\""),
+				writer.ToString ());
+			xtr.Close ();
+		}
+
+		[Test]
+		public void WriteNodeNonEmptyElement ()
+		{
+			string xml = @"<foo><bar></bar></foo>";
+			xtw.WriteNode (new XmlTextReader (xml, XmlNodeType.Document, null), false);
+			Assert.AreEqual (xml, writer.ToString ());
+		}
+
+		[Test]
+		public void WriteNodeSingleContentElement ()
+		{
+			string xml = "<root attr='value' attr2='value'><foo /></root>";
+			StringReader sr = new StringReader (xml);
+			XmlTextReader xtr = new XmlTextReader (sr);
+			xtw.WriteNode (xtr, false);
+			Assert.AreEqual (xml.Replace ("'", "\""),
+				writer.ToString ());
+			xtr.Close ();
+		}
+
+		[Test]
+		public void WriteNodeNone ()
+		{
+			XmlTextReader xtr = new XmlTextReader ("", XmlNodeType.Element, null);
+			xtr.Read ();
+			xtw.WriteNode (xtr, false); // does not report any errors
+			xtr.Close ();
+		}
+
+		[Test]
+		[Category ("NotDotNet")] // enbugged in 2.0
+		[Ignore ("Bug in Microsoft referencesource")]
+		[ExpectedException (typeof (XmlException))]
+		public void WriteNodeError ()
+		{
+			XmlTextReader xtr = new XmlTextReader ("<root>", XmlNodeType.Document, null);
+			xtr.Read ();
+			try {
+				xtr.Read ();
+			} catch {
+			}
+			XmlTextWriter xtw = new XmlTextWriter (new StringWriter ());
+			xtw.WriteNode (xtr, false);
+		}
+
+		[Test]
+		public void WriteSurrogateCharEntity ()
+		{
+			xtw.WriteSurrogateCharEntity ('\udfff', '\udb00');
+			Assert.AreEqual ("&#xD03FF;", writer.ToString ());
+
+			try {
+				xtw.WriteSurrogateCharEntity ('\ud800', '\udc00');
+				Assert.Fail ();
+			} catch {
+			}
+			try {
+				xtw.WriteSurrogateCharEntity ('\udbff', '\ud800');
+				Assert.Fail ();
+			} catch {
+			}
+			try {
+				xtw.WriteSurrogateCharEntity ('\ue000', '\ud800');
+				Assert.Fail ();
+			} catch {
+			}
+			try {
+				xtw.WriteSurrogateCharEntity ('\udfff', '\udc00');
+				Assert.Fail ();
+			} catch {
+			}
+		}
+
+		// MS.NET's not-overriden XmlWriter.WriteStartElement(name)
+		// invokes WriteStartElement(null, name, null). 
+		// WriteStartElement(name, ns) invokes (null, name, ns), too.
+		[Test]
+		public void StartElement ()
+		{
+			StartElementTestWriter xw = new StartElementTestWriter ();
+			xw.WriteStartDocument ();
+			xw.WriteStartElement ("test");
+			Assert.IsNull (xw.NS, "StartElementOverride.NS");
+			Assert.IsNull (xw.Prefix, "StartElementOverride.Prefix");
+			xw.NS = String.Empty;
+			xw.Prefix = String.Empty;
+			xw.WriteStartElement ("test", "urn:hoge");
+			Assert.AreEqual ("urn:hoge", xw.NS, "StartElementOverride.NS");
+			Assert.IsNull (null, xw.Prefix, "StartElementOverride.Prefix");
+		}
+		
+		class StartElementTestWriter : DefaultXmlWriter
+		{
+			public StartElementTestWriter () : base () {}
+			public string NS = String.Empty;
+			public string Prefix = String.Empty;
+
+			public override void WriteStartElement (string prefix, string localName, string ns)
+			{
+				this.NS = ns;
+				this.Prefix = prefix;
+			}
+		}
+
+		[Test]
+		public void WriteAttributes ()
+		{
+			string xml = "<root><test a='b' c='d' /><b /></root>";
+			XmlTextReader xtr = new XmlTextReader (xml,
+				XmlNodeType.Document, null);
+			xtw.QuoteChar = '\'';
+			xtr.Read ();
+			xtw.WriteStartElement ("root"); // <root
+			xtr.Read ();
+			xtw.WriteStartElement ("test"); // ><test
+			xtw.WriteAttributes (xtr, false); // a='b' c='d'
+			Assert.AreEqual (XmlNodeType.Element, xtr.NodeType);
+			xtw.WriteEndElement (); // />
+			xtw.WriteStartElement ("b"); // <b
+			xtw.WriteEndElement (); // />
+			xtw.WriteEndElement (); // </root>
+			xtw.Close ();
+			Assert.AreEqual (xml, writer.ToString ());
+		}
+
+		[Test]
+		public void Create_File ()
+		{
+			string file = Path.GetTempFileName ();
+			XmlWriter writer = XmlWriter.Create (file);
+			Assert.IsNotNull (writer.Settings, "#A1");
+			//Assert.IsTrue (writer.Settings.CloseOutput, "#A2");
+			writer.Close ();
+			File.Delete (file);
+
+			XmlWriterSettings settings = new XmlWriterSettings ();
+			settings.CloseOutput = true;
+			writer = XmlWriter.Create (file, settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
+			Assert.IsTrue (settings.CloseOutput, "#B2");
+			writer.Close ();
+			File.Delete (file);
+
+			writer = XmlWriter.Create (file, (XmlWriterSettings) null);
+			Assert.IsNotNull (writer.Settings, "#C1");
+			//Assert.IsTrue (writer.Settings.CloseOutput, "#C2");
+			writer.Close ();
+			File.Delete (file);
+
+			settings = new XmlWriterSettings ();
+			writer = XmlWriter.Create (file, settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#D1");
+			//Assert.IsTrue (writer.Settings.CloseOutput, "#D2");
+			writer.Close ();
+			File.Delete (file);
+
+			writer = XmlWriter.Create (file);
+			Assert.IsNotNull (writer.Settings, "#E1");
+			//Assert.IsTrue (writer.Settings.CloseOutput, "#E2");
+			writer.Close ();
+			File.Delete (file);
+		}
+
+		[Test]
+		public void Create_Stream ()
+		{
+			MemoryStream ms = new MemoryStream ();
+			XmlWriter writer = XmlWriter.Create (ms);
+			Assert.IsNotNull (writer.Settings, "#A1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
+			writer.Close ();
+			Assert.IsTrue (ms.CanWrite, "#A3");
+
+			XmlWriterSettings settings = new XmlWriterSettings ();
+			settings.CloseOutput = true;
+			writer = XmlWriter.Create (ms, settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
+			Assert.IsTrue (settings.CloseOutput, "#B2");
+			writer.Close ();
+			Assert.IsFalse (ms.CanWrite, "#B3");
+
+			ms = new MemoryStream ();
+			settings = new XmlWriterSettings ();
+			writer = XmlWriter.Create (ms, settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#C1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#C2");
+			writer.Close ();
+			Assert.IsTrue (ms.CanWrite, "#C3");
+
+			ms = new MemoryStream ();
+			writer = XmlWriter.Create (ms, (XmlWriterSettings) null);
+			Assert.IsNotNull (writer.Settings, "#D1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#D2");
+			writer.Close ();
+			Assert.IsTrue (ms.CanWrite, "#D3");
+		}
+
+		[Test]
+		public void Create_TextWriter ()
+		{
+			MemoryStream ms = new MemoryStream ();
+			XmlWriter writer = XmlWriter.Create (new StreamWriter (ms));
+			Assert.IsNotNull (writer.Settings, "#A1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
+			writer.Close ();
+			Assert.IsTrue (ms.CanWrite, "#A3");
+
+			XmlWriterSettings settings = new XmlWriterSettings ();
+			settings.CloseOutput = true;
+			writer = XmlWriter.Create (new StreamWriter (ms), settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
+			Assert.IsTrue (settings.CloseOutput, "#B2");
+			writer.Close ();
+			Assert.IsFalse (ms.CanWrite, "#B3");
+
+			ms = new MemoryStream ();
+			settings = new XmlWriterSettings ();
+			writer = XmlWriter.Create (new StreamWriter (ms), settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#C1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#C2");
+			writer.Close ();
+			Assert.IsTrue (ms.CanWrite, "#C3");
+
+			ms = new MemoryStream ();
+			writer = XmlWriter.Create (new StreamWriter (ms), (XmlWriterSettings) null);
+			Assert.IsNotNull (writer.Settings, "#D1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#D2");
+			writer.Close ();
+			Assert.IsTrue (ms.CanWrite, "#D3");
+		}
+
+		[Test]
+		public void Create_XmlWriter ()
+		{
+			MemoryStream ms = new MemoryStream ();
+			XmlTextWriter xtw = new XmlTextWriter (ms, Encoding.UTF8);
+			XmlWriter writer = XmlWriter.Create (xtw);
+			Assert.IsNotNull (writer.Settings, "#A1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
+			writer.Close ();
+			Assert.IsFalse (ms.CanWrite, "#A3");
+
+			ms = new MemoryStream ();
+			xtw = new XmlTextWriter (ms, Encoding.UTF8);
+			XmlWriterSettings settings = new XmlWriterSettings ();
+			settings.CloseOutput = true;
+			writer = XmlWriter.Create (xtw, settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#B1");
+			//Assert.IsFalse (writer.Settings.CloseOutput, "#B2");
+			writer.Close ();
+			Assert.IsFalse (ms.CanWrite, "#B3");
+
+			ms = new MemoryStream ();
+			xtw = new XmlTextWriter (ms, Encoding.UTF8);
+			settings = new XmlWriterSettings ();
+			writer = XmlWriter.Create (xtw, settings);
+			//Assert.IsFalse (object.ReferenceEquals (settings, writer.Settings), "#C1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#C2");
+			writer.Close ();
+			Assert.IsFalse (ms.CanWrite, "#C3");
+
+			ms = new MemoryStream ();
+			xtw = new XmlTextWriter (ms, Encoding.UTF8);
+			writer = XmlWriter.Create (xtw, (XmlWriterSettings) null);
+			Assert.IsNotNull (writer.Settings, "#D1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#D2");
+			writer.Close ();
+			Assert.IsFalse (ms.CanWrite, "#D3");
+		}
+
+		[Test]
+		public void Create_XmlWriter2 ()
+		{
+			MemoryStream ms = new MemoryStream ();
+			XmlWriterSettings settings = new XmlWriterSettings ();
+			XmlWriter xw = XmlWriter.Create (ms, settings);
+			XmlWriter writer = XmlWriter.Create (xw, new XmlWriterSettings ());
+			Assert.IsNotNull (writer.Settings, "#A1");
+			Assert.IsFalse (writer.Settings.CloseOutput, "#A2");
+			writer.Close ();
+			Assert.IsTrue (ms.CanWrite, "#A3");
+
+			ms = new MemoryStream ();
+			settings = new XmlWriterSettings ();
+			settings.CloseOutput = true;
+			settings.OmitXmlDeclaration = true;
+			xw = XmlWriter.Create (ms, settings);
+			writer = XmlWriter.Create (xw, new XmlWriterSettings ());
+			Assert.IsNotNull (writer.Settings, "#B1");
+			Assert.IsTrue (writer.Settings.CloseOutput, "#B2");
+			Assert.IsTrue (writer.Settings.OmitXmlDeclaration, "#B3");
+			writer.Close ();
+			Assert.IsFalse (ms.CanWrite, "#B3");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void CreateWriter_AttributeNamespacesXmlnsXmlns ()
+		{
+			// Unlike XmlTextWriter, null namespace is not ignored.
+			XmlWriter w = XmlWriter.Create (new StringWriter ());
+			w.WriteStartElement ("foo");
+			w.WriteAttributeString ("xmlns", "xmlns", null, "http://abc.def");
+		}
+
+		XmlWriter CreateWriter (TextWriter tw)
+		{
+			XmlWriterSettings s = new XmlWriterSettings ();
+			s.OmitXmlDeclaration = true;
+			XmlWriter w = XmlWriter.Create (tw, s);
+			w.WriteStartElement ("root");
+			return w;
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void WriteValueNull ()
+		{
+			XmlWriter w = CreateWriter (TextWriter.Null);
+			w.WriteValue ((object) null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidCastException))] // it throws somewhat funny exception
+		public void WriteValueNonExistentQName ()
+		{
+			XmlWriter w = CreateWriter (TextWriter.Null);
+			w.WriteValue (new XmlQualifiedName ("foo", "urn:foo"));
+		}
+
+		[Test]
+		public void WriteValueEmptyQName ()
+		{
+			StringWriter sw = new StringWriter ();
+			XmlWriter w = CreateWriter (sw);
+			w.WriteValue (XmlQualifiedName.Empty);
+			w.Close ();
+		}
+
+		[Test]
+		public void WriteValueQName ()
+		{
+			StringWriter sw = new StringWriter ();
+			XmlWriter w = CreateWriter (sw);
+			w.WriteAttributeString ("xmlns", "x", "http://www.w3.org/2000/xmlns/", "urn:foo");
+			w.WriteValue (new XmlQualifiedName ("foo", "urn:foo"));
+			w.Close ();
+			Assert.AreEqual ("<root xmlns:x=\"urn:foo\">x:foo</root>", sw.ToString ());
+		}
+
+		[Test]
+		public void WriteValueTimeSpan ()
+		{
+			StringWriter sw = new StringWriter ();
+			XmlWriter w = CreateWriter (sw);
+			w.WriteValue (TimeSpan.FromSeconds (5));
+			w.Close ();
+			Assert.AreEqual ("<root>PT5S</root>", sw.ToString ());
+		}
+
+		[Test]
+		public void WriteValueArray ()
+		{
+			StringWriter sw = new StringWriter ();
+			XmlWriter w = CreateWriter (sw);
+			w.WriteValue (new int [] {1, 2, 3});
+			w.WriteValue (new int [] {4, 5, 6});
+			w.Close ();
+			Assert.AreEqual ("<root>1 2 34 5 6</root>", sw.ToString ());
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidCastException))] // it throws somewhat funny exception
+		public void WriteValueTextReader ()
+		{
+			// it is documented as supported, but actually isn't.
+			XmlWriter w = CreateWriter (TextWriter.Null);
+			w.WriteValue (new StringReader ("foobar"));
+		}
+
+		XPathNavigator GetNavigator (string xml)
+		{
+			return new XPathDocument (XmlReader.Create (
+				new StringReader (xml))).CreateNavigator ();
+		}
+
+		string WriteNavigator (XPathNavigator nav, bool defattr)
+		{
+			StringWriter sw = new StringWriter ();
+			XmlWriterSettings settings = new XmlWriterSettings ();
+			settings.OmitXmlDeclaration = true;
+			settings.ConformanceLevel = ConformanceLevel.Fragment;
+			using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+				w.WriteNode (nav, defattr);
+			}
+			return sw.ToString ();
+		}
+
+		[Test]
+		public void WriteNodeNavigator1 ()
+		{
+			XPathNavigator nav = GetNavigator ("<root>test<!-- comment --></root>");
+			// at Root
+			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteNavigator (nav, false), "#1");
+			// at document element
+			nav.MoveToFirstChild ();
+			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteNavigator (nav, false), "#2");
+			// at text
+			nav.MoveToFirstChild ();
+			AssertType.AreEqual ("test", WriteNavigator (nav, false), "#3");
+
+			// at comment
+			nav.MoveToNext ();
+			AssertType.AreEqual ("<!-- comment -->", WriteNavigator (nav, false), "#4");
+		}
+
+		string WriteSubtree (XPathNavigator nav)
+		{
+			StringWriter sw = new StringWriter ();
+			XmlWriterSettings settings = new XmlWriterSettings ();
+			settings.OmitXmlDeclaration = true;
+			settings.ConformanceLevel = ConformanceLevel.Fragment;
+			using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+				nav.WriteSubtree(w);
+			}
+			return sw.ToString ();
+		}
+
+		[Test]
+		public void NavigatorWriteSubtree1 ()
+		{
+			XPathNavigator nav = GetNavigator ("<root>test<!-- comment --></root>");
+			// at Root
+			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteSubtree (nav), "#1");
+			// at document element
+			nav.MoveToFirstChild ();
+			AssertType.AreEqual ("<root>test<!-- comment --></root>", WriteSubtree (nav), "#2");
+			// at text
+			nav.MoveToFirstChild ();
+			AssertType.AreEqual ("test", WriteSubtree (nav), "#3");
+
+			// at comment
+			nav.MoveToNext ();
+			AssertType.AreEqual ("<!-- comment -->", WriteSubtree (nav), "#4");
+		}
+
+		[Test]
+		public void WriteNodeXPathNavigator ()
+		{
+			string xml = "<A xmlns='urn:x'><B xmlns='urn:y' /></A>";
+			XPathNavigator nav = new XPathDocument (new StringReader(xml)).CreateNavigator ();
+			XmlWriterSettings s = new XmlWriterSettings ();
+			s.OmitXmlDeclaration = true;
+			StringWriter sw = new StringWriter ();
+			XmlWriter w = XmlWriter.Create (sw, s);
+			w.WriteNode (nav, false);
+			w.Close ();
+			AssertType.AreEqual ("<A xmlns=\"urn:x\"><B xmlns=\"urn:y\" /></A>", sw.ToString ());
+		}
+
+		[Test]
+		public void WriteNodeXPathNavigatorAttribute ()
+		{
+			string xml = "<!DOCTYPE root [<!ELEMENT root EMPTY> <!ATTLIST root implicit NMTOKEN 'nam'>]><root attr='val' />";
+			XPathNavigator nav = new XPathDocument (new StringReader (xml)).CreateNavigator ();
+			XmlWriterSettings s = new XmlWriterSettings ();
+			s.OmitXmlDeclaration = true;
+			StringWriter sw = new StringWriter ();
+			XmlWriter w = XmlWriter.Create (sw, s);
+			w.WriteStartElement ("hoge");
+			nav.MoveToFirstChild ();
+			nav.MoveToFirstAttribute ();
+			w.WriteNode (nav, false);
+			nav.MoveToNextAttribute ();
+			w.WriteNode (nav, false);
+			w.Close ();
+			AssertType.AreEqual ("<hoge />", sw.ToString ());
+		}
+
+		[Test]
+		public void WriteStringDifferentBehavior ()
+		{
+			// Messy implementation difference.
+			// from XmlTextWriter -> <foo />
+			// from XmlWriter.XCreate() -> <foo></foo>
+			var sw = new StringWriter ();
+			var xw = XmlWriter.Create (sw);
+			xw.WriteStartElement ("foo");
+			xw.WriteString ("");
+			xw.WriteEndElement ();
+			xw.Close ();
+			AssertType.AreEqual ("<?xml version='1.0' encoding='utf-16'?><foo></foo>".Replace ('\'', '"'), sw.ToString ());
+		}
+
+		//          |       |      |returns the same reader
+		// source   |wrapper|result| |checks state (and err)
+		// overrides|setting|      | | |test name
+		// ---------+----------------------------
+		//      -   | -(Doc)| Doc  | |x|0:CreateNOCL
+		//          | Auto  | Doc  | |x|1:CreateNOCLSettingsCLAuto
+		//          | Doc   | Doc  | |x|2:CreateNOCLSettingsCLDoc
+		//          | Frag  | Doc  | |x|3:CreateNOCLSettingsCLFrag
+		// Auto     | -(Doc)| Doc  | | |4:CreateCLAuto
+		//          | Auto  | Auto |=|x|5:CreateCLAutoSettingsCLAuto
+		//          | Doc   | Doc  | | |6:CreateCLAutoSettingsCLDoc
+		//          | Frag  | Frag | | |7:CreateCLAutoSettingsCLFrag
+		// Document | -(Doc)| Doc  |=|x|8:CreateCLDoc
+		//          | Auto  | Doc  |=|x|9:CreateCLDocSettingsCLAuto
+		//          | Doc   | Doc  |=|x|A:CreateCLDocSettingsCLDoc
+		//          | Frag  | Frag | | |B:CreateCLDocSettingsCLFrag
+		// Fragment | -(Doc)| Doc  | | |C:CreateCLFrag
+		//          | Auto  | Frag |=|x|D:CreateCLFragSettingsCLAuto
+		//          | Doc   | Doc  | | |E:CreateCLFragSettingsCLDoc
+		//          | Frag  | Frag |=|x|F:CreateCLFragSettingsCLFrag
+		//
+		// What we can see from above:
+		// - default ConformanceLevel is Document. (0 4 8 C)
+		// - If wrapper is Auto, it delegates to source. (1 5 9 D)
+		//   - Auto can happen only if both inputs are Auto (5)
+		// - If wrapper is Frag, all but default becomes Frag (7 B F)
+		//   - with default it becomes Document (3)
+		//     So a default value is likely stronger(!)
+		// - Basically, when there is no difference between the wrapper
+		//   and the source settings, it does not create wrapper.
+
+		[Test]
+		public void CreateCLAuto ()
+		{
+			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
+			XmlWriter xw = XmlWriter.Create (cl);
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateCLDoc ()
+		{
+			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
+			XmlWriter xw = XmlWriter.Create (cl);
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreEqual (xw, cl, "#2"); // equal
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		public void CreateCLFrag ()
+		{
+			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
+			XmlWriter xw = XmlWriter.Create (cl);
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateNOCL ()
+		{
+			InvalidWriteState cl = new InvalidWriteState ();
+			Assert.IsNull (cl.Settings, "#0");
+			XmlWriter xw = XmlWriter.Create (cl);
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateNOCLSettingsCLAuto ()
+		{
+			InvalidWriteState cl = new InvalidWriteState ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateNOCLSettingsCLDoc ()
+		{
+			InvalidWriteState cl = new InvalidWriteState ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateNOCLSettingsCLFrag ()
+		{
+			InvalidWriteState cl = new InvalidWriteState ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateCLAutoSettingsCLAuto ()
+		{
+			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
+			Assert.AreEqual (ConformanceLevel.Auto, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreEqual (xw, cl, "#2"); // equal
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		public void CreateCLAutoSettingsCLDoc ()
+		{
+			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		public void CreateCLAutoSettingsCLFrag ()
+		{
+			ConformanceLevelAuto cl = new ConformanceLevelAuto ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
+			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateCLDocSettingsCLAuto ()
+		{
+			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreEqual (xw, cl, "#2"); // equal
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateCLDocSettingsCLDoc ()
+		{
+			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreEqual (xw, cl, "#2"); // equal
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		public void CreateCLDocSettingsCLFrag ()
+		{
+			ConformanceLevelDocument cl = new ConformanceLevelDocument ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
+			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateCLFragSettingsCLAuto ()
+		{
+			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto });
+			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreEqual (xw, cl, "#2"); // equal
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		public void CreateCLFragSettingsCLDoc ()
+		{
+			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document });
+			Assert.AreEqual (ConformanceLevel.Document, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreNotEqual (xw, cl, "#2");
+			WriteState state = xw.WriteState;
+		}
+
+		[Test]
+		[ExpectedException (typeof (InvalidOperationException))]
+		public void CreateCLFragSettingsCLFrag ()
+		{
+			ConformanceLevelFragment cl = new ConformanceLevelFragment ();
+			XmlWriter xw = XmlWriter.Create (cl, new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment });
+			Assert.AreEqual (ConformanceLevel.Fragment, xw.Settings.ConformanceLevel, "#1");
+			Assert.AreEqual (xw, cl, "#2"); // equal
+			WriteState state = xw.WriteState;
+		}
+
+
+	}
+
+	internal class DefaultXmlWriter : XmlWriter
+	{
+		public DefaultXmlWriter () : base ()
+		{
+		}
+
+		public override void Close ()
+		{
+		}
+
+		public override void Flush ()
+		{
+		}
+
+		public override string LookupPrefix (string ns)
+		{
+			return null;
+		}
+
+		public override void WriteBase64 (byte [] buffer, int index, int count)
+		{
+		}
+
+		public override void WriteBinHex (byte [] buffer, int index, int count)
+		{
+		}
+
+		public override void WriteCData (string text)
+		{
+		}
+
+		public override void WriteCharEntity (char ch)
+		{
+		}
+
+		public override void WriteChars (char [] buffer, int index, int count)
+		{
+		}
+
+		public override void WriteComment (string text)
+		{
+		}
+
+		public override void WriteDocType (string name, string pubid, string sysid, string subset)
+		{
+		}
+
+		public override void WriteEndAttribute ()
+		{
+		}
+
+		public override void WriteEndDocument ()
+		{
+		}
+
+		public override void WriteEndElement ()
+		{
+		}
+
+		public override void WriteEntityRef (string name)
+		{
+		}
+
+		public override void WriteFullEndElement ()
+		{
+		}
+
+		public override void WriteName (string name)
+		{
+		}
+
+		public override void WriteNmToken (string name)
+		{
+		}
+
+		public override void WriteNode (XmlReader reader, bool defattr)
+		{
+		}
+
+		public override void WriteProcessingInstruction (string name, string text)
+		{
+		}
+
+		public override void WriteQualifiedName (string localName, string ns)
+		{
+		}
+
+		public override void WriteRaw (string data)
+		{
+		}
+
+		public override void WriteRaw (char [] buffer, int index, int count)
+		{
+		}
+
+		public override void WriteStartAttribute (string prefix, string localName, string ns)
+		{
+		}
+
+		public override void WriteStartDocument (bool standalone)
+		{
+		}
+
+		public override void WriteStartDocument ()
+		{
+		}
+
+		public override void WriteStartElement (string prefix, string localName, string ns)
+		{
+		}
+
+		public override void WriteString (string text)
+		{
+		}
+
+		public override void WriteSurrogateCharEntity (char lowChar, char highChar)
+		{
+		}
+
+		public override void WriteWhitespace (string ws)
+		{
+		}
+
+		public override WriteState WriteState {
+			get {
+				return WriteState.Start;
+			}
+		}
+
+		public override string XmlLang {
+			get {
+				return null;
+			}
+		}
+
+		public override XmlSpace XmlSpace {
+			get {
+				return XmlSpace.None;
+			}
+		}
+
+	}
+
+
+	class InvalidWriteState : XmlWriter {
+		public override void Close () { }
+		public override void Flush () { }
+		public override string LookupPrefix (string ns) { return null; }
+		public override void WriteBase64 (byte [] buffer, int index, int count) { }
+		public override void WriteCData (string text) { }
+		public override void WriteCharEntity (char ch) { }
+		public override void WriteChars (char [] buffer, int index, int count) { }
+		public override void WriteComment (string text) { }
+		public override void WriteDocType (string name, string pubid, string sysid, string subset) { }
+		public override void WriteEndAttribute () { }
+		public override void WriteEndDocument () { }
+		public override void WriteEndElement () { }
+		public override void WriteEntityRef (string name) { }
+		public override void WriteFullEndElement () { }
+		public override void WriteProcessingInstruction (string name, string text) {}
+		public override void WriteRaw (string data) {}
+		public override void WriteRaw (char [] buffer, int index, int count) {}
+		public override void WriteStartAttribute (string prefix, string localName, string ns) {}
+		public override void WriteStartDocument (bool standalone) {}
+		public override void WriteStartDocument () {}
+		public override void WriteStartElement (string prefix, string localName, string ns) {}
+		public override void WriteString (string text) {}
+		public override void WriteSurrogateCharEntity (char lowChar, char highChar) {}
+		public override void WriteWhitespace (string ws) {}
+
+		public override WriteState WriteState {
+			get { throw new InvalidOperationException (); }
+		}
+	}
+
+	class ConformanceLevelAuto : InvalidWriteState {
+		public override XmlWriterSettings Settings {
+			get {
+				return new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Auto };
+			}
+		}
+	}
+
+	class ConformanceLevelDocument : InvalidWriteState {
+		public override XmlWriterSettings Settings {
+			get {
+				return new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Document };
+			}
+		}
+	}
+
+	class ConformanceLevelFragment : InvalidWriteState {
+		public override XmlWriterSettings Settings {
+			get {
+				return new XmlWriterSettings () { ConformanceLevel = ConformanceLevel.Fragment };
+			}
+		}
+	}
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XsdParticleValidationTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XsdParticleValidationTests.cs
@@ -1,225 +1,225 @@
-//
-// MonoTests.System.Xml.XsdParticleValidationTests.cs
-//
-// Author:
-//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
-//
-// (C)2003 Atsushi Enomoto
-//
-using System;
-using System.Xml;
-using System.Xml.Schema;
-using NUnit.Framework;
-
-using ValidationException = System.Xml.Schema.XmlSchemaValidationException;
-
-namespace MonoTests.System.Xml
-{
-//	using XmlValidatingReader = XmlTextReader;
-
-	[TestFixture]
-	public class XsdParticleValidationTests
-	{
-		XmlSchema schema;
-		XmlReader xr;
-		XmlValidatingReader xvr;
-
-		private void PrepareReader1 (string xsdUrl, string xml)
-		{
-			schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/XsdValidation/" + xsdUrl), null);
-			xr = new XmlTextReader (xml, XmlNodeType.Document, null);
-			xvr = new XmlValidatingReader (xr);
-			xvr.Schemas.Add (schema);
-//			xvr = xr as XmlValidatingReader;
-		}
-
-		[Test]
-		public void ValidateRootElementOnlyValid ()
-		{
-			PrepareReader1 ("1.xsd", "<root xmlns='urn:foo' />");
-			xvr.Read ();
-			PrepareReader1 ("1.xsd", "<root xmlns='urn:foo'></root>");
-			xvr.Read ();
-			xvr.Read ();
-		}
-
-		[Test]
-		// LAMESPEC: MS.NET throws XmlSchemaException, not -ValidationException.
-		[ExpectedException (typeof (XmlSchemaException))]
-		public void ValidateRootElementOnlyInvalid ()
-		{
-			PrepareReader1 ("1.xsd", "<invalid xmlns='urn:foo' />");
-			xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateRootElementOnlyInvalid2 ()
-		{
-			PrepareReader1 ("1.xsd", "<root xmlns='urn:foo'><invalid_child/></root>");
-			xvr.Read ();
-			xvr.Read ();
-		}
-
-		[Test]
-		public void ValidateElementContainsElementValid1 ()
-		{
-			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		public void ValidateElementContainsElementValid2 ()
-		{
-			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/><child/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateElementContainsElementInvalid1 ()
-		{
-			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateElementContainsElementInvalid2 ()
-		{
-			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/><child/><child/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		public void ValidateSequenceValid ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateSequenceInvalid1 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateSequenceInvalid2 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateSequenceInvalid3 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateSequenceInvalid4 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/><child1/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateSequenceInvalid5 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/><child1/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		public void ValidateChoiceValid ()
-		{
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/><child1/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateChoiceInvalid1 ()
-		{
-			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/><child1/><child1/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateChoiceInvalid2 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child2/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateChoiceInvalid3 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child1/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (ValidationException))]
-		public void ValidateChoiceInvalid4 ()
-		{
-			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child2/><child2/></root>");
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-	}
-}
+//
+// MonoTests.System.Xml.XsdParticleValidationTests.cs
+//
+// Author:
+//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//
+// (C)2003 Atsushi Enomoto
+//
+using System;
+using System.Xml;
+using System.Xml.Schema;
+using NUnit.Framework;
+
+using ValidationException = System.Xml.Schema.XmlSchemaValidationException;
+
+namespace MonoTests.System.Xml
+{
+//	using XmlValidatingReader = XmlTextReader;
+
+	[TestFixture]
+	public class XsdParticleValidationTests
+	{
+		XmlSchema schema;
+		XmlReader xr;
+		XmlValidatingReader xvr;
+
+		private void PrepareReader1 (string xsdUrl, string xml)
+		{
+			schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/XsdValidation/" + xsdUrl), null);
+			xr = new XmlTextReader (xml, XmlNodeType.Document, null);
+			xvr = new XmlValidatingReader (xr);
+			xvr.Schemas.Add (schema);
+//			xvr = xr as XmlValidatingReader;
+		}
+
+		[Test]
+		public void ValidateRootElementOnlyValid ()
+		{
+			PrepareReader1 ("1.xsd", "<root xmlns='urn:foo' />");
+			xvr.Read ();
+			PrepareReader1 ("1.xsd", "<root xmlns='urn:foo'></root>");
+			xvr.Read ();
+			xvr.Read ();
+		}
+
+		[Test]
+		// LAMESPEC: MS.NET throws XmlSchemaException, not -ValidationException.
+		[ExpectedException (typeof (XmlSchemaException))]
+		public void ValidateRootElementOnlyInvalid ()
+		{
+			PrepareReader1 ("1.xsd", "<invalid xmlns='urn:foo' />");
+			xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateRootElementOnlyInvalid2 ()
+		{
+			PrepareReader1 ("1.xsd", "<root xmlns='urn:foo'><invalid_child/></root>");
+			xvr.Read ();
+			xvr.Read ();
+		}
+
+		[Test]
+		public void ValidateElementContainsElementValid1 ()
+		{
+			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		public void ValidateElementContainsElementValid2 ()
+		{
+			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/><child/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateElementContainsElementInvalid1 ()
+		{
+			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateElementContainsElementInvalid2 ()
+		{
+			PrepareReader1 ("2.xsd", "<root xmlns='urn:foo'><child/><child/><child/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		public void ValidateSequenceValid ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateSequenceInvalid1 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateSequenceInvalid2 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateSequenceInvalid3 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateSequenceInvalid4 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/><child1/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateSequenceInvalid5 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child1/><child2/><child1/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		public void ValidateChoiceValid ()
+		{
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child2/><child2/><child1/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateChoiceInvalid1 ()
+		{
+			PrepareReader1 ("4.xsd", "<root xmlns='urn:foo'><child1/><child1/><child1/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateChoiceInvalid2 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child2/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateChoiceInvalid3 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child2/><child2/><child2/><child1/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (ValidationException))]
+		public void ValidateChoiceInvalid4 ()
+		{
+			PrepareReader1 ("3.xsd", "<root xmlns='urn:foo'><child1/><child2/><child2/><child2/></root>");
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs
@@ -1,633 +1,633 @@
-//
-// MonoTests.System.Xml.XsdValidatingReaderTests.cs
-//
-// Author:
-//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
-//
-// (C)2003 Atsushi Enomoto
-// (C)2005-2007 Novell, Inc.
-//
-using System;
-using System.IO;
-using System.Net;
-using System.Xml;
-using System.Xml.Schema;
-using NUnit.Framework;
-
-namespace MonoTests.System.Xml
-{
-	[TestFixture]
-	public class XsdValidatingReaderTests
-	{
-		public XsdValidatingReaderTests ()
-		{
-		}
-
-		XmlReader xtr;
-		XmlValidatingReader xvr;
-
-		private XmlValidatingReader PrepareXmlReader (string xml)
-		{
-			XmlReader reader = new XmlTextReader (xml, XmlNodeType.Document, null);
-//			XmlDocument doc = new XmlDocument ();
-//			doc.LoadXml (xml);
-//			XmlReader reader = new XmlNodeReader (doc);
-
-			return new XmlValidatingReader (reader);
-		}
-
-		[Test]
-		public void TestEmptySchema ()
-		{
-			string xml = "<root/>";
-			xvr = PrepareXmlReader (xml);
-			xvr.ValidationType = ValidationType.Schema;
-			xvr.Read ();	// Is is missing schema component.
-		}
-
-		[Test]
-		public void TestSimpleValidation ()
-		{
-			string xml = "<root/>";
-			xvr = PrepareXmlReader (xml);
-			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
-			XmlSchema schema = new XmlSchema ();
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			schema.Items.Add (elem);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();	// root
-			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
-			xvr.Read ();	// EOF
-
-			xml = "<hoge/>";
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			try {
-				xvr.Read ();
-				Assert.Fail ("element mismatch is incorrectly allowed");
-			} catch (XmlSchemaException) {
-			}
-
-			xml = "<hoge xmlns='urn:foo' />";
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			try {
-				xvr.Read ();
-				Assert.Fail ("Element in different namespace is incorrectly allowed.");
-			} catch (XmlSchemaException) {
-			}
-		}
-
-		[Test]
-		public void TestReadTypedValueSimple ()
-		{
-			string xml = "<root>12</root>";
-			XmlSchema schema = new XmlSchema ();
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			elem.SchemaTypeName = new XmlQualifiedName ("integer", XmlSchema.Namespace);
-			schema.Items.Add (elem);
-
-			// Lap 1:
-			
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			// Read directly from root.
-			object o = xvr.ReadTypedValue ();
-			Assert.AreEqual (ReadState.Initial, xvr.ReadState);
-			Assert.IsNull (o);
-
-			xvr.Read ();	// element root
-			Assert.AreEqual (XmlNodeType.Element, xvr.NodeType);
-			Assert.IsNotNull (xvr.SchemaType);
-			Assert.IsTrue (xvr.SchemaType is XmlSchemaDatatype);
-			o = xvr.ReadTypedValue ();	// read "12"
-			Assert.AreEqual (XmlNodeType.EndElement, xvr.NodeType);
-			Assert.IsNotNull (o);
-			Assert.AreEqual (typeof (decimal), o.GetType ());
-			decimal n = (decimal) o;
-			Assert.AreEqual (12, n);
-			Assert.IsTrue (!xvr.EOF);
-			Assert.AreEqual ("root", xvr.Name);
-			Assert.IsNull (xvr.SchemaType);	// EndElement's type
-
-			// Lap 2:
-
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();	// root
-			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
-			Assert.IsNotNull (dt);
-			Assert.AreEqual (typeof (decimal), dt.ValueType);
-			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
-			xvr.Read ();	// text "12"
-			Assert.IsNull (xvr.SchemaType);
-			o = xvr.ReadTypedValue ();
-			// ReadTypedValue is different from ReadString().
-			Assert.IsNull (o);
-		}
-
-		[Test]
-		[Ignore ("XML Schema validator should not be available for validating non namespace-aware XmlReader that handled colon as a name character")]
-		public void TestNamespacesFalse ()
-		{
-			// This tests if Namespaces=false is specified, then
-			// the reader's NamespaceURI should be always string.Empty and
-			// validation should be done against such schema that has target ns as "".
-			string xml = "<x:root xmlns:x='urn:foo' />";
-			xvr = PrepareXmlReader (xml);
-			xvr.Namespaces = false;
-			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
-			XmlSchema schema = new XmlSchema ();
-			schema.TargetNamespace = "urn:foo";
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			schema.Items.Add (elem);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();	// root
-			Assert.IsTrue (!xvr.Namespaces);
-			Assert.AreEqual ("x:root", xvr.Name);
-			// LocalName may contain colons.
-			Assert.AreEqual ("x:root", xvr.LocalName);
-			// NamespaceURI is not supplied.
-			Assert.AreEqual ("", xvr.NamespaceURI);
-		}
-
-		[Test]
-		public void TestReadTypedAttributeValue ()
-		{
-			string xml = "<root attr='12'></root>";
-			XmlSchema schema = new XmlSchema ();
-			XmlSchemaElement elem = new XmlSchemaElement ();
-			elem.Name = "root";
-			XmlSchemaComplexType ct = new XmlSchemaComplexType ();
-			XmlSchemaAttribute attr = new XmlSchemaAttribute ();
-			attr.Name = "attr";
-			attr.SchemaTypeName = new XmlQualifiedName ("int", XmlSchema.Namespace);
-			ct.Attributes.Add (attr);
-			elem.SchemaType = ct;
-			schema.Items.Add (elem);
-
-			xvr = PrepareXmlReader (xml);
-			xvr.Schemas.Add (schema);
-			xvr.Read ();
-			Assert.AreEqual ("root", xvr.Name);
-			Assert.IsTrue (xvr.MoveToNextAttribute ());	// attr
-			Assert.AreEqual ("attr", xvr.Name);
-			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
-			Assert.IsNotNull (dt);
-			Assert.AreEqual (typeof (int), dt.ValueType);
-			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
-			object o = xvr.ReadTypedValue ();
-			Assert.AreEqual (XmlNodeType.Attribute, xvr.NodeType);
-			Assert.AreEqual (typeof (int), o.GetType ());
-			int n = (int) o;
-			Assert.AreEqual (12, n);
-			Assert.IsTrue (xvr.ReadAttributeValue ());	// can read = seems not proceed.
-		}
-
-		[Test]
-		public void DuplicateSchemaAssignment ()
-		{
-			string xml = @"<data
-			xmlns='http://www.test.com/schemas/'
-			xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
-			xsi:schemaLocation='http://www.test.com/schemas/ /home/user/schema.xsd' />";
-			string xsd = @"<xs:schema
-			targetNamespace='http://www.test.com/schemas/'
-			xmlns:xs='http://www.w3.org/2001/XMLSchema'
-			xmlns='http://www.test.com/schemas/' >
-		        <xs:element name='data' /></xs:schema>";
-
-			string xmlns = "http://www.test.com/schemas/";
-
-			XmlValidatingReader xvr = new XmlValidatingReader (
-				xml, XmlNodeType.Document, null);
-			XmlSchemaCollection schemas = new XmlSchemaCollection ();
-			schemas.Add (XmlSchema.Read (new XmlTextReader (
-				xsd, XmlNodeType.Document, null), null));
-			xvr.Schemas.Add (schemas);
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		[Test] // bug #76234
-		public void DTDValidatorNamespaceHandling ()
-		{
-			string xml = "<xml xmlns='urn:a'> <foo> <a:bar xmlns='urn:b' xmlns:a='urn:a' /> <bug /> </foo> </xml>";
-			XmlValidatingReader vr = new XmlValidatingReader (
-				xml, XmlNodeType.Document, null);
-			vr.Read ();
-			vr.Read (); // whitespace
-			Assert.AreEqual (String.Empty, vr.NamespaceURI, "#1");
-			vr.Read (); // foo
-			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#2");
-			vr.Read (); // whitespace
-			vr.Read (); // a:bar
-			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#3");
-			vr.Read (); // whitespace
-			vr.Read (); // bug
-			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#4");
-		}
-
-		[Test]
-		public void MultipleSchemaInSchemaLocation ()
-		{
-			XmlTextReader xtr = new XmlTextReader ("Test/XmlFiles/xsd/multi-schemaLocation.xml");
-			XmlValidatingReader vr = new XmlValidatingReader (xtr);
-			while (!vr.EOF)
-				vr.Read ();
-		}
-
-		[Test]
-		public void ReadTypedValueSimpleTypeRestriction ()
-		{
-			string xml = "<root>xx</root><!-- after -->";
-			string xsd = @"
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-  <xs:element name='root'>
-    <xs:simpleType>
-      <xs:restriction base='xs:string'>
-        <xs:minLength value='2' />
-      </xs:restriction>
-    </xs:simpleType>
-  </xs:element>
-</xs:schema>";
-			XmlTextReader xir = 
-				new XmlTextReader (xml, XmlNodeType.Document, null);
-			XmlTextReader xsr =
-				new XmlTextReader (xsd, XmlNodeType.Document, null);
-			XmlValidatingReader vr = new XmlValidatingReader (xir);
-			vr.Schemas.Add (XmlSchema.Read (xsr, null));
-			vr.Read (); // root
-			Assert.AreEqual ("xx", vr.ReadTypedValue ());
-			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
-		}
-
-		// If we normalize string before validating with facets,
-		// this test will fail. It will also fail if ReadTypedValue()
-		// ignores whitespace nodes.
-		[Test]
-		public void ReadTypedValueWhitespaces ()
-		{
-			string xml = "<root>  </root><!-- after -->";
-			string xsd = @"
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-  <xs:element name='root'>
-    <xs:simpleType>
-      <xs:restriction base='xs:string'>
-        <xs:minLength value='2' />
-      </xs:restriction>
-    </xs:simpleType>
-  </xs:element>
-</xs:schema>";
-			XmlTextReader xir = 
-				new XmlTextReader (xml, XmlNodeType.Document, null);
-			XmlTextReader xsr =
-				new XmlTextReader (xsd, XmlNodeType.Document, null);
-			XmlValidatingReader vr = new XmlValidatingReader (xir);
-			vr.Schemas.Add (XmlSchema.Read (xsr, null));
-			vr.Read (); // root
-			Assert.AreEqual ("  ", vr.ReadTypedValue ());
-			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
-		}
-
-		[Test] // bug #77241
-		public void EmptyContentAllowWhitespace ()
-		{
-			string doc = @"
-<root>
-        <!-- some comment -->
-        <child/>
-</root>
-";
-			string schema = @"
-<xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
-    <xsd:element name=""root"">
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element name=""child"" type=""xsd:string"" />
-            </xsd:sequence>
-        </xsd:complexType>
-    </xsd:element>
-</xsd:schema>
-";
-			XmlValidatingReader reader = new XmlValidatingReader (
-				new XmlTextReader (new StringReader (doc)));
-			reader.Schemas.Add (null,
-				new XmlTextReader (new StringReader (schema)));
-			while (reader.Read ())
-				;
-		}
-
-		[Test] // bug #79650
+//
+// MonoTests.System.Xml.XsdValidatingReaderTests.cs
+//
+// Author:
+//	Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//
+// (C)2003 Atsushi Enomoto
+// (C)2005-2007 Novell, Inc.
+//
+using System;
+using System.IO;
+using System.Net;
+using System.Xml;
+using System.Xml.Schema;
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	[TestFixture]
+	public class XsdValidatingReaderTests
+	{
+		public XsdValidatingReaderTests ()
+		{
+		}
+
+		XmlReader xtr;
+		XmlValidatingReader xvr;
+
+		private XmlValidatingReader PrepareXmlReader (string xml)
+		{
+			XmlReader reader = new XmlTextReader (xml, XmlNodeType.Document, null);
+//			XmlDocument doc = new XmlDocument ();
+//			doc.LoadXml (xml);
+//			XmlReader reader = new XmlNodeReader (doc);
+
+			return new XmlValidatingReader (reader);
+		}
+
+		[Test]
+		public void TestEmptySchema ()
+		{
+			string xml = "<root/>";
+			xvr = PrepareXmlReader (xml);
+			xvr.ValidationType = ValidationType.Schema;
+			xvr.Read ();	// Is is missing schema component.
+		}
+
+		[Test]
+		public void TestSimpleValidation ()
+		{
+			string xml = "<root/>";
+			xvr = PrepareXmlReader (xml);
+			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
+			XmlSchema schema = new XmlSchema ();
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			schema.Items.Add (elem);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();	// root
+			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
+			xvr.Read ();	// EOF
+
+			xml = "<hoge/>";
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			try {
+				xvr.Read ();
+				Assert.Fail ("element mismatch is incorrectly allowed");
+			} catch (XmlSchemaException) {
+			}
+
+			xml = "<hoge xmlns='urn:foo' />";
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			try {
+				xvr.Read ();
+				Assert.Fail ("Element in different namespace is incorrectly allowed.");
+			} catch (XmlSchemaException) {
+			}
+		}
+
+		[Test]
+		public void TestReadTypedValueSimple ()
+		{
+			string xml = "<root>12</root>";
+			XmlSchema schema = new XmlSchema ();
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			elem.SchemaTypeName = new XmlQualifiedName ("integer", XmlSchema.Namespace);
+			schema.Items.Add (elem);
+
+			// Lap 1:
+			
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			// Read directly from root.
+			object o = xvr.ReadTypedValue ();
+			Assert.AreEqual (ReadState.Initial, xvr.ReadState);
+			Assert.IsNull (o);
+
+			xvr.Read ();	// element root
+			Assert.AreEqual (XmlNodeType.Element, xvr.NodeType);
+			Assert.IsNotNull (xvr.SchemaType);
+			Assert.IsTrue (xvr.SchemaType is XmlSchemaDatatype);
+			o = xvr.ReadTypedValue ();	// read "12"
+			Assert.AreEqual (XmlNodeType.EndElement, xvr.NodeType);
+			Assert.IsNotNull (o);
+			Assert.AreEqual (typeof (decimal), o.GetType ());
+			decimal n = (decimal) o;
+			Assert.AreEqual (12, n);
+			Assert.IsTrue (!xvr.EOF);
+			Assert.AreEqual ("root", xvr.Name);
+			Assert.IsNull (xvr.SchemaType);	// EndElement's type
+
+			// Lap 2:
+
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();	// root
+			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
+			Assert.IsNotNull (dt);
+			Assert.AreEqual (typeof (decimal), dt.ValueType);
+			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
+			xvr.Read ();	// text "12"
+			Assert.IsNull (xvr.SchemaType);
+			o = xvr.ReadTypedValue ();
+			// ReadTypedValue is different from ReadString().
+			Assert.IsNull (o);
+		}
+
+		[Test]
+		[Ignore ("XML Schema validator should not be available for validating non namespace-aware XmlReader that handled colon as a name character")]
+		public void TestNamespacesFalse ()
+		{
+			// This tests if Namespaces=false is specified, then
+			// the reader's NamespaceURI should be always string.Empty and
+			// validation should be done against such schema that has target ns as "".
+			string xml = "<x:root xmlns:x='urn:foo' />";
+			xvr = PrepareXmlReader (xml);
+			xvr.Namespaces = false;
+			Assert.AreEqual (ValidationType.Auto, xvr.ValidationType);
+			XmlSchema schema = new XmlSchema ();
+			schema.TargetNamespace = "urn:foo";
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			schema.Items.Add (elem);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();	// root
+			Assert.IsTrue (!xvr.Namespaces);
+			Assert.AreEqual ("x:root", xvr.Name);
+			// LocalName may contain colons.
+			Assert.AreEqual ("x:root", xvr.LocalName);
+			// NamespaceURI is not supplied.
+			Assert.AreEqual ("", xvr.NamespaceURI);
+		}
+
+		[Test]
+		public void TestReadTypedAttributeValue ()
+		{
+			string xml = "<root attr='12'></root>";
+			XmlSchema schema = new XmlSchema ();
+			XmlSchemaElement elem = new XmlSchemaElement ();
+			elem.Name = "root";
+			XmlSchemaComplexType ct = new XmlSchemaComplexType ();
+			XmlSchemaAttribute attr = new XmlSchemaAttribute ();
+			attr.Name = "attr";
+			attr.SchemaTypeName = new XmlQualifiedName ("int", XmlSchema.Namespace);
+			ct.Attributes.Add (attr);
+			elem.SchemaType = ct;
+			schema.Items.Add (elem);
+
+			xvr = PrepareXmlReader (xml);
+			xvr.Schemas.Add (schema);
+			xvr.Read ();
+			Assert.AreEqual ("root", xvr.Name);
+			Assert.IsTrue (xvr.MoveToNextAttribute ());	// attr
+			Assert.AreEqual ("attr", xvr.Name);
+			XmlSchemaDatatype dt = xvr.SchemaType as XmlSchemaDatatype;
+			Assert.IsNotNull (dt);
+			Assert.AreEqual (typeof (int), dt.ValueType);
+			Assert.AreEqual (XmlTokenizedType.None, dt.TokenizedType);
+			object o = xvr.ReadTypedValue ();
+			Assert.AreEqual (XmlNodeType.Attribute, xvr.NodeType);
+			Assert.AreEqual (typeof (int), o.GetType ());
+			int n = (int) o;
+			Assert.AreEqual (12, n);
+			Assert.IsTrue (xvr.ReadAttributeValue ());	// can read = seems not proceed.
+		}
+
+		[Test]
+		public void DuplicateSchemaAssignment ()
+		{
+			string xml = @"<data
+			xmlns='http://www.test.com/schemas/'
+			xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+			xsi:schemaLocation='http://www.test.com/schemas/ /home/user/schema.xsd' />";
+			string xsd = @"<xs:schema
+			targetNamespace='http://www.test.com/schemas/'
+			xmlns:xs='http://www.w3.org/2001/XMLSchema'
+			xmlns='http://www.test.com/schemas/' >
+		        <xs:element name='data' /></xs:schema>";
+
+			string xmlns = "http://www.test.com/schemas/";
+
+			XmlValidatingReader xvr = new XmlValidatingReader (
+				xml, XmlNodeType.Document, null);
+			XmlSchemaCollection schemas = new XmlSchemaCollection ();
+			schemas.Add (XmlSchema.Read (new XmlTextReader (
+				xsd, XmlNodeType.Document, null), null));
+			xvr.Schemas.Add (schemas);
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		[Test] // bug #76234
+		public void DTDValidatorNamespaceHandling ()
+		{
+			string xml = "<xml xmlns='urn:a'> <foo> <a:bar xmlns='urn:b' xmlns:a='urn:a' /> <bug /> </foo> </xml>";
+			XmlValidatingReader vr = new XmlValidatingReader (
+				xml, XmlNodeType.Document, null);
+			vr.Read ();
+			vr.Read (); // whitespace
+			Assert.AreEqual (String.Empty, vr.NamespaceURI, "#1");
+			vr.Read (); // foo
+			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#2");
+			vr.Read (); // whitespace
+			vr.Read (); // a:bar
+			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#3");
+			vr.Read (); // whitespace
+			vr.Read (); // bug
+			Assert.AreEqual ("urn:a", vr.NamespaceURI, "#4");
+		}
+
+		[Test]
+		public void MultipleSchemaInSchemaLocation ()
+		{
+			XmlTextReader xtr = new XmlTextReader ("Test/XmlFiles/xsd/multi-schemaLocation.xml");
+			XmlValidatingReader vr = new XmlValidatingReader (xtr);
+			while (!vr.EOF)
+				vr.Read ();
+		}
+
+		[Test]
+		public void ReadTypedValueSimpleTypeRestriction ()
+		{
+			string xml = "<root>xx</root><!-- after -->";
+			string xsd = @"
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+  <xs:element name='root'>
+    <xs:simpleType>
+      <xs:restriction base='xs:string'>
+        <xs:minLength value='2' />
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:element>
+</xs:schema>";
+			XmlTextReader xir = 
+				new XmlTextReader (xml, XmlNodeType.Document, null);
+			XmlTextReader xsr =
+				new XmlTextReader (xsd, XmlNodeType.Document, null);
+			XmlValidatingReader vr = new XmlValidatingReader (xir);
+			vr.Schemas.Add (XmlSchema.Read (xsr, null));
+			vr.Read (); // root
+			Assert.AreEqual ("xx", vr.ReadTypedValue ());
+			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
+		}
+
+		// If we normalize string before validating with facets,
+		// this test will fail. It will also fail if ReadTypedValue()
+		// ignores whitespace nodes.
+		[Test]
+		public void ReadTypedValueWhitespaces ()
+		{
+			string xml = "<root>  </root><!-- after -->";
+			string xsd = @"
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+  <xs:element name='root'>
+    <xs:simpleType>
+      <xs:restriction base='xs:string'>
+        <xs:minLength value='2' />
+      </xs:restriction>
+    </xs:simpleType>
+  </xs:element>
+</xs:schema>";
+			XmlTextReader xir = 
+				new XmlTextReader (xml, XmlNodeType.Document, null);
+			XmlTextReader xsr =
+				new XmlTextReader (xsd, XmlNodeType.Document, null);
+			XmlValidatingReader vr = new XmlValidatingReader (xir);
+			vr.Schemas.Add (XmlSchema.Read (xsr, null));
+			vr.Read (); // root
+			Assert.AreEqual ("  ", vr.ReadTypedValue ());
+			Assert.AreEqual (XmlNodeType.EndElement, vr.NodeType);
+		}
+
+		[Test] // bug #77241
+		public void EmptyContentAllowWhitespace ()
+		{
+			string doc = @"
+<root>
+        <!-- some comment -->
+        <child/>
+</root>
+";
+			string schema = @"
+<xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
+    <xsd:element name=""root"">
+        <xsd:complexType>
+            <xsd:sequence>
+                <xsd:element name=""child"" type=""xsd:string"" />
+            </xsd:sequence>
+        </xsd:complexType>
+    </xsd:element>
+</xsd:schema>
+";
+			XmlValidatingReader reader = new XmlValidatingReader (
+				new XmlTextReader (new StringReader (doc)));
+			reader.Schemas.Add (null,
+				new XmlTextReader (new StringReader (schema)));
+			while (reader.Read ())
+				;
+		}
+
+		[Test] // bug #79650
 		// LAMESPEC: .NET does not throw XmlSchemaValidationException
-		[ExpectedException (typeof (XmlSchemaException))]
-		public void EnumerationFacetOnAttribute ()
-		{
-			string xml = "<test mode='NOT AN ENUMERATION VALUE' />";
-			XmlSchema schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/xsd/79650.xsd"), null);
-			XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
-			xvr.ValidationType = ValidationType.Schema;
-			xvr.Schemas.Add (schema);
-			while (!xvr.EOF)
-				xvr.Read ();
-		}
-
-		class XmlErrorResolver : XmlResolver
-		{
-			public override ICredentials Credentials {
-				set { }
-			}
-
-			public override object GetEntity (Uri uri, string role, Type type)
-			{
-				throw new Exception ();
-			}
-		}
-
-		[Test] // bug #79924
-		public void ValidationTypeNoneIgnoreSchemaLocations ()
-		{
-			string xml = "<project xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='nosuchschema.xsd'/>";
-			XmlValidatingReader vr = new XmlValidatingReader (
-				new XmlTextReader (new StringReader (xml)));
-			vr.ValidationType = ValidationType.None;
-			vr.XmlResolver = new XmlErrorResolver ();
-			while (!vr.EOF)
-				vr.Read ();
-		}
-
-		[Test] // bug #336625
-		public void ValidationTypeNoneIgnoreLocatedSchemaErrors ()
-		{
-			string xml = "<test xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='Test/XmlFiles/xsd/336625.xsd'/>";
-			XmlValidatingReader vr = new XmlValidatingReader (
-				new XmlTextReader (new StringReader (xml)));
-			vr.ValidationType = ValidationType.None;
-			while (!vr.EOF)
-				vr.Read ();
-		}
-
-		[Test]
-		public void Bug81360 ()
-		{
-			string schemaFile = "Test/XmlFiles/xsd/81360.xsd";
-			XmlTextReader treader = new XmlTextReader (schemaFile);
-			XmlSchema sc = XmlSchema.Read (treader, null);
-			sc.Compile (null);
-			string xml = @"<body xmlns='" + sc.TargetNamespace + "'><div></div></body>";
-			XmlTextReader reader = new XmlTextReader (new StringReader (xml));
-			XmlValidatingReader validator = new XmlValidatingReader (reader);
-			validator.Schemas.Add (sc);
-			validator.ValidationType = ValidationType.Schema;
-			while (!validator.EOF)
-				validator.Read ();
-		}
-
-		[Test]
-		public void Bug81460 ()
-		{
-			string xsd = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='foo'><xs:complexType><xs:attribute name='a' default='x' /></xs:complexType></xs:element></xs:schema>";
-			string xml = "<foo/>";
-			XmlReaderSettings s = new XmlReaderSettings ();
-			s.ValidationType = ValidationType.Schema;
-			s.Schemas.Add (XmlSchema.Read (new StringReader (xsd), null));
-			XmlReader r = XmlReader.Create (new StringReader (xml), s);
-			r.Read ();
-			r.MoveToFirstAttribute (); // default attribute
-			Assert.AreEqual (String.Empty, r.Prefix);
-		}
-
-		[Test]
-		// annoyance
-		[ExpectedException (typeof (XmlSchemaValidationException))]
-		public void Bug82099 ()
-		{
-			string xsd = @"
-<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
-  <xsd:element name='Customer' type='CustomerType' />
-  <xsd:complexType name='CustomerType'>
-    <xsd:attribute name='name' type='xsd:string' />
-  </xsd:complexType>
-</xsd:schema>";
-			XmlSchema schema = XmlSchema.Read (new StringReader (xsd), null);
-
-			string xml = "<Customer name='Bob'> </Customer>";
-
-			XmlReaderSettings settings = new XmlReaderSettings ();
-			settings.Schemas.Add (schema);
-			settings.ValidationType = ValidationType.Schema;
-
-			XmlReader reader = XmlReader.Create (new StringReader (xml), settings);
-			
-			reader.Read ();
-			reader.Read ();
-			reader.Read ();
-		}
-
-		[Test]
-		public void Bug82010 ()
-		{
-			string xmlfile = "Test/XmlFiles/xsd/82010.xml";
-			string xsdfile = "Test/XmlFiles/xsd/82010.xsd";
-			XmlTextReader xr = null, xr2 = null;
-			try {
-				xr = new XmlTextReader (xsdfile);
-				xr2 = new XmlTextReader (xmlfile);
-				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
-				xvr.Schemas.Add (XmlSchema.Read (xr, null));
-				while (!xvr.EOF)
-					xvr.Read ();
-			} finally {
-				if (xr2 != null)
-					xr2.Close ();
-				if (xr != null)
-					xr.Close ();
-			}
-		}
-
-		[Test]
-		public void Bug376395 ()
-		{
-			string xmlfile = "Test/XmlFiles/xsd/376395.xml";
-			string xsdfile = "Test/XmlFiles/xsd/376395.xsd";
-			XmlTextReader xr = null, xr2 = null;
-			try {
-				xr = new XmlTextReader (xsdfile);
-				xr2 = new XmlTextReader (xmlfile);
-				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
-				xvr.Schemas.Add (XmlSchema.Read (xr, null));
-				while (!xvr.EOF)
-					xvr.Read ();
-			} finally {
-				if (xr2 != null)
-					xr2.Close ();
-				if (xr != null)
-					xr.Close ();
-			}
-		}
-
-		[Test]
-		public void ValidateMixedInsideXsdAny ()
-		{
-			string xml = @"<root xmlns='urn:foo'>
-  <X><Z>text</Z></X>
-  <Y><X><Z>text</Z></X></Y>
-</root>";
-			string xsd = @"
-<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
-  targetNamespace='urn:foo' xmlns='urn:foo'>
-    <xs:complexType name='root-type'>
-      <xs:sequence><xs:element ref='X' /><xs:element ref='Y' /></xs:sequence>
-    </xs:complexType>
-    <xs:complexType name='X-type'>
-      <xs:choice minOccurs='1' maxOccurs='unbounded'>
-        <xs:any processContents='skip'/>
-      </xs:choice>
-    </xs:complexType>
-    <xs:complexType name='Y-type'>
-      <xs:sequence><xs:element ref='X' /></xs:sequence>
-    </xs:complexType>
-  <xs:element name='root' type='root-type' />
-  <xs:element name='X' type='X-type' />
-  <xs:element name='Y' type='Y-type' />
-</xs:schema>";
-			XmlTextReader xtr = new XmlTextReader (new StringReader (xml));
-			XmlValidatingReader xvr = new XmlValidatingReader (xtr);
-			XmlReader xsr = new XmlTextReader (new StringReader (xsd));
-			xvr.Schemas.Add (XmlSchema.Read (xsr, null));
-			while (!xvr.EOF)
-				xvr.Read ();
-			xtr = new XmlTextReader (new StringReader (xml));
-			xsr = new XmlTextReader (new StringReader (xsd));
-			var s = new XmlReaderSettings ();
-			s.Schemas.Add (XmlSchema.Read (xsr, null));
-			s.ValidationType = ValidationType.Schema;
-			XmlReader xvr2 = XmlReader.Create (xtr, s);
-			while (!xvr2.EOF)
-				xvr2.Read ();
-		}
-
-		[Test]
-		public void WhitespaceAndElementOnly ()
-		{
-			string xsd = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-  <xs:element name='element_list'>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name='element' maxOccurs='unbounded' />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>";
-			string xml = @"<element_list>
-    <!-- blah blah blah -->
-    <element />
-
-    <!-- blah blah -->
-    <element />
-</element_list>";
-			RunValidation (xml, xsd);
-		}
-
-		[Test]
-		[ExpectedException (typeof (XmlSchemaValidationException))]
-		public void EnumerationFacet ()
-		{
-			// bug #339934
-			string xsd = @"<xs:schema id='schema' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
-    <xs:simpleType name='ModeType'>
-        <xs:restriction base='xs:string'>
-            <xs:enumeration value='on' />
-            <xs:enumeration value='off' />
-        </xs:restriction>
-    </xs:simpleType>
-    <xs:element name='test'>
-        <xs:complexType>
-            <xs:sequence/>
-            <xs:attribute name='mode' type='ModeType' use='required' />
-        </xs:complexType>
-    </xs:element>
-</xs:schema>";
-			string xml = @"<test mode='out of scope'></test>";
-
-			RunValidation (xml, xsd);
-		}
-		
-		[Test]
-		public void Bug501763 ()
-		{
-			string xsd1 = @"
-			<xs:schema id='foo1'
-				targetNamespace='foo1'
-				elementFormDefault='qualified'
-				xmlns='foo1'			  
-				xmlns:xs='http://www.w3.org/2001/XMLSchema'
-				xmlns:f2='foo2'>
-
-				<xs:import namespace='foo2' />
-				<xs:element name='Foo1Element' type='f2:Foo2ExtendedType'/>	
-			</xs:schema>";
-
-			string xsd2 = @"
-			<xs:schema id='foo2'
-				targetNamespace='foo2'
-				elementFormDefault='qualified'
-				xmlns='foo2'    
-				xmlns:xs='http://www.w3.org/2001/XMLSchema' >
-
-				<xs:element name='Foo2Element' type='Foo2Type' />
-	
-				<xs:complexType name='Foo2Type'>
-					<xs:attribute name='foo2Attr' type='xs:string' use='required'/>
-				</xs:complexType>
-	
-				<xs:complexType name='Foo2ExtendedType'>
-					<xs:complexContent>
-						<xs:extension base='Foo2Type'>
-							<xs:attribute name='foo2ExtAttr' type='xs:string' use='required'/>
-						</xs:extension>
-					</xs:complexContent>
-				</xs:complexType>
-			</xs:schema>";
-
-			
-			XmlDocument doc = new XmlDocument ();
-			
-			XmlSchema schema1 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd1)), null);
-			XmlSchema schema2 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd2)), null);
-			
-			doc.LoadXml (@"
-				<Foo2Element
-					foo2Attr='dummyvalue1'
-					xmlns='foo2'
-				/>");
-			doc.Schemas.Add (schema2);
-			doc.Validate (null);
-			
-			doc = new XmlDocument();
-			doc.LoadXml(@"
-				<Foo1Element
-					foo2Attr='dummyvalue1'
-					foo2ExtAttr='dummyvalue2'
-					xmlns='foo1'
-				/>");
-			doc.Schemas.Add (schema2);
-			doc.Schemas.Add (schema1);
-			doc.Validate (null);
-		}
-		
-		void RunValidation (string xml, string xsd)
-		{
-			XmlReaderSettings s = new XmlReaderSettings ();
-			s.ValidationType = ValidationType.Schema;
-			s.Schemas.Add (XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null));
-
-			XmlReader r = XmlReader.Create (new StringReader (xml), s);
-			while (!r.EOF)
-				r.Read ();
-		}
-	}
-}
+		[ExpectedException (typeof (XmlSchemaException))]
+		public void EnumerationFacetOnAttribute ()
+		{
+			string xml = "<test mode='NOT AN ENUMERATION VALUE' />";
+			XmlSchema schema = XmlSchema.Read (new XmlTextReader ("Test/XmlFiles/xsd/79650.xsd"), null);
+			XmlValidatingReader xvr = new XmlValidatingReader (xml, XmlNodeType.Document, null);
+			xvr.ValidationType = ValidationType.Schema;
+			xvr.Schemas.Add (schema);
+			while (!xvr.EOF)
+				xvr.Read ();
+		}
+
+		class XmlErrorResolver : XmlResolver
+		{
+			public override ICredentials Credentials {
+				set { }
+			}
+
+			public override object GetEntity (Uri uri, string role, Type type)
+			{
+				throw new Exception ();
+			}
+		}
+
+		[Test] // bug #79924
+		public void ValidationTypeNoneIgnoreSchemaLocations ()
+		{
+			string xml = "<project xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='nosuchschema.xsd'/>";
+			XmlValidatingReader vr = new XmlValidatingReader (
+				new XmlTextReader (new StringReader (xml)));
+			vr.ValidationType = ValidationType.None;
+			vr.XmlResolver = new XmlErrorResolver ();
+			while (!vr.EOF)
+				vr.Read ();
+		}
+
+		[Test] // bug #336625
+		public void ValidationTypeNoneIgnoreLocatedSchemaErrors ()
+		{
+			string xml = "<test xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='Test/XmlFiles/xsd/336625.xsd'/>";
+			XmlValidatingReader vr = new XmlValidatingReader (
+				new XmlTextReader (new StringReader (xml)));
+			vr.ValidationType = ValidationType.None;
+			while (!vr.EOF)
+				vr.Read ();
+		}
+
+		[Test]
+		public void Bug81360 ()
+		{
+			string schemaFile = "Test/XmlFiles/xsd/81360.xsd";
+			XmlTextReader treader = new XmlTextReader (schemaFile);
+			XmlSchema sc = XmlSchema.Read (treader, null);
+			sc.Compile (null);
+			string xml = @"<body xmlns='" + sc.TargetNamespace + "'><div></div></body>";
+			XmlTextReader reader = new XmlTextReader (new StringReader (xml));
+			XmlValidatingReader validator = new XmlValidatingReader (reader);
+			validator.Schemas.Add (sc);
+			validator.ValidationType = ValidationType.Schema;
+			while (!validator.EOF)
+				validator.Read ();
+		}
+
+		[Test]
+		public void Bug81460 ()
+		{
+			string xsd = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='foo'><xs:complexType><xs:attribute name='a' default='x' /></xs:complexType></xs:element></xs:schema>";
+			string xml = "<foo/>";
+			XmlReaderSettings s = new XmlReaderSettings ();
+			s.ValidationType = ValidationType.Schema;
+			s.Schemas.Add (XmlSchema.Read (new StringReader (xsd), null));
+			XmlReader r = XmlReader.Create (new StringReader (xml), s);
+			r.Read ();
+			r.MoveToFirstAttribute (); // default attribute
+			Assert.AreEqual (String.Empty, r.Prefix);
+		}
+
+		[Test]
+		// annoyance
+		[ExpectedException (typeof (XmlSchemaValidationException))]
+		public void Bug82099 ()
+		{
+			string xsd = @"
+<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
+  <xsd:element name='Customer' type='CustomerType' />
+  <xsd:complexType name='CustomerType'>
+    <xsd:attribute name='name' type='xsd:string' />
+  </xsd:complexType>
+</xsd:schema>";
+			XmlSchema schema = XmlSchema.Read (new StringReader (xsd), null);
+
+			string xml = "<Customer name='Bob'> </Customer>";
+
+			XmlReaderSettings settings = new XmlReaderSettings ();
+			settings.Schemas.Add (schema);
+			settings.ValidationType = ValidationType.Schema;
+
+			XmlReader reader = XmlReader.Create (new StringReader (xml), settings);
+			
+			reader.Read ();
+			reader.Read ();
+			reader.Read ();
+		}
+
+		[Test]
+		public void Bug82010 ()
+		{
+			string xmlfile = "Test/XmlFiles/xsd/82010.xml";
+			string xsdfile = "Test/XmlFiles/xsd/82010.xsd";
+			XmlTextReader xr = null, xr2 = null;
+			try {
+				xr = new XmlTextReader (xsdfile);
+				xr2 = new XmlTextReader (xmlfile);
+				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
+				xvr.Schemas.Add (XmlSchema.Read (xr, null));
+				while (!xvr.EOF)
+					xvr.Read ();
+			} finally {
+				if (xr2 != null)
+					xr2.Close ();
+				if (xr != null)
+					xr.Close ();
+			}
+		}
+
+		[Test]
+		public void Bug376395 ()
+		{
+			string xmlfile = "Test/XmlFiles/xsd/376395.xml";
+			string xsdfile = "Test/XmlFiles/xsd/376395.xsd";
+			XmlTextReader xr = null, xr2 = null;
+			try {
+				xr = new XmlTextReader (xsdfile);
+				xr2 = new XmlTextReader (xmlfile);
+				XmlValidatingReader xvr = new XmlValidatingReader (xr2);
+				xvr.Schemas.Add (XmlSchema.Read (xr, null));
+				while (!xvr.EOF)
+					xvr.Read ();
+			} finally {
+				if (xr2 != null)
+					xr2.Close ();
+				if (xr != null)
+					xr.Close ();
+			}
+		}
+
+		[Test]
+		public void ValidateMixedInsideXsdAny ()
+		{
+			string xml = @"<root xmlns='urn:foo'>
+  <X><Z>text</Z></X>
+  <Y><X><Z>text</Z></X></Y>
+</root>";
+			string xsd = @"
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
+  targetNamespace='urn:foo' xmlns='urn:foo'>
+    <xs:complexType name='root-type'>
+      <xs:sequence><xs:element ref='X' /><xs:element ref='Y' /></xs:sequence>
+    </xs:complexType>
+    <xs:complexType name='X-type'>
+      <xs:choice minOccurs='1' maxOccurs='unbounded'>
+        <xs:any processContents='skip'/>
+      </xs:choice>
+    </xs:complexType>
+    <xs:complexType name='Y-type'>
+      <xs:sequence><xs:element ref='X' /></xs:sequence>
+    </xs:complexType>
+  <xs:element name='root' type='root-type' />
+  <xs:element name='X' type='X-type' />
+  <xs:element name='Y' type='Y-type' />
+</xs:schema>";
+			XmlTextReader xtr = new XmlTextReader (new StringReader (xml));
+			XmlValidatingReader xvr = new XmlValidatingReader (xtr);
+			XmlReader xsr = new XmlTextReader (new StringReader (xsd));
+			xvr.Schemas.Add (XmlSchema.Read (xsr, null));
+			while (!xvr.EOF)
+				xvr.Read ();
+			xtr = new XmlTextReader (new StringReader (xml));
+			xsr = new XmlTextReader (new StringReader (xsd));
+			var s = new XmlReaderSettings ();
+			s.Schemas.Add (XmlSchema.Read (xsr, null));
+			s.ValidationType = ValidationType.Schema;
+			XmlReader xvr2 = XmlReader.Create (xtr, s);
+			while (!xvr2.EOF)
+				xvr2.Read ();
+		}
+
+		[Test]
+		public void WhitespaceAndElementOnly ()
+		{
+			string xsd = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+  <xs:element name='element_list'>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name='element' maxOccurs='unbounded' />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>";
+			string xml = @"<element_list>
+    <!-- blah blah blah -->
+    <element />
+
+    <!-- blah blah -->
+    <element />
+</element_list>";
+			RunValidation (xml, xsd);
+		}
+
+		[Test]
+		[ExpectedException (typeof (XmlSchemaValidationException))]
+		public void EnumerationFacet ()
+		{
+			// bug #339934
+			string xsd = @"<xs:schema id='schema' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+    <xs:simpleType name='ModeType'>
+        <xs:restriction base='xs:string'>
+            <xs:enumeration value='on' />
+            <xs:enumeration value='off' />
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:element name='test'>
+        <xs:complexType>
+            <xs:sequence/>
+            <xs:attribute name='mode' type='ModeType' use='required' />
+        </xs:complexType>
+    </xs:element>
+</xs:schema>";
+			string xml = @"<test mode='out of scope'></test>";
+
+			RunValidation (xml, xsd);
+		}
+		
+		[Test]
+		public void Bug501763 ()
+		{
+			string xsd1 = @"
+			<xs:schema id='foo1'
+				targetNamespace='foo1'
+				elementFormDefault='qualified'
+				xmlns='foo1'			  
+				xmlns:xs='http://www.w3.org/2001/XMLSchema'
+				xmlns:f2='foo2'>
+
+				<xs:import namespace='foo2' />
+				<xs:element name='Foo1Element' type='f2:Foo2ExtendedType'/>	
+			</xs:schema>";
+
+			string xsd2 = @"
+			<xs:schema id='foo2'
+				targetNamespace='foo2'
+				elementFormDefault='qualified'
+				xmlns='foo2'    
+				xmlns:xs='http://www.w3.org/2001/XMLSchema' >
+
+				<xs:element name='Foo2Element' type='Foo2Type' />
+	
+				<xs:complexType name='Foo2Type'>
+					<xs:attribute name='foo2Attr' type='xs:string' use='required'/>
+				</xs:complexType>
+	
+				<xs:complexType name='Foo2ExtendedType'>
+					<xs:complexContent>
+						<xs:extension base='Foo2Type'>
+							<xs:attribute name='foo2ExtAttr' type='xs:string' use='required'/>
+						</xs:extension>
+					</xs:complexContent>
+				</xs:complexType>
+			</xs:schema>";
+
+			
+			XmlDocument doc = new XmlDocument ();
+			
+			XmlSchema schema1 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd1)), null);
+			XmlSchema schema2 = XmlSchema.Read (XmlReader.Create (new StringReader (xsd2)), null);
+			
+			doc.LoadXml (@"
+				<Foo2Element
+					foo2Attr='dummyvalue1'
+					xmlns='foo2'
+				/>");
+			doc.Schemas.Add (schema2);
+			doc.Validate (null);
+			
+			doc = new XmlDocument();
+			doc.LoadXml(@"
+				<Foo1Element
+					foo2Attr='dummyvalue1'
+					foo2ExtAttr='dummyvalue2'
+					xmlns='foo1'
+				/>");
+			doc.Schemas.Add (schema2);
+			doc.Schemas.Add (schema1);
+			doc.Validate (null);
+		}
+		
+		void RunValidation (string xml, string xsd)
+		{
+			XmlReaderSettings s = new XmlReaderSettings ();
+			s.ValidationType = ValidationType.Schema;
+			s.Schemas.Add (XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null));
+
+			XmlReader r = XmlReader.Create (new StringReader (xml), s);
+			while (!r.EOF)
+				r.Read ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/ITest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/ITest.cs
@@ -10,15 +10,15 @@
 // Mainsoft Corporation (c) 2003-2004
 //
 //**************************************************************************
-using System;
-
-namespace nist_dom
-{
-	/// <summary>
-	/// Summary description for ITest.
-	/// </summary>
-	public interface ITest
-	{
-        testResults[] RunTests();
-	}
-}
+using System;
+
+namespace nist_dom
+{
+	/// <summary>
+	/// Summary description for ITest.
+	/// </summary>
+	public interface ITest
+	{
+        testResults[] RunTests();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Comment/Comment.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Comment/Comment.cs
@@ -1,78 +1,78 @@
-//**************************************************************************
-//
-//
-//                       National Institute Of Standards and Technology
-//                                     DTS Version 1.0
-//         
-//                                      Comment Interface
-//
-// Written by: Carmelo Montanez
-//
-// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
-// Mainsoft Corporation (c) 2003-2004
-//
-//**************************************************************************
-using System;
-using System.Xml;
-using nist_dom;
-using NUnit.Framework;
-
-namespace nist_dom.fundamental
-{
-    /// <summary>
-    /// Summary description for Comment.
-    /// </summary>
-    [TestFixture]
-    public class CommentTest//,ITest
-    {
-        public static int i = 1;
-/*
-        public testResults[] RunTests()
-        {
-            testResults[] tests = new testResults[] {core0001CO()};
-  
-            return tests;
-        }
-*/
-        //------------------------ test case core-0001CO ------------------------
-        //
-        // Testing feature - A comment is all the characters between the starting 
-        //                   "<!--" and ending "-->" strings. 
-        //
-        // Testing approach - Retrieve the third child in the DOM document.  
-        //                    This node is a comment node and its value is the 
-        //                    content of the node.
-        //
-        // Semantic Requirements: 1
-        //
-        //----------------------------------------------------------------------------
-
-	[Test]
-        public void core0001CO()
-        {
-            string computedValue = "";
-            string expectedValue = " This is comment number 1.";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0001CO");
-
-            results.description = "A comment is all the characters between the " + "start comment and end comment strings.";
-            //
-            // Retrieve the targeted data and access its nodeValue.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(2); 
-            computedValue = testNode.Value;//nodeValue;
-            //
-            // Write out results 
-            //
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0001CO --------------------------
-    }
-
-}
+//**************************************************************************
+//
+//
+//                       National Institute Of Standards and Technology
+//                                     DTS Version 1.0
+//         
+//                                      Comment Interface
+//
+// Written by: Carmelo Montanez
+//
+// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
+// Mainsoft Corporation (c) 2003-2004
+//
+//**************************************************************************
+using System;
+using System.Xml;
+using nist_dom;
+using NUnit.Framework;
+
+namespace nist_dom.fundamental
+{
+    /// <summary>
+    /// Summary description for Comment.
+    /// </summary>
+    [TestFixture]
+    public class CommentTest//,ITest
+    {
+        public static int i = 1;
+/*
+        public testResults[] RunTests()
+        {
+            testResults[] tests = new testResults[] {core0001CO()};
+  
+            return tests;
+        }
+*/
+        //------------------------ test case core-0001CO ------------------------
+        //
+        // Testing feature - A comment is all the characters between the starting 
+        //                   "<!--" and ending "-->" strings. 
+        //
+        // Testing approach - Retrieve the third child in the DOM document.  
+        //                    This node is a comment node and its value is the 
+        //                    content of the node.
+        //
+        // Semantic Requirements: 1
+        //
+        //----------------------------------------------------------------------------
+
+	[Test]
+        public void core0001CO()
+        {
+            string computedValue = "";
+            string expectedValue = " This is comment number 1.";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0001CO");
+
+            results.description = "A comment is all the characters between the " + "start comment and end comment strings.";
+            //
+            // Retrieve the targeted data and access its nodeValue.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(2); 
+            computedValue = testNode.Value;//nodeValue;
+            //
+            // Write out results 
+            //
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0001CO --------------------------
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Document/Document.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Document/Document.cs
@@ -1,1331 +1,1331 @@
-//**************************************************************************
-//
-//
-//                       National Institute Of Standards and Technology
-//                                     DTS Version 1.0
-//         
-//                                   Document Interface
-//
-// Written by: Carmelo Montanez
-// Modified by:  Mary Brady
-//
-// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
-// Mainsoft Corporation (c) 2003-2004
-//**************************************************************************
-using System;
-using System.Xml;
-
-using nist_dom;
-using NUnit.Framework;
-
-namespace nist_dom.fundamental
-{
-    [TestFixture]
-    public class DocumentTest
-    {
-        public static int i = 2;
-/*
-        public testResults[] RunTests()
-        {
-            testResults[] tests = new testResults[] {core0001D(), core0002D(), core0003D(), core0004D(),
-                                                        core0005D(), core0006D(), core0007D(), core0008D(),
-                                                        core0009D(), core0010D(), core0011D(), core0012D(),
-                                                        core0013D(), core0014D(), core0015D(), 
-                                                        core0019D(), core0020D(),
-                                                        core0021D(), core0022D(), core0023D(), core0024D(),
-                                                        core0025D()};
-  
-            return tests;
-        }
-*/
-
-
-        //------------------------ test case core-0001T ------------------------
-        //
-        // Testing feature - The doctype attribute contains the Document Type 
-        //                   Declaration associated with this Document. 
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    doctype attribute.  It should return the Document
-        //                    type of this document.  Its document Type name 
-        //                    should be equal to "staff".
-        //                    
-        // Semantic Requirements: 1
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0001D()
-        {
-            string computedValue = "";
-            string expectedValue = "staff";
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0001D");
-
-            results.description = "The doctype attribute contains the Document Type "+
-                "Declaration associated with this object.";  
-            //
-            // Retrieve the targeted data and access its "doctype" attribute.
-            //
-            testNode = util.getDOMDocument(); 
-            System.Xml.XmlDocumentType dtype = testNode.DocumentType;
-            computedValue = dtype.Name;
-
-            //
-            // Write out results. 
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0001D --------------------------
-        //
-        //-------------------------- test case core-0002D ----------------------------
-        //
-        // Testing feature - The doctype attribute returns null for HTML documents.
-        //
-        // Testing approach - Retrieve the an HTML DOM document and invoke its
-        //                    doctype attribute.  It should return null. 
-        //
-        // Semantic Requirements: 2 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0002D()
-        {
-            string testName = "core-0002D";
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0002D");
-
-            results.description = "The doctype attribute returns null for HTML "+
-                "documents";
-            //
-            // Retrieve the targeted data and access its "doctype" attribute.
-            //
-            testNode = util.getDOMHTMLDocument();
-            computedValue = (testNode.DocumentType == null).ToString();
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0002D --------------------------
-        //
-        //-------------------------- test case core-0003D ----------------------------
-        //
-        // Testing feature - The doctype attribute returns null for XML documents
-        //                   without a document type declaration.
-        //
-        // Testing approach - Retrieve an XML DOM document without a Document 
-        //                    Type Declaration and invoke its doctype attribute.  
-        //                    It should return null.
-        //
-        // Semantic Requirements: 2
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0003D()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0003D");
-
-            results.description = "The doctype attribute returns null for XML "+
-                " documents without a Document Type Declaration.";
-            //
-            // Retrieve the targeted data and access its "doctype" attribute.
-            //
-            testNode = util.getnoDTDXMLDocument();
-            computedValue = (testNode.DocumentType == null).ToString();
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0003D --------------------------
-        //
-        //-------------------------- test case core-0004D ----------------------------
-        //
-        // Testing feature - The implementation attribute contains the 
-        //                   DOMImplementation object that handles this document.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "implementation" attribute.  It should return a
-        //                    DOMImplementation object whose "hasFeature("XML,"1.0")
-        //                    method is invoke and a true value expected.  
-        //
-        // Semantic Requirements: 3 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0004D()
-        {
-            string computedValue = "";
-            string expectedValue = "True";
-            System.Xml.XmlImplementation domImp = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0004D"); 
-
-            results.description = "The implementation attribute contains the "+
-                "DOMImplementation object that handles this"+
-                " document.";
-            //
-            // Retrieve the targeted data and access its "implementation" attribute.
-            //
-            testNode = util.getDOMDocument();
-            domImp = testNode.Implementation;
-            //
-            // The "hasFeature" method should return true.
-            //
-            computedValue = domImp.HasFeature("XML","1.0").ToString(); 
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0004D --------------------------
-        //
-        //-------------------------- test case core-0005D ----------------------------
-        //
-        // Testing feature - The documentElement attribute provides direct access
-        //                   to the child node that is the root element of the
-        //                   document.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "documentElement" attribute.  It should return an 
-        //                    Element node whose "tagName" attribute is "staff". 
-        //
-        // Semantic Requirements: 4 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0005D()
-        {
-            string computedValue = "";
-            string expectedValue = "staff";
-            System.Xml.XmlElement rootNode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0005D");
-
-            results.description = "The documentElement attribute provides direct "+
-                "to the root node of the document.";
-            //
-            // Retrieve the targeted data and access its "documentElement" attribute.
-            //
-            testNode = util.getDOMDocument();
-            rootNode = testNode.DocumentElement;
-            //
-            // Its tagName should be set to "staff".
-            //
-            computedValue = rootNode.Name;//tagName;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0005D --------------------------
-        //
-        //-------------------------- test case core-0006D ----------------------------
-        //
-        // Testing feature - For HTML documents, the documentElement attribute returns
-        //                   the Element with the HTML tag.
-        //
-        // Testing approach - Retrieve an HTML DOM document and invoke its
-        //                    "documentElement" attribute.  It should return the 
-        //                    Element whose "tagName" is "HTML".
-        //
-        // Semantic Requirements: 5 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0006D()
-        {
-            string computedValue = "";
-            string expectedValue = "HTML";
-            System.Xml.XmlElement rootNode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0006D");
-
-            results.description = "For HTML documents, the documentElement attribute "+
-                "returns the element with the HTML tag.";
-            //
-            // Retrieve the targeted data and access its "documentElement" attribute.
-            //
-            testNode = util.getDOMHTMLDocument();
-            rootNode = testNode.DocumentElement;
-            //
-            // Its tagName should be set to "HTML".
-            //
-            computedValue = rootNode.Name;//tagName;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0006D --------------------------
-        //
-        //-------------------------- test case core-0007D ----------------------------
-        //
-        // Testing feature - The "createElement(tagName)" method creates an Element of
-        //                   the type specified. 
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createElement(tagName)" method with tagName="address".
-        //                    The method should create an instance of an Element 
-        //                    node whose tagName is "address".  The type, value and
-        //                    are further checked.
-        //
-        // Semantic Requirements: 6 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0007D()
-        {
-            string computedValue = "";
-            string expectedValue = "address Element ";
-            System.Xml.XmlElement newElement = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0007D");
-
-            results.description = "The \"createElement(tagName)\" method creates an "+
-                "Element of the specified type.";
-            //
-            // Retrieve the targeted data and invoke its "createElement" attribute.
-            //
-            testNode = util.getDOMDocument();
-            newElement = testNode.CreateElement("address");
-            //
-            // Retrieve the characteristics of this new object.
-            //
-            computedValue = newElement.Name+" ";//tagName
-            computedValue += newElement.NodeType +" ";
-            computedValue += newElement.Value;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0007D --------------------------
-        //
-        //-------------------------- test case core-0008D ----------------------------
-        //
-        // Testing feature - The tagName parameter in the "createElement(tagName)"
-        //                   method is case-sensitive for XML documents.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createElement(tagName)" method twice for tagName 
-        //                    equal "address" and "ADDRESS".  Each call should
-        //                    create two distinct Element nodes.  Each Element
-        //                    is in turn assigned an attribute and then that 
-        //                    attribute is retrieved. 
-        //
-        // Semantic Requirements: 7 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0008D()
-        {
-            string computedValue = "";
-            string expectedValue = "Fort Worth Dallas";
-            System.Xml.XmlElement newElement1 = null;
-            System.Xml.XmlElement newElement2 = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0008D");
-
-            results.description = "The tagName parameter in the \"createElement( "+
-                "tagName)\" method is case-sensitive for XML "+
-                "documents.";
-            //
-            // Retrieve the targeted data and invoke its "createElement" method.
-            //
-            testNode = util.getDOMDocument();
-            newElement1 = testNode.CreateElement("ADDRESS");
-            newElement2 = testNode.CreateElement("address");
-            //
-            // Assign attributes for each one of the created Elements.
-            //
-            newElement1.SetAttribute("district","Fort Worth");
-            newElement2.SetAttribute("county","Dallas");
-            //
-            // Now retrieve the values of each Element's attribute.
-            //
-            computedValue += newElement1.GetAttribute("district")+" ";
-            computedValue += newElement2.GetAttribute("county");
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0008D --------------------------
-        //
-        //-------------------------- test case core-0009D ----------------------------
-        //
-        // Testing feature - The "createDocumentFragment()" method creates an 
-        //                   empty DocumentFragment object.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    createDocumentFragment() method.  The content, name,
-        //                    type and value of the newly created object are
-        //                    further retrieved and checked.
-        //
-        // Semantic Requirements: 8 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0009D()
-        {
-            string computedValue = "";
-            string expectedValue = "0 #document-fragment DocumentFragment ";//"0 #document-fragment 11 null";
-            System.Xml.XmlDocumentFragment newDocFragment = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0009D");
-
-            results.description = "The \"createDocumentFragment()\" method creates "+
-                "an empty DocumentFragment object.";
-            //
-            // Retrieve the targeted data and invoke its "createDocumentFragment()" 
-            // method.
-            //
-            testNode = util.getDOMDocument();
-            newDocFragment = testNode.CreateDocumentFragment();
-            //
-            // Retrieve the characterstics of the newly created object.
-            //
-            computedValue += newDocFragment.ChildNodes.Count +" ";
-            computedValue += newDocFragment.Name+" ";
-            computedValue += newDocFragment.NodeType+" ";
-            computedValue += newDocFragment.Value;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0009D --------------------------
-        //
-        //-------------------------- test case core-0010D ----------------------------
-        //
-        // Testing feature - The "createTextNode(data)" method creates a Text node
-        //                   given by the specified string. 
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its 
-        //                    "createTextNode(data)" method.  It should create a
-        //                    new Text node whose data is the specified string.  The
-        //                    name and type of the newly created object are further
-        //                    retrieved and checked.
-        //
-        // Semantic Requirements: 9 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0010D()
-        {
-            string computedValue = "";
-            string expectedValue = "This is a new Text node #text Text";//"This is a new Text node #text 3";
-            System.Xml.XmlText newTextNode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0010D");
-
-            results.description = "The \"createTextNode(data)\" method creates "+
-                "a Text node given by the specified string.";
-            //
-            // Retrieve the targeted data and invoke its "createTextNode(data)" method.
-            //
-            testNode = util.getDOMDocument();
-            newTextNode = testNode.CreateTextNode("This is a new Text node");
-            //
-            // Retrieve the characteristics of the newly created object.
-            //
-            computedValue += newTextNode.Data+" ";
-            computedValue += newTextNode.Name+" ";
-            computedValue += newTextNode.NodeType;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-    
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0010D --------------------------
-        //
-        //-------------------------- test case core-0011D ----------------------------
-        //
-        // Testing feature - The "createComment(data)" method creates a new Comment 
-        //                   node given the specified string.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createComment(data)" method.  It should create a
-        //                    new Comment node whose data is the specified string. 
-        //                    The content, name and type of the newly created 
-        //                    object are further retrieved and examined.
-        //
-        // Semantic Requirements: 10
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0011D()
-        {
-            string computedValue = "";
-            string expectedValue = "This is a new Comment node #comment Comment";//"This is a new Comment node #comment 8";
-            System.Xml.XmlComment newCommentNode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0011D");
-
-            results.description = "The \"createComment(data)\" method creates "+
-                "a new comment node given by the specified string.";
-            //
-            // Retrieve the targeted data and invoke its "createComment(data)" method.
-            //
-            testNode = util.getDOMDocument();
-            newCommentNode = testNode.CreateComment("This is a new Comment node");
-            //
-            // Retrieve the characteristics of the new object.
-            //
-            computedValue += newCommentNode.Data+" ";
-            computedValue += newCommentNode.Name+" ";
-            computedValue += newCommentNode.NodeType;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0011D --------------------------
-        //
-        //-------------------------- test case core-0012D ----------------------------
-        //
-        // Testing feature - The "createCDATASection(data)" method creates a new 
-        //                   CDATASection node whose value is the specified string.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createCDATASection(data)" method.  It should create a
-        //                    new CDATASection node whose data is the specified string.
-        //                    The content, name and type of the newly created
-        //                    object are further retrieved and examined.
-        //
-        // Semantic Requirements: 11
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0012D()
-        {
-            string computedValue = "";
-            string expectedValue = "This is a new CDATASection node #cdata-section CDATA";//"This is a new CDATASection node #cdata-section 4";
-            System.Xml.XmlCDataSection newCDATASectionNode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0012D");
-
-            results.description = "The \"createCDATASection(data)\" method creates "+
-                "a new CDATASection node whose value is the "+
-                "specified string.";
-            //
-            // Retrieve the targeted data and invoke its "createCDATASection(data)"
-            // method.
-            //
-            testNode = util.getDOMDocument();
-            newCDATASectionNode = testNode.CreateCDataSection("This is a new CDATASection node");
-            //
-            // Retrieve the characteristics of the new object.
-            //
-            computedValue += newCDATASectionNode.Data+" ";
-            computedValue += newCDATASectionNode.Name+" ";
-            computedValue += newCDATASectionNode.NodeType;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0012D --------------------------
-        //
-        //-------------------------- test case core-0013D ----------------------------
-        //
-        // Testing feature - The "createProcessingInstruction(target,data)" method
-        //                   creates a new ProcessingInstruction node with the 
-        //                   specified name and data strings.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createProcessingInstruction(target,data)" method.  It 
-        //                    should create a new PI node with the specified target
-        //                    and data.  The target, data and type of the newly created
-        //                    object are further retrieved and examined.
-        //
-        // Semantic Requirements: 12
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0013D()
-        {
-            string computedValue = "";
-            string expectedValue = "XML This is a new PI node ProcessingInstruction";//"XML This is a new PI node 7";
-            System.Xml.XmlProcessingInstruction newPINode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0013D");
-
-            results.description = "The \"createProcessingInstruction(target,data)\" "+
-                "method creates a new processingInstruction node.";
-            //
-            // Retrieve the targeted data and invoke its 
-            // "createProcessingInstruction(target,data)" method.
-            //
-            testNode = util.getDOMDocument();
-            newPINode = testNode.CreateProcessingInstruction("XML","This is a new PI node");
-            //
-            // Retrieve the characteristics of the new object.
-            //
-            computedValue += newPINode.Target+" ";
-            computedValue += newPINode.Data+" ";
-            computedValue += newPINode.NodeType;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0013D --------------------------
-        //
-        //-------------------------- test case core-0014D ----------------------------
-        //
-        // Testing feature - The "createAttribute(name)" method creates an Attr 
-        //                   node of the given name.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createAttribute(name)" method.  It should create a 
-        //                    new Attr node with the given name.  The name, value 
-        //                    and type of the newly created object are further 
-        //                    retrieved and examined.
-        //
-        // Semantic Requirements: 13
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0014D()
-        {
-            string computedValue = "";
-            string expectedValue = "district Attribute";//"district 2";
-            System.Xml.XmlAttribute newAttrNode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0014D"); 
-
-            results.description = "The \"createAttribute(name)\" method creates "+
-                "a new Attr node of the given name.";
-            //
-            // Retrieve the targeted data and invoke its "createAttribute(name)"
-            // method.
-            //
-            testNode = util.getDOMDocument();
-            newAttrNode = testNode.CreateAttribute("district");
-            //
-            // Retrieve the characteristics of the new object.
-            //
-            computedValue += newAttrNode.Name+" ";
-            computedValue += newAttrNode.Value;
-            computedValue += newAttrNode.NodeType;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0014D --------------------------
-        //
-        //-------------------------- test case core-0015D ----------------------------
-        //
-        // Testing feature - The "createEntityReference(name)" method creates an 
-        //                   EntityReference node. 
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createEntityReference(name)" method.  It should
-        //                    create a new EntityReference node for the Entity
-        //                    with the given name.  The name, value and type of 
-        //                    the newly created object are further retrieved 
-        //                    and examined.
-        //
-        // Semantic Requirements: 14
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0015D()
-        {
-            string computedValue = "";
-            string expectedValue = "ent1  EntityReference";//"ent1 null 5";
-            System.Xml.XmlEntityReference newEntRefNode = null;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0015D");
-
-            results.description = "The \"createEntityReference(name)\" method creates "+
-                "a new EntityReference node.";
-            //
-            // Retrieve the targeted data and invoke its "createEntityReference(name)"
-            // method.
-            //
-            testNode = util.getDOMDocument();
-            newEntRefNode = testNode.CreateEntityReference("ent1");
-            //
-            // Retrieve the characteristics of the new object.
-            //
-            computedValue += newEntRefNode.Name+" ";
-            computedValue += newEntRefNode.Value+" ";
-            computedValue += newEntRefNode.NodeType;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0015D --------------------------
-        //
-        //-------------------------- test case core-0016D ----------------------------
-        //
-        // Testing feature - The "getElementsByTagName(tagName)" method returns a
-        //                   NodeList of all the Elements with a given tagName.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "getElementsByTagName(tagName)" method with tagName
-        //                    equal to "name".  The method should return a NodeList
-        //                    that contains 5 elements.  
-        //
-        // Semantic Requirements: 15
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0016D()
-        {
-            string computedValue = "0";//0;
-            string expectedValue = "5";//5;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0016D");
-
-            results.description = "The \"getElementsByTagName(tagName)\" method "+
-                "returns a NodeList of all the Elements with a "+
-                "given tag name.";
-            //
-            // Retrieve the targeted data and invoke its "getElementsByTagName(tagName)"
-            // method.
-            //
-            testNode = util.getDOMDocument();
-            System.Xml.XmlNodeList elementList = testNode.GetElementsByTagName("name");
-            //
-            // Retrieve the length of the list.
-            //
-            computedValue = elementList.Count.ToString();
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0016D --------------------------
-        //
-        //-------------------------- test case core-0017D ----------------------------
-        //
-        // Testing feature - The "getElementsByTagName(tagName)" method returns a
-        //                   NodeList of all the Elements with a given tagName in
-        //                   a pre-order traversal of the tree.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "getElementsByTagName(tagName)" method with tagName
-        //                    equal to "name".  The method should return a NodeList
-        //                    that contains 5 elements.  Further the fourth item in
-        //                    the list is retrieved and checked.
-        //
-        // Semantic Requirements: 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0017D()
-        {
-            string computedValue = "0";//0;
-            string expectedValue = "Jeny Oconnor";
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0017D");
-
-            results.description = "The \"getElementsByTagName(tagName)\" method "+
-                "returns a NodeList of all the Elements with a "+
-                "given tag name in a preorder traversal of the tree.";
-                //
-                // Retrieve the targeted data and invoke its "getElementsByTagName(tagName)"
-                // method.
-                //
-                testNode = util.getDOMDocument();
-            System.Xml.XmlNodeList elementList = testNode.GetElementsByTagName("name");
-            //
-            // Retrieve the fourth item and its data.
-            //
-            computedValue = elementList.Item(util.FOURTH).FirstChild.Value;//Data;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0017D --------------------------
-        //
-        //-------------------------- test case core-0018D ----------------------------
-        //
-        // Testing feature - The "getElementsByTagName(tagName)" method returns a
-        //                   NodeList of all the Elements in the tree when the
-        //                   tagName is equal to "*".
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "getElementsByTagName(tagName)" method with tagName
-        //                    equal to "*".  The method should return a NodeList
-        //                    that contains 41 elements, which is the total number
-        //                    of Elements in the document.
-        //
-        // Semantic Requirements: 17
-        //
-        //----------------------------------------------------------------------------
-
-
-        [Test]
-	public void core0018D()
-        {
-            string computedValue = "0";//0;
-	// Mmm, shouldn't the count be 36?
-            string expectedValue = "36";//37;
-            System.Xml.XmlDocument testNode = null;
-
-            testResults results = new testResults("Core0018D");
-
-            results.description = "The \"getElementsByTagName(tagName)\" method "+
-                "returns a NodeList of all the Elements in the "+
-                "tree when the tag name is equal to \"*\".";
-            //
-            // Retrieve the targeted data and invoke its "getElementsByTagName(tagName)"
-            // method.
-            //
-            testNode = util.getDOMDocument();
-            System.Xml.XmlNodeList elementList = testNode.GetElementsByTagName("*");
-            //
-            // Retrieve the length of the list.
-            //
-            computedValue = elementList.Count.ToString();
-            //
-            // Write out results.
-            //
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0018D --------------------------
-        //
-        //------------------------- test case core-0019D -----------------------------
-        //
-        // Testing feature - The "createElement(tagName)" method raises an
-        //                   INVALID_CHARACTER_ERR Exception if the
-        //                   specified name contains an invalid character.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createElement(tagName)" method with the tagName
-        //                    equals to the string "invalid^Name" which contains
-        //                    an invalid character ("^") in it.  The desired
-        //                    exception should be raised.
-        //
-        // Semantic Requirements: 18 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0019D()
-        {
-            string computedValue = "";
-            System.Xml.XmlDocument testNode = null;
-            System.Xml.XmlElement invalidElement = null;
-            string expectedValue = util.INVALID_CHARACTER_ERR;
-
-            testResults results = new testResults("Core0019D");
-
-            results.description = "The \"createElement(tagName)\" method raises an "+
-                "INVALID_CHARACTER_ERR Exception if the "+
-                "specified name contains an invalid character."; 
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            // Attempt to create an Element with an invalid tagName should raise 
-            // an exception.
-            //
-            try 
-            {
-                invalidElement =  testNode.CreateElement("invalid^Name");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = ex.GetType ().FullName;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = typeof (XmlException).FullName; // MS.NET BUG: It never raises an error.
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0019D -------------------------
-        //
-        //------------------------- test case core-0020D -----------------------------
-        //
-        // Testing feature - The "createAttribute(name)" method raises an
-        //                   INVALID_CHARACTER_ERR Exception if the
-        //                   specified name contains an invalid character.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createAttribute(name)" method with the name
-        //                    equals to the string "invalid^Name" which contains
-        //                    an invalid character ("^") in it.  The desired
-        //                    exception should be raised.
-        //
-        // Semantic Requirements: 19 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0020D()
-        {
-            string computedValue = "";
-            string expectedValue = util.INVALID_CHARACTER_ERR;
-            System.Xml.XmlDocument testNode = null;
-            System.Xml.XmlAttribute invalidAttr = null;
-
-            testResults results = new testResults("Core0020D");
-
-            results.description = "The \"createAttribute(name)\" method raises an "+
-                "INVALID_CHARACTER_ERR Exception if the "+
-                "specified name contains an invalid character.";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            // Attempt to create an Attr node with an invalid name should raise
-            // an exception.
-            //
-            try 
-            {
-                invalidAttr =  testNode.CreateAttribute("invalid^Name");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = ex.GetType ().FullName;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = typeof (ArgumentException).FullName; // MS.NET BUG: It never raises an error.
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0020D -------------------------
-        //
-        //------------------------- test case core-0021D -----------------------------
-        //
-        // Testing feature - The "createEntityReference(name)" method raises an
-        //                   INVALID_CHARACTER_ERR Exception if the
-        //                   specified name contains an invalid character.
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createEntityReference(name)" method with the name
-        //                    equals to the string "invalid^Name" which contains
-        //                    an invalid character ("^") in it.  The desired
-        //                    exception should be raised.
-        //
-        // Semantic Requirements: 20
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0021D()
-        {
-            string computedValue = "";
-            string expectedValue = "System.Xml.XmlException";//util.INVALID_CHARACTER_ERR;
-            System.Xml.XmlDocument testNode = null;
-            System.Xml.XmlEntityReference invalidEntRef = null;
-
-            testResults results = new testResults("Core0021D");
-
-            results.description = "The \"createEntityReference(name)\" method raises "+
-                "an INVALID_CHARACTER_ERR Exception if the "+
-                "specified name contains an invalid character.";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            // Attempt to create an EntityReference node with an invalid name should 
-            // raise an exception.
-            //
-            try 
-            {
-                invalidEntRef =  testNode.CreateEntityReference("invalid^Name");
-            }
-            catch(XmlException ex)
-            {
-                computedValue = ex.GetType ().FullName;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-    
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0021D -------------------------
-        //
-        //------------------------- test case core-0022D ----------------------------
-        //
-        // Testing feature - The "createProcessingInstruction(target,data)" method
-        //                   raises an INVALID_CHARACTER_ERR Exception if an
-        //                   invalid character was specified. (test for invalid
-        //                   target) 
-        //
-        // Testing approach - Retrieve the entire DOM document and invoke its
-        //                    "createProcessingInstruction(target,data)" method with 
-        //                    the target equals to the string "invalid^target" which
-        //                    contains an invalid character ("^") in it.  The desired
-        //                    exception should be raised.
-        //
-        // Semantic Requirements: 21
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0022D()
-        {
-            string computedValue = "";
-            string expectedValue = "System.Xml.XmlException";//util.INVALID_CHARACTER_ERR;
-            System.Xml.XmlDocument testNode = null;
-            System.Xml.XmlProcessingInstruction invalidPI = null;
-
-            testResults results = new testResults("Core0022D"); 
-
-            results.description = "The \"createProcessingInstruction(target,data)\" "+
-                "method raises an INVALID_CHARACTER_ERR "+
-                "DOMException if an invalid character was specified "+                          "(invalid target).";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            // Attempt to create a ProcessingInstruction node with an invalid
-            // target name should raise an exception.
-            //
-            try 
-            {
-                invalidPI =  testNode.CreateProcessingInstruction("invalid^target","data");
-            }
-            catch(XmlException ex)
-            {
-                computedValue = ex.GetType ().FullName;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0022D -------------------------
-        //
-        //------------------------- test case core-0023D ----------------------------
-        //
-        // Testing feature - The "createCDATASection(data)" method raises a
-        //                   NOT_SUPPORTED_ERR Exception if this is an
-        //                   HTML document.
-        //
-        // Testing approach - Retrieve an HTML based DOM document and invoke its
-        //                    "createCDATASection(data)" method.  Since this DOM
-        //                    document was based on an HTML document, the desired
-        //                    exception should be raised.
-        //
-		// System.Xml       -  Microsoft System.Xml does not supporting this requirement
-		//
-        // Semantic Requirements: 22
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0023D()
-        {
-            string computedValue = "";
-            string expectedValue = "";//util.NOT_SUPPORTED_ERR;
-            System.Xml.XmlDocument testNode = null;
-            System.Xml.XmlCDataSection invalidCData = null;
-
-            testResults results = new testResults("Core0023D");
-
-            results.description = "The \"createCDATASection(data)\" method raises "+
-                "a NOT_SUPPORTED_ERR Exception if this is "+
-                "an HTML document.";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMHTMLDocument();
-            //
-            // Attempt to create a CDATASection node for an HTML based DOM Document 
-            // should raise an exception.
-            //
-            try 
-            {
-                invalidCData =  testNode.CreateCDataSection("This is a new CDATA Section");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = ex.GetType () + " : " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0023D -------------------------
-        //
-        //------------------------- test case core-0024D ----------------------------
-        //
-        // Testing feature - The "createProcessingInstruction(target,data)" method
-        //                   raises a NOT_SUPPORTED_ERR Exception if this is an
-        //                   HTML document.
-        //
-        // Testing approach - Retrieve an HTML based DOM document and invoke its
-        //                    "createProcessingInstruction(target,data)" method. 
-        //                    Since this DOM document was based on an HTML document, 
-        //                    the desired exception should be raised.
-        //
-		// System.Xml       -  Microsoft System.Xml does not supporting this requirement
-        // Semantic Requirements: 23
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0024D()
-        {
-            string computedValue = "";
-            string expectedValue = "";//util.NOT_SUPPORTED_ERR;
-            System.Xml.XmlDocument testNode = null;
-            System.Xml.XmlProcessingInstruction invalidPI = null;
-
-            testResults results = new testResults("Core0024D");
-
-            results.description = "The \"createProcessingInstruction(target,data)\" "+
-                "method raises a NOT_SUPPORTED_ERR Exception "+
-                "if this is an HTML document.";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMHTMLDocument();
-            //
-            // Attempt to create a ProcessingInstruction node for an HTML based DOM
-            // Document should raise an exception.
-            //
-            try 
-            {
-                invalidPI =  testNode.CreateProcessingInstruction("XML","This is a new PI node"); 
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = ex.GetType () + " : " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0024D -------------------------
-        //
-        //------------------------- test case core-0025D ----------------------------
-        //
-        // Testing feature - The "createEntityReference(data)" method raises
-        //                   a NOT_SUPPORTED_ERR Exception if this is an
-        //                   HTML document.
-        //
-        // Testing approach - Retrieve an HTML based DOM document and invoke its
-        //                    "createEntityReference(name)" method.  Since this DOM 
-        //                    document was based on an HTML document, the desired 
-        //                    exception should be raised.
-        //
-		// System.Xml       -  Microsoft System.Xml does not supporting this requirement
-		//
-        // Semantic Requirements: 24
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0025D()
-        {
-            string computedValue = "";
-            string expectedValue = "";//util.NOT_SUPPORTED_ERR;
-            System.Xml.XmlDocument testNode = null;
-            System.Xml.XmlEntityReference invalidEntRef = null;
-
-            testResults results = new testResults("Core0025D");
-
-            results.description = "The \"createEntityReference(name)\" method raises "+
-                "a NOT_SUPPORTED_ERR Exception if this is an "+
-                "HTML document.";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMHTMLDocument();
-            //
-            // Attempt to create an EntityReference node for an HTML based DOM
-            // Document should raise an exception.
-            //
-            try 
-            {
-                invalidEntRef =  testNode.CreateEntityReference("ent1");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = ex.GetType().ToString();
-
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0025D -------------------------
-    }
+//**************************************************************************
+//
+//
+//                       National Institute Of Standards and Technology
+//                                     DTS Version 1.0
+//         
+//                                   Document Interface
+//
+// Written by: Carmelo Montanez
+// Modified by:  Mary Brady
+//
+// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
+// Mainsoft Corporation (c) 2003-2004
+//**************************************************************************
+using System;
+using System.Xml;
+
+using nist_dom;
+using NUnit.Framework;
+
+namespace nist_dom.fundamental
+{
+    [TestFixture]
+    public class DocumentTest
+    {
+        public static int i = 2;
+/*
+        public testResults[] RunTests()
+        {
+            testResults[] tests = new testResults[] {core0001D(), core0002D(), core0003D(), core0004D(),
+                                                        core0005D(), core0006D(), core0007D(), core0008D(),
+                                                        core0009D(), core0010D(), core0011D(), core0012D(),
+                                                        core0013D(), core0014D(), core0015D(), 
+                                                        core0019D(), core0020D(),
+                                                        core0021D(), core0022D(), core0023D(), core0024D(),
+                                                        core0025D()};
+  
+            return tests;
+        }
+*/
+
+
+        //------------------------ test case core-0001T ------------------------
+        //
+        // Testing feature - The doctype attribute contains the Document Type 
+        //                   Declaration associated with this Document. 
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    doctype attribute.  It should return the Document
+        //                    type of this document.  Its document Type name 
+        //                    should be equal to "staff".
+        //                    
+        // Semantic Requirements: 1
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0001D()
+        {
+            string computedValue = "";
+            string expectedValue = "staff";
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0001D");
+
+            results.description = "The doctype attribute contains the Document Type "+
+                "Declaration associated with this object.";  
+            //
+            // Retrieve the targeted data and access its "doctype" attribute.
+            //
+            testNode = util.getDOMDocument(); 
+            System.Xml.XmlDocumentType dtype = testNode.DocumentType;
+            computedValue = dtype.Name;
+
+            //
+            // Write out results. 
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0001D --------------------------
+        //
+        //-------------------------- test case core-0002D ----------------------------
+        //
+        // Testing feature - The doctype attribute returns null for HTML documents.
+        //
+        // Testing approach - Retrieve the an HTML DOM document and invoke its
+        //                    doctype attribute.  It should return null. 
+        //
+        // Semantic Requirements: 2 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0002D()
+        {
+            string testName = "core-0002D";
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0002D");
+
+            results.description = "The doctype attribute returns null for HTML "+
+                "documents";
+            //
+            // Retrieve the targeted data and access its "doctype" attribute.
+            //
+            testNode = util.getDOMHTMLDocument();
+            computedValue = (testNode.DocumentType == null).ToString();
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0002D --------------------------
+        //
+        //-------------------------- test case core-0003D ----------------------------
+        //
+        // Testing feature - The doctype attribute returns null for XML documents
+        //                   without a document type declaration.
+        //
+        // Testing approach - Retrieve an XML DOM document without a Document 
+        //                    Type Declaration and invoke its doctype attribute.  
+        //                    It should return null.
+        //
+        // Semantic Requirements: 2
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0003D()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0003D");
+
+            results.description = "The doctype attribute returns null for XML "+
+                " documents without a Document Type Declaration.";
+            //
+            // Retrieve the targeted data and access its "doctype" attribute.
+            //
+            testNode = util.getnoDTDXMLDocument();
+            computedValue = (testNode.DocumentType == null).ToString();
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0003D --------------------------
+        //
+        //-------------------------- test case core-0004D ----------------------------
+        //
+        // Testing feature - The implementation attribute contains the 
+        //                   DOMImplementation object that handles this document.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "implementation" attribute.  It should return a
+        //                    DOMImplementation object whose "hasFeature("XML,"1.0")
+        //                    method is invoke and a true value expected.  
+        //
+        // Semantic Requirements: 3 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0004D()
+        {
+            string computedValue = "";
+            string expectedValue = "True";
+            System.Xml.XmlImplementation domImp = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0004D"); 
+
+            results.description = "The implementation attribute contains the "+
+                "DOMImplementation object that handles this"+
+                " document.";
+            //
+            // Retrieve the targeted data and access its "implementation" attribute.
+            //
+            testNode = util.getDOMDocument();
+            domImp = testNode.Implementation;
+            //
+            // The "hasFeature" method should return true.
+            //
+            computedValue = domImp.HasFeature("XML","1.0").ToString(); 
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0004D --------------------------
+        //
+        //-------------------------- test case core-0005D ----------------------------
+        //
+        // Testing feature - The documentElement attribute provides direct access
+        //                   to the child node that is the root element of the
+        //                   document.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "documentElement" attribute.  It should return an 
+        //                    Element node whose "tagName" attribute is "staff". 
+        //
+        // Semantic Requirements: 4 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0005D()
+        {
+            string computedValue = "";
+            string expectedValue = "staff";
+            System.Xml.XmlElement rootNode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0005D");
+
+            results.description = "The documentElement attribute provides direct "+
+                "to the root node of the document.";
+            //
+            // Retrieve the targeted data and access its "documentElement" attribute.
+            //
+            testNode = util.getDOMDocument();
+            rootNode = testNode.DocumentElement;
+            //
+            // Its tagName should be set to "staff".
+            //
+            computedValue = rootNode.Name;//tagName;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0005D --------------------------
+        //
+        //-------------------------- test case core-0006D ----------------------------
+        //
+        // Testing feature - For HTML documents, the documentElement attribute returns
+        //                   the Element with the HTML tag.
+        //
+        // Testing approach - Retrieve an HTML DOM document and invoke its
+        //                    "documentElement" attribute.  It should return the 
+        //                    Element whose "tagName" is "HTML".
+        //
+        // Semantic Requirements: 5 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0006D()
+        {
+            string computedValue = "";
+            string expectedValue = "HTML";
+            System.Xml.XmlElement rootNode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0006D");
+
+            results.description = "For HTML documents, the documentElement attribute "+
+                "returns the element with the HTML tag.";
+            //
+            // Retrieve the targeted data and access its "documentElement" attribute.
+            //
+            testNode = util.getDOMHTMLDocument();
+            rootNode = testNode.DocumentElement;
+            //
+            // Its tagName should be set to "HTML".
+            //
+            computedValue = rootNode.Name;//tagName;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0006D --------------------------
+        //
+        //-------------------------- test case core-0007D ----------------------------
+        //
+        // Testing feature - The "createElement(tagName)" method creates an Element of
+        //                   the type specified. 
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createElement(tagName)" method with tagName="address".
+        //                    The method should create an instance of an Element 
+        //                    node whose tagName is "address".  The type, value and
+        //                    are further checked.
+        //
+        // Semantic Requirements: 6 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0007D()
+        {
+            string computedValue = "";
+            string expectedValue = "address Element ";
+            System.Xml.XmlElement newElement = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0007D");
+
+            results.description = "The \"createElement(tagName)\" method creates an "+
+                "Element of the specified type.";
+            //
+            // Retrieve the targeted data and invoke its "createElement" attribute.
+            //
+            testNode = util.getDOMDocument();
+            newElement = testNode.CreateElement("address");
+            //
+            // Retrieve the characteristics of this new object.
+            //
+            computedValue = newElement.Name+" ";//tagName
+            computedValue += newElement.NodeType +" ";
+            computedValue += newElement.Value;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0007D --------------------------
+        //
+        //-------------------------- test case core-0008D ----------------------------
+        //
+        // Testing feature - The tagName parameter in the "createElement(tagName)"
+        //                   method is case-sensitive for XML documents.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createElement(tagName)" method twice for tagName 
+        //                    equal "address" and "ADDRESS".  Each call should
+        //                    create two distinct Element nodes.  Each Element
+        //                    is in turn assigned an attribute and then that 
+        //                    attribute is retrieved. 
+        //
+        // Semantic Requirements: 7 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0008D()
+        {
+            string computedValue = "";
+            string expectedValue = "Fort Worth Dallas";
+            System.Xml.XmlElement newElement1 = null;
+            System.Xml.XmlElement newElement2 = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0008D");
+
+            results.description = "The tagName parameter in the \"createElement( "+
+                "tagName)\" method is case-sensitive for XML "+
+                "documents.";
+            //
+            // Retrieve the targeted data and invoke its "createElement" method.
+            //
+            testNode = util.getDOMDocument();
+            newElement1 = testNode.CreateElement("ADDRESS");
+            newElement2 = testNode.CreateElement("address");
+            //
+            // Assign attributes for each one of the created Elements.
+            //
+            newElement1.SetAttribute("district","Fort Worth");
+            newElement2.SetAttribute("county","Dallas");
+            //
+            // Now retrieve the values of each Element's attribute.
+            //
+            computedValue += newElement1.GetAttribute("district")+" ";
+            computedValue += newElement2.GetAttribute("county");
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0008D --------------------------
+        //
+        //-------------------------- test case core-0009D ----------------------------
+        //
+        // Testing feature - The "createDocumentFragment()" method creates an 
+        //                   empty DocumentFragment object.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    createDocumentFragment() method.  The content, name,
+        //                    type and value of the newly created object are
+        //                    further retrieved and checked.
+        //
+        // Semantic Requirements: 8 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0009D()
+        {
+            string computedValue = "";
+            string expectedValue = "0 #document-fragment DocumentFragment ";//"0 #document-fragment 11 null";
+            System.Xml.XmlDocumentFragment newDocFragment = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0009D");
+
+            results.description = "The \"createDocumentFragment()\" method creates "+
+                "an empty DocumentFragment object.";
+            //
+            // Retrieve the targeted data and invoke its "createDocumentFragment()" 
+            // method.
+            //
+            testNode = util.getDOMDocument();
+            newDocFragment = testNode.CreateDocumentFragment();
+            //
+            // Retrieve the characterstics of the newly created object.
+            //
+            computedValue += newDocFragment.ChildNodes.Count +" ";
+            computedValue += newDocFragment.Name+" ";
+            computedValue += newDocFragment.NodeType+" ";
+            computedValue += newDocFragment.Value;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0009D --------------------------
+        //
+        //-------------------------- test case core-0010D ----------------------------
+        //
+        // Testing feature - The "createTextNode(data)" method creates a Text node
+        //                   given by the specified string. 
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its 
+        //                    "createTextNode(data)" method.  It should create a
+        //                    new Text node whose data is the specified string.  The
+        //                    name and type of the newly created object are further
+        //                    retrieved and checked.
+        //
+        // Semantic Requirements: 9 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0010D()
+        {
+            string computedValue = "";
+            string expectedValue = "This is a new Text node #text Text";//"This is a new Text node #text 3";
+            System.Xml.XmlText newTextNode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0010D");
+
+            results.description = "The \"createTextNode(data)\" method creates "+
+                "a Text node given by the specified string.";
+            //
+            // Retrieve the targeted data and invoke its "createTextNode(data)" method.
+            //
+            testNode = util.getDOMDocument();
+            newTextNode = testNode.CreateTextNode("This is a new Text node");
+            //
+            // Retrieve the characteristics of the newly created object.
+            //
+            computedValue += newTextNode.Data+" ";
+            computedValue += newTextNode.Name+" ";
+            computedValue += newTextNode.NodeType;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+    
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0010D --------------------------
+        //
+        //-------------------------- test case core-0011D ----------------------------
+        //
+        // Testing feature - The "createComment(data)" method creates a new Comment 
+        //                   node given the specified string.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createComment(data)" method.  It should create a
+        //                    new Comment node whose data is the specified string. 
+        //                    The content, name and type of the newly created 
+        //                    object are further retrieved and examined.
+        //
+        // Semantic Requirements: 10
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0011D()
+        {
+            string computedValue = "";
+            string expectedValue = "This is a new Comment node #comment Comment";//"This is a new Comment node #comment 8";
+            System.Xml.XmlComment newCommentNode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0011D");
+
+            results.description = "The \"createComment(data)\" method creates "+
+                "a new comment node given by the specified string.";
+            //
+            // Retrieve the targeted data and invoke its "createComment(data)" method.
+            //
+            testNode = util.getDOMDocument();
+            newCommentNode = testNode.CreateComment("This is a new Comment node");
+            //
+            // Retrieve the characteristics of the new object.
+            //
+            computedValue += newCommentNode.Data+" ";
+            computedValue += newCommentNode.Name+" ";
+            computedValue += newCommentNode.NodeType;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0011D --------------------------
+        //
+        //-------------------------- test case core-0012D ----------------------------
+        //
+        // Testing feature - The "createCDATASection(data)" method creates a new 
+        //                   CDATASection node whose value is the specified string.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createCDATASection(data)" method.  It should create a
+        //                    new CDATASection node whose data is the specified string.
+        //                    The content, name and type of the newly created
+        //                    object are further retrieved and examined.
+        //
+        // Semantic Requirements: 11
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0012D()
+        {
+            string computedValue = "";
+            string expectedValue = "This is a new CDATASection node #cdata-section CDATA";//"This is a new CDATASection node #cdata-section 4";
+            System.Xml.XmlCDataSection newCDATASectionNode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0012D");
+
+            results.description = "The \"createCDATASection(data)\" method creates "+
+                "a new CDATASection node whose value is the "+
+                "specified string.";
+            //
+            // Retrieve the targeted data and invoke its "createCDATASection(data)"
+            // method.
+            //
+            testNode = util.getDOMDocument();
+            newCDATASectionNode = testNode.CreateCDataSection("This is a new CDATASection node");
+            //
+            // Retrieve the characteristics of the new object.
+            //
+            computedValue += newCDATASectionNode.Data+" ";
+            computedValue += newCDATASectionNode.Name+" ";
+            computedValue += newCDATASectionNode.NodeType;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0012D --------------------------
+        //
+        //-------------------------- test case core-0013D ----------------------------
+        //
+        // Testing feature - The "createProcessingInstruction(target,data)" method
+        //                   creates a new ProcessingInstruction node with the 
+        //                   specified name and data strings.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createProcessingInstruction(target,data)" method.  It 
+        //                    should create a new PI node with the specified target
+        //                    and data.  The target, data and type of the newly created
+        //                    object are further retrieved and examined.
+        //
+        // Semantic Requirements: 12
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0013D()
+        {
+            string computedValue = "";
+            string expectedValue = "XML This is a new PI node ProcessingInstruction";//"XML This is a new PI node 7";
+            System.Xml.XmlProcessingInstruction newPINode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0013D");
+
+            results.description = "The \"createProcessingInstruction(target,data)\" "+
+                "method creates a new processingInstruction node.";
+            //
+            // Retrieve the targeted data and invoke its 
+            // "createProcessingInstruction(target,data)" method.
+            //
+            testNode = util.getDOMDocument();
+            newPINode = testNode.CreateProcessingInstruction("XML","This is a new PI node");
+            //
+            // Retrieve the characteristics of the new object.
+            //
+            computedValue += newPINode.Target+" ";
+            computedValue += newPINode.Data+" ";
+            computedValue += newPINode.NodeType;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0013D --------------------------
+        //
+        //-------------------------- test case core-0014D ----------------------------
+        //
+        // Testing feature - The "createAttribute(name)" method creates an Attr 
+        //                   node of the given name.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createAttribute(name)" method.  It should create a 
+        //                    new Attr node with the given name.  The name, value 
+        //                    and type of the newly created object are further 
+        //                    retrieved and examined.
+        //
+        // Semantic Requirements: 13
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0014D()
+        {
+            string computedValue = "";
+            string expectedValue = "district Attribute";//"district 2";
+            System.Xml.XmlAttribute newAttrNode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0014D"); 
+
+            results.description = "The \"createAttribute(name)\" method creates "+
+                "a new Attr node of the given name.";
+            //
+            // Retrieve the targeted data and invoke its "createAttribute(name)"
+            // method.
+            //
+            testNode = util.getDOMDocument();
+            newAttrNode = testNode.CreateAttribute("district");
+            //
+            // Retrieve the characteristics of the new object.
+            //
+            computedValue += newAttrNode.Name+" ";
+            computedValue += newAttrNode.Value;
+            computedValue += newAttrNode.NodeType;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0014D --------------------------
+        //
+        //-------------------------- test case core-0015D ----------------------------
+        //
+        // Testing feature - The "createEntityReference(name)" method creates an 
+        //                   EntityReference node. 
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createEntityReference(name)" method.  It should
+        //                    create a new EntityReference node for the Entity
+        //                    with the given name.  The name, value and type of 
+        //                    the newly created object are further retrieved 
+        //                    and examined.
+        //
+        // Semantic Requirements: 14
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0015D()
+        {
+            string computedValue = "";
+            string expectedValue = "ent1  EntityReference";//"ent1 null 5";
+            System.Xml.XmlEntityReference newEntRefNode = null;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0015D");
+
+            results.description = "The \"createEntityReference(name)\" method creates "+
+                "a new EntityReference node.";
+            //
+            // Retrieve the targeted data and invoke its "createEntityReference(name)"
+            // method.
+            //
+            testNode = util.getDOMDocument();
+            newEntRefNode = testNode.CreateEntityReference("ent1");
+            //
+            // Retrieve the characteristics of the new object.
+            //
+            computedValue += newEntRefNode.Name+" ";
+            computedValue += newEntRefNode.Value+" ";
+            computedValue += newEntRefNode.NodeType;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0015D --------------------------
+        //
+        //-------------------------- test case core-0016D ----------------------------
+        //
+        // Testing feature - The "getElementsByTagName(tagName)" method returns a
+        //                   NodeList of all the Elements with a given tagName.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "getElementsByTagName(tagName)" method with tagName
+        //                    equal to "name".  The method should return a NodeList
+        //                    that contains 5 elements.  
+        //
+        // Semantic Requirements: 15
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0016D()
+        {
+            string computedValue = "0";//0;
+            string expectedValue = "5";//5;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0016D");
+
+            results.description = "The \"getElementsByTagName(tagName)\" method "+
+                "returns a NodeList of all the Elements with a "+
+                "given tag name.";
+            //
+            // Retrieve the targeted data and invoke its "getElementsByTagName(tagName)"
+            // method.
+            //
+            testNode = util.getDOMDocument();
+            System.Xml.XmlNodeList elementList = testNode.GetElementsByTagName("name");
+            //
+            // Retrieve the length of the list.
+            //
+            computedValue = elementList.Count.ToString();
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0016D --------------------------
+        //
+        //-------------------------- test case core-0017D ----------------------------
+        //
+        // Testing feature - The "getElementsByTagName(tagName)" method returns a
+        //                   NodeList of all the Elements with a given tagName in
+        //                   a pre-order traversal of the tree.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "getElementsByTagName(tagName)" method with tagName
+        //                    equal to "name".  The method should return a NodeList
+        //                    that contains 5 elements.  Further the fourth item in
+        //                    the list is retrieved and checked.
+        //
+        // Semantic Requirements: 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0017D()
+        {
+            string computedValue = "0";//0;
+            string expectedValue = "Jeny Oconnor";
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0017D");
+
+            results.description = "The \"getElementsByTagName(tagName)\" method "+
+                "returns a NodeList of all the Elements with a "+
+                "given tag name in a preorder traversal of the tree.";
+                //
+                // Retrieve the targeted data and invoke its "getElementsByTagName(tagName)"
+                // method.
+                //
+                testNode = util.getDOMDocument();
+            System.Xml.XmlNodeList elementList = testNode.GetElementsByTagName("name");
+            //
+            // Retrieve the fourth item and its data.
+            //
+            computedValue = elementList.Item(util.FOURTH).FirstChild.Value;//Data;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0017D --------------------------
+        //
+        //-------------------------- test case core-0018D ----------------------------
+        //
+        // Testing feature - The "getElementsByTagName(tagName)" method returns a
+        //                   NodeList of all the Elements in the tree when the
+        //                   tagName is equal to "*".
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "getElementsByTagName(tagName)" method with tagName
+        //                    equal to "*".  The method should return a NodeList
+        //                    that contains 41 elements, which is the total number
+        //                    of Elements in the document.
+        //
+        // Semantic Requirements: 17
+        //
+        //----------------------------------------------------------------------------
+
+
+        [Test]
+	public void core0018D()
+        {
+            string computedValue = "0";//0;
+	// Mmm, shouldn't the count be 36?
+            string expectedValue = "36";//37;
+            System.Xml.XmlDocument testNode = null;
+
+            testResults results = new testResults("Core0018D");
+
+            results.description = "The \"getElementsByTagName(tagName)\" method "+
+                "returns a NodeList of all the Elements in the "+
+                "tree when the tag name is equal to \"*\".";
+            //
+            // Retrieve the targeted data and invoke its "getElementsByTagName(tagName)"
+            // method.
+            //
+            testNode = util.getDOMDocument();
+            System.Xml.XmlNodeList elementList = testNode.GetElementsByTagName("*");
+            //
+            // Retrieve the length of the list.
+            //
+            computedValue = elementList.Count.ToString();
+            //
+            // Write out results.
+            //
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0018D --------------------------
+        //
+        //------------------------- test case core-0019D -----------------------------
+        //
+        // Testing feature - The "createElement(tagName)" method raises an
+        //                   INVALID_CHARACTER_ERR Exception if the
+        //                   specified name contains an invalid character.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createElement(tagName)" method with the tagName
+        //                    equals to the string "invalid^Name" which contains
+        //                    an invalid character ("^") in it.  The desired
+        //                    exception should be raised.
+        //
+        // Semantic Requirements: 18 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0019D()
+        {
+            string computedValue = "";
+            System.Xml.XmlDocument testNode = null;
+            System.Xml.XmlElement invalidElement = null;
+            string expectedValue = util.INVALID_CHARACTER_ERR;
+
+            testResults results = new testResults("Core0019D");
+
+            results.description = "The \"createElement(tagName)\" method raises an "+
+                "INVALID_CHARACTER_ERR Exception if the "+
+                "specified name contains an invalid character."; 
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            // Attempt to create an Element with an invalid tagName should raise 
+            // an exception.
+            //
+            try 
+            {
+                invalidElement =  testNode.CreateElement("invalid^Name");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = ex.GetType ().FullName;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = typeof (XmlException).FullName; // MS.NET BUG: It never raises an error.
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0019D -------------------------
+        //
+        //------------------------- test case core-0020D -----------------------------
+        //
+        // Testing feature - The "createAttribute(name)" method raises an
+        //                   INVALID_CHARACTER_ERR Exception if the
+        //                   specified name contains an invalid character.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createAttribute(name)" method with the name
+        //                    equals to the string "invalid^Name" which contains
+        //                    an invalid character ("^") in it.  The desired
+        //                    exception should be raised.
+        //
+        // Semantic Requirements: 19 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0020D()
+        {
+            string computedValue = "";
+            string expectedValue = util.INVALID_CHARACTER_ERR;
+            System.Xml.XmlDocument testNode = null;
+            System.Xml.XmlAttribute invalidAttr = null;
+
+            testResults results = new testResults("Core0020D");
+
+            results.description = "The \"createAttribute(name)\" method raises an "+
+                "INVALID_CHARACTER_ERR Exception if the "+
+                "specified name contains an invalid character.";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            // Attempt to create an Attr node with an invalid name should raise
+            // an exception.
+            //
+            try 
+            {
+                invalidAttr =  testNode.CreateAttribute("invalid^Name");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = ex.GetType ().FullName;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = typeof (ArgumentException).FullName; // MS.NET BUG: It never raises an error.
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0020D -------------------------
+        //
+        //------------------------- test case core-0021D -----------------------------
+        //
+        // Testing feature - The "createEntityReference(name)" method raises an
+        //                   INVALID_CHARACTER_ERR Exception if the
+        //                   specified name contains an invalid character.
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createEntityReference(name)" method with the name
+        //                    equals to the string "invalid^Name" which contains
+        //                    an invalid character ("^") in it.  The desired
+        //                    exception should be raised.
+        //
+        // Semantic Requirements: 20
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0021D()
+        {
+            string computedValue = "";
+            string expectedValue = "System.Xml.XmlException";//util.INVALID_CHARACTER_ERR;
+            System.Xml.XmlDocument testNode = null;
+            System.Xml.XmlEntityReference invalidEntRef = null;
+
+            testResults results = new testResults("Core0021D");
+
+            results.description = "The \"createEntityReference(name)\" method raises "+
+                "an INVALID_CHARACTER_ERR Exception if the "+
+                "specified name contains an invalid character.";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            // Attempt to create an EntityReference node with an invalid name should 
+            // raise an exception.
+            //
+            try 
+            {
+                invalidEntRef =  testNode.CreateEntityReference("invalid^Name");
+            }
+            catch(XmlException ex)
+            {
+                computedValue = ex.GetType ().FullName;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+    
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0021D -------------------------
+        //
+        //------------------------- test case core-0022D ----------------------------
+        //
+        // Testing feature - The "createProcessingInstruction(target,data)" method
+        //                   raises an INVALID_CHARACTER_ERR Exception if an
+        //                   invalid character was specified. (test for invalid
+        //                   target) 
+        //
+        // Testing approach - Retrieve the entire DOM document and invoke its
+        //                    "createProcessingInstruction(target,data)" method with 
+        //                    the target equals to the string "invalid^target" which
+        //                    contains an invalid character ("^") in it.  The desired
+        //                    exception should be raised.
+        //
+        // Semantic Requirements: 21
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0022D()
+        {
+            string computedValue = "";
+            string expectedValue = "System.Xml.XmlException";//util.INVALID_CHARACTER_ERR;
+            System.Xml.XmlDocument testNode = null;
+            System.Xml.XmlProcessingInstruction invalidPI = null;
+
+            testResults results = new testResults("Core0022D"); 
+
+            results.description = "The \"createProcessingInstruction(target,data)\" "+
+                "method raises an INVALID_CHARACTER_ERR "+
+                "DOMException if an invalid character was specified "+                          "(invalid target).";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            // Attempt to create a ProcessingInstruction node with an invalid
+            // target name should raise an exception.
+            //
+            try 
+            {
+                invalidPI =  testNode.CreateProcessingInstruction("invalid^target","data");
+            }
+            catch(XmlException ex)
+            {
+                computedValue = ex.GetType ().FullName;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0022D -------------------------
+        //
+        //------------------------- test case core-0023D ----------------------------
+        //
+        // Testing feature - The "createCDATASection(data)" method raises a
+        //                   NOT_SUPPORTED_ERR Exception if this is an
+        //                   HTML document.
+        //
+        // Testing approach - Retrieve an HTML based DOM document and invoke its
+        //                    "createCDATASection(data)" method.  Since this DOM
+        //                    document was based on an HTML document, the desired
+        //                    exception should be raised.
+        //
+		// System.Xml       -  Microsoft System.Xml does not supporting this requirement
+		//
+        // Semantic Requirements: 22
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0023D()
+        {
+            string computedValue = "";
+            string expectedValue = "";//util.NOT_SUPPORTED_ERR;
+            System.Xml.XmlDocument testNode = null;
+            System.Xml.XmlCDataSection invalidCData = null;
+
+            testResults results = new testResults("Core0023D");
+
+            results.description = "The \"createCDATASection(data)\" method raises "+
+                "a NOT_SUPPORTED_ERR Exception if this is "+
+                "an HTML document.";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMHTMLDocument();
+            //
+            // Attempt to create a CDATASection node for an HTML based DOM Document 
+            // should raise an exception.
+            //
+            try 
+            {
+                invalidCData =  testNode.CreateCDataSection("This is a new CDATA Section");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = ex.GetType () + " : " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0023D -------------------------
+        //
+        //------------------------- test case core-0024D ----------------------------
+        //
+        // Testing feature - The "createProcessingInstruction(target,data)" method
+        //                   raises a NOT_SUPPORTED_ERR Exception if this is an
+        //                   HTML document.
+        //
+        // Testing approach - Retrieve an HTML based DOM document and invoke its
+        //                    "createProcessingInstruction(target,data)" method. 
+        //                    Since this DOM document was based on an HTML document, 
+        //                    the desired exception should be raised.
+        //
+		// System.Xml       -  Microsoft System.Xml does not supporting this requirement
+        // Semantic Requirements: 23
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0024D()
+        {
+            string computedValue = "";
+            string expectedValue = "";//util.NOT_SUPPORTED_ERR;
+            System.Xml.XmlDocument testNode = null;
+            System.Xml.XmlProcessingInstruction invalidPI = null;
+
+            testResults results = new testResults("Core0024D");
+
+            results.description = "The \"createProcessingInstruction(target,data)\" "+
+                "method raises a NOT_SUPPORTED_ERR Exception "+
+                "if this is an HTML document.";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMHTMLDocument();
+            //
+            // Attempt to create a ProcessingInstruction node for an HTML based DOM
+            // Document should raise an exception.
+            //
+            try 
+            {
+                invalidPI =  testNode.CreateProcessingInstruction("XML","This is a new PI node"); 
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = ex.GetType () + " : " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0024D -------------------------
+        //
+        //------------------------- test case core-0025D ----------------------------
+        //
+        // Testing feature - The "createEntityReference(data)" method raises
+        //                   a NOT_SUPPORTED_ERR Exception if this is an
+        //                   HTML document.
+        //
+        // Testing approach - Retrieve an HTML based DOM document and invoke its
+        //                    "createEntityReference(name)" method.  Since this DOM 
+        //                    document was based on an HTML document, the desired 
+        //                    exception should be raised.
+        //
+		// System.Xml       -  Microsoft System.Xml does not supporting this requirement
+		//
+        // Semantic Requirements: 24
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0025D()
+        {
+            string computedValue = "";
+            string expectedValue = "";//util.NOT_SUPPORTED_ERR;
+            System.Xml.XmlDocument testNode = null;
+            System.Xml.XmlEntityReference invalidEntRef = null;
+
+            testResults results = new testResults("Core0025D");
+
+            results.description = "The \"createEntityReference(name)\" method raises "+
+                "a NOT_SUPPORTED_ERR Exception if this is an "+
+                "HTML document.";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMHTMLDocument();
+            //
+            // Attempt to create an EntityReference node for an HTML based DOM
+            // Document should raise an exception.
+            //
+            try 
+            {
+                invalidEntRef =  testNode.CreateEntityReference("ent1");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = ex.GetType().ToString();
+
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0025D -------------------------
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Element/Element.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Element/Element.cs
@@ -1,1847 +1,1847 @@
-//**************************************************************************
-//
-//
-//                       National Institute Of Standards and Technology
-//                                     DTS Version 1.0
-//         
-//                                   Element Interface
-//
-// Written by: Carmelo Montanez
-// Modified by:  Mary Brady
-//
-// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
-// Mainsoft Corporation (c) 2003-2004
-//**************************************************************************
-using System;
-using System.Xml;
-
-using nist_dom;
-using NUnit.Framework;
-
-namespace nist_dom.fundamental
-{
-    [TestFixture]
-    public class ElementTest
-    {
-        public static int i = 2;
-/*
-        public testResults[] RunTests()
-        {
-            testResults[] tests = new testResults[] {core0001E(), core0002E(), core0003E(),core0004E(),
-                                                        core0005E(), core0006E(), core0007E(), core0008E(),
-                                                        core0009E(), core0010E(), core0011E(), core0012E(),
-                                                        core0013E(), core0014E(), core0015E(), core0016E(),
-                                                        core0017E(), core0018E(), core0019E(), core0020E(),
-                                                        core0021E(), core0022E(), core0023E(), core0024E(),
-                                                        core0025E(), core0026E(), core0027E(), core0028E(),
-                                                        core0029E(), core0030E()};
-  
-            return tests;
-        }
-*/
-        //------------------------ test case core-0001E ------------------------
-        //
-        // Testing feature - Elements may have attributes associated with them. 
-        //
-        // Testing approach - Retrieve the first attribute from the last child of
-        //                    the first employee and examine its "specified"
-        //                    attribute.  This test is only intended to show
-        //                    that Elements can actually have attributes.
-        //                    This test uses the "getNamedItem(name)" method from 
-        //                    the NamedNodeMap interface.
-        //
-        // Semantic Requirements: 1
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0001E()
-        {
-            string computedValue = "0";//0
-            string expectedValue = "True";//true
-            System.Xml.XmlNode addressElement = null;
-            System.Xml.XmlAttributeCollection attrList = null;
-            System.Xml.XmlAttribute domesticAttr = null;
-
-            testResults results = new testResults("Core0001E");
-            try
-            {
-                results.description = "Element nodes may have associated attributes.";
-                //
-                // Retrieve the "address" element from the first employee.
-                //
-                addressElement = util.nodeObject(util.FIRST,util.SIXTH);
-                //
-                // Access its "domestic" attribute by creating a list of all attributes
-                // and then retrieving the desired attribute from the list by name. 
-                //
-                attrList = addressElement.Attributes;//.node.
-                domesticAttr = (System.Xml.XmlAttribute)attrList.GetNamedItem("domestic");
-                //
-                // Access its "specified" attribute.
-                //
-                computedValue = domesticAttr.Specified.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results 
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-        //------------------------ End test case core-0001E --------------------------
-        //
-        //------------------------ test case core-0002E ------------------------
-        //
-        // Testing feature - The generic Attribute "attributes" (Node interface) may 
-        //                   be used to retrieve the set of all attributes of an
-        //                   element.
-        //
-        // Testing approach - Create a list of all the attributes of the last child of
-        //                    of the first employee by using the generic "attributes"
-        //                    attribute from the Node interface.  Further the length
-        //                    of the attribute list is examined.  This test makes
-        //                    use of the "Count" attribute from the NameNodeMap 
-        //                    interface.
-        //
-        // Semantic Requirements: 1, 2 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0002E()
-        {
-            string computedValue = "";
-            string expectedValue = "2";
-            System.Xml.XmlNode addressElement = null;
-            System.Xml.XmlAttributeCollection attrList = null;
-
-            testResults results = new testResults("Core0002E");
-            try
-            {
-                results.description = "The generic \"attributes\" (from the Node interface) may " +
-                    "be used to retrieve the set of all attributes of an element.";
-                //
-                // Retrieve the "address" element from the first employee.
-                //
-                addressElement = util.nodeObject(util.FIRST,util.SIXTH);
-                //
-                // Access its attributes list.
-                //
-                attrList = addressElement.Attributes;
-                //
-                // Access its "length" attribute.
-                //
-                computedValue = attrList.Count.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0002E --------------------------
-        //
-        //-------------------------- test case core-0003E ----------------------------
-        //
-        // Testing feature - The "tagName" attribute contains the name of the
-        //                   element. 
-        //
-        // Testing approach - Retrieve the third child of the second employee and
-        //                    examine its "tagName" attribute.  It should return a 
-        //                    string containing the name of the element ("position",
-        //                    in this case). 
-        //
-        // Semantic Requirements: 3 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0003E()
-        {
-            string computedValue = "";
-            string expectedValue = "position";
-            System.Xml.XmlNode positionElement = null;
-
-            testResults results = new testResults("Core0003E");
-            try
-            {
-                results.description = "The \"tagName\" of an Element contains the " +
-                    "element's name.";
-                //
-                // Access its third child of the second employee.
-                //
-                positionElement = util.nodeObject(util.SECOND,util.THIRD);
-                //
-                // Access its "tagName" attribute.
-                //
-                computedValue = positionElement.Name;//tagName;//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0003E --------------------------
-        //
-        //-------------------------- test case core-0004E ----------------------------
-        //
-        // Testing feature - The "getAttribute(name)" method returns an attribute value
-        //                   by name. 
-        //
-        // Testing approach - Retrieve the the last child of the third employee, then  
-        //                    invoke its "getAttribute(name)" method.  It should
-        //                    return the value of the attribute("No", in this case).
-        //
-        // Semantic Requirements: 1, 4
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0004E()
-        {
-            string computedValue = "";
-            string expectedValue = "No";
-            System.Xml.XmlElement addressElement = null;
-
-            testResults results = new testResults("Core0004E");
-            try
-            {
-                results.description = "The \"getAttribute(name)\" method of an Element returns " +
-                    "the value of an attribute by name.";
-                //
-                // Retrieve the targeted data. 
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
-                computedValue = addressElement.GetAttribute("street");//addressElement.node.GetAttribute("street");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0004E --------------------------
-        //
-        //-------------------------- test case core-0005E ----------------------------
-        //
-        // Testing feature - The "getAttribute(name)" method returns an empty
-        //                   string if no value was assigned to an attribute and
-        //                   no default value was given in the DTD file.
-        //
-        // Testing approach - Retrieve the the last child of the last employee, then
-        //                    invoke its "getAttribute(name)" method, where "name" is an
-        //                    attribute with no specified or DTD default value.  The
-        //                    "getAttribute(name)" method should return the empty
-        //                    string.  This method makes use of the 
-        //                    "createAttribute(newAttr)" method from the Document
-        //                    interface.
-        //
-        // Semantic Requirements: 1, 4, 5 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0005E()
-        {
-            string computedValue = "";
-            string expectedValue = "";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute newAttribute = null;
-
-
-            testResults results = new testResults("Core0005E");
-            try
-            {
-                results.description = "The \"getAttribute(name)\" method of an Element returns " +
-                    "the empty string if the attribue does not have a default " +
-                    "or specified value.";
-                //
-                // Access the sixth child of the last employee.
-                //
-                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FOURTH,util.SIXTH);
-                //
-                // Invoke its "setAttributeNode(newAttr)" method where
-                // newAttr = "newAttribute".  Since no value was specified or given
-                // by default, the value returned by the "getAttribute(name)" method 
-                // should be the empty string.
-                //
-                addressElement.SetAttributeNode(newAttribute);//.node.
-                computedValue = addressElement.GetAttribute("district");//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0005E --------------------------
-        //
-        //-------------------------- test case core-0006E ----------------------------
-        //
-        // Testing feature - The "setAttribute(name,value)" method adds a new attribute
-        //                   to the Element.
-        //
-        // Testing approach - Retrieve the last child of the last employee, then
-        //                    add an attribute to it by invoking its 
-        //                    "setAttribute(name,value)" method.  It should create 
-        //                    a "name" attribute with an assigned value equal to 
-        //                    "value".  
-        //
-        // Semantic Requirements: 1, 4, 6 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0006E()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement addressElement = null;
-            string name = "district";
-            string expectedValue = "dallas"; 
-
-
-            testResults results = new testResults("Core0006E");
-            try
-            {
-                results.description = "The \"setAttribute(name,value)\" method of an Element " +
-                    "creates an new \"name\" attribute whose value is equal to \"value\".";
-                //
-                // Access the last child of the last employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
-                //
-                // Invoke its "setAttribute(name,value)" method and create a new attribute
-                //
-                addressElement.SetAttribute(name,expectedValue);//.node.
-                //
-                // This Element should now have a new attribute that we can be retrieved
-                // by name. 
-                //
-                computedValue = addressElement.GetAttribute(name);//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0006E --------------------------
-        //
-        //-------------------------- test case core-0007E ----------------------------
-        //
-        // Testing feature - The "setAttribute(name,value)" method adds a new attribute
-        //                   to the Element.  If the "name" is already present, then
-        //                   its value should be changed to the new one of the
-        //                   "value" parameter.
-        //
-        // Testing approach - Retrieve the last child of the fourth employee,
-        //                    then add an attribute to it by invoking its
-        //                    "setAttribute(name,value)" method.  Since the name 
-        //                    of the used attribute ("street") is already present
-        //                    in this element, then its value should be
-        //                    changed to the new one of the "value" parameter.
-        //
-        // Semantic Requirements: 1, 4, 7 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0007E()
-        {
-            string computedValue = "";
-            string expectedValue = "Neither";
-            System.Xml.XmlElement addressElement = null;
-
-            testResults results = new testResults("Core0007E");
-            try
-            {
-                results.description = "The \"setAttribute(name,value)\" method of an Element " +
-                    "where the \"name\" attribute is already present in this Element.";
-                //
-                // Access the sixth child of the fourth employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FOURTH,util.SIXTH);
-                //
-                // Invoke its "setAttribute(name,value)" method where name = "street"
-                // and value = "Neither".
-                //
-                addressElement.SetAttribute("street","Neither");//.node.
-                //
-                // The "street" attribute should now have a value of "Neither" 
-                //
-                computedValue = addressElement.GetAttribute("street");//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0007E --------------------------
-        //
-        //-------------------------- test case core-0008E ----------------------------
-        //
-        // Testing feature - The "removeAttribute(name)" removes an attribute
-        //                   by name.  If the removed attribute is known to have a
-        //                   default value, an attribute immediately appears 
-        //                   containing the default value.
-        //
-        // Testing approach - Retrieve the attribute named "street" from the last
-        //                    child of the fourth employee, then remove the "street"
-        //                    attribute by invoking its "removeAttribute(name) method.
-        //                    The "street" attribute has a default value defined in the 
-        //                    DTD file, that value should immediately replace the 
-        //                    old value.   
-        //
-        // Semantic Requirements: 1, 8 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-        [Ignore(".NET DOM implementation does not match W3C DOM specification.")]
-	public void core0008E()
-        {
-            string computedValue = "";
-            string expectedValue = "Yes";
-            System.Xml.XmlElement addressElement = null;
-            string streetAttr = "";
-
-            testResults results = new testResults("Core0008E");
-            try
-            {
-                results.description = "The \"removeAttribute(name)\" method of an Element " +
-                    "removes the \"name\" attribute and restores any " +
-                    "known default values.";
-                //
-                // Access the last child of the fourth employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FOURTH,util.SIXTH);
-                //
-                // Invoke its "removeAttribute(name)" method where name = "street"
-                //
-                addressElement.RemoveAttribute("street");//.node.
-                //
-                // Now access that attribute.
-                //
-                streetAttr = addressElement.GetAttribute("street");//.node.
-                //
-                // The "street" attribute should now have a default values 
-                //
-                computedValue = addressElement.GetAttribute("street");//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0008E --------------------------
-        //
-        //-------------------------- test case core-0009E ----------------------------
-        //
-        // Testing feature - The "getAttributeNode(name)" retrieves an attribute
-        //                   node by name.  
-        //
-        // Testing approach - Retrieve the attribute named "domestic" from the last 
-        //                    child of the first employee.  Since the method returns
-        //                    an Attr object, its name attribute can be examined to 
-        //                    ensure the proper attribute was retrieved.
-        //
-        // Semantic Requirements: 1, 9 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0009E()
-        {
-            string computedValue = "";
-            string expectedValue = "domestic";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute domesticAttrNode = null;
-
-            testResults results = new testResults("Core0009E");
-            try
-            {
-                results.description = "The \"getAttributeNode(name)\" method of an Element " +
-                    "returns the \"name\" Attr node.";
-                //
-                // Access the last child of the first employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                //
-                // Invoke its "getAttributeNode(name)" method where name = "domestic"
-                // and create an Attr object.  
-                //
-                domesticAttrNode = addressElement.GetAttributeNode("domestic");//.node.
-                //
-                // Now access the "name" attribute of that Attr node.  Since the "domestic"
-                // attribute was retrieved, the name of the Attr node should also be
-                // "domestic". 
-                //
-                computedValue = domesticAttrNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0009E --------------------------
-        //
-        //-------------------------- test case core-00010E ----------------------------
-        //
-        // Testing feature - The "getAttributeNode(name)" retrieves an attribute
-        //                   node by name.  It should return null if the "name" 
-        //                   attribute does not exist.
-        //
-        // Testing approach - Retrieve the last child of the first employee and 
-        //                    attempt to retrieve a non-existing attribute.
-        //                    The method should return null.  The non-existing
-        //                    attribute to be used is "invalidAttribute".
-        //
-        // Semantic Requirements: 1, 10
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0010E()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlElement addressElement = null;
-
-            testResults results = new testResults("Core0010E");
-            try
-            {
-                results.description = "The \"getAttributeNode(name)\" method returns null " +
-                    "if the \"name\" attribute does not exist.";
-                //
-                // Access the last child of the first employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                //
-                // Invoke its "getAttributeNode(name)" method where name = "invalidAttribute"
-                // This should result in a null value being returned by the method.
-                //
-                computedValue = addressElement.GetAttributeNode("invalidAttribute");//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0010E --------------------------
-        //
-        //-------------------------- test case core-0011E ----------------------------
-        //
-        // Testing feature - The "setAttributeNode(newAttr)" adds a new attribute
-        //                   to the Element.
-        //
-        // Testing approach - Retrieve the last child of the first employee and
-        //                    add a new attribute node to it by invoking its 
-        //                    "setAttributeNode(newAttr)" method.  This test makes 
-        //                    use of the "createAttribute(name)" method from the 
-        //                    Document interface.
-        //
-        // Semantic Requirements: 1, 11
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0011E()
-        {
-            string computedValue = "";
-            string expectedValue = "";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute newAttribute = null;
-            string name = "district";
-
-            testResults results = new testResults("Core0011E");
-            try
-            {
-                results.description = "The \"setAttributeNode(newAttr)\" method adds a new " +
-                    "attribute node to the element.";
-                //
-                // Access the last child of the first employee.
-                //
-                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,name);
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                //
-                // Invoke its "setAttributeNode(newAttr)" method where 
-                // newAttr = "newAttribute".  Since no value was specified or given 
-                // by default, its value should be the empty string. 
-                //
-                addressElement.SetAttributeNode(newAttribute);//.node.
-                computedValue = addressElement.GetAttribute(name);//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0011E --------------------------
-        //
-        //-------------------------- test case core-00012E ----------------------------
-        //
-        // Testing feature - The "setAttributeNode(newAttr)" method adds a new attribute
-        //                   to the Element.  If the "newAttr" Attr node is already
-        //                   present in this element, it should replace the existing
-        //                   one.
-        //
-        // Testing approach - Retrieve the last child of the third employee and
-        //                    add a new attribute node to it by invoking its
-        //                    "setAttributeNode(newAttr)" method.  The new attribute 
-        //                    node to be added is "street", which is already
-        //                    present in this element.  The method should replace the 
-        //                    existing Attr node with the new one.  This test make use 
-        //                    of the "createAttribute(name)" method from the Document
-        //                    interface.
-        //
-        // Semantic Requirements: 1, 12
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0012E()
-        {
-            string computedValue = "";
-            string expectedValue = "";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute newAttribute = null;
-
-            testResults results = new testResults("Core0012E");
-            try
-            {
-                results.description = "The \"setAttributeNode(newAttr)\" method when " +
-                    "the \"newAttr\" node is already part of this " +
-                    "element.  The existing attribute node should be "+
-                    "replaced with the new one."; 
-                //
-                // Access the last child of the third employee.
-                //
-                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");  
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
-                //
-                // Invoke its "setAttributeNode(newAttr)" method where 
-                // newAttr = "newAttribute".  That attribute is already part of this 
-                // element.  The existing attribute should be replaced with the new one 
-                //    (newAttribute).
-                //
-                addressElement.SetAttributeNode(newAttribute);//.node.
-                computedValue = addressElement.GetAttribute("street");//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0012E --------------------------
-        //
-        //-------------------------- test case core-00013E ----------------------------
-        //
-        // Testing feature - If The "setAttributeNode(newAttr)" method replaces 
-        //                   an existing Attr node with the same name, then it 
-        //                   should return the previously existing Attr node.
-        //
-        // Testing approach - Retrieve the last child of the third employee and add
-        //                    a new attribute node to it.  The new attribute node to 
-        //                    be added is "street", which is already present in this
-        //                    Element.  The method should return the existing Attr 
-        //                    node(old "street" Attr).  This test make use of the 
-        //                    "createAttribute(name)" method from the Document 
-        //                    interface.
-        //
-        // Semantic Requirements: 1, 13
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0013E()
-        {
-            string computedValue = "";
-            string expectedValue = "No";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute oldStreetAttribute = null;
-            System.Xml.XmlAttribute newAttribute = null;
-
-            testResults results = new testResults("Core0013E");
-            try
-            {
-                results.description = "The \"setAttributeNode(newAttr)\" method when the " +
-                    "\"newAttr\" attribute node is already present in " +
-                    "this element.  The method should return the previously " +
-                    "existing Attr node."; 
-                //
-                // Access the last child of the third employee.
-                //
-                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
-                //
-                // Invoke its "setAttributeNode(newAttr)" method where 
-                // newAttr was just created with the same name as an already existing
-                // attribute("street"). The existing attribute should be replaced with the 
-                // new one and the method should return the existing "street" Attr node.  
-                //
-                oldStreetAttribute = addressElement.SetAttributeNode(newAttribute);//.node.
-                //
-                // The "oldStreetAttribute" now contains the old Attr node and its 
-                // "value" attribute should be available for examination.
-                //
-                computedValue = oldStreetAttribute.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0013E --------------------------
-        //
-        //-------------------------- test case core-00014E ----------------------------
-        //
-        // Testing feature - The "setAttributeNode(newAttr)" method returns the 
-        //                   null value if no previously existing Attr node with the 
-        //                   same name was replaced.
-        //
-        // Testing approach - Retrieve the last child of the third and add a new 
-        //                    attribute node to it.  The new attribute node to be 
-        //                    added is "district", which is not part of this Element.  
-        //                    The method should return the null value.  This test makes
-        //                    use of the "createAttribute(name)" method from the
-        //                    Document interface.
-        //
-        // Semantic Requirements: 1, 15
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0014E()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute newAttribute = null;
-
-            testResults results = new testResults("Core0014E");
-            try
-            {
-                results.description = "The \"setAttributeNode(newAttr)\" method returns a " +
-                    "null value if no previously existing Attr node was replaced.";
-                //
-                // Access the sixth child of the third employee.
-                //
-                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
-                //
-                // Invoke its "setAttributeNode(newAttr)" method where name = "newAttribute".
-                // This attribute is not part of this element.  The method should add the
-                // new Attribute and return a null value.
-                //
-                computedValue = addressElement.SetAttributeNode(newAttribute);//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0014E --------------------------
-        //
-        //-------------------------- test case core-00015E ----------------------------
-        //
-        // Testing feature - The "removeAttributeNode(oldAttr)" method removes the 
-        //                   specified attribute. 
-        //
-        // Testing approach - Retrieve the last child of the third employee, add
-        //                    a new "district" node to it and the try to remove it. 
-        //                    To verify that the node was removed this test uses the 
-        //                    "getNamedItem(name)" from the NamedNodeMap interface.   
-        //                    This test also makes use of the "attributes" attribute 
-        //                    from the Node interface.
-        //
-        // Semantic Requirements: 1, 14
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0015E()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttributeCollection attrList = null;
-            System.Xml.XmlAttribute newAttribute = null;
-            newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
-
-            testResults results = new testResults("Core0015E");
-            try
-            {
-                results.description = "The \"removeAttributeNode(oldAttr)\" method removes the " +
-                    "specified attribute node.";
-                //
-                // Access the sixth child of the third employee and add the new
-                // attribute to it.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
-                addressElement.SetAttributeNode(newAttribute);//.node.
-                //
-                // Invoke its "removeAttributeNode(oldAttr)" method where 
-                // name = "newAttribute" and remove that attribute node.
-                //
-                addressElement.RemoveAttributeNode(newAttribute);//.node.
-                //
-                // To ensure that the "district" attribute was indeed removed, a listing
-                // of all attributes is created by invoking the "attributes" attribute
-                // of "addressElement".  After the list is created, we attempt to
-                // retrieve the "district" element from the list.  A null value should
-                // be return in its place.
-                //
-                attrList = addressElement.Attributes;
-                computedValue = attrList.GetNamedItem("district");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0015E --------------------------
-        //
-        //-------------------------- test case core-00016E ----------------------------
-        //
-        // Testing feature - The "removeAttributeNode(oldAttr)" method removes the 
-        //                   specified attribute node and restore any default values.
-        //
-        // Testing approach - Retrieve the last child of the third employee and
-        //                    remove its "street" Attr node.  Since this node has
-        //                    default value defined in the DTD file, that default
-        //                    value should immediately be the new value.  
-        //
-        // Semantic Requirements: 1, 15
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-        [Ignore(".NET DOM implementation does not match W3C DOM specification.")]
-	public void core0016E()
-        {
-            string computedValue = "";
-            string expectedValue = "Yes";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute streetAttr = null;
-            //System.Xml.XmlNode thirdEmployee = null;
-
-            testResults results = new testResults("Core0016E");
-            try
-            {
-                results.description = "The \"removeAttributeNode(oldAttr)\" method removes the " +
-                    "specified attribute node and restores any default values.";
-                //
-                // Access the sixth child of the third employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
-                //
-                // Create an instance of an Attr object by retrieving the "street"
-                // attribute node, invoke its "removeAttributeNode(oldAttr)" method
-                // where name = "streetAttr" and remove that attribute node.  Note that 
-                // "the removeAttributeNode(oldAttr)" takes an Attr object as its 
-                // parameter, that is why an Attr object (named "street") is first created. 
-                //
-                streetAttr = addressElement.GetAttributeNode("street");//.node.
-                addressElement.RemoveAttributeNode(streetAttr);//.node.
-                //
-                // Since there is a default value defined for the "street" attribute, it
-                // should immediately be the new value for that attribute. 
-                //
-                computedValue = addressElement.GetAttribute("street");//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0016E --------------------------
-        //
-        //-------------------------- test case core-00017E ----------------------------
-        //
-        // Testing feature - The "removeAttributeNode(oldAttr)" method returns the 
-        //                   node that was removed.
-        //
-        // Testing approach - Retrieve the last child of the third employee and 
-        //                    remove its "street" Attr node.  The method should 
-        //                    return the old attribute node.
-        //
-        // Semantic Requirements: 1, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0017E()
-        {
-            string computedValue = "";
-            string expectedValue = "No";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute streetAttr = null;
-            System.Xml.XmlAttribute oldStreetAttribute = null;
-
-            testResults results = new testResults("Core0017E");
-            try
-            {
-                results.description = "The \"removeAttributeNode(oldAttr)\" method returns the "+
-                    "removed attribute node.";
-                //
-                // Access the sixth child of the third employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
-
-                // create an instance of an Attr object by retrieving the "street"
-                // attribute node, invoke its "removeAttributeNode(oldAttr)" method
-                // where name = "streetAttr" and remove that attribute node.  Note that
-                // "the removeAttributeNode(oldAttr)" takes an Attr object as its
-                // parameter, that is why an Attr object (named "street") is first created.
-                //
-                streetAttr = addressElement.GetAttributeNode("street");//.node.
-                oldStreetAttribute = addressElement.RemoveAttributeNode(streetAttr);//.node.
-                //
-                // The method should return the removed attribute node.  Its value can then
-                // be examined.
-                //
-                computedValue = oldStreetAttribute.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0017E --------------------------
-        //
-        //-------------------------- test case core-00018E ----------------------------
-        //
-        // Testing feature - The "getElementsByTagName(name)" method returns a list 
-        //                   of all descendant Elements with the given tag name.
-        //
-        // Testing approach - Get a listing of all the descendant elements of the
-        //                    root element using the string "employee" as the tag
-        //                    name.  The  method should return a Node list of length 
-        //                    equal to 5.  This test makes use of the "length" 
-        //                    attribute from the NodeList interface.
-        //
-        // Semantic Requirements: 1, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0018E()
-        {
-            int computedValue = 0;
-            int expectedValue = 5;
-            System.Xml.XmlNodeList employeeList = null;
-            System.Xml.XmlElement docElement = null;
-
-            testResults results = new testResults("Core0018E");
-
-            results.description = "The \"getElementsByTagName(name)\" method returns a "+
-                "NodeList of all descendant elements with the given " +
-                "tag name(method returning a non-empty list)";
-            //
-            // get a listing of all the elements that match the tag "employee".
-            //
-            docElement = util.getRootNode();
-            employeeList = docElement.GetElementsByTagName("employee");
-            //
-            // The method should return a NodeList whose length can then be examined. 
-            //
-            computedValue = employeeList.Count;
-            //
-            // Write out results
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0018E --------------------------
-        //
-        //-------------------------- test case core-00019E ----------------------------
-        //
-        // Testing feature - The "getElementsByTagName(name)" returns a list of all
-        //                   descendant Elements with the given tag name.  Test
-        //                   for an empty list.
-        //
-        // Testing approach - Get a listing of all the descendant elements of the
-        //                    root element using the string "noMatches" as the tag
-        //                    name.  The  method should return a NodeList of length
-        //                    equal to 0 since no descendant elements match the given
-        //                    tag name.  This test makes use of the "length" attribute
-        //                    from the NodeList interface.
-        //
-        // Semantic Requirements: 1, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0019E()
-        {
-            int computedValue = 0;
-            int expectedValue = 0;
-            System.Xml.XmlNodeList employeeList = null;
-            System.Xml.XmlElement docElement = null;
-
-            testResults results = new testResults("Core0019E");
-
-            results.description = "The \"getElementsByTagName(name)\" method returns a "+
-                "NodeList of all descendant elements with the given " +
-                "tag name (method returns an empty list)";
-            //
-            // get a listing of all the elements that match the tag "noMatch".
-            //
-            docElement = util.getRootNode();
-            employeeList = docElement.GetElementsByTagName("noMatch");
-            //
-            // The method should return a NodeList whose length can then be examined.
-            //
-            computedValue = employeeList.Count;
-            //
-            // Write out results
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0019E --------------------------
-        //
-        //-------------------------- test case core-00020E ----------------------------
-        //
-        // Testing feature - The "getElementsByTagName(name)" returns a list of all
-        //                   descendant Elements in the order the children were
-        //                   encountered in a pre order traversal of the element tree.
-        //
-        // Testing approach - Get a listing of all the descendant elements of the
-        //                    root node using the string "employee" as the tag
-        //                    name.  The  method should return a Node list of length
-        //                    equal to 5 in the order the children were encountered.
-        //                    Item number four in the list is accessed using a 
-        //                    subscript.  Item number four is itself an Element node
-        //                    with children and whose first child should be 
-        //                    "employeeId".
-        //
-        // Semantic Requirements: 1, 18 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0020E()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId";
-            System.Xml.XmlNodeList employeeList = null;
-            System.Xml.XmlNode fourthEmployee = null;
-            System.Xml.XmlElement docElement = null;
-
-            testResults results = new testResults("Core0020E");
-
-            results.description = "The \"getElementsByTagName(name)\" returns a NodeList " +
-                "of all descendant elements in the order the " +
-                "children were encountered in a preorder traversal " +
-                "of the element tree.";
-            //
-            // get a listing of all the elements that match the tag "employee".
-            //
-            docElement = util.getRootNode();
-            employeeList = docElement.GetElementsByTagName("employee");
-
-            //
-            // The method should return a NodeList of the children in the order the 
-            // children were encountered.  Since "employeeList" is a NodeList we should 
-            // be able to access its elements by using a subscript.  Item number four 
-            // is itself an Element node with six children and the first child 
-            // is "employeeId". 
-            //
-            fourthEmployee = employeeList.Item(util.FOURTH);
-            computedValue = fourthEmployee.FirstChild.Name;
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0020E --------------------------
-        //
-        //-------------------------- test case core-00021E ----------------------------
-        //
-        // Testing feature - The "getElementsByTagName(name)" method may use the 
-        //                   special value "*" to match all the tags in the element 
-        //                   tree. 
-        //
-        // Testing approach - Get a listing of all the descendant elements of the
-        //                    last employee by using the special value of "*".  The 
-        //                    method should return all of the descendant children
-        //                    (total of 6) in the order the children were encountered.
-        //
-        // Semantic Requirements: 1, 19 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0021E()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId name position salary gender address ";
-            System.Xml.XmlNodeList elementList = null;
-            System.Xml.XmlElement lastEmployee = null;
-
-            testResults results = new testResults("Core0021E");
-
-            results.description = "The \"getElementsByTagName(name)\" method may use the " +
-                "special value \"*\" to match all the tags in the " +
-                "element tree.";
-            //
-            // get a listing of all the descendant elements of the last employee by using
-            // the special value of "*".
-            //
-            lastEmployee = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,-1);
-            elementList = lastEmployee.GetElementsByTagName("*");//.node.
-            //
-            // Traverse the list.
-            //
-            for (int index = 0;index <= elementList.Count - 1;index++)
-                computedValue += elementList.Item(index).Name+" ";
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0021E --------------------------
-        //
-        //-------------------------- test case core-00022E ----------------------------
-        //
-        // Testing feature - The "normalize()" method puts all the nodes in the
-        //                   full depth of the sub-tree underneath this element
-        //                   into a "normal" form.
-        //
-        // Testing approach - Retrieve the third employee and access its second 
-        //                    child.  This child contains a block of text that spread
-        //                    accross multiple lines.  The content of the "name" 
-        //                    child should be parsed and treated as a single Text node.
-        //
-        // Semantic Requirements: 1, 20
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0022E()
-        {
-            string computedValue = "";
-            string expectedValue = "Roger\n Jones";
-            System.Xml.XmlNode idElement = null;
-            System.Xml.XmlNode textNode = null;
-
-            testResults results = new testResults("Core0022E");
-            try
-            {
-                results.description = "The \"normalize()\" method puts all the nodes in the " +
-                    "full depth of the sub-tree of this element into a normal form.";
-                //
-                // The "normalize() method should combine all the contiguous blocks of text
-                // and form a single "Text" node.  The "nodeValue" of that final Text node
-                // should be the combination of all continuos blocks of text that do not
-                // contain any markup language. 
-                //
-                idElement = util.nodeObject(util.THIRD,util.SECOND);
-                idElement.Normalize();//.node.
-                textNode = idElement.LastChild;//.node.
-                //
-                // text should be in normal form now
-                //
-                computedValue = textNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0022E --------------------------
-        //
-        //-------------------------- test case core-00023E ---------------------------
-        //
-        // Testing feature - The "setAttribute(name,value)" method raises an
-        //                   INVALID_CHARACTER_ERR Exception if the specified  
-        //                   name contains an invalid character.
-        //
-        // Testing approach - Retrieve the last child of the first employee
-        //                    and call its "setAttribute(name,value)" method with
-        //                    "name" containing an invalid character.
-        //
-        // Semantic Requirements: 1, 21
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0023E()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement addressElement = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0023E");
-            try
-            {
-                results.description = "The \"setAttribute(name,value)\" method raises an " +
-                    "ArgumentException if the specified " +
-                    "name contains an invalid character.";
-                //
-                // Access the "address" element of the first employee. 
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                //
-                // Attempt to set an attribute with an invalid character in its name.
-                //
-                try 
-                {
-                    addressElement.SetAttribute("invalid^Name","thisValue");//.node.
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0023E --------------------------
-        //
-        //-------------------------- test case core-0024E ----------------------------
-        //
-        // Testing feature - The "setAttribute(name,value)" method raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this 
-        //                   node is readonly.
-        //
-        // Testing approach - Retrieve the Element node inside the Entity node 
-        //                    named "ent4" and attempt to set an attribute for
-        //                    it.  Descendants of Entity nodes are readonly nodes
-        //                    and therefore the desired exception should be raised.
-        //
-        // Semantic Requirements: 22
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0024E()
-        {
-            string computedValue = "";
-            System.Xml.XmlEntity entityNode = null;
-            System.Xml.XmlElement entityDesc = null;
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0024E");
-            try
-            {
-                results.description = "The \"setAttribute(name,value)\" method raises a " +
-                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
-
-                //
-                // Retreive the targeted data.
-                //
-                entityNode = util.getEntity("ent4");
-                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
-                //
-                // Attempt to set an attribute for a readonly node should raise an exception.
-                //
-                try 
-                {
-                    entityDesc.SetAttribute("newAttribute","thisValue");
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0024E --------------------------
-        //
-        //-------------------------- test case core-00025E ---------------------------
-        //
-        // Testing feature - The "removeAttribute(name)" method raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
-        //                   node is readonly.
-        //
-        // Testing approach - Retrieve the Element node inside the Entity node
-        //                    named "ent4" and attempt to remove an attribute from
-        //                    it.  Descendants of Entity nodes are readonly nodes
-        //                    and therefore the desired exception should be raised.
-        //
-        // Semantic Requirements: 23
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0025E()
-        {
-            string computedValue = "";
-            System.Xml.XmlEntity entityNode = null;
-            System.Xml.XmlElement entityDesc = null;
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0025E");
-            try
-            {
-                results.description = "The \"removeAttribute(name)\" method raises a " +
-                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
-                //
-                // Retrieve the targeted data.
-                //
-                entityNode = util.getEntity("ent4");
-                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
-                //
-                // Attempt to set an attribute for a readonly node should raise an exception.
-                //
-                try 
-                {
-                    entityDesc.RemoveAttribute("attr1");
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0025E --------------------------
-        //
-        //-------------------------- test case core-00026E ---------------------------
-        //
-        // Testing feature - The "setAttributeNode(newAttr)" method raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
-        //                   node is readonly.
-        //
-        // Testing approach - Retrieve the Element node inside the Entity node
-        //                    named "ent4" and attempt to add a newly created Attr 
-        //                    node to it.  Descendants of Entity nodes are readonly 
-        //                    nodes and therefore the desired exception should be
-        //                    raised.
-        //
-        // Semantic Requirements: 24
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0026E()
-        {
-            string computedValue = "";
-            System.Xml.XmlEntity entityNode = null;
-            System.Xml.XmlElement entityDesc = null;
-            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0026E");
-            try
-            {
-                results.description = "The \"setAttributeNode(newAttr)\" method raises a " +
-                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
-                //
-                // Retrieve targeted data
-                //
-                entityNode = util.getEntity("ent4");
-                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
-                //
-                // Attempt to set an attribute for a readonly node should raise an exception.
-                //
-                try 
-                {
-                    entityDesc.SetAttributeNode(newAttr);
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0026E --------------------------
-        //
-        //-------------------------- test case core-00027E ---------------------------
-        //
-        // Testing feature - The "removeAttributeNode(newAttr)" method raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
-        //                   node is readonly.
-        //
-        // Testing approach - Retrieve the Element node inside the Entity node
-        //                    named "ent4" and attempt to remove its "attr1"
-        //                    attribute.  Descendants of Entity nodes are readonly
-        //                    nodes and therefore the desired exception should be
-        //                    raised.
-        //
-        // Semantic Requirements: 25
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0027E()
-        {
-            string computedValue = "";
-            System.Xml.XmlEntity entityNode = null;
-            System.Xml.XmlElement entityDesc = null;
-            System.Xml.XmlAttribute oldAttribute = null;
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0027E");
-            try
-            {
-                results.description = "The \"removeAttributeNode(newAttr)\" method raises a " +
-                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
-                //
-                // Get an instance of an attribute node and retrieve targeted data.
-                //
-                entityNode = util.getEntity("ent4");
-                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
-                oldAttribute = ((System.Xml.XmlElement)entityNode.FirstChild).GetAttributeNode("attr1");
-                //
-                // Attempt to set remove an attribute node from a readonly node (lastChild).  
-                // Should raise an exception. 
-                //
-                try 
-                {
-                    entityDesc.RemoveAttributeNode(oldAttribute);
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0027E --------------------------
-        //
-        //-------------------------- test case core-00028E ---------------------------
-        //
-        // Testing feature - The "setAttributeNode(newAttr)" method raises a
-        //                   System.ArgumentException Exception if the "newAttr" was 
-        //                   created from a different document than the one that
-        //                   created this document. 
-        //
-        // Testing approach - Retrieve the last employee and attempt to set
-        //                    a new attribute node for its "employee" element.
-        //                    The new attribute was created from a document 
-        //                    other than the one that crated this element,
-        //                    therefore the desired exception should be raised. 
-        //                    This test uses the "createAttribute(newAttr)" method
-        //                    from the Document interface.
-        //
-        // Semantic Requirements: 26
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0028E()
-        {
-            System.Xml.XmlElement addressElement = null;
-            string computedValue = "";
-            System.Xml.XmlAttribute newAttr = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0028E");
-            try
-            {
-                results.description = "The \"setAttributeNode(newAttr)\" method raises a " +
-                    "System.ArgumentException Exception if \"newAttr\" was created " +
-                    "from a different document than the one who created this node.";
-                //
-                // Access the address Element of the last employee and attempt to set 
-                // a new attribute node. 
-                //
-                newAttr = util.getOtherDOMDocument().CreateAttribute("newAttribute");
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
-                //
-                // The new attribute was created from a different document and therefore 
-                // an exception should be raised.
-                //
-                try 
-                {
-                    addressElement.SetAttributeNode(newAttr);//.node.
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0028E --------------------------
-        //
-        //-------------------------- test case core-00029E ---------------------------
-        //
-        // Testing feature - The "setAttributeNode(newAttr)" method raises an
-        //                   InvalidOperationException if the "newAttr"
-        //                   attribute is already an attribute of another element. 
-        //
-        // Testing approach - Retrieve the last employee and attempt to set an
-        //                    attribute node to one of its children that
-        //                    already exist in another children.  The attribute
-        //                    node used is "street", which already exist in the
-        //                    "address" element.  An instance of that attribute
-        //                    node is first retrived from the "address" element and
-        //                    then attempted to be set in the "employeeId" element.  
-        //                    This should cause the intended exception to be raised.
-        //
-        // Semantic Requirements: 27
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0029E()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement employeeIdElement = null;
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute newAttribute = null; 
-            string expectedValue = "InvalidOperationException";
-
-            testResults results = new testResults("Core0029E");
-            try
-            {
-                results.description = "The \"setAttributeNode(newAttr)\" method raises an "+
-                    "InvalidOperationException if \"newAttr\" attribute "+
-                    "is already being used by another element.";
-                //
-                // Retrieve an already existing attribute from the "address" element.
-                // 
-                addressElement =  (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
-                newAttribute = addressElement.GetAttributeNode("street");//.node.
-                //
-                // Access the "employeeId" element of the last employee.
-                //
-                employeeIdElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.FIRST);
-                //
-                // Attempt to set an attribute node with an already existing attribute node  
-                // in another element.
-                //
-                try 
-                {
-                    employeeIdElement.SetAttributeNode(newAttribute);//.node.
-                }
-                catch(System.InvalidOperationException ex) 
-                { 
-                    computedValue = "InvalidOperationException"; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0029E -------------------------
-        //
-        //-------------------------- test case core-0030E ---------------------------
-        //
-        // Testing feature - The "removeAttributeNode(oldAttr)" method raises a 
-        //                   NOT_FOUND_ERR Exception if the "oldAttr" attribute
-        //                   is not an attribute of the element.
-        //
-        // Testing approach - Retrieve the last employee and attempt to remove
-        //                    a non existing attribute node.   This should cause 
-        //                    the intended exception be raised.  This test makes use
-        //                    of the "createAttribute(name)" method from the
-        //                    Document interface.
-        //
-        // Semantic Requirements: 28
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0030E()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement addressElement = null;
-            System.Xml.XmlAttribute oldAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"oldAttribute");
-            string expectedValue = "System.ArgumentException";//util.NOT_FOUND1_ERR;
-
-            testResults results = new testResults("Core0030E");
-            try
-            {
-                results.description = "The \"removeAttributeNode(oldAttr)\" method raises a " +
-                    "NOT_FOUND_ERR Exception if \"oldAttr\" attribute " +
-                    "is not an attribute of the element.";
-                //
-                // Access the "address" element of the last employee.
-                //
-                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
-                //
-                // Attempt to remove a non-existing attribute. Should raise exception.
-                //
-                try 
-                {
-                    addressElement.RemoveAttributeNode(oldAttribute);//.node.
-                }
-                catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0030E --------------------------
-    }
-}
+//**************************************************************************
+//
+//
+//                       National Institute Of Standards and Technology
+//                                     DTS Version 1.0
+//         
+//                                   Element Interface
+//
+// Written by: Carmelo Montanez
+// Modified by:  Mary Brady
+//
+// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
+// Mainsoft Corporation (c) 2003-2004
+//**************************************************************************
+using System;
+using System.Xml;
+
+using nist_dom;
+using NUnit.Framework;
+
+namespace nist_dom.fundamental
+{
+    [TestFixture]
+    public class ElementTest
+    {
+        public static int i = 2;
+/*
+        public testResults[] RunTests()
+        {
+            testResults[] tests = new testResults[] {core0001E(), core0002E(), core0003E(),core0004E(),
+                                                        core0005E(), core0006E(), core0007E(), core0008E(),
+                                                        core0009E(), core0010E(), core0011E(), core0012E(),
+                                                        core0013E(), core0014E(), core0015E(), core0016E(),
+                                                        core0017E(), core0018E(), core0019E(), core0020E(),
+                                                        core0021E(), core0022E(), core0023E(), core0024E(),
+                                                        core0025E(), core0026E(), core0027E(), core0028E(),
+                                                        core0029E(), core0030E()};
+  
+            return tests;
+        }
+*/
+        //------------------------ test case core-0001E ------------------------
+        //
+        // Testing feature - Elements may have attributes associated with them. 
+        //
+        // Testing approach - Retrieve the first attribute from the last child of
+        //                    the first employee and examine its "specified"
+        //                    attribute.  This test is only intended to show
+        //                    that Elements can actually have attributes.
+        //                    This test uses the "getNamedItem(name)" method from 
+        //                    the NamedNodeMap interface.
+        //
+        // Semantic Requirements: 1
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0001E()
+        {
+            string computedValue = "0";//0
+            string expectedValue = "True";//true
+            System.Xml.XmlNode addressElement = null;
+            System.Xml.XmlAttributeCollection attrList = null;
+            System.Xml.XmlAttribute domesticAttr = null;
+
+            testResults results = new testResults("Core0001E");
+            try
+            {
+                results.description = "Element nodes may have associated attributes.";
+                //
+                // Retrieve the "address" element from the first employee.
+                //
+                addressElement = util.nodeObject(util.FIRST,util.SIXTH);
+                //
+                // Access its "domestic" attribute by creating a list of all attributes
+                // and then retrieving the desired attribute from the list by name. 
+                //
+                attrList = addressElement.Attributes;//.node.
+                domesticAttr = (System.Xml.XmlAttribute)attrList.GetNamedItem("domestic");
+                //
+                // Access its "specified" attribute.
+                //
+                computedValue = domesticAttr.Specified.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results 
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+        //------------------------ End test case core-0001E --------------------------
+        //
+        //------------------------ test case core-0002E ------------------------
+        //
+        // Testing feature - The generic Attribute "attributes" (Node interface) may 
+        //                   be used to retrieve the set of all attributes of an
+        //                   element.
+        //
+        // Testing approach - Create a list of all the attributes of the last child of
+        //                    of the first employee by using the generic "attributes"
+        //                    attribute from the Node interface.  Further the length
+        //                    of the attribute list is examined.  This test makes
+        //                    use of the "Count" attribute from the NameNodeMap 
+        //                    interface.
+        //
+        // Semantic Requirements: 1, 2 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0002E()
+        {
+            string computedValue = "";
+            string expectedValue = "2";
+            System.Xml.XmlNode addressElement = null;
+            System.Xml.XmlAttributeCollection attrList = null;
+
+            testResults results = new testResults("Core0002E");
+            try
+            {
+                results.description = "The generic \"attributes\" (from the Node interface) may " +
+                    "be used to retrieve the set of all attributes of an element.";
+                //
+                // Retrieve the "address" element from the first employee.
+                //
+                addressElement = util.nodeObject(util.FIRST,util.SIXTH);
+                //
+                // Access its attributes list.
+                //
+                attrList = addressElement.Attributes;
+                //
+                // Access its "length" attribute.
+                //
+                computedValue = attrList.Count.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0002E --------------------------
+        //
+        //-------------------------- test case core-0003E ----------------------------
+        //
+        // Testing feature - The "tagName" attribute contains the name of the
+        //                   element. 
+        //
+        // Testing approach - Retrieve the third child of the second employee and
+        //                    examine its "tagName" attribute.  It should return a 
+        //                    string containing the name of the element ("position",
+        //                    in this case). 
+        //
+        // Semantic Requirements: 3 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0003E()
+        {
+            string computedValue = "";
+            string expectedValue = "position";
+            System.Xml.XmlNode positionElement = null;
+
+            testResults results = new testResults("Core0003E");
+            try
+            {
+                results.description = "The \"tagName\" of an Element contains the " +
+                    "element's name.";
+                //
+                // Access its third child of the second employee.
+                //
+                positionElement = util.nodeObject(util.SECOND,util.THIRD);
+                //
+                // Access its "tagName" attribute.
+                //
+                computedValue = positionElement.Name;//tagName;//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0003E --------------------------
+        //
+        //-------------------------- test case core-0004E ----------------------------
+        //
+        // Testing feature - The "getAttribute(name)" method returns an attribute value
+        //                   by name. 
+        //
+        // Testing approach - Retrieve the the last child of the third employee, then  
+        //                    invoke its "getAttribute(name)" method.  It should
+        //                    return the value of the attribute("No", in this case).
+        //
+        // Semantic Requirements: 1, 4
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0004E()
+        {
+            string computedValue = "";
+            string expectedValue = "No";
+            System.Xml.XmlElement addressElement = null;
+
+            testResults results = new testResults("Core0004E");
+            try
+            {
+                results.description = "The \"getAttribute(name)\" method of an Element returns " +
+                    "the value of an attribute by name.";
+                //
+                // Retrieve the targeted data. 
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
+                computedValue = addressElement.GetAttribute("street");//addressElement.node.GetAttribute("street");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0004E --------------------------
+        //
+        //-------------------------- test case core-0005E ----------------------------
+        //
+        // Testing feature - The "getAttribute(name)" method returns an empty
+        //                   string if no value was assigned to an attribute and
+        //                   no default value was given in the DTD file.
+        //
+        // Testing approach - Retrieve the the last child of the last employee, then
+        //                    invoke its "getAttribute(name)" method, where "name" is an
+        //                    attribute with no specified or DTD default value.  The
+        //                    "getAttribute(name)" method should return the empty
+        //                    string.  This method makes use of the 
+        //                    "createAttribute(newAttr)" method from the Document
+        //                    interface.
+        //
+        // Semantic Requirements: 1, 4, 5 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0005E()
+        {
+            string computedValue = "";
+            string expectedValue = "";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute newAttribute = null;
+
+
+            testResults results = new testResults("Core0005E");
+            try
+            {
+                results.description = "The \"getAttribute(name)\" method of an Element returns " +
+                    "the empty string if the attribue does not have a default " +
+                    "or specified value.";
+                //
+                // Access the sixth child of the last employee.
+                //
+                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FOURTH,util.SIXTH);
+                //
+                // Invoke its "setAttributeNode(newAttr)" method where
+                // newAttr = "newAttribute".  Since no value was specified or given
+                // by default, the value returned by the "getAttribute(name)" method 
+                // should be the empty string.
+                //
+                addressElement.SetAttributeNode(newAttribute);//.node.
+                computedValue = addressElement.GetAttribute("district");//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0005E --------------------------
+        //
+        //-------------------------- test case core-0006E ----------------------------
+        //
+        // Testing feature - The "setAttribute(name,value)" method adds a new attribute
+        //                   to the Element.
+        //
+        // Testing approach - Retrieve the last child of the last employee, then
+        //                    add an attribute to it by invoking its 
+        //                    "setAttribute(name,value)" method.  It should create 
+        //                    a "name" attribute with an assigned value equal to 
+        //                    "value".  
+        //
+        // Semantic Requirements: 1, 4, 6 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0006E()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement addressElement = null;
+            string name = "district";
+            string expectedValue = "dallas"; 
+
+
+            testResults results = new testResults("Core0006E");
+            try
+            {
+                results.description = "The \"setAttribute(name,value)\" method of an Element " +
+                    "creates an new \"name\" attribute whose value is equal to \"value\".";
+                //
+                // Access the last child of the last employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
+                //
+                // Invoke its "setAttribute(name,value)" method and create a new attribute
+                //
+                addressElement.SetAttribute(name,expectedValue);//.node.
+                //
+                // This Element should now have a new attribute that we can be retrieved
+                // by name. 
+                //
+                computedValue = addressElement.GetAttribute(name);//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0006E --------------------------
+        //
+        //-------------------------- test case core-0007E ----------------------------
+        //
+        // Testing feature - The "setAttribute(name,value)" method adds a new attribute
+        //                   to the Element.  If the "name" is already present, then
+        //                   its value should be changed to the new one of the
+        //                   "value" parameter.
+        //
+        // Testing approach - Retrieve the last child of the fourth employee,
+        //                    then add an attribute to it by invoking its
+        //                    "setAttribute(name,value)" method.  Since the name 
+        //                    of the used attribute ("street") is already present
+        //                    in this element, then its value should be
+        //                    changed to the new one of the "value" parameter.
+        //
+        // Semantic Requirements: 1, 4, 7 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0007E()
+        {
+            string computedValue = "";
+            string expectedValue = "Neither";
+            System.Xml.XmlElement addressElement = null;
+
+            testResults results = new testResults("Core0007E");
+            try
+            {
+                results.description = "The \"setAttribute(name,value)\" method of an Element " +
+                    "where the \"name\" attribute is already present in this Element.";
+                //
+                // Access the sixth child of the fourth employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FOURTH,util.SIXTH);
+                //
+                // Invoke its "setAttribute(name,value)" method where name = "street"
+                // and value = "Neither".
+                //
+                addressElement.SetAttribute("street","Neither");//.node.
+                //
+                // The "street" attribute should now have a value of "Neither" 
+                //
+                computedValue = addressElement.GetAttribute("street");//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0007E --------------------------
+        //
+        //-------------------------- test case core-0008E ----------------------------
+        //
+        // Testing feature - The "removeAttribute(name)" removes an attribute
+        //                   by name.  If the removed attribute is known to have a
+        //                   default value, an attribute immediately appears 
+        //                   containing the default value.
+        //
+        // Testing approach - Retrieve the attribute named "street" from the last
+        //                    child of the fourth employee, then remove the "street"
+        //                    attribute by invoking its "removeAttribute(name) method.
+        //                    The "street" attribute has a default value defined in the 
+        //                    DTD file, that value should immediately replace the 
+        //                    old value.   
+        //
+        // Semantic Requirements: 1, 8 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+        [Ignore(".NET DOM implementation does not match W3C DOM specification.")]
+	public void core0008E()
+        {
+            string computedValue = "";
+            string expectedValue = "Yes";
+            System.Xml.XmlElement addressElement = null;
+            string streetAttr = "";
+
+            testResults results = new testResults("Core0008E");
+            try
+            {
+                results.description = "The \"removeAttribute(name)\" method of an Element " +
+                    "removes the \"name\" attribute and restores any " +
+                    "known default values.";
+                //
+                // Access the last child of the fourth employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FOURTH,util.SIXTH);
+                //
+                // Invoke its "removeAttribute(name)" method where name = "street"
+                //
+                addressElement.RemoveAttribute("street");//.node.
+                //
+                // Now access that attribute.
+                //
+                streetAttr = addressElement.GetAttribute("street");//.node.
+                //
+                // The "street" attribute should now have a default values 
+                //
+                computedValue = addressElement.GetAttribute("street");//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0008E --------------------------
+        //
+        //-------------------------- test case core-0009E ----------------------------
+        //
+        // Testing feature - The "getAttributeNode(name)" retrieves an attribute
+        //                   node by name.  
+        //
+        // Testing approach - Retrieve the attribute named "domestic" from the last 
+        //                    child of the first employee.  Since the method returns
+        //                    an Attr object, its name attribute can be examined to 
+        //                    ensure the proper attribute was retrieved.
+        //
+        // Semantic Requirements: 1, 9 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0009E()
+        {
+            string computedValue = "";
+            string expectedValue = "domestic";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute domesticAttrNode = null;
+
+            testResults results = new testResults("Core0009E");
+            try
+            {
+                results.description = "The \"getAttributeNode(name)\" method of an Element " +
+                    "returns the \"name\" Attr node.";
+                //
+                // Access the last child of the first employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                //
+                // Invoke its "getAttributeNode(name)" method where name = "domestic"
+                // and create an Attr object.  
+                //
+                domesticAttrNode = addressElement.GetAttributeNode("domestic");//.node.
+                //
+                // Now access the "name" attribute of that Attr node.  Since the "domestic"
+                // attribute was retrieved, the name of the Attr node should also be
+                // "domestic". 
+                //
+                computedValue = domesticAttrNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0009E --------------------------
+        //
+        //-------------------------- test case core-00010E ----------------------------
+        //
+        // Testing feature - The "getAttributeNode(name)" retrieves an attribute
+        //                   node by name.  It should return null if the "name" 
+        //                   attribute does not exist.
+        //
+        // Testing approach - Retrieve the last child of the first employee and 
+        //                    attempt to retrieve a non-existing attribute.
+        //                    The method should return null.  The non-existing
+        //                    attribute to be used is "invalidAttribute".
+        //
+        // Semantic Requirements: 1, 10
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0010E()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlElement addressElement = null;
+
+            testResults results = new testResults("Core0010E");
+            try
+            {
+                results.description = "The \"getAttributeNode(name)\" method returns null " +
+                    "if the \"name\" attribute does not exist.";
+                //
+                // Access the last child of the first employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                //
+                // Invoke its "getAttributeNode(name)" method where name = "invalidAttribute"
+                // This should result in a null value being returned by the method.
+                //
+                computedValue = addressElement.GetAttributeNode("invalidAttribute");//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0010E --------------------------
+        //
+        //-------------------------- test case core-0011E ----------------------------
+        //
+        // Testing feature - The "setAttributeNode(newAttr)" adds a new attribute
+        //                   to the Element.
+        //
+        // Testing approach - Retrieve the last child of the first employee and
+        //                    add a new attribute node to it by invoking its 
+        //                    "setAttributeNode(newAttr)" method.  This test makes 
+        //                    use of the "createAttribute(name)" method from the 
+        //                    Document interface.
+        //
+        // Semantic Requirements: 1, 11
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0011E()
+        {
+            string computedValue = "";
+            string expectedValue = "";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute newAttribute = null;
+            string name = "district";
+
+            testResults results = new testResults("Core0011E");
+            try
+            {
+                results.description = "The \"setAttributeNode(newAttr)\" method adds a new " +
+                    "attribute node to the element.";
+                //
+                // Access the last child of the first employee.
+                //
+                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,name);
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                //
+                // Invoke its "setAttributeNode(newAttr)" method where 
+                // newAttr = "newAttribute".  Since no value was specified or given 
+                // by default, its value should be the empty string. 
+                //
+                addressElement.SetAttributeNode(newAttribute);//.node.
+                computedValue = addressElement.GetAttribute(name);//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0011E --------------------------
+        //
+        //-------------------------- test case core-00012E ----------------------------
+        //
+        // Testing feature - The "setAttributeNode(newAttr)" method adds a new attribute
+        //                   to the Element.  If the "newAttr" Attr node is already
+        //                   present in this element, it should replace the existing
+        //                   one.
+        //
+        // Testing approach - Retrieve the last child of the third employee and
+        //                    add a new attribute node to it by invoking its
+        //                    "setAttributeNode(newAttr)" method.  The new attribute 
+        //                    node to be added is "street", which is already
+        //                    present in this element.  The method should replace the 
+        //                    existing Attr node with the new one.  This test make use 
+        //                    of the "createAttribute(name)" method from the Document
+        //                    interface.
+        //
+        // Semantic Requirements: 1, 12
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0012E()
+        {
+            string computedValue = "";
+            string expectedValue = "";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute newAttribute = null;
+
+            testResults results = new testResults("Core0012E");
+            try
+            {
+                results.description = "The \"setAttributeNode(newAttr)\" method when " +
+                    "the \"newAttr\" node is already part of this " +
+                    "element.  The existing attribute node should be "+
+                    "replaced with the new one."; 
+                //
+                // Access the last child of the third employee.
+                //
+                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");  
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
+                //
+                // Invoke its "setAttributeNode(newAttr)" method where 
+                // newAttr = "newAttribute".  That attribute is already part of this 
+                // element.  The existing attribute should be replaced with the new one 
+                //    (newAttribute).
+                //
+                addressElement.SetAttributeNode(newAttribute);//.node.
+                computedValue = addressElement.GetAttribute("street");//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0012E --------------------------
+        //
+        //-------------------------- test case core-00013E ----------------------------
+        //
+        // Testing feature - If The "setAttributeNode(newAttr)" method replaces 
+        //                   an existing Attr node with the same name, then it 
+        //                   should return the previously existing Attr node.
+        //
+        // Testing approach - Retrieve the last child of the third employee and add
+        //                    a new attribute node to it.  The new attribute node to 
+        //                    be added is "street", which is already present in this
+        //                    Element.  The method should return the existing Attr 
+        //                    node(old "street" Attr).  This test make use of the 
+        //                    "createAttribute(name)" method from the Document 
+        //                    interface.
+        //
+        // Semantic Requirements: 1, 13
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0013E()
+        {
+            string computedValue = "";
+            string expectedValue = "No";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute oldStreetAttribute = null;
+            System.Xml.XmlAttribute newAttribute = null;
+
+            testResults results = new testResults("Core0013E");
+            try
+            {
+                results.description = "The \"setAttributeNode(newAttr)\" method when the " +
+                    "\"newAttr\" attribute node is already present in " +
+                    "this element.  The method should return the previously " +
+                    "existing Attr node."; 
+                //
+                // Access the last child of the third employee.
+                //
+                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
+                //
+                // Invoke its "setAttributeNode(newAttr)" method where 
+                // newAttr was just created with the same name as an already existing
+                // attribute("street"). The existing attribute should be replaced with the 
+                // new one and the method should return the existing "street" Attr node.  
+                //
+                oldStreetAttribute = addressElement.SetAttributeNode(newAttribute);//.node.
+                //
+                // The "oldStreetAttribute" now contains the old Attr node and its 
+                // "value" attribute should be available for examination.
+                //
+                computedValue = oldStreetAttribute.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0013E --------------------------
+        //
+        //-------------------------- test case core-00014E ----------------------------
+        //
+        // Testing feature - The "setAttributeNode(newAttr)" method returns the 
+        //                   null value if no previously existing Attr node with the 
+        //                   same name was replaced.
+        //
+        // Testing approach - Retrieve the last child of the third and add a new 
+        //                    attribute node to it.  The new attribute node to be 
+        //                    added is "district", which is not part of this Element.  
+        //                    The method should return the null value.  This test makes
+        //                    use of the "createAttribute(name)" method from the
+        //                    Document interface.
+        //
+        // Semantic Requirements: 1, 15
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0014E()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute newAttribute = null;
+
+            testResults results = new testResults("Core0014E");
+            try
+            {
+                results.description = "The \"setAttributeNode(newAttr)\" method returns a " +
+                    "null value if no previously existing Attr node was replaced.";
+                //
+                // Access the sixth child of the third employee.
+                //
+                newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
+                //
+                // Invoke its "setAttributeNode(newAttr)" method where name = "newAttribute".
+                // This attribute is not part of this element.  The method should add the
+                // new Attribute and return a null value.
+                //
+                computedValue = addressElement.SetAttributeNode(newAttribute);//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0014E --------------------------
+        //
+        //-------------------------- test case core-00015E ----------------------------
+        //
+        // Testing feature - The "removeAttributeNode(oldAttr)" method removes the 
+        //                   specified attribute. 
+        //
+        // Testing approach - Retrieve the last child of the third employee, add
+        //                    a new "district" node to it and the try to remove it. 
+        //                    To verify that the node was removed this test uses the 
+        //                    "getNamedItem(name)" from the NamedNodeMap interface.   
+        //                    This test also makes use of the "attributes" attribute 
+        //                    from the Node interface.
+        //
+        // Semantic Requirements: 1, 14
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0015E()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttributeCollection attrList = null;
+            System.Xml.XmlAttribute newAttribute = null;
+            newAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
+
+            testResults results = new testResults("Core0015E");
+            try
+            {
+                results.description = "The \"removeAttributeNode(oldAttr)\" method removes the " +
+                    "specified attribute node.";
+                //
+                // Access the sixth child of the third employee and add the new
+                // attribute to it.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
+                addressElement.SetAttributeNode(newAttribute);//.node.
+                //
+                // Invoke its "removeAttributeNode(oldAttr)" method where 
+                // name = "newAttribute" and remove that attribute node.
+                //
+                addressElement.RemoveAttributeNode(newAttribute);//.node.
+                //
+                // To ensure that the "district" attribute was indeed removed, a listing
+                // of all attributes is created by invoking the "attributes" attribute
+                // of "addressElement".  After the list is created, we attempt to
+                // retrieve the "district" element from the list.  A null value should
+                // be return in its place.
+                //
+                attrList = addressElement.Attributes;
+                computedValue = attrList.GetNamedItem("district");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0015E --------------------------
+        //
+        //-------------------------- test case core-00016E ----------------------------
+        //
+        // Testing feature - The "removeAttributeNode(oldAttr)" method removes the 
+        //                   specified attribute node and restore any default values.
+        //
+        // Testing approach - Retrieve the last child of the third employee and
+        //                    remove its "street" Attr node.  Since this node has
+        //                    default value defined in the DTD file, that default
+        //                    value should immediately be the new value.  
+        //
+        // Semantic Requirements: 1, 15
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+        [Ignore(".NET DOM implementation does not match W3C DOM specification.")]
+	public void core0016E()
+        {
+            string computedValue = "";
+            string expectedValue = "Yes";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute streetAttr = null;
+            //System.Xml.XmlNode thirdEmployee = null;
+
+            testResults results = new testResults("Core0016E");
+            try
+            {
+                results.description = "The \"removeAttributeNode(oldAttr)\" method removes the " +
+                    "specified attribute node and restores any default values.";
+                //
+                // Access the sixth child of the third employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
+                //
+                // Create an instance of an Attr object by retrieving the "street"
+                // attribute node, invoke its "removeAttributeNode(oldAttr)" method
+                // where name = "streetAttr" and remove that attribute node.  Note that 
+                // "the removeAttributeNode(oldAttr)" takes an Attr object as its 
+                // parameter, that is why an Attr object (named "street") is first created. 
+                //
+                streetAttr = addressElement.GetAttributeNode("street");//.node.
+                addressElement.RemoveAttributeNode(streetAttr);//.node.
+                //
+                // Since there is a default value defined for the "street" attribute, it
+                // should immediately be the new value for that attribute. 
+                //
+                computedValue = addressElement.GetAttribute("street");//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0016E --------------------------
+        //
+        //-------------------------- test case core-00017E ----------------------------
+        //
+        // Testing feature - The "removeAttributeNode(oldAttr)" method returns the 
+        //                   node that was removed.
+        //
+        // Testing approach - Retrieve the last child of the third employee and 
+        //                    remove its "street" Attr node.  The method should 
+        //                    return the old attribute node.
+        //
+        // Semantic Requirements: 1, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0017E()
+        {
+            string computedValue = "";
+            string expectedValue = "No";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute streetAttr = null;
+            System.Xml.XmlAttribute oldStreetAttribute = null;
+
+            testResults results = new testResults("Core0017E");
+            try
+            {
+                results.description = "The \"removeAttributeNode(oldAttr)\" method returns the "+
+                    "removed attribute node.";
+                //
+                // Access the sixth child of the third employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.THIRD,util.SIXTH);
+
+                // create an instance of an Attr object by retrieving the "street"
+                // attribute node, invoke its "removeAttributeNode(oldAttr)" method
+                // where name = "streetAttr" and remove that attribute node.  Note that
+                // "the removeAttributeNode(oldAttr)" takes an Attr object as its
+                // parameter, that is why an Attr object (named "street") is first created.
+                //
+                streetAttr = addressElement.GetAttributeNode("street");//.node.
+                oldStreetAttribute = addressElement.RemoveAttributeNode(streetAttr);//.node.
+                //
+                // The method should return the removed attribute node.  Its value can then
+                // be examined.
+                //
+                computedValue = oldStreetAttribute.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0017E --------------------------
+        //
+        //-------------------------- test case core-00018E ----------------------------
+        //
+        // Testing feature - The "getElementsByTagName(name)" method returns a list 
+        //                   of all descendant Elements with the given tag name.
+        //
+        // Testing approach - Get a listing of all the descendant elements of the
+        //                    root element using the string "employee" as the tag
+        //                    name.  The  method should return a Node list of length 
+        //                    equal to 5.  This test makes use of the "length" 
+        //                    attribute from the NodeList interface.
+        //
+        // Semantic Requirements: 1, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0018E()
+        {
+            int computedValue = 0;
+            int expectedValue = 5;
+            System.Xml.XmlNodeList employeeList = null;
+            System.Xml.XmlElement docElement = null;
+
+            testResults results = new testResults("Core0018E");
+
+            results.description = "The \"getElementsByTagName(name)\" method returns a "+
+                "NodeList of all descendant elements with the given " +
+                "tag name(method returning a non-empty list)";
+            //
+            // get a listing of all the elements that match the tag "employee".
+            //
+            docElement = util.getRootNode();
+            employeeList = docElement.GetElementsByTagName("employee");
+            //
+            // The method should return a NodeList whose length can then be examined. 
+            //
+            computedValue = employeeList.Count;
+            //
+            // Write out results
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0018E --------------------------
+        //
+        //-------------------------- test case core-00019E ----------------------------
+        //
+        // Testing feature - The "getElementsByTagName(name)" returns a list of all
+        //                   descendant Elements with the given tag name.  Test
+        //                   for an empty list.
+        //
+        // Testing approach - Get a listing of all the descendant elements of the
+        //                    root element using the string "noMatches" as the tag
+        //                    name.  The  method should return a NodeList of length
+        //                    equal to 0 since no descendant elements match the given
+        //                    tag name.  This test makes use of the "length" attribute
+        //                    from the NodeList interface.
+        //
+        // Semantic Requirements: 1, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0019E()
+        {
+            int computedValue = 0;
+            int expectedValue = 0;
+            System.Xml.XmlNodeList employeeList = null;
+            System.Xml.XmlElement docElement = null;
+
+            testResults results = new testResults("Core0019E");
+
+            results.description = "The \"getElementsByTagName(name)\" method returns a "+
+                "NodeList of all descendant elements with the given " +
+                "tag name (method returns an empty list)";
+            //
+            // get a listing of all the elements that match the tag "noMatch".
+            //
+            docElement = util.getRootNode();
+            employeeList = docElement.GetElementsByTagName("noMatch");
+            //
+            // The method should return a NodeList whose length can then be examined.
+            //
+            computedValue = employeeList.Count;
+            //
+            // Write out results
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0019E --------------------------
+        //
+        //-------------------------- test case core-00020E ----------------------------
+        //
+        // Testing feature - The "getElementsByTagName(name)" returns a list of all
+        //                   descendant Elements in the order the children were
+        //                   encountered in a pre order traversal of the element tree.
+        //
+        // Testing approach - Get a listing of all the descendant elements of the
+        //                    root node using the string "employee" as the tag
+        //                    name.  The  method should return a Node list of length
+        //                    equal to 5 in the order the children were encountered.
+        //                    Item number four in the list is accessed using a 
+        //                    subscript.  Item number four is itself an Element node
+        //                    with children and whose first child should be 
+        //                    "employeeId".
+        //
+        // Semantic Requirements: 1, 18 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0020E()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId";
+            System.Xml.XmlNodeList employeeList = null;
+            System.Xml.XmlNode fourthEmployee = null;
+            System.Xml.XmlElement docElement = null;
+
+            testResults results = new testResults("Core0020E");
+
+            results.description = "The \"getElementsByTagName(name)\" returns a NodeList " +
+                "of all descendant elements in the order the " +
+                "children were encountered in a preorder traversal " +
+                "of the element tree.";
+            //
+            // get a listing of all the elements that match the tag "employee".
+            //
+            docElement = util.getRootNode();
+            employeeList = docElement.GetElementsByTagName("employee");
+
+            //
+            // The method should return a NodeList of the children in the order the 
+            // children were encountered.  Since "employeeList" is a NodeList we should 
+            // be able to access its elements by using a subscript.  Item number four 
+            // is itself an Element node with six children and the first child 
+            // is "employeeId". 
+            //
+            fourthEmployee = employeeList.Item(util.FOURTH);
+            computedValue = fourthEmployee.FirstChild.Name;
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0020E --------------------------
+        //
+        //-------------------------- test case core-00021E ----------------------------
+        //
+        // Testing feature - The "getElementsByTagName(name)" method may use the 
+        //                   special value "*" to match all the tags in the element 
+        //                   tree. 
+        //
+        // Testing approach - Get a listing of all the descendant elements of the
+        //                    last employee by using the special value of "*".  The 
+        //                    method should return all of the descendant children
+        //                    (total of 6) in the order the children were encountered.
+        //
+        // Semantic Requirements: 1, 19 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0021E()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId name position salary gender address ";
+            System.Xml.XmlNodeList elementList = null;
+            System.Xml.XmlElement lastEmployee = null;
+
+            testResults results = new testResults("Core0021E");
+
+            results.description = "The \"getElementsByTagName(name)\" method may use the " +
+                "special value \"*\" to match all the tags in the " +
+                "element tree.";
+            //
+            // get a listing of all the descendant elements of the last employee by using
+            // the special value of "*".
+            //
+            lastEmployee = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,-1);
+            elementList = lastEmployee.GetElementsByTagName("*");//.node.
+            //
+            // Traverse the list.
+            //
+            for (int index = 0;index <= elementList.Count - 1;index++)
+                computedValue += elementList.Item(index).Name+" ";
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0021E --------------------------
+        //
+        //-------------------------- test case core-00022E ----------------------------
+        //
+        // Testing feature - The "normalize()" method puts all the nodes in the
+        //                   full depth of the sub-tree underneath this element
+        //                   into a "normal" form.
+        //
+        // Testing approach - Retrieve the third employee and access its second 
+        //                    child.  This child contains a block of text that spread
+        //                    accross multiple lines.  The content of the "name" 
+        //                    child should be parsed and treated as a single Text node.
+        //
+        // Semantic Requirements: 1, 20
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0022E()
+        {
+            string computedValue = "";
+            string expectedValue = "Roger\n Jones";
+            System.Xml.XmlNode idElement = null;
+            System.Xml.XmlNode textNode = null;
+
+            testResults results = new testResults("Core0022E");
+            try
+            {
+                results.description = "The \"normalize()\" method puts all the nodes in the " +
+                    "full depth of the sub-tree of this element into a normal form.";
+                //
+                // The "normalize() method should combine all the contiguous blocks of text
+                // and form a single "Text" node.  The "nodeValue" of that final Text node
+                // should be the combination of all continuos blocks of text that do not
+                // contain any markup language. 
+                //
+                idElement = util.nodeObject(util.THIRD,util.SECOND);
+                idElement.Normalize();//.node.
+                textNode = idElement.LastChild;//.node.
+                //
+                // text should be in normal form now
+                //
+                computedValue = textNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0022E --------------------------
+        //
+        //-------------------------- test case core-00023E ---------------------------
+        //
+        // Testing feature - The "setAttribute(name,value)" method raises an
+        //                   INVALID_CHARACTER_ERR Exception if the specified  
+        //                   name contains an invalid character.
+        //
+        // Testing approach - Retrieve the last child of the first employee
+        //                    and call its "setAttribute(name,value)" method with
+        //                    "name" containing an invalid character.
+        //
+        // Semantic Requirements: 1, 21
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0023E()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement addressElement = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0023E");
+            try
+            {
+                results.description = "The \"setAttribute(name,value)\" method raises an " +
+                    "ArgumentException if the specified " +
+                    "name contains an invalid character.";
+                //
+                // Access the "address" element of the first employee. 
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                //
+                // Attempt to set an attribute with an invalid character in its name.
+                //
+                try 
+                {
+                    addressElement.SetAttribute("invalid^Name","thisValue");//.node.
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0023E --------------------------
+        //
+        //-------------------------- test case core-0024E ----------------------------
+        //
+        // Testing feature - The "setAttribute(name,value)" method raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this 
+        //                   node is readonly.
+        //
+        // Testing approach - Retrieve the Element node inside the Entity node 
+        //                    named "ent4" and attempt to set an attribute for
+        //                    it.  Descendants of Entity nodes are readonly nodes
+        //                    and therefore the desired exception should be raised.
+        //
+        // Semantic Requirements: 22
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0024E()
+        {
+            string computedValue = "";
+            System.Xml.XmlEntity entityNode = null;
+            System.Xml.XmlElement entityDesc = null;
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0024E");
+            try
+            {
+                results.description = "The \"setAttribute(name,value)\" method raises a " +
+                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
+
+                //
+                // Retreive the targeted data.
+                //
+                entityNode = util.getEntity("ent4");
+                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
+                //
+                // Attempt to set an attribute for a readonly node should raise an exception.
+                //
+                try 
+                {
+                    entityDesc.SetAttribute("newAttribute","thisValue");
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0024E --------------------------
+        //
+        //-------------------------- test case core-00025E ---------------------------
+        //
+        // Testing feature - The "removeAttribute(name)" method raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
+        //                   node is readonly.
+        //
+        // Testing approach - Retrieve the Element node inside the Entity node
+        //                    named "ent4" and attempt to remove an attribute from
+        //                    it.  Descendants of Entity nodes are readonly nodes
+        //                    and therefore the desired exception should be raised.
+        //
+        // Semantic Requirements: 23
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0025E()
+        {
+            string computedValue = "";
+            System.Xml.XmlEntity entityNode = null;
+            System.Xml.XmlElement entityDesc = null;
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0025E");
+            try
+            {
+                results.description = "The \"removeAttribute(name)\" method raises a " +
+                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
+                //
+                // Retrieve the targeted data.
+                //
+                entityNode = util.getEntity("ent4");
+                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
+                //
+                // Attempt to set an attribute for a readonly node should raise an exception.
+                //
+                try 
+                {
+                    entityDesc.RemoveAttribute("attr1");
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0025E --------------------------
+        //
+        //-------------------------- test case core-00026E ---------------------------
+        //
+        // Testing feature - The "setAttributeNode(newAttr)" method raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
+        //                   node is readonly.
+        //
+        // Testing approach - Retrieve the Element node inside the Entity node
+        //                    named "ent4" and attempt to add a newly created Attr 
+        //                    node to it.  Descendants of Entity nodes are readonly 
+        //                    nodes and therefore the desired exception should be
+        //                    raised.
+        //
+        // Semantic Requirements: 24
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0026E()
+        {
+            string computedValue = "";
+            System.Xml.XmlEntity entityNode = null;
+            System.Xml.XmlElement entityDesc = null;
+            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0026E");
+            try
+            {
+                results.description = "The \"setAttributeNode(newAttr)\" method raises a " +
+                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
+                //
+                // Retrieve targeted data
+                //
+                entityNode = util.getEntity("ent4");
+                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
+                //
+                // Attempt to set an attribute for a readonly node should raise an exception.
+                //
+                try 
+                {
+                    entityDesc.SetAttributeNode(newAttr);
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0026E --------------------------
+        //
+        //-------------------------- test case core-00027E ---------------------------
+        //
+        // Testing feature - The "removeAttributeNode(newAttr)" method raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
+        //                   node is readonly.
+        //
+        // Testing approach - Retrieve the Element node inside the Entity node
+        //                    named "ent4" and attempt to remove its "attr1"
+        //                    attribute.  Descendants of Entity nodes are readonly
+        //                    nodes and therefore the desired exception should be
+        //                    raised.
+        //
+        // Semantic Requirements: 25
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0027E()
+        {
+            string computedValue = "";
+            System.Xml.XmlEntity entityNode = null;
+            System.Xml.XmlElement entityDesc = null;
+            System.Xml.XmlAttribute oldAttribute = null;
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0027E");
+            try
+            {
+                results.description = "The \"removeAttributeNode(newAttr)\" method raises a " +
+                    "NO_MODIFICATION_ALLOWED_ERR Exception if the node is readonly.";
+                //
+                // Get an instance of an attribute node and retrieve targeted data.
+                //
+                entityNode = util.getEntity("ent4");
+                entityDesc = (System.Xml.XmlElement)entityNode.FirstChild;
+                oldAttribute = ((System.Xml.XmlElement)entityNode.FirstChild).GetAttributeNode("attr1");
+                //
+                // Attempt to set remove an attribute node from a readonly node (lastChild).  
+                // Should raise an exception. 
+                //
+                try 
+                {
+                    entityDesc.RemoveAttributeNode(oldAttribute);
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0027E --------------------------
+        //
+        //-------------------------- test case core-00028E ---------------------------
+        //
+        // Testing feature - The "setAttributeNode(newAttr)" method raises a
+        //                   System.ArgumentException Exception if the "newAttr" was 
+        //                   created from a different document than the one that
+        //                   created this document. 
+        //
+        // Testing approach - Retrieve the last employee and attempt to set
+        //                    a new attribute node for its "employee" element.
+        //                    The new attribute was created from a document 
+        //                    other than the one that crated this element,
+        //                    therefore the desired exception should be raised. 
+        //                    This test uses the "createAttribute(newAttr)" method
+        //                    from the Document interface.
+        //
+        // Semantic Requirements: 26
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0028E()
+        {
+            System.Xml.XmlElement addressElement = null;
+            string computedValue = "";
+            System.Xml.XmlAttribute newAttr = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0028E");
+            try
+            {
+                results.description = "The \"setAttributeNode(newAttr)\" method raises a " +
+                    "System.ArgumentException Exception if \"newAttr\" was created " +
+                    "from a different document than the one who created this node.";
+                //
+                // Access the address Element of the last employee and attempt to set 
+                // a new attribute node. 
+                //
+                newAttr = util.getOtherDOMDocument().CreateAttribute("newAttribute");
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
+                //
+                // The new attribute was created from a different document and therefore 
+                // an exception should be raised.
+                //
+                try 
+                {
+                    addressElement.SetAttributeNode(newAttr);//.node.
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0028E --------------------------
+        //
+        //-------------------------- test case core-00029E ---------------------------
+        //
+        // Testing feature - The "setAttributeNode(newAttr)" method raises an
+        //                   InvalidOperationException if the "newAttr"
+        //                   attribute is already an attribute of another element. 
+        //
+        // Testing approach - Retrieve the last employee and attempt to set an
+        //                    attribute node to one of its children that
+        //                    already exist in another children.  The attribute
+        //                    node used is "street", which already exist in the
+        //                    "address" element.  An instance of that attribute
+        //                    node is first retrived from the "address" element and
+        //                    then attempted to be set in the "employeeId" element.  
+        //                    This should cause the intended exception to be raised.
+        //
+        // Semantic Requirements: 27
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0029E()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement employeeIdElement = null;
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute newAttribute = null; 
+            string expectedValue = "InvalidOperationException";
+
+            testResults results = new testResults("Core0029E");
+            try
+            {
+                results.description = "The \"setAttributeNode(newAttr)\" method raises an "+
+                    "InvalidOperationException if \"newAttr\" attribute "+
+                    "is already being used by another element.";
+                //
+                // Retrieve an already existing attribute from the "address" element.
+                // 
+                addressElement =  (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
+                newAttribute = addressElement.GetAttributeNode("street");//.node.
+                //
+                // Access the "employeeId" element of the last employee.
+                //
+                employeeIdElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.FIRST);
+                //
+                // Attempt to set an attribute node with an already existing attribute node  
+                // in another element.
+                //
+                try 
+                {
+                    employeeIdElement.SetAttributeNode(newAttribute);//.node.
+                }
+                catch(System.InvalidOperationException ex) 
+                { 
+                    computedValue = "InvalidOperationException"; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0029E -------------------------
+        //
+        //-------------------------- test case core-0030E ---------------------------
+        //
+        // Testing feature - The "removeAttributeNode(oldAttr)" method raises a 
+        //                   NOT_FOUND_ERR Exception if the "oldAttr" attribute
+        //                   is not an attribute of the element.
+        //
+        // Testing approach - Retrieve the last employee and attempt to remove
+        //                    a non existing attribute node.   This should cause 
+        //                    the intended exception be raised.  This test makes use
+        //                    of the "createAttribute(name)" method from the
+        //                    Document interface.
+        //
+        // Semantic Requirements: 28
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0030E()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement addressElement = null;
+            System.Xml.XmlAttribute oldAttribute = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"oldAttribute");
+            string expectedValue = "System.ArgumentException";//util.NOT_FOUND1_ERR;
+
+            testResults results = new testResults("Core0030E");
+            try
+            {
+                results.description = "The \"removeAttributeNode(oldAttr)\" method raises a " +
+                    "NOT_FOUND_ERR Exception if \"oldAttr\" attribute " +
+                    "is not an attribute of the element.";
+                //
+                // Access the "address" element of the last employee.
+                //
+                addressElement = (System.Xml.XmlElement)util.nodeObject(util.FIFTH,util.SIXTH);
+                //
+                // Attempt to remove a non-existing attribute. Should raise exception.
+                //
+                try 
+                {
+                    addressElement.RemoveAttributeNode(oldAttribute);//.node.
+                }
+                catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0030E --------------------------
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/NamedNodeMap/NamedNodeMap.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/NamedNodeMap/NamedNodeMap.cs
@@ -1,1214 +1,1214 @@
-//**************************************************************************
-//
-//
-//                       National Institute Of Standards and Technology
-//                                     DTS Version 1.0
-//         
-//                                 NamedNodeMap Interface
-//
-// Written by: Carmelo Montanez
-// Modified by:  Mary Brady
-//
-// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
-// Mainsoft Corporation (c) 2003-2004
-//**************************************************************************
-using System;
-using System.Xml;
-
-using nist_dom;
-using NUnit.Framework;
-
-namespace nist_dom.fundamental
-{
-    [TestFixture]
-    public class NamedNodeMapTest
-    {
-        public static int i = 2;
-/*
-        public testResults[] RunTests()
-        {
-            testResults[] tests = new testResults[] {core0001M(), core0002M(), core0003M(),core0004M(),
-                                                        core0005M(), core0006M(), core0007M(), core0008M(),
-                                                        core0009M(), core0010M(), core0011M(),
-                                                        core0014M(), core0015M(), core0016M(),
-                                                        core0017M(), core0018M(), core0019M(), core0020M(),
-                                                        core0021M()};
-  
-            return tests;
-        }
-*/
-        //------------------------ test case core-0001M ------------------------
-        //
-        // Testing feature - The "getNamedItem(name)" method retrieves a node 
-        //                   specified by name.
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap 
-        //                    listing of the attributes of its last child.  Once 
-        //                    the list is created an invocation of the 
-        //                    "getNamedItem(name)" method is done where 
-        //                    name = "domestic".  This should result on the domestic 
-        //                    Attr node being returned.
-        //                    
-        // Semantic Requirements: 1
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0001M()
-        {
-            string computedValue = "";
-            string expectedValue = "domestic";
-            System.Xml.XmlAttribute domesticAttr = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0001M");
-            try
-            {
-                results.description = "The \"getNamedItem(name)\" method retrieves a node " +
-                    "specified by name.";
-                //
-                // Retrieve targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                domesticAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("domestic");
-                computedValue = domesticAttr.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results 
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0001M --------------------------
-        //
-        //--------------------------- test case core-0002M ---------------------------
-        //
-        // Testing feature - The "getNamedItem(name)" method returns a node of any
-        //                   type specified by name.
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    listing of the attributes of its last child.  Once
-        //                    the list is created an invocation of the
-        //                    "getNamedItem(name)" method is done where 
-        //                    name = "street".  This should cause the method to return 
-        //                    an Attr node.
-        //
-        // Semantic Requirements: 2 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0002M()
-        {
-            string computedValue = "";
-            string expectedValue = "street";
-            System.Xml.XmlAttribute streetAttr = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0002M");
-            try
-            {
-                results.description = "The \"getNamedItem(name)\" method returns a node "+
-                    "of any type specified by name (test for Attr node).";
-                //
-                // Retrieve targeted data and get its attributes.
-                //
-                testNode =  util.nodeObject(util.SECOND,util.SIXTH);
-                streetAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("street");
-                computedValue = streetAttr.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0002M --------------------------
-        //
-        //--------------------------- test case core-0003M ---------------------------
-        //
-        // Testing feature - The "getNamedItem(name)" method returns null if the
-        //                   specified name did not identify any node in the map.
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    listing of the attributes of its last child.  Once
-        //                    the list is created an invocation of the
-        //                    "getNamedItem(name)" method is done where 
-        //                    name = "district", this name does not match any names 
-        //                    in the list and the method should return null.
-        //
-        // Semantic Requirements: 3 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0003M()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-
-            testResults results = new testResults("Core0003M");
-            try
-            {
-                results.description = "The \"getNamedItem(name)\" method returns null if the " +
-                    "specified name did not identify any node in the map.";
-                //
-                // Retrieve targeted data and attempt to get a non-existing attribute.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                computedValue = testNode.Attributes.GetNamedItem("district");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0003M --------------------------
-        //
-        //--------------------------- test case core-0004M ---------------------------
-        //
-        // Testing feature - The "setNamedItem(arg)" method adds a node using its
-        //                   nodeName attribute. 
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap 
-        //                    object from the attributes in its last child 
-        //                    by invoking the "attributes" attribute.  Once the
-        //                    list is created, the "setNamedItem(arg)" method is 
-        //                    invoked with arg = newAttr, where newAttr is a new 
-        //                    Attr Node previously created.  The "setNamedItem(arg)" 
-        //                    method should add the new node to the NamedNodeItem 
-        //                    object by using its "nodeName" attribute ("district" 
-        //                    in this case).  Further this node is retrieved by using 
-        //                    the "getNamedItem(name)" method.  This test uses the 
-        //                    "createAttribute(name)" method from the Document 
-        //                    interface.
-        //
-        // Semantic Requirements: 4 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0004M()
-        {
-            string computedValue = "";
-            string expectedValue = "district";
-            System.Xml.XmlAttribute districtAttr = null;
-            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0004M");
-            try
-            {
-                results.description = "The \"setNamedItem(arg)\" method adds a node "+
-                    "using its nodeName attribute.";
-                //
-                // Retrieve targeted data and add new attribute.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                testNode.Attributes.SetNamedItem(newAttr);
-                districtAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("district");
-                computedValue = districtAttr.Name; 
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0004M --------------------------
-        //
-        //--------------------------- test case core-0005 ---------------------------
-        //
-        // Testing feature - If the node to be added by the "setNamedItem(arg)" method 
-        //                   already exists in the NamedNodeMap, it is replaced by the 
-        //                   new one.
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    object from the attributes in its last child.  Once
-        //                    the list is created, the "setNamedItem(arg) method is 
-        //                    invoked with arg = newAttr, where newAttr is a Node Attr
-        //                    previously created and whose node name already exist
-        //                    in the map.   The "setNamedItem(arg)" method should 
-        //                    replace the already existing node with the new one.  
-        //                    Further this node is retrieved by using the 
-        //                    "getNamedItem(name)" method.  This test uses the 
-        //                    "createAttribute(name)" method from the Document 
-        //                    interface.
-        //
-        // Semantic Requirements: 5 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0005M()
-        {
-            string computedValue = "";
-            string expectedValue = "";
-            System.Xml.XmlAttribute streetAttr = null;
-            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0005M");
-            try
-            {
-                results.description = "If the node to be replaced by the \"setNamedItem(arg)\" " +
-                    "method is already in the list, the existing node should " +
-                    "be replaced by the new one.";
-
-                //
-                // Retrieve targeted data and add new attribute with name matching an 
-                // already existing attribute.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                testNode.Attributes.SetNamedItem(newAttr);
-                streetAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("street");
-                computedValue = streetAttr.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0005M --------------------------
-        //
-        //--------------------------- test case core-0006 ---------------------------
-        //
-        // Testing feature - If the "setNamedItem(arg)" method replaces an already 
-        //                   existing node with the same name then the already existing
-        //                   node is returned. 
-        //
-        // Testing approach - Retrieve the third employee and create a "NamedNodeMap"
-        //                    object of the attributes in its last child by
-        //                    invoking the "attributes" attribute.  Once the
-        //                    list is created, the "setNamedItem(arg) method is 
-        //                    invoked with arg = newAttr, where newAttr is a Node Attr
-        //                    previously created and whose node name already exist
-        //                    in the map.  The "setNamedItem(arg)" method should replace
-        //                    the already existing node with the new one and return
-        //                    the existing node.  Further this node is retrieved by 
-        //                    using the "getNamedItem(name)" method.  This test 
-        //                    uses the "createAttribute(name)" method from the Document 
-        //                    interface.
-        //
-        // Semantic Requirements: 6 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0006M()
-        {
-            string computedValue = "";
-            string expectedValue = "No";
-            System.Xml.XmlNode returnedNode = null;
-            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0006M");
-            try
-            {
-                results.description = "If the \"setNamedItem(arg)\" method replaces an "+
-                    "already existing node with the same name then it "+
-                    "returns the already existing node.";
-                //
-                // Retrieve targeted data and examine value returned by the setNamedItem
-                // method.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                returnedNode = testNode.Attributes.SetNamedItem(newAttr);
-                computedValue = returnedNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0006M --------------------------
-        //
-        //--------------------------- test case core-0007 ---------------------------
-        //
-        // Testing feature - The "setNamedItem(arg)" method replace an 
-        //                   already existing node with the same name. If a node with 
-        //                   that name is already present in the collection, 
-        //                   it is replaced by the new one.
-        //
-        // Testing approach - Retrieve the third employee and create a NamedNodeMap
-        //                    object from the attributes in its last child. 
-        //                    Once the list is created, the "setNamedItem(arg)" 
-        //                    method is invoked with arg = newAttr, where newAttr is 
-        //                    a new previously created Attr node The 
-        //                    "setNamedItem(arg)" method should add the new node 
-        //                    and return the new one.  Further this node is retrieved by 
-        //                    using the "getNamedItem(name)" method.  This test 
-        //                    uses the "createAttribute(name)" method from the 
-        //                    Document interface.
-        //
-        // Semantic Requirements: 7 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0007M()
-        {
-            string computedValue = "";
-            string expectedValue = "district";
-            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0007M");
-            try
-            {
-                results.description = "If a node with that name is already present in the collection. The \"setNamedItem(arg)\" method is replacing it by the new one";
-                //
-                // Retrieve targeted data and set new attribute.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                computedValue = testNode.Attributes.SetNamedItem(newAttr).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0007M --------------------------
-        //
-        //--------------------------- test case core-0008 ----------------------------
-        //
-        // Testing feature - The "removeNamedItem(name)" method removes a node
-        //                   specified by name. 
-        //
-        // Testing approach - Retrieve the third employee and create a NamedNodeMap
-        //                    object from the attributes in its last child. Once
-        //                    the list is created, the "removeNamedItem(name)" 
-        //                    method is invoked where "name" is the name of an 
-        //                    existing attribute.  The "removeNamedItem(name)" method
-        //                    should remove the specified attribute and its "specified"
-        //                    attribute (since this is an Attr node) should be set
-        //                    to false.  
-        //
-        // Semantic Requirements: 8 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0008M()
-        {
-            string computedValue = "";
-            string expectedValue = "False";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlAttribute Attr = null;
-
-            testResults results = new testResults("Core0008M");
-            try
-            {
-                results.description = "The \"removeNamedItem(name)\" method removes "+
-                    "a node specified by name.";
-                //
-                // Retrive targeted data and and remove attribute.  It should no longer
-                // be specified.
-                //
-                testNode = (System.Xml.XmlNode)util.nodeObject(util.THIRD,util.SIXTH);
-                testNode.Attributes.RemoveNamedItem("street");
-                Attr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("street");
-                computedValue = Attr.Specified.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0008M --------------------------
-        //
-        //--------------------------- test case core-0009 ----------------------------
-        //
-        // Testing feature - If the node removed by the "removeNamedItem(name)" method
-        //                   is an Attr node with a default value, its is immediately
-        //                   replaced.
-        //
-        // Testing approach - Retrieve the third employee and create a NamedNodeMap
-        //                    object from the attributes in its last child.  Once
-        //                    the list is created, the "removeNamedItem(name)" method
-        //                    is invoked where "name" is the name of an existing
-        //                    attribute ("street)".  The "removeNamedItem(name)" method
-        //                    should remove the "street" attribute and since it has 
-        //                    a default value of "Yes", that value should immediately
-        //                    be the attribute's value.
-        //
-        // Semantic Requirements: 9 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-        [Ignore(".NET DOM implementation does not match W3C DOM specification.")]
-	public void core0009M()
-        {
-            string computedValue = "";
-            string expectedValue = "Yes";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0009M");
-            try
-            {
-                results.description = "If the node removed by the \"removeNamedItem(name)\" "+
-                    "method is an Attr node with a default value, then "+
-                    "it is immediately replaced.";
-                //
-                // Retrieve targeted data and remove attribute.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                testNode.Attributes.RemoveNamedItem("street");
-                computedValue = testNode.Attributes.GetNamedItem("street").Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0009M --------------------------
-        //
-        //--------------------------- test case core-0010M ---------------------------
-        //
-        // Testing feature - The "removeNamedItem(name)" method returns the node removed
-        //                   from the map.
-        //
-        // Testing approach - Retrieve the third employee and create a NamedNodeMap
-        //                    object from the attributes in its last child. 
-        //                    Once the list is created, the "removeNamedItem(name)" 
-        //                    method is invoked where "name" is the name of an existing
-        //                    attribute ("street)".  The "removeNamedItem(name)" 
-        //                    method should remove the existing "street" attribute
-        //                    and return it.
-        //
-        // Semantic Requirements: 10 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0010M()
-        {
-            string computedValue = "";
-            string expectedValue = "No";
-            System.Xml.XmlNode returnedNode = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0010M");
-            try
-            {
-                results.description = "The \"removeNamedItem(name)\" method returns the "+
-                    "node removed from the map.";
-                //
-                // Retrieve targeted data, remove attribute and examine returned value of
-                // removeNamedItem method.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                returnedNode = testNode.Attributes.RemoveNamedItem("street");
-                computedValue = returnedNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0010M --------------------------
-        //
-        //--------------------------- test case core-0011M ---------------------------
-        //
-        // Testing feature - The "removeNamedItem(name)" method returns null if the
-        //                   name specified does not exist in the map.
-        //
-        // Testing approach - Retrieve the third employee and create a NamedNodeMap
-        //                    object from the attributes in its last child.
-        //                    Once the list is created, the "removeNamedItem(name)" 
-        //                    method is invoked where "name" does not exist in the 
-        //                    map.  The method should return null.
-        //
-        // Semantic Requirements: 11
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0011M()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0011M");
-            try
-            {
-                results.description = "The \"removeNamedItem(name)\" method returns null "+
-                    "if the specified \"name\" is not in the map.";
-                //
-                // Retrieve targeted data and attempt to remove a non-existing attribute.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                computedValue = testNode.Attributes.RemoveNamedItem("district");
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0011M --------------------------
-        //
-        //--------------------------- test case core-0012M ---------------------------
-        //
-        // Testing feature - The "item(index)" method returns the indexth item in the
-        //                   map (test for first item).
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    object from the attributes in its last child by
-        //                    by invoking the "attributes" attribute.  Once
-        //                    the list is created, the "item(index)" method is
-        //                    invoked with index = 0.  This should return the node at
-        //                    the first position.  Since there are no guarantees that
-        //                    first item in the map is the one that was listed first 
-        //                    in the attribute list the test checks for all of them.
-        //
-        // Semantic Requirements: 12
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0012M()
-        {
-            //string testName = "core-0012M";
-            string computedValue = "";
-//            string expectedValue = "domestic or street";
-            string expectedValue = "domestic";
-            System.Xml.XmlNode returnedNode = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0012M");
-            try
-            {
-                results.description = "Retrieve the first item in the map via the \"item(index)\" method."; 
-
-                //
-                // Retrieve targeted data and invoke "item" method.
-                //  
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                returnedNode = testNode.Attributes.Item(0);
-                computedValue = returnedNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0012M --------------------------
-        //
-        //--------------------------- test case core-0013M ---------------------------
-        //
-        // Testing feature - The "item(index)" method returns the indexth item in the
-        //                   map (test for last item).
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    object from the attributes in its last child. 
-        //                    Once the list is created, the "item(index)" method is
-        //                    invoked with index = 1.  This should return the node at
-        //                    the last position.  Since there are no guarantees that
-        //                    the last item in the map is the one that was listed last 
-        //                    in the attribute list, the test checks for all of them.
-        //
-        // Semantic Requirements: 12
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0013M()
-        {
-            string computedValue = "";
-//            string expectedValue = "domestic or street";
-            string expectedValue = "street";
-            System.Xml.XmlNode returnedNode = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0013M");
-            try
-            {
-                results.description = "Retrieve the last item in the map via the \"item(index)\" method."; 
-                //
-                // Retrieve targeted data and invoke "item" attribute.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                returnedNode = testNode.Attributes.Item(1);
-                computedValue = returnedNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0013M --------------------------
-        //
-        //--------------------------- test case core-0014M ---------------------------
-        //
-        // Testing feature - The "item(index)" method returns null if the index is 
-        //                   greater than the number of nodes in the map.
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    object from the attributes in its last child. 
-        //                    element by invoking the "attributes" attribute.  Once
-        //                    the list is created, the "item(index)" method is
-        //                    invoked with index = 3.  This index value is greater than
-        //                    the number of nodes in the map and under that condition
-        //                    the method should return null.
-        //
-        // Semantic Requirements: 13
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0014M()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0014M");
-            try
-            {
-                results.description = "The \"item(index)\" method returns null if the "+
-                    "index is greater than the number of nodes in the map.";
-
-                //
-                // Retrieve targeted data and invoke "item" method.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                computedValue = testNode.Attributes.Item(3);
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0014M --------------------------
-        //
-        //--------------------------- test case core-0015M ---------------------------
-        //
-        // Testing feature - The "item(index)" method returns null if the index is
-        //                   equal to the number of nodes in the map.
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    object from the attributes in its last child 
-        //                    Once the list is created, the "item(index)" method is
-        //                    invoked with index = 2.  This index value is equal to 
-        //                    the number of nodes in the map and under that condition
-        //                    the method should return null (first item is at position
-        //                    0).
-        //
-        // Semantic Requirements: 13
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0015M()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0015M");
-            try
-            {
-                results.description = "The \"item(index)\" method returns null if the index " +
-                    "is equal to the number of nodes in the map.";
-                //
-                // Retrieve targeted data and invoke "item" method.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                computedValue = testNode.Attributes.Item(2);
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0015M --------------------------
-        //
-        //--------------------------- test case core-0016M ---------------------------
-        //
-        // Testing feature - The "length" attribute contains the total number of
-        //                   nodes in the map.
-        //
-        // Testing approach - Retrieve the second employee and create a NamedNodeMap
-        //                    object from the attributes in its last child. 
-        //                    Once the list is created, the "length" attribute is
-        //                    invoked.  That attribute should contain the number 2. 
-        //
-        // Semantic Requirements: 14
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0016M()
-        {
-            string computedValue = "";
-            string expectedValue = "2";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0016M");
-            try
-            {
-                results.description = "The \"length\" attribute contains the number of " +
-                    "nodes in the map.";
-                //
-                // Retrieve targeted data and invoke "length" attribute.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                computedValue = testNode.Attributes.Count.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0016M --------------------------
-        //
-        //--------------------------- test case core-0017M ---------------------------
-        //
-        // Testing feature - The range of valid child nodes indices is 0 to length - 1.
-        //
-        // Testing approach - Create a NamedNodeMap object from the attributes of the
-        //                    last child of the third employee and traverse the
-        //                    list from index 0 to index length - 1.  All indices
-        //                    should be valid.
-        //
-        // Semantic Requirements: 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0017M()
-        {
-            string computedValue = "";
-            string expectedValue = "0 1 ";
-            int lastIndex = 0;
-            //string attributes = "";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0017M");
-            try
-            {
-                results.description = "The range of valid child nodes indices is 0 to " +
-                    "length - 1.";
-                //
-                // Retrieve targeted data and compute list length.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                lastIndex = testNode.Attributes.Count - 1;
-                //
-                // Traverse the list from 0 to length - 1.  All indices should be valid.
-                //
-                for (int index = 0;index <= lastIndex; index++)
-                    computedValue += index+" ";
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0017M --------------------------
-        //
-        //--------------------------- test case core-0018M ---------------------------
-        //
-        // Testing feature - The "setNamedItem(arg) method raises a System.ArgumentException
-        //                   Exception if "arg" was created from a different 
-        //                   document than the one that created the NamedNodeMap.
-        //
-        // Testing approach - Create a NamedNodeMap object from the attributes of the
-        //                    last child of the third employee and attempt to 
-        //                    add another Attr node to it that was created from a 
-        //                    different DOM document.  This condition should raise
-        //                    the desired exception.  This method uses the
-        //                    "createAttribute(name)" method from the Document
-        //                    interface. 
-        //
-        // Semantic Requirements: 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0018M()
-        {
-            string computedValue = "";
-            
-            System.Xml.XmlAttribute newAttrNode = util.getOtherDOMDocument().CreateAttribute("newAttribute");
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0018M");
-
-            results.description = "The \"setNamedItem(arg)\" method raises a "+
-                "System.ArgumentException Exception if \"arg\" was " +
-                "created from a document different from the one that created "+
-                "the NamedNodeList.";
-            //
-            // Retrieve targeted data and attempt to add an element that was created
-            // from a different document.  Should raise an exception.
-            //
-            testNode = util.nodeObject(util.THIRD,util.SIXTH);
-
-            try 
-            {
-                testNode.Attributes.SetNamedItem(newAttrNode);
-            } 
-            catch(System.Exception ex) 
-            {
-                computedValue = ex.GetType().ToString();
-            }
-
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0018M --------------------------
-        //
-        //--------------------------- test case core-0019M ---------------------------
-        //
-        // Testing feature - The "setNamedItem(arg) method raises a 
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
-        //                   NamedNodeMap is readonly.
-        //
-        // Testing approach - Create a NamedNodeMap object from the first child of the
-        //                    Entity named "ent4" inside the DocType node and then 
-        //                    attempt to add a new item to the list.  It should raise 
-        //                    the desired exception as this is a readonly NamedNodeMap.
-        //                   
-        // Semantic Requirements: 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0019M()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode entityDesc;
-            System.Xml.XmlAttribute newAttrNode = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0019M");
-
-            results.description = "The \"setNamedItem(arg)\" method raises a " +
-                "NO_MODIFICATION_ALLOWED_ERR Exception if this "+
-                "NamedNodeMap is readonly.";
-            //
-            // Create a NamedNodeMap object and attempt to add a node to it.
-            // Should raise an exception.
-            //
-            testNode = util.getEntity("ent4");
-            entityDesc = testNode.FirstChild;
-
-            try 
-            {
-                entityDesc.Attributes.SetNamedItem(newAttrNode);
-            }
-            catch(ArgumentException ex) 
-            {
-                computedValue = ex.GetType ().FullName; 
-            }
-
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0019M --------------------------
-        //
-        //--------------------------- test case core-0020M ---------------------------
-        //
-        // Testing feature - The "setNamedItem(arg) method raises an
-        //                   INUSE_ATTRIBUTE_ERR Exception if "arg" is an Attr 
-        //                   that is already an attribute of another Element.
-        //
-        // Testing approach - Create a NamedNodeMap object from the attributes of the
-        //                    third child and attempt to add an attribute that is
-        //                    already being used by the first employee.  An attempt
-        //                    to add such an attribute should raise the desired
-        //                    exception. 
-        //
-        // Semantic Requirements: 18
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	[Ignore(".NET DOM implementation does not match W3C DOM specification.")]
-	public void core0020M()
-        {
-            string computedValue= "";
-            System.Xml.XmlAttribute inUseAttribute = null;
-            System.Xml.XmlElement firstEmployee = null;
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = "System.ArgumentException";//util.INUSE_ATTRIBUTE_ERR;
-
-            testResults results = new testResults("Core0020M");
-            try
-            {
-                results.description = "The \"setNamedItem(arg)\" method raises an "+
-                    "INUSE_ATTRIBUTE_ERR Exception if \"arg\" "+
-                    "is an Attr node that is already an attribute "+
-                    "of another Element.";
-
-                firstEmployee = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                inUseAttribute = firstEmployee.GetAttributeNode("domestic");
-                //
-                // Attempt to add an attribute that is already used by another element 
-                // should raise an exception.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-
-                try 
-                {
-                    testNode.Attributes.SetNamedItem(inUseAttribute);
-                }
-                catch (System.Exception ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0020M --------------------------
-        //
-        //--------------------------- test case core-0021M ---------------------------
-        //
-        // Testing feature - The "removeNamedItem(name) method raises an
-        //                   NOT_FOUND_ERR Exception if there is no node
-        //                   named "name" in the map.
-        //
-        // Testing approach - Create a NamedNodeMap object from the attributes of the
-        //                    last child of the third employee and attempt to
-        //                    remove the "district" attribute.  There is no node named
-        //                    "district" in the list and therefore the desired 
-        //                    exception should be raised.
-        //
-        // System.Xml       - return null, if a matching node was not found.
-        //
-        // Semantic Requirements: 19
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0021M()
-        {
-            object computedValue = null;
-            System.Xml.XmlNode testNode = null;
-            object expectedValue = null;//util.NOT_FOUND1_ERR;
-
-            testResults results = new testResults("Core0021M");
-            try
-            {
-                results.description = "The \"removeNamedItem(name)\" method raises a " +
-                    "NOT_FOUND_ERR Exception if there is no node "+
-                    "named \"name\" in the map.";
-                //
-                // Create a NamedNodeMap object and attempt to remove an attribute that
-                // is not in the list should raise an exception.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-
-                try 
-                {
-                    //null if a matching node was not found
-                    computedValue = testNode.Attributes.RemoveNamedItem("district");
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = "EXCEPTION " + ex.GetType () + " : " + ex.Message;
-                }
-
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0021M --------------------------
-    }
-}
+//**************************************************************************
+//
+//
+//                       National Institute Of Standards and Technology
+//                                     DTS Version 1.0
+//         
+//                                 NamedNodeMap Interface
+//
+// Written by: Carmelo Montanez
+// Modified by:  Mary Brady
+//
+// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
+// Mainsoft Corporation (c) 2003-2004
+//**************************************************************************
+using System;
+using System.Xml;
+
+using nist_dom;
+using NUnit.Framework;
+
+namespace nist_dom.fundamental
+{
+    [TestFixture]
+    public class NamedNodeMapTest
+    {
+        public static int i = 2;
+/*
+        public testResults[] RunTests()
+        {
+            testResults[] tests = new testResults[] {core0001M(), core0002M(), core0003M(),core0004M(),
+                                                        core0005M(), core0006M(), core0007M(), core0008M(),
+                                                        core0009M(), core0010M(), core0011M(),
+                                                        core0014M(), core0015M(), core0016M(),
+                                                        core0017M(), core0018M(), core0019M(), core0020M(),
+                                                        core0021M()};
+  
+            return tests;
+        }
+*/
+        //------------------------ test case core-0001M ------------------------
+        //
+        // Testing feature - The "getNamedItem(name)" method retrieves a node 
+        //                   specified by name.
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap 
+        //                    listing of the attributes of its last child.  Once 
+        //                    the list is created an invocation of the 
+        //                    "getNamedItem(name)" method is done where 
+        //                    name = "domestic".  This should result on the domestic 
+        //                    Attr node being returned.
+        //                    
+        // Semantic Requirements: 1
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0001M()
+        {
+            string computedValue = "";
+            string expectedValue = "domestic";
+            System.Xml.XmlAttribute domesticAttr = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0001M");
+            try
+            {
+                results.description = "The \"getNamedItem(name)\" method retrieves a node " +
+                    "specified by name.";
+                //
+                // Retrieve targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                domesticAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("domestic");
+                computedValue = domesticAttr.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results 
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0001M --------------------------
+        //
+        //--------------------------- test case core-0002M ---------------------------
+        //
+        // Testing feature - The "getNamedItem(name)" method returns a node of any
+        //                   type specified by name.
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    listing of the attributes of its last child.  Once
+        //                    the list is created an invocation of the
+        //                    "getNamedItem(name)" method is done where 
+        //                    name = "street".  This should cause the method to return 
+        //                    an Attr node.
+        //
+        // Semantic Requirements: 2 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0002M()
+        {
+            string computedValue = "";
+            string expectedValue = "street";
+            System.Xml.XmlAttribute streetAttr = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0002M");
+            try
+            {
+                results.description = "The \"getNamedItem(name)\" method returns a node "+
+                    "of any type specified by name (test for Attr node).";
+                //
+                // Retrieve targeted data and get its attributes.
+                //
+                testNode =  util.nodeObject(util.SECOND,util.SIXTH);
+                streetAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("street");
+                computedValue = streetAttr.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0002M --------------------------
+        //
+        //--------------------------- test case core-0003M ---------------------------
+        //
+        // Testing feature - The "getNamedItem(name)" method returns null if the
+        //                   specified name did not identify any node in the map.
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    listing of the attributes of its last child.  Once
+        //                    the list is created an invocation of the
+        //                    "getNamedItem(name)" method is done where 
+        //                    name = "district", this name does not match any names 
+        //                    in the list and the method should return null.
+        //
+        // Semantic Requirements: 3 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0003M()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+
+            testResults results = new testResults("Core0003M");
+            try
+            {
+                results.description = "The \"getNamedItem(name)\" method returns null if the " +
+                    "specified name did not identify any node in the map.";
+                //
+                // Retrieve targeted data and attempt to get a non-existing attribute.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                computedValue = testNode.Attributes.GetNamedItem("district");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0003M --------------------------
+        //
+        //--------------------------- test case core-0004M ---------------------------
+        //
+        // Testing feature - The "setNamedItem(arg)" method adds a node using its
+        //                   nodeName attribute. 
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap 
+        //                    object from the attributes in its last child 
+        //                    by invoking the "attributes" attribute.  Once the
+        //                    list is created, the "setNamedItem(arg)" method is 
+        //                    invoked with arg = newAttr, where newAttr is a new 
+        //                    Attr Node previously created.  The "setNamedItem(arg)" 
+        //                    method should add the new node to the NamedNodeItem 
+        //                    object by using its "nodeName" attribute ("district" 
+        //                    in this case).  Further this node is retrieved by using 
+        //                    the "getNamedItem(name)" method.  This test uses the 
+        //                    "createAttribute(name)" method from the Document 
+        //                    interface.
+        //
+        // Semantic Requirements: 4 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0004M()
+        {
+            string computedValue = "";
+            string expectedValue = "district";
+            System.Xml.XmlAttribute districtAttr = null;
+            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0004M");
+            try
+            {
+                results.description = "The \"setNamedItem(arg)\" method adds a node "+
+                    "using its nodeName attribute.";
+                //
+                // Retrieve targeted data and add new attribute.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                testNode.Attributes.SetNamedItem(newAttr);
+                districtAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("district");
+                computedValue = districtAttr.Name; 
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0004M --------------------------
+        //
+        //--------------------------- test case core-0005 ---------------------------
+        //
+        // Testing feature - If the node to be added by the "setNamedItem(arg)" method 
+        //                   already exists in the NamedNodeMap, it is replaced by the 
+        //                   new one.
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    object from the attributes in its last child.  Once
+        //                    the list is created, the "setNamedItem(arg) method is 
+        //                    invoked with arg = newAttr, where newAttr is a Node Attr
+        //                    previously created and whose node name already exist
+        //                    in the map.   The "setNamedItem(arg)" method should 
+        //                    replace the already existing node with the new one.  
+        //                    Further this node is retrieved by using the 
+        //                    "getNamedItem(name)" method.  This test uses the 
+        //                    "createAttribute(name)" method from the Document 
+        //                    interface.
+        //
+        // Semantic Requirements: 5 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0005M()
+        {
+            string computedValue = "";
+            string expectedValue = "";
+            System.Xml.XmlAttribute streetAttr = null;
+            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0005M");
+            try
+            {
+                results.description = "If the node to be replaced by the \"setNamedItem(arg)\" " +
+                    "method is already in the list, the existing node should " +
+                    "be replaced by the new one.";
+
+                //
+                // Retrieve targeted data and add new attribute with name matching an 
+                // already existing attribute.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                testNode.Attributes.SetNamedItem(newAttr);
+                streetAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("street");
+                computedValue = streetAttr.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0005M --------------------------
+        //
+        //--------------------------- test case core-0006 ---------------------------
+        //
+        // Testing feature - If the "setNamedItem(arg)" method replaces an already 
+        //                   existing node with the same name then the already existing
+        //                   node is returned. 
+        //
+        // Testing approach - Retrieve the third employee and create a "NamedNodeMap"
+        //                    object of the attributes in its last child by
+        //                    invoking the "attributes" attribute.  Once the
+        //                    list is created, the "setNamedItem(arg) method is 
+        //                    invoked with arg = newAttr, where newAttr is a Node Attr
+        //                    previously created and whose node name already exist
+        //                    in the map.  The "setNamedItem(arg)" method should replace
+        //                    the already existing node with the new one and return
+        //                    the existing node.  Further this node is retrieved by 
+        //                    using the "getNamedItem(name)" method.  This test 
+        //                    uses the "createAttribute(name)" method from the Document 
+        //                    interface.
+        //
+        // Semantic Requirements: 6 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0006M()
+        {
+            string computedValue = "";
+            string expectedValue = "No";
+            System.Xml.XmlNode returnedNode = null;
+            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"street");
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0006M");
+            try
+            {
+                results.description = "If the \"setNamedItem(arg)\" method replaces an "+
+                    "already existing node with the same name then it "+
+                    "returns the already existing node.";
+                //
+                // Retrieve targeted data and examine value returned by the setNamedItem
+                // method.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                returnedNode = testNode.Attributes.SetNamedItem(newAttr);
+                computedValue = returnedNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0006M --------------------------
+        //
+        //--------------------------- test case core-0007 ---------------------------
+        //
+        // Testing feature - The "setNamedItem(arg)" method replace an 
+        //                   already existing node with the same name. If a node with 
+        //                   that name is already present in the collection, 
+        //                   it is replaced by the new one.
+        //
+        // Testing approach - Retrieve the third employee and create a NamedNodeMap
+        //                    object from the attributes in its last child. 
+        //                    Once the list is created, the "setNamedItem(arg)" 
+        //                    method is invoked with arg = newAttr, where newAttr is 
+        //                    a new previously created Attr node The 
+        //                    "setNamedItem(arg)" method should add the new node 
+        //                    and return the new one.  Further this node is retrieved by 
+        //                    using the "getNamedItem(name)" method.  This test 
+        //                    uses the "createAttribute(name)" method from the 
+        //                    Document interface.
+        //
+        // Semantic Requirements: 7 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0007M()
+        {
+            string computedValue = "";
+            string expectedValue = "district";
+            System.Xml.XmlAttribute newAttr = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"district");
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0007M");
+            try
+            {
+                results.description = "If a node with that name is already present in the collection. The \"setNamedItem(arg)\" method is replacing it by the new one";
+                //
+                // Retrieve targeted data and set new attribute.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                computedValue = testNode.Attributes.SetNamedItem(newAttr).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0007M --------------------------
+        //
+        //--------------------------- test case core-0008 ----------------------------
+        //
+        // Testing feature - The "removeNamedItem(name)" method removes a node
+        //                   specified by name. 
+        //
+        // Testing approach - Retrieve the third employee and create a NamedNodeMap
+        //                    object from the attributes in its last child. Once
+        //                    the list is created, the "removeNamedItem(name)" 
+        //                    method is invoked where "name" is the name of an 
+        //                    existing attribute.  The "removeNamedItem(name)" method
+        //                    should remove the specified attribute and its "specified"
+        //                    attribute (since this is an Attr node) should be set
+        //                    to false.  
+        //
+        // Semantic Requirements: 8 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0008M()
+        {
+            string computedValue = "";
+            string expectedValue = "False";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlAttribute Attr = null;
+
+            testResults results = new testResults("Core0008M");
+            try
+            {
+                results.description = "The \"removeNamedItem(name)\" method removes "+
+                    "a node specified by name.";
+                //
+                // Retrive targeted data and and remove attribute.  It should no longer
+                // be specified.
+                //
+                testNode = (System.Xml.XmlNode)util.nodeObject(util.THIRD,util.SIXTH);
+                testNode.Attributes.RemoveNamedItem("street");
+                Attr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("street");
+                computedValue = Attr.Specified.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0008M --------------------------
+        //
+        //--------------------------- test case core-0009 ----------------------------
+        //
+        // Testing feature - If the node removed by the "removeNamedItem(name)" method
+        //                   is an Attr node with a default value, its is immediately
+        //                   replaced.
+        //
+        // Testing approach - Retrieve the third employee and create a NamedNodeMap
+        //                    object from the attributes in its last child.  Once
+        //                    the list is created, the "removeNamedItem(name)" method
+        //                    is invoked where "name" is the name of an existing
+        //                    attribute ("street)".  The "removeNamedItem(name)" method
+        //                    should remove the "street" attribute and since it has 
+        //                    a default value of "Yes", that value should immediately
+        //                    be the attribute's value.
+        //
+        // Semantic Requirements: 9 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+        [Ignore(".NET DOM implementation does not match W3C DOM specification.")]
+	public void core0009M()
+        {
+            string computedValue = "";
+            string expectedValue = "Yes";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0009M");
+            try
+            {
+                results.description = "If the node removed by the \"removeNamedItem(name)\" "+
+                    "method is an Attr node with a default value, then "+
+                    "it is immediately replaced.";
+                //
+                // Retrieve targeted data and remove attribute.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                testNode.Attributes.RemoveNamedItem("street");
+                computedValue = testNode.Attributes.GetNamedItem("street").Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0009M --------------------------
+        //
+        //--------------------------- test case core-0010M ---------------------------
+        //
+        // Testing feature - The "removeNamedItem(name)" method returns the node removed
+        //                   from the map.
+        //
+        // Testing approach - Retrieve the third employee and create a NamedNodeMap
+        //                    object from the attributes in its last child. 
+        //                    Once the list is created, the "removeNamedItem(name)" 
+        //                    method is invoked where "name" is the name of an existing
+        //                    attribute ("street)".  The "removeNamedItem(name)" 
+        //                    method should remove the existing "street" attribute
+        //                    and return it.
+        //
+        // Semantic Requirements: 10 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0010M()
+        {
+            string computedValue = "";
+            string expectedValue = "No";
+            System.Xml.XmlNode returnedNode = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0010M");
+            try
+            {
+                results.description = "The \"removeNamedItem(name)\" method returns the "+
+                    "node removed from the map.";
+                //
+                // Retrieve targeted data, remove attribute and examine returned value of
+                // removeNamedItem method.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                returnedNode = testNode.Attributes.RemoveNamedItem("street");
+                computedValue = returnedNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0010M --------------------------
+        //
+        //--------------------------- test case core-0011M ---------------------------
+        //
+        // Testing feature - The "removeNamedItem(name)" method returns null if the
+        //                   name specified does not exist in the map.
+        //
+        // Testing approach - Retrieve the third employee and create a NamedNodeMap
+        //                    object from the attributes in its last child.
+        //                    Once the list is created, the "removeNamedItem(name)" 
+        //                    method is invoked where "name" does not exist in the 
+        //                    map.  The method should return null.
+        //
+        // Semantic Requirements: 11
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0011M()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0011M");
+            try
+            {
+                results.description = "The \"removeNamedItem(name)\" method returns null "+
+                    "if the specified \"name\" is not in the map.";
+                //
+                // Retrieve targeted data and attempt to remove a non-existing attribute.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                computedValue = testNode.Attributes.RemoveNamedItem("district");
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0011M --------------------------
+        //
+        //--------------------------- test case core-0012M ---------------------------
+        //
+        // Testing feature - The "item(index)" method returns the indexth item in the
+        //                   map (test for first item).
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    object from the attributes in its last child by
+        //                    by invoking the "attributes" attribute.  Once
+        //                    the list is created, the "item(index)" method is
+        //                    invoked with index = 0.  This should return the node at
+        //                    the first position.  Since there are no guarantees that
+        //                    first item in the map is the one that was listed first 
+        //                    in the attribute list the test checks for all of them.
+        //
+        // Semantic Requirements: 12
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0012M()
+        {
+            //string testName = "core-0012M";
+            string computedValue = "";
+//            string expectedValue = "domestic or street";
+            string expectedValue = "domestic";
+            System.Xml.XmlNode returnedNode = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0012M");
+            try
+            {
+                results.description = "Retrieve the first item in the map via the \"item(index)\" method."; 
+
+                //
+                // Retrieve targeted data and invoke "item" method.
+                //  
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                returnedNode = testNode.Attributes.Item(0);
+                computedValue = returnedNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0012M --------------------------
+        //
+        //--------------------------- test case core-0013M ---------------------------
+        //
+        // Testing feature - The "item(index)" method returns the indexth item in the
+        //                   map (test for last item).
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    object from the attributes in its last child. 
+        //                    Once the list is created, the "item(index)" method is
+        //                    invoked with index = 1.  This should return the node at
+        //                    the last position.  Since there are no guarantees that
+        //                    the last item in the map is the one that was listed last 
+        //                    in the attribute list, the test checks for all of them.
+        //
+        // Semantic Requirements: 12
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0013M()
+        {
+            string computedValue = "";
+//            string expectedValue = "domestic or street";
+            string expectedValue = "street";
+            System.Xml.XmlNode returnedNode = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0013M");
+            try
+            {
+                results.description = "Retrieve the last item in the map via the \"item(index)\" method."; 
+                //
+                // Retrieve targeted data and invoke "item" attribute.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                returnedNode = testNode.Attributes.Item(1);
+                computedValue = returnedNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0013M --------------------------
+        //
+        //--------------------------- test case core-0014M ---------------------------
+        //
+        // Testing feature - The "item(index)" method returns null if the index is 
+        //                   greater than the number of nodes in the map.
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    object from the attributes in its last child. 
+        //                    element by invoking the "attributes" attribute.  Once
+        //                    the list is created, the "item(index)" method is
+        //                    invoked with index = 3.  This index value is greater than
+        //                    the number of nodes in the map and under that condition
+        //                    the method should return null.
+        //
+        // Semantic Requirements: 13
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0014M()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0014M");
+            try
+            {
+                results.description = "The \"item(index)\" method returns null if the "+
+                    "index is greater than the number of nodes in the map.";
+
+                //
+                // Retrieve targeted data and invoke "item" method.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                computedValue = testNode.Attributes.Item(3);
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0014M --------------------------
+        //
+        //--------------------------- test case core-0015M ---------------------------
+        //
+        // Testing feature - The "item(index)" method returns null if the index is
+        //                   equal to the number of nodes in the map.
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    object from the attributes in its last child 
+        //                    Once the list is created, the "item(index)" method is
+        //                    invoked with index = 2.  This index value is equal to 
+        //                    the number of nodes in the map and under that condition
+        //                    the method should return null (first item is at position
+        //                    0).
+        //
+        // Semantic Requirements: 13
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0015M()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0015M");
+            try
+            {
+                results.description = "The \"item(index)\" method returns null if the index " +
+                    "is equal to the number of nodes in the map.";
+                //
+                // Retrieve targeted data and invoke "item" method.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                computedValue = testNode.Attributes.Item(2);
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0015M --------------------------
+        //
+        //--------------------------- test case core-0016M ---------------------------
+        //
+        // Testing feature - The "length" attribute contains the total number of
+        //                   nodes in the map.
+        //
+        // Testing approach - Retrieve the second employee and create a NamedNodeMap
+        //                    object from the attributes in its last child. 
+        //                    Once the list is created, the "length" attribute is
+        //                    invoked.  That attribute should contain the number 2. 
+        //
+        // Semantic Requirements: 14
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0016M()
+        {
+            string computedValue = "";
+            string expectedValue = "2";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0016M");
+            try
+            {
+                results.description = "The \"length\" attribute contains the number of " +
+                    "nodes in the map.";
+                //
+                // Retrieve targeted data and invoke "length" attribute.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                computedValue = testNode.Attributes.Count.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0016M --------------------------
+        //
+        //--------------------------- test case core-0017M ---------------------------
+        //
+        // Testing feature - The range of valid child nodes indices is 0 to length - 1.
+        //
+        // Testing approach - Create a NamedNodeMap object from the attributes of the
+        //                    last child of the third employee and traverse the
+        //                    list from index 0 to index length - 1.  All indices
+        //                    should be valid.
+        //
+        // Semantic Requirements: 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0017M()
+        {
+            string computedValue = "";
+            string expectedValue = "0 1 ";
+            int lastIndex = 0;
+            //string attributes = "";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0017M");
+            try
+            {
+                results.description = "The range of valid child nodes indices is 0 to " +
+                    "length - 1.";
+                //
+                // Retrieve targeted data and compute list length.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                lastIndex = testNode.Attributes.Count - 1;
+                //
+                // Traverse the list from 0 to length - 1.  All indices should be valid.
+                //
+                for (int index = 0;index <= lastIndex; index++)
+                    computedValue += index+" ";
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0017M --------------------------
+        //
+        //--------------------------- test case core-0018M ---------------------------
+        //
+        // Testing feature - The "setNamedItem(arg) method raises a System.ArgumentException
+        //                   Exception if "arg" was created from a different 
+        //                   document than the one that created the NamedNodeMap.
+        //
+        // Testing approach - Create a NamedNodeMap object from the attributes of the
+        //                    last child of the third employee and attempt to 
+        //                    add another Attr node to it that was created from a 
+        //                    different DOM document.  This condition should raise
+        //                    the desired exception.  This method uses the
+        //                    "createAttribute(name)" method from the Document
+        //                    interface. 
+        //
+        // Semantic Requirements: 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0018M()
+        {
+            string computedValue = "";
+            
+            System.Xml.XmlAttribute newAttrNode = util.getOtherDOMDocument().CreateAttribute("newAttribute");
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0018M");
+
+            results.description = "The \"setNamedItem(arg)\" method raises a "+
+                "System.ArgumentException Exception if \"arg\" was " +
+                "created from a document different from the one that created "+
+                "the NamedNodeList.";
+            //
+            // Retrieve targeted data and attempt to add an element that was created
+            // from a different document.  Should raise an exception.
+            //
+            testNode = util.nodeObject(util.THIRD,util.SIXTH);
+
+            try 
+            {
+                testNode.Attributes.SetNamedItem(newAttrNode);
+            } 
+            catch(System.Exception ex) 
+            {
+                computedValue = ex.GetType().ToString();
+            }
+
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0018M --------------------------
+        //
+        //--------------------------- test case core-0019M ---------------------------
+        //
+        // Testing feature - The "setNamedItem(arg) method raises a 
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if this
+        //                   NamedNodeMap is readonly.
+        //
+        // Testing approach - Create a NamedNodeMap object from the first child of the
+        //                    Entity named "ent4" inside the DocType node and then 
+        //                    attempt to add a new item to the list.  It should raise 
+        //                    the desired exception as this is a readonly NamedNodeMap.
+        //                   
+        // Semantic Requirements: 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0019M()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode entityDesc;
+            System.Xml.XmlAttribute newAttrNode = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0019M");
+
+            results.description = "The \"setNamedItem(arg)\" method raises a " +
+                "NO_MODIFICATION_ALLOWED_ERR Exception if this "+
+                "NamedNodeMap is readonly.";
+            //
+            // Create a NamedNodeMap object and attempt to add a node to it.
+            // Should raise an exception.
+            //
+            testNode = util.getEntity("ent4");
+            entityDesc = testNode.FirstChild;
+
+            try 
+            {
+                entityDesc.Attributes.SetNamedItem(newAttrNode);
+            }
+            catch(ArgumentException ex) 
+            {
+                computedValue = ex.GetType ().FullName; 
+            }
+
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0019M --------------------------
+        //
+        //--------------------------- test case core-0020M ---------------------------
+        //
+        // Testing feature - The "setNamedItem(arg) method raises an
+        //                   INUSE_ATTRIBUTE_ERR Exception if "arg" is an Attr 
+        //                   that is already an attribute of another Element.
+        //
+        // Testing approach - Create a NamedNodeMap object from the attributes of the
+        //                    third child and attempt to add an attribute that is
+        //                    already being used by the first employee.  An attempt
+        //                    to add such an attribute should raise the desired
+        //                    exception. 
+        //
+        // Semantic Requirements: 18
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	[Ignore(".NET DOM implementation does not match W3C DOM specification.")]
+	public void core0020M()
+        {
+            string computedValue= "";
+            System.Xml.XmlAttribute inUseAttribute = null;
+            System.Xml.XmlElement firstEmployee = null;
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = "System.ArgumentException";//util.INUSE_ATTRIBUTE_ERR;
+
+            testResults results = new testResults("Core0020M");
+            try
+            {
+                results.description = "The \"setNamedItem(arg)\" method raises an "+
+                    "INUSE_ATTRIBUTE_ERR Exception if \"arg\" "+
+                    "is an Attr node that is already an attribute "+
+                    "of another Element.";
+
+                firstEmployee = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                inUseAttribute = firstEmployee.GetAttributeNode("domestic");
+                //
+                // Attempt to add an attribute that is already used by another element 
+                // should raise an exception.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+
+                try 
+                {
+                    testNode.Attributes.SetNamedItem(inUseAttribute);
+                }
+                catch (System.Exception ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0020M --------------------------
+        //
+        //--------------------------- test case core-0021M ---------------------------
+        //
+        // Testing feature - The "removeNamedItem(name) method raises an
+        //                   NOT_FOUND_ERR Exception if there is no node
+        //                   named "name" in the map.
+        //
+        // Testing approach - Create a NamedNodeMap object from the attributes of the
+        //                    last child of the third employee and attempt to
+        //                    remove the "district" attribute.  There is no node named
+        //                    "district" in the list and therefore the desired 
+        //                    exception should be raised.
+        //
+        // System.Xml       - return null, if a matching node was not found.
+        //
+        // Semantic Requirements: 19
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0021M()
+        {
+            object computedValue = null;
+            System.Xml.XmlNode testNode = null;
+            object expectedValue = null;//util.NOT_FOUND1_ERR;
+
+            testResults results = new testResults("Core0021M");
+            try
+            {
+                results.description = "The \"removeNamedItem(name)\" method raises a " +
+                    "NOT_FOUND_ERR Exception if there is no node "+
+                    "named \"name\" in the map.";
+                //
+                // Create a NamedNodeMap object and attempt to remove an attribute that
+                // is not in the list should raise an exception.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+
+                try 
+                {
+                    //null if a matching node was not found
+                    computedValue = testNode.Attributes.RemoveNamedItem("district");
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = "EXCEPTION " + ex.GetType () + " : " + ex.Message;
+                }
+
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0021M --------------------------
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Node/Node.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/Node/Node.cs
@@ -1,5327 +1,5327 @@
-//**************************************************************************
-//
-//
-//                       National Institute Of Standards and Technology
-//                                     DTS Version 1.0
-//         
-//                                     Node Interface
-//
-// Written by: Carmelo Montanez
-// Modified by:  Mary Brady
-//
-// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
-// Mainsoft Corporation (c) 2003-2004
-//**************************************************************************
-using System;
-using System.Xml;
-
-using nist_dom;
-using NUnit.Framework;
-
-namespace nist_dom.fundamental
-{
-    [TestFixture]
-    public class NodeTest
-    {
-        public static int i = 2;
-/*
-        public testResults[] RunTests()
-        {
-            testResults[] tests = new testResults[] {core0001NO(), core0002NO(), core0003NO(),core0004NO(),
-                                                        core0005NO(), core0006NO(), core0007NO(), core0008NO(),
-                                                        core0009NO(), core0010NO(), core0011NO(), core0012NO(),
-                                                        core0013NO(), core0014NO(), core0015NO(), core0016NO(),
-                                                        core0017NO(), core0018NO(), core0019NO(), core0020NO(),
-                                                        core0021NO(), core0022NO(), core0023NO(), core0024NO(),
-                                                        core0025NO(), core0026NO(), core0027NO(), core0028NO(),
-                                                        core0029NO(), core0030NO(), core0031NO(), core0032NO(),
-                                                        core0033NO(), core0034NO(), core0035NO(), core0036NO(),
-                                                        core0038NO(), core0039NO(), core0040NO(),
-                                                        core0041NO(), core0042NO(), core0043NO(), core0044NO(),
-                                                        core0045NO(), core0046NO(), core0047NO(), core0048NO(),
-                                                        core0049NO(), core0050NO(), core0051NO(), core0052NO(),
-                                                        core0053NO(), core0054NO(), core0055NO(), core0056NO(),
-                                                        core0057NO(), core0058NO(), core0059NO(), core0060NO(),
-                                                        core0061NO(), core0062NO(), core0063NO(), core0064NO(),
-                                                        core0065NO(), core0066NO(), core0067NO(), core0068NO(),
-                                                        core0069NO(), core0070NO(), core0071NO(), core0072NO(),
-                                                        core0073NO(), core0074NO(), core0075NO(), core0076NO(),
-                                                        core0077NO(), core0078NO(), core0079NO(), core0080NO(),
-                                                        core0081NO(), core0082NO(), core0083NO(), core0084NO(),
-                                                        core0085NO(), core0087NO(), core0088NO(),
-                                                        core0089NO(), core0090NO(), core0091NO(), core0092NO(),
-                                                        core0093NO(), core0094NO(), core0095NO(), core0096NO(),
-                                                        core0097NO(), core0098NO(), core0099NO(), core0100NO(),
-                                                        core0101NO(), core0102NO(), core0103NO()};
-  
-            return tests;
-        }
-*/
-
-        //------------------------ test case core-0001NO------------------------
-        //
-        // Testing feature - The "nodeType" attribute for an Element node is 
-        //                   1 (ELEMENT_NODE). 
-        //
-        // Testing approach - Retrieve the root node and check its "nodeType" 
-        //                    attribute.  It should be set to 1. 
-        //
-        // Semantic Requirements: 1, 14
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0001NO()
-        {
-            int computedValue = 0;
-            int expectedValue = util.ELEMENT_NODE;
-
-            testResults results = new testResults("Core0001NO");
-
-            results.description = "The nodeType attribute for an Element Node "+
-                " should be set to the constant 1.";
-            //
-            // The nodeType attribute for the root node should be set to the value 1.
-            //
-            computedValue = (int)util.getRootNode().NodeType;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0001NO --------------------------
-        //
-        //------------------------- test case core-0002NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for an Attribute node is
-        //                   2 (ATTRIBUTE_NODE).
-        //
-        // Testing approach - Retrieve the first attribute from the last child of
-        //                    the first employee.  Its "nodeType" attribute is then 
-        //                    checked, it should be set to 2.
-        //
-        // Semantic Requirements: 2, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0002NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlAttribute attrNode = null;
-            string expectedValue = util.ATTRIBUTE_NODE.ToString();
-
-            testResults results = new testResults("Core0002NO");
-            try
-            {
-                results.description = "The nodeType attribute for an Attribute Node "+
-                    " should be set to the constant 2.";
-                // 
-                // Retrieve the targeted data and its type.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                attrNode = testNode.GetAttributeNode("domestic");//.node.
-                computedValue = ((int)attrNode.NodeType).ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0002NO --------------------------
-        //
-        //------------------------- test case core-0003NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a Text node is
-        //                   3 (TEXT_NODE).
-        //
-        // Testing approach - Retrieve the Text data from the last child of the 
-        //                    first employee and and examine its "nodeType" 
-        //                    attribute.  It should be set to 3.
-        //
-        // Semantic Requirements: 3, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0003NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode textNode = null;
-            string expectedValue = util.TEXT_NODE.ToString();
-
-            testResults results = new testResults("Core0003NO");
-            try
-            {
-                results.description = "The nodeType attribute for a Text Node "+
-                    " should be set to the constant 3.";
-
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.FIRST,util.SIXTH);
-                textNode = testNode.FirstChild;//.node.
-                //
-                // The nodeType attribute should be set to the value 3.
-                //
-                computedValue = ((int)textNode.NodeType).ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0003NO --------------------------
-        //
-        //------------------------- test case core-0004NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a CDATASection node is
-        //                   4 (CDATA_SECTION_NODE).
-        //
-        // Testing approach - Retrieve the CDATASection node contained inside
-        //                    the second child of the second employee and
-        //                    examine its "nodeType" attribute.  It should be 
-        //                    set to 4.
-        //
-        // Semantic Requirements: 4, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0004NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode cDataNode = null;
-            string expectedValue = util.CDATA_SECTION_NODE.ToString();
-
-            testResults results = new testResults("Core0004NO");
-            try
-            {
-                results.description = "The nodeType attribute for a CDATASection Node "+
-                    " should be set to the constant 4.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SECOND);
-                cDataNode = testNode.LastChild; //.node.
-                //
-                // The nodeType attribute should be set to the value 3.
-                //
-                computedValue = ((int)cDataNode.NodeType).ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0004NO --------------------------
-        //
-        //------------------------- test case core-0005NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for an EntityReference node 
-        //                   is 5 (ENTITY_REFERENCE_NODE).
-        //
-        // Testing approach - Retrieve the first Entity Reference node from the 
-        //                    last child of the second employee and examine its 
-        //                    "nodeType" attribute.  It should be set to 5.
-        //
-        // Semantic Requirements:  5, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0005NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode entRefNode = null;
-            string expectedValue = XmlNodeType.EntityReference.ToString ();//util.ENTITY_REFERENCE_NODE;
-
-            testResults results = new testResults("Core0005NO");
-            try
-            {
-                results.description = "The nodeType attribute for an EntityReference Node "+
-                    " should be set to the constant 5.";
-
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entRefNode = testNode.FirstChild;//.node.
-                //
-                // The nodeType attribute should be set to the value 5.
-                //
-                computedValue = entRefNode.NodeType.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0005NO --------------------------
-        //
-        //------------------------- test case core-0006NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for an Entity node 
-        //                   6 (ENTITY_NODE).
-        //
-        // Testing approach - Retrieve the first Entity declaration in the
-        //                    "DOCTYPE" section of the XML file and examine
-        //                    its "nodeType" attribute.  It should be set to 6.
-        //
-        // Semantic Requirements: 6, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0006NO()
-        {
-            int computedValue = 0;
-            System.Xml.XmlNode testNode = null;
-            int expectedValue = util.ENTITY_NODE;
-
-            testResults results = new testResults("Core0006NO");
-            results.description = "The nodeType attribute for an Entity Node "+
-                " should be set to the constant 6.";
-            //
-            // Get the targeted data and its type.
-            //
-            testNode = util.getEntity("ent1");
-            //
-            // The nodeType attribute should be set to the value 6.
-            //
-            computedValue = (int)testNode.NodeType;
-
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0006NO --------------------------
-        //
-        //------------------------- test case core-0007NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a ProcessingInstruction.
-        //
-        // Testing approach - Retrieve the first declaration in the XML file
-        //                    and examine its "nodeType" attribute.  It should 
-        //                    be set to ProcessingInstruction.
-        //
-        // Semantic Requirements: 7, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0007NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            string expectedValue =  util.XML_DECLARATION_NODE.ToString(); //util.PROCESSING_INSTRUCTION_NODE.ToString();
-
-            testResults results = new testResults("Core0007NO");
-            results.description = "The nodeType attribute for an ProcessingInstruction Node.";
-            //
-            //  Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(0);
-            //
-            // The nodeType attribute should be set to the value 7.
-            //
-            computedValue = ((int)testNode.NodeType).ToString();
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0007NO --------------------------
-        //
-        //------------------------- test case core-0008NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a comment node is
-        //                   8 (COMMENT_NODE).
-        //
-        // Testing approach - Retrieve the only comment (third child) from the
-        //                    main DOM document and examine its "nodeType" attribute.  
-        //                    It should be set to 8.
-        //
-        // Semantic Requirements: 8, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0008NO()
-        {
-            int computedValue = 0;
-            System.Xml.XmlNode testNode = null;
-            int expectedValue = util.COMMENT_NODE;
-
-            testResults results = new testResults("Core0008NO");
-            results.description = "The nodeType attribute for a Comment Node "+
-                " should be set to the constant 8.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(2);
-            //
-            // The nodeType attribute should be set to the value 8.
-            //
-            computedValue = (int)testNode.NodeType;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0008NO --------------------------
-        //
-        //------------------------- test case core-0009NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a Document node is
-        //                   9 (DOCUMENT_NODE).
-        //
-        // Testing approach - Retrieve the DOM Document and examine its 
-        //                    "nodeType" attribute.  It should be set to 9.
-        //
-        // Semantic Requirements: 9, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0009NO()
-        {
-            int computedValue = 0;
-            System.Xml.XmlNode testNode = null;
-            int expectedValue = util.DOCUMENT_NODE;
-
-            testResults results = new testResults("Core0009NO");
-            results.description = "The nodeType attribute for an Document Node "+
-                " should be set to the constant 9.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            // The nodeType attribute should be set to the value 9.
-            //
-            computedValue = (int)testNode.NodeType;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0009NO --------------------------
-        //
-        //------------------------- test case core-0010NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a DocumentType node is
-        //                   10 (DOCUMENT_TYPE_NODE).
-        //
-        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
-        //                    the XML file and examine its "nodeType" attribute. 
-        //                    It should be set to 10.
-        //
-        // Semantic Requirements: 10, 14 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0010NO()
-        {
-            int computedValue = 0;
-            System.Xml.XmlNode testNode = null;
-            int expectedValue = util.DOCUMENT_TYPE_NODE;
-
-            testResults results = new testResults("Core0010NO");
-            results.description = "The nodeType attribute for an DocumentType Node "+
-                " should be set to the constant 10.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDocType();
-            //
-            // The nodeType attribute should be set to the value 10.
-            //
-            computedValue = (int)testNode.NodeType;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0010NO --------------------------
-        //
-        //------------------------- test case core-0011NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a DocumentFragment node
-        //                   is 11 (DOCUMENT_FRAGMENT_NODE).
-        //
-        // Testing approach - Retrieve the whole DOM document and invoke its
-        //                    "createDocumentFragment()" method and examine the
-        //                    "nodeType" attribute of the returned node.  It should 
-        //                    be set to 11.
-        //
-        // Semantic Requirements: 11, 14
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0011NO()
-        {
-            int computedValue = 0;
-            System.Xml.XmlNode testNode = null;
-            int expectedValue = util.DOCUMENT_FRAGMENT_NODE;
-
-            testResults results = new testResults("Core0011NO");
-            results.description = "The nodeType attribute for a DocumentFragment Node "+
-                " should be set to the constant 11.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().CreateDocumentFragment();
-            //
-            // The nodeType attribute should be set to the value 11.
-            //
-            computedValue = (int)testNode.NodeType;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0011NO --------------------------
-        //
-        //------------------------- test case core-0012NO -----------------------------
-        //
-        // Testing feature - The "nodeType" attribute for a notation node is
-        //                   12 (NOTATION_NODE).
-        //
-        // Testing approach - Retrieve the Notation declaration inside the 
-        //                    DocumentType node and examine its "nodeType"
-        //                    attribute.  It should be set to 12.
-        //
-        // Semantic Requirements: 12, 14
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0012NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = util.NOTATION_NODE.ToString();
-
-            testResults results = new testResults("Core0012NO");
-            try
-            {
-                results.description = "The nodeType attribute for a Notation Node "+
-                    " should be set to the constant 12.";
-                //
-                // Get the targeted data.
-                //
-                testNode = util.getNotation("notation1");
-                //
-                // The nodeType attribute should be set to the value 12.
-                //
-                computedValue = ((int)testNode.NodeType).ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0012NO --------------------------
-        //
-        //------------------------   test case core-0013NO ----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for an Element node is
-        //                   its tagName.
-        //
-        // Testing approach - Retrieve the first Element node (root node) of the 
-        //                    DOM object and check its "nodeName" attribute.  
-        //                    It should be equal to its tagName.
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0013NO()
-        {
-            string computedValue = "0";
-            string expectedValue = "staff"; 
-
-            testResults results = new testResults("Core0013NO");
-            results.description = "The nodeName attribute for an Element Node " +
-                "should be set to its tagName.";
-            //
-            // The nodeName attribute should be set to "staff". 
-            //
-            computedValue = util.getRootNode().Name;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0013NO --------------------------
-        //
-        //------------------------- test case core-0014NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for an Attribute node is
-        //                   the name of the attribute.
-        //
-        // Testing approach - Retrieve the attribute named "domestic" from the last 
-        //                    child of the first employee.  Its "nodeName" attribute 
-        //                    is then checked.  It should be set to "domestic".
-        //
-        // Semantic Requirements: 13, 15  
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0014NO()
-        {
-            string computedValue = "0";
-            string expectedValue = "domestic";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlAttribute attrNode = null;
-
-            testResults results = new testResults("Core0014NO");
-            try
-            {
-                results.description = "The nodeName attribute for an Attribute Node " +
-                    "should be set to the name of the attribute.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                attrNode = testNode.GetAttributeNode("domestic"); //.node.
-                //
-                // The nodeName attribute should be set to the value "domestic".
-                //
-                computedValue = attrNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0014NO --------------------------
-        //
-        //------------------------- test case core-0015NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a text node is
-        //                   "#text".
-        //
-        // Testing approach - Retrieve the Text data from the last child of the
-        //                    first employee and and examine its "nodeName"
-        //                    attribute.  It should be set to "#text".
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0015NO()
-        {
-            string computedValue = "0";
-            string expectedValue = "#text";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode textNode = null;
-
-            testResults results = new testResults("Core0015NO");
-            try
-            {
-                results.description = "The nodeName attribute for a Text Node " +
-                    "should be set to \"#text\".";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.FIRST,util.SIXTH);
-                textNode = testNode.FirstChild;//.node.
-                //
-                // The nodeName attribute should be set to the value "#text".
-                //
-                computedValue = textNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0015NO --------------------------
-        //
-        //------------------------- test case core-0016NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a CDATASection node is
-        //                   "#cdata-section".
-        //
-        // Testing approach - Retrieve the CDATASection node inside the second 
-        //                    child of the second employee and examine its "nodeName"
-        //                    attribute.  It should be set to "#cdata-section".
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0016NO()
-        {
-            string computedValue = "0";
-            string expectedValue = "#cdata-section";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode cDataNode = null;
-
-            testResults results = new testResults("Core0016NO");
-            try
-            {
-                results.description = "The nodeName attribute for a CDATASection Node " +
-                    "should be set to \"#cdata-section\".";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SECOND);  
-                cDataNode = testNode.LastChild;;//.node.
-                //
-                // The nodeName attribute should be set to "#cdata-section".
-                //
-                computedValue = cDataNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0016NO --------------------------
-        //
-        //------------------------- test case core-0017NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for an EntityReference node
-        //                   is the name of the entity referenced.
-        //
-        // Testing approach - Retrieve the first Entity Reference node from the last 
-        //                    child of the second employee and examine its
-        //                    "nodeName" attribute.  It should be set to "ent2".
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0017NO()
-        {
-            string computedValue = "";
-            string expectedValue = "ent2";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode entRefNode = null;
-
-            testResults results = new testResults("Core0017NO");
-            try
-            {
-                results.description = "The nodeName attribute for an EntityReference Node " +
-                    "should be set to the name of the entity referenced.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entRefNode = testNode.FirstChild;//.node.
-                //
-                // The nodeName attribute should be set to "ent2".
-                //
-                computedValue = entRefNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-        //------------------------ End test case core-0017NO --------------------------
-        //
-        //------------------------- test case core-0018NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for an Entity node is
-        //                   the entity name.
-        //
-        // Testing approach - Retrieve the first Entity declaration in the
-        //                    "DOCTYPE" section of the XML file and examine
-        //                    its "nodeName" attribute.  It should be set to
-        //                    "ent1" .
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0018NO()
-        {
-            string computedValue = "";
-            string expectedValue = "ent1";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0018NO");
-            results.description = "The nodeName attribute for an Entity Node " +
-                "should be set to the entity name.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getEntity("ent1");
-            //
-            // The nodeName attribute should be set to "ent1".
-            //
-            computedValue = testNode.Name;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0018NO --------------------------
-        //
-        //------------------------- test case core-0019NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a ProcessingInstruction
-        //                   node is the target.
-        //
-        // Testing approach - Retrieve the first declaration in the XML file
-        //                    and examine its "nodeName" attribute.  It should
-        //                    be set to "xml".
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0019NO()
-        {
-            string computedValue = "0";
-            string expectedValue = "xml";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0019NO");
-            results.description = "The nodeName attribute for a ProcessingInstruction "+
-                "Node should be set to the target.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(0);
-            //
-            // The nodeName attribute should be set to "xml".
-            //
-            computedValue = testNode.Name;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0019NO --------------------------
-        //
-        //------------------------- test case core-0020NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a comment node is
-        //                   "#comment".
-        //
-        // Testing approach - Retrieve the only comment in the XML file (third child)
-        //                    and examine its "nodeName" attribute.  It should
-        //                    be set to "#comment".
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0020NO()
-        {
-            string computedValue = "0";
-            string expectedValue = "#comment";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0020NO");
-            results.description = "The nodeName attribute for a comment Node "+
-                "should be set to \"#comment\".";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(2);      
-            //
-            // The nodeName attribute should be set to "#comment".
-            //
-            computedValue = testNode.Name;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0020NO --------------------------
-        //
-        //------------------------- test case core-0021NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a Document node is
-        //                   "#document".
-        //
-        // Testing approach - Retrieve the DOM Document and examine its
-        //                    "nodeName" attribute.  It should be set to "#document".
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0021NO()
-        {
-            string computedValue = "";
-            string expectedValue = "#document";
-            System.Xml.XmlNode testNodeNode = null;
-
-            testResults results = new testResults("Core0021NO");
-            results.description = "The nodeName attribute for a Document Node "+
-                "should be set to \"#document\".";
-            //
-            // Get the targeted data.
-            //
-            System.Xml.XmlNode testNode = util.getDOMDocument();
-            //
-            // The nodeName attribute should be set to "#document". 
-            //
-            computedValue = testNode.Name;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0021NO --------------------------
-        //
-        //------------------------- test case core-0022NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a DocumentType node is
-        //                   the document type name.
-        //
-        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
-        //                    the XML file and examine its "nodeName" attribute.
-        //                    It should be set to "staff". 
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0022NO()
-        {
-            string computedValue = "";
-            string expectedValue = "staff";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0022NO");
-            results.description = "The nodeName attribute for a DocumentType Node " +
-                "should be set to the document type name.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDocType();
-            //
-            // The nodeName attribute should be set to "staff".
-            //
-            computedValue = testNode.Name;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0022NO ------------------------
-        //
-        //------------------------- test case core-0023NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a DocumentFragment node
-        //                   is "#document-fragment".
-        //
-        // Testing approach - Retrieve the whole DOM document and invoke its
-        //                    "createDocumentFragment()" method and examine the
-        //                    "nodeName" attribute of the returned node.  It should
-        //                    be set to "#document-fragment". 
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0023NO()
-        {
-            string computedValue = "";
-            string expectedValue = "#document-fragment";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0023NO");
-            results.description = "The nodeName attribute for a DocumentFragment Node "+
-                "should be set to \"#document-fragment\".";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().CreateDocumentFragment();
-            //
-            // The nodeName attribute should be set to "#document-fragment".
-            //
-            computedValue = testNode.Name;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0023NO --------------------------
-        //
-        //------------------------- test case core-0024NO -----------------------------
-        //
-        // Testing feature - The "nodeName" attribute for a notation node is
-        //                   the name of the notation.
-        //
-        // Testing approach - Retrieve the Notation declaration inside the
-        //                    DocumentType node and examine its "nodeName"
-        //                    attribute.  It should be set to "notation1".
-        //
-        // Semantic Requirements: 13, 15 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0024NO()
-        {
-            string computedValue = "";
-            string expectedValue = "notation1";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0024NO");
-            try
-            {
-                results.description = "The nodeName attribute for a Notation Node " +
-                    "should be set to the notation name.";
-                //
-                // Get the targeted data.
-                //
-                testNode = util.getNotation("notation1");
-                //
-                // The nodeName attribute should be set to "notation1".
-                //
-                computedValue = testNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0024NO --------------------------
-        //
-        //------------------------   test case core-0025NO ----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for an Element node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the root node of the DOM object and check
-        //                    its "nodeValue" attribute.  It should be equal
-        //                    to null.
-        //
-        // Semantic Requirements: 13, 16 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0025NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-
-            testResults results = new testResults("Core0025NO");
-            results.description = "The nodeValue attribute for an Element Node " +
-                "should be set to null.";
-            //
-            // The nodeValue attribute should be set to null.
-            //
-            computedValue = util.getRootNode().Value;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0025NO --------------------------
-        //
-        //------------------------- test case core-0026NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for an Attribute node is
-        //                   the value of the attribute.
-        //
-        // Testing approach - Retrieve the attribute named "domestic" from the last 
-        //                    child of the first employee.  Its "nodeValue" attribute 
-        //                    is then checked, it should be set to "Yes".
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0026NO()
-        {
-            string computedValue = "";
-            string expectedValue = "Yes";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlAttribute attrNode = null;
-
-            testResults results = new testResults("Core0026NO");
-            try
-            {
-                results.description = "The nodeValue attribute for an Attribute Node " +
-                    "should be set to the value of the attribute.";
-                //
-                // Get the targeted data.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
-                attrNode = testNode.GetAttributeNode("domestic");//.node.
-                //
-                // The nodeType attribute should be set to "Yes".
-                //
-                computedValue = attrNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0026NO --------------------------
-        //
-        //------------------------- test case core-0027NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a Text node is
-        //                   content of the Text node.
-        //
-        // Testing approach - Retrieve the Text data from the last child of the
-        //                    first employee and and examine its "nodeValue"
-        //                    attribute.  It should be set to 
-        //                    "1230 North Ave. Dallas, Texas 98551". 
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0027NO()
-        {
-            string computedValue = "";
-            string expectedValue = "1230 North Ave. Dallas, Texas 98551";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode textNode = null;
-
-            testResults results = new testResults("Core0027NO");
-            try
-            {
-                results.description = "The nodeValue attribute for a Text node " +
-                    "should be set to contents of the of the Text node.";
-                //
-                // Get the targeted data.
-                //
-                testNode = util.nodeObject(util.FIRST,util.SIXTH);
-                textNode = testNode.FirstChild;//.node.
-                //
-                // Retrieve the nodeValue attribute.
-                //
-                computedValue = textNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0027NO --------------------------
-        //
-        //------------------------- test case core-0028NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a CDATASection node is
-        //                   the content of the CDATASection.
-        //
-        // Testing approach - Retrieve the first CDATASection node inside the second 
-        //                    child of the second employee and examine its "nodeValue" 
-        //                    attribute.  It should be set to "This is a CDATA Section
-        //                    with EntityReference number 2 &ent2;".
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0028NO()
-        {
-            string computedValue = "0";
-            string expectedValue = "This is a CDATASection with EntityReference number 2 &ent2;";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode cDataNode = null;
-
-            testResults results = new testResults("Core0028NO");
-            try
-            {
-                results.description = "The nodeValue attribute for a CDATASection Node "+
-                    "should be set to the contents of the CDATASection."; 
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SECOND);
-                cDataNode = testNode.ChildNodes.Item(1);//.node.
-                //
-                // Get the "nodeValue" attribute.
-                //
-                computedValue = cDataNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0028NO --------------------------
-        //
-        //------------------------- test case core-0029NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for an EntityReference node
-        //                   is null.
-        //
-        // Testing approach - Retrieve the first Entity Reference node from the last
-        //                    child of the second employee and examine its
-        //                    "nodeValue" attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0029NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode entRefNode = null;
-
-            testResults results = new testResults("Core0029NO");
-            try
-            {
-                results.description = "The nodeValue attribute for an EntityReference "+
-                    "node should be set to null.";
-                //
-                // Get the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entRefNode = testNode.FirstChild;//.node.
-                //
-                // The nodeValue attribute should be set to null.
-                //
-                computedValue = entRefNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0029NO --------------------------
-        //
-        //------------------------- test case core-0030NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for an Entity node
-        //                   is null.
-        //
-        // Testing approach - Retrieve the first Entity declaration in the
-        //                    "DOCTYPE" section of the XML file and examine
-        //                    its "nodeValue" attribute.  It should be set to
-        //                    null.
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0030NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0030NO");
-            results.description = "The nodeValue attribute for an Entity node " +
-                "should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getEntity("ent1");;
-            //
-            // The nodeValue attribute should be set to null.
-            //
-            computedValue = testNode.Value;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0030NO --------------------------
-        //
-        //------------------------- test case core-0031NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a ProcessingInstruction
-        //                   node is the entire content excluding the target.
-        //
-        // Testing approach - Retrieve the first declaration in the XML file
-        //                    and examine its "nodeValue" attribute.  It should
-        //                    be set to "version="1.0"".
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0031NO()
-        {
-            string computedValue = "";
-            string expectedValue = "version=\"1.0\"";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0031NO");
-            results.description = "The nodeValue attribute for a ProcessingInstruction "+
-                "node is the entire contents excluding the target.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(0);
-            //
-            // The nodeValue attribute should be set to "version="1.0"".
-            //
-            computedValue = testNode.Value;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0031NO --------------------------
-        //
-        //------------------------- test case core-0032NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a comment node is
-        //                   the content of the comment.
-        //
-        // Testing approach - Retrieve the only comment in the XML file (third child)
-        //                    and examine its "nodeValue" attribute.  It should
-        //                    be set to " This is comment number 1.".
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0032NO()
-        {
-            string computedValue = "";
-            string expectedValue = " This is comment number 1.";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0032NO");
-            results.description = "The nodeValue attribute for a comment node " +
-                "should be set to the contents of the comment.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(2);
-            //
-            // The nodeValue attribute should be set to " This is comment number 1."
-            //
-            computedValue = testNode.Value;
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0032NO --------------------------
-        //
-        //------------------------- test case core-0033NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a Document node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the DOM Document and examine its
-        //                    "nodeValue" attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0033NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0033NO");
-            results.description = "The nodeValue attribute for a Document node "+
-                "should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            // The nodeValue attribute should be set to null.
-            //
-            computedValue = testNode.Value;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0033NO --------------------------
-        //
-        //------------------------- test case core-0034NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a DocumentType node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
-        //                    the XML file and examine its "nodeValue" attribute.
-        //                    It should be set to null.
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0034NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0034NO");
-            results.description = "The nodeValue attribute for a DocumentType Node " +
-                "should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(1);
-            //
-            // The nodeValue attribute should be set to null.
-            //
-            computedValue = testNode.Value;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0034NO ------------------------
-        //
-        //------------------------- test case core-0035NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a DocumentFragment node
-        //                   is null.
-        //
-        // Testing approach - Retrieve the whole DOM document and invoke its
-        //                    "createDocumentFragment()" method and examine the
-        //                    "nodeValue" attribute of the returned node.  It should
-        //                    be set to null.
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0035NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0035NO");
-            results.description = "The nodeValue attribute for a DocumentFragment node " +
-                "should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().CreateDocumentFragment();
-            //
-            // The nodeValue attribute should be set to null.
-            //
-            computedValue = testNode.Value;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0035NO --------------------------
-        //
-        //------------------------- test case core-0036NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute for a notation node is
-        //                   the name of the notation.
-        //
-        // Testing approach - Retrieve the Notation declaration inside the
-        //                    DocumentType node and examine its nodeValue 
-        //                    attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 16
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0036NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0036NO");
-            try
-            {
-                results.description = "The nodeValue attribute for a Notation node " +
-                    "should be set to null.";
-                //
-                // Get the targeted data.
-                //
-                testNode = util.getNotation("notation1");
-                //
-                // The nodeValue attribute should be set to null.
-                //
-                computedValue = testNode.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0036NO --------------------------
-        //
-        //------------------------   test case core-0037NO ----------------------------
-        //
-        // Testing feature - The "attributes" attribute for an Element node is
-        //                   a NamedNodeMap.
-        //
-        // Testing approach - Retrieve the last child of the third employee
-        //                    and examine its "attributes" attribute.  It should be 
-        //                    equal to a NamedNodeMap of its attributes. 
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0037NO()
-        {
-            string computedValue = "";
-            string expectedValue = "";
-            System.Xml.XmlNode testNode = null;
-            string testName = "core-0037NO";
-
-            testResults results = new testResults("core0037NO");
-            try
-            {
-                results.description += "The \"attributes\" attribute for an Element node";
-                results.description += " should be set to a NamedNodeMap. ";
-
-                //
-                // Retrieve the targeted data and its attributes.
-                //
-                testNode = util.nodeObject(util.THIRD,util.SIXTH);
-                computedValue += testNode.Attributes.Item(util.FIRST).Name+" ";
-                computedValue += testNode.Attributes.Item(util.SECOND).Name;
-                //
-                // Determine the order of the NamedNodeMap items.
-                //
-                if (computedValue.Substring(0,1) == "d" && computedValue.Substring(1,1) == "o")
-                    expectedValue = "domestic street";
-                else
-                    expectedValue = "street domestic";
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0037NO --------------------------
-        //
-        //------------------------- test case core-0038NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for an Attribute node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the first attribute from the last child of 
-        //                    the first employee and.  Its "attributes" attribute 
-        //                    is then checked.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0038NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlAttribute attrNode = null;
-
-            testResults results = new testResults("Core0038NO");
-            try
-            {
-                results.description = "The \"attributes\" attribute for an Attribute node " +
-                    "should be set to null.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.FIRST,util.SIXTH);
-                attrNode = (System.Xml.XmlAttribute)testNode.Attributes.Item(util.FIRST);
-                //
-                // The "attributes" attribute should be set to null.
-                //
-                computedValue = attrNode.Attributes;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0038NO --------------------------
-        //
-        //------------------------- test case core-0039NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for a Text node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the text data from the last child of the
-        //                    first employee and examine its "attributes"
-        //                    attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0039NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode textNode = null;
-
-            testResults results = new testResults("Core0039NO");
-            try
-            {
-                results.description = "The \"attributes\" attribute for a Text node "+
-                    "should be set to null.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.FIRST,util.SIXTH);
-                textNode = testNode.FirstChild;//.node.
-                //
-                // The "attributes" attribute should be set to null
-                //
-                computedValue = textNode.Attributes;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0039NO --------------------------
-        //
-        //------------------------- test case core-0040NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for a CDATASection node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the CDATASection node contained inside
-        //                    the second child of the second employee and
-        //                    examine its "attributes" attribute.  It should be
-        //                    set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0040NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode cDataNode = null;
-
-            testResults results = new testResults("Core0040NO");
-            try
-            {
-                results.description = "The \"attributes\" attribute for a CDATASection "+
-                    "node should be set to null.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SECOND);
-                cDataNode = testNode.LastChild;//.node.
-                //
-                // The "attributes" attribute should be set to null.
-                //
-                computedValue = cDataNode.Attributes;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0040NO --------------------------
-        //
-        //------------------------- test case core-0041NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for an EntityReference node
-        //                   is null.
-        //
-        // Testing approach - Retrieve the first Entity Reference node from the last 
-        //                    child of the second employee and examine its
-        //                    "attributes" attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0041NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode entRefNode = null;
-
-            testResults results = new testResults("Core0041NO");
-            try
-            {
-                results.description = "The \"attributes\" attribute for an "+
-                    "EntityReference node should be set to null.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entRefNode = testNode.FirstChild;//.node.
-                //
-                // The \"attributes\" attribute should be set to null.
-                //
-                computedValue = entRefNode.Attributes;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-        //------------------------ End test case core-0041NO --------------------------
-        //
-        //------------------------- test case core-0042NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for an Entity node
-        //                   is null.
-        //
-        // Testing approach - Retrieve the first Entity declaration in the
-        //                    "DOCTYPE" section of the XML file and examine
-        //                    its "attributes" attribute.  It should be set to
-        //                    null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0042NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0042NO");
-
-            results.description = "The \"attributes\" attribute for an Entity node "+
-                "should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getEntity("ent1");
-            //
-            // The "attributes" attribute should be set to null.
-            //
-            computedValue = testNode.Attributes;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0042NO --------------------------
-        //
-        //------------------------- test case core-0043NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for a ProcessingInstruction
-        //                   node is null.
-        //
-        // Testing approach - Retrieve the first declaration in the XML file
-        //                    and examine its "attributes" attribute.  It should
-        //                    be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0043NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0043NO");
-
-            results.description = "The \"attributes\" attribute for a "+
-                "ProcessingInstruction node is null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(0);
-            //
-            // The "attributes" attribute should be set to null.
-            //
-            computedValue = testNode.Attributes;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0043NO --------------------------
-        //
-        //------------------------- test case core-0044NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for a comment node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the third child of the DOM document and
-        //                    examine its "attributes" attribute.  It should
-        //                    be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0044NO()
-        {
-            object computedValue = null;
-            object expectedValue = null; 
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0044NO");
-
-            results.description = "The \"attributes\" attribute for a comment node "+
-                "should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().ChildNodes.Item(2);
-            //
-            // The "attributes" attribute should be set to null. 
-            //
-            computedValue = testNode.Attributes;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0044NO --------------------------
-        //
-        //------------------------- test case core-0045NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for a Document node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the DOM Document and examine its
-        //                    "attributes" attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0045NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0045NO");
-
-            results.description = "The \"attributes\" attribute for a Document node "+
-                "should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            // The "attributes" attribute should be set to null.
-            //
-            computedValue = testNode.Attributes;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0045NO --------------------------
-        //
-        //------------------------- test case core-0046NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for a DocumentType node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
-        //                    the XML file and examine its "attribute" attribute.
-        //                    It should be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0046NO()
-        {
-            object computedValue = null;
-            object expectedValue = null; 
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0046NO");
-
-            results.description = "The \"attribute\" attribute for a DocumentType "+
-                "node should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDocType();
-            //
-            // The "attributes" attribute should be set to null.
-            //
-            computedValue = testNode.Attributes;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0046NO ------------------------
-        //
-        //------------------------- test case core-0047NO ---------------------------
-        //
-        // Testing feature - The "attributes" attribute for a DocumentFragment node
-        //                   is null.
-        //
-        // Testing approach - Retrieve the whole DOM document and invoke its
-        //                    "createDocumentFragment()" method and examine the
-        //                    "attributes" attribute of the returned node.  It
-        //                    should be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0047NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0047NO");
-            results.description = "The \"attributes\" attribute for a DocumentFragment "+
-                "node should be set to null.";
-            //
-            // Get the targeted data.
-            //
-            testNode = util.getDOMDocument().CreateDocumentFragment();
-            //
-            // The "attributes" attribute should be set to null.
-            //
-            computedValue = testNode.Attributes;
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0047NO --------------------------
-        //
-        //------------------------- test case core-0048NO -----------------------------
-        //
-        // Testing feature - The "attributes" attribute for a notation node is
-        //                   null.
-        //
-        // Testing approach - Retrieve the Notation declaration inside the
-        //                    DocumentType node and examine its "attributes"
-        //                    attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 13, 17
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0048NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0048NO");
-            try
-            {
-                results.description = "The \"attributes\" attribute for a Notation node "+
-                    "should be set to null.";
-                //
-                // Get the targeted data.
-                //
-                testNode = util.getNotation("notation1");
-                //
-                // The "attributes" attribute should be set to null.
-                //
-                computedValue = testNode.Attributes;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0048NO --------------------------
-        //
-        //------------------------- test case core-0049NO -----------------------------
-        //
-        // Testing feature - The "parentNode" attribute contains the parent of 
-        //                   this node.
-        //
-        // Testing approach - Retrieve the second employee and examine its
-        //                    "parentNode" attribute.  It should be set
-        //                    to "staff".
-        //
-        // Semantic Requirements: 18
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0049NO()
-        {
-            string computedValue = "";
-            string expectedValue = "staff";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode testNodeParent = null;
-
-            testResults results = new testResults("Core0049NO");
-            try
-            {
-                results.description = "The parentNode attribute contains the parent "+
-                    "node of this node.";
-                //
-                // Retrieve the targeted data and access its parent node.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                testNodeParent = testNode.ParentNode; //.node.
-                //
-                // The nodeName attribute should be "staff".
-                //
-                computedValue = testNodeParent.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            //  Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0049NO --------------------------
-        //
-        //------------------------- test case core-0050NO -----------------------------
-        //
-        // Testing feature - The "parentNode" attribute of a node that has just 
-        //                   been created and not yet added to the tree is null.
-        //
-        // Testing approach - Create a new "employee" Element node using the 
-        //                    "createElement(name)" method from the Document
-        //                    interface.  Since this new node has not yet been
-        //                    added to the tree, its parentNode attribute should
-        //                    be null.
-        //
-        // Semantic Requirements: 19
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0050NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0050NO");
-
-            results.description = "The parentNode attribute of a node that has just "+
-                "been created, but not yet added to the tree is "+
-                "null.";
-            //
-            // Create new node and access its parentNode attribute.
-            //
-            testNode = util.createNode(util.ELEMENT_NODE,"employee");
-            computedValue = testNode.ParentNode;
-            //
-            //  Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0050NO --------------------------
-        //
-        //------------------------- test case core-0051NO -----------------------------
-        //
-        // Testing feature - The "parentNode" attribute of a node that has been 
-        //                   been removed from the tree is null.
-        //
-        // Testing approach - Remove the first employee by invoking the 
-        //                    "removeChild(oldChild)" method and examine its 
-        //                    parentNode attribute.  It should be set to null.
-        //
-        // Semantic Requirements: 20 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0051NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode removedNode = null;
-
-            testResults results = new testResults("Core0051NO");
-
-            results.description = "The parentNode attribute of a node that has "+
-                "been removed from the tree is null.";
-            //
-            // Remove the targeted data and access its parentNode attribute.
-            //
-            testNode = util.nodeObject(util.FIRST,-1);
-            removedNode = util.getRootNode().RemoveChild(testNode);//.node
-            computedValue = removedNode.ParentNode;
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0051NO --------------------------
-        //
-        //------------------------- test case core-0052NO -----------------------------
-        //
-        // Testing feature - The "childNodes" attribute of a node contains a 
-        //                   NodeList of all the children of this node.
-        //
-        // Testing approach - Retrieve the second employee and examine its 
-        //                    childNodes attribute.  It should be NodeList
-        //                    containing all of its children.  The length of 
-        //                    the list should be 9.
-        //
-        // Semantic Requirements: 21 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0052NO()
-        {
-            int computedValue = 0;
-            int expectedValue = 6;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNodeList nodeList = null;
-
-            testResults results = new testResults("Core0052NO");
-
-            results.description = "The childNodes attribute of a node contains a "+
-                "NodeList of all the children of this node.";
-            //
-            // Retrieve targeted data and examine the list length.
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            nodeList = testNode.ChildNodes;//.node.
-            computedValue = nodeList.Count;
-            //
-            //  Write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0052NO --------------------------
-        //
-        //------------------------- test case core-0053NO -----------------------------
-        //
-        // Testing feature - If a node has no children then the NodeList returned
-        //                   by its childNodes attribute has no nodes.
-        //
-        // Testing approach - Retrieve the textual data from the first child of 
-        //                    of the second employee and examine its childNodes 
-        //                    attribute.  It should be NodeList with no nodes 
-        //                    in it.
-        //
-        // Semantic Requirements: 22
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0053NO()
-        {
-            string computedValue = "";
-            string expectedValue = "0";
-            string testName = "core-0053NO";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNodeList noChildNode = null;
-
-            testResults results = new testResults("Core0053NO");
-            try
-            {
-                results.description = "If a node has no child nodes then the NodeList "+
-                    "returned by its childNodes attribute has no "+
-                    "nodes."; 
-                //
-                // Retrieve the targeted data and access its childNodes attribute.
-                //
-                testNode = util.nodeObject(util.SECOND,util.FIRST);
-                noChildNode = testNode.FirstChild.ChildNodes;//.node.
-                computedValue = noChildNode.Count.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            //  Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0053NO --------------------------
-        //
-        //------------------------- test case core-0054NO -----------------------------
-        //
-        // Testing feature - The NodeList returned by the childNodes attribute is live.
-        //                   Changes on the node's children are immediately reflected
-        //                   on the nodes returned by the NodeList.
-        //
-        // Testing approach -  Create a NodeList of the children of the second employee 
-        //                     and then add a newly created element (created with the 
-        //                     "createElement" method from the Document interface) to 
-        //                     the second employee by using the "append" method.  The
-        //                     length attribute of the NodeList should reflect this new
-        //                     addition to the child list.  It should now return the
-        //                     value 7.
-        // 
-        // Semantic Requirements: 23
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0054NO()
-        {
-            int computedValue = 0;
-            int expectedValue = 7;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNodeList nodeList = null;
-
-            testResults results = new testResults("Core0054NO");
-
-            results.description = "The NodeList returned by the childNodes attribute "+
-                "is live.  Changes in the children node are "+
-                "immediately reflected in the NodeList.";
-            //   
-            // Retrieve the targeted data and append a new Element node to it.
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            nodeList = testNode.ChildNodes;//.node.
-            testNode.AppendChild(util.createNode(util.ELEMENT_NODE,"text3"));//.node.
-            computedValue = nodeList.Count;
-            //
-            //  Write out results.
-            //
-            results.expected = expectedValue.ToString();
-            results.actual = computedValue.ToString();
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0054NO --------------------------
-        //
-        //------------------------- test case core-0055NO -----------------------------
-        //
-        // Testing feature - The firstChild attribute contains the first child of this
-        //                   node.
-        //
-        // Testing approach - Retrieve the second employee and examine its firstChild
-        //                    attribute.  It should be set to a node whose tag name
-        //                    "employeeId".
-        //
-        // Semantic Requirements: 24
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0055NO()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode firstChildNode = null;
-
-            testResults results = new testResults("Core0055NO");
-
-            results.description = "The firstChild attribute contains the first "+
-                "child of this node.";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            firstChildNode = testNode.FirstChild;//.node.
-            //
-            // Its firstChild attribute's tagName should be "employeeId".
-            //
-            computedValue = firstChildNode.Name;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0055NO --------------------------
-        //
-        //------------------------- test case core-0056NO -----------------------------
-        //
-        // Testing feature - If there is no first child then the firstChild attribute 
-        //                   returns null.
-        //
-        // Testing approach - Retrieve the Text node from the first child of the first 
-        //                    employee and examine its firstChild attribute.  It 
-        //                    should be set to null.
-        //
-        // Semantic Requirements: 25
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0056NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode noChildNode = null;
-
-            testResults results = new testResults("Core0056NO");
-            try
-            {
-                results.description = "If a node does not have a first child then its "+
-                    "firstChild attribute returns null.";
-                //
-                // Get the targeted data.
-                //
-                testNode = util.nodeObject(util.FIRST,util.FIRST);
-                noChildNode = testNode.FirstChild;//.node.
-                //
-                //  Its firstChild attribute should be equal to null.
-                //
-                computedValue = noChildNode.FirstChild;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0056NO --------------------------
-        //
-        //------------------------- test case core-0057NO -----------------------------
-        //
-        // Testing feature - The lastChild attribute contains the last child of this
-        //                   node.
-        //
-        // Testing approach - Retrieve the second employee and examine its lastChild
-        //                    attribute.  It should be set to a node whose tag name
-        //                    is "address".
-        //
-        // Semantic Requirements: 26
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0057NO()
-        {
-            string computedValue = "";
-            string expectedValue = "address";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode lastChildNode = null;
-
-            testResults results = new testResults("Core0057NO"); 
-
-            results.description = "The lastChild attribute contains the last "+
-                "child of this node.";
-            //
-            // Retrieve the targeted data and access its lastChild attribute.
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            //
-            // Its lastChild attribute should be equal to a node with tag name = "address".
-            //
-            lastChildNode = testNode.LastChild;//.node.
-            computedValue = lastChildNode.Name;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0057NO --------------------------
-        //
-        //------------------------- test case core-0058NO -----------------------------
-        //
-        // Testing feature - If there is no last child then the lastChild attribute
-        //                   returns null.
-        //
-        // Testing approach - Retrieve the Text node inside the first child of the 
-        //                    second employee and examine its lastChild attribute.  
-        //                    It should be set to null.
-        //
-        // Semantic Requirements: 27
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0058NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode noChildNode = null;
-
-            testResults results = new testResults("Core0058NO");
-            try
-            {
-                results.description = "If a node does not have a last child then its "+
-                    "lastChild attribute returns null.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.FIRST);
-                noChildNode = testNode.FirstChild;//.node.
-                //
-                // Its lastChild attribute should be equal to null.
-                //
-                computedValue = noChildNode.LastChild;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0058NO --------------------------
-        //
-        //------------------------- test case core-0059NO -----------------------------
-        //
-        // Testing feature - The previousSibling attribute contains the node 
-        //                   immediately preceding this node.
-        //
-        // Testing approach - Retrieve the second child of the second employee and 
-        //                    examine its previousSibling attribute.  It should be set 
-        //                    to a node whose tag name is "employeeId".
-        //
-        // Semantic Requirements: 28 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0059NO()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode itsPreviousSibling = null;
-
-            testResults results = new testResults("Core0059NO");
-            try
-            {
-                results.description = "The previousSibling attribute contains the node "+
-                    "immediately preceding this node.";
-                //
-                // Retrieve the targeted data and accesss its previousiSibling attribute.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SECOND);
-                itsPreviousSibling = testNode.PreviousSibling;//.node.
-                //
-                // Its previousSibling attribute should have a tag name = "employeeId".
-                //
-                computedValue = itsPreviousSibling.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0059NO --------------------------
-        //
-        //------------------------- test case core-0060NO -----------------------------
-        //
-        // Testing feature - If there is no immediately preceding node then the 
-        //                   previousSibling attribute returns null.
-        //
-        // Testing approach - Retrieve the first child of the of the second employee
-        //                    employee and examine its previousSibling attribute.  
-        //                    It should be set to null.
-        //
-        // Semantic Requirements: 29
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0060NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0060NO");
-            try
-            {
-                results.description = "If there is no node immediately preceding this "+
-                    "node then the previousSibling attribute returns "+
-                    "null.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.FIRST);
-                //
-                // Its previousSibling attribute should be equal to null.
-                //
-                computedValue = testNode.PreviousSibling;//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0060NO --------------------------
-        //
-        //------------------------- test case core-0061NO -----------------------------
-        //
-        // Testing feature - The nextSibling attribute contains the node
-        //                   immediately following this node.
-        //
-        // Testing approach - Retrieve the first child of the second employee and
-        //                    examine its nextSibling attribute.  It should be set
-        //                    to a node whose tag name is "name".
-        //
-        // Semantic Requirements: 30 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0061NO()
-        {
-            string computedValue = "";
-            string expectedValue = "name";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode itsNextSibling = null;
-
-            testResults results = new testResults("Core0061NO");
-            try
-            {
-                results.description = "The nextSibling attribute contains the node "+
-                    "immediately following this node.";
-                //
-                // Retrieve the targeted data and access its nextSibling attribute.
-                //
-                testNode = util.nodeObject(util.SECOND,util.FIRST);
-                itsNextSibling = testNode.NextSibling;//.node.
-                //
-                // Its nextSibling attribute should be a node with tag name = "name".
-                //
-                computedValue = itsNextSibling.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0061NO --------------------------
-        //
-        //------------------------- test case core-0062NO -----------------------------
-        //
-        // Testing feature - If there is no node immediately following this node 
-        //                   then the nextSibling attribute returns null.
-        //
-        // Testing approach - Retrieve the last child of the second employee
-        //                    and examine its nextSibling attribute.  It should 
-        //                    be set to null.
-        //
-        // Semantic Requirements: 31 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0062NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0062NO");
-            try
-            {
-                results.description = "If there is no node immediately following this "+
-                    "node then the nextSibling attribute returns null.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                //
-                // Its NextSibling attribute should be equal to null.
-                //
-                computedValue = testNode.NextSibling;//.node.
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            //  Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0062NO --------------------------
-        //
-        //------------------------- test case core-0063NO -----------------------------
-        //
-        // Testing feature - The ownerDocument attribute contains the Document 
-        //                   associated with this node.
-        //
-        // Testing approach - Retrieve the second employee and examine its
-        //                    ownerDocument attribute.  It should contain a
-        //                    document whose documentElement attribute is equal
-        //                    to "staff".
-        //
-        // Semantic Requirements: 32
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0063NO()
-        {
-            string computedValue = "";
-            string expectedValue = "staff";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlDocument ownerDoc = null;
-
-            testResults results = new testResults("Core0063NO");
-
-            results.description = "The ownerDocument attribute contains the Document "+
-                "associated with this node.";
-            //
-            // Retrieve the targeted data and access its ownerDocument attribute.
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            ownerDoc = testNode.OwnerDocument;//.node.
-            //
-            // the nodeName of its root node should be "staff"; 
-            //
-            computedValue = ownerDoc.DocumentElement.Name;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0063NO --------------------------
-        //
-        //------------------------- test case core-0064NO -----------------------------
-        //
-        // Testing feature - The ownerDocument attribute returns null if the
-        //                   target node is itself a Document. 
-        //
-        // Testing approach - Retrieve the master document by invoking the 
-        //                    "getDOMDocument()" method then examine the
-        //                    ownerDocument attribute of the returned object.
-        //                    It should be null.
-        //
-        // Semantic Requirements: 33
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0064NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0064NO");
-
-            results.description = "The ownerDocument attribute returns null if the "+
-                "target node is itself a Document.";
-            //
-            // Retrieve the targeted data.
-            //
-            testNode = util.getDOMDocument();
-            //
-            //  Its ownerDocument attribute should be null. 
-            //
-            computedValue = testNode.OwnerDocument;
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0064NO --------------------------
-        //
-        //------------------------- test case core-0065NO -----------------------------
-        //
-        // Testing feature - The insertBefore(newChild,refChild) method inserts the
-        //                   node newChild before the node refChild. 
-        //
-        // Testing approach - Insert a newly created Element node before the fourth 
-        //                    child of the second employee and examine the new child
-        //                    and the reference child after the insertion for correct
-        //                    placement.  
-        //
-        // Semantic Requirements: 34
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0065NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild salary";
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlElement newChild = null;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0065NO");
-            try
-            {
-                results.description = "The insertBefore(newChild,refChild) method inserts "+
-                    "the node newChild before the node refChild.";
-                //
-                // Retrieve targeted data, create a new Element node to insert, define the 
-                // reference node, and insert the newly created element.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                refChild = util.nodeObject(util.SECOND,util.FOURTH);
-                newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
-                testNode.InsertBefore(newChild, refChild);//.node.
-                //
-                // Check that each node is in the proper position.
-                //
-                computedValue += util.getSubNodes(testNode).Item(util.FOURTH).Name+" ";
-                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0065NO --------------------------
-        //
-        //------------------------- test case core-0066NO -----------------------------
-        //
-        // Testing feature - If the refChild is null then the 
-        //                   insertBefore(newChild,refChild) method inserts the
-        //                   node newChild at the end of the list of children.
-        //
-        // Testing approach - Retrieve the second employee and invoke the the 
-        //                    insertBefore(newChild,refChild) method with 
-        //                    refChild = null.  Under these conditions the
-        //                    newChild should be added at the end of the list.
-        //                    The last item in the list is examined after the 
-        //                    insertion.  The last Element node of the list 
-        //                    should be "newChild".
-        //
-        // Semantic Requirements: 35
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0066NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild";
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0066NO");
-
-            results.description = "If refChild is null then the insertBefore("+
-                "newChild,refChild) method inserts the node "+
-                "newChild at the end of the list.";
-            //
-            // Retrieve targeted data, create a new Element node to insert, define 
-            // the reference node and insert the newly created element
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            newChild = util.createNode(util.ELEMENT_NODE,"newChild");
-            testNode.InsertBefore(newChild, refChild);//.node.
-            //
-            // Retrieve the node at the end of the list.
-            //
-            computedValue = testNode.LastChild.Name;//.node.
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0066NO --------------------------
-        //
-        //------------------------- test case core-0067NO -----------------------------
-        //
-        // Testing feature - If the refChild is a DocumentFragment object then all
-        //                   its children are inserted in the same order before
-        //                   the refChild. 
-        //
-        // Testing approach - Create a DocumentFragment object and populate it with
-        //                    two element nodes.  Retrieve the second employee
-        //                    and insert the newly created DocumentFragment before
-        //                    its fourth child.  The second employee should now
-        //                    have two extra children ("childNode1" and "childNode2")
-        //                    at positions fourth and fifth respectively.
-        //
-        // Semantic Requirements: 36
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0067NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild1 newChild2";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlDocumentFragment newDocFragment = util.getDOMDocument().CreateDocumentFragment();
-
-            testResults results = new testResults("Core0067NO");
-            try
-            {
-                results.description = "If newChild is a DocumentFragment object, then all "+
-                    "its children are inserted in the same order before "+
-                    "the refChild node.";
-                //
-                // Populate the DocumentFragment object.
-                //
-                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild1"));
-                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild2"));
-                //
-                // Retrieve targeted data, define reference node and insert new child.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                refChild = util.nodeObject(util.SECOND,util.FOURTH);
-                testNode.InsertBefore(newDocFragment,refChild);//.node.
-                //
-                // Check that all the new nodes are in the proper position.
-                //
-                computedValue += util.getSubNodes(testNode).Item(util.FOURTH).Name+" ";
-                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name; 
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0067NO --------------------------
-        //
-        //------------------------- test case core-0068NO -----------------------------
-        //
-        // Testing feature - The insertBefore(newChild,refChild) method returns the
-        //                   node being inserted.
-        //
-        // Testing approach - Insert an Element node before the fourth child
-        //                    of the second employee and examine the returned
-        //                    node from the method.  The node Element node 
-        //                    returned by the method should be "newChild".
-        //
-        // Semantic Requirements: 37
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0068NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlNode insertedNode = null;
-
-            testResults results = new testResults("Core0068NO");
-            try
-            {
-                results.description = "The insertBefore(newChild,refChild) method returns "+
-                    "the node being inserted.";
-                //
-                // Retrieve targeted data, define reference and new child nodes and insert
-                // new child.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                refChild = util.nodeObject(util.SECOND,util.FOURTH);
-                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
-                insertedNode = testNode.InsertBefore(newChild,refChild);//.node.
-                //
-                // the returned node should have a nodeName = "newChild" 
-                //
-                computedValue = insertedNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0068NO --------------------------
-        //
-        //------------------------- test case core-0069NO -----------------------------
-        //
-        // Testing feature - If the newChild is already in the tree, The 
-        //                   insertBefore(newChild,refChild) method first
-        //                   remove it before the insertion takes place.
-        //
-        // Testing approach - Insert a node element (employeeId tag) that is already 
-        //                    present in the tree.  The existing node should be
-        //                    remove first and the new one inserted.  The node is
-        //                    inserted at a different position in the tree to assure
-        //                    that it was indeed inserted.
-        //
-        // Semantic Requirements: 38
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0069NO()
-        {
-            string computedValue = "";
-            string expectedValue = "name employeeId";
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0069NO");
-            try
-            {
-                results.description = "If newChild is already in the tree, it is first "+
-                    "removed before the insertion (from insertBefore"+
-                    "(newChild,refChild) method) takes place.";
-                //
-                // Retrieve targeted data, define reference and new child and insert the
-                // new child.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                newChild = util.nodeObject(util.SECOND,util.FIRST);
-                refChild = util.nodeObject(util.SECOND,util.SIXTH);
-                testNode.InsertBefore(newChild,refChild);//.node.
-                //
-                // the newChild should now be the previous to the last item and the
-                // first child should be one that used to be at the second position.
-                //
-                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
-                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0069NO --------------------------
-        //
-        //------------------------- test case core-0070NO -----------------------------
-        //
-        // Testing feature - The replaceChild(newChild,oldChild) method replaces 
-        //                   the node oldChild with the node newChild.
-        //
-        // Testing approach - Replace the first element of the second employee
-        //                    with a newly created node element and examine the
-        //                    first position after the replacement operation is
-        //                    done.  The new element should be "newChild". 
-        //
-        // Semantic Requirements: 39
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0070NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlNode oldChild = null;
-
-            testResults results = new testResults("Core0070NO");
-            try
-            {
-                results.description = "The replaceChild(newChild,oldChild) method "+
-                    "replaces the node oldChild with the node newChild";
-                //
-                // Create a new Element node to replace, define the node to be
-                // replaced and replace it.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                oldChild = util.nodeObject(util.SECOND,util.FIRST);
-                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
-                testNode.ReplaceChild(newChild,oldChild);//.node.
-                //
-                // Check that the first position contains the new node.
-                //
-                computedValue = util.getSubNodes(testNode).Item(util.FIRST).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0070NO ------------------------
-        //
-        //------------------------- test case core-0071NO ---------------------------
-        //
-        // Testing feature - If the newChild is already in the tree, it is
-        //                   first removed before the new one is added 
-        //
-        // Testing approach - Retrieve the second employee and replace its last child
-        //                    with its first child.  After the replacement operation
-        //                    The first child should now be the one that used to be at 
-        //                    the second position in the list and the last one should
-        //                    be the one that used to be at the first position.
-        //
-        // Semantic Requirements: 40 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0071NO()
-        {
-            string computedValue = "";
-            string expectedValue = "name employeeId";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlNode oldChild = null;
-            System.Xml.XmlNode newChild = null;
-
-            testResults results = new testResults("Core0071NO");
-            try
-            {
-                results.description = "If newChild is already in the tree, it is first "+
-                    "removed before the replace(from replaceChild"+
-                    "(newChild,oldChild) method) takes place.";
-                //
-                // Retrieve targeted data, identify new and old children and replace
-                // last child with the new child.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                newChild = util.nodeObject(util.SECOND,util.FIRST);
-                oldChild = util.nodeObject(util.SECOND,util.SIXTH);
-                testNode.ReplaceChild(newChild,oldChild);//.node.
-                //
-                // The first item in the list should be the one that used to be at the
-                // second position and the last one should be the one that used to be at
-                // the first position in the list.
-                //
-                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
-                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0071NO --------------------------
-        //
-        //------------------------- test case core-0072NO -----------------------------
-        //
-        // Testing feature - The replaceChild(newChild,oldChild) method returns
-        //                   the node being replaced.
-        //
-        // Testing approach - Replace the first element of the second employee
-        //                    with a newly created node element and examine the
-        //                    the value returned by the replaceChild(newChild,oldChild)
-        //                    after the replacement operation is done.  The returned 
-        //                    node should have a nodeName equal to "employeeId".
-        //
-        // Semantic Requirements: 41 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0072NO()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode oldChild = null;
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlNode replacedNode = null;
-
-            testResults results = new testResults("Core0072NO");
-            try
-            {
-                results.description = "The replaceChild(newChild,oldChild) method returns "+
-                    "the node being replaced.";
-                //
-                // Retrieve the targeted data, define new and old children and replace
-                // old child with new child.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                oldChild = util.nodeObject(util.SECOND,util.FIRST);
-                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
-                replacedNode = testNode.ReplaceChild(newChild, oldChild);//.node.
-                //
-                // The returned node should be the one being replaced.
-                //
-                computedValue = replacedNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0072NO --------------------------
-        //
-        //------------------------- test case core-0073NO -----------------------------
-        //
-        // Testing feature - The removeChild(oldChild) method removes the node
-        //                   indicated by oldChild.
-        //
-        // Testing approach - Retrieve the second employee and remove its first
-        //                    child. After the removal operation takes place, the
-        //                    second employee should have 5 children and the first
-        //                    one should be the one that used to be at the second
-        //                    position in the list.
-        //
-        // Semantic Requirements: 42 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0073NO()
-        {
-            string computedValue = "";
-            string expectedValue = "name 5";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlNode oldChild = null;
-
-            testResults results = new testResults("Core0073NO");
-            try
-            {
-                results.description = "The removeChild(oldChild) method removes the "+
-                    "node indicated by oldChild.";
-                //
-                // Retrieve targeted data, identify old child and remove it from the
-                // list of children.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                oldChild = util.nodeObject(util.SECOND,util.FIRST);  
-                testNode.RemoveChild(oldChild);//.node.
-                //
-                // Check that the node was indeed removed from the list.
-                //
-                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
-                computedValue += util.getSubNodes(testNode).Count;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0073NO --------------------------
-        //
-        //------------------------- test case core-0074NO -----------------------------
-        //
-        // Testing feature - The removeChild(oldChild) method returns the node
-        //                   removed.
-        //
-        // Testing approach - Remove the first element of the second employee
-        //                    and examine the value returned by the 
-        //                    removeChild(oldChild) after removal operation is 
-        //                    done.  The returned node should have a tag name equal
-        //                    to "employeeId".
-        //
-        // Semantic Requirements: 43
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0074NO()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode oldChild = null;
-            System.Xml.XmlNode removedNode = null;
-
-            testResults results = new testResults("Core0074NO");
-            try
-            {
-                results.description = "The removeChild(oldChild) method returns the "+
-                    "node removed.";
-                //
-                // Retrieve the targeted data and remove it.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                oldChild = util.nodeObject(util.SECOND,util.FIRST);
-                removedNode = testNode.RemoveChild(oldChild);//.node.
-                //
-                // The returned node should be the node removed.
-                //
-                computedValue = removedNode.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0074NO --------------------------
-        //
-        //------------------------- test case core-0075NO -----------------------------
-        //
-        // Testing feature - The appendChild(newChild) method adds the node newChild 
-        //                   the end of the list of children of the node.
-        //
-        // Testing approach - Retrieve the second employee and append a new Element 
-        //                    node to its list of children.  The last node in the
-        //                    list is then retrieved and its nodeName attribute
-        //                    examined.  It should be equal to "newChild". 
-        //
-        // Semantic Requirements: 44 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0075NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlNode newChild = null;
-
-            testResults results = new testResults("Core0075NO");
-            try
-            {
-                results.description = "The appendChild(newChild) method adds the node "+
-                    "newChild to the end of the list of children of "+
-                    "the node.";
-                //
-                // Create a new Element node and append it to the end of the list.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
-                testNode.AppendChild(newChild);//.node.
-                //
-                // Retrieve the new last child.
-                //
-                computedValue = util.getSubNodes(testNode).Item(util.SEVENTH).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0075NO ------------------------
-        //
-        //------------------------- test case core-0076NO ---------------------------
-        //
-        // Testing feature - If the newChild is already in the tree, it is first 
-        //                   removed before the new one is appended.
-        //
-        // Testing approach - Retrieve the second employee and its first child, then 
-        //                    append the first child to the end of the list.  After
-        //                    the append operation is done, retrieve the element at
-        //                    at the top of the list and the one at the end of the 
-        //                    list.  The last node should be the one that used to be
-        //                    at the top of the list and the first one should be the
-        //                    one that used to be second in the list.
-        //
-        // Semantic Requirements: 45
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0076NO()
-        {
-            string computedValue = "";
-            string expectedValue = "name employeeId";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlNode newChild = null;
-
-            testResults results = new testResults("Core0076NO");
-            try
-            {
-                results.description = "If newChild is already in the tree, it is first " + "removed before the append takes place.";
-                //
-                // Retrieve targeted data, define the new child and append it to the
-                // end of the list.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                newChild = util.nodeObject(util.SECOND,util.FIRST);
-                testNode.AppendChild(newChild);//.node.
-                //
-                // Access the relevant new nodes and its nodeName attributes.
-                //
-                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
-                computedValue += util.getSubNodes(testNode).Item(util.SIXTH).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0076NO --------------------------
-        //
-        //------------------------- test case core-0077NO -----------------------------
-        //
-        // Testing feature - If the newChild is a DocumentFragment object then all
-        //                   its content is added to the child list of this node.
-        //
-        // Testing approach - Create and populate a new DocumentFragment object and
-        //                    append it to the second employee.  After the append
-        //                    operation is done then retrieve the new nodes at the
-        //                    end of the list, they should be the two Element nodes
-        //                    from the DocumentFragment.
-        //
-        // Semantic Requirements: 46
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0077NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild1 newChild2";
-            System.Xml.XmlElement testNode = null;
-            System.Xml.XmlDocumentFragment newDocFragment = util.getDOMDocument().CreateDocumentFragment();
-
-            testResults results = new testResults("Core0077NO");
-            try
-            {
-                results.description = "If newChild is a DocumentFragment object, then the "+
-                    "entire content of the DocumentFragment is appended "+
-                    "to the child list of this node.";
-                //
-                // Populate the DocumentFragment object.
-                //
-                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild1"));
-                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild2"));
-                //
-                // Retrieve targeted data and append new DocumentFragment object. 
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                testNode.AppendChild(newDocFragment);//.node.
-                //
-                // Retrieve all the new nodes from the proper position.
-                //
-                computedValue += util.getSubNodes(testNode).Item(util.SEVENTH).Name+" ";
-                computedValue += util.getSubNodes(testNode).Item(util.EIGHT).Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0077NO --------------------------
-        //
-        //------------------------- test case core-0078NO -----------------------------
-        //
-        // Testing feature - The appendChild(newChild) method returns the node
-        //                   added.
-        //
-        // Testing approach - Append a newly created node to the child list of the 
-        //                    second employee and examine the returned value
-        //                    The returned value should be "newChild".
-        //
-        // Semantic Requirements: 47
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0078NO()
-        {
-            string computedValue = "";
-            string expectedValue = "newChild";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode appendedNode = null;
-            System.Xml.XmlNode newChild = null;
-
-            testResults results = new testResults("Core0078NO");
-
-            results.description = "The appendChild(newChild) method returns the node "+
-                "added.";
-            //
-            // Retrieve the targeted data and append a new node to it.
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            newChild = util.createNode(util.ELEMENT_NODE,"newChild");
-            appendedNode = testNode.AppendChild(newChild);//.node.
-            //
-            // The returned node should be the node appended.
-            //
-            computedValue = appendedNode.Name;
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0078NO --------------------------
-        //
-        //------------------------- test case core-0079NO -----------------------------
-        //
-        // Testing feature - The hasChildNodes method returns true if the node has
-        //                   any children. 
-        //
-        // Testing approach - Retrieve the root node (tag name = "staff") and
-        //                    invoke its hasChildNodes.Item() method.  It should return
-        //                    the value true.
-        //
-        // Semantic Requirements: 48
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0079NO()
-        {
-            string computedValue = "";
-            string expectedValue = "True";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0079NO");
-
-            results.description = "The hasChildNodes method returns true if the "+
-                "node has any children.";
-            //
-            // Retrieve the targeted data and access its hasChilNodes method.
-            //
-            testNode = util.nodeObject(util.SECOND,-1);
-            computedValue = testNode.HasChildNodes.ToString();//.Item();//.node.
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0079NO --------------------------
-        //
-        //------------------------- test case core-0080NO -----------------------------
-        //
-        // Testing feature - The hasChildNodes method returns false if the node has
-        //                   no children.
-        //
-        // Testing approach - Retrieve the Text node inside the first child of the
-        //                    second employee and invoke its hasChildNodes.Item() method.  
-        //                    It should return the value false as this node has no
-        //                    children.
-        //
-        // Semantic Requirements: 49
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0080NO()
-        {
-            string computedValue = "";
-            string expectedValue = "False";
-            System.Xml.XmlNode testNode = null;
-
-            testResults results = new testResults("Core0080NO");
-            try
-            {
-                results.description = "The hasChildNodes method returns false if the "+
-                    "node has no children.";
-                //
-                // Retrieve the targeted data and access its hasChildNodes method.
-                //
-                testNode = util.nodeObject(util.SECOND,util.FIRST);
-                System.Xml.XmlNode textNode = testNode.FirstChild;//.node.
-                computedValue = textNode.HasChildNodes.ToString();//.Item();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0080NO --------------------------
-        //
-        //------------------------- test case core-0081NO -----------------------------
-        //
-        // Testing feature - The cloneNode(deep) method returns a copy of the node only
-        //                   if deep = false.
-        //
-        // Testing approach - Retrieve the second employee and invoke its 
-        //                    cloneNode(deep) method with deep = false.  The
-        //                    method should clone this node only.  The nodeName,
-        //                    and length of the childNode list are checked, 
-        //                    they should be "employee" and 0.
-        //
-        // Semantic Requirements: 50 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0081NO()
-        {
-            string computedValue = "";
-            string expectedValue = "employee 0";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode clonedNode = null;
-
-            testResults results = new testResults("Core0081NO");
-            try
-            {
-                results.description = "The cloneNode(deep) method returns a copy of this "+
-                    "node only if deep = false.";
-                //
-                // Retrieve the targeted data and access its cloneNode method.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                clonedNode = testNode.CloneNode(false);//.node.
-                //
-                // Retrieve values of the cloned node.
-                //      
-                computedValue += clonedNode.Name+" ";
-                computedValue += clonedNode.ChildNodes.Count; 
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0081NO --------------------------
-        //
-        //------------------------- test case core-0082NO -----------------------------
-        //
-        // Testing feature - The cloneNode(deep) method returns a copy of the node and 
-        //                   the subtree under it if deep = true.
-        //
-        // Testing approach - Retrieve the second employee and invoke its
-        //                    cloneNode(deep) method with deep = true.  The
-        //                    method should clone this node and the subtree under
-        //                    it.  The tag name of each child of the returned
-        //                    node is checked to insure the entire subtree under
-        //                    the second employee was cloned.  
-        //
-        // Semantic Requirements: 51
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0082NO()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId name position salary gender address ";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNodeList subTree = null;
-            System.Xml.XmlNode clonedNode = null;
-
-            testResults results = new testResults("Core0082NO");
-            try
-            {
-                results.description = "The cloneNode(deep) method returns a copy of this "+
-                    "node and the subtree under it if deep = true.";
-                //
-                // Retrieve the targeted data and invoke its cloneNode method.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                clonedNode = testNode.CloneNode(true);//.node.
-                subTree = clonedNode.ChildNodes;
-                //
-                // Retrieve the cloned node children.
-                //
-                for (int index = 0;index < subTree.Count; index++) 
-                    computedValue += subTree.Item(index).Name+" ";
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0082NO --------------------------
-        //
-        //------------------------- test case core-0083NO -----------------------------
-        //
-        // Testing feature - The duplicate node returned by the cloneNode(deep) method 
-        //                   has no parent (parentNode = null).
-        //
-        // Testing approach - Retrieve the second employee and invoke its
-        //                    cloneNode(deep) method with deep = false.  The
-        //                    duplicate node returned by the method should have its 
-        //                    parentNode attribute set to null.
-        //
-        // Semantic Requirements: 52
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0083NO()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode clonedNode = null;
-
-            testResults results = new testResults("Core0083NO");
-            try
-            {
-                results.description = "The duplicate node returned by the cloneNode(deep) "+
-                    "method has no parent (parentNode = null).";
-                //
-                // Retrieve the targeted data and invoke the cloneNode method.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                clonedNode = testNode.CloneNode(false);//.node.
-                //
-                // Its parentNode attribute should be null.
-                //
-                computedValue = clonedNode.ParentNode;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0083NO --------------------------
-        //
-        //------------------------- test case core-0084NO -----------------------------
-        //
-        // Testing feature - The cloneNode(deep) method does not copy text unless it is
-        //                   deep cloned. (test for deep clone = false)
-        //
-        // Testing approach - Retrieve the fourth child of the second employee and 
-        //                    invoke its cloneNode(deep) method with deep = false.  The
-        //                    duplicate node returned by the method should not copy any
-        //                    text data contained in this node. 
-        //
-        // Semantic Requirements: 53
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0084NO()
-        {
-            string testName = "core-0084NO";
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode clonedNode = null;
-
-            testResults results = new testResults("Core0084NO");
-            try
-            {
-                results.description = "The cloneNode(deep) method does not copy any text "+
-                    "unless it is deep cloned(deep = false).";
-                //
-                // Retrieve the targeted data and invoke its clonedNode method.
-                //
-                testNode = util.nodeObject(util.SECOND,util.FOURTH);
-                clonedNode = testNode.CloneNode(false);//.node.
-                //
-                // The cloned node should have no text data in it.
-                //
-                computedValue = clonedNode.LastChild;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            //  Write out results.
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0084NO --------------------------
-        //
-        //------------------------- test case core-0085NO -----------------------------
-        //
-        // Testing feature - The cloneNode(deep) method does not copy text unless it is
-        //                   deep cloned. (test for deep clone = true)
-        //
-        // Testing approach - Retrieve the fourth child of the second employee and
-        //                    invoke its cloneNode(deep) method with deep = true.  The
-        //                    duplicate node returned by the method should copy any
-        //                    text data contained in this node.
-        //
-        // Semantic Requirements: 53
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0085NO()
-        {
-            string computedValue = "";
-            string expectedValue = "35,000";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode clonedNode = null;
-
-            testResults results = new testResults("Core0085NO");
-            try
-            {
-                results.description = "The cloneNode(deep) method does not copy any text "+
-                    "unless it is deep cloned(deep = true).";
-                //
-                // Retrieve the targeted data and invoke its cloneNode method.
-                //
-                testNode = util.nodeObject(util.SECOND,util.FOURTH);
-                clonedNode = testNode.CloneNode(true);//.node.
-                //
-                // Retrieve the text data inside the cloned node.
-                //
-                computedValue = clonedNode.LastChild.Value;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0085NO --------------------------
-        //
-        //------------------------- test case core-0086NO -----------------------------
-        //
-        // Testing feature - If the cloneNode(deep) method was used to clone an Element
-        //                   node, all the attributes of the Element are copied (and
-        //                   their values).
-        //
-        // Testing approach - Retrieve the last child of the second employee and
-        //                    invoke its cloneNode(deep) method with deep = true.  The
-        //                    duplicate node returned by the method should copy the
-        //                    attributes associated with this node. 
-        //
-        // Semantic Requirements: 54
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0086NO()
-        {
-            string testName = "core-0086NO";
-            string computedValue = "";
-            string expectedValue = "";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode clonedNode = null;
-
-            testResults results = new testResults("Core0086NO");
-            try
-            {
-                results.description = "If the cloneNode(deep) method was used to clone an "+
-                    "Element node then all the attributes associated "+
-                    "associated with this node are copied too."; 
-                //
-                // Retrieve the targeted data and invoke its cloneNode method.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                clonedNode = testNode.CloneNode(true);//.node.
-                //
-                // Retreive cloned node and its attributes.
-                //
-                computedValue += clonedNode.Attributes.Item(0).Name+" ";
-                computedValue += clonedNode.Attributes.Item(1).Name;
-                //
-                // Determine order of NamedNodeMap items.
-                //
-                if (computedValue.Substring(0,1) == "d" && computedValue.Substring(1,1) == "o")
-                    expectedValue = "domestic street";
-                else
-                    expectedValue = "street domestic";
-            }
-            catch(Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results.
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0086NO --------------------------
-        //
-        //------------------------- test case core-0087NO -----------------------------
-        //
-        // Testing feature - The "nodeValue" attribute of a node raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR DOM exception
-        //                   if the node is readonly. 
-        //
-        // Testing approach - Retrieve the Text node inside the Entity node named 
-        //                    "ent1" and attempt to change its nodeValue attribute.
-        //                    Since the descendants of Entity nodes are readonly, the
-        //                    desired exception should be raised.
-        //
-        // Semantic Requirements: 55 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0087NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlEntity testNode = null;
-            System.Xml.XmlText entityDesc = null;
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0087NO");
-            try
-            {
-                results.description = "The \"Value\" attribute of a node raises a "+
-                    "NO_MODIFICATION_ALLOWED_ERR Exception if the "+
-                    "node is readonly.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.getEntity("ent1");
-                entityDesc = (System.Xml.XmlText)testNode.FirstChild;
-                //
-                // attempt to set a value on a readonly node should raise an exception.
-                //
-                try 
-                {
-                    entityDesc.Value = "ABCD"; 
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0087NO -------------------------
-        //
-        //------------------------- test case core-0088NO -----------------------------
-        //
-        // Testing feature - The "insertBefore" method of a node raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if 
-        //                   the node is readonly.
-        //
-        // Testing approach - Retrieve the first EntityReference inside the second 
-        //                    employee and invoke the insertBefore(newChild,refChild) 
-        //                    method on its first descendant.  Descendants of
-        //                    EntityReference nodes are readonly and therefore the
-        //                    desired exception should be raised.  This test also 
-        //                    makes use of the "createElement" method from the 
-        //                    Document interface.
-        //
-        // Semantic Requirements: 56
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0088NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlEntityReference entityRefNode = null;
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
-            string expectedValue = "System.InvalidOperationException";//util.NO_MODIFICATION_ALLOWED_ERR;
- 
-            testResults results = new testResults("Core0088NO");
-            try
-            {
-                results.description = "The \"insertBefore()\" method of a node raises "+
-                    "a NO_MODIFICATION_ALLOWED_ERR Exception "+
-                    "if this node is readonly.";
-                //
-                // Retrieve targeted data and define reference child.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild;//.node.
-                refChild = entityRefNode.FirstChild;
-                //
-                // Attempt to insert a node to an EntityReference descendant should raise 
-                // an exception.
-                //
-                try 
-                {
-                    entityRefNode.InsertBefore(newChild,refChild);
-                }
-                catch(InvalidOperationException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0088NO -------------------------
-        //
-        //------------------------- test case core-0089NO ----------------------------
-        //
-        // Testing feature - The "replaceChild" method of a node raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if the 
-        //                   node is readonly.
-        //
-        // Testing approach - Retrieve the first EntityReference inside the second
-        //                    employee and invoke the replaceChild(newChild,oldChild)
-        //                    method where oldChild is one of the EntityReference 
-        //                    descendants.  Descendants of EntityReference nodes are 
-        //                    readonly and therefore the desired exception should be 
-        //                    raised.  This test also makes use of the "createElement" 
-        //                    method from the Document interface.
-        //
-        // Semantic Requirements: 57
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0089NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlEntityReference entityRefNode = null;
-            System.Xml.XmlNode oldChild = null;
-            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0089NO");
-            try
-            {
-                results.description =  "The \"replaceChild(newChild, oldChild)\" method "+
-                    "of a node raises a<br>NO_MODIFICATION_ALLOWED_ERR "+
-                    " Exception if this node is readonly.";
-                //
-                // Retrieve targeted data and define oldChild.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild; //.node.
-                oldChild = entityRefNode.FirstChild;
-                //
-                // Attempt to replace a descendant of an EntityReference should raise an
-                // exception.
-                //
-                try 
-                {
-                    entityRefNode.ReplaceChild(newChild,oldChild);
-                }
-                catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0089NO -------------------------
-        //
-        //------------------------- test case core-0090NO ----------------------------
-        //
-        // Testing feature - The "removeChild" method of a node raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if the 
-        //                   node is readonly.
-        //
-        // Testing approach - Retrieve the first EntityReference inside the second
-        //                    employee and invoke its removeChild(oldChild) method
-        //                    where oldChild is one of the EntityReference descendants.
-        //                    Descendants of EntityReference nodes are readonly and
-        //                    therefore the desired exception should be raised. 
-        //
-        // Semantic Requirements: 58
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0090NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlEntityReference entityRefNode = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode oldChild = null;
-            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0090NO");
-            try
-            {
-                results.description = "The \"removeChild(oldChild)\" method of a node "+
-                    "raises NO_MODIFICATION_ALLOWED_ERR Exception "+
-                    "if this node is readonly.";
-                //
-                // Retreive targeted data and define oldChild.
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild;//.node.
-                oldChild = entityRefNode.FirstChild;
-                //
-                // Attempt to remove a descendant of an EntityReference node should
-                // raise an exception.
-                //
-                try 
-                {
-                    entityRefNode.RemoveChild(oldChild);
-                }
-                catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0090NO -------------------------
-        //
-        //------------------------- test case core-0091NO ----------------------------
-        //
-        // Testing feature - The "appendChild" method of a node raises a
-        //                   NO_MODIFICATION_ALLOWED_ERR Exception if 
-        //                   the node is readonly.
-        //
-        // Testing approach - Retrieve the first EntityReference inside the second
-        //                    employee and invoke its append(newChild) method.  
-        //                    Descendants of EntityReference nodes are readonly and
-        //                    therefore attempts to append nodes to such podes  
-        //                    should raise the desired exception.  This test 
-        //                    also makes use of the "createElement" method from
-        //                    the Document interface.
-        //
-        // Semantic Requirements: 59
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
-	public void core0091NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlEntityReference entityRefNode = null;
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
-            string expectedValue = "System.InvalidOperationException";//util.NO_MODIFICATION_ALLOWED_ERR;
-
-            testResults results = new testResults("Core0091NO");
-            try
-            {
-                results.description = "The \"appendChild(newChild)\" method of a node "+
-                    "raises NO_MODIFICATION_ALLOWED_ERR Exception "+
-                    "if this node is readonly.";
-                //
-                // Retrieve targeted data. 
-                //
-                testNode = util.nodeObject(util.SECOND,util.SIXTH);
-                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild;//.node.
-                //
-                // Attempt to append nodes to descendants of EntityReference nodes should 
-                // raise an exception.
-                //
-                try 
-                {
-                    entityRefNode.AppendChild(newChild);
-                }
-				catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0091NO -------------------------
-        //
-        //------------------------- test case core-0092NO -----------------------------
-        //
-        // Testing feature - The "insertBefore()" method of a node raises
-        //                   a System.ArgumentException Exception if this node
-        //                   is of a type that does not allow children of the
-        //                   type of "newChild" to be inserted.
-        //
-        // Testing Approach - Retrieve the root node and attempt to insert a newly 
-        //                    created Attr node.  An Element node can not have
-        //                    children of the "Attr" type, therefore the desired
-        //                    exception should be raised. 
-        //
-        // Semantic Requirements: 60
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0092NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement rootNode = null;
-            System.Xml.XmlAttribute newChild = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
-            System.Xml.XmlNode refChild = null;
-            string expectedValue = "System.InvalidOperationException";
-
-            testResults results = new testResults("Core0092NO");
-            try
-            {
-                results.description = "The \"insertBefore()\" method of a node raises "+
-                    "a System.ArgumentException Exception if this node "+
-                    "does not allow nodes of type of \"newChild\" to be "+
-                    "inserted.";
-                //
-                // Retrieve targeted data.
-                //
-                rootNode = util.getRootNode();
-                refChild = util.nodeObject(util.SECOND,-1);
-                //
-                // Attempt to insert an invalid child should raise an exception.
-                //
-                try 
-                {
-                    rootNode.InsertBefore(newChild,refChild);//.node
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0092NO -------------------------
-        //
-        //------------------------- test case core-0093NO ----------------------------
-        //
-        // Testing feature - The "insertBefore()" method of a node raises
-        //                   a System.ArgumentException Exception if the node
-        //                   to be inserted is one of this node's ancestors.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to insert
-        //                    a node that is one of its ancestors (root node).
-        //                    An attempt to insert such a node should raise the
-        //                    desired exception.
-        //
-        // Semantic Requirements: 61
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0093NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlNode refChild = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0093NO");
-            try
-            {
-                results.description = "The \"insertBefore()\" method of a node raises "+
-                    "an System.ArgumentException Exception if the node "+
-                    "to be inserted is one of this node's ancestors.";
-                //
-                // Retrieve targeted data and define reference and new childs.
-                //
-                newChild = util.getRootNode();
-                System.Xml.XmlElement testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                refChild = util.getSubNodes(testNode).Item(util.FIRST);
-                //
-                // Attempt to insert a node that is one of this node ancestors should
-                // raise an exception.
-                //
-                try 
-                {
-                    testNode.InsertBefore(newChild, refChild);//.node.
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString();
-                }
-
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0093NO -------------------------
-        //
-        //------------------------- test case core-0094NO -----------------------------
-        //
-        // Testing feature - The "replaceChild" method of a node raises a
-        //                   System.ArgumentException Exception if this node
-        //                   is of a type that does not allow children of the
-        //                   type of "newChild" to be inserted.
-        //
-        // Testing Approach - Retrieve the root node and attempt to replace one of
-        //                    its children with a newly created Attr node.  An 
-        //                    Element node can not have children of the "Attr"
-        //                    type, therefore the desired exception should be raised.
-        //
-        // Semantic Requirements: 62
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0094NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement rootNode = null;
-            System.Xml.XmlAttribute newChild = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
-            System.Xml.XmlNode oldChild = null;
-            string expectedValue = "System.InvalidOperationException";
-
-            testResults results = new testResults("Core0094NO");
-            try
-            {
-                results.description = "The \"replaceChild()\" method of a node raises "+
-                    "a System.ArgumentException Exception if this node "+
-                    "does not allow nodes of type of \"newChild\".";
-                //
-                // Retrieve targeted data and define oldChild. 
-                //
-                rootNode = util.getRootNode();
-                oldChild = util.nodeObject(util.SECOND,-1);
-                //
-                // Attempt to replace a child with an invalid child should raise an exception.
-                //
-                try 
-                {
-                    rootNode.ReplaceChild(newChild,oldChild);
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-    
-            }
-            catch(System.Exception ex) 
-            {
-                computedValue = "EXCEPTION " + ex.GetType () + " : " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0094NO -------------------------
-        //
-        //------------------------- test case core-0095NO ----------------------------
-        //
-        // Testing feature - The "replaceChild()" method of a node raises
-        //                   a System.ArgumentException Exception if the node
-        //                   to be inserted is one of this node's ancestors.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to replace one
-        //                    of its children with an ancestor node (root node).
-        //                    An attempt to make such a replacement should raise the
-        //                    desired exception.
-        //
-        // Semantic Requirements: 63
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0095NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlNode oldChild = null;
-            System.Xml.XmlElement testNode = null;
-			string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0095NO");
-            try
-            {
-                results.description = "The \"replaceChild()\" method of a node raises "+
-                    "a System.ArgumentException Exception if the node "+
-                    "to be put is one of this node's ancestors.";
-                //
-                // Retrieve targeted data and define new and old childs. 
-                //
-                newChild = util.getRootNode();
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                oldChild = util.getSubNodes(testNode).Item(util.FIRST);
-                //
-                // Attempt to replace a child with an ancestor should raise an exception.
-                //
-                try 
-                {
-                    testNode.ReplaceChild(newChild,oldChild);//.node.
-                }
-				catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-
-            }
-            catch(System.Exception ex)
-            {
-				computedValue = "Exception " + ex.GetType () + " : " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0095NO -------------------------
-        //
-        //------------------------- test case core-0096NO ----------------------------
-        //
-        // Testing feature - The "appendChild" method of a node raises a
-        //                   System.ArgumentException Exception if this node
-        //                   is of a type that does not allow children of the
-        //                   type of "newChild".
-        //
-        // Testing Approach - Retrieve the root node and attempt to append a
-        //                    newly created Attr node to it.  An Element
-        //                    node can not have children of the "Attr" type,
-        //                    therefore the desired exception should be raised.
-        //
-        // Semantic Requirements: 64
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0096NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement rootNode = null;
-            System.Xml.XmlAttribute newChild = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
-            string expectedValue = "System.InvalidOperationException";
-
-            testResults results = new testResults("Core0096NO");
-            try
-            {
-                results.description = "The \"appendChild()\" method of a node raises "+
-                    "a System.ArgumentException Exception if this node "+
-                    "does not allow nodes of type of \"newChild\".";
-                //
-                // Retrieve the targeted data.
-                //
-                rootNode = util.getRootNode();
-                //
-                // Attempt to append an invalid child should raise an exception.
-                //
-                try 
-                {
-                    rootNode.AppendChild(newChild);
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-    
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-			util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0096NO -------------------------
-        //
-        //------------------------- test case core-0097NO ----------------------------
-        //
-        // Testing feature - The "appendChild" method of a node raises
-        //                   an System.ArgumentException Exception if the node
-        //                   to be appended is one of this node's ancestors.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to append to 
-        //                    it an ancestor node (root node). An attempt to make 
-        //                    such an insertion should raise the desired exception.
-        //
-        // Semantic Requirements: 65
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0097NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlNode newChild = null;
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0097NO");
-            try
-            {
-                results.description = "The \"appendChild()\" method of a node raises "+
-                    "a System.ArgumentException Exception if the node "+
-                    "to append is one of this node's ancestors.";
-                //
-                // Retrieve the targeted data and define the new child.
-                //
-                newChild = util.getRootNode();
-                testNode = util.nodeObject(util.SECOND,-1);
-                //
-                // Attempt to replace a child with an ancestor should raise an exception.
-                //
-                try 
-                {
-                    testNode.AppendChild(newChild);//.node.
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0097NO -------------------------
-        //
-        //------------------------- test case core-0098NO ----------------------------
-        //
-        // Testing feature - The "insertBefore" method of a node raises a
-        //                   NOT_FOUND_ERR Exception if the reference child is not
-        //                   child of this node.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to insert
-        //                    a new node before a reference node that is not
-        //                    a child of this node.  An attempt to insert before a
-        //                    non child node should raise the desired exception.
-        //
-        // Semantic Requirements: 66
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0098NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
-            System.Xml.XmlElement refChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"refChild");
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = "System.ArgumentException";//util.NOT_FOUND2_ERR;
-
-            testResults results = new testResults("Core0098NO");
-            try
-            {
-                results.description = "The \"insertBefore\" method of a node raises "+
-                    "a NOT_FOUND_ERR Exception if the reference "+
-                    "child is not a child of this node.";
-                //
-                // Retrieve targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                //
-                // Attempt to insert before a reference child that is not a child of
-                // this node should raise an exception.
-                //
-                try 
-                {
-                    testNode.InsertBefore(newChild,refChild);//.node.
-                }
-                catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0098NO -----------------------
-        //
-        //------------------------- test case core-0099NO --------------------------
-        //
-        // Testing feature - The "replaceChild" method of a node raises a
-        //                   NOT_FOUND_ERR Exception if the old child is not
-        //                   child of this node.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to replace 
-        //                    a node that is not one of its children.  An attempt 
-        //                    to replace such a node should raise the desired 
-        //                    exception.
-        //
-        // Semantic Requirements: 67
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0099NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
-            System.Xml.XmlElement oldChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"oldChild");
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = "System.ArgumentException";//util.NOT_FOUND2_ERR;
-
-            testResults results = new testResults("Core0099NO");
-            try
-            {
-                results.description = "The \"replaceChild\" method of a node raises "+
-                    "a NOT_FOUND_ERR Exception if the old child "+
-                    "is not a child of this node.";
-                //
-                // Retrieve the targeted data..
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                //
-                // Attempt to replace a non child node should raise an exception.
-                //
-                try 
-                {
-                    testNode.ReplaceChild(newChild,oldChild);//.node.
-                }
-                catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0099NO -----------------------
-        //
-        //------------------------- test case core-0100NO --------------------------
-        //
-        // Testing feature - The "removeChild" method of a node raises a
-        //                   NOT_FOUND_ERR Exception if the old child is not
-        //                   child of this node.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to remove
-        //                    a node that is not one of its children.  An attempt
-        //                    to remove such a node should raise the desired
-        //                    exception.
-        //
-        // Semantic Requirements: 68
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0100NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement oldChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"oldChild");
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = typeof (ArgumentException).FullName;//util.NOT_FOUND3_ERR;
-
-            testResults results = new testResults("Core0100NO");
-            try
-            {
-                results.description = "The \"removeChild\" method of a node raises "+
-                    "a NOT_FOUND_ERR Exception if the old "+
-                    "child is not a child of this node.";
-                //
-                // Retrieve targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                //
-                // Attempt to remove a non child node should raise an exception.
-                //
-                try 
-                {
-                    testNode.RemoveChild(oldChild);//.node.
-                }
-                catch(ArgumentException ex) 
-                {
-                    computedValue = ex.GetType ().FullName; 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-			util.resetData();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0100NO -----------------------
-        //
-        //------------------------- test case core-0101NO ----------------------------
-        //
-        // Testing feature - The "insertBefore" method of a node raises a
-        //                   System.ArgumentException Exception if the new child was
-        //                   created from a different document than the one that 
-        //                   created this node.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to insert
-        //                    a new child that was created from a different
-        //                    document than the one that created the second employee.
-        //                    An attempt to insert such a child should raise 
-        //                    the desired exception.
-        //
-        // Semantic Requirements: 69
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0101NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement newChild = util.getOtherDOMDocument().CreateElement("newChild");
-            System.Xml.XmlNode refChild = null;
-            System.Xml.XmlElement testNode = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0101NO");
-            try
-            {
-                results.description = "The \"insertBefore\" method of a node raises "+
-                    "a System.ArgumentException Exception if the new "+
-                    "child was created from a document different "+
-                    "from the one that created this node.";
-                //
-                // Retrieve targeted data and define reference child.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                refChild = util.getSubNodes(testNode).Item(util.FOURTH);
-                //
-                // Attempt to insert a child from a different document should raise an
-                // exception.
-                //
-                try 
-                {
-                    testNode.InsertBefore(newChild,refChild);//.node.
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-			util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0101NO -----------------------
-        //
-        //------------------------- test case core-0102NO --------------------------
-        //
-        // Testing feature - The "replaceChild" method of a node raises a
-        //                   System.ArgumentException Exception if the new child was
-        //                   created from a different document than the one that
-        //                   created this node.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to  
-        //                    replace one of its children with a node created
-        //                    from a different document.  An attempt to make such
-        //                    replacement should raise the desired exception.
-        //
-        // Semantic Requirements: 70
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0102NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement newChild = util.getOtherDOMDocument().CreateElement("newChild");
-            System.Xml.XmlNode oldChild = null;
-            System.Xml.XmlElement testNode = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0102NO");
-            try
-            {
-                results.description = "The \"replaceChild\" method of a node raises "+
-                    "a System.ArgumentException Exception if the new "+
-                    "child was created from a document different "+
-                    "from the one that created this node.";
-                //
-                // Retrieve targeted data and define oldChild.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
-                oldChild = util.getSubNodes(testNode).Item(util.FIRST);
-                //
-                // Attempt to replace a child with a child from a different document
-                // should raise an exception.
-                //
-                try 
-                {
-                    testNode.ReplaceChild(newChild,oldChild);//.node.
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-                util.resetData();
-			Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0102NO -----------------------
-        //
-        //------------------------- test case core-0103NO --------------------------
-        //
-        // Testing feature - The "appendChild" method of a node raises a
-        //                   System.ArgumentException Exception if the new child was
-        //                   created from a different document than the one that
-        //                   created this node.
-        //
-        // Testing Approach - Retrieve the second employee and attempt to append 
-        //                    to it a node that was created from different
-        //                    document.  An attempt to make such an insertion 
-        //                    should raise the desired exception.
-        //
-        // Semantic Requirements: 71
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0103NO()
-        {
-            string computedValue = "";
-            System.Xml.XmlElement newChild = util.getOtherDOMDocument().CreateElement("newChild");
-            System.Xml.XmlNode testNode = null;
-            string expectedValue = "System.ArgumentException";
-
-            testResults results = new testResults("Core0103NO");
-            try
-            {
-                results.description = "The \"appendChild\" method of a node raises a "+
-                    "a System.ArgumentException Exception if the new "+
-                    "child was created from a document different "+
-                    "from the one that created this node.";
-                //
-                // Retrieve the targeted data.
-                //
-                testNode = util.nodeObject(util.SECOND,-1);
-                //
-                // Attempt to append a child from a different document should raise an
-                // exception.
-                //
-                try 
-                {
-                    testNode.AppendChild(newChild);//.node.
-                }
-                catch(System.Exception ex) 
-                {
-                    computedValue = ex.GetType().ToString(); 
-                }
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            results.expected = expectedValue;
-            results.actual = computedValue;
-                
-			util.resetData();
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0103NO -----------------------
-    }
+//**************************************************************************
+//
+//
+//                       National Institute Of Standards and Technology
+//                                     DTS Version 1.0
+//         
+//                                     Node Interface
+//
+// Written by: Carmelo Montanez
+// Modified by:  Mary Brady
+//
+// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
+// Mainsoft Corporation (c) 2003-2004
+//**************************************************************************
+using System;
+using System.Xml;
+
+using nist_dom;
+using NUnit.Framework;
+
+namespace nist_dom.fundamental
+{
+    [TestFixture]
+    public class NodeTest
+    {
+        public static int i = 2;
+/*
+        public testResults[] RunTests()
+        {
+            testResults[] tests = new testResults[] {core0001NO(), core0002NO(), core0003NO(),core0004NO(),
+                                                        core0005NO(), core0006NO(), core0007NO(), core0008NO(),
+                                                        core0009NO(), core0010NO(), core0011NO(), core0012NO(),
+                                                        core0013NO(), core0014NO(), core0015NO(), core0016NO(),
+                                                        core0017NO(), core0018NO(), core0019NO(), core0020NO(),
+                                                        core0021NO(), core0022NO(), core0023NO(), core0024NO(),
+                                                        core0025NO(), core0026NO(), core0027NO(), core0028NO(),
+                                                        core0029NO(), core0030NO(), core0031NO(), core0032NO(),
+                                                        core0033NO(), core0034NO(), core0035NO(), core0036NO(),
+                                                        core0038NO(), core0039NO(), core0040NO(),
+                                                        core0041NO(), core0042NO(), core0043NO(), core0044NO(),
+                                                        core0045NO(), core0046NO(), core0047NO(), core0048NO(),
+                                                        core0049NO(), core0050NO(), core0051NO(), core0052NO(),
+                                                        core0053NO(), core0054NO(), core0055NO(), core0056NO(),
+                                                        core0057NO(), core0058NO(), core0059NO(), core0060NO(),
+                                                        core0061NO(), core0062NO(), core0063NO(), core0064NO(),
+                                                        core0065NO(), core0066NO(), core0067NO(), core0068NO(),
+                                                        core0069NO(), core0070NO(), core0071NO(), core0072NO(),
+                                                        core0073NO(), core0074NO(), core0075NO(), core0076NO(),
+                                                        core0077NO(), core0078NO(), core0079NO(), core0080NO(),
+                                                        core0081NO(), core0082NO(), core0083NO(), core0084NO(),
+                                                        core0085NO(), core0087NO(), core0088NO(),
+                                                        core0089NO(), core0090NO(), core0091NO(), core0092NO(),
+                                                        core0093NO(), core0094NO(), core0095NO(), core0096NO(),
+                                                        core0097NO(), core0098NO(), core0099NO(), core0100NO(),
+                                                        core0101NO(), core0102NO(), core0103NO()};
+  
+            return tests;
+        }
+*/
+
+        //------------------------ test case core-0001NO------------------------
+        //
+        // Testing feature - The "nodeType" attribute for an Element node is 
+        //                   1 (ELEMENT_NODE). 
+        //
+        // Testing approach - Retrieve the root node and check its "nodeType" 
+        //                    attribute.  It should be set to 1. 
+        //
+        // Semantic Requirements: 1, 14
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0001NO()
+        {
+            int computedValue = 0;
+            int expectedValue = util.ELEMENT_NODE;
+
+            testResults results = new testResults("Core0001NO");
+
+            results.description = "The nodeType attribute for an Element Node "+
+                " should be set to the constant 1.";
+            //
+            // The nodeType attribute for the root node should be set to the value 1.
+            //
+            computedValue = (int)util.getRootNode().NodeType;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0001NO --------------------------
+        //
+        //------------------------- test case core-0002NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for an Attribute node is
+        //                   2 (ATTRIBUTE_NODE).
+        //
+        // Testing approach - Retrieve the first attribute from the last child of
+        //                    the first employee.  Its "nodeType" attribute is then 
+        //                    checked, it should be set to 2.
+        //
+        // Semantic Requirements: 2, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0002NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlAttribute attrNode = null;
+            string expectedValue = util.ATTRIBUTE_NODE.ToString();
+
+            testResults results = new testResults("Core0002NO");
+            try
+            {
+                results.description = "The nodeType attribute for an Attribute Node "+
+                    " should be set to the constant 2.";
+                // 
+                // Retrieve the targeted data and its type.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                attrNode = testNode.GetAttributeNode("domestic");//.node.
+                computedValue = ((int)attrNode.NodeType).ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0002NO --------------------------
+        //
+        //------------------------- test case core-0003NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a Text node is
+        //                   3 (TEXT_NODE).
+        //
+        // Testing approach - Retrieve the Text data from the last child of the 
+        //                    first employee and and examine its "nodeType" 
+        //                    attribute.  It should be set to 3.
+        //
+        // Semantic Requirements: 3, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0003NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode textNode = null;
+            string expectedValue = util.TEXT_NODE.ToString();
+
+            testResults results = new testResults("Core0003NO");
+            try
+            {
+                results.description = "The nodeType attribute for a Text Node "+
+                    " should be set to the constant 3.";
+
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.FIRST,util.SIXTH);
+                textNode = testNode.FirstChild;//.node.
+                //
+                // The nodeType attribute should be set to the value 3.
+                //
+                computedValue = ((int)textNode.NodeType).ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0003NO --------------------------
+        //
+        //------------------------- test case core-0004NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a CDATASection node is
+        //                   4 (CDATA_SECTION_NODE).
+        //
+        // Testing approach - Retrieve the CDATASection node contained inside
+        //                    the second child of the second employee and
+        //                    examine its "nodeType" attribute.  It should be 
+        //                    set to 4.
+        //
+        // Semantic Requirements: 4, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0004NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode cDataNode = null;
+            string expectedValue = util.CDATA_SECTION_NODE.ToString();
+
+            testResults results = new testResults("Core0004NO");
+            try
+            {
+                results.description = "The nodeType attribute for a CDATASection Node "+
+                    " should be set to the constant 4.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SECOND);
+                cDataNode = testNode.LastChild; //.node.
+                //
+                // The nodeType attribute should be set to the value 3.
+                //
+                computedValue = ((int)cDataNode.NodeType).ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0004NO --------------------------
+        //
+        //------------------------- test case core-0005NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for an EntityReference node 
+        //                   is 5 (ENTITY_REFERENCE_NODE).
+        //
+        // Testing approach - Retrieve the first Entity Reference node from the 
+        //                    last child of the second employee and examine its 
+        //                    "nodeType" attribute.  It should be set to 5.
+        //
+        // Semantic Requirements:  5, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0005NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode entRefNode = null;
+            string expectedValue = XmlNodeType.EntityReference.ToString ();//util.ENTITY_REFERENCE_NODE;
+
+            testResults results = new testResults("Core0005NO");
+            try
+            {
+                results.description = "The nodeType attribute for an EntityReference Node "+
+                    " should be set to the constant 5.";
+
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entRefNode = testNode.FirstChild;//.node.
+                //
+                // The nodeType attribute should be set to the value 5.
+                //
+                computedValue = entRefNode.NodeType.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0005NO --------------------------
+        //
+        //------------------------- test case core-0006NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for an Entity node 
+        //                   6 (ENTITY_NODE).
+        //
+        // Testing approach - Retrieve the first Entity declaration in the
+        //                    "DOCTYPE" section of the XML file and examine
+        //                    its "nodeType" attribute.  It should be set to 6.
+        //
+        // Semantic Requirements: 6, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0006NO()
+        {
+            int computedValue = 0;
+            System.Xml.XmlNode testNode = null;
+            int expectedValue = util.ENTITY_NODE;
+
+            testResults results = new testResults("Core0006NO");
+            results.description = "The nodeType attribute for an Entity Node "+
+                " should be set to the constant 6.";
+            //
+            // Get the targeted data and its type.
+            //
+            testNode = util.getEntity("ent1");
+            //
+            // The nodeType attribute should be set to the value 6.
+            //
+            computedValue = (int)testNode.NodeType;
+
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0006NO --------------------------
+        //
+        //------------------------- test case core-0007NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a ProcessingInstruction.
+        //
+        // Testing approach - Retrieve the first declaration in the XML file
+        //                    and examine its "nodeType" attribute.  It should 
+        //                    be set to ProcessingInstruction.
+        //
+        // Semantic Requirements: 7, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0007NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            string expectedValue =  util.XML_DECLARATION_NODE.ToString(); //util.PROCESSING_INSTRUCTION_NODE.ToString();
+
+            testResults results = new testResults("Core0007NO");
+            results.description = "The nodeType attribute for an ProcessingInstruction Node.";
+            //
+            //  Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(0);
+            //
+            // The nodeType attribute should be set to the value 7.
+            //
+            computedValue = ((int)testNode.NodeType).ToString();
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0007NO --------------------------
+        //
+        //------------------------- test case core-0008NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a comment node is
+        //                   8 (COMMENT_NODE).
+        //
+        // Testing approach - Retrieve the only comment (third child) from the
+        //                    main DOM document and examine its "nodeType" attribute.  
+        //                    It should be set to 8.
+        //
+        // Semantic Requirements: 8, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0008NO()
+        {
+            int computedValue = 0;
+            System.Xml.XmlNode testNode = null;
+            int expectedValue = util.COMMENT_NODE;
+
+            testResults results = new testResults("Core0008NO");
+            results.description = "The nodeType attribute for a Comment Node "+
+                " should be set to the constant 8.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(2);
+            //
+            // The nodeType attribute should be set to the value 8.
+            //
+            computedValue = (int)testNode.NodeType;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0008NO --------------------------
+        //
+        //------------------------- test case core-0009NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a Document node is
+        //                   9 (DOCUMENT_NODE).
+        //
+        // Testing approach - Retrieve the DOM Document and examine its 
+        //                    "nodeType" attribute.  It should be set to 9.
+        //
+        // Semantic Requirements: 9, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0009NO()
+        {
+            int computedValue = 0;
+            System.Xml.XmlNode testNode = null;
+            int expectedValue = util.DOCUMENT_NODE;
+
+            testResults results = new testResults("Core0009NO");
+            results.description = "The nodeType attribute for an Document Node "+
+                " should be set to the constant 9.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            // The nodeType attribute should be set to the value 9.
+            //
+            computedValue = (int)testNode.NodeType;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0009NO --------------------------
+        //
+        //------------------------- test case core-0010NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a DocumentType node is
+        //                   10 (DOCUMENT_TYPE_NODE).
+        //
+        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
+        //                    the XML file and examine its "nodeType" attribute. 
+        //                    It should be set to 10.
+        //
+        // Semantic Requirements: 10, 14 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0010NO()
+        {
+            int computedValue = 0;
+            System.Xml.XmlNode testNode = null;
+            int expectedValue = util.DOCUMENT_TYPE_NODE;
+
+            testResults results = new testResults("Core0010NO");
+            results.description = "The nodeType attribute for an DocumentType Node "+
+                " should be set to the constant 10.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDocType();
+            //
+            // The nodeType attribute should be set to the value 10.
+            //
+            computedValue = (int)testNode.NodeType;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0010NO --------------------------
+        //
+        //------------------------- test case core-0011NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a DocumentFragment node
+        //                   is 11 (DOCUMENT_FRAGMENT_NODE).
+        //
+        // Testing approach - Retrieve the whole DOM document and invoke its
+        //                    "createDocumentFragment()" method and examine the
+        //                    "nodeType" attribute of the returned node.  It should 
+        //                    be set to 11.
+        //
+        // Semantic Requirements: 11, 14
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0011NO()
+        {
+            int computedValue = 0;
+            System.Xml.XmlNode testNode = null;
+            int expectedValue = util.DOCUMENT_FRAGMENT_NODE;
+
+            testResults results = new testResults("Core0011NO");
+            results.description = "The nodeType attribute for a DocumentFragment Node "+
+                " should be set to the constant 11.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().CreateDocumentFragment();
+            //
+            // The nodeType attribute should be set to the value 11.
+            //
+            computedValue = (int)testNode.NodeType;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0011NO --------------------------
+        //
+        //------------------------- test case core-0012NO -----------------------------
+        //
+        // Testing feature - The "nodeType" attribute for a notation node is
+        //                   12 (NOTATION_NODE).
+        //
+        // Testing approach - Retrieve the Notation declaration inside the 
+        //                    DocumentType node and examine its "nodeType"
+        //                    attribute.  It should be set to 12.
+        //
+        // Semantic Requirements: 12, 14
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0012NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = util.NOTATION_NODE.ToString();
+
+            testResults results = new testResults("Core0012NO");
+            try
+            {
+                results.description = "The nodeType attribute for a Notation Node "+
+                    " should be set to the constant 12.";
+                //
+                // Get the targeted data.
+                //
+                testNode = util.getNotation("notation1");
+                //
+                // The nodeType attribute should be set to the value 12.
+                //
+                computedValue = ((int)testNode.NodeType).ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0012NO --------------------------
+        //
+        //------------------------   test case core-0013NO ----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for an Element node is
+        //                   its tagName.
+        //
+        // Testing approach - Retrieve the first Element node (root node) of the 
+        //                    DOM object and check its "nodeName" attribute.  
+        //                    It should be equal to its tagName.
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0013NO()
+        {
+            string computedValue = "0";
+            string expectedValue = "staff"; 
+
+            testResults results = new testResults("Core0013NO");
+            results.description = "The nodeName attribute for an Element Node " +
+                "should be set to its tagName.";
+            //
+            // The nodeName attribute should be set to "staff". 
+            //
+            computedValue = util.getRootNode().Name;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0013NO --------------------------
+        //
+        //------------------------- test case core-0014NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for an Attribute node is
+        //                   the name of the attribute.
+        //
+        // Testing approach - Retrieve the attribute named "domestic" from the last 
+        //                    child of the first employee.  Its "nodeName" attribute 
+        //                    is then checked.  It should be set to "domestic".
+        //
+        // Semantic Requirements: 13, 15  
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0014NO()
+        {
+            string computedValue = "0";
+            string expectedValue = "domestic";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlAttribute attrNode = null;
+
+            testResults results = new testResults("Core0014NO");
+            try
+            {
+                results.description = "The nodeName attribute for an Attribute Node " +
+                    "should be set to the name of the attribute.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                attrNode = testNode.GetAttributeNode("domestic"); //.node.
+                //
+                // The nodeName attribute should be set to the value "domestic".
+                //
+                computedValue = attrNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0014NO --------------------------
+        //
+        //------------------------- test case core-0015NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a text node is
+        //                   "#text".
+        //
+        // Testing approach - Retrieve the Text data from the last child of the
+        //                    first employee and and examine its "nodeName"
+        //                    attribute.  It should be set to "#text".
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0015NO()
+        {
+            string computedValue = "0";
+            string expectedValue = "#text";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode textNode = null;
+
+            testResults results = new testResults("Core0015NO");
+            try
+            {
+                results.description = "The nodeName attribute for a Text Node " +
+                    "should be set to \"#text\".";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.FIRST,util.SIXTH);
+                textNode = testNode.FirstChild;//.node.
+                //
+                // The nodeName attribute should be set to the value "#text".
+                //
+                computedValue = textNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0015NO --------------------------
+        //
+        //------------------------- test case core-0016NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a CDATASection node is
+        //                   "#cdata-section".
+        //
+        // Testing approach - Retrieve the CDATASection node inside the second 
+        //                    child of the second employee and examine its "nodeName"
+        //                    attribute.  It should be set to "#cdata-section".
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0016NO()
+        {
+            string computedValue = "0";
+            string expectedValue = "#cdata-section";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode cDataNode = null;
+
+            testResults results = new testResults("Core0016NO");
+            try
+            {
+                results.description = "The nodeName attribute for a CDATASection Node " +
+                    "should be set to \"#cdata-section\".";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SECOND);  
+                cDataNode = testNode.LastChild;;//.node.
+                //
+                // The nodeName attribute should be set to "#cdata-section".
+                //
+                computedValue = cDataNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0016NO --------------------------
+        //
+        //------------------------- test case core-0017NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for an EntityReference node
+        //                   is the name of the entity referenced.
+        //
+        // Testing approach - Retrieve the first Entity Reference node from the last 
+        //                    child of the second employee and examine its
+        //                    "nodeName" attribute.  It should be set to "ent2".
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0017NO()
+        {
+            string computedValue = "";
+            string expectedValue = "ent2";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode entRefNode = null;
+
+            testResults results = new testResults("Core0017NO");
+            try
+            {
+                results.description = "The nodeName attribute for an EntityReference Node " +
+                    "should be set to the name of the entity referenced.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entRefNode = testNode.FirstChild;//.node.
+                //
+                // The nodeName attribute should be set to "ent2".
+                //
+                computedValue = entRefNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+        //------------------------ End test case core-0017NO --------------------------
+        //
+        //------------------------- test case core-0018NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for an Entity node is
+        //                   the entity name.
+        //
+        // Testing approach - Retrieve the first Entity declaration in the
+        //                    "DOCTYPE" section of the XML file and examine
+        //                    its "nodeName" attribute.  It should be set to
+        //                    "ent1" .
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0018NO()
+        {
+            string computedValue = "";
+            string expectedValue = "ent1";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0018NO");
+            results.description = "The nodeName attribute for an Entity Node " +
+                "should be set to the entity name.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getEntity("ent1");
+            //
+            // The nodeName attribute should be set to "ent1".
+            //
+            computedValue = testNode.Name;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0018NO --------------------------
+        //
+        //------------------------- test case core-0019NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a ProcessingInstruction
+        //                   node is the target.
+        //
+        // Testing approach - Retrieve the first declaration in the XML file
+        //                    and examine its "nodeName" attribute.  It should
+        //                    be set to "xml".
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0019NO()
+        {
+            string computedValue = "0";
+            string expectedValue = "xml";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0019NO");
+            results.description = "The nodeName attribute for a ProcessingInstruction "+
+                "Node should be set to the target.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(0);
+            //
+            // The nodeName attribute should be set to "xml".
+            //
+            computedValue = testNode.Name;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0019NO --------------------------
+        //
+        //------------------------- test case core-0020NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a comment node is
+        //                   "#comment".
+        //
+        // Testing approach - Retrieve the only comment in the XML file (third child)
+        //                    and examine its "nodeName" attribute.  It should
+        //                    be set to "#comment".
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0020NO()
+        {
+            string computedValue = "0";
+            string expectedValue = "#comment";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0020NO");
+            results.description = "The nodeName attribute for a comment Node "+
+                "should be set to \"#comment\".";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(2);      
+            //
+            // The nodeName attribute should be set to "#comment".
+            //
+            computedValue = testNode.Name;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0020NO --------------------------
+        //
+        //------------------------- test case core-0021NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a Document node is
+        //                   "#document".
+        //
+        // Testing approach - Retrieve the DOM Document and examine its
+        //                    "nodeName" attribute.  It should be set to "#document".
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0021NO()
+        {
+            string computedValue = "";
+            string expectedValue = "#document";
+            System.Xml.XmlNode testNodeNode = null;
+
+            testResults results = new testResults("Core0021NO");
+            results.description = "The nodeName attribute for a Document Node "+
+                "should be set to \"#document\".";
+            //
+            // Get the targeted data.
+            //
+            System.Xml.XmlNode testNode = util.getDOMDocument();
+            //
+            // The nodeName attribute should be set to "#document". 
+            //
+            computedValue = testNode.Name;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0021NO --------------------------
+        //
+        //------------------------- test case core-0022NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a DocumentType node is
+        //                   the document type name.
+        //
+        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
+        //                    the XML file and examine its "nodeName" attribute.
+        //                    It should be set to "staff". 
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0022NO()
+        {
+            string computedValue = "";
+            string expectedValue = "staff";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0022NO");
+            results.description = "The nodeName attribute for a DocumentType Node " +
+                "should be set to the document type name.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDocType();
+            //
+            // The nodeName attribute should be set to "staff".
+            //
+            computedValue = testNode.Name;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0022NO ------------------------
+        //
+        //------------------------- test case core-0023NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a DocumentFragment node
+        //                   is "#document-fragment".
+        //
+        // Testing approach - Retrieve the whole DOM document and invoke its
+        //                    "createDocumentFragment()" method and examine the
+        //                    "nodeName" attribute of the returned node.  It should
+        //                    be set to "#document-fragment". 
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0023NO()
+        {
+            string computedValue = "";
+            string expectedValue = "#document-fragment";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0023NO");
+            results.description = "The nodeName attribute for a DocumentFragment Node "+
+                "should be set to \"#document-fragment\".";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().CreateDocumentFragment();
+            //
+            // The nodeName attribute should be set to "#document-fragment".
+            //
+            computedValue = testNode.Name;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0023NO --------------------------
+        //
+        //------------------------- test case core-0024NO -----------------------------
+        //
+        // Testing feature - The "nodeName" attribute for a notation node is
+        //                   the name of the notation.
+        //
+        // Testing approach - Retrieve the Notation declaration inside the
+        //                    DocumentType node and examine its "nodeName"
+        //                    attribute.  It should be set to "notation1".
+        //
+        // Semantic Requirements: 13, 15 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0024NO()
+        {
+            string computedValue = "";
+            string expectedValue = "notation1";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0024NO");
+            try
+            {
+                results.description = "The nodeName attribute for a Notation Node " +
+                    "should be set to the notation name.";
+                //
+                // Get the targeted data.
+                //
+                testNode = util.getNotation("notation1");
+                //
+                // The nodeName attribute should be set to "notation1".
+                //
+                computedValue = testNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0024NO --------------------------
+        //
+        //------------------------   test case core-0025NO ----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for an Element node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the root node of the DOM object and check
+        //                    its "nodeValue" attribute.  It should be equal
+        //                    to null.
+        //
+        // Semantic Requirements: 13, 16 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0025NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+
+            testResults results = new testResults("Core0025NO");
+            results.description = "The nodeValue attribute for an Element Node " +
+                "should be set to null.";
+            //
+            // The nodeValue attribute should be set to null.
+            //
+            computedValue = util.getRootNode().Value;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0025NO --------------------------
+        //
+        //------------------------- test case core-0026NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for an Attribute node is
+        //                   the value of the attribute.
+        //
+        // Testing approach - Retrieve the attribute named "domestic" from the last 
+        //                    child of the first employee.  Its "nodeValue" attribute 
+        //                    is then checked, it should be set to "Yes".
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0026NO()
+        {
+            string computedValue = "";
+            string expectedValue = "Yes";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlAttribute attrNode = null;
+
+            testResults results = new testResults("Core0026NO");
+            try
+            {
+                results.description = "The nodeValue attribute for an Attribute Node " +
+                    "should be set to the value of the attribute.";
+                //
+                // Get the targeted data.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.FIRST,util.SIXTH);
+                attrNode = testNode.GetAttributeNode("domestic");//.node.
+                //
+                // The nodeType attribute should be set to "Yes".
+                //
+                computedValue = attrNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0026NO --------------------------
+        //
+        //------------------------- test case core-0027NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a Text node is
+        //                   content of the Text node.
+        //
+        // Testing approach - Retrieve the Text data from the last child of the
+        //                    first employee and and examine its "nodeValue"
+        //                    attribute.  It should be set to 
+        //                    "1230 North Ave. Dallas, Texas 98551". 
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0027NO()
+        {
+            string computedValue = "";
+            string expectedValue = "1230 North Ave. Dallas, Texas 98551";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode textNode = null;
+
+            testResults results = new testResults("Core0027NO");
+            try
+            {
+                results.description = "The nodeValue attribute for a Text node " +
+                    "should be set to contents of the of the Text node.";
+                //
+                // Get the targeted data.
+                //
+                testNode = util.nodeObject(util.FIRST,util.SIXTH);
+                textNode = testNode.FirstChild;//.node.
+                //
+                // Retrieve the nodeValue attribute.
+                //
+                computedValue = textNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0027NO --------------------------
+        //
+        //------------------------- test case core-0028NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a CDATASection node is
+        //                   the content of the CDATASection.
+        //
+        // Testing approach - Retrieve the first CDATASection node inside the second 
+        //                    child of the second employee and examine its "nodeValue" 
+        //                    attribute.  It should be set to "This is a CDATA Section
+        //                    with EntityReference number 2 &ent2;".
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0028NO()
+        {
+            string computedValue = "0";
+            string expectedValue = "This is a CDATASection with EntityReference number 2 &ent2;";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode cDataNode = null;
+
+            testResults results = new testResults("Core0028NO");
+            try
+            {
+                results.description = "The nodeValue attribute for a CDATASection Node "+
+                    "should be set to the contents of the CDATASection."; 
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SECOND);
+                cDataNode = testNode.ChildNodes.Item(1);//.node.
+                //
+                // Get the "nodeValue" attribute.
+                //
+                computedValue = cDataNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0028NO --------------------------
+        //
+        //------------------------- test case core-0029NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for an EntityReference node
+        //                   is null.
+        //
+        // Testing approach - Retrieve the first Entity Reference node from the last
+        //                    child of the second employee and examine its
+        //                    "nodeValue" attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0029NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode entRefNode = null;
+
+            testResults results = new testResults("Core0029NO");
+            try
+            {
+                results.description = "The nodeValue attribute for an EntityReference "+
+                    "node should be set to null.";
+                //
+                // Get the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entRefNode = testNode.FirstChild;//.node.
+                //
+                // The nodeValue attribute should be set to null.
+                //
+                computedValue = entRefNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0029NO --------------------------
+        //
+        //------------------------- test case core-0030NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for an Entity node
+        //                   is null.
+        //
+        // Testing approach - Retrieve the first Entity declaration in the
+        //                    "DOCTYPE" section of the XML file and examine
+        //                    its "nodeValue" attribute.  It should be set to
+        //                    null.
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0030NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0030NO");
+            results.description = "The nodeValue attribute for an Entity node " +
+                "should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getEntity("ent1");;
+            //
+            // The nodeValue attribute should be set to null.
+            //
+            computedValue = testNode.Value;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0030NO --------------------------
+        //
+        //------------------------- test case core-0031NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a ProcessingInstruction
+        //                   node is the entire content excluding the target.
+        //
+        // Testing approach - Retrieve the first declaration in the XML file
+        //                    and examine its "nodeValue" attribute.  It should
+        //                    be set to "version="1.0"".
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0031NO()
+        {
+            string computedValue = "";
+            string expectedValue = "version=\"1.0\"";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0031NO");
+            results.description = "The nodeValue attribute for a ProcessingInstruction "+
+                "node is the entire contents excluding the target.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(0);
+            //
+            // The nodeValue attribute should be set to "version="1.0"".
+            //
+            computedValue = testNode.Value;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0031NO --------------------------
+        //
+        //------------------------- test case core-0032NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a comment node is
+        //                   the content of the comment.
+        //
+        // Testing approach - Retrieve the only comment in the XML file (third child)
+        //                    and examine its "nodeValue" attribute.  It should
+        //                    be set to " This is comment number 1.".
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0032NO()
+        {
+            string computedValue = "";
+            string expectedValue = " This is comment number 1.";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0032NO");
+            results.description = "The nodeValue attribute for a comment node " +
+                "should be set to the contents of the comment.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(2);
+            //
+            // The nodeValue attribute should be set to " This is comment number 1."
+            //
+            computedValue = testNode.Value;
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0032NO --------------------------
+        //
+        //------------------------- test case core-0033NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a Document node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the DOM Document and examine its
+        //                    "nodeValue" attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0033NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0033NO");
+            results.description = "The nodeValue attribute for a Document node "+
+                "should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            // The nodeValue attribute should be set to null.
+            //
+            computedValue = testNode.Value;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0033NO --------------------------
+        //
+        //------------------------- test case core-0034NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a DocumentType node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
+        //                    the XML file and examine its "nodeValue" attribute.
+        //                    It should be set to null.
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0034NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0034NO");
+            results.description = "The nodeValue attribute for a DocumentType Node " +
+                "should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(1);
+            //
+            // The nodeValue attribute should be set to null.
+            //
+            computedValue = testNode.Value;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0034NO ------------------------
+        //
+        //------------------------- test case core-0035NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a DocumentFragment node
+        //                   is null.
+        //
+        // Testing approach - Retrieve the whole DOM document and invoke its
+        //                    "createDocumentFragment()" method and examine the
+        //                    "nodeValue" attribute of the returned node.  It should
+        //                    be set to null.
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0035NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0035NO");
+            results.description = "The nodeValue attribute for a DocumentFragment node " +
+                "should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().CreateDocumentFragment();
+            //
+            // The nodeValue attribute should be set to null.
+            //
+            computedValue = testNode.Value;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0035NO --------------------------
+        //
+        //------------------------- test case core-0036NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute for a notation node is
+        //                   the name of the notation.
+        //
+        // Testing approach - Retrieve the Notation declaration inside the
+        //                    DocumentType node and examine its nodeValue 
+        //                    attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 16
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0036NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0036NO");
+            try
+            {
+                results.description = "The nodeValue attribute for a Notation node " +
+                    "should be set to null.";
+                //
+                // Get the targeted data.
+                //
+                testNode = util.getNotation("notation1");
+                //
+                // The nodeValue attribute should be set to null.
+                //
+                computedValue = testNode.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0036NO --------------------------
+        //
+        //------------------------   test case core-0037NO ----------------------------
+        //
+        // Testing feature - The "attributes" attribute for an Element node is
+        //                   a NamedNodeMap.
+        //
+        // Testing approach - Retrieve the last child of the third employee
+        //                    and examine its "attributes" attribute.  It should be 
+        //                    equal to a NamedNodeMap of its attributes. 
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0037NO()
+        {
+            string computedValue = "";
+            string expectedValue = "";
+            System.Xml.XmlNode testNode = null;
+            string testName = "core-0037NO";
+
+            testResults results = new testResults("core0037NO");
+            try
+            {
+                results.description += "The \"attributes\" attribute for an Element node";
+                results.description += " should be set to a NamedNodeMap. ";
+
+                //
+                // Retrieve the targeted data and its attributes.
+                //
+                testNode = util.nodeObject(util.THIRD,util.SIXTH);
+                computedValue += testNode.Attributes.Item(util.FIRST).Name+" ";
+                computedValue += testNode.Attributes.Item(util.SECOND).Name;
+                //
+                // Determine the order of the NamedNodeMap items.
+                //
+                if (computedValue.Substring(0,1) == "d" && computedValue.Substring(1,1) == "o")
+                    expectedValue = "domestic street";
+                else
+                    expectedValue = "street domestic";
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0037NO --------------------------
+        //
+        //------------------------- test case core-0038NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for an Attribute node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the first attribute from the last child of 
+        //                    the first employee and.  Its "attributes" attribute 
+        //                    is then checked.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0038NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlAttribute attrNode = null;
+
+            testResults results = new testResults("Core0038NO");
+            try
+            {
+                results.description = "The \"attributes\" attribute for an Attribute node " +
+                    "should be set to null.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.FIRST,util.SIXTH);
+                attrNode = (System.Xml.XmlAttribute)testNode.Attributes.Item(util.FIRST);
+                //
+                // The "attributes" attribute should be set to null.
+                //
+                computedValue = attrNode.Attributes;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0038NO --------------------------
+        //
+        //------------------------- test case core-0039NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for a Text node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the text data from the last child of the
+        //                    first employee and examine its "attributes"
+        //                    attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0039NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode textNode = null;
+
+            testResults results = new testResults("Core0039NO");
+            try
+            {
+                results.description = "The \"attributes\" attribute for a Text node "+
+                    "should be set to null.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.FIRST,util.SIXTH);
+                textNode = testNode.FirstChild;//.node.
+                //
+                // The "attributes" attribute should be set to null
+                //
+                computedValue = textNode.Attributes;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0039NO --------------------------
+        //
+        //------------------------- test case core-0040NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for a CDATASection node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the CDATASection node contained inside
+        //                    the second child of the second employee and
+        //                    examine its "attributes" attribute.  It should be
+        //                    set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0040NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode cDataNode = null;
+
+            testResults results = new testResults("Core0040NO");
+            try
+            {
+                results.description = "The \"attributes\" attribute for a CDATASection "+
+                    "node should be set to null.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SECOND);
+                cDataNode = testNode.LastChild;//.node.
+                //
+                // The "attributes" attribute should be set to null.
+                //
+                computedValue = cDataNode.Attributes;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0040NO --------------------------
+        //
+        //------------------------- test case core-0041NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for an EntityReference node
+        //                   is null.
+        //
+        // Testing approach - Retrieve the first Entity Reference node from the last 
+        //                    child of the second employee and examine its
+        //                    "attributes" attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0041NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode entRefNode = null;
+
+            testResults results = new testResults("Core0041NO");
+            try
+            {
+                results.description = "The \"attributes\" attribute for an "+
+                    "EntityReference node should be set to null.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entRefNode = testNode.FirstChild;//.node.
+                //
+                // The \"attributes\" attribute should be set to null.
+                //
+                computedValue = entRefNode.Attributes;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+        //------------------------ End test case core-0041NO --------------------------
+        //
+        //------------------------- test case core-0042NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for an Entity node
+        //                   is null.
+        //
+        // Testing approach - Retrieve the first Entity declaration in the
+        //                    "DOCTYPE" section of the XML file and examine
+        //                    its "attributes" attribute.  It should be set to
+        //                    null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0042NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0042NO");
+
+            results.description = "The \"attributes\" attribute for an Entity node "+
+                "should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getEntity("ent1");
+            //
+            // The "attributes" attribute should be set to null.
+            //
+            computedValue = testNode.Attributes;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0042NO --------------------------
+        //
+        //------------------------- test case core-0043NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for a ProcessingInstruction
+        //                   node is null.
+        //
+        // Testing approach - Retrieve the first declaration in the XML file
+        //                    and examine its "attributes" attribute.  It should
+        //                    be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0043NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0043NO");
+
+            results.description = "The \"attributes\" attribute for a "+
+                "ProcessingInstruction node is null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(0);
+            //
+            // The "attributes" attribute should be set to null.
+            //
+            computedValue = testNode.Attributes;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0043NO --------------------------
+        //
+        //------------------------- test case core-0044NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for a comment node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the third child of the DOM document and
+        //                    examine its "attributes" attribute.  It should
+        //                    be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0044NO()
+        {
+            object computedValue = null;
+            object expectedValue = null; 
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0044NO");
+
+            results.description = "The \"attributes\" attribute for a comment node "+
+                "should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().ChildNodes.Item(2);
+            //
+            // The "attributes" attribute should be set to null. 
+            //
+            computedValue = testNode.Attributes;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0044NO --------------------------
+        //
+        //------------------------- test case core-0045NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for a Document node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the DOM Document and examine its
+        //                    "attributes" attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0045NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0045NO");
+
+            results.description = "The \"attributes\" attribute for a Document node "+
+                "should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            // The "attributes" attribute should be set to null.
+            //
+            computedValue = testNode.Attributes;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0045NO --------------------------
+        //
+        //------------------------- test case core-0046NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for a DocumentType node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the DOCTYPE declaration (second child) from
+        //                    the XML file and examine its "attribute" attribute.
+        //                    It should be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0046NO()
+        {
+            object computedValue = null;
+            object expectedValue = null; 
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0046NO");
+
+            results.description = "The \"attribute\" attribute for a DocumentType "+
+                "node should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDocType();
+            //
+            // The "attributes" attribute should be set to null.
+            //
+            computedValue = testNode.Attributes;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0046NO ------------------------
+        //
+        //------------------------- test case core-0047NO ---------------------------
+        //
+        // Testing feature - The "attributes" attribute for a DocumentFragment node
+        //                   is null.
+        //
+        // Testing approach - Retrieve the whole DOM document and invoke its
+        //                    "createDocumentFragment()" method and examine the
+        //                    "attributes" attribute of the returned node.  It
+        //                    should be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0047NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0047NO");
+            results.description = "The \"attributes\" attribute for a DocumentFragment "+
+                "node should be set to null.";
+            //
+            // Get the targeted data.
+            //
+            testNode = util.getDOMDocument().CreateDocumentFragment();
+            //
+            // The "attributes" attribute should be set to null.
+            //
+            computedValue = testNode.Attributes;
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0047NO --------------------------
+        //
+        //------------------------- test case core-0048NO -----------------------------
+        //
+        // Testing feature - The "attributes" attribute for a notation node is
+        //                   null.
+        //
+        // Testing approach - Retrieve the Notation declaration inside the
+        //                    DocumentType node and examine its "attributes"
+        //                    attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 13, 17
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0048NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0048NO");
+            try
+            {
+                results.description = "The \"attributes\" attribute for a Notation node "+
+                    "should be set to null.";
+                //
+                // Get the targeted data.
+                //
+                testNode = util.getNotation("notation1");
+                //
+                // The "attributes" attribute should be set to null.
+                //
+                computedValue = testNode.Attributes;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0048NO --------------------------
+        //
+        //------------------------- test case core-0049NO -----------------------------
+        //
+        // Testing feature - The "parentNode" attribute contains the parent of 
+        //                   this node.
+        //
+        // Testing approach - Retrieve the second employee and examine its
+        //                    "parentNode" attribute.  It should be set
+        //                    to "staff".
+        //
+        // Semantic Requirements: 18
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0049NO()
+        {
+            string computedValue = "";
+            string expectedValue = "staff";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode testNodeParent = null;
+
+            testResults results = new testResults("Core0049NO");
+            try
+            {
+                results.description = "The parentNode attribute contains the parent "+
+                    "node of this node.";
+                //
+                // Retrieve the targeted data and access its parent node.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                testNodeParent = testNode.ParentNode; //.node.
+                //
+                // The nodeName attribute should be "staff".
+                //
+                computedValue = testNodeParent.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            //  Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0049NO --------------------------
+        //
+        //------------------------- test case core-0050NO -----------------------------
+        //
+        // Testing feature - The "parentNode" attribute of a node that has just 
+        //                   been created and not yet added to the tree is null.
+        //
+        // Testing approach - Create a new "employee" Element node using the 
+        //                    "createElement(name)" method from the Document
+        //                    interface.  Since this new node has not yet been
+        //                    added to the tree, its parentNode attribute should
+        //                    be null.
+        //
+        // Semantic Requirements: 19
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0050NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0050NO");
+
+            results.description = "The parentNode attribute of a node that has just "+
+                "been created, but not yet added to the tree is "+
+                "null.";
+            //
+            // Create new node and access its parentNode attribute.
+            //
+            testNode = util.createNode(util.ELEMENT_NODE,"employee");
+            computedValue = testNode.ParentNode;
+            //
+            //  Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0050NO --------------------------
+        //
+        //------------------------- test case core-0051NO -----------------------------
+        //
+        // Testing feature - The "parentNode" attribute of a node that has been 
+        //                   been removed from the tree is null.
+        //
+        // Testing approach - Remove the first employee by invoking the 
+        //                    "removeChild(oldChild)" method and examine its 
+        //                    parentNode attribute.  It should be set to null.
+        //
+        // Semantic Requirements: 20 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0051NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode removedNode = null;
+
+            testResults results = new testResults("Core0051NO");
+
+            results.description = "The parentNode attribute of a node that has "+
+                "been removed from the tree is null.";
+            //
+            // Remove the targeted data and access its parentNode attribute.
+            //
+            testNode = util.nodeObject(util.FIRST,-1);
+            removedNode = util.getRootNode().RemoveChild(testNode);//.node
+            computedValue = removedNode.ParentNode;
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0051NO --------------------------
+        //
+        //------------------------- test case core-0052NO -----------------------------
+        //
+        // Testing feature - The "childNodes" attribute of a node contains a 
+        //                   NodeList of all the children of this node.
+        //
+        // Testing approach - Retrieve the second employee and examine its 
+        //                    childNodes attribute.  It should be NodeList
+        //                    containing all of its children.  The length of 
+        //                    the list should be 9.
+        //
+        // Semantic Requirements: 21 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0052NO()
+        {
+            int computedValue = 0;
+            int expectedValue = 6;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNodeList nodeList = null;
+
+            testResults results = new testResults("Core0052NO");
+
+            results.description = "The childNodes attribute of a node contains a "+
+                "NodeList of all the children of this node.";
+            //
+            // Retrieve targeted data and examine the list length.
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            nodeList = testNode.ChildNodes;//.node.
+            computedValue = nodeList.Count;
+            //
+            //  Write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0052NO --------------------------
+        //
+        //------------------------- test case core-0053NO -----------------------------
+        //
+        // Testing feature - If a node has no children then the NodeList returned
+        //                   by its childNodes attribute has no nodes.
+        //
+        // Testing approach - Retrieve the textual data from the first child of 
+        //                    of the second employee and examine its childNodes 
+        //                    attribute.  It should be NodeList with no nodes 
+        //                    in it.
+        //
+        // Semantic Requirements: 22
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0053NO()
+        {
+            string computedValue = "";
+            string expectedValue = "0";
+            string testName = "core-0053NO";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNodeList noChildNode = null;
+
+            testResults results = new testResults("Core0053NO");
+            try
+            {
+                results.description = "If a node has no child nodes then the NodeList "+
+                    "returned by its childNodes attribute has no "+
+                    "nodes."; 
+                //
+                // Retrieve the targeted data and access its childNodes attribute.
+                //
+                testNode = util.nodeObject(util.SECOND,util.FIRST);
+                noChildNode = testNode.FirstChild.ChildNodes;//.node.
+                computedValue = noChildNode.Count.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            //  Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0053NO --------------------------
+        //
+        //------------------------- test case core-0054NO -----------------------------
+        //
+        // Testing feature - The NodeList returned by the childNodes attribute is live.
+        //                   Changes on the node's children are immediately reflected
+        //                   on the nodes returned by the NodeList.
+        //
+        // Testing approach -  Create a NodeList of the children of the second employee 
+        //                     and then add a newly created element (created with the 
+        //                     "createElement" method from the Document interface) to 
+        //                     the second employee by using the "append" method.  The
+        //                     length attribute of the NodeList should reflect this new
+        //                     addition to the child list.  It should now return the
+        //                     value 7.
+        // 
+        // Semantic Requirements: 23
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0054NO()
+        {
+            int computedValue = 0;
+            int expectedValue = 7;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNodeList nodeList = null;
+
+            testResults results = new testResults("Core0054NO");
+
+            results.description = "The NodeList returned by the childNodes attribute "+
+                "is live.  Changes in the children node are "+
+                "immediately reflected in the NodeList.";
+            //   
+            // Retrieve the targeted data and append a new Element node to it.
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            nodeList = testNode.ChildNodes;//.node.
+            testNode.AppendChild(util.createNode(util.ELEMENT_NODE,"text3"));//.node.
+            computedValue = nodeList.Count;
+            //
+            //  Write out results.
+            //
+            results.expected = expectedValue.ToString();
+            results.actual = computedValue.ToString();
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0054NO --------------------------
+        //
+        //------------------------- test case core-0055NO -----------------------------
+        //
+        // Testing feature - The firstChild attribute contains the first child of this
+        //                   node.
+        //
+        // Testing approach - Retrieve the second employee and examine its firstChild
+        //                    attribute.  It should be set to a node whose tag name
+        //                    "employeeId".
+        //
+        // Semantic Requirements: 24
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0055NO()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode firstChildNode = null;
+
+            testResults results = new testResults("Core0055NO");
+
+            results.description = "The firstChild attribute contains the first "+
+                "child of this node.";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            firstChildNode = testNode.FirstChild;//.node.
+            //
+            // Its firstChild attribute's tagName should be "employeeId".
+            //
+            computedValue = firstChildNode.Name;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0055NO --------------------------
+        //
+        //------------------------- test case core-0056NO -----------------------------
+        //
+        // Testing feature - If there is no first child then the firstChild attribute 
+        //                   returns null.
+        //
+        // Testing approach - Retrieve the Text node from the first child of the first 
+        //                    employee and examine its firstChild attribute.  It 
+        //                    should be set to null.
+        //
+        // Semantic Requirements: 25
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0056NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode noChildNode = null;
+
+            testResults results = new testResults("Core0056NO");
+            try
+            {
+                results.description = "If a node does not have a first child then its "+
+                    "firstChild attribute returns null.";
+                //
+                // Get the targeted data.
+                //
+                testNode = util.nodeObject(util.FIRST,util.FIRST);
+                noChildNode = testNode.FirstChild;//.node.
+                //
+                //  Its firstChild attribute should be equal to null.
+                //
+                computedValue = noChildNode.FirstChild;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0056NO --------------------------
+        //
+        //------------------------- test case core-0057NO -----------------------------
+        //
+        // Testing feature - The lastChild attribute contains the last child of this
+        //                   node.
+        //
+        // Testing approach - Retrieve the second employee and examine its lastChild
+        //                    attribute.  It should be set to a node whose tag name
+        //                    is "address".
+        //
+        // Semantic Requirements: 26
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0057NO()
+        {
+            string computedValue = "";
+            string expectedValue = "address";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode lastChildNode = null;
+
+            testResults results = new testResults("Core0057NO"); 
+
+            results.description = "The lastChild attribute contains the last "+
+                "child of this node.";
+            //
+            // Retrieve the targeted data and access its lastChild attribute.
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            //
+            // Its lastChild attribute should be equal to a node with tag name = "address".
+            //
+            lastChildNode = testNode.LastChild;//.node.
+            computedValue = lastChildNode.Name;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0057NO --------------------------
+        //
+        //------------------------- test case core-0058NO -----------------------------
+        //
+        // Testing feature - If there is no last child then the lastChild attribute
+        //                   returns null.
+        //
+        // Testing approach - Retrieve the Text node inside the first child of the 
+        //                    second employee and examine its lastChild attribute.  
+        //                    It should be set to null.
+        //
+        // Semantic Requirements: 27
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0058NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode noChildNode = null;
+
+            testResults results = new testResults("Core0058NO");
+            try
+            {
+                results.description = "If a node does not have a last child then its "+
+                    "lastChild attribute returns null.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.FIRST);
+                noChildNode = testNode.FirstChild;//.node.
+                //
+                // Its lastChild attribute should be equal to null.
+                //
+                computedValue = noChildNode.LastChild;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0058NO --------------------------
+        //
+        //------------------------- test case core-0059NO -----------------------------
+        //
+        // Testing feature - The previousSibling attribute contains the node 
+        //                   immediately preceding this node.
+        //
+        // Testing approach - Retrieve the second child of the second employee and 
+        //                    examine its previousSibling attribute.  It should be set 
+        //                    to a node whose tag name is "employeeId".
+        //
+        // Semantic Requirements: 28 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0059NO()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode itsPreviousSibling = null;
+
+            testResults results = new testResults("Core0059NO");
+            try
+            {
+                results.description = "The previousSibling attribute contains the node "+
+                    "immediately preceding this node.";
+                //
+                // Retrieve the targeted data and accesss its previousiSibling attribute.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SECOND);
+                itsPreviousSibling = testNode.PreviousSibling;//.node.
+                //
+                // Its previousSibling attribute should have a tag name = "employeeId".
+                //
+                computedValue = itsPreviousSibling.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0059NO --------------------------
+        //
+        //------------------------- test case core-0060NO -----------------------------
+        //
+        // Testing feature - If there is no immediately preceding node then the 
+        //                   previousSibling attribute returns null.
+        //
+        // Testing approach - Retrieve the first child of the of the second employee
+        //                    employee and examine its previousSibling attribute.  
+        //                    It should be set to null.
+        //
+        // Semantic Requirements: 29
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0060NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0060NO");
+            try
+            {
+                results.description = "If there is no node immediately preceding this "+
+                    "node then the previousSibling attribute returns "+
+                    "null.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.FIRST);
+                //
+                // Its previousSibling attribute should be equal to null.
+                //
+                computedValue = testNode.PreviousSibling;//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0060NO --------------------------
+        //
+        //------------------------- test case core-0061NO -----------------------------
+        //
+        // Testing feature - The nextSibling attribute contains the node
+        //                   immediately following this node.
+        //
+        // Testing approach - Retrieve the first child of the second employee and
+        //                    examine its nextSibling attribute.  It should be set
+        //                    to a node whose tag name is "name".
+        //
+        // Semantic Requirements: 30 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0061NO()
+        {
+            string computedValue = "";
+            string expectedValue = "name";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode itsNextSibling = null;
+
+            testResults results = new testResults("Core0061NO");
+            try
+            {
+                results.description = "The nextSibling attribute contains the node "+
+                    "immediately following this node.";
+                //
+                // Retrieve the targeted data and access its nextSibling attribute.
+                //
+                testNode = util.nodeObject(util.SECOND,util.FIRST);
+                itsNextSibling = testNode.NextSibling;//.node.
+                //
+                // Its nextSibling attribute should be a node with tag name = "name".
+                //
+                computedValue = itsNextSibling.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0061NO --------------------------
+        //
+        //------------------------- test case core-0062NO -----------------------------
+        //
+        // Testing feature - If there is no node immediately following this node 
+        //                   then the nextSibling attribute returns null.
+        //
+        // Testing approach - Retrieve the last child of the second employee
+        //                    and examine its nextSibling attribute.  It should 
+        //                    be set to null.
+        //
+        // Semantic Requirements: 31 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0062NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0062NO");
+            try
+            {
+                results.description = "If there is no node immediately following this "+
+                    "node then the nextSibling attribute returns null.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                //
+                // Its NextSibling attribute should be equal to null.
+                //
+                computedValue = testNode.NextSibling;//.node.
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            //  Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0062NO --------------------------
+        //
+        //------------------------- test case core-0063NO -----------------------------
+        //
+        // Testing feature - The ownerDocument attribute contains the Document 
+        //                   associated with this node.
+        //
+        // Testing approach - Retrieve the second employee and examine its
+        //                    ownerDocument attribute.  It should contain a
+        //                    document whose documentElement attribute is equal
+        //                    to "staff".
+        //
+        // Semantic Requirements: 32
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0063NO()
+        {
+            string computedValue = "";
+            string expectedValue = "staff";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlDocument ownerDoc = null;
+
+            testResults results = new testResults("Core0063NO");
+
+            results.description = "The ownerDocument attribute contains the Document "+
+                "associated with this node.";
+            //
+            // Retrieve the targeted data and access its ownerDocument attribute.
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            ownerDoc = testNode.OwnerDocument;//.node.
+            //
+            // the nodeName of its root node should be "staff"; 
+            //
+            computedValue = ownerDoc.DocumentElement.Name;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0063NO --------------------------
+        //
+        //------------------------- test case core-0064NO -----------------------------
+        //
+        // Testing feature - The ownerDocument attribute returns null if the
+        //                   target node is itself a Document. 
+        //
+        // Testing approach - Retrieve the master document by invoking the 
+        //                    "getDOMDocument()" method then examine the
+        //                    ownerDocument attribute of the returned object.
+        //                    It should be null.
+        //
+        // Semantic Requirements: 33
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0064NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0064NO");
+
+            results.description = "The ownerDocument attribute returns null if the "+
+                "target node is itself a Document.";
+            //
+            // Retrieve the targeted data.
+            //
+            testNode = util.getDOMDocument();
+            //
+            //  Its ownerDocument attribute should be null. 
+            //
+            computedValue = testNode.OwnerDocument;
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0064NO --------------------------
+        //
+        //------------------------- test case core-0065NO -----------------------------
+        //
+        // Testing feature - The insertBefore(newChild,refChild) method inserts the
+        //                   node newChild before the node refChild. 
+        //
+        // Testing approach - Insert a newly created Element node before the fourth 
+        //                    child of the second employee and examine the new child
+        //                    and the reference child after the insertion for correct
+        //                    placement.  
+        //
+        // Semantic Requirements: 34
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0065NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild salary";
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlElement newChild = null;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0065NO");
+            try
+            {
+                results.description = "The insertBefore(newChild,refChild) method inserts "+
+                    "the node newChild before the node refChild.";
+                //
+                // Retrieve targeted data, create a new Element node to insert, define the 
+                // reference node, and insert the newly created element.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                refChild = util.nodeObject(util.SECOND,util.FOURTH);
+                newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
+                testNode.InsertBefore(newChild, refChild);//.node.
+                //
+                // Check that each node is in the proper position.
+                //
+                computedValue += util.getSubNodes(testNode).Item(util.FOURTH).Name+" ";
+                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0065NO --------------------------
+        //
+        //------------------------- test case core-0066NO -----------------------------
+        //
+        // Testing feature - If the refChild is null then the 
+        //                   insertBefore(newChild,refChild) method inserts the
+        //                   node newChild at the end of the list of children.
+        //
+        // Testing approach - Retrieve the second employee and invoke the the 
+        //                    insertBefore(newChild,refChild) method with 
+        //                    refChild = null.  Under these conditions the
+        //                    newChild should be added at the end of the list.
+        //                    The last item in the list is examined after the 
+        //                    insertion.  The last Element node of the list 
+        //                    should be "newChild".
+        //
+        // Semantic Requirements: 35
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0066NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild";
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0066NO");
+
+            results.description = "If refChild is null then the insertBefore("+
+                "newChild,refChild) method inserts the node "+
+                "newChild at the end of the list.";
+            //
+            // Retrieve targeted data, create a new Element node to insert, define 
+            // the reference node and insert the newly created element
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            newChild = util.createNode(util.ELEMENT_NODE,"newChild");
+            testNode.InsertBefore(newChild, refChild);//.node.
+            //
+            // Retrieve the node at the end of the list.
+            //
+            computedValue = testNode.LastChild.Name;//.node.
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0066NO --------------------------
+        //
+        //------------------------- test case core-0067NO -----------------------------
+        //
+        // Testing feature - If the refChild is a DocumentFragment object then all
+        //                   its children are inserted in the same order before
+        //                   the refChild. 
+        //
+        // Testing approach - Create a DocumentFragment object and populate it with
+        //                    two element nodes.  Retrieve the second employee
+        //                    and insert the newly created DocumentFragment before
+        //                    its fourth child.  The second employee should now
+        //                    have two extra children ("childNode1" and "childNode2")
+        //                    at positions fourth and fifth respectively.
+        //
+        // Semantic Requirements: 36
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0067NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild1 newChild2";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlDocumentFragment newDocFragment = util.getDOMDocument().CreateDocumentFragment();
+
+            testResults results = new testResults("Core0067NO");
+            try
+            {
+                results.description = "If newChild is a DocumentFragment object, then all "+
+                    "its children are inserted in the same order before "+
+                    "the refChild node.";
+                //
+                // Populate the DocumentFragment object.
+                //
+                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild1"));
+                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild2"));
+                //
+                // Retrieve targeted data, define reference node and insert new child.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                refChild = util.nodeObject(util.SECOND,util.FOURTH);
+                testNode.InsertBefore(newDocFragment,refChild);//.node.
+                //
+                // Check that all the new nodes are in the proper position.
+                //
+                computedValue += util.getSubNodes(testNode).Item(util.FOURTH).Name+" ";
+                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name; 
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0067NO --------------------------
+        //
+        //------------------------- test case core-0068NO -----------------------------
+        //
+        // Testing feature - The insertBefore(newChild,refChild) method returns the
+        //                   node being inserted.
+        //
+        // Testing approach - Insert an Element node before the fourth child
+        //                    of the second employee and examine the returned
+        //                    node from the method.  The node Element node 
+        //                    returned by the method should be "newChild".
+        //
+        // Semantic Requirements: 37
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0068NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlNode insertedNode = null;
+
+            testResults results = new testResults("Core0068NO");
+            try
+            {
+                results.description = "The insertBefore(newChild,refChild) method returns "+
+                    "the node being inserted.";
+                //
+                // Retrieve targeted data, define reference and new child nodes and insert
+                // new child.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                refChild = util.nodeObject(util.SECOND,util.FOURTH);
+                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
+                insertedNode = testNode.InsertBefore(newChild,refChild);//.node.
+                //
+                // the returned node should have a nodeName = "newChild" 
+                //
+                computedValue = insertedNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0068NO --------------------------
+        //
+        //------------------------- test case core-0069NO -----------------------------
+        //
+        // Testing feature - If the newChild is already in the tree, The 
+        //                   insertBefore(newChild,refChild) method first
+        //                   remove it before the insertion takes place.
+        //
+        // Testing approach - Insert a node element (employeeId tag) that is already 
+        //                    present in the tree.  The existing node should be
+        //                    remove first and the new one inserted.  The node is
+        //                    inserted at a different position in the tree to assure
+        //                    that it was indeed inserted.
+        //
+        // Semantic Requirements: 38
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0069NO()
+        {
+            string computedValue = "";
+            string expectedValue = "name employeeId";
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0069NO");
+            try
+            {
+                results.description = "If newChild is already in the tree, it is first "+
+                    "removed before the insertion (from insertBefore"+
+                    "(newChild,refChild) method) takes place.";
+                //
+                // Retrieve targeted data, define reference and new child and insert the
+                // new child.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                newChild = util.nodeObject(util.SECOND,util.FIRST);
+                refChild = util.nodeObject(util.SECOND,util.SIXTH);
+                testNode.InsertBefore(newChild,refChild);//.node.
+                //
+                // the newChild should now be the previous to the last item and the
+                // first child should be one that used to be at the second position.
+                //
+                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
+                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0069NO --------------------------
+        //
+        //------------------------- test case core-0070NO -----------------------------
+        //
+        // Testing feature - The replaceChild(newChild,oldChild) method replaces 
+        //                   the node oldChild with the node newChild.
+        //
+        // Testing approach - Replace the first element of the second employee
+        //                    with a newly created node element and examine the
+        //                    first position after the replacement operation is
+        //                    done.  The new element should be "newChild". 
+        //
+        // Semantic Requirements: 39
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0070NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlNode oldChild = null;
+
+            testResults results = new testResults("Core0070NO");
+            try
+            {
+                results.description = "The replaceChild(newChild,oldChild) method "+
+                    "replaces the node oldChild with the node newChild";
+                //
+                // Create a new Element node to replace, define the node to be
+                // replaced and replace it.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                oldChild = util.nodeObject(util.SECOND,util.FIRST);
+                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
+                testNode.ReplaceChild(newChild,oldChild);//.node.
+                //
+                // Check that the first position contains the new node.
+                //
+                computedValue = util.getSubNodes(testNode).Item(util.FIRST).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0070NO ------------------------
+        //
+        //------------------------- test case core-0071NO ---------------------------
+        //
+        // Testing feature - If the newChild is already in the tree, it is
+        //                   first removed before the new one is added 
+        //
+        // Testing approach - Retrieve the second employee and replace its last child
+        //                    with its first child.  After the replacement operation
+        //                    The first child should now be the one that used to be at 
+        //                    the second position in the list and the last one should
+        //                    be the one that used to be at the first position.
+        //
+        // Semantic Requirements: 40 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0071NO()
+        {
+            string computedValue = "";
+            string expectedValue = "name employeeId";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlNode oldChild = null;
+            System.Xml.XmlNode newChild = null;
+
+            testResults results = new testResults("Core0071NO");
+            try
+            {
+                results.description = "If newChild is already in the tree, it is first "+
+                    "removed before the replace(from replaceChild"+
+                    "(newChild,oldChild) method) takes place.";
+                //
+                // Retrieve targeted data, identify new and old children and replace
+                // last child with the new child.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                newChild = util.nodeObject(util.SECOND,util.FIRST);
+                oldChild = util.nodeObject(util.SECOND,util.SIXTH);
+                testNode.ReplaceChild(newChild,oldChild);//.node.
+                //
+                // The first item in the list should be the one that used to be at the
+                // second position and the last one should be the one that used to be at
+                // the first position in the list.
+                //
+                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
+                computedValue += util.getSubNodes(testNode).Item(util.FIFTH).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0071NO --------------------------
+        //
+        //------------------------- test case core-0072NO -----------------------------
+        //
+        // Testing feature - The replaceChild(newChild,oldChild) method returns
+        //                   the node being replaced.
+        //
+        // Testing approach - Replace the first element of the second employee
+        //                    with a newly created node element and examine the
+        //                    the value returned by the replaceChild(newChild,oldChild)
+        //                    after the replacement operation is done.  The returned 
+        //                    node should have a nodeName equal to "employeeId".
+        //
+        // Semantic Requirements: 41 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0072NO()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode oldChild = null;
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlNode replacedNode = null;
+
+            testResults results = new testResults("Core0072NO");
+            try
+            {
+                results.description = "The replaceChild(newChild,oldChild) method returns "+
+                    "the node being replaced.";
+                //
+                // Retrieve the targeted data, define new and old children and replace
+                // old child with new child.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                oldChild = util.nodeObject(util.SECOND,util.FIRST);
+                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
+                replacedNode = testNode.ReplaceChild(newChild, oldChild);//.node.
+                //
+                // The returned node should be the one being replaced.
+                //
+                computedValue = replacedNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0072NO --------------------------
+        //
+        //------------------------- test case core-0073NO -----------------------------
+        //
+        // Testing feature - The removeChild(oldChild) method removes the node
+        //                   indicated by oldChild.
+        //
+        // Testing approach - Retrieve the second employee and remove its first
+        //                    child. After the removal operation takes place, the
+        //                    second employee should have 5 children and the first
+        //                    one should be the one that used to be at the second
+        //                    position in the list.
+        //
+        // Semantic Requirements: 42 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0073NO()
+        {
+            string computedValue = "";
+            string expectedValue = "name 5";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlNode oldChild = null;
+
+            testResults results = new testResults("Core0073NO");
+            try
+            {
+                results.description = "The removeChild(oldChild) method removes the "+
+                    "node indicated by oldChild.";
+                //
+                // Retrieve targeted data, identify old child and remove it from the
+                // list of children.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                oldChild = util.nodeObject(util.SECOND,util.FIRST);  
+                testNode.RemoveChild(oldChild);//.node.
+                //
+                // Check that the node was indeed removed from the list.
+                //
+                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
+                computedValue += util.getSubNodes(testNode).Count;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0073NO --------------------------
+        //
+        //------------------------- test case core-0074NO -----------------------------
+        //
+        // Testing feature - The removeChild(oldChild) method returns the node
+        //                   removed.
+        //
+        // Testing approach - Remove the first element of the second employee
+        //                    and examine the value returned by the 
+        //                    removeChild(oldChild) after removal operation is 
+        //                    done.  The returned node should have a tag name equal
+        //                    to "employeeId".
+        //
+        // Semantic Requirements: 43
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0074NO()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode oldChild = null;
+            System.Xml.XmlNode removedNode = null;
+
+            testResults results = new testResults("Core0074NO");
+            try
+            {
+                results.description = "The removeChild(oldChild) method returns the "+
+                    "node removed.";
+                //
+                // Retrieve the targeted data and remove it.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                oldChild = util.nodeObject(util.SECOND,util.FIRST);
+                removedNode = testNode.RemoveChild(oldChild);//.node.
+                //
+                // The returned node should be the node removed.
+                //
+                computedValue = removedNode.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0074NO --------------------------
+        //
+        //------------------------- test case core-0075NO -----------------------------
+        //
+        // Testing feature - The appendChild(newChild) method adds the node newChild 
+        //                   the end of the list of children of the node.
+        //
+        // Testing approach - Retrieve the second employee and append a new Element 
+        //                    node to its list of children.  The last node in the
+        //                    list is then retrieved and its nodeName attribute
+        //                    examined.  It should be equal to "newChild". 
+        //
+        // Semantic Requirements: 44 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0075NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlNode newChild = null;
+
+            testResults results = new testResults("Core0075NO");
+            try
+            {
+                results.description = "The appendChild(newChild) method adds the node "+
+                    "newChild to the end of the list of children of "+
+                    "the node.";
+                //
+                // Create a new Element node and append it to the end of the list.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                newChild = util.createNode(util.ELEMENT_NODE,"newChild");
+                testNode.AppendChild(newChild);//.node.
+                //
+                // Retrieve the new last child.
+                //
+                computedValue = util.getSubNodes(testNode).Item(util.SEVENTH).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0075NO ------------------------
+        //
+        //------------------------- test case core-0076NO ---------------------------
+        //
+        // Testing feature - If the newChild is already in the tree, it is first 
+        //                   removed before the new one is appended.
+        //
+        // Testing approach - Retrieve the second employee and its first child, then 
+        //                    append the first child to the end of the list.  After
+        //                    the append operation is done, retrieve the element at
+        //                    at the top of the list and the one at the end of the 
+        //                    list.  The last node should be the one that used to be
+        //                    at the top of the list and the first one should be the
+        //                    one that used to be second in the list.
+        //
+        // Semantic Requirements: 45
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0076NO()
+        {
+            string computedValue = "";
+            string expectedValue = "name employeeId";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlNode newChild = null;
+
+            testResults results = new testResults("Core0076NO");
+            try
+            {
+                results.description = "If newChild is already in the tree, it is first " + "removed before the append takes place.";
+                //
+                // Retrieve targeted data, define the new child and append it to the
+                // end of the list.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                newChild = util.nodeObject(util.SECOND,util.FIRST);
+                testNode.AppendChild(newChild);//.node.
+                //
+                // Access the relevant new nodes and its nodeName attributes.
+                //
+                computedValue += util.getSubNodes(testNode).Item(util.FIRST).Name+" ";
+                computedValue += util.getSubNodes(testNode).Item(util.SIXTH).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0076NO --------------------------
+        //
+        //------------------------- test case core-0077NO -----------------------------
+        //
+        // Testing feature - If the newChild is a DocumentFragment object then all
+        //                   its content is added to the child list of this node.
+        //
+        // Testing approach - Create and populate a new DocumentFragment object and
+        //                    append it to the second employee.  After the append
+        //                    operation is done then retrieve the new nodes at the
+        //                    end of the list, they should be the two Element nodes
+        //                    from the DocumentFragment.
+        //
+        // Semantic Requirements: 46
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0077NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild1 newChild2";
+            System.Xml.XmlElement testNode = null;
+            System.Xml.XmlDocumentFragment newDocFragment = util.getDOMDocument().CreateDocumentFragment();
+
+            testResults results = new testResults("Core0077NO");
+            try
+            {
+                results.description = "If newChild is a DocumentFragment object, then the "+
+                    "entire content of the DocumentFragment is appended "+
+                    "to the child list of this node.";
+                //
+                // Populate the DocumentFragment object.
+                //
+                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild1"));
+                newDocFragment.AppendChild(util.createNode(util.ELEMENT_NODE,"newChild2"));
+                //
+                // Retrieve targeted data and append new DocumentFragment object. 
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                testNode.AppendChild(newDocFragment);//.node.
+                //
+                // Retrieve all the new nodes from the proper position.
+                //
+                computedValue += util.getSubNodes(testNode).Item(util.SEVENTH).Name+" ";
+                computedValue += util.getSubNodes(testNode).Item(util.EIGHT).Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0077NO --------------------------
+        //
+        //------------------------- test case core-0078NO -----------------------------
+        //
+        // Testing feature - The appendChild(newChild) method returns the node
+        //                   added.
+        //
+        // Testing approach - Append a newly created node to the child list of the 
+        //                    second employee and examine the returned value
+        //                    The returned value should be "newChild".
+        //
+        // Semantic Requirements: 47
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0078NO()
+        {
+            string computedValue = "";
+            string expectedValue = "newChild";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode appendedNode = null;
+            System.Xml.XmlNode newChild = null;
+
+            testResults results = new testResults("Core0078NO");
+
+            results.description = "The appendChild(newChild) method returns the node "+
+                "added.";
+            //
+            // Retrieve the targeted data and append a new node to it.
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            newChild = util.createNode(util.ELEMENT_NODE,"newChild");
+            appendedNode = testNode.AppendChild(newChild);//.node.
+            //
+            // The returned node should be the node appended.
+            //
+            computedValue = appendedNode.Name;
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0078NO --------------------------
+        //
+        //------------------------- test case core-0079NO -----------------------------
+        //
+        // Testing feature - The hasChildNodes method returns true if the node has
+        //                   any children. 
+        //
+        // Testing approach - Retrieve the root node (tag name = "staff") and
+        //                    invoke its hasChildNodes.Item() method.  It should return
+        //                    the value true.
+        //
+        // Semantic Requirements: 48
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0079NO()
+        {
+            string computedValue = "";
+            string expectedValue = "True";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0079NO");
+
+            results.description = "The hasChildNodes method returns true if the "+
+                "node has any children.";
+            //
+            // Retrieve the targeted data and access its hasChilNodes method.
+            //
+            testNode = util.nodeObject(util.SECOND,-1);
+            computedValue = testNode.HasChildNodes.ToString();//.Item();//.node.
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0079NO --------------------------
+        //
+        //------------------------- test case core-0080NO -----------------------------
+        //
+        // Testing feature - The hasChildNodes method returns false if the node has
+        //                   no children.
+        //
+        // Testing approach - Retrieve the Text node inside the first child of the
+        //                    second employee and invoke its hasChildNodes.Item() method.  
+        //                    It should return the value false as this node has no
+        //                    children.
+        //
+        // Semantic Requirements: 49
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0080NO()
+        {
+            string computedValue = "";
+            string expectedValue = "False";
+            System.Xml.XmlNode testNode = null;
+
+            testResults results = new testResults("Core0080NO");
+            try
+            {
+                results.description = "The hasChildNodes method returns false if the "+
+                    "node has no children.";
+                //
+                // Retrieve the targeted data and access its hasChildNodes method.
+                //
+                testNode = util.nodeObject(util.SECOND,util.FIRST);
+                System.Xml.XmlNode textNode = testNode.FirstChild;//.node.
+                computedValue = textNode.HasChildNodes.ToString();//.Item();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0080NO --------------------------
+        //
+        //------------------------- test case core-0081NO -----------------------------
+        //
+        // Testing feature - The cloneNode(deep) method returns a copy of the node only
+        //                   if deep = false.
+        //
+        // Testing approach - Retrieve the second employee and invoke its 
+        //                    cloneNode(deep) method with deep = false.  The
+        //                    method should clone this node only.  The nodeName,
+        //                    and length of the childNode list are checked, 
+        //                    they should be "employee" and 0.
+        //
+        // Semantic Requirements: 50 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0081NO()
+        {
+            string computedValue = "";
+            string expectedValue = "employee 0";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode clonedNode = null;
+
+            testResults results = new testResults("Core0081NO");
+            try
+            {
+                results.description = "The cloneNode(deep) method returns a copy of this "+
+                    "node only if deep = false.";
+                //
+                // Retrieve the targeted data and access its cloneNode method.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                clonedNode = testNode.CloneNode(false);//.node.
+                //
+                // Retrieve values of the cloned node.
+                //      
+                computedValue += clonedNode.Name+" ";
+                computedValue += clonedNode.ChildNodes.Count; 
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0081NO --------------------------
+        //
+        //------------------------- test case core-0082NO -----------------------------
+        //
+        // Testing feature - The cloneNode(deep) method returns a copy of the node and 
+        //                   the subtree under it if deep = true.
+        //
+        // Testing approach - Retrieve the second employee and invoke its
+        //                    cloneNode(deep) method with deep = true.  The
+        //                    method should clone this node and the subtree under
+        //                    it.  The tag name of each child of the returned
+        //                    node is checked to insure the entire subtree under
+        //                    the second employee was cloned.  
+        //
+        // Semantic Requirements: 51
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0082NO()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId name position salary gender address ";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNodeList subTree = null;
+            System.Xml.XmlNode clonedNode = null;
+
+            testResults results = new testResults("Core0082NO");
+            try
+            {
+                results.description = "The cloneNode(deep) method returns a copy of this "+
+                    "node and the subtree under it if deep = true.";
+                //
+                // Retrieve the targeted data and invoke its cloneNode method.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                clonedNode = testNode.CloneNode(true);//.node.
+                subTree = clonedNode.ChildNodes;
+                //
+                // Retrieve the cloned node children.
+                //
+                for (int index = 0;index < subTree.Count; index++) 
+                    computedValue += subTree.Item(index).Name+" ";
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0082NO --------------------------
+        //
+        //------------------------- test case core-0083NO -----------------------------
+        //
+        // Testing feature - The duplicate node returned by the cloneNode(deep) method 
+        //                   has no parent (parentNode = null).
+        //
+        // Testing approach - Retrieve the second employee and invoke its
+        //                    cloneNode(deep) method with deep = false.  The
+        //                    duplicate node returned by the method should have its 
+        //                    parentNode attribute set to null.
+        //
+        // Semantic Requirements: 52
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0083NO()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode clonedNode = null;
+
+            testResults results = new testResults("Core0083NO");
+            try
+            {
+                results.description = "The duplicate node returned by the cloneNode(deep) "+
+                    "method has no parent (parentNode = null).";
+                //
+                // Retrieve the targeted data and invoke the cloneNode method.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                clonedNode = testNode.CloneNode(false);//.node.
+                //
+                // Its parentNode attribute should be null.
+                //
+                computedValue = clonedNode.ParentNode;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0083NO --------------------------
+        //
+        //------------------------- test case core-0084NO -----------------------------
+        //
+        // Testing feature - The cloneNode(deep) method does not copy text unless it is
+        //                   deep cloned. (test for deep clone = false)
+        //
+        // Testing approach - Retrieve the fourth child of the second employee and 
+        //                    invoke its cloneNode(deep) method with deep = false.  The
+        //                    duplicate node returned by the method should not copy any
+        //                    text data contained in this node. 
+        //
+        // Semantic Requirements: 53
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0084NO()
+        {
+            string testName = "core-0084NO";
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode clonedNode = null;
+
+            testResults results = new testResults("Core0084NO");
+            try
+            {
+                results.description = "The cloneNode(deep) method does not copy any text "+
+                    "unless it is deep cloned(deep = false).";
+                //
+                // Retrieve the targeted data and invoke its clonedNode method.
+                //
+                testNode = util.nodeObject(util.SECOND,util.FOURTH);
+                clonedNode = testNode.CloneNode(false);//.node.
+                //
+                // The cloned node should have no text data in it.
+                //
+                computedValue = clonedNode.LastChild;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            //  Write out results.
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0084NO --------------------------
+        //
+        //------------------------- test case core-0085NO -----------------------------
+        //
+        // Testing feature - The cloneNode(deep) method does not copy text unless it is
+        //                   deep cloned. (test for deep clone = true)
+        //
+        // Testing approach - Retrieve the fourth child of the second employee and
+        //                    invoke its cloneNode(deep) method with deep = true.  The
+        //                    duplicate node returned by the method should copy any
+        //                    text data contained in this node.
+        //
+        // Semantic Requirements: 53
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0085NO()
+        {
+            string computedValue = "";
+            string expectedValue = "35,000";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode clonedNode = null;
+
+            testResults results = new testResults("Core0085NO");
+            try
+            {
+                results.description = "The cloneNode(deep) method does not copy any text "+
+                    "unless it is deep cloned(deep = true).";
+                //
+                // Retrieve the targeted data and invoke its cloneNode method.
+                //
+                testNode = util.nodeObject(util.SECOND,util.FOURTH);
+                clonedNode = testNode.CloneNode(true);//.node.
+                //
+                // Retrieve the text data inside the cloned node.
+                //
+                computedValue = clonedNode.LastChild.Value;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0085NO --------------------------
+        //
+        //------------------------- test case core-0086NO -----------------------------
+        //
+        // Testing feature - If the cloneNode(deep) method was used to clone an Element
+        //                   node, all the attributes of the Element are copied (and
+        //                   their values).
+        //
+        // Testing approach - Retrieve the last child of the second employee and
+        //                    invoke its cloneNode(deep) method with deep = true.  The
+        //                    duplicate node returned by the method should copy the
+        //                    attributes associated with this node. 
+        //
+        // Semantic Requirements: 54
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0086NO()
+        {
+            string testName = "core-0086NO";
+            string computedValue = "";
+            string expectedValue = "";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode clonedNode = null;
+
+            testResults results = new testResults("Core0086NO");
+            try
+            {
+                results.description = "If the cloneNode(deep) method was used to clone an "+
+                    "Element node then all the attributes associated "+
+                    "associated with this node are copied too."; 
+                //
+                // Retrieve the targeted data and invoke its cloneNode method.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                clonedNode = testNode.CloneNode(true);//.node.
+                //
+                // Retreive cloned node and its attributes.
+                //
+                computedValue += clonedNode.Attributes.Item(0).Name+" ";
+                computedValue += clonedNode.Attributes.Item(1).Name;
+                //
+                // Determine order of NamedNodeMap items.
+                //
+                if (computedValue.Substring(0,1) == "d" && computedValue.Substring(1,1) == "o")
+                    expectedValue = "domestic street";
+                else
+                    expectedValue = "street domestic";
+            }
+            catch(Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results.
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0086NO --------------------------
+        //
+        //------------------------- test case core-0087NO -----------------------------
+        //
+        // Testing feature - The "nodeValue" attribute of a node raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR DOM exception
+        //                   if the node is readonly. 
+        //
+        // Testing approach - Retrieve the Text node inside the Entity node named 
+        //                    "ent1" and attempt to change its nodeValue attribute.
+        //                    Since the descendants of Entity nodes are readonly, the
+        //                    desired exception should be raised.
+        //
+        // Semantic Requirements: 55 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0087NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlEntity testNode = null;
+            System.Xml.XmlText entityDesc = null;
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0087NO");
+            try
+            {
+                results.description = "The \"Value\" attribute of a node raises a "+
+                    "NO_MODIFICATION_ALLOWED_ERR Exception if the "+
+                    "node is readonly.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.getEntity("ent1");
+                entityDesc = (System.Xml.XmlText)testNode.FirstChild;
+                //
+                // attempt to set a value on a readonly node should raise an exception.
+                //
+                try 
+                {
+                    entityDesc.Value = "ABCD"; 
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0087NO -------------------------
+        //
+        //------------------------- test case core-0088NO -----------------------------
+        //
+        // Testing feature - The "insertBefore" method of a node raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if 
+        //                   the node is readonly.
+        //
+        // Testing approach - Retrieve the first EntityReference inside the second 
+        //                    employee and invoke the insertBefore(newChild,refChild) 
+        //                    method on its first descendant.  Descendants of
+        //                    EntityReference nodes are readonly and therefore the
+        //                    desired exception should be raised.  This test also 
+        //                    makes use of the "createElement" method from the 
+        //                    Document interface.
+        //
+        // Semantic Requirements: 56
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0088NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlEntityReference entityRefNode = null;
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
+            string expectedValue = "System.InvalidOperationException";//util.NO_MODIFICATION_ALLOWED_ERR;
+ 
+            testResults results = new testResults("Core0088NO");
+            try
+            {
+                results.description = "The \"insertBefore()\" method of a node raises "+
+                    "a NO_MODIFICATION_ALLOWED_ERR Exception "+
+                    "if this node is readonly.";
+                //
+                // Retrieve targeted data and define reference child.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild;//.node.
+                refChild = entityRefNode.FirstChild;
+                //
+                // Attempt to insert a node to an EntityReference descendant should raise 
+                // an exception.
+                //
+                try 
+                {
+                    entityRefNode.InsertBefore(newChild,refChild);
+                }
+                catch(InvalidOperationException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0088NO -------------------------
+        //
+        //------------------------- test case core-0089NO ----------------------------
+        //
+        // Testing feature - The "replaceChild" method of a node raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if the 
+        //                   node is readonly.
+        //
+        // Testing approach - Retrieve the first EntityReference inside the second
+        //                    employee and invoke the replaceChild(newChild,oldChild)
+        //                    method where oldChild is one of the EntityReference 
+        //                    descendants.  Descendants of EntityReference nodes are 
+        //                    readonly and therefore the desired exception should be 
+        //                    raised.  This test also makes use of the "createElement" 
+        //                    method from the Document interface.
+        //
+        // Semantic Requirements: 57
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0089NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlEntityReference entityRefNode = null;
+            System.Xml.XmlNode oldChild = null;
+            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0089NO");
+            try
+            {
+                results.description =  "The \"replaceChild(newChild, oldChild)\" method "+
+                    "of a node raises a<br>NO_MODIFICATION_ALLOWED_ERR "+
+                    " Exception if this node is readonly.";
+                //
+                // Retrieve targeted data and define oldChild.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild; //.node.
+                oldChild = entityRefNode.FirstChild;
+                //
+                // Attempt to replace a descendant of an EntityReference should raise an
+                // exception.
+                //
+                try 
+                {
+                    entityRefNode.ReplaceChild(newChild,oldChild);
+                }
+                catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0089NO -------------------------
+        //
+        //------------------------- test case core-0090NO ----------------------------
+        //
+        // Testing feature - The "removeChild" method of a node raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if the 
+        //                   node is readonly.
+        //
+        // Testing approach - Retrieve the first EntityReference inside the second
+        //                    employee and invoke its removeChild(oldChild) method
+        //                    where oldChild is one of the EntityReference descendants.
+        //                    Descendants of EntityReference nodes are readonly and
+        //                    therefore the desired exception should be raised. 
+        //
+        // Semantic Requirements: 58
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0090NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlEntityReference entityRefNode = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode oldChild = null;
+            string expectedValue = "System.ArgumentException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0090NO");
+            try
+            {
+                results.description = "The \"removeChild(oldChild)\" method of a node "+
+                    "raises NO_MODIFICATION_ALLOWED_ERR Exception "+
+                    "if this node is readonly.";
+                //
+                // Retreive targeted data and define oldChild.
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild;//.node.
+                oldChild = entityRefNode.FirstChild;
+                //
+                // Attempt to remove a descendant of an EntityReference node should
+                // raise an exception.
+                //
+                try 
+                {
+                    entityRefNode.RemoveChild(oldChild);
+                }
+                catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0090NO -------------------------
+        //
+        //------------------------- test case core-0091NO ----------------------------
+        //
+        // Testing feature - The "appendChild" method of a node raises a
+        //                   NO_MODIFICATION_ALLOWED_ERR Exception if 
+        //                   the node is readonly.
+        //
+        // Testing approach - Retrieve the first EntityReference inside the second
+        //                    employee and invoke its append(newChild) method.  
+        //                    Descendants of EntityReference nodes are readonly and
+        //                    therefore attempts to append nodes to such podes  
+        //                    should raise the desired exception.  This test 
+        //                    also makes use of the "createElement" method from
+        //                    the Document interface.
+        //
+        // Semantic Requirements: 59
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+		[Ignore(".NET DOM implementation does not match W3C DOM specification.")] // MS DOM is buggy
+	public void core0091NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlEntityReference entityRefNode = null;
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
+            string expectedValue = "System.InvalidOperationException";//util.NO_MODIFICATION_ALLOWED_ERR;
+
+            testResults results = new testResults("Core0091NO");
+            try
+            {
+                results.description = "The \"appendChild(newChild)\" method of a node "+
+                    "raises NO_MODIFICATION_ALLOWED_ERR Exception "+
+                    "if this node is readonly.";
+                //
+                // Retrieve targeted data. 
+                //
+                testNode = util.nodeObject(util.SECOND,util.SIXTH);
+                entityRefNode = (System.Xml.XmlEntityReference)testNode.FirstChild;//.node.
+                //
+                // Attempt to append nodes to descendants of EntityReference nodes should 
+                // raise an exception.
+                //
+                try 
+                {
+                    entityRefNode.AppendChild(newChild);
+                }
+				catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0091NO -------------------------
+        //
+        //------------------------- test case core-0092NO -----------------------------
+        //
+        // Testing feature - The "insertBefore()" method of a node raises
+        //                   a System.ArgumentException Exception if this node
+        //                   is of a type that does not allow children of the
+        //                   type of "newChild" to be inserted.
+        //
+        // Testing Approach - Retrieve the root node and attempt to insert a newly 
+        //                    created Attr node.  An Element node can not have
+        //                    children of the "Attr" type, therefore the desired
+        //                    exception should be raised. 
+        //
+        // Semantic Requirements: 60
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0092NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement rootNode = null;
+            System.Xml.XmlAttribute newChild = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
+            System.Xml.XmlNode refChild = null;
+            string expectedValue = "System.InvalidOperationException";
+
+            testResults results = new testResults("Core0092NO");
+            try
+            {
+                results.description = "The \"insertBefore()\" method of a node raises "+
+                    "a System.ArgumentException Exception if this node "+
+                    "does not allow nodes of type of \"newChild\" to be "+
+                    "inserted.";
+                //
+                // Retrieve targeted data.
+                //
+                rootNode = util.getRootNode();
+                refChild = util.nodeObject(util.SECOND,-1);
+                //
+                // Attempt to insert an invalid child should raise an exception.
+                //
+                try 
+                {
+                    rootNode.InsertBefore(newChild,refChild);//.node
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0092NO -------------------------
+        //
+        //------------------------- test case core-0093NO ----------------------------
+        //
+        // Testing feature - The "insertBefore()" method of a node raises
+        //                   a System.ArgumentException Exception if the node
+        //                   to be inserted is one of this node's ancestors.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to insert
+        //                    a node that is one of its ancestors (root node).
+        //                    An attempt to insert such a node should raise the
+        //                    desired exception.
+        //
+        // Semantic Requirements: 61
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0093NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlNode refChild = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0093NO");
+            try
+            {
+                results.description = "The \"insertBefore()\" method of a node raises "+
+                    "an System.ArgumentException Exception if the node "+
+                    "to be inserted is one of this node's ancestors.";
+                //
+                // Retrieve targeted data and define reference and new childs.
+                //
+                newChild = util.getRootNode();
+                System.Xml.XmlElement testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                refChild = util.getSubNodes(testNode).Item(util.FIRST);
+                //
+                // Attempt to insert a node that is one of this node ancestors should
+                // raise an exception.
+                //
+                try 
+                {
+                    testNode.InsertBefore(newChild, refChild);//.node.
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString();
+                }
+
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0093NO -------------------------
+        //
+        //------------------------- test case core-0094NO -----------------------------
+        //
+        // Testing feature - The "replaceChild" method of a node raises a
+        //                   System.ArgumentException Exception if this node
+        //                   is of a type that does not allow children of the
+        //                   type of "newChild" to be inserted.
+        //
+        // Testing Approach - Retrieve the root node and attempt to replace one of
+        //                    its children with a newly created Attr node.  An 
+        //                    Element node can not have children of the "Attr"
+        //                    type, therefore the desired exception should be raised.
+        //
+        // Semantic Requirements: 62
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0094NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement rootNode = null;
+            System.Xml.XmlAttribute newChild = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
+            System.Xml.XmlNode oldChild = null;
+            string expectedValue = "System.InvalidOperationException";
+
+            testResults results = new testResults("Core0094NO");
+            try
+            {
+                results.description = "The \"replaceChild()\" method of a node raises "+
+                    "a System.ArgumentException Exception if this node "+
+                    "does not allow nodes of type of \"newChild\".";
+                //
+                // Retrieve targeted data and define oldChild. 
+                //
+                rootNode = util.getRootNode();
+                oldChild = util.nodeObject(util.SECOND,-1);
+                //
+                // Attempt to replace a child with an invalid child should raise an exception.
+                //
+                try 
+                {
+                    rootNode.ReplaceChild(newChild,oldChild);
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+    
+            }
+            catch(System.Exception ex) 
+            {
+                computedValue = "EXCEPTION " + ex.GetType () + " : " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0094NO -------------------------
+        //
+        //------------------------- test case core-0095NO ----------------------------
+        //
+        // Testing feature - The "replaceChild()" method of a node raises
+        //                   a System.ArgumentException Exception if the node
+        //                   to be inserted is one of this node's ancestors.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to replace one
+        //                    of its children with an ancestor node (root node).
+        //                    An attempt to make such a replacement should raise the
+        //                    desired exception.
+        //
+        // Semantic Requirements: 63
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0095NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlNode oldChild = null;
+            System.Xml.XmlElement testNode = null;
+			string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0095NO");
+            try
+            {
+                results.description = "The \"replaceChild()\" method of a node raises "+
+                    "a System.ArgumentException Exception if the node "+
+                    "to be put is one of this node's ancestors.";
+                //
+                // Retrieve targeted data and define new and old childs. 
+                //
+                newChild = util.getRootNode();
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                oldChild = util.getSubNodes(testNode).Item(util.FIRST);
+                //
+                // Attempt to replace a child with an ancestor should raise an exception.
+                //
+                try 
+                {
+                    testNode.ReplaceChild(newChild,oldChild);//.node.
+                }
+				catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+
+            }
+            catch(System.Exception ex)
+            {
+				computedValue = "Exception " + ex.GetType () + " : " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0095NO -------------------------
+        //
+        //------------------------- test case core-0096NO ----------------------------
+        //
+        // Testing feature - The "appendChild" method of a node raises a
+        //                   System.ArgumentException Exception if this node
+        //                   is of a type that does not allow children of the
+        //                   type of "newChild".
+        //
+        // Testing Approach - Retrieve the root node and attempt to append a
+        //                    newly created Attr node to it.  An Element
+        //                    node can not have children of the "Attr" type,
+        //                    therefore the desired exception should be raised.
+        //
+        // Semantic Requirements: 64
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0096NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement rootNode = null;
+            System.Xml.XmlAttribute newChild = (System.Xml.XmlAttribute)util.createNode(util.ATTRIBUTE_NODE,"newAttribute");
+            string expectedValue = "System.InvalidOperationException";
+
+            testResults results = new testResults("Core0096NO");
+            try
+            {
+                results.description = "The \"appendChild()\" method of a node raises "+
+                    "a System.ArgumentException Exception if this node "+
+                    "does not allow nodes of type of \"newChild\".";
+                //
+                // Retrieve the targeted data.
+                //
+                rootNode = util.getRootNode();
+                //
+                // Attempt to append an invalid child should raise an exception.
+                //
+                try 
+                {
+                    rootNode.AppendChild(newChild);
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+    
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+			util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0096NO -------------------------
+        //
+        //------------------------- test case core-0097NO ----------------------------
+        //
+        // Testing feature - The "appendChild" method of a node raises
+        //                   an System.ArgumentException Exception if the node
+        //                   to be appended is one of this node's ancestors.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to append to 
+        //                    it an ancestor node (root node). An attempt to make 
+        //                    such an insertion should raise the desired exception.
+        //
+        // Semantic Requirements: 65
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0097NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlNode newChild = null;
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0097NO");
+            try
+            {
+                results.description = "The \"appendChild()\" method of a node raises "+
+                    "a System.ArgumentException Exception if the node "+
+                    "to append is one of this node's ancestors.";
+                //
+                // Retrieve the targeted data and define the new child.
+                //
+                newChild = util.getRootNode();
+                testNode = util.nodeObject(util.SECOND,-1);
+                //
+                // Attempt to replace a child with an ancestor should raise an exception.
+                //
+                try 
+                {
+                    testNode.AppendChild(newChild);//.node.
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0097NO -------------------------
+        //
+        //------------------------- test case core-0098NO ----------------------------
+        //
+        // Testing feature - The "insertBefore" method of a node raises a
+        //                   NOT_FOUND_ERR Exception if the reference child is not
+        //                   child of this node.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to insert
+        //                    a new node before a reference node that is not
+        //                    a child of this node.  An attempt to insert before a
+        //                    non child node should raise the desired exception.
+        //
+        // Semantic Requirements: 66
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0098NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
+            System.Xml.XmlElement refChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"refChild");
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = "System.ArgumentException";//util.NOT_FOUND2_ERR;
+
+            testResults results = new testResults("Core0098NO");
+            try
+            {
+                results.description = "The \"insertBefore\" method of a node raises "+
+                    "a NOT_FOUND_ERR Exception if the reference "+
+                    "child is not a child of this node.";
+                //
+                // Retrieve targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                //
+                // Attempt to insert before a reference child that is not a child of
+                // this node should raise an exception.
+                //
+                try 
+                {
+                    testNode.InsertBefore(newChild,refChild);//.node.
+                }
+                catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0098NO -----------------------
+        //
+        //------------------------- test case core-0099NO --------------------------
+        //
+        // Testing feature - The "replaceChild" method of a node raises a
+        //                   NOT_FOUND_ERR Exception if the old child is not
+        //                   child of this node.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to replace 
+        //                    a node that is not one of its children.  An attempt 
+        //                    to replace such a node should raise the desired 
+        //                    exception.
+        //
+        // Semantic Requirements: 67
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0099NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement newChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"newChild");
+            System.Xml.XmlElement oldChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"oldChild");
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = "System.ArgumentException";//util.NOT_FOUND2_ERR;
+
+            testResults results = new testResults("Core0099NO");
+            try
+            {
+                results.description = "The \"replaceChild\" method of a node raises "+
+                    "a NOT_FOUND_ERR Exception if the old child "+
+                    "is not a child of this node.";
+                //
+                // Retrieve the targeted data..
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                //
+                // Attempt to replace a non child node should raise an exception.
+                //
+                try 
+                {
+                    testNode.ReplaceChild(newChild,oldChild);//.node.
+                }
+                catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0099NO -----------------------
+        //
+        //------------------------- test case core-0100NO --------------------------
+        //
+        // Testing feature - The "removeChild" method of a node raises a
+        //                   NOT_FOUND_ERR Exception if the old child is not
+        //                   child of this node.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to remove
+        //                    a node that is not one of its children.  An attempt
+        //                    to remove such a node should raise the desired
+        //                    exception.
+        //
+        // Semantic Requirements: 68
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0100NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement oldChild = (System.Xml.XmlElement)util.createNode(util.ELEMENT_NODE,"oldChild");
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = typeof (ArgumentException).FullName;//util.NOT_FOUND3_ERR;
+
+            testResults results = new testResults("Core0100NO");
+            try
+            {
+                results.description = "The \"removeChild\" method of a node raises "+
+                    "a NOT_FOUND_ERR Exception if the old "+
+                    "child is not a child of this node.";
+                //
+                // Retrieve targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                //
+                // Attempt to remove a non child node should raise an exception.
+                //
+                try 
+                {
+                    testNode.RemoveChild(oldChild);//.node.
+                }
+                catch(ArgumentException ex) 
+                {
+                    computedValue = ex.GetType ().FullName; 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+			util.resetData();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0100NO -----------------------
+        //
+        //------------------------- test case core-0101NO ----------------------------
+        //
+        // Testing feature - The "insertBefore" method of a node raises a
+        //                   System.ArgumentException Exception if the new child was
+        //                   created from a different document than the one that 
+        //                   created this node.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to insert
+        //                    a new child that was created from a different
+        //                    document than the one that created the second employee.
+        //                    An attempt to insert such a child should raise 
+        //                    the desired exception.
+        //
+        // Semantic Requirements: 69
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0101NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement newChild = util.getOtherDOMDocument().CreateElement("newChild");
+            System.Xml.XmlNode refChild = null;
+            System.Xml.XmlElement testNode = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0101NO");
+            try
+            {
+                results.description = "The \"insertBefore\" method of a node raises "+
+                    "a System.ArgumentException Exception if the new "+
+                    "child was created from a document different "+
+                    "from the one that created this node.";
+                //
+                // Retrieve targeted data and define reference child.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                refChild = util.getSubNodes(testNode).Item(util.FOURTH);
+                //
+                // Attempt to insert a child from a different document should raise an
+                // exception.
+                //
+                try 
+                {
+                    testNode.InsertBefore(newChild,refChild);//.node.
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+			util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0101NO -----------------------
+        //
+        //------------------------- test case core-0102NO --------------------------
+        //
+        // Testing feature - The "replaceChild" method of a node raises a
+        //                   System.ArgumentException Exception if the new child was
+        //                   created from a different document than the one that
+        //                   created this node.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to  
+        //                    replace one of its children with a node created
+        //                    from a different document.  An attempt to make such
+        //                    replacement should raise the desired exception.
+        //
+        // Semantic Requirements: 70
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0102NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement newChild = util.getOtherDOMDocument().CreateElement("newChild");
+            System.Xml.XmlNode oldChild = null;
+            System.Xml.XmlElement testNode = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0102NO");
+            try
+            {
+                results.description = "The \"replaceChild\" method of a node raises "+
+                    "a System.ArgumentException Exception if the new "+
+                    "child was created from a document different "+
+                    "from the one that created this node.";
+                //
+                // Retrieve targeted data and define oldChild.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.SECOND,-1);
+                oldChild = util.getSubNodes(testNode).Item(util.FIRST);
+                //
+                // Attempt to replace a child with a child from a different document
+                // should raise an exception.
+                //
+                try 
+                {
+                    testNode.ReplaceChild(newChild,oldChild);//.node.
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+                util.resetData();
+			Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0102NO -----------------------
+        //
+        //------------------------- test case core-0103NO --------------------------
+        //
+        // Testing feature - The "appendChild" method of a node raises a
+        //                   System.ArgumentException Exception if the new child was
+        //                   created from a different document than the one that
+        //                   created this node.
+        //
+        // Testing Approach - Retrieve the second employee and attempt to append 
+        //                    to it a node that was created from different
+        //                    document.  An attempt to make such an insertion 
+        //                    should raise the desired exception.
+        //
+        // Semantic Requirements: 71
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0103NO()
+        {
+            string computedValue = "";
+            System.Xml.XmlElement newChild = util.getOtherDOMDocument().CreateElement("newChild");
+            System.Xml.XmlNode testNode = null;
+            string expectedValue = "System.ArgumentException";
+
+            testResults results = new testResults("Core0103NO");
+            try
+            {
+                results.description = "The \"appendChild\" method of a node raises a "+
+                    "a System.ArgumentException Exception if the new "+
+                    "child was created from a document different "+
+                    "from the one that created this node.";
+                //
+                // Retrieve the targeted data.
+                //
+                testNode = util.nodeObject(util.SECOND,-1);
+                //
+                // Attempt to append a child from a different document should raise an
+                // exception.
+                //
+                try 
+                {
+                    testNode.AppendChild(newChild);//.node.
+                }
+                catch(System.Exception ex) 
+                {
+                    computedValue = ex.GetType().ToString(); 
+                }
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            results.expected = expectedValue;
+            results.actual = computedValue;
+                
+			util.resetData();
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0103NO -----------------------
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/NodeList/NodeList.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/fundamental/NodeList/NodeList.cs
@@ -1,490 +1,490 @@
-//**************************************************************************
-//
-//
-//                       National Institute Of Standards and Technology
-//                                    DTS Version 1.0
-//         
-//                                   NodeList Interface
-//
-// Written by: Carmelo Montanez
-// Modified by:  Mary Brady
-//
-// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
-// Mainsoft Corporation (c) 2003-2004
-//**************************************************************************
-using System;
-using System.Xml;
-
-using nist_dom;
-using NUnit.Framework;
-
-namespace nist_dom.fundamental
-{
-    [TestFixture]
-    public class NodeListTest
-    {
-        public static int i = 2;
-/*
-        public testResults[] RunTests()
-        {
-            testResults[] tests = new testResults[] {core0001N(), core0002N(), core0003N(),core0004N(),
-                                                        core0005N(), core0006N(), core0007N(), core0008N(),
-                                                        core0009N()};
-  
-            return tests;
-        }
-*/
-        //------------------------ test case core-0001N ------------------------
-        //
-        // Testing feature - The items in the list are accessible via an integral
-        //                   index starting from zero. (index equal 0)
-        //
-        // Testing approach - Create a list of all the children elements of the
-        //                    third employee and access its first child by using
-        //                    an index of 0.  This should result in "employeeId"
-        //                    being selected.  Further we evaluate its content
-        //                    (by examining its "nodeName" attribute) to ensure 
-        //                    the proper element was accessed.
-        //
-        // Semantic Requirements: 1
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0001N()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId";
-            System.Xml.XmlNode employeeId = null;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0001N");
-            try
-            {
-                results.description = "The elements in the list are accessible via an "+
-                    "integral index starting from 0 (this test checks "+
-                    "for index equal to 0).";
-                //
-                // Retrieve targeted data.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1); 
-                employeeId = util.getSubNodes(testNode).Item(util.FIRST); 
-                computedValue = employeeId.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-
-            //
-            // Write out results 
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0001N --------------------------
-        //
-        //--------------------------- test case core-0002N ---------------------------
-        //
-        // Testing feature - The items in the list are accessible via an integral
-        //                   index starting from zero. (index not equal 0)
-        //
-        // Testing approach - Create a list of all the children elements of the
-        //                    third employee and access its fourth child by 
-        //                    using an index of 3.  This should result in "salary"
-        //                    being selected.  Further we evaluate its "nodeName"
-        //                    attribute to ensure the proper element was accessed.
-        //
-        // Semantic Requirements: 1
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0002N()
-        {
-            string computedValue = "";
-            string expectedValue = "salary";
-            System.Xml.XmlNode salary = null;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0002N");
-            try
-            {
-                results.description = "The elements in the list are accessible via an "+
-                    "integral index starting from 0 (this test checks "+
-                    "for index not equal 0).";
-                //
-                //  Retrieve targeted data.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1); 
-                salary = util.getSubNodes(testNode).Item(util.FOURTH);
-                computedValue = salary.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            //    Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0002N --------------------------
-        //
-        //--------------------------- test case core-0003N ---------------------------
-        //
-        // Testing feature - The "item(index)" method returns the indexth item 
-        //                   in the collection.
-        //
-        // Testing approach - Create a list of all the Element children of the
-        //                    third employee and access its first child by invoking 
-        //                    the "item(index)" method with index = 0.  This should 
-        //                    cause the method to return the "employeeId" child.
-        //                    Further we evaluate the returned item's "nodeName" 
-        //                    attribute to ensure the correct item was returned. 
-        //          
-        // Semantic Requirements: 2 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0003N()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId";
-            System.Xml.XmlNode employeeId = null;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0003N");
-            try
-            {
-                results.description = "The \"item(index)\" method returns the indexth "+
-                    "item in the collection (return first item).";
-                //
-                // Retrieve targeted data.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
-                employeeId = util.getSubNodes(testNode).Item(util.FIRST);
-                computedValue = employeeId.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0003N --------------------------
-        //
-        //--------------------------- test case core-0004N ---------------------------
-        //
-        // Testing feature - The "item(index)" method returns the indexth item 
-        //                   in the collection.
-        //
-        // Testing approach - Create a list of all the Element children of the
-        //                    third employee and access its first child by invoking
-        //                    the "item(index)" method with index equals to the last 
-        //                    item in the list.  This should cause the method to 
-        //                    return the "address" child.  Further we evaluate the
-        //                    returned item's "nodeName" attribute to ensure the 
-        //                    correct item was returned.
-        //
-        // Semantic Requirements: 2
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0004N()
-        {
-            string computedValue = "";
-            string expectedValue = "address";
-            System.Xml.XmlNode address = null;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0004N");
-            try
-            {
-                results.description = "The \"item(index)\" method returns the indxth "+
-                    "item in the collection (return last item).";
-                //
-                // Retrieve targeted data.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
-                address = util.getSubNodes(testNode).Item(util.SIXTH);
-                computedValue = address.Name;
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0004N --------------------------
-        //
-        //--------------------------- test case core-0005N ---------------------------
-        //
-        // Testing feature - If the index is greater than or equal to number of  
-        //                   nodes, the "item(index)" method returns null.
-        //
-        // Testing approach - Create a list of all the Element children of the third
-        //                    employee and then invoke its "item(index)" method with 
-        //                    index equal to 6 (the number of nodes in the list).  This
-        //                    should cause the method to return null.
-        //
-        // Semantic Requirements: 3 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0005N()
-        {
-            object computedValue = null;
-            object expectedValue = null; 
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0005N");
-            try
-            {
-                results.description = "The \"item(index)\" method returns null if the "+
-                    "index is greater than or equal to the number of "+
-                    "nodes (index = number of nodes).";
-                //
-                // invoke the "item(index)" method with index equal to the number of nodes
-                // in the list (6, count starts at zero).  It should return null.
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
-                computedValue = util.getSubNodes(testNode).Item(util.SEVENTH);
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0005N --------------------------
-        //
-        //--------------------------- test case core-0006N ---------------------------
-        //
-        // Testing feature - If the index is greater than or equal to number of
-        //                   nodes, the "item(index)" method returns null.
-        //
-        // Testing approach - Create a list of all the Element children of the third
-        //                    employee and then invoke the "item(index)" with index
-        //                    equal to 7 (index is greater than number of nodes).  
-        //                    This should cause the method to return null.
-        //
-        // Semantic Requirements: 3
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0006N()
-        {
-            object computedValue = null;
-            object expectedValue = null;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0006N");
-            try
-            {
-                results.description = "The \"item(index)\" method returns null if the "+ 
-                    "index is greater than or equal to the number of "+
-                    "nodes (index > number of nodes).";
-                //
-                // Retrieve targeted data.  All counts start from zero
-                //
-                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
-                computedValue = util.getSubNodes(testNode).Item(util.EIGHT);
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = (expectedValue == null).ToString();
-            results.actual = (computedValue == null).ToString();
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0006N --------------------------
-        //
-        //--------------------------- test case core-0007N ---------------------------
-        //
-        // Testing feature - The "length" attribute contains the number of items in
-        //                   the list.
-        //
-        // Testing approach - Create a list of all the Element children of the third
-        //                    employee and then access the "length" attribute.
-        //                    It should contain the value 6.
-        //
-        // Semantic Requirements: 4 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0007N()
-        {
-            string computedValue = "0";
-            string expectedValue = "6";
-            //System.Xml.XmlNodeList thirdEmployeeList = null;
-
-            testResults results = new testResults("Core0007N");
-            try
-            {
-                results.description = "The \"length\" attribute contains the number of "+
-                    "nodes in the list (non empty list).";
-                //
-                // retrieve the targeted data and access the "length" attribute. 
-                //
-                System.Xml.XmlElement testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
-                computedValue = util.getSubNodes(testNode).Count.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0007N --------------------------
-        //
-        //--------------------------- test case core-0008N ---------------------------
-        //
-        // Testing feature - The "length" attribute contains the number of items in
-        //                   the list (test for empty list).
-        //
-        // Testing approach - Create a list of all the children of the Text node 
-        //                    inside the first child o the third employee and
-        //                    then access its "length" attribute.  It should 
-        //                    contain the value 0.
-        //
-        // Semantic Requirements: 4
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0008N()
-        {
-            string computedValue = "0";
-            string expectedValue = "0";
-            System.Xml.XmlNode testNode = null;
-            System.Xml.XmlNode textNode = null;
-
-            testResults results = new testResults("Core0008N");
-            try
-            {
-                results.description = "The \"length\" attribute contains the number of "+
-                    "nodes in the list (test for empty list).";
-                //
-                // Access the targeted data and examine the "length" attribute of an
-                // empty list.
-                //
-                testNode = util.nodeObject(util.THIRD,util.FIRST);
-                textNode = testNode.FirstChild;
-                computedValue = textNode.ChildNodes.Count.ToString();
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0008N --------------------------
-        //
-        //--------------------------- test case core-0009 ---------------------------
-        //
-        // Testing feature - The range of valid child nodes indices is 0 to length - 1.
-        // 
-        // Testing approach - Create a list of all the Element children of the 
-        //                    third employee and traverse the list from index
-        //                    0 to index length - 1.
-        //
-        // Semantic Requirements: 5 
-        //
-        //----------------------------------------------------------------------------
-
-        [Test]
-	public void core0009N()
-        {
-            string computedValue = "";
-            string expectedValue = "employeeId name position salary gender address ";
-            int lastIndex = 0;
-            int listLength = 0;
-            System.Xml.XmlElement testNode = null;
-
-            testResults results = new testResults("Core0009N");
-            try
-            {
-                results.description = "The range of valid child nodes indices is 0 to "+
-                    "length - 1.";
-                //
-                // Retrieve the targeted data and determine the length of the list.
-                //
-                testNode =  (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
-                listLength = util.getSubNodes(testNode).Count; 
-                lastIndex = listLength - 1;
-                //
-                // Traverse the list from 0 to length - 1.  All indices should be valid.
-                //
-                for (int index = 0; index <= lastIndex; index++)
-                    computedValue += util.getSubNodes(testNode).Item(index).Name+" ";
-            }
-            catch(System.Exception ex)
-            {
-                computedValue = "Exception " + ex.Message;
-            }
-            //
-            // Write out results. 
-            //
-            results.expected = expectedValue;
-            results.actual = computedValue;
-
-            Assert.AreEqual (results.expected, results.actual);
-        }
-
-        //------------------------ End test case core-0009N --------------------------
-    }
+//**************************************************************************
+//
+//
+//                       National Institute Of Standards and Technology
+//                                    DTS Version 1.0
+//         
+//                                   NodeList Interface
+//
+// Written by: Carmelo Montanez
+// Modified by:  Mary Brady
+//
+// Ported to System.Xml by: Mizrahi Rafael rafim@mainsoft.com
+// Mainsoft Corporation (c) 2003-2004
+//**************************************************************************
+using System;
+using System.Xml;
+
+using nist_dom;
+using NUnit.Framework;
+
+namespace nist_dom.fundamental
+{
+    [TestFixture]
+    public class NodeListTest
+    {
+        public static int i = 2;
+/*
+        public testResults[] RunTests()
+        {
+            testResults[] tests = new testResults[] {core0001N(), core0002N(), core0003N(),core0004N(),
+                                                        core0005N(), core0006N(), core0007N(), core0008N(),
+                                                        core0009N()};
+  
+            return tests;
+        }
+*/
+        //------------------------ test case core-0001N ------------------------
+        //
+        // Testing feature - The items in the list are accessible via an integral
+        //                   index starting from zero. (index equal 0)
+        //
+        // Testing approach - Create a list of all the children elements of the
+        //                    third employee and access its first child by using
+        //                    an index of 0.  This should result in "employeeId"
+        //                    being selected.  Further we evaluate its content
+        //                    (by examining its "nodeName" attribute) to ensure 
+        //                    the proper element was accessed.
+        //
+        // Semantic Requirements: 1
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0001N()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId";
+            System.Xml.XmlNode employeeId = null;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0001N");
+            try
+            {
+                results.description = "The elements in the list are accessible via an "+
+                    "integral index starting from 0 (this test checks "+
+                    "for index equal to 0).";
+                //
+                // Retrieve targeted data.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1); 
+                employeeId = util.getSubNodes(testNode).Item(util.FIRST); 
+                computedValue = employeeId.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+
+            //
+            // Write out results 
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0001N --------------------------
+        //
+        //--------------------------- test case core-0002N ---------------------------
+        //
+        // Testing feature - The items in the list are accessible via an integral
+        //                   index starting from zero. (index not equal 0)
+        //
+        // Testing approach - Create a list of all the children elements of the
+        //                    third employee and access its fourth child by 
+        //                    using an index of 3.  This should result in "salary"
+        //                    being selected.  Further we evaluate its "nodeName"
+        //                    attribute to ensure the proper element was accessed.
+        //
+        // Semantic Requirements: 1
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0002N()
+        {
+            string computedValue = "";
+            string expectedValue = "salary";
+            System.Xml.XmlNode salary = null;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0002N");
+            try
+            {
+                results.description = "The elements in the list are accessible via an "+
+                    "integral index starting from 0 (this test checks "+
+                    "for index not equal 0).";
+                //
+                //  Retrieve targeted data.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1); 
+                salary = util.getSubNodes(testNode).Item(util.FOURTH);
+                computedValue = salary.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            //    Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0002N --------------------------
+        //
+        //--------------------------- test case core-0003N ---------------------------
+        //
+        // Testing feature - The "item(index)" method returns the indexth item 
+        //                   in the collection.
+        //
+        // Testing approach - Create a list of all the Element children of the
+        //                    third employee and access its first child by invoking 
+        //                    the "item(index)" method with index = 0.  This should 
+        //                    cause the method to return the "employeeId" child.
+        //                    Further we evaluate the returned item's "nodeName" 
+        //                    attribute to ensure the correct item was returned. 
+        //          
+        // Semantic Requirements: 2 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0003N()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId";
+            System.Xml.XmlNode employeeId = null;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0003N");
+            try
+            {
+                results.description = "The \"item(index)\" method returns the indexth "+
+                    "item in the collection (return first item).";
+                //
+                // Retrieve targeted data.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
+                employeeId = util.getSubNodes(testNode).Item(util.FIRST);
+                computedValue = employeeId.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0003N --------------------------
+        //
+        //--------------------------- test case core-0004N ---------------------------
+        //
+        // Testing feature - The "item(index)" method returns the indexth item 
+        //                   in the collection.
+        //
+        // Testing approach - Create a list of all the Element children of the
+        //                    third employee and access its first child by invoking
+        //                    the "item(index)" method with index equals to the last 
+        //                    item in the list.  This should cause the method to 
+        //                    return the "address" child.  Further we evaluate the
+        //                    returned item's "nodeName" attribute to ensure the 
+        //                    correct item was returned.
+        //
+        // Semantic Requirements: 2
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0004N()
+        {
+            string computedValue = "";
+            string expectedValue = "address";
+            System.Xml.XmlNode address = null;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0004N");
+            try
+            {
+                results.description = "The \"item(index)\" method returns the indxth "+
+                    "item in the collection (return last item).";
+                //
+                // Retrieve targeted data.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
+                address = util.getSubNodes(testNode).Item(util.SIXTH);
+                computedValue = address.Name;
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0004N --------------------------
+        //
+        //--------------------------- test case core-0005N ---------------------------
+        //
+        // Testing feature - If the index is greater than or equal to number of  
+        //                   nodes, the "item(index)" method returns null.
+        //
+        // Testing approach - Create a list of all the Element children of the third
+        //                    employee and then invoke its "item(index)" method with 
+        //                    index equal to 6 (the number of nodes in the list).  This
+        //                    should cause the method to return null.
+        //
+        // Semantic Requirements: 3 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0005N()
+        {
+            object computedValue = null;
+            object expectedValue = null; 
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0005N");
+            try
+            {
+                results.description = "The \"item(index)\" method returns null if the "+
+                    "index is greater than or equal to the number of "+
+                    "nodes (index = number of nodes).";
+                //
+                // invoke the "item(index)" method with index equal to the number of nodes
+                // in the list (6, count starts at zero).  It should return null.
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
+                computedValue = util.getSubNodes(testNode).Item(util.SEVENTH);
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0005N --------------------------
+        //
+        //--------------------------- test case core-0006N ---------------------------
+        //
+        // Testing feature - If the index is greater than or equal to number of
+        //                   nodes, the "item(index)" method returns null.
+        //
+        // Testing approach - Create a list of all the Element children of the third
+        //                    employee and then invoke the "item(index)" with index
+        //                    equal to 7 (index is greater than number of nodes).  
+        //                    This should cause the method to return null.
+        //
+        // Semantic Requirements: 3
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0006N()
+        {
+            object computedValue = null;
+            object expectedValue = null;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0006N");
+            try
+            {
+                results.description = "The \"item(index)\" method returns null if the "+ 
+                    "index is greater than or equal to the number of "+
+                    "nodes (index > number of nodes).";
+                //
+                // Retrieve targeted data.  All counts start from zero
+                //
+                testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
+                computedValue = util.getSubNodes(testNode).Item(util.EIGHT);
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = (expectedValue == null).ToString();
+            results.actual = (computedValue == null).ToString();
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0006N --------------------------
+        //
+        //--------------------------- test case core-0007N ---------------------------
+        //
+        // Testing feature - The "length" attribute contains the number of items in
+        //                   the list.
+        //
+        // Testing approach - Create a list of all the Element children of the third
+        //                    employee and then access the "length" attribute.
+        //                    It should contain the value 6.
+        //
+        // Semantic Requirements: 4 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0007N()
+        {
+            string computedValue = "0";
+            string expectedValue = "6";
+            //System.Xml.XmlNodeList thirdEmployeeList = null;
+
+            testResults results = new testResults("Core0007N");
+            try
+            {
+                results.description = "The \"length\" attribute contains the number of "+
+                    "nodes in the list (non empty list).";
+                //
+                // retrieve the targeted data and access the "length" attribute. 
+                //
+                System.Xml.XmlElement testNode = (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
+                computedValue = util.getSubNodes(testNode).Count.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0007N --------------------------
+        //
+        //--------------------------- test case core-0008N ---------------------------
+        //
+        // Testing feature - The "length" attribute contains the number of items in
+        //                   the list (test for empty list).
+        //
+        // Testing approach - Create a list of all the children of the Text node 
+        //                    inside the first child o the third employee and
+        //                    then access its "length" attribute.  It should 
+        //                    contain the value 0.
+        //
+        // Semantic Requirements: 4
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0008N()
+        {
+            string computedValue = "0";
+            string expectedValue = "0";
+            System.Xml.XmlNode testNode = null;
+            System.Xml.XmlNode textNode = null;
+
+            testResults results = new testResults("Core0008N");
+            try
+            {
+                results.description = "The \"length\" attribute contains the number of "+
+                    "nodes in the list (test for empty list).";
+                //
+                // Access the targeted data and examine the "length" attribute of an
+                // empty list.
+                //
+                testNode = util.nodeObject(util.THIRD,util.FIRST);
+                textNode = testNode.FirstChild;
+                computedValue = textNode.ChildNodes.Count.ToString();
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0008N --------------------------
+        //
+        //--------------------------- test case core-0009 ---------------------------
+        //
+        // Testing feature - The range of valid child nodes indices is 0 to length - 1.
+        // 
+        // Testing approach - Create a list of all the Element children of the 
+        //                    third employee and traverse the list from index
+        //                    0 to index length - 1.
+        //
+        // Semantic Requirements: 5 
+        //
+        //----------------------------------------------------------------------------
+
+        [Test]
+	public void core0009N()
+        {
+            string computedValue = "";
+            string expectedValue = "employeeId name position salary gender address ";
+            int lastIndex = 0;
+            int listLength = 0;
+            System.Xml.XmlElement testNode = null;
+
+            testResults results = new testResults("Core0009N");
+            try
+            {
+                results.description = "The range of valid child nodes indices is 0 to "+
+                    "length - 1.";
+                //
+                // Retrieve the targeted data and determine the length of the list.
+                //
+                testNode =  (System.Xml.XmlElement)util.nodeObject(util.THIRD,-1);
+                listLength = util.getSubNodes(testNode).Count; 
+                lastIndex = listLength - 1;
+                //
+                // Traverse the list from 0 to length - 1.  All indices should be valid.
+                //
+                for (int index = 0; index <= lastIndex; index++)
+                    computedValue += util.getSubNodes(testNode).Item(index).Name+" ";
+            }
+            catch(System.Exception ex)
+            {
+                computedValue = "Exception " + ex.Message;
+            }
+            //
+            // Write out results. 
+            //
+            results.expected = expectedValue;
+            results.actual = computedValue;
+
+            Assert.AreEqual (results.expected, results.actual);
+        }
+
+        //------------------------ End test case core-0009N --------------------------
+    }
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/System.Xml/nist_dom/readme.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/System.Xml/nist_dom/readme.txt
@@ -1,37 +1,37 @@
-==============================
-	
-	NIST_DOM Readme
-
-Author: Mizrahi Rafael 
-rafim@mainsoft.com
-==============================
-
-
-==============================
-About the Test Suite:
-==============================
-NIST DOM is XML DOM Level 1 Test Suite,
-Mainsoft have converted part of the NIST DOM 
-Test Suite 
-from ECMAScript (Java Script) into 
-C# .Net System.XML Conformance Test Suite.
-
-NIST - National Institute of Standards and Technology.
-www.nist.gov
-
-
-==============================
-Architecture of the test suite:
-==============================
-The test suite is devided to unit tests which test every part of the DOM specifications.
-We ported to System.XML only the parts that relates to the DOM xml parser, and not the HTML DOM tests.
-
-==============================
-Files in use and their purpose:
-==============================
-The ECMAScript files that has been ported into C# remain,
-to give a reference to the old Test Suite.
-files directory contains xml and html files of the TestSuite.
-These files are specific for the tests and cannot be replaced with other files.
-The unit tests in the TestSuite tight to the input files.
-
+==============================
+	
+	NIST_DOM Readme
+
+Author: Mizrahi Rafael 
+rafim@mainsoft.com
+==============================
+
+
+==============================
+About the Test Suite:
+==============================
+NIST DOM is XML DOM Level 1 Test Suite,
+Mainsoft have converted part of the NIST DOM 
+Test Suite 
+from ECMAScript (Java Script) into 
+C# .Net System.XML Conformance Test Suite.
+
+NIST - National Institute of Standards and Technology.
+www.nist.gov
+
+
+==============================
+Architecture of the test suite:
+==============================
+The test suite is devided to unit tests which test every part of the DOM specifications.
+We ported to System.XML only the parts that relates to the DOM xml parser, and not the HTML DOM tests.
+
+==============================
+Files in use and their purpose:
+==============================
+The ECMAScript files that has been ported into C# remain,
+to give a reference to the old Test Suite.
+files directory contains xml and html files of the TestSuite.
+These files are specific for the tests and cannot be replaced with other files.
+The unit tests in the TestSuite tight to the input files.
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/676993.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/676993.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<ESPTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="urn:DRMS.ESPTable" xsi:schemaLocation="urn:DRMS.ESPTable ESPTable.xsd">
-   <ESPPump id="1"> <!-- complete pump with all the fields -->
-      <PerformanceTable t1="1.14" t2="1.15" t3="1.16" t4="1.17" t5="1.18" t6="1.19" t7="1.20" t8="1.21" t9="1.22" t10="1.23">
-         <PerformanceValue>
-            <a1>1.24</a1>
-            <a2>1.25</a2>
-            <a3>1.26</a3>
-            <a4>1.27</a4>
-         </PerformanceValue>
-      </PerformanceTable>
-   </ESPPump>
-</ESPTable>
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<ESPTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="urn:DRMS.ESPTable" xsi:schemaLocation="urn:DRMS.ESPTable ESPTable.xsd">
+   <ESPPump id="1"> <!-- complete pump with all the fields -->
+      <PerformanceTable t1="1.14" t2="1.15" t3="1.16" t4="1.17" t5="1.18" t6="1.19" t7="1.20" t8="1.21" t9="1.22" t10="1.23">
+         <PerformanceValue>
+            <a1>1.24</a1>
+            <a2>1.25</a2>
+            <a3>1.26</a3>
+            <a4>1.27</a4>
+         </PerformanceValue>
+      </PerformanceTable>
+   </ESPPump>
+</ESPTable>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/XsdValidation/1.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/XsdValidation/1.xsd
@@ -1,7 +1,7 @@
-<xs:schema
-	xmlns:xs='http://www.w3.org/2001/XMLSchema'
-	targetNamespace="urn:foo">
-
-<xs:element name="root" type="xs:string" />
-
-</xs:schema>
+<xs:schema
+	xmlns:xs='http://www.w3.org/2001/XMLSchema'
+	targetNamespace="urn:foo">
+
+<xs:element name="root" type="xs:string" />
+
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/XsdValidation/2.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/XsdValidation/2.xsd
@@ -1,15 +1,15 @@
-<xs:schema
-	elementFormDefault="qualified"
-	xmlns:xs='http://www.w3.org/2001/XMLSchema'
-	xmlns="urn:foo"
-	targetNamespace="urn:foo">
-
-<xs:element name="root">
-	<xs:complexType>
-		<xs:sequence>
-			<xs:element name="child" minOccurs="1" maxOccurs="2" />
-		</xs:sequence>
-	</xs:complexType>
-</xs:element>
-
-</xs:schema>
+<xs:schema
+	elementFormDefault="qualified"
+	xmlns:xs='http://www.w3.org/2001/XMLSchema'
+	xmlns="urn:foo"
+	targetNamespace="urn:foo">
+
+<xs:element name="root">
+	<xs:complexType>
+		<xs:sequence>
+			<xs:element name="child" minOccurs="1" maxOccurs="2" />
+		</xs:sequence>
+	</xs:complexType>
+</xs:element>
+
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/XsdValidation/3.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/XsdValidation/3.xsd
@@ -1,16 +1,16 @@
-<xs:schema
-	elementFormDefault="qualified"
-	xmlns:xs='http://www.w3.org/2001/XMLSchema'
-	xmlns="urn:foo"
-	targetNamespace="urn:foo">
-
-<xs:element name="root">
-	<xs:complexType>
-		<xs:sequence maxOccurs="2">
-			<xs:element name="child1" />
-			<xs:element name="child2" />
-		</xs:sequence>
-	</xs:complexType>
-</xs:element>
-
-</xs:schema>
+<xs:schema
+	elementFormDefault="qualified"
+	xmlns:xs='http://www.w3.org/2001/XMLSchema'
+	xmlns="urn:foo"
+	targetNamespace="urn:foo">
+
+<xs:element name="root">
+	<xs:complexType>
+		<xs:sequence maxOccurs="2">
+			<xs:element name="child1" />
+			<xs:element name="child2" />
+		</xs:sequence>
+	</xs:complexType>
+</xs:element>
+
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/XsdValidation/4.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/XsdValidation/4.xsd
@@ -1,16 +1,16 @@
-<xs:schema
-	elementFormDefault="qualified"
-	xmlns:xs='http://www.w3.org/2001/XMLSchema'
-	xmlns="urn:foo"
-	targetNamespace="urn:foo">
-
-<xs:element name="root">
-	<xs:complexType>
-		<xs:choice minOccurs="0" maxOccurs="2">
-			<xs:element name="child1" />
-			<xs:element name="child2" maxOccurs="2" />
-		</xs:choice>
-	</xs:complexType>
-</xs:element>
-
-</xs:schema>
+<xs:schema
+	elementFormDefault="qualified"
+	xmlns:xs='http://www.w3.org/2001/XMLSchema'
+	xmlns="urn:foo"
+	targetNamespace="urn:foo">
+
+<xs:element name="root">
+	<xs:complexType>
+		<xs:choice minOccurs="0" maxOccurs="2">
+			<xs:element name="child1" />
+			<xs:element name="child2" maxOccurs="2" />
+		</xs:choice>
+	</xs:complexType>
+</xs:element>
+
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/nested-dtd-test.dtd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/nested-dtd-test.dtd
@@ -1,3 +1,3 @@
-<!ENTITY % foobar SYSTEM "nested-included.dtd">
-<!ELEMENT root (foo, bar)>
-%foobar;
+<!ENTITY % foobar SYSTEM "nested-included.dtd">
+<!ELEMENT root (foo, bar)>
+%foobar;
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/nested-included.dtd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/nested-included.dtd
@@ -1,2 +1,2 @@
-<!ELEMENT foo EMPTY>
-<!ELEMENT bar EMPTY>
+<!ELEMENT foo EMPTY>
+<!ELEMENT bar EMPTY>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/358408.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/358408.xsd
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-  <xs:element name="configuration">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name="host">
-          <xs:complexType>
-            <xs:attribute name="auto-start" type="xs:boolean" use="required" />
-          </xs:complexType>
-        </xs:element>
-        <xs:element name="service-managers">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element maxOccurs="unbounded" name="service-manager">
-                <xs:complexType>
-                  <xs:sequence>
-                    <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
-                  </xs:sequence>
-                </xs:complexType>
-              </xs:element>
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="configuration">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="host">
+          <xs:complexType>
+            <xs:attribute name="auto-start" type="xs:boolean" use="required" />
+          </xs:complexType>
+        </xs:element>
+        <xs:element name="service-managers">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element maxOccurs="unbounded" name="service-manager">
+                <xs:complexType>
+                  <xs:sequence>
+                    <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
+                  </xs:sequence>
+                </xs:complexType>
+              </xs:element>
+            </xs:sequence>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/361818-2.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/361818-2.xsd
@@ -1,8 +1,8 @@
-<xs:schema targetNamespace="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-	<xs:include schemaLocation="361818-3.xsd"/>
-	<xs:group name="Letters">
-		<xs:choice>
-			<xs:element ref="HospitalReferral"/>
-		</xs:choice>
-	</xs:group>
-</xs:schema>
+<xs:schema targetNamespace="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:include schemaLocation="361818-3.xsd"/>
+	<xs:group name="Letters">
+		<xs:choice>
+			<xs:element ref="HospitalReferral"/>
+		</xs:choice>
+	</xs:group>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/361818-3.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/361818-3.xsd
@@ -1,3 +1,3 @@
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" targetNamespace="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" elementFormDefault="qualified" attributeFormDefault="unqualified">
-  <xs:element name="HospitalReferral" />
-</xs:schema>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" targetNamespace="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:element name="HospitalReferral" />
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/361818.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/361818.xsd
@@ -1,3 +1,3 @@
-<xs:schema targetNamespace="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-	<xs:include schemaLocation="361818-2.xsd"/>
-</xs:schema>
+<xs:schema targetNamespace="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns="http://rep.oio.dk/sundcom.dk/medcom.dk/xml/schemas/2005/08/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:include schemaLocation="361818-2.xsd"/>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/422581.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/422581.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0"?>
-<root foo="1">
-  <dummy>
-      <bar>
-          <elmnt name="value" />
-      </bar>
-  </dummy>
-  <dummy2></dummy2>
-</root>
+<?xml version="1.0"?>
+<root foo="1">
+  <dummy>
+      <bar>
+          <elmnt name="value" />
+      </bar>
+  </dummy>
+  <dummy2></dummy2>
+</root>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/422581.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/422581.xsd
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-<xs:element name="root">
-  <xs:complexType>
-    <xs:sequence>
-      <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##any"/>
-    </xs:sequence>
-    <xs:attribute name="foo" type="xs:integer" use="required" />
-  </xs:complexType>
-</xs:element>
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+<xs:element name="root">
+  <xs:complexType>
+    <xs:sequence>
+      <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##any"/>
+    </xs:sequence>
+    <xs:attribute name="foo" type="xs:integer" use="required" />
+  </xs:complexType>
+</xs:element>
 </xs:schema>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/79650.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/79650.xsd
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<xs:schema id="schema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-    <xs:simpleType name="ModeType">
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="on" />
-            <xs:enumeration value="off" />
-        </xs:restriction>
-    </xs:simpleType>
-    <xs:element name="test">
-        <xs:complexType>
-            <xs:sequence/>
-            <xs:attribute name="mode" type="ModeType" use="required" />
-        </xs:complexType>
-    </xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema id="schema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:simpleType name="ModeType">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="on" />
+            <xs:enumeration value="off" />
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:element name="test">
+        <xs:complexType>
+            <xs:sequence/>
+            <xs:attribute name="mode" type="ModeType" use="required" />
+        </xs:complexType>
+    </xs:element>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/81360.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/81360.xsd
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           targetNamespace="http://www.w3.org/1999/xhtml"
-           xmlns="http://www.w3.org/1999/xhtml"
-		   blockDefault="#all">
-	<xs:include schemaLocation="81360inc1.xsd"/>
-	<xs:include schemaLocation="81360inc2.xsd"/>
-</xs:schema>
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           targetNamespace="http://www.w3.org/1999/xhtml"
+           xmlns="http://www.w3.org/1999/xhtml"
+		   blockDefault="#all">
+	<xs:include schemaLocation="81360inc1.xsd"/>
+	<xs:include schemaLocation="81360inc2.xsd"/>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/81360inc1.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/81360inc1.xsd
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           targetNamespace="http://www.w3.org/1999/xhtml"
-           xmlns="http://www.w3.org/1999/xhtml">
-
-	<xs:group name="BlkStruct.class">
-		<xs:choice>
-			<xs:element ref="p"/>
-			<xs:element ref="div"/>
-		</xs:choice>
-	</xs:group>
-
-
-	<xs:group name="Flow.mix">
-		<xs:choice>
-			<xs:group ref="Block.class"/>
-		</xs:choice>
-	</xs:group>
-
-	<xs:group name="Block.class">
-		<xs:choice>
-			<xs:group ref="BlkStruct.class"/>
-		</xs:choice>
-	</xs:group>
-
-	<xs:group name="Block.mix">
-		<xs:choice>
-			<xs:group ref="Block.class"/>
-		</xs:choice>
-	</xs:group>
-
-</xs:schema>
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           targetNamespace="http://www.w3.org/1999/xhtml"
+           xmlns="http://www.w3.org/1999/xhtml">
+
+	<xs:group name="BlkStruct.class">
+		<xs:choice>
+			<xs:element ref="p"/>
+			<xs:element ref="div"/>
+		</xs:choice>
+	</xs:group>
+
+
+	<xs:group name="Flow.mix">
+		<xs:choice>
+			<xs:group ref="Block.class"/>
+		</xs:choice>
+	</xs:group>
+
+	<xs:group name="Block.class">
+		<xs:choice>
+			<xs:group ref="BlkStruct.class"/>
+		</xs:choice>
+	</xs:group>
+
+	<xs:group name="Block.mix">
+		<xs:choice>
+			<xs:group ref="Block.class"/>
+		</xs:choice>
+	</xs:group>
+
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/81360inc2.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/81360inc2.xsd
@@ -1,46 +1,46 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           targetNamespace="http://www.w3.org/1999/xhtml"
-           xmlns="http://www.w3.org/1999/xhtml">
-	
-	
-	<xs:group name="body.content">
-		<xs:sequence>
-			<xs:group ref="Block.mix" maxOccurs="unbounded"/>
-		</xs:sequence>
-	</xs:group>
-
-	<xs:complexType name="body.type">
-		<xs:group ref="body.content"/>
-	</xs:complexType>
-
-	<xs:element name="body" type="body.type"/>
-
-
-	<xs:complexType name="p.type" mixed="true">
-		<xs:group ref="p.content"/>
-	</xs:complexType>
-
-	<xs:element name="p" type="p.type"/>
-
-	<xs:group name="div.content">
-		<xs:sequence>
-			<xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
-		</xs:sequence>
-	</xs:group>
-
-	<xs:complexType name="div.type" mixed="true">
-		<xs:group ref="div.content"/>
-	</xs:complexType>
-
-	<xs:element name="div" type="div.type"/>
-
-
-	<xs:group name="p.content">
-		<xs:sequence>
-			<xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
-		</xs:sequence>
-	</xs:group>
-
-
-</xs:schema>
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           targetNamespace="http://www.w3.org/1999/xhtml"
+           xmlns="http://www.w3.org/1999/xhtml">
+	
+	
+	<xs:group name="body.content">
+		<xs:sequence>
+			<xs:group ref="Block.mix" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:group>
+
+	<xs:complexType name="body.type">
+		<xs:group ref="body.content"/>
+	</xs:complexType>
+
+	<xs:element name="body" type="body.type"/>
+
+
+	<xs:complexType name="p.type" mixed="true">
+		<xs:group ref="p.content"/>
+	</xs:complexType>
+
+	<xs:element name="p" type="p.type"/>
+
+	<xs:group name="div.content">
+		<xs:sequence>
+			<xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:group>
+
+	<xs:complexType name="div.type" mixed="true">
+		<xs:group ref="div.content"/>
+	</xs:complexType>
+
+	<xs:element name="div" type="div.type"/>
+
+
+	<xs:group name="p.content">
+		<xs:sequence>
+			<xs:group ref="Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:group>
+
+
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsd/resolveUriSchema.xsd
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsd/resolveUriSchema.xsd
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<xs:schema id="resolveUriSchema"
-	targetNamespace="http://tempuri.org/resolveUriSchema.xsd"
-	xmlns:objects="http://www.mynamespace.net"
-	elementFormDefault="qualified"
-	xmlns="http://tempuri.org/resolveUriSchema.xsd"
-	xmlns:mstns="http://tempuri.org/resolveUriSchema.xsd"
-	xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-	<xs:import namespace="http://www.mynamespace.net" schemaLocation="assembly://MyAssembly.Name/MyProjectNameSpace/objects.xsd"/>
-
-	<xs:complexType name="randomType">
-		<xs:sequence>
-			<xs:element name="interfaces" minOccurs="0" maxOccurs="1">
-				<xs:complexType>
-					<xs:group ref="objects:objectList" minOccurs="1" maxOccurs="unbounded"/>
-				</xs:complexType>
-			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
-</xs:schema>
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema id="resolveUriSchema"
+	targetNamespace="http://tempuri.org/resolveUriSchema.xsd"
+	xmlns:objects="http://www.mynamespace.net"
+	elementFormDefault="qualified"
+	xmlns="http://tempuri.org/resolveUriSchema.xsd"
+	xmlns:mstns="http://tempuri.org/resolveUriSchema.xsd"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+	<xs:import namespace="http://www.mynamespace.net" schemaLocation="assembly://MyAssembly.Name/MyProjectNameSpace/objects.xsd"/>
+
+	<xs:complexType name="randomType">
+		<xs:sequence>
+			<xs:element name="interfaces" minOccurs="0" maxOccurs="1">
+				<xs:complexType>
+					<xs:group ref="objects:objectList" minOccurs="1" maxOccurs="unbounded"/>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.XML/Test/XmlFiles/xsl/empty.xsl
+++ mono-4.6.2.7+dfsg/mcs/class/System.XML/Test/XmlFiles/xsl/empty.xsl
@@ -1,9 +1,9 @@
-<xsl:stylesheet
-	version="1.0"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<xsl:template match="/">
-  <result/>
-</xsl:template>
-
-</xsl:stylesheet>
+<xsl:stylesheet
+	version="1.0"
+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:template match="/">
+  <result/>
+</xsl:template>
+
+</xsl:stylesheet>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/AbstractContainer.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/AbstractContainer.xml
@@ -1,5 +1,5 @@
-<AbstractContainer Value1="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <AbstractContainer.Value2>
-    <DerivedObject Foo="x" />
-  </AbstractContainer.Value2>
-</AbstractContainer>
+<AbstractContainer Value1="{x:Null}" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <AbstractContainer.Value2>
+    <DerivedObject Foo="x" />
+  </AbstractContainer.Value2>
+</AbstractContainer>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/AbstractWrapper.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/AbstractWrapper.xml
@@ -1,8 +1,8 @@
-<AbstractContainer xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <AbstractContainer.Value1>
-    <x:Null />
-  </AbstractContainer.Value1>
-  <AbstractContainer.Value2>
-    <DerivedObject Foo="x" />
-  </AbstractContainer.Value2>
-</AbstractContainer>
+<AbstractContainer xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <AbstractContainer.Value1>
+    <x:Null />
+  </AbstractContainer.Value1>
+  <AbstractContainer.Value2>
+    <DerivedObject Foo="x" />
+  </AbstractContainer.Value2>
+</AbstractContainer>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/ArrayExtension.xml
@@ -1,5 +1,5 @@
-<x:Array Type="x:Int32" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <x:Int32>5</x:Int32>
-  <x:Int32>-3</x:Int32>
-  <x:Int32>0</x:Int32>
+<x:Array Type="x:Int32" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Int32>5</x:Int32>
+  <x:Int32>-3</x:Int32>
+  <x:Int32>0</x:Int32>
 </x:Array>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/AttachedProperty.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/AttachedProperty.xml
@@ -1,5 +1,5 @@
-<AttachedWrapper Attachable.Foo="x" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0">
-  <AttachedWrapper.Value>
-    <Attached Attachable.Foo="y" />
-  </AttachedWrapper.Value>
+<AttachedWrapper Attachable.Foo="x" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0">
+  <AttachedWrapper.Value>
+    <Attached Attachable.Foo="y" />
+  </AttachedWrapper.Value>
 </AttachedWrapper>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/CollectionContentProperty.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/CollectionContentProperty.xml
@@ -1,8 +1,8 @@
-<CollectionContentProperty xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <scg:List x:TypeArguments="SimpleClass" Capacity="4">
-    <SimpleClass />
-    <SimpleClass />
-    <SimpleClass />
-    <SimpleClass />
-  </scg:List>
-</CollectionContentProperty>
+<CollectionContentProperty xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <scg:List x:TypeArguments="SimpleClass" Capacity="4">
+    <SimpleClass />
+    <SimpleClass />
+    <SimpleClass />
+    <SimpleClass />
+  </scg:List>
+</CollectionContentProperty>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Double.xml
@@ -1,4 +1,4 @@
-<Dictionary x:TypeArguments="x:String, x:Object" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <x:Double x:Key="Foo">5</x:Double>
-  <x:Double x:Key="Bar">-6.5</x:Double>
+<Dictionary x:TypeArguments="x:String, x:Object" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Double x:Key="Foo">5</x:Double>
+  <x:Double x:Key="Bar">-6.5</x:Double>
 </Dictionary>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/Dictionary_String_Type_2.xml
@@ -1,4 +1,4 @@
-<Dictionary x:TypeArguments="x:String, s:Type" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sx="clr-namespace:System.Xaml;assembly=System.Xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <x:Type Type="x:Int32" x:Key="Foo" />
-  <x:Type Type="Dictionary(s:Type, sx:XamlType)" x:Key="Bar" />
+<Dictionary x:TypeArguments="x:String, s:Type" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sx="clr-namespace:System.Xaml;assembly=System.Xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Type Type="x:Int32" x:Key="Foo" />
+  <x:Type Type="Dictionary(s:Type, sx:XamlType)" x:Key="Bar" />
 </Dictionary>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/EnumContainer.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/EnumContainer.xml
@@ -1 +1 @@
-<EnumContainer EnumProperty="Two" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
+<EnumContainer EnumProperty="Two" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/ExplicitKeyDictionary.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/ExplicitKeyDictionary.xml
@@ -1,8 +1,8 @@
-<ExplicitKeyDictionary xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <MyNamedItem x:Key="X">
-    <x:Arguments>
-      <x:String>foo</x:String>
-      <x:String>v1</x:String>
-    </x:Arguments>
-  </MyNamedItem>
+<ExplicitKeyDictionary xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <MyNamedItem x:Key="X">
+    <x:Arguments>
+      <x:String>foo</x:String>
+      <x:String>v1</x:String>
+    </x:Arguments>
+  </MyNamedItem>
 </ExplicitKeyDictionary>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/Guid.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/Guid.xml
@@ -1 +1 @@
-<Guid xmlns="clr-namespace:System;assembly=mscorlib">9c3345ec-8922-4662-8e8d-a4e41f47cf09</Guid>
+<Guid xmlns="clr-namespace:System;assembly=mscorlib">9c3345ec-8922-4662-8e8d-a4e41f47cf09</Guid>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/GuidFactoryMethod.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/GuidFactoryMethod.xml
@@ -1,8 +1,8 @@
-<Guid
- xmlns="clr-namespace:System;assembly=mscorlib"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- x:FactoryMethod="Parse">
-  <x:Arguments>
-    <x:String>9c3345ec-8922-4662-8e8d-a4e41f47cf09</x:String>
-  </x:Arguments>
-</Guid>
+<Guid
+ xmlns="clr-namespace:System;assembly=mscorlib"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ x:FactoryMethod="Parse">
+  <x:Arguments>
+    <x:String>9c3345ec-8922-4662-8e8d-a4e41f47cf09</x:String>
+  </x:Arguments>
+</Guid>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/List_Type.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/List_Type.xml
@@ -1,4 +1,4 @@
-<List x:TypeArguments="s:Type" Capacity="2" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sx="clr-namespace:System.Xaml;assembly=System.Xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <x:Type Type="x:Int32" />
-  <x:Type Type="Dictionary(s:Type, sx:XamlType)" />
+<List x:TypeArguments="s:Type" Capacity="2" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sx="clr-namespace:System.Xaml;assembly=System.Xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:Type Type="x:Int32" />
+  <x:Type Type="Dictionary(s:Type, sx:XamlType)" />
 </List>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/List_XmlSerializable.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/List_XmlSerializable.xml
@@ -1,3 +1,3 @@
-<List x:TypeArguments="msx:XmlSerializable" Capacity="4" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:msx="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <msx:XmlSerializable />
-</List>
+<List x:TypeArguments="msx:XmlSerializable" Capacity="4" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:msx="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <msx:XmlSerializable />
+</List>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtensionA.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/MyArrayExtensionA.xml
@@ -1,7 +1,7 @@
-<MyArrayExtensionA Type="x:Int32" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <MyArrayExtensionA.Items>
-    <x:Int32>5</x:Int32>
-    <x:Int32>-3</x:Int32>
-    <x:Int32>0</x:Int32>
-  </MyArrayExtensionA.Items>
-</MyArrayExtensionA>
+<MyArrayExtensionA Type="x:Int32" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <MyArrayExtensionA.Items>
+    <x:Int32>5</x:Int32>
+    <x:Int32>-3</x:Int32>
+    <x:Int32>0</x:Int32>
+  </MyArrayExtensionA.Items>
+</MyArrayExtensionA>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/NamedItems.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/NamedItems.xml
@@ -1,10 +1,10 @@
-<NamedItem x:Name="__ReferenceID0" ItemName="foo" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <NamedItem.References>
-    <NamedItem ItemName="bar">
-      <NamedItem.References>
-        <x:Reference>__ReferenceID0</x:Reference>
-      </NamedItem.References>
-    </NamedItem>
-    <NamedItem ItemName="baz" />
-  </NamedItem.References>
+<NamedItem x:Name="__ReferenceID0" ItemName="foo" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <NamedItem.References>
+    <NamedItem ItemName="bar">
+      <NamedItem.References>
+        <x:Reference>__ReferenceID0</x:Reference>
+      </NamedItem.References>
+    </NamedItem>
+    <NamedItem ItemName="baz" />
+  </NamedItem.References>
 </NamedItem>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/NamedItems2.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/NamedItems2.xml
@@ -1,14 +1,14 @@
-<NamedItem2 ItemName="i1" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <NamedItem2.References>
-    <NamedItem2 ItemName="i2">
-      <NamedItem2.References>
-        <NamedItem2 ItemName="i3" />
-      </NamedItem2.References>
-    </NamedItem2>
-    <NamedItem2 ItemName="i4">
-      <NamedItem2.References>
-        <x:Reference>i3</x:Reference>
-      </NamedItem2.References>
-    </NamedItem2>
-  </NamedItem2.References>
-</NamedItem2>
+<NamedItem2 ItemName="i1" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <NamedItem2.References>
+    <NamedItem2 ItemName="i2">
+      <NamedItem2.References>
+        <NamedItem2 ItemName="i3" />
+      </NamedItem2.References>
+    </NamedItem2>
+    <NamedItem2 ItemName="i4">
+      <NamedItem2.References>
+        <x:Reference>i3</x:Reference>
+      </NamedItem2.References>
+    </NamedItem2>
+  </NamedItem2.References>
+</NamedItem2>
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/ReadOnlyPropertyContainer.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/ReadOnlyPropertyContainer.xml
@@ -1 +1 @@
-<ReadOnlyPropertyContainer Foo="x" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
+<ReadOnlyPropertyContainer Foo="x" xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" />
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/TypeConverterOnListMember.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/TypeConverterOnListMember.xml
@@ -1 +1 @@
-<TypeOtherAssembly Values="1, 2, 3" xmlns="http://www.domain.com/path" />
+<TypeOtherAssembly Values="1, 2, 3" xmlns="http://www.domain.com/path" />
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/XmlDocument.xml
@@ -1,9 +1,9 @@
-<XmlDocument Value="{x:Null}" InnerXml="&lt;root xmlns=&quot;urn:foo&quot;&gt;&lt;elem attr=&quot;val&quot; /&gt;&lt;/root&gt;" Prefix="" PreserveWhitespace="False" xmlns="clr-namespace:System.Xml;assembly=System.Xml" xmlns:sxs="clr-namespace:System.Xml.Schema;assembly=System.Xml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <XmlDocument.Schemas>
-    <sxs:XmlSchemaSet>
-      <sxs:XmlSchemaSet.CompilationSettings>
-        <sxs:XmlSchemaCompilationSettings EnableUpaCheck="True" />
-      </sxs:XmlSchemaSet.CompilationSettings>
-    </sxs:XmlSchemaSet>
-  </XmlDocument.Schemas>
+<XmlDocument Value="{x:Null}" InnerXml="&lt;root xmlns=&quot;urn:foo&quot;&gt;&lt;elem attr=&quot;val&quot; /&gt;&lt;/root&gt;" Prefix="" PreserveWhitespace="False" xmlns="clr-namespace:System.Xml;assembly=System.Xml" xmlns:sxs="clr-namespace:System.Xml.Schema;assembly=System.Xml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <XmlDocument.Schemas>
+    <sxs:XmlSchemaSet>
+      <sxs:XmlSchemaSet.CompilationSettings>
+        <sxs:XmlSchemaCompilationSettings EnableUpaCheck="True" />
+      </sxs:XmlSchemaSet.CompilationSettings>
+    </sxs:XmlSchemaSet>
+  </XmlDocument.Schemas>
 </XmlDocument>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializableWrapper.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System.Xaml/Test/XmlFiles/XmlSerializableWrapper.xml
@@ -1,3 +1,3 @@
-<XmlSerializableWrapper xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <x:XData><root /></x:XData>
+<XmlSerializableWrapper xmlns="clr-namespace:MonoTests.System.Xaml;assembly=System.Xaml_test_net_4_0" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+  <x:XData><root /></x:XData>
 </XmlSerializableWrapper>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Documentation/System.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System/Documentation/System.xml
@@ -1,10790 +1,10790 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="System">
-    <class name="DescriptionAttribute" namespace="System.ComponentModel">
-        <constructor name="DescriptionAttribute" argnames="" />
-        <constructor name="DescriptionAttribute(System.String)" argnames="description" />
-        <field name="Default" />
-        <property name="Description" propertytype="System.String" />
-        <property name="DescriptionValue" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CategoryAttribute" namespace="System.ComponentModel">
-        <constructor name="CategoryAttribute" argnames="" />
-        <constructor name="CategoryAttribute(System.String)" argnames="category" />
-        <property name="Action" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Appearance" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Behavior" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Data" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Default" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Design" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="DragDrop" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Focus" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Format" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Key" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Layout" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Mouse" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="WindowStyle" propertytype="System.ComponentModel.CategoryAttribute" />
-        <property name="Category" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="GetLocalizedString(System.String)" argnames="value" returntype="System.String" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AmbientValueAttribute" namespace="System.ComponentModel">
-        <constructor name="AmbientValueAttribute(System.Type, System.String)" argnames="type, value" />
-        <constructor name="AmbientValueAttribute(System.Char)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Byte)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Int16)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Int32)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Int64)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Single)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Double)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Boolean)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.String)" argnames="value" />
-        <constructor name="AmbientValueAttribute(System.Object)" argnames="value" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TypeConverter" namespace="System.ComponentModel">
-        <class name="StandardValuesCollection" namespace="System.ComponentModel">
-            <constructor name="StandardValuesCollection(System.Collections.ICollection)" argnames="values" />
-            <property name="Count" propertytype="System.Int32" />
-            <property name="Item" propertytype="System.Object" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="StandardValuesCollection" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MemberDescriptor" namespace="System.ComponentModel">
-        <constructor name="MemberDescriptor(System.String)" argnames="name" />
-        <constructor name="MemberDescriptor(System.String, System.Attribute[])" argnames="name, attributes" />
-        <constructor name="MemberDescriptor(System.ComponentModel.MemberDescriptor)" argnames="descr" />
-        <constructor name="MemberDescriptor(System.ComponentModel.MemberDescriptor, System.Attribute[])" argnames="oldMemberDescriptor, newAttributes" />
-        <property name="AttributeArray" propertytype="System.Attribute[]" />
-        <property name="Attributes" propertytype="System.ComponentModel.AttributeCollection" />
-        <property name="Category" propertytype="System.String" />
-        <property name="Description" propertytype="System.String" />
-        <property name="IsBrowsable" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NameHashCode" propertytype="System.Int32" />
-        <property name="DesignTimeOnly" propertytype="System.Boolean" />
-        <property name="DisplayName" propertytype="System.String" />
-        <method name="FillAttributes(System.Collections.IList)" argnames="attributeList" returntype="System.Void" />
-        <method name="CreateAttributeCollection" argnames="" returntype="System.ComponentModel.AttributeCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FindMethod(System.Type, System.String, System.Type[], System.Type)" argnames="componentClass, name, args, returnType" returntype="System.Reflection.MethodInfo" />
-        <method name="FindMethod(System.Type, System.String, System.Type[], System.Type, System.Boolean)" argnames="componentClass, name, args, returnType, publicOnly" returntype="System.Reflection.MethodInfo" />
-        <method name="GetSite(System.Object)" argnames="component" returntype="System.ComponentModel.ISite" />
-        <method name="GetInvokee(System.Type, System.Object)" argnames="componentClass, component" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyDescriptor" namespace="System.ComponentModel">
-        <constructor name="PropertyDescriptor(System.String, System.Attribute[])" argnames="name, attrs" />
-        <constructor name="PropertyDescriptor(System.ComponentModel.MemberDescriptor)" argnames="descr" />
-        <constructor name="PropertyDescriptor(System.ComponentModel.MemberDescriptor, System.Attribute[])" argnames="descr, attrs" />
-        <property name="ComponentType" propertytype="System.Type" />
-        <property name="Converter" propertytype="System.ComponentModel.TypeConverter" />
-        <property name="IsLocalizable" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="SerializationVisibility" propertytype="System.ComponentModel.DesignerSerializationVisibility" />
-        <property name="PropertyType" propertytype="System.Type" />
-        <property name="AttributeArray" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Attribute[]" />
-        <property name="Attributes" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.ComponentModel.AttributeCollection" />
-        <property name="Category" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <property name="Description" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <property name="IsBrowsable" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
-        <property name="Name" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <property name="NameHashCode" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Int32" />
-        <property name="DesignTimeOnly" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
-        <property name="DisplayName" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <method name="ShouldSerializeValue(System.Object)" argnames="component" returntype="System.Boolean" />
-        <method name="SetValue(System.Object, System.Object)" argnames="component, value" returntype="System.Void" />
-        <method name="ResetValue(System.Object)" argnames="component" returntype="System.Void" />
-        <method name="RemoveValueChanged(System.Object, System.EventHandler)" argnames="component, handler" returntype="System.Void" />
-        <method name="OnValueChanged(System.Object, System.EventArgs)" argnames="component, e" returntype="System.Void" />
-        <method name="GetValue(System.Object)" argnames="component" returntype="System.Object" />
-        <method name="GetEditor(System.Type)" argnames="editorBaseType" returntype="System.Object" />
-        <method name="GetChildProperties(System.Object, System.Attribute[])" argnames="instance, filter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="CanResetValue(System.Object)" argnames="component" returntype="System.Boolean" />
-        <method name="AddValueChanged(System.Object, System.EventHandler)" argnames="component, handler" returntype="System.Void" />
-        <method name="FillAttributes(System.Collections.IList)" argnames="attributeList" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Void" />
-        <method name="CreateAttributeCollection" argnames="" inherited="System.ComponentModel.MemberDescriptor" returntype="System.ComponentModel.AttributeCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateInstance(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="GetChildProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetChildProperties(System.Attribute[])" argnames="filter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetChildProperties(System.Object)" argnames="instance" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetTypeFromName(System.String)" argnames="typeName" returntype="System.Type" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StandardValuesCollection" namespace="System.ComponentModel">
-        <constructor name="StandardValuesCollection(System.Collections.ICollection)" argnames="values" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CollectionConverter" namespace="System.ComponentModel">
-        <constructor name="CollectionConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ArrayConverter" namespace="System.ComponentModel">
-        <constructor name="ArrayConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentEditor" namespace="System.ComponentModel">
-        <constructor name="ComponentEditor" argnames="" />
-        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EditComponent(System.Object)" argnames="component" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BaseNumberConverter" namespace="System.ComponentModel">
-        <constructor name="BaseNumberConverter" argnames="" />
-        <property name="AllowHex" propertytype="System.Boolean" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BindableAttribute" namespace="System.ComponentModel">
-        <constructor name="BindableAttribute(System.Boolean)" argnames="bindable" />
-        <constructor name="BindableAttribute(System.ComponentModel.BindableSupport)" argnames="flags" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="Bindable" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BooleanConverter" namespace="System.ComponentModel">
-        <constructor name="BooleanConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BrowsableAttribute" namespace="System.ComponentModel">
-        <constructor name="BrowsableAttribute(System.Boolean)" argnames="browsable" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="Browsable" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ByteConverter" namespace="System.ComponentModel">
-        <constructor name="ByteConverter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CancelEventArgs" namespace="System.ComponentModel">
-        <constructor name="CancelEventArgs" argnames="" />
-        <constructor name="CancelEventArgs(System.Boolean)" argnames="cancel" />
-        <property name="Cancel" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CharConverter" namespace="System.ComponentModel">
-        <constructor name="CharConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CollectionChangeEventArgs" namespace="System.ComponentModel">
-        <constructor name="CollectionChangeEventArgs(System.ComponentModel.CollectionChangeAction, System.Object)" argnames="action, element" />
-        <property name="Action" propertytype="System.ComponentModel.CollectionChangeAction" />
-        <property name="Element" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Component" namespace="System.ComponentModel">
-        <constructor name="Component" argnames="" />
-        <property name="Events" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" />
-    </class>
-    <class name="ComponentCollection" namespace="System.ComponentModel">
-        <constructor name="ComponentCollection(System.ComponentModel.IComponent[])" argnames="components" />
-        <property name="Item" propertytype="System.ComponentModel.IComponent" />
-        <property name="Item" propertytype="System.ComponentModel.IComponent" />
-        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CopyTo(System.ComponentModel.IComponent[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ReferenceConverter" namespace="System.ComponentModel">
-        <constructor name="ReferenceConverter(System.Type)" argnames="type" />
-        <method name="IsValueAllowed(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.Boolean" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentConverter" namespace="System.ComponentModel">
-        <constructor name="ComponentConverter(System.Type)" argnames="type" />
-        <method name="IsValueAllowed(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ReferenceConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Container" namespace="System.ComponentModel">
-        <constructor name="Container" argnames="" />
-        <property name="Components" propertytype="System.ComponentModel.ComponentCollection" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Remove(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="Add(System.ComponentModel.IComponent, System.String)" argnames="component, name" returntype="System.Void" />
-        <method name="Add(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateSite(System.ComponentModel.IComponent, System.String)" argnames="component, name" returntype="System.ComponentModel.ISite" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CultureInfoConverter" namespace="System.ComponentModel">
-        <constructor name="CultureInfoConverter" argnames="" />
-        <property name="DefaultCultureString" propertytype="System.String" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DateTimeConverter" namespace="System.ComponentModel">
-        <constructor name="DateTimeConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DecimalConverter" namespace="System.ComponentModel">
-        <constructor name="DecimalConverter" argnames="" />
-        <property name="AllowHex" propertytype="System.Boolean" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DefaultEventAttribute" namespace="System.ComponentModel">
-        <constructor name="DefaultEventAttribute(System.String)" argnames="name" />
-        <field name="Default" />
-        <property name="Name" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DefaultPropertyAttribute" namespace="System.ComponentModel">
-        <constructor name="DefaultPropertyAttribute(System.String)" argnames="name" />
-        <field name="Default" />
-        <property name="Name" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DefaultValueAttribute" namespace="System.ComponentModel">
-        <constructor name="DefaultValueAttribute(System.Type, System.String)" argnames="type, value" />
-        <constructor name="DefaultValueAttribute(System.Char)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Byte)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Int16)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Int32)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Int64)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Single)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Double)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Boolean)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.String)" argnames="value" />
-        <constructor name="DefaultValueAttribute(System.Object)" argnames="value" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerAttribute" namespace="System.ComponentModel">
-        <constructor name="DesignerAttribute(System.String)" argnames="designerTypeName" />
-        <constructor name="DesignerAttribute(System.Type)" argnames="designerType" />
-        <constructor name="DesignerAttribute(System.String, System.String)" argnames="designerTypeName, designerBaseTypeName" />
-        <constructor name="DesignerAttribute(System.String, System.Type)" argnames="designerTypeName, designerBaseType" />
-        <constructor name="DesignerAttribute(System.Type, System.Type)" argnames="designerType, designerBaseType" />
-        <property name="DesignerBaseTypeName" propertytype="System.String" />
-        <property name="DesignerTypeName" propertytype="System.String" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerCategoryAttribute" namespace="System.ComponentModel">
-        <constructor name="DesignerCategoryAttribute" argnames="" />
-        <constructor name="DesignerCategoryAttribute(System.String)" argnames="category" />
-        <field name="Component" />
-        <field name="Default" />
-        <field name="Form" />
-        <field name="Generic" />
-        <property name="Category" propertytype="System.String" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerSerializationVisibilityAttribute" namespace="System.ComponentModel">
-        <constructor name="DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility)" argnames="visibility" />
-        <field name="Content" />
-        <field name="Hidden" />
-        <field name="Visible" />
-        <field name="Default" />
-        <property name="Visibility" propertytype="System.ComponentModel.DesignerSerializationVisibility" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignOnlyAttribute" namespace="System.ComponentModel">
-        <constructor name="DesignOnlyAttribute(System.Boolean)" argnames="isDesignOnly" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="IsDesignOnly" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignTimeVisibleAttribute" namespace="System.ComponentModel">
-        <constructor name="DesignTimeVisibleAttribute(System.Boolean)" argnames="visible" />
-        <constructor name="DesignTimeVisibleAttribute" argnames="" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DoubleConverter" namespace="System.ComponentModel">
-        <constructor name="DoubleConverter" argnames="" />
-        <property name="AllowHex" propertytype="System.Boolean" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EditorAttribute" namespace="System.ComponentModel">
-        <constructor name="EditorAttribute" argnames="" />
-        <constructor name="EditorAttribute(System.String, System.String)" argnames="typeName, baseTypeName" />
-        <constructor name="EditorAttribute(System.String, System.Type)" argnames="typeName, baseType" />
-        <constructor name="EditorAttribute(System.Type, System.Type)" argnames="type, baseType" />
-        <property name="EditorBaseTypeName" propertytype="System.String" />
-        <property name="EditorTypeName" propertytype="System.String" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EditorBrowsableAttribute" namespace="System.ComponentModel">
-        <constructor name="EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState)" argnames="state" />
-        <constructor name="EditorBrowsableAttribute" argnames="" />
-        <property name="State" propertytype="System.ComponentModel.EditorBrowsableState" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EnumConverter" namespace="System.ComponentModel">
-        <constructor name="EnumConverter(System.Type)" argnames="type" />
-        <property name="EnumType" propertytype="System.Type" />
-        <property name="Values" propertytype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <property name="Comparer" propertytype="System.Collections.IComparer" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventDescriptor" namespace="System.ComponentModel">
-        <constructor name="EventDescriptor(System.String, System.Attribute[])" argnames="name, attrs" />
-        <constructor name="EventDescriptor(System.ComponentModel.MemberDescriptor)" argnames="descr" />
-        <constructor name="EventDescriptor(System.ComponentModel.MemberDescriptor, System.Attribute[])" argnames="descr, attrs" />
-        <property name="ComponentType" propertytype="System.Type" />
-        <property name="EventType" propertytype="System.Type" />
-        <property name="IsMulticast" propertytype="System.Boolean" />
-        <property name="AttributeArray" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Attribute[]" />
-        <property name="Attributes" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.ComponentModel.AttributeCollection" />
-        <property name="Category" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <property name="Description" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <property name="IsBrowsable" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
-        <property name="Name" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <property name="NameHashCode" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Int32" />
-        <property name="DesignTimeOnly" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
-        <property name="DisplayName" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
-        <method name="RemoveEventHandler(System.Object, System.Delegate)" argnames="component, value" returntype="System.Void" />
-        <method name="AddEventHandler(System.Object, System.Delegate)" argnames="component, value" returntype="System.Void" />
-        <method name="FillAttributes(System.Collections.IList)" argnames="attributeList" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Void" />
-        <method name="CreateAttributeCollection" argnames="" inherited="System.ComponentModel.MemberDescriptor" returntype="System.ComponentModel.AttributeCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventDescriptorCollection" namespace="System.ComponentModel">
-        <constructor name="EventDescriptorCollection(System.ComponentModel.EventDescriptor[])" argnames="events" />
-        <field name="Empty" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.ComponentModel.EventDescriptor" />
-        <property name="Item" propertytype="System.ComponentModel.EventDescriptor" />
-        <method name="Sort(System.Collections.IComparer)" argnames="comparer" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="Sort(System.String[], System.Collections.IComparer)" argnames="names, comparer" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="Sort(System.String[])" argnames="names" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="Sort" argnames="" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="Find(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Boolean" />
-        <method name="IndexOf(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.ComponentModel.EventDescriptor)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="InternalSort(System.String[])" argnames="names" returntype="System.Void" />
-        <method name="InternalSort(System.Collections.IComparer)" argnames="sorter" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventHandlerList" namespace="System.ComponentModel">
-        <constructor name="EventHandlerList" argnames="" />
-        <property name="Item" propertytype="System.Delegate" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddHandler(System.Object, System.Delegate)" argnames="key, value" returntype="System.Void" />
-        <method name="RemoveHandler(System.Object, System.Delegate)" argnames="key, value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ExpandableObjectConverter" namespace="System.ComponentModel">
-        <constructor name="ExpandableObjectConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ExtenderProvidedPropertyAttribute" namespace="System.ComponentModel">
-        <constructor name="ExtenderProvidedPropertyAttribute" argnames="" />
-        <property name="ExtenderProperty" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <property name="Provider" propertytype="System.ComponentModel.IExtenderProvider" />
-        <property name="ReceiverType" propertytype="System.Type" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GuidConverter" namespace="System.ComponentModel">
-        <constructor name="GuidConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ImmutableObjectAttribute" namespace="System.ComponentModel">
-        <constructor name="ImmutableObjectAttribute(System.Boolean)" argnames="immutable" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="Immutable" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstallerTypeAttribute" namespace="System.ComponentModel">
-        <constructor name="InstallerTypeAttribute(System.Type)" argnames="installerType" />
-        <constructor name="InstallerTypeAttribute(System.String)" argnames="typeName" />
-        <property name="InstallerType" propertytype="System.Type" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Int16Converter" namespace="System.ComponentModel">
-        <constructor name="Int16Converter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Int32Converter" namespace="System.ComponentModel">
-        <constructor name="Int32Converter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Int64Converter" namespace="System.ComponentModel">
-        <constructor name="Int64Converter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="License" namespace="System.ComponentModel">
-        <constructor name="License" argnames="" />
-        <property name="LicenseKey" propertytype="System.String" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LicenseContext" namespace="System.ComponentModel">
-        <constructor name="LicenseContext" argnames="" />
-        <property name="UsageMode" propertytype="System.ComponentModel.LicenseUsageMode" />
-        <method name="GetService(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="SetSavedLicenseKey(System.Type, System.String)" argnames="type, key" returntype="System.Void" />
-        <method name="GetSavedLicenseKey(System.Type, System.Reflection.Assembly)" argnames="type, resourceAssembly" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LicenseException" namespace="System.ComponentModel">
-        <constructor name="LicenseException(System.Type)" argnames="type" />
-        <constructor name="LicenseException(System.Type, System.Object)" argnames="type, instance" />
-        <constructor name="LicenseException(System.Type, System.Object, System.String)" argnames="type, instance, message" />
-        <constructor name="LicenseException(System.Type, System.Object, System.String, System.Exception)" argnames="type, instance, message, innerException" />
-        <property name="LicensedType" propertytype="System.Type" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LicenseProvider" namespace="System.ComponentModel">
-        <constructor name="LicenseProvider" argnames="" />
-        <method name="GetLicense(System.ComponentModel.LicenseContext, System.Type, System.Object, System.Boolean)" argnames="context, type, instance, allowExceptions" returntype="System.ComponentModel.License" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LicenseProviderAttribute" namespace="System.ComponentModel">
-        <constructor name="LicenseProviderAttribute" argnames="" />
-        <constructor name="LicenseProviderAttribute(System.String)" argnames="typeName" />
-        <constructor name="LicenseProviderAttribute(System.Type)" argnames="type" />
-        <field name="Default" />
-        <property name="LicenseProvider" propertytype="System.Type" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LicFileLicenseProvider" namespace="System.ComponentModel">
-        <constructor name="LicFileLicenseProvider" argnames="" />
-        <method name="GetKey(System.Type)" argnames="type" returntype="System.String" />
-        <method name="IsKeyValid(System.String, System.Type)" argnames="key, type" returntype="System.Boolean" />
-        <method name="GetLicense(System.ComponentModel.LicenseContext, System.Type, System.Object, System.Boolean)" argnames="context, type, instance, allowExceptions" returntype="System.ComponentModel.License" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListBindableAttribute" namespace="System.ComponentModel">
-        <constructor name="ListBindableAttribute(System.Boolean)" argnames="listBindable" />
-        <constructor name="ListBindableAttribute(System.ComponentModel.BindableSupport)" argnames="flags" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="ListBindable" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListChangedEventArgs" namespace="System.ComponentModel">
-        <constructor name="ListChangedEventArgs(System.ComponentModel.ListChangedType, System.Int32)" argnames="listChangedType, newIndex" />
-        <constructor name="ListChangedEventArgs(System.ComponentModel.ListChangedType, System.ComponentModel.PropertyDescriptor)" argnames="listChangedType, propDesc" />
-        <constructor name="ListChangedEventArgs(System.ComponentModel.ListChangedType, System.Int32, System.Int32)" argnames="listChangedType, newIndex, oldIndex" />
-        <property name="ListChangedType" propertytype="System.ComponentModel.ListChangedType" />
-        <property name="NewIndex" propertytype="System.Int32" />
-        <property name="OldIndex" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LocalizableAttribute" namespace="System.ComponentModel">
-        <constructor name="LocalizableAttribute(System.Boolean)" argnames="isLocalizable" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="IsLocalizable" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MarshalByValueComponent" namespace="System.ComponentModel">
-        <constructor name="MarshalByValueComponent" argnames="" />
-        <property name="Events" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" propertytype="System.Boolean" />
-        <method name="GetService(System.Type)" argnames="service" returntype="System.Object" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" />
-    </class>
-    <class name="AttributeCollection" namespace="System.ComponentModel">
-        <constructor name="AttributeCollection(System.Attribute[])" argnames="attributes" />
-        <field name="Empty" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Attribute" />
-        <property name="Item" propertytype="System.Attribute" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.Attribute)" argnames="attribute" returntype="System.Boolean" />
-        <method name="Contains(System.Attribute[])" argnames="attributes" returntype="System.Boolean" />
-        <method name="GetDefaultAttribute(System.Type)" argnames="attributeType" returntype="System.Attribute" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Matches(System.Attribute)" argnames="attribute" returntype="System.Boolean" />
-        <method name="Matches(System.Attribute[])" argnames="attributes" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MergablePropertyAttribute" namespace="System.ComponentModel">
-        <constructor name="MergablePropertyAttribute(System.Boolean)" argnames="allowMerge" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="AllowMerge" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyChangedEventArgs" namespace="System.ComponentModel">
-        <constructor name="PropertyChangedEventArgs(System.String)" argnames="propertyName" />
-        <property name="PropertyName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyDescriptorCollection" namespace="System.ComponentModel">
-        <constructor name="PropertyDescriptorCollection(System.ComponentModel.PropertyDescriptor[])" argnames="properties" />
-        <field name="Empty" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <property name="Item" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Find(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="Sort(System.Collections.IComparer)" argnames="comparer" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Sort(System.String[], System.Collections.IComparer)" argnames="names, comparer" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Sort(System.String[])" argnames="names" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Sort" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Int32" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Contains(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Boolean" />
-        <method name="IndexOf(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.ComponentModel.PropertyDescriptor)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="InternalSort(System.String[])" argnames="names" returntype="System.Void" />
-        <method name="InternalSort(System.Collections.IComparer)" argnames="sorter" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProvidePropertyAttribute" namespace="System.ComponentModel">
-        <constructor name="ProvidePropertyAttribute(System.String, System.Type)" argnames="propertyName, receiverType" />
-        <constructor name="ProvidePropertyAttribute(System.String, System.String)" argnames="propertyName, receiverTypeName" />
-        <property name="PropertyName" propertytype="System.String" />
-        <property name="ReceiverTypeName" propertytype="System.String" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ReadOnlyAttribute" namespace="System.ComponentModel">
-        <constructor name="ReadOnlyAttribute(System.Boolean)" argnames="isReadOnly" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RecommendedAsConfigurableAttribute" namespace="System.ComponentModel">
-        <constructor name="RecommendedAsConfigurableAttribute(System.Boolean)" argnames="recommendedAsConfigurable" />
-        <field name="No" />
-        <field name="Yes" />
-        <field name="Default" />
-        <property name="RecommendedAsConfigurable" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RefreshEventArgs" namespace="System.ComponentModel">
-        <constructor name="RefreshEventArgs(System.Object)" argnames="componentChanged" />
-        <constructor name="RefreshEventArgs(System.Type)" argnames="typeChanged" />
-        <property name="ComponentChanged" propertytype="System.Object" />
-        <property name="TypeChanged" propertytype="System.Type" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RunInstallerAttribute" namespace="System.ComponentModel">
-        <constructor name="RunInstallerAttribute(System.Boolean)" argnames="runInstaller" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="RunInstaller" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SByteConverter" namespace="System.ComponentModel">
-        <constructor name="SByteConverter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SingleConverter" namespace="System.ComponentModel">
-        <constructor name="SingleConverter" argnames="" />
-        <property name="AllowHex" propertytype="System.Boolean" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StringConverter" namespace="System.ComponentModel">
-        <constructor name="StringConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SyntaxCheck" namespace="System.ComponentModel">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CheckMachineName(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CheckPath(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CheckRootedPath(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TimeSpanConverter" namespace="System.ComponentModel">
-        <constructor name="TimeSpanConverter" argnames="" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolboxItemFilterAttribute" namespace="System.ComponentModel">
-        <constructor name="ToolboxItemFilterAttribute(System.String)" argnames="filterString" />
-        <constructor name="ToolboxItemFilterAttribute(System.String, System.ComponentModel.ToolboxItemFilterType)" argnames="filterString, filterType" />
-        <property name="FilterString" propertytype="System.String" />
-        <property name="FilterType" propertytype="System.ComponentModel.ToolboxItemFilterType" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TypeConverterAttribute" namespace="System.ComponentModel">
-        <constructor name="TypeConverterAttribute" argnames="" />
-        <constructor name="TypeConverterAttribute(System.Type)" argnames="type" />
-        <constructor name="TypeConverterAttribute(System.String)" argnames="typeName" />
-        <field name="Default" />
-        <property name="ConverterTypeName" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TypeListConverter" namespace="System.ComponentModel">
-        <constructor name="TypeListConverter(System.Type[])" argnames="types" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UInt16Converter" namespace="System.ComponentModel">
-        <constructor name="UInt16Converter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UInt32Converter" namespace="System.ComponentModel">
-        <constructor name="UInt32Converter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UInt64Converter" namespace="System.ComponentModel">
-        <constructor name="UInt64Converter" argnames="" />
-        <property name="TargetType" propertytype="System.Type" />
-        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
-        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
-        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
-        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
-        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
-        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
-        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
-        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InvalidEnumArgumentException" namespace="System.ComponentModel">
-        <constructor name="InvalidEnumArgumentException" argnames="" />
-        <constructor name="InvalidEnumArgumentException(System.String)" argnames="message" />
-        <constructor name="InvalidEnumArgumentException(System.String, System.Int32, System.Type)" argnames="argumentName, invalidValue, enumClass" />
-        <property name="Message" inherited="System.ArgumentException" propertytype="System.String" />
-        <property name="ParamName" inherited="System.ArgumentException" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.ArgumentException" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WarningException" namespace="System.ComponentModel">
-        <constructor name="WarningException(System.String)" argnames="message" />
-        <constructor name="WarningException(System.String, System.String)" argnames="message, helpUrl" />
-        <constructor name="WarningException(System.String, System.String, System.String)" argnames="message, helpUrl, helpTopic" />
-        <property name="HelpUrl" propertytype="System.String" />
-        <property name="HelpTopic" propertytype="System.String" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Win32Exception" namespace="System.ComponentModel">
-        <constructor name="Win32Exception" argnames="" />
-        <constructor name="Win32Exception(System.Int32)" argnames="error" />
-        <constructor name="Win32Exception(System.Int32, System.String)" argnames="error, message" />
-        <constructor name="Win32Exception(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="NativeErrorCode" propertytype="System.Int32" />
-        <property name="ErrorCode" inherited="System.Runtime.InteropServices.ExternalException" propertytype="System.Int32" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LicenseManager" namespace="System.ComponentModel">
-        <property name="CurrentContext" propertytype="System.ComponentModel.LicenseContext" />
-        <property name="UsageMode" propertytype="System.ComponentModel.LicenseUsageMode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateWithContext(System.Type, System.ComponentModel.LicenseContext)" argnames="type, creationContext" returntype="System.Object" />
-        <method name="CreateWithContext(System.Type, System.ComponentModel.LicenseContext, System.Object[])" argnames="type, creationContext, args" returntype="System.Object" />
-        <method name="IsLicensed(System.Type)" argnames="type" returntype="System.Boolean" />
-        <method name="IsValid(System.Type)" argnames="type" returntype="System.Boolean" />
-        <method name="IsValid(System.Type, System.Object, System.ComponentModel.License&amp;)" argnames="type, instance, license" returntype="System.Boolean" />
-        <method name="LockContext(System.Object)" argnames="contextUser" returntype="System.Void" />
-        <method name="UnlockContext(System.Object)" argnames="contextUser" returntype="System.Void" />
-        <method name="Validate(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="Validate(System.Type, System.Object)" argnames="type, instance" returntype="System.ComponentModel.License" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TypeDescriptor" namespace="System.ComponentModel">
-        <property name="ComNativeDescriptorHandler" propertytype="System.ComponentModel.IComNativeDescriptorHandler" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddEditorTable(System.Type, System.Collections.Hashtable)" argnames="editorBaseType, table" returntype="System.Void" />
-        <method name="CreateDesigner(System.ComponentModel.IComponent, System.Type)" argnames="component, designerBaseType" returntype="System.ComponentModel.Design.IDesigner" />
-        <method name="CreateEvent(System.Type, System.String, System.Type, System.Attribute[])" argnames="componentType, name, type, attributes" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="CreateEvent(System.Type, System.ComponentModel.EventDescriptor, System.Attribute[])" argnames="componentType, oldEventDescriptor, attributes" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="CreateProperty(System.Type, System.String, System.Type, System.Attribute[])" argnames="componentType, name, type, attributes" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="CreateProperty(System.Type, System.ComponentModel.PropertyDescriptor, System.Attribute[])" argnames="componentType, oldPropertyDescriptor, attributes" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetAttributes(System.Type)" argnames="componentType" returntype="System.ComponentModel.AttributeCollection" />
-        <method name="GetAttributes(System.Object)" argnames="component" returntype="System.ComponentModel.AttributeCollection" />
-        <method name="GetAttributes(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.AttributeCollection" />
-        <method name="GetClassName(System.Object)" argnames="component" returntype="System.String" />
-        <method name="GetClassName(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.String" />
-        <method name="GetComponentName(System.Object)" argnames="component" returntype="System.String" />
-        <method name="GetComponentName(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.String" />
-        <method name="GetConverter(System.Object)" argnames="component" returntype="System.ComponentModel.TypeConverter" />
-        <method name="GetConverter(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.TypeConverter" />
-        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
-        <method name="GetDefaultEvent(System.Type)" argnames="componentType" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="GetDefaultEvent(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="GetDefaultEvent(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="GetDefaultProperty(System.Type)" argnames="componentType" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetDefaultProperty(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetDefaultProperty(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetEditor(System.Object, System.Type)" argnames="component, editorBaseType" returntype="System.Object" />
-        <method name="GetEditor(System.Object, System.Type, System.Boolean)" argnames="component, editorBaseType, noCustomTypeDesc" returntype="System.Object" />
-        <method name="GetEditor(System.Type, System.Type)" argnames="type, editorBaseType" returntype="System.Object" />
-        <method name="GetEvents(System.Type)" argnames="componentType" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEvents(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEvents(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEvents(System.Type, System.Attribute[])" argnames="componentType, attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEvents(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEvents(System.Object, System.Attribute[], System.Boolean)" argnames="component, attributes, noCustomTypeDesc" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetProperties(System.Type)" argnames="componentType" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Type, System.Attribute[])" argnames="componentType, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties(System.Object, System.Attribute[], System.Boolean)" argnames="component, attributes, noCustomTypeDesc" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="Refresh(System.Object)" argnames="component" returntype="System.Void" />
-        <method name="Refresh(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="Refresh(System.Reflection.Module)" argnames="module" returntype="System.Void" />
-        <method name="Refresh(System.Reflection.Assembly)" argnames="assembly" returntype="System.Void" />
-        <method name="SortDescriptorArray(System.Collections.IList)" argnames="infos" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Refreshed" />
-    </class>
-    <class name="InheritanceAttribute" namespace="System.ComponentModel">
-        <constructor name="InheritanceAttribute" argnames="" />
-        <constructor name="InheritanceAttribute(System.ComponentModel.InheritanceLevel)" argnames="inheritanceLevel" />
-        <field name="Inherited" />
-        <field name="InheritedReadOnly" />
-        <field name="NotInherited" />
-        <field name="Default" />
-        <property name="InheritanceLevel" propertytype="System.ComponentModel.InheritanceLevel" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NotifyParentPropertyAttribute" namespace="System.ComponentModel">
-        <constructor name="NotifyParentPropertyAttribute(System.Boolean)" argnames="notifyParent" />
-        <field name="Yes" />
-        <field name="No" />
-        <field name="Default" />
-        <property name="NotifyParent" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ParenthesizePropertyNameAttribute" namespace="System.ComponentModel">
-        <constructor name="ParenthesizePropertyNameAttribute" argnames="" />
-        <constructor name="ParenthesizePropertyNameAttribute(System.Boolean)" argnames="needParenthesis" />
-        <field name="Default" />
-        <property name="NeedParenthesis" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PropertyTabAttribute" namespace="System.ComponentModel">
-        <constructor name="PropertyTabAttribute" argnames="" />
-        <constructor name="PropertyTabAttribute(System.Type)" argnames="tabClass" />
-        <constructor name="PropertyTabAttribute(System.String)" argnames="tabClassName" />
-        <constructor name="PropertyTabAttribute(System.Type, System.ComponentModel.PropertyTabScope)" argnames="tabClass, tabScope" />
-        <constructor name="PropertyTabAttribute(System.String, System.ComponentModel.PropertyTabScope)" argnames="tabClassName, tabScope" />
-        <property name="TabClasses" propertytype="System.Type[]" />
-        <property name="TabClassNames" propertytype="System.String[]" />
-        <property name="TabScopes" propertytype="System.ComponentModel.PropertyTabScope[]" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Equals(System.ComponentModel.PropertyTabAttribute)" argnames="other" returntype="System.Boolean" />
-        <method name="InitializeArrays(System.String[], System.ComponentModel.PropertyTabScope[])" argnames="tabClassNames, tabScopes" returntype="System.Void" />
-        <method name="InitializeArrays(System.Type[], System.ComponentModel.PropertyTabScope[])" argnames="tabClasses, tabScopes" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RefreshPropertiesAttribute" namespace="System.ComponentModel">
-        <constructor name="RefreshPropertiesAttribute(System.ComponentModel.RefreshProperties)" argnames="refresh" />
-        <field name="All" />
-        <field name="Repaint" />
-        <field name="Default" />
-        <property name="RefreshProperties" propertytype="System.ComponentModel.RefreshProperties" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ToolboxItemAttribute" namespace="System.ComponentModel">
-        <constructor name="ToolboxItemAttribute(System.Boolean)" argnames="defaultType" />
-        <constructor name="ToolboxItemAttribute(System.String)" argnames="toolboxItemTypeName" />
-        <constructor name="ToolboxItemAttribute(System.Type)" argnames="toolboxItemType" />
-        <field name="Default" />
-        <field name="None" />
-        <property name="ToolboxItemType" propertytype="System.Type" />
-        <property name="ToolboxItemTypeName" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IComponent" namespace="System.ComponentModel">
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <event name="Disposed" />
-    </interface>
-    <interface name="IContainer" namespace="System.ComponentModel">
-        <property name="Components" propertytype="System.ComponentModel.ComponentCollection" />
-        <method name="Remove(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="Add(System.ComponentModel.IComponent, System.String)" argnames="component, name" returntype="System.Void" />
-        <method name="Add(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-    </interface>
-    <interface name="ISite" namespace="System.ComponentModel">
-        <property name="Component" propertytype="System.ComponentModel.IComponent" />
-        <property name="Container" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-    </interface>
-    <interface name="IBindingList" namespace="System.ComponentModel">
-        <property name="AllowNew" propertytype="System.Boolean" />
-        <property name="AllowEdit" propertytype="System.Boolean" />
-        <property name="AllowRemove" propertytype="System.Boolean" />
-        <property name="SupportsChangeNotification" propertytype="System.Boolean" />
-        <property name="SupportsSearching" propertytype="System.Boolean" />
-        <property name="SupportsSorting" propertytype="System.Boolean" />
-        <property name="IsSorted" propertytype="System.Boolean" />
-        <property name="SortProperty" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <property name="SortDirection" propertytype="System.ComponentModel.ListSortDirection" />
-        <method name="RemoveSort" argnames="" returntype="System.Void" />
-        <method name="RemoveIndex(System.ComponentModel.PropertyDescriptor)" argnames="property" returntype="System.Void" />
-        <method name="Find(System.ComponentModel.PropertyDescriptor, System.Object)" argnames="property, key" returntype="System.Int32" />
-        <method name="ApplySort(System.ComponentModel.PropertyDescriptor, System.ComponentModel.ListSortDirection)" argnames="property, direction" returntype="System.Void" />
-        <method name="AddIndex(System.ComponentModel.PropertyDescriptor)" argnames="property" returntype="System.Void" />
-        <method name="AddNew" argnames="" returntype="System.Object" />
-        <event name="ListChanged" />
-    </interface>
-    <interface name="IComNativeDescriptorHandler" namespace="System.ComponentModel">
-        <method name="GetPropertyValue(System.Object, System.Int32, System.Boolean&amp;)" argnames="component, dispid, success" returntype="System.Object" />
-        <method name="GetPropertyValue(System.Object, System.String, System.Boolean&amp;)" argnames="component, propertyName, success" returntype="System.Object" />
-        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetEvents(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEvents(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetName(System.Object)" argnames="component" returntype="System.String" />
-        <method name="GetEditor(System.Object, System.Type)" argnames="component, baseEditorType" returntype="System.Object" />
-        <method name="GetDefaultProperty(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetDefaultEvent(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="GetConverter(System.Object)" argnames="component" returntype="System.ComponentModel.TypeConverter" />
-        <method name="GetClassName(System.Object)" argnames="component" returntype="System.String" />
-        <method name="GetAttributes(System.Object)" argnames="component" returntype="System.ComponentModel.AttributeCollection" />
-    </interface>
-    <interface name="ICustomTypeDescriptor" namespace="System.ComponentModel">
-        <method name="GetPropertyOwner(System.ComponentModel.PropertyDescriptor)" argnames="pd" returntype="System.Object" />
-        <method name="GetProperties(System.Attribute[])" argnames="attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetEvents(System.Attribute[])" argnames="attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEvents" argnames="" returntype="System.ComponentModel.EventDescriptorCollection" />
-        <method name="GetEditor(System.Type)" argnames="editorBaseType" returntype="System.Object" />
-        <method name="GetDefaultProperty" argnames="" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetDefaultEvent" argnames="" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="GetConverter" argnames="" returntype="System.ComponentModel.TypeConverter" />
-        <method name="GetComponentName" argnames="" returntype="System.String" />
-        <method name="GetClassName" argnames="" returntype="System.String" />
-        <method name="GetAttributes" argnames="" returntype="System.ComponentModel.AttributeCollection" />
-    </interface>
-    <interface name="IDataErrorInfo" namespace="System.ComponentModel">
-        <property name="Item" propertytype="System.String" />
-        <property name="Error" propertytype="System.String" />
-    </interface>
-    <interface name="IEditableObject" namespace="System.ComponentModel">
-        <method name="CancelEdit" argnames="" returntype="System.Void" />
-        <method name="EndEdit" argnames="" returntype="System.Void" />
-        <method name="BeginEdit" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IExtenderProvider" namespace="System.ComponentModel">
-        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
-    </interface>
-    <interface name="IListSource" namespace="System.ComponentModel">
-        <property name="ContainsListCollection" propertytype="System.Boolean" />
-        <method name="GetList" argnames="" returntype="System.Collections.IList" />
-    </interface>
-    <interface name="ISupportInitialize" namespace="System.ComponentModel">
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="ISynchronizeInvoke" namespace="System.ComponentModel">
-        <property name="InvokeRequired" propertytype="System.Boolean" />
-        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
-        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.IAsyncResult" />
-    </interface>
-    <interface name="ITypeDescriptorContext" namespace="System.ComponentModel">
-        <property name="Container" propertytype="System.ComponentModel.IContainer" />
-        <property name="Instance" propertytype="System.Object" />
-        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
-        <method name="OnComponentChanged" argnames="" returntype="System.Void" />
-        <method name="OnComponentChanging" argnames="" returntype="System.Boolean" />
-    </interface>
-    <interface name="ITypedList" namespace="System.ComponentModel">
-        <method name="GetItemProperties(System.ComponentModel.PropertyDescriptor[])" argnames="listAccessors" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetListName(System.ComponentModel.PropertyDescriptor[])" argnames="listAccessors" returntype="System.String" />
-    </interface>
-    <delegate name="CancelEventHandler" namespace="System.ComponentModel">
-        <constructor name="CancelEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.CancelEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.CancelEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="CollectionChangeEventHandler" namespace="System.ComponentModel">
-        <constructor name="CollectionChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.CollectionChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ListChangedEventHandler" namespace="System.ComponentModel">
-        <constructor name="ListChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.ListChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.ListChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="PropertyChangedEventHandler" namespace="System.ComponentModel">
-        <constructor name="PropertyChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.PropertyChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.PropertyChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="RefreshEventHandler" namespace="System.ComponentModel">
-        <constructor name="RefreshEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.ComponentModel.RefreshEventArgs, System.AsyncCallback, System.Object)" argnames="e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.ComponentModel.RefreshEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="BindableSupport" namespace="System.ComponentModel">
-        <field name="No" />
-        <field name="Yes" />
-        <field name="Default" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="CollectionChangeAction" namespace="System.ComponentModel">
-        <field name="Add" />
-        <field name="Remove" />
-        <field name="Refresh" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="DesignerSerializationVisibility" namespace="System.ComponentModel">
-        <field name="Hidden" />
-        <field name="Visible" />
-        <field name="Content" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EditorBrowsableState" namespace="System.ComponentModel">
-        <field name="Always" />
-        <field name="Never" />
-        <field name="Advanced" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LicenseUsageMode" namespace="System.ComponentModel">
-        <field name="Runtime" />
-        <field name="Designtime" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ListChangedType" namespace="System.ComponentModel">
-        <field name="Reset" />
-        <field name="ItemAdded" />
-        <field name="ItemDeleted" />
-        <field name="ItemMoved" />
-        <field name="ItemChanged" />
-        <field name="PropertyDescriptorAdded" />
-        <field name="PropertyDescriptorDeleted" />
-        <field name="PropertyDescriptorChanged" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ListSortDirection" namespace="System.ComponentModel">
-        <field name="Ascending" />
-        <field name="Descending" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ToolboxItemFilterType" namespace="System.ComponentModel">
-        <field name="Allow" />
-        <field name="Custom" />
-        <field name="Prevent" />
-        <field name="Require" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="InheritanceLevel" namespace="System.ComponentModel">
-        <field name="Inherited" />
-        <field name="InheritedReadOnly" />
-        <field name="NotInherited" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PropertyTabScope" namespace="System.ComponentModel">
-        <field name="Static" />
-        <field name="Global" />
-        <field name="Document" />
-        <field name="Component" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="RefreshProperties" namespace="System.ComponentModel">
-        <field name="None" />
-        <field name="All" />
-        <field name="Repaint" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="Regex" namespace="System.Text.RegularExpressions">
-        <constructor name="Regex" argnames="" />
-        <constructor name="Regex(System.String)" argnames="pattern" />
-        <constructor name="Regex(System.String, System.Text.RegularExpressions.RegexOptions)" argnames="pattern, options" />
-        <property name="RightToLeft" propertytype="System.Boolean" />
-        <property name="Options" propertytype="System.Text.RegularExpressions.RegexOptions" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Escape(System.String)" argnames="str" returntype="System.String" />
-        <method name="Unescape(System.String)" argnames="str" returntype="System.String" />
-        <method name="GetGroupNames" argnames="" returntype="System.String[]" />
-        <method name="GetGroupNumbers" argnames="" returntype="System.Int32[]" />
-        <method name="GroupNameFromNumber(System.Int32)" argnames="i" returntype="System.String" />
-        <method name="GroupNumberFromName(System.String)" argnames="name" returntype="System.Int32" />
-        <method name="IsMatch(System.String, System.String)" argnames="input, pattern" returntype="System.Boolean" />
-        <method name="IsMatch(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.Boolean" />
-        <method name="IsMatch(System.String)" argnames="input" returntype="System.Boolean" />
-        <method name="IsMatch(System.String, System.Int32)" argnames="input, startat" returntype="System.Boolean" />
-        <method name="Match(System.String, System.String)" argnames="input, pattern" returntype="System.Text.RegularExpressions.Match" />
-        <method name="Match(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.Text.RegularExpressions.Match" />
-        <method name="Match(System.String)" argnames="input" returntype="System.Text.RegularExpressions.Match" />
-        <method name="Match(System.String, System.Int32)" argnames="input, startat" returntype="System.Text.RegularExpressions.Match" />
-        <method name="Match(System.String, System.Int32, System.Int32)" argnames="input, beginning, length" returntype="System.Text.RegularExpressions.Match" />
-        <method name="Matches(System.String, System.String)" argnames="input, pattern" returntype="System.Text.RegularExpressions.MatchCollection" />
-        <method name="Matches(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.Text.RegularExpressions.MatchCollection" />
-        <method name="Matches(System.String)" argnames="input" returntype="System.Text.RegularExpressions.MatchCollection" />
-        <method name="Matches(System.String, System.Int32)" argnames="input, startat" returntype="System.Text.RegularExpressions.MatchCollection" />
-        <method name="Replace(System.String, System.String, System.String)" argnames="input, pattern, replacement" returntype="System.String" />
-        <method name="Replace(System.String, System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, replacement, options" returntype="System.String" />
-        <method name="Replace(System.String, System.String)" argnames="input, replacement" returntype="System.String" />
-        <method name="Replace(System.String, System.String, System.Int32)" argnames="input, replacement, count" returntype="System.String" />
-        <method name="Replace(System.String, System.String, System.Int32, System.Int32)" argnames="input, replacement, count, startat" returntype="System.String" />
-        <method name="Replace(System.String, System.String, System.Text.RegularExpressions.MatchEvaluator)" argnames="input, pattern, evaluator" returntype="System.String" />
-        <method name="Replace(System.String, System.String, System.Text.RegularExpressions.MatchEvaluator, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, evaluator, options" returntype="System.String" />
-        <method name="Replace(System.String, System.Text.RegularExpressions.MatchEvaluator)" argnames="input, evaluator" returntype="System.String" />
-        <method name="Replace(System.String, System.Text.RegularExpressions.MatchEvaluator, System.Int32)" argnames="input, evaluator, count" returntype="System.String" />
-        <method name="Replace(System.String, System.Text.RegularExpressions.MatchEvaluator, System.Int32, System.Int32)" argnames="input, evaluator, count, startat" returntype="System.String" />
-        <method name="Split(System.String, System.String)" argnames="input, pattern" returntype="System.String[]" />
-        <method name="Split(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.String[]" />
-        <method name="Split(System.String)" argnames="input" returntype="System.String[]" />
-        <method name="Split(System.String, System.Int32)" argnames="input, count" returntype="System.String[]" />
-        <method name="Split(System.String, System.Int32, System.Int32)" argnames="input, count, startat" returntype="System.String[]" />
-        <method name="CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName)" argnames="regexinfos, assemblyname" returntype="System.Void" />
-        <method name="CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[])" argnames="regexinfos, assemblyname, attributes" returntype="System.Void" />
-        <method name="CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[], System.String)" argnames="regexinfos, assemblyname, attributes, resourceFile" returntype="System.Void" />
-        <method name="InitializeReferences" argnames="" returntype="System.Void" />
-        <method name="UseOptionC" argnames="" returntype="System.Boolean" />
-        <method name="UseOptionR" argnames="" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Capture" namespace="System.Text.RegularExpressions">
-        <property name="Index" propertytype="System.Int32" />
-        <property name="Length" propertytype="System.Int32" />
-        <property name="Value" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CaptureCollection" namespace="System.Text.RegularExpressions">
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Text.RegularExpressions.Capture" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RegexCompilationInfo" namespace="System.Text.RegularExpressions">
-        <constructor name="RegexCompilationInfo(System.String, System.Text.RegularExpressions.RegexOptions, System.String, System.String, System.Boolean)" argnames="pattern, options, name, fullnamespace, ispublic" />
-        <property name="Pattern" propertytype="System.String" />
-        <property name="Options" propertytype="System.Text.RegularExpressions.RegexOptions" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="IsPublic" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Group" namespace="System.Text.RegularExpressions">
-        <property name="Success" propertytype="System.Boolean" />
-        <property name="Captures" propertytype="System.Text.RegularExpressions.CaptureCollection" />
-        <property name="Index" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
-        <property name="Length" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
-        <property name="Value" inherited="System.Text.RegularExpressions.Capture" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Text.RegularExpressions.Capture" returntype="System.String" />
-        <method name="Synchronized(System.Text.RegularExpressions.Group)" argnames="inner" returntype="System.Text.RegularExpressions.Group" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GroupCollection" namespace="System.Text.RegularExpressions">
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Text.RegularExpressions.Group" />
-        <property name="Item" propertytype="System.Text.RegularExpressions.Group" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RegexRunner" namespace="System.Text.RegularExpressions">
-        <method name="InitTrackCount" argnames="" returntype="System.Void" />
-        <method name="FindFirstChar" argnames="" returntype="System.Boolean" />
-        <method name="Go" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="EnsureStorage" argnames="" returntype="System.Void" />
-        <method name="IsBoundary(System.Int32, System.Int32, System.Int32)" argnames="index, startpos, endpos" returntype="System.Boolean" />
-        <method name="IsECMABoundary(System.Int32, System.Int32, System.Int32)" argnames="index, startpos, endpos" returntype="System.Boolean" />
-        <method name="CharInSet(System.Char, System.String, System.String)" argnames="ch, set, category" returntype="System.Boolean" />
-        <method name="DoubleTrack" argnames="" returntype="System.Void" />
-        <method name="DoubleStack" argnames="" returntype="System.Void" />
-        <method name="DoubleCrawl" argnames="" returntype="System.Void" />
-        <method name="Crawl(System.Int32)" argnames="i" returntype="System.Void" />
-        <method name="Popcrawl" argnames="" returntype="System.Int32" />
-        <method name="Crawlpos" argnames="" returntype="System.Int32" />
-        <method name="Capture(System.Int32, System.Int32, System.Int32)" argnames="capnum, start, end" returntype="System.Void" />
-        <method name="TransferCapture(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="capnum, uncapnum, start, end" returntype="System.Void" />
-        <method name="Uncapture" argnames="" returntype="System.Void" />
-        <method name="IsMatched(System.Int32)" argnames="cap" returntype="System.Boolean" />
-        <method name="MatchIndex(System.Int32)" argnames="cap" returntype="System.Int32" />
-        <method name="MatchLength(System.Int32)" argnames="cap" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Match" namespace="System.Text.RegularExpressions">
-        <property name="Empty" propertytype="System.Text.RegularExpressions.Match" />
-        <property name="Groups" propertytype="System.Text.RegularExpressions.GroupCollection" />
-        <property name="Success" inherited="System.Text.RegularExpressions.Group" propertytype="System.Boolean" />
-        <property name="Captures" inherited="System.Text.RegularExpressions.Group" propertytype="System.Text.RegularExpressions.CaptureCollection" />
-        <property name="Index" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
-        <property name="Length" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
-        <property name="Value" inherited="System.Text.RegularExpressions.Capture" propertytype="System.String" />
-        <method name="Result(System.String)" argnames="replacement" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Text.RegularExpressions.Capture" returntype="System.String" />
-        <method name="NextMatch" argnames="" returntype="System.Text.RegularExpressions.Match" />
-        <method name="Synchronized(System.Text.RegularExpressions.Match)" argnames="inner" returntype="System.Text.RegularExpressions.Match" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MatchCollection" namespace="System.Text.RegularExpressions">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Text.RegularExpressions.Match" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RegexRunnerFactory" namespace="System.Text.RegularExpressions">
-        <constructor name="RegexRunnerFactory" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="MatchEvaluator" namespace="System.Text.RegularExpressions">
-        <constructor name="MatchEvaluator(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.String" />
-        <method name="BeginInvoke(System.Text.RegularExpressions.Match, System.AsyncCallback, System.Object)" argnames="match, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Text.RegularExpressions.Match)" argnames="match" returntype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="RegexOptions" namespace="System.Text.RegularExpressions">
-        <field name="None" />
-        <field name="IgnoreCase" />
-        <field name="Multiline" />
-        <field name="ExplicitCapture" />
-        <field name="Compiled" />
-        <field name="Singleline" />
-        <field name="IgnorePatternWhitespace" />
-        <field name="RightToLeft" />
-        <field name="ECMAScript" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="CodeObject" namespace="System.CodeDom">
-        <constructor name="CodeObject" argnames="" />
-        <property name="UserData" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeExpression" namespace="System.CodeDom">
-        <constructor name="CodeExpression" argnames="" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeArgumentReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeArgumentReferenceExpression" argnames="" />
-        <constructor name="CodeArgumentReferenceExpression(System.String)" argnames="parameterName" />
-        <property name="ParameterName" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeArrayCreateExpression" namespace="System.CodeDom">
-        <constructor name="CodeArrayCreateExpression" argnames="" />
-        <constructor name="CodeArrayCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression[])" argnames="createType, initializers" />
-        <constructor name="CodeArrayCreateExpression(System.String, System.CodeDom.CodeExpression[])" argnames="createType, initializers" />
-        <constructor name="CodeArrayCreateExpression(System.Type, System.CodeDom.CodeExpression[])" argnames="createType, initializers" />
-        <constructor name="CodeArrayCreateExpression(System.CodeDom.CodeTypeReference, System.Int32)" argnames="createType, size" />
-        <constructor name="CodeArrayCreateExpression(System.String, System.Int32)" argnames="createType, size" />
-        <constructor name="CodeArrayCreateExpression(System.Type, System.Int32)" argnames="createType, size" />
-        <constructor name="CodeArrayCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression)" argnames="createType, size" />
-        <constructor name="CodeArrayCreateExpression(System.String, System.CodeDom.CodeExpression)" argnames="createType, size" />
-        <constructor name="CodeArrayCreateExpression(System.Type, System.CodeDom.CodeExpression)" argnames="createType, size" />
-        <property name="CreateType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Initializers" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="SizeExpression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeArrayIndexerExpression" namespace="System.CodeDom">
-        <constructor name="CodeArrayIndexerExpression" argnames="" />
-        <constructor name="CodeArrayIndexerExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression[])" argnames="targetObject, indices" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Indices" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeStatement" namespace="System.CodeDom">
-        <constructor name="CodeStatement" argnames="" />
-        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeAssignStatement" namespace="System.CodeDom">
-        <constructor name="CodeAssignStatement" argnames="" />
-        <constructor name="CodeAssignStatement(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression)" argnames="left, right" />
-        <property name="Left" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Right" propertytype="System.CodeDom.CodeExpression" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeAttachEventStatement" namespace="System.CodeDom">
-        <constructor name="CodeAttachEventStatement" argnames="" />
-        <constructor name="CodeAttachEventStatement(System.CodeDom.CodeEventReferenceExpression, System.CodeDom.CodeExpression)" argnames="eventRef, listener" />
-        <constructor name="CodeAttachEventStatement(System.CodeDom.CodeExpression, System.String, System.CodeDom.CodeExpression)" argnames="targetObject, eventName, listener" />
-        <property name="Event" propertytype="System.CodeDom.CodeEventReferenceExpression" />
-        <property name="Listener" propertytype="System.CodeDom.CodeExpression" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeAttributeArgument" namespace="System.CodeDom">
-        <constructor name="CodeAttributeArgument" argnames="" />
-        <constructor name="CodeAttributeArgument(System.CodeDom.CodeExpression)" argnames="value" />
-        <constructor name="CodeAttributeArgument(System.String, System.CodeDom.CodeExpression)" argnames="name, value" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Value" propertytype="System.CodeDom.CodeExpression" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeAttributeArgumentCollection" namespace="System.CodeDom">
-        <constructor name="CodeAttributeArgumentCollection" argnames="" />
-        <constructor name="CodeAttributeArgumentCollection(System.CodeDom.CodeAttributeArgumentCollection)" argnames="value" />
-        <constructor name="CodeAttributeArgumentCollection(System.CodeDom.CodeAttributeArgument[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeAttributeArgument" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeAttributeArgument[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeAttributeArgumentCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeAttributeArgument[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeAttributeArgument)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeAttributeDeclaration" namespace="System.CodeDom">
-        <constructor name="CodeAttributeDeclaration" argnames="" />
-        <constructor name="CodeAttributeDeclaration(System.String)" argnames="name" />
-        <constructor name="CodeAttributeDeclaration(System.String, System.CodeDom.CodeAttributeArgument[])" argnames="name, arguments" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Arguments" propertytype="System.CodeDom.CodeAttributeArgumentCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeAttributeDeclarationCollection" namespace="System.CodeDom">
-        <constructor name="CodeAttributeDeclarationCollection" argnames="" />
-        <constructor name="CodeAttributeDeclarationCollection(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="value" />
-        <constructor name="CodeAttributeDeclarationCollection(System.CodeDom.CodeAttributeDeclaration[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeAttributeDeclaration" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeAttributeDeclaration[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeAttributeDeclaration[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeAttributeDeclaration)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeBaseReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeBaseReferenceExpression" argnames="" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeBinaryOperatorExpression" namespace="System.CodeDom">
-        <constructor name="CodeBinaryOperatorExpression" argnames="" />
-        <constructor name="CodeBinaryOperatorExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeBinaryOperatorType, System.CodeDom.CodeExpression)" argnames="left, op, right" />
-        <property name="Right" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Left" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Operator" propertytype="System.CodeDom.CodeBinaryOperatorType" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeCastExpression" namespace="System.CodeDom">
-        <constructor name="CodeCastExpression" argnames="" />
-        <constructor name="CodeCastExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression)" argnames="targetType, expression" />
-        <constructor name="CodeCastExpression(System.String, System.CodeDom.CodeExpression)" argnames="targetType, expression" />
-        <constructor name="CodeCastExpression(System.Type, System.CodeDom.CodeExpression)" argnames="targetType, expression" />
-        <property name="TargetType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeCatchClause" namespace="System.CodeDom">
-        <constructor name="CodeCatchClause" argnames="" />
-        <constructor name="CodeCatchClause(System.String)" argnames="localName" />
-        <constructor name="CodeCatchClause(System.String, System.CodeDom.CodeTypeReference)" argnames="localName, catchExceptionType" />
-        <constructor name="CodeCatchClause(System.String, System.CodeDom.CodeTypeReference, System.CodeDom.CodeStatement[])" argnames="localName, catchExceptionType, statements" />
-        <property name="LocalName" propertytype="System.String" />
-        <property name="CatchExceptionType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Statements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeCatchClauseCollection" namespace="System.CodeDom">
-        <constructor name="CodeCatchClauseCollection" argnames="" />
-        <constructor name="CodeCatchClauseCollection(System.CodeDom.CodeCatchClauseCollection)" argnames="value" />
-        <constructor name="CodeCatchClauseCollection(System.CodeDom.CodeCatchClause[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeCatchClause" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeCatchClause[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeCatchClauseCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeCatchClause[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeCatchClause)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeComment" namespace="System.CodeDom">
-        <constructor name="CodeComment" argnames="" />
-        <constructor name="CodeComment(System.String)" argnames="text" />
-        <constructor name="CodeComment(System.String, System.Boolean)" argnames="text, docComment" />
-        <property name="DocComment" propertytype="System.Boolean" />
-        <property name="Text" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeCommentStatement" namespace="System.CodeDom">
-        <constructor name="CodeCommentStatement" argnames="" />
-        <constructor name="CodeCommentStatement(System.CodeDom.CodeComment)" argnames="comment" />
-        <constructor name="CodeCommentStatement(System.String)" argnames="text" />
-        <constructor name="CodeCommentStatement(System.String, System.Boolean)" argnames="text, docComment" />
-        <property name="Comment" propertytype="System.CodeDom.CodeComment" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeCommentStatementCollection" namespace="System.CodeDom">
-        <constructor name="CodeCommentStatementCollection" argnames="" />
-        <constructor name="CodeCommentStatementCollection(System.CodeDom.CodeCommentStatementCollection)" argnames="value" />
-        <constructor name="CodeCommentStatementCollection(System.CodeDom.CodeCommentStatement[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeCommentStatement" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeCommentStatement[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeCommentStatementCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeCommentStatement[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeCommentStatement)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeCompileUnit" namespace="System.CodeDom">
-        <constructor name="CodeCompileUnit" argnames="" />
-        <property name="Namespaces" propertytype="System.CodeDom.CodeNamespaceCollection" />
-        <property name="ReferencedAssemblies" propertytype="System.Collections.Specialized.StringCollection" />
-        <property name="AssemblyCustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeConditionStatement" namespace="System.CodeDom">
-        <constructor name="CodeConditionStatement" argnames="" />
-        <constructor name="CodeConditionStatement(System.CodeDom.CodeExpression, System.CodeDom.CodeStatement[])" argnames="condition, trueStatements" />
-        <constructor name="CodeConditionStatement(System.CodeDom.CodeExpression, System.CodeDom.CodeStatement[], System.CodeDom.CodeStatement[])" argnames="condition, trueStatements, falseStatements" />
-        <property name="Condition" propertytype="System.CodeDom.CodeExpression" />
-        <property name="TrueStatements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="FalseStatements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTypeMember" namespace="System.CodeDom">
-        <constructor name="CodeTypeMember" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Attributes" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeMemberMethod" namespace="System.CodeDom">
-        <constructor name="CodeMemberMethod" argnames="" />
-        <property name="ReturnType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Statements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="Parameters" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
-        <property name="PrivateImplementationType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="ImplementationTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="ReturnTypeCustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PopulateParameters" />
-        <event name="PopulateStatements" />
-        <event name="PopulateImplementationTypes" />
-    </class>
-    <class name="CodeConstructor" namespace="System.CodeDom">
-        <constructor name="CodeConstructor" argnames="" />
-        <property name="BaseConstructorArgs" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="ChainedConstructorArgs" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="ReturnType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Statements" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="Parameters" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
-        <property name="PrivateImplementationType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="ImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="ReturnTypeCustomAttributes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PopulateParameters" inherited="System.CodeDom.CodeMemberMethod" />
-        <event name="PopulateStatements" inherited="System.CodeDom.CodeMemberMethod" />
-        <event name="PopulateImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" />
-    </class>
-    <class name="CodeDelegateCreateExpression" namespace="System.CodeDom">
-        <constructor name="CodeDelegateCreateExpression" argnames="" />
-        <constructor name="CodeDelegateCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression, System.String)" argnames="delegateType, targetObject, methodName" />
-        <property name="DelegateType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeDelegateInvokeExpression" namespace="System.CodeDom">
-        <constructor name="CodeDelegateInvokeExpression" argnames="" />
-        <constructor name="CodeDelegateInvokeExpression(System.CodeDom.CodeExpression)" argnames="targetObject" />
-        <constructor name="CodeDelegateInvokeExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression[])" argnames="targetObject, parameters" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Parameters" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeDirectionExpression" namespace="System.CodeDom">
-        <constructor name="CodeDirectionExpression" argnames="" />
-        <constructor name="CodeDirectionExpression(System.CodeDom.FieldDirection, System.CodeDom.CodeExpression)" argnames="direction, expression" />
-        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Direction" propertytype="System.CodeDom.FieldDirection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeEntryPointMethod" namespace="System.CodeDom">
-        <constructor name="CodeEntryPointMethod" argnames="" />
-        <property name="ReturnType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Statements" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="Parameters" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
-        <property name="PrivateImplementationType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="ImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="ReturnTypeCustomAttributes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PopulateParameters" inherited="System.CodeDom.CodeMemberMethod" />
-        <event name="PopulateStatements" inherited="System.CodeDom.CodeMemberMethod" />
-        <event name="PopulateImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" />
-    </class>
-    <class name="CodeEventReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeEventReferenceExpression" argnames="" />
-        <constructor name="CodeEventReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, eventName" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="EventName" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeExpressionCollection" namespace="System.CodeDom">
-        <constructor name="CodeExpressionCollection" argnames="" />
-        <constructor name="CodeExpressionCollection(System.CodeDom.CodeExpressionCollection)" argnames="value" />
-        <constructor name="CodeExpressionCollection(System.CodeDom.CodeExpression[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeExpression" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeExpression[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeExpressionCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeExpression[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeExpression)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeExpressionStatement" namespace="System.CodeDom">
-        <constructor name="CodeExpressionStatement" argnames="" />
-        <constructor name="CodeExpressionStatement(System.CodeDom.CodeExpression)" argnames="expression" />
-        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeFieldReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeFieldReferenceExpression" argnames="" />
-        <constructor name="CodeFieldReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, fieldName" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="FieldName" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeGotoStatement" namespace="System.CodeDom">
-        <constructor name="CodeGotoStatement(System.String)" argnames="label" />
-        <property name="Label" propertytype="System.String" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeIndexerExpression" namespace="System.CodeDom">
-        <constructor name="CodeIndexerExpression" argnames="" />
-        <constructor name="CodeIndexerExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression[])" argnames="targetObject, indices" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Indices" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeIterationStatement" namespace="System.CodeDom">
-        <constructor name="CodeIterationStatement" argnames="" />
-        <constructor name="CodeIterationStatement(System.CodeDom.CodeStatement, System.CodeDom.CodeExpression, System.CodeDom.CodeStatement, System.CodeDom.CodeStatement[])" argnames="initStatement, testExpression, incrementStatement, statements" />
-        <property name="InitStatement" propertytype="System.CodeDom.CodeStatement" />
-        <property name="TestExpression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="IncrementStatement" propertytype="System.CodeDom.CodeStatement" />
-        <property name="Statements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeLabeledStatement" namespace="System.CodeDom">
-        <constructor name="CodeLabeledStatement" argnames="" />
-        <constructor name="CodeLabeledStatement(System.String)" argnames="label" />
-        <constructor name="CodeLabeledStatement(System.String, System.CodeDom.CodeStatement)" argnames="label, statement" />
-        <property name="Label" propertytype="System.String" />
-        <property name="Statement" propertytype="System.CodeDom.CodeStatement" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeLinePragma" namespace="System.CodeDom">
-        <constructor name="CodeLinePragma(System.String, System.Int32)" argnames="fileName, lineNumber" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeMemberEvent" namespace="System.CodeDom">
-        <constructor name="CodeMemberEvent" argnames="" />
-        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="PrivateImplementationType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="ImplementationTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeMemberField" namespace="System.CodeDom">
-        <constructor name="CodeMemberField" argnames="" />
-        <constructor name="CodeMemberField(System.CodeDom.CodeTypeReference, System.String)" argnames="type, name" />
-        <constructor name="CodeMemberField(System.String, System.String)" argnames="type, name" />
-        <constructor name="CodeMemberField(System.Type, System.String)" argnames="type, name" />
-        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="InitExpression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeMemberProperty" namespace="System.CodeDom">
-        <constructor name="CodeMemberProperty" argnames="" />
-        <property name="PrivateImplementationType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="ImplementationTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="HasGet" propertytype="System.Boolean" />
-        <property name="HasSet" propertytype="System.Boolean" />
-        <property name="GetStatements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="SetStatements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="Parameters" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeMethodInvokeExpression" namespace="System.CodeDom">
-        <constructor name="CodeMethodInvokeExpression" argnames="" />
-        <constructor name="CodeMethodInvokeExpression(System.CodeDom.CodeMethodReferenceExpression, System.CodeDom.CodeExpression[])" argnames="method, parameters" />
-        <constructor name="CodeMethodInvokeExpression(System.CodeDom.CodeExpression, System.String, System.CodeDom.CodeExpression[])" argnames="targetObject, methodName, parameters" />
-        <property name="Method" propertytype="System.CodeDom.CodeMethodReferenceExpression" />
-        <property name="Parameters" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeMethodReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeMethodReferenceExpression" argnames="" />
-        <constructor name="CodeMethodReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, methodName" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeMethodReturnStatement" namespace="System.CodeDom">
-        <constructor name="CodeMethodReturnStatement" argnames="" />
-        <constructor name="CodeMethodReturnStatement(System.CodeDom.CodeExpression)" argnames="expression" />
-        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeNamespace" namespace="System.CodeDom">
-        <constructor name="CodeNamespace" argnames="" />
-        <constructor name="CodeNamespace(System.String)" argnames="name" />
-        <property name="Types" propertytype="System.CodeDom.CodeTypeDeclarationCollection" />
-        <property name="Imports" propertytype="System.CodeDom.CodeNamespaceImportCollection" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Comments" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PopulateComments" />
-        <event name="PopulateImports" />
-        <event name="PopulateTypes" />
-    </class>
-    <class name="CodeNamespaceCollection" namespace="System.CodeDom">
-        <constructor name="CodeNamespaceCollection" argnames="" />
-        <constructor name="CodeNamespaceCollection(System.CodeDom.CodeNamespaceCollection)" argnames="value" />
-        <constructor name="CodeNamespaceCollection(System.CodeDom.CodeNamespace[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeNamespace" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeNamespace[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeNamespaceCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeNamespace[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeNamespace)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeNamespaceImport" namespace="System.CodeDom">
-        <constructor name="CodeNamespaceImport" argnames="" />
-        <constructor name="CodeNamespaceImport(System.String)" argnames="nameSpace" />
-        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeNamespaceImportCollection" namespace="System.CodeDom">
-        <constructor name="CodeNamespaceImportCollection" argnames="" />
-        <property name="Item" propertytype="System.CodeDom.CodeNamespaceImport" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeNamespaceImport)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeNamespaceImport[])" argnames="value" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeObjectCreateExpression" namespace="System.CodeDom">
-        <constructor name="CodeObjectCreateExpression" argnames="" />
-        <constructor name="CodeObjectCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression[])" argnames="createType, parameters" />
-        <constructor name="CodeObjectCreateExpression(System.String, System.CodeDom.CodeExpression[])" argnames="createType, parameters" />
-        <constructor name="CodeObjectCreateExpression(System.Type, System.CodeDom.CodeExpression[])" argnames="createType, parameters" />
-        <property name="CreateType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Parameters" propertytype="System.CodeDom.CodeExpressionCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeParameterDeclarationExpression" namespace="System.CodeDom">
-        <constructor name="CodeParameterDeclarationExpression" argnames="" />
-        <constructor name="CodeParameterDeclarationExpression(System.CodeDom.CodeTypeReference, System.String)" argnames="type, name" />
-        <constructor name="CodeParameterDeclarationExpression(System.String, System.String)" argnames="type, name" />
-        <constructor name="CodeParameterDeclarationExpression(System.Type, System.String)" argnames="type, name" />
-        <property name="CustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="Direction" propertytype="System.CodeDom.FieldDirection" />
-        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Name" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeParameterDeclarationExpressionCollection" namespace="System.CodeDom">
-        <constructor name="CodeParameterDeclarationExpressionCollection" argnames="" />
-        <constructor name="CodeParameterDeclarationExpressionCollection(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="value" />
-        <constructor name="CodeParameterDeclarationExpressionCollection(System.CodeDom.CodeParameterDeclarationExpression[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeParameterDeclarationExpression" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeParameterDeclarationExpression[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeParameterDeclarationExpression[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeParameterDeclarationExpression)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodePrimitiveExpression" namespace="System.CodeDom">
-        <constructor name="CodePrimitiveExpression" argnames="" />
-        <constructor name="CodePrimitiveExpression(System.Object)" argnames="value" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodePropertyReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodePropertyReferenceExpression" argnames="" />
-        <constructor name="CodePropertyReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, propertyName" />
-        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
-        <property name="PropertyName" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodePropertySetValueReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodePropertySetValueReferenceExpression" argnames="" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeRemoveEventStatement" namespace="System.CodeDom">
-        <constructor name="CodeRemoveEventStatement" argnames="" />
-        <constructor name="CodeRemoveEventStatement(System.CodeDom.CodeEventReferenceExpression, System.CodeDom.CodeExpression)" argnames="eventRef, listener" />
-        <constructor name="CodeRemoveEventStatement(System.CodeDom.CodeExpression, System.String, System.CodeDom.CodeExpression)" argnames="targetObject, eventName, listener" />
-        <property name="Event" propertytype="System.CodeDom.CodeEventReferenceExpression" />
-        <property name="Listener" propertytype="System.CodeDom.CodeExpression" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeSnippetCompileUnit" namespace="System.CodeDom">
-        <constructor name="CodeSnippetCompileUnit(System.String)" argnames="value" />
-        <property name="Value" propertytype="System.String" />
-        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Namespaces" inherited="System.CodeDom.CodeCompileUnit" propertytype="System.CodeDom.CodeNamespaceCollection" />
-        <property name="ReferencedAssemblies" inherited="System.CodeDom.CodeCompileUnit" propertytype="System.Collections.Specialized.StringCollection" />
-        <property name="AssemblyCustomAttributes" inherited="System.CodeDom.CodeCompileUnit" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeSnippetExpression" namespace="System.CodeDom">
-        <constructor name="CodeSnippetExpression" argnames="" />
-        <constructor name="CodeSnippetExpression(System.String)" argnames="value" />
-        <property name="Value" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeSnippetStatement" namespace="System.CodeDom">
-        <constructor name="CodeSnippetStatement" argnames="" />
-        <constructor name="CodeSnippetStatement(System.String)" argnames="value" />
-        <property name="Value" propertytype="System.String" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeSnippetTypeMember" namespace="System.CodeDom">
-        <constructor name="CodeSnippetTypeMember" argnames="" />
-        <constructor name="CodeSnippetTypeMember(System.String)" argnames="text" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeStatementCollection" namespace="System.CodeDom">
-        <constructor name="CodeStatementCollection" argnames="" />
-        <constructor name="CodeStatementCollection(System.CodeDom.CodeStatementCollection)" argnames="value" />
-        <constructor name="CodeStatementCollection(System.CodeDom.CodeStatement[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeStatement" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Int32" />
-        <method name="Add(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeStatement[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeStatementCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeStatement[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeStatement)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeThisReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeThisReferenceExpression" argnames="" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeThrowExceptionStatement" namespace="System.CodeDom">
-        <constructor name="CodeThrowExceptionStatement" argnames="" />
-        <constructor name="CodeThrowExceptionStatement(System.CodeDom.CodeExpression)" argnames="toThrow" />
-        <property name="ToThrow" propertytype="System.CodeDom.CodeExpression" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTryCatchFinallyStatement" namespace="System.CodeDom">
-        <constructor name="CodeTryCatchFinallyStatement" argnames="" />
-        <constructor name="CodeTryCatchFinallyStatement(System.CodeDom.CodeStatement[], System.CodeDom.CodeCatchClause[])" argnames="tryStatements, catchClauses" />
-        <constructor name="CodeTryCatchFinallyStatement(System.CodeDom.CodeStatement[], System.CodeDom.CodeCatchClause[], System.CodeDom.CodeStatement[])" argnames="tryStatements, catchClauses, finallyStatements" />
-        <property name="TryStatements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="CatchClauses" propertytype="System.CodeDom.CodeCatchClauseCollection" />
-        <property name="FinallyStatements" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTypeConstructor" namespace="System.CodeDom">
-        <constructor name="CodeTypeConstructor" argnames="" />
-        <property name="ReturnType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Statements" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeStatementCollection" />
-        <property name="Parameters" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
-        <property name="PrivateImplementationType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="ImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="ReturnTypeCustomAttributes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PopulateParameters" inherited="System.CodeDom.CodeMemberMethod" />
-        <event name="PopulateStatements" inherited="System.CodeDom.CodeMemberMethod" />
-        <event name="PopulateImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" />
-    </class>
-    <class name="CodeTypeDeclaration" namespace="System.CodeDom">
-        <constructor name="CodeTypeDeclaration" argnames="" />
-        <constructor name="CodeTypeDeclaration(System.String)" argnames="name" />
-        <property name="TypeAttributes" propertytype="System.Reflection.TypeAttributes" />
-        <property name="BaseTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="IsClass" propertytype="System.Boolean" />
-        <property name="IsStruct" propertytype="System.Boolean" />
-        <property name="IsEnum" propertytype="System.Boolean" />
-        <property name="IsInterface" propertytype="System.Boolean" />
-        <property name="Members" propertytype="System.CodeDom.CodeTypeMemberCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PopulateBaseTypes" />
-        <event name="PopulateMembers" />
-    </class>
-    <class name="CodeTypeDeclarationCollection" namespace="System.CodeDom">
-        <constructor name="CodeTypeDeclarationCollection" argnames="" />
-        <constructor name="CodeTypeDeclarationCollection(System.CodeDom.CodeTypeDeclarationCollection)" argnames="value" />
-        <constructor name="CodeTypeDeclarationCollection(System.CodeDom.CodeTypeDeclaration[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeTypeDeclaration" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeTypeDeclaration[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeTypeDeclarationCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeTypeDeclaration[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeTypeDeclaration)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTypeDelegate" namespace="System.CodeDom">
-        <constructor name="CodeTypeDelegate" argnames="" />
-        <constructor name="CodeTypeDelegate(System.String)" argnames="name" />
-        <property name="ReturnType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="Parameters" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
-        <property name="TypeAttributes" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Reflection.TypeAttributes" />
-        <property name="BaseTypes" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
-        <property name="IsClass" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
-        <property name="IsStruct" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
-        <property name="IsEnum" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
-        <property name="IsInterface" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
-        <property name="Members" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.CodeDom.CodeTypeMemberCollection" />
-        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
-        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
-        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="PopulateBaseTypes" inherited="System.CodeDom.CodeTypeDeclaration" />
-        <event name="PopulateMembers" inherited="System.CodeDom.CodeTypeDeclaration" />
-    </class>
-    <class name="CodeTypeMemberCollection" namespace="System.CodeDom">
-        <constructor name="CodeTypeMemberCollection" argnames="" />
-        <constructor name="CodeTypeMemberCollection(System.CodeDom.CodeTypeMemberCollection)" argnames="value" />
-        <constructor name="CodeTypeMemberCollection(System.CodeDom.CodeTypeMember[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeTypeMember" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.CodeTypeMember[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeTypeMemberCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeTypeMember[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeTypeMember)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTypeOfExpression" namespace="System.CodeDom">
-        <constructor name="CodeTypeOfExpression" argnames="" />
-        <constructor name="CodeTypeOfExpression(System.CodeDom.CodeTypeReference)" argnames="type" />
-        <constructor name="CodeTypeOfExpression(System.String)" argnames="type" />
-        <constructor name="CodeTypeOfExpression(System.Type)" argnames="type" />
-        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTypeReference" namespace="System.CodeDom">
-        <constructor name="CodeTypeReference(System.Type)" argnames="type" />
-        <constructor name="CodeTypeReference(System.String)" argnames="typeName" />
-        <constructor name="CodeTypeReference(System.String, System.Int32)" argnames="baseType, rank" />
-        <constructor name="CodeTypeReference(System.CodeDom.CodeTypeReference, System.Int32)" argnames="arrayType, rank" />
-        <property name="ArrayElementType" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="ArrayRank" propertytype="System.Int32" />
-        <property name="BaseType" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTypeReferenceCollection" namespace="System.CodeDom">
-        <constructor name="CodeTypeReferenceCollection" argnames="" />
-        <constructor name="CodeTypeReferenceCollection(System.CodeDom.CodeTypeReferenceCollection)" argnames="value" />
-        <constructor name="CodeTypeReferenceCollection(System.CodeDom.CodeTypeReference[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Int32" />
-        <method name="Add(System.String)" argnames="value" returntype="System.Void" />
-        <method name="Add(System.Type)" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeTypeReference[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.CodeTypeReferenceCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.CodeTypeReference[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.CodeTypeReference)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeTypeReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeTypeReferenceExpression" argnames="" />
-        <constructor name="CodeTypeReferenceExpression(System.CodeDom.CodeTypeReference)" argnames="type" />
-        <constructor name="CodeTypeReferenceExpression(System.String)" argnames="type" />
-        <constructor name="CodeTypeReferenceExpression(System.Type)" argnames="type" />
-        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeVariableDeclarationStatement" namespace="System.CodeDom">
-        <constructor name="CodeVariableDeclarationStatement" argnames="" />
-        <constructor name="CodeVariableDeclarationStatement(System.CodeDom.CodeTypeReference, System.String)" argnames="type, name" />
-        <constructor name="CodeVariableDeclarationStatement(System.String, System.String)" argnames="type, name" />
-        <constructor name="CodeVariableDeclarationStatement(System.Type, System.String)" argnames="type, name" />
-        <constructor name="CodeVariableDeclarationStatement(System.CodeDom.CodeTypeReference, System.String, System.CodeDom.CodeExpression)" argnames="type, name, initExpression" />
-        <constructor name="CodeVariableDeclarationStatement(System.String, System.String, System.CodeDom.CodeExpression)" argnames="type, name, initExpression" />
-        <constructor name="CodeVariableDeclarationStatement(System.Type, System.String, System.CodeDom.CodeExpression)" argnames="type, name, initExpression" />
-        <property name="InitExpression" propertytype="System.CodeDom.CodeExpression" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
-        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeVariableReferenceExpression" namespace="System.CodeDom">
-        <constructor name="CodeVariableReferenceExpression" argnames="" />
-        <constructor name="CodeVariableReferenceExpression(System.String)" argnames="variableName" />
-        <property name="VariableName" propertytype="System.String" />
-        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="CodeBinaryOperatorType" namespace="System.CodeDom">
-        <field name="Add" />
-        <field name="Subtract" />
-        <field name="Multiply" />
-        <field name="Divide" />
-        <field name="Modulus" />
-        <field name="Assign" />
-        <field name="IdentityInequality" />
-        <field name="IdentityEquality" />
-        <field name="ValueEquality" />
-        <field name="BitwiseOr" />
-        <field name="BitwiseAnd" />
-        <field name="BooleanOr" />
-        <field name="BooleanAnd" />
-        <field name="LessThan" />
-        <field name="LessThanOrEqual" />
-        <field name="GreaterThan" />
-        <field name="GreaterThanOrEqual" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="FieldDirection" namespace="System.CodeDom">
-        <field name="In" />
-        <field name="Out" />
-        <field name="Ref" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="MemberAttributes" namespace="System.CodeDom">
-        <field name="Abstract" />
-        <field name="Final" />
-        <field name="Static" />
-        <field name="Override" />
-        <field name="Const" />
-        <field name="New" />
-        <field name="Overloaded" />
-        <field name="Assembly" />
-        <field name="FamilyAndAssembly" />
-        <field name="Family" />
-        <field name="FamilyOrAssembly" />
-        <field name="Private" />
-        <field name="Public" />
-        <field name="AccessMask" />
-        <field name="ScopeMask" />
-        <field name="VTableMask" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="Switch" namespace="System.Diagnostics">
-        <constructor name="Switch(System.String, System.String)" argnames="displayName, description" />
-        <property name="DisplayName" propertytype="System.String" />
-        <property name="Description" propertytype="System.String" />
-        <property name="SwitchSetting" propertytype="System.Int32" />
-        <method name="OnSwitchSettingChanged" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="BooleanSwitch" namespace="System.Diagnostics">
-        <constructor name="BooleanSwitch(System.String, System.String)" argnames="displayName, description" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="DisplayName" inherited="System.Diagnostics.Switch" propertytype="System.String" />
-        <property name="Description" inherited="System.Diagnostics.Switch" propertytype="System.String" />
-        <property name="SwitchSetting" inherited="System.Diagnostics.Switch" propertytype="System.Int32" />
-        <method name="OnSwitchSettingChanged" argnames="" inherited="System.Diagnostics.Switch" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Debug" namespace="System.Diagnostics">
-        <property name="Listeners" propertytype="System.Diagnostics.TraceListenerCollection" />
-        <property name="AutoFlush" propertytype="System.Boolean" />
-        <property name="IndentLevel" propertytype="System.Int32" />
-        <property name="IndentSize" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Assert(System.Boolean)" argnames="condition" returntype="System.Void" />
-        <method name="Assert(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
-        <method name="Assert(System.Boolean, System.String, System.String)" argnames="condition, message, detailMessage" returntype="System.Void" />
-        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.String, System.String)" argnames="message, category" returntype="System.Void" />
-        <method name="Write(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.String)" argnames="message, category" returntype="System.Void" />
-        <method name="WriteLine(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
-        <method name="Indent" argnames="" returntype="System.Void" />
-        <method name="Unindent" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TraceListener" namespace="System.Diagnostics">
-        <constructor name="TraceListener" argnames="" />
-        <constructor name="TraceListener(System.String)" argnames="name" />
-        <property name="Name" propertytype="System.String" />
-        <property name="IndentLevel" propertytype="System.Int32" />
-        <property name="IndentSize" propertytype="System.Int32" />
-        <property name="NeedIndent" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="WriteLine(System.Object, System.String)" argnames="o, category" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.String)" argnames="message, category" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
-        <method name="WriteIndent" argnames="" returntype="System.Void" />
-        <method name="Write(System.Object, System.String)" argnames="o, category" returntype="System.Void" />
-        <method name="Write(System.String, System.String)" argnames="message, category" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="o" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
-        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DefaultTraceListener" namespace="System.Diagnostics">
-        <constructor name="DefaultTraceListener" argnames="" />
-        <property name="AssertUiEnabled" propertytype="System.Boolean" />
-        <property name="LogFileName" propertytype="System.String" />
-        <property name="UiPermission" propertytype="System.Boolean" />
-        <property name="UserInteractive" propertytype="System.Boolean" />
-        <property name="Name" inherited="System.Diagnostics.TraceListener" propertytype="System.String" />
-        <property name="IndentLevel" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
-        <property name="IndentSize" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
-        <property name="NeedIndent" inherited="System.Diagnostics.TraceListener" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
-        <method name="WriteIndent" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
-        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Flush" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Close" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TextWriterTraceListener" namespace="System.Diagnostics">
-        <constructor name="TextWriterTraceListener" argnames="" />
-        <constructor name="TextWriterTraceListener(System.IO.Stream)" argnames="stream" />
-        <constructor name="TextWriterTraceListener(System.IO.Stream, System.String)" argnames="stream, name" />
-        <constructor name="TextWriterTraceListener(System.IO.TextWriter)" argnames="writer" />
-        <constructor name="TextWriterTraceListener(System.IO.TextWriter, System.String)" argnames="writer, name" />
-        <constructor name="TextWriterTraceListener(System.String)" argnames="fileName" />
-        <constructor name="TextWriterTraceListener(System.String, System.String)" argnames="fileName, name" />
-        <property name="Writer" propertytype="System.IO.TextWriter" />
-        <property name="Name" inherited="System.Diagnostics.TraceListener" propertytype="System.String" />
-        <property name="IndentLevel" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
-        <property name="IndentSize" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
-        <property name="NeedIndent" inherited="System.Diagnostics.TraceListener" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
-        <method name="WriteIndent" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Fail(System.String)" argnames="message" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Trace" namespace="System.Diagnostics">
-        <property name="Listeners" propertytype="System.Diagnostics.TraceListenerCollection" />
-        <property name="AutoFlush" propertytype="System.Boolean" />
-        <property name="IndentLevel" propertytype="System.Int32" />
-        <property name="IndentSize" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Assert(System.Boolean)" argnames="condition" returntype="System.Void" />
-        <method name="Assert(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
-        <method name="Assert(System.Boolean, System.String, System.String)" argnames="condition, message, detailMessage" returntype="System.Void" />
-        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.String, System.String)" argnames="message, category" returntype="System.Void" />
-        <method name="Write(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.String)" argnames="message, category" returntype="System.Void" />
-        <method name="WriteLine(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
-        <method name="WriteIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
-        <method name="WriteLineIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
-        <method name="Indent" argnames="" returntype="System.Void" />
-        <method name="Unindent" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TraceListenerCollection" namespace="System.Diagnostics">
-        <property name="Item" propertytype="System.Diagnostics.TraceListener" />
-        <property name="Item" propertytype="System.Diagnostics.TraceListener" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Int32" />
-        <method name="AddRange(System.Diagnostics.TraceListener[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Diagnostics.TraceListenerCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Boolean" />
-        <method name="CopyTo(System.Diagnostics.TraceListener[], System.Int32)" argnames="listeners, index" returntype="System.Void" />
-        <method name="IndexOf(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Diagnostics.TraceListener)" argnames="index, listener" returntype="System.Void" />
-        <method name="Remove(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Void" />
-        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TraceSwitch" namespace="System.Diagnostics">
-        <constructor name="TraceSwitch(System.String, System.String)" argnames="displayName, description" />
-        <property name="Level" propertytype="System.Diagnostics.TraceLevel" />
-        <property name="TraceError" propertytype="System.Boolean" />
-        <property name="TraceWarning" propertytype="System.Boolean" />
-        <property name="TraceInfo" propertytype="System.Boolean" />
-        <property name="TraceVerbose" propertytype="System.Boolean" />
-        <property name="DisplayName" inherited="System.Diagnostics.Switch" propertytype="System.String" />
-        <property name="Description" inherited="System.Diagnostics.Switch" propertytype="System.String" />
-        <property name="SwitchSetting" inherited="System.Diagnostics.Switch" propertytype="System.Int32" />
-        <method name="OnSwitchSettingChanged" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CounterCreationData" namespace="System.Diagnostics">
-        <constructor name="CounterCreationData" argnames="" />
-        <constructor name="CounterCreationData(System.String, System.String, System.Diagnostics.PerformanceCounterType)" argnames="counterName, counterHelp, counterType" />
-        <property name="CounterType" propertytype="System.Diagnostics.PerformanceCounterType" />
-        <property name="CounterName" propertytype="System.String" />
-        <property name="CounterHelp" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CounterCreationDataCollection" namespace="System.Diagnostics">
-        <constructor name="CounterCreationDataCollection" argnames="" />
-        <constructor name="CounterCreationDataCollection(System.Diagnostics.CounterCreationDataCollection)" argnames="value" />
-        <constructor name="CounterCreationDataCollection(System.Diagnostics.CounterCreationData[])" argnames="value" />
-        <property name="Item" propertytype="System.Diagnostics.CounterCreationData" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="Remove(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.Diagnostics.CounterCreationData[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Diagnostics.CounterCreationDataCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.Diagnostics.CounterCreationData[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Diagnostics.CounterCreationData)" argnames="index, value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CounterSampleCalculator" namespace="System.Diagnostics">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ComputeCounterValue(System.Diagnostics.CounterSample)" argnames="newSample" returntype="System.Single" />
-        <method name="ComputeCounterValue(System.Diagnostics.CounterSample, System.Diagnostics.CounterSample)" argnames="oldSample, newSample" returntype="System.Single" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DiagnosticsConfigurationHandler" namespace="System.Diagnostics">
-        <constructor name="DiagnosticsConfigurationHandler" argnames="" />
-        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EntryWrittenEventArgs" namespace="System.Diagnostics">
-        <constructor name="EntryWrittenEventArgs" argnames="" />
-        <constructor name="EntryWrittenEventArgs(System.Diagnostics.EventLogEntry)" argnames="entry" />
-        <property name="Entry" propertytype="System.Diagnostics.EventLogEntry" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventLogEntry" namespace="System.Diagnostics">
-        <property name="MachineName" propertytype="System.String" />
-        <property name="Data" propertytype="System.Byte[]" />
-        <property name="Index" propertytype="System.Int32" />
-        <property name="Category" propertytype="System.String" />
-        <property name="CategoryNumber" propertytype="System.Int16" />
-        <property name="EventID" propertytype="System.Int32" />
-        <property name="EntryType" propertytype="System.Diagnostics.EventLogEntryType" />
-        <property name="Message" propertytype="System.String" />
-        <property name="Source" propertytype="System.String" />
-        <property name="ReplacementStrings" propertytype="System.String[]" />
-        <property name="TimeGenerated" propertytype="System.DateTime" />
-        <property name="TimeWritten" propertytype="System.DateTime" />
-        <property name="UserName" propertytype="System.String" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Equals(System.Diagnostics.EventLogEntry)" argnames="otherEntry" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="EventLogEntryCollection" namespace="System.Diagnostics">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Diagnostics.EventLogEntry" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CopyTo(System.Diagnostics.EventLogEntry[], System.Int32)" argnames="entries, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventLogPermissionAttribute" namespace="System.Diagnostics">
-        <constructor name="EventLogPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="PermissionAccess" propertytype="System.Diagnostics.EventLogPermissionAccess" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventLogPermissionEntry" namespace="System.Diagnostics">
-        <constructor name="EventLogPermissionEntry(System.Diagnostics.EventLogPermissionAccess, System.String)" argnames="permissionAccess, machineName" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="PermissionAccess" propertytype="System.Diagnostics.EventLogPermissionAccess" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventLogPermissionEntryCollection" namespace="System.Diagnostics">
-        <property name="Item" propertytype="System.Diagnostics.EventLogPermissionEntry" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClear" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.Diagnostics.EventLogPermissionEntry[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Diagnostics.EventLogPermissionEntryCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.Diagnostics.EventLogPermissionEntry[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Diagnostics.EventLogPermissionEntry)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstanceData" namespace="System.Diagnostics">
-        <constructor name="InstanceData(System.String, System.Diagnostics.CounterSample)" argnames="instanceName, sample" />
-        <property name="InstanceName" propertytype="System.String" />
-        <property name="Sample" propertytype="System.Diagnostics.CounterSample" />
-        <property name="RawValue" propertytype="System.Int64" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstanceDataCollection" namespace="System.Diagnostics">
-        <constructor name="InstanceDataCollection(System.String)" argnames="counterName" />
-        <property name="CounterName" propertytype="System.String" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="Item" propertytype="System.Diagnostics.InstanceData" />
-        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
-        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
-        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.String)" argnames="instanceName" returntype="System.Boolean" />
-        <method name="CopyTo(System.Diagnostics.InstanceData[], System.Int32)" argnames="instances, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstanceDataCollectionCollection" namespace="System.Diagnostics">
-        <constructor name="InstanceDataCollectionCollection" argnames="" />
-        <property name="Item" propertytype="System.Diagnostics.InstanceDataCollection" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
-        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
-        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
-        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Contains(System.String)" argnames="counterName" returntype="System.Boolean" />
-        <method name="CopyTo(System.Diagnostics.InstanceDataCollection[], System.Int32)" argnames="counters, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MonitoringDescriptionAttribute" namespace="System.Diagnostics">
-        <constructor name="MonitoringDescriptionAttribute(System.String)" argnames="description" />
-        <property name="Description" propertytype="System.String" />
-        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PerformanceCounterPermissionAttribute" namespace="System.Diagnostics">
-        <constructor name="PerformanceCounterPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="CategoryName" propertytype="System.String" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="PermissionAccess" propertytype="System.Diagnostics.PerformanceCounterPermissionAccess" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PerformanceCounterPermissionEntry" namespace="System.Diagnostics">
-        <constructor name="PerformanceCounterPermissionEntry(System.Diagnostics.PerformanceCounterPermissionAccess, System.String, System.String)" argnames="permissionAccess, machineName, categoryName" />
-        <property name="CategoryName" propertytype="System.String" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="PermissionAccess" propertytype="System.Diagnostics.PerformanceCounterPermissionAccess" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PerformanceCounterPermissionEntryCollection" namespace="System.Diagnostics">
-        <property name="Item" propertytype="System.Diagnostics.PerformanceCounterPermissionEntry" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClear" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.Diagnostics.PerformanceCounterPermissionEntry[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Diagnostics.PerformanceCounterPermissionEntryCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.Diagnostics.PerformanceCounterPermissionEntry[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProcessModule" namespace="System.Diagnostics">
-        <property name="ModuleName" propertytype="System.String" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="BaseAddress" propertytype="System.IntPtr" />
-        <property name="ModuleMemorySize" propertytype="System.Int32" />
-        <property name="EntryPointAddress" propertytype="System.IntPtr" />
-        <property name="FileVersionInfo" propertytype="System.Diagnostics.FileVersionInfo" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ProcessModuleCollection" namespace="System.Diagnostics">
-        <constructor name="ProcessModuleCollection" argnames="" />
-        <constructor name="ProcessModuleCollection(System.Diagnostics.ProcessModule[])" argnames="processModules" />
-        <property name="Item" propertytype="System.Diagnostics.ProcessModule" />
-        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="IndexOf(System.Diagnostics.ProcessModule)" argnames="module" returntype="System.Int32" />
-        <method name="Contains(System.Diagnostics.ProcessModule)" argnames="module" returntype="System.Boolean" />
-        <method name="CopyTo(System.Diagnostics.ProcessModule[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProcessThread" namespace="System.Diagnostics">
-        <property name="BasePriority" propertytype="System.Int32" />
-        <property name="CurrentPriority" propertytype="System.Int32" />
-        <property name="Id" propertytype="System.Int32" />
-        <property name="IdealProcessor" propertytype="System.Int32" />
-        <property name="PriorityBoostEnabled" propertytype="System.Boolean" />
-        <property name="PriorityLevel" propertytype="System.Diagnostics.ThreadPriorityLevel" />
-        <property name="PrivilegedProcessorTime" propertytype="System.TimeSpan" />
-        <property name="StartAddress" propertytype="System.IntPtr" />
-        <property name="StartTime" propertytype="System.DateTime" />
-        <property name="ThreadState" propertytype="System.Diagnostics.ThreadState" />
-        <property name="TotalProcessorTime" propertytype="System.TimeSpan" />
-        <property name="UserProcessorTime" propertytype="System.TimeSpan" />
-        <property name="WaitReason" propertytype="System.Diagnostics.ThreadWaitReason" />
-        <property name="ProcessorAffinity" propertytype="System.IntPtr" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="ResetIdealProcessor" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ProcessThreadCollection" namespace="System.Diagnostics">
-        <constructor name="ProcessThreadCollection" argnames="" />
-        <constructor name="ProcessThreadCollection(System.Diagnostics.ProcessThread[])" argnames="processThreads" />
-        <property name="Item" propertytype="System.Diagnostics.ProcessThread" />
-        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Diagnostics.ProcessThread)" argnames="index, thread" returntype="System.Void" />
-        <method name="IndexOf(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Int32" />
-        <method name="Contains(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Boolean" />
-        <method name="Remove(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Void" />
-        <method name="CopyTo(System.Diagnostics.ProcessThread[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventLogPermission" namespace="System.Diagnostics">
-        <constructor name="EventLogPermission" argnames="" />
-        <constructor name="EventLogPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="EventLogPermission(System.Diagnostics.EventLogPermissionAccess, System.String)" argnames="permissionAccess, machineName" />
-        <constructor name="EventLogPermission(System.Diagnostics.EventLogPermissionEntry[])" argnames="permissionAccessEntries" />
-        <property name="PermissionEntries" propertytype="System.Diagnostics.EventLogPermissionEntryCollection" />
-        <property name="PermissionAccessType" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.Type" />
-        <property name="TagNames" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.String[]" />
-        <method name="IsUnrestricted" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="ToXml" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="AddPermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="GetPermissionEntries" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.Permissions.ResourcePermissionBaseEntry[]" />
-        <method name="RemovePermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PerformanceCounterPermission" namespace="System.Diagnostics">
-        <constructor name="PerformanceCounterPermission" argnames="" />
-        <constructor name="PerformanceCounterPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="PerformanceCounterPermission(System.Diagnostics.PerformanceCounterPermissionAccess, System.String, System.String)" argnames="permissionAccess, machineName, categoryName" />
-        <constructor name="PerformanceCounterPermission(System.Diagnostics.PerformanceCounterPermissionEntry[])" argnames="permissionAccessEntries" />
-        <property name="PermissionEntries" propertytype="System.Diagnostics.PerformanceCounterPermissionEntryCollection" />
-        <property name="PermissionAccessType" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.Type" />
-        <property name="TagNames" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.String[]" />
-        <method name="IsUnrestricted" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="ToXml" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="AddPermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="GetPermissionEntries" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.Permissions.ResourcePermissionBaseEntry[]" />
-        <method name="RemovePermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EventLog" namespace="System.Diagnostics">
-        <constructor name="EventLog" argnames="" />
-        <constructor name="EventLog(System.String)" argnames="logName" />
-        <constructor name="EventLog(System.String, System.String)" argnames="logName, machineName" />
-        <constructor name="EventLog(System.String, System.String, System.String)" argnames="logName, machineName, source" />
-        <property name="Entries" propertytype="System.Diagnostics.EventLogEntryCollection" />
-        <property name="EntryCount" propertytype="System.Int32" />
-        <property name="IsOpen" propertytype="System.Boolean" />
-        <property name="IsOpenForRead" propertytype="System.Boolean" />
-        <property name="IsOpenForWrite" propertytype="System.Boolean" />
-        <property name="LogDisplayName" propertytype="System.String" />
-        <property name="Log" propertytype="System.String" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="EnableRaisingEvents" propertytype="System.Boolean" />
-        <property name="OldestEntryNumber" propertytype="System.Int32" />
-        <property name="ReadHandle" propertytype="System.IntPtr" />
-        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
-        <property name="Source" propertytype="System.String" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateEventSource(System.String, System.String)" argnames="source, logName" returntype="System.Void" />
-        <method name="CreateEventSource(System.String, System.String, System.String)" argnames="source, logName, machineName" returntype="System.Void" />
-        <method name="Delete(System.String)" argnames="logName" returntype="System.Void" />
-        <method name="Delete(System.String, System.String)" argnames="logName, machineName" returntype="System.Void" />
-        <method name="DeleteEventSource(System.String)" argnames="source" returntype="System.Void" />
-        <method name="DeleteEventSource(System.String, System.String)" argnames="source, machineName" returntype="System.Void" />
-        <method name="Exists(System.String)" argnames="logName" returntype="System.Boolean" />
-        <method name="Exists(System.String, System.String)" argnames="logName, machineName" returntype="System.Boolean" />
-        <method name="GetEventLogs" argnames="" returntype="System.Diagnostics.EventLog[]" />
-        <method name="GetEventLogs(System.String)" argnames="machineName" returntype="System.Diagnostics.EventLog[]" />
-        <method name="SourceExists(System.String)" argnames="source" returntype="System.Boolean" />
-        <method name="SourceExists(System.String, System.String)" argnames="source, machineName" returntype="System.Boolean" />
-        <method name="LogNameFromSourceName(System.String, System.String)" argnames="source, machineName" returntype="System.String" />
-        <method name="WriteEntry(System.String)" argnames="message" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.String)" argnames="source, message" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType)" argnames="message, type" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType)" argnames="source, message, type" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType, System.Int32)" argnames="message, type, eventID" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType, System.Int32)" argnames="source, message, type, eventID" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16)" argnames="message, type, eventID, category" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16)" argnames="source, message, type, eventID, category" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16, System.Byte[])" argnames="message, type, eventID, category, rawData" returntype="System.Void" />
-        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16, System.Byte[])" argnames="source, message, type, eventID, category, rawData" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="EntryWritten" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="EventLogTraceListener" namespace="System.Diagnostics">
-        <constructor name="EventLogTraceListener" argnames="" />
-        <constructor name="EventLogTraceListener(System.Diagnostics.EventLog)" argnames="eventLog" />
-        <constructor name="EventLogTraceListener(System.String)" argnames="source" />
-        <property name="EventLog" propertytype="System.Diagnostics.EventLog" />
-        <property name="Name" propertytype="System.String" />
-        <property name="IndentLevel" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
-        <property name="IndentSize" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
-        <property name="NeedIndent" inherited="System.Diagnostics.TraceListener" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
-        <method name="WriteIndent" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
-        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Fail(System.String)" argnames="message" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Flush" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FileVersionInfo" namespace="System.Diagnostics">
-        <property name="Comments" propertytype="System.String" />
-        <property name="CompanyName" propertytype="System.String" />
-        <property name="FileBuildPart" propertytype="System.Int32" />
-        <property name="FileDescription" propertytype="System.String" />
-        <property name="FileMajorPart" propertytype="System.Int32" />
-        <property name="FileMinorPart" propertytype="System.Int32" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="FilePrivatePart" propertytype="System.Int32" />
-        <property name="FileVersion" propertytype="System.String" />
-        <property name="InternalName" propertytype="System.String" />
-        <property name="IsDebug" propertytype="System.Boolean" />
-        <property name="IsPatched" propertytype="System.Boolean" />
-        <property name="IsPrivateBuild" propertytype="System.Boolean" />
-        <property name="IsPreRelease" propertytype="System.Boolean" />
-        <property name="IsSpecialBuild" propertytype="System.Boolean" />
-        <property name="Language" propertytype="System.String" />
-        <property name="LegalCopyright" propertytype="System.String" />
-        <property name="LegalTrademarks" propertytype="System.String" />
-        <property name="OriginalFilename" propertytype="System.String" />
-        <property name="PrivateBuild" propertytype="System.String" />
-        <property name="ProductBuildPart" propertytype="System.Int32" />
-        <property name="ProductMajorPart" propertytype="System.Int32" />
-        <property name="ProductMinorPart" propertytype="System.Int32" />
-        <property name="ProductName" propertytype="System.String" />
-        <property name="ProductPrivatePart" propertytype="System.Int32" />
-        <property name="ProductVersion" propertytype="System.String" />
-        <property name="SpecialBuild" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetVersionInfo(System.String)" argnames="fileName" returntype="System.Diagnostics.FileVersionInfo" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PerformanceCounter" namespace="System.Diagnostics">
-        <constructor name="PerformanceCounter" argnames="" />
-        <constructor name="PerformanceCounter(System.String, System.String, System.String, System.String)" argnames="categoryName, counterName, instanceName, machineName" />
-        <constructor name="PerformanceCounter(System.String, System.String, System.String)" argnames="categoryName, counterName, instanceName" />
-        <constructor name="PerformanceCounter(System.String, System.String, System.String, System.Boolean)" argnames="categoryName, counterName, instanceName, readOnly" />
-        <constructor name="PerformanceCounter(System.String, System.String)" argnames="categoryName, counterName" />
-        <constructor name="PerformanceCounter(System.String, System.String, System.Boolean)" argnames="categoryName, counterName, readOnly" />
-        <field name="DefaultFileMappingSize" />
-        <property name="CategoryName" propertytype="System.String" />
-        <property name="CounterHelp" propertytype="System.String" />
-        <property name="CounterName" propertytype="System.String" />
-        <property name="CounterType" propertytype="System.Diagnostics.PerformanceCounterType" />
-        <property name="InstanceName" propertytype="System.String" />
-        <property name="ReadOnly" propertytype="System.Boolean" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="RawValue" propertytype="System.Int64" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CloseSharedResources" argnames="" returntype="System.Void" />
-        <method name="Decrement" argnames="" returntype="System.Int64" />
-        <method name="IncrementBy(System.Int64)" argnames="value" returntype="System.Int64" />
-        <method name="Increment" argnames="" returntype="System.Int64" />
-        <method name="NextSample" argnames="" returntype="System.Diagnostics.CounterSample" />
-        <method name="NextValue" argnames="" returntype="System.Single" />
-        <method name="RemoveInstance" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="PerformanceCounterCategory" namespace="System.Diagnostics">
-        <constructor name="PerformanceCounterCategory" argnames="" />
-        <constructor name="PerformanceCounterCategory(System.String)" argnames="categoryName" />
-        <constructor name="PerformanceCounterCategory(System.String, System.String)" argnames="categoryName, machineName" />
-        <property name="CategoryName" propertytype="System.String" />
-        <property name="CategoryHelp" propertytype="System.String" />
-        <property name="MachineName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CounterExists(System.String)" argnames="counterName" returntype="System.Boolean" />
-        <method name="CounterExists(System.String, System.String)" argnames="counterName, categoryName" returntype="System.Boolean" />
-        <method name="CounterExists(System.String, System.String, System.String)" argnames="counterName, categoryName, machineName" returntype="System.Boolean" />
-        <method name="Create(System.String, System.String, System.Diagnostics.CounterCreationDataCollection)" argnames="categoryName, categoryHelp, counterData" returntype="System.Diagnostics.PerformanceCounterCategory" />
-        <method name="Create(System.String, System.String, System.String, System.String)" argnames="categoryName, categoryHelp, counterName, counterHelp" returntype="System.Diagnostics.PerformanceCounterCategory" />
-        <method name="Delete(System.String)" argnames="categoryName" returntype="System.Void" />
-        <method name="Exists(System.String)" argnames="categoryName" returntype="System.Boolean" />
-        <method name="Exists(System.String, System.String)" argnames="categoryName, machineName" returntype="System.Boolean" />
-        <method name="GetCounters" argnames="" returntype="System.Diagnostics.PerformanceCounter[]" />
-        <method name="GetCounters(System.String)" argnames="instanceName" returntype="System.Diagnostics.PerformanceCounter[]" />
-        <method name="GetCategories" argnames="" returntype="System.Diagnostics.PerformanceCounterCategory[]" />
-        <method name="GetCategories(System.String)" argnames="machineName" returntype="System.Diagnostics.PerformanceCounterCategory[]" />
-        <method name="GetInstanceNames" argnames="" returntype="System.String[]" />
-        <method name="InstanceExists(System.String)" argnames="instanceName" returntype="System.Boolean" />
-        <method name="InstanceExists(System.String, System.String)" argnames="instanceName, categoryName" returntype="System.Boolean" />
-        <method name="InstanceExists(System.String, System.String, System.String)" argnames="instanceName, categoryName, machineName" returntype="System.Boolean" />
-        <method name="ReadCategory" argnames="" returntype="System.Diagnostics.InstanceDataCollectionCollection" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PerformanceCounterManager" namespace="System.Diagnostics">
-        <constructor name="PerformanceCounterManager" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Process" namespace="System.Diagnostics">
-        <constructor name="Process" argnames="" />
-        <property name="Associated" propertytype="System.Boolean" />
-        <property name="BasePriority" propertytype="System.Int32" />
-        <property name="ExitCode" propertytype="System.Int32" />
-        <property name="HasExited" propertytype="System.Boolean" />
-        <property name="ExitTime" propertytype="System.DateTime" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="HandleCount" propertytype="System.Int32" />
-        <property name="Id" propertytype="System.Int32" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="MainWindowHandle" propertytype="System.IntPtr" />
-        <property name="MainWindowTitle" propertytype="System.String" />
-        <property name="MainModule" propertytype="System.Diagnostics.ProcessModule" />
-        <property name="MaxWorkingSet" propertytype="System.IntPtr" />
-        <property name="MinWorkingSet" propertytype="System.IntPtr" />
-        <property name="Modules" propertytype="System.Diagnostics.ProcessModuleCollection" />
-        <property name="NonpagedSystemMemorySize" propertytype="System.Int32" />
-        <property name="PagedMemorySize" propertytype="System.Int32" />
-        <property name="PagedSystemMemorySize" propertytype="System.Int32" />
-        <property name="PeakPagedMemorySize" propertytype="System.Int32" />
-        <property name="PeakWorkingSet" propertytype="System.Int32" />
-        <property name="PeakVirtualMemorySize" propertytype="System.Int32" />
-        <property name="OperatingSystem" propertytype="System.OperatingSystem" />
-        <property name="PriorityBoostEnabled" propertytype="System.Boolean" />
-        <property name="PriorityClass" propertytype="System.Diagnostics.ProcessPriorityClass" />
-        <property name="PrivateMemorySize" propertytype="System.Int32" />
-        <property name="PrivilegedProcessorTime" propertytype="System.TimeSpan" />
-        <property name="ProcessName" propertytype="System.String" />
-        <property name="ProcessorAffinity" propertytype="System.IntPtr" />
-        <property name="Responding" propertytype="System.Boolean" />
-        <property name="StartInfo" propertytype="System.Diagnostics.ProcessStartInfo" />
-        <property name="StartTime" propertytype="System.DateTime" />
-        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
-        <property name="Threads" propertytype="System.Diagnostics.ProcessThreadCollection" />
-        <property name="TotalProcessorTime" propertytype="System.TimeSpan" />
-        <property name="UserProcessorTime" propertytype="System.TimeSpan" />
-        <property name="VirtualMemorySize" propertytype="System.Int32" />
-        <property name="EnableRaisingEvents" propertytype="System.Boolean" />
-        <property name="StandardInput" propertytype="System.IO.StreamWriter" />
-        <property name="StandardOutput" propertytype="System.IO.StreamReader" />
-        <property name="StandardError" propertytype="System.IO.StreamReader" />
-        <property name="WorkingSet" propertytype="System.Int32" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CloseMainWindow" argnames="" returntype="System.Boolean" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="EnterDebugMode" argnames="" returntype="System.Void" />
-        <method name="LeaveDebugMode" argnames="" returntype="System.Void" />
-        <method name="GetProcessById(System.Int32, System.String)" argnames="processId, machineName" returntype="System.Diagnostics.Process" />
-        <method name="GetProcessById(System.Int32)" argnames="processId" returntype="System.Diagnostics.Process" />
-        <method name="GetProcessesByName(System.String)" argnames="processName" returntype="System.Diagnostics.Process[]" />
-        <method name="GetProcessesByName(System.String, System.String)" argnames="processName, machineName" returntype="System.Diagnostics.Process[]" />
-        <method name="GetProcesses" argnames="" returntype="System.Diagnostics.Process[]" />
-        <method name="GetProcesses(System.String)" argnames="machineName" returntype="System.Diagnostics.Process[]" />
-        <method name="GetCurrentProcess" argnames="" returntype="System.Diagnostics.Process" />
-        <method name="OnExited" argnames="" returntype="System.Void" />
-        <method name="Refresh" argnames="" returntype="System.Void" />
-        <method name="Start" argnames="" returntype="System.Boolean" />
-        <method name="Start(System.String)" argnames="fileName" returntype="System.Diagnostics.Process" />
-        <method name="Start(System.String, System.String)" argnames="fileName, arguments" returntype="System.Diagnostics.Process" />
-        <method name="Start(System.Diagnostics.ProcessStartInfo)" argnames="startInfo" returntype="System.Diagnostics.Process" />
-        <method name="Kill" argnames="" returntype="System.Void" />
-        <method name="WaitForExit(System.Int32)" argnames="milliseconds" returntype="System.Boolean" />
-        <method name="WaitForExit" argnames="" returntype="System.Void" />
-        <method name="WaitForInputIdle(System.Int32)" argnames="milliseconds" returntype="System.Boolean" />
-        <method name="WaitForInputIdle" argnames="" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Exited" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="ProcessStartInfo" namespace="System.Diagnostics">
-        <constructor name="ProcessStartInfo" argnames="" />
-        <constructor name="ProcessStartInfo(System.String)" argnames="fileName" />
-        <constructor name="ProcessStartInfo(System.String, System.String)" argnames="fileName, arguments" />
-        <property name="Verb" propertytype="System.String" />
-        <property name="Arguments" propertytype="System.String" />
-        <property name="CreateNoWindow" propertytype="System.Boolean" />
-        <property name="EnvironmentVariables" propertytype="System.Collections.Specialized.StringDictionary" />
-        <property name="RedirectStandardInput" propertytype="System.Boolean" />
-        <property name="RedirectStandardOutput" propertytype="System.Boolean" />
-        <property name="RedirectStandardError" propertytype="System.Boolean" />
-        <property name="UseShellExecute" propertytype="System.Boolean" />
-        <property name="Verbs" propertytype="System.String[]" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="WorkingDirectory" propertytype="System.String" />
-        <property name="ErrorDialog" propertytype="System.Boolean" />
-        <property name="ErrorDialogParentHandle" propertytype="System.IntPtr" />
-        <property name="WindowStyle" propertytype="System.Diagnostics.ProcessWindowStyle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="ICollectData" namespace="System.Diagnostics">
-        <method name="CloseData" argnames="" returntype="System.Void" />
-        <method name="CollectData(System.Int32, System.IntPtr, System.IntPtr, System.Int32, System.IntPtr&amp;)" argnames="id, valueName, data, totalBytes, res" returntype="System.Void" />
-    </interface>
-    <struct name="CounterSample" namespace="System.Diagnostics">
-        <constructor name="CounterSample(System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Diagnostics.PerformanceCounterType)" argnames="rawValue, baseValue, counterFrequency, systemFrequency, timeStamp, timeStamp100nSec, counterType" />
-        <constructor name="CounterSample(System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Diagnostics.PerformanceCounterType, System.Int64)" argnames="rawValue, baseValue, counterFrequency, systemFrequency, timeStamp, timeStamp100nSec, counterType, counterTimeStamp" />
-        <field name="Empty" />
-        <property name="RawValue" propertytype="System.Int64" />
-        <property name="UnsignedRawValue" propertytype="System.UInt64" />
-        <property name="BaseValue" propertytype="System.Int64" />
-        <property name="UnsignedBaseValue" propertytype="System.UInt64" />
-        <property name="SystemFrequency" propertytype="System.Int64" />
-        <property name="CounterFrequency" propertytype="System.Int64" />
-        <property name="CounterTimeStamp" propertytype="System.Int64" />
-        <property name="TimeStamp" propertytype="System.Int64" />
-        <property name="TimeStamp100nSec" propertytype="System.Int64" />
-        <property name="CounterType" propertytype="System.Diagnostics.PerformanceCounterType" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="Calculate(System.Diagnostics.CounterSample)" argnames="counterSample" returntype="System.Single" />
-        <method name="Calculate(System.Diagnostics.CounterSample, System.Diagnostics.CounterSample)" argnames="counterSample, nextCounterSample" returntype="System.Single" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <delegate name="EntryWrittenEventHandler" namespace="System.Diagnostics">
-        <constructor name="EntryWrittenEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Diagnostics.EntryWrittenEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Diagnostics.EntryWrittenEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="TraceLevel" namespace="System.Diagnostics">
-        <field name="Off" />
-        <field name="Error" />
-        <field name="Warning" />
-        <field name="Info" />
-        <field name="Verbose" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EventLogEntryType" namespace="System.Diagnostics">
-        <field name="Error" />
-        <field name="Warning" />
-        <field name="Information" />
-        <field name="SuccessAudit" />
-        <field name="FailureAudit" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="EventLogPermissionAccess" namespace="System.Diagnostics">
-        <field name="None" />
-        <field name="Browse" />
-        <field name="Instrument" />
-        <field name="Audit" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PerformanceCounterPermissionAccess" namespace="System.Diagnostics">
-        <field name="None" />
-        <field name="Browse" />
-        <field name="Instrument" />
-        <field name="Administer" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PerformanceCounterType" namespace="System.Diagnostics">
-        <field name="NumberOfItems32" />
-        <field name="NumberOfItems64" />
-        <field name="NumberOfItemsHEX32" />
-        <field name="NumberOfItemsHEX64" />
-        <field name="RateOfCountsPerSecond32" />
-        <field name="RateOfCountsPerSecond64" />
-        <field name="CountPerTimeInterval32" />
-        <field name="CountPerTimeInterval64" />
-        <field name="RawFraction" />
-        <field name="RawBase" />
-        <field name="AverageTimer32" />
-        <field name="AverageBase" />
-        <field name="AverageCount64" />
-        <field name="SampleFraction" />
-        <field name="SampleCounter" />
-        <field name="SampleBase" />
-        <field name="CounterTimer" />
-        <field name="CounterTimerInverse" />
-        <field name="Timer100Ns" />
-        <field name="Timer100NsInverse" />
-        <field name="ElapsedTime" />
-        <field name="CounterMultiTimer" />
-        <field name="CounterMultiTimerInverse" />
-        <field name="CounterMultiTimer100Ns" />
-        <field name="CounterMultiTimer100NsInverse" />
-        <field name="CounterMultiBase" />
-        <field name="CounterDelta32" />
-        <field name="CounterDelta64" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ProcessPriorityClass" namespace="System.Diagnostics">
-        <field name="Normal" />
-        <field name="Idle" />
-        <field name="High" />
-        <field name="RealTime" />
-        <field name="BelowNormal" />
-        <field name="AboveNormal" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ProcessWindowStyle" namespace="System.Diagnostics">
-        <field name="Normal" />
-        <field name="Hidden" />
-        <field name="Minimized" />
-        <field name="Maximized" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ThreadPriorityLevel" namespace="System.Diagnostics">
-        <field name="Idle" />
-        <field name="Lowest" />
-        <field name="BelowNormal" />
-        <field name="Normal" />
-        <field name="AboveNormal" />
-        <field name="Highest" />
-        <field name="TimeCritical" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ThreadState" namespace="System.Diagnostics">
-        <field name="Initialized" />
-        <field name="Ready" />
-        <field name="Running" />
-        <field name="Standby" />
-        <field name="Terminated" />
-        <field name="Wait" />
-        <field name="Transition" />
-        <field name="Unknown" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ThreadWaitReason" namespace="System.Diagnostics">
-        <field name="Executive" />
-        <field name="FreePage" />
-        <field name="PageIn" />
-        <field name="SystemAllocation" />
-        <field name="ExecutionDelay" />
-        <field name="Suspended" />
-        <field name="UserRequest" />
-        <field name="EventPairHigh" />
-        <field name="EventPairLow" />
-        <field name="LpcReceive" />
-        <field name="LpcReply" />
-        <field name="VirtualMemory" />
-        <field name="PageOut" />
-        <field name="Unknown" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="ThreadExceptionEventArgs" namespace="System.Threading">
-        <constructor name="ThreadExceptionEventArgs(System.Exception)" argnames="t" />
-        <property name="Exception" propertytype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="ThreadExceptionEventHandler" namespace="System.Threading">
-        <constructor name="ThreadExceptionEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Threading.ThreadExceptionEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Threading.ThreadExceptionEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <class name="CodeGenerator" namespace="System.CodeDom.Compiler">
-        <constructor name="CodeGenerator" argnames="" />
-        <property name="CurrentTypeName" propertytype="System.String" />
-        <property name="CurrentMember" propertytype="System.CodeDom.CodeTypeMember" />
-        <property name="CurrentMemberName" propertytype="System.String" />
-        <property name="IsCurrentInterface" propertytype="System.Boolean" />
-        <property name="IsCurrentClass" propertytype="System.Boolean" />
-        <property name="IsCurrentStruct" propertytype="System.Boolean" />
-        <property name="IsCurrentEnum" propertytype="System.Boolean" />
-        <property name="IsCurrentDelegate" propertytype="System.Boolean" />
-        <property name="Indent" propertytype="System.Int32" />
-        <property name="NullToken" propertytype="System.String" />
-        <property name="Output" propertytype="System.IO.TextWriter" />
-        <property name="Options" propertytype="System.CodeDom.Compiler.CodeGeneratorOptions" />
-        <method name="QuoteSnippetString(System.String)" argnames="value" returntype="System.String" />
-        <method name="GetTypeOutput(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.String" />
-        <method name="CreateValidIdentifier(System.String)" argnames="value" returntype="System.String" />
-        <method name="CreateEscapedIdentifier(System.String)" argnames="value" returntype="System.String" />
-        <method name="ValidateIdentifier(System.String)" argnames="value" returntype="System.Void" />
-        <method name="IsValidIdentifier(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="Supports(System.CodeDom.Compiler.GeneratorSupport)" argnames="support" returntype="System.Boolean" />
-        <method name="GenerateAttributeDeclarationsEnd(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" returntype="System.Void" />
-        <method name="GenerateAttributeDeclarationsStart(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" returntype="System.Void" />
-        <method name="GenerateNamespaceImport(System.CodeDom.CodeNamespaceImport)" argnames="e" returntype="System.Void" />
-        <method name="GenerateNamespaceEnd(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
-        <method name="GenerateNamespaceStart(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
-        <method name="GenerateCompileUnitEnd(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
-        <method name="GenerateCompileUnitStart(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
-        <method name="GenerateTypeEnd(System.CodeDom.CodeTypeDeclaration)" argnames="e" returntype="System.Void" />
-        <method name="GenerateTypeStart(System.CodeDom.CodeTypeDeclaration)" argnames="e" returntype="System.Void" />
-        <method name="GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor)" argnames="e" returntype="System.Void" />
-        <method name="GenerateConstructor(System.CodeDom.CodeConstructor, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
-        <method name="GenerateProperty(System.CodeDom.CodeMemberProperty, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
-        <method name="GenerateMethod(System.CodeDom.CodeMemberMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
-        <method name="GenerateEntryPointMethod(System.CodeDom.CodeEntryPointMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
-        <method name="GenerateSnippetMember(System.CodeDom.CodeSnippetTypeMember)" argnames="e" returntype="System.Void" />
-        <method name="GenerateField(System.CodeDom.CodeMemberField)" argnames="e" returntype="System.Void" />
-        <method name="GenerateEvent(System.CodeDom.CodeMemberEvent, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
-        <method name="GenerateLinePragmaEnd(System.CodeDom.CodeLinePragma)" argnames="e" returntype="System.Void" />
-        <method name="GenerateLinePragmaStart(System.CodeDom.CodeLinePragma)" argnames="e" returntype="System.Void" />
-        <method name="GenerateVariableDeclarationStatement(System.CodeDom.CodeVariableDeclarationStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateSnippetStatement(System.CodeDom.CodeSnippetStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateLabeledStatement(System.CodeDom.CodeLabeledStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateGotoStatement(System.CodeDom.CodeGotoStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateRemoveEventStatement(System.CodeDom.CodeRemoveEventStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateAttachEventStatement(System.CodeDom.CodeAttachEventStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateAssignStatement(System.CodeDom.CodeAssignStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateTryCatchFinallyStatement(System.CodeDom.CodeTryCatchFinallyStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateConditionStatement(System.CodeDom.CodeConditionStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateMethodReturnStatement(System.CodeDom.CodeMethodReturnStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateComment(System.CodeDom.CodeComment)" argnames="e" returntype="System.Void" />
-        <method name="GenerateCommentStatements(System.CodeDom.CodeCommentStatementCollection)" argnames="e" returntype="System.Void" />
-        <method name="GenerateCommentStatement(System.CodeDom.CodeCommentStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateThrowExceptionStatement(System.CodeDom.CodeThrowExceptionStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateIterationStatement(System.CodeDom.CodeIterationStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateExpressionStatement(System.CodeDom.CodeExpressionStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateTypeOfExpression(System.CodeDom.CodeTypeOfExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateTypeReferenceExpression(System.CodeDom.CodeTypeReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateThisReferenceExpression(System.CodeDom.CodeThisReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GeneratePropertySetValueReferenceExpression(System.CodeDom.CodePropertySetValueReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GeneratePropertyReferenceExpression(System.CodeDom.CodePropertyReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateDecimalValue(System.Decimal)" argnames="d" returntype="System.Void" />
-        <method name="GenerateDoubleValue(System.Double)" argnames="d" returntype="System.Void" />
-        <method name="GenerateSingleFloatValue(System.Single)" argnames="s" returntype="System.Void" />
-        <method name="GeneratePrimitiveExpression(System.CodeDom.CodePrimitiveExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateDirectionExpression(System.CodeDom.CodeDirectionExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateParameterDeclarationExpression(System.CodeDom.CodeParameterDeclarationExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateObjectCreateExpression(System.CodeDom.CodeObjectCreateExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateDelegateInvokeExpression(System.CodeDom.CodeDelegateInvokeExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateEventReferenceExpression(System.CodeDom.CodeEventReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateMethodReferenceExpression(System.CodeDom.CodeMethodReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateMethodInvokeExpression(System.CodeDom.CodeMethodInvokeExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateSnippetExpression(System.CodeDom.CodeSnippetExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateArrayIndexerExpression(System.CodeDom.CodeArrayIndexerExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateIndexerExpression(System.CodeDom.CodeIndexerExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateVariableReferenceExpression(System.CodeDom.CodeVariableReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateArgumentReferenceExpression(System.CodeDom.CodeArgumentReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateFieldReferenceExpression(System.CodeDom.CodeFieldReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateDelegateCreateExpression(System.CodeDom.CodeDelegateCreateExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateCastExpression(System.CodeDom.CodeCastExpression)" argnames="e" returntype="System.Void" />
-        <method name="ContinueOnNewLine(System.String)" argnames="st" returntype="System.Void" />
-        <method name="GenerateBinaryOperatorExpression(System.CodeDom.CodeBinaryOperatorExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateBaseReferenceExpression(System.CodeDom.CodeBaseReferenceExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateArrayCreateExpression(System.CodeDom.CodeArrayCreateExpression)" argnames="e" returntype="System.Void" />
-        <method name="OutputParameters(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="parameters" returntype="System.Void" />
-        <method name="OutputOperator(System.CodeDom.CodeBinaryOperatorType)" argnames="op" returntype="System.Void" />
-        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection, System.Boolean)" argnames="expressions, newlineBetweenItems" returntype="System.Void" />
-        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection)" argnames="expressions" returntype="System.Void" />
-        <method name="OutputIdentifier(System.String)" argnames="ident" returntype="System.Void" />
-        <method name="OutputTypeNamePair(System.CodeDom.CodeTypeReference, System.String)" argnames="typeRef, name" returntype="System.Void" />
-        <method name="OutputTypeAttributes(System.Reflection.TypeAttributes, System.Boolean, System.Boolean)" argnames="attributes, isStruct, isEnum" returntype="System.Void" />
-        <method name="OutputType(System.CodeDom.CodeTypeReference)" argnames="typeRef" returntype="System.Void" />
-        <method name="OutputMemberScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" returntype="System.Void" />
-        <method name="OutputMemberAccessModifier(System.CodeDom.MemberAttributes)" argnames="attributes" returntype="System.Void" />
-        <method name="OutputFieldScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" returntype="System.Void" />
-        <method name="OutputDirection(System.CodeDom.FieldDirection)" argnames="dir" returntype="System.Void" />
-        <method name="OutputAttributeArgument(System.CodeDom.CodeAttributeArgument)" argnames="arg" returntype="System.Void" />
-        <method name="OutputAttributeDeclarations(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" returntype="System.Void" />
-        <method name="GenerateNamespace(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
-        <method name="GenerateCompileUnit(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
-        <method name="GenerateSnippetCompileUnit(System.CodeDom.CodeSnippetCompileUnit)" argnames="e" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GenerateNamespaces(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
-        <method name="GenerateTypes(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
-        <method name="GenerateExpression(System.CodeDom.CodeExpression)" argnames="e" returntype="System.Void" />
-        <method name="GenerateNamespaceImports(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
-        <method name="GenerateStatement(System.CodeDom.CodeStatement)" argnames="e" returntype="System.Void" />
-        <method name="GenerateStatements(System.CodeDom.CodeStatementCollection)" argnames="stms" returntype="System.Void" />
-        <method name="IsValidLanguageIndependentIdentifier(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeCompiler" namespace="System.CodeDom.Compiler">
-        <constructor name="CodeCompiler" argnames="" />
-        <property name="FileExtension" propertytype="System.String" />
-        <property name="CompilerName" propertytype="System.String" />
-        <property name="CurrentTypeName" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.String" />
-        <property name="CurrentMember" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.CodeDom.CodeTypeMember" />
-        <property name="CurrentMemberName" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.String" />
-        <property name="IsCurrentInterface" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
-        <property name="IsCurrentClass" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
-        <property name="IsCurrentStruct" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
-        <property name="IsCurrentEnum" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
-        <property name="IsCurrentDelegate" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
-        <property name="Indent" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Int32" />
-        <property name="NullToken" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.String" />
-        <property name="Output" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.IO.TextWriter" />
-        <property name="Options" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.CodeDom.Compiler.CodeGeneratorOptions" />
-        <method name="FromSourceBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, sources" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="GetResponseFileCmdArgs(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, cmdArgs" returntype="System.String" />
-        <method name="CmdArgsFromParameters(System.CodeDom.Compiler.CompilerParameters)" argnames="options" returntype="System.String" />
-        <method name="ProcessCompilerOutputLine(System.CodeDom.Compiler.CompilerResults, System.String)" argnames="results, line" returntype="System.Void" />
-        <method name="FromFileBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, fileNames" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="FromDomBatch(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit[])" argnames="options, ea" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="FromSource(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, source" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="FromFile(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, fileName" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="FromDom(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit)" argnames="options, e" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="QuoteSnippetString(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
-        <method name="GetTypeOutput(System.CodeDom.CodeTypeReference)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
-        <method name="CreateValidIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
-        <method name="CreateEscapedIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
-        <method name="ValidateIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="IsValidIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Boolean" />
-        <method name="Supports(System.CodeDom.Compiler.GeneratorSupport)" argnames="support" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Boolean" />
-        <method name="GenerateAttributeDeclarationsEnd(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateAttributeDeclarationsStart(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateNamespaceImport(System.CodeDom.CodeNamespaceImport)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateNamespaceEnd(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateNamespaceStart(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateCompileUnitEnd(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateCompileUnitStart(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateTypeEnd(System.CodeDom.CodeTypeDeclaration)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateTypeStart(System.CodeDom.CodeTypeDeclaration)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateConstructor(System.CodeDom.CodeConstructor, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateProperty(System.CodeDom.CodeMemberProperty, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateMethod(System.CodeDom.CodeMemberMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateEntryPointMethod(System.CodeDom.CodeEntryPointMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateSnippetMember(System.CodeDom.CodeSnippetTypeMember)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateField(System.CodeDom.CodeMemberField)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateEvent(System.CodeDom.CodeMemberEvent, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateLinePragmaEnd(System.CodeDom.CodeLinePragma)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateLinePragmaStart(System.CodeDom.CodeLinePragma)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateVariableDeclarationStatement(System.CodeDom.CodeVariableDeclarationStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateSnippetStatement(System.CodeDom.CodeSnippetStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateLabeledStatement(System.CodeDom.CodeLabeledStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateGotoStatement(System.CodeDom.CodeGotoStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateRemoveEventStatement(System.CodeDom.CodeRemoveEventStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateAttachEventStatement(System.CodeDom.CodeAttachEventStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateAssignStatement(System.CodeDom.CodeAssignStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateTryCatchFinallyStatement(System.CodeDom.CodeTryCatchFinallyStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateConditionStatement(System.CodeDom.CodeConditionStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateMethodReturnStatement(System.CodeDom.CodeMethodReturnStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateComment(System.CodeDom.CodeComment)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateCommentStatements(System.CodeDom.CodeCommentStatementCollection)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateCommentStatement(System.CodeDom.CodeCommentStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateThrowExceptionStatement(System.CodeDom.CodeThrowExceptionStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateIterationStatement(System.CodeDom.CodeIterationStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateExpressionStatement(System.CodeDom.CodeExpressionStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateTypeOfExpression(System.CodeDom.CodeTypeOfExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateTypeReferenceExpression(System.CodeDom.CodeTypeReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateThisReferenceExpression(System.CodeDom.CodeThisReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GeneratePropertySetValueReferenceExpression(System.CodeDom.CodePropertySetValueReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GeneratePropertyReferenceExpression(System.CodeDom.CodePropertyReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateDecimalValue(System.Decimal)" argnames="d" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateDoubleValue(System.Double)" argnames="d" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateSingleFloatValue(System.Single)" argnames="s" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GeneratePrimitiveExpression(System.CodeDom.CodePrimitiveExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateDirectionExpression(System.CodeDom.CodeDirectionExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateParameterDeclarationExpression(System.CodeDom.CodeParameterDeclarationExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateObjectCreateExpression(System.CodeDom.CodeObjectCreateExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateDelegateInvokeExpression(System.CodeDom.CodeDelegateInvokeExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateEventReferenceExpression(System.CodeDom.CodeEventReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateMethodReferenceExpression(System.CodeDom.CodeMethodReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateMethodInvokeExpression(System.CodeDom.CodeMethodInvokeExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateSnippetExpression(System.CodeDom.CodeSnippetExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateArrayIndexerExpression(System.CodeDom.CodeArrayIndexerExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateIndexerExpression(System.CodeDom.CodeIndexerExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateVariableReferenceExpression(System.CodeDom.CodeVariableReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateArgumentReferenceExpression(System.CodeDom.CodeArgumentReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateFieldReferenceExpression(System.CodeDom.CodeFieldReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateDelegateCreateExpression(System.CodeDom.CodeDelegateCreateExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateCastExpression(System.CodeDom.CodeCastExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="ContinueOnNewLine(System.String)" argnames="st" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateBinaryOperatorExpression(System.CodeDom.CodeBinaryOperatorExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateBaseReferenceExpression(System.CodeDom.CodeBaseReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateArrayCreateExpression(System.CodeDom.CodeArrayCreateExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputParameters(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="parameters" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputOperator(System.CodeDom.CodeBinaryOperatorType)" argnames="op" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection, System.Boolean)" argnames="expressions, newlineBetweenItems" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection)" argnames="expressions" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputIdentifier(System.String)" argnames="ident" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputTypeNamePair(System.CodeDom.CodeTypeReference, System.String)" argnames="typeRef, name" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputTypeAttributes(System.Reflection.TypeAttributes, System.Boolean, System.Boolean)" argnames="attributes, isStruct, isEnum" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputType(System.CodeDom.CodeTypeReference)" argnames="typeRef" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputMemberScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputMemberAccessModifier(System.CodeDom.MemberAttributes)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputFieldScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputDirection(System.CodeDom.FieldDirection)" argnames="dir" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputAttributeArgument(System.CodeDom.CodeAttributeArgument)" argnames="arg" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="OutputAttributeDeclarations(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateNamespace(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateCompileUnit(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateSnippetCompileUnit(System.CodeDom.CodeSnippetCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="JoinStringArray(System.String[], System.String)" argnames="sa, separator" returntype="System.String" />
-        <method name="GenerateNamespaces(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateTypes(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateExpression(System.CodeDom.CodeExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateNamespaceImports(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateStatement(System.CodeDom.CodeStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GenerateStatements(System.CodeDom.CodeStatementCollection)" argnames="stms" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeDomProvider" namespace="System.CodeDom.Compiler">
-        <constructor name="CodeDomProvider" argnames="" />
-        <property name="FileExtension" propertytype="System.String" />
-        <property name="LanguageOptions" propertytype="System.CodeDom.Compiler.LanguageOptions" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
-        <method name="CreateParser" argnames="" returntype="System.CodeDom.Compiler.ICodeParser" />
-        <method name="CreateCompiler" argnames="" returntype="System.CodeDom.Compiler.ICodeCompiler" />
-        <method name="CreateGenerator(System.String)" argnames="fileName" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="CreateGenerator(System.IO.TextWriter)" argnames="output" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="CreateGenerator" argnames="" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="CodeGeneratorOptions" namespace="System.CodeDom.Compiler">
-        <constructor name="CodeGeneratorOptions" argnames="" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="IndentString" propertytype="System.String" />
-        <property name="BracingStyle" propertytype="System.String" />
-        <property name="ElseOnClosing" propertytype="System.Boolean" />
-        <property name="BlankLinesBetweenMembers" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CodeParser" namespace="System.CodeDom.Compiler">
-        <constructor name="CodeParser" argnames="" />
-        <method name="Parse(System.IO.TextReader)" argnames="codeStream" returntype="System.CodeDom.CodeCompileUnit" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CompilerError" namespace="System.CodeDom.Compiler">
-        <constructor name="CompilerError" argnames="" />
-        <constructor name="CompilerError(System.String, System.Int32, System.Int32, System.String, System.String)" argnames="fileName, line, column, errorNumber, errorText" />
-        <property name="Line" propertytype="System.Int32" />
-        <property name="Column" propertytype="System.Int32" />
-        <property name="ErrorNumber" propertytype="System.String" />
-        <property name="ErrorText" propertytype="System.String" />
-        <property name="IsWarning" propertytype="System.Boolean" />
-        <property name="FileName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CompilerErrorCollection" namespace="System.CodeDom.Compiler">
-        <constructor name="CompilerErrorCollection" argnames="" />
-        <constructor name="CompilerErrorCollection(System.CodeDom.Compiler.CompilerErrorCollection)" argnames="value" />
-        <constructor name="CompilerErrorCollection(System.CodeDom.Compiler.CompilerError[])" argnames="value" />
-        <property name="Item" propertytype="System.CodeDom.Compiler.CompilerError" />
-        <property name="HasErrors" propertytype="System.Boolean" />
-        <property name="HasWarnings" propertytype="System.Boolean" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.CodeDom.Compiler.CompilerError[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.CodeDom.Compiler.CompilerErrorCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.CodeDom.Compiler.CompilerError[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.CodeDom.Compiler.CompilerError)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CompilerParameters" namespace="System.CodeDom.Compiler">
-        <constructor name="CompilerParameters" argnames="" />
-        <constructor name="CompilerParameters(System.String[])" argnames="assemblyNames" />
-        <constructor name="CompilerParameters(System.String[], System.String)" argnames="assemblyNames, outputName" />
-        <constructor name="CompilerParameters(System.String[], System.String, System.Boolean)" argnames="assemblyNames, outputName, includeDebugInformation" />
-        <property name="GenerateExecutable" propertytype="System.Boolean" />
-        <property name="GenerateInMemory" propertytype="System.Boolean" />
-        <property name="ReferencedAssemblies" propertytype="System.Collections.Specialized.StringCollection" />
-        <property name="MainClass" propertytype="System.String" />
-        <property name="OutputAssembly" propertytype="System.String" />
-        <property name="TempFiles" propertytype="System.CodeDom.Compiler.TempFileCollection" />
-        <property name="IncludeDebugInformation" propertytype="System.Boolean" />
-        <property name="TreatWarningsAsErrors" propertytype="System.Boolean" />
-        <property name="WarningLevel" propertytype="System.Int32" />
-        <property name="CompilerOptions" propertytype="System.String" />
-        <property name="Win32Resource" propertytype="System.String" />
-        <property name="UserToken" propertytype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CompilerResults" namespace="System.CodeDom.Compiler">
-        <constructor name="CompilerResults(System.CodeDom.Compiler.TempFileCollection)" argnames="tempFiles" />
-        <property name="TempFiles" propertytype="System.CodeDom.Compiler.TempFileCollection" />
-        <property name="CompiledAssembly" propertytype="System.Reflection.Assembly" />
-        <property name="Errors" propertytype="System.CodeDom.Compiler.CompilerErrorCollection" />
-        <property name="Output" propertytype="System.Collections.Specialized.StringCollection" />
-        <property name="PathToAssembly" propertytype="System.String" />
-        <property name="NativeCompilerReturnValue" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Executor" namespace="System.CodeDom.Compiler">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="ExecWait(System.String, System.CodeDom.Compiler.TempFileCollection)" argnames="cmd, tempFiles" returntype="System.Void" />
-        <method name="ExecWaitWithCapture(System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="cmd, tempFiles, outputName, errorName" returntype="System.Int32" />
-        <method name="ExecWaitWithCapture(System.String, System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="cmd, currentDir, tempFiles, outputName, errorName" returntype="System.Int32" />
-        <method name="ExecWaitWithCapture(System.IntPtr, System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="userToken, cmd, tempFiles, outputName, errorName" returntype="System.Int32" />
-        <method name="ExecWaitWithCapture(System.IntPtr, System.String, System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="userToken, cmd, currentDir, tempFiles, outputName, errorName" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IndentedTextWriter" namespace="System.CodeDom.Compiler">
-        <constructor name="IndentedTextWriter(System.IO.TextWriter)" argnames="writer" />
-        <constructor name="IndentedTextWriter(System.IO.TextWriter, System.String)" argnames="writer, tabString" />
-        <field name="DefaultTabString" />
-        <field name="CoreNewLine" inherited="System.IO.TextWriter" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <property name="NewLine" propertytype="System.String" />
-        <property name="Indent" propertytype="System.Int32" />
-        <property name="InnerWriter" propertytype="System.IO.TextWriter" />
-        <property name="FormatProvider" inherited="System.IO.TextWriter" propertytype="System.IFormatProvider" />
-        <method name="OutputTabs" argnames="" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="s" returntype="System.Void" />
-        <method name="WriteLine(System.Decimal)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="WriteLine(System.Double)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Single)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.UInt64)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="WriteLine(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.UInt32)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteLine(System.Char[])" argnames="buffer" returntype="System.Void" />
-        <method name="WriteLine(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine" argnames="" returntype="System.Void" />
-        <method name="Write(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
-        <method name="Write(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="Write(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
-        <method name="Write(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="s" returntype="System.Void" />
-        <method name="Write(System.Decimal)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt64)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt32)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
-        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.IO.TextWriter" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="WriteLineNoTabs(System.String)" argnames="s" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TempFileCollection" namespace="System.CodeDom.Compiler">
-        <constructor name="TempFileCollection" argnames="" />
-        <constructor name="TempFileCollection(System.String)" argnames="tempDir" />
-        <constructor name="TempFileCollection(System.String, System.Boolean)" argnames="tempDir, keepFiles" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="TempDir" propertytype="System.String" />
-        <property name="BasePath" propertytype="System.String" />
-        <property name="KeepFiles" propertytype="System.Boolean" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddExtension(System.String)" argnames="fileExtension" returntype="System.String" />
-        <method name="AddExtension(System.String, System.Boolean)" argnames="fileExtension, keepFile" returntype="System.String" />
-        <method name="AddFile(System.String, System.Boolean)" argnames="fileName, keepFile" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.String[], System.Int32)" argnames="fileNames, start" returntype="System.Void" />
-        <method name="Delete" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="ICodeCompiler" namespace="System.CodeDom.Compiler">
-        <method name="CompileAssemblyFromSourceBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, sources" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="CompileAssemblyFromFileBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, fileNames" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="CompileAssemblyFromDomBatch(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit[])" argnames="options, compilationUnits" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="CompileAssemblyFromSource(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, source" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="CompileAssemblyFromFile(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, fileName" returntype="System.CodeDom.Compiler.CompilerResults" />
-        <method name="CompileAssemblyFromDom(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit)" argnames="options, compilationUnit" returntype="System.CodeDom.Compiler.CompilerResults" />
-    </interface>
-    <interface name="ICodeGenerator" namespace="System.CodeDom.Compiler">
-        <method name="GenerateCodeFromType(System.CodeDom.CodeTypeDeclaration, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
-        <method name="GenerateCodeFromCompileUnit(System.CodeDom.CodeCompileUnit, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
-        <method name="GenerateCodeFromNamespace(System.CodeDom.CodeNamespace, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
-        <method name="GenerateCodeFromStatement(System.CodeDom.CodeStatement, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
-        <method name="GenerateCodeFromExpression(System.CodeDom.CodeExpression, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
-        <method name="Supports(System.CodeDom.Compiler.GeneratorSupport)" argnames="supports" returntype="System.Boolean" />
-        <method name="GetTypeOutput(System.CodeDom.CodeTypeReference)" argnames="type" returntype="System.String" />
-        <method name="CreateValidIdentifier(System.String)" argnames="value" returntype="System.String" />
-        <method name="CreateEscapedIdentifier(System.String)" argnames="value" returntype="System.String" />
-        <method name="ValidateIdentifier(System.String)" argnames="value" returntype="System.Void" />
-        <method name="IsValidIdentifier(System.String)" argnames="value" returntype="System.Boolean" />
-    </interface>
-    <interface name="ICodeParser" namespace="System.CodeDom.Compiler">
-        <method name="Parse(System.IO.TextReader)" argnames="codeStream" returntype="System.CodeDom.CodeCompileUnit" />
-    </interface>
-    <enum name="GeneratorSupport" namespace="System.CodeDom.Compiler">
-        <field name="ArraysOfArrays" />
-        <field name="EntryPointMethod" />
-        <field name="GotoStatements" />
-        <field name="MultidimensionalArrays" />
-        <field name="StaticConstructors" />
-        <field name="TryCatchStatements" />
-        <field name="ReturnTypeAttributes" />
-        <field name="DeclareValueTypes" />
-        <field name="DeclareEnums" />
-        <field name="DeclareDelegates" />
-        <field name="DeclareInterfaces" />
-        <field name="DeclareEvents" />
-        <field name="AssemblyAttributes" />
-        <field name="ParameterAttributes" />
-        <field name="ReferenceParameters" />
-        <field name="ChainedConstructorArguments" />
-        <field name="NestedTypes" />
-        <field name="MultipleInterfaceMembers" />
-        <field name="PublicStaticMembers" />
-        <field name="ComplexExpressions" />
-        <field name="Win32Resources" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="LanguageOptions" namespace="System.CodeDom.Compiler">
-        <field name="None" />
-        <field name="CaseInsensitive" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="ServiceContainer" namespace="System.ComponentModel.Design">
-        <constructor name="ServiceContainer" argnames="" />
-        <constructor name="ServiceContainer(System.IServiceProvider)" argnames="parentProvider" />
-        <property name="Container" propertytype="System.ComponentModel.Design.IServiceContainer" />
-        <property name="Services" propertytype="System.Collections.Hashtable" />
-        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
-        <method name="RemoveService(System.Type, System.Boolean)" argnames="serviceType, promote" returntype="System.Void" />
-        <method name="RemoveService(System.Type)" argnames="serviceType" returntype="System.Void" />
-        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback, System.Boolean)" argnames="serviceType, callback, promote" returntype="System.Void" />
-        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback)" argnames="serviceType, callback" returntype="System.Void" />
-        <method name="AddService(System.Type, System.Object, System.Boolean)" argnames="serviceType, serviceInstance, promote" returntype="System.Void" />
-        <method name="AddService(System.Type, System.Object)" argnames="serviceType, serviceInstance" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ActiveDesignerEventArgs" namespace="System.ComponentModel.Design">
-        <constructor name="ActiveDesignerEventArgs(System.ComponentModel.Design.IDesignerHost, System.ComponentModel.Design.IDesignerHost)" argnames="oldDesigner, newDesigner" />
-        <property name="OldDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <property name="NewDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CheckoutException" namespace="System.ComponentModel.Design">
-        <constructor name="CheckoutException" argnames="" />
-        <constructor name="CheckoutException(System.String)" argnames="message" />
-        <constructor name="CheckoutException(System.String, System.Int32)" argnames="message, errorCode" />
-        <field name="Canceled" />
-        <property name="ErrorCode" inherited="System.Runtime.InteropServices.ExternalException" propertytype="System.Int32" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CommandID" namespace="System.ComponentModel.Design">
-        <constructor name="CommandID(System.Guid, System.Int32)" argnames="menuGroup, commandID" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Guid" propertytype="System.Guid" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentChangedEventArgs" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentChangedEventArgs(System.Object, System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="component, member, oldValue, newValue" />
-        <property name="Component" propertytype="System.Object" />
-        <property name="Member" propertytype="System.ComponentModel.MemberDescriptor" />
-        <property name="NewValue" propertytype="System.Object" />
-        <property name="OldValue" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentChangingEventArgs" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentChangingEventArgs(System.Object, System.ComponentModel.MemberDescriptor)" argnames="component, member" />
-        <property name="Component" propertytype="System.Object" />
-        <property name="Member" propertytype="System.ComponentModel.MemberDescriptor" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentEventArgs" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentEventArgs(System.ComponentModel.IComponent)" argnames="component" />
-        <property name="Component" propertytype="System.ComponentModel.IComponent" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ComponentRenameEventArgs" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentRenameEventArgs(System.Object, System.String, System.String)" argnames="component, oldName, newName" />
-        <property name="Component" propertytype="System.Object" />
-        <property name="OldName" propertytype="System.String" />
-        <property name="NewName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerTransaction" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerTransaction" argnames="" />
-        <constructor name="DesignerTransaction(System.String)" argnames="description" />
-        <property name="Canceled" propertytype="System.Boolean" />
-        <property name="Committed" propertytype="System.Boolean" />
-        <property name="Description" propertytype="System.String" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="OnCommit" argnames="" returntype="System.Void" />
-        <method name="OnCancel" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Cancel" argnames="" returntype="System.Void" />
-        <method name="Commit" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerTransactionCloseEventArgs" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerTransactionCloseEventArgs(System.Boolean)" argnames="commit" />
-        <property name="TransactionCommitted" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MenuCommand" namespace="System.ComponentModel.Design">
-        <constructor name="MenuCommand(System.EventHandler, System.ComponentModel.Design.CommandID)" argnames="handler, command" />
-        <property name="Checked" propertytype="System.Boolean" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Supported" propertytype="System.Boolean" />
-        <property name="Visible" propertytype="System.Boolean" />
-        <property name="CommandID" propertytype="System.ComponentModel.Design.CommandID" />
-        <property name="OleStatus" propertytype="System.Int32" />
-        <method name="OnCommandChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
-        <method name="Invoke" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CommandChanged" />
-    </class>
-    <class name="DesignerVerb" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerVerb(System.String, System.EventHandler)" argnames="text, handler" />
-        <constructor name="DesignerVerb(System.String, System.EventHandler, System.ComponentModel.Design.CommandID)" argnames="text, handler, startCommandID" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Checked" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="Enabled" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="Supported" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="Visible" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
-        <property name="CommandID" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.ComponentModel.Design.CommandID" />
-        <property name="OleStatus" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Int32" />
-        <method name="OnCommandChanged(System.EventArgs)" argnames="e" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
-        <method name="Invoke" argnames="" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="CommandChanged" inherited="System.ComponentModel.Design.MenuCommand" />
-    </class>
-    <class name="DesignerVerbCollection" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerVerbCollection" argnames="" />
-        <constructor name="DesignerVerbCollection(System.ComponentModel.Design.DesignerVerb[])" argnames="value" />
-        <property name="Item" propertytype="System.ComponentModel.Design.DesignerVerb" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClear" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.ComponentModel.Design.DesignerVerb[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.ComponentModel.Design.DesignerVerbCollection)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.ComponentModel.Design.DesignerVerb)" argnames="index, value" returntype="System.Void" />
-        <method name="IndexOf(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Int32" />
-        <method name="Contains(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Boolean" />
-        <method name="Remove(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Void" />
-        <method name="CopyTo(System.ComponentModel.Design.DesignerVerb[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesigntimeLicenseContext" namespace="System.ComponentModel.Design">
-        <constructor name="DesigntimeLicenseContext" argnames="" />
-        <property name="UsageMode" propertytype="System.ComponentModel.LicenseUsageMode" />
-        <method name="GetService(System.Type)" argnames="type" inherited="System.ComponentModel.LicenseContext" returntype="System.Object" />
-        <method name="SetSavedLicenseKey(System.Type, System.String)" argnames="type, key" returntype="System.Void" />
-        <method name="GetSavedLicenseKey(System.Type, System.Reflection.Assembly)" argnames="type, resourceAssembly" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerCollection" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerCollection(System.ComponentModel.Design.IDesignerHost[])" argnames="designers" />
-        <constructor name="DesignerCollection(System.Collections.IList)" argnames="designers" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerEventArgs" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerEventArgs(System.ComponentModel.Design.IDesignerHost)" argnames="host" />
-        <property name="Designer" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StandardCommands" namespace="System.ComponentModel.Design">
-        <constructor name="StandardCommands" argnames="" />
-        <field name="AlignBottom" />
-        <field name="AlignHorizontalCenters" />
-        <field name="AlignLeft" />
-        <field name="AlignRight" />
-        <field name="AlignToGrid" />
-        <field name="AlignTop" />
-        <field name="AlignVerticalCenters" />
-        <field name="ArrangeBottom" />
-        <field name="ArrangeRight" />
-        <field name="BringForward" />
-        <field name="BringToFront" />
-        <field name="CenterHorizontally" />
-        <field name="CenterVertically" />
-        <field name="Copy" />
-        <field name="Cut" />
-        <field name="Delete" />
-        <field name="Group" />
-        <field name="HorizSpaceConcatenate" />
-        <field name="HorizSpaceDecrease" />
-        <field name="HorizSpaceIncrease" />
-        <field name="HorizSpaceMakeEqual" />
-        <field name="Paste" />
-        <field name="Properties" />
-        <field name="Redo" />
-        <field name="MultiLevelRedo" />
-        <field name="SelectAll" />
-        <field name="SendBackward" />
-        <field name="SendToBack" />
-        <field name="SizeToControl" />
-        <field name="SizeToControlHeight" />
-        <field name="SizeToControlWidth" />
-        <field name="SizeToFit" />
-        <field name="SizeToGrid" />
-        <field name="SnapToGrid" />
-        <field name="TabOrder" />
-        <field name="Undo" />
-        <field name="MultiLevelUndo" />
-        <field name="Ungroup" />
-        <field name="VertSpaceConcatenate" />
-        <field name="VertSpaceDecrease" />
-        <field name="VertSpaceIncrease" />
-        <field name="VertSpaceMakeEqual" />
-        <field name="ShowGrid" />
-        <field name="ViewGrid" />
-        <field name="Replace" />
-        <field name="PropertiesWindow" />
-        <field name="LockControls" />
-        <field name="F1Help" />
-        <field name="ArrangeIcons" />
-        <field name="LineupIcons" />
-        <field name="ShowLargeIcons" />
-        <field name="VerbFirst" />
-        <field name="VerbLast" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StandardToolWindows" namespace="System.ComponentModel.Design">
-        <constructor name="StandardToolWindows" argnames="" />
-        <field name="ObjectBrowser" />
-        <field name="OutputWindow" />
-        <field name="ProjectExplorer" />
-        <field name="PropertyBrowser" />
-        <field name="RelatedLinks" />
-        <field name="ServerExplorer" />
-        <field name="TaskList" />
-        <field name="Toolbox" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesigntimeLicenseContextSerializer" namespace="System.ComponentModel.Design">
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Serialize(System.IO.Stream, System.String, System.ComponentModel.Design.DesigntimeLicenseContext)" argnames="o, cryptoKey, context" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IComponentChangeService" namespace="System.ComponentModel.Design">
-        <method name="OnComponentChanging(System.Object, System.ComponentModel.MemberDescriptor)" argnames="component, member" returntype="System.Void" />
-        <method name="OnComponentChanged(System.Object, System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="component, member, oldValue, newValue" returntype="System.Void" />
-        <event name="ComponentAdded" />
-        <event name="ComponentAdding" />
-        <event name="ComponentChanged" />
-        <event name="ComponentChanging" />
-        <event name="ComponentRemoved" />
-        <event name="ComponentRemoving" />
-        <event name="ComponentRename" />
-    </interface>
-    <interface name="IDesigner" namespace="System.ComponentModel.Design">
-        <property name="Component" propertytype="System.ComponentModel.IComponent" />
-        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IDesignerEventService" namespace="System.ComponentModel.Design">
-        <property name="ActiveDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
-        <property name="Designers" propertytype="System.ComponentModel.Design.DesignerCollection" />
-        <event name="ActiveDesignerChanged" />
-        <event name="DesignerCreated" />
-        <event name="DesignerDisposed" />
-        <event name="SelectionChanged" />
-    </interface>
-    <interface name="IDesignerFilter" namespace="System.ComponentModel.Design">
-        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
-        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
-        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
-        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
-        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
-    </interface>
-    <interface name="IServiceContainer" namespace="System.ComponentModel.Design">
-        <method name="RemoveService(System.Type, System.Boolean)" argnames="serviceType, promote" returntype="System.Void" />
-        <method name="RemoveService(System.Type)" argnames="serviceType" returntype="System.Void" />
-        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback, System.Boolean)" argnames="serviceType, callback, promote" returntype="System.Void" />
-        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback)" argnames="serviceType, callback" returntype="System.Void" />
-        <method name="AddService(System.Type, System.Object, System.Boolean)" argnames="serviceType, serviceInstance, promote" returntype="System.Void" />
-        <method name="AddService(System.Type, System.Object)" argnames="serviceType, serviceInstance" returntype="System.Void" />
-    </interface>
-    <interface name="IDesignerHost" namespace="System.ComponentModel.Design">
-        <property name="Loading" propertytype="System.Boolean" />
-        <property name="InTransaction" propertytype="System.Boolean" />
-        <property name="Container" propertytype="System.ComponentModel.IContainer" />
-        <property name="RootComponent" propertytype="System.ComponentModel.IComponent" />
-        <property name="RootComponentClassName" propertytype="System.String" />
-        <property name="TransactionDescription" propertytype="System.String" />
-        <method name="GetType(System.String)" argnames="typeName" returntype="System.Type" />
-        <method name="GetDesigner(System.ComponentModel.IComponent)" argnames="component" returntype="System.ComponentModel.Design.IDesigner" />
-        <method name="DestroyComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
-        <method name="CreateTransaction(System.String)" argnames="description" returntype="System.ComponentModel.Design.DesignerTransaction" />
-        <method name="CreateTransaction" argnames="" returntype="System.ComponentModel.Design.DesignerTransaction" />
-        <method name="CreateComponent(System.Type, System.String)" argnames="componentClass, name" returntype="System.ComponentModel.IComponent" />
-        <method name="CreateComponent(System.Type)" argnames="componentClass" returntype="System.ComponentModel.IComponent" />
-        <method name="Activate" argnames="" returntype="System.Void" />
-        <event name="Activated" />
-        <event name="Deactivated" />
-        <event name="LoadComplete" />
-        <event name="TransactionClosed" />
-        <event name="TransactionClosing" />
-        <event name="TransactionOpened" />
-        <event name="TransactionOpening" />
-    </interface>
-    <interface name="IDesignerOptionService" namespace="System.ComponentModel.Design">
-        <method name="SetOptionValue(System.String, System.String, System.Object)" argnames="pageName, valueName, value" returntype="System.Void" />
-        <method name="GetOptionValue(System.String, System.String)" argnames="pageName, valueName" returntype="System.Object" />
-    </interface>
-    <interface name="IDictionaryService" namespace="System.ComponentModel.Design">
-        <method name="SetValue(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="GetValue(System.Object)" argnames="key" returntype="System.Object" />
-        <method name="GetKey(System.Object)" argnames="value" returntype="System.Object" />
-    </interface>
-    <interface name="IEventBindingService" namespace="System.ComponentModel.Design">
-        <method name="ShowCode(System.ComponentModel.IComponent, System.ComponentModel.EventDescriptor)" argnames="component, e" returntype="System.Boolean" />
-        <method name="ShowCode(System.Int32)" argnames="lineNumber" returntype="System.Boolean" />
-        <method name="ShowCode" argnames="" returntype="System.Boolean" />
-        <method name="GetEventProperty(System.ComponentModel.EventDescriptor)" argnames="e" returntype="System.ComponentModel.PropertyDescriptor" />
-        <method name="GetEventProperties(System.ComponentModel.EventDescriptorCollection)" argnames="events" returntype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="GetEvent(System.ComponentModel.PropertyDescriptor)" argnames="property" returntype="System.ComponentModel.EventDescriptor" />
-        <method name="GetCompatibleMethods(System.ComponentModel.EventDescriptor)" argnames="e" returntype="System.Collections.ICollection" />
-        <method name="CreateUniqueMethodName(System.ComponentModel.IComponent, System.ComponentModel.EventDescriptor)" argnames="component, e" returntype="System.String" />
-    </interface>
-    <interface name="IExtenderListService" namespace="System.ComponentModel.Design">
-        <method name="GetExtenderProviders" argnames="" returntype="System.ComponentModel.IExtenderProvider[]" />
-    </interface>
-    <interface name="IExtenderProviderService" namespace="System.ComponentModel.Design">
-        <method name="RemoveExtenderProvider(System.ComponentModel.IExtenderProvider)" argnames="provider" returntype="System.Void" />
-        <method name="AddExtenderProvider(System.ComponentModel.IExtenderProvider)" argnames="provider" returntype="System.Void" />
-    </interface>
-    <interface name="IHelpService" namespace="System.ComponentModel.Design">
-        <method name="ShowHelpFromUrl(System.String)" argnames="helpUrl" returntype="System.Void" />
-        <method name="ShowHelpFromKeyword(System.String)" argnames="helpKeyword" returntype="System.Void" />
-        <method name="RemoveLocalContext(System.ComponentModel.Design.IHelpService)" argnames="localContext" returntype="System.Void" />
-        <method name="RemoveContextAttribute(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="CreateLocalContext(System.ComponentModel.Design.HelpContextType)" argnames="contextType" returntype="System.ComponentModel.Design.IHelpService" />
-        <method name="ClearContextAttributes" argnames="" returntype="System.Void" />
-        <method name="AddContextAttribute(System.String, System.String, System.ComponentModel.Design.HelpKeywordType)" argnames="name, value, keywordType" returntype="System.Void" />
-    </interface>
-    <interface name="IInheritanceService" namespace="System.ComponentModel.Design">
-        <method name="GetInheritanceAttribute(System.ComponentModel.IComponent)" argnames="component" returntype="System.ComponentModel.InheritanceAttribute" />
-        <method name="AddInheritedComponents(System.ComponentModel.IComponent, System.ComponentModel.IContainer)" argnames="component, container" returntype="System.Void" />
-    </interface>
-    <interface name="IMenuCommandService" namespace="System.ComponentModel.Design">
-        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
-        <method name="ShowContextMenu(System.ComponentModel.Design.CommandID, System.Int32, System.Int32)" argnames="menuID, x, y" returntype="System.Void" />
-        <method name="RemoveVerb(System.ComponentModel.Design.DesignerVerb)" argnames="verb" returntype="System.Void" />
-        <method name="RemoveCommand(System.ComponentModel.Design.MenuCommand)" argnames="command" returntype="System.Void" />
-        <method name="GlobalInvoke(System.ComponentModel.Design.CommandID)" argnames="commandID" returntype="System.Boolean" />
-        <method name="FindCommand(System.ComponentModel.Design.CommandID)" argnames="commandID" returntype="System.ComponentModel.Design.MenuCommand" />
-        <method name="AddVerb(System.ComponentModel.Design.DesignerVerb)" argnames="verb" returntype="System.Void" />
-        <method name="AddCommand(System.ComponentModel.Design.MenuCommand)" argnames="command" returntype="System.Void" />
-    </interface>
-    <interface name="IReferenceService" namespace="System.ComponentModel.Design">
-        <method name="GetReferences(System.Type)" argnames="baseType" returntype="System.Object[]" />
-        <method name="GetReferences" argnames="" returntype="System.Object[]" />
-        <method name="GetName(System.Object)" argnames="reference" returntype="System.String" />
-        <method name="GetReference(System.String)" argnames="name" returntype="System.Object" />
-        <method name="GetComponent(System.Object)" argnames="reference" returntype="System.ComponentModel.IComponent" />
-    </interface>
-    <interface name="IResourceService" namespace="System.ComponentModel.Design">
-        <method name="GetResourceWriter(System.Globalization.CultureInfo)" argnames="info" returntype="System.Resources.IResourceWriter" />
-        <method name="GetResourceReader(System.Globalization.CultureInfo)" argnames="info" returntype="System.Resources.IResourceReader" />
-    </interface>
-    <interface name="IRootDesigner" namespace="System.ComponentModel.Design">
-        <property name="SupportedTechnologies" propertytype="System.ComponentModel.Design.ViewTechnology[]" />
-        <method name="GetView(System.ComponentModel.Design.ViewTechnology)" argnames="technology" returntype="System.Object" />
-    </interface>
-    <interface name="ISelectionService" namespace="System.ComponentModel.Design">
-        <property name="PrimarySelection" propertytype="System.Object" />
-        <property name="SelectionCount" propertytype="System.Int32" />
-        <method name="SetSelectedComponents(System.Collections.ICollection, System.ComponentModel.Design.SelectionTypes)" argnames="components, selectionType" returntype="System.Void" />
-        <method name="SetSelectedComponents(System.Collections.ICollection)" argnames="components" returntype="System.Void" />
-        <method name="GetSelectedComponents" argnames="" returntype="System.Collections.ICollection" />
-        <method name="GetComponentSelected(System.Object)" argnames="component" returntype="System.Boolean" />
-        <event name="SelectionChanged" />
-        <event name="SelectionChanging" />
-    </interface>
-    <interface name="ITypeDescriptorFilterService" namespace="System.ComponentModel.Design">
-        <method name="FilterProperties(System.ComponentModel.IComponent, System.Collections.IDictionary)" argnames="component, properties" returntype="System.Boolean" />
-        <method name="FilterEvents(System.ComponentModel.IComponent, System.Collections.IDictionary)" argnames="component, events" returntype="System.Boolean" />
-        <method name="FilterAttributes(System.ComponentModel.IComponent, System.Collections.IDictionary)" argnames="component, attributes" returntype="System.Boolean" />
-    </interface>
-    <interface name="ITypeResolutionService" namespace="System.ComponentModel.Design">
-        <method name="GetPathOfAssembly(System.Reflection.AssemblyName)" argnames="name" returntype="System.String" />
-        <method name="ReferenceAssembly(System.Reflection.AssemblyName)" argnames="name" returntype="System.Void" />
-        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="name, throwOnError, ignoreCase" returntype="System.Type" />
-        <method name="GetType(System.String, System.Boolean)" argnames="name, throwOnError" returntype="System.Type" />
-        <method name="GetType(System.String)" argnames="name" returntype="System.Type" />
-        <method name="GetAssembly(System.Reflection.AssemblyName, System.Boolean)" argnames="name, throwOnError" returntype="System.Reflection.Assembly" />
-        <method name="GetAssembly(System.Reflection.AssemblyName)" argnames="name" returntype="System.Reflection.Assembly" />
-    </interface>
-    <delegate name="ActiveDesignerEventHandler" namespace="System.ComponentModel.Design">
-        <constructor name="ActiveDesignerEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ActiveDesignerEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.ActiveDesignerEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ComponentChangedEventHandler" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ComponentChangingEventHandler" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentChangingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentChangingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentChangingEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ComponentEventHandler" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ComponentRenameEventHandler" namespace="System.ComponentModel.Design">
-        <constructor name="ComponentRenameEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentRenameEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentRenameEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DesignerTransactionCloseEventHandler" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerTransactionCloseEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.DesignerTransactionCloseEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.DesignerTransactionCloseEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="DesignerEventHandler" namespace="System.ComponentModel.Design">
-        <constructor name="DesignerEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.DesignerEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.DesignerEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ServiceCreatorCallback" namespace="System.ComponentModel.Design">
-        <constructor name="ServiceCreatorCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
-        <method name="BeginInvoke(System.ComponentModel.Design.IServiceContainer, System.Type, System.AsyncCallback, System.Object)" argnames="container, serviceType, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.ComponentModel.Design.IServiceContainer, System.Type)" argnames="container, serviceType" returntype="System.Object" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="HelpContextType" namespace="System.ComponentModel.Design">
-        <field name="Ambient" />
-        <field name="Window" />
-        <field name="Selection" />
-        <field name="ToolWindowSelection" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="HelpKeywordType" namespace="System.ComponentModel.Design">
-        <field name="F1Keyword" />
-        <field name="GeneralKeyword" />
-        <field name="FilterKeyword" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SelectionTypes" namespace="System.ComponentModel.Design">
-        <field name="Normal" />
-        <field name="Replace" />
-        <field name="MouseDown" />
-        <field name="MouseUp" />
-        <field name="Click" />
-        <field name="Valid" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ViewTechnology" namespace="System.ComponentModel.Design">
-        <field name="Passthrough" />
-        <field name="WindowsForms" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="DesignerSerializerAttribute" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="DesignerSerializerAttribute(System.Type, System.Type)" argnames="serializerType, baseSerializerType" />
-        <constructor name="DesignerSerializerAttribute(System.String, System.Type)" argnames="serializerTypeName, baseSerializerType" />
-        <constructor name="DesignerSerializerAttribute(System.String, System.String)" argnames="serializerTypeName, baseSerializerTypeName" />
-        <property name="SerializerTypeName" propertytype="System.String" />
-        <property name="SerializerBaseTypeName" propertytype="System.String" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RootDesignerSerializerAttribute" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="RootDesignerSerializerAttribute(System.Type, System.Type, System.Boolean)" argnames="serializerType, baseSerializerType, reloadable" />
-        <constructor name="RootDesignerSerializerAttribute(System.String, System.Type, System.Boolean)" argnames="serializerTypeName, baseSerializerType, reloadable" />
-        <constructor name="RootDesignerSerializerAttribute(System.String, System.String, System.Boolean)" argnames="serializerTypeName, baseSerializerTypeName, reloadable" />
-        <property name="Reloadable" propertytype="System.Boolean" />
-        <property name="SerializerTypeName" propertytype="System.String" />
-        <property name="SerializerBaseTypeName" propertytype="System.String" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ContextStack" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="ContextStack" argnames="" />
-        <property name="Current" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Pop" argnames="" returntype="System.Object" />
-        <method name="Push(System.Object)" argnames="context" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DesignerLoader" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="DesignerLoader" argnames="" />
-        <property name="Loading" propertytype="System.Boolean" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" returntype="System.Void" />
-        <method name="BeginLoad(System.ComponentModel.Design.Serialization.IDesignerLoaderHost)" argnames="host" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InstanceDescriptor" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="InstanceDescriptor(System.Reflection.MemberInfo, System.Collections.ICollection)" argnames="member, arguments" />
-        <constructor name="InstanceDescriptor(System.Reflection.MemberInfo, System.Collections.ICollection, System.Boolean)" argnames="member, arguments, isComplete" />
-        <property name="Arguments" propertytype="System.Collections.ICollection" />
-        <property name="IsComplete" propertytype="System.Boolean" />
-        <property name="MemberInfo" propertytype="System.Reflection.MemberInfo" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Invoke" argnames="" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ResolveNameEventArgs" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="ResolveNameEventArgs(System.String)" argnames="name" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Value" propertytype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IDesignerLoaderHost" namespace="System.ComponentModel.Design.Serialization">
-        <method name="Reload" argnames="" returntype="System.Void" />
-        <method name="EndLoad(System.String, System.Boolean, System.Collections.ICollection)" argnames="baseClassName, successful, errorCollection" returntype="System.Void" />
-    </interface>
-    <interface name="IDesignerLoaderService" namespace="System.ComponentModel.Design.Serialization">
-        <method name="Reload" argnames="" returntype="System.Boolean" />
-        <method name="DependentLoadComplete(System.Boolean, System.Collections.ICollection)" argnames="successful, errorCollection" returntype="System.Void" />
-        <method name="AddLoadDependency" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IDesignerSerializationManager" namespace="System.ComponentModel.Design.Serialization">
-        <property name="Context" propertytype="System.ComponentModel.Design.Serialization.ContextStack" />
-        <property name="Properties" propertytype="System.ComponentModel.PropertyDescriptorCollection" />
-        <method name="SetName(System.Object, System.String)" argnames="instance, name" returntype="System.Void" />
-        <method name="ReportError(System.Object)" argnames="errorInformation" returntype="System.Void" />
-        <method name="RemoveSerializationProvider(System.ComponentModel.Design.Serialization.IDesignerSerializationProvider)" argnames="provider" returntype="System.Void" />
-        <method name="GetType(System.String)" argnames="typeName" returntype="System.Type" />
-        <method name="GetSerializer(System.Type, System.Type)" argnames="objectType, serializerType" returntype="System.Object" />
-        <method name="GetName(System.Object)" argnames="value" returntype="System.String" />
-        <method name="GetInstance(System.String)" argnames="name" returntype="System.Object" />
-        <method name="CreateInstance(System.Type, System.Collections.ICollection, System.String, System.Boolean)" argnames="type, arguments, name, addToContainer" returntype="System.Object" />
-        <method name="AddSerializationProvider(System.ComponentModel.Design.Serialization.IDesignerSerializationProvider)" argnames="provider" returntype="System.Void" />
-        <event name="ResolveName" />
-        <event name="SerializationComplete" />
-    </interface>
-    <interface name="IDesignerSerializationProvider" namespace="System.ComponentModel.Design.Serialization">
-        <method name="GetSerializer(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object, System.Type, System.Type)" argnames="manager, currentSerializer, objectType, serializerType" returntype="System.Object" />
-    </interface>
-    <interface name="IDesignerSerializationService" namespace="System.ComponentModel.Design.Serialization">
-        <method name="Serialize(System.Collections.ICollection)" argnames="objects" returntype="System.Object" />
-        <method name="Deserialize(System.Object)" argnames="serializationData" returntype="System.Collections.ICollection" />
-    </interface>
-    <interface name="INameCreationService" namespace="System.ComponentModel.Design.Serialization">
-        <method name="ValidateName(System.String)" argnames="name" returntype="System.Void" />
-        <method name="IsValidName(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="CreateName(System.ComponentModel.IContainer, System.Type)" argnames="container, dataType" returntype="System.String" />
-    </interface>
-    <delegate name="ResolveNameEventHandler" namespace="System.ComponentModel.Design.Serialization">
-        <constructor name="ResolveNameEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.Serialization.ResolveNameEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ComponentModel.Design.Serialization.ResolveNameEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <class name="CollectionsUtil" namespace="System.Collections.Specialized">
-        <constructor name="CollectionsUtil" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateCaseInsensitiveHashtable" argnames="" returntype="System.Collections.Hashtable" />
-        <method name="CreateCaseInsensitiveHashtable(System.Int32)" argnames="capacity" returntype="System.Collections.Hashtable" />
-        <method name="CreateCaseInsensitiveHashtable(System.Collections.IDictionary)" argnames="d" returntype="System.Collections.Hashtable" />
-        <method name="CreateCaseInsensitiveSortedList" argnames="" returntype="System.Collections.SortedList" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HybridDictionary" namespace="System.Collections.Specialized">
-        <constructor name="HybridDictionary" argnames="" />
-        <constructor name="HybridDictionary(System.Int32)" argnames="initialSize" />
-        <constructor name="HybridDictionary(System.Boolean)" argnames="caseInsensitive" />
-        <constructor name="HybridDictionary(System.Int32, System.Boolean)" argnames="initialSize, caseInsensitive" />
-        <property name="HashCodeProvider" propertytype="System.Collections.IHashCodeProvider" />
-        <property name="Comparer" propertytype="System.Collections.IComparer" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="List" propertytype="System.Collections.Specialized.ListDictionary" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ListDictionary" namespace="System.Collections.Specialized">
-        <constructor name="ListDictionary" argnames="" />
-        <constructor name="ListDictionary(System.Collections.IComparer)" argnames="comparer" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NameObjectCollectionBase" namespace="System.Collections.Specialized">
-        <class name="KeysCollection" namespace="System.Collections.Specialized">
-            <property name="Item" propertytype="System.String" />
-            <property name="Count" propertytype="System.Int32" />
-            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-            <method name="Get(System.Int32)" argnames="index" returntype="System.String" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="KeysCollection" argnames="" />
-        <constructor name="KeysCollection(System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="hashProvider, comparer" />
-        <constructor name="KeysCollection(System.Int32, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, hashProvider, comparer" />
-        <constructor name="KeysCollection(System.Int32)" argnames="capacity" />
-        <constructor name="KeysCollection(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="HashCodeProvider" propertytype="System.Collections.IHashCodeProvider" />
-        <property name="Comparer" propertytype="System.Collections.IComparer" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Keys" propertytype="System.Collections.Specialized.NameObjectCollectionBase+KeysCollection" />
-        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="BaseHasKeys" argnames="" returntype="System.Boolean" />
-        <method name="BaseAdd(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
-        <method name="BaseRemove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="BaseRemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="BaseClear" argnames="" returntype="System.Void" />
-        <method name="BaseGet(System.String)" argnames="name" returntype="System.Object" />
-        <method name="BaseSet(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
-        <method name="BaseGet(System.Int32)" argnames="index" returntype="System.Object" />
-        <method name="BaseGetKey(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="BaseSet(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="BaseGetAllKeys" argnames="" returntype="System.String[]" />
-        <method name="BaseGetAllValues" argnames="" returntype="System.Object[]" />
-        <method name="BaseGetAllValues(System.Type)" argnames="type" returntype="System.Object[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="KeysCollection" namespace="System.Collections.Specialized">
-        <property name="Item" propertytype="System.String" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Get(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NameValueCollection" namespace="System.Collections.Specialized">
-        <constructor name="NameValueCollection" argnames="" />
-        <constructor name="NameValueCollection(System.Collections.Specialized.NameValueCollection)" argnames="col" />
-        <constructor name="NameValueCollection(System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="hashProvider, comparer" />
-        <constructor name="NameValueCollection(System.Int32)" argnames="capacity" />
-        <constructor name="NameValueCollection(System.Int32, System.Collections.Specialized.NameValueCollection)" argnames="capacity, col" />
-        <constructor name="NameValueCollection(System.Int32, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, hashProvider, comparer" />
-        <constructor name="NameValueCollection(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Item" propertytype="System.String" />
-        <property name="AllKeys" propertytype="System.String[]" />
-        <property name="IsReadOnly" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Boolean" />
-        <property name="Count" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Int32" />
-        <property name="Keys" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Collections.Specialized.NameObjectCollectionBase+KeysCollection" />
-        <method name="GetKey(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetValues(System.Int32)" argnames="index" returntype="System.String[]" />
-        <method name="Get(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="Set(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="GetValues(System.String)" argnames="name" returntype="System.String[]" />
-        <method name="Get(System.String)" argnames="name" returntype="System.String" />
-        <method name="Add(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="OnDeserialization(System.Object)" argnames="sender" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="InvalidateCachedArrays" argnames="" returntype="System.Void" />
-        <method name="Add(System.Collections.Specialized.NameValueCollection)" argnames="c" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
-        <method name="HasKeys" argnames="" returntype="System.Boolean" />
-        <method name="BaseHasKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Boolean" />
-        <method name="BaseAdd(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseRemove(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseRemoveAt(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseClear" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseGet(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
-        <method name="BaseSet(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseGet(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
-        <method name="BaseGetKey(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String" />
-        <method name="BaseSet(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseGetAllKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String[]" />
-        <method name="BaseGetAllValues" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
-        <method name="BaseGetAllValues(System.Type)" argnames="type" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StringCollection" namespace="System.Collections.Specialized">
-        <constructor name="StringCollection" argnames="" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.String)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.String[])" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.String[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.Specialized.StringEnumerator" />
-        <method name="IndexOf(System.String)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.String)" argnames="index, value" returntype="System.Void" />
-        <method name="Remove(System.String)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StringEnumerator" namespace="System.Collections.Specialized">
-        <property name="Current" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="MoveNext" argnames="" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="StringDictionary" namespace="System.Collections.Specialized">
-        <constructor name="StringDictionary" argnames="" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.String" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="Remove(System.String)" argnames="key" returntype="System.Void" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="ContainsValue(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="ContainsKey(System.String)" argnames="key" returntype="System.Boolean" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="Add(System.String, System.String)" argnames="key, value" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <struct name="BitVector32" namespace="System.Collections.Specialized">
-        <struct name="Section" namespace="System.Collections.Specialized">
-            <property name="Mask" propertytype="System.Int16" />
-            <property name="Offset" propertytype="System.Int16" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-            <method name="ToString" argnames="" returntype="System.String" />
-            <method name="ToString(System.Collections.Specialized.BitVector32.Section)" argnames="value" returntype="System.String" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </struct>
-        <constructor name="Section(System.Int32)" argnames="data" />
-        <constructor name="Section(System.Collections.Specialized.BitVector32)" argnames="value" />
-        <property name="Item" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Int32" />
-        <property name="Data" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CreateMask" argnames="" returntype="System.Int32" />
-        <method name="CreateMask(System.Int32)" argnames="previous" returntype="System.Int32" />
-        <method name="CreateSection(System.Int16)" argnames="maxValue" returntype="System.Collections.Specialized.BitVector32+Section" />
-        <method name="CreateSection(System.Int16, System.Collections.Specialized.BitVector32.Section)" argnames="maxValue, previous" returntype="System.Collections.Specialized.BitVector32+Section" />
-        <method name="ToString(System.Collections.Specialized.BitVector32)" argnames="value" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="Section" namespace="System.Collections.Specialized">
-        <property name="Mask" propertytype="System.Int16" />
-        <property name="Offset" propertytype="System.Int16" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="ToString(System.Collections.Specialized.BitVector32.Section)" argnames="value" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <class name="ResourcePermissionBaseEntry" namespace="System.Security.Permissions">
-        <constructor name="ResourcePermissionBaseEntry" argnames="" />
-        <constructor name="ResourcePermissionBaseEntry(System.Int32, System.String[])" argnames="permissionAccess, permissionAccessPath" />
-        <property name="PermissionAccess" propertytype="System.Int32" />
-        <property name="PermissionAccessPath" propertytype="System.String[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ResourcePermissionBase" namespace="System.Security.Permissions">
-        <constructor name="ResourcePermissionBase" argnames="" />
-        <constructor name="ResourcePermissionBase(System.Security.Permissions.PermissionState)" argnames="state" />
-        <field name="Any" />
-        <field name="Local" />
-        <property name="ComputerName" propertytype="System.String" />
-        <property name="PermissionAccessType" propertytype="System.Type" />
-        <property name="TagNames" propertytype="System.String[]" />
-        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
-        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="AddPermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" returntype="System.Void" />
-        <method name="Clear" argnames="" returntype="System.Void" />
-        <method name="GetPermissionEntries" argnames="" returntype="System.Security.Permissions.ResourcePermissionBaseEntry[]" />
-        <method name="RemovePermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WNDCLASS_I" namespace="Microsoft.Win32">
-        <constructor name="WNDCLASS_I" argnames="" />
-        <field name="style" />
-        <field name="lpfnWndProc" />
-        <field name="cbClsExtra" />
-        <field name="cbWndExtra" />
-        <field name="hInstance" />
-        <field name="hIcon" />
-        <field name="hCursor" />
-        <field name="hbrBackground" />
-        <field name="lpszMenuName" />
-        <field name="lpszClassName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WNDCLASS" namespace="Microsoft.Win32">
-        <constructor name="WNDCLASS" argnames="" />
-        <field name="style" />
-        <field name="lpfnWndProc" />
-        <field name="cbClsExtra" />
-        <field name="cbWndExtra" />
-        <field name="hInstance" />
-        <field name="hIcon" />
-        <field name="hCursor" />
-        <field name="hbrBackground" />
-        <field name="lpszMenuName" />
-        <field name="lpszClassName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PROCESS_INFORMATION" namespace="Microsoft.Win32">
-        <constructor name="PROCESS_INFORMATION" argnames="" />
-        <field name="hProcess" />
-        <field name="hThread" />
-        <field name="dwProcessId" />
-        <field name="dwThreadId" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SECURITY_ATTRIBUTES" namespace="Microsoft.Win32">
-        <constructor name="SECURITY_ATTRIBUTES" argnames="" />
-        <field name="nLength" />
-        <field name="lpSecurityDescriptor" />
-        <field name="bInheritHandle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="STARTUPINFO" namespace="Microsoft.Win32">
-        <constructor name="STARTUPINFO" argnames="" />
-        <field name="cb" />
-        <field name="lpReserved" />
-        <field name="lpDesktop" />
-        <field name="lpTitle" />
-        <field name="dwX" />
-        <field name="dwY" />
-        <field name="dwXSize" />
-        <field name="dwYSize" />
-        <field name="dwXCountChars" />
-        <field name="dwYCountChars" />
-        <field name="dwFillAttribute" />
-        <field name="dwFlags" />
-        <field name="wShowWindow" />
-        <field name="cbReserved2" />
-        <field name="lpReserved2" />
-        <field name="hStdInput" />
-        <field name="hStdOutput" />
-        <field name="hStdError" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TEXTMETRIC" namespace="Microsoft.Win32">
-        <constructor name="TEXTMETRIC" argnames="" />
-        <field name="tmHeight" />
-        <field name="tmAscent" />
-        <field name="tmDescent" />
-        <field name="tmInternalLeading" />
-        <field name="tmExternalLeading" />
-        <field name="tmAveCharWidth" />
-        <field name="tmMaxCharWidth" />
-        <field name="tmWeight" />
-        <field name="tmOverhang" />
-        <field name="tmDigitizedAspectX" />
-        <field name="tmDigitizedAspectY" />
-        <field name="tmFirstChar" />
-        <field name="tmLastChar" />
-        <field name="tmDefaultChar" />
-        <field name="tmBreakChar" />
-        <field name="tmItalic" />
-        <field name="tmUnderlined" />
-        <field name="tmStruckOut" />
-        <field name="tmPitchAndFamily" />
-        <field name="tmCharSet" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SECURITY_DESCRIPTOR" namespace="Microsoft.Win32">
-        <constructor name="SECURITY_DESCRIPTOR" argnames="" />
-        <field name="Revision" />
-        <field name="Sbz1" />
-        <field name="Control" />
-        <field name="Owner" />
-        <field name="Group" />
-        <field name="Sacl" />
-        <field name="Dacl" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PERF_COUNTER_BLOCK" namespace="Microsoft.Win32">
-        <constructor name="PERF_COUNTER_BLOCK" argnames="" />
-        <field name="ByteLength" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PERF_COUNTER_DEFINITION" namespace="Microsoft.Win32">
-        <constructor name="PERF_COUNTER_DEFINITION" argnames="" />
-        <field name="ByteLength" />
-        <field name="CounterNameTitleIndex" />
-        <field name="CounterNameTitlePtr" />
-        <field name="CounterHelpTitleIndex" />
-        <field name="CounterHelpTitlePtr" />
-        <field name="DefaultScale" />
-        <field name="DetailLevel" />
-        <field name="CounterType" />
-        <field name="CounterSize" />
-        <field name="CounterOffset" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PERF_DATA_BLOCK" namespace="Microsoft.Win32">
-        <constructor name="PERF_DATA_BLOCK" argnames="" />
-        <field name="Signature1" />
-        <field name="Signature2" />
-        <field name="LittleEndian" />
-        <field name="Version" />
-        <field name="Revision" />
-        <field name="TotalByteLength" />
-        <field name="HeaderLength" />
-        <field name="NumObjectTypes" />
-        <field name="DefaultObject" />
-        <field name="SystemTime" />
-        <field name="pad1" />
-        <field name="PerfTime" />
-        <field name="PerfFreq" />
-        <field name="PerfTime100nSec" />
-        <field name="SystemNameLength" />
-        <field name="SystemNameOffset" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PERF_INSTANCE_DEFINITION" namespace="Microsoft.Win32">
-        <constructor name="PERF_INSTANCE_DEFINITION" argnames="" />
-        <field name="ByteLength" />
-        <field name="ParentObjectTitleIndex" />
-        <field name="ParentObjectInstance" />
-        <field name="UniqueID" />
-        <field name="NameOffset" />
-        <field name="NameLength" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="PERF_OBJECT_TYPE" namespace="Microsoft.Win32">
-        <constructor name="PERF_OBJECT_TYPE" argnames="" />
-        <field name="TotalByteLength" />
-        <field name="DefinitionLength" />
-        <field name="HeaderLength" />
-        <field name="ObjectNameTitleIndex" />
-        <field name="ObjectNameTitlePtr" />
-        <field name="ObjectHelpTitleIndex" />
-        <field name="ObjectHelpTitlePtr" />
-        <field name="DetailLevel" />
-        <field name="NumCounters" />
-        <field name="DefaultCounter" />
-        <field name="NumInstances" />
-        <field name="CodePage" />
-        <field name="PerfTime" />
-        <field name="PerfFreq" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NtModuleInfo" namespace="Microsoft.Win32">
-        <constructor name="NtModuleInfo" argnames="" />
-        <field name="BaseOfDll" />
-        <field name="SizeOfImage" />
-        <field name="EntryPoint" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WinProcessEntry" namespace="Microsoft.Win32">
-        <constructor name="WinProcessEntry" argnames="" />
-        <field name="dwSize" />
-        <field name="cntUsage" />
-        <field name="th32ProcessID" />
-        <field name="th32DefaultHeapID" />
-        <field name="th32ModuleID" />
-        <field name="cntThreads" />
-        <field name="th32ParentProcessID" />
-        <field name="pcPriClassBase" />
-        <field name="dwFlags" />
-        <field name="sizeofFileName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WinThreadEntry" namespace="Microsoft.Win32">
-        <constructor name="WinThreadEntry" argnames="" />
-        <field name="dwSize" />
-        <field name="cntUsage" />
-        <field name="th32ThreadID" />
-        <field name="th32OwnerProcessID" />
-        <field name="tpBasePri" />
-        <field name="tpDeltaPri" />
-        <field name="dwFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WinModuleEntry" namespace="Microsoft.Win32">
-        <constructor name="WinModuleEntry" argnames="" />
-        <field name="dwSize" />
-        <field name="th32ModuleID" />
-        <field name="th32ProcessID" />
-        <field name="GlblcntUsage" />
-        <field name="ProccntUsage" />
-        <field name="modBaseAddr" />
-        <field name="modBaseSize" />
-        <field name="hModule" />
-        <field name="sizeofModuleName" />
-        <field name="sizeofFileName" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ShellExecuteInfo" namespace="Microsoft.Win32">
-        <constructor name="ShellExecuteInfo" argnames="" />
-        <field name="cbSize" />
-        <field name="fMask" />
-        <field name="hwnd" />
-        <field name="lpVerb" />
-        <field name="lpFile" />
-        <field name="lpParameters" />
-        <field name="lpDirectory" />
-        <field name="nShow" />
-        <field name="hInstApp" />
-        <field name="lpIDList" />
-        <field name="lpClass" />
-        <field name="hkeyClass" />
-        <field name="dwHotKey" />
-        <field name="hIcon" />
-        <field name="hProcess" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SecurityAttributes" namespace="Microsoft.Win32">
-        <constructor name="SecurityAttributes" argnames="" />
-        <field name="nLength" />
-        <field name="lpSecurityDescriptor" />
-        <field name="bInheritHandle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CreateProcessStartupInfo" namespace="Microsoft.Win32">
-        <constructor name="CreateProcessStartupInfo" argnames="" />
-        <field name="cb" />
-        <field name="lpReserved" />
-        <field name="lpDesktop" />
-        <field name="lpTitle" />
-        <field name="dwX" />
-        <field name="dwY" />
-        <field name="dwXSize" />
-        <field name="dwYSize" />
-        <field name="dwXCountChars" />
-        <field name="dwYCountChars" />
-        <field name="dwFillAttribute" />
-        <field name="dwFlags" />
-        <field name="wShowWindow" />
-        <field name="cbReserved2" />
-        <field name="lpReserved2" />
-        <field name="hStdInput" />
-        <field name="hStdOutput" />
-        <field name="hStdError" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CreateProcessProcessInformation" namespace="Microsoft.Win32">
-        <constructor name="CreateProcessProcessInformation" argnames="" />
-        <field name="hProcess" />
-        <field name="hThread" />
-        <field name="dwProcessId" />
-        <field name="dwThreadId" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NtProcessBasicInfo" namespace="Microsoft.Win32">
-        <constructor name="NtProcessBasicInfo" argnames="" />
-        <field name="ExitStatus" />
-        <field name="PebBaseAddress" />
-        <field name="AffinityMask" />
-        <field name="BasePriority" />
-        <field name="UniqueProcessId" />
-        <field name="InheritedFromUniqueProcessId" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TokenPrivileges" namespace="Microsoft.Win32">
-        <constructor name="TokenPrivileges" argnames="" />
-        <field name="PrivilegeCount" />
-        <field name="Luid" />
-        <field name="Attributes" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SYSTEMTIME" namespace="Microsoft.Win32">
-        <constructor name="SYSTEMTIME" argnames="" />
-        <field name="wYear" />
-        <field name="wMonth" />
-        <field name="wDayOfWeek" />
-        <field name="wDay" />
-        <field name="wHour" />
-        <field name="wMinute" />
-        <field name="wSecond" />
-        <field name="wMilliseconds" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="VS_FIXEDFILEINFO" namespace="Microsoft.Win32">
-        <constructor name="VS_FIXEDFILEINFO" argnames="" />
-        <field name="dwSignature" />
-        <field name="dwStructVersion" />
-        <field name="dwFileVersionMS" />
-        <field name="dwFileVersionLS" />
-        <field name="dwProductVersionMS" />
-        <field name="dwProductVersionLS" />
-        <field name="dwFileFlagsMask" />
-        <field name="dwFileFlags" />
-        <field name="dwFileOS" />
-        <field name="dwFileType" />
-        <field name="dwFileSubtype" />
-        <field name="dwFileDateMS" />
-        <field name="dwFileDateLS" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="USEROBJECTFLAGS" namespace="Microsoft.Win32">
-        <constructor name="USEROBJECTFLAGS" argnames="" />
-        <field name="fInherit" />
-        <field name="fReserved" />
-        <field name="dwFlags" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="OSVERSIONINFO" namespace="Microsoft.Win32">
-        <constructor name="OSVERSIONINFO" argnames="" />
-        <field name="dwOSVersionInfoSize" />
-        <field name="dwMajorVersion" />
-        <field name="dwMinorVersion" />
-        <field name="dwBuildNumber" />
-        <field name="dwPlatformId" />
-        <field name="szCSDVersion" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Util" namespace="Microsoft.Win32">
-        <constructor name="Util" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="MAKELONG(System.Int32, System.Int32)" argnames="low, high" returntype="System.Int32" />
-        <method name="MAKELPARAM(System.Int32, System.Int32)" argnames="low, high" returntype="System.IntPtr" />
-        <method name="HIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="HIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="LOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="LOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="SignedHIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="SignedLOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
-        <method name="SignedHIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="SignedLOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
-        <method name="GetPInvokeStringLength(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SystemEvents" namespace="Microsoft.Win32">
-        <property name="UserInteractive" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="CreateTimer(System.Int32)" argnames="interval" returntype="System.IntPtr" />
-        <method name="InvokeOnEventsThread(System.Delegate)" argnames="method" returntype="System.Void" />
-        <method name="KillTimer(System.IntPtr)" argnames="timerId" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="DisplaySettingsChanged" />
-        <event name="EventsThreadShutdown" />
-        <event name="InstalledFontsChanged" />
-        <event name="LowMemory" />
-        <event name="PaletteChanged" />
-        <event name="PowerModeChanged" />
-        <event name="SessionEnded" />
-        <event name="SessionEnding" />
-        <event name="TimeChanged" />
-        <event name="TimerElapsed" />
-        <event name="UserPreferenceChanged" />
-        <event name="UserPreferenceChanging" />
-    </class>
-    <class name="PowerModeChangedEventArgs" namespace="Microsoft.Win32">
-        <constructor name="PowerModeChangedEventArgs(Microsoft.Win32.PowerModes)" argnames="mode" />
-        <property name="Mode" propertytype="Microsoft.Win32.PowerModes" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SessionEndedEventArgs" namespace="Microsoft.Win32">
-        <constructor name="SessionEndedEventArgs(Microsoft.Win32.SessionEndReasons)" argnames="reason" />
-        <property name="Reason" propertytype="Microsoft.Win32.SessionEndReasons" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SessionEndingEventArgs" namespace="Microsoft.Win32">
-        <constructor name="SessionEndingEventArgs(Microsoft.Win32.SessionEndReasons)" argnames="reason" />
-        <property name="Cancel" propertytype="System.Boolean" />
-        <property name="Reason" propertytype="Microsoft.Win32.SessionEndReasons" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TimerElapsedEventArgs" namespace="Microsoft.Win32">
-        <constructor name="TimerElapsedEventArgs(System.IntPtr)" argnames="timerId" />
-        <property name="TimerId" propertytype="System.IntPtr" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UserPreferenceChangedEventArgs" namespace="Microsoft.Win32">
-        <constructor name="UserPreferenceChangedEventArgs(Microsoft.Win32.UserPreferenceCategory)" argnames="category" />
-        <property name="Category" propertytype="Microsoft.Win32.UserPreferenceCategory" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UserPreferenceChangingEventArgs" namespace="Microsoft.Win32">
-        <constructor name="UserPreferenceChangingEventArgs(Microsoft.Win32.UserPreferenceCategory)" argnames="category" />
-        <property name="Category" propertytype="Microsoft.Win32.UserPreferenceCategory" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <struct name="MSG" namespace="Microsoft.Win32">
-        <field name="hwnd" />
-        <field name="message" />
-        <field name="wParam" />
-        <field name="lParam" />
-        <field name="time" />
-        <field name="pt_x" />
-        <field name="pt_y" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <struct name="LUID" namespace="Microsoft.Win32">
-        <field name="LowPart" />
-        <field name="HighPart" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <delegate name="WndProc" namespace="Microsoft.Win32">
-        <constructor name="WndProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
-        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.IntPtr" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="ConHndlr" namespace="Microsoft.Win32">
-        <constructor name="ConHndlr(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
-        <method name="BeginInvoke(System.Int32, System.AsyncCallback, System.Object)" argnames="signalType, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Int32)" argnames="signalType" returntype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="EnumThreadWindowsCallback" namespace="Microsoft.Win32">
-        <constructor name="EnumThreadWindowsCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, lParam, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hWnd, lParam" returntype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="PowerModeChangedEventHandler" namespace="Microsoft.Win32">
-        <constructor name="PowerModeChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, Microsoft.Win32.PowerModeChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, Microsoft.Win32.PowerModeChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="TimerAPCProc" namespace="Microsoft.Win32">
-        <constructor name="TimerAPCProc(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.IntPtr, System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="argToCompletionRoutine, timerLowValue, timerHighValue, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr, System.Int32, System.Int32)" argnames="argToCompletionRoutine, timerLowValue, timerHighValue" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="SessionEndedEventHandler" namespace="Microsoft.Win32">
-        <constructor name="SessionEndedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, Microsoft.Win32.SessionEndedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, Microsoft.Win32.SessionEndedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="SessionEndingEventHandler" namespace="Microsoft.Win32">
-        <constructor name="SessionEndingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, Microsoft.Win32.SessionEndingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, Microsoft.Win32.SessionEndingEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="TimerElapsedEventHandler" namespace="Microsoft.Win32">
-        <constructor name="TimerElapsedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, Microsoft.Win32.TimerElapsedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, Microsoft.Win32.TimerElapsedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="UserPreferenceChangedEventHandler" namespace="Microsoft.Win32">
-        <constructor name="UserPreferenceChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, Microsoft.Win32.UserPreferenceChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, Microsoft.Win32.UserPreferenceChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="UserPreferenceChangingEventHandler" namespace="Microsoft.Win32">
-        <constructor name="UserPreferenceChangingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, Microsoft.Win32.UserPreferenceChangingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, Microsoft.Win32.UserPreferenceChangingEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="StructFormatEnum" namespace="Microsoft.Win32">
-        <field name="Ansi" />
-        <field name="Unicode" />
-        <field name="Auto" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="StructFormat" namespace="Microsoft.Win32">
-        <field name="Ansi" />
-        <field name="Unicode" />
-        <field name="Auto" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="PowerModes" namespace="Microsoft.Win32">
-        <field name="Resume" />
-        <field name="StatusChange" />
-        <field name="Suspend" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SessionEndReasons" namespace="Microsoft.Win32">
-        <field name="Logoff" />
-        <field name="SystemShutdown" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="UserPreferenceCategory" namespace="Microsoft.Win32">
-        <field name="Accessibility" />
-        <field name="Color" />
-        <field name="Desktop" />
-        <field name="General" />
-        <field name="Icon" />
-        <field name="Keyboard" />
-        <field name="Menu" />
-        <field name="Mouse" />
-        <field name="Policy" />
-        <field name="Power" />
-        <field name="Screensaver" />
-        <field name="Window" />
-        <field name="Locale" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="CSharpCodeProvider" namespace="Microsoft.CSharp">
-        <constructor name="CSharpCodeProvider" argnames="" />
-        <property name="FileExtension" propertytype="System.String" />
-        <property name="LanguageOptions" inherited="System.CodeDom.Compiler.CodeDomProvider" propertytype="System.CodeDom.Compiler.LanguageOptions" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
-        <method name="CreateParser" argnames="" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeParser" />
-        <method name="CreateCompiler" argnames="" returntype="System.CodeDom.Compiler.ICodeCompiler" />
-        <method name="CreateGenerator(System.String)" argnames="fileName" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="CreateGenerator(System.IO.TextWriter)" argnames="output" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="CreateGenerator" argnames="" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="VBCodeProvider" namespace="Microsoft.VisualBasic">
-        <constructor name="VBCodeProvider" argnames="" />
-        <property name="FileExtension" propertytype="System.String" />
-        <property name="LanguageOptions" propertytype="System.CodeDom.Compiler.LanguageOptions" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
-        <method name="CreateParser" argnames="" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeParser" />
-        <method name="CreateCompiler" argnames="" returntype="System.CodeDom.Compiler.ICodeCompiler" />
-        <method name="CreateGenerator(System.String)" argnames="fileName" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="CreateGenerator(System.IO.TextWriter)" argnames="output" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="CreateGenerator" argnames="" returntype="System.CodeDom.Compiler.ICodeGenerator" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="Uri" namespace="System">
-        <constructor name="Uri(System.String)" argnames="uriString" />
-        <constructor name="Uri(System.String, System.Boolean)" argnames="uriString, dontEscape" />
-        <constructor name="Uri(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <constructor name="Uri(System.Uri, System.String)" argnames="baseUri, relativeUri" />
-        <constructor name="Uri(System.Uri, System.String, System.Boolean)" argnames="baseUri, relativeUri, dontEscape" />
-        <field name="UriSchemeFile" />
-        <field name="UriSchemeFtp" />
-        <field name="UriSchemeGopher" />
-        <field name="UriSchemeHttp" />
-        <field name="UriSchemeHttps" />
-        <field name="UriSchemeMailto" />
-        <field name="UriSchemeNews" />
-        <field name="UriSchemeNntp" />
-        <field name="SchemeDelimiter" />
-        <property name="AbsolutePath" propertytype="System.String" />
-        <property name="AbsoluteUri" propertytype="System.String" />
-        <property name="Authority" propertytype="System.String" />
-        <property name="BasePath" propertytype="System.String" />
-        <property name="CurrentDocument" propertytype="System.String" />
-        <property name="DisplayFragment" propertytype="System.String" />
-        <property name="DisplayNameNoExtra" propertytype="System.String" />
-        <property name="DisplayPath" propertytype="System.String" />
-        <property name="DisplayPathLocal" propertytype="System.String" />
-        <property name="DisplayQuery" propertytype="System.String" />
-        <property name="Extra" propertytype="System.String" />
-        <property name="ExtraDelimiter" propertytype="System.String" />
-        <property name="Fragment" propertytype="System.String" />
-        <property name="Host" propertytype="System.String" />
-        <property name="HostNameType" propertytype="System.UriHostNameType" />
-        <property name="HostType" propertytype="System.HostNameType" />
-        <property name="IsDefaultPort" propertytype="System.Boolean" />
-        <property name="IsFile" propertytype="System.Boolean" />
-        <property name="IsLoopback" propertytype="System.Boolean" />
-        <property name="IsSchemeKnownToHaveSlashes" propertytype="System.Boolean" />
-        <property name="IsUnc" propertytype="System.Boolean" />
-        <property name="LocalPath" propertytype="System.String" />
-        <property name="NonPathPart" propertytype="System.String" />
-        <property name="NonPathPartUnc" propertytype="System.String" />
-        <property name="PathAndQuery" propertytype="System.String" />
-        <property name="Port" propertytype="System.Int32" />
-        <property name="Query" propertytype="System.String" />
-        <property name="Scheme" propertytype="System.String" />
-        <property name="Segments" propertytype="System.String[]" />
-        <property name="UserEscaped" propertytype="System.Boolean" />
-        <property name="UserInfo" propertytype="System.String" />
-        <method name="Unescape(System.String)" argnames="path" returntype="System.String" />
-        <method name="Parse" argnames="" returntype="System.Void" />
-        <method name="IsReservedCharacter(System.Char)" argnames="character" returntype="System.Boolean" />
-        <method name="IsBadFileSystemCharacter(System.Char)" argnames="character" returntype="System.Boolean" />
-        <method name="Escape" argnames="" returntype="System.Void" />
-        <method name="CheckSecurity" argnames="" returntype="System.Void" />
-        <method name="Canonicalize" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="CheckHostName(System.String)" argnames="name" returntype="System.UriHostNameType" />
-        <method name="CheckSchemeName(System.String)" argnames="schemeName" returntype="System.Boolean" />
-        <method name="EscapeString(System.String)" argnames="str" returntype="System.String" />
-        <method name="FromHex(System.Char)" argnames="digit" returntype="System.Int32" />
-        <method name="GetLeftPart(System.UriPartial)" argnames="part" returntype="System.String" />
-        <method name="HexEscape(System.Char)" argnames="character" returntype="System.String" />
-        <method name="HexUnescape(System.String, System.Int32&amp;)" argnames="pattern, index" returntype="System.Char" />
-        <method name="IsExcludedCharacter(System.Char)" argnames="character" returntype="System.Boolean" />
-        <method name="IsHexDigit(System.Char)" argnames="character" returntype="System.Boolean" />
-        <method name="IsHexEncoding(System.String, System.Int32)" argnames="pattern, index" returntype="System.Boolean" />
-        <method name="MakeRelative(System.Uri)" argnames="toUri" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UriBuilder" namespace="System">
-        <constructor name="UriBuilder" argnames="" />
-        <constructor name="UriBuilder(System.String)" argnames="uri" />
-        <constructor name="UriBuilder(System.Uri)" argnames="uri" />
-        <constructor name="UriBuilder(System.String, System.String)" argnames="schemeName, hostName" />
-        <constructor name="UriBuilder(System.String, System.String, System.Int32)" argnames="scheme, host, portNumber" />
-        <constructor name="UriBuilder(System.String, System.String, System.Int32, System.String)" argnames="scheme, host, port, pathValue" />
-        <constructor name="UriBuilder(System.String, System.String, System.Int32, System.String, System.String)" argnames="scheme, host, port, path, extraValue" />
-        <property name="Extra" propertytype="System.String" />
-        <property name="Fragment" propertytype="System.String" />
-        <property name="Host" propertytype="System.String" />
-        <property name="Password" propertytype="System.String" />
-        <property name="Path" propertytype="System.String" />
-        <property name="Port" propertytype="System.Int32" />
-        <property name="Query" propertytype="System.String" />
-        <property name="Scheme" propertytype="System.String" />
-        <property name="Uri" propertytype="System.Uri" />
-        <property name="UserName" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="rparam" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UriFormatException" namespace="System">
-        <constructor name="UriFormatException" argnames="" />
-        <constructor name="UriFormatException(System.String)" argnames="textString" />
-        <constructor name="UriFormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="UriHostNameType" namespace="System">
-        <field name="Unknown" />
-        <field name="Basic" />
-        <field name="Dns" />
-        <field name="IPv4" />
-        <field name="IPv6" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="UriPartial" namespace="System">
-        <field name="Scheme" />
-        <field name="Authority" />
-        <field name="Path" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="Authorization" namespace="System.Net">
-        <constructor name="Authorization(System.String)" argnames="token" />
-        <constructor name="Authorization(System.String, System.Boolean)" argnames="token, finished" />
-        <constructor name="Authorization(System.String, System.Boolean, System.String)" argnames="token, finished, connectionGroupId" />
-        <property name="Message" propertytype="System.String" />
-        <property name="ConnectionGroupId" propertytype="System.String" />
-        <property name="Complete" propertytype="System.Boolean" />
-        <property name="ProtectionRealm" propertytype="System.String[]" />
-        <property name="Module" propertytype="System.Net.IAuthenticationModule" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Cookie" namespace="System.Net">
-        <constructor name="Cookie" argnames="" />
-        <constructor name="Cookie(System.String, System.String)" argnames="name, value" />
-        <constructor name="Cookie(System.String, System.String, System.String)" argnames="name, value, path" />
-        <constructor name="Cookie(System.String, System.String, System.String, System.String)" argnames="name, value, path, domain" />
-        <property name="Comment" propertytype="System.String" />
-        <property name="CommentUri" propertytype="System.Uri" />
-        <property name="Discard" propertytype="System.Boolean" />
-        <property name="Domain" propertytype="System.String" />
-        <property name="_Domain" propertytype="System.String" />
-        <property name="Expired" propertytype="System.Boolean" />
-        <property name="Expires" propertytype="System.DateTime" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Path" propertytype="System.String" />
-        <property name="_Path" propertytype="System.String" />
-        <property name="Plain" propertytype="System.Boolean" />
-        <property name="Port" propertytype="System.String" />
-        <property name="PortList" propertytype="System.Int32[]" />
-        <property name="_Port" propertytype="System.String" />
-        <property name="Secure" propertytype="System.Boolean" />
-        <property name="TimeStamp" propertytype="System.DateTime" />
-        <property name="Value" propertytype="System.String" />
-        <property name="Variant" propertytype="System.Net.CookieVariant" />
-        <property name="DomainKey" propertytype="System.String" />
-        <property name="Version" propertytype="System.Int32" />
-        <property name="_Version" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CookieCollection" namespace="System.Net">
-        <constructor name="CookieCollection" argnames="" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Item" propertytype="System.Net.Cookie" />
-        <property name="Item" propertytype="System.Net.Cookie" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsOtherVersionSeen" propertytype="System.Boolean" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Net.Cookie)" argnames="cookie" returntype="System.Void" />
-        <method name="Add(System.Net.CookieCollection)" argnames="cookies" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CookieContainer" namespace="System.Net">
-        <constructor name="CookieContainer" argnames="" />
-        <constructor name="CookieContainer(System.Int32)" argnames="capacity" />
-        <constructor name="CookieContainer(System.Int32, System.Int32, System.Int32)" argnames="capacity, perDomainCapacity, maxCookieSize" />
-        <field name="DefaultCookieLimit" />
-        <field name="DefaultPerDomainCookieLimit" />
-        <field name="DefaultCookieLengthLimit" />
-        <property name="Capacity" propertytype="System.Int32" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="MaxCookieSize" propertytype="System.Int32" />
-        <property name="PerDomainCapacity" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Net.Cookie)" argnames="cookie" returntype="System.Void" />
-        <method name="Add(System.Net.CookieCollection)" argnames="cookies" returntype="System.Void" />
-        <method name="Add(System.Uri, System.Net.Cookie)" argnames="uri, cookie" returntype="System.Void" />
-        <method name="Add(System.Uri, System.Net.CookieCollection)" argnames="uri, cookies" returntype="System.Void" />
-        <method name="GetCookies(System.Uri)" argnames="uri" returntype="System.Net.CookieCollection" />
-        <method name="GetCookieHeader(System.Uri)" argnames="uri" returntype="System.String" />
-        <method name="SetCookies(System.Uri, System.String)" argnames="uri, cookieHeader" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CookieException" namespace="System.Net">
-        <constructor name="CookieException" argnames="" />
-        <constructor name="CookieException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="CredentialCache" namespace="System.Net">
-        <constructor name="CredentialCache" argnames="" />
-        <property name="IsDefaultInCache" propertytype="System.Boolean" />
-        <property name="DefaultCredentials" propertytype="System.Net.ICredentials" />
-        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetCredential(System.Uri, System.String)" argnames="uriPrefix, authType" returntype="System.Net.NetworkCredential" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Uri, System.String, System.Net.NetworkCredential)" argnames="uriPrefix, authType, cred" returntype="System.Void" />
-        <method name="Remove(System.Uri, System.String)" argnames="uriPrefix, authType" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NetworkCredential" namespace="System.Net">
-        <constructor name="NetworkCredential" argnames="" />
-        <constructor name="NetworkCredential(System.String, System.String)" argnames="userName, password" />
-        <constructor name="NetworkCredential(System.String, System.String, System.String)" argnames="userName, password, domain" />
-        <property name="UserName" propertytype="System.String" />
-        <property name="Password" propertytype="System.String" />
-        <property name="Domain" propertytype="System.String" />
-        <method name="GetCredential(System.Uri, System.String)" argnames="uri, authType" returntype="System.Net.NetworkCredential" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Dns" namespace="System.Net">
-        <property name="LocalHost" propertytype="System.Net.IPHostEntry" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetHostByName(System.String)" argnames="hostName" returntype="System.Net.IPHostEntry" />
-        <method name="GetHostByAddress(System.String)" argnames="address" returntype="System.Net.IPHostEntry" />
-        <method name="GetHostByAddress(System.Net.IPAddress)" argnames="address" returntype="System.Net.IPHostEntry" />
-        <method name="GetHostName" argnames="" returntype="System.String" />
-        <method name="Resolve(System.String)" argnames="hostName" returntype="System.Net.IPHostEntry" />
-        <method name="BeginGetHostByName(System.String, System.AsyncCallback, System.Object)" argnames="hostName, requestCallback, stateObject" returntype="System.IAsyncResult" />
-        <method name="EndGetHostByName(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.IPHostEntry" />
-        <method name="BeginResolve(System.String, System.AsyncCallback, System.Object)" argnames="hostName, requestCallback, stateObject" returntype="System.IAsyncResult" />
-        <method name="EndResolve(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.IPHostEntry" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EndPoint" namespace="System.Net">
-        <constructor name="EndPoint" argnames="" />
-        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
-        <method name="Create(System.Net.SocketAddress)" argnames="socketAddress" returntype="System.Net.EndPoint" />
-        <method name="Serialize" argnames="" returntype="System.Net.SocketAddress" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebRequest" namespace="System.Net">
-        <constructor name="WebRequest" argnames="" />
-        <constructor name="WebRequest(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="PrefixList" propertytype="System.Collections.ArrayList" />
-        <property name="Method" propertytype="System.String" />
-        <property name="RequestUri" propertytype="System.Uri" />
-        <property name="ConnectionGroupName" propertytype="System.String" />
-        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
-        <property name="ContentLength" propertytype="System.Int64" />
-        <property name="ContentType" propertytype="System.String" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <property name="Proxy" propertytype="System.Net.IWebProxy" />
-        <property name="PreAuthenticate" propertytype="System.Boolean" />
-        <property name="Timeout" propertytype="System.Int32" />
-        <method name="Abort" argnames="" returntype="System.Void" />
-        <method name="EndGetRequestStream(System.IAsyncResult)" argnames="asyncResult" returntype="System.IO.Stream" />
-        <method name="BeginGetRequestStream(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
-        <method name="EndGetResponse(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.WebResponse" />
-        <method name="BeginGetResponse(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
-        <method name="GetResponse" argnames="" returntype="System.Net.WebResponse" />
-        <method name="GetRequestStream" argnames="" returntype="System.IO.Stream" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Create(System.String)" argnames="requestUriString" returntype="System.Net.WebRequest" />
-        <method name="Create(System.Uri)" argnames="requestUri" returntype="System.Net.WebRequest" />
-        <method name="CreateDefault(System.Uri)" argnames="requestUri" returntype="System.Net.WebRequest" />
-        <method name="RegisterPrefix(System.String, System.Net.IWebRequestCreate)" argnames="prefix, creator" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FileWebRequest" namespace="System.Net">
-        <constructor name="FileWebRequest(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="ConnectionGroupName" propertytype="System.String" />
-        <property name="ContentLength" propertytype="System.Int64" />
-        <property name="ContentType" propertytype="System.String" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
-        <property name="Method" propertytype="System.String" />
-        <property name="PreAuthenticate" propertytype="System.Boolean" />
-        <property name="Proxy" propertytype="System.Net.IWebProxy" />
-        <property name="Timeout" propertytype="System.Int32" />
-        <property name="RequestUri" propertytype="System.Uri" />
-        <method name="Abort" argnames="" inherited="System.Net.WebRequest" returntype="System.Void" />
-        <method name="EndGetRequestStream(System.IAsyncResult)" argnames="asyncResult" returntype="System.IO.Stream" />
-        <method name="BeginGetRequestStream(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
-        <method name="EndGetResponse(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.WebResponse" />
-        <method name="BeginGetResponse(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
-        <method name="GetResponse" argnames="" returntype="System.Net.WebResponse" />
-        <method name="GetRequestStream" argnames="" returntype="System.IO.Stream" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebResponse" namespace="System.Net">
-        <constructor name="WebResponse" argnames="" />
-        <constructor name="WebResponse(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="ContentLength" propertytype="System.Int64" />
-        <property name="ContentType" propertytype="System.String" />
-        <property name="ResponseUri" propertytype="System.Uri" />
-        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
-        <method name="GetResponseStream" argnames="" returntype="System.IO.Stream" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FileWebResponse" namespace="System.Net">
-        <constructor name="FileWebResponse(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="ContentLength" propertytype="System.Int64" />
-        <property name="ContentType" propertytype="System.String" />
-        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
-        <property name="ResponseUri" propertytype="System.Uri" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="GetResponseStream" argnames="" returntype="System.IO.Stream" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpWebRequest" namespace="System.Net">
-        <constructor name="HttpWebRequest(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="Saw100Continue" propertytype="System.Boolean" />
-        <property name="UsesProxy" propertytype="System.Boolean" />
-        <property name="ResponseStatusCode" propertytype="System.Net.HttpStatusCode" />
-        <property name="UsesProxySemantics" propertytype="System.Boolean" />
-        <property name="ChallengedUri" propertytype="System.Uri" />
-        <property name="ProxyAuthenticationState" propertytype="System.Net.AuthenticationState" />
-        <property name="ServerAuthenticationState" propertytype="System.Net.AuthenticationState" />
-        <property name="CurrentAuthenticationState" propertytype="System.Net.AuthenticationState" />
-        <property name="DelegationFix" propertytype="System.Net.DelegationFix" />
-        <property name="CookieContainer" propertytype="System.Net.CookieContainer" />
-        <property name="RequestUri" propertytype="System.Uri" />
-        <property name="AllowWriteStreamBuffering" propertytype="System.Boolean" />
-        <property name="ContentLength" propertytype="System.Int64" />
-        <property name="Timeout" propertytype="System.Int32" />
-        <property name="ClientCertificates" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
-        <property name="CoreResponse" propertytype="System.Object" />
-        <property name="CanGetRequestStream" propertytype="System.Boolean" />
-        <property name="CanGetResponseStream" propertytype="System.Boolean" />
-        <property name="RequireBody" propertytype="System.Boolean" />
-        <property name="MissingEntityBodyDelimiter" propertytype="System.Boolean" />
-        <property name="TransferEncodingWithoutChunked" propertytype="System.Boolean" />
-        <property name="ChunkedUploadOnHttp10" propertytype="System.Boolean" />
-        <property name="CheckBuffering" propertytype="System.Boolean" />
-        <property name="Address" propertytype="System.Uri" />
-        <property name="ContinueDelegate" propertytype="System.Net.HttpContinueDelegate" />
-        <property name="ServicePoint" propertytype="System.Net.ServicePoint" />
-        <property name="AllowAutoRedirect" propertytype="System.Boolean" />
-        <property name="MaximumAutomaticRedirections" propertytype="System.Int32" />
-        <property name="Method" propertytype="System.String" />
-        <property name="CurrentMethod" propertytype="System.String" />
-        <property name="KeepAlive" propertytype="System.Boolean" />
-        <property name="Pipelined" propertytype="System.Boolean" />
-        <property name="InternalPipelined" propertytype="System.Boolean" />
-        <property name="UploadingBufferableData" propertytype="System.Boolean" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <property name="PreAuthenticate" propertytype="System.Boolean" />
-        <property name="ConnectionGroupName" propertytype="System.String" />
-        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
-        <property name="Proxy" propertytype="System.Net.IWebProxy" />
-        <property name="SendChunked" propertytype="System.Boolean" />
-        <property name="ProtocolVersion" propertytype="System.Version" />
-        <property name="InternalVersion" propertytype="System.Version" />
-        <property name="ContentType" propertytype="System.String" />
-        <property name="MediaType" propertytype="System.String" />
-        <property name="TransferEncoding" propertytype="System.String" />
-        <property name="Connection" propertytype="System.String" />
-        <property name="Accept" propertytype="System.String" />
-        <property name="Referer" propertytype="System.String" />
-        <property name="UserAgent" propertytype="System.String" />
-        <property name="Expect" propertytype="System.String" />
-        <property name="IfModifiedSince" propertytype="System.DateTime" />
-        <property name="HaveResponse" propertytype="System.Boolean" />
-        <property name="HaveWritten" propertytype="System.Boolean" />
-        <property name="OnceFailed" propertytype="System.Boolean" />
-        <property name="WriteBuffer" propertytype="System.Byte[]" />
-        <property name="BufferHeaders" propertytype="System.Boolean" />
-        <property name="ConnectHostAndPort" propertytype="System.String" />
-        <property name="ShouldAddHostHeader" propertytype="System.Boolean" />
-        <method name="Abort" argnames="" returntype="System.Void" />
-        <method name="EndGetRequestStream(System.IAsyncResult)" argnames="asyncResult" returntype="System.IO.Stream" />
-        <method name="BeginGetRequestStream(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
-        <method name="EndGetResponse(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.WebResponse" />
-        <method name="BeginGetResponse(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
-        <method name="GetResponse" argnames="" returntype="System.Net.WebResponse" />
-        <method name="GetRequestStream" argnames="" returntype="System.IO.Stream" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="AddRange(System.Int32, System.Int32)" argnames="from, to" returntype="System.Void" />
-        <method name="AddRange(System.Int32)" argnames="range" returntype="System.Void" />
-        <method name="AddRange(System.String, System.Int32, System.Int32)" argnames="rangeSpecifier, from, to" returntype="System.Void" />
-        <method name="AddRange(System.String, System.Int32)" argnames="rangeSpecifier, range" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpVersion" namespace="System.Net">
-        <constructor name="HttpVersion" argnames="" />
-        <field name="Version10" />
-        <field name="Version11" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="HttpWebResponse" namespace="System.Net">
-        <constructor name="HttpWebResponse(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="ResponseStream" propertytype="System.Net.ConnectStream" />
-        <property name="Cookies" propertytype="System.Net.CookieCollection" />
-        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
-        <property name="ContentLength" propertytype="System.Int64" />
-        <property name="ContentEncoding" propertytype="System.String" />
-        <property name="ContentType" propertytype="System.String" />
-        <property name="CharacterSet" propertytype="System.String" />
-        <property name="Server" propertytype="System.String" />
-        <property name="LastModified" propertytype="System.DateTime" />
-        <property name="StatusCode" propertytype="System.Net.HttpStatusCode" />
-        <property name="StatusDescription" propertytype="System.String" />
-        <property name="ProtocolVersion" propertytype="System.Version" />
-        <property name="KeepAlive" propertytype="System.Boolean" />
-        <property name="ResponseUri" propertytype="System.Uri" />
-        <property name="Method" propertytype="System.String" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="GetResponseStream" argnames="" returntype="System.IO.Stream" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetResponseHeader(System.String)" argnames="headerName" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IPAddress" namespace="System.Net">
-        <constructor name="IPAddress(System.Int64)" argnames="newAddress" />
-        <field name="Any" />
-        <field name="Loopback" />
-        <field name="Broadcast" />
-        <field name="None" />
-        <property name="Address" propertytype="System.Int64" />
-        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
-        <property name="IsBroadcast" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="ipString" returntype="System.Net.IPAddress" />
-        <method name="HostToNetworkOrder(System.Int64)" argnames="host" returntype="System.Int64" />
-        <method name="HostToNetworkOrder(System.Int32)" argnames="host" returntype="System.Int32" />
-        <method name="HostToNetworkOrder(System.Int16)" argnames="host" returntype="System.Int16" />
-        <method name="NetworkToHostOrder(System.Int64)" argnames="network" returntype="System.Int64" />
-        <method name="NetworkToHostOrder(System.Int32)" argnames="network" returntype="System.Int32" />
-        <method name="NetworkToHostOrder(System.Int16)" argnames="network" returntype="System.Int16" />
-        <method name="IsLoopback(System.Net.IPAddress)" argnames="address" returntype="System.Boolean" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IPEndPoint" namespace="System.Net">
-        <constructor name="IPEndPoint(System.Int64, System.Int32)" argnames="address, port" />
-        <constructor name="IPEndPoint(System.Net.IPAddress, System.Int32)" argnames="address, port" />
-        <field name="MinPort" />
-        <field name="MaxPort" />
-        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
-        <property name="Address" propertytype="System.Net.IPAddress" />
-        <property name="Port" propertytype="System.Int32" />
-        <method name="Create(System.Net.SocketAddress)" argnames="socketAddress" returntype="System.Net.EndPoint" />
-        <method name="Serialize" argnames="" returntype="System.Net.SocketAddress" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IPHostEntry" namespace="System.Net">
-        <constructor name="IPHostEntry" argnames="" />
-        <property name="HostName" propertytype="System.String" />
-        <property name="Aliases" propertytype="System.String[]" />
-        <property name="AddressList" propertytype="System.Net.IPAddress[]" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ProtocolViolationException" namespace="System.Net">
-        <constructor name="ProtocolViolationException" argnames="" />
-        <constructor name="ProtocolViolationException(System.String)" argnames="message" />
-        <constructor name="ProtocolViolationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServicePoint" namespace="System.Net">
-        <property name="Hostname" propertytype="System.String" />
-        <property name="Address" propertytype="System.Uri" />
-        <property name="MaxIdleTime" propertytype="System.Int32" />
-        <property name="IdleSince" propertytype="System.DateTime" />
-        <property name="ExpiresAt" propertytype="System.DateTime" />
-        <property name="ProtocolVersion" propertytype="System.Version" />
-        <property name="ConnectionName" propertytype="System.String" />
-        <property name="ConnectionMode" propertytype="System.Net.ConnectionModes" />
-        <property name="ConnectionLimit" propertytype="System.Int32" />
-        <property name="CurrentConnections" propertytype="System.Int32" />
-        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <property name="ClientCertificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <property name="SupportsPipelining" propertytype="System.Boolean" />
-        <property name="Understands100Continue" propertytype="System.Boolean" />
-        <property name="InternalVersion" propertytype="System.Version" />
-        <property name="InternalProxyServicePoint" propertytype="System.Boolean" />
-        <property name="InternalConnectionLimit" propertytype="System.Int32" />
-        <property name="InternalClientCertificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <property name="UserDefinedLimit" propertytype="System.Boolean" />
-        <property name="InternalSupportsPipelining" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ServicePointManager" namespace="System.Net">
-        <field name="DefaultNonPersistentConnectionLimit" />
-        <field name="DefaultPersistentConnectionLimit" />
-        <property name="InternalConnectionLimit" propertytype="System.Int32" />
-        <property name="ConfigTable" propertytype="System.Collections.Hashtable" />
-        <property name="MaxServicePoints" propertytype="System.Int32" />
-        <property name="DefaultConnectionLimit" propertytype="System.Int32" />
-        <property name="MaxServicePointIdleTime" propertytype="System.Int32" />
-        <property name="CertificatePolicy" propertytype="System.Net.ICertificatePolicy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="FindServicePoint(System.Uri)" argnames="address" returntype="System.Net.ServicePoint" />
-        <method name="FindServicePoint(System.String, System.Net.IWebProxy)" argnames="uriString, proxy" returntype="System.Net.ServicePoint" />
-        <method name="FindServicePoint(System.Uri, System.Net.IWebProxy)" argnames="address, proxy" returntype="System.Net.ServicePoint" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SocketAddress" namespace="System.Net">
-        <constructor name="SocketAddress(System.Net.Sockets.AddressFamily)" argnames="family" />
-        <constructor name="SocketAddress(System.Net.Sockets.AddressFamily, System.Int32)" argnames="family, size" />
-        <property name="Family" propertytype="System.Net.Sockets.AddressFamily" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="Item" propertytype="System.Byte" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebClient" namespace="System.Net">
-        <constructor name="WebClient" argnames="" />
-        <property name="BaseAddress" propertytype="System.String" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
-        <property name="QueryString" propertytype="System.Collections.Specialized.NameValueCollection" />
-        <property name="ResponseHeaders" propertytype="System.Net.WebHeaderCollection" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="DownloadData(System.String)" argnames="address" returntype="System.Byte[]" />
-        <method name="DownloadFile(System.String, System.String)" argnames="address, fileName" returntype="System.Void" />
-        <method name="OpenRead(System.String)" argnames="address" returntype="System.IO.Stream" />
-        <method name="OpenWrite(System.String)" argnames="address" returntype="System.IO.Stream" />
-        <method name="OpenWrite(System.String, System.String)" argnames="address, method" returntype="System.IO.Stream" />
-        <method name="UploadData(System.String, System.Byte[])" argnames="address, data" returntype="System.Byte[]" />
-        <method name="UploadData(System.String, System.String, System.Byte[])" argnames="address, method, data" returntype="System.Byte[]" />
-        <method name="UploadFile(System.String, System.String)" argnames="address, fileName" returntype="System.Byte[]" />
-        <method name="UploadFile(System.String, System.String, System.String)" argnames="address, method, fileName" returntype="System.Byte[]" />
-        <method name="UploadValues(System.String, System.Collections.Specialized.NameValueCollection)" argnames="address, data" returntype="System.Byte[]" />
-        <method name="UploadValues(System.String, System.String, System.Collections.Specialized.NameValueCollection)" argnames="address, method, data" returntype="System.Byte[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="WebException" namespace="System.Net">
-        <constructor name="WebException" argnames="" />
-        <constructor name="WebException(System.String)" argnames="message" />
-        <constructor name="WebException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="WebException(System.String, System.Net.WebExceptionStatus)" argnames="message, status" />
-        <constructor name="WebException(System.String, System.Exception, System.Net.WebExceptionStatus, System.Net.WebResponse)" argnames="message, innerException, status, response" />
-        <constructor name="WebException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="Status" propertytype="System.Net.WebExceptionStatus" />
-        <property name="Response" propertytype="System.Net.WebResponse" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebHeaderCollection" namespace="System.Net">
-        <constructor name="WebHeaderCollection" argnames="" />
-        <constructor name="WebHeaderCollection(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="Item" inherited="System.Collections.Specialized.NameValueCollection" propertytype="System.String" />
-        <property name="Item" inherited="System.Collections.Specialized.NameValueCollection" propertytype="System.String" />
-        <property name="AllKeys" inherited="System.Collections.Specialized.NameValueCollection" propertytype="System.String[]" />
-        <property name="IsReadOnly" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Boolean" />
-        <property name="Count" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Int32" />
-        <property name="Keys" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Collections.Specialized.NameObjectCollectionBase+KeysCollection" />
-        <method name="GetKey(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String" />
-        <method name="GetValues(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String[]" />
-        <method name="Get(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String" />
-        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
-        <method name="Set(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="GetValues(System.String)" argnames="header" returntype="System.String[]" />
-        <method name="Get(System.String)" argnames="name" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String" />
-        <method name="Add(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="AddWithoutValidate(System.String, System.String)" argnames="headerName, headerValue" returntype="System.Void" />
-        <method name="Add(System.String)" argnames="header" returntype="System.Void" />
-        <method name="ToByteArray" argnames="" returntype="System.Byte[]" />
-        <method name="IsRestricted(System.String)" argnames="headerName" returntype="System.Boolean" />
-        <method name="InvalidateCachedArrays" argnames="" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
-        <method name="Add(System.Collections.Specialized.NameValueCollection)" argnames="c" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
-        <method name="HasKeys" argnames="" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Boolean" />
-        <method name="BaseHasKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Boolean" />
-        <method name="BaseAdd(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseRemove(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseRemoveAt(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseClear" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseGet(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
-        <method name="BaseSet(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseGet(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
-        <method name="BaseGetKey(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String" />
-        <method name="BaseSet(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
-        <method name="BaseGetAllKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String[]" />
-        <method name="BaseGetAllValues" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
-        <method name="BaseGetAllValues(System.Type)" argnames="type" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebProxy" namespace="System.Net">
-        <constructor name="WebProxy" argnames="" />
-        <constructor name="WebProxy(System.Uri)" argnames="Address" />
-        <constructor name="WebProxy(System.Uri, System.Boolean)" argnames="Address, BypassOnLocal" />
-        <constructor name="WebProxy(System.Uri, System.Boolean, System.String[])" argnames="Address, BypassOnLocal, BypassList" />
-        <constructor name="WebProxy(System.Uri, System.Boolean, System.String[], System.Net.ICredentials)" argnames="Address, BypassOnLocal, BypassList, Credentials" />
-        <constructor name="WebProxy(System.String, System.Int32)" argnames="Host, Port" />
-        <constructor name="WebProxy(System.String)" argnames="Address" />
-        <constructor name="WebProxy(System.String, System.Boolean)" argnames="Address, BypassOnLocal" />
-        <constructor name="WebProxy(System.String, System.Boolean, System.String[])" argnames="Address, BypassOnLocal, BypassList" />
-        <constructor name="WebProxy(System.String, System.Boolean, System.String[], System.Net.ICredentials)" argnames="Address, BypassOnLocal, BypassList, Credentials" />
-        <constructor name="WebProxy(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="Address" propertytype="System.Uri" />
-        <property name="BypassProxyOnLocal" propertytype="System.Boolean" />
-        <property name="BypassList" propertytype="System.String[]" />
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <property name="BypassArrayList" propertytype="System.Collections.ArrayList" />
-        <property name="LocalHostAddresses" propertytype="System.Collections.Hashtable" />
-        <method name="IsBypassed(System.Uri)" argnames="host" returntype="System.Boolean" />
-        <method name="GetProxy(System.Uri)" argnames="destination" returntype="System.Uri" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetDefaultProxy" argnames="" returntype="System.Net.WebProxy" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DnsPermissionAttribute" namespace="System.Net">
-        <constructor name="DnsPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DnsPermission" namespace="System.Net">
-        <constructor name="DnsPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
-        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SocketPermissionAttribute" namespace="System.Net">
-        <constructor name="SocketPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Access" propertytype="System.String" />
-        <property name="Host" propertytype="System.String" />
-        <property name="Transport" propertytype="System.String" />
-        <property name="Port" propertytype="System.String" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SocketPermission" namespace="System.Net">
-        <constructor name="SocketPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="SocketPermission(System.Net.NetworkAccess, System.Net.TransportType, System.String, System.Int32)" argnames="access, transport, hostName, portNumber" />
-        <field name="AllPorts" />
-        <property name="ConnectList" propertytype="System.Collections.IEnumerator" />
-        <property name="AcceptList" propertytype="System.Collections.IEnumerator" />
-        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
-        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="AddPermission(System.Net.NetworkAccess, System.Net.TransportType, System.String, System.Int32)" argnames="access, transport, hostName, portNumber" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="EndpointPermission" namespace="System.Net">
-        <property name="Hostname" propertytype="System.String" />
-        <property name="Transport" propertytype="System.Net.TransportType" />
-        <property name="Port" propertytype="System.Int32" />
-        <property name="IsDns" propertytype="System.Boolean" />
-        <property name="IsValidWildcard" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString" argnames="" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebPermissionAttribute" namespace="System.Net">
-        <constructor name="WebPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Connect" propertytype="System.String" />
-        <property name="Accept" propertytype="System.String" />
-        <property name="ConnectPattern" propertytype="System.String" />
-        <property name="AcceptPattern" propertytype="System.String" />
-        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="WebPermission" namespace="System.Net">
-        <constructor name="WebPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="WebPermission" argnames="" />
-        <constructor name="WebPermission(System.Net.NetworkAccess, System.Text.RegularExpressions.Regex)" argnames="access, uriRegex" />
-        <constructor name="WebPermission(System.Net.NetworkAccess, System.String)" argnames="access, uriString" />
-        <property name="ConnectList" propertytype="System.Collections.IEnumerator" />
-        <property name="AcceptList" propertytype="System.Collections.IEnumerator" />
-        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
-        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
-        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
-        <method name="AddPermission(System.Net.NetworkAccess, System.String)" argnames="access, uriString" returntype="System.Void" />
-        <method name="AddPermission(System.Net.NetworkAccess, System.Text.RegularExpressions.Regex)" argnames="access, uriRegex" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="AuthenticationManager" namespace="System.Net">
-        <property name="ModuleList" propertytype="System.Collections.ArrayList" />
-        <property name="RegisteredModules" propertytype="System.Collections.IEnumerator" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Authenticate(System.String, System.Net.WebRequest, System.Net.ICredentials)" argnames="challenge, request, credentials" returntype="System.Net.Authorization" />
-        <method name="PreAuthenticate(System.Net.WebRequest, System.Net.ICredentials)" argnames="request, credentials" returntype="System.Net.Authorization" />
-        <method name="Register(System.Net.IAuthenticationModule)" argnames="authenticationModule" returntype="System.Void" />
-        <method name="Unregister(System.Net.IAuthenticationModule)" argnames="authenticationModule" returntype="System.Void" />
-        <method name="Unregister(System.String)" argnames="authenticationScheme" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="GlobalProxySelection" namespace="System.Net">
-        <constructor name="GlobalProxySelection" argnames="" />
-        <property name="Select" propertytype="System.Net.IWebProxy" />
-        <property name="SelectInternal" propertytype="System.Net.IWebProxy" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetEmptyWebProxy" argnames="" returntype="System.Net.IWebProxy" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IAuthenticationModule" namespace="System.Net">
-        <property name="CanPreAuthenticate" propertytype="System.Boolean" />
-        <property name="AuthenticationType" propertytype="System.String" />
-        <method name="PreAuthenticate(System.Net.WebRequest, System.Net.ICredentials)" argnames="request, credentials" returntype="System.Net.Authorization" />
-        <method name="Authenticate(System.String, System.Net.WebRequest, System.Net.ICredentials)" argnames="challenge, request, credentials" returntype="System.Net.Authorization" />
-    </interface>
-    <interface name="IWebProxy" namespace="System.Net">
-        <property name="Credentials" propertytype="System.Net.ICredentials" />
-        <method name="IsBypassed(System.Uri)" argnames="host" returntype="System.Boolean" />
-        <method name="GetProxy(System.Uri)" argnames="destination" returntype="System.Uri" />
-    </interface>
-    <interface name="ICredentials" namespace="System.Net">
-        <method name="GetCredential(System.Uri, System.String)" argnames="uri, authType" returntype="System.Net.NetworkCredential" />
-    </interface>
-    <interface name="IWebRequestCreate" namespace="System.Net">
-        <method name="Create(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
-    </interface>
-    <interface name="ICertificatePolicy" namespace="System.Net">
-        <method name="CheckValidationResult(System.Net.ServicePoint, System.Security.Cryptography.X509Certificates.X509Certificate, System.Net.WebRequest, System.Int32)" argnames="srvPoint, certificate, request, certificateProblem" returntype="System.Boolean" />
-    </interface>
-    <delegate name="HttpContinueDelegate" namespace="System.Net">
-        <constructor name="HttpContinueDelegate(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Int32, System.Net.WebHeaderCollection, System.AsyncCallback, System.Object)" argnames="StatusCode, httpHeaders, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Int32, System.Net.WebHeaderCollection)" argnames="StatusCode, httpHeaders" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="HttpStatusCode" namespace="System.Net">
-        <field name="Continue" />
-        <field name="SwitchingProtocols" />
-        <field name="OK" />
-        <field name="Created" />
-        <field name="Accepted" />
-        <field name="NonAuthoritativeInformation" />
-        <field name="NoContent" />
-        <field name="ResetContent" />
-        <field name="PartialContent" />
-        <field name="MultipleChoices" />
-        <field name="Ambiguous" />
-        <field name="MovedPermanently" />
-        <field name="Moved" />
-        <field name="Found" />
-        <field name="Redirect" />
-        <field name="SeeOther" />
-        <field name="RedirectMethod" />
-        <field name="NotModified" />
-        <field name="UseProxy" />
-        <field name="Unused" />
-        <field name="TemporaryRedirect" />
-        <field name="RedirectKeepVerb" />
-        <field name="BadRequest" />
-        <field name="Unauthorized" />
-        <field name="PaymentRequired" />
-        <field name="Forbidden" />
-        <field name="NotFound" />
-        <field name="MethodNotAllowed" />
-        <field name="NotAcceptable" />
-        <field name="ProxyAuthenticationRequired" />
-        <field name="RequestTimeout" />
-        <field name="Conflict" />
-        <field name="Gone" />
-        <field name="LengthRequired" />
-        <field name="PreconditionFailed" />
-        <field name="RequestEntityTooLarge" />
-        <field name="RequestUriTooLong" />
-        <field name="UnsupportedMediaType" />
-        <field name="RequestedRangeNotSatisfiable" />
-        <field name="ExpectationFailed" />
-        <field name="InternalServerError" />
-        <field name="NotImplemented" />
-        <field name="BadGateway" />
-        <field name="ServiceUnavailable" />
-        <field name="GatewayTimeout" />
-        <field name="HttpVersionNotSupported" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Flags" namespace="System.Net">
-        <field name="NoSystemMapper" />
-        <field name="NoNameCheck" />
-        <field name="ValidateManual" />
-        <field name="NoDefaultCred" />
-        <field name="ValidateAuto" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="Protocols" namespace="System.Net">
-        <field name="SP_PROT_SSL2_CLIENT" />
-        <field name="SP_PROT_SSL3_CLIENT" />
-        <field name="SP_PROT_TLS1_CLIENT" />
-        <field name="SP_PROT_SSL3TLS1_CLIENTS" />
-        <field name="SP_PROT_UNI_CLIENT" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="NetworkAccess" namespace="System.Net">
-        <field name="Accept" />
-        <field name="Connect" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="TransportType" namespace="System.Net">
-        <field name="Udp" />
-        <field name="Connectionless" />
-        <field name="Tcp" />
-        <field name="ConnectionOriented" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="WebExceptionStatus" namespace="System.Net">
-        <field name="Success" />
-        <field name="NameResolutionFailure" />
-        <field name="ConnectFailure" />
-        <field name="ReceiveFailure" />
-        <field name="SendFailure" />
-        <field name="PipelineFailure" />
-        <field name="RequestCanceled" />
-        <field name="ProtocolError" />
-        <field name="ConnectionClosed" />
-        <field name="TrustFailure" />
-        <field name="SecureChannelFailure" />
-        <field name="ServerProtocolViolation" />
-        <field name="KeepAliveFailure" />
-        <field name="Pending" />
-        <field name="Timeout" />
-        <field name="ProxyNameResolutionFailure" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="NetworkStream" namespace="System.Net.Sockets">
-        <constructor name="NetworkStream(System.Net.Sockets.Socket)" argnames="socket" />
-        <constructor name="NetworkStream(System.Net.Sockets.Socket, System.Boolean)" argnames="socket, ownsSocket" />
-        <constructor name="NetworkStream(System.Net.Sockets.Socket, System.IO.FileAccess)" argnames="socket, access" />
-        <constructor name="NetworkStream(System.Net.Sockets.Socket, System.IO.FileAccess, System.Boolean)" argnames="socket, access, ownsSocket" />
-        <property name="Socket" propertytype="System.Net.Sockets.Socket" />
-        <property name="StreamSocket" propertytype="System.Net.Sockets.Socket" />
-        <property name="Readable" propertytype="System.Boolean" />
-        <property name="Writeable" propertytype="System.Boolean" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanSeek" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="DataAvailable" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="Position" propertytype="System.Int64" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="WriteByte(System.Byte)" argnames="value" inherited="System.IO.Stream" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, size" returntype="System.Void" />
-        <method name="ReadByte" argnames="" inherited="System.IO.Stream" returntype="System.Int32" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, size" returntype="System.Int32" />
-        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
-        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, callback, state" returntype="System.IAsyncResult" />
-        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
-        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, callback, state" returntype="System.IAsyncResult" />
-        <method name="CreateWaitHandle" argnames="" inherited="System.IO.Stream" returntype="System.Threading.WaitHandle" />
-        <method name="Flush" argnames="" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SocketException" namespace="System.Net.Sockets">
-        <constructor name="SocketException" argnames="" />
-        <constructor name="SocketException(System.Int32)" argnames="errorCode" />
-        <constructor name="SocketException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
-        <property name="ErrorCode" propertytype="System.Int32" />
-        <property name="NativeErrorCode" inherited="System.ComponentModel.Win32Exception" propertytype="System.Int32" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.ComponentModel.Win32Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="LingerOption" namespace="System.Net.Sockets">
-        <constructor name="LingerOption(System.Boolean, System.Int32)" argnames="enable, seconds" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="LingerTime" propertytype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="MulticastOption" namespace="System.Net.Sockets">
-        <constructor name="MulticastOption(System.Net.IPAddress, System.Net.IPAddress)" argnames="group, mcint" />
-        <constructor name="MulticastOption(System.Net.IPAddress)" argnames="group" />
-        <property name="Group" propertytype="System.Net.IPAddress" />
-        <property name="LocalAddress" propertytype="System.Net.IPAddress" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TcpClient" namespace="System.Net.Sockets">
-        <constructor name="TcpClient(System.Net.IPEndPoint)" argnames="localEP" />
-        <constructor name="TcpClient" argnames="" />
-        <constructor name="TcpClient(System.String, System.Int32)" argnames="hostname, port" />
-        <property name="Client" propertytype="System.Net.Sockets.Socket" />
-        <property name="Active" propertytype="System.Boolean" />
-        <property name="ReceiveBufferSize" propertytype="System.Int32" />
-        <property name="SendBufferSize" propertytype="System.Int32" />
-        <property name="ReceiveTimeout" propertytype="System.Int32" />
-        <property name="SendTimeout" propertytype="System.Int32" />
-        <property name="LingerState" propertytype="System.Net.Sockets.LingerOption" />
-        <property name="NoDelay" propertytype="System.Boolean" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Connect(System.String, System.Int32)" argnames="hostname, port" returntype="System.Void" />
-        <method name="Connect(System.Net.IPAddress, System.Int32)" argnames="address, port" returntype="System.Void" />
-        <method name="Connect(System.Net.IPEndPoint)" argnames="remoteEP" returntype="System.Void" />
-        <method name="GetStream" argnames="" returntype="System.Net.Sockets.NetworkStream" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="TcpListener" namespace="System.Net.Sockets">
-        <constructor name="TcpListener(System.Net.IPEndPoint)" argnames="localEP" />
-        <constructor name="TcpListener(System.Net.IPAddress, System.Int32)" argnames="localaddr, port" />
-        <constructor name="TcpListener(System.Int32)" argnames="port" />
-        <property name="Server" propertytype="System.Net.Sockets.Socket" />
-        <property name="Active" propertytype="System.Boolean" />
-        <property name="LocalEndpoint" propertytype="System.Net.EndPoint" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Start" argnames="" returntype="System.Void" />
-        <method name="Stop" argnames="" returntype="System.Void" />
-        <method name="Pending" argnames="" returntype="System.Boolean" />
-        <method name="AcceptSocket" argnames="" returntype="System.Net.Sockets.Socket" />
-        <method name="AcceptTcpClient" argnames="" returntype="System.Net.Sockets.TcpClient" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="UdpClient" namespace="System.Net.Sockets">
-        <constructor name="UdpClient" argnames="" />
-        <constructor name="UdpClient(System.Int32)" argnames="port" />
-        <constructor name="UdpClient(System.Net.IPEndPoint)" argnames="localEP" />
-        <constructor name="UdpClient(System.String, System.Int32)" argnames="hostname, port" />
-        <property name="Client" propertytype="System.Net.Sockets.Socket" />
-        <property name="Active" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Connect(System.String, System.Int32)" argnames="hostname, port" returntype="System.Void" />
-        <method name="Connect(System.Net.IPAddress, System.Int32)" argnames="addr, port" returntype="System.Void" />
-        <method name="Connect(System.Net.IPEndPoint)" argnames="endPoint" returntype="System.Void" />
-        <method name="Send(System.Byte[], System.Int32, System.Net.IPEndPoint)" argnames="dgram, bytes, endPoint" returntype="System.Int32" />
-        <method name="Send(System.Byte[], System.Int32, System.String, System.Int32)" argnames="dgram, bytes, hostname, port" returntype="System.Int32" />
-        <method name="Send(System.Byte[], System.Int32)" argnames="dgram, bytes" returntype="System.Int32" />
-        <method name="Receive(System.Net.IPEndPoint&amp;)" argnames="remoteEP" returntype="System.Byte[]" />
-        <method name="JoinMulticastGroup(System.Net.IPAddress)" argnames="multicastAddr" returntype="System.Void" />
-        <method name="JoinMulticastGroup(System.Net.IPAddress, System.Int32)" argnames="multicastAddr, timeToLive" returntype="System.Void" />
-        <method name="DropMulticastGroup(System.Net.IPAddress)" argnames="multicastAddr" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Socket" namespace="System.Net.Sockets">
-        <constructor name="Socket(System.Net.Sockets.AddressFamily, System.Net.Sockets.SocketType, System.Net.Sockets.ProtocolType)" argnames="addressFamily, socketType, protocolType" />
-        <property name="Connected" propertytype="System.Boolean" />
-        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
-        <property name="SocketType" propertytype="System.Net.Sockets.SocketType" />
-        <property name="ProtocolType" propertytype="System.Net.Sockets.ProtocolType" />
-        <property name="AcceptQueue" propertytype="System.Collections.ArrayList" />
-        <property name="CleanedUp" propertytype="System.Boolean" />
-        <property name="Available" propertytype="System.Int32" />
-        <property name="LocalEndPoint" propertytype="System.Net.EndPoint" />
-        <property name="RemoteEndPoint" propertytype="System.Net.EndPoint" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <property name="Blocking" propertytype="System.Boolean" />
-        <property name="Transport" propertytype="System.Net.TransportType" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize" argnames="" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Bind(System.Net.EndPoint)" argnames="localEP" returntype="System.Void" />
-        <method name="Connect(System.Net.EndPoint)" argnames="remoteEP" returntype="System.Void" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Shutdown(System.Net.Sockets.SocketShutdown)" argnames="how" returntype="System.Void" />
-        <method name="Listen(System.Int32)" argnames="backlog" returntype="System.Void" />
-        <method name="Accept" argnames="" returntype="System.Net.Sockets.Socket" />
-        <method name="Send(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, size, socketFlags" returntype="System.Int32" />
-        <method name="Send(System.Byte[], System.Net.Sockets.SocketFlags)" argnames="buffer, socketFlags" returntype="System.Int32" />
-        <method name="Send(System.Byte[])" argnames="buffer" returntype="System.Int32" />
-        <method name="Send(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, offset, size, socketFlags" returntype="System.Int32" />
-        <method name="SendTo(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint)" argnames="buffer, offset, size, socketFlags, remoteEP" returntype="System.Int32" />
-        <method name="SendTo(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint)" argnames="buffer, size, socketFlags, remoteEP" returntype="System.Int32" />
-        <method name="SendTo(System.Byte[], System.Net.Sockets.SocketFlags, System.Net.EndPoint)" argnames="buffer, socketFlags, remoteEP" returntype="System.Int32" />
-        <method name="SendTo(System.Byte[], System.Net.EndPoint)" argnames="buffer, remoteEP" returntype="System.Int32" />
-        <method name="Receive(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, size, socketFlags" returntype="System.Int32" />
-        <method name="Receive(System.Byte[], System.Net.Sockets.SocketFlags)" argnames="buffer, socketFlags" returntype="System.Int32" />
-        <method name="Receive(System.Byte[])" argnames="buffer" returntype="System.Int32" />
-        <method name="Receive(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, offset, size, socketFlags" returntype="System.Int32" />
-        <method name="ReceiveFrom(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;)" argnames="buffer, offset, size, socketFlags, remoteEP" returntype="System.Int32" />
-        <method name="ReceiveFrom(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;)" argnames="buffer, size, socketFlags, remoteEP" returntype="System.Int32" />
-        <method name="ReceiveFrom(System.Byte[], System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;)" argnames="buffer, socketFlags, remoteEP" returntype="System.Int32" />
-        <method name="ReceiveFrom(System.Byte[], System.Net.EndPoint&amp;)" argnames="buffer, remoteEP" returntype="System.Int32" />
-        <method name="IOControl(System.Int32, System.Byte[], System.Byte[])" argnames="ioControlCode, optionInValue, optionOutValue" returntype="System.Int32" />
-        <method name="SetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Int32)" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
-        <method name="SetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Byte[])" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
-        <method name="SetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Object)" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
-        <method name="GetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName)" argnames="optionLevel, optionName" returntype="System.Object" />
-        <method name="GetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Byte[])" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
-        <method name="GetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Int32)" argnames="optionLevel, optionName, optionLength" returntype="System.Byte[]" />
-        <method name="Poll(System.Int32, System.Net.Sockets.SelectMode)" argnames="microSeconds, mode" returntype="System.Boolean" />
-        <method name="Select(System.Collections.IList, System.Collections.IList, System.Collections.IList, System.Int32)" argnames="checkRead, checkWrite, checkError, microSeconds" returntype="System.Void" />
-        <method name="BeginConnect(System.Net.EndPoint, System.AsyncCallback, System.Object)" argnames="remoteEP, callback, state" returntype="System.IAsyncResult" />
-        <method name="EndConnect(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
-        <method name="BeginSend(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, callback, state" returntype="System.IAsyncResult" />
-        <method name="EndSend(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
-        <method name="BeginSendTo(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, remoteEP, callback, state" returntype="System.IAsyncResult" />
-        <method name="EndSendTo(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
-        <method name="BeginReceive(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, callback, state" returntype="System.IAsyncResult" />
-        <method name="EndReceive(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
-        <method name="BeginReceiveFrom(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, remoteEP, callback, state" returntype="System.IAsyncResult" />
-        <method name="EndReceiveFrom(System.IAsyncResult, System.Net.EndPoint&amp;)" argnames="asyncResult, endPoint" returntype="System.Int32" />
-        <method name="BeginAccept(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
-        <method name="EndAccept(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.Sockets.Socket" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <enum name="AddressFamily" namespace="System.Net.Sockets">
-        <field name="Unknown" />
-        <field name="Unspecified" />
-        <field name="Unix" />
-        <field name="InterNetwork" />
-        <field name="ImpLink" />
-        <field name="Pup" />
-        <field name="Chaos" />
-        <field name="NS" />
-        <field name="Ipx" />
-        <field name="Iso" />
-        <field name="Osi" />
-        <field name="Ecma" />
-        <field name="DataKit" />
-        <field name="Ccitt" />
-        <field name="Sna" />
-        <field name="DecNet" />
-        <field name="DataLink" />
-        <field name="Lat" />
-        <field name="HyperChannel" />
-        <field name="AppleTalk" />
-        <field name="NetBios" />
-        <field name="VoiceView" />
-        <field name="FireFox" />
-        <field name="Banyan" />
-        <field name="Atm" />
-        <field name="InterNetworkV6" />
-        <field name="Cluster" />
-        <field name="Ieee12844" />
-        <field name="Irda" />
-        <field name="NetworkDesigners" />
-        <field name="Max" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ProtocolFamily" namespace="System.Net.Sockets">
-        <field name="Unknown" />
-        <field name="Unspecified" />
-        <field name="Unix" />
-        <field name="InterNetwork" />
-        <field name="ImpLink" />
-        <field name="Pup" />
-        <field name="Chaos" />
-        <field name="NS" />
-        <field name="Ipx" />
-        <field name="Iso" />
-        <field name="Osi" />
-        <field name="Ecma" />
-        <field name="DataKit" />
-        <field name="Ccitt" />
-        <field name="Sna" />
-        <field name="DecNet" />
-        <field name="DataLink" />
-        <field name="Lat" />
-        <field name="HyperChannel" />
-        <field name="AppleTalk" />
-        <field name="NetBios" />
-        <field name="VoiceView" />
-        <field name="FireFox" />
-        <field name="Banyan" />
-        <field name="Atm" />
-        <field name="InterNetworkV6" />
-        <field name="Cluster" />
-        <field name="Ieee12844" />
-        <field name="Irda" />
-        <field name="NetworkDesigners" />
-        <field name="Max" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="ProtocolType" namespace="System.Net.Sockets">
-        <field name="IP" />
-        <field name="Icmp" />
-        <field name="Igmp" />
-        <field name="Ggp" />
-        <field name="Tcp" />
-        <field name="Pup" />
-        <field name="Udp" />
-        <field name="Idp" />
-        <field name="ND" />
-        <field name="Raw" />
-        <field name="Unspecified" />
-        <field name="Ipx" />
-        <field name="Spx" />
-        <field name="SpxII" />
-        <field name="Unknown" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SelectMode" namespace="System.Net.Sockets">
-        <field name="SelectRead" />
-        <field name="SelectWrite" />
-        <field name="SelectError" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SocketFlags" namespace="System.Net.Sockets">
-        <field name="None" />
-        <field name="OutOfBand" />
-        <field name="Peek" />
-        <field name="DontRoute" />
-        <field name="MaxIOVectorLength" />
-        <field name="Partial" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SocketOptionLevel" namespace="System.Net.Sockets">
-        <field name="Socket" />
-        <field name="IP" />
-        <field name="Tcp" />
-        <field name="Udp" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SocketOptionName" namespace="System.Net.Sockets">
-        <field name="Debug" />
-        <field name="AcceptConnection" />
-        <field name="ReuseAddress" />
-        <field name="KeepAlive" />
-        <field name="DontRoute" />
-        <field name="Broadcast" />
-        <field name="UseLoopback" />
-        <field name="Linger" />
-        <field name="OutOfBandInline" />
-        <field name="DontLinger" />
-        <field name="ExclusiveAddressUse" />
-        <field name="SendBuffer" />
-        <field name="ReceiveBuffer" />
-        <field name="SendLowWater" />
-        <field name="ReceiveLowWater" />
-        <field name="SendTimeout" />
-        <field name="ReceiveTimeout" />
-        <field name="Error" />
-        <field name="Type" />
-        <field name="MaxConnections" />
-        <field name="IPOptions" />
-        <field name="HeaderIncluded" />
-        <field name="TypeOfService" />
-        <field name="IpTimeToLive" />
-        <field name="MulticastInterface" />
-        <field name="MulticastTimeToLive" />
-        <field name="MulticastLoopback" />
-        <field name="AddMembership" />
-        <field name="DropMembership" />
-        <field name="DontFragment" />
-        <field name="AddSourceMembership" />
-        <field name="DropSourceMembership" />
-        <field name="BlockSource" />
-        <field name="UnblockSource" />
-        <field name="PacketInformation" />
-        <field name="NoDelay" />
-        <field name="BsdUrgent" />
-        <field name="Expedited" />
-        <field name="NoChecksum" />
-        <field name="ChecksumCoverage" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SocketShutdown" namespace="System.Net.Sockets">
-        <field name="Receive" />
-        <field name="Send" />
-        <field name="Both" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="SocketType" namespace="System.Net.Sockets">
-        <field name="Stream" />
-        <field name="Dgram" />
-        <field name="Raw" />
-        <field name="Rdm" />
-        <field name="Seqpacket" />
-        <field name="Unknown" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="X509CertificateCollection" namespace="System.Security.Cryptography.X509Certificates">
-        <class name="X509CertificateEnumerator" namespace="System.Security.Cryptography.X509Certificates">
-            <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="mappings" />
-            <property name="Current" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-            <method name="MoveNext" argnames="" returntype="System.Boolean" />
-            <method name="Reset" argnames="" returntype="System.Void" />
-            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        </class>
-        <constructor name="X509CertificateEnumerator" argnames="" />
-        <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="value" />
-        <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509Certificate[])" argnames="value" />
-        <property name="Item" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
-        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
-        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
-        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="Add(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Int32" />
-        <method name="AddRange(System.Security.Cryptography.X509Certificates.X509Certificate[])" argnames="value" returntype="System.Void" />
-        <method name="AddRange(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="value" returntype="System.Void" />
-        <method name="Contains(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Boolean" />
-        <method name="CopyTo(System.Security.Cryptography.X509Certificates.X509Certificate[], System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="IndexOf(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Int32" />
-        <method name="Insert(System.Int32, System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="index, value" returntype="System.Void" />
-        <method name="GetEnumerator" argnames="" returntype="System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator" />
-        <method name="Remove(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="X509CertificateEnumerator" namespace="System.Security.Cryptography.X509Certificates">
-        <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="mappings" />
-        <property name="Current" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="MoveNext" argnames="" returntype="System.Boolean" />
-        <method name="Reset" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ConfigurationException" namespace="System.Configuration">
-        <constructor name="ConfigurationException" argnames="" />
-        <constructor name="ConfigurationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="ConfigurationException(System.String)" argnames="message" />
-        <constructor name="ConfigurationException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="ConfigurationException(System.String, System.Xml.XmlNode)" argnames="message, node" />
-        <constructor name="ConfigurationException(System.String, System.Exception, System.Xml.XmlNode)" argnames="message, inner, node" />
-        <constructor name="ConfigurationException(System.String, System.String, System.Int32)" argnames="message, filename, line" />
-        <constructor name="ConfigurationException(System.String, System.Exception, System.String, System.Int32)" argnames="message, inner, filename, line" />
-        <property name="Message" propertytype="System.String" />
-        <property name="BareMessage" propertytype="System.String" />
-        <property name="Filename" propertytype="System.String" />
-        <property name="Line" propertytype="System.Int32" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetXmlNodeLineNumber(System.Xml.XmlNode)" argnames="node" returntype="System.Int32" />
-        <method name="GetXmlNodeFilename(System.Xml.XmlNode)" argnames="node" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ConfigurationSettings" namespace="System.Configuration">
-        <property name="SetConfigurationSystemInProgress" propertytype="System.Boolean" />
-        <property name="AppSettings" propertytype="System.Collections.Specialized.NameValueCollection" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetConfig(System.String)" argnames="sectionName" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="DictionarySectionHandler" namespace="System.Configuration">
-        <constructor name="DictionarySectionHandler" argnames="" />
-        <property name="KeyAttributeName" propertytype="System.String" />
-        <property name="ValueAttributeName" propertytype="System.String" />
-        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, context, section" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IgnoreSectionHandler" namespace="System.Configuration">
-        <constructor name="IgnoreSectionHandler" argnames="" />
-        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NameValueFileSectionHandler" namespace="System.Configuration">
-        <constructor name="NameValueFileSectionHandler" argnames="" />
-        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="NameValueSectionHandler" namespace="System.Configuration">
-        <constructor name="NameValueSectionHandler" argnames="" />
-        <property name="KeyAttributeName" propertytype="System.String" />
-        <property name="ValueAttributeName" propertytype="System.String" />
-        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, context, section" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SingleTagSectionHandler" namespace="System.Configuration">
-        <constructor name="SingleTagSectionHandler" argnames="" />
-        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, context, section" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="ConfigXmlDocument" namespace="System.Configuration">
-        <constructor name="ConfigXmlDocument" argnames="" />
-        <property name="LineNumber" propertytype="System.Int32" />
-        <property name="Filename" propertytype="System.String" />
-        <property name="NodeType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNodeType" />
-        <property name="DocumentType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocumentType" />
-        <property name="Implementation" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlImplementation" />
-        <property name="Name" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="LocalName" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="DocumentElement" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlElement" />
-        <property name="OwnerDocument" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocument" />
-        <property name="XmlResolver" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlResolver" />
-        <property name="NameTable" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNameTable" />
-        <property name="PreserveWhitespace" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
-        <property name="IsReadOnly" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
-        <property name="InnerXml" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="BaseURI" inherited="System.Xml.XmlDocument" propertytype="System.String" />
-        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
-        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
-        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
-        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
-        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
-        <method name="Save(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Save(System.IO.TextWriter)" argnames="writer" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Save(System.IO.Stream)" argnames="outStream" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Save(System.String)" argnames="filename" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="LoadXml(System.String)" argnames="xml" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Load(System.Xml.XmlReader)" argnames="reader" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Load(System.IO.TextReader)" argnames="txtReader" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Load(System.IO.Stream)" argnames="inStream" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Load(System.String)" argnames="filename" returntype="System.Void" />
-        <method name="ReadNode(System.Xml.XmlReader)" argnames="reader" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String)" argnames="type, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.String, System.String, System.String)" argnames="nodeTypeString, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String, System.String)" argnames="type, prefix, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="CreateElement(System.String, System.String, System.String)" argnames="prefix, localName, namespaceUri" returntype="System.Xml.XmlElement" />
-        <method name="CreateAttribute(System.String, System.String, System.String)" argnames="prefix, localName, namespaceUri" returntype="System.Xml.XmlAttribute" />
-        <method name="ImportNode(System.Xml.XmlNode, System.Boolean)" argnames="node, deep" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="GetElementById(System.String)" argnames="elementId" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
-        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
-        <method name="GetElementsByTagName(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
-        <method name="CreateWhitespace(System.String)" argnames="data" returntype="System.Xml.XmlWhitespace" />
-        <method name="CreateSignificantWhitespace(System.String)" argnames="data" returntype="System.Xml.XmlSignificantWhitespace" />
-        <method name="CreateTextNode(System.String)" argnames="text" returntype="System.Xml.XmlText" />
-        <method name="CreateXmlDeclaration(System.String, System.String, System.String)" argnames="version, encoding, standalone" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDeclaration" />
-        <method name="CreateProcessingInstruction(System.String, System.String)" argnames="target, data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlProcessingInstruction" />
-        <method name="CreateEntityReference(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlEntityReference" />
-        <method name="CreateDocumentFragment" argnames="" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentFragment" />
-        <method name="CreateDocumentType(System.String, System.String, System.String, System.String)" argnames="name, publicId, systemId, internalSubset" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentType" />
-        <method name="CreateComment(System.String)" argnames="data" returntype="System.Xml.XmlComment" />
-        <method name="CreateCDataSection(System.String)" argnames="data" returntype="System.Xml.XmlCDataSection" />
-        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
-        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
-        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="xw" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
-        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
-        <method name="CloneNode(System.Boolean)" argnames="deep" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
-        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="LoadSingleElement(System.String, System.Xml.XmlTextReader)" argnames="filename, sourceReader" returntype="System.Void" />
-        <method name="CreateAttribute(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
-        <method name="CreateElement(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
-        <method name="CreateAttribute(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
-        <method name="CreateElement(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
-        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
-        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
-        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="NodeInserting" inherited="System.Xml.XmlDocument" />
-        <event name="NodeInserted" inherited="System.Xml.XmlDocument" />
-        <event name="NodeRemoving" inherited="System.Xml.XmlDocument" />
-        <event name="NodeRemoved" inherited="System.Xml.XmlDocument" />
-        <event name="NodeChanging" inherited="System.Xml.XmlDocument" />
-        <event name="NodeChanged" inherited="System.Xml.XmlDocument" />
-    </class>
-    <class name="AppSettingsReader" namespace="System.Configuration">
-        <constructor name="AppSettingsReader" argnames="" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetValue(System.String, System.Type)" argnames="key, type" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <interface name="IConfigurationSectionHandler" namespace="System.Configuration">
-        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
-    </interface>
-    <interface name="IConfigurationSystem" namespace="System.Configuration">
-        <method name="Init" argnames="" returntype="System.Void" />
-        <method name="GetConfig(System.String)" argnames="configKey" returntype="System.Object" />
-    </interface>
-    <class name="ErrorEventArgs" namespace="System.IO">
-        <constructor name="ErrorEventArgs(System.Exception)" argnames="exception" />
-        <method name="GetException" argnames="" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FileSystemEventArgs" namespace="System.IO">
-        <constructor name="FileSystemEventArgs(System.IO.WatcherChangeTypes, System.String, System.String)" argnames="changeType, directory, name" />
-        <property name="ChangeType" propertytype="System.IO.WatcherChangeTypes" />
-        <property name="FullPath" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="InternalBufferOverflowException" namespace="System.IO">
-        <constructor name="InternalBufferOverflowException" argnames="" />
-        <constructor name="InternalBufferOverflowException(System.String)" argnames="message" />
-        <constructor name="InternalBufferOverflowException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="InternalBufferOverflowException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" inherited="System.Exception" propertytype="System.String" />
-        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
-        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
-        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
-        <property name="Source" inherited="System.Exception" propertytype="System.String" />
-        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
-        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="IODescriptionAttribute" namespace="System.IO">
-        <constructor name="IODescriptionAttribute(System.String)" argnames="description" />
-        <property name="Description" propertytype="System.String" />
-        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="RenamedEventArgs" namespace="System.IO">
-        <constructor name="RenamedEventArgs(System.IO.WatcherChangeTypes, System.String, System.String, System.String)" argnames="changeType, directory, name, oldName" />
-        <property name="OldFullPath" propertytype="System.String" />
-        <property name="OldName" propertytype="System.String" />
-        <property name="ChangeType" inherited="System.IO.FileSystemEventArgs" propertytype="System.IO.WatcherChangeTypes" />
-        <property name="FullPath" inherited="System.IO.FileSystemEventArgs" propertytype="System.String" />
-        <property name="Name" inherited="System.IO.FileSystemEventArgs" propertytype="System.String" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="FileSystemWatcher" namespace="System.IO">
-        <constructor name="FileSystemWatcher" argnames="" />
-        <constructor name="FileSystemWatcher(System.String)" argnames="path" />
-        <constructor name="FileSystemWatcher(System.String, System.String)" argnames="path, filter" />
-        <property name="NotifyFilter" propertytype="System.IO.NotifyFilters" />
-        <property name="EnableRaisingEvents" propertytype="System.Boolean" />
-        <property name="Filter" propertytype="System.String" />
-        <property name="IncludeSubdirectories" propertytype="System.Boolean" />
-        <property name="InternalBufferSize" propertytype="System.Int32" />
-        <property name="Path" propertytype="System.String" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="OnChanged(System.IO.FileSystemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnCreated(System.IO.FileSystemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnDeleted(System.IO.FileSystemEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnError(System.IO.ErrorEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="OnRenamed(System.IO.RenamedEventArgs)" argnames="e" returntype="System.Void" />
-        <method name="WaitForChanged(System.IO.WatcherChangeTypes)" argnames="changeType" returntype="System.IO.WaitForChangedResult" />
-        <method name="WaitForChanged(System.IO.WatcherChangeTypes, System.Int32)" argnames="changeType, timeout" returntype="System.IO.WaitForChangedResult" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Changed" />
-        <event name="Created" />
-        <event name="Deleted" />
-        <event name="Error" />
-        <event name="Renamed" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <struct name="WaitForChangedResult" namespace="System.IO">
-        <property name="ChangeType" propertytype="System.IO.WatcherChangeTypes" />
-        <property name="Name" propertytype="System.String" />
-        <property name="OldName" propertytype="System.String" />
-        <property name="TimedOut" propertytype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </struct>
-    <delegate name="ErrorEventHandler" namespace="System.IO">
-        <constructor name="ErrorEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.IO.ErrorEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.IO.ErrorEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="FileSystemEventHandler" namespace="System.IO">
-        <constructor name="FileSystemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.IO.FileSystemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.IO.FileSystemEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <delegate name="RenamedEventHandler" namespace="System.IO">
-        <constructor name="RenamedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.IO.RenamedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.IO.RenamedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
-    <enum name="NotifyFilters" namespace="System.IO">
-        <field name="FileName" />
-        <field name="DirectoryName" />
-        <field name="Attributes" />
-        <field name="Size" />
-        <field name="LastWrite" />
-        <field name="LastAccess" />
-        <field name="CreationTime" />
-        <field name="Security" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <enum name="WatcherChangeTypes" namespace="System.IO">
-        <field name="Created" />
-        <field name="Deleted" />
-        <field name="Changed" />
-        <field name="Renamed" />
-        <field name="All" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
-        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </enum>
-    <class name="ElapsedEventArgs" namespace="System.Timers">
-        <property name="SignalTime" propertytype="System.DateTime" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="SECURITY_ATTRIBUTES" namespace="System.Timers">
-        <constructor name="SECURITY_ATTRIBUTES" argnames="" />
-        <field name="nLength" />
-        <field name="lpSecurityDescriptor" />
-        <field name="bInheritHandle" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <class name="Timer" namespace="System.Timers">
-        <constructor name="Timer" argnames="" />
-        <constructor name="Timer(System.Double)" argnames="interval" />
-        <property name="AutoReset" propertytype="System.Boolean" />
-        <property name="Enabled" propertytype="System.Boolean" />
-        <property name="Interval" propertytype="System.Double" />
-        <property name="Site" propertytype="System.ComponentModel.ISite" />
-        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
-        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
-        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
-        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
-        <method name="EndInit" argnames="" returntype="System.Void" />
-        <method name="BeginInit" argnames="" returntype="System.Void" />
-        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
-        <method name="Close" argnames="" returntype="System.Void" />
-        <method name="Start" argnames="" returntype="System.Void" />
-        <method name="Stop" argnames="" returntype="System.Void" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-        <event name="Elapsed" />
-        <event name="Disposed" inherited="System.ComponentModel.Component" />
-    </class>
-    <class name="TimersDescriptionAttribute" namespace="System.Timers">
-        <constructor name="TimersDescriptionAttribute(System.String)" argnames="description" />
-        <property name="Description" propertytype="System.String" />
-        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
-        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
-        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </class>
-    <delegate name="ElapsedEventHandler" namespace="System.Timers">
-        <constructor name="ElapsedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Timers.ElapsedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Timers.ElapsedEventArgs)" argnames="sender, e" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
-        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
-        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
-        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
-        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
-        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
-        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
-        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
-    </delegate>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="System">
+    <class name="DescriptionAttribute" namespace="System.ComponentModel">
+        <constructor name="DescriptionAttribute" argnames="" />
+        <constructor name="DescriptionAttribute(System.String)" argnames="description" />
+        <field name="Default" />
+        <property name="Description" propertytype="System.String" />
+        <property name="DescriptionValue" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CategoryAttribute" namespace="System.ComponentModel">
+        <constructor name="CategoryAttribute" argnames="" />
+        <constructor name="CategoryAttribute(System.String)" argnames="category" />
+        <property name="Action" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Appearance" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Behavior" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Data" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Default" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Design" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="DragDrop" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Focus" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Format" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Key" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Layout" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Mouse" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="WindowStyle" propertytype="System.ComponentModel.CategoryAttribute" />
+        <property name="Category" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="GetLocalizedString(System.String)" argnames="value" returntype="System.String" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AmbientValueAttribute" namespace="System.ComponentModel">
+        <constructor name="AmbientValueAttribute(System.Type, System.String)" argnames="type, value" />
+        <constructor name="AmbientValueAttribute(System.Char)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Byte)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Int16)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Int32)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Int64)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Single)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Double)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Boolean)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.String)" argnames="value" />
+        <constructor name="AmbientValueAttribute(System.Object)" argnames="value" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TypeConverter" namespace="System.ComponentModel">
+        <class name="StandardValuesCollection" namespace="System.ComponentModel">
+            <constructor name="StandardValuesCollection(System.Collections.ICollection)" argnames="values" />
+            <property name="Count" propertytype="System.Int32" />
+            <property name="Item" propertytype="System.Object" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="StandardValuesCollection" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MemberDescriptor" namespace="System.ComponentModel">
+        <constructor name="MemberDescriptor(System.String)" argnames="name" />
+        <constructor name="MemberDescriptor(System.String, System.Attribute[])" argnames="name, attributes" />
+        <constructor name="MemberDescriptor(System.ComponentModel.MemberDescriptor)" argnames="descr" />
+        <constructor name="MemberDescriptor(System.ComponentModel.MemberDescriptor, System.Attribute[])" argnames="oldMemberDescriptor, newAttributes" />
+        <property name="AttributeArray" propertytype="System.Attribute[]" />
+        <property name="Attributes" propertytype="System.ComponentModel.AttributeCollection" />
+        <property name="Category" propertytype="System.String" />
+        <property name="Description" propertytype="System.String" />
+        <property name="IsBrowsable" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NameHashCode" propertytype="System.Int32" />
+        <property name="DesignTimeOnly" propertytype="System.Boolean" />
+        <property name="DisplayName" propertytype="System.String" />
+        <method name="FillAttributes(System.Collections.IList)" argnames="attributeList" returntype="System.Void" />
+        <method name="CreateAttributeCollection" argnames="" returntype="System.ComponentModel.AttributeCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FindMethod(System.Type, System.String, System.Type[], System.Type)" argnames="componentClass, name, args, returnType" returntype="System.Reflection.MethodInfo" />
+        <method name="FindMethod(System.Type, System.String, System.Type[], System.Type, System.Boolean)" argnames="componentClass, name, args, returnType, publicOnly" returntype="System.Reflection.MethodInfo" />
+        <method name="GetSite(System.Object)" argnames="component" returntype="System.ComponentModel.ISite" />
+        <method name="GetInvokee(System.Type, System.Object)" argnames="componentClass, component" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyDescriptor" namespace="System.ComponentModel">
+        <constructor name="PropertyDescriptor(System.String, System.Attribute[])" argnames="name, attrs" />
+        <constructor name="PropertyDescriptor(System.ComponentModel.MemberDescriptor)" argnames="descr" />
+        <constructor name="PropertyDescriptor(System.ComponentModel.MemberDescriptor, System.Attribute[])" argnames="descr, attrs" />
+        <property name="ComponentType" propertytype="System.Type" />
+        <property name="Converter" propertytype="System.ComponentModel.TypeConverter" />
+        <property name="IsLocalizable" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="SerializationVisibility" propertytype="System.ComponentModel.DesignerSerializationVisibility" />
+        <property name="PropertyType" propertytype="System.Type" />
+        <property name="AttributeArray" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Attribute[]" />
+        <property name="Attributes" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.ComponentModel.AttributeCollection" />
+        <property name="Category" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <property name="Description" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <property name="IsBrowsable" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
+        <property name="Name" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <property name="NameHashCode" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Int32" />
+        <property name="DesignTimeOnly" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
+        <property name="DisplayName" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <method name="ShouldSerializeValue(System.Object)" argnames="component" returntype="System.Boolean" />
+        <method name="SetValue(System.Object, System.Object)" argnames="component, value" returntype="System.Void" />
+        <method name="ResetValue(System.Object)" argnames="component" returntype="System.Void" />
+        <method name="RemoveValueChanged(System.Object, System.EventHandler)" argnames="component, handler" returntype="System.Void" />
+        <method name="OnValueChanged(System.Object, System.EventArgs)" argnames="component, e" returntype="System.Void" />
+        <method name="GetValue(System.Object)" argnames="component" returntype="System.Object" />
+        <method name="GetEditor(System.Type)" argnames="editorBaseType" returntype="System.Object" />
+        <method name="GetChildProperties(System.Object, System.Attribute[])" argnames="instance, filter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="CanResetValue(System.Object)" argnames="component" returntype="System.Boolean" />
+        <method name="AddValueChanged(System.Object, System.EventHandler)" argnames="component, handler" returntype="System.Void" />
+        <method name="FillAttributes(System.Collections.IList)" argnames="attributeList" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Void" />
+        <method name="CreateAttributeCollection" argnames="" inherited="System.ComponentModel.MemberDescriptor" returntype="System.ComponentModel.AttributeCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateInstance(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="GetChildProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetChildProperties(System.Attribute[])" argnames="filter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetChildProperties(System.Object)" argnames="instance" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetTypeFromName(System.String)" argnames="typeName" returntype="System.Type" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StandardValuesCollection" namespace="System.ComponentModel">
+        <constructor name="StandardValuesCollection(System.Collections.ICollection)" argnames="values" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CollectionConverter" namespace="System.ComponentModel">
+        <constructor name="CollectionConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ArrayConverter" namespace="System.ComponentModel">
+        <constructor name="ArrayConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentEditor" namespace="System.ComponentModel">
+        <constructor name="ComponentEditor" argnames="" />
+        <method name="EditComponent(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, component" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EditComponent(System.Object)" argnames="component" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BaseNumberConverter" namespace="System.ComponentModel">
+        <constructor name="BaseNumberConverter" argnames="" />
+        <property name="AllowHex" propertytype="System.Boolean" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BindableAttribute" namespace="System.ComponentModel">
+        <constructor name="BindableAttribute(System.Boolean)" argnames="bindable" />
+        <constructor name="BindableAttribute(System.ComponentModel.BindableSupport)" argnames="flags" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="Bindable" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BooleanConverter" namespace="System.ComponentModel">
+        <constructor name="BooleanConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BrowsableAttribute" namespace="System.ComponentModel">
+        <constructor name="BrowsableAttribute(System.Boolean)" argnames="browsable" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="Browsable" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ByteConverter" namespace="System.ComponentModel">
+        <constructor name="ByteConverter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CancelEventArgs" namespace="System.ComponentModel">
+        <constructor name="CancelEventArgs" argnames="" />
+        <constructor name="CancelEventArgs(System.Boolean)" argnames="cancel" />
+        <property name="Cancel" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CharConverter" namespace="System.ComponentModel">
+        <constructor name="CharConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CollectionChangeEventArgs" namespace="System.ComponentModel">
+        <constructor name="CollectionChangeEventArgs(System.ComponentModel.CollectionChangeAction, System.Object)" argnames="action, element" />
+        <property name="Action" propertytype="System.ComponentModel.CollectionChangeAction" />
+        <property name="Element" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Component" namespace="System.ComponentModel">
+        <constructor name="Component" argnames="" />
+        <property name="Events" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" />
+    </class>
+    <class name="ComponentCollection" namespace="System.ComponentModel">
+        <constructor name="ComponentCollection(System.ComponentModel.IComponent[])" argnames="components" />
+        <property name="Item" propertytype="System.ComponentModel.IComponent" />
+        <property name="Item" propertytype="System.ComponentModel.IComponent" />
+        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CopyTo(System.ComponentModel.IComponent[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ReferenceConverter" namespace="System.ComponentModel">
+        <constructor name="ReferenceConverter(System.Type)" argnames="type" />
+        <method name="IsValueAllowed(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.Boolean" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentConverter" namespace="System.ComponentModel">
+        <constructor name="ComponentConverter(System.Type)" argnames="type" />
+        <method name="IsValueAllowed(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.ReferenceConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.ReferenceConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Container" namespace="System.ComponentModel">
+        <constructor name="Container" argnames="" />
+        <property name="Components" propertytype="System.ComponentModel.ComponentCollection" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Remove(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="Add(System.ComponentModel.IComponent, System.String)" argnames="component, name" returntype="System.Void" />
+        <method name="Add(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateSite(System.ComponentModel.IComponent, System.String)" argnames="component, name" returntype="System.ComponentModel.ISite" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CultureInfoConverter" namespace="System.ComponentModel">
+        <constructor name="CultureInfoConverter" argnames="" />
+        <property name="DefaultCultureString" propertytype="System.String" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DateTimeConverter" namespace="System.ComponentModel">
+        <constructor name="DateTimeConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DecimalConverter" namespace="System.ComponentModel">
+        <constructor name="DecimalConverter" argnames="" />
+        <property name="AllowHex" propertytype="System.Boolean" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DefaultEventAttribute" namespace="System.ComponentModel">
+        <constructor name="DefaultEventAttribute(System.String)" argnames="name" />
+        <field name="Default" />
+        <property name="Name" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DefaultPropertyAttribute" namespace="System.ComponentModel">
+        <constructor name="DefaultPropertyAttribute(System.String)" argnames="name" />
+        <field name="Default" />
+        <property name="Name" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DefaultValueAttribute" namespace="System.ComponentModel">
+        <constructor name="DefaultValueAttribute(System.Type, System.String)" argnames="type, value" />
+        <constructor name="DefaultValueAttribute(System.Char)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Byte)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Int16)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Int32)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Int64)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Single)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Double)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Boolean)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.String)" argnames="value" />
+        <constructor name="DefaultValueAttribute(System.Object)" argnames="value" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerAttribute" namespace="System.ComponentModel">
+        <constructor name="DesignerAttribute(System.String)" argnames="designerTypeName" />
+        <constructor name="DesignerAttribute(System.Type)" argnames="designerType" />
+        <constructor name="DesignerAttribute(System.String, System.String)" argnames="designerTypeName, designerBaseTypeName" />
+        <constructor name="DesignerAttribute(System.String, System.Type)" argnames="designerTypeName, designerBaseType" />
+        <constructor name="DesignerAttribute(System.Type, System.Type)" argnames="designerType, designerBaseType" />
+        <property name="DesignerBaseTypeName" propertytype="System.String" />
+        <property name="DesignerTypeName" propertytype="System.String" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerCategoryAttribute" namespace="System.ComponentModel">
+        <constructor name="DesignerCategoryAttribute" argnames="" />
+        <constructor name="DesignerCategoryAttribute(System.String)" argnames="category" />
+        <field name="Component" />
+        <field name="Default" />
+        <field name="Form" />
+        <field name="Generic" />
+        <property name="Category" propertytype="System.String" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerSerializationVisibilityAttribute" namespace="System.ComponentModel">
+        <constructor name="DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility)" argnames="visibility" />
+        <field name="Content" />
+        <field name="Hidden" />
+        <field name="Visible" />
+        <field name="Default" />
+        <property name="Visibility" propertytype="System.ComponentModel.DesignerSerializationVisibility" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignOnlyAttribute" namespace="System.ComponentModel">
+        <constructor name="DesignOnlyAttribute(System.Boolean)" argnames="isDesignOnly" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="IsDesignOnly" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignTimeVisibleAttribute" namespace="System.ComponentModel">
+        <constructor name="DesignTimeVisibleAttribute(System.Boolean)" argnames="visible" />
+        <constructor name="DesignTimeVisibleAttribute" argnames="" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DoubleConverter" namespace="System.ComponentModel">
+        <constructor name="DoubleConverter" argnames="" />
+        <property name="AllowHex" propertytype="System.Boolean" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EditorAttribute" namespace="System.ComponentModel">
+        <constructor name="EditorAttribute" argnames="" />
+        <constructor name="EditorAttribute(System.String, System.String)" argnames="typeName, baseTypeName" />
+        <constructor name="EditorAttribute(System.String, System.Type)" argnames="typeName, baseType" />
+        <constructor name="EditorAttribute(System.Type, System.Type)" argnames="type, baseType" />
+        <property name="EditorBaseTypeName" propertytype="System.String" />
+        <property name="EditorTypeName" propertytype="System.String" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EditorBrowsableAttribute" namespace="System.ComponentModel">
+        <constructor name="EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState)" argnames="state" />
+        <constructor name="EditorBrowsableAttribute" argnames="" />
+        <property name="State" propertytype="System.ComponentModel.EditorBrowsableState" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EnumConverter" namespace="System.ComponentModel">
+        <constructor name="EnumConverter(System.Type)" argnames="type" />
+        <property name="EnumType" propertytype="System.Type" />
+        <property name="Values" propertytype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <property name="Comparer" propertytype="System.Collections.IComparer" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventDescriptor" namespace="System.ComponentModel">
+        <constructor name="EventDescriptor(System.String, System.Attribute[])" argnames="name, attrs" />
+        <constructor name="EventDescriptor(System.ComponentModel.MemberDescriptor)" argnames="descr" />
+        <constructor name="EventDescriptor(System.ComponentModel.MemberDescriptor, System.Attribute[])" argnames="descr, attrs" />
+        <property name="ComponentType" propertytype="System.Type" />
+        <property name="EventType" propertytype="System.Type" />
+        <property name="IsMulticast" propertytype="System.Boolean" />
+        <property name="AttributeArray" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Attribute[]" />
+        <property name="Attributes" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.ComponentModel.AttributeCollection" />
+        <property name="Category" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <property name="Description" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <property name="IsBrowsable" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
+        <property name="Name" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <property name="NameHashCode" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Int32" />
+        <property name="DesignTimeOnly" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.Boolean" />
+        <property name="DisplayName" inherited="System.ComponentModel.MemberDescriptor" propertytype="System.String" />
+        <method name="RemoveEventHandler(System.Object, System.Delegate)" argnames="component, value" returntype="System.Void" />
+        <method name="AddEventHandler(System.Object, System.Delegate)" argnames="component, value" returntype="System.Void" />
+        <method name="FillAttributes(System.Collections.IList)" argnames="attributeList" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Void" />
+        <method name="CreateAttributeCollection" argnames="" inherited="System.ComponentModel.MemberDescriptor" returntype="System.ComponentModel.AttributeCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.MemberDescriptor" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventDescriptorCollection" namespace="System.ComponentModel">
+        <constructor name="EventDescriptorCollection(System.ComponentModel.EventDescriptor[])" argnames="events" />
+        <field name="Empty" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.ComponentModel.EventDescriptor" />
+        <property name="Item" propertytype="System.ComponentModel.EventDescriptor" />
+        <method name="Sort(System.Collections.IComparer)" argnames="comparer" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="Sort(System.String[], System.Collections.IComparer)" argnames="names, comparer" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="Sort(System.String[])" argnames="names" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="Sort" argnames="" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="Find(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Boolean" />
+        <method name="IndexOf(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.ComponentModel.EventDescriptor)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.ComponentModel.EventDescriptor)" argnames="value" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="InternalSort(System.String[])" argnames="names" returntype="System.Void" />
+        <method name="InternalSort(System.Collections.IComparer)" argnames="sorter" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventHandlerList" namespace="System.ComponentModel">
+        <constructor name="EventHandlerList" argnames="" />
+        <property name="Item" propertytype="System.Delegate" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddHandler(System.Object, System.Delegate)" argnames="key, value" returntype="System.Void" />
+        <method name="RemoveHandler(System.Object, System.Delegate)" argnames="key, value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ExpandableObjectConverter" namespace="System.ComponentModel">
+        <constructor name="ExpandableObjectConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ExtenderProvidedPropertyAttribute" namespace="System.ComponentModel">
+        <constructor name="ExtenderProvidedPropertyAttribute" argnames="" />
+        <property name="ExtenderProperty" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <property name="Provider" propertytype="System.ComponentModel.IExtenderProvider" />
+        <property name="ReceiverType" propertytype="System.Type" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GuidConverter" namespace="System.ComponentModel">
+        <constructor name="GuidConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ImmutableObjectAttribute" namespace="System.ComponentModel">
+        <constructor name="ImmutableObjectAttribute(System.Boolean)" argnames="immutable" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="Immutable" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstallerTypeAttribute" namespace="System.ComponentModel">
+        <constructor name="InstallerTypeAttribute(System.Type)" argnames="installerType" />
+        <constructor name="InstallerTypeAttribute(System.String)" argnames="typeName" />
+        <property name="InstallerType" propertytype="System.Type" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Int16Converter" namespace="System.ComponentModel">
+        <constructor name="Int16Converter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Int32Converter" namespace="System.ComponentModel">
+        <constructor name="Int32Converter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Int64Converter" namespace="System.ComponentModel">
+        <constructor name="Int64Converter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="License" namespace="System.ComponentModel">
+        <constructor name="License" argnames="" />
+        <property name="LicenseKey" propertytype="System.String" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LicenseContext" namespace="System.ComponentModel">
+        <constructor name="LicenseContext" argnames="" />
+        <property name="UsageMode" propertytype="System.ComponentModel.LicenseUsageMode" />
+        <method name="GetService(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="SetSavedLicenseKey(System.Type, System.String)" argnames="type, key" returntype="System.Void" />
+        <method name="GetSavedLicenseKey(System.Type, System.Reflection.Assembly)" argnames="type, resourceAssembly" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LicenseException" namespace="System.ComponentModel">
+        <constructor name="LicenseException(System.Type)" argnames="type" />
+        <constructor name="LicenseException(System.Type, System.Object)" argnames="type, instance" />
+        <constructor name="LicenseException(System.Type, System.Object, System.String)" argnames="type, instance, message" />
+        <constructor name="LicenseException(System.Type, System.Object, System.String, System.Exception)" argnames="type, instance, message, innerException" />
+        <property name="LicensedType" propertytype="System.Type" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LicenseProvider" namespace="System.ComponentModel">
+        <constructor name="LicenseProvider" argnames="" />
+        <method name="GetLicense(System.ComponentModel.LicenseContext, System.Type, System.Object, System.Boolean)" argnames="context, type, instance, allowExceptions" returntype="System.ComponentModel.License" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LicenseProviderAttribute" namespace="System.ComponentModel">
+        <constructor name="LicenseProviderAttribute" argnames="" />
+        <constructor name="LicenseProviderAttribute(System.String)" argnames="typeName" />
+        <constructor name="LicenseProviderAttribute(System.Type)" argnames="type" />
+        <field name="Default" />
+        <property name="LicenseProvider" propertytype="System.Type" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LicFileLicenseProvider" namespace="System.ComponentModel">
+        <constructor name="LicFileLicenseProvider" argnames="" />
+        <method name="GetKey(System.Type)" argnames="type" returntype="System.String" />
+        <method name="IsKeyValid(System.String, System.Type)" argnames="key, type" returntype="System.Boolean" />
+        <method name="GetLicense(System.ComponentModel.LicenseContext, System.Type, System.Object, System.Boolean)" argnames="context, type, instance, allowExceptions" returntype="System.ComponentModel.License" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListBindableAttribute" namespace="System.ComponentModel">
+        <constructor name="ListBindableAttribute(System.Boolean)" argnames="listBindable" />
+        <constructor name="ListBindableAttribute(System.ComponentModel.BindableSupport)" argnames="flags" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="ListBindable" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListChangedEventArgs" namespace="System.ComponentModel">
+        <constructor name="ListChangedEventArgs(System.ComponentModel.ListChangedType, System.Int32)" argnames="listChangedType, newIndex" />
+        <constructor name="ListChangedEventArgs(System.ComponentModel.ListChangedType, System.ComponentModel.PropertyDescriptor)" argnames="listChangedType, propDesc" />
+        <constructor name="ListChangedEventArgs(System.ComponentModel.ListChangedType, System.Int32, System.Int32)" argnames="listChangedType, newIndex, oldIndex" />
+        <property name="ListChangedType" propertytype="System.ComponentModel.ListChangedType" />
+        <property name="NewIndex" propertytype="System.Int32" />
+        <property name="OldIndex" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LocalizableAttribute" namespace="System.ComponentModel">
+        <constructor name="LocalizableAttribute(System.Boolean)" argnames="isLocalizable" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="IsLocalizable" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MarshalByValueComponent" namespace="System.ComponentModel">
+        <constructor name="MarshalByValueComponent" argnames="" />
+        <property name="Events" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" propertytype="System.Boolean" />
+        <method name="GetService(System.Type)" argnames="service" returntype="System.Object" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" />
+    </class>
+    <class name="AttributeCollection" namespace="System.ComponentModel">
+        <constructor name="AttributeCollection(System.Attribute[])" argnames="attributes" />
+        <field name="Empty" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Attribute" />
+        <property name="Item" propertytype="System.Attribute" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.Attribute)" argnames="attribute" returntype="System.Boolean" />
+        <method name="Contains(System.Attribute[])" argnames="attributes" returntype="System.Boolean" />
+        <method name="GetDefaultAttribute(System.Type)" argnames="attributeType" returntype="System.Attribute" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Matches(System.Attribute)" argnames="attribute" returntype="System.Boolean" />
+        <method name="Matches(System.Attribute[])" argnames="attributes" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MergablePropertyAttribute" namespace="System.ComponentModel">
+        <constructor name="MergablePropertyAttribute(System.Boolean)" argnames="allowMerge" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="AllowMerge" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyChangedEventArgs" namespace="System.ComponentModel">
+        <constructor name="PropertyChangedEventArgs(System.String)" argnames="propertyName" />
+        <property name="PropertyName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyDescriptorCollection" namespace="System.ComponentModel">
+        <constructor name="PropertyDescriptorCollection(System.ComponentModel.PropertyDescriptor[])" argnames="properties" />
+        <field name="Empty" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <property name="Item" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Find(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="Sort(System.Collections.IComparer)" argnames="comparer" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Sort(System.String[], System.Collections.IComparer)" argnames="names, comparer" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Sort(System.String[])" argnames="names" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Sort" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Int32" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Contains(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Boolean" />
+        <method name="IndexOf(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.ComponentModel.PropertyDescriptor)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.ComponentModel.PropertyDescriptor)" argnames="value" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="InternalSort(System.String[])" argnames="names" returntype="System.Void" />
+        <method name="InternalSort(System.Collections.IComparer)" argnames="sorter" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProvidePropertyAttribute" namespace="System.ComponentModel">
+        <constructor name="ProvidePropertyAttribute(System.String, System.Type)" argnames="propertyName, receiverType" />
+        <constructor name="ProvidePropertyAttribute(System.String, System.String)" argnames="propertyName, receiverTypeName" />
+        <property name="PropertyName" propertytype="System.String" />
+        <property name="ReceiverTypeName" propertytype="System.String" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ReadOnlyAttribute" namespace="System.ComponentModel">
+        <constructor name="ReadOnlyAttribute(System.Boolean)" argnames="isReadOnly" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RecommendedAsConfigurableAttribute" namespace="System.ComponentModel">
+        <constructor name="RecommendedAsConfigurableAttribute(System.Boolean)" argnames="recommendedAsConfigurable" />
+        <field name="No" />
+        <field name="Yes" />
+        <field name="Default" />
+        <property name="RecommendedAsConfigurable" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RefreshEventArgs" namespace="System.ComponentModel">
+        <constructor name="RefreshEventArgs(System.Object)" argnames="componentChanged" />
+        <constructor name="RefreshEventArgs(System.Type)" argnames="typeChanged" />
+        <property name="ComponentChanged" propertytype="System.Object" />
+        <property name="TypeChanged" propertytype="System.Type" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RunInstallerAttribute" namespace="System.ComponentModel">
+        <constructor name="RunInstallerAttribute(System.Boolean)" argnames="runInstaller" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="RunInstaller" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SByteConverter" namespace="System.ComponentModel">
+        <constructor name="SByteConverter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SingleConverter" namespace="System.ComponentModel">
+        <constructor name="SingleConverter" argnames="" />
+        <property name="AllowHex" propertytype="System.Boolean" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StringConverter" namespace="System.ComponentModel">
+        <constructor name="StringConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SyntaxCheck" namespace="System.ComponentModel">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CheckMachineName(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CheckPath(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CheckRootedPath(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TimeSpanConverter" namespace="System.ComponentModel">
+        <constructor name="TimeSpanConverter" argnames="" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolboxItemFilterAttribute" namespace="System.ComponentModel">
+        <constructor name="ToolboxItemFilterAttribute(System.String)" argnames="filterString" />
+        <constructor name="ToolboxItemFilterAttribute(System.String, System.ComponentModel.ToolboxItemFilterType)" argnames="filterString, filterType" />
+        <property name="FilterString" propertytype="System.String" />
+        <property name="FilterType" propertytype="System.ComponentModel.ToolboxItemFilterType" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TypeConverterAttribute" namespace="System.ComponentModel">
+        <constructor name="TypeConverterAttribute" argnames="" />
+        <constructor name="TypeConverterAttribute(System.Type)" argnames="type" />
+        <constructor name="TypeConverterAttribute(System.String)" argnames="typeName" />
+        <field name="Default" />
+        <property name="ConverterTypeName" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TypeListConverter" namespace="System.ComponentModel">
+        <constructor name="TypeListConverter(System.Type[])" argnames="types" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, destinationType" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UInt16Converter" namespace="System.ComponentModel">
+        <constructor name="UInt16Converter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UInt32Converter" namespace="System.ComponentModel">
+        <constructor name="UInt32Converter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UInt64Converter" namespace="System.ComponentModel">
+        <constructor name="UInt64Converter" argnames="" />
+        <property name="TargetType" propertytype="System.Type" />
+        <method name="IsValid(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesExclusive(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.TypeConverter+StandardValuesCollection" />
+        <method name="GetPropertiesSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object, System.Attribute[])" argnames="context, value, attributes" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetCreateInstanceSupported(System.ComponentModel.ITypeDescriptorContext)" argnames="context" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CreateInstance(System.ComponentModel.ITypeDescriptorContext, System.Collections.IDictionary)" argnames="context, propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)" argnames="context, culture, value, destinationType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Object" />
+        <method name="CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, t" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)" argnames="context, sourceType" inherited="System.ComponentModel.BaseNumberConverter" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CanConvertFrom(System.Type)" argnames="sourceType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="CanConvertTo(System.Type)" argnames="destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="ConvertFrom(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromInvariantString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.String)" argnames="text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.String)" argnames="context, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertFromString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.String)" argnames="context, culture, text" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertTo(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="ConvertToInvariantString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToInvariantString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="ConvertToString(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)" argnames="context, culture, value" inherited="System.ComponentModel.TypeConverter" returntype="System.String" />
+        <method name="CreateInstance(System.Collections.IDictionary)" argnames="propertyValues" inherited="System.ComponentModel.TypeConverter" returntype="System.Object" />
+        <method name="GetConvertFromException(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetConvertToException(System.Object, System.Type)" argnames="value, destinationType" inherited="System.ComponentModel.TypeConverter" returntype="System.Exception" />
+        <method name="GetCreateInstanceSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetProperties(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.ComponentModel.ITypeDescriptorContext, System.Object)" argnames="context, value" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetPropertiesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValues" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Collections.ICollection" />
+        <method name="GetStandardValuesExclusive" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="GetStandardValuesSupported" argnames="" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="IsValid(System.Object)" argnames="value" inherited="System.ComponentModel.TypeConverter" returntype="System.Boolean" />
+        <method name="SortProperties(System.ComponentModel.PropertyDescriptorCollection, System.String[])" argnames="props, names" inherited="System.ComponentModel.TypeConverter" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InvalidEnumArgumentException" namespace="System.ComponentModel">
+        <constructor name="InvalidEnumArgumentException" argnames="" />
+        <constructor name="InvalidEnumArgumentException(System.String)" argnames="message" />
+        <constructor name="InvalidEnumArgumentException(System.String, System.Int32, System.Type)" argnames="argumentName, invalidValue, enumClass" />
+        <property name="Message" inherited="System.ArgumentException" propertytype="System.String" />
+        <property name="ParamName" inherited="System.ArgumentException" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.ArgumentException" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WarningException" namespace="System.ComponentModel">
+        <constructor name="WarningException(System.String)" argnames="message" />
+        <constructor name="WarningException(System.String, System.String)" argnames="message, helpUrl" />
+        <constructor name="WarningException(System.String, System.String, System.String)" argnames="message, helpUrl, helpTopic" />
+        <property name="HelpUrl" propertytype="System.String" />
+        <property name="HelpTopic" propertytype="System.String" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Win32Exception" namespace="System.ComponentModel">
+        <constructor name="Win32Exception" argnames="" />
+        <constructor name="Win32Exception(System.Int32)" argnames="error" />
+        <constructor name="Win32Exception(System.Int32, System.String)" argnames="error, message" />
+        <constructor name="Win32Exception(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="NativeErrorCode" propertytype="System.Int32" />
+        <property name="ErrorCode" inherited="System.Runtime.InteropServices.ExternalException" propertytype="System.Int32" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LicenseManager" namespace="System.ComponentModel">
+        <property name="CurrentContext" propertytype="System.ComponentModel.LicenseContext" />
+        <property name="UsageMode" propertytype="System.ComponentModel.LicenseUsageMode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateWithContext(System.Type, System.ComponentModel.LicenseContext)" argnames="type, creationContext" returntype="System.Object" />
+        <method name="CreateWithContext(System.Type, System.ComponentModel.LicenseContext, System.Object[])" argnames="type, creationContext, args" returntype="System.Object" />
+        <method name="IsLicensed(System.Type)" argnames="type" returntype="System.Boolean" />
+        <method name="IsValid(System.Type)" argnames="type" returntype="System.Boolean" />
+        <method name="IsValid(System.Type, System.Object, System.ComponentModel.License&amp;)" argnames="type, instance, license" returntype="System.Boolean" />
+        <method name="LockContext(System.Object)" argnames="contextUser" returntype="System.Void" />
+        <method name="UnlockContext(System.Object)" argnames="contextUser" returntype="System.Void" />
+        <method name="Validate(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="Validate(System.Type, System.Object)" argnames="type, instance" returntype="System.ComponentModel.License" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TypeDescriptor" namespace="System.ComponentModel">
+        <property name="ComNativeDescriptorHandler" propertytype="System.ComponentModel.IComNativeDescriptorHandler" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddEditorTable(System.Type, System.Collections.Hashtable)" argnames="editorBaseType, table" returntype="System.Void" />
+        <method name="CreateDesigner(System.ComponentModel.IComponent, System.Type)" argnames="component, designerBaseType" returntype="System.ComponentModel.Design.IDesigner" />
+        <method name="CreateEvent(System.Type, System.String, System.Type, System.Attribute[])" argnames="componentType, name, type, attributes" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="CreateEvent(System.Type, System.ComponentModel.EventDescriptor, System.Attribute[])" argnames="componentType, oldEventDescriptor, attributes" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="CreateProperty(System.Type, System.String, System.Type, System.Attribute[])" argnames="componentType, name, type, attributes" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="CreateProperty(System.Type, System.ComponentModel.PropertyDescriptor, System.Attribute[])" argnames="componentType, oldPropertyDescriptor, attributes" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetAttributes(System.Type)" argnames="componentType" returntype="System.ComponentModel.AttributeCollection" />
+        <method name="GetAttributes(System.Object)" argnames="component" returntype="System.ComponentModel.AttributeCollection" />
+        <method name="GetAttributes(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.AttributeCollection" />
+        <method name="GetClassName(System.Object)" argnames="component" returntype="System.String" />
+        <method name="GetClassName(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.String" />
+        <method name="GetComponentName(System.Object)" argnames="component" returntype="System.String" />
+        <method name="GetComponentName(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.String" />
+        <method name="GetConverter(System.Object)" argnames="component" returntype="System.ComponentModel.TypeConverter" />
+        <method name="GetConverter(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.TypeConverter" />
+        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
+        <method name="GetDefaultEvent(System.Type)" argnames="componentType" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="GetDefaultEvent(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="GetDefaultEvent(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="GetDefaultProperty(System.Type)" argnames="componentType" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetDefaultProperty(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetDefaultProperty(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetEditor(System.Object, System.Type)" argnames="component, editorBaseType" returntype="System.Object" />
+        <method name="GetEditor(System.Object, System.Type, System.Boolean)" argnames="component, editorBaseType, noCustomTypeDesc" returntype="System.Object" />
+        <method name="GetEditor(System.Type, System.Type)" argnames="type, editorBaseType" returntype="System.Object" />
+        <method name="GetEvents(System.Type)" argnames="componentType" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEvents(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEvents(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEvents(System.Type, System.Attribute[])" argnames="componentType, attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEvents(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEvents(System.Object, System.Attribute[], System.Boolean)" argnames="component, attributes, noCustomTypeDesc" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetProperties(System.Type)" argnames="componentType" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object, System.Boolean)" argnames="component, noCustomTypeDesc" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Type, System.Attribute[])" argnames="componentType, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties(System.Object, System.Attribute[], System.Boolean)" argnames="component, attributes, noCustomTypeDesc" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="Refresh(System.Object)" argnames="component" returntype="System.Void" />
+        <method name="Refresh(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="Refresh(System.Reflection.Module)" argnames="module" returntype="System.Void" />
+        <method name="Refresh(System.Reflection.Assembly)" argnames="assembly" returntype="System.Void" />
+        <method name="SortDescriptorArray(System.Collections.IList)" argnames="infos" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Refreshed" />
+    </class>
+    <class name="InheritanceAttribute" namespace="System.ComponentModel">
+        <constructor name="InheritanceAttribute" argnames="" />
+        <constructor name="InheritanceAttribute(System.ComponentModel.InheritanceLevel)" argnames="inheritanceLevel" />
+        <field name="Inherited" />
+        <field name="InheritedReadOnly" />
+        <field name="NotInherited" />
+        <field name="Default" />
+        <property name="InheritanceLevel" propertytype="System.ComponentModel.InheritanceLevel" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NotifyParentPropertyAttribute" namespace="System.ComponentModel">
+        <constructor name="NotifyParentPropertyAttribute(System.Boolean)" argnames="notifyParent" />
+        <field name="Yes" />
+        <field name="No" />
+        <field name="Default" />
+        <property name="NotifyParent" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ParenthesizePropertyNameAttribute" namespace="System.ComponentModel">
+        <constructor name="ParenthesizePropertyNameAttribute" argnames="" />
+        <constructor name="ParenthesizePropertyNameAttribute(System.Boolean)" argnames="needParenthesis" />
+        <field name="Default" />
+        <property name="NeedParenthesis" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PropertyTabAttribute" namespace="System.ComponentModel">
+        <constructor name="PropertyTabAttribute" argnames="" />
+        <constructor name="PropertyTabAttribute(System.Type)" argnames="tabClass" />
+        <constructor name="PropertyTabAttribute(System.String)" argnames="tabClassName" />
+        <constructor name="PropertyTabAttribute(System.Type, System.ComponentModel.PropertyTabScope)" argnames="tabClass, tabScope" />
+        <constructor name="PropertyTabAttribute(System.String, System.ComponentModel.PropertyTabScope)" argnames="tabClassName, tabScope" />
+        <property name="TabClasses" propertytype="System.Type[]" />
+        <property name="TabClassNames" propertytype="System.String[]" />
+        <property name="TabScopes" propertytype="System.ComponentModel.PropertyTabScope[]" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Equals(System.ComponentModel.PropertyTabAttribute)" argnames="other" returntype="System.Boolean" />
+        <method name="InitializeArrays(System.String[], System.ComponentModel.PropertyTabScope[])" argnames="tabClassNames, tabScopes" returntype="System.Void" />
+        <method name="InitializeArrays(System.Type[], System.ComponentModel.PropertyTabScope[])" argnames="tabClasses, tabScopes" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RefreshPropertiesAttribute" namespace="System.ComponentModel">
+        <constructor name="RefreshPropertiesAttribute(System.ComponentModel.RefreshProperties)" argnames="refresh" />
+        <field name="All" />
+        <field name="Repaint" />
+        <field name="Default" />
+        <property name="RefreshProperties" propertytype="System.ComponentModel.RefreshProperties" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ToolboxItemAttribute" namespace="System.ComponentModel">
+        <constructor name="ToolboxItemAttribute(System.Boolean)" argnames="defaultType" />
+        <constructor name="ToolboxItemAttribute(System.String)" argnames="toolboxItemTypeName" />
+        <constructor name="ToolboxItemAttribute(System.Type)" argnames="toolboxItemType" />
+        <field name="Default" />
+        <field name="None" />
+        <property name="ToolboxItemType" propertytype="System.Type" />
+        <property name="ToolboxItemTypeName" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IComponent" namespace="System.ComponentModel">
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <event name="Disposed" />
+    </interface>
+    <interface name="IContainer" namespace="System.ComponentModel">
+        <property name="Components" propertytype="System.ComponentModel.ComponentCollection" />
+        <method name="Remove(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="Add(System.ComponentModel.IComponent, System.String)" argnames="component, name" returntype="System.Void" />
+        <method name="Add(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+    </interface>
+    <interface name="ISite" namespace="System.ComponentModel">
+        <property name="Component" propertytype="System.ComponentModel.IComponent" />
+        <property name="Container" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+    </interface>
+    <interface name="IBindingList" namespace="System.ComponentModel">
+        <property name="AllowNew" propertytype="System.Boolean" />
+        <property name="AllowEdit" propertytype="System.Boolean" />
+        <property name="AllowRemove" propertytype="System.Boolean" />
+        <property name="SupportsChangeNotification" propertytype="System.Boolean" />
+        <property name="SupportsSearching" propertytype="System.Boolean" />
+        <property name="SupportsSorting" propertytype="System.Boolean" />
+        <property name="IsSorted" propertytype="System.Boolean" />
+        <property name="SortProperty" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <property name="SortDirection" propertytype="System.ComponentModel.ListSortDirection" />
+        <method name="RemoveSort" argnames="" returntype="System.Void" />
+        <method name="RemoveIndex(System.ComponentModel.PropertyDescriptor)" argnames="property" returntype="System.Void" />
+        <method name="Find(System.ComponentModel.PropertyDescriptor, System.Object)" argnames="property, key" returntype="System.Int32" />
+        <method name="ApplySort(System.ComponentModel.PropertyDescriptor, System.ComponentModel.ListSortDirection)" argnames="property, direction" returntype="System.Void" />
+        <method name="AddIndex(System.ComponentModel.PropertyDescriptor)" argnames="property" returntype="System.Void" />
+        <method name="AddNew" argnames="" returntype="System.Object" />
+        <event name="ListChanged" />
+    </interface>
+    <interface name="IComNativeDescriptorHandler" namespace="System.ComponentModel">
+        <method name="GetPropertyValue(System.Object, System.Int32, System.Boolean&amp;)" argnames="component, dispid, success" returntype="System.Object" />
+        <method name="GetPropertyValue(System.Object, System.String, System.Boolean&amp;)" argnames="component, propertyName, success" returntype="System.Object" />
+        <method name="GetProperties(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetEvents(System.Object, System.Attribute[])" argnames="component, attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEvents(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetName(System.Object)" argnames="component" returntype="System.String" />
+        <method name="GetEditor(System.Object, System.Type)" argnames="component, baseEditorType" returntype="System.Object" />
+        <method name="GetDefaultProperty(System.Object)" argnames="component" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetDefaultEvent(System.Object)" argnames="component" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="GetConverter(System.Object)" argnames="component" returntype="System.ComponentModel.TypeConverter" />
+        <method name="GetClassName(System.Object)" argnames="component" returntype="System.String" />
+        <method name="GetAttributes(System.Object)" argnames="component" returntype="System.ComponentModel.AttributeCollection" />
+    </interface>
+    <interface name="ICustomTypeDescriptor" namespace="System.ComponentModel">
+        <method name="GetPropertyOwner(System.ComponentModel.PropertyDescriptor)" argnames="pd" returntype="System.Object" />
+        <method name="GetProperties(System.Attribute[])" argnames="attributes" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetProperties" argnames="" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetEvents(System.Attribute[])" argnames="attributes" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEvents" argnames="" returntype="System.ComponentModel.EventDescriptorCollection" />
+        <method name="GetEditor(System.Type)" argnames="editorBaseType" returntype="System.Object" />
+        <method name="GetDefaultProperty" argnames="" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetDefaultEvent" argnames="" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="GetConverter" argnames="" returntype="System.ComponentModel.TypeConverter" />
+        <method name="GetComponentName" argnames="" returntype="System.String" />
+        <method name="GetClassName" argnames="" returntype="System.String" />
+        <method name="GetAttributes" argnames="" returntype="System.ComponentModel.AttributeCollection" />
+    </interface>
+    <interface name="IDataErrorInfo" namespace="System.ComponentModel">
+        <property name="Item" propertytype="System.String" />
+        <property name="Error" propertytype="System.String" />
+    </interface>
+    <interface name="IEditableObject" namespace="System.ComponentModel">
+        <method name="CancelEdit" argnames="" returntype="System.Void" />
+        <method name="EndEdit" argnames="" returntype="System.Void" />
+        <method name="BeginEdit" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IExtenderProvider" namespace="System.ComponentModel">
+        <method name="CanExtend(System.Object)" argnames="extendee" returntype="System.Boolean" />
+    </interface>
+    <interface name="IListSource" namespace="System.ComponentModel">
+        <property name="ContainsListCollection" propertytype="System.Boolean" />
+        <method name="GetList" argnames="" returntype="System.Collections.IList" />
+    </interface>
+    <interface name="ISupportInitialize" namespace="System.ComponentModel">
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="ISynchronizeInvoke" namespace="System.ComponentModel">
+        <property name="InvokeRequired" propertytype="System.Boolean" />
+        <method name="Invoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
+        <method name="BeginInvoke(System.Delegate, System.Object[])" argnames="method, args" returntype="System.IAsyncResult" />
+    </interface>
+    <interface name="ITypeDescriptorContext" namespace="System.ComponentModel">
+        <property name="Container" propertytype="System.ComponentModel.IContainer" />
+        <property name="Instance" propertytype="System.Object" />
+        <property name="PropertyDescriptor" propertytype="System.ComponentModel.PropertyDescriptor" />
+        <method name="OnComponentChanged" argnames="" returntype="System.Void" />
+        <method name="OnComponentChanging" argnames="" returntype="System.Boolean" />
+    </interface>
+    <interface name="ITypedList" namespace="System.ComponentModel">
+        <method name="GetItemProperties(System.ComponentModel.PropertyDescriptor[])" argnames="listAccessors" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetListName(System.ComponentModel.PropertyDescriptor[])" argnames="listAccessors" returntype="System.String" />
+    </interface>
+    <delegate name="CancelEventHandler" namespace="System.ComponentModel">
+        <constructor name="CancelEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.CancelEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.CancelEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="CollectionChangeEventHandler" namespace="System.ComponentModel">
+        <constructor name="CollectionChangeEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.CollectionChangeEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.CollectionChangeEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ListChangedEventHandler" namespace="System.ComponentModel">
+        <constructor name="ListChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.ListChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.ListChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="PropertyChangedEventHandler" namespace="System.ComponentModel">
+        <constructor name="PropertyChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.PropertyChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.PropertyChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="RefreshEventHandler" namespace="System.ComponentModel">
+        <constructor name="RefreshEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.ComponentModel.RefreshEventArgs, System.AsyncCallback, System.Object)" argnames="e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.ComponentModel.RefreshEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="BindableSupport" namespace="System.ComponentModel">
+        <field name="No" />
+        <field name="Yes" />
+        <field name="Default" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="CollectionChangeAction" namespace="System.ComponentModel">
+        <field name="Add" />
+        <field name="Remove" />
+        <field name="Refresh" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="DesignerSerializationVisibility" namespace="System.ComponentModel">
+        <field name="Hidden" />
+        <field name="Visible" />
+        <field name="Content" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EditorBrowsableState" namespace="System.ComponentModel">
+        <field name="Always" />
+        <field name="Never" />
+        <field name="Advanced" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LicenseUsageMode" namespace="System.ComponentModel">
+        <field name="Runtime" />
+        <field name="Designtime" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ListChangedType" namespace="System.ComponentModel">
+        <field name="Reset" />
+        <field name="ItemAdded" />
+        <field name="ItemDeleted" />
+        <field name="ItemMoved" />
+        <field name="ItemChanged" />
+        <field name="PropertyDescriptorAdded" />
+        <field name="PropertyDescriptorDeleted" />
+        <field name="PropertyDescriptorChanged" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ListSortDirection" namespace="System.ComponentModel">
+        <field name="Ascending" />
+        <field name="Descending" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ToolboxItemFilterType" namespace="System.ComponentModel">
+        <field name="Allow" />
+        <field name="Custom" />
+        <field name="Prevent" />
+        <field name="Require" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="InheritanceLevel" namespace="System.ComponentModel">
+        <field name="Inherited" />
+        <field name="InheritedReadOnly" />
+        <field name="NotInherited" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PropertyTabScope" namespace="System.ComponentModel">
+        <field name="Static" />
+        <field name="Global" />
+        <field name="Document" />
+        <field name="Component" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="RefreshProperties" namespace="System.ComponentModel">
+        <field name="None" />
+        <field name="All" />
+        <field name="Repaint" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="Regex" namespace="System.Text.RegularExpressions">
+        <constructor name="Regex" argnames="" />
+        <constructor name="Regex(System.String)" argnames="pattern" />
+        <constructor name="Regex(System.String, System.Text.RegularExpressions.RegexOptions)" argnames="pattern, options" />
+        <property name="RightToLeft" propertytype="System.Boolean" />
+        <property name="Options" propertytype="System.Text.RegularExpressions.RegexOptions" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Escape(System.String)" argnames="str" returntype="System.String" />
+        <method name="Unescape(System.String)" argnames="str" returntype="System.String" />
+        <method name="GetGroupNames" argnames="" returntype="System.String[]" />
+        <method name="GetGroupNumbers" argnames="" returntype="System.Int32[]" />
+        <method name="GroupNameFromNumber(System.Int32)" argnames="i" returntype="System.String" />
+        <method name="GroupNumberFromName(System.String)" argnames="name" returntype="System.Int32" />
+        <method name="IsMatch(System.String, System.String)" argnames="input, pattern" returntype="System.Boolean" />
+        <method name="IsMatch(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.Boolean" />
+        <method name="IsMatch(System.String)" argnames="input" returntype="System.Boolean" />
+        <method name="IsMatch(System.String, System.Int32)" argnames="input, startat" returntype="System.Boolean" />
+        <method name="Match(System.String, System.String)" argnames="input, pattern" returntype="System.Text.RegularExpressions.Match" />
+        <method name="Match(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.Text.RegularExpressions.Match" />
+        <method name="Match(System.String)" argnames="input" returntype="System.Text.RegularExpressions.Match" />
+        <method name="Match(System.String, System.Int32)" argnames="input, startat" returntype="System.Text.RegularExpressions.Match" />
+        <method name="Match(System.String, System.Int32, System.Int32)" argnames="input, beginning, length" returntype="System.Text.RegularExpressions.Match" />
+        <method name="Matches(System.String, System.String)" argnames="input, pattern" returntype="System.Text.RegularExpressions.MatchCollection" />
+        <method name="Matches(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.Text.RegularExpressions.MatchCollection" />
+        <method name="Matches(System.String)" argnames="input" returntype="System.Text.RegularExpressions.MatchCollection" />
+        <method name="Matches(System.String, System.Int32)" argnames="input, startat" returntype="System.Text.RegularExpressions.MatchCollection" />
+        <method name="Replace(System.String, System.String, System.String)" argnames="input, pattern, replacement" returntype="System.String" />
+        <method name="Replace(System.String, System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, replacement, options" returntype="System.String" />
+        <method name="Replace(System.String, System.String)" argnames="input, replacement" returntype="System.String" />
+        <method name="Replace(System.String, System.String, System.Int32)" argnames="input, replacement, count" returntype="System.String" />
+        <method name="Replace(System.String, System.String, System.Int32, System.Int32)" argnames="input, replacement, count, startat" returntype="System.String" />
+        <method name="Replace(System.String, System.String, System.Text.RegularExpressions.MatchEvaluator)" argnames="input, pattern, evaluator" returntype="System.String" />
+        <method name="Replace(System.String, System.String, System.Text.RegularExpressions.MatchEvaluator, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, evaluator, options" returntype="System.String" />
+        <method name="Replace(System.String, System.Text.RegularExpressions.MatchEvaluator)" argnames="input, evaluator" returntype="System.String" />
+        <method name="Replace(System.String, System.Text.RegularExpressions.MatchEvaluator, System.Int32)" argnames="input, evaluator, count" returntype="System.String" />
+        <method name="Replace(System.String, System.Text.RegularExpressions.MatchEvaluator, System.Int32, System.Int32)" argnames="input, evaluator, count, startat" returntype="System.String" />
+        <method name="Split(System.String, System.String)" argnames="input, pattern" returntype="System.String[]" />
+        <method name="Split(System.String, System.String, System.Text.RegularExpressions.RegexOptions)" argnames="input, pattern, options" returntype="System.String[]" />
+        <method name="Split(System.String)" argnames="input" returntype="System.String[]" />
+        <method name="Split(System.String, System.Int32)" argnames="input, count" returntype="System.String[]" />
+        <method name="Split(System.String, System.Int32, System.Int32)" argnames="input, count, startat" returntype="System.String[]" />
+        <method name="CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName)" argnames="regexinfos, assemblyname" returntype="System.Void" />
+        <method name="CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[])" argnames="regexinfos, assemblyname, attributes" returntype="System.Void" />
+        <method name="CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[], System.Reflection.AssemblyName, System.Reflection.Emit.CustomAttributeBuilder[], System.String)" argnames="regexinfos, assemblyname, attributes, resourceFile" returntype="System.Void" />
+        <method name="InitializeReferences" argnames="" returntype="System.Void" />
+        <method name="UseOptionC" argnames="" returntype="System.Boolean" />
+        <method name="UseOptionR" argnames="" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Capture" namespace="System.Text.RegularExpressions">
+        <property name="Index" propertytype="System.Int32" />
+        <property name="Length" propertytype="System.Int32" />
+        <property name="Value" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CaptureCollection" namespace="System.Text.RegularExpressions">
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Text.RegularExpressions.Capture" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RegexCompilationInfo" namespace="System.Text.RegularExpressions">
+        <constructor name="RegexCompilationInfo(System.String, System.Text.RegularExpressions.RegexOptions, System.String, System.String, System.Boolean)" argnames="pattern, options, name, fullnamespace, ispublic" />
+        <property name="Pattern" propertytype="System.String" />
+        <property name="Options" propertytype="System.Text.RegularExpressions.RegexOptions" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="IsPublic" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Group" namespace="System.Text.RegularExpressions">
+        <property name="Success" propertytype="System.Boolean" />
+        <property name="Captures" propertytype="System.Text.RegularExpressions.CaptureCollection" />
+        <property name="Index" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
+        <property name="Length" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
+        <property name="Value" inherited="System.Text.RegularExpressions.Capture" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Text.RegularExpressions.Capture" returntype="System.String" />
+        <method name="Synchronized(System.Text.RegularExpressions.Group)" argnames="inner" returntype="System.Text.RegularExpressions.Group" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GroupCollection" namespace="System.Text.RegularExpressions">
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Text.RegularExpressions.Group" />
+        <property name="Item" propertytype="System.Text.RegularExpressions.Group" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RegexRunner" namespace="System.Text.RegularExpressions">
+        <method name="InitTrackCount" argnames="" returntype="System.Void" />
+        <method name="FindFirstChar" argnames="" returntype="System.Boolean" />
+        <method name="Go" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="EnsureStorage" argnames="" returntype="System.Void" />
+        <method name="IsBoundary(System.Int32, System.Int32, System.Int32)" argnames="index, startpos, endpos" returntype="System.Boolean" />
+        <method name="IsECMABoundary(System.Int32, System.Int32, System.Int32)" argnames="index, startpos, endpos" returntype="System.Boolean" />
+        <method name="CharInSet(System.Char, System.String, System.String)" argnames="ch, set, category" returntype="System.Boolean" />
+        <method name="DoubleTrack" argnames="" returntype="System.Void" />
+        <method name="DoubleStack" argnames="" returntype="System.Void" />
+        <method name="DoubleCrawl" argnames="" returntype="System.Void" />
+        <method name="Crawl(System.Int32)" argnames="i" returntype="System.Void" />
+        <method name="Popcrawl" argnames="" returntype="System.Int32" />
+        <method name="Crawlpos" argnames="" returntype="System.Int32" />
+        <method name="Capture(System.Int32, System.Int32, System.Int32)" argnames="capnum, start, end" returntype="System.Void" />
+        <method name="TransferCapture(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="capnum, uncapnum, start, end" returntype="System.Void" />
+        <method name="Uncapture" argnames="" returntype="System.Void" />
+        <method name="IsMatched(System.Int32)" argnames="cap" returntype="System.Boolean" />
+        <method name="MatchIndex(System.Int32)" argnames="cap" returntype="System.Int32" />
+        <method name="MatchLength(System.Int32)" argnames="cap" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Match" namespace="System.Text.RegularExpressions">
+        <property name="Empty" propertytype="System.Text.RegularExpressions.Match" />
+        <property name="Groups" propertytype="System.Text.RegularExpressions.GroupCollection" />
+        <property name="Success" inherited="System.Text.RegularExpressions.Group" propertytype="System.Boolean" />
+        <property name="Captures" inherited="System.Text.RegularExpressions.Group" propertytype="System.Text.RegularExpressions.CaptureCollection" />
+        <property name="Index" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
+        <property name="Length" inherited="System.Text.RegularExpressions.Capture" propertytype="System.Int32" />
+        <property name="Value" inherited="System.Text.RegularExpressions.Capture" propertytype="System.String" />
+        <method name="Result(System.String)" argnames="replacement" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Text.RegularExpressions.Capture" returntype="System.String" />
+        <method name="NextMatch" argnames="" returntype="System.Text.RegularExpressions.Match" />
+        <method name="Synchronized(System.Text.RegularExpressions.Match)" argnames="inner" returntype="System.Text.RegularExpressions.Match" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MatchCollection" namespace="System.Text.RegularExpressions">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Text.RegularExpressions.Match" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RegexRunnerFactory" namespace="System.Text.RegularExpressions">
+        <constructor name="RegexRunnerFactory" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="MatchEvaluator" namespace="System.Text.RegularExpressions">
+        <constructor name="MatchEvaluator(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.String" />
+        <method name="BeginInvoke(System.Text.RegularExpressions.Match, System.AsyncCallback, System.Object)" argnames="match, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Text.RegularExpressions.Match)" argnames="match" returntype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="RegexOptions" namespace="System.Text.RegularExpressions">
+        <field name="None" />
+        <field name="IgnoreCase" />
+        <field name="Multiline" />
+        <field name="ExplicitCapture" />
+        <field name="Compiled" />
+        <field name="Singleline" />
+        <field name="IgnorePatternWhitespace" />
+        <field name="RightToLeft" />
+        <field name="ECMAScript" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="CodeObject" namespace="System.CodeDom">
+        <constructor name="CodeObject" argnames="" />
+        <property name="UserData" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeExpression" namespace="System.CodeDom">
+        <constructor name="CodeExpression" argnames="" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeArgumentReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeArgumentReferenceExpression" argnames="" />
+        <constructor name="CodeArgumentReferenceExpression(System.String)" argnames="parameterName" />
+        <property name="ParameterName" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeArrayCreateExpression" namespace="System.CodeDom">
+        <constructor name="CodeArrayCreateExpression" argnames="" />
+        <constructor name="CodeArrayCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression[])" argnames="createType, initializers" />
+        <constructor name="CodeArrayCreateExpression(System.String, System.CodeDom.CodeExpression[])" argnames="createType, initializers" />
+        <constructor name="CodeArrayCreateExpression(System.Type, System.CodeDom.CodeExpression[])" argnames="createType, initializers" />
+        <constructor name="CodeArrayCreateExpression(System.CodeDom.CodeTypeReference, System.Int32)" argnames="createType, size" />
+        <constructor name="CodeArrayCreateExpression(System.String, System.Int32)" argnames="createType, size" />
+        <constructor name="CodeArrayCreateExpression(System.Type, System.Int32)" argnames="createType, size" />
+        <constructor name="CodeArrayCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression)" argnames="createType, size" />
+        <constructor name="CodeArrayCreateExpression(System.String, System.CodeDom.CodeExpression)" argnames="createType, size" />
+        <constructor name="CodeArrayCreateExpression(System.Type, System.CodeDom.CodeExpression)" argnames="createType, size" />
+        <property name="CreateType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Initializers" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="SizeExpression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeArrayIndexerExpression" namespace="System.CodeDom">
+        <constructor name="CodeArrayIndexerExpression" argnames="" />
+        <constructor name="CodeArrayIndexerExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression[])" argnames="targetObject, indices" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Indices" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeStatement" namespace="System.CodeDom">
+        <constructor name="CodeStatement" argnames="" />
+        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeAssignStatement" namespace="System.CodeDom">
+        <constructor name="CodeAssignStatement" argnames="" />
+        <constructor name="CodeAssignStatement(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression)" argnames="left, right" />
+        <property name="Left" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Right" propertytype="System.CodeDom.CodeExpression" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeAttachEventStatement" namespace="System.CodeDom">
+        <constructor name="CodeAttachEventStatement" argnames="" />
+        <constructor name="CodeAttachEventStatement(System.CodeDom.CodeEventReferenceExpression, System.CodeDom.CodeExpression)" argnames="eventRef, listener" />
+        <constructor name="CodeAttachEventStatement(System.CodeDom.CodeExpression, System.String, System.CodeDom.CodeExpression)" argnames="targetObject, eventName, listener" />
+        <property name="Event" propertytype="System.CodeDom.CodeEventReferenceExpression" />
+        <property name="Listener" propertytype="System.CodeDom.CodeExpression" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeAttributeArgument" namespace="System.CodeDom">
+        <constructor name="CodeAttributeArgument" argnames="" />
+        <constructor name="CodeAttributeArgument(System.CodeDom.CodeExpression)" argnames="value" />
+        <constructor name="CodeAttributeArgument(System.String, System.CodeDom.CodeExpression)" argnames="name, value" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Value" propertytype="System.CodeDom.CodeExpression" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeAttributeArgumentCollection" namespace="System.CodeDom">
+        <constructor name="CodeAttributeArgumentCollection" argnames="" />
+        <constructor name="CodeAttributeArgumentCollection(System.CodeDom.CodeAttributeArgumentCollection)" argnames="value" />
+        <constructor name="CodeAttributeArgumentCollection(System.CodeDom.CodeAttributeArgument[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeAttributeArgument" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeAttributeArgument[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeAttributeArgumentCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeAttributeArgument[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeAttributeArgument)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeAttributeArgument)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeAttributeDeclaration" namespace="System.CodeDom">
+        <constructor name="CodeAttributeDeclaration" argnames="" />
+        <constructor name="CodeAttributeDeclaration(System.String)" argnames="name" />
+        <constructor name="CodeAttributeDeclaration(System.String, System.CodeDom.CodeAttributeArgument[])" argnames="name, arguments" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Arguments" propertytype="System.CodeDom.CodeAttributeArgumentCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeAttributeDeclarationCollection" namespace="System.CodeDom">
+        <constructor name="CodeAttributeDeclarationCollection" argnames="" />
+        <constructor name="CodeAttributeDeclarationCollection(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="value" />
+        <constructor name="CodeAttributeDeclarationCollection(System.CodeDom.CodeAttributeDeclaration[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeAttributeDeclaration" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeAttributeDeclaration[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeAttributeDeclaration[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeAttributeDeclaration)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeAttributeDeclaration)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeBaseReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeBaseReferenceExpression" argnames="" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeBinaryOperatorExpression" namespace="System.CodeDom">
+        <constructor name="CodeBinaryOperatorExpression" argnames="" />
+        <constructor name="CodeBinaryOperatorExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeBinaryOperatorType, System.CodeDom.CodeExpression)" argnames="left, op, right" />
+        <property name="Right" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Left" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Operator" propertytype="System.CodeDom.CodeBinaryOperatorType" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeCastExpression" namespace="System.CodeDom">
+        <constructor name="CodeCastExpression" argnames="" />
+        <constructor name="CodeCastExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression)" argnames="targetType, expression" />
+        <constructor name="CodeCastExpression(System.String, System.CodeDom.CodeExpression)" argnames="targetType, expression" />
+        <constructor name="CodeCastExpression(System.Type, System.CodeDom.CodeExpression)" argnames="targetType, expression" />
+        <property name="TargetType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeCatchClause" namespace="System.CodeDom">
+        <constructor name="CodeCatchClause" argnames="" />
+        <constructor name="CodeCatchClause(System.String)" argnames="localName" />
+        <constructor name="CodeCatchClause(System.String, System.CodeDom.CodeTypeReference)" argnames="localName, catchExceptionType" />
+        <constructor name="CodeCatchClause(System.String, System.CodeDom.CodeTypeReference, System.CodeDom.CodeStatement[])" argnames="localName, catchExceptionType, statements" />
+        <property name="LocalName" propertytype="System.String" />
+        <property name="CatchExceptionType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Statements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeCatchClauseCollection" namespace="System.CodeDom">
+        <constructor name="CodeCatchClauseCollection" argnames="" />
+        <constructor name="CodeCatchClauseCollection(System.CodeDom.CodeCatchClauseCollection)" argnames="value" />
+        <constructor name="CodeCatchClauseCollection(System.CodeDom.CodeCatchClause[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeCatchClause" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeCatchClause[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeCatchClauseCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeCatchClause[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeCatchClause)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeCatchClause)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeComment" namespace="System.CodeDom">
+        <constructor name="CodeComment" argnames="" />
+        <constructor name="CodeComment(System.String)" argnames="text" />
+        <constructor name="CodeComment(System.String, System.Boolean)" argnames="text, docComment" />
+        <property name="DocComment" propertytype="System.Boolean" />
+        <property name="Text" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeCommentStatement" namespace="System.CodeDom">
+        <constructor name="CodeCommentStatement" argnames="" />
+        <constructor name="CodeCommentStatement(System.CodeDom.CodeComment)" argnames="comment" />
+        <constructor name="CodeCommentStatement(System.String)" argnames="text" />
+        <constructor name="CodeCommentStatement(System.String, System.Boolean)" argnames="text, docComment" />
+        <property name="Comment" propertytype="System.CodeDom.CodeComment" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeCommentStatementCollection" namespace="System.CodeDom">
+        <constructor name="CodeCommentStatementCollection" argnames="" />
+        <constructor name="CodeCommentStatementCollection(System.CodeDom.CodeCommentStatementCollection)" argnames="value" />
+        <constructor name="CodeCommentStatementCollection(System.CodeDom.CodeCommentStatement[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeCommentStatement" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeCommentStatement[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeCommentStatementCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeCommentStatement[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeCommentStatement)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeCommentStatement)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeCompileUnit" namespace="System.CodeDom">
+        <constructor name="CodeCompileUnit" argnames="" />
+        <property name="Namespaces" propertytype="System.CodeDom.CodeNamespaceCollection" />
+        <property name="ReferencedAssemblies" propertytype="System.Collections.Specialized.StringCollection" />
+        <property name="AssemblyCustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeConditionStatement" namespace="System.CodeDom">
+        <constructor name="CodeConditionStatement" argnames="" />
+        <constructor name="CodeConditionStatement(System.CodeDom.CodeExpression, System.CodeDom.CodeStatement[])" argnames="condition, trueStatements" />
+        <constructor name="CodeConditionStatement(System.CodeDom.CodeExpression, System.CodeDom.CodeStatement[], System.CodeDom.CodeStatement[])" argnames="condition, trueStatements, falseStatements" />
+        <property name="Condition" propertytype="System.CodeDom.CodeExpression" />
+        <property name="TrueStatements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="FalseStatements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTypeMember" namespace="System.CodeDom">
+        <constructor name="CodeTypeMember" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Attributes" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeMemberMethod" namespace="System.CodeDom">
+        <constructor name="CodeMemberMethod" argnames="" />
+        <property name="ReturnType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Statements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="Parameters" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
+        <property name="PrivateImplementationType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="ImplementationTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="ReturnTypeCustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PopulateParameters" />
+        <event name="PopulateStatements" />
+        <event name="PopulateImplementationTypes" />
+    </class>
+    <class name="CodeConstructor" namespace="System.CodeDom">
+        <constructor name="CodeConstructor" argnames="" />
+        <property name="BaseConstructorArgs" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="ChainedConstructorArgs" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="ReturnType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Statements" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="Parameters" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
+        <property name="PrivateImplementationType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="ImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="ReturnTypeCustomAttributes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PopulateParameters" inherited="System.CodeDom.CodeMemberMethod" />
+        <event name="PopulateStatements" inherited="System.CodeDom.CodeMemberMethod" />
+        <event name="PopulateImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" />
+    </class>
+    <class name="CodeDelegateCreateExpression" namespace="System.CodeDom">
+        <constructor name="CodeDelegateCreateExpression" argnames="" />
+        <constructor name="CodeDelegateCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression, System.String)" argnames="delegateType, targetObject, methodName" />
+        <property name="DelegateType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeDelegateInvokeExpression" namespace="System.CodeDom">
+        <constructor name="CodeDelegateInvokeExpression" argnames="" />
+        <constructor name="CodeDelegateInvokeExpression(System.CodeDom.CodeExpression)" argnames="targetObject" />
+        <constructor name="CodeDelegateInvokeExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression[])" argnames="targetObject, parameters" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Parameters" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeDirectionExpression" namespace="System.CodeDom">
+        <constructor name="CodeDirectionExpression" argnames="" />
+        <constructor name="CodeDirectionExpression(System.CodeDom.FieldDirection, System.CodeDom.CodeExpression)" argnames="direction, expression" />
+        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Direction" propertytype="System.CodeDom.FieldDirection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeEntryPointMethod" namespace="System.CodeDom">
+        <constructor name="CodeEntryPointMethod" argnames="" />
+        <property name="ReturnType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Statements" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="Parameters" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
+        <property name="PrivateImplementationType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="ImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="ReturnTypeCustomAttributes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PopulateParameters" inherited="System.CodeDom.CodeMemberMethod" />
+        <event name="PopulateStatements" inherited="System.CodeDom.CodeMemberMethod" />
+        <event name="PopulateImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" />
+    </class>
+    <class name="CodeEventReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeEventReferenceExpression" argnames="" />
+        <constructor name="CodeEventReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, eventName" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="EventName" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeExpressionCollection" namespace="System.CodeDom">
+        <constructor name="CodeExpressionCollection" argnames="" />
+        <constructor name="CodeExpressionCollection(System.CodeDom.CodeExpressionCollection)" argnames="value" />
+        <constructor name="CodeExpressionCollection(System.CodeDom.CodeExpression[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeExpression" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeExpression[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeExpressionCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeExpression[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeExpression)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeExpressionStatement" namespace="System.CodeDom">
+        <constructor name="CodeExpressionStatement" argnames="" />
+        <constructor name="CodeExpressionStatement(System.CodeDom.CodeExpression)" argnames="expression" />
+        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeFieldReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeFieldReferenceExpression" argnames="" />
+        <constructor name="CodeFieldReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, fieldName" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="FieldName" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeGotoStatement" namespace="System.CodeDom">
+        <constructor name="CodeGotoStatement(System.String)" argnames="label" />
+        <property name="Label" propertytype="System.String" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeIndexerExpression" namespace="System.CodeDom">
+        <constructor name="CodeIndexerExpression" argnames="" />
+        <constructor name="CodeIndexerExpression(System.CodeDom.CodeExpression, System.CodeDom.CodeExpression[])" argnames="targetObject, indices" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Indices" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeIterationStatement" namespace="System.CodeDom">
+        <constructor name="CodeIterationStatement" argnames="" />
+        <constructor name="CodeIterationStatement(System.CodeDom.CodeStatement, System.CodeDom.CodeExpression, System.CodeDom.CodeStatement, System.CodeDom.CodeStatement[])" argnames="initStatement, testExpression, incrementStatement, statements" />
+        <property name="InitStatement" propertytype="System.CodeDom.CodeStatement" />
+        <property name="TestExpression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="IncrementStatement" propertytype="System.CodeDom.CodeStatement" />
+        <property name="Statements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeLabeledStatement" namespace="System.CodeDom">
+        <constructor name="CodeLabeledStatement" argnames="" />
+        <constructor name="CodeLabeledStatement(System.String)" argnames="label" />
+        <constructor name="CodeLabeledStatement(System.String, System.CodeDom.CodeStatement)" argnames="label, statement" />
+        <property name="Label" propertytype="System.String" />
+        <property name="Statement" propertytype="System.CodeDom.CodeStatement" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeLinePragma" namespace="System.CodeDom">
+        <constructor name="CodeLinePragma(System.String, System.Int32)" argnames="fileName, lineNumber" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeMemberEvent" namespace="System.CodeDom">
+        <constructor name="CodeMemberEvent" argnames="" />
+        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="PrivateImplementationType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="ImplementationTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeMemberField" namespace="System.CodeDom">
+        <constructor name="CodeMemberField" argnames="" />
+        <constructor name="CodeMemberField(System.CodeDom.CodeTypeReference, System.String)" argnames="type, name" />
+        <constructor name="CodeMemberField(System.String, System.String)" argnames="type, name" />
+        <constructor name="CodeMemberField(System.Type, System.String)" argnames="type, name" />
+        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="InitExpression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeMemberProperty" namespace="System.CodeDom">
+        <constructor name="CodeMemberProperty" argnames="" />
+        <property name="PrivateImplementationType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="ImplementationTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="HasGet" propertytype="System.Boolean" />
+        <property name="HasSet" propertytype="System.Boolean" />
+        <property name="GetStatements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="SetStatements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="Parameters" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeMethodInvokeExpression" namespace="System.CodeDom">
+        <constructor name="CodeMethodInvokeExpression" argnames="" />
+        <constructor name="CodeMethodInvokeExpression(System.CodeDom.CodeMethodReferenceExpression, System.CodeDom.CodeExpression[])" argnames="method, parameters" />
+        <constructor name="CodeMethodInvokeExpression(System.CodeDom.CodeExpression, System.String, System.CodeDom.CodeExpression[])" argnames="targetObject, methodName, parameters" />
+        <property name="Method" propertytype="System.CodeDom.CodeMethodReferenceExpression" />
+        <property name="Parameters" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeMethodReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeMethodReferenceExpression" argnames="" />
+        <constructor name="CodeMethodReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, methodName" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeMethodReturnStatement" namespace="System.CodeDom">
+        <constructor name="CodeMethodReturnStatement" argnames="" />
+        <constructor name="CodeMethodReturnStatement(System.CodeDom.CodeExpression)" argnames="expression" />
+        <property name="Expression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeNamespace" namespace="System.CodeDom">
+        <constructor name="CodeNamespace" argnames="" />
+        <constructor name="CodeNamespace(System.String)" argnames="name" />
+        <property name="Types" propertytype="System.CodeDom.CodeTypeDeclarationCollection" />
+        <property name="Imports" propertytype="System.CodeDom.CodeNamespaceImportCollection" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Comments" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PopulateComments" />
+        <event name="PopulateImports" />
+        <event name="PopulateTypes" />
+    </class>
+    <class name="CodeNamespaceCollection" namespace="System.CodeDom">
+        <constructor name="CodeNamespaceCollection" argnames="" />
+        <constructor name="CodeNamespaceCollection(System.CodeDom.CodeNamespaceCollection)" argnames="value" />
+        <constructor name="CodeNamespaceCollection(System.CodeDom.CodeNamespace[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeNamespace" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeNamespace[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeNamespaceCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeNamespace[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeNamespace)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeNamespace)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeNamespaceImport" namespace="System.CodeDom">
+        <constructor name="CodeNamespaceImport" argnames="" />
+        <constructor name="CodeNamespaceImport(System.String)" argnames="nameSpace" />
+        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeNamespaceImportCollection" namespace="System.CodeDom">
+        <constructor name="CodeNamespaceImportCollection" argnames="" />
+        <property name="Item" propertytype="System.CodeDom.CodeNamespaceImport" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeNamespaceImport)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeNamespaceImport[])" argnames="value" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeObjectCreateExpression" namespace="System.CodeDom">
+        <constructor name="CodeObjectCreateExpression" argnames="" />
+        <constructor name="CodeObjectCreateExpression(System.CodeDom.CodeTypeReference, System.CodeDom.CodeExpression[])" argnames="createType, parameters" />
+        <constructor name="CodeObjectCreateExpression(System.String, System.CodeDom.CodeExpression[])" argnames="createType, parameters" />
+        <constructor name="CodeObjectCreateExpression(System.Type, System.CodeDom.CodeExpression[])" argnames="createType, parameters" />
+        <property name="CreateType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Parameters" propertytype="System.CodeDom.CodeExpressionCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeParameterDeclarationExpression" namespace="System.CodeDom">
+        <constructor name="CodeParameterDeclarationExpression" argnames="" />
+        <constructor name="CodeParameterDeclarationExpression(System.CodeDom.CodeTypeReference, System.String)" argnames="type, name" />
+        <constructor name="CodeParameterDeclarationExpression(System.String, System.String)" argnames="type, name" />
+        <constructor name="CodeParameterDeclarationExpression(System.Type, System.String)" argnames="type, name" />
+        <property name="CustomAttributes" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="Direction" propertytype="System.CodeDom.FieldDirection" />
+        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Name" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeParameterDeclarationExpressionCollection" namespace="System.CodeDom">
+        <constructor name="CodeParameterDeclarationExpressionCollection" argnames="" />
+        <constructor name="CodeParameterDeclarationExpressionCollection(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="value" />
+        <constructor name="CodeParameterDeclarationExpressionCollection(System.CodeDom.CodeParameterDeclarationExpression[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeParameterDeclarationExpression" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeParameterDeclarationExpression[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeParameterDeclarationExpression[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeParameterDeclarationExpression)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeParameterDeclarationExpression)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodePrimitiveExpression" namespace="System.CodeDom">
+        <constructor name="CodePrimitiveExpression" argnames="" />
+        <constructor name="CodePrimitiveExpression(System.Object)" argnames="value" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodePropertyReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodePropertyReferenceExpression" argnames="" />
+        <constructor name="CodePropertyReferenceExpression(System.CodeDom.CodeExpression, System.String)" argnames="targetObject, propertyName" />
+        <property name="TargetObject" propertytype="System.CodeDom.CodeExpression" />
+        <property name="PropertyName" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodePropertySetValueReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodePropertySetValueReferenceExpression" argnames="" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeRemoveEventStatement" namespace="System.CodeDom">
+        <constructor name="CodeRemoveEventStatement" argnames="" />
+        <constructor name="CodeRemoveEventStatement(System.CodeDom.CodeEventReferenceExpression, System.CodeDom.CodeExpression)" argnames="eventRef, listener" />
+        <constructor name="CodeRemoveEventStatement(System.CodeDom.CodeExpression, System.String, System.CodeDom.CodeExpression)" argnames="targetObject, eventName, listener" />
+        <property name="Event" propertytype="System.CodeDom.CodeEventReferenceExpression" />
+        <property name="Listener" propertytype="System.CodeDom.CodeExpression" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeSnippetCompileUnit" namespace="System.CodeDom">
+        <constructor name="CodeSnippetCompileUnit(System.String)" argnames="value" />
+        <property name="Value" propertytype="System.String" />
+        <property name="LinePragma" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Namespaces" inherited="System.CodeDom.CodeCompileUnit" propertytype="System.CodeDom.CodeNamespaceCollection" />
+        <property name="ReferencedAssemblies" inherited="System.CodeDom.CodeCompileUnit" propertytype="System.Collections.Specialized.StringCollection" />
+        <property name="AssemblyCustomAttributes" inherited="System.CodeDom.CodeCompileUnit" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeSnippetExpression" namespace="System.CodeDom">
+        <constructor name="CodeSnippetExpression" argnames="" />
+        <constructor name="CodeSnippetExpression(System.String)" argnames="value" />
+        <property name="Value" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeSnippetStatement" namespace="System.CodeDom">
+        <constructor name="CodeSnippetStatement" argnames="" />
+        <constructor name="CodeSnippetStatement(System.String)" argnames="value" />
+        <property name="Value" propertytype="System.String" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeSnippetTypeMember" namespace="System.CodeDom">
+        <constructor name="CodeSnippetTypeMember" argnames="" />
+        <constructor name="CodeSnippetTypeMember(System.String)" argnames="text" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeStatementCollection" namespace="System.CodeDom">
+        <constructor name="CodeStatementCollection" argnames="" />
+        <constructor name="CodeStatementCollection(System.CodeDom.CodeStatementCollection)" argnames="value" />
+        <constructor name="CodeStatementCollection(System.CodeDom.CodeStatement[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeStatement" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Int32" />
+        <method name="Add(System.CodeDom.CodeExpression)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeStatement[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeStatementCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeStatement[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeStatement)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeStatement)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeThisReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeThisReferenceExpression" argnames="" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeThrowExceptionStatement" namespace="System.CodeDom">
+        <constructor name="CodeThrowExceptionStatement" argnames="" />
+        <constructor name="CodeThrowExceptionStatement(System.CodeDom.CodeExpression)" argnames="toThrow" />
+        <property name="ToThrow" propertytype="System.CodeDom.CodeExpression" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTryCatchFinallyStatement" namespace="System.CodeDom">
+        <constructor name="CodeTryCatchFinallyStatement" argnames="" />
+        <constructor name="CodeTryCatchFinallyStatement(System.CodeDom.CodeStatement[], System.CodeDom.CodeCatchClause[])" argnames="tryStatements, catchClauses" />
+        <constructor name="CodeTryCatchFinallyStatement(System.CodeDom.CodeStatement[], System.CodeDom.CodeCatchClause[], System.CodeDom.CodeStatement[])" argnames="tryStatements, catchClauses, finallyStatements" />
+        <property name="TryStatements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="CatchClauses" propertytype="System.CodeDom.CodeCatchClauseCollection" />
+        <property name="FinallyStatements" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTypeConstructor" namespace="System.CodeDom">
+        <constructor name="CodeTypeConstructor" argnames="" />
+        <property name="ReturnType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Statements" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeStatementCollection" />
+        <property name="Parameters" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
+        <property name="PrivateImplementationType" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="ImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="ReturnTypeCustomAttributes" inherited="System.CodeDom.CodeMemberMethod" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PopulateParameters" inherited="System.CodeDom.CodeMemberMethod" />
+        <event name="PopulateStatements" inherited="System.CodeDom.CodeMemberMethod" />
+        <event name="PopulateImplementationTypes" inherited="System.CodeDom.CodeMemberMethod" />
+    </class>
+    <class name="CodeTypeDeclaration" namespace="System.CodeDom">
+        <constructor name="CodeTypeDeclaration" argnames="" />
+        <constructor name="CodeTypeDeclaration(System.String)" argnames="name" />
+        <property name="TypeAttributes" propertytype="System.Reflection.TypeAttributes" />
+        <property name="BaseTypes" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="IsClass" propertytype="System.Boolean" />
+        <property name="IsStruct" propertytype="System.Boolean" />
+        <property name="IsEnum" propertytype="System.Boolean" />
+        <property name="IsInterface" propertytype="System.Boolean" />
+        <property name="Members" propertytype="System.CodeDom.CodeTypeMemberCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PopulateBaseTypes" />
+        <event name="PopulateMembers" />
+    </class>
+    <class name="CodeTypeDeclarationCollection" namespace="System.CodeDom">
+        <constructor name="CodeTypeDeclarationCollection" argnames="" />
+        <constructor name="CodeTypeDeclarationCollection(System.CodeDom.CodeTypeDeclarationCollection)" argnames="value" />
+        <constructor name="CodeTypeDeclarationCollection(System.CodeDom.CodeTypeDeclaration[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeTypeDeclaration" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeTypeDeclaration[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeTypeDeclarationCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeTypeDeclaration[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeTypeDeclaration)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeTypeDeclaration)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTypeDelegate" namespace="System.CodeDom">
+        <constructor name="CodeTypeDelegate" argnames="" />
+        <constructor name="CodeTypeDelegate(System.String)" argnames="name" />
+        <property name="ReturnType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="Parameters" propertytype="System.CodeDom.CodeParameterDeclarationExpressionCollection" />
+        <property name="TypeAttributes" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Reflection.TypeAttributes" />
+        <property name="BaseTypes" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.CodeDom.CodeTypeReferenceCollection" />
+        <property name="IsClass" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
+        <property name="IsStruct" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
+        <property name="IsEnum" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
+        <property name="IsInterface" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.Boolean" />
+        <property name="Members" inherited="System.CodeDom.CodeTypeDeclaration" propertytype="System.CodeDom.CodeTypeMemberCollection" />
+        <property name="Name" inherited="System.CodeDom.CodeTypeMember" propertytype="System.String" />
+        <property name="Attributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.MemberAttributes" />
+        <property name="CustomAttributes" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeAttributeDeclarationCollection" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="Comments" inherited="System.CodeDom.CodeTypeMember" propertytype="System.CodeDom.CodeCommentStatementCollection" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="PopulateBaseTypes" inherited="System.CodeDom.CodeTypeDeclaration" />
+        <event name="PopulateMembers" inherited="System.CodeDom.CodeTypeDeclaration" />
+    </class>
+    <class name="CodeTypeMemberCollection" namespace="System.CodeDom">
+        <constructor name="CodeTypeMemberCollection" argnames="" />
+        <constructor name="CodeTypeMemberCollection(System.CodeDom.CodeTypeMemberCollection)" argnames="value" />
+        <constructor name="CodeTypeMemberCollection(System.CodeDom.CodeTypeMember[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeTypeMember" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.CodeTypeMember[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeTypeMemberCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeTypeMember[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeTypeMember)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeTypeMember)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTypeOfExpression" namespace="System.CodeDom">
+        <constructor name="CodeTypeOfExpression" argnames="" />
+        <constructor name="CodeTypeOfExpression(System.CodeDom.CodeTypeReference)" argnames="type" />
+        <constructor name="CodeTypeOfExpression(System.String)" argnames="type" />
+        <constructor name="CodeTypeOfExpression(System.Type)" argnames="type" />
+        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTypeReference" namespace="System.CodeDom">
+        <constructor name="CodeTypeReference(System.Type)" argnames="type" />
+        <constructor name="CodeTypeReference(System.String)" argnames="typeName" />
+        <constructor name="CodeTypeReference(System.String, System.Int32)" argnames="baseType, rank" />
+        <constructor name="CodeTypeReference(System.CodeDom.CodeTypeReference, System.Int32)" argnames="arrayType, rank" />
+        <property name="ArrayElementType" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="ArrayRank" propertytype="System.Int32" />
+        <property name="BaseType" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTypeReferenceCollection" namespace="System.CodeDom">
+        <constructor name="CodeTypeReferenceCollection" argnames="" />
+        <constructor name="CodeTypeReferenceCollection(System.CodeDom.CodeTypeReferenceCollection)" argnames="value" />
+        <constructor name="CodeTypeReferenceCollection(System.CodeDom.CodeTypeReference[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Int32" />
+        <method name="Add(System.String)" argnames="value" returntype="System.Void" />
+        <method name="Add(System.Type)" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeTypeReference[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.CodeTypeReferenceCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.CodeTypeReference[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.CodeTypeReference)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeTypeReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeTypeReferenceExpression" argnames="" />
+        <constructor name="CodeTypeReferenceExpression(System.CodeDom.CodeTypeReference)" argnames="type" />
+        <constructor name="CodeTypeReferenceExpression(System.String)" argnames="type" />
+        <constructor name="CodeTypeReferenceExpression(System.Type)" argnames="type" />
+        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeVariableDeclarationStatement" namespace="System.CodeDom">
+        <constructor name="CodeVariableDeclarationStatement" argnames="" />
+        <constructor name="CodeVariableDeclarationStatement(System.CodeDom.CodeTypeReference, System.String)" argnames="type, name" />
+        <constructor name="CodeVariableDeclarationStatement(System.String, System.String)" argnames="type, name" />
+        <constructor name="CodeVariableDeclarationStatement(System.Type, System.String)" argnames="type, name" />
+        <constructor name="CodeVariableDeclarationStatement(System.CodeDom.CodeTypeReference, System.String, System.CodeDom.CodeExpression)" argnames="type, name, initExpression" />
+        <constructor name="CodeVariableDeclarationStatement(System.String, System.String, System.CodeDom.CodeExpression)" argnames="type, name, initExpression" />
+        <constructor name="CodeVariableDeclarationStatement(System.Type, System.String, System.CodeDom.CodeExpression)" argnames="type, name, initExpression" />
+        <property name="InitExpression" propertytype="System.CodeDom.CodeExpression" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Type" propertytype="System.CodeDom.CodeTypeReference" />
+        <property name="LinePragma" inherited="System.CodeDom.CodeStatement" propertytype="System.CodeDom.CodeLinePragma" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeVariableReferenceExpression" namespace="System.CodeDom">
+        <constructor name="CodeVariableReferenceExpression" argnames="" />
+        <constructor name="CodeVariableReferenceExpression(System.String)" argnames="variableName" />
+        <property name="VariableName" propertytype="System.String" />
+        <property name="UserData" inherited="System.CodeDom.CodeObject" propertytype="System.Collections.IDictionary" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="CodeBinaryOperatorType" namespace="System.CodeDom">
+        <field name="Add" />
+        <field name="Subtract" />
+        <field name="Multiply" />
+        <field name="Divide" />
+        <field name="Modulus" />
+        <field name="Assign" />
+        <field name="IdentityInequality" />
+        <field name="IdentityEquality" />
+        <field name="ValueEquality" />
+        <field name="BitwiseOr" />
+        <field name="BitwiseAnd" />
+        <field name="BooleanOr" />
+        <field name="BooleanAnd" />
+        <field name="LessThan" />
+        <field name="LessThanOrEqual" />
+        <field name="GreaterThan" />
+        <field name="GreaterThanOrEqual" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="FieldDirection" namespace="System.CodeDom">
+        <field name="In" />
+        <field name="Out" />
+        <field name="Ref" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="MemberAttributes" namespace="System.CodeDom">
+        <field name="Abstract" />
+        <field name="Final" />
+        <field name="Static" />
+        <field name="Override" />
+        <field name="Const" />
+        <field name="New" />
+        <field name="Overloaded" />
+        <field name="Assembly" />
+        <field name="FamilyAndAssembly" />
+        <field name="Family" />
+        <field name="FamilyOrAssembly" />
+        <field name="Private" />
+        <field name="Public" />
+        <field name="AccessMask" />
+        <field name="ScopeMask" />
+        <field name="VTableMask" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="Switch" namespace="System.Diagnostics">
+        <constructor name="Switch(System.String, System.String)" argnames="displayName, description" />
+        <property name="DisplayName" propertytype="System.String" />
+        <property name="Description" propertytype="System.String" />
+        <property name="SwitchSetting" propertytype="System.Int32" />
+        <method name="OnSwitchSettingChanged" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="BooleanSwitch" namespace="System.Diagnostics">
+        <constructor name="BooleanSwitch(System.String, System.String)" argnames="displayName, description" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="DisplayName" inherited="System.Diagnostics.Switch" propertytype="System.String" />
+        <property name="Description" inherited="System.Diagnostics.Switch" propertytype="System.String" />
+        <property name="SwitchSetting" inherited="System.Diagnostics.Switch" propertytype="System.Int32" />
+        <method name="OnSwitchSettingChanged" argnames="" inherited="System.Diagnostics.Switch" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Debug" namespace="System.Diagnostics">
+        <property name="Listeners" propertytype="System.Diagnostics.TraceListenerCollection" />
+        <property name="AutoFlush" propertytype="System.Boolean" />
+        <property name="IndentLevel" propertytype="System.Int32" />
+        <property name="IndentSize" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Assert(System.Boolean)" argnames="condition" returntype="System.Void" />
+        <method name="Assert(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
+        <method name="Assert(System.Boolean, System.String, System.String)" argnames="condition, message, detailMessage" returntype="System.Void" />
+        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.String, System.String)" argnames="message, category" returntype="System.Void" />
+        <method name="Write(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.String)" argnames="message, category" returntype="System.Void" />
+        <method name="WriteLine(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
+        <method name="Indent" argnames="" returntype="System.Void" />
+        <method name="Unindent" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TraceListener" namespace="System.Diagnostics">
+        <constructor name="TraceListener" argnames="" />
+        <constructor name="TraceListener(System.String)" argnames="name" />
+        <property name="Name" propertytype="System.String" />
+        <property name="IndentLevel" propertytype="System.Int32" />
+        <property name="IndentSize" propertytype="System.Int32" />
+        <property name="NeedIndent" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="WriteLine(System.Object, System.String)" argnames="o, category" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.String)" argnames="message, category" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
+        <method name="WriteIndent" argnames="" returntype="System.Void" />
+        <method name="Write(System.Object, System.String)" argnames="o, category" returntype="System.Void" />
+        <method name="Write(System.String, System.String)" argnames="message, category" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="o" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
+        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DefaultTraceListener" namespace="System.Diagnostics">
+        <constructor name="DefaultTraceListener" argnames="" />
+        <property name="AssertUiEnabled" propertytype="System.Boolean" />
+        <property name="LogFileName" propertytype="System.String" />
+        <property name="UiPermission" propertytype="System.Boolean" />
+        <property name="UserInteractive" propertytype="System.Boolean" />
+        <property name="Name" inherited="System.Diagnostics.TraceListener" propertytype="System.String" />
+        <property name="IndentLevel" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
+        <property name="IndentSize" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
+        <property name="NeedIndent" inherited="System.Diagnostics.TraceListener" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
+        <method name="WriteIndent" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
+        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Flush" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Close" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TextWriterTraceListener" namespace="System.Diagnostics">
+        <constructor name="TextWriterTraceListener" argnames="" />
+        <constructor name="TextWriterTraceListener(System.IO.Stream)" argnames="stream" />
+        <constructor name="TextWriterTraceListener(System.IO.Stream, System.String)" argnames="stream, name" />
+        <constructor name="TextWriterTraceListener(System.IO.TextWriter)" argnames="writer" />
+        <constructor name="TextWriterTraceListener(System.IO.TextWriter, System.String)" argnames="writer, name" />
+        <constructor name="TextWriterTraceListener(System.String)" argnames="fileName" />
+        <constructor name="TextWriterTraceListener(System.String, System.String)" argnames="fileName, name" />
+        <property name="Writer" propertytype="System.IO.TextWriter" />
+        <property name="Name" inherited="System.Diagnostics.TraceListener" propertytype="System.String" />
+        <property name="IndentLevel" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
+        <property name="IndentSize" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
+        <property name="NeedIndent" inherited="System.Diagnostics.TraceListener" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
+        <method name="WriteIndent" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Fail(System.String)" argnames="message" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Trace" namespace="System.Diagnostics">
+        <property name="Listeners" propertytype="System.Diagnostics.TraceListenerCollection" />
+        <property name="AutoFlush" propertytype="System.Boolean" />
+        <property name="IndentLevel" propertytype="System.Int32" />
+        <property name="IndentSize" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Assert(System.Boolean)" argnames="condition" returntype="System.Void" />
+        <method name="Assert(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
+        <method name="Assert(System.Boolean, System.String, System.String)" argnames="condition, message, detailMessage" returntype="System.Void" />
+        <method name="Fail(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.String, System.String)" argnames="message, category" returntype="System.Void" />
+        <method name="Write(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.String)" argnames="message, category" returntype="System.Void" />
+        <method name="WriteLine(System.Object, System.String)" argnames="value, category" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
+        <method name="WriteIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.Object)" argnames="condition, value" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.String, System.String)" argnames="condition, message, category" returntype="System.Void" />
+        <method name="WriteLineIf(System.Boolean, System.Object, System.String)" argnames="condition, value, category" returntype="System.Void" />
+        <method name="Indent" argnames="" returntype="System.Void" />
+        <method name="Unindent" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TraceListenerCollection" namespace="System.Diagnostics">
+        <property name="Item" propertytype="System.Diagnostics.TraceListener" />
+        <property name="Item" propertytype="System.Diagnostics.TraceListener" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Int32" />
+        <method name="AddRange(System.Diagnostics.TraceListener[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Diagnostics.TraceListenerCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Boolean" />
+        <method name="CopyTo(System.Diagnostics.TraceListener[], System.Int32)" argnames="listeners, index" returntype="System.Void" />
+        <method name="IndexOf(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Diagnostics.TraceListener)" argnames="index, listener" returntype="System.Void" />
+        <method name="Remove(System.Diagnostics.TraceListener)" argnames="listener" returntype="System.Void" />
+        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TraceSwitch" namespace="System.Diagnostics">
+        <constructor name="TraceSwitch(System.String, System.String)" argnames="displayName, description" />
+        <property name="Level" propertytype="System.Diagnostics.TraceLevel" />
+        <property name="TraceError" propertytype="System.Boolean" />
+        <property name="TraceWarning" propertytype="System.Boolean" />
+        <property name="TraceInfo" propertytype="System.Boolean" />
+        <property name="TraceVerbose" propertytype="System.Boolean" />
+        <property name="DisplayName" inherited="System.Diagnostics.Switch" propertytype="System.String" />
+        <property name="Description" inherited="System.Diagnostics.Switch" propertytype="System.String" />
+        <property name="SwitchSetting" inherited="System.Diagnostics.Switch" propertytype="System.Int32" />
+        <method name="OnSwitchSettingChanged" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CounterCreationData" namespace="System.Diagnostics">
+        <constructor name="CounterCreationData" argnames="" />
+        <constructor name="CounterCreationData(System.String, System.String, System.Diagnostics.PerformanceCounterType)" argnames="counterName, counterHelp, counterType" />
+        <property name="CounterType" propertytype="System.Diagnostics.PerformanceCounterType" />
+        <property name="CounterName" propertytype="System.String" />
+        <property name="CounterHelp" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CounterCreationDataCollection" namespace="System.Diagnostics">
+        <constructor name="CounterCreationDataCollection" argnames="" />
+        <constructor name="CounterCreationDataCollection(System.Diagnostics.CounterCreationDataCollection)" argnames="value" />
+        <constructor name="CounterCreationDataCollection(System.Diagnostics.CounterCreationData[])" argnames="value" />
+        <property name="Item" propertytype="System.Diagnostics.CounterCreationData" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="Remove(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.Diagnostics.CounterCreationData[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Diagnostics.CounterCreationDataCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.Diagnostics.CounterCreationData[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.Diagnostics.CounterCreationData)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Diagnostics.CounterCreationData)" argnames="index, value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CounterSampleCalculator" namespace="System.Diagnostics">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ComputeCounterValue(System.Diagnostics.CounterSample)" argnames="newSample" returntype="System.Single" />
+        <method name="ComputeCounterValue(System.Diagnostics.CounterSample, System.Diagnostics.CounterSample)" argnames="oldSample, newSample" returntype="System.Single" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DiagnosticsConfigurationHandler" namespace="System.Diagnostics">
+        <constructor name="DiagnosticsConfigurationHandler" argnames="" />
+        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EntryWrittenEventArgs" namespace="System.Diagnostics">
+        <constructor name="EntryWrittenEventArgs" argnames="" />
+        <constructor name="EntryWrittenEventArgs(System.Diagnostics.EventLogEntry)" argnames="entry" />
+        <property name="Entry" propertytype="System.Diagnostics.EventLogEntry" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventLogEntry" namespace="System.Diagnostics">
+        <property name="MachineName" propertytype="System.String" />
+        <property name="Data" propertytype="System.Byte[]" />
+        <property name="Index" propertytype="System.Int32" />
+        <property name="Category" propertytype="System.String" />
+        <property name="CategoryNumber" propertytype="System.Int16" />
+        <property name="EventID" propertytype="System.Int32" />
+        <property name="EntryType" propertytype="System.Diagnostics.EventLogEntryType" />
+        <property name="Message" propertytype="System.String" />
+        <property name="Source" propertytype="System.String" />
+        <property name="ReplacementStrings" propertytype="System.String[]" />
+        <property name="TimeGenerated" propertytype="System.DateTime" />
+        <property name="TimeWritten" propertytype="System.DateTime" />
+        <property name="UserName" propertytype="System.String" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Equals(System.Diagnostics.EventLogEntry)" argnames="otherEntry" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="EventLogEntryCollection" namespace="System.Diagnostics">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Diagnostics.EventLogEntry" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CopyTo(System.Diagnostics.EventLogEntry[], System.Int32)" argnames="entries, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventLogPermissionAttribute" namespace="System.Diagnostics">
+        <constructor name="EventLogPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="PermissionAccess" propertytype="System.Diagnostics.EventLogPermissionAccess" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventLogPermissionEntry" namespace="System.Diagnostics">
+        <constructor name="EventLogPermissionEntry(System.Diagnostics.EventLogPermissionAccess, System.String)" argnames="permissionAccess, machineName" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="PermissionAccess" propertytype="System.Diagnostics.EventLogPermissionAccess" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventLogPermissionEntryCollection" namespace="System.Diagnostics">
+        <property name="Item" propertytype="System.Diagnostics.EventLogPermissionEntry" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClear" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.Diagnostics.EventLogPermissionEntry[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Diagnostics.EventLogPermissionEntryCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.Diagnostics.EventLogPermissionEntry[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Diagnostics.EventLogPermissionEntry)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.Diagnostics.EventLogPermissionEntry)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstanceData" namespace="System.Diagnostics">
+        <constructor name="InstanceData(System.String, System.Diagnostics.CounterSample)" argnames="instanceName, sample" />
+        <property name="InstanceName" propertytype="System.String" />
+        <property name="Sample" propertytype="System.Diagnostics.CounterSample" />
+        <property name="RawValue" propertytype="System.Int64" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstanceDataCollection" namespace="System.Diagnostics">
+        <constructor name="InstanceDataCollection(System.String)" argnames="counterName" />
+        <property name="CounterName" propertytype="System.String" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="Item" propertytype="System.Diagnostics.InstanceData" />
+        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
+        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
+        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.String)" argnames="instanceName" returntype="System.Boolean" />
+        <method name="CopyTo(System.Diagnostics.InstanceData[], System.Int32)" argnames="instances, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstanceDataCollectionCollection" namespace="System.Diagnostics">
+        <constructor name="InstanceDataCollectionCollection" argnames="" />
+        <property name="Item" propertytype="System.Diagnostics.InstanceDataCollection" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="InnerHashtable" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.Hashtable" />
+        <property name="Dictionary" inherited="System.Collections.DictionaryBase" propertytype="System.Collections.IDictionary" />
+        <property name="Count" inherited="System.Collections.DictionaryBase" propertytype="System.Int32" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" inherited="System.Collections.DictionaryBase" returntype="System.Void" />
+        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" inherited="System.Collections.DictionaryBase" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Contains(System.String)" argnames="counterName" returntype="System.Boolean" />
+        <method name="CopyTo(System.Diagnostics.InstanceDataCollection[], System.Int32)" argnames="counters, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MonitoringDescriptionAttribute" namespace="System.Diagnostics">
+        <constructor name="MonitoringDescriptionAttribute(System.String)" argnames="description" />
+        <property name="Description" propertytype="System.String" />
+        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PerformanceCounterPermissionAttribute" namespace="System.Diagnostics">
+        <constructor name="PerformanceCounterPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="CategoryName" propertytype="System.String" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="PermissionAccess" propertytype="System.Diagnostics.PerformanceCounterPermissionAccess" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PerformanceCounterPermissionEntry" namespace="System.Diagnostics">
+        <constructor name="PerformanceCounterPermissionEntry(System.Diagnostics.PerformanceCounterPermissionAccess, System.String, System.String)" argnames="permissionAccess, machineName, categoryName" />
+        <property name="CategoryName" propertytype="System.String" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="PermissionAccess" propertytype="System.Diagnostics.PerformanceCounterPermissionAccess" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PerformanceCounterPermissionEntryCollection" namespace="System.Diagnostics">
+        <property name="Item" propertytype="System.Diagnostics.PerformanceCounterPermissionEntry" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClear" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.Diagnostics.PerformanceCounterPermissionEntry[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Diagnostics.PerformanceCounterPermissionEntryCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.Diagnostics.PerformanceCounterPermissionEntry[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.Diagnostics.PerformanceCounterPermissionEntry)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProcessModule" namespace="System.Diagnostics">
+        <property name="ModuleName" propertytype="System.String" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="BaseAddress" propertytype="System.IntPtr" />
+        <property name="ModuleMemorySize" propertytype="System.Int32" />
+        <property name="EntryPointAddress" propertytype="System.IntPtr" />
+        <property name="FileVersionInfo" propertytype="System.Diagnostics.FileVersionInfo" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ProcessModuleCollection" namespace="System.Diagnostics">
+        <constructor name="ProcessModuleCollection" argnames="" />
+        <constructor name="ProcessModuleCollection(System.Diagnostics.ProcessModule[])" argnames="processModules" />
+        <property name="Item" propertytype="System.Diagnostics.ProcessModule" />
+        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="IndexOf(System.Diagnostics.ProcessModule)" argnames="module" returntype="System.Int32" />
+        <method name="Contains(System.Diagnostics.ProcessModule)" argnames="module" returntype="System.Boolean" />
+        <method name="CopyTo(System.Diagnostics.ProcessModule[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProcessThread" namespace="System.Diagnostics">
+        <property name="BasePriority" propertytype="System.Int32" />
+        <property name="CurrentPriority" propertytype="System.Int32" />
+        <property name="Id" propertytype="System.Int32" />
+        <property name="IdealProcessor" propertytype="System.Int32" />
+        <property name="PriorityBoostEnabled" propertytype="System.Boolean" />
+        <property name="PriorityLevel" propertytype="System.Diagnostics.ThreadPriorityLevel" />
+        <property name="PrivilegedProcessorTime" propertytype="System.TimeSpan" />
+        <property name="StartAddress" propertytype="System.IntPtr" />
+        <property name="StartTime" propertytype="System.DateTime" />
+        <property name="ThreadState" propertytype="System.Diagnostics.ThreadState" />
+        <property name="TotalProcessorTime" propertytype="System.TimeSpan" />
+        <property name="UserProcessorTime" propertytype="System.TimeSpan" />
+        <property name="WaitReason" propertytype="System.Diagnostics.ThreadWaitReason" />
+        <property name="ProcessorAffinity" propertytype="System.IntPtr" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="ResetIdealProcessor" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ProcessThreadCollection" namespace="System.Diagnostics">
+        <constructor name="ProcessThreadCollection" argnames="" />
+        <constructor name="ProcessThreadCollection(System.Diagnostics.ProcessThread[])" argnames="processThreads" />
+        <property name="Item" propertytype="System.Diagnostics.ProcessThread" />
+        <property name="InnerList" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="Count" inherited="System.Collections.ReadOnlyCollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.ReadOnlyCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Diagnostics.ProcessThread)" argnames="index, thread" returntype="System.Void" />
+        <method name="IndexOf(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Int32" />
+        <method name="Contains(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Boolean" />
+        <method name="Remove(System.Diagnostics.ProcessThread)" argnames="thread" returntype="System.Void" />
+        <method name="CopyTo(System.Diagnostics.ProcessThread[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventLogPermission" namespace="System.Diagnostics">
+        <constructor name="EventLogPermission" argnames="" />
+        <constructor name="EventLogPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="EventLogPermission(System.Diagnostics.EventLogPermissionAccess, System.String)" argnames="permissionAccess, machineName" />
+        <constructor name="EventLogPermission(System.Diagnostics.EventLogPermissionEntry[])" argnames="permissionAccessEntries" />
+        <property name="PermissionEntries" propertytype="System.Diagnostics.EventLogPermissionEntryCollection" />
+        <property name="PermissionAccessType" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.Type" />
+        <property name="TagNames" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.String[]" />
+        <method name="IsUnrestricted" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="ToXml" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="AddPermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="GetPermissionEntries" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.Permissions.ResourcePermissionBaseEntry[]" />
+        <method name="RemovePermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PerformanceCounterPermission" namespace="System.Diagnostics">
+        <constructor name="PerformanceCounterPermission" argnames="" />
+        <constructor name="PerformanceCounterPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="PerformanceCounterPermission(System.Diagnostics.PerformanceCounterPermissionAccess, System.String, System.String)" argnames="permissionAccess, machineName, categoryName" />
+        <constructor name="PerformanceCounterPermission(System.Diagnostics.PerformanceCounterPermissionEntry[])" argnames="permissionAccessEntries" />
+        <property name="PermissionEntries" propertytype="System.Diagnostics.PerformanceCounterPermissionEntryCollection" />
+        <property name="PermissionAccessType" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.Type" />
+        <property name="TagNames" inherited="System.Security.Permissions.ResourcePermissionBase" propertytype="System.String[]" />
+        <method name="IsUnrestricted" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="ToXml" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="AddPermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="GetPermissionEntries" argnames="" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Security.Permissions.ResourcePermissionBaseEntry[]" />
+        <method name="RemovePermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" inherited="System.Security.Permissions.ResourcePermissionBase" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EventLog" namespace="System.Diagnostics">
+        <constructor name="EventLog" argnames="" />
+        <constructor name="EventLog(System.String)" argnames="logName" />
+        <constructor name="EventLog(System.String, System.String)" argnames="logName, machineName" />
+        <constructor name="EventLog(System.String, System.String, System.String)" argnames="logName, machineName, source" />
+        <property name="Entries" propertytype="System.Diagnostics.EventLogEntryCollection" />
+        <property name="EntryCount" propertytype="System.Int32" />
+        <property name="IsOpen" propertytype="System.Boolean" />
+        <property name="IsOpenForRead" propertytype="System.Boolean" />
+        <property name="IsOpenForWrite" propertytype="System.Boolean" />
+        <property name="LogDisplayName" propertytype="System.String" />
+        <property name="Log" propertytype="System.String" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="EnableRaisingEvents" propertytype="System.Boolean" />
+        <property name="OldestEntryNumber" propertytype="System.Int32" />
+        <property name="ReadHandle" propertytype="System.IntPtr" />
+        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
+        <property name="Source" propertytype="System.String" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateEventSource(System.String, System.String)" argnames="source, logName" returntype="System.Void" />
+        <method name="CreateEventSource(System.String, System.String, System.String)" argnames="source, logName, machineName" returntype="System.Void" />
+        <method name="Delete(System.String)" argnames="logName" returntype="System.Void" />
+        <method name="Delete(System.String, System.String)" argnames="logName, machineName" returntype="System.Void" />
+        <method name="DeleteEventSource(System.String)" argnames="source" returntype="System.Void" />
+        <method name="DeleteEventSource(System.String, System.String)" argnames="source, machineName" returntype="System.Void" />
+        <method name="Exists(System.String)" argnames="logName" returntype="System.Boolean" />
+        <method name="Exists(System.String, System.String)" argnames="logName, machineName" returntype="System.Boolean" />
+        <method name="GetEventLogs" argnames="" returntype="System.Diagnostics.EventLog[]" />
+        <method name="GetEventLogs(System.String)" argnames="machineName" returntype="System.Diagnostics.EventLog[]" />
+        <method name="SourceExists(System.String)" argnames="source" returntype="System.Boolean" />
+        <method name="SourceExists(System.String, System.String)" argnames="source, machineName" returntype="System.Boolean" />
+        <method name="LogNameFromSourceName(System.String, System.String)" argnames="source, machineName" returntype="System.String" />
+        <method name="WriteEntry(System.String)" argnames="message" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.String)" argnames="source, message" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType)" argnames="message, type" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType)" argnames="source, message, type" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType, System.Int32)" argnames="message, type, eventID" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType, System.Int32)" argnames="source, message, type, eventID" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16)" argnames="message, type, eventID, category" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16)" argnames="source, message, type, eventID, category" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16, System.Byte[])" argnames="message, type, eventID, category, rawData" returntype="System.Void" />
+        <method name="WriteEntry(System.String, System.String, System.Diagnostics.EventLogEntryType, System.Int32, System.Int16, System.Byte[])" argnames="source, message, type, eventID, category, rawData" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="EntryWritten" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="EventLogTraceListener" namespace="System.Diagnostics">
+        <constructor name="EventLogTraceListener" argnames="" />
+        <constructor name="EventLogTraceListener(System.Diagnostics.EventLog)" argnames="eventLog" />
+        <constructor name="EventLogTraceListener(System.String)" argnames="source" />
+        <property name="EventLog" propertytype="System.Diagnostics.EventLog" />
+        <property name="Name" propertytype="System.String" />
+        <property name="IndentLevel" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
+        <property name="IndentSize" inherited="System.Diagnostics.TraceListener" propertytype="System.Int32" />
+        <property name="NeedIndent" inherited="System.Diagnostics.TraceListener" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="message" returntype="System.Void" />
+        <method name="WriteIndent" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.Object, System.String)" argnames="o, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.String, System.String)" argnames="message, category" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="o" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="message" returntype="System.Void" />
+        <method name="Fail(System.String, System.String)" argnames="message, detailMessage" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Fail(System.String)" argnames="message" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Flush" argnames="" inherited="System.Diagnostics.TraceListener" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FileVersionInfo" namespace="System.Diagnostics">
+        <property name="Comments" propertytype="System.String" />
+        <property name="CompanyName" propertytype="System.String" />
+        <property name="FileBuildPart" propertytype="System.Int32" />
+        <property name="FileDescription" propertytype="System.String" />
+        <property name="FileMajorPart" propertytype="System.Int32" />
+        <property name="FileMinorPart" propertytype="System.Int32" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="FilePrivatePart" propertytype="System.Int32" />
+        <property name="FileVersion" propertytype="System.String" />
+        <property name="InternalName" propertytype="System.String" />
+        <property name="IsDebug" propertytype="System.Boolean" />
+        <property name="IsPatched" propertytype="System.Boolean" />
+        <property name="IsPrivateBuild" propertytype="System.Boolean" />
+        <property name="IsPreRelease" propertytype="System.Boolean" />
+        <property name="IsSpecialBuild" propertytype="System.Boolean" />
+        <property name="Language" propertytype="System.String" />
+        <property name="LegalCopyright" propertytype="System.String" />
+        <property name="LegalTrademarks" propertytype="System.String" />
+        <property name="OriginalFilename" propertytype="System.String" />
+        <property name="PrivateBuild" propertytype="System.String" />
+        <property name="ProductBuildPart" propertytype="System.Int32" />
+        <property name="ProductMajorPart" propertytype="System.Int32" />
+        <property name="ProductMinorPart" propertytype="System.Int32" />
+        <property name="ProductName" propertytype="System.String" />
+        <property name="ProductPrivatePart" propertytype="System.Int32" />
+        <property name="ProductVersion" propertytype="System.String" />
+        <property name="SpecialBuild" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetVersionInfo(System.String)" argnames="fileName" returntype="System.Diagnostics.FileVersionInfo" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PerformanceCounter" namespace="System.Diagnostics">
+        <constructor name="PerformanceCounter" argnames="" />
+        <constructor name="PerformanceCounter(System.String, System.String, System.String, System.String)" argnames="categoryName, counterName, instanceName, machineName" />
+        <constructor name="PerformanceCounter(System.String, System.String, System.String)" argnames="categoryName, counterName, instanceName" />
+        <constructor name="PerformanceCounter(System.String, System.String, System.String, System.Boolean)" argnames="categoryName, counterName, instanceName, readOnly" />
+        <constructor name="PerformanceCounter(System.String, System.String)" argnames="categoryName, counterName" />
+        <constructor name="PerformanceCounter(System.String, System.String, System.Boolean)" argnames="categoryName, counterName, readOnly" />
+        <field name="DefaultFileMappingSize" />
+        <property name="CategoryName" propertytype="System.String" />
+        <property name="CounterHelp" propertytype="System.String" />
+        <property name="CounterName" propertytype="System.String" />
+        <property name="CounterType" propertytype="System.Diagnostics.PerformanceCounterType" />
+        <property name="InstanceName" propertytype="System.String" />
+        <property name="ReadOnly" propertytype="System.Boolean" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="RawValue" propertytype="System.Int64" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CloseSharedResources" argnames="" returntype="System.Void" />
+        <method name="Decrement" argnames="" returntype="System.Int64" />
+        <method name="IncrementBy(System.Int64)" argnames="value" returntype="System.Int64" />
+        <method name="Increment" argnames="" returntype="System.Int64" />
+        <method name="NextSample" argnames="" returntype="System.Diagnostics.CounterSample" />
+        <method name="NextValue" argnames="" returntype="System.Single" />
+        <method name="RemoveInstance" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="PerformanceCounterCategory" namespace="System.Diagnostics">
+        <constructor name="PerformanceCounterCategory" argnames="" />
+        <constructor name="PerformanceCounterCategory(System.String)" argnames="categoryName" />
+        <constructor name="PerformanceCounterCategory(System.String, System.String)" argnames="categoryName, machineName" />
+        <property name="CategoryName" propertytype="System.String" />
+        <property name="CategoryHelp" propertytype="System.String" />
+        <property name="MachineName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CounterExists(System.String)" argnames="counterName" returntype="System.Boolean" />
+        <method name="CounterExists(System.String, System.String)" argnames="counterName, categoryName" returntype="System.Boolean" />
+        <method name="CounterExists(System.String, System.String, System.String)" argnames="counterName, categoryName, machineName" returntype="System.Boolean" />
+        <method name="Create(System.String, System.String, System.Diagnostics.CounterCreationDataCollection)" argnames="categoryName, categoryHelp, counterData" returntype="System.Diagnostics.PerformanceCounterCategory" />
+        <method name="Create(System.String, System.String, System.String, System.String)" argnames="categoryName, categoryHelp, counterName, counterHelp" returntype="System.Diagnostics.PerformanceCounterCategory" />
+        <method name="Delete(System.String)" argnames="categoryName" returntype="System.Void" />
+        <method name="Exists(System.String)" argnames="categoryName" returntype="System.Boolean" />
+        <method name="Exists(System.String, System.String)" argnames="categoryName, machineName" returntype="System.Boolean" />
+        <method name="GetCounters" argnames="" returntype="System.Diagnostics.PerformanceCounter[]" />
+        <method name="GetCounters(System.String)" argnames="instanceName" returntype="System.Diagnostics.PerformanceCounter[]" />
+        <method name="GetCategories" argnames="" returntype="System.Diagnostics.PerformanceCounterCategory[]" />
+        <method name="GetCategories(System.String)" argnames="machineName" returntype="System.Diagnostics.PerformanceCounterCategory[]" />
+        <method name="GetInstanceNames" argnames="" returntype="System.String[]" />
+        <method name="InstanceExists(System.String)" argnames="instanceName" returntype="System.Boolean" />
+        <method name="InstanceExists(System.String, System.String)" argnames="instanceName, categoryName" returntype="System.Boolean" />
+        <method name="InstanceExists(System.String, System.String, System.String)" argnames="instanceName, categoryName, machineName" returntype="System.Boolean" />
+        <method name="ReadCategory" argnames="" returntype="System.Diagnostics.InstanceDataCollectionCollection" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PerformanceCounterManager" namespace="System.Diagnostics">
+        <constructor name="PerformanceCounterManager" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Process" namespace="System.Diagnostics">
+        <constructor name="Process" argnames="" />
+        <property name="Associated" propertytype="System.Boolean" />
+        <property name="BasePriority" propertytype="System.Int32" />
+        <property name="ExitCode" propertytype="System.Int32" />
+        <property name="HasExited" propertytype="System.Boolean" />
+        <property name="ExitTime" propertytype="System.DateTime" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="HandleCount" propertytype="System.Int32" />
+        <property name="Id" propertytype="System.Int32" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="MainWindowHandle" propertytype="System.IntPtr" />
+        <property name="MainWindowTitle" propertytype="System.String" />
+        <property name="MainModule" propertytype="System.Diagnostics.ProcessModule" />
+        <property name="MaxWorkingSet" propertytype="System.IntPtr" />
+        <property name="MinWorkingSet" propertytype="System.IntPtr" />
+        <property name="Modules" propertytype="System.Diagnostics.ProcessModuleCollection" />
+        <property name="NonpagedSystemMemorySize" propertytype="System.Int32" />
+        <property name="PagedMemorySize" propertytype="System.Int32" />
+        <property name="PagedSystemMemorySize" propertytype="System.Int32" />
+        <property name="PeakPagedMemorySize" propertytype="System.Int32" />
+        <property name="PeakWorkingSet" propertytype="System.Int32" />
+        <property name="PeakVirtualMemorySize" propertytype="System.Int32" />
+        <property name="OperatingSystem" propertytype="System.OperatingSystem" />
+        <property name="PriorityBoostEnabled" propertytype="System.Boolean" />
+        <property name="PriorityClass" propertytype="System.Diagnostics.ProcessPriorityClass" />
+        <property name="PrivateMemorySize" propertytype="System.Int32" />
+        <property name="PrivilegedProcessorTime" propertytype="System.TimeSpan" />
+        <property name="ProcessName" propertytype="System.String" />
+        <property name="ProcessorAffinity" propertytype="System.IntPtr" />
+        <property name="Responding" propertytype="System.Boolean" />
+        <property name="StartInfo" propertytype="System.Diagnostics.ProcessStartInfo" />
+        <property name="StartTime" propertytype="System.DateTime" />
+        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
+        <property name="Threads" propertytype="System.Diagnostics.ProcessThreadCollection" />
+        <property name="TotalProcessorTime" propertytype="System.TimeSpan" />
+        <property name="UserProcessorTime" propertytype="System.TimeSpan" />
+        <property name="VirtualMemorySize" propertytype="System.Int32" />
+        <property name="EnableRaisingEvents" propertytype="System.Boolean" />
+        <property name="StandardInput" propertytype="System.IO.StreamWriter" />
+        <property name="StandardOutput" propertytype="System.IO.StreamReader" />
+        <property name="StandardError" propertytype="System.IO.StreamReader" />
+        <property name="WorkingSet" propertytype="System.Int32" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CloseMainWindow" argnames="" returntype="System.Boolean" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="EnterDebugMode" argnames="" returntype="System.Void" />
+        <method name="LeaveDebugMode" argnames="" returntype="System.Void" />
+        <method name="GetProcessById(System.Int32, System.String)" argnames="processId, machineName" returntype="System.Diagnostics.Process" />
+        <method name="GetProcessById(System.Int32)" argnames="processId" returntype="System.Diagnostics.Process" />
+        <method name="GetProcessesByName(System.String)" argnames="processName" returntype="System.Diagnostics.Process[]" />
+        <method name="GetProcessesByName(System.String, System.String)" argnames="processName, machineName" returntype="System.Diagnostics.Process[]" />
+        <method name="GetProcesses" argnames="" returntype="System.Diagnostics.Process[]" />
+        <method name="GetProcesses(System.String)" argnames="machineName" returntype="System.Diagnostics.Process[]" />
+        <method name="GetCurrentProcess" argnames="" returntype="System.Diagnostics.Process" />
+        <method name="OnExited" argnames="" returntype="System.Void" />
+        <method name="Refresh" argnames="" returntype="System.Void" />
+        <method name="Start" argnames="" returntype="System.Boolean" />
+        <method name="Start(System.String)" argnames="fileName" returntype="System.Diagnostics.Process" />
+        <method name="Start(System.String, System.String)" argnames="fileName, arguments" returntype="System.Diagnostics.Process" />
+        <method name="Start(System.Diagnostics.ProcessStartInfo)" argnames="startInfo" returntype="System.Diagnostics.Process" />
+        <method name="Kill" argnames="" returntype="System.Void" />
+        <method name="WaitForExit(System.Int32)" argnames="milliseconds" returntype="System.Boolean" />
+        <method name="WaitForExit" argnames="" returntype="System.Void" />
+        <method name="WaitForInputIdle(System.Int32)" argnames="milliseconds" returntype="System.Boolean" />
+        <method name="WaitForInputIdle" argnames="" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Exited" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="ProcessStartInfo" namespace="System.Diagnostics">
+        <constructor name="ProcessStartInfo" argnames="" />
+        <constructor name="ProcessStartInfo(System.String)" argnames="fileName" />
+        <constructor name="ProcessStartInfo(System.String, System.String)" argnames="fileName, arguments" />
+        <property name="Verb" propertytype="System.String" />
+        <property name="Arguments" propertytype="System.String" />
+        <property name="CreateNoWindow" propertytype="System.Boolean" />
+        <property name="EnvironmentVariables" propertytype="System.Collections.Specialized.StringDictionary" />
+        <property name="RedirectStandardInput" propertytype="System.Boolean" />
+        <property name="RedirectStandardOutput" propertytype="System.Boolean" />
+        <property name="RedirectStandardError" propertytype="System.Boolean" />
+        <property name="UseShellExecute" propertytype="System.Boolean" />
+        <property name="Verbs" propertytype="System.String[]" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="WorkingDirectory" propertytype="System.String" />
+        <property name="ErrorDialog" propertytype="System.Boolean" />
+        <property name="ErrorDialogParentHandle" propertytype="System.IntPtr" />
+        <property name="WindowStyle" propertytype="System.Diagnostics.ProcessWindowStyle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="ICollectData" namespace="System.Diagnostics">
+        <method name="CloseData" argnames="" returntype="System.Void" />
+        <method name="CollectData(System.Int32, System.IntPtr, System.IntPtr, System.Int32, System.IntPtr&amp;)" argnames="id, valueName, data, totalBytes, res" returntype="System.Void" />
+    </interface>
+    <struct name="CounterSample" namespace="System.Diagnostics">
+        <constructor name="CounterSample(System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Diagnostics.PerformanceCounterType)" argnames="rawValue, baseValue, counterFrequency, systemFrequency, timeStamp, timeStamp100nSec, counterType" />
+        <constructor name="CounterSample(System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Int64, System.Diagnostics.PerformanceCounterType, System.Int64)" argnames="rawValue, baseValue, counterFrequency, systemFrequency, timeStamp, timeStamp100nSec, counterType, counterTimeStamp" />
+        <field name="Empty" />
+        <property name="RawValue" propertytype="System.Int64" />
+        <property name="UnsignedRawValue" propertytype="System.UInt64" />
+        <property name="BaseValue" propertytype="System.Int64" />
+        <property name="UnsignedBaseValue" propertytype="System.UInt64" />
+        <property name="SystemFrequency" propertytype="System.Int64" />
+        <property name="CounterFrequency" propertytype="System.Int64" />
+        <property name="CounterTimeStamp" propertytype="System.Int64" />
+        <property name="TimeStamp" propertytype="System.Int64" />
+        <property name="TimeStamp100nSec" propertytype="System.Int64" />
+        <property name="CounterType" propertytype="System.Diagnostics.PerformanceCounterType" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="Calculate(System.Diagnostics.CounterSample)" argnames="counterSample" returntype="System.Single" />
+        <method name="Calculate(System.Diagnostics.CounterSample, System.Diagnostics.CounterSample)" argnames="counterSample, nextCounterSample" returntype="System.Single" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <delegate name="EntryWrittenEventHandler" namespace="System.Diagnostics">
+        <constructor name="EntryWrittenEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Diagnostics.EntryWrittenEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Diagnostics.EntryWrittenEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="TraceLevel" namespace="System.Diagnostics">
+        <field name="Off" />
+        <field name="Error" />
+        <field name="Warning" />
+        <field name="Info" />
+        <field name="Verbose" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EventLogEntryType" namespace="System.Diagnostics">
+        <field name="Error" />
+        <field name="Warning" />
+        <field name="Information" />
+        <field name="SuccessAudit" />
+        <field name="FailureAudit" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="EventLogPermissionAccess" namespace="System.Diagnostics">
+        <field name="None" />
+        <field name="Browse" />
+        <field name="Instrument" />
+        <field name="Audit" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PerformanceCounterPermissionAccess" namespace="System.Diagnostics">
+        <field name="None" />
+        <field name="Browse" />
+        <field name="Instrument" />
+        <field name="Administer" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PerformanceCounterType" namespace="System.Diagnostics">
+        <field name="NumberOfItems32" />
+        <field name="NumberOfItems64" />
+        <field name="NumberOfItemsHEX32" />
+        <field name="NumberOfItemsHEX64" />
+        <field name="RateOfCountsPerSecond32" />
+        <field name="RateOfCountsPerSecond64" />
+        <field name="CountPerTimeInterval32" />
+        <field name="CountPerTimeInterval64" />
+        <field name="RawFraction" />
+        <field name="RawBase" />
+        <field name="AverageTimer32" />
+        <field name="AverageBase" />
+        <field name="AverageCount64" />
+        <field name="SampleFraction" />
+        <field name="SampleCounter" />
+        <field name="SampleBase" />
+        <field name="CounterTimer" />
+        <field name="CounterTimerInverse" />
+        <field name="Timer100Ns" />
+        <field name="Timer100NsInverse" />
+        <field name="ElapsedTime" />
+        <field name="CounterMultiTimer" />
+        <field name="CounterMultiTimerInverse" />
+        <field name="CounterMultiTimer100Ns" />
+        <field name="CounterMultiTimer100NsInverse" />
+        <field name="CounterMultiBase" />
+        <field name="CounterDelta32" />
+        <field name="CounterDelta64" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ProcessPriorityClass" namespace="System.Diagnostics">
+        <field name="Normal" />
+        <field name="Idle" />
+        <field name="High" />
+        <field name="RealTime" />
+        <field name="BelowNormal" />
+        <field name="AboveNormal" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ProcessWindowStyle" namespace="System.Diagnostics">
+        <field name="Normal" />
+        <field name="Hidden" />
+        <field name="Minimized" />
+        <field name="Maximized" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ThreadPriorityLevel" namespace="System.Diagnostics">
+        <field name="Idle" />
+        <field name="Lowest" />
+        <field name="BelowNormal" />
+        <field name="Normal" />
+        <field name="AboveNormal" />
+        <field name="Highest" />
+        <field name="TimeCritical" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ThreadState" namespace="System.Diagnostics">
+        <field name="Initialized" />
+        <field name="Ready" />
+        <field name="Running" />
+        <field name="Standby" />
+        <field name="Terminated" />
+        <field name="Wait" />
+        <field name="Transition" />
+        <field name="Unknown" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ThreadWaitReason" namespace="System.Diagnostics">
+        <field name="Executive" />
+        <field name="FreePage" />
+        <field name="PageIn" />
+        <field name="SystemAllocation" />
+        <field name="ExecutionDelay" />
+        <field name="Suspended" />
+        <field name="UserRequest" />
+        <field name="EventPairHigh" />
+        <field name="EventPairLow" />
+        <field name="LpcReceive" />
+        <field name="LpcReply" />
+        <field name="VirtualMemory" />
+        <field name="PageOut" />
+        <field name="Unknown" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="ThreadExceptionEventArgs" namespace="System.Threading">
+        <constructor name="ThreadExceptionEventArgs(System.Exception)" argnames="t" />
+        <property name="Exception" propertytype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="ThreadExceptionEventHandler" namespace="System.Threading">
+        <constructor name="ThreadExceptionEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Threading.ThreadExceptionEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Threading.ThreadExceptionEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <class name="CodeGenerator" namespace="System.CodeDom.Compiler">
+        <constructor name="CodeGenerator" argnames="" />
+        <property name="CurrentTypeName" propertytype="System.String" />
+        <property name="CurrentMember" propertytype="System.CodeDom.CodeTypeMember" />
+        <property name="CurrentMemberName" propertytype="System.String" />
+        <property name="IsCurrentInterface" propertytype="System.Boolean" />
+        <property name="IsCurrentClass" propertytype="System.Boolean" />
+        <property name="IsCurrentStruct" propertytype="System.Boolean" />
+        <property name="IsCurrentEnum" propertytype="System.Boolean" />
+        <property name="IsCurrentDelegate" propertytype="System.Boolean" />
+        <property name="Indent" propertytype="System.Int32" />
+        <property name="NullToken" propertytype="System.String" />
+        <property name="Output" propertytype="System.IO.TextWriter" />
+        <property name="Options" propertytype="System.CodeDom.Compiler.CodeGeneratorOptions" />
+        <method name="QuoteSnippetString(System.String)" argnames="value" returntype="System.String" />
+        <method name="GetTypeOutput(System.CodeDom.CodeTypeReference)" argnames="value" returntype="System.String" />
+        <method name="CreateValidIdentifier(System.String)" argnames="value" returntype="System.String" />
+        <method name="CreateEscapedIdentifier(System.String)" argnames="value" returntype="System.String" />
+        <method name="ValidateIdentifier(System.String)" argnames="value" returntype="System.Void" />
+        <method name="IsValidIdentifier(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="Supports(System.CodeDom.Compiler.GeneratorSupport)" argnames="support" returntype="System.Boolean" />
+        <method name="GenerateAttributeDeclarationsEnd(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" returntype="System.Void" />
+        <method name="GenerateAttributeDeclarationsStart(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" returntype="System.Void" />
+        <method name="GenerateNamespaceImport(System.CodeDom.CodeNamespaceImport)" argnames="e" returntype="System.Void" />
+        <method name="GenerateNamespaceEnd(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
+        <method name="GenerateNamespaceStart(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
+        <method name="GenerateCompileUnitEnd(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
+        <method name="GenerateCompileUnitStart(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
+        <method name="GenerateTypeEnd(System.CodeDom.CodeTypeDeclaration)" argnames="e" returntype="System.Void" />
+        <method name="GenerateTypeStart(System.CodeDom.CodeTypeDeclaration)" argnames="e" returntype="System.Void" />
+        <method name="GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor)" argnames="e" returntype="System.Void" />
+        <method name="GenerateConstructor(System.CodeDom.CodeConstructor, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
+        <method name="GenerateProperty(System.CodeDom.CodeMemberProperty, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
+        <method name="GenerateMethod(System.CodeDom.CodeMemberMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
+        <method name="GenerateEntryPointMethod(System.CodeDom.CodeEntryPointMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
+        <method name="GenerateSnippetMember(System.CodeDom.CodeSnippetTypeMember)" argnames="e" returntype="System.Void" />
+        <method name="GenerateField(System.CodeDom.CodeMemberField)" argnames="e" returntype="System.Void" />
+        <method name="GenerateEvent(System.CodeDom.CodeMemberEvent, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" returntype="System.Void" />
+        <method name="GenerateLinePragmaEnd(System.CodeDom.CodeLinePragma)" argnames="e" returntype="System.Void" />
+        <method name="GenerateLinePragmaStart(System.CodeDom.CodeLinePragma)" argnames="e" returntype="System.Void" />
+        <method name="GenerateVariableDeclarationStatement(System.CodeDom.CodeVariableDeclarationStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateSnippetStatement(System.CodeDom.CodeSnippetStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateLabeledStatement(System.CodeDom.CodeLabeledStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateGotoStatement(System.CodeDom.CodeGotoStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateRemoveEventStatement(System.CodeDom.CodeRemoveEventStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateAttachEventStatement(System.CodeDom.CodeAttachEventStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateAssignStatement(System.CodeDom.CodeAssignStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateTryCatchFinallyStatement(System.CodeDom.CodeTryCatchFinallyStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateConditionStatement(System.CodeDom.CodeConditionStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateMethodReturnStatement(System.CodeDom.CodeMethodReturnStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateComment(System.CodeDom.CodeComment)" argnames="e" returntype="System.Void" />
+        <method name="GenerateCommentStatements(System.CodeDom.CodeCommentStatementCollection)" argnames="e" returntype="System.Void" />
+        <method name="GenerateCommentStatement(System.CodeDom.CodeCommentStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateThrowExceptionStatement(System.CodeDom.CodeThrowExceptionStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateIterationStatement(System.CodeDom.CodeIterationStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateExpressionStatement(System.CodeDom.CodeExpressionStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateTypeOfExpression(System.CodeDom.CodeTypeOfExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateTypeReferenceExpression(System.CodeDom.CodeTypeReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateThisReferenceExpression(System.CodeDom.CodeThisReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GeneratePropertySetValueReferenceExpression(System.CodeDom.CodePropertySetValueReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GeneratePropertyReferenceExpression(System.CodeDom.CodePropertyReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateDecimalValue(System.Decimal)" argnames="d" returntype="System.Void" />
+        <method name="GenerateDoubleValue(System.Double)" argnames="d" returntype="System.Void" />
+        <method name="GenerateSingleFloatValue(System.Single)" argnames="s" returntype="System.Void" />
+        <method name="GeneratePrimitiveExpression(System.CodeDom.CodePrimitiveExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateDirectionExpression(System.CodeDom.CodeDirectionExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateParameterDeclarationExpression(System.CodeDom.CodeParameterDeclarationExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateObjectCreateExpression(System.CodeDom.CodeObjectCreateExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateDelegateInvokeExpression(System.CodeDom.CodeDelegateInvokeExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateEventReferenceExpression(System.CodeDom.CodeEventReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateMethodReferenceExpression(System.CodeDom.CodeMethodReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateMethodInvokeExpression(System.CodeDom.CodeMethodInvokeExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateSnippetExpression(System.CodeDom.CodeSnippetExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateArrayIndexerExpression(System.CodeDom.CodeArrayIndexerExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateIndexerExpression(System.CodeDom.CodeIndexerExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateVariableReferenceExpression(System.CodeDom.CodeVariableReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateArgumentReferenceExpression(System.CodeDom.CodeArgumentReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateFieldReferenceExpression(System.CodeDom.CodeFieldReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateDelegateCreateExpression(System.CodeDom.CodeDelegateCreateExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateCastExpression(System.CodeDom.CodeCastExpression)" argnames="e" returntype="System.Void" />
+        <method name="ContinueOnNewLine(System.String)" argnames="st" returntype="System.Void" />
+        <method name="GenerateBinaryOperatorExpression(System.CodeDom.CodeBinaryOperatorExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateBaseReferenceExpression(System.CodeDom.CodeBaseReferenceExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateArrayCreateExpression(System.CodeDom.CodeArrayCreateExpression)" argnames="e" returntype="System.Void" />
+        <method name="OutputParameters(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="parameters" returntype="System.Void" />
+        <method name="OutputOperator(System.CodeDom.CodeBinaryOperatorType)" argnames="op" returntype="System.Void" />
+        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection, System.Boolean)" argnames="expressions, newlineBetweenItems" returntype="System.Void" />
+        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection)" argnames="expressions" returntype="System.Void" />
+        <method name="OutputIdentifier(System.String)" argnames="ident" returntype="System.Void" />
+        <method name="OutputTypeNamePair(System.CodeDom.CodeTypeReference, System.String)" argnames="typeRef, name" returntype="System.Void" />
+        <method name="OutputTypeAttributes(System.Reflection.TypeAttributes, System.Boolean, System.Boolean)" argnames="attributes, isStruct, isEnum" returntype="System.Void" />
+        <method name="OutputType(System.CodeDom.CodeTypeReference)" argnames="typeRef" returntype="System.Void" />
+        <method name="OutputMemberScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" returntype="System.Void" />
+        <method name="OutputMemberAccessModifier(System.CodeDom.MemberAttributes)" argnames="attributes" returntype="System.Void" />
+        <method name="OutputFieldScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" returntype="System.Void" />
+        <method name="OutputDirection(System.CodeDom.FieldDirection)" argnames="dir" returntype="System.Void" />
+        <method name="OutputAttributeArgument(System.CodeDom.CodeAttributeArgument)" argnames="arg" returntype="System.Void" />
+        <method name="OutputAttributeDeclarations(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" returntype="System.Void" />
+        <method name="GenerateNamespace(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
+        <method name="GenerateCompileUnit(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
+        <method name="GenerateSnippetCompileUnit(System.CodeDom.CodeSnippetCompileUnit)" argnames="e" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GenerateNamespaces(System.CodeDom.CodeCompileUnit)" argnames="e" returntype="System.Void" />
+        <method name="GenerateTypes(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
+        <method name="GenerateExpression(System.CodeDom.CodeExpression)" argnames="e" returntype="System.Void" />
+        <method name="GenerateNamespaceImports(System.CodeDom.CodeNamespace)" argnames="e" returntype="System.Void" />
+        <method name="GenerateStatement(System.CodeDom.CodeStatement)" argnames="e" returntype="System.Void" />
+        <method name="GenerateStatements(System.CodeDom.CodeStatementCollection)" argnames="stms" returntype="System.Void" />
+        <method name="IsValidLanguageIndependentIdentifier(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeCompiler" namespace="System.CodeDom.Compiler">
+        <constructor name="CodeCompiler" argnames="" />
+        <property name="FileExtension" propertytype="System.String" />
+        <property name="CompilerName" propertytype="System.String" />
+        <property name="CurrentTypeName" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.String" />
+        <property name="CurrentMember" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.CodeDom.CodeTypeMember" />
+        <property name="CurrentMemberName" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.String" />
+        <property name="IsCurrentInterface" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
+        <property name="IsCurrentClass" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
+        <property name="IsCurrentStruct" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
+        <property name="IsCurrentEnum" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
+        <property name="IsCurrentDelegate" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Boolean" />
+        <property name="Indent" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.Int32" />
+        <property name="NullToken" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.String" />
+        <property name="Output" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.IO.TextWriter" />
+        <property name="Options" inherited="System.CodeDom.Compiler.CodeGenerator" propertytype="System.CodeDom.Compiler.CodeGeneratorOptions" />
+        <method name="FromSourceBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, sources" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="GetResponseFileCmdArgs(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, cmdArgs" returntype="System.String" />
+        <method name="CmdArgsFromParameters(System.CodeDom.Compiler.CompilerParameters)" argnames="options" returntype="System.String" />
+        <method name="ProcessCompilerOutputLine(System.CodeDom.Compiler.CompilerResults, System.String)" argnames="results, line" returntype="System.Void" />
+        <method name="FromFileBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, fileNames" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="FromDomBatch(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit[])" argnames="options, ea" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="FromSource(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, source" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="FromFile(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, fileName" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="FromDom(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit)" argnames="options, e" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="QuoteSnippetString(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
+        <method name="GetTypeOutput(System.CodeDom.CodeTypeReference)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
+        <method name="CreateValidIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
+        <method name="CreateEscapedIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.String" />
+        <method name="ValidateIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="IsValidIdentifier(System.String)" argnames="value" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Boolean" />
+        <method name="Supports(System.CodeDom.Compiler.GeneratorSupport)" argnames="support" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Boolean" />
+        <method name="GenerateAttributeDeclarationsEnd(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateAttributeDeclarationsStart(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateNamespaceImport(System.CodeDom.CodeNamespaceImport)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateNamespaceEnd(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateNamespaceStart(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateCompileUnitEnd(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateCompileUnitStart(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateTypeEnd(System.CodeDom.CodeTypeDeclaration)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateTypeStart(System.CodeDom.CodeTypeDeclaration)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateConstructor(System.CodeDom.CodeConstructor, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateProperty(System.CodeDom.CodeMemberProperty, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateMethod(System.CodeDom.CodeMemberMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateEntryPointMethod(System.CodeDom.CodeEntryPointMethod, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateSnippetMember(System.CodeDom.CodeSnippetTypeMember)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateField(System.CodeDom.CodeMemberField)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateEvent(System.CodeDom.CodeMemberEvent, System.CodeDom.CodeTypeDeclaration)" argnames="e, c" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateLinePragmaEnd(System.CodeDom.CodeLinePragma)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateLinePragmaStart(System.CodeDom.CodeLinePragma)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateVariableDeclarationStatement(System.CodeDom.CodeVariableDeclarationStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateSnippetStatement(System.CodeDom.CodeSnippetStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateLabeledStatement(System.CodeDom.CodeLabeledStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateGotoStatement(System.CodeDom.CodeGotoStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateRemoveEventStatement(System.CodeDom.CodeRemoveEventStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateAttachEventStatement(System.CodeDom.CodeAttachEventStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateAssignStatement(System.CodeDom.CodeAssignStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateTryCatchFinallyStatement(System.CodeDom.CodeTryCatchFinallyStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateConditionStatement(System.CodeDom.CodeConditionStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateMethodReturnStatement(System.CodeDom.CodeMethodReturnStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateComment(System.CodeDom.CodeComment)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateCommentStatements(System.CodeDom.CodeCommentStatementCollection)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateCommentStatement(System.CodeDom.CodeCommentStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateThrowExceptionStatement(System.CodeDom.CodeThrowExceptionStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateIterationStatement(System.CodeDom.CodeIterationStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateExpressionStatement(System.CodeDom.CodeExpressionStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateTypeOfExpression(System.CodeDom.CodeTypeOfExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateTypeReferenceExpression(System.CodeDom.CodeTypeReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateThisReferenceExpression(System.CodeDom.CodeThisReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GeneratePropertySetValueReferenceExpression(System.CodeDom.CodePropertySetValueReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GeneratePropertyReferenceExpression(System.CodeDom.CodePropertyReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateDecimalValue(System.Decimal)" argnames="d" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateDoubleValue(System.Double)" argnames="d" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateSingleFloatValue(System.Single)" argnames="s" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GeneratePrimitiveExpression(System.CodeDom.CodePrimitiveExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateDirectionExpression(System.CodeDom.CodeDirectionExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateParameterDeclarationExpression(System.CodeDom.CodeParameterDeclarationExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateObjectCreateExpression(System.CodeDom.CodeObjectCreateExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateDelegateInvokeExpression(System.CodeDom.CodeDelegateInvokeExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateEventReferenceExpression(System.CodeDom.CodeEventReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateMethodReferenceExpression(System.CodeDom.CodeMethodReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateMethodInvokeExpression(System.CodeDom.CodeMethodInvokeExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateSnippetExpression(System.CodeDom.CodeSnippetExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateArrayIndexerExpression(System.CodeDom.CodeArrayIndexerExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateIndexerExpression(System.CodeDom.CodeIndexerExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateVariableReferenceExpression(System.CodeDom.CodeVariableReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateArgumentReferenceExpression(System.CodeDom.CodeArgumentReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateFieldReferenceExpression(System.CodeDom.CodeFieldReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateDelegateCreateExpression(System.CodeDom.CodeDelegateCreateExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateCastExpression(System.CodeDom.CodeCastExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="ContinueOnNewLine(System.String)" argnames="st" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateBinaryOperatorExpression(System.CodeDom.CodeBinaryOperatorExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateBaseReferenceExpression(System.CodeDom.CodeBaseReferenceExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateArrayCreateExpression(System.CodeDom.CodeArrayCreateExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputParameters(System.CodeDom.CodeParameterDeclarationExpressionCollection)" argnames="parameters" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputOperator(System.CodeDom.CodeBinaryOperatorType)" argnames="op" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection, System.Boolean)" argnames="expressions, newlineBetweenItems" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputExpressionList(System.CodeDom.CodeExpressionCollection)" argnames="expressions" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputIdentifier(System.String)" argnames="ident" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputTypeNamePair(System.CodeDom.CodeTypeReference, System.String)" argnames="typeRef, name" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputTypeAttributes(System.Reflection.TypeAttributes, System.Boolean, System.Boolean)" argnames="attributes, isStruct, isEnum" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputType(System.CodeDom.CodeTypeReference)" argnames="typeRef" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputMemberScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputMemberAccessModifier(System.CodeDom.MemberAttributes)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputFieldScopeModifier(System.CodeDom.MemberAttributes)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputDirection(System.CodeDom.FieldDirection)" argnames="dir" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputAttributeArgument(System.CodeDom.CodeAttributeArgument)" argnames="arg" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="OutputAttributeDeclarations(System.CodeDom.CodeAttributeDeclarationCollection)" argnames="attributes" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateNamespace(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateCompileUnit(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateSnippetCompileUnit(System.CodeDom.CodeSnippetCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="JoinStringArray(System.String[], System.String)" argnames="sa, separator" returntype="System.String" />
+        <method name="GenerateNamespaces(System.CodeDom.CodeCompileUnit)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateTypes(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateExpression(System.CodeDom.CodeExpression)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateNamespaceImports(System.CodeDom.CodeNamespace)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateStatement(System.CodeDom.CodeStatement)" argnames="e" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GenerateStatements(System.CodeDom.CodeStatementCollection)" argnames="stms" inherited="System.CodeDom.Compiler.CodeGenerator" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeDomProvider" namespace="System.CodeDom.Compiler">
+        <constructor name="CodeDomProvider" argnames="" />
+        <property name="FileExtension" propertytype="System.String" />
+        <property name="LanguageOptions" propertytype="System.CodeDom.Compiler.LanguageOptions" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
+        <method name="CreateParser" argnames="" returntype="System.CodeDom.Compiler.ICodeParser" />
+        <method name="CreateCompiler" argnames="" returntype="System.CodeDom.Compiler.ICodeCompiler" />
+        <method name="CreateGenerator(System.String)" argnames="fileName" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="CreateGenerator(System.IO.TextWriter)" argnames="output" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="CreateGenerator" argnames="" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="CodeGeneratorOptions" namespace="System.CodeDom.Compiler">
+        <constructor name="CodeGeneratorOptions" argnames="" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="IndentString" propertytype="System.String" />
+        <property name="BracingStyle" propertytype="System.String" />
+        <property name="ElseOnClosing" propertytype="System.Boolean" />
+        <property name="BlankLinesBetweenMembers" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CodeParser" namespace="System.CodeDom.Compiler">
+        <constructor name="CodeParser" argnames="" />
+        <method name="Parse(System.IO.TextReader)" argnames="codeStream" returntype="System.CodeDom.CodeCompileUnit" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CompilerError" namespace="System.CodeDom.Compiler">
+        <constructor name="CompilerError" argnames="" />
+        <constructor name="CompilerError(System.String, System.Int32, System.Int32, System.String, System.String)" argnames="fileName, line, column, errorNumber, errorText" />
+        <property name="Line" propertytype="System.Int32" />
+        <property name="Column" propertytype="System.Int32" />
+        <property name="ErrorNumber" propertytype="System.String" />
+        <property name="ErrorText" propertytype="System.String" />
+        <property name="IsWarning" propertytype="System.Boolean" />
+        <property name="FileName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CompilerErrorCollection" namespace="System.CodeDom.Compiler">
+        <constructor name="CompilerErrorCollection" argnames="" />
+        <constructor name="CompilerErrorCollection(System.CodeDom.Compiler.CompilerErrorCollection)" argnames="value" />
+        <constructor name="CompilerErrorCollection(System.CodeDom.Compiler.CompilerError[])" argnames="value" />
+        <property name="Item" propertytype="System.CodeDom.Compiler.CompilerError" />
+        <property name="HasErrors" propertytype="System.Boolean" />
+        <property name="HasWarnings" propertytype="System.Boolean" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.CodeDom.Compiler.CompilerError[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.CodeDom.Compiler.CompilerErrorCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.CodeDom.Compiler.CompilerError[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.CodeDom.Compiler.CompilerError)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.CodeDom.Compiler.CompilerError)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CompilerParameters" namespace="System.CodeDom.Compiler">
+        <constructor name="CompilerParameters" argnames="" />
+        <constructor name="CompilerParameters(System.String[])" argnames="assemblyNames" />
+        <constructor name="CompilerParameters(System.String[], System.String)" argnames="assemblyNames, outputName" />
+        <constructor name="CompilerParameters(System.String[], System.String, System.Boolean)" argnames="assemblyNames, outputName, includeDebugInformation" />
+        <property name="GenerateExecutable" propertytype="System.Boolean" />
+        <property name="GenerateInMemory" propertytype="System.Boolean" />
+        <property name="ReferencedAssemblies" propertytype="System.Collections.Specialized.StringCollection" />
+        <property name="MainClass" propertytype="System.String" />
+        <property name="OutputAssembly" propertytype="System.String" />
+        <property name="TempFiles" propertytype="System.CodeDom.Compiler.TempFileCollection" />
+        <property name="IncludeDebugInformation" propertytype="System.Boolean" />
+        <property name="TreatWarningsAsErrors" propertytype="System.Boolean" />
+        <property name="WarningLevel" propertytype="System.Int32" />
+        <property name="CompilerOptions" propertytype="System.String" />
+        <property name="Win32Resource" propertytype="System.String" />
+        <property name="UserToken" propertytype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CompilerResults" namespace="System.CodeDom.Compiler">
+        <constructor name="CompilerResults(System.CodeDom.Compiler.TempFileCollection)" argnames="tempFiles" />
+        <property name="TempFiles" propertytype="System.CodeDom.Compiler.TempFileCollection" />
+        <property name="CompiledAssembly" propertytype="System.Reflection.Assembly" />
+        <property name="Errors" propertytype="System.CodeDom.Compiler.CompilerErrorCollection" />
+        <property name="Output" propertytype="System.Collections.Specialized.StringCollection" />
+        <property name="PathToAssembly" propertytype="System.String" />
+        <property name="NativeCompilerReturnValue" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Executor" namespace="System.CodeDom.Compiler">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="ExecWait(System.String, System.CodeDom.Compiler.TempFileCollection)" argnames="cmd, tempFiles" returntype="System.Void" />
+        <method name="ExecWaitWithCapture(System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="cmd, tempFiles, outputName, errorName" returntype="System.Int32" />
+        <method name="ExecWaitWithCapture(System.String, System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="cmd, currentDir, tempFiles, outputName, errorName" returntype="System.Int32" />
+        <method name="ExecWaitWithCapture(System.IntPtr, System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="userToken, cmd, tempFiles, outputName, errorName" returntype="System.Int32" />
+        <method name="ExecWaitWithCapture(System.IntPtr, System.String, System.String, System.CodeDom.Compiler.TempFileCollection, System.String&amp;, System.String&amp;)" argnames="userToken, cmd, currentDir, tempFiles, outputName, errorName" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IndentedTextWriter" namespace="System.CodeDom.Compiler">
+        <constructor name="IndentedTextWriter(System.IO.TextWriter)" argnames="writer" />
+        <constructor name="IndentedTextWriter(System.IO.TextWriter, System.String)" argnames="writer, tabString" />
+        <field name="DefaultTabString" />
+        <field name="CoreNewLine" inherited="System.IO.TextWriter" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <property name="NewLine" propertytype="System.String" />
+        <property name="Indent" propertytype="System.Int32" />
+        <property name="InnerWriter" propertytype="System.IO.TextWriter" />
+        <property name="FormatProvider" inherited="System.IO.TextWriter" propertytype="System.IFormatProvider" />
+        <method name="OutputTabs" argnames="" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="s" returntype="System.Void" />
+        <method name="WriteLine(System.Decimal)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="WriteLine(System.Double)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Single)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.UInt64)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="WriteLine(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.UInt32)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteLine(System.Char[])" argnames="buffer" returntype="System.Void" />
+        <method name="WriteLine(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine" argnames="" returntype="System.Void" />
+        <method name="Write(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
+        <method name="Write(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="Write(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
+        <method name="Write(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="s" returntype="System.Void" />
+        <method name="Write(System.Decimal)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt64)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt32)" argnames="value" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
+        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.IO.TextWriter" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="WriteLineNoTabs(System.String)" argnames="s" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TempFileCollection" namespace="System.CodeDom.Compiler">
+        <constructor name="TempFileCollection" argnames="" />
+        <constructor name="TempFileCollection(System.String)" argnames="tempDir" />
+        <constructor name="TempFileCollection(System.String, System.Boolean)" argnames="tempDir, keepFiles" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="TempDir" propertytype="System.String" />
+        <property name="BasePath" propertytype="System.String" />
+        <property name="KeepFiles" propertytype="System.Boolean" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddExtension(System.String)" argnames="fileExtension" returntype="System.String" />
+        <method name="AddExtension(System.String, System.Boolean)" argnames="fileExtension, keepFile" returntype="System.String" />
+        <method name="AddFile(System.String, System.Boolean)" argnames="fileName, keepFile" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.String[], System.Int32)" argnames="fileNames, start" returntype="System.Void" />
+        <method name="Delete" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="ICodeCompiler" namespace="System.CodeDom.Compiler">
+        <method name="CompileAssemblyFromSourceBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, sources" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="CompileAssemblyFromFileBatch(System.CodeDom.Compiler.CompilerParameters, System.String[])" argnames="options, fileNames" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="CompileAssemblyFromDomBatch(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit[])" argnames="options, compilationUnits" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="CompileAssemblyFromSource(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, source" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="CompileAssemblyFromFile(System.CodeDom.Compiler.CompilerParameters, System.String)" argnames="options, fileName" returntype="System.CodeDom.Compiler.CompilerResults" />
+        <method name="CompileAssemblyFromDom(System.CodeDom.Compiler.CompilerParameters, System.CodeDom.CodeCompileUnit)" argnames="options, compilationUnit" returntype="System.CodeDom.Compiler.CompilerResults" />
+    </interface>
+    <interface name="ICodeGenerator" namespace="System.CodeDom.Compiler">
+        <method name="GenerateCodeFromType(System.CodeDom.CodeTypeDeclaration, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
+        <method name="GenerateCodeFromCompileUnit(System.CodeDom.CodeCompileUnit, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
+        <method name="GenerateCodeFromNamespace(System.CodeDom.CodeNamespace, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
+        <method name="GenerateCodeFromStatement(System.CodeDom.CodeStatement, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
+        <method name="GenerateCodeFromExpression(System.CodeDom.CodeExpression, System.IO.TextWriter, System.CodeDom.Compiler.CodeGeneratorOptions)" argnames="e, w, o" returntype="System.Void" />
+        <method name="Supports(System.CodeDom.Compiler.GeneratorSupport)" argnames="supports" returntype="System.Boolean" />
+        <method name="GetTypeOutput(System.CodeDom.CodeTypeReference)" argnames="type" returntype="System.String" />
+        <method name="CreateValidIdentifier(System.String)" argnames="value" returntype="System.String" />
+        <method name="CreateEscapedIdentifier(System.String)" argnames="value" returntype="System.String" />
+        <method name="ValidateIdentifier(System.String)" argnames="value" returntype="System.Void" />
+        <method name="IsValidIdentifier(System.String)" argnames="value" returntype="System.Boolean" />
+    </interface>
+    <interface name="ICodeParser" namespace="System.CodeDom.Compiler">
+        <method name="Parse(System.IO.TextReader)" argnames="codeStream" returntype="System.CodeDom.CodeCompileUnit" />
+    </interface>
+    <enum name="GeneratorSupport" namespace="System.CodeDom.Compiler">
+        <field name="ArraysOfArrays" />
+        <field name="EntryPointMethod" />
+        <field name="GotoStatements" />
+        <field name="MultidimensionalArrays" />
+        <field name="StaticConstructors" />
+        <field name="TryCatchStatements" />
+        <field name="ReturnTypeAttributes" />
+        <field name="DeclareValueTypes" />
+        <field name="DeclareEnums" />
+        <field name="DeclareDelegates" />
+        <field name="DeclareInterfaces" />
+        <field name="DeclareEvents" />
+        <field name="AssemblyAttributes" />
+        <field name="ParameterAttributes" />
+        <field name="ReferenceParameters" />
+        <field name="ChainedConstructorArguments" />
+        <field name="NestedTypes" />
+        <field name="MultipleInterfaceMembers" />
+        <field name="PublicStaticMembers" />
+        <field name="ComplexExpressions" />
+        <field name="Win32Resources" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="LanguageOptions" namespace="System.CodeDom.Compiler">
+        <field name="None" />
+        <field name="CaseInsensitive" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="ServiceContainer" namespace="System.ComponentModel.Design">
+        <constructor name="ServiceContainer" argnames="" />
+        <constructor name="ServiceContainer(System.IServiceProvider)" argnames="parentProvider" />
+        <property name="Container" propertytype="System.ComponentModel.Design.IServiceContainer" />
+        <property name="Services" propertytype="System.Collections.Hashtable" />
+        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
+        <method name="RemoveService(System.Type, System.Boolean)" argnames="serviceType, promote" returntype="System.Void" />
+        <method name="RemoveService(System.Type)" argnames="serviceType" returntype="System.Void" />
+        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback, System.Boolean)" argnames="serviceType, callback, promote" returntype="System.Void" />
+        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback)" argnames="serviceType, callback" returntype="System.Void" />
+        <method name="AddService(System.Type, System.Object, System.Boolean)" argnames="serviceType, serviceInstance, promote" returntype="System.Void" />
+        <method name="AddService(System.Type, System.Object)" argnames="serviceType, serviceInstance" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ActiveDesignerEventArgs" namespace="System.ComponentModel.Design">
+        <constructor name="ActiveDesignerEventArgs(System.ComponentModel.Design.IDesignerHost, System.ComponentModel.Design.IDesignerHost)" argnames="oldDesigner, newDesigner" />
+        <property name="OldDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <property name="NewDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CheckoutException" namespace="System.ComponentModel.Design">
+        <constructor name="CheckoutException" argnames="" />
+        <constructor name="CheckoutException(System.String)" argnames="message" />
+        <constructor name="CheckoutException(System.String, System.Int32)" argnames="message, errorCode" />
+        <field name="Canceled" />
+        <property name="ErrorCode" inherited="System.Runtime.InteropServices.ExternalException" propertytype="System.Int32" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CommandID" namespace="System.ComponentModel.Design">
+        <constructor name="CommandID(System.Guid, System.Int32)" argnames="menuGroup, commandID" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Guid" propertytype="System.Guid" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentChangedEventArgs" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentChangedEventArgs(System.Object, System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="component, member, oldValue, newValue" />
+        <property name="Component" propertytype="System.Object" />
+        <property name="Member" propertytype="System.ComponentModel.MemberDescriptor" />
+        <property name="NewValue" propertytype="System.Object" />
+        <property name="OldValue" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentChangingEventArgs" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentChangingEventArgs(System.Object, System.ComponentModel.MemberDescriptor)" argnames="component, member" />
+        <property name="Component" propertytype="System.Object" />
+        <property name="Member" propertytype="System.ComponentModel.MemberDescriptor" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentEventArgs" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentEventArgs(System.ComponentModel.IComponent)" argnames="component" />
+        <property name="Component" propertytype="System.ComponentModel.IComponent" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ComponentRenameEventArgs" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentRenameEventArgs(System.Object, System.String, System.String)" argnames="component, oldName, newName" />
+        <property name="Component" propertytype="System.Object" />
+        <property name="OldName" propertytype="System.String" />
+        <property name="NewName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerTransaction" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerTransaction" argnames="" />
+        <constructor name="DesignerTransaction(System.String)" argnames="description" />
+        <property name="Canceled" propertytype="System.Boolean" />
+        <property name="Committed" propertytype="System.Boolean" />
+        <property name="Description" propertytype="System.String" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="OnCommit" argnames="" returntype="System.Void" />
+        <method name="OnCancel" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Cancel" argnames="" returntype="System.Void" />
+        <method name="Commit" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerTransactionCloseEventArgs" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerTransactionCloseEventArgs(System.Boolean)" argnames="commit" />
+        <property name="TransactionCommitted" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MenuCommand" namespace="System.ComponentModel.Design">
+        <constructor name="MenuCommand(System.EventHandler, System.ComponentModel.Design.CommandID)" argnames="handler, command" />
+        <property name="Checked" propertytype="System.Boolean" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Supported" propertytype="System.Boolean" />
+        <property name="Visible" propertytype="System.Boolean" />
+        <property name="CommandID" propertytype="System.ComponentModel.Design.CommandID" />
+        <property name="OleStatus" propertytype="System.Int32" />
+        <method name="OnCommandChanged(System.EventArgs)" argnames="e" returntype="System.Void" />
+        <method name="Invoke" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CommandChanged" />
+    </class>
+    <class name="DesignerVerb" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerVerb(System.String, System.EventHandler)" argnames="text, handler" />
+        <constructor name="DesignerVerb(System.String, System.EventHandler, System.ComponentModel.Design.CommandID)" argnames="text, handler, startCommandID" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Checked" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="Enabled" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="Supported" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="Visible" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Boolean" />
+        <property name="CommandID" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.ComponentModel.Design.CommandID" />
+        <property name="OleStatus" inherited="System.ComponentModel.Design.MenuCommand" propertytype="System.Int32" />
+        <method name="OnCommandChanged(System.EventArgs)" argnames="e" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
+        <method name="Invoke" argnames="" inherited="System.ComponentModel.Design.MenuCommand" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="CommandChanged" inherited="System.ComponentModel.Design.MenuCommand" />
+    </class>
+    <class name="DesignerVerbCollection" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerVerbCollection" argnames="" />
+        <constructor name="DesignerVerbCollection(System.ComponentModel.Design.DesignerVerb[])" argnames="value" />
+        <property name="Item" propertytype="System.ComponentModel.Design.DesignerVerb" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClear" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.ComponentModel.Design.DesignerVerb[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.ComponentModel.Design.DesignerVerbCollection)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.ComponentModel.Design.DesignerVerb)" argnames="index, value" returntype="System.Void" />
+        <method name="IndexOf(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Int32" />
+        <method name="Contains(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Boolean" />
+        <method name="Remove(System.ComponentModel.Design.DesignerVerb)" argnames="value" returntype="System.Void" />
+        <method name="CopyTo(System.ComponentModel.Design.DesignerVerb[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesigntimeLicenseContext" namespace="System.ComponentModel.Design">
+        <constructor name="DesigntimeLicenseContext" argnames="" />
+        <property name="UsageMode" propertytype="System.ComponentModel.LicenseUsageMode" />
+        <method name="GetService(System.Type)" argnames="type" inherited="System.ComponentModel.LicenseContext" returntype="System.Object" />
+        <method name="SetSavedLicenseKey(System.Type, System.String)" argnames="type, key" returntype="System.Void" />
+        <method name="GetSavedLicenseKey(System.Type, System.Reflection.Assembly)" argnames="type, resourceAssembly" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerCollection" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerCollection(System.ComponentModel.Design.IDesignerHost[])" argnames="designers" />
+        <constructor name="DesignerCollection(System.Collections.IList)" argnames="designers" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerEventArgs" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerEventArgs(System.ComponentModel.Design.IDesignerHost)" argnames="host" />
+        <property name="Designer" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StandardCommands" namespace="System.ComponentModel.Design">
+        <constructor name="StandardCommands" argnames="" />
+        <field name="AlignBottom" />
+        <field name="AlignHorizontalCenters" />
+        <field name="AlignLeft" />
+        <field name="AlignRight" />
+        <field name="AlignToGrid" />
+        <field name="AlignTop" />
+        <field name="AlignVerticalCenters" />
+        <field name="ArrangeBottom" />
+        <field name="ArrangeRight" />
+        <field name="BringForward" />
+        <field name="BringToFront" />
+        <field name="CenterHorizontally" />
+        <field name="CenterVertically" />
+        <field name="Copy" />
+        <field name="Cut" />
+        <field name="Delete" />
+        <field name="Group" />
+        <field name="HorizSpaceConcatenate" />
+        <field name="HorizSpaceDecrease" />
+        <field name="HorizSpaceIncrease" />
+        <field name="HorizSpaceMakeEqual" />
+        <field name="Paste" />
+        <field name="Properties" />
+        <field name="Redo" />
+        <field name="MultiLevelRedo" />
+        <field name="SelectAll" />
+        <field name="SendBackward" />
+        <field name="SendToBack" />
+        <field name="SizeToControl" />
+        <field name="SizeToControlHeight" />
+        <field name="SizeToControlWidth" />
+        <field name="SizeToFit" />
+        <field name="SizeToGrid" />
+        <field name="SnapToGrid" />
+        <field name="TabOrder" />
+        <field name="Undo" />
+        <field name="MultiLevelUndo" />
+        <field name="Ungroup" />
+        <field name="VertSpaceConcatenate" />
+        <field name="VertSpaceDecrease" />
+        <field name="VertSpaceIncrease" />
+        <field name="VertSpaceMakeEqual" />
+        <field name="ShowGrid" />
+        <field name="ViewGrid" />
+        <field name="Replace" />
+        <field name="PropertiesWindow" />
+        <field name="LockControls" />
+        <field name="F1Help" />
+        <field name="ArrangeIcons" />
+        <field name="LineupIcons" />
+        <field name="ShowLargeIcons" />
+        <field name="VerbFirst" />
+        <field name="VerbLast" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StandardToolWindows" namespace="System.ComponentModel.Design">
+        <constructor name="StandardToolWindows" argnames="" />
+        <field name="ObjectBrowser" />
+        <field name="OutputWindow" />
+        <field name="ProjectExplorer" />
+        <field name="PropertyBrowser" />
+        <field name="RelatedLinks" />
+        <field name="ServerExplorer" />
+        <field name="TaskList" />
+        <field name="Toolbox" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesigntimeLicenseContextSerializer" namespace="System.ComponentModel.Design">
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Serialize(System.IO.Stream, System.String, System.ComponentModel.Design.DesigntimeLicenseContext)" argnames="o, cryptoKey, context" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IComponentChangeService" namespace="System.ComponentModel.Design">
+        <method name="OnComponentChanging(System.Object, System.ComponentModel.MemberDescriptor)" argnames="component, member" returntype="System.Void" />
+        <method name="OnComponentChanged(System.Object, System.ComponentModel.MemberDescriptor, System.Object, System.Object)" argnames="component, member, oldValue, newValue" returntype="System.Void" />
+        <event name="ComponentAdded" />
+        <event name="ComponentAdding" />
+        <event name="ComponentChanged" />
+        <event name="ComponentChanging" />
+        <event name="ComponentRemoved" />
+        <event name="ComponentRemoving" />
+        <event name="ComponentRename" />
+    </interface>
+    <interface name="IDesigner" namespace="System.ComponentModel.Design">
+        <property name="Component" propertytype="System.ComponentModel.IComponent" />
+        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="Initialize(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="DoDefaultAction" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IDesignerEventService" namespace="System.ComponentModel.Design">
+        <property name="ActiveDesigner" propertytype="System.ComponentModel.Design.IDesignerHost" />
+        <property name="Designers" propertytype="System.ComponentModel.Design.DesignerCollection" />
+        <event name="ActiveDesignerChanged" />
+        <event name="DesignerCreated" />
+        <event name="DesignerDisposed" />
+        <event name="SelectionChanged" />
+    </interface>
+    <interface name="IDesignerFilter" namespace="System.ComponentModel.Design">
+        <method name="PreFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PreFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
+        <method name="PreFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
+        <method name="PostFilterProperties(System.Collections.IDictionary)" argnames="properties" returntype="System.Void" />
+        <method name="PostFilterEvents(System.Collections.IDictionary)" argnames="events" returntype="System.Void" />
+        <method name="PostFilterAttributes(System.Collections.IDictionary)" argnames="attributes" returntype="System.Void" />
+    </interface>
+    <interface name="IServiceContainer" namespace="System.ComponentModel.Design">
+        <method name="RemoveService(System.Type, System.Boolean)" argnames="serviceType, promote" returntype="System.Void" />
+        <method name="RemoveService(System.Type)" argnames="serviceType" returntype="System.Void" />
+        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback, System.Boolean)" argnames="serviceType, callback, promote" returntype="System.Void" />
+        <method name="AddService(System.Type, System.ComponentModel.Design.ServiceCreatorCallback)" argnames="serviceType, callback" returntype="System.Void" />
+        <method name="AddService(System.Type, System.Object, System.Boolean)" argnames="serviceType, serviceInstance, promote" returntype="System.Void" />
+        <method name="AddService(System.Type, System.Object)" argnames="serviceType, serviceInstance" returntype="System.Void" />
+    </interface>
+    <interface name="IDesignerHost" namespace="System.ComponentModel.Design">
+        <property name="Loading" propertytype="System.Boolean" />
+        <property name="InTransaction" propertytype="System.Boolean" />
+        <property name="Container" propertytype="System.ComponentModel.IContainer" />
+        <property name="RootComponent" propertytype="System.ComponentModel.IComponent" />
+        <property name="RootComponentClassName" propertytype="System.String" />
+        <property name="TransactionDescription" propertytype="System.String" />
+        <method name="GetType(System.String)" argnames="typeName" returntype="System.Type" />
+        <method name="GetDesigner(System.ComponentModel.IComponent)" argnames="component" returntype="System.ComponentModel.Design.IDesigner" />
+        <method name="DestroyComponent(System.ComponentModel.IComponent)" argnames="component" returntype="System.Void" />
+        <method name="CreateTransaction(System.String)" argnames="description" returntype="System.ComponentModel.Design.DesignerTransaction" />
+        <method name="CreateTransaction" argnames="" returntype="System.ComponentModel.Design.DesignerTransaction" />
+        <method name="CreateComponent(System.Type, System.String)" argnames="componentClass, name" returntype="System.ComponentModel.IComponent" />
+        <method name="CreateComponent(System.Type)" argnames="componentClass" returntype="System.ComponentModel.IComponent" />
+        <method name="Activate" argnames="" returntype="System.Void" />
+        <event name="Activated" />
+        <event name="Deactivated" />
+        <event name="LoadComplete" />
+        <event name="TransactionClosed" />
+        <event name="TransactionClosing" />
+        <event name="TransactionOpened" />
+        <event name="TransactionOpening" />
+    </interface>
+    <interface name="IDesignerOptionService" namespace="System.ComponentModel.Design">
+        <method name="SetOptionValue(System.String, System.String, System.Object)" argnames="pageName, valueName, value" returntype="System.Void" />
+        <method name="GetOptionValue(System.String, System.String)" argnames="pageName, valueName" returntype="System.Object" />
+    </interface>
+    <interface name="IDictionaryService" namespace="System.ComponentModel.Design">
+        <method name="SetValue(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="GetValue(System.Object)" argnames="key" returntype="System.Object" />
+        <method name="GetKey(System.Object)" argnames="value" returntype="System.Object" />
+    </interface>
+    <interface name="IEventBindingService" namespace="System.ComponentModel.Design">
+        <method name="ShowCode(System.ComponentModel.IComponent, System.ComponentModel.EventDescriptor)" argnames="component, e" returntype="System.Boolean" />
+        <method name="ShowCode(System.Int32)" argnames="lineNumber" returntype="System.Boolean" />
+        <method name="ShowCode" argnames="" returntype="System.Boolean" />
+        <method name="GetEventProperty(System.ComponentModel.EventDescriptor)" argnames="e" returntype="System.ComponentModel.PropertyDescriptor" />
+        <method name="GetEventProperties(System.ComponentModel.EventDescriptorCollection)" argnames="events" returntype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="GetEvent(System.ComponentModel.PropertyDescriptor)" argnames="property" returntype="System.ComponentModel.EventDescriptor" />
+        <method name="GetCompatibleMethods(System.ComponentModel.EventDescriptor)" argnames="e" returntype="System.Collections.ICollection" />
+        <method name="CreateUniqueMethodName(System.ComponentModel.IComponent, System.ComponentModel.EventDescriptor)" argnames="component, e" returntype="System.String" />
+    </interface>
+    <interface name="IExtenderListService" namespace="System.ComponentModel.Design">
+        <method name="GetExtenderProviders" argnames="" returntype="System.ComponentModel.IExtenderProvider[]" />
+    </interface>
+    <interface name="IExtenderProviderService" namespace="System.ComponentModel.Design">
+        <method name="RemoveExtenderProvider(System.ComponentModel.IExtenderProvider)" argnames="provider" returntype="System.Void" />
+        <method name="AddExtenderProvider(System.ComponentModel.IExtenderProvider)" argnames="provider" returntype="System.Void" />
+    </interface>
+    <interface name="IHelpService" namespace="System.ComponentModel.Design">
+        <method name="ShowHelpFromUrl(System.String)" argnames="helpUrl" returntype="System.Void" />
+        <method name="ShowHelpFromKeyword(System.String)" argnames="helpKeyword" returntype="System.Void" />
+        <method name="RemoveLocalContext(System.ComponentModel.Design.IHelpService)" argnames="localContext" returntype="System.Void" />
+        <method name="RemoveContextAttribute(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="CreateLocalContext(System.ComponentModel.Design.HelpContextType)" argnames="contextType" returntype="System.ComponentModel.Design.IHelpService" />
+        <method name="ClearContextAttributes" argnames="" returntype="System.Void" />
+        <method name="AddContextAttribute(System.String, System.String, System.ComponentModel.Design.HelpKeywordType)" argnames="name, value, keywordType" returntype="System.Void" />
+    </interface>
+    <interface name="IInheritanceService" namespace="System.ComponentModel.Design">
+        <method name="GetInheritanceAttribute(System.ComponentModel.IComponent)" argnames="component" returntype="System.ComponentModel.InheritanceAttribute" />
+        <method name="AddInheritedComponents(System.ComponentModel.IComponent, System.ComponentModel.IContainer)" argnames="component, container" returntype="System.Void" />
+    </interface>
+    <interface name="IMenuCommandService" namespace="System.ComponentModel.Design">
+        <property name="Verbs" propertytype="System.ComponentModel.Design.DesignerVerbCollection" />
+        <method name="ShowContextMenu(System.ComponentModel.Design.CommandID, System.Int32, System.Int32)" argnames="menuID, x, y" returntype="System.Void" />
+        <method name="RemoveVerb(System.ComponentModel.Design.DesignerVerb)" argnames="verb" returntype="System.Void" />
+        <method name="RemoveCommand(System.ComponentModel.Design.MenuCommand)" argnames="command" returntype="System.Void" />
+        <method name="GlobalInvoke(System.ComponentModel.Design.CommandID)" argnames="commandID" returntype="System.Boolean" />
+        <method name="FindCommand(System.ComponentModel.Design.CommandID)" argnames="commandID" returntype="System.ComponentModel.Design.MenuCommand" />
+        <method name="AddVerb(System.ComponentModel.Design.DesignerVerb)" argnames="verb" returntype="System.Void" />
+        <method name="AddCommand(System.ComponentModel.Design.MenuCommand)" argnames="command" returntype="System.Void" />
+    </interface>
+    <interface name="IReferenceService" namespace="System.ComponentModel.Design">
+        <method name="GetReferences(System.Type)" argnames="baseType" returntype="System.Object[]" />
+        <method name="GetReferences" argnames="" returntype="System.Object[]" />
+        <method name="GetName(System.Object)" argnames="reference" returntype="System.String" />
+        <method name="GetReference(System.String)" argnames="name" returntype="System.Object" />
+        <method name="GetComponent(System.Object)" argnames="reference" returntype="System.ComponentModel.IComponent" />
+    </interface>
+    <interface name="IResourceService" namespace="System.ComponentModel.Design">
+        <method name="GetResourceWriter(System.Globalization.CultureInfo)" argnames="info" returntype="System.Resources.IResourceWriter" />
+        <method name="GetResourceReader(System.Globalization.CultureInfo)" argnames="info" returntype="System.Resources.IResourceReader" />
+    </interface>
+    <interface name="IRootDesigner" namespace="System.ComponentModel.Design">
+        <property name="SupportedTechnologies" propertytype="System.ComponentModel.Design.ViewTechnology[]" />
+        <method name="GetView(System.ComponentModel.Design.ViewTechnology)" argnames="technology" returntype="System.Object" />
+    </interface>
+    <interface name="ISelectionService" namespace="System.ComponentModel.Design">
+        <property name="PrimarySelection" propertytype="System.Object" />
+        <property name="SelectionCount" propertytype="System.Int32" />
+        <method name="SetSelectedComponents(System.Collections.ICollection, System.ComponentModel.Design.SelectionTypes)" argnames="components, selectionType" returntype="System.Void" />
+        <method name="SetSelectedComponents(System.Collections.ICollection)" argnames="components" returntype="System.Void" />
+        <method name="GetSelectedComponents" argnames="" returntype="System.Collections.ICollection" />
+        <method name="GetComponentSelected(System.Object)" argnames="component" returntype="System.Boolean" />
+        <event name="SelectionChanged" />
+        <event name="SelectionChanging" />
+    </interface>
+    <interface name="ITypeDescriptorFilterService" namespace="System.ComponentModel.Design">
+        <method name="FilterProperties(System.ComponentModel.IComponent, System.Collections.IDictionary)" argnames="component, properties" returntype="System.Boolean" />
+        <method name="FilterEvents(System.ComponentModel.IComponent, System.Collections.IDictionary)" argnames="component, events" returntype="System.Boolean" />
+        <method name="FilterAttributes(System.ComponentModel.IComponent, System.Collections.IDictionary)" argnames="component, attributes" returntype="System.Boolean" />
+    </interface>
+    <interface name="ITypeResolutionService" namespace="System.ComponentModel.Design">
+        <method name="GetPathOfAssembly(System.Reflection.AssemblyName)" argnames="name" returntype="System.String" />
+        <method name="ReferenceAssembly(System.Reflection.AssemblyName)" argnames="name" returntype="System.Void" />
+        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="name, throwOnError, ignoreCase" returntype="System.Type" />
+        <method name="GetType(System.String, System.Boolean)" argnames="name, throwOnError" returntype="System.Type" />
+        <method name="GetType(System.String)" argnames="name" returntype="System.Type" />
+        <method name="GetAssembly(System.Reflection.AssemblyName, System.Boolean)" argnames="name, throwOnError" returntype="System.Reflection.Assembly" />
+        <method name="GetAssembly(System.Reflection.AssemblyName)" argnames="name" returntype="System.Reflection.Assembly" />
+    </interface>
+    <delegate name="ActiveDesignerEventHandler" namespace="System.ComponentModel.Design">
+        <constructor name="ActiveDesignerEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ActiveDesignerEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.ActiveDesignerEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ComponentChangedEventHandler" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ComponentChangingEventHandler" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentChangingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentChangingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentChangingEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ComponentEventHandler" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ComponentRenameEventHandler" namespace="System.ComponentModel.Design">
+        <constructor name="ComponentRenameEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.ComponentRenameEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.ComponentRenameEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DesignerTransactionCloseEventHandler" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerTransactionCloseEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.DesignerTransactionCloseEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.DesignerTransactionCloseEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="DesignerEventHandler" namespace="System.ComponentModel.Design">
+        <constructor name="DesignerEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.DesignerEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.DesignerEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ServiceCreatorCallback" namespace="System.ComponentModel.Design">
+        <constructor name="ServiceCreatorCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
+        <method name="BeginInvoke(System.ComponentModel.Design.IServiceContainer, System.Type, System.AsyncCallback, System.Object)" argnames="container, serviceType, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.ComponentModel.Design.IServiceContainer, System.Type)" argnames="container, serviceType" returntype="System.Object" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="HelpContextType" namespace="System.ComponentModel.Design">
+        <field name="Ambient" />
+        <field name="Window" />
+        <field name="Selection" />
+        <field name="ToolWindowSelection" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="HelpKeywordType" namespace="System.ComponentModel.Design">
+        <field name="F1Keyword" />
+        <field name="GeneralKeyword" />
+        <field name="FilterKeyword" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SelectionTypes" namespace="System.ComponentModel.Design">
+        <field name="Normal" />
+        <field name="Replace" />
+        <field name="MouseDown" />
+        <field name="MouseUp" />
+        <field name="Click" />
+        <field name="Valid" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ViewTechnology" namespace="System.ComponentModel.Design">
+        <field name="Passthrough" />
+        <field name="WindowsForms" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="DesignerSerializerAttribute" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="DesignerSerializerAttribute(System.Type, System.Type)" argnames="serializerType, baseSerializerType" />
+        <constructor name="DesignerSerializerAttribute(System.String, System.Type)" argnames="serializerTypeName, baseSerializerType" />
+        <constructor name="DesignerSerializerAttribute(System.String, System.String)" argnames="serializerTypeName, baseSerializerTypeName" />
+        <property name="SerializerTypeName" propertytype="System.String" />
+        <property name="SerializerBaseTypeName" propertytype="System.String" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RootDesignerSerializerAttribute" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="RootDesignerSerializerAttribute(System.Type, System.Type, System.Boolean)" argnames="serializerType, baseSerializerType, reloadable" />
+        <constructor name="RootDesignerSerializerAttribute(System.String, System.Type, System.Boolean)" argnames="serializerTypeName, baseSerializerType, reloadable" />
+        <constructor name="RootDesignerSerializerAttribute(System.String, System.String, System.Boolean)" argnames="serializerTypeName, baseSerializerTypeName, reloadable" />
+        <property name="Reloadable" propertytype="System.Boolean" />
+        <property name="SerializerTypeName" propertytype="System.String" />
+        <property name="SerializerBaseTypeName" propertytype="System.String" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ContextStack" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="ContextStack" argnames="" />
+        <property name="Current" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Pop" argnames="" returntype="System.Object" />
+        <method name="Push(System.Object)" argnames="context" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DesignerLoader" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="DesignerLoader" argnames="" />
+        <property name="Loading" propertytype="System.Boolean" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" returntype="System.Void" />
+        <method name="BeginLoad(System.ComponentModel.Design.Serialization.IDesignerLoaderHost)" argnames="host" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InstanceDescriptor" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="InstanceDescriptor(System.Reflection.MemberInfo, System.Collections.ICollection)" argnames="member, arguments" />
+        <constructor name="InstanceDescriptor(System.Reflection.MemberInfo, System.Collections.ICollection, System.Boolean)" argnames="member, arguments, isComplete" />
+        <property name="Arguments" propertytype="System.Collections.ICollection" />
+        <property name="IsComplete" propertytype="System.Boolean" />
+        <property name="MemberInfo" propertytype="System.Reflection.MemberInfo" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Invoke" argnames="" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ResolveNameEventArgs" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="ResolveNameEventArgs(System.String)" argnames="name" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Value" propertytype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IDesignerLoaderHost" namespace="System.ComponentModel.Design.Serialization">
+        <method name="Reload" argnames="" returntype="System.Void" />
+        <method name="EndLoad(System.String, System.Boolean, System.Collections.ICollection)" argnames="baseClassName, successful, errorCollection" returntype="System.Void" />
+    </interface>
+    <interface name="IDesignerLoaderService" namespace="System.ComponentModel.Design.Serialization">
+        <method name="Reload" argnames="" returntype="System.Boolean" />
+        <method name="DependentLoadComplete(System.Boolean, System.Collections.ICollection)" argnames="successful, errorCollection" returntype="System.Void" />
+        <method name="AddLoadDependency" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IDesignerSerializationManager" namespace="System.ComponentModel.Design.Serialization">
+        <property name="Context" propertytype="System.ComponentModel.Design.Serialization.ContextStack" />
+        <property name="Properties" propertytype="System.ComponentModel.PropertyDescriptorCollection" />
+        <method name="SetName(System.Object, System.String)" argnames="instance, name" returntype="System.Void" />
+        <method name="ReportError(System.Object)" argnames="errorInformation" returntype="System.Void" />
+        <method name="RemoveSerializationProvider(System.ComponentModel.Design.Serialization.IDesignerSerializationProvider)" argnames="provider" returntype="System.Void" />
+        <method name="GetType(System.String)" argnames="typeName" returntype="System.Type" />
+        <method name="GetSerializer(System.Type, System.Type)" argnames="objectType, serializerType" returntype="System.Object" />
+        <method name="GetName(System.Object)" argnames="value" returntype="System.String" />
+        <method name="GetInstance(System.String)" argnames="name" returntype="System.Object" />
+        <method name="CreateInstance(System.Type, System.Collections.ICollection, System.String, System.Boolean)" argnames="type, arguments, name, addToContainer" returntype="System.Object" />
+        <method name="AddSerializationProvider(System.ComponentModel.Design.Serialization.IDesignerSerializationProvider)" argnames="provider" returntype="System.Void" />
+        <event name="ResolveName" />
+        <event name="SerializationComplete" />
+    </interface>
+    <interface name="IDesignerSerializationProvider" namespace="System.ComponentModel.Design.Serialization">
+        <method name="GetSerializer(System.ComponentModel.Design.Serialization.IDesignerSerializationManager, System.Object, System.Type, System.Type)" argnames="manager, currentSerializer, objectType, serializerType" returntype="System.Object" />
+    </interface>
+    <interface name="IDesignerSerializationService" namespace="System.ComponentModel.Design.Serialization">
+        <method name="Serialize(System.Collections.ICollection)" argnames="objects" returntype="System.Object" />
+        <method name="Deserialize(System.Object)" argnames="serializationData" returntype="System.Collections.ICollection" />
+    </interface>
+    <interface name="INameCreationService" namespace="System.ComponentModel.Design.Serialization">
+        <method name="ValidateName(System.String)" argnames="name" returntype="System.Void" />
+        <method name="IsValidName(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="CreateName(System.ComponentModel.IContainer, System.Type)" argnames="container, dataType" returntype="System.String" />
+    </interface>
+    <delegate name="ResolveNameEventHandler" namespace="System.ComponentModel.Design.Serialization">
+        <constructor name="ResolveNameEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.ComponentModel.Design.Serialization.ResolveNameEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ComponentModel.Design.Serialization.ResolveNameEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <class name="CollectionsUtil" namespace="System.Collections.Specialized">
+        <constructor name="CollectionsUtil" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateCaseInsensitiveHashtable" argnames="" returntype="System.Collections.Hashtable" />
+        <method name="CreateCaseInsensitiveHashtable(System.Int32)" argnames="capacity" returntype="System.Collections.Hashtable" />
+        <method name="CreateCaseInsensitiveHashtable(System.Collections.IDictionary)" argnames="d" returntype="System.Collections.Hashtable" />
+        <method name="CreateCaseInsensitiveSortedList" argnames="" returntype="System.Collections.SortedList" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HybridDictionary" namespace="System.Collections.Specialized">
+        <constructor name="HybridDictionary" argnames="" />
+        <constructor name="HybridDictionary(System.Int32)" argnames="initialSize" />
+        <constructor name="HybridDictionary(System.Boolean)" argnames="caseInsensitive" />
+        <constructor name="HybridDictionary(System.Int32, System.Boolean)" argnames="initialSize, caseInsensitive" />
+        <property name="HashCodeProvider" propertytype="System.Collections.IHashCodeProvider" />
+        <property name="Comparer" propertytype="System.Collections.IComparer" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="List" propertytype="System.Collections.Specialized.ListDictionary" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ListDictionary" namespace="System.Collections.Specialized">
+        <constructor name="ListDictionary" argnames="" />
+        <constructor name="ListDictionary(System.Collections.IComparer)" argnames="comparer" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NameObjectCollectionBase" namespace="System.Collections.Specialized">
+        <class name="KeysCollection" namespace="System.Collections.Specialized">
+            <property name="Item" propertytype="System.String" />
+            <property name="Count" propertytype="System.Int32" />
+            <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+            <method name="Get(System.Int32)" argnames="index" returntype="System.String" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="KeysCollection" argnames="" />
+        <constructor name="KeysCollection(System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="hashProvider, comparer" />
+        <constructor name="KeysCollection(System.Int32, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, hashProvider, comparer" />
+        <constructor name="KeysCollection(System.Int32)" argnames="capacity" />
+        <constructor name="KeysCollection(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="HashCodeProvider" propertytype="System.Collections.IHashCodeProvider" />
+        <property name="Comparer" propertytype="System.Collections.IComparer" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Keys" propertytype="System.Collections.Specialized.NameObjectCollectionBase+KeysCollection" />
+        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="BaseHasKeys" argnames="" returntype="System.Boolean" />
+        <method name="BaseAdd(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
+        <method name="BaseRemove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="BaseRemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="BaseClear" argnames="" returntype="System.Void" />
+        <method name="BaseGet(System.String)" argnames="name" returntype="System.Object" />
+        <method name="BaseSet(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
+        <method name="BaseGet(System.Int32)" argnames="index" returntype="System.Object" />
+        <method name="BaseGetKey(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="BaseSet(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="BaseGetAllKeys" argnames="" returntype="System.String[]" />
+        <method name="BaseGetAllValues" argnames="" returntype="System.Object[]" />
+        <method name="BaseGetAllValues(System.Type)" argnames="type" returntype="System.Object[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="KeysCollection" namespace="System.Collections.Specialized">
+        <property name="Item" propertytype="System.String" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Get(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NameValueCollection" namespace="System.Collections.Specialized">
+        <constructor name="NameValueCollection" argnames="" />
+        <constructor name="NameValueCollection(System.Collections.Specialized.NameValueCollection)" argnames="col" />
+        <constructor name="NameValueCollection(System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="hashProvider, comparer" />
+        <constructor name="NameValueCollection(System.Int32)" argnames="capacity" />
+        <constructor name="NameValueCollection(System.Int32, System.Collections.Specialized.NameValueCollection)" argnames="capacity, col" />
+        <constructor name="NameValueCollection(System.Int32, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, hashProvider, comparer" />
+        <constructor name="NameValueCollection(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Item" propertytype="System.String" />
+        <property name="AllKeys" propertytype="System.String[]" />
+        <property name="IsReadOnly" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Boolean" />
+        <property name="Count" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Int32" />
+        <property name="Keys" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Collections.Specialized.NameObjectCollectionBase+KeysCollection" />
+        <method name="GetKey(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetValues(System.Int32)" argnames="index" returntype="System.String[]" />
+        <method name="Get(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="Set(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="GetValues(System.String)" argnames="name" returntype="System.String[]" />
+        <method name="Get(System.String)" argnames="name" returntype="System.String" />
+        <method name="Add(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="OnDeserialization(System.Object)" argnames="sender" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="InvalidateCachedArrays" argnames="" returntype="System.Void" />
+        <method name="Add(System.Collections.Specialized.NameValueCollection)" argnames="c" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" returntype="System.Void" />
+        <method name="HasKeys" argnames="" returntype="System.Boolean" />
+        <method name="BaseHasKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Boolean" />
+        <method name="BaseAdd(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseRemove(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseRemoveAt(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseClear" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseGet(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
+        <method name="BaseSet(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseGet(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
+        <method name="BaseGetKey(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String" />
+        <method name="BaseSet(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseGetAllKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String[]" />
+        <method name="BaseGetAllValues" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
+        <method name="BaseGetAllValues(System.Type)" argnames="type" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StringCollection" namespace="System.Collections.Specialized">
+        <constructor name="StringCollection" argnames="" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.String)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.String[])" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.String[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.Specialized.StringEnumerator" />
+        <method name="IndexOf(System.String)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.String)" argnames="index, value" returntype="System.Void" />
+        <method name="Remove(System.String)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StringEnumerator" namespace="System.Collections.Specialized">
+        <property name="Current" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="MoveNext" argnames="" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="StringDictionary" namespace="System.Collections.Specialized">
+        <constructor name="StringDictionary" argnames="" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.String" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="Remove(System.String)" argnames="key" returntype="System.Void" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="ContainsValue(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="ContainsKey(System.String)" argnames="key" returntype="System.Boolean" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="Add(System.String, System.String)" argnames="key, value" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <struct name="BitVector32" namespace="System.Collections.Specialized">
+        <struct name="Section" namespace="System.Collections.Specialized">
+            <property name="Mask" propertytype="System.Int16" />
+            <property name="Offset" propertytype="System.Int16" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+            <method name="ToString" argnames="" returntype="System.String" />
+            <method name="ToString(System.Collections.Specialized.BitVector32.Section)" argnames="value" returntype="System.String" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </struct>
+        <constructor name="Section(System.Int32)" argnames="data" />
+        <constructor name="Section(System.Collections.Specialized.BitVector32)" argnames="value" />
+        <property name="Item" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Int32" />
+        <property name="Data" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CreateMask" argnames="" returntype="System.Int32" />
+        <method name="CreateMask(System.Int32)" argnames="previous" returntype="System.Int32" />
+        <method name="CreateSection(System.Int16)" argnames="maxValue" returntype="System.Collections.Specialized.BitVector32+Section" />
+        <method name="CreateSection(System.Int16, System.Collections.Specialized.BitVector32.Section)" argnames="maxValue, previous" returntype="System.Collections.Specialized.BitVector32+Section" />
+        <method name="ToString(System.Collections.Specialized.BitVector32)" argnames="value" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="Section" namespace="System.Collections.Specialized">
+        <property name="Mask" propertytype="System.Int16" />
+        <property name="Offset" propertytype="System.Int16" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="ToString(System.Collections.Specialized.BitVector32.Section)" argnames="value" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <class name="ResourcePermissionBaseEntry" namespace="System.Security.Permissions">
+        <constructor name="ResourcePermissionBaseEntry" argnames="" />
+        <constructor name="ResourcePermissionBaseEntry(System.Int32, System.String[])" argnames="permissionAccess, permissionAccessPath" />
+        <property name="PermissionAccess" propertytype="System.Int32" />
+        <property name="PermissionAccessPath" propertytype="System.String[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ResourcePermissionBase" namespace="System.Security.Permissions">
+        <constructor name="ResourcePermissionBase" argnames="" />
+        <constructor name="ResourcePermissionBase(System.Security.Permissions.PermissionState)" argnames="state" />
+        <field name="Any" />
+        <field name="Local" />
+        <property name="ComputerName" propertytype="System.String" />
+        <property name="PermissionAccessType" propertytype="System.Type" />
+        <property name="TagNames" propertytype="System.String[]" />
+        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
+        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="AddPermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" returntype="System.Void" />
+        <method name="Clear" argnames="" returntype="System.Void" />
+        <method name="GetPermissionEntries" argnames="" returntype="System.Security.Permissions.ResourcePermissionBaseEntry[]" />
+        <method name="RemovePermissionAccess(System.Security.Permissions.ResourcePermissionBaseEntry)" argnames="entry" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WNDCLASS_I" namespace="Microsoft.Win32">
+        <constructor name="WNDCLASS_I" argnames="" />
+        <field name="style" />
+        <field name="lpfnWndProc" />
+        <field name="cbClsExtra" />
+        <field name="cbWndExtra" />
+        <field name="hInstance" />
+        <field name="hIcon" />
+        <field name="hCursor" />
+        <field name="hbrBackground" />
+        <field name="lpszMenuName" />
+        <field name="lpszClassName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WNDCLASS" namespace="Microsoft.Win32">
+        <constructor name="WNDCLASS" argnames="" />
+        <field name="style" />
+        <field name="lpfnWndProc" />
+        <field name="cbClsExtra" />
+        <field name="cbWndExtra" />
+        <field name="hInstance" />
+        <field name="hIcon" />
+        <field name="hCursor" />
+        <field name="hbrBackground" />
+        <field name="lpszMenuName" />
+        <field name="lpszClassName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PROCESS_INFORMATION" namespace="Microsoft.Win32">
+        <constructor name="PROCESS_INFORMATION" argnames="" />
+        <field name="hProcess" />
+        <field name="hThread" />
+        <field name="dwProcessId" />
+        <field name="dwThreadId" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SECURITY_ATTRIBUTES" namespace="Microsoft.Win32">
+        <constructor name="SECURITY_ATTRIBUTES" argnames="" />
+        <field name="nLength" />
+        <field name="lpSecurityDescriptor" />
+        <field name="bInheritHandle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="STARTUPINFO" namespace="Microsoft.Win32">
+        <constructor name="STARTUPINFO" argnames="" />
+        <field name="cb" />
+        <field name="lpReserved" />
+        <field name="lpDesktop" />
+        <field name="lpTitle" />
+        <field name="dwX" />
+        <field name="dwY" />
+        <field name="dwXSize" />
+        <field name="dwYSize" />
+        <field name="dwXCountChars" />
+        <field name="dwYCountChars" />
+        <field name="dwFillAttribute" />
+        <field name="dwFlags" />
+        <field name="wShowWindow" />
+        <field name="cbReserved2" />
+        <field name="lpReserved2" />
+        <field name="hStdInput" />
+        <field name="hStdOutput" />
+        <field name="hStdError" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TEXTMETRIC" namespace="Microsoft.Win32">
+        <constructor name="TEXTMETRIC" argnames="" />
+        <field name="tmHeight" />
+        <field name="tmAscent" />
+        <field name="tmDescent" />
+        <field name="tmInternalLeading" />
+        <field name="tmExternalLeading" />
+        <field name="tmAveCharWidth" />
+        <field name="tmMaxCharWidth" />
+        <field name="tmWeight" />
+        <field name="tmOverhang" />
+        <field name="tmDigitizedAspectX" />
+        <field name="tmDigitizedAspectY" />
+        <field name="tmFirstChar" />
+        <field name="tmLastChar" />
+        <field name="tmDefaultChar" />
+        <field name="tmBreakChar" />
+        <field name="tmItalic" />
+        <field name="tmUnderlined" />
+        <field name="tmStruckOut" />
+        <field name="tmPitchAndFamily" />
+        <field name="tmCharSet" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SECURITY_DESCRIPTOR" namespace="Microsoft.Win32">
+        <constructor name="SECURITY_DESCRIPTOR" argnames="" />
+        <field name="Revision" />
+        <field name="Sbz1" />
+        <field name="Control" />
+        <field name="Owner" />
+        <field name="Group" />
+        <field name="Sacl" />
+        <field name="Dacl" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PERF_COUNTER_BLOCK" namespace="Microsoft.Win32">
+        <constructor name="PERF_COUNTER_BLOCK" argnames="" />
+        <field name="ByteLength" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PERF_COUNTER_DEFINITION" namespace="Microsoft.Win32">
+        <constructor name="PERF_COUNTER_DEFINITION" argnames="" />
+        <field name="ByteLength" />
+        <field name="CounterNameTitleIndex" />
+        <field name="CounterNameTitlePtr" />
+        <field name="CounterHelpTitleIndex" />
+        <field name="CounterHelpTitlePtr" />
+        <field name="DefaultScale" />
+        <field name="DetailLevel" />
+        <field name="CounterType" />
+        <field name="CounterSize" />
+        <field name="CounterOffset" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PERF_DATA_BLOCK" namespace="Microsoft.Win32">
+        <constructor name="PERF_DATA_BLOCK" argnames="" />
+        <field name="Signature1" />
+        <field name="Signature2" />
+        <field name="LittleEndian" />
+        <field name="Version" />
+        <field name="Revision" />
+        <field name="TotalByteLength" />
+        <field name="HeaderLength" />
+        <field name="NumObjectTypes" />
+        <field name="DefaultObject" />
+        <field name="SystemTime" />
+        <field name="pad1" />
+        <field name="PerfTime" />
+        <field name="PerfFreq" />
+        <field name="PerfTime100nSec" />
+        <field name="SystemNameLength" />
+        <field name="SystemNameOffset" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PERF_INSTANCE_DEFINITION" namespace="Microsoft.Win32">
+        <constructor name="PERF_INSTANCE_DEFINITION" argnames="" />
+        <field name="ByteLength" />
+        <field name="ParentObjectTitleIndex" />
+        <field name="ParentObjectInstance" />
+        <field name="UniqueID" />
+        <field name="NameOffset" />
+        <field name="NameLength" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="PERF_OBJECT_TYPE" namespace="Microsoft.Win32">
+        <constructor name="PERF_OBJECT_TYPE" argnames="" />
+        <field name="TotalByteLength" />
+        <field name="DefinitionLength" />
+        <field name="HeaderLength" />
+        <field name="ObjectNameTitleIndex" />
+        <field name="ObjectNameTitlePtr" />
+        <field name="ObjectHelpTitleIndex" />
+        <field name="ObjectHelpTitlePtr" />
+        <field name="DetailLevel" />
+        <field name="NumCounters" />
+        <field name="DefaultCounter" />
+        <field name="NumInstances" />
+        <field name="CodePage" />
+        <field name="PerfTime" />
+        <field name="PerfFreq" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NtModuleInfo" namespace="Microsoft.Win32">
+        <constructor name="NtModuleInfo" argnames="" />
+        <field name="BaseOfDll" />
+        <field name="SizeOfImage" />
+        <field name="EntryPoint" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WinProcessEntry" namespace="Microsoft.Win32">
+        <constructor name="WinProcessEntry" argnames="" />
+        <field name="dwSize" />
+        <field name="cntUsage" />
+        <field name="th32ProcessID" />
+        <field name="th32DefaultHeapID" />
+        <field name="th32ModuleID" />
+        <field name="cntThreads" />
+        <field name="th32ParentProcessID" />
+        <field name="pcPriClassBase" />
+        <field name="dwFlags" />
+        <field name="sizeofFileName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WinThreadEntry" namespace="Microsoft.Win32">
+        <constructor name="WinThreadEntry" argnames="" />
+        <field name="dwSize" />
+        <field name="cntUsage" />
+        <field name="th32ThreadID" />
+        <field name="th32OwnerProcessID" />
+        <field name="tpBasePri" />
+        <field name="tpDeltaPri" />
+        <field name="dwFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WinModuleEntry" namespace="Microsoft.Win32">
+        <constructor name="WinModuleEntry" argnames="" />
+        <field name="dwSize" />
+        <field name="th32ModuleID" />
+        <field name="th32ProcessID" />
+        <field name="GlblcntUsage" />
+        <field name="ProccntUsage" />
+        <field name="modBaseAddr" />
+        <field name="modBaseSize" />
+        <field name="hModule" />
+        <field name="sizeofModuleName" />
+        <field name="sizeofFileName" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ShellExecuteInfo" namespace="Microsoft.Win32">
+        <constructor name="ShellExecuteInfo" argnames="" />
+        <field name="cbSize" />
+        <field name="fMask" />
+        <field name="hwnd" />
+        <field name="lpVerb" />
+        <field name="lpFile" />
+        <field name="lpParameters" />
+        <field name="lpDirectory" />
+        <field name="nShow" />
+        <field name="hInstApp" />
+        <field name="lpIDList" />
+        <field name="lpClass" />
+        <field name="hkeyClass" />
+        <field name="dwHotKey" />
+        <field name="hIcon" />
+        <field name="hProcess" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SecurityAttributes" namespace="Microsoft.Win32">
+        <constructor name="SecurityAttributes" argnames="" />
+        <field name="nLength" />
+        <field name="lpSecurityDescriptor" />
+        <field name="bInheritHandle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CreateProcessStartupInfo" namespace="Microsoft.Win32">
+        <constructor name="CreateProcessStartupInfo" argnames="" />
+        <field name="cb" />
+        <field name="lpReserved" />
+        <field name="lpDesktop" />
+        <field name="lpTitle" />
+        <field name="dwX" />
+        <field name="dwY" />
+        <field name="dwXSize" />
+        <field name="dwYSize" />
+        <field name="dwXCountChars" />
+        <field name="dwYCountChars" />
+        <field name="dwFillAttribute" />
+        <field name="dwFlags" />
+        <field name="wShowWindow" />
+        <field name="cbReserved2" />
+        <field name="lpReserved2" />
+        <field name="hStdInput" />
+        <field name="hStdOutput" />
+        <field name="hStdError" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CreateProcessProcessInformation" namespace="Microsoft.Win32">
+        <constructor name="CreateProcessProcessInformation" argnames="" />
+        <field name="hProcess" />
+        <field name="hThread" />
+        <field name="dwProcessId" />
+        <field name="dwThreadId" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NtProcessBasicInfo" namespace="Microsoft.Win32">
+        <constructor name="NtProcessBasicInfo" argnames="" />
+        <field name="ExitStatus" />
+        <field name="PebBaseAddress" />
+        <field name="AffinityMask" />
+        <field name="BasePriority" />
+        <field name="UniqueProcessId" />
+        <field name="InheritedFromUniqueProcessId" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TokenPrivileges" namespace="Microsoft.Win32">
+        <constructor name="TokenPrivileges" argnames="" />
+        <field name="PrivilegeCount" />
+        <field name="Luid" />
+        <field name="Attributes" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SYSTEMTIME" namespace="Microsoft.Win32">
+        <constructor name="SYSTEMTIME" argnames="" />
+        <field name="wYear" />
+        <field name="wMonth" />
+        <field name="wDayOfWeek" />
+        <field name="wDay" />
+        <field name="wHour" />
+        <field name="wMinute" />
+        <field name="wSecond" />
+        <field name="wMilliseconds" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="VS_FIXEDFILEINFO" namespace="Microsoft.Win32">
+        <constructor name="VS_FIXEDFILEINFO" argnames="" />
+        <field name="dwSignature" />
+        <field name="dwStructVersion" />
+        <field name="dwFileVersionMS" />
+        <field name="dwFileVersionLS" />
+        <field name="dwProductVersionMS" />
+        <field name="dwProductVersionLS" />
+        <field name="dwFileFlagsMask" />
+        <field name="dwFileFlags" />
+        <field name="dwFileOS" />
+        <field name="dwFileType" />
+        <field name="dwFileSubtype" />
+        <field name="dwFileDateMS" />
+        <field name="dwFileDateLS" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="USEROBJECTFLAGS" namespace="Microsoft.Win32">
+        <constructor name="USEROBJECTFLAGS" argnames="" />
+        <field name="fInherit" />
+        <field name="fReserved" />
+        <field name="dwFlags" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="OSVERSIONINFO" namespace="Microsoft.Win32">
+        <constructor name="OSVERSIONINFO" argnames="" />
+        <field name="dwOSVersionInfoSize" />
+        <field name="dwMajorVersion" />
+        <field name="dwMinorVersion" />
+        <field name="dwBuildNumber" />
+        <field name="dwPlatformId" />
+        <field name="szCSDVersion" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Util" namespace="Microsoft.Win32">
+        <constructor name="Util" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="MAKELONG(System.Int32, System.Int32)" argnames="low, high" returntype="System.Int32" />
+        <method name="MAKELPARAM(System.Int32, System.Int32)" argnames="low, high" returntype="System.IntPtr" />
+        <method name="HIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="HIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="LOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="LOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="SignedHIWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="SignedLOWORD(System.IntPtr)" argnames="n" returntype="System.Int32" />
+        <method name="SignedHIWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="SignedLOWORD(System.Int32)" argnames="n" returntype="System.Int32" />
+        <method name="GetPInvokeStringLength(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SystemEvents" namespace="Microsoft.Win32">
+        <property name="UserInteractive" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="CreateTimer(System.Int32)" argnames="interval" returntype="System.IntPtr" />
+        <method name="InvokeOnEventsThread(System.Delegate)" argnames="method" returntype="System.Void" />
+        <method name="KillTimer(System.IntPtr)" argnames="timerId" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="DisplaySettingsChanged" />
+        <event name="EventsThreadShutdown" />
+        <event name="InstalledFontsChanged" />
+        <event name="LowMemory" />
+        <event name="PaletteChanged" />
+        <event name="PowerModeChanged" />
+        <event name="SessionEnded" />
+        <event name="SessionEnding" />
+        <event name="TimeChanged" />
+        <event name="TimerElapsed" />
+        <event name="UserPreferenceChanged" />
+        <event name="UserPreferenceChanging" />
+    </class>
+    <class name="PowerModeChangedEventArgs" namespace="Microsoft.Win32">
+        <constructor name="PowerModeChangedEventArgs(Microsoft.Win32.PowerModes)" argnames="mode" />
+        <property name="Mode" propertytype="Microsoft.Win32.PowerModes" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SessionEndedEventArgs" namespace="Microsoft.Win32">
+        <constructor name="SessionEndedEventArgs(Microsoft.Win32.SessionEndReasons)" argnames="reason" />
+        <property name="Reason" propertytype="Microsoft.Win32.SessionEndReasons" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SessionEndingEventArgs" namespace="Microsoft.Win32">
+        <constructor name="SessionEndingEventArgs(Microsoft.Win32.SessionEndReasons)" argnames="reason" />
+        <property name="Cancel" propertytype="System.Boolean" />
+        <property name="Reason" propertytype="Microsoft.Win32.SessionEndReasons" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TimerElapsedEventArgs" namespace="Microsoft.Win32">
+        <constructor name="TimerElapsedEventArgs(System.IntPtr)" argnames="timerId" />
+        <property name="TimerId" propertytype="System.IntPtr" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UserPreferenceChangedEventArgs" namespace="Microsoft.Win32">
+        <constructor name="UserPreferenceChangedEventArgs(Microsoft.Win32.UserPreferenceCategory)" argnames="category" />
+        <property name="Category" propertytype="Microsoft.Win32.UserPreferenceCategory" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UserPreferenceChangingEventArgs" namespace="Microsoft.Win32">
+        <constructor name="UserPreferenceChangingEventArgs(Microsoft.Win32.UserPreferenceCategory)" argnames="category" />
+        <property name="Category" propertytype="Microsoft.Win32.UserPreferenceCategory" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <struct name="MSG" namespace="Microsoft.Win32">
+        <field name="hwnd" />
+        <field name="message" />
+        <field name="wParam" />
+        <field name="lParam" />
+        <field name="time" />
+        <field name="pt_x" />
+        <field name="pt_y" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <struct name="LUID" namespace="Microsoft.Win32">
+        <field name="LowPart" />
+        <field name="HighPart" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <delegate name="WndProc" namespace="Microsoft.Win32">
+        <constructor name="WndProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
+        <method name="BeginInvoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, msg, wParam, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr)" argnames="hWnd, msg, wParam, lParam" returntype="System.IntPtr" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="ConHndlr" namespace="Microsoft.Win32">
+        <constructor name="ConHndlr(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Int32" />
+        <method name="BeginInvoke(System.Int32, System.AsyncCallback, System.Object)" argnames="signalType, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Int32)" argnames="signalType" returntype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="EnumThreadWindowsCallback" namespace="Microsoft.Win32">
+        <constructor name="EnumThreadWindowsCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.IntPtr, System.IntPtr, System.AsyncCallback, System.Object)" argnames="hWnd, lParam, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.IntPtr)" argnames="hWnd, lParam" returntype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="PowerModeChangedEventHandler" namespace="Microsoft.Win32">
+        <constructor name="PowerModeChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, Microsoft.Win32.PowerModeChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, Microsoft.Win32.PowerModeChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="TimerAPCProc" namespace="Microsoft.Win32">
+        <constructor name="TimerAPCProc(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.IntPtr, System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="argToCompletionRoutine, timerLowValue, timerHighValue, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr, System.Int32, System.Int32)" argnames="argToCompletionRoutine, timerLowValue, timerHighValue" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="SessionEndedEventHandler" namespace="Microsoft.Win32">
+        <constructor name="SessionEndedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, Microsoft.Win32.SessionEndedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, Microsoft.Win32.SessionEndedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="SessionEndingEventHandler" namespace="Microsoft.Win32">
+        <constructor name="SessionEndingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, Microsoft.Win32.SessionEndingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, Microsoft.Win32.SessionEndingEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="TimerElapsedEventHandler" namespace="Microsoft.Win32">
+        <constructor name="TimerElapsedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, Microsoft.Win32.TimerElapsedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, Microsoft.Win32.TimerElapsedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="UserPreferenceChangedEventHandler" namespace="Microsoft.Win32">
+        <constructor name="UserPreferenceChangedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, Microsoft.Win32.UserPreferenceChangedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, Microsoft.Win32.UserPreferenceChangedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="UserPreferenceChangingEventHandler" namespace="Microsoft.Win32">
+        <constructor name="UserPreferenceChangingEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, Microsoft.Win32.UserPreferenceChangingEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, Microsoft.Win32.UserPreferenceChangingEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="StructFormatEnum" namespace="Microsoft.Win32">
+        <field name="Ansi" />
+        <field name="Unicode" />
+        <field name="Auto" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="StructFormat" namespace="Microsoft.Win32">
+        <field name="Ansi" />
+        <field name="Unicode" />
+        <field name="Auto" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="PowerModes" namespace="Microsoft.Win32">
+        <field name="Resume" />
+        <field name="StatusChange" />
+        <field name="Suspend" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SessionEndReasons" namespace="Microsoft.Win32">
+        <field name="Logoff" />
+        <field name="SystemShutdown" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="UserPreferenceCategory" namespace="Microsoft.Win32">
+        <field name="Accessibility" />
+        <field name="Color" />
+        <field name="Desktop" />
+        <field name="General" />
+        <field name="Icon" />
+        <field name="Keyboard" />
+        <field name="Menu" />
+        <field name="Mouse" />
+        <field name="Policy" />
+        <field name="Power" />
+        <field name="Screensaver" />
+        <field name="Window" />
+        <field name="Locale" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="CSharpCodeProvider" namespace="Microsoft.CSharp">
+        <constructor name="CSharpCodeProvider" argnames="" />
+        <property name="FileExtension" propertytype="System.String" />
+        <property name="LanguageOptions" inherited="System.CodeDom.Compiler.CodeDomProvider" propertytype="System.CodeDom.Compiler.LanguageOptions" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
+        <method name="CreateParser" argnames="" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeParser" />
+        <method name="CreateCompiler" argnames="" returntype="System.CodeDom.Compiler.ICodeCompiler" />
+        <method name="CreateGenerator(System.String)" argnames="fileName" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="CreateGenerator(System.IO.TextWriter)" argnames="output" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="CreateGenerator" argnames="" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="VBCodeProvider" namespace="Microsoft.VisualBasic">
+        <constructor name="VBCodeProvider" argnames="" />
+        <property name="FileExtension" propertytype="System.String" />
+        <property name="LanguageOptions" propertytype="System.CodeDom.Compiler.LanguageOptions" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="GetConverter(System.Type)" argnames="type" returntype="System.ComponentModel.TypeConverter" />
+        <method name="CreateParser" argnames="" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeParser" />
+        <method name="CreateCompiler" argnames="" returntype="System.CodeDom.Compiler.ICodeCompiler" />
+        <method name="CreateGenerator(System.String)" argnames="fileName" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="CreateGenerator(System.IO.TextWriter)" argnames="output" inherited="System.CodeDom.Compiler.CodeDomProvider" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="CreateGenerator" argnames="" returntype="System.CodeDom.Compiler.ICodeGenerator" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="Uri" namespace="System">
+        <constructor name="Uri(System.String)" argnames="uriString" />
+        <constructor name="Uri(System.String, System.Boolean)" argnames="uriString, dontEscape" />
+        <constructor name="Uri(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <constructor name="Uri(System.Uri, System.String)" argnames="baseUri, relativeUri" />
+        <constructor name="Uri(System.Uri, System.String, System.Boolean)" argnames="baseUri, relativeUri, dontEscape" />
+        <field name="UriSchemeFile" />
+        <field name="UriSchemeFtp" />
+        <field name="UriSchemeGopher" />
+        <field name="UriSchemeHttp" />
+        <field name="UriSchemeHttps" />
+        <field name="UriSchemeMailto" />
+        <field name="UriSchemeNews" />
+        <field name="UriSchemeNntp" />
+        <field name="SchemeDelimiter" />
+        <property name="AbsolutePath" propertytype="System.String" />
+        <property name="AbsoluteUri" propertytype="System.String" />
+        <property name="Authority" propertytype="System.String" />
+        <property name="BasePath" propertytype="System.String" />
+        <property name="CurrentDocument" propertytype="System.String" />
+        <property name="DisplayFragment" propertytype="System.String" />
+        <property name="DisplayNameNoExtra" propertytype="System.String" />
+        <property name="DisplayPath" propertytype="System.String" />
+        <property name="DisplayPathLocal" propertytype="System.String" />
+        <property name="DisplayQuery" propertytype="System.String" />
+        <property name="Extra" propertytype="System.String" />
+        <property name="ExtraDelimiter" propertytype="System.String" />
+        <property name="Fragment" propertytype="System.String" />
+        <property name="Host" propertytype="System.String" />
+        <property name="HostNameType" propertytype="System.UriHostNameType" />
+        <property name="HostType" propertytype="System.HostNameType" />
+        <property name="IsDefaultPort" propertytype="System.Boolean" />
+        <property name="IsFile" propertytype="System.Boolean" />
+        <property name="IsLoopback" propertytype="System.Boolean" />
+        <property name="IsSchemeKnownToHaveSlashes" propertytype="System.Boolean" />
+        <property name="IsUnc" propertytype="System.Boolean" />
+        <property name="LocalPath" propertytype="System.String" />
+        <property name="NonPathPart" propertytype="System.String" />
+        <property name="NonPathPartUnc" propertytype="System.String" />
+        <property name="PathAndQuery" propertytype="System.String" />
+        <property name="Port" propertytype="System.Int32" />
+        <property name="Query" propertytype="System.String" />
+        <property name="Scheme" propertytype="System.String" />
+        <property name="Segments" propertytype="System.String[]" />
+        <property name="UserEscaped" propertytype="System.Boolean" />
+        <property name="UserInfo" propertytype="System.String" />
+        <method name="Unescape(System.String)" argnames="path" returntype="System.String" />
+        <method name="Parse" argnames="" returntype="System.Void" />
+        <method name="IsReservedCharacter(System.Char)" argnames="character" returntype="System.Boolean" />
+        <method name="IsBadFileSystemCharacter(System.Char)" argnames="character" returntype="System.Boolean" />
+        <method name="Escape" argnames="" returntype="System.Void" />
+        <method name="CheckSecurity" argnames="" returntype="System.Void" />
+        <method name="Canonicalize" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="CheckHostName(System.String)" argnames="name" returntype="System.UriHostNameType" />
+        <method name="CheckSchemeName(System.String)" argnames="schemeName" returntype="System.Boolean" />
+        <method name="EscapeString(System.String)" argnames="str" returntype="System.String" />
+        <method name="FromHex(System.Char)" argnames="digit" returntype="System.Int32" />
+        <method name="GetLeftPart(System.UriPartial)" argnames="part" returntype="System.String" />
+        <method name="HexEscape(System.Char)" argnames="character" returntype="System.String" />
+        <method name="HexUnescape(System.String, System.Int32&amp;)" argnames="pattern, index" returntype="System.Char" />
+        <method name="IsExcludedCharacter(System.Char)" argnames="character" returntype="System.Boolean" />
+        <method name="IsHexDigit(System.Char)" argnames="character" returntype="System.Boolean" />
+        <method name="IsHexEncoding(System.String, System.Int32)" argnames="pattern, index" returntype="System.Boolean" />
+        <method name="MakeRelative(System.Uri)" argnames="toUri" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UriBuilder" namespace="System">
+        <constructor name="UriBuilder" argnames="" />
+        <constructor name="UriBuilder(System.String)" argnames="uri" />
+        <constructor name="UriBuilder(System.Uri)" argnames="uri" />
+        <constructor name="UriBuilder(System.String, System.String)" argnames="schemeName, hostName" />
+        <constructor name="UriBuilder(System.String, System.String, System.Int32)" argnames="scheme, host, portNumber" />
+        <constructor name="UriBuilder(System.String, System.String, System.Int32, System.String)" argnames="scheme, host, port, pathValue" />
+        <constructor name="UriBuilder(System.String, System.String, System.Int32, System.String, System.String)" argnames="scheme, host, port, path, extraValue" />
+        <property name="Extra" propertytype="System.String" />
+        <property name="Fragment" propertytype="System.String" />
+        <property name="Host" propertytype="System.String" />
+        <property name="Password" propertytype="System.String" />
+        <property name="Path" propertytype="System.String" />
+        <property name="Port" propertytype="System.Int32" />
+        <property name="Query" propertytype="System.String" />
+        <property name="Scheme" propertytype="System.String" />
+        <property name="Uri" propertytype="System.Uri" />
+        <property name="UserName" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="rparam" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UriFormatException" namespace="System">
+        <constructor name="UriFormatException" argnames="" />
+        <constructor name="UriFormatException(System.String)" argnames="textString" />
+        <constructor name="UriFormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="UriHostNameType" namespace="System">
+        <field name="Unknown" />
+        <field name="Basic" />
+        <field name="Dns" />
+        <field name="IPv4" />
+        <field name="IPv6" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="UriPartial" namespace="System">
+        <field name="Scheme" />
+        <field name="Authority" />
+        <field name="Path" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="Authorization" namespace="System.Net">
+        <constructor name="Authorization(System.String)" argnames="token" />
+        <constructor name="Authorization(System.String, System.Boolean)" argnames="token, finished" />
+        <constructor name="Authorization(System.String, System.Boolean, System.String)" argnames="token, finished, connectionGroupId" />
+        <property name="Message" propertytype="System.String" />
+        <property name="ConnectionGroupId" propertytype="System.String" />
+        <property name="Complete" propertytype="System.Boolean" />
+        <property name="ProtectionRealm" propertytype="System.String[]" />
+        <property name="Module" propertytype="System.Net.IAuthenticationModule" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Cookie" namespace="System.Net">
+        <constructor name="Cookie" argnames="" />
+        <constructor name="Cookie(System.String, System.String)" argnames="name, value" />
+        <constructor name="Cookie(System.String, System.String, System.String)" argnames="name, value, path" />
+        <constructor name="Cookie(System.String, System.String, System.String, System.String)" argnames="name, value, path, domain" />
+        <property name="Comment" propertytype="System.String" />
+        <property name="CommentUri" propertytype="System.Uri" />
+        <property name="Discard" propertytype="System.Boolean" />
+        <property name="Domain" propertytype="System.String" />
+        <property name="_Domain" propertytype="System.String" />
+        <property name="Expired" propertytype="System.Boolean" />
+        <property name="Expires" propertytype="System.DateTime" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Path" propertytype="System.String" />
+        <property name="_Path" propertytype="System.String" />
+        <property name="Plain" propertytype="System.Boolean" />
+        <property name="Port" propertytype="System.String" />
+        <property name="PortList" propertytype="System.Int32[]" />
+        <property name="_Port" propertytype="System.String" />
+        <property name="Secure" propertytype="System.Boolean" />
+        <property name="TimeStamp" propertytype="System.DateTime" />
+        <property name="Value" propertytype="System.String" />
+        <property name="Variant" propertytype="System.Net.CookieVariant" />
+        <property name="DomainKey" propertytype="System.String" />
+        <property name="Version" propertytype="System.Int32" />
+        <property name="_Version" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CookieCollection" namespace="System.Net">
+        <constructor name="CookieCollection" argnames="" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Item" propertytype="System.Net.Cookie" />
+        <property name="Item" propertytype="System.Net.Cookie" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsOtherVersionSeen" propertytype="System.Boolean" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Net.Cookie)" argnames="cookie" returntype="System.Void" />
+        <method name="Add(System.Net.CookieCollection)" argnames="cookies" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CookieContainer" namespace="System.Net">
+        <constructor name="CookieContainer" argnames="" />
+        <constructor name="CookieContainer(System.Int32)" argnames="capacity" />
+        <constructor name="CookieContainer(System.Int32, System.Int32, System.Int32)" argnames="capacity, perDomainCapacity, maxCookieSize" />
+        <field name="DefaultCookieLimit" />
+        <field name="DefaultPerDomainCookieLimit" />
+        <field name="DefaultCookieLengthLimit" />
+        <property name="Capacity" propertytype="System.Int32" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="MaxCookieSize" propertytype="System.Int32" />
+        <property name="PerDomainCapacity" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Net.Cookie)" argnames="cookie" returntype="System.Void" />
+        <method name="Add(System.Net.CookieCollection)" argnames="cookies" returntype="System.Void" />
+        <method name="Add(System.Uri, System.Net.Cookie)" argnames="uri, cookie" returntype="System.Void" />
+        <method name="Add(System.Uri, System.Net.CookieCollection)" argnames="uri, cookies" returntype="System.Void" />
+        <method name="GetCookies(System.Uri)" argnames="uri" returntype="System.Net.CookieCollection" />
+        <method name="GetCookieHeader(System.Uri)" argnames="uri" returntype="System.String" />
+        <method name="SetCookies(System.Uri, System.String)" argnames="uri, cookieHeader" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CookieException" namespace="System.Net">
+        <constructor name="CookieException" argnames="" />
+        <constructor name="CookieException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="CredentialCache" namespace="System.Net">
+        <constructor name="CredentialCache" argnames="" />
+        <property name="IsDefaultInCache" propertytype="System.Boolean" />
+        <property name="DefaultCredentials" propertytype="System.Net.ICredentials" />
+        <method name="GetEnumerator" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetCredential(System.Uri, System.String)" argnames="uriPrefix, authType" returntype="System.Net.NetworkCredential" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Uri, System.String, System.Net.NetworkCredential)" argnames="uriPrefix, authType, cred" returntype="System.Void" />
+        <method name="Remove(System.Uri, System.String)" argnames="uriPrefix, authType" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NetworkCredential" namespace="System.Net">
+        <constructor name="NetworkCredential" argnames="" />
+        <constructor name="NetworkCredential(System.String, System.String)" argnames="userName, password" />
+        <constructor name="NetworkCredential(System.String, System.String, System.String)" argnames="userName, password, domain" />
+        <property name="UserName" propertytype="System.String" />
+        <property name="Password" propertytype="System.String" />
+        <property name="Domain" propertytype="System.String" />
+        <method name="GetCredential(System.Uri, System.String)" argnames="uri, authType" returntype="System.Net.NetworkCredential" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Dns" namespace="System.Net">
+        <property name="LocalHost" propertytype="System.Net.IPHostEntry" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetHostByName(System.String)" argnames="hostName" returntype="System.Net.IPHostEntry" />
+        <method name="GetHostByAddress(System.String)" argnames="address" returntype="System.Net.IPHostEntry" />
+        <method name="GetHostByAddress(System.Net.IPAddress)" argnames="address" returntype="System.Net.IPHostEntry" />
+        <method name="GetHostName" argnames="" returntype="System.String" />
+        <method name="Resolve(System.String)" argnames="hostName" returntype="System.Net.IPHostEntry" />
+        <method name="BeginGetHostByName(System.String, System.AsyncCallback, System.Object)" argnames="hostName, requestCallback, stateObject" returntype="System.IAsyncResult" />
+        <method name="EndGetHostByName(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.IPHostEntry" />
+        <method name="BeginResolve(System.String, System.AsyncCallback, System.Object)" argnames="hostName, requestCallback, stateObject" returntype="System.IAsyncResult" />
+        <method name="EndResolve(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.IPHostEntry" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EndPoint" namespace="System.Net">
+        <constructor name="EndPoint" argnames="" />
+        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
+        <method name="Create(System.Net.SocketAddress)" argnames="socketAddress" returntype="System.Net.EndPoint" />
+        <method name="Serialize" argnames="" returntype="System.Net.SocketAddress" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebRequest" namespace="System.Net">
+        <constructor name="WebRequest" argnames="" />
+        <constructor name="WebRequest(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="PrefixList" propertytype="System.Collections.ArrayList" />
+        <property name="Method" propertytype="System.String" />
+        <property name="RequestUri" propertytype="System.Uri" />
+        <property name="ConnectionGroupName" propertytype="System.String" />
+        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
+        <property name="ContentLength" propertytype="System.Int64" />
+        <property name="ContentType" propertytype="System.String" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <property name="Proxy" propertytype="System.Net.IWebProxy" />
+        <property name="PreAuthenticate" propertytype="System.Boolean" />
+        <property name="Timeout" propertytype="System.Int32" />
+        <method name="Abort" argnames="" returntype="System.Void" />
+        <method name="EndGetRequestStream(System.IAsyncResult)" argnames="asyncResult" returntype="System.IO.Stream" />
+        <method name="BeginGetRequestStream(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
+        <method name="EndGetResponse(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.WebResponse" />
+        <method name="BeginGetResponse(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
+        <method name="GetResponse" argnames="" returntype="System.Net.WebResponse" />
+        <method name="GetRequestStream" argnames="" returntype="System.IO.Stream" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Create(System.String)" argnames="requestUriString" returntype="System.Net.WebRequest" />
+        <method name="Create(System.Uri)" argnames="requestUri" returntype="System.Net.WebRequest" />
+        <method name="CreateDefault(System.Uri)" argnames="requestUri" returntype="System.Net.WebRequest" />
+        <method name="RegisterPrefix(System.String, System.Net.IWebRequestCreate)" argnames="prefix, creator" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FileWebRequest" namespace="System.Net">
+        <constructor name="FileWebRequest(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="ConnectionGroupName" propertytype="System.String" />
+        <property name="ContentLength" propertytype="System.Int64" />
+        <property name="ContentType" propertytype="System.String" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
+        <property name="Method" propertytype="System.String" />
+        <property name="PreAuthenticate" propertytype="System.Boolean" />
+        <property name="Proxy" propertytype="System.Net.IWebProxy" />
+        <property name="Timeout" propertytype="System.Int32" />
+        <property name="RequestUri" propertytype="System.Uri" />
+        <method name="Abort" argnames="" inherited="System.Net.WebRequest" returntype="System.Void" />
+        <method name="EndGetRequestStream(System.IAsyncResult)" argnames="asyncResult" returntype="System.IO.Stream" />
+        <method name="BeginGetRequestStream(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
+        <method name="EndGetResponse(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.WebResponse" />
+        <method name="BeginGetResponse(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
+        <method name="GetResponse" argnames="" returntype="System.Net.WebResponse" />
+        <method name="GetRequestStream" argnames="" returntype="System.IO.Stream" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebResponse" namespace="System.Net">
+        <constructor name="WebResponse" argnames="" />
+        <constructor name="WebResponse(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="ContentLength" propertytype="System.Int64" />
+        <property name="ContentType" propertytype="System.String" />
+        <property name="ResponseUri" propertytype="System.Uri" />
+        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
+        <method name="GetResponseStream" argnames="" returntype="System.IO.Stream" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FileWebResponse" namespace="System.Net">
+        <constructor name="FileWebResponse(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="ContentLength" propertytype="System.Int64" />
+        <property name="ContentType" propertytype="System.String" />
+        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
+        <property name="ResponseUri" propertytype="System.Uri" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="GetResponseStream" argnames="" returntype="System.IO.Stream" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpWebRequest" namespace="System.Net">
+        <constructor name="HttpWebRequest(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="Saw100Continue" propertytype="System.Boolean" />
+        <property name="UsesProxy" propertytype="System.Boolean" />
+        <property name="ResponseStatusCode" propertytype="System.Net.HttpStatusCode" />
+        <property name="UsesProxySemantics" propertytype="System.Boolean" />
+        <property name="ChallengedUri" propertytype="System.Uri" />
+        <property name="ProxyAuthenticationState" propertytype="System.Net.AuthenticationState" />
+        <property name="ServerAuthenticationState" propertytype="System.Net.AuthenticationState" />
+        <property name="CurrentAuthenticationState" propertytype="System.Net.AuthenticationState" />
+        <property name="DelegationFix" propertytype="System.Net.DelegationFix" />
+        <property name="CookieContainer" propertytype="System.Net.CookieContainer" />
+        <property name="RequestUri" propertytype="System.Uri" />
+        <property name="AllowWriteStreamBuffering" propertytype="System.Boolean" />
+        <property name="ContentLength" propertytype="System.Int64" />
+        <property name="Timeout" propertytype="System.Int32" />
+        <property name="ClientCertificates" propertytype="System.Security.Cryptography.X509Certificates.X509CertificateCollection" />
+        <property name="CoreResponse" propertytype="System.Object" />
+        <property name="CanGetRequestStream" propertytype="System.Boolean" />
+        <property name="CanGetResponseStream" propertytype="System.Boolean" />
+        <property name="RequireBody" propertytype="System.Boolean" />
+        <property name="MissingEntityBodyDelimiter" propertytype="System.Boolean" />
+        <property name="TransferEncodingWithoutChunked" propertytype="System.Boolean" />
+        <property name="ChunkedUploadOnHttp10" propertytype="System.Boolean" />
+        <property name="CheckBuffering" propertytype="System.Boolean" />
+        <property name="Address" propertytype="System.Uri" />
+        <property name="ContinueDelegate" propertytype="System.Net.HttpContinueDelegate" />
+        <property name="ServicePoint" propertytype="System.Net.ServicePoint" />
+        <property name="AllowAutoRedirect" propertytype="System.Boolean" />
+        <property name="MaximumAutomaticRedirections" propertytype="System.Int32" />
+        <property name="Method" propertytype="System.String" />
+        <property name="CurrentMethod" propertytype="System.String" />
+        <property name="KeepAlive" propertytype="System.Boolean" />
+        <property name="Pipelined" propertytype="System.Boolean" />
+        <property name="InternalPipelined" propertytype="System.Boolean" />
+        <property name="UploadingBufferableData" propertytype="System.Boolean" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <property name="PreAuthenticate" propertytype="System.Boolean" />
+        <property name="ConnectionGroupName" propertytype="System.String" />
+        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
+        <property name="Proxy" propertytype="System.Net.IWebProxy" />
+        <property name="SendChunked" propertytype="System.Boolean" />
+        <property name="ProtocolVersion" propertytype="System.Version" />
+        <property name="InternalVersion" propertytype="System.Version" />
+        <property name="ContentType" propertytype="System.String" />
+        <property name="MediaType" propertytype="System.String" />
+        <property name="TransferEncoding" propertytype="System.String" />
+        <property name="Connection" propertytype="System.String" />
+        <property name="Accept" propertytype="System.String" />
+        <property name="Referer" propertytype="System.String" />
+        <property name="UserAgent" propertytype="System.String" />
+        <property name="Expect" propertytype="System.String" />
+        <property name="IfModifiedSince" propertytype="System.DateTime" />
+        <property name="HaveResponse" propertytype="System.Boolean" />
+        <property name="HaveWritten" propertytype="System.Boolean" />
+        <property name="OnceFailed" propertytype="System.Boolean" />
+        <property name="WriteBuffer" propertytype="System.Byte[]" />
+        <property name="BufferHeaders" propertytype="System.Boolean" />
+        <property name="ConnectHostAndPort" propertytype="System.String" />
+        <property name="ShouldAddHostHeader" propertytype="System.Boolean" />
+        <method name="Abort" argnames="" returntype="System.Void" />
+        <method name="EndGetRequestStream(System.IAsyncResult)" argnames="asyncResult" returntype="System.IO.Stream" />
+        <method name="BeginGetRequestStream(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
+        <method name="EndGetResponse(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.WebResponse" />
+        <method name="BeginGetResponse(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
+        <method name="GetResponse" argnames="" returntype="System.Net.WebResponse" />
+        <method name="GetRequestStream" argnames="" returntype="System.IO.Stream" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="AddRange(System.Int32, System.Int32)" argnames="from, to" returntype="System.Void" />
+        <method name="AddRange(System.Int32)" argnames="range" returntype="System.Void" />
+        <method name="AddRange(System.String, System.Int32, System.Int32)" argnames="rangeSpecifier, from, to" returntype="System.Void" />
+        <method name="AddRange(System.String, System.Int32)" argnames="rangeSpecifier, range" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpVersion" namespace="System.Net">
+        <constructor name="HttpVersion" argnames="" />
+        <field name="Version10" />
+        <field name="Version11" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="HttpWebResponse" namespace="System.Net">
+        <constructor name="HttpWebResponse(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="ResponseStream" propertytype="System.Net.ConnectStream" />
+        <property name="Cookies" propertytype="System.Net.CookieCollection" />
+        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
+        <property name="ContentLength" propertytype="System.Int64" />
+        <property name="ContentEncoding" propertytype="System.String" />
+        <property name="ContentType" propertytype="System.String" />
+        <property name="CharacterSet" propertytype="System.String" />
+        <property name="Server" propertytype="System.String" />
+        <property name="LastModified" propertytype="System.DateTime" />
+        <property name="StatusCode" propertytype="System.Net.HttpStatusCode" />
+        <property name="StatusDescription" propertytype="System.String" />
+        <property name="ProtocolVersion" propertytype="System.Version" />
+        <property name="KeepAlive" propertytype="System.Boolean" />
+        <property name="ResponseUri" propertytype="System.Uri" />
+        <property name="Method" propertytype="System.String" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="GetResponseStream" argnames="" returntype="System.IO.Stream" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetResponseHeader(System.String)" argnames="headerName" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IPAddress" namespace="System.Net">
+        <constructor name="IPAddress(System.Int64)" argnames="newAddress" />
+        <field name="Any" />
+        <field name="Loopback" />
+        <field name="Broadcast" />
+        <field name="None" />
+        <property name="Address" propertytype="System.Int64" />
+        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
+        <property name="IsBroadcast" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="ipString" returntype="System.Net.IPAddress" />
+        <method name="HostToNetworkOrder(System.Int64)" argnames="host" returntype="System.Int64" />
+        <method name="HostToNetworkOrder(System.Int32)" argnames="host" returntype="System.Int32" />
+        <method name="HostToNetworkOrder(System.Int16)" argnames="host" returntype="System.Int16" />
+        <method name="NetworkToHostOrder(System.Int64)" argnames="network" returntype="System.Int64" />
+        <method name="NetworkToHostOrder(System.Int32)" argnames="network" returntype="System.Int32" />
+        <method name="NetworkToHostOrder(System.Int16)" argnames="network" returntype="System.Int16" />
+        <method name="IsLoopback(System.Net.IPAddress)" argnames="address" returntype="System.Boolean" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IPEndPoint" namespace="System.Net">
+        <constructor name="IPEndPoint(System.Int64, System.Int32)" argnames="address, port" />
+        <constructor name="IPEndPoint(System.Net.IPAddress, System.Int32)" argnames="address, port" />
+        <field name="MinPort" />
+        <field name="MaxPort" />
+        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
+        <property name="Address" propertytype="System.Net.IPAddress" />
+        <property name="Port" propertytype="System.Int32" />
+        <method name="Create(System.Net.SocketAddress)" argnames="socketAddress" returntype="System.Net.EndPoint" />
+        <method name="Serialize" argnames="" returntype="System.Net.SocketAddress" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IPHostEntry" namespace="System.Net">
+        <constructor name="IPHostEntry" argnames="" />
+        <property name="HostName" propertytype="System.String" />
+        <property name="Aliases" propertytype="System.String[]" />
+        <property name="AddressList" propertytype="System.Net.IPAddress[]" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ProtocolViolationException" namespace="System.Net">
+        <constructor name="ProtocolViolationException" argnames="" />
+        <constructor name="ProtocolViolationException(System.String)" argnames="message" />
+        <constructor name="ProtocolViolationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServicePoint" namespace="System.Net">
+        <property name="Hostname" propertytype="System.String" />
+        <property name="Address" propertytype="System.Uri" />
+        <property name="MaxIdleTime" propertytype="System.Int32" />
+        <property name="IdleSince" propertytype="System.DateTime" />
+        <property name="ExpiresAt" propertytype="System.DateTime" />
+        <property name="ProtocolVersion" propertytype="System.Version" />
+        <property name="ConnectionName" propertytype="System.String" />
+        <property name="ConnectionMode" propertytype="System.Net.ConnectionModes" />
+        <property name="ConnectionLimit" propertytype="System.Int32" />
+        <property name="CurrentConnections" propertytype="System.Int32" />
+        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <property name="ClientCertificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <property name="SupportsPipelining" propertytype="System.Boolean" />
+        <property name="Understands100Continue" propertytype="System.Boolean" />
+        <property name="InternalVersion" propertytype="System.Version" />
+        <property name="InternalProxyServicePoint" propertytype="System.Boolean" />
+        <property name="InternalConnectionLimit" propertytype="System.Int32" />
+        <property name="InternalClientCertificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <property name="UserDefinedLimit" propertytype="System.Boolean" />
+        <property name="InternalSupportsPipelining" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ServicePointManager" namespace="System.Net">
+        <field name="DefaultNonPersistentConnectionLimit" />
+        <field name="DefaultPersistentConnectionLimit" />
+        <property name="InternalConnectionLimit" propertytype="System.Int32" />
+        <property name="ConfigTable" propertytype="System.Collections.Hashtable" />
+        <property name="MaxServicePoints" propertytype="System.Int32" />
+        <property name="DefaultConnectionLimit" propertytype="System.Int32" />
+        <property name="MaxServicePointIdleTime" propertytype="System.Int32" />
+        <property name="CertificatePolicy" propertytype="System.Net.ICertificatePolicy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="FindServicePoint(System.Uri)" argnames="address" returntype="System.Net.ServicePoint" />
+        <method name="FindServicePoint(System.String, System.Net.IWebProxy)" argnames="uriString, proxy" returntype="System.Net.ServicePoint" />
+        <method name="FindServicePoint(System.Uri, System.Net.IWebProxy)" argnames="address, proxy" returntype="System.Net.ServicePoint" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SocketAddress" namespace="System.Net">
+        <constructor name="SocketAddress(System.Net.Sockets.AddressFamily)" argnames="family" />
+        <constructor name="SocketAddress(System.Net.Sockets.AddressFamily, System.Int32)" argnames="family, size" />
+        <property name="Family" propertytype="System.Net.Sockets.AddressFamily" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="Item" propertytype="System.Byte" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="comparand" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebClient" namespace="System.Net">
+        <constructor name="WebClient" argnames="" />
+        <property name="BaseAddress" propertytype="System.String" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <property name="Headers" propertytype="System.Net.WebHeaderCollection" />
+        <property name="QueryString" propertytype="System.Collections.Specialized.NameValueCollection" />
+        <property name="ResponseHeaders" propertytype="System.Net.WebHeaderCollection" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Site" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.ISite" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="DownloadData(System.String)" argnames="address" returntype="System.Byte[]" />
+        <method name="DownloadFile(System.String, System.String)" argnames="address, fileName" returntype="System.Void" />
+        <method name="OpenRead(System.String)" argnames="address" returntype="System.IO.Stream" />
+        <method name="OpenWrite(System.String)" argnames="address" returntype="System.IO.Stream" />
+        <method name="OpenWrite(System.String, System.String)" argnames="address, method" returntype="System.IO.Stream" />
+        <method name="UploadData(System.String, System.Byte[])" argnames="address, data" returntype="System.Byte[]" />
+        <method name="UploadData(System.String, System.String, System.Byte[])" argnames="address, method, data" returntype="System.Byte[]" />
+        <method name="UploadFile(System.String, System.String)" argnames="address, fileName" returntype="System.Byte[]" />
+        <method name="UploadFile(System.String, System.String, System.String)" argnames="address, method, fileName" returntype="System.Byte[]" />
+        <method name="UploadValues(System.String, System.Collections.Specialized.NameValueCollection)" argnames="address, data" returntype="System.Byte[]" />
+        <method name="UploadValues(System.String, System.String, System.Collections.Specialized.NameValueCollection)" argnames="address, method, data" returntype="System.Byte[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="WebException" namespace="System.Net">
+        <constructor name="WebException" argnames="" />
+        <constructor name="WebException(System.String)" argnames="message" />
+        <constructor name="WebException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="WebException(System.String, System.Net.WebExceptionStatus)" argnames="message, status" />
+        <constructor name="WebException(System.String, System.Exception, System.Net.WebExceptionStatus, System.Net.WebResponse)" argnames="message, innerException, status, response" />
+        <constructor name="WebException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="Status" propertytype="System.Net.WebExceptionStatus" />
+        <property name="Response" propertytype="System.Net.WebResponse" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebHeaderCollection" namespace="System.Net">
+        <constructor name="WebHeaderCollection" argnames="" />
+        <constructor name="WebHeaderCollection(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="Item" inherited="System.Collections.Specialized.NameValueCollection" propertytype="System.String" />
+        <property name="Item" inherited="System.Collections.Specialized.NameValueCollection" propertytype="System.String" />
+        <property name="AllKeys" inherited="System.Collections.Specialized.NameValueCollection" propertytype="System.String[]" />
+        <property name="IsReadOnly" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Boolean" />
+        <property name="Count" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Int32" />
+        <property name="Keys" inherited="System.Collections.Specialized.NameObjectCollectionBase" propertytype="System.Collections.Specialized.NameObjectCollectionBase+KeysCollection" />
+        <method name="GetKey(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String" />
+        <method name="GetValues(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String[]" />
+        <method name="Get(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String" />
+        <method name="Remove(System.String)" argnames="name" returntype="System.Void" />
+        <method name="Set(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="GetValues(System.String)" argnames="header" returntype="System.String[]" />
+        <method name="Get(System.String)" argnames="name" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.String" />
+        <method name="Add(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="AddWithoutValidate(System.String, System.String)" argnames="headerName, headerValue" returntype="System.Void" />
+        <method name="Add(System.String)" argnames="header" returntype="System.Void" />
+        <method name="ToByteArray" argnames="" returntype="System.Byte[]" />
+        <method name="IsRestricted(System.String)" argnames="headerName" returntype="System.Boolean" />
+        <method name="InvalidateCachedArrays" argnames="" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
+        <method name="Add(System.Collections.Specialized.NameValueCollection)" argnames="c" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="dest, index" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Void" />
+        <method name="HasKeys" argnames="" inherited="System.Collections.Specialized.NameValueCollection" returntype="System.Boolean" />
+        <method name="BaseHasKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Boolean" />
+        <method name="BaseAdd(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseRemove(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseRemoveAt(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseClear" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseGet(System.String)" argnames="name" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
+        <method name="BaseSet(System.String, System.Object)" argnames="name, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseGet(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object" />
+        <method name="BaseGetKey(System.Int32)" argnames="index" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String" />
+        <method name="BaseSet(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Void" />
+        <method name="BaseGetAllKeys" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.String[]" />
+        <method name="BaseGetAllValues" argnames="" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
+        <method name="BaseGetAllValues(System.Type)" argnames="type" inherited="System.Collections.Specialized.NameObjectCollectionBase" returntype="System.Object[]" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebProxy" namespace="System.Net">
+        <constructor name="WebProxy" argnames="" />
+        <constructor name="WebProxy(System.Uri)" argnames="Address" />
+        <constructor name="WebProxy(System.Uri, System.Boolean)" argnames="Address, BypassOnLocal" />
+        <constructor name="WebProxy(System.Uri, System.Boolean, System.String[])" argnames="Address, BypassOnLocal, BypassList" />
+        <constructor name="WebProxy(System.Uri, System.Boolean, System.String[], System.Net.ICredentials)" argnames="Address, BypassOnLocal, BypassList, Credentials" />
+        <constructor name="WebProxy(System.String, System.Int32)" argnames="Host, Port" />
+        <constructor name="WebProxy(System.String)" argnames="Address" />
+        <constructor name="WebProxy(System.String, System.Boolean)" argnames="Address, BypassOnLocal" />
+        <constructor name="WebProxy(System.String, System.Boolean, System.String[])" argnames="Address, BypassOnLocal, BypassList" />
+        <constructor name="WebProxy(System.String, System.Boolean, System.String[], System.Net.ICredentials)" argnames="Address, BypassOnLocal, BypassList, Credentials" />
+        <constructor name="WebProxy(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="Address" propertytype="System.Uri" />
+        <property name="BypassProxyOnLocal" propertytype="System.Boolean" />
+        <property name="BypassList" propertytype="System.String[]" />
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <property name="BypassArrayList" propertytype="System.Collections.ArrayList" />
+        <property name="LocalHostAddresses" propertytype="System.Collections.Hashtable" />
+        <method name="IsBypassed(System.Uri)" argnames="host" returntype="System.Boolean" />
+        <method name="GetProxy(System.Uri)" argnames="destination" returntype="System.Uri" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetDefaultProxy" argnames="" returntype="System.Net.WebProxy" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DnsPermissionAttribute" namespace="System.Net">
+        <constructor name="DnsPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DnsPermission" namespace="System.Net">
+        <constructor name="DnsPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
+        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SocketPermissionAttribute" namespace="System.Net">
+        <constructor name="SocketPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Access" propertytype="System.String" />
+        <property name="Host" propertytype="System.String" />
+        <property name="Transport" propertytype="System.String" />
+        <property name="Port" propertytype="System.String" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SocketPermission" namespace="System.Net">
+        <constructor name="SocketPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="SocketPermission(System.Net.NetworkAccess, System.Net.TransportType, System.String, System.Int32)" argnames="access, transport, hostName, portNumber" />
+        <field name="AllPorts" />
+        <property name="ConnectList" propertytype="System.Collections.IEnumerator" />
+        <property name="AcceptList" propertytype="System.Collections.IEnumerator" />
+        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
+        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="AddPermission(System.Net.NetworkAccess, System.Net.TransportType, System.String, System.Int32)" argnames="access, transport, hostName, portNumber" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="EndpointPermission" namespace="System.Net">
+        <property name="Hostname" propertytype="System.String" />
+        <property name="Transport" propertytype="System.Net.TransportType" />
+        <property name="Port" propertytype="System.Int32" />
+        <property name="IsDns" propertytype="System.Boolean" />
+        <property name="IsValidWildcard" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString" argnames="" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebPermissionAttribute" namespace="System.Net">
+        <constructor name="WebPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Connect" propertytype="System.String" />
+        <property name="Accept" propertytype="System.String" />
+        <property name="ConnectPattern" propertytype="System.String" />
+        <property name="AcceptPattern" propertytype="System.String" />
+        <property name="Action" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" inherited="System.Security.Permissions.SecurityAttribute" propertytype="System.Boolean" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="CreatePermission" argnames="" returntype="System.Security.IPermission" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Attribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="WebPermission" namespace="System.Net">
+        <constructor name="WebPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="WebPermission" argnames="" />
+        <constructor name="WebPermission(System.Net.NetworkAccess, System.Text.RegularExpressions.Regex)" argnames="access, uriRegex" />
+        <constructor name="WebPermission(System.Net.NetworkAccess, System.String)" argnames="access, uriString" />
+        <property name="ConnectList" propertytype="System.Collections.IEnumerator" />
+        <property name="AcceptList" propertytype="System.Collections.IEnumerator" />
+        <method name="IsUnrestricted" argnames="" returntype="System.Boolean" />
+        <method name="PermitOnly" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Deny" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="Assert" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="securityElement" returntype="System.Void" />
+        <method name="ToXml" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy" argnames="" returntype="System.Security.IPermission" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Security.CodeAccessPermission" returntype="System.String" />
+        <method name="AddPermission(System.Net.NetworkAccess, System.String)" argnames="access, uriString" returntype="System.Void" />
+        <method name="AddPermission(System.Net.NetworkAccess, System.Text.RegularExpressions.Regex)" argnames="access, uriRegex" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="AuthenticationManager" namespace="System.Net">
+        <property name="ModuleList" propertytype="System.Collections.ArrayList" />
+        <property name="RegisteredModules" propertytype="System.Collections.IEnumerator" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Authenticate(System.String, System.Net.WebRequest, System.Net.ICredentials)" argnames="challenge, request, credentials" returntype="System.Net.Authorization" />
+        <method name="PreAuthenticate(System.Net.WebRequest, System.Net.ICredentials)" argnames="request, credentials" returntype="System.Net.Authorization" />
+        <method name="Register(System.Net.IAuthenticationModule)" argnames="authenticationModule" returntype="System.Void" />
+        <method name="Unregister(System.Net.IAuthenticationModule)" argnames="authenticationModule" returntype="System.Void" />
+        <method name="Unregister(System.String)" argnames="authenticationScheme" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="GlobalProxySelection" namespace="System.Net">
+        <constructor name="GlobalProxySelection" argnames="" />
+        <property name="Select" propertytype="System.Net.IWebProxy" />
+        <property name="SelectInternal" propertytype="System.Net.IWebProxy" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetEmptyWebProxy" argnames="" returntype="System.Net.IWebProxy" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IAuthenticationModule" namespace="System.Net">
+        <property name="CanPreAuthenticate" propertytype="System.Boolean" />
+        <property name="AuthenticationType" propertytype="System.String" />
+        <method name="PreAuthenticate(System.Net.WebRequest, System.Net.ICredentials)" argnames="request, credentials" returntype="System.Net.Authorization" />
+        <method name="Authenticate(System.String, System.Net.WebRequest, System.Net.ICredentials)" argnames="challenge, request, credentials" returntype="System.Net.Authorization" />
+    </interface>
+    <interface name="IWebProxy" namespace="System.Net">
+        <property name="Credentials" propertytype="System.Net.ICredentials" />
+        <method name="IsBypassed(System.Uri)" argnames="host" returntype="System.Boolean" />
+        <method name="GetProxy(System.Uri)" argnames="destination" returntype="System.Uri" />
+    </interface>
+    <interface name="ICredentials" namespace="System.Net">
+        <method name="GetCredential(System.Uri, System.String)" argnames="uri, authType" returntype="System.Net.NetworkCredential" />
+    </interface>
+    <interface name="IWebRequestCreate" namespace="System.Net">
+        <method name="Create(System.Uri)" argnames="uri" returntype="System.Net.WebRequest" />
+    </interface>
+    <interface name="ICertificatePolicy" namespace="System.Net">
+        <method name="CheckValidationResult(System.Net.ServicePoint, System.Security.Cryptography.X509Certificates.X509Certificate, System.Net.WebRequest, System.Int32)" argnames="srvPoint, certificate, request, certificateProblem" returntype="System.Boolean" />
+    </interface>
+    <delegate name="HttpContinueDelegate" namespace="System.Net">
+        <constructor name="HttpContinueDelegate(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Int32, System.Net.WebHeaderCollection, System.AsyncCallback, System.Object)" argnames="StatusCode, httpHeaders, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Int32, System.Net.WebHeaderCollection)" argnames="StatusCode, httpHeaders" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="HttpStatusCode" namespace="System.Net">
+        <field name="Continue" />
+        <field name="SwitchingProtocols" />
+        <field name="OK" />
+        <field name="Created" />
+        <field name="Accepted" />
+        <field name="NonAuthoritativeInformation" />
+        <field name="NoContent" />
+        <field name="ResetContent" />
+        <field name="PartialContent" />
+        <field name="MultipleChoices" />
+        <field name="Ambiguous" />
+        <field name="MovedPermanently" />
+        <field name="Moved" />
+        <field name="Found" />
+        <field name="Redirect" />
+        <field name="SeeOther" />
+        <field name="RedirectMethod" />
+        <field name="NotModified" />
+        <field name="UseProxy" />
+        <field name="Unused" />
+        <field name="TemporaryRedirect" />
+        <field name="RedirectKeepVerb" />
+        <field name="BadRequest" />
+        <field name="Unauthorized" />
+        <field name="PaymentRequired" />
+        <field name="Forbidden" />
+        <field name="NotFound" />
+        <field name="MethodNotAllowed" />
+        <field name="NotAcceptable" />
+        <field name="ProxyAuthenticationRequired" />
+        <field name="RequestTimeout" />
+        <field name="Conflict" />
+        <field name="Gone" />
+        <field name="LengthRequired" />
+        <field name="PreconditionFailed" />
+        <field name="RequestEntityTooLarge" />
+        <field name="RequestUriTooLong" />
+        <field name="UnsupportedMediaType" />
+        <field name="RequestedRangeNotSatisfiable" />
+        <field name="ExpectationFailed" />
+        <field name="InternalServerError" />
+        <field name="NotImplemented" />
+        <field name="BadGateway" />
+        <field name="ServiceUnavailable" />
+        <field name="GatewayTimeout" />
+        <field name="HttpVersionNotSupported" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Flags" namespace="System.Net">
+        <field name="NoSystemMapper" />
+        <field name="NoNameCheck" />
+        <field name="ValidateManual" />
+        <field name="NoDefaultCred" />
+        <field name="ValidateAuto" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="Protocols" namespace="System.Net">
+        <field name="SP_PROT_SSL2_CLIENT" />
+        <field name="SP_PROT_SSL3_CLIENT" />
+        <field name="SP_PROT_TLS1_CLIENT" />
+        <field name="SP_PROT_SSL3TLS1_CLIENTS" />
+        <field name="SP_PROT_UNI_CLIENT" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="NetworkAccess" namespace="System.Net">
+        <field name="Accept" />
+        <field name="Connect" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="TransportType" namespace="System.Net">
+        <field name="Udp" />
+        <field name="Connectionless" />
+        <field name="Tcp" />
+        <field name="ConnectionOriented" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="WebExceptionStatus" namespace="System.Net">
+        <field name="Success" />
+        <field name="NameResolutionFailure" />
+        <field name="ConnectFailure" />
+        <field name="ReceiveFailure" />
+        <field name="SendFailure" />
+        <field name="PipelineFailure" />
+        <field name="RequestCanceled" />
+        <field name="ProtocolError" />
+        <field name="ConnectionClosed" />
+        <field name="TrustFailure" />
+        <field name="SecureChannelFailure" />
+        <field name="ServerProtocolViolation" />
+        <field name="KeepAliveFailure" />
+        <field name="Pending" />
+        <field name="Timeout" />
+        <field name="ProxyNameResolutionFailure" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="NetworkStream" namespace="System.Net.Sockets">
+        <constructor name="NetworkStream(System.Net.Sockets.Socket)" argnames="socket" />
+        <constructor name="NetworkStream(System.Net.Sockets.Socket, System.Boolean)" argnames="socket, ownsSocket" />
+        <constructor name="NetworkStream(System.Net.Sockets.Socket, System.IO.FileAccess)" argnames="socket, access" />
+        <constructor name="NetworkStream(System.Net.Sockets.Socket, System.IO.FileAccess, System.Boolean)" argnames="socket, access, ownsSocket" />
+        <property name="Socket" propertytype="System.Net.Sockets.Socket" />
+        <property name="StreamSocket" propertytype="System.Net.Sockets.Socket" />
+        <property name="Readable" propertytype="System.Boolean" />
+        <property name="Writeable" propertytype="System.Boolean" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanSeek" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="DataAvailable" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="Position" propertytype="System.Int64" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="WriteByte(System.Byte)" argnames="value" inherited="System.IO.Stream" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, size" returntype="System.Void" />
+        <method name="ReadByte" argnames="" inherited="System.IO.Stream" returntype="System.Int32" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, size" returntype="System.Int32" />
+        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
+        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, callback, state" returntype="System.IAsyncResult" />
+        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
+        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, callback, state" returntype="System.IAsyncResult" />
+        <method name="CreateWaitHandle" argnames="" inherited="System.IO.Stream" returntype="System.Threading.WaitHandle" />
+        <method name="Flush" argnames="" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SocketException" namespace="System.Net.Sockets">
+        <constructor name="SocketException" argnames="" />
+        <constructor name="SocketException(System.Int32)" argnames="errorCode" />
+        <constructor name="SocketException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="serializationInfo, streamingContext" />
+        <property name="ErrorCode" propertytype="System.Int32" />
+        <property name="NativeErrorCode" inherited="System.ComponentModel.Win32Exception" propertytype="System.Int32" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.ComponentModel.Win32Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="LingerOption" namespace="System.Net.Sockets">
+        <constructor name="LingerOption(System.Boolean, System.Int32)" argnames="enable, seconds" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="LingerTime" propertytype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="MulticastOption" namespace="System.Net.Sockets">
+        <constructor name="MulticastOption(System.Net.IPAddress, System.Net.IPAddress)" argnames="group, mcint" />
+        <constructor name="MulticastOption(System.Net.IPAddress)" argnames="group" />
+        <property name="Group" propertytype="System.Net.IPAddress" />
+        <property name="LocalAddress" propertytype="System.Net.IPAddress" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TcpClient" namespace="System.Net.Sockets">
+        <constructor name="TcpClient(System.Net.IPEndPoint)" argnames="localEP" />
+        <constructor name="TcpClient" argnames="" />
+        <constructor name="TcpClient(System.String, System.Int32)" argnames="hostname, port" />
+        <property name="Client" propertytype="System.Net.Sockets.Socket" />
+        <property name="Active" propertytype="System.Boolean" />
+        <property name="ReceiveBufferSize" propertytype="System.Int32" />
+        <property name="SendBufferSize" propertytype="System.Int32" />
+        <property name="ReceiveTimeout" propertytype="System.Int32" />
+        <property name="SendTimeout" propertytype="System.Int32" />
+        <property name="LingerState" propertytype="System.Net.Sockets.LingerOption" />
+        <property name="NoDelay" propertytype="System.Boolean" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Connect(System.String, System.Int32)" argnames="hostname, port" returntype="System.Void" />
+        <method name="Connect(System.Net.IPAddress, System.Int32)" argnames="address, port" returntype="System.Void" />
+        <method name="Connect(System.Net.IPEndPoint)" argnames="remoteEP" returntype="System.Void" />
+        <method name="GetStream" argnames="" returntype="System.Net.Sockets.NetworkStream" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="TcpListener" namespace="System.Net.Sockets">
+        <constructor name="TcpListener(System.Net.IPEndPoint)" argnames="localEP" />
+        <constructor name="TcpListener(System.Net.IPAddress, System.Int32)" argnames="localaddr, port" />
+        <constructor name="TcpListener(System.Int32)" argnames="port" />
+        <property name="Server" propertytype="System.Net.Sockets.Socket" />
+        <property name="Active" propertytype="System.Boolean" />
+        <property name="LocalEndpoint" propertytype="System.Net.EndPoint" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Start" argnames="" returntype="System.Void" />
+        <method name="Stop" argnames="" returntype="System.Void" />
+        <method name="Pending" argnames="" returntype="System.Boolean" />
+        <method name="AcceptSocket" argnames="" returntype="System.Net.Sockets.Socket" />
+        <method name="AcceptTcpClient" argnames="" returntype="System.Net.Sockets.TcpClient" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="UdpClient" namespace="System.Net.Sockets">
+        <constructor name="UdpClient" argnames="" />
+        <constructor name="UdpClient(System.Int32)" argnames="port" />
+        <constructor name="UdpClient(System.Net.IPEndPoint)" argnames="localEP" />
+        <constructor name="UdpClient(System.String, System.Int32)" argnames="hostname, port" />
+        <property name="Client" propertytype="System.Net.Sockets.Socket" />
+        <property name="Active" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Connect(System.String, System.Int32)" argnames="hostname, port" returntype="System.Void" />
+        <method name="Connect(System.Net.IPAddress, System.Int32)" argnames="addr, port" returntype="System.Void" />
+        <method name="Connect(System.Net.IPEndPoint)" argnames="endPoint" returntype="System.Void" />
+        <method name="Send(System.Byte[], System.Int32, System.Net.IPEndPoint)" argnames="dgram, bytes, endPoint" returntype="System.Int32" />
+        <method name="Send(System.Byte[], System.Int32, System.String, System.Int32)" argnames="dgram, bytes, hostname, port" returntype="System.Int32" />
+        <method name="Send(System.Byte[], System.Int32)" argnames="dgram, bytes" returntype="System.Int32" />
+        <method name="Receive(System.Net.IPEndPoint&amp;)" argnames="remoteEP" returntype="System.Byte[]" />
+        <method name="JoinMulticastGroup(System.Net.IPAddress)" argnames="multicastAddr" returntype="System.Void" />
+        <method name="JoinMulticastGroup(System.Net.IPAddress, System.Int32)" argnames="multicastAddr, timeToLive" returntype="System.Void" />
+        <method name="DropMulticastGroup(System.Net.IPAddress)" argnames="multicastAddr" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Socket" namespace="System.Net.Sockets">
+        <constructor name="Socket(System.Net.Sockets.AddressFamily, System.Net.Sockets.SocketType, System.Net.Sockets.ProtocolType)" argnames="addressFamily, socketType, protocolType" />
+        <property name="Connected" propertytype="System.Boolean" />
+        <property name="AddressFamily" propertytype="System.Net.Sockets.AddressFamily" />
+        <property name="SocketType" propertytype="System.Net.Sockets.SocketType" />
+        <property name="ProtocolType" propertytype="System.Net.Sockets.ProtocolType" />
+        <property name="AcceptQueue" propertytype="System.Collections.ArrayList" />
+        <property name="CleanedUp" propertytype="System.Boolean" />
+        <property name="Available" propertytype="System.Int32" />
+        <property name="LocalEndPoint" propertytype="System.Net.EndPoint" />
+        <property name="RemoteEndPoint" propertytype="System.Net.EndPoint" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <property name="Blocking" propertytype="System.Boolean" />
+        <property name="Transport" propertytype="System.Net.TransportType" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize" argnames="" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Bind(System.Net.EndPoint)" argnames="localEP" returntype="System.Void" />
+        <method name="Connect(System.Net.EndPoint)" argnames="remoteEP" returntype="System.Void" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Shutdown(System.Net.Sockets.SocketShutdown)" argnames="how" returntype="System.Void" />
+        <method name="Listen(System.Int32)" argnames="backlog" returntype="System.Void" />
+        <method name="Accept" argnames="" returntype="System.Net.Sockets.Socket" />
+        <method name="Send(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, size, socketFlags" returntype="System.Int32" />
+        <method name="Send(System.Byte[], System.Net.Sockets.SocketFlags)" argnames="buffer, socketFlags" returntype="System.Int32" />
+        <method name="Send(System.Byte[])" argnames="buffer" returntype="System.Int32" />
+        <method name="Send(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, offset, size, socketFlags" returntype="System.Int32" />
+        <method name="SendTo(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint)" argnames="buffer, offset, size, socketFlags, remoteEP" returntype="System.Int32" />
+        <method name="SendTo(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint)" argnames="buffer, size, socketFlags, remoteEP" returntype="System.Int32" />
+        <method name="SendTo(System.Byte[], System.Net.Sockets.SocketFlags, System.Net.EndPoint)" argnames="buffer, socketFlags, remoteEP" returntype="System.Int32" />
+        <method name="SendTo(System.Byte[], System.Net.EndPoint)" argnames="buffer, remoteEP" returntype="System.Int32" />
+        <method name="Receive(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, size, socketFlags" returntype="System.Int32" />
+        <method name="Receive(System.Byte[], System.Net.Sockets.SocketFlags)" argnames="buffer, socketFlags" returntype="System.Int32" />
+        <method name="Receive(System.Byte[])" argnames="buffer" returntype="System.Int32" />
+        <method name="Receive(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags)" argnames="buffer, offset, size, socketFlags" returntype="System.Int32" />
+        <method name="ReceiveFrom(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;)" argnames="buffer, offset, size, socketFlags, remoteEP" returntype="System.Int32" />
+        <method name="ReceiveFrom(System.Byte[], System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;)" argnames="buffer, size, socketFlags, remoteEP" returntype="System.Int32" />
+        <method name="ReceiveFrom(System.Byte[], System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;)" argnames="buffer, socketFlags, remoteEP" returntype="System.Int32" />
+        <method name="ReceiveFrom(System.Byte[], System.Net.EndPoint&amp;)" argnames="buffer, remoteEP" returntype="System.Int32" />
+        <method name="IOControl(System.Int32, System.Byte[], System.Byte[])" argnames="ioControlCode, optionInValue, optionOutValue" returntype="System.Int32" />
+        <method name="SetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Int32)" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
+        <method name="SetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Byte[])" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
+        <method name="SetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Object)" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
+        <method name="GetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName)" argnames="optionLevel, optionName" returntype="System.Object" />
+        <method name="GetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Byte[])" argnames="optionLevel, optionName, optionValue" returntype="System.Void" />
+        <method name="GetSocketOption(System.Net.Sockets.SocketOptionLevel, System.Net.Sockets.SocketOptionName, System.Int32)" argnames="optionLevel, optionName, optionLength" returntype="System.Byte[]" />
+        <method name="Poll(System.Int32, System.Net.Sockets.SelectMode)" argnames="microSeconds, mode" returntype="System.Boolean" />
+        <method name="Select(System.Collections.IList, System.Collections.IList, System.Collections.IList, System.Int32)" argnames="checkRead, checkWrite, checkError, microSeconds" returntype="System.Void" />
+        <method name="BeginConnect(System.Net.EndPoint, System.AsyncCallback, System.Object)" argnames="remoteEP, callback, state" returntype="System.IAsyncResult" />
+        <method name="EndConnect(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
+        <method name="BeginSend(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, callback, state" returntype="System.IAsyncResult" />
+        <method name="EndSend(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
+        <method name="BeginSendTo(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, remoteEP, callback, state" returntype="System.IAsyncResult" />
+        <method name="EndSendTo(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
+        <method name="BeginReceive(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, callback, state" returntype="System.IAsyncResult" />
+        <method name="EndReceive(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
+        <method name="BeginReceiveFrom(System.Byte[], System.Int32, System.Int32, System.Net.Sockets.SocketFlags, System.Net.EndPoint&amp;, System.AsyncCallback, System.Object)" argnames="buffer, offset, size, socketFlags, remoteEP, callback, state" returntype="System.IAsyncResult" />
+        <method name="EndReceiveFrom(System.IAsyncResult, System.Net.EndPoint&amp;)" argnames="asyncResult, endPoint" returntype="System.Int32" />
+        <method name="BeginAccept(System.AsyncCallback, System.Object)" argnames="callback, state" returntype="System.IAsyncResult" />
+        <method name="EndAccept(System.IAsyncResult)" argnames="asyncResult" returntype="System.Net.Sockets.Socket" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <enum name="AddressFamily" namespace="System.Net.Sockets">
+        <field name="Unknown" />
+        <field name="Unspecified" />
+        <field name="Unix" />
+        <field name="InterNetwork" />
+        <field name="ImpLink" />
+        <field name="Pup" />
+        <field name="Chaos" />
+        <field name="NS" />
+        <field name="Ipx" />
+        <field name="Iso" />
+        <field name="Osi" />
+        <field name="Ecma" />
+        <field name="DataKit" />
+        <field name="Ccitt" />
+        <field name="Sna" />
+        <field name="DecNet" />
+        <field name="DataLink" />
+        <field name="Lat" />
+        <field name="HyperChannel" />
+        <field name="AppleTalk" />
+        <field name="NetBios" />
+        <field name="VoiceView" />
+        <field name="FireFox" />
+        <field name="Banyan" />
+        <field name="Atm" />
+        <field name="InterNetworkV6" />
+        <field name="Cluster" />
+        <field name="Ieee12844" />
+        <field name="Irda" />
+        <field name="NetworkDesigners" />
+        <field name="Max" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ProtocolFamily" namespace="System.Net.Sockets">
+        <field name="Unknown" />
+        <field name="Unspecified" />
+        <field name="Unix" />
+        <field name="InterNetwork" />
+        <field name="ImpLink" />
+        <field name="Pup" />
+        <field name="Chaos" />
+        <field name="NS" />
+        <field name="Ipx" />
+        <field name="Iso" />
+        <field name="Osi" />
+        <field name="Ecma" />
+        <field name="DataKit" />
+        <field name="Ccitt" />
+        <field name="Sna" />
+        <field name="DecNet" />
+        <field name="DataLink" />
+        <field name="Lat" />
+        <field name="HyperChannel" />
+        <field name="AppleTalk" />
+        <field name="NetBios" />
+        <field name="VoiceView" />
+        <field name="FireFox" />
+        <field name="Banyan" />
+        <field name="Atm" />
+        <field name="InterNetworkV6" />
+        <field name="Cluster" />
+        <field name="Ieee12844" />
+        <field name="Irda" />
+        <field name="NetworkDesigners" />
+        <field name="Max" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="ProtocolType" namespace="System.Net.Sockets">
+        <field name="IP" />
+        <field name="Icmp" />
+        <field name="Igmp" />
+        <field name="Ggp" />
+        <field name="Tcp" />
+        <field name="Pup" />
+        <field name="Udp" />
+        <field name="Idp" />
+        <field name="ND" />
+        <field name="Raw" />
+        <field name="Unspecified" />
+        <field name="Ipx" />
+        <field name="Spx" />
+        <field name="SpxII" />
+        <field name="Unknown" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SelectMode" namespace="System.Net.Sockets">
+        <field name="SelectRead" />
+        <field name="SelectWrite" />
+        <field name="SelectError" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SocketFlags" namespace="System.Net.Sockets">
+        <field name="None" />
+        <field name="OutOfBand" />
+        <field name="Peek" />
+        <field name="DontRoute" />
+        <field name="MaxIOVectorLength" />
+        <field name="Partial" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SocketOptionLevel" namespace="System.Net.Sockets">
+        <field name="Socket" />
+        <field name="IP" />
+        <field name="Tcp" />
+        <field name="Udp" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SocketOptionName" namespace="System.Net.Sockets">
+        <field name="Debug" />
+        <field name="AcceptConnection" />
+        <field name="ReuseAddress" />
+        <field name="KeepAlive" />
+        <field name="DontRoute" />
+        <field name="Broadcast" />
+        <field name="UseLoopback" />
+        <field name="Linger" />
+        <field name="OutOfBandInline" />
+        <field name="DontLinger" />
+        <field name="ExclusiveAddressUse" />
+        <field name="SendBuffer" />
+        <field name="ReceiveBuffer" />
+        <field name="SendLowWater" />
+        <field name="ReceiveLowWater" />
+        <field name="SendTimeout" />
+        <field name="ReceiveTimeout" />
+        <field name="Error" />
+        <field name="Type" />
+        <field name="MaxConnections" />
+        <field name="IPOptions" />
+        <field name="HeaderIncluded" />
+        <field name="TypeOfService" />
+        <field name="IpTimeToLive" />
+        <field name="MulticastInterface" />
+        <field name="MulticastTimeToLive" />
+        <field name="MulticastLoopback" />
+        <field name="AddMembership" />
+        <field name="DropMembership" />
+        <field name="DontFragment" />
+        <field name="AddSourceMembership" />
+        <field name="DropSourceMembership" />
+        <field name="BlockSource" />
+        <field name="UnblockSource" />
+        <field name="PacketInformation" />
+        <field name="NoDelay" />
+        <field name="BsdUrgent" />
+        <field name="Expedited" />
+        <field name="NoChecksum" />
+        <field name="ChecksumCoverage" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SocketShutdown" namespace="System.Net.Sockets">
+        <field name="Receive" />
+        <field name="Send" />
+        <field name="Both" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="SocketType" namespace="System.Net.Sockets">
+        <field name="Stream" />
+        <field name="Dgram" />
+        <field name="Raw" />
+        <field name="Rdm" />
+        <field name="Seqpacket" />
+        <field name="Unknown" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="X509CertificateCollection" namespace="System.Security.Cryptography.X509Certificates">
+        <class name="X509CertificateEnumerator" namespace="System.Security.Cryptography.X509Certificates">
+            <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="mappings" />
+            <property name="Current" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+            <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+            <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+            <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+            <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+            <method name="MoveNext" argnames="" returntype="System.Boolean" />
+            <method name="Reset" argnames="" returntype="System.Void" />
+            <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+            <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        </class>
+        <constructor name="X509CertificateEnumerator" argnames="" />
+        <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="value" />
+        <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509Certificate[])" argnames="value" />
+        <property name="Item" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <property name="InnerList" inherited="System.Collections.CollectionBase" propertytype="System.Collections.ArrayList" />
+        <property name="List" inherited="System.Collections.CollectionBase" propertytype="System.Collections.IList" />
+        <property name="Count" inherited="System.Collections.CollectionBase" propertytype="System.Int32" />
+        <method name="GetEnumerator" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Clear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClearComplete" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnClear" argnames="" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" inherited="System.Collections.CollectionBase" returntype="System.Void" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="Add(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Int32" />
+        <method name="AddRange(System.Security.Cryptography.X509Certificates.X509Certificate[])" argnames="value" returntype="System.Void" />
+        <method name="AddRange(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="value" returntype="System.Void" />
+        <method name="Contains(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Boolean" />
+        <method name="CopyTo(System.Security.Cryptography.X509Certificates.X509Certificate[], System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="IndexOf(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Int32" />
+        <method name="Insert(System.Int32, System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="index, value" returntype="System.Void" />
+        <method name="GetEnumerator" argnames="" returntype="System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator" />
+        <method name="Remove(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="value" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="X509CertificateEnumerator" namespace="System.Security.Cryptography.X509Certificates">
+        <constructor name="X509CertificateEnumerator(System.Security.Cryptography.X509Certificates.X509CertificateCollection)" argnames="mappings" />
+        <property name="Current" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="MoveNext" argnames="" returntype="System.Boolean" />
+        <method name="Reset" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ConfigurationException" namespace="System.Configuration">
+        <constructor name="ConfigurationException" argnames="" />
+        <constructor name="ConfigurationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="ConfigurationException(System.String)" argnames="message" />
+        <constructor name="ConfigurationException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="ConfigurationException(System.String, System.Xml.XmlNode)" argnames="message, node" />
+        <constructor name="ConfigurationException(System.String, System.Exception, System.Xml.XmlNode)" argnames="message, inner, node" />
+        <constructor name="ConfigurationException(System.String, System.String, System.Int32)" argnames="message, filename, line" />
+        <constructor name="ConfigurationException(System.String, System.Exception, System.String, System.Int32)" argnames="message, inner, filename, line" />
+        <property name="Message" propertytype="System.String" />
+        <property name="BareMessage" propertytype="System.String" />
+        <property name="Filename" propertytype="System.String" />
+        <property name="Line" propertytype="System.Int32" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetXmlNodeLineNumber(System.Xml.XmlNode)" argnames="node" returntype="System.Int32" />
+        <method name="GetXmlNodeFilename(System.Xml.XmlNode)" argnames="node" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ConfigurationSettings" namespace="System.Configuration">
+        <property name="SetConfigurationSystemInProgress" propertytype="System.Boolean" />
+        <property name="AppSettings" propertytype="System.Collections.Specialized.NameValueCollection" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetConfig(System.String)" argnames="sectionName" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="DictionarySectionHandler" namespace="System.Configuration">
+        <constructor name="DictionarySectionHandler" argnames="" />
+        <property name="KeyAttributeName" propertytype="System.String" />
+        <property name="ValueAttributeName" propertytype="System.String" />
+        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, context, section" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IgnoreSectionHandler" namespace="System.Configuration">
+        <constructor name="IgnoreSectionHandler" argnames="" />
+        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NameValueFileSectionHandler" namespace="System.Configuration">
+        <constructor name="NameValueFileSectionHandler" argnames="" />
+        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="NameValueSectionHandler" namespace="System.Configuration">
+        <constructor name="NameValueSectionHandler" argnames="" />
+        <property name="KeyAttributeName" propertytype="System.String" />
+        <property name="ValueAttributeName" propertytype="System.String" />
+        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, context, section" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SingleTagSectionHandler" namespace="System.Configuration">
+        <constructor name="SingleTagSectionHandler" argnames="" />
+        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, context, section" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="ConfigXmlDocument" namespace="System.Configuration">
+        <constructor name="ConfigXmlDocument" argnames="" />
+        <property name="LineNumber" propertytype="System.Int32" />
+        <property name="Filename" propertytype="System.String" />
+        <property name="NodeType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNodeType" />
+        <property name="DocumentType" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocumentType" />
+        <property name="Implementation" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlImplementation" />
+        <property name="Name" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="LocalName" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="DocumentElement" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlElement" />
+        <property name="OwnerDocument" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlDocument" />
+        <property name="XmlResolver" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlResolver" />
+        <property name="NameTable" inherited="System.Xml.XmlDocument" propertytype="System.Xml.XmlNameTable" />
+        <property name="PreserveWhitespace" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
+        <property name="IsReadOnly" inherited="System.Xml.XmlDocument" propertytype="System.Boolean" />
+        <property name="InnerXml" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="BaseURI" inherited="System.Xml.XmlDocument" propertytype="System.String" />
+        <property name="Value" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="ParentNode" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="ChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNodeList" />
+        <property name="PreviousSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="NextSibling" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="Attributes" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlAttributeCollection" />
+        <property name="FirstChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="LastChild" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlNode" />
+        <property name="HasChildNodes" inherited="System.Xml.XmlNode" propertytype="System.Boolean" />
+        <property name="NamespaceURI" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Prefix" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="InnerText" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="OuterXml" inherited="System.Xml.XmlNode" propertytype="System.String" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <property name="Item" inherited="System.Xml.XmlNode" propertytype="System.Xml.XmlElement" />
+        <method name="Save(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Save(System.IO.TextWriter)" argnames="writer" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Save(System.IO.Stream)" argnames="outStream" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Save(System.String)" argnames="filename" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="LoadXml(System.String)" argnames="xml" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Load(System.Xml.XmlReader)" argnames="reader" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Load(System.IO.TextReader)" argnames="txtReader" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Load(System.IO.Stream)" argnames="inStream" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Load(System.String)" argnames="filename" returntype="System.Void" />
+        <method name="ReadNode(System.Xml.XmlReader)" argnames="reader" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String)" argnames="type, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.String, System.String, System.String)" argnames="nodeTypeString, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateNode(System.Xml.XmlNodeType, System.String, System.String, System.String)" argnames="type, prefix, name, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="CreateElement(System.String, System.String, System.String)" argnames="prefix, localName, namespaceUri" returntype="System.Xml.XmlElement" />
+        <method name="CreateAttribute(System.String, System.String, System.String)" argnames="prefix, localName, namespaceUri" returntype="System.Xml.XmlAttribute" />
+        <method name="ImportNode(System.Xml.XmlNode, System.Boolean)" argnames="node, deep" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="GetElementById(System.String)" argnames="elementId" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
+        <method name="GetElementsByTagName(System.String, System.String)" argnames="localName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
+        <method name="GetElementsByTagName(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNodeList" />
+        <method name="CreateWhitespace(System.String)" argnames="data" returntype="System.Xml.XmlWhitespace" />
+        <method name="CreateSignificantWhitespace(System.String)" argnames="data" returntype="System.Xml.XmlSignificantWhitespace" />
+        <method name="CreateTextNode(System.String)" argnames="text" returntype="System.Xml.XmlText" />
+        <method name="CreateXmlDeclaration(System.String, System.String, System.String)" argnames="version, encoding, standalone" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDeclaration" />
+        <method name="CreateProcessingInstruction(System.String, System.String)" argnames="target, data" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlProcessingInstruction" />
+        <method name="CreateEntityReference(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlEntityReference" />
+        <method name="CreateDocumentFragment" argnames="" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentFragment" />
+        <method name="CreateDocumentType(System.String, System.String, System.String, System.String)" argnames="name, publicId, systemId, internalSubset" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlDocumentType" />
+        <method name="CreateComment(System.String)" argnames="data" returntype="System.Xml.XmlComment" />
+        <method name="CreateCDataSection(System.String)" argnames="data" returntype="System.Xml.XmlCDataSection" />
+        <method name="CreateNavigator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XPath.XPathNavigator" />
+        <method name="GetPrefixOfNamespace(System.String)" argnames="namespaceURI" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="GetNamespaceOfPrefix(System.String)" argnames="prefix" inherited="System.Xml.XmlNode" returntype="System.String" />
+        <method name="RemoveAll" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="WriteContentTo(System.Xml.XmlWriter)" argnames="xw" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="WriteTo(System.Xml.XmlWriter)" argnames="w" inherited="System.Xml.XmlDocument" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Supports(System.String, System.String)" argnames="feature, version" inherited="System.Xml.XmlNode" returntype="System.Boolean" />
+        <method name="Normalize" argnames="" inherited="System.Xml.XmlNode" returntype="System.Void" />
+        <method name="CloneNode(System.Boolean)" argnames="deep" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlNode" />
+        <method name="AppendChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="PrependChild(System.Xml.XmlNode)" argnames="newChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="RemoveChild(System.Xml.XmlNode)" argnames="oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="ReplaceChild(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, oldChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertAfter(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="InsertBefore(System.Xml.XmlNode, System.Xml.XmlNode)" argnames="newChild, refChild" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="LoadSingleElement(System.String, System.Xml.XmlTextReader)" argnames="filename, sourceReader" returntype="System.Void" />
+        <method name="CreateAttribute(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
+        <method name="CreateElement(System.String)" argnames="name" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
+        <method name="CreateAttribute(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlAttribute" />
+        <method name="CreateElement(System.String, System.String)" argnames="qualifiedName, namespaceURI" inherited="System.Xml.XmlDocument" returntype="System.Xml.XmlElement" />
+        <method name="SelectSingleNode(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectSingleNode(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNode" />
+        <method name="SelectNodes(System.String)" argnames="xpath" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="SelectNodes(System.String, System.Xml.XmlNamespaceManager)" argnames="xpath, nsmgr" inherited="System.Xml.XmlNode" returntype="System.Xml.XmlNodeList" />
+        <method name="GetEnumerator" argnames="" inherited="System.Xml.XmlNode" returntype="System.Collections.IEnumerator" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="NodeInserting" inherited="System.Xml.XmlDocument" />
+        <event name="NodeInserted" inherited="System.Xml.XmlDocument" />
+        <event name="NodeRemoving" inherited="System.Xml.XmlDocument" />
+        <event name="NodeRemoved" inherited="System.Xml.XmlDocument" />
+        <event name="NodeChanging" inherited="System.Xml.XmlDocument" />
+        <event name="NodeChanged" inherited="System.Xml.XmlDocument" />
+    </class>
+    <class name="AppSettingsReader" namespace="System.Configuration">
+        <constructor name="AppSettingsReader" argnames="" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetValue(System.String, System.Type)" argnames="key, type" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <interface name="IConfigurationSectionHandler" namespace="System.Configuration">
+        <method name="Create(System.Object, System.Object, System.Xml.XmlNode)" argnames="parent, configContext, section" returntype="System.Object" />
+    </interface>
+    <interface name="IConfigurationSystem" namespace="System.Configuration">
+        <method name="Init" argnames="" returntype="System.Void" />
+        <method name="GetConfig(System.String)" argnames="configKey" returntype="System.Object" />
+    </interface>
+    <class name="ErrorEventArgs" namespace="System.IO">
+        <constructor name="ErrorEventArgs(System.Exception)" argnames="exception" />
+        <method name="GetException" argnames="" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FileSystemEventArgs" namespace="System.IO">
+        <constructor name="FileSystemEventArgs(System.IO.WatcherChangeTypes, System.String, System.String)" argnames="changeType, directory, name" />
+        <property name="ChangeType" propertytype="System.IO.WatcherChangeTypes" />
+        <property name="FullPath" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="InternalBufferOverflowException" namespace="System.IO">
+        <constructor name="InternalBufferOverflowException" argnames="" />
+        <constructor name="InternalBufferOverflowException(System.String)" argnames="message" />
+        <constructor name="InternalBufferOverflowException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="InternalBufferOverflowException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" inherited="System.Exception" propertytype="System.String" />
+        <property name="InnerException" inherited="System.Exception" propertytype="System.Exception" />
+        <property name="TargetSite" inherited="System.Exception" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" inherited="System.Exception" propertytype="System.String" />
+        <property name="HelpLink" inherited="System.Exception" propertytype="System.String" />
+        <property name="Source" inherited="System.Exception" propertytype="System.String" />
+        <property name="HResult" inherited="System.Exception" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.Exception" returntype="System.Void" />
+        <method name="GetBaseException" argnames="" inherited="System.Exception" returntype="System.Exception" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Exception" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="IODescriptionAttribute" namespace="System.IO">
+        <constructor name="IODescriptionAttribute(System.String)" argnames="description" />
+        <property name="Description" propertytype="System.String" />
+        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="RenamedEventArgs" namespace="System.IO">
+        <constructor name="RenamedEventArgs(System.IO.WatcherChangeTypes, System.String, System.String, System.String)" argnames="changeType, directory, name, oldName" />
+        <property name="OldFullPath" propertytype="System.String" />
+        <property name="OldName" propertytype="System.String" />
+        <property name="ChangeType" inherited="System.IO.FileSystemEventArgs" propertytype="System.IO.WatcherChangeTypes" />
+        <property name="FullPath" inherited="System.IO.FileSystemEventArgs" propertytype="System.String" />
+        <property name="Name" inherited="System.IO.FileSystemEventArgs" propertytype="System.String" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="FileSystemWatcher" namespace="System.IO">
+        <constructor name="FileSystemWatcher" argnames="" />
+        <constructor name="FileSystemWatcher(System.String)" argnames="path" />
+        <constructor name="FileSystemWatcher(System.String, System.String)" argnames="path, filter" />
+        <property name="NotifyFilter" propertytype="System.IO.NotifyFilters" />
+        <property name="EnableRaisingEvents" propertytype="System.Boolean" />
+        <property name="Filter" propertytype="System.String" />
+        <property name="IncludeSubdirectories" propertytype="System.Boolean" />
+        <property name="InternalBufferSize" propertytype="System.Int32" />
+        <property name="Path" propertytype="System.String" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="OnChanged(System.IO.FileSystemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnCreated(System.IO.FileSystemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnDeleted(System.IO.FileSystemEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnError(System.IO.ErrorEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="OnRenamed(System.IO.RenamedEventArgs)" argnames="e" returntype="System.Void" />
+        <method name="WaitForChanged(System.IO.WatcherChangeTypes)" argnames="changeType" returntype="System.IO.WaitForChangedResult" />
+        <method name="WaitForChanged(System.IO.WatcherChangeTypes, System.Int32)" argnames="changeType, timeout" returntype="System.IO.WaitForChangedResult" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Changed" />
+        <event name="Created" />
+        <event name="Deleted" />
+        <event name="Error" />
+        <event name="Renamed" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <struct name="WaitForChangedResult" namespace="System.IO">
+        <property name="ChangeType" propertytype="System.IO.WatcherChangeTypes" />
+        <property name="Name" propertytype="System.String" />
+        <property name="OldName" propertytype="System.String" />
+        <property name="TimedOut" propertytype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ValueType" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ValueType" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ValueType" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </struct>
+    <delegate name="ErrorEventHandler" namespace="System.IO">
+        <constructor name="ErrorEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.IO.ErrorEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.IO.ErrorEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="FileSystemEventHandler" namespace="System.IO">
+        <constructor name="FileSystemEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.IO.FileSystemEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.IO.FileSystemEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <delegate name="RenamedEventHandler" namespace="System.IO">
+        <constructor name="RenamedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.IO.RenamedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.IO.RenamedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
+    <enum name="NotifyFilters" namespace="System.IO">
+        <field name="FileName" />
+        <field name="DirectoryName" />
+        <field name="Attributes" />
+        <field name="Size" />
+        <field name="LastWrite" />
+        <field name="LastAccess" />
+        <field name="CreationTime" />
+        <field name="Security" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <enum name="WatcherChangeTypes" namespace="System.IO">
+        <field name="Created" />
+        <field name="Deleted" />
+        <field name="Changed" />
+        <field name="Renamed" />
+        <field name="All" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" inherited="System.Enum" returntype="System.String" />
+        <method name="GetTypeCode" argnames="" inherited="System.Enum" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" inherited="System.Enum" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="target" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Enum" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Enum" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Enum" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" inherited="System.Enum" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </enum>
+    <class name="ElapsedEventArgs" namespace="System.Timers">
+        <property name="SignalTime" propertytype="System.DateTime" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="SECURITY_ATTRIBUTES" namespace="System.Timers">
+        <constructor name="SECURITY_ATTRIBUTES" argnames="" />
+        <field name="nLength" />
+        <field name="lpSecurityDescriptor" />
+        <field name="bInheritHandle" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <class name="Timer" namespace="System.Timers">
+        <constructor name="Timer" argnames="" />
+        <constructor name="Timer(System.Double)" argnames="interval" />
+        <property name="AutoReset" propertytype="System.Boolean" />
+        <property name="Enabled" propertytype="System.Boolean" />
+        <property name="Interval" propertytype="System.Double" />
+        <property name="Site" propertytype="System.ComponentModel.ISite" />
+        <property name="SynchronizingObject" propertytype="System.ComponentModel.ISynchronizeInvoke" />
+        <property name="Events" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.EventHandlerList" />
+        <property name="Container" inherited="System.ComponentModel.Component" propertytype="System.ComponentModel.IContainer" />
+        <property name="DesignMode" inherited="System.ComponentModel.Component" propertytype="System.Boolean" />
+        <method name="EndInit" argnames="" returntype="System.Void" />
+        <method name="BeginInit" argnames="" returntype="System.Void" />
+        <method name="Dispose" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetService(System.Type)" argnames="service" inherited="System.ComponentModel.Component" returntype="System.Object" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" inherited="System.MarshalByRefObject" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="GetLifetimeService" argnames="" inherited="System.MarshalByRefObject" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.ComponentModel.Component" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.Object" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.Object" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.ComponentModel.Component" returntype="System.String" />
+        <method name="Close" argnames="" returntype="System.Void" />
+        <method name="Start" argnames="" returntype="System.Void" />
+        <method name="Stop" argnames="" returntype="System.Void" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+        <event name="Elapsed" />
+        <event name="Disposed" inherited="System.ComponentModel.Component" />
+    </class>
+    <class name="TimersDescriptionAttribute" namespace="System.Timers">
+        <constructor name="TimersDescriptionAttribute(System.String)" argnames="description" />
+        <property name="Description" propertytype="System.String" />
+        <property name="DescriptionValue" inherited="System.ComponentModel.DescriptionAttribute" propertytype="System.String" />
+        <property name="TypeId" inherited="System.Attribute" propertytype="System.Object" />
+        <method name="IsDefaultAttribute" argnames="" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" inherited="System.Attribute" returntype="System.Boolean" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.ComponentModel.DescriptionAttribute" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </class>
+    <delegate name="ElapsedEventHandler" namespace="System.Timers">
+        <constructor name="ElapsedEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <property name="Method" inherited="System.Delegate" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" inherited="System.Delegate" propertytype="System.Object" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Timers.ElapsedEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Timers.ElapsedEventArgs)" argnames="sender, e" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" inherited="System.MulticastDelegate" returntype="System.Void" />
+        <method name="Clone" argnames="" inherited="System.Delegate" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" inherited="System.MulticastDelegate" returntype="System.Delegate" />
+        <method name="GetMethodImpl" argnames="" inherited="System.Delegate" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList" argnames="" inherited="System.MulticastDelegate" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" inherited="System.MulticastDelegate" returntype="System.Object" />
+        <method name="Finalize" argnames="" inherited="System.Object" returntype="System.Void" />
+        <method name="GetHashCode" argnames="" inherited="System.MulticastDelegate" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" inherited="System.MulticastDelegate" returntype="System.Boolean" />
+        <method name="ToString" argnames="" inherited="System.Object" returntype="System.String" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" inherited="System.Delegate" returntype="System.Object" />
+        <method name="GetType" argnames="" inherited="System.Object" returntype="System.Type" />
+        <method name="MemberwiseClone" argnames="" inherited="System.Object" returntype="System.Object" />
+    </delegate>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Documentation/en/System.Diagnostics/ConsoleTraceListener.xml
+++ mono-4.6.2.7+dfsg/mcs/class/System/Documentation/en/System.Diagnostics/ConsoleTraceListener.xml
@@ -41,7 +41,7 @@
   &lt;system.diagnostics&gt;
     &lt;trace autoflush="false" indentsize="4"&gt;
       &lt;listeners&gt;
-        <codeFeaturedElement>&lt;add name="configConsoleListener" </codeFeaturedElement>
+        <codeFeaturedElement>&lt;add name="configConsoleListener" </codeFeaturedElement>
 <codeFeaturedElement>          type="System.Diagnostics.ConsoleTraceListener" /&gt;</codeFeaturedElement>
       &lt;/listeners&gt;
     &lt;/trace&gt;
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/PowerModeChangedEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/PowerModeChangedEventArgs.cs
@@ -1,10 +1,10 @@
-//
-// PowerModeChangedEventArgs.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
+//
+// PowerModeChangedEventArgs.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,23 +29,23 @@
 
 using System.Security.Permissions;
 
-namespace Microsoft.Win32 {
-
+namespace Microsoft.Win32 {
+
 	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
 	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-	public class PowerModeChangedEventArgs : System.EventArgs {
-	
-		PowerModes mymode;
-		
-		public PowerModeChangedEventArgs(PowerModes mode)
-		{
-			this.mymode = mode;
-		}
-		
-		public PowerModes Mode {
-			get{
-				return mymode;
-			}
-		}
-	}
-}
+	public class PowerModeChangedEventArgs : System.EventArgs {
+	
+		PowerModes mymode;
+		
+		public PowerModeChangedEventArgs(PowerModes mode)
+		{
+			this.mymode = mode;
+		}
+		
+		public PowerModes Mode {
+			get{
+				return mymode;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/PowerModeChangedEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/PowerModeChangedEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// PowerModeChangedEventHandler.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// PowerModeChangedEventHandler.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,9 +27,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-public delegate void PowerModeChangedEventHandler(object sender, PowerModeChangedEventArgs e);
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+public delegate void PowerModeChangedEventHandler(object sender, PowerModeChangedEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/PowerModes.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/PowerModes.cs
@@ -1,11 +1,11 @@
-//
-// PowerModes.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// PowerModes.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,13 +27,13 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-	public enum PowerModes : int {
-		Resume = 1,
-		StatusChange = 2,
-		Suspend = 3,
-	};
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+	public enum PowerModes : int {
+		Resume = 1,
+		StatusChange = 2,
+		Suspend = 3,
+	};
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/SessionEndReasons.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/SessionEndReasons.cs
@@ -1,11 +1,11 @@
-//
-// SessionEndReasons.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// SessionEndReasons.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,12 +27,12 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-	public enum SessionEndReasons : int {
-		Logoff = 1,
-		SystemShutdown = 2,
-	};
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+	public enum SessionEndReasons : int {
+		Logoff = 1,
+		SystemShutdown = 2,
+	};
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/SessionEndedEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/SessionEndedEventArgs.cs
@@ -1,10 +1,10 @@
-//
-// SessionEndedEventArgs.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
+//
+// SessionEndedEventArgs.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,21 +29,21 @@
 
 using System.Security.Permissions;
 
-namespace Microsoft.Win32 {
-
+namespace Microsoft.Win32 {
+
 	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
 	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-	public class SessionEndedEventArgs : System.EventArgs {
-
-		SessionEndReasons myreason;
-	
-		public SessionEndedEventArgs (SessionEndReasons reason)
-		{
-			this.myreason = reason;
-		}
-	
-		public SessionEndReasons Reason {
-			get { return myreason; }
-		}
-	}
-}
+	public class SessionEndedEventArgs : System.EventArgs {
+
+		SessionEndReasons myreason;
+	
+		public SessionEndedEventArgs (SessionEndReasons reason)
+		{
+			this.myreason = reason;
+		}
+	
+		public SessionEndReasons Reason {
+			get { return myreason; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/SessionEndedEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/SessionEndedEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// SessionEndedEventHandler.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// SessionEndedEventHandler.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,10 +27,10 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-public delegate void SessionEndedEventHandler(object sender,   SessionEndedEventArgs e);
-
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+public delegate void SessionEndedEventHandler(object sender,   SessionEndedEventArgs e);
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/SessionEndingEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/SessionEndingEventArgs.cs
@@ -1,10 +1,10 @@
-//
-// SessionEndingEventArgs.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
+//
+// SessionEndingEventArgs.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,27 +29,27 @@
 
 using System.Security.Permissions;
 
-namespace Microsoft.Win32 {
-
+namespace Microsoft.Win32 {
+
 	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
 	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-	public class SessionEndingEventArgs : System.EventArgs {
-
-		SessionEndReasons myreason;
-		bool mycancel;
-
-		public SessionEndingEventArgs (SessionEndReasons reason)
-		{
-			this.myreason = reason;
-		}
-	
-		public SessionEndReasons Reason {
-			get { return myreason; }
-		}
-	
-		public bool Cancel {
-			get { return mycancel; }
-			set { mycancel = value; }
-		}
-	}
-}
+	public class SessionEndingEventArgs : System.EventArgs {
+
+		SessionEndReasons myreason;
+		bool mycancel;
+
+		public SessionEndingEventArgs (SessionEndReasons reason)
+		{
+			this.myreason = reason;
+		}
+	
+		public SessionEndReasons Reason {
+			get { return myreason; }
+		}
+	
+		public bool Cancel {
+			get { return mycancel; }
+			set { mycancel = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/SessionEndingEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/SessionEndingEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// SessionEndingEventHandler.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// SessionEndingEventHandler.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,9 +27,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-public delegate void SessionEndingEventHandler(object sender,   SessionEndingEventArgs e);
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+public delegate void SessionEndingEventHandler(object sender,   SessionEndingEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/TimerElapsedEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/TimerElapsedEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// TimerElapsedEventHandler.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// TimerElapsedEventHandler.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,9 +27,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-public delegate void TimerElapsedEventHandler(object sender,   TimerElapsedEventArgs e);
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+public delegate void TimerElapsedEventHandler(object sender,   TimerElapsedEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/UserPreferenceCategory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/UserPreferenceCategory.cs
@@ -1,10 +1,10 @@
-//
-// UserPreferenceCategory.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
+//
+// UserPreferenceCategory.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,23 +27,23 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-namespace Microsoft.Win32 {
-
+namespace Microsoft.Win32 {
+
 	public enum UserPreferenceCategory {
-
-		Accessibility = 1,
-		Color = 2,
-		Desktop = 3,
-		General = 4,
-		Icon = 5,
-		Keyboard = 6,
-		Menu = 7,
-		Mouse = 8,
-		Policy = 9,
-		Power = 10,
-		Screensaver = 11,
-		Window = 12,
+
+		Accessibility = 1,
+		Color = 2,
+		Desktop = 3,
+		General = 4,
+		Icon = 5,
+		Keyboard = 6,
+		Menu = 7,
+		Mouse = 8,
+		Policy = 9,
+		Power = 10,
+		Screensaver = 11,
+		Window = 12,
 		Locale = 13,
 		VisualStyle
-	}
-}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/UserPreferenceChangedEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/UserPreferenceChangedEventArgs.cs
@@ -1,10 +1,10 @@
-//
-// UserPreferenceChangedEventArgs.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
+//
+// UserPreferenceChangedEventArgs.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,22 +29,22 @@
 
 using System.Security.Permissions;
 
-namespace Microsoft.Win32 {
+namespace Microsoft.Win32 {
 
 	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
 	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-	public class UserPreferenceChangedEventArgs : System.EventArgs{
-
-		UserPreferenceCategory mycategory;
-
-	
-		public UserPreferenceChangedEventArgs (UserPreferenceCategory category)
-		{
-			this.mycategory = category;
-		}
-	
-		public UserPreferenceCategory Category {
-			get { return mycategory; }
-		}
-	}
-}
+	public class UserPreferenceChangedEventArgs : System.EventArgs{
+
+		UserPreferenceCategory mycategory;
+
+	
+		public UserPreferenceChangedEventArgs (UserPreferenceCategory category)
+		{
+			this.mycategory = category;
+		}
+	
+		public UserPreferenceCategory Category {
+			get { return mycategory; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/UserPreferenceChangedEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/UserPreferenceChangedEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// UserPreferenceChangedEventHandler.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// UserPreferenceChangedEventHandler.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,9 +27,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-public delegate void UserPreferenceChangedEventHandler(   object sender,   UserPreferenceChangedEventArgs e);
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+public delegate void UserPreferenceChangedEventHandler(   object sender,   UserPreferenceChangedEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/UserPreferenceChangingEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/UserPreferenceChangingEventArgs.cs
@@ -1,10 +1,10 @@
-//
-// UserPreferenceChangingEventArgs.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
+//
+// UserPreferenceChangingEventArgs.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,21 +29,21 @@
 
 using System.Security.Permissions;
 
-namespace Microsoft.Win32 {
+namespace Microsoft.Win32 {
 
 	[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
 	[PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
-	public class UserPreferenceChangingEventArgs : System.EventArgs{
-
-		UserPreferenceCategory mycategory;
-	
-		public UserPreferenceChangingEventArgs (UserPreferenceCategory category)
-		{
-			this.mycategory = category;
-		}
-	
-		public UserPreferenceCategory Category {
-			get { return mycategory; }
-		}
-	}
-}
+	public class UserPreferenceChangingEventArgs : System.EventArgs{
+
+		UserPreferenceCategory mycategory;
+	
+		public UserPreferenceChangingEventArgs (UserPreferenceCategory category)
+		{
+			this.mycategory = category;
+		}
+	
+		public UserPreferenceCategory Category {
+			get { return mycategory; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Microsoft.Win32/UserPreferenceChangingEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Microsoft.Win32/UserPreferenceChangingEventHandler.cs
@@ -1,11 +1,11 @@
-//
-// UserPreferenceChangingEventHandler.cs
-//
-// Author:
-//  Johannes Roith (johannes@jroith.de)
-//
-// (C) 2002 Johannes Roith
-//
+//
+// UserPreferenceChangingEventHandler.cs
+//
+// Author:
+//  Johannes Roith (johannes@jroith.de)
+//
+// (C) 2002 Johannes Roith
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,9 +27,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-namespace Microsoft.Win32 {
-
-	/// <summary>
-	/// </summary>
-public delegate void UserPreferenceChangingEventHandler(   object sender,   UserPreferenceChangingEventArgs e);
-}
+namespace Microsoft.Win32 {
+
+	/// <summary>
+	/// </summary>
+public delegate void UserPreferenceChangingEventHandler(   object sender,   UserPreferenceChangingEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO.Ports/Handshake.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO.Ports/Handshake.cs
@@ -1,21 +1,21 @@
-//
-// System.IO.Ports.Handshake.cs
-//
-// Authors:
-//	Chris Toshok (toshok@ximian.com)
-//
-// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
-//
-
-namespace System.IO.Ports 
-{
-	public enum Handshake 
-	{
-		None,
-		XOnXOff,
-		RequestToSend,
-		RequestToSendXOnXOff
-	} 
-}
-
-
+//
+// System.IO.Ports.Handshake.cs
+//
+// Authors:
+//	Chris Toshok (toshok@ximian.com)
+//
+// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
+//
+
+namespace System.IO.Ports 
+{
+	public enum Handshake 
+	{
+		None,
+		XOnXOff,
+		RequestToSend,
+		RequestToSendXOnXOff
+	} 
+}
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO.Ports/Parity.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO.Ports/Parity.cs
@@ -1,22 +1,22 @@
-//
-// System.IO.Ports.Parity.cs
-//
-// Authors:
-//	Chris Toshok (toshok@ximian.com)
-//
-// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
-//
-
-namespace System.IO.Ports 
-{
-	public enum Parity 
-	{
-		None,
-		Odd,
-		Even,
-		Mark,
-		Space
-	} 
-}
-
-
+//
+// System.IO.Ports.Parity.cs
+//
+// Authors:
+//	Chris Toshok (toshok@ximian.com)
+//
+// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
+//
+
+namespace System.IO.Ports 
+{
+	public enum Parity 
+	{
+		None,
+		Odd,
+		Even,
+		Mark,
+		Space
+	} 
+}
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO.Ports/SerialData.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO.Ports/SerialData.cs
@@ -1,18 +1,18 @@
-//
-// System.IO.Ports.SerialData.cs
-//
-// Authors:
-//	Carlos Alberto Cortez (calberto.cortez@gmail.com)
-//
-// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
-//
-
-namespace System.IO.Ports 
-{
-	public enum SerialData 
-	{
-		Chars = 1,
-		Eof
-	} 
-}
-
+//
+// System.IO.Ports.SerialData.cs
+//
+// Authors:
+//	Carlos Alberto Cortez (calberto.cortez@gmail.com)
+//
+// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
+//
+
+namespace System.IO.Ports 
+{
+	public enum SerialData 
+	{
+		Chars = 1,
+		Eof
+	} 
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO.Ports/SerialError.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO.Ports/SerialError.cs
@@ -1,22 +1,22 @@
-//
-// System.IO.Ports.SerialError.cs
-//
-// Authors:
-//	Carlos Alberto Cortez (calberto.cortez@gmail.com)
-//
-// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
-//
-
-namespace System.IO.Ports 
-{
-	public enum SerialError 
-	{
-		RXOver = 1,
-		Overrun = 2,
-		RXParity = 4,
-		Frame = 8,
-		TXFull = 256
-	} 
-}
-
-
+//
+// System.IO.Ports.SerialError.cs
+//
+// Authors:
+//	Carlos Alberto Cortez (calberto.cortez@gmail.com)
+//
+// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
+//
+
+namespace System.IO.Ports 
+{
+	public enum SerialError 
+	{
+		RXOver = 1,
+		Overrun = 2,
+		RXParity = 4,
+		Frame = 8,
+		TXFull = 256
+	} 
+}
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO.Ports/SerialPinChange.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO.Ports/SerialPinChange.cs
@@ -1,22 +1,22 @@
-//
-// System.IO.Ports.SerialPinChange.cs
-//
-// Authors:
-//	Carlos Alberto Cortez (calberto.cortez@gmail.com)
-//
-// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
-//
-
-namespace System.IO.Ports 
-{
-	public enum SerialPinChange 
-	{
-		CtsChanged = 8,
-		DsrChanged = 16,
-		CDChanged = 32,
-		Break = 64,
-		Ring = 256
-	} 
-}
-
-
+//
+// System.IO.Ports.SerialPinChange.cs
+//
+// Authors:
+//	Carlos Alberto Cortez (calberto.cortez@gmail.com)
+//
+// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
+//
+
+namespace System.IO.Ports 
+{
+	public enum SerialPinChange 
+	{
+		CtsChanged = 8,
+		DsrChanged = 16,
+		CDChanged = 32,
+		Break = 64,
+		Ring = 256
+	} 
+}
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO.Ports/StopBits.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO.Ports/StopBits.cs
@@ -1,20 +1,20 @@
-//
-// System.IO.Ports.StopBits.cs
-//
-// Authors:
-//	Chris Toshok (toshok@ximian.com)
-//
-// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
-//
-
-namespace System.IO.Ports 
-{
-	public enum StopBits 
-	{
-		None,
-		One,
-		Two,
-		OnePointFive
-	} 
-}
-
+//
+// System.IO.Ports.StopBits.cs
+//
+// Authors:
+//	Chris Toshok (toshok@ximian.com)
+//
+// (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
+//
+
+namespace System.IO.Ports 
+{
+	public enum StopBits 
+	{
+		None,
+		One,
+		Two,
+		OnePointFive
+	} 
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/ErrorEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/ErrorEventArgs.cs
@@ -1,11 +1,11 @@
-// 
-// System.IO.ErrorEventArgs.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
+// 
+// System.IO.ErrorEventArgs.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,34 +27,34 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-
-namespace System.IO {
-	public class ErrorEventArgs : EventArgs {
-
-		#region Fields
-
-		Exception exception;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public ErrorEventArgs (Exception exception) 
-		{
-			this.exception = exception;
-		}
-		
-		#endregion // Constructors
-
-		#region Methods
-
-		public virtual Exception GetException ()
-		{
-			return exception;
-		}
-
-		#endregion // Methods
-	}
-}
+
+using System;
+
+namespace System.IO {
+	public class ErrorEventArgs : EventArgs {
+
+		#region Fields
+
+		Exception exception;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public ErrorEventArgs (Exception exception) 
+		{
+			this.exception = exception;
+		}
+		
+		#endregion // Constructors
+
+		#region Methods
+
+		public virtual Exception GetException ()
+		{
+			return exception;
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/ErrorEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/ErrorEventHandler.cs
@@ -1,10 +1,10 @@
-// 
-// System.IO.ErrorEventHandler.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
+// 
+// System.IO.ErrorEventHandler.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -26,8 +26,8 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
+
 namespace System.IO {
-
-	public delegate void ErrorEventHandler (object sender, ErrorEventArgs e);
-}
+
+	public delegate void ErrorEventHandler (object sender, ErrorEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/FileSystemEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/FileSystemEventArgs.cs
@@ -1,11 +1,11 @@
-// 
-// System.IO.FileSystemEventArgs.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
+// 
+// System.IO.FileSystemEventArgs.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,49 +27,49 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-
-namespace System.IO {
-	public class FileSystemEventArgs : EventArgs {
-
-		#region Fields
-
-		WatcherChangeTypes changeType;
-		string directory;
-		string name;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public FileSystemEventArgs (WatcherChangeTypes changeType, string directory, string name) 
-		{
-			this.changeType = changeType;
-			this.directory = directory;
-			this.name = name;
-		}
-		
-		internal void SetName (string name)
-		{
-			this.name = name;
-		}
-		#endregion // Constructors
-
-		#region Properties
-
-		public WatcherChangeTypes ChangeType {
-			get { return changeType; }
-		}
-
-		public string FullPath {
-			get { return Path.Combine (directory, name); }
-		}
-
-		public string Name {
-			get { return name; }
-		}
-
-		#endregion // Properties
-	}
-}
+
+using System;
+
+namespace System.IO {
+	public class FileSystemEventArgs : EventArgs {
+
+		#region Fields
+
+		WatcherChangeTypes changeType;
+		string directory;
+		string name;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public FileSystemEventArgs (WatcherChangeTypes changeType, string directory, string name) 
+		{
+			this.changeType = changeType;
+			this.directory = directory;
+			this.name = name;
+		}
+		
+		internal void SetName (string name)
+		{
+			this.name = name;
+		}
+		#endregion // Constructors
+
+		#region Properties
+
+		public WatcherChangeTypes ChangeType {
+			get { return changeType; }
+		}
+
+		public string FullPath {
+			get { return Path.Combine (directory, name); }
+		}
+
+		public string Name {
+			get { return name; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/FileSystemEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/FileSystemEventHandler.cs
@@ -1,10 +1,10 @@
-// 
-// System.IO.FileSystemEventHandler.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
+// 
+// System.IO.FileSystemEventHandler.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -26,8 +26,8 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-namespace System.IO {
 
-	public delegate void FileSystemEventHandler (object sender, FileSystemEventArgs e);
-}
+namespace System.IO {
+
+	public delegate void FileSystemEventHandler (object sender, FileSystemEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/IODescriptionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/IODescriptionAttribute.cs
@@ -1,11 +1,11 @@
-// 
-// System.IO.IODescriptionAttribute.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
+// 
+// System.IO.IODescriptionAttribute.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,29 +27,29 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-using System.ComponentModel;
-
-namespace System.IO {
-	[AttributeUsage (AttributeTargets.All)]
-	public class IODescriptionAttribute : DescriptionAttribute {
-
-		#region Constructors
-
-		public IODescriptionAttribute (string description)
-			: base (description)
-		{
-		}
-		
-		#endregion // Constructors
-
-		#region Methods
-
-		public override string Description {
-			get { return DescriptionValue; }
-		}
-
-		#endregion // Methods
-	}
-}
+
+using System;
+using System.ComponentModel;
+
+namespace System.IO {
+	[AttributeUsage (AttributeTargets.All)]
+	public class IODescriptionAttribute : DescriptionAttribute {
+
+		#region Constructors
+
+		public IODescriptionAttribute (string description)
+			: base (description)
+		{
+		}
+		
+		#endregion // Constructors
+
+		#region Methods
+
+		public override string Description {
+			get { return DescriptionValue; }
+		}
+
+		#endregion // Methods
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/InternalBufferOverflowException.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/InternalBufferOverflowException.cs
@@ -1,11 +1,11 @@
-// 
-// System.IO.InternalBufferOverflowException.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
+// 
+// System.IO.InternalBufferOverflowException.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,36 +27,36 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-using System.Runtime.Serialization;
-
-namespace System.IO {
-	[Serializable]
-	public class InternalBufferOverflowException : SystemException {
-
-		#region Constructors
-
-		public InternalBufferOverflowException ()
-			: base ("Internal buffer overflow occurred.")
-		{
-		}
-
-		public InternalBufferOverflowException (string message)
-			: base (message)
-		{
-		}
-
-		protected InternalBufferOverflowException (SerializationInfo info, StreamingContext context)
-			: base (info, context)
-		{
-		}
-
-		public InternalBufferOverflowException (string message, Exception inner)
-			: base (message, inner)
-		{
-		}
-
-		#endregion // Constructors
-	}
-}
+
+using System;
+using System.Runtime.Serialization;
+
+namespace System.IO {
+	[Serializable]
+	public class InternalBufferOverflowException : SystemException {
+
+		#region Constructors
+
+		public InternalBufferOverflowException ()
+			: base ("Internal buffer overflow occurred.")
+		{
+		}
+
+		public InternalBufferOverflowException (string message)
+			: base (message)
+		{
+		}
+
+		protected InternalBufferOverflowException (SerializationInfo info, StreamingContext context)
+			: base (info, context)
+		{
+		}
+
+		public InternalBufferOverflowException (string message, Exception inner)
+			: base (message, inner)
+		{
+		}
+
+		#endregion // Constructors
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/NotifyFilters.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/NotifyFilters.cs
@@ -1,10 +1,10 @@
-// 
-// System.IO.NotifyFilters.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
+// 
+// System.IO.NotifyFilters.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -26,18 +26,18 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
+
 namespace System.IO {
-
-	[Flags]
-	public enum NotifyFilters {
-		Attributes = 4,
-		CreationTime = 64,
-		DirectoryName = 2,
-		FileName = 1,
-		LastAccess = 32,
-		LastWrite = 16,
-		Security = 256,
-		Size = 8
-	}
-}
+
+	[Flags]
+	public enum NotifyFilters {
+		Attributes = 4,
+		CreationTime = 64,
+		DirectoryName = 2,
+		FileName = 1,
+		LastAccess = 32,
+		LastWrite = 16,
+		Security = 256,
+		Size = 8
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/RenamedEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/RenamedEventArgs.cs
@@ -1,11 +1,11 @@
-// 
-// System.IO.RenamedEventArgs.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
+// 
+// System.IO.RenamedEventArgs.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,40 +27,40 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-
-namespace System.IO {
-	public class RenamedEventArgs : FileSystemEventArgs {
-
-		#region Fields
-
-		string oldName;
-		string oldFullPath;
-
-		#endregion // Fields
-
-		#region Constructors
-
-		public RenamedEventArgs (WatcherChangeTypes changeType, string directory, string name, string oldName)
-			: base (changeType, directory, name)
-		{
-			this.oldName = oldName;
-			oldFullPath = Path.Combine (directory, oldName);
-		}
-		
-		#endregion // Constructors
-
-		#region Properties
-
-		public string OldFullPath {
-			get { return oldFullPath; }
-		}
-
-		public string OldName {
-			get { return oldName; }
-		}
-
-		#endregion // Properties
-	}
-}
+
+using System;
+
+namespace System.IO {
+	public class RenamedEventArgs : FileSystemEventArgs {
+
+		#region Fields
+
+		string oldName;
+		string oldFullPath;
+
+		#endregion // Fields
+
+		#region Constructors
+
+		public RenamedEventArgs (WatcherChangeTypes changeType, string directory, string name, string oldName)
+			: base (changeType, directory, name)
+		{
+			this.oldName = oldName;
+			oldFullPath = Path.Combine (directory, oldName);
+		}
+		
+		#endregion // Constructors
+
+		#region Properties
+
+		public string OldFullPath {
+			get { return oldFullPath; }
+		}
+
+		public string OldName {
+			get { return oldName; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/RenamedEventHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/RenamedEventHandler.cs
@@ -1,10 +1,10 @@
-// 
-// System.IO.FileSystemEventHandler.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
+// 
+// System.IO.FileSystemEventHandler.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -26,8 +26,8 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-namespace System.IO {
 
-	public delegate void RenamedEventHandler (object sender, RenamedEventArgs e);
-}
+namespace System.IO {
+
+	public delegate void RenamedEventHandler (object sender, RenamedEventArgs e);
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/WaitForChangedResult.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/WaitForChangedResult.cs
@@ -1,11 +1,11 @@
-// 
-// System.IO.WaitForChangedResult.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
-//
+// 
+// System.IO.WaitForChangedResult.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,43 +27,43 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-
-namespace System.IO {
-	public struct WaitForChangedResult {
-
-		#region Fields
-
-		WatcherChangeTypes changeType;
-		string name;
-		string oldName;
-		bool timedOut;
-
-		#endregion // Fields
-		
-		#region Properties
-
-		public WatcherChangeTypes ChangeType {
-			get { return changeType; }
-			set { changeType = value; }
-		}
-
-		public string Name {
-			get { return name; }
-			set { name = value; }
-		}
-
-		public string OldName {
-			get { return oldName; }
-			set { oldName = value; }
-		}
-
-		public bool TimedOut {
-			get { return timedOut; }
-			set { timedOut = value; }
-		}
-
-		#endregion // Properties
-	}
-}
+
+using System;
+
+namespace System.IO {
+	public struct WaitForChangedResult {
+
+		#region Fields
+
+		WatcherChangeTypes changeType;
+		string name;
+		string oldName;
+		bool timedOut;
+
+		#endregion // Fields
+		
+		#region Properties
+
+		public WatcherChangeTypes ChangeType {
+			get { return changeType; }
+			set { changeType = value; }
+		}
+
+		public string Name {
+			get { return name; }
+			set { name = value; }
+		}
+
+		public string OldName {
+			get { return oldName; }
+			set { oldName = value; }
+		}
+
+		public bool TimedOut {
+			get { return timedOut; }
+			set { timedOut = value; }
+		}
+
+		#endregion // Properties
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.IO/WatcherChangeTypes.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.IO/WatcherChangeTypes.cs
@@ -1,10 +1,10 @@
-// 
-// System.IO.WatcherChangeTypes.cs
-//
-// Author:
-//   Tim Coleman (tim@timcoleman.com)
-//
-// Copyright (C) Tim Coleman, 2002
+// 
+// System.IO.WatcherChangeTypes.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//
+// Copyright (C) Tim Coleman, 2002
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -26,15 +26,15 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-namespace System.IO {
 
-	[Flags]
-	public enum WatcherChangeTypes {
-		All = 0xF,
-		Changed = 4,
-		Created = 1,
-		Deleted = 2,
-		Renamed = 8
-	}
-}
+namespace System.IO {
+
+	[Flags]
+	public enum WatcherChangeTypes {
+		All = 0xF,
+		Changed = 4,
+		Created = 1,
+		Deleted = 2,
+		Renamed = 8
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net.Mail/SmtpPermission.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net.Mail/SmtpPermission.cs
@@ -1,9 +1,9 @@
-//
-// System.Net.Mail.SmtpPermission
-//
-// Authors:
+//
+// System.Net.Mail.SmtpPermission
+//
+// Authors:
 //	Sebastien Pouliot  <sebastien@ximian.com>
-//
+//
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,41 +27,41 @@
 //
 
 
-using System.Security;
-using System.Security.Permissions;
-
+using System.Security;
+using System.Security.Permissions;
+
 namespace System.Net.Mail {
-
-	[Serializable]
+
+	[Serializable]
 	public sealed class SmtpPermission : CodeAccessPermission, IUnrestrictedPermission {
 
 		private const int version = 1;
-
+
 		private bool unrestricted;
-		private SmtpAccess access;
+		private SmtpAccess access;
+
 
-
 		public SmtpPermission (bool unrestricted)
-			: base ()
+			: base ()
 		{
-			this.unrestricted = unrestricted;
-			access = unrestricted ? SmtpAccess.ConnectToUnrestrictedPort : SmtpAccess.None;
-		}
+			this.unrestricted = unrestricted;
+			access = unrestricted ? SmtpAccess.ConnectToUnrestrictedPort : SmtpAccess.None;
+		}
 
 		public SmtpPermission (PermissionState state)
-			: base ()
+			: base ()
 		{
-			unrestricted = (state == PermissionState.Unrestricted);
-			access =  unrestricted ? SmtpAccess.ConnectToUnrestrictedPort : SmtpAccess.None;
-		}
+			unrestricted = (state == PermissionState.Unrestricted);
+			access =  unrestricted ? SmtpAccess.ConnectToUnrestrictedPort : SmtpAccess.None;
+		}
 
 		public SmtpPermission (SmtpAccess access)
-			: base ()
+			: base ()
 		{
-			// this ctor can accept invalid enum values
-			this.access = access;
-		}
-		
+			// this ctor can accept invalid enum values
+			this.access = access;
+		}
+		
 
 		public SmtpAccess Access {
 			get { return access; }
@@ -75,17 +75,17 @@ namespace System.Net.Mail {
 			}
 		}
 
-		public override IPermission Copy ()
+		public override IPermission Copy ()
 		{
 			if (unrestricted) {
 				return new SmtpPermission (true);
 			} else {
 				return new SmtpPermission (access);
 			}
-		}
-
-		public override IPermission Intersect (IPermission target)
-		{
+		}
+
+		public override IPermission Intersect (IPermission target)
+		{
 			SmtpPermission sp = Cast (target);
 			if (sp == null)
 				return null;
@@ -96,10 +96,10 @@ namespace System.Net.Mail {
 				return new SmtpPermission (sp.access);
 			else
 				return new SmtpPermission (access);
-		}
-		
-		public override bool IsSubsetOf (IPermission target) 
-		{
+		}
+		
+		public override bool IsSubsetOf (IPermission target) 
+		{
 			SmtpPermission sp = Cast (target);
 			if (sp == null)
 				return IsEmpty ();
@@ -109,17 +109,17 @@ namespace System.Net.Mail {
 			} else {
 				return (access <= sp.access);
 			}
-		}
-
-		public bool IsUnrestricted () 
-		{
-			return unrestricted;
-		}
-
-		public override SecurityElement ToXml ()
-		{
+		}
+
+		public bool IsUnrestricted () 
+		{
+			return unrestricted;
+		}
+
+		public override SecurityElement ToXml ()
+		{
 			SecurityElement se = PermissionHelper.Element (typeof (SmtpPermission), version);
-			if (unrestricted) {
+			if (unrestricted) {
 				se.AddAttribute ("Unrestricted", "true");
 			} else {
 				switch (access) {
@@ -131,25 +131,25 @@ namespace System.Net.Mail {
 					break;
 				// note: SmtpAccess.None and invalid values aren't serialized to XML
 				}
-			}
-			return se;
-		}
-		
-		public override void FromXml (SecurityElement securityElement)
+			}
+			return se;
+		}
+		
+		public override void FromXml (SecurityElement securityElement)
 		{
 			PermissionHelper.CheckSecurityElement (securityElement, "securityElement", version, version);
-		
-			// LAMESPEC: it says to throw an ArgumentNullException in this case				
-			if (securityElement.Tag != "IPermission")
-				throw new ArgumentException ("securityElement");
-				
+		
+			// LAMESPEC: it says to throw an ArgumentNullException in this case				
+			if (securityElement.Tag != "IPermission")
+				throw new ArgumentException ("securityElement");
+				
 			if (PermissionHelper.IsUnrestricted (securityElement))
 				access = SmtpAccess.Connect;
 			else
-				access = SmtpAccess.None;
-		}		
-		
-		public override IPermission Union (IPermission target) 
+				access = SmtpAccess.None;
+		}		
+		
+		public override IPermission Union (IPermission target) 
 		{
 			SmtpPermission sp = Cast (target);
 			if (sp == null)
@@ -161,7 +161,7 @@ namespace System.Net.Mail {
 				return new SmtpPermission (access);
 			else
 				return new SmtpPermission (sp.access);
-		}
+		}
 
 		// Internal helpers methods
 
@@ -182,6 +182,6 @@ namespace System.Net.Mail {
 
 			return sp;
 		}
-	}
-}
+	}
+}
 
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net.Mail/SmtpPermissionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net.Mail/SmtpPermissionAttribute.cs
@@ -1,9 +1,9 @@
-//
-// System.Net.Mail.SmtpPermissionAttribute
-//
-// Authors:
+//
+// System.Net.Mail.SmtpPermissionAttribute
+//
+// Authors:
 //	Sebastien Pouliot  <sebastien@ximian.com>
-//
+//
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,22 +27,22 @@
 //
 
 
-using System.Security;
-using System.Security.Permissions;
-
+using System.Security;
+using System.Security.Permissions;
+
 namespace System.Net.Mail {
-
+
 	[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct 
-		| AttributeTargets.Constructor | AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
-	[Serializable]
+		| AttributeTargets.Constructor | AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
+	[Serializable]
 	public sealed class SmtpPermissionAttribute : CodeAccessSecurityAttribute {
 
 		private string access;
-
-		
+
+		
 		public SmtpPermissionAttribute (SecurityAction action)
-			: base (action)
-		{
+			: base (action)
+		{
 		}
 
 
@@ -68,15 +68,15 @@ namespace System.Net.Mail {
 				string s = Locale.GetText ("Invalid Access='{0}' value.", access);
 				throw new ArgumentException ("Access", s);
 			}
-		}
-
+		}
+
 		public override IPermission CreatePermission ()
 		{
 			if (Unrestricted)
 				return new SmtpPermission (true);
 
 			return new SmtpPermission (GetSmtpAccess ());
-		}
-	}
-}
+		}
+	}
+}
 
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net/DnsPermission.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net/DnsPermission.cs
@@ -1,132 +1,132 @@
-//
-// System.Net.DnsPermission.cs
-//
-// Authors:
-//	Lawrence Pit (loz@cable.a2000.nl)
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Net {
-
-	[Serializable]
-	public sealed class DnsPermission : CodeAccessPermission, IUnrestrictedPermission {
-
-		private const int version = 1;
-
-		// Fields
-		bool m_noRestriction;
-		
-		// Constructors
-		public DnsPermission (PermissionState state)
-			: base () 
-		{						
-			m_noRestriction = (state == PermissionState.Unrestricted);
-		}
-		
-		// Methods
-				
-		public override IPermission Copy ()
-		{
-			return new DnsPermission (m_noRestriction ? PermissionState.Unrestricted : PermissionState.None);		
-		}
-		
-		public override IPermission Intersect (IPermission target)
-		{
-			DnsPermission dp = Cast (target);
-			if (dp == null)
-				return null;
-			if (IsUnrestricted () && dp.IsUnrestricted ())
-				return new DnsPermission (PermissionState.Unrestricted);
-			return null;
-		}
-		
-		public override bool IsSubsetOf (IPermission target) 
-		{
-			DnsPermission dp = Cast (target);
-			if (dp == null)
-				return IsEmpty ();
-
-			return (dp.IsUnrestricted () || (m_noRestriction == dp.m_noRestriction));
-		}
-
-		public bool IsUnrestricted () 
-		{
-			return this.m_noRestriction;
-		}
-
-		public override SecurityElement ToXml ()
-		{
-			SecurityElement se = PermissionHelper.Element (typeof (DnsPermission), version);
-			if (m_noRestriction)
-				se.AddAttribute ("Unrestricted", "true");				
-			return se;
-		}
-		
-		public override void FromXml (SecurityElement securityElement)
-		{
-			PermissionHelper.CheckSecurityElement (securityElement, "securityElement", version, version);
-		
-			// LAMESPEC: it says to throw an ArgumentNullException in this case				
-			if (securityElement.Tag != "IPermission")
-				throw new ArgumentException ("securityElement");
-				
-			this.m_noRestriction = PermissionHelper.IsUnrestricted (securityElement);
-		}		
-		
-		public override IPermission Union (IPermission target) 
-		{
-			DnsPermission dp = Cast (target);
-			if (dp == null)
-				return Copy ();
-			if (IsUnrestricted () || dp.IsUnrestricted ())
-				return new DnsPermission (PermissionState.Unrestricted);
-			else
-				return new DnsPermission (PermissionState.None);
-		}
-
-		// Internal helpers methods
-
-		private bool IsEmpty ()
-		{
-			return !m_noRestriction;
-		}
-
-		private DnsPermission Cast (IPermission target)
-		{
-			if (target == null)
-				return null;
-
-			DnsPermission dp = (target as DnsPermission);
-			if (dp == null) {
-				PermissionHelper.ThrowInvalidPermission (target, typeof (DnsPermission));
-			}
-
-			return dp;
-		}
-	}
-}
+//
+// System.Net.DnsPermission.cs
+//
+// Authors:
+//	Lawrence Pit (loz@cable.a2000.nl)
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.Security;
+using System.Security.Permissions;
+
+namespace System.Net {
+
+	[Serializable]
+	public sealed class DnsPermission : CodeAccessPermission, IUnrestrictedPermission {
+
+		private const int version = 1;
+
+		// Fields
+		bool m_noRestriction;
+		
+		// Constructors
+		public DnsPermission (PermissionState state)
+			: base () 
+		{						
+			m_noRestriction = (state == PermissionState.Unrestricted);
+		}
+		
+		// Methods
+				
+		public override IPermission Copy ()
+		{
+			return new DnsPermission (m_noRestriction ? PermissionState.Unrestricted : PermissionState.None);		
+		}
+		
+		public override IPermission Intersect (IPermission target)
+		{
+			DnsPermission dp = Cast (target);
+			if (dp == null)
+				return null;
+			if (IsUnrestricted () && dp.IsUnrestricted ())
+				return new DnsPermission (PermissionState.Unrestricted);
+			return null;
+		}
+		
+		public override bool IsSubsetOf (IPermission target) 
+		{
+			DnsPermission dp = Cast (target);
+			if (dp == null)
+				return IsEmpty ();
+
+			return (dp.IsUnrestricted () || (m_noRestriction == dp.m_noRestriction));
+		}
+
+		public bool IsUnrestricted () 
+		{
+			return this.m_noRestriction;
+		}
+
+		public override SecurityElement ToXml ()
+		{
+			SecurityElement se = PermissionHelper.Element (typeof (DnsPermission), version);
+			if (m_noRestriction)
+				se.AddAttribute ("Unrestricted", "true");				
+			return se;
+		}
+		
+		public override void FromXml (SecurityElement securityElement)
+		{
+			PermissionHelper.CheckSecurityElement (securityElement, "securityElement", version, version);
+		
+			// LAMESPEC: it says to throw an ArgumentNullException in this case				
+			if (securityElement.Tag != "IPermission")
+				throw new ArgumentException ("securityElement");
+				
+			this.m_noRestriction = PermissionHelper.IsUnrestricted (securityElement);
+		}		
+		
+		public override IPermission Union (IPermission target) 
+		{
+			DnsPermission dp = Cast (target);
+			if (dp == null)
+				return Copy ();
+			if (IsUnrestricted () || dp.IsUnrestricted ())
+				return new DnsPermission (PermissionState.Unrestricted);
+			else
+				return new DnsPermission (PermissionState.None);
+		}
+
+		// Internal helpers methods
+
+		private bool IsEmpty ()
+		{
+			return !m_noRestriction;
+		}
+
+		private DnsPermission Cast (IPermission target)
+		{
+			if (target == null)
+				return null;
+
+			DnsPermission dp = (target as DnsPermission);
+			if (dp == null) {
+				PermissionHelper.ThrowInvalidPermission (target, typeof (DnsPermission));
+			}
+
+			return dp;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net/DnsPermissionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net/DnsPermissionAttribute.cs
@@ -1,60 +1,60 @@
-//
-// System.Net.DnsPermissionAttribute.cs
-//
-// Author:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Net {
-
-	[AttributeUsage (AttributeTargets.Assembly 
-	               | AttributeTargets.Class 
-	               | AttributeTargets.Struct 
-	               | AttributeTargets.Constructor 
-	               | AttributeTargets.Method, AllowMultiple = true, Inherited = false)
-	]	
-	[Serializable]
-	public sealed class DnsPermissionAttribute : CodeAccessSecurityAttribute {
-		
-		// Constructors
-
-		public DnsPermissionAttribute (SecurityAction action)
-			: base (action)
-		{
-		}
-
-		// Methods
-		
-		public override IPermission CreatePermission () 
-		{
-			return new DnsPermission (
-				this.Unrestricted ?
-				PermissionState.Unrestricted :
-				PermissionState.None);
-		}		
-	}
-}
+//
+// System.Net.DnsPermissionAttribute.cs
+//
+// Author:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Security;
+using System.Security.Permissions;
+
+namespace System.Net {
+
+	[AttributeUsage (AttributeTargets.Assembly 
+	               | AttributeTargets.Class 
+	               | AttributeTargets.Struct 
+	               | AttributeTargets.Constructor 
+	               | AttributeTargets.Method, AllowMultiple = true, Inherited = false)
+	]	
+	[Serializable]
+	public sealed class DnsPermissionAttribute : CodeAccessSecurityAttribute {
+		
+		// Constructors
+
+		public DnsPermissionAttribute (SecurityAction action)
+			: base (action)
+		{
+		}
+
+		// Methods
+		
+		public override IPermission CreatePermission () 
+		{
+			return new DnsPermission (
+				this.Unrestricted ?
+				PermissionState.Unrestricted :
+				PermissionState.None);
+		}		
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net/EndpointPermission.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net/EndpointPermission.cs
@@ -1,349 +1,349 @@
-//
-// System.Net.EndpointPermission.cs
-//
-// Author:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Net
-{
-	[Serializable]
-	public class EndpointPermission // too bad about the lowercase p, not consistent with IPEndPoint ;)
-	{
-		private static char [] dot_char = new char [] { '.' };
-		
-		// Fields
-		private string hostname;
-		private int port;
-		private TransportType transport;
-
-		private bool resolved;		
-		private bool hasWildcard;
-		private IPAddress [] addresses;
-		
-		// Constructors
-		internal EndpointPermission (string hostname, 
-				   	     int port, 
-				   	     TransportType transport) : base () 
-		{			
-			if (hostname == null)
-				throw new ArgumentNullException ("hostname");
-			this.hostname = hostname;
-			this.port = port;
-			this.transport = transport;
-			this.resolved = false;
-			this.hasWildcard = false;
-			this.addresses = null;
-		}		
-		
-		// Properties
-
-		public string Hostname {
-			get { return hostname; }
-		}
-
-		public int Port {
-			get { return port; }
-		}
-		
-		public TransportType Transport {
-			get { return transport; }
-		}
-		
-		// Methods
-		
-		public override bool Equals (object obj) 
-		{
-			EndpointPermission epp = obj as EndpointPermission;
-			return ((epp != null) &&
-			        (this.port == epp.port) &&
-			        (this.transport == epp.transport) &&
-			        (String.Compare (this.hostname, epp.hostname, true) == 0));
-		}
-		
-		public override int GetHashCode () 
-		{
-			return ToString ().GetHashCode ();
-		}
-		
-		public override string ToString () 
-		{
-			return hostname + "#" + port + "#" + (int) transport;
-		}
-		
-		// Internal & Private Methods
-		
-		internal bool IsSubsetOf (EndpointPermission perm) 
-		{
-			if (perm == null)
-				return false;
-			
-			if (perm.port != SocketPermission.AllPorts &&
-			    this.port != perm.port)
-			    	return false;
-			
-			if (perm.transport != TransportType.All &&
-			    this.transport != perm.transport)
-				return false;
-			
-			this.Resolve ();
-			perm.Resolve ();
-			
-			if (this.hasWildcard) {
-				if (perm.hasWildcard)
-					return IsSubsetOf (this.hostname, perm.hostname);
-				else 
-					return false;
-			} 
-			
-			if (this.addresses == null) 
-				return false;
-			
-			if (perm.hasWildcard) 
-				// a bit dubious... should they all be a subset or is one 
-				// enough in this case?
-				foreach (IPAddress addr in this.addresses)
-					if (IsSubsetOf (addr.ToString (), perm.hostname))
-						return true;
-				
-			if (perm.addresses == null) 
-				return false;
-				
-			// a bit dubious... should they all be a subset or is one 
-			// enough in this case?
-			foreach (IPAddress addr in perm.addresses)
-				if (IsSubsetOf (this.hostname, addr.ToString ())) 
-					return true;	
-					
-			return false;		
-		}		
-		
-		private bool IsSubsetOf (string addr1, string addr2)
-		{
-			string [] h1 = addr1.Split (dot_char);		
-			string [] h2 = addr2.Split (dot_char);
-				
-			for (int i = 0; i < 4; i++) {
-				int part1 = ToNumber (h1 [i]);
-				if (part1 == -1) 
-					return false;				
-
-				int part2 = ToNumber (h2 [i]);
-				if (part2 == -1)
-					return false;				
-				if (part1 == 256)
-					continue;
-				if (part1 != part2 && part2 != 256)
-					return false;
-			}
-			return true;
-		}
-		
-		internal EndpointPermission Intersect (EndpointPermission perm) 
-		{
-			if (perm == null)
-				return null;
-			
-			int _port;
-			if (this.port == perm.port)
-				_port = this.port;
-			else if (this.port == SocketPermission.AllPorts)
-				_port = perm.port;
-			else if (perm.port == SocketPermission.AllPorts)
-				_port = this.port;
-			else
-				return null;
-
-			TransportType _transport;
-			if (this.transport == perm.transport)
-				_transport = this.transport;
-			else if (this.transport == TransportType.All)
-				_transport = perm.transport;
-			else if (perm.transport == TransportType.All)
-				_transport = this.transport;
-			else
-				return null;
-
-			string _hostname = IntersectHostname (perm);						
-			
-			if (_hostname == null)
-				return null;
-
-			if (!this.hasWildcard)
-				return this;
-				
-			if (!perm.hasWildcard)
-				return perm;
-				
-			EndpointPermission newperm = new EndpointPermission (_hostname, _port, _transport);
-			newperm.hasWildcard = true;
-			newperm.resolved = true;
-			return newperm;
-		}
-		
-		private string IntersectHostname (EndpointPermission perm)
-		{
-			if (this.hostname == perm.hostname)
-				return this.hostname;
-				
-			this.Resolve ();
-			perm.Resolve ();
-			
-			string _hostname = null;
-			
-			if (this.hasWildcard) {
-				if (perm.hasWildcard) {
-					_hostname = Intersect (this.hostname, perm.hostname);
-				} else if (perm.addresses != null) {
-					for (int j = 0; j < perm.addresses.Length; j++) {
-						_hostname = Intersect (this.hostname, perm.addresses [j].ToString ());
-						if (_hostname != null) 
-							break;
-					}
-				}
-			} else if (this.addresses != null) {
-				for (int i = 0; i < this.addresses.Length; i++) {
-					string thisaddr = this.addresses [i].ToString ();
-					if (perm.hasWildcard) {
-						_hostname = Intersect (thisaddr, perm.hostname);
-					} else if (perm.addresses != null) {
-						for (int j = 0; j < perm.addresses.Length; j++) {
-							_hostname = Intersect (thisaddr, perm.addresses [j].ToString ());
-							if (_hostname != null) 
-								break;
-						}
-					}
-				}
-			}
-			
-			return _hostname;
-		}
-		
-		// alas, currently we'll only support IPv4 as that's MS.Net behaviour
-		// returns null when both host strings do not intersect
-		private string Intersect (string addr1, string addr2)
-		{
-			string [] h1 = addr1.Split (dot_char);		
-			string [] h2 = addr2.Split (dot_char);
-				
-			string [] s = new string [7];
-			for (int i = 0; i < 4; i++) {
-				int part1 = ToNumber (h1 [i]);
-				if (part1 == -1) 
-					return null;				
-
-				int part2 = ToNumber (h2 [i]);
-				if (part2 == -1)
-					return null;				
-
-				if (part1 == 256) 
-					s [i << 1] = (part2 == 256) ? "*" : String.Empty + part2;
-				else if (part2 == 256)
-					s [i << 1] = (part1 == 256) ? "*" : String.Empty + part1;				
-				else if (part1 == part2)
-					s [i << 1] = String.Empty + part1;
-				else
-					return null;
-			}
-			
-			s [1] = s [3] = s [5] = ".";
-			return String.Concat (s);
-		}
-		
-		// returns 256 if value is a '*' character
-		// returns -1 if value isn't a number between 0 and 255		
-		private int ToNumber (string value)
-		{
-			if (value == "*")
-				return 256;
-				
-			int len = value.Length;
-			if (len < 1 || len > 3)
-				return -1;
-				
-			int val = 0;				
-			for (int i = 0; i < len; i++) {
-				char c = value [i];
-				if ('0' <= c && c <= '9') 
-					val = checked (val * 10 + (c - '0'));
-				else
-					return -1;
-			}
-			
-			return val <= 255 ? val : -1;
-		}
-
-		internal void Resolve ()
-		{
-			if (resolved) 	
-				return;
-				
-			bool isHostname = false;				
-			bool hasWildcard = false;
-			this.addresses = null;
-			
-			string [] s = hostname.Split (dot_char);
-
-			if (s.Length != 4) {
-				isHostname = true;
-			} else {
-				for (int i = 0; i < 4; i++) {
-					int quad = ToNumber (s [i]);
-					if (quad == -1) {
-						isHostname = true;
-						break;
-					}
-					if (quad == 256)
-						hasWildcard = true;
-				}
-			}
-			
-			if (isHostname) {
-				this.hasWildcard = false;
-				try {
-					this.addresses = Dns.GetHostAddresses (hostname);
-				} catch (System.Net.Sockets.SocketException) {					
-				}
-			} else {
-				this.hasWildcard = hasWildcard;
-				if (!hasWildcard) {
-					addresses = new IPAddress [1];
-					addresses [0] = IPAddress.Parse (hostname);
-				}
-			}
-			
-			this.resolved = true;				
-		}
-		
-		internal void UndoResolve ()
-		{
-			resolved = false;
-		}
-	}
-}
+//
+// System.Net.EndpointPermission.cs
+//
+// Author:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Security;
+using System.Security.Permissions;
+
+namespace System.Net
+{
+	[Serializable]
+	public class EndpointPermission // too bad about the lowercase p, not consistent with IPEndPoint ;)
+	{
+		private static char [] dot_char = new char [] { '.' };
+		
+		// Fields
+		private string hostname;
+		private int port;
+		private TransportType transport;
+
+		private bool resolved;		
+		private bool hasWildcard;
+		private IPAddress [] addresses;
+		
+		// Constructors
+		internal EndpointPermission (string hostname, 
+				   	     int port, 
+				   	     TransportType transport) : base () 
+		{			
+			if (hostname == null)
+				throw new ArgumentNullException ("hostname");
+			this.hostname = hostname;
+			this.port = port;
+			this.transport = transport;
+			this.resolved = false;
+			this.hasWildcard = false;
+			this.addresses = null;
+		}		
+		
+		// Properties
+
+		public string Hostname {
+			get { return hostname; }
+		}
+
+		public int Port {
+			get { return port; }
+		}
+		
+		public TransportType Transport {
+			get { return transport; }
+		}
+		
+		// Methods
+		
+		public override bool Equals (object obj) 
+		{
+			EndpointPermission epp = obj as EndpointPermission;
+			return ((epp != null) &&
+			        (this.port == epp.port) &&
+			        (this.transport == epp.transport) &&
+			        (String.Compare (this.hostname, epp.hostname, true) == 0));
+		}
+		
+		public override int GetHashCode () 
+		{
+			return ToString ().GetHashCode ();
+		}
+		
+		public override string ToString () 
+		{
+			return hostname + "#" + port + "#" + (int) transport;
+		}
+		
+		// Internal & Private Methods
+		
+		internal bool IsSubsetOf (EndpointPermission perm) 
+		{
+			if (perm == null)
+				return false;
+			
+			if (perm.port != SocketPermission.AllPorts &&
+			    this.port != perm.port)
+			    	return false;
+			
+			if (perm.transport != TransportType.All &&
+			    this.transport != perm.transport)
+				return false;
+			
+			this.Resolve ();
+			perm.Resolve ();
+			
+			if (this.hasWildcard) {
+				if (perm.hasWildcard)
+					return IsSubsetOf (this.hostname, perm.hostname);
+				else 
+					return false;
+			} 
+			
+			if (this.addresses == null) 
+				return false;
+			
+			if (perm.hasWildcard) 
+				// a bit dubious... should they all be a subset or is one 
+				// enough in this case?
+				foreach (IPAddress addr in this.addresses)
+					if (IsSubsetOf (addr.ToString (), perm.hostname))
+						return true;
+				
+			if (perm.addresses == null) 
+				return false;
+				
+			// a bit dubious... should they all be a subset or is one 
+			// enough in this case?
+			foreach (IPAddress addr in perm.addresses)
+				if (IsSubsetOf (this.hostname, addr.ToString ())) 
+					return true;	
+					
+			return false;		
+		}		
+		
+		private bool IsSubsetOf (string addr1, string addr2)
+		{
+			string [] h1 = addr1.Split (dot_char);		
+			string [] h2 = addr2.Split (dot_char);
+				
+			for (int i = 0; i < 4; i++) {
+				int part1 = ToNumber (h1 [i]);
+				if (part1 == -1) 
+					return false;				
+
+				int part2 = ToNumber (h2 [i]);
+				if (part2 == -1)
+					return false;				
+				if (part1 == 256)
+					continue;
+				if (part1 != part2 && part2 != 256)
+					return false;
+			}
+			return true;
+		}
+		
+		internal EndpointPermission Intersect (EndpointPermission perm) 
+		{
+			if (perm == null)
+				return null;
+			
+			int _port;
+			if (this.port == perm.port)
+				_port = this.port;
+			else if (this.port == SocketPermission.AllPorts)
+				_port = perm.port;
+			else if (perm.port == SocketPermission.AllPorts)
+				_port = this.port;
+			else
+				return null;
+
+			TransportType _transport;
+			if (this.transport == perm.transport)
+				_transport = this.transport;
+			else if (this.transport == TransportType.All)
+				_transport = perm.transport;
+			else if (perm.transport == TransportType.All)
+				_transport = this.transport;
+			else
+				return null;
+
+			string _hostname = IntersectHostname (perm);						
+			
+			if (_hostname == null)
+				return null;
+
+			if (!this.hasWildcard)
+				return this;
+				
+			if (!perm.hasWildcard)
+				return perm;
+				
+			EndpointPermission newperm = new EndpointPermission (_hostname, _port, _transport);
+			newperm.hasWildcard = true;
+			newperm.resolved = true;
+			return newperm;
+		}
+		
+		private string IntersectHostname (EndpointPermission perm)
+		{
+			if (this.hostname == perm.hostname)
+				return this.hostname;
+				
+			this.Resolve ();
+			perm.Resolve ();
+			
+			string _hostname = null;
+			
+			if (this.hasWildcard) {
+				if (perm.hasWildcard) {
+					_hostname = Intersect (this.hostname, perm.hostname);
+				} else if (perm.addresses != null) {
+					for (int j = 0; j < perm.addresses.Length; j++) {
+						_hostname = Intersect (this.hostname, perm.addresses [j].ToString ());
+						if (_hostname != null) 
+							break;
+					}
+				}
+			} else if (this.addresses != null) {
+				for (int i = 0; i < this.addresses.Length; i++) {
+					string thisaddr = this.addresses [i].ToString ();
+					if (perm.hasWildcard) {
+						_hostname = Intersect (thisaddr, perm.hostname);
+					} else if (perm.addresses != null) {
+						for (int j = 0; j < perm.addresses.Length; j++) {
+							_hostname = Intersect (thisaddr, perm.addresses [j].ToString ());
+							if (_hostname != null) 
+								break;
+						}
+					}
+				}
+			}
+			
+			return _hostname;
+		}
+		
+		// alas, currently we'll only support IPv4 as that's MS.Net behaviour
+		// returns null when both host strings do not intersect
+		private string Intersect (string addr1, string addr2)
+		{
+			string [] h1 = addr1.Split (dot_char);		
+			string [] h2 = addr2.Split (dot_char);
+				
+			string [] s = new string [7];
+			for (int i = 0; i < 4; i++) {
+				int part1 = ToNumber (h1 [i]);
+				if (part1 == -1) 
+					return null;				
+
+				int part2 = ToNumber (h2 [i]);
+				if (part2 == -1)
+					return null;				
+
+				if (part1 == 256) 
+					s [i << 1] = (part2 == 256) ? "*" : String.Empty + part2;
+				else if (part2 == 256)
+					s [i << 1] = (part1 == 256) ? "*" : String.Empty + part1;				
+				else if (part1 == part2)
+					s [i << 1] = String.Empty + part1;
+				else
+					return null;
+			}
+			
+			s [1] = s [3] = s [5] = ".";
+			return String.Concat (s);
+		}
+		
+		// returns 256 if value is a '*' character
+		// returns -1 if value isn't a number between 0 and 255		
+		private int ToNumber (string value)
+		{
+			if (value == "*")
+				return 256;
+				
+			int len = value.Length;
+			if (len < 1 || len > 3)
+				return -1;
+				
+			int val = 0;				
+			for (int i = 0; i < len; i++) {
+				char c = value [i];
+				if ('0' <= c && c <= '9') 
+					val = checked (val * 10 + (c - '0'));
+				else
+					return -1;
+			}
+			
+			return val <= 255 ? val : -1;
+		}
+
+		internal void Resolve ()
+		{
+			if (resolved) 	
+				return;
+				
+			bool isHostname = false;				
+			bool hasWildcard = false;
+			this.addresses = null;
+			
+			string [] s = hostname.Split (dot_char);
+
+			if (s.Length != 4) {
+				isHostname = true;
+			} else {
+				for (int i = 0; i < 4; i++) {
+					int quad = ToNumber (s [i]);
+					if (quad == -1) {
+						isHostname = true;
+						break;
+					}
+					if (quad == 256)
+						hasWildcard = true;
+				}
+			}
+			
+			if (isHostname) {
+				this.hasWildcard = false;
+				try {
+					this.addresses = Dns.GetHostAddresses (hostname);
+				} catch (System.Net.Sockets.SocketException) {					
+				}
+			} else {
+				this.hasWildcard = hasWildcard;
+				if (!hasWildcard) {
+					addresses = new IPAddress [1];
+					addresses [0] = IPAddress.Parse (hostname);
+				}
+			}
+			
+			this.resolved = true;				
+		}
+		
+		internal void UndoResolve ()
+		{
+			resolved = false;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net/FtpStatus.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net/FtpStatus.cs
@@ -1,51 +1,51 @@
-// System.Net.FtpStatus.cs
-//
-// Authors:
-//    David Elkind (davide@mainsoft.com)
-//
-// Copyright (C) 2006 Mainsoft Corp.
-//    http://www.mainsoft.com
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace System.Net
-{
-	internal class FtpStatus
-	{
-		readonly FtpStatusCode statusCode;
-		readonly string statusDescription;
-
-		public FtpStatus (FtpStatusCode statusCode, string statusDescription) {
-			this.statusCode = statusCode;
-			this.statusDescription = statusDescription;
-		}
-
-		public FtpStatusCode StatusCode {
-			get { return statusCode; }
-		}
-
-		public string StatusDescription {
-			get { return statusDescription; }
-		}
-	}
-}
+// System.Net.FtpStatus.cs
+//
+// Authors:
+//    David Elkind (davide@mainsoft.com)
+//
+// Copyright (C) 2006 Mainsoft Corp.
+//    http://www.mainsoft.com
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace System.Net
+{
+	internal class FtpStatus
+	{
+		readonly FtpStatusCode statusCode;
+		readonly string statusDescription;
+
+		public FtpStatus (FtpStatusCode statusCode, string statusDescription) {
+			this.statusCode = statusCode;
+			this.statusDescription = statusDescription;
+		}
+
+		public FtpStatusCode StatusCode {
+			get { return statusCode; }
+		}
+
+		public string StatusDescription {
+			get { return statusDescription; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net/IPv6Address.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net/IPv6Address.cs
@@ -1,148 +1,148 @@
-//
-// System.Net.IPv6AddressFormatter.cs
-//
-// Author:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Globalization;
-using System.Text;
-
-namespace System.Net {
-
-	struct IPv6AddressFormatter
-	{
-		ushort [] address;
-		long scopeId;
-
-		public IPv6AddressFormatter (ushort[] addr, long scopeId)
-		{
-			this.address = addr;
-			this.scopeId = scopeId;
-		}
-
-		static ushort SwapUShort (ushort number)
-		{
-			return (ushort) ( ((number >> 8) & 0xFF) + ((number << 8) & 0xFF00) );
-		}
-
-		// Convert the address into a format expected by the IPAddress (long) ctor
-		// This needs to be unsigned to satisfy the '> 1' test in IsIPv4Compatible()
-		uint AsIPv4Int ()
-		{
-			return (uint)(SwapUShort (address [7]) << 16) + SwapUShort (address [6]);
-		}			
-
-		bool IsIPv4Compatible ()
-		{
-			for (int i = 0; i < 6; i++) 
-				if (address [i] != 0)
-					return false;
-			/* MS .net only seems to format the last 4
-			 * bytes as an IPv4 address if address[6] is
-			 * non-zero
-			 */
-			if (address[6] == 0)
-				return false;
-			return (AsIPv4Int () > 1);
-		}
-		
-		bool IsIPv4Mapped ()
-		{
-			for (int i = 0; i < 5; i++) 
-				if (address [i] != 0)
-					return false;
-			/* MS .net only seems to format the last 4
-			 * bytes as an IPv4 address if address[6] is
-			 * non-zero
-			 */
-			if (address[6] == 0)
-				return false;
-			
-			return address [5] == 0xffff;
-		}
-		
-		public override string ToString ()
-		{
-			StringBuilder s = new StringBuilder ();
-
-
-			if(IsIPv4Compatible() || IsIPv4Mapped())
-			{
-				s.Append("::");
-
-				if(IsIPv4Mapped())
-					s.Append("ffff:");
-
-				s.Append(new IPAddress( AsIPv4Int ()).ToString ());
-
-				return s.ToString ();
-			}
-			
-			int bestChStart = -1; // Best chain start
-			int bestChLen = 0; // Best chain length
-			int currChLen = 0; // Current chain length
-
-			// Looks for the longest zero chain
-			for (int i=0; i<8; i++)
-			{
-				if (address[i] != 0)
-				{
-					if ((currChLen > bestChLen) 
-						&& (currChLen > 1))
-					{
-						bestChLen = currChLen;
-						bestChStart = i - currChLen;
-					}
-					currChLen = 0;
-				}
-				else
-					currChLen++;
-			}
-			if ((currChLen > bestChLen) 
-				&& (currChLen > 1))
-			{
-				bestChLen = currChLen;
-				bestChStart = 8 - currChLen;
-			}
-
-			// makes the string
-			if (bestChStart == 0)
-				s.Append(":");
-			for (int i=0; i<8; i++)
-			{
-				if (i == bestChStart)
-				{
-					s.Append (":");
-					i += (bestChLen - 1);
-					continue;
-				}
-				s.AppendFormat("{0:x}", address [i]);
-				if (i < 7) s.Append (':');
-			}
-			
-			if (scopeId != 0)
-				s.Append ('%').Append (scopeId);
-			return s.ToString ();
-		}
-	}
-}
+//
+// System.Net.IPv6AddressFormatter.cs
+//
+// Author:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Globalization;
+using System.Text;
+
+namespace System.Net {
+
+	struct IPv6AddressFormatter
+	{
+		ushort [] address;
+		long scopeId;
+
+		public IPv6AddressFormatter (ushort[] addr, long scopeId)
+		{
+			this.address = addr;
+			this.scopeId = scopeId;
+		}
+
+		static ushort SwapUShort (ushort number)
+		{
+			return (ushort) ( ((number >> 8) & 0xFF) + ((number << 8) & 0xFF00) );
+		}
+
+		// Convert the address into a format expected by the IPAddress (long) ctor
+		// This needs to be unsigned to satisfy the '> 1' test in IsIPv4Compatible()
+		uint AsIPv4Int ()
+		{
+			return (uint)(SwapUShort (address [7]) << 16) + SwapUShort (address [6]);
+		}			
+
+		bool IsIPv4Compatible ()
+		{
+			for (int i = 0; i < 6; i++) 
+				if (address [i] != 0)
+					return false;
+			/* MS .net only seems to format the last 4
+			 * bytes as an IPv4 address if address[6] is
+			 * non-zero
+			 */
+			if (address[6] == 0)
+				return false;
+			return (AsIPv4Int () > 1);
+		}
+		
+		bool IsIPv4Mapped ()
+		{
+			for (int i = 0; i < 5; i++) 
+				if (address [i] != 0)
+					return false;
+			/* MS .net only seems to format the last 4
+			 * bytes as an IPv4 address if address[6] is
+			 * non-zero
+			 */
+			if (address[6] == 0)
+				return false;
+			
+			return address [5] == 0xffff;
+		}
+		
+		public override string ToString ()
+		{
+			StringBuilder s = new StringBuilder ();
+
+
+			if(IsIPv4Compatible() || IsIPv4Mapped())
+			{
+				s.Append("::");
+
+				if(IsIPv4Mapped())
+					s.Append("ffff:");
+
+				s.Append(new IPAddress( AsIPv4Int ()).ToString ());
+
+				return s.ToString ();
+			}
+			
+			int bestChStart = -1; // Best chain start
+			int bestChLen = 0; // Best chain length
+			int currChLen = 0; // Current chain length
+
+			// Looks for the longest zero chain
+			for (int i=0; i<8; i++)
+			{
+				if (address[i] != 0)
+				{
+					if ((currChLen > bestChLen) 
+						&& (currChLen > 1))
+					{
+						bestChLen = currChLen;
+						bestChStart = i - currChLen;
+					}
+					currChLen = 0;
+				}
+				else
+					currChLen++;
+			}
+			if ((currChLen > bestChLen) 
+				&& (currChLen > 1))
+			{
+				bestChLen = currChLen;
+				bestChStart = 8 - currChLen;
+			}
+
+			// makes the string
+			if (bestChStart == 0)
+				s.Append(":");
+			for (int i=0; i<8; i++)
+			{
+				if (i == bestChStart)
+				{
+					s.Append (":");
+					i += (bestChLen - 1);
+					continue;
+				}
+				s.AppendFormat("{0:x}", address [i]);
+				if (i < 7) s.Append (':');
+			}
+			
+			if (scopeId != 0)
+				s.Append ('%').Append (scopeId);
+			return s.ToString ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net/MonoHttpDate.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net/MonoHttpDate.cs
@@ -1,53 +1,53 @@
-//
-// System.Net.MonoHttpDate
-//
-// Author:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-
-namespace System.Net 
-{
-	/// <summary>
-	/// See RFC 2068 3.3.1
-	/// </summary>
-	internal class MonoHttpDate
-	{
-		private static readonly string rfc1123_date = "r";
-		private static readonly string rfc850_date = "dddd, dd-MMM-yy HH:mm:ss G\\MT";
-		private static readonly string asctime_date = "ddd MMM d HH:mm:ss yyyy";
-		private static readonly string [] formats = 
-			new string [] {rfc1123_date, rfc850_date, asctime_date};
-		
-		internal static DateTime Parse (string dateStr)
-		{			
-			 return DateTime.ParseExact (dateStr, 
-			                             formats, 
-			                             CultureInfo.InvariantCulture, 
-			                             DateTimeStyles.AllowWhiteSpaces).ToLocalTime ();
-		}
-	}
-}
+//
+// System.Net.MonoHttpDate
+//
+// Author:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Globalization;
+
+namespace System.Net 
+{
+	/// <summary>
+	/// See RFC 2068 3.3.1
+	/// </summary>
+	internal class MonoHttpDate
+	{
+		private static readonly string rfc1123_date = "r";
+		private static readonly string rfc850_date = "dddd, dd-MMM-yy HH:mm:ss G\\MT";
+		private static readonly string asctime_date = "ddd MMM d HH:mm:ss yyyy";
+		private static readonly string [] formats = 
+			new string [] {rfc1123_date, rfc850_date, asctime_date};
+		
+		internal static DateTime Parse (string dateStr)
+		{			
+			 return DateTime.ParseExact (dateStr, 
+			                             formats, 
+			                             CultureInfo.InvariantCulture, 
+			                             DateTimeStyles.AllowWhiteSpaces).ToLocalTime ();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/System.Net/SocketPermission.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/System.Net/SocketPermission.cs
@@ -1,354 +1,354 @@
-//
-// System.Net.SocketPermission.cs
-//
-// Author:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Collections;
-using System.Security;
-using System.Security.Permissions;
-
-namespace System.Net {
-
-	[Serializable]
-	public sealed class SocketPermission : CodeAccessPermission, IUnrestrictedPermission
-	{
-		// Fields
-		ArrayList m_acceptList = new ArrayList ();
-		ArrayList m_connectList = new ArrayList ();
-		bool m_noRestriction;
-		
-		// Constructors
-		public SocketPermission (PermissionState state) : base () 
-		{						
-			m_noRestriction = (state == PermissionState.Unrestricted);
-		}
-		
-		public SocketPermission (NetworkAccess access, TransportType transport, 
-					 string hostName, int portNumber) : base () 
-		{
-			m_noRestriction = false;
-			AddPermission (access, transport, hostName, portNumber);
-		}	
-		
-		// Fields
-		public const int AllPorts = -1;
-		
-		// Properties
-
-		public IEnumerator AcceptList {
-			get { return m_acceptList.GetEnumerator (); }
-		}
-
-		public IEnumerator ConnectList {
-			get { return m_connectList.GetEnumerator (); }
-		}
-		
-		// Methods
-		
-		public void AddPermission (NetworkAccess access, TransportType transport,
-					   string hostName, int portNumber)
-		{
-			if (m_noRestriction)
-				return;
-				
-			EndpointPermission permission = new EndpointPermission (hostName, portNumber, transport);
-
-			if (access == NetworkAccess.Accept)
-				m_acceptList.Add (permission);
-			else
-				m_connectList.Add (permission);
-		}		
-		
-		public override IPermission Copy ()
-		{
-			SocketPermission permission;
-
-			permission = new SocketPermission (m_noRestriction ? 
-						PermissionState.Unrestricted : 
-						PermissionState.None);
-
-			// as EndpointPermission's are immutable it's safe to do a shallow copy.						
-			permission.m_connectList = (ArrayList) this.m_connectList.Clone ();
-			permission.m_acceptList = (ArrayList) this.m_acceptList.Clone ();
-
-			return permission;		
-		}
-		
-		public override IPermission Intersect (IPermission target)
-		{
-			if (target == null) 
-				return null;
-				
-			SocketPermission perm = target as SocketPermission;
-			if (perm == null) 
-				throw new ArgumentException ("Argument not of type SocketPermission");
-			
-			if (m_noRestriction) 
-				return IntersectEmpty (perm) ? null : perm.Copy ();
-				
-			if (perm.m_noRestriction)
-				return IntersectEmpty (this) ? null : this.Copy ();
-				
-			SocketPermission newperm = new SocketPermission (PermissionState.None);
-			Intersect (this.m_connectList, perm.m_connectList, newperm.m_connectList);
-			Intersect (this.m_acceptList, perm.m_acceptList, newperm.m_acceptList);
-			return IntersectEmpty (newperm) ? null : newperm;			
-		}
-		
-		private bool IntersectEmpty (SocketPermission permission)		
-		{
-			return !permission.m_noRestriction && 
-			       (permission.m_connectList.Count == 0) &&
-			       (permission.m_acceptList.Count == 0);
-		}
-		
-		private void Intersect (ArrayList list1, ArrayList list2, ArrayList result)
-		{
-			foreach (EndpointPermission perm1 in list1) {
-				foreach (EndpointPermission perm2 in list2) {
-					EndpointPermission perm = perm1.Intersect (perm2);
-					if (perm != null) {
-						// instead of the below it's also okay to simply do:
-						//     result.Add (perm);
-						// below is only done to avoid double entries						
-						bool replaced = false;
-						for (int i = 0; i < result.Count; i++) {
-							EndpointPermission res = (EndpointPermission) result [i];
-							EndpointPermission resperm = perm.Intersect (res);
-							if (resperm != null) {
-								result [i] = resperm;
-								replaced = true;
-								break;
-							}
-						}
-						if (!replaced) 
-							result.Add (perm);
-					}
-				}
-			}
-		}
-		
-		public override bool IsSubsetOf (IPermission target) 
-		{
-			if (target == null)
-				return (!m_noRestriction && m_connectList.Count == 0 && m_acceptList.Count ==	 0);
-			
-			SocketPermission perm = target as SocketPermission;
-
-			if (perm == null) 
-				throw new ArgumentException ("Parameter target must be of type SocketPermission");
-			
-			if (perm.m_noRestriction) 
-				return true;
-
-			if (this.m_noRestriction)
-				return false;
-
-			if (this.m_acceptList.Count == 0 && this.m_connectList.Count == 0)
-				return true;
-
-			if (perm.m_acceptList.Count == 0 && perm.m_connectList.Count == 0)
-				return false;
-
-			return IsSubsetOf (this.m_connectList, perm.m_connectList)
-			    && IsSubsetOf (this.m_acceptList, perm.m_acceptList);
-		}
-
-		private bool IsSubsetOf (ArrayList list1, ArrayList list2)
-		{
-			foreach (EndpointPermission perm1 in list1) {
-				bool issubset = false;
-				foreach (EndpointPermission perm2 in list2) 
-					if (perm1.IsSubsetOf (perm2)) {
-						issubset = true;
-						break;
-					}
-				if (!issubset) 
-					return false;
-			}
-			return true;
-		}
-		
-		public bool IsUnrestricted () 
-		{
-			return m_noRestriction;
-		}
-
-		/*
-		
-		SocketPermission s = new SocketPermission (NetworkAccess.Connect, TransportType.Tcp, "www.google.com", 80);
-		s.AddPermission (NetworkAccess.Accept, TransportType.All, "localhost", 8080);
-		s.AddPermission (NetworkAccess.Accept, TransportType.All, "localhost", SocketPermission.AllPorts);
-		// s = new SocketPermission (PermissionState.None);
-		SecurityElement sec = s.ToXml ();	
-		Console.WriteLine (sec.ToString ());
-
-		This is sample xml output:
-
-		<IPermission class="System.Net.SocketPermission, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-			     version="1">
-		   <ConnectAccess>
-		      <ENDPOINT host="www.google.com"
-				transport="Tcp"
-				port="80"/>
-		   </ConnectAccess>
-		   <AcceptAccess>
-		      <ENDPOINT host="localhost"
-				transport="All"
-				port="8080"/>
-		      <ENDPOINT host="localhost"
-				transport="All"
-				port="All"/>
-		   </AcceptAccess>
-		</IPermission>
-
-
-
-		This is a sample unrestricted socketpermission, no matter how many permissions you add:			
-
-		<IPermission class="System.Net.SocketPermission, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-			     version="1"
-			     Unrestricted="true"/>
-
-
-		This is a sample constructed restricted socketpermission with no permissions added:
-
-		<IPermission class="System.Net.SocketPermission, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
-			     version="1"/>
-		*/
-		public override SecurityElement ToXml ()
-		{
-             
-			SecurityElement root = new SecurityElement ("IPermission");
-
-			root.AddAttribute ("class", this.GetType ().AssemblyQualifiedName);
-			root.AddAttribute ("version", "1");
-			if (m_noRestriction) {
-				root.AddAttribute ("Unrestricted", "true");				
-				return root;
-			}				
-				
-			if (this.m_connectList.Count > 0)
-				ToXml (root, "ConnectAccess", m_connectList.GetEnumerator ());
-			
-			if (this.m_acceptList.Count > 0) 
-				ToXml (root, "AcceptAccess", m_acceptList.GetEnumerator ());			
-			
-			return root;
-		}
-		
-		private void ToXml (SecurityElement root, string childName, IEnumerator enumerator)
-		{
-			SecurityElement child = new SecurityElement (childName);
-			while (enumerator.MoveNext ()) {
-				EndpointPermission perm = enumerator.Current as EndpointPermission;
-				SecurityElement grandchild = new SecurityElement ("ENDPOINT");
-				grandchild.AddAttribute ("host", perm.Hostname);
-				grandchild.AddAttribute ("transport", perm.Transport.ToString ());
-				grandchild.AddAttribute ("port", 
-						perm.Port == AllPorts 
-						? "All" 
-						: ((Int32) perm.Port).ToString ());
-				child.AddChild (grandchild);
-			}
-			root.AddChild (child);
-		}
-		
-		public override void FromXml (SecurityElement securityElement)
-		{
-			if (securityElement == null)
-				throw new ArgumentNullException ("securityElement");
-				
-			// LAMESPEC: it says to throw an ArgumentNullException in this case				
-			if (securityElement.Tag != "IPermission")
-				throw new ArgumentException ("securityElement");
-				
-			string unrestricted = securityElement.Attribute ("Unrestricted");
-			if (unrestricted != null) {
-				this.m_noRestriction = (String.Compare (unrestricted, "true", true) == 0);
-				if (this.m_noRestriction)
-					return;
-			}
-			
-			this.m_noRestriction = false;
-			this.m_connectList = new ArrayList ();
-			this.m_acceptList = new ArrayList ();
-			
-			ArrayList children = securityElement.Children;
-			foreach (SecurityElement child in children) {
-				if (child.Tag == "ConnectAccess") 
-					FromXml (child.Children, NetworkAccess.Connect);
-				else if (child.Tag == "AcceptAccess")
-					FromXml (child.Children, NetworkAccess.Accept);
-			}
-		}		
-		
-		private void FromXml (ArrayList endpoints, NetworkAccess access)
-		{
-			foreach (SecurityElement endpoint in endpoints) {
-				if (endpoint.Tag != "ENDPOINT")
-					continue;
-				string hostname = endpoint.Attribute ("host");
-				TransportType transport = 
-					(TransportType) Enum.Parse (typeof (TransportType), 
-							            endpoint.Attribute ("transport"), 
-							            true);
-				string p = endpoint.Attribute ("port");
-				int port = 0;
-				if (p == "All") 
-					port = SocketPermission.AllPorts;
-				else
-					port = Int32.Parse (p);
-
-				AddPermission (access, transport, hostname, port);
-			}
-		}
-		
-		public override IPermission Union (IPermission target) 
-		{
-			// LAMESPEC: according to spec we should throw an 
-			// exception when target is null. We'll follow the
-			// behaviour of MS.Net instead of the spec, also
-			// because it matches the Intersect behaviour.
-			if (target == null)
-				return null;
-				// throw new ArgumentNullException ("target");
-				
-			SocketPermission perm = target as SocketPermission;
-			if (perm == null)
-				throw new ArgumentException ("Argument not of type SocketPermission");
-			
-			if (this.m_noRestriction || perm.m_noRestriction) 
-				return new SocketPermission (PermissionState.Unrestricted);
-				
-			SocketPermission copy = (SocketPermission) perm.Copy ();
-			copy.m_acceptList.InsertRange (copy.m_acceptList.Count, this.m_acceptList);
-			copy.m_connectList.InsertRange (copy.m_connectList.Count, this.m_connectList);				
-			
-			return copy;
-		}
-	}
-}
+//
+// System.Net.SocketPermission.cs
+//
+// Author:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Collections;
+using System.Security;
+using System.Security.Permissions;
+
+namespace System.Net {
+
+	[Serializable]
+	public sealed class SocketPermission : CodeAccessPermission, IUnrestrictedPermission
+	{
+		// Fields
+		ArrayList m_acceptList = new ArrayList ();
+		ArrayList m_connectList = new ArrayList ();
+		bool m_noRestriction;
+		
+		// Constructors
+		public SocketPermission (PermissionState state) : base () 
+		{						
+			m_noRestriction = (state == PermissionState.Unrestricted);
+		}
+		
+		public SocketPermission (NetworkAccess access, TransportType transport, 
+					 string hostName, int portNumber) : base () 
+		{
+			m_noRestriction = false;
+			AddPermission (access, transport, hostName, portNumber);
+		}	
+		
+		// Fields
+		public const int AllPorts = -1;
+		
+		// Properties
+
+		public IEnumerator AcceptList {
+			get { return m_acceptList.GetEnumerator (); }
+		}
+
+		public IEnumerator ConnectList {
+			get { return m_connectList.GetEnumerator (); }
+		}
+		
+		// Methods
+		
+		public void AddPermission (NetworkAccess access, TransportType transport,
+					   string hostName, int portNumber)
+		{
+			if (m_noRestriction)
+				return;
+				
+			EndpointPermission permission = new EndpointPermission (hostName, portNumber, transport);
+
+			if (access == NetworkAccess.Accept)
+				m_acceptList.Add (permission);
+			else
+				m_connectList.Add (permission);
+		}		
+		
+		public override IPermission Copy ()
+		{
+			SocketPermission permission;
+
+			permission = new SocketPermission (m_noRestriction ? 
+						PermissionState.Unrestricted : 
+						PermissionState.None);
+
+			// as EndpointPermission's are immutable it's safe to do a shallow copy.						
+			permission.m_connectList = (ArrayList) this.m_connectList.Clone ();
+			permission.m_acceptList = (ArrayList) this.m_acceptList.Clone ();
+
+			return permission;		
+		}
+		
+		public override IPermission Intersect (IPermission target)
+		{
+			if (target == null) 
+				return null;
+				
+			SocketPermission perm = target as SocketPermission;
+			if (perm == null) 
+				throw new ArgumentException ("Argument not of type SocketPermission");
+			
+			if (m_noRestriction) 
+				return IntersectEmpty (perm) ? null : perm.Copy ();
+				
+			if (perm.m_noRestriction)
+				return IntersectEmpty (this) ? null : this.Copy ();
+				
+			SocketPermission newperm = new SocketPermission (PermissionState.None);
+			Intersect (this.m_connectList, perm.m_connectList, newperm.m_connectList);
+			Intersect (this.m_acceptList, perm.m_acceptList, newperm.m_acceptList);
+			return IntersectEmpty (newperm) ? null : newperm;			
+		}
+		
+		private bool IntersectEmpty (SocketPermission permission)		
+		{
+			return !permission.m_noRestriction && 
+			       (permission.m_connectList.Count == 0) &&
+			       (permission.m_acceptList.Count == 0);
+		}
+		
+		private void Intersect (ArrayList list1, ArrayList list2, ArrayList result)
+		{
+			foreach (EndpointPermission perm1 in list1) {
+				foreach (EndpointPermission perm2 in list2) {
+					EndpointPermission perm = perm1.Intersect (perm2);
+					if (perm != null) {
+						// instead of the below it's also okay to simply do:
+						//     result.Add (perm);
+						// below is only done to avoid double entries						
+						bool replaced = false;
+						for (int i = 0; i < result.Count; i++) {
+							EndpointPermission res = (EndpointPermission) result [i];
+							EndpointPermission resperm = perm.Intersect (res);
+							if (resperm != null) {
+								result [i] = resperm;
+								replaced = true;
+								break;
+							}
+						}
+						if (!replaced) 
+							result.Add (perm);
+					}
+				}
+			}
+		}
+		
+		public override bool IsSubsetOf (IPermission target) 
+		{
+			if (target == null)
+				return (!m_noRestriction && m_connectList.Count == 0 && m_acceptList.Count ==	 0);
+			
+			SocketPermission perm = target as SocketPermission;
+
+			if (perm == null) 
+				throw new ArgumentException ("Parameter target must be of type SocketPermission");
+			
+			if (perm.m_noRestriction) 
+				return true;
+
+			if (this.m_noRestriction)
+				return false;
+
+			if (this.m_acceptList.Count == 0 && this.m_connectList.Count == 0)
+				return true;
+
+			if (perm.m_acceptList.Count == 0 && perm.m_connectList.Count == 0)
+				return false;
+
+			return IsSubsetOf (this.m_connectList, perm.m_connectList)
+			    && IsSubsetOf (this.m_acceptList, perm.m_acceptList);
+		}
+
+		private bool IsSubsetOf (ArrayList list1, ArrayList list2)
+		{
+			foreach (EndpointPermission perm1 in list1) {
+				bool issubset = false;
+				foreach (EndpointPermission perm2 in list2) 
+					if (perm1.IsSubsetOf (perm2)) {
+						issubset = true;
+						break;
+					}
+				if (!issubset) 
+					return false;
+			}
+			return true;
+		}
+		
+		public bool IsUnrestricted () 
+		{
+			return m_noRestriction;
+		}
+
+		/*
+		
+		SocketPermission s = new SocketPermission (NetworkAccess.Connect, TransportType.Tcp, "www.google.com", 80);
+		s.AddPermission (NetworkAccess.Accept, TransportType.All, "localhost", 8080);
+		s.AddPermission (NetworkAccess.Accept, TransportType.All, "localhost", SocketPermission.AllPorts);
+		// s = new SocketPermission (PermissionState.None);
+		SecurityElement sec = s.ToXml ();	
+		Console.WriteLine (sec.ToString ());
+
+		This is sample xml output:
+
+		<IPermission class="System.Net.SocketPermission, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+			     version="1">
+		   <ConnectAccess>
+		      <ENDPOINT host="www.google.com"
+				transport="Tcp"
+				port="80"/>
+		   </ConnectAccess>
+		   <AcceptAccess>
+		      <ENDPOINT host="localhost"
+				transport="All"
+				port="8080"/>
+		      <ENDPOINT host="localhost"
+				transport="All"
+				port="All"/>
+		   </AcceptAccess>
+		</IPermission>
+
+
+
+		This is a sample unrestricted socketpermission, no matter how many permissions you add:			
+
+		<IPermission class="System.Net.SocketPermission, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+			     version="1"
+			     Unrestricted="true"/>
+
+
+		This is a sample constructed restricted socketpermission with no permissions added:
+
+		<IPermission class="System.Net.SocketPermission, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+			     version="1"/>
+		*/
+		public override SecurityElement ToXml ()
+		{
+             
+			SecurityElement root = new SecurityElement ("IPermission");
+
+			root.AddAttribute ("class", this.GetType ().AssemblyQualifiedName);
+			root.AddAttribute ("version", "1");
+			if (m_noRestriction) {
+				root.AddAttribute ("Unrestricted", "true");				
+				return root;
+			}				
+				
+			if (this.m_connectList.Count > 0)
+				ToXml (root, "ConnectAccess", m_connectList.GetEnumerator ());
+			
+			if (this.m_acceptList.Count > 0) 
+				ToXml (root, "AcceptAccess", m_acceptList.GetEnumerator ());			
+			
+			return root;
+		}
+		
+		private void ToXml (SecurityElement root, string childName, IEnumerator enumerator)
+		{
+			SecurityElement child = new SecurityElement (childName);
+			while (enumerator.MoveNext ()) {
+				EndpointPermission perm = enumerator.Current as EndpointPermission;
+				SecurityElement grandchild = new SecurityElement ("ENDPOINT");
+				grandchild.AddAttribute ("host", perm.Hostname);
+				grandchild.AddAttribute ("transport", perm.Transport.ToString ());
+				grandchild.AddAttribute ("port", 
+						perm.Port == AllPorts 
+						? "All" 
+						: ((Int32) perm.Port).ToString ());
+				child.AddChild (grandchild);
+			}
+			root.AddChild (child);
+		}
+		
+		public override void FromXml (SecurityElement securityElement)
+		{
+			if (securityElement == null)
+				throw new ArgumentNullException ("securityElement");
+				
+			// LAMESPEC: it says to throw an ArgumentNullException in this case				
+			if (securityElement.Tag != "IPermission")
+				throw new ArgumentException ("securityElement");
+				
+			string unrestricted = securityElement.Attribute ("Unrestricted");
+			if (unrestricted != null) {
+				this.m_noRestriction = (String.Compare (unrestricted, "true", true) == 0);
+				if (this.m_noRestriction)
+					return;
+			}
+			
+			this.m_noRestriction = false;
+			this.m_connectList = new ArrayList ();
+			this.m_acceptList = new ArrayList ();
+			
+			ArrayList children = securityElement.Children;
+			foreach (SecurityElement child in children) {
+				if (child.Tag == "ConnectAccess") 
+					FromXml (child.Children, NetworkAccess.Connect);
+				else if (child.Tag == "AcceptAccess")
+					FromXml (child.Children, NetworkAccess.Accept);
+			}
+		}		
+		
+		private void FromXml (ArrayList endpoints, NetworkAccess access)
+		{
+			foreach (SecurityElement endpoint in endpoints) {
+				if (endpoint.Tag != "ENDPOINT")
+					continue;
+				string hostname = endpoint.Attribute ("host");
+				TransportType transport = 
+					(TransportType) Enum.Parse (typeof (TransportType), 
+							            endpoint.Attribute ("transport"), 
+							            true);
+				string p = endpoint.Attribute ("port");
+				int port = 0;
+				if (p == "All") 
+					port = SocketPermission.AllPorts;
+				else
+					port = Int32.Parse (p);
+
+				AddPermission (access, transport, hostname, port);
+			}
+		}
+		
+		public override IPermission Union (IPermission target) 
+		{
+			// LAMESPEC: according to spec we should throw an 
+			// exception when target is null. We'll follow the
+			// behaviour of MS.Net instead of the spec, also
+			// because it matches the Intersect behaviour.
+			if (target == null)
+				return null;
+				// throw new ArgumentNullException ("target");
+				
+			SocketPermission perm = target as SocketPermission;
+			if (perm == null)
+				throw new ArgumentException ("Argument not of type SocketPermission");
+			
+			if (this.m_noRestriction || perm.m_noRestriction) 
+				return new SocketPermission (PermissionState.Unrestricted);
+				
+			SocketPermission copy = (SocketPermission) perm.Copy ();
+			copy.m_acceptList.InsertRange (copy.m_acceptList.Count, this.m_acceptList);
+			copy.m_connectList.InsertRange (copy.m_connectList.Count, this.m_connectList);				
+			
+			return copy;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.ComponentModel/AsyncOperationManagerTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.ComponentModel/AsyncOperationManagerTest.cs
@@ -1,63 +1,63 @@
-//
-// AsyncOperationManager.cs
-//
-// Author:
-// 	Jonathan Pobst  <monkey@jpobst.com>
-//
-// Copyright (C) 2007 Novell, Inc.
-//
-
-
-using System;
-using System.Threading;
-using System.ComponentModel;
-using System.Globalization;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.ComponentModel
-{
-	[TestFixture]
-	public class AsyncOperationManagerTest
-	{
-		[Test]
-		public void SyncContext ()
-		{
-			SynchronizationContext sc1 = new SynchronizationContext ();
-			SynchronizationContext sc2 = new SynchronizationContext ();
-
-#if MOBILE && !MONODROID
-			Assert.IsNotNull (SynchronizationContext.Current, "A1");
-#else
-			Assert.IsNull (SynchronizationContext.Current, "A1");
-#endif
-			Assert.IsNotNull (AsyncOperationManager.SynchronizationContext, "A2");
-			Assert.IsNotNull (SynchronizationContext.Current, "A3");
-			
-			SynchronizationContext.SetSynchronizationContext (sc1);
-
-			Assert.AreSame (sc1, SynchronizationContext.Current, "A4");
-			Assert.AreSame (sc1, AsyncOperationManager.SynchronizationContext, "A5");
-			
-			AsyncOperationManager.SynchronizationContext = sc2;
-
-			Assert.AreSame (sc2, SynchronizationContext.Current, "A6");
-			Assert.AreSame (sc2, AsyncOperationManager.SynchronizationContext, "A7");
-			
-			SynchronizationContext.SetSynchronizationContext (null);
-
-			Assert.IsNull (SynchronizationContext.Current, "A8");
-			// This is a brand new one, not sc1 or sc2
-			Assert.IsNotNull (AsyncOperationManager.SynchronizationContext, "A9");
-			Assert.IsNotNull (SynchronizationContext.Current, "A10");
-			
-			AsyncOperationManager.SynchronizationContext = null;
-
-			Assert.IsNull (SynchronizationContext.Current, "A11");
-			// This is a brand new one, not sc1 or sc2
-			Assert.IsNotNull (AsyncOperationManager.SynchronizationContext, "A12");
-			Assert.IsNotNull (SynchronizationContext.Current, "A13");
-		}
-	}
-}
-
+//
+// AsyncOperationManager.cs
+//
+// Author:
+// 	Jonathan Pobst  <monkey@jpobst.com>
+//
+// Copyright (C) 2007 Novell, Inc.
+//
+
+
+using System;
+using System.Threading;
+using System.ComponentModel;
+using System.Globalization;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.ComponentModel
+{
+	[TestFixture]
+	public class AsyncOperationManagerTest
+	{
+		[Test]
+		public void SyncContext ()
+		{
+			SynchronizationContext sc1 = new SynchronizationContext ();
+			SynchronizationContext sc2 = new SynchronizationContext ();
+
+#if MOBILE && !MONODROID
+			Assert.IsNotNull (SynchronizationContext.Current, "A1");
+#else
+			Assert.IsNull (SynchronizationContext.Current, "A1");
+#endif
+			Assert.IsNotNull (AsyncOperationManager.SynchronizationContext, "A2");
+			Assert.IsNotNull (SynchronizationContext.Current, "A3");
+			
+			SynchronizationContext.SetSynchronizationContext (sc1);
+
+			Assert.AreSame (sc1, SynchronizationContext.Current, "A4");
+			Assert.AreSame (sc1, AsyncOperationManager.SynchronizationContext, "A5");
+			
+			AsyncOperationManager.SynchronizationContext = sc2;
+
+			Assert.AreSame (sc2, SynchronizationContext.Current, "A6");
+			Assert.AreSame (sc2, AsyncOperationManager.SynchronizationContext, "A7");
+			
+			SynchronizationContext.SetSynchronizationContext (null);
+
+			Assert.IsNull (SynchronizationContext.Current, "A8");
+			// This is a brand new one, not sc1 or sc2
+			Assert.IsNotNull (AsyncOperationManager.SynchronizationContext, "A9");
+			Assert.IsNotNull (SynchronizationContext.Current, "A10");
+			
+			AsyncOperationManager.SynchronizationContext = null;
+
+			Assert.IsNull (SynchronizationContext.Current, "A11");
+			// This is a brand new one, not sc1 or sc2
+			Assert.IsNotNull (AsyncOperationManager.SynchronizationContext, "A12");
+			Assert.IsNotNull (SynchronizationContext.Current, "A13");
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Diagnostics/EventLogPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Diagnostics/EventLogPermissionAttributeTest.cs
@@ -1,191 +1,191 @@
-//
-// EventLogPermissionAttributeTest.cs -
-//	NUnit Test Cases for EventLogPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !MOBILE
-
-using NUnit.Framework;
-using System;
-using System.Diagnostics;
-using System.Security;
-using System.Security.Permissions;
-using System.Text.RegularExpressions;
-
-namespace MonoTests.System.Diagnostics {
-
-	[TestFixture]
-	public class EventLogPermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.AreEqual (".", a.MachineName, "MachineName");
-			Assert.AreEqual (EventLogPermissionAccess.Write, a.PermissionAccess, "PermissionAccess");
-			EventLogPermission sp = (EventLogPermission)a.CreatePermission ();
-			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			a.Unrestricted = true;
-			EventLogPermission wp = (EventLogPermission)a.CreatePermission ();
-			Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
-
-			a.Unrestricted = false;
-			wp = (EventLogPermission)a.CreatePermission ();
-			Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void MachineName_Null ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			a.MachineName = null;
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void MachineName_Empty ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			a.MachineName = String.Empty;
-		}
-
-		[Test]
-		public void MachineName ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			for (int i=0; i < 256; i++) {
-				try {
-					a.MachineName = Convert.ToChar (i).ToString ();
-					Assert.AreEqual (i, (int)a.MachineName [0], i.ToString ());
-				}
-				catch {
-					switch (i) {
-						case 9:
-						case 10:
-						case 11:
-						case 12:
-						case 13:
-						case 32:
-						case 92:
-						case 133:
-						case 160:
-							// known invalid chars
-							break;
-						default:
-							Assert.Fail (i.ToString());
-							break;
-					}
-				}
-			}
-			// all first 256 characters seems to be valid
-			// is there other rules ?
-		}
-
-		[Test]
-		public void PermissionAccess ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = EventLogPermissionAccess.Audit;
-			Assert.AreEqual (EventLogPermissionAccess.Audit, a.PermissionAccess, "Audit");
-			a.PermissionAccess = EventLogPermissionAccess.Browse;
-			Assert.AreEqual (EventLogPermissionAccess.Browse, a.PermissionAccess, "Browse");
-			a.PermissionAccess = EventLogPermissionAccess.Instrument;
-			Assert.AreEqual (EventLogPermissionAccess.Instrument, a.PermissionAccess, "Instrument");
-			a.PermissionAccess = EventLogPermissionAccess.None;
-			Assert.AreEqual (EventLogPermissionAccess.None, a.PermissionAccess, "None");
-			a.PermissionAccess = EventLogPermissionAccess.Administer;
-			Assert.AreEqual (EventLogPermissionAccess.Administer, a.PermissionAccess, "Administer");
-			a.PermissionAccess = EventLogPermissionAccess.Write;
-			Assert.AreEqual (EventLogPermissionAccess.Write, a.PermissionAccess, "Write");
-		}
-
-		[Test]
-		public void PermissionAccess_Invalid ()
-		{
-			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = (EventLogPermissionAccess) Int32.MinValue;
-			Assert.AreEqual ((EventLogPermissionAccess)Int32.MinValue, a.PermissionAccess, "None");
-			// no exception thrown
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (EventLogPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event);
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
-
-#endif
+//
+// EventLogPermissionAttributeTest.cs -
+//	NUnit Test Cases for EventLogPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !MOBILE
+
+using NUnit.Framework;
+using System;
+using System.Diagnostics;
+using System.Security;
+using System.Security.Permissions;
+using System.Text.RegularExpressions;
+
+namespace MonoTests.System.Diagnostics {
+
+	[TestFixture]
+	public class EventLogPermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.AreEqual (".", a.MachineName, "MachineName");
+			Assert.AreEqual (EventLogPermissionAccess.Write, a.PermissionAccess, "PermissionAccess");
+			EventLogPermission sp = (EventLogPermission)a.CreatePermission ();
+			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			a.Unrestricted = true;
+			EventLogPermission wp = (EventLogPermission)a.CreatePermission ();
+			Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
+
+			a.Unrestricted = false;
+			wp = (EventLogPermission)a.CreatePermission ();
+			Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MachineName_Null ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			a.MachineName = null;
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MachineName_Empty ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			a.MachineName = String.Empty;
+		}
+
+		[Test]
+		public void MachineName ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			for (int i=0; i < 256; i++) {
+				try {
+					a.MachineName = Convert.ToChar (i).ToString ();
+					Assert.AreEqual (i, (int)a.MachineName [0], i.ToString ());
+				}
+				catch {
+					switch (i) {
+						case 9:
+						case 10:
+						case 11:
+						case 12:
+						case 13:
+						case 32:
+						case 92:
+						case 133:
+						case 160:
+							// known invalid chars
+							break;
+						default:
+							Assert.Fail (i.ToString());
+							break;
+					}
+				}
+			}
+			// all first 256 characters seems to be valid
+			// is there other rules ?
+		}
+
+		[Test]
+		public void PermissionAccess ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = EventLogPermissionAccess.Audit;
+			Assert.AreEqual (EventLogPermissionAccess.Audit, a.PermissionAccess, "Audit");
+			a.PermissionAccess = EventLogPermissionAccess.Browse;
+			Assert.AreEqual (EventLogPermissionAccess.Browse, a.PermissionAccess, "Browse");
+			a.PermissionAccess = EventLogPermissionAccess.Instrument;
+			Assert.AreEqual (EventLogPermissionAccess.Instrument, a.PermissionAccess, "Instrument");
+			a.PermissionAccess = EventLogPermissionAccess.None;
+			Assert.AreEqual (EventLogPermissionAccess.None, a.PermissionAccess, "None");
+			a.PermissionAccess = EventLogPermissionAccess.Administer;
+			Assert.AreEqual (EventLogPermissionAccess.Administer, a.PermissionAccess, "Administer");
+			a.PermissionAccess = EventLogPermissionAccess.Write;
+			Assert.AreEqual (EventLogPermissionAccess.Write, a.PermissionAccess, "Write");
+		}
+
+		[Test]
+		public void PermissionAccess_Invalid ()
+		{
+			EventLogPermissionAttribute a = new EventLogPermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = (EventLogPermissionAccess) Int32.MinValue;
+			Assert.AreEqual ((EventLogPermissionAccess)Int32.MinValue, a.PermissionAccess, "None");
+			// no exception thrown
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (EventLogPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event);
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
+
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Diagnostics/PerformanceCounterPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Diagnostics/PerformanceCounterPermissionAttributeTest.cs
@@ -1,208 +1,208 @@
-//
-// PerformanceCounterPermissionAttributeTest.cs -
-//	NUnit Test Cases for PerformanceCounterPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if !MOBILE
-
-using NUnit.Framework;
-using System;
-using System.Diagnostics;
-using System.Security;
-using System.Security.Permissions;
-using System.Text.RegularExpressions;
-
-namespace MonoTests.System.Diagnostics {
-
-	[TestFixture]
-	public class PerformanceCounterPermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.AreEqual (".", a.MachineName, "MachineName");
-			Assert.AreEqual ("*", a.CategoryName, "CategoryName");
-			Assert.AreEqual (PerformanceCounterPermissionAccess.Write, a.PermissionAccess, "PermissionAccess");
-			PerformanceCounterPermission sp = (PerformanceCounterPermission)a.CreatePermission ();
-			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			a.Unrestricted = true;
-			PerformanceCounterPermission wp = (PerformanceCounterPermission)a.CreatePermission ();
-			Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
-
-			a.Unrestricted = false;
-			wp = (PerformanceCounterPermission)a.CreatePermission ();
-			Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void CategoryName_Null ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			a.CategoryName = null;
-		}
-
-		[Test]
-		public void CategoryName ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			a.CategoryName = String.Empty;
-			Assert.AreEqual (String.Empty, a.CategoryName, "Empty");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void MachineName_Null ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			a.MachineName = null;
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void MachineName_Empty ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			a.MachineName = String.Empty;
-		}
-
-		[Test]
-		public void MachineName ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			for (int i = 0; i < 256; i++) {
-				try {
-					a.MachineName = Convert.ToChar (i).ToString ();
-					Assert.AreEqual (i, (int)a.MachineName [0], i.ToString ());
-				}
-				catch {
-					switch (i) {
-						case 9:
-						case 10:
-						case 11:
-						case 12:
-						case 13:
-						case 32:
-						case 92:
-						case 133:
-						case 160:
-							// known invalid chars
-							break;
-						default:
-							Assert.Fail (i.ToString ());
-							break;
-					}
-				}
-			}
-			// all first 256 characters seems to be valid
-			// is there other rules ?
-		}
-
-		[Test]
-		public void PermissionAccess ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = PerformanceCounterPermissionAccess.Administer;
-			Assert.AreEqual (PerformanceCounterPermissionAccess.Administer, a.PermissionAccess, "Administer");
-			a.PermissionAccess = PerformanceCounterPermissionAccess.Browse;
-			Assert.AreEqual (PerformanceCounterPermissionAccess.Browse, a.PermissionAccess, "Browse");
-			a.PermissionAccess = PerformanceCounterPermissionAccess.Instrument;
-			Assert.AreEqual (PerformanceCounterPermissionAccess.Instrument, a.PermissionAccess, "Instrument");
-			a.PermissionAccess = PerformanceCounterPermissionAccess.None;
-			Assert.AreEqual (PerformanceCounterPermissionAccess.None, a.PermissionAccess, "None");
-			a.PermissionAccess = PerformanceCounterPermissionAccess.Read;
-			Assert.AreEqual (PerformanceCounterPermissionAccess.Read, a.PermissionAccess, "Read");
-			a.PermissionAccess = PerformanceCounterPermissionAccess.Write;
-			Assert.AreEqual (PerformanceCounterPermissionAccess.Write, a.PermissionAccess, "Write");
-		}
-
-		[Test]
-		public void PermissionAccess_Invalid ()
-		{
-			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
-			a.PermissionAccess = (PerformanceCounterPermissionAccess)Int32.MinValue;
-			Assert.AreEqual ((PerformanceCounterPermissionAccess)Int32.MinValue, a.PermissionAccess, "None");
-			// no exception thrown
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (PerformanceCounterPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event);
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
-
-#endif
+//
+// PerformanceCounterPermissionAttributeTest.cs -
+//	NUnit Test Cases for PerformanceCounterPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !MOBILE
+
+using NUnit.Framework;
+using System;
+using System.Diagnostics;
+using System.Security;
+using System.Security.Permissions;
+using System.Text.RegularExpressions;
+
+namespace MonoTests.System.Diagnostics {
+
+	[TestFixture]
+	public class PerformanceCounterPermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.AreEqual (".", a.MachineName, "MachineName");
+			Assert.AreEqual ("*", a.CategoryName, "CategoryName");
+			Assert.AreEqual (PerformanceCounterPermissionAccess.Write, a.PermissionAccess, "PermissionAccess");
+			PerformanceCounterPermission sp = (PerformanceCounterPermission)a.CreatePermission ();
+			Assert.IsFalse (sp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			a.Unrestricted = true;
+			PerformanceCounterPermission wp = (PerformanceCounterPermission)a.CreatePermission ();
+			Assert.IsTrue (wp.IsUnrestricted (), "IsUnrestricted");
+
+			a.Unrestricted = false;
+			wp = (PerformanceCounterPermission)a.CreatePermission ();
+			Assert.IsFalse (wp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void CategoryName_Null ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			a.CategoryName = null;
+		}
+
+		[Test]
+		public void CategoryName ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			a.CategoryName = String.Empty;
+			Assert.AreEqual (String.Empty, a.CategoryName, "Empty");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MachineName_Null ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			a.MachineName = null;
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void MachineName_Empty ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			a.MachineName = String.Empty;
+		}
+
+		[Test]
+		public void MachineName ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			for (int i = 0; i < 256; i++) {
+				try {
+					a.MachineName = Convert.ToChar (i).ToString ();
+					Assert.AreEqual (i, (int)a.MachineName [0], i.ToString ());
+				}
+				catch {
+					switch (i) {
+						case 9:
+						case 10:
+						case 11:
+						case 12:
+						case 13:
+						case 32:
+						case 92:
+						case 133:
+						case 160:
+							// known invalid chars
+							break;
+						default:
+							Assert.Fail (i.ToString ());
+							break;
+					}
+				}
+			}
+			// all first 256 characters seems to be valid
+			// is there other rules ?
+		}
+
+		[Test]
+		public void PermissionAccess ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = PerformanceCounterPermissionAccess.Administer;
+			Assert.AreEqual (PerformanceCounterPermissionAccess.Administer, a.PermissionAccess, "Administer");
+			a.PermissionAccess = PerformanceCounterPermissionAccess.Browse;
+			Assert.AreEqual (PerformanceCounterPermissionAccess.Browse, a.PermissionAccess, "Browse");
+			a.PermissionAccess = PerformanceCounterPermissionAccess.Instrument;
+			Assert.AreEqual (PerformanceCounterPermissionAccess.Instrument, a.PermissionAccess, "Instrument");
+			a.PermissionAccess = PerformanceCounterPermissionAccess.None;
+			Assert.AreEqual (PerformanceCounterPermissionAccess.None, a.PermissionAccess, "None");
+			a.PermissionAccess = PerformanceCounterPermissionAccess.Read;
+			Assert.AreEqual (PerformanceCounterPermissionAccess.Read, a.PermissionAccess, "Read");
+			a.PermissionAccess = PerformanceCounterPermissionAccess.Write;
+			Assert.AreEqual (PerformanceCounterPermissionAccess.Write, a.PermissionAccess, "Write");
+		}
+
+		[Test]
+		public void PermissionAccess_Invalid ()
+		{
+			PerformanceCounterPermissionAttribute a = new PerformanceCounterPermissionAttribute (SecurityAction.Assert);
+			a.PermissionAccess = (PerformanceCounterPermissionAccess)Int32.MinValue;
+			Assert.AreEqual ((PerformanceCounterPermissionAccess)Int32.MinValue, a.PermissionAccess, "None");
+			// no exception thrown
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (PerformanceCounterPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object [] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Event);
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
+
+#endif
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Net/CookieCollectionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Net/CookieCollectionTest.cs
@@ -1,118 +1,118 @@
-//
-// CookieCollectionTest.cs - NUnit Test Cases for System.Net.CookieCollection
-//
-// Authors:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//   Martin Willemoes Hansen (mwh@sysrq.dk)
-//
-// (C) 2003 Martin Willemoes Hansen
-//
-
-using NUnit.Framework;
-using System;
-using System.Net;
-using System.Collections;
-
-namespace MonoTests.System.Net
-{
-
-[TestFixture]
-public class CookieCollectionTest
-{
-	CookieCollection col;
-	
-	[SetUp]
-        public void GetReady () 
-        {
-		col = new CookieCollection ();	
-		col.Add (new Cookie ("name1", "value1"));
-		col.Add (new Cookie ("name2", "value2", "path2"));
-		col.Add (new Cookie ("name3", "value3", "path3", "domain3"));		
-	}
-
-        [Test]
-        public void Count ()
-        {
-		Assert.AreEqual (col.Count, 3, "#1");
-	}
-
-        [Test]
-        public void Indexer ()
-        {
-		Cookie c = null;
-		try {
-			c = col [-1];
-			Assert.Fail ("#1");
-		} catch (ArgumentOutOfRangeException) {
-		}
-		try {
-			c = col [col.Count];
-			Assert.Fail ("#2");
-		} catch (ArgumentOutOfRangeException) {
-		}
-		c = col ["name1"];
-		Assert.AreEqual (c.Name, "name1", "#3");
-		c = col ["NAME2"];
-		Assert.AreEqual (c.Name, "name2", "#4");
-	}
-	
-        [Test]
-	public void Add ()
-	{
-		try {
-			Cookie c = null;
-			col.Add (c);
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException) {
-		}
-		
-		// in the microsoft implementation this will fail,
-		// so we'll have to fail to.
-		try {
-			col.Add (col);
-			Assert.Fail ("#2");
-		} catch (Exception) {
-		}
-		Assert.AreEqual (col.Count, 3, "#3");
-		
-		col.Add (new Cookie("name1", "value1"));		
-		Assert.AreEqual (col.Count, 3, "#4");
-		
-		CookieCollection col2 = new CookieCollection();
-		Cookie c4 = new Cookie("name4", "value4");
-		Cookie c5 = new Cookie("name5", "value5");
-		col2.Add (c4);
-		col2.Add (c5);
-		col.Add (col2);
-		Assert.AreEqual (col.Count, 5, "#5");
-		Assert.AreEqual (col ["NAME4"], c4, "#6");
-		Assert.AreEqual (col [4], c5, "#7");
-	}
-	
-        [Test]
-	public void CopyTo ()
-	{
-		Array a = Array.CreateInstance (typeof (Cookie), 3);
-		col.CopyTo (a, 0);
-		Assert.AreEqual (a.GetValue (0), col [0], "#1");
-		Assert.AreEqual (a.GetValue (1), col [1], "#2");
-		Assert.AreEqual (a.GetValue (2), col [2], "#3");
-	}
-	
-        [Test]
-	public void Enumerator ()
-	{
-		IEnumerator enumerator = col.GetEnumerator ();
-		enumerator.MoveNext ();
-		Cookie c = (Cookie) enumerator.Current;
-		Assert.AreEqual (c, col [0], "#1");
-		col.Add (new Cookie ("name6", "value6"));
-		try {
-			enumerator.MoveNext ();
-			Assert.Fail ("#2");
-		} catch (InvalidOperationException) {
-		}
-	}
-}
-}
-
+//
+// CookieCollectionTest.cs - NUnit Test Cases for System.Net.CookieCollection
+//
+// Authors:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//   Martin Willemoes Hansen (mwh@sysrq.dk)
+//
+// (C) 2003 Martin Willemoes Hansen
+//
+
+using NUnit.Framework;
+using System;
+using System.Net;
+using System.Collections;
+
+namespace MonoTests.System.Net
+{
+
+[TestFixture]
+public class CookieCollectionTest
+{
+	CookieCollection col;
+	
+	[SetUp]
+        public void GetReady () 
+        {
+		col = new CookieCollection ();	
+		col.Add (new Cookie ("name1", "value1"));
+		col.Add (new Cookie ("name2", "value2", "path2"));
+		col.Add (new Cookie ("name3", "value3", "path3", "domain3"));		
+	}
+
+        [Test]
+        public void Count ()
+        {
+		Assert.AreEqual (col.Count, 3, "#1");
+	}
+
+        [Test]
+        public void Indexer ()
+        {
+		Cookie c = null;
+		try {
+			c = col [-1];
+			Assert.Fail ("#1");
+		} catch (ArgumentOutOfRangeException) {
+		}
+		try {
+			c = col [col.Count];
+			Assert.Fail ("#2");
+		} catch (ArgumentOutOfRangeException) {
+		}
+		c = col ["name1"];
+		Assert.AreEqual (c.Name, "name1", "#3");
+		c = col ["NAME2"];
+		Assert.AreEqual (c.Name, "name2", "#4");
+	}
+	
+        [Test]
+	public void Add ()
+	{
+		try {
+			Cookie c = null;
+			col.Add (c);
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException) {
+		}
+		
+		// in the microsoft implementation this will fail,
+		// so we'll have to fail to.
+		try {
+			col.Add (col);
+			Assert.Fail ("#2");
+		} catch (Exception) {
+		}
+		Assert.AreEqual (col.Count, 3, "#3");
+		
+		col.Add (new Cookie("name1", "value1"));		
+		Assert.AreEqual (col.Count, 3, "#4");
+		
+		CookieCollection col2 = new CookieCollection();
+		Cookie c4 = new Cookie("name4", "value4");
+		Cookie c5 = new Cookie("name5", "value5");
+		col2.Add (c4);
+		col2.Add (c5);
+		col.Add (col2);
+		Assert.AreEqual (col.Count, 5, "#5");
+		Assert.AreEqual (col ["NAME4"], c4, "#6");
+		Assert.AreEqual (col [4], c5, "#7");
+	}
+	
+        [Test]
+	public void CopyTo ()
+	{
+		Array a = Array.CreateInstance (typeof (Cookie), 3);
+		col.CopyTo (a, 0);
+		Assert.AreEqual (a.GetValue (0), col [0], "#1");
+		Assert.AreEqual (a.GetValue (1), col [1], "#2");
+		Assert.AreEqual (a.GetValue (2), col [2], "#3");
+	}
+	
+        [Test]
+	public void Enumerator ()
+	{
+		IEnumerator enumerator = col.GetEnumerator ();
+		enumerator.MoveNext ();
+		Cookie c = (Cookie) enumerator.Current;
+		Assert.AreEqual (c, col [0], "#1");
+		col.Add (new Cookie ("name6", "value6"));
+		try {
+			enumerator.MoveNext ();
+			Assert.Fail ("#2");
+		} catch (InvalidOperationException) {
+		}
+	}
+}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Net/CredentialCacheTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Net/CredentialCacheTest.cs
@@ -1,123 +1,123 @@
-//
-// CredentialCacheTest.cs - NUnit Test Cases for System.Net.CredentialCache
-//
-// Author:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//
-
-using NUnit.Framework;
-using System;
-using System.Net;
-using System.Collections;
-using System.Security;
-using System.Security.Permissions;
-
-namespace MonoTests.System.Net
-{
-
-[TestFixture]
-public class CredentialCacheTest
-{
-	[Test]        
-        public void All ()
-        {
-		CredentialCache c = new CredentialCache ();
-		
-		NetworkCredential cred1 = new NetworkCredential ("user1", "pwd1");
-		NetworkCredential cred2 = new NetworkCredential ("user2", "pwd2");
-		NetworkCredential cred3 = new NetworkCredential ("user3", "pwd3");
-		NetworkCredential cred4 = new NetworkCredential ("user4", "pwd4");
-		NetworkCredential cred5 = new NetworkCredential ("user5", "pwd5");
-		
-		c.Add (new Uri ("http://www.ximian.com"), "Basic", cred1);
-		c.Add (new Uri ("http://www.ximian.com"), "Kerberos", cred2);
-		
-		c.Add (new Uri ("http://www.contoso.com/portal/news/index.aspx"), "Basic", cred1);
-		c.Add (new Uri ("http://www.contoso.com/portal/news/index.aspx?item=1"), "Basic", cred2);
-		c.Add (new Uri ("http://www.contoso.com/portal/news/index.aspx?item=12"), "Basic", cred3);
-		c.Add (new Uri ("http://www.contoso.com/portal/"), "Basic", cred4);
-		c.Add (new Uri ("http://www.contoso.com"), "Basic", cred5);
-		
-		NetworkCredential result = null;
-	
-		try {
-			c.Add (new Uri("http://www.ximian.com"), "Basic", cred1);
-			Assert.Fail ("#1: should have failed");
-		} catch (ArgumentException) { }
-
-		c.Add (new Uri("http://www.contoso.com/"), "**Unknown**", cred1);
-		result = c.GetCredential (new Uri("http://www.contoso.com/"), "**Unknown**");
-		Assert.AreEqual (result, cred1, "#3");
-		c.Remove (new Uri("http://www.contoso.com/"), "**Unknown**");
-		result = c.GetCredential (new Uri("http://www.contoso.com/"), "**Unknown**");
-		Assert.IsTrue (result == null, "#4");
-
-		c.Add (new Uri("http://www.contoso.com/"), "**Unknown**", cred1);
-		result = c.GetCredential (new Uri("http://www.contoso.com"), "**Unknown**");
-		Assert.AreEqual (result, cred1, "#5");
-		c.Remove (new Uri("http://www.contoso.com"), "**Unknown**");
-		result = c.GetCredential (new Uri("http://www.contoso.com"), "**Unknown**");
-		Assert.IsTrue (result == null, "#6");
-
-		c.Add (new Uri("http://www.contoso.com/portal/"), "**Unknown**", cred1);
-		result = c.GetCredential (new Uri("http://www.contoso.com/portal/foo/bar.html"), "**Unknown**");
-		Assert.AreEqual (result, cred1, "#7");
-		c.Remove (new Uri("http://www.contoso.com"), "**Unknown**");
-		result = c.GetCredential (new Uri("http://www.contoso.com"), "**Unknown**");
-		Assert.IsTrue (result == null, "#8");
-
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news/index.aspx"), "Basic");
-		Assert.AreEqual (result, cred3, "#9");
-
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news/index"), "Basic");
-		Assert.AreEqual (result, cred3, "#10");
-
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news/"), "Basic");
-		Assert.AreEqual (result, cred3, "#11");
-		
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news"), "Basic");
-		Assert.AreEqual (result, cred4, "#12");
-
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/ne"), "Basic");
-		Assert.AreEqual (result, cred4, "#13");
-
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/"), "Basic");
-		Assert.AreEqual (result, cred4, "#14");				
-
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal"), "Basic");
-		Assert.AreEqual (result, cred5, "#15");
-
-		result = c.GetCredential (new Uri("http://www.contoso.com:80/"), "Basic");
-		Assert.AreEqual (result, cred5, "#16");
-
-		result = c.GetCredential (new Uri("http://www.contoso.com"), "Basic");
-		Assert.AreEqual (result, cred5, "#17");		
-
-		/*		
-		IEnumerator e = c.GetEnumerator ();
-		while (e.MoveNext ()) {
-			Console.WriteLine (e.Current.GetType () + " : " + e.Current.ToString ());
-		}
-		*/
-		result = c.GetCredential ("www.ximian.com", 80, "Basic");
-		Assert.IsTrue (result == null, "#18");		
-
-		c.Add ("www.ximian.com", 80, "Basic", cred1);
-
-		try {
-			c.Add ("www.ximian.com", 80, "Basic", cred1);
-			Assert.Fail ("#19: should have failed");
-		} catch (ArgumentException) { }
-
-		result = c.GetCredential ("www.ximian.com", 80, "Basic");
-		Assert.AreEqual (result, cred1, "#20");		
-
-		c.Remove (new Uri("http://www.contoso.com"), "Basic");
-		c.Add ("www.contoso.com", 80, "Basic", cred5);
-		result = c.GetCredential (new Uri("http://www.contoso.com"), "Basic");
-		Assert.IsTrue (result == null, "#21");		
-	}
-}
-
-}
-
+//
+// CredentialCacheTest.cs - NUnit Test Cases for System.Net.CredentialCache
+//
+// Author:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//
+
+using NUnit.Framework;
+using System;
+using System.Net;
+using System.Collections;
+using System.Security;
+using System.Security.Permissions;
+
+namespace MonoTests.System.Net
+{
+
+[TestFixture]
+public class CredentialCacheTest
+{
+	[Test]        
+        public void All ()
+        {
+		CredentialCache c = new CredentialCache ();
+		
+		NetworkCredential cred1 = new NetworkCredential ("user1", "pwd1");
+		NetworkCredential cred2 = new NetworkCredential ("user2", "pwd2");
+		NetworkCredential cred3 = new NetworkCredential ("user3", "pwd3");
+		NetworkCredential cred4 = new NetworkCredential ("user4", "pwd4");
+		NetworkCredential cred5 = new NetworkCredential ("user5", "pwd5");
+		
+		c.Add (new Uri ("http://www.ximian.com"), "Basic", cred1);
+		c.Add (new Uri ("http://www.ximian.com"), "Kerberos", cred2);
+		
+		c.Add (new Uri ("http://www.contoso.com/portal/news/index.aspx"), "Basic", cred1);
+		c.Add (new Uri ("http://www.contoso.com/portal/news/index.aspx?item=1"), "Basic", cred2);
+		c.Add (new Uri ("http://www.contoso.com/portal/news/index.aspx?item=12"), "Basic", cred3);
+		c.Add (new Uri ("http://www.contoso.com/portal/"), "Basic", cred4);
+		c.Add (new Uri ("http://www.contoso.com"), "Basic", cred5);
+		
+		NetworkCredential result = null;
+	
+		try {
+			c.Add (new Uri("http://www.ximian.com"), "Basic", cred1);
+			Assert.Fail ("#1: should have failed");
+		} catch (ArgumentException) { }
+
+		c.Add (new Uri("http://www.contoso.com/"), "**Unknown**", cred1);
+		result = c.GetCredential (new Uri("http://www.contoso.com/"), "**Unknown**");
+		Assert.AreEqual (result, cred1, "#3");
+		c.Remove (new Uri("http://www.contoso.com/"), "**Unknown**");
+		result = c.GetCredential (new Uri("http://www.contoso.com/"), "**Unknown**");
+		Assert.IsTrue (result == null, "#4");
+
+		c.Add (new Uri("http://www.contoso.com/"), "**Unknown**", cred1);
+		result = c.GetCredential (new Uri("http://www.contoso.com"), "**Unknown**");
+		Assert.AreEqual (result, cred1, "#5");
+		c.Remove (new Uri("http://www.contoso.com"), "**Unknown**");
+		result = c.GetCredential (new Uri("http://www.contoso.com"), "**Unknown**");
+		Assert.IsTrue (result == null, "#6");
+
+		c.Add (new Uri("http://www.contoso.com/portal/"), "**Unknown**", cred1);
+		result = c.GetCredential (new Uri("http://www.contoso.com/portal/foo/bar.html"), "**Unknown**");
+		Assert.AreEqual (result, cred1, "#7");
+		c.Remove (new Uri("http://www.contoso.com"), "**Unknown**");
+		result = c.GetCredential (new Uri("http://www.contoso.com"), "**Unknown**");
+		Assert.IsTrue (result == null, "#8");
+
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news/index.aspx"), "Basic");
+		Assert.AreEqual (result, cred3, "#9");
+
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news/index"), "Basic");
+		Assert.AreEqual (result, cred3, "#10");
+
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news/"), "Basic");
+		Assert.AreEqual (result, cred3, "#11");
+		
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/news"), "Basic");
+		Assert.AreEqual (result, cred4, "#12");
+
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/ne"), "Basic");
+		Assert.AreEqual (result, cred4, "#13");
+
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal/"), "Basic");
+		Assert.AreEqual (result, cred4, "#14");				
+
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/portal"), "Basic");
+		Assert.AreEqual (result, cred5, "#15");
+
+		result = c.GetCredential (new Uri("http://www.contoso.com:80/"), "Basic");
+		Assert.AreEqual (result, cred5, "#16");
+
+		result = c.GetCredential (new Uri("http://www.contoso.com"), "Basic");
+		Assert.AreEqual (result, cred5, "#17");		
+
+		/*		
+		IEnumerator e = c.GetEnumerator ();
+		while (e.MoveNext ()) {
+			Console.WriteLine (e.Current.GetType () + " : " + e.Current.ToString ());
+		}
+		*/
+		result = c.GetCredential ("www.ximian.com", 80, "Basic");
+		Assert.IsTrue (result == null, "#18");		
+
+		c.Add ("www.ximian.com", 80, "Basic", cred1);
+
+		try {
+			c.Add ("www.ximian.com", 80, "Basic", cred1);
+			Assert.Fail ("#19: should have failed");
+		} catch (ArgumentException) { }
+
+		result = c.GetCredential ("www.ximian.com", 80, "Basic");
+		Assert.AreEqual (result, cred1, "#20");		
+
+		c.Remove (new Uri("http://www.contoso.com"), "Basic");
+		c.Add ("www.contoso.com", 80, "Basic", cred5);
+		result = c.GetCredential (new Uri("http://www.contoso.com"), "Basic");
+		Assert.IsTrue (result == null, "#21");		
+	}
+}
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Net/DnsTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Net/DnsTest.cs
@@ -1,535 +1,535 @@
-// DnsTest.cs - NUnit Test Cases for the System.Net.Dns class
-//
-// Authors: 
-//   Mads Pultz (mpultz@diku.dk)
-//   Martin Willemoes Hansen (mwh@sysrq.dk)
-//
-// (C) 2001 Mads Pultz
-// (C) 2003 Martin Willemoes Hansen
-// 
-
-using System;
-using System.Linq;
-using System.Net;
-using System.Net.Sockets;
-using System.Threading;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Net
-{
-	[TestFixture]
-	public class DnsTest
-	{
-		private String site1Name = "google-public-dns-a.google.com",
-			site1Dot = "8.8.8.8",
-			site2Name = "google-public-dns-b.google.com",
-			site2Dot = "8.8.4.4",
-			noneExistingSite = "unlikely.xamarin.com";
-		private uint site1IP = 134744072, site2IP = 134743044; // Big-Endian
-
-		[Test]
-		public void AsyncGetHostByName ()
-		{
-			IAsyncResult r;
-			r = Dns.BeginGetHostByName (site1Name, new AsyncCallback (GetHostByNameCallback), null);
-
-			IAsyncResult async = Dns.BeginGetHostByName (site1Name, null, null);
-			IPHostEntry entry = Dns.EndGetHostByName (async);
-			SubTestValidIPHostEntry (entry);
-			Assert.IsTrue (entry.HostName == "google-public-dns-a.google.com");
-		}
-
-		void GetHostByNameCallback (IAsyncResult ar)
-		{
-			IPHostEntry h;
-			h = Dns.EndGetHostByName (ar);
-			SubTestValidIPHostEntry (h);
-		}
-
-		[Test]
-		public void AsyncResolve ()
-		{
-			IAsyncResult r;
-			r = Dns.BeginResolve (site1Name, new AsyncCallback (ResolveCallback), null);
-
-			IAsyncResult async = Dns.BeginResolve (site1Dot, null, null);
-			IPHostEntry entry = Dns.EndResolve (async);
+// DnsTest.cs - NUnit Test Cases for the System.Net.Dns class
+//
+// Authors: 
+//   Mads Pultz (mpultz@diku.dk)
+//   Martin Willemoes Hansen (mwh@sysrq.dk)
+//
+// (C) 2001 Mads Pultz
+// (C) 2003 Martin Willemoes Hansen
+// 
+
+using System;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Threading;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Net
+{
+	[TestFixture]
+	public class DnsTest
+	{
+		private String site1Name = "google-public-dns-a.google.com",
+			site1Dot = "8.8.8.8",
+			site2Name = "google-public-dns-b.google.com",
+			site2Dot = "8.8.4.4",
+			noneExistingSite = "unlikely.xamarin.com";
+		private uint site1IP = 134744072, site2IP = 134743044; // Big-Endian
+
+		[Test]
+		public void AsyncGetHostByName ()
+		{
+			IAsyncResult r;
+			r = Dns.BeginGetHostByName (site1Name, new AsyncCallback (GetHostByNameCallback), null);
+
+			IAsyncResult async = Dns.BeginGetHostByName (site1Name, null, null);
+			IPHostEntry entry = Dns.EndGetHostByName (async);
 			SubTestValidIPHostEntry (entry);
-			var ip = GetIPv4Address (entry);
-			Assert.AreEqual (site1Dot, ip.ToString ());
-		}
-
-		void ResolveCallback (IAsyncResult ar)
-		{
-			IPHostEntry h = Dns.EndResolve (ar);
-			SubTestValidIPHostEntry (h);
-		}
-
-		[Test]
-		public void BeginGetHostAddresses_HostNameOrAddress_Null ()
-		{
-			try {
-				Dns.BeginGetHostAddresses (
-					(string) null,
-					new AsyncCallback (GetHostAddressesCallback),
-					null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostName", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void BeginGetHostAddresses_HostNameOrAddress_UnspecifiedAddress ()
-		{
-			// IPv4
-			try {
-				Dns.BeginGetHostAddresses (
-					"0.0.0.0",
-					new AsyncCallback (GetHostAddressesCallback),
-					null);
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#A5");
-			}
-
-			// IPv6
-			try {
-				Dns.BeginGetHostAddresses (
-					"::0",
-					new AsyncCallback (GetHostAddressesCallback),
-					null);
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#B5");
-			}
-		}
-
-		void GetHostAddressesCallback (IAsyncResult ar)
-		{
-			IPAddress [] addresses = Dns.EndGetHostAddresses (ar);
-			Assert.IsNotNull (addresses);
-		}
-
-		[Test]
-		public void GetHostAddresses_HostNameOrAddress_Null ()
-		{
-			try {
-				Dns.GetHostAddresses ((string) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void GetHostAddresses_HostNameOrAddress_UnspecifiedAddress ()
-		{
-			// IPv4
-			try {
-				Dns.GetHostAddresses ("0.0.0.0");
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#A5");
-			}
-
-			// IPv6
-			try {
-				Dns.GetHostAddresses ("::0");
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#B5");
-			}
-		}
-
-		[Test]
-		public void GetHostName ()
-		{
-			string hostName = Dns.GetHostName ();
-			Assert.IsNotNull (hostName);
-		}
-
-		[Test]
-		public void GetHostByName ()
-		{
-			SubTestGetHostByName (site1Name, site1Dot);
-			SubTestGetHostByName (site2Name, site2Dot);
-			try {
-				var entry = Dns.GetHostByName (noneExistingSite);
-				/*
-				 * Work around broken t-online.de DNS Server.
-				 * 
-				 * T-Online's DNS Server for DSL Customers resolves
-				 * non-exisitng domain names to
-				 * http://navigationshilfe1.t-online.de/dnserror?url=....
-				 * instead of reporting an error.
-				 */
-				var navigationshilfe1 = IPAddress.Parse ("80.156.86.78");
-				var navigationshilfe2 = IPAddress.Parse ("62.157.140.133");
-				foreach (var addr in entry.AddressList) {
-					if (addr.Equals (navigationshilfe1) || addr.Equals (navigationshilfe2))
-						return;
-				}
-				Assert.Fail ("Should raise a SocketException (assuming that '" + noneExistingSite + "' does not exist)");
-			} catch (SocketException) {
-			}
-		}
-
-		static IPAddress GetIPv4Address (IPHostEntry h)
-		{
-			var al = h.AddressList.FirstOrDefault (x => x.AddressFamily == AddressFamily.InterNetwork);
-			if (al == null)
-				Assert.Ignore ("Could not resolve an IPv4 address as required by this test case, e.g. running on an IPv6 only network");
-			return al;
-		}
-
-		void SubTestGetHostByName (string siteName, string siteDot)
-		{
-			IPHostEntry h = Dns.GetHostByName (siteName);
-			SubTestValidIPHostEntry (h);
-			Assert.AreEqual (siteName, h.HostName, "siteName");
-			var ip = GetIPv4Address (h);
-			Assert.AreEqual (siteDot, ip.ToString (), "siteDot");
-		}
-
-		[Test]
-		public void GetHostByName_HostName_Null ()
-		{
-			try {
-				Dns.GetHostByName ((string) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostName", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void GetHostByAddressString_Address_Null ()
-		{
-			try {
-				Dns.GetHostByAddress ((string) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("address", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		[ExpectedException (typeof (SocketException))]
-		public void GetHostByAddressString2 ()
-		{
-			Dns.GetHostByAddress ("123.255.23");
-		}
-
-		[Test]
-		[ExpectedException (typeof (FormatException))]
-		public void GetHostByAddressString3 ()
-		{
-			Dns.GetHostByAddress ("123.256.34.10");
-		}
-
-		[Test, ExpectedException (typeof (FormatException))]
-		public void GetHostByAddressString4 ()
-		{
-			Dns.GetHostByAddress ("not an IP address");
-		}
-
-		[Test]
-		public void GetHostByAddressString5 ()
-		{
-			Dns.GetHostByAddress (site1Dot);
-		}
-
-		[Test]
-		public void GetHostByAddressIPAddress_Address_Null ()
-		{
-			try {
-				Dns.GetHostByAddress ((IPAddress) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("address", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void GetHostByAddressIPAddress2 ()
-		{
-			IPAddress addr = new IPAddress (IPAddress.NetworkToHostOrder ((int) site1IP));
-			IPHostEntry h = Dns.GetHostByAddress (addr);
-			SubTestValidIPHostEntry (h);
-			var ip = GetIPv4Address (h);
-			Assert.AreEqual (addr.ToString (), ip.ToString ());
-		}
-
-		[Test]
-		public void GetHostByAddressIPAddress3 ()
-		{
-			IPAddress addr = new IPAddress (IPAddress.NetworkToHostOrder ((int) site2IP));
-			IPHostEntry h = Dns.GetHostByAddress (addr);
+			Assert.IsTrue (entry.HostName == "google-public-dns-a.google.com");
+		}
+
+		void GetHostByNameCallback (IAsyncResult ar)
+		{
+			IPHostEntry h;
+			h = Dns.EndGetHostByName (ar);
 			SubTestValidIPHostEntry (h);
-			var ip = GetIPv4Address (h);
-			Assert.AreEqual (addr.ToString (), ip.ToString ());
-		}
-
-		[Test]
-		public void BeginResolve_HostName_Null ()
-		{
-			try {
-				Dns.BeginResolve ((string) null,
-					new AsyncCallback (ResolveCallback),
-					null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostName", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void Resolve ()
-		{
-			SubTestResolve (site1Name);
-			SubTestResolve (site2Name);
-			SubTestResolve (site1Dot);
-			SubTestResolve (site2Dot);
-		}
-
-		void SubTestResolve (string addr)
-		{
-			IPHostEntry h = Dns.Resolve (addr);
-			SubTestValidIPHostEntry (h);
-		}
-
-		[Test]
-		public void Resolve_HostName_Null ()
-		{
-			try {
-				Dns.Resolve ((string) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostName", ex.ParamName, "#5");
-			}
-		}
-
-		[Test] // BeginGetHostEntry (IPAddress, AsyncCallback, Object)
-		public void BeginGetHostEntry1_Address_Null ()
-		{
-			try {
-				Dns.BeginGetHostEntry (
-					(IPAddress) null,
-					new AsyncCallback (GetHostAddressesCallback),
-					null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("address", ex.ParamName, "#5");
-			}
-		}
-
-		[Test] // BeginGetHostEntry (String, AsyncCallback, Object)
-		public void BeginGetHostEntry2_HostNameOrAddress_Null ()
-		{
-			try {
-				Dns.BeginGetHostEntry (
-					(string) null,
-					new AsyncCallback (GetHostAddressesCallback),
-					null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostName", ex.ParamName, "#5");
-			}
-		}
-
-		[Test] // BeginGetHostEntry (String, AsyncCallback, Object)
-		public void BeginGetHostEntry2_HostNameOrAddress_UnspecifiedAddress ()
-		{
-			// IPv4
-			try {
-				Dns.BeginGetHostEntry (
-					"0.0.0.0",
-					new AsyncCallback (GetHostEntryCallback),
-					null);
-				Assert.Fail ("#1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
-			}
-
-			// IPv6
-			try {
-				Dns.BeginGetHostEntry (
-					"::0",
-					new AsyncCallback (GetHostEntryCallback),
-					null);
-				Assert.Fail ("#1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
-			}
-		}
-
-		void GetHostEntryCallback (IAsyncResult ar)
-		{
-			IPHostEntry hostEntry = Dns.EndGetHostEntry (ar);
-			Assert.IsNotNull (hostEntry);
-		}
-
-		[Test] // GetHostEntry (IPAddress)
-		public void GetHostEntry1_Address_Null ()
-		{
-			try {
-				Dns.GetHostEntry ((IPAddress) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("address", ex.ParamName, "#5");
-			}
-		}
-
-		[Test] // GetHostEntry (String)
-		public void GetHostEntry2 ()
-		{
-			Dns.GetHostEntry (site1Name); // hostname
-			Dns.GetHostEntry (site1Dot); // IP address
-		}
-
-		[Test] // GetHostEntry (String)
-		public void GetHostEntry2_HostNameOrAddress_Null ()
-		{
-			try {
-				Dns.GetHostEntry ((string) null);
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
-			}
-		}
-
-		[Test] // GetHostEntry (String)
-		public void GetHostEntry2_HostNameOrAddress_UnspecifiedAddress ()
-		{
-			// IPv4
-			try {
-				Dns.GetHostEntry ("0.0.0.0");
-				Assert.Fail ("#A1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-				Assert.IsNull (ex.InnerException, "#A3");
-				Assert.IsNotNull (ex.Message, "#A4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#A5");
-			}
-
-			// IPv6
-			try {
-				Dns.GetHostEntry ("::0");
-				Assert.Fail ("#B1");
-			} catch (ArgumentException ex) {
-				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
-				// unspecified addresses that cannot be used as
-				// a target address
-				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-				Assert.IsNull (ex.InnerException, "#B3");
-				Assert.IsNotNull (ex.Message, "#B4");
-				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#B5");
-			}
-		}
-
-		void SubTestValidIPHostEntry (IPHostEntry h)
-		{
-			Assert.IsNotNull (h.HostName, "HostName not null");
-			Assert.IsNotNull (h.AddressList, "AddressList not null");
-			Assert.IsTrue (h.AddressList.Length > 0, "AddressList.Length");
-		}
-
-		[Test]
-		public void GetHostEntry_StringEmpty ()
-		{
-			Dns.GetHostEntry (string.Empty);
-		}
-
-		/* This isn't used anymore, but could be useful for debugging
-		static void printIPHostEntry(IPHostEntry h)
-		{
-			Console.WriteLine("----------------------------------------------------");
-			Console.WriteLine("Host name:");
-			Console.WriteLine(h.HostName);
-			Console.WriteLine("IP addresses:");
-			IPAddress[] list = h.AddressList;
-			for(int i = 0; i < list.Length; ++i)
-				Console.WriteLine(list[i]);
-			Console.WriteLine("Aliases:");
-			string[] aliases = h.Aliases;
-			for(int i = 0; i < aliases.Length; ++i)
-				Console.WriteLine(aliases[i]);
-			Console.WriteLine("----------------------------------------------------");
-		}
-		*/
-	}
-}
+		}
+
+		[Test]
+		public void AsyncResolve ()
+		{
+			IAsyncResult r;
+			r = Dns.BeginResolve (site1Name, new AsyncCallback (ResolveCallback), null);
+
+			IAsyncResult async = Dns.BeginResolve (site1Dot, null, null);
+			IPHostEntry entry = Dns.EndResolve (async);
+			SubTestValidIPHostEntry (entry);
+			var ip = GetIPv4Address (entry);
+			Assert.AreEqual (site1Dot, ip.ToString ());
+		}
+
+		void ResolveCallback (IAsyncResult ar)
+		{
+			IPHostEntry h = Dns.EndResolve (ar);
+			SubTestValidIPHostEntry (h);
+		}
+
+		[Test]
+		public void BeginGetHostAddresses_HostNameOrAddress_Null ()
+		{
+			try {
+				Dns.BeginGetHostAddresses (
+					(string) null,
+					new AsyncCallback (GetHostAddressesCallback),
+					null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostName", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void BeginGetHostAddresses_HostNameOrAddress_UnspecifiedAddress ()
+		{
+			// IPv4
+			try {
+				Dns.BeginGetHostAddresses (
+					"0.0.0.0",
+					new AsyncCallback (GetHostAddressesCallback),
+					null);
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#A5");
+			}
+
+			// IPv6
+			try {
+				Dns.BeginGetHostAddresses (
+					"::0",
+					new AsyncCallback (GetHostAddressesCallback),
+					null);
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#B5");
+			}
+		}
+
+		void GetHostAddressesCallback (IAsyncResult ar)
+		{
+			IPAddress [] addresses = Dns.EndGetHostAddresses (ar);
+			Assert.IsNotNull (addresses);
+		}
+
+		[Test]
+		public void GetHostAddresses_HostNameOrAddress_Null ()
+		{
+			try {
+				Dns.GetHostAddresses ((string) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void GetHostAddresses_HostNameOrAddress_UnspecifiedAddress ()
+		{
+			// IPv4
+			try {
+				Dns.GetHostAddresses ("0.0.0.0");
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#A5");
+			}
+
+			// IPv6
+			try {
+				Dns.GetHostAddresses ("::0");
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#B5");
+			}
+		}
+
+		[Test]
+		public void GetHostName ()
+		{
+			string hostName = Dns.GetHostName ();
+			Assert.IsNotNull (hostName);
+		}
+
+		[Test]
+		public void GetHostByName ()
+		{
+			SubTestGetHostByName (site1Name, site1Dot);
+			SubTestGetHostByName (site2Name, site2Dot);
+			try {
+				var entry = Dns.GetHostByName (noneExistingSite);
+				/*
+				 * Work around broken t-online.de DNS Server.
+				 * 
+				 * T-Online's DNS Server for DSL Customers resolves
+				 * non-exisitng domain names to
+				 * http://navigationshilfe1.t-online.de/dnserror?url=....
+				 * instead of reporting an error.
+				 */
+				var navigationshilfe1 = IPAddress.Parse ("80.156.86.78");
+				var navigationshilfe2 = IPAddress.Parse ("62.157.140.133");
+				foreach (var addr in entry.AddressList) {
+					if (addr.Equals (navigationshilfe1) || addr.Equals (navigationshilfe2))
+						return;
+				}
+				Assert.Fail ("Should raise a SocketException (assuming that '" + noneExistingSite + "' does not exist)");
+			} catch (SocketException) {
+			}
+		}
+
+		static IPAddress GetIPv4Address (IPHostEntry h)
+		{
+			var al = h.AddressList.FirstOrDefault (x => x.AddressFamily == AddressFamily.InterNetwork);
+			if (al == null)
+				Assert.Ignore ("Could not resolve an IPv4 address as required by this test case, e.g. running on an IPv6 only network");
+			return al;
+		}
+
+		void SubTestGetHostByName (string siteName, string siteDot)
+		{
+			IPHostEntry h = Dns.GetHostByName (siteName);
+			SubTestValidIPHostEntry (h);
+			Assert.AreEqual (siteName, h.HostName, "siteName");
+			var ip = GetIPv4Address (h);
+			Assert.AreEqual (siteDot, ip.ToString (), "siteDot");
+		}
+
+		[Test]
+		public void GetHostByName_HostName_Null ()
+		{
+			try {
+				Dns.GetHostByName ((string) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostName", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void GetHostByAddressString_Address_Null ()
+		{
+			try {
+				Dns.GetHostByAddress ((string) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("address", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (SocketException))]
+		public void GetHostByAddressString2 ()
+		{
+			Dns.GetHostByAddress ("123.255.23");
+		}
+
+		[Test]
+		[ExpectedException (typeof (FormatException))]
+		public void GetHostByAddressString3 ()
+		{
+			Dns.GetHostByAddress ("123.256.34.10");
+		}
+
+		[Test, ExpectedException (typeof (FormatException))]
+		public void GetHostByAddressString4 ()
+		{
+			Dns.GetHostByAddress ("not an IP address");
+		}
+
+		[Test]
+		public void GetHostByAddressString5 ()
+		{
+			Dns.GetHostByAddress (site1Dot);
+		}
+
+		[Test]
+		public void GetHostByAddressIPAddress_Address_Null ()
+		{
+			try {
+				Dns.GetHostByAddress ((IPAddress) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("address", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void GetHostByAddressIPAddress2 ()
+		{
+			IPAddress addr = new IPAddress (IPAddress.NetworkToHostOrder ((int) site1IP));
+			IPHostEntry h = Dns.GetHostByAddress (addr);
+			SubTestValidIPHostEntry (h);
+			var ip = GetIPv4Address (h);
+			Assert.AreEqual (addr.ToString (), ip.ToString ());
+		}
+
+		[Test]
+		public void GetHostByAddressIPAddress3 ()
+		{
+			IPAddress addr = new IPAddress (IPAddress.NetworkToHostOrder ((int) site2IP));
+			IPHostEntry h = Dns.GetHostByAddress (addr);
+			SubTestValidIPHostEntry (h);
+			var ip = GetIPv4Address (h);
+			Assert.AreEqual (addr.ToString (), ip.ToString ());
+		}
+
+		[Test]
+		public void BeginResolve_HostName_Null ()
+		{
+			try {
+				Dns.BeginResolve ((string) null,
+					new AsyncCallback (ResolveCallback),
+					null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostName", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void Resolve ()
+		{
+			SubTestResolve (site1Name);
+			SubTestResolve (site2Name);
+			SubTestResolve (site1Dot);
+			SubTestResolve (site2Dot);
+		}
+
+		void SubTestResolve (string addr)
+		{
+			IPHostEntry h = Dns.Resolve (addr);
+			SubTestValidIPHostEntry (h);
+		}
+
+		[Test]
+		public void Resolve_HostName_Null ()
+		{
+			try {
+				Dns.Resolve ((string) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostName", ex.ParamName, "#5");
+			}
+		}
+
+		[Test] // BeginGetHostEntry (IPAddress, AsyncCallback, Object)
+		public void BeginGetHostEntry1_Address_Null ()
+		{
+			try {
+				Dns.BeginGetHostEntry (
+					(IPAddress) null,
+					new AsyncCallback (GetHostAddressesCallback),
+					null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("address", ex.ParamName, "#5");
+			}
+		}
+
+		[Test] // BeginGetHostEntry (String, AsyncCallback, Object)
+		public void BeginGetHostEntry2_HostNameOrAddress_Null ()
+		{
+			try {
+				Dns.BeginGetHostEntry (
+					(string) null,
+					new AsyncCallback (GetHostAddressesCallback),
+					null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostName", ex.ParamName, "#5");
+			}
+		}
+
+		[Test] // BeginGetHostEntry (String, AsyncCallback, Object)
+		public void BeginGetHostEntry2_HostNameOrAddress_UnspecifiedAddress ()
+		{
+			// IPv4
+			try {
+				Dns.BeginGetHostEntry (
+					"0.0.0.0",
+					new AsyncCallback (GetHostEntryCallback),
+					null);
+				Assert.Fail ("#1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
+			}
+
+			// IPv6
+			try {
+				Dns.BeginGetHostEntry (
+					"::0",
+					new AsyncCallback (GetHostEntryCallback),
+					null);
+				Assert.Fail ("#1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
+			}
+		}
+
+		void GetHostEntryCallback (IAsyncResult ar)
+		{
+			IPHostEntry hostEntry = Dns.EndGetHostEntry (ar);
+			Assert.IsNotNull (hostEntry);
+		}
+
+		[Test] // GetHostEntry (IPAddress)
+		public void GetHostEntry1_Address_Null ()
+		{
+			try {
+				Dns.GetHostEntry ((IPAddress) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("address", ex.ParamName, "#5");
+			}
+		}
+
+		[Test] // GetHostEntry (String)
+		public void GetHostEntry2 ()
+		{
+			Dns.GetHostEntry (site1Name); // hostname
+			Dns.GetHostEntry (site1Dot); // IP address
+		}
+
+		[Test] // GetHostEntry (String)
+		public void GetHostEntry2_HostNameOrAddress_Null ()
+		{
+			try {
+				Dns.GetHostEntry ((string) null);
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#5");
+			}
+		}
+
+		[Test] // GetHostEntry (String)
+		public void GetHostEntry2_HostNameOrAddress_UnspecifiedAddress ()
+		{
+			// IPv4
+			try {
+				Dns.GetHostEntry ("0.0.0.0");
+				Assert.Fail ("#A1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+				Assert.IsNull (ex.InnerException, "#A3");
+				Assert.IsNotNull (ex.Message, "#A4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#A5");
+			}
+
+			// IPv6
+			try {
+				Dns.GetHostEntry ("::0");
+				Assert.Fail ("#B1");
+			} catch (ArgumentException ex) {
+				// IPv4 address 0.0.0.0 and IPv6 address ::0 are
+				// unspecified addresses that cannot be used as
+				// a target address
+				Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+				Assert.IsNull (ex.InnerException, "#B3");
+				Assert.IsNotNull (ex.Message, "#B4");
+				Assert.AreEqual ("hostNameOrAddress", ex.ParamName, "#B5");
+			}
+		}
+
+		void SubTestValidIPHostEntry (IPHostEntry h)
+		{
+			Assert.IsNotNull (h.HostName, "HostName not null");
+			Assert.IsNotNull (h.AddressList, "AddressList not null");
+			Assert.IsTrue (h.AddressList.Length > 0, "AddressList.Length");
+		}
+
+		[Test]
+		public void GetHostEntry_StringEmpty ()
+		{
+			Dns.GetHostEntry (string.Empty);
+		}
+
+		/* This isn't used anymore, but could be useful for debugging
+		static void printIPHostEntry(IPHostEntry h)
+		{
+			Console.WriteLine("----------------------------------------------------");
+			Console.WriteLine("Host name:");
+			Console.WriteLine(h.HostName);
+			Console.WriteLine("IP addresses:");
+			IPAddress[] list = h.AddressList;
+			for(int i = 0; i < list.Length; ++i)
+				Console.WriteLine(list[i]);
+			Console.WriteLine("Aliases:");
+			string[] aliases = h.Aliases;
+			for(int i = 0; i < aliases.Length; ++i)
+				Console.WriteLine(aliases[i]);
+			Console.WriteLine("----------------------------------------------------");
+		}
+		*/
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Net/ServicePointManagerTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Net/ServicePointManagerTest.cs
@@ -1,119 +1,119 @@
-//
-// ServicePointManagerTest.cs - NUnit Test Cases for System.Net.ServicePointManager
-//
-// Authors:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//   Martin Willemoes Hansen (mwh@sysrq.dk)
-//
-// (C) 2003 Martin Willemoes Hansen
-//
-
-using NUnit.Framework;
-using System;
-using System.Collections;
-using System.IO;
-using System.Net;
-using System.Threading;
-
-namespace MonoTests.System.Net
-{
-
-[TestFixture]
-public class ServicePointManagerTest
-{
-	private Uri googleUri;
-	private Uri yahooUri;
-	private Uri apacheUri;
-	private int maxIdle;
-	
-	[SetUp]
-        public void GetReady () 
-	{
-		maxIdle = ServicePointManager.MaxServicePointIdleTime;
-		ServicePointManager.MaxServicePointIdleTime = 10;
-		googleUri = new Uri ("http://www.google.com");
-		yahooUri = new Uri ("http://www.yahoo.com");
-		apacheUri = new Uri ("http://www.apache.org");
-	}
-
-	[TearDown]
-	public void Finish ()
-	{
-		ServicePointManager.MaxServicePointIdleTime = maxIdle;
-	}
-
-        [Test, ExpectedException (typeof (InvalidOperationException))]
-		[Category ("InetAccess")]
-        public void MaxServicePointManagers ()
-        {
-		Assert.AreEqual (0, ServicePointManager.MaxServicePoints, "#1");
-		
-		DoWebRequest (googleUri);
-		Thread.Sleep (100);
-		DoWebRequest (yahooUri);
-		Thread.Sleep (100);
-		DoWebRequest (apacheUri);
-		Thread.Sleep (100);
-		
-		ServicePoint sp = ServicePointManager.FindServicePoint (googleUri);
-		//WriteServicePoint (sp);
-		sp = ServicePointManager.FindServicePoint (yahooUri);
-		//WriteServicePoint (sp);
-		sp = ServicePointManager.FindServicePoint (apacheUri);
-		//WriteServicePoint (sp);
-		
-		ServicePointManager.MaxServicePoints = 1;
-
-		sp = ServicePointManager.FindServicePoint (googleUri);
-		//WriteServicePoint (sp);
-		sp = ServicePointManager.FindServicePoint (yahooUri);
-		//WriteServicePoint (sp);
-		sp = ServicePointManager.FindServicePoint (apacheUri);
-		//WriteServicePoint (sp);
-		
-		GC.Collect ();
-		
-		// hmm... aparently ms.net still has the service points even
-		// though I set it to a max of 1.
-		
-		// this should force an exception then...		
-		sp = ServicePointManager.FindServicePoint (new Uri ("http://www.microsoft.com"));
-		//WriteServicePoint (sp);
-	}
-	
-        [Test]
-	public void FindServicePoint ()
-	{
-		ServicePointManager.MaxServicePoints = 0;
-		ServicePoint sp = ServicePointManager.FindServicePoint (googleUri, new WebProxy (apacheUri));
-		Assert.AreEqual (apacheUri, sp.Address, "#1");
-#if NET_2_1 && !MONODROID
-		Assert.AreEqual (10, sp.ConnectionLimit, "#2");
-#else
-		Assert.AreEqual (2, sp.ConnectionLimit, "#2");
-#endif
-		Assert.AreEqual ("http", sp.ConnectionName, "#3");
-	}
-	
-	private void DoWebRequest (Uri uri)
-	{
-		WebRequest.Create (uri).GetResponse ().Close ();
-	}
-
-/* Unused code for now, but might be useful later for debugging
-	private void WriteServicePoint (ServicePoint sp)
-	{
-		Console.WriteLine ("\nAddress: " + sp.Address);
-		Console.WriteLine ("ConnectionLimit: " + sp.ConnectionLimit);
-		Console.WriteLine ("ConnectionName: " + sp.ConnectionName);
-		Console.WriteLine ("CurrentConnections: " + sp.CurrentConnections);
-		Console.WriteLine ("IdleSince: " + sp.IdleSince);
-		Console.WriteLine ("MaxIdletime: " + sp.MaxIdleTime);
-		Console.WriteLine ("ProtocolVersion: " + sp.ProtocolVersion);
-		Console.WriteLine ("SupportsPipelining: " + sp.SupportsPipelining);		
-	}
-*/
-
-}
-}
-
+//
+// ServicePointManagerTest.cs - NUnit Test Cases for System.Net.ServicePointManager
+//
+// Authors:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//   Martin Willemoes Hansen (mwh@sysrq.dk)
+//
+// (C) 2003 Martin Willemoes Hansen
+//
+
+using NUnit.Framework;
+using System;
+using System.Collections;
+using System.IO;
+using System.Net;
+using System.Threading;
+
+namespace MonoTests.System.Net
+{
+
+[TestFixture]
+public class ServicePointManagerTest
+{
+	private Uri googleUri;
+	private Uri yahooUri;
+	private Uri apacheUri;
+	private int maxIdle;
+	
+	[SetUp]
+        public void GetReady () 
+	{
+		maxIdle = ServicePointManager.MaxServicePointIdleTime;
+		ServicePointManager.MaxServicePointIdleTime = 10;
+		googleUri = new Uri ("http://www.google.com");
+		yahooUri = new Uri ("http://www.yahoo.com");
+		apacheUri = new Uri ("http://www.apache.org");
+	}
+
+	[TearDown]
+	public void Finish ()
+	{
+		ServicePointManager.MaxServicePointIdleTime = maxIdle;
+	}
+
+        [Test, ExpectedException (typeof (InvalidOperationException))]
+		[Category ("InetAccess")]
+        public void MaxServicePointManagers ()
+        {
+		Assert.AreEqual (0, ServicePointManager.MaxServicePoints, "#1");
+		
+		DoWebRequest (googleUri);
+		Thread.Sleep (100);
+		DoWebRequest (yahooUri);
+		Thread.Sleep (100);
+		DoWebRequest (apacheUri);
+		Thread.Sleep (100);
+		
+		ServicePoint sp = ServicePointManager.FindServicePoint (googleUri);
+		//WriteServicePoint (sp);
+		sp = ServicePointManager.FindServicePoint (yahooUri);
+		//WriteServicePoint (sp);
+		sp = ServicePointManager.FindServicePoint (apacheUri);
+		//WriteServicePoint (sp);
+		
+		ServicePointManager.MaxServicePoints = 1;
+
+		sp = ServicePointManager.FindServicePoint (googleUri);
+		//WriteServicePoint (sp);
+		sp = ServicePointManager.FindServicePoint (yahooUri);
+		//WriteServicePoint (sp);
+		sp = ServicePointManager.FindServicePoint (apacheUri);
+		//WriteServicePoint (sp);
+		
+		GC.Collect ();
+		
+		// hmm... aparently ms.net still has the service points even
+		// though I set it to a max of 1.
+		
+		// this should force an exception then...		
+		sp = ServicePointManager.FindServicePoint (new Uri ("http://www.microsoft.com"));
+		//WriteServicePoint (sp);
+	}
+	
+        [Test]
+	public void FindServicePoint ()
+	{
+		ServicePointManager.MaxServicePoints = 0;
+		ServicePoint sp = ServicePointManager.FindServicePoint (googleUri, new WebProxy (apacheUri));
+		Assert.AreEqual (apacheUri, sp.Address, "#1");
+#if NET_2_1 && !MONODROID
+		Assert.AreEqual (10, sp.ConnectionLimit, "#2");
+#else
+		Assert.AreEqual (2, sp.ConnectionLimit, "#2");
+#endif
+		Assert.AreEqual ("http", sp.ConnectionName, "#3");
+	}
+	
+	private void DoWebRequest (Uri uri)
+	{
+		WebRequest.Create (uri).GetResponse ().Close ();
+	}
+
+/* Unused code for now, but might be useful later for debugging
+	private void WriteServicePoint (ServicePoint sp)
+	{
+		Console.WriteLine ("\nAddress: " + sp.Address);
+		Console.WriteLine ("ConnectionLimit: " + sp.ConnectionLimit);
+		Console.WriteLine ("ConnectionName: " + sp.ConnectionName);
+		Console.WriteLine ("CurrentConnections: " + sp.CurrentConnections);
+		Console.WriteLine ("IdleSince: " + sp.IdleSince);
+		Console.WriteLine ("MaxIdletime: " + sp.MaxIdleTime);
+		Console.WriteLine ("ProtocolVersion: " + sp.ProtocolVersion);
+		Console.WriteLine ("SupportsPipelining: " + sp.SupportsPipelining);		
+	}
+*/
+
+}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Net/ServicePointTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Net/ServicePointTest.cs
@@ -1,211 +1,211 @@
-//
-// ServicePointTest.cs - NUnit Test Cases for System.Net.ServicePoint
-//
-// Authors:
-//   Lawrence Pit (loz@cable.a2000.nl)
-//   Martin Willemoes Hansen (mwh@sysrq.dk)
-//
-// (C) 2003 Martin Willemoes Hansen
-//
-
-using NUnit.Framework;
-using System;
-using System.Collections;
-using System.IO;
-using System.Net;
+//
+// ServicePointTest.cs - NUnit Test Cases for System.Net.ServicePoint
+//
+// Authors:
+//   Lawrence Pit (loz@cable.a2000.nl)
+//   Martin Willemoes Hansen (mwh@sysrq.dk)
+//
+// (C) 2003 Martin Willemoes Hansen
+//
+
+using NUnit.Framework;
+using System;
+using System.Collections;
+using System.IO;
+using System.Net;
 using System.Reflection;
-using System.Threading;
-
-namespace MonoTests.System.Net
-{
-
-[TestFixture]
-public class ServicePointTest
-{
-	static private int max;
-	[SetUp]
-	public void SaveMax () {
-		max = ServicePointManager.MaxServicePoints;
-		ServicePointManager.MaxServicePoints = 0;
-	}
-
-	[TearDown]
-	public void RestoreMax () {
-		ServicePointManager.MaxServicePoints = max;
-	}
-
-        [Test]
-		[Category ("InetAccess")]
-        public void All ()
-        {
-		ServicePoint p = ServicePointManager.FindServicePoint (new Uri ("mailto:xx@yyy.com"));
-		//WriteServicePoint ("A servicepoint that isn't really", p);			
-		
-		ServicePointManager.MaxServicePoints = 2;
-		ServicePoint google = ServicePointManager.FindServicePoint (new Uri ("http://www.google.com"));
-		try {			
-			ServicePoint slashdot = ServicePointManager.FindServicePoint (new Uri ("http://www.slashdot.org"));
-			Assert.Fail ("#1");
-		} catch (InvalidOperationException) { }
-		ServicePointManager.MaxServicePoints = 0;
-		
-		//WriteServicePoint ("google before getting a webrequest", google);
-		
-		HttpWebRequest req = (HttpWebRequest) WebRequest.Create ("http://www.google.com");
-		HttpWebResponse res = (HttpWebResponse) req.GetResponse ();			
-		
+using System.Threading;
+
+namespace MonoTests.System.Net
+{
+
+[TestFixture]
+public class ServicePointTest
+{
+	static private int max;
+	[SetUp]
+	public void SaveMax () {
+		max = ServicePointManager.MaxServicePoints;
+		ServicePointManager.MaxServicePoints = 0;
+	}
+
+	[TearDown]
+	public void RestoreMax () {
+		ServicePointManager.MaxServicePoints = max;
+	}
+
+        [Test]
+		[Category ("InetAccess")]
+        public void All ()
+        {
+		ServicePoint p = ServicePointManager.FindServicePoint (new Uri ("mailto:xx@yyy.com"));
+		//WriteServicePoint ("A servicepoint that isn't really", p);			
+		
+		ServicePointManager.MaxServicePoints = 2;
+		ServicePoint google = ServicePointManager.FindServicePoint (new Uri ("http://www.google.com"));
+		try {			
+			ServicePoint slashdot = ServicePointManager.FindServicePoint (new Uri ("http://www.slashdot.org"));
+			Assert.Fail ("#1");
+		} catch (InvalidOperationException) { }
+		ServicePointManager.MaxServicePoints = 0;
+		
+		//WriteServicePoint ("google before getting a webrequest", google);
+		
+		HttpWebRequest req = (HttpWebRequest) WebRequest.Create ("http://www.google.com");
+		HttpWebResponse res = (HttpWebResponse) req.GetResponse ();			
+		
 #if FOUND_SOME_OTHER_URL
 		// URL is no longer found, disabled the test until a more reliable URL is found :P
-		//WriteServicePoint ("google after getting a response", google);
-		ServicePoint google2 = ServicePointManager.FindServicePoint (new Uri ("http://www.google.com/dilbert.html"));
-		Assert.AreEqual (google, google2, "#equals");
-		res.Close ();
+		//WriteServicePoint ("google after getting a response", google);
+		ServicePoint google2 = ServicePointManager.FindServicePoint (new Uri ("http://www.google.com/dilbert.html"));
+		Assert.AreEqual (google, google2, "#equals");
+		res.Close ();
 #endif
-		
-		// in both instances property CurrentConnections is 0 according to ms.net.
-		// let's see what it says when we do async operations...
-		
-		HttpWebRequest req2 = (HttpWebRequest) WebRequest.Create ("http://www.google.com");
-		req2.Method = "PUT";
-		IAsyncResult async = req2.BeginGetRequestStream (null, null);
-		//WriteServicePoint ("after async BeginGetRequestStream", google);
-		// CurrentConnections: 1
-		Stream stream2 = req2.EndGetRequestStream (async);
-		//WriteServicePoint ("after async EndGetRequestStream", google);
-		// CurrentConnections: 1
-		stream2.Close ();
-		
-		req2 = (HttpWebRequest) WebRequest.Create ("http://www.google.com");
-		async = req2.BeginGetResponse (null, null);
-		//WriteServicePoint ("after async BeginGetResponse", google);
-		// CurrentConnections: 2
-		WebResponse res2 = req2.EndGetResponse (async);
-		//WriteServicePoint ("after async EndGetResponse", google);
-		// CurrentConnections: 0			
-		// curious that after you get the webresponse object CurrentConnections is set to 0.
-		// you'd think that you'd still be connected until you close the webresponse..
-		//Console.WriteLine ("ContentLength: " + res2.ContentLength);
-		res2.Close ();
-		
+		
+		// in both instances property CurrentConnections is 0 according to ms.net.
+		// let's see what it says when we do async operations...
+		
+		HttpWebRequest req2 = (HttpWebRequest) WebRequest.Create ("http://www.google.com");
+		req2.Method = "PUT";
+		IAsyncResult async = req2.BeginGetRequestStream (null, null);
+		//WriteServicePoint ("after async BeginGetRequestStream", google);
+		// CurrentConnections: 1
+		Stream stream2 = req2.EndGetRequestStream (async);
+		//WriteServicePoint ("after async EndGetRequestStream", google);
+		// CurrentConnections: 1
+		stream2.Close ();
+		
+		req2 = (HttpWebRequest) WebRequest.Create ("http://www.google.com");
+		async = req2.BeginGetResponse (null, null);
+		//WriteServicePoint ("after async BeginGetResponse", google);
+		// CurrentConnections: 2
+		WebResponse res2 = req2.EndGetResponse (async);
+		//WriteServicePoint ("after async EndGetResponse", google);
+		// CurrentConnections: 0			
+		// curious that after you get the webresponse object CurrentConnections is set to 0.
+		// you'd think that you'd still be connected until you close the webresponse..
+		//Console.WriteLine ("ContentLength: " + res2.ContentLength);
+		res2.Close ();
+		
 		ServicePoint sp2;
 #if FOUND_SOME_OTHER_URL
-		// unless of course some buffering is taking place.. let's check
-		Uri uri2 = new Uri ("http://freedesktop.org/Software/pkgconfig/releases/pkgconfig-0.15.0.tar.gz");
-		sp2 = ServicePointManager.FindServicePoint (uri2);
-		req2 = (HttpWebRequest) WebRequest.Create (uri2);
-		async = req2.BeginGetResponse (null, null);
-		//WriteServicePoint ("Large file: after async BeginGetResponse", sp2);
-		// CurrentConnections: 1
-		res2 = req2.EndGetResponse (async);
-		//WriteServicePoint ("Large file: after async EndGetResponse", sp2);
-		// CurrentConnections: 1
-		// and so it shows
-		//Console.WriteLine ("ContentLength: " + res2.ContentLength);
-		res2.Close ();
+		// unless of course some buffering is taking place.. let's check
+		Uri uri2 = new Uri ("http://freedesktop.org/Software/pkgconfig/releases/pkgconfig-0.15.0.tar.gz");
+		sp2 = ServicePointManager.FindServicePoint (uri2);
+		req2 = (HttpWebRequest) WebRequest.Create (uri2);
+		async = req2.BeginGetResponse (null, null);
+		//WriteServicePoint ("Large file: after async BeginGetResponse", sp2);
+		// CurrentConnections: 1
+		res2 = req2.EndGetResponse (async);
+		//WriteServicePoint ("Large file: after async EndGetResponse", sp2);
+		// CurrentConnections: 1
+		// and so it shows
+		//Console.WriteLine ("ContentLength: " + res2.ContentLength);
+		res2.Close ();
 #endif
-		
-		
-		// what's the limit of the cache?
-		req2 = (HttpWebRequest) WebRequest.Create ("http://www.apache.org/");
-		res2 = req2.GetResponse ();
-		sp2 = ServicePointManager.FindServicePoint (new Uri("http://www.apache.org/"));
-		//WriteServicePoint ("apache", sp2);
-		//Console.WriteLine ("ContentLength: " + res2.ContentLength);
-		// CurrentConnections: 1
-		res2.Close ();
-		// curious other effect: address is actually the full Uri of the previous request
-		// anyways, buffer is probably 4096 bytes
-	}
-
-	// try getting the stream to 5 web response objects	
-	// while ConnectionLimit equals 2
-
-	[Test]
-	[Category ("InetAccess")]
-	public void ConnectionLimit ()
-	{		
-		// the default is already 2, just in case it isn't..
-		ServicePointManager.DefaultConnectionLimit = 5;
-		
-		Uri uri = new Uri ("http://www.go-mono.com/");
-		ServicePoint sp = ServicePointManager.FindServicePoint (uri);			
-		WebResponse [] res = new WebResponse [5];
-		for (int i = 0; i < 5; i++) {
-			//Console.WriteLine ("GOT1 : " + i);
-			HttpWebRequest req = (HttpWebRequest) WebRequest.Create (uri);
-			//Console.WriteLine ("GOT2 : " + i);
-			res [i] = req.GetResponse ();
-			//WriteServicePoint ("after getting " + (i + 1) + " web response objects", sp);
-		}
-		
-		for (int i = 0; i < 5; i++) {
-			Stream stream = res [i].GetResponseStream();
-			//Console.WriteLine ("Reading stream: " + i + " : " + stream);
-			int len = 0;
-			while (stream.ReadByte () != -1)
-				len++;
-			//Console.WriteLine ("Finished reading: " + len + " bytes");
-		}
-		
-		for (int i = 0; i < 5; i++) {
-			res [i].Close ();
-		}
-	}
-
-	[Test]
-	[Category ("InetAccess")]
+		
+		
+		// what's the limit of the cache?
+		req2 = (HttpWebRequest) WebRequest.Create ("http://www.apache.org/");
+		res2 = req2.GetResponse ();
+		sp2 = ServicePointManager.FindServicePoint (new Uri("http://www.apache.org/"));
+		//WriteServicePoint ("apache", sp2);
+		//Console.WriteLine ("ContentLength: " + res2.ContentLength);
+		// CurrentConnections: 1
+		res2.Close ();
+		// curious other effect: address is actually the full Uri of the previous request
+		// anyways, buffer is probably 4096 bytes
+	}
+
+	// try getting the stream to 5 web response objects	
+	// while ConnectionLimit equals 2
+
+	[Test]
+	[Category ("InetAccess")]
+	public void ConnectionLimit ()
+	{		
+		// the default is already 2, just in case it isn't..
+		ServicePointManager.DefaultConnectionLimit = 5;
+		
+		Uri uri = new Uri ("http://www.go-mono.com/");
+		ServicePoint sp = ServicePointManager.FindServicePoint (uri);			
+		WebResponse [] res = new WebResponse [5];
+		for (int i = 0; i < 5; i++) {
+			//Console.WriteLine ("GOT1 : " + i);
+			HttpWebRequest req = (HttpWebRequest) WebRequest.Create (uri);
+			//Console.WriteLine ("GOT2 : " + i);
+			res [i] = req.GetResponse ();
+			//WriteServicePoint ("after getting " + (i + 1) + " web response objects", sp);
+		}
+		
+		for (int i = 0; i < 5; i++) {
+			Stream stream = res [i].GetResponseStream();
+			//Console.WriteLine ("Reading stream: " + i + " : " + stream);
+			int len = 0;
+			while (stream.ReadByte () != -1)
+				len++;
+			//Console.WriteLine ("Finished reading: " + len + " bytes");
+		}
+		
+		for (int i = 0; i < 5; i++) {
+			res [i].Close ();
+		}
+	}
+
+	[Test]
+	[Category ("InetAccess")]
 	[Category ("AndroidNotWorking")] // #A1 fails
-	public void EndPointBind ()
-	{
-		Uri uri = new Uri ("http://www.go-mono.com/");
-		ServicePoint sp = ServicePointManager.FindServicePoint (uri);
-
-		HttpWebRequest req = (HttpWebRequest) WebRequest.Create (uri);
-
-		bool called = false;
-		sp.BindIPEndPointDelegate = delegate {
-			Assert.IsTrue (!called);
-			called = true;
-			return null;
-		};
-		req.GetResponse ().Close ();
-
-		Assert.IsTrue (called, "#A1");
-
-		req = (HttpWebRequest) WebRequest.Create (uri);
-		called = false;
-		sp.BindIPEndPointDelegate = delegate(ServicePoint point, IPEndPoint remote, int times) {
-			Assert.IsTrue (times < 5);
-			called = true;
-			return new IPEndPoint(IPAddress.Parse("0.0.0.0"), 12345 + times);
-		};
-		req.GetResponse ().Close ();
-
-		Assert.IsTrue (called, "#A2");
-	}
-
-	public static void GetRequestStreamCallback (IAsyncResult asynchronousResult)
-	{
-	}
-
-	[Test] //Covers #19823
-	public void CloseConnectionGroupConcurency ()
-	{
-		// Try with multiple service points
-		for (var i = 0; i < 10; i++) {
-			Uri targetUri = new Uri ("http://" + i + ".mono-project.com");
-			var req = (HttpWebRequest) HttpWebRequest.Create (targetUri);
-			req.ContentType = "application/x-www-form-urlencoded";
-			req.Method = "POST";
-			req.ConnectionGroupName = "" + i;
-			req.ServicePoint.MaxIdleTime = 1;
-
-			req.BeginGetRequestStream (new AsyncCallback (GetRequestStreamCallback), req);
-			Thread.Sleep (1);
-			req.ServicePoint.CloseConnectionGroup (req.ConnectionGroupName);
-		}
-	}
-
+	public void EndPointBind ()
+	{
+		Uri uri = new Uri ("http://www.go-mono.com/");
+		ServicePoint sp = ServicePointManager.FindServicePoint (uri);
+
+		HttpWebRequest req = (HttpWebRequest) WebRequest.Create (uri);
+
+		bool called = false;
+		sp.BindIPEndPointDelegate = delegate {
+			Assert.IsTrue (!called);
+			called = true;
+			return null;
+		};
+		req.GetResponse ().Close ();
+
+		Assert.IsTrue (called, "#A1");
+
+		req = (HttpWebRequest) WebRequest.Create (uri);
+		called = false;
+		sp.BindIPEndPointDelegate = delegate(ServicePoint point, IPEndPoint remote, int times) {
+			Assert.IsTrue (times < 5);
+			called = true;
+			return new IPEndPoint(IPAddress.Parse("0.0.0.0"), 12345 + times);
+		};
+		req.GetResponse ().Close ();
+
+		Assert.IsTrue (called, "#A2");
+	}
+
+	public static void GetRequestStreamCallback (IAsyncResult asynchronousResult)
+	{
+	}
+
+	[Test] //Covers #19823
+	public void CloseConnectionGroupConcurency ()
+	{
+		// Try with multiple service points
+		for (var i = 0; i < 10; i++) {
+			Uri targetUri = new Uri ("http://" + i + ".mono-project.com");
+			var req = (HttpWebRequest) HttpWebRequest.Create (targetUri);
+			req.ContentType = "application/x-www-form-urlencoded";
+			req.Method = "POST";
+			req.ConnectionGroupName = "" + i;
+			req.ServicePoint.MaxIdleTime = 1;
+
+			req.BeginGetRequestStream (new AsyncCallback (GetRequestStreamCallback), req);
+			Thread.Sleep (1);
+			req.ServicePoint.CloseConnectionGroup (req.ConnectionGroupName);
+		}
+	}
+
 
 	[Test]
 	public void DnsRefreshTimeout ()
@@ -236,21 +236,21 @@ public class ServicePointTest
 				"object when DnsRefreshTimeout is reached.");
 	}
 
-// Debug code not used now, but could be useful later
-/*
-	private void WriteServicePoint (string label, ServicePoint sp)
-	{
-		Console.WriteLine ("\n" + label);
-		Console.WriteLine ("Address: " + sp.Address);
-		Console.WriteLine ("ConnectionLimit: " + sp.ConnectionLimit);
-		Console.WriteLine ("ConnectionName: " + sp.ConnectionName);
-		Console.WriteLine ("CurrentConnections: " + sp.CurrentConnections);
-		Console.WriteLine ("IdleSince: " + sp.IdleSince);
-		Console.WriteLine ("MaxIdletime: " + sp.MaxIdleTime);
-		Console.WriteLine ("ProtocolVersion: " + sp.ProtocolVersion);
-		Console.WriteLine ("SupportsPipelining: " + sp.SupportsPipelining);		
-	}
-*/
-}
-}
-
+// Debug code not used now, but could be useful later
+/*
+	private void WriteServicePoint (string label, ServicePoint sp)
+	{
+		Console.WriteLine ("\n" + label);
+		Console.WriteLine ("Address: " + sp.Address);
+		Console.WriteLine ("ConnectionLimit: " + sp.ConnectionLimit);
+		Console.WriteLine ("ConnectionName: " + sp.ConnectionName);
+		Console.WriteLine ("CurrentConnections: " + sp.CurrentConnections);
+		Console.WriteLine ("IdleSince: " + sp.IdleSince);
+		Console.WriteLine ("MaxIdletime: " + sp.MaxIdleTime);
+		Console.WriteLine ("ProtocolVersion: " + sp.ProtocolVersion);
+		Console.WriteLine ("SupportsPipelining: " + sp.SupportsPipelining);		
+	}
+*/
+}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Net/WebRequestTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Net/WebRequestTest.cs
@@ -1,416 +1,416 @@
-//
-// WebRequestTest.cs - NUnit Test Cases for System.Net.WebRequest
-//
-// Authors:
-//	Lawrence Pit (loz@cable.a2000.nl)
-//	Martin Willemoes Hansen (mwh@sysrq.dk)
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Martin Willemoes Hansen
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-
-using NUnit.Framework;
-using System;
-using System.Net;
-using System.Collections;
-using System.Runtime.Serialization;
-using Socks = System.Net.Sockets;
-
-
-namespace MonoTests.System.Net {
-
-	// WebRequest is abstract
-
-	public class NonAbstractWebRequest : WebRequest
-	{
-
-		public NonAbstractWebRequest ()
-		{
-		}
-
-		public NonAbstractWebRequest (SerializationInfo si, StreamingContext sc)
-			: base (si, sc)
-		{
-		}
-	}
-
-	[TestFixture]
-	public class WebRequestTest {
-
-		private void Callback (IAsyncResult ar)
-		{
-			Assert.Fail ("Callback");
-		}
-
-		[Test]
-		public void SerializationConstructor ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest (null, new StreamingContext ());
-			Assert.IsNotNull (w);
-		}
-
-		// properties (only test 'get'ter)
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void ConnectionGroupName ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.ConnectionGroupName);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void ContentLength ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.ContentLength);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void ContentType ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.ContentType);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void Credentials ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.Credentials);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void Headers ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.Headers);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void Method ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.Method);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void PreAuthenticate ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsTrue (w.PreAuthenticate);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void Proxy ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.Proxy);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void RequestUri ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.RequestUri);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void Timeout ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			Assert.IsNull (w.Timeout);
-		}
-
-		// methods
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void Abort ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			w.Abort ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void BeginGetRequestStream ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			IAsyncResult r = w.BeginGetRequestStream (new AsyncCallback (Callback), w);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void BeginGetResponse ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			IAsyncResult r = w.BeginGetResponse (new AsyncCallback (Callback), w);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void EndGetRequestStream ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			w.EndGetRequestStream (null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void EndGetResponse ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			w.EndGetResponse (null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void GetRequestStream ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			w.GetRequestStream ();
-		}
-
-		[Test]
-		[ExpectedException (typeof (NotImplementedException))]
-		public void GetResponse ()
-		{
-			NonAbstractWebRequest w = new NonAbstractWebRequest ();
-			w.GetResponse ();
-		}
-
-	[Test]
-	public void All ()
-	{
-		WebRequest req = WebRequest.Create ("http://www.contoso.com");
-		Assert.IsTrue (req is HttpWebRequest, "#1");
-		req = WebRequest.Create ("https://www.contoso.com");
-		Assert.IsTrue (req is HttpWebRequest, "#2");
-		req = WebRequest.Create ("file://www.contoso.com");
-		Assert.IsTrue (req is FileWebRequest, "#3");
-		req = WebRequest.Create ("ftp://www.contoso.com");
-		Assert.IsTrue (req is FtpWebRequest, "#4");
-		WebRequest.RegisterPrefix ("http://www.contoso.com", new TestWebRequestCreator ());
-		bool ret = WebRequest.RegisterPrefix ("http://WWW.contoso.com", new TestWebRequestCreator ());
-		Assert.AreEqual (false, ret, "#5a");
-		ret = WebRequest.RegisterPrefix ("http://www.contoso.com/foo/bar", new TestWebRequestCreator2 ());
-		Assert.AreEqual (true, ret, "#5b");
-		ret = WebRequest.RegisterPrefix ("http://www", new TestWebRequestCreator3 ());
-		Assert.AreEqual (true, ret, "#5c");
-
-		req = WebRequest.Create ("http://WWW.contoso.com");
-		Assert.IsTrue (req is TestWebRequest, "#6"); 
-
-		req = WebRequest.Create ("http://WWW.contoso.com/foo/bar/index.html");
-		Assert.IsTrue (req is TestWebRequest2, "#7"); 
-		
-		req = WebRequest.Create ("http://WWW.x.com");
-		Assert.IsTrue (req is TestWebRequest3, "#8"); 
-
-		req = WebRequest.Create ("http://WWW.c");
-		Assert.IsTrue (req is TestWebRequest3, "#9"); 
-
-		req = WebRequest.CreateDefault (new Uri("http://WWW.contoso.com"));
-		Assert.IsTrue (req is HttpWebRequest, "#10");
-
-		try {
-			req = WebRequest.Create ("tcp://www.contoso.com");
-			Assert.Fail ("#11 should have failed with NotSupportedException");
-		} catch (NotSupportedException) {
-		}
-	}
-
-	[Test]
-	public void Create_RequestUriString_Null ()
-	{
-		try {
-			WebRequest.Create ((string) null);
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException ex) {
-			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNotNull (ex.ParamName, "#5");
-			Assert.AreEqual ("requestUriString", ex.ParamName, "#6");
-		}
-	}
-
-	[Test]
-	public void CreateDefault_RequestUri_Null ()
-	{
-		try {
-			WebRequest.CreateDefault ((Uri) null);
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException ex) {
-			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNotNull (ex.ParamName, "#5");
-			Assert.AreEqual ("requestUri", ex.ParamName, "#6");
-		}
-	}
-
-	[Test]
-	public void DefaultWebProxy ()
-	{
-		WebProxy proxy = new WebProxy ("proxy.intern.com", 83);
-
-		WebRequest.DefaultWebProxy = proxy;
-		Assert.IsNotNull (WebRequest.DefaultWebProxy, "#A1");
-		Assert.AreSame (proxy, WebRequest.DefaultWebProxy, "#A2");
-
-		HttpWebRequest req = (HttpWebRequest) WebRequest.CreateDefault (
-			new Uri ("http://www.mono-project.com"));
-		Assert.IsNotNull (req.Proxy, "#B1");
-		Assert.AreSame (proxy, req.Proxy, "#B2");
-
-		WebRequest.DefaultWebProxy = null;
-		Assert.IsNull (WebRequest.DefaultWebProxy, "#C1");
-		Assert.IsNotNull (req.Proxy, "#C2");
-		Assert.AreSame (proxy, req.Proxy, "#C3");
-
-		req = (HttpWebRequest) WebRequest.CreateDefault (
-			new Uri ("http://www.mono-project.com"));
-		Assert.IsNull (req.Proxy, "#D");
-	}
-
-	[Test]
-	public void RegisterPrefix_Creator_Null ()
-	{
-		try {
-			WebRequest.RegisterPrefix ("http://www.mono-project.com", (IWebRequestCreate) null);
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException ex) {
-			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNotNull (ex.ParamName, "#5");
-			Assert.AreEqual ("creator", ex.ParamName, "#6");
-		}
-	}
-
-	[Test]
-	public void RegisterPrefix_Prefix_Null ()
-	{
-		try {
-			WebRequest.RegisterPrefix ((string) null, new TestWebRequestCreator ());
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException ex) {
-			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNotNull (ex.ParamName, "#5");
-			Assert.AreEqual ("prefix", ex.ParamName, "#6");
-		}
-	}
-
-	[Test] //BNC#323452
+//
+// WebRequestTest.cs - NUnit Test Cases for System.Net.WebRequest
+//
+// Authors:
+//	Lawrence Pit (loz@cable.a2000.nl)
+//	Martin Willemoes Hansen (mwh@sysrq.dk)
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// (C) 2003 Martin Willemoes Hansen
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+//
+
+using NUnit.Framework;
+using System;
+using System.Net;
+using System.Collections;
+using System.Runtime.Serialization;
+using Socks = System.Net.Sockets;
+
+
+namespace MonoTests.System.Net {
+
+	// WebRequest is abstract
+
+	public class NonAbstractWebRequest : WebRequest
+	{
+
+		public NonAbstractWebRequest ()
+		{
+		}
+
+		public NonAbstractWebRequest (SerializationInfo si, StreamingContext sc)
+			: base (si, sc)
+		{
+		}
+	}
+
+	[TestFixture]
+	public class WebRequestTest {
+
+		private void Callback (IAsyncResult ar)
+		{
+			Assert.Fail ("Callback");
+		}
+
+		[Test]
+		public void SerializationConstructor ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest (null, new StreamingContext ());
+			Assert.IsNotNull (w);
+		}
+
+		// properties (only test 'get'ter)
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void ConnectionGroupName ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.ConnectionGroupName);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void ContentLength ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.ContentLength);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void ContentType ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.ContentType);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void Credentials ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.Credentials);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void Headers ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.Headers);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void Method ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.Method);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void PreAuthenticate ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsTrue (w.PreAuthenticate);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void Proxy ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.Proxy);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void RequestUri ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.RequestUri);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void Timeout ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			Assert.IsNull (w.Timeout);
+		}
+
+		// methods
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void Abort ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			w.Abort ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void BeginGetRequestStream ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			IAsyncResult r = w.BeginGetRequestStream (new AsyncCallback (Callback), w);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void BeginGetResponse ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			IAsyncResult r = w.BeginGetResponse (new AsyncCallback (Callback), w);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void EndGetRequestStream ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			w.EndGetRequestStream (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void EndGetResponse ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			w.EndGetResponse (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void GetRequestStream ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			w.GetRequestStream ();
+		}
+
+		[Test]
+		[ExpectedException (typeof (NotImplementedException))]
+		public void GetResponse ()
+		{
+			NonAbstractWebRequest w = new NonAbstractWebRequest ();
+			w.GetResponse ();
+		}
+
+	[Test]
+	public void All ()
+	{
+		WebRequest req = WebRequest.Create ("http://www.contoso.com");
+		Assert.IsTrue (req is HttpWebRequest, "#1");
+		req = WebRequest.Create ("https://www.contoso.com");
+		Assert.IsTrue (req is HttpWebRequest, "#2");
+		req = WebRequest.Create ("file://www.contoso.com");
+		Assert.IsTrue (req is FileWebRequest, "#3");
+		req = WebRequest.Create ("ftp://www.contoso.com");
+		Assert.IsTrue (req is FtpWebRequest, "#4");
+		WebRequest.RegisterPrefix ("http://www.contoso.com", new TestWebRequestCreator ());
+		bool ret = WebRequest.RegisterPrefix ("http://WWW.contoso.com", new TestWebRequestCreator ());
+		Assert.AreEqual (false, ret, "#5a");
+		ret = WebRequest.RegisterPrefix ("http://www.contoso.com/foo/bar", new TestWebRequestCreator2 ());
+		Assert.AreEqual (true, ret, "#5b");
+		ret = WebRequest.RegisterPrefix ("http://www", new TestWebRequestCreator3 ());
+		Assert.AreEqual (true, ret, "#5c");
+
+		req = WebRequest.Create ("http://WWW.contoso.com");
+		Assert.IsTrue (req is TestWebRequest, "#6"); 
+
+		req = WebRequest.Create ("http://WWW.contoso.com/foo/bar/index.html");
+		Assert.IsTrue (req is TestWebRequest2, "#7"); 
+		
+		req = WebRequest.Create ("http://WWW.x.com");
+		Assert.IsTrue (req is TestWebRequest3, "#8"); 
+
+		req = WebRequest.Create ("http://WWW.c");
+		Assert.IsTrue (req is TestWebRequest3, "#9"); 
+
+		req = WebRequest.CreateDefault (new Uri("http://WWW.contoso.com"));
+		Assert.IsTrue (req is HttpWebRequest, "#10");
+
+		try {
+			req = WebRequest.Create ("tcp://www.contoso.com");
+			Assert.Fail ("#11 should have failed with NotSupportedException");
+		} catch (NotSupportedException) {
+		}
+	}
+
+	[Test]
+	public void Create_RequestUriString_Null ()
+	{
+		try {
+			WebRequest.Create ((string) null);
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException ex) {
+			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNotNull (ex.ParamName, "#5");
+			Assert.AreEqual ("requestUriString", ex.ParamName, "#6");
+		}
+	}
+
+	[Test]
+	public void CreateDefault_RequestUri_Null ()
+	{
+		try {
+			WebRequest.CreateDefault ((Uri) null);
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException ex) {
+			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNotNull (ex.ParamName, "#5");
+			Assert.AreEqual ("requestUri", ex.ParamName, "#6");
+		}
+	}
+
+	[Test]
+	public void DefaultWebProxy ()
+	{
+		WebProxy proxy = new WebProxy ("proxy.intern.com", 83);
+
+		WebRequest.DefaultWebProxy = proxy;
+		Assert.IsNotNull (WebRequest.DefaultWebProxy, "#A1");
+		Assert.AreSame (proxy, WebRequest.DefaultWebProxy, "#A2");
+
+		HttpWebRequest req = (HttpWebRequest) WebRequest.CreateDefault (
+			new Uri ("http://www.mono-project.com"));
+		Assert.IsNotNull (req.Proxy, "#B1");
+		Assert.AreSame (proxy, req.Proxy, "#B2");
+
+		WebRequest.DefaultWebProxy = null;
+		Assert.IsNull (WebRequest.DefaultWebProxy, "#C1");
+		Assert.IsNotNull (req.Proxy, "#C2");
+		Assert.AreSame (proxy, req.Proxy, "#C3");
+
+		req = (HttpWebRequest) WebRequest.CreateDefault (
+			new Uri ("http://www.mono-project.com"));
+		Assert.IsNull (req.Proxy, "#D");
+	}
+
+	[Test]
+	public void RegisterPrefix_Creator_Null ()
+	{
+		try {
+			WebRequest.RegisterPrefix ("http://www.mono-project.com", (IWebRequestCreate) null);
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException ex) {
+			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNotNull (ex.ParamName, "#5");
+			Assert.AreEqual ("creator", ex.ParamName, "#6");
+		}
+	}
+
+	[Test]
+	public void RegisterPrefix_Prefix_Null ()
+	{
+		try {
+			WebRequest.RegisterPrefix ((string) null, new TestWebRequestCreator ());
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException ex) {
+			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNotNull (ex.ParamName, "#5");
+			Assert.AreEqual ("prefix", ex.ParamName, "#6");
+		}
+	}
+
+	[Test] //BNC#323452
 	// Throws exception with Status == Timeout. The same code behaves as the test expects when run from a regular app.
 	// Might be an issue with the test suite. To investigate.
 	[Category("AndroidNotWorking")] 
-	public void TestFailedConnection ()
-	{
-		try {
-			WebRequest.Create ("http://127.0.0.1:0/non-existant.txt").GetResponse ();
-			Assert.Fail ("Should have raised an exception");
-		} catch (Exception e) {
-			Assert.IsTrue (e is WebException, "Got " + e.GetType ().Name + ": " + e.Message);
-			//#if NET_2_0 e.Message == "Unable to connect to the remote server"
-			//#if NET_1_1 e.Message == "The underlying connection was closed: Unable to connect to the remote server."
-
-			Assert.AreEqual (WebExceptionStatus.ConnectFailure, ((WebException)e).Status);
-
-			//#if !NET_1_1 (this is not true in .NET 1.x)
-			Assert.IsNotNull (e.InnerException);
-			Assert.IsTrue (e.InnerException is Socks.SocketException, "InnerException should be SocketException");
-			//e.Message == "The requested address is not valid in its context 127.0.0.1:0"
-			//#endif
-		}
-	}
-
-	[Test] //BNC#323452
+	public void TestFailedConnection ()
+	{
+		try {
+			WebRequest.Create ("http://127.0.0.1:0/non-existant.txt").GetResponse ();
+			Assert.Fail ("Should have raised an exception");
+		} catch (Exception e) {
+			Assert.IsTrue (e is WebException, "Got " + e.GetType ().Name + ": " + e.Message);
+			//#if NET_2_0 e.Message == "Unable to connect to the remote server"
+			//#if NET_1_1 e.Message == "The underlying connection was closed: Unable to connect to the remote server."
+
+			Assert.AreEqual (WebExceptionStatus.ConnectFailure, ((WebException)e).Status);
+
+			//#if !NET_1_1 (this is not true in .NET 1.x)
+			Assert.IsNotNull (e.InnerException);
+			Assert.IsTrue (e.InnerException is Socks.SocketException, "InnerException should be SocketException");
+			//e.Message == "The requested address is not valid in its context 127.0.0.1:0"
+			//#endif
+		}
+	}
+
+	[Test] //BNC#323452
 	[Category ("AndroidNotWorking")] // Fails when ran as part of the entire BCL test suite. Works when only this fixture is ran
-	public void TestFailedResolution ()
-	{
-		try {
-			var req = WebRequest.Create ("http://thisdomaindoesnotexist.monotestcase.x/non-existant.txt").GetResponse ();
-			/*
-			 * Work around broken t-online.de DNS Server.
-			 * 
-			 * T-Online's DNS Server for DSL Customers resolves
-			 * non-exisitng domain names to
-			 * http://navigationshilfe1.t-online.de/dnserror?url=....
-			 * instead of reporting an error.
-			 */
-			if (req.ResponseUri.DnsSafeHost.Equals ("navigationshilfe1.t-online.de"))
-				Assert.Ignore ("Misbehaving DNS server.");
-
-			Assert.Fail ("Should have raised an exception");
-		} catch (Exception e) {
-			Assert.IsTrue (e is WebException);
-			//#if NET_2_0 e.Message == "The underlying connection was closed: The remote name could not be resolved."
-			//#if NET_1_1 e.Message == "The remote name could not be resolved: 'thisdomaindoesnotexist.monotestcase.x'"
-			Assert.AreEqual (((WebException)e).Status, WebExceptionStatus.NameResolutionFailure);
-			Assert.IsNull (e.InnerException);
-		}
-	}
-
-	internal class TestWebRequestCreator : IWebRequestCreate
-	{
-		internal TestWebRequestCreator () { }
-		
-		public WebRequest Create (Uri uri)
-		{
-			return new TestWebRequest ();
-		}
-	}
-	
-	internal class TestWebRequest : WebRequest
-	{
-		internal TestWebRequest () { }
-	}
-
-	internal class TestWebRequestCreator2 : IWebRequestCreate
-	{
-		internal TestWebRequestCreator2 () { }
-		
-		public WebRequest Create (Uri uri)
-		{
-			return new TestWebRequest2 ();
-		}
-	}
-	
-	internal class TestWebRequest2 : WebRequest
-	{
-		internal TestWebRequest2 () { }
-	}
-
-	internal class TestWebRequestCreator3 : IWebRequestCreate
-	{
-		internal TestWebRequestCreator3 () { }
-		
-		public WebRequest Create (Uri uri)
-		{
-			return new TestWebRequest3 ();
-		}
-	}
-	
-	internal class TestWebRequest3 : WebRequest
-	{
-		internal TestWebRequest3 () { }
-	}
-}
-
-}
-
+	public void TestFailedResolution ()
+	{
+		try {
+			var req = WebRequest.Create ("http://thisdomaindoesnotexist.monotestcase.x/non-existant.txt").GetResponse ();
+			/*
+			 * Work around broken t-online.de DNS Server.
+			 * 
+			 * T-Online's DNS Server for DSL Customers resolves
+			 * non-exisitng domain names to
+			 * http://navigationshilfe1.t-online.de/dnserror?url=....
+			 * instead of reporting an error.
+			 */
+			if (req.ResponseUri.DnsSafeHost.Equals ("navigationshilfe1.t-online.de"))
+				Assert.Ignore ("Misbehaving DNS server.");
+
+			Assert.Fail ("Should have raised an exception");
+		} catch (Exception e) {
+			Assert.IsTrue (e is WebException);
+			//#if NET_2_0 e.Message == "The underlying connection was closed: The remote name could not be resolved."
+			//#if NET_1_1 e.Message == "The remote name could not be resolved: 'thisdomaindoesnotexist.monotestcase.x'"
+			Assert.AreEqual (((WebException)e).Status, WebExceptionStatus.NameResolutionFailure);
+			Assert.IsNull (e.InnerException);
+		}
+	}
+
+	internal class TestWebRequestCreator : IWebRequestCreate
+	{
+		internal TestWebRequestCreator () { }
+		
+		public WebRequest Create (Uri uri)
+		{
+			return new TestWebRequest ();
+		}
+	}
+	
+	internal class TestWebRequest : WebRequest
+	{
+		internal TestWebRequest () { }
+	}
+
+	internal class TestWebRequestCreator2 : IWebRequestCreate
+	{
+		internal TestWebRequestCreator2 () { }
+		
+		public WebRequest Create (Uri uri)
+		{
+			return new TestWebRequest2 ();
+		}
+	}
+	
+	internal class TestWebRequest2 : WebRequest
+	{
+		internal TestWebRequest2 () { }
+	}
+
+	internal class TestWebRequestCreator3 : IWebRequestCreate
+	{
+		internal TestWebRequestCreator3 () { }
+		
+		public WebRequest Create (Uri uri)
+		{
+			return new TestWebRequest3 ();
+		}
+	}
+	
+	internal class TestWebRequest3 : WebRequest
+	{
+		internal TestWebRequest3 () { }
+	}
+}
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Security.Cryptography.X509Certificates/pkits/x509build.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Security.Cryptography.X509Certificates/pkits/x509build.cs
@@ -1,48 +1,48 @@
-using System;
-using System.Security.Cryptography.X509Certificates;
-
-class Program {
-
-	static int Main (string[] args)
-	{
-		if (args.Length == 0) {
-			Console.WriteLine ("Usage: mono x509build.exe filename");
-			return 2;
-		}
-		string filename = args [0];
-
-		X509Certificate2 cert = new X509Certificate2 (filename);
-		// using X509Chain.Create will use the X509Chain defined in machine.config
-		X509Chain chain = X509Chain.Create ();
-		bool result = chain.Build (cert);
-		Console.WriteLine ("Build: {0}", result);
-		Console.WriteLine ();
-
-		Console.WriteLine ("ChainStatus:");
-		if (chain.ChainStatus.Length > 0) {
-			foreach (X509ChainStatus st in chain.ChainStatus) {
-				Console.WriteLine ("\t{0}", st.Status);
-			}
-		} else {
-			Console.WriteLine ("\t{0}", X509ChainStatusFlags.NoError);
-		}
-		Console.WriteLine ();
-
-		int n = 1;
-		Console.WriteLine ("ChainElements:");
-		foreach (X509ChainElement ce in chain.ChainElements) {
-			Console.WriteLine ("{0}. Certificate: {1}", n++, ce.Certificate);
-			Console.WriteLine ("\tChainStatus:");
-			if (ce.ChainElementStatus.Length > 0) {
-				foreach (X509ChainStatus st in ce.ChainElementStatus) {
-					Console.WriteLine ("\t\t{0}", st.Status);
-				}
-			} else {
-				Console.WriteLine ("\t\t{0}", X509ChainStatusFlags.NoError);
-			}
-			Console.WriteLine ();
-		}
-
-		return result ? 0 : 1;
-	}
-}
+using System;
+using System.Security.Cryptography.X509Certificates;
+
+class Program {
+
+	static int Main (string[] args)
+	{
+		if (args.Length == 0) {
+			Console.WriteLine ("Usage: mono x509build.exe filename");
+			return 2;
+		}
+		string filename = args [0];
+
+		X509Certificate2 cert = new X509Certificate2 (filename);
+		// using X509Chain.Create will use the X509Chain defined in machine.config
+		X509Chain chain = X509Chain.Create ();
+		bool result = chain.Build (cert);
+		Console.WriteLine ("Build: {0}", result);
+		Console.WriteLine ();
+
+		Console.WriteLine ("ChainStatus:");
+		if (chain.ChainStatus.Length > 0) {
+			foreach (X509ChainStatus st in chain.ChainStatus) {
+				Console.WriteLine ("\t{0}", st.Status);
+			}
+		} else {
+			Console.WriteLine ("\t{0}", X509ChainStatusFlags.NoError);
+		}
+		Console.WriteLine ();
+
+		int n = 1;
+		Console.WriteLine ("ChainElements:");
+		foreach (X509ChainElement ce in chain.ChainElements) {
+			Console.WriteLine ("{0}. Certificate: {1}", n++, ce.Certificate);
+			Console.WriteLine ("\tChainStatus:");
+			if (ce.ChainElementStatus.Length > 0) {
+				foreach (X509ChainStatus st in ce.ChainElementStatus) {
+					Console.WriteLine ("\t\t{0}", st.Status);
+				}
+			} else {
+				Console.WriteLine ("\t\t{0}", X509ChainStatusFlags.NoError);
+			}
+			Console.WriteLine ();
+		}
+
+		return result ? 0 : 1;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Web/AspNetHostingPermissionAttributeTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Web/AspNetHostingPermissionAttributeTest.cs
@@ -1,138 +1,138 @@
-//
-// AspNetHostingPermissionAttributeTest.cs -
-//	NUnit Test Cases for AspNetHostingPermissionAttribute
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Web;
-
-namespace MonoTests.System.Web {
-
-	[TestFixture]
-	public class AspNetHostingPermissionAttributeTest {
-
-		[Test]
-		public void Default ()
-		{
-			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
-			Assert.IsFalse (a.Unrestricted, "Unrestricted");
-			Assert.AreEqual (AspNetHostingPermissionLevel.None, a.Level, "AspNetHostingPermissionLevel");
-
-			AspNetHostingPermission anhp = (AspNetHostingPermission)a.CreatePermission ();
-			Assert.IsFalse (anhp.IsUnrestricted (), "IsUnrestricted");
-		}
-
-		[Test]
-		public void Action ()
-		{
-			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
-			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
-			a.Action = SecurityAction.Demand;
-			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
-			a.Action = SecurityAction.Deny;
-			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
-			a.Action = SecurityAction.InheritanceDemand;
-			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
-			a.Action = SecurityAction.LinkDemand;
-			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
-			a.Action = SecurityAction.PermitOnly;
-			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
-			a.Action = SecurityAction.RequestMinimum;
-			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
-			a.Action = SecurityAction.RequestOptional;
-			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
-			a.Action = SecurityAction.RequestRefuse;
-			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
-		}
-
-		[Test]
-		public void Action_Invalid ()
-		{
-			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute ((SecurityAction)Int32.MinValue);
-			// no validation in attribute
-		}
-
-		[Test]
-		public void Unrestricted ()
-		{
-			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
-			a.Unrestricted = true;
-			AspNetHostingPermission anhp = (AspNetHostingPermission)a.CreatePermission ();
-			Assert.IsTrue (anhp.IsUnrestricted (), "IsUnrestricted");
-			Assert.AreEqual (AspNetHostingPermissionLevel.None, a.Level, "None");
-
-			a.Unrestricted = false;
-			anhp = (AspNetHostingPermission)a.CreatePermission ();
-			Assert.IsFalse (anhp.IsUnrestricted (), "!IsUnrestricted");
-		}
-
-		[Test]
-		public void Level ()
-		{
-			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
-			a.Level = AspNetHostingPermissionLevel.None;
-			Assert.AreEqual (AspNetHostingPermissionLevel.None, a.Level, "None");
-			a.Level = AspNetHostingPermissionLevel.Minimal;
-			Assert.AreEqual (AspNetHostingPermissionLevel.Minimal, a.Level, "Minimal");
-			a.Level = AspNetHostingPermissionLevel.Low;
-			Assert.AreEqual (AspNetHostingPermissionLevel.Low, a.Level, "Low");
-			a.Level = AspNetHostingPermissionLevel.Medium;
-			Assert.AreEqual (AspNetHostingPermissionLevel.Medium, a.Level, "Medium");
-			a.Level = AspNetHostingPermissionLevel.High;
-			Assert.AreEqual (AspNetHostingPermissionLevel.High, a.Level, "High");
-			a.Level = AspNetHostingPermissionLevel.Unrestricted;
-			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, a.Level, "Unrestricted");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void Level_Invalid ()
-		{
-			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
-			a.Level = (AspNetHostingPermissionLevel)Int32.MinValue;
-		}
-
-		[Test]
-		public void Attributes ()
-		{
-			Type t = typeof (AspNetHostingPermissionAttribute);
-			Assert.IsTrue (t.IsSerializable, "IsSerializable");
-
-			object[] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
-			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
-			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
-			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
-			Assert.IsFalse (aua.Inherited, "Inherited");
-			AttributeTargets at = AttributeTargets.All;
-			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
-		}
-	}
-}
+//
+// AspNetHostingPermissionAttributeTest.cs -
+//	NUnit Test Cases for AspNetHostingPermissionAttribute
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Security;
+using System.Security.Permissions;
+using System.Web;
+
+namespace MonoTests.System.Web {
+
+	[TestFixture]
+	public class AspNetHostingPermissionAttributeTest {
+
+		[Test]
+		public void Default ()
+		{
+			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (a.ToString (), a.TypeId.ToString (), "TypeId");
+			Assert.IsFalse (a.Unrestricted, "Unrestricted");
+			Assert.AreEqual (AspNetHostingPermissionLevel.None, a.Level, "AspNetHostingPermissionLevel");
+
+			AspNetHostingPermission anhp = (AspNetHostingPermission)a.CreatePermission ();
+			Assert.IsFalse (anhp.IsUnrestricted (), "IsUnrestricted");
+		}
+
+		[Test]
+		public void Action ()
+		{
+			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
+			Assert.AreEqual (SecurityAction.Assert, a.Action, "Action=Assert");
+			a.Action = SecurityAction.Demand;
+			Assert.AreEqual (SecurityAction.Demand, a.Action, "Action=Demand");
+			a.Action = SecurityAction.Deny;
+			Assert.AreEqual (SecurityAction.Deny, a.Action, "Action=Deny");
+			a.Action = SecurityAction.InheritanceDemand;
+			Assert.AreEqual (SecurityAction.InheritanceDemand, a.Action, "Action=InheritanceDemand");
+			a.Action = SecurityAction.LinkDemand;
+			Assert.AreEqual (SecurityAction.LinkDemand, a.Action, "Action=LinkDemand");
+			a.Action = SecurityAction.PermitOnly;
+			Assert.AreEqual (SecurityAction.PermitOnly, a.Action, "Action=PermitOnly");
+			a.Action = SecurityAction.RequestMinimum;
+			Assert.AreEqual (SecurityAction.RequestMinimum, a.Action, "Action=RequestMinimum");
+			a.Action = SecurityAction.RequestOptional;
+			Assert.AreEqual (SecurityAction.RequestOptional, a.Action, "Action=RequestOptional");
+			a.Action = SecurityAction.RequestRefuse;
+			Assert.AreEqual (SecurityAction.RequestRefuse, a.Action, "Action=RequestRefuse");
+		}
+
+		[Test]
+		public void Action_Invalid ()
+		{
+			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute ((SecurityAction)Int32.MinValue);
+			// no validation in attribute
+		}
+
+		[Test]
+		public void Unrestricted ()
+		{
+			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
+			a.Unrestricted = true;
+			AspNetHostingPermission anhp = (AspNetHostingPermission)a.CreatePermission ();
+			Assert.IsTrue (anhp.IsUnrestricted (), "IsUnrestricted");
+			Assert.AreEqual (AspNetHostingPermissionLevel.None, a.Level, "None");
+
+			a.Unrestricted = false;
+			anhp = (AspNetHostingPermission)a.CreatePermission ();
+			Assert.IsFalse (anhp.IsUnrestricted (), "!IsUnrestricted");
+		}
+
+		[Test]
+		public void Level ()
+		{
+			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
+			a.Level = AspNetHostingPermissionLevel.None;
+			Assert.AreEqual (AspNetHostingPermissionLevel.None, a.Level, "None");
+			a.Level = AspNetHostingPermissionLevel.Minimal;
+			Assert.AreEqual (AspNetHostingPermissionLevel.Minimal, a.Level, "Minimal");
+			a.Level = AspNetHostingPermissionLevel.Low;
+			Assert.AreEqual (AspNetHostingPermissionLevel.Low, a.Level, "Low");
+			a.Level = AspNetHostingPermissionLevel.Medium;
+			Assert.AreEqual (AspNetHostingPermissionLevel.Medium, a.Level, "Medium");
+			a.Level = AspNetHostingPermissionLevel.High;
+			Assert.AreEqual (AspNetHostingPermissionLevel.High, a.Level, "High");
+			a.Level = AspNetHostingPermissionLevel.Unrestricted;
+			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, a.Level, "Unrestricted");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void Level_Invalid ()
+		{
+			AspNetHostingPermissionAttribute a = new AspNetHostingPermissionAttribute (SecurityAction.Assert);
+			a.Level = (AspNetHostingPermissionLevel)Int32.MinValue;
+		}
+
+		[Test]
+		public void Attributes ()
+		{
+			Type t = typeof (AspNetHostingPermissionAttribute);
+			Assert.IsTrue (t.IsSerializable, "IsSerializable");
+
+			object[] attrs = t.GetCustomAttributes (typeof (AttributeUsageAttribute), false);
+			Assert.AreEqual (1, attrs.Length, "AttributeUsage");
+			AttributeUsageAttribute aua = (AttributeUsageAttribute)attrs [0];
+			Assert.IsTrue (aua.AllowMultiple, "AllowMultiple");
+			Assert.IsFalse (aua.Inherited, "Inherited");
+			AttributeTargets at = AttributeTargets.All;
+			Assert.AreEqual (at, aua.ValidOn, "ValidOn");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System.Web/AspNetHostingPermissionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System.Web/AspNetHostingPermissionTest.cs
@@ -1,419 +1,419 @@
-//
-// AspNetHostingPermissionTest.cs - 
-//	NUnit Test Cases for AspNetHostingPermission
-//
-// Author:
-//	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Security;
-using System.Security.Permissions;
-using System.Web;
-
-namespace MonoTests.System.Web {
-
-	[TestFixture]
-	public class AspNetHostingPermissionTest {
-
-		static AspNetHostingPermissionLevel[] AllLevel = {
-			AspNetHostingPermissionLevel.None,
-			AspNetHostingPermissionLevel.Minimal,
-			AspNetHostingPermissionLevel.Low,
-			AspNetHostingPermissionLevel.Medium,
-			AspNetHostingPermissionLevel.High,
-			AspNetHostingPermissionLevel.Unrestricted,
-		};
-
-		static AspNetHostingPermissionLevel[] AllLevelExceptNone = {
-			AspNetHostingPermissionLevel.Minimal,
-			AspNetHostingPermissionLevel.Low,
-			AspNetHostingPermissionLevel.Medium,
-			AspNetHostingPermissionLevel.High,
-			AspNetHostingPermissionLevel.Unrestricted,
-		};
-
-		static AspNetHostingPermissionLevel[] AllLevelExceptUnrestricted = {
-			AspNetHostingPermissionLevel.None,
-			AspNetHostingPermissionLevel.Minimal,
-			AspNetHostingPermissionLevel.Low,
-			AspNetHostingPermissionLevel.Medium,
-			AspNetHostingPermissionLevel.High,
-		};
-
-		[Test]
-		public void PermissionState_None ()
-		{
-			PermissionState ps = PermissionState.None;
-			AspNetHostingPermission anhp = new AspNetHostingPermission (ps);
-			Assert.AreEqual (AspNetHostingPermissionLevel.None, anhp.Level, "Level");
-			Assert.IsFalse (anhp.IsUnrestricted (), "IsUnrestricted");
-
-			SecurityElement se = anhp.ToXml ();
-			// only class and version are present
-			Assert.AreEqual ("None", se.Attribute ("Level"), "Xml-Level");
-			Assert.IsNull (se.Children, "Xml-Children");
-
-			AspNetHostingPermission copy = (AspNetHostingPermission)anhp.Copy ();
-			Assert.IsFalse (Object.ReferenceEquals (anhp, copy), "ReferenceEquals");
-			Assert.AreEqual (anhp.Level, copy.Level, "Level");
-			Assert.AreEqual (anhp.IsUnrestricted (), copy.IsUnrestricted (), "IsUnrestricted ()");
-		}
-
-		[Test]
-		public void PermissionState_Unrestricted ()
-		{
-			PermissionState ps = PermissionState.Unrestricted;
-			AspNetHostingPermission anhp = new AspNetHostingPermission (ps);
-			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, anhp.Level, "Level");
-			Assert.IsTrue (anhp.IsUnrestricted (), "IsUnrestricted");
-
-			SecurityElement se = anhp.ToXml ();
-			// fixed in 2.0 RC
-			Assert.IsNotNull (se.Attribute ("Unrestricted"), "Xml-Unrestricted");
-			Assert.AreEqual ("Unrestricted", se.Attribute ("Level"), "Xml-Level");
-			Assert.IsNull (se.Children, "Xml-Children");
-
-			AspNetHostingPermission copy = (AspNetHostingPermission)anhp.Copy ();
-			Assert.IsFalse (Object.ReferenceEquals (anhp, copy), "ReferenceEquals");
-			Assert.AreEqual (anhp.Level, copy.Level, "Level");
-			Assert.AreEqual (anhp.IsUnrestricted (), copy.IsUnrestricted (), "IsUnrestricted ()");
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void PermissionState_Bad ()
-		{
-			PermissionState ps = (PermissionState) Int32.MinValue;
-			AspNetHostingPermission anhp = new AspNetHostingPermission (ps);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void AspNetHostingPermissionLevels_Bad ()
-		{
-			AspNetHostingPermissionLevel ppl = (AspNetHostingPermissionLevel) Int32.MinValue;
-			AspNetHostingPermission anhp = new AspNetHostingPermission (ppl);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void Level_AspNetHostingPermissionLevels_Bad ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			anhp.Level = (AspNetHostingPermissionLevel) Int32.MinValue;
-		}
-
-		[Test]
-		public void Copy ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				anhp.Level = ppl;
-				AspNetHostingPermission copy = (AspNetHostingPermission)anhp.Copy ();
-				Assert.AreEqual (ppl, copy.Level, ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Intersect_Null ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			// No intersection with null
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				anhp.Level = ppl;
-				IPermission p = anhp.Intersect (null);
-				Assert.IsNull (p, ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Intersect_None ()
-		{
-			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.None);
-			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				sp2.Level = ppl;
-				// 1. Intersect None with ppl
-				AspNetHostingPermission result = (AspNetHostingPermission)sp1.Intersect (sp2);
-				Assert.AreEqual (AspNetHostingPermissionLevel.None, result.Level, "None N " + ppl.ToString ());
-				// 2. Intersect ppl with None
-				result = (AspNetHostingPermission)sp2.Intersect (sp1);
-				Assert.AreEqual (AspNetHostingPermissionLevel.None, result.Level, ppl.ToString () + "N None");
-			}
-		}
-
-		[Test]
-		public void Intersect_Self ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				anhp.Level = ppl;
-				AspNetHostingPermission result = (AspNetHostingPermission)anhp.Intersect (anhp);
-				Assert.AreEqual (ppl, result.Level, ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Intersect_Unrestricted ()
-		{
-			// Intersection with unrestricted == Copy
-			// a. source (this) is unrestricted
-			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.Unrestricted);
-			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				sp2.Level = ppl;
-				AspNetHostingPermission result = (AspNetHostingPermission)sp1.Intersect (sp2);
-				Assert.AreEqual (sp2.Level, result.Level, "target " + ppl.ToString ());
-			}
-			// b. destination (target) is unrestricted
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				sp2.Level = ppl;
-				AspNetHostingPermission result = (AspNetHostingPermission)sp2.Intersect (sp1);
-				Assert.AreEqual (sp2.Level, result.Level, "source " + ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void IsSubset_Null ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			Assert.IsTrue (anhp.IsSubsetOf (null), "NoLevel");
-			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptNone) {
-				anhp.Level = ppl;
-				Assert.IsFalse (anhp.IsSubsetOf (null), ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void IsSubset_None ()
-		{
-			// IsSubset with none
-			// a. source (this) is none -> target is never a subset
-			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.None);
-			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				sp2.Level = ppl;
-				Assert.IsTrue (sp1.IsSubsetOf (sp2), "target " + ppl.ToString ());
-			}
-			// b. destination (target) is none -> target is always a subset
-			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptNone) {
-				sp2.Level = ppl;
-				Assert.IsFalse (sp2.IsSubsetOf (sp1), "source " + ppl.ToString ());
-			}
-			// exception of NoLevel
-			sp2.Level = AspNetHostingPermissionLevel.None;
-			Assert.IsTrue (sp2.IsSubsetOf (sp1), "source NoLevel");
-		}
-
-		[Test]
-		public void IsSubset_Self ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				anhp.Level = ppl;
-				AspNetHostingPermission result = (AspNetHostingPermission)anhp.Intersect (anhp);
-				Assert.IsTrue (anhp.IsSubsetOf (anhp), ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void IsSubset_Unrestricted ()
-		{
-			// IsSubset with unrestricted
-			// a. source (this) is unrestricted -> target is never a subset
-			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.Unrestricted);
-			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptUnrestricted) {
-				sp2.Level = ppl;
-				Assert.IsFalse (sp1.IsSubsetOf (sp2), "target " + ppl.ToString ());
-			}
-			// exception of AllLevel
-			sp2.Level = AspNetHostingPermissionLevel.Unrestricted;
-			Assert.IsTrue (sp1.IsSubsetOf (sp2), "target AllLevel");
-			// b. destination (target) is unrestricted -> target is always a subset
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				sp2.Level = ppl;
-				Assert.IsTrue (sp2.IsSubsetOf (sp1), "source " + ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Union_Null ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			// Union with null is a simple copy
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				anhp.Level = ppl;
-				AspNetHostingPermission union = (AspNetHostingPermission)anhp.Union (null);
-				Assert.AreEqual (ppl, union.Level, ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Union_None ()
-		{
-			// Union with none is same
-			AspNetHostingPermission pp1 = new AspNetHostingPermission (PermissionState.None);
-			AspNetHostingPermission pp2 = new AspNetHostingPermission (PermissionState.None);
-			AspNetHostingPermission union = null;
-
-			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptUnrestricted) {
-				pp2.Level = ppl;
-				
-				union = (AspNetHostingPermission)pp1.Union (pp2);
-				Assert.IsFalse (union.IsUnrestricted (), "target.Unrestricted " + ppl.ToString ());
-				Assert.AreEqual (ppl, union.Level, "target.Level " + ppl.ToString ());
-
-				union = (AspNetHostingPermission)pp2.Union (pp1);
-				Assert.IsFalse (union.IsUnrestricted (), "source.Unrestricted " + ppl.ToString ());
-				Assert.AreEqual (ppl, union.Level, "source.Level " + ppl.ToString ());
-			}
-
-			pp2.Level = AspNetHostingPermissionLevel.Unrestricted;
-			union = (AspNetHostingPermission)pp1.Union (pp2);
-			Assert.IsTrue (union.IsUnrestricted (), "target.Unrestricted Unrestricted");
-			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, union.Level, "target.Level Unrestricted");
-
-			union = (AspNetHostingPermission)pp2.Union (pp1);
-			Assert.IsTrue (union.IsUnrestricted (), "source.Unrestricted Unrestricted");
-			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, union.Level, "source.Level Unrestricted");
-		}
-
-		[Test]
-		public void Union_Self ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				anhp.Level = ppl;
-				AspNetHostingPermission result = (AspNetHostingPermission)anhp.Union (anhp);
-				Assert.AreEqual (ppl, result.Level, ppl.ToString ());
-			}
-		}
-
-		[Test]
-		public void Union_Unrestricted ()
-		{
-			// Union with unrestricted is unrestricted
-			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.Unrestricted);
-			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
-			// a. source (this) is unrestricted
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				sp2.Level = ppl;
-				AspNetHostingPermission union = (AspNetHostingPermission)sp1.Union (sp2);
-				Assert.IsTrue (union.IsUnrestricted (), "target " + ppl.ToString ());
-			}
-			// b. destination (target) is unrestricted
-			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
-				sp2.Level = ppl;
-				AspNetHostingPermission union = (AspNetHostingPermission)sp2.Union (sp1);
-				Assert.IsTrue (union.IsUnrestricted (), "source " + ppl.ToString ());
-			}
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentNullException))]
-		public void FromXml_Null ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			anhp.FromXml (null);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_WrongTag ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			SecurityElement se = anhp.ToXml ();
-			se.Tag = "IMono";
-			anhp.FromXml (se);
-			// note: normally IPermission classes (in corlib) DO care about the
-			// IPermission tag
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_WrongTagCase ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			SecurityElement se = anhp.ToXml ();
-			se.Tag = "IPERMISSION"; // instead of IPermission
-			anhp.FromXml (se);
-			// note: normally IPermission classes (in corlib) DO care about the
-			// IPermission tag
-		}
-
-		[Test]
-		public void FromXml_WrongClass ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			SecurityElement se = anhp.ToXml ();
-
-			SecurityElement w = new SecurityElement (se.Tag);
-			w.AddAttribute ("class", "Wrong" + se.Attribute ("class"));
-			w.AddAttribute ("version", se.Attribute ("version"));
-			anhp.FromXml (w);
-			// doesn't care of the class name at that stage
-			// anyway the class has already be created so...
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_NoClass ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			SecurityElement se = anhp.ToXml ();
-
-			SecurityElement w = new SecurityElement (se.Tag);
-			w.AddAttribute ("version", se.Attribute ("version"));
-			anhp.FromXml (w);
-			// note: normally IPermission classes (in corlib) DO NOT care about
-			// attribute "class" name presence in the XML
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_WrongVersion ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			SecurityElement se = anhp.ToXml ();
-			se.Attributes.Remove ("version");
-			se.Attributes.Add ("version", "2");
-			anhp.FromXml (se);
-		}
-
-		[Test]
-		[ExpectedException (typeof (ArgumentException))]
-		public void FromXml_NoVersion ()
-		{
-			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
-			SecurityElement se = anhp.ToXml ();
-
-			SecurityElement w = new SecurityElement (se.Tag);
-			w.AddAttribute ("class", se.Attribute ("class"));
-			anhp.FromXml (w);
-		}
-	}
-}
+//
+// AspNetHostingPermissionTest.cs - 
+//	NUnit Test Cases for AspNetHostingPermission
+//
+// Author:
+//	Sebastien Pouliot  <sebastien@ximian.com>
+//
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using System;
+using System.Security;
+using System.Security.Permissions;
+using System.Web;
+
+namespace MonoTests.System.Web {
+
+	[TestFixture]
+	public class AspNetHostingPermissionTest {
+
+		static AspNetHostingPermissionLevel[] AllLevel = {
+			AspNetHostingPermissionLevel.None,
+			AspNetHostingPermissionLevel.Minimal,
+			AspNetHostingPermissionLevel.Low,
+			AspNetHostingPermissionLevel.Medium,
+			AspNetHostingPermissionLevel.High,
+			AspNetHostingPermissionLevel.Unrestricted,
+		};
+
+		static AspNetHostingPermissionLevel[] AllLevelExceptNone = {
+			AspNetHostingPermissionLevel.Minimal,
+			AspNetHostingPermissionLevel.Low,
+			AspNetHostingPermissionLevel.Medium,
+			AspNetHostingPermissionLevel.High,
+			AspNetHostingPermissionLevel.Unrestricted,
+		};
+
+		static AspNetHostingPermissionLevel[] AllLevelExceptUnrestricted = {
+			AspNetHostingPermissionLevel.None,
+			AspNetHostingPermissionLevel.Minimal,
+			AspNetHostingPermissionLevel.Low,
+			AspNetHostingPermissionLevel.Medium,
+			AspNetHostingPermissionLevel.High,
+		};
+
+		[Test]
+		public void PermissionState_None ()
+		{
+			PermissionState ps = PermissionState.None;
+			AspNetHostingPermission anhp = new AspNetHostingPermission (ps);
+			Assert.AreEqual (AspNetHostingPermissionLevel.None, anhp.Level, "Level");
+			Assert.IsFalse (anhp.IsUnrestricted (), "IsUnrestricted");
+
+			SecurityElement se = anhp.ToXml ();
+			// only class and version are present
+			Assert.AreEqual ("None", se.Attribute ("Level"), "Xml-Level");
+			Assert.IsNull (se.Children, "Xml-Children");
+
+			AspNetHostingPermission copy = (AspNetHostingPermission)anhp.Copy ();
+			Assert.IsFalse (Object.ReferenceEquals (anhp, copy), "ReferenceEquals");
+			Assert.AreEqual (anhp.Level, copy.Level, "Level");
+			Assert.AreEqual (anhp.IsUnrestricted (), copy.IsUnrestricted (), "IsUnrestricted ()");
+		}
+
+		[Test]
+		public void PermissionState_Unrestricted ()
+		{
+			PermissionState ps = PermissionState.Unrestricted;
+			AspNetHostingPermission anhp = new AspNetHostingPermission (ps);
+			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, anhp.Level, "Level");
+			Assert.IsTrue (anhp.IsUnrestricted (), "IsUnrestricted");
+
+			SecurityElement se = anhp.ToXml ();
+			// fixed in 2.0 RC
+			Assert.IsNotNull (se.Attribute ("Unrestricted"), "Xml-Unrestricted");
+			Assert.AreEqual ("Unrestricted", se.Attribute ("Level"), "Xml-Level");
+			Assert.IsNull (se.Children, "Xml-Children");
+
+			AspNetHostingPermission copy = (AspNetHostingPermission)anhp.Copy ();
+			Assert.IsFalse (Object.ReferenceEquals (anhp, copy), "ReferenceEquals");
+			Assert.AreEqual (anhp.Level, copy.Level, "Level");
+			Assert.AreEqual (anhp.IsUnrestricted (), copy.IsUnrestricted (), "IsUnrestricted ()");
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void PermissionState_Bad ()
+		{
+			PermissionState ps = (PermissionState) Int32.MinValue;
+			AspNetHostingPermission anhp = new AspNetHostingPermission (ps);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void AspNetHostingPermissionLevels_Bad ()
+		{
+			AspNetHostingPermissionLevel ppl = (AspNetHostingPermissionLevel) Int32.MinValue;
+			AspNetHostingPermission anhp = new AspNetHostingPermission (ppl);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void Level_AspNetHostingPermissionLevels_Bad ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			anhp.Level = (AspNetHostingPermissionLevel) Int32.MinValue;
+		}
+
+		[Test]
+		public void Copy ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				anhp.Level = ppl;
+				AspNetHostingPermission copy = (AspNetHostingPermission)anhp.Copy ();
+				Assert.AreEqual (ppl, copy.Level, ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Intersect_Null ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			// No intersection with null
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				anhp.Level = ppl;
+				IPermission p = anhp.Intersect (null);
+				Assert.IsNull (p, ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Intersect_None ()
+		{
+			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.None);
+			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				sp2.Level = ppl;
+				// 1. Intersect None with ppl
+				AspNetHostingPermission result = (AspNetHostingPermission)sp1.Intersect (sp2);
+				Assert.AreEqual (AspNetHostingPermissionLevel.None, result.Level, "None N " + ppl.ToString ());
+				// 2. Intersect ppl with None
+				result = (AspNetHostingPermission)sp2.Intersect (sp1);
+				Assert.AreEqual (AspNetHostingPermissionLevel.None, result.Level, ppl.ToString () + "N None");
+			}
+		}
+
+		[Test]
+		public void Intersect_Self ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				anhp.Level = ppl;
+				AspNetHostingPermission result = (AspNetHostingPermission)anhp.Intersect (anhp);
+				Assert.AreEqual (ppl, result.Level, ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Intersect_Unrestricted ()
+		{
+			// Intersection with unrestricted == Copy
+			// a. source (this) is unrestricted
+			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.Unrestricted);
+			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				sp2.Level = ppl;
+				AspNetHostingPermission result = (AspNetHostingPermission)sp1.Intersect (sp2);
+				Assert.AreEqual (sp2.Level, result.Level, "target " + ppl.ToString ());
+			}
+			// b. destination (target) is unrestricted
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				sp2.Level = ppl;
+				AspNetHostingPermission result = (AspNetHostingPermission)sp2.Intersect (sp1);
+				Assert.AreEqual (sp2.Level, result.Level, "source " + ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void IsSubset_Null ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			Assert.IsTrue (anhp.IsSubsetOf (null), "NoLevel");
+			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptNone) {
+				anhp.Level = ppl;
+				Assert.IsFalse (anhp.IsSubsetOf (null), ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void IsSubset_None ()
+		{
+			// IsSubset with none
+			// a. source (this) is none -> target is never a subset
+			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.None);
+			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				sp2.Level = ppl;
+				Assert.IsTrue (sp1.IsSubsetOf (sp2), "target " + ppl.ToString ());
+			}
+			// b. destination (target) is none -> target is always a subset
+			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptNone) {
+				sp2.Level = ppl;
+				Assert.IsFalse (sp2.IsSubsetOf (sp1), "source " + ppl.ToString ());
+			}
+			// exception of NoLevel
+			sp2.Level = AspNetHostingPermissionLevel.None;
+			Assert.IsTrue (sp2.IsSubsetOf (sp1), "source NoLevel");
+		}
+
+		[Test]
+		public void IsSubset_Self ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				anhp.Level = ppl;
+				AspNetHostingPermission result = (AspNetHostingPermission)anhp.Intersect (anhp);
+				Assert.IsTrue (anhp.IsSubsetOf (anhp), ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void IsSubset_Unrestricted ()
+		{
+			// IsSubset with unrestricted
+			// a. source (this) is unrestricted -> target is never a subset
+			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.Unrestricted);
+			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptUnrestricted) {
+				sp2.Level = ppl;
+				Assert.IsFalse (sp1.IsSubsetOf (sp2), "target " + ppl.ToString ());
+			}
+			// exception of AllLevel
+			sp2.Level = AspNetHostingPermissionLevel.Unrestricted;
+			Assert.IsTrue (sp1.IsSubsetOf (sp2), "target AllLevel");
+			// b. destination (target) is unrestricted -> target is always a subset
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				sp2.Level = ppl;
+				Assert.IsTrue (sp2.IsSubsetOf (sp1), "source " + ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Union_Null ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			// Union with null is a simple copy
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				anhp.Level = ppl;
+				AspNetHostingPermission union = (AspNetHostingPermission)anhp.Union (null);
+				Assert.AreEqual (ppl, union.Level, ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Union_None ()
+		{
+			// Union with none is same
+			AspNetHostingPermission pp1 = new AspNetHostingPermission (PermissionState.None);
+			AspNetHostingPermission pp2 = new AspNetHostingPermission (PermissionState.None);
+			AspNetHostingPermission union = null;
+
+			foreach (AspNetHostingPermissionLevel ppl in AllLevelExceptUnrestricted) {
+				pp2.Level = ppl;
+				
+				union = (AspNetHostingPermission)pp1.Union (pp2);
+				Assert.IsFalse (union.IsUnrestricted (), "target.Unrestricted " + ppl.ToString ());
+				Assert.AreEqual (ppl, union.Level, "target.Level " + ppl.ToString ());
+
+				union = (AspNetHostingPermission)pp2.Union (pp1);
+				Assert.IsFalse (union.IsUnrestricted (), "source.Unrestricted " + ppl.ToString ());
+				Assert.AreEqual (ppl, union.Level, "source.Level " + ppl.ToString ());
+			}
+
+			pp2.Level = AspNetHostingPermissionLevel.Unrestricted;
+			union = (AspNetHostingPermission)pp1.Union (pp2);
+			Assert.IsTrue (union.IsUnrestricted (), "target.Unrestricted Unrestricted");
+			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, union.Level, "target.Level Unrestricted");
+
+			union = (AspNetHostingPermission)pp2.Union (pp1);
+			Assert.IsTrue (union.IsUnrestricted (), "source.Unrestricted Unrestricted");
+			Assert.AreEqual (AspNetHostingPermissionLevel.Unrestricted, union.Level, "source.Level Unrestricted");
+		}
+
+		[Test]
+		public void Union_Self ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				anhp.Level = ppl;
+				AspNetHostingPermission result = (AspNetHostingPermission)anhp.Union (anhp);
+				Assert.AreEqual (ppl, result.Level, ppl.ToString ());
+			}
+		}
+
+		[Test]
+		public void Union_Unrestricted ()
+		{
+			// Union with unrestricted is unrestricted
+			AspNetHostingPermission sp1 = new AspNetHostingPermission (PermissionState.Unrestricted);
+			AspNetHostingPermission sp2 = new AspNetHostingPermission (PermissionState.None);
+			// a. source (this) is unrestricted
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				sp2.Level = ppl;
+				AspNetHostingPermission union = (AspNetHostingPermission)sp1.Union (sp2);
+				Assert.IsTrue (union.IsUnrestricted (), "target " + ppl.ToString ());
+			}
+			// b. destination (target) is unrestricted
+			foreach (AspNetHostingPermissionLevel ppl in AllLevel) {
+				sp2.Level = ppl;
+				AspNetHostingPermission union = (AspNetHostingPermission)sp2.Union (sp1);
+				Assert.IsTrue (union.IsUnrestricted (), "source " + ppl.ToString ());
+			}
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentNullException))]
+		public void FromXml_Null ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			anhp.FromXml (null);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_WrongTag ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			SecurityElement se = anhp.ToXml ();
+			se.Tag = "IMono";
+			anhp.FromXml (se);
+			// note: normally IPermission classes (in corlib) DO care about the
+			// IPermission tag
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_WrongTagCase ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			SecurityElement se = anhp.ToXml ();
+			se.Tag = "IPERMISSION"; // instead of IPermission
+			anhp.FromXml (se);
+			// note: normally IPermission classes (in corlib) DO care about the
+			// IPermission tag
+		}
+
+		[Test]
+		public void FromXml_WrongClass ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			SecurityElement se = anhp.ToXml ();
+
+			SecurityElement w = new SecurityElement (se.Tag);
+			w.AddAttribute ("class", "Wrong" + se.Attribute ("class"));
+			w.AddAttribute ("version", se.Attribute ("version"));
+			anhp.FromXml (w);
+			// doesn't care of the class name at that stage
+			// anyway the class has already be created so...
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_NoClass ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			SecurityElement se = anhp.ToXml ();
+
+			SecurityElement w = new SecurityElement (se.Tag);
+			w.AddAttribute ("version", se.Attribute ("version"));
+			anhp.FromXml (w);
+			// note: normally IPermission classes (in corlib) DO NOT care about
+			// attribute "class" name presence in the XML
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_WrongVersion ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			SecurityElement se = anhp.ToXml ();
+			se.Attributes.Remove ("version");
+			se.Attributes.Add ("version", "2");
+			anhp.FromXml (se);
+		}
+
+		[Test]
+		[ExpectedException (typeof (ArgumentException))]
+		public void FromXml_NoVersion ()
+		{
+			AspNetHostingPermission anhp = new AspNetHostingPermission (PermissionState.None);
+			SecurityElement se = anhp.ToXml ();
+
+			SecurityElement w = new SecurityElement (se.Tag);
+			w.AddAttribute ("class", se.Attribute ("class"));
+			anhp.FromXml (w);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System/test-uri-props-manual.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System/test-uri-props-manual.txt
@@ -1,57 +1,57 @@
-﻿------------------------- MS.NET totally rejects Unix Path
-/foo.txt
-file:///foo.txt
-file:///foo.txt
-file
-
-/foo.txt
-
--1
-True
-False
-False
-False
-Basic
-/foo.txt
-/foo.txt
-
-
-
-------------------------- MS.NET totally rejects Unix Path
-/tmp/hello.txt
-file:///tmp/hello.txt
-file:///tmp/hello.txt
-file
-
-/tmp/hello.txt
-
--1
-True
-False
-False
-False
-Basic
-/tmp/hello.txt
-/tmp/hello.txt
-
-
-
-------------------------- MS.NET totally rejects Unix Path
-file:///test.top-level.directory/name space
-file:///test.top-level.directory/name space
-file:///test.top-level.directory/name%20space
-file
-
-/test.top-level.directory/name space
-
--1
-True
-False
-False
-False
-Basic
-/test.top-level.directory/name%20space
-/test.top-level.directory/name%20space
-
-
-
+﻿------------------------- MS.NET totally rejects Unix Path
+/foo.txt
+file:///foo.txt
+file:///foo.txt
+file
+
+/foo.txt
+
+-1
+True
+False
+False
+False
+Basic
+/foo.txt
+/foo.txt
+
+
+
+------------------------- MS.NET totally rejects Unix Path
+/tmp/hello.txt
+file:///tmp/hello.txt
+file:///tmp/hello.txt
+file
+
+/tmp/hello.txt
+
+-1
+True
+False
+False
+False
+Basic
+/tmp/hello.txt
+/tmp/hello.txt
+
+
+
+------------------------- MS.NET totally rejects Unix Path
+file:///test.top-level.directory/name space
+file:///test.top-level.directory/name space
+file:///test.top-level.directory/name%20space
+file
+
+/test.top-level.directory/name space
+
+-1
+True
+False
+False
+False
+Basic
+/test.top-level.directory/name%20space
+/test.top-level.directory/name%20space
+
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System/test-uri-props.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System/test-uri-props.txt
@@ -1,912 +1,912 @@
-﻿-------------------------
-http://server
-http://server/
-http://server/
-http
-server
-/
-
-80
-False
-False
-False
-False
-Dns
-/
-/
-server
-
-
--------------------------
-http://server/
-http://server/
-http://server/
-http
-server
-/
-
-80
-False
-False
-False
-False
-Dns
-/
-/
-server
-
-
--------------------------
-http://server/maybe_file
-http://server/maybe_file
-http://server/maybe_file
-http
-server
-/maybe_file
-
-80
-False
-False
-False
-False
-Dns
-/maybe_file
-/maybe_file
-server
-
-
--------------------------
-http://server/directory/
-http://server/directory/
-http://server/directory/
-http
-server
-/directory/
-
-80
-False
-False
-False
-False
-Dns
-/directory/
-/directory/
-server
-
-
--------------------------
-http://server.com
-http://server.com/
-http://server.com/
-http
-server.com
-/
-
-80
-False
-False
-False
-False
-Dns
-/
-/
-server.com
-
-
--------------------------
-http://server.com/
-http://server.com/
-http://server.com/
-http
-server.com
-/
-
-80
-False
-False
-False
-False
-Dns
-/
-/
-server.com
-
-
--------------------------
-http://server.com/maybe_file
-http://server.com/maybe_file
-http://server.com/maybe_file
-http
-server.com
-/maybe_file
-
-80
-False
-False
-False
-False
-Dns
-/maybe_file
-/maybe_file
-server.com
-
-
--------------------------
-http://server.com/directory/
-http://server.com/directory/
-http://server.com/directory/
-http
-server.com
-/directory/
-
-80
-False
-False
-False
-False
-Dns
-/directory/
-/directory/
-server.com
-
-
--------------------------
-c:/foo.txt
-file:///c:/foo.txt
-file:///c:/foo.txt
-file
-
-c:\foo.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/foo.txt
-c:/foo.txt
-
-
-
--------------------------
-c:\foo.txt
-file:///c:/foo.txt
-file:///c:/foo.txt
-file
-
-c:\foo.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/foo.txt
-c:/foo.txt
-
-
-
--------------------------
-file://c:/foo.txt
-file:///c:/foo.txt
-file:///c:/foo.txt
-file
-
-c:\foo.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/foo.txt
-c:/foo.txt
-
-
-
--------------------------
-\\server
-file://server
-file://server
-file
-server
-\\server
-
--1
-True
-True
-False
-False
-Dns
-
-
-server
-
-
--------------------------
-file://server
-file://server
-file://server
-file
-server
-\\server
-
--1
-True
-True
-False
-False
-Dns
-
-
-server
-
-
--------------------------
-file://server/
-file://server/
-file://server/
-file
-server
-\\server\
-
--1
-True
-True
-False
-False
-Dns
-/
-/
-server
-
-
--------------------------
-file://server/maybe_file
-file://server/maybe_file
-file://server/maybe_file
-file
-server
-\\server\maybe_file
-
--1
-True
-True
-False
-False
-Dns
-/maybe_file
-/maybe_file
-server
-
-
--------------------------
-file://server/directory/
-file://server/directory/
-file://server/directory/
-file
-server
-\\server\directory\
-
--1
-True
-True
-False
-False
-Dns
-/directory/
-/directory/
-server
-
-
--------------------------
-file://server.com
-file://server.com
-file://server.com
-file
-server.com
-\\server.com
-
--1
-True
-True
-False
-False
-Dns
-
-
-server.com
-
-
--------------------------
-file://readme.txt
-file://readme.txt
-file://readme.txt
-file
-readme.txt
-\\readme.txt
-
--1
-True
-True
-False
-False
-Dns
-
-
-readme.txt
-
-
--------------------------
-file://server.com/
-file://server.com/
-file://server.com/
-file
-server.com
-\\server.com\
-
--1
-True
-True
-False
-False
-Dns
-/
-/
-server.com
-
-
--------------------------
-file://server.com/maybe_file
-file://server.com/maybe_file
-file://server.com/maybe_file
-file
-server.com
-\\server.com\maybe_file
-
--1
-True
-True
-False
-False
-Dns
-/maybe_file
-/maybe_file
-server.com
-
-
--------------------------
-file://server.com/directory/
-file://server.com/directory/
-file://server.com/directory/
-file
-server.com
-\\server.com\directory\
-
--1
-True
-True
-False
-False
-Dns
-/directory/
-/directory/
-server.com
-
-
--------------------------
-http://contoso.com?subject=uri
-http://contoso.com/?subject=uri
-http://contoso.com/?subject=uri
-http
-contoso.com
-/
-?subject=uri
-80
-False
-False
-False
-False
-Dns
-/
-/?subject=uri
-contoso.com
-
-
--------------------------
-mailto:user:pwd@contoso.com?subject=uri
-mailto:user:pwd@contoso.com?subject=uri
-mailto:user:pwd@contoso.com?subject=uri
-mailto
-contoso.com
-
-?subject=uri
-25
-False
-False
-False
-False
-Dns
-
-?subject=uri
-contoso.com
-
-user:pwd
--------------------------
-\\myserver\mydir\mysubdir\myfile.ext
-file://myserver/mydir/mysubdir/myfile.ext
-file://myserver/mydir/mysubdir/myfile.ext
-file
-myserver
-\\myserver\mydir\mysubdir\myfile.ext
-
--1
-True
-True
-False
-False
-Dns
-/mydir/mysubdir/myfile.ext
-/mydir/mysubdir/myfile.ext
-myserver
-
-
--------------------------
-http://www.contoso.com
-http://www.contoso.com/
-http://www.contoso.com/
-http
-www.contoso.com
-/
-
-80
-False
-False
-False
-False
-Dns
-/
-/
-www.contoso.com
-
-
--------------------------
-http://www.contoso.com/foo/bar/index.html?x=0
-http://www.contoso.com/foo/bar/index.html?x=0
-http://www.contoso.com/foo/bar/index.html?x=0
-http
-www.contoso.com
-/foo/bar/index.html
-?x=0
-80
-False
-False
-False
-False
-Dns
-/foo/bar/index.html
-/foo/bar/index.html?x=0
-www.contoso.com
-
-
--------------------------
-c:\tmp\hello.txt
-file:///c:/tmp/hello.txt
-file:///c:/tmp/hello.txt
-file
-
-c:\tmp\hello.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/tmp/hello.txt
-c:/tmp/hello.txt
-
-
-
--------------------------
-file://mymachine/cygwin/tmp/hello.txt
-file://mymachine/cygwin/tmp/hello.txt
-file://mymachine/cygwin/tmp/hello.txt
-file
-mymachine
-\\mymachine\cygwin\tmp\hello.txt
-
--1
-True
-True
-False
-False
-Dns
-/cygwin/tmp/hello.txt
-/cygwin/tmp/hello.txt
-mymachine
-
-
--------------------------
-file://one_file.txt
-file://one_file.txt
-file://one_file.txt
-file
-one_file.txt
-\\one_file.txt
-
--1
-True
-True
-False
-False
-Dns
-
-
-one_file.txt
-
-
--------------------------
-file://cygwin/tmp/hello.txt
-file://cygwin/tmp/hello.txt
-file://cygwin/tmp/hello.txt
-file
-cygwin
-\\cygwin\tmp\hello.txt
-
--1
-True
-True
-False
-False
-Dns
-/tmp/hello.txt
-/tmp/hello.txt
-cygwin
-
-
--------------------------
-file://server/filename.ext
-file://server/filename.ext
-file://server/filename.ext
-file
-server
-\\server\filename.ext
-
--1
-True
-True
-False
-False
-Dns
-/filename.ext
-/filename.ext
-server
-
-
--------------------------
-\\server\share\filename.ext
-file://server/share/filename.ext
-file://server/share/filename.ext
-file
-server
-\\server\share\filename.ext
-
--1
-True
-True
-False
-False
-Dns
-/share/filename.ext
-/share/filename.ext
-server
-
-
--------------------------
-http://1.2.3.4
-http://1.2.3.4/
-http://1.2.3.4/
-http
-1.2.3.4
-/
-
-80
-False
-False
-False
-False
-IPv4
-/
-/
-1.2.3.4
-
-
--------------------------
-file://1.2.3.4
-file://1.2.3.4
-file://1.2.3.4
-file
-1.2.3.4
-\\1.2.3.4
-
--1
-True
-True
-False
-False
-IPv4
-
-
-1.2.3.4
-
-
--------------------------
-file:///c:/name%20with%20space.txt
-file:///c:/name with space.txt
-file:///c:/name%20with%20space.txt
-file
-
-c:\name with space.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/name%20with%20space.txt
-c:/name%20with%20space.txt
-
-
-
--------------------------
-http://localhost/c#
-http://localhost/c#
-http://localhost/c#
-http
-localhost
-/c
-
-80
-False
-False
-True
-False
-Dns
-/c
-/c
-localhost
-#
-
--------------------------
-http://localhost/c#bookmark
-http://localhost/c#bookmark
-http://localhost/c#bookmark
-http
-localhost
-/c
-
-80
-False
-False
-True
-False
-Dns
-/c
-/c
-localhost
-#bookmark
-
--------------------------
-file://localhost/c#fragment
-file://localhost/c#fragment
-file://localhost/c#fragment
-file
-localhost
-\\localhost\c
-
--1
-True
-True
-True
-False
-Dns
-/c
-/c
-localhost
-#fragment
-
--------------------------
-file://test.domain.com/c#
-file://test.domain.com/c#
-file://test.domain.com/c#
-file
-test.domain.com
-\\test.domain.com\c
-
--1
-True
-True
-False
-False
-Dns
-/c
-/c
-test.domain.com
-#
-
--------------------------
-file://test.domain.com/c#bookmark
-file://test.domain.com/c#bookmark
-file://test.domain.com/c#bookmark
-file
-test.domain.com
-\\test.domain.com\c
-
--1
-True
-True
-False
-False
-Dns
-/c
-/c
-test.domain.com
-#bookmark
-
--------------------------
-file://c:/c#
-file:///c:/c#
-file:///c:/c#
-file
-
-c:\c
-
--1
-True
-False
-False
-False
-Basic
-c:/c
-c:/c
-
-#
-
--------------------------
-http://c#
-http://c/#
-http://c/#
-http
-c
-/
-
-80
-False
-False
-False
-False
-Dns
-/
-/
-c
-#
-
--------------------------
-mailto:c#
-mailto:c#
-mailto:c#
-mailto
-c
-
-
-25
-False
-False
-False
-False
-Dns
-
-
-c
-#
-
--------------------------
-http://c#bookmark
-http://c/#bookmark
-http://c/#bookmark
-http
-c
-/
-
-80
-False
-False
-False
-False
-Dns
-/
-/
-c
-#bookmark
-
--------------------------
-urn:mono-uri-test
-urn:mono-uri-test
-urn:mono-uri-test
-urn
-
-mono-uri-test
-
--1
-False
-False
-False
-False
-Basic
-mono-uri-test
-mono-uri-test
-
-
-
--------------------------
-urn:mono-uri-test:8080
-urn:mono-uri-test:8080
-urn:mono-uri-test:8080
-urn
-
-mono-uri-test:8080
-
--1
-False
-False
-False
-False
-Basic
-mono-uri-test:8080
-mono-uri-test:8080
-
-
-
--------------------------
-urn://mono-uri-test:8080
-urn://mono-uri-test:8080/
-urn://mono-uri-test:8080/
-urn
-mono-uri-test
-/
-
-8080
-False
-False
-False
-False
-Dns
-/
-/
-mono-uri-test:8080
-
-
--------------------------
-http://web.app.com/test.cgi?value=あいうえお
-http://web.app.com/test.cgi?value=あいうえお
-http://web.app.com/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
-http
-web.app.com
-/test.cgi
-?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
-80
-False
-False
-False
-False
-Dns
-/test.cgi
-/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
-web.app.com
-
-
+﻿-------------------------
+http://server
+http://server/
+http://server/
+http
+server
+/
+
+80
+False
+False
+False
+False
+Dns
+/
+/
+server
+
+
+-------------------------
+http://server/
+http://server/
+http://server/
+http
+server
+/
+
+80
+False
+False
+False
+False
+Dns
+/
+/
+server
+
+
+-------------------------
+http://server/maybe_file
+http://server/maybe_file
+http://server/maybe_file
+http
+server
+/maybe_file
+
+80
+False
+False
+False
+False
+Dns
+/maybe_file
+/maybe_file
+server
+
+
+-------------------------
+http://server/directory/
+http://server/directory/
+http://server/directory/
+http
+server
+/directory/
+
+80
+False
+False
+False
+False
+Dns
+/directory/
+/directory/
+server
+
+
+-------------------------
+http://server.com
+http://server.com/
+http://server.com/
+http
+server.com
+/
+
+80
+False
+False
+False
+False
+Dns
+/
+/
+server.com
+
+
+-------------------------
+http://server.com/
+http://server.com/
+http://server.com/
+http
+server.com
+/
+
+80
+False
+False
+False
+False
+Dns
+/
+/
+server.com
+
+
+-------------------------
+http://server.com/maybe_file
+http://server.com/maybe_file
+http://server.com/maybe_file
+http
+server.com
+/maybe_file
+
+80
+False
+False
+False
+False
+Dns
+/maybe_file
+/maybe_file
+server.com
+
+
+-------------------------
+http://server.com/directory/
+http://server.com/directory/
+http://server.com/directory/
+http
+server.com
+/directory/
+
+80
+False
+False
+False
+False
+Dns
+/directory/
+/directory/
+server.com
+
+
+-------------------------
+c:/foo.txt
+file:///c:/foo.txt
+file:///c:/foo.txt
+file
+
+c:\foo.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/foo.txt
+c:/foo.txt
+
+
+
+-------------------------
+c:\foo.txt
+file:///c:/foo.txt
+file:///c:/foo.txt
+file
+
+c:\foo.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/foo.txt
+c:/foo.txt
+
+
+
+-------------------------
+file://c:/foo.txt
+file:///c:/foo.txt
+file:///c:/foo.txt
+file
+
+c:\foo.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/foo.txt
+c:/foo.txt
+
+
+
+-------------------------
+\\server
+file://server
+file://server
+file
+server
+\\server
+
+-1
+True
+True
+False
+False
+Dns
+
+
+server
+
+
+-------------------------
+file://server
+file://server
+file://server
+file
+server
+\\server
+
+-1
+True
+True
+False
+False
+Dns
+
+
+server
+
+
+-------------------------
+file://server/
+file://server/
+file://server/
+file
+server
+\\server\
+
+-1
+True
+True
+False
+False
+Dns
+/
+/
+server
+
+
+-------------------------
+file://server/maybe_file
+file://server/maybe_file
+file://server/maybe_file
+file
+server
+\\server\maybe_file
+
+-1
+True
+True
+False
+False
+Dns
+/maybe_file
+/maybe_file
+server
+
+
+-------------------------
+file://server/directory/
+file://server/directory/
+file://server/directory/
+file
+server
+\\server\directory\
+
+-1
+True
+True
+False
+False
+Dns
+/directory/
+/directory/
+server
+
+
+-------------------------
+file://server.com
+file://server.com
+file://server.com
+file
+server.com
+\\server.com
+
+-1
+True
+True
+False
+False
+Dns
+
+
+server.com
+
+
+-------------------------
+file://readme.txt
+file://readme.txt
+file://readme.txt
+file
+readme.txt
+\\readme.txt
+
+-1
+True
+True
+False
+False
+Dns
+
+
+readme.txt
+
+
+-------------------------
+file://server.com/
+file://server.com/
+file://server.com/
+file
+server.com
+\\server.com\
+
+-1
+True
+True
+False
+False
+Dns
+/
+/
+server.com
+
+
+-------------------------
+file://server.com/maybe_file
+file://server.com/maybe_file
+file://server.com/maybe_file
+file
+server.com
+\\server.com\maybe_file
+
+-1
+True
+True
+False
+False
+Dns
+/maybe_file
+/maybe_file
+server.com
+
+
+-------------------------
+file://server.com/directory/
+file://server.com/directory/
+file://server.com/directory/
+file
+server.com
+\\server.com\directory\
+
+-1
+True
+True
+False
+False
+Dns
+/directory/
+/directory/
+server.com
+
+
+-------------------------
+http://contoso.com?subject=uri
+http://contoso.com/?subject=uri
+http://contoso.com/?subject=uri
+http
+contoso.com
+/
+?subject=uri
+80
+False
+False
+False
+False
+Dns
+/
+/?subject=uri
+contoso.com
+
+
+-------------------------
+mailto:user:pwd@contoso.com?subject=uri
+mailto:user:pwd@contoso.com?subject=uri
+mailto:user:pwd@contoso.com?subject=uri
+mailto
+contoso.com
+
+?subject=uri
+25
+False
+False
+False
+False
+Dns
+
+?subject=uri
+contoso.com
+
+user:pwd
+-------------------------
+\\myserver\mydir\mysubdir\myfile.ext
+file://myserver/mydir/mysubdir/myfile.ext
+file://myserver/mydir/mysubdir/myfile.ext
+file
+myserver
+\\myserver\mydir\mysubdir\myfile.ext
+
+-1
+True
+True
+False
+False
+Dns
+/mydir/mysubdir/myfile.ext
+/mydir/mysubdir/myfile.ext
+myserver
+
+
+-------------------------
+http://www.contoso.com
+http://www.contoso.com/
+http://www.contoso.com/
+http
+www.contoso.com
+/
+
+80
+False
+False
+False
+False
+Dns
+/
+/
+www.contoso.com
+
+
+-------------------------
+http://www.contoso.com/foo/bar/index.html?x=0
+http://www.contoso.com/foo/bar/index.html?x=0
+http://www.contoso.com/foo/bar/index.html?x=0
+http
+www.contoso.com
+/foo/bar/index.html
+?x=0
+80
+False
+False
+False
+False
+Dns
+/foo/bar/index.html
+/foo/bar/index.html?x=0
+www.contoso.com
+
+
+-------------------------
+c:\tmp\hello.txt
+file:///c:/tmp/hello.txt
+file:///c:/tmp/hello.txt
+file
+
+c:\tmp\hello.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/tmp/hello.txt
+c:/tmp/hello.txt
+
+
+
+-------------------------
+file://mymachine/cygwin/tmp/hello.txt
+file://mymachine/cygwin/tmp/hello.txt
+file://mymachine/cygwin/tmp/hello.txt
+file
+mymachine
+\\mymachine\cygwin\tmp\hello.txt
+
+-1
+True
+True
+False
+False
+Dns
+/cygwin/tmp/hello.txt
+/cygwin/tmp/hello.txt
+mymachine
+
+
+-------------------------
+file://one_file.txt
+file://one_file.txt
+file://one_file.txt
+file
+one_file.txt
+\\one_file.txt
+
+-1
+True
+True
+False
+False
+Dns
+
+
+one_file.txt
+
+
+-------------------------
+file://cygwin/tmp/hello.txt
+file://cygwin/tmp/hello.txt
+file://cygwin/tmp/hello.txt
+file
+cygwin
+\\cygwin\tmp\hello.txt
+
+-1
+True
+True
+False
+False
+Dns
+/tmp/hello.txt
+/tmp/hello.txt
+cygwin
+
+
+-------------------------
+file://server/filename.ext
+file://server/filename.ext
+file://server/filename.ext
+file
+server
+\\server\filename.ext
+
+-1
+True
+True
+False
+False
+Dns
+/filename.ext
+/filename.ext
+server
+
+
+-------------------------
+\\server\share\filename.ext
+file://server/share/filename.ext
+file://server/share/filename.ext
+file
+server
+\\server\share\filename.ext
+
+-1
+True
+True
+False
+False
+Dns
+/share/filename.ext
+/share/filename.ext
+server
+
+
+-------------------------
+http://1.2.3.4
+http://1.2.3.4/
+http://1.2.3.4/
+http
+1.2.3.4
+/
+
+80
+False
+False
+False
+False
+IPv4
+/
+/
+1.2.3.4
+
+
+-------------------------
+file://1.2.3.4
+file://1.2.3.4
+file://1.2.3.4
+file
+1.2.3.4
+\\1.2.3.4
+
+-1
+True
+True
+False
+False
+IPv4
+
+
+1.2.3.4
+
+
+-------------------------
+file:///c:/name%20with%20space.txt
+file:///c:/name with space.txt
+file:///c:/name%20with%20space.txt
+file
+
+c:\name with space.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/name%20with%20space.txt
+c:/name%20with%20space.txt
+
+
+
+-------------------------
+http://localhost/c#
+http://localhost/c#
+http://localhost/c#
+http
+localhost
+/c
+
+80
+False
+False
+True
+False
+Dns
+/c
+/c
+localhost
+#
+
+-------------------------
+http://localhost/c#bookmark
+http://localhost/c#bookmark
+http://localhost/c#bookmark
+http
+localhost
+/c
+
+80
+False
+False
+True
+False
+Dns
+/c
+/c
+localhost
+#bookmark
+
+-------------------------
+file://localhost/c#fragment
+file://localhost/c#fragment
+file://localhost/c#fragment
+file
+localhost
+\\localhost\c
+
+-1
+True
+True
+True
+False
+Dns
+/c
+/c
+localhost
+#fragment
+
+-------------------------
+file://test.domain.com/c#
+file://test.domain.com/c#
+file://test.domain.com/c#
+file
+test.domain.com
+\\test.domain.com\c
+
+-1
+True
+True
+False
+False
+Dns
+/c
+/c
+test.domain.com
+#
+
+-------------------------
+file://test.domain.com/c#bookmark
+file://test.domain.com/c#bookmark
+file://test.domain.com/c#bookmark
+file
+test.domain.com
+\\test.domain.com\c
+
+-1
+True
+True
+False
+False
+Dns
+/c
+/c
+test.domain.com
+#bookmark
+
+-------------------------
+file://c:/c#
+file:///c:/c#
+file:///c:/c#
+file
+
+c:\c
+
+-1
+True
+False
+False
+False
+Basic
+c:/c
+c:/c
+
+#
+
+-------------------------
+http://c#
+http://c/#
+http://c/#
+http
+c
+/
+
+80
+False
+False
+False
+False
+Dns
+/
+/
+c
+#
+
+-------------------------
+mailto:c#
+mailto:c#
+mailto:c#
+mailto
+c
+
+
+25
+False
+False
+False
+False
+Dns
+
+
+c
+#
+
+-------------------------
+http://c#bookmark
+http://c/#bookmark
+http://c/#bookmark
+http
+c
+/
+
+80
+False
+False
+False
+False
+Dns
+/
+/
+c
+#bookmark
+
+-------------------------
+urn:mono-uri-test
+urn:mono-uri-test
+urn:mono-uri-test
+urn
+
+mono-uri-test
+
+-1
+False
+False
+False
+False
+Basic
+mono-uri-test
+mono-uri-test
+
+
+
+-------------------------
+urn:mono-uri-test:8080
+urn:mono-uri-test:8080
+urn:mono-uri-test:8080
+urn
+
+mono-uri-test:8080
+
+-1
+False
+False
+False
+False
+Basic
+mono-uri-test:8080
+mono-uri-test:8080
+
+
+
+-------------------------
+urn://mono-uri-test:8080
+urn://mono-uri-test:8080/
+urn://mono-uri-test:8080/
+urn
+mono-uri-test
+/
+
+8080
+False
+False
+False
+False
+Dns
+/
+/
+mono-uri-test:8080
+
+
+-------------------------
+http://web.app.com/test.cgi?value=あいうえお
+http://web.app.com/test.cgi?value=あいうえお
+http://web.app.com/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
+http
+web.app.com
+/test.cgi
+?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
+80
+False
+False
+False
+False
+Dns
+/test.cgi
+/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
+web.app.com
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/System/Test/System/test-uri-relative-props.txt
+++ mono-4.6.2.7+dfsg/mcs/class/System/Test/System/test-uri-relative-props.txt
@@ -1,969 +1,969 @@
-﻿-------------------------
-server
-http://www.go-mono.com/server
-http://www.go-mono.com/server
-http
-www.go-mono.com
-/server
-
-80
-False
-False
-False
-False
-Dns
-/server
-/server
-www.go-mono.com
-
-
--------------------------
-server/
-http://www.go-mono.com/server/
-http://www.go-mono.com/server/
-http
-www.go-mono.com
-/server/
-
-80
-False
-False
-False
-False
-Dns
-/server/
-/server/
-www.go-mono.com
-
-
--------------------------
-server/maybe_file
-http://www.go-mono.com/server/maybe_file
-http://www.go-mono.com/server/maybe_file
-http
-www.go-mono.com
-/server/maybe_file
-
-80
-False
-False
-False
-False
-Dns
-/server/maybe_file
-/server/maybe_file
-www.go-mono.com
-
-
--------------------------
-server/directory/
-http://www.go-mono.com/server/directory/
-http://www.go-mono.com/server/directory/
-http
-www.go-mono.com
-/server/directory/
-
-80
-False
-False
-False
-False
-Dns
-/server/directory/
-/server/directory/
-www.go-mono.com
-
-
--------------------------
-server.com
-http://www.go-mono.com/server.com
-http://www.go-mono.com/server.com
-http
-www.go-mono.com
-/server.com
-
-80
-False
-False
-False
-False
-Dns
-/server.com
-/server.com
-www.go-mono.com
-
-
--------------------------
-server.com/
-http://www.go-mono.com/server.com/
-http://www.go-mono.com/server.com/
-http
-www.go-mono.com
-/server.com/
-
-80
-False
-False
-False
-False
-Dns
-/server.com/
-/server.com/
-www.go-mono.com
-
-
--------------------------
-server.com/maybe_file
-http://www.go-mono.com/server.com/maybe_file
-http://www.go-mono.com/server.com/maybe_file
-http
-www.go-mono.com
-/server.com/maybe_file
-
-80
-False
-False
-False
-False
-Dns
-/server.com/maybe_file
-/server.com/maybe_file
-www.go-mono.com
-
-
--------------------------
-server.com/directory/
-http://www.go-mono.com/server.com/directory/
-http://www.go-mono.com/server.com/directory/
-http
-www.go-mono.com
-/server.com/directory/
-
-80
-False
-False
-False
-False
-Dns
-/server.com/directory/
-/server.com/directory/
-www.go-mono.com
-
-
--------------------------
-c:/foo.txt
-file:///c:/foo.txt
-file:///c:/foo.txt
-file
-
-c:\foo.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/foo.txt
-c:/foo.txt
-
-
-
--------------------------
-c:\foo.txt
-file:///c:/foo.txt
-file:///c:/foo.txt
-file
-
-c:\foo.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/foo.txt
-c:/foo.txt
-
-
-
--------------------------
-c:/foo.txt
-file:///c:/foo.txt
-file:///c:/foo.txt
-file
-
-c:\foo.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/foo.txt
-c:/foo.txt
-
-
-
--------------------------
-\\server
-file://server
-file://server
-file
-server
-\\server
-
--1
-True
-True
-False
-False
-Dns
-
-
-server
-
-
--------------------------
-server
-http://www.go-mono.com/server
-http://www.go-mono.com/server
-http
-www.go-mono.com
-/server
-
-80
-False
-False
-False
-False
-Dns
-/server
-/server
-www.go-mono.com
-
-
--------------------------
-server/
-http://www.go-mono.com/server/
-http://www.go-mono.com/server/
-http
-www.go-mono.com
-/server/
-
-80
-False
-False
-False
-False
-Dns
-/server/
-/server/
-www.go-mono.com
-
-
--------------------------
-server/maybe_file
-http://www.go-mono.com/server/maybe_file
-http://www.go-mono.com/server/maybe_file
-http
-www.go-mono.com
-/server/maybe_file
-
-80
-False
-False
-False
-False
-Dns
-/server/maybe_file
-/server/maybe_file
-www.go-mono.com
-
-
--------------------------
-server/directory/
-http://www.go-mono.com/server/directory/
-http://www.go-mono.com/server/directory/
-http
-www.go-mono.com
-/server/directory/
-
-80
-False
-False
-False
-False
-Dns
-/server/directory/
-/server/directory/
-www.go-mono.com
-
-
--------------------------
-server.com
-http://www.go-mono.com/server.com
-http://www.go-mono.com/server.com
-http
-www.go-mono.com
-/server.com
-
-80
-False
-False
-False
-False
-Dns
-/server.com
-/server.com
-www.go-mono.com
-
-
--------------------------
-readme.txt
-http://www.go-mono.com/readme.txt
-http://www.go-mono.com/readme.txt
-http
-www.go-mono.com
-/readme.txt
-
-80
-False
-False
-False
-False
-Dns
-/readme.txt
-/readme.txt
-www.go-mono.com
-
-
--------------------------
-server.com/
-http://www.go-mono.com/server.com/
-http://www.go-mono.com/server.com/
-http
-www.go-mono.com
-/server.com/
-
-80
-False
-False
-False
-False
-Dns
-/server.com/
-/server.com/
-www.go-mono.com
-
-
--------------------------
-server.com/maybe_file
-http://www.go-mono.com/server.com/maybe_file
-http://www.go-mono.com/server.com/maybe_file
-http
-www.go-mono.com
-/server.com/maybe_file
-
-80
-False
-False
-False
-False
-Dns
-/server.com/maybe_file
-/server.com/maybe_file
-www.go-mono.com
-
-
--------------------------
-server.com/directory/
-http://www.go-mono.com/server.com/directory/
-http://www.go-mono.com/server.com/directory/
-http
-www.go-mono.com
-/server.com/directory/
-
-80
-False
-False
-False
-False
-Dns
-/server.com/directory/
-/server.com/directory/
-www.go-mono.com
-
-
--------------------------
-contoso.com?subject=uri
-http://www.go-mono.com/contoso.com?subject=uri
-http://www.go-mono.com/contoso.com?subject=uri
-http
-www.go-mono.com
-/contoso.com
-?subject=uri
-80
-False
-False
-False
-False
-Dns
-/contoso.com
-/contoso.com?subject=uri
-www.go-mono.com
-
-
--------------------------
-mailto:user:pwd@contoso.com?subject=uri
-mailto:user:pwd@contoso.com?subject=uri
-mailto:user:pwd@contoso.com?subject=uri
-mailto
-contoso.com
-
-?subject=uri
-25
-False
-False
-False
-False
-Dns
-
-?subject=uri
-contoso.com
-
-user:pwd
--------------------------
-\\myserver\mydir\mysubdir\myfile.ext
-file://myserver/mydir/mysubdir/myfile.ext
-file://myserver/mydir/mysubdir/myfile.ext
-file
-myserver
-\\myserver\mydir\mysubdir\myfile.ext
-
--1
-True
-True
-False
-False
-Dns
-/mydir/mysubdir/myfile.ext
-/mydir/mysubdir/myfile.ext
-myserver
-
-
--------------------------
-www.contoso.com
-http://www.go-mono.com/www.contoso.com
-http://www.go-mono.com/www.contoso.com
-http
-www.go-mono.com
-/www.contoso.com
-
-80
-False
-False
-False
-False
-Dns
-/www.contoso.com
-/www.contoso.com
-www.go-mono.com
-
-
--------------------------
-www.contoso.com/foo/bar/index.html?x=0
-http://www.go-mono.com/www.contoso.com/foo/bar/index.html?x=0
-http://www.go-mono.com/www.contoso.com/foo/bar/index.html?x=0
-http
-www.go-mono.com
-/www.contoso.com/foo/bar/index.html
-?x=0
-80
-False
-False
-False
-False
-Dns
-/www.contoso.com/foo/bar/index.html
-/www.contoso.com/foo/bar/index.html?x=0
-www.go-mono.com
-
-
--------------------------
-c:\tmp\hello.txt
-file:///c:/tmp/hello.txt
-file:///c:/tmp/hello.txt
-file
-
-c:\tmp\hello.txt
-
--1
-True
-False
-False
-False
-Basic
-c:/tmp/hello.txt
-c:/tmp/hello.txt
-
-
-
--------------------------
-mymachine/cygwin/tmp/hello.txt
-http://www.go-mono.com/mymachine/cygwin/tmp/hello.txt
-http://www.go-mono.com/mymachine/cygwin/tmp/hello.txt
-http
-www.go-mono.com
-/mymachine/cygwin/tmp/hello.txt
-
-80
-False
-False
-False
-False
-Dns
-/mymachine/cygwin/tmp/hello.txt
-/mymachine/cygwin/tmp/hello.txt
-www.go-mono.com
-
-
--------------------------
-one_file.txt
-http://www.go-mono.com/one_file.txt
-http://www.go-mono.com/one_file.txt
-http
-www.go-mono.com
-/one_file.txt
-
-80
-False
-False
-False
-False
-Dns
-/one_file.txt
-/one_file.txt
-www.go-mono.com
-
-
--------------------------
-cygwin/tmp/hello.txt
-http://www.go-mono.com/cygwin/tmp/hello.txt
-http://www.go-mono.com/cygwin/tmp/hello.txt
-http
-www.go-mono.com
-/cygwin/tmp/hello.txt
-
-80
-False
-False
-False
-False
-Dns
-/cygwin/tmp/hello.txt
-/cygwin/tmp/hello.txt
-www.go-mono.com
-
-
--------------------------
-server/filename.ext
-http://www.go-mono.com/server/filename.ext
-http://www.go-mono.com/server/filename.ext
-http
-www.go-mono.com
-/server/filename.ext
-
-80
-False
-False
-False
-False
-Dns
-/server/filename.ext
-/server/filename.ext
-www.go-mono.com
-
-
--------------------------
-\\server\share\filename.ext
-file://server/share/filename.ext
-file://server/share/filename.ext
-file
-server
-\\server\share\filename.ext
-
--1
-True
-True
-False
-False
-Dns
-/share/filename.ext
-/share/filename.ext
-server
-
-
--------------------------
-1.2.3.4
-http://www.go-mono.com/1.2.3.4
-http://www.go-mono.com/1.2.3.4
-http
-www.go-mono.com
-/1.2.3.4
-
-80
-False
-False
-False
-False
-Dns
-/1.2.3.4
-/1.2.3.4
-www.go-mono.com
-
-
--------------------------
-1.2.3.4
-http://www.go-mono.com/1.2.3.4
-http://www.go-mono.com/1.2.3.4
-http
-www.go-mono.com
-/1.2.3.4
-
-80
-False
-False
-False
-False
-Dns
-/1.2.3.4
-/1.2.3.4
-www.go-mono.com
-
-
--------------------------
-localhost/c#
-http://www.go-mono.com/localhost/c#
-http://www.go-mono.com/localhost/c#
-http
-www.go-mono.com
-/localhost/c
-
-80
-False
-False
-False
-False
-Dns
-/localhost/c
-/localhost/c
-www.go-mono.com
-#
-
--------------------------
-localhost/c#bookmark
-http://www.go-mono.com/localhost/c#bookmark
-http://www.go-mono.com/localhost/c#bookmark
-http
-www.go-mono.com
-/localhost/c
-
-80
-False
-False
-False
-False
-Dns
-/localhost/c
-/localhost/c
-www.go-mono.com
-#bookmark
-
--------------------------
-localhost/c#
-http://www.go-mono.com/localhost/c#
-http://www.go-mono.com/localhost/c#
-http
-www.go-mono.com
-/localhost/c
-
-80
-False
-False
-False
-False
-Dns
-/localhost/c
-/localhost/c
-www.go-mono.com
-#
-
--------------------------
-c#
-http://www.go-mono.com/c#
-http://www.go-mono.com/c#
-http
-www.go-mono.com
-/c
-
-80
-False
-False
-False
-False
-Dns
-/c
-/c
-www.go-mono.com
-#
-
--------------------------
-mailto:c#
-mailto:c#
-mailto:c#
-mailto
-c
-
-
-25
-False
-False
-False
-False
-Dns
-
-
-c
-#
-
--------------------------
-c#bookmark
-http://www.go-mono.com/c#bookmark
-http://www.go-mono.com/c#bookmark
-http
-www.go-mono.com
-/c
-
-80
-False
-False
-False
-False
-Dns
-/c
-/c
-www.go-mono.com
-#bookmark
-
--------------------------
-urn:mono-uri-test
-urn:mono-uri-test
-urn:mono-uri-test
-urn
-
-mono-uri-test
-
--1
-False
-False
-False
-False
-Basic
-mono-uri-test
-mono-uri-test
-
-
-
--------------------------
-urn:mono-uri-test:8080
-urn:mono-uri-test:8080
-urn:mono-uri-test:8080
-urn
-
-mono-uri-test:8080
-
--1
-False
-False
-False
-False
-Basic
-mono-uri-test:8080
-mono-uri-test:8080
-
-
-
--------------------------
-urn://mono-uri-test:8080
-urn://mono-uri-test:8080/
-urn://mono-uri-test:8080/
-urn
-mono-uri-test
-/
-
-8080
-False
-False
-False
-False
-Dns
-/
-/
-mono-uri-test:8080
-
-
--------------------------
-ファイル:myserver/foo.txt
-ファイル:myserver/foo.txt
-ファイル:myserver/foo.txt
-ファイル
-
-myserver/foo.txt
-
--1
-False
-False
-False
-False
-Basic
-myserver/foo.txt
-myserver/foo.txt
-
-
-
--------------------------
-ファイル://myserver/foo.txt
-ファイル://myserver/foo.txt
-ファイル://myserver/foo.txt
-ファイル
-myserver
-/foo.txt
-
--1
-False
-False
-False
-False
-Dns
-/foo.txt
-/foo.txt
-myserver
-
-
--------------------------
-辭典://cn_to_ja/
-辭典://cn_to_ja/
-辭典://cn_to_ja/
-辭典
-cn_to_ja
-/
-
--1
-False
-False
-False
-False
-Dns
-/
-/
-cn_to_ja
-
-
--------------------------
-web.app.com/test.cgi?value=あいうえお
-http://www.go-mono.com/web.app.com/test.cgi?value=あいうえお
-http://www.go-mono.com/web.app.com/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
-http
-www.go-mono.com
-/web.app.com/test.cgi
-?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
-80
-False
-False
-False
-False
-Dns
-/web.app.com/test.cgi
-/web.app.com/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
-www.go-mono.com
-
-
--------------------------
-辭典:cn_to_ja/ファイル
-辭典:cn_to_ja/ファイル
-辭典:cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
-辭典
-
-cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
-
--1
-False
-False
-False
-False
-Basic
-cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
-cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
-
-
-
--------------------------
-ファイル:
-ファイル:
-ファイル:
-ファイル
-
-
-
--1
-False
-False
-False
-False
-Basic
-
-
-
-
-
--------------------------
-辭典:
-辭典:
-辭典:
-辭典
-
-
-
--1
-False
-False
-False
-False
-Basic
-
-
-
-
-
--------------------------
-c:/c#
-file:///c:/c%23
-file:///c:/c%23
-file
-
-c:\c#
-
--1
-True
-False
-False
-False
-Basic
-c:/c%23
-c:/c%23
-
-
-
+﻿-------------------------
+server
+http://www.go-mono.com/server
+http://www.go-mono.com/server
+http
+www.go-mono.com
+/server
+
+80
+False
+False
+False
+False
+Dns
+/server
+/server
+www.go-mono.com
+
+
+-------------------------
+server/
+http://www.go-mono.com/server/
+http://www.go-mono.com/server/
+http
+www.go-mono.com
+/server/
+
+80
+False
+False
+False
+False
+Dns
+/server/
+/server/
+www.go-mono.com
+
+
+-------------------------
+server/maybe_file
+http://www.go-mono.com/server/maybe_file
+http://www.go-mono.com/server/maybe_file
+http
+www.go-mono.com
+/server/maybe_file
+
+80
+False
+False
+False
+False
+Dns
+/server/maybe_file
+/server/maybe_file
+www.go-mono.com
+
+
+-------------------------
+server/directory/
+http://www.go-mono.com/server/directory/
+http://www.go-mono.com/server/directory/
+http
+www.go-mono.com
+/server/directory/
+
+80
+False
+False
+False
+False
+Dns
+/server/directory/
+/server/directory/
+www.go-mono.com
+
+
+-------------------------
+server.com
+http://www.go-mono.com/server.com
+http://www.go-mono.com/server.com
+http
+www.go-mono.com
+/server.com
+
+80
+False
+False
+False
+False
+Dns
+/server.com
+/server.com
+www.go-mono.com
+
+
+-------------------------
+server.com/
+http://www.go-mono.com/server.com/
+http://www.go-mono.com/server.com/
+http
+www.go-mono.com
+/server.com/
+
+80
+False
+False
+False
+False
+Dns
+/server.com/
+/server.com/
+www.go-mono.com
+
+
+-------------------------
+server.com/maybe_file
+http://www.go-mono.com/server.com/maybe_file
+http://www.go-mono.com/server.com/maybe_file
+http
+www.go-mono.com
+/server.com/maybe_file
+
+80
+False
+False
+False
+False
+Dns
+/server.com/maybe_file
+/server.com/maybe_file
+www.go-mono.com
+
+
+-------------------------
+server.com/directory/
+http://www.go-mono.com/server.com/directory/
+http://www.go-mono.com/server.com/directory/
+http
+www.go-mono.com
+/server.com/directory/
+
+80
+False
+False
+False
+False
+Dns
+/server.com/directory/
+/server.com/directory/
+www.go-mono.com
+
+
+-------------------------
+c:/foo.txt
+file:///c:/foo.txt
+file:///c:/foo.txt
+file
+
+c:\foo.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/foo.txt
+c:/foo.txt
+
+
+
+-------------------------
+c:\foo.txt
+file:///c:/foo.txt
+file:///c:/foo.txt
+file
+
+c:\foo.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/foo.txt
+c:/foo.txt
+
+
+
+-------------------------
+c:/foo.txt
+file:///c:/foo.txt
+file:///c:/foo.txt
+file
+
+c:\foo.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/foo.txt
+c:/foo.txt
+
+
+
+-------------------------
+\\server
+file://server
+file://server
+file
+server
+\\server
+
+-1
+True
+True
+False
+False
+Dns
+
+
+server
+
+
+-------------------------
+server
+http://www.go-mono.com/server
+http://www.go-mono.com/server
+http
+www.go-mono.com
+/server
+
+80
+False
+False
+False
+False
+Dns
+/server
+/server
+www.go-mono.com
+
+
+-------------------------
+server/
+http://www.go-mono.com/server/
+http://www.go-mono.com/server/
+http
+www.go-mono.com
+/server/
+
+80
+False
+False
+False
+False
+Dns
+/server/
+/server/
+www.go-mono.com
+
+
+-------------------------
+server/maybe_file
+http://www.go-mono.com/server/maybe_file
+http://www.go-mono.com/server/maybe_file
+http
+www.go-mono.com
+/server/maybe_file
+
+80
+False
+False
+False
+False
+Dns
+/server/maybe_file
+/server/maybe_file
+www.go-mono.com
+
+
+-------------------------
+server/directory/
+http://www.go-mono.com/server/directory/
+http://www.go-mono.com/server/directory/
+http
+www.go-mono.com
+/server/directory/
+
+80
+False
+False
+False
+False
+Dns
+/server/directory/
+/server/directory/
+www.go-mono.com
+
+
+-------------------------
+server.com
+http://www.go-mono.com/server.com
+http://www.go-mono.com/server.com
+http
+www.go-mono.com
+/server.com
+
+80
+False
+False
+False
+False
+Dns
+/server.com
+/server.com
+www.go-mono.com
+
+
+-------------------------
+readme.txt
+http://www.go-mono.com/readme.txt
+http://www.go-mono.com/readme.txt
+http
+www.go-mono.com
+/readme.txt
+
+80
+False
+False
+False
+False
+Dns
+/readme.txt
+/readme.txt
+www.go-mono.com
+
+
+-------------------------
+server.com/
+http://www.go-mono.com/server.com/
+http://www.go-mono.com/server.com/
+http
+www.go-mono.com
+/server.com/
+
+80
+False
+False
+False
+False
+Dns
+/server.com/
+/server.com/
+www.go-mono.com
+
+
+-------------------------
+server.com/maybe_file
+http://www.go-mono.com/server.com/maybe_file
+http://www.go-mono.com/server.com/maybe_file
+http
+www.go-mono.com
+/server.com/maybe_file
+
+80
+False
+False
+False
+False
+Dns
+/server.com/maybe_file
+/server.com/maybe_file
+www.go-mono.com
+
+
+-------------------------
+server.com/directory/
+http://www.go-mono.com/server.com/directory/
+http://www.go-mono.com/server.com/directory/
+http
+www.go-mono.com
+/server.com/directory/
+
+80
+False
+False
+False
+False
+Dns
+/server.com/directory/
+/server.com/directory/
+www.go-mono.com
+
+
+-------------------------
+contoso.com?subject=uri
+http://www.go-mono.com/contoso.com?subject=uri
+http://www.go-mono.com/contoso.com?subject=uri
+http
+www.go-mono.com
+/contoso.com
+?subject=uri
+80
+False
+False
+False
+False
+Dns
+/contoso.com
+/contoso.com?subject=uri
+www.go-mono.com
+
+
+-------------------------
+mailto:user:pwd@contoso.com?subject=uri
+mailto:user:pwd@contoso.com?subject=uri
+mailto:user:pwd@contoso.com?subject=uri
+mailto
+contoso.com
+
+?subject=uri
+25
+False
+False
+False
+False
+Dns
+
+?subject=uri
+contoso.com
+
+user:pwd
+-------------------------
+\\myserver\mydir\mysubdir\myfile.ext
+file://myserver/mydir/mysubdir/myfile.ext
+file://myserver/mydir/mysubdir/myfile.ext
+file
+myserver
+\\myserver\mydir\mysubdir\myfile.ext
+
+-1
+True
+True
+False
+False
+Dns
+/mydir/mysubdir/myfile.ext
+/mydir/mysubdir/myfile.ext
+myserver
+
+
+-------------------------
+www.contoso.com
+http://www.go-mono.com/www.contoso.com
+http://www.go-mono.com/www.contoso.com
+http
+www.go-mono.com
+/www.contoso.com
+
+80
+False
+False
+False
+False
+Dns
+/www.contoso.com
+/www.contoso.com
+www.go-mono.com
+
+
+-------------------------
+www.contoso.com/foo/bar/index.html?x=0
+http://www.go-mono.com/www.contoso.com/foo/bar/index.html?x=0
+http://www.go-mono.com/www.contoso.com/foo/bar/index.html?x=0
+http
+www.go-mono.com
+/www.contoso.com/foo/bar/index.html
+?x=0
+80
+False
+False
+False
+False
+Dns
+/www.contoso.com/foo/bar/index.html
+/www.contoso.com/foo/bar/index.html?x=0
+www.go-mono.com
+
+
+-------------------------
+c:\tmp\hello.txt
+file:///c:/tmp/hello.txt
+file:///c:/tmp/hello.txt
+file
+
+c:\tmp\hello.txt
+
+-1
+True
+False
+False
+False
+Basic
+c:/tmp/hello.txt
+c:/tmp/hello.txt
+
+
+
+-------------------------
+mymachine/cygwin/tmp/hello.txt
+http://www.go-mono.com/mymachine/cygwin/tmp/hello.txt
+http://www.go-mono.com/mymachine/cygwin/tmp/hello.txt
+http
+www.go-mono.com
+/mymachine/cygwin/tmp/hello.txt
+
+80
+False
+False
+False
+False
+Dns
+/mymachine/cygwin/tmp/hello.txt
+/mymachine/cygwin/tmp/hello.txt
+www.go-mono.com
+
+
+-------------------------
+one_file.txt
+http://www.go-mono.com/one_file.txt
+http://www.go-mono.com/one_file.txt
+http
+www.go-mono.com
+/one_file.txt
+
+80
+False
+False
+False
+False
+Dns
+/one_file.txt
+/one_file.txt
+www.go-mono.com
+
+
+-------------------------
+cygwin/tmp/hello.txt
+http://www.go-mono.com/cygwin/tmp/hello.txt
+http://www.go-mono.com/cygwin/tmp/hello.txt
+http
+www.go-mono.com
+/cygwin/tmp/hello.txt
+
+80
+False
+False
+False
+False
+Dns
+/cygwin/tmp/hello.txt
+/cygwin/tmp/hello.txt
+www.go-mono.com
+
+
+-------------------------
+server/filename.ext
+http://www.go-mono.com/server/filename.ext
+http://www.go-mono.com/server/filename.ext
+http
+www.go-mono.com
+/server/filename.ext
+
+80
+False
+False
+False
+False
+Dns
+/server/filename.ext
+/server/filename.ext
+www.go-mono.com
+
+
+-------------------------
+\\server\share\filename.ext
+file://server/share/filename.ext
+file://server/share/filename.ext
+file
+server
+\\server\share\filename.ext
+
+-1
+True
+True
+False
+False
+Dns
+/share/filename.ext
+/share/filename.ext
+server
+
+
+-------------------------
+1.2.3.4
+http://www.go-mono.com/1.2.3.4
+http://www.go-mono.com/1.2.3.4
+http
+www.go-mono.com
+/1.2.3.4
+
+80
+False
+False
+False
+False
+Dns
+/1.2.3.4
+/1.2.3.4
+www.go-mono.com
+
+
+-------------------------
+1.2.3.4
+http://www.go-mono.com/1.2.3.4
+http://www.go-mono.com/1.2.3.4
+http
+www.go-mono.com
+/1.2.3.4
+
+80
+False
+False
+False
+False
+Dns
+/1.2.3.4
+/1.2.3.4
+www.go-mono.com
+
+
+-------------------------
+localhost/c#
+http://www.go-mono.com/localhost/c#
+http://www.go-mono.com/localhost/c#
+http
+www.go-mono.com
+/localhost/c
+
+80
+False
+False
+False
+False
+Dns
+/localhost/c
+/localhost/c
+www.go-mono.com
+#
+
+-------------------------
+localhost/c#bookmark
+http://www.go-mono.com/localhost/c#bookmark
+http://www.go-mono.com/localhost/c#bookmark
+http
+www.go-mono.com
+/localhost/c
+
+80
+False
+False
+False
+False
+Dns
+/localhost/c
+/localhost/c
+www.go-mono.com
+#bookmark
+
+-------------------------
+localhost/c#
+http://www.go-mono.com/localhost/c#
+http://www.go-mono.com/localhost/c#
+http
+www.go-mono.com
+/localhost/c
+
+80
+False
+False
+False
+False
+Dns
+/localhost/c
+/localhost/c
+www.go-mono.com
+#
+
+-------------------------
+c#
+http://www.go-mono.com/c#
+http://www.go-mono.com/c#
+http
+www.go-mono.com
+/c
+
+80
+False
+False
+False
+False
+Dns
+/c
+/c
+www.go-mono.com
+#
+
+-------------------------
+mailto:c#
+mailto:c#
+mailto:c#
+mailto
+c
+
+
+25
+False
+False
+False
+False
+Dns
+
+
+c
+#
+
+-------------------------
+c#bookmark
+http://www.go-mono.com/c#bookmark
+http://www.go-mono.com/c#bookmark
+http
+www.go-mono.com
+/c
+
+80
+False
+False
+False
+False
+Dns
+/c
+/c
+www.go-mono.com
+#bookmark
+
+-------------------------
+urn:mono-uri-test
+urn:mono-uri-test
+urn:mono-uri-test
+urn
+
+mono-uri-test
+
+-1
+False
+False
+False
+False
+Basic
+mono-uri-test
+mono-uri-test
+
+
+
+-------------------------
+urn:mono-uri-test:8080
+urn:mono-uri-test:8080
+urn:mono-uri-test:8080
+urn
+
+mono-uri-test:8080
+
+-1
+False
+False
+False
+False
+Basic
+mono-uri-test:8080
+mono-uri-test:8080
+
+
+
+-------------------------
+urn://mono-uri-test:8080
+urn://mono-uri-test:8080/
+urn://mono-uri-test:8080/
+urn
+mono-uri-test
+/
+
+8080
+False
+False
+False
+False
+Dns
+/
+/
+mono-uri-test:8080
+
+
+-------------------------
+ファイル:myserver/foo.txt
+ファイル:myserver/foo.txt
+ファイル:myserver/foo.txt
+ファイル
+
+myserver/foo.txt
+
+-1
+False
+False
+False
+False
+Basic
+myserver/foo.txt
+myserver/foo.txt
+
+
+
+-------------------------
+ファイル://myserver/foo.txt
+ファイル://myserver/foo.txt
+ファイル://myserver/foo.txt
+ファイル
+myserver
+/foo.txt
+
+-1
+False
+False
+False
+False
+Dns
+/foo.txt
+/foo.txt
+myserver
+
+
+-------------------------
+辭典://cn_to_ja/
+辭典://cn_to_ja/
+辭典://cn_to_ja/
+辭典
+cn_to_ja
+/
+
+-1
+False
+False
+False
+False
+Dns
+/
+/
+cn_to_ja
+
+
+-------------------------
+web.app.com/test.cgi?value=あいうえお
+http://www.go-mono.com/web.app.com/test.cgi?value=あいうえお
+http://www.go-mono.com/web.app.com/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
+http
+www.go-mono.com
+/web.app.com/test.cgi
+?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
+80
+False
+False
+False
+False
+Dns
+/web.app.com/test.cgi
+/web.app.com/test.cgi?value=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A
+www.go-mono.com
+
+
+-------------------------
+辭典:cn_to_ja/ファイル
+辭典:cn_to_ja/ファイル
+辭典:cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
+辭典
+
+cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
+
+-1
+False
+False
+False
+False
+Basic
+cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
+cn_to_ja/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
+
+
+
+-------------------------
+ファイル:
+ファイル:
+ファイル:
+ファイル
+
+
+
+-1
+False
+False
+False
+False
+Basic
+
+
+
+
+
+-------------------------
+辭典:
+辭典:
+辭典:
+辭典
+
+
+
+-1
+False
+False
+False
+False
+Basic
+
+
+
+
+
+-------------------------
+c:/c#
+file:///c:/c%23
+file:///c:/c%23
+file
+
+c:\c#
+
+-1
+True
+False
+False
+False
+Basic
+c:/c%23
+c:/c%23
+
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/FakePackage.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/FakePackage.cs
@@ -1,82 +1,82 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//	Alan McGovern (amcgovern@novell.com)
-//
-
-
-using System;
-using System.IO;
-using System.IO.Packaging;
-using System.Collections.Generic;
-
-namespace MonoTests.System.IO.Packaging {
-	
-    public class FakePackage : Package {
-        Dictionary<Uri, PackagePart> Parts { get; set; }
-        public List<Uri> CreatedParts { get; private set; }
-        public List<Uri> DeletedParts { get; private set; }
-        public List<Uri> GotParts { get; private set; }
-
-        public FakePackage (FileAccess access, bool streaming)
-            : base (access, streaming)
-        {
-            CreatedParts = new List<Uri> ();
-            DeletedParts = new List<Uri> ();
-            GotParts = new List<Uri>();
-            Parts = new Dictionary<Uri, PackagePart> ();
-        }
-
-        protected override PackagePart CreatePartCore (Uri partUri, string contentType, CompressionOption compressionOption)
-        {
-            FakePackagePart p = new FakePackagePart (this, partUri, contentType, compressionOption);
-            Parts.Add (p.Uri, p);
-            CreatedParts.Add (partUri);
-            return p;
-        }
-
-        protected override void DeletePartCore (Uri partUri)
-        {
-            DeletedParts.Add (partUri);
-            Parts.Remove (partUri);
-        }
-
-        protected override void FlushCore ()
-        {
-            // Flush...
-        }
-        
-        protected override PackagePart GetPartCore (Uri partUri)
-        {
-            if (!GotParts.Contains (partUri))
-                GotParts.Add (partUri);
-            return Parts.ContainsKey(partUri) ?  Parts [partUri] : null;
-        }
-
-        protected override PackagePart [] GetPartsCore ()
-        {
-            PackagePart [] p = new PackagePart [Parts.Count];
-            Parts.Values.CopyTo (p, 0);
-            return p;
-        }
-    }
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//	Alan McGovern (amcgovern@novell.com)
+//
+
+
+using System;
+using System.IO;
+using System.IO.Packaging;
+using System.Collections.Generic;
+
+namespace MonoTests.System.IO.Packaging {
+	
+    public class FakePackage : Package {
+        Dictionary<Uri, PackagePart> Parts { get; set; }
+        public List<Uri> CreatedParts { get; private set; }
+        public List<Uri> DeletedParts { get; private set; }
+        public List<Uri> GotParts { get; private set; }
+
+        public FakePackage (FileAccess access, bool streaming)
+            : base (access, streaming)
+        {
+            CreatedParts = new List<Uri> ();
+            DeletedParts = new List<Uri> ();
+            GotParts = new List<Uri>();
+            Parts = new Dictionary<Uri, PackagePart> ();
+        }
+
+        protected override PackagePart CreatePartCore (Uri partUri, string contentType, CompressionOption compressionOption)
+        {
+            FakePackagePart p = new FakePackagePart (this, partUri, contentType, compressionOption);
+            Parts.Add (p.Uri, p);
+            CreatedParts.Add (partUri);
+            return p;
+        }
+
+        protected override void DeletePartCore (Uri partUri)
+        {
+            DeletedParts.Add (partUri);
+            Parts.Remove (partUri);
+        }
+
+        protected override void FlushCore ()
+        {
+            // Flush...
+        }
+        
+        protected override PackagePart GetPartCore (Uri partUri)
+        {
+            if (!GotParts.Contains (partUri))
+                GotParts.Add (partUri);
+            return Parts.ContainsKey(partUri) ?  Parts [partUri] : null;
+        }
+
+        protected override PackagePart [] GetPartsCore ()
+        {
+            PackagePart [] p = new PackagePart [Parts.Count];
+            Parts.Values.CopyTo (p, 0);
+            return p;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/FakePackagePartTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/FakePackagePartTests.cs
@@ -1,239 +1,239 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//    Alan McGovern (amcgovern@novell.com)
-//
-
-using System;
-using System.Linq;
-using System.Collections.Generic;
-using System.IO;
-using System.IO.Packaging;
-using System.Xml;
-using NUnit.Framework;
-
-namespace MonoTests.System.IO.Packaging {
-
-    [TestFixture]
-    public class FakePackagePartTests : TestBase {
-
-        static void Main (string [] args)
-        {
-            FakePackagePartTests t = new FakePackagePartTests ();
-            t.FixtureSetup ();
-            t.Setup ();
-            t.GetStream2 ();
-        }
-
-        FakePackagePart part;
-        public override void Setup ()
-        {
-            base.Setup ();
-            part = (FakePackagePart) new FakePackagePart(package, uris [0], contentType);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void Constructor1 ()
-        {
-            FakePackagePart p = new FakePackagePart (null, null);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void Constructor2 ()
-        {
-            FakePackagePart p = new FakePackagePart (package, null);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void Constructor3 ()
-        {
-            FakePackagePart p = new FakePackagePart (null, uris [0]);
-        }
-
-        [Test]
-        public void Constructor4 ()
-        {
-            new FakePackagePart (package, uris [0], null);
-        }
-
-        [Test]
-        public void Constructor5 ()
-        {
-            new FakePackagePart (package, uris [0], "");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void Constructor6 ()
-        {
-            new FakePackagePart (package, uris [0], "dgsdgdfgd");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void CreateRelationship1 ()
-        {
-            part.CreateRelationship (null, TargetMode.External, null);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void CreateRelationship2 ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, null);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void CreateRelationship3a ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, "");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void CreateRelationship3b ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, "    ");
-        }
-
-        [Test]
-        public void CreateRelationship4 ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, "blah");
-        }
-
-
-        [Test]
-        public void CreateRelationship5 ()
-        {
-            PackageRelationship r = part.CreateRelationship (uris [1], TargetMode.External, "blah", null);
-            Assert.IsNotNull (r.Id, "#1");
-            Assert.AreEqual (part.Uri, r.SourceUri, "#2");
-            Assert.AreEqual (uris [1], r.TargetUri, "#3");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void CreateRelationship6 ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, "blah", "");
-        }
-
-        [Test]
-        public void CreateRelationship7 ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
-        }
-
-        [Test]
-        [ExpectedException (typeof (XmlException))]
-        public void CreateDupeRelationship ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
-            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
-        }
-
-        [Test]
-        [ExpectedException (typeof (XmlException))]
-        public void CreateDupeRelationshipId ()
-        {
-            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
-            part.CreateRelationship (uris [2], TargetMode.Internal, "aaa", "asda");
-        }
-
-        [Test]
-        public void EnumeratePartsBreak ()
-        {
-            FakePackage package = new FakePackage (FileAccess.ReadWrite, false);
-
-            package.CreatePart (uris [0], "a/a");
-            package.CreatePart (uris [1], "a/a");
-            package.CreatePart (uris [2], "a/a");
-
-            Assert.IsTrue (package.GetParts () == package.GetParts (), "#1");
-            try {
-                foreach (PackagePart part in package.GetParts ())
-                    package.DeletePart (part.Uri);
-                Assert.Fail ("This should throw an exception");
-            } catch {
-            }
-
-            PackagePartCollection c = package.GetParts ();
-            package.CreatePart (new Uri ("/dfds", UriKind.Relative), "a/a");
-            int count = 0;
-            foreach (PackagePart p in c) { count++; }
-            Assert.AreEqual (3, count, "Three added, one deleted, one added");
-        }
-
-        [Test]
-        public void GetStream1 ()
-        {
-            part.GetStream ();
-            Assert.AreEqual (FileMode.OpenOrCreate, part.Modes [0], "#1");
-            Assert.AreEqual (package.FileOpenAccess, part.Accesses [0], "#2");
-        }
-
-        [Test]
-        [ExpectedException(typeof(NotSupportedException))]
-        public void PackagePartNoContentType ()
-        {
-            string s = new FakePackagePart (package, uris [0]).ContentType;
-        }
-
-        [Test]
-        public void GetStream2 ()
-        {
-            Assert.IsNotNull (package.CreatePart (uris[1], contentType));
-            Assert.AreEqual (1, new List<PackagePart> (package.GetParts()).Count, "#0a");
-            package.Flush ();
-			package.Close ();
-
-            using (Package p = Package.Open (new MemoryStream (stream.ToArray ()))) {
-				PackagePart part = new List<PackagePart>(p.GetParts ())[0];
-                Stream s = part.GetStream ();
-                Assert.IsTrue (s.CanRead, "#1");
-                Assert.IsTrue (s.CanSeek, "#2");
-                Assert.IsFalse (s.CanWrite, "#3");
-            }
-			
-            using (Package p = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.OpenOrCreate)) {
-                PackagePart part = new List<PackagePart> (p.GetParts ()) [0];
-                Stream s = part.GetStream ();
-                Assert.IsTrue (s.CanRead, "#4");
-                Assert.IsTrue (s.CanSeek, "#5");
-                Assert.IsTrue (s.CanWrite, "#6");
-            }
-
-            using (Package p = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
-                PackagePart part = new List<PackagePart> (p.GetParts ()) [0];
-                Stream s = part.GetStream ();
-                Assert.IsTrue (s.CanRead, "#7");
-                Assert.IsTrue (s.CanSeek, "#8");
-                Assert.IsTrue (s.CanWrite, "#9");
-            }
-        }
-    }
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//    Alan McGovern (amcgovern@novell.com)
+//
+
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Packaging;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.IO.Packaging {
+
+    [TestFixture]
+    public class FakePackagePartTests : TestBase {
+
+        static void Main (string [] args)
+        {
+            FakePackagePartTests t = new FakePackagePartTests ();
+            t.FixtureSetup ();
+            t.Setup ();
+            t.GetStream2 ();
+        }
+
+        FakePackagePart part;
+        public override void Setup ()
+        {
+            base.Setup ();
+            part = (FakePackagePart) new FakePackagePart(package, uris [0], contentType);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void Constructor1 ()
+        {
+            FakePackagePart p = new FakePackagePart (null, null);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void Constructor2 ()
+        {
+            FakePackagePart p = new FakePackagePart (package, null);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void Constructor3 ()
+        {
+            FakePackagePart p = new FakePackagePart (null, uris [0]);
+        }
+
+        [Test]
+        public void Constructor4 ()
+        {
+            new FakePackagePart (package, uris [0], null);
+        }
+
+        [Test]
+        public void Constructor5 ()
+        {
+            new FakePackagePart (package, uris [0], "");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void Constructor6 ()
+        {
+            new FakePackagePart (package, uris [0], "dgsdgdfgd");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void CreateRelationship1 ()
+        {
+            part.CreateRelationship (null, TargetMode.External, null);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void CreateRelationship2 ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, null);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void CreateRelationship3a ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, "");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void CreateRelationship3b ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, "    ");
+        }
+
+        [Test]
+        public void CreateRelationship4 ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, "blah");
+        }
+
+
+        [Test]
+        public void CreateRelationship5 ()
+        {
+            PackageRelationship r = part.CreateRelationship (uris [1], TargetMode.External, "blah", null);
+            Assert.IsNotNull (r.Id, "#1");
+            Assert.AreEqual (part.Uri, r.SourceUri, "#2");
+            Assert.AreEqual (uris [1], r.TargetUri, "#3");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void CreateRelationship6 ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, "blah", "");
+        }
+
+        [Test]
+        public void CreateRelationship7 ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
+        }
+
+        [Test]
+        [ExpectedException (typeof (XmlException))]
+        public void CreateDupeRelationship ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
+            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
+        }
+
+        [Test]
+        [ExpectedException (typeof (XmlException))]
+        public void CreateDupeRelationshipId ()
+        {
+            part.CreateRelationship (uris [1], TargetMode.External, "blah", "asda");
+            part.CreateRelationship (uris [2], TargetMode.Internal, "aaa", "asda");
+        }
+
+        [Test]
+        public void EnumeratePartsBreak ()
+        {
+            FakePackage package = new FakePackage (FileAccess.ReadWrite, false);
+
+            package.CreatePart (uris [0], "a/a");
+            package.CreatePart (uris [1], "a/a");
+            package.CreatePart (uris [2], "a/a");
+
+            Assert.IsTrue (package.GetParts () == package.GetParts (), "#1");
+            try {
+                foreach (PackagePart part in package.GetParts ())
+                    package.DeletePart (part.Uri);
+                Assert.Fail ("This should throw an exception");
+            } catch {
+            }
+
+            PackagePartCollection c = package.GetParts ();
+            package.CreatePart (new Uri ("/dfds", UriKind.Relative), "a/a");
+            int count = 0;
+            foreach (PackagePart p in c) { count++; }
+            Assert.AreEqual (3, count, "Three added, one deleted, one added");
+        }
+
+        [Test]
+        public void GetStream1 ()
+        {
+            part.GetStream ();
+            Assert.AreEqual (FileMode.OpenOrCreate, part.Modes [0], "#1");
+            Assert.AreEqual (package.FileOpenAccess, part.Accesses [0], "#2");
+        }
+
+        [Test]
+        [ExpectedException(typeof(NotSupportedException))]
+        public void PackagePartNoContentType ()
+        {
+            string s = new FakePackagePart (package, uris [0]).ContentType;
+        }
+
+        [Test]
+        public void GetStream2 ()
+        {
+            Assert.IsNotNull (package.CreatePart (uris[1], contentType));
+            Assert.AreEqual (1, new List<PackagePart> (package.GetParts()).Count, "#0a");
+            package.Flush ();
+			package.Close ();
+
+            using (Package p = Package.Open (new MemoryStream (stream.ToArray ()))) {
+				PackagePart part = new List<PackagePart>(p.GetParts ())[0];
+                Stream s = part.GetStream ();
+                Assert.IsTrue (s.CanRead, "#1");
+                Assert.IsTrue (s.CanSeek, "#2");
+                Assert.IsFalse (s.CanWrite, "#3");
+            }
+			
+            using (Package p = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.OpenOrCreate)) {
+                PackagePart part = new List<PackagePart> (p.GetParts ()) [0];
+                Stream s = part.GetStream ();
+                Assert.IsTrue (s.CanRead, "#4");
+                Assert.IsTrue (s.CanSeek, "#5");
+                Assert.IsTrue (s.CanWrite, "#6");
+            }
+
+            using (Package p = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
+                PackagePart part = new List<PackagePart> (p.GetParts ()) [0];
+                Stream s = part.GetStream ();
+                Assert.IsTrue (s.CanRead, "#7");
+                Assert.IsTrue (s.CanSeek, "#8");
+                Assert.IsTrue (s.CanWrite, "#9");
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/FakePackageTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/FakePackageTests.cs
@@ -1,219 +1,219 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-// Alan McGovern (amcgovern@novell.com)
-//
-
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.IO.Packaging;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-
-namespace MonoTests.System.IO.Packaging
-{
-
-    [TestFixture]
-    public class FakePackageTests : TestBase
-    {
-
-        //static void Main (string [] args)
-        //{
-        //    FakePackageTests t = new FakePackageTests ();
-        //    t.FixtureSetup ();
-        //    t.Setup ();
-        //    t.RelationshipPartGetStream ();
-        //}
-
-        private new FakePackage package;
-        public override void Setup()
-        {
-            package = new FakePackage(FileAccess.ReadWrite, true);
-        }
-
-        [Test]
-        public void CheckAutomaticParts()
-        {
-            package.CreatePart(uris[0], contentType);
-            Assert.AreEqual(1, package.CreatedParts.Count(), "#1");
-            Assert.AreEqual(uris[0], package.CreatedParts[0], "#2");
-            Assert.AreEqual(0, package.DeletedParts.Count(), "#3");
-            Assert.AreEqual(1, package.GetParts().Count(), "#4");
-        }
-
-        [Test]
-        public void CheckAutomaticParts2()
-        {
-            package.CreateRelationship(uris[0], TargetMode.External, "relationship");
-            Assert.AreEqual(1, package.CreatedParts.Count(), "#1");
-            Assert.AreEqual(relationshipUri, package.CreatedParts[0], "#2");
-            Assert.AreEqual(0, package.DeletedParts.Count(), "#3");
-            Assert.AreEqual(1, package.GetParts().Count(), "#4");
-
-            PackagePart p = package.GetPart(relationshipUri);
-            Assert.AreEqual(package, p.Package, "#5");
-            Assert.AreEqual(CompressionOption.NotCompressed, p.CompressionOption, "#6");
-            Assert.AreEqual("application/vnd.openxmlformats-package.relationships+xml", p.ContentType, "#7");
-        }
-
-        [Test]
-        public void CheckProperties()
-        {
-            Assert.AreEqual(0, package.GotParts.Count, "#1");
-            object o = package.PackageProperties;
-            Assert.AreEqual(1, package.GotParts.Count, "#2");
-            Assert.AreEqual("/_rels/.rels", package.GotParts[0].ToString(), "#3");
-        }
-
-        [Test]
-        public void RelationshipPartGetRelationships()
-        {
-            CheckAutomaticParts2();
-            PackagePart p = package.GetPart(relationshipUri);
-
-            try
-            {
-                p.CreateRelationship(uris[0], TargetMode.Internal, "asdas");
-                Assert.Fail("This should fail 1");
-            }
-            catch (InvalidOperationException)
-            {
-
-            }
-
-            try
-            {
-                p.DeleteRelationship("aa");
-                Assert.Fail("This should fail 2");
-            }
-            catch (InvalidOperationException)
-            {
-
-            }
-
-            try
-            {
-                p.GetRelationship("id");
-                Assert.Fail("This should fail 3");
-            }
-            catch (InvalidOperationException)
-            {
-
-            }
-
-            try
-            {
-                p.GetRelationships();
-                Assert.Fail("This should fail 4");
-            }
-            catch (InvalidOperationException)
-            {
-
-            }
-
-            try
-            {
-                p.GetRelationshipsByType("type");
-                Assert.Fail("This should fail 5");
-            }
-            catch (InvalidOperationException)
-            {
-
-            }
-
-            try
-            {
-                p.RelationshipExists("id");
-                Assert.Fail("This should fail 6");
-            }
-            catch (InvalidOperationException)
-            {
-
-            }
-        }
-
-        [Test]
-        public void TestProperties()
-        {
-            Assert.IsNotNull(package.PackageProperties, "#1");
-            package.PackageProperties.Title = "Title";
-            package.Flush();
-
-            // the relationship part and packageproperties part
-            Assert.AreEqual(2, package.CreatedParts.Count, "#2");
-        }
-
-        [Test]
-        public void TestWordDoc()
-        {
-            MemoryStream stream = new MemoryStream();
-            Package package = CreateWordDoc(stream);
-            Assert.IsTrue(package.PartExists(new Uri("/word/document.xml", UriKind.Relative)), "#1");
-            Assert.IsTrue(package.RelationshipExists("rel1"), "#2");
-            package.Close();
-            package = Package.Open(new MemoryStream(stream.ToArray()), FileMode.Open);
-            Assert.AreEqual(10, package.GetParts().Count(), "#3");
-            Assert.AreEqual (9, package.GetRelationships ().Count (), "#4");
-            Assert.IsTrue(package.PartExists(new Uri("/word/document.xml", UriKind.Relative)), "#5");
-            Assert.IsTrue(package.RelationshipExists("rel1"), "#6");
-        }
-
-        Package CreateWordDoc(Stream stream)
-        {
-            Package pack = Package.Open(stream, FileMode.Create);
-
-            // Create package parts.
-            PackagePart wordDocument = pack.CreatePart(new Uri("/word/document.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml");
-            PackagePart wordNumbering = pack.CreatePart(new Uri("/word/numbering.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml");
-            PackagePart wordStyles = pack.CreatePart(new Uri("/word/styles.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml");
-            PackagePart docPropsApp = pack.CreatePart(new Uri("/docProps/app.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.extended-properties+xml");
-            PackagePart wordSettings = pack.CreatePart(new Uri("/word/settings.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml");
-            PackagePart wordTheme1 = pack.CreatePart(new Uri("/word/theme/theme1.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.theme+xml");
-            PackagePart wordFontTable = pack.CreatePart(new Uri("/word/fontTable.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml");
-            PackagePart wordWebSettings = pack.CreatePart(new Uri("/word/webSettings.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml");
-            PackagePart docPropsCore = pack.CreatePart(new Uri("/docProps/core.xml", UriKind.Relative), "application/vnd.openxmlformats-package.core-properties+xml");
-
-            // Create relationships for package.
-            pack.CreateRelationship(new Uri("docProps/app.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties");
-            pack.CreateRelationship(new Uri("docProps/core.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties");
-            pack.CreateRelationship(new Uri("word/document.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument");
-
-            // Create document relationships.
-            pack.CreateRelationship(new Uri("settings.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings", "rel1");
-            pack.CreateRelationship(new Uri("styles.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", "rel2");
-            pack.CreateRelationship(new Uri("numbering.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering", "rel3");
-            pack.CreateRelationship(new Uri("theme/theme1.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", "rel4");
-            pack.CreateRelationship(new Uri("fontTable.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable", "rel5");
-            pack.CreateRelationship(new Uri("webSettings.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings", "rel6");
-
-            // Load some basic data into the different parts.
-            foreach (PackagePart part in package.GetParts())
-                using (Stream s = part.GetStream())
-                    s.Write(new byte[10], 0, 10);
-            
-            return pack;
-        }
-    }
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+// Alan McGovern (amcgovern@novell.com)
+//
+
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Packaging;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+namespace MonoTests.System.IO.Packaging
+{
+
+    [TestFixture]
+    public class FakePackageTests : TestBase
+    {
+
+        //static void Main (string [] args)
+        //{
+        //    FakePackageTests t = new FakePackageTests ();
+        //    t.FixtureSetup ();
+        //    t.Setup ();
+        //    t.RelationshipPartGetStream ();
+        //}
+
+        private new FakePackage package;
+        public override void Setup()
+        {
+            package = new FakePackage(FileAccess.ReadWrite, true);
+        }
+
+        [Test]
+        public void CheckAutomaticParts()
+        {
+            package.CreatePart(uris[0], contentType);
+            Assert.AreEqual(1, package.CreatedParts.Count(), "#1");
+            Assert.AreEqual(uris[0], package.CreatedParts[0], "#2");
+            Assert.AreEqual(0, package.DeletedParts.Count(), "#3");
+            Assert.AreEqual(1, package.GetParts().Count(), "#4");
+        }
+
+        [Test]
+        public void CheckAutomaticParts2()
+        {
+            package.CreateRelationship(uris[0], TargetMode.External, "relationship");
+            Assert.AreEqual(1, package.CreatedParts.Count(), "#1");
+            Assert.AreEqual(relationshipUri, package.CreatedParts[0], "#2");
+            Assert.AreEqual(0, package.DeletedParts.Count(), "#3");
+            Assert.AreEqual(1, package.GetParts().Count(), "#4");
+
+            PackagePart p = package.GetPart(relationshipUri);
+            Assert.AreEqual(package, p.Package, "#5");
+            Assert.AreEqual(CompressionOption.NotCompressed, p.CompressionOption, "#6");
+            Assert.AreEqual("application/vnd.openxmlformats-package.relationships+xml", p.ContentType, "#7");
+        }
+
+        [Test]
+        public void CheckProperties()
+        {
+            Assert.AreEqual(0, package.GotParts.Count, "#1");
+            object o = package.PackageProperties;
+            Assert.AreEqual(1, package.GotParts.Count, "#2");
+            Assert.AreEqual("/_rels/.rels", package.GotParts[0].ToString(), "#3");
+        }
+
+        [Test]
+        public void RelationshipPartGetRelationships()
+        {
+            CheckAutomaticParts2();
+            PackagePart p = package.GetPart(relationshipUri);
+
+            try
+            {
+                p.CreateRelationship(uris[0], TargetMode.Internal, "asdas");
+                Assert.Fail("This should fail 1");
+            }
+            catch (InvalidOperationException)
+            {
+
+            }
+
+            try
+            {
+                p.DeleteRelationship("aa");
+                Assert.Fail("This should fail 2");
+            }
+            catch (InvalidOperationException)
+            {
+
+            }
+
+            try
+            {
+                p.GetRelationship("id");
+                Assert.Fail("This should fail 3");
+            }
+            catch (InvalidOperationException)
+            {
+
+            }
+
+            try
+            {
+                p.GetRelationships();
+                Assert.Fail("This should fail 4");
+            }
+            catch (InvalidOperationException)
+            {
+
+            }
+
+            try
+            {
+                p.GetRelationshipsByType("type");
+                Assert.Fail("This should fail 5");
+            }
+            catch (InvalidOperationException)
+            {
+
+            }
+
+            try
+            {
+                p.RelationshipExists("id");
+                Assert.Fail("This should fail 6");
+            }
+            catch (InvalidOperationException)
+            {
+
+            }
+        }
+
+        [Test]
+        public void TestProperties()
+        {
+            Assert.IsNotNull(package.PackageProperties, "#1");
+            package.PackageProperties.Title = "Title";
+            package.Flush();
+
+            // the relationship part and packageproperties part
+            Assert.AreEqual(2, package.CreatedParts.Count, "#2");
+        }
+
+        [Test]
+        public void TestWordDoc()
+        {
+            MemoryStream stream = new MemoryStream();
+            Package package = CreateWordDoc(stream);
+            Assert.IsTrue(package.PartExists(new Uri("/word/document.xml", UriKind.Relative)), "#1");
+            Assert.IsTrue(package.RelationshipExists("rel1"), "#2");
+            package.Close();
+            package = Package.Open(new MemoryStream(stream.ToArray()), FileMode.Open);
+            Assert.AreEqual(10, package.GetParts().Count(), "#3");
+            Assert.AreEqual (9, package.GetRelationships ().Count (), "#4");
+            Assert.IsTrue(package.PartExists(new Uri("/word/document.xml", UriKind.Relative)), "#5");
+            Assert.IsTrue(package.RelationshipExists("rel1"), "#6");
+        }
+
+        Package CreateWordDoc(Stream stream)
+        {
+            Package pack = Package.Open(stream, FileMode.Create);
+
+            // Create package parts.
+            PackagePart wordDocument = pack.CreatePart(new Uri("/word/document.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml");
+            PackagePart wordNumbering = pack.CreatePart(new Uri("/word/numbering.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml");
+            PackagePart wordStyles = pack.CreatePart(new Uri("/word/styles.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml");
+            PackagePart docPropsApp = pack.CreatePart(new Uri("/docProps/app.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.extended-properties+xml");
+            PackagePart wordSettings = pack.CreatePart(new Uri("/word/settings.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml");
+            PackagePart wordTheme1 = pack.CreatePart(new Uri("/word/theme/theme1.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.theme+xml");
+            PackagePart wordFontTable = pack.CreatePart(new Uri("/word/fontTable.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml");
+            PackagePart wordWebSettings = pack.CreatePart(new Uri("/word/webSettings.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml");
+            PackagePart docPropsCore = pack.CreatePart(new Uri("/docProps/core.xml", UriKind.Relative), "application/vnd.openxmlformats-package.core-properties+xml");
+
+            // Create relationships for package.
+            pack.CreateRelationship(new Uri("docProps/app.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties");
+            pack.CreateRelationship(new Uri("docProps/core.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties");
+            pack.CreateRelationship(new Uri("word/document.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument");
+
+            // Create document relationships.
+            pack.CreateRelationship(new Uri("settings.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings", "rel1");
+            pack.CreateRelationship(new Uri("styles.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", "rel2");
+            pack.CreateRelationship(new Uri("numbering.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering", "rel3");
+            pack.CreateRelationship(new Uri("theme/theme1.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", "rel4");
+            pack.CreateRelationship(new Uri("fontTable.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable", "rel5");
+            pack.CreateRelationship(new Uri("webSettings.xml", UriKind.Relative), TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings", "rel6");
+
+            // Load some basic data into the different parts.
+            foreach (PackagePart part in package.GetParts())
+                using (Stream s = part.GetStream())
+                    s.Write(new byte[10], 0, 10);
+            
+            return pack;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/PackUriHelperTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/PackUriHelperTests.cs
@@ -1,346 +1,346 @@
-// PackUriHelperTests.cs created with MonoDevelop
-// User: alan at 13:39 28/10/2008
-//
-// To change standard headers go to Edit->Preferences->Coding->Standard Headers
-//
-
-using System;
-using System.IO.Packaging;
-using NUnit.Framework;
-
-namespace MonoTests.System.IO.Packaging {
-    
-    [TestFixture]
-    public class PackUriHelperTests {
-
-        Uri a {
-            get { return PackUriHelper.Create (new Uri ("http://www.test.com/pack1.pkg")); }
-        }
-        Uri b {
-            get { return  PackUriHelper.Create (new Uri ("http://www.test.com/pack2.pkg")); }
-        }
-
-        Uri part1 = new Uri ("/file1", UriKind.Relative);
-        Uri part2 = new Uri ("/file2", UriKind.Relative);
-        Uri main = new Uri ("/main.html", UriKind.Relative);
-
-        [Test]
-        public void ComparePackUriTest ()
-        {
-            Assert.AreEqual (0, PackUriHelper.ComparePackUri (null, null), "#1");
-            Assert.IsTrue (PackUriHelper.ComparePackUri (a, null) > 0, "#2");
-            Assert.AreEqual (0, PackUriHelper.ComparePackUri (a, a), "#3");
-            Assert.IsTrue (PackUriHelper.ComparePackUri (a, b) < 0, "#4");
-        }
-
-        [Test]
-        [Category("NotWorking")]
-        [ExpectedException(typeof(UriFormatException))]
-        public void CompareInvalidTest ()
-        {
-            Uri a = new Uri ("pack://url1");
-            PackUriHelper.ComparePackUri (a, a);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void NonPackUriCompareTest ()
-        {
-            PackUriHelper.ComparePackUri (new Uri ("http://wtest.com"), a);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void NonPackUriCompareRelativeTest ()
-        {
-            PackUriHelper.ComparePackUri (new Uri ("wtest.com", UriKind.Relative), a);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void InvalidPartUriCompareTest ()
-        {
-            PackUriHelper.ComparePartUri (a, b);
-        }
-
-        [Test]
-        public void PartUriCompareTest ()
-        {
-            Assert.AreEqual (0, PackUriHelper.ComparePartUri (null, null), "#1");
-            Assert.IsTrue (PackUriHelper.ComparePartUri (part1, null) > 0, "#2");
-            Assert.IsTrue (PackUriHelper.ComparePartUri (part1, part2) < 0, "#3");
-        }
-
-        [Test]
-        public void CreateTest ()
-        {
-            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/",
-                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg")).ToString (), "#1");
-            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/",
-                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), null, null).ToString (), "#2");
-            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/main.html#frag",
-                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"),
-                                                   new Uri ("/main.html", UriKind.Relative), "#frag").ToString (), "#3");
-            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/main.html#frag",
-                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"),
-                                                   new Uri ("/main.html", UriKind.Relative), "#frag").ToString (), "#3");
-        }
-
-        [Test]
-        public void CreateTest2()
-        {
-                Uri uri = PackUriHelper.Create(new Uri("http://www.test.com/pack1.pkg"));
-                Assert.AreEqual("pack://pack:,,http:%2C%2Cwww.test.com%2Cpack1.pkg,/", PackUriHelper.Create(uri).ToString());
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void CreateInvalidTest ()
-        {
-            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "notfrag");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void CreateInvalidTest2 ()
-        {
-            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void CreateInvalidTest3 ()
-        {
-            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "");
-        }
-
-        [Test]
-        public void CreateInvalidTest4 ()
-        {
-            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative));
-        }
-
-        [Test]
-        public void CreatePartUri ()
-        {
-            Assert.IsFalse (PackUriHelper.CreatePartUri (part1).IsAbsoluteUri, "#1");
-            Assert.AreEqual (new Uri (part1.ToString (), UriKind.Relative), PackUriHelper.CreatePartUri (part1), "#2");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void CreatePartUri2 ()
-        {
-            PackUriHelper.CreatePartUri (null);
-        }
-
-        [Test]
-        public void GetNormalizedPartUriTest ()
-        {
-            Uri uri = new Uri ("/test.com".ToUpperInvariant (), UriKind.Relative);
-            Assert.IsTrue (uri == PackUriHelper.GetNormalizedPartUri (uri));
-        }
-        [Test]
-        public void GetNormalisedPartUritest4 ()
-        {
-            PackUriHelper.GetNormalizedPartUri (part1);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void GetNormalizedPartUriTest2 ()
-        {
-            PackUriHelper.GetNormalizedPartUri (null);
-        }
-
-        [Test]
-        [ExpectedException (typeof (UriFormatException))]
-        public void GetNormalizedPartUriTest3 ()
-        {
-            Assert.AreEqual (new Uri (a.ToString ().ToUpperInvariant (), UriKind.Relative), PackUriHelper.GetNormalizedPartUri (a));
-        }
-
-        [Test]
-        public void GetPackageUriTest ()
-        {
-            Assert.AreEqual (a, PackUriHelper.GetPackageUri (PackUriHelper.Create (a, new Uri ("/test.html", UriKind.Relative))));
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void GetPackageUri2 ()
-        {
-            PackUriHelper.GetPackageUri (null);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void GetPackageUri3 ()
-        {
-            PackUriHelper.GetPackageUri (part1);
-        }
-
-        [Test]
-        public void GetPartUriTest ()
-        {
-                var pack = PackUriHelper.Create(new Uri("http://www.test.com/pack1.pkg"));
-                var part = new Uri("/main.html", UriKind.Relative);
-                var pack_part = new Uri(@"pack://pack:,,http:%2C%2Cwww.test.com%2Cpack1.pkg,/main.html");
-
-                Assert.IsNull(PackUriHelper.GetPartUri(pack), "#1");
-                Assert.AreEqual(pack_part, PackUriHelper.Create(pack, part), "#2");
-                Assert.AreEqual(part, PackUriHelper.GetPartUri(PackUriHelper.Create(pack, part)), "#3");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void GetPartUriTest2 ()
-        {
-            PackUriHelper.GetPartUri (null);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void GetPartUriTest3 ()
-        {
-            PackUriHelper.GetPartUri (part1);
-        }
-
-        [Test]
-        public void GetRelationshipPartUriTest ()
-        {
-            Assert.AreEqual ("/_rels/file1.rels", PackUriHelper.GetRelationshipPartUri (part1).ToString());
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentNullException))]
-        public void GetRelationshipPartUriTest2 ()
-        {
-            PackUriHelper.GetRelationshipPartUri (null);
-        }
-
-        [Test]
-        public void GetRelativeUriTest ()
-        {
-            Uri src = new Uri ("/1/2/3/file.jpg", UriKind.Relative);
-            Uri dest = new Uri ("/file2.png", UriKind.Relative);
-            Assert.AreEqual (new Uri ("../../../file2.png", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#1");
-
-            dest = new Uri ("/1/2", UriKind.Relative);
-            Assert.AreEqual (new Uri ("../../2", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#2");
-
-            dest = new Uri ("/1/2/", UriKind.Relative);
-            Assert.AreEqual (new Uri ("", UriKind.Relative), PackUriHelper.GetRelativeUri (src, src), "#4");
-
-            // See: http://msdn.microsoft.com/en-us/library/system.io.packaging.packurihelper.getrelativeuri.aspx
-
-            src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
-            dest = new Uri("/mydoc/markup/picture.jpg", UriKind.Relative);
-            Assert.AreEqual (new Uri ("picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#5");
-
-            src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
-            dest = new Uri("/mydoc/picture.jpg", UriKind.Relative);
-            Assert.AreEqual (new Uri ("../picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#6");
-
-            src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
-            dest = new Uri("/mydoc/images/picture.jpg", UriKind.Relative);
-            Assert.AreEqual (new Uri ("../images/picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#7");
-
-        }
-
-        [Test]
-        [ExpectedException (typeof(ArgumentException))]
-        public void GetRelativeUriTest2 ()
-        {
-            Uri src = new Uri ("/1/2/3/file.jpg", UriKind.Relative);
-            Uri dest = new Uri ("/1/2/", UriKind.Relative);
-            Assert.AreEqual (new Uri ("../file2.png", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#3");
-        }
-
-        [Test]
-        public void IsRelationshipPartUriTest ()
-        {
-            Assert.IsFalse (PackUriHelper.IsRelationshipPartUri (new Uri ("/_rels/Whatever", UriKind.Relative)));
-            Assert.IsTrue (PackUriHelper.IsRelationshipPartUri (new Uri ("/_rels/Whatever.rels", UriKind.Relative)));
-        }
-
-        [Test]
-        public void IsRelationshipPartUriTest2 ()
-        {
-            Uri uri = new Uri ("/test/uri", UriKind.Relative);
-            PackUriHelper.IsRelationshipPartUri (uri);
-        }
-
-        [Test]
-        [ExpectedException(typeof(UriFormatException))]
-        public void ResolvePartUri ()
-        {
-            Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
-            Uri dest = new Uri ("/MyFile", UriKind.Relative);
-
-            // Can't be empty url
-            Assert.AreEqual (new Uri (""), PackUriHelper.ResolvePartUri (src, dest), "#1");
-        }
-
-
-        [Test]
-        //[ExpectedException (typeof (UriFormatException))]
-        public void ResolvePartUri2 ()
-        {
-            Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
-            Uri dest = new Uri ("/1/2/MyFile", UriKind.Relative);
-
-            // Can't be empty url
-            Assert.AreEqual (new Uri ("/1/2/MyFile", UriKind.Relative), PackUriHelper.ResolvePartUri (src, dest), "#1");
-            Assert.AreEqual (new Uri ("/1/2/3/4", UriKind.Relative), PackUriHelper.ResolvePartUri (dest, src), "#1");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void ResolvePartUri3 ()
-        {
-            Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
-            Uri dest = new Uri ("http://www.example.com", UriKind.Absolute);
-            PackUriHelper.ResolvePartUri (src, dest);
-        }
-
-        [Test]
-        public void ResolvePartUri4 ()
-        {
-            Uri src = new Uri ("/", UriKind.Relative);
-            Uri dest = new Uri ("word/document.xml", UriKind.Relative);
-
-            Uri result = PackUriHelper.ResolvePartUri (src, dest);
-            Assert.IsFalse(result.IsAbsoluteUri, "#1");
-            Assert.AreEqual ("/word/document.xml", result.ToString(), "#2");
-
-            // See: http://msdn.microsoft.com/en-us/library/system.io.packaging.packurihelper.resolveparturi.aspx
-
-            src = new Uri ("/mydoc/markup/page.xml", UriKind.Relative);
-            dest = new Uri("picture.jpg", UriKind.Relative);
-            result = PackUriHelper.ResolvePartUri (src, dest);
-            Assert.AreEqual ("/mydoc/markup/picture.jpg", result.ToString(), "#3");
-
-            dest = new Uri("images/picture.jpg", UriKind.Relative);
-            result = PackUriHelper.ResolvePartUri (src, dest);
-            Assert.AreEqual ("/mydoc/markup/images/picture.jpg", result.ToString(), "#4");
-
-            dest = new Uri("./picture.jpg", UriKind.Relative);
-            result = PackUriHelper.ResolvePartUri (src, dest);
-            Assert.AreEqual ("/mydoc/markup/picture.jpg", result.ToString(), "#5");
-
-            dest = new Uri("../picture.jpg", UriKind.Relative);
-            result = PackUriHelper.ResolvePartUri (src, dest);
-            Assert.AreEqual ("/mydoc/picture.jpg", result.ToString(), "#6");
-
-            dest = new Uri("../images/picture.jpg", UriKind.Relative);
-            result = PackUriHelper.ResolvePartUri (src, dest);
-            Assert.AreEqual ("/mydoc/images/picture.jpg", result.ToString(), "#7");
-
-            src = new Uri ("/", UriKind.Relative);
-            dest = new Uri("images/picture.jpg", UriKind.Relative);
-            result = PackUriHelper.ResolvePartUri (src, dest);
-            Assert.AreEqual ("/images/picture.jpg", result.ToString(), "#8");
-        }
-    }
-}
+// PackUriHelperTests.cs created with MonoDevelop
+// User: alan at 13:39 28/10/2008
+//
+// To change standard headers go to Edit->Preferences->Coding->Standard Headers
+//
+
+using System;
+using System.IO.Packaging;
+using NUnit.Framework;
+
+namespace MonoTests.System.IO.Packaging {
+    
+    [TestFixture]
+    public class PackUriHelperTests {
+
+        Uri a {
+            get { return PackUriHelper.Create (new Uri ("http://www.test.com/pack1.pkg")); }
+        }
+        Uri b {
+            get { return  PackUriHelper.Create (new Uri ("http://www.test.com/pack2.pkg")); }
+        }
+
+        Uri part1 = new Uri ("/file1", UriKind.Relative);
+        Uri part2 = new Uri ("/file2", UriKind.Relative);
+        Uri main = new Uri ("/main.html", UriKind.Relative);
+
+        [Test]
+        public void ComparePackUriTest ()
+        {
+            Assert.AreEqual (0, PackUriHelper.ComparePackUri (null, null), "#1");
+            Assert.IsTrue (PackUriHelper.ComparePackUri (a, null) > 0, "#2");
+            Assert.AreEqual (0, PackUriHelper.ComparePackUri (a, a), "#3");
+            Assert.IsTrue (PackUriHelper.ComparePackUri (a, b) < 0, "#4");
+        }
+
+        [Test]
+        [Category("NotWorking")]
+        [ExpectedException(typeof(UriFormatException))]
+        public void CompareInvalidTest ()
+        {
+            Uri a = new Uri ("pack://url1");
+            PackUriHelper.ComparePackUri (a, a);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void NonPackUriCompareTest ()
+        {
+            PackUriHelper.ComparePackUri (new Uri ("http://wtest.com"), a);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void NonPackUriCompareRelativeTest ()
+        {
+            PackUriHelper.ComparePackUri (new Uri ("wtest.com", UriKind.Relative), a);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void InvalidPartUriCompareTest ()
+        {
+            PackUriHelper.ComparePartUri (a, b);
+        }
+
+        [Test]
+        public void PartUriCompareTest ()
+        {
+            Assert.AreEqual (0, PackUriHelper.ComparePartUri (null, null), "#1");
+            Assert.IsTrue (PackUriHelper.ComparePartUri (part1, null) > 0, "#2");
+            Assert.IsTrue (PackUriHelper.ComparePartUri (part1, part2) < 0, "#3");
+        }
+
+        [Test]
+        public void CreateTest ()
+        {
+            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/",
+                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg")).ToString (), "#1");
+            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/",
+                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), null, null).ToString (), "#2");
+            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/main.html#frag",
+                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"),
+                                                   new Uri ("/main.html", UriKind.Relative), "#frag").ToString (), "#3");
+            Assert.AreEqual ("pack://http:,,www.test.com,pack.pkg/main.html#frag",
+                             PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"),
+                                                   new Uri ("/main.html", UriKind.Relative), "#frag").ToString (), "#3");
+        }
+
+        [Test]
+        public void CreateTest2()
+        {
+                Uri uri = PackUriHelper.Create(new Uri("http://www.test.com/pack1.pkg"));
+                Assert.AreEqual("pack://pack:,,http:%2C%2Cwww.test.com%2Cpack1.pkg,/", PackUriHelper.Create(uri).ToString());
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void CreateInvalidTest ()
+        {
+            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "notfrag");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void CreateInvalidTest2 ()
+        {
+            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void CreateInvalidTest3 ()
+        {
+            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative), "");
+        }
+
+        [Test]
+        public void CreateInvalidTest4 ()
+        {
+            PackUriHelper.Create (new Uri ("http://www.test.com/pack.pkg"), new Uri ("/main.html", UriKind.Relative));
+        }
+
+        [Test]
+        public void CreatePartUri ()
+        {
+            Assert.IsFalse (PackUriHelper.CreatePartUri (part1).IsAbsoluteUri, "#1");
+            Assert.AreEqual (new Uri (part1.ToString (), UriKind.Relative), PackUriHelper.CreatePartUri (part1), "#2");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void CreatePartUri2 ()
+        {
+            PackUriHelper.CreatePartUri (null);
+        }
+
+        [Test]
+        public void GetNormalizedPartUriTest ()
+        {
+            Uri uri = new Uri ("/test.com".ToUpperInvariant (), UriKind.Relative);
+            Assert.IsTrue (uri == PackUriHelper.GetNormalizedPartUri (uri));
+        }
+        [Test]
+        public void GetNormalisedPartUritest4 ()
+        {
+            PackUriHelper.GetNormalizedPartUri (part1);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void GetNormalizedPartUriTest2 ()
+        {
+            PackUriHelper.GetNormalizedPartUri (null);
+        }
+
+        [Test]
+        [ExpectedException (typeof (UriFormatException))]
+        public void GetNormalizedPartUriTest3 ()
+        {
+            Assert.AreEqual (new Uri (a.ToString ().ToUpperInvariant (), UriKind.Relative), PackUriHelper.GetNormalizedPartUri (a));
+        }
+
+        [Test]
+        public void GetPackageUriTest ()
+        {
+            Assert.AreEqual (a, PackUriHelper.GetPackageUri (PackUriHelper.Create (a, new Uri ("/test.html", UriKind.Relative))));
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void GetPackageUri2 ()
+        {
+            PackUriHelper.GetPackageUri (null);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void GetPackageUri3 ()
+        {
+            PackUriHelper.GetPackageUri (part1);
+        }
+
+        [Test]
+        public void GetPartUriTest ()
+        {
+                var pack = PackUriHelper.Create(new Uri("http://www.test.com/pack1.pkg"));
+                var part = new Uri("/main.html", UriKind.Relative);
+                var pack_part = new Uri(@"pack://pack:,,http:%2C%2Cwww.test.com%2Cpack1.pkg,/main.html");
+
+                Assert.IsNull(PackUriHelper.GetPartUri(pack), "#1");
+                Assert.AreEqual(pack_part, PackUriHelper.Create(pack, part), "#2");
+                Assert.AreEqual(part, PackUriHelper.GetPartUri(PackUriHelper.Create(pack, part)), "#3");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void GetPartUriTest2 ()
+        {
+            PackUriHelper.GetPartUri (null);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void GetPartUriTest3 ()
+        {
+            PackUriHelper.GetPartUri (part1);
+        }
+
+        [Test]
+        public void GetRelationshipPartUriTest ()
+        {
+            Assert.AreEqual ("/_rels/file1.rels", PackUriHelper.GetRelationshipPartUri (part1).ToString());
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentNullException))]
+        public void GetRelationshipPartUriTest2 ()
+        {
+            PackUriHelper.GetRelationshipPartUri (null);
+        }
+
+        [Test]
+        public void GetRelativeUriTest ()
+        {
+            Uri src = new Uri ("/1/2/3/file.jpg", UriKind.Relative);
+            Uri dest = new Uri ("/file2.png", UriKind.Relative);
+            Assert.AreEqual (new Uri ("../../../file2.png", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#1");
+
+            dest = new Uri ("/1/2", UriKind.Relative);
+            Assert.AreEqual (new Uri ("../../2", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#2");
+
+            dest = new Uri ("/1/2/", UriKind.Relative);
+            Assert.AreEqual (new Uri ("", UriKind.Relative), PackUriHelper.GetRelativeUri (src, src), "#4");
+
+            // See: http://msdn.microsoft.com/en-us/library/system.io.packaging.packurihelper.getrelativeuri.aspx
+
+            src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
+            dest = new Uri("/mydoc/markup/picture.jpg", UriKind.Relative);
+            Assert.AreEqual (new Uri ("picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#5");
+
+            src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
+            dest = new Uri("/mydoc/picture.jpg", UriKind.Relative);
+            Assert.AreEqual (new Uri ("../picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#6");
+
+            src = new Uri("/mydoc/markup/page.xml", UriKind.Relative);
+            dest = new Uri("/mydoc/images/picture.jpg", UriKind.Relative);
+            Assert.AreEqual (new Uri ("../images/picture.jpg", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#7");
+
+        }
+
+        [Test]
+        [ExpectedException (typeof(ArgumentException))]
+        public void GetRelativeUriTest2 ()
+        {
+            Uri src = new Uri ("/1/2/3/file.jpg", UriKind.Relative);
+            Uri dest = new Uri ("/1/2/", UriKind.Relative);
+            Assert.AreEqual (new Uri ("../file2.png", UriKind.Relative), PackUriHelper.GetRelativeUri (src, dest), "#3");
+        }
+
+        [Test]
+        public void IsRelationshipPartUriTest ()
+        {
+            Assert.IsFalse (PackUriHelper.IsRelationshipPartUri (new Uri ("/_rels/Whatever", UriKind.Relative)));
+            Assert.IsTrue (PackUriHelper.IsRelationshipPartUri (new Uri ("/_rels/Whatever.rels", UriKind.Relative)));
+        }
+
+        [Test]
+        public void IsRelationshipPartUriTest2 ()
+        {
+            Uri uri = new Uri ("/test/uri", UriKind.Relative);
+            PackUriHelper.IsRelationshipPartUri (uri);
+        }
+
+        [Test]
+        [ExpectedException(typeof(UriFormatException))]
+        public void ResolvePartUri ()
+        {
+            Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
+            Uri dest = new Uri ("/MyFile", UriKind.Relative);
+
+            // Can't be empty url
+            Assert.AreEqual (new Uri (""), PackUriHelper.ResolvePartUri (src, dest), "#1");
+        }
+
+
+        [Test]
+        //[ExpectedException (typeof (UriFormatException))]
+        public void ResolvePartUri2 ()
+        {
+            Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
+            Uri dest = new Uri ("/1/2/MyFile", UriKind.Relative);
+
+            // Can't be empty url
+            Assert.AreEqual (new Uri ("/1/2/MyFile", UriKind.Relative), PackUriHelper.ResolvePartUri (src, dest), "#1");
+            Assert.AreEqual (new Uri ("/1/2/3/4", UriKind.Relative), PackUriHelper.ResolvePartUri (dest, src), "#1");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void ResolvePartUri3 ()
+        {
+            Uri src = new Uri ("/1/2/3/4", UriKind.Relative);
+            Uri dest = new Uri ("http://www.example.com", UriKind.Absolute);
+            PackUriHelper.ResolvePartUri (src, dest);
+        }
+
+        [Test]
+        public void ResolvePartUri4 ()
+        {
+            Uri src = new Uri ("/", UriKind.Relative);
+            Uri dest = new Uri ("word/document.xml", UriKind.Relative);
+
+            Uri result = PackUriHelper.ResolvePartUri (src, dest);
+            Assert.IsFalse(result.IsAbsoluteUri, "#1");
+            Assert.AreEqual ("/word/document.xml", result.ToString(), "#2");
+
+            // See: http://msdn.microsoft.com/en-us/library/system.io.packaging.packurihelper.resolveparturi.aspx
+
+            src = new Uri ("/mydoc/markup/page.xml", UriKind.Relative);
+            dest = new Uri("picture.jpg", UriKind.Relative);
+            result = PackUriHelper.ResolvePartUri (src, dest);
+            Assert.AreEqual ("/mydoc/markup/picture.jpg", result.ToString(), "#3");
+
+            dest = new Uri("images/picture.jpg", UriKind.Relative);
+            result = PackUriHelper.ResolvePartUri (src, dest);
+            Assert.AreEqual ("/mydoc/markup/images/picture.jpg", result.ToString(), "#4");
+
+            dest = new Uri("./picture.jpg", UriKind.Relative);
+            result = PackUriHelper.ResolvePartUri (src, dest);
+            Assert.AreEqual ("/mydoc/markup/picture.jpg", result.ToString(), "#5");
+
+            dest = new Uri("../picture.jpg", UriKind.Relative);
+            result = PackUriHelper.ResolvePartUri (src, dest);
+            Assert.AreEqual ("/mydoc/picture.jpg", result.ToString(), "#6");
+
+            dest = new Uri("../images/picture.jpg", UriKind.Relative);
+            result = PackUriHelper.ResolvePartUri (src, dest);
+            Assert.AreEqual ("/mydoc/images/picture.jpg", result.ToString(), "#7");
+
+            src = new Uri ("/", UriKind.Relative);
+            dest = new Uri("images/picture.jpg", UriKind.Relative);
+            result = PackUriHelper.ResolvePartUri (src, dest);
+            Assert.AreEqual ("/images/picture.jpg", result.ToString(), "#8");
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartStreamTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartStreamTests.cs
@@ -1,195 +1,195 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-// Alan McGovern (amcgovern@novell.com)
-//
-
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.IO.Packaging;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-
-namespace MonoTests.System.IO.Packaging {
-    
-    [TestFixture]
-    public class PackagePartStreamTests : TestBase {
-
-        byte [] buffer;
-        List<PackagePart> Parts = new List<PackagePart> ();
-        static void Main (string [] args)
-        {
-            PackagePartStreamTests t = new PackagePartStreamTests ();
-            t.FixtureSetup ();
-            t.Setup ();
-            t.CheckFlushTest ();
-        }
-
-        public override void FixtureSetup ()
-        {
-            base.FixtureSetup ();
-
-            Random r = new Random ();
-            buffer = new byte [1000];
-            r.NextBytes (buffer);
-        }
-
-        public override void Setup ()
-        {
-            base.Setup ();
-
-            Parts.Clear ();
-            foreach (Uri u in uris)
-                Parts.Add (package.CreatePart (u, "mime/type"));
-        }
-
-        [Test]
-        public void SameStreamTest ()
-        {
-            Assert.AreEqual (0, stream.Length, "#a");
-            package.Flush ();
-            Assert.IsTrue (stream.Length > 0, "#b");
-
-            Stream s1 = Parts [0].GetStream ();
-            Stream s2 = Parts [0].GetStream ();
-            Assert.IsFalse (s1 == s2, "#1");
-            s1.WriteByte (5);
-            Assert.AreEqual (1, s1.Position, "#2");
-            Assert.AreEqual (0, s2.Position, "#3");
-            Assert.AreEqual (s1.Length, s2.Length, "#4");
-            Assert.AreEqual (5, s2.ReadByte (), "#5");
-            s2.SetLength (0);
-            Assert.AreEqual (0, s1.Length);
-        }
-
-        [Test]
-        public void NoFlushTest ()
-        {
-            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
-            Assert.AreEqual (0, stream.Length);
-        }
-
-        [Test]
-        public void FlushIndividualTest ()
-        {
-            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
-            Parts [0].GetStream ().Flush ();
-            Assert.AreEqual (buffer.Length, Parts [0].GetStream ().Length, "#1");
-            Assert.IsTrue (stream.Length > buffer.Length, "#2");
-        }
-
-        [Test]
-        [Category ("NotWorking")]
-        [Ignore ("This test only works on MS.NET. Behaviour probably not easily replicatable")]
-        public void FlushPackageTest1 ()
-        {
-            FlushIndividualTest ();
-
-            long count = stream.Length;
-            package.Flush ();
-            Assert.IsTrue (stream.Length > count, "#1");
-        }
-
-        [Test]
-        [Category ("NotWorking")]
-        [Ignore ("This test is useless i believe")]
-        public void FlushOnlyPackage ()
-        {
-            NoFlushTest ();
-            package.Flush ();
-            long count = stream.Length;
-            TearDown ();
-            Setup ();
-           // FlushPackageTest1 ();
-            Assert.AreEqual (count, stream.Length, "#1");
-        }
-
-        [Test]
-        public void GetMultipleStreams ()
-        {
-            foreach (PackagePart p in Parts) {
-                p.GetStream ().Write (buffer, 0, buffer.Length);
-                p.GetStream ().Flush ();
-                Stream ssss = p.GetStream ();
-                bool equal = p.GetStream () == p.GetStream ();
-                stream.Flush ();
-            }
-            long position = stream.Length;
-        }
-
-        [Test]
-        public void FlushThenTruncate ()
-        {
-            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
-            package.Flush ();
-            Assert.IsTrue (stream.Length > buffer.Length, "#1");
-            
-            Parts [0].GetStream ().SetLength (0);
-            package.Flush ();
-            Assert.IsTrue (stream.Length < buffer.Length, "#2");
-
-            long length = stream.Length;
-            foreach (PackagePart p in package.GetParts ().ToArray ())
-                package.DeletePart (p.Uri);
-            package.Flush ();
-
-            Assert.IsTrue (stream.Length < length, "#3");
-        }
-
-        [Test]
-//        [Category ("NotWorking")]
-        public void CheckFlushTest ()
-        {
-            buffer = new byte [1024 * 1024];
-            Assert.AreEqual (0, stream.Length, "#1");
-            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
-            Assert.AreEqual (0, stream.Length, "#2");
-            Assert.AreEqual (Parts[0].GetStream ().Length, buffer.Length, "#2b");
-            Parts [1].GetStream ().Write (buffer, 0, buffer.Length);
-            Assert.AreEqual (0, stream.Length, "#3");
-            Assert.AreEqual (Parts[1].GetStream ().Length, buffer.Length, "#3b");
-            Parts [0].GetStream ().Flush ();
-            Assert.IsTrue (stream.Length > buffer.Length * 2, "#4");
-            long count = stream.Length;
-            package.Flush ();
-
-            // FIXME: On MS.NET this works. I don't think it's worth replicating
-            //Assert.IsTrue (count < stream.Length, "#5");
-        }
-
-        [Test]
-        public void CheckFlushTest2 ()
-        {
-            buffer = new byte [1024 * 1024];
-            Assert.AreEqual (0, stream.Length, "#1");
-            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
-            Assert.AreEqual (0, stream.Length, "#2");
-            Parts [1].GetStream ().Write (buffer, 0, buffer.Length);
-            Assert.AreEqual (0, stream.Length, "#3");
-            package.Flush ();
-            Assert.IsTrue (stream.Length > buffer.Length * 2, "#4");
-        }
-    }
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+// Alan McGovern (amcgovern@novell.com)
+//
+
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Packaging;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+namespace MonoTests.System.IO.Packaging {
+    
+    [TestFixture]
+    public class PackagePartStreamTests : TestBase {
+
+        byte [] buffer;
+        List<PackagePart> Parts = new List<PackagePart> ();
+        static void Main (string [] args)
+        {
+            PackagePartStreamTests t = new PackagePartStreamTests ();
+            t.FixtureSetup ();
+            t.Setup ();
+            t.CheckFlushTest ();
+        }
+
+        public override void FixtureSetup ()
+        {
+            base.FixtureSetup ();
+
+            Random r = new Random ();
+            buffer = new byte [1000];
+            r.NextBytes (buffer);
+        }
+
+        public override void Setup ()
+        {
+            base.Setup ();
+
+            Parts.Clear ();
+            foreach (Uri u in uris)
+                Parts.Add (package.CreatePart (u, "mime/type"));
+        }
+
+        [Test]
+        public void SameStreamTest ()
+        {
+            Assert.AreEqual (0, stream.Length, "#a");
+            package.Flush ();
+            Assert.IsTrue (stream.Length > 0, "#b");
+
+            Stream s1 = Parts [0].GetStream ();
+            Stream s2 = Parts [0].GetStream ();
+            Assert.IsFalse (s1 == s2, "#1");
+            s1.WriteByte (5);
+            Assert.AreEqual (1, s1.Position, "#2");
+            Assert.AreEqual (0, s2.Position, "#3");
+            Assert.AreEqual (s1.Length, s2.Length, "#4");
+            Assert.AreEqual (5, s2.ReadByte (), "#5");
+            s2.SetLength (0);
+            Assert.AreEqual (0, s1.Length);
+        }
+
+        [Test]
+        public void NoFlushTest ()
+        {
+            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
+            Assert.AreEqual (0, stream.Length);
+        }
+
+        [Test]
+        public void FlushIndividualTest ()
+        {
+            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
+            Parts [0].GetStream ().Flush ();
+            Assert.AreEqual (buffer.Length, Parts [0].GetStream ().Length, "#1");
+            Assert.IsTrue (stream.Length > buffer.Length, "#2");
+        }
+
+        [Test]
+        [Category ("NotWorking")]
+        [Ignore ("This test only works on MS.NET. Behaviour probably not easily replicatable")]
+        public void FlushPackageTest1 ()
+        {
+            FlushIndividualTest ();
+
+            long count = stream.Length;
+            package.Flush ();
+            Assert.IsTrue (stream.Length > count, "#1");
+        }
+
+        [Test]
+        [Category ("NotWorking")]
+        [Ignore ("This test is useless i believe")]
+        public void FlushOnlyPackage ()
+        {
+            NoFlushTest ();
+            package.Flush ();
+            long count = stream.Length;
+            TearDown ();
+            Setup ();
+           // FlushPackageTest1 ();
+            Assert.AreEqual (count, stream.Length, "#1");
+        }
+
+        [Test]
+        public void GetMultipleStreams ()
+        {
+            foreach (PackagePart p in Parts) {
+                p.GetStream ().Write (buffer, 0, buffer.Length);
+                p.GetStream ().Flush ();
+                Stream ssss = p.GetStream ();
+                bool equal = p.GetStream () == p.GetStream ();
+                stream.Flush ();
+            }
+            long position = stream.Length;
+        }
+
+        [Test]
+        public void FlushThenTruncate ()
+        {
+            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
+            package.Flush ();
+            Assert.IsTrue (stream.Length > buffer.Length, "#1");
+            
+            Parts [0].GetStream ().SetLength (0);
+            package.Flush ();
+            Assert.IsTrue (stream.Length < buffer.Length, "#2");
+
+            long length = stream.Length;
+            foreach (PackagePart p in package.GetParts ().ToArray ())
+                package.DeletePart (p.Uri);
+            package.Flush ();
+
+            Assert.IsTrue (stream.Length < length, "#3");
+        }
+
+        [Test]
+//        [Category ("NotWorking")]
+        public void CheckFlushTest ()
+        {
+            buffer = new byte [1024 * 1024];
+            Assert.AreEqual (0, stream.Length, "#1");
+            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
+            Assert.AreEqual (0, stream.Length, "#2");
+            Assert.AreEqual (Parts[0].GetStream ().Length, buffer.Length, "#2b");
+            Parts [1].GetStream ().Write (buffer, 0, buffer.Length);
+            Assert.AreEqual (0, stream.Length, "#3");
+            Assert.AreEqual (Parts[1].GetStream ().Length, buffer.Length, "#3b");
+            Parts [0].GetStream ().Flush ();
+            Assert.IsTrue (stream.Length > buffer.Length * 2, "#4");
+            long count = stream.Length;
+            package.Flush ();
+
+            // FIXME: On MS.NET this works. I don't think it's worth replicating
+            //Assert.IsTrue (count < stream.Length, "#5");
+        }
+
+        [Test]
+        public void CheckFlushTest2 ()
+        {
+            buffer = new byte [1024 * 1024];
+            Assert.AreEqual (0, stream.Length, "#1");
+            Parts [0].GetStream ().Write (buffer, 0, buffer.Length);
+            Assert.AreEqual (0, stream.Length, "#2");
+            Parts [1].GetStream ().Write (buffer, 0, buffer.Length);
+            Assert.AreEqual (0, stream.Length, "#3");
+            package.Flush ();
+            Assert.IsTrue (stream.Length > buffer.Length * 2, "#4");
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/PackagePartTest.cs
@@ -1,387 +1,387 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//    Alan McGovern (amcgovern@novell.com)
-//
-
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.IO.Packaging;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using System.Xml;
-
-namespace MonoTests.System.IO.Packaging {
-
-    [TestFixture]
-    public class PackagePartTest : TestBase {
-
-        const string PackagePropertiesType = "application/vnd.openxmlformats-package.core-properties+xml";
-        
-        //static void Main (string [] args)
-        //{
-        //    PackagePartTest t = new PackagePartTest ();
-        //    t.FixtureSetup ();
-        //    t.Setup ();
-
-        //    t.AddThreeParts ();
-        //}
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void AddAbsoluteUri ()
-        {
-            package.CreatePart (new Uri ("file://lo/asd.asm", UriKind.Absolute), "aa/aa");
-        }
-
-        [Test]
-        [Category ("NotWorking")]
-        [Ignore ("This is a bug in the MS implementation. I don't think i can/should replicate it")]
-        public void AddInvalidPartTwice ()
-        {
-            try {
-                package.CreatePart (new Uri ("/file1.bmp", UriKind.Relative), "bmp");
-            } catch (ArgumentException) {
-                try {
-                    package.CreatePart (new Uri ("/file1.bmp", UriKind.Relative), "bmp");
-                } catch (InvalidOperationException) {
-                    Assert.AreEqual (1, package.GetParts ().Count (), "Need to be buggy and return null");
-                    Assert.AreEqual (null, package.GetParts ().ToArray () [0], "Be buggy and add null to the internal list");
-
-                    return; // Success
-                }
-            }
-
-            Assert.Fail ("Should have thrown an ArgumentException then InvalidOperationException");
-        }
-
-        [Test]
-        public void AddThreeParts ()
-        {
-            foreach (Uri u in uris)
-                package.CreatePart (u, "mime/type");
-
-            Assert.AreEqual (3, package.GetParts ().Count (), "Should be three parts");
-            PackagePartCollection c1 = package.GetParts ();
-            package.CreatePart (new Uri ("/asdasdas", UriKind.Relative), "asa/s");
-            PackagePartCollection c2 = package.GetParts ();
-            bool eq = c1 == c2;
- 
-            Assert.IsNotNull (package.GetPart (new Uri (uris[0].ToString ().ToUpper (), UriKind.Relative)));
-        }
-
-        [Test]
-        public void CheckPartProperties ()
-        {
-            package.CreatePart (new Uri ("/first", UriKind.Relative), "my/a");
-            package.CreatePart (new Uri ("/second", UriKind.Relative), "my/b", CompressionOption.Maximum);
-            package.CreatePart (new Uri ("/third", UriKind.Relative), "test/c", CompressionOption.SuperFast);
-            package.Close ();
-            package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.Read);
-
-            PackagePart[] parts = package.GetParts ().ToArray ();
-            Assert.AreEqual (3, parts.Length);
-
-            PackagePart part = parts[0];
-            Assert.AreEqual (CompressionOption.NotCompressed, part.CompressionOption, "Compress option wrong1");
-            Assert.AreEqual ("my/a", part.ContentType, "Content type wrong1");
-            Assert.AreEqual (package, part.Package, "Wrong package1");
-            Assert.AreEqual ("/first", part.Uri.ToString (), "Wrong package selected1");
-
-            part = parts[1];
-            Assert.AreEqual (CompressionOption.Maximum, part.CompressionOption, "Compress option wrong2");
-            Assert.AreEqual ("my/b", part.ContentType, "Content type wrong2");
-            Assert.AreEqual (package, part.Package, "Wrong package2");
-            Assert.AreEqual ("/second", part.Uri.OriginalString, "Wrong package selected2");
-
-            part = parts[2];
-            Assert.AreEqual (CompressionOption.SuperFast, part.CompressionOption, "Compress option wrong3");
-            Assert.AreEqual ("test/c", part.ContentType, "Content type wrong3");
-            Assert.AreEqual (package, part.Package, "Wrong package3");
-            Assert.AreEqual ("/third", part.Uri.ToString (), "Wrong package selected3");
-        }
-		
-		[Test]
-		public void SameExtensionDifferentContentTypeTest ()
-		{
-			// FIXME: Ideally we should be opening the zip and checking
-			// exactly what was written to verify it's correct
-			using (var stream = new MemoryStream ()) {
-				var package = Package.Open (stream, FileMode.OpenOrCreate);
-				package.CreatePart (uris [0], contentType + "1");
-				package.CreatePart (uris [1], contentType + "2");
-				package.CreatePart (uris [2], contentType + "2");
-				package.Close ();
-				
-				package = Package.Open (new MemoryStream (stream.ToArray ()));
-				Assert.AreEqual (contentType + "1", package.GetPart (uris [0]).ContentType, "#1");
-				Assert.AreEqual (contentType + "2", package.GetPart (uris [1]).ContentType, "#2");
-				Assert.AreEqual (contentType + "2", package.GetPart (uris [2]).ContentType, "#3");
-			}
-		}
-		
-		[Test]
-		public void SameExtensionSameContentTypeTest ()
-		{
-			// FIXME: Ideally we should be opening the zip and checking
-			// exactly what was written to verify it's correct
-			using (var stream = new MemoryStream ()) {
-				var package = Package.Open (stream, FileMode.OpenOrCreate);
-				package.CreatePart (uris [0], contentType);
-				package.CreatePart (uris [1], contentType);
-				package.CreatePart (uris [2], contentType);
-				package.Close ();
-				
-				package = Package.Open (new MemoryStream (stream.ToArray ()));
-				Assert.AreEqual (contentType, package.GetPart (uris [0]).ContentType, "#1");
-				Assert.AreEqual (contentType, package.GetPart (uris [1]).ContentType, "#2");
-				Assert.AreEqual (contentType, package.GetPart (uris [2]).ContentType, "#3");
-			}
-		}
-		
-        [Test]
-        public void CheckPartRelationships ()
-        {
-            AddThreeParts ();
-            Assert.AreEqual (4, package.GetParts ().Count (), "#a");
-            PackagePart part = package.GetPart (uris [0]);
-            PackageRelationship r1 = part.CreateRelationship (part.Uri, TargetMode.Internal, "self");
-            PackageRelationship r2 = package.CreateRelationship (part.Uri, TargetMode.Internal, "fake");
-            PackageRelationship r3 = package.CreateRelationship (new Uri ("/fake/uri", UriKind.Relative), TargetMode.Internal, "self");
-
-            Assert.AreEqual (6, package.GetParts ().Count (), "#b");
-            Assert.AreEqual (1, part.GetRelationships ().Count (), "#1");
-            Assert.AreEqual (1, part.GetRelationshipsByType ("self").Count (), "#2");
-            Assert.AreEqual (r1, part.GetRelationship (r1.Id), "#3");
-            Assert.AreEqual (2, package.GetRelationships ().Count (), "#4");
-            Assert.AreEqual (1, package.GetRelationshipsByType ("self").Count (), "#5");
-            Assert.AreEqual (r3, package.GetRelationship (r3.Id), "#6");
-
-            Assert.AreEqual (6, package.GetParts ().Count (), "#c");
-            Assert.AreEqual (part.Uri, r1.SourceUri, "#7");
-            Assert.AreEqual (new Uri ("/", UriKind.Relative), r3.SourceUri, "#8");
-
-            PackageRelationship r4 = part.CreateRelationship (uris [2], TargetMode.Internal, "other");
-            Assert.AreEqual (part.Uri, r4.SourceUri);
-
-            PackageRelationshipCollection relations = package.GetPart (uris [2]).GetRelationships ();
-            Assert.AreEqual (0, relations.Count ());
-            Assert.AreEqual (6, package.GetParts ().Count (), "#d");
-        }
-
-        [Test]
-        public void CheckIndividualRelationships ()
-        {
-            PackagePart part = package.CreatePart (uris [0], contentType);
-            part.CreateRelationship (uris [1], TargetMode.Internal, "relType");
-            part.CreateRelationship (uris [2], TargetMode.External, "relType");
-
-            package.Flush ();
-            Assert.AreEqual (2, package.GetParts ().Count(), "#1");
-            part = package.GetPart (new Uri ("/_rels" + uris [0].ToString () + ".rels", UriKind.Relative));
-            Assert.IsNotNull (part);
-        }
-
-        [Test]
-        [ExpectedException (typeof (InvalidOperationException))]
-        public void DeletePartsAfterAddingRelationships ()
-        {
-            CheckPartRelationships ();
-            foreach (PackagePart p in new List<PackagePart> (package.GetParts ()))
-                package.DeletePart (p.Uri);
-        }
-
-        [Test]
-        [ExpectedException (typeof (InvalidOperationException))]
-        public void DeleteRelsThenParts ()
-        {
-            CheckPartRelationships ();
-            foreach (PackageRelationship r in new List<PackageRelationship> (package.GetRelationships ()))
-                package.DeleteRelationship (r.Id);
-            foreach (PackagePart p in new List<PackagePart> (package.GetParts ()))
-                package.DeletePart (p.Uri);
-        }
-
-        [Test]
-        public void CreateValidPart ()
-        {
-            PackagePart part = package.CreatePart (uris [0], "img/bmp");
-        }
-
-        [Test]
-        [ExpectedException (typeof (InvalidOperationException))]
-        public void CreateDuplicatePart ()
-        {
-            CreateValidPart ();
-            CreateValidPart ();
-        }
-
-        [Test]
-        public void CreateValidPartTwice ()
-        {
-            CreateValidPart ();
-            package.DeletePart (uris [0]);
-            CreateValidPart ();
-
-            Assert.AreEqual (1, package.GetParts ().Count (), "#1");
-            Assert.AreEqual (uris [0], package.GetParts ().ToArray () [0].Uri, "#2");
-            package.DeletePart (uris [0]);
-            package.DeletePart (uris [0]);
-            package.DeletePart (uris [0]);
-        }
-
-        [Test]
-        public void IterateParts ()
-        {
-            List<PackagePart> parts = new List<PackagePart> ();
-            parts.Add (package.CreatePart (new Uri ("/a", UriKind.Relative), "mime/type"));
-            parts.Add (package.CreatePart (new Uri ("/b", UriKind.Relative), "mime/type"));
-            List<PackagePart> found = new List<PackagePart> (package.GetParts ());
-            Assert.AreEqual (parts.Count, found.Count, "Invalid number of parts");
-            Assert.IsTrue (found.Contains (parts [0]), "Doesn't contain first part");
-            Assert.IsTrue (found.Contains (parts [1]), "Doesn't contain second part");
-
-            Assert.IsTrue (found [0] == parts [0] || found [0] == parts [1], "Same object reference should be used");
-            Assert.IsTrue (found [1] == parts [0] || found [1] == parts [1], "Same object reference should be used");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void NoStartingSlashPartialUri ()
-        {
-            PackagePart part = package.CreatePart (new Uri ("file1.bmp", UriKind.Relative), "bmp");
-        }
-
-        [Test]
-        public void PackagePropertiesTest ()
-        {
-            package.PackageProperties.Category = "category";
-            package.PackageProperties.ContentStatus = "status";
-            package.PackageProperties.ContentType = "contentttype";
-            package.PackageProperties.Created = new DateTime (2008, 12, 12, 2, 3, 4);
-            package.PackageProperties.Creator = "mono";
-            package.PackageProperties.Description = "description";
-            package.PackageProperties.Identifier = "id";
-            package.PackageProperties.Keywords = "key words";
-            package.PackageProperties.Language = "english";
-            package.PackageProperties.LastModifiedBy = "modified";
-            package.PackageProperties.LastPrinted = new DateTime (2007, 12, 12, 2, 3, 4);
-            package.PackageProperties.Modified = new DateTime (2008, 12, 12, 3, 4, 5);
-            package.PackageProperties.Revision = "reviison";
-            package.PackageProperties.Subject = "subject";
-            package.PackageProperties.Title = "title";
-            package.PackageProperties.Version = "version";
-            Assert.AreEqual (0, package.GetParts ().Count (), "#1");
-            package.Flush ();
-            Assert.AreEqual (2, package.GetParts ().Count (), "#2");
-            var part = package.GetParts ().Where (p => p.ContentType == PackagePropertiesType).ToList ().First ();
-            Assert.IsNotNull (part);
-            Assert.IsTrue (part.Uri.OriginalString.StartsWith ("/package/services/metadata/core-properties/"), "#3");
-            Assert.IsTrue (part.Uri.OriginalString.EndsWith (".psmdcp"), "#4");
-            package.Close ();
-            package = Package.Open (new MemoryStream (stream.ToArray ()));
-
-            Assert.AreEqual (package.PackageProperties.Category, "category", "#5");
-            Assert.AreEqual (package.PackageProperties.ContentStatus, "status", "#6");
-            Assert.AreEqual (package.PackageProperties.ContentType, "contentttype", "#7");
-            Assert.AreEqual (package.PackageProperties.Created, new DateTime (2008, 12, 12, 2, 3, 4), "#8");
-            Assert.AreEqual (package.PackageProperties.Creator, "mono", "#9");
-            Assert.AreEqual (package.PackageProperties.Description, "description", "#10");
-            Assert.AreEqual (package.PackageProperties.Identifier, "id", "#11");
-            Assert.AreEqual (package.PackageProperties.Keywords, "key words", "#12");
-            Assert.AreEqual (package.PackageProperties.Language, "english", "#13");
-            Assert.AreEqual (package.PackageProperties.LastModifiedBy, "modified", "#14");
-            Assert.AreEqual (package.PackageProperties.LastPrinted, new DateTime (2007, 12, 12, 2, 3, 4), "#15");
-            Assert.AreEqual (package.PackageProperties.Modified, new DateTime (2008, 12, 12, 3, 4, 5), "#16");
-            Assert.AreEqual (package.PackageProperties.Revision, "reviison", "#17");
-            Assert.AreEqual (package.PackageProperties.Subject, "subject", "#18");
-            Assert.AreEqual (package.PackageProperties.Title, "title", "#19");
-            Assert.AreEqual (package.PackageProperties.Version, "version", "#20");
-        }
-
-        [Test]
-        public void PackagePropertiestest2 ()
-        {
-            package.PackageProperties.Title = "TITLE";
-            package.Close ();
-            package = Package.Open (new MemoryStream (stream.ToArray ()));
-            Assert.AreEqual (null, package.PackageProperties.Category, "#1");
-        }
-        
-        [Test]
-        [ExpectedException (typeof (IOException))]
-        public void PackagePropertiesReadonly ()
-        {
-            PackagePropertiesTest ();
-            package.PackageProperties.Title = "Title";
-        }
-        
-        [Test]
-        public void PartExists ()
-        {
-            CreateValidPart ();
-            Assert.IsNotNull (package.GetPart (uris [0]), "Part could not be found");
-            Assert.IsTrue (package.PartExists (uris [0]), "Part didn't exist");
-            Assert.AreEqual (1, package.GetParts ().Count (), "Only one part");
-        }
-
-        [Test]
-        public void RemoveThreeParts ()
-        {
-            AddThreeParts ();
-            foreach (PackagePart p in new List<PackagePart> (package.GetParts ()))
-                package.DeletePart (p.Uri);
-            Assert.AreEqual (0, package.GetParts ().Count (), "Should contain no parts");
-        }
-
-        [Test]
-        [ExpectedException (typeof (InvalidOperationException))]
-        public void RemoveThreePartsBreak ()
-        {
-            AddThreeParts ();
-            foreach (PackagePart p in package.GetParts ())
-                package.DeletePart (p.Uri);
-        }
-
-        [Test]
-        public void CheckContentTypes ()
-        {
-	        Assert.IsFalse (package.PartExists(new Uri ("[Content_Types].xml", UriKind.Relative)));
-        }
-
-        [Test]
-        public void CheckCanGetRelationshipsIfReadOnly ()
-        {
-            using (var stream = new MemoryStream ()) {
-                var package = Package.Open (stream, FileMode.OpenOrCreate);
-                var part = package.CreatePart (uris [0], contentType);
-                part.CreateRelationship (part.Uri, TargetMode.Internal, "self");
-                package.Close ();
-                package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.Read);
-                part = package.GetPart (uris [0]);
-                part.GetRelationships ();
-            }
-        }
-    }
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//    Alan McGovern (amcgovern@novell.com)
+//
+
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Packaging;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using System.Xml;
+
+namespace MonoTests.System.IO.Packaging {
+
+    [TestFixture]
+    public class PackagePartTest : TestBase {
+
+        const string PackagePropertiesType = "application/vnd.openxmlformats-package.core-properties+xml";
+        
+        //static void Main (string [] args)
+        //{
+        //    PackagePartTest t = new PackagePartTest ();
+        //    t.FixtureSetup ();
+        //    t.Setup ();
+
+        //    t.AddThreeParts ();
+        //}
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void AddAbsoluteUri ()
+        {
+            package.CreatePart (new Uri ("file://lo/asd.asm", UriKind.Absolute), "aa/aa");
+        }
+
+        [Test]
+        [Category ("NotWorking")]
+        [Ignore ("This is a bug in the MS implementation. I don't think i can/should replicate it")]
+        public void AddInvalidPartTwice ()
+        {
+            try {
+                package.CreatePart (new Uri ("/file1.bmp", UriKind.Relative), "bmp");
+            } catch (ArgumentException) {
+                try {
+                    package.CreatePart (new Uri ("/file1.bmp", UriKind.Relative), "bmp");
+                } catch (InvalidOperationException) {
+                    Assert.AreEqual (1, package.GetParts ().Count (), "Need to be buggy and return null");
+                    Assert.AreEqual (null, package.GetParts ().ToArray () [0], "Be buggy and add null to the internal list");
+
+                    return; // Success
+                }
+            }
+
+            Assert.Fail ("Should have thrown an ArgumentException then InvalidOperationException");
+        }
+
+        [Test]
+        public void AddThreeParts ()
+        {
+            foreach (Uri u in uris)
+                package.CreatePart (u, "mime/type");
+
+            Assert.AreEqual (3, package.GetParts ().Count (), "Should be three parts");
+            PackagePartCollection c1 = package.GetParts ();
+            package.CreatePart (new Uri ("/asdasdas", UriKind.Relative), "asa/s");
+            PackagePartCollection c2 = package.GetParts ();
+            bool eq = c1 == c2;
+ 
+            Assert.IsNotNull (package.GetPart (new Uri (uris[0].ToString ().ToUpper (), UriKind.Relative)));
+        }
+
+        [Test]
+        public void CheckPartProperties ()
+        {
+            package.CreatePart (new Uri ("/first", UriKind.Relative), "my/a");
+            package.CreatePart (new Uri ("/second", UriKind.Relative), "my/b", CompressionOption.Maximum);
+            package.CreatePart (new Uri ("/third", UriKind.Relative), "test/c", CompressionOption.SuperFast);
+            package.Close ();
+            package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.Read);
+
+            PackagePart[] parts = package.GetParts ().ToArray ();
+            Assert.AreEqual (3, parts.Length);
+
+            PackagePart part = parts[0];
+            Assert.AreEqual (CompressionOption.NotCompressed, part.CompressionOption, "Compress option wrong1");
+            Assert.AreEqual ("my/a", part.ContentType, "Content type wrong1");
+            Assert.AreEqual (package, part.Package, "Wrong package1");
+            Assert.AreEqual ("/first", part.Uri.ToString (), "Wrong package selected1");
+
+            part = parts[1];
+            Assert.AreEqual (CompressionOption.Maximum, part.CompressionOption, "Compress option wrong2");
+            Assert.AreEqual ("my/b", part.ContentType, "Content type wrong2");
+            Assert.AreEqual (package, part.Package, "Wrong package2");
+            Assert.AreEqual ("/second", part.Uri.OriginalString, "Wrong package selected2");
+
+            part = parts[2];
+            Assert.AreEqual (CompressionOption.SuperFast, part.CompressionOption, "Compress option wrong3");
+            Assert.AreEqual ("test/c", part.ContentType, "Content type wrong3");
+            Assert.AreEqual (package, part.Package, "Wrong package3");
+            Assert.AreEqual ("/third", part.Uri.ToString (), "Wrong package selected3");
+        }
+		
+		[Test]
+		public void SameExtensionDifferentContentTypeTest ()
+		{
+			// FIXME: Ideally we should be opening the zip and checking
+			// exactly what was written to verify it's correct
+			using (var stream = new MemoryStream ()) {
+				var package = Package.Open (stream, FileMode.OpenOrCreate);
+				package.CreatePart (uris [0], contentType + "1");
+				package.CreatePart (uris [1], contentType + "2");
+				package.CreatePart (uris [2], contentType + "2");
+				package.Close ();
+				
+				package = Package.Open (new MemoryStream (stream.ToArray ()));
+				Assert.AreEqual (contentType + "1", package.GetPart (uris [0]).ContentType, "#1");
+				Assert.AreEqual (contentType + "2", package.GetPart (uris [1]).ContentType, "#2");
+				Assert.AreEqual (contentType + "2", package.GetPart (uris [2]).ContentType, "#3");
+			}
+		}
+		
+		[Test]
+		public void SameExtensionSameContentTypeTest ()
+		{
+			// FIXME: Ideally we should be opening the zip and checking
+			// exactly what was written to verify it's correct
+			using (var stream = new MemoryStream ()) {
+				var package = Package.Open (stream, FileMode.OpenOrCreate);
+				package.CreatePart (uris [0], contentType);
+				package.CreatePart (uris [1], contentType);
+				package.CreatePart (uris [2], contentType);
+				package.Close ();
+				
+				package = Package.Open (new MemoryStream (stream.ToArray ()));
+				Assert.AreEqual (contentType, package.GetPart (uris [0]).ContentType, "#1");
+				Assert.AreEqual (contentType, package.GetPart (uris [1]).ContentType, "#2");
+				Assert.AreEqual (contentType, package.GetPart (uris [2]).ContentType, "#3");
+			}
+		}
+		
+        [Test]
+        public void CheckPartRelationships ()
+        {
+            AddThreeParts ();
+            Assert.AreEqual (4, package.GetParts ().Count (), "#a");
+            PackagePart part = package.GetPart (uris [0]);
+            PackageRelationship r1 = part.CreateRelationship (part.Uri, TargetMode.Internal, "self");
+            PackageRelationship r2 = package.CreateRelationship (part.Uri, TargetMode.Internal, "fake");
+            PackageRelationship r3 = package.CreateRelationship (new Uri ("/fake/uri", UriKind.Relative), TargetMode.Internal, "self");
+
+            Assert.AreEqual (6, package.GetParts ().Count (), "#b");
+            Assert.AreEqual (1, part.GetRelationships ().Count (), "#1");
+            Assert.AreEqual (1, part.GetRelationshipsByType ("self").Count (), "#2");
+            Assert.AreEqual (r1, part.GetRelationship (r1.Id), "#3");
+            Assert.AreEqual (2, package.GetRelationships ().Count (), "#4");
+            Assert.AreEqual (1, package.GetRelationshipsByType ("self").Count (), "#5");
+            Assert.AreEqual (r3, package.GetRelationship (r3.Id), "#6");
+
+            Assert.AreEqual (6, package.GetParts ().Count (), "#c");
+            Assert.AreEqual (part.Uri, r1.SourceUri, "#7");
+            Assert.AreEqual (new Uri ("/", UriKind.Relative), r3.SourceUri, "#8");
+
+            PackageRelationship r4 = part.CreateRelationship (uris [2], TargetMode.Internal, "other");
+            Assert.AreEqual (part.Uri, r4.SourceUri);
+
+            PackageRelationshipCollection relations = package.GetPart (uris [2]).GetRelationships ();
+            Assert.AreEqual (0, relations.Count ());
+            Assert.AreEqual (6, package.GetParts ().Count (), "#d");
+        }
+
+        [Test]
+        public void CheckIndividualRelationships ()
+        {
+            PackagePart part = package.CreatePart (uris [0], contentType);
+            part.CreateRelationship (uris [1], TargetMode.Internal, "relType");
+            part.CreateRelationship (uris [2], TargetMode.External, "relType");
+
+            package.Flush ();
+            Assert.AreEqual (2, package.GetParts ().Count(), "#1");
+            part = package.GetPart (new Uri ("/_rels" + uris [0].ToString () + ".rels", UriKind.Relative));
+            Assert.IsNotNull (part);
+        }
+
+        [Test]
+        [ExpectedException (typeof (InvalidOperationException))]
+        public void DeletePartsAfterAddingRelationships ()
+        {
+            CheckPartRelationships ();
+            foreach (PackagePart p in new List<PackagePart> (package.GetParts ()))
+                package.DeletePart (p.Uri);
+        }
+
+        [Test]
+        [ExpectedException (typeof (InvalidOperationException))]
+        public void DeleteRelsThenParts ()
+        {
+            CheckPartRelationships ();
+            foreach (PackageRelationship r in new List<PackageRelationship> (package.GetRelationships ()))
+                package.DeleteRelationship (r.Id);
+            foreach (PackagePart p in new List<PackagePart> (package.GetParts ()))
+                package.DeletePart (p.Uri);
+        }
+
+        [Test]
+        public void CreateValidPart ()
+        {
+            PackagePart part = package.CreatePart (uris [0], "img/bmp");
+        }
+
+        [Test]
+        [ExpectedException (typeof (InvalidOperationException))]
+        public void CreateDuplicatePart ()
+        {
+            CreateValidPart ();
+            CreateValidPart ();
+        }
+
+        [Test]
+        public void CreateValidPartTwice ()
+        {
+            CreateValidPart ();
+            package.DeletePart (uris [0]);
+            CreateValidPart ();
+
+            Assert.AreEqual (1, package.GetParts ().Count (), "#1");
+            Assert.AreEqual (uris [0], package.GetParts ().ToArray () [0].Uri, "#2");
+            package.DeletePart (uris [0]);
+            package.DeletePart (uris [0]);
+            package.DeletePart (uris [0]);
+        }
+
+        [Test]
+        public void IterateParts ()
+        {
+            List<PackagePart> parts = new List<PackagePart> ();
+            parts.Add (package.CreatePart (new Uri ("/a", UriKind.Relative), "mime/type"));
+            parts.Add (package.CreatePart (new Uri ("/b", UriKind.Relative), "mime/type"));
+            List<PackagePart> found = new List<PackagePart> (package.GetParts ());
+            Assert.AreEqual (parts.Count, found.Count, "Invalid number of parts");
+            Assert.IsTrue (found.Contains (parts [0]), "Doesn't contain first part");
+            Assert.IsTrue (found.Contains (parts [1]), "Doesn't contain second part");
+
+            Assert.IsTrue (found [0] == parts [0] || found [0] == parts [1], "Same object reference should be used");
+            Assert.IsTrue (found [1] == parts [0] || found [1] == parts [1], "Same object reference should be used");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void NoStartingSlashPartialUri ()
+        {
+            PackagePart part = package.CreatePart (new Uri ("file1.bmp", UriKind.Relative), "bmp");
+        }
+
+        [Test]
+        public void PackagePropertiesTest ()
+        {
+            package.PackageProperties.Category = "category";
+            package.PackageProperties.ContentStatus = "status";
+            package.PackageProperties.ContentType = "contentttype";
+            package.PackageProperties.Created = new DateTime (2008, 12, 12, 2, 3, 4);
+            package.PackageProperties.Creator = "mono";
+            package.PackageProperties.Description = "description";
+            package.PackageProperties.Identifier = "id";
+            package.PackageProperties.Keywords = "key words";
+            package.PackageProperties.Language = "english";
+            package.PackageProperties.LastModifiedBy = "modified";
+            package.PackageProperties.LastPrinted = new DateTime (2007, 12, 12, 2, 3, 4);
+            package.PackageProperties.Modified = new DateTime (2008, 12, 12, 3, 4, 5);
+            package.PackageProperties.Revision = "reviison";
+            package.PackageProperties.Subject = "subject";
+            package.PackageProperties.Title = "title";
+            package.PackageProperties.Version = "version";
+            Assert.AreEqual (0, package.GetParts ().Count (), "#1");
+            package.Flush ();
+            Assert.AreEqual (2, package.GetParts ().Count (), "#2");
+            var part = package.GetParts ().Where (p => p.ContentType == PackagePropertiesType).ToList ().First ();
+            Assert.IsNotNull (part);
+            Assert.IsTrue (part.Uri.OriginalString.StartsWith ("/package/services/metadata/core-properties/"), "#3");
+            Assert.IsTrue (part.Uri.OriginalString.EndsWith (".psmdcp"), "#4");
+            package.Close ();
+            package = Package.Open (new MemoryStream (stream.ToArray ()));
+
+            Assert.AreEqual (package.PackageProperties.Category, "category", "#5");
+            Assert.AreEqual (package.PackageProperties.ContentStatus, "status", "#6");
+            Assert.AreEqual (package.PackageProperties.ContentType, "contentttype", "#7");
+            Assert.AreEqual (package.PackageProperties.Created, new DateTime (2008, 12, 12, 2, 3, 4), "#8");
+            Assert.AreEqual (package.PackageProperties.Creator, "mono", "#9");
+            Assert.AreEqual (package.PackageProperties.Description, "description", "#10");
+            Assert.AreEqual (package.PackageProperties.Identifier, "id", "#11");
+            Assert.AreEqual (package.PackageProperties.Keywords, "key words", "#12");
+            Assert.AreEqual (package.PackageProperties.Language, "english", "#13");
+            Assert.AreEqual (package.PackageProperties.LastModifiedBy, "modified", "#14");
+            Assert.AreEqual (package.PackageProperties.LastPrinted, new DateTime (2007, 12, 12, 2, 3, 4), "#15");
+            Assert.AreEqual (package.PackageProperties.Modified, new DateTime (2008, 12, 12, 3, 4, 5), "#16");
+            Assert.AreEqual (package.PackageProperties.Revision, "reviison", "#17");
+            Assert.AreEqual (package.PackageProperties.Subject, "subject", "#18");
+            Assert.AreEqual (package.PackageProperties.Title, "title", "#19");
+            Assert.AreEqual (package.PackageProperties.Version, "version", "#20");
+        }
+
+        [Test]
+        public void PackagePropertiestest2 ()
+        {
+            package.PackageProperties.Title = "TITLE";
+            package.Close ();
+            package = Package.Open (new MemoryStream (stream.ToArray ()));
+            Assert.AreEqual (null, package.PackageProperties.Category, "#1");
+        }
+        
+        [Test]
+        [ExpectedException (typeof (IOException))]
+        public void PackagePropertiesReadonly ()
+        {
+            PackagePropertiesTest ();
+            package.PackageProperties.Title = "Title";
+        }
+        
+        [Test]
+        public void PartExists ()
+        {
+            CreateValidPart ();
+            Assert.IsNotNull (package.GetPart (uris [0]), "Part could not be found");
+            Assert.IsTrue (package.PartExists (uris [0]), "Part didn't exist");
+            Assert.AreEqual (1, package.GetParts ().Count (), "Only one part");
+        }
+
+        [Test]
+        public void RemoveThreeParts ()
+        {
+            AddThreeParts ();
+            foreach (PackagePart p in new List<PackagePart> (package.GetParts ()))
+                package.DeletePart (p.Uri);
+            Assert.AreEqual (0, package.GetParts ().Count (), "Should contain no parts");
+        }
+
+        [Test]
+        [ExpectedException (typeof (InvalidOperationException))]
+        public void RemoveThreePartsBreak ()
+        {
+            AddThreeParts ();
+            foreach (PackagePart p in package.GetParts ())
+                package.DeletePart (p.Uri);
+        }
+
+        [Test]
+        public void CheckContentTypes ()
+        {
+	        Assert.IsFalse (package.PartExists(new Uri ("[Content_Types].xml", UriKind.Relative)));
+        }
+
+        [Test]
+        public void CheckCanGetRelationshipsIfReadOnly ()
+        {
+            using (var stream = new MemoryStream ()) {
+                var package = Package.Open (stream, FileMode.OpenOrCreate);
+                var part = package.CreatePart (uris [0], contentType);
+                part.CreateRelationship (part.Uri, TargetMode.Internal, "self");
+                package.Close ();
+                package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.Read);
+                part = package.GetPart (uris [0]);
+                part.GetRelationships ();
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageRelationshipTests.cs
@@ -1,216 +1,216 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
-// Copyright (c) 2011 Xamarin Inc. (http://www.xamarin.com)
-//
-// Authors:
-//    Alan McGovern (amcgovern@novell.com)
-//    Rolf Bjarne Kvinge (rolf@xamarin.com)
-//
-
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.IO.Packaging;
-using System.Linq;
-using System.Text;
-using System.Xml;
-using NUnit.Framework;
-
-namespace MonoTests.System.IO.Packaging {
-    
-    [TestFixture]
-    public class PackageRelationshipTests : TestBase {
-        [Test]
-        public void AddInvalidRelationshipTwice ()
-        {
-            try {
-                package.CreateRelationship (new Uri ("", UriKind.Relative), TargetMode.Internal, "bmp");
-            } catch (ArgumentException) {
-                try {
-                    package.CreateRelationship (new Uri ("", UriKind.Relative), TargetMode.Internal, "bmp");
-                } catch (ArgumentException) {
-                    Assert.AreEqual (0, package.GetRelationships ().Count (), "Need to be buggy and return null");
-                    return; // Success
-                }
-            }
-
-            Assert.Fail ("Should have thrown an ArgumentException then InvalidOperationException");
-        }
-
-        [Test]
-        public void AddThreeRelationShips ()
-        {
-            PackageRelationship r1 = package.CreateRelationship (uris [0], TargetMode.Internal, "a");
-            PackageRelationship r2 = package.CreateRelationship (uris [1], TargetMode.Internal, "b");
-            PackageRelationship r3 = package.CreateRelationship (uris [2], TargetMode.Internal, "a");
-
-            Assert.AreEqual (3, package.GetRelationships ().Count (), "#1");
-            Assert.AreEqual (2, package.GetRelationshipsByType ("a").Count (), "#2");
-			Assert.AreEqual (0, package.GetRelationshipsByType ("A").Count (), "#3");
-        }
-
-        [Test]
-        public void CheckProperties ()
-        {
-            AddThreeRelationShips ();
-            PackageRelationship r = package.GetRelationshipsByType ("b").ToArray () [0];
-            Assert.AreEqual (uris [1], r.TargetUri, "#1");
-            Assert.AreEqual (TargetMode.Internal, r.TargetMode, "#2");
-            Assert.AreEqual (new Uri ("/", UriKind.Relative), r.SourceUri, "#3");
-            Assert.AreEqual ("b", r.RelationshipType, "#4");
-            Assert.AreEqual (package, r.Package, "#5");
-            Assert.IsTrue (package == r.Package, "#6");
-            Assert.IsTrue (!string.IsNullOrEmpty (r.Id), "#7");
-            Assert.IsTrue (char.IsLetter (r.Id [0]), "#8");
-        }
-
-        [Test]
-        public void CreatePackageTest ()
-        {
-            package.CreateRelationship (uris[0], TargetMode.Internal, "a");
-            package.CreateRelationship (uris[1], TargetMode.External, "a");
-            package.CreateRelationship (new Uri ("http://www.example.com", UriKind.Absolute), TargetMode.External, "ex");
-            package.Close ();
-
-            package = Package.Open (new MemoryStream (stream.ToArray ()));
-            PackageRelationship[] rels = package.GetRelationships ().ToArray ();
-            Assert.AreEqual (3, rels.Length, "#1");
-
-            Assert.AreEqual (uris[0], rels[0].TargetUri, "#2");
-            Assert.AreEqual (TargetMode.Internal, rels[0].TargetMode, "#3");
-
-            Assert.AreEqual (uris[1], rels[1].TargetUri, "#4");
-            Assert.AreEqual (TargetMode.External, rels[1].TargetMode, "#5");
-
-            Assert.AreEqual ("http://www.example.com/", rels[2].TargetUri.ToString (), "#6");
-            Assert.AreEqual (TargetMode.External, rels[1].TargetMode, "#7");
-        }
-
-        [Test]
-        public void ExternalRelationshipTest ()
-        {
-            package.CreateRelationship (new Uri ("/file2", UriKind.Relative), TargetMode.External, "RelType");
-            package.CreateRelationship (new Uri ("http://www.example.com", UriKind.Absolute), TargetMode.External, "RelType");
-        }
-
-        [Test]
-        public void InternalRelationshipTest ()
-        {
-            package.CreateRelationship (new Uri ("/file2", UriKind.Relative), TargetMode.Internal, "RelType");
-            try {
-                package.CreateRelationship (new Uri ("http://www.example.com", UriKind.Absolute), TargetMode.Internal, "RelType");
-                Assert.Fail ("Internal relationships must be relative");
-            } catch (ArgumentException) {
-            }
-        }
-
-        [Test]
-        public void RemoveById ()
-        {
-            AddThreeRelationShips ();
-            PackageRelationship r = package.GetRelationshipsByType ("a").ToArray () [0];
-            package.DeleteRelationship (r.Id);
-            Assert.AreEqual (2, package.GetRelationships ().Count (), "#1");
-            Assert.AreEqual (1, package.GetRelationshipsByType ("a").Count (), "#2");
-        }
-
-        [Test]
-        public void RemoveThreeRelationships ()
-        {
-            AddThreeRelationShips ();
-            foreach (PackageRelationship p in new List<PackageRelationship> (package.GetRelationships ()))
-                package.DeleteRelationship (p.Id);
-            Assert.AreEqual (0, package.GetRelationships ().Count (), "Should contain no relationships");
-        }
-
-        [Test]
-        [ExpectedException (typeof (InvalidOperationException))]
-        public void RemoveThreeRelationshipsBreak ()
-        {
-            AddThreeRelationShips ();
-            foreach (PackageRelationship p in package.GetRelationships ())
-                package.DeleteRelationship (p.Id);
-        }
-
-        [Test]
-        public void CheckRelationshipData ()
-        {
-            AddThreeRelationShips ();
-            PackagePart part = package.GetPart (new Uri ("/_rels/.rels", UriKind.Relative));
-			Assert.IsNotNull (package.GetPart (new Uri ("/_RELS/.RELS", UriKind.Relative)), "#0");
-            package.Flush ();
-            Assert.IsNotNull (part, "#1");
-
-            Stream stream = part.GetStream ();
-            Assert.IsTrue (stream.Length > 0, "#2a");
-
-            XmlDocument doc = new XmlDocument ();
-            XmlNamespaceManager manager = new XmlNamespaceManager (doc.NameTable);
-            manager.AddNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships");
-            doc.Load (new StreamReader (stream));
-
-            Assert.IsNotNull (doc.SelectSingleNode ("/rel:Relationships", manager), "#2b");
-
-            XmlNodeList list = doc.SelectNodes ("/rel:Relationships/*", manager);
-            Assert.AreEqual (3, list.Count);
-
-            List<PackageRelationship> relationships = new List<PackageRelationship>(package.GetRelationships ());
-            foreach (XmlNode node in list) {
-                Assert.AreEqual (3, node.Attributes.Count, "#3");
-                Assert.IsNotNull (node.Attributes ["Id"], "#4");
-                Assert.IsNotNull (node.Attributes ["Target"], "#5");
-                Assert.IsNotNull (node.Attributes ["Type"], "#6");
-                Assert.IsTrue(relationships.Exists(d => d.Id == node.Attributes["Id"].InnerText &&
-                                                        d.TargetUri == new Uri (node.Attributes["Target"].InnerText, UriKind.Relative) &&
-                                                        d.RelationshipType == node.Attributes["Type"].InnerText));
-            }
-        }
-
-        [Test]
-        public void CheckRelationshipDeletion ()
-        {
-            AddThreeRelationShips ();
-            package.Flush ();
-
-            foreach (PackageRelationship p in new List<PackageRelationship> (package.GetRelationships ()).Skip(1))
-                package.DeleteRelationship (p.Id);
-
-            PackagePart part = package.GetPart (new Uri ("/_rels/.rels", UriKind.Relative));
-            Assert.IsNotNull (package.GetPart (new Uri ("/_RELS/.RELS", UriKind.Relative)), "#0");
-            package.Flush ();
-            Assert.IsNotNull (part, "#1");
-
-            Stream stream = part.GetStream ();
-            Assert.IsTrue (stream.Length > 0, "#2a");
-
-            XmlDocument doc = new XmlDocument ();
-            XmlNamespaceManager manager = new XmlNamespaceManager (doc.NameTable);
-            manager.AddNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships");
-            doc.Load (new StreamReader (stream));
-
-            Assert.IsNotNull (doc.SelectSingleNode ("/rel:Relationships", manager), "#2b");
-
-            XmlNodeList list = doc.SelectNodes ("/rel:Relationships/*", manager);
-            Assert.AreEqual (1, list.Count);
-        }
-    }
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2011 Xamarin Inc. (http://www.xamarin.com)
+//
+// Authors:
+//    Alan McGovern (amcgovern@novell.com)
+//    Rolf Bjarne Kvinge (rolf@xamarin.com)
+//
+
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Packaging;
+using System.Linq;
+using System.Text;
+using System.Xml;
+using NUnit.Framework;
+
+namespace MonoTests.System.IO.Packaging {
+    
+    [TestFixture]
+    public class PackageRelationshipTests : TestBase {
+        [Test]
+        public void AddInvalidRelationshipTwice ()
+        {
+            try {
+                package.CreateRelationship (new Uri ("", UriKind.Relative), TargetMode.Internal, "bmp");
+            } catch (ArgumentException) {
+                try {
+                    package.CreateRelationship (new Uri ("", UriKind.Relative), TargetMode.Internal, "bmp");
+                } catch (ArgumentException) {
+                    Assert.AreEqual (0, package.GetRelationships ().Count (), "Need to be buggy and return null");
+                    return; // Success
+                }
+            }
+
+            Assert.Fail ("Should have thrown an ArgumentException then InvalidOperationException");
+        }
+
+        [Test]
+        public void AddThreeRelationShips ()
+        {
+            PackageRelationship r1 = package.CreateRelationship (uris [0], TargetMode.Internal, "a");
+            PackageRelationship r2 = package.CreateRelationship (uris [1], TargetMode.Internal, "b");
+            PackageRelationship r3 = package.CreateRelationship (uris [2], TargetMode.Internal, "a");
+
+            Assert.AreEqual (3, package.GetRelationships ().Count (), "#1");
+            Assert.AreEqual (2, package.GetRelationshipsByType ("a").Count (), "#2");
+			Assert.AreEqual (0, package.GetRelationshipsByType ("A").Count (), "#3");
+        }
+
+        [Test]
+        public void CheckProperties ()
+        {
+            AddThreeRelationShips ();
+            PackageRelationship r = package.GetRelationshipsByType ("b").ToArray () [0];
+            Assert.AreEqual (uris [1], r.TargetUri, "#1");
+            Assert.AreEqual (TargetMode.Internal, r.TargetMode, "#2");
+            Assert.AreEqual (new Uri ("/", UriKind.Relative), r.SourceUri, "#3");
+            Assert.AreEqual ("b", r.RelationshipType, "#4");
+            Assert.AreEqual (package, r.Package, "#5");
+            Assert.IsTrue (package == r.Package, "#6");
+            Assert.IsTrue (!string.IsNullOrEmpty (r.Id), "#7");
+            Assert.IsTrue (char.IsLetter (r.Id [0]), "#8");
+        }
+
+        [Test]
+        public void CreatePackageTest ()
+        {
+            package.CreateRelationship (uris[0], TargetMode.Internal, "a");
+            package.CreateRelationship (uris[1], TargetMode.External, "a");
+            package.CreateRelationship (new Uri ("http://www.example.com", UriKind.Absolute), TargetMode.External, "ex");
+            package.Close ();
+
+            package = Package.Open (new MemoryStream (stream.ToArray ()));
+            PackageRelationship[] rels = package.GetRelationships ().ToArray ();
+            Assert.AreEqual (3, rels.Length, "#1");
+
+            Assert.AreEqual (uris[0], rels[0].TargetUri, "#2");
+            Assert.AreEqual (TargetMode.Internal, rels[0].TargetMode, "#3");
+
+            Assert.AreEqual (uris[1], rels[1].TargetUri, "#4");
+            Assert.AreEqual (TargetMode.External, rels[1].TargetMode, "#5");
+
+            Assert.AreEqual ("http://www.example.com/", rels[2].TargetUri.ToString (), "#6");
+            Assert.AreEqual (TargetMode.External, rels[1].TargetMode, "#7");
+        }
+
+        [Test]
+        public void ExternalRelationshipTest ()
+        {
+            package.CreateRelationship (new Uri ("/file2", UriKind.Relative), TargetMode.External, "RelType");
+            package.CreateRelationship (new Uri ("http://www.example.com", UriKind.Absolute), TargetMode.External, "RelType");
+        }
+
+        [Test]
+        public void InternalRelationshipTest ()
+        {
+            package.CreateRelationship (new Uri ("/file2", UriKind.Relative), TargetMode.Internal, "RelType");
+            try {
+                package.CreateRelationship (new Uri ("http://www.example.com", UriKind.Absolute), TargetMode.Internal, "RelType");
+                Assert.Fail ("Internal relationships must be relative");
+            } catch (ArgumentException) {
+            }
+        }
+
+        [Test]
+        public void RemoveById ()
+        {
+            AddThreeRelationShips ();
+            PackageRelationship r = package.GetRelationshipsByType ("a").ToArray () [0];
+            package.DeleteRelationship (r.Id);
+            Assert.AreEqual (2, package.GetRelationships ().Count (), "#1");
+            Assert.AreEqual (1, package.GetRelationshipsByType ("a").Count (), "#2");
+        }
+
+        [Test]
+        public void RemoveThreeRelationships ()
+        {
+            AddThreeRelationShips ();
+            foreach (PackageRelationship p in new List<PackageRelationship> (package.GetRelationships ()))
+                package.DeleteRelationship (p.Id);
+            Assert.AreEqual (0, package.GetRelationships ().Count (), "Should contain no relationships");
+        }
+
+        [Test]
+        [ExpectedException (typeof (InvalidOperationException))]
+        public void RemoveThreeRelationshipsBreak ()
+        {
+            AddThreeRelationShips ();
+            foreach (PackageRelationship p in package.GetRelationships ())
+                package.DeleteRelationship (p.Id);
+        }
+
+        [Test]
+        public void CheckRelationshipData ()
+        {
+            AddThreeRelationShips ();
+            PackagePart part = package.GetPart (new Uri ("/_rels/.rels", UriKind.Relative));
+			Assert.IsNotNull (package.GetPart (new Uri ("/_RELS/.RELS", UriKind.Relative)), "#0");
+            package.Flush ();
+            Assert.IsNotNull (part, "#1");
+
+            Stream stream = part.GetStream ();
+            Assert.IsTrue (stream.Length > 0, "#2a");
+
+            XmlDocument doc = new XmlDocument ();
+            XmlNamespaceManager manager = new XmlNamespaceManager (doc.NameTable);
+            manager.AddNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships");
+            doc.Load (new StreamReader (stream));
+
+            Assert.IsNotNull (doc.SelectSingleNode ("/rel:Relationships", manager), "#2b");
+
+            XmlNodeList list = doc.SelectNodes ("/rel:Relationships/*", manager);
+            Assert.AreEqual (3, list.Count);
+
+            List<PackageRelationship> relationships = new List<PackageRelationship>(package.GetRelationships ());
+            foreach (XmlNode node in list) {
+                Assert.AreEqual (3, node.Attributes.Count, "#3");
+                Assert.IsNotNull (node.Attributes ["Id"], "#4");
+                Assert.IsNotNull (node.Attributes ["Target"], "#5");
+                Assert.IsNotNull (node.Attributes ["Type"], "#6");
+                Assert.IsTrue(relationships.Exists(d => d.Id == node.Attributes["Id"].InnerText &&
+                                                        d.TargetUri == new Uri (node.Attributes["Target"].InnerText, UriKind.Relative) &&
+                                                        d.RelationshipType == node.Attributes["Type"].InnerText));
+            }
+        }
+
+        [Test]
+        public void CheckRelationshipDeletion ()
+        {
+            AddThreeRelationShips ();
+            package.Flush ();
+
+            foreach (PackageRelationship p in new List<PackageRelationship> (package.GetRelationships ()).Skip(1))
+                package.DeleteRelationship (p.Id);
+
+            PackagePart part = package.GetPart (new Uri ("/_rels/.rels", UriKind.Relative));
+            Assert.IsNotNull (package.GetPart (new Uri ("/_RELS/.RELS", UriKind.Relative)), "#0");
+            package.Flush ();
+            Assert.IsNotNull (part, "#1");
+
+            Stream stream = part.GetStream ();
+            Assert.IsTrue (stream.Length > 0, "#2a");
+
+            XmlDocument doc = new XmlDocument ();
+            XmlNamespaceManager manager = new XmlNamespaceManager (doc.NameTable);
+            manager.AddNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships");
+            doc.Load (new StreamReader (stream));
+
+            Assert.IsNotNull (doc.SelectSingleNode ("/rel:Relationships", manager), "#2b");
+
+            XmlNodeList list = doc.SelectNodes ("/rel:Relationships/*", manager);
+            Assert.AreEqual (1, list.Count);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/WindowsBase/Test/System.IO.Packaging/PackageTest.cs
@@ -1,443 +1,443 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
-//
-// Authors:
-//    Alan McGovern (amcgovern@novell.com)
-//
-
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.IO.Compression;
-using System.IO.Packaging;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-
-namespace MonoTests.System.IO.Packaging {
-
-    [TestFixture]
-    public class PackageTest : TestBase {
-
-        //static void Main (string [] args)
-        //{
-        //    PackageTest t = new PackageTest ();
-        //    t.FixtureSetup ();
-        //    t.Setup ();
-        //    t.RelationshipPartGetStream ();
-        //}
-        string path = "test.package";
-
-        public override void Setup ()
-        {
-            if (File.Exists (path))
-                File.Delete (path);
-        }
-
-        public override void TearDown ()
-        {
-            try {
-                if (package != null)
-                    package.Close ();
-            } catch {
-                // FIXME: This shouldn't be required when i implement this
-            }
-            if (File.Exists (path))
-                File.Delete (path);
-        }
-
-        [Test]
-        public void CheckContentFile ()
-        {
-            MemoryStream stream = new MemoryStream ();
-            package = Package.Open (stream, FileMode.Create, FileAccess.ReadWrite);
-            package.CreatePart (uris[0], "custom/type");
-            package.CreateRelationship (uris[1], TargetMode.External, "relType");
-
-            package.Close ();
-            package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.ReadWrite);
-            package.Close ();
-            package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.ReadWrite);
-
-            Assert.AreEqual (2, package.GetParts ().Count (), "#1");
-            Assert.AreEqual (1, package.GetRelationships ().Count (), "#2");
-        }
-
-        [Test]
-        [ExpectedException (typeof (FileFormatException))]
-        public void CorruptStream ()
-        {
-            stream = new FakeStream (true, true, true);
-            stream.Write (new byte [1024], 0, 1024);
-            package = Package.Open (stream);
-        }
-
-        [Test]
-        [ExpectedException (typeof (NotSupportedException))]
-        public void FileShareReadWrite ()
-        {
-            package = Package.Open (path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
-        }
-
-        [Test]
-        [ExpectedException (typeof (FileNotFoundException))]
-        public void OpenNonExistantPath ()
-        {
-            package = Package.Open (path, FileMode.Open);
-        }
-
-        [Test]
-        public void NonExistantPath ()
-        {
-            package = Package.Open (path);
-        }
-
-        [Test]
-        public void PreExistingPath ()
-        {
-            package = Package.Open (path);
-            package.Close ();
-            package = Package.Open (path);
-        } 
-		
-		[Test]
-		public void Close_FileStreamNotClosed ()
-		{
-			using (var stream = new FileStream (path, FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
-				var package = Package.Open (stream, FileMode.OpenOrCreate);
-				package.CreatePart (uris [0], contentType);
-				package.Close ();
-				stream.Read (new byte [1024], 0, 1024);
-			}
-		}
-		
-		[Test]
-		public void Close_MemoryStreamNotClosed ()
-		{
-			using (var stream = new MemoryStream ()) {
-				var package = Package.Open (stream, FileMode.OpenOrCreate);
-				package.CreatePart (uris [0], contentType);
-				package.Close ();
-				stream.Read (new byte [1024], 0, 1024);
-			}
-		}
-		
-		[Test]
-		public void Close_Twice ()
-		{
-			var package = Package.Open (new MemoryStream (), FileMode.OpenOrCreate);
-			package.Close ();
-			package.Close ();
-		}
-		
-		[Test]
-		public void Dispose_Twice ()
-		{
-			var package = Package.Open (new MemoryStream (), FileMode.OpenOrCreate);
-			((IDisposable) package).Dispose ();
-			((IDisposable) package).Dispose ();
-		}
-		
-        [Test]
-        public void CreatePath ()
-        {
-            package = Package.Open (path, FileMode.Create);
-            Assert.AreEqual (FileAccess.ReadWrite, package.FileOpenAccess, "#1");
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void CreatePathReadonly ()
-        {
-            package = Package.Open (path, FileMode.Create, FileAccess.Read);
-            package.Close ();
-        }
-
-        [Test]
-        public void CreatePathTwice ()
-        {
-            package = Package.Open (path, FileMode.Create);
-            package.Close ();
-            package = Package.Open (path, FileMode.Open);
-            Assert.AreEqual (FileAccess.ReadWrite, package.FileOpenAccess);
-        }
-
-        [Test]
-        public void OpenPackageMultipleTimes ()
-        {
-            var filename = Path.GetTempFileName ();
-            try {
-                using (var file = File.Open (filename, FileMode.OpenOrCreate)) {
-                    var package = Package.Open (file, FileMode.OpenOrCreate);
-                    var part = package.CreatePart (new Uri ("/test", UriKind.Relative), "test/type");
-                    using (var stream = part.GetStream ())
-                        stream.Write (new byte [1024 * 1024], 0, 1024 * 1024);
-                    package.Close ();
-                }
-                
-                for (int i = 0; i < 10; i++) {
-                    using (var file = File.Open (filename, FileMode.OpenOrCreate))
-                    using (var package = Package.Open (file)) {
-                        package.GetParts ();
-                        package.GetRelationships ();
-                    }
-                }
-            } finally {
-                if (File.Exists (filename))
-                    File.Delete (filename);
-            }
-        }
-        
-        [Test]
-        public void OpenPathReadonly ()
-        {
-            package = Package.Open (path, FileMode.Create);
-            package.CreatePart (uris[0], contentType);
-            package.CreateRelationship (uris[1], TargetMode.External, "relType");
-            package.Close ();
-            package = Package.Open (path, FileMode.Open, FileAccess.Read);
-            Assert.AreEqual (2, package.GetParts ().Count (), "#1");
-            Assert.AreEqual (1, package.GetRelationships ().Count (), "#2");
-            Assert.AreEqual (FileAccess.Read, package.FileOpenAccess, "Should be read access");
-            try {
-                package.CreatePart (uris [0], contentType);
-                Assert.Fail ("Cannot modify a read-only package");
-            } catch (IOException) {
-
-            }
-
-            try {
-                package.CreateRelationship (uris [0], TargetMode.Internal, contentType);
-                Assert.Fail ("Cannot modify a read-only package");
-            } catch (IOException) {
-
-            }
-
-            try {
-                package.DeletePart (uris [0]);
-                Assert.Fail ("Cannot modify a read-only package");
-            } catch (IOException) {
-
-            }
-
-            try {
-                package.DeleteRelationship (contentType);
-                Assert.Fail ("Cannot modify a read-only package");
-            } catch (IOException) {
-
-            }
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void ReadableStream ()
-        {
-            stream = new FakeStream (true, false, false);
-            package = Package.Open (stream);
-        }
-
-        [Test]
-        [ExpectedException (typeof (FileFormatException))]
-        public void ReadableSeekableStream ()
-        {
-            stream = new FakeStream (true, false, true);
-            package = Package.Open (stream);
-
-            try {
-                package.DeleteRelationship (contentType);
-                Assert.Fail ("Cannot modify a read-only package");
-            } catch (IOException) {
-
-            }
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void ReadOnlyAccess ()
-        {
-            stream = new FakeStream (true, false, true);
-            package = Package.Open (path, FileMode.CreateNew, FileAccess.Read);
-
-            try {
-                package.DeleteRelationship (contentType);
-                Assert.Fail ("Cannot modify a read-only package");
-            } catch (IOException) {
-
-            }
-        }
-
-        [Test]
-        [Category ("NotWorking")]
-        [Ignore ("I'm not supposed to write to the relation stream unless i'm flushing")]
-        public void RelationshipPartGetStream ()
-        {
-            package = Package.Open (path);
-            package.CreateRelationship (uris [0], TargetMode.External, "rel");
-            PackagePart p = package.GetPart (relationshipUri);
-            Assert.IsNotNull (p, "#0");
-            Stream s = p.GetStream ();
-            Assert.AreEqual (0, s.Length, "#1");
-            Assert.IsTrue (s.CanRead, "#2");
-            Assert.IsTrue (s.CanSeek, "#3");
-            Assert.IsFalse (s.CanTimeout, "#4");
-            Assert.IsTrue (s.CanWrite, "#5");
-        }
-
-        [Test]
-        [ExpectedException (typeof (IOException))]
-        public void SetFileModeOnUnwriteableStream ()
-        {
-            stream = new FakeStream (true, false, true);
-            package = Package.Open (stream, FileMode.Truncate);
-        }
-
-        [Test]
-        [ExpectedException (typeof (NotSupportedException))]
-        public void SetAppendOnWriteableStream ()
-        {
-            stream = new FakeStream (true, true, true);
-            package = Package.Open (stream, FileMode.Append);
-        }
-
-        [Test]
-        public void SetCreateNewOnWriteableStream ()
-        {
-            package = Package.Open (stream, FileMode.CreateNew);
-        }
-
-        [Test]
-        [ExpectedException(typeof(IOException))]
-        public void SetCreateNewOnWriteableStream2 ()
-        {
-            stream = new FakeStream (true, true, true);
-            stream.Write (new byte [1000], 0, 1000);
-            package = Package.Open (stream, FileMode.CreateNew);
-            Assert.AreEqual (0, stream.Length, "#1");
-        }
-
-        [Test]
-        public void SetCreateOnWriteableStream ()
-        {
-            stream = new FakeStream (true, true, true);
-            package = Package.Open (stream, FileMode.Create);
-        }
-
-        [Test]
-        [ExpectedException (typeof (FileFormatException))]
-        public void SetOpenOnWriteableStream ()
-        {
-            stream = new FakeStream (true, true, true);
-            package = Package.Open (stream, FileMode.Open);
-        }
-
-        [Test]
-        public void SetOpenOrCreateOnWriteableStream ()
-        {
-            stream = new FakeStream (true, true, true);
-            package = Package.Open (stream, FileMode.OpenOrCreate);
-        }
-
-        [Test]
-        [ExpectedException (typeof (NotSupportedException))]
-        public void SetTruncateOnWriteableStream ()
-        {
-            stream = new FakeStream (true, true, true);
-            package = Package.Open (stream, FileMode.Truncate);
-        }
-
-        [Test]
-        [ExpectedException (typeof (NotSupportedException))]
-        public void SetTruncateOnWriteablePath ()
-        {
-            stream = new FakeStream (true, true, true);
-            File.Create (path).Close ();
-            package = Package.Open (path, FileMode.Truncate);
-        }
-
-        [Test]
-        [ExpectedException (typeof (FileFormatException))]
-        public void StreamOpen ()
-        {
-            stream = new FakeStream (true, true, true);
-            package = Package.Open (stream, FileMode.Open);
-        }
-
-        [Test]
-        public void StreamCreate ()
-        {
-            stream = new FakeStream (true, true, true);
-            package = Package.Open (stream, FileMode.Create);
-        }
-
-        [Test]
-        [ExpectedException (typeof (IOException))]
-        public void UnusableStream ()
-        {
-            stream = new FakeStream (false, false, false);
-            package = Package.Open (stream);
-        }
-
-        // Bug - I'm passing in FileAccess.Write but it thinks I've passed FileAccess.Read
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void WriteAccessDoesntExist ()
-        {
-            package = Package.Open (path, FileMode.OpenOrCreate, FileAccess.Write);
-        }
-
-        [Test]
-        public void ReadWriteAccessDoesntExist ()
-        {
-            package = Package.Open (path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
-        }
-
-        [Test]
-        [ExpectedException (typeof (FileFormatException))]
-        public void WriteOnlyAccessExists ()
-        {
-            File.Create (path).Close ();
-            package = Package.Open (path, FileMode.OpenOrCreate, FileAccess.Write);
-        }
-
-        [Test]
-        public void Check_ZipDateTime ()
-        {
-            using (var zipStream = new FileStream (path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
-            using (package = Package.Open (zipStream, FileMode.OpenOrCreate)) {
-                var part = package.CreatePart (new Uri ("/test", UriKind.Relative), "test/type");
-                using (var stream = part.GetStream ())
-                    stream.Write (new byte [1024 * 1024], 0, 1024 * 1024);
-            }
-
-            using (var stream = new FileStream (path, FileMode.Open, FileAccess.Read))
-            using (var archive = new ZipArchive(stream))
-            {                
-                foreach (var entry in archive.Entries)
-                {
-                    Assert.AreEqual (DateTime.Now.Year, entry.LastWriteTime.Year);
-                    Assert.AreEqual (DateTime.Now.Month, entry.LastWriteTime.Month);
-                    Assert.AreEqual (DateTime.Now.Day, entry.LastWriteTime.Day);
-                }
-            }
-        }           
-    }
-}
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2008 Novell, Inc. (http://www.novell.com)
+//
+// Authors:
+//    Alan McGovern (amcgovern@novell.com)
+//
+
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Compression;
+using System.IO.Packaging;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+namespace MonoTests.System.IO.Packaging {
+
+    [TestFixture]
+    public class PackageTest : TestBase {
+
+        //static void Main (string [] args)
+        //{
+        //    PackageTest t = new PackageTest ();
+        //    t.FixtureSetup ();
+        //    t.Setup ();
+        //    t.RelationshipPartGetStream ();
+        //}
+        string path = "test.package";
+
+        public override void Setup ()
+        {
+            if (File.Exists (path))
+                File.Delete (path);
+        }
+
+        public override void TearDown ()
+        {
+            try {
+                if (package != null)
+                    package.Close ();
+            } catch {
+                // FIXME: This shouldn't be required when i implement this
+            }
+            if (File.Exists (path))
+                File.Delete (path);
+        }
+
+        [Test]
+        public void CheckContentFile ()
+        {
+            MemoryStream stream = new MemoryStream ();
+            package = Package.Open (stream, FileMode.Create, FileAccess.ReadWrite);
+            package.CreatePart (uris[0], "custom/type");
+            package.CreateRelationship (uris[1], TargetMode.External, "relType");
+
+            package.Close ();
+            package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.ReadWrite);
+            package.Close ();
+            package = Package.Open (new MemoryStream (stream.ToArray ()), FileMode.Open, FileAccess.ReadWrite);
+
+            Assert.AreEqual (2, package.GetParts ().Count (), "#1");
+            Assert.AreEqual (1, package.GetRelationships ().Count (), "#2");
+        }
+
+        [Test]
+        [ExpectedException (typeof (FileFormatException))]
+        public void CorruptStream ()
+        {
+            stream = new FakeStream (true, true, true);
+            stream.Write (new byte [1024], 0, 1024);
+            package = Package.Open (stream);
+        }
+
+        [Test]
+        [ExpectedException (typeof (NotSupportedException))]
+        public void FileShareReadWrite ()
+        {
+            package = Package.Open (path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
+        }
+
+        [Test]
+        [ExpectedException (typeof (FileNotFoundException))]
+        public void OpenNonExistantPath ()
+        {
+            package = Package.Open (path, FileMode.Open);
+        }
+
+        [Test]
+        public void NonExistantPath ()
+        {
+            package = Package.Open (path);
+        }
+
+        [Test]
+        public void PreExistingPath ()
+        {
+            package = Package.Open (path);
+            package.Close ();
+            package = Package.Open (path);
+        } 
+		
+		[Test]
+		public void Close_FileStreamNotClosed ()
+		{
+			using (var stream = new FileStream (path, FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
+				var package = Package.Open (stream, FileMode.OpenOrCreate);
+				package.CreatePart (uris [0], contentType);
+				package.Close ();
+				stream.Read (new byte [1024], 0, 1024);
+			}
+		}
+		
+		[Test]
+		public void Close_MemoryStreamNotClosed ()
+		{
+			using (var stream = new MemoryStream ()) {
+				var package = Package.Open (stream, FileMode.OpenOrCreate);
+				package.CreatePart (uris [0], contentType);
+				package.Close ();
+				stream.Read (new byte [1024], 0, 1024);
+			}
+		}
+		
+		[Test]
+		public void Close_Twice ()
+		{
+			var package = Package.Open (new MemoryStream (), FileMode.OpenOrCreate);
+			package.Close ();
+			package.Close ();
+		}
+		
+		[Test]
+		public void Dispose_Twice ()
+		{
+			var package = Package.Open (new MemoryStream (), FileMode.OpenOrCreate);
+			((IDisposable) package).Dispose ();
+			((IDisposable) package).Dispose ();
+		}
+		
+        [Test]
+        public void CreatePath ()
+        {
+            package = Package.Open (path, FileMode.Create);
+            Assert.AreEqual (FileAccess.ReadWrite, package.FileOpenAccess, "#1");
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void CreatePathReadonly ()
+        {
+            package = Package.Open (path, FileMode.Create, FileAccess.Read);
+            package.Close ();
+        }
+
+        [Test]
+        public void CreatePathTwice ()
+        {
+            package = Package.Open (path, FileMode.Create);
+            package.Close ();
+            package = Package.Open (path, FileMode.Open);
+            Assert.AreEqual (FileAccess.ReadWrite, package.FileOpenAccess);
+        }
+
+        [Test]
+        public void OpenPackageMultipleTimes ()
+        {
+            var filename = Path.GetTempFileName ();
+            try {
+                using (var file = File.Open (filename, FileMode.OpenOrCreate)) {
+                    var package = Package.Open (file, FileMode.OpenOrCreate);
+                    var part = package.CreatePart (new Uri ("/test", UriKind.Relative), "test/type");
+                    using (var stream = part.GetStream ())
+                        stream.Write (new byte [1024 * 1024], 0, 1024 * 1024);
+                    package.Close ();
+                }
+                
+                for (int i = 0; i < 10; i++) {
+                    using (var file = File.Open (filename, FileMode.OpenOrCreate))
+                    using (var package = Package.Open (file)) {
+                        package.GetParts ();
+                        package.GetRelationships ();
+                    }
+                }
+            } finally {
+                if (File.Exists (filename))
+                    File.Delete (filename);
+            }
+        }
+        
+        [Test]
+        public void OpenPathReadonly ()
+        {
+            package = Package.Open (path, FileMode.Create);
+            package.CreatePart (uris[0], contentType);
+            package.CreateRelationship (uris[1], TargetMode.External, "relType");
+            package.Close ();
+            package = Package.Open (path, FileMode.Open, FileAccess.Read);
+            Assert.AreEqual (2, package.GetParts ().Count (), "#1");
+            Assert.AreEqual (1, package.GetRelationships ().Count (), "#2");
+            Assert.AreEqual (FileAccess.Read, package.FileOpenAccess, "Should be read access");
+            try {
+                package.CreatePart (uris [0], contentType);
+                Assert.Fail ("Cannot modify a read-only package");
+            } catch (IOException) {
+
+            }
+
+            try {
+                package.CreateRelationship (uris [0], TargetMode.Internal, contentType);
+                Assert.Fail ("Cannot modify a read-only package");
+            } catch (IOException) {
+
+            }
+
+            try {
+                package.DeletePart (uris [0]);
+                Assert.Fail ("Cannot modify a read-only package");
+            } catch (IOException) {
+
+            }
+
+            try {
+                package.DeleteRelationship (contentType);
+                Assert.Fail ("Cannot modify a read-only package");
+            } catch (IOException) {
+
+            }
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void ReadableStream ()
+        {
+            stream = new FakeStream (true, false, false);
+            package = Package.Open (stream);
+        }
+
+        [Test]
+        [ExpectedException (typeof (FileFormatException))]
+        public void ReadableSeekableStream ()
+        {
+            stream = new FakeStream (true, false, true);
+            package = Package.Open (stream);
+
+            try {
+                package.DeleteRelationship (contentType);
+                Assert.Fail ("Cannot modify a read-only package");
+            } catch (IOException) {
+
+            }
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void ReadOnlyAccess ()
+        {
+            stream = new FakeStream (true, false, true);
+            package = Package.Open (path, FileMode.CreateNew, FileAccess.Read);
+
+            try {
+                package.DeleteRelationship (contentType);
+                Assert.Fail ("Cannot modify a read-only package");
+            } catch (IOException) {
+
+            }
+        }
+
+        [Test]
+        [Category ("NotWorking")]
+        [Ignore ("I'm not supposed to write to the relation stream unless i'm flushing")]
+        public void RelationshipPartGetStream ()
+        {
+            package = Package.Open (path);
+            package.CreateRelationship (uris [0], TargetMode.External, "rel");
+            PackagePart p = package.GetPart (relationshipUri);
+            Assert.IsNotNull (p, "#0");
+            Stream s = p.GetStream ();
+            Assert.AreEqual (0, s.Length, "#1");
+            Assert.IsTrue (s.CanRead, "#2");
+            Assert.IsTrue (s.CanSeek, "#3");
+            Assert.IsFalse (s.CanTimeout, "#4");
+            Assert.IsTrue (s.CanWrite, "#5");
+        }
+
+        [Test]
+        [ExpectedException (typeof (IOException))]
+        public void SetFileModeOnUnwriteableStream ()
+        {
+            stream = new FakeStream (true, false, true);
+            package = Package.Open (stream, FileMode.Truncate);
+        }
+
+        [Test]
+        [ExpectedException (typeof (NotSupportedException))]
+        public void SetAppendOnWriteableStream ()
+        {
+            stream = new FakeStream (true, true, true);
+            package = Package.Open (stream, FileMode.Append);
+        }
+
+        [Test]
+        public void SetCreateNewOnWriteableStream ()
+        {
+            package = Package.Open (stream, FileMode.CreateNew);
+        }
+
+        [Test]
+        [ExpectedException(typeof(IOException))]
+        public void SetCreateNewOnWriteableStream2 ()
+        {
+            stream = new FakeStream (true, true, true);
+            stream.Write (new byte [1000], 0, 1000);
+            package = Package.Open (stream, FileMode.CreateNew);
+            Assert.AreEqual (0, stream.Length, "#1");
+        }
+
+        [Test]
+        public void SetCreateOnWriteableStream ()
+        {
+            stream = new FakeStream (true, true, true);
+            package = Package.Open (stream, FileMode.Create);
+        }
+
+        [Test]
+        [ExpectedException (typeof (FileFormatException))]
+        public void SetOpenOnWriteableStream ()
+        {
+            stream = new FakeStream (true, true, true);
+            package = Package.Open (stream, FileMode.Open);
+        }
+
+        [Test]
+        public void SetOpenOrCreateOnWriteableStream ()
+        {
+            stream = new FakeStream (true, true, true);
+            package = Package.Open (stream, FileMode.OpenOrCreate);
+        }
+
+        [Test]
+        [ExpectedException (typeof (NotSupportedException))]
+        public void SetTruncateOnWriteableStream ()
+        {
+            stream = new FakeStream (true, true, true);
+            package = Package.Open (stream, FileMode.Truncate);
+        }
+
+        [Test]
+        [ExpectedException (typeof (NotSupportedException))]
+        public void SetTruncateOnWriteablePath ()
+        {
+            stream = new FakeStream (true, true, true);
+            File.Create (path).Close ();
+            package = Package.Open (path, FileMode.Truncate);
+        }
+
+        [Test]
+        [ExpectedException (typeof (FileFormatException))]
+        public void StreamOpen ()
+        {
+            stream = new FakeStream (true, true, true);
+            package = Package.Open (stream, FileMode.Open);
+        }
+
+        [Test]
+        public void StreamCreate ()
+        {
+            stream = new FakeStream (true, true, true);
+            package = Package.Open (stream, FileMode.Create);
+        }
+
+        [Test]
+        [ExpectedException (typeof (IOException))]
+        public void UnusableStream ()
+        {
+            stream = new FakeStream (false, false, false);
+            package = Package.Open (stream);
+        }
+
+        // Bug - I'm passing in FileAccess.Write but it thinks I've passed FileAccess.Read
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void WriteAccessDoesntExist ()
+        {
+            package = Package.Open (path, FileMode.OpenOrCreate, FileAccess.Write);
+        }
+
+        [Test]
+        public void ReadWriteAccessDoesntExist ()
+        {
+            package = Package.Open (path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+        }
+
+        [Test]
+        [ExpectedException (typeof (FileFormatException))]
+        public void WriteOnlyAccessExists ()
+        {
+            File.Create (path).Close ();
+            package = Package.Open (path, FileMode.OpenOrCreate, FileAccess.Write);
+        }
+
+        [Test]
+        public void Check_ZipDateTime ()
+        {
+            using (var zipStream = new FileStream (path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
+            using (package = Package.Open (zipStream, FileMode.OpenOrCreate)) {
+                var part = package.CreatePart (new Uri ("/test", UriKind.Relative), "test/type");
+                using (var stream = part.GetStream ())
+                    stream.Write (new byte [1024 * 1024], 0, 1024 * 1024);
+            }
+
+            using (var stream = new FileStream (path, FileMode.Open, FileAccess.Read))
+            using (var archive = new ZipArchive(stream))
+            {                
+                foreach (var entry in archive.Entries)
+                {
+                    Assert.AreEqual (DateTime.Now.Year, entry.LastWriteTime.Year);
+                    Assert.AreEqual (DateTime.Now.Month, entry.LastWriteTime.Month);
+                    Assert.AreEqual (DateTime.Now.Day, entry.LastWriteTime.Day);
+                }
+            }
+        }           
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Documentation/en/System/Boolean.xml
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Documentation/en/System/Boolean.xml
@@ -55,12 +55,12 @@
         <format type="text/html">
           <a href="#Formatting">Formatting Boolean values</a>
         </format>
-        <br />
-<format type="text/html"><a href="#Converting">Converting to and from Boolean values</a></format><br />
-<format type="text/html"><a href="#Parsing">Parsing Boolean values</a></format><br />
-<format type="text/html"><a href="#Comparing">Comparing Boolean values</a></format><br />
-<format type="text/html"><a href="#Binary">Working with Booleans as binary values</a></format><br />
-<format type="text/html"><a href="#Operations">Performing operations with Boolean values</a></format><br />
+        <br />
+<format type="text/html"><a href="#Converting">Converting to and from Boolean values</a></format><br />
+<format type="text/html"><a href="#Parsing">Parsing Boolean values</a></format><br />
+<format type="text/html"><a href="#Comparing">Comparing Boolean values</a></format><br />
+<format type="text/html"><a href="#Binary">Working with Booleans as binary values</a></format><br />
+<format type="text/html"><a href="#Operations">Performing operations with Boolean values</a></format><br />
 </para>
       <format type="text/html">
         <a href="#Formatting" />
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Documentation/en/System/DateTime.xml
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Documentation/en/System/DateTime.xml
@@ -48,13 +48,13 @@
         <format type="text/html">
           <a href="#instantiating_datetime">Instantiating a DateTime object</a>
         </format>
-        <br />
-<format type="text/html"><a href="#datetime_values_strings">DateTime values and their string representations</a></format><br />
-<format type="text/html"><a href="#parsing">Converting strings to DateTime values</a></format><br />
-<format type="text/html"><a href="#datetime_versions">Version considerations</a></format><br />
-<format type="text/html"><a href="#datetime_values">DateTime values</a></format><br />
-<format type="text/html"><a href="#datetime_ops">DateTime operations</a></format><br />
-<format type="text/html"><a href="#datetime_timespan">DateTime vs. TimeSpan</a></format><br />
+        <br />
+<format type="text/html"><a href="#datetime_values_strings">DateTime values and their string representations</a></format><br />
+<format type="text/html"><a href="#parsing">Converting strings to DateTime values</a></format><br />
+<format type="text/html"><a href="#datetime_versions">Version considerations</a></format><br />
+<format type="text/html"><a href="#datetime_values">DateTime values</a></format><br />
+<format type="text/html"><a href="#datetime_ops">DateTime operations</a></format><br />
+<format type="text/html"><a href="#datetime_timespan">DateTime vs. TimeSpan</a></format><br />
 <format type="text/html"><a href="#com_interop">COM interop considerations</a></format></para>
       <format type="text/html">
         <a href="#instantiating_datetime" />
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Documentation/en/System/Exception.xml
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Documentation/en/System/Exception.xml
@@ -70,12 +70,12 @@ ArithmeticException Handler: System.Divi
         <format type="text/html">
           <a href="#Errors">Errors and exceptions</a>
         </format>
-        <br />
-<format type="text/html"><a href="#TryCatch">Try/catch blocks</a></format><br />
-<format type="text/html"><a href="#Features">Exception type features</a></format><br />
-<format type="text/html"><a href="#Properties">Exception class properties</a></format><br />
-<format type="text/html"><a href="#Performance">Performance considerations</a></format><br />
-<format type="text/html"><a href="#Standard">Choosing standard exceptions</a></format><br />
+        <br />
+<format type="text/html"><a href="#TryCatch">Try/catch blocks</a></format><br />
+<format type="text/html"><a href="#Features">Exception type features</a></format><br />
+<format type="text/html"><a href="#Properties">Exception class properties</a></format><br />
+<format type="text/html"><a href="#Performance">Performance considerations</a></format><br />
+<format type="text/html"><a href="#Standard">Choosing standard exceptions</a></format><br />
 <format type="text/html"><a href="#Custom">Implementing custom exceptions</a></format><br /></para>
       <format type="text/html">
         <a href="#Errors" />
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Documentation/en/System/String.xml
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Documentation/en/System/String.xml
@@ -140,25 +140,25 @@ class EmptyStringSearch {
       <attribution license="cc4" from="Microsoft" modified="false" />
       <para>A string is a sequential collection of Unicode characters that is used to represent text. A <see cref="T:System.String" /> object is a sequential collection of <see cref="T:System.Char" /> objects that represent a string. The value of the <see cref="T:System.String" /> object is the content of the sequential collection, and that value is immutable (that is, it is read-only). For more information about the immutability of strings, see the <format type="text/html"><a href="#Immutability">Immutability and the StringBuilder class</a></format> section later in this topic. The maximum size of a <see cref="T:System.String" /> object in memory is 2 GB, or about 1 billion characters.</para>
       <para>In this section:</para>
-      <para>
-                    <format type="text/html"><a href="#Instantiation">Instantiating a String object</a></format>
-                    <br />
-                    <format type="text/html"><a href="#Characters">Char objects and Unicode characters</a></format>
-                    <br />
-                    <format type="text/html"><a href="#EmbeddedNulls">Strings and embedded null characters</a></format>
-                    <br />
-                    <format type="text/html"><a href="#Indexes">Strings and indexes</a></format>
-                    <br />
-                    <format type="text/html"><a href="#Nulls">Null strings and empty strings</a></format>
-                    <br />
-                    <format type="text/html"><a href="#Immutability">Immutability and the StringBuilder class</a></format>
-                    <br />
-                    <format type="text/html"><a href="#CultureSensitive">Ordinal vs. culture-sensitive operations</a></format>
-                    <br />
-                    <format type="text/html"><a href="#Normalization">Normalization</a></format>
-                    <br />
-                    <format type="text/html"><a href="#ByCategory">String operations by category</a></format>
-                    <br />
+      <para>
+                    <format type="text/html"><a href="#Instantiation">Instantiating a String object</a></format>
+                    <br />
+                    <format type="text/html"><a href="#Characters">Char objects and Unicode characters</a></format>
+                    <br />
+                    <format type="text/html"><a href="#EmbeddedNulls">Strings and embedded null characters</a></format>
+                    <br />
+                    <format type="text/html"><a href="#Indexes">Strings and indexes</a></format>
+                    <br />
+                    <format type="text/html"><a href="#Nulls">Null strings and empty strings</a></format>
+                    <br />
+                    <format type="text/html"><a href="#Immutability">Immutability and the StringBuilder class</a></format>
+                    <br />
+                    <format type="text/html"><a href="#CultureSensitive">Ordinal vs. culture-sensitive operations</a></format>
+                    <br />
+                    <format type="text/html"><a href="#Normalization">Normalization</a></format>
+                    <br />
+                    <format type="text/html"><a href="#ByCategory">String operations by category</a></format>
+                    <br />
                 </para>
       <format type="text/html">
         <a href="#Instantiation" />
@@ -249,12 +249,12 @@ class EmptyStringSearch {
       <para>The <see cref="T:System.String" /> class includes the following two convenience methods that enable you to test whether a string is null or empty: </para>
       <list type="bullet">
         <item>
-          <para>
+          <para>
                                     <see cref="M:System.String.IsNullOrEmpty(System.String)" />, which indicates whether a string is either null or is equal to  <see cref="F:System.String.Empty" />. This method eliminates the need to use code such as the following:</para>
           <para>code reference: System.String.Class.Null#1</para>
         </item>
         <item>
-          <para>
+          <para>
                                         <see cref="M:System.String.IsNullOrWhiteSpace(System.String)" />, which indicates whether a string is null, equals <see cref="F:System.String.Empty" />, or consists exclusively of white-space characters. This method eliminates the need to use code such as the following:</para>
           <para>code reference: System.String.Class.Null#2</para>
         </item>
@@ -532,15 +532,15 @@ class EmptyStringSearch {
       <para>You can compare strings to determine their relative position in the sort order by using the following <see cref="T:System.String" /> methods:</para>
       <list type="bullet">
         <item>
-          <para>
+          <para>
                                             <see cref="M:System.String.Compare(System.String,System.String)" /> returns an integer that indicates the relationship of one string to a second string in the sort order.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                 <see cref="M:System.String.CompareOrdinal(System.String,System.String)" /> returns an integer that indicates the relationship of one string to a second string based on a comparison of their code points.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                     <see cref="M:System.String.CompareTo(System.String)" /> returns an integer that indicates the relationship of the current string instance to a second string in the sort order. The <see cref="M:System.String.CompareTo(System.String)" /> method provides the <see cref="T:System.IComparable" /> and <see cref="T:System.IComparable`1" /> implementations for the <see cref="T:System.String" /> class. </para>
         </item>
       </list>
@@ -569,43 +569,43 @@ class EmptyStringSearch {
       <para>The <see cref="T:System.String" /> class includes the following methods that appear to modify the value of a string:</para>
       <list type="bullet">
         <item>
-          <para>
+          <para>
                                                         <see cref="M:System.String.Insert(System.Int32,System.String)" /> inserts a string into the current <see cref="T:System.String" /> instance.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                             <see cref="M:System.String.PadLeft(System.Int32)" /> inserts one or more occurrences of a specified character at the beginning of a string.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                 <see cref="M:System.String.PadRight(System.Int32)" /> inserts one or more occurrences of a specified character at the beginning of a string.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                     <see cref="M:System.String.Remove(System.Int32)" /> deletes a substring from the current <see cref="T:System.String" /> instance.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                         <see cref="M:System.String.Replace(System.Char,System.Char)" /> replaces a substring with another substring in the current <see cref="T:System.String" /> instance.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                             <see cref="M:System.String.ToLower" /> and <see cref="M:System.String.ToLowerInvariant" /> convert all the characters in a string to lowercase.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                                 <see cref="M:System.String.ToUpper" /> and <see cref="M:System.String.ToUpperInvariant" /> convert all the characters in a string to uppercase.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                                     <see cref="M:System.String.Trim" /> removes all occurrences of a character from the beginning and end of a string.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                                         <see cref="M:System.String.TrimEnd(System.Char[])" /> removes all occurrences of a character from the end of a string.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                                             <see cref="M:System.String.TrimStart(System.Char[])" /> removes all occurrences of a character from the beginning of a string.</para>
         </item>
       </list>
@@ -622,11 +622,11 @@ class EmptyStringSearch {
       <para>The following <see cref="T:System.String" /> methods can be used for string concatenation:</para>
       <list type="bullet">
         <item>
-          <para>
+          <para>
                                                                                                 <see cref="M:System.String.Concat(System.String[])" /> combines one or more substrings into a single string.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                                                     <see cref="M:System.String.Join(System.String,System.String[])" /> concatenates one or more substrings into a single element and adds a separator between each substring.</para>
         </item>
       </list>
@@ -658,15 +658,15 @@ class EmptyStringSearch {
       <para>You can call the following <see cref="T:System.String" /> methods to make a copy of a string:</para>
       <list type="bullet">
         <item>
-          <para>
+          <para>
                                                                                                         <see cref="M:System.String.Clone" /> returns a reference to an existing <see cref="T:System.String" /> object.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                                                             <see cref="M:System.String.Copy(System.String)" /> creates a copy of an existing string.</para>
         </item>
         <item>
-          <para>
+          <para>
                                                                                                                 <see cref="M:System.String.CopyTo(System.Int32,System.Char[],System.Int32,System.Int32)" /> copies a portion of a string to a character array.</para>
         </item>
       </list>
@@ -1142,7 +1142,7 @@ public class StringExample {
                 <para>Less than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                         <paramref name="strA" /> is less than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1151,7 +1151,7 @@ public class StringExample {
                 <para>Zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                             <paramref name="strA" /> equals <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1160,7 +1160,7 @@ public class StringExample {
                 <para>Greater than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                 <paramref name="strA" /> is greater than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1252,7 +1252,7 @@ public class StringCompareExample {
                 <para>Less than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                     <paramref name="strA" /> is less than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1261,7 +1261,7 @@ public class StringCompareExample {
                 <para>Zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                         <paramref name="strA" /> equals <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1270,7 +1270,7 @@ public class StringCompareExample {
                 <para>Greater than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                             <paramref name="strA" /> is greater than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1337,7 +1337,7 @@ public class StringCompareExample {
                 <para>Less than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                             <paramref name="strA" /> is less than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1346,7 +1346,7 @@ public class StringCompareExample {
                 <para>Zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                 <paramref name="strA" /> equals <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1355,7 +1355,7 @@ public class StringCompareExample {
                 <para>Greater than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                     <paramref name="strA" /> is greater than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1422,7 +1422,7 @@ public class StringCompareExample {
                 <para>Less than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                 <paramref name="strA" /> is less than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1431,7 +1431,7 @@ public class StringCompareExample {
                 <para>Zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                     <paramref name="strA" /> equals <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1440,7 +1440,7 @@ public class StringCompareExample {
                 <para>Greater than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                         <paramref name="strA" /> is greater than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -1508,7 +1508,7 @@ public class StringCompareExample {
                 <para>Less than zero</para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                     <paramref name="strA" /> is less than <paramref name="strB" />.</para>
               </description>
             </item>
@@ -1517,7 +1517,7 @@ public class StringCompareExample {
                 <para>Zero</para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                         <paramref name="strA" /> equals <paramref name="strB" />.</para>
               </description>
             </item>
@@ -1526,7 +1526,7 @@ public class StringCompareExample {
                 <para>Greater than zero</para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                             <paramref name="strA" /> is greater than <paramref name="strB" />.</para>
               </description>
             </item>
@@ -2130,7 +2130,7 @@ public class StringCompareExample {
                 <para>Less than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                 <paramref name="strA" /> is less than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -2139,7 +2139,7 @@ public class StringCompareExample {
                 <para>Zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                     <paramref name="strA" /> and <paramref name="strB" /> are equal. </para>
               </description>
             </item>
@@ -2148,7 +2148,7 @@ public class StringCompareExample {
                 <para>Greater than zero </para>
               </term>
               <description>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                         <paramref name="strA" /> is greater than <paramref name="strB" />. </para>
               </description>
             </item>
@@ -2277,7 +2277,7 @@ public class StringCompareExample {
           <paramref name="value" /> is not a <see cref="T:System.String" />.</exception>
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                     <paramref name="value" /> must be a <see cref="T:System.String" /> object.</para>
           <block subset="none" type="note">
             <para>The <see cref="M:System.String.CompareTo(System.Object)" /> method was designed primarily for use in sorting or alphabetizing operations. It should not be used when the primary purpose of the method call is to determine whether two strings are equivalent. To determine whether two strings are equivalent, call the <see cref="Overload:System.String.Equals" /> method.</para>
@@ -2326,7 +2326,7 @@ public class StringCompareExample {
               <description>
                 <para>This instance follows <paramref name="value" />.</para>
                 <para>-or- </para>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                     <paramref name="value" /> is null. </para>
               </description>
             </item>
@@ -2403,7 +2403,7 @@ public class StringCompareExample {
               <description>
                 <para>This instance follows <paramref name="strB" />.</para>
                 <para>-or- </para>
-                <para>
+                <para>
                                                                                                                                                                                                                                                                                                                                                             <paramref name="strB" /> is null. </para>
               </description>
             </item>
@@ -2436,7 +2436,7 @@ public class StringCompareExample {
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>The method concatenates each object in <paramref name="values" />; it does not add any delimiters. To specify a delimiter between each member of <paramref name="values" />, call the <see cref="M:System.String.Join(System.String,System.Collections.Generic.IEnumerable{System.String})" /> method.</para>
           <para>An <see cref="F:System.String.Empty" /> string is used in place of any null argument.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                         <see cref="M:System.String.Concat(System.Collections.Generic.IEnumerable{System.String})" /> is a convenience method that lets you concatenate each element in an IEnumerable(Of String) collection without first converting the elements to a string array. It is particularly useful with Language-Integrated Query (LINQ) query expressions. The following example passes a List(Of String) object that contains either the uppercase or lowercase letters of the alphabet to a lambda expression that selects letters that are equal to or greater than a particular letter (which, in the example, is "M"). The IEnumerable(Of String) collection that is returned by the <see cref="M:System.Linq.Enumerable.Where``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Boolean})" /> method is passed to the <see cref="M:System.String.Concat(System.Collections.Generic.IEnumerable{System.String})" /> method to display the result as a single string. </para>
           <para>code reference: System.String.Concat#3</para>
         </remarks>
@@ -2528,7 +2528,7 @@ public class StringConcatExample {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>The method concatenates each object in <paramref name="args" /> by calling the parameterless ToString method of that object; it does not add any delimiters.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                 <see cref="F:System.String.Empty" /> is used in place of any null object in the array.</para>
         </remarks>
         <summary>
@@ -2640,7 +2640,7 @@ public class StringConcatExample {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>The method concatenates <paramref name="arg0" /> and <paramref name="arg1" />by calling the parameterless ToString method of <paramref name="arg0" /> and <paramref name="arg1" />; it does not add any delimiters.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                             <see cref="F:System.String.Empty" /> is used in place of any null argument.</para>
           <para>If either of the arguments is an array reference, the method concatenates a string representing that array, instead of its members (for example, "System.String[]").</para>
         </remarks>
@@ -2751,7 +2751,7 @@ public class StringConcatExample {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>The method concatenates <paramref name="arg0" />, <paramref name="arg1" />, and <paramref name="arg2" /> by calling the parameterless ToString method of each object; it does not add any delimiters.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                             <see cref="F:System.String.Empty" /> is used in place of any null argument.</para>
         </remarks>
         <summary>
@@ -2855,7 +2855,7 @@ public class StringConcatExample {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>The method concatenates each object in the parameter list by calling its parameterless ToString method; it does not add any delimiters.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                             <see cref="F:System.String.Empty" /> is used in place of any null argument.</para>
           <block subset="none" type="note">
             <para>The last parameter of the  <see cref="M:System.String.Concat(System.Object,System.Object,System.Object,System.Object)" /> method is an optional comma-delimited list of one or more additional objects to concatenate.</para>
@@ -2947,7 +2947,7 @@ public class StringConcatExample {
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>The method concatenates each object in <paramref name="values" />; it does not add any delimiters.</para>
           <para>An <see cref="F:System.String.Empty" /> string is used in place of any null argument.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                             <see cref="M:System.String.Concat``1(System.Collections.Generic.IEnumerable{``0})" /> is a convenience method that lets you concatenate each element in an <see cref="T:System.Collections.Generic.IEnumerable`1" /> collection without first converting the elements to strings. It is particularly useful with Language-Integrated Query (LINQ) query expressions, as the example illustrates. The string representation of each object in the <see cref="T:System.Collections.Generic.IEnumerable`1" /> collection is derived by calling that object's ToString method. </para>
         </remarks>
         <summary>
@@ -3119,7 +3119,7 @@ public class StringCopyToExample {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>This method copies <paramref name="count" /> characters from the <paramref name="sourceIndex" /> position of this instance to the <paramref name="destinationIndex" /> position of <paramref name="destination" /> character array. This method does not resize the <paramref name="destination" /> character array; it must have a sufficient number of elements to accommodate the copied characters or the method throws an <see cref="T:System.ArgumentOutOfRangeException" />. </para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                         <paramref name="sourceIndex" /> and <paramref name="destinationIndex" /> are zero-based.</para>
         </remarks>
         <summary>
@@ -4811,7 +4811,7 @@ public class StringExample {
         <since version=".NET 2.0" />
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <see cref="M:System.String.IsNullOrEmpty(System.String)" /> is a convenience method that enables you to simultaneously test whether a <see cref="T:System.String" /> is null or its value is <see cref="F:System.String.Empty" />. It is equivalent to the following code:</para>
           <para>code reference: System.String.IsNullOrEmpty#1</para>
           <para>You can use the <see cref="M:System.String.IsNullOrWhiteSpace(System.String)" /> method to test whether a string is null, its value is <see cref="F:System.String.Empty" />,  or it consists only of white-space characters. </para>
@@ -4845,7 +4845,7 @@ public class StringExample {
       <Docs>
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <see cref="M:System.String.IsNullOrWhiteSpace(System.String)" /> is a convenience method that is similar to the following  code, except that it offers superior performance:</para>
           <para>code reference: System.String.IsNullOrWhitespace#2</para>
           <para>White-space characters are defined by the Unicode standard. The <see cref="M:System.String.IsNullOrWhiteSpace(System.String)" /> method interprets any character that returns a value of true when it is passed to the <see cref="M:System.Char.IsWhiteSpace(System.Char)" /> method as a white-space character.</para>
@@ -4886,7 +4886,7 @@ public class StringExample {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>If <paramref name="separator" /> is null, an empty string (<see cref="F:System.String.Empty" />) is used instead. If any member of <paramref name="values" /> is null, an empty string is used instead.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <see cref="M:System.String.Join(System.String,System.Collections.Generic.IEnumerable{System.String})" /> is a convenience method that lets you concatenate each element in an IEnumerable(Of String) collection without first converting the elements to a string array. It is particularly useful with Language-Integrated Query (LINQ) query expressions. The following example passes a List(Of String) object that contains either the uppercase or lowercase letters of the alphabet to a lambda expression that selects letters that are equal to or greater than a particular letter (which, in the example, is "M"). The IEnumerable(Of String) collection returned by the <see cref="M:System.Linq.Enumerable.Where``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Boolean})" /> method is passed to the <see cref="M:System.String.Join(System.String,System.Collections.Generic.IEnumerable{System.String})" /> method to display the result as a single string. </para>
           <para>code reference: System.String.Join#4</para>
         </remarks>
@@ -4933,7 +4933,7 @@ public class StringExample {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>If <paramref name="separator" /> is null or if any element of <paramref name="values" /> other than the first element is null, an empty string (<see cref="F:System.String.Empty" />) is used instead. See the Notes for Callers section if the first element of <paramref name="values" /> is null.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <see cref="M:System.String.Join(System.String,System.Object[])" /> is a convenience method that lets you concatenate each element in an object array without explicitly converting its elements to strings. The string representation of each object in the array is derived by calling that object's ToString method. </para>
         </remarks>
         <summary>
@@ -5063,7 +5063,7 @@ public class StringJoin {
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>A string that consists of the strings in <paramref name="value" /> delimited by the <paramref name="separator" /> string. </para>
           <para>-or-</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             <see cref="F:System.String.Empty" /> if <paramref name="count" /> is zero, <paramref name="value" /> has no elements, or <paramref name="separator" /> and all the elements of <paramref name="value" /> are <see cref="F:System.String.Empty" />.</para>
         </returns>
         <param name="separator">
@@ -5103,7 +5103,7 @@ public class StringJoin {
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
           <para>If <paramref name="separator" /> is null, an empty string (<see cref="F:System.String.Empty" />) is used instead. If any member of <paramref name="values" /> is null, an empty string is used instead.</para>
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         <see cref="M:System.String.Join``1(System.String,System.Collections.Generic.IEnumerable{``0})" /> is a convenience method that lets you concatenate each member of an <see cref="T:System.Collections.Generic.IEnumerable`1" /> collection without first converting them to strings. The string representation of each object in the <see cref="T:System.Collections.Generic.IEnumerable`1" /> collection is derived by calling that object's ToString method. </para>
           <para>This method is particular useful with Language-Integrated Query (LINQ) query expressions. For example, the following code defines a very simple Animal class that contains the name of an animal and the order to which it belongs. It then defines a <see cref="T:System.Collections.Generic.List`1" /> object that contains a number of Animal objects. The <see cref="M:System.Linq.Enumerable.Where``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Boolean})" /> extension method is called to extract the Animal objects whose Order property equals "Rodent". The result is passed to the <see cref="M:System.String.Join``1(System.String,System.Collections.Generic.IEnumerable{``0})" /> method.</para>
           <para>code reference: System.String.Join#5</para>
@@ -6566,7 +6566,7 @@ public class StringLengthExample {
         <param name="separator">
           <attribution license="cc4" from="Microsoft" modified="false" />An array of Unicode characters that delimit the substrings in this string, an empty array that contains no delimiters, or null. </param>
         <param name="options">
-          <attribution license="cc4" from="Microsoft" modified="false" />
+          <attribution license="cc4" from="Microsoft" modified="false" />
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <see cref="F:System.StringSplitOptions.RemoveEmptyEntries" /> to omit empty array elements from the array returned; or <see cref="F:System.StringSplitOptions.None" /> to include empty array elements in the array returned. </param>
       </Docs>
     </Member>
@@ -6633,7 +6633,7 @@ public class StringLengthExample {
         <param name="separator">
           <attribution license="cc4" from="Microsoft" modified="false" />An array of single-character strings that delimit the substrings in this string, an empty array that contains no delimiters, or null. </param>
         <param name="options">
-          <attribution license="cc4" from="Microsoft" modified="false" />
+          <attribution license="cc4" from="Microsoft" modified="false" />
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             <see cref="F:System.StringSplitOptions.RemoveEmptyEntries" /> to omit empty array elements from the array returned; or <see cref="F:System.StringSplitOptions.None" /> to include empty array elements in the array returned. </param>
       </Docs>
     </Member>
@@ -6689,7 +6689,7 @@ public class StringLengthExample {
         <param name="count">
           <attribution license="cc4" from="Microsoft" modified="false" />The maximum number of substrings to return. </param>
         <param name="options">
-          <attribution license="cc4" from="Microsoft" modified="false" />
+          <attribution license="cc4" from="Microsoft" modified="false" />
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         <see cref="F:System.StringSplitOptions.RemoveEmptyEntries" /> to omit empty array elements from the array returned; or <see cref="F:System.StringSplitOptions.None" /> to include empty array elements in the array returned. </param>
       </Docs>
     </Member>
@@ -6761,7 +6761,7 @@ public class StringLengthExample {
         <param name="count">
           <attribution license="cc4" from="Microsoft" modified="false" />The maximum number of substrings to return. </param>
         <param name="options">
-          <attribution license="cc4" from="Microsoft" modified="false" />
+          <attribution license="cc4" from="Microsoft" modified="false" />
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <see cref="F:System.StringSplitOptions.RemoveEmptyEntries" /> to omit empty array elements from the array returned; or <see cref="F:System.StringSplitOptions.None" /> to include empty array elements in the array returned. </param>
       </Docs>
     </Member>
@@ -6951,7 +6951,7 @@ public class StringLengthExample {
         </exception>
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <paramref name="startIndex" /> is zero-based.</para>
           <block subset="none" type="note">
             <para>This method does not modify the value of the current instance. Instead, it returns a new string with <paramref name="length" /> characters starting from the <paramref name="startIndex" /> position in the current string.</para>
@@ -7740,7 +7740,7 @@ public class StringLengthExample {
       <Docs>
         <remarks>
           <attribution license="cc4" from="Microsoft" modified="false" />
-          <para>
+          <para>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <paramref name="provider" /> is reserved, and does not currently participate in this operation.</para>
         </remarks>
         <summary>
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Documentation/mscorlib.xml
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Documentation/mscorlib.xml
@@ -1,10010 +1,10010 @@
-<?xml version="1.0" encoding="utf-8"?>
-<masterdoc assembly="mscorlib">
-    <class name="Object" namespace="System">
-        <constructor name="Object()" argnames="" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Equals(System.Object, System.Object)" argnames="objA, objB" returntype="System.Boolean" />
-        <method name="ReferenceEquals(System.Object, System.Object)" argnames="objA, objB" returntype="System.Boolean" />
-        <method name="GetType()" argnames="" returntype="System.Type" />
-        <method name="MemberwiseClone()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="Array" namespace="System">
-        <property name="Length" propertytype="System.Int32" />
-        <property name="Rank" propertytype="System.Int32" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="CreateInstance(System.Type, System.Int32)" argnames="elementType, length" returntype="System.Array" />
-        <method name="CreateInstance(System.Type, System.Int32, System.Int32)" argnames="elementType, length1, length2" returntype="System.Array" />
-        <method name="CreateInstance(System.Type, System.Int32, System.Int32, System.Int32)" argnames="elementType, length1, length2, length3" returntype="System.Array" />
-        <method name="CreateInstance(System.Type, System.Int32[])" argnames="elementType, lengths" returntype="System.Array" />
-        <method name="CreateInstance(System.Type, System.Int32[], System.Int32[])" argnames="elementType, lengths, lowerBounds" returntype="System.Array" />
-        <method name="Copy(System.Array, System.Array, System.Int32)" argnames="sourceArray, destinationArray, length" returntype="System.Void" />
-        <method name="Copy(System.Array, System.Int32, System.Array, System.Int32, System.Int32)" argnames="sourceArray, sourceIndex, destinationArray, destinationIndex, length" returntype="System.Void" />
-        <method name="Clear(System.Array, System.Int32, System.Int32)" argnames="array, index, length" returntype="System.Void" />
-        <method name="GetValue(System.Int32[])" argnames="indices" returntype="System.Object" />
-        <method name="GetValue(System.Int32)" argnames="index" returntype="System.Object" />
-        <method name="GetValue(System.Int32, System.Int32)" argnames="index1, index2" returntype="System.Object" />
-        <method name="GetValue(System.Int32, System.Int32, System.Int32)" argnames="index1, index2, index3" returntype="System.Object" />
-        <method name="SetValue(System.Object, System.Int32)" argnames="value, index" returntype="System.Void" />
-        <method name="SetValue(System.Object, System.Int32, System.Int32)" argnames="value, index1, index2" returntype="System.Void" />
-        <method name="SetValue(System.Object, System.Int32, System.Int32, System.Int32)" argnames="value, index1, index2, index3" returntype="System.Void" />
-        <method name="SetValue(System.Object, System.Int32[])" argnames="value, indices" returntype="System.Void" />
-        <method name="GetLength(System.Int32)" argnames="dimension" returntype="System.Int32" />
-        <method name="GetUpperBound(System.Int32)" argnames="dimension" returntype="System.Int32" />
-        <method name="GetLowerBound(System.Int32)" argnames="dimension" returntype="System.Int32" />
-        <method name="BinarySearch(System.Array, System.Object)" argnames="array, value" returntype="System.Int32" />
-        <method name="BinarySearch(System.Array, System.Int32, System.Int32, System.Object)" argnames="array, index, length, value" returntype="System.Int32" />
-        <method name="BinarySearch(System.Array, System.Object, System.Collections.IComparer)" argnames="array, value, comparer" returntype="System.Int32" />
-        <method name="BinarySearch(System.Array, System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="array, index, length, value, comparer" returntype="System.Int32" />
-        <method name="IndexOf(System.Array, System.Object)" argnames="array, value" returntype="System.Int32" />
-        <method name="IndexOf(System.Array, System.Object, System.Int32)" argnames="array, value, startIndex" returntype="System.Int32" />
-        <method name="IndexOf(System.Array, System.Object, System.Int32, System.Int32)" argnames="array, value, startIndex, count" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Array, System.Object)" argnames="array, value" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Array, System.Object, System.Int32)" argnames="array, value, startIndex" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Array, System.Object, System.Int32, System.Int32)" argnames="array, value, startIndex, count" returntype="System.Int32" />
-        <method name="Reverse(System.Array)" argnames="array" returntype="System.Void" />
-        <method name="Reverse(System.Array, System.Int32, System.Int32)" argnames="array, index, length" returntype="System.Void" />
-        <method name="Sort(System.Array)" argnames="array" returntype="System.Void" />
-        <method name="Sort(System.Array, System.Array)" argnames="keys, items" returntype="System.Void" />
-        <method name="Sort(System.Array, System.Int32, System.Int32)" argnames="array, index, length" returntype="System.Void" />
-        <method name="Sort(System.Array, System.Array, System.Int32, System.Int32)" argnames="keys, items, index, length" returntype="System.Void" />
-        <method name="Sort(System.Array, System.Collections.IComparer)" argnames="array, comparer" returntype="System.Void" />
-        <method name="Sort(System.Array, System.Array, System.Collections.IComparer)" argnames="keys, items, comparer" returntype="System.Void" />
-        <method name="Sort(System.Array, System.Int32, System.Int32, System.Collections.IComparer)" argnames="array, index, length, comparer" returntype="System.Void" />
-        <method name="Sort(System.Array, System.Array, System.Int32, System.Int32, System.Collections.IComparer)" argnames="keys, items, index, length, comparer" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="String" namespace="System">
-        <constructor name="String(System.Char*)" argnames="value" />
-        <constructor name="String(System.Char*, System.Int32, System.Int32)" argnames="value, startIndex, length" />
-        <constructor name="String(System.SByte*)" argnames="value" />
-        <constructor name="String(System.SByte*, System.Int32, System.Int32)" argnames="value, startIndex, length" />
-        <constructor name="String(System.SByte*, System.Int32, System.Int32, System.Text.Encoding)" argnames="value, startIndex, length, enc" />
-        <constructor name="String(System.Char[], System.Int32, System.Int32)" argnames="value, startIndex, length" />
-        <constructor name="String(System.Char[])" argnames="value" />
-        <constructor name="String(System.Char, System.Int32)" argnames="c, count" />
-        <field name="Empty" />
-        <property name="Chars" propertytype="System.Char" />
-        <property name="Length" propertytype="System.Int32" />
-        <property name="ArrayLength" propertytype="System.Int32" />
-        <property name="Capacity" propertytype="System.Int32" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Join(System.String, System.String[])" argnames="separator, value" returntype="System.String" />
-        <method name="Join(System.String, System.String[], System.Int32, System.Int32)" argnames="separator, value, startIndex, count" returntype="System.String" />
-        <method name="Equals(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="Equals(System.String, System.String)" argnames="a, b" returntype="System.Boolean" />
-        <method name="CopyTo(System.Int32, System.Char[], System.Int32, System.Int32)" argnames="sourceIndex, destination, destinationIndex, count" returntype="System.Void" />
-        <method name="ToCharArray()" argnames="" returntype="System.Char[]" />
-        <method name="ToCharArray(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.Char[]" />
-        <method name="Split(System.Char[])" argnames="separator" returntype="System.String[]" />
-        <method name="Split(System.Char[], System.Int32)" argnames="separator, count" returntype="System.String[]" />
-        <method name="Substring(System.Int32)" argnames="startIndex" returntype="System.String" />
-        <method name="Substring(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.String" />
-        <method name="Trim(System.Char[])" argnames="trimChars" returntype="System.String" />
-        <method name="TrimStart(System.Char[])" argnames="trimChars" returntype="System.String" />
-        <method name="TrimEnd(System.Char[])" argnames="trimChars" returntype="System.String" />
-        <method name="Compare(System.String, System.String)" argnames="strA, strB" returntype="System.Int32" />
-        <method name="Compare(System.String, System.String, System.Boolean)" argnames="strA, strB, ignoreCase" returntype="System.Int32" />
-        <method name="Compare(System.String, System.String, System.Boolean, System.Globalization.CultureInfo)" argnames="strA, strB, ignoreCase, culture" returntype="System.Int32" />
-        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Int32)" argnames="strA, indexA, strB, indexB, length" returntype="System.Int32" />
-        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Int32, System.Boolean)" argnames="strA, indexA, strB, indexB, length, ignoreCase" returntype="System.Int32" />
-        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Int32, System.Boolean, System.Globalization.CultureInfo)" argnames="strA, indexA, strB, indexB, length, ignoreCase, culture" returntype="System.Int32" />
-        <method name="CompareTo(System.String)" argnames="strB" returntype="System.Int32" />
-        <method name="CompareOrdinal(System.String, System.String)" argnames="strA, strB" returntype="System.Int32" />
-        <method name="CompareOrdinal(System.String, System.Int32, System.String, System.Int32, System.Int32)" argnames="strA, indexA, strB, indexB, length" returntype="System.Int32" />
-        <method name="EndsWith(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="IndexOf(System.Char)" argnames="value" returntype="System.Int32" />
-        <method name="IndexOf(System.Char, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
-        <method name="IndexOf(System.Char, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
-        <method name="IndexOfAny(System.Char[])" argnames="anyOf" returntype="System.Int32" />
-        <method name="IndexOfAny(System.Char[], System.Int32)" argnames="anyOf, startIndex" returntype="System.Int32" />
-        <method name="IndexOfAny(System.Char[], System.Int32, System.Int32)" argnames="anyOf, startIndex, count" returntype="System.Int32" />
-        <method name="IndexOf(System.String)" argnames="value" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Char)" argnames="value" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Char, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Char, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
-        <method name="LastIndexOfAny(System.Char[])" argnames="anyOf" returntype="System.Int32" />
-        <method name="LastIndexOfAny(System.Char[], System.Int32)" argnames="anyOf, startIndex" returntype="System.Int32" />
-        <method name="LastIndexOfAny(System.Char[], System.Int32, System.Int32)" argnames="anyOf, startIndex, count" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String)" argnames="value" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
-        <method name="PadLeft(System.Int32)" argnames="totalWidth" returntype="System.String" />
-        <method name="PadLeft(System.Int32, System.Char)" argnames="totalWidth, paddingChar" returntype="System.String" />
-        <method name="PadRight(System.Int32)" argnames="totalWidth" returntype="System.String" />
-        <method name="PadRight(System.Int32, System.Char)" argnames="totalWidth, paddingChar" returntype="System.String" />
-        <method name="StartsWith(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="ToLower()" argnames="" returntype="System.String" />
-        <method name="ToLower(System.Globalization.CultureInfo)" argnames="culture" returntype="System.String" />
-        <method name="ToUpper()" argnames="" returntype="System.String" />
-        <method name="ToUpper(System.Globalization.CultureInfo)" argnames="culture" returntype="System.String" />
-        <method name="Trim()" argnames="" returntype="System.String" />
-        <method name="Insert(System.Int32, System.String)" argnames="startIndex, value" returntype="System.String" />
-        <method name="Replace(System.Char, System.Char)" argnames="oldChar, newChar" returntype="System.String" />
-        <method name="Replace(System.String, System.String)" argnames="oldValue, newValue" returntype="System.String" />
-        <method name="Remove(System.Int32, System.Int32)" argnames="startIndex, count" returntype="System.String" />
-        <method name="Format(System.String, System.Object)" argnames="format, arg0" returntype="System.String" />
-        <method name="Format(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.String" />
-        <method name="Format(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.String" />
-        <method name="Format(System.String, System.Object[])" argnames="format, args" returntype="System.String" />
-        <method name="Format(System.IFormatProvider, System.String, System.Object[])" argnames="provider, format, args" returntype="System.String" />
-        <method name="Copy(System.String)" argnames="str" returntype="System.String" />
-        <method name="Concat(System.Object)" argnames="arg0" returntype="System.String" />
-        <method name="Concat(System.Object, System.Object)" argnames="arg0, arg1" returntype="System.String" />
-        <method name="Concat(System.Object, System.Object, System.Object)" argnames="arg0, arg1, arg2" returntype="System.String" />
-        <method name="Concat(System.Object, System.Object, System.Object, System.Object)" argnames="arg0, arg1, arg2, arg3" returntype="System.String" />
-        <method name="Concat(System.Object[])" argnames="args" returntype="System.String" />
-        <method name="Concat(System.String, System.String)" argnames="str0, str1" returntype="System.String" />
-        <method name="Concat(System.String, System.String, System.String)" argnames="str0, str1, str2" returntype="System.String" />
-        <method name="Concat(System.String, System.String, System.String, System.String)" argnames="str0, str1, str2, str3" returntype="System.String" />
-        <method name="Concat(System.String[])" argnames="values" returntype="System.String" />
-        <method name="Intern(System.String)" argnames="str" returntype="System.String" />
-        <method name="IsInterned(System.String)" argnames="str" returntype="System.String" />
-        <method name="GetEnumerator()" argnames="" returntype="System.CharEnumerator" />
-        <operator name="op_Equality(System.String, System.String)" argnames="a, b" />
-        <operator name="op_Inequality(System.String, System.String)" argnames="a, b" />
-    </class>
-    <class name="Exception" namespace="System">
-        <constructor name="Exception()" argnames="" />
-        <constructor name="Exception(System.String)" argnames="message" />
-        <constructor name="Exception(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="Exception(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" propertytype="System.String" />
-        <property name="InnerException" propertytype="System.Exception" />
-        <property name="TargetSite" propertytype="System.Reflection.MethodBase" />
-        <property name="StackTrace" propertytype="System.String" />
-        <property name="HelpLink" propertytype="System.String" />
-        <property name="Source" propertytype="System.String" />
-        <property name="HResult" propertytype="System.Int32" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetBaseException()" argnames="" returntype="System.Exception" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="ValueType" namespace="System">
-        <constructor name="ValueType()" argnames="" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="SystemException" namespace="System">
-        <constructor name="SystemException()" argnames="" />
-        <constructor name="SystemException(System.String)" argnames="message" />
-        <constructor name="SystemException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="SystemException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="OutOfMemoryException" namespace="System">
-        <constructor name="OutOfMemoryException()" argnames="" />
-        <constructor name="OutOfMemoryException(System.String)" argnames="message" />
-        <constructor name="OutOfMemoryException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="OutOfMemoryException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="StackOverflowException" namespace="System">
-        <constructor name="StackOverflowException()" argnames="" />
-        <constructor name="StackOverflowException(System.String)" argnames="message" />
-        <constructor name="StackOverflowException(System.String, System.Exception)" argnames="message, innerException" />
-    </class>
-    <class name="ExecutionEngineException" namespace="System">
-        <constructor name="ExecutionEngineException()" argnames="" />
-        <constructor name="ExecutionEngineException(System.String)" argnames="message" />
-        <constructor name="ExecutionEngineException(System.String, System.Exception)" argnames="message, innerException" />
-    </class>
-    <class name="Delegate" namespace="System">
-        <constructor name="Delegate(System.Object, System.String)" argnames="target, method" />
-        <constructor name="Delegate(System.Type, System.String)" argnames="target, method" />
-        <property name="Method" propertytype="System.Reflection.MethodInfo" />
-        <property name="Target" propertytype="System.Object" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="RemoveImpl(System.Delegate)" argnames="d" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="d" returntype="System.Delegate" />
-        <method name="GetMethodImpl()" argnames="" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInvocationList()" argnames="" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" returntype="System.Object" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="DynamicInvoke(System.Object[])" argnames="args" returntype="System.Object" />
-        <method name="Combine(System.Delegate, System.Delegate)" argnames="a, b" returntype="System.Delegate" />
-        <method name="Combine(System.Delegate[])" argnames="delegates" returntype="System.Delegate" />
-        <method name="Remove(System.Delegate, System.Delegate)" argnames="source, value" returntype="System.Delegate" />
-        <method name="CreateDelegate(System.Type, System.Object, System.String)" argnames="type, target, method" returntype="System.Delegate" />
-        <method name="CreateDelegate(System.Type, System.Object, System.String, System.Boolean)" argnames="type, target, method, ignoreCase" returntype="System.Delegate" />
-        <method name="CreateDelegate(System.Type, System.Type, System.String)" argnames="type, target, method" returntype="System.Delegate" />
-        <method name="CreateDelegate(System.Type, System.Reflection.MethodInfo)" argnames="type, method" returntype="System.Delegate" />
-        <operator name="op_Equality(System.Delegate, System.Delegate)" argnames="d1, d2" />
-        <operator name="op_Inequality(System.Delegate, System.Delegate)" argnames="d1, d2" />
-    </class>
-    <class name="MemberAccessException" namespace="System">
-        <constructor name="MemberAccessException()" argnames="" />
-        <constructor name="MemberAccessException(System.String)" argnames="message" />
-        <constructor name="MemberAccessException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="MemberAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Activator" namespace="System">
-        <method name="CreateInstance(System.Type, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="type, bindingAttr, binder, args, culture" returntype="System.Object" />
-        <method name="CreateInstance(System.Type, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])" argnames="type, bindingAttr, binder, args, culture, activationAttributes" returntype="System.Object" />
-        <method name="CreateInstance(System.Type, System.Object[])" argnames="type, args" returntype="System.Object" />
-        <method name="CreateInstance(System.Type, System.Object[], System.Object[])" argnames="type, args, activationAttributes" returntype="System.Object" />
-        <method name="CreateInstance(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="CreateInstance(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.Type, System.Boolean)" argnames="type, nonPublic" returntype="System.Object" />
-        <method name="CreateInstanceFrom(System.String, System.String)" argnames="assemblyFile, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstanceFrom(System.String, System.String, System.Object[])" argnames="assemblyFile, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityInfo" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyFile, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityInfo" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateComInstanceFrom(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="GetObject(System.Type, System.String)" argnames="type, url" returntype="System.Object" />
-        <method name="GetObject(System.Type, System.String, System.Object)" argnames="type, url, state" returntype="System.Object" />
-    </class>
-    <class name="ApplicationException" namespace="System">
-        <constructor name="ApplicationException()" argnames="" />
-        <constructor name="ApplicationException(System.String)" argnames="message" />
-        <constructor name="ApplicationException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="ApplicationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="EventArgs" namespace="System">
-        <constructor name="EventArgs()" argnames="" />
-        <field name="Empty" />
-    </class>
-    <class name="ResolveEventArgs" namespace="System">
-        <constructor name="ResolveEventArgs(System.String)" argnames="name" />
-        <property name="Name" propertytype="System.String" />
-    </class>
-    <class name="AssemblyLoadEventArgs" namespace="System">
-        <constructor name="AssemblyLoadEventArgs(System.Reflection.Assembly)" argnames="loadedAssembly" />
-        <property name="LoadedAssembly" propertytype="System.Reflection.Assembly" />
-    </class>
-    <class name="MarshalByRefObject" namespace="System">
-        <constructor name="MarshalByRefObject()" argnames="" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
-        <method name="GetLifetimeService()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="AppDomain" namespace="System">
-        <property name="CurrentDomain" propertytype="System.AppDomain" />
-        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
-        <property name="InternalEvidence" propertytype="System.Security.Policy.Evidence" />
-        <property name="FriendlyName" propertytype="System.String" />
-        <property name="BaseDirectory" propertytype="System.String" />
-        <property name="RelativeSearchPath" propertytype="System.String" />
-        <property name="ShadowCopyFiles" propertytype="System.Boolean" />
-        <property name="DynamicDirectory" propertytype="System.String" />
-        <property name="RemotingData" propertytype="System.Runtime.Remoting.DomainSpecificRemotingData" />
-        <property name="FusionStore" propertytype="System.AppDomainSetup" />
-        <property name="LocalStore" propertytype="System.Collections.Hashtable" />
-        <property name="SetupInformation" propertytype="System.AppDomainSetup" />
-        <method name="DoCallBack(System.CrossAppDomainDelegate)" argnames="callBackDelegate" returntype="System.Void" />
-        <method name="SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy)" argnames="policy" returntype="System.Void" />
-        <method name="SetThreadPrincipal(System.Security.Principal.IPrincipal)" argnames="principal" returntype="System.Void" />
-        <method name="SetAppDomainPolicy(System.Security.Policy.PolicyLevel)" argnames="domainPolicy" returntype="System.Void" />
-        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
-        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
-        <method name="SetCachePath(System.String)" argnames="path" returntype="System.Void" />
-        <method name="ClearShadowCopyPath()" argnames="" returntype="System.Void" />
-        <method name="SetShadowCopyPath(System.String)" argnames="path" returntype="System.Void" />
-        <method name="ClearPrivatePath()" argnames="" returntype="System.Void" />
-        <method name="AppendPrivatePath(System.String)" argnames="path" returntype="System.Void" />
-        <method name="GetAssemblies()" argnames="" returntype="System.Reflection.Assembly[]" />
-        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[])" argnames="assemblyFile, assemblySecurity, args" returntype="System.Int32" />
-        <method name="ExecuteAssembly(System.String)" argnames="assemblyFile" returntype="System.Int32" />
-        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence)" argnames="assemblyFile, assemblySecurity" returntype="System.Int32" />
-        <method name="Load(System.String, System.Security.Policy.Evidence)" argnames="assemblyString, assemblySecurity" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)" argnames="assemblyRef, assemblySecurity" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)" argnames="rawAssembly, rawSymbolStore, securityEvidence" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[], System.Byte[])" argnames="rawAssembly, rawSymbolStore" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[])" argnames="rawAssembly" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.String)" argnames="assemblyString" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Reflection.AssemblyName)" argnames="assemblyRef" returntype="System.Reflection.Assembly" />
-        <method name="CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyFile, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstanceFrom(System.String, System.String, System.Object[])" argnames="assemblyFile, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstanceFrom(System.String, System.String)" argnames="assemblyFile, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions, isSynchronized" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence)" argnames="name, access, dir, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence)" argnames="name, access, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String)" argnames="name, access, dir" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)" argnames="name, access" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="GetType()" argnames="" returntype="System.Type" />
-        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="CreateComInstanceFrom(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="IsFinalizingForUnload()" argnames="" returntype="System.Boolean" />
-        <method name="GetCurrentThreadId()" argnames="" returntype="System.Int32" />
-        <method name="Unload(System.AppDomain)" argnames="domain" returntype="System.Void" />
-        <method name="CreateDomain(System.String, System.Security.Policy.Evidence)" argnames="friendlyName, securityInfo" returntype="System.AppDomain" />
-        <method name="CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean)" argnames="friendlyName, securityInfo, appBasePath, appRelativeSearchPath, shadowCopyFiles" returntype="System.AppDomain" />
-        <method name="CreateDomain(System.String)" argnames="friendlyName" returntype="System.AppDomain" />
-        <method name="CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup)" argnames="friendlyName, securityInfo, info" returntype="System.AppDomain" />
-        <method name="SetShadowCopyFiles()" argnames="" returntype="System.Void" />
-        <method name="SetDynamicBase(System.String)" argnames="path" returntype="System.Void" />
-        <method name="CreateInstanceAndUnwrap(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Object" />
-        <method name="CreateInstanceAndUnwrap(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Object" />
-        <method name="CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Object" />
-        <method name="CreateInstanceFromAndUnwrap(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Object" />
-        <method name="CreateInstanceFromAndUnwrap(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Object" />
-        <method name="CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Object" />
-        <event name="DomainUnload" />
-        <event name="AssemblyLoad" />
-        <event name="ProcessExit" />
-        <event name="TypeResolve" />
-        <event name="ResourceResolve" />
-        <event name="AssemblyResolve" />
-        <event name="UnhandledException" />
-    </class>
-    <class name="Attribute" namespace="System">
-        <constructor name="Attribute()" argnames="" />
-        <property name="TypeId" propertytype="System.Object" />
-        <method name="IsDefaultAttribute()" argnames="" returntype="System.Boolean" />
-        <method name="Match(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Reflection.MemberInfo, System.Type)" argnames="element, type" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.MemberInfo, System.Type, System.Boolean)" argnames="element, type, inherit" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.MemberInfo)" argnames="element" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.MemberInfo, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.ParameterInfo, System.Type)" argnames="element, attributeType" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.ParameterInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Module, System.Type)" argnames="element, attributeType" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Module, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Assembly, System.Type)" argnames="element, attributeType" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Assembly, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.ParameterInfo)" argnames="element" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.ParameterInfo, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Module)" argnames="element" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Module, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Assembly)" argnames="element" returntype="System.Attribute[]" />
-        <method name="GetCustomAttributes(System.Reflection.Assembly, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
-        <method name="IsDefined(System.Reflection.MemberInfo, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
-        <method name="IsDefined(System.Reflection.MemberInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
-        <method name="IsDefined(System.Reflection.ParameterInfo, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
-        <method name="IsDefined(System.Reflection.ParameterInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
-        <method name="IsDefined(System.Reflection.Module, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
-        <method name="IsDefined(System.Reflection.Module, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
-        <method name="IsDefined(System.Reflection.Assembly, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
-        <method name="IsDefined(System.Reflection.Assembly, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttribute(System.Reflection.MemberInfo, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
-        <method name="GetCustomAttribute(System.Reflection.MemberInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
-        <method name="GetCustomAttribute(System.Reflection.ParameterInfo, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
-        <method name="GetCustomAttribute(System.Reflection.ParameterInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
-        <method name="GetCustomAttribute(System.Reflection.Module, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
-        <method name="GetCustomAttribute(System.Reflection.Module, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
-        <method name="GetCustomAttribute(System.Reflection.Assembly, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
-        <method name="GetCustomAttribute(System.Reflection.Assembly, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
-    </class>
-    <class name="LoaderOptimizationAttribute" namespace="System">
-        <constructor name="LoaderOptimizationAttribute(System.Byte)" argnames="value" />
-        <constructor name="LoaderOptimizationAttribute(System.LoaderOptimization)" argnames="value" />
-        <property name="Value" propertytype="System.LoaderOptimization" />
-    </class>
-    <class name="AppDomainUnloadedException" namespace="System">
-        <constructor name="AppDomainUnloadedException()" argnames="" />
-        <constructor name="AppDomainUnloadedException(System.String)" argnames="message" />
-        <constructor name="AppDomainUnloadedException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="AppDomainUnloadedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="ArgumentException" namespace="System">
-        <constructor name="ArgumentException()" argnames="" />
-        <constructor name="ArgumentException(System.String)" argnames="message" />
-        <constructor name="ArgumentException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="ArgumentException(System.String, System.String, System.Exception)" argnames="message, paramName, innerException" />
-        <constructor name="ArgumentException(System.String, System.String)" argnames="message, paramName" />
-        <constructor name="ArgumentException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" propertytype="System.String" />
-        <property name="ParamName" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="ArgumentNullException" namespace="System">
-        <constructor name="ArgumentNullException()" argnames="" />
-        <constructor name="ArgumentNullException(System.String)" argnames="paramName" />
-        <constructor name="ArgumentNullException(System.String, System.String)" argnames="paramName, message" />
-        <constructor name="ArgumentNullException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="NullMessage" propertytype="System.String" />
-    </class>
-    <class name="ArgumentOutOfRangeException" namespace="System">
-        <constructor name="ArgumentOutOfRangeException()" argnames="" />
-        <constructor name="ArgumentOutOfRangeException(System.String)" argnames="paramName" />
-        <constructor name="ArgumentOutOfRangeException(System.String, System.String)" argnames="paramName, message" />
-        <constructor name="ArgumentOutOfRangeException(System.String, System.Object, System.String)" argnames="paramName, actualValue, message" />
-        <constructor name="ArgumentOutOfRangeException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="RangeMessage" propertytype="System.String" />
-        <property name="Message" propertytype="System.String" />
-        <property name="ActualValue" propertytype="System.Object" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="ArithmeticException" namespace="System">
-        <constructor name="ArithmeticException()" argnames="" />
-        <constructor name="ArithmeticException(System.String)" argnames="message" />
-        <constructor name="ArithmeticException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="ArithmeticException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="ArrayTypeMismatchException" namespace="System">
-        <constructor name="ArrayTypeMismatchException()" argnames="" />
-        <constructor name="ArrayTypeMismatchException(System.String)" argnames="message" />
-        <constructor name="ArrayTypeMismatchException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="ArrayTypeMismatchException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="AttributeUsageAttribute" namespace="System">
-        <constructor name="AttributeUsageAttribute(System.AttributeTargets)" argnames="validOn" />
-        <property name="ValidOn" propertytype="System.AttributeTargets" />
-        <property name="AllowMultiple" propertytype="System.Boolean" />
-        <property name="Inherited" propertytype="System.Boolean" />
-    </class>
-    <class name="BadImageFormatException" namespace="System">
-        <constructor name="BadImageFormatException()" argnames="" />
-        <constructor name="BadImageFormatException(System.String)" argnames="message" />
-        <constructor name="BadImageFormatException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="BadImageFormatException(System.String, System.String)" argnames="message, fileName" />
-        <constructor name="BadImageFormatException(System.String, System.String, System.Exception)" argnames="message, fileName, inner" />
-        <constructor name="BadImageFormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" propertytype="System.String" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="FusionLog" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="BitConverter" namespace="System">
-        <field name="IsLittleEndian" />
-        <method name="GetBytes(System.Boolean)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Char)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Int16)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Int32)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Int64)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.UInt16)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.UInt32)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.UInt64)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Single)" argnames="value" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Double)" argnames="value" returntype="System.Byte[]" />
-        <method name="ToChar(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Char" />
-        <method name="ToInt16(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Int16" />
-        <method name="ToInt32(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
-        <method name="ToInt64(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Int64" />
-        <method name="ToUInt16(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.UInt16" />
-        <method name="ToUInt32(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.UInt32" />
-        <method name="ToUInt64(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.UInt64" />
-        <method name="ToSingle(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Single" />
-        <method name="ToDouble(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Double" />
-        <method name="ToString(System.Byte[], System.Int32, System.Int32)" argnames="value, startIndex, length" returntype="System.String" />
-        <method name="ToString(System.Byte[])" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.String" />
-        <method name="ToBoolean(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Boolean" />
-        <method name="DoubleToInt64Bits(System.Double)" argnames="value" returntype="System.Int64" />
-        <method name="Int64BitsToDouble(System.Int64)" argnames="value" returntype="System.Double" />
-    </class>
-    <class name="Buffer" namespace="System">
-        <method name="BlockCopy(System.Array, System.Int32, System.Array, System.Int32, System.Int32)" argnames="src, srcOffset, dst, dstOffset, count" returntype="System.Void" />
-        <method name="GetByte(System.Array, System.Int32)" argnames="array, index" returntype="System.Byte" />
-        <method name="SetByte(System.Array, System.Int32, System.Byte)" argnames="array, index, value" returntype="System.Void" />
-        <method name="ByteLength(System.Array)" argnames="array" returntype="System.Int32" />
-    </class>
-    <class name="CannotUnloadAppDomainException" namespace="System">
-        <constructor name="CannotUnloadAppDomainException()" argnames="" />
-        <constructor name="CannotUnloadAppDomainException(System.String)" argnames="message" />
-        <constructor name="CannotUnloadAppDomainException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="CannotUnloadAppDomainException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="CharEnumerator" namespace="System">
-        <property name="Current" propertytype="System.Char" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="CLSCompliantAttribute" namespace="System">
-        <constructor name="CLSCompliantAttribute(System.Boolean)" argnames="isCompliant" />
-        <property name="IsCompliant" propertytype="System.Boolean" />
-    </class>
-    <class name="TypeUnloadedException" namespace="System">
-        <constructor name="TypeUnloadedException()" argnames="" />
-        <constructor name="TypeUnloadedException(System.String)" argnames="message" />
-        <constructor name="TypeUnloadedException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="TypeUnloadedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="__ComObject" namespace="System" />
-    <class name="Console" namespace="System">
-        <property name="Error" propertytype="System.IO.TextWriter" />
-        <property name="In" propertytype="System.IO.TextReader" />
-        <property name="Out" propertytype="System.IO.TextWriter" />
-        <method name="OpenStandardError()" argnames="" returntype="System.IO.Stream" />
-        <method name="OpenStandardError(System.Int32)" argnames="bufferSize" returntype="System.IO.Stream" />
-        <method name="OpenStandardInput()" argnames="" returntype="System.IO.Stream" />
-        <method name="OpenStandardInput(System.Int32)" argnames="bufferSize" returntype="System.IO.Stream" />
-        <method name="OpenStandardOutput()" argnames="" returntype="System.IO.Stream" />
-        <method name="OpenStandardOutput(System.Int32)" argnames="bufferSize" returntype="System.IO.Stream" />
-        <method name="SetIn(System.IO.TextReader)" argnames="newIn" returntype="System.Void" />
-        <method name="SetOut(System.IO.TextWriter)" argnames="newOut" returntype="System.Void" />
-        <method name="SetError(System.IO.TextWriter)" argnames="newError" returntype="System.Void" />
-        <method name="Read()" argnames="" returntype="System.Int32" />
-        <method name="ReadLine()" argnames="" returntype="System.String" />
-        <method name="WriteLine()" argnames="" returntype="System.Void" />
-        <method name="WriteLine(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Char[])" argnames="buffer" returntype="System.Void" />
-        <method name="WriteLine(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteLine(System.Decimal)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Double)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Single)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.UInt32)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.UInt64)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2, arg3" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
-        <method name="Write(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
-        <method name="Write(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
-        <method name="Write(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
-        <method name="Write(System.String, System.Object, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2, arg3" returntype="System.Void" />
-        <method name="Write(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
-        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
-        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Decimal)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt32)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt64)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
-    </class>
-    <class name="ContextMarshalException" namespace="System">
-        <constructor name="ContextMarshalException()" argnames="" />
-        <constructor name="ContextMarshalException(System.String)" argnames="message" />
-        <constructor name="ContextMarshalException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="ContextMarshalException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Convert" namespace="System">
-        <field name="DBNull" />
-        <method name="GetTypeCode(System.Object)" argnames="value" returntype="System.TypeCode" />
-        <method name="IsDBNull(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ChangeType(System.Object, System.TypeCode)" argnames="value, typeCode" returntype="System.Object" />
-        <method name="ChangeType(System.Object, System.TypeCode, System.IFormatProvider)" argnames="value, typeCode, provider" returntype="System.Object" />
-        <method name="ChangeType(System.Object, System.Type)" argnames="value, conversionType" returntype="System.Object" />
-        <method name="ChangeType(System.Object, System.Type, System.IFormatProvider)" argnames="value, conversionType, provider" returntype="System.Object" />
-        <method name="ToBoolean(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Boolean)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.SByte)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Char)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Byte)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Int16)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.UInt16)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Int32)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.UInt32)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Int64)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.UInt64)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Single)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Double)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.Decimal)" argnames="value" returntype="System.Boolean" />
-        <method name="ToBoolean(System.DateTime)" argnames="value" returntype="System.Boolean" />
-        <method name="ToChar(System.Object)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Char" />
-        <method name="ToChar(System.Boolean)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Char)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.SByte)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Byte)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Int16)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.UInt16)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Int32)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.UInt32)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Int64)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.UInt64)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.String)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Char" />
-        <method name="ToChar(System.Single)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Double)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.Decimal)" argnames="value" returntype="System.Char" />
-        <method name="ToChar(System.DateTime)" argnames="value" returntype="System.Char" />
-        <method name="ToSByte(System.Object)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.SByte" />
-        <method name="ToSByte(System.Boolean)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.SByte)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Char)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Byte)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Int16)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.UInt16)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Int32)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.UInt32)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Int64)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.UInt64)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Single)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Double)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.Decimal)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.String)" argnames="value" returntype="System.SByte" />
-        <method name="ToSByte(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.SByte" />
-        <method name="ToSByte(System.DateTime)" argnames="value" returntype="System.SByte" />
-        <method name="ToByte(System.Object)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Byte" />
-        <method name="ToByte(System.Boolean)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Byte)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Char)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.SByte)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Int16)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.UInt16)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Int32)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.UInt32)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Int64)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.UInt64)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Single)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Double)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.Decimal)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.String)" argnames="value" returntype="System.Byte" />
-        <method name="ToByte(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Byte" />
-        <method name="ToByte(System.DateTime)" argnames="value" returntype="System.Byte" />
-        <method name="ToInt16(System.Object)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Int16" />
-        <method name="ToInt16(System.Boolean)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Char)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.SByte)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Byte)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.UInt16)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Int32)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.UInt32)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Int16)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Int64)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.UInt64)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Single)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Double)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.Decimal)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.String)" argnames="value" returntype="System.Int16" />
-        <method name="ToInt16(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Int16" />
-        <method name="ToInt16(System.DateTime)" argnames="value" returntype="System.Int16" />
-        <method name="ToUInt16(System.Object)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Boolean)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Char)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.SByte)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Byte)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Int16)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Int32)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.UInt16)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.UInt32)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Int64)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.UInt64)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Single)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Double)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.Decimal)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.String)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt16(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt16" />
-        <method name="ToUInt16(System.DateTime)" argnames="value" returntype="System.UInt16" />
-        <method name="ToInt32(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Int32" />
-        <method name="ToInt32(System.Boolean)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Char)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.SByte)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Byte)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Int16)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.UInt16)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.UInt32)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Int32)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Int64)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.UInt64)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Single)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Double)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.Decimal)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.String)" argnames="value" returntype="System.Int32" />
-        <method name="ToInt32(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Int32" />
-        <method name="ToInt32(System.DateTime)" argnames="value" returntype="System.Int32" />
-        <method name="ToUInt32(System.Object)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Boolean)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Char)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.SByte)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Byte)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Int16)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.UInt16)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Int32)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.UInt32)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Int64)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.UInt64)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Single)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Double)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.Decimal)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.String)" argnames="value" returntype="System.UInt32" />
-        <method name="ToUInt32(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt32" />
-        <method name="ToUInt32(System.DateTime)" argnames="value" returntype="System.UInt32" />
-        <method name="ToInt64(System.Object)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Int64" />
-        <method name="ToInt64(System.Boolean)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Char)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.SByte)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Byte)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Int16)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.UInt16)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Int32)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.UInt32)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.UInt64)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Int64)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Single)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Double)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.Decimal)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.String)" argnames="value" returntype="System.Int64" />
-        <method name="ToInt64(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Int64" />
-        <method name="ToInt64(System.DateTime)" argnames="value" returntype="System.Int64" />
-        <method name="ToUInt64(System.Object)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Boolean)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Char)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.SByte)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Byte)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Int16)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.UInt16)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Int32)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.UInt32)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Int64)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.UInt64)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Single)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Double)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.Decimal)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.String)" argnames="value" returntype="System.UInt64" />
-        <method name="ToUInt64(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt64" />
-        <method name="ToUInt64(System.DateTime)" argnames="value" returntype="System.UInt64" />
-        <method name="ToSingle(System.Object)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Single" />
-        <method name="ToSingle(System.SByte)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Byte)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Char)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Int16)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.UInt16)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Int32)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.UInt32)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Int64)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.UInt64)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Single)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Double)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.Decimal)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.String)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Single" />
-        <method name="ToSingle(System.Boolean)" argnames="value" returntype="System.Single" />
-        <method name="ToSingle(System.DateTime)" argnames="value" returntype="System.Single" />
-        <method name="ToDouble(System.Object)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Double" />
-        <method name="ToDouble(System.SByte)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Byte)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Int16)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Char)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.UInt16)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Int32)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.UInt32)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Int64)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.UInt64)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Single)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Double)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.Decimal)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.String)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Double" />
-        <method name="ToDouble(System.Boolean)" argnames="value" returntype="System.Double" />
-        <method name="ToDouble(System.DateTime)" argnames="value" returntype="System.Double" />
-        <method name="ToDecimal(System.Object)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Decimal" />
-        <method name="ToDecimal(System.SByte)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Byte)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Char)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Int16)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.UInt16)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Int32)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.UInt32)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Int64)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.UInt64)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Single)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Double)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.String)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Decimal)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.Boolean)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDecimal(System.DateTime)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDateTime(System.DateTime)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Object)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.DateTime" />
-        <method name="ToDateTime(System.String)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.DateTime" />
-        <method name="ToDateTime(System.SByte)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Byte)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Int16)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.UInt16)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Int32)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.UInt32)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Int64)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.UInt64)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Boolean)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Char)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Single)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Double)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Decimal)" argnames="value" returntype="System.DateTime" />
-        <method name="ToString(System.Object)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Boolean)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Boolean, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Char)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Char, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.SByte)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.SByte, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Byte)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Byte, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Int16)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Int16, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.UInt16)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.UInt16, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Int32)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Int32, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.UInt32)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.UInt32, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Int64)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Int64, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.UInt64)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.UInt64, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Single)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Single, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Double)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Double, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.Decimal)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.Decimal, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.DateTime)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.DateTime, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="value" returntype="System.String" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
-        <method name="ToByte(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Byte" />
-        <method name="ToSByte(System.String, System.Int32)" argnames="value, fromBase" returntype="System.SByte" />
-        <method name="ToInt16(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Int16" />
-        <method name="ToUInt16(System.String, System.Int32)" argnames="value, fromBase" returntype="System.UInt16" />
-        <method name="ToInt32(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Int32" />
-        <method name="ToUInt32(System.String, System.Int32)" argnames="value, fromBase" returntype="System.UInt32" />
-        <method name="ToInt64(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Int64" />
-        <method name="ToUInt64(System.String, System.Int32)" argnames="value, fromBase" returntype="System.UInt64" />
-        <method name="ToString(System.Byte, System.Int32)" argnames="value, toBase" returntype="System.String" />
-        <method name="ToString(System.Int16, System.Int32)" argnames="value, toBase" returntype="System.String" />
-        <method name="ToString(System.Int32, System.Int32)" argnames="value, toBase" returntype="System.String" />
-        <method name="ToString(System.Int64, System.Int32)" argnames="value, toBase" returntype="System.String" />
-        <method name="ToBase64String(System.Byte[])" argnames="inArray" returntype="System.String" />
-        <method name="ToBase64String(System.Byte[], System.Int32, System.Int32)" argnames="inArray, offset, length" returntype="System.String" />
-        <method name="FromBase64String(System.String)" argnames="s" returntype="System.Byte[]" />
-        <method name="ToBase64CharArray(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="inArray, offsetIn, length, outArray, offsetOut" returntype="System.Int32" />
-        <method name="FromBase64CharArray(System.Char[], System.Int32, System.Int32)" argnames="inArray, offset, length" returntype="System.Byte[]" />
-    </class>
-    <class name="ContextBoundObject" namespace="System">
-        <constructor name="ContextBoundObject()" argnames="" />
-    </class>
-    <class name="ContextStaticAttribute" namespace="System">
-        <constructor name="ContextStaticAttribute()" argnames="" />
-    </class>
-    <class name="TimeZone" namespace="System">
-        <constructor name="TimeZone()" argnames="" />
-        <property name="CurrentTimeZone" propertytype="System.TimeZone" />
-        <property name="StandardName" propertytype="System.String" />
-        <property name="DaylightName" propertytype="System.String" />
-        <method name="IsDaylightSavingTime(System.DateTime)" argnames="time" returntype="System.Boolean" />
-        <method name="GetDaylightChanges(System.Int32)" argnames="year" returntype="System.Globalization.DaylightTime" />
-        <method name="ToLocalTime(System.DateTime)" argnames="time" returntype="System.DateTime" />
-        <method name="ToUniversalTime(System.DateTime)" argnames="time" returntype="System.DateTime" />
-        <method name="GetUtcOffset(System.DateTime)" argnames="time" returntype="System.TimeSpan" />
-        <method name="IsDaylightSavingTime(System.DateTime, System.Globalization.DaylightTime)" argnames="time, daylightTimes" returntype="System.Boolean" />
-    </class>
-    <class name="DBNull" namespace="System">
-        <field name="Value" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="DivideByZeroException" namespace="System">
-        <constructor name="DivideByZeroException()" argnames="" />
-        <constructor name="DivideByZeroException(System.String)" argnames="message" />
-        <constructor name="DivideByZeroException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="DivideByZeroException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="DuplicateWaitObjectException" namespace="System">
-        <constructor name="DuplicateWaitObjectException()" argnames="" />
-        <constructor name="DuplicateWaitObjectException(System.String)" argnames="parameterName" />
-        <constructor name="DuplicateWaitObjectException(System.String, System.String)" argnames="parameterName, message" />
-        <constructor name="DuplicateWaitObjectException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="DuplicateWaitObjectMessage" propertytype="System.String" />
-    </class>
-    <class name="TypeLoadException" namespace="System">
-        <constructor name="TypeLoadException()" argnames="" />
-        <constructor name="TypeLoadException(System.String)" argnames="message" />
-        <constructor name="TypeLoadException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="TypeLoadException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="EntryPointNotFoundException" namespace="System">
-        <constructor name="EntryPointNotFoundException()" argnames="" />
-        <constructor name="EntryPointNotFoundException(System.String)" argnames="message" />
-        <constructor name="EntryPointNotFoundException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="EntryPointNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="DllNotFoundException" namespace="System">
-        <constructor name="DllNotFoundException()" argnames="" />
-        <constructor name="DllNotFoundException(System.String)" argnames="message" />
-        <constructor name="DllNotFoundException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="DllNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Environment" namespace="System">
-        <enum name="SpecialFolder" namespace="System">
-            <field name="ApplicationData" />
-            <field name="CommonApplicationData" />
-            <field name="LocalApplicationData" />
-            <field name="Cookies" />
-            <field name="Favorites" />
-            <field name="History" />
-            <field name="InternetCache" />
-            <field name="Programs" />
-            <field name="Recent" />
-            <field name="SendTo" />
-            <field name="StartMenu" />
-            <field name="Startup" />
-            <field name="System" />
-            <field name="Templates" />
-            <field name="DesktopDirectory" />
-            <field name="Personal" />
-            <field name="ProgramFiles" />
-            <field name="CommonProgramFiles" />
-        </enum>
-        <property name="TickCount" propertytype="System.Int32" />
-        <property name="ExitCode" propertytype="System.Int32" />
-        <property name="CommandLine" propertytype="System.String" />
-        <property name="CurrentDirectory" propertytype="System.String" />
-        <property name="SystemDirectory" propertytype="System.String" />
-        <property name="MachineName" propertytype="System.String" />
-        <property name="NewLine" propertytype="System.String" />
-        <property name="Version" propertytype="System.Version" />
-        <property name="WorkingSet" propertytype="System.Int64" />
-        <property name="OSVersion" propertytype="System.OperatingSystem" />
-        <property name="OSInfo" propertytype="System.Environment+OSName" />
-        <property name="StackTrace" propertytype="System.String" />
-        <property name="HasShutdownStarted" propertytype="System.Boolean" />
-        <property name="UserName" propertytype="System.String" />
-        <property name="UserInteractive" propertytype="System.Boolean" />
-        <property name="UserDomainName" propertytype="System.String" />
-        <method name="Exit(System.Int32)" argnames="exitCode" returntype="System.Void" />
-        <method name="ExpandEnvironmentVariables(System.String)" argnames="name" returntype="System.String" />
-        <method name="GetCommandLineArgs()" argnames="" returntype="System.String[]" />
-        <method name="GetEnvironmentVariable(System.String)" argnames="variable" returntype="System.String" />
-        <method name="GetEnvironmentVariables()" argnames="" returntype="System.Collections.IDictionary" />
-        <method name="GetLogicalDrives()" argnames="" returntype="System.String[]" />
-        <method name="GetFolderPath(System.Environment.SpecialFolder)" argnames="folder" returntype="System.String" />
-    </class>
-    <class name="FieldAccessException" namespace="System">
-        <constructor name="FieldAccessException()" argnames="" />
-        <constructor name="FieldAccessException(System.String)" argnames="message" />
-        <constructor name="FieldAccessException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="FieldAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="FlagsAttribute" namespace="System">
-        <constructor name="FlagsAttribute()" argnames="" />
-    </class>
-    <class name="FormatException" namespace="System">
-        <constructor name="FormatException()" argnames="" />
-        <constructor name="FormatException(System.String)" argnames="message" />
-        <constructor name="FormatException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="FormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="GC" namespace="System">
-        <property name="MaxGeneration" propertytype="System.Int32" />
-        <method name="GetGeneration(System.Object)" argnames="obj" returntype="System.Int32" />
-        <method name="Collect(System.Int32)" argnames="generation" returntype="System.Void" />
-        <method name="Collect()" argnames="" returntype="System.Void" />
-        <method name="KeepAlive(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="GetGeneration(System.WeakReference)" argnames="wo" returntype="System.Int32" />
-        <method name="WaitForPendingFinalizers()" argnames="" returntype="System.Void" />
-        <method name="SuppressFinalize(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="ReRegisterForFinalize(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="GetTotalMemory(System.Boolean)" argnames="forceFullCollection" returntype="System.Int64" />
-    </class>
-    <class name="IndexOutOfRangeException" namespace="System">
-        <constructor name="IndexOutOfRangeException()" argnames="" />
-        <constructor name="IndexOutOfRangeException(System.String)" argnames="message" />
-        <constructor name="IndexOutOfRangeException(System.String, System.Exception)" argnames="message, innerException" />
-    </class>
-    <class name="InvalidCastException" namespace="System">
-        <constructor name="InvalidCastException()" argnames="" />
-        <constructor name="InvalidCastException(System.String)" argnames="message" />
-        <constructor name="InvalidCastException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="InvalidCastException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="InvalidOperationException" namespace="System">
-        <constructor name="InvalidOperationException()" argnames="" />
-        <constructor name="InvalidOperationException(System.String)" argnames="message" />
-        <constructor name="InvalidOperationException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="InvalidOperationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="InvalidProgramException" namespace="System">
-        <constructor name="InvalidProgramException()" argnames="" />
-        <constructor name="InvalidProgramException(System.String)" argnames="message" />
-        <constructor name="InvalidProgramException(System.String, System.Exception)" argnames="message, inner" />
-    </class>
-    <class name="LocalDataStoreSlot" namespace="System">
-        <property name="Manager" propertytype="System.LocalDataStoreMgr" />
-        <property name="Slot" propertytype="System.Int32" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="Math" namespace="System">
-        <field name="PI" />
-        <field name="E" />
-        <method name="Acos(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Asin(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Atan(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Atan2(System.Double, System.Double)" argnames="y, x" returntype="System.Double" />
-        <method name="Cos(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Sin(System.Double)" argnames="a" returntype="System.Double" />
-        <method name="Tan(System.Double)" argnames="a" returntype="System.Double" />
-        <method name="Cosh(System.Double)" argnames="value" returntype="System.Double" />
-        <method name="Sinh(System.Double)" argnames="value" returntype="System.Double" />
-        <method name="Tanh(System.Double)" argnames="value" returntype="System.Double" />
-        <method name="Round(System.Double)" argnames="a" returntype="System.Double" />
-        <method name="Round(System.Double, System.Int32)" argnames="value, digits" returntype="System.Double" />
-        <method name="Round(System.Decimal)" argnames="d" returntype="System.Decimal" />
-        <method name="Round(System.Decimal, System.Int32)" argnames="d, decimals" returntype="System.Decimal" />
-        <method name="Ceiling(System.Double)" argnames="a" returntype="System.Double" />
-        <method name="Floor(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Sqrt(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Log(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Log10(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Exp(System.Double)" argnames="d" returntype="System.Double" />
-        <method name="Pow(System.Double, System.Double)" argnames="x, y" returntype="System.Double" />
-        <method name="IEEERemainder(System.Double, System.Double)" argnames="x, y" returntype="System.Double" />
-        <method name="Abs(System.SByte)" argnames="value" returntype="System.SByte" />
-        <method name="Abs(System.Int16)" argnames="value" returntype="System.Int16" />
-        <method name="Abs(System.Int32)" argnames="value" returntype="System.Int32" />
-        <method name="Abs(System.Int64)" argnames="value" returntype="System.Int64" />
-        <method name="Abs(System.Single)" argnames="value" returntype="System.Single" />
-        <method name="Abs(System.Double)" argnames="value" returntype="System.Double" />
-        <method name="Abs(System.Decimal)" argnames="value" returntype="System.Decimal" />
-        <method name="Max(System.SByte, System.SByte)" argnames="val1, val2" returntype="System.SByte" />
-        <method name="Max(System.Byte, System.Byte)" argnames="val1, val2" returntype="System.Byte" />
-        <method name="Max(System.Int16, System.Int16)" argnames="val1, val2" returntype="System.Int16" />
-        <method name="Max(System.UInt16, System.UInt16)" argnames="val1, val2" returntype="System.UInt16" />
-        <method name="Max(System.Int32, System.Int32)" argnames="val1, val2" returntype="System.Int32" />
-        <method name="Max(System.UInt32, System.UInt32)" argnames="val1, val2" returntype="System.UInt32" />
-        <method name="Max(System.Int64, System.Int64)" argnames="val1, val2" returntype="System.Int64" />
-        <method name="Max(System.UInt64, System.UInt64)" argnames="val1, val2" returntype="System.UInt64" />
-        <method name="Max(System.Single, System.Single)" argnames="val1, val2" returntype="System.Single" />
-        <method name="Max(System.Double, System.Double)" argnames="val1, val2" returntype="System.Double" />
-        <method name="Max(System.Decimal, System.Decimal)" argnames="val1, val2" returntype="System.Decimal" />
-        <method name="Min(System.SByte, System.SByte)" argnames="val1, val2" returntype="System.SByte" />
-        <method name="Min(System.Byte, System.Byte)" argnames="val1, val2" returntype="System.Byte" />
-        <method name="Min(System.Int16, System.Int16)" argnames="val1, val2" returntype="System.Int16" />
-        <method name="Min(System.UInt16, System.UInt16)" argnames="val1, val2" returntype="System.UInt16" />
-        <method name="Min(System.Int32, System.Int32)" argnames="val1, val2" returntype="System.Int32" />
-        <method name="Min(System.UInt32, System.UInt32)" argnames="val1, val2" returntype="System.UInt32" />
-        <method name="Min(System.Int64, System.Int64)" argnames="val1, val2" returntype="System.Int64" />
-        <method name="Min(System.UInt64, System.UInt64)" argnames="val1, val2" returntype="System.UInt64" />
-        <method name="Min(System.Single, System.Single)" argnames="val1, val2" returntype="System.Single" />
-        <method name="Min(System.Double, System.Double)" argnames="val1, val2" returntype="System.Double" />
-        <method name="Min(System.Decimal, System.Decimal)" argnames="val1, val2" returntype="System.Decimal" />
-        <method name="Log(System.Double, System.Double)" argnames="a, newBase" returntype="System.Double" />
-        <method name="Sign(System.SByte)" argnames="value" returntype="System.Int32" />
-        <method name="Sign(System.Int16)" argnames="value" returntype="System.Int32" />
-        <method name="Sign(System.Int32)" argnames="value" returntype="System.Int32" />
-        <method name="Sign(System.Int64)" argnames="value" returntype="System.Int32" />
-        <method name="Sign(System.Single)" argnames="value" returntype="System.Int32" />
-        <method name="Sign(System.Double)" argnames="value" returntype="System.Int32" />
-        <method name="Sign(System.Decimal)" argnames="value" returntype="System.Int32" />
-    </class>
-    <class name="MethodAccessException" namespace="System">
-        <constructor name="MethodAccessException()" argnames="" />
-        <constructor name="MethodAccessException(System.String)" argnames="message" />
-        <constructor name="MethodAccessException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="MethodAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="MissingMemberException" namespace="System">
-        <constructor name="MissingMemberException()" argnames="" />
-        <constructor name="MissingMemberException(System.String)" argnames="message" />
-        <constructor name="MissingMemberException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="MissingMemberException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="MissingMemberException(System.String, System.String)" argnames="className, memberName" />
-        <field name="ClassName" />
-        <field name="MemberName" />
-        <field name="Signature" />
-        <property name="Message" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="MissingFieldException" namespace="System">
-        <constructor name="MissingFieldException()" argnames="" />
-        <constructor name="MissingFieldException(System.String)" argnames="message" />
-        <constructor name="MissingFieldException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="MissingFieldException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="MissingFieldException(System.String, System.String)" argnames="className, fieldName" />
-        <property name="Message" propertytype="System.String" />
-    </class>
-    <class name="MissingMethodException" namespace="System">
-        <constructor name="MissingMethodException()" argnames="" />
-        <constructor name="MissingMethodException(System.String)" argnames="message" />
-        <constructor name="MissingMethodException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="MissingMethodException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="MissingMethodException(System.String, System.String)" argnames="className, methodName" />
-        <property name="Message" propertytype="System.String" />
-    </class>
-    <class name="MulticastNotSupportedException" namespace="System">
-        <constructor name="MulticastNotSupportedException()" argnames="" />
-        <constructor name="MulticastNotSupportedException(System.String)" argnames="message" />
-        <constructor name="MulticastNotSupportedException(System.String, System.Exception)" argnames="message, inner" />
-    </class>
-    <class name="NonSerializedAttribute" namespace="System">
-        <constructor name="NonSerializedAttribute()" argnames="" />
-    </class>
-    <class name="NotFiniteNumberException" namespace="System">
-        <constructor name="NotFiniteNumberException()" argnames="" />
-        <constructor name="NotFiniteNumberException(System.Double)" argnames="offendingNumber" />
-        <constructor name="NotFiniteNumberException(System.String)" argnames="message" />
-        <constructor name="NotFiniteNumberException(System.String, System.Double)" argnames="message, offendingNumber" />
-        <constructor name="NotFiniteNumberException(System.String, System.Double, System.Exception)" argnames="message, offendingNumber, innerException" />
-        <constructor name="NotFiniteNumberException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="OffendingNumber" propertytype="System.Double" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="NotImplementedException" namespace="System">
-        <constructor name="NotImplementedException()" argnames="" />
-        <constructor name="NotImplementedException(System.String)" argnames="message" />
-        <constructor name="NotImplementedException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="NotImplementedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="NotSupportedException" namespace="System">
-        <constructor name="NotSupportedException()" argnames="" />
-        <constructor name="NotSupportedException(System.String)" argnames="message" />
-        <constructor name="NotSupportedException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="NotSupportedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="NullReferenceException" namespace="System">
-        <constructor name="NullReferenceException()" argnames="" />
-        <constructor name="NullReferenceException(System.String)" argnames="message" />
-        <constructor name="NullReferenceException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="NullReferenceException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="ObjectDisposedException" namespace="System">
-        <constructor name="ObjectDisposedException(System.String)" argnames="objectName" />
-        <constructor name="ObjectDisposedException(System.String, System.String)" argnames="objectName, message" />
-        <constructor name="ObjectDisposedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" propertytype="System.String" />
-        <property name="ObjectName" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="ObsoleteAttribute" namespace="System">
-        <constructor name="ObsoleteAttribute()" argnames="" />
-        <constructor name="ObsoleteAttribute(System.String)" argnames="message" />
-        <constructor name="ObsoleteAttribute(System.String, System.Boolean)" argnames="message, error" />
-        <property name="Message" propertytype="System.String" />
-        <property name="IsError" propertytype="System.Boolean" />
-    </class>
-    <class name="OperatingSystem" namespace="System">
-        <constructor name="OperatingSystem(System.PlatformID, System.Version)" argnames="platform, version" />
-        <property name="Platform" propertytype="System.PlatformID" />
-        <property name="Version" propertytype="System.Version" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="OverflowException" namespace="System">
-        <constructor name="OverflowException()" argnames="" />
-        <constructor name="OverflowException(System.String)" argnames="message" />
-        <constructor name="OverflowException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="OverflowException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="ParamArrayAttribute" namespace="System">
-        <constructor name="ParamArrayAttribute()" argnames="" />
-    </class>
-    <class name="PlatformNotSupportedException" namespace="System">
-        <constructor name="PlatformNotSupportedException()" argnames="" />
-        <constructor name="PlatformNotSupportedException(System.String)" argnames="message" />
-        <constructor name="PlatformNotSupportedException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="PlatformNotSupportedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Random" namespace="System">
-        <constructor name="Random()" argnames="" />
-        <constructor name="Random(System.Int32)" argnames="Seed" />
-        <method name="NextBytes(System.Byte[])" argnames="buffer" returntype="System.Void" />
-        <method name="NextDouble()" argnames="" returntype="System.Double" />
-        <method name="Next(System.Int32)" argnames="maxValue" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Int32)" argnames="minValue, maxValue" returntype="System.Int32" />
-        <method name="Next()" argnames="" returntype="System.Int32" />
-        <method name="Sample()" argnames="" returntype="System.Double" />
-    </class>
-    <class name="RankException" namespace="System">
-        <constructor name="RankException()" argnames="" />
-        <constructor name="RankException(System.String)" argnames="message" />
-        <constructor name="RankException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="RankException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Type" namespace="System">
-        <constructor name="Type()" argnames="" />
-        <field name="FilterAttribute" />
-        <field name="FilterName" />
-        <field name="FilterNameIgnoreCase" />
-        <field name="Missing" />
-        <field name="Delimiter" />
-        <field name="EmptyTypes" />
-        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <property name="GUID" propertytype="System.Guid" />
-        <property name="DefaultBinder" propertytype="System.Reflection.Binder" />
-        <property name="Module" propertytype="System.Reflection.Module" />
-        <property name="Assembly" propertytype="System.Reflection.Assembly" />
-        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
-        <property name="FullName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="AssemblyQualifiedName" propertytype="System.String" />
-        <property name="BaseType" propertytype="System.Type" />
-        <property name="TypeInitializer" propertytype="System.Reflection.ConstructorInfo" />
-        <property name="Attributes" propertytype="System.Reflection.TypeAttributes" />
-        <property name="IsNotPublic" propertytype="System.Boolean" />
-        <property name="IsPublic" propertytype="System.Boolean" />
-        <property name="IsNestedPublic" propertytype="System.Boolean" />
-        <property name="IsNestedPrivate" propertytype="System.Boolean" />
-        <property name="IsNestedFamily" propertytype="System.Boolean" />
-        <property name="IsNestedAssembly" propertytype="System.Boolean" />
-        <property name="IsNestedFamANDAssem" propertytype="System.Boolean" />
-        <property name="IsNestedFamORAssem" propertytype="System.Boolean" />
-        <property name="IsAutoLayout" propertytype="System.Boolean" />
-        <property name="IsLayoutSequential" propertytype="System.Boolean" />
-        <property name="IsExplicitLayout" propertytype="System.Boolean" />
-        <property name="IsClass" propertytype="System.Boolean" />
-        <property name="IsInterface" propertytype="System.Boolean" />
-        <property name="IsValueType" propertytype="System.Boolean" />
-        <property name="IsAbstract" propertytype="System.Boolean" />
-        <property name="IsSealed" propertytype="System.Boolean" />
-        <property name="IsEnum" propertytype="System.Boolean" />
-        <property name="IsSpecialName" propertytype="System.Boolean" />
-        <property name="IsImport" propertytype="System.Boolean" />
-        <property name="IsSerializable" propertytype="System.Boolean" />
-        <property name="IsAnsiClass" propertytype="System.Boolean" />
-        <property name="IsUnicodeClass" propertytype="System.Boolean" />
-        <property name="IsAutoClass" propertytype="System.Boolean" />
-        <property name="IsArray" propertytype="System.Boolean" />
-        <property name="IsByRef" propertytype="System.Boolean" />
-        <property name="IsPointer" propertytype="System.Boolean" />
-        <property name="IsPrimitive" propertytype="System.Boolean" />
-        <property name="IsCOMObject" propertytype="System.Boolean" />
-        <property name="IsGenericCOMObject" propertytype="System.Boolean" />
-        <property name="HasElementType" propertytype="System.Boolean" />
-        <property name="IsContextful" propertytype="System.Boolean" />
-        <property name="IsMarshalByRef" propertytype="System.Boolean" />
-        <property name="HasProxyAttribute" propertytype="System.Boolean" />
-        <property name="UnderlyingSystemType" propertytype="System.Type" />
-        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
-        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetMember(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
-        <method name="GetProperty(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetProperty(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
-        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
-        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetMethod(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
-        <method name="IsAssignableFrom(System.Type)" argnames="c" returntype="System.Boolean" />
-        <method name="IsInstanceOfType(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="IsSubclassOf(System.Type)" argnames="c" returntype="System.Boolean" />
-        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetElementType()" argnames="" returntype="System.Type" />
-        <method name="IsMarshalByRefImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsContextfulImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
-        <method name="IsValueTypeImpl()" argnames="" returntype="System.Boolean" />
-        <method name="FindMembers(System.Reflection.MemberTypes, System.Reflection.BindingFlags, System.Reflection.MemberFilter, System.Object)" argnames="memberType, bindingAttr, filter, filterCriteria" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetDefaultMembers()" argnames="" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
-        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
-        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
-        <method name="FindInterfaces(System.Reflection.TypeFilter, System.Object)" argnames="filter, filterCriteria" returntype="System.Type[]" />
-        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
-        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
-        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
-        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
-        <method name="GetArrayRank()" argnames="" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="typeName, throwOnError, ignoreCase" returntype="System.Type" />
-        <method name="GetType(System.String, System.Boolean)" argnames="typeName, throwOnError" returntype="System.Type" />
-        <method name="GetType(System.String)" argnames="typeName" returntype="System.Type" />
-        <method name="GetTypeFromProgID(System.String)" argnames="progID" returntype="System.Type" />
-        <method name="GetTypeFromProgID(System.String, System.Boolean)" argnames="progID, throwOnError" returntype="System.Type" />
-        <method name="GetTypeFromProgID(System.String, System.String)" argnames="progID, server" returntype="System.Type" />
-        <method name="GetTypeFromProgID(System.String, System.String, System.Boolean)" argnames="progID, server, throwOnError" returntype="System.Type" />
-        <method name="GetTypeFromCLSID(System.Guid)" argnames="clsid" returntype="System.Type" />
-        <method name="GetTypeFromCLSID(System.Guid, System.Boolean)" argnames="clsid, throwOnError" returntype="System.Type" />
-        <method name="GetTypeFromCLSID(System.Guid, System.String)" argnames="clsid, server" returntype="System.Type" />
-        <method name="GetTypeFromCLSID(System.Guid, System.String, System.Boolean)" argnames="clsid, server, throwOnError" returntype="System.Type" />
-        <method name="GetTypeCode(System.Type)" argnames="type" returntype="System.TypeCode" />
-        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Globalization.CultureInfo)" argnames="name, invokeAttr, binder, target, args, culture" returntype="System.Object" />
-        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[])" argnames="name, invokeAttr, binder, target, args" returntype="System.Object" />
-        <method name="GetTypeHandle(System.Object)" argnames="o" returntype="System.RuntimeTypeHandle" />
-        <method name="GetTypeFromHandle(System.RuntimeTypeHandle)" argnames="handle" returntype="System.Type" />
-        <method name="GetConstructor(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
-        <method name="GetConstructor(System.Reflection.BindingFlags, System.Reflection.Binder, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
-        <method name="GetConstructor(System.Type[])" argnames="types" returntype="System.Reflection.ConstructorInfo" />
-        <method name="GetConstructors()" argnames="" returntype="System.Reflection.ConstructorInfo[]" />
-        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethod(System.String, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethod(System.String, System.Type[])" argnames="name, types" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethod(System.String)" argnames="name" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethods()" argnames="" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetField(System.String)" argnames="name" returntype="System.Reflection.FieldInfo" />
-        <method name="GetFields()" argnames="" returntype="System.Reflection.FieldInfo[]" />
-        <method name="GetInterface(System.String)" argnames="name" returntype="System.Type" />
-        <method name="GetEvent(System.String)" argnames="name" returntype="System.Reflection.EventInfo" />
-        <method name="GetProperty(System.String, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetProperty(System.String, System.Type, System.Type[])" argnames="name, returnType, types" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetProperty(System.String, System.Type[])" argnames="name, types" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetProperty(System.String, System.Type)" argnames="name, returnType" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetProperty(System.String)" argnames="name" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetProperties()" argnames="" returntype="System.Reflection.PropertyInfo[]" />
-        <method name="GetNestedTypes()" argnames="" returntype="System.Type[]" />
-        <method name="GetNestedType(System.String)" argnames="name" returntype="System.Type" />
-        <method name="GetMember(System.String)" argnames="name" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetMembers()" argnames="" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetTypeArray(System.Object[])" argnames="args" returntype="System.Type[]" />
-        <method name="Equals(System.Type)" argnames="o" returntype="System.Boolean" />
-    </class>
-    <class name="SerializableAttribute" namespace="System">
-        <constructor name="SerializableAttribute()" argnames="" />
-    </class>
-    <class name="TypeInitializationException" namespace="System">
-        <constructor name="TypeInitializationException(System.String, System.Exception)" argnames="fullTypeName, innerException" />
-        <property name="TypeName" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="UnauthorizedAccessException" namespace="System">
-        <constructor name="UnauthorizedAccessException()" argnames="" />
-        <constructor name="UnauthorizedAccessException(System.String)" argnames="message" />
-        <constructor name="UnauthorizedAccessException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="UnauthorizedAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="UnhandledExceptionEventArgs" namespace="System">
-        <constructor name="UnhandledExceptionEventArgs(System.Object, System.Boolean)" argnames="exception, isTerminating" />
-        <property name="ExceptionObject" propertytype="System.Object" />
-        <property name="IsTerminating" propertytype="System.Boolean" />
-    </class>
-    <class name="Version" namespace="System">
-        <constructor name="Version(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="major, minor, build, revision" />
-        <constructor name="Version(System.Int32, System.Int32, System.Int32)" argnames="major, minor, build" />
-        <constructor name="Version(System.Int32, System.Int32)" argnames="major, minor" />
-        <constructor name="Version(System.String)" argnames="version" />
-        <constructor name="Version()" argnames="" />
-        <property name="Major" propertytype="System.Int32" />
-        <property name="Minor" propertytype="System.Int32" />
-        <property name="Build" propertytype="System.Int32" />
-        <property name="Revision" propertytype="System.Int32" />
-        <method name="CompareTo(System.Object)" argnames="version" returntype="System.Int32" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.Int32)" argnames="fieldCount" returntype="System.String" />
-        <operator name="op_Equality(System.Version, System.Version)" argnames="v1, v2" />
-        <operator name="op_Inequality(System.Version, System.Version)" argnames="v1, v2" />
-        <operator name="op_LessThan(System.Version, System.Version)" argnames="v1, v2" />
-        <operator name="op_LessThanOrEqual(System.Version, System.Version)" argnames="v1, v2" />
-        <operator name="op_GreaterThan(System.Version, System.Version)" argnames="v1, v2" />
-        <operator name="op_GreaterThanOrEqual(System.Version, System.Version)" argnames="v1, v2" />
-    </class>
-    <class name="WeakReference" namespace="System">
-        <constructor name="WeakReference(System.Object)" argnames="target" />
-        <constructor name="WeakReference(System.Object, System.Boolean)" argnames="target, trackResurrection" />
-        <constructor name="WeakReference(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="IsAlive" propertytype="System.Boolean" />
-        <property name="TrackResurrection" propertytype="System.Boolean" />
-        <property name="Target" propertytype="System.Object" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="STAThreadAttribute" namespace="System">
-        <constructor name="STAThreadAttribute()" argnames="" />
-    </class>
-    <class name="MTAThreadAttribute" namespace="System">
-        <constructor name="MTAThreadAttribute()" argnames="" />
-    </class>
-    <class name="ThreadStaticAttribute" namespace="System">
-        <constructor name="ThreadStaticAttribute()" argnames="" />
-    </class>
-    <class name="AppDomainSetup" namespace="System">
-        <constructor name="AppDomainSetup()" argnames="" />
-        <property name="Value" propertytype="System.String[]" />
-        <property name="ApplicationBase" propertytype="System.String" />
-        <property name="ApplicationBaseKey" propertytype="System.String" />
-        <property name="ConfigurationFile" propertytype="System.String" />
-        <property name="ConfigurationFileKey" propertytype="System.String" />
-        <property name="DynamicBase" propertytype="System.String" />
-        <property name="DynamicBaseKey" propertytype="System.String" />
-        <property name="DisallowPublisherPolicy" propertytype="System.Boolean" />
-        <property name="DeveloperPath" propertytype="System.String" />
-        <property name="DisallowPublisherPolicyKey" propertytype="System.String" />
-        <property name="DeveloperPathKey" propertytype="System.String" />
-        <property name="ApplicationName" propertytype="System.String" />
-        <property name="ApplicationNameKey" propertytype="System.String" />
-        <property name="PrivateBinPath" propertytype="System.String" />
-        <property name="PrivateBinPathKey" propertytype="System.String" />
-        <property name="PrivateBinPathProbe" propertytype="System.String" />
-        <property name="PrivateBinPathProbeKey" propertytype="System.String" />
-        <property name="ShadowCopyDirectories" propertytype="System.String" />
-        <property name="ShadowCopyDirectoriesKey" propertytype="System.String" />
-        <property name="ShadowCopyFiles" propertytype="System.String" />
-        <property name="ShadowCopyFilesKey" propertytype="System.String" />
-        <property name="CachePath" propertytype="System.String" />
-        <property name="CachePathKey" propertytype="System.String" />
-        <property name="LicenseFile" propertytype="System.String" />
-        <property name="LicenseFileKey" propertytype="System.String" />
-        <property name="LoaderOptimization" propertytype="System.LoaderOptimization" />
-        <property name="LoaderOptimizationKey" propertytype="System.String" />
-        <property name="DynamicDirectoryKey" propertytype="System.String" />
-        <property name="ConfigurationExtenstion" propertytype="System.String" />
-        <property name="PrivateBinPathEnvironmentVariable" propertytype="System.String" />
-        <property name="RuntimeConfigurationFile" propertytype="System.String" />
-        <property name="MachineConfigKey" propertytype="System.String" />
-        <property name="HostBindingKey" propertytype="System.String" />
-    </class>
-    <interface name="ICloneable" namespace="System">
-        <method name="Clone()" argnames="" returntype="System.Object" />
-    </interface>
-    <interface name="IComparable" namespace="System">
-        <method name="CompareTo(System.Object)" argnames="obj" returntype="System.Int32" />
-    </interface>
-    <interface name="IConvertible" namespace="System">
-        <method name="ToType(System.Type, System.IFormatProvider)" argnames="conversionType, provider" returntype="System.Object" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="ToDateTime(System.IFormatProvider)" argnames="provider" returntype="System.DateTime" />
-        <method name="ToDecimal(System.IFormatProvider)" argnames="provider" returntype="System.Decimal" />
-        <method name="ToDouble(System.IFormatProvider)" argnames="provider" returntype="System.Double" />
-        <method name="ToSingle(System.IFormatProvider)" argnames="provider" returntype="System.Single" />
-        <method name="ToUInt64(System.IFormatProvider)" argnames="provider" returntype="System.UInt64" />
-        <method name="ToInt64(System.IFormatProvider)" argnames="provider" returntype="System.Int64" />
-        <method name="ToUInt32(System.IFormatProvider)" argnames="provider" returntype="System.UInt32" />
-        <method name="ToInt32(System.IFormatProvider)" argnames="provider" returntype="System.Int32" />
-        <method name="ToUInt16(System.IFormatProvider)" argnames="provider" returntype="System.UInt16" />
-        <method name="ToInt16(System.IFormatProvider)" argnames="provider" returntype="System.Int16" />
-        <method name="ToByte(System.IFormatProvider)" argnames="provider" returntype="System.Byte" />
-        <method name="ToSByte(System.IFormatProvider)" argnames="provider" returntype="System.SByte" />
-        <method name="ToChar(System.IFormatProvider)" argnames="provider" returntype="System.Char" />
-        <method name="ToBoolean(System.IFormatProvider)" argnames="provider" returntype="System.Boolean" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-    </interface>
-    <interface name="IFormattable" namespace="System">
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, formatProvider" returntype="System.String" />
-    </interface>
-    <interface name="_AppDomain" namespace="System">
-        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
-        <property name="FriendlyName" propertytype="System.String" />
-        <property name="BaseDirectory" propertytype="System.String" />
-        <property name="RelativeSearchPath" propertytype="System.String" />
-        <property name="ShadowCopyFiles" propertytype="System.Boolean" />
-        <property name="DynamicDirectory" propertytype="System.String" />
-        <method name="DoCallBack(System.CrossAppDomainDelegate)" argnames="theDelegate" returntype="System.Void" />
-        <method name="SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy)" argnames="policy" returntype="System.Void" />
-        <method name="SetThreadPrincipal(System.Security.Principal.IPrincipal)" argnames="principal" returntype="System.Void" />
-        <method name="SetAppDomainPolicy(System.Security.Policy.PolicyLevel)" argnames="domainPolicy" returntype="System.Void" />
-        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
-        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
-        <method name="SetCachePath(System.String)" argnames="s" returntype="System.Void" />
-        <method name="ClearShadowCopyPath()" argnames="" returntype="System.Void" />
-        <method name="SetShadowCopyPath(System.String)" argnames="s" returntype="System.Void" />
-        <method name="ClearPrivatePath()" argnames="" returntype="System.Void" />
-        <method name="AppendPrivatePath(System.String)" argnames="path" returntype="System.Void" />
-        <method name="GetAssemblies()" argnames="" returntype="System.Reflection.Assembly[]" />
-        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[])" argnames="assemblyFile, assemblySecurity, args" returntype="System.Int32" />
-        <method name="ExecuteAssembly(System.String)" argnames="assemblyFile" returntype="System.Int32" />
-        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence)" argnames="assemblyFile, assemblySecurity" returntype="System.Int32" />
-        <method name="Load(System.String, System.Security.Policy.Evidence)" argnames="assemblyString, assemblySecurity" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)" argnames="assemblyRef, assemblySecurity" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)" argnames="rawAssembly, rawSymbolStore, securityEvidence" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[], System.Byte[])" argnames="rawAssembly, rawSymbolStore" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[])" argnames="rawAssembly" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.String)" argnames="assemblyString" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Reflection.AssemblyName)" argnames="assemblyRef" returntype="System.Reflection.Assembly" />
-        <method name="CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyFile, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstanceFrom(System.String, System.String, System.Object[])" argnames="assemblyFile, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstanceFrom(System.String, System.String)" argnames="assemblyFile, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="CreateInstance(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions, isSynchronized" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence)" argnames="name, access, dir, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence)" argnames="name, access, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String)" argnames="name, access, dir" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)" argnames="name, access" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="GetLifetimeService()" argnames="" returntype="System.Object" />
-        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
-        <method name="GetType()" argnames="" returntype="System.Type" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <event name="DomainUnload" />
-        <event name="AssemblyLoad" />
-        <event name="ProcessExit" />
-        <event name="TypeResolve" />
-        <event name="ResourceResolve" />
-        <event name="AssemblyResolve" />
-        <event name="UnhandledException" />
-    </interface>
-    <interface name="IAppDomainSetup" namespace="System">
-        <property name="ApplicationBase" propertytype="System.String" />
-        <property name="ApplicationName" propertytype="System.String" />
-        <property name="CachePath" propertytype="System.String" />
-        <property name="ConfigurationFile" propertytype="System.String" />
-        <property name="DynamicBase" propertytype="System.String" />
-        <property name="LicenseFile" propertytype="System.String" />
-        <property name="PrivateBinPath" propertytype="System.String" />
-        <property name="PrivateBinPathProbe" propertytype="System.String" />
-        <property name="ShadowCopyDirectories" propertytype="System.String" />
-        <property name="ShadowCopyFiles" propertytype="System.String" />
-    </interface>
-    <interface name="IAsyncResult" namespace="System">
-        <property name="IsCompleted" propertytype="System.Boolean" />
-        <property name="AsyncWaitHandle" propertytype="System.Threading.WaitHandle" />
-        <property name="AsyncState" propertytype="System.Object" />
-        <property name="CompletedSynchronously" propertytype="System.Boolean" />
-    </interface>
-    <interface name="ICustomFormatter" namespace="System">
-        <method name="Format(System.String, System.Object, System.IFormatProvider)" argnames="format, arg, formatProvider" returntype="System.String" />
-    </interface>
-    <interface name="IDisposable" namespace="System">
-        <method name="Dispose()" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IFormatProvider" namespace="System">
-        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
-    </interface>
-    <interface name="IServiceProvider" namespace="System">
-        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
-    </interface>
-    <struct name="DateTime" namespace="System">
-        <constructor name="DateTime(System.Int64)" argnames="ticks" />
-        <constructor name="DateTime(System.Int32, System.Int32, System.Int32)" argnames="year, month, day" />
-        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Globalization.Calendar)" argnames="year, month, day, calendar" />
-        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second" />
-        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Globalization.Calendar)" argnames="year, month, day, hour, minute, second, calendar" />
-        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond" />
-        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Globalization.Calendar)" argnames="year, month, day, hour, minute, second, millisecond, calendar" />
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <property name="Date" propertytype="System.DateTime" />
-        <property name="Day" propertytype="System.Int32" />
-        <property name="DayOfWeek" propertytype="System.DayOfWeek" />
-        <property name="DayOfYear" propertytype="System.Int32" />
-        <property name="Hour" propertytype="System.Int32" />
-        <property name="Millisecond" propertytype="System.Int32" />
-        <property name="Minute" propertytype="System.Int32" />
-        <property name="Month" propertytype="System.Int32" />
-        <property name="Now" propertytype="System.DateTime" />
-        <property name="UtcNow" propertytype="System.DateTime" />
-        <property name="Second" propertytype="System.Int32" />
-        <property name="Ticks" propertytype="System.Int64" />
-        <property name="TimeOfDay" propertytype="System.TimeSpan" />
-        <property name="Today" propertytype="System.DateTime" />
-        <property name="Year" propertytype="System.Int32" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Add(System.TimeSpan)" argnames="value" returntype="System.DateTime" />
-        <method name="AddDays(System.Double)" argnames="value" returntype="System.DateTime" />
-        <method name="AddHours(System.Double)" argnames="value" returntype="System.DateTime" />
-        <method name="AddMilliseconds(System.Double)" argnames="value" returntype="System.DateTime" />
-        <method name="AddMinutes(System.Double)" argnames="value" returntype="System.DateTime" />
-        <method name="AddMonths(System.Int32)" argnames="months" returntype="System.DateTime" />
-        <method name="AddSeconds(System.Double)" argnames="value" returntype="System.DateTime" />
-        <method name="AddTicks(System.Int64)" argnames="value" returntype="System.DateTime" />
-        <method name="AddYears(System.Int32)" argnames="value" returntype="System.DateTime" />
-        <method name="Compare(System.DateTime, System.DateTime)" argnames="t1, t2" returntype="System.Int32" />
-        <method name="DaysInMonth(System.Int32, System.Int32)" argnames="year, month" returntype="System.Int32" />
-        <method name="Equals(System.DateTime, System.DateTime)" argnames="t1, t2" returntype="System.Boolean" />
-        <method name="FromFileTime(System.Int64)" argnames="fileTime" returntype="System.DateTime" />
-        <method name="FromOADate(System.Double)" argnames="d" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32)" argnames="year" returntype="System.Boolean" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.DateTime" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.DateTime" />
-        <method name="Parse(System.String, System.IFormatProvider, System.Globalization.DateTimeStyles)" argnames="s, provider, styles" returntype="System.DateTime" />
-        <method name="ParseExact(System.String, System.String, System.IFormatProvider)" argnames="s, format, provider" returntype="System.DateTime" />
-        <method name="ParseExact(System.String, System.String, System.IFormatProvider, System.Globalization.DateTimeStyles)" argnames="s, format, provider, style" returntype="System.DateTime" />
-        <method name="ParseExact(System.String, System.String[], System.IFormatProvider, System.Globalization.DateTimeStyles)" argnames="s, formats, provider, style" returntype="System.DateTime" />
-        <method name="Subtract(System.DateTime)" argnames="value" returntype="System.TimeSpan" />
-        <method name="Subtract(System.TimeSpan)" argnames="value" returntype="System.DateTime" />
-        <method name="ToOADate()" argnames="" returntype="System.Double" />
-        <method name="ToFileTime()" argnames="" returntype="System.Int64" />
-        <method name="ToLocalTime()" argnames="" returntype="System.DateTime" />
-        <method name="ToLongDateString()" argnames="" returntype="System.String" />
-        <method name="ToLongTimeString()" argnames="" returntype="System.String" />
-        <method name="ToShortDateString()" argnames="" returntype="System.String" />
-        <method name="ToShortTimeString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="ToUniversalTime()" argnames="" returntype="System.DateTime" />
-        <method name="GetDateTimeFormats()" argnames="" returntype="System.String[]" />
-        <method name="GetDateTimeFormats(System.IFormatProvider)" argnames="provider" returntype="System.String[]" />
-        <method name="GetDateTimeFormats(System.Char)" argnames="format" returntype="System.String[]" />
-        <method name="GetDateTimeFormats(System.Char, System.IFormatProvider)" argnames="format, provider" returntype="System.String[]" />
-        <operator name="op_Addition(System.DateTime, System.TimeSpan)" argnames="d, t" />
-        <operator name="op_Subtraction(System.DateTime, System.TimeSpan)" argnames="d, t" />
-        <operator name="op_Subtraction(System.DateTime, System.DateTime)" argnames="d1, d2" />
-        <operator name="op_Equality(System.DateTime, System.DateTime)" argnames="d1, d2" />
-        <operator name="op_Inequality(System.DateTime, System.DateTime)" argnames="d1, d2" />
-        <operator name="op_LessThan(System.DateTime, System.DateTime)" argnames="t1, t2" />
-        <operator name="op_LessThanOrEqual(System.DateTime, System.DateTime)" argnames="t1, t2" />
-        <operator name="op_GreaterThan(System.DateTime, System.DateTime)" argnames="t1, t2" />
-        <operator name="op_GreaterThanOrEqual(System.DateTime, System.DateTime)" argnames="t1, t2" />
-    </struct>
-    <struct name="ArgIterator" namespace="System">
-        <constructor name="ArgIterator(System.RuntimeArgumentHandle)" argnames="arglist" />
-        <constructor name="ArgIterator(System.RuntimeArgumentHandle, System.Void*)" argnames="arglist, ptr" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="GetNextArg()" argnames="" returntype="System.TypedReference" />
-        <method name="GetNextArg(System.RuntimeTypeHandle)" argnames="rth" returntype="System.TypedReference" />
-        <method name="End()" argnames="" returntype="System.Void" />
-        <method name="GetRemainingCount()" argnames="" returntype="System.Int32" />
-        <method name="GetNextArgType()" argnames="" returntype="System.RuntimeTypeHandle" />
-    </struct>
-    <struct name="Boolean" namespace="System">
-        <field name="TrueString" />
-        <field name="FalseString" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="CompareTo(System.Object)" argnames="obj" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Boolean" />
-    </struct>
-    <struct name="Byte" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Byte" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Byte" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Byte" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Byte" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-    </struct>
-    <struct name="Char" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.Char)" argnames="c" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Char" />
-        <method name="IsDigit(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsLetter(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsWhiteSpace(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsUpper(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsLower(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsPunctuation(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsLetterOrDigit(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="ToUpper(System.Char, System.Globalization.CultureInfo)" argnames="c, culture" returntype="System.Char" />
-        <method name="ToUpper(System.Char)" argnames="c" returntype="System.Char" />
-        <method name="ToLower(System.Char, System.Globalization.CultureInfo)" argnames="c, culture" returntype="System.Char" />
-        <method name="ToLower(System.Char)" argnames="c" returntype="System.Char" />
-        <method name="IsControl(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsControl(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsDigit(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsLetter(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsLetterOrDigit(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsLower(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsNumber(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsNumber(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsPunctuation(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsSeparator(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsSeparator(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsSurrogate(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsSurrogate(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsSymbol(System.Char)" argnames="c" returntype="System.Boolean" />
-        <method name="IsSymbol(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsUpper(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="IsWhiteSpace(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
-        <method name="GetUnicodeCategory(System.Char)" argnames="c" returntype="System.Globalization.UnicodeCategory" />
-        <method name="GetUnicodeCategory(System.String, System.Int32)" argnames="s, index" returntype="System.Globalization.UnicodeCategory" />
-        <method name="GetNumericValue(System.Char)" argnames="c" returntype="System.Double" />
-        <method name="GetNumericValue(System.String, System.Int32)" argnames="s, index" returntype="System.Double" />
-    </struct>
-    <struct name="Decimal" namespace="System">
-        <constructor name="Decimal(System.Int32)" argnames="value" />
-        <constructor name="Decimal(System.UInt32)" argnames="value" />
-        <constructor name="Decimal(System.Int64)" argnames="value" />
-        <constructor name="Decimal(System.UInt64)" argnames="value" />
-        <constructor name="Decimal(System.Single)" argnames="value" />
-        <constructor name="Decimal(System.Double)" argnames="value" />
-        <constructor name="Decimal(System.Int32[])" argnames="bits" />
-        <constructor name="Decimal(System.Int32, System.Int32, System.Int32, System.Boolean, System.Byte)" argnames="lo, mid, hi, isNegative, scale" />
-        <field name="Zero" />
-        <field name="One" />
-        <field name="MinusOne" />
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToOACurrency(System.Decimal)" argnames="value" returntype="System.Int64" />
-        <method name="FromOACurrency(System.Int64)" argnames="cy" returntype="System.Decimal" />
-        <method name="Add(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
-        <method name="Compare(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Int32" />
-        <method name="Divide(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
-        <method name="Equals(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Boolean" />
-        <method name="Floor(System.Decimal)" argnames="d" returntype="System.Decimal" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Decimal" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Decimal" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Decimal" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Decimal" />
-        <method name="GetBits(System.Decimal)" argnames="d" returntype="System.Int32[]" />
-        <method name="Remainder(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
-        <method name="Multiply(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
-        <method name="Negate(System.Decimal)" argnames="d" returntype="System.Decimal" />
-        <method name="Round(System.Decimal, System.Int32)" argnames="d, decimals" returntype="System.Decimal" />
-        <method name="Subtract(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
-        <method name="ToByte(System.Decimal)" argnames="value" returntype="System.Byte" />
-        <method name="ToSByte(System.Decimal)" argnames="value" returntype="System.SByte" />
-        <method name="ToInt16(System.Decimal)" argnames="value" returntype="System.Int16" />
-        <method name="ToDouble(System.Decimal)" argnames="d" returntype="System.Double" />
-        <method name="ToInt32(System.Decimal)" argnames="d" returntype="System.Int32" />
-        <method name="ToInt64(System.Decimal)" argnames="d" returntype="System.Int64" />
-        <method name="ToUInt16(System.Decimal)" argnames="value" returntype="System.UInt16" />
-        <method name="ToUInt32(System.Decimal)" argnames="d" returntype="System.UInt32" />
-        <method name="ToUInt64(System.Decimal)" argnames="d" returntype="System.UInt64" />
-        <method name="ToSingle(System.Decimal)" argnames="d" returntype="System.Single" />
-        <method name="Truncate(System.Decimal)" argnames="d" returntype="System.Decimal" />
-        <operator name="op_Implicit(System.Byte)" argnames="value" />
-        <operator name="op_Implicit(System.SByte)" argnames="value" />
-        <operator name="op_Implicit(System.Int16)" argnames="value" />
-        <operator name="op_Implicit(System.UInt16)" argnames="value" />
-        <operator name="op_Implicit(System.Char)" argnames="value" />
-        <operator name="op_Implicit(System.Int32)" argnames="value" />
-        <operator name="op_Implicit(System.UInt32)" argnames="value" />
-        <operator name="op_Implicit(System.Int64)" argnames="value" />
-        <operator name="op_Implicit(System.UInt64)" argnames="value" />
-        <operator name="op_Explicit(System.Single)" argnames="value" />
-        <operator name="op_Explicit(System.Double)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_Explicit(System.Decimal)" argnames="value" />
-        <operator name="op_UnaryPlus(System.Decimal)" argnames="d" />
-        <operator name="op_UnaryNegation(System.Decimal)" argnames="d" />
-        <operator name="op_Increment(System.Decimal)" argnames="d" />
-        <operator name="op_Decrement(System.Decimal)" argnames="d" />
-        <operator name="op_Addition(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_Subtraction(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_Multiply(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_Division(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_Modulus(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_Equality(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_Inequality(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_LessThan(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_LessThanOrEqual(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_GreaterThan(System.Decimal, System.Decimal)" argnames="d1, d2" />
-        <operator name="op_GreaterThanOrEqual(System.Decimal, System.Decimal)" argnames="d1, d2" />
-    </struct>
-    <struct name="Double" namespace="System">
-        <field name="MinValue" />
-        <field name="MaxValue" />
-        <field name="Epsilon" />
-        <field name="NegativeInfinity" />
-        <field name="PositiveInfinity" />
-        <field name="NaN" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="IsInfinity(System.Double)" argnames="d" returntype="System.Boolean" />
-        <method name="IsPositiveInfinity(System.Double)" argnames="d" returntype="System.Boolean" />
-        <method name="IsNegativeInfinity(System.Double)" argnames="d" returntype="System.Boolean" />
-        <method name="IsNaN(System.Double)" argnames="d" returntype="System.Boolean" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Double" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Double" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Double" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Double" />
-        <method name="TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.Double&amp;)" argnames="s, style, provider, result" returntype="System.Boolean" />
-    </struct>
-    <struct name="Guid" namespace="System">
-        <constructor name="Guid(System.Byte[])" argnames="b" />
-        <constructor name="Guid(System.UInt32, System.UInt16, System.UInt16, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte)" argnames="a, b, c, d, e, f, g, h, i, j, k" />
-        <constructor name="Guid(System.String)" argnames="g" />
-        <constructor name="Guid(System.Int32, System.Int16, System.Int16, System.Byte[])" argnames="a, b, c, d" />
-        <constructor name="Guid(System.Int32, System.Int16, System.Int16, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte)" argnames="a, b, c, d, e, f, g, h, i, j, k" />
-        <field name="Empty" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToByteArray()" argnames="" returntype="System.Byte[]" />
-        <method name="NewGuid()" argnames="" returntype="System.Guid" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <operator name="op_Equality(System.Guid, System.Guid)" argnames="a, b" />
-        <operator name="op_Inequality(System.Guid, System.Guid)" argnames="a, b" />
-    </struct>
-    <struct name="Int16" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Int16" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Int16" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Int16" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Int16" />
-    </struct>
-    <struct name="Int32" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Int32" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Int32" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Int32" />
-    </struct>
-    <struct name="Int64" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Int64" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Int64" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Int64" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Int64" />
-    </struct>
-    <struct name="IntPtr" namespace="System">
-        <constructor name="IntPtr(System.Int32)" argnames="value" />
-        <constructor name="IntPtr(System.Int64)" argnames="value" />
-        <constructor name="IntPtr(System.Void*)" argnames="value" />
-        <field name="Zero" />
-        <property name="Size" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToInt32()" argnames="" returntype="System.Int32" />
-        <method name="ToInt64()" argnames="" returntype="System.Int64" />
-        <method name="ToPointer()" argnames="" returntype="System.Void*" />
-        <operator name="op_Explicit(System.Int32)" argnames="value" />
-        <operator name="op_Explicit(System.Int64)" argnames="value" />
-        <operator name="op_Explicit(System.Void*)" argnames="value" />
-        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
-        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
-        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
-        <operator name="op_Equality(System.IntPtr, System.IntPtr)" argnames="value1, value2" />
-        <operator name="op_Inequality(System.IntPtr, System.IntPtr)" argnames="value1, value2" />
-    </struct>
-    <struct name="RuntimeArgumentHandle" namespace="System" />
-    <struct name="RuntimeFieldHandle" namespace="System">
-        <property name="Value" propertytype="System.IntPtr" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </struct>
-    <struct name="RuntimeMethodHandle" namespace="System">
-        <property name="Value" propertytype="System.IntPtr" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetFunctionPointer()" argnames="" returntype="System.IntPtr" />
-    </struct>
-    <struct name="RuntimeTypeHandle" namespace="System">
-        <property name="Value" propertytype="System.IntPtr" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </struct>
-    <struct name="SByte" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="obj" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.SByte" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.SByte" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.SByte" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.SByte" />
-    </struct>
-    <struct name="Single" namespace="System">
-        <field name="MinValue" />
-        <field name="Epsilon" />
-        <field name="MaxValue" />
-        <field name="PositiveInfinity" />
-        <field name="NegativeInfinity" />
-        <field name="NaN" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="IsInfinity(System.Single)" argnames="f" returntype="System.Boolean" />
-        <method name="IsPositiveInfinity(System.Single)" argnames="f" returntype="System.Boolean" />
-        <method name="IsNegativeInfinity(System.Single)" argnames="f" returntype="System.Boolean" />
-        <method name="IsNaN(System.Single)" argnames="f" returntype="System.Boolean" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.Single" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Single" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Single" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Single" />
-    </struct>
-    <struct name="TimeSpan" namespace="System">
-        <constructor name="TimeSpan(System.Int64)" argnames="ticks" />
-        <constructor name="TimeSpan(System.Int32, System.Int32, System.Int32)" argnames="hours, minutes, seconds" />
-        <constructor name="TimeSpan(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="days, hours, minutes, seconds" />
-        <constructor name="TimeSpan(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="days, hours, minutes, seconds, milliseconds" />
-        <field name="Zero" />
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <field name="TicksPerMillisecond" />
-        <field name="TicksPerSecond" />
-        <field name="TicksPerMinute" />
-        <field name="TicksPerHour" />
-        <field name="TicksPerDay" />
-        <property name="Ticks" propertytype="System.Int64" />
-        <property name="Days" propertytype="System.Int32" />
-        <property name="Hours" propertytype="System.Int32" />
-        <property name="Milliseconds" propertytype="System.Int32" />
-        <property name="Minutes" propertytype="System.Int32" />
-        <property name="Seconds" propertytype="System.Int32" />
-        <property name="TotalDays" propertytype="System.Double" />
-        <property name="TotalHours" propertytype="System.Double" />
-        <property name="TotalMilliseconds" propertytype="System.Double" />
-        <property name="TotalMinutes" propertytype="System.Double" />
-        <property name="TotalSeconds" propertytype="System.Double" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Add(System.TimeSpan)" argnames="ts" returntype="System.TimeSpan" />
-        <method name="Compare(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" returntype="System.Int32" />
-        <method name="FromDays(System.Double)" argnames="value" returntype="System.TimeSpan" />
-        <method name="Duration()" argnames="" returntype="System.TimeSpan" />
-        <method name="Equals(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" returntype="System.Boolean" />
-        <method name="FromHours(System.Double)" argnames="value" returntype="System.TimeSpan" />
-        <method name="FromMilliseconds(System.Double)" argnames="value" returntype="System.TimeSpan" />
-        <method name="FromMinutes(System.Double)" argnames="value" returntype="System.TimeSpan" />
-        <method name="Negate()" argnames="" returntype="System.TimeSpan" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.TimeSpan" />
-        <method name="FromSeconds(System.Double)" argnames="value" returntype="System.TimeSpan" />
-        <method name="Subtract(System.TimeSpan)" argnames="ts" returntype="System.TimeSpan" />
-        <method name="FromTicks(System.Int64)" argnames="value" returntype="System.TimeSpan" />
-        <operator name="op_UnaryNegation(System.TimeSpan)" argnames="t" />
-        <operator name="op_Subtraction(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-        <operator name="op_UnaryPlus(System.TimeSpan)" argnames="t" />
-        <operator name="op_Addition(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-        <operator name="op_Equality(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-        <operator name="op_Inequality(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-        <operator name="op_LessThan(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-        <operator name="op_LessThanOrEqual(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-        <operator name="op_GreaterThan(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-        <operator name="op_GreaterThanOrEqual(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
-    </struct>
-    <struct name="TypedReference" namespace="System">
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="MakeTypedReference(System.Object, System.Reflection.FieldInfo[])" argnames="target, flds" returntype="System.TypedReference" />
-        <method name="ToObject(System.TypedReference)" argnames="value" returntype="System.Object" />
-        <method name="GetTargetType(System.TypedReference)" argnames="value" returntype="System.Type" />
-        <method name="TargetTypeToken(System.TypedReference)" argnames="value" returntype="System.RuntimeTypeHandle" />
-        <method name="SetTypedReference(System.TypedReference, System.Object)" argnames="target, value" returntype="System.Void" />
-    </struct>
-    <struct name="UInt16" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.UInt16" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.UInt16" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.UInt16" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.UInt16" />
-    </struct>
-    <struct name="UInt32" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.UInt32" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.UInt32" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.UInt32" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.UInt32" />
-    </struct>
-    <struct name="UInt64" namespace="System">
-        <field name="MaxValue" />
-        <field name="MinValue" />
-        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
-        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
-        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
-        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="s" returntype="System.UInt64" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.UInt64" />
-        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.UInt64" />
-        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.UInt64" />
-    </struct>
-    <struct name="UIntPtr" namespace="System">
-        <constructor name="UIntPtr(System.UInt32)" argnames="value" />
-        <constructor name="UIntPtr(System.UInt64)" argnames="value" />
-        <constructor name="UIntPtr(System.Void*)" argnames="value" />
-        <field name="Zero" />
-        <property name="Size" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToUInt32()" argnames="" returntype="System.UInt32" />
-        <method name="ToUInt64()" argnames="" returntype="System.UInt64" />
-        <method name="ToPointer()" argnames="" returntype="System.Void*" />
-        <operator name="op_Explicit(System.UInt32)" argnames="value" />
-        <operator name="op_Explicit(System.UInt64)" argnames="value" />
-        <operator name="op_Explicit(System.UIntPtr)" argnames="value" />
-        <operator name="op_Explicit(System.UIntPtr)" argnames="value" />
-        <operator name="op_Explicit(System.Void*)" argnames="value" />
-        <operator name="op_Explicit(System.UIntPtr)" argnames="value" />
-        <operator name="op_Equality(System.UIntPtr, System.UIntPtr)" argnames="value1, value2" />
-        <operator name="op_Inequality(System.UIntPtr, System.UIntPtr)" argnames="value1, value2" />
-    </struct>
-    <struct name="Void" namespace="System" />
-    <delegate name="MulticastDelegate" namespace="System">
-        <constructor name="MulticastDelegate(System.Object, System.String)" argnames="target, method" />
-        <constructor name="MulticastDelegate(System.Type, System.String)" argnames="target, method" />
-        <property name="Previous" propertytype="System.MulticastDelegate" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="RemoveImpl(System.Delegate)" argnames="value" returntype="System.Delegate" />
-        <method name="CombineImpl(System.Delegate)" argnames="follow" returntype="System.Delegate" />
-        <method name="GetInvocationList()" argnames="" returntype="System.Delegate[]" />
-        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" returntype="System.Object" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <operator name="op_Equality(System.MulticastDelegate, System.MulticastDelegate)" argnames="d1, d2" />
-        <operator name="op_Inequality(System.MulticastDelegate, System.MulticastDelegate)" argnames="d1, d2" />
-    </delegate>
-    <delegate name="ResolveEventHandler" namespace="System">
-        <constructor name="ResolveEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Reflection.Assembly" />
-        <method name="BeginInvoke(System.Object, System.ResolveEventArgs, System.AsyncCallback, System.Object)" argnames="sender, args, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ResolveEventArgs)" argnames="sender, args" returntype="System.Reflection.Assembly" />
-    </delegate>
-    <delegate name="AssemblyLoadEventHandler" namespace="System">
-        <constructor name="AssemblyLoadEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.AssemblyLoadEventArgs, System.AsyncCallback, System.Object)" argnames="sender, args, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.AssemblyLoadEventArgs)" argnames="sender, args" returntype="System.Void" />
-    </delegate>
-    <delegate name="CrossAppDomainDelegate" namespace="System">
-        <constructor name="CrossAppDomainDelegate(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke()" argnames="" returntype="System.Void" />
-    </delegate>
-    <delegate name="AsyncCallback" namespace="System">
-        <constructor name="AsyncCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.IAsyncResult, System.AsyncCallback, System.Object)" argnames="ar, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IAsyncResult)" argnames="ar" returntype="System.Void" />
-    </delegate>
-    <delegate name="EventHandler" namespace="System">
-        <constructor name="EventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.EventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
-    </delegate>
-    <delegate name="UnhandledExceptionEventHandler" namespace="System">
-        <constructor name="UnhandledExceptionEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.UnhandledExceptionEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.UnhandledExceptionEventArgs)" argnames="sender, e" returntype="System.Void" />
-    </delegate>
-    <enum name="LoaderOptimization" namespace="System">
-        <field name="NotSpecified" />
-        <field name="SingleDomain" />
-        <field name="MultiDomain" />
-        <field name="MultiDomainHost" />
-    </enum>
-    <enum name="AttributeTargets" namespace="System">
-        <field name="Assembly" />
-        <field name="Module" />
-        <field name="Class" />
-        <field name="Struct" />
-        <field name="Enum" />
-        <field name="Constructor" />
-        <field name="Method" />
-        <field name="Property" />
-        <field name="Field" />
-        <field name="Event" />
-        <field name="Interface" />
-        <field name="Parameter" />
-        <field name="Delegate" />
-        <field name="ReturnValue" />
-        <field name="All" />
-    </enum>
-    <enum name="DayOfWeek" namespace="System">
-        <field name="Sunday" />
-        <field name="Monday" />
-        <field name="Tuesday" />
-        <field name="Wednesday" />
-        <field name="Thursday" />
-        <field name="Friday" />
-        <field name="Saturday" />
-    </enum>
-    <enum name="SpecialFolder" namespace="System">
-        <field name="ApplicationData" />
-        <field name="CommonApplicationData" />
-        <field name="LocalApplicationData" />
-        <field name="Cookies" />
-        <field name="Favorites" />
-        <field name="History" />
-        <field name="InternetCache" />
-        <field name="Programs" />
-        <field name="Recent" />
-        <field name="SendTo" />
-        <field name="StartMenu" />
-        <field name="Startup" />
-        <field name="System" />
-        <field name="Templates" />
-        <field name="DesktopDirectory" />
-        <field name="Personal" />
-        <field name="ProgramFiles" />
-        <field name="CommonProgramFiles" />
-    </enum>
-    <enum name="PlatformID" namespace="System">
-        <field name="Win32S" />
-        <field name="Win32Windows" />
-        <field name="Win32NT" />
-    </enum>
-    <enum name="TypeCode" namespace="System">
-        <field name="Empty" />
-        <field name="Object" />
-        <field name="DBNull" />
-        <field name="Boolean" />
-        <field name="Char" />
-        <field name="SByte" />
-        <field name="Byte" />
-        <field name="Int16" />
-        <field name="UInt16" />
-        <field name="Int32" />
-        <field name="UInt32" />
-        <field name="Int64" />
-        <field name="UInt64" />
-        <field name="Single" />
-        <field name="Double" />
-        <field name="Decimal" />
-        <field name="DateTime" />
-        <field name="String" />
-    </enum>
-    <class name="ArrayList" namespace="System.Collections">
-        <constructor name="ArrayList()" argnames="" />
-        <constructor name="ArrayList(System.Int32)" argnames="capacity" />
-        <constructor name="ArrayList(System.Collections.ICollection)" argnames="c" />
-        <property name="Capacity" propertytype="System.Int32" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="item" returntype="System.Boolean" />
-        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="TrimToSize()" argnames="" returntype="System.Void" />
-        <method name="ToArray(System.Type)" argnames="type" returntype="System.Array" />
-        <method name="ToArray()" argnames="" returntype="System.Object[]" />
-        <method name="Sort(System.Int32, System.Int32, System.Collections.IComparer)" argnames="index, count, comparer" returntype="System.Void" />
-        <method name="Sort(System.Collections.IComparer)" argnames="comparer" returntype="System.Void" />
-        <method name="Sort()" argnames="" returntype="System.Void" />
-        <method name="GetRange(System.Int32, System.Int32)" argnames="index, count" returntype="System.Collections.ArrayList" />
-        <method name="SetRange(System.Int32, System.Collections.ICollection)" argnames="index, c" returntype="System.Void" />
-        <method name="Reverse(System.Int32, System.Int32)" argnames="index, count" returntype="System.Void" />
-        <method name="Reverse()" argnames="" returntype="System.Void" />
-        <method name="RemoveRange(System.Int32, System.Int32)" argnames="index, count" returntype="System.Void" />
-        <method name="LastIndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Object, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
-        <method name="LastIndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="InsertRange(System.Int32, System.Collections.ICollection)" argnames="index, c" returntype="System.Void" />
-        <method name="IndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
-        <method name="IndexOf(System.Object, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
-        <method name="GetEnumerator(System.Int32, System.Int32)" argnames="index, count" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Int32, System.Array, System.Int32, System.Int32)" argnames="index, array, arrayIndex, count" returntype="System.Void" />
-        <method name="CopyTo(System.Array)" argnames="array" returntype="System.Void" />
-        <method name="BinarySearch(System.Object, System.Collections.IComparer)" argnames="value, comparer" returntype="System.Int32" />
-        <method name="BinarySearch(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="BinarySearch(System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="index, count, value, comparer" returntype="System.Int32" />
-        <method name="AddRange(System.Collections.ICollection)" argnames="c" returntype="System.Void" />
-        <method name="Adapter(System.Collections.IList)" argnames="list" returntype="System.Collections.ArrayList" />
-        <method name="FixedSize(System.Collections.IList)" argnames="list" returntype="System.Collections.IList" />
-        <method name="FixedSize(System.Collections.ArrayList)" argnames="list" returntype="System.Collections.ArrayList" />
-        <method name="ReadOnly(System.Collections.IList)" argnames="list" returntype="System.Collections.IList" />
-        <method name="ReadOnly(System.Collections.ArrayList)" argnames="list" returntype="System.Collections.ArrayList" />
-        <method name="Repeat(System.Object, System.Int32)" argnames="value, count" returntype="System.Collections.ArrayList" />
-        <method name="Synchronized(System.Collections.IList)" argnames="list" returntype="System.Collections.IList" />
-        <method name="Synchronized(System.Collections.ArrayList)" argnames="list" returntype="System.Collections.ArrayList" />
-    </class>
-    <class name="BitArray" namespace="System.Collections">
-        <constructor name="BitArray(System.Int32)" argnames="length" />
-        <constructor name="BitArray(System.Int32, System.Boolean)" argnames="length, defaultValue" />
-        <constructor name="BitArray(System.Byte[])" argnames="bytes" />
-        <constructor name="BitArray(System.Boolean[])" argnames="values" />
-        <constructor name="BitArray(System.Int32[])" argnames="values" />
-        <constructor name="BitArray(System.Collections.BitArray)" argnames="bits" />
-        <property name="Item" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int32" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Get(System.Int32)" argnames="index" returntype="System.Boolean" />
-        <method name="Set(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Void" />
-        <method name="SetAll(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="And(System.Collections.BitArray)" argnames="value" returntype="System.Collections.BitArray" />
-        <method name="Or(System.Collections.BitArray)" argnames="value" returntype="System.Collections.BitArray" />
-        <method name="Xor(System.Collections.BitArray)" argnames="value" returntype="System.Collections.BitArray" />
-        <method name="Not()" argnames="" returntype="System.Collections.BitArray" />
-    </class>
-    <class name="CaseInsensitiveComparer" namespace="System.Collections">
-        <constructor name="CaseInsensitiveComparer()" argnames="" />
-        <constructor name="CaseInsensitiveComparer(System.Globalization.CultureInfo)" argnames="culture" />
-        <property name="Default" propertytype="System.Collections.CaseInsensitiveComparer" />
-        <method name="Compare(System.Object, System.Object)" argnames="a, b" returntype="System.Int32" />
-    </class>
-    <class name="CaseInsensitiveHashCodeProvider" namespace="System.Collections">
-        <constructor name="CaseInsensitiveHashCodeProvider()" argnames="" />
-        <constructor name="CaseInsensitiveHashCodeProvider(System.Globalization.CultureInfo)" argnames="culture" />
-        <property name="Default" propertytype="System.Collections.CaseInsensitiveHashCodeProvider" />
-        <method name="GetHashCode(System.Object)" argnames="obj" returntype="System.Int32" />
-    </class>
-    <class name="CollectionBase" namespace="System.Collections">
-        <constructor name="CollectionBase()" argnames="" />
-        <property name="InnerList" propertytype="System.Collections.ArrayList" />
-        <property name="List" propertytype="System.Collections.IList" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClearComplete()" argnames="" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnClear()" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
-    </class>
-    <class name="Comparer" namespace="System.Collections">
-        <field name="Default" />
-        <method name="Compare(System.Object, System.Object)" argnames="a, b" returntype="System.Int32" />
-    </class>
-    <class name="DictionaryBase" namespace="System.Collections">
-        <constructor name="DictionaryBase()" argnames="" />
-        <property name="InnerHashtable" propertytype="System.Collections.Hashtable" />
-        <property name="Dictionary" propertytype="System.Collections.IDictionary" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="OnClearComplete()" argnames="" returntype="System.Void" />
-        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" returntype="System.Void" />
-        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="OnClear()" argnames="" returntype="System.Void" />
-        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" returntype="System.Void" />
-        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" returntype="System.Object" />
-    </class>
-    <class name="Hashtable" namespace="System.Collections">
-        <constructor name="Hashtable()" argnames="" />
-        <constructor name="Hashtable(System.Int32)" argnames="capacity" />
-        <constructor name="Hashtable(System.Int32, System.Single)" argnames="capacity, loadFactor" />
-        <constructor name="Hashtable(System.Int32, System.Single, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, loadFactor, hcp, comparer" />
-        <constructor name="Hashtable(System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="hcp, comparer" />
-        <constructor name="Hashtable(System.Int32, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, hcp, comparer" />
-        <constructor name="Hashtable(System.Collections.IDictionary)" argnames="d" />
-        <constructor name="Hashtable(System.Collections.IDictionary, System.Single)" argnames="d, loadFactor" />
-        <constructor name="Hashtable(System.Collections.IDictionary, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="d, hcp, comparer" />
-        <constructor name="Hashtable(System.Collections.IDictionary, System.Single, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="d, loadFactor, hcp, comparer" />
-        <constructor name="Hashtable(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="hcp" propertytype="System.Collections.IHashCodeProvider" />
-        <property name="comparer" propertytype="System.Collections.IComparer" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="KeyEquals(System.Object, System.Object)" argnames="item, key" returntype="System.Boolean" />
-        <method name="GetHash(System.Object)" argnames="key" returntype="System.Int32" />
-        <method name="ContainsValue(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ContainsKey(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="Synchronized(System.Collections.Hashtable)" argnames="table" returntype="System.Collections.Hashtable" />
-    </class>
-    <class name="Queue" namespace="System.Collections">
-        <constructor name="Queue()" argnames="" />
-        <constructor name="Queue(System.Int32)" argnames="capacity" />
-        <constructor name="Queue(System.Int32, System.Single)" argnames="capacity, growFactor" />
-        <constructor name="Queue(System.Collections.ICollection)" argnames="col" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="TrimToSize()" argnames="" returntype="System.Void" />
-        <method name="ToArray()" argnames="" returntype="System.Object[]" />
-        <method name="Contains(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="Peek()" argnames="" returntype="System.Object" />
-        <method name="Dequeue()" argnames="" returntype="System.Object" />
-        <method name="Enqueue(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Synchronized(System.Collections.Queue)" argnames="queue" returntype="System.Collections.Queue" />
-    </class>
-    <class name="ReadOnlyCollectionBase" namespace="System.Collections">
-        <constructor name="ReadOnlyCollectionBase()" argnames="" />
-        <property name="InnerList" propertytype="System.Collections.ArrayList" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-    </class>
-    <class name="SortedList" namespace="System.Collections">
-        <constructor name="SortedList()" argnames="" />
-        <constructor name="SortedList(System.Int32)" argnames="initialCapacity" />
-        <constructor name="SortedList(System.Collections.IComparer)" argnames="comparer" />
-        <constructor name="SortedList(System.Collections.IComparer, System.Int32)" argnames="comparer, capacity" />
-        <constructor name="SortedList(System.Collections.IDictionary)" argnames="d" />
-        <constructor name="SortedList(System.Collections.IDictionary, System.Collections.IComparer)" argnames="d, comparer" />
-        <property name="Capacity" propertytype="System.Int32" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="TrimToSize()" argnames="" returntype="System.Void" />
-        <method name="SetByIndex(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="IndexOfValue(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="IndexOfKey(System.Object)" argnames="key" returntype="System.Int32" />
-        <method name="GetValueList()" argnames="" returntype="System.Collections.IList" />
-        <method name="GetKeyList()" argnames="" returntype="System.Collections.IList" />
-        <method name="GetKey(System.Int32)" argnames="index" returntype="System.Object" />
-        <method name="GetByIndex(System.Int32)" argnames="index" returntype="System.Object" />
-        <method name="ContainsValue(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ContainsKey(System.Object)" argnames="key" returntype="System.Boolean" />
-        <method name="Synchronized(System.Collections.SortedList)" argnames="list" returntype="System.Collections.SortedList" />
-    </class>
-    <class name="Stack" namespace="System.Collections">
-        <constructor name="Stack()" argnames="" />
-        <constructor name="Stack(System.Int32)" argnames="initialCapacity" />
-        <constructor name="Stack(System.Collections.ICollection)" argnames="col" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="ToArray()" argnames="" returntype="System.Object[]" />
-        <method name="Push(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="Pop()" argnames="" returntype="System.Object" />
-        <method name="Peek()" argnames="" returntype="System.Object" />
-        <method name="Contains(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Synchronized(System.Collections.Stack)" argnames="stack" returntype="System.Collections.Stack" />
-    </class>
-    <interface name="IEnumerable" namespace="System.Collections">
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-    </interface>
-    <interface name="ICollection" namespace="System.Collections">
-        <property name="Count" propertytype="System.Int32" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-    </interface>
-    <interface name="IList" namespace="System.Collections">
-        <property name="Item" propertytype="System.Object" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
-        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
-    </interface>
-    <interface name="IEnumerator" namespace="System.Collections">
-        <property name="Current" propertytype="System.Object" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
-    </interface>
-    <interface name="IComparer" namespace="System.Collections">
-        <method name="Compare(System.Object, System.Object)" argnames="x, y" returntype="System.Int32" />
-    </interface>
-    <interface name="IHashCodeProvider" namespace="System.Collections">
-        <method name="GetHashCode(System.Object)" argnames="obj" returntype="System.Int32" />
-    </interface>
-    <interface name="IDictionary" namespace="System.Collections">
-        <property name="Item" propertytype="System.Object" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
-    </interface>
-    <interface name="IDictionaryEnumerator" namespace="System.Collections">
-        <property name="Key" propertytype="System.Object" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="Entry" propertytype="System.Collections.DictionaryEntry" />
-    </interface>
-    <struct name="DictionaryEntry" namespace="System.Collections">
-        <constructor name="DictionaryEntry(System.Object, System.Object)" argnames="key, value" />
-        <property name="Key" propertytype="System.Object" />
-        <property name="Value" propertytype="System.Object" />
-    </struct>
-    <class name="StringBuilder" namespace="System.Text">
-        <constructor name="StringBuilder()" argnames="" />
-        <constructor name="StringBuilder(System.Int32)" argnames="capacity" />
-        <constructor name="StringBuilder(System.String)" argnames="value" />
-        <constructor name="StringBuilder(System.String, System.Int32)" argnames="value, capacity" />
-        <constructor name="StringBuilder(System.String, System.Int32, System.Int32, System.Int32)" argnames="value, startIndex, length, capacity" />
-        <constructor name="StringBuilder(System.Int32, System.Int32)" argnames="capacity, maxCapacity" />
-        <property name="Capacity" propertytype="System.Int32" />
-        <property name="MaxCapacity" propertytype="System.Int32" />
-        <property name="Length" propertytype="System.Int32" />
-        <property name="Chars" propertytype="System.Char" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="EnsureCapacity(System.Int32)" argnames="capacity" returntype="System.Int32" />
-        <method name="ToString(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.String" />
-        <method name="Append(System.Char, System.Int32)" argnames="value, repeatCount" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Char[], System.Int32, System.Int32)" argnames="value, startIndex, charCount" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.String)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.String, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.String, System.Int32)" argnames="index, value, count" returntype="System.Text.StringBuilder" />
-        <method name="Remove(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Boolean)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.SByte)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Byte)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Char)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Int16)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Int32)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Int64)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Single)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Double)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Decimal)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.UInt16)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.UInt32)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.UInt64)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Object)" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Append(System.Char[])" argnames="value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.String)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.SByte)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Byte)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Int16)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Char)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Char[])" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Char[], System.Int32, System.Int32)" argnames="index, value, startIndex, charCount" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Int32)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Int64)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Single)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Double)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Decimal)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.UInt16)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.UInt32)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.UInt64)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Text.StringBuilder" />
-        <method name="AppendFormat(System.String, System.Object)" argnames="format, arg0" returntype="System.Text.StringBuilder" />
-        <method name="AppendFormat(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Text.StringBuilder" />
-        <method name="AppendFormat(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Text.StringBuilder" />
-        <method name="AppendFormat(System.String, System.Object[])" argnames="format, args" returntype="System.Text.StringBuilder" />
-        <method name="AppendFormat(System.IFormatProvider, System.String, System.Object[])" argnames="provider, format, args" returntype="System.Text.StringBuilder" />
-        <method name="Replace(System.String, System.String)" argnames="oldValue, newValue" returntype="System.Text.StringBuilder" />
-        <method name="Replace(System.String, System.String, System.Int32, System.Int32)" argnames="oldValue, newValue, startIndex, count" returntype="System.Text.StringBuilder" />
-        <method name="Equals(System.Text.StringBuilder)" argnames="sb" returntype="System.Boolean" />
-        <method name="Replace(System.Char, System.Char)" argnames="oldChar, newChar" returntype="System.Text.StringBuilder" />
-        <method name="Replace(System.Char, System.Char, System.Int32, System.Int32)" argnames="oldChar, newChar, startIndex, count" returntype="System.Text.StringBuilder" />
-    </class>
-    <class name="Encoding" namespace="System.Text">
-        <constructor name="Encoding()" argnames="" />
-        <constructor name="Encoding(System.Int32)" argnames="codePage" />
-        <property name="BodyName" propertytype="System.String" />
-        <property name="EncodingName" propertytype="System.String" />
-        <property name="HeaderName" propertytype="System.String" />
-        <property name="WebName" propertytype="System.String" />
-        <property name="WindowsCodePage" propertytype="System.Int32" />
-        <property name="IsBrowserDisplay" propertytype="System.Boolean" />
-        <property name="IsBrowserSave" propertytype="System.Boolean" />
-        <property name="IsMailNewsDisplay" propertytype="System.Boolean" />
-        <property name="IsMailNewsSave" propertytype="System.Boolean" />
-        <property name="ASCII" propertytype="System.Text.Encoding" />
-        <property name="CodePage" propertytype="System.Int32" />
-        <property name="Default" propertytype="System.Text.Encoding" />
-        <property name="Unicode" propertytype="System.Text.Encoding" />
-        <property name="BigEndianUnicode" propertytype="System.Text.Encoding" />
-        <property name="UTF7" propertytype="System.Text.Encoding" />
-        <property name="UTF8" propertytype="System.Text.Encoding" />
-        <method name="GetString(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.String" />
-        <method name="GetString(System.Byte[])" argnames="bytes" returntype="System.String" />
-        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
-        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
-        <method name="GetEncoder()" argnames="" returntype="System.Text.Encoder" />
-        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
-        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
-        <method name="GetChars(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Char[]" />
-        <method name="GetChars(System.Byte[])" argnames="bytes" returntype="System.Char[]" />
-        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
-        <method name="GetCharCount(System.Byte[])" argnames="bytes" returntype="System.Int32" />
-        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="s, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetBytes(System.String)" argnames="s" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetBytes(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Char[])" argnames="chars" returntype="System.Byte[]" />
-        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
-        <method name="GetByteCount(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="GetByteCount(System.Char[])" argnames="chars" returntype="System.Int32" />
-        <method name="GetPreamble()" argnames="" returntype="System.Byte[]" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Convert(System.Text.Encoding, System.Text.Encoding, System.Byte[])" argnames="srcEncoding, dstEncoding, bytes" returntype="System.Byte[]" />
-        <method name="Convert(System.Text.Encoding, System.Text.Encoding, System.Byte[], System.Int32, System.Int32)" argnames="srcEncoding, dstEncoding, bytes, index, count" returntype="System.Byte[]" />
-        <method name="GetEncoding(System.Int32)" argnames="codepage" returntype="System.Text.Encoding" />
-        <method name="GetEncoding(System.String)" argnames="name" returntype="System.Text.Encoding" />
-    </class>
-    <class name="Decoder" namespace="System.Text">
-        <constructor name="Decoder()" argnames="" />
-        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
-        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
-    </class>
-    <class name="Encoder" namespace="System.Text">
-        <constructor name="Encoder()" argnames="" />
-        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32, System.Boolean)" argnames="chars, charIndex, charCount, bytes, byteIndex, flush" returntype="System.Int32" />
-        <method name="GetByteCount(System.Char[], System.Int32, System.Int32, System.Boolean)" argnames="chars, index, count, flush" returntype="System.Int32" />
-    </class>
-    <class name="ASCIIEncoding" namespace="System.Text">
-        <constructor name="ASCIIEncoding()" argnames="" />
-        <method name="GetString(System.Byte[], System.Int32, System.Int32)" argnames="bytes, byteIndex, byteCount" returntype="System.String" />
-        <method name="GetString(System.Byte[])" argnames="bytes" returntype="System.String" />
-        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
-        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
-        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
-        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
-        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
-        <method name="GetByteCount(System.String)" argnames="chars" returntype="System.Int32" />
-    </class>
-    <class name="UnicodeEncoding" namespace="System.Text">
-        <constructor name="UnicodeEncoding()" argnames="" />
-        <constructor name="UnicodeEncoding(System.Boolean, System.Boolean)" argnames="bigEndian, byteOrderMark" />
-        <field name="CharSize" />
-        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
-        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
-        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
-        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
-        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
-        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="s, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetBytes(System.String)" argnames="s" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
-        <method name="GetByteCount(System.String)" argnames="s" returntype="System.Int32" />
-        <method name="GetPreamble()" argnames="" returntype="System.Byte[]" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-    </class>
-    <class name="UTF7Encoding" namespace="System.Text">
-        <constructor name="UTF7Encoding()" argnames="" />
-        <constructor name="UTF7Encoding(System.Boolean)" argnames="allowOptionals" />
-        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
-        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
-        <method name="GetEncoder()" argnames="" returntype="System.Text.Encoder" />
-        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
-        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
-        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
-        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
-    </class>
-    <class name="UTF8Encoding" namespace="System.Text">
-        <constructor name="UTF8Encoding()" argnames="" />
-        <constructor name="UTF8Encoding(System.Boolean)" argnames="encoderShouldEmitUTF8Identifier" />
-        <constructor name="UTF8Encoding(System.Boolean, System.Boolean)" argnames="encoderShouldEmitUTF8Identifier, throwOnInvalidBytes" />
-        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
-        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
-        <method name="GetEncoder()" argnames="" returntype="System.Text.Encoder" />
-        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
-        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
-        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
-        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="s, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetBytes(System.String)" argnames="s" returntype="System.Byte[]" />
-        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
-        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
-        <method name="GetByteCount(System.String)" argnames="chars" returntype="System.Int32" />
-        <method name="GetPreamble()" argnames="" returntype="System.Byte[]" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-    </class>
-    <class name="Formatter" namespace="System.Runtime.Serialization">
-        <constructor name="Formatter()" argnames="" />
-        <field name="m_idGenerator" />
-        <field name="m_objectQueue" />
-        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
-        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
-        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
-        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
-        <method name="WriteValueType(System.Object, System.String, System.Type)" argnames="obj, name, memberType" returntype="System.Void" />
-        <method name="WriteUInt64(System.UInt64, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteUInt32(System.UInt32, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteUInt16(System.UInt16, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteTimeSpan(System.TimeSpan, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteSingle(System.Single, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteSByte(System.SByte, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteMember(System.String, System.Object)" argnames="memberName, data" returntype="System.Void" />
-        <method name="WriteObjectRef(System.Object, System.String, System.Type)" argnames="obj, name, memberType" returntype="System.Void" />
-        <method name="WriteInt64(System.Int64, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteInt32(System.Int32, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteInt16(System.Int16, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteDouble(System.Double, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteDecimal(System.Decimal, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteDateTime(System.DateTime, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteChar(System.Char, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteByte(System.Byte, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteBoolean(System.Boolean, System.String)" argnames="val, name" returntype="System.Void" />
-        <method name="WriteArray(System.Object, System.String, System.Type)" argnames="obj, name, memberType" returntype="System.Void" />
-        <method name="Schedule(System.Object)" argnames="obj" returntype="System.Int64" />
-        <method name="GetNext(System.Int64&amp;)" argnames="objID" returntype="System.Object" />
-    </class>
-    <class name="FormatterConverter" namespace="System.Runtime.Serialization">
-        <constructor name="FormatterConverter()" argnames="" />
-        <method name="ToString(System.Object)" argnames="value" returntype="System.String" />
-        <method name="ToDateTime(System.Object)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDecimal(System.Object)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDouble(System.Object)" argnames="value" returntype="System.Double" />
-        <method name="ToSingle(System.Object)" argnames="value" returntype="System.Single" />
-        <method name="ToUInt64(System.Object)" argnames="value" returntype="System.UInt64" />
-        <method name="ToInt64(System.Object)" argnames="value" returntype="System.Int64" />
-        <method name="ToUInt32(System.Object)" argnames="value" returntype="System.UInt32" />
-        <method name="ToInt32(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="ToUInt16(System.Object)" argnames="value" returntype="System.UInt16" />
-        <method name="ToInt16(System.Object)" argnames="value" returntype="System.Int16" />
-        <method name="ToByte(System.Object)" argnames="value" returntype="System.Byte" />
-        <method name="ToSByte(System.Object)" argnames="value" returntype="System.SByte" />
-        <method name="ToChar(System.Object)" argnames="value" returntype="System.Char" />
-        <method name="ToBoolean(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Convert(System.Object, System.TypeCode)" argnames="value, typeCode" returntype="System.Object" />
-        <method name="Convert(System.Object, System.Type)" argnames="value, type" returntype="System.Object" />
-    </class>
-    <class name="FormatterServices" namespace="System.Runtime.Serialization">
-        <method name="GetSerializableMembers(System.Type)" argnames="type" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetSerializableMembers(System.Type, System.Runtime.Serialization.StreamingContext)" argnames="type, context" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetUninitializedObject(System.Type)" argnames="type" returntype="System.Object" />
-        <method name="PopulateObjectMembers(System.Object, System.Reflection.MemberInfo[], System.Object[])" argnames="obj, members, data" returntype="System.Object" />
-        <method name="GetObjectData(System.Object, System.Reflection.MemberInfo[])" argnames="obj, members" returntype="System.Object[]" />
-        <method name="GetTypeFromAssembly(System.Reflection.Assembly, System.String)" argnames="assem, name" returntype="System.Type" />
-    </class>
-    <class name="ObjectIDGenerator" namespace="System.Runtime.Serialization">
-        <constructor name="ObjectIDGenerator()" argnames="" />
-        <method name="HasId(System.Object, System.Boolean&amp;)" argnames="obj, firstTime" returntype="System.Int64" />
-        <method name="GetId(System.Object, System.Boolean&amp;)" argnames="obj, firstTime" returntype="System.Int64" />
-    </class>
-    <class name="ObjectManager" namespace="System.Runtime.Serialization">
-        <constructor name="ObjectManager(System.Runtime.Serialization.ISurrogateSelector, System.Runtime.Serialization.StreamingContext)" argnames="selector, context" />
-        <property name="SpecialFixupObjects" propertytype="System.Runtime.Serialization.ObjectHolderList" />
-        <method name="RaiseDeserializationEvent()" argnames="" returntype="System.Void" />
-        <method name="RecordArrayElementFixup(System.Int64, System.Int32[], System.Int64)" argnames="arrayToBeFixed, indices, objectRequired" returntype="System.Void" />
-        <method name="RecordArrayElementFixup(System.Int64, System.Int32, System.Int64)" argnames="arrayToBeFixed, index, objectRequired" returntype="System.Void" />
-        <method name="RecordDelayedFixup(System.Int64, System.String, System.Int64)" argnames="objectToBeFixed, memberName, objectRequired" returntype="System.Void" />
-        <method name="RecordFixup(System.Int64, System.Reflection.MemberInfo, System.Int64)" argnames="objectToBeFixed, member, objectRequired" returntype="System.Void" />
-        <method name="DoFixups()" argnames="" returntype="System.Void" />
-        <method name="RegisterObject(System.Object, System.Int64)" argnames="obj, objectID" returntype="System.Void" />
-        <method name="GetObject(System.Int64)" argnames="objectID" returntype="System.Object" />
-        <method name="RegisterObject(System.Object, System.Int64, System.Runtime.Serialization.SerializationInfo)" argnames="obj, objectID, info" returntype="System.Void" />
-        <method name="RegisterObject(System.Object, System.Int64, System.Runtime.Serialization.SerializationInfo, System.Int64, System.Reflection.MemberInfo)" argnames="obj, objectID, info, idOfContainingObj, member" returntype="System.Void" />
-        <method name="RegisterObject(System.Object, System.Int64, System.Runtime.Serialization.SerializationInfo, System.Int64, System.Reflection.MemberInfo, System.Int32[])" argnames="obj, objectID, info, idOfContainingObj, member, arrayIndex" returntype="System.Void" />
-    </class>
-    <class name="SerializationBinder" namespace="System.Runtime.Serialization">
-        <constructor name="SerializationBinder()" argnames="" />
-        <method name="BindToType(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Type" />
-    </class>
-    <class name="SerializationInfo" namespace="System.Runtime.Serialization">
-        <constructor name="SerializationInfo(System.Type, System.Runtime.Serialization.IFormatterConverter)" argnames="type, converter" />
-        <property name="FullTypeName" propertytype="System.String" />
-        <property name="AssemblyName" propertytype="System.String" />
-        <property name="MemberCount" propertytype="System.Int32" />
-        <method name="SetType(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Runtime.Serialization.SerializationInfoEnumerator" />
-        <method name="AddValue(System.String, System.Object, System.Type)" argnames="name, value, type" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Boolean)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Char)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.SByte)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Byte)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Int16)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.UInt16)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Int32)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.UInt32)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Int64)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.UInt64)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Single)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Double)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.Decimal)" argnames="name, value" returntype="System.Void" />
-        <method name="AddValue(System.String, System.DateTime)" argnames="name, value" returntype="System.Void" />
-        <method name="GetValue(System.String, System.Type)" argnames="name, type" returntype="System.Object" />
-        <method name="GetBoolean(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="GetChar(System.String)" argnames="name" returntype="System.Char" />
-        <method name="GetSByte(System.String)" argnames="name" returntype="System.SByte" />
-        <method name="GetByte(System.String)" argnames="name" returntype="System.Byte" />
-        <method name="GetInt16(System.String)" argnames="name" returntype="System.Int16" />
-        <method name="GetUInt16(System.String)" argnames="name" returntype="System.UInt16" />
-        <method name="GetInt32(System.String)" argnames="name" returntype="System.Int32" />
-        <method name="GetUInt32(System.String)" argnames="name" returntype="System.UInt32" />
-        <method name="GetInt64(System.String)" argnames="name" returntype="System.Int64" />
-        <method name="GetUInt64(System.String)" argnames="name" returntype="System.UInt64" />
-        <method name="GetSingle(System.String)" argnames="name" returntype="System.Single" />
-        <method name="GetDouble(System.String)" argnames="name" returntype="System.Double" />
-        <method name="GetDecimal(System.String)" argnames="name" returntype="System.Decimal" />
-        <method name="GetDateTime(System.String)" argnames="name" returntype="System.DateTime" />
-        <method name="GetString(System.String)" argnames="name" returntype="System.String" />
-    </class>
-    <class name="SerializationInfoEnumerator" namespace="System.Runtime.Serialization">
-        <property name="Current" propertytype="System.Runtime.Serialization.SerializationEntry" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Value" propertytype="System.Object" />
-        <property name="ObjectType" propertytype="System.Type" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="SerializationException" namespace="System.Runtime.Serialization">
-        <constructor name="SerializationException()" argnames="" />
-        <constructor name="SerializationException(System.String)" argnames="message" />
-        <constructor name="SerializationException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="SerializationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="SurrogateSelector" namespace="System.Runtime.Serialization">
-        <constructor name="SurrogateSelector()" argnames="" />
-        <method name="GetNextSelector()" argnames="" returntype="System.Runtime.Serialization.ISurrogateSelector" />
-        <method name="GetSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector&amp;)" argnames="type, context, selector" returntype="System.Runtime.Serialization.ISerializationSurrogate" />
-        <method name="ChainSelector(System.Runtime.Serialization.ISurrogateSelector)" argnames="selector" returntype="System.Void" />
-        <method name="RemoveSurrogate(System.Type, System.Runtime.Serialization.StreamingContext)" argnames="type, context" returntype="System.Void" />
-        <method name="AddSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISerializationSurrogate)" argnames="type, context, surrogate" returntype="System.Void" />
-    </class>
-    <interface name="ISerializable" namespace="System.Runtime.Serialization">
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </interface>
-    <interface name="IObjectReference" namespace="System.Runtime.Serialization">
-        <method name="GetRealObject(System.Runtime.Serialization.StreamingContext)" argnames="context" returntype="System.Object" />
-    </interface>
-    <interface name="IDeserializationCallback" namespace="System.Runtime.Serialization">
-        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
-    </interface>
-    <interface name="IFormatter" namespace="System.Runtime.Serialization">
-        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
-        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
-        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
-        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
-    </interface>
-    <interface name="IFormatterConverter" namespace="System.Runtime.Serialization">
-        <method name="ToString(System.Object)" argnames="value" returntype="System.String" />
-        <method name="ToDateTime(System.Object)" argnames="value" returntype="System.DateTime" />
-        <method name="ToDecimal(System.Object)" argnames="value" returntype="System.Decimal" />
-        <method name="ToDouble(System.Object)" argnames="value" returntype="System.Double" />
-        <method name="ToSingle(System.Object)" argnames="value" returntype="System.Single" />
-        <method name="ToUInt64(System.Object)" argnames="value" returntype="System.UInt64" />
-        <method name="ToInt64(System.Object)" argnames="value" returntype="System.Int64" />
-        <method name="ToUInt32(System.Object)" argnames="value" returntype="System.UInt32" />
-        <method name="ToInt32(System.Object)" argnames="value" returntype="System.Int32" />
-        <method name="ToUInt16(System.Object)" argnames="value" returntype="System.UInt16" />
-        <method name="ToInt16(System.Object)" argnames="value" returntype="System.Int16" />
-        <method name="ToByte(System.Object)" argnames="value" returntype="System.Byte" />
-        <method name="ToSByte(System.Object)" argnames="value" returntype="System.SByte" />
-        <method name="ToChar(System.Object)" argnames="value" returntype="System.Char" />
-        <method name="ToBoolean(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="Convert(System.Object, System.TypeCode)" argnames="value, typeCode" returntype="System.Object" />
-        <method name="Convert(System.Object, System.Type)" argnames="value, type" returntype="System.Object" />
-    </interface>
-    <interface name="ISerializationSurrogate" namespace="System.Runtime.Serialization">
-        <method name="SetObjectData(System.Object, System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector)" argnames="obj, info, context, selector" returntype="System.Object" />
-        <method name="GetObjectData(System.Object, System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="obj, info, context" returntype="System.Void" />
-    </interface>
-    <interface name="ISurrogateSelector" namespace="System.Runtime.Serialization">
-        <method name="GetNextSelector()" argnames="" returntype="System.Runtime.Serialization.ISurrogateSelector" />
-        <method name="GetSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector&amp;)" argnames="type, context, selector" returntype="System.Runtime.Serialization.ISerializationSurrogate" />
-        <method name="ChainSelector(System.Runtime.Serialization.ISurrogateSelector)" argnames="selector" returntype="System.Void" />
-    </interface>
-    <struct name="SerializationEntry" namespace="System.Runtime.Serialization">
-        <property name="Value" propertytype="System.Object" />
-        <property name="Name" propertytype="System.String" />
-        <property name="ObjectType" propertytype="System.Type" />
-    </struct>
-    <struct name="StreamingContext" namespace="System.Runtime.Serialization">
-        <constructor name="StreamingContext(System.Runtime.Serialization.StreamingContextStates)" argnames="state" />
-        <constructor name="StreamingContext(System.Runtime.Serialization.StreamingContextStates, System.Object)" argnames="state, additional" />
-        <property name="Context" propertytype="System.Object" />
-        <property name="State" propertytype="System.Runtime.Serialization.StreamingContextStates" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <enum name="StreamingContextStates" namespace="System.Runtime.Serialization">
-        <field name="CrossProcess" />
-        <field name="CrossMachine" />
-        <field name="File" />
-        <field name="Persistence" />
-        <field name="Remoting" />
-        <field name="Other" />
-        <field name="Clone" />
-        <field name="CrossAppDomain" />
-        <field name="All" />
-    </enum>
-    <class name="PermissionSet" namespace="System.Security">
-        <constructor name="PermissionSet(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="PermissionSet(System.Security.PermissionSet)" argnames="permSet" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <method name="PermitOnly()" argnames="" returntype="System.Void" />
-        <method name="Deny()" argnames="" returntype="System.Void" />
-        <method name="Demand()" argnames="" returntype="System.Void" />
-        <method name="Assert()" argnames="" returntype="System.Void" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="et" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.PermissionSet" />
-        <method name="Union(System.Security.PermissionSet)" argnames="other" returntype="System.Security.PermissionSet" />
-        <method name="Intersect(System.Security.PermissionSet)" argnames="other" returntype="System.Security.PermissionSet" />
-        <method name="IsSubsetOf(System.Security.PermissionSet)" argnames="target" returntype="System.Boolean" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="RemovePermission(System.Type)" argnames="permClass" returntype="System.Security.IPermission" />
-        <method name="AddPermission(System.Security.IPermission)" argnames="perm" returntype="System.Security.IPermission" />
-        <method name="SetPermission(System.Security.IPermission)" argnames="perm" returntype="System.Security.IPermission" />
-        <method name="GetPermission(System.Type)" argnames="permClass" returntype="System.Security.IPermission" />
-        <method name="IsEmpty()" argnames="" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ConvertPermissionSet(System.String, System.Byte[], System.String)" argnames="inFormat, inData, outFormat" returntype="System.Byte[]" />
-        <method name="ContainsNonCodeAccessPermissions()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="NamedPermissionSet" namespace="System.Security">
-        <constructor name="NamedPermissionSet(System.String)" argnames="name" />
-        <constructor name="NamedPermissionSet(System.String, System.Security.Permissions.PermissionState)" argnames="name, state" />
-        <constructor name="NamedPermissionSet(System.String, System.Security.PermissionSet)" argnames="name, permSet" />
-        <constructor name="NamedPermissionSet(System.Security.NamedPermissionSet)" argnames="permSet" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Description" propertytype="System.String" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="et" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.PermissionSet" />
-        <method name="Copy(System.String)" argnames="name" returntype="System.Security.NamedPermissionSet" />
-    </class>
-    <class name="SecurityElement" namespace="System.Security">
-        <constructor name="SecurityElement(System.String)" argnames="tag" />
-        <constructor name="SecurityElement(System.String, System.String)" argnames="tag, text" />
-        <property name="Tag" propertytype="System.String" />
-        <property name="Attributes" propertytype="System.Collections.Hashtable" />
-        <property name="Text" propertytype="System.String" />
-        <property name="Children" propertytype="System.Collections.ArrayList" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="AddAttribute(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-        <method name="AddChild(System.Security.SecurityElement)" argnames="child" returntype="System.Void" />
-        <method name="Equal(System.Security.SecurityElement)" argnames="other" returntype="System.Boolean" />
-        <method name="IsValidTag(System.String)" argnames="tag" returntype="System.Boolean" />
-        <method name="IsValidText(System.String)" argnames="text" returntype="System.Boolean" />
-        <method name="IsValidAttributeName(System.String)" argnames="name" returntype="System.Boolean" />
-        <method name="IsValidAttributeValue(System.String)" argnames="value" returntype="System.Boolean" />
-        <method name="Escape(System.String)" argnames="str" returntype="System.String" />
-        <method name="Attribute(System.String)" argnames="name" returntype="System.String" />
-        <method name="SearchForChildByTag(System.String)" argnames="tag" returntype="System.Security.SecurityElement" />
-        <method name="SearchForTextOfTag(System.String)" argnames="tag" returntype="System.String" />
-    </class>
-    <class name="XmlSyntaxException" namespace="System.Security">
-        <constructor name="XmlSyntaxException()" argnames="" />
-        <constructor name="XmlSyntaxException(System.String)" argnames="message" />
-        <constructor name="XmlSyntaxException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="XmlSyntaxException(System.Int32)" argnames="lineNumber" />
-        <constructor name="XmlSyntaxException(System.Int32, System.String)" argnames="lineNumber, message" />
-    </class>
-    <class name="CodeAccessPermission" namespace="System.Security">
-        <constructor name="CodeAccessPermission()" argnames="" />
-        <method name="PermitOnly()" argnames="" returntype="System.Void" />
-        <method name="Deny()" argnames="" returntype="System.Void" />
-        <method name="Assert()" argnames="" returntype="System.Void" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="elem" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand()" argnames="" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="RevertAssert()" argnames="" returntype="System.Void" />
-        <method name="RevertDeny()" argnames="" returntype="System.Void" />
-        <method name="RevertPermitOnly()" argnames="" returntype="System.Void" />
-        <method name="RevertAll()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="SuppressUnmanagedCodeSecurityAttribute" namespace="System.Security">
-        <constructor name="SuppressUnmanagedCodeSecurityAttribute()" argnames="" />
-    </class>
-    <class name="UnverifiableCodeAttribute" namespace="System.Security">
-        <constructor name="UnverifiableCodeAttribute()" argnames="" />
-    </class>
-    <class name="AllowPartiallyTrustedCallersAttribute" namespace="System.Security">
-        <constructor name="AllowPartiallyTrustedCallersAttribute()" argnames="" />
-    </class>
-    <class name="SecurityException" namespace="System.Security">
-        <constructor name="SecurityException()" argnames="" />
-        <constructor name="SecurityException(System.String)" argnames="message" />
-        <constructor name="SecurityException(System.String, System.Type)" argnames="message, type" />
-        <constructor name="SecurityException(System.String, System.Type, System.String)" argnames="message, type, state" />
-        <constructor name="SecurityException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="SecurityException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="PermissionType" propertytype="System.Type" />
-        <property name="PermissionState" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="SecurityManager" namespace="System.Security">
-        <property name="CheckExecutionRights" propertytype="System.Boolean" />
-        <property name="SecurityEnabled" propertytype="System.Boolean" />
-        <method name="IsGranted(System.Security.IPermission)" argnames="perm" returntype="System.Boolean" />
-        <method name="LoadPolicyLevelFromFile(System.String, System.Security.PolicyLevelType)" argnames="path, type" returntype="System.Security.Policy.PolicyLevel" />
-        <method name="LoadPolicyLevelFromString(System.String, System.Security.PolicyLevelType)" argnames="str, type" returntype="System.Security.Policy.PolicyLevel" />
-        <method name="SavePolicyLevel(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Void" />
-        <method name="ResolvePolicy(System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet&amp;)" argnames="evidence, reqdPset, optPset, denyPset, denied" returntype="System.Security.PermissionSet" />
-        <method name="ResolvePolicy(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.PermissionSet" />
-        <method name="ResolvePolicyGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Collections.IEnumerator" />
-        <method name="PolicyHierarchy()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="SavePolicy()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="VerificationException" namespace="System.Security">
-        <constructor name="VerificationException()" argnames="" />
-        <constructor name="VerificationException(System.String)" argnames="message" />
-        <constructor name="VerificationException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="VerificationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <interface name="IEvidenceFactory" namespace="System.Security">
-        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
-    </interface>
-    <interface name="ISecurityEncodable" namespace="System.Security">
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-    </interface>
-    <interface name="ISecurityPolicyEncodable" namespace="System.Security">
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-    </interface>
-    <interface name="IStackWalk" namespace="System.Security">
-        <method name="PermitOnly()" argnames="" returntype="System.Void" />
-        <method name="Deny()" argnames="" returntype="System.Void" />
-        <method name="Demand()" argnames="" returntype="System.Void" />
-        <method name="Assert()" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IPermission" namespace="System.Security">
-        <method name="Demand()" argnames="" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </interface>
-    <enum name="PolicyLevelType" namespace="System.Security">
-        <field name="User" />
-        <field name="Machine" />
-        <field name="Enterprise" />
-        <field name="AppDomain" />
-    </enum>
-    <enum name="SecurityZone" namespace="System.Security">
-        <field name="MyComputer" />
-        <field name="Intranet" />
-        <field name="Trusted" />
-        <field name="Internet" />
-        <field name="Untrusted" />
-        <field name="NoZone" />
-    </enum>
-    <class name="Binder" namespace="System.Reflection">
-        <constructor name="Binder()" argnames="" />
-        <method name="ReorderArgumentArray(System.Object[]&amp;, System.Object)" argnames="args, state" returntype="System.Void" />
-        <method name="ChangeType(System.Object, System.Type, System.Globalization.CultureInfo)" argnames="value, type, culture" returntype="System.Object" />
-        <method name="SelectProperty(System.Reflection.BindingFlags, System.Reflection.PropertyInfo[], System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, match, returnType, indexes, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="SelectMethod(System.Reflection.BindingFlags, System.Reflection.MethodBase[], System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, match, types, modifiers" returntype="System.Reflection.MethodBase" />
-        <method name="BindToField(System.Reflection.BindingFlags, System.Reflection.FieldInfo[], System.Object, System.Globalization.CultureInfo)" argnames="bindingAttr, match, value, culture" returntype="System.Reflection.FieldInfo" />
-        <method name="BindToMethod(System.Reflection.BindingFlags, System.Reflection.MethodBase[], System.Object[]&amp;, System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[], System.Object&amp;)" argnames="bindingAttr, match, args, modifiers, culture, names, state" returntype="System.Reflection.MethodBase" />
-    </class>
-    <class name="MemberInfo" namespace="System.Reflection">
-        <constructor name="MemberInfo()" argnames="" />
-        <property name="Cache" propertytype="System.Reflection.Cache.InternalCache" />
-        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
-        <property name="Name" propertytype="System.String" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-    </class>
-    <class name="AmbiguousMatchException" namespace="System.Reflection">
-        <constructor name="AmbiguousMatchException()" argnames="" />
-        <constructor name="AmbiguousMatchException(System.String)" argnames="message" />
-        <constructor name="AmbiguousMatchException(System.String, System.Exception)" argnames="message, inner" />
-    </class>
-    <class name="Assembly" namespace="System.Reflection">
-        <property name="CodeBase" propertytype="System.String" />
-        <property name="EscapedCodeBase" propertytype="System.String" />
-        <property name="FullName" propertytype="System.String" />
-        <property name="EntryPoint" propertytype="System.Reflection.MethodInfo" />
-        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
-        <property name="Location" propertytype="System.String" />
-        <property name="GlobalAssemblyCache" propertytype="System.Boolean" />
-        <property name="Cache" propertytype="System.Reflection.Cache.InternalCache" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="GetManifestResourceInfo(System.String)" argnames="resourceName" returntype="System.Reflection.ManifestResourceInfo" />
-        <method name="GetManifestResourceNames()" argnames="" returntype="System.String[]" />
-        <method name="GetFiles(System.Boolean)" argnames="getResourceModules" returntype="System.IO.FileStream[]" />
-        <method name="GetFiles()" argnames="" returntype="System.IO.FileStream[]" />
-        <method name="GetFile(System.String)" argnames="name" returntype="System.IO.FileStream" />
-        <method name="GetManifestResourceStream(System.String)" argnames="name" returntype="System.IO.Stream" />
-        <method name="GetManifestResourceStream(System.Type, System.String)" argnames="type, name" returntype="System.IO.Stream" />
-        <method name="GetTypes()" argnames="" returntype="System.Type[]" />
-        <method name="GetExportedTypes()" argnames="" returntype="System.Type[]" />
-        <method name="GetType(System.String, System.Boolean)" argnames="name, throwOnError" returntype="System.Type" />
-        <method name="GetType(System.String)" argnames="name" returntype="System.Type" />
-        <method name="GetName(System.Boolean)" argnames="copiedName" returntype="System.Reflection.AssemblyName" />
-        <method name="GetName()" argnames="" returntype="System.Reflection.AssemblyName" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="CreateQualifiedName(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.String" />
-        <method name="GetAssembly(System.Type)" argnames="type" returntype="System.Reflection.Assembly" />
-        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="name, throwOnError, ignoreCase" returntype="System.Type" />
-        <method name="GetSatelliteAssembly(System.Globalization.CultureInfo)" argnames="culture" returntype="System.Reflection.Assembly" />
-        <method name="GetSatelliteAssembly(System.Globalization.CultureInfo, System.Version)" argnames="culture, version" returntype="System.Reflection.Assembly" />
-        <method name="LoadFrom(System.String)" argnames="assemblyFile" returntype="System.Reflection.Assembly" />
-        <method name="LoadFrom(System.String, System.Security.Policy.Evidence)" argnames="assemblyFile, securityEvidence" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.String)" argnames="assemblyString" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.String, System.Security.Policy.Evidence)" argnames="assemblyString, assemblySecurity" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Reflection.AssemblyName)" argnames="assemblyRef" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)" argnames="assemblyRef, assemblySecurity" returntype="System.Reflection.Assembly" />
-        <method name="LoadWithPartialName(System.String)" argnames="partialName" returntype="System.Reflection.Assembly" />
-        <method name="LoadWithPartialName(System.String, System.Security.Policy.Evidence)" argnames="partialName, securityEvidence" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[])" argnames="rawAssembly" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[], System.Byte[])" argnames="rawAssembly, rawSymbolStore" returntype="System.Reflection.Assembly" />
-        <method name="Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)" argnames="rawAssembly, rawSymbolStore, securityEvidence" returntype="System.Reflection.Assembly" />
-        <method name="LoadModule(System.String, System.Byte[])" argnames="moduleName, rawModule" returntype="System.Reflection.Module" />
-        <method name="LoadModule(System.String, System.Byte[], System.Byte[])" argnames="moduleName, rawModule, rawSymbolStore" returntype="System.Reflection.Module" />
-        <method name="CreateInstance(System.String)" argnames="typeName" returntype="System.Object" />
-        <method name="CreateInstance(System.String, System.Boolean)" argnames="typeName, ignoreCase" returntype="System.Object" />
-        <method name="CreateInstance(System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])" argnames="typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes" returntype="System.Object" />
-        <method name="GetLoadedModules()" argnames="" returntype="System.Reflection.Module[]" />
-        <method name="GetLoadedModules(System.Boolean)" argnames="getResourceModules" returntype="System.Reflection.Module[]" />
-        <method name="GetModules()" argnames="" returntype="System.Reflection.Module[]" />
-        <method name="GetModules(System.Boolean)" argnames="getResourceModules" returntype="System.Reflection.Module[]" />
-        <method name="GetModule(System.String)" argnames="name" returntype="System.Reflection.Module" />
-        <method name="GetExecutingAssembly()" argnames="" returntype="System.Reflection.Assembly" />
-        <method name="GetCallingAssembly()" argnames="" returntype="System.Reflection.Assembly" />
-        <method name="GetEntryAssembly()" argnames="" returntype="System.Reflection.Assembly" />
-        <method name="GetReferencedAssemblies()" argnames="" returntype="System.Reflection.AssemblyName[]" />
-        <event name="ModuleResolve" />
-    </class>
-    <class name="AssemblyCultureAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyCultureAttribute(System.String)" argnames="culture" />
-        <property name="Culture" propertytype="System.String" />
-    </class>
-    <class name="AssemblyVersionAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyVersionAttribute(System.String)" argnames="version" />
-        <property name="Version" propertytype="System.String" />
-    </class>
-    <class name="AssemblyKeyFileAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyKeyFileAttribute(System.String)" argnames="keyFile" />
-        <property name="KeyFile" propertytype="System.String" />
-    </class>
-    <class name="AssemblyKeyNameAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyKeyNameAttribute(System.String)" argnames="keyName" />
-        <property name="KeyName" propertytype="System.String" />
-    </class>
-    <class name="AssemblyDelaySignAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyDelaySignAttribute(System.Boolean)" argnames="delaySign" />
-        <property name="DelaySign" propertytype="System.Boolean" />
-    </class>
-    <class name="AssemblyAlgorithmIdAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyAlgorithmIdAttribute(System.Configuration.Assemblies.AssemblyHashAlgorithm)" argnames="algorithmId" />
-        <constructor name="AssemblyAlgorithmIdAttribute(System.UInt32)" argnames="algorithmId" />
-        <property name="AlgorithmId" propertytype="System.UInt32" />
-    </class>
-    <class name="AssemblyFlagsAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyFlagsAttribute(System.UInt32)" argnames="flags" />
-        <property name="Flags" propertytype="System.UInt32" />
-    </class>
-    <class name="AssemblyFileVersionAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyFileVersionAttribute(System.String)" argnames="version" />
-        <property name="Version" propertytype="System.String" />
-    </class>
-    <class name="AssemblyName" namespace="System.Reflection">
-        <constructor name="AssemblyName()" argnames="" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Version" propertytype="System.Version" />
-        <property name="CultureInfo" propertytype="System.Globalization.CultureInfo" />
-        <property name="CodeBase" propertytype="System.String" />
-        <property name="EscapedCodeBase" propertytype="System.String" />
-        <property name="Flags" propertytype="System.Reflection.AssemblyNameFlags" />
-        <property name="HashAlgorithm" propertytype="System.Configuration.Assemblies.AssemblyHashAlgorithm" />
-        <property name="VersionCompatibility" propertytype="System.Configuration.Assemblies.AssemblyVersionCompatibility" />
-        <property name="KeyPair" propertytype="System.Reflection.StrongNameKeyPair" />
-        <property name="FullName" propertytype="System.String" />
-        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GetAssemblyName(System.String)" argnames="assemblyFile" returntype="System.Reflection.AssemblyName" />
-        <method name="GetPublicKey()" argnames="" returntype="System.Byte[]" />
-        <method name="SetPublicKey(System.Byte[])" argnames="publicKey" returntype="System.Void" />
-        <method name="GetPublicKeyToken()" argnames="" returntype="System.Byte[]" />
-        <method name="SetPublicKeyToken(System.Byte[])" argnames="publicKeyToken" returntype="System.Void" />
-    </class>
-    <class name="AssemblyNameProxy" namespace="System.Reflection">
-        <constructor name="AssemblyNameProxy()" argnames="" />
-        <method name="GetAssemblyName(System.String)" argnames="assemblyFile" returntype="System.Reflection.AssemblyName" />
-    </class>
-    <class name="AssemblyCopyrightAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyCopyrightAttribute(System.String)" argnames="copyright" />
-        <property name="Copyright" propertytype="System.String" />
-    </class>
-    <class name="AssemblyTrademarkAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyTrademarkAttribute(System.String)" argnames="trademark" />
-        <property name="Trademark" propertytype="System.String" />
-    </class>
-    <class name="AssemblyProductAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyProductAttribute(System.String)" argnames="product" />
-        <property name="Product" propertytype="System.String" />
-    </class>
-    <class name="AssemblyCompanyAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyCompanyAttribute(System.String)" argnames="company" />
-        <property name="Company" propertytype="System.String" />
-    </class>
-    <class name="AssemblyDescriptionAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyDescriptionAttribute(System.String)" argnames="description" />
-        <property name="Description" propertytype="System.String" />
-    </class>
-    <class name="AssemblyTitleAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyTitleAttribute(System.String)" argnames="title" />
-        <property name="Title" propertytype="System.String" />
-    </class>
-    <class name="AssemblyConfigurationAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyConfigurationAttribute(System.String)" argnames="configuration" />
-        <property name="Configuration" propertytype="System.String" />
-    </class>
-    <class name="AssemblyDefaultAliasAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyDefaultAliasAttribute(System.String)" argnames="defaultAlias" />
-        <property name="DefaultAlias" propertytype="System.String" />
-    </class>
-    <class name="AssemblyInformationalVersionAttribute" namespace="System.Reflection">
-        <constructor name="AssemblyInformationalVersionAttribute(System.String)" argnames="informationalVersion" />
-        <property name="InformationalVersion" propertytype="System.String" />
-    </class>
-    <class name="CustomAttributeFormatException" namespace="System.Reflection">
-        <constructor name="CustomAttributeFormatException()" argnames="" />
-        <constructor name="CustomAttributeFormatException(System.String)" argnames="message" />
-        <constructor name="CustomAttributeFormatException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="CustomAttributeFormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="MethodBase" namespace="System.Reflection">
-        <constructor name="MethodBase()" argnames="" />
-        <property name="MethodHandle" propertytype="System.RuntimeMethodHandle" />
-        <property name="Attributes" propertytype="System.Reflection.MethodAttributes" />
-        <property name="IsPublic" propertytype="System.Boolean" />
-        <property name="IsPrivate" propertytype="System.Boolean" />
-        <property name="IsFamily" propertytype="System.Boolean" />
-        <property name="IsAssembly" propertytype="System.Boolean" />
-        <property name="IsFamilyAndAssembly" propertytype="System.Boolean" />
-        <property name="IsFamilyOrAssembly" propertytype="System.Boolean" />
-        <property name="IsStatic" propertytype="System.Boolean" />
-        <property name="IsFinal" propertytype="System.Boolean" />
-        <property name="IsVirtual" propertytype="System.Boolean" />
-        <property name="IsHideBySig" propertytype="System.Boolean" />
-        <property name="IsAbstract" propertytype="System.Boolean" />
-        <property name="IsSpecialName" propertytype="System.Boolean" />
-        <property name="IsConstructor" propertytype="System.Boolean" />
-        <property name="CallingConvention" propertytype="System.Reflection.CallingConventions" />
-        <property name="IsOverloaded" propertytype="System.Boolean" />
-        <method name="Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, parameters, culture" returntype="System.Object" />
-        <method name="GetMethodImplementationFlags()" argnames="" returntype="System.Reflection.MethodImplAttributes" />
-        <method name="GetParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
-        <method name="GetMethodFromHandle(System.RuntimeMethodHandle)" argnames="handle" returntype="System.Reflection.MethodBase" />
-        <method name="GetCurrentMethod()" argnames="" returntype="System.Reflection.MethodBase" />
-        <method name="Invoke(System.Object, System.Object[])" argnames="obj, parameters" returntype="System.Object" />
-    </class>
-    <class name="ConstructorInfo" namespace="System.Reflection">
-        <constructor name="ConstructorInfo()" argnames="" />
-        <field name="ConstructorName" />
-        <field name="TypeConstructorName" />
-        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
-        <method name="Invoke(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="invokeAttr, binder, parameters, culture" returntype="System.Object" />
-        <method name="Invoke(System.Object[])" argnames="parameters" returntype="System.Object" />
-    </class>
-    <class name="DefaultMemberAttribute" namespace="System.Reflection">
-        <constructor name="DefaultMemberAttribute(System.String)" argnames="memberName" />
-        <property name="MemberName" propertytype="System.String" />
-    </class>
-    <class name="EventInfo" namespace="System.Reflection">
-        <constructor name="EventInfo()" argnames="" />
-        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
-        <property name="EventHandlerType" propertytype="System.Type" />
-        <property name="Attributes" propertytype="System.Reflection.EventAttributes" />
-        <property name="IsSpecialName" propertytype="System.Boolean" />
-        <property name="IsMulticast" propertytype="System.Boolean" />
-        <method name="GetRaiseMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
-        <method name="GetRemoveMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
-        <method name="GetAddMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
-        <method name="GetAddMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
-        <method name="GetRemoveMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
-        <method name="GetRaiseMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
-        <method name="AddEventHandler(System.Object, System.Delegate)" argnames="target, handler" returntype="System.Void" />
-        <method name="RemoveEventHandler(System.Object, System.Delegate)" argnames="target, handler" returntype="System.Void" />
-    </class>
-    <class name="FieldInfo" namespace="System.Reflection">
-        <constructor name="FieldInfo()" argnames="" />
-        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
-        <property name="FieldType" propertytype="System.Type" />
-        <property name="FieldHandle" propertytype="System.RuntimeFieldHandle" />
-        <property name="Attributes" propertytype="System.Reflection.FieldAttributes" />
-        <property name="IsPublic" propertytype="System.Boolean" />
-        <property name="IsPrivate" propertytype="System.Boolean" />
-        <property name="IsFamily" propertytype="System.Boolean" />
-        <property name="IsAssembly" propertytype="System.Boolean" />
-        <property name="IsFamilyAndAssembly" propertytype="System.Boolean" />
-        <property name="IsFamilyOrAssembly" propertytype="System.Boolean" />
-        <property name="IsStatic" propertytype="System.Boolean" />
-        <property name="IsInitOnly" propertytype="System.Boolean" />
-        <property name="IsLiteral" propertytype="System.Boolean" />
-        <property name="IsNotSerialized" propertytype="System.Boolean" />
-        <property name="IsSpecialName" propertytype="System.Boolean" />
-        <property name="IsPinvokeImpl" propertytype="System.Boolean" />
-        <method name="SetValueDirect(System.TypedReference, System.Object)" argnames="obj, value" returntype="System.Void" />
-        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Globalization.CultureInfo)" argnames="obj, value, invokeAttr, binder, culture" returntype="System.Void" />
-        <method name="GetValueDirect(System.TypedReference)" argnames="obj" returntype="System.Object" />
-        <method name="GetValue(System.Object)" argnames="obj" returntype="System.Object" />
-        <method name="SetValue(System.Object, System.Object)" argnames="obj, value" returntype="System.Void" />
-        <method name="GetFieldFromHandle(System.RuntimeFieldHandle)" argnames="handle" returntype="System.Reflection.FieldInfo" />
-    </class>
-    <class name="InvalidFilterCriteriaException" namespace="System.Reflection">
-        <constructor name="InvalidFilterCriteriaException()" argnames="" />
-        <constructor name="InvalidFilterCriteriaException(System.String)" argnames="message" />
-        <constructor name="InvalidFilterCriteriaException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="InvalidFilterCriteriaException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="ManifestResourceInfo" namespace="System.Reflection">
-        <property name="ReferencedAssembly" propertytype="System.Reflection.Assembly" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="ResourceLocation" propertytype="System.Reflection.ResourceLocation" />
-    </class>
-    <class name="MethodInfo" namespace="System.Reflection">
-        <constructor name="MethodInfo()" argnames="" />
-        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
-        <property name="ReturnType" propertytype="System.Type" />
-        <property name="ReturnTypeCustomAttributes" propertytype="System.Reflection.ICustomAttributeProvider" />
-        <method name="GetBaseDefinition()" argnames="" returntype="System.Reflection.MethodInfo" />
-    </class>
-    <class name="Missing" namespace="System.Reflection">
-        <field name="Value" />
-    </class>
-    <class name="Module" namespace="System.Reflection">
-        <field name="FilterTypeName" />
-        <field name="FilterTypeNameIgnoreCase" />
-        <property name="ScopeName" propertytype="System.String" />
-        <property name="FullyQualifiedName" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Assembly" propertytype="System.Reflection.Assembly" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetTypes()" argnames="" returntype="System.Type[]" />
-        <method name="FindTypes(System.Reflection.TypeFilter, System.Object)" argnames="filter, filterCriteria" returntype="System.Type[]" />
-        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="className, throwOnError, ignoreCase" returntype="System.Type" />
-        <method name="GetType(System.String)" argnames="className" returntype="System.Type" />
-        <method name="GetType(System.String, System.Boolean)" argnames="className, ignoreCase" returntype="System.Type" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GetSignerCertificate()" argnames="" returntype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <method name="GetMethods()" argnames="" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethod(System.String, System.Type[])" argnames="name, types" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethod(System.String)" argnames="name" returntype="System.Reflection.MethodInfo" />
-        <method name="GetFields()" argnames="" returntype="System.Reflection.FieldInfo[]" />
-        <method name="GetField(System.String)" argnames="name" returntype="System.Reflection.FieldInfo" />
-        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
-        <method name="IsResource()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="ParameterInfo" namespace="System.Reflection">
-        <constructor name="ParameterInfo()" argnames="" />
-        <field name="NameImpl" />
-        <field name="ClassImpl" />
-        <field name="PositionImpl" />
-        <field name="AttrsImpl" />
-        <field name="DefaultValueImpl" />
-        <field name="MemberImpl" />
-        <property name="ParameterType" propertytype="System.Type" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Position" propertytype="System.Int32" />
-        <property name="Attributes" propertytype="System.Reflection.ParameterAttributes" />
-        <property name="IsIn" propertytype="System.Boolean" />
-        <property name="IsOut" propertytype="System.Boolean" />
-        <property name="IsLcid" propertytype="System.Boolean" />
-        <property name="IsRetval" propertytype="System.Boolean" />
-        <property name="IsOptional" propertytype="System.Boolean" />
-        <property name="DefaultValue" propertytype="System.Object" />
-        <property name="Member" propertytype="System.Reflection.MemberInfo" />
-        <property name="Cache" propertytype="System.Reflection.Cache.InternalCache" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-    </class>
-    <class name="Pointer" namespace="System.Reflection">
-        <method name="Box(System.Void*, System.Type)" argnames="ptr, type" returntype="System.Object" />
-        <method name="Unbox(System.Object)" argnames="ptr" returntype="System.Void*" />
-    </class>
-    <class name="PropertyInfo" namespace="System.Reflection">
-        <constructor name="PropertyInfo()" argnames="" />
-        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
-        <property name="PropertyType" propertytype="System.Type" />
-        <property name="Attributes" propertytype="System.Reflection.PropertyAttributes" />
-        <property name="IsSpecialName" propertytype="System.Boolean" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <method name="GetIndexParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
-        <method name="GetSetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
-        <method name="GetGetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
-        <method name="GetAccessors(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo[]" />
-        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, value, invokeAttr, binder, index, culture" returntype="System.Void" />
-        <method name="SetValue(System.Object, System.Object, System.Object[])" argnames="obj, value, index" returntype="System.Void" />
-        <method name="GetValue(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, index, culture" returntype="System.Object" />
-        <method name="GetValue(System.Object, System.Object[])" argnames="obj, index" returntype="System.Object" />
-        <method name="GetAccessors()" argnames="" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetGetMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
-        <method name="GetSetMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
-    </class>
-    <class name="ReflectionTypeLoadException" namespace="System.Reflection">
-        <constructor name="ReflectionTypeLoadException(System.Type[], System.Exception[])" argnames="classes, exceptions" />
-        <constructor name="ReflectionTypeLoadException(System.Type[], System.Exception[], System.String)" argnames="classes, exceptions, message" />
-        <property name="Types" propertytype="System.Type[]" />
-        <property name="LoaderExceptions" propertytype="System.Exception[]" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="StrongNameKeyPair" namespace="System.Reflection">
-        <constructor name="StrongNameKeyPair(System.IO.FileStream)" argnames="keyPairFile" />
-        <constructor name="StrongNameKeyPair(System.Byte[])" argnames="keyPairArray" />
-        <constructor name="StrongNameKeyPair(System.String)" argnames="keyPairContainer" />
-        <property name="PublicKey" propertytype="System.Byte[]" />
-    </class>
-    <class name="TargetException" namespace="System.Reflection">
-        <constructor name="TargetException()" argnames="" />
-        <constructor name="TargetException(System.String)" argnames="message" />
-        <constructor name="TargetException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="TargetException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="TargetInvocationException" namespace="System.Reflection">
-        <constructor name="TargetInvocationException(System.Exception)" argnames="inner" />
-        <constructor name="TargetInvocationException(System.String, System.Exception)" argnames="message, inner" />
-    </class>
-    <class name="TargetParameterCountException" namespace="System.Reflection">
-        <constructor name="TargetParameterCountException()" argnames="" />
-        <constructor name="TargetParameterCountException(System.String)" argnames="message" />
-        <constructor name="TargetParameterCountException(System.String, System.Exception)" argnames="message, inner" />
-    </class>
-    <class name="TypeDelegator" namespace="System.Reflection">
-        <constructor name="TypeDelegator()" argnames="" />
-        <constructor name="TypeDelegator(System.Type)" argnames="delegatingType" />
-        <field name="typeImpl" />
-        <property name="GUID" propertytype="System.Guid" />
-        <property name="Module" propertytype="System.Reflection.Module" />
-        <property name="Assembly" propertytype="System.Reflection.Assembly" />
-        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
-        <property name="Name" propertytype="System.String" />
-        <property name="FullName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="AssemblyQualifiedName" propertytype="System.String" />
-        <property name="BaseType" propertytype="System.Type" />
-        <property name="UnderlyingSystemType" propertytype="System.Type" />
-        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
-        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
-        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
-        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
-        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
-        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetElementType()" argnames="" returntype="System.Type" />
-        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
-        <method name="IsValueTypeImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
-        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
-        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
-        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
-        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
-        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
-        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-    </class>
-    <interface name="ICustomAttributeProvider" namespace="System.Reflection">
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-    </interface>
-    <interface name="IReflect" namespace="System.Reflection">
-        <property name="UnderlyingSystemType" propertytype="System.Type" />
-        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
-        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetMember(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
-        <method name="GetProperty(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetProperty(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
-        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
-        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetMethod(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MethodInfo" />
-        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, types, modifiers" returntype="System.Reflection.MethodInfo" />
-    </interface>
-    <struct name="InterfaceMapping" namespace="System.Reflection">
-        <field name="TargetType" />
-        <field name="InterfaceType" />
-        <field name="TargetMethods" />
-        <field name="InterfaceMethods" />
-    </struct>
-    <struct name="ParameterModifier" namespace="System.Reflection">
-        <constructor name="ParameterModifier(System.Int32)" argnames="paramaterCount" />
-        <property name="Item" propertytype="System.Boolean" />
-    </struct>
-    <delegate name="ModuleResolveEventHandler" namespace="System.Reflection">
-        <constructor name="ModuleResolveEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Reflection.Module" />
-        <method name="BeginInvoke(System.Object, System.ResolveEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.ResolveEventArgs)" argnames="sender, e" returntype="System.Reflection.Module" />
-    </delegate>
-    <delegate name="MemberFilter" namespace="System.Reflection">
-        <constructor name="MemberFilter(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.Reflection.MemberInfo, System.Object, System.AsyncCallback, System.Object)" argnames="m, filterCriteria, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Reflection.MemberInfo, System.Object)" argnames="m, filterCriteria" returntype="System.Boolean" />
-    </delegate>
-    <delegate name="TypeFilter" namespace="System.Reflection">
-        <constructor name="TypeFilter(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.Type, System.Object, System.AsyncCallback, System.Object)" argnames="m, filterCriteria, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Type, System.Object)" argnames="m, filterCriteria" returntype="System.Boolean" />
-    </delegate>
-    <enum name="AssemblyNameFlags" namespace="System.Reflection">
-        <field name="None" />
-        <field name="PublicKey" />
-    </enum>
-    <enum name="BindingFlags" namespace="System.Reflection">
-        <field name="Default" />
-        <field name="IgnoreCase" />
-        <field name="DeclaredOnly" />
-        <field name="Instance" />
-        <field name="Static" />
-        <field name="Public" />
-        <field name="NonPublic" />
-        <field name="FlattenHierarchy" />
-        <field name="InvokeMethod" />
-        <field name="CreateInstance" />
-        <field name="GetField" />
-        <field name="SetField" />
-        <field name="GetProperty" />
-        <field name="SetProperty" />
-        <field name="PutDispProperty" />
-        <field name="PutRefDispProperty" />
-        <field name="ExactBinding" />
-        <field name="SuppressChangeType" />
-        <field name="OptionalParamBinding" />
-        <field name="IgnoreReturn" />
-    </enum>
-    <enum name="CallingConventions" namespace="System.Reflection">
-        <field name="Standard" />
-        <field name="VarArgs" />
-        <field name="Any" />
-        <field name="HasThis" />
-        <field name="ExplicitThis" />
-    </enum>
-    <enum name="EventAttributes" namespace="System.Reflection">
-        <field name="None" />
-        <field name="SpecialName" />
-        <field name="ReservedMask" />
-        <field name="RTSpecialName" />
-    </enum>
-    <enum name="FieldAttributes" namespace="System.Reflection">
-        <field name="FieldAccessMask" />
-        <field name="PrivateScope" />
-        <field name="Private" />
-        <field name="FamANDAssem" />
-        <field name="Assembly" />
-        <field name="Family" />
-        <field name="FamORAssem" />
-        <field name="Public" />
-        <field name="Static" />
-        <field name="InitOnly" />
-        <field name="Literal" />
-        <field name="NotSerialized" />
-        <field name="SpecialName" />
-        <field name="PinvokeImpl" />
-        <field name="ReservedMask" />
-        <field name="RTSpecialName" />
-        <field name="HasFieldMarshal" />
-        <field name="HasDefault" />
-        <field name="HasFieldRVA" />
-    </enum>
-    <enum name="ResourceLocation" namespace="System.Reflection">
-        <field name="Embedded" />
-        <field name="ContainedInAnotherAssembly" />
-        <field name="ContainedInManifestFile" />
-    </enum>
-    <enum name="MemberTypes" namespace="System.Reflection">
-        <field name="Constructor" />
-        <field name="Event" />
-        <field name="Field" />
-        <field name="Method" />
-        <field name="Property" />
-        <field name="TypeInfo" />
-        <field name="Custom" />
-        <field name="NestedType" />
-        <field name="All" />
-    </enum>
-    <enum name="MethodAttributes" namespace="System.Reflection">
-        <field name="MemberAccessMask" />
-        <field name="PrivateScope" />
-        <field name="Private" />
-        <field name="FamANDAssem" />
-        <field name="Assembly" />
-        <field name="Family" />
-        <field name="FamORAssem" />
-        <field name="Public" />
-        <field name="Static" />
-        <field name="Final" />
-        <field name="Virtual" />
-        <field name="HideBySig" />
-        <field name="VtableLayoutMask" />
-        <field name="ReuseSlot" />
-        <field name="NewSlot" />
-        <field name="Abstract" />
-        <field name="SpecialName" />
-        <field name="PinvokeImpl" />
-        <field name="UnmanagedExport" />
-        <field name="RTSpecialName" />
-        <field name="ReservedMask" />
-        <field name="HasSecurity" />
-        <field name="RequireSecObject" />
-    </enum>
-    <enum name="MethodImplAttributes" namespace="System.Reflection">
-        <field name="CodeTypeMask" />
-        <field name="IL" />
-        <field name="Native" />
-        <field name="OPTIL" />
-        <field name="Runtime" />
-        <field name="ManagedMask" />
-        <field name="Unmanaged" />
-        <field name="Managed" />
-        <field name="ForwardRef" />
-        <field name="PreserveSig" />
-        <field name="InternalCall" />
-        <field name="Synchronized" />
-        <field name="NoInlining" />
-        <field name="MaxMethodImplVal" />
-    </enum>
-    <enum name="ParameterAttributes" namespace="System.Reflection">
-        <field name="None" />
-        <field name="In" />
-        <field name="Out" />
-        <field name="Lcid" />
-        <field name="Retval" />
-        <field name="Optional" />
-        <field name="ReservedMask" />
-        <field name="HasDefault" />
-        <field name="HasFieldMarshal" />
-        <field name="Reserved3" />
-        <field name="Reserved4" />
-    </enum>
-    <enum name="PropertyAttributes" namespace="System.Reflection">
-        <field name="None" />
-        <field name="SpecialName" />
-        <field name="ReservedMask" />
-        <field name="RTSpecialName" />
-        <field name="HasDefault" />
-        <field name="Reserved2" />
-        <field name="Reserved3" />
-        <field name="Reserved4" />
-    </enum>
-    <enum name="ResourceAttributes" namespace="System.Reflection">
-        <field name="Public" />
-        <field name="Private" />
-    </enum>
-    <enum name="TypeAttributes" namespace="System.Reflection">
-        <field name="VisibilityMask" />
-        <field name="NotPublic" />
-        <field name="Public" />
-        <field name="NestedPublic" />
-        <field name="NestedPrivate" />
-        <field name="NestedFamily" />
-        <field name="NestedAssembly" />
-        <field name="NestedFamANDAssem" />
-        <field name="NestedFamORAssem" />
-        <field name="LayoutMask" />
-        <field name="AutoLayout" />
-        <field name="SequentialLayout" />
-        <field name="ExplicitLayout" />
-        <field name="ClassSemanticsMask" />
-        <field name="Class" />
-        <field name="Interface" />
-        <field name="Abstract" />
-        <field name="Sealed" />
-        <field name="SpecialName" />
-        <field name="Import" />
-        <field name="Serializable" />
-        <field name="StringFormatMask" />
-        <field name="AnsiClass" />
-        <field name="UnicodeClass" />
-        <field name="AutoClass" />
-        <field name="BeforeFieldInit" />
-        <field name="ReservedMask" />
-        <field name="RTSpecialName" />
-        <field name="HasSecurity" />
-    </enum>
-    <class name="WaitHandle" namespace="System.Threading">
-        <constructor name="WaitHandle()" argnames="" />
-        <field name="InvalidHandle" />
-        <field name="WaitTimeout" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <method name="Dispose(System.Boolean)" argnames="explicitDisposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="WaitOne()" argnames="" returntype="System.Boolean" />
-        <method name="WaitOne(System.TimeSpan, System.Boolean)" argnames="timeout, exitContext" returntype="System.Boolean" />
-        <method name="WaitOne(System.Int32, System.Boolean)" argnames="millisecondsTimeout, exitContext" returntype="System.Boolean" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="WaitAll(System.Threading.WaitHandle[], System.Int32, System.Boolean)" argnames="waitHandles, millisecondsTimeout, exitContext" returntype="System.Boolean" />
-        <method name="WaitAll(System.Threading.WaitHandle[], System.TimeSpan, System.Boolean)" argnames="waitHandles, timeout, exitContext" returntype="System.Boolean" />
-        <method name="WaitAll(System.Threading.WaitHandle[])" argnames="waitHandles" returntype="System.Boolean" />
-        <method name="WaitAny(System.Threading.WaitHandle[], System.Int32, System.Boolean)" argnames="waitHandles, millisecondsTimeout, exitContext" returntype="System.Int32" />
-        <method name="WaitAny(System.Threading.WaitHandle[], System.TimeSpan, System.Boolean)" argnames="waitHandles, timeout, exitContext" returntype="System.Int32" />
-        <method name="WaitAny(System.Threading.WaitHandle[])" argnames="waitHandles" returntype="System.Int32" />
-    </class>
-    <class name="AutoResetEvent" namespace="System.Threading">
-        <constructor name="AutoResetEvent(System.Boolean)" argnames="initialState" />
-        <method name="Reset()" argnames="" returntype="System.Boolean" />
-        <method name="Set()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="CompressedStack" namespace="System.Threading">
-        <property name="UnmanagedCompressedStack" propertytype="System.IntPtr" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="Interlocked" namespace="System.Threading">
-        <method name="Increment(System.Int32&amp;)" argnames="location" returntype="System.Int32" />
-        <method name="Decrement(System.Int32&amp;)" argnames="location" returntype="System.Int32" />
-        <method name="Increment(System.Int64&amp;)" argnames="location" returntype="System.Int64" />
-        <method name="Decrement(System.Int64&amp;)" argnames="location" returntype="System.Int64" />
-        <method name="Exchange(System.Int32&amp;, System.Int32)" argnames="location1, value" returntype="System.Int32" />
-        <method name="CompareExchange(System.Int32&amp;, System.Int32, System.Int32)" argnames="location1, value, comparand" returntype="System.Int32" />
-        <method name="Exchange(System.Single&amp;, System.Single)" argnames="location1, value" returntype="System.Single" />
-        <method name="CompareExchange(System.Single&amp;, System.Single, System.Single)" argnames="location1, value, comparand" returntype="System.Single" />
-        <method name="Exchange(System.Object&amp;, System.Object)" argnames="location1, value" returntype="System.Object" />
-        <method name="CompareExchange(System.Object&amp;, System.Object, System.Object)" argnames="location1, value, comparand" returntype="System.Object" />
-    </class>
-    <class name="ManualResetEvent" namespace="System.Threading">
-        <constructor name="ManualResetEvent(System.Boolean)" argnames="initialState" />
-        <method name="Reset()" argnames="" returntype="System.Boolean" />
-        <method name="Set()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="Monitor" namespace="System.Threading">
-        <method name="Enter(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="Exit(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="TryEnter(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="TryEnter(System.Object, System.Int32)" argnames="obj, millisecondsTimeout" returntype="System.Boolean" />
-        <method name="TryEnter(System.Object, System.TimeSpan)" argnames="obj, timeout" returntype="System.Boolean" />
-        <method name="Wait(System.Object, System.Int32, System.Boolean)" argnames="obj, millisecondsTimeout, exitContext" returntype="System.Boolean" />
-        <method name="Wait(System.Object, System.TimeSpan, System.Boolean)" argnames="obj, timeout, exitContext" returntype="System.Boolean" />
-        <method name="Wait(System.Object, System.Int32)" argnames="obj, millisecondsTimeout" returntype="System.Boolean" />
-        <method name="Wait(System.Object, System.TimeSpan)" argnames="obj, timeout" returntype="System.Boolean" />
-        <method name="Wait(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="Pulse(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="PulseAll(System.Object)" argnames="obj" returntype="System.Void" />
-    </class>
-    <class name="Mutex" namespace="System.Threading">
-        <constructor name="Mutex(System.Boolean, System.String, System.Boolean&amp;)" argnames="initiallyOwned, name, createdNew" />
-        <constructor name="Mutex(System.Boolean, System.String)" argnames="initiallyOwned, name" />
-        <constructor name="Mutex(System.Boolean)" argnames="initiallyOwned" />
-        <constructor name="Mutex()" argnames="" />
-        <method name="ReleaseMutex()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="Overlapped" namespace="System.Threading">
-        <constructor name="Overlapped()" argnames="" />
-        <constructor name="Overlapped(System.Int32, System.Int32, System.Int32, System.IAsyncResult)" argnames="offsetLo, offsetHi, hEvent, ar" />
-        <property name="AsyncResult" propertytype="System.IAsyncResult" />
-        <property name="OffsetLow" propertytype="System.Int32" />
-        <property name="OffsetHigh" propertytype="System.Int32" />
-        <property name="EventHandle" propertytype="System.Int32" />
-        <method name="Pack(System.Threading.IOCompletionCallback)" argnames="iocb" returntype="System.Threading.NativeOverlapped*" />
-        <method name="UnsafePack(System.Threading.IOCompletionCallback)" argnames="iocb" returntype="System.Threading.NativeOverlapped*" />
-        <method name="Unpack(System.Threading.NativeOverlapped*)" argnames="nativeOverlappedPtr" returntype="System.Threading.Overlapped" />
-        <method name="Free(System.Threading.NativeOverlapped*)" argnames="nativeOverlappedPtr" returntype="System.Void" />
-    </class>
-    <class name="ReaderWriterLock" namespace="System.Threading">
-        <constructor name="ReaderWriterLock()" argnames="" />
-        <property name="IsReaderLockHeld" propertytype="System.Boolean" />
-        <property name="IsWriterLockHeld" propertytype="System.Boolean" />
-        <property name="WriterSeqNum" propertytype="System.Int32" />
-        <method name="AcquireReaderLock(System.Int32)" argnames="millisecondsTimeout" returntype="System.Void" />
-        <method name="AcquireReaderLock(System.TimeSpan)" argnames="timeout" returntype="System.Void" />
-        <method name="AcquireWriterLock(System.Int32)" argnames="millisecondsTimeout" returntype="System.Void" />
-        <method name="AcquireWriterLock(System.TimeSpan)" argnames="timeout" returntype="System.Void" />
-        <method name="ReleaseReaderLock()" argnames="" returntype="System.Void" />
-        <method name="ReleaseWriterLock()" argnames="" returntype="System.Void" />
-        <method name="UpgradeToWriterLock(System.Int32)" argnames="millisecondsTimeout" returntype="System.Threading.LockCookie" />
-        <method name="UpgradeToWriterLock(System.TimeSpan)" argnames="timeout" returntype="System.Threading.LockCookie" />
-        <method name="DowngradeFromWriterLock(System.Threading.LockCookie&amp;)" argnames="lockCookie" returntype="System.Void" />
-        <method name="ReleaseLock()" argnames="" returntype="System.Threading.LockCookie" />
-        <method name="RestoreLock(System.Threading.LockCookie&amp;)" argnames="lockCookie" returntype="System.Void" />
-        <method name="AnyWritersSince(System.Int32)" argnames="seqNum" returntype="System.Boolean" />
-    </class>
-    <class name="SynchronizationLockException" namespace="System.Threading">
-        <constructor name="SynchronizationLockException()" argnames="" />
-        <constructor name="SynchronizationLockException(System.String)" argnames="message" />
-        <constructor name="SynchronizationLockException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="SynchronizationLockException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Thread" namespace="System.Threading">
-        <constructor name="Thread(System.Threading.ThreadStart)" argnames="start" />
-        <property name="Priority" propertytype="System.Threading.ThreadPriority" />
-        <property name="IsAlive" propertytype="System.Boolean" />
-        <property name="IsThreadPoolThread" propertytype="System.Boolean" />
-        <property name="CurrentThread" propertytype="System.Threading.Thread" />
-        <property name="IsBackground" propertytype="System.Boolean" />
-        <property name="ThreadState" propertytype="System.Threading.ThreadState" />
-        <property name="ApartmentState" propertytype="System.Threading.ApartmentState" />
-        <property name="CurrentUICulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="CurrentCulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="CurrentContext" propertytype="System.Runtime.Remoting.Contexts.Context" />
-        <property name="CurrentPrincipal" propertytype="System.Security.Principal.IPrincipal" />
-        <property name="Name" propertytype="System.String" />
-        <property name="ExceptionState" propertytype="System.Object" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Start()" argnames="" returntype="System.Void" />
-        <method name="Abort(System.Object)" argnames="stateInfo" returntype="System.Void" />
-        <method name="Abort()" argnames="" returntype="System.Void" />
-        <method name="ResetAbort()" argnames="" returntype="System.Void" />
-        <method name="Suspend()" argnames="" returntype="System.Void" />
-        <method name="Resume()" argnames="" returntype="System.Void" />
-        <method name="Interrupt()" argnames="" returntype="System.Void" />
-        <method name="Join()" argnames="" returntype="System.Void" />
-        <method name="Join(System.Int32)" argnames="millisecondsTimeout" returntype="System.Boolean" />
-        <method name="Join(System.TimeSpan)" argnames="timeout" returntype="System.Boolean" />
-        <method name="Sleep(System.Int32)" argnames="millisecondsTimeout" returntype="System.Void" />
-        <method name="Sleep(System.TimeSpan)" argnames="timeout" returntype="System.Void" />
-        <method name="SpinWait(System.Int32)" argnames="iterations" returntype="System.Void" />
-        <method name="AllocateDataSlot()" argnames="" returntype="System.LocalDataStoreSlot" />
-        <method name="AllocateNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
-        <method name="GetNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
-        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetData(System.LocalDataStoreSlot)" argnames="slot" returntype="System.Object" />
-        <method name="SetData(System.LocalDataStoreSlot, System.Object)" argnames="slot, data" returntype="System.Void" />
-        <method name="GetDomain()" argnames="" returntype="System.AppDomain" />
-        <method name="GetDomainID()" argnames="" returntype="System.Int32" />
-    </class>
-    <class name="ThreadAbortException" namespace="System.Threading">
-        <property name="ExceptionState" propertytype="System.Object" />
-    </class>
-    <class name="ThreadInterruptedException" namespace="System.Threading">
-        <constructor name="ThreadInterruptedException()" argnames="" />
-        <constructor name="ThreadInterruptedException(System.String)" argnames="message" />
-        <constructor name="ThreadInterruptedException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="ThreadInterruptedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="RegisteredWaitHandle" namespace="System.Threading">
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Unregister(System.Threading.WaitHandle)" argnames="waitObject" returntype="System.Boolean" />
-    </class>
-    <class name="ThreadPool" namespace="System.Threading">
-        <method name="GetMaxThreads(System.Int32&amp;, System.Int32&amp;)" argnames="workerThreads, completionPortThreads" returntype="System.Void" />
-        <method name="GetAvailableThreads(System.Int32&amp;, System.Int32&amp;)" argnames="workerThreads, completionPortThreads" returntype="System.Void" />
-        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)" argnames="waitObject, callBack, state, timeout, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)" argnames="waitObject, callBack, state, timeout, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
-        <method name="QueueUserWorkItem(System.Threading.WaitCallback, System.Object)" argnames="callBack, state" returntype="System.Boolean" />
-        <method name="QueueUserWorkItem(System.Threading.WaitCallback)" argnames="callBack" returntype="System.Boolean" />
-        <method name="UnsafeQueueUserWorkItem(System.Threading.WaitCallback, System.Object)" argnames="callBack, state" returntype="System.Boolean" />
-        <method name="BindHandle(System.IntPtr)" argnames="osHandle" returntype="System.Boolean" />
-    </class>
-    <class name="ThreadStateException" namespace="System.Threading">
-        <constructor name="ThreadStateException()" argnames="" />
-        <constructor name="ThreadStateException(System.String)" argnames="message" />
-        <constructor name="ThreadStateException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="ThreadStateException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Timeout" namespace="System.Threading">
-        <field name="Infinite" />
-    </class>
-    <class name="Timer" namespace="System.Threading">
-        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.Int32, System.Int32)" argnames="callback, state, dueTime, period" />
-        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.TimeSpan, System.TimeSpan)" argnames="callback, state, dueTime, period" />
-        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.UInt32, System.UInt32)" argnames="callback, state, dueTime, period" />
-        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.Int64, System.Int64)" argnames="callback, state, dueTime, period" />
-        <method name="Dispose()" argnames="" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Change(System.Int32, System.Int32)" argnames="dueTime, period" returntype="System.Boolean" />
-        <method name="Change(System.TimeSpan, System.TimeSpan)" argnames="dueTime, period" returntype="System.Boolean" />
-        <method name="Change(System.UInt32, System.UInt32)" argnames="dueTime, period" returntype="System.Boolean" />
-        <method name="Change(System.Int64, System.Int64)" argnames="dueTime, period" returntype="System.Boolean" />
-        <method name="Dispose(System.Threading.WaitHandle)" argnames="notifyObject" returntype="System.Boolean" />
-    </class>
-    <struct name="LockCookie" namespace="System.Threading" />
-    <struct name="NativeOverlapped" namespace="System.Threading">
-        <field name="InternalLow" />
-        <field name="InternalHigh" />
-        <field name="OffsetLow" />
-        <field name="OffsetHigh" />
-        <field name="EventHandle" />
-    </struct>
-    <delegate name="WaitCallback" namespace="System.Threading">
-        <constructor name="WaitCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="state, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object)" argnames="state" returntype="System.Void" />
-    </delegate>
-    <delegate name="WaitOrTimerCallback" namespace="System.Threading">
-        <constructor name="WaitOrTimerCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.Boolean, System.AsyncCallback, System.Object)" argnames="state, timedOut, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object, System.Boolean)" argnames="state, timedOut" returntype="System.Void" />
-    </delegate>
-    <delegate name="IOCompletionCallback" namespace="System.Threading">
-        <constructor name="IOCompletionCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.UInt32, System.UInt32, System.Threading.NativeOverlapped*, System.AsyncCallback, System.Object)" argnames="errorCode, numBytes, pOVERLAP, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.UInt32, System.UInt32, System.Threading.NativeOverlapped*)" argnames="errorCode, numBytes, pOVERLAP" returntype="System.Void" />
-    </delegate>
-    <delegate name="ThreadStart" namespace="System.Threading">
-        <constructor name="ThreadStart(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke()" argnames="" returntype="System.Void" />
-    </delegate>
-    <delegate name="TimerCallback" namespace="System.Threading">
-        <constructor name="TimerCallback(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="state, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Object)" argnames="state" returntype="System.Void" />
-    </delegate>
-    <enum name="ApartmentState" namespace="System.Threading">
-        <field name="STA" />
-        <field name="MTA" />
-        <field name="Unknown" />
-    </enum>
-    <enum name="ThreadPriority" namespace="System.Threading">
-        <field name="Lowest" />
-        <field name="BelowNormal" />
-        <field name="Normal" />
-        <field name="AboveNormal" />
-        <field name="Highest" />
-    </enum>
-    <enum name="ThreadState" namespace="System.Threading">
-        <field name="Running" />
-        <field name="StopRequested" />
-        <field name="SuspendRequested" />
-        <field name="Background" />
-        <field name="Unstarted" />
-        <field name="Stopped" />
-        <field name="WaitSleepJoin" />
-        <field name="Suspended" />
-        <field name="AbortRequested" />
-        <field name="Aborted" />
-    </enum>
-    <class name="ObjectHandle" namespace="System.Runtime.Remoting">
-        <constructor name="ObjectHandle(System.Object)" argnames="o" />
-        <method name="Unwrap()" argnames="" returntype="System.Object" />
-        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="ObjRef" namespace="System.Runtime.Remoting">
-        <constructor name="ObjRef(System.MarshalByRefObject, System.Type)" argnames="o, requestedType" />
-        <constructor name="ObjRef(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <constructor name="ObjRef()" argnames="" />
-        <property name="URI" propertytype="System.String" />
-        <property name="TypeInfo" propertytype="System.Runtime.Remoting.IRemotingTypeInfo" />
-        <property name="EnvoyInfo" propertytype="System.Runtime.Remoting.IEnvoyInfo" />
-        <property name="ChannelInfo" propertytype="System.Runtime.Remoting.IChannelInfo" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetRealObject(System.Runtime.Serialization.StreamingContext)" argnames="context" returntype="System.Object" />
-        <method name="IsFromThisProcess()" argnames="" returntype="System.Boolean" />
-        <method name="IsFromThisAppDomain()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="RemotingConfiguration" namespace="System.Runtime.Remoting">
-        <property name="ApplicationName" propertytype="System.String" />
-        <property name="ApplicationId" propertytype="System.String" />
-        <property name="ProcessId" propertytype="System.String" />
-        <method name="Configure(System.String)" argnames="filename" returntype="System.Void" />
-        <method name="RegisterActivatedServiceType(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="RegisterActivatedServiceType(System.Runtime.Remoting.ActivatedServiceTypeEntry)" argnames="entry" returntype="System.Void" />
-        <method name="RegisterWellKnownServiceType(System.Type, System.String, System.Runtime.Remoting.WellKnownObjectMode)" argnames="type, objectUri, mode" returntype="System.Void" />
-        <method name="RegisterWellKnownServiceType(System.Runtime.Remoting.WellKnownServiceTypeEntry)" argnames="entry" returntype="System.Void" />
-        <method name="RegisterActivatedClientType(System.Type, System.String)" argnames="type, appUrl" returntype="System.Void" />
-        <method name="RegisterActivatedClientType(System.Runtime.Remoting.ActivatedClientTypeEntry)" argnames="entry" returntype="System.Void" />
-        <method name="RegisterWellKnownClientType(System.Type, System.String)" argnames="type, objectUrl" returntype="System.Void" />
-        <method name="RegisterWellKnownClientType(System.Runtime.Remoting.WellKnownClientTypeEntry)" argnames="entry" returntype="System.Void" />
-        <method name="GetRegisteredActivatedServiceTypes()" argnames="" returntype="System.Runtime.Remoting.ActivatedServiceTypeEntry[]" />
-        <method name="GetRegisteredWellKnownServiceTypes()" argnames="" returntype="System.Runtime.Remoting.WellKnownServiceTypeEntry[]" />
-        <method name="GetRegisteredActivatedClientTypes()" argnames="" returntype="System.Runtime.Remoting.ActivatedClientTypeEntry[]" />
-        <method name="GetRegisteredWellKnownClientTypes()" argnames="" returntype="System.Runtime.Remoting.WellKnownClientTypeEntry[]" />
-        <method name="IsRemotelyActivatedClientType(System.Type)" argnames="svrType" returntype="System.Runtime.Remoting.ActivatedClientTypeEntry" />
-        <method name="IsRemotelyActivatedClientType(System.String, System.String)" argnames="typeName, assemblyName" returntype="System.Runtime.Remoting.ActivatedClientTypeEntry" />
-        <method name="IsWellKnownClientType(System.Type)" argnames="svrType" returntype="System.Runtime.Remoting.WellKnownClientTypeEntry" />
-        <method name="IsWellKnownClientType(System.String, System.String)" argnames="typeName, assemblyName" returntype="System.Runtime.Remoting.WellKnownClientTypeEntry" />
-        <method name="IsActivationAllowed(System.Type)" argnames="svrType" returntype="System.Boolean" />
-    </class>
-    <class name="TypeEntry" namespace="System.Runtime.Remoting">
-        <constructor name="TypeEntry()" argnames="" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="AssemblyName" propertytype="System.String" />
-    </class>
-    <class name="ActivatedClientTypeEntry" namespace="System.Runtime.Remoting">
-        <constructor name="ActivatedClientTypeEntry(System.String, System.String, System.String)" argnames="typeName, assemblyName, appUrl" />
-        <constructor name="ActivatedClientTypeEntry(System.Type, System.String)" argnames="type, appUrl" />
-        <property name="ApplicationUrl" propertytype="System.String" />
-        <property name="ObjectType" propertytype="System.Type" />
-        <property name="ContextAttributes" propertytype="System.Runtime.Remoting.Contexts.IContextAttribute[]" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="ActivatedServiceTypeEntry" namespace="System.Runtime.Remoting">
-        <constructor name="ActivatedServiceTypeEntry(System.String, System.String)" argnames="typeName, assemblyName" />
-        <constructor name="ActivatedServiceTypeEntry(System.Type)" argnames="type" />
-        <property name="ObjectType" propertytype="System.Type" />
-        <property name="ContextAttributes" propertytype="System.Runtime.Remoting.Contexts.IContextAttribute[]" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="WellKnownClientTypeEntry" namespace="System.Runtime.Remoting">
-        <constructor name="WellKnownClientTypeEntry(System.String, System.String, System.String)" argnames="typeName, assemblyName, objectUrl" />
-        <constructor name="WellKnownClientTypeEntry(System.Type, System.String)" argnames="type, objectUrl" />
-        <property name="ObjectUrl" propertytype="System.String" />
-        <property name="ObjectType" propertytype="System.Type" />
-        <property name="ApplicationUrl" propertytype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="WellKnownServiceTypeEntry" namespace="System.Runtime.Remoting">
-        <constructor name="WellKnownServiceTypeEntry(System.String, System.String, System.String, System.Runtime.Remoting.WellKnownObjectMode)" argnames="typeName, assemblyName, objectUri, mode" />
-        <constructor name="WellKnownServiceTypeEntry(System.Type, System.String, System.Runtime.Remoting.WellKnownObjectMode)" argnames="type, objectUri, mode" />
-        <property name="ObjectUri" propertytype="System.String" />
-        <property name="Mode" propertytype="System.Runtime.Remoting.WellKnownObjectMode" />
-        <property name="ObjectType" propertytype="System.Type" />
-        <property name="ContextAttributes" propertytype="System.Runtime.Remoting.Contexts.IContextAttribute[]" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="RemotingException" namespace="System.Runtime.Remoting">
-        <constructor name="RemotingException()" argnames="" />
-        <constructor name="RemotingException(System.String)" argnames="message" />
-        <constructor name="RemotingException(System.String, System.Exception)" argnames="message, InnerException" />
-        <constructor name="RemotingException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="ServerException" namespace="System.Runtime.Remoting">
-        <constructor name="ServerException()" argnames="" />
-        <constructor name="ServerException(System.String)" argnames="message" />
-        <constructor name="ServerException(System.String, System.Exception)" argnames="message, InnerException" />
-    </class>
-    <class name="RemotingTimeoutException" namespace="System.Runtime.Remoting">
-        <constructor name="RemotingTimeoutException()" argnames="" />
-        <constructor name="RemotingTimeoutException(System.String)" argnames="message" />
-        <constructor name="RemotingTimeoutException(System.String, System.Exception)" argnames="message, InnerException" />
-    </class>
-    <class name="RemotingServices" namespace="System.Runtime.Remoting">
-        <method name="IsTransparentProxy(System.Object)" argnames="proxy" returntype="System.Boolean" />
-        <method name="IsObjectOutOfContext(System.Object)" argnames="tp" returntype="System.Boolean" />
-        <method name="IsObjectOutOfAppDomain(System.Object)" argnames="tp" returntype="System.Boolean" />
-        <method name="GetRealProxy(System.Object)" argnames="proxy" returntype="System.Runtime.Remoting.Proxies.RealProxy" />
-        <method name="GetSessionIdForMethodMessage(System.Runtime.Remoting.Messaging.IMethodMessage)" argnames="msg" returntype="System.String" />
-        <method name="GetLifetimeService(System.MarshalByRefObject)" argnames="obj" returntype="System.Object" />
-        <method name="GetObjectUri(System.MarshalByRefObject)" argnames="obj" returntype="System.String" />
-        <method name="SetObjectUriForMarshal(System.MarshalByRefObject, System.String)" argnames="obj, uri" returntype="System.Void" />
-        <method name="Marshal(System.MarshalByRefObject)" argnames="Obj" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="Marshal(System.MarshalByRefObject, System.String)" argnames="Obj, URI" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="Marshal(System.MarshalByRefObject, System.String, System.Type)" argnames="Obj, ObjURI, RequestedType" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="GetObjectData(System.Object, System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="obj, info, context" returntype="System.Void" />
-        <method name="Unmarshal(System.Runtime.Remoting.ObjRef)" argnames="objectRef" returntype="System.Object" />
-        <method name="Unmarshal(System.Runtime.Remoting.ObjRef, System.Boolean)" argnames="objectRef, fRefine" returntype="System.Object" />
-        <method name="Connect(System.Type, System.String)" argnames="classToProxy, url" returntype="System.Object" />
-        <method name="Connect(System.Type, System.String, System.Object)" argnames="classToProxy, url, data" returntype="System.Object" />
-        <method name="Disconnect(System.MarshalByRefObject)" argnames="obj" returntype="System.Boolean" />
-        <method name="GetEnvoyChainForProxy(System.MarshalByRefObject)" argnames="obj" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="GetObjRefForProxy(System.MarshalByRefObject)" argnames="obj" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="GetMethodBaseFromMethodMessage(System.Runtime.Remoting.Messaging.IMethodMessage)" argnames="msg" returntype="System.Reflection.MethodBase" />
-        <method name="IsMethodOverloaded(System.Runtime.Remoting.Messaging.IMethodMessage)" argnames="msg" returntype="System.Boolean" />
-        <method name="IsOneWay(System.Reflection.MethodBase)" argnames="method" returntype="System.Boolean" />
-        <method name="GetServerTypeForUri(System.String)" argnames="URI" returntype="System.Type" />
-        <method name="ExecuteMessage(System.MarshalByRefObject, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="target, reqMsg" returntype="System.Runtime.Remoting.Messaging.IMethodReturnMessage" />
-        <method name="LogRemotingStage(System.Int32)" argnames="stage" returntype="System.Void" />
-    </class>
-    <class name="InternalRemotingServices" namespace="System.Runtime.Remoting">
-        <constructor name="InternalRemotingServices()" argnames="" />
-        <method name="DebugOutChnl(System.String)" argnames="s" returntype="System.Void" />
-        <method name="RemotingTrace(System.Object[])" argnames="messages" returntype="System.Void" />
-        <method name="RemotingAssert(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
-        <method name="SetServerIdentity(System.Runtime.Remoting.Messaging.MethodCall, System.Object)" argnames="m, srvID" returntype="System.Void" />
-        <method name="GetCachedSoapAttribute(System.Object)" argnames="reflectionObject" returntype="System.Runtime.Remoting.Metadata.SoapAttribute" />
-    </class>
-    <class name="SoapServices" namespace="System.Runtime.Remoting">
-        <property name="XmlNsForClrType" propertytype="System.String" />
-        <property name="XmlNsForClrTypeWithAssembly" propertytype="System.String" />
-        <property name="XmlNsForClrTypeWithNs" propertytype="System.String" />
-        <property name="XmlNsForClrTypeWithNsAndAssembly" propertytype="System.String" />
-        <method name="RegisterInteropXmlElement(System.String, System.String, System.Type)" argnames="xmlElement, xmlNamespace, type" returntype="System.Void" />
-        <method name="RegisterInteropXmlType(System.String, System.String, System.Type)" argnames="xmlType, xmlTypeNamespace, type" returntype="System.Void" />
-        <method name="PreLoad(System.Type)" argnames="type" returntype="System.Void" />
-        <method name="PreLoad(System.Reflection.Assembly)" argnames="assembly" returntype="System.Void" />
-        <method name="GetInteropTypeFromXmlElement(System.String, System.String)" argnames="xmlElement, xmlNamespace" returntype="System.Type" />
-        <method name="GetInteropTypeFromXmlType(System.String, System.String)" argnames="xmlType, xmlTypeNamespace" returntype="System.Type" />
-        <method name="GetInteropFieldTypeAndNameFromXmlElement(System.Type, System.String, System.String, System.Type&amp;, System.String&amp;)" argnames="containingType, xmlElement, xmlNamespace, type, name" returntype="System.Void" />
-        <method name="GetInteropFieldTypeAndNameFromXmlAttribute(System.Type, System.String, System.String, System.Type&amp;, System.String&amp;)" argnames="containingType, xmlAttribute, xmlNamespace, type, name" returntype="System.Void" />
-        <method name="GetXmlElementForInteropType(System.Type, System.String&amp;, System.String&amp;)" argnames="type, xmlElement, xmlNamespace" returntype="System.Boolean" />
-        <method name="GetXmlTypeForInteropType(System.Type, System.String&amp;, System.String&amp;)" argnames="type, xmlType, xmlTypeNamespace" returntype="System.Boolean" />
-        <method name="GetXmlNamespaceForMethodCall(System.Reflection.MethodBase)" argnames="mb" returntype="System.String" />
-        <method name="GetXmlNamespaceForMethodResponse(System.Reflection.MethodBase)" argnames="mb" returntype="System.String" />
-        <method name="RegisterSoapActionForMethodBase(System.Reflection.MethodBase)" argnames="mb" returntype="System.Void" />
-        <method name="RegisterSoapActionForMethodBase(System.Reflection.MethodBase, System.String)" argnames="mb, soapAction" returntype="System.Void" />
-        <method name="GetSoapActionFromMethodBase(System.Reflection.MethodBase)" argnames="mb" returntype="System.String" />
-        <method name="IsSoapActionValidForMethodBase(System.String, System.Reflection.MethodBase)" argnames="soapAction, mb" returntype="System.Boolean" />
-        <method name="GetTypeAndMethodNameFromSoapAction(System.String, System.String&amp;, System.String&amp;)" argnames="soapAction, typeName, methodName" returntype="System.Boolean" />
-        <method name="IsClrTypeNamespace(System.String)" argnames="namespaceString" returntype="System.Boolean" />
-        <method name="CodeXmlNamespaceForClrTypeNamespace(System.String, System.String)" argnames="typeNamespace, assemblyName" returntype="System.String" />
-        <method name="DecodeXmlNamespaceForClrTypeNamespace(System.String, System.String&amp;, System.String&amp;)" argnames="inNamespace, typeNamespace, assemblyName" returntype="System.Boolean" />
-    </class>
-    <interface name="IObjectHandle" namespace="System.Runtime.Remoting">
-        <method name="Unwrap()" argnames="" returntype="System.Object" />
-    </interface>
-    <interface name="IRemotingTypeInfo" namespace="System.Runtime.Remoting">
-        <property name="TypeName" propertytype="System.String" />
-        <method name="CanCastTo(System.Type, System.Object)" argnames="fromType, o" returntype="System.Boolean" />
-    </interface>
-    <interface name="IChannelInfo" namespace="System.Runtime.Remoting">
-        <property name="ChannelData" propertytype="System.Object[]" />
-    </interface>
-    <interface name="IEnvoyInfo" namespace="System.Runtime.Remoting">
-        <property name="EnvoySinks" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
-    </interface>
-    <enum name="WellKnownObjectMode" namespace="System.Runtime.Remoting">
-        <field name="Singleton" />
-        <field name="SingleCall" />
-    </enum>
-    <class name="ConditionalAttribute" namespace="System.Diagnostics">
-        <constructor name="ConditionalAttribute(System.String)" argnames="conditionString" />
-        <property name="ConditionString" propertytype="System.String" />
-    </class>
-    <class name="Debugger" namespace="System.Diagnostics">
-        <constructor name="Debugger()" argnames="" />
-        <field name="DefaultCategory" />
-        <property name="IsAttached" propertytype="System.Boolean" />
-        <method name="Break()" argnames="" returntype="System.Void" />
-        <method name="Launch()" argnames="" returntype="System.Boolean" />
-        <method name="Log(System.Int32, System.String, System.String)" argnames="level, category, message" returntype="System.Void" />
-        <method name="IsLogging()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="DebuggerStepThroughAttribute" namespace="System.Diagnostics">
-        <constructor name="DebuggerStepThroughAttribute()" argnames="" />
-    </class>
-    <class name="DebuggerHiddenAttribute" namespace="System.Diagnostics">
-        <constructor name="DebuggerHiddenAttribute()" argnames="" />
-    </class>
-    <class name="DebuggableAttribute" namespace="System.Diagnostics">
-        <constructor name="DebuggableAttribute(System.Boolean, System.Boolean)" argnames="isJITTrackingEnabled, isJITOptimizerDisabled" />
-        <property name="IsJITTrackingEnabled" propertytype="System.Boolean" />
-        <property name="IsJITOptimizerDisabled" propertytype="System.Boolean" />
-    </class>
-    <class name="StackTrace" namespace="System.Diagnostics">
-        <constructor name="StackTrace()" argnames="" />
-        <constructor name="StackTrace(System.Boolean)" argnames="fNeedFileInfo" />
-        <constructor name="StackTrace(System.Int32)" argnames="skipFrames" />
-        <constructor name="StackTrace(System.Int32, System.Boolean)" argnames="skipFrames, fNeedFileInfo" />
-        <constructor name="StackTrace(System.Exception)" argnames="e" />
-        <constructor name="StackTrace(System.Exception, System.Boolean)" argnames="e, fNeedFileInfo" />
-        <constructor name="StackTrace(System.Exception, System.Int32)" argnames="e, skipFrames" />
-        <constructor name="StackTrace(System.Exception, System.Int32, System.Boolean)" argnames="e, skipFrames, fNeedFileInfo" />
-        <constructor name="StackTrace(System.Diagnostics.StackFrame)" argnames="frame" />
-        <constructor name="StackTrace(System.Threading.Thread, System.Boolean)" argnames="targetThread, needFileInfo" />
-        <field name="METHODS_TO_SKIP" />
-        <property name="FrameCount" propertytype="System.Int32" />
-        <method name="GetFrame(System.Int32)" argnames="index" returntype="System.Diagnostics.StackFrame" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="StackFrame" namespace="System.Diagnostics">
-        <constructor name="StackFrame()" argnames="" />
-        <constructor name="StackFrame(System.Boolean)" argnames="fNeedFileInfo" />
-        <constructor name="StackFrame(System.Int32)" argnames="skipFrames" />
-        <constructor name="StackFrame(System.Int32, System.Boolean)" argnames="skipFrames, fNeedFileInfo" />
-        <constructor name="StackFrame(System.String, System.Int32)" argnames="fileName, lineNumber" />
-        <constructor name="StackFrame(System.String, System.Int32, System.Int32)" argnames="fileName, lineNumber, colNumber" />
-        <field name="OFFSET_UNKNOWN" />
-        <method name="GetFileColumnNumber()" argnames="" returntype="System.Int32" />
-        <method name="GetFileLineNumber()" argnames="" returntype="System.Int32" />
-        <method name="GetFileName()" argnames="" returntype="System.String" />
-        <method name="GetILOffset()" argnames="" returntype="System.Int32" />
-        <method name="GetNativeOffset()" argnames="" returntype="System.Int32" />
-        <method name="GetMethod()" argnames="" returntype="System.Reflection.MethodBase" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="SymDocumentType" namespace="System.Diagnostics.SymbolStore">
-        <constructor name="SymDocumentType()" argnames="" />
-        <field name="Text" />
-    </class>
-    <class name="SymLanguageType" namespace="System.Diagnostics.SymbolStore">
-        <constructor name="SymLanguageType()" argnames="" />
-        <field name="C" />
-        <field name="CPlusPlus" />
-        <field name="CSharp" />
-        <field name="Basic" />
-        <field name="Java" />
-        <field name="Cobol" />
-        <field name="Pascal" />
-        <field name="ILAssembly" />
-        <field name="JScript" />
-        <field name="SMC" />
-        <field name="MCPlusPlus" />
-    </class>
-    <class name="SymLanguageVendor" namespace="System.Diagnostics.SymbolStore">
-        <constructor name="SymLanguageVendor()" argnames="" />
-        <field name="Microsoft" />
-    </class>
-    <interface name="ISymbolBinder" namespace="System.Diagnostics.SymbolStore">
-        <method name="GetReader(System.Int32, System.String, System.String)" argnames="importer, filename, searchPath" returntype="System.Diagnostics.SymbolStore.ISymbolReader" />
-    </interface>
-    <interface name="ISymbolDocument" namespace="System.Diagnostics.SymbolStore">
-        <property name="URL" propertytype="System.String" />
-        <property name="DocumentType" propertytype="System.Guid" />
-        <property name="Language" propertytype="System.Guid" />
-        <property name="LanguageVendor" propertytype="System.Guid" />
-        <property name="CheckSumAlgorithmId" propertytype="System.Guid" />
-        <property name="HasEmbeddedSource" propertytype="System.Boolean" />
-        <property name="SourceLength" propertytype="System.Int32" />
-        <method name="GetSourceRange(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="startLine, startColumn, endLine, endColumn" returntype="System.Byte[]" />
-        <method name="FindClosestLine(System.Int32)" argnames="line" returntype="System.Int32" />
-        <method name="GetCheckSum()" argnames="" returntype="System.Byte[]" />
-    </interface>
-    <interface name="ISymbolDocumentWriter" namespace="System.Diagnostics.SymbolStore">
-        <method name="SetCheckSum(System.Guid, System.Byte[])" argnames="algorithmId, checkSum" returntype="System.Void" />
-        <method name="SetSource(System.Byte[])" argnames="source" returntype="System.Void" />
-    </interface>
-    <interface name="ISymbolMethod" namespace="System.Diagnostics.SymbolStore">
-        <property name="Token" propertytype="System.Diagnostics.SymbolStore.SymbolToken" />
-        <property name="SequencePointCount" propertytype="System.Int32" />
-        <property name="RootScope" propertytype="System.Diagnostics.SymbolStore.ISymbolScope" />
-        <method name="GetSourceStartEnd(System.Diagnostics.SymbolStore.ISymbolDocument[], System.Int32[], System.Int32[])" argnames="docs, lines, columns" returntype="System.Boolean" />
-        <method name="GetNamespace()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace" />
-        <method name="GetParameters()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
-        <method name="GetRanges(System.Diagnostics.SymbolStore.ISymbolDocument, System.Int32, System.Int32)" argnames="document, line, column" returntype="System.Int32[]" />
-        <method name="GetOffset(System.Diagnostics.SymbolStore.ISymbolDocument, System.Int32, System.Int32)" argnames="document, line, column" returntype="System.Int32" />
-        <method name="GetScope(System.Int32)" argnames="offset" returntype="System.Diagnostics.SymbolStore.ISymbolScope" />
-        <method name="GetSequencePoints(System.Int32[], System.Diagnostics.SymbolStore.ISymbolDocument[], System.Int32[], System.Int32[], System.Int32[], System.Int32[])" argnames="offsets, documents, lines, columns, endLines, endColumns" returntype="System.Void" />
-    </interface>
-    <interface name="ISymbolNamespace" namespace="System.Diagnostics.SymbolStore">
-        <property name="Name" propertytype="System.String" />
-        <method name="GetVariables()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
-        <method name="GetNamespaces()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace[]" />
-    </interface>
-    <interface name="ISymbolReader" namespace="System.Diagnostics.SymbolStore">
-        <property name="UserEntryPoint" propertytype="System.Diagnostics.SymbolStore.SymbolToken" />
-        <method name="GetNamespaces()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace[]" />
-        <method name="GetSymAttribute(System.Diagnostics.SymbolStore.SymbolToken, System.String)" argnames="parent, name" returntype="System.Byte[]" />
-        <method name="GetMethodFromDocumentPosition(System.Diagnostics.SymbolStore.ISymbolDocument, System.Int32, System.Int32)" argnames="document, line, column" returntype="System.Diagnostics.SymbolStore.ISymbolMethod" />
-        <method name="GetGlobalVariables()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
-        <method name="GetVariables(System.Diagnostics.SymbolStore.SymbolToken)" argnames="parent" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
-        <method name="GetMethod(System.Diagnostics.SymbolStore.SymbolToken, System.Int32)" argnames="method, version" returntype="System.Diagnostics.SymbolStore.ISymbolMethod" />
-        <method name="GetMethod(System.Diagnostics.SymbolStore.SymbolToken)" argnames="method" returntype="System.Diagnostics.SymbolStore.ISymbolMethod" />
-        <method name="GetDocuments()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolDocument[]" />
-        <method name="GetDocument(System.String, System.Guid, System.Guid, System.Guid)" argnames="url, language, languageVendor, documentType" returntype="System.Diagnostics.SymbolStore.ISymbolDocument" />
-    </interface>
-    <interface name="ISymbolScope" namespace="System.Diagnostics.SymbolStore">
-        <property name="Method" propertytype="System.Diagnostics.SymbolStore.ISymbolMethod" />
-        <property name="Parent" propertytype="System.Diagnostics.SymbolStore.ISymbolScope" />
-        <property name="StartOffset" propertytype="System.Int32" />
-        <property name="EndOffset" propertytype="System.Int32" />
-        <method name="GetNamespaces()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace[]" />
-        <method name="GetLocals()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
-        <method name="GetChildren()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolScope[]" />
-    </interface>
-    <interface name="ISymbolVariable" namespace="System.Diagnostics.SymbolStore">
-        <property name="Name" propertytype="System.String" />
-        <property name="Attributes" propertytype="System.Object" />
-        <property name="AddressKind" propertytype="System.Diagnostics.SymbolStore.SymAddressKind" />
-        <property name="AddressField1" propertytype="System.Int32" />
-        <property name="AddressField2" propertytype="System.Int32" />
-        <property name="AddressField3" propertytype="System.Int32" />
-        <property name="StartOffset" propertytype="System.Int32" />
-        <property name="EndOffset" propertytype="System.Int32" />
-        <method name="GetSignature()" argnames="" returntype="System.Byte[]" />
-    </interface>
-    <interface name="ISymbolWriter" namespace="System.Diagnostics.SymbolStore">
-        <method name="SetUnderlyingWriter(System.IntPtr)" argnames="underlyingWriter" returntype="System.Void" />
-        <method name="SetMethodSourceRange(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32)" argnames="startDoc, startLine, startColumn, endDoc, endLine, endColumn" returntype="System.Void" />
-        <method name="UsingNamespace(System.String)" argnames="fullName" returntype="System.Void" />
-        <method name="CloseNamespace()" argnames="" returntype="System.Void" />
-        <method name="OpenNamespace(System.String)" argnames="name" returntype="System.Void" />
-        <method name="SetSymAttribute(System.Diagnostics.SymbolStore.SymbolToken, System.String, System.Byte[])" argnames="parent, name, data" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="DefineGlobalVariable(System.String, System.Reflection.FieldAttributes, System.Byte[], System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32)" argnames="name, attributes, signature, addrKind, addr1, addr2, addr3" returntype="System.Void" />
-        <method name="DefineField(System.Diagnostics.SymbolStore.SymbolToken, System.String, System.Reflection.FieldAttributes, System.Byte[], System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32)" argnames="parent, name, attributes, signature, addrKind, addr1, addr2, addr3" returntype="System.Void" />
-        <method name="DefineParameter(System.String, System.Reflection.ParameterAttributes, System.Int32, System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32)" argnames="name, attributes, sequence, addrKind, addr1, addr2, addr3" returntype="System.Void" />
-        <method name="DefineLocalVariable(System.String, System.Reflection.FieldAttributes, System.Byte[], System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="name, attributes, signature, addrKind, addr1, addr2, addr3, startOffset, endOffset" returntype="System.Void" />
-        <method name="SetScopeRange(System.Int32, System.Int32, System.Int32)" argnames="scopeID, startOffset, endOffset" returntype="System.Void" />
-        <method name="CloseScope(System.Int32)" argnames="endOffset" returntype="System.Void" />
-        <method name="OpenScope(System.Int32)" argnames="startOffset" returntype="System.Int32" />
-        <method name="DefineSequencePoints(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32[], System.Int32[], System.Int32[], System.Int32[], System.Int32[])" argnames="document, offsets, lines, columns, endLines, endColumns" returntype="System.Void" />
-        <method name="CloseMethod()" argnames="" returntype="System.Void" />
-        <method name="OpenMethod(System.Diagnostics.SymbolStore.SymbolToken)" argnames="method" returntype="System.Void" />
-        <method name="SetUserEntryPoint(System.Diagnostics.SymbolStore.SymbolToken)" argnames="entryMethod" returntype="System.Void" />
-        <method name="DefineDocument(System.String, System.Guid, System.Guid, System.Guid)" argnames="url, language, languageVendor, documentType" returntype="System.Diagnostics.SymbolStore.ISymbolDocumentWriter" />
-        <method name="Initialize(System.IntPtr, System.String, System.Boolean)" argnames="emitter, filename, fFullBuild" returntype="System.Void" />
-    </interface>
-    <struct name="SymbolToken" namespace="System.Diagnostics.SymbolStore">
-        <constructor name="SymbolToken(System.Int32)" argnames="val" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="GetToken()" argnames="" returntype="System.Int32" />
-    </struct>
-    <enum name="SymAddressKind" namespace="System.Diagnostics.SymbolStore">
-        <field name="ILOffset" />
-        <field name="NativeRVA" />
-        <field name="NativeRegister" />
-        <field name="NativeRegisterRelative" />
-        <field name="NativeOffset" />
-        <field name="NativeRegisterRegister" />
-        <field name="NativeRegisterStack" />
-        <field name="NativeStackRegister" />
-        <field name="BitField" />
-    </enum>
-    <class name="UnmanagedMarshal" namespace="System.Reflection.Emit">
-        <property name="GetUnmanagedType" propertytype="System.Runtime.InteropServices.UnmanagedType" />
-        <property name="IIDGuid" propertytype="System.Guid" />
-        <property name="ElementCount" propertytype="System.Int32" />
-        <property name="BaseType" propertytype="System.Runtime.InteropServices.UnmanagedType" />
-        <method name="DefineUnmanagedMarshal(System.Runtime.InteropServices.UnmanagedType)" argnames="unmanagedType" returntype="System.Reflection.Emit.UnmanagedMarshal" />
-        <method name="DefineByValTStr(System.Int32)" argnames="elemCount" returntype="System.Reflection.Emit.UnmanagedMarshal" />
-        <method name="DefineSafeArray(System.Runtime.InteropServices.UnmanagedType)" argnames="elemType" returntype="System.Reflection.Emit.UnmanagedMarshal" />
-        <method name="DefineByValArray(System.Int32)" argnames="elemCount" returntype="System.Reflection.Emit.UnmanagedMarshal" />
-        <method name="DefineLPArray(System.Runtime.InteropServices.UnmanagedType)" argnames="elemType" returntype="System.Reflection.Emit.UnmanagedMarshal" />
-    </class>
-    <class name="AssemblyBuilder" namespace="System.Reflection.Emit">
-        <property name="Location" propertytype="System.String" />
-        <property name="CodeBase" propertytype="System.String" />
-        <property name="EntryPoint" propertytype="System.Reflection.MethodInfo" />
-        <method name="GetManifestResourceInfo(System.String)" argnames="resourceName" returntype="System.Reflection.ManifestResourceInfo" />
-        <method name="GetManifestResourceNames()" argnames="" returntype="System.String[]" />
-        <method name="GetFiles(System.Boolean)" argnames="getResourceModules" returntype="System.IO.FileStream[]" />
-        <method name="GetFile(System.String)" argnames="name" returntype="System.IO.FileStream" />
-        <method name="GetManifestResourceStream(System.String)" argnames="name" returntype="System.IO.Stream" />
-        <method name="GetManifestResourceStream(System.Type, System.String)" argnames="type, name" returntype="System.IO.Stream" />
-        <method name="GetExportedTypes()" argnames="" returntype="System.Type[]" />
-        <method name="DefineDynamicModule(System.String)" argnames="name" returntype="System.Reflection.Emit.ModuleBuilder" />
-        <method name="DefineDynamicModule(System.String, System.Boolean)" argnames="name, emitSymbolInfo" returntype="System.Reflection.Emit.ModuleBuilder" />
-        <method name="DefineDynamicModule(System.String, System.String)" argnames="name, fileName" returntype="System.Reflection.Emit.ModuleBuilder" />
-        <method name="DefineDynamicModule(System.String, System.String, System.Boolean)" argnames="name, fileName, emitSymbolInfo" returntype="System.Reflection.Emit.ModuleBuilder" />
-        <method name="DefineResource(System.String, System.String, System.String)" argnames="name, description, fileName" returntype="System.Resources.IResourceWriter" />
-        <method name="DefineResource(System.String, System.String, System.String, System.Reflection.ResourceAttributes)" argnames="name, description, fileName, attribute" returntype="System.Resources.IResourceWriter" />
-        <method name="AddResourceFile(System.String, System.String)" argnames="name, fileName" returntype="System.Void" />
-        <method name="AddResourceFile(System.String, System.String, System.Reflection.ResourceAttributes)" argnames="name, fileName, attribute" returntype="System.Void" />
-        <method name="DefineVersionInfoResource(System.String, System.String, System.String, System.String, System.String)" argnames="product, productVersion, company, copyright, trademark" returntype="System.Void" />
-        <method name="DefineVersionInfoResource()" argnames="" returntype="System.Void" />
-        <method name="DefineUnmanagedResource(System.Byte[])" argnames="resource" returntype="System.Void" />
-        <method name="DefineUnmanagedResource(System.String)" argnames="resourceFileName" returntype="System.Void" />
-        <method name="GetDynamicModule(System.String)" argnames="name" returntype="System.Reflection.Emit.ModuleBuilder" />
-        <method name="SetEntryPoint(System.Reflection.MethodInfo)" argnames="entryMethod" returntype="System.Void" />
-        <method name="SetEntryPoint(System.Reflection.MethodInfo, System.Reflection.Emit.PEFileKinds)" argnames="entryMethod, fileKind" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-        <method name="Save(System.String)" argnames="assemblyFileName" returntype="System.Void" />
-        <event name="ModuleResolve" inherited="System.Reflection.Assembly" />
-    </class>
-    <class name="ConstructorBuilder" namespace="System.Reflection.Emit">
-        <property name="ReturnType" propertytype="System.Type" />
-        <property name="Signature" propertytype="System.String" />
-        <property name="Attributes" propertytype="System.Reflection.MethodAttributes" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="InitLocals" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="MethodHandle" propertytype="System.RuntimeMethodHandle" />
-        <method name="Invoke(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="invokeAttr, binder, parameters, culture" returntype="System.Object" />
-        <method name="Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, parameters, culture" returntype="System.Object" />
-        <method name="GetMethodImplementationFlags()" argnames="" returntype="System.Reflection.MethodImplAttributes" />
-        <method name="GetParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.MethodToken" />
-        <method name="DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)" argnames="iSequence, attributes, strParamName" returntype="System.Reflection.Emit.ParameterBuilder" />
-        <method name="SetSymCustomAttribute(System.String, System.Byte[])" argnames="name, data" returntype="System.Void" />
-        <method name="GetILGenerator()" argnames="" returntype="System.Reflection.Emit.ILGenerator" />
-        <method name="AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)" argnames="action, pset" returntype="System.Void" />
-        <method name="GetModule()" argnames="" returntype="System.Reflection.Module" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-        <method name="SetImplementationFlags(System.Reflection.MethodImplAttributes)" argnames="attributes" returntype="System.Void" />
-    </class>
-    <class name="EventBuilder" namespace="System.Reflection.Emit">
-        <method name="GetEventToken()" argnames="" returntype="System.Reflection.Emit.EventToken" />
-        <method name="SetAddOnMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
-        <method name="SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
-        <method name="SetRaiseMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
-        <method name="AddOtherMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-    </class>
-    <class name="FieldBuilder" namespace="System.Reflection.Emit">
-        <property name="FieldType" propertytype="System.Type" />
-        <property name="Name" propertytype="System.String" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <property name="FieldHandle" propertytype="System.RuntimeFieldHandle" />
-        <property name="Attributes" propertytype="System.Reflection.FieldAttributes" />
-        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Globalization.CultureInfo)" argnames="obj, val, invokeAttr, binder, culture" returntype="System.Void" />
-        <method name="GetValue(System.Object)" argnames="obj" returntype="System.Object" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.FieldToken" />
-        <method name="SetOffset(System.Int32)" argnames="iOffset" returntype="System.Void" />
-        <method name="SetMarshal(System.Reflection.Emit.UnmanagedMarshal)" argnames="unmanagedMarshal" returntype="System.Void" />
-        <method name="SetConstant(System.Object)" argnames="defaultValue" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-    </class>
-    <class name="ILGenerator" namespace="System.Reflection.Emit">
-        <method name="EndScope()" argnames="" returntype="System.Void" />
-        <method name="BeginScope()" argnames="" returntype="System.Void" />
-        <method name="MarkSequencePoint(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="document, startLine, startColumn, endLine, endColumn" returntype="System.Void" />
-        <method name="EmitWriteLine(System.Reflection.FieldInfo)" argnames="fld" returntype="System.Void" />
-        <method name="EmitWriteLine(System.Reflection.Emit.LocalBuilder)" argnames="localBuilder" returntype="System.Void" />
-        <method name="EmitWriteLine(System.String)" argnames="value" returntype="System.Void" />
-        <method name="ThrowException(System.Type)" argnames="excType" returntype="System.Void" />
-        <method name="MarkLabel(System.Reflection.Emit.Label)" argnames="loc" returntype="System.Void" />
-        <method name="DefineLabel()" argnames="" returntype="System.Reflection.Emit.Label" />
-        <method name="BeginFinallyBlock()" argnames="" returntype="System.Void" />
-        <method name="BeginFaultBlock()" argnames="" returntype="System.Void" />
-        <method name="BeginCatchBlock(System.Type)" argnames="exceptionType" returntype="System.Void" />
-        <method name="BeginExceptFilterBlock()" argnames="" returntype="System.Void" />
-        <method name="EndExceptionBlock()" argnames="" returntype="System.Void" />
-        <method name="BeginExceptionBlock()" argnames="" returntype="System.Reflection.Emit.Label" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.LocalBuilder)" argnames="opcode, local" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.String)" argnames="opcode, str" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.FieldInfo)" argnames="opcode, field" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.Label[])" argnames="opcode, labels" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.Label)" argnames="opcode, label" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Double)" argnames="opcode, arg" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Single)" argnames="opcode, arg" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Int64)" argnames="opcode, arg" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Type)" argnames="opcode, cls" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.ConstructorInfo)" argnames="opcode, con" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.SignatureHelper)" argnames="opcode, signature" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.MethodInfo)" argnames="opcode, meth" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Int32)" argnames="opcode, arg" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Int16)" argnames="opcode, arg" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.Byte)" argnames="opcode, arg" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode)" argnames="opcode" returntype="System.Void" />
-        <method name="Emit(System.Reflection.Emit.OpCode, System.SByte)" argnames="opcode, arg" returntype="System.Void" />
-        <method name="EmitCalli(System.Reflection.Emit.OpCode, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[])" argnames="opcode, callingConvention, returnType, parameterTypes, optionalParameterTypes" returntype="System.Void" />
-        <method name="EmitCalli(System.Reflection.Emit.OpCode, System.Runtime.InteropServices.CallingConvention, System.Type, System.Type[])" argnames="opcode, unmanagedCallConv, returnType, parameterTypes" returntype="System.Void" />
-        <method name="EmitCall(System.Reflection.Emit.OpCode, System.Reflection.MethodInfo, System.Type[])" argnames="opcode, methodInfo, optionalParameterTypes" returntype="System.Void" />
-        <method name="DeclareLocal(System.Type)" argnames="localType" returntype="System.Reflection.Emit.LocalBuilder" />
-        <method name="UsingNamespace(System.String)" argnames="usingNamespace" returntype="System.Void" />
-    </class>
-    <class name="LocalBuilder" namespace="System.Reflection.Emit">
-        <property name="LocalType" propertytype="System.Type" />
-        <method name="SetLocalSymInfo(System.String)" argnames="name" returntype="System.Void" />
-        <method name="SetLocalSymInfo(System.String, System.Int32, System.Int32)" argnames="name, startOffset, endOffset" returntype="System.Void" />
-    </class>
-    <class name="MethodBuilder" namespace="System.Reflection.Emit">
-        <property name="InitLocals" propertytype="System.Boolean" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="ReturnType" propertytype="System.Type" />
-        <property name="ReturnTypeCustomAttributes" propertytype="System.Reflection.ICustomAttributeProvider" />
-        <property name="Signature" propertytype="System.String" />
-        <property name="Attributes" propertytype="System.Reflection.MethodAttributes" />
-        <property name="CallingConvention" propertytype="System.Reflection.CallingConventions" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <property name="MethodHandle" propertytype="System.RuntimeMethodHandle" />
-        <property name="Name" propertytype="System.String" />
-        <method name="GetBaseDefinition()" argnames="" returntype="System.Reflection.MethodInfo" />
-        <method name="Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, parameters, culture" returntype="System.Object" />
-        <method name="GetMethodImplementationFlags()" argnames="" returntype="System.Reflection.MethodImplAttributes" />
-        <method name="GetParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.MethodToken" />
-        <method name="DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)" argnames="position, attributes, strParamName" returntype="System.Reflection.Emit.ParameterBuilder" />
-        <method name="SetMarshal(System.Reflection.Emit.UnmanagedMarshal)" argnames="unmanagedMarshal" returntype="System.Void" />
-        <method name="SetSymCustomAttribute(System.String, System.Byte[])" argnames="name, data" returntype="System.Void" />
-        <method name="AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)" argnames="action, pset" returntype="System.Void" />
-        <method name="CreateMethodBody(System.Byte[], System.Int32)" argnames="il, count" returntype="System.Void" />
-        <method name="SetImplementationFlags(System.Reflection.MethodImplAttributes)" argnames="attributes" returntype="System.Void" />
-        <method name="GetILGenerator()" argnames="" returntype="System.Reflection.Emit.ILGenerator" />
-        <method name="GetILGenerator(System.Int32)" argnames="size" returntype="System.Reflection.Emit.ILGenerator" />
-        <method name="GetModule()" argnames="" returntype="System.Reflection.Module" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-    </class>
-    <class name="CustomAttributeBuilder" namespace="System.Reflection.Emit">
-        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[])" argnames="con, constructorArgs" />
-        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[], System.Reflection.PropertyInfo[], System.Object[])" argnames="con, constructorArgs, namedProperties, propertyValues" />
-        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[], System.Reflection.FieldInfo[], System.Object[])" argnames="con, constructorArgs, namedFields, fieldValues" />
-        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[], System.Reflection.PropertyInfo[], System.Object[], System.Reflection.FieldInfo[], System.Object[])" argnames="con, constructorArgs, namedProperties, propertyValues, namedFields, fieldValues" />
-    </class>
-    <class name="MethodRental" namespace="System.Reflection.Emit">
-        <field name="JitOnDemand" />
-        <field name="JitImmediate" />
-        <method name="SwapMethodBody(System.Type, System.Int32, System.IntPtr, System.Int32, System.Int32)" argnames="cls, methodtoken, rgIL, methodSize, flags" returntype="System.Void" />
-    </class>
-    <class name="ModuleBuilder" namespace="System.Reflection.Emit">
-        <property name="FullyQualifiedName" propertytype="System.String" />
-        <method name="GetTypes()" argnames="" returntype="System.Type[]" />
-        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="className, throwOnError, ignoreCase" returntype="System.Type" />
-        <method name="GetType(System.String)" argnames="className" returntype="System.Type" />
-        <method name="GetType(System.String, System.Boolean)" argnames="className, ignoreCase" returntype="System.Type" />
-        <method name="DefineType(System.String)" argnames="name" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])" argnames="name, attr, parent, interfaces" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type)" argnames="name, attr, parent" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineType(System.String, System.Reflection.TypeAttributes)" argnames="name, attr" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)" argnames="name, attr, parent, packingSize, typesize" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Int32)" argnames="name, attr, parent, typesize" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize)" argnames="name, attr, parent, packsize" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)" argnames="name, visibility, underlyingType" returntype="System.Reflection.Emit.EnumBuilder" />
-        <method name="DefineResource(System.String, System.String)" argnames="name, description" returntype="System.Resources.IResourceWriter" />
-        <method name="DefineResource(System.String, System.String, System.Reflection.ResourceAttributes)" argnames="name, description, attribute" returntype="System.Resources.IResourceWriter" />
-        <method name="DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Type, System.Type[])" argnames="name, attributes, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="name, attributes, callingConvention, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)" argnames="name, data, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
-        <method name="DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)" argnames="name, size, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
-        <method name="GetTypeToken(System.Type)" argnames="type" returntype="System.Reflection.Emit.TypeToken" />
-        <method name="GetTypeToken(System.String)" argnames="name" returntype="System.Reflection.Emit.TypeToken" />
-        <method name="GetMethodToken(System.Reflection.MethodInfo)" argnames="method" returntype="System.Reflection.Emit.MethodToken" />
-        <method name="GetArrayMethodToken(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="arrayClass, methodName, callingConvention, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodToken" />
-        <method name="GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="arrayClass, methodName, callingConvention, returnType, parameterTypes" returntype="System.Reflection.MethodInfo" />
-        <method name="GetFieldToken(System.Reflection.FieldInfo)" argnames="field" returntype="System.Reflection.Emit.FieldToken" />
-        <method name="GetStringConstant(System.String)" argnames="str" returntype="System.Reflection.Emit.StringToken" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-        <method name="GetSignatureToken(System.Reflection.Emit.SignatureHelper)" argnames="sigHelper" returntype="System.Reflection.Emit.SignatureToken" />
-        <method name="GetSignatureToken(System.Byte[], System.Int32)" argnames="sigBytes, sigLength" returntype="System.Reflection.Emit.SignatureToken" />
-        <method name="GetConstructorToken(System.Reflection.ConstructorInfo)" argnames="con" returntype="System.Reflection.Emit.MethodToken" />
-        <method name="GetSymWriter()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolWriter" />
-        <method name="SetUserEntryPoint(System.Reflection.MethodInfo)" argnames="entryPoint" returntype="System.Void" />
-        <method name="DefineDocument(System.String, System.Guid, System.Guid, System.Guid)" argnames="url, language, languageVendor, documentType" returntype="System.Diagnostics.SymbolStore.ISymbolDocumentWriter" />
-        <method name="SetSymCustomAttribute(System.String, System.Byte[])" argnames="name, data" returntype="System.Void" />
-        <method name="DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, entryName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="CreateGlobalFunctions()" argnames="" returntype="System.Void" />
-        <method name="IsTransient()" argnames="" returntype="System.Boolean" />
-        <method name="DefineUnmanagedResource(System.Byte[])" argnames="resource" returntype="System.Void" />
-        <method name="DefineUnmanagedResource(System.String)" argnames="resourceFileName" returntype="System.Void" />
-    </class>
-    <class name="OpCodes" namespace="System.Reflection.Emit">
-        <field name="Nop" />
-        <field name="Break" />
-        <field name="Ldarg_0" />
-        <field name="Ldarg_1" />
-        <field name="Ldarg_2" />
-        <field name="Ldarg_3" />
-        <field name="Ldloc_0" />
-        <field name="Ldloc_1" />
-        <field name="Ldloc_2" />
-        <field name="Ldloc_3" />
-        <field name="Stloc_0" />
-        <field name="Stloc_1" />
-        <field name="Stloc_2" />
-        <field name="Stloc_3" />
-        <field name="Ldarg_S" />
-        <field name="Ldarga_S" />
-        <field name="Starg_S" />
-        <field name="Ldloc_S" />
-        <field name="Ldloca_S" />
-        <field name="Stloc_S" />
-        <field name="Ldnull" />
-        <field name="Ldc_I4_M1" />
-        <field name="Ldc_I4_0" />
-        <field name="Ldc_I4_1" />
-        <field name="Ldc_I4_2" />
-        <field name="Ldc_I4_3" />
-        <field name="Ldc_I4_4" />
-        <field name="Ldc_I4_5" />
-        <field name="Ldc_I4_6" />
-        <field name="Ldc_I4_7" />
-        <field name="Ldc_I4_8" />
-        <field name="Ldc_I4_S" />
-        <field name="Ldc_I4" />
-        <field name="Ldc_I8" />
-        <field name="Ldc_R4" />
-        <field name="Ldc_R8" />
-        <field name="Dup" />
-        <field name="Pop" />
-        <field name="Jmp" />
-        <field name="Call" />
-        <field name="Calli" />
-        <field name="Ret" />
-        <field name="Br_S" />
-        <field name="Brfalse_S" />
-        <field name="Brtrue_S" />
-        <field name="Beq_S" />
-        <field name="Bge_S" />
-        <field name="Bgt_S" />
-        <field name="Ble_S" />
-        <field name="Blt_S" />
-        <field name="Bne_Un_S" />
-        <field name="Bge_Un_S" />
-        <field name="Bgt_Un_S" />
-        <field name="Ble_Un_S" />
-        <field name="Blt_Un_S" />
-        <field name="Br" />
-        <field name="Brfalse" />
-        <field name="Brtrue" />
-        <field name="Beq" />
-        <field name="Bge" />
-        <field name="Bgt" />
-        <field name="Ble" />
-        <field name="Blt" />
-        <field name="Bne_Un" />
-        <field name="Bge_Un" />
-        <field name="Bgt_Un" />
-        <field name="Ble_Un" />
-        <field name="Blt_Un" />
-        <field name="Switch" />
-        <field name="Ldind_I1" />
-        <field name="Ldind_U1" />
-        <field name="Ldind_I2" />
-        <field name="Ldind_U2" />
-        <field name="Ldind_I4" />
-        <field name="Ldind_U4" />
-        <field name="Ldind_I8" />
-        <field name="Ldind_I" />
-        <field name="Ldind_R4" />
-        <field name="Ldind_R8" />
-        <field name="Ldind_Ref" />
-        <field name="Stind_Ref" />
-        <field name="Stind_I1" />
-        <field name="Stind_I2" />
-        <field name="Stind_I4" />
-        <field name="Stind_I8" />
-        <field name="Stind_R4" />
-        <field name="Stind_R8" />
-        <field name="Add" />
-        <field name="Sub" />
-        <field name="Mul" />
-        <field name="Div" />
-        <field name="Div_Un" />
-        <field name="Rem" />
-        <field name="Rem_Un" />
-        <field name="And" />
-        <field name="Or" />
-        <field name="Xor" />
-        <field name="Shl" />
-        <field name="Shr" />
-        <field name="Shr_Un" />
-        <field name="Neg" />
-        <field name="Not" />
-        <field name="Conv_I1" />
-        <field name="Conv_I2" />
-        <field name="Conv_I4" />
-        <field name="Conv_I8" />
-        <field name="Conv_R4" />
-        <field name="Conv_R8" />
-        <field name="Conv_U4" />
-        <field name="Conv_U8" />
-        <field name="Callvirt" />
-        <field name="Cpobj" />
-        <field name="Ldobj" />
-        <field name="Ldstr" />
-        <field name="Newobj" />
-        <field name="Castclass" />
-        <field name="Isinst" />
-        <field name="Conv_R_Un" />
-        <field name="Unbox" />
-        <field name="Throw" />
-        <field name="Ldfld" />
-        <field name="Ldflda" />
-        <field name="Stfld" />
-        <field name="Ldsfld" />
-        <field name="Ldsflda" />
-        <field name="Stsfld" />
-        <field name="Stobj" />
-        <field name="Conv_Ovf_I1_Un" />
-        <field name="Conv_Ovf_I2_Un" />
-        <field name="Conv_Ovf_I4_Un" />
-        <field name="Conv_Ovf_I8_Un" />
-        <field name="Conv_Ovf_U1_Un" />
-        <field name="Conv_Ovf_U2_Un" />
-        <field name="Conv_Ovf_U4_Un" />
-        <field name="Conv_Ovf_U8_Un" />
-        <field name="Conv_Ovf_I_Un" />
-        <field name="Conv_Ovf_U_Un" />
-        <field name="Box" />
-        <field name="Newarr" />
-        <field name="Ldlen" />
-        <field name="Ldelema" />
-        <field name="Ldelem_I1" />
-        <field name="Ldelem_U1" />
-        <field name="Ldelem_I2" />
-        <field name="Ldelem_U2" />
-        <field name="Ldelem_I4" />
-        <field name="Ldelem_U4" />
-        <field name="Ldelem_I8" />
-        <field name="Ldelem_I" />
-        <field name="Ldelem_R4" />
-        <field name="Ldelem_R8" />
-        <field name="Ldelem_Ref" />
-        <field name="Stelem_I" />
-        <field name="Stelem_I1" />
-        <field name="Stelem_I2" />
-        <field name="Stelem_I4" />
-        <field name="Stelem_I8" />
-        <field name="Stelem_R4" />
-        <field name="Stelem_R8" />
-        <field name="Stelem_Ref" />
-        <field name="Conv_Ovf_I1" />
-        <field name="Conv_Ovf_U1" />
-        <field name="Conv_Ovf_I2" />
-        <field name="Conv_Ovf_U2" />
-        <field name="Conv_Ovf_I4" />
-        <field name="Conv_Ovf_U4" />
-        <field name="Conv_Ovf_I8" />
-        <field name="Conv_Ovf_U8" />
-        <field name="Refanyval" />
-        <field name="Ckfinite" />
-        <field name="Mkrefany" />
-        <field name="Ldtoken" />
-        <field name="Conv_U2" />
-        <field name="Conv_U1" />
-        <field name="Conv_I" />
-        <field name="Conv_Ovf_I" />
-        <field name="Conv_Ovf_U" />
-        <field name="Add_Ovf" />
-        <field name="Add_Ovf_Un" />
-        <field name="Mul_Ovf" />
-        <field name="Mul_Ovf_Un" />
-        <field name="Sub_Ovf" />
-        <field name="Sub_Ovf_Un" />
-        <field name="Endfinally" />
-        <field name="Leave" />
-        <field name="Leave_S" />
-        <field name="Stind_I" />
-        <field name="Conv_U" />
-        <field name="Prefix7" />
-        <field name="Prefix6" />
-        <field name="Prefix5" />
-        <field name="Prefix4" />
-        <field name="Prefix3" />
-        <field name="Prefix2" />
-        <field name="Prefix1" />
-        <field name="Prefixref" />
-        <field name="Arglist" />
-        <field name="Ceq" />
-        <field name="Cgt" />
-        <field name="Cgt_Un" />
-        <field name="Clt" />
-        <field name="Clt_Un" />
-        <field name="Ldftn" />
-        <field name="Ldvirtftn" />
-        <field name="Ldarg" />
-        <field name="Ldarga" />
-        <field name="Starg" />
-        <field name="Ldloc" />
-        <field name="Ldloca" />
-        <field name="Stloc" />
-        <field name="Localloc" />
-        <field name="Endfilter" />
-        <field name="Unaligned" />
-        <field name="Volatile" />
-        <field name="Tailcall" />
-        <field name="Initobj" />
-        <field name="Cpblk" />
-        <field name="Initblk" />
-        <field name="Rethrow" />
-        <field name="Sizeof" />
-        <field name="Refanytype" />
-        <method name="TakesSingleByteArgument(System.Reflection.Emit.OpCode)" argnames="inst" returntype="System.Boolean" />
-    </class>
-    <class name="ParameterBuilder" namespace="System.Reflection.Emit">
-        <property name="Name" propertytype="System.String" />
-        <property name="Position" propertytype="System.Int32" />
-        <property name="Attributes" propertytype="System.Int32" />
-        <property name="IsIn" propertytype="System.Boolean" />
-        <property name="IsOut" propertytype="System.Boolean" />
-        <property name="IsOptional" propertytype="System.Boolean" />
-        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.ParameterToken" />
-        <method name="SetConstant(System.Object)" argnames="defaultValue" returntype="System.Void" />
-        <method name="SetMarshal(System.Reflection.Emit.UnmanagedMarshal)" argnames="unmanagedMarshal" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-    </class>
-    <class name="PropertyBuilder" namespace="System.Reflection.Emit">
-        <property name="PropertyToken" propertytype="System.Reflection.Emit.PropertyToken" />
-        <property name="PropertyType" propertytype="System.Type" />
-        <property name="Attributes" propertytype="System.Reflection.PropertyAttributes" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <method name="GetIndexParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
-        <method name="GetSetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
-        <method name="GetGetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
-        <method name="GetAccessors(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo[]" />
-        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, value, invokeAttr, binder, index, culture" returntype="System.Void" />
-        <method name="SetValue(System.Object, System.Object, System.Object[])" argnames="obj, value, index" returntype="System.Void" />
-        <method name="GetValue(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, index, culture" returntype="System.Object" />
-        <method name="GetValue(System.Object, System.Object[])" argnames="obj, index" returntype="System.Object" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="SetConstant(System.Object)" argnames="defaultValue" returntype="System.Void" />
-        <method name="SetGetMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
-        <method name="SetSetMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
-        <method name="AddOtherMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-    </class>
-    <class name="SignatureHelper" namespace="System.Reflection.Emit">
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GetMethodSigHelper(System.Reflection.Module, System.Runtime.InteropServices.CallingConvention, System.Type)" argnames="mod, unmanagedCallConv, returnType" returntype="System.Reflection.Emit.SignatureHelper" />
-        <method name="GetLocalVarSigHelper(System.Reflection.Module)" argnames="mod" returntype="System.Reflection.Emit.SignatureHelper" />
-        <method name="GetFieldSigHelper(System.Reflection.Module)" argnames="mod" returntype="System.Reflection.Emit.SignatureHelper" />
-        <method name="GetMethodSigHelper(System.Reflection.Module, System.Reflection.CallingConventions, System.Type)" argnames="mod, callingConvention, returnType" returntype="System.Reflection.Emit.SignatureHelper" />
-        <method name="GetMethodSigHelper(System.Reflection.Module, System.Type, System.Type[])" argnames="mod, returnType, parameterTypes" returntype="System.Reflection.Emit.SignatureHelper" />
-        <method name="GetPropertySigHelper(System.Reflection.Module, System.Type, System.Type[])" argnames="mod, returnType, parameterTypes" returntype="System.Reflection.Emit.SignatureHelper" />
-        <method name="AddArgument(System.Type)" argnames="clsArgument" returntype="System.Void" />
-        <method name="AddSentinel()" argnames="" returntype="System.Void" />
-        <method name="GetSignature()" argnames="" returntype="System.Byte[]" />
-    </class>
-    <class name="TypeBuilder" namespace="System.Reflection.Emit">
-        <field name="UnspecifiedTypeSize" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="PackingSize" propertytype="System.Reflection.Emit.PackingSize" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <property name="TypeToken" propertytype="System.Reflection.Emit.TypeToken" />
-        <property name="Name" propertytype="System.String" />
-        <property name="GUID" propertytype="System.Guid" />
-        <property name="Module" propertytype="System.Reflection.Module" />
-        <property name="Assembly" propertytype="System.Reflection.Assembly" />
-        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
-        <property name="FullName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="AssemblyQualifiedName" propertytype="System.String" />
-        <property name="BaseType" propertytype="System.Type" />
-        <property name="UnderlyingSystemType" propertytype="System.Type" />
-        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
-        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
-        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
-        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
-        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
-        <method name="IsAssignableFrom(System.Type)" argnames="c" returntype="System.Boolean" />
-        <method name="IsSubclassOf(System.Type)" argnames="c" returntype="System.Boolean" />
-        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetElementType()" argnames="" returntype="System.Type" />
-        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
-        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
-        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
-        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
-        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
-        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
-        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
-        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="SetParent(System.Type)" argnames="parent" returntype="System.Void" />
-        <method name="AddInterfaceImplementation(System.Type)" argnames="interfaceType" returntype="System.Void" />
-        <method name="DefineMethod(System.String, System.Reflection.MethodAttributes, System.Type, System.Type[])" argnames="name, attributes, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="name, attributes, callingConvention, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Type, System.Type[])" argnames="name, attributes, returnType, parameterTypes" returntype="System.Reflection.Emit.PropertyBuilder" />
-        <method name="DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)" argnames="name, attributes, eventtype" returntype="System.Reflection.Emit.EventBuilder" />
-        <method name="DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, entryName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
-        <method name="DefineTypeInitializer()" argnames="" returntype="System.Reflection.Emit.ConstructorBuilder" />
-        <method name="DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[])" argnames="attributes, callingConvention, parameterTypes" returntype="System.Reflection.Emit.ConstructorBuilder" />
-        <method name="DefineDefaultConstructor(System.Reflection.MethodAttributes)" argnames="attributes" returntype="System.Reflection.Emit.ConstructorBuilder" />
-        <method name="CreateType()" argnames="" returntype="System.Type" />
-        <method name="DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)" argnames="methodInfoBody, methodInfoDeclaration" returntype="System.Void" />
-        <method name="DefineField(System.String, System.Type, System.Reflection.FieldAttributes)" argnames="fieldName, type, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
-        <method name="DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)" argnames="name, data, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
-        <method name="DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)" argnames="name, size, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
-        <method name="DefineNestedType(System.String)" argnames="name" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])" argnames="name, attr, parent, interfaces" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type)" argnames="name, attr, parent" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes)" argnames="name, attr" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Int32)" argnames="name, attr, parent, typeSize" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize)" argnames="name, attr, parent, packSize" returntype="System.Reflection.Emit.TypeBuilder" />
-        <method name="AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)" argnames="action, pset" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-    </class>
-    <class name="EnumBuilder" namespace="System.Reflection.Emit">
-        <property name="TypeToken" propertytype="System.Reflection.Emit.TypeToken" />
-        <property name="UnderlyingField" propertytype="System.Reflection.Emit.FieldBuilder" />
-        <property name="Name" propertytype="System.String" />
-        <property name="GUID" propertytype="System.Guid" />
-        <property name="Module" propertytype="System.Reflection.Module" />
-        <property name="Assembly" propertytype="System.Reflection.Assembly" />
-        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
-        <property name="FullName" propertytype="System.String" />
-        <property name="AssemblyQualifiedName" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="BaseType" propertytype="System.Type" />
-        <property name="UnderlyingSystemType" propertytype="System.Type" />
-        <property name="DeclaringType" propertytype="System.Type" />
-        <property name="ReflectedType" propertytype="System.Type" />
-        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
-        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
-        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
-        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
-        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
-        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
-        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetElementType()" argnames="" returntype="System.Type" />
-        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
-        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
-        <method name="IsValueTypeImpl()" argnames="" returntype="System.Boolean" />
-        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
-        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
-        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
-        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
-        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
-        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
-        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
-        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
-        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
-        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
-        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
-        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
-        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
-        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
-        <method name="DefineLiteral(System.String, System.Object)" argnames="literalName, literalValue" returntype="System.Reflection.Emit.FieldBuilder" />
-        <method name="CreateType()" argnames="" returntype="System.Type" />
-        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
-        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
-    </class>
-    <struct name="EventToken" namespace="System.Reflection.Emit">
-        <field name="Empty" />
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="FieldToken" namespace="System.Reflection.Emit">
-        <field name="Empty" />
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="Label" namespace="System.Reflection.Emit">
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="MethodToken" namespace="System.Reflection.Emit">
-        <field name="Empty" />
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="OpCode" namespace="System.Reflection.Emit">
-        <property name="OperandType" propertytype="System.Reflection.Emit.OperandType" />
-        <property name="FlowControl" propertytype="System.Reflection.Emit.FlowControl" />
-        <property name="OpCodeType" propertytype="System.Reflection.Emit.OpCodeType" />
-        <property name="StackBehaviourPop" propertytype="System.Reflection.Emit.StackBehaviour" />
-        <property name="StackBehaviourPush" propertytype="System.Reflection.Emit.StackBehaviour" />
-        <property name="Size" propertytype="System.Int32" />
-        <property name="Value" propertytype="System.Int16" />
-        <property name="Name" propertytype="System.String" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </struct>
-    <struct name="ParameterToken" namespace="System.Reflection.Emit">
-        <field name="Empty" />
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="PropertyToken" namespace="System.Reflection.Emit">
-        <field name="Empty" />
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="SignatureToken" namespace="System.Reflection.Emit">
-        <field name="Empty" />
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="StringToken" namespace="System.Reflection.Emit">
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <struct name="TypeToken" namespace="System.Reflection.Emit">
-        <field name="Empty" />
-        <property name="Token" propertytype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-    </struct>
-    <enum name="AssemblyBuilderAccess" namespace="System.Reflection.Emit">
-        <field name="Run" />
-        <field name="Save" />
-        <field name="RunAndSave" />
-    </enum>
-    <enum name="PEFileKinds" namespace="System.Reflection.Emit">
-        <field name="Dll" />
-        <field name="ConsoleApplication" />
-        <field name="WindowApplication" />
-    </enum>
-    <enum name="OpCodeType" namespace="System.Reflection.Emit">
-        <field name="Annotation" />
-        <field name="Macro" />
-        <field name="Nternal" />
-        <field name="Objmodel" />
-        <field name="Prefix" />
-        <field name="Primitive" />
-    </enum>
-    <enum name="StackBehaviour" namespace="System.Reflection.Emit">
-        <field name="Pop0" />
-        <field name="Pop1" />
-        <field name="Pop1_pop1" />
-        <field name="Popi" />
-        <field name="Popi_pop1" />
-        <field name="Popi_popi" />
-        <field name="Popi_popi8" />
-        <field name="Popi_popi_popi" />
-        <field name="Popi_popr4" />
-        <field name="Popi_popr8" />
-        <field name="Popref" />
-        <field name="Popref_pop1" />
-        <field name="Popref_popi" />
-        <field name="Popref_popi_popi" />
-        <field name="Popref_popi_popi8" />
-        <field name="Popref_popi_popr4" />
-        <field name="Popref_popi_popr8" />
-        <field name="Popref_popi_popref" />
-        <field name="Push0" />
-        <field name="Push1" />
-        <field name="Push1_push1" />
-        <field name="Pushi" />
-        <field name="Pushi8" />
-        <field name="Pushr4" />
-        <field name="Pushr8" />
-        <field name="Pushref" />
-        <field name="Varpop" />
-        <field name="Varpush" />
-    </enum>
-    <enum name="OperandType" namespace="System.Reflection.Emit">
-        <field name="InlineBrTarget" />
-        <field name="InlineField" />
-        <field name="InlineI" />
-        <field name="InlineI8" />
-        <field name="InlineMethod" />
-        <field name="InlineNone" />
-        <field name="InlinePhi" />
-        <field name="InlineR" />
-        <field name="InlineSig" />
-        <field name="InlineString" />
-        <field name="InlineSwitch" />
-        <field name="InlineTok" />
-        <field name="InlineType" />
-        <field name="InlineVar" />
-        <field name="ShortInlineBrTarget" />
-        <field name="ShortInlineI" />
-        <field name="ShortInlineR" />
-        <field name="ShortInlineVar" />
-    </enum>
-    <enum name="FlowControl" namespace="System.Reflection.Emit">
-        <field name="Branch" />
-        <field name="Break" />
-        <field name="Call" />
-        <field name="Cond_Branch" />
-        <field name="Meta" />
-        <field name="Next" />
-        <field name="Phi" />
-        <field name="Return" />
-        <field name="Throw" />
-    </enum>
-    <enum name="PackingSize" namespace="System.Reflection.Emit">
-        <field name="Unspecified" />
-        <field name="Size1" />
-        <field name="Size2" />
-        <field name="Size4" />
-        <field name="Size8" />
-        <field name="Size16" />
-    </enum>
-    <class name="Calendar" namespace="System.Globalization">
-        <constructor name="Calendar()" argnames="" />
-        <field name="CurrentEra" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="CurrentEraValue" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapYear(System.Int32)" argnames="year" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32)" argnames="year, month" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32)" argnames="year, month, day" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetWeekOfYear(System.DateTime, System.Globalization.CalendarWeekRule, System.DayOfWeek)" argnames="time, rule, firstDayOfWeek" returntype="System.Int32" />
-        <method name="GetSecond(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMinute(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMilliseconds(System.DateTime)" argnames="time" returntype="System.Double" />
-        <method name="GetHour(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32)" argnames="year, month" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddWeeks(System.DateTime, System.Int32)" argnames="time, weeks" returntype="System.DateTime" />
-        <method name="AddSeconds(System.DateTime, System.Int32)" argnames="time, seconds" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-        <method name="AddMinutes(System.DateTime, System.Int32)" argnames="time, minutes" returntype="System.DateTime" />
-        <method name="AddMilliseconds(System.DateTime, System.Double)" argnames="time, milliseconds" returntype="System.DateTime" />
-        <method name="AddHours(System.DateTime, System.Int32)" argnames="time, hours" returntype="System.DateTime" />
-        <method name="AddDays(System.DateTime, System.Int32)" argnames="time, days" returntype="System.DateTime" />
-    </class>
-    <class name="CompareInfo" namespace="System.Globalization">
-        <property name="LCID" propertytype="System.Int32" />
-        <method name="GetSortKey(System.String)" argnames="source" returntype="System.Globalization.SortKey" />
-        <method name="GetSortKey(System.String, System.Globalization.CompareOptions)" argnames="source, options" returntype="System.Globalization.SortKey" />
-        <method name="LastIndexOf(System.String, System.String, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Char, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.String, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.String, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.String, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Char, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Char, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Char, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Char, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.String)" argnames="source, value" returntype="System.Int32" />
-        <method name="LastIndexOf(System.String, System.Char)" argnames="source, value" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.String, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Char, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.String, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.String, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.String, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Char, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Char, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Char, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Char, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.String)" argnames="source, value" returntype="System.Int32" />
-        <method name="IndexOf(System.String, System.Char)" argnames="source, value" returntype="System.Int32" />
-        <method name="IsSuffix(System.String, System.String)" argnames="source, suffix" returntype="System.Boolean" />
-        <method name="IsSuffix(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, suffix, options" returntype="System.Boolean" />
-        <method name="IsPrefix(System.String, System.String)" argnames="source, prefix" returntype="System.Boolean" />
-        <method name="IsPrefix(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, prefix, options" returntype="System.Boolean" />
-        <method name="Compare(System.String, System.Int32, System.Int32, System.String, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="string1, offset1, length1, string2, offset2, length2, options" returntype="System.Int32" />
-        <method name="Compare(System.String, System.Int32, System.String, System.Int32)" argnames="string1, offset1, string2, offset2" returntype="System.Int32" />
-        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Globalization.CompareOptions)" argnames="string1, offset1, string2, offset2, options" returntype="System.Int32" />
-        <method name="Compare(System.String, System.Int32, System.Int32, System.String, System.Int32, System.Int32)" argnames="string1, offset1, length1, string2, offset2, length2" returntype="System.Int32" />
-        <method name="Compare(System.String, System.String, System.Globalization.CompareOptions)" argnames="string1, string2, options" returntype="System.Int32" />
-        <method name="Compare(System.String, System.String)" argnames="string1, string2" returntype="System.Int32" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GetCompareInfo(System.Int32, System.Reflection.Assembly)" argnames="culture, assembly" returntype="System.Globalization.CompareInfo" />
-        <method name="GetCompareInfo(System.String, System.Reflection.Assembly)" argnames="name, assembly" returntype="System.Globalization.CompareInfo" />
-        <method name="GetCompareInfo(System.Int32)" argnames="culture" returntype="System.Globalization.CompareInfo" />
-        <method name="GetCompareInfo(System.String)" argnames="name" returntype="System.Globalization.CompareInfo" />
-    </class>
-    <class name="CultureInfo" namespace="System.Globalization">
-        <constructor name="CultureInfo(System.String)" argnames="name" />
-        <constructor name="CultureInfo(System.String, System.Boolean)" argnames="name, useUserOverride" />
-        <constructor name="CultureInfo(System.Int32)" argnames="culture" />
-        <constructor name="CultureInfo(System.Int32, System.Boolean)" argnames="culture, useUserOverride" />
-        <property name="CurrentCulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="UserDefaultCulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="UserDefaultUICulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="CurrentUICulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="InstalledUICulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="InvariantCulture" propertytype="System.Globalization.CultureInfo" />
-        <property name="Parent" propertytype="System.Globalization.CultureInfo" />
-        <property name="LCID" propertytype="System.Int32" />
-        <property name="Name" propertytype="System.String" />
-        <property name="DisplayName" propertytype="System.String" />
-        <property name="NativeName" propertytype="System.String" />
-        <property name="EnglishName" propertytype="System.String" />
-        <property name="TwoLetterISOLanguageName" propertytype="System.String" />
-        <property name="ThreeLetterISOLanguageName" propertytype="System.String" />
-        <property name="ThreeLetterWindowsLanguageName" propertytype="System.String" />
-        <property name="CompareInfo" propertytype="System.Globalization.CompareInfo" />
-        <property name="TextInfo" propertytype="System.Globalization.TextInfo" />
-        <property name="IsNeutralCulture" propertytype="System.Boolean" />
-        <property name="NumberFormat" propertytype="System.Globalization.NumberFormatInfo" />
-        <property name="DateTimeFormat" propertytype="System.Globalization.DateTimeFormatInfo" />
-        <property name="Calendar" propertytype="System.Globalization.Calendar" />
-        <property name="OptionalCalendars" propertytype="System.Globalization.Calendar[]" />
-        <property name="UseUserOverride" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="CreateSpecificCulture(System.String)" argnames="name" returntype="System.Globalization.CultureInfo" />
-        <method name="GetCultures(System.Globalization.CultureTypes)" argnames="types" returntype="System.Globalization.CultureInfo[]" />
-        <method name="ClearCachedData()" argnames="" returntype="System.Void" />
-        <method name="ReadOnly(System.Globalization.CultureInfo)" argnames="ci" returntype="System.Globalization.CultureInfo" />
-    </class>
-    <class name="DateTimeFormatInfo" namespace="System.Globalization">
-        <constructor name="DateTimeFormatInfo()" argnames="" />
-        <property name="InvariantInfo" propertytype="System.Globalization.DateTimeFormatInfo" />
-        <property name="CurrentInfo" propertytype="System.Globalization.DateTimeFormatInfo" />
-        <property name="AMDesignator" propertytype="System.String" />
-        <property name="Calendar" propertytype="System.Globalization.Calendar" />
-        <property name="OptionalCalendars" propertytype="System.Int32[]" />
-        <property name="EraNames" propertytype="System.String[]" />
-        <property name="AbbreviatedEraNames" propertytype="System.String[]" />
-        <property name="AbbreviatedEnglishEraNames" propertytype="System.String[]" />
-        <property name="DateSeparator" propertytype="System.String" />
-        <property name="FirstDayOfWeek" propertytype="System.DayOfWeek" />
-        <property name="CalendarWeekRule" propertytype="System.Globalization.CalendarWeekRule" />
-        <property name="FullDateTimePattern" propertytype="System.String" />
-        <property name="LongDatePattern" propertytype="System.String" />
-        <property name="LongTimePattern" propertytype="System.String" />
-        <property name="MonthDayPattern" propertytype="System.String" />
-        <property name="PMDesignator" propertytype="System.String" />
-        <property name="RFC1123Pattern" propertytype="System.String" />
-        <property name="ShortDatePattern" propertytype="System.String" />
-        <property name="ShortTimePattern" propertytype="System.String" />
-        <property name="SortableDateTimePattern" propertytype="System.String" />
-        <property name="GeneralShortTimePattern" propertytype="System.String" />
-        <property name="GeneralLongTimePattern" propertytype="System.String" />
-        <property name="TimeSeparator" propertytype="System.String" />
-        <property name="UniversalSortableDateTimePattern" propertytype="System.String" />
-        <property name="YearMonthPattern" propertytype="System.String" />
-        <property name="AbbreviatedDayNames" propertytype="System.String[]" />
-        <property name="DayNames" propertytype="System.String[]" />
-        <property name="AbbreviatedMonthNames" propertytype="System.String[]" />
-        <property name="MonthNames" propertytype="System.String[]" />
-        <property name="AllShortDatePatterns" propertytype="System.String[]" />
-        <property name="AllLongDatePatterns" propertytype="System.String[]" />
-        <property name="AllShortTimePatterns" propertytype="System.String[]" />
-        <property name="AllLongTimePatterns" propertytype="System.String[]" />
-        <property name="DateWords" propertytype="System.String[]" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetInstance(System.IFormatProvider)" argnames="provider" returntype="System.Globalization.DateTimeFormatInfo" />
-        <method name="GetEra(System.String)" argnames="eraName" returntype="System.Int32" />
-        <method name="GetEraName(System.Int32)" argnames="era" returntype="System.String" />
-        <method name="GetAbbreviatedEraName(System.Int32)" argnames="era" returntype="System.String" />
-        <method name="GetAbbreviatedDayName(System.DayOfWeek)" argnames="dayofweek" returntype="System.String" />
-        <method name="GetAllDateTimePatterns()" argnames="" returntype="System.String[]" />
-        <method name="GetAllDateTimePatterns(System.Char)" argnames="format" returntype="System.String[]" />
-        <method name="GetDayName(System.DayOfWeek)" argnames="dayofweek" returntype="System.String" />
-        <method name="GetAbbreviatedMonthName(System.Int32)" argnames="month" returntype="System.String" />
-        <method name="GetMonthName(System.Int32)" argnames="month" returntype="System.String" />
-        <method name="ReadOnly(System.Globalization.DateTimeFormatInfo)" argnames="dtfi" returntype="System.Globalization.DateTimeFormatInfo" />
-    </class>
-    <class name="DaylightTime" namespace="System.Globalization">
-        <constructor name="DaylightTime(System.DateTime, System.DateTime, System.TimeSpan)" argnames="start, end, delta" />
-        <property name="Start" propertytype="System.DateTime" />
-        <property name="End" propertytype="System.DateTime" />
-        <property name="Delta" propertytype="System.TimeSpan" />
-    </class>
-    <class name="GregorianCalendar" namespace="System.Globalization">
-        <constructor name="GregorianCalendar()" argnames="" />
-        <constructor name="GregorianCalendar(System.Globalization.GregorianCalendarTypes)" argnames="type" />
-        <field name="ADEra" />
-        <property name="CalendarType" propertytype="System.Globalization.GregorianCalendarTypes" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddWeeks(System.DateTime, System.Int32)" argnames="time, weeks" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="HebrewCalendar" namespace="System.Globalization">
-        <constructor name="HebrewCalendar()" argnames="" />
-        <field name="HebrewEra" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="HijriCalendar" namespace="System.Globalization">
-        <constructor name="HijriCalendar()" argnames="" />
-        <field name="HijriEra" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="JapaneseCalendar" namespace="System.Globalization">
-        <constructor name="JapaneseCalendar()" argnames="" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="JulianCalendar" namespace="System.Globalization">
-        <constructor name="JulianCalendar()" argnames="" />
-        <field name="JulianEra" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="KoreanCalendar" namespace="System.Globalization">
-        <constructor name="KoreanCalendar()" argnames="" />
-        <field name="KoreanEra" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="RegionInfo" namespace="System.Globalization">
-        <constructor name="RegionInfo(System.String)" argnames="name" />
-        <constructor name="RegionInfo(System.Int32)" argnames="culture" />
-        <property name="CurrentRegion" propertytype="System.Globalization.RegionInfo" />
-        <property name="Name" propertytype="System.String" />
-        <property name="EnglishName" propertytype="System.String" />
-        <property name="DisplayName" propertytype="System.String" />
-        <property name="TwoLetterISORegionName" propertytype="System.String" />
-        <property name="ThreeLetterISORegionName" propertytype="System.String" />
-        <property name="IsMetric" propertytype="System.Boolean" />
-        <property name="ThreeLetterWindowsRegionName" propertytype="System.String" />
-        <property name="CurrencySymbol" propertytype="System.String" />
-        <property name="ISOCurrencySymbol" propertytype="System.String" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="SortKey" namespace="System.Globalization">
-        <property name="OriginalString" propertytype="System.String" />
-        <property name="KeyData" propertytype="System.Byte[]" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Compare(System.Globalization.SortKey, System.Globalization.SortKey)" argnames="sortkey1, sortkey2" returntype="System.Int32" />
-    </class>
-    <class name="StringInfo" namespace="System.Globalization">
-        <constructor name="StringInfo()" argnames="" />
-        <method name="GetNextTextElement(System.String)" argnames="str" returntype="System.String" />
-        <method name="GetNextTextElement(System.String, System.Int32)" argnames="str, index" returntype="System.String" />
-        <method name="GetTextElementEnumerator(System.String)" argnames="str" returntype="System.Globalization.TextElementEnumerator" />
-        <method name="GetTextElementEnumerator(System.String, System.Int32)" argnames="str, index" returntype="System.Globalization.TextElementEnumerator" />
-        <method name="ParseCombiningCharacters(System.String)" argnames="str" returntype="System.Int32[]" />
-    </class>
-    <class name="TaiwanCalendar" namespace="System.Globalization">
-        <constructor name="TaiwanCalendar()" argnames="" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="TextElementEnumerator" namespace="System.Globalization">
-        <property name="Current" propertytype="System.Object" />
-        <property name="ElementIndex" propertytype="System.Int32" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
-        <method name="GetTextElement()" argnames="" returntype="System.String" />
-    </class>
-    <class name="TextInfo" namespace="System.Globalization">
-        <property name="ANSICodePage" propertytype="System.Int32" />
-        <property name="OEMCodePage" propertytype="System.Int32" />
-        <property name="MacCodePage" propertytype="System.Int32" />
-        <property name="EBCDICCodePage" propertytype="System.Int32" />
-        <property name="ListSeparator" propertytype="System.String" />
-        <method name="ToUpper(System.String)" argnames="str" returntype="System.String" />
-        <method name="ToUpper(System.Char)" argnames="c" returntype="System.Char" />
-        <method name="ToLower(System.String)" argnames="str" returntype="System.String" />
-        <method name="ToLower(System.Char)" argnames="c" returntype="System.Char" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="ToTitleCase(System.String)" argnames="str" returntype="System.String" />
-    </class>
-    <class name="ThaiBuddhistCalendar" namespace="System.Globalization">
-        <constructor name="ThaiBuddhistCalendar()" argnames="" />
-        <field name="ThaiBuddhistEra" />
-        <property name="ID" propertytype="System.Int32" />
-        <property name="Eras" propertytype="System.Int32[]" />
-        <property name="TwoDigitYearMax" propertytype="System.Int32" />
-        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
-        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
-        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
-        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
-        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
-        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
-        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
-        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
-        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
-        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
-        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
-    </class>
-    <class name="NumberFormatInfo" namespace="System.Globalization">
-        <constructor name="NumberFormatInfo()" argnames="" />
-        <property name="InvariantInfo" propertytype="System.Globalization.NumberFormatInfo" />
-        <property name="CurrencyDecimalDigits" propertytype="System.Int32" />
-        <property name="CurrencyDecimalSeparator" propertytype="System.String" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="CurrencyGroupSizes" propertytype="System.Int32[]" />
-        <property name="NumberGroupSizes" propertytype="System.Int32[]" />
-        <property name="PercentGroupSizes" propertytype="System.Int32[]" />
-        <property name="CurrencyGroupSeparator" propertytype="System.String" />
-        <property name="CurrencySymbol" propertytype="System.String" />
-        <property name="CurrentInfo" propertytype="System.Globalization.NumberFormatInfo" />
-        <property name="NaNSymbol" propertytype="System.String" />
-        <property name="CurrencyNegativePattern" propertytype="System.Int32" />
-        <property name="NumberNegativePattern" propertytype="System.Int32" />
-        <property name="PercentPositivePattern" propertytype="System.Int32" />
-        <property name="PercentNegativePattern" propertytype="System.Int32" />
-        <property name="NegativeInfinitySymbol" propertytype="System.String" />
-        <property name="NegativeSign" propertytype="System.String" />
-        <property name="NumberDecimalDigits" propertytype="System.Int32" />
-        <property name="NumberDecimalSeparator" propertytype="System.String" />
-        <property name="NumberGroupSeparator" propertytype="System.String" />
-        <property name="CurrencyPositivePattern" propertytype="System.Int32" />
-        <property name="PositiveInfinitySymbol" propertytype="System.String" />
-        <property name="PositiveSign" propertytype="System.String" />
-        <property name="PercentDecimalDigits" propertytype="System.Int32" />
-        <property name="PercentDecimalSeparator" propertytype="System.String" />
-        <property name="PercentGroupSeparator" propertytype="System.String" />
-        <property name="PercentSymbol" propertytype="System.String" />
-        <property name="PerMilleSymbol" propertytype="System.String" />
-        <property name="AnsiCurrencySymbol" propertytype="System.String" />
-        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetInstance(System.IFormatProvider)" argnames="formatProvider" returntype="System.Globalization.NumberFormatInfo" />
-        <method name="ReadOnly(System.Globalization.NumberFormatInfo)" argnames="nfi" returntype="System.Globalization.NumberFormatInfo" />
-    </class>
-    <enum name="CalendarWeekRule" namespace="System.Globalization">
-        <field name="FirstDay" />
-        <field name="FirstFullWeek" />
-        <field name="FirstFourDayWeek" />
-    </enum>
-    <enum name="CompareOptions" namespace="System.Globalization">
-        <field name="None" />
-        <field name="IgnoreCase" />
-        <field name="IgnoreNonSpace" />
-        <field name="IgnoreSymbols" />
-        <field name="IgnoreKanaType" />
-        <field name="IgnoreWidth" />
-        <field name="StringSort" />
-        <field name="Ordinal" />
-    </enum>
-    <enum name="CultureTypes" namespace="System.Globalization">
-        <field name="NeutralCultures" />
-        <field name="SpecificCultures" />
-        <field name="InstalledWin32Cultures" />
-        <field name="AllCultures" />
-    </enum>
-    <enum name="DateTimeStyles" namespace="System.Globalization">
-        <field name="None" />
-        <field name="AllowLeadingWhite" />
-        <field name="AllowTrailingWhite" />
-        <field name="AllowInnerWhite" />
-        <field name="AllowWhiteSpaces" />
-        <field name="NoCurrentDateDefault" />
-        <field name="AdjustToUniversal" />
-    </enum>
-    <enum name="GregorianCalendarTypes" namespace="System.Globalization">
-        <field name="Localized" />
-        <field name="USEnglish" />
-        <field name="MiddleEastFrench" />
-        <field name="Arabic" />
-        <field name="TransliteratedEnglish" />
-        <field name="TransliteratedFrench" />
-    </enum>
-    <enum name="NumberStyles" namespace="System.Globalization">
-        <field name="None" />
-        <field name="AllowLeadingWhite" />
-        <field name="AllowTrailingWhite" />
-        <field name="AllowLeadingSign" />
-        <field name="AllowTrailingSign" />
-        <field name="AllowParentheses" />
-        <field name="AllowDecimalPoint" />
-        <field name="AllowThousands" />
-        <field name="AllowExponent" />
-        <field name="AllowCurrencySymbol" />
-        <field name="AllowHexSpecifier" />
-        <field name="Integer" />
-        <field name="HexNumber" />
-        <field name="Number" />
-        <field name="Float" />
-        <field name="Currency" />
-        <field name="Any" />
-    </enum>
-    <enum name="UnicodeCategory" namespace="System.Globalization">
-        <field name="UppercaseLetter" />
-        <field name="LowercaseLetter" />
-        <field name="TitlecaseLetter" />
-        <field name="ModifierLetter" />
-        <field name="OtherLetter" />
-        <field name="NonSpacingMark" />
-        <field name="SpacingCombiningMark" />
-        <field name="EnclosingMark" />
-        <field name="DecimalDigitNumber" />
-        <field name="LetterNumber" />
-        <field name="OtherNumber" />
-        <field name="SpaceSeparator" />
-        <field name="LineSeparator" />
-        <field name="ParagraphSeparator" />
-        <field name="Control" />
-        <field name="Format" />
-        <field name="Surrogate" />
-        <field name="PrivateUse" />
-        <field name="ConnectorPunctuation" />
-        <field name="DashPunctuation" />
-        <field name="OpenPunctuation" />
-        <field name="ClosePunctuation" />
-        <field name="InitialQuotePunctuation" />
-        <field name="FinalQuotePunctuation" />
-        <field name="OtherPunctuation" />
-        <field name="MathSymbol" />
-        <field name="CurrencySymbol" />
-        <field name="ModifierSymbol" />
-        <field name="OtherSymbol" />
-        <field name="OtherNotAssigned" />
-    </enum>
-    <class name="MissingManifestResourceException" namespace="System.Resources">
-        <constructor name="MissingManifestResourceException()" argnames="" />
-        <constructor name="MissingManifestResourceException(System.String)" argnames="message" />
-        <constructor name="MissingManifestResourceException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="MissingManifestResourceException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="NeutralResourcesLanguageAttribute" namespace="System.Resources">
-        <constructor name="NeutralResourcesLanguageAttribute(System.String)" argnames="cultureName" />
-        <property name="CultureName" propertytype="System.String" />
-    </class>
-    <class name="ResourceManager" namespace="System.Resources">
-        <constructor name="ResourceManager()" argnames="" />
-        <constructor name="ResourceManager(System.String, System.Reflection.Assembly)" argnames="baseName, assembly" />
-        <constructor name="ResourceManager(System.String, System.Reflection.Assembly, System.Type)" argnames="baseName, assembly, usingResourceSet" />
-        <constructor name="ResourceManager(System.Type)" argnames="resourceSource" />
-        <field name="BaseNameField" />
-        <field name="ResourceSets" />
-        <field name="MainAssembly" />
-        <field name="MagicNumber" />
-        <field name="HeaderVersionNumber" />
-        <property name="BaseName" propertytype="System.String" />
-        <property name="IgnoreCase" propertytype="System.Boolean" />
-        <property name="ResourceSetType" propertytype="System.Type" />
-        <method name="GetObject(System.String, System.Globalization.CultureInfo)" argnames="name, culture" returntype="System.Object" />
-        <method name="GetObject(System.String)" argnames="name" returntype="System.Object" />
-        <method name="GetString(System.String, System.Globalization.CultureInfo)" argnames="name, culture" returntype="System.String" />
-        <method name="GetString(System.String)" argnames="name" returntype="System.String" />
-        <method name="InternalGetResourceSet(System.Globalization.CultureInfo, System.Boolean, System.Boolean)" argnames="culture, createIfNotExists, tryParents" returntype="System.Resources.ResourceSet" />
-        <method name="GetResourceSet(System.Globalization.CultureInfo, System.Boolean, System.Boolean)" argnames="culture, createIfNotExists, tryParents" returntype="System.Resources.ResourceSet" />
-        <method name="GetResourceFileName(System.Globalization.CultureInfo)" argnames="culture" returntype="System.String" />
-        <method name="ReleaseAllResources()" argnames="" returntype="System.Void" />
-        <method name="CreateFileBasedResourceManager(System.String, System.String, System.Type)" argnames="baseName, resourceDir, usingResourceSet" returntype="System.Resources.ResourceManager" />
-        <method name="GetSatelliteContractVersion(System.Reflection.Assembly)" argnames="a" returntype="System.Version" />
-        <method name="GetNeutralResourcesLanguage(System.Reflection.Assembly)" argnames="a" returntype="System.Globalization.CultureInfo" />
-    </class>
-    <class name="ResourceReader" namespace="System.Resources">
-        <constructor name="ResourceReader(System.String)" argnames="fileName" />
-        <constructor name="ResourceReader(System.IO.Stream)" argnames="stream" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="ResourceSet" namespace="System.Resources">
-        <constructor name="ResourceSet()" argnames="" />
-        <constructor name="ResourceSet(System.String)" argnames="fileName" />
-        <constructor name="ResourceSet(System.IO.Stream)" argnames="stream" />
-        <constructor name="ResourceSet(System.Resources.IResourceReader)" argnames="reader" />
-        <field name="Reader" />
-        <field name="Table" />
-        <method name="Dispose()" argnames="" returntype="System.Void" />
-        <method name="ReadResources()" argnames="" returntype="System.Void" />
-        <method name="GetObject(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Object" />
-        <method name="GetObject(System.String)" argnames="name" returntype="System.Object" />
-        <method name="GetString(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.String" />
-        <method name="GetString(System.String)" argnames="name" returntype="System.String" />
-        <method name="GetDefaultWriter()" argnames="" returntype="System.Type" />
-        <method name="GetDefaultReader()" argnames="" returntype="System.Type" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="ResourceWriter" namespace="System.Resources">
-        <constructor name="ResourceWriter(System.String)" argnames="fileName" />
-        <constructor name="ResourceWriter(System.IO.Stream)" argnames="stream" />
-        <method name="Dispose()" argnames="" returntype="System.Void" />
-        <method name="Generate()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="AddResource(System.String, System.Byte[])" argnames="name, value" returntype="System.Void" />
-        <method name="AddResource(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
-        <method name="AddResource(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-    </class>
-    <class name="SatelliteContractVersionAttribute" namespace="System.Resources">
-        <constructor name="SatelliteContractVersionAttribute(System.String)" argnames="version" />
-        <property name="Version" propertytype="System.String" />
-    </class>
-    <interface name="IResourceReader" namespace="System.Resources">
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </interface>
-    <interface name="IResourceWriter" namespace="System.Resources">
-        <method name="Generate()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="AddResource(System.String, System.Byte[])" argnames="name, value" returntype="System.Void" />
-        <method name="AddResource(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
-        <method name="AddResource(System.String, System.String)" argnames="name, value" returntype="System.Void" />
-    </interface>
-    <class name="Registry" namespace="Microsoft.Win32">
-        <field name="CurrentUser" />
-        <field name="LocalMachine" />
-        <field name="ClassesRoot" />
-        <field name="Users" />
-        <field name="PerformanceData" />
-        <field name="CurrentConfig" />
-        <field name="DynData" />
-    </class>
-    <class name="RegistryKey" namespace="Microsoft.Win32">
-        <property name="SubKeyCount" propertytype="System.Int32" />
-        <property name="ValueCount" propertytype="System.Int32" />
-        <property name="Name" propertytype="System.String" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="CreateSubKey(System.String)" argnames="subkey" returntype="Microsoft.Win32.RegistryKey" />
-        <method name="DeleteSubKey(System.String)" argnames="subkey" returntype="System.Void" />
-        <method name="DeleteSubKey(System.String, System.Boolean)" argnames="subkey, throwOnMissingSubKey" returntype="System.Void" />
-        <method name="DeleteSubKeyTree(System.String)" argnames="subkey" returntype="System.Void" />
-        <method name="DeleteValue(System.String)" argnames="name" returntype="System.Void" />
-        <method name="DeleteValue(System.String, System.Boolean)" argnames="name, throwOnMissingValue" returntype="System.Void" />
-        <method name="OpenRemoteBaseKey(Microsoft.Win32.RegistryHive, System.String)" argnames="hKey, machineName" returntype="Microsoft.Win32.RegistryKey" />
-        <method name="OpenSubKey(System.String, System.Boolean)" argnames="name, writable" returntype="Microsoft.Win32.RegistryKey" />
-        <method name="OpenSubKey(System.String)" argnames="name" returntype="Microsoft.Win32.RegistryKey" />
-        <method name="GetSubKeyNames()" argnames="" returntype="System.String[]" />
-        <method name="GetValueNames()" argnames="" returntype="System.String[]" />
-        <method name="GetValue(System.String, System.Object)" argnames="name, defaultValue" returntype="System.Object" />
-        <method name="GetValue(System.String)" argnames="name" returntype="System.Object" />
-        <method name="SetValue(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
-    </class>
-    <enum name="RegistryHive" namespace="Microsoft.Win32">
-        <field name="ClassesRoot" />
-        <field name="CurrentUser" />
-        <field name="LocalMachine" />
-        <field name="Users" />
-        <field name="PerformanceData" />
-        <field name="CurrentConfig" />
-        <field name="DynData" />
-    </enum>
-    <class name="X509Certificate" namespace="System.Security.Cryptography.X509Certificates">
-        <constructor name="X509Certificate(System.Byte[])" argnames="data" />
-        <constructor name="X509Certificate(System.IntPtr)" argnames="handle" />
-        <constructor name="X509Certificate(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="cert" />
-        <method name="ToString(System.Boolean)" argnames="fVerbose" returntype="System.String" />
-        <method name="Equals(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="other" returntype="System.Boolean" />
-        <method name="GetExpirationDateString()" argnames="" returntype="System.String" />
-        <method name="GetEffectiveDateString()" argnames="" returntype="System.String" />
-        <method name="GetCertHashString()" argnames="" returntype="System.String" />
-        <method name="GetCertHash()" argnames="" returntype="System.Byte[]" />
-        <method name="GetRawCertDataString()" argnames="" returntype="System.String" />
-        <method name="GetRawCertData()" argnames="" returntype="System.Byte[]" />
-        <method name="GetPublicKeyString()" argnames="" returntype="System.String" />
-        <method name="GetPublicKey()" argnames="" returntype="System.Byte[]" />
-        <method name="GetKeyAlgorithmParametersString()" argnames="" returntype="System.String" />
-        <method name="GetKeyAlgorithmParameters()" argnames="" returntype="System.Byte[]" />
-        <method name="GetKeyAlgorithm()" argnames="" returntype="System.String" />
-        <method name="GetSerialNumberString()" argnames="" returntype="System.String" />
-        <method name="GetSerialNumber()" argnames="" returntype="System.Byte[]" />
-        <method name="GetIssuerName()" argnames="" returntype="System.String" />
-        <method name="GetFormat()" argnames="" returntype="System.String" />
-        <method name="GetName()" argnames="" returntype="System.String" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="CreateFromCertFile(System.String)" argnames="filename" returntype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <method name="CreateFromSignedFile(System.String)" argnames="filename" returntype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-    </class>
-    <class name="AsymmetricAlgorithm" namespace="System.Security.Cryptography">
-        <constructor name="AsymmetricAlgorithm()" argnames="" />
-        <field name="KeySizeValue" />
-        <field name="LegalKeySizesValue" />
-        <property name="KeySize" propertytype="System.Int32" />
-        <property name="LegalKeySizes" propertytype="System.Security.Cryptography.KeySizes[]" />
-        <property name="SignatureAlgorithm" propertytype="System.String" />
-        <property name="KeyExchangeAlgorithm" propertytype="System.String" />
-        <method name="ToXmlString(System.Boolean)" argnames="includePrivateParameters" returntype="System.String" />
-        <method name="FromXmlString(System.String)" argnames="xmlString" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.AsymmetricAlgorithm" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.AsymmetricAlgorithm" />
-    </class>
-    <class name="AsymmetricKeyExchangeDeformatter" namespace="System.Security.Cryptography">
-        <constructor name="AsymmetricKeyExchangeDeformatter()" argnames="" />
-        <property name="Parameters" propertytype="System.String" />
-        <method name="DecryptKeyExchange(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="AsymmetricKeyExchangeFormatter" namespace="System.Security.Cryptography">
-        <constructor name="AsymmetricKeyExchangeFormatter()" argnames="" />
-        <property name="Parameters" propertytype="System.String" />
-        <method name="CreateKeyExchange(System.Byte[], System.Type)" argnames="data, symAlgType" returntype="System.Byte[]" />
-        <method name="CreateKeyExchange(System.Byte[])" argnames="data" returntype="System.Byte[]" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="AsymmetricSignatureDeformatter" namespace="System.Security.Cryptography">
-        <constructor name="AsymmetricSignatureDeformatter()" argnames="" />
-        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
-        <method name="VerifySignature(System.Security.Cryptography.HashAlgorithm, System.Byte[])" argnames="hash, rgbSignature" returntype="System.Boolean" />
-        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="AsymmetricSignatureFormatter" namespace="System.Security.Cryptography">
-        <constructor name="AsymmetricSignatureFormatter()" argnames="" />
-        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
-        <method name="CreateSignature(System.Security.Cryptography.HashAlgorithm)" argnames="hash" returntype="System.Byte[]" />
-        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="ToBase64Transform" namespace="System.Security.Cryptography">
-        <constructor name="ToBase64Transform()" argnames="" />
-        <property name="InputBlockSize" propertytype="System.Int32" />
-        <property name="OutputBlockSize" propertytype="System.Int32" />
-        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
-        <property name="CanReuseTransform" propertytype="System.Boolean" />
-        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
-        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="FromBase64Transform" namespace="System.Security.Cryptography">
-        <constructor name="FromBase64Transform()" argnames="" />
-        <constructor name="FromBase64Transform(System.Security.Cryptography.FromBase64TransformMode)" argnames="whitespaces" />
-        <property name="InputBlockSize" propertytype="System.Int32" />
-        <property name="OutputBlockSize" propertytype="System.Int32" />
-        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
-        <property name="CanReuseTransform" propertytype="System.Boolean" />
-        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
-        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="KeySizes" namespace="System.Security.Cryptography">
-        <constructor name="KeySizes(System.Int32, System.Int32, System.Int32)" argnames="minSize, maxSize, skipSize" />
-        <property name="MinSize" propertytype="System.Int32" />
-        <property name="MaxSize" propertytype="System.Int32" />
-        <property name="SkipSize" propertytype="System.Int32" />
-    </class>
-    <class name="CryptographicException" namespace="System.Security.Cryptography">
-        <constructor name="CryptographicException()" argnames="" />
-        <constructor name="CryptographicException(System.String)" argnames="message" />
-        <constructor name="CryptographicException(System.String, System.String)" argnames="format, insert" />
-        <constructor name="CryptographicException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="CryptographicException(System.Int32)" argnames="hr" />
-        <constructor name="CryptographicException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="CryptographicUnexpectedOperationException" namespace="System.Security.Cryptography">
-        <constructor name="CryptographicUnexpectedOperationException()" argnames="" />
-        <constructor name="CryptographicUnexpectedOperationException(System.String)" argnames="message" />
-        <constructor name="CryptographicUnexpectedOperationException(System.String, System.String)" argnames="format, insert" />
-        <constructor name="CryptographicUnexpectedOperationException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="CryptographicUnexpectedOperationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="CryptoAPITransform" namespace="System.Security.Cryptography">
-        <property name="KeyHandle" propertytype="System.IntPtr" />
-        <property name="InputBlockSize" propertytype="System.Int32" />
-        <property name="OutputBlockSize" propertytype="System.Int32" />
-        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
-        <property name="CanReuseTransform" propertytype="System.Boolean" />
-        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
-        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="CspParameters" namespace="System.Security.Cryptography">
-        <constructor name="CspParameters()" argnames="" />
-        <constructor name="CspParameters(System.Int32)" argnames="dwTypeIn" />
-        <constructor name="CspParameters(System.Int32, System.String)" argnames="dwTypeIn, strProviderNameIn" />
-        <constructor name="CspParameters(System.Int32, System.String, System.String)" argnames="dwTypeIn, strProviderNameIn, strContainerNameIn" />
-        <field name="ProviderType" />
-        <field name="ProviderName" />
-        <field name="KeyContainerName" />
-        <field name="KeyNumber" />
-        <property name="Flags" propertytype="System.Security.Cryptography.CspProviderFlags" />
-    </class>
-    <class name="CryptoConfig" namespace="System.Security.Cryptography">
-        <constructor name="CryptoConfig()" argnames="" />
-        <method name="CreateFromName(System.String, System.Object[])" argnames="name, args" returntype="System.Object" />
-        <method name="CreateFromName(System.String)" argnames="name" returntype="System.Object" />
-        <method name="MapNameToOID(System.String)" argnames="name" returntype="System.String" />
-        <method name="EncodeOID(System.String)" argnames="str" returntype="System.Byte[]" />
-    </class>
-    <class name="CryptoStream" namespace="System.Security.Cryptography">
-        <constructor name="CryptoStream(System.IO.Stream, System.Security.Cryptography.ICryptoTransform, System.Security.Cryptography.CryptoStreamMode)" argnames="stream, transform, mode" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanSeek" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="Position" propertytype="System.Int64" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
-        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="FlushFinalBlock()" argnames="" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="SymmetricAlgorithm" namespace="System.Security.Cryptography">
-        <constructor name="SymmetricAlgorithm()" argnames="" />
-        <field name="BlockSizeValue" />
-        <field name="FeedbackSizeValue" />
-        <field name="IVValue" />
-        <field name="KeyValue" />
-        <field name="LegalBlockSizesValue" />
-        <field name="LegalKeySizesValue" />
-        <field name="KeySizeValue" />
-        <field name="ModeValue" />
-        <field name="PaddingValue" />
-        <property name="BlockSize" propertytype="System.Int32" />
-        <property name="FeedbackSize" propertytype="System.Int32" />
-        <property name="IV" propertytype="System.Byte[]" />
-        <property name="Key" propertytype="System.Byte[]" />
-        <property name="LegalBlockSizes" propertytype="System.Security.Cryptography.KeySizes[]" />
-        <property name="LegalKeySizes" propertytype="System.Security.Cryptography.KeySizes[]" />
-        <property name="KeySize" propertytype="System.Int32" />
-        <property name="Mode" propertytype="System.Security.Cryptography.CipherMode" />
-        <property name="Padding" propertytype="System.Security.Cryptography.PaddingMode" />
-        <method name="GenerateIV()" argnames="" returntype="System.Void" />
-        <method name="GenerateKey()" argnames="" returntype="System.Void" />
-        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="CreateDecryptor()" argnames="" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="CreateEncryptor()" argnames="" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="ValidKeySize(System.Int32)" argnames="bitLength" returntype="System.Boolean" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SymmetricAlgorithm" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.SymmetricAlgorithm" />
-    </class>
-    <class name="DES" namespace="System.Security.Cryptography">
-        <constructor name="DES()" argnames="" />
-        <property name="Key" propertytype="System.Byte[]" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.DES" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.DES" />
-        <method name="IsWeakKey(System.Byte[])" argnames="rgbKey" returntype="System.Boolean" />
-        <method name="IsSemiWeakKey(System.Byte[])" argnames="rgbKey" returntype="System.Boolean" />
-    </class>
-    <class name="DESCryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="DESCryptoServiceProvider()" argnames="" />
-        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
-        <method name="GenerateIV()" argnames="" returntype="System.Void" />
-        <method name="GenerateKey()" argnames="" returntype="System.Void" />
-        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-    </class>
-    <class name="DeriveBytes" namespace="System.Security.Cryptography">
-        <constructor name="DeriveBytes()" argnames="" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="GetBytes(System.Int32)" argnames="cb" returntype="System.Byte[]" />
-    </class>
-    <class name="DSA" namespace="System.Security.Cryptography">
-        <method name="ImportParameters(System.Security.Cryptography.DSAParameters)" argnames="parameters" returntype="System.Void" />
-        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.DSAParameters" />
-        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
-        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
-        <method name="ToXmlString(System.Boolean)" argnames="includePrivateParameters" returntype="System.String" />
-        <method name="FromXmlString(System.String)" argnames="xmlString" returntype="System.Void" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.DSA" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.DSA" />
-    </class>
-    <class name="DSACryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="DSACryptoServiceProvider()" argnames="" />
-        <constructor name="DSACryptoServiceProvider(System.Int32)" argnames="dwKeySize" />
-        <constructor name="DSACryptoServiceProvider(System.Security.Cryptography.CspParameters)" argnames="parameters" />
-        <constructor name="DSACryptoServiceProvider(System.Int32, System.Security.Cryptography.CspParameters)" argnames="dwKeySize, parameters" />
-        <property name="KeyExchangeAlgorithm" propertytype="System.String" />
-        <property name="KeySize" propertytype="System.Int32" />
-        <property name="LegalKeySizes" propertytype="System.Security.Cryptography.KeySizes[]" />
-        <property name="SignatureAlgorithm" propertytype="System.String" />
-        <property name="PersistKeyInCsp" propertytype="System.Boolean" />
-        <property name="hKey" propertytype="System.IntPtr" />
-        <method name="ImportParameters(System.Security.Cryptography.DSAParameters)" argnames="parameters" returntype="System.Void" />
-        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.DSAParameters" />
-        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
-        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="SignData(System.IO.Stream)" argnames="inputStream" returntype="System.Byte[]" />
-        <method name="SignData(System.Byte[])" argnames="buffer" returntype="System.Byte[]" />
-        <method name="SignData(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Byte[]" />
-        <method name="VerifyData(System.Byte[], System.Byte[])" argnames="rgbData, rgbSignature" returntype="System.Boolean" />
-        <method name="SignHash(System.Byte[], System.String)" argnames="rgbHash, str" returntype="System.Byte[]" />
-        <method name="VerifyHash(System.Byte[], System.String, System.Byte[])" argnames="rgbHash, str, rgbSignature" returntype="System.Boolean" />
-    </class>
-    <class name="DSASignatureDeformatter" namespace="System.Security.Cryptography">
-        <constructor name="DSASignatureDeformatter()" argnames="" />
-        <constructor name="DSASignatureDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
-        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="DSASignatureFormatter" namespace="System.Security.Cryptography">
-        <constructor name="DSASignatureFormatter()" argnames="" />
-        <constructor name="DSASignatureFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
-        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="HashAlgorithm" namespace="System.Security.Cryptography">
-        <constructor name="HashAlgorithm()" argnames="" />
-        <field name="HashSizeValue" />
-        <field name="HashValue" />
-        <field name="State" />
-        <property name="HashSize" propertytype="System.Int32" />
-        <property name="Hash" propertytype="System.Byte[]" />
-        <property name="InputBlockSize" propertytype="System.Int32" />
-        <property name="OutputBlockSize" propertytype="System.Int32" />
-        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
-        <property name="CanReuseTransform" propertytype="System.Boolean" />
-        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
-        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="array, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.HashAlgorithm" />
-        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.HashAlgorithm" />
-        <method name="ComputeHash(System.IO.Stream)" argnames="inputStream" returntype="System.Byte[]" />
-        <method name="ComputeHash(System.Byte[])" argnames="buffer" returntype="System.Byte[]" />
-        <method name="ComputeHash(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Byte[]" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="KeyedHashAlgorithm" namespace="System.Security.Cryptography">
-        <constructor name="KeyedHashAlgorithm()" argnames="" />
-        <field name="KeyValue" />
-        <property name="Key" propertytype="System.Byte[]" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.KeyedHashAlgorithm" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.KeyedHashAlgorithm" />
-    </class>
-    <class name="HMACSHA1" namespace="System.Security.Cryptography">
-        <constructor name="HMACSHA1()" argnames="" />
-        <constructor name="HMACSHA1(System.Byte[])" argnames="rgbKey" />
-        <property name="Key" propertytype="System.Byte[]" />
-        <property name="HashName" propertytype="System.String" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ib, cb" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="MACTripleDES" namespace="System.Security.Cryptography">
-        <constructor name="MACTripleDES()" argnames="" />
-        <constructor name="MACTripleDES(System.Byte[])" argnames="rgbKey" />
-        <constructor name="MACTripleDES(System.String, System.Byte[])" argnames="strTripleDES, rgbKey" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgbData, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="MD5" namespace="System.Security.Cryptography">
-        <constructor name="MD5()" argnames="" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.MD5" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.MD5" />
-    </class>
-    <class name="MD5CryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="MD5CryptoServiceProvider()" argnames="" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="MaskGenerationMethod" namespace="System.Security.Cryptography">
-        <constructor name="MaskGenerationMethod()" argnames="" />
-        <method name="GenerateMask(System.Byte[], System.Int32)" argnames="rgbSeed, cbReturn" returntype="System.Byte[]" />
-    </class>
-    <class name="PasswordDeriveBytes" namespace="System.Security.Cryptography">
-        <constructor name="PasswordDeriveBytes(System.String, System.Byte[])" argnames="strPassword, rgbSalt" />
-        <constructor name="PasswordDeriveBytes(System.String, System.Byte[], System.String, System.Int32)" argnames="strPassword, rgbSalt, strHashName, iterations" />
-        <constructor name="PasswordDeriveBytes(System.String, System.Byte[], System.Security.Cryptography.CspParameters)" argnames="strPassword, rgbSalt, cspParams" />
-        <constructor name="PasswordDeriveBytes(System.String, System.Byte[], System.String, System.Int32, System.Security.Cryptography.CspParameters)" argnames="strPassword, rgbSalt, strHashName, iterations, cspParams" />
-        <property name="HashName" propertytype="System.String" />
-        <property name="IterationCount" propertytype="System.Int32" />
-        <property name="Salt" propertytype="System.Byte[]" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="GetBytes(System.Int32)" argnames="cb" returntype="System.Byte[]" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="CryptDeriveKey(System.String, System.String, System.Int32, System.Byte[])" argnames="algname, alghashname, keySize, rgbIV" returntype="System.Byte[]" />
-    </class>
-    <class name="PKCS1MaskGenerationMethod" namespace="System.Security.Cryptography">
-        <constructor name="PKCS1MaskGenerationMethod()" argnames="" />
-        <property name="HashName" propertytype="System.String" />
-        <method name="GenerateMask(System.Byte[], System.Int32)" argnames="rgbSeed, cbReturn" returntype="System.Byte[]" />
-    </class>
-    <class name="RC2" namespace="System.Security.Cryptography">
-        <constructor name="RC2()" argnames="" />
-        <field name="EffectiveKeySizeValue" />
-        <property name="EffectiveKeySize" propertytype="System.Int32" />
-        <property name="KeySize" propertytype="System.Int32" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.RC2" />
-        <method name="Create(System.String)" argnames="AlgName" returntype="System.Security.Cryptography.RC2" />
-    </class>
-    <class name="RC2CryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="RC2CryptoServiceProvider()" argnames="" />
-        <property name="EffectiveKeySize" propertytype="System.Int32" />
-        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
-        <method name="GenerateIV()" argnames="" returntype="System.Void" />
-        <method name="GenerateKey()" argnames="" returntype="System.Void" />
-        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-    </class>
-    <class name="RandomNumberGenerator" namespace="System.Security.Cryptography">
-        <constructor name="RandomNumberGenerator()" argnames="" />
-        <method name="GetNonZeroBytes(System.Byte[])" argnames="data" returntype="System.Void" />
-        <method name="GetBytes(System.Byte[])" argnames="data" returntype="System.Void" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.RandomNumberGenerator" />
-        <method name="Create(System.String)" argnames="rngName" returntype="System.Security.Cryptography.RandomNumberGenerator" />
-    </class>
-    <class name="RNGCryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="RNGCryptoServiceProvider()" argnames="" />
-        <constructor name="RNGCryptoServiceProvider(System.String)" argnames="str" />
-        <constructor name="RNGCryptoServiceProvider(System.Byte[])" argnames="rgb" />
-        <constructor name="RNGCryptoServiceProvider(System.Security.Cryptography.CspParameters)" argnames="cspParams" />
-        <method name="GetNonZeroBytes(System.Byte[])" argnames="data" returntype="System.Void" />
-        <method name="GetBytes(System.Byte[])" argnames="data" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="RSA" namespace="System.Security.Cryptography">
-        <constructor name="RSA()" argnames="" />
-        <method name="ImportParameters(System.Security.Cryptography.RSAParameters)" argnames="parameters" returntype="System.Void" />
-        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.RSAParameters" />
-        <method name="EncryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
-        <method name="DecryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
-        <method name="ToXmlString(System.Boolean)" argnames="includePrivateParameters" returntype="System.String" />
-        <method name="FromXmlString(System.String)" argnames="xmlString" returntype="System.Void" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.RSA" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.RSA" />
-    </class>
-    <class name="RSACryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="RSACryptoServiceProvider()" argnames="" />
-        <constructor name="RSACryptoServiceProvider(System.Int32)" argnames="dwKeySize" />
-        <constructor name="RSACryptoServiceProvider(System.Security.Cryptography.CspParameters)" argnames="parameters" />
-        <constructor name="RSACryptoServiceProvider(System.Int32, System.Security.Cryptography.CspParameters)" argnames="dwKeySize, parameters" />
-        <property name="KeySize" propertytype="System.Int32" />
-        <property name="KeyExchangeAlgorithm" propertytype="System.String" />
-        <property name="SignatureAlgorithm" propertytype="System.String" />
-        <property name="PersistKeyInCsp" propertytype="System.Boolean" />
-        <property name="hKey" propertytype="System.IntPtr" />
-        <method name="ImportParameters(System.Security.Cryptography.RSAParameters)" argnames="parameters" returntype="System.Void" />
-        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.RSAParameters" />
-        <method name="EncryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
-        <method name="DecryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="SignData(System.IO.Stream, System.Object)" argnames="inputStream, halg" returntype="System.Byte[]" />
-        <method name="SignData(System.Byte[], System.Object)" argnames="buffer, halg" returntype="System.Byte[]" />
-        <method name="SignData(System.Byte[], System.Int32, System.Int32, System.Object)" argnames="buffer, offset, count, halg" returntype="System.Byte[]" />
-        <method name="VerifyData(System.Byte[], System.Object, System.Byte[])" argnames="buffer, halg, signature" returntype="System.Boolean" />
-        <method name="SignHash(System.Byte[], System.String)" argnames="rgbHash, str" returntype="System.Byte[]" />
-        <method name="VerifyHash(System.Byte[], System.String, System.Byte[])" argnames="rgbHash, str, rgbSignature" returntype="System.Boolean" />
-        <method name="Encrypt(System.Byte[], System.Boolean)" argnames="rgb, fOAEP" returntype="System.Byte[]" />
-        <method name="Decrypt(System.Byte[], System.Boolean)" argnames="rgb, fOAEP" returntype="System.Byte[]" />
-    </class>
-    <class name="RSAOAEPKeyExchangeDeformatter" namespace="System.Security.Cryptography">
-        <constructor name="RSAOAEPKeyExchangeDeformatter()" argnames="" />
-        <constructor name="RSAOAEPKeyExchangeDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <property name="Parameters" propertytype="System.String" />
-        <method name="DecryptKeyExchange(System.Byte[])" argnames="rgbData" returntype="System.Byte[]" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="RSAOAEPKeyExchangeFormatter" namespace="System.Security.Cryptography">
-        <constructor name="RSAOAEPKeyExchangeFormatter()" argnames="" />
-        <constructor name="RSAOAEPKeyExchangeFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <property name="Parameter" propertytype="System.Byte[]" />
-        <property name="Parameters" propertytype="System.String" />
-        <property name="Rng" propertytype="System.Security.Cryptography.RandomNumberGenerator" />
-        <method name="CreateKeyExchange(System.Byte[], System.Type)" argnames="rgbData, symAlgType" returntype="System.Byte[]" />
-        <method name="CreateKeyExchange(System.Byte[])" argnames="rgbData" returntype="System.Byte[]" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="RSAPKCS1KeyExchangeDeformatter" namespace="System.Security.Cryptography">
-        <constructor name="RSAPKCS1KeyExchangeDeformatter()" argnames="" />
-        <constructor name="RSAPKCS1KeyExchangeDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <property name="RNG" propertytype="System.Security.Cryptography.RandomNumberGenerator" />
-        <property name="Parameters" propertytype="System.String" />
-        <method name="DecryptKeyExchange(System.Byte[])" argnames="rgbIn" returntype="System.Byte[]" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="RSAPKCS1KeyExchangeFormatter" namespace="System.Security.Cryptography">
-        <constructor name="RSAPKCS1KeyExchangeFormatter()" argnames="" />
-        <constructor name="RSAPKCS1KeyExchangeFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <property name="Parameters" propertytype="System.String" />
-        <property name="Rng" propertytype="System.Security.Cryptography.RandomNumberGenerator" />
-        <method name="CreateKeyExchange(System.Byte[], System.Type)" argnames="rgbData, symAlgType" returntype="System.Byte[]" />
-        <method name="CreateKeyExchange(System.Byte[])" argnames="rgbData" returntype="System.Byte[]" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="RSAPKCS1SignatureDeformatter" namespace="System.Security.Cryptography">
-        <constructor name="RSAPKCS1SignatureDeformatter()" argnames="" />
-        <constructor name="RSAPKCS1SignatureDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
-        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="RSAPKCS1SignatureFormatter" namespace="System.Security.Cryptography">
-        <constructor name="RSAPKCS1SignatureFormatter()" argnames="" />
-        <constructor name="RSAPKCS1SignatureFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
-        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
-        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
-        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
-    </class>
-    <class name="Rijndael" namespace="System.Security.Cryptography">
-        <constructor name="Rijndael()" argnames="" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.Rijndael" />
-        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.Rijndael" />
-    </class>
-    <class name="RijndaelManaged" namespace="System.Security.Cryptography">
-        <constructor name="RijndaelManaged()" argnames="" />
-        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
-        <method name="GenerateIV()" argnames="" returntype="System.Void" />
-        <method name="GenerateKey()" argnames="" returntype="System.Void" />
-        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-    </class>
-    <class name="SHA1" namespace="System.Security.Cryptography">
-        <constructor name="SHA1()" argnames="" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA1" />
-        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA1" />
-    </class>
-    <class name="SHA1CryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="SHA1CryptoServiceProvider()" argnames="" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="SHA1Managed" namespace="System.Security.Cryptography">
-        <constructor name="SHA1Managed()" argnames="" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="SHA256" namespace="System.Security.Cryptography">
-        <constructor name="SHA256()" argnames="" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA256" />
-        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA256" />
-    </class>
-    <class name="SHA256Managed" namespace="System.Security.Cryptography">
-        <constructor name="SHA256Managed()" argnames="" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="SHA384" namespace="System.Security.Cryptography">
-        <constructor name="SHA384()" argnames="" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA384" />
-        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA384" />
-    </class>
-    <class name="SHA384Managed" namespace="System.Security.Cryptography">
-        <constructor name="SHA384Managed()" argnames="" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="SHA512" namespace="System.Security.Cryptography">
-        <constructor name="SHA512()" argnames="" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA512" />
-        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA512" />
-    </class>
-    <class name="SHA512Managed" namespace="System.Security.Cryptography">
-        <constructor name="SHA512Managed()" argnames="" />
-        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
-        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
-        <method name="Initialize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="SignatureDescription" namespace="System.Security.Cryptography">
-        <constructor name="SignatureDescription()" argnames="" />
-        <constructor name="SignatureDescription(System.Security.SecurityElement)" argnames="el" />
-        <property name="KeyAlgorithm" propertytype="System.String" />
-        <property name="DigestAlgorithm" propertytype="System.String" />
-        <property name="FormatterAlgorithm" propertytype="System.String" />
-        <property name="DeformatterAlgorithm" propertytype="System.String" />
-        <method name="CreateDigest()" argnames="" returntype="System.Security.Cryptography.HashAlgorithm" />
-        <method name="CreateFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Security.Cryptography.AsymmetricSignatureFormatter" />
-        <method name="CreateDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Security.Cryptography.AsymmetricSignatureDeformatter" />
-    </class>
-    <class name="TripleDES" namespace="System.Security.Cryptography">
-        <constructor name="TripleDES()" argnames="" />
-        <property name="Key" propertytype="System.Byte[]" />
-        <method name="Create()" argnames="" returntype="System.Security.Cryptography.TripleDES" />
-        <method name="Create(System.String)" argnames="str" returntype="System.Security.Cryptography.TripleDES" />
-        <method name="IsWeakKey(System.Byte[])" argnames="rgbKey" returntype="System.Boolean" />
-    </class>
-    <class name="TripleDESCryptoServiceProvider" namespace="System.Security.Cryptography">
-        <constructor name="TripleDESCryptoServiceProvider()" argnames="" />
-        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
-        <method name="GenerateIV()" argnames="" returntype="System.Void" />
-        <method name="GenerateKey()" argnames="" returntype="System.Void" />
-        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
-    </class>
-    <interface name="ICryptoTransform" namespace="System.Security.Cryptography">
-        <property name="InputBlockSize" propertytype="System.Int32" />
-        <property name="OutputBlockSize" propertytype="System.Int32" />
-        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
-        <property name="CanReuseTransform" propertytype="System.Boolean" />
-        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
-        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
-    </interface>
-    <struct name="DSAParameters" namespace="System.Security.Cryptography">
-        <field name="P" />
-        <field name="Q" />
-        <field name="G" />
-        <field name="Y" />
-        <field name="J" />
-        <field name="X" />
-        <field name="Seed" />
-        <field name="Counter" />
-    </struct>
-    <struct name="RSAParameters" namespace="System.Security.Cryptography">
-        <field name="Exponent" />
-        <field name="Modulus" />
-        <field name="P" />
-        <field name="Q" />
-        <field name="DP" />
-        <field name="DQ" />
-        <field name="InverseQ" />
-        <field name="D" />
-    </struct>
-    <enum name="FromBase64TransformMode" namespace="System.Security.Cryptography">
-        <field name="IgnoreWhiteSpaces" />
-        <field name="DoNotIgnoreWhiteSpaces" />
-    </enum>
-    <enum name="CipherMode" namespace="System.Security.Cryptography">
-        <field name="CBC" />
-        <field name="ECB" />
-        <field name="OFB" />
-        <field name="CFB" />
-        <field name="CTS" />
-    </enum>
-    <enum name="PaddingMode" namespace="System.Security.Cryptography">
-        <field name="None" />
-        <field name="PKCS7" />
-        <field name="Zeros" />
-    </enum>
-    <enum name="CspProviderFlags" namespace="System.Security.Cryptography">
-        <field name="UseMachineKeyStore" />
-        <field name="UseDefaultKeyContainer" />
-    </enum>
-    <enum name="CryptoStreamMode" namespace="System.Security.Cryptography">
-        <field name="Read" />
-        <field name="Write" />
-    </enum>
-    <class name="Stream" namespace="System.IO">
-        <constructor name="Stream()" argnames="" />
-        <field name="Null" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanSeek" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="Position" propertytype="System.Int64" />
-        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
-        <method name="ReadByte()" argnames="" returntype="System.Int32" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
-        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
-        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, count, callback, state" returntype="System.IAsyncResult" />
-        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
-        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, count, callback, state" returntype="System.IAsyncResult" />
-        <method name="CreateWaitHandle()" argnames="" returntype="System.Threading.WaitHandle" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="BinaryReader" namespace="System.IO">
-        <constructor name="BinaryReader(System.IO.Stream)" argnames="input" />
-        <constructor name="BinaryReader(System.IO.Stream, System.Text.Encoding)" argnames="input, encoding" />
-        <property name="BaseStream" propertytype="System.IO.Stream" />
-        <method name="FillBuffer(System.Int32)" argnames="numBytes" returntype="System.Void" />
-        <method name="ReadBytes(System.Int32)" argnames="count" returntype="System.Byte[]" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
-        <method name="ReadChars(System.Int32)" argnames="count" returntype="System.Char[]" />
-        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
-        <method name="ReadString()" argnames="" returntype="System.String" />
-        <method name="ReadDecimal()" argnames="" returntype="System.Decimal" />
-        <method name="ReadDouble()" argnames="" returntype="System.Double" />
-        <method name="ReadSingle()" argnames="" returntype="System.Single" />
-        <method name="ReadUInt64()" argnames="" returntype="System.UInt64" />
-        <method name="ReadInt64()" argnames="" returntype="System.Int64" />
-        <method name="ReadUInt32()" argnames="" returntype="System.UInt32" />
-        <method name="ReadInt32()" argnames="" returntype="System.Int32" />
-        <method name="ReadUInt16()" argnames="" returntype="System.UInt16" />
-        <method name="ReadInt16()" argnames="" returntype="System.Int16" />
-        <method name="ReadChar()" argnames="" returntype="System.Char" />
-        <method name="ReadSByte()" argnames="" returntype="System.SByte" />
-        <method name="ReadByte()" argnames="" returntype="System.Byte" />
-        <method name="ReadBoolean()" argnames="" returntype="System.Boolean" />
-        <method name="Read()" argnames="" returntype="System.Int32" />
-        <method name="PeekChar()" argnames="" returntype="System.Int32" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Read7BitEncodedInt()" argnames="" returntype="System.Int32" />
-    </class>
-    <class name="BinaryWriter" namespace="System.IO">
-        <constructor name="BinaryWriter()" argnames="" />
-        <constructor name="BinaryWriter(System.IO.Stream)" argnames="output" />
-        <constructor name="BinaryWriter(System.IO.Stream, System.Text.Encoding)" argnames="output, encoding" />
-        <field name="OutStream" />
-        <field name="Null" />
-        <property name="BaseStream" propertytype="System.IO.Stream" />
-        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt64)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt32)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt16)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Int16)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Decimal)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Void" />
-        <method name="Write(System.Char[])" argnames="chars" returntype="System.Void" />
-        <method name="Write(System.Char)" argnames="ch" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="Write(System.Byte[])" argnames="buffer" returntype="System.Void" />
-        <method name="Write(System.SByte)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Byte)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int32, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Write7BitEncodedInt(System.Int32)" argnames="value" returntype="System.Void" />
-    </class>
-    <class name="BufferedStream" namespace="System.IO">
-        <constructor name="BufferedStream(System.IO.Stream)" argnames="stream" />
-        <constructor name="BufferedStream(System.IO.Stream, System.Int32)" argnames="stream, bufferSize" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="CanSeek" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="Position" propertytype="System.Int64" />
-        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Void" />
-        <method name="ReadByte()" argnames="" returntype="System.Int32" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Int32" />
-        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="Directory" namespace="System.IO">
-        <method name="GetParent(System.String)" argnames="path" returntype="System.IO.DirectoryInfo" />
-        <method name="CreateDirectory(System.String)" argnames="path" returntype="System.IO.DirectoryInfo" />
-        <method name="Exists(System.String)" argnames="path" returntype="System.Boolean" />
-        <method name="SetCreationTime(System.String, System.DateTime)" argnames="path, creationTime" returntype="System.Void" />
-        <method name="GetCreationTime(System.String)" argnames="path" returntype="System.DateTime" />
-        <method name="SetLastWriteTime(System.String, System.DateTime)" argnames="path, lastWriteTime" returntype="System.Void" />
-        <method name="GetLastWriteTime(System.String)" argnames="path" returntype="System.DateTime" />
-        <method name="SetLastAccessTime(System.String, System.DateTime)" argnames="path, lastAccessTime" returntype="System.Void" />
-        <method name="GetLastAccessTime(System.String)" argnames="path" returntype="System.DateTime" />
-        <method name="GetFiles(System.String)" argnames="path" returntype="System.String[]" />
-        <method name="GetFiles(System.String, System.String)" argnames="path, searchPattern" returntype="System.String[]" />
-        <method name="GetDirectories(System.String)" argnames="path" returntype="System.String[]" />
-        <method name="GetDirectories(System.String, System.String)" argnames="path, searchPattern" returntype="System.String[]" />
-        <method name="GetFileSystemEntries(System.String)" argnames="path" returntype="System.String[]" />
-        <method name="GetFileSystemEntries(System.String, System.String)" argnames="path, searchPattern" returntype="System.String[]" />
-        <method name="GetLogicalDrives()" argnames="" returntype="System.String[]" />
-        <method name="GetDirectoryRoot(System.String)" argnames="path" returntype="System.String" />
-        <method name="GetCurrentDirectory()" argnames="" returntype="System.String" />
-        <method name="SetCurrentDirectory(System.String)" argnames="path" returntype="System.Void" />
-        <method name="Move(System.String, System.String)" argnames="sourceDirName, destDirName" returntype="System.Void" />
-        <method name="Delete(System.String)" argnames="path" returntype="System.Void" />
-        <method name="Delete(System.String, System.Boolean)" argnames="path, recursive" returntype="System.Void" />
-    </class>
-    <class name="FileSystemInfo" namespace="System.IO">
-        <constructor name="FileSystemInfo()" argnames="" />
-        <field name="FullPath" />
-        <field name="OriginalPath" />
-        <property name="FullName" propertytype="System.String" />
-        <property name="Extension" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Exists" propertytype="System.Boolean" />
-        <property name="CreationTime" propertytype="System.DateTime" />
-        <property name="LastAccessTime" propertytype="System.DateTime" />
-        <property name="LastWriteTime" propertytype="System.DateTime" />
-        <property name="Attributes" propertytype="System.IO.FileAttributes" />
-        <method name="Delete()" argnames="" returntype="System.Void" />
-        <method name="Refresh()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="DirectoryInfo" namespace="System.IO">
-        <constructor name="DirectoryInfo(System.String)" argnames="path" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Parent" propertytype="System.IO.DirectoryInfo" />
-        <property name="Exists" propertytype="System.Boolean" />
-        <property name="Root" propertytype="System.IO.DirectoryInfo" />
-        <method name="Delete()" argnames="" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="CreateSubdirectory(System.String)" argnames="path" returntype="System.IO.DirectoryInfo" />
-        <method name="Create()" argnames="" returntype="System.Void" />
-        <method name="GetFiles(System.String)" argnames="searchPattern" returntype="System.IO.FileInfo[]" />
-        <method name="GetFiles()" argnames="" returntype="System.IO.FileInfo[]" />
-        <method name="GetDirectories()" argnames="" returntype="System.IO.DirectoryInfo[]" />
-        <method name="GetFileSystemInfos(System.String)" argnames="searchPattern" returntype="System.IO.FileSystemInfo[]" />
-        <method name="GetFileSystemInfos()" argnames="" returntype="System.IO.FileSystemInfo[]" />
-        <method name="GetDirectories(System.String)" argnames="searchPattern" returntype="System.IO.DirectoryInfo[]" />
-        <method name="MoveTo(System.String)" argnames="destDirName" returntype="System.Void" />
-        <method name="Delete(System.Boolean)" argnames="recursive" returntype="System.Void" />
-    </class>
-    <class name="IOException" namespace="System.IO">
-        <constructor name="IOException()" argnames="" />
-        <constructor name="IOException(System.String)" argnames="message" />
-        <constructor name="IOException(System.String, System.Int32)" argnames="message, hresult" />
-        <constructor name="IOException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="IOException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="DirectoryNotFoundException" namespace="System.IO">
-        <constructor name="DirectoryNotFoundException()" argnames="" />
-        <constructor name="DirectoryNotFoundException(System.String)" argnames="message" />
-        <constructor name="DirectoryNotFoundException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="DirectoryNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="EndOfStreamException" namespace="System.IO">
-        <constructor name="EndOfStreamException()" argnames="" />
-        <constructor name="EndOfStreamException(System.String)" argnames="message" />
-        <constructor name="EndOfStreamException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="EndOfStreamException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="File" namespace="System.IO">
-        <method name="OpenText(System.String)" argnames="path" returntype="System.IO.StreamReader" />
-        <method name="CreateText(System.String)" argnames="path" returntype="System.IO.StreamWriter" />
-        <method name="AppendText(System.String)" argnames="path" returntype="System.IO.StreamWriter" />
-        <method name="Copy(System.String, System.String)" argnames="sourceFileName, destFileName" returntype="System.Void" />
-        <method name="Copy(System.String, System.String, System.Boolean)" argnames="sourceFileName, destFileName, overwrite" returntype="System.Void" />
-        <method name="Create(System.String)" argnames="path" returntype="System.IO.FileStream" />
-        <method name="Create(System.String, System.Int32)" argnames="path, bufferSize" returntype="System.IO.FileStream" />
-        <method name="Delete(System.String)" argnames="path" returntype="System.Void" />
-        <method name="Exists(System.String)" argnames="path" returntype="System.Boolean" />
-        <method name="Open(System.String, System.IO.FileMode)" argnames="path, mode" returntype="System.IO.FileStream" />
-        <method name="Open(System.String, System.IO.FileMode, System.IO.FileAccess)" argnames="path, mode, access" returntype="System.IO.FileStream" />
-        <method name="Open(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="path, mode, access, share" returntype="System.IO.FileStream" />
-        <method name="SetCreationTime(System.String, System.DateTime)" argnames="path, creationTime" returntype="System.Void" />
-        <method name="GetCreationTime(System.String)" argnames="path" returntype="System.DateTime" />
-        <method name="SetLastAccessTime(System.String, System.DateTime)" argnames="path, lastAccessTime" returntype="System.Void" />
-        <method name="GetLastAccessTime(System.String)" argnames="path" returntype="System.DateTime" />
-        <method name="SetLastWriteTime(System.String, System.DateTime)" argnames="path, lastWriteTime" returntype="System.Void" />
-        <method name="GetLastWriteTime(System.String)" argnames="path" returntype="System.DateTime" />
-        <method name="GetAttributes(System.String)" argnames="path" returntype="System.IO.FileAttributes" />
-        <method name="SetAttributes(System.String, System.IO.FileAttributes)" argnames="path, fileAttributes" returntype="System.Void" />
-        <method name="OpenRead(System.String)" argnames="path" returntype="System.IO.FileStream" />
-        <method name="OpenWrite(System.String)" argnames="path" returntype="System.IO.FileStream" />
-        <method name="Move(System.String, System.String)" argnames="sourceFileName, destFileName" returntype="System.Void" />
-    </class>
-    <class name="FileInfo" namespace="System.IO">
-        <constructor name="FileInfo(System.String)" argnames="fileName" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="DirectoryName" propertytype="System.String" />
-        <property name="Directory" propertytype="System.IO.DirectoryInfo" />
-        <property name="Exists" propertytype="System.Boolean" />
-        <method name="Delete()" argnames="" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="OpenText()" argnames="" returntype="System.IO.StreamReader" />
-        <method name="CreateText()" argnames="" returntype="System.IO.StreamWriter" />
-        <method name="AppendText()" argnames="" returntype="System.IO.StreamWriter" />
-        <method name="CopyTo(System.String)" argnames="destFileName" returntype="System.IO.FileInfo" />
-        <method name="Create()" argnames="" returntype="System.IO.FileStream" />
-        <method name="CopyTo(System.String, System.Boolean)" argnames="destFileName, overwrite" returntype="System.IO.FileInfo" />
-        <method name="Open(System.IO.FileMode)" argnames="mode" returntype="System.IO.FileStream" />
-        <method name="Open(System.IO.FileMode, System.IO.FileAccess)" argnames="mode, access" returntype="System.IO.FileStream" />
-        <method name="Open(System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="mode, access, share" returntype="System.IO.FileStream" />
-        <method name="OpenRead()" argnames="" returntype="System.IO.FileStream" />
-        <method name="OpenWrite()" argnames="" returntype="System.IO.FileStream" />
-        <method name="MoveTo(System.String)" argnames="destFileName" returntype="System.Void" />
-    </class>
-    <class name="FileLoadException" namespace="System.IO">
-        <constructor name="FileLoadException()" argnames="" />
-        <constructor name="FileLoadException(System.String)" argnames="message" />
-        <constructor name="FileLoadException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="FileLoadException(System.String, System.String)" argnames="message, fileName" />
-        <constructor name="FileLoadException(System.String, System.String, System.Exception)" argnames="message, fileName, inner" />
-        <constructor name="FileLoadException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" propertytype="System.String" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="FusionLog" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="FileNotFoundException" namespace="System.IO">
-        <constructor name="FileNotFoundException()" argnames="" />
-        <constructor name="FileNotFoundException(System.String)" argnames="message" />
-        <constructor name="FileNotFoundException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="FileNotFoundException(System.String, System.String)" argnames="message, fileName" />
-        <constructor name="FileNotFoundException(System.String, System.String, System.Exception)" argnames="message, fileName, innerException" />
-        <constructor name="FileNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="Message" propertytype="System.String" />
-        <property name="FileName" propertytype="System.String" />
-        <property name="FusionLog" propertytype="System.String" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="FileStream" namespace="System.IO">
-        <constructor name="FileStream(System.String, System.IO.FileMode)" argnames="path, mode" />
-        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess)" argnames="path, mode, access" />
-        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="path, mode, access, share" />
-        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32)" argnames="path, mode, access, share, bufferSize" />
-        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32, System.Boolean)" argnames="path, mode, access, share, bufferSize, useAsync" />
-        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess)" argnames="handle, access" />
-        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess, System.Boolean)" argnames="handle, access, ownsHandle" />
-        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess, System.Boolean, System.Int32)" argnames="handle, access, ownsHandle, bufferSize" />
-        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess, System.Boolean, System.Int32, System.Boolean)" argnames="handle, access, ownsHandle, bufferSize, isAsync" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="CanSeek" propertytype="System.Boolean" />
-        <property name="IsAsync" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="Name" propertytype="System.String" />
-        <property name="NameInternal" propertytype="System.String" />
-        <property name="Position" propertytype="System.Int64" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <method name="Unlock(System.Int64, System.Int64)" argnames="position, length" returntype="System.Void" />
-        <method name="Lock(System.Int64, System.Int64)" argnames="position, length" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Void" />
-        <method name="ReadByte()" argnames="" returntype="System.Int32" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Int32" />
-        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
-        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="array, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
-        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
-        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="array, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="MemoryStream" namespace="System.IO">
-        <constructor name="MemoryStream()" argnames="" />
-        <constructor name="MemoryStream(System.Int32)" argnames="capacity" />
-        <constructor name="MemoryStream(System.Byte[])" argnames="buffer" />
-        <constructor name="MemoryStream(System.Byte[], System.Boolean)" argnames="buffer, writable" />
-        <constructor name="MemoryStream(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" />
-        <constructor name="MemoryStream(System.Byte[], System.Int32, System.Int32, System.Boolean)" argnames="buffer, index, count, writable" />
-        <constructor name="MemoryStream(System.Byte[], System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="buffer, index, count, writable, publiclyVisible" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanSeek" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="Capacity" propertytype="System.Int32" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="Position" propertytype="System.Int64" />
-        <method name="WriteTo(System.IO.Stream)" argnames="stream" returntype="System.Void" />
-        <method name="ToArray()" argnames="" returntype="System.Byte[]" />
-        <method name="GetBuffer()" argnames="" returntype="System.Byte[]" />
-        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
-        <method name="ReadByte()" argnames="" returntype="System.Int32" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
-        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, loc" returntype="System.Int64" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="Path" namespace="System.IO">
-        <field name="DirectorySeparatorChar" />
-        <field name="AltDirectorySeparatorChar" />
-        <field name="VolumeSeparatorChar" />
-        <field name="InvalidPathChars" />
-        <field name="PathSeparator" />
-        <method name="ChangeExtension(System.String, System.String)" argnames="path, extension" returntype="System.String" />
-        <method name="GetDirectoryName(System.String)" argnames="path" returntype="System.String" />
-        <method name="GetExtension(System.String)" argnames="path" returntype="System.String" />
-        <method name="GetFullPath(System.String)" argnames="path" returntype="System.String" />
-        <method name="GetFileName(System.String)" argnames="path" returntype="System.String" />
-        <method name="GetFileNameWithoutExtension(System.String)" argnames="path" returntype="System.String" />
-        <method name="GetPathRoot(System.String)" argnames="path" returntype="System.String" />
-        <method name="GetTempPath()" argnames="" returntype="System.String" />
-        <method name="GetTempFileName()" argnames="" returntype="System.String" />
-        <method name="HasExtension(System.String)" argnames="path" returntype="System.Boolean" />
-        <method name="IsPathRooted(System.String)" argnames="path" returntype="System.Boolean" />
-        <method name="Combine(System.String, System.String)" argnames="path1, path2" returntype="System.String" />
-    </class>
-    <class name="PathTooLongException" namespace="System.IO">
-        <constructor name="PathTooLongException()" argnames="" />
-        <constructor name="PathTooLongException(System.String)" argnames="message" />
-        <constructor name="PathTooLongException(System.String, System.Exception)" argnames="message, innerException" />
-        <constructor name="PathTooLongException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="TextReader" namespace="System.IO">
-        <constructor name="TextReader()" argnames="" />
-        <field name="Null" />
-        <method name="ReadLine()" argnames="" returntype="System.String" />
-        <method name="ReadBlock(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
-        <method name="ReadToEnd()" argnames="" returntype="System.String" />
-        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
-        <method name="Read()" argnames="" returntype="System.Int32" />
-        <method name="Peek()" argnames="" returntype="System.Int32" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Synchronized(System.IO.TextReader)" argnames="reader" returntype="System.IO.TextReader" />
-    </class>
-    <class name="StreamReader" namespace="System.IO">
-        <constructor name="StreamReader(System.IO.Stream)" argnames="stream" />
-        <constructor name="StreamReader(System.IO.Stream, System.Boolean)" argnames="stream, detectEncodingFromByteOrderMarks" />
-        <constructor name="StreamReader(System.IO.Stream, System.Text.Encoding)" argnames="stream, encoding" />
-        <constructor name="StreamReader(System.IO.Stream, System.Text.Encoding, System.Boolean)" argnames="stream, encoding, detectEncodingFromByteOrderMarks" />
-        <constructor name="StreamReader(System.IO.Stream, System.Text.Encoding, System.Boolean, System.Int32)" argnames="stream, encoding, detectEncodingFromByteOrderMarks, bufferSize" />
-        <constructor name="StreamReader(System.String)" argnames="path" />
-        <constructor name="StreamReader(System.String, System.Boolean)" argnames="path, detectEncodingFromByteOrderMarks" />
-        <constructor name="StreamReader(System.String, System.Text.Encoding)" argnames="path, encoding" />
-        <constructor name="StreamReader(System.String, System.Text.Encoding, System.Boolean)" argnames="path, encoding, detectEncodingFromByteOrderMarks" />
-        <constructor name="StreamReader(System.String, System.Text.Encoding, System.Boolean, System.Int32)" argnames="path, encoding, detectEncodingFromByteOrderMarks, bufferSize" />
-        <field name="Null" />
-        <property name="CurrentEncoding" propertytype="System.Text.Encoding" />
-        <property name="BaseStream" propertytype="System.IO.Stream" />
-        <method name="ReadLine()" argnames="" returntype="System.String" />
-        <method name="ReadToEnd()" argnames="" returntype="System.String" />
-        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
-        <method name="Read()" argnames="" returntype="System.Int32" />
-        <method name="Peek()" argnames="" returntype="System.Int32" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="DiscardBufferedData()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="TextWriter" namespace="System.IO">
-        <constructor name="TextWriter()" argnames="" />
-        <constructor name="TextWriter(System.IFormatProvider)" argnames="formatProvider" />
-        <field name="CoreNewLine" />
-        <field name="Null" />
-        <property name="FormatProvider" propertytype="System.IFormatProvider" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <property name="NewLine" propertytype="System.String" />
-        <method name="WriteLine(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
-        <method name="WriteLine(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
-        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.String)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Decimal)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Double)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Single)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.UInt64)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.UInt32)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="WriteLine(System.Char[])" argnames="buffer" returntype="System.Void" />
-        <method name="WriteLine(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="WriteLine()" argnames="" returntype="System.Void" />
-        <method name="Write(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
-        <method name="Write(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
-        <method name="Write(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
-        <method name="Write(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
-        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Decimal)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt64)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.UInt32)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
-        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Synchronized(System.IO.TextWriter)" argnames="writer" returntype="System.IO.TextWriter" />
-    </class>
-    <class name="StreamWriter" namespace="System.IO">
-        <constructor name="StreamWriter(System.IO.Stream)" argnames="stream" />
-        <constructor name="StreamWriter(System.IO.Stream, System.Text.Encoding)" argnames="stream, encoding" />
-        <constructor name="StreamWriter(System.IO.Stream, System.Text.Encoding, System.Int32)" argnames="stream, encoding, bufferSize" />
-        <constructor name="StreamWriter(System.String)" argnames="path" />
-        <constructor name="StreamWriter(System.String, System.Boolean)" argnames="path, append" />
-        <constructor name="StreamWriter(System.String, System.Boolean, System.Text.Encoding)" argnames="path, append, encoding" />
-        <constructor name="StreamWriter(System.String, System.Boolean, System.Text.Encoding, System.Int32)" argnames="path, append, encoding, bufferSize" />
-        <field name="Null" />
-        <property name="AutoFlush" propertytype="System.Boolean" />
-        <property name="BaseStream" propertytype="System.IO.Stream" />
-        <property name="Closable" propertytype="System.Boolean" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
-        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="StringReader" namespace="System.IO">
-        <constructor name="StringReader(System.String)" argnames="s" />
-        <method name="ReadLine()" argnames="" returntype="System.String" />
-        <method name="ReadToEnd()" argnames="" returntype="System.String" />
-        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
-        <method name="Read()" argnames="" returntype="System.Int32" />
-        <method name="Peek()" argnames="" returntype="System.Int32" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="StringWriter" namespace="System.IO">
-        <constructor name="StringWriter()" argnames="" />
-        <constructor name="StringWriter(System.IFormatProvider)" argnames="formatProvider" />
-        <constructor name="StringWriter(System.Text.StringBuilder)" argnames="sb" />
-        <constructor name="StringWriter(System.Text.StringBuilder, System.IFormatProvider)" argnames="sb, formatProvider" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <method name="GetStringBuilder()" argnames="" returntype="System.Text.StringBuilder" />
-        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
-        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <enum name="FileAccess" namespace="System.IO">
-        <field name="Read" />
-        <field name="Write" />
-        <field name="ReadWrite" />
-    </enum>
-    <enum name="FileMode" namespace="System.IO">
-        <field name="CreateNew" />
-        <field name="Create" />
-        <field name="Open" />
-        <field name="OpenOrCreate" />
-        <field name="Truncate" />
-        <field name="Append" />
-    </enum>
-    <enum name="FileShare" namespace="System.IO">
-        <field name="None" />
-        <field name="Read" />
-        <field name="Write" />
-        <field name="ReadWrite" />
-        <field name="Inheritable" />
-    </enum>
-    <enum name="FileAttributes" namespace="System.IO">
-        <field name="ReadOnly" />
-        <field name="Hidden" />
-        <field name="System" />
-        <field name="Directory" />
-        <field name="Archive" />
-        <field name="Device" />
-        <field name="Normal" />
-        <field name="Temporary" />
-        <field name="SparseFile" />
-        <field name="ReparsePoint" />
-        <field name="Compressed" />
-        <field name="Offline" />
-        <field name="NotContentIndexed" />
-        <field name="Encrypted" />
-    </enum>
-    <enum name="SeekOrigin" namespace="System.IO">
-        <field name="Begin" />
-        <field name="Current" />
-        <field name="End" />
-    </enum>
-    <class name="AllMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="AllMembershipCondition()" argnames="" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="ApplicationDirectory" namespace="System.Security.Policy">
-        <constructor name="ApplicationDirectory(System.String)" argnames="name" />
-        <property name="Directory" propertytype="System.String" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="ApplicationDirectoryMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="ApplicationDirectoryMembershipCondition()" argnames="" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="CodeGroup" namespace="System.Security.Policy">
-        <constructor name="CodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Policy.PolicyStatement)" argnames="membershipCondition, policy" />
-        <property name="Children" propertytype="System.Collections.IList" />
-        <property name="MembershipCondition" propertytype="System.Security.Policy.IMembershipCondition" />
-        <property name="PolicyStatement" propertytype="System.Security.Policy.PolicyStatement" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Description" propertytype="System.String" />
-        <property name="PermissionSetName" propertytype="System.String" />
-        <property name="AttributeString" propertytype="System.String" />
-        <property name="MergeLogic" propertytype="System.String" />
-        <method name="ParseXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="CreateXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="element, level" returntype="System.Void" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
-        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
-        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="AddChild(System.Security.Policy.CodeGroup)" argnames="group" returntype="System.Void" />
-        <method name="RemoveChild(System.Security.Policy.CodeGroup)" argnames="group" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="Equals(System.Security.Policy.CodeGroup, System.Boolean)" argnames="cg, compareChildren" returntype="System.Boolean" />
-    </class>
-    <class name="Evidence" namespace="System.Security.Policy">
-        <constructor name="Evidence()" argnames="" />
-        <constructor name="Evidence(System.Security.Policy.Evidence)" argnames="evidence" />
-        <constructor name="Evidence(System.Object[], System.Object[])" argnames="hostEvidence, assemblyEvidence" />
-        <property name="Locked" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="AddHost(System.Object)" argnames="id" returntype="System.Void" />
-        <method name="AddAssembly(System.Object)" argnames="id" returntype="System.Void" />
-        <method name="Merge(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Void" />
-        <method name="GetHostEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-        <method name="GetAssemblyEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-    </class>
-    <class name="FileCodeGroup" namespace="System.Security.Policy">
-        <constructor name="FileCodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Permissions.FileIOPermissionAccess)" argnames="membershipCondition, access" />
-        <property name="MergeLogic" propertytype="System.String" />
-        <property name="PermissionSetName" propertytype="System.String" />
-        <property name="AttributeString" propertytype="System.String" />
-        <method name="ParseXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="CreateXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="element, level" returntype="System.Void" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
-        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
-        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-    </class>
-    <class name="FirstMatchCodeGroup" namespace="System.Security.Policy">
-        <constructor name="FirstMatchCodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Policy.PolicyStatement)" argnames="membershipCondition, policy" />
-        <property name="MergeLogic" propertytype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
-        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
-        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
-    </class>
-    <class name="Hash" namespace="System.Security.Policy">
-        <constructor name="Hash(System.Reflection.Assembly)" argnames="assembly" />
-        <property name="SHA1" propertytype="System.Byte[]" />
-        <property name="MD5" propertytype="System.Byte[]" />
-        <property name="HasBeenAccessed" propertytype="System.Boolean" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="GenerateHash(System.Security.Cryptography.HashAlgorithm)" argnames="hashAlg" returntype="System.Byte[]" />
-    </class>
-    <class name="HashMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="HashMembershipCondition(System.Security.Cryptography.HashAlgorithm, System.Byte[])" argnames="hashAlg, value" />
-        <property name="HashAlgorithm" propertytype="System.Security.Cryptography.HashAlgorithm" />
-        <property name="HashValue" propertytype="System.Byte[]" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="NetCodeGroup" namespace="System.Security.Policy">
-        <constructor name="NetCodeGroup(System.Security.Policy.IMembershipCondition)" argnames="membershipCondition" />
-        <property name="MergeLogic" propertytype="System.String" />
-        <property name="PermissionSetName" propertytype="System.String" />
-        <property name="AttributeString" propertytype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
-        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
-        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
-    </class>
-    <class name="PermissionRequestEvidence" namespace="System.Security.Policy">
-        <constructor name="PermissionRequestEvidence(System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="request, optional, denied" />
-        <property name="RequestedPermissions" propertytype="System.Security.PermissionSet" />
-        <property name="OptionalPermissions" propertytype="System.Security.PermissionSet" />
-        <property name="DeniedPermissions" propertytype="System.Security.PermissionSet" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.PermissionRequestEvidence" />
-    </class>
-    <class name="PolicyException" namespace="System.Security.Policy">
-        <constructor name="PolicyException()" argnames="" />
-        <constructor name="PolicyException(System.String)" argnames="message" />
-        <constructor name="PolicyException(System.String, System.Exception)" argnames="message, exception" />
-        <constructor name="PolicyException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="PolicyLevel" namespace="System.Security.Policy">
-        <property name="Label" propertytype="System.String" />
-        <property name="ConfigId" propertytype="System.Security.Util.ConfigId" />
-        <property name="ThrowOnLoadError" propertytype="System.Boolean" />
-        <property name="Loaded" propertytype="System.Boolean" />
-        <property name="Encoding" propertytype="System.Text.Encoding" />
-        <property name="StoreLocation" propertytype="System.String" />
-        <property name="RootCodeGroup" propertytype="System.Security.Policy.CodeGroup" />
-        <property name="NamedPermissionSets" propertytype="System.Collections.IList" />
-        <property name="FullTrustAssemblies" propertytype="System.Collections.IList" />
-        <method name="CreateAppDomainLevel()" argnames="" returntype="System.Security.Policy.PolicyLevel" />
-        <method name="AddFullTrustAssembly(System.Security.Policy.StrongName)" argnames="sn" returntype="System.Void" />
-        <method name="AddFullTrustAssembly(System.Security.Policy.StrongNameMembershipCondition)" argnames="snMC" returntype="System.Void" />
-        <method name="RemoveFullTrustAssembly(System.Security.Policy.StrongName)" argnames="sn" returntype="System.Void" />
-        <method name="RemoveFullTrustAssembly(System.Security.Policy.StrongNameMembershipCondition)" argnames="snMC" returntype="System.Void" />
-        <method name="Recover()" argnames="" returntype="System.Void" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="AddNamedPermissionSet(System.Security.NamedPermissionSet)" argnames="permSet" returntype="System.Void" />
-        <method name="RemoveNamedPermissionSet(System.Security.NamedPermissionSet)" argnames="permSet" returntype="System.Security.NamedPermissionSet" />
-        <method name="RemoveNamedPermissionSet(System.String)" argnames="name" returntype="System.Security.NamedPermissionSet" />
-        <method name="ChangeNamedPermissionSet(System.String, System.Security.PermissionSet)" argnames="name, pSet" returntype="System.Security.NamedPermissionSet" />
-        <method name="GetNamedPermissionSet(System.String)" argnames="name" returntype="System.Security.NamedPermissionSet" />
-        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
-        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-    </class>
-    <class name="PolicyStatement" namespace="System.Security.Policy">
-        <constructor name="PolicyStatement(System.Security.PermissionSet)" argnames="permSet" />
-        <constructor name="PolicyStatement(System.Security.PermissionSet, System.Security.Policy.PolicyStatementAttribute)" argnames="permSet, attributes" />
-        <property name="PermissionSet" propertytype="System.Security.PermissionSet" />
-        <property name="Attributes" propertytype="System.Security.Policy.PolicyStatementAttribute" />
-        <property name="AttributeString" propertytype="System.String" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="et, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="et" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.PolicyStatement" />
-    </class>
-    <class name="Publisher" namespace="System.Security.Policy">
-        <constructor name="Publisher(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="cert" />
-        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="PublisherMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="PublisherMembershipCondition(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="certificate" />
-        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="Site" namespace="System.Security.Policy">
-        <constructor name="Site(System.String)" argnames="name" />
-        <property name="Name" propertytype="System.String" />
-        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="CreateFromUrl(System.String)" argnames="url" returntype="System.Security.Policy.Site" />
-        <method name="Copy()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="SiteMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="SiteMembershipCondition(System.String)" argnames="site" />
-        <property name="Site" propertytype="System.String" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="StrongName" namespace="System.Security.Policy">
-        <constructor name="StrongName(System.Security.Permissions.StrongNamePublicKeyBlob, System.String, System.Version)" argnames="blob, name, version" />
-        <property name="PublicKey" propertytype="System.Security.Permissions.StrongNamePublicKeyBlob" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Version" propertytype="System.Version" />
-        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="StrongNameMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="StrongNameMembershipCondition(System.Security.Permissions.StrongNamePublicKeyBlob, System.String, System.Version)" argnames="blob, name, version" />
-        <property name="PublicKey" propertytype="System.Security.Permissions.StrongNamePublicKeyBlob" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Version" propertytype="System.Version" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="UnionCodeGroup" namespace="System.Security.Policy">
-        <constructor name="UnionCodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Policy.PolicyStatement)" argnames="membershipCondition, policy" />
-        <property name="MergeLogic" propertytype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
-        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
-        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
-    </class>
-    <class name="Url" namespace="System.Security.Policy">
-        <constructor name="Url(System.String)" argnames="name" />
-        <property name="Value" propertytype="System.String" />
-        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="UrlMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="UrlMembershipCondition(System.String)" argnames="url" />
-        <property name="Url" propertytype="System.String" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="Zone" namespace="System.Security.Policy">
-        <constructor name="Zone(System.Security.SecurityZone)" argnames="zone" />
-        <property name="SecurityZone" propertytype="System.Security.SecurityZone" />
-        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="CreateFromUrl(System.String)" argnames="url" returntype="System.Security.Policy.Zone" />
-        <method name="Copy()" argnames="" returntype="System.Object" />
-    </class>
-    <class name="ZoneMembershipCondition" namespace="System.Security.Policy">
-        <constructor name="ZoneMembershipCondition(System.Security.SecurityZone)" argnames="zone" />
-        <property name="SecurityZone" propertytype="System.Security.SecurityZone" />
-        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
-        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <interface name="IMembershipCondition" namespace="System.Security.Policy">
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
-        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
-    </interface>
-    <interface name="IIdentityPermissionFactory" namespace="System.Security.Policy">
-        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
-    </interface>
-    <enum name="PolicyStatementAttribute" namespace="System.Security.Policy">
-        <field name="Nothing" />
-        <field name="Exclusive" />
-        <field name="LevelFinal" />
-        <field name="All" />
-    </enum>
-    <class name="GenericIdentity" namespace="System.Security.Principal">
-        <constructor name="GenericIdentity(System.String)" argnames="name" />
-        <constructor name="GenericIdentity(System.String, System.String)" argnames="name, type" />
-        <property name="Name" propertytype="System.String" />
-        <property name="AuthenticationType" propertytype="System.String" />
-        <property name="IsAuthenticated" propertytype="System.Boolean" />
-    </class>
-    <class name="GenericPrincipal" namespace="System.Security.Principal">
-        <constructor name="GenericPrincipal(System.Security.Principal.IIdentity, System.String[])" argnames="identity, roles" />
-        <property name="Identity" propertytype="System.Security.Principal.IIdentity" />
-        <method name="IsInRole(System.String)" argnames="role" returntype="System.Boolean" />
-    </class>
-    <class name="WindowsIdentity" namespace="System.Security.Principal">
-        <constructor name="WindowsIdentity(System.IntPtr)" argnames="userToken" />
-        <constructor name="WindowsIdentity(System.IntPtr, System.String)" argnames="userToken, type" />
-        <constructor name="WindowsIdentity(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)" argnames="userToken, type, acctType" />
-        <constructor name="WindowsIdentity(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)" argnames="userToken, type, acctType, isAuthenticated" />
-        <property name="Name" propertytype="System.String" />
-        <property name="AuthenticationType" propertytype="System.String" />
-        <property name="IsAuthenticated" propertytype="System.Boolean" />
-        <property name="Token" propertytype="System.IntPtr" />
-        <property name="IsGuest" propertytype="System.Boolean" />
-        <property name="IsSystem" propertytype="System.Boolean" />
-        <property name="IsAnonymous" propertytype="System.Boolean" />
-        <method name="Impersonate()" argnames="" returntype="System.Security.Principal.WindowsImpersonationContext" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="GetCurrent()" argnames="" returntype="System.Security.Principal.WindowsIdentity" />
-        <method name="GetAnonymous()" argnames="" returntype="System.Security.Principal.WindowsIdentity" />
-        <method name="Impersonate(System.IntPtr)" argnames="userToken" returntype="System.Security.Principal.WindowsImpersonationContext" />
-    </class>
-    <class name="WindowsImpersonationContext" namespace="System.Security.Principal">
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Undo()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="WindowsPrincipal" namespace="System.Security.Principal">
-        <constructor name="WindowsPrincipal(System.Security.Principal.WindowsIdentity)" argnames="ntIdentity" />
-        <property name="Identity" propertytype="System.Security.Principal.IIdentity" />
-        <method name="IsInRole(System.String)" argnames="role" returntype="System.Boolean" />
-        <method name="IsInRole(System.Security.Principal.WindowsBuiltInRole)" argnames="role" returntype="System.Boolean" />
-        <method name="IsInRole(System.Int32)" argnames="rid" returntype="System.Boolean" />
-    </class>
-    <interface name="IIdentity" namespace="System.Security.Principal">
-        <property name="Name" propertytype="System.String" />
-        <property name="AuthenticationType" propertytype="System.String" />
-        <property name="IsAuthenticated" propertytype="System.Boolean" />
-    </interface>
-    <interface name="IPrincipal" namespace="System.Security.Principal">
-        <property name="Identity" propertytype="System.Security.Principal.IIdentity" />
-        <method name="IsInRole(System.String)" argnames="role" returntype="System.Boolean" />
-    </interface>
-    <enum name="PrincipalPolicy" namespace="System.Security.Principal">
-        <field name="UnauthenticatedPrincipal" />
-        <field name="NoPrincipal" />
-        <field name="WindowsPrincipal" />
-    </enum>
-    <enum name="WindowsAccountType" namespace="System.Security.Principal">
-        <field name="Normal" />
-        <field name="Guest" />
-        <field name="System" />
-        <field name="Anonymous" />
-    </enum>
-    <enum name="WindowsBuiltInRole" namespace="System.Security.Principal">
-        <field name="Administrator" />
-        <field name="User" />
-        <field name="Guest" />
-        <field name="PowerUser" />
-        <field name="AccountOperator" />
-        <field name="SystemOperator" />
-        <field name="PrintOperator" />
-        <field name="BackupOperator" />
-        <field name="Replicator" />
-    </enum>
-    <class name="DispIdAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="DispIdAttribute(System.Int32)" argnames="dispId" />
-        <property name="Value" propertytype="System.Int32" />
-    </class>
-    <class name="InterfaceTypeAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType)" argnames="interfaceType" />
-        <constructor name="InterfaceTypeAttribute(System.Int16)" argnames="interfaceType" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.ComInterfaceType" />
-    </class>
-    <class name="ClassInterfaceAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ClassInterfaceAttribute(System.Runtime.InteropServices.ClassInterfaceType)" argnames="classInterfaceType" />
-        <constructor name="ClassInterfaceAttribute(System.Int16)" argnames="classInterfaceType" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.ClassInterfaceType" />
-    </class>
-    <class name="ComVisibleAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComVisibleAttribute(System.Boolean)" argnames="visibility" />
-        <property name="Value" propertytype="System.Boolean" />
-    </class>
-    <class name="LCIDConversionAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="LCIDConversionAttribute(System.Int32)" argnames="lcid" />
-        <property name="Value" propertytype="System.Int32" />
-    </class>
-    <class name="ComRegisterFunctionAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComRegisterFunctionAttribute()" argnames="" />
-    </class>
-    <class name="ComUnregisterFunctionAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComUnregisterFunctionAttribute()" argnames="" />
-    </class>
-    <class name="ProgIdAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ProgIdAttribute(System.String)" argnames="progId" />
-        <property name="Value" propertytype="System.String" />
-    </class>
-    <class name="ImportedFromTypeLibAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ImportedFromTypeLibAttribute(System.String)" argnames="tlbFile" />
-        <property name="Value" propertytype="System.String" />
-    </class>
-    <class name="IDispatchImplAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="IDispatchImplAttribute(System.Runtime.InteropServices.IDispatchImplType)" argnames="implType" />
-        <constructor name="IDispatchImplAttribute(System.Int16)" argnames="implType" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.IDispatchImplType" />
-    </class>
-    <class name="ComSourceInterfacesAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComSourceInterfacesAttribute(System.String)" argnames="sourceInterfaces" />
-        <constructor name="ComSourceInterfacesAttribute(System.Type)" argnames="sourceInterface" />
-        <constructor name="ComSourceInterfacesAttribute(System.Type, System.Type)" argnames="sourceInterface1, sourceInterface2" />
-        <constructor name="ComSourceInterfacesAttribute(System.Type, System.Type, System.Type)" argnames="sourceInterface1, sourceInterface2, sourceInterface3" />
-        <constructor name="ComSourceInterfacesAttribute(System.Type, System.Type, System.Type, System.Type)" argnames="sourceInterface1, sourceInterface2, sourceInterface3, sourceInterface4" />
-        <property name="Value" propertytype="System.String" />
-    </class>
-    <class name="ComConversionLossAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComConversionLossAttribute()" argnames="" />
-    </class>
-    <class name="TypeLibTypeAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="TypeLibTypeAttribute(System.Runtime.InteropServices.TypeLibTypeFlags)" argnames="flags" />
-        <constructor name="TypeLibTypeAttribute(System.Int16)" argnames="flags" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.TypeLibTypeFlags" />
-    </class>
-    <class name="TypeLibFuncAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="TypeLibFuncAttribute(System.Runtime.InteropServices.TypeLibFuncFlags)" argnames="flags" />
-        <constructor name="TypeLibFuncAttribute(System.Int16)" argnames="flags" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.TypeLibFuncFlags" />
-    </class>
-    <class name="TypeLibVarAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="TypeLibVarAttribute(System.Runtime.InteropServices.TypeLibVarFlags)" argnames="flags" />
-        <constructor name="TypeLibVarAttribute(System.Int16)" argnames="flags" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.TypeLibVarFlags" />
-    </class>
-    <class name="MarshalAsAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType)" argnames="unmanagedType" />
-        <constructor name="MarshalAsAttribute(System.Int16)" argnames="unmanagedType" />
-        <field name="SafeArraySubType" />
-        <field name="SafeArrayUserDefinedSubType" />
-        <field name="ArraySubType" />
-        <field name="SizeParamIndex" />
-        <field name="SizeConst" />
-        <field name="MarshalType" />
-        <field name="MarshalTypeRef" />
-        <field name="MarshalCookie" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.UnmanagedType" />
-    </class>
-    <class name="ComImportAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComImportAttribute()" argnames="" />
-    </class>
-    <class name="GuidAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="GuidAttribute(System.String)" argnames="guid" />
-        <property name="Value" propertytype="System.String" />
-    </class>
-    <class name="PreserveSigAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="PreserveSigAttribute()" argnames="" />
-    </class>
-    <class name="InAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="InAttribute()" argnames="" />
-    </class>
-    <class name="OutAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="OutAttribute()" argnames="" />
-    </class>
-    <class name="OptionalAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="OptionalAttribute()" argnames="" />
-    </class>
-    <class name="DllImportAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="DllImportAttribute(System.String)" argnames="dllName" />
-        <field name="EntryPoint" />
-        <field name="CharSet" />
-        <field name="SetLastError" />
-        <field name="ExactSpelling" />
-        <field name="PreserveSig" />
-        <field name="CallingConvention" />
-        <property name="Value" propertytype="System.String" />
-    </class>
-    <class name="StructLayoutAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind)" argnames="layoutKind" />
-        <constructor name="StructLayoutAttribute(System.Int16)" argnames="layoutKind" />
-        <field name="Pack" />
-        <field name="Size" />
-        <field name="CharSet" />
-        <property name="Value" propertytype="System.Runtime.InteropServices.LayoutKind" />
-    </class>
-    <class name="FieldOffsetAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="FieldOffsetAttribute(System.Int32)" argnames="offset" />
-        <property name="Value" propertytype="System.Int32" />
-    </class>
-    <class name="ComAliasNameAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComAliasNameAttribute(System.String)" argnames="alias" />
-        <property name="Value" propertytype="System.String" />
-    </class>
-    <class name="AutomationProxyAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="AutomationProxyAttribute(System.Boolean)" argnames="val" />
-        <property name="Value" propertytype="System.Boolean" />
-    </class>
-    <class name="PrimaryInteropAssemblyAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="PrimaryInteropAssemblyAttribute(System.Int32, System.Int32)" argnames="major, minor" />
-        <property name="MajorVersion" propertytype="System.Int32" />
-        <property name="MinorVersion" propertytype="System.Int32" />
-    </class>
-    <class name="CoClassAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="CoClassAttribute(System.Type)" argnames="coClass" />
-        <property name="CoClass" propertytype="System.Type" />
-    </class>
-    <class name="ComEventInterfaceAttribute" namespace="System.Runtime.InteropServices">
-        <constructor name="ComEventInterfaceAttribute(System.Type, System.Type)" argnames="SourceInterface, EventProvider" />
-        <property name="SourceInterface" propertytype="System.Type" />
-        <property name="EventProvider" propertytype="System.Type" />
-    </class>
-    <class name="ExternalException" namespace="System.Runtime.InteropServices">
-        <constructor name="ExternalException()" argnames="" />
-        <constructor name="ExternalException(System.String)" argnames="message" />
-        <constructor name="ExternalException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="ExternalException(System.String, System.Int32)" argnames="message, errorCode" />
-        <constructor name="ExternalException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <property name="ErrorCode" propertytype="System.Int32" />
-    </class>
-    <class name="COMException" namespace="System.Runtime.InteropServices">
-        <constructor name="COMException()" argnames="" />
-        <constructor name="COMException(System.String)" argnames="message" />
-        <constructor name="COMException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="COMException(System.String, System.Int32)" argnames="message, errorCode" />
-        <constructor name="COMException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="CurrencyWrapper" namespace="System.Runtime.InteropServices">
-        <constructor name="CurrencyWrapper(System.Decimal)" argnames="obj" />
-        <constructor name="CurrencyWrapper(System.Object)" argnames="obj" />
-        <property name="WrappedObject" propertytype="System.Decimal" />
-    </class>
-    <class name="DispatchWrapper" namespace="System.Runtime.InteropServices">
-        <constructor name="DispatchWrapper(System.Object)" argnames="obj" />
-        <property name="WrappedObject" propertytype="System.Object" />
-    </class>
-    <class name="ErrorWrapper" namespace="System.Runtime.InteropServices">
-        <constructor name="ErrorWrapper(System.Int32)" argnames="errorCode" />
-        <constructor name="ErrorWrapper(System.Object)" argnames="errorCode" />
-        <constructor name="ErrorWrapper(System.Exception)" argnames="e" />
-        <property name="ErrorCode" propertytype="System.Int32" />
-    </class>
-    <class name="ExtensibleClassFactory" namespace="System.Runtime.InteropServices">
-        <method name="RegisterObjectCreationCallback(System.Runtime.InteropServices.ObjectCreationDelegate)" argnames="callback" returntype="System.Void" />
-    </class>
-    <class name="InvalidComObjectException" namespace="System.Runtime.InteropServices">
-        <constructor name="InvalidComObjectException()" argnames="" />
-        <constructor name="InvalidComObjectException(System.String)" argnames="message" />
-        <constructor name="InvalidComObjectException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="InvalidComObjectException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="InvalidOleVariantTypeException" namespace="System.Runtime.InteropServices">
-        <constructor name="InvalidOleVariantTypeException()" argnames="" />
-        <constructor name="InvalidOleVariantTypeException(System.String)" argnames="message" />
-        <constructor name="InvalidOleVariantTypeException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="InvalidOleVariantTypeException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="Marshal" namespace="System.Runtime.InteropServices">
-        <field name="SystemDefaultCharSize" />
-        <field name="SystemMaxDBCSCharSize" />
-        <method name="AllocHGlobal(System.IntPtr)" argnames="cb" returntype="System.IntPtr" />
-        <method name="AllocHGlobal(System.Int32)" argnames="cb" returntype="System.IntPtr" />
-        <method name="ReAllocHGlobal(System.IntPtr, System.IntPtr)" argnames="pv, cb" returntype="System.IntPtr" />
-        <method name="FreeHGlobal(System.IntPtr)" argnames="hglobal" returntype="System.Void" />
-        <method name="AllocCoTaskMem(System.Int32)" argnames="cb" returntype="System.IntPtr" />
-        <method name="ReAllocCoTaskMem(System.IntPtr, System.Int32)" argnames="pv, cb" returntype="System.IntPtr" />
-        <method name="FreeCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
-        <method name="FreeBSTR(System.IntPtr)" argnames="ptr" returntype="System.Void" />
-        <method name="StringToHGlobalAnsi(System.String)" argnames="s" returntype="System.IntPtr" />
-        <method name="StringToCoTaskMemAnsi(System.String)" argnames="s" returntype="System.IntPtr" />
-        <method name="PtrToStringAnsi(System.IntPtr)" argnames="ptr" returntype="System.String" />
-        <method name="PtrToStringAnsi(System.IntPtr, System.Int32)" argnames="ptr, len" returntype="System.String" />
-        <method name="PtrToStringUni(System.IntPtr, System.Int32)" argnames="ptr, len" returntype="System.String" />
-        <method name="PtrToStringAuto(System.IntPtr, System.Int32)" argnames="ptr, len" returntype="System.String" />
-        <method name="StringToHGlobalUni(System.String)" argnames="s" returntype="System.IntPtr" />
-        <method name="StringToCoTaskMemUni(System.String)" argnames="s" returntype="System.IntPtr" />
-        <method name="PtrToStringUni(System.IntPtr)" argnames="ptr" returntype="System.String" />
-        <method name="StringToHGlobalAuto(System.String)" argnames="s" returntype="System.IntPtr" />
-        <method name="StringToCoTaskMemAuto(System.String)" argnames="s" returntype="System.IntPtr" />
-        <method name="PtrToStringAuto(System.IntPtr)" argnames="ptr" returntype="System.String" />
-        <method name="StringToBSTR(System.String)" argnames="s" returntype="System.IntPtr" />
-        <method name="PtrToStringBSTR(System.IntPtr)" argnames="ptr" returntype="System.String" />
-        <method name="SizeOf(System.Object)" argnames="structure" returntype="System.Int32" />
-        <method name="SizeOf(System.Type)" argnames="t" returntype="System.Int32" />
-        <method name="OffsetOf(System.Type, System.String)" argnames="t, fieldName" returntype="System.IntPtr" />
-        <method name="UnsafeAddrOfPinnedArrayElement(System.Array, System.Int32)" argnames="arr, index" returntype="System.IntPtr" />
-        <method name="Copy(System.Int32[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
-        <method name="Copy(System.Char[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
-        <method name="Copy(System.Int16[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
-        <method name="Copy(System.Int64[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
-        <method name="Copy(System.Single[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
-        <method name="Copy(System.Double[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
-        <method name="Copy(System.Byte[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
-        <method name="Copy(System.IntPtr, System.Int32[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
-        <method name="Copy(System.IntPtr, System.Char[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
-        <method name="Copy(System.IntPtr, System.Int16[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
-        <method name="Copy(System.IntPtr, System.Int64[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
-        <method name="Copy(System.IntPtr, System.Single[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
-        <method name="Copy(System.IntPtr, System.Double[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
-        <method name="Copy(System.IntPtr, System.Byte[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
-        <method name="ReadByte(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Byte" />
-        <method name="ReadByte(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Byte" />
-        <method name="ReadByte(System.IntPtr)" argnames="ptr" returntype="System.Byte" />
-        <method name="ReadInt16(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Int16" />
-        <method name="ReadInt16(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Int16" />
-        <method name="ReadInt16(System.IntPtr)" argnames="ptr" returntype="System.Int16" />
-        <method name="ReadInt32(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Int32" />
-        <method name="ReadInt32(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Int32" />
-        <method name="ReadInt32(System.IntPtr)" argnames="ptr" returntype="System.Int32" />
-        <method name="ReadIntPtr(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.IntPtr" />
-        <method name="ReadIntPtr(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.IntPtr" />
-        <method name="ReadIntPtr(System.IntPtr)" argnames="ptr" returntype="System.IntPtr" />
-        <method name="ReadInt64(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Int64" />
-        <method name="ReadInt64(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Int64" />
-        <method name="ReadInt64(System.IntPtr)" argnames="ptr" returntype="System.Int64" />
-        <method name="WriteByte(System.IntPtr, System.Int32, System.Byte)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteByte(System.Object, System.Int32, System.Byte)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteByte(System.IntPtr, System.Byte)" argnames="ptr, val" returntype="System.Void" />
-        <method name="WriteInt16(System.IntPtr, System.Int32, System.Int16)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt16(System.Object, System.Int32, System.Int16)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt16(System.IntPtr, System.Int16)" argnames="ptr, val" returntype="System.Void" />
-        <method name="WriteInt16(System.IntPtr, System.Int32, System.Char)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt16(System.Object, System.Int32, System.Char)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt16(System.IntPtr, System.Char)" argnames="ptr, val" returntype="System.Void" />
-        <method name="WriteInt32(System.IntPtr, System.Int32, System.Int32)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt32(System.Object, System.Int32, System.Int32)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt32(System.IntPtr, System.Int32)" argnames="ptr, val" returntype="System.Void" />
-        <method name="WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteIntPtr(System.Object, System.Int32, System.IntPtr)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteIntPtr(System.IntPtr, System.IntPtr)" argnames="ptr, val" returntype="System.Void" />
-        <method name="WriteInt64(System.IntPtr, System.Int32, System.Int64)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt64(System.Object, System.Int32, System.Int64)" argnames="ptr, ofs, val" returntype="System.Void" />
-        <method name="WriteInt64(System.IntPtr, System.Int64)" argnames="ptr, val" returntype="System.Void" />
-        <method name="GetLastWin32Error()" argnames="" returntype="System.Int32" />
-        <method name="GetHRForLastWin32Error()" argnames="" returntype="System.Int32" />
-        <method name="Prelink(System.Reflection.MethodInfo)" argnames="m" returntype="System.Void" />
-        <method name="PrelinkAll(System.Type)" argnames="c" returntype="System.Void" />
-        <method name="NumParamBytes(System.Reflection.MethodInfo)" argnames="m" returntype="System.Int32" />
-        <method name="GetExceptionPointers()" argnames="" returntype="System.IntPtr" />
-        <method name="GetExceptionCode()" argnames="" returntype="System.Int32" />
-        <method name="GetTypeLibName(System.Runtime.InteropServices.UCOMITypeLib)" argnames="pTLB" returntype="System.String" />
-        <method name="GetTypeLibGuid(System.Runtime.InteropServices.UCOMITypeLib)" argnames="pTLB" returntype="System.Guid" />
-        <method name="GetTypeLibLcid(System.Runtime.InteropServices.UCOMITypeLib)" argnames="pTLB" returntype="System.Int32" />
-        <method name="GetTypeLibGuidForAssembly(System.Reflection.Assembly)" argnames="asm" returntype="System.Guid" />
-        <method name="GetTypeInfoName(System.Runtime.InteropServices.UCOMITypeInfo)" argnames="pTI" returntype="System.String" />
-        <method name="GetTypeForITypeInfo(System.IntPtr)" argnames="piTypeInfo" returntype="System.Type" />
-        <method name="GetITypeInfoForType(System.Type)" argnames="t" returntype="System.IntPtr" />
-        <method name="GetIUnknownForObject(System.Object)" argnames="o" returntype="System.IntPtr" />
-        <method name="GetIDispatchForObject(System.Object)" argnames="o" returntype="System.IntPtr" />
-        <method name="GetComInterfaceForObject(System.Object, System.Type)" argnames="o, T" returntype="System.IntPtr" />
-        <method name="GetObjectForIUnknown(System.IntPtr)" argnames="pUnk" returntype="System.Object" />
-        <method name="GetTypedObjectForIUnknown(System.IntPtr, System.Type)" argnames="pUnk, t" returntype="System.Object" />
-        <method name="IsComObject(System.Object)" argnames="o" returntype="System.Boolean" />
-        <method name="ReleaseComObject(System.Object)" argnames="o" returntype="System.Int32" />
-        <method name="GetComObjectData(System.Object, System.Object)" argnames="obj, key" returntype="System.Object" />
-        <method name="SetComObjectData(System.Object, System.Object, System.Object)" argnames="obj, key, data" returntype="System.Boolean" />
-        <method name="CreateWrapperOfType(System.Object, System.Type)" argnames="o, t" returntype="System.Object" />
-        <method name="ReleaseThreadCache()" argnames="" returntype="System.Void" />
-        <method name="GetThreadFromFiberCookie(System.Int32)" argnames="cookie" returntype="System.Threading.Thread" />
-        <method name="IsTypeVisibleFromCom(System.Type)" argnames="t" returntype="System.Boolean" />
-        <method name="QueryInterface(System.IntPtr, System.Guid&amp;, System.IntPtr&amp;)" argnames="pUnk, iid, ppv" returntype="System.Int32" />
-        <method name="AddRef(System.IntPtr)" argnames="pUnk" returntype="System.Int32" />
-        <method name="Release(System.IntPtr)" argnames="pUnk" returntype="System.Int32" />
-        <method name="StructureToPtr(System.Object, System.IntPtr, System.Boolean)" argnames="structure, ptr, fDeleteOld" returntype="System.Void" />
-        <method name="PtrToStructure(System.IntPtr, System.Object)" argnames="ptr, structure" returntype="System.Void" />
-        <method name="PtrToStructure(System.IntPtr, System.Type)" argnames="ptr, structureType" returntype="System.Object" />
-        <method name="DestroyStructure(System.IntPtr, System.Type)" argnames="ptr, structuretype" returntype="System.Void" />
-        <method name="GetNativeVariantForObject(System.Object, System.IntPtr)" argnames="obj, pDstNativeVariant" returntype="System.Void" />
-        <method name="GetObjectForNativeVariant(System.IntPtr)" argnames="pSrcNativeVariant" returntype="System.Object" />
-        <method name="GetObjectsForNativeVariants(System.IntPtr, System.Int32)" argnames="aSrcNativeVariant, cVars" returntype="System.Object[]" />
-        <method name="GetStartComSlot(System.Type)" argnames="t" returntype="System.Int32" />
-        <method name="GetEndComSlot(System.Type)" argnames="t" returntype="System.Int32" />
-        <method name="GetMethodInfoForComSlot(System.Type, System.Int32, System.Runtime.InteropServices.ComMemberType&amp;)" argnames="t, slot, memberType" returntype="System.Reflection.MemberInfo" />
-        <method name="GetComSlotForMethodInfo(System.Reflection.MemberInfo)" argnames="m" returntype="System.Int32" />
-        <method name="GetHINSTANCE(System.Reflection.Module)" argnames="m" returntype="System.IntPtr" />
-        <method name="ThrowExceptionForHR(System.Int32)" argnames="errorCode" returntype="System.Void" />
-        <method name="ThrowExceptionForHR(System.Int32, System.IntPtr)" argnames="errorCode, errorInfo" returntype="System.Void" />
-        <method name="GetHRForException(System.Exception)" argnames="e" returntype="System.Int32" />
-        <method name="GenerateGuidForType(System.Type)" argnames="type" returntype="System.Guid" />
-        <method name="GenerateProgIdForType(System.Type)" argnames="type" returntype="System.String" />
-        <method name="BindToMoniker(System.String)" argnames="monikerName" returntype="System.Object" />
-        <method name="GetActiveObject(System.String)" argnames="progID" returntype="System.Object" />
-        <method name="GetUnmanagedThunkForManagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)" argnames="pfnMethodToWrap, pbSignature, cbSignature" returntype="System.IntPtr" />
-        <method name="GetManagedThunkForUnmanagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)" argnames="pfnMethodToWrap, pbSignature, cbSignature" returntype="System.IntPtr" />
-        <method name="ChangeWrapperHandleStrength(System.Object, System.Boolean)" argnames="otp, fIsWeak" returntype="System.Void" />
-    </class>
-    <class name="MarshalDirectiveException" namespace="System.Runtime.InteropServices">
-        <constructor name="MarshalDirectiveException()" argnames="" />
-        <constructor name="MarshalDirectiveException(System.String)" argnames="message" />
-        <constructor name="MarshalDirectiveException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="MarshalDirectiveException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="RuntimeEnvironment" namespace="System.Runtime.InteropServices">
-        <constructor name="RuntimeEnvironment()" argnames="" />
-        <property name="SystemConfigurationFile" propertytype="System.String" />
-        <method name="FromGlobalAccessCache(System.Reflection.Assembly)" argnames="a" returntype="System.Boolean" />
-        <method name="GetSystemVersion()" argnames="" returntype="System.String" />
-        <method name="GetRuntimeDirectory()" argnames="" returntype="System.String" />
-    </class>
-    <class name="RegistrationServices" namespace="System.Runtime.InteropServices">
-        <constructor name="RegistrationServices()" argnames="" />
-        <method name="TypeRepresentsComType(System.Type)" argnames="type" returntype="System.Boolean" />
-        <method name="TypeRequiresRegistration(System.Type)" argnames="type" returntype="System.Boolean" />
-        <method name="GetManagedCategoryGuid()" argnames="" returntype="System.Guid" />
-        <method name="RegisterTypeForComClients(System.Type, System.Guid&amp;)" argnames="type, g" returntype="System.Void" />
-        <method name="GetProgIdForType(System.Type)" argnames="type" returntype="System.String" />
-        <method name="GetRegistrableTypesInAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Type[]" />
-        <method name="UnregisterAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Boolean" />
-        <method name="RegisterAssembly(System.Reflection.Assembly, System.Runtime.InteropServices.AssemblyRegistrationFlags)" argnames="assembly, flags" returntype="System.Boolean" />
-    </class>
-    <class name="SafeArrayRankMismatchException" namespace="System.Runtime.InteropServices">
-        <constructor name="SafeArrayRankMismatchException()" argnames="" />
-        <constructor name="SafeArrayRankMismatchException(System.String)" argnames="message" />
-        <constructor name="SafeArrayRankMismatchException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="SafeArrayRankMismatchException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="SafeArrayTypeMismatchException" namespace="System.Runtime.InteropServices">
-        <constructor name="SafeArrayTypeMismatchException()" argnames="" />
-        <constructor name="SafeArrayTypeMismatchException(System.String)" argnames="message" />
-        <constructor name="SafeArrayTypeMismatchException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="SafeArrayTypeMismatchException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <class name="SEHException" namespace="System.Runtime.InteropServices">
-        <constructor name="SEHException()" argnames="" />
-        <constructor name="SEHException(System.String)" argnames="message" />
-        <constructor name="SEHException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="SEHException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-        <method name="CanResume()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="TypeLibConverter" namespace="System.Runtime.InteropServices">
-        <constructor name="TypeLibConverter()" argnames="" />
-        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Int32, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.Boolean)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, unsafeInterfaces" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="GetPrimaryInteropAssembly(System.Guid, System.Int32, System.Int32, System.Int32, System.String&amp;, System.String&amp;)" argnames="g, major, minor, lcid, asmName, asmCodeBase" returntype="System.Boolean" />
-        <method name="ConvertAssemblyToTypeLib(System.Reflection.Assembly, System.String, System.Runtime.InteropServices.TypeLibExporterFlags, System.Runtime.InteropServices.ITypeLibExporterNotifySink)" argnames="assembly, strTypeLibName, flags, notifySink" returntype="System.Object" />
-        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Runtime.InteropServices.TypeLibImporterFlags, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.String, System.Version)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, asmNamespace, asmVersion" returntype="System.Reflection.Emit.AssemblyBuilder" />
-    </class>
-    <class name="UnknownWrapper" namespace="System.Runtime.InteropServices">
-        <constructor name="UnknownWrapper(System.Object)" argnames="obj" />
-        <property name="WrappedObject" propertytype="System.Object" />
-    </class>
-    <interface name="ICustomAdapter" namespace="System.Runtime.InteropServices">
-        <method name="GetUnderlyingObject()" argnames="" returntype="System.Object" />
-    </interface>
-    <interface name="ICustomMarshaler" namespace="System.Runtime.InteropServices">
-        <method name="GetNativeDataSize()" argnames="" returntype="System.Int32" />
-        <method name="CleanUpManagedData(System.Object)" argnames="ManagedObj" returntype="System.Void" />
-        <method name="CleanUpNativeData(System.IntPtr)" argnames="pNativeData" returntype="System.Void" />
-        <method name="MarshalManagedToNative(System.Object)" argnames="ManagedObj" returntype="System.IntPtr" />
-        <method name="MarshalNativeToManaged(System.IntPtr)" argnames="pNativeData" returntype="System.Object" />
-    </interface>
-    <interface name="ICustomFactory" namespace="System.Runtime.InteropServices">
-        <method name="CreateInstance(System.Type)" argnames="serverType" returntype="System.MarshalByRefObject" />
-    </interface>
-    <interface name="IRegistrationServices" namespace="System.Runtime.InteropServices">
-        <method name="TypeRepresentsComType(System.Type)" argnames="type" returntype="System.Boolean" />
-        <method name="TypeRequiresRegistration(System.Type)" argnames="type" returntype="System.Boolean" />
-        <method name="GetManagedCategoryGuid()" argnames="" returntype="System.Guid" />
-        <method name="RegisterTypeForComClients(System.Type, System.Guid&amp;)" argnames="type, g" returntype="System.Void" />
-        <method name="GetProgIdForType(System.Type)" argnames="type" returntype="System.String" />
-        <method name="GetRegistrableTypesInAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Type[]" />
-        <method name="UnregisterAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Boolean" />
-        <method name="RegisterAssembly(System.Reflection.Assembly, System.Runtime.InteropServices.AssemblyRegistrationFlags)" argnames="assembly, flags" returntype="System.Boolean" />
-    </interface>
-    <interface name="ITypeLibImporterNotifySink" namespace="System.Runtime.InteropServices">
-        <method name="ResolveRef(System.Object)" argnames="typeLib" returntype="System.Reflection.Assembly" />
-        <method name="ReportEvent(System.Runtime.InteropServices.ImporterEventKind, System.Int32, System.String)" argnames="eventKind, eventCode, eventMsg" returntype="System.Void" />
-    </interface>
-    <interface name="ITypeLibExporterNotifySink" namespace="System.Runtime.InteropServices">
-        <method name="ResolveRef(System.Reflection.Assembly)" argnames="assembly" returntype="System.Object" />
-        <method name="ReportEvent(System.Runtime.InteropServices.ExporterEventKind, System.Int32, System.String)" argnames="eventKind, eventCode, eventMsg" returntype="System.Void" />
-    </interface>
-    <interface name="ITypeLibConverter" namespace="System.Runtime.InteropServices">
-        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Int32, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.Boolean)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, unsafeInterfaces" returntype="System.Reflection.Emit.AssemblyBuilder" />
-        <method name="GetPrimaryInteropAssembly(System.Guid, System.Int32, System.Int32, System.Int32, System.String&amp;, System.String&amp;)" argnames="g, major, minor, lcid, asmName, asmCodeBase" returntype="System.Boolean" />
-        <method name="ConvertAssemblyToTypeLib(System.Reflection.Assembly, System.String, System.Runtime.InteropServices.TypeLibExporterFlags, System.Runtime.InteropServices.ITypeLibExporterNotifySink)" argnames="assembly, typeLibName, flags, notifySink" returntype="System.Object" />
-        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Runtime.InteropServices.TypeLibImporterFlags, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.String, System.Version)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, asmNamespace, asmVersion" returntype="System.Reflection.Emit.AssemblyBuilder" />
-    </interface>
-    <interface name="ITypeLibExporterNameProvider" namespace="System.Runtime.InteropServices">
-        <method name="GetNames()" argnames="" returntype="System.String[]" />
-    </interface>
-    <interface name="UCOMIBindCtx" namespace="System.Runtime.InteropServices">
-        <method name="RevokeObjectParam(System.String)" argnames="pszKey" returntype="System.Void" />
-        <method name="EnumObjectParam(System.Runtime.InteropServices.UCOMIEnumString&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="GetObjectParam(System.String, System.Object&amp;)" argnames="pszKey, ppunk" returntype="System.Void" />
-        <method name="RegisterObjectParam(System.String, System.Object)" argnames="pszKey, punk" returntype="System.Void" />
-        <method name="GetRunningObjectTable(System.Runtime.InteropServices.UCOMIRunningObjectTable&amp;)" argnames="pprot" returntype="System.Void" />
-        <method name="GetBindOptions(System.Runtime.InteropServices.BIND_OPTS&amp;)" argnames="pbindopts" returntype="System.Void" />
-        <method name="SetBindOptions(System.Runtime.InteropServices.BIND_OPTS&amp;)" argnames="pbindopts" returntype="System.Void" />
-        <method name="ReleaseBoundObjects()" argnames="" returntype="System.Void" />
-        <method name="RevokeObjectBound(System.Object)" argnames="punk" returntype="System.Void" />
-        <method name="RegisterObjectBound(System.Object)" argnames="punk" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMIConnectionPointContainer" namespace="System.Runtime.InteropServices">
-        <method name="FindConnectionPoint(System.Guid&amp;, System.Runtime.InteropServices.UCOMIConnectionPoint&amp;)" argnames="riid, ppCP" returntype="System.Void" />
-        <method name="EnumConnectionPoints(System.Runtime.InteropServices.UCOMIEnumConnectionPoints&amp;)" argnames="ppEnum" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMIConnectionPoint" namespace="System.Runtime.InteropServices">
-        <method name="EnumConnections(System.Runtime.InteropServices.UCOMIEnumConnections&amp;)" argnames="ppEnum" returntype="System.Void" />
-        <method name="Unadvise(System.Int32)" argnames="dwCookie" returntype="System.Void" />
-        <method name="Advise(System.Object, System.Int32&amp;)" argnames="pUnkSink, pdwCookie" returntype="System.Void" />
-        <method name="GetConnectionPointContainer(System.Runtime.InteropServices.UCOMIConnectionPointContainer&amp;)" argnames="ppCPC" returntype="System.Void" />
-        <method name="GetConnectionInterface(System.Guid&amp;)" argnames="pIID" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMIEnumMoniker" namespace="System.Runtime.InteropServices">
-        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumMoniker&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset()" argnames="" returntype="System.Int32" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Runtime.InteropServices.UCOMIMoniker[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="UCOMIEnumConnections" namespace="System.Runtime.InteropServices">
-        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumConnections&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset()" argnames="" returntype="System.Void" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Runtime.InteropServices.CONNECTDATA[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="UCOMIEnumConnectionPoints" namespace="System.Runtime.InteropServices">
-        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumConnectionPoints&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset()" argnames="" returntype="System.Int32" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Runtime.InteropServices.UCOMIConnectionPoint[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="UCOMIEnumString" namespace="System.Runtime.InteropServices">
-        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumString&amp;)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset()" argnames="" returntype="System.Int32" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.String[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="UCOMIEnumVARIANT" namespace="System.Runtime.InteropServices">
-        <method name="Clone(System.Int32)" argnames="ppenum" returntype="System.Void" />
-        <method name="Reset()" argnames="" returntype="System.Int32" />
-        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
-        <method name="Next(System.Int32, System.Int32, System.Int32)" argnames="celt, rgvar, pceltFetched" returntype="System.Int32" />
-    </interface>
-    <interface name="UCOMIMoniker" namespace="System.Runtime.InteropServices">
-        <method name="IsSystemMoniker(System.Int32&amp;)" argnames="pdwMksys" returntype="System.Void" />
-        <method name="ParseDisplayName(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.String, System.Int32&amp;, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pbc, pmkToLeft, pszDisplayName, pchEaten, ppmkOut" returntype="System.Void" />
-        <method name="GetDisplayName(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.String&amp;)" argnames="pbc, pmkToLeft, ppszDisplayName" returntype="System.Void" />
-        <method name="RelativePathTo(System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pmkOther, ppmkRelPath" returntype="System.Void" />
-        <method name="CommonPrefixWith(System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pmkOther, ppmkPrefix" returntype="System.Void" />
-        <method name="Inverse(System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="ppmk" returntype="System.Void" />
-        <method name="GetTimeOfLastChange(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.FILETIME&amp;)" argnames="pbc, pmkToLeft, pFileTime" returntype="System.Void" />
-        <method name="IsRunning(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.UCOMIMoniker)" argnames="pbc, pmkToLeft, pmkNewlyRunning" returntype="System.Void" />
-        <method name="Hash(System.Int32&amp;)" argnames="pdwHash" returntype="System.Void" />
-        <method name="IsEqual(System.Runtime.InteropServices.UCOMIMoniker)" argnames="pmkOtherMoniker" returntype="System.Void" />
-        <method name="Enum(System.Boolean, System.Runtime.InteropServices.UCOMIEnumMoniker&amp;)" argnames="fForward, ppenumMoniker" returntype="System.Void" />
-        <method name="ComposeWith(System.Runtime.InteropServices.UCOMIMoniker, System.Boolean, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pmkRight, fOnlyIfNotGeneric, ppmkComposite" returntype="System.Void" />
-        <method name="Reduce(System.Runtime.InteropServices.UCOMIBindCtx, System.Int32, System.Runtime.InteropServices.UCOMIMoniker&amp;, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced" returntype="System.Void" />
-        <method name="BindToStorage(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Guid&amp;, System.Object&amp;)" argnames="pbc, pmkToLeft, riid, ppvObj" returntype="System.Void" />
-        <method name="BindToObject(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Guid&amp;, System.Object&amp;)" argnames="pbc, pmkToLeft, riidResult, ppvResult" returntype="System.Void" />
-        <method name="GetSizeMax(System.Int64&amp;)" argnames="pcbSize" returntype="System.Void" />
-        <method name="Save(System.Runtime.InteropServices.UCOMIStream, System.Boolean)" argnames="pStm, fClearDirty" returntype="System.Void" />
-        <method name="Load(System.Runtime.InteropServices.UCOMIStream)" argnames="pStm" returntype="System.Void" />
-        <method name="IsDirty()" argnames="" returntype="System.Int32" />
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMIPersistFile" namespace="System.Runtime.InteropServices">
-        <method name="GetCurFile(System.String&amp;)" argnames="ppszFileName" returntype="System.Void" />
-        <method name="SaveCompleted(System.String)" argnames="pszFileName" returntype="System.Void" />
-        <method name="Save(System.String, System.Boolean)" argnames="pszFileName, fRemember" returntype="System.Void" />
-        <method name="Load(System.String, System.Int32)" argnames="pszFileName, dwMode" returntype="System.Void" />
-        <method name="IsDirty()" argnames="" returntype="System.Int32" />
-        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMIRunningObjectTable" namespace="System.Runtime.InteropServices">
-        <method name="EnumRunning(System.Runtime.InteropServices.UCOMIEnumMoniker&amp;)" argnames="ppenumMoniker" returntype="System.Void" />
-        <method name="GetTimeOfLastChange(System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.FILETIME&amp;)" argnames="pmkObjectName, pfiletime" returntype="System.Void" />
-        <method name="NoteChangeTime(System.Int32, System.Runtime.InteropServices.FILETIME&amp;)" argnames="dwRegister, pfiletime" returntype="System.Void" />
-        <method name="GetObject(System.Runtime.InteropServices.UCOMIMoniker, System.Object&amp;)" argnames="pmkObjectName, ppunkObject" returntype="System.Void" />
-        <method name="IsRunning(System.Runtime.InteropServices.UCOMIMoniker)" argnames="pmkObjectName" returntype="System.Void" />
-        <method name="Revoke(System.Int32)" argnames="dwRegister" returntype="System.Void" />
-        <method name="Register(System.Int32, System.Object, System.Runtime.InteropServices.UCOMIMoniker, System.Int32&amp;)" argnames="grfFlags, punkObject, pmkObjectName, pdwRegister" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMIStream" namespace="System.Runtime.InteropServices">
-        <method name="Clone(System.Runtime.InteropServices.UCOMIStream&amp;)" argnames="ppstm" returntype="System.Void" />
-        <method name="Stat(System.Runtime.InteropServices.STATSTG&amp;, System.Int32)" argnames="pstatstg, grfStatFlag" returntype="System.Void" />
-        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
-        <method name="Revert()" argnames="" returntype="System.Void" />
-        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
-        <method name="CopyTo(System.Runtime.InteropServices.UCOMIStream, System.Int64, System.IntPtr, System.IntPtr)" argnames="pstm, cb, pcbRead, pcbWritten" returntype="System.Void" />
-        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.Int32, System.IntPtr)" argnames="dlibMove, dwOrigin, plibNewPosition" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.IntPtr)" argnames="pv, cb, pcbWritten" returntype="System.Void" />
-        <method name="Read(System.Byte[], System.Int32, System.IntPtr)" argnames="pv, cb, pcbRead" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMITypeComp" namespace="System.Runtime.InteropServices">
-        <method name="BindType(System.String, System.Int32, System.Runtime.InteropServices.UCOMITypeInfo&amp;, System.Runtime.InteropServices.UCOMITypeComp&amp;)" argnames="szName, lHashVal, ppTInfo, ppTComp" returntype="System.Void" />
-        <method name="Bind(System.String, System.Int32, System.Int16, System.Runtime.InteropServices.UCOMITypeInfo&amp;, System.Runtime.InteropServices.DESCKIND&amp;, System.Runtime.InteropServices.BINDPTR&amp;)" argnames="szName, lHashVal, wFlags, ppTInfo, pDescKind, pBindPtr" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMITypeInfo" namespace="System.Runtime.InteropServices">
-        <method name="ReleaseVarDesc(System.IntPtr)" argnames="pVarDesc" returntype="System.Void" />
-        <method name="ReleaseFuncDesc(System.IntPtr)" argnames="pFuncDesc" returntype="System.Void" />
-        <method name="ReleaseTypeAttr(System.IntPtr)" argnames="pTypeAttr" returntype="System.Void" />
-        <method name="GetContainingTypeLib(System.Runtime.InteropServices.UCOMITypeLib&amp;, System.Int32&amp;)" argnames="ppTLB, pIndex" returntype="System.Void" />
-        <method name="GetMops(System.Int32, System.String&amp;)" argnames="memid, pBstrMops" returntype="System.Void" />
-        <method name="CreateInstance(System.Object, System.Guid&amp;, System.Object&amp;)" argnames="pUnkOuter, riid, ppvObj" returntype="System.Void" />
-        <method name="AddressOfMember(System.Int32, System.Runtime.InteropServices.INVOKEKIND, System.IntPtr&amp;)" argnames="memid, invKind, ppv" returntype="System.Void" />
-        <method name="GetRefTypeInfo(System.Int32, System.Runtime.InteropServices.UCOMITypeInfo&amp;)" argnames="hRef, ppTI" returntype="System.Void" />
-        <method name="GetDllEntry(System.Int32, System.Runtime.InteropServices.INVOKEKIND, System.String&amp;, System.String&amp;, System.Int16&amp;)" argnames="memid, invKind, pBstrDllName, pBstrName, pwOrdinal" returntype="System.Void" />
-        <method name="GetDocumentation(System.Int32, System.String&amp;, System.String&amp;, System.Int32&amp;, System.String&amp;)" argnames="index, strName, strDocString, dwHelpContext, strHelpFile" returntype="System.Void" />
-        <method name="Invoke(System.Object, System.Int32, System.Int16, System.Runtime.InteropServices.DISPPARAMS&amp;, System.Object&amp;, System.Runtime.InteropServices.EXCEPINFO&amp;, System.Int32&amp;)" argnames="pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr" returntype="System.Void" />
-        <method name="GetIDsOfNames(System.String[], System.Int32, System.Int32[])" argnames="rgszNames, cNames, pMemId" returntype="System.Void" />
-        <method name="GetImplTypeFlags(System.Int32, System.Int32&amp;)" argnames="index, pImplTypeFlags" returntype="System.Void" />
-        <method name="GetRefTypeOfImplType(System.Int32, System.Int32&amp;)" argnames="index, href" returntype="System.Void" />
-        <method name="GetNames(System.Int32, System.String[], System.Int32, System.Int32&amp;)" argnames="memid, rgBstrNames, cMaxNames, pcNames" returntype="System.Void" />
-        <method name="GetVarDesc(System.Int32, System.IntPtr&amp;)" argnames="index, ppVarDesc" returntype="System.Void" />
-        <method name="GetFuncDesc(System.Int32, System.IntPtr&amp;)" argnames="index, ppFuncDesc" returntype="System.Void" />
-        <method name="GetTypeComp(System.Runtime.InteropServices.UCOMITypeComp&amp;)" argnames="ppTComp" returntype="System.Void" />
-        <method name="GetTypeAttr(System.IntPtr&amp;)" argnames="ppTypeAttr" returntype="System.Void" />
-    </interface>
-    <interface name="UCOMITypeLib" namespace="System.Runtime.InteropServices">
-        <method name="ReleaseTLibAttr(System.IntPtr)" argnames="pTLibAttr" returntype="System.Void" />
-        <method name="FindName(System.String, System.Int32, System.Runtime.InteropServices.UCOMITypeInfo[], System.Int32[], System.Int16&amp;)" argnames="szNameBuf, lHashVal, ppTInfo, rgMemId, pcFound" returntype="System.Void" />
-        <method name="IsName(System.String, System.Int32)" argnames="szNameBuf, lHashVal" returntype="System.Boolean" />
-        <method name="GetDocumentation(System.Int32, System.String&amp;, System.String&amp;, System.Int32&amp;, System.String&amp;)" argnames="index, strName, strDocString, dwHelpContext, strHelpFile" returntype="System.Void" />
-        <method name="GetTypeComp(System.Runtime.InteropServices.UCOMITypeComp&amp;)" argnames="ppTComp" returntype="System.Void" />
-        <method name="GetLibAttr(System.IntPtr&amp;)" argnames="ppTLibAttr" returntype="System.Void" />
-        <method name="GetTypeInfoOfGuid(System.Guid&amp;, System.Runtime.InteropServices.UCOMITypeInfo&amp;)" argnames="guid, ppTInfo" returntype="System.Void" />
-        <method name="GetTypeInfoType(System.Int32, System.Runtime.InteropServices.TYPEKIND&amp;)" argnames="index, pTKind" returntype="System.Void" />
-        <method name="GetTypeInfo(System.Int32, System.Runtime.InteropServices.UCOMITypeInfo&amp;)" argnames="index, ppTI" returntype="System.Void" />
-        <method name="GetTypeInfoCount()" argnames="" returntype="System.Int32" />
-    </interface>
-    <struct name="ArrayWithOffset" namespace="System.Runtime.InteropServices">
-        <constructor name="ArrayWithOffset(System.Object, System.Int32)" argnames="array, offset" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="GetArray()" argnames="" returntype="System.Object" />
-        <method name="GetOffset()" argnames="" returntype="System.Int32" />
-    </struct>
-    <struct name="GCHandle" namespace="System.Runtime.InteropServices">
-        <property name="Target" propertytype="System.Object" />
-        <property name="__InternalTarget" propertytype="System.Object" />
-        <property name="IsAllocated" propertytype="System.Boolean" />
-        <method name="Alloc(System.Object)" argnames="value" returntype="System.Runtime.InteropServices.GCHandle" />
-        <method name="Alloc(System.Object, System.Runtime.InteropServices.GCHandleType)" argnames="value, type" returntype="System.Runtime.InteropServices.GCHandle" />
-        <method name="Free()" argnames="" returntype="System.Void" />
-        <method name="AddrOfPinnedObject()" argnames="" returntype="System.IntPtr" />
-        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
-        <operator name="op_Explicit(System.Runtime.InteropServices.GCHandle)" argnames="value" />
-    </struct>
-    <struct name="HandleRef" namespace="System.Runtime.InteropServices">
-        <constructor name="HandleRef(System.Object, System.IntPtr)" argnames="wrapper, handle" />
-        <property name="Wrapper" propertytype="System.Object" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <operator name="op_Explicit(System.Runtime.InteropServices.HandleRef)" argnames="value" />
-    </struct>
-    <struct name="BIND_OPTS" namespace="System.Runtime.InteropServices">
-        <field name="cbStruct" />
-        <field name="grfFlags" />
-        <field name="grfMode" />
-        <field name="dwTickCountDeadline" />
-    </struct>
-    <struct name="CONNECTDATA" namespace="System.Runtime.InteropServices">
-        <field name="pUnk" />
-        <field name="dwCookie" />
-    </struct>
-    <struct name="FILETIME" namespace="System.Runtime.InteropServices">
-        <field name="dwLowDateTime" />
-        <field name="dwHighDateTime" />
-    </struct>
-    <struct name="STATSTG" namespace="System.Runtime.InteropServices">
-        <field name="pwcsName" />
-        <field name="type" />
-        <field name="cbSize" />
-        <field name="mtime" />
-        <field name="ctime" />
-        <field name="atime" />
-        <field name="grfMode" />
-        <field name="grfLocksSupported" />
-        <field name="clsid" />
-        <field name="grfStateBits" />
-        <field name="reserved" />
-    </struct>
-    <struct name="BINDPTR" namespace="System.Runtime.InteropServices">
-        <field name="lpfuncdesc" />
-        <field name="lpvardesc" />
-        <field name="lptcomp" />
-    </struct>
-    <struct name="TYPEATTR" namespace="System.Runtime.InteropServices">
-        <field name="guid" />
-        <field name="lcid" />
-        <field name="dwReserved" />
-        <field name="memidConstructor" />
-        <field name="memidDestructor" />
-        <field name="lpstrSchema" />
-        <field name="cbSizeInstance" />
-        <field name="typekind" />
-        <field name="cFuncs" />
-        <field name="cVars" />
-        <field name="cImplTypes" />
-        <field name="cbSizeVft" />
-        <field name="cbAlignment" />
-        <field name="wTypeFlags" />
-        <field name="wMajorVerNum" />
-        <field name="wMinorVerNum" />
-        <field name="tdescAlias" />
-        <field name="idldescType" />
-        <field name="MEMBER_ID_NIL" />
-    </struct>
-    <struct name="FUNCDESC" namespace="System.Runtime.InteropServices">
-        <field name="memid" />
-        <field name="lprgscode" />
-        <field name="lprgelemdescParam" />
-        <field name="funckind" />
-        <field name="invkind" />
-        <field name="callconv" />
-        <field name="cParams" />
-        <field name="cParamsOpt" />
-        <field name="oVft" />
-        <field name="cScodes" />
-        <field name="elemdescFunc" />
-        <field name="wFuncFlags" />
-    </struct>
-    <struct name="IDLDESC" namespace="System.Runtime.InteropServices">
-        <field name="dwReserved" />
-        <field name="wIDLFlags" />
-    </struct>
-    <struct name="PARAMDESC" namespace="System.Runtime.InteropServices">
-        <field name="lpVarValue" />
-        <field name="wParamFlags" />
-    </struct>
-    <struct name="TYPEDESC" namespace="System.Runtime.InteropServices">
-        <field name="lpValue" />
-        <field name="vt" />
-    </struct>
-    <struct name="ELEMDESC" namespace="System.Runtime.InteropServices">
-        <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
-            <field name="idldesc" />
-            <field name="paramdesc" />
-        </struct>
-        <field name="tdesc" />
-        <field name="desc" />
-    </struct>
-    <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
-        <field name="idldesc" />
-        <field name="paramdesc" />
-    </struct>
-    <struct name="VARDESC" namespace="System.Runtime.InteropServices">
-        <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
-            <field name="oInst" />
-            <field name="lpvarValue" />
-        </struct>
-        <field name="memid" />
-        <field name="lpstrSchema" />
-        <field name="elemdescVar" />
-        <field name="wVarFlags" />
-        <field name="varkind" />
-    </struct>
-    <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
-        <field name="oInst" />
-        <field name="lpvarValue" />
-    </struct>
-    <struct name="DISPPARAMS" namespace="System.Runtime.InteropServices">
-        <field name="rgvarg" />
-        <field name="rgdispidNamedArgs" />
-        <field name="cArgs" />
-        <field name="cNamedArgs" />
-    </struct>
-    <struct name="EXCEPINFO" namespace="System.Runtime.InteropServices">
-        <field name="wCode" />
-        <field name="wReserved" />
-        <field name="bstrSource" />
-        <field name="bstrDescription" />
-        <field name="bstrHelpFile" />
-        <field name="dwHelpContext" />
-        <field name="pvReserved" />
-        <field name="pfnDeferredFillIn" />
-    </struct>
-    <struct name="TYPELIBATTR" namespace="System.Runtime.InteropServices">
-        <field name="guid" />
-        <field name="lcid" />
-        <field name="syskind" />
-        <field name="wMajorVerNum" />
-        <field name="wMinorVerNum" />
-        <field name="wLibFlags" />
-    </struct>
-    <delegate name="ObjectCreationDelegate" namespace="System.Runtime.InteropServices">
-        <constructor name="ObjectCreationDelegate(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
-        <method name="BeginInvoke(System.IntPtr, System.AsyncCallback, System.Object)" argnames="aggregator, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.IntPtr)" argnames="aggregator" returntype="System.IntPtr" />
-    </delegate>
-    <enum name="ComInterfaceType" namespace="System.Runtime.InteropServices">
-        <field name="InterfaceIsDual" />
-        <field name="InterfaceIsIUnknown" />
-        <field name="InterfaceIsIDispatch" />
-    </enum>
-    <enum name="ClassInterfaceType" namespace="System.Runtime.InteropServices">
-        <field name="None" />
-        <field name="AutoDispatch" />
-        <field name="AutoDual" />
-    </enum>
-    <enum name="IDispatchImplType" namespace="System.Runtime.InteropServices">
-        <field name="SystemDefinedImpl" />
-        <field name="InternalImpl" />
-        <field name="CompatibleImpl" />
-    </enum>
-    <enum name="TypeLibTypeFlags" namespace="System.Runtime.InteropServices">
-        <field name="FAppObject" />
-        <field name="FCanCreate" />
-        <field name="FLicensed" />
-        <field name="FPreDeclId" />
-        <field name="FHidden" />
-        <field name="FControl" />
-        <field name="FDual" />
-        <field name="FNonExtensible" />
-        <field name="FOleAutomation" />
-        <field name="FRestricted" />
-        <field name="FAggregatable" />
-        <field name="FReplaceable" />
-        <field name="FDispatchable" />
-        <field name="FReverseBind" />
-    </enum>
-    <enum name="TypeLibFuncFlags" namespace="System.Runtime.InteropServices">
-        <field name="FRestricted" />
-        <field name="FSource" />
-        <field name="FBindable" />
-        <field name="FRequestEdit" />
-        <field name="FDisplayBind" />
-        <field name="FDefaultBind" />
-        <field name="FHidden" />
-        <field name="FUsesGetLastError" />
-        <field name="FDefaultCollelem" />
-        <field name="FUiDefault" />
-        <field name="FNonBrowsable" />
-        <field name="FReplaceable" />
-        <field name="FImmediateBind" />
-    </enum>
-    <enum name="TypeLibVarFlags" namespace="System.Runtime.InteropServices">
-        <field name="FReadOnly" />
-        <field name="FSource" />
-        <field name="FBindable" />
-        <field name="FRequestEdit" />
-        <field name="FDisplayBind" />
-        <field name="FDefaultBind" />
-        <field name="FHidden" />
-        <field name="FRestricted" />
-        <field name="FDefaultCollelem" />
-        <field name="FUiDefault" />
-        <field name="FNonBrowsable" />
-        <field name="FReplaceable" />
-        <field name="FImmediateBind" />
-    </enum>
-    <enum name="VarEnum" namespace="System.Runtime.InteropServices">
-        <field name="VT_EMPTY" />
-        <field name="VT_NULL" />
-        <field name="VT_I2" />
-        <field name="VT_I4" />
-        <field name="VT_R4" />
-        <field name="VT_R8" />
-        <field name="VT_CY" />
-        <field name="VT_DATE" />
-        <field name="VT_BSTR" />
-        <field name="VT_DISPATCH" />
-        <field name="VT_ERROR" />
-        <field name="VT_BOOL" />
-        <field name="VT_VARIANT" />
-        <field name="VT_UNKNOWN" />
-        <field name="VT_DECIMAL" />
-        <field name="VT_I1" />
-        <field name="VT_UI1" />
-        <field name="VT_UI2" />
-        <field name="VT_UI4" />
-        <field name="VT_I8" />
-        <field name="VT_UI8" />
-        <field name="VT_INT" />
-        <field name="VT_UINT" />
-        <field name="VT_VOID" />
-        <field name="VT_HRESULT" />
-        <field name="VT_PTR" />
-        <field name="VT_SAFEARRAY" />
-        <field name="VT_CARRAY" />
-        <field name="VT_USERDEFINED" />
-        <field name="VT_LPSTR" />
-        <field name="VT_LPWSTR" />
-        <field name="VT_RECORD" />
-        <field name="VT_FILETIME" />
-        <field name="VT_BLOB" />
-        <field name="VT_STREAM" />
-        <field name="VT_STORAGE" />
-        <field name="VT_STREAMED_OBJECT" />
-        <field name="VT_STORED_OBJECT" />
-        <field name="VT_BLOB_OBJECT" />
-        <field name="VT_CF" />
-        <field name="VT_CLSID" />
-        <field name="VT_VECTOR" />
-        <field name="VT_ARRAY" />
-        <field name="VT_BYREF" />
-    </enum>
-    <enum name="UnmanagedType" namespace="System.Runtime.InteropServices">
-        <field name="Bool" />
-        <field name="I1" />
-        <field name="U1" />
-        <field name="I2" />
-        <field name="U2" />
-        <field name="I4" />
-        <field name="U4" />
-        <field name="I8" />
-        <field name="U8" />
-        <field name="R4" />
-        <field name="R8" />
-        <field name="Currency" />
-        <field name="BStr" />
-        <field name="LPStr" />
-        <field name="LPWStr" />
-        <field name="LPTStr" />
-        <field name="ByValTStr" />
-        <field name="IUnknown" />
-        <field name="IDispatch" />
-        <field name="Struct" />
-        <field name="Interface" />
-        <field name="SafeArray" />
-        <field name="ByValArray" />
-        <field name="SysInt" />
-        <field name="SysUInt" />
-        <field name="VBByRefStr" />
-        <field name="AnsiBStr" />
-        <field name="TBStr" />
-        <field name="VariantBool" />
-        <field name="FunctionPtr" />
-        <field name="AsAny" />
-        <field name="LPArray" />
-        <field name="LPStruct" />
-        <field name="CustomMarshaler" />
-        <field name="Error" />
-    </enum>
-    <enum name="CallingConvention" namespace="System.Runtime.InteropServices">
-        <field name="Winapi" />
-        <field name="Cdecl" />
-        <field name="StdCall" />
-        <field name="ThisCall" />
-        <field name="FastCall" />
-    </enum>
-    <enum name="CharSet" namespace="System.Runtime.InteropServices">
-        <field name="None" />
-        <field name="Ansi" />
-        <field name="Unicode" />
-        <field name="Auto" />
-    </enum>
-    <enum name="ComMemberType" namespace="System.Runtime.InteropServices">
-        <field name="Method" />
-        <field name="PropGet" />
-        <field name="PropSet" />
-    </enum>
-    <enum name="GCHandleType" namespace="System.Runtime.InteropServices">
-        <field name="Weak" />
-        <field name="WeakTrackResurrection" />
-        <field name="Normal" />
-        <field name="Pinned" />
-    </enum>
-    <enum name="AssemblyRegistrationFlags" namespace="System.Runtime.InteropServices">
-        <field name="None" />
-        <field name="SetCodeBase" />
-    </enum>
-    <enum name="TypeLibImporterFlags" namespace="System.Runtime.InteropServices">
-        <field name="PrimaryInteropAssembly" />
-        <field name="UnsafeInterfaces" />
-        <field name="SafeArrayAsSystemArray" />
-    </enum>
-    <enum name="TypeLibExporterFlags" namespace="System.Runtime.InteropServices">
-        <field name="OnlyReferenceRegistered" />
-    </enum>
-    <enum name="ImporterEventKind" namespace="System.Runtime.InteropServices">
-        <field name="NOTIF_TYPECONVERTED" />
-        <field name="NOTIF_CONVERTWARNING" />
-        <field name="ERROR_REFTOINVALIDTYPELIB" />
-    </enum>
-    <enum name="ExporterEventKind" namespace="System.Runtime.InteropServices">
-        <field name="NOTIF_TYPECONVERTED" />
-        <field name="NOTIF_CONVERTWARNING" />
-        <field name="ERROR_REFTOINVALIDASSEMBLY" />
-    </enum>
-    <enum name="LayoutKind" namespace="System.Runtime.InteropServices">
-        <field name="Sequential" />
-        <field name="Explicit" />
-        <field name="Auto" />
-    </enum>
-    <enum name="DESCKIND" namespace="System.Runtime.InteropServices">
-        <field name="DESCKIND_NONE" />
-        <field name="DESCKIND_FUNCDESC" />
-        <field name="DESCKIND_VARDESC" />
-        <field name="DESCKIND_TYPECOMP" />
-        <field name="DESCKIND_IMPLICITAPPOBJ" />
-        <field name="DESCKIND_MAX" />
-    </enum>
-    <enum name="TYPEKIND" namespace="System.Runtime.InteropServices">
-        <field name="TKIND_ENUM" />
-        <field name="TKIND_RECORD" />
-        <field name="TKIND_MODULE" />
-        <field name="TKIND_INTERFACE" />
-        <field name="TKIND_DISPATCH" />
-        <field name="TKIND_COCLASS" />
-        <field name="TKIND_ALIAS" />
-        <field name="TKIND_UNION" />
-        <field name="TKIND_MAX" />
-    </enum>
-    <enum name="TYPEFLAGS" namespace="System.Runtime.InteropServices">
-        <field name="TYPEFLAG_FAPPOBJECT" />
-        <field name="TYPEFLAG_FCANCREATE" />
-        <field name="TYPEFLAG_FLICENSED" />
-        <field name="TYPEFLAG_FPREDECLID" />
-        <field name="TYPEFLAG_FHIDDEN" />
-        <field name="TYPEFLAG_FCONTROL" />
-        <field name="TYPEFLAG_FDUAL" />
-        <field name="TYPEFLAG_FNONEXTENSIBLE" />
-        <field name="TYPEFLAG_FOLEAUTOMATION" />
-        <field name="TYPEFLAG_FRESTRICTED" />
-        <field name="TYPEFLAG_FAGGREGATABLE" />
-        <field name="TYPEFLAG_FREPLACEABLE" />
-        <field name="TYPEFLAG_FDISPATCHABLE" />
-        <field name="TYPEFLAG_FREVERSEBIND" />
-        <field name="TYPEFLAG_FPROXY" />
-    </enum>
-    <enum name="IMPLTYPEFLAGS" namespace="System.Runtime.InteropServices">
-        <field name="IMPLTYPEFLAG_FDEFAULT" />
-        <field name="IMPLTYPEFLAG_FSOURCE" />
-        <field name="IMPLTYPEFLAG_FRESTRICTED" />
-        <field name="IMPLTYPEFLAG_FDEFAULTVTABLE" />
-    </enum>
-    <enum name="IDLFLAG" namespace="System.Runtime.InteropServices">
-        <field name="IDLFLAG_NONE" />
-        <field name="IDLFLAG_FIN" />
-        <field name="IDLFLAG_FOUT" />
-        <field name="IDLFLAG_FLCID" />
-        <field name="IDLFLAG_FRETVAL" />
-    </enum>
-    <enum name="PARAMFLAG" namespace="System.Runtime.InteropServices">
-        <field name="PARAMFLAG_NONE" />
-        <field name="PARAMFLAG_FIN" />
-        <field name="PARAMFLAG_FOUT" />
-        <field name="PARAMFLAG_FLCID" />
-        <field name="PARAMFLAG_FRETVAL" />
-        <field name="PARAMFLAG_FOPT" />
-        <field name="PARAMFLAG_FHASDEFAULT" />
-        <field name="PARAMFLAG_FHASCUSTDATA" />
-    </enum>
-    <enum name="FUNCKIND" namespace="System.Runtime.InteropServices">
-        <field name="FUNC_VIRTUAL" />
-        <field name="FUNC_PUREVIRTUAL" />
-        <field name="FUNC_NONVIRTUAL" />
-        <field name="FUNC_STATIC" />
-        <field name="FUNC_DISPATCH" />
-    </enum>
-    <enum name="INVOKEKIND" namespace="System.Runtime.InteropServices">
-        <field name="INVOKE_FUNC" />
-        <field name="INVOKE_PROPERTYGET" />
-        <field name="INVOKE_PROPERTYPUT" />
-        <field name="INVOKE_PROPERTYPUTREF" />
-    </enum>
-    <enum name="CALLCONV" namespace="System.Runtime.InteropServices">
-        <field name="CC_CDECL" />
-        <field name="CC_MSCPASCAL" />
-        <field name="CC_PASCAL" />
-        <field name="CC_MACPASCAL" />
-        <field name="CC_STDCALL" />
-        <field name="CC_RESERVED" />
-        <field name="CC_SYSCALL" />
-        <field name="CC_MPWCDECL" />
-        <field name="CC_MPWPASCAL" />
-        <field name="CC_MAX" />
-    </enum>
-    <enum name="FUNCFLAGS" namespace="System.Runtime.InteropServices">
-        <field name="FUNCFLAG_FRESTRICTED" />
-        <field name="FUNCFLAG_FSOURCE" />
-        <field name="FUNCFLAG_FBINDABLE" />
-        <field name="FUNCFLAG_FREQUESTEDIT" />
-        <field name="FUNCFLAG_FDISPLAYBIND" />
-        <field name="FUNCFLAG_FDEFAULTBIND" />
-        <field name="FUNCFLAG_FHIDDEN" />
-        <field name="FUNCFLAG_FUSESGETLASTERROR" />
-        <field name="FUNCFLAG_FDEFAULTCOLLELEM" />
-        <field name="FUNCFLAG_FUIDEFAULT" />
-        <field name="FUNCFLAG_FNONBROWSABLE" />
-        <field name="FUNCFLAG_FREPLACEABLE" />
-        <field name="FUNCFLAG_FIMMEDIATEBIND" />
-    </enum>
-    <enum name="VARFLAGS" namespace="System.Runtime.InteropServices">
-        <field name="VARFLAG_FREADONLY" />
-        <field name="VARFLAG_FSOURCE" />
-        <field name="VARFLAG_FBINDABLE" />
-        <field name="VARFLAG_FREQUESTEDIT" />
-        <field name="VARFLAG_FDISPLAYBIND" />
-        <field name="VARFLAG_FDEFAULTBIND" />
-        <field name="VARFLAG_FHIDDEN" />
-        <field name="VARFLAG_FRESTRICTED" />
-        <field name="VARFLAG_FDEFAULTCOLLELEM" />
-        <field name="VARFLAG_FUIDEFAULT" />
-        <field name="VARFLAG_FNONBROWSABLE" />
-        <field name="VARFLAG_FREPLACEABLE" />
-        <field name="VARFLAG_FIMMEDIATEBIND" />
-    </enum>
-    <enum name="SYSKIND" namespace="System.Runtime.InteropServices">
-        <field name="SYS_WIN16" />
-        <field name="SYS_WIN32" />
-        <field name="SYS_MAC" />
-    </enum>
-    <enum name="LIBFLAGS" namespace="System.Runtime.InteropServices">
-        <field name="LIBFLAG_FRESTRICTED" />
-        <field name="LIBFLAG_FCONTROL" />
-        <field name="LIBFLAG_FHIDDEN" />
-        <field name="LIBFLAG_FHASDISKIMAGE" />
-    </enum>
-    <interface name="IExpando" namespace="System.Runtime.InteropServices.Expando">
-        <method name="RemoveMember(System.Reflection.MemberInfo)" argnames="m" returntype="System.Void" />
-        <method name="AddMethod(System.String, System.Delegate)" argnames="name, method" returntype="System.Reflection.MethodInfo" />
-        <method name="AddProperty(System.String)" argnames="name" returntype="System.Reflection.PropertyInfo" />
-        <method name="AddField(System.String)" argnames="name" returntype="System.Reflection.FieldInfo" />
-    </interface>
-    <class name="AccessedThroughPropertyAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="AccessedThroughPropertyAttribute(System.String)" argnames="propertyName" />
-        <property name="PropertyName" propertytype="System.String" />
-    </class>
-    <class name="CallConvCdecl" namespace="System.Runtime.CompilerServices">
-        <constructor name="CallConvCdecl()" argnames="" />
-    </class>
-    <class name="CallConvStdcall" namespace="System.Runtime.CompilerServices">
-        <constructor name="CallConvStdcall()" argnames="" />
-    </class>
-    <class name="CallConvThiscall" namespace="System.Runtime.CompilerServices">
-        <constructor name="CallConvThiscall()" argnames="" />
-    </class>
-    <class name="CallConvFastcall" namespace="System.Runtime.CompilerServices">
-        <constructor name="CallConvFastcall()" argnames="" />
-    </class>
-    <class name="RuntimeHelpers" namespace="System.Runtime.CompilerServices">
-        <property name="OffsetToStringData" propertytype="System.Int32" />
-        <method name="InitializeArray(System.Array, System.RuntimeFieldHandle)" argnames="array, fldHandle" returntype="System.Void" />
-        <method name="GetObjectValue(System.Object)" argnames="obj" returntype="System.Object" />
-        <method name="RunClassConstructor(System.RuntimeTypeHandle)" argnames="type" returntype="System.Void" />
-    </class>
-    <class name="CustomConstantAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="CustomConstantAttribute()" argnames="" />
-        <property name="Value" propertytype="System.Object" />
-    </class>
-    <class name="DateTimeConstantAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="DateTimeConstantAttribute(System.Int64)" argnames="ticks" />
-        <property name="Value" propertytype="System.Object" />
-    </class>
-    <class name="DiscardableAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="DiscardableAttribute()" argnames="" />
-    </class>
-    <class name="DecimalConstantAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="DecimalConstantAttribute(System.Byte, System.Byte, System.UInt32, System.UInt32, System.UInt32)" argnames="scale, sign, hi, mid, low" />
-        <property name="Value" propertytype="System.Decimal" />
-    </class>
-    <class name="CompilationRelaxationsAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="CompilationRelaxationsAttribute(System.Int32)" argnames="relaxations" />
-        <property name="CompilationRelaxations" propertytype="System.Int32" />
-    </class>
-    <class name="CompilerGlobalScopeAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="CompilerGlobalScopeAttribute()" argnames="" />
-    </class>
-    <class name="IDispatchConstantAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="IDispatchConstantAttribute()" argnames="" />
-        <property name="Value" propertytype="System.Object" />
-    </class>
-    <class name="IndexerNameAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="IndexerNameAttribute(System.String)" argnames="indexerName" />
-    </class>
-    <class name="IsVolatile" namespace="System.Runtime.CompilerServices" />
-    <class name="IUnknownConstantAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="IUnknownConstantAttribute()" argnames="" />
-        <property name="Value" propertytype="System.Object" />
-    </class>
-    <class name="MethodImplAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="MethodImplAttribute(System.Runtime.CompilerServices.MethodImplOptions)" argnames="methodImplOptions" />
-        <constructor name="MethodImplAttribute(System.Int16)" argnames="value" />
-        <constructor name="MethodImplAttribute()" argnames="" />
-        <field name="MethodCodeType" />
-        <property name="Value" propertytype="System.Runtime.CompilerServices.MethodImplOptions" />
-    </class>
-    <class name="RequiredAttributeAttribute" namespace="System.Runtime.CompilerServices">
-        <constructor name="RequiredAttributeAttribute(System.Type)" argnames="requiredContract" />
-        <property name="RequiredContract" propertytype="System.Type" />
-    </class>
-    <enum name="MethodImplOptions" namespace="System.Runtime.CompilerServices">
-        <field name="Unmanaged" />
-        <field name="ForwardRef" />
-        <field name="PreserveSig" />
-        <field name="InternalCall" />
-        <field name="Synchronized" />
-        <field name="NoInlining" />
-    </enum>
-    <enum name="MethodCodeType" namespace="System.Runtime.CompilerServices">
-        <field name="IL" />
-        <field name="Native" />
-        <field name="OPTIL" />
-        <field name="Runtime" />
-    </enum>
-    <class name="EnvironmentPermission" namespace="System.Security.Permissions">
-        <constructor name="EnvironmentPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="EnvironmentPermission(System.Security.Permissions.EnvironmentPermissionAccess, System.String)" argnames="flag, pathList" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-        <method name="SetPathList(System.Security.Permissions.EnvironmentPermissionAccess, System.String)" argnames="flag, pathList" returntype="System.Void" />
-        <method name="AddPathList(System.Security.Permissions.EnvironmentPermissionAccess, System.String)" argnames="flag, pathList" returntype="System.Void" />
-        <method name="GetPathList(System.Security.Permissions.EnvironmentPermissionAccess)" argnames="flag" returntype="System.String" />
-    </class>
-    <class name="FileDialogPermission" namespace="System.Security.Permissions">
-        <constructor name="FileDialogPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="FileDialogPermission(System.Security.Permissions.FileDialogPermissionAccess)" argnames="access" />
-        <property name="Access" propertytype="System.Security.Permissions.FileDialogPermissionAccess" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="FileIOPermission" namespace="System.Security.Permissions">
-        <constructor name="FileIOPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="FileIOPermission(System.Security.Permissions.FileIOPermissionAccess, System.String)" argnames="access, path" />
-        <constructor name="FileIOPermission(System.Security.Permissions.FileIOPermissionAccess, System.String[])" argnames="access, pathList" />
-        <property name="AllLocalFiles" propertytype="System.Security.Permissions.FileIOPermissionAccess" />
-        <property name="AllFiles" propertytype="System.Security.Permissions.FileIOPermissionAccess" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-        <method name="SetPathList(System.Security.Permissions.FileIOPermissionAccess, System.String)" argnames="access, path" returntype="System.Void" />
-        <method name="SetPathList(System.Security.Permissions.FileIOPermissionAccess, System.String[])" argnames="access, pathList" returntype="System.Void" />
-        <method name="AddPathList(System.Security.Permissions.FileIOPermissionAccess, System.String)" argnames="access, path" returntype="System.Void" />
-        <method name="AddPathList(System.Security.Permissions.FileIOPermissionAccess, System.String[])" argnames="access, pathList" returntype="System.Void" />
-        <method name="GetPathList(System.Security.Permissions.FileIOPermissionAccess)" argnames="access" returntype="System.String[]" />
-    </class>
-    <class name="IsolatedStoragePermission" namespace="System.Security.Permissions">
-        <constructor name="IsolatedStoragePermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <property name="UserQuota" propertytype="System.Int64" />
-        <property name="UsageAllowed" propertytype="System.Security.Permissions.IsolatedStorageContainment" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-    </class>
-    <class name="IsolatedStorageFilePermission" namespace="System.Security.Permissions">
-        <constructor name="IsolatedStorageFilePermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="SecurityAttribute" namespace="System.Security.Permissions">
-        <constructor name="SecurityAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Action" propertytype="System.Security.Permissions.SecurityAction" />
-        <property name="Unrestricted" propertytype="System.Boolean" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="CodeAccessSecurityAttribute" namespace="System.Security.Permissions">
-        <constructor name="CodeAccessSecurityAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-    </class>
-    <class name="EnvironmentPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="EnvironmentPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Read" propertytype="System.String" />
-        <property name="Write" propertytype="System.String" />
-        <property name="All" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="FileDialogPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="FileDialogPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Open" propertytype="System.Boolean" />
-        <property name="Save" propertytype="System.Boolean" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="FileIOPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="FileIOPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Read" propertytype="System.String" />
-        <property name="Write" propertytype="System.String" />
-        <property name="Append" propertytype="System.String" />
-        <property name="PathDiscovery" propertytype="System.String" />
-        <property name="All" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="PrincipalPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="PrincipalPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Role" propertytype="System.String" />
-        <property name="Authenticated" propertytype="System.Boolean" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="ReflectionPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="ReflectionPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Flags" propertytype="System.Security.Permissions.ReflectionPermissionFlag" />
-        <property name="TypeInformation" propertytype="System.Boolean" />
-        <property name="MemberAccess" propertytype="System.Boolean" />
-        <property name="ReflectionEmit" propertytype="System.Boolean" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="RegistryPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="RegistryPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Read" propertytype="System.String" />
-        <property name="Write" propertytype="System.String" />
-        <property name="Create" propertytype="System.String" />
-        <property name="All" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="SecurityPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="SecurityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Flags" propertytype="System.Security.Permissions.SecurityPermissionFlag" />
-        <property name="Assertion" propertytype="System.Boolean" />
-        <property name="UnmanagedCode" propertytype="System.Boolean" />
-        <property name="Execution" propertytype="System.Boolean" />
-        <property name="SkipVerification" propertytype="System.Boolean" />
-        <property name="ControlThread" propertytype="System.Boolean" />
-        <property name="ControlEvidence" propertytype="System.Boolean" />
-        <property name="ControlPolicy" propertytype="System.Boolean" />
-        <property name="ControlDomainPolicy" propertytype="System.Boolean" />
-        <property name="ControlPrincipal" propertytype="System.Boolean" />
-        <property name="ControlAppDomain" propertytype="System.Boolean" />
-        <property name="SerializationFormatter" propertytype="System.Boolean" />
-        <property name="RemotingConfiguration" propertytype="System.Boolean" />
-        <property name="Infrastructure" propertytype="System.Boolean" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="UIPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="UIPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Window" propertytype="System.Security.Permissions.UIPermissionWindow" />
-        <property name="Clipboard" propertytype="System.Security.Permissions.UIPermissionClipboard" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="ZoneIdentityPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="ZoneIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Zone" propertytype="System.Security.SecurityZone" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="StrongNameIdentityPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="StrongNameIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Version" propertytype="System.String" />
-        <property name="PublicKey" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="SiteIdentityPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="SiteIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Site" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="UrlIdentityPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="UrlIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="Url" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="PublisherIdentityPermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="PublisherIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="X509Certificate" propertytype="System.String" />
-        <property name="CertFile" propertytype="System.String" />
-        <property name="SignedFile" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="IsolatedStoragePermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="IsolatedStoragePermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="UserQuota" propertytype="System.Int64" />
-        <property name="UsageAllowed" propertytype="System.Security.Permissions.IsolatedStorageContainment" />
-    </class>
-    <class name="IsolatedStorageFilePermissionAttribute" namespace="System.Security.Permissions">
-        <constructor name="IsolatedStorageFilePermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="PermissionSetAttribute" namespace="System.Security.Permissions">
-        <constructor name="PermissionSetAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
-        <property name="File" propertytype="System.String" />
-        <property name="UnicodeEncoded" propertytype="System.Boolean" />
-        <property name="Name" propertytype="System.String" />
-        <property name="XML" propertytype="System.String" />
-        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
-        <method name="CreatePermissionSet()" argnames="" returntype="System.Security.PermissionSet" />
-    </class>
-    <class name="PublisherIdentityPermission" namespace="System.Security.Permissions">
-        <constructor name="PublisherIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="PublisherIdentityPermission(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="certificate" />
-        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="ReflectionPermission" namespace="System.Security.Permissions">
-        <constructor name="ReflectionPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="ReflectionPermission(System.Security.Permissions.ReflectionPermissionFlag)" argnames="flag" />
-        <property name="Flags" propertytype="System.Security.Permissions.ReflectionPermissionFlag" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="RegistryPermission" namespace="System.Security.Permissions">
-        <constructor name="RegistryPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="RegistryPermission(System.Security.Permissions.RegistryPermissionAccess, System.String)" argnames="access, pathList" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-        <method name="SetPathList(System.Security.Permissions.RegistryPermissionAccess, System.String)" argnames="access, pathList" returntype="System.Void" />
-        <method name="AddPathList(System.Security.Permissions.RegistryPermissionAccess, System.String)" argnames="access, pathList" returntype="System.Void" />
-        <method name="GetPathList(System.Security.Permissions.RegistryPermissionAccess)" argnames="access" returntype="System.String" />
-    </class>
-    <class name="PrincipalPermission" namespace="System.Security.Permissions">
-        <constructor name="PrincipalPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="PrincipalPermission(System.String, System.String)" argnames="name, role" />
-        <constructor name="PrincipalPermission(System.String, System.String, System.Boolean)" argnames="name, role, isAuthenticated" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="elem" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="Demand()" argnames="" returntype="System.Void" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="SecurityPermission" namespace="System.Security.Permissions">
-        <constructor name="SecurityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="SecurityPermission(System.Security.Permissions.SecurityPermissionFlag)" argnames="flag" />
-        <property name="Flags" propertytype="System.Security.Permissions.SecurityPermissionFlag" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="SiteIdentityPermission" namespace="System.Security.Permissions">
-        <constructor name="SiteIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="SiteIdentityPermission(System.String)" argnames="site" />
-        <property name="Site" propertytype="System.String" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="StrongNameIdentityPermission" namespace="System.Security.Permissions">
-        <constructor name="StrongNameIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="StrongNameIdentityPermission(System.Security.Permissions.StrongNamePublicKeyBlob, System.String, System.Version)" argnames="blob, name, version" />
-        <property name="PublicKey" propertytype="System.Security.Permissions.StrongNamePublicKeyBlob" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Version" propertytype="System.Version" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="StrongNamePublicKeyBlob" namespace="System.Security.Permissions">
-        <constructor name="StrongNamePublicKeyBlob(System.Byte[])" argnames="publicKey" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-    </class>
-    <class name="UIPermission" namespace="System.Security.Permissions">
-        <constructor name="UIPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="UIPermission(System.Security.Permissions.UIPermissionWindow, System.Security.Permissions.UIPermissionClipboard)" argnames="windowFlag, clipboardFlag" />
-        <constructor name="UIPermission(System.Security.Permissions.UIPermissionWindow)" argnames="windowFlag" />
-        <constructor name="UIPermission(System.Security.Permissions.UIPermissionClipboard)" argnames="clipboardFlag" />
-        <property name="Window" propertytype="System.Security.Permissions.UIPermissionWindow" />
-        <property name="Clipboard" propertytype="System.Security.Permissions.UIPermissionClipboard" />
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="UrlIdentityPermission" namespace="System.Security.Permissions">
-        <constructor name="UrlIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="UrlIdentityPermission(System.String)" argnames="site" />
-        <property name="Url" propertytype="System.String" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <class name="ZoneIdentityPermission" namespace="System.Security.Permissions">
-        <constructor name="ZoneIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
-        <constructor name="ZoneIdentityPermission(System.Security.SecurityZone)" argnames="zone" />
-        <property name="SecurityZone" propertytype="System.Security.SecurityZone" />
-        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
-        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
-        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
-        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
-        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
-    </class>
-    <interface name="IUnrestrictedPermission" namespace="System.Security.Permissions">
-        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
-    </interface>
-    <enum name="EnvironmentPermissionAccess" namespace="System.Security.Permissions">
-        <field name="NoAccess" />
-        <field name="Read" />
-        <field name="Write" />
-        <field name="AllAccess" />
-    </enum>
-    <enum name="FileDialogPermissionAccess" namespace="System.Security.Permissions">
-        <field name="None" />
-        <field name="Open" />
-        <field name="Save" />
-        <field name="OpenSave" />
-    </enum>
-    <enum name="FileIOPermissionAccess" namespace="System.Security.Permissions">
-        <field name="NoAccess" />
-        <field name="Read" />
-        <field name="Write" />
-        <field name="Append" />
-        <field name="PathDiscovery" />
-        <field name="AllAccess" />
-    </enum>
-    <enum name="IsolatedStorageContainment" namespace="System.Security.Permissions">
-        <field name="None" />
-        <field name="DomainIsolationByUser" />
-        <field name="AssemblyIsolationByUser" />
-        <field name="DomainIsolationByRoamingUser" />
-        <field name="AssemblyIsolationByRoamingUser" />
-        <field name="AdministerIsolatedStorageByUser" />
-        <field name="UnrestrictedIsolatedStorage" />
-    </enum>
-    <enum name="PermissionState" namespace="System.Security.Permissions">
-        <field name="Unrestricted" />
-        <field name="None" />
-    </enum>
-    <enum name="SecurityAction" namespace="System.Security.Permissions">
-        <field name="Demand" />
-        <field name="Assert" />
-        <field name="Deny" />
-        <field name="PermitOnly" />
-        <field name="LinkDemand" />
-        <field name="InheritanceDemand" />
-        <field name="RequestMinimum" />
-        <field name="RequestOptional" />
-        <field name="RequestRefuse" />
-    </enum>
-    <enum name="ReflectionPermissionFlag" namespace="System.Security.Permissions">
-        <field name="NoFlags" />
-        <field name="TypeInformation" />
-        <field name="MemberAccess" />
-        <field name="ReflectionEmit" />
-        <field name="AllFlags" />
-    </enum>
-    <enum name="RegistryPermissionAccess" namespace="System.Security.Permissions">
-        <field name="NoAccess" />
-        <field name="Read" />
-        <field name="Write" />
-        <field name="Create" />
-        <field name="AllAccess" />
-    </enum>
-    <enum name="SecurityPermissionFlag" namespace="System.Security.Permissions">
-        <field name="NoFlags" />
-        <field name="Assertion" />
-        <field name="UnmanagedCode" />
-        <field name="SkipVerification" />
-        <field name="Execution" />
-        <field name="ControlThread" />
-        <field name="ControlEvidence" />
-        <field name="ControlPolicy" />
-        <field name="SerializationFormatter" />
-        <field name="ControlDomainPolicy" />
-        <field name="ControlPrincipal" />
-        <field name="ControlAppDomain" />
-        <field name="RemotingConfiguration" />
-        <field name="Infrastructure" />
-        <field name="AllFlags" />
-    </enum>
-    <enum name="UIPermissionWindow" namespace="System.Security.Permissions">
-        <field name="NoWindows" />
-        <field name="SafeSubWindows" />
-        <field name="SafeTopLevelWindows" />
-        <field name="AllWindows" />
-    </enum>
-    <enum name="UIPermissionClipboard" namespace="System.Security.Permissions">
-        <field name="NoClipboard" />
-        <field name="OwnClipboard" />
-        <field name="AllClipboard" />
-    </enum>
-    <class name="ContextAttribute" namespace="System.Runtime.Remoting.Contexts">
-        <constructor name="ContextAttribute(System.String)" argnames="name" />
-        <field name="AttributeName" />
-        <property name="Name" propertytype="System.String" />
-        <method name="Freeze(System.Runtime.Remoting.Contexts.Context)" argnames="newContext" returntype="System.Void" />
-        <method name="IsNewContextOK(System.Runtime.Remoting.Contexts.Context)" argnames="newCtx" returntype="System.Boolean" />
-        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Void" />
-        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, ctorMsg" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-    </class>
-    <class name="Context" namespace="System.Runtime.Remoting.Contexts">
-        <constructor name="Context()" argnames="" />
-        <property name="ContextID" propertytype="System.Int32" />
-        <property name="InternalContextID" propertytype="System.Int32" />
-        <property name="AppDomain" propertytype="System.AppDomain" />
-        <property name="IsDefaultContext" propertytype="System.Boolean" />
-        <property name="DefaultContext" propertytype="System.Runtime.Remoting.Contexts.Context" />
-        <property name="IsThreadPoolAware" propertytype="System.Boolean" />
-        <property name="ContextProperties" propertytype="System.Runtime.Remoting.Contexts.IContextProperty[]" />
-        <property name="MyLocalStore" propertytype="System.LocalDataStore" />
-        <property name="PerContextDynamicProperties" propertytype="System.Runtime.Remoting.Contexts.IDynamicProperty[]" />
-        <property name="GlobalDynamicProperties" propertytype="System.Runtime.Remoting.Contexts.IDynamicProperty[]" />
-        <property name="GlobalDynamicSinks" propertytype="System.Runtime.Remoting.Contexts.ArrayWithSize" />
-        <property name="DynamicSinks" propertytype="System.Runtime.Remoting.Contexts.ArrayWithSize" />
-        <method name="Freeze()" argnames="" returntype="System.Void" />
-        <method name="SetProperty(System.Runtime.Remoting.Contexts.IContextProperty)" argnames="prop" returntype="System.Void" />
-        <method name="GetProperty(System.String)" argnames="name" returntype="System.Runtime.Remoting.Contexts.IContextProperty" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="DoCallBack(System.Runtime.Remoting.Contexts.CrossContextDelegate)" argnames="deleg" returntype="System.Void" />
-        <method name="AllocateDataSlot()" argnames="" returntype="System.LocalDataStoreSlot" />
-        <method name="AllocateNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
-        <method name="GetNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
-        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
-        <method name="SetData(System.LocalDataStoreSlot, System.Object)" argnames="slot, data" returntype="System.Void" />
-        <method name="GetData(System.LocalDataStoreSlot)" argnames="slot" returntype="System.Object" />
-        <method name="RegisterDynamicProperty(System.Runtime.Remoting.Contexts.IDynamicProperty, System.ContextBoundObject, System.Runtime.Remoting.Contexts.Context)" argnames="prop, obj, ctx" returntype="System.Boolean" />
-        <method name="UnregisterDynamicProperty(System.String, System.ContextBoundObject, System.Runtime.Remoting.Contexts.Context)" argnames="name, obj, ctx" returntype="System.Boolean" />
-    </class>
-    <class name="ContextProperty" namespace="System.Runtime.Remoting.Contexts">
-        <property name="Name" propertytype="System.String" />
-        <property name="Property" propertytype="System.Object" />
-    </class>
-    <class name="SynchronizationAttribute" namespace="System.Runtime.Remoting.Contexts">
-        <constructor name="SynchronizationAttribute()" argnames="" />
-        <constructor name="SynchronizationAttribute(System.Boolean)" argnames="reEntrant" />
-        <constructor name="SynchronizationAttribute(System.Int32)" argnames="flag" />
-        <constructor name="SynchronizationAttribute(System.Int32, System.Boolean)" argnames="flag, reEntrant" />
-        <field name="NOT_SUPPORTED" />
-        <field name="SUPPORTED" />
-        <field name="REQUIRED" />
-        <field name="REQUIRES_NEW" />
-        <property name="Locked" propertytype="System.Boolean" />
-        <property name="IsReEntrant" propertytype="System.Boolean" />
-        <property name="SyncCallOutLCID" propertytype="System.String" />
-        <property name="AsyncCallOutLCIDList" propertytype="System.Collections.ArrayList" />
-        <method name="GetClientContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="GetServerContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Void" />
-        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
-    </class>
-    <interface name="IContextAttribute" namespace="System.Runtime.Remoting.Contexts">
-        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Void" />
-        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
-    </interface>
-    <interface name="IContextProperty" namespace="System.Runtime.Remoting.Contexts">
-        <property name="Name" propertytype="System.String" />
-        <method name="Freeze(System.Runtime.Remoting.Contexts.Context)" argnames="newContext" returntype="System.Void" />
-        <method name="IsNewContextOK(System.Runtime.Remoting.Contexts.Context)" argnames="newCtx" returntype="System.Boolean" />
-    </interface>
-    <interface name="IContextPropertyActivator" namespace="System.Runtime.Remoting.Contexts">
-        <method name="DeliverServerContextToClientContext(System.Runtime.Remoting.Activation.IConstructionReturnMessage)" argnames="msg" returntype="System.Boolean" />
-        <method name="CollectFromServerContext(System.Runtime.Remoting.Activation.IConstructionReturnMessage)" argnames="msg" returntype="System.Void" />
-        <method name="DeliverClientContextToServerContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Boolean" />
-        <method name="CollectFromClientContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Void" />
-        <method name="IsOKToActivate(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Boolean" />
-    </interface>
-    <interface name="IContributeClientContextSink" namespace="System.Runtime.Remoting.Contexts">
-        <method name="GetClientContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-    </interface>
-    <interface name="IContributeDynamicSink" namespace="System.Runtime.Remoting.Contexts">
-        <method name="GetDynamicSink()" argnames="" returntype="System.Runtime.Remoting.Contexts.IDynamicMessageSink" />
-    </interface>
-    <interface name="IContributeEnvoySink" namespace="System.Runtime.Remoting.Contexts">
-        <method name="GetEnvoySink(System.MarshalByRefObject, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="obj, nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-    </interface>
-    <interface name="IContributeObjectSink" namespace="System.Runtime.Remoting.Contexts">
-        <method name="GetObjectSink(System.MarshalByRefObject, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="obj, nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-    </interface>
-    <interface name="IContributeServerContextSink" namespace="System.Runtime.Remoting.Contexts">
-        <method name="GetServerContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-    </interface>
-    <interface name="IDynamicProperty" namespace="System.Runtime.Remoting.Contexts">
-        <property name="Name" propertytype="System.String" />
-    </interface>
-    <interface name="IDynamicMessageSink" namespace="System.Runtime.Remoting.Contexts">
-        <method name="ProcessMessageFinish(System.Runtime.Remoting.Messaging.IMessage, System.Boolean, System.Boolean)" argnames="replyMsg, bCliSide, bAsync" returntype="System.Void" />
-        <method name="ProcessMessageStart(System.Runtime.Remoting.Messaging.IMessage, System.Boolean, System.Boolean)" argnames="reqMsg, bCliSide, bAsync" returntype="System.Void" />
-    </interface>
-    <delegate name="CrossContextDelegate" namespace="System.Runtime.Remoting.Contexts">
-        <constructor name="CrossContextDelegate(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
-        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke()" argnames="" returntype="System.Void" />
-    </delegate>
-    <class name="UrlAttribute" namespace="System.Runtime.Remoting.Activation">
-        <constructor name="UrlAttribute(System.String)" argnames="callsiteURL" />
-        <property name="UrlValue" propertytype="System.String" />
-        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Void" />
-        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
-        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
-        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
-    </class>
-    <interface name="IActivator" namespace="System.Runtime.Remoting.Activation">
-        <property name="NextActivator" propertytype="System.Runtime.Remoting.Activation.IActivator" />
-        <property name="Level" propertytype="System.Runtime.Remoting.Activation.ActivatorLevel" />
-        <method name="Activate(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Runtime.Remoting.Activation.IConstructionReturnMessage" />
-    </interface>
-    <interface name="IConstructionCallMessage" namespace="System.Runtime.Remoting.Activation">
-        <property name="Activator" propertytype="System.Runtime.Remoting.Activation.IActivator" />
-        <property name="CallSiteActivationAttributes" propertytype="System.Object[]" />
-        <property name="ActivationTypeName" propertytype="System.String" />
-        <property name="ActivationType" propertytype="System.Type" />
-        <property name="ContextProperties" propertytype="System.Collections.IList" />
-    </interface>
-    <interface name="IConstructionReturnMessage" namespace="System.Runtime.Remoting.Activation" />
-    <enum name="ActivatorLevel" namespace="System.Runtime.Remoting.Activation">
-        <field name="Construction" />
-        <field name="Context" />
-        <field name="AppDomain" />
-        <field name="Process" />
-        <field name="Machine" />
-    </enum>
-    <class name="AsyncResult" namespace="System.Runtime.Remoting.Messaging">
-        <property name="IsCompleted" propertytype="System.Boolean" />
-        <property name="AsyncDelegate" propertytype="System.Object" />
-        <property name="AsyncState" propertytype="System.Object" />
-        <property name="CompletedSynchronously" propertytype="System.Boolean" />
-        <property name="EndInvokeCalled" propertytype="System.Boolean" />
-        <property name="AsyncWaitHandle" propertytype="System.Threading.WaitHandle" />
-        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
-        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
-        <method name="GetReplyMessage()" argnames="" returntype="System.Runtime.Remoting.Messaging.IMessage" />
-        <method name="SetMessageCtrl(System.Runtime.Remoting.Messaging.IMessageCtrl)" argnames="mc" returntype="System.Void" />
-    </class>
-    <class name="CallContext" namespace="System.Runtime.Remoting.Messaging">
-        <property name="SecurityData" propertytype="System.Runtime.Remoting.Messaging.CallContextSecurityData" />
-        <property name="RemotingData" propertytype="System.Runtime.Remoting.Messaging.CallContextRemotingData" />
-        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
-        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
-        <method name="GetHeaders()" argnames="" returntype="System.Runtime.Remoting.Messaging.Header[]" />
-        <method name="SetHeaders(System.Runtime.Remoting.Messaging.Header[])" argnames="headers" returntype="System.Void" />
-    </class>
-    <class name="LogicalCallContext" namespace="System.Runtime.Remoting.Messaging">
-        <property name="HasInfo" propertytype="System.Boolean" />
-        <property name="HasUserData" propertytype="System.Boolean" />
-        <property name="RemotingData" propertytype="System.Runtime.Remoting.Messaging.CallContextRemotingData" />
-        <property name="SecurityData" propertytype="System.Runtime.Remoting.Messaging.CallContextSecurityData" />
-        <property name="Datastore" propertytype="System.Collections.Hashtable" />
-        <property name="Principal" propertytype="System.Security.Principal.IPrincipal" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
-        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
-        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
-    </class>
-    <class name="InternalMessageWrapper" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="InternalMessageWrapper(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" />
-        <field name="WrappedMessage" />
-    </class>
-    <class name="MethodCallMessageWrapper" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="MethodCallMessageWrapper(System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="msg" />
-        <property name="Uri" propertytype="System.String" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="MethodSignature" propertytype="System.Object" />
-        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
-        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
-        <property name="ArgCount" propertytype="System.Int32" />
-        <property name="Args" propertytype="System.Object[]" />
-        <property name="HasVarArgs" propertytype="System.Boolean" />
-        <property name="InArgCount" propertytype="System.Int32" />
-        <property name="InArgs" propertytype="System.Object[]" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetInArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetInArgName(System.Int32)" argnames="index" returntype="System.String" />
-    </class>
-    <class name="Header" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="Header(System.String, System.Object)" argnames="_Name, _Value" />
-        <constructor name="Header(System.String, System.Object, System.Boolean)" argnames="_Name, _Value, _MustUnderstand" />
-        <constructor name="Header(System.String, System.Object, System.Boolean, System.String)" argnames="_Name, _Value, _MustUnderstand, _HeaderNamespace" />
-        <field name="Name" />
-        <field name="Value" />
-        <field name="MustUnderstand" />
-        <field name="HeaderNamespace" />
-    </class>
-    <class name="ReturnMessage" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="ReturnMessage(System.Object, System.Object[], System.Int32, System.Runtime.Remoting.Messaging.LogicalCallContext, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="ret, outArgs, outArgsCount, callCtx, mcm" />
-        <constructor name="ReturnMessage(System.Exception, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="e, mcm" />
-        <property name="Uri" propertytype="System.String" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="MethodSignature" propertytype="System.Object" />
-        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
-        <property name="HasVarArgs" propertytype="System.Boolean" />
-        <property name="ArgCount" propertytype="System.Int32" />
-        <property name="Args" propertytype="System.Object[]" />
-        <property name="OutArgCount" propertytype="System.Int32" />
-        <property name="OutArgs" propertytype="System.Object[]" />
-        <property name="Exception" propertytype="System.Exception" />
-        <property name="ReturnValue" propertytype="System.Object" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
-        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
-    </class>
-    <class name="MethodCall" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="MethodCall(System.Runtime.Remoting.Messaging.Header[])" argnames="h1" />
-        <constructor name="MethodCall(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" />
-        <field name="ExternalProperties" />
-        <field name="InternalProperties" />
-        <property name="ArgCount" propertytype="System.Int32" />
-        <property name="Args" propertytype="System.Object[]" />
-        <property name="InArgCount" propertytype="System.Int32" />
-        <property name="InArgs" propertytype="System.Object[]" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="MethodSignature" propertytype="System.Object" />
-        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
-        <property name="Uri" propertytype="System.String" />
-        <property name="HasVarArgs" propertytype="System.Boolean" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
-        <method name="RootSetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, ctx" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetInArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetInArgName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="HeaderHandler(System.Runtime.Remoting.Messaging.Header[])" argnames="h" returntype="System.Object" />
-        <method name="Init()" argnames="" returntype="System.Void" />
-        <method name="ResolveMethod()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="ConstructionCall" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="ConstructionCall(System.Runtime.Remoting.Messaging.Header[])" argnames="headers" />
-        <constructor name="ConstructionCall(System.Runtime.Remoting.Messaging.IMessage)" argnames="m" />
-        <property name="CallSiteActivationAttributes" propertytype="System.Object[]" />
-        <property name="ActivationType" propertytype="System.Type" />
-        <property name="ActivationTypeName" propertytype="System.String" />
-        <property name="ContextProperties" propertytype="System.Collections.IList" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <property name="Activator" propertytype="System.Runtime.Remoting.Activation.IActivator" />
-    </class>
-    <class name="MethodResponse" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="MethodResponse(System.Runtime.Remoting.Messaging.Header[], System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="h1, mcm" />
-        <field name="InternalProperties" />
-        <field name="ExternalProperties" />
-        <property name="Uri" propertytype="System.String" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="MethodSignature" propertytype="System.Object" />
-        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
-        <property name="HasVarArgs" propertytype="System.Boolean" />
-        <property name="ArgCount" propertytype="System.Int32" />
-        <property name="Args" propertytype="System.Object[]" />
-        <property name="OutArgCount" propertytype="System.Int32" />
-        <property name="OutArgs" propertytype="System.Object[]" />
-        <property name="Exception" propertytype="System.Exception" />
-        <property name="ReturnValue" propertytype="System.Object" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
-        <method name="RootSetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, ctx" returntype="System.Void" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="HeaderHandler(System.Runtime.Remoting.Messaging.Header[])" argnames="h" returntype="System.Object" />
-    </class>
-    <class name="ConstructionResponse" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="ConstructionResponse(System.Runtime.Remoting.Messaging.Header[], System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="h, mcm" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-    </class>
-    <class name="MethodReturnMessageWrapper" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="MethodReturnMessageWrapper(System.Runtime.Remoting.Messaging.IMethodReturnMessage)" argnames="msg" />
-        <property name="Uri" propertytype="System.String" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="MethodSignature" propertytype="System.Object" />
-        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
-        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
-        <property name="ArgCount" propertytype="System.Int32" />
-        <property name="Args" propertytype="System.Object[]" />
-        <property name="HasVarArgs" propertytype="System.Boolean" />
-        <property name="OutArgCount" propertytype="System.Int32" />
-        <property name="OutArgs" propertytype="System.Object[]" />
-        <property name="Exception" propertytype="System.Exception" />
-        <property name="ReturnValue" propertytype="System.Object" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
-        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
-    </class>
-    <class name="OneWayAttribute" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="OneWayAttribute()" argnames="" />
-    </class>
-    <class name="RemotingSurrogateSelector" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="RemotingSurrogateSelector()" argnames="" />
-        <property name="Filter" propertytype="System.Runtime.Remoting.Messaging.MessageSurrogateFilter" />
-        <method name="GetNextSelector()" argnames="" returntype="System.Runtime.Serialization.ISurrogateSelector" />
-        <method name="GetSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector&amp;)" argnames="type, context, ssout" returntype="System.Runtime.Serialization.ISerializationSurrogate" />
-        <method name="ChainSelector(System.Runtime.Serialization.ISurrogateSelector)" argnames="selector" returntype="System.Void" />
-        <method name="UseSoapFormat()" argnames="" returntype="System.Void" />
-        <method name="SetRootObject(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="GetRootObject()" argnames="" returntype="System.Object" />
-    </class>
-    <interface name="IMessageSink" namespace="System.Runtime.Remoting.Messaging">
-        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
-        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
-        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
-    </interface>
-    <interface name="ILogicalThreadAffinative" namespace="System.Runtime.Remoting.Messaging" />
-    <interface name="IMessage" namespace="System.Runtime.Remoting.Messaging">
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-    </interface>
-    <interface name="IMethodMessage" namespace="System.Runtime.Remoting.Messaging">
-        <property name="Uri" propertytype="System.String" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="TypeName" propertytype="System.String" />
-        <property name="MethodSignature" propertytype="System.Object" />
-        <property name="ArgCount" propertytype="System.Int32" />
-        <property name="Args" propertytype="System.Object[]" />
-        <property name="HasVarArgs" propertytype="System.Boolean" />
-        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
-        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
-        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
-    </interface>
-    <interface name="IMethodCallMessage" namespace="System.Runtime.Remoting.Messaging">
-        <property name="InArgCount" propertytype="System.Int32" />
-        <property name="InArgs" propertytype="System.Object[]" />
-        <method name="GetInArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetInArgName(System.Int32)" argnames="index" returntype="System.String" />
-    </interface>
-    <interface name="IMethodReturnMessage" namespace="System.Runtime.Remoting.Messaging">
-        <property name="OutArgCount" propertytype="System.Int32" />
-        <property name="OutArgs" propertytype="System.Object[]" />
-        <property name="Exception" propertytype="System.Exception" />
-        <property name="ReturnValue" propertytype="System.Object" />
-        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
-        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
-    </interface>
-    <interface name="IMessageCtrl" namespace="System.Runtime.Remoting.Messaging">
-        <method name="Cancel(System.Int32)" argnames="msToCancel" returntype="System.Void" />
-    </interface>
-    <interface name="IRemotingFormatter" namespace="System.Runtime.Remoting.Messaging">
-        <method name="Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])" argnames="serializationStream, graph, headers" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)" argnames="serializationStream, handler" returntype="System.Object" />
-    </interface>
-    <delegate name="HeaderHandler" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="HeaderHandler(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
-        <method name="BeginInvoke(System.Runtime.Remoting.Messaging.Header[], System.AsyncCallback, System.Object)" argnames="headers, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.Runtime.Remoting.Messaging.Header[])" argnames="headers" returntype="System.Object" />
-    </delegate>
-    <delegate name="MessageSurrogateFilter" namespace="System.Runtime.Remoting.Messaging">
-        <constructor name="MessageSurrogateFilter(System.Object, System.IntPtr)" argnames="object, method" />
-        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
-        <method name="BeginInvoke(System.String, System.Object, System.AsyncCallback, System.Object)" argnames="key, value, callback, object" returntype="System.IAsyncResult" />
-        <method name="Invoke(System.String, System.Object)" argnames="key, value" returntype="System.Boolean" />
-    </delegate>
-    <class name="ChannelServices" namespace="System.Runtime.Remoting.Channels">
-        <property name="CurrentChannelData" propertytype="System.Object[]" />
-        <property name="remoteCalls" propertytype="System.Int64" />
-        <property name="RegisteredChannels" propertytype="System.Runtime.Remoting.Channels.IChannel[]" />
-        <method name="RegisterChannel(System.Runtime.Remoting.Channels.IChannel)" argnames="chnl" returntype="System.Void" />
-        <method name="UnregisterChannel(System.Runtime.Remoting.Channels.IChannel)" argnames="chnl" returntype="System.Void" />
-        <method name="GetChannel(System.String)" argnames="name" returntype="System.Runtime.Remoting.Channels.IChannel" />
-        <method name="GetUrlsForObject(System.MarshalByRefObject)" argnames="obj" returntype="System.String[]" />
-        <method name="GetChannelSinkProperties(System.Object)" argnames="obj" returntype="System.Collections.IDictionary" />
-        <method name="DispatchMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage&amp;)" argnames="sinkStack, msg, replyMsg" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
-        <method name="SyncDispatchMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
-        <method name="AsyncDispatchMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
-        <method name="CreateServerChannelSinkChain(System.Runtime.Remoting.Channels.IServerChannelSinkProvider, System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="provider, channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-    </class>
-    <class name="ClientChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="ClientChannelSinkStack()" argnames="" />
-        <constructor name="ClientChannelSinkStack(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="replySink" />
-        <method name="DispatchException(System.Exception)" argnames="e" returntype="System.Void" />
-        <method name="DispatchReplyMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Void" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="headers, stream" returntype="System.Void" />
-        <method name="Pop(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="sink" returntype="System.Object" />
-        <method name="Push(System.Runtime.Remoting.Channels.IClientChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-    </class>
-    <class name="ServerChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="ServerChannelSinkStack()" argnames="" />
-        <property name="AsyncMessage" propertytype="System.Runtime.Remoting.Messaging.IMessage" />
-        <property name="AsyncEnd" propertytype="System.Reflection.MethodInfo" />
-        <property name="ServerObject" propertytype="System.Object" />
-        <property name="Message" propertytype="System.Runtime.Remoting.Messaging.IMethodCallMessage" />
-        <method name="GetResponseStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="msg, headers, stream" returntype="System.Void" />
-        <method name="ServerCallback(System.IAsyncResult)" argnames="ar" returntype="System.Void" />
-        <method name="StoreAndDispatch(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-        <method name="Store(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-        <method name="Pop(System.Runtime.Remoting.Channels.IServerChannelSink)" argnames="sink" returntype="System.Object" />
-        <method name="Push(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-    </class>
-    <class name="ChannelDataStore" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="ChannelDataStore(System.String[])" argnames="channelURIs" />
-        <property name="ChannelUris" propertytype="System.String[]" />
-        <property name="Item" propertytype="System.Object" />
-    </class>
-    <class name="TransportHeaders" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="TransportHeaders()" argnames="" />
-        <property name="Item" propertytype="System.Object" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-    </class>
-    <class name="SinkProviderData" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="SinkProviderData(System.String)" argnames="name" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <property name="Children" propertytype="System.Collections.IList" />
-    </class>
-    <class name="BaseChannelObjectWithProperties" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="BaseChannelObjectWithProperties()" argnames="" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-        <property name="Item" propertytype="System.Object" />
-        <property name="Keys" propertytype="System.Collections.ICollection" />
-        <property name="Values" propertytype="System.Collections.ICollection" />
-        <property name="IsReadOnly" propertytype="System.Boolean" />
-        <property name="IsFixedSize" propertytype="System.Boolean" />
-        <property name="Count" propertytype="System.Int32" />
-        <property name="SyncRoot" propertytype="System.Object" />
-        <property name="IsSynchronized" propertytype="System.Boolean" />
-        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
-        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
-        <method name="Clear()" argnames="" returntype="System.Void" />
-        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
-        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
-    </class>
-    <class name="BaseChannelSinkWithProperties" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="BaseChannelSinkWithProperties()" argnames="" />
-    </class>
-    <class name="BaseChannelWithProperties" namespace="System.Runtime.Remoting.Channels">
-        <constructor name="BaseChannelWithProperties()" argnames="" />
-        <field name="SinksWithProperties" />
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-    </class>
-    <interface name="IClientResponseChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
-        <method name="DispatchException(System.Exception)" argnames="e" returntype="System.Void" />
-        <method name="DispatchReplyMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Void" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="headers, stream" returntype="System.Void" />
-    </interface>
-    <interface name="IClientChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
-        <method name="Pop(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="sink" returntype="System.Object" />
-        <method name="Push(System.Runtime.Remoting.Channels.IClientChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-    </interface>
-    <interface name="IServerResponseChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
-        <method name="GetResponseStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="msg, headers, stream" returntype="System.Void" />
-    </interface>
-    <interface name="IServerChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
-        <method name="ServerCallback(System.IAsyncResult)" argnames="ar" returntype="System.Void" />
-        <method name="StoreAndDispatch(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-        <method name="Store(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-        <method name="Pop(System.Runtime.Remoting.Channels.IServerChannelSink)" argnames="sink" returntype="System.Object" />
-        <method name="Push(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
-    </interface>
-    <interface name="IChannel" namespace="System.Runtime.Remoting.Channels">
-        <property name="ChannelPriority" propertytype="System.Int32" />
-        <property name="ChannelName" propertytype="System.String" />
-        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
-    </interface>
-    <interface name="IChannelSender" namespace="System.Runtime.Remoting.Channels">
-        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
-    </interface>
-    <interface name="IChannelReceiver" namespace="System.Runtime.Remoting.Channels">
-        <property name="ChannelData" propertytype="System.Object" />
-        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
-        <method name="GetUrlsForUri(System.String)" argnames="objectURI" returntype="System.String[]" />
-    </interface>
-    <interface name="IServerChannelSinkProvider" namespace="System.Runtime.Remoting.Channels">
-        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
-        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="channelData" returntype="System.Void" />
-    </interface>
-    <interface name="IChannelSinkBase" namespace="System.Runtime.Remoting.Channels">
-        <property name="Properties" propertytype="System.Collections.IDictionary" />
-    </interface>
-    <interface name="IServerChannelSink" namespace="System.Runtime.Remoting.Channels">
-        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
-        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
-    </interface>
-    <interface name="IChannelReceiverHook" namespace="System.Runtime.Remoting.Channels">
-        <property name="ChannelScheme" propertytype="System.String" />
-        <property name="WantsToListen" propertytype="System.Boolean" />
-        <property name="ChannelSinkChain" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
-        <method name="AddHookChannelUri(System.String)" argnames="channelUri" returntype="System.Void" />
-    </interface>
-    <interface name="IClientChannelSinkProvider" namespace="System.Runtime.Remoting.Channels">
-        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IClientChannelSinkProvider" />
-        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelSender, System.String, System.Object)" argnames="channel, url, remoteChannelData" returntype="System.Runtime.Remoting.Channels.IClientChannelSink" />
-    </interface>
-    <interface name="IClientFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels" />
-    <interface name="IServerFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels" />
-    <interface name="IClientChannelSink" namespace="System.Runtime.Remoting.Channels">
-        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IClientChannelSink" />
-        <method name="GetRequestStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
-        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IClientResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, headers, stream" returntype="System.Void" />
-        <method name="AsyncProcessRequest(System.Runtime.Remoting.Channels.IClientChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, msg, headers, stream" returntype="System.Void" />
-        <method name="ProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="msg, requestHeaders, requestStream, responseHeaders, responseStream" returntype="System.Void" />
-    </interface>
-    <interface name="IClientFormatterSink" namespace="System.Runtime.Remoting.Channels" />
-    <interface name="IChannelDataStore" namespace="System.Runtime.Remoting.Channels">
-        <property name="ChannelUris" propertytype="System.String[]" />
-        <property name="Item" propertytype="System.Object" />
-    </interface>
-    <interface name="ITransportHeaders" namespace="System.Runtime.Remoting.Channels">
-        <property name="Item" propertytype="System.Object" />
-        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
-    </interface>
-    <enum name="ServerProcessing" namespace="System.Runtime.Remoting.Channels">
-        <field name="Complete" />
-        <field name="OneWay" />
-        <field name="Async" />
-    </enum>
-    <class name="ClientSponsor" namespace="System.Runtime.Remoting.Lifetime">
-        <constructor name="ClientSponsor()" argnames="" />
-        <constructor name="ClientSponsor(System.TimeSpan)" argnames="renewalTime" />
-        <property name="RenewalTime" propertytype="System.TimeSpan" />
-        <method name="Renewal(System.Runtime.Remoting.Lifetime.ILease)" argnames="lease" returntype="System.TimeSpan" />
-        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="Register(System.MarshalByRefObject)" argnames="obj" returntype="System.Boolean" />
-        <method name="Unregister(System.MarshalByRefObject)" argnames="obj" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="LifetimeServices" namespace="System.Runtime.Remoting.Lifetime">
-        <constructor name="LifetimeServices()" argnames="" />
-        <property name="LeaseTime" propertytype="System.TimeSpan" />
-        <property name="RenewOnCallTime" propertytype="System.TimeSpan" />
-        <property name="SponsorshipTimeout" propertytype="System.TimeSpan" />
-        <property name="LeaseManagerPollTime" propertytype="System.TimeSpan" />
-    </class>
-    <interface name="ISponsor" namespace="System.Runtime.Remoting.Lifetime">
-        <method name="Renewal(System.Runtime.Remoting.Lifetime.ILease)" argnames="lease" returntype="System.TimeSpan" />
-    </interface>
-    <interface name="ILease" namespace="System.Runtime.Remoting.Lifetime">
-        <property name="RenewOnCallTime" propertytype="System.TimeSpan" />
-        <property name="SponsorshipTimeout" propertytype="System.TimeSpan" />
-        <property name="InitialLeaseTime" propertytype="System.TimeSpan" />
-        <property name="CurrentLeaseTime" propertytype="System.TimeSpan" />
-        <property name="CurrentState" propertytype="System.Runtime.Remoting.Lifetime.LeaseState" />
-        <method name="Renew(System.TimeSpan)" argnames="renewalTime" returntype="System.TimeSpan" />
-        <method name="Unregister(System.Runtime.Remoting.Lifetime.ISponsor)" argnames="obj" returntype="System.Void" />
-        <method name="Register(System.Runtime.Remoting.Lifetime.ISponsor)" argnames="obj" returntype="System.Void" />
-        <method name="Register(System.Runtime.Remoting.Lifetime.ISponsor, System.TimeSpan)" argnames="obj, renewalTime" returntype="System.Void" />
-    </interface>
-    <enum name="LeaseState" namespace="System.Runtime.Remoting.Lifetime">
-        <field name="Null" />
-        <field name="Initial" />
-        <field name="Active" />
-        <field name="Renewing" />
-        <field name="Expired" />
-    </enum>
-    <class name="EnterpriseServicesHelper" namespace="System.Runtime.Remoting.Services">
-        <constructor name="EnterpriseServicesHelper()" argnames="" />
-        <method name="WrapIUnknownWithComObject(System.IntPtr)" argnames="punk" returntype="System.Object" />
-        <method name="CreateConstructionReturnMessage(System.Runtime.Remoting.Activation.IConstructionCallMessage, System.MarshalByRefObject)" argnames="ctorMsg, retObj" returntype="System.Runtime.Remoting.Activation.IConstructionReturnMessage" />
-        <method name="SwitchWrappers(System.Runtime.Remoting.Proxies.RealProxy, System.Runtime.Remoting.Proxies.RealProxy)" argnames="oldcp, newcp" returntype="System.Void" />
-    </class>
-    <class name="TrackingServices" namespace="System.Runtime.Remoting.Services">
-        <constructor name="TrackingServices()" argnames="" />
-        <property name="RegisteredHandlers" propertytype="System.Runtime.Remoting.Services.ITrackingHandler[]" />
-        <method name="RegisterTrackingHandler(System.Runtime.Remoting.Services.ITrackingHandler)" argnames="handler" returntype="System.Void" />
-        <method name="UnregisterTrackingHandler(System.Runtime.Remoting.Services.ITrackingHandler)" argnames="handler" returntype="System.Void" />
-    </class>
-    <interface name="ITrackingHandler" namespace="System.Runtime.Remoting.Services">
-        <method name="DisconnectedObject(System.Object)" argnames="obj" returntype="System.Void" />
-        <method name="UnmarshaledObject(System.Object, System.Runtime.Remoting.ObjRef)" argnames="obj, or" returntype="System.Void" />
-        <method name="MarshaledObject(System.Object, System.Runtime.Remoting.ObjRef)" argnames="obj, or" returntype="System.Void" />
-    </interface>
-    <class name="InternalRM" namespace="System.Runtime.Serialization.Formatters" />
-    <class name="InternalST" namespace="System.Runtime.Serialization.Formatters" />
-    <class name="SoapMessage" namespace="System.Runtime.Serialization.Formatters">
-        <constructor name="SoapMessage()" argnames="" />
-        <property name="ParamNames" propertytype="System.String[]" />
-        <property name="ParamValues" propertytype="System.Object[]" />
-        <property name="ParamTypes" propertytype="System.Type[]" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="XmlNameSpace" propertytype="System.String" />
-        <property name="Headers" propertytype="System.Runtime.Remoting.Messaging.Header[]" />
-    </class>
-    <class name="SoapFault" namespace="System.Runtime.Serialization.Formatters">
-        <constructor name="SoapFault()" argnames="" />
-        <constructor name="SoapFault(System.String, System.String, System.String, System.Runtime.Serialization.Formatters.ServerFault)" argnames="faultCode, faultString, faultActor, serverFault" />
-        <property name="FaultCode" propertytype="System.String" />
-        <property name="FaultString" propertytype="System.String" />
-        <property name="FaultActor" propertytype="System.String" />
-        <property name="Detail" propertytype="System.Object" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-    </class>
-    <class name="ServerFault" namespace="System.Runtime.Serialization.Formatters">
-        <constructor name="ServerFault(System.String, System.String, System.String)" argnames="exceptionType, message, stackTrace" />
-        <property name="ExceptionType" propertytype="System.String" />
-        <property name="ExceptionMessage" propertytype="System.String" />
-        <property name="StackTrace" propertytype="System.String" />
-        <property name="Exception" propertytype="System.Exception" />
-    </class>
-    <interface name="IFieldInfo" namespace="System.Runtime.Serialization.Formatters">
-        <property name="FieldNames" propertytype="System.String[]" />
-        <property name="FieldTypes" propertytype="System.Type[]" />
-    </interface>
-    <interface name="ISoapMessage" namespace="System.Runtime.Serialization.Formatters">
-        <property name="ParamNames" propertytype="System.String[]" />
-        <property name="ParamValues" propertytype="System.Object[]" />
-        <property name="ParamTypes" propertytype="System.Type[]" />
-        <property name="MethodName" propertytype="System.String" />
-        <property name="XmlNameSpace" propertytype="System.String" />
-        <property name="Headers" propertytype="System.Runtime.Remoting.Messaging.Header[]" />
-    </interface>
-    <enum name="FormatterTypeStyle" namespace="System.Runtime.Serialization.Formatters">
-        <field name="TypesWhenNeeded" />
-        <field name="TypesAlways" />
-        <field name="XsdString" />
-    </enum>
-    <enum name="FormatterAssemblyStyle" namespace="System.Runtime.Serialization.Formatters">
-        <field name="Simple" />
-        <field name="Full" />
-    </enum>
-    <class name="ProxyAttribute" namespace="System.Runtime.Remoting.Proxies">
-        <constructor name="ProxyAttribute()" argnames="" />
-        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Void" />
-        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
-        <method name="CreateProxy(System.Runtime.Remoting.ObjRef, System.Type, System.Object, System.Runtime.Remoting.Contexts.Context)" argnames="objRef, serverType, serverObject, serverContext" returntype="System.Runtime.Remoting.Proxies.RealProxy" />
-        <method name="CreateInstance(System.Type)" argnames="serverType" returntype="System.MarshalByRefObject" />
-    </class>
-    <class name="RealProxy" namespace="System.Runtime.Remoting.Proxies">
-        <constructor name="RealProxy(System.Type)" argnames="classToProxy" />
-        <constructor name="RealProxy(System.Type, System.IntPtr, System.Object)" argnames="classToProxy, stub, stubData" />
-        <constructor name="RealProxy()" argnames="" />
-        <property name="UnwrappedServerObject" propertytype="System.MarshalByRefObject" />
-        <property name="IdentityObject" propertytype="System.Runtime.Remoting.Identity" />
-        <method name="GetTransparentProxy()" argnames="" returntype="System.Object" />
-        <method name="SupportsInterface(System.Guid&amp;)" argnames="iid" returntype="System.IntPtr" />
-        <method name="SetCOMIUnknown(System.IntPtr)" argnames="i" returntype="System.Void" />
-        <method name="GetCOMIUnknown(System.Boolean)" argnames="fIsMarshalled" returntype="System.IntPtr" />
-        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
-        <method name="CreateObjRef(System.Type)" argnames="requestedType" returntype="System.Runtime.Remoting.ObjRef" />
-        <method name="Invoke(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
-        <method name="InitializeServerObject(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Runtime.Remoting.Activation.IConstructionReturnMessage" />
-        <method name="GetUnwrappedServer()" argnames="" returntype="System.MarshalByRefObject" />
-        <method name="DetachServer()" argnames="" returntype="System.MarshalByRefObject" />
-        <method name="AttachServer(System.MarshalByRefObject)" argnames="s" returntype="System.Void" />
-        <method name="SetStubData(System.Runtime.Remoting.Proxies.RealProxy, System.Object)" argnames="rp, stubData" returntype="System.Void" />
-        <method name="GetStubData(System.Runtime.Remoting.Proxies.RealProxy)" argnames="rp" returntype="System.Object" />
-        <method name="GetProxiedType()" argnames="" returntype="System.Type" />
-    </class>
-    <class name="SoapAttribute" namespace="System.Runtime.Remoting.Metadata">
-        <constructor name="SoapAttribute()" argnames="" />
-        <field name="ProtXmlNamespace" />
-        <field name="ReflectInfo" />
-        <property name="XmlNamespace" propertytype="System.String" />
-        <property name="UseAttribute" propertytype="System.Boolean" />
-        <property name="Embedded" propertytype="System.Boolean" />
-    </class>
-    <class name="SoapTypeAttribute" namespace="System.Runtime.Remoting.Metadata">
-        <constructor name="SoapTypeAttribute()" argnames="" />
-        <property name="SoapOptions" propertytype="System.Runtime.Remoting.Metadata.SoapOption" />
-        <property name="XmlElementName" propertytype="System.String" />
-        <property name="XmlNamespace" propertytype="System.String" />
-        <property name="XmlTypeName" propertytype="System.String" />
-        <property name="XmlTypeNamespace" propertytype="System.String" />
-        <property name="XmlFieldOrder" propertytype="System.Runtime.Remoting.Metadata.XmlFieldOrderOption" />
-        <property name="UseAttribute" propertytype="System.Boolean" />
-    </class>
-    <class name="SoapMethodAttribute" namespace="System.Runtime.Remoting.Metadata">
-        <constructor name="SoapMethodAttribute()" argnames="" />
-        <property name="SoapActionExplicitySet" propertytype="System.Boolean" />
-        <property name="SoapAction" propertytype="System.String" />
-        <property name="UseAttribute" propertytype="System.Boolean" />
-        <property name="XmlNamespace" propertytype="System.String" />
-        <property name="ResponseXmlElementName" propertytype="System.String" />
-        <property name="ResponseXmlNamespace" propertytype="System.String" />
-        <property name="ReturnXmlElementName" propertytype="System.String" />
-        <property name="XmlTypeNamespaceOfDeclaringType" propertytype="System.String" />
-    </class>
-    <class name="SoapFieldAttribute" namespace="System.Runtime.Remoting.Metadata">
-        <constructor name="SoapFieldAttribute()" argnames="" />
-        <property name="XmlElementName" propertytype="System.String" />
-        <property name="Order" propertytype="System.Int32" />
-        <method name="IsInteropXmlElement()" argnames="" returntype="System.Boolean" />
-    </class>
-    <class name="SoapParameterAttribute" namespace="System.Runtime.Remoting.Metadata">
-        <constructor name="SoapParameterAttribute()" argnames="" />
-    </class>
-    <enum name="SoapOption" namespace="System.Runtime.Remoting.Metadata">
-        <field name="None" />
-        <field name="AlwaysIncludeTypes" />
-        <field name="XsdString" />
-        <field name="EmbedAll" />
-        <field name="Option1" />
-        <field name="Option2" />
-    </enum>
-    <enum name="XmlFieldOrderOption" namespace="System.Runtime.Remoting.Metadata">
-        <field name="All" />
-        <field name="Sequence" />
-        <field name="Choice" />
-    </enum>
-    <class name="SoapDateTime" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapDateTime()" argnames="" />
-        <property name="XsdType" propertytype="System.String" />
-        <method name="ToString(System.DateTime)" argnames="value" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.DateTime" />
-    </class>
-    <class name="SoapDuration" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapDuration()" argnames="" />
-        <property name="XsdType" propertytype="System.String" />
-        <method name="ToString(System.TimeSpan)" argnames="timeSpan" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.TimeSpan" />
-    </class>
-    <class name="SoapTime" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapTime()" argnames="" />
-        <constructor name="SoapTime(System.DateTime)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapTime" />
-    </class>
-    <class name="SoapDate" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapDate()" argnames="" />
-        <constructor name="SoapDate(System.DateTime)" argnames="value" />
-        <constructor name="SoapDate(System.DateTime, System.Int32)" argnames="value, sign" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <property name="Sign" propertytype="System.Int32" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDate" />
-    </class>
-    <class name="SoapYearMonth" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapYearMonth()" argnames="" />
-        <constructor name="SoapYearMonth(System.DateTime)" argnames="value" />
-        <constructor name="SoapYearMonth(System.DateTime, System.Int32)" argnames="value, sign" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <property name="Sign" propertytype="System.Int32" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYearMonth" />
-    </class>
-    <class name="SoapYear" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapYear()" argnames="" />
-        <constructor name="SoapYear(System.DateTime)" argnames="value" />
-        <constructor name="SoapYear(System.DateTime, System.Int32)" argnames="value, sign" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <property name="Sign" propertytype="System.Int32" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYear" />
-    </class>
-    <class name="SoapMonthDay" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapMonthDay()" argnames="" />
-        <constructor name="SoapMonthDay(System.DateTime)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonthDay" />
-    </class>
-    <class name="SoapDay" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapDay()" argnames="" />
-        <constructor name="SoapDay(System.DateTime)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDay" />
-    </class>
-    <class name="SoapMonth" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapMonth()" argnames="" />
-        <constructor name="SoapMonth(System.DateTime)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.DateTime" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonth" />
-    </class>
-    <class name="SoapHexBinary" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapHexBinary()" argnames="" />
-        <constructor name="SoapHexBinary(System.Byte[])" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.Byte[]" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary" />
-    </class>
-    <class name="SoapBase64Binary" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapBase64Binary()" argnames="" />
-        <constructor name="SoapBase64Binary(System.Byte[])" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.Byte[]" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapBase64Binary" />
-    </class>
-    <class name="SoapInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapInteger()" argnames="" />
-        <constructor name="SoapInteger(System.Decimal)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.Decimal" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapInteger" />
-    </class>
-    <class name="SoapPositiveInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapPositiveInteger()" argnames="" />
-        <constructor name="SoapPositiveInteger(System.Decimal)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.Decimal" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapPositiveInteger" />
-    </class>
-    <class name="SoapNonPositiveInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNonPositiveInteger()" argnames="" />
-        <constructor name="SoapNonPositiveInteger(System.Decimal)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.Decimal" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonPositiveInteger" />
-    </class>
-    <class name="SoapNonNegativeInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNonNegativeInteger()" argnames="" />
-        <constructor name="SoapNonNegativeInteger(System.Decimal)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.Decimal" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonNegativeInteger" />
-    </class>
-    <class name="SoapNegativeInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNegativeInteger()" argnames="" />
-        <constructor name="SoapNegativeInteger(System.Decimal)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.Decimal" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNegativeInteger" />
-    </class>
-    <class name="SoapAnyUri" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapAnyUri()" argnames="" />
-        <constructor name="SoapAnyUri(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapAnyUri" />
-    </class>
-    <class name="SoapQName" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapQName()" argnames="" />
-        <constructor name="SoapQName(System.String)" argnames="value" />
-        <constructor name="SoapQName(System.String, System.String)" argnames="key, name" />
-        <constructor name="SoapQName(System.String, System.String, System.String)" argnames="key, name, namespaceValue" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Name" propertytype="System.String" />
-        <property name="Namespace" propertytype="System.String" />
-        <property name="Key" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapQName" />
-    </class>
-    <class name="SoapNotation" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNotation()" argnames="" />
-        <constructor name="SoapNotation(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNotation" />
-    </class>
-    <class name="SoapNormalizedString" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNormalizedString()" argnames="" />
-        <constructor name="SoapNormalizedString(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNormalizedString" />
-    </class>
-    <class name="SoapToken" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapToken()" argnames="" />
-        <constructor name="SoapToken(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapToken" />
-    </class>
-    <class name="SoapLanguage" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapLanguage()" argnames="" />
-        <constructor name="SoapLanguage(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapLanguage" />
-    </class>
-    <class name="SoapName" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapName()" argnames="" />
-        <constructor name="SoapName(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapName" />
-    </class>
-    <class name="SoapIdrefs" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapIdrefs()" argnames="" />
-        <constructor name="SoapIdrefs(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdrefs" />
-    </class>
-    <class name="SoapEntities" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapEntities()" argnames="" />
-        <constructor name="SoapEntities(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntities" />
-    </class>
-    <class name="SoapNmtoken" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNmtoken()" argnames="" />
-        <constructor name="SoapNmtoken(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtoken" />
-    </class>
-    <class name="SoapNmtokens" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNmtokens()" argnames="" />
-        <constructor name="SoapNmtokens(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtokens" />
-    </class>
-    <class name="SoapNcName" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapNcName()" argnames="" />
-        <constructor name="SoapNcName(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNcName" />
-    </class>
-    <class name="SoapId" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapId()" argnames="" />
-        <constructor name="SoapId(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapId" />
-    </class>
-    <class name="SoapIdref" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapIdref()" argnames="" />
-        <constructor name="SoapIdref(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdref" />
-    </class>
-    <class name="SoapEntity" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <constructor name="SoapEntity()" argnames="" />
-        <constructor name="SoapEntity(System.String)" argnames="value" />
-        <property name="XsdType" propertytype="System.String" />
-        <property name="Value" propertytype="System.String" />
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-        <method name="ToString()" argnames="" returntype="System.String" />
-        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntity" />
-    </class>
-    <interface name="ISoapXsd" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
-        <method name="GetXsdType()" argnames="" returntype="System.String" />
-    </interface>
-    <class name="IsolatedStorage" namespace="System.IO.IsolatedStorage">
-        <constructor name="IsolatedStorage()" argnames="" />
-        <property name="SeparatorExternal" propertytype="System.Char" />
-        <property name="SeparatorInternal" propertytype="System.Char" />
-        <property name="MaximumSize" propertytype="System.UInt64" />
-        <property name="CurrentSize" propertytype="System.UInt64" />
-        <property name="DomainIdentity" propertytype="System.Object" />
-        <property name="AssemblyIdentity" propertytype="System.Object" />
-        <property name="Scope" propertytype="System.IO.IsolatedStorage.IsolatedStorageScope" />
-        <property name="AppName" propertytype="System.String" />
-        <property name="AssemName" propertytype="System.String" />
-        <method name="GetPermission(System.Security.PermissionSet)" argnames="ps" returntype="System.Security.Permissions.IsolatedStoragePermission" />
-        <method name="Remove()" argnames="" returntype="System.Void" />
-        <method name="InitStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Type, System.Type)" argnames="scope, domainEvidenceType, assemblyEvidenceType" returntype="System.Void" />
-    </class>
-    <class name="IsolatedStorageFile" namespace="System.IO.IsolatedStorage">
-        <property name="CurrentSize" propertytype="System.UInt64" />
-        <property name="MaximumSize" propertytype="System.UInt64" />
-        <property name="RootDirectory" propertytype="System.String" />
-        <method name="Dispose()" argnames="" returntype="System.Void" />
-        <method name="GetPermission(System.Security.PermissionSet)" argnames="ps" returntype="System.Security.Permissions.IsolatedStoragePermission" />
-        <method name="Remove()" argnames="" returntype="System.Void" />
-        <method name="Finalize()" argnames="" returntype="System.Void" />
-        <method name="GetUserStoreForDomain()" argnames="" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
-        <method name="GetUserStoreForAssembly()" argnames="" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
-        <method name="GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Type, System.Type)" argnames="scope, domainEvidenceType, assemblyEvidenceType" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
-        <method name="GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Object, System.Object)" argnames="scope, domainIdentity, assemblyIdentity" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
-        <method name="GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Security.Policy.Evidence, System.Type, System.Security.Policy.Evidence, System.Type)" argnames="scope, domainEvidence, domainEvidenceType, assemblyEvidence, assemblyEvidenceType" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
-        <method name="DeleteFile(System.String)" argnames="file" returntype="System.Void" />
-        <method name="CreateDirectory(System.String)" argnames="dir" returntype="System.Void" />
-        <method name="DeleteDirectory(System.String)" argnames="dir" returntype="System.Void" />
-        <method name="GetFileNames(System.String)" argnames="searchPattern" returntype="System.String[]" />
-        <method name="GetDirectoryNames(System.String)" argnames="searchPattern" returntype="System.String[]" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-        <method name="Remove(System.IO.IsolatedStorage.IsolatedStorageScope)" argnames="scope" returntype="System.Void" />
-        <method name="GetEnumerator(System.IO.IsolatedStorage.IsolatedStorageScope)" argnames="scope" returntype="System.Collections.IEnumerator" />
-    </class>
-    <class name="IsolatedStorageFileStream" namespace="System.IO.IsolatedStorage">
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode)" argnames="path, mode" />
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, isf" />
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess)" argnames="path, mode, access" />
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, access, isf" />
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="path, mode, access, share" />
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, access, share, isf" />
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32)" argnames="path, mode, access, share, bufferSize" />
-        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, access, share, bufferSize, isf" />
-        <property name="CanRead" propertytype="System.Boolean" />
-        <property name="CanWrite" propertytype="System.Boolean" />
-        <property name="CanSeek" propertytype="System.Boolean" />
-        <property name="IsAsync" propertytype="System.Boolean" />
-        <property name="Length" propertytype="System.Int64" />
-        <property name="Position" propertytype="System.Int64" />
-        <property name="Handle" propertytype="System.IntPtr" />
-        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
-        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
-        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
-        <method name="ReadByte()" argnames="" returntype="System.Int32" />
-        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
-        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
-        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
-        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
-        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
-        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
-        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
-        <method name="Flush()" argnames="" returntype="System.Void" />
-        <method name="Close()" argnames="" returntype="System.Void" />
-    </class>
-    <class name="IsolatedStorageException" namespace="System.IO.IsolatedStorage">
-        <constructor name="IsolatedStorageException()" argnames="" />
-        <constructor name="IsolatedStorageException(System.String)" argnames="message" />
-        <constructor name="IsolatedStorageException(System.String, System.Exception)" argnames="message, inner" />
-        <constructor name="IsolatedStorageException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
-    </class>
-    <interface name="INormalizeForIsolatedStorage" namespace="System.IO.IsolatedStorage">
-        <method name="Normalize()" argnames="" returntype="System.Object" />
-    </interface>
-    <enum name="IsolatedStorageScope" namespace="System.IO.IsolatedStorage">
-        <field name="None" />
-        <field name="User" />
-        <field name="Domain" />
-        <field name="Assembly" />
-        <field name="Roaming" />
-    </enum>
-    <class name="BinaryFormatter" namespace="System.Runtime.Serialization.Formatters.Binary">
-        <constructor name="BinaryFormatter()" argnames="" />
-        <constructor name="BinaryFormatter(System.Runtime.Serialization.ISurrogateSelector, System.Runtime.Serialization.StreamingContext)" argnames="selector, context" />
-        <property name="TypeFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterTypeStyle" />
-        <property name="AssemblyFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterAssemblyStyle" />
-        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
-        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
-        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
-        <property name="CrossAppDomainArray" propertytype="System.Object[]" />
-        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
-        <method name="Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])" argnames="serializationStream, graph, headers" returntype="System.Void" />
-        <method name="Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)" argnames="serializationStream, handler" returntype="System.Object" />
-        <method name="DeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="serializationStream, handler, methodCallMessage" returntype="System.Object" />
-    </class>
-    <struct name="AssemblyHash" namespace="System.Configuration.Assemblies">
-        <constructor name="AssemblyHash(System.Byte[])" argnames="value" />
-        <constructor name="AssemblyHash(System.Configuration.Assemblies.AssemblyHashAlgorithm, System.Byte[])" argnames="algorithm, value" />
-        <field name="Empty" />
-        <property name="Algorithm" propertytype="System.Configuration.Assemblies.AssemblyHashAlgorithm" />
-        <method name="Clone()" argnames="" returntype="System.Object" />
-        <method name="GetValue()" argnames="" returntype="System.Byte[]" />
-        <method name="SetValue(System.Byte[])" argnames="value" returntype="System.Void" />
-    </struct>
-    <enum name="AssemblyHashAlgorithm" namespace="System.Configuration.Assemblies">
-        <field name="None" />
-        <field name="MD5" />
-        <field name="SHA1" />
-    </enum>
-    <enum name="AssemblyVersionCompatibility" namespace="System.Configuration.Assemblies">
-        <field name="SameMachine" />
-        <field name="SameProcess" />
-        <field name="SameDomain" />
-    </enum>
+<?xml version="1.0" encoding="utf-8"?>
+<masterdoc assembly="mscorlib">
+    <class name="Object" namespace="System">
+        <constructor name="Object()" argnames="" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Equals(System.Object, System.Object)" argnames="objA, objB" returntype="System.Boolean" />
+        <method name="ReferenceEquals(System.Object, System.Object)" argnames="objA, objB" returntype="System.Boolean" />
+        <method name="GetType()" argnames="" returntype="System.Type" />
+        <method name="MemberwiseClone()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="Array" namespace="System">
+        <property name="Length" propertytype="System.Int32" />
+        <property name="Rank" propertytype="System.Int32" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="CreateInstance(System.Type, System.Int32)" argnames="elementType, length" returntype="System.Array" />
+        <method name="CreateInstance(System.Type, System.Int32, System.Int32)" argnames="elementType, length1, length2" returntype="System.Array" />
+        <method name="CreateInstance(System.Type, System.Int32, System.Int32, System.Int32)" argnames="elementType, length1, length2, length3" returntype="System.Array" />
+        <method name="CreateInstance(System.Type, System.Int32[])" argnames="elementType, lengths" returntype="System.Array" />
+        <method name="CreateInstance(System.Type, System.Int32[], System.Int32[])" argnames="elementType, lengths, lowerBounds" returntype="System.Array" />
+        <method name="Copy(System.Array, System.Array, System.Int32)" argnames="sourceArray, destinationArray, length" returntype="System.Void" />
+        <method name="Copy(System.Array, System.Int32, System.Array, System.Int32, System.Int32)" argnames="sourceArray, sourceIndex, destinationArray, destinationIndex, length" returntype="System.Void" />
+        <method name="Clear(System.Array, System.Int32, System.Int32)" argnames="array, index, length" returntype="System.Void" />
+        <method name="GetValue(System.Int32[])" argnames="indices" returntype="System.Object" />
+        <method name="GetValue(System.Int32)" argnames="index" returntype="System.Object" />
+        <method name="GetValue(System.Int32, System.Int32)" argnames="index1, index2" returntype="System.Object" />
+        <method name="GetValue(System.Int32, System.Int32, System.Int32)" argnames="index1, index2, index3" returntype="System.Object" />
+        <method name="SetValue(System.Object, System.Int32)" argnames="value, index" returntype="System.Void" />
+        <method name="SetValue(System.Object, System.Int32, System.Int32)" argnames="value, index1, index2" returntype="System.Void" />
+        <method name="SetValue(System.Object, System.Int32, System.Int32, System.Int32)" argnames="value, index1, index2, index3" returntype="System.Void" />
+        <method name="SetValue(System.Object, System.Int32[])" argnames="value, indices" returntype="System.Void" />
+        <method name="GetLength(System.Int32)" argnames="dimension" returntype="System.Int32" />
+        <method name="GetUpperBound(System.Int32)" argnames="dimension" returntype="System.Int32" />
+        <method name="GetLowerBound(System.Int32)" argnames="dimension" returntype="System.Int32" />
+        <method name="BinarySearch(System.Array, System.Object)" argnames="array, value" returntype="System.Int32" />
+        <method name="BinarySearch(System.Array, System.Int32, System.Int32, System.Object)" argnames="array, index, length, value" returntype="System.Int32" />
+        <method name="BinarySearch(System.Array, System.Object, System.Collections.IComparer)" argnames="array, value, comparer" returntype="System.Int32" />
+        <method name="BinarySearch(System.Array, System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="array, index, length, value, comparer" returntype="System.Int32" />
+        <method name="IndexOf(System.Array, System.Object)" argnames="array, value" returntype="System.Int32" />
+        <method name="IndexOf(System.Array, System.Object, System.Int32)" argnames="array, value, startIndex" returntype="System.Int32" />
+        <method name="IndexOf(System.Array, System.Object, System.Int32, System.Int32)" argnames="array, value, startIndex, count" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Array, System.Object)" argnames="array, value" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Array, System.Object, System.Int32)" argnames="array, value, startIndex" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Array, System.Object, System.Int32, System.Int32)" argnames="array, value, startIndex, count" returntype="System.Int32" />
+        <method name="Reverse(System.Array)" argnames="array" returntype="System.Void" />
+        <method name="Reverse(System.Array, System.Int32, System.Int32)" argnames="array, index, length" returntype="System.Void" />
+        <method name="Sort(System.Array)" argnames="array" returntype="System.Void" />
+        <method name="Sort(System.Array, System.Array)" argnames="keys, items" returntype="System.Void" />
+        <method name="Sort(System.Array, System.Int32, System.Int32)" argnames="array, index, length" returntype="System.Void" />
+        <method name="Sort(System.Array, System.Array, System.Int32, System.Int32)" argnames="keys, items, index, length" returntype="System.Void" />
+        <method name="Sort(System.Array, System.Collections.IComparer)" argnames="array, comparer" returntype="System.Void" />
+        <method name="Sort(System.Array, System.Array, System.Collections.IComparer)" argnames="keys, items, comparer" returntype="System.Void" />
+        <method name="Sort(System.Array, System.Int32, System.Int32, System.Collections.IComparer)" argnames="array, index, length, comparer" returntype="System.Void" />
+        <method name="Sort(System.Array, System.Array, System.Int32, System.Int32, System.Collections.IComparer)" argnames="keys, items, index, length, comparer" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="String" namespace="System">
+        <constructor name="String(System.Char*)" argnames="value" />
+        <constructor name="String(System.Char*, System.Int32, System.Int32)" argnames="value, startIndex, length" />
+        <constructor name="String(System.SByte*)" argnames="value" />
+        <constructor name="String(System.SByte*, System.Int32, System.Int32)" argnames="value, startIndex, length" />
+        <constructor name="String(System.SByte*, System.Int32, System.Int32, System.Text.Encoding)" argnames="value, startIndex, length, enc" />
+        <constructor name="String(System.Char[], System.Int32, System.Int32)" argnames="value, startIndex, length" />
+        <constructor name="String(System.Char[])" argnames="value" />
+        <constructor name="String(System.Char, System.Int32)" argnames="c, count" />
+        <field name="Empty" />
+        <property name="Chars" propertytype="System.Char" />
+        <property name="Length" propertytype="System.Int32" />
+        <property name="ArrayLength" propertytype="System.Int32" />
+        <property name="Capacity" propertytype="System.Int32" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Join(System.String, System.String[])" argnames="separator, value" returntype="System.String" />
+        <method name="Join(System.String, System.String[], System.Int32, System.Int32)" argnames="separator, value, startIndex, count" returntype="System.String" />
+        <method name="Equals(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="Equals(System.String, System.String)" argnames="a, b" returntype="System.Boolean" />
+        <method name="CopyTo(System.Int32, System.Char[], System.Int32, System.Int32)" argnames="sourceIndex, destination, destinationIndex, count" returntype="System.Void" />
+        <method name="ToCharArray()" argnames="" returntype="System.Char[]" />
+        <method name="ToCharArray(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.Char[]" />
+        <method name="Split(System.Char[])" argnames="separator" returntype="System.String[]" />
+        <method name="Split(System.Char[], System.Int32)" argnames="separator, count" returntype="System.String[]" />
+        <method name="Substring(System.Int32)" argnames="startIndex" returntype="System.String" />
+        <method name="Substring(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.String" />
+        <method name="Trim(System.Char[])" argnames="trimChars" returntype="System.String" />
+        <method name="TrimStart(System.Char[])" argnames="trimChars" returntype="System.String" />
+        <method name="TrimEnd(System.Char[])" argnames="trimChars" returntype="System.String" />
+        <method name="Compare(System.String, System.String)" argnames="strA, strB" returntype="System.Int32" />
+        <method name="Compare(System.String, System.String, System.Boolean)" argnames="strA, strB, ignoreCase" returntype="System.Int32" />
+        <method name="Compare(System.String, System.String, System.Boolean, System.Globalization.CultureInfo)" argnames="strA, strB, ignoreCase, culture" returntype="System.Int32" />
+        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Int32)" argnames="strA, indexA, strB, indexB, length" returntype="System.Int32" />
+        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Int32, System.Boolean)" argnames="strA, indexA, strB, indexB, length, ignoreCase" returntype="System.Int32" />
+        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Int32, System.Boolean, System.Globalization.CultureInfo)" argnames="strA, indexA, strB, indexB, length, ignoreCase, culture" returntype="System.Int32" />
+        <method name="CompareTo(System.String)" argnames="strB" returntype="System.Int32" />
+        <method name="CompareOrdinal(System.String, System.String)" argnames="strA, strB" returntype="System.Int32" />
+        <method name="CompareOrdinal(System.String, System.Int32, System.String, System.Int32, System.Int32)" argnames="strA, indexA, strB, indexB, length" returntype="System.Int32" />
+        <method name="EndsWith(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="IndexOf(System.Char)" argnames="value" returntype="System.Int32" />
+        <method name="IndexOf(System.Char, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
+        <method name="IndexOf(System.Char, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
+        <method name="IndexOfAny(System.Char[])" argnames="anyOf" returntype="System.Int32" />
+        <method name="IndexOfAny(System.Char[], System.Int32)" argnames="anyOf, startIndex" returntype="System.Int32" />
+        <method name="IndexOfAny(System.Char[], System.Int32, System.Int32)" argnames="anyOf, startIndex, count" returntype="System.Int32" />
+        <method name="IndexOf(System.String)" argnames="value" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Char)" argnames="value" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Char, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Char, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
+        <method name="LastIndexOfAny(System.Char[])" argnames="anyOf" returntype="System.Int32" />
+        <method name="LastIndexOfAny(System.Char[], System.Int32)" argnames="anyOf, startIndex" returntype="System.Int32" />
+        <method name="LastIndexOfAny(System.Char[], System.Int32, System.Int32)" argnames="anyOf, startIndex, count" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String)" argnames="value" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
+        <method name="PadLeft(System.Int32)" argnames="totalWidth" returntype="System.String" />
+        <method name="PadLeft(System.Int32, System.Char)" argnames="totalWidth, paddingChar" returntype="System.String" />
+        <method name="PadRight(System.Int32)" argnames="totalWidth" returntype="System.String" />
+        <method name="PadRight(System.Int32, System.Char)" argnames="totalWidth, paddingChar" returntype="System.String" />
+        <method name="StartsWith(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="ToLower()" argnames="" returntype="System.String" />
+        <method name="ToLower(System.Globalization.CultureInfo)" argnames="culture" returntype="System.String" />
+        <method name="ToUpper()" argnames="" returntype="System.String" />
+        <method name="ToUpper(System.Globalization.CultureInfo)" argnames="culture" returntype="System.String" />
+        <method name="Trim()" argnames="" returntype="System.String" />
+        <method name="Insert(System.Int32, System.String)" argnames="startIndex, value" returntype="System.String" />
+        <method name="Replace(System.Char, System.Char)" argnames="oldChar, newChar" returntype="System.String" />
+        <method name="Replace(System.String, System.String)" argnames="oldValue, newValue" returntype="System.String" />
+        <method name="Remove(System.Int32, System.Int32)" argnames="startIndex, count" returntype="System.String" />
+        <method name="Format(System.String, System.Object)" argnames="format, arg0" returntype="System.String" />
+        <method name="Format(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.String" />
+        <method name="Format(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.String" />
+        <method name="Format(System.String, System.Object[])" argnames="format, args" returntype="System.String" />
+        <method name="Format(System.IFormatProvider, System.String, System.Object[])" argnames="provider, format, args" returntype="System.String" />
+        <method name="Copy(System.String)" argnames="str" returntype="System.String" />
+        <method name="Concat(System.Object)" argnames="arg0" returntype="System.String" />
+        <method name="Concat(System.Object, System.Object)" argnames="arg0, arg1" returntype="System.String" />
+        <method name="Concat(System.Object, System.Object, System.Object)" argnames="arg0, arg1, arg2" returntype="System.String" />
+        <method name="Concat(System.Object, System.Object, System.Object, System.Object)" argnames="arg0, arg1, arg2, arg3" returntype="System.String" />
+        <method name="Concat(System.Object[])" argnames="args" returntype="System.String" />
+        <method name="Concat(System.String, System.String)" argnames="str0, str1" returntype="System.String" />
+        <method name="Concat(System.String, System.String, System.String)" argnames="str0, str1, str2" returntype="System.String" />
+        <method name="Concat(System.String, System.String, System.String, System.String)" argnames="str0, str1, str2, str3" returntype="System.String" />
+        <method name="Concat(System.String[])" argnames="values" returntype="System.String" />
+        <method name="Intern(System.String)" argnames="str" returntype="System.String" />
+        <method name="IsInterned(System.String)" argnames="str" returntype="System.String" />
+        <method name="GetEnumerator()" argnames="" returntype="System.CharEnumerator" />
+        <operator name="op_Equality(System.String, System.String)" argnames="a, b" />
+        <operator name="op_Inequality(System.String, System.String)" argnames="a, b" />
+    </class>
+    <class name="Exception" namespace="System">
+        <constructor name="Exception()" argnames="" />
+        <constructor name="Exception(System.String)" argnames="message" />
+        <constructor name="Exception(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="Exception(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" propertytype="System.String" />
+        <property name="InnerException" propertytype="System.Exception" />
+        <property name="TargetSite" propertytype="System.Reflection.MethodBase" />
+        <property name="StackTrace" propertytype="System.String" />
+        <property name="HelpLink" propertytype="System.String" />
+        <property name="Source" propertytype="System.String" />
+        <property name="HResult" propertytype="System.Int32" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetBaseException()" argnames="" returntype="System.Exception" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="ValueType" namespace="System">
+        <constructor name="ValueType()" argnames="" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="SystemException" namespace="System">
+        <constructor name="SystemException()" argnames="" />
+        <constructor name="SystemException(System.String)" argnames="message" />
+        <constructor name="SystemException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="SystemException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="OutOfMemoryException" namespace="System">
+        <constructor name="OutOfMemoryException()" argnames="" />
+        <constructor name="OutOfMemoryException(System.String)" argnames="message" />
+        <constructor name="OutOfMemoryException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="OutOfMemoryException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="StackOverflowException" namespace="System">
+        <constructor name="StackOverflowException()" argnames="" />
+        <constructor name="StackOverflowException(System.String)" argnames="message" />
+        <constructor name="StackOverflowException(System.String, System.Exception)" argnames="message, innerException" />
+    </class>
+    <class name="ExecutionEngineException" namespace="System">
+        <constructor name="ExecutionEngineException()" argnames="" />
+        <constructor name="ExecutionEngineException(System.String)" argnames="message" />
+        <constructor name="ExecutionEngineException(System.String, System.Exception)" argnames="message, innerException" />
+    </class>
+    <class name="Delegate" namespace="System">
+        <constructor name="Delegate(System.Object, System.String)" argnames="target, method" />
+        <constructor name="Delegate(System.Type, System.String)" argnames="target, method" />
+        <property name="Method" propertytype="System.Reflection.MethodInfo" />
+        <property name="Target" propertytype="System.Object" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="RemoveImpl(System.Delegate)" argnames="d" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="d" returntype="System.Delegate" />
+        <method name="GetMethodImpl()" argnames="" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInvocationList()" argnames="" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" returntype="System.Object" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="DynamicInvoke(System.Object[])" argnames="args" returntype="System.Object" />
+        <method name="Combine(System.Delegate, System.Delegate)" argnames="a, b" returntype="System.Delegate" />
+        <method name="Combine(System.Delegate[])" argnames="delegates" returntype="System.Delegate" />
+        <method name="Remove(System.Delegate, System.Delegate)" argnames="source, value" returntype="System.Delegate" />
+        <method name="CreateDelegate(System.Type, System.Object, System.String)" argnames="type, target, method" returntype="System.Delegate" />
+        <method name="CreateDelegate(System.Type, System.Object, System.String, System.Boolean)" argnames="type, target, method, ignoreCase" returntype="System.Delegate" />
+        <method name="CreateDelegate(System.Type, System.Type, System.String)" argnames="type, target, method" returntype="System.Delegate" />
+        <method name="CreateDelegate(System.Type, System.Reflection.MethodInfo)" argnames="type, method" returntype="System.Delegate" />
+        <operator name="op_Equality(System.Delegate, System.Delegate)" argnames="d1, d2" />
+        <operator name="op_Inequality(System.Delegate, System.Delegate)" argnames="d1, d2" />
+    </class>
+    <class name="MemberAccessException" namespace="System">
+        <constructor name="MemberAccessException()" argnames="" />
+        <constructor name="MemberAccessException(System.String)" argnames="message" />
+        <constructor name="MemberAccessException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="MemberAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Activator" namespace="System">
+        <method name="CreateInstance(System.Type, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="type, bindingAttr, binder, args, culture" returntype="System.Object" />
+        <method name="CreateInstance(System.Type, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])" argnames="type, bindingAttr, binder, args, culture, activationAttributes" returntype="System.Object" />
+        <method name="CreateInstance(System.Type, System.Object[])" argnames="type, args" returntype="System.Object" />
+        <method name="CreateInstance(System.Type, System.Object[], System.Object[])" argnames="type, args, activationAttributes" returntype="System.Object" />
+        <method name="CreateInstance(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="CreateInstance(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.Type, System.Boolean)" argnames="type, nonPublic" returntype="System.Object" />
+        <method name="CreateInstanceFrom(System.String, System.String)" argnames="assemblyFile, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstanceFrom(System.String, System.String, System.Object[])" argnames="assemblyFile, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityInfo" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyFile, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityInfo" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateComInstanceFrom(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="GetObject(System.Type, System.String)" argnames="type, url" returntype="System.Object" />
+        <method name="GetObject(System.Type, System.String, System.Object)" argnames="type, url, state" returntype="System.Object" />
+    </class>
+    <class name="ApplicationException" namespace="System">
+        <constructor name="ApplicationException()" argnames="" />
+        <constructor name="ApplicationException(System.String)" argnames="message" />
+        <constructor name="ApplicationException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="ApplicationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="EventArgs" namespace="System">
+        <constructor name="EventArgs()" argnames="" />
+        <field name="Empty" />
+    </class>
+    <class name="ResolveEventArgs" namespace="System">
+        <constructor name="ResolveEventArgs(System.String)" argnames="name" />
+        <property name="Name" propertytype="System.String" />
+    </class>
+    <class name="AssemblyLoadEventArgs" namespace="System">
+        <constructor name="AssemblyLoadEventArgs(System.Reflection.Assembly)" argnames="loadedAssembly" />
+        <property name="LoadedAssembly" propertytype="System.Reflection.Assembly" />
+    </class>
+    <class name="MarshalByRefObject" namespace="System">
+        <constructor name="MarshalByRefObject()" argnames="" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
+        <method name="GetLifetimeService()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="AppDomain" namespace="System">
+        <property name="CurrentDomain" propertytype="System.AppDomain" />
+        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
+        <property name="InternalEvidence" propertytype="System.Security.Policy.Evidence" />
+        <property name="FriendlyName" propertytype="System.String" />
+        <property name="BaseDirectory" propertytype="System.String" />
+        <property name="RelativeSearchPath" propertytype="System.String" />
+        <property name="ShadowCopyFiles" propertytype="System.Boolean" />
+        <property name="DynamicDirectory" propertytype="System.String" />
+        <property name="RemotingData" propertytype="System.Runtime.Remoting.DomainSpecificRemotingData" />
+        <property name="FusionStore" propertytype="System.AppDomainSetup" />
+        <property name="LocalStore" propertytype="System.Collections.Hashtable" />
+        <property name="SetupInformation" propertytype="System.AppDomainSetup" />
+        <method name="DoCallBack(System.CrossAppDomainDelegate)" argnames="callBackDelegate" returntype="System.Void" />
+        <method name="SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy)" argnames="policy" returntype="System.Void" />
+        <method name="SetThreadPrincipal(System.Security.Principal.IPrincipal)" argnames="principal" returntype="System.Void" />
+        <method name="SetAppDomainPolicy(System.Security.Policy.PolicyLevel)" argnames="domainPolicy" returntype="System.Void" />
+        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
+        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
+        <method name="SetCachePath(System.String)" argnames="path" returntype="System.Void" />
+        <method name="ClearShadowCopyPath()" argnames="" returntype="System.Void" />
+        <method name="SetShadowCopyPath(System.String)" argnames="path" returntype="System.Void" />
+        <method name="ClearPrivatePath()" argnames="" returntype="System.Void" />
+        <method name="AppendPrivatePath(System.String)" argnames="path" returntype="System.Void" />
+        <method name="GetAssemblies()" argnames="" returntype="System.Reflection.Assembly[]" />
+        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[])" argnames="assemblyFile, assemblySecurity, args" returntype="System.Int32" />
+        <method name="ExecuteAssembly(System.String)" argnames="assemblyFile" returntype="System.Int32" />
+        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence)" argnames="assemblyFile, assemblySecurity" returntype="System.Int32" />
+        <method name="Load(System.String, System.Security.Policy.Evidence)" argnames="assemblyString, assemblySecurity" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)" argnames="assemblyRef, assemblySecurity" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)" argnames="rawAssembly, rawSymbolStore, securityEvidence" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[], System.Byte[])" argnames="rawAssembly, rawSymbolStore" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[])" argnames="rawAssembly" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.String)" argnames="assemblyString" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Reflection.AssemblyName)" argnames="assemblyRef" returntype="System.Reflection.Assembly" />
+        <method name="CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyFile, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstanceFrom(System.String, System.String, System.Object[])" argnames="assemblyFile, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstanceFrom(System.String, System.String)" argnames="assemblyFile, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions, isSynchronized" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence)" argnames="name, access, dir, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence)" argnames="name, access, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String)" argnames="name, access, dir" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)" argnames="name, access" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="GetType()" argnames="" returntype="System.Type" />
+        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="CreateComInstanceFrom(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="IsFinalizingForUnload()" argnames="" returntype="System.Boolean" />
+        <method name="GetCurrentThreadId()" argnames="" returntype="System.Int32" />
+        <method name="Unload(System.AppDomain)" argnames="domain" returntype="System.Void" />
+        <method name="CreateDomain(System.String, System.Security.Policy.Evidence)" argnames="friendlyName, securityInfo" returntype="System.AppDomain" />
+        <method name="CreateDomain(System.String, System.Security.Policy.Evidence, System.String, System.String, System.Boolean)" argnames="friendlyName, securityInfo, appBasePath, appRelativeSearchPath, shadowCopyFiles" returntype="System.AppDomain" />
+        <method name="CreateDomain(System.String)" argnames="friendlyName" returntype="System.AppDomain" />
+        <method name="CreateDomain(System.String, System.Security.Policy.Evidence, System.AppDomainSetup)" argnames="friendlyName, securityInfo, info" returntype="System.AppDomain" />
+        <method name="SetShadowCopyFiles()" argnames="" returntype="System.Void" />
+        <method name="SetDynamicBase(System.String)" argnames="path" returntype="System.Void" />
+        <method name="CreateInstanceAndUnwrap(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Object" />
+        <method name="CreateInstanceAndUnwrap(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Object" />
+        <method name="CreateInstanceAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Object" />
+        <method name="CreateInstanceFromAndUnwrap(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Object" />
+        <method name="CreateInstanceFromAndUnwrap(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Object" />
+        <method name="CreateInstanceFromAndUnwrap(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Object" />
+        <event name="DomainUnload" />
+        <event name="AssemblyLoad" />
+        <event name="ProcessExit" />
+        <event name="TypeResolve" />
+        <event name="ResourceResolve" />
+        <event name="AssemblyResolve" />
+        <event name="UnhandledException" />
+    </class>
+    <class name="Attribute" namespace="System">
+        <constructor name="Attribute()" argnames="" />
+        <property name="TypeId" propertytype="System.Object" />
+        <method name="IsDefaultAttribute()" argnames="" returntype="System.Boolean" />
+        <method name="Match(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Reflection.MemberInfo, System.Type)" argnames="element, type" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.MemberInfo, System.Type, System.Boolean)" argnames="element, type, inherit" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.MemberInfo)" argnames="element" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.MemberInfo, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.ParameterInfo, System.Type)" argnames="element, attributeType" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.ParameterInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Module, System.Type)" argnames="element, attributeType" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Module, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Assembly, System.Type)" argnames="element, attributeType" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Assembly, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.ParameterInfo)" argnames="element" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.ParameterInfo, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Module)" argnames="element" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Module, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Assembly)" argnames="element" returntype="System.Attribute[]" />
+        <method name="GetCustomAttributes(System.Reflection.Assembly, System.Boolean)" argnames="element, inherit" returntype="System.Attribute[]" />
+        <method name="IsDefined(System.Reflection.MemberInfo, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
+        <method name="IsDefined(System.Reflection.MemberInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
+        <method name="IsDefined(System.Reflection.ParameterInfo, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
+        <method name="IsDefined(System.Reflection.ParameterInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
+        <method name="IsDefined(System.Reflection.Module, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
+        <method name="IsDefined(System.Reflection.Module, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
+        <method name="IsDefined(System.Reflection.Assembly, System.Type)" argnames="element, attributeType" returntype="System.Boolean" />
+        <method name="IsDefined(System.Reflection.Assembly, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttribute(System.Reflection.MemberInfo, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
+        <method name="GetCustomAttribute(System.Reflection.MemberInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
+        <method name="GetCustomAttribute(System.Reflection.ParameterInfo, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
+        <method name="GetCustomAttribute(System.Reflection.ParameterInfo, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
+        <method name="GetCustomAttribute(System.Reflection.Module, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
+        <method name="GetCustomAttribute(System.Reflection.Module, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
+        <method name="GetCustomAttribute(System.Reflection.Assembly, System.Type)" argnames="element, attributeType" returntype="System.Attribute" />
+        <method name="GetCustomAttribute(System.Reflection.Assembly, System.Type, System.Boolean)" argnames="element, attributeType, inherit" returntype="System.Attribute" />
+    </class>
+    <class name="LoaderOptimizationAttribute" namespace="System">
+        <constructor name="LoaderOptimizationAttribute(System.Byte)" argnames="value" />
+        <constructor name="LoaderOptimizationAttribute(System.LoaderOptimization)" argnames="value" />
+        <property name="Value" propertytype="System.LoaderOptimization" />
+    </class>
+    <class name="AppDomainUnloadedException" namespace="System">
+        <constructor name="AppDomainUnloadedException()" argnames="" />
+        <constructor name="AppDomainUnloadedException(System.String)" argnames="message" />
+        <constructor name="AppDomainUnloadedException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="AppDomainUnloadedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="ArgumentException" namespace="System">
+        <constructor name="ArgumentException()" argnames="" />
+        <constructor name="ArgumentException(System.String)" argnames="message" />
+        <constructor name="ArgumentException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="ArgumentException(System.String, System.String, System.Exception)" argnames="message, paramName, innerException" />
+        <constructor name="ArgumentException(System.String, System.String)" argnames="message, paramName" />
+        <constructor name="ArgumentException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" propertytype="System.String" />
+        <property name="ParamName" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="ArgumentNullException" namespace="System">
+        <constructor name="ArgumentNullException()" argnames="" />
+        <constructor name="ArgumentNullException(System.String)" argnames="paramName" />
+        <constructor name="ArgumentNullException(System.String, System.String)" argnames="paramName, message" />
+        <constructor name="ArgumentNullException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="NullMessage" propertytype="System.String" />
+    </class>
+    <class name="ArgumentOutOfRangeException" namespace="System">
+        <constructor name="ArgumentOutOfRangeException()" argnames="" />
+        <constructor name="ArgumentOutOfRangeException(System.String)" argnames="paramName" />
+        <constructor name="ArgumentOutOfRangeException(System.String, System.String)" argnames="paramName, message" />
+        <constructor name="ArgumentOutOfRangeException(System.String, System.Object, System.String)" argnames="paramName, actualValue, message" />
+        <constructor name="ArgumentOutOfRangeException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="RangeMessage" propertytype="System.String" />
+        <property name="Message" propertytype="System.String" />
+        <property name="ActualValue" propertytype="System.Object" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="ArithmeticException" namespace="System">
+        <constructor name="ArithmeticException()" argnames="" />
+        <constructor name="ArithmeticException(System.String)" argnames="message" />
+        <constructor name="ArithmeticException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="ArithmeticException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="ArrayTypeMismatchException" namespace="System">
+        <constructor name="ArrayTypeMismatchException()" argnames="" />
+        <constructor name="ArrayTypeMismatchException(System.String)" argnames="message" />
+        <constructor name="ArrayTypeMismatchException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="ArrayTypeMismatchException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="AttributeUsageAttribute" namespace="System">
+        <constructor name="AttributeUsageAttribute(System.AttributeTargets)" argnames="validOn" />
+        <property name="ValidOn" propertytype="System.AttributeTargets" />
+        <property name="AllowMultiple" propertytype="System.Boolean" />
+        <property name="Inherited" propertytype="System.Boolean" />
+    </class>
+    <class name="BadImageFormatException" namespace="System">
+        <constructor name="BadImageFormatException()" argnames="" />
+        <constructor name="BadImageFormatException(System.String)" argnames="message" />
+        <constructor name="BadImageFormatException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="BadImageFormatException(System.String, System.String)" argnames="message, fileName" />
+        <constructor name="BadImageFormatException(System.String, System.String, System.Exception)" argnames="message, fileName, inner" />
+        <constructor name="BadImageFormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" propertytype="System.String" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="FusionLog" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="BitConverter" namespace="System">
+        <field name="IsLittleEndian" />
+        <method name="GetBytes(System.Boolean)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Char)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Int16)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Int32)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Int64)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.UInt16)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.UInt32)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.UInt64)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Single)" argnames="value" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Double)" argnames="value" returntype="System.Byte[]" />
+        <method name="ToChar(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Char" />
+        <method name="ToInt16(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Int16" />
+        <method name="ToInt32(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
+        <method name="ToInt64(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Int64" />
+        <method name="ToUInt16(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.UInt16" />
+        <method name="ToUInt32(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.UInt32" />
+        <method name="ToUInt64(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.UInt64" />
+        <method name="ToSingle(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Single" />
+        <method name="ToDouble(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Double" />
+        <method name="ToString(System.Byte[], System.Int32, System.Int32)" argnames="value, startIndex, length" returntype="System.String" />
+        <method name="ToString(System.Byte[])" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.String" />
+        <method name="ToBoolean(System.Byte[], System.Int32)" argnames="value, startIndex" returntype="System.Boolean" />
+        <method name="DoubleToInt64Bits(System.Double)" argnames="value" returntype="System.Int64" />
+        <method name="Int64BitsToDouble(System.Int64)" argnames="value" returntype="System.Double" />
+    </class>
+    <class name="Buffer" namespace="System">
+        <method name="BlockCopy(System.Array, System.Int32, System.Array, System.Int32, System.Int32)" argnames="src, srcOffset, dst, dstOffset, count" returntype="System.Void" />
+        <method name="GetByte(System.Array, System.Int32)" argnames="array, index" returntype="System.Byte" />
+        <method name="SetByte(System.Array, System.Int32, System.Byte)" argnames="array, index, value" returntype="System.Void" />
+        <method name="ByteLength(System.Array)" argnames="array" returntype="System.Int32" />
+    </class>
+    <class name="CannotUnloadAppDomainException" namespace="System">
+        <constructor name="CannotUnloadAppDomainException()" argnames="" />
+        <constructor name="CannotUnloadAppDomainException(System.String)" argnames="message" />
+        <constructor name="CannotUnloadAppDomainException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="CannotUnloadAppDomainException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="CharEnumerator" namespace="System">
+        <property name="Current" propertytype="System.Char" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="CLSCompliantAttribute" namespace="System">
+        <constructor name="CLSCompliantAttribute(System.Boolean)" argnames="isCompliant" />
+        <property name="IsCompliant" propertytype="System.Boolean" />
+    </class>
+    <class name="TypeUnloadedException" namespace="System">
+        <constructor name="TypeUnloadedException()" argnames="" />
+        <constructor name="TypeUnloadedException(System.String)" argnames="message" />
+        <constructor name="TypeUnloadedException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="TypeUnloadedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="__ComObject" namespace="System" />
+    <class name="Console" namespace="System">
+        <property name="Error" propertytype="System.IO.TextWriter" />
+        <property name="In" propertytype="System.IO.TextReader" />
+        <property name="Out" propertytype="System.IO.TextWriter" />
+        <method name="OpenStandardError()" argnames="" returntype="System.IO.Stream" />
+        <method name="OpenStandardError(System.Int32)" argnames="bufferSize" returntype="System.IO.Stream" />
+        <method name="OpenStandardInput()" argnames="" returntype="System.IO.Stream" />
+        <method name="OpenStandardInput(System.Int32)" argnames="bufferSize" returntype="System.IO.Stream" />
+        <method name="OpenStandardOutput()" argnames="" returntype="System.IO.Stream" />
+        <method name="OpenStandardOutput(System.Int32)" argnames="bufferSize" returntype="System.IO.Stream" />
+        <method name="SetIn(System.IO.TextReader)" argnames="newIn" returntype="System.Void" />
+        <method name="SetOut(System.IO.TextWriter)" argnames="newOut" returntype="System.Void" />
+        <method name="SetError(System.IO.TextWriter)" argnames="newError" returntype="System.Void" />
+        <method name="Read()" argnames="" returntype="System.Int32" />
+        <method name="ReadLine()" argnames="" returntype="System.String" />
+        <method name="WriteLine()" argnames="" returntype="System.Void" />
+        <method name="WriteLine(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Char[])" argnames="buffer" returntype="System.Void" />
+        <method name="WriteLine(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteLine(System.Decimal)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Double)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Single)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.UInt32)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.UInt64)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2, arg3" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
+        <method name="Write(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
+        <method name="Write(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
+        <method name="Write(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
+        <method name="Write(System.String, System.Object, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2, arg3" returntype="System.Void" />
+        <method name="Write(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
+        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
+        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Decimal)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt32)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt64)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
+    </class>
+    <class name="ContextMarshalException" namespace="System">
+        <constructor name="ContextMarshalException()" argnames="" />
+        <constructor name="ContextMarshalException(System.String)" argnames="message" />
+        <constructor name="ContextMarshalException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="ContextMarshalException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Convert" namespace="System">
+        <field name="DBNull" />
+        <method name="GetTypeCode(System.Object)" argnames="value" returntype="System.TypeCode" />
+        <method name="IsDBNull(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ChangeType(System.Object, System.TypeCode)" argnames="value, typeCode" returntype="System.Object" />
+        <method name="ChangeType(System.Object, System.TypeCode, System.IFormatProvider)" argnames="value, typeCode, provider" returntype="System.Object" />
+        <method name="ChangeType(System.Object, System.Type)" argnames="value, conversionType" returntype="System.Object" />
+        <method name="ChangeType(System.Object, System.Type, System.IFormatProvider)" argnames="value, conversionType, provider" returntype="System.Object" />
+        <method name="ToBoolean(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Boolean)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.SByte)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Char)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Byte)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Int16)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.UInt16)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Int32)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.UInt32)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Int64)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.UInt64)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Single)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Double)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.Decimal)" argnames="value" returntype="System.Boolean" />
+        <method name="ToBoolean(System.DateTime)" argnames="value" returntype="System.Boolean" />
+        <method name="ToChar(System.Object)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Char" />
+        <method name="ToChar(System.Boolean)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Char)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.SByte)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Byte)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Int16)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.UInt16)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Int32)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.UInt32)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Int64)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.UInt64)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.String)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Char" />
+        <method name="ToChar(System.Single)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Double)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.Decimal)" argnames="value" returntype="System.Char" />
+        <method name="ToChar(System.DateTime)" argnames="value" returntype="System.Char" />
+        <method name="ToSByte(System.Object)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.SByte" />
+        <method name="ToSByte(System.Boolean)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.SByte)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Char)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Byte)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Int16)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.UInt16)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Int32)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.UInt32)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Int64)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.UInt64)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Single)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Double)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.Decimal)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.String)" argnames="value" returntype="System.SByte" />
+        <method name="ToSByte(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.SByte" />
+        <method name="ToSByte(System.DateTime)" argnames="value" returntype="System.SByte" />
+        <method name="ToByte(System.Object)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Byte" />
+        <method name="ToByte(System.Boolean)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Byte)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Char)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.SByte)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Int16)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.UInt16)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Int32)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.UInt32)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Int64)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.UInt64)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Single)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Double)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.Decimal)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.String)" argnames="value" returntype="System.Byte" />
+        <method name="ToByte(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Byte" />
+        <method name="ToByte(System.DateTime)" argnames="value" returntype="System.Byte" />
+        <method name="ToInt16(System.Object)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Int16" />
+        <method name="ToInt16(System.Boolean)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Char)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.SByte)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Byte)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.UInt16)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Int32)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.UInt32)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Int16)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Int64)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.UInt64)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Single)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Double)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.Decimal)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.String)" argnames="value" returntype="System.Int16" />
+        <method name="ToInt16(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Int16" />
+        <method name="ToInt16(System.DateTime)" argnames="value" returntype="System.Int16" />
+        <method name="ToUInt16(System.Object)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Boolean)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Char)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.SByte)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Byte)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Int16)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Int32)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.UInt16)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.UInt32)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Int64)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.UInt64)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Single)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Double)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.Decimal)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.String)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt16(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt16" />
+        <method name="ToUInt16(System.DateTime)" argnames="value" returntype="System.UInt16" />
+        <method name="ToInt32(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Int32" />
+        <method name="ToInt32(System.Boolean)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Char)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.SByte)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Byte)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Int16)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.UInt16)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.UInt32)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Int32)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Int64)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.UInt64)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Single)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Double)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.Decimal)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.String)" argnames="value" returntype="System.Int32" />
+        <method name="ToInt32(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Int32" />
+        <method name="ToInt32(System.DateTime)" argnames="value" returntype="System.Int32" />
+        <method name="ToUInt32(System.Object)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Boolean)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Char)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.SByte)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Byte)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Int16)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.UInt16)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Int32)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.UInt32)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Int64)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.UInt64)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Single)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Double)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.Decimal)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.String)" argnames="value" returntype="System.UInt32" />
+        <method name="ToUInt32(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt32" />
+        <method name="ToUInt32(System.DateTime)" argnames="value" returntype="System.UInt32" />
+        <method name="ToInt64(System.Object)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Int64" />
+        <method name="ToInt64(System.Boolean)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Char)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.SByte)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Byte)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Int16)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.UInt16)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Int32)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.UInt32)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.UInt64)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Int64)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Single)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Double)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.Decimal)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.String)" argnames="value" returntype="System.Int64" />
+        <method name="ToInt64(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Int64" />
+        <method name="ToInt64(System.DateTime)" argnames="value" returntype="System.Int64" />
+        <method name="ToUInt64(System.Object)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Boolean)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Char)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.SByte)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Byte)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Int16)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.UInt16)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Int32)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.UInt32)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Int64)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.UInt64)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Single)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Double)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.Decimal)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.String)" argnames="value" returntype="System.UInt64" />
+        <method name="ToUInt64(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.UInt64" />
+        <method name="ToUInt64(System.DateTime)" argnames="value" returntype="System.UInt64" />
+        <method name="ToSingle(System.Object)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Single" />
+        <method name="ToSingle(System.SByte)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Byte)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Char)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Int16)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.UInt16)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Int32)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.UInt32)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Int64)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.UInt64)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Single)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Double)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.Decimal)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.String)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Single" />
+        <method name="ToSingle(System.Boolean)" argnames="value" returntype="System.Single" />
+        <method name="ToSingle(System.DateTime)" argnames="value" returntype="System.Single" />
+        <method name="ToDouble(System.Object)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Double" />
+        <method name="ToDouble(System.SByte)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Byte)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Int16)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Char)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.UInt16)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Int32)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.UInt32)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Int64)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.UInt64)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Single)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Double)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.Decimal)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.String)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Double" />
+        <method name="ToDouble(System.Boolean)" argnames="value" returntype="System.Double" />
+        <method name="ToDouble(System.DateTime)" argnames="value" returntype="System.Double" />
+        <method name="ToDecimal(System.Object)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.Decimal" />
+        <method name="ToDecimal(System.SByte)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Byte)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Char)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Int16)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.UInt16)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Int32)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.UInt32)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Int64)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.UInt64)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Single)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Double)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.String)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Decimal)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.Boolean)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDecimal(System.DateTime)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDateTime(System.DateTime)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Object)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.DateTime" />
+        <method name="ToDateTime(System.String)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.DateTime" />
+        <method name="ToDateTime(System.SByte)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Byte)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Int16)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.UInt16)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Int32)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.UInt32)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Int64)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.UInt64)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Boolean)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Char)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Single)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Double)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Decimal)" argnames="value" returntype="System.DateTime" />
+        <method name="ToString(System.Object)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Object, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Boolean)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Boolean, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Char)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Char, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.SByte)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.SByte, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Byte)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Byte, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Int16)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Int16, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.UInt16)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.UInt16, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Int32)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Int32, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.UInt32)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.UInt32, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Int64)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Int64, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.UInt64)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.UInt64, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Single)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Single, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Double)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Double, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.Decimal)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.Decimal, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.DateTime)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.DateTime, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="value" returntype="System.String" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="value, provider" returntype="System.String" />
+        <method name="ToByte(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Byte" />
+        <method name="ToSByte(System.String, System.Int32)" argnames="value, fromBase" returntype="System.SByte" />
+        <method name="ToInt16(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Int16" />
+        <method name="ToUInt16(System.String, System.Int32)" argnames="value, fromBase" returntype="System.UInt16" />
+        <method name="ToInt32(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Int32" />
+        <method name="ToUInt32(System.String, System.Int32)" argnames="value, fromBase" returntype="System.UInt32" />
+        <method name="ToInt64(System.String, System.Int32)" argnames="value, fromBase" returntype="System.Int64" />
+        <method name="ToUInt64(System.String, System.Int32)" argnames="value, fromBase" returntype="System.UInt64" />
+        <method name="ToString(System.Byte, System.Int32)" argnames="value, toBase" returntype="System.String" />
+        <method name="ToString(System.Int16, System.Int32)" argnames="value, toBase" returntype="System.String" />
+        <method name="ToString(System.Int32, System.Int32)" argnames="value, toBase" returntype="System.String" />
+        <method name="ToString(System.Int64, System.Int32)" argnames="value, toBase" returntype="System.String" />
+        <method name="ToBase64String(System.Byte[])" argnames="inArray" returntype="System.String" />
+        <method name="ToBase64String(System.Byte[], System.Int32, System.Int32)" argnames="inArray, offset, length" returntype="System.String" />
+        <method name="FromBase64String(System.String)" argnames="s" returntype="System.Byte[]" />
+        <method name="ToBase64CharArray(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="inArray, offsetIn, length, outArray, offsetOut" returntype="System.Int32" />
+        <method name="FromBase64CharArray(System.Char[], System.Int32, System.Int32)" argnames="inArray, offset, length" returntype="System.Byte[]" />
+    </class>
+    <class name="ContextBoundObject" namespace="System">
+        <constructor name="ContextBoundObject()" argnames="" />
+    </class>
+    <class name="ContextStaticAttribute" namespace="System">
+        <constructor name="ContextStaticAttribute()" argnames="" />
+    </class>
+    <class name="TimeZone" namespace="System">
+        <constructor name="TimeZone()" argnames="" />
+        <property name="CurrentTimeZone" propertytype="System.TimeZone" />
+        <property name="StandardName" propertytype="System.String" />
+        <property name="DaylightName" propertytype="System.String" />
+        <method name="IsDaylightSavingTime(System.DateTime)" argnames="time" returntype="System.Boolean" />
+        <method name="GetDaylightChanges(System.Int32)" argnames="year" returntype="System.Globalization.DaylightTime" />
+        <method name="ToLocalTime(System.DateTime)" argnames="time" returntype="System.DateTime" />
+        <method name="ToUniversalTime(System.DateTime)" argnames="time" returntype="System.DateTime" />
+        <method name="GetUtcOffset(System.DateTime)" argnames="time" returntype="System.TimeSpan" />
+        <method name="IsDaylightSavingTime(System.DateTime, System.Globalization.DaylightTime)" argnames="time, daylightTimes" returntype="System.Boolean" />
+    </class>
+    <class name="DBNull" namespace="System">
+        <field name="Value" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="DivideByZeroException" namespace="System">
+        <constructor name="DivideByZeroException()" argnames="" />
+        <constructor name="DivideByZeroException(System.String)" argnames="message" />
+        <constructor name="DivideByZeroException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="DivideByZeroException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="DuplicateWaitObjectException" namespace="System">
+        <constructor name="DuplicateWaitObjectException()" argnames="" />
+        <constructor name="DuplicateWaitObjectException(System.String)" argnames="parameterName" />
+        <constructor name="DuplicateWaitObjectException(System.String, System.String)" argnames="parameterName, message" />
+        <constructor name="DuplicateWaitObjectException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="DuplicateWaitObjectMessage" propertytype="System.String" />
+    </class>
+    <class name="TypeLoadException" namespace="System">
+        <constructor name="TypeLoadException()" argnames="" />
+        <constructor name="TypeLoadException(System.String)" argnames="message" />
+        <constructor name="TypeLoadException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="TypeLoadException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="EntryPointNotFoundException" namespace="System">
+        <constructor name="EntryPointNotFoundException()" argnames="" />
+        <constructor name="EntryPointNotFoundException(System.String)" argnames="message" />
+        <constructor name="EntryPointNotFoundException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="EntryPointNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="DllNotFoundException" namespace="System">
+        <constructor name="DllNotFoundException()" argnames="" />
+        <constructor name="DllNotFoundException(System.String)" argnames="message" />
+        <constructor name="DllNotFoundException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="DllNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Environment" namespace="System">
+        <enum name="SpecialFolder" namespace="System">
+            <field name="ApplicationData" />
+            <field name="CommonApplicationData" />
+            <field name="LocalApplicationData" />
+            <field name="Cookies" />
+            <field name="Favorites" />
+            <field name="History" />
+            <field name="InternetCache" />
+            <field name="Programs" />
+            <field name="Recent" />
+            <field name="SendTo" />
+            <field name="StartMenu" />
+            <field name="Startup" />
+            <field name="System" />
+            <field name="Templates" />
+            <field name="DesktopDirectory" />
+            <field name="Personal" />
+            <field name="ProgramFiles" />
+            <field name="CommonProgramFiles" />
+        </enum>
+        <property name="TickCount" propertytype="System.Int32" />
+        <property name="ExitCode" propertytype="System.Int32" />
+        <property name="CommandLine" propertytype="System.String" />
+        <property name="CurrentDirectory" propertytype="System.String" />
+        <property name="SystemDirectory" propertytype="System.String" />
+        <property name="MachineName" propertytype="System.String" />
+        <property name="NewLine" propertytype="System.String" />
+        <property name="Version" propertytype="System.Version" />
+        <property name="WorkingSet" propertytype="System.Int64" />
+        <property name="OSVersion" propertytype="System.OperatingSystem" />
+        <property name="OSInfo" propertytype="System.Environment+OSName" />
+        <property name="StackTrace" propertytype="System.String" />
+        <property name="HasShutdownStarted" propertytype="System.Boolean" />
+        <property name="UserName" propertytype="System.String" />
+        <property name="UserInteractive" propertytype="System.Boolean" />
+        <property name="UserDomainName" propertytype="System.String" />
+        <method name="Exit(System.Int32)" argnames="exitCode" returntype="System.Void" />
+        <method name="ExpandEnvironmentVariables(System.String)" argnames="name" returntype="System.String" />
+        <method name="GetCommandLineArgs()" argnames="" returntype="System.String[]" />
+        <method name="GetEnvironmentVariable(System.String)" argnames="variable" returntype="System.String" />
+        <method name="GetEnvironmentVariables()" argnames="" returntype="System.Collections.IDictionary" />
+        <method name="GetLogicalDrives()" argnames="" returntype="System.String[]" />
+        <method name="GetFolderPath(System.Environment.SpecialFolder)" argnames="folder" returntype="System.String" />
+    </class>
+    <class name="FieldAccessException" namespace="System">
+        <constructor name="FieldAccessException()" argnames="" />
+        <constructor name="FieldAccessException(System.String)" argnames="message" />
+        <constructor name="FieldAccessException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="FieldAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="FlagsAttribute" namespace="System">
+        <constructor name="FlagsAttribute()" argnames="" />
+    </class>
+    <class name="FormatException" namespace="System">
+        <constructor name="FormatException()" argnames="" />
+        <constructor name="FormatException(System.String)" argnames="message" />
+        <constructor name="FormatException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="FormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="GC" namespace="System">
+        <property name="MaxGeneration" propertytype="System.Int32" />
+        <method name="GetGeneration(System.Object)" argnames="obj" returntype="System.Int32" />
+        <method name="Collect(System.Int32)" argnames="generation" returntype="System.Void" />
+        <method name="Collect()" argnames="" returntype="System.Void" />
+        <method name="KeepAlive(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="GetGeneration(System.WeakReference)" argnames="wo" returntype="System.Int32" />
+        <method name="WaitForPendingFinalizers()" argnames="" returntype="System.Void" />
+        <method name="SuppressFinalize(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="ReRegisterForFinalize(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="GetTotalMemory(System.Boolean)" argnames="forceFullCollection" returntype="System.Int64" />
+    </class>
+    <class name="IndexOutOfRangeException" namespace="System">
+        <constructor name="IndexOutOfRangeException()" argnames="" />
+        <constructor name="IndexOutOfRangeException(System.String)" argnames="message" />
+        <constructor name="IndexOutOfRangeException(System.String, System.Exception)" argnames="message, innerException" />
+    </class>
+    <class name="InvalidCastException" namespace="System">
+        <constructor name="InvalidCastException()" argnames="" />
+        <constructor name="InvalidCastException(System.String)" argnames="message" />
+        <constructor name="InvalidCastException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="InvalidCastException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="InvalidOperationException" namespace="System">
+        <constructor name="InvalidOperationException()" argnames="" />
+        <constructor name="InvalidOperationException(System.String)" argnames="message" />
+        <constructor name="InvalidOperationException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="InvalidOperationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="InvalidProgramException" namespace="System">
+        <constructor name="InvalidProgramException()" argnames="" />
+        <constructor name="InvalidProgramException(System.String)" argnames="message" />
+        <constructor name="InvalidProgramException(System.String, System.Exception)" argnames="message, inner" />
+    </class>
+    <class name="LocalDataStoreSlot" namespace="System">
+        <property name="Manager" propertytype="System.LocalDataStoreMgr" />
+        <property name="Slot" propertytype="System.Int32" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="Math" namespace="System">
+        <field name="PI" />
+        <field name="E" />
+        <method name="Acos(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Asin(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Atan(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Atan2(System.Double, System.Double)" argnames="y, x" returntype="System.Double" />
+        <method name="Cos(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Sin(System.Double)" argnames="a" returntype="System.Double" />
+        <method name="Tan(System.Double)" argnames="a" returntype="System.Double" />
+        <method name="Cosh(System.Double)" argnames="value" returntype="System.Double" />
+        <method name="Sinh(System.Double)" argnames="value" returntype="System.Double" />
+        <method name="Tanh(System.Double)" argnames="value" returntype="System.Double" />
+        <method name="Round(System.Double)" argnames="a" returntype="System.Double" />
+        <method name="Round(System.Double, System.Int32)" argnames="value, digits" returntype="System.Double" />
+        <method name="Round(System.Decimal)" argnames="d" returntype="System.Decimal" />
+        <method name="Round(System.Decimal, System.Int32)" argnames="d, decimals" returntype="System.Decimal" />
+        <method name="Ceiling(System.Double)" argnames="a" returntype="System.Double" />
+        <method name="Floor(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Sqrt(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Log(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Log10(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Exp(System.Double)" argnames="d" returntype="System.Double" />
+        <method name="Pow(System.Double, System.Double)" argnames="x, y" returntype="System.Double" />
+        <method name="IEEERemainder(System.Double, System.Double)" argnames="x, y" returntype="System.Double" />
+        <method name="Abs(System.SByte)" argnames="value" returntype="System.SByte" />
+        <method name="Abs(System.Int16)" argnames="value" returntype="System.Int16" />
+        <method name="Abs(System.Int32)" argnames="value" returntype="System.Int32" />
+        <method name="Abs(System.Int64)" argnames="value" returntype="System.Int64" />
+        <method name="Abs(System.Single)" argnames="value" returntype="System.Single" />
+        <method name="Abs(System.Double)" argnames="value" returntype="System.Double" />
+        <method name="Abs(System.Decimal)" argnames="value" returntype="System.Decimal" />
+        <method name="Max(System.SByte, System.SByte)" argnames="val1, val2" returntype="System.SByte" />
+        <method name="Max(System.Byte, System.Byte)" argnames="val1, val2" returntype="System.Byte" />
+        <method name="Max(System.Int16, System.Int16)" argnames="val1, val2" returntype="System.Int16" />
+        <method name="Max(System.UInt16, System.UInt16)" argnames="val1, val2" returntype="System.UInt16" />
+        <method name="Max(System.Int32, System.Int32)" argnames="val1, val2" returntype="System.Int32" />
+        <method name="Max(System.UInt32, System.UInt32)" argnames="val1, val2" returntype="System.UInt32" />
+        <method name="Max(System.Int64, System.Int64)" argnames="val1, val2" returntype="System.Int64" />
+        <method name="Max(System.UInt64, System.UInt64)" argnames="val1, val2" returntype="System.UInt64" />
+        <method name="Max(System.Single, System.Single)" argnames="val1, val2" returntype="System.Single" />
+        <method name="Max(System.Double, System.Double)" argnames="val1, val2" returntype="System.Double" />
+        <method name="Max(System.Decimal, System.Decimal)" argnames="val1, val2" returntype="System.Decimal" />
+        <method name="Min(System.SByte, System.SByte)" argnames="val1, val2" returntype="System.SByte" />
+        <method name="Min(System.Byte, System.Byte)" argnames="val1, val2" returntype="System.Byte" />
+        <method name="Min(System.Int16, System.Int16)" argnames="val1, val2" returntype="System.Int16" />
+        <method name="Min(System.UInt16, System.UInt16)" argnames="val1, val2" returntype="System.UInt16" />
+        <method name="Min(System.Int32, System.Int32)" argnames="val1, val2" returntype="System.Int32" />
+        <method name="Min(System.UInt32, System.UInt32)" argnames="val1, val2" returntype="System.UInt32" />
+        <method name="Min(System.Int64, System.Int64)" argnames="val1, val2" returntype="System.Int64" />
+        <method name="Min(System.UInt64, System.UInt64)" argnames="val1, val2" returntype="System.UInt64" />
+        <method name="Min(System.Single, System.Single)" argnames="val1, val2" returntype="System.Single" />
+        <method name="Min(System.Double, System.Double)" argnames="val1, val2" returntype="System.Double" />
+        <method name="Min(System.Decimal, System.Decimal)" argnames="val1, val2" returntype="System.Decimal" />
+        <method name="Log(System.Double, System.Double)" argnames="a, newBase" returntype="System.Double" />
+        <method name="Sign(System.SByte)" argnames="value" returntype="System.Int32" />
+        <method name="Sign(System.Int16)" argnames="value" returntype="System.Int32" />
+        <method name="Sign(System.Int32)" argnames="value" returntype="System.Int32" />
+        <method name="Sign(System.Int64)" argnames="value" returntype="System.Int32" />
+        <method name="Sign(System.Single)" argnames="value" returntype="System.Int32" />
+        <method name="Sign(System.Double)" argnames="value" returntype="System.Int32" />
+        <method name="Sign(System.Decimal)" argnames="value" returntype="System.Int32" />
+    </class>
+    <class name="MethodAccessException" namespace="System">
+        <constructor name="MethodAccessException()" argnames="" />
+        <constructor name="MethodAccessException(System.String)" argnames="message" />
+        <constructor name="MethodAccessException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="MethodAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="MissingMemberException" namespace="System">
+        <constructor name="MissingMemberException()" argnames="" />
+        <constructor name="MissingMemberException(System.String)" argnames="message" />
+        <constructor name="MissingMemberException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="MissingMemberException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="MissingMemberException(System.String, System.String)" argnames="className, memberName" />
+        <field name="ClassName" />
+        <field name="MemberName" />
+        <field name="Signature" />
+        <property name="Message" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="MissingFieldException" namespace="System">
+        <constructor name="MissingFieldException()" argnames="" />
+        <constructor name="MissingFieldException(System.String)" argnames="message" />
+        <constructor name="MissingFieldException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="MissingFieldException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="MissingFieldException(System.String, System.String)" argnames="className, fieldName" />
+        <property name="Message" propertytype="System.String" />
+    </class>
+    <class name="MissingMethodException" namespace="System">
+        <constructor name="MissingMethodException()" argnames="" />
+        <constructor name="MissingMethodException(System.String)" argnames="message" />
+        <constructor name="MissingMethodException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="MissingMethodException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="MissingMethodException(System.String, System.String)" argnames="className, methodName" />
+        <property name="Message" propertytype="System.String" />
+    </class>
+    <class name="MulticastNotSupportedException" namespace="System">
+        <constructor name="MulticastNotSupportedException()" argnames="" />
+        <constructor name="MulticastNotSupportedException(System.String)" argnames="message" />
+        <constructor name="MulticastNotSupportedException(System.String, System.Exception)" argnames="message, inner" />
+    </class>
+    <class name="NonSerializedAttribute" namespace="System">
+        <constructor name="NonSerializedAttribute()" argnames="" />
+    </class>
+    <class name="NotFiniteNumberException" namespace="System">
+        <constructor name="NotFiniteNumberException()" argnames="" />
+        <constructor name="NotFiniteNumberException(System.Double)" argnames="offendingNumber" />
+        <constructor name="NotFiniteNumberException(System.String)" argnames="message" />
+        <constructor name="NotFiniteNumberException(System.String, System.Double)" argnames="message, offendingNumber" />
+        <constructor name="NotFiniteNumberException(System.String, System.Double, System.Exception)" argnames="message, offendingNumber, innerException" />
+        <constructor name="NotFiniteNumberException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="OffendingNumber" propertytype="System.Double" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="NotImplementedException" namespace="System">
+        <constructor name="NotImplementedException()" argnames="" />
+        <constructor name="NotImplementedException(System.String)" argnames="message" />
+        <constructor name="NotImplementedException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="NotImplementedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="NotSupportedException" namespace="System">
+        <constructor name="NotSupportedException()" argnames="" />
+        <constructor name="NotSupportedException(System.String)" argnames="message" />
+        <constructor name="NotSupportedException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="NotSupportedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="NullReferenceException" namespace="System">
+        <constructor name="NullReferenceException()" argnames="" />
+        <constructor name="NullReferenceException(System.String)" argnames="message" />
+        <constructor name="NullReferenceException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="NullReferenceException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="ObjectDisposedException" namespace="System">
+        <constructor name="ObjectDisposedException(System.String)" argnames="objectName" />
+        <constructor name="ObjectDisposedException(System.String, System.String)" argnames="objectName, message" />
+        <constructor name="ObjectDisposedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" propertytype="System.String" />
+        <property name="ObjectName" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="ObsoleteAttribute" namespace="System">
+        <constructor name="ObsoleteAttribute()" argnames="" />
+        <constructor name="ObsoleteAttribute(System.String)" argnames="message" />
+        <constructor name="ObsoleteAttribute(System.String, System.Boolean)" argnames="message, error" />
+        <property name="Message" propertytype="System.String" />
+        <property name="IsError" propertytype="System.Boolean" />
+    </class>
+    <class name="OperatingSystem" namespace="System">
+        <constructor name="OperatingSystem(System.PlatformID, System.Version)" argnames="platform, version" />
+        <property name="Platform" propertytype="System.PlatformID" />
+        <property name="Version" propertytype="System.Version" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="OverflowException" namespace="System">
+        <constructor name="OverflowException()" argnames="" />
+        <constructor name="OverflowException(System.String)" argnames="message" />
+        <constructor name="OverflowException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="OverflowException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="ParamArrayAttribute" namespace="System">
+        <constructor name="ParamArrayAttribute()" argnames="" />
+    </class>
+    <class name="PlatformNotSupportedException" namespace="System">
+        <constructor name="PlatformNotSupportedException()" argnames="" />
+        <constructor name="PlatformNotSupportedException(System.String)" argnames="message" />
+        <constructor name="PlatformNotSupportedException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="PlatformNotSupportedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Random" namespace="System">
+        <constructor name="Random()" argnames="" />
+        <constructor name="Random(System.Int32)" argnames="Seed" />
+        <method name="NextBytes(System.Byte[])" argnames="buffer" returntype="System.Void" />
+        <method name="NextDouble()" argnames="" returntype="System.Double" />
+        <method name="Next(System.Int32)" argnames="maxValue" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Int32)" argnames="minValue, maxValue" returntype="System.Int32" />
+        <method name="Next()" argnames="" returntype="System.Int32" />
+        <method name="Sample()" argnames="" returntype="System.Double" />
+    </class>
+    <class name="RankException" namespace="System">
+        <constructor name="RankException()" argnames="" />
+        <constructor name="RankException(System.String)" argnames="message" />
+        <constructor name="RankException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="RankException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Type" namespace="System">
+        <constructor name="Type()" argnames="" />
+        <field name="FilterAttribute" />
+        <field name="FilterName" />
+        <field name="FilterNameIgnoreCase" />
+        <field name="Missing" />
+        <field name="Delimiter" />
+        <field name="EmptyTypes" />
+        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <property name="GUID" propertytype="System.Guid" />
+        <property name="DefaultBinder" propertytype="System.Reflection.Binder" />
+        <property name="Module" propertytype="System.Reflection.Module" />
+        <property name="Assembly" propertytype="System.Reflection.Assembly" />
+        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
+        <property name="FullName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="AssemblyQualifiedName" propertytype="System.String" />
+        <property name="BaseType" propertytype="System.Type" />
+        <property name="TypeInitializer" propertytype="System.Reflection.ConstructorInfo" />
+        <property name="Attributes" propertytype="System.Reflection.TypeAttributes" />
+        <property name="IsNotPublic" propertytype="System.Boolean" />
+        <property name="IsPublic" propertytype="System.Boolean" />
+        <property name="IsNestedPublic" propertytype="System.Boolean" />
+        <property name="IsNestedPrivate" propertytype="System.Boolean" />
+        <property name="IsNestedFamily" propertytype="System.Boolean" />
+        <property name="IsNestedAssembly" propertytype="System.Boolean" />
+        <property name="IsNestedFamANDAssem" propertytype="System.Boolean" />
+        <property name="IsNestedFamORAssem" propertytype="System.Boolean" />
+        <property name="IsAutoLayout" propertytype="System.Boolean" />
+        <property name="IsLayoutSequential" propertytype="System.Boolean" />
+        <property name="IsExplicitLayout" propertytype="System.Boolean" />
+        <property name="IsClass" propertytype="System.Boolean" />
+        <property name="IsInterface" propertytype="System.Boolean" />
+        <property name="IsValueType" propertytype="System.Boolean" />
+        <property name="IsAbstract" propertytype="System.Boolean" />
+        <property name="IsSealed" propertytype="System.Boolean" />
+        <property name="IsEnum" propertytype="System.Boolean" />
+        <property name="IsSpecialName" propertytype="System.Boolean" />
+        <property name="IsImport" propertytype="System.Boolean" />
+        <property name="IsSerializable" propertytype="System.Boolean" />
+        <property name="IsAnsiClass" propertytype="System.Boolean" />
+        <property name="IsUnicodeClass" propertytype="System.Boolean" />
+        <property name="IsAutoClass" propertytype="System.Boolean" />
+        <property name="IsArray" propertytype="System.Boolean" />
+        <property name="IsByRef" propertytype="System.Boolean" />
+        <property name="IsPointer" propertytype="System.Boolean" />
+        <property name="IsPrimitive" propertytype="System.Boolean" />
+        <property name="IsCOMObject" propertytype="System.Boolean" />
+        <property name="IsGenericCOMObject" propertytype="System.Boolean" />
+        <property name="HasElementType" propertytype="System.Boolean" />
+        <property name="IsContextful" propertytype="System.Boolean" />
+        <property name="IsMarshalByRef" propertytype="System.Boolean" />
+        <property name="HasProxyAttribute" propertytype="System.Boolean" />
+        <property name="UnderlyingSystemType" propertytype="System.Type" />
+        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
+        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetMember(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
+        <method name="GetProperty(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetProperty(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
+        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
+        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetMethod(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
+        <method name="IsAssignableFrom(System.Type)" argnames="c" returntype="System.Boolean" />
+        <method name="IsInstanceOfType(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="IsSubclassOf(System.Type)" argnames="c" returntype="System.Boolean" />
+        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetElementType()" argnames="" returntype="System.Type" />
+        <method name="IsMarshalByRefImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsContextfulImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
+        <method name="IsValueTypeImpl()" argnames="" returntype="System.Boolean" />
+        <method name="FindMembers(System.Reflection.MemberTypes, System.Reflection.BindingFlags, System.Reflection.MemberFilter, System.Object)" argnames="memberType, bindingAttr, filter, filterCriteria" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetDefaultMembers()" argnames="" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
+        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
+        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
+        <method name="FindInterfaces(System.Reflection.TypeFilter, System.Object)" argnames="filter, filterCriteria" returntype="System.Type[]" />
+        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
+        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
+        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
+        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
+        <method name="GetArrayRank()" argnames="" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="typeName, throwOnError, ignoreCase" returntype="System.Type" />
+        <method name="GetType(System.String, System.Boolean)" argnames="typeName, throwOnError" returntype="System.Type" />
+        <method name="GetType(System.String)" argnames="typeName" returntype="System.Type" />
+        <method name="GetTypeFromProgID(System.String)" argnames="progID" returntype="System.Type" />
+        <method name="GetTypeFromProgID(System.String, System.Boolean)" argnames="progID, throwOnError" returntype="System.Type" />
+        <method name="GetTypeFromProgID(System.String, System.String)" argnames="progID, server" returntype="System.Type" />
+        <method name="GetTypeFromProgID(System.String, System.String, System.Boolean)" argnames="progID, server, throwOnError" returntype="System.Type" />
+        <method name="GetTypeFromCLSID(System.Guid)" argnames="clsid" returntype="System.Type" />
+        <method name="GetTypeFromCLSID(System.Guid, System.Boolean)" argnames="clsid, throwOnError" returntype="System.Type" />
+        <method name="GetTypeFromCLSID(System.Guid, System.String)" argnames="clsid, server" returntype="System.Type" />
+        <method name="GetTypeFromCLSID(System.Guid, System.String, System.Boolean)" argnames="clsid, server, throwOnError" returntype="System.Type" />
+        <method name="GetTypeCode(System.Type)" argnames="type" returntype="System.TypeCode" />
+        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Globalization.CultureInfo)" argnames="name, invokeAttr, binder, target, args, culture" returntype="System.Object" />
+        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[])" argnames="name, invokeAttr, binder, target, args" returntype="System.Object" />
+        <method name="GetTypeHandle(System.Object)" argnames="o" returntype="System.RuntimeTypeHandle" />
+        <method name="GetTypeFromHandle(System.RuntimeTypeHandle)" argnames="handle" returntype="System.Type" />
+        <method name="GetConstructor(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
+        <method name="GetConstructor(System.Reflection.BindingFlags, System.Reflection.Binder, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
+        <method name="GetConstructor(System.Type[])" argnames="types" returntype="System.Reflection.ConstructorInfo" />
+        <method name="GetConstructors()" argnames="" returntype="System.Reflection.ConstructorInfo[]" />
+        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethod(System.String, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethod(System.String, System.Type[])" argnames="name, types" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethod(System.String)" argnames="name" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethods()" argnames="" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetField(System.String)" argnames="name" returntype="System.Reflection.FieldInfo" />
+        <method name="GetFields()" argnames="" returntype="System.Reflection.FieldInfo[]" />
+        <method name="GetInterface(System.String)" argnames="name" returntype="System.Type" />
+        <method name="GetEvent(System.String)" argnames="name" returntype="System.Reflection.EventInfo" />
+        <method name="GetProperty(System.String, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetProperty(System.String, System.Type, System.Type[])" argnames="name, returnType, types" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetProperty(System.String, System.Type[])" argnames="name, types" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetProperty(System.String, System.Type)" argnames="name, returnType" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetProperty(System.String)" argnames="name" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetProperties()" argnames="" returntype="System.Reflection.PropertyInfo[]" />
+        <method name="GetNestedTypes()" argnames="" returntype="System.Type[]" />
+        <method name="GetNestedType(System.String)" argnames="name" returntype="System.Type" />
+        <method name="GetMember(System.String)" argnames="name" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetMembers()" argnames="" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetTypeArray(System.Object[])" argnames="args" returntype="System.Type[]" />
+        <method name="Equals(System.Type)" argnames="o" returntype="System.Boolean" />
+    </class>
+    <class name="SerializableAttribute" namespace="System">
+        <constructor name="SerializableAttribute()" argnames="" />
+    </class>
+    <class name="TypeInitializationException" namespace="System">
+        <constructor name="TypeInitializationException(System.String, System.Exception)" argnames="fullTypeName, innerException" />
+        <property name="TypeName" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="UnauthorizedAccessException" namespace="System">
+        <constructor name="UnauthorizedAccessException()" argnames="" />
+        <constructor name="UnauthorizedAccessException(System.String)" argnames="message" />
+        <constructor name="UnauthorizedAccessException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="UnauthorizedAccessException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="UnhandledExceptionEventArgs" namespace="System">
+        <constructor name="UnhandledExceptionEventArgs(System.Object, System.Boolean)" argnames="exception, isTerminating" />
+        <property name="ExceptionObject" propertytype="System.Object" />
+        <property name="IsTerminating" propertytype="System.Boolean" />
+    </class>
+    <class name="Version" namespace="System">
+        <constructor name="Version(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="major, minor, build, revision" />
+        <constructor name="Version(System.Int32, System.Int32, System.Int32)" argnames="major, minor, build" />
+        <constructor name="Version(System.Int32, System.Int32)" argnames="major, minor" />
+        <constructor name="Version(System.String)" argnames="version" />
+        <constructor name="Version()" argnames="" />
+        <property name="Major" propertytype="System.Int32" />
+        <property name="Minor" propertytype="System.Int32" />
+        <property name="Build" propertytype="System.Int32" />
+        <property name="Revision" propertytype="System.Int32" />
+        <method name="CompareTo(System.Object)" argnames="version" returntype="System.Int32" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.Int32)" argnames="fieldCount" returntype="System.String" />
+        <operator name="op_Equality(System.Version, System.Version)" argnames="v1, v2" />
+        <operator name="op_Inequality(System.Version, System.Version)" argnames="v1, v2" />
+        <operator name="op_LessThan(System.Version, System.Version)" argnames="v1, v2" />
+        <operator name="op_LessThanOrEqual(System.Version, System.Version)" argnames="v1, v2" />
+        <operator name="op_GreaterThan(System.Version, System.Version)" argnames="v1, v2" />
+        <operator name="op_GreaterThanOrEqual(System.Version, System.Version)" argnames="v1, v2" />
+    </class>
+    <class name="WeakReference" namespace="System">
+        <constructor name="WeakReference(System.Object)" argnames="target" />
+        <constructor name="WeakReference(System.Object, System.Boolean)" argnames="target, trackResurrection" />
+        <constructor name="WeakReference(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="IsAlive" propertytype="System.Boolean" />
+        <property name="TrackResurrection" propertytype="System.Boolean" />
+        <property name="Target" propertytype="System.Object" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="STAThreadAttribute" namespace="System">
+        <constructor name="STAThreadAttribute()" argnames="" />
+    </class>
+    <class name="MTAThreadAttribute" namespace="System">
+        <constructor name="MTAThreadAttribute()" argnames="" />
+    </class>
+    <class name="ThreadStaticAttribute" namespace="System">
+        <constructor name="ThreadStaticAttribute()" argnames="" />
+    </class>
+    <class name="AppDomainSetup" namespace="System">
+        <constructor name="AppDomainSetup()" argnames="" />
+        <property name="Value" propertytype="System.String[]" />
+        <property name="ApplicationBase" propertytype="System.String" />
+        <property name="ApplicationBaseKey" propertytype="System.String" />
+        <property name="ConfigurationFile" propertytype="System.String" />
+        <property name="ConfigurationFileKey" propertytype="System.String" />
+        <property name="DynamicBase" propertytype="System.String" />
+        <property name="DynamicBaseKey" propertytype="System.String" />
+        <property name="DisallowPublisherPolicy" propertytype="System.Boolean" />
+        <property name="DeveloperPath" propertytype="System.String" />
+        <property name="DisallowPublisherPolicyKey" propertytype="System.String" />
+        <property name="DeveloperPathKey" propertytype="System.String" />
+        <property name="ApplicationName" propertytype="System.String" />
+        <property name="ApplicationNameKey" propertytype="System.String" />
+        <property name="PrivateBinPath" propertytype="System.String" />
+        <property name="PrivateBinPathKey" propertytype="System.String" />
+        <property name="PrivateBinPathProbe" propertytype="System.String" />
+        <property name="PrivateBinPathProbeKey" propertytype="System.String" />
+        <property name="ShadowCopyDirectories" propertytype="System.String" />
+        <property name="ShadowCopyDirectoriesKey" propertytype="System.String" />
+        <property name="ShadowCopyFiles" propertytype="System.String" />
+        <property name="ShadowCopyFilesKey" propertytype="System.String" />
+        <property name="CachePath" propertytype="System.String" />
+        <property name="CachePathKey" propertytype="System.String" />
+        <property name="LicenseFile" propertytype="System.String" />
+        <property name="LicenseFileKey" propertytype="System.String" />
+        <property name="LoaderOptimization" propertytype="System.LoaderOptimization" />
+        <property name="LoaderOptimizationKey" propertytype="System.String" />
+        <property name="DynamicDirectoryKey" propertytype="System.String" />
+        <property name="ConfigurationExtenstion" propertytype="System.String" />
+        <property name="PrivateBinPathEnvironmentVariable" propertytype="System.String" />
+        <property name="RuntimeConfigurationFile" propertytype="System.String" />
+        <property name="MachineConfigKey" propertytype="System.String" />
+        <property name="HostBindingKey" propertytype="System.String" />
+    </class>
+    <interface name="ICloneable" namespace="System">
+        <method name="Clone()" argnames="" returntype="System.Object" />
+    </interface>
+    <interface name="IComparable" namespace="System">
+        <method name="CompareTo(System.Object)" argnames="obj" returntype="System.Int32" />
+    </interface>
+    <interface name="IConvertible" namespace="System">
+        <method name="ToType(System.Type, System.IFormatProvider)" argnames="conversionType, provider" returntype="System.Object" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="ToDateTime(System.IFormatProvider)" argnames="provider" returntype="System.DateTime" />
+        <method name="ToDecimal(System.IFormatProvider)" argnames="provider" returntype="System.Decimal" />
+        <method name="ToDouble(System.IFormatProvider)" argnames="provider" returntype="System.Double" />
+        <method name="ToSingle(System.IFormatProvider)" argnames="provider" returntype="System.Single" />
+        <method name="ToUInt64(System.IFormatProvider)" argnames="provider" returntype="System.UInt64" />
+        <method name="ToInt64(System.IFormatProvider)" argnames="provider" returntype="System.Int64" />
+        <method name="ToUInt32(System.IFormatProvider)" argnames="provider" returntype="System.UInt32" />
+        <method name="ToInt32(System.IFormatProvider)" argnames="provider" returntype="System.Int32" />
+        <method name="ToUInt16(System.IFormatProvider)" argnames="provider" returntype="System.UInt16" />
+        <method name="ToInt16(System.IFormatProvider)" argnames="provider" returntype="System.Int16" />
+        <method name="ToByte(System.IFormatProvider)" argnames="provider" returntype="System.Byte" />
+        <method name="ToSByte(System.IFormatProvider)" argnames="provider" returntype="System.SByte" />
+        <method name="ToChar(System.IFormatProvider)" argnames="provider" returntype="System.Char" />
+        <method name="ToBoolean(System.IFormatProvider)" argnames="provider" returntype="System.Boolean" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+    </interface>
+    <interface name="IFormattable" namespace="System">
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, formatProvider" returntype="System.String" />
+    </interface>
+    <interface name="_AppDomain" namespace="System">
+        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
+        <property name="FriendlyName" propertytype="System.String" />
+        <property name="BaseDirectory" propertytype="System.String" />
+        <property name="RelativeSearchPath" propertytype="System.String" />
+        <property name="ShadowCopyFiles" propertytype="System.Boolean" />
+        <property name="DynamicDirectory" propertytype="System.String" />
+        <method name="DoCallBack(System.CrossAppDomainDelegate)" argnames="theDelegate" returntype="System.Void" />
+        <method name="SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy)" argnames="policy" returntype="System.Void" />
+        <method name="SetThreadPrincipal(System.Security.Principal.IPrincipal)" argnames="principal" returntype="System.Void" />
+        <method name="SetAppDomainPolicy(System.Security.Policy.PolicyLevel)" argnames="domainPolicy" returntype="System.Void" />
+        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
+        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
+        <method name="SetCachePath(System.String)" argnames="s" returntype="System.Void" />
+        <method name="ClearShadowCopyPath()" argnames="" returntype="System.Void" />
+        <method name="SetShadowCopyPath(System.String)" argnames="s" returntype="System.Void" />
+        <method name="ClearPrivatePath()" argnames="" returntype="System.Void" />
+        <method name="AppendPrivatePath(System.String)" argnames="path" returntype="System.Void" />
+        <method name="GetAssemblies()" argnames="" returntype="System.Reflection.Assembly[]" />
+        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence, System.String[])" argnames="assemblyFile, assemblySecurity, args" returntype="System.Int32" />
+        <method name="ExecuteAssembly(System.String)" argnames="assemblyFile" returntype="System.Int32" />
+        <method name="ExecuteAssembly(System.String, System.Security.Policy.Evidence)" argnames="assemblyFile, assemblySecurity" returntype="System.Int32" />
+        <method name="Load(System.String, System.Security.Policy.Evidence)" argnames="assemblyString, assemblySecurity" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)" argnames="assemblyRef, assemblySecurity" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)" argnames="rawAssembly, rawSymbolStore, securityEvidence" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[], System.Byte[])" argnames="rawAssembly, rawSymbolStore" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[])" argnames="rawAssembly" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.String)" argnames="assemblyString" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Reflection.AssemblyName)" argnames="assemblyRef" returntype="System.Reflection.Assembly" />
+        <method name="CreateInstanceFrom(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyFile, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[], System.Security.Policy.Evidence)" argnames="assemblyName, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, securityAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstanceFrom(System.String, System.String, System.Object[])" argnames="assemblyFile, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String, System.Object[])" argnames="assemblyName, typeName, activationAttributes" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstanceFrom(System.String, System.String)" argnames="assemblyFile, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="CreateInstance(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Runtime.Remoting.ObjectHandle" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Boolean)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions, isSynchronized" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, evidence, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, dir, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String, System.Security.Policy.Evidence)" argnames="name, access, dir, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="name, access, requiredPermissions, optionalPermissions, refusedPermissions" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.Security.Policy.Evidence)" argnames="name, access, evidence" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess, System.String)" argnames="name, access, dir" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)" argnames="name, access" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="GetLifetimeService()" argnames="" returntype="System.Object" />
+        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
+        <method name="GetType()" argnames="" returntype="System.Type" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="other" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <event name="DomainUnload" />
+        <event name="AssemblyLoad" />
+        <event name="ProcessExit" />
+        <event name="TypeResolve" />
+        <event name="ResourceResolve" />
+        <event name="AssemblyResolve" />
+        <event name="UnhandledException" />
+    </interface>
+    <interface name="IAppDomainSetup" namespace="System">
+        <property name="ApplicationBase" propertytype="System.String" />
+        <property name="ApplicationName" propertytype="System.String" />
+        <property name="CachePath" propertytype="System.String" />
+        <property name="ConfigurationFile" propertytype="System.String" />
+        <property name="DynamicBase" propertytype="System.String" />
+        <property name="LicenseFile" propertytype="System.String" />
+        <property name="PrivateBinPath" propertytype="System.String" />
+        <property name="PrivateBinPathProbe" propertytype="System.String" />
+        <property name="ShadowCopyDirectories" propertytype="System.String" />
+        <property name="ShadowCopyFiles" propertytype="System.String" />
+    </interface>
+    <interface name="IAsyncResult" namespace="System">
+        <property name="IsCompleted" propertytype="System.Boolean" />
+        <property name="AsyncWaitHandle" propertytype="System.Threading.WaitHandle" />
+        <property name="AsyncState" propertytype="System.Object" />
+        <property name="CompletedSynchronously" propertytype="System.Boolean" />
+    </interface>
+    <interface name="ICustomFormatter" namespace="System">
+        <method name="Format(System.String, System.Object, System.IFormatProvider)" argnames="format, arg, formatProvider" returntype="System.String" />
+    </interface>
+    <interface name="IDisposable" namespace="System">
+        <method name="Dispose()" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IFormatProvider" namespace="System">
+        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
+    </interface>
+    <interface name="IServiceProvider" namespace="System">
+        <method name="GetService(System.Type)" argnames="serviceType" returntype="System.Object" />
+    </interface>
+    <struct name="DateTime" namespace="System">
+        <constructor name="DateTime(System.Int64)" argnames="ticks" />
+        <constructor name="DateTime(System.Int32, System.Int32, System.Int32)" argnames="year, month, day" />
+        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Globalization.Calendar)" argnames="year, month, day, calendar" />
+        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second" />
+        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Globalization.Calendar)" argnames="year, month, day, hour, minute, second, calendar" />
+        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond" />
+        <constructor name="DateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Globalization.Calendar)" argnames="year, month, day, hour, minute, second, millisecond, calendar" />
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <property name="Date" propertytype="System.DateTime" />
+        <property name="Day" propertytype="System.Int32" />
+        <property name="DayOfWeek" propertytype="System.DayOfWeek" />
+        <property name="DayOfYear" propertytype="System.Int32" />
+        <property name="Hour" propertytype="System.Int32" />
+        <property name="Millisecond" propertytype="System.Int32" />
+        <property name="Minute" propertytype="System.Int32" />
+        <property name="Month" propertytype="System.Int32" />
+        <property name="Now" propertytype="System.DateTime" />
+        <property name="UtcNow" propertytype="System.DateTime" />
+        <property name="Second" propertytype="System.Int32" />
+        <property name="Ticks" propertytype="System.Int64" />
+        <property name="TimeOfDay" propertytype="System.TimeSpan" />
+        <property name="Today" propertytype="System.DateTime" />
+        <property name="Year" propertytype="System.Int32" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Add(System.TimeSpan)" argnames="value" returntype="System.DateTime" />
+        <method name="AddDays(System.Double)" argnames="value" returntype="System.DateTime" />
+        <method name="AddHours(System.Double)" argnames="value" returntype="System.DateTime" />
+        <method name="AddMilliseconds(System.Double)" argnames="value" returntype="System.DateTime" />
+        <method name="AddMinutes(System.Double)" argnames="value" returntype="System.DateTime" />
+        <method name="AddMonths(System.Int32)" argnames="months" returntype="System.DateTime" />
+        <method name="AddSeconds(System.Double)" argnames="value" returntype="System.DateTime" />
+        <method name="AddTicks(System.Int64)" argnames="value" returntype="System.DateTime" />
+        <method name="AddYears(System.Int32)" argnames="value" returntype="System.DateTime" />
+        <method name="Compare(System.DateTime, System.DateTime)" argnames="t1, t2" returntype="System.Int32" />
+        <method name="DaysInMonth(System.Int32, System.Int32)" argnames="year, month" returntype="System.Int32" />
+        <method name="Equals(System.DateTime, System.DateTime)" argnames="t1, t2" returntype="System.Boolean" />
+        <method name="FromFileTime(System.Int64)" argnames="fileTime" returntype="System.DateTime" />
+        <method name="FromOADate(System.Double)" argnames="d" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32)" argnames="year" returntype="System.Boolean" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.DateTime" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.DateTime" />
+        <method name="Parse(System.String, System.IFormatProvider, System.Globalization.DateTimeStyles)" argnames="s, provider, styles" returntype="System.DateTime" />
+        <method name="ParseExact(System.String, System.String, System.IFormatProvider)" argnames="s, format, provider" returntype="System.DateTime" />
+        <method name="ParseExact(System.String, System.String, System.IFormatProvider, System.Globalization.DateTimeStyles)" argnames="s, format, provider, style" returntype="System.DateTime" />
+        <method name="ParseExact(System.String, System.String[], System.IFormatProvider, System.Globalization.DateTimeStyles)" argnames="s, formats, provider, style" returntype="System.DateTime" />
+        <method name="Subtract(System.DateTime)" argnames="value" returntype="System.TimeSpan" />
+        <method name="Subtract(System.TimeSpan)" argnames="value" returntype="System.DateTime" />
+        <method name="ToOADate()" argnames="" returntype="System.Double" />
+        <method name="ToFileTime()" argnames="" returntype="System.Int64" />
+        <method name="ToLocalTime()" argnames="" returntype="System.DateTime" />
+        <method name="ToLongDateString()" argnames="" returntype="System.String" />
+        <method name="ToLongTimeString()" argnames="" returntype="System.String" />
+        <method name="ToShortDateString()" argnames="" returntype="System.String" />
+        <method name="ToShortTimeString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="ToUniversalTime()" argnames="" returntype="System.DateTime" />
+        <method name="GetDateTimeFormats()" argnames="" returntype="System.String[]" />
+        <method name="GetDateTimeFormats(System.IFormatProvider)" argnames="provider" returntype="System.String[]" />
+        <method name="GetDateTimeFormats(System.Char)" argnames="format" returntype="System.String[]" />
+        <method name="GetDateTimeFormats(System.Char, System.IFormatProvider)" argnames="format, provider" returntype="System.String[]" />
+        <operator name="op_Addition(System.DateTime, System.TimeSpan)" argnames="d, t" />
+        <operator name="op_Subtraction(System.DateTime, System.TimeSpan)" argnames="d, t" />
+        <operator name="op_Subtraction(System.DateTime, System.DateTime)" argnames="d1, d2" />
+        <operator name="op_Equality(System.DateTime, System.DateTime)" argnames="d1, d2" />
+        <operator name="op_Inequality(System.DateTime, System.DateTime)" argnames="d1, d2" />
+        <operator name="op_LessThan(System.DateTime, System.DateTime)" argnames="t1, t2" />
+        <operator name="op_LessThanOrEqual(System.DateTime, System.DateTime)" argnames="t1, t2" />
+        <operator name="op_GreaterThan(System.DateTime, System.DateTime)" argnames="t1, t2" />
+        <operator name="op_GreaterThanOrEqual(System.DateTime, System.DateTime)" argnames="t1, t2" />
+    </struct>
+    <struct name="ArgIterator" namespace="System">
+        <constructor name="ArgIterator(System.RuntimeArgumentHandle)" argnames="arglist" />
+        <constructor name="ArgIterator(System.RuntimeArgumentHandle, System.Void*)" argnames="arglist, ptr" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="GetNextArg()" argnames="" returntype="System.TypedReference" />
+        <method name="GetNextArg(System.RuntimeTypeHandle)" argnames="rth" returntype="System.TypedReference" />
+        <method name="End()" argnames="" returntype="System.Void" />
+        <method name="GetRemainingCount()" argnames="" returntype="System.Int32" />
+        <method name="GetNextArgType()" argnames="" returntype="System.RuntimeTypeHandle" />
+    </struct>
+    <struct name="Boolean" namespace="System">
+        <field name="TrueString" />
+        <field name="FalseString" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="CompareTo(System.Object)" argnames="obj" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Boolean" />
+    </struct>
+    <struct name="Byte" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Byte" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Byte" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Byte" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Byte" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+    </struct>
+    <struct name="Char" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.Char)" argnames="c" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Char" />
+        <method name="IsDigit(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsLetter(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsWhiteSpace(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsUpper(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsLower(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsPunctuation(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsLetterOrDigit(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="ToUpper(System.Char, System.Globalization.CultureInfo)" argnames="c, culture" returntype="System.Char" />
+        <method name="ToUpper(System.Char)" argnames="c" returntype="System.Char" />
+        <method name="ToLower(System.Char, System.Globalization.CultureInfo)" argnames="c, culture" returntype="System.Char" />
+        <method name="ToLower(System.Char)" argnames="c" returntype="System.Char" />
+        <method name="IsControl(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsControl(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsDigit(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsLetter(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsLetterOrDigit(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsLower(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsNumber(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsNumber(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsPunctuation(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsSeparator(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsSeparator(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsSurrogate(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsSurrogate(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsSymbol(System.Char)" argnames="c" returntype="System.Boolean" />
+        <method name="IsSymbol(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsUpper(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="IsWhiteSpace(System.String, System.Int32)" argnames="s, index" returntype="System.Boolean" />
+        <method name="GetUnicodeCategory(System.Char)" argnames="c" returntype="System.Globalization.UnicodeCategory" />
+        <method name="GetUnicodeCategory(System.String, System.Int32)" argnames="s, index" returntype="System.Globalization.UnicodeCategory" />
+        <method name="GetNumericValue(System.Char)" argnames="c" returntype="System.Double" />
+        <method name="GetNumericValue(System.String, System.Int32)" argnames="s, index" returntype="System.Double" />
+    </struct>
+    <struct name="Decimal" namespace="System">
+        <constructor name="Decimal(System.Int32)" argnames="value" />
+        <constructor name="Decimal(System.UInt32)" argnames="value" />
+        <constructor name="Decimal(System.Int64)" argnames="value" />
+        <constructor name="Decimal(System.UInt64)" argnames="value" />
+        <constructor name="Decimal(System.Single)" argnames="value" />
+        <constructor name="Decimal(System.Double)" argnames="value" />
+        <constructor name="Decimal(System.Int32[])" argnames="bits" />
+        <constructor name="Decimal(System.Int32, System.Int32, System.Int32, System.Boolean, System.Byte)" argnames="lo, mid, hi, isNegative, scale" />
+        <field name="Zero" />
+        <field name="One" />
+        <field name="MinusOne" />
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToOACurrency(System.Decimal)" argnames="value" returntype="System.Int64" />
+        <method name="FromOACurrency(System.Int64)" argnames="cy" returntype="System.Decimal" />
+        <method name="Add(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
+        <method name="Compare(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Int32" />
+        <method name="Divide(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
+        <method name="Equals(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Boolean" />
+        <method name="Floor(System.Decimal)" argnames="d" returntype="System.Decimal" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Decimal" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Decimal" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Decimal" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Decimal" />
+        <method name="GetBits(System.Decimal)" argnames="d" returntype="System.Int32[]" />
+        <method name="Remainder(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
+        <method name="Multiply(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
+        <method name="Negate(System.Decimal)" argnames="d" returntype="System.Decimal" />
+        <method name="Round(System.Decimal, System.Int32)" argnames="d, decimals" returntype="System.Decimal" />
+        <method name="Subtract(System.Decimal, System.Decimal)" argnames="d1, d2" returntype="System.Decimal" />
+        <method name="ToByte(System.Decimal)" argnames="value" returntype="System.Byte" />
+        <method name="ToSByte(System.Decimal)" argnames="value" returntype="System.SByte" />
+        <method name="ToInt16(System.Decimal)" argnames="value" returntype="System.Int16" />
+        <method name="ToDouble(System.Decimal)" argnames="d" returntype="System.Double" />
+        <method name="ToInt32(System.Decimal)" argnames="d" returntype="System.Int32" />
+        <method name="ToInt64(System.Decimal)" argnames="d" returntype="System.Int64" />
+        <method name="ToUInt16(System.Decimal)" argnames="value" returntype="System.UInt16" />
+        <method name="ToUInt32(System.Decimal)" argnames="d" returntype="System.UInt32" />
+        <method name="ToUInt64(System.Decimal)" argnames="d" returntype="System.UInt64" />
+        <method name="ToSingle(System.Decimal)" argnames="d" returntype="System.Single" />
+        <method name="Truncate(System.Decimal)" argnames="d" returntype="System.Decimal" />
+        <operator name="op_Implicit(System.Byte)" argnames="value" />
+        <operator name="op_Implicit(System.SByte)" argnames="value" />
+        <operator name="op_Implicit(System.Int16)" argnames="value" />
+        <operator name="op_Implicit(System.UInt16)" argnames="value" />
+        <operator name="op_Implicit(System.Char)" argnames="value" />
+        <operator name="op_Implicit(System.Int32)" argnames="value" />
+        <operator name="op_Implicit(System.UInt32)" argnames="value" />
+        <operator name="op_Implicit(System.Int64)" argnames="value" />
+        <operator name="op_Implicit(System.UInt64)" argnames="value" />
+        <operator name="op_Explicit(System.Single)" argnames="value" />
+        <operator name="op_Explicit(System.Double)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_Explicit(System.Decimal)" argnames="value" />
+        <operator name="op_UnaryPlus(System.Decimal)" argnames="d" />
+        <operator name="op_UnaryNegation(System.Decimal)" argnames="d" />
+        <operator name="op_Increment(System.Decimal)" argnames="d" />
+        <operator name="op_Decrement(System.Decimal)" argnames="d" />
+        <operator name="op_Addition(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_Subtraction(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_Multiply(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_Division(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_Modulus(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_Equality(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_Inequality(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_LessThan(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_LessThanOrEqual(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_GreaterThan(System.Decimal, System.Decimal)" argnames="d1, d2" />
+        <operator name="op_GreaterThanOrEqual(System.Decimal, System.Decimal)" argnames="d1, d2" />
+    </struct>
+    <struct name="Double" namespace="System">
+        <field name="MinValue" />
+        <field name="MaxValue" />
+        <field name="Epsilon" />
+        <field name="NegativeInfinity" />
+        <field name="PositiveInfinity" />
+        <field name="NaN" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="IsInfinity(System.Double)" argnames="d" returntype="System.Boolean" />
+        <method name="IsPositiveInfinity(System.Double)" argnames="d" returntype="System.Boolean" />
+        <method name="IsNegativeInfinity(System.Double)" argnames="d" returntype="System.Boolean" />
+        <method name="IsNaN(System.Double)" argnames="d" returntype="System.Boolean" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Double" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Double" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Double" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Double" />
+        <method name="TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.Double&amp;)" argnames="s, style, provider, result" returntype="System.Boolean" />
+    </struct>
+    <struct name="Guid" namespace="System">
+        <constructor name="Guid(System.Byte[])" argnames="b" />
+        <constructor name="Guid(System.UInt32, System.UInt16, System.UInt16, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte)" argnames="a, b, c, d, e, f, g, h, i, j, k" />
+        <constructor name="Guid(System.String)" argnames="g" />
+        <constructor name="Guid(System.Int32, System.Int16, System.Int16, System.Byte[])" argnames="a, b, c, d" />
+        <constructor name="Guid(System.Int32, System.Int16, System.Int16, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte, System.Byte)" argnames="a, b, c, d, e, f, g, h, i, j, k" />
+        <field name="Empty" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToByteArray()" argnames="" returntype="System.Byte[]" />
+        <method name="NewGuid()" argnames="" returntype="System.Guid" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <operator name="op_Equality(System.Guid, System.Guid)" argnames="a, b" />
+        <operator name="op_Inequality(System.Guid, System.Guid)" argnames="a, b" />
+    </struct>
+    <struct name="Int16" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Int16" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Int16" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Int16" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Int16" />
+    </struct>
+    <struct name="Int32" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Int32" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Int32" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Int32" />
+    </struct>
+    <struct name="Int64" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Int64" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Int64" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Int64" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Int64" />
+    </struct>
+    <struct name="IntPtr" namespace="System">
+        <constructor name="IntPtr(System.Int32)" argnames="value" />
+        <constructor name="IntPtr(System.Int64)" argnames="value" />
+        <constructor name="IntPtr(System.Void*)" argnames="value" />
+        <field name="Zero" />
+        <property name="Size" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToInt32()" argnames="" returntype="System.Int32" />
+        <method name="ToInt64()" argnames="" returntype="System.Int64" />
+        <method name="ToPointer()" argnames="" returntype="System.Void*" />
+        <operator name="op_Explicit(System.Int32)" argnames="value" />
+        <operator name="op_Explicit(System.Int64)" argnames="value" />
+        <operator name="op_Explicit(System.Void*)" argnames="value" />
+        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
+        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
+        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
+        <operator name="op_Equality(System.IntPtr, System.IntPtr)" argnames="value1, value2" />
+        <operator name="op_Inequality(System.IntPtr, System.IntPtr)" argnames="value1, value2" />
+    </struct>
+    <struct name="RuntimeArgumentHandle" namespace="System" />
+    <struct name="RuntimeFieldHandle" namespace="System">
+        <property name="Value" propertytype="System.IntPtr" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </struct>
+    <struct name="RuntimeMethodHandle" namespace="System">
+        <property name="Value" propertytype="System.IntPtr" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetFunctionPointer()" argnames="" returntype="System.IntPtr" />
+    </struct>
+    <struct name="RuntimeTypeHandle" namespace="System">
+        <property name="Value" propertytype="System.IntPtr" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </struct>
+    <struct name="SByte" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="obj" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.SByte" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.SByte" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.SByte" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.SByte" />
+    </struct>
+    <struct name="Single" namespace="System">
+        <field name="MinValue" />
+        <field name="Epsilon" />
+        <field name="MaxValue" />
+        <field name="PositiveInfinity" />
+        <field name="NegativeInfinity" />
+        <field name="NaN" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="IsInfinity(System.Single)" argnames="f" returntype="System.Boolean" />
+        <method name="IsPositiveInfinity(System.Single)" argnames="f" returntype="System.Boolean" />
+        <method name="IsNegativeInfinity(System.Single)" argnames="f" returntype="System.Boolean" />
+        <method name="IsNaN(System.Single)" argnames="f" returntype="System.Boolean" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.Single" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.Single" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.Single" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.Single" />
+    </struct>
+    <struct name="TimeSpan" namespace="System">
+        <constructor name="TimeSpan(System.Int64)" argnames="ticks" />
+        <constructor name="TimeSpan(System.Int32, System.Int32, System.Int32)" argnames="hours, minutes, seconds" />
+        <constructor name="TimeSpan(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="days, hours, minutes, seconds" />
+        <constructor name="TimeSpan(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="days, hours, minutes, seconds, milliseconds" />
+        <field name="Zero" />
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <field name="TicksPerMillisecond" />
+        <field name="TicksPerSecond" />
+        <field name="TicksPerMinute" />
+        <field name="TicksPerHour" />
+        <field name="TicksPerDay" />
+        <property name="Ticks" propertytype="System.Int64" />
+        <property name="Days" propertytype="System.Int32" />
+        <property name="Hours" propertytype="System.Int32" />
+        <property name="Milliseconds" propertytype="System.Int32" />
+        <property name="Minutes" propertytype="System.Int32" />
+        <property name="Seconds" propertytype="System.Int32" />
+        <property name="TotalDays" propertytype="System.Double" />
+        <property name="TotalHours" propertytype="System.Double" />
+        <property name="TotalMilliseconds" propertytype="System.Double" />
+        <property name="TotalMinutes" propertytype="System.Double" />
+        <property name="TotalSeconds" propertytype="System.Double" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Add(System.TimeSpan)" argnames="ts" returntype="System.TimeSpan" />
+        <method name="Compare(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" returntype="System.Int32" />
+        <method name="FromDays(System.Double)" argnames="value" returntype="System.TimeSpan" />
+        <method name="Duration()" argnames="" returntype="System.TimeSpan" />
+        <method name="Equals(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" returntype="System.Boolean" />
+        <method name="FromHours(System.Double)" argnames="value" returntype="System.TimeSpan" />
+        <method name="FromMilliseconds(System.Double)" argnames="value" returntype="System.TimeSpan" />
+        <method name="FromMinutes(System.Double)" argnames="value" returntype="System.TimeSpan" />
+        <method name="Negate()" argnames="" returntype="System.TimeSpan" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.TimeSpan" />
+        <method name="FromSeconds(System.Double)" argnames="value" returntype="System.TimeSpan" />
+        <method name="Subtract(System.TimeSpan)" argnames="ts" returntype="System.TimeSpan" />
+        <method name="FromTicks(System.Int64)" argnames="value" returntype="System.TimeSpan" />
+        <operator name="op_UnaryNegation(System.TimeSpan)" argnames="t" />
+        <operator name="op_Subtraction(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+        <operator name="op_UnaryPlus(System.TimeSpan)" argnames="t" />
+        <operator name="op_Addition(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+        <operator name="op_Equality(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+        <operator name="op_Inequality(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+        <operator name="op_LessThan(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+        <operator name="op_LessThanOrEqual(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+        <operator name="op_GreaterThan(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+        <operator name="op_GreaterThanOrEqual(System.TimeSpan, System.TimeSpan)" argnames="t1, t2" />
+    </struct>
+    <struct name="TypedReference" namespace="System">
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="MakeTypedReference(System.Object, System.Reflection.FieldInfo[])" argnames="target, flds" returntype="System.TypedReference" />
+        <method name="ToObject(System.TypedReference)" argnames="value" returntype="System.Object" />
+        <method name="GetTargetType(System.TypedReference)" argnames="value" returntype="System.Type" />
+        <method name="TargetTypeToken(System.TypedReference)" argnames="value" returntype="System.RuntimeTypeHandle" />
+        <method name="SetTypedReference(System.TypedReference, System.Object)" argnames="target, value" returntype="System.Void" />
+    </struct>
+    <struct name="UInt16" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.UInt16" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.UInt16" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.UInt16" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.UInt16" />
+    </struct>
+    <struct name="UInt32" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.UInt32" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.UInt32" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.UInt32" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.UInt32" />
+    </struct>
+    <struct name="UInt64" namespace="System">
+        <field name="MaxValue" />
+        <field name="MinValue" />
+        <method name="ToString(System.IFormatProvider)" argnames="provider" returntype="System.String" />
+        <method name="GetTypeCode()" argnames="" returntype="System.TypeCode" />
+        <method name="ToString(System.String, System.IFormatProvider)" argnames="format, provider" returntype="System.String" />
+        <method name="CompareTo(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToString(System.String)" argnames="format" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="s" returntype="System.UInt64" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles)" argnames="s, style" returntype="System.UInt64" />
+        <method name="Parse(System.String, System.IFormatProvider)" argnames="s, provider" returntype="System.UInt64" />
+        <method name="Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)" argnames="s, style, provider" returntype="System.UInt64" />
+    </struct>
+    <struct name="UIntPtr" namespace="System">
+        <constructor name="UIntPtr(System.UInt32)" argnames="value" />
+        <constructor name="UIntPtr(System.UInt64)" argnames="value" />
+        <constructor name="UIntPtr(System.Void*)" argnames="value" />
+        <field name="Zero" />
+        <property name="Size" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToUInt32()" argnames="" returntype="System.UInt32" />
+        <method name="ToUInt64()" argnames="" returntype="System.UInt64" />
+        <method name="ToPointer()" argnames="" returntype="System.Void*" />
+        <operator name="op_Explicit(System.UInt32)" argnames="value" />
+        <operator name="op_Explicit(System.UInt64)" argnames="value" />
+        <operator name="op_Explicit(System.UIntPtr)" argnames="value" />
+        <operator name="op_Explicit(System.UIntPtr)" argnames="value" />
+        <operator name="op_Explicit(System.Void*)" argnames="value" />
+        <operator name="op_Explicit(System.UIntPtr)" argnames="value" />
+        <operator name="op_Equality(System.UIntPtr, System.UIntPtr)" argnames="value1, value2" />
+        <operator name="op_Inequality(System.UIntPtr, System.UIntPtr)" argnames="value1, value2" />
+    </struct>
+    <struct name="Void" namespace="System" />
+    <delegate name="MulticastDelegate" namespace="System">
+        <constructor name="MulticastDelegate(System.Object, System.String)" argnames="target, method" />
+        <constructor name="MulticastDelegate(System.Type, System.String)" argnames="target, method" />
+        <property name="Previous" propertytype="System.MulticastDelegate" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="RemoveImpl(System.Delegate)" argnames="value" returntype="System.Delegate" />
+        <method name="CombineImpl(System.Delegate)" argnames="follow" returntype="System.Delegate" />
+        <method name="GetInvocationList()" argnames="" returntype="System.Delegate[]" />
+        <method name="DynamicInvokeImpl(System.Object[])" argnames="args" returntype="System.Object" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <operator name="op_Equality(System.MulticastDelegate, System.MulticastDelegate)" argnames="d1, d2" />
+        <operator name="op_Inequality(System.MulticastDelegate, System.MulticastDelegate)" argnames="d1, d2" />
+    </delegate>
+    <delegate name="ResolveEventHandler" namespace="System">
+        <constructor name="ResolveEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Reflection.Assembly" />
+        <method name="BeginInvoke(System.Object, System.ResolveEventArgs, System.AsyncCallback, System.Object)" argnames="sender, args, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ResolveEventArgs)" argnames="sender, args" returntype="System.Reflection.Assembly" />
+    </delegate>
+    <delegate name="AssemblyLoadEventHandler" namespace="System">
+        <constructor name="AssemblyLoadEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.AssemblyLoadEventArgs, System.AsyncCallback, System.Object)" argnames="sender, args, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.AssemblyLoadEventArgs)" argnames="sender, args" returntype="System.Void" />
+    </delegate>
+    <delegate name="CrossAppDomainDelegate" namespace="System">
+        <constructor name="CrossAppDomainDelegate(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke()" argnames="" returntype="System.Void" />
+    </delegate>
+    <delegate name="AsyncCallback" namespace="System">
+        <constructor name="AsyncCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.IAsyncResult, System.AsyncCallback, System.Object)" argnames="ar, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IAsyncResult)" argnames="ar" returntype="System.Void" />
+    </delegate>
+    <delegate name="EventHandler" namespace="System">
+        <constructor name="EventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.EventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.EventArgs)" argnames="sender, e" returntype="System.Void" />
+    </delegate>
+    <delegate name="UnhandledExceptionEventHandler" namespace="System">
+        <constructor name="UnhandledExceptionEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.UnhandledExceptionEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.UnhandledExceptionEventArgs)" argnames="sender, e" returntype="System.Void" />
+    </delegate>
+    <enum name="LoaderOptimization" namespace="System">
+        <field name="NotSpecified" />
+        <field name="SingleDomain" />
+        <field name="MultiDomain" />
+        <field name="MultiDomainHost" />
+    </enum>
+    <enum name="AttributeTargets" namespace="System">
+        <field name="Assembly" />
+        <field name="Module" />
+        <field name="Class" />
+        <field name="Struct" />
+        <field name="Enum" />
+        <field name="Constructor" />
+        <field name="Method" />
+        <field name="Property" />
+        <field name="Field" />
+        <field name="Event" />
+        <field name="Interface" />
+        <field name="Parameter" />
+        <field name="Delegate" />
+        <field name="ReturnValue" />
+        <field name="All" />
+    </enum>
+    <enum name="DayOfWeek" namespace="System">
+        <field name="Sunday" />
+        <field name="Monday" />
+        <field name="Tuesday" />
+        <field name="Wednesday" />
+        <field name="Thursday" />
+        <field name="Friday" />
+        <field name="Saturday" />
+    </enum>
+    <enum name="SpecialFolder" namespace="System">
+        <field name="ApplicationData" />
+        <field name="CommonApplicationData" />
+        <field name="LocalApplicationData" />
+        <field name="Cookies" />
+        <field name="Favorites" />
+        <field name="History" />
+        <field name="InternetCache" />
+        <field name="Programs" />
+        <field name="Recent" />
+        <field name="SendTo" />
+        <field name="StartMenu" />
+        <field name="Startup" />
+        <field name="System" />
+        <field name="Templates" />
+        <field name="DesktopDirectory" />
+        <field name="Personal" />
+        <field name="ProgramFiles" />
+        <field name="CommonProgramFiles" />
+    </enum>
+    <enum name="PlatformID" namespace="System">
+        <field name="Win32S" />
+        <field name="Win32Windows" />
+        <field name="Win32NT" />
+    </enum>
+    <enum name="TypeCode" namespace="System">
+        <field name="Empty" />
+        <field name="Object" />
+        <field name="DBNull" />
+        <field name="Boolean" />
+        <field name="Char" />
+        <field name="SByte" />
+        <field name="Byte" />
+        <field name="Int16" />
+        <field name="UInt16" />
+        <field name="Int32" />
+        <field name="UInt32" />
+        <field name="Int64" />
+        <field name="UInt64" />
+        <field name="Single" />
+        <field name="Double" />
+        <field name="Decimal" />
+        <field name="DateTime" />
+        <field name="String" />
+    </enum>
+    <class name="ArrayList" namespace="System.Collections">
+        <constructor name="ArrayList()" argnames="" />
+        <constructor name="ArrayList(System.Int32)" argnames="capacity" />
+        <constructor name="ArrayList(System.Collections.ICollection)" argnames="c" />
+        <property name="Capacity" propertytype="System.Int32" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="item" returntype="System.Boolean" />
+        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="TrimToSize()" argnames="" returntype="System.Void" />
+        <method name="ToArray(System.Type)" argnames="type" returntype="System.Array" />
+        <method name="ToArray()" argnames="" returntype="System.Object[]" />
+        <method name="Sort(System.Int32, System.Int32, System.Collections.IComparer)" argnames="index, count, comparer" returntype="System.Void" />
+        <method name="Sort(System.Collections.IComparer)" argnames="comparer" returntype="System.Void" />
+        <method name="Sort()" argnames="" returntype="System.Void" />
+        <method name="GetRange(System.Int32, System.Int32)" argnames="index, count" returntype="System.Collections.ArrayList" />
+        <method name="SetRange(System.Int32, System.Collections.ICollection)" argnames="index, c" returntype="System.Void" />
+        <method name="Reverse(System.Int32, System.Int32)" argnames="index, count" returntype="System.Void" />
+        <method name="Reverse()" argnames="" returntype="System.Void" />
+        <method name="RemoveRange(System.Int32, System.Int32)" argnames="index, count" returntype="System.Void" />
+        <method name="LastIndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Object, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
+        <method name="LastIndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="InsertRange(System.Int32, System.Collections.ICollection)" argnames="index, c" returntype="System.Void" />
+        <method name="IndexOf(System.Object, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Int32" />
+        <method name="IndexOf(System.Object, System.Int32)" argnames="value, startIndex" returntype="System.Int32" />
+        <method name="GetEnumerator(System.Int32, System.Int32)" argnames="index, count" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Int32, System.Array, System.Int32, System.Int32)" argnames="index, array, arrayIndex, count" returntype="System.Void" />
+        <method name="CopyTo(System.Array)" argnames="array" returntype="System.Void" />
+        <method name="BinarySearch(System.Object, System.Collections.IComparer)" argnames="value, comparer" returntype="System.Int32" />
+        <method name="BinarySearch(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="BinarySearch(System.Int32, System.Int32, System.Object, System.Collections.IComparer)" argnames="index, count, value, comparer" returntype="System.Int32" />
+        <method name="AddRange(System.Collections.ICollection)" argnames="c" returntype="System.Void" />
+        <method name="Adapter(System.Collections.IList)" argnames="list" returntype="System.Collections.ArrayList" />
+        <method name="FixedSize(System.Collections.IList)" argnames="list" returntype="System.Collections.IList" />
+        <method name="FixedSize(System.Collections.ArrayList)" argnames="list" returntype="System.Collections.ArrayList" />
+        <method name="ReadOnly(System.Collections.IList)" argnames="list" returntype="System.Collections.IList" />
+        <method name="ReadOnly(System.Collections.ArrayList)" argnames="list" returntype="System.Collections.ArrayList" />
+        <method name="Repeat(System.Object, System.Int32)" argnames="value, count" returntype="System.Collections.ArrayList" />
+        <method name="Synchronized(System.Collections.IList)" argnames="list" returntype="System.Collections.IList" />
+        <method name="Synchronized(System.Collections.ArrayList)" argnames="list" returntype="System.Collections.ArrayList" />
+    </class>
+    <class name="BitArray" namespace="System.Collections">
+        <constructor name="BitArray(System.Int32)" argnames="length" />
+        <constructor name="BitArray(System.Int32, System.Boolean)" argnames="length, defaultValue" />
+        <constructor name="BitArray(System.Byte[])" argnames="bytes" />
+        <constructor name="BitArray(System.Boolean[])" argnames="values" />
+        <constructor name="BitArray(System.Int32[])" argnames="values" />
+        <constructor name="BitArray(System.Collections.BitArray)" argnames="bits" />
+        <property name="Item" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int32" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Get(System.Int32)" argnames="index" returntype="System.Boolean" />
+        <method name="Set(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Void" />
+        <method name="SetAll(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="And(System.Collections.BitArray)" argnames="value" returntype="System.Collections.BitArray" />
+        <method name="Or(System.Collections.BitArray)" argnames="value" returntype="System.Collections.BitArray" />
+        <method name="Xor(System.Collections.BitArray)" argnames="value" returntype="System.Collections.BitArray" />
+        <method name="Not()" argnames="" returntype="System.Collections.BitArray" />
+    </class>
+    <class name="CaseInsensitiveComparer" namespace="System.Collections">
+        <constructor name="CaseInsensitiveComparer()" argnames="" />
+        <constructor name="CaseInsensitiveComparer(System.Globalization.CultureInfo)" argnames="culture" />
+        <property name="Default" propertytype="System.Collections.CaseInsensitiveComparer" />
+        <method name="Compare(System.Object, System.Object)" argnames="a, b" returntype="System.Int32" />
+    </class>
+    <class name="CaseInsensitiveHashCodeProvider" namespace="System.Collections">
+        <constructor name="CaseInsensitiveHashCodeProvider()" argnames="" />
+        <constructor name="CaseInsensitiveHashCodeProvider(System.Globalization.CultureInfo)" argnames="culture" />
+        <property name="Default" propertytype="System.Collections.CaseInsensitiveHashCodeProvider" />
+        <method name="GetHashCode(System.Object)" argnames="obj" returntype="System.Int32" />
+    </class>
+    <class name="CollectionBase" namespace="System.Collections">
+        <constructor name="CollectionBase()" argnames="" />
+        <property name="InnerList" propertytype="System.Collections.ArrayList" />
+        <property name="List" propertytype="System.Collections.IList" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClearComplete()" argnames="" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSetComplete(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+        <method name="OnValidate(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="OnRemove(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnClear()" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="OnSet(System.Int32, System.Object, System.Object)" argnames="index, oldValue, newValue" returntype="System.Void" />
+    </class>
+    <class name="Comparer" namespace="System.Collections">
+        <field name="Default" />
+        <method name="Compare(System.Object, System.Object)" argnames="a, b" returntype="System.Int32" />
+    </class>
+    <class name="DictionaryBase" namespace="System.Collections">
+        <constructor name="DictionaryBase()" argnames="" />
+        <property name="InnerHashtable" propertytype="System.Collections.Hashtable" />
+        <property name="Dictionary" propertytype="System.Collections.IDictionary" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="OnRemoveComplete(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="OnClearComplete()" argnames="" returntype="System.Void" />
+        <method name="OnInsertComplete(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="OnSetComplete(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" returntype="System.Void" />
+        <method name="OnValidate(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="OnRemove(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="OnClear()" argnames="" returntype="System.Void" />
+        <method name="OnInsert(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="OnSet(System.Object, System.Object, System.Object)" argnames="key, oldValue, newValue" returntype="System.Void" />
+        <method name="OnGet(System.Object, System.Object)" argnames="key, currentValue" returntype="System.Object" />
+    </class>
+    <class name="Hashtable" namespace="System.Collections">
+        <constructor name="Hashtable()" argnames="" />
+        <constructor name="Hashtable(System.Int32)" argnames="capacity" />
+        <constructor name="Hashtable(System.Int32, System.Single)" argnames="capacity, loadFactor" />
+        <constructor name="Hashtable(System.Int32, System.Single, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, loadFactor, hcp, comparer" />
+        <constructor name="Hashtable(System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="hcp, comparer" />
+        <constructor name="Hashtable(System.Int32, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="capacity, hcp, comparer" />
+        <constructor name="Hashtable(System.Collections.IDictionary)" argnames="d" />
+        <constructor name="Hashtable(System.Collections.IDictionary, System.Single)" argnames="d, loadFactor" />
+        <constructor name="Hashtable(System.Collections.IDictionary, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="d, hcp, comparer" />
+        <constructor name="Hashtable(System.Collections.IDictionary, System.Single, System.Collections.IHashCodeProvider, System.Collections.IComparer)" argnames="d, loadFactor, hcp, comparer" />
+        <constructor name="Hashtable(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="hcp" propertytype="System.Collections.IHashCodeProvider" />
+        <property name="comparer" propertytype="System.Collections.IComparer" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="KeyEquals(System.Object, System.Object)" argnames="item, key" returntype="System.Boolean" />
+        <method name="GetHash(System.Object)" argnames="key" returntype="System.Int32" />
+        <method name="ContainsValue(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ContainsKey(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="Synchronized(System.Collections.Hashtable)" argnames="table" returntype="System.Collections.Hashtable" />
+    </class>
+    <class name="Queue" namespace="System.Collections">
+        <constructor name="Queue()" argnames="" />
+        <constructor name="Queue(System.Int32)" argnames="capacity" />
+        <constructor name="Queue(System.Int32, System.Single)" argnames="capacity, growFactor" />
+        <constructor name="Queue(System.Collections.ICollection)" argnames="col" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="TrimToSize()" argnames="" returntype="System.Void" />
+        <method name="ToArray()" argnames="" returntype="System.Object[]" />
+        <method name="Contains(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="Peek()" argnames="" returntype="System.Object" />
+        <method name="Dequeue()" argnames="" returntype="System.Object" />
+        <method name="Enqueue(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Synchronized(System.Collections.Queue)" argnames="queue" returntype="System.Collections.Queue" />
+    </class>
+    <class name="ReadOnlyCollectionBase" namespace="System.Collections">
+        <constructor name="ReadOnlyCollectionBase()" argnames="" />
+        <property name="InnerList" propertytype="System.Collections.ArrayList" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+    </class>
+    <class name="SortedList" namespace="System.Collections">
+        <constructor name="SortedList()" argnames="" />
+        <constructor name="SortedList(System.Int32)" argnames="initialCapacity" />
+        <constructor name="SortedList(System.Collections.IComparer)" argnames="comparer" />
+        <constructor name="SortedList(System.Collections.IComparer, System.Int32)" argnames="comparer, capacity" />
+        <constructor name="SortedList(System.Collections.IDictionary)" argnames="d" />
+        <constructor name="SortedList(System.Collections.IDictionary, System.Collections.IComparer)" argnames="d, comparer" />
+        <property name="Capacity" propertytype="System.Int32" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, arrayIndex" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="TrimToSize()" argnames="" returntype="System.Void" />
+        <method name="SetByIndex(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="IndexOfValue(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="IndexOfKey(System.Object)" argnames="key" returntype="System.Int32" />
+        <method name="GetValueList()" argnames="" returntype="System.Collections.IList" />
+        <method name="GetKeyList()" argnames="" returntype="System.Collections.IList" />
+        <method name="GetKey(System.Int32)" argnames="index" returntype="System.Object" />
+        <method name="GetByIndex(System.Int32)" argnames="index" returntype="System.Object" />
+        <method name="ContainsValue(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ContainsKey(System.Object)" argnames="key" returntype="System.Boolean" />
+        <method name="Synchronized(System.Collections.SortedList)" argnames="list" returntype="System.Collections.SortedList" />
+    </class>
+    <class name="Stack" namespace="System.Collections">
+        <constructor name="Stack()" argnames="" />
+        <constructor name="Stack(System.Int32)" argnames="initialCapacity" />
+        <constructor name="Stack(System.Collections.ICollection)" argnames="col" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="ToArray()" argnames="" returntype="System.Object[]" />
+        <method name="Push(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="Pop()" argnames="" returntype="System.Object" />
+        <method name="Peek()" argnames="" returntype="System.Object" />
+        <method name="Contains(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Synchronized(System.Collections.Stack)" argnames="stack" returntype="System.Collections.Stack" />
+    </class>
+    <interface name="IEnumerable" namespace="System.Collections">
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+    </interface>
+    <interface name="ICollection" namespace="System.Collections">
+        <property name="Count" propertytype="System.Int32" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+    </interface>
+    <interface name="IList" namespace="System.Collections">
+        <property name="Item" propertytype="System.Object" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <method name="RemoveAt(System.Int32)" argnames="index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Void" />
+        <method name="IndexOf(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Add(System.Object)" argnames="value" returntype="System.Int32" />
+    </interface>
+    <interface name="IEnumerator" namespace="System.Collections">
+        <property name="Current" propertytype="System.Object" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
+    </interface>
+    <interface name="IComparer" namespace="System.Collections">
+        <method name="Compare(System.Object, System.Object)" argnames="x, y" returntype="System.Int32" />
+    </interface>
+    <interface name="IHashCodeProvider" namespace="System.Collections">
+        <method name="GetHashCode(System.Object)" argnames="obj" returntype="System.Int32" />
+    </interface>
+    <interface name="IDictionary" namespace="System.Collections">
+        <property name="Item" propertytype="System.Object" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
+    </interface>
+    <interface name="IDictionaryEnumerator" namespace="System.Collections">
+        <property name="Key" propertytype="System.Object" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="Entry" propertytype="System.Collections.DictionaryEntry" />
+    </interface>
+    <struct name="DictionaryEntry" namespace="System.Collections">
+        <constructor name="DictionaryEntry(System.Object, System.Object)" argnames="key, value" />
+        <property name="Key" propertytype="System.Object" />
+        <property name="Value" propertytype="System.Object" />
+    </struct>
+    <class name="StringBuilder" namespace="System.Text">
+        <constructor name="StringBuilder()" argnames="" />
+        <constructor name="StringBuilder(System.Int32)" argnames="capacity" />
+        <constructor name="StringBuilder(System.String)" argnames="value" />
+        <constructor name="StringBuilder(System.String, System.Int32)" argnames="value, capacity" />
+        <constructor name="StringBuilder(System.String, System.Int32, System.Int32, System.Int32)" argnames="value, startIndex, length, capacity" />
+        <constructor name="StringBuilder(System.Int32, System.Int32)" argnames="capacity, maxCapacity" />
+        <property name="Capacity" propertytype="System.Int32" />
+        <property name="MaxCapacity" propertytype="System.Int32" />
+        <property name="Length" propertytype="System.Int32" />
+        <property name="Chars" propertytype="System.Char" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="EnsureCapacity(System.Int32)" argnames="capacity" returntype="System.Int32" />
+        <method name="ToString(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.String" />
+        <method name="Append(System.Char, System.Int32)" argnames="value, repeatCount" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Char[], System.Int32, System.Int32)" argnames="value, startIndex, charCount" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.String)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.String, System.Int32, System.Int32)" argnames="value, startIndex, count" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.String, System.Int32)" argnames="index, value, count" returntype="System.Text.StringBuilder" />
+        <method name="Remove(System.Int32, System.Int32)" argnames="startIndex, length" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Boolean)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.SByte)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Byte)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Char)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Int16)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Int32)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Int64)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Single)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Double)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Decimal)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.UInt16)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.UInt32)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.UInt64)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Object)" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Append(System.Char[])" argnames="value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.String)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Boolean)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.SByte)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Byte)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Int16)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Char)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Char[])" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Char[], System.Int32, System.Int32)" argnames="index, value, startIndex, charCount" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Int32)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Int64)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Single)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Double)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Decimal)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.UInt16)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.UInt32)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.UInt64)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="Insert(System.Int32, System.Object)" argnames="index, value" returntype="System.Text.StringBuilder" />
+        <method name="AppendFormat(System.String, System.Object)" argnames="format, arg0" returntype="System.Text.StringBuilder" />
+        <method name="AppendFormat(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Text.StringBuilder" />
+        <method name="AppendFormat(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Text.StringBuilder" />
+        <method name="AppendFormat(System.String, System.Object[])" argnames="format, args" returntype="System.Text.StringBuilder" />
+        <method name="AppendFormat(System.IFormatProvider, System.String, System.Object[])" argnames="provider, format, args" returntype="System.Text.StringBuilder" />
+        <method name="Replace(System.String, System.String)" argnames="oldValue, newValue" returntype="System.Text.StringBuilder" />
+        <method name="Replace(System.String, System.String, System.Int32, System.Int32)" argnames="oldValue, newValue, startIndex, count" returntype="System.Text.StringBuilder" />
+        <method name="Equals(System.Text.StringBuilder)" argnames="sb" returntype="System.Boolean" />
+        <method name="Replace(System.Char, System.Char)" argnames="oldChar, newChar" returntype="System.Text.StringBuilder" />
+        <method name="Replace(System.Char, System.Char, System.Int32, System.Int32)" argnames="oldChar, newChar, startIndex, count" returntype="System.Text.StringBuilder" />
+    </class>
+    <class name="Encoding" namespace="System.Text">
+        <constructor name="Encoding()" argnames="" />
+        <constructor name="Encoding(System.Int32)" argnames="codePage" />
+        <property name="BodyName" propertytype="System.String" />
+        <property name="EncodingName" propertytype="System.String" />
+        <property name="HeaderName" propertytype="System.String" />
+        <property name="WebName" propertytype="System.String" />
+        <property name="WindowsCodePage" propertytype="System.Int32" />
+        <property name="IsBrowserDisplay" propertytype="System.Boolean" />
+        <property name="IsBrowserSave" propertytype="System.Boolean" />
+        <property name="IsMailNewsDisplay" propertytype="System.Boolean" />
+        <property name="IsMailNewsSave" propertytype="System.Boolean" />
+        <property name="ASCII" propertytype="System.Text.Encoding" />
+        <property name="CodePage" propertytype="System.Int32" />
+        <property name="Default" propertytype="System.Text.Encoding" />
+        <property name="Unicode" propertytype="System.Text.Encoding" />
+        <property name="BigEndianUnicode" propertytype="System.Text.Encoding" />
+        <property name="UTF7" propertytype="System.Text.Encoding" />
+        <property name="UTF8" propertytype="System.Text.Encoding" />
+        <method name="GetString(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.String" />
+        <method name="GetString(System.Byte[])" argnames="bytes" returntype="System.String" />
+        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
+        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
+        <method name="GetEncoder()" argnames="" returntype="System.Text.Encoder" />
+        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
+        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
+        <method name="GetChars(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Char[]" />
+        <method name="GetChars(System.Byte[])" argnames="bytes" returntype="System.Char[]" />
+        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
+        <method name="GetCharCount(System.Byte[])" argnames="bytes" returntype="System.Int32" />
+        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="s, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetBytes(System.String)" argnames="s" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetBytes(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Char[])" argnames="chars" returntype="System.Byte[]" />
+        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
+        <method name="GetByteCount(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="GetByteCount(System.Char[])" argnames="chars" returntype="System.Int32" />
+        <method name="GetPreamble()" argnames="" returntype="System.Byte[]" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Convert(System.Text.Encoding, System.Text.Encoding, System.Byte[])" argnames="srcEncoding, dstEncoding, bytes" returntype="System.Byte[]" />
+        <method name="Convert(System.Text.Encoding, System.Text.Encoding, System.Byte[], System.Int32, System.Int32)" argnames="srcEncoding, dstEncoding, bytes, index, count" returntype="System.Byte[]" />
+        <method name="GetEncoding(System.Int32)" argnames="codepage" returntype="System.Text.Encoding" />
+        <method name="GetEncoding(System.String)" argnames="name" returntype="System.Text.Encoding" />
+    </class>
+    <class name="Decoder" namespace="System.Text">
+        <constructor name="Decoder()" argnames="" />
+        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
+        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
+    </class>
+    <class name="Encoder" namespace="System.Text">
+        <constructor name="Encoder()" argnames="" />
+        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32, System.Boolean)" argnames="chars, charIndex, charCount, bytes, byteIndex, flush" returntype="System.Int32" />
+        <method name="GetByteCount(System.Char[], System.Int32, System.Int32, System.Boolean)" argnames="chars, index, count, flush" returntype="System.Int32" />
+    </class>
+    <class name="ASCIIEncoding" namespace="System.Text">
+        <constructor name="ASCIIEncoding()" argnames="" />
+        <method name="GetString(System.Byte[], System.Int32, System.Int32)" argnames="bytes, byteIndex, byteCount" returntype="System.String" />
+        <method name="GetString(System.Byte[])" argnames="bytes" returntype="System.String" />
+        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
+        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
+        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
+        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
+        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
+        <method name="GetByteCount(System.String)" argnames="chars" returntype="System.Int32" />
+    </class>
+    <class name="UnicodeEncoding" namespace="System.Text">
+        <constructor name="UnicodeEncoding()" argnames="" />
+        <constructor name="UnicodeEncoding(System.Boolean, System.Boolean)" argnames="bigEndian, byteOrderMark" />
+        <field name="CharSize" />
+        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
+        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
+        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
+        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
+        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
+        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="s, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetBytes(System.String)" argnames="s" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
+        <method name="GetByteCount(System.String)" argnames="s" returntype="System.Int32" />
+        <method name="GetPreamble()" argnames="" returntype="System.Byte[]" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+    </class>
+    <class name="UTF7Encoding" namespace="System.Text">
+        <constructor name="UTF7Encoding()" argnames="" />
+        <constructor name="UTF7Encoding(System.Boolean)" argnames="allowOptionals" />
+        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
+        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
+        <method name="GetEncoder()" argnames="" returntype="System.Text.Encoder" />
+        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
+        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
+        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
+        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
+    </class>
+    <class name="UTF8Encoding" namespace="System.Text">
+        <constructor name="UTF8Encoding()" argnames="" />
+        <constructor name="UTF8Encoding(System.Boolean)" argnames="encoderShouldEmitUTF8Identifier" />
+        <constructor name="UTF8Encoding(System.Boolean, System.Boolean)" argnames="encoderShouldEmitUTF8Identifier, throwOnInvalidBytes" />
+        <method name="GetMaxCharCount(System.Int32)" argnames="byteCount" returntype="System.Int32" />
+        <method name="GetMaxByteCount(System.Int32)" argnames="charCount" returntype="System.Int32" />
+        <method name="GetEncoder()" argnames="" returntype="System.Text.Encoder" />
+        <method name="GetDecoder()" argnames="" returntype="System.Text.Decoder" />
+        <method name="GetChars(System.Byte[], System.Int32, System.Int32, System.Char[], System.Int32)" argnames="bytes, byteIndex, byteCount, chars, charIndex" returntype="System.Int32" />
+        <method name="GetCharCount(System.Byte[], System.Int32, System.Int32)" argnames="bytes, index, count" returntype="System.Int32" />
+        <method name="GetBytes(System.String, System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="s, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetBytes(System.String)" argnames="s" returntype="System.Byte[]" />
+        <method name="GetBytes(System.Char[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="chars, charIndex, charCount, bytes, byteIndex" returntype="System.Int32" />
+        <method name="GetByteCount(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Int32" />
+        <method name="GetByteCount(System.String)" argnames="chars" returntype="System.Int32" />
+        <method name="GetPreamble()" argnames="" returntype="System.Byte[]" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+    </class>
+    <class name="Formatter" namespace="System.Runtime.Serialization">
+        <constructor name="Formatter()" argnames="" />
+        <field name="m_idGenerator" />
+        <field name="m_objectQueue" />
+        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
+        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
+        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
+        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
+        <method name="WriteValueType(System.Object, System.String, System.Type)" argnames="obj, name, memberType" returntype="System.Void" />
+        <method name="WriteUInt64(System.UInt64, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteUInt32(System.UInt32, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteUInt16(System.UInt16, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteTimeSpan(System.TimeSpan, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteSingle(System.Single, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteSByte(System.SByte, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteMember(System.String, System.Object)" argnames="memberName, data" returntype="System.Void" />
+        <method name="WriteObjectRef(System.Object, System.String, System.Type)" argnames="obj, name, memberType" returntype="System.Void" />
+        <method name="WriteInt64(System.Int64, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteInt32(System.Int32, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteInt16(System.Int16, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteDouble(System.Double, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteDecimal(System.Decimal, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteDateTime(System.DateTime, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteChar(System.Char, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteByte(System.Byte, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteBoolean(System.Boolean, System.String)" argnames="val, name" returntype="System.Void" />
+        <method name="WriteArray(System.Object, System.String, System.Type)" argnames="obj, name, memberType" returntype="System.Void" />
+        <method name="Schedule(System.Object)" argnames="obj" returntype="System.Int64" />
+        <method name="GetNext(System.Int64&amp;)" argnames="objID" returntype="System.Object" />
+    </class>
+    <class name="FormatterConverter" namespace="System.Runtime.Serialization">
+        <constructor name="FormatterConverter()" argnames="" />
+        <method name="ToString(System.Object)" argnames="value" returntype="System.String" />
+        <method name="ToDateTime(System.Object)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDecimal(System.Object)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDouble(System.Object)" argnames="value" returntype="System.Double" />
+        <method name="ToSingle(System.Object)" argnames="value" returntype="System.Single" />
+        <method name="ToUInt64(System.Object)" argnames="value" returntype="System.UInt64" />
+        <method name="ToInt64(System.Object)" argnames="value" returntype="System.Int64" />
+        <method name="ToUInt32(System.Object)" argnames="value" returntype="System.UInt32" />
+        <method name="ToInt32(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="ToUInt16(System.Object)" argnames="value" returntype="System.UInt16" />
+        <method name="ToInt16(System.Object)" argnames="value" returntype="System.Int16" />
+        <method name="ToByte(System.Object)" argnames="value" returntype="System.Byte" />
+        <method name="ToSByte(System.Object)" argnames="value" returntype="System.SByte" />
+        <method name="ToChar(System.Object)" argnames="value" returntype="System.Char" />
+        <method name="ToBoolean(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Convert(System.Object, System.TypeCode)" argnames="value, typeCode" returntype="System.Object" />
+        <method name="Convert(System.Object, System.Type)" argnames="value, type" returntype="System.Object" />
+    </class>
+    <class name="FormatterServices" namespace="System.Runtime.Serialization">
+        <method name="GetSerializableMembers(System.Type)" argnames="type" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetSerializableMembers(System.Type, System.Runtime.Serialization.StreamingContext)" argnames="type, context" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetUninitializedObject(System.Type)" argnames="type" returntype="System.Object" />
+        <method name="PopulateObjectMembers(System.Object, System.Reflection.MemberInfo[], System.Object[])" argnames="obj, members, data" returntype="System.Object" />
+        <method name="GetObjectData(System.Object, System.Reflection.MemberInfo[])" argnames="obj, members" returntype="System.Object[]" />
+        <method name="GetTypeFromAssembly(System.Reflection.Assembly, System.String)" argnames="assem, name" returntype="System.Type" />
+    </class>
+    <class name="ObjectIDGenerator" namespace="System.Runtime.Serialization">
+        <constructor name="ObjectIDGenerator()" argnames="" />
+        <method name="HasId(System.Object, System.Boolean&amp;)" argnames="obj, firstTime" returntype="System.Int64" />
+        <method name="GetId(System.Object, System.Boolean&amp;)" argnames="obj, firstTime" returntype="System.Int64" />
+    </class>
+    <class name="ObjectManager" namespace="System.Runtime.Serialization">
+        <constructor name="ObjectManager(System.Runtime.Serialization.ISurrogateSelector, System.Runtime.Serialization.StreamingContext)" argnames="selector, context" />
+        <property name="SpecialFixupObjects" propertytype="System.Runtime.Serialization.ObjectHolderList" />
+        <method name="RaiseDeserializationEvent()" argnames="" returntype="System.Void" />
+        <method name="RecordArrayElementFixup(System.Int64, System.Int32[], System.Int64)" argnames="arrayToBeFixed, indices, objectRequired" returntype="System.Void" />
+        <method name="RecordArrayElementFixup(System.Int64, System.Int32, System.Int64)" argnames="arrayToBeFixed, index, objectRequired" returntype="System.Void" />
+        <method name="RecordDelayedFixup(System.Int64, System.String, System.Int64)" argnames="objectToBeFixed, memberName, objectRequired" returntype="System.Void" />
+        <method name="RecordFixup(System.Int64, System.Reflection.MemberInfo, System.Int64)" argnames="objectToBeFixed, member, objectRequired" returntype="System.Void" />
+        <method name="DoFixups()" argnames="" returntype="System.Void" />
+        <method name="RegisterObject(System.Object, System.Int64)" argnames="obj, objectID" returntype="System.Void" />
+        <method name="GetObject(System.Int64)" argnames="objectID" returntype="System.Object" />
+        <method name="RegisterObject(System.Object, System.Int64, System.Runtime.Serialization.SerializationInfo)" argnames="obj, objectID, info" returntype="System.Void" />
+        <method name="RegisterObject(System.Object, System.Int64, System.Runtime.Serialization.SerializationInfo, System.Int64, System.Reflection.MemberInfo)" argnames="obj, objectID, info, idOfContainingObj, member" returntype="System.Void" />
+        <method name="RegisterObject(System.Object, System.Int64, System.Runtime.Serialization.SerializationInfo, System.Int64, System.Reflection.MemberInfo, System.Int32[])" argnames="obj, objectID, info, idOfContainingObj, member, arrayIndex" returntype="System.Void" />
+    </class>
+    <class name="SerializationBinder" namespace="System.Runtime.Serialization">
+        <constructor name="SerializationBinder()" argnames="" />
+        <method name="BindToType(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.Type" />
+    </class>
+    <class name="SerializationInfo" namespace="System.Runtime.Serialization">
+        <constructor name="SerializationInfo(System.Type, System.Runtime.Serialization.IFormatterConverter)" argnames="type, converter" />
+        <property name="FullTypeName" propertytype="System.String" />
+        <property name="AssemblyName" propertytype="System.String" />
+        <property name="MemberCount" propertytype="System.Int32" />
+        <method name="SetType(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Runtime.Serialization.SerializationInfoEnumerator" />
+        <method name="AddValue(System.String, System.Object, System.Type)" argnames="name, value, type" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Boolean)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Char)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.SByte)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Byte)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Int16)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.UInt16)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Int32)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.UInt32)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Int64)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.UInt64)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Single)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Double)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.Decimal)" argnames="name, value" returntype="System.Void" />
+        <method name="AddValue(System.String, System.DateTime)" argnames="name, value" returntype="System.Void" />
+        <method name="GetValue(System.String, System.Type)" argnames="name, type" returntype="System.Object" />
+        <method name="GetBoolean(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="GetChar(System.String)" argnames="name" returntype="System.Char" />
+        <method name="GetSByte(System.String)" argnames="name" returntype="System.SByte" />
+        <method name="GetByte(System.String)" argnames="name" returntype="System.Byte" />
+        <method name="GetInt16(System.String)" argnames="name" returntype="System.Int16" />
+        <method name="GetUInt16(System.String)" argnames="name" returntype="System.UInt16" />
+        <method name="GetInt32(System.String)" argnames="name" returntype="System.Int32" />
+        <method name="GetUInt32(System.String)" argnames="name" returntype="System.UInt32" />
+        <method name="GetInt64(System.String)" argnames="name" returntype="System.Int64" />
+        <method name="GetUInt64(System.String)" argnames="name" returntype="System.UInt64" />
+        <method name="GetSingle(System.String)" argnames="name" returntype="System.Single" />
+        <method name="GetDouble(System.String)" argnames="name" returntype="System.Double" />
+        <method name="GetDecimal(System.String)" argnames="name" returntype="System.Decimal" />
+        <method name="GetDateTime(System.String)" argnames="name" returntype="System.DateTime" />
+        <method name="GetString(System.String)" argnames="name" returntype="System.String" />
+    </class>
+    <class name="SerializationInfoEnumerator" namespace="System.Runtime.Serialization">
+        <property name="Current" propertytype="System.Runtime.Serialization.SerializationEntry" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Value" propertytype="System.Object" />
+        <property name="ObjectType" propertytype="System.Type" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="SerializationException" namespace="System.Runtime.Serialization">
+        <constructor name="SerializationException()" argnames="" />
+        <constructor name="SerializationException(System.String)" argnames="message" />
+        <constructor name="SerializationException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="SerializationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="SurrogateSelector" namespace="System.Runtime.Serialization">
+        <constructor name="SurrogateSelector()" argnames="" />
+        <method name="GetNextSelector()" argnames="" returntype="System.Runtime.Serialization.ISurrogateSelector" />
+        <method name="GetSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector&amp;)" argnames="type, context, selector" returntype="System.Runtime.Serialization.ISerializationSurrogate" />
+        <method name="ChainSelector(System.Runtime.Serialization.ISurrogateSelector)" argnames="selector" returntype="System.Void" />
+        <method name="RemoveSurrogate(System.Type, System.Runtime.Serialization.StreamingContext)" argnames="type, context" returntype="System.Void" />
+        <method name="AddSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISerializationSurrogate)" argnames="type, context, surrogate" returntype="System.Void" />
+    </class>
+    <interface name="ISerializable" namespace="System.Runtime.Serialization">
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </interface>
+    <interface name="IObjectReference" namespace="System.Runtime.Serialization">
+        <method name="GetRealObject(System.Runtime.Serialization.StreamingContext)" argnames="context" returntype="System.Object" />
+    </interface>
+    <interface name="IDeserializationCallback" namespace="System.Runtime.Serialization">
+        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
+    </interface>
+    <interface name="IFormatter" namespace="System.Runtime.Serialization">
+        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
+        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
+        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
+        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
+    </interface>
+    <interface name="IFormatterConverter" namespace="System.Runtime.Serialization">
+        <method name="ToString(System.Object)" argnames="value" returntype="System.String" />
+        <method name="ToDateTime(System.Object)" argnames="value" returntype="System.DateTime" />
+        <method name="ToDecimal(System.Object)" argnames="value" returntype="System.Decimal" />
+        <method name="ToDouble(System.Object)" argnames="value" returntype="System.Double" />
+        <method name="ToSingle(System.Object)" argnames="value" returntype="System.Single" />
+        <method name="ToUInt64(System.Object)" argnames="value" returntype="System.UInt64" />
+        <method name="ToInt64(System.Object)" argnames="value" returntype="System.Int64" />
+        <method name="ToUInt32(System.Object)" argnames="value" returntype="System.UInt32" />
+        <method name="ToInt32(System.Object)" argnames="value" returntype="System.Int32" />
+        <method name="ToUInt16(System.Object)" argnames="value" returntype="System.UInt16" />
+        <method name="ToInt16(System.Object)" argnames="value" returntype="System.Int16" />
+        <method name="ToByte(System.Object)" argnames="value" returntype="System.Byte" />
+        <method name="ToSByte(System.Object)" argnames="value" returntype="System.SByte" />
+        <method name="ToChar(System.Object)" argnames="value" returntype="System.Char" />
+        <method name="ToBoolean(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="Convert(System.Object, System.TypeCode)" argnames="value, typeCode" returntype="System.Object" />
+        <method name="Convert(System.Object, System.Type)" argnames="value, type" returntype="System.Object" />
+    </interface>
+    <interface name="ISerializationSurrogate" namespace="System.Runtime.Serialization">
+        <method name="SetObjectData(System.Object, System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector)" argnames="obj, info, context, selector" returntype="System.Object" />
+        <method name="GetObjectData(System.Object, System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="obj, info, context" returntype="System.Void" />
+    </interface>
+    <interface name="ISurrogateSelector" namespace="System.Runtime.Serialization">
+        <method name="GetNextSelector()" argnames="" returntype="System.Runtime.Serialization.ISurrogateSelector" />
+        <method name="GetSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector&amp;)" argnames="type, context, selector" returntype="System.Runtime.Serialization.ISerializationSurrogate" />
+        <method name="ChainSelector(System.Runtime.Serialization.ISurrogateSelector)" argnames="selector" returntype="System.Void" />
+    </interface>
+    <struct name="SerializationEntry" namespace="System.Runtime.Serialization">
+        <property name="Value" propertytype="System.Object" />
+        <property name="Name" propertytype="System.String" />
+        <property name="ObjectType" propertytype="System.Type" />
+    </struct>
+    <struct name="StreamingContext" namespace="System.Runtime.Serialization">
+        <constructor name="StreamingContext(System.Runtime.Serialization.StreamingContextStates)" argnames="state" />
+        <constructor name="StreamingContext(System.Runtime.Serialization.StreamingContextStates, System.Object)" argnames="state, additional" />
+        <property name="Context" propertytype="System.Object" />
+        <property name="State" propertytype="System.Runtime.Serialization.StreamingContextStates" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <enum name="StreamingContextStates" namespace="System.Runtime.Serialization">
+        <field name="CrossProcess" />
+        <field name="CrossMachine" />
+        <field name="File" />
+        <field name="Persistence" />
+        <field name="Remoting" />
+        <field name="Other" />
+        <field name="Clone" />
+        <field name="CrossAppDomain" />
+        <field name="All" />
+    </enum>
+    <class name="PermissionSet" namespace="System.Security">
+        <constructor name="PermissionSet(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="PermissionSet(System.Security.PermissionSet)" argnames="permSet" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <method name="PermitOnly()" argnames="" returntype="System.Void" />
+        <method name="Deny()" argnames="" returntype="System.Void" />
+        <method name="Demand()" argnames="" returntype="System.Void" />
+        <method name="Assert()" argnames="" returntype="System.Void" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="et" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.PermissionSet" />
+        <method name="Union(System.Security.PermissionSet)" argnames="other" returntype="System.Security.PermissionSet" />
+        <method name="Intersect(System.Security.PermissionSet)" argnames="other" returntype="System.Security.PermissionSet" />
+        <method name="IsSubsetOf(System.Security.PermissionSet)" argnames="target" returntype="System.Boolean" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="RemovePermission(System.Type)" argnames="permClass" returntype="System.Security.IPermission" />
+        <method name="AddPermission(System.Security.IPermission)" argnames="perm" returntype="System.Security.IPermission" />
+        <method name="SetPermission(System.Security.IPermission)" argnames="perm" returntype="System.Security.IPermission" />
+        <method name="GetPermission(System.Type)" argnames="permClass" returntype="System.Security.IPermission" />
+        <method name="IsEmpty()" argnames="" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ConvertPermissionSet(System.String, System.Byte[], System.String)" argnames="inFormat, inData, outFormat" returntype="System.Byte[]" />
+        <method name="ContainsNonCodeAccessPermissions()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="NamedPermissionSet" namespace="System.Security">
+        <constructor name="NamedPermissionSet(System.String)" argnames="name" />
+        <constructor name="NamedPermissionSet(System.String, System.Security.Permissions.PermissionState)" argnames="name, state" />
+        <constructor name="NamedPermissionSet(System.String, System.Security.PermissionSet)" argnames="name, permSet" />
+        <constructor name="NamedPermissionSet(System.Security.NamedPermissionSet)" argnames="permSet" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Description" propertytype="System.String" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="et" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.PermissionSet" />
+        <method name="Copy(System.String)" argnames="name" returntype="System.Security.NamedPermissionSet" />
+    </class>
+    <class name="SecurityElement" namespace="System.Security">
+        <constructor name="SecurityElement(System.String)" argnames="tag" />
+        <constructor name="SecurityElement(System.String, System.String)" argnames="tag, text" />
+        <property name="Tag" propertytype="System.String" />
+        <property name="Attributes" propertytype="System.Collections.Hashtable" />
+        <property name="Text" propertytype="System.String" />
+        <property name="Children" propertytype="System.Collections.ArrayList" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="AddAttribute(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+        <method name="AddChild(System.Security.SecurityElement)" argnames="child" returntype="System.Void" />
+        <method name="Equal(System.Security.SecurityElement)" argnames="other" returntype="System.Boolean" />
+        <method name="IsValidTag(System.String)" argnames="tag" returntype="System.Boolean" />
+        <method name="IsValidText(System.String)" argnames="text" returntype="System.Boolean" />
+        <method name="IsValidAttributeName(System.String)" argnames="name" returntype="System.Boolean" />
+        <method name="IsValidAttributeValue(System.String)" argnames="value" returntype="System.Boolean" />
+        <method name="Escape(System.String)" argnames="str" returntype="System.String" />
+        <method name="Attribute(System.String)" argnames="name" returntype="System.String" />
+        <method name="SearchForChildByTag(System.String)" argnames="tag" returntype="System.Security.SecurityElement" />
+        <method name="SearchForTextOfTag(System.String)" argnames="tag" returntype="System.String" />
+    </class>
+    <class name="XmlSyntaxException" namespace="System.Security">
+        <constructor name="XmlSyntaxException()" argnames="" />
+        <constructor name="XmlSyntaxException(System.String)" argnames="message" />
+        <constructor name="XmlSyntaxException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="XmlSyntaxException(System.Int32)" argnames="lineNumber" />
+        <constructor name="XmlSyntaxException(System.Int32, System.String)" argnames="lineNumber, message" />
+    </class>
+    <class name="CodeAccessPermission" namespace="System.Security">
+        <constructor name="CodeAccessPermission()" argnames="" />
+        <method name="PermitOnly()" argnames="" returntype="System.Void" />
+        <method name="Deny()" argnames="" returntype="System.Void" />
+        <method name="Assert()" argnames="" returntype="System.Void" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="elem" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand()" argnames="" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="RevertAssert()" argnames="" returntype="System.Void" />
+        <method name="RevertDeny()" argnames="" returntype="System.Void" />
+        <method name="RevertPermitOnly()" argnames="" returntype="System.Void" />
+        <method name="RevertAll()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="SuppressUnmanagedCodeSecurityAttribute" namespace="System.Security">
+        <constructor name="SuppressUnmanagedCodeSecurityAttribute()" argnames="" />
+    </class>
+    <class name="UnverifiableCodeAttribute" namespace="System.Security">
+        <constructor name="UnverifiableCodeAttribute()" argnames="" />
+    </class>
+    <class name="AllowPartiallyTrustedCallersAttribute" namespace="System.Security">
+        <constructor name="AllowPartiallyTrustedCallersAttribute()" argnames="" />
+    </class>
+    <class name="SecurityException" namespace="System.Security">
+        <constructor name="SecurityException()" argnames="" />
+        <constructor name="SecurityException(System.String)" argnames="message" />
+        <constructor name="SecurityException(System.String, System.Type)" argnames="message, type" />
+        <constructor name="SecurityException(System.String, System.Type, System.String)" argnames="message, type, state" />
+        <constructor name="SecurityException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="SecurityException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="PermissionType" propertytype="System.Type" />
+        <property name="PermissionState" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="SecurityManager" namespace="System.Security">
+        <property name="CheckExecutionRights" propertytype="System.Boolean" />
+        <property name="SecurityEnabled" propertytype="System.Boolean" />
+        <method name="IsGranted(System.Security.IPermission)" argnames="perm" returntype="System.Boolean" />
+        <method name="LoadPolicyLevelFromFile(System.String, System.Security.PolicyLevelType)" argnames="path, type" returntype="System.Security.Policy.PolicyLevel" />
+        <method name="LoadPolicyLevelFromString(System.String, System.Security.PolicyLevelType)" argnames="str, type" returntype="System.Security.Policy.PolicyLevel" />
+        <method name="SavePolicyLevel(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Void" />
+        <method name="ResolvePolicy(System.Security.Policy.Evidence, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet&amp;)" argnames="evidence, reqdPset, optPset, denyPset, denied" returntype="System.Security.PermissionSet" />
+        <method name="ResolvePolicy(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.PermissionSet" />
+        <method name="ResolvePolicyGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Collections.IEnumerator" />
+        <method name="PolicyHierarchy()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="SavePolicy()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="VerificationException" namespace="System.Security">
+        <constructor name="VerificationException()" argnames="" />
+        <constructor name="VerificationException(System.String)" argnames="message" />
+        <constructor name="VerificationException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="VerificationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <interface name="IEvidenceFactory" namespace="System.Security">
+        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
+    </interface>
+    <interface name="ISecurityEncodable" namespace="System.Security">
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+    </interface>
+    <interface name="ISecurityPolicyEncodable" namespace="System.Security">
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+    </interface>
+    <interface name="IStackWalk" namespace="System.Security">
+        <method name="PermitOnly()" argnames="" returntype="System.Void" />
+        <method name="Deny()" argnames="" returntype="System.Void" />
+        <method name="Demand()" argnames="" returntype="System.Void" />
+        <method name="Assert()" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IPermission" namespace="System.Security">
+        <method name="Demand()" argnames="" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </interface>
+    <enum name="PolicyLevelType" namespace="System.Security">
+        <field name="User" />
+        <field name="Machine" />
+        <field name="Enterprise" />
+        <field name="AppDomain" />
+    </enum>
+    <enum name="SecurityZone" namespace="System.Security">
+        <field name="MyComputer" />
+        <field name="Intranet" />
+        <field name="Trusted" />
+        <field name="Internet" />
+        <field name="Untrusted" />
+        <field name="NoZone" />
+    </enum>
+    <class name="Binder" namespace="System.Reflection">
+        <constructor name="Binder()" argnames="" />
+        <method name="ReorderArgumentArray(System.Object[]&amp;, System.Object)" argnames="args, state" returntype="System.Void" />
+        <method name="ChangeType(System.Object, System.Type, System.Globalization.CultureInfo)" argnames="value, type, culture" returntype="System.Object" />
+        <method name="SelectProperty(System.Reflection.BindingFlags, System.Reflection.PropertyInfo[], System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, match, returnType, indexes, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="SelectMethod(System.Reflection.BindingFlags, System.Reflection.MethodBase[], System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, match, types, modifiers" returntype="System.Reflection.MethodBase" />
+        <method name="BindToField(System.Reflection.BindingFlags, System.Reflection.FieldInfo[], System.Object, System.Globalization.CultureInfo)" argnames="bindingAttr, match, value, culture" returntype="System.Reflection.FieldInfo" />
+        <method name="BindToMethod(System.Reflection.BindingFlags, System.Reflection.MethodBase[], System.Object[]&amp;, System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[], System.Object&amp;)" argnames="bindingAttr, match, args, modifiers, culture, names, state" returntype="System.Reflection.MethodBase" />
+    </class>
+    <class name="MemberInfo" namespace="System.Reflection">
+        <constructor name="MemberInfo()" argnames="" />
+        <property name="Cache" propertytype="System.Reflection.Cache.InternalCache" />
+        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
+        <property name="Name" propertytype="System.String" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+    </class>
+    <class name="AmbiguousMatchException" namespace="System.Reflection">
+        <constructor name="AmbiguousMatchException()" argnames="" />
+        <constructor name="AmbiguousMatchException(System.String)" argnames="message" />
+        <constructor name="AmbiguousMatchException(System.String, System.Exception)" argnames="message, inner" />
+    </class>
+    <class name="Assembly" namespace="System.Reflection">
+        <property name="CodeBase" propertytype="System.String" />
+        <property name="EscapedCodeBase" propertytype="System.String" />
+        <property name="FullName" propertytype="System.String" />
+        <property name="EntryPoint" propertytype="System.Reflection.MethodInfo" />
+        <property name="Evidence" propertytype="System.Security.Policy.Evidence" />
+        <property name="Location" propertytype="System.String" />
+        <property name="GlobalAssemblyCache" propertytype="System.Boolean" />
+        <property name="Cache" propertytype="System.Reflection.Cache.InternalCache" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="GetManifestResourceInfo(System.String)" argnames="resourceName" returntype="System.Reflection.ManifestResourceInfo" />
+        <method name="GetManifestResourceNames()" argnames="" returntype="System.String[]" />
+        <method name="GetFiles(System.Boolean)" argnames="getResourceModules" returntype="System.IO.FileStream[]" />
+        <method name="GetFiles()" argnames="" returntype="System.IO.FileStream[]" />
+        <method name="GetFile(System.String)" argnames="name" returntype="System.IO.FileStream" />
+        <method name="GetManifestResourceStream(System.String)" argnames="name" returntype="System.IO.Stream" />
+        <method name="GetManifestResourceStream(System.Type, System.String)" argnames="type, name" returntype="System.IO.Stream" />
+        <method name="GetTypes()" argnames="" returntype="System.Type[]" />
+        <method name="GetExportedTypes()" argnames="" returntype="System.Type[]" />
+        <method name="GetType(System.String, System.Boolean)" argnames="name, throwOnError" returntype="System.Type" />
+        <method name="GetType(System.String)" argnames="name" returntype="System.Type" />
+        <method name="GetName(System.Boolean)" argnames="copiedName" returntype="System.Reflection.AssemblyName" />
+        <method name="GetName()" argnames="" returntype="System.Reflection.AssemblyName" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="CreateQualifiedName(System.String, System.String)" argnames="assemblyName, typeName" returntype="System.String" />
+        <method name="GetAssembly(System.Type)" argnames="type" returntype="System.Reflection.Assembly" />
+        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="name, throwOnError, ignoreCase" returntype="System.Type" />
+        <method name="GetSatelliteAssembly(System.Globalization.CultureInfo)" argnames="culture" returntype="System.Reflection.Assembly" />
+        <method name="GetSatelliteAssembly(System.Globalization.CultureInfo, System.Version)" argnames="culture, version" returntype="System.Reflection.Assembly" />
+        <method name="LoadFrom(System.String)" argnames="assemblyFile" returntype="System.Reflection.Assembly" />
+        <method name="LoadFrom(System.String, System.Security.Policy.Evidence)" argnames="assemblyFile, securityEvidence" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.String)" argnames="assemblyString" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.String, System.Security.Policy.Evidence)" argnames="assemblyString, assemblySecurity" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Reflection.AssemblyName)" argnames="assemblyRef" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Reflection.AssemblyName, System.Security.Policy.Evidence)" argnames="assemblyRef, assemblySecurity" returntype="System.Reflection.Assembly" />
+        <method name="LoadWithPartialName(System.String)" argnames="partialName" returntype="System.Reflection.Assembly" />
+        <method name="LoadWithPartialName(System.String, System.Security.Policy.Evidence)" argnames="partialName, securityEvidence" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[])" argnames="rawAssembly" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[], System.Byte[])" argnames="rawAssembly, rawSymbolStore" returntype="System.Reflection.Assembly" />
+        <method name="Load(System.Byte[], System.Byte[], System.Security.Policy.Evidence)" argnames="rawAssembly, rawSymbolStore, securityEvidence" returntype="System.Reflection.Assembly" />
+        <method name="LoadModule(System.String, System.Byte[])" argnames="moduleName, rawModule" returntype="System.Reflection.Module" />
+        <method name="LoadModule(System.String, System.Byte[], System.Byte[])" argnames="moduleName, rawModule, rawSymbolStore" returntype="System.Reflection.Module" />
+        <method name="CreateInstance(System.String)" argnames="typeName" returntype="System.Object" />
+        <method name="CreateInstance(System.String, System.Boolean)" argnames="typeName, ignoreCase" returntype="System.Object" />
+        <method name="CreateInstance(System.String, System.Boolean, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, System.Object[])" argnames="typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes" returntype="System.Object" />
+        <method name="GetLoadedModules()" argnames="" returntype="System.Reflection.Module[]" />
+        <method name="GetLoadedModules(System.Boolean)" argnames="getResourceModules" returntype="System.Reflection.Module[]" />
+        <method name="GetModules()" argnames="" returntype="System.Reflection.Module[]" />
+        <method name="GetModules(System.Boolean)" argnames="getResourceModules" returntype="System.Reflection.Module[]" />
+        <method name="GetModule(System.String)" argnames="name" returntype="System.Reflection.Module" />
+        <method name="GetExecutingAssembly()" argnames="" returntype="System.Reflection.Assembly" />
+        <method name="GetCallingAssembly()" argnames="" returntype="System.Reflection.Assembly" />
+        <method name="GetEntryAssembly()" argnames="" returntype="System.Reflection.Assembly" />
+        <method name="GetReferencedAssemblies()" argnames="" returntype="System.Reflection.AssemblyName[]" />
+        <event name="ModuleResolve" />
+    </class>
+    <class name="AssemblyCultureAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyCultureAttribute(System.String)" argnames="culture" />
+        <property name="Culture" propertytype="System.String" />
+    </class>
+    <class name="AssemblyVersionAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyVersionAttribute(System.String)" argnames="version" />
+        <property name="Version" propertytype="System.String" />
+    </class>
+    <class name="AssemblyKeyFileAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyKeyFileAttribute(System.String)" argnames="keyFile" />
+        <property name="KeyFile" propertytype="System.String" />
+    </class>
+    <class name="AssemblyKeyNameAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyKeyNameAttribute(System.String)" argnames="keyName" />
+        <property name="KeyName" propertytype="System.String" />
+    </class>
+    <class name="AssemblyDelaySignAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyDelaySignAttribute(System.Boolean)" argnames="delaySign" />
+        <property name="DelaySign" propertytype="System.Boolean" />
+    </class>
+    <class name="AssemblyAlgorithmIdAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyAlgorithmIdAttribute(System.Configuration.Assemblies.AssemblyHashAlgorithm)" argnames="algorithmId" />
+        <constructor name="AssemblyAlgorithmIdAttribute(System.UInt32)" argnames="algorithmId" />
+        <property name="AlgorithmId" propertytype="System.UInt32" />
+    </class>
+    <class name="AssemblyFlagsAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyFlagsAttribute(System.UInt32)" argnames="flags" />
+        <property name="Flags" propertytype="System.UInt32" />
+    </class>
+    <class name="AssemblyFileVersionAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyFileVersionAttribute(System.String)" argnames="version" />
+        <property name="Version" propertytype="System.String" />
+    </class>
+    <class name="AssemblyName" namespace="System.Reflection">
+        <constructor name="AssemblyName()" argnames="" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Version" propertytype="System.Version" />
+        <property name="CultureInfo" propertytype="System.Globalization.CultureInfo" />
+        <property name="CodeBase" propertytype="System.String" />
+        <property name="EscapedCodeBase" propertytype="System.String" />
+        <property name="Flags" propertytype="System.Reflection.AssemblyNameFlags" />
+        <property name="HashAlgorithm" propertytype="System.Configuration.Assemblies.AssemblyHashAlgorithm" />
+        <property name="VersionCompatibility" propertytype="System.Configuration.Assemblies.AssemblyVersionCompatibility" />
+        <property name="KeyPair" propertytype="System.Reflection.StrongNameKeyPair" />
+        <property name="FullName" propertytype="System.String" />
+        <method name="OnDeserialization(System.Object)" argnames="sender" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GetAssemblyName(System.String)" argnames="assemblyFile" returntype="System.Reflection.AssemblyName" />
+        <method name="GetPublicKey()" argnames="" returntype="System.Byte[]" />
+        <method name="SetPublicKey(System.Byte[])" argnames="publicKey" returntype="System.Void" />
+        <method name="GetPublicKeyToken()" argnames="" returntype="System.Byte[]" />
+        <method name="SetPublicKeyToken(System.Byte[])" argnames="publicKeyToken" returntype="System.Void" />
+    </class>
+    <class name="AssemblyNameProxy" namespace="System.Reflection">
+        <constructor name="AssemblyNameProxy()" argnames="" />
+        <method name="GetAssemblyName(System.String)" argnames="assemblyFile" returntype="System.Reflection.AssemblyName" />
+    </class>
+    <class name="AssemblyCopyrightAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyCopyrightAttribute(System.String)" argnames="copyright" />
+        <property name="Copyright" propertytype="System.String" />
+    </class>
+    <class name="AssemblyTrademarkAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyTrademarkAttribute(System.String)" argnames="trademark" />
+        <property name="Trademark" propertytype="System.String" />
+    </class>
+    <class name="AssemblyProductAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyProductAttribute(System.String)" argnames="product" />
+        <property name="Product" propertytype="System.String" />
+    </class>
+    <class name="AssemblyCompanyAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyCompanyAttribute(System.String)" argnames="company" />
+        <property name="Company" propertytype="System.String" />
+    </class>
+    <class name="AssemblyDescriptionAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyDescriptionAttribute(System.String)" argnames="description" />
+        <property name="Description" propertytype="System.String" />
+    </class>
+    <class name="AssemblyTitleAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyTitleAttribute(System.String)" argnames="title" />
+        <property name="Title" propertytype="System.String" />
+    </class>
+    <class name="AssemblyConfigurationAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyConfigurationAttribute(System.String)" argnames="configuration" />
+        <property name="Configuration" propertytype="System.String" />
+    </class>
+    <class name="AssemblyDefaultAliasAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyDefaultAliasAttribute(System.String)" argnames="defaultAlias" />
+        <property name="DefaultAlias" propertytype="System.String" />
+    </class>
+    <class name="AssemblyInformationalVersionAttribute" namespace="System.Reflection">
+        <constructor name="AssemblyInformationalVersionAttribute(System.String)" argnames="informationalVersion" />
+        <property name="InformationalVersion" propertytype="System.String" />
+    </class>
+    <class name="CustomAttributeFormatException" namespace="System.Reflection">
+        <constructor name="CustomAttributeFormatException()" argnames="" />
+        <constructor name="CustomAttributeFormatException(System.String)" argnames="message" />
+        <constructor name="CustomAttributeFormatException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="CustomAttributeFormatException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="MethodBase" namespace="System.Reflection">
+        <constructor name="MethodBase()" argnames="" />
+        <property name="MethodHandle" propertytype="System.RuntimeMethodHandle" />
+        <property name="Attributes" propertytype="System.Reflection.MethodAttributes" />
+        <property name="IsPublic" propertytype="System.Boolean" />
+        <property name="IsPrivate" propertytype="System.Boolean" />
+        <property name="IsFamily" propertytype="System.Boolean" />
+        <property name="IsAssembly" propertytype="System.Boolean" />
+        <property name="IsFamilyAndAssembly" propertytype="System.Boolean" />
+        <property name="IsFamilyOrAssembly" propertytype="System.Boolean" />
+        <property name="IsStatic" propertytype="System.Boolean" />
+        <property name="IsFinal" propertytype="System.Boolean" />
+        <property name="IsVirtual" propertytype="System.Boolean" />
+        <property name="IsHideBySig" propertytype="System.Boolean" />
+        <property name="IsAbstract" propertytype="System.Boolean" />
+        <property name="IsSpecialName" propertytype="System.Boolean" />
+        <property name="IsConstructor" propertytype="System.Boolean" />
+        <property name="CallingConvention" propertytype="System.Reflection.CallingConventions" />
+        <property name="IsOverloaded" propertytype="System.Boolean" />
+        <method name="Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, parameters, culture" returntype="System.Object" />
+        <method name="GetMethodImplementationFlags()" argnames="" returntype="System.Reflection.MethodImplAttributes" />
+        <method name="GetParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
+        <method name="GetMethodFromHandle(System.RuntimeMethodHandle)" argnames="handle" returntype="System.Reflection.MethodBase" />
+        <method name="GetCurrentMethod()" argnames="" returntype="System.Reflection.MethodBase" />
+        <method name="Invoke(System.Object, System.Object[])" argnames="obj, parameters" returntype="System.Object" />
+    </class>
+    <class name="ConstructorInfo" namespace="System.Reflection">
+        <constructor name="ConstructorInfo()" argnames="" />
+        <field name="ConstructorName" />
+        <field name="TypeConstructorName" />
+        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
+        <method name="Invoke(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="invokeAttr, binder, parameters, culture" returntype="System.Object" />
+        <method name="Invoke(System.Object[])" argnames="parameters" returntype="System.Object" />
+    </class>
+    <class name="DefaultMemberAttribute" namespace="System.Reflection">
+        <constructor name="DefaultMemberAttribute(System.String)" argnames="memberName" />
+        <property name="MemberName" propertytype="System.String" />
+    </class>
+    <class name="EventInfo" namespace="System.Reflection">
+        <constructor name="EventInfo()" argnames="" />
+        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
+        <property name="EventHandlerType" propertytype="System.Type" />
+        <property name="Attributes" propertytype="System.Reflection.EventAttributes" />
+        <property name="IsSpecialName" propertytype="System.Boolean" />
+        <property name="IsMulticast" propertytype="System.Boolean" />
+        <method name="GetRaiseMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
+        <method name="GetRemoveMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
+        <method name="GetAddMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
+        <method name="GetAddMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
+        <method name="GetRemoveMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
+        <method name="GetRaiseMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
+        <method name="AddEventHandler(System.Object, System.Delegate)" argnames="target, handler" returntype="System.Void" />
+        <method name="RemoveEventHandler(System.Object, System.Delegate)" argnames="target, handler" returntype="System.Void" />
+    </class>
+    <class name="FieldInfo" namespace="System.Reflection">
+        <constructor name="FieldInfo()" argnames="" />
+        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
+        <property name="FieldType" propertytype="System.Type" />
+        <property name="FieldHandle" propertytype="System.RuntimeFieldHandle" />
+        <property name="Attributes" propertytype="System.Reflection.FieldAttributes" />
+        <property name="IsPublic" propertytype="System.Boolean" />
+        <property name="IsPrivate" propertytype="System.Boolean" />
+        <property name="IsFamily" propertytype="System.Boolean" />
+        <property name="IsAssembly" propertytype="System.Boolean" />
+        <property name="IsFamilyAndAssembly" propertytype="System.Boolean" />
+        <property name="IsFamilyOrAssembly" propertytype="System.Boolean" />
+        <property name="IsStatic" propertytype="System.Boolean" />
+        <property name="IsInitOnly" propertytype="System.Boolean" />
+        <property name="IsLiteral" propertytype="System.Boolean" />
+        <property name="IsNotSerialized" propertytype="System.Boolean" />
+        <property name="IsSpecialName" propertytype="System.Boolean" />
+        <property name="IsPinvokeImpl" propertytype="System.Boolean" />
+        <method name="SetValueDirect(System.TypedReference, System.Object)" argnames="obj, value" returntype="System.Void" />
+        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Globalization.CultureInfo)" argnames="obj, value, invokeAttr, binder, culture" returntype="System.Void" />
+        <method name="GetValueDirect(System.TypedReference)" argnames="obj" returntype="System.Object" />
+        <method name="GetValue(System.Object)" argnames="obj" returntype="System.Object" />
+        <method name="SetValue(System.Object, System.Object)" argnames="obj, value" returntype="System.Void" />
+        <method name="GetFieldFromHandle(System.RuntimeFieldHandle)" argnames="handle" returntype="System.Reflection.FieldInfo" />
+    </class>
+    <class name="InvalidFilterCriteriaException" namespace="System.Reflection">
+        <constructor name="InvalidFilterCriteriaException()" argnames="" />
+        <constructor name="InvalidFilterCriteriaException(System.String)" argnames="message" />
+        <constructor name="InvalidFilterCriteriaException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="InvalidFilterCriteriaException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="ManifestResourceInfo" namespace="System.Reflection">
+        <property name="ReferencedAssembly" propertytype="System.Reflection.Assembly" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="ResourceLocation" propertytype="System.Reflection.ResourceLocation" />
+    </class>
+    <class name="MethodInfo" namespace="System.Reflection">
+        <constructor name="MethodInfo()" argnames="" />
+        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
+        <property name="ReturnType" propertytype="System.Type" />
+        <property name="ReturnTypeCustomAttributes" propertytype="System.Reflection.ICustomAttributeProvider" />
+        <method name="GetBaseDefinition()" argnames="" returntype="System.Reflection.MethodInfo" />
+    </class>
+    <class name="Missing" namespace="System.Reflection">
+        <field name="Value" />
+    </class>
+    <class name="Module" namespace="System.Reflection">
+        <field name="FilterTypeName" />
+        <field name="FilterTypeNameIgnoreCase" />
+        <property name="ScopeName" propertytype="System.String" />
+        <property name="FullyQualifiedName" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Assembly" propertytype="System.Reflection.Assembly" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetTypes()" argnames="" returntype="System.Type[]" />
+        <method name="FindTypes(System.Reflection.TypeFilter, System.Object)" argnames="filter, filterCriteria" returntype="System.Type[]" />
+        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="className, throwOnError, ignoreCase" returntype="System.Type" />
+        <method name="GetType(System.String)" argnames="className" returntype="System.Type" />
+        <method name="GetType(System.String, System.Boolean)" argnames="className, ignoreCase" returntype="System.Type" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GetSignerCertificate()" argnames="" returntype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <method name="GetMethods()" argnames="" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethod(System.String, System.Type[])" argnames="name, types" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethod(System.String)" argnames="name" returntype="System.Reflection.MethodInfo" />
+        <method name="GetFields()" argnames="" returntype="System.Reflection.FieldInfo[]" />
+        <method name="GetField(System.String)" argnames="name" returntype="System.Reflection.FieldInfo" />
+        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
+        <method name="IsResource()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="ParameterInfo" namespace="System.Reflection">
+        <constructor name="ParameterInfo()" argnames="" />
+        <field name="NameImpl" />
+        <field name="ClassImpl" />
+        <field name="PositionImpl" />
+        <field name="AttrsImpl" />
+        <field name="DefaultValueImpl" />
+        <field name="MemberImpl" />
+        <property name="ParameterType" propertytype="System.Type" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Position" propertytype="System.Int32" />
+        <property name="Attributes" propertytype="System.Reflection.ParameterAttributes" />
+        <property name="IsIn" propertytype="System.Boolean" />
+        <property name="IsOut" propertytype="System.Boolean" />
+        <property name="IsLcid" propertytype="System.Boolean" />
+        <property name="IsRetval" propertytype="System.Boolean" />
+        <property name="IsOptional" propertytype="System.Boolean" />
+        <property name="DefaultValue" propertytype="System.Object" />
+        <property name="Member" propertytype="System.Reflection.MemberInfo" />
+        <property name="Cache" propertytype="System.Reflection.Cache.InternalCache" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+    </class>
+    <class name="Pointer" namespace="System.Reflection">
+        <method name="Box(System.Void*, System.Type)" argnames="ptr, type" returntype="System.Object" />
+        <method name="Unbox(System.Object)" argnames="ptr" returntype="System.Void*" />
+    </class>
+    <class name="PropertyInfo" namespace="System.Reflection">
+        <constructor name="PropertyInfo()" argnames="" />
+        <property name="MemberType" propertytype="System.Reflection.MemberTypes" />
+        <property name="PropertyType" propertytype="System.Type" />
+        <property name="Attributes" propertytype="System.Reflection.PropertyAttributes" />
+        <property name="IsSpecialName" propertytype="System.Boolean" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <method name="GetIndexParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
+        <method name="GetSetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
+        <method name="GetGetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
+        <method name="GetAccessors(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo[]" />
+        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, value, invokeAttr, binder, index, culture" returntype="System.Void" />
+        <method name="SetValue(System.Object, System.Object, System.Object[])" argnames="obj, value, index" returntype="System.Void" />
+        <method name="GetValue(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, index, culture" returntype="System.Object" />
+        <method name="GetValue(System.Object, System.Object[])" argnames="obj, index" returntype="System.Object" />
+        <method name="GetAccessors()" argnames="" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetGetMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
+        <method name="GetSetMethod()" argnames="" returntype="System.Reflection.MethodInfo" />
+    </class>
+    <class name="ReflectionTypeLoadException" namespace="System.Reflection">
+        <constructor name="ReflectionTypeLoadException(System.Type[], System.Exception[])" argnames="classes, exceptions" />
+        <constructor name="ReflectionTypeLoadException(System.Type[], System.Exception[], System.String)" argnames="classes, exceptions, message" />
+        <property name="Types" propertytype="System.Type[]" />
+        <property name="LoaderExceptions" propertytype="System.Exception[]" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="StrongNameKeyPair" namespace="System.Reflection">
+        <constructor name="StrongNameKeyPair(System.IO.FileStream)" argnames="keyPairFile" />
+        <constructor name="StrongNameKeyPair(System.Byte[])" argnames="keyPairArray" />
+        <constructor name="StrongNameKeyPair(System.String)" argnames="keyPairContainer" />
+        <property name="PublicKey" propertytype="System.Byte[]" />
+    </class>
+    <class name="TargetException" namespace="System.Reflection">
+        <constructor name="TargetException()" argnames="" />
+        <constructor name="TargetException(System.String)" argnames="message" />
+        <constructor name="TargetException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="TargetException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="TargetInvocationException" namespace="System.Reflection">
+        <constructor name="TargetInvocationException(System.Exception)" argnames="inner" />
+        <constructor name="TargetInvocationException(System.String, System.Exception)" argnames="message, inner" />
+    </class>
+    <class name="TargetParameterCountException" namespace="System.Reflection">
+        <constructor name="TargetParameterCountException()" argnames="" />
+        <constructor name="TargetParameterCountException(System.String)" argnames="message" />
+        <constructor name="TargetParameterCountException(System.String, System.Exception)" argnames="message, inner" />
+    </class>
+    <class name="TypeDelegator" namespace="System.Reflection">
+        <constructor name="TypeDelegator()" argnames="" />
+        <constructor name="TypeDelegator(System.Type)" argnames="delegatingType" />
+        <field name="typeImpl" />
+        <property name="GUID" propertytype="System.Guid" />
+        <property name="Module" propertytype="System.Reflection.Module" />
+        <property name="Assembly" propertytype="System.Reflection.Assembly" />
+        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
+        <property name="Name" propertytype="System.String" />
+        <property name="FullName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="AssemblyQualifiedName" propertytype="System.String" />
+        <property name="BaseType" propertytype="System.Type" />
+        <property name="UnderlyingSystemType" propertytype="System.Type" />
+        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
+        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
+        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
+        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
+        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
+        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetElementType()" argnames="" returntype="System.Type" />
+        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
+        <method name="IsValueTypeImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
+        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
+        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
+        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
+        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
+        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
+        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+    </class>
+    <interface name="ICustomAttributeProvider" namespace="System.Reflection">
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+    </interface>
+    <interface name="IReflect" namespace="System.Reflection">
+        <property name="UnderlyingSystemType" propertytype="System.Type" />
+        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
+        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetMember(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
+        <method name="GetProperty(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetProperty(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
+        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
+        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetMethod(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.MethodInfo" />
+        <method name="GetMethod(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, types, modifiers" returntype="System.Reflection.MethodInfo" />
+    </interface>
+    <struct name="InterfaceMapping" namespace="System.Reflection">
+        <field name="TargetType" />
+        <field name="InterfaceType" />
+        <field name="TargetMethods" />
+        <field name="InterfaceMethods" />
+    </struct>
+    <struct name="ParameterModifier" namespace="System.Reflection">
+        <constructor name="ParameterModifier(System.Int32)" argnames="paramaterCount" />
+        <property name="Item" propertytype="System.Boolean" />
+    </struct>
+    <delegate name="ModuleResolveEventHandler" namespace="System.Reflection">
+        <constructor name="ModuleResolveEventHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Reflection.Module" />
+        <method name="BeginInvoke(System.Object, System.ResolveEventArgs, System.AsyncCallback, System.Object)" argnames="sender, e, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.ResolveEventArgs)" argnames="sender, e" returntype="System.Reflection.Module" />
+    </delegate>
+    <delegate name="MemberFilter" namespace="System.Reflection">
+        <constructor name="MemberFilter(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.Reflection.MemberInfo, System.Object, System.AsyncCallback, System.Object)" argnames="m, filterCriteria, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Reflection.MemberInfo, System.Object)" argnames="m, filterCriteria" returntype="System.Boolean" />
+    </delegate>
+    <delegate name="TypeFilter" namespace="System.Reflection">
+        <constructor name="TypeFilter(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.Type, System.Object, System.AsyncCallback, System.Object)" argnames="m, filterCriteria, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Type, System.Object)" argnames="m, filterCriteria" returntype="System.Boolean" />
+    </delegate>
+    <enum name="AssemblyNameFlags" namespace="System.Reflection">
+        <field name="None" />
+        <field name="PublicKey" />
+    </enum>
+    <enum name="BindingFlags" namespace="System.Reflection">
+        <field name="Default" />
+        <field name="IgnoreCase" />
+        <field name="DeclaredOnly" />
+        <field name="Instance" />
+        <field name="Static" />
+        <field name="Public" />
+        <field name="NonPublic" />
+        <field name="FlattenHierarchy" />
+        <field name="InvokeMethod" />
+        <field name="CreateInstance" />
+        <field name="GetField" />
+        <field name="SetField" />
+        <field name="GetProperty" />
+        <field name="SetProperty" />
+        <field name="PutDispProperty" />
+        <field name="PutRefDispProperty" />
+        <field name="ExactBinding" />
+        <field name="SuppressChangeType" />
+        <field name="OptionalParamBinding" />
+        <field name="IgnoreReturn" />
+    </enum>
+    <enum name="CallingConventions" namespace="System.Reflection">
+        <field name="Standard" />
+        <field name="VarArgs" />
+        <field name="Any" />
+        <field name="HasThis" />
+        <field name="ExplicitThis" />
+    </enum>
+    <enum name="EventAttributes" namespace="System.Reflection">
+        <field name="None" />
+        <field name="SpecialName" />
+        <field name="ReservedMask" />
+        <field name="RTSpecialName" />
+    </enum>
+    <enum name="FieldAttributes" namespace="System.Reflection">
+        <field name="FieldAccessMask" />
+        <field name="PrivateScope" />
+        <field name="Private" />
+        <field name="FamANDAssem" />
+        <field name="Assembly" />
+        <field name="Family" />
+        <field name="FamORAssem" />
+        <field name="Public" />
+        <field name="Static" />
+        <field name="InitOnly" />
+        <field name="Literal" />
+        <field name="NotSerialized" />
+        <field name="SpecialName" />
+        <field name="PinvokeImpl" />
+        <field name="ReservedMask" />
+        <field name="RTSpecialName" />
+        <field name="HasFieldMarshal" />
+        <field name="HasDefault" />
+        <field name="HasFieldRVA" />
+    </enum>
+    <enum name="ResourceLocation" namespace="System.Reflection">
+        <field name="Embedded" />
+        <field name="ContainedInAnotherAssembly" />
+        <field name="ContainedInManifestFile" />
+    </enum>
+    <enum name="MemberTypes" namespace="System.Reflection">
+        <field name="Constructor" />
+        <field name="Event" />
+        <field name="Field" />
+        <field name="Method" />
+        <field name="Property" />
+        <field name="TypeInfo" />
+        <field name="Custom" />
+        <field name="NestedType" />
+        <field name="All" />
+    </enum>
+    <enum name="MethodAttributes" namespace="System.Reflection">
+        <field name="MemberAccessMask" />
+        <field name="PrivateScope" />
+        <field name="Private" />
+        <field name="FamANDAssem" />
+        <field name="Assembly" />
+        <field name="Family" />
+        <field name="FamORAssem" />
+        <field name="Public" />
+        <field name="Static" />
+        <field name="Final" />
+        <field name="Virtual" />
+        <field name="HideBySig" />
+        <field name="VtableLayoutMask" />
+        <field name="ReuseSlot" />
+        <field name="NewSlot" />
+        <field name="Abstract" />
+        <field name="SpecialName" />
+        <field name="PinvokeImpl" />
+        <field name="UnmanagedExport" />
+        <field name="RTSpecialName" />
+        <field name="ReservedMask" />
+        <field name="HasSecurity" />
+        <field name="RequireSecObject" />
+    </enum>
+    <enum name="MethodImplAttributes" namespace="System.Reflection">
+        <field name="CodeTypeMask" />
+        <field name="IL" />
+        <field name="Native" />
+        <field name="OPTIL" />
+        <field name="Runtime" />
+        <field name="ManagedMask" />
+        <field name="Unmanaged" />
+        <field name="Managed" />
+        <field name="ForwardRef" />
+        <field name="PreserveSig" />
+        <field name="InternalCall" />
+        <field name="Synchronized" />
+        <field name="NoInlining" />
+        <field name="MaxMethodImplVal" />
+    </enum>
+    <enum name="ParameterAttributes" namespace="System.Reflection">
+        <field name="None" />
+        <field name="In" />
+        <field name="Out" />
+        <field name="Lcid" />
+        <field name="Retval" />
+        <field name="Optional" />
+        <field name="ReservedMask" />
+        <field name="HasDefault" />
+        <field name="HasFieldMarshal" />
+        <field name="Reserved3" />
+        <field name="Reserved4" />
+    </enum>
+    <enum name="PropertyAttributes" namespace="System.Reflection">
+        <field name="None" />
+        <field name="SpecialName" />
+        <field name="ReservedMask" />
+        <field name="RTSpecialName" />
+        <field name="HasDefault" />
+        <field name="Reserved2" />
+        <field name="Reserved3" />
+        <field name="Reserved4" />
+    </enum>
+    <enum name="ResourceAttributes" namespace="System.Reflection">
+        <field name="Public" />
+        <field name="Private" />
+    </enum>
+    <enum name="TypeAttributes" namespace="System.Reflection">
+        <field name="VisibilityMask" />
+        <field name="NotPublic" />
+        <field name="Public" />
+        <field name="NestedPublic" />
+        <field name="NestedPrivate" />
+        <field name="NestedFamily" />
+        <field name="NestedAssembly" />
+        <field name="NestedFamANDAssem" />
+        <field name="NestedFamORAssem" />
+        <field name="LayoutMask" />
+        <field name="AutoLayout" />
+        <field name="SequentialLayout" />
+        <field name="ExplicitLayout" />
+        <field name="ClassSemanticsMask" />
+        <field name="Class" />
+        <field name="Interface" />
+        <field name="Abstract" />
+        <field name="Sealed" />
+        <field name="SpecialName" />
+        <field name="Import" />
+        <field name="Serializable" />
+        <field name="StringFormatMask" />
+        <field name="AnsiClass" />
+        <field name="UnicodeClass" />
+        <field name="AutoClass" />
+        <field name="BeforeFieldInit" />
+        <field name="ReservedMask" />
+        <field name="RTSpecialName" />
+        <field name="HasSecurity" />
+    </enum>
+    <class name="WaitHandle" namespace="System.Threading">
+        <constructor name="WaitHandle()" argnames="" />
+        <field name="InvalidHandle" />
+        <field name="WaitTimeout" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <method name="Dispose(System.Boolean)" argnames="explicitDisposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="WaitOne()" argnames="" returntype="System.Boolean" />
+        <method name="WaitOne(System.TimeSpan, System.Boolean)" argnames="timeout, exitContext" returntype="System.Boolean" />
+        <method name="WaitOne(System.Int32, System.Boolean)" argnames="millisecondsTimeout, exitContext" returntype="System.Boolean" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="WaitAll(System.Threading.WaitHandle[], System.Int32, System.Boolean)" argnames="waitHandles, millisecondsTimeout, exitContext" returntype="System.Boolean" />
+        <method name="WaitAll(System.Threading.WaitHandle[], System.TimeSpan, System.Boolean)" argnames="waitHandles, timeout, exitContext" returntype="System.Boolean" />
+        <method name="WaitAll(System.Threading.WaitHandle[])" argnames="waitHandles" returntype="System.Boolean" />
+        <method name="WaitAny(System.Threading.WaitHandle[], System.Int32, System.Boolean)" argnames="waitHandles, millisecondsTimeout, exitContext" returntype="System.Int32" />
+        <method name="WaitAny(System.Threading.WaitHandle[], System.TimeSpan, System.Boolean)" argnames="waitHandles, timeout, exitContext" returntype="System.Int32" />
+        <method name="WaitAny(System.Threading.WaitHandle[])" argnames="waitHandles" returntype="System.Int32" />
+    </class>
+    <class name="AutoResetEvent" namespace="System.Threading">
+        <constructor name="AutoResetEvent(System.Boolean)" argnames="initialState" />
+        <method name="Reset()" argnames="" returntype="System.Boolean" />
+        <method name="Set()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="CompressedStack" namespace="System.Threading">
+        <property name="UnmanagedCompressedStack" propertytype="System.IntPtr" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="Interlocked" namespace="System.Threading">
+        <method name="Increment(System.Int32&amp;)" argnames="location" returntype="System.Int32" />
+        <method name="Decrement(System.Int32&amp;)" argnames="location" returntype="System.Int32" />
+        <method name="Increment(System.Int64&amp;)" argnames="location" returntype="System.Int64" />
+        <method name="Decrement(System.Int64&amp;)" argnames="location" returntype="System.Int64" />
+        <method name="Exchange(System.Int32&amp;, System.Int32)" argnames="location1, value" returntype="System.Int32" />
+        <method name="CompareExchange(System.Int32&amp;, System.Int32, System.Int32)" argnames="location1, value, comparand" returntype="System.Int32" />
+        <method name="Exchange(System.Single&amp;, System.Single)" argnames="location1, value" returntype="System.Single" />
+        <method name="CompareExchange(System.Single&amp;, System.Single, System.Single)" argnames="location1, value, comparand" returntype="System.Single" />
+        <method name="Exchange(System.Object&amp;, System.Object)" argnames="location1, value" returntype="System.Object" />
+        <method name="CompareExchange(System.Object&amp;, System.Object, System.Object)" argnames="location1, value, comparand" returntype="System.Object" />
+    </class>
+    <class name="ManualResetEvent" namespace="System.Threading">
+        <constructor name="ManualResetEvent(System.Boolean)" argnames="initialState" />
+        <method name="Reset()" argnames="" returntype="System.Boolean" />
+        <method name="Set()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="Monitor" namespace="System.Threading">
+        <method name="Enter(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="Exit(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="TryEnter(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="TryEnter(System.Object, System.Int32)" argnames="obj, millisecondsTimeout" returntype="System.Boolean" />
+        <method name="TryEnter(System.Object, System.TimeSpan)" argnames="obj, timeout" returntype="System.Boolean" />
+        <method name="Wait(System.Object, System.Int32, System.Boolean)" argnames="obj, millisecondsTimeout, exitContext" returntype="System.Boolean" />
+        <method name="Wait(System.Object, System.TimeSpan, System.Boolean)" argnames="obj, timeout, exitContext" returntype="System.Boolean" />
+        <method name="Wait(System.Object, System.Int32)" argnames="obj, millisecondsTimeout" returntype="System.Boolean" />
+        <method name="Wait(System.Object, System.TimeSpan)" argnames="obj, timeout" returntype="System.Boolean" />
+        <method name="Wait(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="Pulse(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="PulseAll(System.Object)" argnames="obj" returntype="System.Void" />
+    </class>
+    <class name="Mutex" namespace="System.Threading">
+        <constructor name="Mutex(System.Boolean, System.String, System.Boolean&amp;)" argnames="initiallyOwned, name, createdNew" />
+        <constructor name="Mutex(System.Boolean, System.String)" argnames="initiallyOwned, name" />
+        <constructor name="Mutex(System.Boolean)" argnames="initiallyOwned" />
+        <constructor name="Mutex()" argnames="" />
+        <method name="ReleaseMutex()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="Overlapped" namespace="System.Threading">
+        <constructor name="Overlapped()" argnames="" />
+        <constructor name="Overlapped(System.Int32, System.Int32, System.Int32, System.IAsyncResult)" argnames="offsetLo, offsetHi, hEvent, ar" />
+        <property name="AsyncResult" propertytype="System.IAsyncResult" />
+        <property name="OffsetLow" propertytype="System.Int32" />
+        <property name="OffsetHigh" propertytype="System.Int32" />
+        <property name="EventHandle" propertytype="System.Int32" />
+        <method name="Pack(System.Threading.IOCompletionCallback)" argnames="iocb" returntype="System.Threading.NativeOverlapped*" />
+        <method name="UnsafePack(System.Threading.IOCompletionCallback)" argnames="iocb" returntype="System.Threading.NativeOverlapped*" />
+        <method name="Unpack(System.Threading.NativeOverlapped*)" argnames="nativeOverlappedPtr" returntype="System.Threading.Overlapped" />
+        <method name="Free(System.Threading.NativeOverlapped*)" argnames="nativeOverlappedPtr" returntype="System.Void" />
+    </class>
+    <class name="ReaderWriterLock" namespace="System.Threading">
+        <constructor name="ReaderWriterLock()" argnames="" />
+        <property name="IsReaderLockHeld" propertytype="System.Boolean" />
+        <property name="IsWriterLockHeld" propertytype="System.Boolean" />
+        <property name="WriterSeqNum" propertytype="System.Int32" />
+        <method name="AcquireReaderLock(System.Int32)" argnames="millisecondsTimeout" returntype="System.Void" />
+        <method name="AcquireReaderLock(System.TimeSpan)" argnames="timeout" returntype="System.Void" />
+        <method name="AcquireWriterLock(System.Int32)" argnames="millisecondsTimeout" returntype="System.Void" />
+        <method name="AcquireWriterLock(System.TimeSpan)" argnames="timeout" returntype="System.Void" />
+        <method name="ReleaseReaderLock()" argnames="" returntype="System.Void" />
+        <method name="ReleaseWriterLock()" argnames="" returntype="System.Void" />
+        <method name="UpgradeToWriterLock(System.Int32)" argnames="millisecondsTimeout" returntype="System.Threading.LockCookie" />
+        <method name="UpgradeToWriterLock(System.TimeSpan)" argnames="timeout" returntype="System.Threading.LockCookie" />
+        <method name="DowngradeFromWriterLock(System.Threading.LockCookie&amp;)" argnames="lockCookie" returntype="System.Void" />
+        <method name="ReleaseLock()" argnames="" returntype="System.Threading.LockCookie" />
+        <method name="RestoreLock(System.Threading.LockCookie&amp;)" argnames="lockCookie" returntype="System.Void" />
+        <method name="AnyWritersSince(System.Int32)" argnames="seqNum" returntype="System.Boolean" />
+    </class>
+    <class name="SynchronizationLockException" namespace="System.Threading">
+        <constructor name="SynchronizationLockException()" argnames="" />
+        <constructor name="SynchronizationLockException(System.String)" argnames="message" />
+        <constructor name="SynchronizationLockException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="SynchronizationLockException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Thread" namespace="System.Threading">
+        <constructor name="Thread(System.Threading.ThreadStart)" argnames="start" />
+        <property name="Priority" propertytype="System.Threading.ThreadPriority" />
+        <property name="IsAlive" propertytype="System.Boolean" />
+        <property name="IsThreadPoolThread" propertytype="System.Boolean" />
+        <property name="CurrentThread" propertytype="System.Threading.Thread" />
+        <property name="IsBackground" propertytype="System.Boolean" />
+        <property name="ThreadState" propertytype="System.Threading.ThreadState" />
+        <property name="ApartmentState" propertytype="System.Threading.ApartmentState" />
+        <property name="CurrentUICulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="CurrentCulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="CurrentContext" propertytype="System.Runtime.Remoting.Contexts.Context" />
+        <property name="CurrentPrincipal" propertytype="System.Security.Principal.IPrincipal" />
+        <property name="Name" propertytype="System.String" />
+        <property name="ExceptionState" propertytype="System.Object" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Start()" argnames="" returntype="System.Void" />
+        <method name="Abort(System.Object)" argnames="stateInfo" returntype="System.Void" />
+        <method name="Abort()" argnames="" returntype="System.Void" />
+        <method name="ResetAbort()" argnames="" returntype="System.Void" />
+        <method name="Suspend()" argnames="" returntype="System.Void" />
+        <method name="Resume()" argnames="" returntype="System.Void" />
+        <method name="Interrupt()" argnames="" returntype="System.Void" />
+        <method name="Join()" argnames="" returntype="System.Void" />
+        <method name="Join(System.Int32)" argnames="millisecondsTimeout" returntype="System.Boolean" />
+        <method name="Join(System.TimeSpan)" argnames="timeout" returntype="System.Boolean" />
+        <method name="Sleep(System.Int32)" argnames="millisecondsTimeout" returntype="System.Void" />
+        <method name="Sleep(System.TimeSpan)" argnames="timeout" returntype="System.Void" />
+        <method name="SpinWait(System.Int32)" argnames="iterations" returntype="System.Void" />
+        <method name="AllocateDataSlot()" argnames="" returntype="System.LocalDataStoreSlot" />
+        <method name="AllocateNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
+        <method name="GetNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
+        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetData(System.LocalDataStoreSlot)" argnames="slot" returntype="System.Object" />
+        <method name="SetData(System.LocalDataStoreSlot, System.Object)" argnames="slot, data" returntype="System.Void" />
+        <method name="GetDomain()" argnames="" returntype="System.AppDomain" />
+        <method name="GetDomainID()" argnames="" returntype="System.Int32" />
+    </class>
+    <class name="ThreadAbortException" namespace="System.Threading">
+        <property name="ExceptionState" propertytype="System.Object" />
+    </class>
+    <class name="ThreadInterruptedException" namespace="System.Threading">
+        <constructor name="ThreadInterruptedException()" argnames="" />
+        <constructor name="ThreadInterruptedException(System.String)" argnames="message" />
+        <constructor name="ThreadInterruptedException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="ThreadInterruptedException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="RegisteredWaitHandle" namespace="System.Threading">
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Unregister(System.Threading.WaitHandle)" argnames="waitObject" returntype="System.Boolean" />
+    </class>
+    <class name="ThreadPool" namespace="System.Threading">
+        <method name="GetMaxThreads(System.Int32&amp;, System.Int32&amp;)" argnames="workerThreads, completionPortThreads" returntype="System.Void" />
+        <method name="GetAvailableThreads(System.Int32&amp;, System.Int32&amp;)" argnames="workerThreads, completionPortThreads" returntype="System.Void" />
+        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.UInt32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int32, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.Int64, System.Boolean)" argnames="waitObject, callBack, state, millisecondsTimeOutInterval, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="RegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)" argnames="waitObject, callBack, state, timeout, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle, System.Threading.WaitOrTimerCallback, System.Object, System.TimeSpan, System.Boolean)" argnames="waitObject, callBack, state, timeout, executeOnlyOnce" returntype="System.Threading.RegisteredWaitHandle" />
+        <method name="QueueUserWorkItem(System.Threading.WaitCallback, System.Object)" argnames="callBack, state" returntype="System.Boolean" />
+        <method name="QueueUserWorkItem(System.Threading.WaitCallback)" argnames="callBack" returntype="System.Boolean" />
+        <method name="UnsafeQueueUserWorkItem(System.Threading.WaitCallback, System.Object)" argnames="callBack, state" returntype="System.Boolean" />
+        <method name="BindHandle(System.IntPtr)" argnames="osHandle" returntype="System.Boolean" />
+    </class>
+    <class name="ThreadStateException" namespace="System.Threading">
+        <constructor name="ThreadStateException()" argnames="" />
+        <constructor name="ThreadStateException(System.String)" argnames="message" />
+        <constructor name="ThreadStateException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="ThreadStateException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Timeout" namespace="System.Threading">
+        <field name="Infinite" />
+    </class>
+    <class name="Timer" namespace="System.Threading">
+        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.Int32, System.Int32)" argnames="callback, state, dueTime, period" />
+        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.TimeSpan, System.TimeSpan)" argnames="callback, state, dueTime, period" />
+        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.UInt32, System.UInt32)" argnames="callback, state, dueTime, period" />
+        <constructor name="Timer(System.Threading.TimerCallback, System.Object, System.Int64, System.Int64)" argnames="callback, state, dueTime, period" />
+        <method name="Dispose()" argnames="" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Change(System.Int32, System.Int32)" argnames="dueTime, period" returntype="System.Boolean" />
+        <method name="Change(System.TimeSpan, System.TimeSpan)" argnames="dueTime, period" returntype="System.Boolean" />
+        <method name="Change(System.UInt32, System.UInt32)" argnames="dueTime, period" returntype="System.Boolean" />
+        <method name="Change(System.Int64, System.Int64)" argnames="dueTime, period" returntype="System.Boolean" />
+        <method name="Dispose(System.Threading.WaitHandle)" argnames="notifyObject" returntype="System.Boolean" />
+    </class>
+    <struct name="LockCookie" namespace="System.Threading" />
+    <struct name="NativeOverlapped" namespace="System.Threading">
+        <field name="InternalLow" />
+        <field name="InternalHigh" />
+        <field name="OffsetLow" />
+        <field name="OffsetHigh" />
+        <field name="EventHandle" />
+    </struct>
+    <delegate name="WaitCallback" namespace="System.Threading">
+        <constructor name="WaitCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="state, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object)" argnames="state" returntype="System.Void" />
+    </delegate>
+    <delegate name="WaitOrTimerCallback" namespace="System.Threading">
+        <constructor name="WaitOrTimerCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.Boolean, System.AsyncCallback, System.Object)" argnames="state, timedOut, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object, System.Boolean)" argnames="state, timedOut" returntype="System.Void" />
+    </delegate>
+    <delegate name="IOCompletionCallback" namespace="System.Threading">
+        <constructor name="IOCompletionCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.UInt32, System.UInt32, System.Threading.NativeOverlapped*, System.AsyncCallback, System.Object)" argnames="errorCode, numBytes, pOVERLAP, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.UInt32, System.UInt32, System.Threading.NativeOverlapped*)" argnames="errorCode, numBytes, pOVERLAP" returntype="System.Void" />
+    </delegate>
+    <delegate name="ThreadStart" namespace="System.Threading">
+        <constructor name="ThreadStart(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke()" argnames="" returntype="System.Void" />
+    </delegate>
+    <delegate name="TimerCallback" namespace="System.Threading">
+        <constructor name="TimerCallback(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.Object, System.AsyncCallback, System.Object)" argnames="state, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Object)" argnames="state" returntype="System.Void" />
+    </delegate>
+    <enum name="ApartmentState" namespace="System.Threading">
+        <field name="STA" />
+        <field name="MTA" />
+        <field name="Unknown" />
+    </enum>
+    <enum name="ThreadPriority" namespace="System.Threading">
+        <field name="Lowest" />
+        <field name="BelowNormal" />
+        <field name="Normal" />
+        <field name="AboveNormal" />
+        <field name="Highest" />
+    </enum>
+    <enum name="ThreadState" namespace="System.Threading">
+        <field name="Running" />
+        <field name="StopRequested" />
+        <field name="SuspendRequested" />
+        <field name="Background" />
+        <field name="Unstarted" />
+        <field name="Stopped" />
+        <field name="WaitSleepJoin" />
+        <field name="Suspended" />
+        <field name="AbortRequested" />
+        <field name="Aborted" />
+    </enum>
+    <class name="ObjectHandle" namespace="System.Runtime.Remoting">
+        <constructor name="ObjectHandle(System.Object)" argnames="o" />
+        <method name="Unwrap()" argnames="" returntype="System.Object" />
+        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="ObjRef" namespace="System.Runtime.Remoting">
+        <constructor name="ObjRef(System.MarshalByRefObject, System.Type)" argnames="o, requestedType" />
+        <constructor name="ObjRef(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <constructor name="ObjRef()" argnames="" />
+        <property name="URI" propertytype="System.String" />
+        <property name="TypeInfo" propertytype="System.Runtime.Remoting.IRemotingTypeInfo" />
+        <property name="EnvoyInfo" propertytype="System.Runtime.Remoting.IEnvoyInfo" />
+        <property name="ChannelInfo" propertytype="System.Runtime.Remoting.IChannelInfo" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetRealObject(System.Runtime.Serialization.StreamingContext)" argnames="context" returntype="System.Object" />
+        <method name="IsFromThisProcess()" argnames="" returntype="System.Boolean" />
+        <method name="IsFromThisAppDomain()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="RemotingConfiguration" namespace="System.Runtime.Remoting">
+        <property name="ApplicationName" propertytype="System.String" />
+        <property name="ApplicationId" propertytype="System.String" />
+        <property name="ProcessId" propertytype="System.String" />
+        <method name="Configure(System.String)" argnames="filename" returntype="System.Void" />
+        <method name="RegisterActivatedServiceType(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="RegisterActivatedServiceType(System.Runtime.Remoting.ActivatedServiceTypeEntry)" argnames="entry" returntype="System.Void" />
+        <method name="RegisterWellKnownServiceType(System.Type, System.String, System.Runtime.Remoting.WellKnownObjectMode)" argnames="type, objectUri, mode" returntype="System.Void" />
+        <method name="RegisterWellKnownServiceType(System.Runtime.Remoting.WellKnownServiceTypeEntry)" argnames="entry" returntype="System.Void" />
+        <method name="RegisterActivatedClientType(System.Type, System.String)" argnames="type, appUrl" returntype="System.Void" />
+        <method name="RegisterActivatedClientType(System.Runtime.Remoting.ActivatedClientTypeEntry)" argnames="entry" returntype="System.Void" />
+        <method name="RegisterWellKnownClientType(System.Type, System.String)" argnames="type, objectUrl" returntype="System.Void" />
+        <method name="RegisterWellKnownClientType(System.Runtime.Remoting.WellKnownClientTypeEntry)" argnames="entry" returntype="System.Void" />
+        <method name="GetRegisteredActivatedServiceTypes()" argnames="" returntype="System.Runtime.Remoting.ActivatedServiceTypeEntry[]" />
+        <method name="GetRegisteredWellKnownServiceTypes()" argnames="" returntype="System.Runtime.Remoting.WellKnownServiceTypeEntry[]" />
+        <method name="GetRegisteredActivatedClientTypes()" argnames="" returntype="System.Runtime.Remoting.ActivatedClientTypeEntry[]" />
+        <method name="GetRegisteredWellKnownClientTypes()" argnames="" returntype="System.Runtime.Remoting.WellKnownClientTypeEntry[]" />
+        <method name="IsRemotelyActivatedClientType(System.Type)" argnames="svrType" returntype="System.Runtime.Remoting.ActivatedClientTypeEntry" />
+        <method name="IsRemotelyActivatedClientType(System.String, System.String)" argnames="typeName, assemblyName" returntype="System.Runtime.Remoting.ActivatedClientTypeEntry" />
+        <method name="IsWellKnownClientType(System.Type)" argnames="svrType" returntype="System.Runtime.Remoting.WellKnownClientTypeEntry" />
+        <method name="IsWellKnownClientType(System.String, System.String)" argnames="typeName, assemblyName" returntype="System.Runtime.Remoting.WellKnownClientTypeEntry" />
+        <method name="IsActivationAllowed(System.Type)" argnames="svrType" returntype="System.Boolean" />
+    </class>
+    <class name="TypeEntry" namespace="System.Runtime.Remoting">
+        <constructor name="TypeEntry()" argnames="" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="AssemblyName" propertytype="System.String" />
+    </class>
+    <class name="ActivatedClientTypeEntry" namespace="System.Runtime.Remoting">
+        <constructor name="ActivatedClientTypeEntry(System.String, System.String, System.String)" argnames="typeName, assemblyName, appUrl" />
+        <constructor name="ActivatedClientTypeEntry(System.Type, System.String)" argnames="type, appUrl" />
+        <property name="ApplicationUrl" propertytype="System.String" />
+        <property name="ObjectType" propertytype="System.Type" />
+        <property name="ContextAttributes" propertytype="System.Runtime.Remoting.Contexts.IContextAttribute[]" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="ActivatedServiceTypeEntry" namespace="System.Runtime.Remoting">
+        <constructor name="ActivatedServiceTypeEntry(System.String, System.String)" argnames="typeName, assemblyName" />
+        <constructor name="ActivatedServiceTypeEntry(System.Type)" argnames="type" />
+        <property name="ObjectType" propertytype="System.Type" />
+        <property name="ContextAttributes" propertytype="System.Runtime.Remoting.Contexts.IContextAttribute[]" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="WellKnownClientTypeEntry" namespace="System.Runtime.Remoting">
+        <constructor name="WellKnownClientTypeEntry(System.String, System.String, System.String)" argnames="typeName, assemblyName, objectUrl" />
+        <constructor name="WellKnownClientTypeEntry(System.Type, System.String)" argnames="type, objectUrl" />
+        <property name="ObjectUrl" propertytype="System.String" />
+        <property name="ObjectType" propertytype="System.Type" />
+        <property name="ApplicationUrl" propertytype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="WellKnownServiceTypeEntry" namespace="System.Runtime.Remoting">
+        <constructor name="WellKnownServiceTypeEntry(System.String, System.String, System.String, System.Runtime.Remoting.WellKnownObjectMode)" argnames="typeName, assemblyName, objectUri, mode" />
+        <constructor name="WellKnownServiceTypeEntry(System.Type, System.String, System.Runtime.Remoting.WellKnownObjectMode)" argnames="type, objectUri, mode" />
+        <property name="ObjectUri" propertytype="System.String" />
+        <property name="Mode" propertytype="System.Runtime.Remoting.WellKnownObjectMode" />
+        <property name="ObjectType" propertytype="System.Type" />
+        <property name="ContextAttributes" propertytype="System.Runtime.Remoting.Contexts.IContextAttribute[]" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="RemotingException" namespace="System.Runtime.Remoting">
+        <constructor name="RemotingException()" argnames="" />
+        <constructor name="RemotingException(System.String)" argnames="message" />
+        <constructor name="RemotingException(System.String, System.Exception)" argnames="message, InnerException" />
+        <constructor name="RemotingException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="ServerException" namespace="System.Runtime.Remoting">
+        <constructor name="ServerException()" argnames="" />
+        <constructor name="ServerException(System.String)" argnames="message" />
+        <constructor name="ServerException(System.String, System.Exception)" argnames="message, InnerException" />
+    </class>
+    <class name="RemotingTimeoutException" namespace="System.Runtime.Remoting">
+        <constructor name="RemotingTimeoutException()" argnames="" />
+        <constructor name="RemotingTimeoutException(System.String)" argnames="message" />
+        <constructor name="RemotingTimeoutException(System.String, System.Exception)" argnames="message, InnerException" />
+    </class>
+    <class name="RemotingServices" namespace="System.Runtime.Remoting">
+        <method name="IsTransparentProxy(System.Object)" argnames="proxy" returntype="System.Boolean" />
+        <method name="IsObjectOutOfContext(System.Object)" argnames="tp" returntype="System.Boolean" />
+        <method name="IsObjectOutOfAppDomain(System.Object)" argnames="tp" returntype="System.Boolean" />
+        <method name="GetRealProxy(System.Object)" argnames="proxy" returntype="System.Runtime.Remoting.Proxies.RealProxy" />
+        <method name="GetSessionIdForMethodMessage(System.Runtime.Remoting.Messaging.IMethodMessage)" argnames="msg" returntype="System.String" />
+        <method name="GetLifetimeService(System.MarshalByRefObject)" argnames="obj" returntype="System.Object" />
+        <method name="GetObjectUri(System.MarshalByRefObject)" argnames="obj" returntype="System.String" />
+        <method name="SetObjectUriForMarshal(System.MarshalByRefObject, System.String)" argnames="obj, uri" returntype="System.Void" />
+        <method name="Marshal(System.MarshalByRefObject)" argnames="Obj" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="Marshal(System.MarshalByRefObject, System.String)" argnames="Obj, URI" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="Marshal(System.MarshalByRefObject, System.String, System.Type)" argnames="Obj, ObjURI, RequestedType" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="GetObjectData(System.Object, System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="obj, info, context" returntype="System.Void" />
+        <method name="Unmarshal(System.Runtime.Remoting.ObjRef)" argnames="objectRef" returntype="System.Object" />
+        <method name="Unmarshal(System.Runtime.Remoting.ObjRef, System.Boolean)" argnames="objectRef, fRefine" returntype="System.Object" />
+        <method name="Connect(System.Type, System.String)" argnames="classToProxy, url" returntype="System.Object" />
+        <method name="Connect(System.Type, System.String, System.Object)" argnames="classToProxy, url, data" returntype="System.Object" />
+        <method name="Disconnect(System.MarshalByRefObject)" argnames="obj" returntype="System.Boolean" />
+        <method name="GetEnvoyChainForProxy(System.MarshalByRefObject)" argnames="obj" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="GetObjRefForProxy(System.MarshalByRefObject)" argnames="obj" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="GetMethodBaseFromMethodMessage(System.Runtime.Remoting.Messaging.IMethodMessage)" argnames="msg" returntype="System.Reflection.MethodBase" />
+        <method name="IsMethodOverloaded(System.Runtime.Remoting.Messaging.IMethodMessage)" argnames="msg" returntype="System.Boolean" />
+        <method name="IsOneWay(System.Reflection.MethodBase)" argnames="method" returntype="System.Boolean" />
+        <method name="GetServerTypeForUri(System.String)" argnames="URI" returntype="System.Type" />
+        <method name="ExecuteMessage(System.MarshalByRefObject, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="target, reqMsg" returntype="System.Runtime.Remoting.Messaging.IMethodReturnMessage" />
+        <method name="LogRemotingStage(System.Int32)" argnames="stage" returntype="System.Void" />
+    </class>
+    <class name="InternalRemotingServices" namespace="System.Runtime.Remoting">
+        <constructor name="InternalRemotingServices()" argnames="" />
+        <method name="DebugOutChnl(System.String)" argnames="s" returntype="System.Void" />
+        <method name="RemotingTrace(System.Object[])" argnames="messages" returntype="System.Void" />
+        <method name="RemotingAssert(System.Boolean, System.String)" argnames="condition, message" returntype="System.Void" />
+        <method name="SetServerIdentity(System.Runtime.Remoting.Messaging.MethodCall, System.Object)" argnames="m, srvID" returntype="System.Void" />
+        <method name="GetCachedSoapAttribute(System.Object)" argnames="reflectionObject" returntype="System.Runtime.Remoting.Metadata.SoapAttribute" />
+    </class>
+    <class name="SoapServices" namespace="System.Runtime.Remoting">
+        <property name="XmlNsForClrType" propertytype="System.String" />
+        <property name="XmlNsForClrTypeWithAssembly" propertytype="System.String" />
+        <property name="XmlNsForClrTypeWithNs" propertytype="System.String" />
+        <property name="XmlNsForClrTypeWithNsAndAssembly" propertytype="System.String" />
+        <method name="RegisterInteropXmlElement(System.String, System.String, System.Type)" argnames="xmlElement, xmlNamespace, type" returntype="System.Void" />
+        <method name="RegisterInteropXmlType(System.String, System.String, System.Type)" argnames="xmlType, xmlTypeNamespace, type" returntype="System.Void" />
+        <method name="PreLoad(System.Type)" argnames="type" returntype="System.Void" />
+        <method name="PreLoad(System.Reflection.Assembly)" argnames="assembly" returntype="System.Void" />
+        <method name="GetInteropTypeFromXmlElement(System.String, System.String)" argnames="xmlElement, xmlNamespace" returntype="System.Type" />
+        <method name="GetInteropTypeFromXmlType(System.String, System.String)" argnames="xmlType, xmlTypeNamespace" returntype="System.Type" />
+        <method name="GetInteropFieldTypeAndNameFromXmlElement(System.Type, System.String, System.String, System.Type&amp;, System.String&amp;)" argnames="containingType, xmlElement, xmlNamespace, type, name" returntype="System.Void" />
+        <method name="GetInteropFieldTypeAndNameFromXmlAttribute(System.Type, System.String, System.String, System.Type&amp;, System.String&amp;)" argnames="containingType, xmlAttribute, xmlNamespace, type, name" returntype="System.Void" />
+        <method name="GetXmlElementForInteropType(System.Type, System.String&amp;, System.String&amp;)" argnames="type, xmlElement, xmlNamespace" returntype="System.Boolean" />
+        <method name="GetXmlTypeForInteropType(System.Type, System.String&amp;, System.String&amp;)" argnames="type, xmlType, xmlTypeNamespace" returntype="System.Boolean" />
+        <method name="GetXmlNamespaceForMethodCall(System.Reflection.MethodBase)" argnames="mb" returntype="System.String" />
+        <method name="GetXmlNamespaceForMethodResponse(System.Reflection.MethodBase)" argnames="mb" returntype="System.String" />
+        <method name="RegisterSoapActionForMethodBase(System.Reflection.MethodBase)" argnames="mb" returntype="System.Void" />
+        <method name="RegisterSoapActionForMethodBase(System.Reflection.MethodBase, System.String)" argnames="mb, soapAction" returntype="System.Void" />
+        <method name="GetSoapActionFromMethodBase(System.Reflection.MethodBase)" argnames="mb" returntype="System.String" />
+        <method name="IsSoapActionValidForMethodBase(System.String, System.Reflection.MethodBase)" argnames="soapAction, mb" returntype="System.Boolean" />
+        <method name="GetTypeAndMethodNameFromSoapAction(System.String, System.String&amp;, System.String&amp;)" argnames="soapAction, typeName, methodName" returntype="System.Boolean" />
+        <method name="IsClrTypeNamespace(System.String)" argnames="namespaceString" returntype="System.Boolean" />
+        <method name="CodeXmlNamespaceForClrTypeNamespace(System.String, System.String)" argnames="typeNamespace, assemblyName" returntype="System.String" />
+        <method name="DecodeXmlNamespaceForClrTypeNamespace(System.String, System.String&amp;, System.String&amp;)" argnames="inNamespace, typeNamespace, assemblyName" returntype="System.Boolean" />
+    </class>
+    <interface name="IObjectHandle" namespace="System.Runtime.Remoting">
+        <method name="Unwrap()" argnames="" returntype="System.Object" />
+    </interface>
+    <interface name="IRemotingTypeInfo" namespace="System.Runtime.Remoting">
+        <property name="TypeName" propertytype="System.String" />
+        <method name="CanCastTo(System.Type, System.Object)" argnames="fromType, o" returntype="System.Boolean" />
+    </interface>
+    <interface name="IChannelInfo" namespace="System.Runtime.Remoting">
+        <property name="ChannelData" propertytype="System.Object[]" />
+    </interface>
+    <interface name="IEnvoyInfo" namespace="System.Runtime.Remoting">
+        <property name="EnvoySinks" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
+    </interface>
+    <enum name="WellKnownObjectMode" namespace="System.Runtime.Remoting">
+        <field name="Singleton" />
+        <field name="SingleCall" />
+    </enum>
+    <class name="ConditionalAttribute" namespace="System.Diagnostics">
+        <constructor name="ConditionalAttribute(System.String)" argnames="conditionString" />
+        <property name="ConditionString" propertytype="System.String" />
+    </class>
+    <class name="Debugger" namespace="System.Diagnostics">
+        <constructor name="Debugger()" argnames="" />
+        <field name="DefaultCategory" />
+        <property name="IsAttached" propertytype="System.Boolean" />
+        <method name="Break()" argnames="" returntype="System.Void" />
+        <method name="Launch()" argnames="" returntype="System.Boolean" />
+        <method name="Log(System.Int32, System.String, System.String)" argnames="level, category, message" returntype="System.Void" />
+        <method name="IsLogging()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="DebuggerStepThroughAttribute" namespace="System.Diagnostics">
+        <constructor name="DebuggerStepThroughAttribute()" argnames="" />
+    </class>
+    <class name="DebuggerHiddenAttribute" namespace="System.Diagnostics">
+        <constructor name="DebuggerHiddenAttribute()" argnames="" />
+    </class>
+    <class name="DebuggableAttribute" namespace="System.Diagnostics">
+        <constructor name="DebuggableAttribute(System.Boolean, System.Boolean)" argnames="isJITTrackingEnabled, isJITOptimizerDisabled" />
+        <property name="IsJITTrackingEnabled" propertytype="System.Boolean" />
+        <property name="IsJITOptimizerDisabled" propertytype="System.Boolean" />
+    </class>
+    <class name="StackTrace" namespace="System.Diagnostics">
+        <constructor name="StackTrace()" argnames="" />
+        <constructor name="StackTrace(System.Boolean)" argnames="fNeedFileInfo" />
+        <constructor name="StackTrace(System.Int32)" argnames="skipFrames" />
+        <constructor name="StackTrace(System.Int32, System.Boolean)" argnames="skipFrames, fNeedFileInfo" />
+        <constructor name="StackTrace(System.Exception)" argnames="e" />
+        <constructor name="StackTrace(System.Exception, System.Boolean)" argnames="e, fNeedFileInfo" />
+        <constructor name="StackTrace(System.Exception, System.Int32)" argnames="e, skipFrames" />
+        <constructor name="StackTrace(System.Exception, System.Int32, System.Boolean)" argnames="e, skipFrames, fNeedFileInfo" />
+        <constructor name="StackTrace(System.Diagnostics.StackFrame)" argnames="frame" />
+        <constructor name="StackTrace(System.Threading.Thread, System.Boolean)" argnames="targetThread, needFileInfo" />
+        <field name="METHODS_TO_SKIP" />
+        <property name="FrameCount" propertytype="System.Int32" />
+        <method name="GetFrame(System.Int32)" argnames="index" returntype="System.Diagnostics.StackFrame" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="StackFrame" namespace="System.Diagnostics">
+        <constructor name="StackFrame()" argnames="" />
+        <constructor name="StackFrame(System.Boolean)" argnames="fNeedFileInfo" />
+        <constructor name="StackFrame(System.Int32)" argnames="skipFrames" />
+        <constructor name="StackFrame(System.Int32, System.Boolean)" argnames="skipFrames, fNeedFileInfo" />
+        <constructor name="StackFrame(System.String, System.Int32)" argnames="fileName, lineNumber" />
+        <constructor name="StackFrame(System.String, System.Int32, System.Int32)" argnames="fileName, lineNumber, colNumber" />
+        <field name="OFFSET_UNKNOWN" />
+        <method name="GetFileColumnNumber()" argnames="" returntype="System.Int32" />
+        <method name="GetFileLineNumber()" argnames="" returntype="System.Int32" />
+        <method name="GetFileName()" argnames="" returntype="System.String" />
+        <method name="GetILOffset()" argnames="" returntype="System.Int32" />
+        <method name="GetNativeOffset()" argnames="" returntype="System.Int32" />
+        <method name="GetMethod()" argnames="" returntype="System.Reflection.MethodBase" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="SymDocumentType" namespace="System.Diagnostics.SymbolStore">
+        <constructor name="SymDocumentType()" argnames="" />
+        <field name="Text" />
+    </class>
+    <class name="SymLanguageType" namespace="System.Diagnostics.SymbolStore">
+        <constructor name="SymLanguageType()" argnames="" />
+        <field name="C" />
+        <field name="CPlusPlus" />
+        <field name="CSharp" />
+        <field name="Basic" />
+        <field name="Java" />
+        <field name="Cobol" />
+        <field name="Pascal" />
+        <field name="ILAssembly" />
+        <field name="JScript" />
+        <field name="SMC" />
+        <field name="MCPlusPlus" />
+    </class>
+    <class name="SymLanguageVendor" namespace="System.Diagnostics.SymbolStore">
+        <constructor name="SymLanguageVendor()" argnames="" />
+        <field name="Microsoft" />
+    </class>
+    <interface name="ISymbolBinder" namespace="System.Diagnostics.SymbolStore">
+        <method name="GetReader(System.Int32, System.String, System.String)" argnames="importer, filename, searchPath" returntype="System.Diagnostics.SymbolStore.ISymbolReader" />
+    </interface>
+    <interface name="ISymbolDocument" namespace="System.Diagnostics.SymbolStore">
+        <property name="URL" propertytype="System.String" />
+        <property name="DocumentType" propertytype="System.Guid" />
+        <property name="Language" propertytype="System.Guid" />
+        <property name="LanguageVendor" propertytype="System.Guid" />
+        <property name="CheckSumAlgorithmId" propertytype="System.Guid" />
+        <property name="HasEmbeddedSource" propertytype="System.Boolean" />
+        <property name="SourceLength" propertytype="System.Int32" />
+        <method name="GetSourceRange(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="startLine, startColumn, endLine, endColumn" returntype="System.Byte[]" />
+        <method name="FindClosestLine(System.Int32)" argnames="line" returntype="System.Int32" />
+        <method name="GetCheckSum()" argnames="" returntype="System.Byte[]" />
+    </interface>
+    <interface name="ISymbolDocumentWriter" namespace="System.Diagnostics.SymbolStore">
+        <method name="SetCheckSum(System.Guid, System.Byte[])" argnames="algorithmId, checkSum" returntype="System.Void" />
+        <method name="SetSource(System.Byte[])" argnames="source" returntype="System.Void" />
+    </interface>
+    <interface name="ISymbolMethod" namespace="System.Diagnostics.SymbolStore">
+        <property name="Token" propertytype="System.Diagnostics.SymbolStore.SymbolToken" />
+        <property name="SequencePointCount" propertytype="System.Int32" />
+        <property name="RootScope" propertytype="System.Diagnostics.SymbolStore.ISymbolScope" />
+        <method name="GetSourceStartEnd(System.Diagnostics.SymbolStore.ISymbolDocument[], System.Int32[], System.Int32[])" argnames="docs, lines, columns" returntype="System.Boolean" />
+        <method name="GetNamespace()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace" />
+        <method name="GetParameters()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
+        <method name="GetRanges(System.Diagnostics.SymbolStore.ISymbolDocument, System.Int32, System.Int32)" argnames="document, line, column" returntype="System.Int32[]" />
+        <method name="GetOffset(System.Diagnostics.SymbolStore.ISymbolDocument, System.Int32, System.Int32)" argnames="document, line, column" returntype="System.Int32" />
+        <method name="GetScope(System.Int32)" argnames="offset" returntype="System.Diagnostics.SymbolStore.ISymbolScope" />
+        <method name="GetSequencePoints(System.Int32[], System.Diagnostics.SymbolStore.ISymbolDocument[], System.Int32[], System.Int32[], System.Int32[], System.Int32[])" argnames="offsets, documents, lines, columns, endLines, endColumns" returntype="System.Void" />
+    </interface>
+    <interface name="ISymbolNamespace" namespace="System.Diagnostics.SymbolStore">
+        <property name="Name" propertytype="System.String" />
+        <method name="GetVariables()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
+        <method name="GetNamespaces()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace[]" />
+    </interface>
+    <interface name="ISymbolReader" namespace="System.Diagnostics.SymbolStore">
+        <property name="UserEntryPoint" propertytype="System.Diagnostics.SymbolStore.SymbolToken" />
+        <method name="GetNamespaces()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace[]" />
+        <method name="GetSymAttribute(System.Diagnostics.SymbolStore.SymbolToken, System.String)" argnames="parent, name" returntype="System.Byte[]" />
+        <method name="GetMethodFromDocumentPosition(System.Diagnostics.SymbolStore.ISymbolDocument, System.Int32, System.Int32)" argnames="document, line, column" returntype="System.Diagnostics.SymbolStore.ISymbolMethod" />
+        <method name="GetGlobalVariables()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
+        <method name="GetVariables(System.Diagnostics.SymbolStore.SymbolToken)" argnames="parent" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
+        <method name="GetMethod(System.Diagnostics.SymbolStore.SymbolToken, System.Int32)" argnames="method, version" returntype="System.Diagnostics.SymbolStore.ISymbolMethod" />
+        <method name="GetMethod(System.Diagnostics.SymbolStore.SymbolToken)" argnames="method" returntype="System.Diagnostics.SymbolStore.ISymbolMethod" />
+        <method name="GetDocuments()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolDocument[]" />
+        <method name="GetDocument(System.String, System.Guid, System.Guid, System.Guid)" argnames="url, language, languageVendor, documentType" returntype="System.Diagnostics.SymbolStore.ISymbolDocument" />
+    </interface>
+    <interface name="ISymbolScope" namespace="System.Diagnostics.SymbolStore">
+        <property name="Method" propertytype="System.Diagnostics.SymbolStore.ISymbolMethod" />
+        <property name="Parent" propertytype="System.Diagnostics.SymbolStore.ISymbolScope" />
+        <property name="StartOffset" propertytype="System.Int32" />
+        <property name="EndOffset" propertytype="System.Int32" />
+        <method name="GetNamespaces()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolNamespace[]" />
+        <method name="GetLocals()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolVariable[]" />
+        <method name="GetChildren()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolScope[]" />
+    </interface>
+    <interface name="ISymbolVariable" namespace="System.Diagnostics.SymbolStore">
+        <property name="Name" propertytype="System.String" />
+        <property name="Attributes" propertytype="System.Object" />
+        <property name="AddressKind" propertytype="System.Diagnostics.SymbolStore.SymAddressKind" />
+        <property name="AddressField1" propertytype="System.Int32" />
+        <property name="AddressField2" propertytype="System.Int32" />
+        <property name="AddressField3" propertytype="System.Int32" />
+        <property name="StartOffset" propertytype="System.Int32" />
+        <property name="EndOffset" propertytype="System.Int32" />
+        <method name="GetSignature()" argnames="" returntype="System.Byte[]" />
+    </interface>
+    <interface name="ISymbolWriter" namespace="System.Diagnostics.SymbolStore">
+        <method name="SetUnderlyingWriter(System.IntPtr)" argnames="underlyingWriter" returntype="System.Void" />
+        <method name="SetMethodSourceRange(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32)" argnames="startDoc, startLine, startColumn, endDoc, endLine, endColumn" returntype="System.Void" />
+        <method name="UsingNamespace(System.String)" argnames="fullName" returntype="System.Void" />
+        <method name="CloseNamespace()" argnames="" returntype="System.Void" />
+        <method name="OpenNamespace(System.String)" argnames="name" returntype="System.Void" />
+        <method name="SetSymAttribute(System.Diagnostics.SymbolStore.SymbolToken, System.String, System.Byte[])" argnames="parent, name, data" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="DefineGlobalVariable(System.String, System.Reflection.FieldAttributes, System.Byte[], System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32)" argnames="name, attributes, signature, addrKind, addr1, addr2, addr3" returntype="System.Void" />
+        <method name="DefineField(System.Diagnostics.SymbolStore.SymbolToken, System.String, System.Reflection.FieldAttributes, System.Byte[], System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32)" argnames="parent, name, attributes, signature, addrKind, addr1, addr2, addr3" returntype="System.Void" />
+        <method name="DefineParameter(System.String, System.Reflection.ParameterAttributes, System.Int32, System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32)" argnames="name, attributes, sequence, addrKind, addr1, addr2, addr3" returntype="System.Void" />
+        <method name="DefineLocalVariable(System.String, System.Reflection.FieldAttributes, System.Byte[], System.Diagnostics.SymbolStore.SymAddressKind, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="name, attributes, signature, addrKind, addr1, addr2, addr3, startOffset, endOffset" returntype="System.Void" />
+        <method name="SetScopeRange(System.Int32, System.Int32, System.Int32)" argnames="scopeID, startOffset, endOffset" returntype="System.Void" />
+        <method name="CloseScope(System.Int32)" argnames="endOffset" returntype="System.Void" />
+        <method name="OpenScope(System.Int32)" argnames="startOffset" returntype="System.Int32" />
+        <method name="DefineSequencePoints(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32[], System.Int32[], System.Int32[], System.Int32[], System.Int32[])" argnames="document, offsets, lines, columns, endLines, endColumns" returntype="System.Void" />
+        <method name="CloseMethod()" argnames="" returntype="System.Void" />
+        <method name="OpenMethod(System.Diagnostics.SymbolStore.SymbolToken)" argnames="method" returntype="System.Void" />
+        <method name="SetUserEntryPoint(System.Diagnostics.SymbolStore.SymbolToken)" argnames="entryMethod" returntype="System.Void" />
+        <method name="DefineDocument(System.String, System.Guid, System.Guid, System.Guid)" argnames="url, language, languageVendor, documentType" returntype="System.Diagnostics.SymbolStore.ISymbolDocumentWriter" />
+        <method name="Initialize(System.IntPtr, System.String, System.Boolean)" argnames="emitter, filename, fFullBuild" returntype="System.Void" />
+    </interface>
+    <struct name="SymbolToken" namespace="System.Diagnostics.SymbolStore">
+        <constructor name="SymbolToken(System.Int32)" argnames="val" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="GetToken()" argnames="" returntype="System.Int32" />
+    </struct>
+    <enum name="SymAddressKind" namespace="System.Diagnostics.SymbolStore">
+        <field name="ILOffset" />
+        <field name="NativeRVA" />
+        <field name="NativeRegister" />
+        <field name="NativeRegisterRelative" />
+        <field name="NativeOffset" />
+        <field name="NativeRegisterRegister" />
+        <field name="NativeRegisterStack" />
+        <field name="NativeStackRegister" />
+        <field name="BitField" />
+    </enum>
+    <class name="UnmanagedMarshal" namespace="System.Reflection.Emit">
+        <property name="GetUnmanagedType" propertytype="System.Runtime.InteropServices.UnmanagedType" />
+        <property name="IIDGuid" propertytype="System.Guid" />
+        <property name="ElementCount" propertytype="System.Int32" />
+        <property name="BaseType" propertytype="System.Runtime.InteropServices.UnmanagedType" />
+        <method name="DefineUnmanagedMarshal(System.Runtime.InteropServices.UnmanagedType)" argnames="unmanagedType" returntype="System.Reflection.Emit.UnmanagedMarshal" />
+        <method name="DefineByValTStr(System.Int32)" argnames="elemCount" returntype="System.Reflection.Emit.UnmanagedMarshal" />
+        <method name="DefineSafeArray(System.Runtime.InteropServices.UnmanagedType)" argnames="elemType" returntype="System.Reflection.Emit.UnmanagedMarshal" />
+        <method name="DefineByValArray(System.Int32)" argnames="elemCount" returntype="System.Reflection.Emit.UnmanagedMarshal" />
+        <method name="DefineLPArray(System.Runtime.InteropServices.UnmanagedType)" argnames="elemType" returntype="System.Reflection.Emit.UnmanagedMarshal" />
+    </class>
+    <class name="AssemblyBuilder" namespace="System.Reflection.Emit">
+        <property name="Location" propertytype="System.String" />
+        <property name="CodeBase" propertytype="System.String" />
+        <property name="EntryPoint" propertytype="System.Reflection.MethodInfo" />
+        <method name="GetManifestResourceInfo(System.String)" argnames="resourceName" returntype="System.Reflection.ManifestResourceInfo" />
+        <method name="GetManifestResourceNames()" argnames="" returntype="System.String[]" />
+        <method name="GetFiles(System.Boolean)" argnames="getResourceModules" returntype="System.IO.FileStream[]" />
+        <method name="GetFile(System.String)" argnames="name" returntype="System.IO.FileStream" />
+        <method name="GetManifestResourceStream(System.String)" argnames="name" returntype="System.IO.Stream" />
+        <method name="GetManifestResourceStream(System.Type, System.String)" argnames="type, name" returntype="System.IO.Stream" />
+        <method name="GetExportedTypes()" argnames="" returntype="System.Type[]" />
+        <method name="DefineDynamicModule(System.String)" argnames="name" returntype="System.Reflection.Emit.ModuleBuilder" />
+        <method name="DefineDynamicModule(System.String, System.Boolean)" argnames="name, emitSymbolInfo" returntype="System.Reflection.Emit.ModuleBuilder" />
+        <method name="DefineDynamicModule(System.String, System.String)" argnames="name, fileName" returntype="System.Reflection.Emit.ModuleBuilder" />
+        <method name="DefineDynamicModule(System.String, System.String, System.Boolean)" argnames="name, fileName, emitSymbolInfo" returntype="System.Reflection.Emit.ModuleBuilder" />
+        <method name="DefineResource(System.String, System.String, System.String)" argnames="name, description, fileName" returntype="System.Resources.IResourceWriter" />
+        <method name="DefineResource(System.String, System.String, System.String, System.Reflection.ResourceAttributes)" argnames="name, description, fileName, attribute" returntype="System.Resources.IResourceWriter" />
+        <method name="AddResourceFile(System.String, System.String)" argnames="name, fileName" returntype="System.Void" />
+        <method name="AddResourceFile(System.String, System.String, System.Reflection.ResourceAttributes)" argnames="name, fileName, attribute" returntype="System.Void" />
+        <method name="DefineVersionInfoResource(System.String, System.String, System.String, System.String, System.String)" argnames="product, productVersion, company, copyright, trademark" returntype="System.Void" />
+        <method name="DefineVersionInfoResource()" argnames="" returntype="System.Void" />
+        <method name="DefineUnmanagedResource(System.Byte[])" argnames="resource" returntype="System.Void" />
+        <method name="DefineUnmanagedResource(System.String)" argnames="resourceFileName" returntype="System.Void" />
+        <method name="GetDynamicModule(System.String)" argnames="name" returntype="System.Reflection.Emit.ModuleBuilder" />
+        <method name="SetEntryPoint(System.Reflection.MethodInfo)" argnames="entryMethod" returntype="System.Void" />
+        <method name="SetEntryPoint(System.Reflection.MethodInfo, System.Reflection.Emit.PEFileKinds)" argnames="entryMethod, fileKind" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+        <method name="Save(System.String)" argnames="assemblyFileName" returntype="System.Void" />
+        <event name="ModuleResolve" inherited="System.Reflection.Assembly" />
+    </class>
+    <class name="ConstructorBuilder" namespace="System.Reflection.Emit">
+        <property name="ReturnType" propertytype="System.Type" />
+        <property name="Signature" propertytype="System.String" />
+        <property name="Attributes" propertytype="System.Reflection.MethodAttributes" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="InitLocals" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="MethodHandle" propertytype="System.RuntimeMethodHandle" />
+        <method name="Invoke(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="invokeAttr, binder, parameters, culture" returntype="System.Object" />
+        <method name="Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, parameters, culture" returntype="System.Object" />
+        <method name="GetMethodImplementationFlags()" argnames="" returntype="System.Reflection.MethodImplAttributes" />
+        <method name="GetParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.MethodToken" />
+        <method name="DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)" argnames="iSequence, attributes, strParamName" returntype="System.Reflection.Emit.ParameterBuilder" />
+        <method name="SetSymCustomAttribute(System.String, System.Byte[])" argnames="name, data" returntype="System.Void" />
+        <method name="GetILGenerator()" argnames="" returntype="System.Reflection.Emit.ILGenerator" />
+        <method name="AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)" argnames="action, pset" returntype="System.Void" />
+        <method name="GetModule()" argnames="" returntype="System.Reflection.Module" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+        <method name="SetImplementationFlags(System.Reflection.MethodImplAttributes)" argnames="attributes" returntype="System.Void" />
+    </class>
+    <class name="EventBuilder" namespace="System.Reflection.Emit">
+        <method name="GetEventToken()" argnames="" returntype="System.Reflection.Emit.EventToken" />
+        <method name="SetAddOnMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
+        <method name="SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
+        <method name="SetRaiseMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
+        <method name="AddOtherMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+    </class>
+    <class name="FieldBuilder" namespace="System.Reflection.Emit">
+        <property name="FieldType" propertytype="System.Type" />
+        <property name="Name" propertytype="System.String" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <property name="FieldHandle" propertytype="System.RuntimeFieldHandle" />
+        <property name="Attributes" propertytype="System.Reflection.FieldAttributes" />
+        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Globalization.CultureInfo)" argnames="obj, val, invokeAttr, binder, culture" returntype="System.Void" />
+        <method name="GetValue(System.Object)" argnames="obj" returntype="System.Object" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.FieldToken" />
+        <method name="SetOffset(System.Int32)" argnames="iOffset" returntype="System.Void" />
+        <method name="SetMarshal(System.Reflection.Emit.UnmanagedMarshal)" argnames="unmanagedMarshal" returntype="System.Void" />
+        <method name="SetConstant(System.Object)" argnames="defaultValue" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+    </class>
+    <class name="ILGenerator" namespace="System.Reflection.Emit">
+        <method name="EndScope()" argnames="" returntype="System.Void" />
+        <method name="BeginScope()" argnames="" returntype="System.Void" />
+        <method name="MarkSequencePoint(System.Diagnostics.SymbolStore.ISymbolDocumentWriter, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="document, startLine, startColumn, endLine, endColumn" returntype="System.Void" />
+        <method name="EmitWriteLine(System.Reflection.FieldInfo)" argnames="fld" returntype="System.Void" />
+        <method name="EmitWriteLine(System.Reflection.Emit.LocalBuilder)" argnames="localBuilder" returntype="System.Void" />
+        <method name="EmitWriteLine(System.String)" argnames="value" returntype="System.Void" />
+        <method name="ThrowException(System.Type)" argnames="excType" returntype="System.Void" />
+        <method name="MarkLabel(System.Reflection.Emit.Label)" argnames="loc" returntype="System.Void" />
+        <method name="DefineLabel()" argnames="" returntype="System.Reflection.Emit.Label" />
+        <method name="BeginFinallyBlock()" argnames="" returntype="System.Void" />
+        <method name="BeginFaultBlock()" argnames="" returntype="System.Void" />
+        <method name="BeginCatchBlock(System.Type)" argnames="exceptionType" returntype="System.Void" />
+        <method name="BeginExceptFilterBlock()" argnames="" returntype="System.Void" />
+        <method name="EndExceptionBlock()" argnames="" returntype="System.Void" />
+        <method name="BeginExceptionBlock()" argnames="" returntype="System.Reflection.Emit.Label" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.LocalBuilder)" argnames="opcode, local" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.String)" argnames="opcode, str" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.FieldInfo)" argnames="opcode, field" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.Label[])" argnames="opcode, labels" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.Label)" argnames="opcode, label" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Double)" argnames="opcode, arg" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Single)" argnames="opcode, arg" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Int64)" argnames="opcode, arg" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Type)" argnames="opcode, cls" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.ConstructorInfo)" argnames="opcode, con" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.Emit.SignatureHelper)" argnames="opcode, signature" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Reflection.MethodInfo)" argnames="opcode, meth" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Int32)" argnames="opcode, arg" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Int16)" argnames="opcode, arg" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.Byte)" argnames="opcode, arg" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode)" argnames="opcode" returntype="System.Void" />
+        <method name="Emit(System.Reflection.Emit.OpCode, System.SByte)" argnames="opcode, arg" returntype="System.Void" />
+        <method name="EmitCalli(System.Reflection.Emit.OpCode, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[])" argnames="opcode, callingConvention, returnType, parameterTypes, optionalParameterTypes" returntype="System.Void" />
+        <method name="EmitCalli(System.Reflection.Emit.OpCode, System.Runtime.InteropServices.CallingConvention, System.Type, System.Type[])" argnames="opcode, unmanagedCallConv, returnType, parameterTypes" returntype="System.Void" />
+        <method name="EmitCall(System.Reflection.Emit.OpCode, System.Reflection.MethodInfo, System.Type[])" argnames="opcode, methodInfo, optionalParameterTypes" returntype="System.Void" />
+        <method name="DeclareLocal(System.Type)" argnames="localType" returntype="System.Reflection.Emit.LocalBuilder" />
+        <method name="UsingNamespace(System.String)" argnames="usingNamespace" returntype="System.Void" />
+    </class>
+    <class name="LocalBuilder" namespace="System.Reflection.Emit">
+        <property name="LocalType" propertytype="System.Type" />
+        <method name="SetLocalSymInfo(System.String)" argnames="name" returntype="System.Void" />
+        <method name="SetLocalSymInfo(System.String, System.Int32, System.Int32)" argnames="name, startOffset, endOffset" returntype="System.Void" />
+    </class>
+    <class name="MethodBuilder" namespace="System.Reflection.Emit">
+        <property name="InitLocals" propertytype="System.Boolean" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="ReturnType" propertytype="System.Type" />
+        <property name="ReturnTypeCustomAttributes" propertytype="System.Reflection.ICustomAttributeProvider" />
+        <property name="Signature" propertytype="System.String" />
+        <property name="Attributes" propertytype="System.Reflection.MethodAttributes" />
+        <property name="CallingConvention" propertytype="System.Reflection.CallingConventions" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <property name="MethodHandle" propertytype="System.RuntimeMethodHandle" />
+        <property name="Name" propertytype="System.String" />
+        <method name="GetBaseDefinition()" argnames="" returntype="System.Reflection.MethodInfo" />
+        <method name="Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, parameters, culture" returntype="System.Object" />
+        <method name="GetMethodImplementationFlags()" argnames="" returntype="System.Reflection.MethodImplAttributes" />
+        <method name="GetParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.MethodToken" />
+        <method name="DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)" argnames="position, attributes, strParamName" returntype="System.Reflection.Emit.ParameterBuilder" />
+        <method name="SetMarshal(System.Reflection.Emit.UnmanagedMarshal)" argnames="unmanagedMarshal" returntype="System.Void" />
+        <method name="SetSymCustomAttribute(System.String, System.Byte[])" argnames="name, data" returntype="System.Void" />
+        <method name="AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)" argnames="action, pset" returntype="System.Void" />
+        <method name="CreateMethodBody(System.Byte[], System.Int32)" argnames="il, count" returntype="System.Void" />
+        <method name="SetImplementationFlags(System.Reflection.MethodImplAttributes)" argnames="attributes" returntype="System.Void" />
+        <method name="GetILGenerator()" argnames="" returntype="System.Reflection.Emit.ILGenerator" />
+        <method name="GetILGenerator(System.Int32)" argnames="size" returntype="System.Reflection.Emit.ILGenerator" />
+        <method name="GetModule()" argnames="" returntype="System.Reflection.Module" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+    </class>
+    <class name="CustomAttributeBuilder" namespace="System.Reflection.Emit">
+        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[])" argnames="con, constructorArgs" />
+        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[], System.Reflection.PropertyInfo[], System.Object[])" argnames="con, constructorArgs, namedProperties, propertyValues" />
+        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[], System.Reflection.FieldInfo[], System.Object[])" argnames="con, constructorArgs, namedFields, fieldValues" />
+        <constructor name="CustomAttributeBuilder(System.Reflection.ConstructorInfo, System.Object[], System.Reflection.PropertyInfo[], System.Object[], System.Reflection.FieldInfo[], System.Object[])" argnames="con, constructorArgs, namedProperties, propertyValues, namedFields, fieldValues" />
+    </class>
+    <class name="MethodRental" namespace="System.Reflection.Emit">
+        <field name="JitOnDemand" />
+        <field name="JitImmediate" />
+        <method name="SwapMethodBody(System.Type, System.Int32, System.IntPtr, System.Int32, System.Int32)" argnames="cls, methodtoken, rgIL, methodSize, flags" returntype="System.Void" />
+    </class>
+    <class name="ModuleBuilder" namespace="System.Reflection.Emit">
+        <property name="FullyQualifiedName" propertytype="System.String" />
+        <method name="GetTypes()" argnames="" returntype="System.Type[]" />
+        <method name="GetType(System.String, System.Boolean, System.Boolean)" argnames="className, throwOnError, ignoreCase" returntype="System.Type" />
+        <method name="GetType(System.String)" argnames="className" returntype="System.Type" />
+        <method name="GetType(System.String, System.Boolean)" argnames="className, ignoreCase" returntype="System.Type" />
+        <method name="DefineType(System.String)" argnames="name" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])" argnames="name, attr, parent, interfaces" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type)" argnames="name, attr, parent" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineType(System.String, System.Reflection.TypeAttributes)" argnames="name, attr" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)" argnames="name, attr, parent, packingSize, typesize" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Int32)" argnames="name, attr, parent, typesize" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize)" argnames="name, attr, parent, packsize" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)" argnames="name, visibility, underlyingType" returntype="System.Reflection.Emit.EnumBuilder" />
+        <method name="DefineResource(System.String, System.String)" argnames="name, description" returntype="System.Resources.IResourceWriter" />
+        <method name="DefineResource(System.String, System.String, System.Reflection.ResourceAttributes)" argnames="name, description, attribute" returntype="System.Resources.IResourceWriter" />
+        <method name="DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Type, System.Type[])" argnames="name, attributes, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="name, attributes, callingConvention, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)" argnames="name, data, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
+        <method name="DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)" argnames="name, size, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
+        <method name="GetTypeToken(System.Type)" argnames="type" returntype="System.Reflection.Emit.TypeToken" />
+        <method name="GetTypeToken(System.String)" argnames="name" returntype="System.Reflection.Emit.TypeToken" />
+        <method name="GetMethodToken(System.Reflection.MethodInfo)" argnames="method" returntype="System.Reflection.Emit.MethodToken" />
+        <method name="GetArrayMethodToken(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="arrayClass, methodName, callingConvention, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodToken" />
+        <method name="GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="arrayClass, methodName, callingConvention, returnType, parameterTypes" returntype="System.Reflection.MethodInfo" />
+        <method name="GetFieldToken(System.Reflection.FieldInfo)" argnames="field" returntype="System.Reflection.Emit.FieldToken" />
+        <method name="GetStringConstant(System.String)" argnames="str" returntype="System.Reflection.Emit.StringToken" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+        <method name="GetSignatureToken(System.Reflection.Emit.SignatureHelper)" argnames="sigHelper" returntype="System.Reflection.Emit.SignatureToken" />
+        <method name="GetSignatureToken(System.Byte[], System.Int32)" argnames="sigBytes, sigLength" returntype="System.Reflection.Emit.SignatureToken" />
+        <method name="GetConstructorToken(System.Reflection.ConstructorInfo)" argnames="con" returntype="System.Reflection.Emit.MethodToken" />
+        <method name="GetSymWriter()" argnames="" returntype="System.Diagnostics.SymbolStore.ISymbolWriter" />
+        <method name="SetUserEntryPoint(System.Reflection.MethodInfo)" argnames="entryPoint" returntype="System.Void" />
+        <method name="DefineDocument(System.String, System.Guid, System.Guid, System.Guid)" argnames="url, language, languageVendor, documentType" returntype="System.Diagnostics.SymbolStore.ISymbolDocumentWriter" />
+        <method name="SetSymCustomAttribute(System.String, System.Byte[])" argnames="name, data" returntype="System.Void" />
+        <method name="DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, entryName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="CreateGlobalFunctions()" argnames="" returntype="System.Void" />
+        <method name="IsTransient()" argnames="" returntype="System.Boolean" />
+        <method name="DefineUnmanagedResource(System.Byte[])" argnames="resource" returntype="System.Void" />
+        <method name="DefineUnmanagedResource(System.String)" argnames="resourceFileName" returntype="System.Void" />
+    </class>
+    <class name="OpCodes" namespace="System.Reflection.Emit">
+        <field name="Nop" />
+        <field name="Break" />
+        <field name="Ldarg_0" />
+        <field name="Ldarg_1" />
+        <field name="Ldarg_2" />
+        <field name="Ldarg_3" />
+        <field name="Ldloc_0" />
+        <field name="Ldloc_1" />
+        <field name="Ldloc_2" />
+        <field name="Ldloc_3" />
+        <field name="Stloc_0" />
+        <field name="Stloc_1" />
+        <field name="Stloc_2" />
+        <field name="Stloc_3" />
+        <field name="Ldarg_S" />
+        <field name="Ldarga_S" />
+        <field name="Starg_S" />
+        <field name="Ldloc_S" />
+        <field name="Ldloca_S" />
+        <field name="Stloc_S" />
+        <field name="Ldnull" />
+        <field name="Ldc_I4_M1" />
+        <field name="Ldc_I4_0" />
+        <field name="Ldc_I4_1" />
+        <field name="Ldc_I4_2" />
+        <field name="Ldc_I4_3" />
+        <field name="Ldc_I4_4" />
+        <field name="Ldc_I4_5" />
+        <field name="Ldc_I4_6" />
+        <field name="Ldc_I4_7" />
+        <field name="Ldc_I4_8" />
+        <field name="Ldc_I4_S" />
+        <field name="Ldc_I4" />
+        <field name="Ldc_I8" />
+        <field name="Ldc_R4" />
+        <field name="Ldc_R8" />
+        <field name="Dup" />
+        <field name="Pop" />
+        <field name="Jmp" />
+        <field name="Call" />
+        <field name="Calli" />
+        <field name="Ret" />
+        <field name="Br_S" />
+        <field name="Brfalse_S" />
+        <field name="Brtrue_S" />
+        <field name="Beq_S" />
+        <field name="Bge_S" />
+        <field name="Bgt_S" />
+        <field name="Ble_S" />
+        <field name="Blt_S" />
+        <field name="Bne_Un_S" />
+        <field name="Bge_Un_S" />
+        <field name="Bgt_Un_S" />
+        <field name="Ble_Un_S" />
+        <field name="Blt_Un_S" />
+        <field name="Br" />
+        <field name="Brfalse" />
+        <field name="Brtrue" />
+        <field name="Beq" />
+        <field name="Bge" />
+        <field name="Bgt" />
+        <field name="Ble" />
+        <field name="Blt" />
+        <field name="Bne_Un" />
+        <field name="Bge_Un" />
+        <field name="Bgt_Un" />
+        <field name="Ble_Un" />
+        <field name="Blt_Un" />
+        <field name="Switch" />
+        <field name="Ldind_I1" />
+        <field name="Ldind_U1" />
+        <field name="Ldind_I2" />
+        <field name="Ldind_U2" />
+        <field name="Ldind_I4" />
+        <field name="Ldind_U4" />
+        <field name="Ldind_I8" />
+        <field name="Ldind_I" />
+        <field name="Ldind_R4" />
+        <field name="Ldind_R8" />
+        <field name="Ldind_Ref" />
+        <field name="Stind_Ref" />
+        <field name="Stind_I1" />
+        <field name="Stind_I2" />
+        <field name="Stind_I4" />
+        <field name="Stind_I8" />
+        <field name="Stind_R4" />
+        <field name="Stind_R8" />
+        <field name="Add" />
+        <field name="Sub" />
+        <field name="Mul" />
+        <field name="Div" />
+        <field name="Div_Un" />
+        <field name="Rem" />
+        <field name="Rem_Un" />
+        <field name="And" />
+        <field name="Or" />
+        <field name="Xor" />
+        <field name="Shl" />
+        <field name="Shr" />
+        <field name="Shr_Un" />
+        <field name="Neg" />
+        <field name="Not" />
+        <field name="Conv_I1" />
+        <field name="Conv_I2" />
+        <field name="Conv_I4" />
+        <field name="Conv_I8" />
+        <field name="Conv_R4" />
+        <field name="Conv_R8" />
+        <field name="Conv_U4" />
+        <field name="Conv_U8" />
+        <field name="Callvirt" />
+        <field name="Cpobj" />
+        <field name="Ldobj" />
+        <field name="Ldstr" />
+        <field name="Newobj" />
+        <field name="Castclass" />
+        <field name="Isinst" />
+        <field name="Conv_R_Un" />
+        <field name="Unbox" />
+        <field name="Throw" />
+        <field name="Ldfld" />
+        <field name="Ldflda" />
+        <field name="Stfld" />
+        <field name="Ldsfld" />
+        <field name="Ldsflda" />
+        <field name="Stsfld" />
+        <field name="Stobj" />
+        <field name="Conv_Ovf_I1_Un" />
+        <field name="Conv_Ovf_I2_Un" />
+        <field name="Conv_Ovf_I4_Un" />
+        <field name="Conv_Ovf_I8_Un" />
+        <field name="Conv_Ovf_U1_Un" />
+        <field name="Conv_Ovf_U2_Un" />
+        <field name="Conv_Ovf_U4_Un" />
+        <field name="Conv_Ovf_U8_Un" />
+        <field name="Conv_Ovf_I_Un" />
+        <field name="Conv_Ovf_U_Un" />
+        <field name="Box" />
+        <field name="Newarr" />
+        <field name="Ldlen" />
+        <field name="Ldelema" />
+        <field name="Ldelem_I1" />
+        <field name="Ldelem_U1" />
+        <field name="Ldelem_I2" />
+        <field name="Ldelem_U2" />
+        <field name="Ldelem_I4" />
+        <field name="Ldelem_U4" />
+        <field name="Ldelem_I8" />
+        <field name="Ldelem_I" />
+        <field name="Ldelem_R4" />
+        <field name="Ldelem_R8" />
+        <field name="Ldelem_Ref" />
+        <field name="Stelem_I" />
+        <field name="Stelem_I1" />
+        <field name="Stelem_I2" />
+        <field name="Stelem_I4" />
+        <field name="Stelem_I8" />
+        <field name="Stelem_R4" />
+        <field name="Stelem_R8" />
+        <field name="Stelem_Ref" />
+        <field name="Conv_Ovf_I1" />
+        <field name="Conv_Ovf_U1" />
+        <field name="Conv_Ovf_I2" />
+        <field name="Conv_Ovf_U2" />
+        <field name="Conv_Ovf_I4" />
+        <field name="Conv_Ovf_U4" />
+        <field name="Conv_Ovf_I8" />
+        <field name="Conv_Ovf_U8" />
+        <field name="Refanyval" />
+        <field name="Ckfinite" />
+        <field name="Mkrefany" />
+        <field name="Ldtoken" />
+        <field name="Conv_U2" />
+        <field name="Conv_U1" />
+        <field name="Conv_I" />
+        <field name="Conv_Ovf_I" />
+        <field name="Conv_Ovf_U" />
+        <field name="Add_Ovf" />
+        <field name="Add_Ovf_Un" />
+        <field name="Mul_Ovf" />
+        <field name="Mul_Ovf_Un" />
+        <field name="Sub_Ovf" />
+        <field name="Sub_Ovf_Un" />
+        <field name="Endfinally" />
+        <field name="Leave" />
+        <field name="Leave_S" />
+        <field name="Stind_I" />
+        <field name="Conv_U" />
+        <field name="Prefix7" />
+        <field name="Prefix6" />
+        <field name="Prefix5" />
+        <field name="Prefix4" />
+        <field name="Prefix3" />
+        <field name="Prefix2" />
+        <field name="Prefix1" />
+        <field name="Prefixref" />
+        <field name="Arglist" />
+        <field name="Ceq" />
+        <field name="Cgt" />
+        <field name="Cgt_Un" />
+        <field name="Clt" />
+        <field name="Clt_Un" />
+        <field name="Ldftn" />
+        <field name="Ldvirtftn" />
+        <field name="Ldarg" />
+        <field name="Ldarga" />
+        <field name="Starg" />
+        <field name="Ldloc" />
+        <field name="Ldloca" />
+        <field name="Stloc" />
+        <field name="Localloc" />
+        <field name="Endfilter" />
+        <field name="Unaligned" />
+        <field name="Volatile" />
+        <field name="Tailcall" />
+        <field name="Initobj" />
+        <field name="Cpblk" />
+        <field name="Initblk" />
+        <field name="Rethrow" />
+        <field name="Sizeof" />
+        <field name="Refanytype" />
+        <method name="TakesSingleByteArgument(System.Reflection.Emit.OpCode)" argnames="inst" returntype="System.Boolean" />
+    </class>
+    <class name="ParameterBuilder" namespace="System.Reflection.Emit">
+        <property name="Name" propertytype="System.String" />
+        <property name="Position" propertytype="System.Int32" />
+        <property name="Attributes" propertytype="System.Int32" />
+        <property name="IsIn" propertytype="System.Boolean" />
+        <property name="IsOut" propertytype="System.Boolean" />
+        <property name="IsOptional" propertytype="System.Boolean" />
+        <method name="GetToken()" argnames="" returntype="System.Reflection.Emit.ParameterToken" />
+        <method name="SetConstant(System.Object)" argnames="defaultValue" returntype="System.Void" />
+        <method name="SetMarshal(System.Reflection.Emit.UnmanagedMarshal)" argnames="unmanagedMarshal" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+    </class>
+    <class name="PropertyBuilder" namespace="System.Reflection.Emit">
+        <property name="PropertyToken" propertytype="System.Reflection.Emit.PropertyToken" />
+        <property name="PropertyType" propertytype="System.Type" />
+        <property name="Attributes" propertytype="System.Reflection.PropertyAttributes" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <method name="GetIndexParameters()" argnames="" returntype="System.Reflection.ParameterInfo[]" />
+        <method name="GetSetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
+        <method name="GetGetMethod(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo" />
+        <method name="GetAccessors(System.Boolean)" argnames="nonPublic" returntype="System.Reflection.MethodInfo[]" />
+        <method name="SetValue(System.Object, System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, value, invokeAttr, binder, index, culture" returntype="System.Void" />
+        <method name="SetValue(System.Object, System.Object, System.Object[])" argnames="obj, value, index" returntype="System.Void" />
+        <method name="GetValue(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)" argnames="obj, invokeAttr, binder, index, culture" returntype="System.Object" />
+        <method name="GetValue(System.Object, System.Object[])" argnames="obj, index" returntype="System.Object" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="SetConstant(System.Object)" argnames="defaultValue" returntype="System.Void" />
+        <method name="SetGetMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
+        <method name="SetSetMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
+        <method name="AddOtherMethod(System.Reflection.Emit.MethodBuilder)" argnames="mdBuilder" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+    </class>
+    <class name="SignatureHelper" namespace="System.Reflection.Emit">
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GetMethodSigHelper(System.Reflection.Module, System.Runtime.InteropServices.CallingConvention, System.Type)" argnames="mod, unmanagedCallConv, returnType" returntype="System.Reflection.Emit.SignatureHelper" />
+        <method name="GetLocalVarSigHelper(System.Reflection.Module)" argnames="mod" returntype="System.Reflection.Emit.SignatureHelper" />
+        <method name="GetFieldSigHelper(System.Reflection.Module)" argnames="mod" returntype="System.Reflection.Emit.SignatureHelper" />
+        <method name="GetMethodSigHelper(System.Reflection.Module, System.Reflection.CallingConventions, System.Type)" argnames="mod, callingConvention, returnType" returntype="System.Reflection.Emit.SignatureHelper" />
+        <method name="GetMethodSigHelper(System.Reflection.Module, System.Type, System.Type[])" argnames="mod, returnType, parameterTypes" returntype="System.Reflection.Emit.SignatureHelper" />
+        <method name="GetPropertySigHelper(System.Reflection.Module, System.Type, System.Type[])" argnames="mod, returnType, parameterTypes" returntype="System.Reflection.Emit.SignatureHelper" />
+        <method name="AddArgument(System.Type)" argnames="clsArgument" returntype="System.Void" />
+        <method name="AddSentinel()" argnames="" returntype="System.Void" />
+        <method name="GetSignature()" argnames="" returntype="System.Byte[]" />
+    </class>
+    <class name="TypeBuilder" namespace="System.Reflection.Emit">
+        <field name="UnspecifiedTypeSize" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="PackingSize" propertytype="System.Reflection.Emit.PackingSize" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <property name="TypeToken" propertytype="System.Reflection.Emit.TypeToken" />
+        <property name="Name" propertytype="System.String" />
+        <property name="GUID" propertytype="System.Guid" />
+        <property name="Module" propertytype="System.Reflection.Module" />
+        <property name="Assembly" propertytype="System.Reflection.Assembly" />
+        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
+        <property name="FullName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="AssemblyQualifiedName" propertytype="System.String" />
+        <property name="BaseType" propertytype="System.Type" />
+        <property name="UnderlyingSystemType" propertytype="System.Type" />
+        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
+        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
+        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
+        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
+        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
+        <method name="IsAssignableFrom(System.Type)" argnames="c" returntype="System.Boolean" />
+        <method name="IsSubclassOf(System.Type)" argnames="c" returntype="System.Boolean" />
+        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetElementType()" argnames="" returntype="System.Type" />
+        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
+        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
+        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
+        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
+        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
+        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
+        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
+        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="SetParent(System.Type)" argnames="parent" returntype="System.Void" />
+        <method name="AddInterfaceImplementation(System.Type)" argnames="interfaceType" returntype="System.Void" />
+        <method name="DefineMethod(System.String, System.Reflection.MethodAttributes, System.Type, System.Type[])" argnames="name, attributes, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[])" argnames="name, attributes, callingConvention, returnType, parameterTypes" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Type, System.Type[])" argnames="name, attributes, returnType, parameterTypes" returntype="System.Reflection.Emit.PropertyBuilder" />
+        <method name="DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)" argnames="name, attributes, eventtype" returntype="System.Reflection.Emit.EventBuilder" />
+        <method name="DefinePInvokeMethod(System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)" argnames="name, dllName, entryName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet" returntype="System.Reflection.Emit.MethodBuilder" />
+        <method name="DefineTypeInitializer()" argnames="" returntype="System.Reflection.Emit.ConstructorBuilder" />
+        <method name="DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[])" argnames="attributes, callingConvention, parameterTypes" returntype="System.Reflection.Emit.ConstructorBuilder" />
+        <method name="DefineDefaultConstructor(System.Reflection.MethodAttributes)" argnames="attributes" returntype="System.Reflection.Emit.ConstructorBuilder" />
+        <method name="CreateType()" argnames="" returntype="System.Type" />
+        <method name="DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)" argnames="methodInfoBody, methodInfoDeclaration" returntype="System.Void" />
+        <method name="DefineField(System.String, System.Type, System.Reflection.FieldAttributes)" argnames="fieldName, type, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
+        <method name="DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)" argnames="name, data, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
+        <method name="DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)" argnames="name, size, attributes" returntype="System.Reflection.Emit.FieldBuilder" />
+        <method name="DefineNestedType(System.String)" argnames="name" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])" argnames="name, attr, parent, interfaces" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type)" argnames="name, attr, parent" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes)" argnames="name, attr" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Int32)" argnames="name, attr, parent, typeSize" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize)" argnames="name, attr, parent, packSize" returntype="System.Reflection.Emit.TypeBuilder" />
+        <method name="AddDeclarativeSecurity(System.Security.Permissions.SecurityAction, System.Security.PermissionSet)" argnames="action, pset" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+    </class>
+    <class name="EnumBuilder" namespace="System.Reflection.Emit">
+        <property name="TypeToken" propertytype="System.Reflection.Emit.TypeToken" />
+        <property name="UnderlyingField" propertytype="System.Reflection.Emit.FieldBuilder" />
+        <property name="Name" propertytype="System.String" />
+        <property name="GUID" propertytype="System.Guid" />
+        <property name="Module" propertytype="System.Reflection.Module" />
+        <property name="Assembly" propertytype="System.Reflection.Assembly" />
+        <property name="TypeHandle" propertytype="System.RuntimeTypeHandle" />
+        <property name="FullName" propertytype="System.String" />
+        <property name="AssemblyQualifiedName" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="BaseType" propertytype="System.Type" />
+        <property name="UnderlyingSystemType" propertytype="System.Type" />
+        <property name="DeclaringType" propertytype="System.Type" />
+        <property name="ReflectedType" propertytype="System.Type" />
+        <method name="InvokeMember(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object, System.Object[], System.Reflection.ParameterModifier[], System.Globalization.CultureInfo, System.String[])" argnames="name, invokeAttr, binder, target, args, modifiers, culture, namedParameters" returntype="System.Object" />
+        <method name="GetMembers(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetProperties(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.PropertyInfo[]" />
+        <method name="GetFields(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.FieldInfo[]" />
+        <method name="GetField(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.FieldInfo" />
+        <method name="GetMethods(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.MethodInfo[]" />
+        <method name="GetInterfaceMap(System.Type)" argnames="interfaceType" returntype="System.Reflection.InterfaceMapping" />
+        <method name="HasElementTypeImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetElementType()" argnames="" returntype="System.Type" />
+        <method name="IsCOMObjectImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPrimitiveImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsPointerImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsByRefImpl()" argnames="" returntype="System.Boolean" />
+        <method name="IsArrayImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetAttributeFlagsImpl()" argnames="" returntype="System.Reflection.TypeAttributes" />
+        <method name="IsValueTypeImpl()" argnames="" returntype="System.Boolean" />
+        <method name="GetMember(System.String, System.Reflection.MemberTypes, System.Reflection.BindingFlags)" argnames="name, type, bindingAttr" returntype="System.Reflection.MemberInfo[]" />
+        <method name="GetNestedType(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Type" />
+        <method name="GetNestedTypes(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Type[]" />
+        <method name="GetPropertyImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Type, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, returnType, types, modifiers" returntype="System.Reflection.PropertyInfo" />
+        <method name="GetEvents(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvents()" argnames="" returntype="System.Reflection.EventInfo[]" />
+        <method name="GetEvent(System.String, System.Reflection.BindingFlags)" argnames="name, bindingAttr" returntype="System.Reflection.EventInfo" />
+        <method name="GetInterfaces()" argnames="" returntype="System.Type[]" />
+        <method name="GetInterface(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Type" />
+        <method name="GetMethodImpl(System.String, System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="name, bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.MethodInfo" />
+        <method name="GetConstructors(System.Reflection.BindingFlags)" argnames="bindingAttr" returntype="System.Reflection.ConstructorInfo[]" />
+        <method name="GetConstructorImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Reflection.CallingConventions, System.Type[], System.Reflection.ParameterModifier[])" argnames="bindingAttr, binder, callConvention, types, modifiers" returntype="System.Reflection.ConstructorInfo" />
+        <method name="IsDefined(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Boolean" />
+        <method name="GetCustomAttributes(System.Boolean)" argnames="inherit" returntype="System.Object[]" />
+        <method name="GetCustomAttributes(System.Type, System.Boolean)" argnames="attributeType, inherit" returntype="System.Object[]" />
+        <method name="DefineLiteral(System.String, System.Object)" argnames="literalName, literalValue" returntype="System.Reflection.Emit.FieldBuilder" />
+        <method name="CreateType()" argnames="" returntype="System.Type" />
+        <method name="SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])" argnames="con, binaryAttribute" returntype="System.Void" />
+        <method name="SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)" argnames="customBuilder" returntype="System.Void" />
+    </class>
+    <struct name="EventToken" namespace="System.Reflection.Emit">
+        <field name="Empty" />
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="FieldToken" namespace="System.Reflection.Emit">
+        <field name="Empty" />
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="Label" namespace="System.Reflection.Emit">
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="MethodToken" namespace="System.Reflection.Emit">
+        <field name="Empty" />
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="OpCode" namespace="System.Reflection.Emit">
+        <property name="OperandType" propertytype="System.Reflection.Emit.OperandType" />
+        <property name="FlowControl" propertytype="System.Reflection.Emit.FlowControl" />
+        <property name="OpCodeType" propertytype="System.Reflection.Emit.OpCodeType" />
+        <property name="StackBehaviourPop" propertytype="System.Reflection.Emit.StackBehaviour" />
+        <property name="StackBehaviourPush" propertytype="System.Reflection.Emit.StackBehaviour" />
+        <property name="Size" propertytype="System.Int32" />
+        <property name="Value" propertytype="System.Int16" />
+        <property name="Name" propertytype="System.String" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </struct>
+    <struct name="ParameterToken" namespace="System.Reflection.Emit">
+        <field name="Empty" />
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="PropertyToken" namespace="System.Reflection.Emit">
+        <field name="Empty" />
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="SignatureToken" namespace="System.Reflection.Emit">
+        <field name="Empty" />
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="StringToken" namespace="System.Reflection.Emit">
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <struct name="TypeToken" namespace="System.Reflection.Emit">
+        <field name="Empty" />
+        <property name="Token" propertytype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+    </struct>
+    <enum name="AssemblyBuilderAccess" namespace="System.Reflection.Emit">
+        <field name="Run" />
+        <field name="Save" />
+        <field name="RunAndSave" />
+    </enum>
+    <enum name="PEFileKinds" namespace="System.Reflection.Emit">
+        <field name="Dll" />
+        <field name="ConsoleApplication" />
+        <field name="WindowApplication" />
+    </enum>
+    <enum name="OpCodeType" namespace="System.Reflection.Emit">
+        <field name="Annotation" />
+        <field name="Macro" />
+        <field name="Nternal" />
+        <field name="Objmodel" />
+        <field name="Prefix" />
+        <field name="Primitive" />
+    </enum>
+    <enum name="StackBehaviour" namespace="System.Reflection.Emit">
+        <field name="Pop0" />
+        <field name="Pop1" />
+        <field name="Pop1_pop1" />
+        <field name="Popi" />
+        <field name="Popi_pop1" />
+        <field name="Popi_popi" />
+        <field name="Popi_popi8" />
+        <field name="Popi_popi_popi" />
+        <field name="Popi_popr4" />
+        <field name="Popi_popr8" />
+        <field name="Popref" />
+        <field name="Popref_pop1" />
+        <field name="Popref_popi" />
+        <field name="Popref_popi_popi" />
+        <field name="Popref_popi_popi8" />
+        <field name="Popref_popi_popr4" />
+        <field name="Popref_popi_popr8" />
+        <field name="Popref_popi_popref" />
+        <field name="Push0" />
+        <field name="Push1" />
+        <field name="Push1_push1" />
+        <field name="Pushi" />
+        <field name="Pushi8" />
+        <field name="Pushr4" />
+        <field name="Pushr8" />
+        <field name="Pushref" />
+        <field name="Varpop" />
+        <field name="Varpush" />
+    </enum>
+    <enum name="OperandType" namespace="System.Reflection.Emit">
+        <field name="InlineBrTarget" />
+        <field name="InlineField" />
+        <field name="InlineI" />
+        <field name="InlineI8" />
+        <field name="InlineMethod" />
+        <field name="InlineNone" />
+        <field name="InlinePhi" />
+        <field name="InlineR" />
+        <field name="InlineSig" />
+        <field name="InlineString" />
+        <field name="InlineSwitch" />
+        <field name="InlineTok" />
+        <field name="InlineType" />
+        <field name="InlineVar" />
+        <field name="ShortInlineBrTarget" />
+        <field name="ShortInlineI" />
+        <field name="ShortInlineR" />
+        <field name="ShortInlineVar" />
+    </enum>
+    <enum name="FlowControl" namespace="System.Reflection.Emit">
+        <field name="Branch" />
+        <field name="Break" />
+        <field name="Call" />
+        <field name="Cond_Branch" />
+        <field name="Meta" />
+        <field name="Next" />
+        <field name="Phi" />
+        <field name="Return" />
+        <field name="Throw" />
+    </enum>
+    <enum name="PackingSize" namespace="System.Reflection.Emit">
+        <field name="Unspecified" />
+        <field name="Size1" />
+        <field name="Size2" />
+        <field name="Size4" />
+        <field name="Size8" />
+        <field name="Size16" />
+    </enum>
+    <class name="Calendar" namespace="System.Globalization">
+        <constructor name="Calendar()" argnames="" />
+        <field name="CurrentEra" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="CurrentEraValue" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapYear(System.Int32)" argnames="year" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32)" argnames="year, month" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32)" argnames="year, month, day" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetWeekOfYear(System.DateTime, System.Globalization.CalendarWeekRule, System.DayOfWeek)" argnames="time, rule, firstDayOfWeek" returntype="System.Int32" />
+        <method name="GetSecond(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMinute(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMilliseconds(System.DateTime)" argnames="time" returntype="System.Double" />
+        <method name="GetHour(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32)" argnames="year, month" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddWeeks(System.DateTime, System.Int32)" argnames="time, weeks" returntype="System.DateTime" />
+        <method name="AddSeconds(System.DateTime, System.Int32)" argnames="time, seconds" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+        <method name="AddMinutes(System.DateTime, System.Int32)" argnames="time, minutes" returntype="System.DateTime" />
+        <method name="AddMilliseconds(System.DateTime, System.Double)" argnames="time, milliseconds" returntype="System.DateTime" />
+        <method name="AddHours(System.DateTime, System.Int32)" argnames="time, hours" returntype="System.DateTime" />
+        <method name="AddDays(System.DateTime, System.Int32)" argnames="time, days" returntype="System.DateTime" />
+    </class>
+    <class name="CompareInfo" namespace="System.Globalization">
+        <property name="LCID" propertytype="System.Int32" />
+        <method name="GetSortKey(System.String)" argnames="source" returntype="System.Globalization.SortKey" />
+        <method name="GetSortKey(System.String, System.Globalization.CompareOptions)" argnames="source, options" returntype="System.Globalization.SortKey" />
+        <method name="LastIndexOf(System.String, System.String, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Char, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.String, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.String, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.String, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Char, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Char, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Char, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Char, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.String)" argnames="source, value" returntype="System.Int32" />
+        <method name="LastIndexOf(System.String, System.Char)" argnames="source, value" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.String, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Char, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, count, options" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.String, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.String, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.String, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Char, System.Int32, System.Int32)" argnames="source, value, startIndex, count" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Char, System.Int32, System.Globalization.CompareOptions)" argnames="source, value, startIndex, options" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Char, System.Int32)" argnames="source, value, startIndex" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Char, System.Globalization.CompareOptions)" argnames="source, value, options" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.String)" argnames="source, value" returntype="System.Int32" />
+        <method name="IndexOf(System.String, System.Char)" argnames="source, value" returntype="System.Int32" />
+        <method name="IsSuffix(System.String, System.String)" argnames="source, suffix" returntype="System.Boolean" />
+        <method name="IsSuffix(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, suffix, options" returntype="System.Boolean" />
+        <method name="IsPrefix(System.String, System.String)" argnames="source, prefix" returntype="System.Boolean" />
+        <method name="IsPrefix(System.String, System.String, System.Globalization.CompareOptions)" argnames="source, prefix, options" returntype="System.Boolean" />
+        <method name="Compare(System.String, System.Int32, System.Int32, System.String, System.Int32, System.Int32, System.Globalization.CompareOptions)" argnames="string1, offset1, length1, string2, offset2, length2, options" returntype="System.Int32" />
+        <method name="Compare(System.String, System.Int32, System.String, System.Int32)" argnames="string1, offset1, string2, offset2" returntype="System.Int32" />
+        <method name="Compare(System.String, System.Int32, System.String, System.Int32, System.Globalization.CompareOptions)" argnames="string1, offset1, string2, offset2, options" returntype="System.Int32" />
+        <method name="Compare(System.String, System.Int32, System.Int32, System.String, System.Int32, System.Int32)" argnames="string1, offset1, length1, string2, offset2, length2" returntype="System.Int32" />
+        <method name="Compare(System.String, System.String, System.Globalization.CompareOptions)" argnames="string1, string2, options" returntype="System.Int32" />
+        <method name="Compare(System.String, System.String)" argnames="string1, string2" returntype="System.Int32" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GetCompareInfo(System.Int32, System.Reflection.Assembly)" argnames="culture, assembly" returntype="System.Globalization.CompareInfo" />
+        <method name="GetCompareInfo(System.String, System.Reflection.Assembly)" argnames="name, assembly" returntype="System.Globalization.CompareInfo" />
+        <method name="GetCompareInfo(System.Int32)" argnames="culture" returntype="System.Globalization.CompareInfo" />
+        <method name="GetCompareInfo(System.String)" argnames="name" returntype="System.Globalization.CompareInfo" />
+    </class>
+    <class name="CultureInfo" namespace="System.Globalization">
+        <constructor name="CultureInfo(System.String)" argnames="name" />
+        <constructor name="CultureInfo(System.String, System.Boolean)" argnames="name, useUserOverride" />
+        <constructor name="CultureInfo(System.Int32)" argnames="culture" />
+        <constructor name="CultureInfo(System.Int32, System.Boolean)" argnames="culture, useUserOverride" />
+        <property name="CurrentCulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="UserDefaultCulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="UserDefaultUICulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="CurrentUICulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="InstalledUICulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="InvariantCulture" propertytype="System.Globalization.CultureInfo" />
+        <property name="Parent" propertytype="System.Globalization.CultureInfo" />
+        <property name="LCID" propertytype="System.Int32" />
+        <property name="Name" propertytype="System.String" />
+        <property name="DisplayName" propertytype="System.String" />
+        <property name="NativeName" propertytype="System.String" />
+        <property name="EnglishName" propertytype="System.String" />
+        <property name="TwoLetterISOLanguageName" propertytype="System.String" />
+        <property name="ThreeLetterISOLanguageName" propertytype="System.String" />
+        <property name="ThreeLetterWindowsLanguageName" propertytype="System.String" />
+        <property name="CompareInfo" propertytype="System.Globalization.CompareInfo" />
+        <property name="TextInfo" propertytype="System.Globalization.TextInfo" />
+        <property name="IsNeutralCulture" propertytype="System.Boolean" />
+        <property name="NumberFormat" propertytype="System.Globalization.NumberFormatInfo" />
+        <property name="DateTimeFormat" propertytype="System.Globalization.DateTimeFormatInfo" />
+        <property name="Calendar" propertytype="System.Globalization.Calendar" />
+        <property name="OptionalCalendars" propertytype="System.Globalization.Calendar[]" />
+        <property name="UseUserOverride" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="CreateSpecificCulture(System.String)" argnames="name" returntype="System.Globalization.CultureInfo" />
+        <method name="GetCultures(System.Globalization.CultureTypes)" argnames="types" returntype="System.Globalization.CultureInfo[]" />
+        <method name="ClearCachedData()" argnames="" returntype="System.Void" />
+        <method name="ReadOnly(System.Globalization.CultureInfo)" argnames="ci" returntype="System.Globalization.CultureInfo" />
+    </class>
+    <class name="DateTimeFormatInfo" namespace="System.Globalization">
+        <constructor name="DateTimeFormatInfo()" argnames="" />
+        <property name="InvariantInfo" propertytype="System.Globalization.DateTimeFormatInfo" />
+        <property name="CurrentInfo" propertytype="System.Globalization.DateTimeFormatInfo" />
+        <property name="AMDesignator" propertytype="System.String" />
+        <property name="Calendar" propertytype="System.Globalization.Calendar" />
+        <property name="OptionalCalendars" propertytype="System.Int32[]" />
+        <property name="EraNames" propertytype="System.String[]" />
+        <property name="AbbreviatedEraNames" propertytype="System.String[]" />
+        <property name="AbbreviatedEnglishEraNames" propertytype="System.String[]" />
+        <property name="DateSeparator" propertytype="System.String" />
+        <property name="FirstDayOfWeek" propertytype="System.DayOfWeek" />
+        <property name="CalendarWeekRule" propertytype="System.Globalization.CalendarWeekRule" />
+        <property name="FullDateTimePattern" propertytype="System.String" />
+        <property name="LongDatePattern" propertytype="System.String" />
+        <property name="LongTimePattern" propertytype="System.String" />
+        <property name="MonthDayPattern" propertytype="System.String" />
+        <property name="PMDesignator" propertytype="System.String" />
+        <property name="RFC1123Pattern" propertytype="System.String" />
+        <property name="ShortDatePattern" propertytype="System.String" />
+        <property name="ShortTimePattern" propertytype="System.String" />
+        <property name="SortableDateTimePattern" propertytype="System.String" />
+        <property name="GeneralShortTimePattern" propertytype="System.String" />
+        <property name="GeneralLongTimePattern" propertytype="System.String" />
+        <property name="TimeSeparator" propertytype="System.String" />
+        <property name="UniversalSortableDateTimePattern" propertytype="System.String" />
+        <property name="YearMonthPattern" propertytype="System.String" />
+        <property name="AbbreviatedDayNames" propertytype="System.String[]" />
+        <property name="DayNames" propertytype="System.String[]" />
+        <property name="AbbreviatedMonthNames" propertytype="System.String[]" />
+        <property name="MonthNames" propertytype="System.String[]" />
+        <property name="AllShortDatePatterns" propertytype="System.String[]" />
+        <property name="AllLongDatePatterns" propertytype="System.String[]" />
+        <property name="AllShortTimePatterns" propertytype="System.String[]" />
+        <property name="AllLongTimePatterns" propertytype="System.String[]" />
+        <property name="DateWords" propertytype="System.String[]" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetInstance(System.IFormatProvider)" argnames="provider" returntype="System.Globalization.DateTimeFormatInfo" />
+        <method name="GetEra(System.String)" argnames="eraName" returntype="System.Int32" />
+        <method name="GetEraName(System.Int32)" argnames="era" returntype="System.String" />
+        <method name="GetAbbreviatedEraName(System.Int32)" argnames="era" returntype="System.String" />
+        <method name="GetAbbreviatedDayName(System.DayOfWeek)" argnames="dayofweek" returntype="System.String" />
+        <method name="GetAllDateTimePatterns()" argnames="" returntype="System.String[]" />
+        <method name="GetAllDateTimePatterns(System.Char)" argnames="format" returntype="System.String[]" />
+        <method name="GetDayName(System.DayOfWeek)" argnames="dayofweek" returntype="System.String" />
+        <method name="GetAbbreviatedMonthName(System.Int32)" argnames="month" returntype="System.String" />
+        <method name="GetMonthName(System.Int32)" argnames="month" returntype="System.String" />
+        <method name="ReadOnly(System.Globalization.DateTimeFormatInfo)" argnames="dtfi" returntype="System.Globalization.DateTimeFormatInfo" />
+    </class>
+    <class name="DaylightTime" namespace="System.Globalization">
+        <constructor name="DaylightTime(System.DateTime, System.DateTime, System.TimeSpan)" argnames="start, end, delta" />
+        <property name="Start" propertytype="System.DateTime" />
+        <property name="End" propertytype="System.DateTime" />
+        <property name="Delta" propertytype="System.TimeSpan" />
+    </class>
+    <class name="GregorianCalendar" namespace="System.Globalization">
+        <constructor name="GregorianCalendar()" argnames="" />
+        <constructor name="GregorianCalendar(System.Globalization.GregorianCalendarTypes)" argnames="type" />
+        <field name="ADEra" />
+        <property name="CalendarType" propertytype="System.Globalization.GregorianCalendarTypes" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddWeeks(System.DateTime, System.Int32)" argnames="time, weeks" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="HebrewCalendar" namespace="System.Globalization">
+        <constructor name="HebrewCalendar()" argnames="" />
+        <field name="HebrewEra" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="HijriCalendar" namespace="System.Globalization">
+        <constructor name="HijriCalendar()" argnames="" />
+        <field name="HijriEra" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="JapaneseCalendar" namespace="System.Globalization">
+        <constructor name="JapaneseCalendar()" argnames="" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="JulianCalendar" namespace="System.Globalization">
+        <constructor name="JulianCalendar()" argnames="" />
+        <field name="JulianEra" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="KoreanCalendar" namespace="System.Globalization">
+        <constructor name="KoreanCalendar()" argnames="" />
+        <field name="KoreanEra" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="RegionInfo" namespace="System.Globalization">
+        <constructor name="RegionInfo(System.String)" argnames="name" />
+        <constructor name="RegionInfo(System.Int32)" argnames="culture" />
+        <property name="CurrentRegion" propertytype="System.Globalization.RegionInfo" />
+        <property name="Name" propertytype="System.String" />
+        <property name="EnglishName" propertytype="System.String" />
+        <property name="DisplayName" propertytype="System.String" />
+        <property name="TwoLetterISORegionName" propertytype="System.String" />
+        <property name="ThreeLetterISORegionName" propertytype="System.String" />
+        <property name="IsMetric" propertytype="System.Boolean" />
+        <property name="ThreeLetterWindowsRegionName" propertytype="System.String" />
+        <property name="CurrencySymbol" propertytype="System.String" />
+        <property name="ISOCurrencySymbol" propertytype="System.String" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="SortKey" namespace="System.Globalization">
+        <property name="OriginalString" propertytype="System.String" />
+        <property name="KeyData" propertytype="System.Byte[]" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="value" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Compare(System.Globalization.SortKey, System.Globalization.SortKey)" argnames="sortkey1, sortkey2" returntype="System.Int32" />
+    </class>
+    <class name="StringInfo" namespace="System.Globalization">
+        <constructor name="StringInfo()" argnames="" />
+        <method name="GetNextTextElement(System.String)" argnames="str" returntype="System.String" />
+        <method name="GetNextTextElement(System.String, System.Int32)" argnames="str, index" returntype="System.String" />
+        <method name="GetTextElementEnumerator(System.String)" argnames="str" returntype="System.Globalization.TextElementEnumerator" />
+        <method name="GetTextElementEnumerator(System.String, System.Int32)" argnames="str, index" returntype="System.Globalization.TextElementEnumerator" />
+        <method name="ParseCombiningCharacters(System.String)" argnames="str" returntype="System.Int32[]" />
+    </class>
+    <class name="TaiwanCalendar" namespace="System.Globalization">
+        <constructor name="TaiwanCalendar()" argnames="" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="TextElementEnumerator" namespace="System.Globalization">
+        <property name="Current" propertytype="System.Object" />
+        <property name="ElementIndex" propertytype="System.Int32" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="MoveNext()" argnames="" returntype="System.Boolean" />
+        <method name="GetTextElement()" argnames="" returntype="System.String" />
+    </class>
+    <class name="TextInfo" namespace="System.Globalization">
+        <property name="ANSICodePage" propertytype="System.Int32" />
+        <property name="OEMCodePage" propertytype="System.Int32" />
+        <property name="MacCodePage" propertytype="System.Int32" />
+        <property name="EBCDICCodePage" propertytype="System.Int32" />
+        <property name="ListSeparator" propertytype="System.String" />
+        <method name="ToUpper(System.String)" argnames="str" returntype="System.String" />
+        <method name="ToUpper(System.Char)" argnames="c" returntype="System.Char" />
+        <method name="ToLower(System.String)" argnames="str" returntype="System.String" />
+        <method name="ToLower(System.Char)" argnames="c" returntype="System.Char" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="ToTitleCase(System.String)" argnames="str" returntype="System.String" />
+    </class>
+    <class name="ThaiBuddhistCalendar" namespace="System.Globalization">
+        <constructor name="ThaiBuddhistCalendar()" argnames="" />
+        <field name="ThaiBuddhistEra" />
+        <property name="ID" propertytype="System.Int32" />
+        <property name="Eras" propertytype="System.Int32[]" />
+        <property name="TwoDigitYearMax" propertytype="System.Int32" />
+        <method name="ToFourDigitYear(System.Int32)" argnames="year" returntype="System.Int32" />
+        <method name="ToDateTime(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, hour, minute, second, millisecond, era" returntype="System.DateTime" />
+        <method name="IsLeapYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Boolean" />
+        <method name="IsLeapMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Boolean" />
+        <method name="IsLeapDay(System.Int32, System.Int32, System.Int32, System.Int32)" argnames="year, month, day, era" returntype="System.Boolean" />
+        <method name="GetYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetMonthsInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetEra(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDaysInYear(System.Int32, System.Int32)" argnames="year, era" returntype="System.Int32" />
+        <method name="GetDaysInMonth(System.Int32, System.Int32, System.Int32)" argnames="year, month, era" returntype="System.Int32" />
+        <method name="GetDayOfYear(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="GetDayOfWeek(System.DateTime)" argnames="time" returntype="System.DayOfWeek" />
+        <method name="GetDayOfMonth(System.DateTime)" argnames="time" returntype="System.Int32" />
+        <method name="AddYears(System.DateTime, System.Int32)" argnames="time, years" returntype="System.DateTime" />
+        <method name="AddMonths(System.DateTime, System.Int32)" argnames="time, months" returntype="System.DateTime" />
+    </class>
+    <class name="NumberFormatInfo" namespace="System.Globalization">
+        <constructor name="NumberFormatInfo()" argnames="" />
+        <property name="InvariantInfo" propertytype="System.Globalization.NumberFormatInfo" />
+        <property name="CurrencyDecimalDigits" propertytype="System.Int32" />
+        <property name="CurrencyDecimalSeparator" propertytype="System.String" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="CurrencyGroupSizes" propertytype="System.Int32[]" />
+        <property name="NumberGroupSizes" propertytype="System.Int32[]" />
+        <property name="PercentGroupSizes" propertytype="System.Int32[]" />
+        <property name="CurrencyGroupSeparator" propertytype="System.String" />
+        <property name="CurrencySymbol" propertytype="System.String" />
+        <property name="CurrentInfo" propertytype="System.Globalization.NumberFormatInfo" />
+        <property name="NaNSymbol" propertytype="System.String" />
+        <property name="CurrencyNegativePattern" propertytype="System.Int32" />
+        <property name="NumberNegativePattern" propertytype="System.Int32" />
+        <property name="PercentPositivePattern" propertytype="System.Int32" />
+        <property name="PercentNegativePattern" propertytype="System.Int32" />
+        <property name="NegativeInfinitySymbol" propertytype="System.String" />
+        <property name="NegativeSign" propertytype="System.String" />
+        <property name="NumberDecimalDigits" propertytype="System.Int32" />
+        <property name="NumberDecimalSeparator" propertytype="System.String" />
+        <property name="NumberGroupSeparator" propertytype="System.String" />
+        <property name="CurrencyPositivePattern" propertytype="System.Int32" />
+        <property name="PositiveInfinitySymbol" propertytype="System.String" />
+        <property name="PositiveSign" propertytype="System.String" />
+        <property name="PercentDecimalDigits" propertytype="System.Int32" />
+        <property name="PercentDecimalSeparator" propertytype="System.String" />
+        <property name="PercentGroupSeparator" propertytype="System.String" />
+        <property name="PercentSymbol" propertytype="System.String" />
+        <property name="PerMilleSymbol" propertytype="System.String" />
+        <property name="AnsiCurrencySymbol" propertytype="System.String" />
+        <method name="GetFormat(System.Type)" argnames="formatType" returntype="System.Object" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetInstance(System.IFormatProvider)" argnames="formatProvider" returntype="System.Globalization.NumberFormatInfo" />
+        <method name="ReadOnly(System.Globalization.NumberFormatInfo)" argnames="nfi" returntype="System.Globalization.NumberFormatInfo" />
+    </class>
+    <enum name="CalendarWeekRule" namespace="System.Globalization">
+        <field name="FirstDay" />
+        <field name="FirstFullWeek" />
+        <field name="FirstFourDayWeek" />
+    </enum>
+    <enum name="CompareOptions" namespace="System.Globalization">
+        <field name="None" />
+        <field name="IgnoreCase" />
+        <field name="IgnoreNonSpace" />
+        <field name="IgnoreSymbols" />
+        <field name="IgnoreKanaType" />
+        <field name="IgnoreWidth" />
+        <field name="StringSort" />
+        <field name="Ordinal" />
+    </enum>
+    <enum name="CultureTypes" namespace="System.Globalization">
+        <field name="NeutralCultures" />
+        <field name="SpecificCultures" />
+        <field name="InstalledWin32Cultures" />
+        <field name="AllCultures" />
+    </enum>
+    <enum name="DateTimeStyles" namespace="System.Globalization">
+        <field name="None" />
+        <field name="AllowLeadingWhite" />
+        <field name="AllowTrailingWhite" />
+        <field name="AllowInnerWhite" />
+        <field name="AllowWhiteSpaces" />
+        <field name="NoCurrentDateDefault" />
+        <field name="AdjustToUniversal" />
+    </enum>
+    <enum name="GregorianCalendarTypes" namespace="System.Globalization">
+        <field name="Localized" />
+        <field name="USEnglish" />
+        <field name="MiddleEastFrench" />
+        <field name="Arabic" />
+        <field name="TransliteratedEnglish" />
+        <field name="TransliteratedFrench" />
+    </enum>
+    <enum name="NumberStyles" namespace="System.Globalization">
+        <field name="None" />
+        <field name="AllowLeadingWhite" />
+        <field name="AllowTrailingWhite" />
+        <field name="AllowLeadingSign" />
+        <field name="AllowTrailingSign" />
+        <field name="AllowParentheses" />
+        <field name="AllowDecimalPoint" />
+        <field name="AllowThousands" />
+        <field name="AllowExponent" />
+        <field name="AllowCurrencySymbol" />
+        <field name="AllowHexSpecifier" />
+        <field name="Integer" />
+        <field name="HexNumber" />
+        <field name="Number" />
+        <field name="Float" />
+        <field name="Currency" />
+        <field name="Any" />
+    </enum>
+    <enum name="UnicodeCategory" namespace="System.Globalization">
+        <field name="UppercaseLetter" />
+        <field name="LowercaseLetter" />
+        <field name="TitlecaseLetter" />
+        <field name="ModifierLetter" />
+        <field name="OtherLetter" />
+        <field name="NonSpacingMark" />
+        <field name="SpacingCombiningMark" />
+        <field name="EnclosingMark" />
+        <field name="DecimalDigitNumber" />
+        <field name="LetterNumber" />
+        <field name="OtherNumber" />
+        <field name="SpaceSeparator" />
+        <field name="LineSeparator" />
+        <field name="ParagraphSeparator" />
+        <field name="Control" />
+        <field name="Format" />
+        <field name="Surrogate" />
+        <field name="PrivateUse" />
+        <field name="ConnectorPunctuation" />
+        <field name="DashPunctuation" />
+        <field name="OpenPunctuation" />
+        <field name="ClosePunctuation" />
+        <field name="InitialQuotePunctuation" />
+        <field name="FinalQuotePunctuation" />
+        <field name="OtherPunctuation" />
+        <field name="MathSymbol" />
+        <field name="CurrencySymbol" />
+        <field name="ModifierSymbol" />
+        <field name="OtherSymbol" />
+        <field name="OtherNotAssigned" />
+    </enum>
+    <class name="MissingManifestResourceException" namespace="System.Resources">
+        <constructor name="MissingManifestResourceException()" argnames="" />
+        <constructor name="MissingManifestResourceException(System.String)" argnames="message" />
+        <constructor name="MissingManifestResourceException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="MissingManifestResourceException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="NeutralResourcesLanguageAttribute" namespace="System.Resources">
+        <constructor name="NeutralResourcesLanguageAttribute(System.String)" argnames="cultureName" />
+        <property name="CultureName" propertytype="System.String" />
+    </class>
+    <class name="ResourceManager" namespace="System.Resources">
+        <constructor name="ResourceManager()" argnames="" />
+        <constructor name="ResourceManager(System.String, System.Reflection.Assembly)" argnames="baseName, assembly" />
+        <constructor name="ResourceManager(System.String, System.Reflection.Assembly, System.Type)" argnames="baseName, assembly, usingResourceSet" />
+        <constructor name="ResourceManager(System.Type)" argnames="resourceSource" />
+        <field name="BaseNameField" />
+        <field name="ResourceSets" />
+        <field name="MainAssembly" />
+        <field name="MagicNumber" />
+        <field name="HeaderVersionNumber" />
+        <property name="BaseName" propertytype="System.String" />
+        <property name="IgnoreCase" propertytype="System.Boolean" />
+        <property name="ResourceSetType" propertytype="System.Type" />
+        <method name="GetObject(System.String, System.Globalization.CultureInfo)" argnames="name, culture" returntype="System.Object" />
+        <method name="GetObject(System.String)" argnames="name" returntype="System.Object" />
+        <method name="GetString(System.String, System.Globalization.CultureInfo)" argnames="name, culture" returntype="System.String" />
+        <method name="GetString(System.String)" argnames="name" returntype="System.String" />
+        <method name="InternalGetResourceSet(System.Globalization.CultureInfo, System.Boolean, System.Boolean)" argnames="culture, createIfNotExists, tryParents" returntype="System.Resources.ResourceSet" />
+        <method name="GetResourceSet(System.Globalization.CultureInfo, System.Boolean, System.Boolean)" argnames="culture, createIfNotExists, tryParents" returntype="System.Resources.ResourceSet" />
+        <method name="GetResourceFileName(System.Globalization.CultureInfo)" argnames="culture" returntype="System.String" />
+        <method name="ReleaseAllResources()" argnames="" returntype="System.Void" />
+        <method name="CreateFileBasedResourceManager(System.String, System.String, System.Type)" argnames="baseName, resourceDir, usingResourceSet" returntype="System.Resources.ResourceManager" />
+        <method name="GetSatelliteContractVersion(System.Reflection.Assembly)" argnames="a" returntype="System.Version" />
+        <method name="GetNeutralResourcesLanguage(System.Reflection.Assembly)" argnames="a" returntype="System.Globalization.CultureInfo" />
+    </class>
+    <class name="ResourceReader" namespace="System.Resources">
+        <constructor name="ResourceReader(System.String)" argnames="fileName" />
+        <constructor name="ResourceReader(System.IO.Stream)" argnames="stream" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="ResourceSet" namespace="System.Resources">
+        <constructor name="ResourceSet()" argnames="" />
+        <constructor name="ResourceSet(System.String)" argnames="fileName" />
+        <constructor name="ResourceSet(System.IO.Stream)" argnames="stream" />
+        <constructor name="ResourceSet(System.Resources.IResourceReader)" argnames="reader" />
+        <field name="Reader" />
+        <field name="Table" />
+        <method name="Dispose()" argnames="" returntype="System.Void" />
+        <method name="ReadResources()" argnames="" returntype="System.Void" />
+        <method name="GetObject(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.Object" />
+        <method name="GetObject(System.String)" argnames="name" returntype="System.Object" />
+        <method name="GetString(System.String, System.Boolean)" argnames="name, ignoreCase" returntype="System.String" />
+        <method name="GetString(System.String)" argnames="name" returntype="System.String" />
+        <method name="GetDefaultWriter()" argnames="" returntype="System.Type" />
+        <method name="GetDefaultReader()" argnames="" returntype="System.Type" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="ResourceWriter" namespace="System.Resources">
+        <constructor name="ResourceWriter(System.String)" argnames="fileName" />
+        <constructor name="ResourceWriter(System.IO.Stream)" argnames="stream" />
+        <method name="Dispose()" argnames="" returntype="System.Void" />
+        <method name="Generate()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="AddResource(System.String, System.Byte[])" argnames="name, value" returntype="System.Void" />
+        <method name="AddResource(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
+        <method name="AddResource(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+    </class>
+    <class name="SatelliteContractVersionAttribute" namespace="System.Resources">
+        <constructor name="SatelliteContractVersionAttribute(System.String)" argnames="version" />
+        <property name="Version" propertytype="System.String" />
+    </class>
+    <interface name="IResourceReader" namespace="System.Resources">
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </interface>
+    <interface name="IResourceWriter" namespace="System.Resources">
+        <method name="Generate()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="AddResource(System.String, System.Byte[])" argnames="name, value" returntype="System.Void" />
+        <method name="AddResource(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
+        <method name="AddResource(System.String, System.String)" argnames="name, value" returntype="System.Void" />
+    </interface>
+    <class name="Registry" namespace="Microsoft.Win32">
+        <field name="CurrentUser" />
+        <field name="LocalMachine" />
+        <field name="ClassesRoot" />
+        <field name="Users" />
+        <field name="PerformanceData" />
+        <field name="CurrentConfig" />
+        <field name="DynData" />
+    </class>
+    <class name="RegistryKey" namespace="Microsoft.Win32">
+        <property name="SubKeyCount" propertytype="System.Int32" />
+        <property name="ValueCount" propertytype="System.Int32" />
+        <property name="Name" propertytype="System.String" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="CreateSubKey(System.String)" argnames="subkey" returntype="Microsoft.Win32.RegistryKey" />
+        <method name="DeleteSubKey(System.String)" argnames="subkey" returntype="System.Void" />
+        <method name="DeleteSubKey(System.String, System.Boolean)" argnames="subkey, throwOnMissingSubKey" returntype="System.Void" />
+        <method name="DeleteSubKeyTree(System.String)" argnames="subkey" returntype="System.Void" />
+        <method name="DeleteValue(System.String)" argnames="name" returntype="System.Void" />
+        <method name="DeleteValue(System.String, System.Boolean)" argnames="name, throwOnMissingValue" returntype="System.Void" />
+        <method name="OpenRemoteBaseKey(Microsoft.Win32.RegistryHive, System.String)" argnames="hKey, machineName" returntype="Microsoft.Win32.RegistryKey" />
+        <method name="OpenSubKey(System.String, System.Boolean)" argnames="name, writable" returntype="Microsoft.Win32.RegistryKey" />
+        <method name="OpenSubKey(System.String)" argnames="name" returntype="Microsoft.Win32.RegistryKey" />
+        <method name="GetSubKeyNames()" argnames="" returntype="System.String[]" />
+        <method name="GetValueNames()" argnames="" returntype="System.String[]" />
+        <method name="GetValue(System.String, System.Object)" argnames="name, defaultValue" returntype="System.Object" />
+        <method name="GetValue(System.String)" argnames="name" returntype="System.Object" />
+        <method name="SetValue(System.String, System.Object)" argnames="name, value" returntype="System.Void" />
+    </class>
+    <enum name="RegistryHive" namespace="Microsoft.Win32">
+        <field name="ClassesRoot" />
+        <field name="CurrentUser" />
+        <field name="LocalMachine" />
+        <field name="Users" />
+        <field name="PerformanceData" />
+        <field name="CurrentConfig" />
+        <field name="DynData" />
+    </enum>
+    <class name="X509Certificate" namespace="System.Security.Cryptography.X509Certificates">
+        <constructor name="X509Certificate(System.Byte[])" argnames="data" />
+        <constructor name="X509Certificate(System.IntPtr)" argnames="handle" />
+        <constructor name="X509Certificate(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="cert" />
+        <method name="ToString(System.Boolean)" argnames="fVerbose" returntype="System.String" />
+        <method name="Equals(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="other" returntype="System.Boolean" />
+        <method name="GetExpirationDateString()" argnames="" returntype="System.String" />
+        <method name="GetEffectiveDateString()" argnames="" returntype="System.String" />
+        <method name="GetCertHashString()" argnames="" returntype="System.String" />
+        <method name="GetCertHash()" argnames="" returntype="System.Byte[]" />
+        <method name="GetRawCertDataString()" argnames="" returntype="System.String" />
+        <method name="GetRawCertData()" argnames="" returntype="System.Byte[]" />
+        <method name="GetPublicKeyString()" argnames="" returntype="System.String" />
+        <method name="GetPublicKey()" argnames="" returntype="System.Byte[]" />
+        <method name="GetKeyAlgorithmParametersString()" argnames="" returntype="System.String" />
+        <method name="GetKeyAlgorithmParameters()" argnames="" returntype="System.Byte[]" />
+        <method name="GetKeyAlgorithm()" argnames="" returntype="System.String" />
+        <method name="GetSerialNumberString()" argnames="" returntype="System.String" />
+        <method name="GetSerialNumber()" argnames="" returntype="System.Byte[]" />
+        <method name="GetIssuerName()" argnames="" returntype="System.String" />
+        <method name="GetFormat()" argnames="" returntype="System.String" />
+        <method name="GetName()" argnames="" returntype="System.String" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="CreateFromCertFile(System.String)" argnames="filename" returntype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <method name="CreateFromSignedFile(System.String)" argnames="filename" returntype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+    </class>
+    <class name="AsymmetricAlgorithm" namespace="System.Security.Cryptography">
+        <constructor name="AsymmetricAlgorithm()" argnames="" />
+        <field name="KeySizeValue" />
+        <field name="LegalKeySizesValue" />
+        <property name="KeySize" propertytype="System.Int32" />
+        <property name="LegalKeySizes" propertytype="System.Security.Cryptography.KeySizes[]" />
+        <property name="SignatureAlgorithm" propertytype="System.String" />
+        <property name="KeyExchangeAlgorithm" propertytype="System.String" />
+        <method name="ToXmlString(System.Boolean)" argnames="includePrivateParameters" returntype="System.String" />
+        <method name="FromXmlString(System.String)" argnames="xmlString" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.AsymmetricAlgorithm" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.AsymmetricAlgorithm" />
+    </class>
+    <class name="AsymmetricKeyExchangeDeformatter" namespace="System.Security.Cryptography">
+        <constructor name="AsymmetricKeyExchangeDeformatter()" argnames="" />
+        <property name="Parameters" propertytype="System.String" />
+        <method name="DecryptKeyExchange(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="AsymmetricKeyExchangeFormatter" namespace="System.Security.Cryptography">
+        <constructor name="AsymmetricKeyExchangeFormatter()" argnames="" />
+        <property name="Parameters" propertytype="System.String" />
+        <method name="CreateKeyExchange(System.Byte[], System.Type)" argnames="data, symAlgType" returntype="System.Byte[]" />
+        <method name="CreateKeyExchange(System.Byte[])" argnames="data" returntype="System.Byte[]" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="AsymmetricSignatureDeformatter" namespace="System.Security.Cryptography">
+        <constructor name="AsymmetricSignatureDeformatter()" argnames="" />
+        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
+        <method name="VerifySignature(System.Security.Cryptography.HashAlgorithm, System.Byte[])" argnames="hash, rgbSignature" returntype="System.Boolean" />
+        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="AsymmetricSignatureFormatter" namespace="System.Security.Cryptography">
+        <constructor name="AsymmetricSignatureFormatter()" argnames="" />
+        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
+        <method name="CreateSignature(System.Security.Cryptography.HashAlgorithm)" argnames="hash" returntype="System.Byte[]" />
+        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="ToBase64Transform" namespace="System.Security.Cryptography">
+        <constructor name="ToBase64Transform()" argnames="" />
+        <property name="InputBlockSize" propertytype="System.Int32" />
+        <property name="OutputBlockSize" propertytype="System.Int32" />
+        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
+        <property name="CanReuseTransform" propertytype="System.Boolean" />
+        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
+        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="FromBase64Transform" namespace="System.Security.Cryptography">
+        <constructor name="FromBase64Transform()" argnames="" />
+        <constructor name="FromBase64Transform(System.Security.Cryptography.FromBase64TransformMode)" argnames="whitespaces" />
+        <property name="InputBlockSize" propertytype="System.Int32" />
+        <property name="OutputBlockSize" propertytype="System.Int32" />
+        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
+        <property name="CanReuseTransform" propertytype="System.Boolean" />
+        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
+        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="KeySizes" namespace="System.Security.Cryptography">
+        <constructor name="KeySizes(System.Int32, System.Int32, System.Int32)" argnames="minSize, maxSize, skipSize" />
+        <property name="MinSize" propertytype="System.Int32" />
+        <property name="MaxSize" propertytype="System.Int32" />
+        <property name="SkipSize" propertytype="System.Int32" />
+    </class>
+    <class name="CryptographicException" namespace="System.Security.Cryptography">
+        <constructor name="CryptographicException()" argnames="" />
+        <constructor name="CryptographicException(System.String)" argnames="message" />
+        <constructor name="CryptographicException(System.String, System.String)" argnames="format, insert" />
+        <constructor name="CryptographicException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="CryptographicException(System.Int32)" argnames="hr" />
+        <constructor name="CryptographicException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="CryptographicUnexpectedOperationException" namespace="System.Security.Cryptography">
+        <constructor name="CryptographicUnexpectedOperationException()" argnames="" />
+        <constructor name="CryptographicUnexpectedOperationException(System.String)" argnames="message" />
+        <constructor name="CryptographicUnexpectedOperationException(System.String, System.String)" argnames="format, insert" />
+        <constructor name="CryptographicUnexpectedOperationException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="CryptographicUnexpectedOperationException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="CryptoAPITransform" namespace="System.Security.Cryptography">
+        <property name="KeyHandle" propertytype="System.IntPtr" />
+        <property name="InputBlockSize" propertytype="System.Int32" />
+        <property name="OutputBlockSize" propertytype="System.Int32" />
+        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
+        <property name="CanReuseTransform" propertytype="System.Boolean" />
+        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
+        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="CspParameters" namespace="System.Security.Cryptography">
+        <constructor name="CspParameters()" argnames="" />
+        <constructor name="CspParameters(System.Int32)" argnames="dwTypeIn" />
+        <constructor name="CspParameters(System.Int32, System.String)" argnames="dwTypeIn, strProviderNameIn" />
+        <constructor name="CspParameters(System.Int32, System.String, System.String)" argnames="dwTypeIn, strProviderNameIn, strContainerNameIn" />
+        <field name="ProviderType" />
+        <field name="ProviderName" />
+        <field name="KeyContainerName" />
+        <field name="KeyNumber" />
+        <property name="Flags" propertytype="System.Security.Cryptography.CspProviderFlags" />
+    </class>
+    <class name="CryptoConfig" namespace="System.Security.Cryptography">
+        <constructor name="CryptoConfig()" argnames="" />
+        <method name="CreateFromName(System.String, System.Object[])" argnames="name, args" returntype="System.Object" />
+        <method name="CreateFromName(System.String)" argnames="name" returntype="System.Object" />
+        <method name="MapNameToOID(System.String)" argnames="name" returntype="System.String" />
+        <method name="EncodeOID(System.String)" argnames="str" returntype="System.Byte[]" />
+    </class>
+    <class name="CryptoStream" namespace="System.Security.Cryptography">
+        <constructor name="CryptoStream(System.IO.Stream, System.Security.Cryptography.ICryptoTransform, System.Security.Cryptography.CryptoStreamMode)" argnames="stream, transform, mode" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanSeek" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="Position" propertytype="System.Int64" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
+        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="FlushFinalBlock()" argnames="" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="SymmetricAlgorithm" namespace="System.Security.Cryptography">
+        <constructor name="SymmetricAlgorithm()" argnames="" />
+        <field name="BlockSizeValue" />
+        <field name="FeedbackSizeValue" />
+        <field name="IVValue" />
+        <field name="KeyValue" />
+        <field name="LegalBlockSizesValue" />
+        <field name="LegalKeySizesValue" />
+        <field name="KeySizeValue" />
+        <field name="ModeValue" />
+        <field name="PaddingValue" />
+        <property name="BlockSize" propertytype="System.Int32" />
+        <property name="FeedbackSize" propertytype="System.Int32" />
+        <property name="IV" propertytype="System.Byte[]" />
+        <property name="Key" propertytype="System.Byte[]" />
+        <property name="LegalBlockSizes" propertytype="System.Security.Cryptography.KeySizes[]" />
+        <property name="LegalKeySizes" propertytype="System.Security.Cryptography.KeySizes[]" />
+        <property name="KeySize" propertytype="System.Int32" />
+        <property name="Mode" propertytype="System.Security.Cryptography.CipherMode" />
+        <property name="Padding" propertytype="System.Security.Cryptography.PaddingMode" />
+        <method name="GenerateIV()" argnames="" returntype="System.Void" />
+        <method name="GenerateKey()" argnames="" returntype="System.Void" />
+        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="CreateDecryptor()" argnames="" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="CreateEncryptor()" argnames="" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="ValidKeySize(System.Int32)" argnames="bitLength" returntype="System.Boolean" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SymmetricAlgorithm" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.SymmetricAlgorithm" />
+    </class>
+    <class name="DES" namespace="System.Security.Cryptography">
+        <constructor name="DES()" argnames="" />
+        <property name="Key" propertytype="System.Byte[]" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.DES" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.DES" />
+        <method name="IsWeakKey(System.Byte[])" argnames="rgbKey" returntype="System.Boolean" />
+        <method name="IsSemiWeakKey(System.Byte[])" argnames="rgbKey" returntype="System.Boolean" />
+    </class>
+    <class name="DESCryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="DESCryptoServiceProvider()" argnames="" />
+        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
+        <method name="GenerateIV()" argnames="" returntype="System.Void" />
+        <method name="GenerateKey()" argnames="" returntype="System.Void" />
+        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+    </class>
+    <class name="DeriveBytes" namespace="System.Security.Cryptography">
+        <constructor name="DeriveBytes()" argnames="" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="GetBytes(System.Int32)" argnames="cb" returntype="System.Byte[]" />
+    </class>
+    <class name="DSA" namespace="System.Security.Cryptography">
+        <method name="ImportParameters(System.Security.Cryptography.DSAParameters)" argnames="parameters" returntype="System.Void" />
+        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.DSAParameters" />
+        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
+        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
+        <method name="ToXmlString(System.Boolean)" argnames="includePrivateParameters" returntype="System.String" />
+        <method name="FromXmlString(System.String)" argnames="xmlString" returntype="System.Void" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.DSA" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.DSA" />
+    </class>
+    <class name="DSACryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="DSACryptoServiceProvider()" argnames="" />
+        <constructor name="DSACryptoServiceProvider(System.Int32)" argnames="dwKeySize" />
+        <constructor name="DSACryptoServiceProvider(System.Security.Cryptography.CspParameters)" argnames="parameters" />
+        <constructor name="DSACryptoServiceProvider(System.Int32, System.Security.Cryptography.CspParameters)" argnames="dwKeySize, parameters" />
+        <property name="KeyExchangeAlgorithm" propertytype="System.String" />
+        <property name="KeySize" propertytype="System.Int32" />
+        <property name="LegalKeySizes" propertytype="System.Security.Cryptography.KeySizes[]" />
+        <property name="SignatureAlgorithm" propertytype="System.String" />
+        <property name="PersistKeyInCsp" propertytype="System.Boolean" />
+        <property name="hKey" propertytype="System.IntPtr" />
+        <method name="ImportParameters(System.Security.Cryptography.DSAParameters)" argnames="parameters" returntype="System.Void" />
+        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.DSAParameters" />
+        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
+        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="SignData(System.IO.Stream)" argnames="inputStream" returntype="System.Byte[]" />
+        <method name="SignData(System.Byte[])" argnames="buffer" returntype="System.Byte[]" />
+        <method name="SignData(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Byte[]" />
+        <method name="VerifyData(System.Byte[], System.Byte[])" argnames="rgbData, rgbSignature" returntype="System.Boolean" />
+        <method name="SignHash(System.Byte[], System.String)" argnames="rgbHash, str" returntype="System.Byte[]" />
+        <method name="VerifyHash(System.Byte[], System.String, System.Byte[])" argnames="rgbHash, str, rgbSignature" returntype="System.Boolean" />
+    </class>
+    <class name="DSASignatureDeformatter" namespace="System.Security.Cryptography">
+        <constructor name="DSASignatureDeformatter()" argnames="" />
+        <constructor name="DSASignatureDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
+        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="DSASignatureFormatter" namespace="System.Security.Cryptography">
+        <constructor name="DSASignatureFormatter()" argnames="" />
+        <constructor name="DSASignatureFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
+        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="HashAlgorithm" namespace="System.Security.Cryptography">
+        <constructor name="HashAlgorithm()" argnames="" />
+        <field name="HashSizeValue" />
+        <field name="HashValue" />
+        <field name="State" />
+        <property name="HashSize" propertytype="System.Int32" />
+        <property name="Hash" propertytype="System.Byte[]" />
+        <property name="InputBlockSize" propertytype="System.Int32" />
+        <property name="OutputBlockSize" propertytype="System.Int32" />
+        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
+        <property name="CanReuseTransform" propertytype="System.Boolean" />
+        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
+        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="array, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.HashAlgorithm" />
+        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.HashAlgorithm" />
+        <method name="ComputeHash(System.IO.Stream)" argnames="inputStream" returntype="System.Byte[]" />
+        <method name="ComputeHash(System.Byte[])" argnames="buffer" returntype="System.Byte[]" />
+        <method name="ComputeHash(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Byte[]" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="KeyedHashAlgorithm" namespace="System.Security.Cryptography">
+        <constructor name="KeyedHashAlgorithm()" argnames="" />
+        <field name="KeyValue" />
+        <property name="Key" propertytype="System.Byte[]" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.KeyedHashAlgorithm" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.KeyedHashAlgorithm" />
+    </class>
+    <class name="HMACSHA1" namespace="System.Security.Cryptography">
+        <constructor name="HMACSHA1()" argnames="" />
+        <constructor name="HMACSHA1(System.Byte[])" argnames="rgbKey" />
+        <property name="Key" propertytype="System.Byte[]" />
+        <property name="HashName" propertytype="System.String" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ib, cb" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="MACTripleDES" namespace="System.Security.Cryptography">
+        <constructor name="MACTripleDES()" argnames="" />
+        <constructor name="MACTripleDES(System.Byte[])" argnames="rgbKey" />
+        <constructor name="MACTripleDES(System.String, System.Byte[])" argnames="strTripleDES, rgbKey" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgbData, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="MD5" namespace="System.Security.Cryptography">
+        <constructor name="MD5()" argnames="" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.MD5" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.MD5" />
+    </class>
+    <class name="MD5CryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="MD5CryptoServiceProvider()" argnames="" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="MaskGenerationMethod" namespace="System.Security.Cryptography">
+        <constructor name="MaskGenerationMethod()" argnames="" />
+        <method name="GenerateMask(System.Byte[], System.Int32)" argnames="rgbSeed, cbReturn" returntype="System.Byte[]" />
+    </class>
+    <class name="PasswordDeriveBytes" namespace="System.Security.Cryptography">
+        <constructor name="PasswordDeriveBytes(System.String, System.Byte[])" argnames="strPassword, rgbSalt" />
+        <constructor name="PasswordDeriveBytes(System.String, System.Byte[], System.String, System.Int32)" argnames="strPassword, rgbSalt, strHashName, iterations" />
+        <constructor name="PasswordDeriveBytes(System.String, System.Byte[], System.Security.Cryptography.CspParameters)" argnames="strPassword, rgbSalt, cspParams" />
+        <constructor name="PasswordDeriveBytes(System.String, System.Byte[], System.String, System.Int32, System.Security.Cryptography.CspParameters)" argnames="strPassword, rgbSalt, strHashName, iterations, cspParams" />
+        <property name="HashName" propertytype="System.String" />
+        <property name="IterationCount" propertytype="System.Int32" />
+        <property name="Salt" propertytype="System.Byte[]" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="GetBytes(System.Int32)" argnames="cb" returntype="System.Byte[]" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="CryptDeriveKey(System.String, System.String, System.Int32, System.Byte[])" argnames="algname, alghashname, keySize, rgbIV" returntype="System.Byte[]" />
+    </class>
+    <class name="PKCS1MaskGenerationMethod" namespace="System.Security.Cryptography">
+        <constructor name="PKCS1MaskGenerationMethod()" argnames="" />
+        <property name="HashName" propertytype="System.String" />
+        <method name="GenerateMask(System.Byte[], System.Int32)" argnames="rgbSeed, cbReturn" returntype="System.Byte[]" />
+    </class>
+    <class name="RC2" namespace="System.Security.Cryptography">
+        <constructor name="RC2()" argnames="" />
+        <field name="EffectiveKeySizeValue" />
+        <property name="EffectiveKeySize" propertytype="System.Int32" />
+        <property name="KeySize" propertytype="System.Int32" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.RC2" />
+        <method name="Create(System.String)" argnames="AlgName" returntype="System.Security.Cryptography.RC2" />
+    </class>
+    <class name="RC2CryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="RC2CryptoServiceProvider()" argnames="" />
+        <property name="EffectiveKeySize" propertytype="System.Int32" />
+        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
+        <method name="GenerateIV()" argnames="" returntype="System.Void" />
+        <method name="GenerateKey()" argnames="" returntype="System.Void" />
+        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+    </class>
+    <class name="RandomNumberGenerator" namespace="System.Security.Cryptography">
+        <constructor name="RandomNumberGenerator()" argnames="" />
+        <method name="GetNonZeroBytes(System.Byte[])" argnames="data" returntype="System.Void" />
+        <method name="GetBytes(System.Byte[])" argnames="data" returntype="System.Void" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.RandomNumberGenerator" />
+        <method name="Create(System.String)" argnames="rngName" returntype="System.Security.Cryptography.RandomNumberGenerator" />
+    </class>
+    <class name="RNGCryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="RNGCryptoServiceProvider()" argnames="" />
+        <constructor name="RNGCryptoServiceProvider(System.String)" argnames="str" />
+        <constructor name="RNGCryptoServiceProvider(System.Byte[])" argnames="rgb" />
+        <constructor name="RNGCryptoServiceProvider(System.Security.Cryptography.CspParameters)" argnames="cspParams" />
+        <method name="GetNonZeroBytes(System.Byte[])" argnames="data" returntype="System.Void" />
+        <method name="GetBytes(System.Byte[])" argnames="data" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="RSA" namespace="System.Security.Cryptography">
+        <constructor name="RSA()" argnames="" />
+        <method name="ImportParameters(System.Security.Cryptography.RSAParameters)" argnames="parameters" returntype="System.Void" />
+        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.RSAParameters" />
+        <method name="EncryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
+        <method name="DecryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
+        <method name="ToXmlString(System.Boolean)" argnames="includePrivateParameters" returntype="System.String" />
+        <method name="FromXmlString(System.String)" argnames="xmlString" returntype="System.Void" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.RSA" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.RSA" />
+    </class>
+    <class name="RSACryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="RSACryptoServiceProvider()" argnames="" />
+        <constructor name="RSACryptoServiceProvider(System.Int32)" argnames="dwKeySize" />
+        <constructor name="RSACryptoServiceProvider(System.Security.Cryptography.CspParameters)" argnames="parameters" />
+        <constructor name="RSACryptoServiceProvider(System.Int32, System.Security.Cryptography.CspParameters)" argnames="dwKeySize, parameters" />
+        <property name="KeySize" propertytype="System.Int32" />
+        <property name="KeyExchangeAlgorithm" propertytype="System.String" />
+        <property name="SignatureAlgorithm" propertytype="System.String" />
+        <property name="PersistKeyInCsp" propertytype="System.Boolean" />
+        <property name="hKey" propertytype="System.IntPtr" />
+        <method name="ImportParameters(System.Security.Cryptography.RSAParameters)" argnames="parameters" returntype="System.Void" />
+        <method name="ExportParameters(System.Boolean)" argnames="includePrivateParameters" returntype="System.Security.Cryptography.RSAParameters" />
+        <method name="EncryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
+        <method name="DecryptValue(System.Byte[])" argnames="rgb" returntype="System.Byte[]" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="SignData(System.IO.Stream, System.Object)" argnames="inputStream, halg" returntype="System.Byte[]" />
+        <method name="SignData(System.Byte[], System.Object)" argnames="buffer, halg" returntype="System.Byte[]" />
+        <method name="SignData(System.Byte[], System.Int32, System.Int32, System.Object)" argnames="buffer, offset, count, halg" returntype="System.Byte[]" />
+        <method name="VerifyData(System.Byte[], System.Object, System.Byte[])" argnames="buffer, halg, signature" returntype="System.Boolean" />
+        <method name="SignHash(System.Byte[], System.String)" argnames="rgbHash, str" returntype="System.Byte[]" />
+        <method name="VerifyHash(System.Byte[], System.String, System.Byte[])" argnames="rgbHash, str, rgbSignature" returntype="System.Boolean" />
+        <method name="Encrypt(System.Byte[], System.Boolean)" argnames="rgb, fOAEP" returntype="System.Byte[]" />
+        <method name="Decrypt(System.Byte[], System.Boolean)" argnames="rgb, fOAEP" returntype="System.Byte[]" />
+    </class>
+    <class name="RSAOAEPKeyExchangeDeformatter" namespace="System.Security.Cryptography">
+        <constructor name="RSAOAEPKeyExchangeDeformatter()" argnames="" />
+        <constructor name="RSAOAEPKeyExchangeDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <property name="Parameters" propertytype="System.String" />
+        <method name="DecryptKeyExchange(System.Byte[])" argnames="rgbData" returntype="System.Byte[]" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="RSAOAEPKeyExchangeFormatter" namespace="System.Security.Cryptography">
+        <constructor name="RSAOAEPKeyExchangeFormatter()" argnames="" />
+        <constructor name="RSAOAEPKeyExchangeFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <property name="Parameter" propertytype="System.Byte[]" />
+        <property name="Parameters" propertytype="System.String" />
+        <property name="Rng" propertytype="System.Security.Cryptography.RandomNumberGenerator" />
+        <method name="CreateKeyExchange(System.Byte[], System.Type)" argnames="rgbData, symAlgType" returntype="System.Byte[]" />
+        <method name="CreateKeyExchange(System.Byte[])" argnames="rgbData" returntype="System.Byte[]" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="RSAPKCS1KeyExchangeDeformatter" namespace="System.Security.Cryptography">
+        <constructor name="RSAPKCS1KeyExchangeDeformatter()" argnames="" />
+        <constructor name="RSAPKCS1KeyExchangeDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <property name="RNG" propertytype="System.Security.Cryptography.RandomNumberGenerator" />
+        <property name="Parameters" propertytype="System.String" />
+        <method name="DecryptKeyExchange(System.Byte[])" argnames="rgbIn" returntype="System.Byte[]" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="RSAPKCS1KeyExchangeFormatter" namespace="System.Security.Cryptography">
+        <constructor name="RSAPKCS1KeyExchangeFormatter()" argnames="" />
+        <constructor name="RSAPKCS1KeyExchangeFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <property name="Parameters" propertytype="System.String" />
+        <property name="Rng" propertytype="System.Security.Cryptography.RandomNumberGenerator" />
+        <method name="CreateKeyExchange(System.Byte[], System.Type)" argnames="rgbData, symAlgType" returntype="System.Byte[]" />
+        <method name="CreateKeyExchange(System.Byte[])" argnames="rgbData" returntype="System.Byte[]" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="RSAPKCS1SignatureDeformatter" namespace="System.Security.Cryptography">
+        <constructor name="RSAPKCS1SignatureDeformatter()" argnames="" />
+        <constructor name="RSAPKCS1SignatureDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <method name="VerifySignature(System.Byte[], System.Byte[])" argnames="rgbHash, rgbSignature" returntype="System.Boolean" />
+        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="RSAPKCS1SignatureFormatter" namespace="System.Security.Cryptography">
+        <constructor name="RSAPKCS1SignatureFormatter()" argnames="" />
+        <constructor name="RSAPKCS1SignatureFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" />
+        <method name="CreateSignature(System.Byte[])" argnames="rgbHash" returntype="System.Byte[]" />
+        <method name="SetHashAlgorithm(System.String)" argnames="strName" returntype="System.Void" />
+        <method name="SetKey(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Void" />
+    </class>
+    <class name="Rijndael" namespace="System.Security.Cryptography">
+        <constructor name="Rijndael()" argnames="" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.Rijndael" />
+        <method name="Create(System.String)" argnames="algName" returntype="System.Security.Cryptography.Rijndael" />
+    </class>
+    <class name="RijndaelManaged" namespace="System.Security.Cryptography">
+        <constructor name="RijndaelManaged()" argnames="" />
+        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
+        <method name="GenerateIV()" argnames="" returntype="System.Void" />
+        <method name="GenerateKey()" argnames="" returntype="System.Void" />
+        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+    </class>
+    <class name="SHA1" namespace="System.Security.Cryptography">
+        <constructor name="SHA1()" argnames="" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA1" />
+        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA1" />
+    </class>
+    <class name="SHA1CryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="SHA1CryptoServiceProvider()" argnames="" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="SHA1Managed" namespace="System.Security.Cryptography">
+        <constructor name="SHA1Managed()" argnames="" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="SHA256" namespace="System.Security.Cryptography">
+        <constructor name="SHA256()" argnames="" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA256" />
+        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA256" />
+    </class>
+    <class name="SHA256Managed" namespace="System.Security.Cryptography">
+        <constructor name="SHA256Managed()" argnames="" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="SHA384" namespace="System.Security.Cryptography">
+        <constructor name="SHA384()" argnames="" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA384" />
+        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA384" />
+    </class>
+    <class name="SHA384Managed" namespace="System.Security.Cryptography">
+        <constructor name="SHA384Managed()" argnames="" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="SHA512" namespace="System.Security.Cryptography">
+        <constructor name="SHA512()" argnames="" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.SHA512" />
+        <method name="Create(System.String)" argnames="hashName" returntype="System.Security.Cryptography.SHA512" />
+    </class>
+    <class name="SHA512Managed" namespace="System.Security.Cryptography">
+        <constructor name="SHA512Managed()" argnames="" />
+        <method name="HashFinal()" argnames="" returntype="System.Byte[]" />
+        <method name="HashCore(System.Byte[], System.Int32, System.Int32)" argnames="rgb, ibStart, cbSize" returntype="System.Void" />
+        <method name="Initialize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="SignatureDescription" namespace="System.Security.Cryptography">
+        <constructor name="SignatureDescription()" argnames="" />
+        <constructor name="SignatureDescription(System.Security.SecurityElement)" argnames="el" />
+        <property name="KeyAlgorithm" propertytype="System.String" />
+        <property name="DigestAlgorithm" propertytype="System.String" />
+        <property name="FormatterAlgorithm" propertytype="System.String" />
+        <property name="DeformatterAlgorithm" propertytype="System.String" />
+        <method name="CreateDigest()" argnames="" returntype="System.Security.Cryptography.HashAlgorithm" />
+        <method name="CreateFormatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Security.Cryptography.AsymmetricSignatureFormatter" />
+        <method name="CreateDeformatter(System.Security.Cryptography.AsymmetricAlgorithm)" argnames="key" returntype="System.Security.Cryptography.AsymmetricSignatureDeformatter" />
+    </class>
+    <class name="TripleDES" namespace="System.Security.Cryptography">
+        <constructor name="TripleDES()" argnames="" />
+        <property name="Key" propertytype="System.Byte[]" />
+        <method name="Create()" argnames="" returntype="System.Security.Cryptography.TripleDES" />
+        <method name="Create(System.String)" argnames="str" returntype="System.Security.Cryptography.TripleDES" />
+        <method name="IsWeakKey(System.Byte[])" argnames="rgbKey" returntype="System.Boolean" />
+    </class>
+    <class name="TripleDESCryptoServiceProvider" namespace="System.Security.Cryptography">
+        <constructor name="TripleDESCryptoServiceProvider()" argnames="" />
+        <property name="RNG" propertytype="System.Security.Cryptography.RNGCryptoServiceProvider" />
+        <method name="GenerateIV()" argnames="" returntype="System.Void" />
+        <method name="GenerateKey()" argnames="" returntype="System.Void" />
+        <method name="CreateDecryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+        <method name="CreateEncryptor(System.Byte[], System.Byte[])" argnames="rgbKey, rgbIV" returntype="System.Security.Cryptography.ICryptoTransform" />
+    </class>
+    <interface name="ICryptoTransform" namespace="System.Security.Cryptography">
+        <property name="InputBlockSize" propertytype="System.Int32" />
+        <property name="OutputBlockSize" propertytype="System.Int32" />
+        <property name="CanTransformMultipleBlocks" propertytype="System.Boolean" />
+        <property name="CanReuseTransform" propertytype="System.Boolean" />
+        <method name="TransformFinalBlock(System.Byte[], System.Int32, System.Int32)" argnames="inputBuffer, inputOffset, inputCount" returntype="System.Byte[]" />
+        <method name="TransformBlock(System.Byte[], System.Int32, System.Int32, System.Byte[], System.Int32)" argnames="inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset" returntype="System.Int32" />
+    </interface>
+    <struct name="DSAParameters" namespace="System.Security.Cryptography">
+        <field name="P" />
+        <field name="Q" />
+        <field name="G" />
+        <field name="Y" />
+        <field name="J" />
+        <field name="X" />
+        <field name="Seed" />
+        <field name="Counter" />
+    </struct>
+    <struct name="RSAParameters" namespace="System.Security.Cryptography">
+        <field name="Exponent" />
+        <field name="Modulus" />
+        <field name="P" />
+        <field name="Q" />
+        <field name="DP" />
+        <field name="DQ" />
+        <field name="InverseQ" />
+        <field name="D" />
+    </struct>
+    <enum name="FromBase64TransformMode" namespace="System.Security.Cryptography">
+        <field name="IgnoreWhiteSpaces" />
+        <field name="DoNotIgnoreWhiteSpaces" />
+    </enum>
+    <enum name="CipherMode" namespace="System.Security.Cryptography">
+        <field name="CBC" />
+        <field name="ECB" />
+        <field name="OFB" />
+        <field name="CFB" />
+        <field name="CTS" />
+    </enum>
+    <enum name="PaddingMode" namespace="System.Security.Cryptography">
+        <field name="None" />
+        <field name="PKCS7" />
+        <field name="Zeros" />
+    </enum>
+    <enum name="CspProviderFlags" namespace="System.Security.Cryptography">
+        <field name="UseMachineKeyStore" />
+        <field name="UseDefaultKeyContainer" />
+    </enum>
+    <enum name="CryptoStreamMode" namespace="System.Security.Cryptography">
+        <field name="Read" />
+        <field name="Write" />
+    </enum>
+    <class name="Stream" namespace="System.IO">
+        <constructor name="Stream()" argnames="" />
+        <field name="Null" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanSeek" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="Position" propertytype="System.Int64" />
+        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
+        <method name="ReadByte()" argnames="" returntype="System.Int32" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
+        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
+        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, count, callback, state" returntype="System.IAsyncResult" />
+        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
+        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, count, callback, state" returntype="System.IAsyncResult" />
+        <method name="CreateWaitHandle()" argnames="" returntype="System.Threading.WaitHandle" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="BinaryReader" namespace="System.IO">
+        <constructor name="BinaryReader(System.IO.Stream)" argnames="input" />
+        <constructor name="BinaryReader(System.IO.Stream, System.Text.Encoding)" argnames="input, encoding" />
+        <property name="BaseStream" propertytype="System.IO.Stream" />
+        <method name="FillBuffer(System.Int32)" argnames="numBytes" returntype="System.Void" />
+        <method name="ReadBytes(System.Int32)" argnames="count" returntype="System.Byte[]" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
+        <method name="ReadChars(System.Int32)" argnames="count" returntype="System.Char[]" />
+        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
+        <method name="ReadString()" argnames="" returntype="System.String" />
+        <method name="ReadDecimal()" argnames="" returntype="System.Decimal" />
+        <method name="ReadDouble()" argnames="" returntype="System.Double" />
+        <method name="ReadSingle()" argnames="" returntype="System.Single" />
+        <method name="ReadUInt64()" argnames="" returntype="System.UInt64" />
+        <method name="ReadInt64()" argnames="" returntype="System.Int64" />
+        <method name="ReadUInt32()" argnames="" returntype="System.UInt32" />
+        <method name="ReadInt32()" argnames="" returntype="System.Int32" />
+        <method name="ReadUInt16()" argnames="" returntype="System.UInt16" />
+        <method name="ReadInt16()" argnames="" returntype="System.Int16" />
+        <method name="ReadChar()" argnames="" returntype="System.Char" />
+        <method name="ReadSByte()" argnames="" returntype="System.SByte" />
+        <method name="ReadByte()" argnames="" returntype="System.Byte" />
+        <method name="ReadBoolean()" argnames="" returntype="System.Boolean" />
+        <method name="Read()" argnames="" returntype="System.Int32" />
+        <method name="PeekChar()" argnames="" returntype="System.Int32" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Read7BitEncodedInt()" argnames="" returntype="System.Int32" />
+    </class>
+    <class name="BinaryWriter" namespace="System.IO">
+        <constructor name="BinaryWriter()" argnames="" />
+        <constructor name="BinaryWriter(System.IO.Stream)" argnames="output" />
+        <constructor name="BinaryWriter(System.IO.Stream, System.Text.Encoding)" argnames="output, encoding" />
+        <field name="OutStream" />
+        <field name="Null" />
+        <property name="BaseStream" propertytype="System.IO.Stream" />
+        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt64)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt32)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt16)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Int16)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Decimal)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="chars, index, count" returntype="System.Void" />
+        <method name="Write(System.Char[])" argnames="chars" returntype="System.Void" />
+        <method name="Write(System.Char)" argnames="ch" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="Write(System.Byte[])" argnames="buffer" returntype="System.Void" />
+        <method name="Write(System.SByte)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Byte)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int32, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Write7BitEncodedInt(System.Int32)" argnames="value" returntype="System.Void" />
+    </class>
+    <class name="BufferedStream" namespace="System.IO">
+        <constructor name="BufferedStream(System.IO.Stream)" argnames="stream" />
+        <constructor name="BufferedStream(System.IO.Stream, System.Int32)" argnames="stream, bufferSize" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="CanSeek" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="Position" propertytype="System.Int64" />
+        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Void" />
+        <method name="ReadByte()" argnames="" returntype="System.Int32" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Int32" />
+        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="Directory" namespace="System.IO">
+        <method name="GetParent(System.String)" argnames="path" returntype="System.IO.DirectoryInfo" />
+        <method name="CreateDirectory(System.String)" argnames="path" returntype="System.IO.DirectoryInfo" />
+        <method name="Exists(System.String)" argnames="path" returntype="System.Boolean" />
+        <method name="SetCreationTime(System.String, System.DateTime)" argnames="path, creationTime" returntype="System.Void" />
+        <method name="GetCreationTime(System.String)" argnames="path" returntype="System.DateTime" />
+        <method name="SetLastWriteTime(System.String, System.DateTime)" argnames="path, lastWriteTime" returntype="System.Void" />
+        <method name="GetLastWriteTime(System.String)" argnames="path" returntype="System.DateTime" />
+        <method name="SetLastAccessTime(System.String, System.DateTime)" argnames="path, lastAccessTime" returntype="System.Void" />
+        <method name="GetLastAccessTime(System.String)" argnames="path" returntype="System.DateTime" />
+        <method name="GetFiles(System.String)" argnames="path" returntype="System.String[]" />
+        <method name="GetFiles(System.String, System.String)" argnames="path, searchPattern" returntype="System.String[]" />
+        <method name="GetDirectories(System.String)" argnames="path" returntype="System.String[]" />
+        <method name="GetDirectories(System.String, System.String)" argnames="path, searchPattern" returntype="System.String[]" />
+        <method name="GetFileSystemEntries(System.String)" argnames="path" returntype="System.String[]" />
+        <method name="GetFileSystemEntries(System.String, System.String)" argnames="path, searchPattern" returntype="System.String[]" />
+        <method name="GetLogicalDrives()" argnames="" returntype="System.String[]" />
+        <method name="GetDirectoryRoot(System.String)" argnames="path" returntype="System.String" />
+        <method name="GetCurrentDirectory()" argnames="" returntype="System.String" />
+        <method name="SetCurrentDirectory(System.String)" argnames="path" returntype="System.Void" />
+        <method name="Move(System.String, System.String)" argnames="sourceDirName, destDirName" returntype="System.Void" />
+        <method name="Delete(System.String)" argnames="path" returntype="System.Void" />
+        <method name="Delete(System.String, System.Boolean)" argnames="path, recursive" returntype="System.Void" />
+    </class>
+    <class name="FileSystemInfo" namespace="System.IO">
+        <constructor name="FileSystemInfo()" argnames="" />
+        <field name="FullPath" />
+        <field name="OriginalPath" />
+        <property name="FullName" propertytype="System.String" />
+        <property name="Extension" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Exists" propertytype="System.Boolean" />
+        <property name="CreationTime" propertytype="System.DateTime" />
+        <property name="LastAccessTime" propertytype="System.DateTime" />
+        <property name="LastWriteTime" propertytype="System.DateTime" />
+        <property name="Attributes" propertytype="System.IO.FileAttributes" />
+        <method name="Delete()" argnames="" returntype="System.Void" />
+        <method name="Refresh()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="DirectoryInfo" namespace="System.IO">
+        <constructor name="DirectoryInfo(System.String)" argnames="path" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Parent" propertytype="System.IO.DirectoryInfo" />
+        <property name="Exists" propertytype="System.Boolean" />
+        <property name="Root" propertytype="System.IO.DirectoryInfo" />
+        <method name="Delete()" argnames="" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="CreateSubdirectory(System.String)" argnames="path" returntype="System.IO.DirectoryInfo" />
+        <method name="Create()" argnames="" returntype="System.Void" />
+        <method name="GetFiles(System.String)" argnames="searchPattern" returntype="System.IO.FileInfo[]" />
+        <method name="GetFiles()" argnames="" returntype="System.IO.FileInfo[]" />
+        <method name="GetDirectories()" argnames="" returntype="System.IO.DirectoryInfo[]" />
+        <method name="GetFileSystemInfos(System.String)" argnames="searchPattern" returntype="System.IO.FileSystemInfo[]" />
+        <method name="GetFileSystemInfos()" argnames="" returntype="System.IO.FileSystemInfo[]" />
+        <method name="GetDirectories(System.String)" argnames="searchPattern" returntype="System.IO.DirectoryInfo[]" />
+        <method name="MoveTo(System.String)" argnames="destDirName" returntype="System.Void" />
+        <method name="Delete(System.Boolean)" argnames="recursive" returntype="System.Void" />
+    </class>
+    <class name="IOException" namespace="System.IO">
+        <constructor name="IOException()" argnames="" />
+        <constructor name="IOException(System.String)" argnames="message" />
+        <constructor name="IOException(System.String, System.Int32)" argnames="message, hresult" />
+        <constructor name="IOException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="IOException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="DirectoryNotFoundException" namespace="System.IO">
+        <constructor name="DirectoryNotFoundException()" argnames="" />
+        <constructor name="DirectoryNotFoundException(System.String)" argnames="message" />
+        <constructor name="DirectoryNotFoundException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="DirectoryNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="EndOfStreamException" namespace="System.IO">
+        <constructor name="EndOfStreamException()" argnames="" />
+        <constructor name="EndOfStreamException(System.String)" argnames="message" />
+        <constructor name="EndOfStreamException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="EndOfStreamException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="File" namespace="System.IO">
+        <method name="OpenText(System.String)" argnames="path" returntype="System.IO.StreamReader" />
+        <method name="CreateText(System.String)" argnames="path" returntype="System.IO.StreamWriter" />
+        <method name="AppendText(System.String)" argnames="path" returntype="System.IO.StreamWriter" />
+        <method name="Copy(System.String, System.String)" argnames="sourceFileName, destFileName" returntype="System.Void" />
+        <method name="Copy(System.String, System.String, System.Boolean)" argnames="sourceFileName, destFileName, overwrite" returntype="System.Void" />
+        <method name="Create(System.String)" argnames="path" returntype="System.IO.FileStream" />
+        <method name="Create(System.String, System.Int32)" argnames="path, bufferSize" returntype="System.IO.FileStream" />
+        <method name="Delete(System.String)" argnames="path" returntype="System.Void" />
+        <method name="Exists(System.String)" argnames="path" returntype="System.Boolean" />
+        <method name="Open(System.String, System.IO.FileMode)" argnames="path, mode" returntype="System.IO.FileStream" />
+        <method name="Open(System.String, System.IO.FileMode, System.IO.FileAccess)" argnames="path, mode, access" returntype="System.IO.FileStream" />
+        <method name="Open(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="path, mode, access, share" returntype="System.IO.FileStream" />
+        <method name="SetCreationTime(System.String, System.DateTime)" argnames="path, creationTime" returntype="System.Void" />
+        <method name="GetCreationTime(System.String)" argnames="path" returntype="System.DateTime" />
+        <method name="SetLastAccessTime(System.String, System.DateTime)" argnames="path, lastAccessTime" returntype="System.Void" />
+        <method name="GetLastAccessTime(System.String)" argnames="path" returntype="System.DateTime" />
+        <method name="SetLastWriteTime(System.String, System.DateTime)" argnames="path, lastWriteTime" returntype="System.Void" />
+        <method name="GetLastWriteTime(System.String)" argnames="path" returntype="System.DateTime" />
+        <method name="GetAttributes(System.String)" argnames="path" returntype="System.IO.FileAttributes" />
+        <method name="SetAttributes(System.String, System.IO.FileAttributes)" argnames="path, fileAttributes" returntype="System.Void" />
+        <method name="OpenRead(System.String)" argnames="path" returntype="System.IO.FileStream" />
+        <method name="OpenWrite(System.String)" argnames="path" returntype="System.IO.FileStream" />
+        <method name="Move(System.String, System.String)" argnames="sourceFileName, destFileName" returntype="System.Void" />
+    </class>
+    <class name="FileInfo" namespace="System.IO">
+        <constructor name="FileInfo(System.String)" argnames="fileName" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="DirectoryName" propertytype="System.String" />
+        <property name="Directory" propertytype="System.IO.DirectoryInfo" />
+        <property name="Exists" propertytype="System.Boolean" />
+        <method name="Delete()" argnames="" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="OpenText()" argnames="" returntype="System.IO.StreamReader" />
+        <method name="CreateText()" argnames="" returntype="System.IO.StreamWriter" />
+        <method name="AppendText()" argnames="" returntype="System.IO.StreamWriter" />
+        <method name="CopyTo(System.String)" argnames="destFileName" returntype="System.IO.FileInfo" />
+        <method name="Create()" argnames="" returntype="System.IO.FileStream" />
+        <method name="CopyTo(System.String, System.Boolean)" argnames="destFileName, overwrite" returntype="System.IO.FileInfo" />
+        <method name="Open(System.IO.FileMode)" argnames="mode" returntype="System.IO.FileStream" />
+        <method name="Open(System.IO.FileMode, System.IO.FileAccess)" argnames="mode, access" returntype="System.IO.FileStream" />
+        <method name="Open(System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="mode, access, share" returntype="System.IO.FileStream" />
+        <method name="OpenRead()" argnames="" returntype="System.IO.FileStream" />
+        <method name="OpenWrite()" argnames="" returntype="System.IO.FileStream" />
+        <method name="MoveTo(System.String)" argnames="destFileName" returntype="System.Void" />
+    </class>
+    <class name="FileLoadException" namespace="System.IO">
+        <constructor name="FileLoadException()" argnames="" />
+        <constructor name="FileLoadException(System.String)" argnames="message" />
+        <constructor name="FileLoadException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="FileLoadException(System.String, System.String)" argnames="message, fileName" />
+        <constructor name="FileLoadException(System.String, System.String, System.Exception)" argnames="message, fileName, inner" />
+        <constructor name="FileLoadException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" propertytype="System.String" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="FusionLog" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="FileNotFoundException" namespace="System.IO">
+        <constructor name="FileNotFoundException()" argnames="" />
+        <constructor name="FileNotFoundException(System.String)" argnames="message" />
+        <constructor name="FileNotFoundException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="FileNotFoundException(System.String, System.String)" argnames="message, fileName" />
+        <constructor name="FileNotFoundException(System.String, System.String, System.Exception)" argnames="message, fileName, innerException" />
+        <constructor name="FileNotFoundException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="Message" propertytype="System.String" />
+        <property name="FileName" propertytype="System.String" />
+        <property name="FusionLog" propertytype="System.String" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="FileStream" namespace="System.IO">
+        <constructor name="FileStream(System.String, System.IO.FileMode)" argnames="path, mode" />
+        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess)" argnames="path, mode, access" />
+        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="path, mode, access, share" />
+        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32)" argnames="path, mode, access, share, bufferSize" />
+        <constructor name="FileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32, System.Boolean)" argnames="path, mode, access, share, bufferSize, useAsync" />
+        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess)" argnames="handle, access" />
+        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess, System.Boolean)" argnames="handle, access, ownsHandle" />
+        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess, System.Boolean, System.Int32)" argnames="handle, access, ownsHandle, bufferSize" />
+        <constructor name="FileStream(System.IntPtr, System.IO.FileAccess, System.Boolean, System.Int32, System.Boolean)" argnames="handle, access, ownsHandle, bufferSize, isAsync" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="CanSeek" propertytype="System.Boolean" />
+        <property name="IsAsync" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="Name" propertytype="System.String" />
+        <property name="NameInternal" propertytype="System.String" />
+        <property name="Position" propertytype="System.Int64" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <method name="Unlock(System.Int64, System.Int64)" argnames="position, length" returntype="System.Void" />
+        <method name="Lock(System.Int64, System.Int64)" argnames="position, length" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Void" />
+        <method name="ReadByte()" argnames="" returntype="System.Int32" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="array, offset, count" returntype="System.Int32" />
+        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
+        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="array, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
+        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
+        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="array, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="MemoryStream" namespace="System.IO">
+        <constructor name="MemoryStream()" argnames="" />
+        <constructor name="MemoryStream(System.Int32)" argnames="capacity" />
+        <constructor name="MemoryStream(System.Byte[])" argnames="buffer" />
+        <constructor name="MemoryStream(System.Byte[], System.Boolean)" argnames="buffer, writable" />
+        <constructor name="MemoryStream(System.Byte[], System.Int32, System.Int32)" argnames="buffer, index, count" />
+        <constructor name="MemoryStream(System.Byte[], System.Int32, System.Int32, System.Boolean)" argnames="buffer, index, count, writable" />
+        <constructor name="MemoryStream(System.Byte[], System.Int32, System.Int32, System.Boolean, System.Boolean)" argnames="buffer, index, count, writable, publiclyVisible" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanSeek" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="Capacity" propertytype="System.Int32" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="Position" propertytype="System.Int64" />
+        <method name="WriteTo(System.IO.Stream)" argnames="stream" returntype="System.Void" />
+        <method name="ToArray()" argnames="" returntype="System.Byte[]" />
+        <method name="GetBuffer()" argnames="" returntype="System.Byte[]" />
+        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
+        <method name="ReadByte()" argnames="" returntype="System.Int32" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
+        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, loc" returntype="System.Int64" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="Path" namespace="System.IO">
+        <field name="DirectorySeparatorChar" />
+        <field name="AltDirectorySeparatorChar" />
+        <field name="VolumeSeparatorChar" />
+        <field name="InvalidPathChars" />
+        <field name="PathSeparator" />
+        <method name="ChangeExtension(System.String, System.String)" argnames="path, extension" returntype="System.String" />
+        <method name="GetDirectoryName(System.String)" argnames="path" returntype="System.String" />
+        <method name="GetExtension(System.String)" argnames="path" returntype="System.String" />
+        <method name="GetFullPath(System.String)" argnames="path" returntype="System.String" />
+        <method name="GetFileName(System.String)" argnames="path" returntype="System.String" />
+        <method name="GetFileNameWithoutExtension(System.String)" argnames="path" returntype="System.String" />
+        <method name="GetPathRoot(System.String)" argnames="path" returntype="System.String" />
+        <method name="GetTempPath()" argnames="" returntype="System.String" />
+        <method name="GetTempFileName()" argnames="" returntype="System.String" />
+        <method name="HasExtension(System.String)" argnames="path" returntype="System.Boolean" />
+        <method name="IsPathRooted(System.String)" argnames="path" returntype="System.Boolean" />
+        <method name="Combine(System.String, System.String)" argnames="path1, path2" returntype="System.String" />
+    </class>
+    <class name="PathTooLongException" namespace="System.IO">
+        <constructor name="PathTooLongException()" argnames="" />
+        <constructor name="PathTooLongException(System.String)" argnames="message" />
+        <constructor name="PathTooLongException(System.String, System.Exception)" argnames="message, innerException" />
+        <constructor name="PathTooLongException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="TextReader" namespace="System.IO">
+        <constructor name="TextReader()" argnames="" />
+        <field name="Null" />
+        <method name="ReadLine()" argnames="" returntype="System.String" />
+        <method name="ReadBlock(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
+        <method name="ReadToEnd()" argnames="" returntype="System.String" />
+        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
+        <method name="Read()" argnames="" returntype="System.Int32" />
+        <method name="Peek()" argnames="" returntype="System.Int32" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Synchronized(System.IO.TextReader)" argnames="reader" returntype="System.IO.TextReader" />
+    </class>
+    <class name="StreamReader" namespace="System.IO">
+        <constructor name="StreamReader(System.IO.Stream)" argnames="stream" />
+        <constructor name="StreamReader(System.IO.Stream, System.Boolean)" argnames="stream, detectEncodingFromByteOrderMarks" />
+        <constructor name="StreamReader(System.IO.Stream, System.Text.Encoding)" argnames="stream, encoding" />
+        <constructor name="StreamReader(System.IO.Stream, System.Text.Encoding, System.Boolean)" argnames="stream, encoding, detectEncodingFromByteOrderMarks" />
+        <constructor name="StreamReader(System.IO.Stream, System.Text.Encoding, System.Boolean, System.Int32)" argnames="stream, encoding, detectEncodingFromByteOrderMarks, bufferSize" />
+        <constructor name="StreamReader(System.String)" argnames="path" />
+        <constructor name="StreamReader(System.String, System.Boolean)" argnames="path, detectEncodingFromByteOrderMarks" />
+        <constructor name="StreamReader(System.String, System.Text.Encoding)" argnames="path, encoding" />
+        <constructor name="StreamReader(System.String, System.Text.Encoding, System.Boolean)" argnames="path, encoding, detectEncodingFromByteOrderMarks" />
+        <constructor name="StreamReader(System.String, System.Text.Encoding, System.Boolean, System.Int32)" argnames="path, encoding, detectEncodingFromByteOrderMarks, bufferSize" />
+        <field name="Null" />
+        <property name="CurrentEncoding" propertytype="System.Text.Encoding" />
+        <property name="BaseStream" propertytype="System.IO.Stream" />
+        <method name="ReadLine()" argnames="" returntype="System.String" />
+        <method name="ReadToEnd()" argnames="" returntype="System.String" />
+        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
+        <method name="Read()" argnames="" returntype="System.Int32" />
+        <method name="Peek()" argnames="" returntype="System.Int32" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="DiscardBufferedData()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="TextWriter" namespace="System.IO">
+        <constructor name="TextWriter()" argnames="" />
+        <constructor name="TextWriter(System.IFormatProvider)" argnames="formatProvider" />
+        <field name="CoreNewLine" />
+        <field name="Null" />
+        <property name="FormatProvider" propertytype="System.IFormatProvider" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <property name="NewLine" propertytype="System.String" />
+        <method name="WriteLine(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
+        <method name="WriteLine(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
+        <method name="WriteLine(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.String)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Decimal)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Double)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Single)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.UInt64)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.UInt32)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="WriteLine(System.Char[])" argnames="buffer" returntype="System.Void" />
+        <method name="WriteLine(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="WriteLine()" argnames="" returntype="System.Void" />
+        <method name="Write(System.String, System.Object[])" argnames="format, arg" returntype="System.Void" />
+        <method name="Write(System.String, System.Object, System.Object, System.Object)" argnames="format, arg0, arg1, arg2" returntype="System.Void" />
+        <method name="Write(System.String, System.Object, System.Object)" argnames="format, arg0, arg1" returntype="System.Void" />
+        <method name="Write(System.String, System.Object)" argnames="format, arg0" returntype="System.Void" />
+        <method name="Write(System.Object)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Decimal)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Double)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Single)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt64)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.UInt32)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Int32)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Boolean)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
+        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Synchronized(System.IO.TextWriter)" argnames="writer" returntype="System.IO.TextWriter" />
+    </class>
+    <class name="StreamWriter" namespace="System.IO">
+        <constructor name="StreamWriter(System.IO.Stream)" argnames="stream" />
+        <constructor name="StreamWriter(System.IO.Stream, System.Text.Encoding)" argnames="stream, encoding" />
+        <constructor name="StreamWriter(System.IO.Stream, System.Text.Encoding, System.Int32)" argnames="stream, encoding, bufferSize" />
+        <constructor name="StreamWriter(System.String)" argnames="path" />
+        <constructor name="StreamWriter(System.String, System.Boolean)" argnames="path, append" />
+        <constructor name="StreamWriter(System.String, System.Boolean, System.Text.Encoding)" argnames="path, append, encoding" />
+        <constructor name="StreamWriter(System.String, System.Boolean, System.Text.Encoding, System.Int32)" argnames="path, append, encoding, bufferSize" />
+        <field name="Null" />
+        <property name="AutoFlush" propertytype="System.Boolean" />
+        <property name="BaseStream" propertytype="System.IO.Stream" />
+        <property name="Closable" propertytype="System.Boolean" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="Write(System.Char[])" argnames="buffer" returntype="System.Void" />
+        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="StringReader" namespace="System.IO">
+        <constructor name="StringReader(System.String)" argnames="s" />
+        <method name="ReadLine()" argnames="" returntype="System.String" />
+        <method name="ReadToEnd()" argnames="" returntype="System.String" />
+        <method name="Read(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Int32" />
+        <method name="Read()" argnames="" returntype="System.Int32" />
+        <method name="Peek()" argnames="" returntype="System.Int32" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="StringWriter" namespace="System.IO">
+        <constructor name="StringWriter()" argnames="" />
+        <constructor name="StringWriter(System.IFormatProvider)" argnames="formatProvider" />
+        <constructor name="StringWriter(System.Text.StringBuilder)" argnames="sb" />
+        <constructor name="StringWriter(System.Text.StringBuilder, System.IFormatProvider)" argnames="sb, formatProvider" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <method name="GetStringBuilder()" argnames="" returntype="System.Text.StringBuilder" />
+        <method name="Write(System.String)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Char[], System.Int32, System.Int32)" argnames="buffer, index, count" returntype="System.Void" />
+        <method name="Write(System.Char)" argnames="value" returntype="System.Void" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <enum name="FileAccess" namespace="System.IO">
+        <field name="Read" />
+        <field name="Write" />
+        <field name="ReadWrite" />
+    </enum>
+    <enum name="FileMode" namespace="System.IO">
+        <field name="CreateNew" />
+        <field name="Create" />
+        <field name="Open" />
+        <field name="OpenOrCreate" />
+        <field name="Truncate" />
+        <field name="Append" />
+    </enum>
+    <enum name="FileShare" namespace="System.IO">
+        <field name="None" />
+        <field name="Read" />
+        <field name="Write" />
+        <field name="ReadWrite" />
+        <field name="Inheritable" />
+    </enum>
+    <enum name="FileAttributes" namespace="System.IO">
+        <field name="ReadOnly" />
+        <field name="Hidden" />
+        <field name="System" />
+        <field name="Directory" />
+        <field name="Archive" />
+        <field name="Device" />
+        <field name="Normal" />
+        <field name="Temporary" />
+        <field name="SparseFile" />
+        <field name="ReparsePoint" />
+        <field name="Compressed" />
+        <field name="Offline" />
+        <field name="NotContentIndexed" />
+        <field name="Encrypted" />
+    </enum>
+    <enum name="SeekOrigin" namespace="System.IO">
+        <field name="Begin" />
+        <field name="Current" />
+        <field name="End" />
+    </enum>
+    <class name="AllMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="AllMembershipCondition()" argnames="" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="ApplicationDirectory" namespace="System.Security.Policy">
+        <constructor name="ApplicationDirectory(System.String)" argnames="name" />
+        <property name="Directory" propertytype="System.String" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="ApplicationDirectoryMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="ApplicationDirectoryMembershipCondition()" argnames="" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="CodeGroup" namespace="System.Security.Policy">
+        <constructor name="CodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Policy.PolicyStatement)" argnames="membershipCondition, policy" />
+        <property name="Children" propertytype="System.Collections.IList" />
+        <property name="MembershipCondition" propertytype="System.Security.Policy.IMembershipCondition" />
+        <property name="PolicyStatement" propertytype="System.Security.Policy.PolicyStatement" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Description" propertytype="System.String" />
+        <property name="PermissionSetName" propertytype="System.String" />
+        <property name="AttributeString" propertytype="System.String" />
+        <property name="MergeLogic" propertytype="System.String" />
+        <method name="ParseXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="CreateXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="element, level" returntype="System.Void" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
+        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
+        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="AddChild(System.Security.Policy.CodeGroup)" argnames="group" returntype="System.Void" />
+        <method name="RemoveChild(System.Security.Policy.CodeGroup)" argnames="group" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="Equals(System.Security.Policy.CodeGroup, System.Boolean)" argnames="cg, compareChildren" returntype="System.Boolean" />
+    </class>
+    <class name="Evidence" namespace="System.Security.Policy">
+        <constructor name="Evidence()" argnames="" />
+        <constructor name="Evidence(System.Security.Policy.Evidence)" argnames="evidence" />
+        <constructor name="Evidence(System.Object[], System.Object[])" argnames="hostEvidence, assemblyEvidence" />
+        <property name="Locked" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="AddHost(System.Object)" argnames="id" returntype="System.Void" />
+        <method name="AddAssembly(System.Object)" argnames="id" returntype="System.Void" />
+        <method name="Merge(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Void" />
+        <method name="GetHostEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+        <method name="GetAssemblyEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+    </class>
+    <class name="FileCodeGroup" namespace="System.Security.Policy">
+        <constructor name="FileCodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Permissions.FileIOPermissionAccess)" argnames="membershipCondition, access" />
+        <property name="MergeLogic" propertytype="System.String" />
+        <property name="PermissionSetName" propertytype="System.String" />
+        <property name="AttributeString" propertytype="System.String" />
+        <method name="ParseXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="CreateXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="element, level" returntype="System.Void" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
+        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
+        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+    </class>
+    <class name="FirstMatchCodeGroup" namespace="System.Security.Policy">
+        <constructor name="FirstMatchCodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Policy.PolicyStatement)" argnames="membershipCondition, policy" />
+        <property name="MergeLogic" propertytype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
+        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
+        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
+    </class>
+    <class name="Hash" namespace="System.Security.Policy">
+        <constructor name="Hash(System.Reflection.Assembly)" argnames="assembly" />
+        <property name="SHA1" propertytype="System.Byte[]" />
+        <property name="MD5" propertytype="System.Byte[]" />
+        <property name="HasBeenAccessed" propertytype="System.Boolean" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="GenerateHash(System.Security.Cryptography.HashAlgorithm)" argnames="hashAlg" returntype="System.Byte[]" />
+    </class>
+    <class name="HashMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="HashMembershipCondition(System.Security.Cryptography.HashAlgorithm, System.Byte[])" argnames="hashAlg, value" />
+        <property name="HashAlgorithm" propertytype="System.Security.Cryptography.HashAlgorithm" />
+        <property name="HashValue" propertytype="System.Byte[]" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="NetCodeGroup" namespace="System.Security.Policy">
+        <constructor name="NetCodeGroup(System.Security.Policy.IMembershipCondition)" argnames="membershipCondition" />
+        <property name="MergeLogic" propertytype="System.String" />
+        <property name="PermissionSetName" propertytype="System.String" />
+        <property name="AttributeString" propertytype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
+        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
+        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
+    </class>
+    <class name="PermissionRequestEvidence" namespace="System.Security.Policy">
+        <constructor name="PermissionRequestEvidence(System.Security.PermissionSet, System.Security.PermissionSet, System.Security.PermissionSet)" argnames="request, optional, denied" />
+        <property name="RequestedPermissions" propertytype="System.Security.PermissionSet" />
+        <property name="OptionalPermissions" propertytype="System.Security.PermissionSet" />
+        <property name="DeniedPermissions" propertytype="System.Security.PermissionSet" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.PermissionRequestEvidence" />
+    </class>
+    <class name="PolicyException" namespace="System.Security.Policy">
+        <constructor name="PolicyException()" argnames="" />
+        <constructor name="PolicyException(System.String)" argnames="message" />
+        <constructor name="PolicyException(System.String, System.Exception)" argnames="message, exception" />
+        <constructor name="PolicyException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="PolicyLevel" namespace="System.Security.Policy">
+        <property name="Label" propertytype="System.String" />
+        <property name="ConfigId" propertytype="System.Security.Util.ConfigId" />
+        <property name="ThrowOnLoadError" propertytype="System.Boolean" />
+        <property name="Loaded" propertytype="System.Boolean" />
+        <property name="Encoding" propertytype="System.Text.Encoding" />
+        <property name="StoreLocation" propertytype="System.String" />
+        <property name="RootCodeGroup" propertytype="System.Security.Policy.CodeGroup" />
+        <property name="NamedPermissionSets" propertytype="System.Collections.IList" />
+        <property name="FullTrustAssemblies" propertytype="System.Collections.IList" />
+        <method name="CreateAppDomainLevel()" argnames="" returntype="System.Security.Policy.PolicyLevel" />
+        <method name="AddFullTrustAssembly(System.Security.Policy.StrongName)" argnames="sn" returntype="System.Void" />
+        <method name="AddFullTrustAssembly(System.Security.Policy.StrongNameMembershipCondition)" argnames="snMC" returntype="System.Void" />
+        <method name="RemoveFullTrustAssembly(System.Security.Policy.StrongName)" argnames="sn" returntype="System.Void" />
+        <method name="RemoveFullTrustAssembly(System.Security.Policy.StrongNameMembershipCondition)" argnames="snMC" returntype="System.Void" />
+        <method name="Recover()" argnames="" returntype="System.Void" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="AddNamedPermissionSet(System.Security.NamedPermissionSet)" argnames="permSet" returntype="System.Void" />
+        <method name="RemoveNamedPermissionSet(System.Security.NamedPermissionSet)" argnames="permSet" returntype="System.Security.NamedPermissionSet" />
+        <method name="RemoveNamedPermissionSet(System.String)" argnames="name" returntype="System.Security.NamedPermissionSet" />
+        <method name="ChangeNamedPermissionSet(System.String, System.Security.PermissionSet)" argnames="name, pSet" returntype="System.Security.NamedPermissionSet" />
+        <method name="GetNamedPermissionSet(System.String)" argnames="name" returntype="System.Security.NamedPermissionSet" />
+        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
+        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+    </class>
+    <class name="PolicyStatement" namespace="System.Security.Policy">
+        <constructor name="PolicyStatement(System.Security.PermissionSet)" argnames="permSet" />
+        <constructor name="PolicyStatement(System.Security.PermissionSet, System.Security.Policy.PolicyStatementAttribute)" argnames="permSet, attributes" />
+        <property name="PermissionSet" propertytype="System.Security.PermissionSet" />
+        <property name="Attributes" propertytype="System.Security.Policy.PolicyStatementAttribute" />
+        <property name="AttributeString" propertytype="System.String" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="et, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="et" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.PolicyStatement" />
+    </class>
+    <class name="Publisher" namespace="System.Security.Policy">
+        <constructor name="Publisher(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="cert" />
+        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="PublisherMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="PublisherMembershipCondition(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="certificate" />
+        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="Site" namespace="System.Security.Policy">
+        <constructor name="Site(System.String)" argnames="name" />
+        <property name="Name" propertytype="System.String" />
+        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="CreateFromUrl(System.String)" argnames="url" returntype="System.Security.Policy.Site" />
+        <method name="Copy()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="SiteMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="SiteMembershipCondition(System.String)" argnames="site" />
+        <property name="Site" propertytype="System.String" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="StrongName" namespace="System.Security.Policy">
+        <constructor name="StrongName(System.Security.Permissions.StrongNamePublicKeyBlob, System.String, System.Version)" argnames="blob, name, version" />
+        <property name="PublicKey" propertytype="System.Security.Permissions.StrongNamePublicKeyBlob" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Version" propertytype="System.Version" />
+        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="StrongNameMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="StrongNameMembershipCondition(System.Security.Permissions.StrongNamePublicKeyBlob, System.String, System.Version)" argnames="blob, name, version" />
+        <property name="PublicKey" propertytype="System.Security.Permissions.StrongNamePublicKeyBlob" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Version" propertytype="System.Version" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="UnionCodeGroup" namespace="System.Security.Policy">
+        <constructor name="UnionCodeGroup(System.Security.Policy.IMembershipCondition, System.Security.Policy.PolicyStatement)" argnames="membershipCondition, policy" />
+        <property name="MergeLogic" propertytype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.CodeGroup" />
+        <method name="ResolveMatchingCodeGroups(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.CodeGroup" />
+        <method name="Resolve(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.Policy.PolicyStatement" />
+    </class>
+    <class name="Url" namespace="System.Security.Policy">
+        <constructor name="Url(System.String)" argnames="name" />
+        <property name="Value" propertytype="System.String" />
+        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="UrlMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="UrlMembershipCondition(System.String)" argnames="url" />
+        <property name="Url" propertytype="System.String" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="Zone" namespace="System.Security.Policy">
+        <constructor name="Zone(System.Security.SecurityZone)" argnames="zone" />
+        <property name="SecurityZone" propertytype="System.Security.SecurityZone" />
+        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="CreateFromUrl(System.String)" argnames="url" returntype="System.Security.Policy.Zone" />
+        <method name="Copy()" argnames="" returntype="System.Object" />
+    </class>
+    <class name="ZoneMembershipCondition" namespace="System.Security.Policy">
+        <constructor name="ZoneMembershipCondition(System.Security.SecurityZone)" argnames="zone" />
+        <property name="SecurityZone" propertytype="System.Security.SecurityZone" />
+        <method name="FromXml(System.Security.SecurityElement, System.Security.Policy.PolicyLevel)" argnames="e, level" returntype="System.Void" />
+        <method name="ToXml(System.Security.Policy.PolicyLevel)" argnames="level" returntype="System.Security.SecurityElement" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <interface name="IMembershipCondition" namespace="System.Security.Policy">
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Copy()" argnames="" returntype="System.Security.Policy.IMembershipCondition" />
+        <method name="Check(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Boolean" />
+    </interface>
+    <interface name="IIdentityPermissionFactory" namespace="System.Security.Policy">
+        <method name="CreateIdentityPermission(System.Security.Policy.Evidence)" argnames="evidence" returntype="System.Security.IPermission" />
+    </interface>
+    <enum name="PolicyStatementAttribute" namespace="System.Security.Policy">
+        <field name="Nothing" />
+        <field name="Exclusive" />
+        <field name="LevelFinal" />
+        <field name="All" />
+    </enum>
+    <class name="GenericIdentity" namespace="System.Security.Principal">
+        <constructor name="GenericIdentity(System.String)" argnames="name" />
+        <constructor name="GenericIdentity(System.String, System.String)" argnames="name, type" />
+        <property name="Name" propertytype="System.String" />
+        <property name="AuthenticationType" propertytype="System.String" />
+        <property name="IsAuthenticated" propertytype="System.Boolean" />
+    </class>
+    <class name="GenericPrincipal" namespace="System.Security.Principal">
+        <constructor name="GenericPrincipal(System.Security.Principal.IIdentity, System.String[])" argnames="identity, roles" />
+        <property name="Identity" propertytype="System.Security.Principal.IIdentity" />
+        <method name="IsInRole(System.String)" argnames="role" returntype="System.Boolean" />
+    </class>
+    <class name="WindowsIdentity" namespace="System.Security.Principal">
+        <constructor name="WindowsIdentity(System.IntPtr)" argnames="userToken" />
+        <constructor name="WindowsIdentity(System.IntPtr, System.String)" argnames="userToken, type" />
+        <constructor name="WindowsIdentity(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType)" argnames="userToken, type, acctType" />
+        <constructor name="WindowsIdentity(System.IntPtr, System.String, System.Security.Principal.WindowsAccountType, System.Boolean)" argnames="userToken, type, acctType, isAuthenticated" />
+        <property name="Name" propertytype="System.String" />
+        <property name="AuthenticationType" propertytype="System.String" />
+        <property name="IsAuthenticated" propertytype="System.Boolean" />
+        <property name="Token" propertytype="System.IntPtr" />
+        <property name="IsGuest" propertytype="System.Boolean" />
+        <property name="IsSystem" propertytype="System.Boolean" />
+        <property name="IsAnonymous" propertytype="System.Boolean" />
+        <method name="Impersonate()" argnames="" returntype="System.Security.Principal.WindowsImpersonationContext" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="GetCurrent()" argnames="" returntype="System.Security.Principal.WindowsIdentity" />
+        <method name="GetAnonymous()" argnames="" returntype="System.Security.Principal.WindowsIdentity" />
+        <method name="Impersonate(System.IntPtr)" argnames="userToken" returntype="System.Security.Principal.WindowsImpersonationContext" />
+    </class>
+    <class name="WindowsImpersonationContext" namespace="System.Security.Principal">
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Undo()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="WindowsPrincipal" namespace="System.Security.Principal">
+        <constructor name="WindowsPrincipal(System.Security.Principal.WindowsIdentity)" argnames="ntIdentity" />
+        <property name="Identity" propertytype="System.Security.Principal.IIdentity" />
+        <method name="IsInRole(System.String)" argnames="role" returntype="System.Boolean" />
+        <method name="IsInRole(System.Security.Principal.WindowsBuiltInRole)" argnames="role" returntype="System.Boolean" />
+        <method name="IsInRole(System.Int32)" argnames="rid" returntype="System.Boolean" />
+    </class>
+    <interface name="IIdentity" namespace="System.Security.Principal">
+        <property name="Name" propertytype="System.String" />
+        <property name="AuthenticationType" propertytype="System.String" />
+        <property name="IsAuthenticated" propertytype="System.Boolean" />
+    </interface>
+    <interface name="IPrincipal" namespace="System.Security.Principal">
+        <property name="Identity" propertytype="System.Security.Principal.IIdentity" />
+        <method name="IsInRole(System.String)" argnames="role" returntype="System.Boolean" />
+    </interface>
+    <enum name="PrincipalPolicy" namespace="System.Security.Principal">
+        <field name="UnauthenticatedPrincipal" />
+        <field name="NoPrincipal" />
+        <field name="WindowsPrincipal" />
+    </enum>
+    <enum name="WindowsAccountType" namespace="System.Security.Principal">
+        <field name="Normal" />
+        <field name="Guest" />
+        <field name="System" />
+        <field name="Anonymous" />
+    </enum>
+    <enum name="WindowsBuiltInRole" namespace="System.Security.Principal">
+        <field name="Administrator" />
+        <field name="User" />
+        <field name="Guest" />
+        <field name="PowerUser" />
+        <field name="AccountOperator" />
+        <field name="SystemOperator" />
+        <field name="PrintOperator" />
+        <field name="BackupOperator" />
+        <field name="Replicator" />
+    </enum>
+    <class name="DispIdAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="DispIdAttribute(System.Int32)" argnames="dispId" />
+        <property name="Value" propertytype="System.Int32" />
+    </class>
+    <class name="InterfaceTypeAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType)" argnames="interfaceType" />
+        <constructor name="InterfaceTypeAttribute(System.Int16)" argnames="interfaceType" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.ComInterfaceType" />
+    </class>
+    <class name="ClassInterfaceAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ClassInterfaceAttribute(System.Runtime.InteropServices.ClassInterfaceType)" argnames="classInterfaceType" />
+        <constructor name="ClassInterfaceAttribute(System.Int16)" argnames="classInterfaceType" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.ClassInterfaceType" />
+    </class>
+    <class name="ComVisibleAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComVisibleAttribute(System.Boolean)" argnames="visibility" />
+        <property name="Value" propertytype="System.Boolean" />
+    </class>
+    <class name="LCIDConversionAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="LCIDConversionAttribute(System.Int32)" argnames="lcid" />
+        <property name="Value" propertytype="System.Int32" />
+    </class>
+    <class name="ComRegisterFunctionAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComRegisterFunctionAttribute()" argnames="" />
+    </class>
+    <class name="ComUnregisterFunctionAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComUnregisterFunctionAttribute()" argnames="" />
+    </class>
+    <class name="ProgIdAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ProgIdAttribute(System.String)" argnames="progId" />
+        <property name="Value" propertytype="System.String" />
+    </class>
+    <class name="ImportedFromTypeLibAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ImportedFromTypeLibAttribute(System.String)" argnames="tlbFile" />
+        <property name="Value" propertytype="System.String" />
+    </class>
+    <class name="IDispatchImplAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="IDispatchImplAttribute(System.Runtime.InteropServices.IDispatchImplType)" argnames="implType" />
+        <constructor name="IDispatchImplAttribute(System.Int16)" argnames="implType" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.IDispatchImplType" />
+    </class>
+    <class name="ComSourceInterfacesAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComSourceInterfacesAttribute(System.String)" argnames="sourceInterfaces" />
+        <constructor name="ComSourceInterfacesAttribute(System.Type)" argnames="sourceInterface" />
+        <constructor name="ComSourceInterfacesAttribute(System.Type, System.Type)" argnames="sourceInterface1, sourceInterface2" />
+        <constructor name="ComSourceInterfacesAttribute(System.Type, System.Type, System.Type)" argnames="sourceInterface1, sourceInterface2, sourceInterface3" />
+        <constructor name="ComSourceInterfacesAttribute(System.Type, System.Type, System.Type, System.Type)" argnames="sourceInterface1, sourceInterface2, sourceInterface3, sourceInterface4" />
+        <property name="Value" propertytype="System.String" />
+    </class>
+    <class name="ComConversionLossAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComConversionLossAttribute()" argnames="" />
+    </class>
+    <class name="TypeLibTypeAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="TypeLibTypeAttribute(System.Runtime.InteropServices.TypeLibTypeFlags)" argnames="flags" />
+        <constructor name="TypeLibTypeAttribute(System.Int16)" argnames="flags" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.TypeLibTypeFlags" />
+    </class>
+    <class name="TypeLibFuncAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="TypeLibFuncAttribute(System.Runtime.InteropServices.TypeLibFuncFlags)" argnames="flags" />
+        <constructor name="TypeLibFuncAttribute(System.Int16)" argnames="flags" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.TypeLibFuncFlags" />
+    </class>
+    <class name="TypeLibVarAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="TypeLibVarAttribute(System.Runtime.InteropServices.TypeLibVarFlags)" argnames="flags" />
+        <constructor name="TypeLibVarAttribute(System.Int16)" argnames="flags" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.TypeLibVarFlags" />
+    </class>
+    <class name="MarshalAsAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType)" argnames="unmanagedType" />
+        <constructor name="MarshalAsAttribute(System.Int16)" argnames="unmanagedType" />
+        <field name="SafeArraySubType" />
+        <field name="SafeArrayUserDefinedSubType" />
+        <field name="ArraySubType" />
+        <field name="SizeParamIndex" />
+        <field name="SizeConst" />
+        <field name="MarshalType" />
+        <field name="MarshalTypeRef" />
+        <field name="MarshalCookie" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.UnmanagedType" />
+    </class>
+    <class name="ComImportAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComImportAttribute()" argnames="" />
+    </class>
+    <class name="GuidAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="GuidAttribute(System.String)" argnames="guid" />
+        <property name="Value" propertytype="System.String" />
+    </class>
+    <class name="PreserveSigAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="PreserveSigAttribute()" argnames="" />
+    </class>
+    <class name="InAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="InAttribute()" argnames="" />
+    </class>
+    <class name="OutAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="OutAttribute()" argnames="" />
+    </class>
+    <class name="OptionalAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="OptionalAttribute()" argnames="" />
+    </class>
+    <class name="DllImportAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="DllImportAttribute(System.String)" argnames="dllName" />
+        <field name="EntryPoint" />
+        <field name="CharSet" />
+        <field name="SetLastError" />
+        <field name="ExactSpelling" />
+        <field name="PreserveSig" />
+        <field name="CallingConvention" />
+        <property name="Value" propertytype="System.String" />
+    </class>
+    <class name="StructLayoutAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind)" argnames="layoutKind" />
+        <constructor name="StructLayoutAttribute(System.Int16)" argnames="layoutKind" />
+        <field name="Pack" />
+        <field name="Size" />
+        <field name="CharSet" />
+        <property name="Value" propertytype="System.Runtime.InteropServices.LayoutKind" />
+    </class>
+    <class name="FieldOffsetAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="FieldOffsetAttribute(System.Int32)" argnames="offset" />
+        <property name="Value" propertytype="System.Int32" />
+    </class>
+    <class name="ComAliasNameAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComAliasNameAttribute(System.String)" argnames="alias" />
+        <property name="Value" propertytype="System.String" />
+    </class>
+    <class name="AutomationProxyAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="AutomationProxyAttribute(System.Boolean)" argnames="val" />
+        <property name="Value" propertytype="System.Boolean" />
+    </class>
+    <class name="PrimaryInteropAssemblyAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="PrimaryInteropAssemblyAttribute(System.Int32, System.Int32)" argnames="major, minor" />
+        <property name="MajorVersion" propertytype="System.Int32" />
+        <property name="MinorVersion" propertytype="System.Int32" />
+    </class>
+    <class name="CoClassAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="CoClassAttribute(System.Type)" argnames="coClass" />
+        <property name="CoClass" propertytype="System.Type" />
+    </class>
+    <class name="ComEventInterfaceAttribute" namespace="System.Runtime.InteropServices">
+        <constructor name="ComEventInterfaceAttribute(System.Type, System.Type)" argnames="SourceInterface, EventProvider" />
+        <property name="SourceInterface" propertytype="System.Type" />
+        <property name="EventProvider" propertytype="System.Type" />
+    </class>
+    <class name="ExternalException" namespace="System.Runtime.InteropServices">
+        <constructor name="ExternalException()" argnames="" />
+        <constructor name="ExternalException(System.String)" argnames="message" />
+        <constructor name="ExternalException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="ExternalException(System.String, System.Int32)" argnames="message, errorCode" />
+        <constructor name="ExternalException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <property name="ErrorCode" propertytype="System.Int32" />
+    </class>
+    <class name="COMException" namespace="System.Runtime.InteropServices">
+        <constructor name="COMException()" argnames="" />
+        <constructor name="COMException(System.String)" argnames="message" />
+        <constructor name="COMException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="COMException(System.String, System.Int32)" argnames="message, errorCode" />
+        <constructor name="COMException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="CurrencyWrapper" namespace="System.Runtime.InteropServices">
+        <constructor name="CurrencyWrapper(System.Decimal)" argnames="obj" />
+        <constructor name="CurrencyWrapper(System.Object)" argnames="obj" />
+        <property name="WrappedObject" propertytype="System.Decimal" />
+    </class>
+    <class name="DispatchWrapper" namespace="System.Runtime.InteropServices">
+        <constructor name="DispatchWrapper(System.Object)" argnames="obj" />
+        <property name="WrappedObject" propertytype="System.Object" />
+    </class>
+    <class name="ErrorWrapper" namespace="System.Runtime.InteropServices">
+        <constructor name="ErrorWrapper(System.Int32)" argnames="errorCode" />
+        <constructor name="ErrorWrapper(System.Object)" argnames="errorCode" />
+        <constructor name="ErrorWrapper(System.Exception)" argnames="e" />
+        <property name="ErrorCode" propertytype="System.Int32" />
+    </class>
+    <class name="ExtensibleClassFactory" namespace="System.Runtime.InteropServices">
+        <method name="RegisterObjectCreationCallback(System.Runtime.InteropServices.ObjectCreationDelegate)" argnames="callback" returntype="System.Void" />
+    </class>
+    <class name="InvalidComObjectException" namespace="System.Runtime.InteropServices">
+        <constructor name="InvalidComObjectException()" argnames="" />
+        <constructor name="InvalidComObjectException(System.String)" argnames="message" />
+        <constructor name="InvalidComObjectException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="InvalidComObjectException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="InvalidOleVariantTypeException" namespace="System.Runtime.InteropServices">
+        <constructor name="InvalidOleVariantTypeException()" argnames="" />
+        <constructor name="InvalidOleVariantTypeException(System.String)" argnames="message" />
+        <constructor name="InvalidOleVariantTypeException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="InvalidOleVariantTypeException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="Marshal" namespace="System.Runtime.InteropServices">
+        <field name="SystemDefaultCharSize" />
+        <field name="SystemMaxDBCSCharSize" />
+        <method name="AllocHGlobal(System.IntPtr)" argnames="cb" returntype="System.IntPtr" />
+        <method name="AllocHGlobal(System.Int32)" argnames="cb" returntype="System.IntPtr" />
+        <method name="ReAllocHGlobal(System.IntPtr, System.IntPtr)" argnames="pv, cb" returntype="System.IntPtr" />
+        <method name="FreeHGlobal(System.IntPtr)" argnames="hglobal" returntype="System.Void" />
+        <method name="AllocCoTaskMem(System.Int32)" argnames="cb" returntype="System.IntPtr" />
+        <method name="ReAllocCoTaskMem(System.IntPtr, System.Int32)" argnames="pv, cb" returntype="System.IntPtr" />
+        <method name="FreeCoTaskMem(System.IntPtr)" argnames="ptr" returntype="System.Void" />
+        <method name="FreeBSTR(System.IntPtr)" argnames="ptr" returntype="System.Void" />
+        <method name="StringToHGlobalAnsi(System.String)" argnames="s" returntype="System.IntPtr" />
+        <method name="StringToCoTaskMemAnsi(System.String)" argnames="s" returntype="System.IntPtr" />
+        <method name="PtrToStringAnsi(System.IntPtr)" argnames="ptr" returntype="System.String" />
+        <method name="PtrToStringAnsi(System.IntPtr, System.Int32)" argnames="ptr, len" returntype="System.String" />
+        <method name="PtrToStringUni(System.IntPtr, System.Int32)" argnames="ptr, len" returntype="System.String" />
+        <method name="PtrToStringAuto(System.IntPtr, System.Int32)" argnames="ptr, len" returntype="System.String" />
+        <method name="StringToHGlobalUni(System.String)" argnames="s" returntype="System.IntPtr" />
+        <method name="StringToCoTaskMemUni(System.String)" argnames="s" returntype="System.IntPtr" />
+        <method name="PtrToStringUni(System.IntPtr)" argnames="ptr" returntype="System.String" />
+        <method name="StringToHGlobalAuto(System.String)" argnames="s" returntype="System.IntPtr" />
+        <method name="StringToCoTaskMemAuto(System.String)" argnames="s" returntype="System.IntPtr" />
+        <method name="PtrToStringAuto(System.IntPtr)" argnames="ptr" returntype="System.String" />
+        <method name="StringToBSTR(System.String)" argnames="s" returntype="System.IntPtr" />
+        <method name="PtrToStringBSTR(System.IntPtr)" argnames="ptr" returntype="System.String" />
+        <method name="SizeOf(System.Object)" argnames="structure" returntype="System.Int32" />
+        <method name="SizeOf(System.Type)" argnames="t" returntype="System.Int32" />
+        <method name="OffsetOf(System.Type, System.String)" argnames="t, fieldName" returntype="System.IntPtr" />
+        <method name="UnsafeAddrOfPinnedArrayElement(System.Array, System.Int32)" argnames="arr, index" returntype="System.IntPtr" />
+        <method name="Copy(System.Int32[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
+        <method name="Copy(System.Char[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
+        <method name="Copy(System.Int16[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
+        <method name="Copy(System.Int64[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
+        <method name="Copy(System.Single[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
+        <method name="Copy(System.Double[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
+        <method name="Copy(System.Byte[], System.Int32, System.IntPtr, System.Int32)" argnames="source, startIndex, destination, length" returntype="System.Void" />
+        <method name="Copy(System.IntPtr, System.Int32[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
+        <method name="Copy(System.IntPtr, System.Char[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
+        <method name="Copy(System.IntPtr, System.Int16[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
+        <method name="Copy(System.IntPtr, System.Int64[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
+        <method name="Copy(System.IntPtr, System.Single[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
+        <method name="Copy(System.IntPtr, System.Double[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
+        <method name="Copy(System.IntPtr, System.Byte[], System.Int32, System.Int32)" argnames="source, destination, startIndex, length" returntype="System.Void" />
+        <method name="ReadByte(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Byte" />
+        <method name="ReadByte(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Byte" />
+        <method name="ReadByte(System.IntPtr)" argnames="ptr" returntype="System.Byte" />
+        <method name="ReadInt16(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Int16" />
+        <method name="ReadInt16(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Int16" />
+        <method name="ReadInt16(System.IntPtr)" argnames="ptr" returntype="System.Int16" />
+        <method name="ReadInt32(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Int32" />
+        <method name="ReadInt32(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Int32" />
+        <method name="ReadInt32(System.IntPtr)" argnames="ptr" returntype="System.Int32" />
+        <method name="ReadIntPtr(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.IntPtr" />
+        <method name="ReadIntPtr(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.IntPtr" />
+        <method name="ReadIntPtr(System.IntPtr)" argnames="ptr" returntype="System.IntPtr" />
+        <method name="ReadInt64(System.Object, System.Int32)" argnames="ptr, ofs" returntype="System.Int64" />
+        <method name="ReadInt64(System.IntPtr, System.Int32)" argnames="ptr, ofs" returntype="System.Int64" />
+        <method name="ReadInt64(System.IntPtr)" argnames="ptr" returntype="System.Int64" />
+        <method name="WriteByte(System.IntPtr, System.Int32, System.Byte)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteByte(System.Object, System.Int32, System.Byte)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteByte(System.IntPtr, System.Byte)" argnames="ptr, val" returntype="System.Void" />
+        <method name="WriteInt16(System.IntPtr, System.Int32, System.Int16)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt16(System.Object, System.Int32, System.Int16)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt16(System.IntPtr, System.Int16)" argnames="ptr, val" returntype="System.Void" />
+        <method name="WriteInt16(System.IntPtr, System.Int32, System.Char)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt16(System.Object, System.Int32, System.Char)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt16(System.IntPtr, System.Char)" argnames="ptr, val" returntype="System.Void" />
+        <method name="WriteInt32(System.IntPtr, System.Int32, System.Int32)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt32(System.Object, System.Int32, System.Int32)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt32(System.IntPtr, System.Int32)" argnames="ptr, val" returntype="System.Void" />
+        <method name="WriteIntPtr(System.IntPtr, System.Int32, System.IntPtr)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteIntPtr(System.Object, System.Int32, System.IntPtr)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteIntPtr(System.IntPtr, System.IntPtr)" argnames="ptr, val" returntype="System.Void" />
+        <method name="WriteInt64(System.IntPtr, System.Int32, System.Int64)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt64(System.Object, System.Int32, System.Int64)" argnames="ptr, ofs, val" returntype="System.Void" />
+        <method name="WriteInt64(System.IntPtr, System.Int64)" argnames="ptr, val" returntype="System.Void" />
+        <method name="GetLastWin32Error()" argnames="" returntype="System.Int32" />
+        <method name="GetHRForLastWin32Error()" argnames="" returntype="System.Int32" />
+        <method name="Prelink(System.Reflection.MethodInfo)" argnames="m" returntype="System.Void" />
+        <method name="PrelinkAll(System.Type)" argnames="c" returntype="System.Void" />
+        <method name="NumParamBytes(System.Reflection.MethodInfo)" argnames="m" returntype="System.Int32" />
+        <method name="GetExceptionPointers()" argnames="" returntype="System.IntPtr" />
+        <method name="GetExceptionCode()" argnames="" returntype="System.Int32" />
+        <method name="GetTypeLibName(System.Runtime.InteropServices.UCOMITypeLib)" argnames="pTLB" returntype="System.String" />
+        <method name="GetTypeLibGuid(System.Runtime.InteropServices.UCOMITypeLib)" argnames="pTLB" returntype="System.Guid" />
+        <method name="GetTypeLibLcid(System.Runtime.InteropServices.UCOMITypeLib)" argnames="pTLB" returntype="System.Int32" />
+        <method name="GetTypeLibGuidForAssembly(System.Reflection.Assembly)" argnames="asm" returntype="System.Guid" />
+        <method name="GetTypeInfoName(System.Runtime.InteropServices.UCOMITypeInfo)" argnames="pTI" returntype="System.String" />
+        <method name="GetTypeForITypeInfo(System.IntPtr)" argnames="piTypeInfo" returntype="System.Type" />
+        <method name="GetITypeInfoForType(System.Type)" argnames="t" returntype="System.IntPtr" />
+        <method name="GetIUnknownForObject(System.Object)" argnames="o" returntype="System.IntPtr" />
+        <method name="GetIDispatchForObject(System.Object)" argnames="o" returntype="System.IntPtr" />
+        <method name="GetComInterfaceForObject(System.Object, System.Type)" argnames="o, T" returntype="System.IntPtr" />
+        <method name="GetObjectForIUnknown(System.IntPtr)" argnames="pUnk" returntype="System.Object" />
+        <method name="GetTypedObjectForIUnknown(System.IntPtr, System.Type)" argnames="pUnk, t" returntype="System.Object" />
+        <method name="IsComObject(System.Object)" argnames="o" returntype="System.Boolean" />
+        <method name="ReleaseComObject(System.Object)" argnames="o" returntype="System.Int32" />
+        <method name="GetComObjectData(System.Object, System.Object)" argnames="obj, key" returntype="System.Object" />
+        <method name="SetComObjectData(System.Object, System.Object, System.Object)" argnames="obj, key, data" returntype="System.Boolean" />
+        <method name="CreateWrapperOfType(System.Object, System.Type)" argnames="o, t" returntype="System.Object" />
+        <method name="ReleaseThreadCache()" argnames="" returntype="System.Void" />
+        <method name="GetThreadFromFiberCookie(System.Int32)" argnames="cookie" returntype="System.Threading.Thread" />
+        <method name="IsTypeVisibleFromCom(System.Type)" argnames="t" returntype="System.Boolean" />
+        <method name="QueryInterface(System.IntPtr, System.Guid&amp;, System.IntPtr&amp;)" argnames="pUnk, iid, ppv" returntype="System.Int32" />
+        <method name="AddRef(System.IntPtr)" argnames="pUnk" returntype="System.Int32" />
+        <method name="Release(System.IntPtr)" argnames="pUnk" returntype="System.Int32" />
+        <method name="StructureToPtr(System.Object, System.IntPtr, System.Boolean)" argnames="structure, ptr, fDeleteOld" returntype="System.Void" />
+        <method name="PtrToStructure(System.IntPtr, System.Object)" argnames="ptr, structure" returntype="System.Void" />
+        <method name="PtrToStructure(System.IntPtr, System.Type)" argnames="ptr, structureType" returntype="System.Object" />
+        <method name="DestroyStructure(System.IntPtr, System.Type)" argnames="ptr, structuretype" returntype="System.Void" />
+        <method name="GetNativeVariantForObject(System.Object, System.IntPtr)" argnames="obj, pDstNativeVariant" returntype="System.Void" />
+        <method name="GetObjectForNativeVariant(System.IntPtr)" argnames="pSrcNativeVariant" returntype="System.Object" />
+        <method name="GetObjectsForNativeVariants(System.IntPtr, System.Int32)" argnames="aSrcNativeVariant, cVars" returntype="System.Object[]" />
+        <method name="GetStartComSlot(System.Type)" argnames="t" returntype="System.Int32" />
+        <method name="GetEndComSlot(System.Type)" argnames="t" returntype="System.Int32" />
+        <method name="GetMethodInfoForComSlot(System.Type, System.Int32, System.Runtime.InteropServices.ComMemberType&amp;)" argnames="t, slot, memberType" returntype="System.Reflection.MemberInfo" />
+        <method name="GetComSlotForMethodInfo(System.Reflection.MemberInfo)" argnames="m" returntype="System.Int32" />
+        <method name="GetHINSTANCE(System.Reflection.Module)" argnames="m" returntype="System.IntPtr" />
+        <method name="ThrowExceptionForHR(System.Int32)" argnames="errorCode" returntype="System.Void" />
+        <method name="ThrowExceptionForHR(System.Int32, System.IntPtr)" argnames="errorCode, errorInfo" returntype="System.Void" />
+        <method name="GetHRForException(System.Exception)" argnames="e" returntype="System.Int32" />
+        <method name="GenerateGuidForType(System.Type)" argnames="type" returntype="System.Guid" />
+        <method name="GenerateProgIdForType(System.Type)" argnames="type" returntype="System.String" />
+        <method name="BindToMoniker(System.String)" argnames="monikerName" returntype="System.Object" />
+        <method name="GetActiveObject(System.String)" argnames="progID" returntype="System.Object" />
+        <method name="GetUnmanagedThunkForManagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)" argnames="pfnMethodToWrap, pbSignature, cbSignature" returntype="System.IntPtr" />
+        <method name="GetManagedThunkForUnmanagedMethodPtr(System.IntPtr, System.IntPtr, System.Int32)" argnames="pfnMethodToWrap, pbSignature, cbSignature" returntype="System.IntPtr" />
+        <method name="ChangeWrapperHandleStrength(System.Object, System.Boolean)" argnames="otp, fIsWeak" returntype="System.Void" />
+    </class>
+    <class name="MarshalDirectiveException" namespace="System.Runtime.InteropServices">
+        <constructor name="MarshalDirectiveException()" argnames="" />
+        <constructor name="MarshalDirectiveException(System.String)" argnames="message" />
+        <constructor name="MarshalDirectiveException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="MarshalDirectiveException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="RuntimeEnvironment" namespace="System.Runtime.InteropServices">
+        <constructor name="RuntimeEnvironment()" argnames="" />
+        <property name="SystemConfigurationFile" propertytype="System.String" />
+        <method name="FromGlobalAccessCache(System.Reflection.Assembly)" argnames="a" returntype="System.Boolean" />
+        <method name="GetSystemVersion()" argnames="" returntype="System.String" />
+        <method name="GetRuntimeDirectory()" argnames="" returntype="System.String" />
+    </class>
+    <class name="RegistrationServices" namespace="System.Runtime.InteropServices">
+        <constructor name="RegistrationServices()" argnames="" />
+        <method name="TypeRepresentsComType(System.Type)" argnames="type" returntype="System.Boolean" />
+        <method name="TypeRequiresRegistration(System.Type)" argnames="type" returntype="System.Boolean" />
+        <method name="GetManagedCategoryGuid()" argnames="" returntype="System.Guid" />
+        <method name="RegisterTypeForComClients(System.Type, System.Guid&amp;)" argnames="type, g" returntype="System.Void" />
+        <method name="GetProgIdForType(System.Type)" argnames="type" returntype="System.String" />
+        <method name="GetRegistrableTypesInAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Type[]" />
+        <method name="UnregisterAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Boolean" />
+        <method name="RegisterAssembly(System.Reflection.Assembly, System.Runtime.InteropServices.AssemblyRegistrationFlags)" argnames="assembly, flags" returntype="System.Boolean" />
+    </class>
+    <class name="SafeArrayRankMismatchException" namespace="System.Runtime.InteropServices">
+        <constructor name="SafeArrayRankMismatchException()" argnames="" />
+        <constructor name="SafeArrayRankMismatchException(System.String)" argnames="message" />
+        <constructor name="SafeArrayRankMismatchException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="SafeArrayRankMismatchException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="SafeArrayTypeMismatchException" namespace="System.Runtime.InteropServices">
+        <constructor name="SafeArrayTypeMismatchException()" argnames="" />
+        <constructor name="SafeArrayTypeMismatchException(System.String)" argnames="message" />
+        <constructor name="SafeArrayTypeMismatchException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="SafeArrayTypeMismatchException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <class name="SEHException" namespace="System.Runtime.InteropServices">
+        <constructor name="SEHException()" argnames="" />
+        <constructor name="SEHException(System.String)" argnames="message" />
+        <constructor name="SEHException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="SEHException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+        <method name="CanResume()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="TypeLibConverter" namespace="System.Runtime.InteropServices">
+        <constructor name="TypeLibConverter()" argnames="" />
+        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Int32, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.Boolean)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, unsafeInterfaces" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="GetPrimaryInteropAssembly(System.Guid, System.Int32, System.Int32, System.Int32, System.String&amp;, System.String&amp;)" argnames="g, major, minor, lcid, asmName, asmCodeBase" returntype="System.Boolean" />
+        <method name="ConvertAssemblyToTypeLib(System.Reflection.Assembly, System.String, System.Runtime.InteropServices.TypeLibExporterFlags, System.Runtime.InteropServices.ITypeLibExporterNotifySink)" argnames="assembly, strTypeLibName, flags, notifySink" returntype="System.Object" />
+        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Runtime.InteropServices.TypeLibImporterFlags, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.String, System.Version)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, asmNamespace, asmVersion" returntype="System.Reflection.Emit.AssemblyBuilder" />
+    </class>
+    <class name="UnknownWrapper" namespace="System.Runtime.InteropServices">
+        <constructor name="UnknownWrapper(System.Object)" argnames="obj" />
+        <property name="WrappedObject" propertytype="System.Object" />
+    </class>
+    <interface name="ICustomAdapter" namespace="System.Runtime.InteropServices">
+        <method name="GetUnderlyingObject()" argnames="" returntype="System.Object" />
+    </interface>
+    <interface name="ICustomMarshaler" namespace="System.Runtime.InteropServices">
+        <method name="GetNativeDataSize()" argnames="" returntype="System.Int32" />
+        <method name="CleanUpManagedData(System.Object)" argnames="ManagedObj" returntype="System.Void" />
+        <method name="CleanUpNativeData(System.IntPtr)" argnames="pNativeData" returntype="System.Void" />
+        <method name="MarshalManagedToNative(System.Object)" argnames="ManagedObj" returntype="System.IntPtr" />
+        <method name="MarshalNativeToManaged(System.IntPtr)" argnames="pNativeData" returntype="System.Object" />
+    </interface>
+    <interface name="ICustomFactory" namespace="System.Runtime.InteropServices">
+        <method name="CreateInstance(System.Type)" argnames="serverType" returntype="System.MarshalByRefObject" />
+    </interface>
+    <interface name="IRegistrationServices" namespace="System.Runtime.InteropServices">
+        <method name="TypeRepresentsComType(System.Type)" argnames="type" returntype="System.Boolean" />
+        <method name="TypeRequiresRegistration(System.Type)" argnames="type" returntype="System.Boolean" />
+        <method name="GetManagedCategoryGuid()" argnames="" returntype="System.Guid" />
+        <method name="RegisterTypeForComClients(System.Type, System.Guid&amp;)" argnames="type, g" returntype="System.Void" />
+        <method name="GetProgIdForType(System.Type)" argnames="type" returntype="System.String" />
+        <method name="GetRegistrableTypesInAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Type[]" />
+        <method name="UnregisterAssembly(System.Reflection.Assembly)" argnames="assembly" returntype="System.Boolean" />
+        <method name="RegisterAssembly(System.Reflection.Assembly, System.Runtime.InteropServices.AssemblyRegistrationFlags)" argnames="assembly, flags" returntype="System.Boolean" />
+    </interface>
+    <interface name="ITypeLibImporterNotifySink" namespace="System.Runtime.InteropServices">
+        <method name="ResolveRef(System.Object)" argnames="typeLib" returntype="System.Reflection.Assembly" />
+        <method name="ReportEvent(System.Runtime.InteropServices.ImporterEventKind, System.Int32, System.String)" argnames="eventKind, eventCode, eventMsg" returntype="System.Void" />
+    </interface>
+    <interface name="ITypeLibExporterNotifySink" namespace="System.Runtime.InteropServices">
+        <method name="ResolveRef(System.Reflection.Assembly)" argnames="assembly" returntype="System.Object" />
+        <method name="ReportEvent(System.Runtime.InteropServices.ExporterEventKind, System.Int32, System.String)" argnames="eventKind, eventCode, eventMsg" returntype="System.Void" />
+    </interface>
+    <interface name="ITypeLibConverter" namespace="System.Runtime.InteropServices">
+        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Int32, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.Boolean)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, unsafeInterfaces" returntype="System.Reflection.Emit.AssemblyBuilder" />
+        <method name="GetPrimaryInteropAssembly(System.Guid, System.Int32, System.Int32, System.Int32, System.String&amp;, System.String&amp;)" argnames="g, major, minor, lcid, asmName, asmCodeBase" returntype="System.Boolean" />
+        <method name="ConvertAssemblyToTypeLib(System.Reflection.Assembly, System.String, System.Runtime.InteropServices.TypeLibExporterFlags, System.Runtime.InteropServices.ITypeLibExporterNotifySink)" argnames="assembly, typeLibName, flags, notifySink" returntype="System.Object" />
+        <method name="ConvertTypeLibToAssembly(System.Object, System.String, System.Runtime.InteropServices.TypeLibImporterFlags, System.Runtime.InteropServices.ITypeLibImporterNotifySink, System.Byte[], System.Reflection.StrongNameKeyPair, System.String, System.Version)" argnames="typeLib, asmFileName, flags, notifySink, publicKey, keyPair, asmNamespace, asmVersion" returntype="System.Reflection.Emit.AssemblyBuilder" />
+    </interface>
+    <interface name="ITypeLibExporterNameProvider" namespace="System.Runtime.InteropServices">
+        <method name="GetNames()" argnames="" returntype="System.String[]" />
+    </interface>
+    <interface name="UCOMIBindCtx" namespace="System.Runtime.InteropServices">
+        <method name="RevokeObjectParam(System.String)" argnames="pszKey" returntype="System.Void" />
+        <method name="EnumObjectParam(System.Runtime.InteropServices.UCOMIEnumString&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="GetObjectParam(System.String, System.Object&amp;)" argnames="pszKey, ppunk" returntype="System.Void" />
+        <method name="RegisterObjectParam(System.String, System.Object)" argnames="pszKey, punk" returntype="System.Void" />
+        <method name="GetRunningObjectTable(System.Runtime.InteropServices.UCOMIRunningObjectTable&amp;)" argnames="pprot" returntype="System.Void" />
+        <method name="GetBindOptions(System.Runtime.InteropServices.BIND_OPTS&amp;)" argnames="pbindopts" returntype="System.Void" />
+        <method name="SetBindOptions(System.Runtime.InteropServices.BIND_OPTS&amp;)" argnames="pbindopts" returntype="System.Void" />
+        <method name="ReleaseBoundObjects()" argnames="" returntype="System.Void" />
+        <method name="RevokeObjectBound(System.Object)" argnames="punk" returntype="System.Void" />
+        <method name="RegisterObjectBound(System.Object)" argnames="punk" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMIConnectionPointContainer" namespace="System.Runtime.InteropServices">
+        <method name="FindConnectionPoint(System.Guid&amp;, System.Runtime.InteropServices.UCOMIConnectionPoint&amp;)" argnames="riid, ppCP" returntype="System.Void" />
+        <method name="EnumConnectionPoints(System.Runtime.InteropServices.UCOMIEnumConnectionPoints&amp;)" argnames="ppEnum" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMIConnectionPoint" namespace="System.Runtime.InteropServices">
+        <method name="EnumConnections(System.Runtime.InteropServices.UCOMIEnumConnections&amp;)" argnames="ppEnum" returntype="System.Void" />
+        <method name="Unadvise(System.Int32)" argnames="dwCookie" returntype="System.Void" />
+        <method name="Advise(System.Object, System.Int32&amp;)" argnames="pUnkSink, pdwCookie" returntype="System.Void" />
+        <method name="GetConnectionPointContainer(System.Runtime.InteropServices.UCOMIConnectionPointContainer&amp;)" argnames="ppCPC" returntype="System.Void" />
+        <method name="GetConnectionInterface(System.Guid&amp;)" argnames="pIID" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMIEnumMoniker" namespace="System.Runtime.InteropServices">
+        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumMoniker&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset()" argnames="" returntype="System.Int32" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Runtime.InteropServices.UCOMIMoniker[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="UCOMIEnumConnections" namespace="System.Runtime.InteropServices">
+        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumConnections&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset()" argnames="" returntype="System.Void" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Runtime.InteropServices.CONNECTDATA[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="UCOMIEnumConnectionPoints" namespace="System.Runtime.InteropServices">
+        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumConnectionPoints&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset()" argnames="" returntype="System.Int32" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Runtime.InteropServices.UCOMIConnectionPoint[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="UCOMIEnumString" namespace="System.Runtime.InteropServices">
+        <method name="Clone(System.Runtime.InteropServices.UCOMIEnumString&amp;)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset()" argnames="" returntype="System.Int32" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.String[], System.Int32&amp;)" argnames="celt, rgelt, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="UCOMIEnumVARIANT" namespace="System.Runtime.InteropServices">
+        <method name="Clone(System.Int32)" argnames="ppenum" returntype="System.Void" />
+        <method name="Reset()" argnames="" returntype="System.Int32" />
+        <method name="Skip(System.Int32)" argnames="celt" returntype="System.Int32" />
+        <method name="Next(System.Int32, System.Int32, System.Int32)" argnames="celt, rgvar, pceltFetched" returntype="System.Int32" />
+    </interface>
+    <interface name="UCOMIMoniker" namespace="System.Runtime.InteropServices">
+        <method name="IsSystemMoniker(System.Int32&amp;)" argnames="pdwMksys" returntype="System.Void" />
+        <method name="ParseDisplayName(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.String, System.Int32&amp;, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pbc, pmkToLeft, pszDisplayName, pchEaten, ppmkOut" returntype="System.Void" />
+        <method name="GetDisplayName(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.String&amp;)" argnames="pbc, pmkToLeft, ppszDisplayName" returntype="System.Void" />
+        <method name="RelativePathTo(System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pmkOther, ppmkRelPath" returntype="System.Void" />
+        <method name="CommonPrefixWith(System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pmkOther, ppmkPrefix" returntype="System.Void" />
+        <method name="Inverse(System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="ppmk" returntype="System.Void" />
+        <method name="GetTimeOfLastChange(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.FILETIME&amp;)" argnames="pbc, pmkToLeft, pFileTime" returntype="System.Void" />
+        <method name="IsRunning(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.UCOMIMoniker)" argnames="pbc, pmkToLeft, pmkNewlyRunning" returntype="System.Void" />
+        <method name="Hash(System.Int32&amp;)" argnames="pdwHash" returntype="System.Void" />
+        <method name="IsEqual(System.Runtime.InteropServices.UCOMIMoniker)" argnames="pmkOtherMoniker" returntype="System.Void" />
+        <method name="Enum(System.Boolean, System.Runtime.InteropServices.UCOMIEnumMoniker&amp;)" argnames="fForward, ppenumMoniker" returntype="System.Void" />
+        <method name="ComposeWith(System.Runtime.InteropServices.UCOMIMoniker, System.Boolean, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pmkRight, fOnlyIfNotGeneric, ppmkComposite" returntype="System.Void" />
+        <method name="Reduce(System.Runtime.InteropServices.UCOMIBindCtx, System.Int32, System.Runtime.InteropServices.UCOMIMoniker&amp;, System.Runtime.InteropServices.UCOMIMoniker&amp;)" argnames="pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced" returntype="System.Void" />
+        <method name="BindToStorage(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Guid&amp;, System.Object&amp;)" argnames="pbc, pmkToLeft, riid, ppvObj" returntype="System.Void" />
+        <method name="BindToObject(System.Runtime.InteropServices.UCOMIBindCtx, System.Runtime.InteropServices.UCOMIMoniker, System.Guid&amp;, System.Object&amp;)" argnames="pbc, pmkToLeft, riidResult, ppvResult" returntype="System.Void" />
+        <method name="GetSizeMax(System.Int64&amp;)" argnames="pcbSize" returntype="System.Void" />
+        <method name="Save(System.Runtime.InteropServices.UCOMIStream, System.Boolean)" argnames="pStm, fClearDirty" returntype="System.Void" />
+        <method name="Load(System.Runtime.InteropServices.UCOMIStream)" argnames="pStm" returntype="System.Void" />
+        <method name="IsDirty()" argnames="" returntype="System.Int32" />
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMIPersistFile" namespace="System.Runtime.InteropServices">
+        <method name="GetCurFile(System.String&amp;)" argnames="ppszFileName" returntype="System.Void" />
+        <method name="SaveCompleted(System.String)" argnames="pszFileName" returntype="System.Void" />
+        <method name="Save(System.String, System.Boolean)" argnames="pszFileName, fRemember" returntype="System.Void" />
+        <method name="Load(System.String, System.Int32)" argnames="pszFileName, dwMode" returntype="System.Void" />
+        <method name="IsDirty()" argnames="" returntype="System.Int32" />
+        <method name="GetClassID(System.Guid&amp;)" argnames="pClassID" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMIRunningObjectTable" namespace="System.Runtime.InteropServices">
+        <method name="EnumRunning(System.Runtime.InteropServices.UCOMIEnumMoniker&amp;)" argnames="ppenumMoniker" returntype="System.Void" />
+        <method name="GetTimeOfLastChange(System.Runtime.InteropServices.UCOMIMoniker, System.Runtime.InteropServices.FILETIME&amp;)" argnames="pmkObjectName, pfiletime" returntype="System.Void" />
+        <method name="NoteChangeTime(System.Int32, System.Runtime.InteropServices.FILETIME&amp;)" argnames="dwRegister, pfiletime" returntype="System.Void" />
+        <method name="GetObject(System.Runtime.InteropServices.UCOMIMoniker, System.Object&amp;)" argnames="pmkObjectName, ppunkObject" returntype="System.Void" />
+        <method name="IsRunning(System.Runtime.InteropServices.UCOMIMoniker)" argnames="pmkObjectName" returntype="System.Void" />
+        <method name="Revoke(System.Int32)" argnames="dwRegister" returntype="System.Void" />
+        <method name="Register(System.Int32, System.Object, System.Runtime.InteropServices.UCOMIMoniker, System.Int32&amp;)" argnames="grfFlags, punkObject, pmkObjectName, pdwRegister" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMIStream" namespace="System.Runtime.InteropServices">
+        <method name="Clone(System.Runtime.InteropServices.UCOMIStream&amp;)" argnames="ppstm" returntype="System.Void" />
+        <method name="Stat(System.Runtime.InteropServices.STATSTG&amp;, System.Int32)" argnames="pstatstg, grfStatFlag" returntype="System.Void" />
+        <method name="UnlockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="LockRegion(System.Int64, System.Int64, System.Int32)" argnames="libOffset, cb, dwLockType" returntype="System.Void" />
+        <method name="Revert()" argnames="" returntype="System.Void" />
+        <method name="Commit(System.Int32)" argnames="grfCommitFlags" returntype="System.Void" />
+        <method name="CopyTo(System.Runtime.InteropServices.UCOMIStream, System.Int64, System.IntPtr, System.IntPtr)" argnames="pstm, cb, pcbRead, pcbWritten" returntype="System.Void" />
+        <method name="SetSize(System.Int64)" argnames="libNewSize" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.Int32, System.IntPtr)" argnames="dlibMove, dwOrigin, plibNewPosition" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.IntPtr)" argnames="pv, cb, pcbWritten" returntype="System.Void" />
+        <method name="Read(System.Byte[], System.Int32, System.IntPtr)" argnames="pv, cb, pcbRead" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMITypeComp" namespace="System.Runtime.InteropServices">
+        <method name="BindType(System.String, System.Int32, System.Runtime.InteropServices.UCOMITypeInfo&amp;, System.Runtime.InteropServices.UCOMITypeComp&amp;)" argnames="szName, lHashVal, ppTInfo, ppTComp" returntype="System.Void" />
+        <method name="Bind(System.String, System.Int32, System.Int16, System.Runtime.InteropServices.UCOMITypeInfo&amp;, System.Runtime.InteropServices.DESCKIND&amp;, System.Runtime.InteropServices.BINDPTR&amp;)" argnames="szName, lHashVal, wFlags, ppTInfo, pDescKind, pBindPtr" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMITypeInfo" namespace="System.Runtime.InteropServices">
+        <method name="ReleaseVarDesc(System.IntPtr)" argnames="pVarDesc" returntype="System.Void" />
+        <method name="ReleaseFuncDesc(System.IntPtr)" argnames="pFuncDesc" returntype="System.Void" />
+        <method name="ReleaseTypeAttr(System.IntPtr)" argnames="pTypeAttr" returntype="System.Void" />
+        <method name="GetContainingTypeLib(System.Runtime.InteropServices.UCOMITypeLib&amp;, System.Int32&amp;)" argnames="ppTLB, pIndex" returntype="System.Void" />
+        <method name="GetMops(System.Int32, System.String&amp;)" argnames="memid, pBstrMops" returntype="System.Void" />
+        <method name="CreateInstance(System.Object, System.Guid&amp;, System.Object&amp;)" argnames="pUnkOuter, riid, ppvObj" returntype="System.Void" />
+        <method name="AddressOfMember(System.Int32, System.Runtime.InteropServices.INVOKEKIND, System.IntPtr&amp;)" argnames="memid, invKind, ppv" returntype="System.Void" />
+        <method name="GetRefTypeInfo(System.Int32, System.Runtime.InteropServices.UCOMITypeInfo&amp;)" argnames="hRef, ppTI" returntype="System.Void" />
+        <method name="GetDllEntry(System.Int32, System.Runtime.InteropServices.INVOKEKIND, System.String&amp;, System.String&amp;, System.Int16&amp;)" argnames="memid, invKind, pBstrDllName, pBstrName, pwOrdinal" returntype="System.Void" />
+        <method name="GetDocumentation(System.Int32, System.String&amp;, System.String&amp;, System.Int32&amp;, System.String&amp;)" argnames="index, strName, strDocString, dwHelpContext, strHelpFile" returntype="System.Void" />
+        <method name="Invoke(System.Object, System.Int32, System.Int16, System.Runtime.InteropServices.DISPPARAMS&amp;, System.Object&amp;, System.Runtime.InteropServices.EXCEPINFO&amp;, System.Int32&amp;)" argnames="pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr" returntype="System.Void" />
+        <method name="GetIDsOfNames(System.String[], System.Int32, System.Int32[])" argnames="rgszNames, cNames, pMemId" returntype="System.Void" />
+        <method name="GetImplTypeFlags(System.Int32, System.Int32&amp;)" argnames="index, pImplTypeFlags" returntype="System.Void" />
+        <method name="GetRefTypeOfImplType(System.Int32, System.Int32&amp;)" argnames="index, href" returntype="System.Void" />
+        <method name="GetNames(System.Int32, System.String[], System.Int32, System.Int32&amp;)" argnames="memid, rgBstrNames, cMaxNames, pcNames" returntype="System.Void" />
+        <method name="GetVarDesc(System.Int32, System.IntPtr&amp;)" argnames="index, ppVarDesc" returntype="System.Void" />
+        <method name="GetFuncDesc(System.Int32, System.IntPtr&amp;)" argnames="index, ppFuncDesc" returntype="System.Void" />
+        <method name="GetTypeComp(System.Runtime.InteropServices.UCOMITypeComp&amp;)" argnames="ppTComp" returntype="System.Void" />
+        <method name="GetTypeAttr(System.IntPtr&amp;)" argnames="ppTypeAttr" returntype="System.Void" />
+    </interface>
+    <interface name="UCOMITypeLib" namespace="System.Runtime.InteropServices">
+        <method name="ReleaseTLibAttr(System.IntPtr)" argnames="pTLibAttr" returntype="System.Void" />
+        <method name="FindName(System.String, System.Int32, System.Runtime.InteropServices.UCOMITypeInfo[], System.Int32[], System.Int16&amp;)" argnames="szNameBuf, lHashVal, ppTInfo, rgMemId, pcFound" returntype="System.Void" />
+        <method name="IsName(System.String, System.Int32)" argnames="szNameBuf, lHashVal" returntype="System.Boolean" />
+        <method name="GetDocumentation(System.Int32, System.String&amp;, System.String&amp;, System.Int32&amp;, System.String&amp;)" argnames="index, strName, strDocString, dwHelpContext, strHelpFile" returntype="System.Void" />
+        <method name="GetTypeComp(System.Runtime.InteropServices.UCOMITypeComp&amp;)" argnames="ppTComp" returntype="System.Void" />
+        <method name="GetLibAttr(System.IntPtr&amp;)" argnames="ppTLibAttr" returntype="System.Void" />
+        <method name="GetTypeInfoOfGuid(System.Guid&amp;, System.Runtime.InteropServices.UCOMITypeInfo&amp;)" argnames="guid, ppTInfo" returntype="System.Void" />
+        <method name="GetTypeInfoType(System.Int32, System.Runtime.InteropServices.TYPEKIND&amp;)" argnames="index, pTKind" returntype="System.Void" />
+        <method name="GetTypeInfo(System.Int32, System.Runtime.InteropServices.UCOMITypeInfo&amp;)" argnames="index, ppTI" returntype="System.Void" />
+        <method name="GetTypeInfoCount()" argnames="" returntype="System.Int32" />
+    </interface>
+    <struct name="ArrayWithOffset" namespace="System.Runtime.InteropServices">
+        <constructor name="ArrayWithOffset(System.Object, System.Int32)" argnames="array, offset" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="GetArray()" argnames="" returntype="System.Object" />
+        <method name="GetOffset()" argnames="" returntype="System.Int32" />
+    </struct>
+    <struct name="GCHandle" namespace="System.Runtime.InteropServices">
+        <property name="Target" propertytype="System.Object" />
+        <property name="__InternalTarget" propertytype="System.Object" />
+        <property name="IsAllocated" propertytype="System.Boolean" />
+        <method name="Alloc(System.Object)" argnames="value" returntype="System.Runtime.InteropServices.GCHandle" />
+        <method name="Alloc(System.Object, System.Runtime.InteropServices.GCHandleType)" argnames="value, type" returntype="System.Runtime.InteropServices.GCHandle" />
+        <method name="Free()" argnames="" returntype="System.Void" />
+        <method name="AddrOfPinnedObject()" argnames="" returntype="System.IntPtr" />
+        <operator name="op_Explicit(System.IntPtr)" argnames="value" />
+        <operator name="op_Explicit(System.Runtime.InteropServices.GCHandle)" argnames="value" />
+    </struct>
+    <struct name="HandleRef" namespace="System.Runtime.InteropServices">
+        <constructor name="HandleRef(System.Object, System.IntPtr)" argnames="wrapper, handle" />
+        <property name="Wrapper" propertytype="System.Object" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <operator name="op_Explicit(System.Runtime.InteropServices.HandleRef)" argnames="value" />
+    </struct>
+    <struct name="BIND_OPTS" namespace="System.Runtime.InteropServices">
+        <field name="cbStruct" />
+        <field name="grfFlags" />
+        <field name="grfMode" />
+        <field name="dwTickCountDeadline" />
+    </struct>
+    <struct name="CONNECTDATA" namespace="System.Runtime.InteropServices">
+        <field name="pUnk" />
+        <field name="dwCookie" />
+    </struct>
+    <struct name="FILETIME" namespace="System.Runtime.InteropServices">
+        <field name="dwLowDateTime" />
+        <field name="dwHighDateTime" />
+    </struct>
+    <struct name="STATSTG" namespace="System.Runtime.InteropServices">
+        <field name="pwcsName" />
+        <field name="type" />
+        <field name="cbSize" />
+        <field name="mtime" />
+        <field name="ctime" />
+        <field name="atime" />
+        <field name="grfMode" />
+        <field name="grfLocksSupported" />
+        <field name="clsid" />
+        <field name="grfStateBits" />
+        <field name="reserved" />
+    </struct>
+    <struct name="BINDPTR" namespace="System.Runtime.InteropServices">
+        <field name="lpfuncdesc" />
+        <field name="lpvardesc" />
+        <field name="lptcomp" />
+    </struct>
+    <struct name="TYPEATTR" namespace="System.Runtime.InteropServices">
+        <field name="guid" />
+        <field name="lcid" />
+        <field name="dwReserved" />
+        <field name="memidConstructor" />
+        <field name="memidDestructor" />
+        <field name="lpstrSchema" />
+        <field name="cbSizeInstance" />
+        <field name="typekind" />
+        <field name="cFuncs" />
+        <field name="cVars" />
+        <field name="cImplTypes" />
+        <field name="cbSizeVft" />
+        <field name="cbAlignment" />
+        <field name="wTypeFlags" />
+        <field name="wMajorVerNum" />
+        <field name="wMinorVerNum" />
+        <field name="tdescAlias" />
+        <field name="idldescType" />
+        <field name="MEMBER_ID_NIL" />
+    </struct>
+    <struct name="FUNCDESC" namespace="System.Runtime.InteropServices">
+        <field name="memid" />
+        <field name="lprgscode" />
+        <field name="lprgelemdescParam" />
+        <field name="funckind" />
+        <field name="invkind" />
+        <field name="callconv" />
+        <field name="cParams" />
+        <field name="cParamsOpt" />
+        <field name="oVft" />
+        <field name="cScodes" />
+        <field name="elemdescFunc" />
+        <field name="wFuncFlags" />
+    </struct>
+    <struct name="IDLDESC" namespace="System.Runtime.InteropServices">
+        <field name="dwReserved" />
+        <field name="wIDLFlags" />
+    </struct>
+    <struct name="PARAMDESC" namespace="System.Runtime.InteropServices">
+        <field name="lpVarValue" />
+        <field name="wParamFlags" />
+    </struct>
+    <struct name="TYPEDESC" namespace="System.Runtime.InteropServices">
+        <field name="lpValue" />
+        <field name="vt" />
+    </struct>
+    <struct name="ELEMDESC" namespace="System.Runtime.InteropServices">
+        <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
+            <field name="idldesc" />
+            <field name="paramdesc" />
+        </struct>
+        <field name="tdesc" />
+        <field name="desc" />
+    </struct>
+    <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
+        <field name="idldesc" />
+        <field name="paramdesc" />
+    </struct>
+    <struct name="VARDESC" namespace="System.Runtime.InteropServices">
+        <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
+            <field name="oInst" />
+            <field name="lpvarValue" />
+        </struct>
+        <field name="memid" />
+        <field name="lpstrSchema" />
+        <field name="elemdescVar" />
+        <field name="wVarFlags" />
+        <field name="varkind" />
+    </struct>
+    <struct name="DESCUNION" namespace="System.Runtime.InteropServices">
+        <field name="oInst" />
+        <field name="lpvarValue" />
+    </struct>
+    <struct name="DISPPARAMS" namespace="System.Runtime.InteropServices">
+        <field name="rgvarg" />
+        <field name="rgdispidNamedArgs" />
+        <field name="cArgs" />
+        <field name="cNamedArgs" />
+    </struct>
+    <struct name="EXCEPINFO" namespace="System.Runtime.InteropServices">
+        <field name="wCode" />
+        <field name="wReserved" />
+        <field name="bstrSource" />
+        <field name="bstrDescription" />
+        <field name="bstrHelpFile" />
+        <field name="dwHelpContext" />
+        <field name="pvReserved" />
+        <field name="pfnDeferredFillIn" />
+    </struct>
+    <struct name="TYPELIBATTR" namespace="System.Runtime.InteropServices">
+        <field name="guid" />
+        <field name="lcid" />
+        <field name="syskind" />
+        <field name="wMajorVerNum" />
+        <field name="wMinorVerNum" />
+        <field name="wLibFlags" />
+    </struct>
+    <delegate name="ObjectCreationDelegate" namespace="System.Runtime.InteropServices">
+        <constructor name="ObjectCreationDelegate(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.IntPtr" />
+        <method name="BeginInvoke(System.IntPtr, System.AsyncCallback, System.Object)" argnames="aggregator, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.IntPtr)" argnames="aggregator" returntype="System.IntPtr" />
+    </delegate>
+    <enum name="ComInterfaceType" namespace="System.Runtime.InteropServices">
+        <field name="InterfaceIsDual" />
+        <field name="InterfaceIsIUnknown" />
+        <field name="InterfaceIsIDispatch" />
+    </enum>
+    <enum name="ClassInterfaceType" namespace="System.Runtime.InteropServices">
+        <field name="None" />
+        <field name="AutoDispatch" />
+        <field name="AutoDual" />
+    </enum>
+    <enum name="IDispatchImplType" namespace="System.Runtime.InteropServices">
+        <field name="SystemDefinedImpl" />
+        <field name="InternalImpl" />
+        <field name="CompatibleImpl" />
+    </enum>
+    <enum name="TypeLibTypeFlags" namespace="System.Runtime.InteropServices">
+        <field name="FAppObject" />
+        <field name="FCanCreate" />
+        <field name="FLicensed" />
+        <field name="FPreDeclId" />
+        <field name="FHidden" />
+        <field name="FControl" />
+        <field name="FDual" />
+        <field name="FNonExtensible" />
+        <field name="FOleAutomation" />
+        <field name="FRestricted" />
+        <field name="FAggregatable" />
+        <field name="FReplaceable" />
+        <field name="FDispatchable" />
+        <field name="FReverseBind" />
+    </enum>
+    <enum name="TypeLibFuncFlags" namespace="System.Runtime.InteropServices">
+        <field name="FRestricted" />
+        <field name="FSource" />
+        <field name="FBindable" />
+        <field name="FRequestEdit" />
+        <field name="FDisplayBind" />
+        <field name="FDefaultBind" />
+        <field name="FHidden" />
+        <field name="FUsesGetLastError" />
+        <field name="FDefaultCollelem" />
+        <field name="FUiDefault" />
+        <field name="FNonBrowsable" />
+        <field name="FReplaceable" />
+        <field name="FImmediateBind" />
+    </enum>
+    <enum name="TypeLibVarFlags" namespace="System.Runtime.InteropServices">
+        <field name="FReadOnly" />
+        <field name="FSource" />
+        <field name="FBindable" />
+        <field name="FRequestEdit" />
+        <field name="FDisplayBind" />
+        <field name="FDefaultBind" />
+        <field name="FHidden" />
+        <field name="FRestricted" />
+        <field name="FDefaultCollelem" />
+        <field name="FUiDefault" />
+        <field name="FNonBrowsable" />
+        <field name="FReplaceable" />
+        <field name="FImmediateBind" />
+    </enum>
+    <enum name="VarEnum" namespace="System.Runtime.InteropServices">
+        <field name="VT_EMPTY" />
+        <field name="VT_NULL" />
+        <field name="VT_I2" />
+        <field name="VT_I4" />
+        <field name="VT_R4" />
+        <field name="VT_R8" />
+        <field name="VT_CY" />
+        <field name="VT_DATE" />
+        <field name="VT_BSTR" />
+        <field name="VT_DISPATCH" />
+        <field name="VT_ERROR" />
+        <field name="VT_BOOL" />
+        <field name="VT_VARIANT" />
+        <field name="VT_UNKNOWN" />
+        <field name="VT_DECIMAL" />
+        <field name="VT_I1" />
+        <field name="VT_UI1" />
+        <field name="VT_UI2" />
+        <field name="VT_UI4" />
+        <field name="VT_I8" />
+        <field name="VT_UI8" />
+        <field name="VT_INT" />
+        <field name="VT_UINT" />
+        <field name="VT_VOID" />
+        <field name="VT_HRESULT" />
+        <field name="VT_PTR" />
+        <field name="VT_SAFEARRAY" />
+        <field name="VT_CARRAY" />
+        <field name="VT_USERDEFINED" />
+        <field name="VT_LPSTR" />
+        <field name="VT_LPWSTR" />
+        <field name="VT_RECORD" />
+        <field name="VT_FILETIME" />
+        <field name="VT_BLOB" />
+        <field name="VT_STREAM" />
+        <field name="VT_STORAGE" />
+        <field name="VT_STREAMED_OBJECT" />
+        <field name="VT_STORED_OBJECT" />
+        <field name="VT_BLOB_OBJECT" />
+        <field name="VT_CF" />
+        <field name="VT_CLSID" />
+        <field name="VT_VECTOR" />
+        <field name="VT_ARRAY" />
+        <field name="VT_BYREF" />
+    </enum>
+    <enum name="UnmanagedType" namespace="System.Runtime.InteropServices">
+        <field name="Bool" />
+        <field name="I1" />
+        <field name="U1" />
+        <field name="I2" />
+        <field name="U2" />
+        <field name="I4" />
+        <field name="U4" />
+        <field name="I8" />
+        <field name="U8" />
+        <field name="R4" />
+        <field name="R8" />
+        <field name="Currency" />
+        <field name="BStr" />
+        <field name="LPStr" />
+        <field name="LPWStr" />
+        <field name="LPTStr" />
+        <field name="ByValTStr" />
+        <field name="IUnknown" />
+        <field name="IDispatch" />
+        <field name="Struct" />
+        <field name="Interface" />
+        <field name="SafeArray" />
+        <field name="ByValArray" />
+        <field name="SysInt" />
+        <field name="SysUInt" />
+        <field name="VBByRefStr" />
+        <field name="AnsiBStr" />
+        <field name="TBStr" />
+        <field name="VariantBool" />
+        <field name="FunctionPtr" />
+        <field name="AsAny" />
+        <field name="LPArray" />
+        <field name="LPStruct" />
+        <field name="CustomMarshaler" />
+        <field name="Error" />
+    </enum>
+    <enum name="CallingConvention" namespace="System.Runtime.InteropServices">
+        <field name="Winapi" />
+        <field name="Cdecl" />
+        <field name="StdCall" />
+        <field name="ThisCall" />
+        <field name="FastCall" />
+    </enum>
+    <enum name="CharSet" namespace="System.Runtime.InteropServices">
+        <field name="None" />
+        <field name="Ansi" />
+        <field name="Unicode" />
+        <field name="Auto" />
+    </enum>
+    <enum name="ComMemberType" namespace="System.Runtime.InteropServices">
+        <field name="Method" />
+        <field name="PropGet" />
+        <field name="PropSet" />
+    </enum>
+    <enum name="GCHandleType" namespace="System.Runtime.InteropServices">
+        <field name="Weak" />
+        <field name="WeakTrackResurrection" />
+        <field name="Normal" />
+        <field name="Pinned" />
+    </enum>
+    <enum name="AssemblyRegistrationFlags" namespace="System.Runtime.InteropServices">
+        <field name="None" />
+        <field name="SetCodeBase" />
+    </enum>
+    <enum name="TypeLibImporterFlags" namespace="System.Runtime.InteropServices">
+        <field name="PrimaryInteropAssembly" />
+        <field name="UnsafeInterfaces" />
+        <field name="SafeArrayAsSystemArray" />
+    </enum>
+    <enum name="TypeLibExporterFlags" namespace="System.Runtime.InteropServices">
+        <field name="OnlyReferenceRegistered" />
+    </enum>
+    <enum name="ImporterEventKind" namespace="System.Runtime.InteropServices">
+        <field name="NOTIF_TYPECONVERTED" />
+        <field name="NOTIF_CONVERTWARNING" />
+        <field name="ERROR_REFTOINVALIDTYPELIB" />
+    </enum>
+    <enum name="ExporterEventKind" namespace="System.Runtime.InteropServices">
+        <field name="NOTIF_TYPECONVERTED" />
+        <field name="NOTIF_CONVERTWARNING" />
+        <field name="ERROR_REFTOINVALIDASSEMBLY" />
+    </enum>
+    <enum name="LayoutKind" namespace="System.Runtime.InteropServices">
+        <field name="Sequential" />
+        <field name="Explicit" />
+        <field name="Auto" />
+    </enum>
+    <enum name="DESCKIND" namespace="System.Runtime.InteropServices">
+        <field name="DESCKIND_NONE" />
+        <field name="DESCKIND_FUNCDESC" />
+        <field name="DESCKIND_VARDESC" />
+        <field name="DESCKIND_TYPECOMP" />
+        <field name="DESCKIND_IMPLICITAPPOBJ" />
+        <field name="DESCKIND_MAX" />
+    </enum>
+    <enum name="TYPEKIND" namespace="System.Runtime.InteropServices">
+        <field name="TKIND_ENUM" />
+        <field name="TKIND_RECORD" />
+        <field name="TKIND_MODULE" />
+        <field name="TKIND_INTERFACE" />
+        <field name="TKIND_DISPATCH" />
+        <field name="TKIND_COCLASS" />
+        <field name="TKIND_ALIAS" />
+        <field name="TKIND_UNION" />
+        <field name="TKIND_MAX" />
+    </enum>
+    <enum name="TYPEFLAGS" namespace="System.Runtime.InteropServices">
+        <field name="TYPEFLAG_FAPPOBJECT" />
+        <field name="TYPEFLAG_FCANCREATE" />
+        <field name="TYPEFLAG_FLICENSED" />
+        <field name="TYPEFLAG_FPREDECLID" />
+        <field name="TYPEFLAG_FHIDDEN" />
+        <field name="TYPEFLAG_FCONTROL" />
+        <field name="TYPEFLAG_FDUAL" />
+        <field name="TYPEFLAG_FNONEXTENSIBLE" />
+        <field name="TYPEFLAG_FOLEAUTOMATION" />
+        <field name="TYPEFLAG_FRESTRICTED" />
+        <field name="TYPEFLAG_FAGGREGATABLE" />
+        <field name="TYPEFLAG_FREPLACEABLE" />
+        <field name="TYPEFLAG_FDISPATCHABLE" />
+        <field name="TYPEFLAG_FREVERSEBIND" />
+        <field name="TYPEFLAG_FPROXY" />
+    </enum>
+    <enum name="IMPLTYPEFLAGS" namespace="System.Runtime.InteropServices">
+        <field name="IMPLTYPEFLAG_FDEFAULT" />
+        <field name="IMPLTYPEFLAG_FSOURCE" />
+        <field name="IMPLTYPEFLAG_FRESTRICTED" />
+        <field name="IMPLTYPEFLAG_FDEFAULTVTABLE" />
+    </enum>
+    <enum name="IDLFLAG" namespace="System.Runtime.InteropServices">
+        <field name="IDLFLAG_NONE" />
+        <field name="IDLFLAG_FIN" />
+        <field name="IDLFLAG_FOUT" />
+        <field name="IDLFLAG_FLCID" />
+        <field name="IDLFLAG_FRETVAL" />
+    </enum>
+    <enum name="PARAMFLAG" namespace="System.Runtime.InteropServices">
+        <field name="PARAMFLAG_NONE" />
+        <field name="PARAMFLAG_FIN" />
+        <field name="PARAMFLAG_FOUT" />
+        <field name="PARAMFLAG_FLCID" />
+        <field name="PARAMFLAG_FRETVAL" />
+        <field name="PARAMFLAG_FOPT" />
+        <field name="PARAMFLAG_FHASDEFAULT" />
+        <field name="PARAMFLAG_FHASCUSTDATA" />
+    </enum>
+    <enum name="FUNCKIND" namespace="System.Runtime.InteropServices">
+        <field name="FUNC_VIRTUAL" />
+        <field name="FUNC_PUREVIRTUAL" />
+        <field name="FUNC_NONVIRTUAL" />
+        <field name="FUNC_STATIC" />
+        <field name="FUNC_DISPATCH" />
+    </enum>
+    <enum name="INVOKEKIND" namespace="System.Runtime.InteropServices">
+        <field name="INVOKE_FUNC" />
+        <field name="INVOKE_PROPERTYGET" />
+        <field name="INVOKE_PROPERTYPUT" />
+        <field name="INVOKE_PROPERTYPUTREF" />
+    </enum>
+    <enum name="CALLCONV" namespace="System.Runtime.InteropServices">
+        <field name="CC_CDECL" />
+        <field name="CC_MSCPASCAL" />
+        <field name="CC_PASCAL" />
+        <field name="CC_MACPASCAL" />
+        <field name="CC_STDCALL" />
+        <field name="CC_RESERVED" />
+        <field name="CC_SYSCALL" />
+        <field name="CC_MPWCDECL" />
+        <field name="CC_MPWPASCAL" />
+        <field name="CC_MAX" />
+    </enum>
+    <enum name="FUNCFLAGS" namespace="System.Runtime.InteropServices">
+        <field name="FUNCFLAG_FRESTRICTED" />
+        <field name="FUNCFLAG_FSOURCE" />
+        <field name="FUNCFLAG_FBINDABLE" />
+        <field name="FUNCFLAG_FREQUESTEDIT" />
+        <field name="FUNCFLAG_FDISPLAYBIND" />
+        <field name="FUNCFLAG_FDEFAULTBIND" />
+        <field name="FUNCFLAG_FHIDDEN" />
+        <field name="FUNCFLAG_FUSESGETLASTERROR" />
+        <field name="FUNCFLAG_FDEFAULTCOLLELEM" />
+        <field name="FUNCFLAG_FUIDEFAULT" />
+        <field name="FUNCFLAG_FNONBROWSABLE" />
+        <field name="FUNCFLAG_FREPLACEABLE" />
+        <field name="FUNCFLAG_FIMMEDIATEBIND" />
+    </enum>
+    <enum name="VARFLAGS" namespace="System.Runtime.InteropServices">
+        <field name="VARFLAG_FREADONLY" />
+        <field name="VARFLAG_FSOURCE" />
+        <field name="VARFLAG_FBINDABLE" />
+        <field name="VARFLAG_FREQUESTEDIT" />
+        <field name="VARFLAG_FDISPLAYBIND" />
+        <field name="VARFLAG_FDEFAULTBIND" />
+        <field name="VARFLAG_FHIDDEN" />
+        <field name="VARFLAG_FRESTRICTED" />
+        <field name="VARFLAG_FDEFAULTCOLLELEM" />
+        <field name="VARFLAG_FUIDEFAULT" />
+        <field name="VARFLAG_FNONBROWSABLE" />
+        <field name="VARFLAG_FREPLACEABLE" />
+        <field name="VARFLAG_FIMMEDIATEBIND" />
+    </enum>
+    <enum name="SYSKIND" namespace="System.Runtime.InteropServices">
+        <field name="SYS_WIN16" />
+        <field name="SYS_WIN32" />
+        <field name="SYS_MAC" />
+    </enum>
+    <enum name="LIBFLAGS" namespace="System.Runtime.InteropServices">
+        <field name="LIBFLAG_FRESTRICTED" />
+        <field name="LIBFLAG_FCONTROL" />
+        <field name="LIBFLAG_FHIDDEN" />
+        <field name="LIBFLAG_FHASDISKIMAGE" />
+    </enum>
+    <interface name="IExpando" namespace="System.Runtime.InteropServices.Expando">
+        <method name="RemoveMember(System.Reflection.MemberInfo)" argnames="m" returntype="System.Void" />
+        <method name="AddMethod(System.String, System.Delegate)" argnames="name, method" returntype="System.Reflection.MethodInfo" />
+        <method name="AddProperty(System.String)" argnames="name" returntype="System.Reflection.PropertyInfo" />
+        <method name="AddField(System.String)" argnames="name" returntype="System.Reflection.FieldInfo" />
+    </interface>
+    <class name="AccessedThroughPropertyAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="AccessedThroughPropertyAttribute(System.String)" argnames="propertyName" />
+        <property name="PropertyName" propertytype="System.String" />
+    </class>
+    <class name="CallConvCdecl" namespace="System.Runtime.CompilerServices">
+        <constructor name="CallConvCdecl()" argnames="" />
+    </class>
+    <class name="CallConvStdcall" namespace="System.Runtime.CompilerServices">
+        <constructor name="CallConvStdcall()" argnames="" />
+    </class>
+    <class name="CallConvThiscall" namespace="System.Runtime.CompilerServices">
+        <constructor name="CallConvThiscall()" argnames="" />
+    </class>
+    <class name="CallConvFastcall" namespace="System.Runtime.CompilerServices">
+        <constructor name="CallConvFastcall()" argnames="" />
+    </class>
+    <class name="RuntimeHelpers" namespace="System.Runtime.CompilerServices">
+        <property name="OffsetToStringData" propertytype="System.Int32" />
+        <method name="InitializeArray(System.Array, System.RuntimeFieldHandle)" argnames="array, fldHandle" returntype="System.Void" />
+        <method name="GetObjectValue(System.Object)" argnames="obj" returntype="System.Object" />
+        <method name="RunClassConstructor(System.RuntimeTypeHandle)" argnames="type" returntype="System.Void" />
+    </class>
+    <class name="CustomConstantAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="CustomConstantAttribute()" argnames="" />
+        <property name="Value" propertytype="System.Object" />
+    </class>
+    <class name="DateTimeConstantAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="DateTimeConstantAttribute(System.Int64)" argnames="ticks" />
+        <property name="Value" propertytype="System.Object" />
+    </class>
+    <class name="DiscardableAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="DiscardableAttribute()" argnames="" />
+    </class>
+    <class name="DecimalConstantAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="DecimalConstantAttribute(System.Byte, System.Byte, System.UInt32, System.UInt32, System.UInt32)" argnames="scale, sign, hi, mid, low" />
+        <property name="Value" propertytype="System.Decimal" />
+    </class>
+    <class name="CompilationRelaxationsAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="CompilationRelaxationsAttribute(System.Int32)" argnames="relaxations" />
+        <property name="CompilationRelaxations" propertytype="System.Int32" />
+    </class>
+    <class name="CompilerGlobalScopeAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="CompilerGlobalScopeAttribute()" argnames="" />
+    </class>
+    <class name="IDispatchConstantAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="IDispatchConstantAttribute()" argnames="" />
+        <property name="Value" propertytype="System.Object" />
+    </class>
+    <class name="IndexerNameAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="IndexerNameAttribute(System.String)" argnames="indexerName" />
+    </class>
+    <class name="IsVolatile" namespace="System.Runtime.CompilerServices" />
+    <class name="IUnknownConstantAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="IUnknownConstantAttribute()" argnames="" />
+        <property name="Value" propertytype="System.Object" />
+    </class>
+    <class name="MethodImplAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="MethodImplAttribute(System.Runtime.CompilerServices.MethodImplOptions)" argnames="methodImplOptions" />
+        <constructor name="MethodImplAttribute(System.Int16)" argnames="value" />
+        <constructor name="MethodImplAttribute()" argnames="" />
+        <field name="MethodCodeType" />
+        <property name="Value" propertytype="System.Runtime.CompilerServices.MethodImplOptions" />
+    </class>
+    <class name="RequiredAttributeAttribute" namespace="System.Runtime.CompilerServices">
+        <constructor name="RequiredAttributeAttribute(System.Type)" argnames="requiredContract" />
+        <property name="RequiredContract" propertytype="System.Type" />
+    </class>
+    <enum name="MethodImplOptions" namespace="System.Runtime.CompilerServices">
+        <field name="Unmanaged" />
+        <field name="ForwardRef" />
+        <field name="PreserveSig" />
+        <field name="InternalCall" />
+        <field name="Synchronized" />
+        <field name="NoInlining" />
+    </enum>
+    <enum name="MethodCodeType" namespace="System.Runtime.CompilerServices">
+        <field name="IL" />
+        <field name="Native" />
+        <field name="OPTIL" />
+        <field name="Runtime" />
+    </enum>
+    <class name="EnvironmentPermission" namespace="System.Security.Permissions">
+        <constructor name="EnvironmentPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="EnvironmentPermission(System.Security.Permissions.EnvironmentPermissionAccess, System.String)" argnames="flag, pathList" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+        <method name="SetPathList(System.Security.Permissions.EnvironmentPermissionAccess, System.String)" argnames="flag, pathList" returntype="System.Void" />
+        <method name="AddPathList(System.Security.Permissions.EnvironmentPermissionAccess, System.String)" argnames="flag, pathList" returntype="System.Void" />
+        <method name="GetPathList(System.Security.Permissions.EnvironmentPermissionAccess)" argnames="flag" returntype="System.String" />
+    </class>
+    <class name="FileDialogPermission" namespace="System.Security.Permissions">
+        <constructor name="FileDialogPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="FileDialogPermission(System.Security.Permissions.FileDialogPermissionAccess)" argnames="access" />
+        <property name="Access" propertytype="System.Security.Permissions.FileDialogPermissionAccess" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="FileIOPermission" namespace="System.Security.Permissions">
+        <constructor name="FileIOPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="FileIOPermission(System.Security.Permissions.FileIOPermissionAccess, System.String)" argnames="access, path" />
+        <constructor name="FileIOPermission(System.Security.Permissions.FileIOPermissionAccess, System.String[])" argnames="access, pathList" />
+        <property name="AllLocalFiles" propertytype="System.Security.Permissions.FileIOPermissionAccess" />
+        <property name="AllFiles" propertytype="System.Security.Permissions.FileIOPermissionAccess" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+        <method name="SetPathList(System.Security.Permissions.FileIOPermissionAccess, System.String)" argnames="access, path" returntype="System.Void" />
+        <method name="SetPathList(System.Security.Permissions.FileIOPermissionAccess, System.String[])" argnames="access, pathList" returntype="System.Void" />
+        <method name="AddPathList(System.Security.Permissions.FileIOPermissionAccess, System.String)" argnames="access, path" returntype="System.Void" />
+        <method name="AddPathList(System.Security.Permissions.FileIOPermissionAccess, System.String[])" argnames="access, pathList" returntype="System.Void" />
+        <method name="GetPathList(System.Security.Permissions.FileIOPermissionAccess)" argnames="access" returntype="System.String[]" />
+    </class>
+    <class name="IsolatedStoragePermission" namespace="System.Security.Permissions">
+        <constructor name="IsolatedStoragePermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <property name="UserQuota" propertytype="System.Int64" />
+        <property name="UsageAllowed" propertytype="System.Security.Permissions.IsolatedStorageContainment" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+    </class>
+    <class name="IsolatedStorageFilePermission" namespace="System.Security.Permissions">
+        <constructor name="IsolatedStorageFilePermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="SecurityAttribute" namespace="System.Security.Permissions">
+        <constructor name="SecurityAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Action" propertytype="System.Security.Permissions.SecurityAction" />
+        <property name="Unrestricted" propertytype="System.Boolean" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="CodeAccessSecurityAttribute" namespace="System.Security.Permissions">
+        <constructor name="CodeAccessSecurityAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+    </class>
+    <class name="EnvironmentPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="EnvironmentPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Read" propertytype="System.String" />
+        <property name="Write" propertytype="System.String" />
+        <property name="All" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="FileDialogPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="FileDialogPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Open" propertytype="System.Boolean" />
+        <property name="Save" propertytype="System.Boolean" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="FileIOPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="FileIOPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Read" propertytype="System.String" />
+        <property name="Write" propertytype="System.String" />
+        <property name="Append" propertytype="System.String" />
+        <property name="PathDiscovery" propertytype="System.String" />
+        <property name="All" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="PrincipalPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="PrincipalPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Role" propertytype="System.String" />
+        <property name="Authenticated" propertytype="System.Boolean" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="ReflectionPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="ReflectionPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Flags" propertytype="System.Security.Permissions.ReflectionPermissionFlag" />
+        <property name="TypeInformation" propertytype="System.Boolean" />
+        <property name="MemberAccess" propertytype="System.Boolean" />
+        <property name="ReflectionEmit" propertytype="System.Boolean" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="RegistryPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="RegistryPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Read" propertytype="System.String" />
+        <property name="Write" propertytype="System.String" />
+        <property name="Create" propertytype="System.String" />
+        <property name="All" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="SecurityPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="SecurityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Flags" propertytype="System.Security.Permissions.SecurityPermissionFlag" />
+        <property name="Assertion" propertytype="System.Boolean" />
+        <property name="UnmanagedCode" propertytype="System.Boolean" />
+        <property name="Execution" propertytype="System.Boolean" />
+        <property name="SkipVerification" propertytype="System.Boolean" />
+        <property name="ControlThread" propertytype="System.Boolean" />
+        <property name="ControlEvidence" propertytype="System.Boolean" />
+        <property name="ControlPolicy" propertytype="System.Boolean" />
+        <property name="ControlDomainPolicy" propertytype="System.Boolean" />
+        <property name="ControlPrincipal" propertytype="System.Boolean" />
+        <property name="ControlAppDomain" propertytype="System.Boolean" />
+        <property name="SerializationFormatter" propertytype="System.Boolean" />
+        <property name="RemotingConfiguration" propertytype="System.Boolean" />
+        <property name="Infrastructure" propertytype="System.Boolean" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="UIPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="UIPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Window" propertytype="System.Security.Permissions.UIPermissionWindow" />
+        <property name="Clipboard" propertytype="System.Security.Permissions.UIPermissionClipboard" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="ZoneIdentityPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="ZoneIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Zone" propertytype="System.Security.SecurityZone" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="StrongNameIdentityPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="StrongNameIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Version" propertytype="System.String" />
+        <property name="PublicKey" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="SiteIdentityPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="SiteIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Site" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="UrlIdentityPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="UrlIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="Url" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="PublisherIdentityPermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="PublisherIdentityPermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="X509Certificate" propertytype="System.String" />
+        <property name="CertFile" propertytype="System.String" />
+        <property name="SignedFile" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="IsolatedStoragePermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="IsolatedStoragePermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="UserQuota" propertytype="System.Int64" />
+        <property name="UsageAllowed" propertytype="System.Security.Permissions.IsolatedStorageContainment" />
+    </class>
+    <class name="IsolatedStorageFilePermissionAttribute" namespace="System.Security.Permissions">
+        <constructor name="IsolatedStorageFilePermissionAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="PermissionSetAttribute" namespace="System.Security.Permissions">
+        <constructor name="PermissionSetAttribute(System.Security.Permissions.SecurityAction)" argnames="action" />
+        <property name="File" propertytype="System.String" />
+        <property name="UnicodeEncoded" propertytype="System.Boolean" />
+        <property name="Name" propertytype="System.String" />
+        <property name="XML" propertytype="System.String" />
+        <method name="CreatePermission()" argnames="" returntype="System.Security.IPermission" />
+        <method name="CreatePermissionSet()" argnames="" returntype="System.Security.PermissionSet" />
+    </class>
+    <class name="PublisherIdentityPermission" namespace="System.Security.Permissions">
+        <constructor name="PublisherIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="PublisherIdentityPermission(System.Security.Cryptography.X509Certificates.X509Certificate)" argnames="certificate" />
+        <property name="Certificate" propertytype="System.Security.Cryptography.X509Certificates.X509Certificate" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="ReflectionPermission" namespace="System.Security.Permissions">
+        <constructor name="ReflectionPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="ReflectionPermission(System.Security.Permissions.ReflectionPermissionFlag)" argnames="flag" />
+        <property name="Flags" propertytype="System.Security.Permissions.ReflectionPermissionFlag" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="RegistryPermission" namespace="System.Security.Permissions">
+        <constructor name="RegistryPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="RegistryPermission(System.Security.Permissions.RegistryPermissionAccess, System.String)" argnames="access, pathList" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+        <method name="SetPathList(System.Security.Permissions.RegistryPermissionAccess, System.String)" argnames="access, pathList" returntype="System.Void" />
+        <method name="AddPathList(System.Security.Permissions.RegistryPermissionAccess, System.String)" argnames="access, pathList" returntype="System.Void" />
+        <method name="GetPathList(System.Security.Permissions.RegistryPermissionAccess)" argnames="access" returntype="System.String" />
+    </class>
+    <class name="PrincipalPermission" namespace="System.Security.Permissions">
+        <constructor name="PrincipalPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="PrincipalPermission(System.String, System.String)" argnames="name, role" />
+        <constructor name="PrincipalPermission(System.String, System.String, System.Boolean)" argnames="name, role, isAuthenticated" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="elem" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="Demand()" argnames="" returntype="System.Void" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="other" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="SecurityPermission" namespace="System.Security.Permissions">
+        <constructor name="SecurityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="SecurityPermission(System.Security.Permissions.SecurityPermissionFlag)" argnames="flag" />
+        <property name="Flags" propertytype="System.Security.Permissions.SecurityPermissionFlag" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="SiteIdentityPermission" namespace="System.Security.Permissions">
+        <constructor name="SiteIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="SiteIdentityPermission(System.String)" argnames="site" />
+        <property name="Site" propertytype="System.String" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="StrongNameIdentityPermission" namespace="System.Security.Permissions">
+        <constructor name="StrongNameIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="StrongNameIdentityPermission(System.Security.Permissions.StrongNamePublicKeyBlob, System.String, System.Version)" argnames="blob, name, version" />
+        <property name="PublicKey" propertytype="System.Security.Permissions.StrongNamePublicKeyBlob" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Version" propertytype="System.Version" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="e" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="StrongNamePublicKeyBlob" namespace="System.Security.Permissions">
+        <constructor name="StrongNamePublicKeyBlob(System.Byte[])" argnames="publicKey" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="obj" returntype="System.Boolean" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+    </class>
+    <class name="UIPermission" namespace="System.Security.Permissions">
+        <constructor name="UIPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="UIPermission(System.Security.Permissions.UIPermissionWindow, System.Security.Permissions.UIPermissionClipboard)" argnames="windowFlag, clipboardFlag" />
+        <constructor name="UIPermission(System.Security.Permissions.UIPermissionWindow)" argnames="windowFlag" />
+        <constructor name="UIPermission(System.Security.Permissions.UIPermissionClipboard)" argnames="clipboardFlag" />
+        <property name="Window" propertytype="System.Security.Permissions.UIPermissionWindow" />
+        <property name="Clipboard" propertytype="System.Security.Permissions.UIPermissionClipboard" />
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="UrlIdentityPermission" namespace="System.Security.Permissions">
+        <constructor name="UrlIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="UrlIdentityPermission(System.String)" argnames="site" />
+        <property name="Url" propertytype="System.String" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <class name="ZoneIdentityPermission" namespace="System.Security.Permissions">
+        <constructor name="ZoneIdentityPermission(System.Security.Permissions.PermissionState)" argnames="state" />
+        <constructor name="ZoneIdentityPermission(System.Security.SecurityZone)" argnames="zone" />
+        <property name="SecurityZone" propertytype="System.Security.SecurityZone" />
+        <method name="FromXml(System.Security.SecurityElement)" argnames="esd" returntype="System.Void" />
+        <method name="ToXml()" argnames="" returntype="System.Security.SecurityElement" />
+        <method name="IsSubsetOf(System.Security.IPermission)" argnames="target" returntype="System.Boolean" />
+        <method name="Union(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Intersect(System.Security.IPermission)" argnames="target" returntype="System.Security.IPermission" />
+        <method name="Copy()" argnames="" returntype="System.Security.IPermission" />
+    </class>
+    <interface name="IUnrestrictedPermission" namespace="System.Security.Permissions">
+        <method name="IsUnrestricted()" argnames="" returntype="System.Boolean" />
+    </interface>
+    <enum name="EnvironmentPermissionAccess" namespace="System.Security.Permissions">
+        <field name="NoAccess" />
+        <field name="Read" />
+        <field name="Write" />
+        <field name="AllAccess" />
+    </enum>
+    <enum name="FileDialogPermissionAccess" namespace="System.Security.Permissions">
+        <field name="None" />
+        <field name="Open" />
+        <field name="Save" />
+        <field name="OpenSave" />
+    </enum>
+    <enum name="FileIOPermissionAccess" namespace="System.Security.Permissions">
+        <field name="NoAccess" />
+        <field name="Read" />
+        <field name="Write" />
+        <field name="Append" />
+        <field name="PathDiscovery" />
+        <field name="AllAccess" />
+    </enum>
+    <enum name="IsolatedStorageContainment" namespace="System.Security.Permissions">
+        <field name="None" />
+        <field name="DomainIsolationByUser" />
+        <field name="AssemblyIsolationByUser" />
+        <field name="DomainIsolationByRoamingUser" />
+        <field name="AssemblyIsolationByRoamingUser" />
+        <field name="AdministerIsolatedStorageByUser" />
+        <field name="UnrestrictedIsolatedStorage" />
+    </enum>
+    <enum name="PermissionState" namespace="System.Security.Permissions">
+        <field name="Unrestricted" />
+        <field name="None" />
+    </enum>
+    <enum name="SecurityAction" namespace="System.Security.Permissions">
+        <field name="Demand" />
+        <field name="Assert" />
+        <field name="Deny" />
+        <field name="PermitOnly" />
+        <field name="LinkDemand" />
+        <field name="InheritanceDemand" />
+        <field name="RequestMinimum" />
+        <field name="RequestOptional" />
+        <field name="RequestRefuse" />
+    </enum>
+    <enum name="ReflectionPermissionFlag" namespace="System.Security.Permissions">
+        <field name="NoFlags" />
+        <field name="TypeInformation" />
+        <field name="MemberAccess" />
+        <field name="ReflectionEmit" />
+        <field name="AllFlags" />
+    </enum>
+    <enum name="RegistryPermissionAccess" namespace="System.Security.Permissions">
+        <field name="NoAccess" />
+        <field name="Read" />
+        <field name="Write" />
+        <field name="Create" />
+        <field name="AllAccess" />
+    </enum>
+    <enum name="SecurityPermissionFlag" namespace="System.Security.Permissions">
+        <field name="NoFlags" />
+        <field name="Assertion" />
+        <field name="UnmanagedCode" />
+        <field name="SkipVerification" />
+        <field name="Execution" />
+        <field name="ControlThread" />
+        <field name="ControlEvidence" />
+        <field name="ControlPolicy" />
+        <field name="SerializationFormatter" />
+        <field name="ControlDomainPolicy" />
+        <field name="ControlPrincipal" />
+        <field name="ControlAppDomain" />
+        <field name="RemotingConfiguration" />
+        <field name="Infrastructure" />
+        <field name="AllFlags" />
+    </enum>
+    <enum name="UIPermissionWindow" namespace="System.Security.Permissions">
+        <field name="NoWindows" />
+        <field name="SafeSubWindows" />
+        <field name="SafeTopLevelWindows" />
+        <field name="AllWindows" />
+    </enum>
+    <enum name="UIPermissionClipboard" namespace="System.Security.Permissions">
+        <field name="NoClipboard" />
+        <field name="OwnClipboard" />
+        <field name="AllClipboard" />
+    </enum>
+    <class name="ContextAttribute" namespace="System.Runtime.Remoting.Contexts">
+        <constructor name="ContextAttribute(System.String)" argnames="name" />
+        <field name="AttributeName" />
+        <property name="Name" propertytype="System.String" />
+        <method name="Freeze(System.Runtime.Remoting.Contexts.Context)" argnames="newContext" returntype="System.Void" />
+        <method name="IsNewContextOK(System.Runtime.Remoting.Contexts.Context)" argnames="newCtx" returntype="System.Boolean" />
+        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Void" />
+        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, ctorMsg" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+    </class>
+    <class name="Context" namespace="System.Runtime.Remoting.Contexts">
+        <constructor name="Context()" argnames="" />
+        <property name="ContextID" propertytype="System.Int32" />
+        <property name="InternalContextID" propertytype="System.Int32" />
+        <property name="AppDomain" propertytype="System.AppDomain" />
+        <property name="IsDefaultContext" propertytype="System.Boolean" />
+        <property name="DefaultContext" propertytype="System.Runtime.Remoting.Contexts.Context" />
+        <property name="IsThreadPoolAware" propertytype="System.Boolean" />
+        <property name="ContextProperties" propertytype="System.Runtime.Remoting.Contexts.IContextProperty[]" />
+        <property name="MyLocalStore" propertytype="System.LocalDataStore" />
+        <property name="PerContextDynamicProperties" propertytype="System.Runtime.Remoting.Contexts.IDynamicProperty[]" />
+        <property name="GlobalDynamicProperties" propertytype="System.Runtime.Remoting.Contexts.IDynamicProperty[]" />
+        <property name="GlobalDynamicSinks" propertytype="System.Runtime.Remoting.Contexts.ArrayWithSize" />
+        <property name="DynamicSinks" propertytype="System.Runtime.Remoting.Contexts.ArrayWithSize" />
+        <method name="Freeze()" argnames="" returntype="System.Void" />
+        <method name="SetProperty(System.Runtime.Remoting.Contexts.IContextProperty)" argnames="prop" returntype="System.Void" />
+        <method name="GetProperty(System.String)" argnames="name" returntype="System.Runtime.Remoting.Contexts.IContextProperty" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="DoCallBack(System.Runtime.Remoting.Contexts.CrossContextDelegate)" argnames="deleg" returntype="System.Void" />
+        <method name="AllocateDataSlot()" argnames="" returntype="System.LocalDataStoreSlot" />
+        <method name="AllocateNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
+        <method name="GetNamedDataSlot(System.String)" argnames="name" returntype="System.LocalDataStoreSlot" />
+        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
+        <method name="SetData(System.LocalDataStoreSlot, System.Object)" argnames="slot, data" returntype="System.Void" />
+        <method name="GetData(System.LocalDataStoreSlot)" argnames="slot" returntype="System.Object" />
+        <method name="RegisterDynamicProperty(System.Runtime.Remoting.Contexts.IDynamicProperty, System.ContextBoundObject, System.Runtime.Remoting.Contexts.Context)" argnames="prop, obj, ctx" returntype="System.Boolean" />
+        <method name="UnregisterDynamicProperty(System.String, System.ContextBoundObject, System.Runtime.Remoting.Contexts.Context)" argnames="name, obj, ctx" returntype="System.Boolean" />
+    </class>
+    <class name="ContextProperty" namespace="System.Runtime.Remoting.Contexts">
+        <property name="Name" propertytype="System.String" />
+        <property name="Property" propertytype="System.Object" />
+    </class>
+    <class name="SynchronizationAttribute" namespace="System.Runtime.Remoting.Contexts">
+        <constructor name="SynchronizationAttribute()" argnames="" />
+        <constructor name="SynchronizationAttribute(System.Boolean)" argnames="reEntrant" />
+        <constructor name="SynchronizationAttribute(System.Int32)" argnames="flag" />
+        <constructor name="SynchronizationAttribute(System.Int32, System.Boolean)" argnames="flag, reEntrant" />
+        <field name="NOT_SUPPORTED" />
+        <field name="SUPPORTED" />
+        <field name="REQUIRED" />
+        <field name="REQUIRES_NEW" />
+        <property name="Locked" propertytype="System.Boolean" />
+        <property name="IsReEntrant" propertytype="System.Boolean" />
+        <property name="SyncCallOutLCID" propertytype="System.String" />
+        <property name="AsyncCallOutLCIDList" propertytype="System.Collections.ArrayList" />
+        <method name="GetClientContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="GetServerContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Void" />
+        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
+    </class>
+    <interface name="IContextAttribute" namespace="System.Runtime.Remoting.Contexts">
+        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Void" />
+        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
+    </interface>
+    <interface name="IContextProperty" namespace="System.Runtime.Remoting.Contexts">
+        <property name="Name" propertytype="System.String" />
+        <method name="Freeze(System.Runtime.Remoting.Contexts.Context)" argnames="newContext" returntype="System.Void" />
+        <method name="IsNewContextOK(System.Runtime.Remoting.Contexts.Context)" argnames="newCtx" returntype="System.Boolean" />
+    </interface>
+    <interface name="IContextPropertyActivator" namespace="System.Runtime.Remoting.Contexts">
+        <method name="DeliverServerContextToClientContext(System.Runtime.Remoting.Activation.IConstructionReturnMessage)" argnames="msg" returntype="System.Boolean" />
+        <method name="CollectFromServerContext(System.Runtime.Remoting.Activation.IConstructionReturnMessage)" argnames="msg" returntype="System.Void" />
+        <method name="DeliverClientContextToServerContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Boolean" />
+        <method name="CollectFromClientContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Void" />
+        <method name="IsOKToActivate(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Boolean" />
+    </interface>
+    <interface name="IContributeClientContextSink" namespace="System.Runtime.Remoting.Contexts">
+        <method name="GetClientContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+    </interface>
+    <interface name="IContributeDynamicSink" namespace="System.Runtime.Remoting.Contexts">
+        <method name="GetDynamicSink()" argnames="" returntype="System.Runtime.Remoting.Contexts.IDynamicMessageSink" />
+    </interface>
+    <interface name="IContributeEnvoySink" namespace="System.Runtime.Remoting.Contexts">
+        <method name="GetEnvoySink(System.MarshalByRefObject, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="obj, nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+    </interface>
+    <interface name="IContributeObjectSink" namespace="System.Runtime.Remoting.Contexts">
+        <method name="GetObjectSink(System.MarshalByRefObject, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="obj, nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+    </interface>
+    <interface name="IContributeServerContextSink" namespace="System.Runtime.Remoting.Contexts">
+        <method name="GetServerContextSink(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="nextSink" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+    </interface>
+    <interface name="IDynamicProperty" namespace="System.Runtime.Remoting.Contexts">
+        <property name="Name" propertytype="System.String" />
+    </interface>
+    <interface name="IDynamicMessageSink" namespace="System.Runtime.Remoting.Contexts">
+        <method name="ProcessMessageFinish(System.Runtime.Remoting.Messaging.IMessage, System.Boolean, System.Boolean)" argnames="replyMsg, bCliSide, bAsync" returntype="System.Void" />
+        <method name="ProcessMessageStart(System.Runtime.Remoting.Messaging.IMessage, System.Boolean, System.Boolean)" argnames="reqMsg, bCliSide, bAsync" returntype="System.Void" />
+    </interface>
+    <delegate name="CrossContextDelegate" namespace="System.Runtime.Remoting.Contexts">
+        <constructor name="CrossContextDelegate(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Void" />
+        <method name="BeginInvoke(System.AsyncCallback, System.Object)" argnames="callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke()" argnames="" returntype="System.Void" />
+    </delegate>
+    <class name="UrlAttribute" namespace="System.Runtime.Remoting.Activation">
+        <constructor name="UrlAttribute(System.String)" argnames="callsiteURL" />
+        <property name="UrlValue" propertytype="System.String" />
+        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Void" />
+        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
+        <method name="GetHashCode()" argnames="" returntype="System.Int32" />
+        <method name="Equals(System.Object)" argnames="o" returntype="System.Boolean" />
+    </class>
+    <interface name="IActivator" namespace="System.Runtime.Remoting.Activation">
+        <property name="NextActivator" propertytype="System.Runtime.Remoting.Activation.IActivator" />
+        <property name="Level" propertytype="System.Runtime.Remoting.Activation.ActivatorLevel" />
+        <method name="Activate(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Runtime.Remoting.Activation.IConstructionReturnMessage" />
+    </interface>
+    <interface name="IConstructionCallMessage" namespace="System.Runtime.Remoting.Activation">
+        <property name="Activator" propertytype="System.Runtime.Remoting.Activation.IActivator" />
+        <property name="CallSiteActivationAttributes" propertytype="System.Object[]" />
+        <property name="ActivationTypeName" propertytype="System.String" />
+        <property name="ActivationType" propertytype="System.Type" />
+        <property name="ContextProperties" propertytype="System.Collections.IList" />
+    </interface>
+    <interface name="IConstructionReturnMessage" namespace="System.Runtime.Remoting.Activation" />
+    <enum name="ActivatorLevel" namespace="System.Runtime.Remoting.Activation">
+        <field name="Construction" />
+        <field name="Context" />
+        <field name="AppDomain" />
+        <field name="Process" />
+        <field name="Machine" />
+    </enum>
+    <class name="AsyncResult" namespace="System.Runtime.Remoting.Messaging">
+        <property name="IsCompleted" propertytype="System.Boolean" />
+        <property name="AsyncDelegate" propertytype="System.Object" />
+        <property name="AsyncState" propertytype="System.Object" />
+        <property name="CompletedSynchronously" propertytype="System.Boolean" />
+        <property name="EndInvokeCalled" propertytype="System.Boolean" />
+        <property name="AsyncWaitHandle" propertytype="System.Threading.WaitHandle" />
+        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
+        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
+        <method name="GetReplyMessage()" argnames="" returntype="System.Runtime.Remoting.Messaging.IMessage" />
+        <method name="SetMessageCtrl(System.Runtime.Remoting.Messaging.IMessageCtrl)" argnames="mc" returntype="System.Void" />
+    </class>
+    <class name="CallContext" namespace="System.Runtime.Remoting.Messaging">
+        <property name="SecurityData" propertytype="System.Runtime.Remoting.Messaging.CallContextSecurityData" />
+        <property name="RemotingData" propertytype="System.Runtime.Remoting.Messaging.CallContextRemotingData" />
+        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
+        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
+        <method name="GetHeaders()" argnames="" returntype="System.Runtime.Remoting.Messaging.Header[]" />
+        <method name="SetHeaders(System.Runtime.Remoting.Messaging.Header[])" argnames="headers" returntype="System.Void" />
+    </class>
+    <class name="LogicalCallContext" namespace="System.Runtime.Remoting.Messaging">
+        <property name="HasInfo" propertytype="System.Boolean" />
+        <property name="HasUserData" propertytype="System.Boolean" />
+        <property name="RemotingData" propertytype="System.Runtime.Remoting.Messaging.CallContextRemotingData" />
+        <property name="SecurityData" propertytype="System.Runtime.Remoting.Messaging.CallContextSecurityData" />
+        <property name="Datastore" propertytype="System.Collections.Hashtable" />
+        <property name="Principal" propertytype="System.Security.Principal.IPrincipal" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="FreeNamedDataSlot(System.String)" argnames="name" returntype="System.Void" />
+        <method name="GetData(System.String)" argnames="name" returntype="System.Object" />
+        <method name="SetData(System.String, System.Object)" argnames="name, data" returntype="System.Void" />
+    </class>
+    <class name="InternalMessageWrapper" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="InternalMessageWrapper(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" />
+        <field name="WrappedMessage" />
+    </class>
+    <class name="MethodCallMessageWrapper" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="MethodCallMessageWrapper(System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="msg" />
+        <property name="Uri" propertytype="System.String" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="MethodSignature" propertytype="System.Object" />
+        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
+        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
+        <property name="ArgCount" propertytype="System.Int32" />
+        <property name="Args" propertytype="System.Object[]" />
+        <property name="HasVarArgs" propertytype="System.Boolean" />
+        <property name="InArgCount" propertytype="System.Int32" />
+        <property name="InArgs" propertytype="System.Object[]" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetInArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetInArgName(System.Int32)" argnames="index" returntype="System.String" />
+    </class>
+    <class name="Header" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="Header(System.String, System.Object)" argnames="_Name, _Value" />
+        <constructor name="Header(System.String, System.Object, System.Boolean)" argnames="_Name, _Value, _MustUnderstand" />
+        <constructor name="Header(System.String, System.Object, System.Boolean, System.String)" argnames="_Name, _Value, _MustUnderstand, _HeaderNamespace" />
+        <field name="Name" />
+        <field name="Value" />
+        <field name="MustUnderstand" />
+        <field name="HeaderNamespace" />
+    </class>
+    <class name="ReturnMessage" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="ReturnMessage(System.Object, System.Object[], System.Int32, System.Runtime.Remoting.Messaging.LogicalCallContext, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="ret, outArgs, outArgsCount, callCtx, mcm" />
+        <constructor name="ReturnMessage(System.Exception, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="e, mcm" />
+        <property name="Uri" propertytype="System.String" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="MethodSignature" propertytype="System.Object" />
+        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
+        <property name="HasVarArgs" propertytype="System.Boolean" />
+        <property name="ArgCount" propertytype="System.Int32" />
+        <property name="Args" propertytype="System.Object[]" />
+        <property name="OutArgCount" propertytype="System.Int32" />
+        <property name="OutArgs" propertytype="System.Object[]" />
+        <property name="Exception" propertytype="System.Exception" />
+        <property name="ReturnValue" propertytype="System.Object" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
+        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
+    </class>
+    <class name="MethodCall" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="MethodCall(System.Runtime.Remoting.Messaging.Header[])" argnames="h1" />
+        <constructor name="MethodCall(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" />
+        <field name="ExternalProperties" />
+        <field name="InternalProperties" />
+        <property name="ArgCount" propertytype="System.Int32" />
+        <property name="Args" propertytype="System.Object[]" />
+        <property name="InArgCount" propertytype="System.Int32" />
+        <property name="InArgs" propertytype="System.Object[]" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="MethodSignature" propertytype="System.Object" />
+        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
+        <property name="Uri" propertytype="System.String" />
+        <property name="HasVarArgs" propertytype="System.Boolean" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
+        <method name="RootSetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, ctx" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetInArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetInArgName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="HeaderHandler(System.Runtime.Remoting.Messaging.Header[])" argnames="h" returntype="System.Object" />
+        <method name="Init()" argnames="" returntype="System.Void" />
+        <method name="ResolveMethod()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="ConstructionCall" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="ConstructionCall(System.Runtime.Remoting.Messaging.Header[])" argnames="headers" />
+        <constructor name="ConstructionCall(System.Runtime.Remoting.Messaging.IMessage)" argnames="m" />
+        <property name="CallSiteActivationAttributes" propertytype="System.Object[]" />
+        <property name="ActivationType" propertytype="System.Type" />
+        <property name="ActivationTypeName" propertytype="System.String" />
+        <property name="ContextProperties" propertytype="System.Collections.IList" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <property name="Activator" propertytype="System.Runtime.Remoting.Activation.IActivator" />
+    </class>
+    <class name="MethodResponse" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="MethodResponse(System.Runtime.Remoting.Messaging.Header[], System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="h1, mcm" />
+        <field name="InternalProperties" />
+        <field name="ExternalProperties" />
+        <property name="Uri" propertytype="System.String" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="MethodSignature" propertytype="System.Object" />
+        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
+        <property name="HasVarArgs" propertytype="System.Boolean" />
+        <property name="ArgCount" propertytype="System.Int32" />
+        <property name="Args" propertytype="System.Object[]" />
+        <property name="OutArgCount" propertytype="System.Int32" />
+        <property name="OutArgs" propertytype="System.Object[]" />
+        <property name="Exception" propertytype="System.Exception" />
+        <property name="ReturnValue" propertytype="System.Object" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
+        <method name="RootSetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, ctx" returntype="System.Void" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="HeaderHandler(System.Runtime.Remoting.Messaging.Header[])" argnames="h" returntype="System.Object" />
+    </class>
+    <class name="ConstructionResponse" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="ConstructionResponse(System.Runtime.Remoting.Messaging.Header[], System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="h, mcm" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+    </class>
+    <class name="MethodReturnMessageWrapper" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="MethodReturnMessageWrapper(System.Runtime.Remoting.Messaging.IMethodReturnMessage)" argnames="msg" />
+        <property name="Uri" propertytype="System.String" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="MethodSignature" propertytype="System.Object" />
+        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
+        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
+        <property name="ArgCount" propertytype="System.Int32" />
+        <property name="Args" propertytype="System.Object[]" />
+        <property name="HasVarArgs" propertytype="System.Boolean" />
+        <property name="OutArgCount" propertytype="System.Int32" />
+        <property name="OutArgs" propertytype="System.Object[]" />
+        <property name="Exception" propertytype="System.Exception" />
+        <property name="ReturnValue" propertytype="System.Object" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
+        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
+    </class>
+    <class name="OneWayAttribute" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="OneWayAttribute()" argnames="" />
+    </class>
+    <class name="RemotingSurrogateSelector" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="RemotingSurrogateSelector()" argnames="" />
+        <property name="Filter" propertytype="System.Runtime.Remoting.Messaging.MessageSurrogateFilter" />
+        <method name="GetNextSelector()" argnames="" returntype="System.Runtime.Serialization.ISurrogateSelector" />
+        <method name="GetSurrogate(System.Type, System.Runtime.Serialization.StreamingContext, System.Runtime.Serialization.ISurrogateSelector&amp;)" argnames="type, context, ssout" returntype="System.Runtime.Serialization.ISerializationSurrogate" />
+        <method name="ChainSelector(System.Runtime.Serialization.ISurrogateSelector)" argnames="selector" returntype="System.Void" />
+        <method name="UseSoapFormat()" argnames="" returntype="System.Void" />
+        <method name="SetRootObject(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="GetRootObject()" argnames="" returntype="System.Object" />
+    </class>
+    <interface name="IMessageSink" namespace="System.Runtime.Remoting.Messaging">
+        <property name="NextSink" propertytype="System.Runtime.Remoting.Messaging.IMessageSink" />
+        <method name="AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
+        <method name="SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
+    </interface>
+    <interface name="ILogicalThreadAffinative" namespace="System.Runtime.Remoting.Messaging" />
+    <interface name="IMessage" namespace="System.Runtime.Remoting.Messaging">
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+    </interface>
+    <interface name="IMethodMessage" namespace="System.Runtime.Remoting.Messaging">
+        <property name="Uri" propertytype="System.String" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="TypeName" propertytype="System.String" />
+        <property name="MethodSignature" propertytype="System.Object" />
+        <property name="ArgCount" propertytype="System.Int32" />
+        <property name="Args" propertytype="System.Object[]" />
+        <property name="HasVarArgs" propertytype="System.Boolean" />
+        <property name="LogicalCallContext" propertytype="System.Runtime.Remoting.Messaging.LogicalCallContext" />
+        <property name="MethodBase" propertytype="System.Reflection.MethodBase" />
+        <method name="GetArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetArgName(System.Int32)" argnames="index" returntype="System.String" />
+    </interface>
+    <interface name="IMethodCallMessage" namespace="System.Runtime.Remoting.Messaging">
+        <property name="InArgCount" propertytype="System.Int32" />
+        <property name="InArgs" propertytype="System.Object[]" />
+        <method name="GetInArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetInArgName(System.Int32)" argnames="index" returntype="System.String" />
+    </interface>
+    <interface name="IMethodReturnMessage" namespace="System.Runtime.Remoting.Messaging">
+        <property name="OutArgCount" propertytype="System.Int32" />
+        <property name="OutArgs" propertytype="System.Object[]" />
+        <property name="Exception" propertytype="System.Exception" />
+        <property name="ReturnValue" propertytype="System.Object" />
+        <method name="GetOutArg(System.Int32)" argnames="argNum" returntype="System.Object" />
+        <method name="GetOutArgName(System.Int32)" argnames="index" returntype="System.String" />
+    </interface>
+    <interface name="IMessageCtrl" namespace="System.Runtime.Remoting.Messaging">
+        <method name="Cancel(System.Int32)" argnames="msToCancel" returntype="System.Void" />
+    </interface>
+    <interface name="IRemotingFormatter" namespace="System.Runtime.Remoting.Messaging">
+        <method name="Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])" argnames="serializationStream, graph, headers" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)" argnames="serializationStream, handler" returntype="System.Object" />
+    </interface>
+    <delegate name="HeaderHandler" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="HeaderHandler(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Object" />
+        <method name="BeginInvoke(System.Runtime.Remoting.Messaging.Header[], System.AsyncCallback, System.Object)" argnames="headers, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.Runtime.Remoting.Messaging.Header[])" argnames="headers" returntype="System.Object" />
+    </delegate>
+    <delegate name="MessageSurrogateFilter" namespace="System.Runtime.Remoting.Messaging">
+        <constructor name="MessageSurrogateFilter(System.Object, System.IntPtr)" argnames="object, method" />
+        <method name="EndInvoke(System.IAsyncResult)" argnames="result" returntype="System.Boolean" />
+        <method name="BeginInvoke(System.String, System.Object, System.AsyncCallback, System.Object)" argnames="key, value, callback, object" returntype="System.IAsyncResult" />
+        <method name="Invoke(System.String, System.Object)" argnames="key, value" returntype="System.Boolean" />
+    </delegate>
+    <class name="ChannelServices" namespace="System.Runtime.Remoting.Channels">
+        <property name="CurrentChannelData" propertytype="System.Object[]" />
+        <property name="remoteCalls" propertytype="System.Int64" />
+        <property name="RegisteredChannels" propertytype="System.Runtime.Remoting.Channels.IChannel[]" />
+        <method name="RegisterChannel(System.Runtime.Remoting.Channels.IChannel)" argnames="chnl" returntype="System.Void" />
+        <method name="UnregisterChannel(System.Runtime.Remoting.Channels.IChannel)" argnames="chnl" returntype="System.Void" />
+        <method name="GetChannel(System.String)" argnames="name" returntype="System.Runtime.Remoting.Channels.IChannel" />
+        <method name="GetUrlsForObject(System.MarshalByRefObject)" argnames="obj" returntype="System.String[]" />
+        <method name="GetChannelSinkProperties(System.Object)" argnames="obj" returntype="System.Collections.IDictionary" />
+        <method name="DispatchMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage&amp;)" argnames="sinkStack, msg, replyMsg" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
+        <method name="SyncDispatchMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
+        <method name="AsyncDispatchMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)" argnames="msg, replySink" returntype="System.Runtime.Remoting.Messaging.IMessageCtrl" />
+        <method name="CreateServerChannelSinkChain(System.Runtime.Remoting.Channels.IServerChannelSinkProvider, System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="provider, channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+    </class>
+    <class name="ClientChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="ClientChannelSinkStack()" argnames="" />
+        <constructor name="ClientChannelSinkStack(System.Runtime.Remoting.Messaging.IMessageSink)" argnames="replySink" />
+        <method name="DispatchException(System.Exception)" argnames="e" returntype="System.Void" />
+        <method name="DispatchReplyMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Void" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="headers, stream" returntype="System.Void" />
+        <method name="Pop(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="sink" returntype="System.Object" />
+        <method name="Push(System.Runtime.Remoting.Channels.IClientChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+    </class>
+    <class name="ServerChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="ServerChannelSinkStack()" argnames="" />
+        <property name="AsyncMessage" propertytype="System.Runtime.Remoting.Messaging.IMessage" />
+        <property name="AsyncEnd" propertytype="System.Reflection.MethodInfo" />
+        <property name="ServerObject" propertytype="System.Object" />
+        <property name="Message" propertytype="System.Runtime.Remoting.Messaging.IMethodCallMessage" />
+        <method name="GetResponseStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="msg, headers, stream" returntype="System.Void" />
+        <method name="ServerCallback(System.IAsyncResult)" argnames="ar" returntype="System.Void" />
+        <method name="StoreAndDispatch(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+        <method name="Store(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+        <method name="Pop(System.Runtime.Remoting.Channels.IServerChannelSink)" argnames="sink" returntype="System.Object" />
+        <method name="Push(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+    </class>
+    <class name="ChannelDataStore" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="ChannelDataStore(System.String[])" argnames="channelURIs" />
+        <property name="ChannelUris" propertytype="System.String[]" />
+        <property name="Item" propertytype="System.Object" />
+    </class>
+    <class name="TransportHeaders" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="TransportHeaders()" argnames="" />
+        <property name="Item" propertytype="System.Object" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+    </class>
+    <class name="SinkProviderData" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="SinkProviderData(System.String)" argnames="name" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <property name="Children" propertytype="System.Collections.IList" />
+    </class>
+    <class name="BaseChannelObjectWithProperties" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="BaseChannelObjectWithProperties()" argnames="" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+        <property name="Item" propertytype="System.Object" />
+        <property name="Keys" propertytype="System.Collections.ICollection" />
+        <property name="Values" propertytype="System.Collections.ICollection" />
+        <property name="IsReadOnly" propertytype="System.Boolean" />
+        <property name="IsFixedSize" propertytype="System.Boolean" />
+        <property name="Count" propertytype="System.Int32" />
+        <property name="SyncRoot" propertytype="System.Object" />
+        <property name="IsSynchronized" propertytype="System.Boolean" />
+        <method name="CopyTo(System.Array, System.Int32)" argnames="array, index" returntype="System.Void" />
+        <method name="Remove(System.Object)" argnames="key" returntype="System.Void" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IDictionaryEnumerator" />
+        <method name="Clear()" argnames="" returntype="System.Void" />
+        <method name="Add(System.Object, System.Object)" argnames="key, value" returntype="System.Void" />
+        <method name="Contains(System.Object)" argnames="key" returntype="System.Boolean" />
+    </class>
+    <class name="BaseChannelSinkWithProperties" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="BaseChannelSinkWithProperties()" argnames="" />
+    </class>
+    <class name="BaseChannelWithProperties" namespace="System.Runtime.Remoting.Channels">
+        <constructor name="BaseChannelWithProperties()" argnames="" />
+        <field name="SinksWithProperties" />
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+    </class>
+    <interface name="IClientResponseChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
+        <method name="DispatchException(System.Exception)" argnames="e" returntype="System.Void" />
+        <method name="DispatchReplyMessage(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Void" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="headers, stream" returntype="System.Void" />
+    </interface>
+    <interface name="IClientChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
+        <method name="Pop(System.Runtime.Remoting.Channels.IClientChannelSink)" argnames="sink" returntype="System.Object" />
+        <method name="Push(System.Runtime.Remoting.Channels.IClientChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+    </interface>
+    <interface name="IServerResponseChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
+        <method name="GetResponseStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="msg, headers, stream" returntype="System.Void" />
+    </interface>
+    <interface name="IServerChannelSinkStack" namespace="System.Runtime.Remoting.Channels">
+        <method name="ServerCallback(System.IAsyncResult)" argnames="ar" returntype="System.Void" />
+        <method name="StoreAndDispatch(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+        <method name="Store(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+        <method name="Pop(System.Runtime.Remoting.Channels.IServerChannelSink)" argnames="sink" returntype="System.Object" />
+        <method name="Push(System.Runtime.Remoting.Channels.IServerChannelSink, System.Object)" argnames="sink, state" returntype="System.Void" />
+    </interface>
+    <interface name="IChannel" namespace="System.Runtime.Remoting.Channels">
+        <property name="ChannelPriority" propertytype="System.Int32" />
+        <property name="ChannelName" propertytype="System.String" />
+        <method name="Parse(System.String, System.String&amp;)" argnames="url, objectURI" returntype="System.String" />
+    </interface>
+    <interface name="IChannelSender" namespace="System.Runtime.Remoting.Channels">
+        <method name="CreateMessageSink(System.String, System.Object, System.String&amp;)" argnames="url, remoteChannelData, objectURI" returntype="System.Runtime.Remoting.Messaging.IMessageSink" />
+    </interface>
+    <interface name="IChannelReceiver" namespace="System.Runtime.Remoting.Channels">
+        <property name="ChannelData" propertytype="System.Object" />
+        <method name="StopListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="StartListening(System.Object)" argnames="data" returntype="System.Void" />
+        <method name="GetUrlsForUri(System.String)" argnames="objectURI" returntype="System.String[]" />
+    </interface>
+    <interface name="IServerChannelSinkProvider" namespace="System.Runtime.Remoting.Channels">
+        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IServerChannelSinkProvider" />
+        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelReceiver)" argnames="channel" returntype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <method name="GetChannelData(System.Runtime.Remoting.Channels.IChannelDataStore)" argnames="channelData" returntype="System.Void" />
+    </interface>
+    <interface name="IChannelSinkBase" namespace="System.Runtime.Remoting.Channels">
+        <property name="Properties" propertytype="System.Collections.IDictionary" />
+    </interface>
+    <interface name="IServerChannelSink" namespace="System.Runtime.Remoting.Channels">
+        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <method name="GetResponseStream(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="sinkStack, state, msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IServerResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, msg, headers, stream" returntype="System.Void" />
+        <method name="ProcessMessage(System.Runtime.Remoting.Channels.IServerChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Messaging.IMessage&amp;, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream" returntype="System.Runtime.Remoting.Channels.ServerProcessing" />
+    </interface>
+    <interface name="IChannelReceiverHook" namespace="System.Runtime.Remoting.Channels">
+        <property name="ChannelScheme" propertytype="System.String" />
+        <property name="WantsToListen" propertytype="System.Boolean" />
+        <property name="ChannelSinkChain" propertytype="System.Runtime.Remoting.Channels.IServerChannelSink" />
+        <method name="AddHookChannelUri(System.String)" argnames="channelUri" returntype="System.Void" />
+    </interface>
+    <interface name="IClientChannelSinkProvider" namespace="System.Runtime.Remoting.Channels">
+        <property name="Next" propertytype="System.Runtime.Remoting.Channels.IClientChannelSinkProvider" />
+        <method name="CreateSink(System.Runtime.Remoting.Channels.IChannelSender, System.String, System.Object)" argnames="channel, url, remoteChannelData" returntype="System.Runtime.Remoting.Channels.IClientChannelSink" />
+    </interface>
+    <interface name="IClientFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels" />
+    <interface name="IServerFormatterSinkProvider" namespace="System.Runtime.Remoting.Channels" />
+    <interface name="IClientChannelSink" namespace="System.Runtime.Remoting.Channels">
+        <property name="NextChannelSink" propertytype="System.Runtime.Remoting.Channels.IClientChannelSink" />
+        <method name="GetRequestStream(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders)" argnames="msg, headers" returntype="System.IO.Stream" />
+        <method name="AsyncProcessResponse(System.Runtime.Remoting.Channels.IClientResponseChannelSinkStack, System.Object, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, state, headers, stream" returntype="System.Void" />
+        <method name="AsyncProcessRequest(System.Runtime.Remoting.Channels.IClientChannelSinkStack, System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream)" argnames="sinkStack, msg, headers, stream" returntype="System.Void" />
+        <method name="ProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Channels.ITransportHeaders, System.IO.Stream, System.Runtime.Remoting.Channels.ITransportHeaders&amp;, System.IO.Stream&amp;)" argnames="msg, requestHeaders, requestStream, responseHeaders, responseStream" returntype="System.Void" />
+    </interface>
+    <interface name="IClientFormatterSink" namespace="System.Runtime.Remoting.Channels" />
+    <interface name="IChannelDataStore" namespace="System.Runtime.Remoting.Channels">
+        <property name="ChannelUris" propertytype="System.String[]" />
+        <property name="Item" propertytype="System.Object" />
+    </interface>
+    <interface name="ITransportHeaders" namespace="System.Runtime.Remoting.Channels">
+        <property name="Item" propertytype="System.Object" />
+        <method name="GetEnumerator()" argnames="" returntype="System.Collections.IEnumerator" />
+    </interface>
+    <enum name="ServerProcessing" namespace="System.Runtime.Remoting.Channels">
+        <field name="Complete" />
+        <field name="OneWay" />
+        <field name="Async" />
+    </enum>
+    <class name="ClientSponsor" namespace="System.Runtime.Remoting.Lifetime">
+        <constructor name="ClientSponsor()" argnames="" />
+        <constructor name="ClientSponsor(System.TimeSpan)" argnames="renewalTime" />
+        <property name="RenewalTime" propertytype="System.TimeSpan" />
+        <method name="Renewal(System.Runtime.Remoting.Lifetime.ILease)" argnames="lease" returntype="System.TimeSpan" />
+        <method name="InitializeLifetimeService()" argnames="" returntype="System.Object" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="Register(System.MarshalByRefObject)" argnames="obj" returntype="System.Boolean" />
+        <method name="Unregister(System.MarshalByRefObject)" argnames="obj" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="LifetimeServices" namespace="System.Runtime.Remoting.Lifetime">
+        <constructor name="LifetimeServices()" argnames="" />
+        <property name="LeaseTime" propertytype="System.TimeSpan" />
+        <property name="RenewOnCallTime" propertytype="System.TimeSpan" />
+        <property name="SponsorshipTimeout" propertytype="System.TimeSpan" />
+        <property name="LeaseManagerPollTime" propertytype="System.TimeSpan" />
+    </class>
+    <interface name="ISponsor" namespace="System.Runtime.Remoting.Lifetime">
+        <method name="Renewal(System.Runtime.Remoting.Lifetime.ILease)" argnames="lease" returntype="System.TimeSpan" />
+    </interface>
+    <interface name="ILease" namespace="System.Runtime.Remoting.Lifetime">
+        <property name="RenewOnCallTime" propertytype="System.TimeSpan" />
+        <property name="SponsorshipTimeout" propertytype="System.TimeSpan" />
+        <property name="InitialLeaseTime" propertytype="System.TimeSpan" />
+        <property name="CurrentLeaseTime" propertytype="System.TimeSpan" />
+        <property name="CurrentState" propertytype="System.Runtime.Remoting.Lifetime.LeaseState" />
+        <method name="Renew(System.TimeSpan)" argnames="renewalTime" returntype="System.TimeSpan" />
+        <method name="Unregister(System.Runtime.Remoting.Lifetime.ISponsor)" argnames="obj" returntype="System.Void" />
+        <method name="Register(System.Runtime.Remoting.Lifetime.ISponsor)" argnames="obj" returntype="System.Void" />
+        <method name="Register(System.Runtime.Remoting.Lifetime.ISponsor, System.TimeSpan)" argnames="obj, renewalTime" returntype="System.Void" />
+    </interface>
+    <enum name="LeaseState" namespace="System.Runtime.Remoting.Lifetime">
+        <field name="Null" />
+        <field name="Initial" />
+        <field name="Active" />
+        <field name="Renewing" />
+        <field name="Expired" />
+    </enum>
+    <class name="EnterpriseServicesHelper" namespace="System.Runtime.Remoting.Services">
+        <constructor name="EnterpriseServicesHelper()" argnames="" />
+        <method name="WrapIUnknownWithComObject(System.IntPtr)" argnames="punk" returntype="System.Object" />
+        <method name="CreateConstructionReturnMessage(System.Runtime.Remoting.Activation.IConstructionCallMessage, System.MarshalByRefObject)" argnames="ctorMsg, retObj" returntype="System.Runtime.Remoting.Activation.IConstructionReturnMessage" />
+        <method name="SwitchWrappers(System.Runtime.Remoting.Proxies.RealProxy, System.Runtime.Remoting.Proxies.RealProxy)" argnames="oldcp, newcp" returntype="System.Void" />
+    </class>
+    <class name="TrackingServices" namespace="System.Runtime.Remoting.Services">
+        <constructor name="TrackingServices()" argnames="" />
+        <property name="RegisteredHandlers" propertytype="System.Runtime.Remoting.Services.ITrackingHandler[]" />
+        <method name="RegisterTrackingHandler(System.Runtime.Remoting.Services.ITrackingHandler)" argnames="handler" returntype="System.Void" />
+        <method name="UnregisterTrackingHandler(System.Runtime.Remoting.Services.ITrackingHandler)" argnames="handler" returntype="System.Void" />
+    </class>
+    <interface name="ITrackingHandler" namespace="System.Runtime.Remoting.Services">
+        <method name="DisconnectedObject(System.Object)" argnames="obj" returntype="System.Void" />
+        <method name="UnmarshaledObject(System.Object, System.Runtime.Remoting.ObjRef)" argnames="obj, or" returntype="System.Void" />
+        <method name="MarshaledObject(System.Object, System.Runtime.Remoting.ObjRef)" argnames="obj, or" returntype="System.Void" />
+    </interface>
+    <class name="InternalRM" namespace="System.Runtime.Serialization.Formatters" />
+    <class name="InternalST" namespace="System.Runtime.Serialization.Formatters" />
+    <class name="SoapMessage" namespace="System.Runtime.Serialization.Formatters">
+        <constructor name="SoapMessage()" argnames="" />
+        <property name="ParamNames" propertytype="System.String[]" />
+        <property name="ParamValues" propertytype="System.Object[]" />
+        <property name="ParamTypes" propertytype="System.Type[]" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="XmlNameSpace" propertytype="System.String" />
+        <property name="Headers" propertytype="System.Runtime.Remoting.Messaging.Header[]" />
+    </class>
+    <class name="SoapFault" namespace="System.Runtime.Serialization.Formatters">
+        <constructor name="SoapFault()" argnames="" />
+        <constructor name="SoapFault(System.String, System.String, System.String, System.Runtime.Serialization.Formatters.ServerFault)" argnames="faultCode, faultString, faultActor, serverFault" />
+        <property name="FaultCode" propertytype="System.String" />
+        <property name="FaultString" propertytype="System.String" />
+        <property name="FaultActor" propertytype="System.String" />
+        <property name="Detail" propertytype="System.Object" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+    </class>
+    <class name="ServerFault" namespace="System.Runtime.Serialization.Formatters">
+        <constructor name="ServerFault(System.String, System.String, System.String)" argnames="exceptionType, message, stackTrace" />
+        <property name="ExceptionType" propertytype="System.String" />
+        <property name="ExceptionMessage" propertytype="System.String" />
+        <property name="StackTrace" propertytype="System.String" />
+        <property name="Exception" propertytype="System.Exception" />
+    </class>
+    <interface name="IFieldInfo" namespace="System.Runtime.Serialization.Formatters">
+        <property name="FieldNames" propertytype="System.String[]" />
+        <property name="FieldTypes" propertytype="System.Type[]" />
+    </interface>
+    <interface name="ISoapMessage" namespace="System.Runtime.Serialization.Formatters">
+        <property name="ParamNames" propertytype="System.String[]" />
+        <property name="ParamValues" propertytype="System.Object[]" />
+        <property name="ParamTypes" propertytype="System.Type[]" />
+        <property name="MethodName" propertytype="System.String" />
+        <property name="XmlNameSpace" propertytype="System.String" />
+        <property name="Headers" propertytype="System.Runtime.Remoting.Messaging.Header[]" />
+    </interface>
+    <enum name="FormatterTypeStyle" namespace="System.Runtime.Serialization.Formatters">
+        <field name="TypesWhenNeeded" />
+        <field name="TypesAlways" />
+        <field name="XsdString" />
+    </enum>
+    <enum name="FormatterAssemblyStyle" namespace="System.Runtime.Serialization.Formatters">
+        <field name="Simple" />
+        <field name="Full" />
+    </enum>
+    <class name="ProxyAttribute" namespace="System.Runtime.Remoting.Proxies">
+        <constructor name="ProxyAttribute()" argnames="" />
+        <method name="GetPropertiesForNewContext(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="msg" returntype="System.Void" />
+        <method name="IsContextOK(System.Runtime.Remoting.Contexts.Context, System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctx, msg" returntype="System.Boolean" />
+        <method name="CreateProxy(System.Runtime.Remoting.ObjRef, System.Type, System.Object, System.Runtime.Remoting.Contexts.Context)" argnames="objRef, serverType, serverObject, serverContext" returntype="System.Runtime.Remoting.Proxies.RealProxy" />
+        <method name="CreateInstance(System.Type)" argnames="serverType" returntype="System.MarshalByRefObject" />
+    </class>
+    <class name="RealProxy" namespace="System.Runtime.Remoting.Proxies">
+        <constructor name="RealProxy(System.Type)" argnames="classToProxy" />
+        <constructor name="RealProxy(System.Type, System.IntPtr, System.Object)" argnames="classToProxy, stub, stubData" />
+        <constructor name="RealProxy()" argnames="" />
+        <property name="UnwrappedServerObject" propertytype="System.MarshalByRefObject" />
+        <property name="IdentityObject" propertytype="System.Runtime.Remoting.Identity" />
+        <method name="GetTransparentProxy()" argnames="" returntype="System.Object" />
+        <method name="SupportsInterface(System.Guid&amp;)" argnames="iid" returntype="System.IntPtr" />
+        <method name="SetCOMIUnknown(System.IntPtr)" argnames="i" returntype="System.Void" />
+        <method name="GetCOMIUnknown(System.Boolean)" argnames="fIsMarshalled" returntype="System.IntPtr" />
+        <method name="GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" returntype="System.Void" />
+        <method name="CreateObjRef(System.Type)" argnames="requestedType" returntype="System.Runtime.Remoting.ObjRef" />
+        <method name="Invoke(System.Runtime.Remoting.Messaging.IMessage)" argnames="msg" returntype="System.Runtime.Remoting.Messaging.IMessage" />
+        <method name="InitializeServerObject(System.Runtime.Remoting.Activation.IConstructionCallMessage)" argnames="ctorMsg" returntype="System.Runtime.Remoting.Activation.IConstructionReturnMessage" />
+        <method name="GetUnwrappedServer()" argnames="" returntype="System.MarshalByRefObject" />
+        <method name="DetachServer()" argnames="" returntype="System.MarshalByRefObject" />
+        <method name="AttachServer(System.MarshalByRefObject)" argnames="s" returntype="System.Void" />
+        <method name="SetStubData(System.Runtime.Remoting.Proxies.RealProxy, System.Object)" argnames="rp, stubData" returntype="System.Void" />
+        <method name="GetStubData(System.Runtime.Remoting.Proxies.RealProxy)" argnames="rp" returntype="System.Object" />
+        <method name="GetProxiedType()" argnames="" returntype="System.Type" />
+    </class>
+    <class name="SoapAttribute" namespace="System.Runtime.Remoting.Metadata">
+        <constructor name="SoapAttribute()" argnames="" />
+        <field name="ProtXmlNamespace" />
+        <field name="ReflectInfo" />
+        <property name="XmlNamespace" propertytype="System.String" />
+        <property name="UseAttribute" propertytype="System.Boolean" />
+        <property name="Embedded" propertytype="System.Boolean" />
+    </class>
+    <class name="SoapTypeAttribute" namespace="System.Runtime.Remoting.Metadata">
+        <constructor name="SoapTypeAttribute()" argnames="" />
+        <property name="SoapOptions" propertytype="System.Runtime.Remoting.Metadata.SoapOption" />
+        <property name="XmlElementName" propertytype="System.String" />
+        <property name="XmlNamespace" propertytype="System.String" />
+        <property name="XmlTypeName" propertytype="System.String" />
+        <property name="XmlTypeNamespace" propertytype="System.String" />
+        <property name="XmlFieldOrder" propertytype="System.Runtime.Remoting.Metadata.XmlFieldOrderOption" />
+        <property name="UseAttribute" propertytype="System.Boolean" />
+    </class>
+    <class name="SoapMethodAttribute" namespace="System.Runtime.Remoting.Metadata">
+        <constructor name="SoapMethodAttribute()" argnames="" />
+        <property name="SoapActionExplicitySet" propertytype="System.Boolean" />
+        <property name="SoapAction" propertytype="System.String" />
+        <property name="UseAttribute" propertytype="System.Boolean" />
+        <property name="XmlNamespace" propertytype="System.String" />
+        <property name="ResponseXmlElementName" propertytype="System.String" />
+        <property name="ResponseXmlNamespace" propertytype="System.String" />
+        <property name="ReturnXmlElementName" propertytype="System.String" />
+        <property name="XmlTypeNamespaceOfDeclaringType" propertytype="System.String" />
+    </class>
+    <class name="SoapFieldAttribute" namespace="System.Runtime.Remoting.Metadata">
+        <constructor name="SoapFieldAttribute()" argnames="" />
+        <property name="XmlElementName" propertytype="System.String" />
+        <property name="Order" propertytype="System.Int32" />
+        <method name="IsInteropXmlElement()" argnames="" returntype="System.Boolean" />
+    </class>
+    <class name="SoapParameterAttribute" namespace="System.Runtime.Remoting.Metadata">
+        <constructor name="SoapParameterAttribute()" argnames="" />
+    </class>
+    <enum name="SoapOption" namespace="System.Runtime.Remoting.Metadata">
+        <field name="None" />
+        <field name="AlwaysIncludeTypes" />
+        <field name="XsdString" />
+        <field name="EmbedAll" />
+        <field name="Option1" />
+        <field name="Option2" />
+    </enum>
+    <enum name="XmlFieldOrderOption" namespace="System.Runtime.Remoting.Metadata">
+        <field name="All" />
+        <field name="Sequence" />
+        <field name="Choice" />
+    </enum>
+    <class name="SoapDateTime" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapDateTime()" argnames="" />
+        <property name="XsdType" propertytype="System.String" />
+        <method name="ToString(System.DateTime)" argnames="value" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.DateTime" />
+    </class>
+    <class name="SoapDuration" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapDuration()" argnames="" />
+        <property name="XsdType" propertytype="System.String" />
+        <method name="ToString(System.TimeSpan)" argnames="timeSpan" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.TimeSpan" />
+    </class>
+    <class name="SoapTime" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapTime()" argnames="" />
+        <constructor name="SoapTime(System.DateTime)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapTime" />
+    </class>
+    <class name="SoapDate" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapDate()" argnames="" />
+        <constructor name="SoapDate(System.DateTime)" argnames="value" />
+        <constructor name="SoapDate(System.DateTime, System.Int32)" argnames="value, sign" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <property name="Sign" propertytype="System.Int32" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDate" />
+    </class>
+    <class name="SoapYearMonth" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapYearMonth()" argnames="" />
+        <constructor name="SoapYearMonth(System.DateTime)" argnames="value" />
+        <constructor name="SoapYearMonth(System.DateTime, System.Int32)" argnames="value, sign" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <property name="Sign" propertytype="System.Int32" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYearMonth" />
+    </class>
+    <class name="SoapYear" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapYear()" argnames="" />
+        <constructor name="SoapYear(System.DateTime)" argnames="value" />
+        <constructor name="SoapYear(System.DateTime, System.Int32)" argnames="value, sign" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <property name="Sign" propertytype="System.Int32" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapYear" />
+    </class>
+    <class name="SoapMonthDay" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapMonthDay()" argnames="" />
+        <constructor name="SoapMonthDay(System.DateTime)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonthDay" />
+    </class>
+    <class name="SoapDay" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapDay()" argnames="" />
+        <constructor name="SoapDay(System.DateTime)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapDay" />
+    </class>
+    <class name="SoapMonth" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapMonth()" argnames="" />
+        <constructor name="SoapMonth(System.DateTime)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.DateTime" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapMonth" />
+    </class>
+    <class name="SoapHexBinary" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapHexBinary()" argnames="" />
+        <constructor name="SoapHexBinary(System.Byte[])" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.Byte[]" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapHexBinary" />
+    </class>
+    <class name="SoapBase64Binary" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapBase64Binary()" argnames="" />
+        <constructor name="SoapBase64Binary(System.Byte[])" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.Byte[]" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapBase64Binary" />
+    </class>
+    <class name="SoapInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapInteger()" argnames="" />
+        <constructor name="SoapInteger(System.Decimal)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.Decimal" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapInteger" />
+    </class>
+    <class name="SoapPositiveInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapPositiveInteger()" argnames="" />
+        <constructor name="SoapPositiveInteger(System.Decimal)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.Decimal" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapPositiveInteger" />
+    </class>
+    <class name="SoapNonPositiveInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNonPositiveInteger()" argnames="" />
+        <constructor name="SoapNonPositiveInteger(System.Decimal)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.Decimal" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonPositiveInteger" />
+    </class>
+    <class name="SoapNonNegativeInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNonNegativeInteger()" argnames="" />
+        <constructor name="SoapNonNegativeInteger(System.Decimal)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.Decimal" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNonNegativeInteger" />
+    </class>
+    <class name="SoapNegativeInteger" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNegativeInteger()" argnames="" />
+        <constructor name="SoapNegativeInteger(System.Decimal)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.Decimal" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNegativeInteger" />
+    </class>
+    <class name="SoapAnyUri" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapAnyUri()" argnames="" />
+        <constructor name="SoapAnyUri(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapAnyUri" />
+    </class>
+    <class name="SoapQName" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapQName()" argnames="" />
+        <constructor name="SoapQName(System.String)" argnames="value" />
+        <constructor name="SoapQName(System.String, System.String)" argnames="key, name" />
+        <constructor name="SoapQName(System.String, System.String, System.String)" argnames="key, name, namespaceValue" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Name" propertytype="System.String" />
+        <property name="Namespace" propertytype="System.String" />
+        <property name="Key" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapQName" />
+    </class>
+    <class name="SoapNotation" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNotation()" argnames="" />
+        <constructor name="SoapNotation(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNotation" />
+    </class>
+    <class name="SoapNormalizedString" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNormalizedString()" argnames="" />
+        <constructor name="SoapNormalizedString(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNormalizedString" />
+    </class>
+    <class name="SoapToken" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapToken()" argnames="" />
+        <constructor name="SoapToken(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapToken" />
+    </class>
+    <class name="SoapLanguage" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapLanguage()" argnames="" />
+        <constructor name="SoapLanguage(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapLanguage" />
+    </class>
+    <class name="SoapName" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapName()" argnames="" />
+        <constructor name="SoapName(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapName" />
+    </class>
+    <class name="SoapIdrefs" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapIdrefs()" argnames="" />
+        <constructor name="SoapIdrefs(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdrefs" />
+    </class>
+    <class name="SoapEntities" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapEntities()" argnames="" />
+        <constructor name="SoapEntities(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntities" />
+    </class>
+    <class name="SoapNmtoken" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNmtoken()" argnames="" />
+        <constructor name="SoapNmtoken(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtoken" />
+    </class>
+    <class name="SoapNmtokens" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNmtokens()" argnames="" />
+        <constructor name="SoapNmtokens(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNmtokens" />
+    </class>
+    <class name="SoapNcName" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapNcName()" argnames="" />
+        <constructor name="SoapNcName(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapNcName" />
+    </class>
+    <class name="SoapId" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapId()" argnames="" />
+        <constructor name="SoapId(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapId" />
+    </class>
+    <class name="SoapIdref" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapIdref()" argnames="" />
+        <constructor name="SoapIdref(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapIdref" />
+    </class>
+    <class name="SoapEntity" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <constructor name="SoapEntity()" argnames="" />
+        <constructor name="SoapEntity(System.String)" argnames="value" />
+        <property name="XsdType" propertytype="System.String" />
+        <property name="Value" propertytype="System.String" />
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+        <method name="ToString()" argnames="" returntype="System.String" />
+        <method name="Parse(System.String)" argnames="value" returntype="System.Runtime.Remoting.Metadata.W3cXsd2001.SoapEntity" />
+    </class>
+    <interface name="ISoapXsd" namespace="System.Runtime.Remoting.Metadata.W3cXsd2001">
+        <method name="GetXsdType()" argnames="" returntype="System.String" />
+    </interface>
+    <class name="IsolatedStorage" namespace="System.IO.IsolatedStorage">
+        <constructor name="IsolatedStorage()" argnames="" />
+        <property name="SeparatorExternal" propertytype="System.Char" />
+        <property name="SeparatorInternal" propertytype="System.Char" />
+        <property name="MaximumSize" propertytype="System.UInt64" />
+        <property name="CurrentSize" propertytype="System.UInt64" />
+        <property name="DomainIdentity" propertytype="System.Object" />
+        <property name="AssemblyIdentity" propertytype="System.Object" />
+        <property name="Scope" propertytype="System.IO.IsolatedStorage.IsolatedStorageScope" />
+        <property name="AppName" propertytype="System.String" />
+        <property name="AssemName" propertytype="System.String" />
+        <method name="GetPermission(System.Security.PermissionSet)" argnames="ps" returntype="System.Security.Permissions.IsolatedStoragePermission" />
+        <method name="Remove()" argnames="" returntype="System.Void" />
+        <method name="InitStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Type, System.Type)" argnames="scope, domainEvidenceType, assemblyEvidenceType" returntype="System.Void" />
+    </class>
+    <class name="IsolatedStorageFile" namespace="System.IO.IsolatedStorage">
+        <property name="CurrentSize" propertytype="System.UInt64" />
+        <property name="MaximumSize" propertytype="System.UInt64" />
+        <property name="RootDirectory" propertytype="System.String" />
+        <method name="Dispose()" argnames="" returntype="System.Void" />
+        <method name="GetPermission(System.Security.PermissionSet)" argnames="ps" returntype="System.Security.Permissions.IsolatedStoragePermission" />
+        <method name="Remove()" argnames="" returntype="System.Void" />
+        <method name="Finalize()" argnames="" returntype="System.Void" />
+        <method name="GetUserStoreForDomain()" argnames="" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
+        <method name="GetUserStoreForAssembly()" argnames="" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
+        <method name="GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Type, System.Type)" argnames="scope, domainEvidenceType, assemblyEvidenceType" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
+        <method name="GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Object, System.Object)" argnames="scope, domainIdentity, assemblyIdentity" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
+        <method name="GetStore(System.IO.IsolatedStorage.IsolatedStorageScope, System.Security.Policy.Evidence, System.Type, System.Security.Policy.Evidence, System.Type)" argnames="scope, domainEvidence, domainEvidenceType, assemblyEvidence, assemblyEvidenceType" returntype="System.IO.IsolatedStorage.IsolatedStorageFile" />
+        <method name="DeleteFile(System.String)" argnames="file" returntype="System.Void" />
+        <method name="CreateDirectory(System.String)" argnames="dir" returntype="System.Void" />
+        <method name="DeleteDirectory(System.String)" argnames="dir" returntype="System.Void" />
+        <method name="GetFileNames(System.String)" argnames="searchPattern" returntype="System.String[]" />
+        <method name="GetDirectoryNames(System.String)" argnames="searchPattern" returntype="System.String[]" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+        <method name="Remove(System.IO.IsolatedStorage.IsolatedStorageScope)" argnames="scope" returntype="System.Void" />
+        <method name="GetEnumerator(System.IO.IsolatedStorage.IsolatedStorageScope)" argnames="scope" returntype="System.Collections.IEnumerator" />
+    </class>
+    <class name="IsolatedStorageFileStream" namespace="System.IO.IsolatedStorage">
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode)" argnames="path, mode" />
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, isf" />
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess)" argnames="path, mode, access" />
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, access, isf" />
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)" argnames="path, mode, access, share" />
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, access, share, isf" />
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32)" argnames="path, mode, access, share, bufferSize" />
+        <constructor name="IsolatedStorageFileStream(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, System.Int32, System.IO.IsolatedStorage.IsolatedStorageFile)" argnames="path, mode, access, share, bufferSize, isf" />
+        <property name="CanRead" propertytype="System.Boolean" />
+        <property name="CanWrite" propertytype="System.Boolean" />
+        <property name="CanSeek" propertytype="System.Boolean" />
+        <property name="IsAsync" propertytype="System.Boolean" />
+        <property name="Length" propertytype="System.Int64" />
+        <property name="Position" propertytype="System.Int64" />
+        <property name="Handle" propertytype="System.IntPtr" />
+        <method name="Dispose(System.Boolean)" argnames="disposing" returntype="System.Void" />
+        <method name="WriteByte(System.Byte)" argnames="value" returntype="System.Void" />
+        <method name="Write(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Void" />
+        <method name="ReadByte()" argnames="" returntype="System.Int32" />
+        <method name="Read(System.Byte[], System.Int32, System.Int32)" argnames="buffer, offset, count" returntype="System.Int32" />
+        <method name="SetLength(System.Int64)" argnames="value" returntype="System.Void" />
+        <method name="Seek(System.Int64, System.IO.SeekOrigin)" argnames="offset, origin" returntype="System.Int64" />
+        <method name="EndWrite(System.IAsyncResult)" argnames="asyncResult" returntype="System.Void" />
+        <method name="BeginWrite(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
+        <method name="EndRead(System.IAsyncResult)" argnames="asyncResult" returntype="System.Int32" />
+        <method name="BeginRead(System.Byte[], System.Int32, System.Int32, System.AsyncCallback, System.Object)" argnames="buffer, offset, numBytes, userCallback, stateObject" returntype="System.IAsyncResult" />
+        <method name="Flush()" argnames="" returntype="System.Void" />
+        <method name="Close()" argnames="" returntype="System.Void" />
+    </class>
+    <class name="IsolatedStorageException" namespace="System.IO.IsolatedStorage">
+        <constructor name="IsolatedStorageException()" argnames="" />
+        <constructor name="IsolatedStorageException(System.String)" argnames="message" />
+        <constructor name="IsolatedStorageException(System.String, System.Exception)" argnames="message, inner" />
+        <constructor name="IsolatedStorageException(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)" argnames="info, context" />
+    </class>
+    <interface name="INormalizeForIsolatedStorage" namespace="System.IO.IsolatedStorage">
+        <method name="Normalize()" argnames="" returntype="System.Object" />
+    </interface>
+    <enum name="IsolatedStorageScope" namespace="System.IO.IsolatedStorage">
+        <field name="None" />
+        <field name="User" />
+        <field name="Domain" />
+        <field name="Assembly" />
+        <field name="Roaming" />
+    </enum>
+    <class name="BinaryFormatter" namespace="System.Runtime.Serialization.Formatters.Binary">
+        <constructor name="BinaryFormatter()" argnames="" />
+        <constructor name="BinaryFormatter(System.Runtime.Serialization.ISurrogateSelector, System.Runtime.Serialization.StreamingContext)" argnames="selector, context" />
+        <property name="TypeFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterTypeStyle" />
+        <property name="AssemblyFormat" propertytype="System.Runtime.Serialization.Formatters.FormatterAssemblyStyle" />
+        <property name="SurrogateSelector" propertytype="System.Runtime.Serialization.ISurrogateSelector" />
+        <property name="Binder" propertytype="System.Runtime.Serialization.SerializationBinder" />
+        <property name="Context" propertytype="System.Runtime.Serialization.StreamingContext" />
+        <property name="CrossAppDomainArray" propertytype="System.Object[]" />
+        <method name="Serialize(System.IO.Stream, System.Object)" argnames="serializationStream, graph" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream)" argnames="serializationStream" returntype="System.Object" />
+        <method name="Serialize(System.IO.Stream, System.Object, System.Runtime.Remoting.Messaging.Header[])" argnames="serializationStream, graph, headers" returntype="System.Void" />
+        <method name="Deserialize(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler)" argnames="serializationStream, handler" returntype="System.Object" />
+        <method name="DeserializeMethodResponse(System.IO.Stream, System.Runtime.Remoting.Messaging.HeaderHandler, System.Runtime.Remoting.Messaging.IMethodCallMessage)" argnames="serializationStream, handler, methodCallMessage" returntype="System.Object" />
+    </class>
+    <struct name="AssemblyHash" namespace="System.Configuration.Assemblies">
+        <constructor name="AssemblyHash(System.Byte[])" argnames="value" />
+        <constructor name="AssemblyHash(System.Configuration.Assemblies.AssemblyHashAlgorithm, System.Byte[])" argnames="algorithm, value" />
+        <field name="Empty" />
+        <property name="Algorithm" propertytype="System.Configuration.Assemblies.AssemblyHashAlgorithm" />
+        <method name="Clone()" argnames="" returntype="System.Object" />
+        <method name="GetValue()" argnames="" returntype="System.Byte[]" />
+        <method name="SetValue(System.Byte[])" argnames="value" returntype="System.Void" />
+    </struct>
+    <enum name="AssemblyHashAlgorithm" namespace="System.Configuration.Assemblies">
+        <field name="None" />
+        <field name="MD5" />
+        <field name="SHA1" />
+    </enum>
+    <enum name="AssemblyVersionCompatibility" namespace="System.Configuration.Assemblies">
+        <field name="SameMachine" />
+        <field name="SameProcess" />
+        <field name="SameDomain" />
+    </enum>
 </masterdoc>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.IO/MonoIOError.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.IO/MonoIOError.cs
@@ -1,1827 +1,1827 @@
-//
-// System.IO.MonoIOError.cs: Win32 error codes. Yuck.
-//
-// Author:
-//   Dan Lewis (dihlewis@yahoo.co.uk)
-//
-// (C) 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.IO
-{
-	internal enum MonoIOError: int {
-		ERROR_SUCCESS = 0,
-	/*	ERROR_INVALID_FUNCTION = 1,
-	*/	ERROR_FILE_NOT_FOUND = 2,
-		ERROR_PATH_NOT_FOUND = 3,
-		ERROR_TOO_MANY_OPEN_FILES = 4,
-		ERROR_ACCESS_DENIED = 5,
-		ERROR_INVALID_HANDLE = 6,
-	/*	ERROR_ARENA_TRASHED = 7,
-		ERROR_NOT_ENOUGH_MEMORY = 8,
-		ERROR_INVALID_BLOCK = 9,
-		ERROR_BAD_ENVIRONMENT = 10,
-		ERROR_BAD_FORMAT = 11,
-		ERROR_INVALID_ACCESS = 12,
-		ERROR_INVALID_DATA = 13,
-		ERROR_OUTOFMEMORY = 14,
-	*/	ERROR_INVALID_DRIVE = 15,
-	/*	ERROR_CURRENT_DIRECTORY = 16,
-	*/	ERROR_NOT_SAME_DEVICE = 17,
-		ERROR_NO_MORE_FILES = 18,
-	/*	ERROR_WRITE_PROTECT = 19,
-		ERROR_BAD_UNIT = 20,
-	*/
-		ERROR_NOT_READY = 21,
-	/*
-		ERROR_BAD_COMMAND = 22,
-		ERROR_CRC = 23,
-		ERROR_BAD_LENGTH = 24,
-		ERROR_SEEK = 25,
-		ERROR_NOT_DOS_DISK = 26,
-		ERROR_SECTOR_NOT_FOUND = 27,
-		ERROR_OUT_OF_PAPER = 28,*/
-		ERROR_WRITE_FAULT = 29,
-		ERROR_READ_FAULT = 30,
-		ERROR_GEN_FAILURE = 31,
-		ERROR_SHARING_VIOLATION = 32,
-		ERROR_LOCK_VIOLATION = 33,
-	/*	ERROR_WRONG_DISK = 34,
-		ERROR_SHARING_BUFFER_EXCEEDED = 36,
-		ERROR_HANDLE_EOF = 38,
-	*/	ERROR_HANDLE_DISK_FULL = 39,
-	/*	ERROR_NOT_SUPPORTED = 50,
-		ERROR_REM_NOT_LIST = 51,
-		ERROR_DUP_NAME = 52,
-		ERROR_BAD_NETPATH = 53,
-		ERROR_NETWORK_BUSY = 54,
-		ERROR_DEV_NOT_EXIST = 55,
-		ERROR_TOO_MANY_CMDS = 56,
-		ERROR_ADAP_HDW_ERR = 57,
-		ERROR_BAD_NET_RESP = 58,
-		ERROR_UNEXP_NET_ERR = 59,
-		ERROR_BAD_REM_ADAP = 60,
-		ERROR_PRINTQ_FULL = 61,
-		ERROR_NO_SPOOL_SPACE = 62,
-		ERROR_PRINT_CANCELLED = 63,
-		ERROR_NETNAME_DELETED = 64,
-		ERROR_NETWORK_ACCESS_DENIED = 65,
-		ERROR_BAD_DEV_TYPE = 66,
-		ERROR_BAD_NET_NAME = 67,
-		ERROR_TOO_MANY_NAMES = 68,
-		ERROR_TOO_MANY_SESS = 69,
-		ERROR_SHARING_PAUSED = 70,
-		ERROR_REQ_NOT_ACCEP = 71,
-		ERROR_REDIR_PAUSED = 72,
-	*/	ERROR_FILE_EXISTS = 80,
-		ERROR_CANNOT_MAKE = 82,
-	/*	ERROR_FAIL_I24 = 83,
-		ERROR_OUT_OF_STRUCTURES = 84,
-		ERROR_ALREADY_ASSIGNED = 85,
-		ERROR_INVALID_PASSWORD = 86,
-	*/	ERROR_INVALID_PARAMETER = 87,
-	/*	ERROR_NET_WRITE_FAULT = 88,
-		ERROR_NO_PROC_SLOTS = 89,
-		ERROR_TOO_MANY_SEMAPHORES = 100,
-		ERROR_EXCL_SEM_ALREADY_OWNED = 101,
-		ERROR_SEM_IS_SET = 102,
-		ERROR_TOO_MANY_SEM_REQUESTS = 103,
-		ERROR_INVALID_AT_INTERRUPT_TIME = 104,
-		ERROR_SEM_OWNER_DIED = 105,
-		ERROR_SEM_USER_LIMIT = 106,
-		ERROR_DISK_CHANGE = 107,
-		ERROR_DRIVE_LOCKED = 108,
-	*/	ERROR_BROKEN_PIPE = 109,
-	/*	ERROR_OPEN_FAILED = 110,
-		ERROR_BUFFER_OVERFLOW = 111,
-		ERROR_DISK_FULL = 112,
-		ERROR_NO_MORE_SEARCH_HANDLES = 113,
-		ERROR_INVALID_TARGET_HANDLE = 114,
-		ERROR_INVALID_CATEGORY = 117,
-		ERROR_INVALID_VERIFY_SWITCH = 118,
-		ERROR_BAD_DRIVER_LEVEL = 119,
-		ERROR_CALL_NOT_IMPLEMENTED = 120,
-		ERROR_SEM_TIMEOUT = 121,
-		ERROR_INSUFFICIENT_BUFFER = 122,
-	*/	ERROR_INVALID_NAME = 123,
-	/*	ERROR_INVALID_LEVEL = 124,
-		ERROR_NO_VOLUME_LABEL = 125,
-		ERROR_MOD_NOT_FOUND = 126,
-		ERROR_PROC_NOT_FOUND = 127,
-		ERROR_WAIT_NO_CHILDREN = 128,
-		ERROR_CHILD_NOT_COMPLETE = 129,
-		ERROR_DIRECT_ACCESS_HANDLE = 130,
-		ERROR_NEGATIVE_SEEK = 131,
-		ERROR_SEEK_ON_DEVICE = 132,
-		ERROR_IS_JOIN_TARGET = 133,
-		ERROR_IS_JOINED = 134,
-		ERROR_IS_SUBSTED = 135,
-		ERROR_NOT_JOINED = 136,
-		ERROR_NOT_SUBSTED = 137,
-		ERROR_JOIN_TO_JOIN = 138,
-		ERROR_SUBST_TO_SUBST = 139,
-		ERROR_JOIN_TO_SUBST = 140,
-		ERROR_SUBST_TO_JOIN = 141,
-		ERROR_BUSY_DRIVE = 142,
-		ERROR_SAME_DRIVE = 143,
-		ERROR_DIR_NOT_ROOT = 144,
-	*/
-		ERROR_DIR_NOT_EMPTY = 145,
-	/*
-		ERROR_IS_SUBST_PATH = 146,
-		ERROR_IS_JOIN_PATH = 147,
-		ERROR_PATH_BUSY = 148,
-		ERROR_IS_SUBST_TARGET = 149,
-		ERROR_SYSTEM_TRACE = 150,
-		ERROR_INVALID_EVENT_COUNT = 151,
-		ERROR_TOO_MANY_MUXWAITERS = 152,
-		ERROR_INVALID_LIST_FORMAT = 153,
-		ERROR_LABEL_TOO_LONG = 154,
-		ERROR_TOO_MANY_TCBS = 155,
-		ERROR_SIGNAL_REFUSED = 156,
-		ERROR_DISCARDED = 157,
-		ERROR_NOT_LOCKED = 158,
-		ERROR_BAD_THREADID_ADDR = 159,
-		ERROR_BAD_ARGUMENTS = 160,
-		ERROR_BAD_PATHNAME = 161,
-		ERROR_SIGNAL_PENDING = 162,
-		ERROR_MAX_THRDS_REACHED = 164,
-		ERROR_LOCK_FAILED = 167,
-		ERROR_BUSY = 170,
-		ERROR_CANCEL_VIOLATION = 173,
-		ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174,
-		ERROR_INVALID_SEGMENT_NUMBER = 180,
-		ERROR_INVALID_ORDINAL = 182,
-	*/	ERROR_ALREADY_EXISTS = 183,
-	/*	ERROR_INVALID_FLAG_NUMBER = 186,
-		ERROR_SEM_NOT_FOUND = 187,
-		ERROR_INVALID_STARTING_CODESEG = 188,
-		ERROR_INVALID_STACKSEG = 189,
-		ERROR_INVALID_MODULETYPE = 190,
-		ERROR_INVALID_EXE_SIGNATURE = 191,
-		ERROR_EXE_MARKED_INVALID = 192,
-		ERROR_BAD_EXE_FORMAT = 193,
-		ERROR_ITERATED_DATA_EXCEEDS_64k = 194,
-		ERROR_INVALID_MINALLOCSIZE = 195,
-		ERROR_DYNLINK_FROM_INVALID_RING = 196,
-		ERROR_IOPL_NOT_ENABLED = 197,
-		ERROR_INVALID_SEGDPL = 198,
-		ERROR_AUTODATASEG_EXCEEDS_64k = 199,
-		ERROR_RING2SEG_MUST_BE_MOVABLE = 200,
-		ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201,
-		ERROR_INFLOOP_IN_RELOC_CHAIN = 202,
-		ERROR_ENVVAR_NOT_FOUND = 203,
-		ERROR_NO_SIGNAL_SENT = 205,
-	*/	ERROR_FILENAME_EXCED_RANGE = 206,
-	/*	ERROR_RING2_STACK_IN_USE = 207,
-		ERROR_META_EXPANSION_TOO_LONG = 208,
-		ERROR_INVALID_SIGNAL_NUMBER = 209,
-		ERROR_THREAD_1_INACTIVE = 210,
-		ERROR_LOCKED = 212,
-		ERROR_TOO_MANY_MODULES = 214,
-		ERROR_NESTING_NOT_ALLOWED = 215,
-		ERROR_EXE_MACHINE_TYPE_MISMATCH = 216,
-		ERROR_BAD_PIPE = 230,
-		ERROR_PIPE_BUSY = 231,
-		ERROR_NO_DATA = 232,
-		ERROR_PIPE_NOT_CONNECTED = 233,
-		ERROR_MORE_DATA = 234,
-		ERROR_VC_DISCONNECTED = 240,
-		ERROR_INVALID_EA_NAME = 254,
-		ERROR_EA_LIST_INCONSISTENT = 255,
-		WAIT_TIMEOUT = 258,
-		ERROR_NO_MORE_ITEMS = 259,
-		ERROR_CANNOT_COPY = 266,
-		ERROR_DIRECTORY = 267,
-		ERROR_EAS_DIDNT_FIT = 275,
-		ERROR_EA_FILE_CORRUPT = 276,
-		ERROR_EA_TABLE_FULL = 277,
-		ERROR_INVALID_EA_HANDLE = 278,
-		ERROR_EAS_NOT_SUPPORTED = 282,
-		ERROR_NOT_OWNER = 288,
-		ERROR_TOO_MANY_POSTS = 298,
-		ERROR_PARTIAL_COPY = 299,
-		ERROR_OPLOCK_NOT_GRANTED = 300,
-		ERROR_INVALID_OPLOCK_PROTOCOL = 301,
-		ERROR_DISK_TOO_FRAGMENTED = 302,
-		ERROR_DELETE_PENDING = 303,
-		ERROR_MR_MID_NOT_FOUND = 317,
-		ERROR_INVALID_ADDRESS = 487,
-		ERROR_ARITHMETIC_OVERFLOW = 534,
-		ERROR_PIPE_CONNECTED = 535,
-		ERROR_PIPE_LISTENING = 536,
-		ERROR_EA_ACCESS_DENIED = 994,
-		ERROR_OPERATION_ABORTED = 995,
-		ERROR_IO_INCOMPLETE = 996,
-		ERROR_IO_PENDING = 997,
-		ERROR_NOACCESS = 998,
-		ERROR_SWAPERROR = 999,
-		ERROR_STACK_OVERFLOW = 1001,
-		ERROR_INVALID_MESSAGE = 1002,
-		ERROR_CAN_NOT_COMPLETE = 1003,
-		ERROR_INVALID_FLAGS = 1004,
-		ERROR_UNRECOGNIZED_VOLUME = 1005,
-		ERROR_FILE_INVALID = 1006,
-		ERROR_FULLSCREEN_MODE = 1007,
-		ERROR_NO_TOKEN = 1008,
-		ERROR_BADDB = 1009,
-		ERROR_BADKEY = 1010,
-		ERROR_CANTOPEN = 1011,
-		ERROR_CANTREAD = 1012,
-		ERROR_CANTWRITE = 1013,
-		ERROR_REGISTRY_RECOVERED = 1014,
-		ERROR_REGISTRY_CORRUPT = 1015,
-		ERROR_REGISTRY_IO_FAILED = 1016,
-		ERROR_NOT_REGISTRY_FILE = 1017,
-		ERROR_KEY_DELETED = 1018,
-		ERROR_NO_LOG_SPACE = 1019,
-		ERROR_KEY_HAS_CHILDREN = 1020,
-		ERROR_CHILD_MUST_BE_VOLATILE = 1021,
-		ERROR_NOTIFY_ENUM_DIR = 1022,
-		ERROR_DEPENDENT_SERVICES_RUNNING = 1051,
-		ERROR_INVALID_SERVICE_CONTROL = 1052,
-		ERROR_SERVICE_REQUEST_TIMEOUT = 1053,
-		ERROR_SERVICE_NO_THREAD = 1054,
-		ERROR_SERVICE_DATABASE_LOCKED = 1055,
-		ERROR_SERVICE_ALREADY_RUNNING = 1056,
-		ERROR_INVALID_SERVICE_ACCOUNT = 1057,
-		ERROR_SERVICE_DISABLED = 1058,
-		ERROR_CIRCULAR_DEPENDENCY = 1059,
-		ERROR_SERVICE_DOES_NOT_EXIST = 1060,
-		ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061,
-		ERROR_SERVICE_NOT_ACTIVE = 1062,
-		ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063,
-		ERROR_EXCEPTION_IN_SERVICE = 1064,
-		ERROR_DATABASE_DOES_NOT_EXIST = 1065,
-		ERROR_SERVICE_SPECIFIC_ERROR = 1066,
-		ERROR_PROCESS_ABORTED = 1067,
-		ERROR_SERVICE_DEPENDENCY_FAIL = 1068,
-		ERROR_SERVICE_LOGON_FAILED = 1069,
-		ERROR_SERVICE_START_HANG = 1070,
-		ERROR_INVALID_SERVICE_LOCK = 1071,
-		ERROR_SERVICE_MARKED_FOR_DELETE = 1072,
-		ERROR_SERVICE_EXISTS = 1073,
-		ERROR_ALREADY_RUNNING_LKG = 1074,
-		ERROR_SERVICE_DEPENDENCY_DELETED = 1075,
-		ERROR_BOOT_ALREADY_ACCEPTED = 1076,
-		ERROR_SERVICE_NEVER_STARTED = 1077,
-		ERROR_DUPLICATE_SERVICE_NAME = 1078,
-		ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079,
-		ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080,
-		ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081,
-		ERROR_NO_RECOVERY_PROGRAM = 1082,
-		ERROR_SERVICE_NOT_IN_EXE = 1083,
-		ERROR_NOT_SAFEBOOT_SERVICE = 1084,
-		ERROR_END_OF_MEDIA = 1100,
-		ERROR_FILEMARK_DETECTED = 1101,
-		ERROR_BEGINNING_OF_MEDIA = 1102,
-		ERROR_SETMARK_DETECTED = 1103,
-		ERROR_NO_DATA_DETECTED = 1104,
-		ERROR_PARTITION_FAILURE = 1105,
-		ERROR_INVALID_BLOCK_LENGTH = 1106,
-		ERROR_DEVICE_NOT_PARTITIONED = 1107,
-		ERROR_UNABLE_TO_LOCK_MEDIA = 1108,
-		ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109,
-		ERROR_MEDIA_CHANGED = 1110,
-		ERROR_BUS_RESET = 1111,
-		ERROR_NO_MEDIA_IN_DRIVE = 1112,
-		ERROR_NO_UNICODE_TRANSLATION = 1113,
-		ERROR_DLL_INIT_FAILED = 1114,
-		ERROR_SHUTDOWN_IN_PROGRESS = 1115,
-		ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116,
-		ERROR_IO_DEVICE = 1117,
-		ERROR_SERIAL_NO_DEVICE = 1118,
-		ERROR_IRQ_BUSY = 1119,
-		ERROR_MORE_WRITES = 1120,
-		ERROR_COUNTER_TIMEOUT = 1121,
-		ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122,
-		ERROR_FLOPPY_WRONG_CYLINDER = 1123,
-		ERROR_FLOPPY_UNKNOWN_ERROR = 1124,
-		ERROR_FLOPPY_BAD_REGISTERS = 1125,
-		ERROR_DISK_RECALIBRATE_FAILED = 1126,
-		ERROR_DISK_OPERATION_FAILED = 1127,
-		ERROR_DISK_RESET_FAILED = 1128,
-		ERROR_EOM_OVERFLOW = 1129,
-		ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130,
-		ERROR_POSSIBLE_DEADLOCK = 1131,
-		ERROR_MAPPED_ALIGNMENT = 1132,
-		ERROR_SET_POWER_STATE_VETOED = 1140,
-		ERROR_SET_POWER_STATE_FAILED = 1141,
-		ERROR_TOO_MANY_LINKS = 1142,
-		ERROR_OLD_WIN_VERSION = 1150,
-		ERROR_APP_WRONG_OS = 1151,
-		ERROR_SINGLE_INSTANCE_APP = 1152,
-		ERROR_RMODE_APP = 1153,
-		ERROR_INVALID_DLL = 1154,
-		ERROR_NO_ASSOCIATION = 1155,
-		ERROR_DDE_FAIL = 1156,
-		ERROR_DLL_NOT_FOUND = 1157,
-		ERROR_NO_MORE_USER_HANDLES = 1158,
-		ERROR_MESSAGE_SYNC_ONLY = 1159,
-		ERROR_SOURCE_ELEMENT_EMPTY = 1160,
-		ERROR_DESTINATION_ELEMENT_FULL = 1161,
-		ERROR_ILLEGAL_ELEMENT_ADDRESS = 1162,
-		ERROR_MAGAZINE_NOT_PRESENT = 1163,
-		ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164,
-		ERROR_DEVICE_REQUIRES_CLEANING = 1165,
-		ERROR_DEVICE_DOOR_OPEN = 1166,
-		ERROR_DEVICE_NOT_CONNECTED = 1167,
-		ERROR_NOT_FOUND = 1168,
-		ERROR_NO_MATCH = 1169,
-		ERROR_SET_NOT_FOUND = 1170,
-		ERROR_POINT_NOT_FOUND = 1171,
-		ERROR_NO_TRACKING_SERVICE = 1172,
-		ERROR_NO_VOLUME_ID = 1173,
-		ERROR_UNABLE_TO_REMOVE_REPLACED = 1175,
-		ERROR_UNABLE_TO_MOVE_REPLACEMENT = 1176,
-		ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 = 1177,
-		ERROR_JOURNAL_DELETE_IN_PROGRESS = 1178,
-		ERROR_JOURNAL_NOT_ACTIVE = 1179,
-		ERROR_POTENTIAL_FILE_FOUND = 1180,
-		ERROR_JOURNAL_ENTRY_DELETED = 1181,
-		ERROR_BAD_DEVICE = 1200,
-		ERROR_CONNECTION_UNAVAIL = 1201,
-		ERROR_DEVICE_ALREADY_REMEMBERED = 1202,
-		ERROR_NO_NET_OR_BAD_PATH = 1203,
-		ERROR_BAD_PROVIDER = 1204,
-		ERROR_CANNOT_OPEN_PROFILE = 1205,
-		ERROR_BAD_PROFILE = 1206,
-		ERROR_NOT_CONTAINER = 1207,
-		ERROR_EXTENDED_ERROR = 1208,
-		ERROR_INVALID_GROUPNAME = 1209,
-		ERROR_INVALID_COMPUTERNAME = 1210,
-		ERROR_INVALID_EVENTNAME = 1211,
-		ERROR_INVALID_DOMAINNAME = 1212,
-		ERROR_INVALID_SERVICENAME = 1213,
-		ERROR_INVALID_NETNAME = 1214,
-		ERROR_INVALID_SHARENAME = 1215,
-		ERROR_INVALID_PASSWORDNAME = 1216,
-		ERROR_INVALID_MESSAGENAME = 1217,
-		ERROR_INVALID_MESSAGEDEST = 1218,
-		ERROR_SESSION_CREDENTIAL_CONFLICT = 1219,
-		ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220,
-		ERROR_DUP_DOMAINNAME = 1221,
-		ERROR_NO_NETWORK = 1222,
-		ERROR_CANCELLED = 1223,
-		ERROR_USER_MAPPED_FILE = 1224,
-		ERROR_CONNECTION_REFUSED = 1225,
-		ERROR_GRACEFUL_DISCONNECT = 1226,
-		ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227,
-		ERROR_ADDRESS_NOT_ASSOCIATED = 1228,
-		ERROR_CONNECTION_INVALID = 1229,
-		ERROR_CONNECTION_ACTIVE = 1230,
-		ERROR_NETWORK_UNREACHABLE = 1231,
-		ERROR_HOST_UNREACHABLE = 1232,
-		ERROR_PROTOCOL_UNREACHABLE = 1233,
-		ERROR_PORT_UNREACHABLE = 1234,
-		ERROR_REQUEST_ABORTED = 1235,
-		ERROR_CONNECTION_ABORTED = 1236,
-		ERROR_RETRY = 1237,
-		ERROR_CONNECTION_COUNT_LIMIT = 1238,
-		ERROR_LOGIN_TIME_RESTRICTION = 1239,
-		ERROR_LOGIN_WKSTA_RESTRICTION = 1240,
-		ERROR_INCORRECT_ADDRESS = 1241,
-		ERROR_ALREADY_REGISTERED = 1242,
-		ERROR_SERVICE_NOT_FOUND = 1243,
-		ERROR_NOT_AUTHENTICATED = 1244,
-		ERROR_NOT_LOGGED_ON = 1245,
-		ERROR_CONTINUE = 1246,
-		ERROR_ALREADY_INITIALIZED = 1247,
-		ERROR_NO_MORE_DEVICES = 1248,
-		ERROR_NO_SUCH_SITE = 1249,
-		ERROR_DOMAIN_CONTROLLER_EXISTS = 1250,
-		ERROR_ONLY_IF_CONNECTED = 1251,
-		ERROR_OVERRIDE_NOCHANGES = 1252,
-		ERROR_BAD_USER_PROFILE = 1253,
-		ERROR_NOT_SUPPORTED_ON_SBS = 1254,
-		ERROR_SERVER_SHUTDOWN_IN_PROGRESS = 1255,
-		ERROR_HOST_DOWN = 1256,
-		ERROR_NON_ACCOUNT_SID = 1257,
-		ERROR_NON_DOMAIN_SID = 1258,
-		ERROR_APPHELP_BLOCK = 1259,
-		ERROR_ACCESS_DISABLED_BY_POLICY = 1260,
-		ERROR_REG_NAT_CONSUMPTION = 1261,
-		ERROR_CSCSHARE_OFFLINE = 1262,
-		ERROR_PKINIT_FAILURE = 1263,
-		ERROR_SMARTCARD_SUBSYSTEM_FAILURE = 1264,
-		ERROR_DOWNGRADE_DETECTED = 1265,
-		SEC_E_SMARTCARD_CERT_REVOKED = 1266,
-		SEC_E_ISSUING_CA_UNTRUSTED = 1267,
-		SEC_E_REVOCATION_OFFLINE_C = 1268,
-		SEC_E_PKINIT_CLIENT_FAILUR = 1269,
-		SEC_E_SMARTCARD_CERT_EXPIRED = 1270,
-		ERROR_MACHINE_LOCKED = 1271,
-		ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273,
-		ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED = 1274,
-		ERROR_DRIVER_BLOCKED = 1275,
-		ERROR_INVALID_IMPORT_OF_NON_DLL = 1276,
-		ERROR_NOT_ALL_ASSIGNED = 1300,
-		ERROR_SOME_NOT_MAPPED = 1301,
-		ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302,
-		ERROR_LOCAL_USER_SESSION_KEY = 1303,
-		ERROR_NULL_LM_PASSWORD = 1304,
-		ERROR_UNKNOWN_REVISION = 1305,
-		ERROR_REVISION_MISMATCH = 1306,
-		ERROR_INVALID_OWNER = 1307,
-		ERROR_INVALID_PRIMARY_GROUP = 1308,
-		ERROR_NO_IMPERSONATION_TOKEN = 1309,
-		ERROR_CANT_DISABLE_MANDATORY = 1310,
-		ERROR_NO_LOGON_SERVERS = 1311,
-		ERROR_NO_SUCH_LOGON_SESSION = 1312,
-		ERROR_NO_SUCH_PRIVILEGE = 1313,
-		ERROR_PRIVILEGE_NOT_HELD = 1314,
-		ERROR_INVALID_ACCOUNT_NAME = 1315,
-		ERROR_USER_EXISTS = 1316,
-		ERROR_NO_SUCH_USER = 1317,
-		ERROR_GROUP_EXISTS = 1318,
-		ERROR_NO_SUCH_GROUP = 1319,
-		ERROR_MEMBER_IN_GROUP = 1320,
-		ERROR_MEMBER_NOT_IN_GROUP = 1321,
-		ERROR_LAST_ADMIN = 1322,
-		ERROR_WRONG_PASSWORD = 1323,
-		ERROR_ILL_FORMED_PASSWORD = 1324,
-		ERROR_PASSWORD_RESTRICTION = 1325,
-		ERROR_LOGON_FAILURE = 1326,
-		ERROR_ACCOUNT_RESTRICTION = 1327,
-		ERROR_INVALID_LOGON_HOURS = 1328,
-		ERROR_INVALID_WORKSTATION = 1329,
-		ERROR_PASSWORD_EXPIRED = 1330,
-		ERROR_ACCOUNT_DISABLED = 1331,
-		ERROR_NONE_MAPPED = 1332,
-		ERROR_TOO_MANY_LUIDS_REQUESTED = 1333,
-		ERROR_LUIDS_EXHAUSTED = 1334,
-		ERROR_INVALID_SUB_AUTHORITY = 1335,
-		ERROR_INVALID_ACL = 1336,
-		ERROR_INVALID_SID = 1337,
-		ERROR_INVALID_SECURITY_DESCR = 1338,
-		ERROR_BAD_INHERITANCE_ACL = 1340,
-		ERROR_SERVER_DISABLED = 1341,
-		ERROR_SERVER_NOT_DISABLED = 1342,
-		ERROR_INVALID_ID_AUTHORITY = 1343,
-		ERROR_ALLOTTED_SPACE_EXCEEDED = 1344,
-		ERROR_INVALID_GROUP_ATTRIBUTES = 1345,
-		ERROR_BAD_IMPERSONATION_LEVEL = 1346,
-		ERROR_CANT_OPEN_ANONYMOUS = 1347,
-		ERROR_BAD_VALIDATION_CLASS = 1348,
-		ERROR_BAD_TOKEN_TYPE = 1349,
-		ERROR_NO_SECURITY_ON_OBJECT = 1350,
-		ERROR_CANT_ACCESS_DOMAIN_INFO = 1351,
-		ERROR_INVALID_SERVER_STATE = 1352,
-		ERROR_INVALID_DOMAIN_STATE = 1353,
-		ERROR_INVALID_DOMAIN_ROLE = 1354,
-		ERROR_NO_SUCH_DOMAIN = 1355,
-		ERROR_DOMAIN_EXISTS = 1356,
-		ERROR_DOMAIN_LIMIT_EXCEEDED = 1357,
-		ERROR_INTERNAL_DB_CORRUPTION = 1358,
-		ERROR_INTERNAL_ERROR = 1359,
-		ERROR_GENERIC_NOT_MAPPED = 1360,
-		ERROR_BAD_DESCRIPTOR_FORMAT = 1361,
-		ERROR_NOT_LOGON_PROCESS = 1362,
-		ERROR_LOGON_SESSION_EXISTS = 1363,
-		ERROR_NO_SUCH_PACKAGE = 1364,
-		ERROR_BAD_LOGON_SESSION_STATE = 1365,
-		ERROR_LOGON_SESSION_COLLISION = 1366,
-		ERROR_INVALID_LOGON_TYPE = 1367,
-		ERROR_CANNOT_IMPERSONATE = 1368,
-		ERROR_RXACT_INVALID_STATE = 1369,
-		ERROR_RXACT_COMMIT_FAILURE = 1370,
-		ERROR_SPECIAL_ACCOUNT = 1371,
-		ERROR_SPECIAL_GROUP = 1372,
-		ERROR_SPECIAL_USER = 1373,
-		ERROR_MEMBERS_PRIMARY_GROUP = 1374,
-		ERROR_TOKEN_ALREADY_IN_USE = 1375,
-		ERROR_NO_SUCH_ALIAS = 1376,
-		ERROR_MEMBER_NOT_IN_ALIAS = 1377,
-		ERROR_MEMBER_IN_ALIAS = 1378,
-		ERROR_ALIAS_EXISTS = 1379,
-		ERROR_LOGON_NOT_GRANTED = 1380,
-		ERROR_TOO_MANY_SECRETS = 1381,
-		ERROR_SECRET_TOO_LONG = 1382,
-		ERROR_INTERNAL_DB_ERROR = 1383,
-		ERROR_TOO_MANY_CONTEXT_IDS = 1384,
-		ERROR_LOGON_TYPE_NOT_GRANTED = 1385,
-		ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386,
-		ERROR_NO_SUCH_MEMBER = 1387,
-		ERROR_INVALID_MEMBER = 1388,
-		ERROR_TOO_MANY_SIDS = 1389,
-		ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390,
-		ERROR_NO_INHERITANCE = 1391,
-		ERROR_FILE_CORRUPT = 1392,
-		ERROR_DISK_CORRUPT = 1393,
-		ERROR_NO_USER_SESSION_KEY = 1394,
-		ERROR_LICENSE_QUOTA_EXCEEDED = 1395,
-		ERROR_WRONG_TARGET_NAME = 1396,
-		ERROR_MUTUAL_AUTH_FAILED = 1397,
-		ERROR_TIME_SKEW = 1398,
-		ERROR_CURRENT_DOMAIN_NOT_ALLOWED = 1399,
-		ERROR_INVALID_WINDOW_HANDLE = 1400,
-		ERROR_INVALID_MENU_HANDLE = 1401,
-		ERROR_INVALID_CURSOR_HANDLE = 1402,
-		ERROR_INVALID_ACCEL_HANDLE = 1403,
-		ERROR_INVALID_HOOK_HANDLE = 1404,
-		ERROR_INVALID_DWP_HANDLE = 1405,
-		ERROR_TLW_WITH_WSCHILD = 1406,
-		ERROR_CANNOT_FIND_WND_CLASS = 1407,
-		ERROR_WINDOW_OF_OTHER_THREAD = 1408,
-		ERROR_HOTKEY_ALREADY_REGISTERED = 1409,
-		ERROR_CLASS_ALREADY_EXISTS = 1410,
-		ERROR_CLASS_DOES_NOT_EXIST = 1411,
-		ERROR_CLASS_HAS_WINDOWS = 1412,
-		ERROR_INVALID_INDEX = 1413,
-		ERROR_INVALID_ICON_HANDLE = 1414,
-		ERROR_PRIVATE_DIALOG_INDEX = 1415,
-		ERROR_LISTBOX_ID_NOT_FOUND = 1416,
-		ERROR_NO_WILDCARD_CHARACTERS = 1417,
-		ERROR_CLIPBOARD_NOT_OPEN = 1418,
-		ERROR_HOTKEY_NOT_REGISTERED = 1419,
-		ERROR_WINDOW_NOT_DIALOG = 1420,
-		ERROR_CONTROL_ID_NOT_FOUND = 1421,
-		ERROR_INVALID_COMBOBOX_MESSAGE = 1422,
-		ERROR_WINDOW_NOT_COMBOBOX = 1423,
-		ERROR_INVALID_EDIT_HEIGHT = 1424,
-		ERROR_DC_NOT_FOUND = 1425,
-		ERROR_INVALID_HOOK_FILTER = 1426,
-		ERROR_INVALID_FILTER_PROC = 1427,
-		ERROR_HOOK_NEEDS_HMOD = 1428,
-		ERROR_GLOBAL_ONLY_HOOK = 1429,
-		ERROR_JOURNAL_HOOK_SET = 1430,
-		ERROR_HOOK_NOT_INSTALLED = 1431,
-		ERROR_INVALID_LB_MESSAGE = 1432,
-		ERROR_SETCOUNT_ON_BAD_LB = 1433,
-		ERROR_LB_WITHOUT_TABSTOPS = 1434,
-		ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435,
-		ERROR_CHILD_WINDOW_MENU = 1436,
-		ERROR_NO_SYSTEM_MENU = 1437,
-		ERROR_INVALID_MSGBOX_STYLE = 1438,
-		ERROR_INVALID_SPI_VALUE = 1439,
-		ERROR_SCREEN_ALREADY_LOCKED = 1440,
-		ERROR_HWNDS_HAVE_DIFF_PARENT = 1441,
-		ERROR_NOT_CHILD_WINDOW = 1442,
-		ERROR_INVALID_GW_COMMAND = 1443,
-		ERROR_INVALID_THREAD_ID = 1444,
-		ERROR_NON_MDICHILD_WINDOW = 1445,
-		ERROR_POPUP_ALREADY_ACTIVE = 1446,
-		ERROR_NO_SCROLLBARS = 1447,
-		ERROR_INVALID_SCROLLBAR_RANGE = 1448,
-		ERROR_INVALID_SHOWWIN_COMMAND = 1449,
-		ERROR_NO_SYSTEM_RESOURCES = 1450,
-		ERROR_NONPAGED_SYSTEM_RESOURCES = 1451,
-		ERROR_PAGED_SYSTEM_RESOURCES = 1452,
-		ERROR_WORKING_SET_QUOTA = 1453,
-		ERROR_PAGEFILE_QUOTA = 1454,
-		ERROR_COMMITMENT_LIMIT = 1455,
-		ERROR_MENU_ITEM_NOT_FOUND = 1456,
-		ERROR_INVALID_KEYBOARD_HANDLE = 1457,
-		ERROR_HOOK_TYPE_NOT_ALLOWED = 1458,
-		ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION = 1459,
-		ERROR_TIMEOUT = 1460,
-		ERROR_INVALID_MONITOR_HANDLE = 1461,
-		ERROR_EVENTLOG_FILE_CORRUPT = 1500,
-		ERROR_EVENTLOG_CANT_START = 1501,
-		ERROR_LOG_FILE_FULL = 1502,
-		ERROR_EVENTLOG_FILE_CHANGED = 1503,
-		ERROR_INSTALL_SERVICE_FAILURE = 1601,
-		ERROR_INSTALL_USEREXIT = 1602,
-		ERROR_INSTALL_FAILURE = 1603,
-		ERROR_INSTALL_SUSPEND = 1604,
-		ERROR_UNKNOWN_PRODUCT = 1605,
-		ERROR_UNKNOWN_FEATURE = 1606,
-		ERROR_UNKNOWN_COMPONENT = 1607,
-		ERROR_UNKNOWN_PROPERTY = 1608,
-		ERROR_INVALID_HANDLE_STATE = 1609,
-		ERROR_BAD_CONFIGURATION = 1610,
-		ERROR_INDEX_ABSENT = 1611,
-		ERROR_INSTALL_SOURCE_ABSENT = 1612,
-		ERROR_INSTALL_PACKAGE_VERSION = 1613,
-		ERROR_PRODUCT_UNINSTALLED = 1614,
-		ERROR_BAD_QUERY_SYNTAX = 1615,
-		ERROR_INVALID_FIELD = 1616,
-		ERROR_DEVICE_REMOVED = 1617,
-		ERROR_INSTALL_ALREADY_RUNNING = 1618,
-		ERROR_INSTALL_PACKAGE_OPEN_FAILED = 1619,
-		ERROR_INSTALL_PACKAGE_INVALID = 1620,
-		ERROR_INSTALL_UI_FAILURE = 1621,
-		ERROR_INSTALL_LOG_FAILURE = 1622,
-		ERROR_INSTALL_LANGUAGE_UNSUPPORTED = 1623,
-		ERROR_INSTALL_TRANSFORM_FAILURE = 1624,
-		ERROR_INSTALL_PACKAGE_REJECTED = 1625,
-		ERROR_FUNCTION_NOT_CALLED = 1626,
-		ERROR_FUNCTION_FAILED = 1627,
-		ERROR_INVALID_TABLE = 1628,
-		ERROR_DATATYPE_MISMATCH = 1629,
-		ERROR_UNSUPPORTED_TYPE = 1630,
-		ERROR_CREATE_FAILED = 1631,
-		ERROR_INSTALL_TEMP_UNWRITABLE = 1632,
-		ERROR_INSTALL_PLATFORM_UNSUPPORTED = 1633,
-		ERROR_INSTALL_NOTUSED = 1634,
-		ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635,
-		ERROR_PATCH_PACKAGE_INVALID = 1636,
-		ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637,
-		ERROR_PRODUCT_VERSION = 1638,
-		ERROR_INVALID_COMMAND_LINE = 1639,
-		ERROR_INSTALL_REMOTE_DISALLOWED = 1640,
-		ERROR_SUCCESS_REBOOT_INITIATED = 1641,
-		ERROR_PATCH_TARGET_NOT_FOUND = 1642,
-		ERROR_PATCH_PACKAGE_REJECTED = 1643,
-		ERROR_INSTALL_TRANSFORM_REJECTED = 1644,
-		RPC_S_INVALID_STRING_BINDING = 1700,
-		RPC_S_WRONG_KIND_OF_BINDING = 1701,
-		RPC_S_INVALID_BINDING = 1702,
-		RPC_S_PROTSEQ_NOT_SUPPORTED = 1703,
-		RPC_S_INVALID_RPC_PROTSEQ = 1704,
-		RPC_S_INVALID_STRING_UUID = 1705,
-		RPC_S_INVALID_ENDPOINT_FORMAT = 1706,
-		RPC_S_INVALID_NET_ADDR = 1707,
-		RPC_S_NO_ENDPOINT_FOUND = 1708,
-		RPC_S_INVALID_TIMEOUT = 1709,
-		RPC_S_OBJECT_NOT_FOUND = 1710,
-		RPC_S_ALREADY_REGISTERED = 1711,
-		RPC_S_TYPE_ALREADY_REGISTERED = 1712,
-		RPC_S_ALREADY_LISTENING = 1713,
-		RPC_S_NO_PROTSEQS_REGISTERED = 1714,
-		RPC_S_NOT_LISTENING = 1715,
-		RPC_S_UNKNOWN_MGR_TYPE = 1716,
-		RPC_S_UNKNOWN_IF = 1717,
-		RPC_S_NO_BINDINGS = 1718,
-		RPC_S_NO_PROTSEQS = 1719,
-		RPC_S_CANT_CREATE_ENDPOINT = 1720,
-		RPC_S_OUT_OF_RESOURCES = 1721,
-		RPC_S_SERVER_UNAVAILABLE = 1722,
-		RPC_S_SERVER_TOO_BUSY = 1723,
-		RPC_S_INVALID_NETWORK_OPTIONS = 1724,
-		RPC_S_NO_CALL_ACTIVE = 1725,
-		RPC_S_CALL_FAILED = 1726,
-		RPC_S_CALL_FAILED_DNE = 1727,
-		RPC_S_PROTOCOL_ERROR = 1728,
-		RPC_S_UNSUPPORTED_TRANS_SYN = 1730,
-		RPC_S_UNSUPPORTED_TYPE = 1732,
-		RPC_S_INVALID_TAG = 1733,
-		RPC_S_INVALID_BOUND = 1734,
-		RPC_S_NO_ENTRY_NAME = 1735,
-		RPC_S_INVALID_NAME_SYNTAX = 1736,
-		RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737,
-		RPC_S_UUID_NO_ADDRESS = 1739,
-		RPC_S_DUPLICATE_ENDPOINT = 1740,
-		RPC_S_UNKNOWN_AUTHN_TYPE = 1741,
-		RPC_S_MAX_CALLS_TOO_SMALL = 1742,
-		RPC_S_STRING_TOO_LONG = 1743,
-		RPC_S_PROTSEQ_NOT_FOUND = 1744,
-		RPC_S_PROCNUM_OUT_OF_RANGE = 1745,
-		RPC_S_BINDING_HAS_NO_AUTH = 1746,
-		RPC_S_UNKNOWN_AUTHN_SERVICE = 1747,
-		RPC_S_UNKNOWN_AUTHN_LEVEL = 1748,
-		RPC_S_INVALID_AUTH_IDENTITY = 1749,
-		RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750,
-		EPT_S_INVALID_ENTRY = 1751,
-		EPT_S_CANT_PERFORM_OP = 1752,
-		EPT_S_NOT_REGISTERED = 1753,
-		RPC_S_NOTHING_TO_EXPORT = 1754,
-		RPC_S_INCOMPLETE_NAME = 1755,
-		RPC_S_INVALID_VERS_OPTION = 1756,
-		RPC_S_NO_MORE_MEMBERS = 1757,
-		RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758,
-		RPC_S_INTERFACE_NOT_FOUND = 1759,
-		RPC_S_ENTRY_ALREADY_EXISTS = 1760,
-		RPC_S_ENTRY_NOT_FOUND = 1761,
-		RPC_S_NAME_SERVICE_UNAVAILABLE = 1762,
-		RPC_S_INVALID_NAF_ID = 1763,
-		RPC_S_CANNOT_SUPPORT = 1764,
-		RPC_S_NO_CONTEXT_AVAILABLE = 1765,
-		RPC_S_INTERNAL_ERROR = 1766,
-		RPC_S_ZERO_DIVIDE = 1767,
-		RPC_S_ADDRESS_ERROR = 1768,
-		RPC_S_FP_DIV_ZERO = 1769,
-		RPC_S_FP_UNDERFLOW = 1770,
-		RPC_S_FP_OVERFLOW = 1771,
-		RPC_X_NO_MORE_ENTRIES = 1772,
-		RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773,
-		RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774,
-		RPC_X_SS_IN_NULL_CONTEXT = 1775,
-		RPC_X_SS_CONTEXT_DAMAGED = 1777,
-		RPC_X_SS_HANDLES_MISMATCH = 1778,
-		RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779,
-		RPC_X_NULL_REF_POINTER = 1780,
-		RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781,
-		RPC_X_BYTE_COUNT_TOO_SMALL = 1782,
-		RPC_X_BAD_STUB_DATA = 1783,
-		ERROR_INVALID_USER_BUFFER = 1784,
-		ERROR_UNRECOGNIZED_MEDIA = 1785,
-		ERROR_NO_TRUST_LSA_SECRET = 1786,
-		ERROR_NO_TRUST_SAM_ACCOUNT = 1787,
-		ERROR_TRUSTED_DOMAIN_FAILURE = 1788,
-		ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789,
-		ERROR_TRUST_FAILURE = 1790,
-		RPC_S_CALL_IN_PROGRESS = 1791,
-		ERROR_NETLOGON_NOT_STARTED = 1792,
-		ERROR_ACCOUNT_EXPIRED = 1793,
-		ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794,
-		ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = 1795,
-		ERROR_UNKNOWN_PORT = 1796,
-		ERROR_UNKNOWN_PRINTER_DRIVER = 1797,
-		ERROR_UNKNOWN_PRINTPROCESSOR = 1798,
-		ERROR_INVALID_SEPARATOR_FILE = 1799,
-		ERROR_INVALID_PRIORITY = 1800,
-		ERROR_INVALID_PRINTER_NAME = 1801,
-		ERROR_PRINTER_ALREADY_EXISTS = 1802,
-		ERROR_INVALID_PRINTER_COMMAND = 1803,
-		ERROR_INVALID_DATATYPE = 1804,
-		ERROR_INVALID_ENVIRONMENT = 1805,
-		RPC_S_NO_MORE_BINDINGS = 1806,
-		ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807,
-		ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808,
-		ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809,
-		ERROR_DOMAIN_TRUST_INCONSISTENT = 1810,
-		ERROR_SERVER_HAS_OPEN_HANDLES = 1811,
-		ERROR_RESOURCE_DATA_NOT_FOUND = 1812,
-		ERROR_RESOURCE_TYPE_NOT_FOUND = 1813,
-		ERROR_RESOURCE_NAME_NOT_FOUND = 1814,
-		ERROR_RESOURCE_LANG_NOT_FOUND = 1815,
-		ERROR_NOT_ENOUGH_QUOTA = 1816,
-		RPC_S_NO_INTERFACES = 1817,
-		RPC_S_CALL_CANCELLED = 1818,
-		RPC_S_BINDING_INCOMPLETE = 1819,
-		RPC_S_COMM_FAILURE = 1820,
-		RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821,
-		RPC_S_NO_PRINC_NAME = 1822,
-		RPC_S_NOT_RPC_ERROR = 1823,
-		RPC_S_UUID_LOCAL_ONLY = 1824,
-		RPC_S_SEC_PKG_ERROR = 1825,
-		RPC_S_NOT_CANCELLED = 1826,
-		RPC_X_INVALID_ES_ACTION = 1827,
-		RPC_X_WRONG_ES_VERSION = 1828,
-		RPC_X_WRONG_STUB_VERSION = 1829,
-		RPC_X_INVALID_PIPE_OBJECT = 1830,
-		RPC_X_WRONG_PIPE_ORDER = 1831,
-		RPC_X_WRONG_PIPE_VERSION = 1832,
-		RPC_S_GROUP_MEMBER_NOT_FOUND = 1898,
-		EPT_S_CANT_CREATE = 1899,
-		RPC_S_INVALID_OBJECT = 1900,
-		ERROR_INVALID_TIME = 1901,
-		ERROR_INVALID_FORM_NAME = 1902,
-		ERROR_INVALID_FORM_SIZE = 1903,
-		ERROR_ALREADY_WAITING = 1904,
-		ERROR_PRINTER_DELETED = 1905,
-		ERROR_INVALID_PRINTER_STATE = 1906,
-		ERROR_PASSWORD_MUST_CHANGE = 1907,
-		ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908,
-		ERROR_ACCOUNT_LOCKED_OUT = 1909,
-		OR_INVALID_OXID = 1910,
-		OR_INVALID_OID = 1911,
-		OR_INVALID_SET = 1912,
-		RPC_S_SEND_INCOMPLETE = 1913,
-		RPC_S_INVALID_ASYNC_HANDLE = 1914,
-		RPC_S_INVALID_ASYNC_CALL = 1915,
-		RPC_X_PIPE_CLOSED = 1916,
-		RPC_X_PIPE_DISCIPLINE_ERROR = 1917,
-		RPC_X_PIPE_EMPTY = 1918,
-		ERROR_NO_SITENAME = 1919,
-		ERROR_CANT_ACCESS_FILE = 1920,
-		ERROR_CANT_RESOLVE_FILENAME = 1921,
-		RPC_S_ENTRY_TYPE_MISMATCH = 1922,
-		RPC_S_NOT_ALL_OBJS_EXPORTED = 1923,
-		RPC_S_INTERFACE_NOT_EXPORTED = 1924,
-		RPC_S_PROFILE_NOT_ADDED = 1925,
-		RPC_S_PRF_ELT_NOT_ADDED = 1926,
-		RPC_S_PRF_ELT_NOT_REMOVED = 1927,
-		RPC_S_GRP_ELT_NOT_ADDED = 1928,
-		RPC_S_GRP_ELT_NOT_REMOVED = 1929,
-		ERROR_KM_DRIVER_BLOCKED = 1930,
-		ERROR_CONTEXT_EXPIRED = 1931,
-		ERROR_INVALID_PIXEL_FORMAT = 2000,
-		ERROR_BAD_DRIVER = 2001,
-		ERROR_INVALID_WINDOW_STYLE = 2002,
-		ERROR_METAFILE_NOT_SUPPORTED = 2003,
-		ERROR_TRANSFORM_NOT_SUPPORTED = 2004,
-		ERROR_CLIPPING_NOT_SUPPORTED = 2005,
-		ERROR_INVALID_CMM = 2010,
-		ERROR_INVALID_PROFILE = 2011,
-		ERROR_TAG_NOT_FOUND = 2012,
-		ERROR_TAG_NOT_PRESENT = 2013,
-		ERROR_DUPLICATE_TAG = 2014,
-		ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE = 2015,
-		ERROR_PROFILE_NOT_FOUND = 2016,
-		ERROR_INVALID_COLORSPACE = 2017,
-		ERROR_ICM_NOT_ENABLED = 2018,
-		ERROR_DELETING_ICM_XFORM = 2019,
-		ERROR_INVALID_TRANSFORM = 2020,
-		ERROR_COLORSPACE_MISMATCH = 2021,
-		ERROR_INVALID_COLORINDEX = 2022,
-		ERROR_CONNECTED_OTHER_PASSWORD = 2108,
-		ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT = 2109,
-		ERROR_BAD_USERNAME = 2202,
-		ERROR_NOT_CONNECTED = 2250,
-		ERROR_OPEN_FILES = 2401,
-		ERROR_ACTIVE_CONNECTIONS = 2402,
-		ERROR_DEVICE_IN_USE = 2404,
-		ERROR_UNKNOWN_PRINT_MONITOR = 3000,
-		ERROR_PRINTER_DRIVER_IN_USE = 3001,
-		ERROR_SPOOL_FILE_NOT_FOUND = 3002,
-		ERROR_SPL_NO_STARTDOC = 3003,
-		ERROR_SPL_NO_ADDJOB = 3004,
-		ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = 3005,
-		ERROR_PRINT_MONITOR_ALREADY_INSTALLED = 3006,
-		ERROR_INVALID_PRINT_MONITOR = 3007,
-		ERROR_PRINT_MONITOR_IN_USE = 3008,
-		ERROR_PRINTER_HAS_JOBS_QUEUED = 3009,
-		ERROR_SUCCESS_REBOOT_REQUIRED = 3010,
-		ERROR_SUCCESS_RESTART_REQUIRED = 3011,
-		ERROR_PRINTER_NOT_FOUND = 3012,
-		ERROR_PRINTER_DRIVER_WARNED = 3013,
-		ERROR_PRINTER_DRIVER_BLOCKED = 3014,
-		ERROR_WINS_INTERNAL = 4000,
-		ERROR_CAN_NOT_DEL_LOCAL_WINS = 4001,
-		ERROR_STATIC_INIT = 4002,
-		ERROR_INC_BACKUP = 4003,
-		ERROR_FULL_BACKUP = 4004,
-		ERROR_REC_NON_EXISTENT = 4005,
-		ERROR_RPL_NOT_ALLOWED = 4006,
-		ERROR_DHCP_ADDRESS_CONFLICT = 4100,
-		ERROR_WMI_GUID_NOT_FOUND = 4200,
-		ERROR_WMI_INSTANCE_NOT_FOUND = 4201,
-		ERROR_WMI_ITEMID_NOT_FOUND = 4202,
-		ERROR_WMI_TRY_AGAIN = 4203,
-		ERROR_WMI_DP_NOT_FOUND = 4204,
-		ERROR_WMI_UNRESOLVED_INSTANCE_REF = 4205,
-		ERROR_WMI_ALREADY_ENABLED = 4206,
-		ERROR_WMI_GUID_DISCONNECTED = 4207,
-		ERROR_WMI_SERVER_UNAVAILABLE = 4208,
-		ERROR_WMI_DP_FAILED = 4209,
-		ERROR_WMI_INVALID_MOF = 4210,
-		ERROR_WMI_INVALID_REGINFO = 4211,
-		ERROR_WMI_ALREADY_DISABLED = 4212,
-		ERROR_WMI_READ_ONLY = 4213,
-		ERROR_WMI_SET_FAILURE = 4214,
-		ERROR_INVALID_MEDIA = 4300,
-		ERROR_INVALID_LIBRARY = 4301,
-		ERROR_INVALID_MEDIA_POOL = 4302,
-		ERROR_DRIVE_MEDIA_MISMATCH = 4303,
-		ERROR_MEDIA_OFFLINE = 4304,
-		ERROR_LIBRARY_OFFLINE = 4305,
-		ERROR_EMPTY = 4306,
-		ERROR_NOT_EMPTY = 4307,
-		ERROR_MEDIA_UNAVAILABLE = 4308,
-		ERROR_RESOURCE_DISABLED = 4309,
-		ERROR_INVALID_CLEANER = 4310,
-		ERROR_UNABLE_TO_CLEAN = 4311,
-		ERROR_OBJECT_NOT_FOUND = 4312,
-		ERROR_DATABASE_FAILURE = 4313,
-		ERROR_DATABASE_FULL = 4314,
-		ERROR_MEDIA_INCOMPATIBLE = 4315,
-		ERROR_RESOURCE_NOT_PRESENT = 4316,
-		ERROR_INVALID_OPERATION = 4317,
-		ERROR_MEDIA_NOT_AVAILABLE = 4318,
-		ERROR_DEVICE_NOT_AVAILABLE = 4319,
-		ERROR_REQUEST_REFUSED = 4320,
-		ERROR_INVALID_DRIVE_OBJECT = 4321,
-		ERROR_LIBRARY_FULL = 4322,
-		ERROR_MEDIUM_NOT_ACCESSIBLE = 4323,
-		ERROR_UNABLE_TO_LOAD_MEDIUM = 4324,
-		ERROR_UNABLE_TO_INVENTORY_DRIVE = 4325,
-		ERROR_UNABLE_TO_INVENTORY_SLOT = 4326,
-		ERROR_UNABLE_TO_INVENTORY_TRANSPORT = 4327,
-		ERROR_TRANSPORT_FULL = 4328,
-		ERROR_CONTROLLING_IEPORT = 4329,
-		ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA = 4330,
-		ERROR_CLEANER_SLOT_SET = 4331,
-		ERROR_CLEANER_SLOT_NOT_SET = 4332,
-		ERROR_CLEANER_CARTRIDGE_SPENT = 4333,
-		ERROR_UNEXPECTED_OMID = 4334,
-		ERROR_CANT_DELETE_LAST_ITEM = 4335,
-		ERROR_MESSAGE_EXCEEDS_MAX_SIZE = 4336,
-		ERROR_VOLUME_CONTAINS_SYS_FILES = 4337,
-		ERROR_INDIGENOUS_TYPE = 4338,
-		ERROR_NO_SUPPORTING_DRIVES = 4339,
-		ERROR_CLEANER_CARTRIDGE_INSTALLED = 4340,
-		ERROR_FILE_OFFLINE = 4350,
-		ERROR_REMOTE_STORAGE_NOT_ACTIVE = 4351,
-		ERROR_REMOTE_STORAGE_MEDIA_ERROR = 4352,
-		ERROR_NOT_A_REPARSE_POINT = 4390,
-		ERROR_REPARSE_ATTRIBUTE_CONFLICT = 4391,
-		ERROR_INVALID_REPARSE_DATA = 4392,
-		ERROR_REPARSE_TAG_INVALID = 4393,
-		ERROR_REPARSE_TAG_MISMATCH = 4394,
-		ERROR_VOLUME_NOT_SIS_ENABLED = 4500,
-		ERROR_DEPENDENT_RESOURCE_EXISTS = 5001,
-		ERROR_DEPENDENCY_NOT_FOUND = 5002,
-		ERROR_DEPENDENCY_ALREADY_EXISTS = 5003,
-		ERROR_RESOURCE_NOT_ONLINE = 5004,
-		ERROR_HOST_NODE_NOT_AVAILABLE = 5005,
-		ERROR_RESOURCE_NOT_AVAILABLE = 5006,
-		ERROR_RESOURCE_NOT_FOUND = 5007,
-		ERROR_SHUTDOWN_CLUSTER = 5008,
-		ERROR_CANT_EVICT_ACTIVE_NODE = 5009,
-		ERROR_OBJECT_ALREADY_EXISTS = 5010,
-		ERROR_OBJECT_IN_LIST = 5011,
-		ERROR_GROUP_NOT_AVAILABLE = 5012,
-		ERROR_GROUP_NOT_FOUND = 5013,
-		ERROR_GROUP_NOT_ONLINE = 5014,
-		ERROR_HOST_NODE_NOT_RESOURCE_OWNER = 5015,
-		ERROR_HOST_NODE_NOT_GROUP_OWNER = 5016,
-		ERROR_RESMON_CREATE_FAILED = 5017,
-		ERROR_RESMON_ONLINE_FAILED = 5018,
-		ERROR_RESOURCE_ONLINE = 5019,
-		ERROR_QUORUM_RESOURCE = 5020,
-		ERROR_NOT_QUORUM_CAPABLE = 5021,
-		ERROR_CLUSTER_SHUTTING_DOWN = 5022,
-		ERROR_INVALID_STATE = 5023,
-		ERROR_RESOURCE_PROPERTIES_STORED = 5024,
-		ERROR_NOT_QUORUM_CLASS = 5025,
-		ERROR_CORE_RESOURCE = 5026,
-		ERROR_QUORUM_RESOURCE_ONLINE_FAILED = 5027,
-		ERROR_QUORUMLOG_OPEN_FAILED = 5028,
-		ERROR_CLUSTERLOG_CORRUPT = 5029,
-		ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE = 5030,
-		ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE = 5031,
-		ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND = 5032,
-		ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE = 5033,
-		ERROR_QUORUM_OWNER_ALIVE = 5034,
-		ERROR_NETWORK_NOT_AVAILABLE = 5035,
-		ERROR_NODE_NOT_AVAILABLE = 5036,
-		ERROR_ALL_NODES_NOT_AVAILABLE = 5037,
-		ERROR_RESOURCE_FAILED = 5038,
-		ERROR_CLUSTER_INVALID_NODE = 5039,
-		ERROR_CLUSTER_NODE_EXISTS = 5040,
-		ERROR_CLUSTER_JOIN_IN_PROGRESS = 5041,
-		ERROR_CLUSTER_NODE_NOT_FOUND = 5042,
-		ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND = 5043,
-		ERROR_CLUSTER_NETWORK_EXISTS = 5044,
-		ERROR_CLUSTER_NETWORK_NOT_FOUND = 5045,
-		ERROR_CLUSTER_NETINTERFACE_EXISTS = 5046,
-		ERROR_CLUSTER_NETINTERFACE_NOT_FOUND = 5047,
-		ERROR_CLUSTER_INVALID_REQUEST = 5048,
-		ERROR_CLUSTER_INVALID_NETWORK_PROVIDER = 5049,
-		ERROR_CLUSTER_NODE_DOWN = 5050,
-		ERROR_CLUSTER_NODE_UNREACHABLE = 5051,
-		ERROR_CLUSTER_NODE_NOT_MEMBER = 5052,
-		ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS = 5053,
-		ERROR_CLUSTER_INVALID_NETWORK = 5054,
-		ERROR_CLUSTER_NODE_UP = 5056,
-		ERROR_CLUSTER_IPADDR_IN_USE = 5057,
-		ERROR_CLUSTER_NODE_NOT_PAUSED = 5058,
-		ERROR_CLUSTER_NO_SECURITY_CONTEXT = 5059,
-		ERROR_CLUSTER_NETWORK_NOT_INTERNAL = 5060,
-		ERROR_CLUSTER_NODE_ALREADY_UP = 5061,
-		ERROR_CLUSTER_NODE_ALREADY_DOWN = 5062,
-		ERROR_CLUSTER_NETWORK_ALREADY_ONLINE = 5063,
-		ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE = 5064,
-		ERROR_CLUSTER_NODE_ALREADY_MEMBER = 5065,
-		ERROR_CLUSTER_LAST_INTERNAL_NETWORK = 5066,
-		ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS = 5067,
-		ERROR_INVALID_OPERATION_ON_QUORUM = 5068,
-		ERROR_DEPENDENCY_NOT_ALLOWED = 5069,
-		ERROR_CLUSTER_NODE_PAUSED = 5070,
-		ERROR_NODE_CANT_HOST_RESOURCE = 5071,
-		ERROR_CLUSTER_NODE_NOT_READY = 5072,
-		ERROR_CLUSTER_NODE_SHUTTING_DOWN = 5073,
-		ERROR_CLUSTER_JOIN_ABORTED = 5074,
-		ERROR_CLUSTER_INCOMPATIBLE_VERSIONS = 5075,
-		ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED = 5076,
-		ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED = 5077,
-		ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND = 5078,
-		ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED = 5079,
-		ERROR_CLUSTER_RESNAME_NOT_FOUND = 5080,
-		ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED = 5081,
-		ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST = 5082,
-		ERROR_CLUSTER_DATABASE_SEQMISMATCH = 5083,
-		ERROR_RESMON_INVALID_STATE = 5084,
-		ERROR_CLUSTER_GUM_NOT_LOCKER = 5085,
-		ERROR_QUORUM_DISK_NOT_FOUND = 5086,
-		ERROR_DATABASE_BACKUP_CORRUPT = 5087,
-		ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT = 5088,
-		ERROR_RESOURCE_PROPERTY_UNCHANGEABLE = 5089,
-		ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890,
-		ERROR_CLUSTER_QUORUMLOG_NOT_FOUND = 5891,
-		ERROR_CLUSTER_MEMBERSHIP_HALT = 5892,
-		ERROR_CLUSTER_INSTANCE_ID_MISMATCH = 5893,
-		ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP = 5894,
-		ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH = 5895,
-		ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP = 5896,
-		ERROR_CLUSTER_PARAMETER_MISMATCH = 5897,
-		ERROR_NODE_CANNOT_BE_CLUSTERED = 5898,
-		ERROR_CLUSTER_WRONG_OS_VERSION = 5899,
-		ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME = 5900,
-	*/
-		ERROR_ENCRYPTION_FAILED = 6000,
-	/*
-		ERROR_DECRYPTION_FAILED = 6001,
-		ERROR_FILE_ENCRYPTED = 6002,
-		ERROR_NO_RECOVERY_POLICY = 6003,
-		ERROR_NO_EFS = 6004,
-		ERROR_WRONG_EFS = 6005,
-		ERROR_NO_USER_KEYS = 6006,
-		ERROR_FILE_NOT_ENCRYPTED = 6007,
-		ERROR_NOT_EXPORT_FORMAT = 6008,
-		ERROR_FILE_READ_ONLY = 6009,
-		ERROR_DIR_EFS_DISALLOWED = 6010,
-		ERROR_EFS_SERVER_NOT_TRUSTED = 6011,
-		ERROR_BAD_RECOVERY_POLICY = 6012,
-		ERROR_EFS_ALG_BLOB_TOO_BIG = 6013,
-		ERROR_VOLUME_NOT_SUPPORT_EFS = 6014,
-		ERROR_EFS_DISABLED = 6015,
-		ERROR_EFS_VERSION_NOT_SUPPORT = 6016,
-		ERROR_NO_BROWSER_SERVERS_FOUND = 6118,
-		SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200,
-		ERROR_CTX_WINSTATION_NAME_INVALID = 7001,
-		ERROR_CTX_INVALID_PD = 7002,
-		ERROR_CTX_PD_NOT_FOUND = 7003,
-		ERROR_CTX_WD_NOT_FOUND = 7004,
-		ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY = 7005,
-		ERROR_CTX_SERVICE_NAME_COLLISION = 7006,
-		ERROR_CTX_CLOSE_PENDING = 7007,
-		ERROR_CTX_NO_OUTBUF = 7008,
-		ERROR_CTX_MODEM_INF_NOT_FOUND = 7009,
-		ERROR_CTX_INVALID_MODEMNAME = 7010,
-		ERROR_CTX_MODEM_RESPONSE_ERROR = 7011,
-		ERROR_CTX_MODEM_RESPONSE_TIMEOUT = 7012,
-		ERROR_CTX_MODEM_RESPONSE_NO_CARRIER = 7013,
-		ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE = 7014,
-		ERROR_CTX_MODEM_RESPONSE_BUSY = 7015,
-		ERROR_CTX_MODEM_RESPONSE_VOICE = 7016,
-		ERROR_CTX_TD_ERROR = 7017,
-		ERROR_CTX_WINSTATION_NOT_FOUND = 7022,
-		ERROR_CTX_WINSTATION_ALREADY_EXISTS = 7023,
-		ERROR_CTX_WINSTATION_BUSY = 7024,
-		ERROR_CTX_BAD_VIDEO_MODE = 7025,
-		ERROR_CTX_GRAPHICS_INVALID = 7035,
-		ERROR_CTX_LOGON_DISABLED = 7037,
-		ERROR_CTX_NOT_CONSOLE = 7038,
-		ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040,
-		ERROR_CTX_CONSOLE_DISCONNECT = 7041,
-		ERROR_CTX_CONSOLE_CONNECT = 7042,
-		ERROR_CTX_SHADOW_DENIED = 7044,
-		ERROR_CTX_WINSTATION_ACCESS_DENIED = 7045,
-		ERROR_CTX_INVALID_WD = 7049,
-		ERROR_CTX_SHADOW_INVALID = 7050,
-		ERROR_CTX_SHADOW_DISABLED = 7051,
-		ERROR_CTX_CLIENT_LICENSE_IN_USE = 7052,
-		ERROR_CTX_CLIENT_LICENSE_NOT_SET = 7053,
-		ERROR_CTX_LICENSE_NOT_AVAILABLE = 7054,
-		ERROR_CTX_LICENSE_CLIENT_INVALID = 7055,
-		ERROR_CTX_LICENSE_EXPIRED = 7056,
-		ERROR_CTX_SHADOW_NOT_RUNNING = 7057,
-		ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE = 7058,
-		FRS_ERR_INVALID_API_SEQUENCE = 8001,
-		FRS_ERR_STARTING_SERVICE = 8002,
-		FRS_ERR_STOPPING_SERVICE = 8003,
-		FRS_ERR_INTERNAL_API = 8004,
-		FRS_ERR_INTERNAL = 8005,
-		FRS_ERR_SERVICE_COMM = 8006,
-		FRS_ERR_INSUFFICIENT_PRIV = 8007,
-		FRS_ERR_AUTHENTICATION = 8008,
-		FRS_ERR_PARENT_INSUFFICIENT_PRIV = 8009,
-		FRS_ERR_PARENT_AUTHENTICATION = 8010,
-		FRS_ERR_CHILD_TO_PARENT_COMM = 8011,
-		FRS_ERR_PARENT_TO_CHILD_COMM = 8012,
-		FRS_ERR_SYSVOL_POPULATE = 8013,
-		FRS_ERR_SYSVOL_POPULATE_TIMEOUT = 8014,
-		FRS_ERR_SYSVOL_IS_BUSY = 8015,
-		FRS_ERR_SYSVOL_DEMOTE = 8016,
-		FRS_ERR_INVALID_SERVICE_PARAMETER = 8017,
-		ERROR_DS_NOT_INSTALLED = 8200,
-		ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY = 8201,
-		ERROR_DS_NO_ATTRIBUTE_OR_VALUE = 8202,
-		ERROR_DS_INVALID_ATTRIBUTE_SYNTAX = 8203,
-		ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED = 8204,
-		ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS = 8205,
-		ERROR_DS_BUSY = 8206,
-		ERROR_DS_UNAVAILABLE = 8207,
-		ERROR_DS_NO_RIDS_ALLOCATED = 8208,
-		ERROR_DS_NO_MORE_RIDS = 8209,
-		ERROR_DS_INCORRECT_ROLE_OWNER = 8210,
-		ERROR_DS_RIDMGR_INIT_ERROR = 8211,
-		ERROR_DS_OBJ_CLASS_VIOLATION = 8212,
-		ERROR_DS_CANT_ON_NON_LEAF = 8213,
-		ERROR_DS_CANT_ON_RDN = 8214,
-		ERROR_DS_CANT_MOD_OBJ_CLASS = 8215,
-		ERROR_DS_CROSS_DOM_MOVE_ERROR = 8216,
-		ERROR_DS_GC_NOT_AVAILABLE = 8217,
-		ERROR_SHARED_POLICY = 8218,
-		ERROR_POLICY_OBJECT_NOT_FOUND = 8219,
-		ERROR_POLICY_ONLY_IN_DS = 8220,
-		ERROR_PROMOTION_ACTIVE = 8221,
-		ERROR_NO_PROMOTION_ACTIVE = 8222,
-		ERROR_DS_OPERATIONS_ERROR = 8224,
-		ERROR_DS_PROTOCOL_ERROR = 8225,
-		ERROR_DS_TIMELIMIT_EXCEEDED = 8226,
-		ERROR_DS_SIZELIMIT_EXCEEDED = 8227,
-		ERROR_DS_ADMIN_LIMIT_EXCEEDED = 8228,
-		ERROR_DS_COMPARE_FALSE = 8229,
-		ERROR_DS_COMPARE_TRUE = 8230,
-		ERROR_DS_AUTH_METHOD_NOT_SUPPORTED = 8231,
-		ERROR_DS_STRONG_AUTH_REQUIRED = 8232,
-		ERROR_DS_INAPPROPRIATE_AUTH = 8233,
-		ERROR_DS_AUTH_UNKNOWN = 8234,
-		ERROR_DS_REFERRAL = 8235,
-		ERROR_DS_UNAVAILABLE_CRIT_EXTENSION = 8236,
-		ERROR_DS_CONFIDENTIALITY_REQUIRED = 8237,
-		ERROR_DS_INAPPROPRIATE_MATCHING = 8238,
-		ERROR_DS_CONSTRAINT_VIOLATION = 8239,
-		ERROR_DS_NO_SUCH_OBJECT = 8240,
-		ERROR_DS_ALIAS_PROBLEM = 8241,
-		ERROR_DS_INVALID_DN_SYNTAX = 8242,
-		ERROR_DS_IS_LEAF = 8243,
-		ERROR_DS_ALIAS_DEREF_PROBLEM = 8244,
-		ERROR_DS_UNWILLING_TO_PERFORM = 8245,
-		ERROR_DS_LOOP_DETECT = 8246,
-		ERROR_DS_NAMING_VIOLATION = 8247,
-		ERROR_DS_OBJECT_RESULTS_TOO_LARGE = 8248,
-		ERROR_DS_AFFECTS_MULTIPLE_DSAS = 8249,
-		ERROR_DS_SERVER_DOWN = 8250,
-		ERROR_DS_LOCAL_ERROR = 8251,
-		ERROR_DS_ENCODING_ERROR = 8252,
-		ERROR_DS_DECODING_ERROR = 8253,
-		ERROR_DS_FILTER_UNKNOWN = 8254,
-		ERROR_DS_PARAM_ERROR = 8255,
-		ERROR_DS_NOT_SUPPORTED = 8256,
-		ERROR_DS_NO_RESULTS_RETURNED = 8257,
-		ERROR_DS_CONTROL_NOT_FOUND = 8258,
-		ERROR_DS_CLIENT_LOOP = 8259,
-		ERROR_DS_REFERRAL_LIMIT_EXCEEDED = 8260,
-		ERROR_DS_SORT_CONTROL_MISSING = 8261,
-		ERROR_DS_OFFSET_RANGE_ERROR = 8262,
-		ERROR_DS_ROOT_MUST_BE_NC = 8301,
-		ERROR_DS_ADD_REPLICA_INHIBITED = 8302,
-		ERROR_DS_ATT_NOT_DEF_IN_SCHEMA = 8303,
-		ERROR_DS_MAX_OBJ_SIZE_EXCEEDED = 8304,
-		ERROR_DS_OBJ_STRING_NAME_EXISTS = 8305,
-		ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA = 8306,
-		ERROR_DS_RDN_DOESNT_MATCH_SCHEMA = 8307,
-		ERROR_DS_NO_REQUESTED_ATTS_FOUND = 8308,
-		ERROR_DS_USER_BUFFER_TO_SMALL = 8309,
-		ERROR_DS_ATT_IS_NOT_ON_OBJ = 8310,
-		ERROR_DS_ILLEGAL_MOD_OPERATION = 8311,
-		ERROR_DS_OBJ_TOO_LARGE = 8312,
-		ERROR_DS_BAD_INSTANCE_TYPE = 8313,
-		ERROR_DS_MASTERDSA_REQUIRED = 8314,
-		ERROR_DS_OBJECT_CLASS_REQUIRED = 8315,
-		ERROR_DS_MISSING_REQUIRED_ATT = 8316,
-		ERROR_DS_ATT_NOT_DEF_FOR_CLASS = 8317,
-		ERROR_DS_ATT_ALREADY_EXISTS = 8318,
-		ERROR_DS_CANT_ADD_ATT_VALUES = 8320,
-		ERROR_DS_SINGLE_VALUE_CONSTRAINT = 8321,
-		ERROR_DS_RANGE_CONSTRAINT = 8322,
-		ERROR_DS_ATT_VAL_ALREADY_EXISTS = 8323,
-		ERROR_DS_CANT_REM_MISSING_ATT = 8324,
-		ERROR_DS_CANT_REM_MISSING_ATT_VAL = 8325,
-		ERROR_DS_ROOT_CANT_BE_SUBREF = 8326,
-		ERROR_DS_NO_CHAINING = 8327,
-		ERROR_DS_NO_CHAINED_EVAL = 8328,
-		ERROR_DS_NO_PARENT_OBJECT = 8329,
-		ERROR_DS_PARENT_IS_AN_ALIAS = 8330,
-		ERROR_DS_CANT_MIX_MASTER_AND_REPS = 8331,
-		ERROR_DS_CHILDREN_EXIST = 8332,
-		ERROR_DS_OBJ_NOT_FOUND = 8333,
-		ERROR_DS_ALIASED_OBJ_MISSING = 8334,
-		ERROR_DS_BAD_NAME_SYNTAX = 8335,
-		ERROR_DS_ALIAS_POINTS_TO_ALIAS = 8336,
-		ERROR_DS_CANT_DEREF_ALIAS = 8337,
-		ERROR_DS_OUT_OF_SCOPE = 8338,
-		ERROR_DS_OBJECT_BEING_REMOVED = 8339,
-		ERROR_DS_CANT_DELETE_DSA_OBJ = 8340,
-		ERROR_DS_GENERIC_ERROR = 8341,
-		ERROR_DS_DSA_MUST_BE_INT_MASTER = 8342,
-		ERROR_DS_CLASS_NOT_DSA = 8343,
-		ERROR_DS_INSUFF_ACCESS_RIGHTS = 8344,
-		ERROR_DS_ILLEGAL_SUPERIOR = 8345,
-		ERROR_DS_ATTRIBUTE_OWNED_BY_SAM = 8346,
-		ERROR_DS_NAME_TOO_MANY_PARTS = 8347,
-		ERROR_DS_NAME_TOO_LONG = 8348,
-		ERROR_DS_NAME_VALUE_TOO_LONG = 8349,
-		ERROR_DS_NAME_UNPARSEABLE = 8350,
-		ERROR_DS_NAME_TYPE_UNKNOWN = 8351,
-		ERROR_DS_NOT_AN_OBJECT = 8352,
-		ERROR_DS_SEC_DESC_TOO_SHORT = 8353,
-		ERROR_DS_SEC_DESC_INVALID = 8354,
-		ERROR_DS_NO_DELETED_NAME = 8355,
-		ERROR_DS_SUBREF_MUST_HAVE_PARENT = 8356,
-		ERROR_DS_NCNAME_MUST_BE_NC = 8357,
-		ERROR_DS_CANT_ADD_SYSTEM_ONLY = 8358,
-		ERROR_DS_CLASS_MUST_BE_CONCRETE = 8359,
-		ERROR_DS_INVALID_DMD = 8360,
-		ERROR_DS_OBJ_GUID_EXISTS = 8361,
-		ERROR_DS_NOT_ON_BACKLINK = 8362,
-		ERROR_DS_NO_CROSSREF_FOR_NC = 8363,
-		ERROR_DS_SHUTTING_DOWN = 8364,
-		ERROR_DS_UNKNOWN_OPERATION = 8365,
-		ERROR_DS_INVALID_ROLE_OWNER = 8366,
-		ERROR_DS_COULDNT_CONTACT_FSMO = 8367,
-		ERROR_DS_CROSS_NC_DN_RENAME = 8368,
-		ERROR_DS_CANT_MOD_SYSTEM_ONLY = 8369,
-		ERROR_DS_REPLICATOR_ONLY = 8370,
-		ERROR_DS_OBJ_CLASS_NOT_DEFINED = 8371,
-		ERROR_DS_OBJ_CLASS_NOT_SUBCLASS = 8372,
-		ERROR_DS_NAME_REFERENCE_INVALID = 8373,
-		ERROR_DS_CROSS_REF_EXISTS = 8374,
-		ERROR_DS_CANT_DEL_MASTER_CROSSREF = 8375,
-		ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD = 8376,
-		ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX = 8377,
-		ERROR_DS_DUP_RDN = 8378,
-		ERROR_DS_DUP_OID = 8379,
-		ERROR_DS_DUP_MAPI_ID = 8380,
-		ERROR_DS_DUP_SCHEMA_ID_GUID = 8381,
-		ERROR_DS_DUP_LDAP_DISPLAY_NAME = 8382,
-		ERROR_DS_SEMANTIC_ATT_TEST = 8383,
-		ERROR_DS_SYNTAX_MISMATCH = 8384,
-		ERROR_DS_EXISTS_IN_MUST_HAVE = 8385,
-		ERROR_DS_EXISTS_IN_MAY_HAVE = 8386,
-		ERROR_DS_NONEXISTENT_MAY_HAVE = 8387,
-		ERROR_DS_NONEXISTENT_MUST_HAVE = 8388,
-		ERROR_DS_AUX_CLS_TEST_FAIL = 8389,
-		ERROR_DS_NONEXISTENT_POSS_SUP = 8390,
-		ERROR_DS_SUB_CLS_TEST_FAIL = 8391,
-		ERROR_DS_BAD_RDN_ATT_ID_SYNTAX = 8392,
-		ERROR_DS_EXISTS_IN_AUX_CLS = 8393,
-		ERROR_DS_EXISTS_IN_SUB_CLS = 8394,
-		ERROR_DS_EXISTS_IN_POSS_SUP = 8395,
-		ERROR_DS_RECALCSCHEMA_FAILED = 8396,
-		ERROR_DS_TREE_DELETE_NOT_FINISHED = 8397,
-		ERROR_DS_CANT_DELETE = 8398,
-		ERROR_DS_ATT_SCHEMA_REQ_ID = 8399,
-		ERROR_DS_BAD_ATT_SCHEMA_SYNTAX = 8400,
-		ERROR_DS_CANT_CACHE_ATT = 8401,
-		ERROR_DS_CANT_CACHE_CLASS = 8402,
-		ERROR_DS_CANT_REMOVE_ATT_CACHE = 8403,
-		ERROR_DS_CANT_REMOVE_CLASS_CACHE = 8404,
-		ERROR_DS_CANT_RETRIEVE_DN = 8405,
-		ERROR_DS_MISSING_SUPREF = 8406,
-		ERROR_DS_CANT_RETRIEVE_INSTANCE = 8407,
-		ERROR_DS_CODE_INCONSISTENCY = 8408,
-		ERROR_DS_DATABASE_ERROR = 8409,
-		ERROR_DS_GOVERNSID_MISSING = 8410,
-		ERROR_DS_MISSING_EXPECTED_ATT = 8411,
-		ERROR_DS_NCNAME_MISSING_CR_REF = 8412,
-		ERROR_DS_SECURITY_CHECKING_ERROR = 8413,
-		ERROR_DS_SCHEMA_NOT_LOADED = 8414,
-		ERROR_DS_SCHEMA_ALLOC_FAILED = 8415,
-		ERROR_DS_ATT_SCHEMA_REQ_SYNTAX = 8416,
-		ERROR_DS_GCVERIFY_ERROR = 8417,
-		ERROR_DS_DRA_SCHEMA_MISMATCH = 8418,
-		ERROR_DS_CANT_FIND_DSA_OBJ = 8419,
-		ERROR_DS_CANT_FIND_EXPECTED_NC = 8420,
-		ERROR_DS_CANT_FIND_NC_IN_CACHE = 8421,
-		ERROR_DS_CANT_RETRIEVE_CHILD = 8422,
-		ERROR_DS_SECURITY_ILLEGAL_MODIFY = 8423,
-		ERROR_DS_CANT_REPLACE_HIDDEN_REC = 8424,
-		ERROR_DS_BAD_HIERARCHY_FILE = 8425,
-		ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED = 8426,
-		ERROR_DS_CONFIG_PARAM_MISSING = 8427,
-		ERROR_DS_COUNTING_AB_INDICES_FAILED = 8428,
-		ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED = 8429,
-		ERROR_DS_INTERNAL_FAILURE = 8430,
-		ERROR_DS_UNKNOWN_ERROR = 8431,
-		ERROR_DS_ROOT_REQUIRES_CLASS_TOP = 8432,
-		ERROR_DS_REFUSING_FSMO_ROLES = 8433,
-		ERROR_DS_MISSING_FSMO_SETTINGS = 8434,
-		ERROR_DS_UNABLE_TO_SURRENDER_ROLES = 8435,
-		ERROR_DS_DRA_GENERIC = 8436,
-		ERROR_DS_DRA_INVALID_PARAMETER = 8437,
-		ERROR_DS_DRA_BUSY = 8438,
-		ERROR_DS_DRA_BAD_DN = 8439,
-		ERROR_DS_DRA_BAD_NC = 8440,
-		ERROR_DS_DRA_DN_EXISTS = 8441,
-		ERROR_DS_DRA_INTERNAL_ERROR = 8442,
-		ERROR_DS_DRA_INCONSISTENT_DIT = 8443,
-		ERROR_DS_DRA_CONNECTION_FAILED = 8444,
-		ERROR_DS_DRA_BAD_INSTANCE_TYPE = 8445,
-		ERROR_DS_DRA_OUT_OF_MEM = 8446,
-		ERROR_DS_DRA_MAIL_PROBLEM = 8447,
-		ERROR_DS_DRA_REF_ALREADY_EXISTS = 8448,
-		ERROR_DS_DRA_REF_NOT_FOUND = 8449,
-		ERROR_DS_DRA_OBJ_IS_REP_SOURCE = 8450,
-		ERROR_DS_DRA_DB_ERROR = 8451,
-		ERROR_DS_DRA_NO_REPLICA = 8452,
-		ERROR_DS_DRA_ACCESS_DENIED = 8453,
-		ERROR_DS_DRA_NOT_SUPPORTED = 8454,
-		ERROR_DS_DRA_RPC_CANCELLED = 8455,
-		ERROR_DS_DRA_SOURCE_DISABLED = 8456,
-		ERROR_DS_DRA_SINK_DISABLED = 8457,
-		ERROR_DS_DRA_NAME_COLLISION = 8458,
-		ERROR_DS_DRA_SOURCE_REINSTALLED = 8459,
-		ERROR_DS_DRA_MISSING_PARENT = 8460,
-		ERROR_DS_DRA_PREEMPTED = 8461,
-		ERROR_DS_DRA_ABANDON_SYNC = 8462,
-		ERROR_DS_DRA_SHUTDOWN = 8463,
-		ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET = 8464,
-		ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA = 8465,
-		ERROR_DS_DRA_EXTN_CONNECTION_FAILED = 8466,
-		ERROR_DS_INSTALL_SCHEMA_MISMATCH = 8467,
-		ERROR_DS_DUP_LINK_ID = 8468,
-		ERROR_DS_NAME_ERROR_RESOLVING = 8469,
-		ERROR_DS_NAME_ERROR_NOT_FOUND = 8470,
-		ERROR_DS_NAME_ERROR_NOT_UNIQUE = 8471,
-		ERROR_DS_NAME_ERROR_NO_MAPPING = 8472,
-		ERROR_DS_NAME_ERROR_DOMAIN_ONLY = 8473,
-		ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING = 8474,
-		ERROR_DS_CONSTRUCTED_ATT_MOD = 8475,
-		ERROR_DS_WRONG_OM_OBJ_CLASS = 8476,
-		ERROR_DS_DRA_REPL_PENDING = 8477,
-		ERROR_DS_DS_REQUIRED = 8478,
-		ERROR_DS_INVALID_LDAP_DISPLAY_NAME = 8479,
-		ERROR_DS_NON_BASE_SEARCH = 8480,
-		ERROR_DS_CANT_RETRIEVE_ATTS = 8481,
-		ERROR_DS_BACKLINK_WITHOUT_LINK = 8482,
-		ERROR_DS_EPOCH_MISMATCH = 8483,
-		ERROR_DS_SRC_NAME_MISMATCH = 8484,
-		ERROR_DS_SRC_AND_DST_NC_IDENTICAL = 8485,
-		ERROR_DS_DST_NC_MISMATCH = 8486,
-		ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC = 8487,
-		ERROR_DS_SRC_GUID_MISMATCH = 8488,
-		ERROR_DS_CANT_MOVE_DELETED_OBJECT = 8489,
-		ERROR_DS_PDC_OPERATION_IN_PROGRESS = 8490,
-		ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD = 8491,
-		ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION = 8492,
-		ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS = 8493,
-		ERROR_DS_NC_MUST_HAVE_NC_PARENT = 8494,
-		ERROR_DS_DST_DOMAIN_NOT_NATIVE = 8496,
-		ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER = 8497,
-		ERROR_DS_CANT_MOVE_ACCOUNT_GROUP = 8498,
-		ERROR_DS_CANT_MOVE_RESOURCE_GROUP = 8499,
-		ERROR_DS_INVALID_SEARCH_FLAG = 8500,
-		ERROR_DS_NO_TREE_DELETE_ABOVE_NC = 8501,
-		ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE = 8502,
-		ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE = 8503,
-		ERROR_DS_SAM_INIT_FAILURE = 8504,
-		ERROR_DS_SENSITIVE_GROUP_VIOLATION = 8505,
-		ERROR_DS_CANT_MOD_PRIMARYGROUPID = 8506,
-		ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD = 8507,
-		ERROR_DS_NONSAFE_SCHEMA_CHANGE = 8508,
-		ERROR_DS_SCHEMA_UPDATE_DISALLOWED = 8509,
-		ERROR_DS_CANT_CREATE_UNDER_SCHEMA = 8510,
-		ERROR_DS_INSTALL_NO_SRC_SCH_VERSION = 8511,
-		ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE = 8512,
-		ERROR_DS_INVALID_GROUP_TYPE = 8513,
-		ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN = 8514,
-		ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN = 8515,
-		ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER = 8516,
-		ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER = 8517,
-		ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER = 8518,
-		ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER = 8519,
-		ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER = 8520,
-		ERROR_DS_HAVE_PRIMARY_MEMBERS = 8521,
-		ERROR_DS_STRING_SD_CONVERSION_FAILED = 8522,
-		ERROR_DS_NAMING_MASTER_GC = 8523,
-		ERROR_DS_LOOKUP_FAILURE = 8524,
-		ERROR_DS_COULDNT_UPDATE_SPNS = 8525,
-		ERROR_DS_CANT_RETRIEVE_SD = 8526,
-		ERROR_DS_KEY_NOT_UNIQUE = 8527,
-		ERROR_DS_WRONG_LINKED_ATT_SYNTAX = 8528,
-		ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD = 8529,
-		ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY = 8530,
-		ERROR_DS_CANT_START = 8531,
-		ERROR_DS_INIT_FAILURE = 8532,
-		ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION = 8533,
-		ERROR_DS_SOURCE_DOMAIN_IN_FOREST = 8534,
-		ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST = 8535,
-		ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED = 8536,
-		ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN = 8537,
-		ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER = 8538,
-		ERROR_DS_SRC_SID_EXISTS_IN_FOREST = 8539,
-		ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH = 8540,
-		ERROR_SAM_INIT_FAILURE = 8541,
-		ERROR_DS_DRA_SCHEMA_INFO_SHIP = 8542,
-		ERROR_DS_DRA_SCHEMA_CONFLICT = 8543,
-		ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT = 8544,
-		ERROR_DS_DRA_OBJ_NC_MISMATCH = 8545,
-		ERROR_DS_NC_STILL_HAS_DSAS = 8546,
-		ERROR_DS_GC_REQUIRED = 8547,
-		ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY = 8548,
-		ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS = 8549,
-		ERROR_DS_CANT_ADD_TO_GC = 8550,
-		ERROR_DS_NO_CHECKPOINT_WITH_PDC = 8551,
-		ERROR_DS_SOURCE_AUDITING_NOT_ENABLED = 8552,
-		ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC = 8553,
-		ERROR_DS_INVALID_NAME_FOR_SPN = 8554,
-		ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS = 8555,
-		ERROR_DS_UNICODEPWD_NOT_IN_QUOTES = 8556,
-		ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED = 8557,
-		ERROR_DS_MUST_BE_RUN_ON_DST_DC = 8558,
-		ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER = 8559,
-		ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ = 8560,
-		ERROR_DS_INIT_FAILURE_CONSOLE = 8561,
-		ERROR_DS_SAM_INIT_FAILURE_CONSOLE = 8562,
-		ERROR_DS_FOREST_VERSION_TOO_HIGH = 8563,
-		ERROR_DS_DOMAIN_VERSION_TOO_HIGH = 8564,
-		ERROR_DS_FOREST_VERSION_TOO_LOW = 8565,
-		ERROR_DS_DOMAIN_VERSION_TOO_LOW = 8566,
-		ERROR_DS_INCOMPATIBLE_VERSION = 8567,
-		ERROR_DS_LOW_DSA_VERSION = 8568,
-		ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN = 8569,
-		ERROR_DS_NOT_SUPPORTED_SORT_ORDER = 8570,
-		ERROR_DS_NAME_NOT_UNIQUE = 8571,
-		ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 = 8572,
-		ERROR_DS_OUT_OF_VERSION_STORE = 8573,
-		ERROR_DS_INCOMPATIBLE_CONTROLS_USED = 8574,
-		ERROR_DS_NO_REF_DOMAIN = 8575,
-		ERROR_DS_RESERVED_LINK_ID = 8576,
-		ERROR_DS_LINK_ID_NOT_AVAILABLE = 8577,
-		ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER = 8578,
-		ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE = 8579,
-		ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC = 8580,
-		ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG = 8581,
-		ERROR_DS_MODIFYDN_WRONG_GRANDPARENT = 8582,
-		ERROR_DS_NAME_ERROR_TRUST_REFERRAL = 8583,
-		ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER = 8584,
-		ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD = 8585,
-		ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE = 8586,
-		ERROR_DS_THREAD_LIMIT_EXCEEDED = 8587,
-		ERROR_DS_NOT_CLOSEST = 8588,
-		ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF = 8589,
-		ERROR_DS_SINGLE_USER_MODE_FAILED = 8590,
-		ERROR_DS_NTDSCRIPT_SYNTAX_ERROR = 8591,
-		ERROR_DS_NTDSCRIPT_PROCESS_ERROR = 8592,
-		ERROR_DS_DIFFERENT_REPL_EPOCHS = 8593,
-		ERROR_DS_DRS_EXTENSIONS_CHANGED = 8594,
-		ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR = 8595,
-		ERROR_DS_NO_MSDS_INTID = 8596,
-		ERROR_DS_DUP_MSDS_INTID = 8597,
-		ERROR_DS_EXISTS_IN_RDNATTID = 8598,
-		ERROR_DS_AUTHORIZATION_FAILED = 8599,
-		ERROR_DS_INVALID_SCRIPT = 8600,
-		ERROR_DS_REMOTE_CROSSREF_OP_FAILED = 8601,
-		DNS_ERROR_RCODE_FORMAT_ERROR = 9001,
-		DNS_ERROR_RCODE_SERVER_FAILURE = 9002,
-		DNS_ERROR_RCODE_NAME_ERROR = 9003,
-		DNS_ERROR_RCODE_NOT_IMPLEMENTED = 9004,
-		DNS_ERROR_RCODE_REFUSED = 9005,
-		DNS_ERROR_RCODE_YXDOMAIN = 9006,
-		DNS_ERROR_RCODE_YXRRSET = 9007,
-		DNS_ERROR_RCODE_NXRRSET = 9008,
-		DNS_ERROR_RCODE_NOTAUTH = 9009,
-		DNS_ERROR_RCODE_NOTZONE = 9010,
-		DNS_ERROR_RCODE_BADSIG = 9016,
-		DNS_ERROR_RCODE_BADKEY = 9017,
-		DNS_ERROR_RCODE_BADTIME = 9018,
-		DNS_INFO_NO_RECORDS = 9501,
-		DNS_ERROR_BAD_PACKET = 9502,
-		DNS_ERROR_NO_PACKET = 9503,
-		DNS_ERROR_RCODE = 9504,
-		DNS_ERROR_UNSECURE_PACKET = 9505,
-		DNS_ERROR_INVALID_TYPE = 9551,
-		DNS_ERROR_INVALID_IP_ADDRESS = 9552,
-		DNS_ERROR_INVALID_PROPERTY = 9553,
-		DNS_ERROR_TRY_AGAIN_LATER = 9554,
-		DNS_ERROR_NOT_UNIQUE = 9555,
-		DNS_ERROR_NON_RFC_NAME = 9556,
-		DNS_STATUS_FQDN = 9557,
-		DNS_STATUS_DOTTED_NAME = 9558,
-		DNS_STATUS_SINGLE_PART_NAME = 9559,
-		DNS_ERROR_INVALID_NAME_CHAR = 9560,
-		DNS_ERROR_NUMERIC_NAME = 9561,
-		DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER = 9562,
-		DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601,
-		DNS_ERROR_NO_ZONE_INFO = 9602,
-		DNS_ERROR_INVALID_ZONE_OPERATION = 9603,
-		DNS_ERROR_ZONE_CONFIGURATION_ERROR = 9604,
-		DNS_ERROR_ZONE_HAS_NO_SOA_RECORD = 9605,
-		DNS_ERROR_ZONE_HAS_NO_NS_RECORDS = 9606,
-		DNS_ERROR_ZONE_LOCKED = 9607,
-		DNS_ERROR_ZONE_CREATION_FAILED = 9608,
-		DNS_ERROR_ZONE_ALREADY_EXISTS = 9609,
-		DNS_ERROR_AUTOZONE_ALREADY_EXISTS = 9610,
-		DNS_ERROR_INVALID_ZONE_TYPE = 9611,
-		DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP = 9612,
-		DNS_ERROR_ZONE_NOT_SECONDARY = 9613,
-		DNS_ERROR_NEED_SECONDARY_ADDRESSES = 9614,
-		DNS_ERROR_WINS_INIT_FAILED = 9615,
-		DNS_ERROR_NEED_WINS_SERVERS = 9616,
-		DNS_ERROR_NBSTAT_INIT_FAILED = 9617,
-		DNS_ERROR_SOA_DELETE_INVALID = 9618,
-		DNS_ERROR_FORWARDER_ALREADY_EXISTS = 9619,
-		DNS_ERROR_ZONE_REQUIRES_MASTER_IP = 9620,
-		DNS_ERROR_ZONE_IS_SHUTDOWN = 9621,
-		DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651,
-		DNS_ERROR_INVALID_DATAFILE_NAME = 9652,
-		DNS_ERROR_DATAFILE_OPEN_FAILURE = 9653,
-		DNS_ERROR_FILE_WRITEBACK_FAILED = 9654,
-		DNS_ERROR_DATAFILE_PARSING = 9655,
-		DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701,
-		DNS_ERROR_RECORD_FORMAT = 9702,
-		DNS_ERROR_NODE_CREATION_FAILED = 9703,
-		DNS_ERROR_UNKNOWN_RECORD_TYPE = 9704,
-		DNS_ERROR_RECORD_TIMED_OUT = 9705,
-		DNS_ERROR_NAME_NOT_IN_ZONE = 9706,
-		DNS_ERROR_CNAME_LOOP = 9707,
-		DNS_ERROR_NODE_IS_CNAME = 9708,
-		DNS_ERROR_CNAME_COLLISION = 9709,
-		DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT = 9710,
-		DNS_ERROR_RECORD_ALREADY_EXISTS = 9711,
-		DNS_ERROR_SECONDARY_DATA = 9712,
-		DNS_ERROR_NO_CREATE_CACHE_DATA = 9713,
-		DNS_ERROR_NAME_DOES_NOT_EXIST = 9714,
-		DNS_WARNING_PTR_CREATE_FAILED = 9715,
-		DNS_WARNING_DOMAIN_UNDELETED = 9716,
-		DNS_ERROR_DS_UNAVAILABLE = 9717,
-		DNS_ERROR_DS_ZONE_ALREADY_EXISTS = 9718,
-		DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE = 9719,
-		DNS_INFO_AXFR_COMPLETE = 9751,
-		DNS_ERROR_AXFR = 9752,
-		DNS_INFO_ADDED_LOCAL_WINS = 9753,
-		DNS_STATUS_CONTINUE_NEEDED = 9801,
-		DNS_ERROR_NO_TCPIP = 9851,
-		DNS_ERROR_NO_DNS_SERVERS = 9852,
-		DNS_ERROR_DP_DOES_NOT_EXIST = 9901,
-		DNS_ERROR_DP_ALREADY_EXISTS = 9902,
-		DNS_ERROR_DP_NOT_ENLISTED = 9903,
-		DNS_ERROR_DP_ALREADY_ENLISTED = 9904,
-		WSAEINTR = 10004,
-		WSAEBADF = 10009,
-		WSAEACCES = 10013,
-		WSAEFAULT = 10014,
-		WSAEINVAL = 10022,
-		WSAEMFILE = 10024,
-		WSAEWOULDBLOCK = 10035,
-		WSAEINPROGRESS = 10036,
-		WSAEALREADY = 10037,
-		WSAENOTSOCK = 10038,
-		WSAEDESTADDRREQ = 10039,
-		WSAEMSGSIZE = 10040,
-		WSAEPROTOTYPE = 10041,
-		WSAENOPROTOOPT = 10042,
-		WSAEPROTONOSUPPORT = 10043,
-		WSAESOCKTNOSUPPORT = 10044,
-		WSAEOPNOTSUPP = 10045,
-		WSAEPFNOSUPPORT = 10046,
-		WSAEAFNOSUPPORT = 10047,
-		WSAEADDRINUSE = 10048,
-		WSAEADDRNOTAVAIL = 10049,
-		WSAENETDOWN = 10050,
-		WSAENETUNREACH = 10051,
-		WSAENETRESET = 10052,
-		WSAECONNABORTED = 10053,
-		WSAECONNRESET = 10054,
-		WSAENOBUFS = 10055,
-		WSAEISCONN = 10056,
-		WSAENOTCONN = 10057,
-		WSAESHUTDOWN = 10058,
-		WSAETOOMANYREFS = 10059,
-		WSAETIMEDOUT = 10060,
-		WSAECONNREFUSED = 10061,
-		WSAELOOP = 10062,
-		WSAENAMETOOLONG = 10063,
-		WSAEHOSTDOWN = 10064,
-		WSAEHOSTUNREACH = 10065,
-		WSAENOTEMPTY = 10066,
-		WSAEPROCLIM = 10067,
-		WSAEUSERS = 10068,
-		WSAEDQUOT = 10069,
-		WSAESTALE = 10070,
-		WSAEREMOTE = 10071,
-		WSASYSNOTREADY = 10091,
-		WSAVERNOTSUPPORTED = 10092,
-		WSANOTINITIALISED = 10093,
-		WSAEDISCON = 10101,
-		WSAENOMORE = 10102,
-		WSAECANCELLED = 10103,
-		WSAEINVALIDPROCTABLE = 10104,
-		WSAEINVALIDPROVIDER = 10105,
-		WSAEPROVIDERFAILEDINIT = 10106,
-		WSASYSCALLFAILURE = 10107,
-		WSASERVICE_NOT_FOUND = 10108,
-		WSATYPE_NOT_FOUND = 10109,
-		WSA_E_NO_MORE = 10110,
-		WSA_E_CANCELLED = 10111,
-		WSAEREFUSED = 10112,
-		WSAHOST_NOT_FOUND = 11001,
-		WSATRY_AGAIN = 11002,
-		WSANO_RECOVERY = 11003,
-		WSANO_DATA = 11004,
-		WSA_QOS_RECEIVERS = 11005,
-		WSA_QOS_SENDERS = 11006,
-		WSA_QOS_NO_SENDERS = 11007,
-		WSA_QOS_NO_RECEIVERS = 11008,
-		WSA_QOS_REQUEST_CONFIRMED = 11009,
-		WSA_QOS_ADMISSION_FAILURE = 11010,
-		WSA_QOS_POLICY_FAILURE = 11011,
-		WSA_QOS_BAD_STYLE = 11012,
-		WSA_QOS_BAD_OBJECT = 11013,
-		WSA_QOS_TRAFFIC_CTRL_ERROR = 11014,
-		WSA_QOS_GENERIC_ERROR = 11015,
-		WSA_QOS_ESERVICETYPE = 11016,
-		WSA_QOS_EFLOWSPEC = 11017,
-		WSA_QOS_EPROVSPECBUF = 11018,
-		WSA_QOS_EFILTERSTYLE = 11019,
-		WSA_QOS_EFILTERTYPE = 11020,
-		WSA_QOS_EFILTERCOUNT = 11021,
-		WSA_QOS_EOBJLENGTH = 11022,
-		WSA_QOS_EFLOWCOUNT = 11023,
-		WSA_QOS_EUNKNOWNPSOBJ = 11024,
-		WSA_QOS_EPOLICYOBJ = 11025,
-		WSA_QOS_EFLOWDESC = 11026,
-		WSA_QOS_EPSFLOWSPEC = 11027,
-		WSA_QOS_EPSFILTERSPEC = 11028,
-		WSA_QOS_ESDMODEOBJ = 11029,
-		WSA_QOS_ESHAPERATEOBJ = 11030,
-		WSA_QOS_RESERVED_PETYPE = 11031,
-		ERROR_IPSEC_QM_POLICY_EXISTS = 13000,
-		ERROR_IPSEC_QM_POLICY_NOT_FOUND = 13001,
-		ERROR_IPSEC_QM_POLICY_IN_USE = 13002,
-		ERROR_IPSEC_MM_POLICY_EXISTS = 13003,
-		ERROR_IPSEC_MM_POLICY_NOT_FOUND = 13004,
-		ERROR_IPSEC_MM_POLICY_IN_USE = 13005,
-		ERROR_IPSEC_MM_FILTER_EXISTS = 13006,
-		ERROR_IPSEC_MM_FILTER_NOT_FOUND = 13007,
-		ERROR_IPSEC_TRANSPORT_FILTER_EXISTS = 13008,
-		ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND = 13009,
-		ERROR_IPSEC_MM_AUTH_EXISTS = 13010,
-		ERROR_IPSEC_MM_AUTH_NOT_FOUND = 13011,
-		ERROR_IPSEC_MM_AUTH_IN_USE = 13012,
-		ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND = 13013,
-		ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND = 13014,
-		ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND = 13015,
-		ERROR_IPSEC_TUNNEL_FILTER_EXISTS = 13016,
-		ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND = 13017,
-		ERROR_IPSEC_MM_FILTER_PENDING_DELETION = 13018,
-		ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION = 13019,
-		ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION = 13020,
-		ERROR_IPSEC_MM_POLICY_PENDING_DELETION = 13021,
-		ERROR_IPSEC_MM_AUTH_PENDING_DELETION = 13022,
-		ERROR_IPSEC_QM_POLICY_PENDING_DELETION = 13023,
-		ERROR_IPSEC_IKE_AUTH_FAIL = 13801,
-		ERROR_IPSEC_IKE_ATTRIB_FAIL = 13802,
-		ERROR_IPSEC_IKE_NEGOTIATION_PENDING = 13803,
-		ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR = 13804,
-		ERROR_IPSEC_IKE_TIMED_OUT = 13805,
-		ERROR_IPSEC_IKE_NO_CERT = 13806,
-		ERROR_IPSEC_IKE_SA_DELETED = 13807,
-		ERROR_IPSEC_IKE_SA_REAPED = 13808,
-		ERROR_IPSEC_IKE_MM_ACQUIRE_DROP = 13809,
-		ERROR_IPSEC_IKE_QM_ACQUIRE_DROP = 13810,
-		ERROR_IPSEC_IKE_QUEUE_DROP_MM = 13811,
-		ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM = 13812,
-		ERROR_IPSEC_IKE_DROP_NO_RESPONSE = 13813,
-		ERROR_IPSEC_IKE_MM_DELAY_DROP = 13814,
-		ERROR_IPSEC_IKE_QM_DELAY_DROP = 13815,
-		ERROR_IPSEC_IKE_ERROR = 13816,
-		ERROR_IPSEC_IKE_CRL_FAILED = 13817,
-		ERROR_IPSEC_IKE_INVALID_KEY_USAGE = 13818,
-		ERROR_IPSEC_IKE_INVALID_CERT_TYPE = 13819,
-		ERROR_IPSEC_IKE_NO_PRIVATE_KEY = 13820,
-		ERROR_IPSEC_IKE_DH_FAIL = 13822,
-		ERROR_IPSEC_IKE_INVALID_HEADER = 13824,
-		ERROR_IPSEC_IKE_NO_POLICY = 13825,
-		ERROR_IPSEC_IKE_INVALID_SIGNATURE = 13826,
-		ERROR_IPSEC_IKE_KERBEROS_ERROR = 13827,
-		ERROR_IPSEC_IKE_NO_PUBLIC_KEY = 13828,
-		ERROR_IPSEC_IKE_PROCESS_ERR = 13829,
-		ERROR_IPSEC_IKE_PROCESS_ERR_SA = 13830,
-		ERROR_IPSEC_IKE_PROCESS_ERR_PROP = 13831,
-		ERROR_IPSEC_IKE_PROCESS_ERR_TRANS = 13832,
-		ERROR_IPSEC_IKE_PROCESS_ERR_KE = 13833,
-		ERROR_IPSEC_IKE_PROCESS_ERR_ID = 13834,
-		ERROR_IPSEC_IKE_PROCESS_ERR_CERT = 13835,
-		ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ = 13836,
-		ERROR_IPSEC_IKE_PROCESS_ERR_HASH = 13837,
-		ERROR_IPSEC_IKE_PROCESS_ERR_SIG = 13838,
-		ERROR_IPSEC_IKE_PROCESS_ERR_NONCE = 13839,
-		ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY = 13840,
-		ERROR_IPSEC_IKE_PROCESS_ERR_DELETE = 13841,
-		ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR = 13842,
-		ERROR_IPSEC_IKE_INVALID_PAYLOAD = 13843,
-		ERROR_IPSEC_IKE_LOAD_SOFT_SA = 13844,
-		ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN = 13845,
-		ERROR_IPSEC_IKE_INVALID_COOKIE = 13846,
-		ERROR_IPSEC_IKE_NO_PEER_CERT = 13847,
-		ERROR_IPSEC_IKE_PEER_CRL_FAILED = 13848,
-		ERROR_IPSEC_IKE_POLICY_CHANGE = 13849,
-		ERROR_IPSEC_IKE_NO_MM_POLICY = 13850,
-		ERROR_IPSEC_IKE_NOTCBPRIV = 13851,
-		ERROR_IPSEC_IKE_SECLOADFAIL = 13852,
-		ERROR_IPSEC_IKE_FAILSSPINIT = 13853,
-		ERROR_IPSEC_IKE_FAILQUERYSSP = 13854,
-		ERROR_IPSEC_IKE_SRVACQFAIL = 13855,
-		ERROR_IPSEC_IKE_SRVQUERYCRED = 13856,
-		ERROR_IPSEC_IKE_GETSPIFAIL = 13857,
-		ERROR_IPSEC_IKE_INVALID_FILTER = 13858,
-		ERROR_IPSEC_IKE_OUT_OF_MEMORY = 13859,
-		ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED = 13860,
-		ERROR_IPSEC_IKE_INVALID_POLICY = 13861,
-		ERROR_IPSEC_IKE_UNKNOWN_DOI = 13862,
-		ERROR_IPSEC_IKE_INVALID_SITUATION = 13863,
-		ERROR_IPSEC_IKE_DH_FAILURE = 13864,
-		ERROR_IPSEC_IKE_INVALID_GROUP = 13865,
-		ERROR_IPSEC_IKE_ENCRYPT = 13866,
-		ERROR_IPSEC_IKE_DECRYPT = 13867,
-		ERROR_IPSEC_IKE_POLICY_MATCH = 13868,
-		ERROR_IPSEC_IKE_UNSUPPORTED_ID = 13869,
-		ERROR_IPSEC_IKE_INVALID_HASH = 13870,
-		ERROR_IPSEC_IKE_INVALID_HASH_ALG = 13871,
-		ERROR_IPSEC_IKE_INVALID_HASH_SIZE = 13872,
-		ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG = 13873,
-		ERROR_IPSEC_IKE_INVALID_AUTH_ALG = 13874,
-		ERROR_IPSEC_IKE_INVALID_SIG = 13875,
-		ERROR_IPSEC_IKE_LOAD_FAILED = 13876,
-		ERROR_IPSEC_IKE_RPC_DELETE = 13877,
-		ERROR_IPSEC_IKE_BENIGN_REINIT = 13878,
-		ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY = 13879,
-		ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881,
-		ERROR_IPSEC_IKE_MM_LIMIT = 13882,
-		ERROR_IPSEC_IKE_NEGOTIATION_DISABLED = 13883,
-		ERROR_IPSEC_IKE_NEG_STATUS_END = 13884,
-		ERROR_SXS_SECTION_NOT_FOUND = 14000,
-		ERROR_SXS_CANT_GEN_ACTCTX = 14001,
-		ERROR_SXS_INVALID_ACTCTXDATA_FORMAT = 14002,
-		ERROR_SXS_ASSEMBLY_NOT_FOUND = 14003,
-		ERROR_SXS_MANIFEST_FORMAT_ERROR = 14004,
-		ERROR_SXS_MANIFEST_PARSE_ERROR = 14005,
-		ERROR_SXS_ACTIVATION_CONTEXT_DISABLED = 14006,
-		ERROR_SXS_KEY_NOT_FOUND = 14007,
-		ERROR_SXS_VERSION_CONFLICT = 14008,
-		ERROR_SXS_WRONG_SECTION_TYPE = 14009,
-		ERROR_SXS_THREAD_QUERIES_DISABLED = 14010,
-		ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET = 14011,
-		ERROR_SXS_UNKNOWN_ENCODING_GROUP = 14012,
-		ERROR_SXS_UNKNOWN_ENCODING = 14013,
-		ERROR_SXS_INVALID_XML_NAMESPACE_URI = 14014,
-		ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14015,
-		ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14016,
-		ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE = 14017,
-		ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE = 14018,
-		ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE = 14019,
-		ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT = 14020,
-		ERROR_SXS_DUPLICATE_DLL_NAME = 14021,
-		ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME = 14022,
-		ERROR_SXS_DUPLICATE_CLSID = 14023,
-		ERROR_SXS_DUPLICATE_IID = 14024,
-		ERROR_SXS_DUPLICATE_TLBID = 14025,
-		ERROR_SXS_DUPLICATE_PROGID = 14026,
-		ERROR_SXS_DUPLICATE_ASSEMBLY_NAME = 14027,
-		ERROR_SXS_FILE_HASH_MISMATCH = 14028,
-		ERROR_SXS_POLICY_PARSE_ERROR = 14029,
-		ERROR_SXS_XML_E_MISSINGQUOTE = 14030,
-		ERROR_SXS_XML_E_COMMENTSYNTAX = 14031,
-		ERROR_SXS_XML_E_BADSTARTNAMECHAR = 14032,
-		ERROR_SXS_XML_E_BADNAMECHAR = 14033,
-		ERROR_SXS_XML_E_BADCHARINSTRING = 14034,
-		ERROR_SXS_XML_E_XMLDECLSYNTAX = 14035,
-		ERROR_SXS_XML_E_BADCHARDATA = 14036,
-		ERROR_SXS_XML_E_MISSINGWHITESPACE = 14037,
-		ERROR_SXS_XML_E_EXPECTINGTAGEND = 14038,
-		ERROR_SXS_XML_E_MISSINGSEMICOLON = 14039,
-		ERROR_SXS_XML_E_UNBALANCEDPAREN = 14040,
-		ERROR_SXS_XML_E_INTERNALERROR = 14041,
-		ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE = 14042,
-		ERROR_SXS_XML_E_INCOMPLETE_ENCODING = 14043,
-		ERROR_SXS_XML_E_MISSING_PAREN = 14044,
-		ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE = 14045,
-		ERROR_SXS_XML_E_MULTIPLE_COLONS = 14046,
-		ERROR_SXS_XML_E_INVALID_DECIMAL = 14047,
-		ERROR_SXS_XML_E_INVALID_HEXIDECIMAL = 14048,
-		ERROR_SXS_XML_E_INVALID_UNICODE = 14049,
-		ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK = 14050,
-		ERROR_SXS_XML_E_UNEXPECTEDENDTAG = 14051,
-		ERROR_SXS_XML_E_UNCLOSEDTAG = 14052,
-		ERROR_SXS_XML_E_DUPLICATEATTRIBUTE = 14053,
-		ERROR_SXS_XML_E_MULTIPLEROOTS = 14054,
-		ERROR_SXS_XML_E_INVALIDATROOTLEVEL = 14055,
-		ERROR_SXS_XML_E_BADXMLDECL = 14056,
-		ERROR_SXS_XML_E_MISSINGROOT = 14057,
-		ERROR_SXS_XML_E_UNEXPECTEDEOF = 14058,
-		ERROR_SXS_XML_E_BADPEREFINSUBSET = 14059,
-		ERROR_SXS_XML_E_UNCLOSEDSTARTTAG = 14060,
-		ERROR_SXS_XML_E_UNCLOSEDENDTAG = 14061,
-		ERROR_SXS_XML_E_UNCLOSEDSTRING = 14062,
-		ERROR_SXS_XML_E_UNCLOSEDCOMMENT = 14063,
-		ERROR_SXS_XML_E_UNCLOSEDDECL = 14064,
-		ERROR_SXS_XML_E_UNCLOSEDCDATA = 14065,
-		ERROR_SXS_XML_E_RESERVEDNAMESPACE = 14066,
-		ERROR_SXS_XML_E_INVALIDENCODING = 14067,
-		ERROR_SXS_XML_E_INVALIDSWITCH = 14068,
-		ERROR_SXS_XML_E_BADXMLCASE = 14069,
-		ERROR_SXS_XML_E_INVALID_STANDALONE = 14070,
-		ERROR_SXS_XML_E_UNEXPECTED_STANDALONE = 14071,
-		ERROR_SXS_XML_E_INVALID_VERSION = 14072,
-		ERROR_SXS_XML_E_MISSINGEQUALS = 14073,
-		ERROR_SXS_PROTECTION_RECOVERY_FAILED = 14074,
-		ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT = 14075,
-		ERROR_SXS_PROTECTION_CATALOG_NOT_VALID = 14076,
-		ERROR_SXS_UNTRANSLATABLE_HRESULT = 14077,
-		ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING = 14078,
-		ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE = 14079,
-		ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME = 14080 */
-	}
-}
+//
+// System.IO.MonoIOError.cs: Win32 error codes. Yuck.
+//
+// Author:
+//   Dan Lewis (dihlewis@yahoo.co.uk)
+//
+// (C) 2002
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.IO
+{
+	internal enum MonoIOError: int {
+		ERROR_SUCCESS = 0,
+	/*	ERROR_INVALID_FUNCTION = 1,
+	*/	ERROR_FILE_NOT_FOUND = 2,
+		ERROR_PATH_NOT_FOUND = 3,
+		ERROR_TOO_MANY_OPEN_FILES = 4,
+		ERROR_ACCESS_DENIED = 5,
+		ERROR_INVALID_HANDLE = 6,
+	/*	ERROR_ARENA_TRASHED = 7,
+		ERROR_NOT_ENOUGH_MEMORY = 8,
+		ERROR_INVALID_BLOCK = 9,
+		ERROR_BAD_ENVIRONMENT = 10,
+		ERROR_BAD_FORMAT = 11,
+		ERROR_INVALID_ACCESS = 12,
+		ERROR_INVALID_DATA = 13,
+		ERROR_OUTOFMEMORY = 14,
+	*/	ERROR_INVALID_DRIVE = 15,
+	/*	ERROR_CURRENT_DIRECTORY = 16,
+	*/	ERROR_NOT_SAME_DEVICE = 17,
+		ERROR_NO_MORE_FILES = 18,
+	/*	ERROR_WRITE_PROTECT = 19,
+		ERROR_BAD_UNIT = 20,
+	*/
+		ERROR_NOT_READY = 21,
+	/*
+		ERROR_BAD_COMMAND = 22,
+		ERROR_CRC = 23,
+		ERROR_BAD_LENGTH = 24,
+		ERROR_SEEK = 25,
+		ERROR_NOT_DOS_DISK = 26,
+		ERROR_SECTOR_NOT_FOUND = 27,
+		ERROR_OUT_OF_PAPER = 28,*/
+		ERROR_WRITE_FAULT = 29,
+		ERROR_READ_FAULT = 30,
+		ERROR_GEN_FAILURE = 31,
+		ERROR_SHARING_VIOLATION = 32,
+		ERROR_LOCK_VIOLATION = 33,
+	/*	ERROR_WRONG_DISK = 34,
+		ERROR_SHARING_BUFFER_EXCEEDED = 36,
+		ERROR_HANDLE_EOF = 38,
+	*/	ERROR_HANDLE_DISK_FULL = 39,
+	/*	ERROR_NOT_SUPPORTED = 50,
+		ERROR_REM_NOT_LIST = 51,
+		ERROR_DUP_NAME = 52,
+		ERROR_BAD_NETPATH = 53,
+		ERROR_NETWORK_BUSY = 54,
+		ERROR_DEV_NOT_EXIST = 55,
+		ERROR_TOO_MANY_CMDS = 56,
+		ERROR_ADAP_HDW_ERR = 57,
+		ERROR_BAD_NET_RESP = 58,
+		ERROR_UNEXP_NET_ERR = 59,
+		ERROR_BAD_REM_ADAP = 60,
+		ERROR_PRINTQ_FULL = 61,
+		ERROR_NO_SPOOL_SPACE = 62,
+		ERROR_PRINT_CANCELLED = 63,
+		ERROR_NETNAME_DELETED = 64,
+		ERROR_NETWORK_ACCESS_DENIED = 65,
+		ERROR_BAD_DEV_TYPE = 66,
+		ERROR_BAD_NET_NAME = 67,
+		ERROR_TOO_MANY_NAMES = 68,
+		ERROR_TOO_MANY_SESS = 69,
+		ERROR_SHARING_PAUSED = 70,
+		ERROR_REQ_NOT_ACCEP = 71,
+		ERROR_REDIR_PAUSED = 72,
+	*/	ERROR_FILE_EXISTS = 80,
+		ERROR_CANNOT_MAKE = 82,
+	/*	ERROR_FAIL_I24 = 83,
+		ERROR_OUT_OF_STRUCTURES = 84,
+		ERROR_ALREADY_ASSIGNED = 85,
+		ERROR_INVALID_PASSWORD = 86,
+	*/	ERROR_INVALID_PARAMETER = 87,
+	/*	ERROR_NET_WRITE_FAULT = 88,
+		ERROR_NO_PROC_SLOTS = 89,
+		ERROR_TOO_MANY_SEMAPHORES = 100,
+		ERROR_EXCL_SEM_ALREADY_OWNED = 101,
+		ERROR_SEM_IS_SET = 102,
+		ERROR_TOO_MANY_SEM_REQUESTS = 103,
+		ERROR_INVALID_AT_INTERRUPT_TIME = 104,
+		ERROR_SEM_OWNER_DIED = 105,
+		ERROR_SEM_USER_LIMIT = 106,
+		ERROR_DISK_CHANGE = 107,
+		ERROR_DRIVE_LOCKED = 108,
+	*/	ERROR_BROKEN_PIPE = 109,
+	/*	ERROR_OPEN_FAILED = 110,
+		ERROR_BUFFER_OVERFLOW = 111,
+		ERROR_DISK_FULL = 112,
+		ERROR_NO_MORE_SEARCH_HANDLES = 113,
+		ERROR_INVALID_TARGET_HANDLE = 114,
+		ERROR_INVALID_CATEGORY = 117,
+		ERROR_INVALID_VERIFY_SWITCH = 118,
+		ERROR_BAD_DRIVER_LEVEL = 119,
+		ERROR_CALL_NOT_IMPLEMENTED = 120,
+		ERROR_SEM_TIMEOUT = 121,
+		ERROR_INSUFFICIENT_BUFFER = 122,
+	*/	ERROR_INVALID_NAME = 123,
+	/*	ERROR_INVALID_LEVEL = 124,
+		ERROR_NO_VOLUME_LABEL = 125,
+		ERROR_MOD_NOT_FOUND = 126,
+		ERROR_PROC_NOT_FOUND = 127,
+		ERROR_WAIT_NO_CHILDREN = 128,
+		ERROR_CHILD_NOT_COMPLETE = 129,
+		ERROR_DIRECT_ACCESS_HANDLE = 130,
+		ERROR_NEGATIVE_SEEK = 131,
+		ERROR_SEEK_ON_DEVICE = 132,
+		ERROR_IS_JOIN_TARGET = 133,
+		ERROR_IS_JOINED = 134,
+		ERROR_IS_SUBSTED = 135,
+		ERROR_NOT_JOINED = 136,
+		ERROR_NOT_SUBSTED = 137,
+		ERROR_JOIN_TO_JOIN = 138,
+		ERROR_SUBST_TO_SUBST = 139,
+		ERROR_JOIN_TO_SUBST = 140,
+		ERROR_SUBST_TO_JOIN = 141,
+		ERROR_BUSY_DRIVE = 142,
+		ERROR_SAME_DRIVE = 143,
+		ERROR_DIR_NOT_ROOT = 144,
+	*/
+		ERROR_DIR_NOT_EMPTY = 145,
+	/*
+		ERROR_IS_SUBST_PATH = 146,
+		ERROR_IS_JOIN_PATH = 147,
+		ERROR_PATH_BUSY = 148,
+		ERROR_IS_SUBST_TARGET = 149,
+		ERROR_SYSTEM_TRACE = 150,
+		ERROR_INVALID_EVENT_COUNT = 151,
+		ERROR_TOO_MANY_MUXWAITERS = 152,
+		ERROR_INVALID_LIST_FORMAT = 153,
+		ERROR_LABEL_TOO_LONG = 154,
+		ERROR_TOO_MANY_TCBS = 155,
+		ERROR_SIGNAL_REFUSED = 156,
+		ERROR_DISCARDED = 157,
+		ERROR_NOT_LOCKED = 158,
+		ERROR_BAD_THREADID_ADDR = 159,
+		ERROR_BAD_ARGUMENTS = 160,
+		ERROR_BAD_PATHNAME = 161,
+		ERROR_SIGNAL_PENDING = 162,
+		ERROR_MAX_THRDS_REACHED = 164,
+		ERROR_LOCK_FAILED = 167,
+		ERROR_BUSY = 170,
+		ERROR_CANCEL_VIOLATION = 173,
+		ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174,
+		ERROR_INVALID_SEGMENT_NUMBER = 180,
+		ERROR_INVALID_ORDINAL = 182,
+	*/	ERROR_ALREADY_EXISTS = 183,
+	/*	ERROR_INVALID_FLAG_NUMBER = 186,
+		ERROR_SEM_NOT_FOUND = 187,
+		ERROR_INVALID_STARTING_CODESEG = 188,
+		ERROR_INVALID_STACKSEG = 189,
+		ERROR_INVALID_MODULETYPE = 190,
+		ERROR_INVALID_EXE_SIGNATURE = 191,
+		ERROR_EXE_MARKED_INVALID = 192,
+		ERROR_BAD_EXE_FORMAT = 193,
+		ERROR_ITERATED_DATA_EXCEEDS_64k = 194,
+		ERROR_INVALID_MINALLOCSIZE = 195,
+		ERROR_DYNLINK_FROM_INVALID_RING = 196,
+		ERROR_IOPL_NOT_ENABLED = 197,
+		ERROR_INVALID_SEGDPL = 198,
+		ERROR_AUTODATASEG_EXCEEDS_64k = 199,
+		ERROR_RING2SEG_MUST_BE_MOVABLE = 200,
+		ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201,
+		ERROR_INFLOOP_IN_RELOC_CHAIN = 202,
+		ERROR_ENVVAR_NOT_FOUND = 203,
+		ERROR_NO_SIGNAL_SENT = 205,
+	*/	ERROR_FILENAME_EXCED_RANGE = 206,
+	/*	ERROR_RING2_STACK_IN_USE = 207,
+		ERROR_META_EXPANSION_TOO_LONG = 208,
+		ERROR_INVALID_SIGNAL_NUMBER = 209,
+		ERROR_THREAD_1_INACTIVE = 210,
+		ERROR_LOCKED = 212,
+		ERROR_TOO_MANY_MODULES = 214,
+		ERROR_NESTING_NOT_ALLOWED = 215,
+		ERROR_EXE_MACHINE_TYPE_MISMATCH = 216,
+		ERROR_BAD_PIPE = 230,
+		ERROR_PIPE_BUSY = 231,
+		ERROR_NO_DATA = 232,
+		ERROR_PIPE_NOT_CONNECTED = 233,
+		ERROR_MORE_DATA = 234,
+		ERROR_VC_DISCONNECTED = 240,
+		ERROR_INVALID_EA_NAME = 254,
+		ERROR_EA_LIST_INCONSISTENT = 255,
+		WAIT_TIMEOUT = 258,
+		ERROR_NO_MORE_ITEMS = 259,
+		ERROR_CANNOT_COPY = 266,
+		ERROR_DIRECTORY = 267,
+		ERROR_EAS_DIDNT_FIT = 275,
+		ERROR_EA_FILE_CORRUPT = 276,
+		ERROR_EA_TABLE_FULL = 277,
+		ERROR_INVALID_EA_HANDLE = 278,
+		ERROR_EAS_NOT_SUPPORTED = 282,
+		ERROR_NOT_OWNER = 288,
+		ERROR_TOO_MANY_POSTS = 298,
+		ERROR_PARTIAL_COPY = 299,
+		ERROR_OPLOCK_NOT_GRANTED = 300,
+		ERROR_INVALID_OPLOCK_PROTOCOL = 301,
+		ERROR_DISK_TOO_FRAGMENTED = 302,
+		ERROR_DELETE_PENDING = 303,
+		ERROR_MR_MID_NOT_FOUND = 317,
+		ERROR_INVALID_ADDRESS = 487,
+		ERROR_ARITHMETIC_OVERFLOW = 534,
+		ERROR_PIPE_CONNECTED = 535,
+		ERROR_PIPE_LISTENING = 536,
+		ERROR_EA_ACCESS_DENIED = 994,
+		ERROR_OPERATION_ABORTED = 995,
+		ERROR_IO_INCOMPLETE = 996,
+		ERROR_IO_PENDING = 997,
+		ERROR_NOACCESS = 998,
+		ERROR_SWAPERROR = 999,
+		ERROR_STACK_OVERFLOW = 1001,
+		ERROR_INVALID_MESSAGE = 1002,
+		ERROR_CAN_NOT_COMPLETE = 1003,
+		ERROR_INVALID_FLAGS = 1004,
+		ERROR_UNRECOGNIZED_VOLUME = 1005,
+		ERROR_FILE_INVALID = 1006,
+		ERROR_FULLSCREEN_MODE = 1007,
+		ERROR_NO_TOKEN = 1008,
+		ERROR_BADDB = 1009,
+		ERROR_BADKEY = 1010,
+		ERROR_CANTOPEN = 1011,
+		ERROR_CANTREAD = 1012,
+		ERROR_CANTWRITE = 1013,
+		ERROR_REGISTRY_RECOVERED = 1014,
+		ERROR_REGISTRY_CORRUPT = 1015,
+		ERROR_REGISTRY_IO_FAILED = 1016,
+		ERROR_NOT_REGISTRY_FILE = 1017,
+		ERROR_KEY_DELETED = 1018,
+		ERROR_NO_LOG_SPACE = 1019,
+		ERROR_KEY_HAS_CHILDREN = 1020,
+		ERROR_CHILD_MUST_BE_VOLATILE = 1021,
+		ERROR_NOTIFY_ENUM_DIR = 1022,
+		ERROR_DEPENDENT_SERVICES_RUNNING = 1051,
+		ERROR_INVALID_SERVICE_CONTROL = 1052,
+		ERROR_SERVICE_REQUEST_TIMEOUT = 1053,
+		ERROR_SERVICE_NO_THREAD = 1054,
+		ERROR_SERVICE_DATABASE_LOCKED = 1055,
+		ERROR_SERVICE_ALREADY_RUNNING = 1056,
+		ERROR_INVALID_SERVICE_ACCOUNT = 1057,
+		ERROR_SERVICE_DISABLED = 1058,
+		ERROR_CIRCULAR_DEPENDENCY = 1059,
+		ERROR_SERVICE_DOES_NOT_EXIST = 1060,
+		ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061,
+		ERROR_SERVICE_NOT_ACTIVE = 1062,
+		ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063,
+		ERROR_EXCEPTION_IN_SERVICE = 1064,
+		ERROR_DATABASE_DOES_NOT_EXIST = 1065,
+		ERROR_SERVICE_SPECIFIC_ERROR = 1066,
+		ERROR_PROCESS_ABORTED = 1067,
+		ERROR_SERVICE_DEPENDENCY_FAIL = 1068,
+		ERROR_SERVICE_LOGON_FAILED = 1069,
+		ERROR_SERVICE_START_HANG = 1070,
+		ERROR_INVALID_SERVICE_LOCK = 1071,
+		ERROR_SERVICE_MARKED_FOR_DELETE = 1072,
+		ERROR_SERVICE_EXISTS = 1073,
+		ERROR_ALREADY_RUNNING_LKG = 1074,
+		ERROR_SERVICE_DEPENDENCY_DELETED = 1075,
+		ERROR_BOOT_ALREADY_ACCEPTED = 1076,
+		ERROR_SERVICE_NEVER_STARTED = 1077,
+		ERROR_DUPLICATE_SERVICE_NAME = 1078,
+		ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079,
+		ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080,
+		ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081,
+		ERROR_NO_RECOVERY_PROGRAM = 1082,
+		ERROR_SERVICE_NOT_IN_EXE = 1083,
+		ERROR_NOT_SAFEBOOT_SERVICE = 1084,
+		ERROR_END_OF_MEDIA = 1100,
+		ERROR_FILEMARK_DETECTED = 1101,
+		ERROR_BEGINNING_OF_MEDIA = 1102,
+		ERROR_SETMARK_DETECTED = 1103,
+		ERROR_NO_DATA_DETECTED = 1104,
+		ERROR_PARTITION_FAILURE = 1105,
+		ERROR_INVALID_BLOCK_LENGTH = 1106,
+		ERROR_DEVICE_NOT_PARTITIONED = 1107,
+		ERROR_UNABLE_TO_LOCK_MEDIA = 1108,
+		ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109,
+		ERROR_MEDIA_CHANGED = 1110,
+		ERROR_BUS_RESET = 1111,
+		ERROR_NO_MEDIA_IN_DRIVE = 1112,
+		ERROR_NO_UNICODE_TRANSLATION = 1113,
+		ERROR_DLL_INIT_FAILED = 1114,
+		ERROR_SHUTDOWN_IN_PROGRESS = 1115,
+		ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116,
+		ERROR_IO_DEVICE = 1117,
+		ERROR_SERIAL_NO_DEVICE = 1118,
+		ERROR_IRQ_BUSY = 1119,
+		ERROR_MORE_WRITES = 1120,
+		ERROR_COUNTER_TIMEOUT = 1121,
+		ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122,
+		ERROR_FLOPPY_WRONG_CYLINDER = 1123,
+		ERROR_FLOPPY_UNKNOWN_ERROR = 1124,
+		ERROR_FLOPPY_BAD_REGISTERS = 1125,
+		ERROR_DISK_RECALIBRATE_FAILED = 1126,
+		ERROR_DISK_OPERATION_FAILED = 1127,
+		ERROR_DISK_RESET_FAILED = 1128,
+		ERROR_EOM_OVERFLOW = 1129,
+		ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130,
+		ERROR_POSSIBLE_DEADLOCK = 1131,
+		ERROR_MAPPED_ALIGNMENT = 1132,
+		ERROR_SET_POWER_STATE_VETOED = 1140,
+		ERROR_SET_POWER_STATE_FAILED = 1141,
+		ERROR_TOO_MANY_LINKS = 1142,
+		ERROR_OLD_WIN_VERSION = 1150,
+		ERROR_APP_WRONG_OS = 1151,
+		ERROR_SINGLE_INSTANCE_APP = 1152,
+		ERROR_RMODE_APP = 1153,
+		ERROR_INVALID_DLL = 1154,
+		ERROR_NO_ASSOCIATION = 1155,
+		ERROR_DDE_FAIL = 1156,
+		ERROR_DLL_NOT_FOUND = 1157,
+		ERROR_NO_MORE_USER_HANDLES = 1158,
+		ERROR_MESSAGE_SYNC_ONLY = 1159,
+		ERROR_SOURCE_ELEMENT_EMPTY = 1160,
+		ERROR_DESTINATION_ELEMENT_FULL = 1161,
+		ERROR_ILLEGAL_ELEMENT_ADDRESS = 1162,
+		ERROR_MAGAZINE_NOT_PRESENT = 1163,
+		ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164,
+		ERROR_DEVICE_REQUIRES_CLEANING = 1165,
+		ERROR_DEVICE_DOOR_OPEN = 1166,
+		ERROR_DEVICE_NOT_CONNECTED = 1167,
+		ERROR_NOT_FOUND = 1168,
+		ERROR_NO_MATCH = 1169,
+		ERROR_SET_NOT_FOUND = 1170,
+		ERROR_POINT_NOT_FOUND = 1171,
+		ERROR_NO_TRACKING_SERVICE = 1172,
+		ERROR_NO_VOLUME_ID = 1173,
+		ERROR_UNABLE_TO_REMOVE_REPLACED = 1175,
+		ERROR_UNABLE_TO_MOVE_REPLACEMENT = 1176,
+		ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 = 1177,
+		ERROR_JOURNAL_DELETE_IN_PROGRESS = 1178,
+		ERROR_JOURNAL_NOT_ACTIVE = 1179,
+		ERROR_POTENTIAL_FILE_FOUND = 1180,
+		ERROR_JOURNAL_ENTRY_DELETED = 1181,
+		ERROR_BAD_DEVICE = 1200,
+		ERROR_CONNECTION_UNAVAIL = 1201,
+		ERROR_DEVICE_ALREADY_REMEMBERED = 1202,
+		ERROR_NO_NET_OR_BAD_PATH = 1203,
+		ERROR_BAD_PROVIDER = 1204,
+		ERROR_CANNOT_OPEN_PROFILE = 1205,
+		ERROR_BAD_PROFILE = 1206,
+		ERROR_NOT_CONTAINER = 1207,
+		ERROR_EXTENDED_ERROR = 1208,
+		ERROR_INVALID_GROUPNAME = 1209,
+		ERROR_INVALID_COMPUTERNAME = 1210,
+		ERROR_INVALID_EVENTNAME = 1211,
+		ERROR_INVALID_DOMAINNAME = 1212,
+		ERROR_INVALID_SERVICENAME = 1213,
+		ERROR_INVALID_NETNAME = 1214,
+		ERROR_INVALID_SHARENAME = 1215,
+		ERROR_INVALID_PASSWORDNAME = 1216,
+		ERROR_INVALID_MESSAGENAME = 1217,
+		ERROR_INVALID_MESSAGEDEST = 1218,
+		ERROR_SESSION_CREDENTIAL_CONFLICT = 1219,
+		ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220,
+		ERROR_DUP_DOMAINNAME = 1221,
+		ERROR_NO_NETWORK = 1222,
+		ERROR_CANCELLED = 1223,
+		ERROR_USER_MAPPED_FILE = 1224,
+		ERROR_CONNECTION_REFUSED = 1225,
+		ERROR_GRACEFUL_DISCONNECT = 1226,
+		ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227,
+		ERROR_ADDRESS_NOT_ASSOCIATED = 1228,
+		ERROR_CONNECTION_INVALID = 1229,
+		ERROR_CONNECTION_ACTIVE = 1230,
+		ERROR_NETWORK_UNREACHABLE = 1231,
+		ERROR_HOST_UNREACHABLE = 1232,
+		ERROR_PROTOCOL_UNREACHABLE = 1233,
+		ERROR_PORT_UNREACHABLE = 1234,
+		ERROR_REQUEST_ABORTED = 1235,
+		ERROR_CONNECTION_ABORTED = 1236,
+		ERROR_RETRY = 1237,
+		ERROR_CONNECTION_COUNT_LIMIT = 1238,
+		ERROR_LOGIN_TIME_RESTRICTION = 1239,
+		ERROR_LOGIN_WKSTA_RESTRICTION = 1240,
+		ERROR_INCORRECT_ADDRESS = 1241,
+		ERROR_ALREADY_REGISTERED = 1242,
+		ERROR_SERVICE_NOT_FOUND = 1243,
+		ERROR_NOT_AUTHENTICATED = 1244,
+		ERROR_NOT_LOGGED_ON = 1245,
+		ERROR_CONTINUE = 1246,
+		ERROR_ALREADY_INITIALIZED = 1247,
+		ERROR_NO_MORE_DEVICES = 1248,
+		ERROR_NO_SUCH_SITE = 1249,
+		ERROR_DOMAIN_CONTROLLER_EXISTS = 1250,
+		ERROR_ONLY_IF_CONNECTED = 1251,
+		ERROR_OVERRIDE_NOCHANGES = 1252,
+		ERROR_BAD_USER_PROFILE = 1253,
+		ERROR_NOT_SUPPORTED_ON_SBS = 1254,
+		ERROR_SERVER_SHUTDOWN_IN_PROGRESS = 1255,
+		ERROR_HOST_DOWN = 1256,
+		ERROR_NON_ACCOUNT_SID = 1257,
+		ERROR_NON_DOMAIN_SID = 1258,
+		ERROR_APPHELP_BLOCK = 1259,
+		ERROR_ACCESS_DISABLED_BY_POLICY = 1260,
+		ERROR_REG_NAT_CONSUMPTION = 1261,
+		ERROR_CSCSHARE_OFFLINE = 1262,
+		ERROR_PKINIT_FAILURE = 1263,
+		ERROR_SMARTCARD_SUBSYSTEM_FAILURE = 1264,
+		ERROR_DOWNGRADE_DETECTED = 1265,
+		SEC_E_SMARTCARD_CERT_REVOKED = 1266,
+		SEC_E_ISSUING_CA_UNTRUSTED = 1267,
+		SEC_E_REVOCATION_OFFLINE_C = 1268,
+		SEC_E_PKINIT_CLIENT_FAILUR = 1269,
+		SEC_E_SMARTCARD_CERT_EXPIRED = 1270,
+		ERROR_MACHINE_LOCKED = 1271,
+		ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273,
+		ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED = 1274,
+		ERROR_DRIVER_BLOCKED = 1275,
+		ERROR_INVALID_IMPORT_OF_NON_DLL = 1276,
+		ERROR_NOT_ALL_ASSIGNED = 1300,
+		ERROR_SOME_NOT_MAPPED = 1301,
+		ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302,
+		ERROR_LOCAL_USER_SESSION_KEY = 1303,
+		ERROR_NULL_LM_PASSWORD = 1304,
+		ERROR_UNKNOWN_REVISION = 1305,
+		ERROR_REVISION_MISMATCH = 1306,
+		ERROR_INVALID_OWNER = 1307,
+		ERROR_INVALID_PRIMARY_GROUP = 1308,
+		ERROR_NO_IMPERSONATION_TOKEN = 1309,
+		ERROR_CANT_DISABLE_MANDATORY = 1310,
+		ERROR_NO_LOGON_SERVERS = 1311,
+		ERROR_NO_SUCH_LOGON_SESSION = 1312,
+		ERROR_NO_SUCH_PRIVILEGE = 1313,
+		ERROR_PRIVILEGE_NOT_HELD = 1314,
+		ERROR_INVALID_ACCOUNT_NAME = 1315,
+		ERROR_USER_EXISTS = 1316,
+		ERROR_NO_SUCH_USER = 1317,
+		ERROR_GROUP_EXISTS = 1318,
+		ERROR_NO_SUCH_GROUP = 1319,
+		ERROR_MEMBER_IN_GROUP = 1320,
+		ERROR_MEMBER_NOT_IN_GROUP = 1321,
+		ERROR_LAST_ADMIN = 1322,
+		ERROR_WRONG_PASSWORD = 1323,
+		ERROR_ILL_FORMED_PASSWORD = 1324,
+		ERROR_PASSWORD_RESTRICTION = 1325,
+		ERROR_LOGON_FAILURE = 1326,
+		ERROR_ACCOUNT_RESTRICTION = 1327,
+		ERROR_INVALID_LOGON_HOURS = 1328,
+		ERROR_INVALID_WORKSTATION = 1329,
+		ERROR_PASSWORD_EXPIRED = 1330,
+		ERROR_ACCOUNT_DISABLED = 1331,
+		ERROR_NONE_MAPPED = 1332,
+		ERROR_TOO_MANY_LUIDS_REQUESTED = 1333,
+		ERROR_LUIDS_EXHAUSTED = 1334,
+		ERROR_INVALID_SUB_AUTHORITY = 1335,
+		ERROR_INVALID_ACL = 1336,
+		ERROR_INVALID_SID = 1337,
+		ERROR_INVALID_SECURITY_DESCR = 1338,
+		ERROR_BAD_INHERITANCE_ACL = 1340,
+		ERROR_SERVER_DISABLED = 1341,
+		ERROR_SERVER_NOT_DISABLED = 1342,
+		ERROR_INVALID_ID_AUTHORITY = 1343,
+		ERROR_ALLOTTED_SPACE_EXCEEDED = 1344,
+		ERROR_INVALID_GROUP_ATTRIBUTES = 1345,
+		ERROR_BAD_IMPERSONATION_LEVEL = 1346,
+		ERROR_CANT_OPEN_ANONYMOUS = 1347,
+		ERROR_BAD_VALIDATION_CLASS = 1348,
+		ERROR_BAD_TOKEN_TYPE = 1349,
+		ERROR_NO_SECURITY_ON_OBJECT = 1350,
+		ERROR_CANT_ACCESS_DOMAIN_INFO = 1351,
+		ERROR_INVALID_SERVER_STATE = 1352,
+		ERROR_INVALID_DOMAIN_STATE = 1353,
+		ERROR_INVALID_DOMAIN_ROLE = 1354,
+		ERROR_NO_SUCH_DOMAIN = 1355,
+		ERROR_DOMAIN_EXISTS = 1356,
+		ERROR_DOMAIN_LIMIT_EXCEEDED = 1357,
+		ERROR_INTERNAL_DB_CORRUPTION = 1358,
+		ERROR_INTERNAL_ERROR = 1359,
+		ERROR_GENERIC_NOT_MAPPED = 1360,
+		ERROR_BAD_DESCRIPTOR_FORMAT = 1361,
+		ERROR_NOT_LOGON_PROCESS = 1362,
+		ERROR_LOGON_SESSION_EXISTS = 1363,
+		ERROR_NO_SUCH_PACKAGE = 1364,
+		ERROR_BAD_LOGON_SESSION_STATE = 1365,
+		ERROR_LOGON_SESSION_COLLISION = 1366,
+		ERROR_INVALID_LOGON_TYPE = 1367,
+		ERROR_CANNOT_IMPERSONATE = 1368,
+		ERROR_RXACT_INVALID_STATE = 1369,
+		ERROR_RXACT_COMMIT_FAILURE = 1370,
+		ERROR_SPECIAL_ACCOUNT = 1371,
+		ERROR_SPECIAL_GROUP = 1372,
+		ERROR_SPECIAL_USER = 1373,
+		ERROR_MEMBERS_PRIMARY_GROUP = 1374,
+		ERROR_TOKEN_ALREADY_IN_USE = 1375,
+		ERROR_NO_SUCH_ALIAS = 1376,
+		ERROR_MEMBER_NOT_IN_ALIAS = 1377,
+		ERROR_MEMBER_IN_ALIAS = 1378,
+		ERROR_ALIAS_EXISTS = 1379,
+		ERROR_LOGON_NOT_GRANTED = 1380,
+		ERROR_TOO_MANY_SECRETS = 1381,
+		ERROR_SECRET_TOO_LONG = 1382,
+		ERROR_INTERNAL_DB_ERROR = 1383,
+		ERROR_TOO_MANY_CONTEXT_IDS = 1384,
+		ERROR_LOGON_TYPE_NOT_GRANTED = 1385,
+		ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386,
+		ERROR_NO_SUCH_MEMBER = 1387,
+		ERROR_INVALID_MEMBER = 1388,
+		ERROR_TOO_MANY_SIDS = 1389,
+		ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390,
+		ERROR_NO_INHERITANCE = 1391,
+		ERROR_FILE_CORRUPT = 1392,
+		ERROR_DISK_CORRUPT = 1393,
+		ERROR_NO_USER_SESSION_KEY = 1394,
+		ERROR_LICENSE_QUOTA_EXCEEDED = 1395,
+		ERROR_WRONG_TARGET_NAME = 1396,
+		ERROR_MUTUAL_AUTH_FAILED = 1397,
+		ERROR_TIME_SKEW = 1398,
+		ERROR_CURRENT_DOMAIN_NOT_ALLOWED = 1399,
+		ERROR_INVALID_WINDOW_HANDLE = 1400,
+		ERROR_INVALID_MENU_HANDLE = 1401,
+		ERROR_INVALID_CURSOR_HANDLE = 1402,
+		ERROR_INVALID_ACCEL_HANDLE = 1403,
+		ERROR_INVALID_HOOK_HANDLE = 1404,
+		ERROR_INVALID_DWP_HANDLE = 1405,
+		ERROR_TLW_WITH_WSCHILD = 1406,
+		ERROR_CANNOT_FIND_WND_CLASS = 1407,
+		ERROR_WINDOW_OF_OTHER_THREAD = 1408,
+		ERROR_HOTKEY_ALREADY_REGISTERED = 1409,
+		ERROR_CLASS_ALREADY_EXISTS = 1410,
+		ERROR_CLASS_DOES_NOT_EXIST = 1411,
+		ERROR_CLASS_HAS_WINDOWS = 1412,
+		ERROR_INVALID_INDEX = 1413,
+		ERROR_INVALID_ICON_HANDLE = 1414,
+		ERROR_PRIVATE_DIALOG_INDEX = 1415,
+		ERROR_LISTBOX_ID_NOT_FOUND = 1416,
+		ERROR_NO_WILDCARD_CHARACTERS = 1417,
+		ERROR_CLIPBOARD_NOT_OPEN = 1418,
+		ERROR_HOTKEY_NOT_REGISTERED = 1419,
+		ERROR_WINDOW_NOT_DIALOG = 1420,
+		ERROR_CONTROL_ID_NOT_FOUND = 1421,
+		ERROR_INVALID_COMBOBOX_MESSAGE = 1422,
+		ERROR_WINDOW_NOT_COMBOBOX = 1423,
+		ERROR_INVALID_EDIT_HEIGHT = 1424,
+		ERROR_DC_NOT_FOUND = 1425,
+		ERROR_INVALID_HOOK_FILTER = 1426,
+		ERROR_INVALID_FILTER_PROC = 1427,
+		ERROR_HOOK_NEEDS_HMOD = 1428,
+		ERROR_GLOBAL_ONLY_HOOK = 1429,
+		ERROR_JOURNAL_HOOK_SET = 1430,
+		ERROR_HOOK_NOT_INSTALLED = 1431,
+		ERROR_INVALID_LB_MESSAGE = 1432,
+		ERROR_SETCOUNT_ON_BAD_LB = 1433,
+		ERROR_LB_WITHOUT_TABSTOPS = 1434,
+		ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435,
+		ERROR_CHILD_WINDOW_MENU = 1436,
+		ERROR_NO_SYSTEM_MENU = 1437,
+		ERROR_INVALID_MSGBOX_STYLE = 1438,
+		ERROR_INVALID_SPI_VALUE = 1439,
+		ERROR_SCREEN_ALREADY_LOCKED = 1440,
+		ERROR_HWNDS_HAVE_DIFF_PARENT = 1441,
+		ERROR_NOT_CHILD_WINDOW = 1442,
+		ERROR_INVALID_GW_COMMAND = 1443,
+		ERROR_INVALID_THREAD_ID = 1444,
+		ERROR_NON_MDICHILD_WINDOW = 1445,
+		ERROR_POPUP_ALREADY_ACTIVE = 1446,
+		ERROR_NO_SCROLLBARS = 1447,
+		ERROR_INVALID_SCROLLBAR_RANGE = 1448,
+		ERROR_INVALID_SHOWWIN_COMMAND = 1449,
+		ERROR_NO_SYSTEM_RESOURCES = 1450,
+		ERROR_NONPAGED_SYSTEM_RESOURCES = 1451,
+		ERROR_PAGED_SYSTEM_RESOURCES = 1452,
+		ERROR_WORKING_SET_QUOTA = 1453,
+		ERROR_PAGEFILE_QUOTA = 1454,
+		ERROR_COMMITMENT_LIMIT = 1455,
+		ERROR_MENU_ITEM_NOT_FOUND = 1456,
+		ERROR_INVALID_KEYBOARD_HANDLE = 1457,
+		ERROR_HOOK_TYPE_NOT_ALLOWED = 1458,
+		ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION = 1459,
+		ERROR_TIMEOUT = 1460,
+		ERROR_INVALID_MONITOR_HANDLE = 1461,
+		ERROR_EVENTLOG_FILE_CORRUPT = 1500,
+		ERROR_EVENTLOG_CANT_START = 1501,
+		ERROR_LOG_FILE_FULL = 1502,
+		ERROR_EVENTLOG_FILE_CHANGED = 1503,
+		ERROR_INSTALL_SERVICE_FAILURE = 1601,
+		ERROR_INSTALL_USEREXIT = 1602,
+		ERROR_INSTALL_FAILURE = 1603,
+		ERROR_INSTALL_SUSPEND = 1604,
+		ERROR_UNKNOWN_PRODUCT = 1605,
+		ERROR_UNKNOWN_FEATURE = 1606,
+		ERROR_UNKNOWN_COMPONENT = 1607,
+		ERROR_UNKNOWN_PROPERTY = 1608,
+		ERROR_INVALID_HANDLE_STATE = 1609,
+		ERROR_BAD_CONFIGURATION = 1610,
+		ERROR_INDEX_ABSENT = 1611,
+		ERROR_INSTALL_SOURCE_ABSENT = 1612,
+		ERROR_INSTALL_PACKAGE_VERSION = 1613,
+		ERROR_PRODUCT_UNINSTALLED = 1614,
+		ERROR_BAD_QUERY_SYNTAX = 1615,
+		ERROR_INVALID_FIELD = 1616,
+		ERROR_DEVICE_REMOVED = 1617,
+		ERROR_INSTALL_ALREADY_RUNNING = 1618,
+		ERROR_INSTALL_PACKAGE_OPEN_FAILED = 1619,
+		ERROR_INSTALL_PACKAGE_INVALID = 1620,
+		ERROR_INSTALL_UI_FAILURE = 1621,
+		ERROR_INSTALL_LOG_FAILURE = 1622,
+		ERROR_INSTALL_LANGUAGE_UNSUPPORTED = 1623,
+		ERROR_INSTALL_TRANSFORM_FAILURE = 1624,
+		ERROR_INSTALL_PACKAGE_REJECTED = 1625,
+		ERROR_FUNCTION_NOT_CALLED = 1626,
+		ERROR_FUNCTION_FAILED = 1627,
+		ERROR_INVALID_TABLE = 1628,
+		ERROR_DATATYPE_MISMATCH = 1629,
+		ERROR_UNSUPPORTED_TYPE = 1630,
+		ERROR_CREATE_FAILED = 1631,
+		ERROR_INSTALL_TEMP_UNWRITABLE = 1632,
+		ERROR_INSTALL_PLATFORM_UNSUPPORTED = 1633,
+		ERROR_INSTALL_NOTUSED = 1634,
+		ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635,
+		ERROR_PATCH_PACKAGE_INVALID = 1636,
+		ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637,
+		ERROR_PRODUCT_VERSION = 1638,
+		ERROR_INVALID_COMMAND_LINE = 1639,
+		ERROR_INSTALL_REMOTE_DISALLOWED = 1640,
+		ERROR_SUCCESS_REBOOT_INITIATED = 1641,
+		ERROR_PATCH_TARGET_NOT_FOUND = 1642,
+		ERROR_PATCH_PACKAGE_REJECTED = 1643,
+		ERROR_INSTALL_TRANSFORM_REJECTED = 1644,
+		RPC_S_INVALID_STRING_BINDING = 1700,
+		RPC_S_WRONG_KIND_OF_BINDING = 1701,
+		RPC_S_INVALID_BINDING = 1702,
+		RPC_S_PROTSEQ_NOT_SUPPORTED = 1703,
+		RPC_S_INVALID_RPC_PROTSEQ = 1704,
+		RPC_S_INVALID_STRING_UUID = 1705,
+		RPC_S_INVALID_ENDPOINT_FORMAT = 1706,
+		RPC_S_INVALID_NET_ADDR = 1707,
+		RPC_S_NO_ENDPOINT_FOUND = 1708,
+		RPC_S_INVALID_TIMEOUT = 1709,
+		RPC_S_OBJECT_NOT_FOUND = 1710,
+		RPC_S_ALREADY_REGISTERED = 1711,
+		RPC_S_TYPE_ALREADY_REGISTERED = 1712,
+		RPC_S_ALREADY_LISTENING = 1713,
+		RPC_S_NO_PROTSEQS_REGISTERED = 1714,
+		RPC_S_NOT_LISTENING = 1715,
+		RPC_S_UNKNOWN_MGR_TYPE = 1716,
+		RPC_S_UNKNOWN_IF = 1717,
+		RPC_S_NO_BINDINGS = 1718,
+		RPC_S_NO_PROTSEQS = 1719,
+		RPC_S_CANT_CREATE_ENDPOINT = 1720,
+		RPC_S_OUT_OF_RESOURCES = 1721,
+		RPC_S_SERVER_UNAVAILABLE = 1722,
+		RPC_S_SERVER_TOO_BUSY = 1723,
+		RPC_S_INVALID_NETWORK_OPTIONS = 1724,
+		RPC_S_NO_CALL_ACTIVE = 1725,
+		RPC_S_CALL_FAILED = 1726,
+		RPC_S_CALL_FAILED_DNE = 1727,
+		RPC_S_PROTOCOL_ERROR = 1728,
+		RPC_S_UNSUPPORTED_TRANS_SYN = 1730,
+		RPC_S_UNSUPPORTED_TYPE = 1732,
+		RPC_S_INVALID_TAG = 1733,
+		RPC_S_INVALID_BOUND = 1734,
+		RPC_S_NO_ENTRY_NAME = 1735,
+		RPC_S_INVALID_NAME_SYNTAX = 1736,
+		RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737,
+		RPC_S_UUID_NO_ADDRESS = 1739,
+		RPC_S_DUPLICATE_ENDPOINT = 1740,
+		RPC_S_UNKNOWN_AUTHN_TYPE = 1741,
+		RPC_S_MAX_CALLS_TOO_SMALL = 1742,
+		RPC_S_STRING_TOO_LONG = 1743,
+		RPC_S_PROTSEQ_NOT_FOUND = 1744,
+		RPC_S_PROCNUM_OUT_OF_RANGE = 1745,
+		RPC_S_BINDING_HAS_NO_AUTH = 1746,
+		RPC_S_UNKNOWN_AUTHN_SERVICE = 1747,
+		RPC_S_UNKNOWN_AUTHN_LEVEL = 1748,
+		RPC_S_INVALID_AUTH_IDENTITY = 1749,
+		RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750,
+		EPT_S_INVALID_ENTRY = 1751,
+		EPT_S_CANT_PERFORM_OP = 1752,
+		EPT_S_NOT_REGISTERED = 1753,
+		RPC_S_NOTHING_TO_EXPORT = 1754,
+		RPC_S_INCOMPLETE_NAME = 1755,
+		RPC_S_INVALID_VERS_OPTION = 1756,
+		RPC_S_NO_MORE_MEMBERS = 1757,
+		RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758,
+		RPC_S_INTERFACE_NOT_FOUND = 1759,
+		RPC_S_ENTRY_ALREADY_EXISTS = 1760,
+		RPC_S_ENTRY_NOT_FOUND = 1761,
+		RPC_S_NAME_SERVICE_UNAVAILABLE = 1762,
+		RPC_S_INVALID_NAF_ID = 1763,
+		RPC_S_CANNOT_SUPPORT = 1764,
+		RPC_S_NO_CONTEXT_AVAILABLE = 1765,
+		RPC_S_INTERNAL_ERROR = 1766,
+		RPC_S_ZERO_DIVIDE = 1767,
+		RPC_S_ADDRESS_ERROR = 1768,
+		RPC_S_FP_DIV_ZERO = 1769,
+		RPC_S_FP_UNDERFLOW = 1770,
+		RPC_S_FP_OVERFLOW = 1771,
+		RPC_X_NO_MORE_ENTRIES = 1772,
+		RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773,
+		RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774,
+		RPC_X_SS_IN_NULL_CONTEXT = 1775,
+		RPC_X_SS_CONTEXT_DAMAGED = 1777,
+		RPC_X_SS_HANDLES_MISMATCH = 1778,
+		RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779,
+		RPC_X_NULL_REF_POINTER = 1780,
+		RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781,
+		RPC_X_BYTE_COUNT_TOO_SMALL = 1782,
+		RPC_X_BAD_STUB_DATA = 1783,
+		ERROR_INVALID_USER_BUFFER = 1784,
+		ERROR_UNRECOGNIZED_MEDIA = 1785,
+		ERROR_NO_TRUST_LSA_SECRET = 1786,
+		ERROR_NO_TRUST_SAM_ACCOUNT = 1787,
+		ERROR_TRUSTED_DOMAIN_FAILURE = 1788,
+		ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789,
+		ERROR_TRUST_FAILURE = 1790,
+		RPC_S_CALL_IN_PROGRESS = 1791,
+		ERROR_NETLOGON_NOT_STARTED = 1792,
+		ERROR_ACCOUNT_EXPIRED = 1793,
+		ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794,
+		ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = 1795,
+		ERROR_UNKNOWN_PORT = 1796,
+		ERROR_UNKNOWN_PRINTER_DRIVER = 1797,
+		ERROR_UNKNOWN_PRINTPROCESSOR = 1798,
+		ERROR_INVALID_SEPARATOR_FILE = 1799,
+		ERROR_INVALID_PRIORITY = 1800,
+		ERROR_INVALID_PRINTER_NAME = 1801,
+		ERROR_PRINTER_ALREADY_EXISTS = 1802,
+		ERROR_INVALID_PRINTER_COMMAND = 1803,
+		ERROR_INVALID_DATATYPE = 1804,
+		ERROR_INVALID_ENVIRONMENT = 1805,
+		RPC_S_NO_MORE_BINDINGS = 1806,
+		ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807,
+		ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808,
+		ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809,
+		ERROR_DOMAIN_TRUST_INCONSISTENT = 1810,
+		ERROR_SERVER_HAS_OPEN_HANDLES = 1811,
+		ERROR_RESOURCE_DATA_NOT_FOUND = 1812,
+		ERROR_RESOURCE_TYPE_NOT_FOUND = 1813,
+		ERROR_RESOURCE_NAME_NOT_FOUND = 1814,
+		ERROR_RESOURCE_LANG_NOT_FOUND = 1815,
+		ERROR_NOT_ENOUGH_QUOTA = 1816,
+		RPC_S_NO_INTERFACES = 1817,
+		RPC_S_CALL_CANCELLED = 1818,
+		RPC_S_BINDING_INCOMPLETE = 1819,
+		RPC_S_COMM_FAILURE = 1820,
+		RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821,
+		RPC_S_NO_PRINC_NAME = 1822,
+		RPC_S_NOT_RPC_ERROR = 1823,
+		RPC_S_UUID_LOCAL_ONLY = 1824,
+		RPC_S_SEC_PKG_ERROR = 1825,
+		RPC_S_NOT_CANCELLED = 1826,
+		RPC_X_INVALID_ES_ACTION = 1827,
+		RPC_X_WRONG_ES_VERSION = 1828,
+		RPC_X_WRONG_STUB_VERSION = 1829,
+		RPC_X_INVALID_PIPE_OBJECT = 1830,
+		RPC_X_WRONG_PIPE_ORDER = 1831,
+		RPC_X_WRONG_PIPE_VERSION = 1832,
+		RPC_S_GROUP_MEMBER_NOT_FOUND = 1898,
+		EPT_S_CANT_CREATE = 1899,
+		RPC_S_INVALID_OBJECT = 1900,
+		ERROR_INVALID_TIME = 1901,
+		ERROR_INVALID_FORM_NAME = 1902,
+		ERROR_INVALID_FORM_SIZE = 1903,
+		ERROR_ALREADY_WAITING = 1904,
+		ERROR_PRINTER_DELETED = 1905,
+		ERROR_INVALID_PRINTER_STATE = 1906,
+		ERROR_PASSWORD_MUST_CHANGE = 1907,
+		ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908,
+		ERROR_ACCOUNT_LOCKED_OUT = 1909,
+		OR_INVALID_OXID = 1910,
+		OR_INVALID_OID = 1911,
+		OR_INVALID_SET = 1912,
+		RPC_S_SEND_INCOMPLETE = 1913,
+		RPC_S_INVALID_ASYNC_HANDLE = 1914,
+		RPC_S_INVALID_ASYNC_CALL = 1915,
+		RPC_X_PIPE_CLOSED = 1916,
+		RPC_X_PIPE_DISCIPLINE_ERROR = 1917,
+		RPC_X_PIPE_EMPTY = 1918,
+		ERROR_NO_SITENAME = 1919,
+		ERROR_CANT_ACCESS_FILE = 1920,
+		ERROR_CANT_RESOLVE_FILENAME = 1921,
+		RPC_S_ENTRY_TYPE_MISMATCH = 1922,
+		RPC_S_NOT_ALL_OBJS_EXPORTED = 1923,
+		RPC_S_INTERFACE_NOT_EXPORTED = 1924,
+		RPC_S_PROFILE_NOT_ADDED = 1925,
+		RPC_S_PRF_ELT_NOT_ADDED = 1926,
+		RPC_S_PRF_ELT_NOT_REMOVED = 1927,
+		RPC_S_GRP_ELT_NOT_ADDED = 1928,
+		RPC_S_GRP_ELT_NOT_REMOVED = 1929,
+		ERROR_KM_DRIVER_BLOCKED = 1930,
+		ERROR_CONTEXT_EXPIRED = 1931,
+		ERROR_INVALID_PIXEL_FORMAT = 2000,
+		ERROR_BAD_DRIVER = 2001,
+		ERROR_INVALID_WINDOW_STYLE = 2002,
+		ERROR_METAFILE_NOT_SUPPORTED = 2003,
+		ERROR_TRANSFORM_NOT_SUPPORTED = 2004,
+		ERROR_CLIPPING_NOT_SUPPORTED = 2005,
+		ERROR_INVALID_CMM = 2010,
+		ERROR_INVALID_PROFILE = 2011,
+		ERROR_TAG_NOT_FOUND = 2012,
+		ERROR_TAG_NOT_PRESENT = 2013,
+		ERROR_DUPLICATE_TAG = 2014,
+		ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE = 2015,
+		ERROR_PROFILE_NOT_FOUND = 2016,
+		ERROR_INVALID_COLORSPACE = 2017,
+		ERROR_ICM_NOT_ENABLED = 2018,
+		ERROR_DELETING_ICM_XFORM = 2019,
+		ERROR_INVALID_TRANSFORM = 2020,
+		ERROR_COLORSPACE_MISMATCH = 2021,
+		ERROR_INVALID_COLORINDEX = 2022,
+		ERROR_CONNECTED_OTHER_PASSWORD = 2108,
+		ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT = 2109,
+		ERROR_BAD_USERNAME = 2202,
+		ERROR_NOT_CONNECTED = 2250,
+		ERROR_OPEN_FILES = 2401,
+		ERROR_ACTIVE_CONNECTIONS = 2402,
+		ERROR_DEVICE_IN_USE = 2404,
+		ERROR_UNKNOWN_PRINT_MONITOR = 3000,
+		ERROR_PRINTER_DRIVER_IN_USE = 3001,
+		ERROR_SPOOL_FILE_NOT_FOUND = 3002,
+		ERROR_SPL_NO_STARTDOC = 3003,
+		ERROR_SPL_NO_ADDJOB = 3004,
+		ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = 3005,
+		ERROR_PRINT_MONITOR_ALREADY_INSTALLED = 3006,
+		ERROR_INVALID_PRINT_MONITOR = 3007,
+		ERROR_PRINT_MONITOR_IN_USE = 3008,
+		ERROR_PRINTER_HAS_JOBS_QUEUED = 3009,
+		ERROR_SUCCESS_REBOOT_REQUIRED = 3010,
+		ERROR_SUCCESS_RESTART_REQUIRED = 3011,
+		ERROR_PRINTER_NOT_FOUND = 3012,
+		ERROR_PRINTER_DRIVER_WARNED = 3013,
+		ERROR_PRINTER_DRIVER_BLOCKED = 3014,
+		ERROR_WINS_INTERNAL = 4000,
+		ERROR_CAN_NOT_DEL_LOCAL_WINS = 4001,
+		ERROR_STATIC_INIT = 4002,
+		ERROR_INC_BACKUP = 4003,
+		ERROR_FULL_BACKUP = 4004,
+		ERROR_REC_NON_EXISTENT = 4005,
+		ERROR_RPL_NOT_ALLOWED = 4006,
+		ERROR_DHCP_ADDRESS_CONFLICT = 4100,
+		ERROR_WMI_GUID_NOT_FOUND = 4200,
+		ERROR_WMI_INSTANCE_NOT_FOUND = 4201,
+		ERROR_WMI_ITEMID_NOT_FOUND = 4202,
+		ERROR_WMI_TRY_AGAIN = 4203,
+		ERROR_WMI_DP_NOT_FOUND = 4204,
+		ERROR_WMI_UNRESOLVED_INSTANCE_REF = 4205,
+		ERROR_WMI_ALREADY_ENABLED = 4206,
+		ERROR_WMI_GUID_DISCONNECTED = 4207,
+		ERROR_WMI_SERVER_UNAVAILABLE = 4208,
+		ERROR_WMI_DP_FAILED = 4209,
+		ERROR_WMI_INVALID_MOF = 4210,
+		ERROR_WMI_INVALID_REGINFO = 4211,
+		ERROR_WMI_ALREADY_DISABLED = 4212,
+		ERROR_WMI_READ_ONLY = 4213,
+		ERROR_WMI_SET_FAILURE = 4214,
+		ERROR_INVALID_MEDIA = 4300,
+		ERROR_INVALID_LIBRARY = 4301,
+		ERROR_INVALID_MEDIA_POOL = 4302,
+		ERROR_DRIVE_MEDIA_MISMATCH = 4303,
+		ERROR_MEDIA_OFFLINE = 4304,
+		ERROR_LIBRARY_OFFLINE = 4305,
+		ERROR_EMPTY = 4306,
+		ERROR_NOT_EMPTY = 4307,
+		ERROR_MEDIA_UNAVAILABLE = 4308,
+		ERROR_RESOURCE_DISABLED = 4309,
+		ERROR_INVALID_CLEANER = 4310,
+		ERROR_UNABLE_TO_CLEAN = 4311,
+		ERROR_OBJECT_NOT_FOUND = 4312,
+		ERROR_DATABASE_FAILURE = 4313,
+		ERROR_DATABASE_FULL = 4314,
+		ERROR_MEDIA_INCOMPATIBLE = 4315,
+		ERROR_RESOURCE_NOT_PRESENT = 4316,
+		ERROR_INVALID_OPERATION = 4317,
+		ERROR_MEDIA_NOT_AVAILABLE = 4318,
+		ERROR_DEVICE_NOT_AVAILABLE = 4319,
+		ERROR_REQUEST_REFUSED = 4320,
+		ERROR_INVALID_DRIVE_OBJECT = 4321,
+		ERROR_LIBRARY_FULL = 4322,
+		ERROR_MEDIUM_NOT_ACCESSIBLE = 4323,
+		ERROR_UNABLE_TO_LOAD_MEDIUM = 4324,
+		ERROR_UNABLE_TO_INVENTORY_DRIVE = 4325,
+		ERROR_UNABLE_TO_INVENTORY_SLOT = 4326,
+		ERROR_UNABLE_TO_INVENTORY_TRANSPORT = 4327,
+		ERROR_TRANSPORT_FULL = 4328,
+		ERROR_CONTROLLING_IEPORT = 4329,
+		ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA = 4330,
+		ERROR_CLEANER_SLOT_SET = 4331,
+		ERROR_CLEANER_SLOT_NOT_SET = 4332,
+		ERROR_CLEANER_CARTRIDGE_SPENT = 4333,
+		ERROR_UNEXPECTED_OMID = 4334,
+		ERROR_CANT_DELETE_LAST_ITEM = 4335,
+		ERROR_MESSAGE_EXCEEDS_MAX_SIZE = 4336,
+		ERROR_VOLUME_CONTAINS_SYS_FILES = 4337,
+		ERROR_INDIGENOUS_TYPE = 4338,
+		ERROR_NO_SUPPORTING_DRIVES = 4339,
+		ERROR_CLEANER_CARTRIDGE_INSTALLED = 4340,
+		ERROR_FILE_OFFLINE = 4350,
+		ERROR_REMOTE_STORAGE_NOT_ACTIVE = 4351,
+		ERROR_REMOTE_STORAGE_MEDIA_ERROR = 4352,
+		ERROR_NOT_A_REPARSE_POINT = 4390,
+		ERROR_REPARSE_ATTRIBUTE_CONFLICT = 4391,
+		ERROR_INVALID_REPARSE_DATA = 4392,
+		ERROR_REPARSE_TAG_INVALID = 4393,
+		ERROR_REPARSE_TAG_MISMATCH = 4394,
+		ERROR_VOLUME_NOT_SIS_ENABLED = 4500,
+		ERROR_DEPENDENT_RESOURCE_EXISTS = 5001,
+		ERROR_DEPENDENCY_NOT_FOUND = 5002,
+		ERROR_DEPENDENCY_ALREADY_EXISTS = 5003,
+		ERROR_RESOURCE_NOT_ONLINE = 5004,
+		ERROR_HOST_NODE_NOT_AVAILABLE = 5005,
+		ERROR_RESOURCE_NOT_AVAILABLE = 5006,
+		ERROR_RESOURCE_NOT_FOUND = 5007,
+		ERROR_SHUTDOWN_CLUSTER = 5008,
+		ERROR_CANT_EVICT_ACTIVE_NODE = 5009,
+		ERROR_OBJECT_ALREADY_EXISTS = 5010,
+		ERROR_OBJECT_IN_LIST = 5011,
+		ERROR_GROUP_NOT_AVAILABLE = 5012,
+		ERROR_GROUP_NOT_FOUND = 5013,
+		ERROR_GROUP_NOT_ONLINE = 5014,
+		ERROR_HOST_NODE_NOT_RESOURCE_OWNER = 5015,
+		ERROR_HOST_NODE_NOT_GROUP_OWNER = 5016,
+		ERROR_RESMON_CREATE_FAILED = 5017,
+		ERROR_RESMON_ONLINE_FAILED = 5018,
+		ERROR_RESOURCE_ONLINE = 5019,
+		ERROR_QUORUM_RESOURCE = 5020,
+		ERROR_NOT_QUORUM_CAPABLE = 5021,
+		ERROR_CLUSTER_SHUTTING_DOWN = 5022,
+		ERROR_INVALID_STATE = 5023,
+		ERROR_RESOURCE_PROPERTIES_STORED = 5024,
+		ERROR_NOT_QUORUM_CLASS = 5025,
+		ERROR_CORE_RESOURCE = 5026,
+		ERROR_QUORUM_RESOURCE_ONLINE_FAILED = 5027,
+		ERROR_QUORUMLOG_OPEN_FAILED = 5028,
+		ERROR_CLUSTERLOG_CORRUPT = 5029,
+		ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE = 5030,
+		ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE = 5031,
+		ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND = 5032,
+		ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE = 5033,
+		ERROR_QUORUM_OWNER_ALIVE = 5034,
+		ERROR_NETWORK_NOT_AVAILABLE = 5035,
+		ERROR_NODE_NOT_AVAILABLE = 5036,
+		ERROR_ALL_NODES_NOT_AVAILABLE = 5037,
+		ERROR_RESOURCE_FAILED = 5038,
+		ERROR_CLUSTER_INVALID_NODE = 5039,
+		ERROR_CLUSTER_NODE_EXISTS = 5040,
+		ERROR_CLUSTER_JOIN_IN_PROGRESS = 5041,
+		ERROR_CLUSTER_NODE_NOT_FOUND = 5042,
+		ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND = 5043,
+		ERROR_CLUSTER_NETWORK_EXISTS = 5044,
+		ERROR_CLUSTER_NETWORK_NOT_FOUND = 5045,
+		ERROR_CLUSTER_NETINTERFACE_EXISTS = 5046,
+		ERROR_CLUSTER_NETINTERFACE_NOT_FOUND = 5047,
+		ERROR_CLUSTER_INVALID_REQUEST = 5048,
+		ERROR_CLUSTER_INVALID_NETWORK_PROVIDER = 5049,
+		ERROR_CLUSTER_NODE_DOWN = 5050,
+		ERROR_CLUSTER_NODE_UNREACHABLE = 5051,
+		ERROR_CLUSTER_NODE_NOT_MEMBER = 5052,
+		ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS = 5053,
+		ERROR_CLUSTER_INVALID_NETWORK = 5054,
+		ERROR_CLUSTER_NODE_UP = 5056,
+		ERROR_CLUSTER_IPADDR_IN_USE = 5057,
+		ERROR_CLUSTER_NODE_NOT_PAUSED = 5058,
+		ERROR_CLUSTER_NO_SECURITY_CONTEXT = 5059,
+		ERROR_CLUSTER_NETWORK_NOT_INTERNAL = 5060,
+		ERROR_CLUSTER_NODE_ALREADY_UP = 5061,
+		ERROR_CLUSTER_NODE_ALREADY_DOWN = 5062,
+		ERROR_CLUSTER_NETWORK_ALREADY_ONLINE = 5063,
+		ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE = 5064,
+		ERROR_CLUSTER_NODE_ALREADY_MEMBER = 5065,
+		ERROR_CLUSTER_LAST_INTERNAL_NETWORK = 5066,
+		ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS = 5067,
+		ERROR_INVALID_OPERATION_ON_QUORUM = 5068,
+		ERROR_DEPENDENCY_NOT_ALLOWED = 5069,
+		ERROR_CLUSTER_NODE_PAUSED = 5070,
+		ERROR_NODE_CANT_HOST_RESOURCE = 5071,
+		ERROR_CLUSTER_NODE_NOT_READY = 5072,
+		ERROR_CLUSTER_NODE_SHUTTING_DOWN = 5073,
+		ERROR_CLUSTER_JOIN_ABORTED = 5074,
+		ERROR_CLUSTER_INCOMPATIBLE_VERSIONS = 5075,
+		ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED = 5076,
+		ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED = 5077,
+		ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND = 5078,
+		ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED = 5079,
+		ERROR_CLUSTER_RESNAME_NOT_FOUND = 5080,
+		ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED = 5081,
+		ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST = 5082,
+		ERROR_CLUSTER_DATABASE_SEQMISMATCH = 5083,
+		ERROR_RESMON_INVALID_STATE = 5084,
+		ERROR_CLUSTER_GUM_NOT_LOCKER = 5085,
+		ERROR_QUORUM_DISK_NOT_FOUND = 5086,
+		ERROR_DATABASE_BACKUP_CORRUPT = 5087,
+		ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT = 5088,
+		ERROR_RESOURCE_PROPERTY_UNCHANGEABLE = 5089,
+		ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890,
+		ERROR_CLUSTER_QUORUMLOG_NOT_FOUND = 5891,
+		ERROR_CLUSTER_MEMBERSHIP_HALT = 5892,
+		ERROR_CLUSTER_INSTANCE_ID_MISMATCH = 5893,
+		ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP = 5894,
+		ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH = 5895,
+		ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP = 5896,
+		ERROR_CLUSTER_PARAMETER_MISMATCH = 5897,
+		ERROR_NODE_CANNOT_BE_CLUSTERED = 5898,
+		ERROR_CLUSTER_WRONG_OS_VERSION = 5899,
+		ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME = 5900,
+	*/
+		ERROR_ENCRYPTION_FAILED = 6000,
+	/*
+		ERROR_DECRYPTION_FAILED = 6001,
+		ERROR_FILE_ENCRYPTED = 6002,
+		ERROR_NO_RECOVERY_POLICY = 6003,
+		ERROR_NO_EFS = 6004,
+		ERROR_WRONG_EFS = 6005,
+		ERROR_NO_USER_KEYS = 6006,
+		ERROR_FILE_NOT_ENCRYPTED = 6007,
+		ERROR_NOT_EXPORT_FORMAT = 6008,
+		ERROR_FILE_READ_ONLY = 6009,
+		ERROR_DIR_EFS_DISALLOWED = 6010,
+		ERROR_EFS_SERVER_NOT_TRUSTED = 6011,
+		ERROR_BAD_RECOVERY_POLICY = 6012,
+		ERROR_EFS_ALG_BLOB_TOO_BIG = 6013,
+		ERROR_VOLUME_NOT_SUPPORT_EFS = 6014,
+		ERROR_EFS_DISABLED = 6015,
+		ERROR_EFS_VERSION_NOT_SUPPORT = 6016,
+		ERROR_NO_BROWSER_SERVERS_FOUND = 6118,
+		SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200,
+		ERROR_CTX_WINSTATION_NAME_INVALID = 7001,
+		ERROR_CTX_INVALID_PD = 7002,
+		ERROR_CTX_PD_NOT_FOUND = 7003,
+		ERROR_CTX_WD_NOT_FOUND = 7004,
+		ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY = 7005,
+		ERROR_CTX_SERVICE_NAME_COLLISION = 7006,
+		ERROR_CTX_CLOSE_PENDING = 7007,
+		ERROR_CTX_NO_OUTBUF = 7008,
+		ERROR_CTX_MODEM_INF_NOT_FOUND = 7009,
+		ERROR_CTX_INVALID_MODEMNAME = 7010,
+		ERROR_CTX_MODEM_RESPONSE_ERROR = 7011,
+		ERROR_CTX_MODEM_RESPONSE_TIMEOUT = 7012,
+		ERROR_CTX_MODEM_RESPONSE_NO_CARRIER = 7013,
+		ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE = 7014,
+		ERROR_CTX_MODEM_RESPONSE_BUSY = 7015,
+		ERROR_CTX_MODEM_RESPONSE_VOICE = 7016,
+		ERROR_CTX_TD_ERROR = 7017,
+		ERROR_CTX_WINSTATION_NOT_FOUND = 7022,
+		ERROR_CTX_WINSTATION_ALREADY_EXISTS = 7023,
+		ERROR_CTX_WINSTATION_BUSY = 7024,
+		ERROR_CTX_BAD_VIDEO_MODE = 7025,
+		ERROR_CTX_GRAPHICS_INVALID = 7035,
+		ERROR_CTX_LOGON_DISABLED = 7037,
+		ERROR_CTX_NOT_CONSOLE = 7038,
+		ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040,
+		ERROR_CTX_CONSOLE_DISCONNECT = 7041,
+		ERROR_CTX_CONSOLE_CONNECT = 7042,
+		ERROR_CTX_SHADOW_DENIED = 7044,
+		ERROR_CTX_WINSTATION_ACCESS_DENIED = 7045,
+		ERROR_CTX_INVALID_WD = 7049,
+		ERROR_CTX_SHADOW_INVALID = 7050,
+		ERROR_CTX_SHADOW_DISABLED = 7051,
+		ERROR_CTX_CLIENT_LICENSE_IN_USE = 7052,
+		ERROR_CTX_CLIENT_LICENSE_NOT_SET = 7053,
+		ERROR_CTX_LICENSE_NOT_AVAILABLE = 7054,
+		ERROR_CTX_LICENSE_CLIENT_INVALID = 7055,
+		ERROR_CTX_LICENSE_EXPIRED = 7056,
+		ERROR_CTX_SHADOW_NOT_RUNNING = 7057,
+		ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE = 7058,
+		FRS_ERR_INVALID_API_SEQUENCE = 8001,
+		FRS_ERR_STARTING_SERVICE = 8002,
+		FRS_ERR_STOPPING_SERVICE = 8003,
+		FRS_ERR_INTERNAL_API = 8004,
+		FRS_ERR_INTERNAL = 8005,
+		FRS_ERR_SERVICE_COMM = 8006,
+		FRS_ERR_INSUFFICIENT_PRIV = 8007,
+		FRS_ERR_AUTHENTICATION = 8008,
+		FRS_ERR_PARENT_INSUFFICIENT_PRIV = 8009,
+		FRS_ERR_PARENT_AUTHENTICATION = 8010,
+		FRS_ERR_CHILD_TO_PARENT_COMM = 8011,
+		FRS_ERR_PARENT_TO_CHILD_COMM = 8012,
+		FRS_ERR_SYSVOL_POPULATE = 8013,
+		FRS_ERR_SYSVOL_POPULATE_TIMEOUT = 8014,
+		FRS_ERR_SYSVOL_IS_BUSY = 8015,
+		FRS_ERR_SYSVOL_DEMOTE = 8016,
+		FRS_ERR_INVALID_SERVICE_PARAMETER = 8017,
+		ERROR_DS_NOT_INSTALLED = 8200,
+		ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY = 8201,
+		ERROR_DS_NO_ATTRIBUTE_OR_VALUE = 8202,
+		ERROR_DS_INVALID_ATTRIBUTE_SYNTAX = 8203,
+		ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED = 8204,
+		ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS = 8205,
+		ERROR_DS_BUSY = 8206,
+		ERROR_DS_UNAVAILABLE = 8207,
+		ERROR_DS_NO_RIDS_ALLOCATED = 8208,
+		ERROR_DS_NO_MORE_RIDS = 8209,
+		ERROR_DS_INCORRECT_ROLE_OWNER = 8210,
+		ERROR_DS_RIDMGR_INIT_ERROR = 8211,
+		ERROR_DS_OBJ_CLASS_VIOLATION = 8212,
+		ERROR_DS_CANT_ON_NON_LEAF = 8213,
+		ERROR_DS_CANT_ON_RDN = 8214,
+		ERROR_DS_CANT_MOD_OBJ_CLASS = 8215,
+		ERROR_DS_CROSS_DOM_MOVE_ERROR = 8216,
+		ERROR_DS_GC_NOT_AVAILABLE = 8217,
+		ERROR_SHARED_POLICY = 8218,
+		ERROR_POLICY_OBJECT_NOT_FOUND = 8219,
+		ERROR_POLICY_ONLY_IN_DS = 8220,
+		ERROR_PROMOTION_ACTIVE = 8221,
+		ERROR_NO_PROMOTION_ACTIVE = 8222,
+		ERROR_DS_OPERATIONS_ERROR = 8224,
+		ERROR_DS_PROTOCOL_ERROR = 8225,
+		ERROR_DS_TIMELIMIT_EXCEEDED = 8226,
+		ERROR_DS_SIZELIMIT_EXCEEDED = 8227,
+		ERROR_DS_ADMIN_LIMIT_EXCEEDED = 8228,
+		ERROR_DS_COMPARE_FALSE = 8229,
+		ERROR_DS_COMPARE_TRUE = 8230,
+		ERROR_DS_AUTH_METHOD_NOT_SUPPORTED = 8231,
+		ERROR_DS_STRONG_AUTH_REQUIRED = 8232,
+		ERROR_DS_INAPPROPRIATE_AUTH = 8233,
+		ERROR_DS_AUTH_UNKNOWN = 8234,
+		ERROR_DS_REFERRAL = 8235,
+		ERROR_DS_UNAVAILABLE_CRIT_EXTENSION = 8236,
+		ERROR_DS_CONFIDENTIALITY_REQUIRED = 8237,
+		ERROR_DS_INAPPROPRIATE_MATCHING = 8238,
+		ERROR_DS_CONSTRAINT_VIOLATION = 8239,
+		ERROR_DS_NO_SUCH_OBJECT = 8240,
+		ERROR_DS_ALIAS_PROBLEM = 8241,
+		ERROR_DS_INVALID_DN_SYNTAX = 8242,
+		ERROR_DS_IS_LEAF = 8243,
+		ERROR_DS_ALIAS_DEREF_PROBLEM = 8244,
+		ERROR_DS_UNWILLING_TO_PERFORM = 8245,
+		ERROR_DS_LOOP_DETECT = 8246,
+		ERROR_DS_NAMING_VIOLATION = 8247,
+		ERROR_DS_OBJECT_RESULTS_TOO_LARGE = 8248,
+		ERROR_DS_AFFECTS_MULTIPLE_DSAS = 8249,
+		ERROR_DS_SERVER_DOWN = 8250,
+		ERROR_DS_LOCAL_ERROR = 8251,
+		ERROR_DS_ENCODING_ERROR = 8252,
+		ERROR_DS_DECODING_ERROR = 8253,
+		ERROR_DS_FILTER_UNKNOWN = 8254,
+		ERROR_DS_PARAM_ERROR = 8255,
+		ERROR_DS_NOT_SUPPORTED = 8256,
+		ERROR_DS_NO_RESULTS_RETURNED = 8257,
+		ERROR_DS_CONTROL_NOT_FOUND = 8258,
+		ERROR_DS_CLIENT_LOOP = 8259,
+		ERROR_DS_REFERRAL_LIMIT_EXCEEDED = 8260,
+		ERROR_DS_SORT_CONTROL_MISSING = 8261,
+		ERROR_DS_OFFSET_RANGE_ERROR = 8262,
+		ERROR_DS_ROOT_MUST_BE_NC = 8301,
+		ERROR_DS_ADD_REPLICA_INHIBITED = 8302,
+		ERROR_DS_ATT_NOT_DEF_IN_SCHEMA = 8303,
+		ERROR_DS_MAX_OBJ_SIZE_EXCEEDED = 8304,
+		ERROR_DS_OBJ_STRING_NAME_EXISTS = 8305,
+		ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA = 8306,
+		ERROR_DS_RDN_DOESNT_MATCH_SCHEMA = 8307,
+		ERROR_DS_NO_REQUESTED_ATTS_FOUND = 8308,
+		ERROR_DS_USER_BUFFER_TO_SMALL = 8309,
+		ERROR_DS_ATT_IS_NOT_ON_OBJ = 8310,
+		ERROR_DS_ILLEGAL_MOD_OPERATION = 8311,
+		ERROR_DS_OBJ_TOO_LARGE = 8312,
+		ERROR_DS_BAD_INSTANCE_TYPE = 8313,
+		ERROR_DS_MASTERDSA_REQUIRED = 8314,
+		ERROR_DS_OBJECT_CLASS_REQUIRED = 8315,
+		ERROR_DS_MISSING_REQUIRED_ATT = 8316,
+		ERROR_DS_ATT_NOT_DEF_FOR_CLASS = 8317,
+		ERROR_DS_ATT_ALREADY_EXISTS = 8318,
+		ERROR_DS_CANT_ADD_ATT_VALUES = 8320,
+		ERROR_DS_SINGLE_VALUE_CONSTRAINT = 8321,
+		ERROR_DS_RANGE_CONSTRAINT = 8322,
+		ERROR_DS_ATT_VAL_ALREADY_EXISTS = 8323,
+		ERROR_DS_CANT_REM_MISSING_ATT = 8324,
+		ERROR_DS_CANT_REM_MISSING_ATT_VAL = 8325,
+		ERROR_DS_ROOT_CANT_BE_SUBREF = 8326,
+		ERROR_DS_NO_CHAINING = 8327,
+		ERROR_DS_NO_CHAINED_EVAL = 8328,
+		ERROR_DS_NO_PARENT_OBJECT = 8329,
+		ERROR_DS_PARENT_IS_AN_ALIAS = 8330,
+		ERROR_DS_CANT_MIX_MASTER_AND_REPS = 8331,
+		ERROR_DS_CHILDREN_EXIST = 8332,
+		ERROR_DS_OBJ_NOT_FOUND = 8333,
+		ERROR_DS_ALIASED_OBJ_MISSING = 8334,
+		ERROR_DS_BAD_NAME_SYNTAX = 8335,
+		ERROR_DS_ALIAS_POINTS_TO_ALIAS = 8336,
+		ERROR_DS_CANT_DEREF_ALIAS = 8337,
+		ERROR_DS_OUT_OF_SCOPE = 8338,
+		ERROR_DS_OBJECT_BEING_REMOVED = 8339,
+		ERROR_DS_CANT_DELETE_DSA_OBJ = 8340,
+		ERROR_DS_GENERIC_ERROR = 8341,
+		ERROR_DS_DSA_MUST_BE_INT_MASTER = 8342,
+		ERROR_DS_CLASS_NOT_DSA = 8343,
+		ERROR_DS_INSUFF_ACCESS_RIGHTS = 8344,
+		ERROR_DS_ILLEGAL_SUPERIOR = 8345,
+		ERROR_DS_ATTRIBUTE_OWNED_BY_SAM = 8346,
+		ERROR_DS_NAME_TOO_MANY_PARTS = 8347,
+		ERROR_DS_NAME_TOO_LONG = 8348,
+		ERROR_DS_NAME_VALUE_TOO_LONG = 8349,
+		ERROR_DS_NAME_UNPARSEABLE = 8350,
+		ERROR_DS_NAME_TYPE_UNKNOWN = 8351,
+		ERROR_DS_NOT_AN_OBJECT = 8352,
+		ERROR_DS_SEC_DESC_TOO_SHORT = 8353,
+		ERROR_DS_SEC_DESC_INVALID = 8354,
+		ERROR_DS_NO_DELETED_NAME = 8355,
+		ERROR_DS_SUBREF_MUST_HAVE_PARENT = 8356,
+		ERROR_DS_NCNAME_MUST_BE_NC = 8357,
+		ERROR_DS_CANT_ADD_SYSTEM_ONLY = 8358,
+		ERROR_DS_CLASS_MUST_BE_CONCRETE = 8359,
+		ERROR_DS_INVALID_DMD = 8360,
+		ERROR_DS_OBJ_GUID_EXISTS = 8361,
+		ERROR_DS_NOT_ON_BACKLINK = 8362,
+		ERROR_DS_NO_CROSSREF_FOR_NC = 8363,
+		ERROR_DS_SHUTTING_DOWN = 8364,
+		ERROR_DS_UNKNOWN_OPERATION = 8365,
+		ERROR_DS_INVALID_ROLE_OWNER = 8366,
+		ERROR_DS_COULDNT_CONTACT_FSMO = 8367,
+		ERROR_DS_CROSS_NC_DN_RENAME = 8368,
+		ERROR_DS_CANT_MOD_SYSTEM_ONLY = 8369,
+		ERROR_DS_REPLICATOR_ONLY = 8370,
+		ERROR_DS_OBJ_CLASS_NOT_DEFINED = 8371,
+		ERROR_DS_OBJ_CLASS_NOT_SUBCLASS = 8372,
+		ERROR_DS_NAME_REFERENCE_INVALID = 8373,
+		ERROR_DS_CROSS_REF_EXISTS = 8374,
+		ERROR_DS_CANT_DEL_MASTER_CROSSREF = 8375,
+		ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD = 8376,
+		ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX = 8377,
+		ERROR_DS_DUP_RDN = 8378,
+		ERROR_DS_DUP_OID = 8379,
+		ERROR_DS_DUP_MAPI_ID = 8380,
+		ERROR_DS_DUP_SCHEMA_ID_GUID = 8381,
+		ERROR_DS_DUP_LDAP_DISPLAY_NAME = 8382,
+		ERROR_DS_SEMANTIC_ATT_TEST = 8383,
+		ERROR_DS_SYNTAX_MISMATCH = 8384,
+		ERROR_DS_EXISTS_IN_MUST_HAVE = 8385,
+		ERROR_DS_EXISTS_IN_MAY_HAVE = 8386,
+		ERROR_DS_NONEXISTENT_MAY_HAVE = 8387,
+		ERROR_DS_NONEXISTENT_MUST_HAVE = 8388,
+		ERROR_DS_AUX_CLS_TEST_FAIL = 8389,
+		ERROR_DS_NONEXISTENT_POSS_SUP = 8390,
+		ERROR_DS_SUB_CLS_TEST_FAIL = 8391,
+		ERROR_DS_BAD_RDN_ATT_ID_SYNTAX = 8392,
+		ERROR_DS_EXISTS_IN_AUX_CLS = 8393,
+		ERROR_DS_EXISTS_IN_SUB_CLS = 8394,
+		ERROR_DS_EXISTS_IN_POSS_SUP = 8395,
+		ERROR_DS_RECALCSCHEMA_FAILED = 8396,
+		ERROR_DS_TREE_DELETE_NOT_FINISHED = 8397,
+		ERROR_DS_CANT_DELETE = 8398,
+		ERROR_DS_ATT_SCHEMA_REQ_ID = 8399,
+		ERROR_DS_BAD_ATT_SCHEMA_SYNTAX = 8400,
+		ERROR_DS_CANT_CACHE_ATT = 8401,
+		ERROR_DS_CANT_CACHE_CLASS = 8402,
+		ERROR_DS_CANT_REMOVE_ATT_CACHE = 8403,
+		ERROR_DS_CANT_REMOVE_CLASS_CACHE = 8404,
+		ERROR_DS_CANT_RETRIEVE_DN = 8405,
+		ERROR_DS_MISSING_SUPREF = 8406,
+		ERROR_DS_CANT_RETRIEVE_INSTANCE = 8407,
+		ERROR_DS_CODE_INCONSISTENCY = 8408,
+		ERROR_DS_DATABASE_ERROR = 8409,
+		ERROR_DS_GOVERNSID_MISSING = 8410,
+		ERROR_DS_MISSING_EXPECTED_ATT = 8411,
+		ERROR_DS_NCNAME_MISSING_CR_REF = 8412,
+		ERROR_DS_SECURITY_CHECKING_ERROR = 8413,
+		ERROR_DS_SCHEMA_NOT_LOADED = 8414,
+		ERROR_DS_SCHEMA_ALLOC_FAILED = 8415,
+		ERROR_DS_ATT_SCHEMA_REQ_SYNTAX = 8416,
+		ERROR_DS_GCVERIFY_ERROR = 8417,
+		ERROR_DS_DRA_SCHEMA_MISMATCH = 8418,
+		ERROR_DS_CANT_FIND_DSA_OBJ = 8419,
+		ERROR_DS_CANT_FIND_EXPECTED_NC = 8420,
+		ERROR_DS_CANT_FIND_NC_IN_CACHE = 8421,
+		ERROR_DS_CANT_RETRIEVE_CHILD = 8422,
+		ERROR_DS_SECURITY_ILLEGAL_MODIFY = 8423,
+		ERROR_DS_CANT_REPLACE_HIDDEN_REC = 8424,
+		ERROR_DS_BAD_HIERARCHY_FILE = 8425,
+		ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED = 8426,
+		ERROR_DS_CONFIG_PARAM_MISSING = 8427,
+		ERROR_DS_COUNTING_AB_INDICES_FAILED = 8428,
+		ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED = 8429,
+		ERROR_DS_INTERNAL_FAILURE = 8430,
+		ERROR_DS_UNKNOWN_ERROR = 8431,
+		ERROR_DS_ROOT_REQUIRES_CLASS_TOP = 8432,
+		ERROR_DS_REFUSING_FSMO_ROLES = 8433,
+		ERROR_DS_MISSING_FSMO_SETTINGS = 8434,
+		ERROR_DS_UNABLE_TO_SURRENDER_ROLES = 8435,
+		ERROR_DS_DRA_GENERIC = 8436,
+		ERROR_DS_DRA_INVALID_PARAMETER = 8437,
+		ERROR_DS_DRA_BUSY = 8438,
+		ERROR_DS_DRA_BAD_DN = 8439,
+		ERROR_DS_DRA_BAD_NC = 8440,
+		ERROR_DS_DRA_DN_EXISTS = 8441,
+		ERROR_DS_DRA_INTERNAL_ERROR = 8442,
+		ERROR_DS_DRA_INCONSISTENT_DIT = 8443,
+		ERROR_DS_DRA_CONNECTION_FAILED = 8444,
+		ERROR_DS_DRA_BAD_INSTANCE_TYPE = 8445,
+		ERROR_DS_DRA_OUT_OF_MEM = 8446,
+		ERROR_DS_DRA_MAIL_PROBLEM = 8447,
+		ERROR_DS_DRA_REF_ALREADY_EXISTS = 8448,
+		ERROR_DS_DRA_REF_NOT_FOUND = 8449,
+		ERROR_DS_DRA_OBJ_IS_REP_SOURCE = 8450,
+		ERROR_DS_DRA_DB_ERROR = 8451,
+		ERROR_DS_DRA_NO_REPLICA = 8452,
+		ERROR_DS_DRA_ACCESS_DENIED = 8453,
+		ERROR_DS_DRA_NOT_SUPPORTED = 8454,
+		ERROR_DS_DRA_RPC_CANCELLED = 8455,
+		ERROR_DS_DRA_SOURCE_DISABLED = 8456,
+		ERROR_DS_DRA_SINK_DISABLED = 8457,
+		ERROR_DS_DRA_NAME_COLLISION = 8458,
+		ERROR_DS_DRA_SOURCE_REINSTALLED = 8459,
+		ERROR_DS_DRA_MISSING_PARENT = 8460,
+		ERROR_DS_DRA_PREEMPTED = 8461,
+		ERROR_DS_DRA_ABANDON_SYNC = 8462,
+		ERROR_DS_DRA_SHUTDOWN = 8463,
+		ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET = 8464,
+		ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA = 8465,
+		ERROR_DS_DRA_EXTN_CONNECTION_FAILED = 8466,
+		ERROR_DS_INSTALL_SCHEMA_MISMATCH = 8467,
+		ERROR_DS_DUP_LINK_ID = 8468,
+		ERROR_DS_NAME_ERROR_RESOLVING = 8469,
+		ERROR_DS_NAME_ERROR_NOT_FOUND = 8470,
+		ERROR_DS_NAME_ERROR_NOT_UNIQUE = 8471,
+		ERROR_DS_NAME_ERROR_NO_MAPPING = 8472,
+		ERROR_DS_NAME_ERROR_DOMAIN_ONLY = 8473,
+		ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING = 8474,
+		ERROR_DS_CONSTRUCTED_ATT_MOD = 8475,
+		ERROR_DS_WRONG_OM_OBJ_CLASS = 8476,
+		ERROR_DS_DRA_REPL_PENDING = 8477,
+		ERROR_DS_DS_REQUIRED = 8478,
+		ERROR_DS_INVALID_LDAP_DISPLAY_NAME = 8479,
+		ERROR_DS_NON_BASE_SEARCH = 8480,
+		ERROR_DS_CANT_RETRIEVE_ATTS = 8481,
+		ERROR_DS_BACKLINK_WITHOUT_LINK = 8482,
+		ERROR_DS_EPOCH_MISMATCH = 8483,
+		ERROR_DS_SRC_NAME_MISMATCH = 8484,
+		ERROR_DS_SRC_AND_DST_NC_IDENTICAL = 8485,
+		ERROR_DS_DST_NC_MISMATCH = 8486,
+		ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC = 8487,
+		ERROR_DS_SRC_GUID_MISMATCH = 8488,
+		ERROR_DS_CANT_MOVE_DELETED_OBJECT = 8489,
+		ERROR_DS_PDC_OPERATION_IN_PROGRESS = 8490,
+		ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD = 8491,
+		ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION = 8492,
+		ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS = 8493,
+		ERROR_DS_NC_MUST_HAVE_NC_PARENT = 8494,
+		ERROR_DS_DST_DOMAIN_NOT_NATIVE = 8496,
+		ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER = 8497,
+		ERROR_DS_CANT_MOVE_ACCOUNT_GROUP = 8498,
+		ERROR_DS_CANT_MOVE_RESOURCE_GROUP = 8499,
+		ERROR_DS_INVALID_SEARCH_FLAG = 8500,
+		ERROR_DS_NO_TREE_DELETE_ABOVE_NC = 8501,
+		ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE = 8502,
+		ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE = 8503,
+		ERROR_DS_SAM_INIT_FAILURE = 8504,
+		ERROR_DS_SENSITIVE_GROUP_VIOLATION = 8505,
+		ERROR_DS_CANT_MOD_PRIMARYGROUPID = 8506,
+		ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD = 8507,
+		ERROR_DS_NONSAFE_SCHEMA_CHANGE = 8508,
+		ERROR_DS_SCHEMA_UPDATE_DISALLOWED = 8509,
+		ERROR_DS_CANT_CREATE_UNDER_SCHEMA = 8510,
+		ERROR_DS_INSTALL_NO_SRC_SCH_VERSION = 8511,
+		ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE = 8512,
+		ERROR_DS_INVALID_GROUP_TYPE = 8513,
+		ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN = 8514,
+		ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN = 8515,
+		ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER = 8516,
+		ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER = 8517,
+		ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER = 8518,
+		ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER = 8519,
+		ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER = 8520,
+		ERROR_DS_HAVE_PRIMARY_MEMBERS = 8521,
+		ERROR_DS_STRING_SD_CONVERSION_FAILED = 8522,
+		ERROR_DS_NAMING_MASTER_GC = 8523,
+		ERROR_DS_LOOKUP_FAILURE = 8524,
+		ERROR_DS_COULDNT_UPDATE_SPNS = 8525,
+		ERROR_DS_CANT_RETRIEVE_SD = 8526,
+		ERROR_DS_KEY_NOT_UNIQUE = 8527,
+		ERROR_DS_WRONG_LINKED_ATT_SYNTAX = 8528,
+		ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD = 8529,
+		ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY = 8530,
+		ERROR_DS_CANT_START = 8531,
+		ERROR_DS_INIT_FAILURE = 8532,
+		ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION = 8533,
+		ERROR_DS_SOURCE_DOMAIN_IN_FOREST = 8534,
+		ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST = 8535,
+		ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED = 8536,
+		ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN = 8537,
+		ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER = 8538,
+		ERROR_DS_SRC_SID_EXISTS_IN_FOREST = 8539,
+		ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH = 8540,
+		ERROR_SAM_INIT_FAILURE = 8541,
+		ERROR_DS_DRA_SCHEMA_INFO_SHIP = 8542,
+		ERROR_DS_DRA_SCHEMA_CONFLICT = 8543,
+		ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT = 8544,
+		ERROR_DS_DRA_OBJ_NC_MISMATCH = 8545,
+		ERROR_DS_NC_STILL_HAS_DSAS = 8546,
+		ERROR_DS_GC_REQUIRED = 8547,
+		ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY = 8548,
+		ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS = 8549,
+		ERROR_DS_CANT_ADD_TO_GC = 8550,
+		ERROR_DS_NO_CHECKPOINT_WITH_PDC = 8551,
+		ERROR_DS_SOURCE_AUDITING_NOT_ENABLED = 8552,
+		ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC = 8553,
+		ERROR_DS_INVALID_NAME_FOR_SPN = 8554,
+		ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS = 8555,
+		ERROR_DS_UNICODEPWD_NOT_IN_QUOTES = 8556,
+		ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED = 8557,
+		ERROR_DS_MUST_BE_RUN_ON_DST_DC = 8558,
+		ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER = 8559,
+		ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ = 8560,
+		ERROR_DS_INIT_FAILURE_CONSOLE = 8561,
+		ERROR_DS_SAM_INIT_FAILURE_CONSOLE = 8562,
+		ERROR_DS_FOREST_VERSION_TOO_HIGH = 8563,
+		ERROR_DS_DOMAIN_VERSION_TOO_HIGH = 8564,
+		ERROR_DS_FOREST_VERSION_TOO_LOW = 8565,
+		ERROR_DS_DOMAIN_VERSION_TOO_LOW = 8566,
+		ERROR_DS_INCOMPATIBLE_VERSION = 8567,
+		ERROR_DS_LOW_DSA_VERSION = 8568,
+		ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN = 8569,
+		ERROR_DS_NOT_SUPPORTED_SORT_ORDER = 8570,
+		ERROR_DS_NAME_NOT_UNIQUE = 8571,
+		ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 = 8572,
+		ERROR_DS_OUT_OF_VERSION_STORE = 8573,
+		ERROR_DS_INCOMPATIBLE_CONTROLS_USED = 8574,
+		ERROR_DS_NO_REF_DOMAIN = 8575,
+		ERROR_DS_RESERVED_LINK_ID = 8576,
+		ERROR_DS_LINK_ID_NOT_AVAILABLE = 8577,
+		ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER = 8578,
+		ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE = 8579,
+		ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC = 8580,
+		ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG = 8581,
+		ERROR_DS_MODIFYDN_WRONG_GRANDPARENT = 8582,
+		ERROR_DS_NAME_ERROR_TRUST_REFERRAL = 8583,
+		ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER = 8584,
+		ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD = 8585,
+		ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE = 8586,
+		ERROR_DS_THREAD_LIMIT_EXCEEDED = 8587,
+		ERROR_DS_NOT_CLOSEST = 8588,
+		ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF = 8589,
+		ERROR_DS_SINGLE_USER_MODE_FAILED = 8590,
+		ERROR_DS_NTDSCRIPT_SYNTAX_ERROR = 8591,
+		ERROR_DS_NTDSCRIPT_PROCESS_ERROR = 8592,
+		ERROR_DS_DIFFERENT_REPL_EPOCHS = 8593,
+		ERROR_DS_DRS_EXTENSIONS_CHANGED = 8594,
+		ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR = 8595,
+		ERROR_DS_NO_MSDS_INTID = 8596,
+		ERROR_DS_DUP_MSDS_INTID = 8597,
+		ERROR_DS_EXISTS_IN_RDNATTID = 8598,
+		ERROR_DS_AUTHORIZATION_FAILED = 8599,
+		ERROR_DS_INVALID_SCRIPT = 8600,
+		ERROR_DS_REMOTE_CROSSREF_OP_FAILED = 8601,
+		DNS_ERROR_RCODE_FORMAT_ERROR = 9001,
+		DNS_ERROR_RCODE_SERVER_FAILURE = 9002,
+		DNS_ERROR_RCODE_NAME_ERROR = 9003,
+		DNS_ERROR_RCODE_NOT_IMPLEMENTED = 9004,
+		DNS_ERROR_RCODE_REFUSED = 9005,
+		DNS_ERROR_RCODE_YXDOMAIN = 9006,
+		DNS_ERROR_RCODE_YXRRSET = 9007,
+		DNS_ERROR_RCODE_NXRRSET = 9008,
+		DNS_ERROR_RCODE_NOTAUTH = 9009,
+		DNS_ERROR_RCODE_NOTZONE = 9010,
+		DNS_ERROR_RCODE_BADSIG = 9016,
+		DNS_ERROR_RCODE_BADKEY = 9017,
+		DNS_ERROR_RCODE_BADTIME = 9018,
+		DNS_INFO_NO_RECORDS = 9501,
+		DNS_ERROR_BAD_PACKET = 9502,
+		DNS_ERROR_NO_PACKET = 9503,
+		DNS_ERROR_RCODE = 9504,
+		DNS_ERROR_UNSECURE_PACKET = 9505,
+		DNS_ERROR_INVALID_TYPE = 9551,
+		DNS_ERROR_INVALID_IP_ADDRESS = 9552,
+		DNS_ERROR_INVALID_PROPERTY = 9553,
+		DNS_ERROR_TRY_AGAIN_LATER = 9554,
+		DNS_ERROR_NOT_UNIQUE = 9555,
+		DNS_ERROR_NON_RFC_NAME = 9556,
+		DNS_STATUS_FQDN = 9557,
+		DNS_STATUS_DOTTED_NAME = 9558,
+		DNS_STATUS_SINGLE_PART_NAME = 9559,
+		DNS_ERROR_INVALID_NAME_CHAR = 9560,
+		DNS_ERROR_NUMERIC_NAME = 9561,
+		DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER = 9562,
+		DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601,
+		DNS_ERROR_NO_ZONE_INFO = 9602,
+		DNS_ERROR_INVALID_ZONE_OPERATION = 9603,
+		DNS_ERROR_ZONE_CONFIGURATION_ERROR = 9604,
+		DNS_ERROR_ZONE_HAS_NO_SOA_RECORD = 9605,
+		DNS_ERROR_ZONE_HAS_NO_NS_RECORDS = 9606,
+		DNS_ERROR_ZONE_LOCKED = 9607,
+		DNS_ERROR_ZONE_CREATION_FAILED = 9608,
+		DNS_ERROR_ZONE_ALREADY_EXISTS = 9609,
+		DNS_ERROR_AUTOZONE_ALREADY_EXISTS = 9610,
+		DNS_ERROR_INVALID_ZONE_TYPE = 9611,
+		DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP = 9612,
+		DNS_ERROR_ZONE_NOT_SECONDARY = 9613,
+		DNS_ERROR_NEED_SECONDARY_ADDRESSES = 9614,
+		DNS_ERROR_WINS_INIT_FAILED = 9615,
+		DNS_ERROR_NEED_WINS_SERVERS = 9616,
+		DNS_ERROR_NBSTAT_INIT_FAILED = 9617,
+		DNS_ERROR_SOA_DELETE_INVALID = 9618,
+		DNS_ERROR_FORWARDER_ALREADY_EXISTS = 9619,
+		DNS_ERROR_ZONE_REQUIRES_MASTER_IP = 9620,
+		DNS_ERROR_ZONE_IS_SHUTDOWN = 9621,
+		DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651,
+		DNS_ERROR_INVALID_DATAFILE_NAME = 9652,
+		DNS_ERROR_DATAFILE_OPEN_FAILURE = 9653,
+		DNS_ERROR_FILE_WRITEBACK_FAILED = 9654,
+		DNS_ERROR_DATAFILE_PARSING = 9655,
+		DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701,
+		DNS_ERROR_RECORD_FORMAT = 9702,
+		DNS_ERROR_NODE_CREATION_FAILED = 9703,
+		DNS_ERROR_UNKNOWN_RECORD_TYPE = 9704,
+		DNS_ERROR_RECORD_TIMED_OUT = 9705,
+		DNS_ERROR_NAME_NOT_IN_ZONE = 9706,
+		DNS_ERROR_CNAME_LOOP = 9707,
+		DNS_ERROR_NODE_IS_CNAME = 9708,
+		DNS_ERROR_CNAME_COLLISION = 9709,
+		DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT = 9710,
+		DNS_ERROR_RECORD_ALREADY_EXISTS = 9711,
+		DNS_ERROR_SECONDARY_DATA = 9712,
+		DNS_ERROR_NO_CREATE_CACHE_DATA = 9713,
+		DNS_ERROR_NAME_DOES_NOT_EXIST = 9714,
+		DNS_WARNING_PTR_CREATE_FAILED = 9715,
+		DNS_WARNING_DOMAIN_UNDELETED = 9716,
+		DNS_ERROR_DS_UNAVAILABLE = 9717,
+		DNS_ERROR_DS_ZONE_ALREADY_EXISTS = 9718,
+		DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE = 9719,
+		DNS_INFO_AXFR_COMPLETE = 9751,
+		DNS_ERROR_AXFR = 9752,
+		DNS_INFO_ADDED_LOCAL_WINS = 9753,
+		DNS_STATUS_CONTINUE_NEEDED = 9801,
+		DNS_ERROR_NO_TCPIP = 9851,
+		DNS_ERROR_NO_DNS_SERVERS = 9852,
+		DNS_ERROR_DP_DOES_NOT_EXIST = 9901,
+		DNS_ERROR_DP_ALREADY_EXISTS = 9902,
+		DNS_ERROR_DP_NOT_ENLISTED = 9903,
+		DNS_ERROR_DP_ALREADY_ENLISTED = 9904,
+		WSAEINTR = 10004,
+		WSAEBADF = 10009,
+		WSAEACCES = 10013,
+		WSAEFAULT = 10014,
+		WSAEINVAL = 10022,
+		WSAEMFILE = 10024,
+		WSAEWOULDBLOCK = 10035,
+		WSAEINPROGRESS = 10036,
+		WSAEALREADY = 10037,
+		WSAENOTSOCK = 10038,
+		WSAEDESTADDRREQ = 10039,
+		WSAEMSGSIZE = 10040,
+		WSAEPROTOTYPE = 10041,
+		WSAENOPROTOOPT = 10042,
+		WSAEPROTONOSUPPORT = 10043,
+		WSAESOCKTNOSUPPORT = 10044,
+		WSAEOPNOTSUPP = 10045,
+		WSAEPFNOSUPPORT = 10046,
+		WSAEAFNOSUPPORT = 10047,
+		WSAEADDRINUSE = 10048,
+		WSAEADDRNOTAVAIL = 10049,
+		WSAENETDOWN = 10050,
+		WSAENETUNREACH = 10051,
+		WSAENETRESET = 10052,
+		WSAECONNABORTED = 10053,
+		WSAECONNRESET = 10054,
+		WSAENOBUFS = 10055,
+		WSAEISCONN = 10056,
+		WSAENOTCONN = 10057,
+		WSAESHUTDOWN = 10058,
+		WSAETOOMANYREFS = 10059,
+		WSAETIMEDOUT = 10060,
+		WSAECONNREFUSED = 10061,
+		WSAELOOP = 10062,
+		WSAENAMETOOLONG = 10063,
+		WSAEHOSTDOWN = 10064,
+		WSAEHOSTUNREACH = 10065,
+		WSAENOTEMPTY = 10066,
+		WSAEPROCLIM = 10067,
+		WSAEUSERS = 10068,
+		WSAEDQUOT = 10069,
+		WSAESTALE = 10070,
+		WSAEREMOTE = 10071,
+		WSASYSNOTREADY = 10091,
+		WSAVERNOTSUPPORTED = 10092,
+		WSANOTINITIALISED = 10093,
+		WSAEDISCON = 10101,
+		WSAENOMORE = 10102,
+		WSAECANCELLED = 10103,
+		WSAEINVALIDPROCTABLE = 10104,
+		WSAEINVALIDPROVIDER = 10105,
+		WSAEPROVIDERFAILEDINIT = 10106,
+		WSASYSCALLFAILURE = 10107,
+		WSASERVICE_NOT_FOUND = 10108,
+		WSATYPE_NOT_FOUND = 10109,
+		WSA_E_NO_MORE = 10110,
+		WSA_E_CANCELLED = 10111,
+		WSAEREFUSED = 10112,
+		WSAHOST_NOT_FOUND = 11001,
+		WSATRY_AGAIN = 11002,
+		WSANO_RECOVERY = 11003,
+		WSANO_DATA = 11004,
+		WSA_QOS_RECEIVERS = 11005,
+		WSA_QOS_SENDERS = 11006,
+		WSA_QOS_NO_SENDERS = 11007,
+		WSA_QOS_NO_RECEIVERS = 11008,
+		WSA_QOS_REQUEST_CONFIRMED = 11009,
+		WSA_QOS_ADMISSION_FAILURE = 11010,
+		WSA_QOS_POLICY_FAILURE = 11011,
+		WSA_QOS_BAD_STYLE = 11012,
+		WSA_QOS_BAD_OBJECT = 11013,
+		WSA_QOS_TRAFFIC_CTRL_ERROR = 11014,
+		WSA_QOS_GENERIC_ERROR = 11015,
+		WSA_QOS_ESERVICETYPE = 11016,
+		WSA_QOS_EFLOWSPEC = 11017,
+		WSA_QOS_EPROVSPECBUF = 11018,
+		WSA_QOS_EFILTERSTYLE = 11019,
+		WSA_QOS_EFILTERTYPE = 11020,
+		WSA_QOS_EFILTERCOUNT = 11021,
+		WSA_QOS_EOBJLENGTH = 11022,
+		WSA_QOS_EFLOWCOUNT = 11023,
+		WSA_QOS_EUNKNOWNPSOBJ = 11024,
+		WSA_QOS_EPOLICYOBJ = 11025,
+		WSA_QOS_EFLOWDESC = 11026,
+		WSA_QOS_EPSFLOWSPEC = 11027,
+		WSA_QOS_EPSFILTERSPEC = 11028,
+		WSA_QOS_ESDMODEOBJ = 11029,
+		WSA_QOS_ESHAPERATEOBJ = 11030,
+		WSA_QOS_RESERVED_PETYPE = 11031,
+		ERROR_IPSEC_QM_POLICY_EXISTS = 13000,
+		ERROR_IPSEC_QM_POLICY_NOT_FOUND = 13001,
+		ERROR_IPSEC_QM_POLICY_IN_USE = 13002,
+		ERROR_IPSEC_MM_POLICY_EXISTS = 13003,
+		ERROR_IPSEC_MM_POLICY_NOT_FOUND = 13004,
+		ERROR_IPSEC_MM_POLICY_IN_USE = 13005,
+		ERROR_IPSEC_MM_FILTER_EXISTS = 13006,
+		ERROR_IPSEC_MM_FILTER_NOT_FOUND = 13007,
+		ERROR_IPSEC_TRANSPORT_FILTER_EXISTS = 13008,
+		ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND = 13009,
+		ERROR_IPSEC_MM_AUTH_EXISTS = 13010,
+		ERROR_IPSEC_MM_AUTH_NOT_FOUND = 13011,
+		ERROR_IPSEC_MM_AUTH_IN_USE = 13012,
+		ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND = 13013,
+		ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND = 13014,
+		ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND = 13015,
+		ERROR_IPSEC_TUNNEL_FILTER_EXISTS = 13016,
+		ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND = 13017,
+		ERROR_IPSEC_MM_FILTER_PENDING_DELETION = 13018,
+		ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION = 13019,
+		ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION = 13020,
+		ERROR_IPSEC_MM_POLICY_PENDING_DELETION = 13021,
+		ERROR_IPSEC_MM_AUTH_PENDING_DELETION = 13022,
+		ERROR_IPSEC_QM_POLICY_PENDING_DELETION = 13023,
+		ERROR_IPSEC_IKE_AUTH_FAIL = 13801,
+		ERROR_IPSEC_IKE_ATTRIB_FAIL = 13802,
+		ERROR_IPSEC_IKE_NEGOTIATION_PENDING = 13803,
+		ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR = 13804,
+		ERROR_IPSEC_IKE_TIMED_OUT = 13805,
+		ERROR_IPSEC_IKE_NO_CERT = 13806,
+		ERROR_IPSEC_IKE_SA_DELETED = 13807,
+		ERROR_IPSEC_IKE_SA_REAPED = 13808,
+		ERROR_IPSEC_IKE_MM_ACQUIRE_DROP = 13809,
+		ERROR_IPSEC_IKE_QM_ACQUIRE_DROP = 13810,
+		ERROR_IPSEC_IKE_QUEUE_DROP_MM = 13811,
+		ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM = 13812,
+		ERROR_IPSEC_IKE_DROP_NO_RESPONSE = 13813,
+		ERROR_IPSEC_IKE_MM_DELAY_DROP = 13814,
+		ERROR_IPSEC_IKE_QM_DELAY_DROP = 13815,
+		ERROR_IPSEC_IKE_ERROR = 13816,
+		ERROR_IPSEC_IKE_CRL_FAILED = 13817,
+		ERROR_IPSEC_IKE_INVALID_KEY_USAGE = 13818,
+		ERROR_IPSEC_IKE_INVALID_CERT_TYPE = 13819,
+		ERROR_IPSEC_IKE_NO_PRIVATE_KEY = 13820,
+		ERROR_IPSEC_IKE_DH_FAIL = 13822,
+		ERROR_IPSEC_IKE_INVALID_HEADER = 13824,
+		ERROR_IPSEC_IKE_NO_POLICY = 13825,
+		ERROR_IPSEC_IKE_INVALID_SIGNATURE = 13826,
+		ERROR_IPSEC_IKE_KERBEROS_ERROR = 13827,
+		ERROR_IPSEC_IKE_NO_PUBLIC_KEY = 13828,
+		ERROR_IPSEC_IKE_PROCESS_ERR = 13829,
+		ERROR_IPSEC_IKE_PROCESS_ERR_SA = 13830,
+		ERROR_IPSEC_IKE_PROCESS_ERR_PROP = 13831,
+		ERROR_IPSEC_IKE_PROCESS_ERR_TRANS = 13832,
+		ERROR_IPSEC_IKE_PROCESS_ERR_KE = 13833,
+		ERROR_IPSEC_IKE_PROCESS_ERR_ID = 13834,
+		ERROR_IPSEC_IKE_PROCESS_ERR_CERT = 13835,
+		ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ = 13836,
+		ERROR_IPSEC_IKE_PROCESS_ERR_HASH = 13837,
+		ERROR_IPSEC_IKE_PROCESS_ERR_SIG = 13838,
+		ERROR_IPSEC_IKE_PROCESS_ERR_NONCE = 13839,
+		ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY = 13840,
+		ERROR_IPSEC_IKE_PROCESS_ERR_DELETE = 13841,
+		ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR = 13842,
+		ERROR_IPSEC_IKE_INVALID_PAYLOAD = 13843,
+		ERROR_IPSEC_IKE_LOAD_SOFT_SA = 13844,
+		ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN = 13845,
+		ERROR_IPSEC_IKE_INVALID_COOKIE = 13846,
+		ERROR_IPSEC_IKE_NO_PEER_CERT = 13847,
+		ERROR_IPSEC_IKE_PEER_CRL_FAILED = 13848,
+		ERROR_IPSEC_IKE_POLICY_CHANGE = 13849,
+		ERROR_IPSEC_IKE_NO_MM_POLICY = 13850,
+		ERROR_IPSEC_IKE_NOTCBPRIV = 13851,
+		ERROR_IPSEC_IKE_SECLOADFAIL = 13852,
+		ERROR_IPSEC_IKE_FAILSSPINIT = 13853,
+		ERROR_IPSEC_IKE_FAILQUERYSSP = 13854,
+		ERROR_IPSEC_IKE_SRVACQFAIL = 13855,
+		ERROR_IPSEC_IKE_SRVQUERYCRED = 13856,
+		ERROR_IPSEC_IKE_GETSPIFAIL = 13857,
+		ERROR_IPSEC_IKE_INVALID_FILTER = 13858,
+		ERROR_IPSEC_IKE_OUT_OF_MEMORY = 13859,
+		ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED = 13860,
+		ERROR_IPSEC_IKE_INVALID_POLICY = 13861,
+		ERROR_IPSEC_IKE_UNKNOWN_DOI = 13862,
+		ERROR_IPSEC_IKE_INVALID_SITUATION = 13863,
+		ERROR_IPSEC_IKE_DH_FAILURE = 13864,
+		ERROR_IPSEC_IKE_INVALID_GROUP = 13865,
+		ERROR_IPSEC_IKE_ENCRYPT = 13866,
+		ERROR_IPSEC_IKE_DECRYPT = 13867,
+		ERROR_IPSEC_IKE_POLICY_MATCH = 13868,
+		ERROR_IPSEC_IKE_UNSUPPORTED_ID = 13869,
+		ERROR_IPSEC_IKE_INVALID_HASH = 13870,
+		ERROR_IPSEC_IKE_INVALID_HASH_ALG = 13871,
+		ERROR_IPSEC_IKE_INVALID_HASH_SIZE = 13872,
+		ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG = 13873,
+		ERROR_IPSEC_IKE_INVALID_AUTH_ALG = 13874,
+		ERROR_IPSEC_IKE_INVALID_SIG = 13875,
+		ERROR_IPSEC_IKE_LOAD_FAILED = 13876,
+		ERROR_IPSEC_IKE_RPC_DELETE = 13877,
+		ERROR_IPSEC_IKE_BENIGN_REINIT = 13878,
+		ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY = 13879,
+		ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881,
+		ERROR_IPSEC_IKE_MM_LIMIT = 13882,
+		ERROR_IPSEC_IKE_NEGOTIATION_DISABLED = 13883,
+		ERROR_IPSEC_IKE_NEG_STATUS_END = 13884,
+		ERROR_SXS_SECTION_NOT_FOUND = 14000,
+		ERROR_SXS_CANT_GEN_ACTCTX = 14001,
+		ERROR_SXS_INVALID_ACTCTXDATA_FORMAT = 14002,
+		ERROR_SXS_ASSEMBLY_NOT_FOUND = 14003,
+		ERROR_SXS_MANIFEST_FORMAT_ERROR = 14004,
+		ERROR_SXS_MANIFEST_PARSE_ERROR = 14005,
+		ERROR_SXS_ACTIVATION_CONTEXT_DISABLED = 14006,
+		ERROR_SXS_KEY_NOT_FOUND = 14007,
+		ERROR_SXS_VERSION_CONFLICT = 14008,
+		ERROR_SXS_WRONG_SECTION_TYPE = 14009,
+		ERROR_SXS_THREAD_QUERIES_DISABLED = 14010,
+		ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET = 14011,
+		ERROR_SXS_UNKNOWN_ENCODING_GROUP = 14012,
+		ERROR_SXS_UNKNOWN_ENCODING = 14013,
+		ERROR_SXS_INVALID_XML_NAMESPACE_URI = 14014,
+		ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14015,
+		ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14016,
+		ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE = 14017,
+		ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE = 14018,
+		ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE = 14019,
+		ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT = 14020,
+		ERROR_SXS_DUPLICATE_DLL_NAME = 14021,
+		ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME = 14022,
+		ERROR_SXS_DUPLICATE_CLSID = 14023,
+		ERROR_SXS_DUPLICATE_IID = 14024,
+		ERROR_SXS_DUPLICATE_TLBID = 14025,
+		ERROR_SXS_DUPLICATE_PROGID = 14026,
+		ERROR_SXS_DUPLICATE_ASSEMBLY_NAME = 14027,
+		ERROR_SXS_FILE_HASH_MISMATCH = 14028,
+		ERROR_SXS_POLICY_PARSE_ERROR = 14029,
+		ERROR_SXS_XML_E_MISSINGQUOTE = 14030,
+		ERROR_SXS_XML_E_COMMENTSYNTAX = 14031,
+		ERROR_SXS_XML_E_BADSTARTNAMECHAR = 14032,
+		ERROR_SXS_XML_E_BADNAMECHAR = 14033,
+		ERROR_SXS_XML_E_BADCHARINSTRING = 14034,
+		ERROR_SXS_XML_E_XMLDECLSYNTAX = 14035,
+		ERROR_SXS_XML_E_BADCHARDATA = 14036,
+		ERROR_SXS_XML_E_MISSINGWHITESPACE = 14037,
+		ERROR_SXS_XML_E_EXPECTINGTAGEND = 14038,
+		ERROR_SXS_XML_E_MISSINGSEMICOLON = 14039,
+		ERROR_SXS_XML_E_UNBALANCEDPAREN = 14040,
+		ERROR_SXS_XML_E_INTERNALERROR = 14041,
+		ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE = 14042,
+		ERROR_SXS_XML_E_INCOMPLETE_ENCODING = 14043,
+		ERROR_SXS_XML_E_MISSING_PAREN = 14044,
+		ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE = 14045,
+		ERROR_SXS_XML_E_MULTIPLE_COLONS = 14046,
+		ERROR_SXS_XML_E_INVALID_DECIMAL = 14047,
+		ERROR_SXS_XML_E_INVALID_HEXIDECIMAL = 14048,
+		ERROR_SXS_XML_E_INVALID_UNICODE = 14049,
+		ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK = 14050,
+		ERROR_SXS_XML_E_UNEXPECTEDENDTAG = 14051,
+		ERROR_SXS_XML_E_UNCLOSEDTAG = 14052,
+		ERROR_SXS_XML_E_DUPLICATEATTRIBUTE = 14053,
+		ERROR_SXS_XML_E_MULTIPLEROOTS = 14054,
+		ERROR_SXS_XML_E_INVALIDATROOTLEVEL = 14055,
+		ERROR_SXS_XML_E_BADXMLDECL = 14056,
+		ERROR_SXS_XML_E_MISSINGROOT = 14057,
+		ERROR_SXS_XML_E_UNEXPECTEDEOF = 14058,
+		ERROR_SXS_XML_E_BADPEREFINSUBSET = 14059,
+		ERROR_SXS_XML_E_UNCLOSEDSTARTTAG = 14060,
+		ERROR_SXS_XML_E_UNCLOSEDENDTAG = 14061,
+		ERROR_SXS_XML_E_UNCLOSEDSTRING = 14062,
+		ERROR_SXS_XML_E_UNCLOSEDCOMMENT = 14063,
+		ERROR_SXS_XML_E_UNCLOSEDDECL = 14064,
+		ERROR_SXS_XML_E_UNCLOSEDCDATA = 14065,
+		ERROR_SXS_XML_E_RESERVEDNAMESPACE = 14066,
+		ERROR_SXS_XML_E_INVALIDENCODING = 14067,
+		ERROR_SXS_XML_E_INVALIDSWITCH = 14068,
+		ERROR_SXS_XML_E_BADXMLCASE = 14069,
+		ERROR_SXS_XML_E_INVALID_STANDALONE = 14070,
+		ERROR_SXS_XML_E_UNEXPECTED_STANDALONE = 14071,
+		ERROR_SXS_XML_E_INVALID_VERSION = 14072,
+		ERROR_SXS_XML_E_MISSINGEQUALS = 14073,
+		ERROR_SXS_PROTECTION_RECOVERY_FAILED = 14074,
+		ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT = 14075,
+		ERROR_SXS_PROTECTION_CATALOG_NOT_VALID = 14076,
+		ERROR_SXS_UNTRANSLATABLE_HRESULT = 14077,
+		ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING = 14078,
+		ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE = 14079,
+		ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME = 14080 */
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.IO/SearchPattern.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.IO/SearchPattern.cs
@@ -1,196 +1,196 @@
-//
-// System.IO.SearchPattern.cs: Filename glob support.
-//
-// Author:
-//   Dan Lewis (dihlewis@yahoo.co.uk)
-//
-// (C) 2002
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace System.IO {
-
-	// FIXME: there's a complication with this algorithm under windows.
-	// the pattern '*.*' matches all files (i think . matches the extension),
-	// whereas under UNIX it should only match files containing the '.' character.
-
-	class SearchPattern
-	{
-/*		
-		public SearchPattern (string pattern) : this (pattern, false) { }
-
-		public SearchPattern (string pattern, bool ignore)
-		{
-			this.ignore = ignore;
-			Compile (pattern);
-		}
-
-		public bool IsMatch (string text)
-		{
-			return Match (ops, text, 0);
-		}
-
-		// private
-
-		private Op ops;		// the compiled pattern
-		private bool ignore;	// ignore case
-
-		private void Compile (string pattern)
-		{
-			if (pattern == null || pattern.IndexOfAny (InvalidChars) >= 0)
-				throw new ArgumentException ("Invalid search pattern.");
-
-			if (pattern == "*") {	// common case
-				ops = new Op (OpCode.True);
-				return;
-			}
-
-			ops = null;
-
-			int ptr = 0;
-			Op last_op = null;
-			while (ptr < pattern.Length) {
-				Op op;
-			
-				switch (pattern [ptr]) {
-				case '?':
-					op = new Op (OpCode.AnyChar);
-					++ ptr;
-					break;
-
-				case '*':
-					op = new Op (OpCode.AnyString);
-					++ ptr;
-					break;
-					
-				default:
-					op = new Op (OpCode.ExactString);
-					int end = pattern.IndexOfAny (WildcardChars, ptr);
-					if (end < 0)
-						end = pattern.Length;
-
-					op.Argument = pattern.Substring (ptr, end - ptr);
-					if (ignore)
-						op.Argument = op.Argument.ToLowerInvariant ();
-
-					ptr = end;
-					break;
-				}
-
-				if (last_op == null)
-					ops = op;
-				else
-					last_op.Next = op;
-
-				last_op = op;
-			}
-
-			if (last_op == null)
-				ops = new Op (OpCode.End);
-			else
-				last_op.Next = new Op (OpCode.End);
-		}
-
-		private bool Match (Op op, string text, int ptr)
-		{
-			while (op != null) {
-				switch (op.Code) {
-				case OpCode.True:
-					return true;
-
-				case OpCode.End:
-					if (ptr == text.Length)
-						return true;
-
-					return false;
-				
-				case OpCode.ExactString:
-					int length = op.Argument.Length;
-					if (ptr + length > text.Length)
-						return false;
-
-					string str = text.Substring (ptr, length);
-					if (ignore)
-						str = str.ToLowerInvariant ();
-
-					if (str != op.Argument)
-						return false;
-
-					ptr += length;
-					break;
-
-				case OpCode.AnyChar:
-					if (++ ptr > text.Length)
-						return false;
-					break;
-
-				case OpCode.AnyString:
-					while (ptr <= text.Length) {
-						if (Match (op.Next, text, ptr))
-							return true;
-
-						++ ptr;
-					}
-
-					return false;
-				}
-
-				op = op.Next;
-			}
-
-			return true;
-		}
-
-		// private static
-*/
-		internal static readonly char [] WildcardChars = { '*', '?' };
-/*		
-		internal static readonly char [] InvalidChars = { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar };
-
-		private class Op {
-			public Op (OpCode code)
-			{
-				this.Code = code;
-				this.Argument = null;
-				this.Next = null;
-			}
-		
-			public OpCode Code;
-			public string Argument;
-			public Op Next;
-		}
-
-		private enum OpCode {
-			ExactString,		// literal
-			AnyChar,		// ?
-			AnyString,		// *
-			End,			// end of pattern
-			True			// always succeeds
-		};
-*/
-	}
-}
+//
+// System.IO.SearchPattern.cs: Filename glob support.
+//
+// Author:
+//   Dan Lewis (dihlewis@yahoo.co.uk)
+//
+// (C) 2002
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace System.IO {
+
+	// FIXME: there's a complication with this algorithm under windows.
+	// the pattern '*.*' matches all files (i think . matches the extension),
+	// whereas under UNIX it should only match files containing the '.' character.
+
+	class SearchPattern
+	{
+/*		
+		public SearchPattern (string pattern) : this (pattern, false) { }
+
+		public SearchPattern (string pattern, bool ignore)
+		{
+			this.ignore = ignore;
+			Compile (pattern);
+		}
+
+		public bool IsMatch (string text)
+		{
+			return Match (ops, text, 0);
+		}
+
+		// private
+
+		private Op ops;		// the compiled pattern
+		private bool ignore;	// ignore case
+
+		private void Compile (string pattern)
+		{
+			if (pattern == null || pattern.IndexOfAny (InvalidChars) >= 0)
+				throw new ArgumentException ("Invalid search pattern.");
+
+			if (pattern == "*") {	// common case
+				ops = new Op (OpCode.True);
+				return;
+			}
+
+			ops = null;
+
+			int ptr = 0;
+			Op last_op = null;
+			while (ptr < pattern.Length) {
+				Op op;
+			
+				switch (pattern [ptr]) {
+				case '?':
+					op = new Op (OpCode.AnyChar);
+					++ ptr;
+					break;
+
+				case '*':
+					op = new Op (OpCode.AnyString);
+					++ ptr;
+					break;
+					
+				default:
+					op = new Op (OpCode.ExactString);
+					int end = pattern.IndexOfAny (WildcardChars, ptr);
+					if (end < 0)
+						end = pattern.Length;
+
+					op.Argument = pattern.Substring (ptr, end - ptr);
+					if (ignore)
+						op.Argument = op.Argument.ToLowerInvariant ();
+
+					ptr = end;
+					break;
+				}
+
+				if (last_op == null)
+					ops = op;
+				else
+					last_op.Next = op;
+
+				last_op = op;
+			}
+
+			if (last_op == null)
+				ops = new Op (OpCode.End);
+			else
+				last_op.Next = new Op (OpCode.End);
+		}
+
+		private bool Match (Op op, string text, int ptr)
+		{
+			while (op != null) {
+				switch (op.Code) {
+				case OpCode.True:
+					return true;
+
+				case OpCode.End:
+					if (ptr == text.Length)
+						return true;
+
+					return false;
+				
+				case OpCode.ExactString:
+					int length = op.Argument.Length;
+					if (ptr + length > text.Length)
+						return false;
+
+					string str = text.Substring (ptr, length);
+					if (ignore)
+						str = str.ToLowerInvariant ();
+
+					if (str != op.Argument)
+						return false;
+
+					ptr += length;
+					break;
+
+				case OpCode.AnyChar:
+					if (++ ptr > text.Length)
+						return false;
+					break;
+
+				case OpCode.AnyString:
+					while (ptr <= text.Length) {
+						if (Match (op.Next, text, ptr))
+							return true;
+
+						++ ptr;
+					}
+
+					return false;
+				}
+
+				op = op.Next;
+			}
+
+			return true;
+		}
+
+		// private static
+*/
+		internal static readonly char [] WildcardChars = { '*', '?' };
+/*		
+		internal static readonly char [] InvalidChars = { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar };
+
+		private class Op {
+			public Op (OpCode code)
+			{
+				this.Code = code;
+				this.Argument = null;
+				this.Next = null;
+			}
+		
+			public OpCode Code;
+			public string Argument;
+			public Op Next;
+		}
+
+		private enum OpCode {
+			ExactString,		// literal
+			AnyChar,		// ?
+			AnyString,		// *
+			End,			// end of pattern
+			True			// always succeeds
+		};
+*/
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Runtime.Remoting.Messaging/EnvoyTerminatorSink.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Runtime.Remoting.Messaging/EnvoyTerminatorSink.cs
@@ -4,7 +4,7 @@
 // Author: Lluis Sanchez Gual (lluis@ideary.com)
 //
 // (C) 2003, Lluis Sanchez Gual
-//
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -28,17 +28,17 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-using System.Threading;
-
-namespace System.Runtime.Remoting.Messaging
-{
-	[Serializable]
-	internal class EnvoyTerminatorSink: IMessageSink
-	{
-		public static EnvoyTerminatorSink Instance = new EnvoyTerminatorSink();
-
+
+using System;
+using System.Threading;
+
+namespace System.Runtime.Remoting.Messaging
+{
+	[Serializable]
+	internal class EnvoyTerminatorSink: IMessageSink
+	{
+		public static EnvoyTerminatorSink Instance = new EnvoyTerminatorSink();
+
 		public IMessage SyncProcessMessage (IMessage msg)
 		{
 			return Thread.CurrentContext.GetClientContextSinkChain ().SyncProcessMessage (msg);
@@ -52,6 +52,6 @@ namespace System.Runtime.Remoting.Messag
 		public IMessageSink NextSink 
 		{ 
 			get { return null; }
-		}
-	}
-}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Runtime.Remoting.Messaging/Header.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Runtime.Remoting.Messaging/Header.cs
@@ -1,11 +1,11 @@
-//
-// System.Runtime.Remoting.Messaging.Header.cs
-//
-// Author:
-//   Dan Lewis (dihlewis@yahoo.co.uk)
-//
-// (C) 2002
-//
+//
+// System.Runtime.Remoting.Messaging.Header.cs
+//
+// Author:
+//   Dan Lewis (dihlewis@yahoo.co.uk)
+//
+// (C) 2002
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -29,39 +29,39 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System.Collections;
-
-namespace System.Runtime.Remoting.Messaging {
-
-	[Serializable]
-	[System.Runtime.InteropServices.ComVisible (true)]
-	public class Header {
-		public Header (string _Name, object _Value) :
-			this (_Name, _Value, true)
-		{
-		}
-
-		public Header (string _Name, object _Value, bool _MustUnderstand) :
-			this (_Name, _Value, _MustUnderstand, null)
-		{
-		}
-
-		public Header (string _Name, object _Value, bool _MustUnderstand, string _HeaderNamespace) {
-			this.Name = _Name;
-			this.Value = _Value;
-			this.MustUnderstand = _MustUnderstand;
-			this.HeaderNamespace = _HeaderNamespace;
-		}
-
-		// fields
-
-		public string HeaderNamespace;
-
-		public bool MustUnderstand;
-
-		public string Name;
-
-		public object Value;
-	}
-}
+
+using System.Collections;
+
+namespace System.Runtime.Remoting.Messaging {
+
+	[Serializable]
+	[System.Runtime.InteropServices.ComVisible (true)]
+	public class Header {
+		public Header (string _Name, object _Value) :
+			this (_Name, _Value, true)
+		{
+		}
+
+		public Header (string _Name, object _Value, bool _MustUnderstand) :
+			this (_Name, _Value, _MustUnderstand, null)
+		{
+		}
+
+		public Header (string _Name, object _Value, bool _MustUnderstand, string _HeaderNamespace) {
+			this.Name = _Name;
+			this.Value = _Value;
+			this.MustUnderstand = _MustUnderstand;
+			this.HeaderNamespace = _HeaderNamespace;
+		}
+
+		// fields
+
+		public string HeaderNamespace;
+
+		public bool MustUnderstand;
+
+		public string Name;
+
+		public object Value;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Runtime.Remoting.Messaging/RemotingSurrogate.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Runtime.Remoting.Messaging/RemotingSurrogate.cs
@@ -34,45 +34,45 @@ using System.Runtime.Remoting;
 using System.Runtime.Remoting.Proxies;
 using System.Runtime.Serialization;
 
-namespace System.Runtime.Remoting.Messaging 
+namespace System.Runtime.Remoting.Messaging 
 {
-	internal class RemotingSurrogate : ISerializationSurrogate
-	{
-		public virtual void GetObjectData(Object obj, SerializationInfo si, StreamingContext sc)
-		{               
-			if (null == obj || null == si)
-				throw new ArgumentNullException();
-
-			if (RemotingServices.IsTransparentProxy (obj) )
-			{
-				RealProxy rp = RemotingServices.GetRealProxy (obj);
-				rp.GetObjectData (si, sc);
-			} else RemotingServices.GetObjectData (obj, si, sc);
-		}
-
-		public virtual Object  SetObjectData(Object obj, SerializationInfo si, StreamingContext sc, ISurrogateSelector selector)
-		{ 
-			throw new NotSupportedException();
-		}
+	internal class RemotingSurrogate : ISerializationSurrogate
+	{
+		public virtual void GetObjectData(Object obj, SerializationInfo si, StreamingContext sc)
+		{               
+			if (null == obj || null == si)
+				throw new ArgumentNullException();
+
+			if (RemotingServices.IsTransparentProxy (obj) )
+			{
+				RealProxy rp = RemotingServices.GetRealProxy (obj);
+				rp.GetObjectData (si, sc);
+			} else RemotingServices.GetObjectData (obj, si, sc);
+		}
+
+		public virtual Object  SetObjectData(Object obj, SerializationInfo si, StreamingContext sc, ISurrogateSelector selector)
+		{ 
+			throw new NotSupportedException();
+		}
 	}
 
-	internal class ObjRefSurrogate : ISerializationSurrogate
-	{
-		public virtual void GetObjectData(Object obj, SerializationInfo si, StreamingContext sc)
-		{               
-			if (null == obj || null == si)
-				throw new ArgumentNullException();
-			
-			((ObjRef) obj).GetObjectData (si, sc);
-
-			// added to support same syntax as MS
-			si.AddValue("fIsMarshalled", 0);            
-		}
-
-		public virtual Object SetObjectData(Object obj, SerializationInfo si, StreamingContext sc, ISurrogateSelector selector)
-		{ 
+	internal class ObjRefSurrogate : ISerializationSurrogate
+	{
+		public virtual void GetObjectData(Object obj, SerializationInfo si, StreamingContext sc)
+		{               
+			if (null == obj || null == si)
+				throw new ArgumentNullException();
+			
+			((ObjRef) obj).GetObjectData (si, sc);
+
+			// added to support same syntax as MS
+			si.AddValue("fIsMarshalled", 0);            
+		}
+
+		public virtual Object SetObjectData(Object obj, SerializationInfo si, StreamingContext sc, ISurrogateSelector selector)
+		{ 
 			// ObjRef is deserialized using the IObjectReference interface
 			throw new NotSupportedException ("Do not use RemotingSurrogateSelector when deserializating");
-		}
+		}
 	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Runtime.Remoting.Services/TrackingServices.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Runtime.Remoting.Services/TrackingServices.cs
@@ -68,60 +68,60 @@ namespace System.Runtime.Remoting.Servic
 				_handlers.RemoveAt(idx);
 			}
 		}
-    
-		public static ITrackingHandler[] RegisteredHandlers {
-			get {
-				lock (_handlers.SyncRoot) {
-					if (_handlers.Count == 0)
-						return new ITrackingHandler[0];
-
-
-					return (ITrackingHandler[]) _handlers.ToArray (typeof(ITrackingHandler));
-				}
-			}
-		}
-
+    
+		public static ITrackingHandler[] RegisteredHandlers {
+			get {
+				lock (_handlers.SyncRoot) {
+					if (_handlers.Count == 0)
+						return new ITrackingHandler[0];
+
+
+					return (ITrackingHandler[]) _handlers.ToArray (typeof(ITrackingHandler));
+				}
+			}
+		}
+
 		internal static void NotifyMarshaledObject(Object obj, ObjRef or)
-		{
+		{
 			ITrackingHandler[] handlers;
-			
+			
 			lock (_handlers.SyncRoot) {
 				if (_handlers.Count == 0) return;
 				handlers = (ITrackingHandler[]) _handlers.ToArray (typeof(ITrackingHandler));
 			}
-			
-			for(int i = 0; i < handlers.Length; i++) {
-				handlers[i].MarshaledObject (obj, or);
-			}
-		}
-    
+			
+			for(int i = 0; i < handlers.Length; i++) {
+				handlers[i].MarshaledObject (obj, or);
+			}
+		}
+    
 		internal static void NotifyUnmarshaledObject(Object obj, ObjRef or)
-		{
+		{
 			ITrackingHandler[] handlers;
-			
+			
 			lock (_handlers.SyncRoot) {
 				if (_handlers.Count == 0) return;
 				handlers = (ITrackingHandler[]) _handlers.ToArray (typeof(ITrackingHandler));
 			}
-			
-			for(int i = 0; i < handlers.Length; i++) {
-				handlers[i].UnmarshaledObject (obj, or);
-			}
-		}
-
+			
+			for(int i = 0; i < handlers.Length; i++) {
+				handlers[i].UnmarshaledObject (obj, or);
+			}
+		}
+
 		internal static void NotifyDisconnectedObject(Object obj)
-		{
+		{
 			ITrackingHandler[] handlers;
-			
+			
 			lock (_handlers.SyncRoot) {
 				if (_handlers.Count == 0) return;
 				handlers = (ITrackingHandler[]) _handlers.ToArray (typeof(ITrackingHandler));
 			}
-			
-			for(int i = 0; i < handlers.Length; i++) {
-				handlers[i].DisconnectedObject (obj);
-			}
-		}
+			
+			for(int i = 0; i < handlers.Length; i++) {
+				handlers[i].DisconnectedObject (obj);
+			}
+		}
 	}
 }
 
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Runtime.Remoting/EnvoyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Runtime.Remoting/EnvoyInfo.cs
@@ -4,7 +4,7 @@
 // Author: Lluis Sanchez Gual (lluis@ideary.com)
 //
 // (C) 2002, Lluis Sanchez Gual
-//
+//
 
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
@@ -28,26 +28,26 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
+
+using System;
 using System.Runtime.Remoting.Messaging;
-
-namespace System.Runtime.Remoting
-{
-	[Serializable]
-	internal class EnvoyInfo: IEnvoyInfo
-	{
-		IMessageSink envoySinks;
-
-		public EnvoyInfo (IMessageSink sinks)
-		{
-			envoySinks = sinks;
-		}
-
-		public IMessageSink EnvoySinks 
-		{ 
-			get { return envoySinks; }
-			set { envoySinks = value; }
-		}
-	}
-}
+
+namespace System.Runtime.Remoting
+{
+	[Serializable]
+	internal class EnvoyInfo: IEnvoyInfo
+	{
+		IMessageSink envoySinks;
+
+		public EnvoyInfo (IMessageSink sinks)
+		{
+			envoySinks = sinks;
+		}
+
+		public IMessageSink EnvoySinks 
+		{ 
+			get { return envoySinks; }
+			set { envoySinks = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Security.Permissions/IUnrestrictedPermission.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Security.Permissions/IUnrestrictedPermission.cs
@@ -1,10 +1,10 @@
-//
-// System.Security.Permissions.IUnrestrictedPermission.cs
-//
-// Author:
-//   Nick Drochak(ndrochak@gol.com)
-//
-// (C) Nick Drochak
+//
+// System.Security.Permissions.IUnrestrictedPermission.cs
+//
+// Author:
+//   Nick Drochak(ndrochak@gol.com)
+//
+// (C) Nick Drochak
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -28,11 +28,11 @@
 //
 
 using System.Runtime.InteropServices;
-
-namespace System.Security.Permissions {
-
+
+namespace System.Security.Permissions {
+
 	[ComVisible (true)]
-	public interface IUnrestrictedPermission {
-		bool IsUnrestricted ();
-	}
-}
+	public interface IUnrestrictedPermission {
+		bool IsUnrestricted ();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Security.Policy/ApplicationDirectoryMembershipCondition.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Security.Policy/ApplicationDirectoryMembershipCondition.cs
@@ -1,12 +1,12 @@
 //
-// System.Security.Policy.ApplicationDirectoryMembershipCondition
-//
-// Authors:
-//	Nick Drochak (ndrochak@gol.com)
-//	Jackson Harper (Jackson@LatitudeGeo.com)
+// System.Security.Policy.ApplicationDirectoryMembershipCondition
+//
+// Authors:
+//	Nick Drochak (ndrochak@gol.com)
+//	Jackson Harper (Jackson@LatitudeGeo.com)
 //	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2002 Nick Drochak, All rights reserved.
+//
+// (C) 2002 Nick Drochak, All rights reserved.
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -36,12 +36,12 @@ using System.Reflection;
 using System.Runtime.InteropServices;
 
 using Mono.Security;
-
-namespace System.Security.Policy {
-
-	[Serializable]
+
+namespace System.Security.Policy {
+
+	[Serializable]
 	[ComVisible (true)]
-	public sealed class ApplicationDirectoryMembershipCondition : IConstantMembershipCondition, IMembershipCondition {
+	public sealed class ApplicationDirectoryMembershipCondition : IConstantMembershipCondition, IMembershipCondition {
 
 		private readonly int version = 1;
 
@@ -49,11 +49,11 @@ namespace System.Security.Policy {
 		{
 		}
 
-		// Methods
-		public bool Check (Evidence evidence)
-		{
-			if (evidence == null)
-				return false;
+		// Methods
+		public bool Check (Evidence evidence)
+		{
+			if (evidence == null)
+				return false;
 
 			string codebase = Assembly.GetCallingAssembly ().CodeBase;
 			Uri local = new Uri (codebase);
@@ -65,8 +65,8 @@ namespace System.Security.Policy {
 			IEnumerator e = evidence.GetHostEnumerator ();
 			while (e.MoveNext ()) {
 				object o = e.Current;
-
-				if (!adir && (o is ApplicationDirectory)) {
+
+				if (!adir && (o is ApplicationDirectory)) {
 					ApplicationDirectory ad = (o as ApplicationDirectory);
 					string s = ad.Directory;
 					adir = (String.Compare (s, 0, local.ToString (), 0, s.Length, true, CultureInfo.InvariantCulture) == 0);
@@ -77,53 +77,53 @@ namespace System.Security.Policy {
 
 				// got both ?
 				if (adir && url)
-					return true;
-			}
-			return false;
-		}
-
-		public IMembershipCondition Copy () 
-		{ 
-			return new ApplicationDirectoryMembershipCondition ();
-		}
-		
-		public override bool Equals (object o) 
-		{ 
-			return (o is ApplicationDirectoryMembershipCondition); 
-		}
-		
-		public void FromXml (SecurityElement e)
-		{
-			FromXml (e, null);
-		}
-		
-		public void FromXml (SecurityElement e, PolicyLevel level)
-		{
+					return true;
+			}
+			return false;
+		}
+
+		public IMembershipCondition Copy () 
+		{ 
+			return new ApplicationDirectoryMembershipCondition ();
+		}
+		
+		public override bool Equals (object o) 
+		{ 
+			return (o is ApplicationDirectoryMembershipCondition); 
+		}
+		
+		public void FromXml (SecurityElement e)
+		{
+			FromXml (e, null);
+		}
+		
+		public void FromXml (SecurityElement e, PolicyLevel level)
+		{
 			MembershipConditionHelper.CheckSecurityElement (e, "e", version, version);
-		}
-		
-		// All instances of ApplicationDirectoryMembershipCondition are equal so they should
-		// have the same hashcode
-		public override int GetHashCode () 
-		{ 
-			return typeof (ApplicationDirectoryMembershipCondition).GetHashCode ();
-		}
-		
-		public override string ToString () 
-		{ 
-			return "ApplicationDirectory";
-		}
-		
-		public SecurityElement ToXml () 
-		{ 
-			return ToXml (null);
-		}
-		
-		public SecurityElement ToXml (PolicyLevel level) 
-		{
+		}
+		
+		// All instances of ApplicationDirectoryMembershipCondition are equal so they should
+		// have the same hashcode
+		public override int GetHashCode () 
+		{ 
+			return typeof (ApplicationDirectoryMembershipCondition).GetHashCode ();
+		}
+		
+		public override string ToString () 
+		{ 
+			return "ApplicationDirectory";
+		}
+		
+		public SecurityElement ToXml () 
+		{ 
+			return ToXml (null);
+		}
+		
+		public SecurityElement ToXml (PolicyLevel level) 
+		{
 			SecurityElement se = MembershipConditionHelper.Element (typeof (ApplicationDirectoryMembershipCondition), version);
 			// nothing to add
 			return se;
 		}
-	}
-}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Security.Policy/IIdentityPermissionFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Security.Policy/IIdentityPermissionFactory.cs
@@ -1,9 +1,9 @@
 //
-// System.Security.Policy.IIdentityPermissionFactory
-//
-// Nick Drochak (ndrochak@gol.com)
-//
-// (C) 2001 Nick Drochak
+// System.Security.Policy.IIdentityPermissionFactory
+//
+// Nick Drochak (ndrochak@gol.com)
+//
+// (C) 2001 Nick Drochak
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,12 +27,12 @@
 //
 
 using System.Runtime.InteropServices;
-
+
 namespace System.Security.Policy {
-
+
 	[ComVisible (true)]
 	public interface IIdentityPermissionFactory {
-
-		IPermission CreateIdentityPermission(Evidence evidence);
-	}
-}
+
+		IPermission CreateIdentityPermission(Evidence evidence);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Security.Policy/IMembershipCondition.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Security.Policy/IMembershipCondition.cs
@@ -1,9 +1,9 @@
 //
-// System.Security.Policy.IMembershipCondition.cs
-//
-// Nick Drochak (ndrochak@gol.com)
-//
-// (C) 2001 Nick Drochak
+// System.Security.Policy.IMembershipCondition.cs
+//
+// Nick Drochak (ndrochak@gol.com)
+//
+// (C) 2001 Nick Drochak
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,15 +27,15 @@
 //
 
 using System.Runtime.InteropServices;
-
-namespace System.Security.Policy {
+
+namespace System.Security.Policy {
 
 	[ComVisible (true)]
-	public interface IMembershipCondition : ISecurityEncodable, ISecurityPolicyEncodable {
+	public interface IMembershipCondition : ISecurityEncodable, ISecurityPolicyEncodable {
 
-		bool Check (Evidence evidence);
-		IMembershipCondition Copy ();
-		bool Equals (object obj);
-		string ToString ();
-	}
-}
+		bool Check (Evidence evidence);
+		IMembershipCondition Copy ();
+		bool Equals (object obj);
+		string ToString ();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Security.Policy/PermissionRequestEvidence.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Security.Policy/PermissionRequestEvidence.cs
@@ -1,11 +1,11 @@
-//
-// System.Security.Policy.PermissionRequestEvidence.cs
-//
-// Authors:
-//      Nick Drochak (ndrochak@gol.com)
+//
+// System.Security.Policy.PermissionRequestEvidence.cs
+//
+// Authors:
+//      Nick Drochak (ndrochak@gol.com)
 //	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Nick Drochak
+//
+// (C) 2003 Nick Drochak
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,97 +29,97 @@
 //
 
 using System.Runtime.InteropServices;
-
+
 namespace System.Security.Policy {
-
-	[Serializable]
+
+	[Serializable]
 	[ComVisible (true)]
-	public sealed class PermissionRequestEvidence :
-		EvidenceBase,
+	public sealed class PermissionRequestEvidence :
+		EvidenceBase,
 		IBuiltInEvidence {
-
-		private PermissionSet requested, optional, denied;
-
+
+		private PermissionSet requested, optional, denied;
+
 		public PermissionRequestEvidence (PermissionSet request, PermissionSet optional, PermissionSet denied) 
 		{
-			if (request != null)
+			if (request != null)
 				this.requested = new PermissionSet (request);
-			if (optional != null)
+			if (optional != null)
 				this.optional = new PermissionSet (optional);
-			if (denied != null)
-				this.denied = new PermissionSet (denied);
-		}
-
-		public PermissionSet DeniedPermissions {
-			get { return denied; }
-		}
-
-		public PermissionSet OptionalPermissions {
-			get { return optional; }
-		}
-
-		public PermissionSet RequestedPermissions {
-			get { return requested; }
-		}
-
-		public PermissionRequestEvidence Copy ()
-		{
-			return new PermissionRequestEvidence (requested, optional, denied);
-		}
-
-		public override string ToString () 
-		{
-			SecurityElement se = new SecurityElement ("System.Security.Policy.PermissionRequestEvidence");
-			se.AddAttribute ("version", "1");
-
-			if (requested != null) {
-				SecurityElement requestElement = new SecurityElement ("Request");
-				requestElement.AddChild (requested.ToXml ());
-				se.AddChild (requestElement);
-			}
-			if (optional != null) {
-				SecurityElement optionalElement = new SecurityElement ("Optional");
-				optionalElement.AddChild (optional.ToXml ());
-				se.AddChild (optionalElement);
-			}
-			if (denied != null) {
-				SecurityElement deniedElement = new SecurityElement ("Denied");
-				deniedElement.AddChild (denied.ToXml ());
-				se.AddChild (deniedElement);
-			}
-			return se.ToString ();
-		}
-
-		// interface IBuiltInEvidence
-
-		int IBuiltInEvidence.GetRequiredSize (bool verbose) 
+			if (denied != null)
+				this.denied = new PermissionSet (denied);
+		}
+
+		public PermissionSet DeniedPermissions {
+			get { return denied; }
+		}
+
+		public PermissionSet OptionalPermissions {
+			get { return optional; }
+		}
+
+		public PermissionSet RequestedPermissions {
+			get { return requested; }
+		}
+
+		public PermissionRequestEvidence Copy ()
+		{
+			return new PermissionRequestEvidence (requested, optional, denied);
+		}
+
+		public override string ToString () 
+		{
+			SecurityElement se = new SecurityElement ("System.Security.Policy.PermissionRequestEvidence");
+			se.AddAttribute ("version", "1");
+
+			if (requested != null) {
+				SecurityElement requestElement = new SecurityElement ("Request");
+				requestElement.AddChild (requested.ToXml ());
+				se.AddChild (requestElement);
+			}
+			if (optional != null) {
+				SecurityElement optionalElement = new SecurityElement ("Optional");
+				optionalElement.AddChild (optional.ToXml ());
+				se.AddChild (optionalElement);
+			}
+			if (denied != null) {
+				SecurityElement deniedElement = new SecurityElement ("Denied");
+				deniedElement.AddChild (denied.ToXml ());
+				se.AddChild (deniedElement);
+			}
+			return se.ToString ();
+		}
+
+		// interface IBuiltInEvidence
+
+		int IBuiltInEvidence.GetRequiredSize (bool verbose) 
 		{
 			int size = verbose ? 3 : 1;
 			if (requested != null) {
 				int r = requested.ToXml ().ToString ().Length + (verbose ? 5 : 0);
 				size += r;
-			}
+			}
 			if (optional != null) {
 				int o = optional.ToXml ().ToString ().Length + (verbose ? 5 : 0);
 				size += o;
-			}
+			}
 			if (denied != null) {
 				int d = denied.ToXml ().ToString ().Length + (verbose ? 5 : 0);
 				size += d;
-			}
-			return size;
-		}
-
-		[MonoTODO ("IBuiltInEvidence")]
-		int IBuiltInEvidence.InitFromBuffer (char [] buffer, int position) 
-		{
-			return 0;
-		}
-
-		[MonoTODO ("IBuiltInEvidence")]
-		int IBuiltInEvidence.OutputToBuffer (char [] buffer, int position, bool verbose) 
-		{
-			return 0;
-		}
-	}
+			}
+			return size;
+		}
+
+		[MonoTODO ("IBuiltInEvidence")]
+		int IBuiltInEvidence.InitFromBuffer (char [] buffer, int position) 
+		{
+			return 0;
+		}
+
+		[MonoTODO ("IBuiltInEvidence")]
+		int IBuiltInEvidence.OutputToBuffer (char [] buffer, int position, bool verbose) 
+		{
+			return 0;
+		}
+	}
 }
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/System.Security.Policy/PolicyStatement.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/System.Security.Policy/PolicyStatement.cs
@@ -1,11 +1,11 @@
-//
-// System.Security.Policy.PolicyStatement.cs
-//
-// Authors:
-//	Dan Lewis (dihlewis@yahoo.co.uk)
+//
+// System.Security.Policy.PolicyStatement.cs
+//
+// Authors:
+//	Dan Lewis (dihlewis@yahoo.co.uk)
 //	Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2002
+//
+// (C) 2002
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -27,46 +27,46 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
+
 using System.Runtime.InteropServices;
-using System.Security.Permissions;
-
-namespace System.Security.Policy {
-
-	[Serializable]
+using System.Security.Permissions;
+
+namespace System.Security.Policy {
+
+	[Serializable]
 	[ComVisible (true)]
 	public sealed class PolicyStatement : ISecurityEncodable, ISecurityPolicyEncodable {
 
-		private PermissionSet perms;
-		private PolicyStatementAttribute attrs;
-
+		private PermissionSet perms;
+		private PolicyStatementAttribute attrs;
+
 		public PolicyStatement (PermissionSet permSet) :
-			this (permSet, PolicyStatementAttribute.Nothing)
+			this (permSet, PolicyStatementAttribute.Nothing)
 		{
-		}
-
+		}
+
 		public PolicyStatement (PermissionSet permSet, PolicyStatementAttribute attributes) 
-		{
-			if (permSet != null) {
+		{
+			if (permSet != null) {
 				this.perms = permSet.Copy ();
 				this.perms.SetReadOnly (true);
-			}
-			this.attrs = attributes;
-		}
-		
-		public PermissionSet PermissionSet {
+			}
+			this.attrs = attributes;
+		}
+		
+		public PermissionSet PermissionSet {
 			get {
 				if (perms == null) {
 					perms = new PermissionSet (PermissionState.None);
 					perms.SetReadOnly (true);
 				}
 				return perms;
-			}
-			set { perms = value; }
-		}
-		
-		public PolicyStatementAttribute Attributes {
-			get { return attrs; }
+			}
+			set { perms = value; }
+		}
+		
+		public PolicyStatementAttribute Attributes {
+			get { return attrs; }
 			set {
 				// note: yes it's a flag but all possible values have a corresponding name
 				switch (value) {
@@ -80,10 +80,10 @@ namespace System.Security.Policy {
 					string msg = Locale.GetText ("Invalid value for {0}.");
 					throw new ArgumentException (String.Format (msg, "PolicyStatementAttribute"));
 				}
-			}
-		}
-
-		public string AttributeString {
+			}
+		}
+
+		public string AttributeString {
 			get {
 				switch (attrs) {
 				case PolicyStatementAttribute.Exclusive:
@@ -95,55 +95,55 @@ namespace System.Security.Policy {
 				default:
 					return String.Empty;
 				}
-			}
-		}
-
-		public PolicyStatement Copy ()
-		{
-			return new PolicyStatement (perms, attrs);
-		}
-
-		// ISecurityEncodable
-
-		public void FromXml (SecurityElement et)
-		{
-			FromXml (et, null);
-		}
-
-		public void FromXml (SecurityElement et, PolicyLevel level)
+			}
+		}
+
+		public PolicyStatement Copy ()
+		{
+			return new PolicyStatement (perms, attrs);
+		}
+
+		// ISecurityEncodable
+
+		public void FromXml (SecurityElement et)
+		{
+			FromXml (et, null);
+		}
+
+		public void FromXml (SecurityElement et, PolicyLevel level)
 		{
 			if (et == null)
 				throw new ArgumentNullException ("et");
 			if (et.Tag != "PolicyStatement")
 				throw new ArgumentException (Locale.GetText ("Invalid tag."));
-
-
-			string attributes = et.Attribute ("Attributes");
-			if (attributes != null) {
-				attrs = (PolicyStatementAttribute) Enum.Parse (
-					typeof (PolicyStatementAttribute), attributes);
+
+
+			string attributes = et.Attribute ("Attributes");
+			if (attributes != null) {
+				attrs = (PolicyStatementAttribute) Enum.Parse (
+					typeof (PolicyStatementAttribute), attributes);
 			}
-
-			SecurityElement permissions = et.SearchForChildByTag ("PermissionSet");
-			PermissionSet.FromXml (permissions);
-		}
-		
-		public SecurityElement ToXml ()
-		{
-			return ToXml (null);
-		}
-
-		public SecurityElement ToXml (PolicyLevel level)
-		{
-			SecurityElement element = new SecurityElement ("PolicyStatement");
-			element.AddAttribute ("version", "1");
-
-			if (attrs != PolicyStatementAttribute.Nothing)
-				element.AddAttribute ("Attributes", attrs.ToString ());
-			
-			element.AddChild (PermissionSet.ToXml ());
-
-			return element;
+
+			SecurityElement permissions = et.SearchForChildByTag ("PermissionSet");
+			PermissionSet.FromXml (permissions);
+		}
+		
+		public SecurityElement ToXml ()
+		{
+			return ToXml (null);
+		}
+
+		public SecurityElement ToXml (PolicyLevel level)
+		{
+			SecurityElement element = new SecurityElement ("PolicyStatement");
+			element.AddAttribute ("version", "1");
+
+			if (attrs != PolicyStatementAttribute.Nothing)
+				element.AddAttribute ("Attributes", attrs.ToString ());
+			
+			element.AddChild (PermissionSet.ToXml ());
+
+			return element;
 		}
 
 		[ComVisible (false)]
@@ -169,5 +169,5 @@ namespace System.Security.Policy {
 		{
 			return new PolicyStatement (new PermissionSet (PermissionState.None));
 		}
-	}
-}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/System.Collections/HashtableTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/System.Collections/HashtableTest.cs
@@ -1,882 +1,882 @@
-// HashtableTest.cs - NUnit Test Cases for the System.Collections.Hashtable class
-//
-//
-// (C) Ximian, Inc.  http://www.ximian.com
-// 
-
-
-using System;
-using System.Collections;
-using System.Reflection;
-
-using System.IO;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters;
-using System.Runtime.Serialization.Formatters.Binary;
-
-using NUnit.Framework;
-
-
-
-namespace MonoTests.System.Collections {
-
-
-/// <summary>Hashtable test.</summary>
-[TestFixture]
-public class HashtableTest {
-
-        [Test]
-	public void TestCtor1() {
-		Hashtable h = new Hashtable();
-		Assert.IsNotNull (h, "No hash table");
-	}
-
-        [Test]
-	public void TestCtor2() {
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable((IDictionary) null);
-			} catch (ArgumentNullException) {
-				errorThrown = true;
-			}
-			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
-		}
-		{
-			string[] keys = {"this", "is", "a", "test"};
-			char[] values = {'a', 'b', 'c', 'd'};
-			Hashtable h1 = new Hashtable();
-			for (int i = 0; i < keys.Length; i++) {
-				h1[keys[i]] = values[i];
-			}
-			Hashtable h2 = new Hashtable(h1);
-			for (int i = 0; i < keys.Length; i++) {
-				Assert.AreEqual (values[i], h2[keys[i]], "No match for key " + keys[i]);
-			}
-		}
-	}
-
-        [Test]
-        [ExpectedException (typeof (ArgumentOutOfRangeException))]
-        public void TestCtor3 ()
-        {
-                Hashtable h = new Hashtable ();
-                Hashtable hh = new Hashtable (h, Single.NaN);
-        }
-
-        [Test]
-        [ExpectedException (typeof (ArgumentException))]
-        public void TestCtor4 ()
-        {
-                Hashtable ht = new Hashtable (Int32.MaxValue, 0.1f, null, null);
-        }
-
-	[Test]
-	public void TestCtor5 ()
-	{
-		// tests if negative capacity throws exception
-		try {
-			Hashtable ht = new Hashtable (-10, 0.1f, null, null);
-			Assert.Fail ("must throw ArgumentOutOfRange exception, param: capacity");
-		} catch (ArgumentOutOfRangeException e) {
-			Assert.IsTrue (e.ParamName == "capacity", "ParamName is not capacity");
-		}
-
-		// tests if loadFactor out of range throws exception (low)
-		try {
-			Hashtable ht = new Hashtable (100, 0.01f, null, null);
-			Assert.Fail ("must throw ArgumentOutOfRange exception, param: loadFactor, too low value");
-		} 	catch (ArgumentOutOfRangeException e) 
-		{
-			Assert.IsTrue (e.ParamName == "loadFactor", "ParamName is not loadFactor");
-		}
-
-		// tests if loadFactor out of range throws exception (high)
-		try 
-		{
-			Hashtable ht = new Hashtable (100, 2f, null, null);
-			Assert.Fail ("must throw ArgumentOutOfRange exception, param: loadFactor, too high value");
-		} 	
-		catch (ArgumentOutOfRangeException e) 
-		{
-			Assert.IsTrue (e.ParamName == "loadFactor", "ParamName is not loadFactor");
-		}
-
-	}
-
-	// TODO - Ctors for capacity and load (how to test? any access?)
-        // TODO - Ctors with IComparer, IHashCodeProvider, Serialization
-
-        [Test]	
-	public void TestCount() {
-		Hashtable h = new Hashtable();
-		Assert.AreEqual (0, h.Count, "new table - count zero");
-		int max = 100;
-		for (int i = 1; i <= max; i++) {
-			h[i] = i;
-			Assert.AreEqual (i, h.Count, "Count wrong for " + i);
-		}
-		for (int i = 1; i <= max; i++) {
-			h[i] = i * 2;
-			Assert.AreEqual (max, h.Count, "Count shouldn't change at " + i);
-		}
-	}
-
-        [Test]        
-	public void TestIsFixedSize() {
-		Hashtable h = new Hashtable();
-		Assert.AreEqual (false, h.IsFixedSize, "hashtable not fixed by default");
-		// TODO - any way to get a fixed-size hashtable?
-	}
-
-	public void TestIsReadOnly() {
-		Hashtable h = new Hashtable();
-		Assert.AreEqual (false, h.IsReadOnly, "hashtable not read-only by default");
-		// TODO - any way to get a read-only hashtable?
-	}
-
-        [Test]        
-	public void TestIsSynchronized ()
-	{
-		Hashtable h = new Hashtable ();
-		Assert.IsTrue (!h.IsSynchronized, "hashtable not synched by default");
-
-		Hashtable h2 = Hashtable.Synchronized (h);
-		Assert.IsTrue (h2.IsSynchronized, "hashtable should by synched");
-
-		Hashtable h3 = (Hashtable) h2.Clone ();
-		Assert.IsTrue (h3.IsSynchronized, "Cloned Hashtable should by synched");
-	}
-
-        [Test]
-	public void TestItem() {
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				Object o = h[null];
-			} catch (ArgumentNullException e) {
-				errorThrown = true;
-				Assert.AreEqual ("key", e.ParamName, "ParamName is not \"key\"");
-			}
-			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
-		}
-		// TODO - if read-only and/or fixed-size is possible,
-		//        test 'NotSupportedException' here
-
-		{
-			Hashtable h = new Hashtable();
-			int max = 100;
-			for (int i = 1; i <= max; i++) {
-				h[i] = i;
-				Assert.AreEqual (i, h[i], "value wrong for " + i);
-			}
-		}
-	}
-
-        [Test]
-	public void TestKeys() {
-		string[] keys = {"this", "is", "a", "test"};
-		string[] keys2 = {"new", "keys"};
-		char[] values1 = {'a', 'b', 'c', 'd'};
-		char[] values2 = {'e', 'f', 'g', 'h'};
-		ICollection keysReference, keysReference2;
-		Hashtable h1 = new Hashtable();
-		for (int i = 0; i < keys.Length; i++) {
-			h1[keys[i]] = values1[i];
-		}
-		Assert.AreEqual (keys.Length, h1.Keys.Count, "keys wrong size");
-		for (int i = 0; i < keys.Length; i++) {
-			h1[keys[i]] = values2[i];
-		}
-		Assert.AreEqual (keys.Length, h1.Keys.Count, "keys wrong size 2");
-
-		// MS .NET Always returns the same reference when calling Keys property
-		keysReference = h1.Keys;
-	    keysReference2 = h1.Keys;
-		Assert.AreEqual (keysReference, keysReference2, "keys references differ");
-
-		for (int i = 0; i < keys2.Length; i++) 
-		{
-			h1[keys2[i]] = values2[i];
-		}
-		Assert.AreEqual (keys.Length+keys2.Length, h1.Keys.Count, "keys wrong size 3");
-		Assert.AreEqual (keys.Length+keys2.Length, keysReference.Count, "keys wrong size 4");
-	}
-
-	// TODO - SyncRoot
-        [Test]        
-	public void TestValues() {
-		string[] keys = {"this", "is", "a", "test"};
-		char[] values1 = {'a', 'b', 'c', 'd'};
-		char[] values2 = {'e', 'f', 'g', 'h'};
-		Hashtable h1 = new Hashtable();
-		for (int i = 0; i < keys.Length; i++) {
-			h1[keys[i]] = values1[i];
-		}
-		Assert.AreEqual (keys.Length, h1.Values.Count, "values wrong size");
-		for (int i = 0; i < keys.Length; i++) {
-			h1[keys[i]] = values2[i];
-		}
-		Assert.AreEqual (keys.Length, h1.Values.Count, "values wrong size 2");
-
-		// MS .NET Always returns the same reference when calling Values property
-		ICollection valuesReference1 = h1.Values;
-		ICollection valuesReference2 = h1.Values;
-		Assert.AreEqual (valuesReference1, valuesReference2, "values references differ");
-	}
-
-	[Test]
-	public void TestAdd() {
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				h.Add(null, "huh?");
-			} catch (ArgumentNullException e) {
-				errorThrown = true;
-				Assert.AreEqual ("key", e.ParamName, "ParamName is not 'key'");
-			}
-			Assert.IsTrue (errorThrown, "null add error not thrown");
-		}
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				h.Add('a', 1);
-				h.Add('a', 2);
-			} catch (ArgumentException) {
-				errorThrown = true;
-			}
-			Assert.IsTrue (errorThrown, "re-add error not thrown");
-		}
-		// TODO - hit NotSupportedException
-		{
-			Hashtable h = new Hashtable();
-			int max = 100;
-			for (int i = 1; i <= max; i++) {
-				h.Add(i, i);
-				Assert.AreEqual (i, h[i], "value wrong for " + i);
-			}
-		}
-	}
-
-        [Test]
-	public void TestClear() {
-		// TODO - hit NotSupportedException
-		Hashtable h = new Hashtable();
-		Assert.AreEqual (0, h.Count, "new table - count zero");
-		int max = 100;
-		for (int i = 1; i <= max; i++) {
-			h[i] = i;
-		}
-		Assert.IsTrue (h.Count > 0, "table don't gots stuff");
-		h.Clear();
-		Assert.AreEqual (0, h.Count, "Table should be cleared");
-	}
-
-	public class MyEqualityComparer : IEqualityComparer {
-		bool IEqualityComparer.Equals (object x, object y) { return x == y; }
-		public int GetHashCode (object obj) { return 1; }
-	}
-
-	static IEqualityComparer GetEqualityComparer (Hashtable h)
-	{
-		return (IEqualityComparer) typeof (Hashtable).GetField ("_keycomparer",
-			BindingFlags.NonPublic | BindingFlags.Instance).GetValue (h);
-	}
-	
-        [Test]
-	public void TestClone() {
-		{
-			char[] c1 = {'a', 'b', 'c'};
-			char[] c2 = {'d', 'e', 'f'};
-			Hashtable h1 = new Hashtable();
-			for (int i = 0; i < c1.Length; i++) {
-				h1[c1[i]] = c2[i];
-			}
-			Hashtable h2 = (Hashtable)h1.Clone();
-			Assert.IsNotNull (h2, "got no clone!");
-			Assert.IsNotNull (h2[c1[0]], "clone's got nothing!");
-			for (int i = 0; i < c1.Length; i++) {
-				Assert.AreEqual (h1[c1[i]], h2[c1[i]], "Hashtable match");
-			}
-		}
-		{
-			char[] c1 = {'a', 'b', 'c'};
-			char[] c20 = {'1', '2'};
-			char[] c21 = {'3', '4'};
-			char[] c22 = {'5', '6'};
-			char[][] c2 = {c20, c21, c22};
-			Hashtable h1 = new Hashtable();
-			for (int i = 0; i < c1.Length; i++) {
-				h1[c1[i]] = c2[i];
-			}
-			Hashtable h2 = (Hashtable)h1.Clone();
-			Assert.IsNotNull (h2, "got no clone!");
-			Assert.IsNotNull (h2[c1[0]], "clone's got nothing!");
-			for (int i = 0; i < c1.Length; i++) {
-				Assert.AreEqual (h1[c1[i]], h2[c1[i]], "Hashtable match");
-			}
-
-			((char[])h1[c1[0]])[0] = 'z';
-			Assert.AreEqual (h1[c1[0]], h2[c1[0]], "shallow copy");
-
-			// NET 2.0 stuff
-			MyEqualityComparer a = new MyEqualityComparer ();
-			Hashtable mh1 = new Hashtable (a);
-			Hashtable mh1clone = (Hashtable) mh1.Clone ();
-			
-			// warning, depends on the field name.
-			Assert.AreEqual (GetEqualityComparer (mh1), GetEqualityComparer (mh1clone), "EqualityComparer");
-		}
-	}
-
-        [Test]
-	public void TestContains() {
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				bool result = h.Contains(null);
-			} catch (ArgumentNullException e) {
-				errorThrown = true;
-				Assert.AreEqual ("key", e.ParamName, "ParamName is not 'key'");
-			}
-			Assert.IsTrue (errorThrown, "null add error not thrown");
-		}
-		{
-			Hashtable h = new Hashtable();
-			for (int i = 0; i < 10000; i += 2) 
-			{
-				h[i] = i;
-			}
-			for (int i = 0; i < 10000; i += 2) 
-			{
-				Assert.IsTrue (h.Contains(i), "hashtable must contain"+i.ToString());
-				Assert.IsTrue (!h.Contains(i+1), "hashtable does not contain "+((int)(i+1)).ToString());
-			}
-		}
-	}
-
-        [Test]
-	public void TestContainsKey() {
-	{
-			bool errorThrown = false;
-			try 
-			{
-				Hashtable h = new Hashtable();
-				bool result = h.Contains(null);
-			} 
-			catch (ArgumentNullException e) 
-			{
-				errorThrown = true;
-				Assert.AreEqual ("key", e.ParamName, "ParamName is not 'key'");
-			}
-			Assert.IsTrue (errorThrown, "null add error not thrown");
-		}
-		{
-			Hashtable h = new Hashtable();
-			for (int i = 0; i < 1000; i += 2) 
-			{
-				h[i] = i;
-			}
-			for (int i = 0; i < 1000; i += 2) 
-			{
-				Assert.IsTrue (h.Contains(i), "hashtable must contain"+i.ToString());
-				Assert.IsTrue (!h.Contains(i+1), "hashtable does not contain "+((int)(i+1)).ToString());
-			}
-		}
-
-	}
-
-        [Test]        
-	public void TestContainsValue() {
-		{
-			Hashtable h = new Hashtable();
-			h['a'] = "blue";
-			Assert.IsTrue (h.ContainsValue("blue"), "blue? it's in there!");
-			Assert.IsTrue (!h.ContainsValue("green"), "green? no way!");
-			Assert.IsTrue (!h.ContainsValue(null), "null? no way!");
-			h['b'] = null;
-			Assert.IsTrue (h.ContainsValue(null), "null? it's in there!");
-
-		}
-	}
-
-        [Test]
-	public void TestCopyTo() {
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				h.CopyTo(null, 0);
-			} catch (ArgumentNullException e) {
-				errorThrown = true;
-				Assert.AreEqual ("array", e.ParamName, "ParamName is not \"array\""); 
-			}
-			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
-		}
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				Object[] o = new Object[1];
-				h.CopyTo(o, -1);
-			} catch (ArgumentOutOfRangeException e) {
-				errorThrown = true;
-				Assert.AreEqual ("arrayIndex", e.ParamName, "ParamName is not \"arrayIndex\"");
-			}
-			Assert.IsTrue (errorThrown, "out of range error not thrown");
-		}
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				Object[,] o = new Object[1,1];
-				h.CopyTo(o, 1);
-			} catch (ArgumentException) {
-				errorThrown = true;
-			}
-			Assert.IsTrue (errorThrown, "multi-dim array error not thrown");
-		}
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				h['a'] = 1; // no error if table is empty
-				Object[] o = new Object[5];
-				h.CopyTo(o, 5);
-			} catch (ArgumentException) {
-				errorThrown = true;
-			}
-			Assert.IsTrue (errorThrown, "no room in array error not thrown");
-		}
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				h['a'] = 1;
-				h['b'] = 2;
-				h['c'] = 2;
-				Object[] o = new Object[2];
-				h.CopyTo(o, 0);
-			} catch (ArgumentException) {
-				errorThrown = true;
-			}
-			Assert.IsTrue (errorThrown, "table too big error not thrown");
-		}
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				h["blue"] = 1;
-				h["green"] = 2;
-				h["red"] = 3;
-				Char[] o = new Char[3];
-				h.CopyTo(o, 0);
-			} catch (InvalidCastException) {
-				errorThrown = true;
-			}
-			Assert.IsTrue (errorThrown, "invalid cast error not thrown");
-		}
-
-		{
-			Hashtable h = new Hashtable();
-			h['a'] = 1;
-			h['b'] = 2;
-			DictionaryEntry[] o = new DictionaryEntry[2];
-			h.CopyTo(o,0);
-			Assert.AreEqual ('a', o[0].Key, "first copy fine.");
-			Assert.AreEqual (1, o[0].Value, "first copy fine.");
-			Assert.AreEqual ('b', o[1].Key, "second copy fine.");
-			Assert.AreEqual (2, o[1].Value, "second copy fine.");
-		}
-	}
-
-        [Test]        
-	public void TestGetEnumerator() {
-		String[] s1 = {"this", "is", "a", "test"};
-		Char[] c1 = {'a', 'b', 'c', 'd'};
-		Hashtable h1 = new Hashtable();
-		for (int i = 0; i < s1.Length; i++) {
-			h1[s1[i]] = c1[i];
-		}
-		IDictionaryEnumerator en = h1.GetEnumerator();
-		Assert.IsNotNull (en, "No enumerator");
-		
-		for (int i = 0; i < s1.Length; i++) {
-			en.MoveNext();
-			Assert.IsTrue (Array.IndexOf(s1, en.Key) >= 0, "Not enumerating for " + en.Key);
-			Assert.IsTrue (Array.IndexOf(c1, en.Value) >= 0, "Not enumerating for " + en.Value);
-		}
-	}
-
-	[Test]
-	public void TestSerialization () {
-		Hashtable table1 = new Hashtable();
-		Hashtable table2;
-		Stream str = new MemoryStream ();
-		BinaryFormatter formatter = new BinaryFormatter();
-
-		for (int i = 0; i < 100; i++)
-			table1[i] = "TestString Key: " + i.ToString();
-		
-		formatter.Serialize (str, table1);
-		str.Position = 0;
-		table2 = (Hashtable) formatter.Deserialize (str);
-		
-		bool result;
-		foreach (DictionaryEntry de in table1)
-			Assert.AreEqual (table2 [de.Key], de.Value);
-	}
-	
-	[Test]
-	public void TestSerialization2 () {
-		// Test from bug #70570
-		MemoryStream stream = new MemoryStream();
-		BinaryFormatter formatter = new BinaryFormatter();
-	
-		Hashtable table = new Hashtable();
-		table.Add (new Bug(), "Hello");
-
-		formatter.Serialize(stream, table);
-		stream.Position = 0;
-		table = (Hashtable) formatter.Deserialize(stream);
-		Assert.AreEqual (1, table.Count, "#1");
-	}
-
-        [Test]        
-	public void TestRemove() {
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = new Hashtable();
-				h.Remove(null);
-			} catch (ArgumentNullException e) {
-				errorThrown = true;
-				Assert.AreEqual ("key", e.ParamName, "ParamName is not \"key\"");
-			}
-			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
-		}
-		{
-			string[] keys = {"this", "is", "a", "test"};
-			char[] values = {'a', 'b', 'c', 'd'};
-			Hashtable h = new Hashtable();
-			for (int i = 0; i < keys.Length; i++) {
-				h[keys[i]] = values[i];
-			}
-			Assert.AreEqual (4, h.Count, "not enough in table");
-			h.Remove("huh?");
-			Assert.AreEqual (4, h.Count, "not enough in table");
-			h.Remove("this");
-			Assert.AreEqual (3, h.Count, "Wrong count in table");
-			h.Remove("this");
-			Assert.AreEqual (3, h.Count, "Wrong count in table");
-		}
-	}
-
-        [Test]        
-	public void TestSynchronized() {
-		{
-			bool errorThrown = false;
-			try {
-				Hashtable h = Hashtable.Synchronized(null);
-			} catch (ArgumentNullException e) {
-				errorThrown = true;
-				Assert.AreEqual ("table", e.ParamName, "ParamName is not \"table\"");
-			}
-			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
-		}
-		{
-			Hashtable h = new Hashtable();
-			Assert.IsTrue (!h.IsSynchronized, "hashtable not synced by default");
-			Hashtable h2 = Hashtable.Synchronized(h);
-			Assert.IsTrue (h2.IsSynchronized, "hashtable should by synced");
-		}
-	}
-	
-	
-	protected Hashtable ht;
-	private static Random rnd;
-	
-	[SetUp]
-	public void SetUp() {
-		ht=new Hashtable();
-		rnd=new Random();
-	}
-	
-	private void SetDefaultData() {
-		ht.Clear();
-		ht.Add("k1","another");
-		ht.Add("k2","yet");
-		ht.Add("k3","hashtable");
-	}
-	
-        [Test]
-	public void TestAddRemoveClear() {
-		ht.Clear();
-		Assert.IsTrue (ht.Count==0);
-		
-		SetDefaultData();
-		Assert.IsTrue (ht.Count==3);
-		
-		bool thrown=false;
-		try {
-			ht.Add("k2","cool");
-		} catch (ArgumentException) {thrown=true;}
-		Assert.IsTrue (thrown, "Must throw ArgumentException!");
-		
-		ht["k2"]="cool";
-		Assert.IsTrue (ht.Count==3);
-		Assert.IsTrue (ht["k2"].Equals("cool"));
-		
-	}
-
-        [Test]	
-	public void TestCopyTo2() {
-		SetDefaultData();
-		Object[] entries=new Object[ht.Count];
-		ht.CopyTo(entries,0);
-		Assert.IsTrue (entries[0] is DictionaryEntry, "Not an entry.");
-	}
-
-	[Test]
-	public void CopyTo_Empty ()
-	{
-		Hashtable ht = new Hashtable ();
-		Assert.AreEqual (0, ht.Count, "Count");
-		object[] array = new object [ht.Count];
-		ht.CopyTo (array, 0);
-	}
-	
-        [Test]	
-	public void TestUnderHeavyLoad() {
-		ht.Clear();
-		int max=100000;
-		String[] cache=new String[max*2];
-		int n=0;
-		
-		for (int i=0;i<max;i++) {
-			int id=rnd.Next()&0xFFFF;
-			String key=""+id+"-key-"+id;
-			String val="value-"+id;
-			if (ht[key]==null) {
-				ht[key]=val;
-				cache[n]=key;
-				cache[n+max]=val;
-				n++;
-			}
-		}
-		
-		Assert.IsTrue (ht.Count==n);
-		
-		for (int i=0;i<n;i++) {
-			String key=cache[i];
-			String val=ht[key] as String;
-			String err="ht[\""+key+"\"]=\""+val+
-				"\", expected \""+cache[i+max]+"\"";
-			Assert.IsTrue (val!=null && val.Equals(cache[i+max]), err);
-		}
-		
-		int r1=(n/3);
-		int r2=r1+(n/5);
-		
-		for (int i=r1;i<r2;i++) {
-			ht.Remove(cache[i]);
-		}
-		
-		
-		for (int i=0;i<n;i++) {
-			if (i>=r1 && i<r2) {
-				Assert.IsTrue (ht[cache[i]]==null);
-			} else {
-				String key=cache[i];
-				String val=ht[key] as String;
-				String err="ht[\""+key+"\"]=\""+val+
-					"\", expected \""+cache[i+max]+"\"";
-				Assert.IsTrue (val!=null && val.Equals(cache[i+max]), err);
-			}
-		}
-		
-		ICollection keys=ht.Keys;
-		int nKeys=0;
-		foreach (Object key in keys) {
-			Assert.IsTrue ((key as String) != null);
-			nKeys++;
-		}
-		Assert.IsTrue (nKeys==ht.Count);
-
-		
-		ICollection vals=ht.Values;
-		int nVals=0;
-		foreach (Object val in vals) {
-			Assert.IsTrue ((val as String) != null);
-			nVals++;
-		}
-		Assert.IsTrue (nVals==ht.Count);
-		
-	}
-
-	
-	/// <summary>
-	///  Test hashtable with CaseInsensitiveHashCodeProvider
-	///  and CaseInsensitive comparer.
-	/// </summary>
-        [Test]        
-	public void TestCaseInsensitive ()
-	{
-		// Not very meaningfull test, just to make
-		// sure that hcp is set properly set.
-		Hashtable ciHashtable = new Hashtable(11,1.0f,CaseInsensitiveHashCodeProvider.Default,CaseInsensitiveComparer.Default);
-		ciHashtable ["key1"] = "value";
-		ciHashtable ["key2"] = "VALUE";
-		Assert.IsTrue (ciHashtable ["key1"].Equals ("value"));
-		Assert.IsTrue (ciHashtable ["key2"].Equals ("VALUE"));
-
-		ciHashtable ["KEY1"] = "new_value";
-		Assert.IsTrue (ciHashtable ["key1"].Equals ("new_value"));
-
-	}
-
-        [Test]
-	public void TestCopyConstructor ()
-	{
-		SetDefaultData ();
-
-		Hashtable htCopy = new Hashtable (ht);
-
-		Assert.IsTrue (ht.Count == htCopy.Count);
-	}
-
-        [Test]
-	public void TestEnumerator ()
-	{
-		SetDefaultData ();
-
-		IEnumerator e = ht.GetEnumerator ();
-
-		while (e.MoveNext ()) {}
-
-		Assert.IsTrue (!e.MoveNext ());
-
-	}
-
-	[Test]
-	[ExpectedException (typeof (ArgumentNullException))]
-	public void GetObjectData_NullSerializationInfo () 
-	{
-		SetDefaultData ();
-		ht.GetObjectData (null, new StreamingContext ());
-	}
-
-	// bug #75790
-	[Test]
-	[Category ("NotDotNet")] // .NET raises InvalidOperationException.
-	public void SyncHashtable_ICollectionsGetEnumerator ()
-	{
-		Hashtable hashtable = Hashtable.Synchronized (new Hashtable ());
-		hashtable["a"] = 1;
-		//IEnumerator e = (hashtable.Clone() as
-		IEnumerator e = (hashtable as ICollection).GetEnumerator ();
-		//e.Reset();
-		e.MoveNext ();
-		DictionaryEntry de = (DictionaryEntry) e.Current;
-	}
-
-	[Test]
-	public void SerializableSubClasses ()
-	{
-		Hashtable ht = new Hashtable ();
-		// see bug #76300
-		Assert.IsTrue (ht.Keys.GetType ().IsSerializable, "Keys.IsSerializable");
-		Assert.IsTrue (ht.Values.GetType ().IsSerializable, "Values.IsSerializable");
-		Assert.IsTrue (ht.GetEnumerator ().GetType ().IsSerializable, "GetEnumerator.IsSerializable");
-		Assert.IsTrue (Hashtable.Synchronized (ht).GetType ().IsSerializable, "Synchronized.IsSerializable");
-	}
-
-	[Test]
-	public void TestHashtableWithCustomComparer ()
-	{
-		// see bug #324761
-		IDHashtable dd = new IDHashtable ();
-		Random r = new Random (1000);
-		for (int n = 0; n < 10000; n++) {
-			int v = r.Next (0, 1000);
-			dd [v] = v;
-			v = r.Next (0, 1000);
-			dd.Remove (v);
-		}
-	}
-
-	[Test]
-	public void HashtableCopyWithCustomComparer ()
-	{
-		var ht = new Hashtable ();
-		ht.Add ("a", "b");
-		try {
-			new Hashtable (ht, new IEqualityComparer_ApplicationException ());
-			Assert.Fail ("custom comparer not used");
-		} catch (ApplicationException) {
-
-		}
-	}
-}
-
-class IDHashtable : Hashtable {
-
-	class IDComparer : IComparer {
-		public int Compare (object x, object y)
-		{
-			if ((int) x == (int) y)
-				return 0;
-			else
-				return 1;
-		}
-	}
-
-	class IDHashCodeProvider : IHashCodeProvider {
-		public int GetHashCode (object o)
-		{
-			return (int) o;
-		}
-	}
-
-	public IDHashtable ()
-		: base (new IDHashCodeProvider (),
-				new IDComparer ())
-	{
-	}
-}
-
-[Serializable]
-public class Bug :ISerializable {
-
-	[Serializable]
-	private sealed class InnerClassSerializationHelper : IObjectReference {
-		public object GetRealObject( StreamingContext context )
-		{
-			return new Bug();
-		}
-	};
-
-	void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context )
-	{
-		info.SetType( typeof(InnerClassSerializationHelper) );
-	}
-};
-
-	class IEqualityComparer_ApplicationException : IEqualityComparer
-	{
-		public new bool Equals (object x, object y)
-		{
-			return false;
-		}
-
-		public int GetHashCode (object obj)
-		{
-			throw new ApplicationException ();
-		}
-	}
-
-}
+// HashtableTest.cs - NUnit Test Cases for the System.Collections.Hashtable class
+//
+//
+// (C) Ximian, Inc.  http://www.ximian.com
+// 
+
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+using System.IO;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters;
+using System.Runtime.Serialization.Formatters.Binary;
+
+using NUnit.Framework;
+
+
+
+namespace MonoTests.System.Collections {
+
+
+/// <summary>Hashtable test.</summary>
+[TestFixture]
+public class HashtableTest {
+
+        [Test]
+	public void TestCtor1() {
+		Hashtable h = new Hashtable();
+		Assert.IsNotNull (h, "No hash table");
+	}
+
+        [Test]
+	public void TestCtor2() {
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable((IDictionary) null);
+			} catch (ArgumentNullException) {
+				errorThrown = true;
+			}
+			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
+		}
+		{
+			string[] keys = {"this", "is", "a", "test"};
+			char[] values = {'a', 'b', 'c', 'd'};
+			Hashtable h1 = new Hashtable();
+			for (int i = 0; i < keys.Length; i++) {
+				h1[keys[i]] = values[i];
+			}
+			Hashtable h2 = new Hashtable(h1);
+			for (int i = 0; i < keys.Length; i++) {
+				Assert.AreEqual (values[i], h2[keys[i]], "No match for key " + keys[i]);
+			}
+		}
+	}
+
+        [Test]
+        [ExpectedException (typeof (ArgumentOutOfRangeException))]
+        public void TestCtor3 ()
+        {
+                Hashtable h = new Hashtable ();
+                Hashtable hh = new Hashtable (h, Single.NaN);
+        }
+
+        [Test]
+        [ExpectedException (typeof (ArgumentException))]
+        public void TestCtor4 ()
+        {
+                Hashtable ht = new Hashtable (Int32.MaxValue, 0.1f, null, null);
+        }
+
+	[Test]
+	public void TestCtor5 ()
+	{
+		// tests if negative capacity throws exception
+		try {
+			Hashtable ht = new Hashtable (-10, 0.1f, null, null);
+			Assert.Fail ("must throw ArgumentOutOfRange exception, param: capacity");
+		} catch (ArgumentOutOfRangeException e) {
+			Assert.IsTrue (e.ParamName == "capacity", "ParamName is not capacity");
+		}
+
+		// tests if loadFactor out of range throws exception (low)
+		try {
+			Hashtable ht = new Hashtable (100, 0.01f, null, null);
+			Assert.Fail ("must throw ArgumentOutOfRange exception, param: loadFactor, too low value");
+		} 	catch (ArgumentOutOfRangeException e) 
+		{
+			Assert.IsTrue (e.ParamName == "loadFactor", "ParamName is not loadFactor");
+		}
+
+		// tests if loadFactor out of range throws exception (high)
+		try 
+		{
+			Hashtable ht = new Hashtable (100, 2f, null, null);
+			Assert.Fail ("must throw ArgumentOutOfRange exception, param: loadFactor, too high value");
+		} 	
+		catch (ArgumentOutOfRangeException e) 
+		{
+			Assert.IsTrue (e.ParamName == "loadFactor", "ParamName is not loadFactor");
+		}
+
+	}
+
+	// TODO - Ctors for capacity and load (how to test? any access?)
+        // TODO - Ctors with IComparer, IHashCodeProvider, Serialization
+
+        [Test]	
+	public void TestCount() {
+		Hashtable h = new Hashtable();
+		Assert.AreEqual (0, h.Count, "new table - count zero");
+		int max = 100;
+		for (int i = 1; i <= max; i++) {
+			h[i] = i;
+			Assert.AreEqual (i, h.Count, "Count wrong for " + i);
+		}
+		for (int i = 1; i <= max; i++) {
+			h[i] = i * 2;
+			Assert.AreEqual (max, h.Count, "Count shouldn't change at " + i);
+		}
+	}
+
+        [Test]        
+	public void TestIsFixedSize() {
+		Hashtable h = new Hashtable();
+		Assert.AreEqual (false, h.IsFixedSize, "hashtable not fixed by default");
+		// TODO - any way to get a fixed-size hashtable?
+	}
+
+	public void TestIsReadOnly() {
+		Hashtable h = new Hashtable();
+		Assert.AreEqual (false, h.IsReadOnly, "hashtable not read-only by default");
+		// TODO - any way to get a read-only hashtable?
+	}
+
+        [Test]        
+	public void TestIsSynchronized ()
+	{
+		Hashtable h = new Hashtable ();
+		Assert.IsTrue (!h.IsSynchronized, "hashtable not synched by default");
+
+		Hashtable h2 = Hashtable.Synchronized (h);
+		Assert.IsTrue (h2.IsSynchronized, "hashtable should by synched");
+
+		Hashtable h3 = (Hashtable) h2.Clone ();
+		Assert.IsTrue (h3.IsSynchronized, "Cloned Hashtable should by synched");
+	}
+
+        [Test]
+	public void TestItem() {
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				Object o = h[null];
+			} catch (ArgumentNullException e) {
+				errorThrown = true;
+				Assert.AreEqual ("key", e.ParamName, "ParamName is not \"key\"");
+			}
+			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
+		}
+		// TODO - if read-only and/or fixed-size is possible,
+		//        test 'NotSupportedException' here
+
+		{
+			Hashtable h = new Hashtable();
+			int max = 100;
+			for (int i = 1; i <= max; i++) {
+				h[i] = i;
+				Assert.AreEqual (i, h[i], "value wrong for " + i);
+			}
+		}
+	}
+
+        [Test]
+	public void TestKeys() {
+		string[] keys = {"this", "is", "a", "test"};
+		string[] keys2 = {"new", "keys"};
+		char[] values1 = {'a', 'b', 'c', 'd'};
+		char[] values2 = {'e', 'f', 'g', 'h'};
+		ICollection keysReference, keysReference2;
+		Hashtable h1 = new Hashtable();
+		for (int i = 0; i < keys.Length; i++) {
+			h1[keys[i]] = values1[i];
+		}
+		Assert.AreEqual (keys.Length, h1.Keys.Count, "keys wrong size");
+		for (int i = 0; i < keys.Length; i++) {
+			h1[keys[i]] = values2[i];
+		}
+		Assert.AreEqual (keys.Length, h1.Keys.Count, "keys wrong size 2");
+
+		// MS .NET Always returns the same reference when calling Keys property
+		keysReference = h1.Keys;
+	    keysReference2 = h1.Keys;
+		Assert.AreEqual (keysReference, keysReference2, "keys references differ");
+
+		for (int i = 0; i < keys2.Length; i++) 
+		{
+			h1[keys2[i]] = values2[i];
+		}
+		Assert.AreEqual (keys.Length+keys2.Length, h1.Keys.Count, "keys wrong size 3");
+		Assert.AreEqual (keys.Length+keys2.Length, keysReference.Count, "keys wrong size 4");
+	}
+
+	// TODO - SyncRoot
+        [Test]        
+	public void TestValues() {
+		string[] keys = {"this", "is", "a", "test"};
+		char[] values1 = {'a', 'b', 'c', 'd'};
+		char[] values2 = {'e', 'f', 'g', 'h'};
+		Hashtable h1 = new Hashtable();
+		for (int i = 0; i < keys.Length; i++) {
+			h1[keys[i]] = values1[i];
+		}
+		Assert.AreEqual (keys.Length, h1.Values.Count, "values wrong size");
+		for (int i = 0; i < keys.Length; i++) {
+			h1[keys[i]] = values2[i];
+		}
+		Assert.AreEqual (keys.Length, h1.Values.Count, "values wrong size 2");
+
+		// MS .NET Always returns the same reference when calling Values property
+		ICollection valuesReference1 = h1.Values;
+		ICollection valuesReference2 = h1.Values;
+		Assert.AreEqual (valuesReference1, valuesReference2, "values references differ");
+	}
+
+	[Test]
+	public void TestAdd() {
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				h.Add(null, "huh?");
+			} catch (ArgumentNullException e) {
+				errorThrown = true;
+				Assert.AreEqual ("key", e.ParamName, "ParamName is not 'key'");
+			}
+			Assert.IsTrue (errorThrown, "null add error not thrown");
+		}
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				h.Add('a', 1);
+				h.Add('a', 2);
+			} catch (ArgumentException) {
+				errorThrown = true;
+			}
+			Assert.IsTrue (errorThrown, "re-add error not thrown");
+		}
+		// TODO - hit NotSupportedException
+		{
+			Hashtable h = new Hashtable();
+			int max = 100;
+			for (int i = 1; i <= max; i++) {
+				h.Add(i, i);
+				Assert.AreEqual (i, h[i], "value wrong for " + i);
+			}
+		}
+	}
+
+        [Test]
+	public void TestClear() {
+		// TODO - hit NotSupportedException
+		Hashtable h = new Hashtable();
+		Assert.AreEqual (0, h.Count, "new table - count zero");
+		int max = 100;
+		for (int i = 1; i <= max; i++) {
+			h[i] = i;
+		}
+		Assert.IsTrue (h.Count > 0, "table don't gots stuff");
+		h.Clear();
+		Assert.AreEqual (0, h.Count, "Table should be cleared");
+	}
+
+	public class MyEqualityComparer : IEqualityComparer {
+		bool IEqualityComparer.Equals (object x, object y) { return x == y; }
+		public int GetHashCode (object obj) { return 1; }
+	}
+
+	static IEqualityComparer GetEqualityComparer (Hashtable h)
+	{
+		return (IEqualityComparer) typeof (Hashtable).GetField ("_keycomparer",
+			BindingFlags.NonPublic | BindingFlags.Instance).GetValue (h);
+	}
+	
+        [Test]
+	public void TestClone() {
+		{
+			char[] c1 = {'a', 'b', 'c'};
+			char[] c2 = {'d', 'e', 'f'};
+			Hashtable h1 = new Hashtable();
+			for (int i = 0; i < c1.Length; i++) {
+				h1[c1[i]] = c2[i];
+			}
+			Hashtable h2 = (Hashtable)h1.Clone();
+			Assert.IsNotNull (h2, "got no clone!");
+			Assert.IsNotNull (h2[c1[0]], "clone's got nothing!");
+			for (int i = 0; i < c1.Length; i++) {
+				Assert.AreEqual (h1[c1[i]], h2[c1[i]], "Hashtable match");
+			}
+		}
+		{
+			char[] c1 = {'a', 'b', 'c'};
+			char[] c20 = {'1', '2'};
+			char[] c21 = {'3', '4'};
+			char[] c22 = {'5', '6'};
+			char[][] c2 = {c20, c21, c22};
+			Hashtable h1 = new Hashtable();
+			for (int i = 0; i < c1.Length; i++) {
+				h1[c1[i]] = c2[i];
+			}
+			Hashtable h2 = (Hashtable)h1.Clone();
+			Assert.IsNotNull (h2, "got no clone!");
+			Assert.IsNotNull (h2[c1[0]], "clone's got nothing!");
+			for (int i = 0; i < c1.Length; i++) {
+				Assert.AreEqual (h1[c1[i]], h2[c1[i]], "Hashtable match");
+			}
+
+			((char[])h1[c1[0]])[0] = 'z';
+			Assert.AreEqual (h1[c1[0]], h2[c1[0]], "shallow copy");
+
+			// NET 2.0 stuff
+			MyEqualityComparer a = new MyEqualityComparer ();
+			Hashtable mh1 = new Hashtable (a);
+			Hashtable mh1clone = (Hashtable) mh1.Clone ();
+			
+			// warning, depends on the field name.
+			Assert.AreEqual (GetEqualityComparer (mh1), GetEqualityComparer (mh1clone), "EqualityComparer");
+		}
+	}
+
+        [Test]
+	public void TestContains() {
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				bool result = h.Contains(null);
+			} catch (ArgumentNullException e) {
+				errorThrown = true;
+				Assert.AreEqual ("key", e.ParamName, "ParamName is not 'key'");
+			}
+			Assert.IsTrue (errorThrown, "null add error not thrown");
+		}
+		{
+			Hashtable h = new Hashtable();
+			for (int i = 0; i < 10000; i += 2) 
+			{
+				h[i] = i;
+			}
+			for (int i = 0; i < 10000; i += 2) 
+			{
+				Assert.IsTrue (h.Contains(i), "hashtable must contain"+i.ToString());
+				Assert.IsTrue (!h.Contains(i+1), "hashtable does not contain "+((int)(i+1)).ToString());
+			}
+		}
+	}
+
+        [Test]
+	public void TestContainsKey() {
+	{
+			bool errorThrown = false;
+			try 
+			{
+				Hashtable h = new Hashtable();
+				bool result = h.Contains(null);
+			} 
+			catch (ArgumentNullException e) 
+			{
+				errorThrown = true;
+				Assert.AreEqual ("key", e.ParamName, "ParamName is not 'key'");
+			}
+			Assert.IsTrue (errorThrown, "null add error not thrown");
+		}
+		{
+			Hashtable h = new Hashtable();
+			for (int i = 0; i < 1000; i += 2) 
+			{
+				h[i] = i;
+			}
+			for (int i = 0; i < 1000; i += 2) 
+			{
+				Assert.IsTrue (h.Contains(i), "hashtable must contain"+i.ToString());
+				Assert.IsTrue (!h.Contains(i+1), "hashtable does not contain "+((int)(i+1)).ToString());
+			}
+		}
+
+	}
+
+        [Test]        
+	public void TestContainsValue() {
+		{
+			Hashtable h = new Hashtable();
+			h['a'] = "blue";
+			Assert.IsTrue (h.ContainsValue("blue"), "blue? it's in there!");
+			Assert.IsTrue (!h.ContainsValue("green"), "green? no way!");
+			Assert.IsTrue (!h.ContainsValue(null), "null? no way!");
+			h['b'] = null;
+			Assert.IsTrue (h.ContainsValue(null), "null? it's in there!");
+
+		}
+	}
+
+        [Test]
+	public void TestCopyTo() {
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				h.CopyTo(null, 0);
+			} catch (ArgumentNullException e) {
+				errorThrown = true;
+				Assert.AreEqual ("array", e.ParamName, "ParamName is not \"array\""); 
+			}
+			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
+		}
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				Object[] o = new Object[1];
+				h.CopyTo(o, -1);
+			} catch (ArgumentOutOfRangeException e) {
+				errorThrown = true;
+				Assert.AreEqual ("arrayIndex", e.ParamName, "ParamName is not \"arrayIndex\"");
+			}
+			Assert.IsTrue (errorThrown, "out of range error not thrown");
+		}
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				Object[,] o = new Object[1,1];
+				h.CopyTo(o, 1);
+			} catch (ArgumentException) {
+				errorThrown = true;
+			}
+			Assert.IsTrue (errorThrown, "multi-dim array error not thrown");
+		}
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				h['a'] = 1; // no error if table is empty
+				Object[] o = new Object[5];
+				h.CopyTo(o, 5);
+			} catch (ArgumentException) {
+				errorThrown = true;
+			}
+			Assert.IsTrue (errorThrown, "no room in array error not thrown");
+		}
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				h['a'] = 1;
+				h['b'] = 2;
+				h['c'] = 2;
+				Object[] o = new Object[2];
+				h.CopyTo(o, 0);
+			} catch (ArgumentException) {
+				errorThrown = true;
+			}
+			Assert.IsTrue (errorThrown, "table too big error not thrown");
+		}
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				h["blue"] = 1;
+				h["green"] = 2;
+				h["red"] = 3;
+				Char[] o = new Char[3];
+				h.CopyTo(o, 0);
+			} catch (InvalidCastException) {
+				errorThrown = true;
+			}
+			Assert.IsTrue (errorThrown, "invalid cast error not thrown");
+		}
+
+		{
+			Hashtable h = new Hashtable();
+			h['a'] = 1;
+			h['b'] = 2;
+			DictionaryEntry[] o = new DictionaryEntry[2];
+			h.CopyTo(o,0);
+			Assert.AreEqual ('a', o[0].Key, "first copy fine.");
+			Assert.AreEqual (1, o[0].Value, "first copy fine.");
+			Assert.AreEqual ('b', o[1].Key, "second copy fine.");
+			Assert.AreEqual (2, o[1].Value, "second copy fine.");
+		}
+	}
+
+        [Test]        
+	public void TestGetEnumerator() {
+		String[] s1 = {"this", "is", "a", "test"};
+		Char[] c1 = {'a', 'b', 'c', 'd'};
+		Hashtable h1 = new Hashtable();
+		for (int i = 0; i < s1.Length; i++) {
+			h1[s1[i]] = c1[i];
+		}
+		IDictionaryEnumerator en = h1.GetEnumerator();
+		Assert.IsNotNull (en, "No enumerator");
+		
+		for (int i = 0; i < s1.Length; i++) {
+			en.MoveNext();
+			Assert.IsTrue (Array.IndexOf(s1, en.Key) >= 0, "Not enumerating for " + en.Key);
+			Assert.IsTrue (Array.IndexOf(c1, en.Value) >= 0, "Not enumerating for " + en.Value);
+		}
+	}
+
+	[Test]
+	public void TestSerialization () {
+		Hashtable table1 = new Hashtable();
+		Hashtable table2;
+		Stream str = new MemoryStream ();
+		BinaryFormatter formatter = new BinaryFormatter();
+
+		for (int i = 0; i < 100; i++)
+			table1[i] = "TestString Key: " + i.ToString();
+		
+		formatter.Serialize (str, table1);
+		str.Position = 0;
+		table2 = (Hashtable) formatter.Deserialize (str);
+		
+		bool result;
+		foreach (DictionaryEntry de in table1)
+			Assert.AreEqual (table2 [de.Key], de.Value);
+	}
+	
+	[Test]
+	public void TestSerialization2 () {
+		// Test from bug #70570
+		MemoryStream stream = new MemoryStream();
+		BinaryFormatter formatter = new BinaryFormatter();
+	
+		Hashtable table = new Hashtable();
+		table.Add (new Bug(), "Hello");
+
+		formatter.Serialize(stream, table);
+		stream.Position = 0;
+		table = (Hashtable) formatter.Deserialize(stream);
+		Assert.AreEqual (1, table.Count, "#1");
+	}
+
+        [Test]        
+	public void TestRemove() {
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = new Hashtable();
+				h.Remove(null);
+			} catch (ArgumentNullException e) {
+				errorThrown = true;
+				Assert.AreEqual ("key", e.ParamName, "ParamName is not \"key\"");
+			}
+			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
+		}
+		{
+			string[] keys = {"this", "is", "a", "test"};
+			char[] values = {'a', 'b', 'c', 'd'};
+			Hashtable h = new Hashtable();
+			for (int i = 0; i < keys.Length; i++) {
+				h[keys[i]] = values[i];
+			}
+			Assert.AreEqual (4, h.Count, "not enough in table");
+			h.Remove("huh?");
+			Assert.AreEqual (4, h.Count, "not enough in table");
+			h.Remove("this");
+			Assert.AreEqual (3, h.Count, "Wrong count in table");
+			h.Remove("this");
+			Assert.AreEqual (3, h.Count, "Wrong count in table");
+		}
+	}
+
+        [Test]        
+	public void TestSynchronized() {
+		{
+			bool errorThrown = false;
+			try {
+				Hashtable h = Hashtable.Synchronized(null);
+			} catch (ArgumentNullException e) {
+				errorThrown = true;
+				Assert.AreEqual ("table", e.ParamName, "ParamName is not \"table\"");
+			}
+			Assert.IsTrue (errorThrown, "null hashtable error not thrown");
+		}
+		{
+			Hashtable h = new Hashtable();
+			Assert.IsTrue (!h.IsSynchronized, "hashtable not synced by default");
+			Hashtable h2 = Hashtable.Synchronized(h);
+			Assert.IsTrue (h2.IsSynchronized, "hashtable should by synced");
+		}
+	}
+	
+	
+	protected Hashtable ht;
+	private static Random rnd;
+	
+	[SetUp]
+	public void SetUp() {
+		ht=new Hashtable();
+		rnd=new Random();
+	}
+	
+	private void SetDefaultData() {
+		ht.Clear();
+		ht.Add("k1","another");
+		ht.Add("k2","yet");
+		ht.Add("k3","hashtable");
+	}
+	
+        [Test]
+	public void TestAddRemoveClear() {
+		ht.Clear();
+		Assert.IsTrue (ht.Count==0);
+		
+		SetDefaultData();
+		Assert.IsTrue (ht.Count==3);
+		
+		bool thrown=false;
+		try {
+			ht.Add("k2","cool");
+		} catch (ArgumentException) {thrown=true;}
+		Assert.IsTrue (thrown, "Must throw ArgumentException!");
+		
+		ht["k2"]="cool";
+		Assert.IsTrue (ht.Count==3);
+		Assert.IsTrue (ht["k2"].Equals("cool"));
+		
+	}
+
+        [Test]	
+	public void TestCopyTo2() {
+		SetDefaultData();
+		Object[] entries=new Object[ht.Count];
+		ht.CopyTo(entries,0);
+		Assert.IsTrue (entries[0] is DictionaryEntry, "Not an entry.");
+	}
+
+	[Test]
+	public void CopyTo_Empty ()
+	{
+		Hashtable ht = new Hashtable ();
+		Assert.AreEqual (0, ht.Count, "Count");
+		object[] array = new object [ht.Count];
+		ht.CopyTo (array, 0);
+	}
+	
+        [Test]	
+	public void TestUnderHeavyLoad() {
+		ht.Clear();
+		int max=100000;
+		String[] cache=new String[max*2];
+		int n=0;
+		
+		for (int i=0;i<max;i++) {
+			int id=rnd.Next()&0xFFFF;
+			String key=""+id+"-key-"+id;
+			String val="value-"+id;
+			if (ht[key]==null) {
+				ht[key]=val;
+				cache[n]=key;
+				cache[n+max]=val;
+				n++;
+			}
+		}
+		
+		Assert.IsTrue (ht.Count==n);
+		
+		for (int i=0;i<n;i++) {
+			String key=cache[i];
+			String val=ht[key] as String;
+			String err="ht[\""+key+"\"]=\""+val+
+				"\", expected \""+cache[i+max]+"\"";
+			Assert.IsTrue (val!=null && val.Equals(cache[i+max]), err);
+		}
+		
+		int r1=(n/3);
+		int r2=r1+(n/5);
+		
+		for (int i=r1;i<r2;i++) {
+			ht.Remove(cache[i]);
+		}
+		
+		
+		for (int i=0;i<n;i++) {
+			if (i>=r1 && i<r2) {
+				Assert.IsTrue (ht[cache[i]]==null);
+			} else {
+				String key=cache[i];
+				String val=ht[key] as String;
+				String err="ht[\""+key+"\"]=\""+val+
+					"\", expected \""+cache[i+max]+"\"";
+				Assert.IsTrue (val!=null && val.Equals(cache[i+max]), err);
+			}
+		}
+		
+		ICollection keys=ht.Keys;
+		int nKeys=0;
+		foreach (Object key in keys) {
+			Assert.IsTrue ((key as String) != null);
+			nKeys++;
+		}
+		Assert.IsTrue (nKeys==ht.Count);
+
+		
+		ICollection vals=ht.Values;
+		int nVals=0;
+		foreach (Object val in vals) {
+			Assert.IsTrue ((val as String) != null);
+			nVals++;
+		}
+		Assert.IsTrue (nVals==ht.Count);
+		
+	}
+
+	
+	/// <summary>
+	///  Test hashtable with CaseInsensitiveHashCodeProvider
+	///  and CaseInsensitive comparer.
+	/// </summary>
+        [Test]        
+	public void TestCaseInsensitive ()
+	{
+		// Not very meaningfull test, just to make
+		// sure that hcp is set properly set.
+		Hashtable ciHashtable = new Hashtable(11,1.0f,CaseInsensitiveHashCodeProvider.Default,CaseInsensitiveComparer.Default);
+		ciHashtable ["key1"] = "value";
+		ciHashtable ["key2"] = "VALUE";
+		Assert.IsTrue (ciHashtable ["key1"].Equals ("value"));
+		Assert.IsTrue (ciHashtable ["key2"].Equals ("VALUE"));
+
+		ciHashtable ["KEY1"] = "new_value";
+		Assert.IsTrue (ciHashtable ["key1"].Equals ("new_value"));
+
+	}
+
+        [Test]
+	public void TestCopyConstructor ()
+	{
+		SetDefaultData ();
+
+		Hashtable htCopy = new Hashtable (ht);
+
+		Assert.IsTrue (ht.Count == htCopy.Count);
+	}
+
+        [Test]
+	public void TestEnumerator ()
+	{
+		SetDefaultData ();
+
+		IEnumerator e = ht.GetEnumerator ();
+
+		while (e.MoveNext ()) {}
+
+		Assert.IsTrue (!e.MoveNext ());
+
+	}
+
+	[Test]
+	[ExpectedException (typeof (ArgumentNullException))]
+	public void GetObjectData_NullSerializationInfo () 
+	{
+		SetDefaultData ();
+		ht.GetObjectData (null, new StreamingContext ());
+	}
+
+	// bug #75790
+	[Test]
+	[Category ("NotDotNet")] // .NET raises InvalidOperationException.
+	public void SyncHashtable_ICollectionsGetEnumerator ()
+	{
+		Hashtable hashtable = Hashtable.Synchronized (new Hashtable ());
+		hashtable["a"] = 1;
+		//IEnumerator e = (hashtable.Clone() as
+		IEnumerator e = (hashtable as ICollection).GetEnumerator ();
+		//e.Reset();
+		e.MoveNext ();
+		DictionaryEntry de = (DictionaryEntry) e.Current;
+	}
+
+	[Test]
+	public void SerializableSubClasses ()
+	{
+		Hashtable ht = new Hashtable ();
+		// see bug #76300
+		Assert.IsTrue (ht.Keys.GetType ().IsSerializable, "Keys.IsSerializable");
+		Assert.IsTrue (ht.Values.GetType ().IsSerializable, "Values.IsSerializable");
+		Assert.IsTrue (ht.GetEnumerator ().GetType ().IsSerializable, "GetEnumerator.IsSerializable");
+		Assert.IsTrue (Hashtable.Synchronized (ht).GetType ().IsSerializable, "Synchronized.IsSerializable");
+	}
+
+	[Test]
+	public void TestHashtableWithCustomComparer ()
+	{
+		// see bug #324761
+		IDHashtable dd = new IDHashtable ();
+		Random r = new Random (1000);
+		for (int n = 0; n < 10000; n++) {
+			int v = r.Next (0, 1000);
+			dd [v] = v;
+			v = r.Next (0, 1000);
+			dd.Remove (v);
+		}
+	}
+
+	[Test]
+	public void HashtableCopyWithCustomComparer ()
+	{
+		var ht = new Hashtable ();
+		ht.Add ("a", "b");
+		try {
+			new Hashtable (ht, new IEqualityComparer_ApplicationException ());
+			Assert.Fail ("custom comparer not used");
+		} catch (ApplicationException) {
+
+		}
+	}
+}
+
+class IDHashtable : Hashtable {
+
+	class IDComparer : IComparer {
+		public int Compare (object x, object y)
+		{
+			if ((int) x == (int) y)
+				return 0;
+			else
+				return 1;
+		}
+	}
+
+	class IDHashCodeProvider : IHashCodeProvider {
+		public int GetHashCode (object o)
+		{
+			return (int) o;
+		}
+	}
+
+	public IDHashtable ()
+		: base (new IDHashCodeProvider (),
+				new IDComparer ())
+	{
+	}
+}
+
+[Serializable]
+public class Bug :ISerializable {
+
+	[Serializable]
+	private sealed class InnerClassSerializationHelper : IObjectReference {
+		public object GetRealObject( StreamingContext context )
+		{
+			return new Bug();
+		}
+	};
+
+	void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context )
+	{
+		info.SetType( typeof(InnerClassSerializationHelper) );
+	}
+};
+
+	class IEqualityComparer_ApplicationException : IEqualityComparer
+	{
+		public new bool Equals (object x, object y)
+		{
+			return false;
+		}
+
+		public int GetHashCode (object obj)
+		{
+			throw new ApplicationException ();
+		}
+	}
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/System.IO/DirectoryTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/System.IO/DirectoryTest.cs
@@ -1,1733 +1,1733 @@
-//
-// System.IO.Directory
-//
-// Authors: 
-//	Ville Palo (vi64pa@kolumbus.fi)
-//
-// (C) 2003 Ville Palo
-//
-// TODO: Find out why ArgumentOutOfRange tests does not release directories properly
-//
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Threading;
-
-#if !MONOTOUCH && !MOBILE_STATIC
-using Mono.Unix;
-#endif
-using NUnit.Framework;
-
-namespace MonoTests.System.IO
-{
-
-[TestFixture]
-public class DirectoryTest
-{
-	static readonly string TempSubFolder = "MonoTests.System.IO.Tests";
-	string TempFolder = Path.Combine (Path.GetTempPath (), TempSubFolder);
-	static readonly char DSC = Path.DirectorySeparatorChar;
-
-	[SetUp]
-	public void SetUp ()
-	{
-		if (!Directory.Exists (TempFolder))
-			Directory.CreateDirectory (TempFolder);
-
-		Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
-	}
-	
-	[TearDown]
-	public void TearDown ()
-	{
-		if (Directory.Exists (TempFolder))
-			Directory.Delete (TempFolder, true);
-	}
-#if !MONOTOUCH && !MOBILE_STATIC
-	[Test] //BXC #12461
-	public void EnumerateFilesListSymlinks ()
-	{
-		if (!RunningOnUnix)
-			Assert.Ignore ("Not running on Unix.");
-
-		var afile = Path.Combine (TempFolder, "afile.src");
-		var bfile = Path.Combine (TempFolder, "bfile.src");
-		var cdir = Path.Combine (TempFolder, "cdir.src");
-
-		File.AppendAllText (afile, "hello");
-		var info = new UnixFileInfo (afile);
-		info.CreateSymbolicLink (bfile);
-		Directory.CreateDirectory (cdir);
-
-		var files0 = Directory.GetFiles (TempFolder, "*.src");
-		Array.Sort (files0);
-		Assert.AreEqual (2, files0.Length, "#1");
-		Assert.AreEqual (afile, files0 [0], "#2");
-		Assert.AreEqual (bfile, files0 [1], "#3");
-
-		var files1 = new List<string> (Directory.EnumerateFiles (TempFolder, "*.src")).ToArray ();
-		Array.Sort (files1);
-		Assert.AreEqual (2, files1.Length, "#1.b");
-		Assert.AreEqual (afile, files1 [0], "#2.b");
-		Assert.AreEqual (bfile, files1 [1], "#3.b");
-
-		var files2 = Directory.GetFileSystemEntries (TempFolder, "*.src");
-		Array.Sort (files2);
-		Assert.AreEqual (3, files2.Length, "#1.c");
-		Assert.AreEqual (afile, files2 [0], "#2.c");
-		Assert.AreEqual (bfile, files2 [1], "#3.c");
-		Assert.AreEqual (cdir, files2 [2], "#4.c");
-
-		var files3 = new List<string> (Directory.EnumerateFileSystemEntries (TempFolder, "*.src")).ToArray ();
-		Array.Sort (files3);
-		Assert.AreEqual (3, files3.Length, "#1.d");
-		Assert.AreEqual (afile, files3 [0], "#2.d");
-		Assert.AreEqual (bfile, files3 [1], "#3.d");
-		Assert.AreEqual (cdir, files3 [2], "#4.d");
-	}
-#endif
-	[Test]
-	public void CreateDirectory ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.1";
-		DeleteDirectory (path);
-		try {
-			DirectoryInfo info = Directory.CreateDirectory (path);
-			Assert.IsTrue (info.Exists, "#1");
-			Assert.AreEqual (".1", info.Extension, "#2");
-			Assert.IsTrue (info.FullName.EndsWith ("DirectoryTest.Test.1"), "#3");
-			Assert.AreEqual ("DirectoryTest.Test.1", info.Name, "#4");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-	
-	/* Commented out: a directory named ":" is legal in unix
-	[Test]
-	public void CreateDirectoryNotSupportedException ()
-	{
-		DeleteDirectory (":");
-		try {
-			DirectoryInfo info = Directory.CreateDirectory (":");
-			Assert.Fail ("#1");
-		} catch (ArgumentException ex) {
-			// The path is not of a legal form
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNull (ex.ParamName, "#5");
-		}
-		DeleteDirectory (":");
-	}
-	*/
-
-	[Test]
-	public void CreateDirectory_Path_Null ()
-	{
-		try {
-			Directory.CreateDirectory (null as string);
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException ex) {
-			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.AreEqual ("path", ex.ParamName, "#5");
-		}
-	}
-
-	[Test]
-	public void CreateDirectory_Path_Empty ()
-	{
-		try {
-			Directory.CreateDirectory (string.Empty);
-			Assert.Fail ("#1");
-		} catch (ArgumentException ex) {
-			// Path cannot be the empty string or all whitespace
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNull (ex.ParamName, "#5");
-		}
-	}
-
-	[Test]
-	public void CreateDirectory_Path_Whitespace ()
-	{
-		try {
-			Directory.CreateDirectory ("            ");
-			Assert.Fail ("#1");
-		} catch (ArgumentException ex) {
-			// The path is not of a legal form
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNull (ex.ParamName, "#5");
-		}
-	}
-
-	[Test]
-	public void CreateDirectory_Path_InvalidChars ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test";
-		DeleteDirectory (path);
-		try {
-			path += '\x00';
-			path += ".2";
-			DirectoryInfo info = Directory.CreateDirectory (path);
-			Assert.Fail ("#1");
-		} catch (ArgumentException ex) {
-			// The path contains illegal characters
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNull (ex.ParamName, "#5");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	public void CreateDirectoryAlreadyExists ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.Exists";
-		DeleteDirectory (path);
-		try {
-			DirectoryInfo info1 = Directory.CreateDirectory (path);
-			DirectoryInfo info2 = Directory.CreateDirectory (path);
-
-			Assert.IsTrue (info2.Exists, "#1");
-			Assert.IsTrue (info2.FullName.EndsWith ("DirectoryTest.Test.Exists"), "#2");
-			Assert.AreEqual ("DirectoryTest.Test.Exists", info2.Name, "#3");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	public void CreateDirectoryAlreadyExistsAsFile ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
-		DeleteDirectory (path);
-		DeleteFile (path);
-		try {
-			FileStream fstream = File.Create (path);
-			fstream.Close();
-
-			DirectoryInfo dinfo = Directory.CreateDirectory (path);
-			Assert.Fail ("#1");
-		} catch (IOException ex) {
-			Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
-			// exception message contains the path
-			Assert.IsTrue (ex.Message.Contains (path), "#3");
-			Assert.IsNull (ex.InnerException, "#4");
-		} finally {
-			DeleteDirectory (path);
-			DeleteFile (path);
-		}
-	}
-
-	[Test]
-	public void CreateDirectoryRelativePath ()
-	{
-		var path = Path.Combine (TempFolder, "relativepath", "not_this_folder");
-		path = Path.Combine (path, "..");
-
-		var res = Directory.CreateDirectory (path);
-		Assert.AreEqual ("relativepath", res.ToString (), "#1");
-		Assert.IsTrue (Directory.Exists (Path.Combine (TempFolder, "relativepath")), "#2");
-	}
-
-	[Test]
-	public void Delete ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.Delete.1";
-		DeleteDirectory (path);
-		try {
-			Directory.CreateDirectory (path);
-			Assert.IsTrue (Directory.Exists (path), "#1");
-		
-			Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
-			Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#2");
-		
-			Directory.Delete (path + DSC + "DirectoryTest.Test.Delete.1.2");
-			Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#3");
-			Assert.IsTrue (Directory.Exists (path), "#4");
-		
-			Directory.Delete (path);
-			Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#5");
-			Assert.IsFalse (Directory.Exists (path), "#6");
-	
-			Directory.CreateDirectory (path);
-			Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
-			Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#7");
-			Assert.IsTrue (Directory.Exists (path), "#8");
-		
-			Directory.Delete (path, true);
-			Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#9");
-			Assert.IsFalse (Directory.Exists (path), "#10");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]	
-	[ExpectedException(typeof(ArgumentException))]
-	public void DeleteArgumentException ()
-	{
-		Directory.Delete (string.Empty);
-	}
-
-	[Test]	
-	[ExpectedException(typeof(ArgumentException))]
-	public void DeleteArgumentException2 ()
-	{
-		Directory.Delete ("     ");
-	}
-
-	[Test]	
-	[ExpectedException(typeof(ArgumentException))]
-	public void DeleteArgumentException3 ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.4";
-		DeleteDirectory (path);
-		
-		path += Path.InvalidPathChars [0];
-		Directory.Delete (path);
-	}
-
-	[Test]	
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void DeleteArgumentNullException ()
-	{
-		Directory.Delete (null as string);
-	}
-
-	[Test]	
-	[ExpectedException(typeof(DirectoryNotFoundException))]
-	public void DeleteDirectoryNotFoundException ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.5";
-		DeleteDirectory (path);
-		
-		Directory.Delete (path);
-	}
-
-	[Test]	
-	[ExpectedException(typeof(IOException))]
-	public void DeleteArgumentException4 ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.6";
-		DeleteDirectory (path);
-		FileStream s = null;
-		Directory.CreateDirectory (path);
-		try {
-			s = File.Create (path + DSC + "DirectoryTest.Test.6");
-			Directory.Delete (path);
-		} finally {
-			if (s != null)
-				s.Close ();
-			DeleteDirectory (path);
-		};
-	}
-
-	[Test]
-	public void DeleteDirectoryOnExistingFileName ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
-		DeleteDirectory (path);
-		DeleteFile (path);
-		try {
-			FileStream fstream = File.Create (path);
-			fstream.Close ();
-
-			Directory.Delete (path);
-			Assert.Fail ("#1");
-		}
-		catch (IOException ex) {
-			Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
-			// exception message DOES NOT contains the path
-			Assert.IsFalse (ex.Message.IndexOf (path) >= 0, "#3");
-			Assert.IsNull (ex.InnerException, "#4");
-		}
-		finally {
-			DeleteDirectory (path);
-			DeleteFile (path);
-		}
-	}
-
-	[Test]
-	public void Exists ()
-	{
-		Assert.IsFalse (Directory.Exists (null as string));
-	}
-
-#if !MOBILE // We don't support yet the Process class.
-	[Test] // bug #78239
-	public void ExistsAccessDenied ()
-	{
-		if (!RunningOnUnix)
-			Assert.Ignore ("Not running on Unix."); // this test does not work on Windows.
-
-		string path = TempFolder + DSC + "ExistsAccessDenied";
-
-		Directory.CreateDirectory (path);
-		global::Mono.Posix.Syscall.chmod (path, 0);
-		try {
-			Assert.IsFalse (Directory.Exists(path + DSC + "b"));
-		} finally {
-			global::Mono.Posix.Syscall.chmod (path, (global::Mono.Posix.FileMode) 755);
-			Directory.Delete (path);
-		}
-	}
-#endif
-	
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void GetCreationTimeException1 ()
-	{
-		Directory.GetCreationTime (null as string);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetCreationTimeException2 ()
-	{
-		Directory.GetCreationTime (string.Empty);
-	}
-	
-	[Test]
-	public void GetCreationTimeException_NonExistingPath ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.GetCreationTime.1";
-		DeleteDirectory (path);
-		try {
-			DateTime time = Directory.GetCreationTime (path);
-
-			DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
-			Assert.AreEqual (expectedTime.Year, time.Year, "#1");
-			Assert.AreEqual (expectedTime.Month, time.Month, "#2");
-			Assert.AreEqual (expectedTime.Day, time.Day, "#3");
-			Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
-			Assert.AreEqual (expectedTime.Second, time.Second, "#5");
-			Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetCreationTimeException4 ()
-	{
-		Directory.GetCreationTime ("    ");
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetCreationTimeException5 ()
-	{
-		Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void GetCreationTimeUtcException1 ()
-	{
-		Directory.GetCreationTimeUtc (null as string);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetCreationTimeUtcException2 ()
-	{
-		Directory.GetCreationTimeUtc (string.Empty);
-	}
-	
-	[Test]
-	public void GetCreationTimeUtc_NonExistingPath ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.GetCreationTimeUtc.1";
-		DeleteDirectory (path);
-		
-		try {
-			DateTime time = Directory.GetCreationTimeUtc (path);
-
-			Assert.AreEqual (1601, time.Year, "#1");
-			Assert.AreEqual (1, time.Month, "#2");
-			Assert.AreEqual (1, time.Day, "#3");
-			Assert.AreEqual (0, time.Hour, "#4");
-			Assert.AreEqual (0, time.Second, "#5");
-			Assert.AreEqual (0, time.Millisecond, "#6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetCreationTimeUtcException4 ()
-	{
-		Directory.GetCreationTimeUtc ("    ");
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetCreationTimeUtcException5 ()
-	{
-		Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void GetLastAccessTime_Null ()
-	{
-		Directory.GetLastAccessTime (null as string);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastAccessTimeException2 ()
-	{
-		Directory.GetLastAccessTime (string.Empty);
-	}
-	
-	[Test]
-	public void GetLastAccessTime_NonExistingPath ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTime.1";
-		DeleteDirectory (path);
-		
-		try {
-			DateTime time = Directory.GetLastAccessTime (path);
-
-			DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
-			Assert.AreEqual (expectedTime.Year, time.Year, "#1");
-			Assert.AreEqual (expectedTime.Month, time.Month, "#2");
-			Assert.AreEqual (expectedTime.Day, time.Day, "#3");
-			Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
-			Assert.AreEqual (expectedTime.Second, time.Second, "#5");
-			Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastAccessTimeException4 ()
-	{
-		Directory.GetLastAccessTime ("    ");
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastAccessTimeException5 ()
-	{
-		Directory.GetLastAccessTime (Path.InvalidPathChars [0].ToString ());
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void GetLastAccessTimeUtc_Null ()
-	{
-		Directory.GetLastAccessTimeUtc (null as string);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastAccessTimeUtcException2 ()
-	{
-		Directory.GetLastAccessTimeUtc (string.Empty);
-	}
-	
-	[Test]
-	public void GetLastAccessTimeUtc_NonExistingPath ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTimeUtc.1";
-		DeleteDirectory (path);
-		try {
-			DateTime time = Directory.GetLastAccessTimeUtc (path);
-
-			Assert.AreEqual (1601, time.Year, "#1");
-			Assert.AreEqual (1, time.Month, "#2");
-			Assert.AreEqual (1, time.Day, "#3");
-			Assert.AreEqual (0, time.Hour, "#4");
-			Assert.AreEqual (0, time.Second, "#5");
-			Assert.AreEqual (0, time.Millisecond, "#6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastAccessTimeUtcException4 ()
-	{
-		Directory.GetLastAccessTimeUtc ("    ");
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastAccessTimeUtcException5 ()
-	{
-		Directory.GetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString ());
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void GetLastWriteTimeException1 ()
-	{
-		Directory.GetLastWriteTime (null as string);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastWriteTimeException2 ()
-	{
-		Directory.GetLastWriteTime (string.Empty);
-	}
-	
-	[Test]
-	public void GetLastWriteTime_NonExistingPath ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTime.1";
-		DeleteDirectory (path);
-		try {
-			DateTime time = Directory.GetLastWriteTime (path);
-
-			DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
-			Assert.AreEqual (expectedTime.Year, time.Year, "#1");
-			Assert.AreEqual (expectedTime.Month, time.Month, "#2");
-			Assert.AreEqual (expectedTime.Day, time.Day, "#3");
-			Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
-			Assert.AreEqual (expectedTime.Second, time.Second, "#5");
-			Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastWriteTimeException4 ()
-	{
-		Directory.GetLastWriteTime ("    ");
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastWriteTimeException5 ()
-	{
-		Directory.GetLastWriteTime (Path.InvalidPathChars [0].ToString ());
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void GetLastWriteTimeUtcException1 ()
-	{
-		Directory.GetLastWriteTimeUtc (null as string);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastWriteTimeUtcException2 ()
-	{
-		Directory.GetLastWriteTimeUtc (string.Empty);
-	}
-	
-	[Test]
-	public void GetLastWriteTimeUtc_NonExistingPath ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTimeUtc.1";
-		DeleteDirectory (path);
-		try {
-			DateTime time = Directory.GetLastWriteTimeUtc (path);
-
-			Assert.AreEqual (1601, time.Year, "#1");
-			Assert.AreEqual (1, time.Month, "#2");
-			Assert.AreEqual (1, time.Day, "#3");
-			Assert.AreEqual (0, time.Hour, "#4");
-			Assert.AreEqual (0, time.Second, "#5");
-			Assert.AreEqual (0, time.Millisecond, "#6");
-		} finally {
-			DeleteDirectory (path);
-		}
-		
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastWriteTimeUtcException4 ()
-	{
-		Directory.GetLastWriteTimeUtc ("    ");
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void GetLastWriteTimeUtcException5 ()
-	{
-		Directory.GetLastWriteTimeUtc (Path.InvalidPathChars[0].ToString ());
-	}
-
-	[Test]
-	public void Move_DestDirName_Empty ()
-	{
-		try {
-			Directory.Move (TempFolder, string.Empty);
-			Assert.Fail ("#A1");
-		} catch (ArgumentException ex) {
-			// Empty file name is not legal
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-			Assert.IsNull (ex.InnerException, "#A3");
-			Assert.IsNotNull (ex.Message, "#A4");
-			Assert.IsNotNull (ex.ParamName, "#A5");
-			Assert.AreEqual ("destDirName", ex.ParamName, "#A6");
-		}
-
-		try {
-			Directory.Move (TempFolder, "             ");
-			Assert.Fail ("#B1");
-		} catch (ArgumentException ex) {
-			// The path is not of a legal form
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-			Assert.IsNull (ex.InnerException, "#B3");
-			Assert.IsNotNull (ex.Message, "#B4");
-		}
-	}
-
-	[Test]
-	public void Move_DestDirName_Null ()
-	{
-		try {
-			Directory.Move (TempFolder, (string) null);
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException ex) {
-			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNotNull (ex.ParamName, "#5");
-			Assert.AreEqual ("destDirName", ex.ParamName, "#6");
-		}
-	}
-
-	[Test]
-	public void Move_SourceDirName_Empty ()
-	{
-		try {
-			Directory.Move (string.Empty, TempFolder);
-			Assert.Fail ("#A1");
-		} catch (ArgumentException ex) {
-			// Empty file name is not legal
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
-			Assert.IsNull (ex.InnerException, "#A3");
-			Assert.IsNotNull (ex.Message, "#A4");
-			Assert.IsNotNull (ex.ParamName, "#A5");
-			Assert.AreEqual ("sourceDirName", ex.ParamName, "#A6");
-		}
-
-		try {
-			Directory.Move ("             ", TempFolder);
-			Assert.Fail ("#B1");
-		} catch (ArgumentException ex) {
-			// The path is not of a legal form
-			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
-			Assert.IsNull (ex.InnerException, "#B3");
-			Assert.IsNotNull (ex.Message, "#B4");
-		}
-	}
-
-	[Test]
-	public void Move_SourceDirName_Null ()
-	{
-		try {
-			Directory.Move ((string) null, TempFolder);
-			Assert.Fail ("#1");
-		} catch (ArgumentNullException ex) {
-			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-			Assert.IsNotNull (ex.ParamName, "#5");
-			Assert.AreEqual ("sourceDirName", ex.ParamName, "#6");
-		}
-	}
-
-	[Test]
-	public void MoveDirectory ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.9";
-		string path2 = TempFolder + DSC + "DirectoryTest.Test.10";
-		DeleteDirectory (path);
-		DeleteDirectory (path2);
-		try {
-			Directory.CreateDirectory (path);
-			Directory.CreateDirectory (path + DSC + "dir");
-			Assert.IsTrue (Directory.Exists (path + DSC + "dir"), "#1");
-		
-			Directory.Move (path, path2);
-			Assert.IsFalse (Directory.Exists (path + DSC + "dir"), "#2");
-			Assert.IsTrue (Directory.Exists (path2 + DSC + "dir"), "#3");
-		} finally {
-			DeleteDirectory (path);
-			DeleteDirectory (path2);
-			if (Directory.Exists (path2 + DSC + "dir"))
-				Directory.Delete (path2 + DSC + "dir", true);
-		}
-	}
-
-	[Test]
-	[ExpectedException (typeof (IOException))]
-	public void MoveDirectory_Same ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.8";
-		DeleteDirectory (path);
-		try {
-			Directory.Move (path, path);
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	public void MoveFile ()
-	{
-		string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
-		string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
-
-		using (StreamWriter sw = File.CreateText (tempFile1)) {
-			sw.Write ("temp1");
-		}
-		Assert.IsFalse (File.Exists (tempFile2), "#1");
-		Directory.Move (tempFile1, tempFile2);
-		Assert.IsFalse (File.Exists (tempFile1), "#2");
-		Assert.IsTrue (File.Exists (tempFile2), "#3");
-		using (StreamReader sr = File.OpenText (tempFile2)) {
-			Assert.AreEqual ("temp1", sr.ReadToEnd (), "#4");
-		}
-	}
-
-	[Test]
-	public void MoveFile_DestDir_Exists ()
-	{
-		string tempFile = Path.Combine (TempFolder, "temp1.txt");
-		string tempDir = Path.Combine (TempFolder, "temp2");
-
-		using (StreamWriter sw = File.CreateText (tempFile)) {
-			sw.Write ("temp1");
-		}
-		Directory.CreateDirectory (tempDir);
-
-		try {
-			Directory.Move (tempFile, tempDir);
-			Assert.Fail ("#A1");
-		} catch (IOException ex) {
-			// Cannot create a file when that file already exists
-			Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
-			Assert.IsNull (ex.InnerException, "#A3");
-			Assert.IsNotNull (ex.Message, "#A4");
-		}
-
-		Assert.IsTrue (File.Exists (tempFile), "#B1");
-		Assert.IsFalse (File.Exists (tempDir), "#B2");
-		Assert.IsTrue (Directory.Exists (tempDir), "#B3");
-	}
-
-	[Test]
-	public void MoveFile_DestFile_Exists ()
-	{
-		string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
-		string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
-
-		using (StreamWriter sw = File.CreateText (tempFile1)) {
-			sw.Write ("temp1");
-		}
-		using (StreamWriter sw = File.CreateText (tempFile2)) {
-			sw.Write ("temp2");
-		}
-
-		try {
-			Directory.Move (tempFile1, tempFile2);
-			Assert.Fail ("#A1");
-		} catch (IOException ex) {
-			// Cannot create a file when that file already exists
-			Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
-			Assert.IsNull (ex.InnerException, "#A3");
-			Assert.IsNotNull (ex.Message, "#A4");
-		}
-
-		Assert.IsTrue (File.Exists (tempFile1), "#B1");
-		using (StreamReader sr = File.OpenText (tempFile1)) {
-			Assert.AreEqual ("temp1", sr.ReadToEnd (), "#B2");
-		}
-
-		Assert.IsTrue (File.Exists (tempFile2), "#C1");
-		using (StreamReader sr = File.OpenText (tempFile2)) {
-			Assert.AreEqual ("temp2", sr.ReadToEnd (), "#C2");
-		}
-	}
-
-	[Test]
-	public void MoveFile_Same ()
-	{
-		string tempFile = Path.Combine (TempFolder, "temp.txt");
-
-		try {
-			Directory.Move (tempFile, tempFile);
-			Assert.Fail ("#1");
-		} catch (IOException ex) {
-			// Source and destination path must be different
-			Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
-			Assert.IsNull (ex.InnerException, "#3");
-			Assert.IsNotNull (ex.Message, "#4");
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	[Ignore ("On IA64, causes nunit to abort due to bug #76388")]
-	public void MoveException4 ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.13";
-		path += Path.InvalidPathChars [0];
-		string path2 = TempFolder + DSC + "DirectoryTest.Test.13";
-		DeleteDirectory (path);
-		DeleteDirectory (path2);
-		try {
-			Directory.CreateDirectory (path2);
-			Directory.Move (path2, path);
-		} finally {
-			DeleteDirectory (path);
-			DeleteDirectory (path2);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(DirectoryNotFoundException))]
-	public void MoveException5 ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.14";
-		DeleteDirectory (path);
-		try {
-			Directory.Move (path, path + "Test.Test");
-		} finally {
-			DeleteDirectory (path);
-			DeleteDirectory (path + "Test.Test");
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(IOException))]
-	public void MoveDirectory_Dest_SubDir ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.15";
-		DeleteDirectory (path);
-		try {
-			Directory.CreateDirectory (path);
-			Directory.Move (path, path + DSC + "dir");
-		} finally {
-			DeleteDirectory (path);
-			DeleteDirectory (path + DSC + "dir");
-		}
-	}
-
-	[Test]
-	[ExpectedException (typeof (IOException))]
-	public void MoveDirectory_Dest_Exists ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.Test.16";
-		string path2 = TempFolder + DSC + "DirectoryTest.Test.17";
-		
-		DeleteDirectory (path);
-		DeleteDirectory (path2);
-		try {
-			Directory.CreateDirectory (path);
-			Directory.CreateDirectory (path2);
-			Directory.Move (path, path2);
-		} finally {
-			DeleteDirectory (path);
-			DeleteDirectory (path2);
-		}
-	}
-	
-	[Test]
-	public void CreationTime ()
-	{
-		if (RunningOnUnix)
-			Assert.Ignore ("Unix doesn't support CreationTime");
-
-		string path = TempFolder + DSC + "DirectoryTest.CreationTime.1";
-		DeleteDirectory (path);
-		
-		try {
-			Directory.CreateDirectory (path);
-			Directory.SetCreationTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
-
-			DateTime time = Directory.GetCreationTime (path);
-			Assert.AreEqual (2003, time.Year, "#A1");
-			Assert.AreEqual (6, time.Month, "#A2");
-			Assert.AreEqual (4, time.Day, "#A3");
-			Assert.AreEqual (6, time.Hour, "#A4");
-			Assert.AreEqual (4, time.Minute, "#A5");
-			Assert.AreEqual (0, time.Second, "#A6");
-		
-			time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetCreationTimeUtc (path));
-			Assert.AreEqual (2003, time.Year, "#B1");
-			Assert.AreEqual (6, time.Month, "#B2");
-			Assert.AreEqual (4, time.Day, "#B3");
-			Assert.AreEqual (6, time.Hour, "#B4");
-			Assert.AreEqual (4, time.Minute, "#B5");
-			Assert.AreEqual (0, time.Second, "#B6");
-
-			Directory.SetCreationTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
-			time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetCreationTime (path));
-			Assert.AreEqual (2003, time.Year, "#C1");
-			Assert.AreEqual (6, time.Month, "#C2");
-			Assert.AreEqual (4, time.Day, "#C3");
-			Assert.AreEqual (6, time.Hour, "#C4");
-			Assert.AreEqual (4, time.Minute, "#C5");
-			Assert.AreEqual (0, time.Second, "#C6");
-
-			time = Directory.GetCreationTimeUtc (path);
-			Assert.AreEqual (2003, time.Year, "#D1");
-			Assert.AreEqual (6, time.Month, "#D2");
-			Assert.AreEqual (4, time.Day, "#D3");
-			Assert.AreEqual (6, time.Hour, "#D4");
-			Assert.AreEqual (4, time.Minute, "#D5");
-			Assert.AreEqual (0, time.Second, "#D6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	public void LastAccessTime ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.AccessTime.1";
-		DeleteDirectory (path);
-		
-		try {
-			Directory.CreateDirectory (path);
-			Directory.SetLastAccessTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
-
-			DateTime time = Directory.GetLastAccessTime (path);
-			Assert.AreEqual (2003, time.Year, "#A1");
-			Assert.AreEqual (6, time.Month, "#A2");
-			Assert.AreEqual (4, time.Day, "#A3");
-			Assert.AreEqual (6, time.Hour, "#A4");
-			Assert.AreEqual (4, time.Minute, "#A5");
-			Assert.AreEqual (0, time.Second, "#A6");
-		
-			time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastAccessTimeUtc (path));
-			Assert.AreEqual (2003, time.Year, "#B1");
-			Assert.AreEqual (6, time.Month, "#B2");
-			Assert.AreEqual (4, time.Day, "#B3");
-			Assert.AreEqual (6, time.Hour, "#B4");
-			Assert.AreEqual (4, time.Minute, "#B5");
-			Assert.AreEqual (0, time.Second, "#B6");
-
-			Directory.SetLastAccessTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
-			time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastAccessTime (path));
-			Assert.AreEqual (2003, time.Year, "#C1");
-			Assert.AreEqual (6, time.Month, "#C2");
-			Assert.AreEqual (4, time.Day, "#C3");
-			Assert.AreEqual (6, time.Hour, "#C4");
-			Assert.AreEqual (4, time.Minute, "#C5");
-			Assert.AreEqual (0, time.Second, "#C6");
-
-			time = Directory.GetLastAccessTimeUtc (path);
-			Assert.AreEqual (2003, time.Year, "#D1");
-			Assert.AreEqual (6, time.Month, "#D2");
-			Assert.AreEqual (4, time.Day, "#D3");
-			Assert.AreEqual (6, time.Hour, "#D4");
-			Assert.AreEqual (4, time.Minute, "#D5");
-			Assert.AreEqual (0, time.Second, "#D6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	public void LastWriteTime ()
-	{
-		string path = TempFolder + DSC + "DirectoryTest.WriteTime.1";
-		DeleteDirectory (path);
-		
-		try {
-			Directory.CreateDirectory (path);
-			Directory.SetLastWriteTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
-
-			DateTime time = Directory.GetLastWriteTime (path);
-			Assert.AreEqual (2003, time.Year, "#A1");
-			Assert.AreEqual (6, time.Month, "#A2");
-			Assert.AreEqual (4, time.Day, "#A3");
-			Assert.AreEqual (6, time.Hour, "#A4");
-			Assert.AreEqual (4, time.Minute, "#A5");
-			Assert.AreEqual (0, time.Second, "#A6");
-		
-			time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastWriteTimeUtc (path));
-			Assert.AreEqual (2003, time.Year, "#B1");
-			Assert.AreEqual (6, time.Month, "#B2");
-			Assert.AreEqual (4, time.Day, "#B3");
-			Assert.AreEqual (6, time.Hour, "#B4");
-			Assert.AreEqual (4, time.Minute, "#B5");
-			Assert.AreEqual (0, time.Second, "#B6");
-
-			Directory.SetLastWriteTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
-			time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastWriteTime (path));
-			Assert.AreEqual (2003, time.Year, "#C1");
-			Assert.AreEqual (6, time.Month, "#C2");
-			Assert.AreEqual (4, time.Day, "#C3");
-			Assert.AreEqual (6, time.Hour, "#C4");
-			Assert.AreEqual (4, time.Minute, "#C5");
-			Assert.AreEqual (0, time.Second, "#C6");
-
-			time = Directory.GetLastWriteTimeUtc (path);
-			Assert.AreEqual (2003, time.Year, "#D1");
-			Assert.AreEqual (6, time.Month, "#D2");
-			Assert.AreEqual (4, time.Day, "#D3");
-			Assert.AreEqual (6, time.Hour, "#D4");
-			Assert.AreEqual (4, time.Minute, "#D5");
-			Assert.AreEqual (0, time.Second, "#D6");
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void SetLastWriteTimeException1 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTime (null as string, time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]	
-	public void SetLastWriteTimeException2 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTime (string.Empty, time);
-	}
-	
-	[Test]
-	[ExpectedException(typeof(FileNotFoundException))]
-	public void SetLastWriteTimeException3 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTime.2";
-		DeleteDirectory (path);
-		try {
-			Directory.SetLastWriteTime (path, time);
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastWriteTimeException4 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTime ("    ", time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastWriteTimeException5 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTime (Path.InvalidPathChars [0].ToString (), time);
-	}
-
-//	[Test]
-//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
-//	public void SetLastWriteTimeException6 ()
-//	{
-//		DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
-//		string path = TempFolder + Path.DirectorySeparatorChar + "DirectoryTest.SetLastWriteTime.1";
-//
-//		try {
-//			if (!Directory.Exists (path))
-//				Directory.CreateDirectory (path);
-//		
-//			Directory.SetLastWriteTime (path, time);
-//		} finally {
-//			DeleteDirectory (path);
-//		}
-//
-//	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void SetLastWriteTimeUtcException1 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTimeUtc (null as string, time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastWriteTimeUtcException2 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTimeUtc (string.Empty, time);
-	}
-	
-	[Test]
-	[ExpectedException(typeof(FileNotFoundException))]
-	public void SetLastWriteTimeUtcException3 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.2";
-		DeleteDirectory (path);
-		try {
-			Directory.SetLastWriteTimeUtc (path, time);
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastWriteTimeUtcException4 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTimeUtc ("    ", time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastWriteTimeUtcException5 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastWriteTimeUtc (Path.InvalidPathChars [0].ToString (), time);
-	}
-
-//	[Test]
-//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
-//	public void SetLastWriteTimeUtcException6 ()
-//	{
-//		DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
-//		string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.1";
-//
-//		if (!Directory.Exists (path))
-//			Directory.CreateDirectory (path);
-//		try {
-//			Directory.SetLastWriteTimeUtc (path, time);
-//		} finally {
-//			DeleteDirectory (path);
-//		}
-//	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void SetLastAccessTimeException1 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTime (null as string, time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastAccessTimeException2 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTime (string.Empty, time);
-	}
-	
-	[Test]
-	[ExpectedException(typeof(FileNotFoundException))]
-	public void SetLastAccessTimeException3 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.2";
-		DeleteDirectory (path);
-		try {
-			Directory.SetLastAccessTime (path, time);
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastAccessTimeException4 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTime ("    ", time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastAccessTimeException5 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTime (Path.InvalidPathChars [0].ToString (), time);
-	}
-
-//	[Test]
-//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
-//	public void SetLastAccessTimeException6 ()
-//	{
-//		DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
-//		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.1";
-//
-//		if (!Directory.Exists (path))
-//			Directory.CreateDirectory (path);
-//		try {
-//			Directory.SetLastAccessTime (path, time);
-//		} finally {
-//			DeleteDirectory (path);
-//		}
-//
-//	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void SetLastAccessTimeUtcException1 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTimeUtc (null as string, time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastAccessTimeUtcException2 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTimeUtc (string.Empty, time);
-	}
-	
-	[Test]
-	[ExpectedException(typeof(FileNotFoundException))]
-	public void SetLastAccessTimeUtcException3 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
-		DeleteDirectory (path);
-		try {
-			Directory.SetLastAccessTimeUtc (path, time);
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastAccessTimeUtcException4 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTimeUtc ("    ", time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetLastAccessTimeUtcException5 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString (), time);
-	}
-
-//	[Test]
-//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
-//	public void SetLastAccessTimeUtcException6 ()
-//	{
-//		DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
-//		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
-//
-//		if (!Directory.Exists (path))
-//			Directory.CreateDirectory (path);
-//		try {
-//			Directory.SetLastAccessTimeUtc (path, time);
-//		} finally {
-//			DeleteDirectory (path);
-//		}
-//	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void SetCreationTimeException1 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTime (null as string, time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetCreationTimeException2 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTime (string.Empty, time);
-	}
-	
-	[Test]
-	[ExpectedException(typeof(FileNotFoundException))]
-	public void SetCreationTimeException3 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.2";
-		DeleteDirectory (path);
-		
-		try {
-			Directory.SetCreationTime (path, time);
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetCreationTimeException4 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTime ("    ", time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetCreationTimeException5 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTime (Path.InvalidPathChars [0].ToString (), time);
-	}
-
-//	[Test]
-//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
-//	public void SetCreationTimeException6 ()
-//	{
-//		DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
-//		string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.1";
-//
-//		if (!Directory.Exists (path))
-//			Directory.CreateDirectory (path);
-//		try {
-//			Directory.SetCreationTime (path, time);
-//			DeleteDirectory (path);
-//		} finally {
-//			DeleteDirectory (path);
-//		}
-//
-//	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentNullException))]
-	public void SetCreationTimeUtcException1 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTimeUtc (null as string, time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetCreationTimeUtcException2 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTimeUtc (string.Empty, time);
-	}
-	
-	[Test]
-	[ExpectedException(typeof(FileNotFoundException))]
-	public void SetCreationTimeUtcException3 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
-		DeleteDirectory (path);
-		
-		try {
-			Directory.SetCreationTimeUtc (path, time);
-			DeleteDirectory (path);
-		} finally {
-			DeleteDirectory (path);
-		}
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetCreationTimeUtcException4 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTimeUtc ("    ", time);
-	}
-
-	[Test]
-	[ExpectedException(typeof(ArgumentException))]
-	public void SetCreationTimeUtcException5 ()
-	{
-		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
-		Directory.SetCreationTimeUtc (Path.InvalidPathChars [0].ToString (), time);
-	}
-
-//	[Test]
-//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
-//	public void SetCreationTimeUtcException6 ()
-//	{
-//		DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
-//		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
-//
-//		if (!Directory.Exists (path))
-//			Directory.CreateDirectory (path);
-//		try {
-//			Directory.SetCreationTimeUtc (path, time);
-//			DeleteDirectory (path);
-//		} finally {
-//			DeleteDirectory (path);
-//		}
-//	}
-
-	[Test]
-	public void GetDirectories ()
-	{
-		string path = TempFolder;
-		string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetDirectories";
-		DeleteDirectory (DirPath);
-		
-		try {
-			Directory.CreateDirectory (DirPath);
-		
-			string [] dirs = Directory.GetDirectories (path);
-		
-			foreach (string directory in dirs) {
-			
-				if (directory == DirPath)
-					return;
-			}
-		
-			Assert.Fail ("Directory Not Found");
-		} finally {
-			DeleteDirectory (DirPath);
-		}
-	}
-
-	[Test] // bug #346123
-	public void GetDirectories_Backslash ()
-	{
-		if (!RunningOnUnix)
-			// on Windows, backslash is used as directory separator
-			Assert.Ignore ("Not running on Unix.");
-
-		string dir = Path.Combine (TempFolder, @"sub\dir");
-		Directory.CreateDirectory (dir);
-
-		Assert.IsTrue (Directory.Exists (dir), "#A1");
-		Assert.IsFalse (Directory.Exists (Path.Combine (TempFolder, "dir")), "#A2");
-
-		string [] dirs = Directory.GetDirectories (TempFolder);
-		Assert.AreEqual (1, dirs.Length, "#B1");
-		Assert.AreEqual (dir, dirs [0], "#B2");
-	}
-
-	[Test]
-	public void GetParentOfRootDirectory ()
-	{
-		DirectoryInfo info;
-
-		info = Directory.GetParent (Path.GetPathRoot (Path.GetTempPath ()));
-		Assert.IsNull (info);
-	}
-	
-	[Test]
-	public void GetFiles ()
-	{
-		string path = TempFolder;
-		string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetFiles";
-		if (File.Exists (DirPath))
-			File.Delete (DirPath);
-		
-		try {
-			File.Create (DirPath).Close ();
-			string [] files = Directory.GetFiles (TempFolder);
-			foreach (string directory in files) {
-			
-				if (directory == DirPath)
-					return;
-			}
-		
-			Assert.Fail ("File Not Found");
-		} finally {
-			if (File.Exists (DirPath))
-				File.Delete (DirPath);
-		}
-	}
-
-	[Test] // bug #346123
-	public void GetFiles_Backslash ()
-	{
-		if (!RunningOnUnix)
-			// on Windows, backslash is used as directory separator
-			Assert.Ignore ("Not running on Unix.");
-
-		string file = Path.Combine (TempFolder, @"doc\temp1.file");
-		File.Create (file).Close ();
-
-		Assert.IsTrue (File.Exists (file), "#A1");
-		Assert.IsFalse (File.Exists (Path.Combine (TempFolder, "temp1.file")), "#A2");
-
-		string [] files = Directory.GetFiles (TempFolder);
-		Assert.AreEqual (1, files.Length, "#B1");
-		Assert.AreEqual (file, files [0], "#B2");
-	}
-
-	[Test] // bug #82212 and bug #325107
-	public void GetFiles_Pattern ()
-	{
-		string [] files = Directory.GetFiles (TempFolder, "*.*");
-		Assert.IsNotNull (files, "#A1");
-		Assert.AreEqual (0, files.Length, "#A2");
-
-		string tempFile1 = Path.Combine (TempFolder, "tempFile1");
-		File.Create (tempFile1).Close ();
-
-		files = Directory.GetFiles (TempFolder, "*.*");
-		Assert.IsNotNull (files, "#B1");
-		Assert.AreEqual (1, files.Length, "#B2");
-		Assert.AreEqual (tempFile1, files [0], "#B3");
-
-		string tempFile2 = Path.Combine (TempFolder, "FileTemp2.tmp");
-		File.Create (tempFile2).Close ();
-
-		files = Directory.GetFiles (TempFolder, "*.*");
-		Assert.IsNotNull (files, "#C1");
-		Assert.AreEqual (2, files.Length, "#C2");
-
-		files = Directory.GetFiles (TempFolder, "temp*.*");
-		Assert.IsNotNull (files, "#D1");
-		Assert.AreEqual (1, files.Length, "#D2");
-		Assert.AreEqual (tempFile1, files [0], "#D3");
-
-		string tempFile3 = Path.Combine (TempFolder, "tempFile3.txt");
-		File.Create (tempFile3).Close ();
-
-		files = Directory.GetFiles (TempFolder, "*File*.*");
-		Assert.IsNotNull (files, "#E1");
-		Assert.AreEqual (3, files.Length, "#E2");
-
-		files = Directory.GetFiles (TempFolder, "*File*.tmp");
-		Assert.IsNotNull (files, "#F1");
-		Assert.AreEqual (1, files.Length, "#F2");
-		Assert.AreEqual (tempFile2, files [0], "#F3");
-
-		files = Directory.GetFiles (TempFolder, "*tempFile*");
-		Assert.IsNotNull (files, "#G1");
-		Assert.AreEqual (2, files.Length, "#G2");
-
-		files = Directory.GetFiles (TempFolder, "*tempFile1");
-		Assert.IsNotNull (files, "#H1");
-		Assert.AreEqual (1, files.Length, "#H2");
-		Assert.AreEqual (tempFile1, files [0], "#H3");
-
-		files = Directory.GetFiles (TempFolder, "*.txt");
-		Assert.IsNotNull (files, "#I1");
-		Assert.AreEqual (1, files.Length, "#I2");
-		Assert.AreEqual (tempFile3, files [0], "#I3");
-
-		files = Directory.GetFiles (TempFolder, "*.t*");
-		Assert.IsNotNull (files, "#J1");
-		Assert.AreEqual (2, files.Length, "#J2");
-
-		files = Directory.GetFiles (TempFolder, "temp*.*");
-		Assert.IsNotNull (files, "#K1");
-		Assert.AreEqual (2, files.Length, "#K2");
-
-		File.Delete (tempFile1);
-
-		files = Directory.GetFiles (TempFolder, "temp*.*");
-		Assert.IsNotNull (files, "#L1");
-		Assert.AreEqual (1, files.Length, "#L2");
-		Assert.AreEqual (tempFile3, files [0], "#L3");
-
-		files = Directory.GetFiles (TempFolder, ".*");
-		Assert.IsNotNull (files, "#M1");
-		Assert.AreEqual (0, files.Length, "#M2");
-
-		string tempFile4 = Path.Combine (TempFolder, "tempFile4.");
-		File.Create (tempFile4).Close ();
-
-		files = Directory.GetFiles (TempFolder, "temp*.");
-		Assert.IsNotNull (files, "#N1");
-		Assert.AreEqual (1, files.Length, "#N2");
-		if (RunningOnUnix)
-			Assert.AreEqual (tempFile4, files [0], "#N3");
-		else // on Windows, the trailing dot is automatically trimmed
-			Assert.AreEqual (Path.Combine (TempFolder, "tempFile4"), files [0], "#N3");
-	}
-
-	[Test]
-	public void GetFiles_580090 ()
-	{
-		string cwd = Directory.GetCurrentDirectory ();
-		Directory.SetCurrentDirectory (Path.GetTempPath ());
-
-		string tempFile = Path.Combine (TempFolder, "tempFile.txt");
-		File.Create (tempFile).Close ();
-
-		try {
-			string [] files = Directory.GetFiles (".", TempSubFolder + DSC + "*.t*");
-			Assert.IsNotNull (files, "#J1");
-			Assert.AreEqual (1, files.Length, "#J2");
-		}
-		finally	{
-			Directory.SetCurrentDirectory (cwd);
-		}
-	}
-
-
-	[Test]
-	[ExpectedException (typeof (ArgumentNullException))]
-	public void SetCurrentDirectoryNull ()
-	{
-		Directory.SetCurrentDirectory (null);
-	}
-
-	[Test]
-	[ExpectedException (typeof (ArgumentException))]
-	public void SetCurrentDirectoryEmpty ()
-	{
-		Directory.SetCurrentDirectory (String.Empty);
-	}
-
-	[Test]
-	[ExpectedException (typeof (ArgumentException))]
-	public void SetCurrentDirectoryWhitespace ()
-	{
-		Directory.SetCurrentDirectory (" ");
-	}
-
-
-	[Test]
-	public void GetNoFiles () // Bug 58875. This throwed an exception on windows.
-	{
-		DirectoryInfo dir = new DirectoryInfo (".");
-		dir.GetFiles ("*.nonext");
-	}
-
-	[Test]
-	public void FilenameOnly () // bug 78209
-	{
-		Directory.GetParent ("somefile");
-	}
-
-	private static bool RunningOnUnix {
-		get {
-			// check for Unix platforms - see FAQ for more details
-			// http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
-			int platform = (int) Environment.OSVersion.Platform;
-			return ((platform == 4) || (platform == 128) || (platform == 6));
-		}
-	}
-
-	private void DeleteDirectory (string path)
-	{
-		if (Directory.Exists (path))
-			Directory.Delete (path, true);
-	}
-
-	private void DeleteFile (string path)
-	{
-		if (File.Exists (path))
-			File.Delete (path);
-	}
-}
-}
+//
+// System.IO.Directory
+//
+// Authors: 
+//	Ville Palo (vi64pa@kolumbus.fi)
+//
+// (C) 2003 Ville Palo
+//
+// TODO: Find out why ArgumentOutOfRange tests does not release directories properly
+//
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.IO;
+using System.Text;
+using System.Threading;
+
+#if !MONOTOUCH && !MOBILE_STATIC
+using Mono.Unix;
+#endif
+using NUnit.Framework;
+
+namespace MonoTests.System.IO
+{
+
+[TestFixture]
+public class DirectoryTest
+{
+	static readonly string TempSubFolder = "MonoTests.System.IO.Tests";
+	string TempFolder = Path.Combine (Path.GetTempPath (), TempSubFolder);
+	static readonly char DSC = Path.DirectorySeparatorChar;
+
+	[SetUp]
+	public void SetUp ()
+	{
+		if (!Directory.Exists (TempFolder))
+			Directory.CreateDirectory (TempFolder);
+
+		Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
+	}
+	
+	[TearDown]
+	public void TearDown ()
+	{
+		if (Directory.Exists (TempFolder))
+			Directory.Delete (TempFolder, true);
+	}
+#if !MONOTOUCH && !MOBILE_STATIC
+	[Test] //BXC #12461
+	public void EnumerateFilesListSymlinks ()
+	{
+		if (!RunningOnUnix)
+			Assert.Ignore ("Not running on Unix.");
+
+		var afile = Path.Combine (TempFolder, "afile.src");
+		var bfile = Path.Combine (TempFolder, "bfile.src");
+		var cdir = Path.Combine (TempFolder, "cdir.src");
+
+		File.AppendAllText (afile, "hello");
+		var info = new UnixFileInfo (afile);
+		info.CreateSymbolicLink (bfile);
+		Directory.CreateDirectory (cdir);
+
+		var files0 = Directory.GetFiles (TempFolder, "*.src");
+		Array.Sort (files0);
+		Assert.AreEqual (2, files0.Length, "#1");
+		Assert.AreEqual (afile, files0 [0], "#2");
+		Assert.AreEqual (bfile, files0 [1], "#3");
+
+		var files1 = new List<string> (Directory.EnumerateFiles (TempFolder, "*.src")).ToArray ();
+		Array.Sort (files1);
+		Assert.AreEqual (2, files1.Length, "#1.b");
+		Assert.AreEqual (afile, files1 [0], "#2.b");
+		Assert.AreEqual (bfile, files1 [1], "#3.b");
+
+		var files2 = Directory.GetFileSystemEntries (TempFolder, "*.src");
+		Array.Sort (files2);
+		Assert.AreEqual (3, files2.Length, "#1.c");
+		Assert.AreEqual (afile, files2 [0], "#2.c");
+		Assert.AreEqual (bfile, files2 [1], "#3.c");
+		Assert.AreEqual (cdir, files2 [2], "#4.c");
+
+		var files3 = new List<string> (Directory.EnumerateFileSystemEntries (TempFolder, "*.src")).ToArray ();
+		Array.Sort (files3);
+		Assert.AreEqual (3, files3.Length, "#1.d");
+		Assert.AreEqual (afile, files3 [0], "#2.d");
+		Assert.AreEqual (bfile, files3 [1], "#3.d");
+		Assert.AreEqual (cdir, files3 [2], "#4.d");
+	}
+#endif
+	[Test]
+	public void CreateDirectory ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.1";
+		DeleteDirectory (path);
+		try {
+			DirectoryInfo info = Directory.CreateDirectory (path);
+			Assert.IsTrue (info.Exists, "#1");
+			Assert.AreEqual (".1", info.Extension, "#2");
+			Assert.IsTrue (info.FullName.EndsWith ("DirectoryTest.Test.1"), "#3");
+			Assert.AreEqual ("DirectoryTest.Test.1", info.Name, "#4");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+	
+	/* Commented out: a directory named ":" is legal in unix
+	[Test]
+	public void CreateDirectoryNotSupportedException ()
+	{
+		DeleteDirectory (":");
+		try {
+			DirectoryInfo info = Directory.CreateDirectory (":");
+			Assert.Fail ("#1");
+		} catch (ArgumentException ex) {
+			// The path is not of a legal form
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNull (ex.ParamName, "#5");
+		}
+		DeleteDirectory (":");
+	}
+	*/
+
+	[Test]
+	public void CreateDirectory_Path_Null ()
+	{
+		try {
+			Directory.CreateDirectory (null as string);
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException ex) {
+			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.AreEqual ("path", ex.ParamName, "#5");
+		}
+	}
+
+	[Test]
+	public void CreateDirectory_Path_Empty ()
+	{
+		try {
+			Directory.CreateDirectory (string.Empty);
+			Assert.Fail ("#1");
+		} catch (ArgumentException ex) {
+			// Path cannot be the empty string or all whitespace
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNull (ex.ParamName, "#5");
+		}
+	}
+
+	[Test]
+	public void CreateDirectory_Path_Whitespace ()
+	{
+		try {
+			Directory.CreateDirectory ("            ");
+			Assert.Fail ("#1");
+		} catch (ArgumentException ex) {
+			// The path is not of a legal form
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNull (ex.ParamName, "#5");
+		}
+	}
+
+	[Test]
+	public void CreateDirectory_Path_InvalidChars ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test";
+		DeleteDirectory (path);
+		try {
+			path += '\x00';
+			path += ".2";
+			DirectoryInfo info = Directory.CreateDirectory (path);
+			Assert.Fail ("#1");
+		} catch (ArgumentException ex) {
+			// The path contains illegal characters
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNull (ex.ParamName, "#5");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	public void CreateDirectoryAlreadyExists ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.Exists";
+		DeleteDirectory (path);
+		try {
+			DirectoryInfo info1 = Directory.CreateDirectory (path);
+			DirectoryInfo info2 = Directory.CreateDirectory (path);
+
+			Assert.IsTrue (info2.Exists, "#1");
+			Assert.IsTrue (info2.FullName.EndsWith ("DirectoryTest.Test.Exists"), "#2");
+			Assert.AreEqual ("DirectoryTest.Test.Exists", info2.Name, "#3");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	public void CreateDirectoryAlreadyExistsAsFile ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
+		DeleteDirectory (path);
+		DeleteFile (path);
+		try {
+			FileStream fstream = File.Create (path);
+			fstream.Close();
+
+			DirectoryInfo dinfo = Directory.CreateDirectory (path);
+			Assert.Fail ("#1");
+		} catch (IOException ex) {
+			Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
+			// exception message contains the path
+			Assert.IsTrue (ex.Message.Contains (path), "#3");
+			Assert.IsNull (ex.InnerException, "#4");
+		} finally {
+			DeleteDirectory (path);
+			DeleteFile (path);
+		}
+	}
+
+	[Test]
+	public void CreateDirectoryRelativePath ()
+	{
+		var path = Path.Combine (TempFolder, "relativepath", "not_this_folder");
+		path = Path.Combine (path, "..");
+
+		var res = Directory.CreateDirectory (path);
+		Assert.AreEqual ("relativepath", res.ToString (), "#1");
+		Assert.IsTrue (Directory.Exists (Path.Combine (TempFolder, "relativepath")), "#2");
+	}
+
+	[Test]
+	public void Delete ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.Delete.1";
+		DeleteDirectory (path);
+		try {
+			Directory.CreateDirectory (path);
+			Assert.IsTrue (Directory.Exists (path), "#1");
+		
+			Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
+			Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#2");
+		
+			Directory.Delete (path + DSC + "DirectoryTest.Test.Delete.1.2");
+			Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#3");
+			Assert.IsTrue (Directory.Exists (path), "#4");
+		
+			Directory.Delete (path);
+			Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#5");
+			Assert.IsFalse (Directory.Exists (path), "#6");
+	
+			Directory.CreateDirectory (path);
+			Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
+			Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#7");
+			Assert.IsTrue (Directory.Exists (path), "#8");
+		
+			Directory.Delete (path, true);
+			Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#9");
+			Assert.IsFalse (Directory.Exists (path), "#10");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]	
+	[ExpectedException(typeof(ArgumentException))]
+	public void DeleteArgumentException ()
+	{
+		Directory.Delete (string.Empty);
+	}
+
+	[Test]	
+	[ExpectedException(typeof(ArgumentException))]
+	public void DeleteArgumentException2 ()
+	{
+		Directory.Delete ("     ");
+	}
+
+	[Test]	
+	[ExpectedException(typeof(ArgumentException))]
+	public void DeleteArgumentException3 ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.4";
+		DeleteDirectory (path);
+		
+		path += Path.InvalidPathChars [0];
+		Directory.Delete (path);
+	}
+
+	[Test]	
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void DeleteArgumentNullException ()
+	{
+		Directory.Delete (null as string);
+	}
+
+	[Test]	
+	[ExpectedException(typeof(DirectoryNotFoundException))]
+	public void DeleteDirectoryNotFoundException ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.5";
+		DeleteDirectory (path);
+		
+		Directory.Delete (path);
+	}
+
+	[Test]	
+	[ExpectedException(typeof(IOException))]
+	public void DeleteArgumentException4 ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.6";
+		DeleteDirectory (path);
+		FileStream s = null;
+		Directory.CreateDirectory (path);
+		try {
+			s = File.Create (path + DSC + "DirectoryTest.Test.6");
+			Directory.Delete (path);
+		} finally {
+			if (s != null)
+				s.Close ();
+			DeleteDirectory (path);
+		};
+	}
+
+	[Test]
+	public void DeleteDirectoryOnExistingFileName ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
+		DeleteDirectory (path);
+		DeleteFile (path);
+		try {
+			FileStream fstream = File.Create (path);
+			fstream.Close ();
+
+			Directory.Delete (path);
+			Assert.Fail ("#1");
+		}
+		catch (IOException ex) {
+			Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
+			// exception message DOES NOT contains the path
+			Assert.IsFalse (ex.Message.IndexOf (path) >= 0, "#3");
+			Assert.IsNull (ex.InnerException, "#4");
+		}
+		finally {
+			DeleteDirectory (path);
+			DeleteFile (path);
+		}
+	}
+
+	[Test]
+	public void Exists ()
+	{
+		Assert.IsFalse (Directory.Exists (null as string));
+	}
+
+#if !MOBILE // We don't support yet the Process class.
+	[Test] // bug #78239
+	public void ExistsAccessDenied ()
+	{
+		if (!RunningOnUnix)
+			Assert.Ignore ("Not running on Unix."); // this test does not work on Windows.
+
+		string path = TempFolder + DSC + "ExistsAccessDenied";
+
+		Directory.CreateDirectory (path);
+		global::Mono.Posix.Syscall.chmod (path, 0);
+		try {
+			Assert.IsFalse (Directory.Exists(path + DSC + "b"));
+		} finally {
+			global::Mono.Posix.Syscall.chmod (path, (global::Mono.Posix.FileMode) 755);
+			Directory.Delete (path);
+		}
+	}
+#endif
+	
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void GetCreationTimeException1 ()
+	{
+		Directory.GetCreationTime (null as string);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetCreationTimeException2 ()
+	{
+		Directory.GetCreationTime (string.Empty);
+	}
+	
+	[Test]
+	public void GetCreationTimeException_NonExistingPath ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.GetCreationTime.1";
+		DeleteDirectory (path);
+		try {
+			DateTime time = Directory.GetCreationTime (path);
+
+			DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
+			Assert.AreEqual (expectedTime.Year, time.Year, "#1");
+			Assert.AreEqual (expectedTime.Month, time.Month, "#2");
+			Assert.AreEqual (expectedTime.Day, time.Day, "#3");
+			Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
+			Assert.AreEqual (expectedTime.Second, time.Second, "#5");
+			Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetCreationTimeException4 ()
+	{
+		Directory.GetCreationTime ("    ");
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetCreationTimeException5 ()
+	{
+		Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void GetCreationTimeUtcException1 ()
+	{
+		Directory.GetCreationTimeUtc (null as string);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetCreationTimeUtcException2 ()
+	{
+		Directory.GetCreationTimeUtc (string.Empty);
+	}
+	
+	[Test]
+	public void GetCreationTimeUtc_NonExistingPath ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.GetCreationTimeUtc.1";
+		DeleteDirectory (path);
+		
+		try {
+			DateTime time = Directory.GetCreationTimeUtc (path);
+
+			Assert.AreEqual (1601, time.Year, "#1");
+			Assert.AreEqual (1, time.Month, "#2");
+			Assert.AreEqual (1, time.Day, "#3");
+			Assert.AreEqual (0, time.Hour, "#4");
+			Assert.AreEqual (0, time.Second, "#5");
+			Assert.AreEqual (0, time.Millisecond, "#6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetCreationTimeUtcException4 ()
+	{
+		Directory.GetCreationTimeUtc ("    ");
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetCreationTimeUtcException5 ()
+	{
+		Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void GetLastAccessTime_Null ()
+	{
+		Directory.GetLastAccessTime (null as string);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastAccessTimeException2 ()
+	{
+		Directory.GetLastAccessTime (string.Empty);
+	}
+	
+	[Test]
+	public void GetLastAccessTime_NonExistingPath ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTime.1";
+		DeleteDirectory (path);
+		
+		try {
+			DateTime time = Directory.GetLastAccessTime (path);
+
+			DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
+			Assert.AreEqual (expectedTime.Year, time.Year, "#1");
+			Assert.AreEqual (expectedTime.Month, time.Month, "#2");
+			Assert.AreEqual (expectedTime.Day, time.Day, "#3");
+			Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
+			Assert.AreEqual (expectedTime.Second, time.Second, "#5");
+			Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastAccessTimeException4 ()
+	{
+		Directory.GetLastAccessTime ("    ");
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastAccessTimeException5 ()
+	{
+		Directory.GetLastAccessTime (Path.InvalidPathChars [0].ToString ());
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void GetLastAccessTimeUtc_Null ()
+	{
+		Directory.GetLastAccessTimeUtc (null as string);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastAccessTimeUtcException2 ()
+	{
+		Directory.GetLastAccessTimeUtc (string.Empty);
+	}
+	
+	[Test]
+	public void GetLastAccessTimeUtc_NonExistingPath ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTimeUtc.1";
+		DeleteDirectory (path);
+		try {
+			DateTime time = Directory.GetLastAccessTimeUtc (path);
+
+			Assert.AreEqual (1601, time.Year, "#1");
+			Assert.AreEqual (1, time.Month, "#2");
+			Assert.AreEqual (1, time.Day, "#3");
+			Assert.AreEqual (0, time.Hour, "#4");
+			Assert.AreEqual (0, time.Second, "#5");
+			Assert.AreEqual (0, time.Millisecond, "#6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastAccessTimeUtcException4 ()
+	{
+		Directory.GetLastAccessTimeUtc ("    ");
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastAccessTimeUtcException5 ()
+	{
+		Directory.GetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString ());
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void GetLastWriteTimeException1 ()
+	{
+		Directory.GetLastWriteTime (null as string);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastWriteTimeException2 ()
+	{
+		Directory.GetLastWriteTime (string.Empty);
+	}
+	
+	[Test]
+	public void GetLastWriteTime_NonExistingPath ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTime.1";
+		DeleteDirectory (path);
+		try {
+			DateTime time = Directory.GetLastWriteTime (path);
+
+			DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
+			Assert.AreEqual (expectedTime.Year, time.Year, "#1");
+			Assert.AreEqual (expectedTime.Month, time.Month, "#2");
+			Assert.AreEqual (expectedTime.Day, time.Day, "#3");
+			Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
+			Assert.AreEqual (expectedTime.Second, time.Second, "#5");
+			Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastWriteTimeException4 ()
+	{
+		Directory.GetLastWriteTime ("    ");
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastWriteTimeException5 ()
+	{
+		Directory.GetLastWriteTime (Path.InvalidPathChars [0].ToString ());
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void GetLastWriteTimeUtcException1 ()
+	{
+		Directory.GetLastWriteTimeUtc (null as string);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastWriteTimeUtcException2 ()
+	{
+		Directory.GetLastWriteTimeUtc (string.Empty);
+	}
+	
+	[Test]
+	public void GetLastWriteTimeUtc_NonExistingPath ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTimeUtc.1";
+		DeleteDirectory (path);
+		try {
+			DateTime time = Directory.GetLastWriteTimeUtc (path);
+
+			Assert.AreEqual (1601, time.Year, "#1");
+			Assert.AreEqual (1, time.Month, "#2");
+			Assert.AreEqual (1, time.Day, "#3");
+			Assert.AreEqual (0, time.Hour, "#4");
+			Assert.AreEqual (0, time.Second, "#5");
+			Assert.AreEqual (0, time.Millisecond, "#6");
+		} finally {
+			DeleteDirectory (path);
+		}
+		
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastWriteTimeUtcException4 ()
+	{
+		Directory.GetLastWriteTimeUtc ("    ");
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void GetLastWriteTimeUtcException5 ()
+	{
+		Directory.GetLastWriteTimeUtc (Path.InvalidPathChars[0].ToString ());
+	}
+
+	[Test]
+	public void Move_DestDirName_Empty ()
+	{
+		try {
+			Directory.Move (TempFolder, string.Empty);
+			Assert.Fail ("#A1");
+		} catch (ArgumentException ex) {
+			// Empty file name is not legal
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+			Assert.IsNull (ex.InnerException, "#A3");
+			Assert.IsNotNull (ex.Message, "#A4");
+			Assert.IsNotNull (ex.ParamName, "#A5");
+			Assert.AreEqual ("destDirName", ex.ParamName, "#A6");
+		}
+
+		try {
+			Directory.Move (TempFolder, "             ");
+			Assert.Fail ("#B1");
+		} catch (ArgumentException ex) {
+			// The path is not of a legal form
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+			Assert.IsNull (ex.InnerException, "#B3");
+			Assert.IsNotNull (ex.Message, "#B4");
+		}
+	}
+
+	[Test]
+	public void Move_DestDirName_Null ()
+	{
+		try {
+			Directory.Move (TempFolder, (string) null);
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException ex) {
+			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNotNull (ex.ParamName, "#5");
+			Assert.AreEqual ("destDirName", ex.ParamName, "#6");
+		}
+	}
+
+	[Test]
+	public void Move_SourceDirName_Empty ()
+	{
+		try {
+			Directory.Move (string.Empty, TempFolder);
+			Assert.Fail ("#A1");
+		} catch (ArgumentException ex) {
+			// Empty file name is not legal
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+			Assert.IsNull (ex.InnerException, "#A3");
+			Assert.IsNotNull (ex.Message, "#A4");
+			Assert.IsNotNull (ex.ParamName, "#A5");
+			Assert.AreEqual ("sourceDirName", ex.ParamName, "#A6");
+		}
+
+		try {
+			Directory.Move ("             ", TempFolder);
+			Assert.Fail ("#B1");
+		} catch (ArgumentException ex) {
+			// The path is not of a legal form
+			Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
+			Assert.IsNull (ex.InnerException, "#B3");
+			Assert.IsNotNull (ex.Message, "#B4");
+		}
+	}
+
+	[Test]
+	public void Move_SourceDirName_Null ()
+	{
+		try {
+			Directory.Move ((string) null, TempFolder);
+			Assert.Fail ("#1");
+		} catch (ArgumentNullException ex) {
+			Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+			Assert.IsNotNull (ex.ParamName, "#5");
+			Assert.AreEqual ("sourceDirName", ex.ParamName, "#6");
+		}
+	}
+
+	[Test]
+	public void MoveDirectory ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.9";
+		string path2 = TempFolder + DSC + "DirectoryTest.Test.10";
+		DeleteDirectory (path);
+		DeleteDirectory (path2);
+		try {
+			Directory.CreateDirectory (path);
+			Directory.CreateDirectory (path + DSC + "dir");
+			Assert.IsTrue (Directory.Exists (path + DSC + "dir"), "#1");
+		
+			Directory.Move (path, path2);
+			Assert.IsFalse (Directory.Exists (path + DSC + "dir"), "#2");
+			Assert.IsTrue (Directory.Exists (path2 + DSC + "dir"), "#3");
+		} finally {
+			DeleteDirectory (path);
+			DeleteDirectory (path2);
+			if (Directory.Exists (path2 + DSC + "dir"))
+				Directory.Delete (path2 + DSC + "dir", true);
+		}
+	}
+
+	[Test]
+	[ExpectedException (typeof (IOException))]
+	public void MoveDirectory_Same ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.8";
+		DeleteDirectory (path);
+		try {
+			Directory.Move (path, path);
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	public void MoveFile ()
+	{
+		string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
+		string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
+
+		using (StreamWriter sw = File.CreateText (tempFile1)) {
+			sw.Write ("temp1");
+		}
+		Assert.IsFalse (File.Exists (tempFile2), "#1");
+		Directory.Move (tempFile1, tempFile2);
+		Assert.IsFalse (File.Exists (tempFile1), "#2");
+		Assert.IsTrue (File.Exists (tempFile2), "#3");
+		using (StreamReader sr = File.OpenText (tempFile2)) {
+			Assert.AreEqual ("temp1", sr.ReadToEnd (), "#4");
+		}
+	}
+
+	[Test]
+	public void MoveFile_DestDir_Exists ()
+	{
+		string tempFile = Path.Combine (TempFolder, "temp1.txt");
+		string tempDir = Path.Combine (TempFolder, "temp2");
+
+		using (StreamWriter sw = File.CreateText (tempFile)) {
+			sw.Write ("temp1");
+		}
+		Directory.CreateDirectory (tempDir);
+
+		try {
+			Directory.Move (tempFile, tempDir);
+			Assert.Fail ("#A1");
+		} catch (IOException ex) {
+			// Cannot create a file when that file already exists
+			Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
+			Assert.IsNull (ex.InnerException, "#A3");
+			Assert.IsNotNull (ex.Message, "#A4");
+		}
+
+		Assert.IsTrue (File.Exists (tempFile), "#B1");
+		Assert.IsFalse (File.Exists (tempDir), "#B2");
+		Assert.IsTrue (Directory.Exists (tempDir), "#B3");
+	}
+
+	[Test]
+	public void MoveFile_DestFile_Exists ()
+	{
+		string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
+		string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
+
+		using (StreamWriter sw = File.CreateText (tempFile1)) {
+			sw.Write ("temp1");
+		}
+		using (StreamWriter sw = File.CreateText (tempFile2)) {
+			sw.Write ("temp2");
+		}
+
+		try {
+			Directory.Move (tempFile1, tempFile2);
+			Assert.Fail ("#A1");
+		} catch (IOException ex) {
+			// Cannot create a file when that file already exists
+			Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
+			Assert.IsNull (ex.InnerException, "#A3");
+			Assert.IsNotNull (ex.Message, "#A4");
+		}
+
+		Assert.IsTrue (File.Exists (tempFile1), "#B1");
+		using (StreamReader sr = File.OpenText (tempFile1)) {
+			Assert.AreEqual ("temp1", sr.ReadToEnd (), "#B2");
+		}
+
+		Assert.IsTrue (File.Exists (tempFile2), "#C1");
+		using (StreamReader sr = File.OpenText (tempFile2)) {
+			Assert.AreEqual ("temp2", sr.ReadToEnd (), "#C2");
+		}
+	}
+
+	[Test]
+	public void MoveFile_Same ()
+	{
+		string tempFile = Path.Combine (TempFolder, "temp.txt");
+
+		try {
+			Directory.Move (tempFile, tempFile);
+			Assert.Fail ("#1");
+		} catch (IOException ex) {
+			// Source and destination path must be different
+			Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
+			Assert.IsNull (ex.InnerException, "#3");
+			Assert.IsNotNull (ex.Message, "#4");
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	[Ignore ("On IA64, causes nunit to abort due to bug #76388")]
+	public void MoveException4 ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.13";
+		path += Path.InvalidPathChars [0];
+		string path2 = TempFolder + DSC + "DirectoryTest.Test.13";
+		DeleteDirectory (path);
+		DeleteDirectory (path2);
+		try {
+			Directory.CreateDirectory (path2);
+			Directory.Move (path2, path);
+		} finally {
+			DeleteDirectory (path);
+			DeleteDirectory (path2);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(DirectoryNotFoundException))]
+	public void MoveException5 ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.14";
+		DeleteDirectory (path);
+		try {
+			Directory.Move (path, path + "Test.Test");
+		} finally {
+			DeleteDirectory (path);
+			DeleteDirectory (path + "Test.Test");
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(IOException))]
+	public void MoveDirectory_Dest_SubDir ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.15";
+		DeleteDirectory (path);
+		try {
+			Directory.CreateDirectory (path);
+			Directory.Move (path, path + DSC + "dir");
+		} finally {
+			DeleteDirectory (path);
+			DeleteDirectory (path + DSC + "dir");
+		}
+	}
+
+	[Test]
+	[ExpectedException (typeof (IOException))]
+	public void MoveDirectory_Dest_Exists ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.Test.16";
+		string path2 = TempFolder + DSC + "DirectoryTest.Test.17";
+		
+		DeleteDirectory (path);
+		DeleteDirectory (path2);
+		try {
+			Directory.CreateDirectory (path);
+			Directory.CreateDirectory (path2);
+			Directory.Move (path, path2);
+		} finally {
+			DeleteDirectory (path);
+			DeleteDirectory (path2);
+		}
+	}
+	
+	[Test]
+	public void CreationTime ()
+	{
+		if (RunningOnUnix)
+			Assert.Ignore ("Unix doesn't support CreationTime");
+
+		string path = TempFolder + DSC + "DirectoryTest.CreationTime.1";
+		DeleteDirectory (path);
+		
+		try {
+			Directory.CreateDirectory (path);
+			Directory.SetCreationTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
+
+			DateTime time = Directory.GetCreationTime (path);
+			Assert.AreEqual (2003, time.Year, "#A1");
+			Assert.AreEqual (6, time.Month, "#A2");
+			Assert.AreEqual (4, time.Day, "#A3");
+			Assert.AreEqual (6, time.Hour, "#A4");
+			Assert.AreEqual (4, time.Minute, "#A5");
+			Assert.AreEqual (0, time.Second, "#A6");
+		
+			time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetCreationTimeUtc (path));
+			Assert.AreEqual (2003, time.Year, "#B1");
+			Assert.AreEqual (6, time.Month, "#B2");
+			Assert.AreEqual (4, time.Day, "#B3");
+			Assert.AreEqual (6, time.Hour, "#B4");
+			Assert.AreEqual (4, time.Minute, "#B5");
+			Assert.AreEqual (0, time.Second, "#B6");
+
+			Directory.SetCreationTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
+			time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetCreationTime (path));
+			Assert.AreEqual (2003, time.Year, "#C1");
+			Assert.AreEqual (6, time.Month, "#C2");
+			Assert.AreEqual (4, time.Day, "#C3");
+			Assert.AreEqual (6, time.Hour, "#C4");
+			Assert.AreEqual (4, time.Minute, "#C5");
+			Assert.AreEqual (0, time.Second, "#C6");
+
+			time = Directory.GetCreationTimeUtc (path);
+			Assert.AreEqual (2003, time.Year, "#D1");
+			Assert.AreEqual (6, time.Month, "#D2");
+			Assert.AreEqual (4, time.Day, "#D3");
+			Assert.AreEqual (6, time.Hour, "#D4");
+			Assert.AreEqual (4, time.Minute, "#D5");
+			Assert.AreEqual (0, time.Second, "#D6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	public void LastAccessTime ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.AccessTime.1";
+		DeleteDirectory (path);
+		
+		try {
+			Directory.CreateDirectory (path);
+			Directory.SetLastAccessTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
+
+			DateTime time = Directory.GetLastAccessTime (path);
+			Assert.AreEqual (2003, time.Year, "#A1");
+			Assert.AreEqual (6, time.Month, "#A2");
+			Assert.AreEqual (4, time.Day, "#A3");
+			Assert.AreEqual (6, time.Hour, "#A4");
+			Assert.AreEqual (4, time.Minute, "#A5");
+			Assert.AreEqual (0, time.Second, "#A6");
+		
+			time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastAccessTimeUtc (path));
+			Assert.AreEqual (2003, time.Year, "#B1");
+			Assert.AreEqual (6, time.Month, "#B2");
+			Assert.AreEqual (4, time.Day, "#B3");
+			Assert.AreEqual (6, time.Hour, "#B4");
+			Assert.AreEqual (4, time.Minute, "#B5");
+			Assert.AreEqual (0, time.Second, "#B6");
+
+			Directory.SetLastAccessTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
+			time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastAccessTime (path));
+			Assert.AreEqual (2003, time.Year, "#C1");
+			Assert.AreEqual (6, time.Month, "#C2");
+			Assert.AreEqual (4, time.Day, "#C3");
+			Assert.AreEqual (6, time.Hour, "#C4");
+			Assert.AreEqual (4, time.Minute, "#C5");
+			Assert.AreEqual (0, time.Second, "#C6");
+
+			time = Directory.GetLastAccessTimeUtc (path);
+			Assert.AreEqual (2003, time.Year, "#D1");
+			Assert.AreEqual (6, time.Month, "#D2");
+			Assert.AreEqual (4, time.Day, "#D3");
+			Assert.AreEqual (6, time.Hour, "#D4");
+			Assert.AreEqual (4, time.Minute, "#D5");
+			Assert.AreEqual (0, time.Second, "#D6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	public void LastWriteTime ()
+	{
+		string path = TempFolder + DSC + "DirectoryTest.WriteTime.1";
+		DeleteDirectory (path);
+		
+		try {
+			Directory.CreateDirectory (path);
+			Directory.SetLastWriteTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
+
+			DateTime time = Directory.GetLastWriteTime (path);
+			Assert.AreEqual (2003, time.Year, "#A1");
+			Assert.AreEqual (6, time.Month, "#A2");
+			Assert.AreEqual (4, time.Day, "#A3");
+			Assert.AreEqual (6, time.Hour, "#A4");
+			Assert.AreEqual (4, time.Minute, "#A5");
+			Assert.AreEqual (0, time.Second, "#A6");
+		
+			time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastWriteTimeUtc (path));
+			Assert.AreEqual (2003, time.Year, "#B1");
+			Assert.AreEqual (6, time.Month, "#B2");
+			Assert.AreEqual (4, time.Day, "#B3");
+			Assert.AreEqual (6, time.Hour, "#B4");
+			Assert.AreEqual (4, time.Minute, "#B5");
+			Assert.AreEqual (0, time.Second, "#B6");
+
+			Directory.SetLastWriteTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
+			time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastWriteTime (path));
+			Assert.AreEqual (2003, time.Year, "#C1");
+			Assert.AreEqual (6, time.Month, "#C2");
+			Assert.AreEqual (4, time.Day, "#C3");
+			Assert.AreEqual (6, time.Hour, "#C4");
+			Assert.AreEqual (4, time.Minute, "#C5");
+			Assert.AreEqual (0, time.Second, "#C6");
+
+			time = Directory.GetLastWriteTimeUtc (path);
+			Assert.AreEqual (2003, time.Year, "#D1");
+			Assert.AreEqual (6, time.Month, "#D2");
+			Assert.AreEqual (4, time.Day, "#D3");
+			Assert.AreEqual (6, time.Hour, "#D4");
+			Assert.AreEqual (4, time.Minute, "#D5");
+			Assert.AreEqual (0, time.Second, "#D6");
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void SetLastWriteTimeException1 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTime (null as string, time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]	
+	public void SetLastWriteTimeException2 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTime (string.Empty, time);
+	}
+	
+	[Test]
+	[ExpectedException(typeof(FileNotFoundException))]
+	public void SetLastWriteTimeException3 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTime.2";
+		DeleteDirectory (path);
+		try {
+			Directory.SetLastWriteTime (path, time);
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastWriteTimeException4 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTime ("    ", time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastWriteTimeException5 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTime (Path.InvalidPathChars [0].ToString (), time);
+	}
+
+//	[Test]
+//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
+//	public void SetLastWriteTimeException6 ()
+//	{
+//		DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
+//		string path = TempFolder + Path.DirectorySeparatorChar + "DirectoryTest.SetLastWriteTime.1";
+//
+//		try {
+//			if (!Directory.Exists (path))
+//				Directory.CreateDirectory (path);
+//		
+//			Directory.SetLastWriteTime (path, time);
+//		} finally {
+//			DeleteDirectory (path);
+//		}
+//
+//	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void SetLastWriteTimeUtcException1 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTimeUtc (null as string, time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastWriteTimeUtcException2 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTimeUtc (string.Empty, time);
+	}
+	
+	[Test]
+	[ExpectedException(typeof(FileNotFoundException))]
+	public void SetLastWriteTimeUtcException3 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.2";
+		DeleteDirectory (path);
+		try {
+			Directory.SetLastWriteTimeUtc (path, time);
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastWriteTimeUtcException4 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTimeUtc ("    ", time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastWriteTimeUtcException5 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastWriteTimeUtc (Path.InvalidPathChars [0].ToString (), time);
+	}
+
+//	[Test]
+//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
+//	public void SetLastWriteTimeUtcException6 ()
+//	{
+//		DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
+//		string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.1";
+//
+//		if (!Directory.Exists (path))
+//			Directory.CreateDirectory (path);
+//		try {
+//			Directory.SetLastWriteTimeUtc (path, time);
+//		} finally {
+//			DeleteDirectory (path);
+//		}
+//	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void SetLastAccessTimeException1 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTime (null as string, time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastAccessTimeException2 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTime (string.Empty, time);
+	}
+	
+	[Test]
+	[ExpectedException(typeof(FileNotFoundException))]
+	public void SetLastAccessTimeException3 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.2";
+		DeleteDirectory (path);
+		try {
+			Directory.SetLastAccessTime (path, time);
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastAccessTimeException4 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTime ("    ", time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastAccessTimeException5 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTime (Path.InvalidPathChars [0].ToString (), time);
+	}
+
+//	[Test]
+//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
+//	public void SetLastAccessTimeException6 ()
+//	{
+//		DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
+//		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.1";
+//
+//		if (!Directory.Exists (path))
+//			Directory.CreateDirectory (path);
+//		try {
+//			Directory.SetLastAccessTime (path, time);
+//		} finally {
+//			DeleteDirectory (path);
+//		}
+//
+//	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void SetLastAccessTimeUtcException1 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTimeUtc (null as string, time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastAccessTimeUtcException2 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTimeUtc (string.Empty, time);
+	}
+	
+	[Test]
+	[ExpectedException(typeof(FileNotFoundException))]
+	public void SetLastAccessTimeUtcException3 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
+		DeleteDirectory (path);
+		try {
+			Directory.SetLastAccessTimeUtc (path, time);
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastAccessTimeUtcException4 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTimeUtc ("    ", time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetLastAccessTimeUtcException5 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString (), time);
+	}
+
+//	[Test]
+//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
+//	public void SetLastAccessTimeUtcException6 ()
+//	{
+//		DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
+//		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
+//
+//		if (!Directory.Exists (path))
+//			Directory.CreateDirectory (path);
+//		try {
+//			Directory.SetLastAccessTimeUtc (path, time);
+//		} finally {
+//			DeleteDirectory (path);
+//		}
+//	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void SetCreationTimeException1 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTime (null as string, time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetCreationTimeException2 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTime (string.Empty, time);
+	}
+	
+	[Test]
+	[ExpectedException(typeof(FileNotFoundException))]
+	public void SetCreationTimeException3 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.2";
+		DeleteDirectory (path);
+		
+		try {
+			Directory.SetCreationTime (path, time);
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetCreationTimeException4 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTime ("    ", time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetCreationTimeException5 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTime (Path.InvalidPathChars [0].ToString (), time);
+	}
+
+//	[Test]
+//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
+//	public void SetCreationTimeException6 ()
+//	{
+//		DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
+//		string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.1";
+//
+//		if (!Directory.Exists (path))
+//			Directory.CreateDirectory (path);
+//		try {
+//			Directory.SetCreationTime (path, time);
+//			DeleteDirectory (path);
+//		} finally {
+//			DeleteDirectory (path);
+//		}
+//
+//	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentNullException))]
+	public void SetCreationTimeUtcException1 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTimeUtc (null as string, time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetCreationTimeUtcException2 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTimeUtc (string.Empty, time);
+	}
+	
+	[Test]
+	[ExpectedException(typeof(FileNotFoundException))]
+	public void SetCreationTimeUtcException3 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
+		DeleteDirectory (path);
+		
+		try {
+			Directory.SetCreationTimeUtc (path, time);
+			DeleteDirectory (path);
+		} finally {
+			DeleteDirectory (path);
+		}
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetCreationTimeUtcException4 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTimeUtc ("    ", time);
+	}
+
+	[Test]
+	[ExpectedException(typeof(ArgumentException))]
+	public void SetCreationTimeUtcException5 ()
+	{
+		DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
+		Directory.SetCreationTimeUtc (Path.InvalidPathChars [0].ToString (), time);
+	}
+
+//	[Test]
+//	[ExpectedException(typeof(ArgumentOutOfRangeException))]
+//	public void SetCreationTimeUtcException6 ()
+//	{
+//		DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
+//		string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
+//
+//		if (!Directory.Exists (path))
+//			Directory.CreateDirectory (path);
+//		try {
+//			Directory.SetCreationTimeUtc (path, time);
+//			DeleteDirectory (path);
+//		} finally {
+//			DeleteDirectory (path);
+//		}
+//	}
+
+	[Test]
+	public void GetDirectories ()
+	{
+		string path = TempFolder;
+		string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetDirectories";
+		DeleteDirectory (DirPath);
+		
+		try {
+			Directory.CreateDirectory (DirPath);
+		
+			string [] dirs = Directory.GetDirectories (path);
+		
+			foreach (string directory in dirs) {
+			
+				if (directory == DirPath)
+					return;
+			}
+		
+			Assert.Fail ("Directory Not Found");
+		} finally {
+			DeleteDirectory (DirPath);
+		}
+	}
+
+	[Test] // bug #346123
+	public void GetDirectories_Backslash ()
+	{
+		if (!RunningOnUnix)
+			// on Windows, backslash is used as directory separator
+			Assert.Ignore ("Not running on Unix.");
+
+		string dir = Path.Combine (TempFolder, @"sub\dir");
+		Directory.CreateDirectory (dir);
+
+		Assert.IsTrue (Directory.Exists (dir), "#A1");
+		Assert.IsFalse (Directory.Exists (Path.Combine (TempFolder, "dir")), "#A2");
+
+		string [] dirs = Directory.GetDirectories (TempFolder);
+		Assert.AreEqual (1, dirs.Length, "#B1");
+		Assert.AreEqual (dir, dirs [0], "#B2");
+	}
+
+	[Test]
+	public void GetParentOfRootDirectory ()
+	{
+		DirectoryInfo info;
+
+		info = Directory.GetParent (Path.GetPathRoot (Path.GetTempPath ()));
+		Assert.IsNull (info);
+	}
+	
+	[Test]
+	public void GetFiles ()
+	{
+		string path = TempFolder;
+		string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetFiles";
+		if (File.Exists (DirPath))
+			File.Delete (DirPath);
+		
+		try {
+			File.Create (DirPath).Close ();
+			string [] files = Directory.GetFiles (TempFolder);
+			foreach (string directory in files) {
+			
+				if (directory == DirPath)
+					return;
+			}
+		
+			Assert.Fail ("File Not Found");
+		} finally {
+			if (File.Exists (DirPath))
+				File.Delete (DirPath);
+		}
+	}
+
+	[Test] // bug #346123
+	public void GetFiles_Backslash ()
+	{
+		if (!RunningOnUnix)
+			// on Windows, backslash is used as directory separator
+			Assert.Ignore ("Not running on Unix.");
+
+		string file = Path.Combine (TempFolder, @"doc\temp1.file");
+		File.Create (file).Close ();
+
+		Assert.IsTrue (File.Exists (file), "#A1");
+		Assert.IsFalse (File.Exists (Path.Combine (TempFolder, "temp1.file")), "#A2");
+
+		string [] files = Directory.GetFiles (TempFolder);
+		Assert.AreEqual (1, files.Length, "#B1");
+		Assert.AreEqual (file, files [0], "#B2");
+	}
+
+	[Test] // bug #82212 and bug #325107
+	public void GetFiles_Pattern ()
+	{
+		string [] files = Directory.GetFiles (TempFolder, "*.*");
+		Assert.IsNotNull (files, "#A1");
+		Assert.AreEqual (0, files.Length, "#A2");
+
+		string tempFile1 = Path.Combine (TempFolder, "tempFile1");
+		File.Create (tempFile1).Close ();
+
+		files = Directory.GetFiles (TempFolder, "*.*");
+		Assert.IsNotNull (files, "#B1");
+		Assert.AreEqual (1, files.Length, "#B2");
+		Assert.AreEqual (tempFile1, files [0], "#B3");
+
+		string tempFile2 = Path.Combine (TempFolder, "FileTemp2.tmp");
+		File.Create (tempFile2).Close ();
+
+		files = Directory.GetFiles (TempFolder, "*.*");
+		Assert.IsNotNull (files, "#C1");
+		Assert.AreEqual (2, files.Length, "#C2");
+
+		files = Directory.GetFiles (TempFolder, "temp*.*");
+		Assert.IsNotNull (files, "#D1");
+		Assert.AreEqual (1, files.Length, "#D2");
+		Assert.AreEqual (tempFile1, files [0], "#D3");
+
+		string tempFile3 = Path.Combine (TempFolder, "tempFile3.txt");
+		File.Create (tempFile3).Close ();
+
+		files = Directory.GetFiles (TempFolder, "*File*.*");
+		Assert.IsNotNull (files, "#E1");
+		Assert.AreEqual (3, files.Length, "#E2");
+
+		files = Directory.GetFiles (TempFolder, "*File*.tmp");
+		Assert.IsNotNull (files, "#F1");
+		Assert.AreEqual (1, files.Length, "#F2");
+		Assert.AreEqual (tempFile2, files [0], "#F3");
+
+		files = Directory.GetFiles (TempFolder, "*tempFile*");
+		Assert.IsNotNull (files, "#G1");
+		Assert.AreEqual (2, files.Length, "#G2");
+
+		files = Directory.GetFiles (TempFolder, "*tempFile1");
+		Assert.IsNotNull (files, "#H1");
+		Assert.AreEqual (1, files.Length, "#H2");
+		Assert.AreEqual (tempFile1, files [0], "#H3");
+
+		files = Directory.GetFiles (TempFolder, "*.txt");
+		Assert.IsNotNull (files, "#I1");
+		Assert.AreEqual (1, files.Length, "#I2");
+		Assert.AreEqual (tempFile3, files [0], "#I3");
+
+		files = Directory.GetFiles (TempFolder, "*.t*");
+		Assert.IsNotNull (files, "#J1");
+		Assert.AreEqual (2, files.Length, "#J2");
+
+		files = Directory.GetFiles (TempFolder, "temp*.*");
+		Assert.IsNotNull (files, "#K1");
+		Assert.AreEqual (2, files.Length, "#K2");
+
+		File.Delete (tempFile1);
+
+		files = Directory.GetFiles (TempFolder, "temp*.*");
+		Assert.IsNotNull (files, "#L1");
+		Assert.AreEqual (1, files.Length, "#L2");
+		Assert.AreEqual (tempFile3, files [0], "#L3");
+
+		files = Directory.GetFiles (TempFolder, ".*");
+		Assert.IsNotNull (files, "#M1");
+		Assert.AreEqual (0, files.Length, "#M2");
+
+		string tempFile4 = Path.Combine (TempFolder, "tempFile4.");
+		File.Create (tempFile4).Close ();
+
+		files = Directory.GetFiles (TempFolder, "temp*.");
+		Assert.IsNotNull (files, "#N1");
+		Assert.AreEqual (1, files.Length, "#N2");
+		if (RunningOnUnix)
+			Assert.AreEqual (tempFile4, files [0], "#N3");
+		else // on Windows, the trailing dot is automatically trimmed
+			Assert.AreEqual (Path.Combine (TempFolder, "tempFile4"), files [0], "#N3");
+	}
+
+	[Test]
+	public void GetFiles_580090 ()
+	{
+		string cwd = Directory.GetCurrentDirectory ();
+		Directory.SetCurrentDirectory (Path.GetTempPath ());
+
+		string tempFile = Path.Combine (TempFolder, "tempFile.txt");
+		File.Create (tempFile).Close ();
+
+		try {
+			string [] files = Directory.GetFiles (".", TempSubFolder + DSC + "*.t*");
+			Assert.IsNotNull (files, "#J1");
+			Assert.AreEqual (1, files.Length, "#J2");
+		}
+		finally	{
+			Directory.SetCurrentDirectory (cwd);
+		}
+	}
+
+
+	[Test]
+	[ExpectedException (typeof (ArgumentNullException))]
+	public void SetCurrentDirectoryNull ()
+	{
+		Directory.SetCurrentDirectory (null);
+	}
+
+	[Test]
+	[ExpectedException (typeof (ArgumentException))]
+	public void SetCurrentDirectoryEmpty ()
+	{
+		Directory.SetCurrentDirectory (String.Empty);
+	}
+
+	[Test]
+	[ExpectedException (typeof (ArgumentException))]
+	public void SetCurrentDirectoryWhitespace ()
+	{
+		Directory.SetCurrentDirectory (" ");
+	}
+
+
+	[Test]
+	public void GetNoFiles () // Bug 58875. This throwed an exception on windows.
+	{
+		DirectoryInfo dir = new DirectoryInfo (".");
+		dir.GetFiles ("*.nonext");
+	}
+
+	[Test]
+	public void FilenameOnly () // bug 78209
+	{
+		Directory.GetParent ("somefile");
+	}
+
+	private static bool RunningOnUnix {
+		get {
+			// check for Unix platforms - see FAQ for more details
+			// http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
+			int platform = (int) Environment.OSVersion.Platform;
+			return ((platform == 4) || (platform == 128) || (platform == 6));
+		}
+	}
+
+	private void DeleteDirectory (string path)
+	{
+		if (Directory.Exists (path))
+			Directory.Delete (path, true);
+	}
+
+	private void DeleteFile (string path)
+	{
+		if (File.Exists (path))
+			File.Delete (path);
+	}
+}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/System.Threading/MutexTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/System.Threading/MutexTest.cs
@@ -1,189 +1,189 @@
-// MutexTest.cs - NUnit Test Cases for System.Threading.Mutex
-//
-// Eduardo Garcia Cebollero <kiwnix@yahoo.es>
-//
-// (C) Eduardo Garcia Cebollero
-// 
-
-using System;
-using System.Threading;
-
-using NUnit.Framework;
-
-namespace MonoTests.System.Threading
-{
-	[TestFixture]
-	public class MutexTest
-	{
-		//Auxiliary Classes (Future Threads)
-		private class ConcClass
-		{
-			public int id;
-			public Mutex mut;
-			public ConcClass(int id,Mutex mut)
-			{
-				this.id = id;
-				this.mut = mut;
-			}
-			public void Wait()
-			{
-				mut.WaitOne();
-			}
-			public void Signal()
-			{
-				mut.ReleaseMutex();
-			}
-		}
-		private class ConcClassLoop: ConcClass
-		{
-			public int marker;
-
-			public ConcClassLoop(int id,Mutex mut) : 
-				base(id,mut) 
-				{
-					this.marker = 0;
-				}
-			
-			public void WithoutWait()
-			{
-				this.marker = this.id;
-				this.Signal();
-			}
-
-
-			public void Loop()
-			{
-				while (this.marker<100)
-				{
-					this.Wait();
-					this.marker++;
-					this.Signal();
-				}
-			}
-
-			public void WaitAndForget()
-			{
-				this.Wait();
-				this.marker = id;
-			}
-			public void WaitAndWait()
-			{
-				mut.WaitOne();
-				this.marker = this.id;
-				mut.WaitOne();
-				this.marker = this.id+1;
-			}
-		}
-
-		[Test]
-		public void TestCtor1()
-		{
-			Mutex Sem = new Mutex();
-		}
-
-// These tests produce mutex release errors
-/**
-		[Test]
-		public void TestCtorDefaultValue()
-		{
-			Mutex Sem = new Mutex();
-			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
-			Thread thread1 = new Thread(new ThreadStart(class1.WithoutWait));
-			thread1.Start();
-			while(thread1.IsAlive);
-			Assert.AreEqual(class1.id,class1.marker);
-		}
-
-		[Test]
-		public void TestCtorCtor2()
-		{
-			Mutex Sem = new Mutex(false);
-			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
-			Thread thread1 = new Thread(new ThreadStart(class1.WithoutWait));
-			thread1.Start();
-			while(thread1.IsAlive);
-			Assert.AreEqual(class1.id,class1.marker);
-		}
-	
-		[Test]
-		public void TestCtorCtor3()
-		{
-			Mutex Sem = new Mutex(true);
-			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
-			Thread thread1 = new Thread(new ThreadStart(class1.WithoutWait));
-			thread1.Start();
-			while(thread1.IsAlive);
-			Assert.AreEqual(class1.id,class1.marker);
-		}
-*/
-
-		[Test]
-		public void TestWaitAndSignal1()
-		{
-			Mutex Sem = new Mutex (false);
-			ConcClassLoop class1 = new ConcClassLoop (1, Sem);
-			Thread thread1 = new Thread (new ThreadStart (class1.Loop));
-			try {
-				thread1.Start ();
-				TestUtil.WaitForNotAlive (thread1, "");
-				Assert.AreEqual (100, class1.marker);
-			} finally {
-#if MONO_FEATURE_THREAD_ABORT
-				thread1.Abort ();
-#else
-				thread1.Interrupt ();
-#endif
-			}
-		}
-
-		[Test]
-		public void TestWaitAndFoget1()
-		{
-			Mutex Sem = new Mutex(false);
-			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
-			ConcClassLoop class2 = new ConcClassLoop(2,Sem);
-			Thread thread1 = new Thread(new ThreadStart(class1.WaitAndForget));
-			Thread thread2 = new Thread(new ThreadStart(class2.WaitAndForget));
-			
-			try {
-				thread1.Start();
-				TestUtil.WaitForNotAlive (thread1, "t1");
-	
-				thread2.Start();
-				TestUtil.WaitForNotAlive (thread2, "t2");
-			
-				Assert.AreEqual (class2.id, class2.marker);
-			} finally {
-#if MONO_FEATURE_THREAD_ABORT
-				thread1.Abort ();
-				thread2.Abort ();
-#else
-				thread1.Interrupt ();
-				thread2.Interrupt ();
-#endif
-			}
-		}
-
-		[Test]
-		public void TestHandle()
-		{
-			Mutex Sem = new Mutex();
-			IntPtr Handle = Sem.Handle;
-		}
-
-		[Test] // bug #79358
-		public void DoubleRelease ()
-		{
-			Mutex mutex = new Mutex ();
-			mutex.WaitOne ();
-			mutex.ReleaseMutex ();
-
-			try {
-				mutex.ReleaseMutex ();
-				Assert.Fail ("#1");
-			} catch (ApplicationException ex) {
-				Assert.AreEqual (typeof (ApplicationException), ex.GetType (), "#2");
-			}
-		}
-	}
-}
+// MutexTest.cs - NUnit Test Cases for System.Threading.Mutex
+//
+// Eduardo Garcia Cebollero <kiwnix@yahoo.es>
+//
+// (C) Eduardo Garcia Cebollero
+// 
+
+using System;
+using System.Threading;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Threading
+{
+	[TestFixture]
+	public class MutexTest
+	{
+		//Auxiliary Classes (Future Threads)
+		private class ConcClass
+		{
+			public int id;
+			public Mutex mut;
+			public ConcClass(int id,Mutex mut)
+			{
+				this.id = id;
+				this.mut = mut;
+			}
+			public void Wait()
+			{
+				mut.WaitOne();
+			}
+			public void Signal()
+			{
+				mut.ReleaseMutex();
+			}
+		}
+		private class ConcClassLoop: ConcClass
+		{
+			public int marker;
+
+			public ConcClassLoop(int id,Mutex mut) : 
+				base(id,mut) 
+				{
+					this.marker = 0;
+				}
+			
+			public void WithoutWait()
+			{
+				this.marker = this.id;
+				this.Signal();
+			}
+
+
+			public void Loop()
+			{
+				while (this.marker<100)
+				{
+					this.Wait();
+					this.marker++;
+					this.Signal();
+				}
+			}
+
+			public void WaitAndForget()
+			{
+				this.Wait();
+				this.marker = id;
+			}
+			public void WaitAndWait()
+			{
+				mut.WaitOne();
+				this.marker = this.id;
+				mut.WaitOne();
+				this.marker = this.id+1;
+			}
+		}
+
+		[Test]
+		public void TestCtor1()
+		{
+			Mutex Sem = new Mutex();
+		}
+
+// These tests produce mutex release errors
+/**
+		[Test]
+		public void TestCtorDefaultValue()
+		{
+			Mutex Sem = new Mutex();
+			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
+			Thread thread1 = new Thread(new ThreadStart(class1.WithoutWait));
+			thread1.Start();
+			while(thread1.IsAlive);
+			Assert.AreEqual(class1.id,class1.marker);
+		}
+
+		[Test]
+		public void TestCtorCtor2()
+		{
+			Mutex Sem = new Mutex(false);
+			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
+			Thread thread1 = new Thread(new ThreadStart(class1.WithoutWait));
+			thread1.Start();
+			while(thread1.IsAlive);
+			Assert.AreEqual(class1.id,class1.marker);
+		}
+	
+		[Test]
+		public void TestCtorCtor3()
+		{
+			Mutex Sem = new Mutex(true);
+			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
+			Thread thread1 = new Thread(new ThreadStart(class1.WithoutWait));
+			thread1.Start();
+			while(thread1.IsAlive);
+			Assert.AreEqual(class1.id,class1.marker);
+		}
+*/
+
+		[Test]
+		public void TestWaitAndSignal1()
+		{
+			Mutex Sem = new Mutex (false);
+			ConcClassLoop class1 = new ConcClassLoop (1, Sem);
+			Thread thread1 = new Thread (new ThreadStart (class1.Loop));
+			try {
+				thread1.Start ();
+				TestUtil.WaitForNotAlive (thread1, "");
+				Assert.AreEqual (100, class1.marker);
+			} finally {
+#if MONO_FEATURE_THREAD_ABORT
+				thread1.Abort ();
+#else
+				thread1.Interrupt ();
+#endif
+			}
+		}
+
+		[Test]
+		public void TestWaitAndFoget1()
+		{
+			Mutex Sem = new Mutex(false);
+			ConcClassLoop class1 = new ConcClassLoop(1,Sem);
+			ConcClassLoop class2 = new ConcClassLoop(2,Sem);
+			Thread thread1 = new Thread(new ThreadStart(class1.WaitAndForget));
+			Thread thread2 = new Thread(new ThreadStart(class2.WaitAndForget));
+			
+			try {
+				thread1.Start();
+				TestUtil.WaitForNotAlive (thread1, "t1");
+	
+				thread2.Start();
+				TestUtil.WaitForNotAlive (thread2, "t2");
+			
+				Assert.AreEqual (class2.id, class2.marker);
+			} finally {
+#if MONO_FEATURE_THREAD_ABORT
+				thread1.Abort ();
+				thread2.Abort ();
+#else
+				thread1.Interrupt ();
+				thread2.Interrupt ();
+#endif
+			}
+		}
+
+		[Test]
+		public void TestHandle()
+		{
+			Mutex Sem = new Mutex();
+			IntPtr Handle = Sem.Handle;
+		}
+
+		[Test] // bug #79358
+		public void DoubleRelease ()
+		{
+			Mutex mutex = new Mutex ();
+			mutex.WaitOne ();
+			mutex.ReleaseMutex ();
+
+			try {
+				mutex.ReleaseMutex ();
+				Assert.Fail ("#1");
+			} catch (ApplicationException ex) {
+				Assert.AreEqual (typeof (ApplicationException), ex.GetType (), "#2");
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/System/DecimalTest2.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/System/DecimalTest2.cs
@@ -1,3146 +1,3146 @@
-// DecimalTest.cs - NUnit Test Cases for the System.Decimal struct
-//
-// Author: Martin Weindel (martin.weindel@t-online.de)
-//
-// (C) Martin Weindel, 2001
-// 
-
-using NUnit.Framework;
-using System;
-using System.Globalization;
-using System.Runtime.CompilerServices;
-
-namespace MonoTests.System
-{
-
-    public enum TestResultInfo
-    {
-        Ok = 0,
-        Overflow = 1,
-        ReverseRound = 2,
-        DivideByZero = 3,
-        ReverseOverflow = 4
-    }
-
-    public struct TestResult
-    {
-        public TestResult(int i, decimal v)
-        {
-            info = (TestResultInfo) i;
-            val = v;
-        }
-
-        public TestResultInfo info;
-        public decimal val;
-    }
-
-
-    /// <summary>
-    /// Tests for System.Decimal
-    /// </summary>
-    [TestFixture]
-    public class DecimalTest2
-    {
-        private void ReportOpError(string msg, int i, int j, decimal d1, decimal d2, decimal d3, decimal d3b)
-        {
-		decimal delta = 0;
-		try {
-			delta = d3 - d3b;
-		} catch (Exception e) {
-			Assert.Fail ("ReportOpError: Unexpected exception on " + d3 + " - " + d3b + ". e:" + e);
-		}
-		Assert.Fail ("*** " + msg + " for d1=" + d1 + " i=" + i + " d2=" + d2 + " j=" + j + " d3=" + d3 + " d3b=" + d3b + "\n"
-			+ "is:" + d3 +  "  must be:" + d3b + "  delta=" + (delta) + " == " + (d3 == d3b));
-        }
-
-	[Test]
-	     
-        public void TestCompare()
-        {
-            const int size = 14;
-            decimal[] data = new decimal[size] {
-                0m,	1m, -1m, 2m, 10m, 0.1m, 0.11m,
-                79228162514264337593543950335m,
-                -79228162514264337593543950335m,
-                27703302467091960609331879.532m,
-                -3203854.9559968181492513385018m,
-                -3203854.9559968181492513385017m,
-                -48466870444188873796420.0286m,
-                -48466870444188873796420.02860m
-            };
-
-            short[,] cmpTable = new short[size,size] {
-                {0,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,1},
-                {1,0,1,-1,-1,1,1,-1,1,-1,1,1,1,1},
-                {-1,-1,0,-1,-1,-1,-1,-1,1,-1,1,1,1,1},
-                {1,1,1,0,-1,1,1,-1,1,-1,1,1,1,1},
-                {1,1,1,1,0,1,1,-1,1,-1,1,1,1,1},
-                {1,-1,1,-1,-1,0,-1,-1,1,-1,1,1,1,1},
-                {1,-1,1,-1,-1,1,0,-1,1,-1,1,1,1,1},
-                {1,1,1,1,1,1,1,0,1,1,1,1,1,1},
-                {-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1},
-                {1,1,1,1,1,1,1,-1,1,0,1,1,1,1},
-                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,0,-1,1,1},
-                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,0,1,1},
-                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,0,0},
-                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,0,0}
-            };
-
-            for (int i = 0; i < size; i++) 
-            {
-                Decimal d1 = data[i];
-                for (int j = 0; j < size; j++) 
-                {
-                    Assert.IsTrue (cmpTable[i,j] == -cmpTable[j,i]);
-                    int x = cmpTable[i,j];
-                    Decimal d2 = data[j];
-
-                    int y = Decimal.Compare(d1, d2);
-                    if (y < 0) y = -1;
-                    else if (y > 0) y = 1;
-                    Assert.IsTrue (x == y);
-
-                    y = d1.CompareTo(d2);
-                    if (y < 0) y = -1;
-                    else if (y > 0) y = 1;
-                    Assert.IsTrue (x == y);
-
-                    bool b = d1 < d2;
-                    if (x != -1) b = !b;
-                    Assert.IsTrue (b);
-
-                    b = d1 <= d2;
-                    if (x == 1) b = !b;
-                    Assert.IsTrue (b);
-
-                    b = d1 >= d2;
-                    if (x == -1) b = !b;
-                    Assert.IsTrue (b);
-
-                    b = d1 > d2;
-                    if (x != 1) b = !b;
-                    Assert.IsTrue (b);
-
-                    b = d1 == d2;
-                    if (x != 0) b = !b;
-                    Assert.IsTrue (b);
-
-                    b = d1.Equals(d2);
-                    if (x != 0) b = !b;
-                    Assert.IsTrue (b);
-
-                    b = Decimal.Equals(d1, d2);
-                    if (x != 0) b = !b;
-                    Assert.IsTrue (b);
-                }
-            }
-        }
-
-        private bool AreNotEqual(Decimal v1, Decimal v2)
-        {
-            return v1 != v2;
-        }
-
-	[Test]
-	     
-        public void TestRemainder()
-        {
-            Assert.IsTrue ((decimal)Decimal.Remainder(3.6m, 1.3m) == 1.0m);
-            decimal res = 24420760848422211464106753m;
-            decimal remainder = Decimal.Remainder(79228162514264337593543950335m, 27703302467091960609331879.53200m);
-            if (AreNotEqual (res, remainder))
-                Assert.AreEqual (res, remainder, "A02");
-
-            Assert.IsTrue ((decimal)Decimal.Remainder(45937986975432m, 43987453m)
-                == 42334506m);
-            Assert.IsTrue ((decimal)Decimal.Remainder(45937986975000m, 5000m)
-                == 0m);
-            Assert.IsTrue ((decimal)Decimal.Remainder(-54789548973.6234m, 1.3356m) 
-                == -0.1074m);
-        }
-
-	[Test]
-	     
-        public void TestAdd()
-        {
-            decimal[] args = auto_build2;
-            TestResult[] trs = trAuto_Add_build2;
-            int errOverflow = 0;
-            int errOp = 0;
-            int count = args.GetLength(0);
-            int n = 0;
-            for (int i = 0; i < count; i++) 
-            {
-                decimal d1 = args[i];
-                for (int j = 0; j < count; j++, n++) 
-                {
-                    decimal d2 = args[j];
-                    decimal d3 = 0;
-                    decimal d4 = 0;
-                    TestResult tr = trs[n];
-                    try
-                    {
-                        d3 = Decimal.Add(d1, d2);
-                        if (AreNotEqual (d3, tr.val))
-                        {
-                            if (tr.info == TestResultInfo.Overflow)
-                            {
-                                ReportOpError("Add: expected overflow", i, j, d1, d2, d3, tr.val);
-                                errOverflow++;
-                            }
-                            else
-                            {
-                                ReportOpError("Add: result mismatch", i, j, d1, d2, d3, tr.val);
-                                errOp++;
-                            }
-                        }
-                        else if (tr.info == TestResultInfo.Ok)
-                        {
-                            d4 = Decimal.Subtract(d3, d2);
-                            if (AreNotEqual (d4, d1))
-                            {
-                                ReportOpError("Subtract: result mismatch", i, j, d3, d2, d4, d1);
-                                errOp++;
-                            }
-                        }
-                    }
-                    catch (OverflowException)
-                    {
-                        if (tr.info != TestResultInfo.Overflow) 
-                        {
-                            ReportOpError("Add: unexpected overflow", i, j, d1, d2, d3, 0);
-                            errOverflow++;
-                        }
-                    }
-                }
-            }
-
-            if (errOverflow + errOp > 0) 
-            {
-                Assert.Fail ("" + errOp + " wrong additions, " + errOverflow + " wrong overflows");
-            }
-        }
-
-	[Test]
-	     
-        public void TestMult()
-        {
-            decimal[] args = auto_build2;
-            TestResult[] trs = trAuto_Mult_build2;
-            int errOverflow = 0;
-            int errOp = 0;
-            int count = args.GetLength(0);
-            int n = 0;
-            for (int i = 0; i < count; i++) 
-            {
-                decimal d1 = args[i];
-                for (int j = 0; j < count; j++, n++) 
-                {
-                    decimal d2 = args[j];
-                    decimal d3 = 0;
-                    decimal d4 = 0;
-                    TestResult tr = trs[n];
-                    try
-                    {
-                        d3 = Decimal.Multiply(d1, d2);
-                        if (AreNotEqual (d3, tr.val)) 
-                        {
-                            if (tr.info == TestResultInfo.Overflow)
-                            {
-                                ReportOpError("Mult: expected overflow", i, j, d1, d2, d3, tr.val);
-                                errOverflow++;
-                            }
-                            else 
-                            {
-                                ReportOpError("Mult: result mismatch", i, j, d1, d2, d3, tr.val);
-                                errOp++;
-                            }
-                        } 
-                    }
-                    catch (OverflowException)
-                    {
-                        if (tr.info != TestResultInfo.Overflow) 
-                        {
-                            ReportOpError("Mult: unexpected overflow", i, j, d1, d2, d3, 0);
-                            errOverflow++;
-                        }
-                    }
-
-                    if (d2 != 0 && tr.info != TestResultInfo.Overflow)
-                    {
-                        try 
-                        {
-                            d4 = Decimal.Divide(d3, d2);
-                            if (AreNotEqual (d4, d1) && tr.info != TestResultInfo.ReverseRound)
-                            {
-                                ReportOpError("MultDiv: result mismatch", i, j, d3, d2, d4, d1);
-                                errOp++;
-                            }
-                        }
-                        catch (OverflowException)
-                        {
-                            if (tr.info != TestResultInfo.ReverseOverflow) 
-                            {
-                                ReportOpError("MultDiv: unexpected overflow", i, j, d3, d2, d4, d1);
-                                errOverflow++;
-                            }
-                        }
-                    }
-
-                }
-            }
-
-            if (errOverflow + errOp > 0) 
-            {
-                Assert.Fail ("" + errOp + " wrong multiplications, " + errOverflow + " wrong overflows");
-            }
-        }
-
-	// MS 1.x is being less precise than Mono (2 cases). MS 2.0 is correct.
-	// Mono doesn't produce the same result for (i==21/j==3)
-	[Test]
-	     
-        public void TestDiv()
-        {
-            decimal[] args = auto_build2;
-            TestResult[] trs = trAuto_Div_build2;
-            int errOverflow = 0;
-            int errDivideByZero = 0;
-            int errOp = 0;
-            int count = args.GetLength(0);
-            int n = 0;
-            for (int i = 0; i < count; i++) 
-            {
-                decimal d1 = args[i];
-                for (int j = 0; j < count; j++, n++) 
-                {
-                    decimal d2 = args[j];
-                    decimal d3 = 0;
-                    decimal d4 = 0;
-                    TestResult tr = trs[n];
-                    try
-                    {
-                        d3 = Decimal.Divide(d1, d2);
-                        if (AreNotEqual (d3, tr.val)) 
-                        {
-                            if (tr.info == TestResultInfo.Overflow)
-                            {
-                                ReportOpError("Div: expected overflow", i, j, d1, d2, d3, tr.val);
-                                errOverflow++;
-                            }
-                            else if (tr.info == TestResultInfo.DivideByZero)
-                            {
-                                ReportOpError("Div: expected divide by zero", i, j, d1, d2, d3, tr.val);
-                                errDivideByZero++;
-                            }
-                            else 
-                            {
-				    // very small difference 0.00000000000000001 between Mono and MS
-				    if ((i == 21) && (j == 3))
-					    continue;
-				    ReportOpError ("Div: result mismatch", i, j, d1, d2, d3, tr.val);
-				    errOp++;
-			    }
-                        }
-                    }
-                    catch (OverflowException)
-                    {
-                        if (tr.info != TestResultInfo.Overflow) 
-                        {
-                            ReportOpError("Div: unexpected overflow", i, j, d1, d2, d3, 0);
-                            errOverflow++;
-                        }
-                    }
-                    catch (DivideByZeroException)
-                    {
-                        if (tr.info != TestResultInfo.DivideByZero) 
-                        {
-                            ReportOpError("Div: unexpected divide by zero", i, j, d1, d2, d3, 0);
-                            errDivideByZero++;
-                        }
-                    }
-
-                    if (d3 != 0)
-                    {
-                        try
-                        {
-                            d4 = Decimal.Multiply(d3, d2);
-                            if (AreNotEqual(d4, d1) && tr.info != TestResultInfo.ReverseRound)
-                            {
-                                ReportOpError("DivMult: result mismatch", i, j, d3, d2, d4, d1);
-                                errOp++;
-                            }
-                        }
-                        catch (OverflowException)
-                        {
-                            if (tr.info != TestResultInfo.ReverseOverflow) 
-                            {
-                                ReportOpError("DivMult: unexpected overflow", i, j, d3, d2, d4, d1);
-                                errOverflow++;
-                            }
-                        }
-                    }
-                }
-            }
-
-            if (errOverflow + errOp > 0) 
-            {
-                Assert.Fail ("" + errOp + " wrong division, " + errOverflow + " wrong overflows, " + errDivideByZero + " wrong divide by zero, ");
-            }
-        }
-
-        #region Data
-
-
-        // generated argument list build2
-        decimal[] auto_build2 = new decimal[] {
-	    0m, // 0
-	    1m, // 1
-	    -1m, // 2
-	    2m, // 3
-	    10m, // 4
-	    0.1m, // 5
-	    79228162514264337593543950335m, // 6
-	    -79228162514264337593543950335m, // 7
-	    27703302467091960609331879.532m, // 8
-	    -3203854.9559968181492513385018m, // 9
-	    -48466870444188873796420.028868m, // 10
-	    -545193693242804794.30331374676m, // 11
-	    0.7629234053338741809892531431m, // 12
-	    -400453059665371395972.33474452m, // 13
-	    222851627785191714190050.61676m, // 14
-	    14246043379204153213661335.584m, // 15
-	    -421123.30446308691436596648186m, // 16
-	    24463288738299545.200508898642m, // 17
-	    -5323259153836385912697776.001m, // 18
-	    102801066199805834724673169.19m, // 19
-	    7081320760.3793287174700927968m, // 20
-	    415752273939.77704245656837041m, // 21
-	    -6389392489892.6362673670820462m, // 22
-	    442346282742915.0596416330681m, // 23
-	    -512833780867323.89020837443764m, // 24
-	    608940580690915704.1450897514m, // 25
-	    -42535053313319986966115.037787m, // 26
-	    -7808274522591953107485.8812311m, // 27
-	    1037807626804273037330059471.7m, // 28
-	    -4997122966.448652425771563042m, // 29
-        };
-
-
-        // generated result list build2
-        TestResult[] trAuto_Add_build2 = new TestResult[] {
-	    new TestResult(0, 0m), // 0 + 0
-	    new TestResult(0, 1m), // 0 + 1
-	    new TestResult(0, -1m), // 0 + 2
-	    new TestResult(0, 2m), // 0 + 3
-	    new TestResult(0, 10m), // 0 + 4
-	    new TestResult(0, 0.1m), // 0 + 5
-	    new TestResult(0, 79228162514264337593543950335m), // 0 + 6
-	    new TestResult(0, -79228162514264337593543950335m), // 0 + 7
-	    new TestResult(0, 27703302467091960609331879.532m), // 0 + 8
-	    new TestResult(0, -3203854.9559968181492513385018m), // 0 + 9
-	    new TestResult(0, -48466870444188873796420.028868m), // 0 + 10
-	    new TestResult(0, -545193693242804794.30331374676m), // 0 + 11
-	    new TestResult(0, 0.7629234053338741809892531431m), // 0 + 12
-	    new TestResult(0, -400453059665371395972.33474452m), // 0 + 13
-	    new TestResult(0, 222851627785191714190050.61676m), // 0 + 14
-	    new TestResult(0, 14246043379204153213661335.584m), // 0 + 15
-	    new TestResult(0, -421123.30446308691436596648186m), // 0 + 16
-	    new TestResult(0, 24463288738299545.200508898642m), // 0 + 17
-	    new TestResult(0, -5323259153836385912697776.001m), // 0 + 18
-	    new TestResult(0, 102801066199805834724673169.19m), // 0 + 19
-	    new TestResult(0, 7081320760.3793287174700927968m), // 0 + 20
-	    new TestResult(0, 415752273939.77704245656837041m), // 0 + 21
-	    new TestResult(0, -6389392489892.6362673670820462m), // 0 + 22
-	    new TestResult(0, 442346282742915.0596416330681m), // 0 + 23
-	    new TestResult(0, -512833780867323.89020837443764m), // 0 + 24
-	    new TestResult(0, 608940580690915704.1450897514m), // 0 + 25
-	    new TestResult(0, -42535053313319986966115.037787m), // 0 + 26
-	    new TestResult(0, -7808274522591953107485.8812311m), // 0 + 27
-	    new TestResult(0, 1037807626804273037330059471.7m), // 0 + 28
-	    new TestResult(0, -4997122966.448652425771563042m), // 0 + 29
-	    new TestResult(0, 1m), // 1 + 0
-	    new TestResult(0, 2m), // 1 + 1
-	    new TestResult(0, 0m), // 1 + 2
-	    new TestResult(0, 3m), // 1 + 3
-	    new TestResult(0, 11m), // 1 + 4
-	    new TestResult(0, 1.1m), // 1 + 5
-	    new TestResult(1, 0m), // 1 + 6
-	    new TestResult(0, -79228162514264337593543950334m), // 1 + 7
-	    new TestResult(0, 27703302467091960609331880.532m), // 1 + 8
-	    new TestResult(0, -3203853.9559968181492513385018m), // 1 + 9
-	    new TestResult(0, -48466870444188873796419.028868m), // 1 + 10
-	    new TestResult(0, -545193693242804793.30331374676m), // 1 + 11
-	    new TestResult(0, 1.7629234053338741809892531431m), // 1 + 12
-	    new TestResult(0, -400453059665371395971.33474452m), // 1 + 13
-	    new TestResult(0, 222851627785191714190051.61676m), // 1 + 14
-	    new TestResult(0, 14246043379204153213661336.584m), // 1 + 15
-	    new TestResult(0, -421122.30446308691436596648186m), // 1 + 16
-	    new TestResult(0, 24463288738299546.200508898642m), // 1 + 17
-	    new TestResult(0, -5323259153836385912697775.001m), // 1 + 18
-	    new TestResult(0, 102801066199805834724673170.19m), // 1 + 19
-	    new TestResult(0, 7081320761.3793287174700927968m), // 1 + 20
-	    new TestResult(0, 415752273940.77704245656837041m), // 1 + 21
-	    new TestResult(0, -6389392489891.6362673670820462m), // 1 + 22
-	    new TestResult(0, 442346282742916.0596416330681m), // 1 + 23
-	    new TestResult(0, -512833780867322.89020837443764m), // 1 + 24
-	    new TestResult(0, 608940580690915705.1450897514m), // 1 + 25
-	    new TestResult(0, -42535053313319986966114.037787m), // 1 + 26
-	    new TestResult(0, -7808274522591953107484.8812311m), // 1 + 27
-	    new TestResult(0, 1037807626804273037330059472.7m), // 1 + 28
-	    new TestResult(0, -4997122965.448652425771563042m), // 1 + 29
-	    new TestResult(0, -1m), // 2 + 0
-	    new TestResult(0, 0m), // 2 + 1
-	    new TestResult(0, -2m), // 2 + 2
-	    new TestResult(0, 1m), // 2 + 3
-	    new TestResult(0, 9m), // 2 + 4
-	    new TestResult(0, -0.9m), // 2 + 5
-	    new TestResult(0, 79228162514264337593543950334m), // 2 + 6
-	    new TestResult(1, 0m), // 2 + 7
-	    new TestResult(0, 27703302467091960609331878.532m), // 2 + 8
-	    new TestResult(0, -3203855.9559968181492513385018m), // 2 + 9
-	    new TestResult(0, -48466870444188873796421.028868m), // 2 + 10
-	    new TestResult(0, -545193693242804795.30331374676m), // 2 + 11
-	    new TestResult(0, -0.2370765946661258190107468569m), // 2 + 12
-	    new TestResult(0, -400453059665371395973.33474452m), // 2 + 13
-	    new TestResult(0, 222851627785191714190049.61676m), // 2 + 14
-	    new TestResult(0, 14246043379204153213661334.584m), // 2 + 15
-	    new TestResult(0, -421124.30446308691436596648186m), // 2 + 16
-	    new TestResult(0, 24463288738299544.200508898642m), // 2 + 17
-	    new TestResult(0, -5323259153836385912697777.001m), // 2 + 18
-	    new TestResult(0, 102801066199805834724673168.19m), // 2 + 19
-	    new TestResult(0, 7081320759.3793287174700927968m), // 2 + 20
-	    new TestResult(0, 415752273938.77704245656837041m), // 2 + 21
-	    new TestResult(0, -6389392489893.6362673670820462m), // 2 + 22
-	    new TestResult(0, 442346282742914.0596416330681m), // 2 + 23
-	    new TestResult(0, -512833780867324.89020837443764m), // 2 + 24
-	    new TestResult(0, 608940580690915703.1450897514m), // 2 + 25
-	    new TestResult(0, -42535053313319986966116.037787m), // 2 + 26
-	    new TestResult(0, -7808274522591953107486.8812311m), // 2 + 27
-	    new TestResult(0, 1037807626804273037330059470.7m), // 2 + 28
-	    new TestResult(0, -4997122967.448652425771563042m), // 2 + 29
-	    new TestResult(0, 2m), // 3 + 0
-	    new TestResult(0, 3m), // 3 + 1
-	    new TestResult(0, 1m), // 3 + 2
-	    new TestResult(0, 4m), // 3 + 3
-	    new TestResult(0, 12m), // 3 + 4
-	    new TestResult(0, 2.1m), // 3 + 5
-	    new TestResult(1, 0m), // 3 + 6
-	    new TestResult(0, -79228162514264337593543950333m), // 3 + 7
-	    new TestResult(0, 27703302467091960609331881.532m), // 3 + 8
-	    new TestResult(0, -3203852.9559968181492513385018m), // 3 + 9
-	    new TestResult(0, -48466870444188873796418.028868m), // 3 + 10
-	    new TestResult(0, -545193693242804792.30331374676m), // 3 + 11
-	    new TestResult(0, 2.7629234053338741809892531431m), // 3 + 12
-	    new TestResult(0, -400453059665371395970.33474452m), // 3 + 13
-	    new TestResult(0, 222851627785191714190052.61676m), // 3 + 14
-	    new TestResult(0, 14246043379204153213661337.584m), // 3 + 15
-	    new TestResult(0, -421121.30446308691436596648186m), // 3 + 16
-	    new TestResult(0, 24463288738299547.200508898642m), // 3 + 17
-	    new TestResult(0, -5323259153836385912697774.001m), // 3 + 18
-	    new TestResult(0, 102801066199805834724673171.19m), // 3 + 19
-	    new TestResult(0, 7081320762.3793287174700927968m), // 3 + 20
-	    new TestResult(0, 415752273941.77704245656837041m), // 3 + 21
-	    new TestResult(0, -6389392489890.6362673670820462m), // 3 + 22
-	    new TestResult(0, 442346282742917.0596416330681m), // 3 + 23
-	    new TestResult(0, -512833780867321.89020837443764m), // 3 + 24
-	    new TestResult(0, 608940580690915706.1450897514m), // 3 + 25
-	    new TestResult(0, -42535053313319986966113.037787m), // 3 + 26
-	    new TestResult(0, -7808274522591953107483.8812311m), // 3 + 27
-	    new TestResult(0, 1037807626804273037330059473.7m), // 3 + 28
-	    new TestResult(0, -4997122964.448652425771563042m), // 3 + 29
-	    new TestResult(0, 10m), // 4 + 0
-	    new TestResult(0, 11m), // 4 + 1
-	    new TestResult(0, 9m), // 4 + 2
-	    new TestResult(0, 12m), // 4 + 3
-	    new TestResult(0, 20m), // 4 + 4
-	    new TestResult(0, 10.1m), // 4 + 5
-	    new TestResult(1, 0m), // 4 + 6
-	    new TestResult(0, -79228162514264337593543950325m), // 4 + 7
-	    new TestResult(0, 27703302467091960609331889.532m), // 4 + 8
-	    new TestResult(0, -3203844.9559968181492513385018m), // 4 + 9
-	    new TestResult(0, -48466870444188873796410.028868m), // 4 + 10
-	    new TestResult(0, -545193693242804784.30331374676m), // 4 + 11
-	    new TestResult(0, 10.762923405333874180989253143m), // 4 + 12
-	    new TestResult(0, -400453059665371395962.33474452m), // 4 + 13
-	    new TestResult(0, 222851627785191714190060.61676m), // 4 + 14
-	    new TestResult(0, 14246043379204153213661345.584m), // 4 + 15
-	    new TestResult(0, -421113.30446308691436596648186m), // 4 + 16
-	    new TestResult(0, 24463288738299555.200508898642m), // 4 + 17
-	    new TestResult(0, -5323259153836385912697766.001m), // 4 + 18
-	    new TestResult(0, 102801066199805834724673179.19m), // 4 + 19
-	    new TestResult(0, 7081320770.3793287174700927968m), // 4 + 20
-	    new TestResult(0, 415752273949.77704245656837041m), // 4 + 21
-	    new TestResult(0, -6389392489882.6362673670820462m), // 4 + 22
-	    new TestResult(0, 442346282742925.0596416330681m), // 4 + 23
-	    new TestResult(0, -512833780867313.89020837443764m), // 4 + 24
-	    new TestResult(0, 608940580690915714.1450897514m), // 4 + 25
-	    new TestResult(0, -42535053313319986966105.037787m), // 4 + 26
-	    new TestResult(0, -7808274522591953107475.8812311m), // 4 + 27
-	    new TestResult(0, 1037807626804273037330059481.7m), // 4 + 28
-	    new TestResult(0, -4997122956.448652425771563042m), // 4 + 29
-	    new TestResult(0, 0.1m), // 5 + 0
-	    new TestResult(0, 1.1m), // 5 + 1
-	    new TestResult(0, -0.9m), // 5 + 2
-	    new TestResult(0, 2.1m), // 5 + 3
-	    new TestResult(0, 10.1m), // 5 + 4
-	    new TestResult(0, 0.2m), // 5 + 5
-	    new TestResult(2, 79228162514264337593543950335m), // 5 + 6
-	    new TestResult(2, -79228162514264337593543950335m), // 5 + 7
-	    new TestResult(0, 27703302467091960609331879.632m), // 5 + 8
-	    new TestResult(0, -3203854.8559968181492513385018m), // 5 + 9
-	    new TestResult(0, -48466870444188873796419.928868m), // 5 + 10
-	    new TestResult(0, -545193693242804794.20331374676m), // 5 + 11
-	    new TestResult(0, 0.8629234053338741809892531431m), // 5 + 12
-	    new TestResult(0, -400453059665371395972.23474452m), // 5 + 13
-	    new TestResult(0, 222851627785191714190050.71676m), // 5 + 14
-	    new TestResult(0, 14246043379204153213661335.684m), // 5 + 15
-	    new TestResult(0, -421123.20446308691436596648186m), // 5 + 16
-	    new TestResult(0, 24463288738299545.300508898642m), // 5 + 17
-	    new TestResult(0, -5323259153836385912697775.901m), // 5 + 18
-	    new TestResult(0, 102801066199805834724673169.29m), // 5 + 19
-	    new TestResult(0, 7081320760.4793287174700927968m), // 5 + 20
-	    new TestResult(0, 415752273939.87704245656837041m), // 5 + 21
-	    new TestResult(0, -6389392489892.5362673670820462m), // 5 + 22
-	    new TestResult(0, 442346282742915.1596416330681m), // 5 + 23
-	    new TestResult(0, -512833780867323.79020837443764m), // 5 + 24
-	    new TestResult(0, 608940580690915704.2450897514m), // 5 + 25
-	    new TestResult(0, -42535053313319986966114.937787m), // 5 + 26
-	    new TestResult(0, -7808274522591953107485.7812311m), // 5 + 27
-	    new TestResult(0, 1037807626804273037330059471.8m), // 5 + 28
-	    new TestResult(0, -4997122966.348652425771563042m), // 5 + 29
-	    new TestResult(0, 79228162514264337593543950335m), // 6 + 0
-	    new TestResult(1, 0m), // 6 + 1
-	    new TestResult(0, 79228162514264337593543950334m), // 6 + 2
-	    new TestResult(1, 0m), // 6 + 3
-	    new TestResult(1, 0m), // 6 + 4
-	    new TestResult(0, 79228162514264337593543950335m), // 6 + 5
-	    new TestResult(1, 0m), // 6 + 6
-	    new TestResult(0, 0m), // 6 + 7
-	    new TestResult(1, 0m), // 6 + 8
-	    new TestResult(0, 79228162514264337593540746480m), // 6 + 9
-	    new TestResult(0, 79228114047393893404670153915m), // 6 + 10
-	    new TestResult(0, 79228162513719143900301145541m), // 6 + 11
-	    new TestResult(1, 0m), // 6 + 12
-	    new TestResult(0, 79228162113811277928172554363m), // 6 + 13
-	    new TestResult(1, 0m), // 6 + 14
-	    new TestResult(1, 0m), // 6 + 15
-	    new TestResult(0, 79228162514264337593543529212m), // 6 + 16
-	    new TestResult(1, 0m), // 6 + 17
-	    new TestResult(0, 79222839255110501207631252559m), // 6 + 18
-	    new TestResult(1, 0m), // 6 + 19
-	    new TestResult(1, 0m), // 6 + 20
-	    new TestResult(1, 0m), // 6 + 21
-	    new TestResult(0, 79228162514264331204151460442m), // 6 + 22
-	    new TestResult(1, 0m), // 6 + 23
-	    new TestResult(0, 79228162514263824759763083011m), // 6 + 24
-	    new TestResult(1, 0m), // 6 + 25
-	    new TestResult(0, 79228119979211024273556984220m), // 6 + 26
-	    new TestResult(0, 79228154705989815001590842849m), // 6 + 27
-	    new TestResult(1, 0m), // 6 + 28
-	    new TestResult(0, 79228162514264337588546827369m), // 6 + 29
-	    new TestResult(0, -79228162514264337593543950335m), // 7 + 0
-	    new TestResult(0, -79228162514264337593543950334m), // 7 + 1
-	    new TestResult(1, 0m), // 7 + 2
-	    new TestResult(0, -79228162514264337593543950333m), // 7 + 3
-	    new TestResult(0, -79228162514264337593543950325m), // 7 + 4
-	    new TestResult(0, -79228162514264337593543950335m), // 7 + 5
-	    new TestResult(0, 0m), // 7 + 6
-	    new TestResult(1, 0m), // 7 + 7
-	    new TestResult(0, -79200459211797245632934618455m), // 7 + 8
-	    new TestResult(1, 0m), // 7 + 9
-	    new TestResult(1, 0m), // 7 + 10
-	    new TestResult(1, 0m), // 7 + 11
-	    new TestResult(0, -79228162514264337593543950334m), // 7 + 12
-	    new TestResult(1, 0m), // 7 + 13
-	    new TestResult(0, -79227939662636552401829760284m), // 7 + 14
-	    new TestResult(0, -79213916470885133440330288999m), // 7 + 15
-	    new TestResult(1, 0m), // 7 + 16
-	    new TestResult(0, -79228162514239874304805650790m), // 7 + 17
-	    new TestResult(1, 0m), // 7 + 18
-	    new TestResult(0, -79125361448064531758819277166m), // 7 + 19
-	    new TestResult(0, -79228162514264337586462629575m), // 7 + 20
-	    new TestResult(0, -79228162514264337177791676395m), // 7 + 21
-	    new TestResult(1, 0m), // 7 + 22
-	    new TestResult(0, -79228162514263895247261207420m), // 7 + 23
-	    new TestResult(1, 0m), // 7 + 24
-	    new TestResult(0, -79228162513655397012853034631m), // 7 + 25
-	    new TestResult(1, 0m), // 7 + 26
-	    new TestResult(1, 0m), // 7 + 27
-	    new TestResult(0, -78190354887460064556213890863m), // 7 + 28
-	    new TestResult(1, 0m), // 7 + 29
-	    new TestResult(0, 27703302467091960609331879.532m), // 8 + 0
-	    new TestResult(0, 27703302467091960609331880.532m), // 8 + 1
-	    new TestResult(0, 27703302467091960609331878.532m), // 8 + 2
-	    new TestResult(0, 27703302467091960609331881.532m), // 8 + 3
-	    new TestResult(0, 27703302467091960609331889.532m), // 8 + 4
-	    new TestResult(0, 27703302467091960609331879.632m), // 8 + 5
-	    new TestResult(1, 0m), // 8 + 6
-	    new TestResult(2, -79200459211797245632934618455m), // 8 + 7
-	    new TestResult(0, 55406604934183921218663759.064m), // 8 + 8
-	    new TestResult(0, 27703302467091960606128024.576m), // 8 + 9
-	    new TestResult(0, 27654835596647771735535459.503m), // 8 + 10
-	    new TestResult(0, 27703301921898267366527085.229m), // 8 + 11
-	    new TestResult(0, 27703302467091960609331880.295m), // 8 + 12
-	    new TestResult(0, 27702902014032295237935907.197m), // 8 + 13
-	    new TestResult(0, 27926154094877152323521930.149m), // 8 + 14
-	    new TestResult(0, 41949345846296113822993215.116m), // 8 + 15
-	    new TestResult(0, 27703302467091960608910756.228m), // 8 + 16
-	    new TestResult(0, 27703302491555249347631424.733m), // 8 + 17
-	    new TestResult(0, 22380043313255574696634103.531m), // 8 + 18
-	    new TestResult(2, 130504368666897795334005048.72m), // 8 + 19
-	    new TestResult(0, 27703302467091967690652639.911m), // 8 + 20
-	    new TestResult(0, 27703302467092376361605819.309m), // 8 + 21
-	    new TestResult(0, 27703302467085571216841986.896m), // 8 + 22
-	    new TestResult(0, 27703302467534306892074794.592m), // 8 + 23
-	    new TestResult(0, 27703302466579126828464555.642m), // 8 + 24
-	    new TestResult(0, 27703303076032541300247583.677m), // 8 + 25
-	    new TestResult(0, 27660767413778640622365764.494m), // 8 + 26
-	    new TestResult(0, 27695494192569368656224393.651m), // 8 + 27
-	    new TestResult(2, 1065510929271364997939391351.2m), // 8 + 28
-	    new TestResult(0, 27703302467091955612208913.083m), // 8 + 29
-	    new TestResult(0, -3203854.9559968181492513385018m), // 9 + 0
-	    new TestResult(0, -3203853.9559968181492513385018m), // 9 + 1
-	    new TestResult(0, -3203855.9559968181492513385018m), // 9 + 2
-	    new TestResult(0, -3203852.9559968181492513385018m), // 9 + 3
-	    new TestResult(0, -3203844.9559968181492513385018m), // 9 + 4
-	    new TestResult(0, -3203854.8559968181492513385018m), // 9 + 5
-	    new TestResult(2, 79228162514264337593540746480m), // 9 + 6
-	    new TestResult(1, 0m), // 9 + 7
-	    new TestResult(2, 27703302467091960606128024.576m), // 9 + 8
-	    new TestResult(0, -6407709.9119936362985026770036m), // 9 + 9
-	    new TestResult(2, -48466870444188877000274.984865m), // 9 + 10
-	    new TestResult(2, -545193693246008649.25931056491m), // 9 + 11
-	    new TestResult(0, -3203854.1930734128153771575125m), // 9 + 12
-	    new TestResult(2, -400453059665374599827.29074134m), // 9 + 13
-	    new TestResult(2, 222851627785191710986195.66076m), // 9 + 14
-	    new TestResult(2, 14246043379204153210457480.628m), // 9 + 15
-	    new TestResult(0, -3624978.2604599050636173049837m), // 9 + 16
-	    new TestResult(2, 24463288735095690.244512080493m), // 9 + 17
-	    new TestResult(2, -5323259153836385915901630.957m), // 9 + 18
-	    new TestResult(2, 102801066199805834721469314.23m), // 9 + 19
-	    new TestResult(2, 7078116905.4233318993208414583m), // 9 + 20
-	    new TestResult(2, 415749070084.82104563841911907m), // 9 + 21
-	    new TestResult(2, -6389395693747.5922641852312975m), // 9 + 22
-	    new TestResult(2, 442346279539060.10364481491885m), // 9 + 23
-	    new TestResult(2, -512833784071178.84620519258689m), // 9 + 24
-	    new TestResult(2, 608940580687711849.18909293325m), // 9 + 25
-	    new TestResult(2, -42535053313319990169969.993784m), // 9 + 26
-	    new TestResult(2, -7808274522591956311340.8372279m), // 9 + 27
-	    new TestResult(2, 1037807626804273037326855616.7m), // 9 + 28
-	    new TestResult(2, -5000326821.4046492439208143805m), // 9 + 29
-	    new TestResult(0, -48466870444188873796420.028868m), // 10 + 0
-	    new TestResult(0, -48466870444188873796419.028868m), // 10 + 1
-	    new TestResult(0, -48466870444188873796421.028868m), // 10 + 2
-	    new TestResult(0, -48466870444188873796418.028868m), // 10 + 3
-	    new TestResult(0, -48466870444188873796410.028868m), // 10 + 4
-	    new TestResult(0, -48466870444188873796419.928868m), // 10 + 5
-	    new TestResult(2, 79228114047393893404670153915m), // 10 + 6
-	    new TestResult(1, 0m), // 10 + 7
-	    new TestResult(2, 27654835596647771735535459.503m), // 10 + 8
-	    new TestResult(0, -48466870444188877000274.984865m), // 10 + 9
-	    new TestResult(2, -96933740888377747592840.05774m), // 10 + 10
-	    new TestResult(0, -48467415637882116601214.332182m), // 10 + 11
-	    new TestResult(0, -48466870444188873796419.265945m), // 10 + 12
-	    new TestResult(0, -48867323503854245192392.363613m), // 10 + 13
-	    new TestResult(2, 174384757341002840393630.58789m), // 10 + 14
-	    new TestResult(2, 14197576508759964339864915.555m), // 10 + 15
-	    new TestResult(0, -48466870444188874217543.333331m), // 10 + 16
-	    new TestResult(0, -48466845980900135496874.828359m), // 10 + 17
-	    new TestResult(2, -5371726024280574786494196.0299m), // 10 + 18
-	    new TestResult(2, 102752599329361645850876749.16m), // 10 + 19
-	    new TestResult(0, -48466870444181792475659.649539m), // 10 + 20
-	    new TestResult(0, -48466870443773121522480.251826m), // 10 + 21
-	    new TestResult(0, -48466870450578266286312.665135m), // 10 + 22
-	    new TestResult(0, -48466870001842591053504.969226m), // 10 + 23
-	    new TestResult(0, -48466870957022654663743.919076m), // 10 + 24
-	    new TestResult(0, -48466261503608182880715.883778m), // 10 + 25
-	    new TestResult(2, -91001923757508860762535.06666m), // 10 + 26
-	    new TestResult(0, -56275144966780826903905.910099m), // 10 + 27
-	    new TestResult(2, 1037759159933828848456263051.7m), // 10 + 28
-	    new TestResult(0, -48466870444193870919386.47752m), // 10 + 29
-	    new TestResult(0, -545193693242804794.30331374676m), // 11 + 0
-	    new TestResult(0, -545193693242804793.30331374676m), // 11 + 1
-	    new TestResult(0, -545193693242804795.30331374676m), // 11 + 2
-	    new TestResult(0, -545193693242804792.30331374676m), // 11 + 3
-	    new TestResult(0, -545193693242804784.30331374676m), // 11 + 4
-	    new TestResult(0, -545193693242804794.20331374676m), // 11 + 5
-	    new TestResult(2, 79228162513719143900301145541m), // 11 + 6
-	    new TestResult(1, 0m), // 11 + 7
-	    new TestResult(2, 27703301921898267366527085.229m), // 11 + 8
-	    new TestResult(0, -545193693246008649.25931056491m), // 11 + 9
-	    new TestResult(2, -48467415637882116601214.332182m), // 11 + 10
-	    new TestResult(2, -1090387386485609588.6066274935m), // 11 + 11
-	    new TestResult(0, -545193693242804793.54039034143m), // 11 + 12
-	    new TestResult(2, -400998253358614200766.63805827m), // 11 + 13
-	    new TestResult(2, 222851082591498471385256.31345m), // 11 + 14
-	    new TestResult(2, 14246042834010459970856541.281m), // 11 + 15
-	    new TestResult(0, -545193693243225917.60777683367m), // 11 + 16
-	    new TestResult(0, -520730404504505249.10280484812m), // 11 + 17
-	    new TestResult(2, -5323259699030079155502570.3043m), // 11 + 18
-	    new TestResult(2, 102801065654612141481868374.89m), // 11 + 19
-	    new TestResult(0, -545193686161484033.92398502929m), // 11 + 20
-	    new TestResult(0, -545193277490530854.52627129019m), // 11 + 21
-	    new TestResult(0, -545200082635294686.93958111384m), // 11 + 22
-	    new TestResult(0, -544751346960061879.24367211369m), // 11 + 23
-	    new TestResult(0, -545706527023672118.1935221212m), // 11 + 24
-	    new TestResult(0, 63746887448110909.84177600464m), // 11 + 25
-	    new TestResult(2, -42535598507013229770909.341101m), // 11 + 26
-	    new TestResult(2, -7808819716285195912280.1845448m), // 11 + 27
-	    new TestResult(2, 1037807626259079344087254677.4m), // 11 + 28
-	    new TestResult(0, -545193698239927760.75196617253m), // 11 + 29
-	    new TestResult(0, 0.7629234053338741809892531431m), // 12 + 0
-	    new TestResult(0, 1.7629234053338741809892531431m), // 12 + 1
-	    new TestResult(0, -0.2370765946661258190107468569m), // 12 + 2
-	    new TestResult(0, 2.7629234053338741809892531431m), // 12 + 3
-	    new TestResult(2, 10.762923405333874180989253143m), // 12 + 4
-	    new TestResult(0, 0.8629234053338741809892531431m), // 12 + 5
-	    new TestResult(1, 0m), // 12 + 6
-	    new TestResult(2, -79228162514264337593543950334m), // 12 + 7
-	    new TestResult(2, 27703302467091960609331880.295m), // 12 + 8
-	    new TestResult(2, -3203854.1930734128153771575125m), // 12 + 9
-	    new TestResult(2, -48466870444188873796419.265945m), // 12 + 10
-	    new TestResult(2, -545193693242804793.54039034143m), // 12 + 11
-	    new TestResult(0, 1.5258468106677483619785062862m), // 12 + 12
-	    new TestResult(2, -400453059665371395971.57182111m), // 12 + 13
-	    new TestResult(2, 222851627785191714190051.37968m), // 12 + 14
-	    new TestResult(2, 14246043379204153213661336.347m), // 12 + 15
-	    new TestResult(2, -421122.54153968158049178549261m), // 12 + 16
-	    new TestResult(2, 24463288738299545.963432303976m), // 12 + 17
-	    new TestResult(2, -5323259153836385912697775.2381m), // 12 + 18
-	    new TestResult(2, 102801066199805834724673169.95m), // 12 + 19
-	    new TestResult(2, 7081320761.1422521228039669778m), // 12 + 20
-	    new TestResult(2, 415752273940.53996586190224459m), // 12 + 21
-	    new TestResult(2, -6389392489891.873343961748172m), // 12 + 22
-	    new TestResult(2, 442346282742915.82256503840197m), // 12 + 23
-	    new TestResult(2, -512833780867323.12728496910377m), // 12 + 24
-	    new TestResult(2, 608940580690915704.90801315673m), // 12 + 25
-	    new TestResult(2, -42535053313319986966114.274864m), // 12 + 26
-	    new TestResult(2, -7808274522591953107485.1183077m), // 12 + 27
-	    new TestResult(2, 1037807626804273037330059472.5m), // 12 + 28
-	    new TestResult(2, -4997122965.685729020437688861m), // 12 + 29
-	    new TestResult(0, -400453059665371395972.33474452m), // 13 + 0
-	    new TestResult(0, -400453059665371395971.33474452m), // 13 + 1
-	    new TestResult(0, -400453059665371395973.33474452m), // 13 + 2
-	    new TestResult(0, -400453059665371395970.33474452m), // 13 + 3
-	    new TestResult(0, -400453059665371395962.33474452m), // 13 + 4
-	    new TestResult(0, -400453059665371395972.23474452m), // 13 + 5
-	    new TestResult(2, 79228162113811277928172554363m), // 13 + 6
-	    new TestResult(1, 0m), // 13 + 7
-	    new TestResult(2, 27702902014032295237935907.197m), // 13 + 8
-	    new TestResult(0, -400453059665374599827.29074134m), // 13 + 9
-	    new TestResult(2, -48867323503854245192392.363613m), // 13 + 10
-	    new TestResult(0, -400998253358614200766.63805827m), // 13 + 11
-	    new TestResult(0, -400453059665371395971.57182111m), // 13 + 12
-	    new TestResult(2, -800906119330742791944.669489m), // 13 + 13
-	    new TestResult(2, 222451174725526342794078.28202m), // 13 + 14
-	    new TestResult(2, 14245642926144487842265363.249m), // 13 + 15
-	    new TestResult(0, -400453059665371817095.63920761m), // 13 + 16
-	    new TestResult(0, -400428596376633096427.13423562m), // 13 + 17
-	    new TestResult(2, -5323659606896051284093748.3357m), // 13 + 18
-	    new TestResult(2, 102800665746746169353277196.86m), // 13 + 19
-	    new TestResult(0, -400453059658290075211.9554158m), // 13 + 20
-	    new TestResult(0, -400453059249619122032.55770206m), // 13 + 21
-	    new TestResult(0, -400453066054763885864.97101189m), // 13 + 22
-	    new TestResult(0, -400452617319088653057.27510289m), // 13 + 23
-	    new TestResult(0, -400453572499152263296.22495289m), // 13 + 24
-	    new TestResult(0, -399844119084680480268.18965477m), // 13 + 25
-	    new TestResult(2, -42935506372985358362087.372532m), // 13 + 26
-	    new TestResult(2, -8208727582257324503458.215976m), // 13 + 27
-	    new TestResult(2, 1037807226351213371958663499.4m), // 13 + 28
-	    new TestResult(0, -400453059670368518938.78339695m), // 13 + 29
-	    new TestResult(0, 222851627785191714190050.61676m), // 14 + 0
-	    new TestResult(0, 222851627785191714190051.61676m), // 14 + 1
-	    new TestResult(0, 222851627785191714190049.61676m), // 14 + 2
-	    new TestResult(0, 222851627785191714190052.61676m), // 14 + 3
-	    new TestResult(0, 222851627785191714190060.61676m), // 14 + 4
-	    new TestResult(0, 222851627785191714190050.71676m), // 14 + 5
-	    new TestResult(1, 0m), // 14 + 6
-	    new TestResult(2, -79227939662636552401829760284m), // 14 + 7
-	    new TestResult(2, 27926154094877152323521930.149m), // 14 + 8
-	    new TestResult(0, 222851627785191710986195.66076m), // 14 + 9
-	    new TestResult(0, 174384757341002840393630.58789m), // 14 + 10
-	    new TestResult(0, 222851082591498471385256.31345m), // 14 + 11
-	    new TestResult(0, 222851627785191714190051.37968m), // 14 + 12
-	    new TestResult(0, 222451174725526342794078.28202m), // 14 + 13
-	    new TestResult(0, 445703255570383428380101.23352m), // 14 + 14
-	    new TestResult(2, 14468895006989344927851386.201m), // 14 + 15
-	    new TestResult(0, 222851627785191713768927.3123m), // 14 + 16
-	    new TestResult(0, 222851652248480452489595.81727m), // 14 + 17
-	    new TestResult(2, -5100407526051194198507725.3842m), // 14 + 18
-	    new TestResult(2, 103023917827591026438863219.81m), // 14 + 19
-	    new TestResult(0, 222851627785198795510810.99609m), // 14 + 20
-	    new TestResult(0, 222851627785607466463990.3938m), // 14 + 21
-	    new TestResult(0, 222851627778802321700157.98049m), // 14 + 22
-	    new TestResult(0, 222851628227537996932965.6764m), // 14 + 23
-	    new TestResult(0, 222851627272357933322726.72655m), // 14 + 24
-	    new TestResult(0, 222852236725772405105754.76185m), // 14 + 25
-	    new TestResult(0, 180316574471871727223935.57897m), // 14 + 26
-	    new TestResult(0, 215043353262599761082564.73553m), // 14 + 27
-	    new TestResult(2, 1038030478432058229044249522.3m), // 14 + 28
-	    new TestResult(0, 222851627785186717067084.16811m), // 14 + 29
-	    new TestResult(0, 14246043379204153213661335.584m), // 15 + 0
-	    new TestResult(0, 14246043379204153213661336.584m), // 15 + 1
-	    new TestResult(0, 14246043379204153213661334.584m), // 15 + 2
-	    new TestResult(0, 14246043379204153213661337.584m), // 15 + 3
-	    new TestResult(0, 14246043379204153213661345.584m), // 15 + 4
-	    new TestResult(0, 14246043379204153213661335.684m), // 15 + 5
-	    new TestResult(1, 0m), // 15 + 6
-	    new TestResult(2, -79213916470885133440330288999m), // 15 + 7
-	    new TestResult(0, 41949345846296113822993215.116m), // 15 + 8
-	    new TestResult(0, 14246043379204153210457480.628m), // 15 + 9
-	    new TestResult(0, 14197576508759964339864915.555m), // 15 + 10
-	    new TestResult(0, 14246042834010459970856541.281m), // 15 + 11
-	    new TestResult(0, 14246043379204153213661336.347m), // 15 + 12
-	    new TestResult(0, 14245642926144487842265363.249m), // 15 + 13
-	    new TestResult(0, 14468895006989344927851386.201m), // 15 + 14
-	    new TestResult(0, 28492086758408306427322671.168m), // 15 + 15
-	    new TestResult(0, 14246043379204153213240212.28m), // 15 + 16
-	    new TestResult(0, 14246043403667441951960880.785m), // 15 + 17
-	    new TestResult(0, 8922784225367767300963559.583m), // 15 + 18
-	    new TestResult(2, 117047109579009987938334504.77m), // 15 + 19
-	    new TestResult(0, 14246043379204160294982095.963m), // 15 + 20
-	    new TestResult(0, 14246043379204568965935275.361m), // 15 + 21
-	    new TestResult(0, 14246043379197763821171442.948m), // 15 + 22
-	    new TestResult(0, 14246043379646499496404250.644m), // 15 + 23
-	    new TestResult(0, 14246043378691319432794011.694m), // 15 + 24
-	    new TestResult(0, 14246043988144733904577039.729m), // 15 + 25
-	    new TestResult(0, 14203508325890833226695220.546m), // 15 + 26
-	    new TestResult(0, 14238235104681561260553849.703m), // 15 + 27
-	    new TestResult(2, 1052053670183477190543720807.3m), // 15 + 28
-	    new TestResult(0, 14246043379204148216538369.135m), // 15 + 29
-	    new TestResult(0, -421123.30446308691436596648186m), // 16 + 0
-	    new TestResult(0, -421122.30446308691436596648186m), // 16 + 1
-	    new TestResult(0, -421124.30446308691436596648186m), // 16 + 2
-	    new TestResult(0, -421121.30446308691436596648186m), // 16 + 3
-	    new TestResult(0, -421113.30446308691436596648186m), // 16 + 4
-	    new TestResult(0, -421123.20446308691436596648186m), // 16 + 5
-	    new TestResult(2, 79228162514264337593543529212m), // 16 + 6
-	    new TestResult(1, 0m), // 16 + 7
-	    new TestResult(2, 27703302467091960608910756.228m), // 16 + 8
-	    new TestResult(2, -3624978.2604599050636173049837m), // 16 + 9
-	    new TestResult(2, -48466870444188874217543.333331m), // 16 + 10
-	    new TestResult(2, -545193693243225917.60777683367m), // 16 + 11
-	    new TestResult(0, -421122.54153968158049178549261m), // 16 + 12
-	    new TestResult(2, -400453059665371817095.63920761m), // 16 + 13
-	    new TestResult(2, 222851627785191713768927.3123m), // 16 + 14
-	    new TestResult(2, 14246043379204153213240212.28m), // 16 + 15
-	    new TestResult(2, -842246.6089261738287319329637m), // 16 + 16
-	    new TestResult(2, 24463288737878421.896045811728m), // 16 + 17
-	    new TestResult(2, -5323259153836385913118899.3055m), // 16 + 18
-	    new TestResult(2, 102801066199805834724252045.89m), // 16 + 19
-	    new TestResult(2, 7080899637.0748656305557268303m), // 16 + 20
-	    new TestResult(2, 415751852816.47257936965400444m), // 16 + 21
-	    new TestResult(2, -6389392911015.9407304539964122m), // 16 + 22
-	    new TestResult(2, 442346282321791.75517854615373m), // 16 + 23
-	    new TestResult(2, -512833781288447.19467146135201m), // 16 + 24
-	    new TestResult(2, 608940580690494580.84062666449m), // 16 + 25
-	    new TestResult(2, -42535053313319987387238.34225m), // 16 + 26
-	    new TestResult(2, -7808274522591953528609.1856942m), // 16 + 27
-	    new TestResult(2, 1037807626804273037329638348.4m), // 16 + 28
-	    new TestResult(2, -4997544089.7531155126859290085m), // 16 + 29
-	    new TestResult(0, 24463288738299545.200508898642m), // 17 + 0
-	    new TestResult(0, 24463288738299546.200508898642m), // 17 + 1
-	    new TestResult(0, 24463288738299544.200508898642m), // 17 + 2
-	    new TestResult(0, 24463288738299547.200508898642m), // 17 + 3
-	    new TestResult(0, 24463288738299555.200508898642m), // 17 + 4
-	    new TestResult(0, 24463288738299545.300508898642m), // 17 + 5
-	    new TestResult(1, 0m), // 17 + 6
-	    new TestResult(2, -79228162514239874304805650790m), // 17 + 7
-	    new TestResult(2, 27703302491555249347631424.733m), // 17 + 8
-	    new TestResult(0, 24463288735095690.244512080493m), // 17 + 9
-	    new TestResult(2, -48466845980900135496874.828359m), // 17 + 10
-	    new TestResult(2, -520730404504505249.10280484812m), // 17 + 11
-	    new TestResult(0, 24463288738299545.963432303976m), // 17 + 12
-	    new TestResult(2, -400428596376633096427.13423562m), // 17 + 13
-	    new TestResult(2, 222851652248480452489595.81727m), // 17 + 14
-	    new TestResult(2, 14246043403667441951960880.785m), // 17 + 15
-	    new TestResult(0, 24463288737878421.896045811728m), // 17 + 16
-	    new TestResult(0, 48926577476599090.401017797284m), // 17 + 17
-	    new TestResult(2, -5323259129373097174398230.8005m), // 17 + 18
-	    new TestResult(2, 102801066224269123462972714.39m), // 17 + 19
-	    new TestResult(0, 24463295819620305.579837616112m), // 17 + 20
-	    new TestResult(0, 24463704490573484.97755135521m), // 17 + 21
-	    new TestResult(0, 24456899345809652.56424153156m), // 17 + 22
-	    new TestResult(0, 24905635021042460.26015053171m), // 17 + 23
-	    new TestResult(0, 23950454957432221.310300524204m), // 17 + 24
-	    new TestResult(2, 633403869429215249.34559865004m), // 17 + 25
-	    new TestResult(2, -42535028850031248666569.837278m), // 17 + 26
-	    new TestResult(2, -7808250059303214807940.6807222m), // 17 + 27
-	    new TestResult(2, 1037807626828736326068359016.9m), // 17 + 28
-	    new TestResult(0, 24463283741176578.75185647287m), // 17 + 29
-	    new TestResult(0, -5323259153836385912697776.001m), // 18 + 0
-	    new TestResult(0, -5323259153836385912697775.001m), // 18 + 1
-	    new TestResult(0, -5323259153836385912697777.001m), // 18 + 2
-	    new TestResult(0, -5323259153836385912697774.001m), // 18 + 3
-	    new TestResult(0, -5323259153836385912697766.001m), // 18 + 4
-	    new TestResult(0, -5323259153836385912697775.901m), // 18 + 5
-	    new TestResult(2, 79222839255110501207631252559m), // 18 + 6
-	    new TestResult(1, 0m), // 18 + 7
-	    new TestResult(0, 22380043313255574696634103.531m), // 18 + 8
-	    new TestResult(0, -5323259153836385915901630.957m), // 18 + 9
-	    new TestResult(0, -5371726024280574786494196.0299m), // 18 + 10
-	    new TestResult(0, -5323259699030079155502570.3043m), // 18 + 11
-	    new TestResult(0, -5323259153836385912697775.2381m), // 18 + 12
-	    new TestResult(0, -5323659606896051284093748.3357m), // 18 + 13
-	    new TestResult(0, -5100407526051194198507725.3842m), // 18 + 14
-	    new TestResult(0, 8922784225367767300963559.583m), // 18 + 15
-	    new TestResult(0, -5323259153836385913118899.3055m), // 18 + 16
-	    new TestResult(0, -5323259129373097174398230.8005m), // 18 + 17
-	    new TestResult(0, -10646518307672771825395552.002m), // 18 + 18
-	    new TestResult(2, 97477807045969448811975393.19m), // 18 + 19
-	    new TestResult(0, -5323259153836378831377015.6217m), // 18 + 20
-	    new TestResult(0, -5323259153835970160423836.224m), // 18 + 21
-	    new TestResult(0, -5323259153842775305187668.6373m), // 18 + 22
-	    new TestResult(0, -5323259153394039629954860.9414m), // 18 + 23
-	    new TestResult(0, -5323259154349219693565099.8912m), // 18 + 24
-	    new TestResult(0, -5323258544895805221782071.8559m), // 18 + 25
-	    new TestResult(0, -5365794207149705899663891.0388m), // 18 + 26
-	    new TestResult(0, -5331067428358977865805261.8822m), // 18 + 27
-	    new TestResult(2, 1032484367650436651417361695.7m), // 18 + 28
-	    new TestResult(0, -5323259153836390909820742.4497m), // 18 + 29
-	    new TestResult(0, 102801066199805834724673169.19m), // 19 + 0
-	    new TestResult(0, 102801066199805834724673170.19m), // 19 + 1
-	    new TestResult(0, 102801066199805834724673168.19m), // 19 + 2
-	    new TestResult(0, 102801066199805834724673171.19m), // 19 + 3
-	    new TestResult(0, 102801066199805834724673179.19m), // 19 + 4
-	    new TestResult(0, 102801066199805834724673169.29m), // 19 + 5
-	    new TestResult(1, 0m), // 19 + 6
-	    new TestResult(2, -79125361448064531758819277166m), // 19 + 7
-	    new TestResult(0, 130504368666897795334005048.72m), // 19 + 8
-	    new TestResult(0, 102801066199805834721469314.23m), // 19 + 9
-	    new TestResult(0, 102752599329361645850876749.16m), // 19 + 10
-	    new TestResult(0, 102801065654612141481868374.89m), // 19 + 11
-	    new TestResult(0, 102801066199805834724673169.95m), // 19 + 12
-	    new TestResult(0, 102800665746746169353277196.86m), // 19 + 13
-	    new TestResult(0, 103023917827591026438863219.81m), // 19 + 14
-	    new TestResult(0, 117047109579009987938334504.77m), // 19 + 15
-	    new TestResult(0, 102801066199805834724252045.89m), // 19 + 16
-	    new TestResult(0, 102801066224269123462972714.39m), // 19 + 17
-	    new TestResult(0, 97477807045969448811975393.19m), // 19 + 18
-	    new TestResult(0, 205602132399611669449346338.38m), // 19 + 19
-	    new TestResult(0, 102801066199805841805993929.57m), // 19 + 20
-	    new TestResult(0, 102801066199806250476947108.97m), // 19 + 21
-	    new TestResult(0, 102801066199799445332183276.55m), // 19 + 22
-	    new TestResult(0, 102801066200248181007416084.25m), // 19 + 23
-	    new TestResult(0, 102801066199293000943805845.3m), // 19 + 24
-	    new TestResult(0, 102801066808746415415588873.34m), // 19 + 25
-	    new TestResult(0, 102758531146492514737707054.15m), // 19 + 26
-	    new TestResult(0, 102793257925283242771565683.31m), // 19 + 27
-	    new TestResult(2, 1140608693004078872054732640.9m), // 19 + 28
-	    new TestResult(0, 102801066199805829727550202.74m), // 19 + 29
-	    new TestResult(0, 7081320760.3793287174700927968m), // 20 + 0
-	    new TestResult(0, 7081320761.3793287174700927968m), // 20 + 1
-	    new TestResult(0, 7081320759.3793287174700927968m), // 20 + 2
-	    new TestResult(0, 7081320762.3793287174700927968m), // 20 + 3
-	    new TestResult(0, 7081320770.3793287174700927968m), // 20 + 4
-	    new TestResult(0, 7081320760.4793287174700927968m), // 20 + 5
-	    new TestResult(1, 0m), // 20 + 6
-	    new TestResult(2, -79228162514264337586462629575m), // 20 + 7
-	    new TestResult(2, 27703302467091967690652639.911m), // 20 + 8
-	    new TestResult(0, 7078116905.4233318993208414583m), // 20 + 9
-	    new TestResult(2, -48466870444181792475659.649539m), // 20 + 10
-	    new TestResult(2, -545193686161484033.92398502929m), // 20 + 11
-	    new TestResult(0, 7081320761.1422521228039669778m), // 20 + 12
-	    new TestResult(2, -400453059658290075211.9554158m), // 20 + 13
-	    new TestResult(2, 222851627785198795510810.99609m), // 20 + 14
-	    new TestResult(2, 14246043379204160294982095.963m), // 20 + 15
-	    new TestResult(0, 7080899637.0748656305557268303m), // 20 + 16
-	    new TestResult(2, 24463295819620305.579837616112m), // 20 + 17
-	    new TestResult(2, -5323259153836378831377015.6217m), // 20 + 18
-	    new TestResult(2, 102801066199805841805993929.57m), // 20 + 19
-	    new TestResult(2, 14162641520.758657434940185594m), // 20 + 20
-	    new TestResult(2, 422833594700.15637117403846321m), // 20 + 21
-	    new TestResult(2, -6382311169132.2569386496119534m), // 20 + 22
-	    new TestResult(2, 442353364063675.43897035053819m), // 20 + 23
-	    new TestResult(2, -512826699546563.51087965696755m), // 20 + 24
-	    new TestResult(2, 608940587772236464.52441846887m), // 20 + 25
-	    new TestResult(2, -42535053313312905645354.658458m), // 20 + 26
-	    new TestResult(2, -7808274522584871786725.5019024m), // 20 + 27
-	    new TestResult(2, 1037807626804273044411380232.1m), // 20 + 28
-	    new TestResult(0, 2084197793.9306762916985297548m), // 20 + 29
-	    new TestResult(0, 415752273939.77704245656837041m), // 21 + 0
-	    new TestResult(0, 415752273940.77704245656837041m), // 21 + 1
-	    new TestResult(0, 415752273938.77704245656837041m), // 21 + 2
-	    new TestResult(0, 415752273941.77704245656837041m), // 21 + 3
-	    new TestResult(0, 415752273949.77704245656837041m), // 21 + 4
-	    new TestResult(0, 415752273939.87704245656837041m), // 21 + 5
-	    new TestResult(1, 0m), // 21 + 6
-	    new TestResult(2, -79228162514264337177791676395m), // 21 + 7
-	    new TestResult(2, 27703302467092376361605819.309m), // 21 + 8
-	    new TestResult(0, 415749070084.82104563841911907m), // 21 + 9
-	    new TestResult(2, -48466870443773121522480.251826m), // 21 + 10
-	    new TestResult(2, -545193277490530854.52627129019m), // 21 + 11
-	    new TestResult(0, 415752273940.53996586190224459m), // 21 + 12
-	    new TestResult(2, -400453059249619122032.55770206m), // 21 + 13
-	    new TestResult(2, 222851627785607466463990.3938m), // 21 + 14
-	    new TestResult(2, 14246043379204568965935275.361m), // 21 + 15
-	    new TestResult(0, 415751852816.47257936965400444m), // 21 + 16
-	    new TestResult(2, 24463704490573484.97755135521m), // 21 + 17
-	    new TestResult(2, -5323259153835970160423836.224m), // 21 + 18
-	    new TestResult(2, 102801066199806250476947108.97m), // 21 + 19
-	    new TestResult(0, 422833594700.15637117403846321m), // 21 + 20
-	    new TestResult(2, 831504547879.5540849131367408m), // 21 + 21
-	    new TestResult(2, -5973640215952.8592249105136758m), // 21 + 22
-	    new TestResult(2, 442762035016854.83668408963647m), // 21 + 23
-	    new TestResult(2, -512418028593384.11316591786927m), // 21 + 24
-	    new TestResult(2, 608940996443189643.92213220797m), // 21 + 25
-	    new TestResult(2, -42535053312904234692175.260745m), // 21 + 26
-	    new TestResult(2, -7808274522176200833546.1041886m), // 21 + 27
-	    new TestResult(2, 1037807626804273453082333411.5m), // 21 + 28
-	    new TestResult(0, 410755150973.32839003079680737m), // 21 + 29
-	    new TestResult(0, -6389392489892.6362673670820462m), // 22 + 0
-	    new TestResult(0, -6389392489891.6362673670820462m), // 22 + 1
-	    new TestResult(0, -6389392489893.6362673670820462m), // 22 + 2
-	    new TestResult(0, -6389392489890.6362673670820462m), // 22 + 3
-	    new TestResult(0, -6389392489882.6362673670820462m), // 22 + 4
-	    new TestResult(0, -6389392489892.5362673670820462m), // 22 + 5
-	    new TestResult(2, 79228162514264331204151460442m), // 22 + 6
-	    new TestResult(1, 0m), // 22 + 7
-	    new TestResult(2, 27703302467085571216841986.896m), // 22 + 8
-	    new TestResult(0, -6389395693747.5922641852312975m), // 22 + 9
-	    new TestResult(2, -48466870450578266286312.665135m), // 22 + 10
-	    new TestResult(2, -545200082635294686.93958111384m), // 22 + 11
-	    new TestResult(0, -6389392489891.873343961748172m), // 22 + 12
-	    new TestResult(2, -400453066054763885864.97101189m), // 22 + 13
-	    new TestResult(2, 222851627778802321700157.98049m), // 22 + 14
-	    new TestResult(2, 14246043379197763821171442.948m), // 22 + 15
-	    new TestResult(0, -6389392911015.9407304539964122m), // 22 + 16
-	    new TestResult(2, 24456899345809652.56424153156m), // 22 + 17
-	    new TestResult(2, -5323259153842775305187668.6373m), // 22 + 18
-	    new TestResult(2, 102801066199799445332183276.55m), // 22 + 19
-	    new TestResult(0, -6382311169132.2569386496119534m), // 22 + 20
-	    new TestResult(0, -5973640215952.8592249105136758m), // 22 + 21
-	    new TestResult(2, -12778784979785.272534734164092m), // 22 + 22
-	    new TestResult(2, 435956890253022.42337426598605m), // 22 + 23
-	    new TestResult(2, -519223173357216.52647574151969m), // 22 + 24
-	    new TestResult(2, 608934191298425811.50882238432m), // 22 + 25
-	    new TestResult(2, -42535053319709379456007.674054m), // 22 + 26
-	    new TestResult(2, -7808274528981345597378.5174985m), // 22 + 27
-	    new TestResult(2, 1037807626804266647937569579.1m), // 22 + 28
-	    new TestResult(0, -6394389612859.0849197928536092m), // 22 + 29
-	    new TestResult(0, 442346282742915.0596416330681m), // 23 + 0
-	    new TestResult(0, 442346282742916.0596416330681m), // 23 + 1
-	    new TestResult(0, 442346282742914.0596416330681m), // 23 + 2
-	    new TestResult(0, 442346282742917.0596416330681m), // 23 + 3
-	    new TestResult(0, 442346282742925.0596416330681m), // 23 + 4
-	    new TestResult(0, 442346282742915.1596416330681m), // 23 + 5
-	    new TestResult(1, 0m), // 23 + 6
-	    new TestResult(2, -79228162514263895247261207420m), // 23 + 7
-	    new TestResult(2, 27703302467534306892074794.592m), // 23 + 8
-	    new TestResult(0, 442346279539060.10364481491885m), // 23 + 9
-	    new TestResult(2, -48466870001842591053504.969226m), // 23 + 10
-	    new TestResult(2, -544751346960061879.24367211369m), // 23 + 11
-	    new TestResult(0, 442346282742915.82256503840197m), // 23 + 12
-	    new TestResult(2, -400452617319088653057.27510289m), // 23 + 13
-	    new TestResult(2, 222851628227537996932965.6764m), // 23 + 14
-	    new TestResult(2, 14246043379646499496404250.644m), // 23 + 15
-	    new TestResult(0, 442346282321791.75517854615373m), // 23 + 16
-	    new TestResult(2, 24905635021042460.26015053171m), // 23 + 17
-	    new TestResult(2, -5323259153394039629954860.9414m), // 23 + 18
-	    new TestResult(2, 102801066200248181007416084.25m), // 23 + 19
-	    new TestResult(0, 442353364063675.43897035053819m), // 23 + 20
-	    new TestResult(0, 442762035016854.83668408963647m), // 23 + 21
-	    new TestResult(0, 435956890253022.42337426598605m), // 23 + 22
-	    new TestResult(0, 884692565485830.1192832661362m), // 23 + 23
-	    new TestResult(0, -70487498124408.83056674136954m), // 23 + 24
-	    new TestResult(2, 609382926973658619.20473138447m), // 23 + 25
-	    new TestResult(2, -42535052870973704223199.978145m), // 23 + 26
-	    new TestResult(2, -7808274080245670364570.8215895m), // 23 + 27
-	    new TestResult(2, 1037807626804715383612802386.8m), // 23 + 28
-	    new TestResult(0, 442341285619948.61098920729654m), // 23 + 29
-	    new TestResult(0, -512833780867323.89020837443764m), // 24 + 0
-	    new TestResult(0, -512833780867322.89020837443764m), // 24 + 1
-	    new TestResult(0, -512833780867324.89020837443764m), // 24 + 2
-	    new TestResult(0, -512833780867321.89020837443764m), // 24 + 3
-	    new TestResult(0, -512833780867313.89020837443764m), // 24 + 4
-	    new TestResult(0, -512833780867323.79020837443764m), // 24 + 5
-	    new TestResult(2, 79228162514263824759763083011m), // 24 + 6
-	    new TestResult(1, 0m), // 24 + 7
-	    new TestResult(2, 27703302466579126828464555.642m), // 24 + 8
-	    new TestResult(0, -512833784071178.84620519258689m), // 24 + 9
-	    new TestResult(2, -48466870957022654663743.919076m), // 24 + 10
-	    new TestResult(2, -545706527023672118.1935221212m), // 24 + 11
-	    new TestResult(0, -512833780867323.12728496910377m), // 24 + 12
-	    new TestResult(2, -400453572499152263296.22495289m), // 24 + 13
-	    new TestResult(2, 222851627272357933322726.72655m), // 24 + 14
-	    new TestResult(2, 14246043378691319432794011.694m), // 24 + 15
-	    new TestResult(0, -512833781288447.19467146135201m), // 24 + 16
-	    new TestResult(2, 23950454957432221.310300524204m), // 24 + 17
-	    new TestResult(2, -5323259154349219693565099.8912m), // 24 + 18
-	    new TestResult(2, 102801066199293000943805845.3m), // 24 + 19
-	    new TestResult(0, -512826699546563.51087965696755m), // 24 + 20
-	    new TestResult(0, -512418028593384.11316591786927m), // 24 + 21
-	    new TestResult(0, -519223173357216.52647574151969m), // 24 + 22
-	    new TestResult(0, -70487498124408.83056674136954m), // 24 + 23
-	    new TestResult(2, -1025667561734647.7804167488753m), // 24 + 24
-	    new TestResult(2, 608427746910048380.25488137696m), // 24 + 25
-	    new TestResult(2, -42535053826153767833438.927995m), // 24 + 26
-	    new TestResult(2, -7808275035425733974809.7714395m), // 24 + 27
-	    new TestResult(2, 1037807626803760203549192147.8m), // 24 + 28
-	    new TestResult(0, -512838777990290.3388608002092m), // 24 + 29
-	    new TestResult(0, 608940580690915704.1450897514m), // 25 + 0
-	    new TestResult(0, 608940580690915705.1450897514m), // 25 + 1
-	    new TestResult(0, 608940580690915703.1450897514m), // 25 + 2
-	    new TestResult(0, 608940580690915706.1450897514m), // 25 + 3
-	    new TestResult(0, 608940580690915714.1450897514m), // 25 + 4
-	    new TestResult(0, 608940580690915704.2450897514m), // 25 + 5
-	    new TestResult(1, 0m), // 25 + 6
-	    new TestResult(2, -79228162513655397012853034631m), // 25 + 7
-	    new TestResult(2, 27703303076032541300247583.677m), // 25 + 8
-	    new TestResult(0, 608940580687711849.18909293325m), // 25 + 9
-	    new TestResult(2, -48466261503608182880715.883778m), // 25 + 10
-	    new TestResult(0, 63746887448110909.84177600464m), // 25 + 11
-	    new TestResult(0, 608940580690915704.90801315673m), // 25 + 12
-	    new TestResult(2, -399844119084680480268.18965477m), // 25 + 13
-	    new TestResult(2, 222852236725772405105754.76185m), // 25 + 14
-	    new TestResult(2, 14246043988144733904577039.729m), // 25 + 15
-	    new TestResult(0, 608940580690494580.84062666449m), // 25 + 16
-	    new TestResult(0, 633403869429215249.34559865004m), // 25 + 17
-	    new TestResult(2, -5323258544895805221782071.8559m), // 25 + 18
-	    new TestResult(2, 102801066808746415415588873.34m), // 25 + 19
-	    new TestResult(0, 608940587772236464.52441846887m), // 25 + 20
-	    new TestResult(0, 608940996443189643.92213220797m), // 25 + 21
-	    new TestResult(0, 608934191298425811.50882238432m), // 25 + 22
-	    new TestResult(0, 609382926973658619.20473138447m), // 25 + 23
-	    new TestResult(0, 608427746910048380.25488137696m), // 25 + 24
-	    new TestResult(0, 1217881161381831408.2901795028m), // 25 + 25
-	    new TestResult(2, -42534444372739296050410.892697m), // 25 + 26
-	    new TestResult(2, -7807665582011262191781.7361413m), // 25 + 27
-	    new TestResult(2, 1037807627413213618020975175.8m), // 25 + 28
-	    new TestResult(0, 608940575693792737.69643732563m), // 25 + 29
-	    new TestResult(0, -42535053313319986966115.037787m), // 26 + 0
-	    new TestResult(0, -42535053313319986966114.037787m), // 26 + 1
-	    new TestResult(0, -42535053313319986966116.037787m), // 26 + 2
-	    new TestResult(0, -42535053313319986966113.037787m), // 26 + 3
-	    new TestResult(0, -42535053313319986966105.037787m), // 26 + 4
-	    new TestResult(0, -42535053313319986966114.937787m), // 26 + 5
-	    new TestResult(2, 79228119979211024273556984220m), // 26 + 6
-	    new TestResult(1, 0m), // 26 + 7
-	    new TestResult(2, 27660767413778640622365764.494m), // 26 + 8
-	    new TestResult(0, -42535053313319990169969.993784m), // 26 + 9
-	    new TestResult(2, -91001923757508860762535.06666m), // 26 + 10
-	    new TestResult(0, -42535598507013229770909.341101m), // 26 + 11
-	    new TestResult(0, -42535053313319986966114.274864m), // 26 + 12
-	    new TestResult(0, -42935506372985358362087.372532m), // 26 + 13
-	    new TestResult(2, 180316574471871727223935.57897m), // 26 + 14
-	    new TestResult(2, 14203508325890833226695220.546m), // 26 + 15
-	    new TestResult(0, -42535053313319987387238.34225m), // 26 + 16
-	    new TestResult(0, -42535028850031248666569.837278m), // 26 + 17
-	    new TestResult(2, -5365794207149705899663891.0388m), // 26 + 18
-	    new TestResult(2, 102758531146492514737707054.15m), // 26 + 19
-	    new TestResult(0, -42535053313312905645354.658458m), // 26 + 20
-	    new TestResult(0, -42535053312904234692175.260745m), // 26 + 21
-	    new TestResult(0, -42535053319709379456007.674054m), // 26 + 22
-	    new TestResult(0, -42535052870973704223199.978145m), // 26 + 23
-	    new TestResult(0, -42535053826153767833438.927995m), // 26 + 24
-	    new TestResult(0, -42534444372739296050410.892697m), // 26 + 25
-	    new TestResult(2, -85070106626639973932230.07557m), // 26 + 26
-	    new TestResult(0, -50343327835911940073600.919018m), // 26 + 27
-	    new TestResult(2, 1037765091750959717343093356.7m), // 26 + 28
-	    new TestResult(0, -42535053313324984089081.486439m), // 26 + 29
-	    new TestResult(0, -7808274522591953107485.8812311m), // 27 + 0
-	    new TestResult(0, -7808274522591953107484.8812311m), // 27 + 1
-	    new TestResult(0, -7808274522591953107486.8812311m), // 27 + 2
-	    new TestResult(0, -7808274522591953107483.8812311m), // 27 + 3
-	    new TestResult(0, -7808274522591953107475.8812311m), // 27 + 4
-	    new TestResult(0, -7808274522591953107485.7812311m), // 27 + 5
-	    new TestResult(2, 79228154705989815001590842849m), // 27 + 6
-	    new TestResult(1, 0m), // 27 + 7
-	    new TestResult(2, 27695494192569368656224393.651m), // 27 + 8
-	    new TestResult(0, -7808274522591956311340.8372279m), // 27 + 9
-	    new TestResult(2, -56275144966780826903905.910099m), // 27 + 10
-	    new TestResult(0, -7808819716285195912280.1845448m), // 27 + 11
-	    new TestResult(0, -7808274522591953107485.1183077m), // 27 + 12
-	    new TestResult(2, -8208727582257324503458.215976m), // 27 + 13
-	    new TestResult(2, 215043353262599761082564.73553m), // 27 + 14
-	    new TestResult(2, 14238235104681561260553849.703m), // 27 + 15
-	    new TestResult(0, -7808274522591953528609.1856942m), // 27 + 16
-	    new TestResult(0, -7808250059303214807940.6807222m), // 27 + 17
-	    new TestResult(2, -5331067428358977865805261.8822m), // 27 + 18
-	    new TestResult(2, 102793257925283242771565683.31m), // 27 + 19
-	    new TestResult(0, -7808274522584871786725.5019024m), // 27 + 20
-	    new TestResult(0, -7808274522176200833546.1041886m), // 27 + 21
-	    new TestResult(0, -7808274528981345597378.5174985m), // 27 + 22
-	    new TestResult(0, -7808274080245670364570.8215895m), // 27 + 23
-	    new TestResult(0, -7808275035425733974809.7714395m), // 27 + 24
-	    new TestResult(0, -7807665582011262191781.7361413m), // 27 + 25
-	    new TestResult(2, -50343327835911940073600.919018m), // 27 + 26
-	    new TestResult(2, -15616549045183906214971.762462m), // 27 + 27
-	    new TestResult(2, 1037799818529750445376951985.8m), // 27 + 28
-	    new TestResult(0, -7808274522596950230452.3298835m), // 27 + 29
-	    new TestResult(0, 1037807626804273037330059471.7m), // 28 + 0
-	    new TestResult(0, 1037807626804273037330059472.7m), // 28 + 1
-	    new TestResult(0, 1037807626804273037330059470.7m), // 28 + 2
-	    new TestResult(0, 1037807626804273037330059473.7m), // 28 + 3
-	    new TestResult(0, 1037807626804273037330059481.7m), // 28 + 4
-	    new TestResult(0, 1037807626804273037330059471.8m), // 28 + 5
-	    new TestResult(1, 0m), // 28 + 6
-	    new TestResult(2, -78190354887460064556213890863m), // 28 + 7
-	    new TestResult(0, 1065510929271364997939391351.2m), // 28 + 8
-	    new TestResult(0, 1037807626804273037326855616.7m), // 28 + 9
-	    new TestResult(0, 1037759159933828848456263051.7m), // 28 + 10
-	    new TestResult(0, 1037807626259079344087254677.4m), // 28 + 11
-	    new TestResult(0, 1037807626804273037330059472.5m), // 28 + 12
-	    new TestResult(0, 1037807226351213371958663499.4m), // 28 + 13
-	    new TestResult(0, 1038030478432058229044249522.3m), // 28 + 14
-	    new TestResult(0, 1052053670183477190543720807.3m), // 28 + 15
-	    new TestResult(0, 1037807626804273037329638348.4m), // 28 + 16
-	    new TestResult(0, 1037807626828736326068359016.9m), // 28 + 17
-	    new TestResult(0, 1032484367650436651417361695.7m), // 28 + 18
-	    new TestResult(0, 1140608693004078872054732640.9m), // 28 + 19
-	    new TestResult(0, 1037807626804273044411380232.1m), // 28 + 20
-	    new TestResult(0, 1037807626804273453082333411.5m), // 28 + 21
-	    new TestResult(0, 1037807626804266647937569579.1m), // 28 + 22
-	    new TestResult(0, 1037807626804715383612802386.8m), // 28 + 23
-	    new TestResult(0, 1037807626803760203549192147.8m), // 28 + 24
-	    new TestResult(0, 1037807627413213618020975175.8m), // 28 + 25
-	    new TestResult(0, 1037765091750959717343093356.7m), // 28 + 26
-	    new TestResult(0, 1037799818529750445376951985.8m), // 28 + 27
-	    new TestResult(0, 2075615253608546074660118943.4m), // 28 + 28
-	    new TestResult(0, 1037807626804273032332936505.3m), // 28 + 29
-	    new TestResult(0, -4997122966.448652425771563042m), // 29 + 0
-	    new TestResult(0, -4997122965.448652425771563042m), // 29 + 1
-	    new TestResult(0, -4997122967.448652425771563042m), // 29 + 2
-	    new TestResult(0, -4997122964.448652425771563042m), // 29 + 3
-	    new TestResult(0, -4997122956.448652425771563042m), // 29 + 4
-	    new TestResult(0, -4997122966.348652425771563042m), // 29 + 5
-	    new TestResult(2, 79228162514264337588546827369m), // 29 + 6
-	    new TestResult(1, 0m), // 29 + 7
-	    new TestResult(2, 27703302467091955612208913.083m), // 29 + 8
-	    new TestResult(0, -5000326821.4046492439208143805m), // 29 + 9
-	    new TestResult(2, -48466870444193870919386.47752m), // 29 + 10
-	    new TestResult(2, -545193698239927760.75196617253m), // 29 + 11
-	    new TestResult(0, -4997122965.685729020437688861m), // 29 + 12
-	    new TestResult(2, -400453059670368518938.78339695m), // 29 + 13
-	    new TestResult(2, 222851627785186717067084.16811m), // 29 + 14
-	    new TestResult(2, 14246043379204148216538369.135m), // 29 + 15
-	    new TestResult(0, -4997544089.7531155126859290085m), // 29 + 16
-	    new TestResult(2, 24463283741176578.75185647287m), // 29 + 17
-	    new TestResult(2, -5323259153836390909820742.4497m), // 29 + 18
-	    new TestResult(2, 102801066199805829727550202.74m), // 29 + 19
-	    new TestResult(0, 2084197793.9306762916985297548m), // 29 + 20
-	    new TestResult(2, 410755150973.32839003079680737m), // 29 + 21
-	    new TestResult(2, -6394389612859.0849197928536092m), // 29 + 22
-	    new TestResult(2, 442341285619948.61098920729654m), // 29 + 23
-	    new TestResult(2, -512838777990290.3388608002092m), // 29 + 24
-	    new TestResult(2, 608940575693792737.69643732563m), // 29 + 25
-	    new TestResult(2, -42535053313324984089081.486439m), // 29 + 26
-	    new TestResult(2, -7808274522596950230452.3298835m), // 29 + 27
-	    new TestResult(2, 1037807626804273032332936505.3m), // 29 + 28
-	    new TestResult(0, -9994245932.897304851543126084m), // 29 + 29
-        };
-
-
-        // generated result list build2
-        TestResult[] trAuto_Mult_build2 = new TestResult[] {
-	    new TestResult(0, 0m), // 0 * 0
-	    new TestResult(0, 0m), // 0 * 1
-	    new TestResult(0, 0m), // 0 * 2
-	    new TestResult(0, 0m), // 0 * 3
-	    new TestResult(0, 0m), // 0 * 4
-	    new TestResult(0, 0m), // 0 * 5
-	    new TestResult(0, 0m), // 0 * 6
-	    new TestResult(0, 0m), // 0 * 7
-	    new TestResult(0, 0m), // 0 * 8
-	    new TestResult(0, 0m), // 0 * 9
-	    new TestResult(0, 0m), // 0 * 10
-	    new TestResult(0, 0m), // 0 * 11
-	    new TestResult(0, 0m), // 0 * 12
-	    new TestResult(0, 0m), // 0 * 13
-	    new TestResult(0, 0m), // 0 * 14
-	    new TestResult(0, 0m), // 0 * 15
-	    new TestResult(0, 0m), // 0 * 16
-	    new TestResult(0, 0m), // 0 * 17
-	    new TestResult(0, 0m), // 0 * 18
-	    new TestResult(0, 0m), // 0 * 19
-	    new TestResult(0, 0m), // 0 * 20
-	    new TestResult(0, 0m), // 0 * 21
-	    new TestResult(0, 0m), // 0 * 22
-	    new TestResult(0, 0m), // 0 * 23
-	    new TestResult(0, 0m), // 0 * 24
-	    new TestResult(0, 0m), // 0 * 25
-	    new TestResult(0, 0m), // 0 * 26
-	    new TestResult(0, 0m), // 0 * 27
-	    new TestResult(0, 0m), // 0 * 28
-	    new TestResult(0, 0m), // 0 * 29
-	    new TestResult(0, 0m), // 1 * 0
-	    new TestResult(0, 1m), // 1 * 1
-	    new TestResult(0, -1m), // 1 * 2
-	    new TestResult(0, 2m), // 1 * 3
-	    new TestResult(0, 10m), // 1 * 4
-	    new TestResult(0, 0.1m), // 1 * 5
-	    new TestResult(0, 79228162514264337593543950335m), // 1 * 6
-	    new TestResult(0, -79228162514264337593543950335m), // 1 * 7
-	    new TestResult(0, 27703302467091960609331879.532m), // 1 * 8
-	    new TestResult(0, -3203854.9559968181492513385018m), // 1 * 9
-	    new TestResult(0, -48466870444188873796420.028868m), // 1 * 10
-	    new TestResult(0, -545193693242804794.30331374676m), // 1 * 11
-	    new TestResult(0, 0.7629234053338741809892531431m), // 1 * 12
-	    new TestResult(0, -400453059665371395972.33474452m), // 1 * 13
-	    new TestResult(0, 222851627785191714190050.61676m), // 1 * 14
-	    new TestResult(0, 14246043379204153213661335.584m), // 1 * 15
-	    new TestResult(0, -421123.30446308691436596648186m), // 1 * 16
-	    new TestResult(0, 24463288738299545.200508898642m), // 1 * 17
-	    new TestResult(0, -5323259153836385912697776.001m), // 1 * 18
-	    new TestResult(0, 102801066199805834724673169.19m), // 1 * 19
-	    new TestResult(0, 7081320760.3793287174700927968m), // 1 * 20
-	    new TestResult(0, 415752273939.77704245656837041m), // 1 * 21
-	    new TestResult(0, -6389392489892.6362673670820462m), // 1 * 22
-	    new TestResult(0, 442346282742915.0596416330681m), // 1 * 23
-	    new TestResult(0, -512833780867323.89020837443764m), // 1 * 24
-	    new TestResult(0, 608940580690915704.1450897514m), // 1 * 25
-	    new TestResult(0, -42535053313319986966115.037787m), // 1 * 26
-	    new TestResult(0, -7808274522591953107485.8812311m), // 1 * 27
-	    new TestResult(0, 1037807626804273037330059471.7m), // 1 * 28
-	    new TestResult(0, -4997122966.448652425771563042m), // 1 * 29
-	    new TestResult(0, 0m), // 2 * 0
-	    new TestResult(0, -1m), // 2 * 1
-	    new TestResult(0, 1m), // 2 * 2
-	    new TestResult(0, -2m), // 2 * 3
-	    new TestResult(0, -10m), // 2 * 4
-	    new TestResult(0, -0.1m), // 2 * 5
-	    new TestResult(0, -79228162514264337593543950335m), // 2 * 6
-	    new TestResult(0, 79228162514264337593543950335m), // 2 * 7
-	    new TestResult(0, -27703302467091960609331879.532m), // 2 * 8
-	    new TestResult(0, 3203854.9559968181492513385018m), // 2 * 9
-	    new TestResult(0, 48466870444188873796420.028868m), // 2 * 10
-	    new TestResult(0, 545193693242804794.30331374676m), // 2 * 11
-	    new TestResult(0, -0.7629234053338741809892531431m), // 2 * 12
-	    new TestResult(0, 400453059665371395972.33474452m), // 2 * 13
-	    new TestResult(0, -222851627785191714190050.61676m), // 2 * 14
-	    new TestResult(0, -14246043379204153213661335.584m), // 2 * 15
-	    new TestResult(0, 421123.30446308691436596648186m), // 2 * 16
-	    new TestResult(0, -24463288738299545.200508898642m), // 2 * 17
-	    new TestResult(0, 5323259153836385912697776.001m), // 2 * 18
-	    new TestResult(0, -102801066199805834724673169.19m), // 2 * 19
-	    new TestResult(0, -7081320760.3793287174700927968m), // 2 * 20
-	    new TestResult(0, -415752273939.77704245656837041m), // 2 * 21
-	    new TestResult(0, 6389392489892.6362673670820462m), // 2 * 22
-	    new TestResult(0, -442346282742915.0596416330681m), // 2 * 23
-	    new TestResult(0, 512833780867323.89020837443764m), // 2 * 24
-	    new TestResult(0, -608940580690915704.1450897514m), // 2 * 25
-	    new TestResult(0, 42535053313319986966115.037787m), // 2 * 26
-	    new TestResult(0, 7808274522591953107485.8812311m), // 2 * 27
-	    new TestResult(0, -1037807626804273037330059471.7m), // 2 * 28
-	    new TestResult(0, 4997122966.448652425771563042m), // 2 * 29
-	    new TestResult(0, 0m), // 3 * 0
-	    new TestResult(0, 2m), // 3 * 1
-	    new TestResult(0, -2m), // 3 * 2
-	    new TestResult(0, 4m), // 3 * 3
-	    new TestResult(0, 20m), // 3 * 4
-	    new TestResult(0, 0.2m), // 3 * 5
-	    new TestResult(1, 0m), // 3 * 6
-	    new TestResult(1, 0m), // 3 * 7
-	    new TestResult(0, 55406604934183921218663759.064m), // 3 * 8
-	    new TestResult(0, -6407709.9119936362985026770036m), // 3 * 9
-	    new TestResult(2, -96933740888377747592840.05774m), // 3 * 10
-	    new TestResult(0, -1090387386485609588.6066274935m), // 3 * 11
-	    new TestResult(0, 1.5258468106677483619785062862m), // 3 * 12
-	    new TestResult(2, -800906119330742791944.669489m), // 3 * 13
-	    new TestResult(0, 445703255570383428380101.23352m), // 3 * 14
-	    new TestResult(0, 28492086758408306427322671.168m), // 3 * 15
-	    new TestResult(0, -842246.6089261738287319329637m), // 3 * 16
-	    new TestResult(0, 48926577476599090.401017797284m), // 3 * 17
-	    new TestResult(0, -10646518307672771825395552.002m), // 3 * 18
-	    new TestResult(0, 205602132399611669449346338.38m), // 3 * 19
-	    new TestResult(2, 14162641520.758657434940185594m), // 3 * 20
-	    new TestResult(0, 831504547879.5540849131367408m), // 3 * 21
-	    new TestResult(2, -12778784979785.272534734164092m), // 3 * 22
-	    new TestResult(0, 884692565485830.1192832661362m), // 3 * 23
-	    new TestResult(0, -1025667561734647.7804167488753m), // 3 * 24
-	    new TestResult(0, 1217881161381831408.2901795028m), // 3 * 25
-	    new TestResult(2, -85070106626639973932230.07557m), // 3 * 26
-	    new TestResult(0, -15616549045183906214971.762462m), // 3 * 27
-	    new TestResult(0, 2075615253608546074660118943.4m), // 3 * 28
-	    new TestResult(0, -9994245932.897304851543126084m), // 3 * 29
-	    new TestResult(0, 0m), // 4 * 0
-	    new TestResult(0, 10m), // 4 * 1
-	    new TestResult(0, -10m), // 4 * 2
-	    new TestResult(0, 20m), // 4 * 3
-	    new TestResult(0, 100m), // 4 * 4
-	    new TestResult(0, 1m), // 4 * 5
-	    new TestResult(1, 0m), // 4 * 6
-	    new TestResult(1, 0m), // 4 * 7
-	    new TestResult(0, 277033024670919606093318795.32m), // 4 * 8
-	    new TestResult(0, -32038549.559968181492513385018m), // 4 * 9
-	    new TestResult(0, -484668704441888737964200.28868m), // 4 * 10
-	    new TestResult(0, -5451936932428047943.0331374676m), // 4 * 11
-	    new TestResult(0, 7.629234053338741809892531431m), // 4 * 12
-	    new TestResult(0, -4004530596653713959723.3474452m), // 4 * 13
-	    new TestResult(0, 2228516277851917141900506.1676m), // 4 * 14
-	    new TestResult(0, 142460433792041532136613355.84m), // 4 * 15
-	    new TestResult(0, -4211233.0446308691436596648186m), // 4 * 16
-	    new TestResult(0, 244632887382995452.00508898642m), // 4 * 17
-	    new TestResult(0, -53232591538363859126977760.01m), // 4 * 18
-	    new TestResult(0, 1028010661998058347246731691.9m), // 4 * 19
-	    new TestResult(0, 70813207603.793287174700927968m), // 4 * 20
-	    new TestResult(0, 4157522739397.7704245656837041m), // 4 * 21
-	    new TestResult(0, -63893924898926.362673670820462m), // 4 * 22
-	    new TestResult(0, 4423462827429150.596416330681m), // 4 * 23
-	    new TestResult(0, -5128337808673238.9020837443764m), // 4 * 24
-	    new TestResult(0, 6089405806909157041.450897514m), // 4 * 25
-	    new TestResult(0, -425350533133199869661150.37787m), // 4 * 26
-	    new TestResult(0, -78082745225919531074858.812311m), // 4 * 27
-	    new TestResult(0, 10378076268042730373300594717m), // 4 * 28
-	    new TestResult(0, -49971229664.48652425771563042m), // 4 * 29
-	    new TestResult(0, 0m), // 5 * 0
-	    new TestResult(0, 0.1m), // 5 * 1
-	    new TestResult(0, -0.1m), // 5 * 2
-	    new TestResult(0, 0.2m), // 5 * 3
-	    new TestResult(0, 1m), // 5 * 4
-	    new TestResult(0, 0.01m), // 5 * 5
-	    new TestResult(0, 7922816251426433759354395033.5m), // 5 * 6
-	    new TestResult(0, -7922816251426433759354395033.5m), // 5 * 7
-	    new TestResult(0, 2770330246709196060933187.9532m), // 5 * 8
-	    new TestResult(0, -320385.49559968181492513385018m), // 5 * 9
-	    new TestResult(0, -4846687044418887379642.0028868m), // 5 * 10
-	    new TestResult(0, -54519369324280479.430331374676m), // 5 * 11
-	    new TestResult(0, 0.0762923405333874180989253143m), // 5 * 12
-	    new TestResult(0, -40045305966537139597.233474452m), // 5 * 13
-	    new TestResult(0, 22285162778519171419005.061676m), // 5 * 14
-	    new TestResult(0, 1424604337920415321366133.5584m), // 5 * 15
-	    new TestResult(0, -42112.330446308691436596648186m), // 5 * 16
-	    new TestResult(0, 2446328873829954.5200508898642m), // 5 * 17
-	    new TestResult(0, -532325915383638591269777.6001m), // 5 * 18
-	    new TestResult(0, 10280106619980583472467316.919m), // 5 * 19
-	    new TestResult(0, 708132076.03793287174700927968m), // 5 * 20
-	    new TestResult(0, 41575227393.977704245656837041m), // 5 * 21
-	    new TestResult(0, -638939248989.26362673670820462m), // 5 * 22
-	    new TestResult(0, 44234628274291.50596416330681m), // 5 * 23
-	    new TestResult(0, -51283378086732.389020837443764m), // 5 * 24
-	    new TestResult(0, 60894058069091570.41450897514m), // 5 * 25
-	    new TestResult(0, -4253505331331998696611.5037787m), // 5 * 26
-	    new TestResult(0, -780827452259195310748.58812311m), // 5 * 27
-	    new TestResult(0, 103780762680427303733005947.17m), // 5 * 28
-	    new TestResult(0, -499712296.6448652425771563042m), // 5 * 29
-	    new TestResult(0, 0m), // 6 * 0
-	    new TestResult(0, 79228162514264337593543950335m), // 6 * 1
-	    new TestResult(0, -79228162514264337593543950335m), // 6 * 2
-	    new TestResult(1, 0m), // 6 * 3
-	    new TestResult(1, 0m), // 6 * 4
-	    new TestResult(0, 7922816251426433759354395033.5m), // 6 * 5
-	    new TestResult(1, 0m), // 6 * 6
-	    new TestResult(1, 0m), // 6 * 7
-	    new TestResult(1, 0m), // 6 * 8
-	    new TestResult(1, 0m), // 6 * 9
-	    new TestResult(1, 0m), // 6 * 10
-	    new TestResult(1, 0m), // 6 * 11
-	    new TestResult(4, 60445019543728147377669509413m), // 6 * 12
-	    new TestResult(1, 0m), // 6 * 13
-	    new TestResult(1, 0m), // 6 * 14
-	    new TestResult(1, 0m), // 6 * 15
-	    new TestResult(1, 0m), // 6 * 16
-	    new TestResult(1, 0m), // 6 * 17
-	    new TestResult(1, 0m), // 6 * 18
-	    new TestResult(1, 0m), // 6 * 19
-	    new TestResult(1, 0m), // 6 * 20
-	    new TestResult(1, 0m), // 6 * 21
-	    new TestResult(1, 0m), // 6 * 22
-	    new TestResult(1, 0m), // 6 * 23
-	    new TestResult(1, 0m), // 6 * 24
-	    new TestResult(1, 0m), // 6 * 25
-	    new TestResult(1, 0m), // 6 * 26
-	    new TestResult(1, 0m), // 6 * 27
-	    new TestResult(1, 0m), // 6 * 28
-	    new TestResult(1, 0m), // 6 * 29
-	    new TestResult(0, 0m), // 7 * 0
-	    new TestResult(0, -79228162514264337593543950335m), // 7 * 1
-	    new TestResult(0, 79228162514264337593543950335m), // 7 * 2
-	    new TestResult(1, 0m), // 7 * 3
-	    new TestResult(1, 0m), // 7 * 4
-	    new TestResult(0, -7922816251426433759354395033.5m), // 7 * 5
-	    new TestResult(1, 0m), // 7 * 6
-	    new TestResult(1, 0m), // 7 * 7
-	    new TestResult(1, 0m), // 7 * 8
-	    new TestResult(1, 0m), // 7 * 9
-	    new TestResult(1, 0m), // 7 * 10
-	    new TestResult(1, 0m), // 7 * 11
-	    new TestResult(4, -60445019543728147377669509413m), // 7 * 12
-	    new TestResult(1, 0m), // 7 * 13
-	    new TestResult(1, 0m), // 7 * 14
-	    new TestResult(1, 0m), // 7 * 15
-	    new TestResult(1, 0m), // 7 * 16
-	    new TestResult(1, 0m), // 7 * 17
-	    new TestResult(1, 0m), // 7 * 18
-	    new TestResult(1, 0m), // 7 * 19
-	    new TestResult(1, 0m), // 7 * 20
-	    new TestResult(1, 0m), // 7 * 21
-	    new TestResult(1, 0m), // 7 * 22
-	    new TestResult(1, 0m), // 7 * 23
-	    new TestResult(1, 0m), // 7 * 24
-	    new TestResult(1, 0m), // 7 * 25
-	    new TestResult(1, 0m), // 7 * 26
-	    new TestResult(1, 0m), // 7 * 27
-	    new TestResult(1, 0m), // 7 * 28
-	    new TestResult(1, 0m), // 7 * 29
-	    new TestResult(0, 0m), // 8 * 0
-	    new TestResult(0, 27703302467091960609331879.532m), // 8 * 1
-	    new TestResult(0, -27703302467091960609331879.532m), // 8 * 2
-	    new TestResult(0, 55406604934183921218663759.064m), // 8 * 3
-	    new TestResult(0, 277033024670919606093318795.32m), // 8 * 4
-	    new TestResult(0, 2770330246709196060933187.9532m), // 8 * 5
-	    new TestResult(1, 0m), // 8 * 6
-	    new TestResult(1, 0m), // 8 * 7
-	    new TestResult(1, 0m), // 8 * 8
-	    new TestResult(1, 0m), // 8 * 9
-	    new TestResult(1, 0m), // 8 * 10
-	    new TestResult(1, 0m), // 8 * 11
-	    new TestResult(2, 21135497857188116458095236.68m), // 8 * 12
-	    new TestResult(1, 0m), // 8 * 13
-	    new TestResult(1, 0m), // 8 * 14
-	    new TestResult(1, 0m), // 8 * 15
-	    new TestResult(1, 0m), // 8 * 16
-	    new TestResult(1, 0m), // 8 * 17
-	    new TestResult(1, 0m), // 8 * 18
-	    new TestResult(1, 0m), // 8 * 19
-	    new TestResult(1, 0m), // 8 * 20
-	    new TestResult(1, 0m), // 8 * 21
-	    new TestResult(1, 0m), // 8 * 22
-	    new TestResult(1, 0m), // 8 * 23
-	    new TestResult(1, 0m), // 8 * 24
-	    new TestResult(1, 0m), // 8 * 25
-	    new TestResult(1, 0m), // 8 * 26
-	    new TestResult(1, 0m), // 8 * 27
-	    new TestResult(1, 0m), // 8 * 28
-	    new TestResult(1, 0m), // 8 * 29
-	    new TestResult(0, 0m), // 9 * 0
-	    new TestResult(0, -3203854.9559968181492513385018m), // 9 * 1
-	    new TestResult(0, 3203854.9559968181492513385018m), // 9 * 2
-	    new TestResult(0, -6407709.9119936362985026770036m), // 9 * 3
-	    new TestResult(0, -32038549.559968181492513385018m), // 9 * 4
-	    new TestResult(0, -320385.49559968181492513385018m), // 9 * 5
-	    new TestResult(1, 0m), // 9 * 6
-	    new TestResult(1, 0m), // 9 * 7
-	    new TestResult(1, 0m), // 9 * 8
-	    new TestResult(2, 10264686579065.373559419307221m), // 9 * 9
-	    new TestResult(1, 0m), // 9 * 10
-	    new TestResult(2, 1746721516074169126608222.1692m), // 9 * 11
-	    new TestResult(2, -2444295.933224902121034426698m), // 9 * 12
-	    new TestResult(2, 1282993519852989666698903060.5m), // 9 * 13
-	    new TestResult(1, 0m), // 9 * 14
-	    new TestResult(1, 0m), // 9 * 15
-	    new TestResult(0, 1349217986089.8179781485646335m), // 9 * 16
-	    new TestResult(0, -78376828864182146369609.767831m), // 9 * 17
-	    new TestResult(1, 0m), // 9 * 18
-	    new TestResult(1, 0m), // 9 * 19
-	    new TestResult(0, -22687524613144469.045656755412m), // 9 * 20
-	    new TestResult(0, -1332009983328901461.3254059884m), // 9 * 21
-	    new TestResult(0, 20470686794551372519.831909846m), // 9 * 22
-	    new TestResult(0, -1417213330232658207868.9685141m), // 9 * 23
-	    new TestResult(0, 1643045050434361863551.7087135m), // 9 * 24
-	    new TestResult(0, -1950957297354170624860913.7855m), // 9 * 25
-	    new TestResult(1, 0m), // 9 * 26
-	    new TestResult(0, 25016579026989918165002777574m), // 9 * 27
-	    new TestResult(1, 0m), // 9 * 28
-	    new TestResult(2, 16010057181782036.694377696165m), // 9 * 29
-	    new TestResult(0, 0m), // 10 * 0
-	    new TestResult(0, -48466870444188873796420.028868m), // 10 * 1
-	    new TestResult(0, 48466870444188873796420.028868m), // 10 * 2
-	    new TestResult(2, -96933740888377747592840.05774m), // 10 * 3
-	    new TestResult(0, -484668704441888737964200.28868m), // 10 * 4
-	    new TestResult(0, -4846687044418887379642.0028868m), // 10 * 5
-	    new TestResult(1, 0m), // 10 * 6
-	    new TestResult(1, 0m), // 10 * 7
-	    new TestResult(1, 0m), // 10 * 8
-	    new TestResult(1, 0m), // 10 * 9
-	    new TestResult(1, 0m), // 10 * 10
-	    new TestResult(1, 0m), // 10 * 11
-	    new TestResult(0, -36976509845156274734545.845161m), // 10 * 12
-	    new TestResult(1, 0m), // 10 * 13
-	    new TestResult(1, 0m), // 10 * 14
-	    new TestResult(1, 0m), // 10 * 15
-	    new TestResult(2, 20410528638441139616161910791m), // 10 * 16
-	    new TestResult(1, 0m), // 10 * 17
-	    new TestResult(1, 0m), // 10 * 18
-	    new TestResult(1, 0m), // 10 * 19
-	    new TestResult(1, 0m), // 10 * 20
-	    new TestResult(1, 0m), // 10 * 21
-	    new TestResult(1, 0m), // 10 * 22
-	    new TestResult(1, 0m), // 10 * 23
-	    new TestResult(1, 0m), // 10 * 24
-	    new TestResult(1, 0m), // 10 * 25
-	    new TestResult(1, 0m), // 10 * 26
-	    new TestResult(1, 0m), // 10 * 27
-	    new TestResult(1, 0m), // 10 * 28
-	    new TestResult(1, 0m), // 10 * 29
-	    new TestResult(0, 0m), // 11 * 0
-	    new TestResult(0, -545193693242804794.30331374676m), // 11 * 1
-	    new TestResult(0, 545193693242804794.30331374676m), // 11 * 2
-	    new TestResult(2, -1090387386485609588.6066274935m), // 11 * 3
-	    new TestResult(0, -5451936932428047943.0331374676m), // 11 * 4
-	    new TestResult(0, -54519369324280479.430331374676m), // 11 * 5
-	    new TestResult(1, 0m), // 11 * 6
-	    new TestResult(1, 0m), // 11 * 7
-	    new TestResult(1, 0m), // 11 * 8
-	    new TestResult(2, 1746721516074169126608222.1692m), // 11 * 9
-	    new TestResult(1, 0m), // 11 * 10
-	    new TestResult(1, 0m), // 11 * 11
-	    new TestResult(0, -415941029015352223.2321562927m), // 11 * 12
-	    new TestResult(1, 0m), // 11 * 13
-	    new TestResult(1, 0m), // 11 * 14
-	    new TestResult(1, 0m), // 11 * 15
-	    new TestResult(0, 229593769670844494339647.60593m), // 11 * 16
-	    new TestResult(1, 0m), // 11 * 17
-	    new TestResult(1, 0m), // 11 * 18
-	    new TestResult(1, 0m), // 11 * 19
-	    new TestResult(0, -3860691418388152934958161711.9m), // 11 * 20
-	    new TestResult(1, 0m), // 11 * 21
-	    new TestResult(1, 0m), // 11 * 22
-	    new TestResult(1, 0m), // 11 * 23
-	    new TestResult(1, 0m), // 11 * 24
-	    new TestResult(1, 0m), // 11 * 25
-	    new TestResult(1, 0m), // 11 * 26
-	    new TestResult(1, 0m), // 11 * 27
-	    new TestResult(1, 0m), // 11 * 28
-	    new TestResult(2, 2724399925666581324856736883m), // 11 * 29
-	    new TestResult(0, 0m), // 12 * 0
-	    new TestResult(0, 0.7629234053338741809892531431m), // 12 * 1
-	    new TestResult(0, -0.7629234053338741809892531431m), // 12 * 2
-	    new TestResult(0, 1.5258468106677483619785062862m), // 12 * 3
-	    new TestResult(0, 7.629234053338741809892531431m), // 12 * 4
-	    new TestResult(2, 0.0762923405333874180989253143m), // 12 * 5
-	    new TestResult(0, 60445019543728147377669509413m), // 12 * 6
-	    new TestResult(0, -60445019543728147377669509413m), // 12 * 7
-	    new TestResult(0, 21135497857188116458095236.68m), // 12 * 8
-	    new TestResult(0, -2444295.933224902121034426698m), // 12 * 9
-	    new TestResult(0, -36976509845156274734545.845161m), // 12 * 10
-	    new TestResult(0, -415941029015352223.2321562927m), // 12 * 11
-	    new TestResult(0, 0.5820521224062348791152865214m), // 12 * 12
-	    new TestResult(0, -305515011956274243325.23330625m), // 12 * 13
-	    new TestResult(0, 170018722754075475876563.00661m), // 12 * 14
-	    new TestResult(0, 10868639927396524825477357.557m), // 12 * 15
-	    new TestResult(0, -321284.82550643216389212760083m), // 12 * 16
-	    new TestResult(0, 18663615549889303.426127037208m), // 12 * 17
-	    new TestResult(0, -4061239001119573143590088.0528m), // 12 * 18
-	    new TestResult(0, 78429339497108899549297058.831m), // 12 * 19
-	    new TestResult(0, 5402505348.7700567259404098662m), // 12 * 20
-	    new TestResult(0, 317187140609.43641612785737895m), // 12 * 21
-	    new TestResult(0, -4874617076403.5713301079734445m), // 12 * 22
-	    new TestResult(0, 337476332367005.49979200414696m), // 12 * 23
-	    new TestResult(0, -391252894469544.55412631906773m), // 12 * 24
-	    new TestResult(0, 464575021466700199.22364418475m), // 12 * 25
-	    new TestResult(0, -32450987719855972399063.033158m), // 12 * 26
-	    new TestResult(0, -5957115388557583551533.0994303m), // 12 * 27
-	    new TestResult(0, 791767728722982425613218218.59m), // 12 * 28
-	    new TestResult(0, -3812422070.43511700405678157m), // 12 * 29
-	    new TestResult(0, 0m), // 13 * 0
-	    new TestResult(0, -400453059665371395972.33474452m), // 13 * 1
-	    new TestResult(0, 400453059665371395972.33474452m), // 13 * 2
-	    new TestResult(2, -800906119330742791944.669489m), // 13 * 3
-	    new TestResult(0, -4004530596653713959723.3474452m), // 13 * 4
-	    new TestResult(0, -40045305966537139597.233474452m), // 13 * 5
-	    new TestResult(1, 0m), // 13 * 6
-	    new TestResult(1, 0m), // 13 * 7
-	    new TestResult(1, 0m), // 13 * 8
-	    new TestResult(2, 1282993519852989666698903060.5m), // 13 * 9
-	    new TestResult(1, 0m), // 13 * 10
-	    new TestResult(1, 0m), // 13 * 11
-	    new TestResult(0, -305515011956274243325.23330625m), // 13 * 12
-	    new TestResult(1, 0m), // 13 * 13
-	    new TestResult(1, 0m), // 13 * 14
-	    new TestResult(1, 0m), // 13 * 15
-	    new TestResult(2, 168640115768634908407809010.03m), // 13 * 16
-	    new TestResult(1, 0m), // 13 * 17
-	    new TestResult(1, 0m), // 13 * 18
-	    new TestResult(1, 0m), // 13 * 19
-	    new TestResult(1, 0m), // 13 * 20
-	    new TestResult(1, 0m), // 13 * 21
-	    new TestResult(1, 0m), // 13 * 22
-	    new TestResult(1, 0m), // 13 * 23
-	    new TestResult(1, 0m), // 13 * 24
-	    new TestResult(1, 0m), // 13 * 25
-	    new TestResult(1, 0m), // 13 * 26
-	    new TestResult(1, 0m), // 13 * 27
-	    new TestResult(1, 0m), // 13 * 28
-	    new TestResult(1, 0m), // 13 * 29
-	    new TestResult(0, 0m), // 14 * 0
-	    new TestResult(0, 222851627785191714190050.61676m), // 14 * 1
-	    new TestResult(0, -222851627785191714190050.61676m), // 14 * 2
-	    new TestResult(0, 445703255570383428380101.23352m), // 14 * 3
-	    new TestResult(0, 2228516277851917141900506.1676m), // 14 * 4
-	    new TestResult(0, 22285162778519171419005.061676m), // 14 * 5
-	    new TestResult(1, 0m), // 14 * 6
-	    new TestResult(1, 0m), // 14 * 7
-	    new TestResult(1, 0m), // 14 * 8
-	    new TestResult(1, 0m), // 14 * 9
-	    new TestResult(1, 0m), // 14 * 10
-	    new TestResult(1, 0m), // 14 * 11
-	    new TestResult(0, 170018722754075475876563.00661m), // 14 * 12
-	    new TestResult(1, 0m), // 14 * 13
-	    new TestResult(1, 0m), // 14 * 14
-	    new TestResult(1, 0m), // 14 * 15
-	    new TestResult(1, 0m), // 14 * 16
-	    new TestResult(1, 0m), // 14 * 17
-	    new TestResult(1, 0m), // 14 * 18
-	    new TestResult(1, 0m), // 14 * 19
-	    new TestResult(1, 0m), // 14 * 20
-	    new TestResult(1, 0m), // 14 * 21
-	    new TestResult(1, 0m), // 14 * 22
-	    new TestResult(1, 0m), // 14 * 23
-	    new TestResult(1, 0m), // 14 * 24
-	    new TestResult(1, 0m), // 14 * 25
-	    new TestResult(1, 0m), // 14 * 26
-	    new TestResult(1, 0m), // 14 * 27
-	    new TestResult(1, 0m), // 14 * 28
-	    new TestResult(1, 0m), // 14 * 29
-	    new TestResult(0, 0m), // 15 * 0
-	    new TestResult(0, 14246043379204153213661335.584m), // 15 * 1
-	    new TestResult(0, -14246043379204153213661335.584m), // 15 * 2
-	    new TestResult(0, 28492086758408306427322671.168m), // 15 * 3
-	    new TestResult(0, 142460433792041532136613355.84m), // 15 * 4
-	    new TestResult(0, 1424604337920415321366133.5584m), // 15 * 5
-	    new TestResult(1, 0m), // 15 * 6
-	    new TestResult(1, 0m), // 15 * 7
-	    new TestResult(1, 0m), // 15 * 8
-	    new TestResult(1, 0m), // 15 * 9
-	    new TestResult(1, 0m), // 15 * 10
-	    new TestResult(1, 0m), // 15 * 11
-	    new TestResult(0, 10868639927396524825477357.557m), // 15 * 12
-	    new TestResult(1, 0m), // 15 * 13
-	    new TestResult(1, 0m), // 15 * 14
-	    new TestResult(1, 0m), // 15 * 15
-	    new TestResult(1, 0m), // 15 * 16
-	    new TestResult(1, 0m), // 15 * 17
-	    new TestResult(1, 0m), // 15 * 18
-	    new TestResult(1, 0m), // 15 * 19
-	    new TestResult(1, 0m), // 15 * 20
-	    new TestResult(1, 0m), // 15 * 21
-	    new TestResult(1, 0m), // 15 * 22
-	    new TestResult(1, 0m), // 15 * 23
-	    new TestResult(1, 0m), // 15 * 24
-	    new TestResult(1, 0m), // 15 * 25
-	    new TestResult(1, 0m), // 15 * 26
-	    new TestResult(1, 0m), // 15 * 27
-	    new TestResult(1, 0m), // 15 * 28
-	    new TestResult(1, 0m), // 15 * 29
-	    new TestResult(0, 0m), // 16 * 0
-	    new TestResult(0, -421123.30446308691436596648186m), // 16 * 1
-	    new TestResult(0, 421123.30446308691436596648186m), // 16 * 2
-	    new TestResult(2, -842246.6089261738287319329637m), // 16 * 3
-	    new TestResult(0, -4211233.0446308691436596648186m), // 16 * 4
-	    new TestResult(0, -42112.330446308691436596648186m), // 16 * 5
-	    new TestResult(1, 0m), // 16 * 6
-	    new TestResult(1, 0m), // 16 * 7
-	    new TestResult(1, 0m), // 16 * 8
-	    new TestResult(0, 1349217986089.8179781485646335m), // 16 * 9
-	    new TestResult(2, 20410528638441139616161910791m), // 16 * 10
-	    new TestResult(0, 229593769670844494339647.60593m), // 16 * 11
-	    new TestResult(0, -321284.82550643216389212760083m), // 16 * 12
-	    new TestResult(2, 168640115768634908407809010.03m), // 16 * 13
-	    new TestResult(1, 0m), // 16 * 14
-	    new TestResult(1, 0m), // 16 * 15
-	    new TestResult(2, 177344837561.90979904837123025m), // 16 * 16
-	    new TestResult(2, -10302060991507324713598.483586m), // 16 * 17
-	    new TestResult(1, 0m), // 16 * 18
-	    new TestResult(1, 0m), // 16 * 19
-	    new TestResult(2, -2982109198574002.1833628108505m), // 16 * 20
-	    new TestResult(2, -175082971439561442.82206371811m), // 16 * 21
-	    new TestResult(2, 2690722078855217643.0013135833m), // 16 * 22
-	    new TestResult(2, -186282328305659347664.31347679m), // 16 * 23
-	    new TestResult(2, 215966256439146035447.16512997m), // 16 * 24
-	    new TestResult(0, -256439069562229438659442.67473m), // 16 * 25
-	    new TestResult(2, 17912502206818886711664532432m), // 16 * 26
-	    new TestResult(0, 3288246369108855691627019039.6m), // 16 * 27
-	    new TestResult(1, 0m), // 16 * 28
-	    new TestResult(2, 2104404936439239.9111285468803m), // 16 * 29
-	    new TestResult(0, 0m), // 17 * 0
-	    new TestResult(0, 24463288738299545.200508898642m), // 17 * 1
-	    new TestResult(0, -24463288738299545.200508898642m), // 17 * 2
-	    new TestResult(0, 48926577476599090.401017797284m), // 17 * 3
-	    new TestResult(0, 244632887382995452.00508898642m), // 17 * 4
-	    new TestResult(0, 2446328873829954.5200508898642m), // 17 * 5
-	    new TestResult(1, 0m), // 17 * 6
-	    new TestResult(1, 0m), // 17 * 7
-	    new TestResult(1, 0m), // 17 * 8
-	    new TestResult(0, -78376828864182146369609.767831m), // 17 * 9
-	    new TestResult(1, 0m), // 17 * 10
-	    new TestResult(1, 0m), // 17 * 11
-	    new TestResult(0, 18663615549889303.426127037208m), // 17 * 12
-	    new TestResult(1, 0m), // 17 * 13
-	    new TestResult(1, 0m), // 17 * 14
-	    new TestResult(1, 0m), // 17 * 15
-	    new TestResult(2, -10302060991507324713598.483586m), // 17 * 16
-	    new TestResult(1, 0m), // 17 * 17
-	    new TestResult(1, 0m), // 17 * 18
-	    new TestResult(1, 0m), // 17 * 19
-	    new TestResult(0, 173232394409674404469121757.58m), // 17 * 20
-	    new TestResult(2, 10170667920993375211218037940m), // 17 * 21
-	    new TestResult(1, 0m), // 17 * 22
-	    new TestResult(1, 0m), // 17 * 23
-	    new TestResult(1, 0m), // 17 * 24
-	    new TestResult(1, 0m), // 17 * 25
-	    new TestResult(1, 0m), // 17 * 26
-	    new TestResult(1, 0m), // 17 * 27
-	    new TestResult(1, 0m), // 17 * 28
-	    new TestResult(0, -122246061989021334943606343.1m), // 17 * 29
-	    new TestResult(0, 0m), // 18 * 0
-	    new TestResult(0, -5323259153836385912697776.001m), // 18 * 1
-	    new TestResult(0, 5323259153836385912697776.001m), // 18 * 2
-	    new TestResult(0, -10646518307672771825395552.002m), // 18 * 3
-	    new TestResult(0, -53232591538363859126977760.01m), // 18 * 4
-	    new TestResult(0, -532325915383638591269777.6001m), // 18 * 5
-	    new TestResult(1, 0m), // 18 * 6
-	    new TestResult(1, 0m), // 18 * 7
-	    new TestResult(1, 0m), // 18 * 8
-	    new TestResult(1, 0m), // 18 * 9
-	    new TestResult(1, 0m), // 18 * 10
-	    new TestResult(1, 0m), // 18 * 11
-	    new TestResult(2, -4061239001119573143590088.0528m), // 18 * 12
-	    new TestResult(1, 0m), // 18 * 13
-	    new TestResult(1, 0m), // 18 * 14
-	    new TestResult(1, 0m), // 18 * 15
-	    new TestResult(1, 0m), // 18 * 16
-	    new TestResult(1, 0m), // 18 * 17
-	    new TestResult(1, 0m), // 18 * 18
-	    new TestResult(1, 0m), // 18 * 19
-	    new TestResult(1, 0m), // 18 * 20
-	    new TestResult(1, 0m), // 18 * 21
-	    new TestResult(1, 0m), // 18 * 22
-	    new TestResult(1, 0m), // 18 * 23
-	    new TestResult(1, 0m), // 18 * 24
-	    new TestResult(1, 0m), // 18 * 25
-	    new TestResult(1, 0m), // 18 * 26
-	    new TestResult(1, 0m), // 18 * 27
-	    new TestResult(1, 0m), // 18 * 28
-	    new TestResult(1, 0m), // 18 * 29
-	    new TestResult(0, 0m), // 19 * 0
-	    new TestResult(0, 102801066199805834724673169.19m), // 19 * 1
-	    new TestResult(0, -102801066199805834724673169.19m), // 19 * 2
-	    new TestResult(0, 205602132399611669449346338.38m), // 19 * 3
-	    new TestResult(0, 1028010661998058347246731691.9m), // 19 * 4
-	    new TestResult(0, 10280106619980583472467316.919m), // 19 * 5
-	    new TestResult(1, 0m), // 19 * 6
-	    new TestResult(1, 0m), // 19 * 7
-	    new TestResult(1, 0m), // 19 * 8
-	    new TestResult(1, 0m), // 19 * 9
-	    new TestResult(1, 0m), // 19 * 10
-	    new TestResult(1, 0m), // 19 * 11
-	    new TestResult(0, 78429339497108899549297058.831m), // 19 * 12
-	    new TestResult(1, 0m), // 19 * 13
-	    new TestResult(1, 0m), // 19 * 14
-	    new TestResult(1, 0m), // 19 * 15
-	    new TestResult(1, 0m), // 19 * 16
-	    new TestResult(1, 0m), // 19 * 17
-	    new TestResult(1, 0m), // 19 * 18
-	    new TestResult(1, 0m), // 19 * 19
-	    new TestResult(1, 0m), // 19 * 20
-	    new TestResult(1, 0m), // 19 * 21
-	    new TestResult(1, 0m), // 19 * 22
-	    new TestResult(1, 0m), // 19 * 23
-	    new TestResult(1, 0m), // 19 * 24
-	    new TestResult(1, 0m), // 19 * 25
-	    new TestResult(1, 0m), // 19 * 26
-	    new TestResult(1, 0m), // 19 * 27
-	    new TestResult(1, 0m), // 19 * 28
-	    new TestResult(1, 0m), // 19 * 29
-	    new TestResult(0, 0m), // 20 * 0
-	    new TestResult(0, 7081320760.3793287174700927968m), // 20 * 1
-	    new TestResult(0, -7081320760.3793287174700927968m), // 20 * 2
-	    new TestResult(2, 14162641520.758657434940185594m), // 20 * 3
-	    new TestResult(0, 70813207603.793287174700927968m), // 20 * 4
-	    new TestResult(0, 708132076.03793287174700927968m), // 20 * 5
-	    new TestResult(1, 0m), // 20 * 6
-	    new TestResult(1, 0m), // 20 * 7
-	    new TestResult(1, 0m), // 20 * 8
-	    new TestResult(0, -22687524613144469.045656755412m), // 20 * 9
-	    new TestResult(1, 0m), // 20 * 10
-	    new TestResult(0, -3860691418388152934958161711.9m), // 20 * 11
-	    new TestResult(0, 5402505348.7700567259404098662m), // 20 * 12
-	    new TestResult(1, 0m), // 20 * 13
-	    new TestResult(1, 0m), // 20 * 14
-	    new TestResult(1, 0m), // 20 * 15
-	    new TestResult(2, -2982109198574002.1833628108505m), // 20 * 16
-	    new TestResult(2, 173232394409674404469121757.58m), // 20 * 17
-	    new TestResult(1, 0m), // 20 * 18
-	    new TestResult(1, 0m), // 20 * 19
-	    new TestResult(0, 50145103711379274243.914175878m), // 20 * 20
-	    new TestResult(2, 2944075208624656937377.9493098m), // 20 * 21
-	    new TestResult(0, -45245337684888495429839.445203m), // 20 * 22
-	    new TestResult(2, 3132395915264028802867467.4171m), // 20 * 23
-	    new TestResult(2, -3631540499079604049748263.216m), // 20 * 24
-	    new TestResult(0, 4312103575884025168661620716.9m), // 20 * 25
-	    new TestResult(1, 0m), // 20 * 26
-	    new TestResult(1, 0m), // 20 * 27
-	    new TestResult(1, 0m), // 20 * 28
-	    new TestResult(2, -35386230604481178142.543841269m), // 20 * 29
-	    new TestResult(0, 0m), // 21 * 0
-	    new TestResult(0, 415752273939.77704245656837041m), // 21 * 1
-	    new TestResult(0, -415752273939.77704245656837041m), // 21 * 2
-	    new TestResult(2, 831504547879.5540849131367408m), // 21 * 3
-	    new TestResult(0, 4157522739397.7704245656837041m), // 21 * 4
-	    new TestResult(0, 41575227393.977704245656837041m), // 21 * 5
-	    new TestResult(1, 0m), // 21 * 6
-	    new TestResult(1, 0m), // 21 * 7
-	    new TestResult(1, 0m), // 21 * 8
-	    new TestResult(2, -1332009983328901461.3254059884m), // 21 * 9
-	    new TestResult(1, 0m), // 21 * 10
-	    new TestResult(1, 0m), // 21 * 11
-	    new TestResult(0, 317187140609.43641612785737895m), // 21 * 12
-	    new TestResult(1, 0m), // 21 * 13
-	    new TestResult(1, 0m), // 21 * 14
-	    new TestResult(1, 0m), // 21 * 15
-	    new TestResult(2, -175082971439561442.82206371811m), // 21 * 16
-	    new TestResult(2, 10170667920993375211218037940m), // 21 * 17
-	    new TestResult(1, 0m), // 21 * 18
-	    new TestResult(1, 0m), // 21 * 19
-	    new TestResult(2, 2944075208624656937377.9493098m), // 21 * 20
-	    new TestResult(2, 172849953286095412912252.49708m), // 21 * 21
-	    new TestResult(2, -2656404456766597431365611.212m), // 21 * 22
-	    new TestResult(0, 183906472919174492029733196.17m), // 21 * 23
-	    new TestResult(0, -213211810548723232636647639.7m), // 21 * 24
-	    new TestResult(1, 0m), // 21 * 25
-	    new TestResult(1, 0m), // 21 * 26
-	    new TestResult(1, 0m), // 21 * 27
-	    new TestResult(1, 0m), // 21 * 28
-	    new TestResult(0, -2077565236457711426002.3992246m), // 21 * 29
-	    new TestResult(0, 0m), // 22 * 0
-	    new TestResult(0, -6389392489892.6362673670820462m), // 22 * 1
-	    new TestResult(0, 6389392489892.6362673670820462m), // 22 * 2
-	    new TestResult(2, -12778784979785.272534734164092m), // 22 * 3
-	    new TestResult(0, -63893924898926.362673670820462m), // 22 * 4
-	    new TestResult(0, -638939248989.26362673670820462m), // 22 * 5
-	    new TestResult(1, 0m), // 22 * 6
-	    new TestResult(1, 0m), // 22 * 7
-	    new TestResult(1, 0m), // 22 * 8
-	    new TestResult(2, 20470686794551372519.831909846m), // 22 * 9
-	    new TestResult(1, 0m), // 22 * 10
-	    new TestResult(1, 0m), // 22 * 11
-	    new TestResult(0, -4874617076403.5713301079734445m), // 22 * 12
-	    new TestResult(1, 0m), // 22 * 13
-	    new TestResult(1, 0m), // 22 * 14
-	    new TestResult(1, 0m), // 22 * 15
-	    new TestResult(2, 2690722078855217643.0013135833m), // 22 * 16
-	    new TestResult(1, 0m), // 22 * 17
-	    new TestResult(1, 0m), // 22 * 18
-	    new TestResult(1, 0m), // 22 * 19
-	    new TestResult(0, -45245337684888495429839.445203m), // 22 * 20
-	    new TestResult(2, -2656404456766597431365611.212m), // 22 * 21
-	    new TestResult(2, 40824336389896422046045259.169m), // 22 * 22
-	    new TestResult(2, -2826324016889506134750576955.1m), // 22 * 23
-	    new TestResult(2, 3276696308036925201560804370m), // 22 * 24
-	    new TestResult(1, 0m), // 22 * 25
-	    new TestResult(1, 0m), // 22 * 26
-	    new TestResult(1, 0m), // 22 * 27
-	    new TestResult(1, 0m), // 22 * 28
-	    new TestResult(2, 31928579952897032005741.500403m), // 22 * 29
-	    new TestResult(0, 0m), // 23 * 0
-	    new TestResult(0, 442346282742915.0596416330681m), // 23 * 1
-	    new TestResult(0, -442346282742915.0596416330681m), // 23 * 2
-	    new TestResult(0, 884692565485830.1192832661362m), // 23 * 3
-	    new TestResult(0, 4423462827429150.596416330681m), // 23 * 4
-	    new TestResult(0, 44234628274291.50596416330681m), // 23 * 5
-	    new TestResult(1, 0m), // 23 * 6
-	    new TestResult(1, 0m), // 23 * 7
-	    new TestResult(1, 0m), // 23 * 8
-	    new TestResult(2, -1417213330232658207868.9685141m), // 23 * 9
-	    new TestResult(1, 0m), // 23 * 10
-	    new TestResult(1, 0m), // 23 * 11
-	    new TestResult(2, 337476332367005.49979200414696m), // 23 * 12
-	    new TestResult(1, 0m), // 23 * 13
-	    new TestResult(1, 0m), // 23 * 14
-	    new TestResult(1, 0m), // 23 * 15
-	    new TestResult(2, -186282328305659347664.31347679m), // 23 * 16
-	    new TestResult(1, 0m), // 23 * 17
-	    new TestResult(1, 0m), // 23 * 18
-	    new TestResult(1, 0m), // 23 * 19
-	    new TestResult(2, 3132395915264028802867467.4171m), // 23 * 20
-	    new TestResult(0, 183906472919174492029733196.17m), // 23 * 21
-	    new TestResult(2, -2826324016889506134750576955.1m), // 23 * 22
-	    new TestResult(1, 0m), // 23 * 23
-	    new TestResult(1, 0m), // 23 * 24
-	    new TestResult(1, 0m), // 23 * 25
-	    new TestResult(1, 0m), // 23 * 26
-	    new TestResult(1, 0m), // 23 * 27
-	    new TestResult(1, 0m), // 23 * 28
-	    new TestResult(2, -2210458768617810051106106.871m), // 23 * 29
-	    new TestResult(0, 0m), // 24 * 0
-	    new TestResult(0, -512833780867323.89020837443764m), // 24 * 1
-	    new TestResult(0, 512833780867323.89020837443764m), // 24 * 2
-	    new TestResult(2, -1025667561734647.7804167488753m), // 24 * 3
-	    new TestResult(0, -5128337808673238.9020837443764m), // 24 * 4
-	    new TestResult(0, -51283378086732.389020837443764m), // 24 * 5
-	    new TestResult(1, 0m), // 24 * 6
-	    new TestResult(1, 0m), // 24 * 7
-	    new TestResult(1, 0m), // 24 * 8
-	    new TestResult(0, 1643045050434361863551.7087135m), // 24 * 9
-	    new TestResult(1, 0m), // 24 * 10
-	    new TestResult(1, 0m), // 24 * 11
-	    new TestResult(0, -391252894469544.55412631906773m), // 24 * 12
-	    new TestResult(1, 0m), // 24 * 13
-	    new TestResult(1, 0m), // 24 * 14
-	    new TestResult(1, 0m), // 24 * 15
-	    new TestResult(2, 215966256439146035447.16512997m), // 24 * 16
-	    new TestResult(1, 0m), // 24 * 17
-	    new TestResult(1, 0m), // 24 * 18
-	    new TestResult(1, 0m), // 24 * 19
-	    new TestResult(2, -3631540499079604049748263.216m), // 24 * 20
-	    new TestResult(0, -213211810548723232636647639.7m), // 24 * 21
-	    new TestResult(2, 3276696308036925201560804370m), // 24 * 22
-	    new TestResult(1, 0m), // 24 * 23
-	    new TestResult(1, 0m), // 24 * 24
-	    new TestResult(1, 0m), // 24 * 25
-	    new TestResult(1, 0m), // 24 * 26
-	    new TestResult(1, 0m), // 24 * 27
-	    new TestResult(1, 0m), // 24 * 28
-	    new TestResult(2, 2562693464342799730524457.4865m), // 24 * 29
-	    new TestResult(0, 0m), // 25 * 0
-	    new TestResult(0, 608940580690915704.1450897514m), // 25 * 1
-	    new TestResult(0, -608940580690915704.1450897514m), // 25 * 2
-	    new TestResult(0, 1217881161381831408.2901795028m), // 25 * 3
-	    new TestResult(0, 6089405806909157041.450897514m), // 25 * 4
-	    new TestResult(0, 60894058069091570.41450897514m), // 25 * 5
-	    new TestResult(1, 0m), // 25 * 6
-	    new TestResult(1, 0m), // 25 * 7
-	    new TestResult(1, 0m), // 25 * 8
-	    new TestResult(0, -1950957297354170624860913.7855m), // 25 * 9
-	    new TestResult(1, 0m), // 25 * 10
-	    new TestResult(1, 0m), // 25 * 11
-	    new TestResult(0, 464575021466700199.22364418475m), // 25 * 12
-	    new TestResult(1, 0m), // 25 * 13
-	    new TestResult(1, 0m), // 25 * 14
-	    new TestResult(1, 0m), // 25 * 15
-	    new TestResult(0, -256439069562229438659442.67473m), // 25 * 16
-	    new TestResult(1, 0m), // 25 * 17
-	    new TestResult(1, 0m), // 25 * 18
-	    new TestResult(1, 0m), // 25 * 19
-	    new TestResult(0, 4312103575884025168661620716.9m), // 25 * 20
-	    new TestResult(1, 0m), // 25 * 21
-	    new TestResult(1, 0m), // 25 * 22
-	    new TestResult(1, 0m), // 25 * 23
-	    new TestResult(1, 0m), // 25 * 24
-	    new TestResult(1, 0m), // 25 * 25
-	    new TestResult(1, 0m), // 25 * 26
-	    new TestResult(1, 0m), // 25 * 27
-	    new TestResult(1, 0m), // 25 * 28
-	    new TestResult(0, -3042950960973153681431212945.8m), // 25 * 29
-	    new TestResult(0, 0m), // 26 * 0
-	    new TestResult(0, -42535053313319986966115.037787m), // 26 * 1
-	    new TestResult(0, 42535053313319986966115.037787m), // 26 * 2
-	    new TestResult(2, -85070106626639973932230.07557m), // 26 * 3
-	    new TestResult(0, -425350533133199869661150.37787m), // 26 * 4
-	    new TestResult(0, -4253505331331998696611.5037787m), // 26 * 5
-	    new TestResult(1, 0m), // 26 * 6
-	    new TestResult(1, 0m), // 26 * 7
-	    new TestResult(1, 0m), // 26 * 8
-	    new TestResult(1, 0m), // 26 * 9
-	    new TestResult(1, 0m), // 26 * 10
-	    new TestResult(1, 0m), // 26 * 11
-	    new TestResult(0, -32450987719855972399063.033158m), // 26 * 12
-	    new TestResult(1, 0m), // 26 * 13
-	    new TestResult(1, 0m), // 26 * 14
-	    new TestResult(1, 0m), // 26 * 15
-	    new TestResult(2, 17912502206818886711664532432m), // 26 * 16
-	    new TestResult(1, 0m), // 26 * 17
-	    new TestResult(1, 0m), // 26 * 18
-	    new TestResult(1, 0m), // 26 * 19
-	    new TestResult(1, 0m), // 26 * 20
-	    new TestResult(1, 0m), // 26 * 21
-	    new TestResult(1, 0m), // 26 * 22
-	    new TestResult(1, 0m), // 26 * 23
-	    new TestResult(1, 0m), // 26 * 24
-	    new TestResult(1, 0m), // 26 * 25
-	    new TestResult(1, 0m), // 26 * 26
-	    new TestResult(1, 0m), // 26 * 27
-	    new TestResult(1, 0m), // 26 * 28
-	    new TestResult(1, 0m), // 26 * 29
-	    new TestResult(0, 0m), // 27 * 0
-	    new TestResult(0, -7808274522591953107485.8812311m), // 27 * 1
-	    new TestResult(0, 7808274522591953107485.8812311m), // 27 * 2
-	    new TestResult(2, -15616549045183906214971.762462m), // 27 * 3
-	    new TestResult(0, -78082745225919531074858.812311m), // 27 * 4
-	    new TestResult(0, -780827452259195310748.58812311m), // 27 * 5
-	    new TestResult(1, 0m), // 27 * 6
-	    new TestResult(1, 0m), // 27 * 7
-	    new TestResult(1, 0m), // 27 * 8
-	    new TestResult(0, 25016579026989918165002777574m), // 27 * 9
-	    new TestResult(1, 0m), // 27 * 10
-	    new TestResult(1, 0m), // 27 * 11
-	    new TestResult(0, -5957115388557583551533.0994303m), // 27 * 12
-	    new TestResult(1, 0m), // 27 * 13
-	    new TestResult(1, 0m), // 27 * 14
-	    new TestResult(1, 0m), // 27 * 15
-	    new TestResult(0, 3288246369108855691627019039.6m), // 27 * 16
-	    new TestResult(1, 0m), // 27 * 17
-	    new TestResult(1, 0m), // 27 * 18
-	    new TestResult(1, 0m), // 27 * 19
-	    new TestResult(1, 0m), // 27 * 20
-	    new TestResult(1, 0m), // 27 * 21
-	    new TestResult(1, 0m), // 27 * 22
-	    new TestResult(1, 0m), // 27 * 23
-	    new TestResult(1, 0m), // 27 * 24
-	    new TestResult(1, 0m), // 27 * 25
-	    new TestResult(1, 0m), // 27 * 26
-	    new TestResult(1, 0m), // 27 * 27
-	    new TestResult(1, 0m), // 27 * 28
-	    new TestResult(1, 0m), // 27 * 29
-	    new TestResult(0, 0m), // 28 * 0
-	    new TestResult(0, 1037807626804273037330059471.7m), // 28 * 1
-	    new TestResult(0, -1037807626804273037330059471.7m), // 28 * 2
-	    new TestResult(0, 2075615253608546074660118943.4m), // 28 * 3
-	    new TestResult(0, 10378076268042730373300594717m), // 28 * 4
-	    new TestResult(0, 103780762680427303733005947.17m), // 28 * 5
-	    new TestResult(1, 0m), // 28 * 6
-	    new TestResult(1, 0m), // 28 * 7
-	    new TestResult(1, 0m), // 28 * 8
-	    new TestResult(1, 0m), // 28 * 9
-	    new TestResult(1, 0m), // 28 * 10
-	    new TestResult(1, 0m), // 28 * 11
-	    new TestResult(0, 791767728722982425613218218.59m), // 28 * 12
-	    new TestResult(1, 0m), // 28 * 13
-	    new TestResult(1, 0m), // 28 * 14
-	    new TestResult(1, 0m), // 28 * 15
-	    new TestResult(1, 0m), // 28 * 16
-	    new TestResult(1, 0m), // 28 * 17
-	    new TestResult(1, 0m), // 28 * 18
-	    new TestResult(1, 0m), // 28 * 19
-	    new TestResult(1, 0m), // 28 * 20
-	    new TestResult(1, 0m), // 28 * 21
-	    new TestResult(1, 0m), // 28 * 22
-	    new TestResult(1, 0m), // 28 * 23
-	    new TestResult(1, 0m), // 28 * 24
-	    new TestResult(1, 0m), // 28 * 25
-	    new TestResult(1, 0m), // 28 * 26
-	    new TestResult(1, 0m), // 28 * 27
-	    new TestResult(1, 0m), // 28 * 28
-	    new TestResult(1, 0m), // 28 * 29
-	    new TestResult(0, 0m), // 29 * 0
-	    new TestResult(0, -4997122966.448652425771563042m), // 29 * 1
-	    new TestResult(0, 4997122966.448652425771563042m), // 29 * 2
-	    new TestResult(0, -9994245932.897304851543126084m), // 29 * 3
-	    new TestResult(0, -49971229664.48652425771563042m), // 29 * 4
-	    new TestResult(0, -499712296.6448652425771563042m), // 29 * 5
-	    new TestResult(1, 0m), // 29 * 6
-	    new TestResult(1, 0m), // 29 * 7
-	    new TestResult(1, 0m), // 29 * 8
-	    new TestResult(2, 16010057181782036.694377696165m), // 29 * 9
-	    new TestResult(1, 0m), // 29 * 10
-	    new TestResult(2, 2724399925666581324856736883m), // 29 * 11
-	    new TestResult(2, -3812422070.43511700405678157m), // 29 * 12
-	    new TestResult(1, 0m), // 29 * 13
-	    new TestResult(1, 0m), // 29 * 14
-	    new TestResult(1, 0m), // 29 * 15
-	    new TestResult(2, 2104404936439239.9111285468803m), // 29 * 16
-	    new TestResult(2, -122246061989021334943606343.1m), // 29 * 17
-	    new TestResult(1, 0m), // 29 * 18
-	    new TestResult(1, 0m), // 29 * 19
-	    new TestResult(0, -35386230604481178142.543841269m), // 29 * 20
-	    new TestResult(0, -2077565236457711426002.3992246m), // 29 * 21
-	    new TestResult(2, 31928579952897032005741.500403m), // 29 * 22
-	    new TestResult(2, -2210458768617810051106106.871m), // 29 * 23
-	    new TestResult(2, 2562693464342799730524457.4865m), // 29 * 24
-	    new TestResult(0, -3042950960973153681431212945.8m), // 29 * 25
-	    new TestResult(1, 0m), // 29 * 26
-	    new TestResult(1, 0m), // 29 * 27
-	    new TestResult(1, 0m), // 29 * 28
-	    new TestResult(0, 24971237941808579837.350664893m), // 29 * 29
-        };
-
-
-        // generated result list build2
-        TestResult[] trAuto_Div_build2 = new TestResult[] {
-	    new TestResult(3, 0m), // 0 / 0
-	    new TestResult(0, 0m), // 0 / 1
-	    new TestResult(0, 0m), // 0 / 2
-	    new TestResult(0, 0m), // 0 / 3
-	    new TestResult(0, 0m), // 0 / 4
-	    new TestResult(0, 0m), // 0 / 5
-	    new TestResult(0, 0m), // 0 / 6
-	    new TestResult(0, 0m), // 0 / 7
-	    new TestResult(0, 0m), // 0 / 8
-	    new TestResult(0, 0m), // 0 / 9
-	    new TestResult(0, 0m), // 0 / 10
-	    new TestResult(0, 0m), // 0 / 11
-	    new TestResult(0, 0m), // 0 / 12
-	    new TestResult(0, 0m), // 0 / 13
-	    new TestResult(0, 0m), // 0 / 14
-	    new TestResult(0, 0m), // 0 / 15
-	    new TestResult(0, 0m), // 0 / 16
-	    new TestResult(0, 0m), // 0 / 17
-	    new TestResult(0, 0m), // 0 / 18
-	    new TestResult(0, 0m), // 0 / 19
-	    new TestResult(0, 0m), // 0 / 20
-	    new TestResult(0, 0m), // 0 / 21
-	    new TestResult(0, 0m), // 0 / 22
-	    new TestResult(0, 0m), // 0 / 23
-	    new TestResult(0, 0m), // 0 / 24
-	    new TestResult(0, 0m), // 0 / 25
-	    new TestResult(0, 0m), // 0 / 26
-	    new TestResult(0, 0m), // 0 / 27
-	    new TestResult(0, 0m), // 0 / 28
-	    new TestResult(0, 0m), // 0 / 29
-	    new TestResult(3, 0m), // 1 / 0
-	    new TestResult(0, 1m), // 1 / 1
-	    new TestResult(0, -1m), // 1 / 2
-	    new TestResult(0, 0.5m), // 1 / 3
-	    new TestResult(0, 0.1m), // 1 / 4
-	    new TestResult(0, 10m), // 1 / 5
-	    new TestResult(0, 0m), // 1 / 6
-	    new TestResult(0, 0m), // 1 / 7
-	    new TestResult(2, 3.61E-26m), // 1 / 8
-	    new TestResult(2, -3.121239924198969049581E-07m), // 1 / 9
-	    new TestResult(2, -2.06327E-23m), // 1 / 10
-	    new TestResult(2, -1.8342105061E-18m), // 1 / 11
-	    new TestResult(0, 1.3107475704751451797758879069m), // 1 / 12
-	    new TestResult(2, -2.4971716E-21m), // 1 / 13
-	    new TestResult(2, 4.4873E-24m), // 1 / 14
-	    new TestResult(2, 7.02E-26m), // 1 / 15
-	    new TestResult(2, -2.3746014276625098667414E-06m), // 1 / 16
-	    new TestResult(2, 4.08775782642E-17m), // 1 / 17
-	    new TestResult(2, -1.879E-25m), // 1 / 18
-	    new TestResult(2, 9.7E-27m), // 1 / 19
-	    new TestResult(2, 1.412165941691409118E-10m), // 1 / 20
-	    new TestResult(2, 2.4052784859689137E-12m), // 1 / 21
-	    new TestResult(2, -1.565094023542766E-13m), // 1 / 22
-	    new TestResult(2, 2.2606723262128E-15m), // 1 / 23
-	    new TestResult(2, -1.9499495495573E-15m), // 1 / 24
-	    new TestResult(2, 1.6421963517E-18m), // 1 / 25
-	    new TestResult(2, -2.351E-23m), // 1 / 26
-	    new TestResult(2, -1.280693E-22m), // 1 / 27
-	    new TestResult(2, 1E-27m), // 1 / 28
-	    new TestResult(2, -2.00115147598754898E-10m), // 1 / 29
-	    new TestResult(3, 0m), // 2 / 0
-	    new TestResult(0, -1m), // 2 / 1
-	    new TestResult(0, 1m), // 2 / 2
-	    new TestResult(0, -0.5m), // 2 / 3
-	    new TestResult(0, -0.1m), // 2 / 4
-	    new TestResult(0, -10m), // 2 / 5
-	    new TestResult(0, 0m), // 2 / 6
-	    new TestResult(0, 0m), // 2 / 7
-	    new TestResult(2, -3.61E-26m), // 2 / 8
-	    new TestResult(2, 3.121239924198969049581E-07m), // 2 / 9
-	    new TestResult(2, 2.06327E-23m), // 2 / 10
-	    new TestResult(2, 1.8342105061E-18m), // 2 / 11
-	    new TestResult(0, -1.3107475704751451797758879069m), // 2 / 12
-	    new TestResult(2, 2.4971716E-21m), // 2 / 13
-	    new TestResult(2, -4.4873E-24m), // 2 / 14
-	    new TestResult(2, -7.02E-26m), // 2 / 15
-	    new TestResult(2, 2.3746014276625098667414E-06m), // 2 / 16
-	    new TestResult(2, -4.08775782642E-17m), // 2 / 17
-	    new TestResult(2, 1.879E-25m), // 2 / 18
-	    new TestResult(2, -9.7E-27m), // 2 / 19
-	    new TestResult(2, -1.412165941691409118E-10m), // 2 / 20
-	    new TestResult(2, -2.4052784859689137E-12m), // 2 / 21
-	    new TestResult(2, 1.565094023542766E-13m), // 2 / 22
-	    new TestResult(2, -2.2606723262128E-15m), // 2 / 23
-	    new TestResult(2, 1.9499495495573E-15m), // 2 / 24
-	    new TestResult(2, -1.6421963517E-18m), // 2 / 25
-	    new TestResult(2, 2.351E-23m), // 2 / 26
-	    new TestResult(2, 1.280693E-22m), // 2 / 27
-	    new TestResult(2, -1E-27m), // 2 / 28
-	    new TestResult(2, 2.00115147598754898E-10m), // 2 / 29
-	    new TestResult(3, 0m), // 3 / 0
-	    new TestResult(0, 2m), // 3 / 1
-	    new TestResult(0, -2m), // 3 / 2
-	    new TestResult(0, 1m), // 3 / 3
-	    new TestResult(0, 0.2m), // 3 / 4
-	    new TestResult(0, 20m), // 3 / 5
-	    new TestResult(0, 0m), // 3 / 6
-	    new TestResult(0, 0m), // 3 / 7
-	    new TestResult(2, 7.22E-26m), // 3 / 8
-	    new TestResult(2, -6.242479848397938099161E-07m), // 3 / 9
-	    new TestResult(2, -4.12653E-23m), // 3 / 10
-	    new TestResult(2, -3.6684210122E-18m), // 3 / 11
-	    new TestResult(0, 2.6214951409502903595517758138m), // 3 / 12
-	    new TestResult(2, -4.9943432E-21m), // 3 / 13
-	    new TestResult(2, 8.9746E-24m), // 3 / 14
-	    new TestResult(2, 1.404E-25m), // 3 / 15
-	    new TestResult(2, -4.7492028553250197334829E-06m), // 3 / 16
-	    new TestResult(2, 8.17551565284E-17m), // 3 / 17
-	    new TestResult(2, -3.757E-25m), // 3 / 18
-	    new TestResult(2, 1.95E-26m), // 3 / 19
-	    new TestResult(2, 2.824331883382818237E-10m), // 3 / 20
-	    new TestResult(2, 4.8105569719378275E-12m), // 3 / 21
-	    new TestResult(2, -3.130188047085533E-13m), // 3 / 22
-	    new TestResult(2, 4.5213446524256E-15m), // 3 / 23
-	    new TestResult(2, -3.8998990991146E-15m), // 3 / 24
-	    new TestResult(2, 3.2843927034E-18m), // 3 / 25
-	    new TestResult(2, -4.702E-23m), // 3 / 26
-	    new TestResult(2, -2.561385E-22m), // 3 / 27
-	    new TestResult(2, 1.9E-27m), // 3 / 28
-	    new TestResult(2, -4.002302951975097959E-10m), // 3 / 29
-	    new TestResult(3, 0m), // 4 / 0
-	    new TestResult(0, 10m), // 4 / 1
-	    new TestResult(0, -10m), // 4 / 2
-	    new TestResult(0, 5m), // 4 / 3
-	    new TestResult(0, 1m), // 4 / 4
-	    new TestResult(0, 100m), // 4 / 5
-	    new TestResult(2, 1E-28m), // 4 / 6
-	    new TestResult(2, -1E-28m), // 4 / 7
-	    new TestResult(2, 3.61E-25m), // 4 / 8
-	    new TestResult(2, -3.1212399241989690495806E-06m), // 4 / 9
-	    new TestResult(2, -2.063265E-22m), // 4 / 10
-	    new TestResult(2, -1.83421050609E-17m), // 4 / 11
-	    new TestResult(0, 13.107475704751451797758879069m), // 4 / 12
-	    new TestResult(2, -2.49717158E-20m), // 4 / 13
-	    new TestResult(2, 4.48729E-23m), // 4 / 14
-	    new TestResult(2, 7.019E-25m), // 4 / 15
-	    new TestResult(2, -2.37460142766250986674143E-05m), // 4 / 16
-	    new TestResult(2, 4.087757826422E-16m), // 4 / 17
-	    new TestResult(2, -1.8785E-24m), // 4 / 18
-	    new TestResult(2, 9.73E-26m), // 4 / 19
-	    new TestResult(2, 1.4121659416914091185E-09m), // 4 / 20
-	    new TestResult(2, 2.40527848596891375E-11m), // 4 / 21
-	    new TestResult(2, -1.5650940235427663E-12m), // 4 / 22
-	    new TestResult(2, 2.26067232621278E-14m), // 4 / 23
-	    new TestResult(2, -1.94994954955729E-14m), // 4 / 24
-	    new TestResult(2, 1.64219635168E-17m), // 4 / 25
-	    new TestResult(2, -2.351002E-22m), // 4 / 26
-	    new TestResult(2, -1.2806927E-21m), // 4 / 27
-	    new TestResult(2, 9.6E-27m), // 4 / 28
-	    new TestResult(2, -2.0011514759875489796E-09m), // 4 / 29
-	    new TestResult(3, 0m), // 5 / 0
-	    new TestResult(0, 0.1m), // 5 / 1
-	    new TestResult(0, -0.1m), // 5 / 2
-	    new TestResult(0, 0.05m), // 5 / 3
-	    new TestResult(0, 0.01m), // 5 / 4
-	    new TestResult(0, 1m), // 5 / 5
-	    new TestResult(0, 0m), // 5 / 6
-	    new TestResult(0, 0m), // 5 / 7
-	    new TestResult(2, 3.6E-27m), // 5 / 8
-	    new TestResult(2, -3.12123992419896904958E-08m), // 5 / 9
-	    new TestResult(2, -2.0633E-24m), // 5 / 10
-	    new TestResult(2, -1.834210506E-19m), // 5 / 11
-	    new TestResult(0, 0.1310747570475145179775887907m), // 5 / 12
-	    new TestResult(2, -2.497172E-22m), // 5 / 13
-	    new TestResult(2, 4.487E-25m), // 5 / 14
-	    new TestResult(2, 7E-27m), // 5 / 15
-	    new TestResult(2, -2.374601427662509866741E-07m), // 5 / 16
-	    new TestResult(2, 4.0877578264E-18m), // 5 / 17
-	    new TestResult(2, -1.88E-26m), // 5 / 18
-	    new TestResult(2, 1E-27m), // 5 / 19
-	    new TestResult(2, 1.41216594169140912E-11m), // 5 / 20
-	    new TestResult(2, 2.405278485968914E-13m), // 5 / 21
-	    new TestResult(2, -1.56509402354277E-14m), // 5 / 22
-	    new TestResult(2, 2.260672326213E-16m), // 5 / 23
-	    new TestResult(2, -1.949949549557E-16m), // 5 / 24
-	    new TestResult(2, 1.642196352E-19m), // 5 / 25
-	    new TestResult(2, -2.351E-24m), // 5 / 26
-	    new TestResult(2, -1.28069E-23m), // 5 / 27
-	    new TestResult(2, 1E-28m), // 5 / 28
-	    new TestResult(2, -2.00115147598754898E-11m), // 5 / 29
-	    new TestResult(3, 0m), // 6 / 0
-	    new TestResult(0, 79228162514264337593543950335m), // 6 / 1
-	    new TestResult(0, -79228162514264337593543950335m), // 6 / 2
-	    new TestResult(4, 39614081257132168796771975168m), // 6 / 3
-	    new TestResult(4, 7922816251426433759354395033.5m), // 6 / 4
-	    new TestResult(1, 0m), // 6 / 5
-	    new TestResult(0, 1m), // 6 / 6
-	    new TestResult(0, -1m), // 6 / 7
-	    new TestResult(2, 2859.8815108190596050496514036m), // 6 / 8
-	    new TestResult(2, -24729010396044602218186.765763m), // 6 / 9
-	    new TestResult(0, -1634686.9890330150250120997619m), // 6 / 10
-	    new TestResult(2, -145321128061.87519668639091926m), // 6 / 11
-	    new TestResult(1, 0m), // 6 / 12
-	    new TestResult(0, -197846315.8215581473367403789m), // 6 / 13
-	    new TestResult(0, 355519.78373087286985534915017m), // 6 / 14
-	    new TestResult(0, 5561.4152228343398478498516935m), // 6 / 15
-	    new TestResult(0, -188135307817449443294332.61564m), // 6 / 16
-	    new TestResult(4, 3238655413907.0152158135371692m), // 6 / 17
-	    new TestResult(0, -14883.393842880239095927799143m), // 6 / 18
-	    new TestResult(0, 770.69397665852204557888702506m), // 6 / 19
-	    new TestResult(4, 11188331272543609822.484506627m), // 6 / 20
-	    new TestResult(0, 190565794778408772.72439011791m), // 6 / 21
-	    new TestResult(4, -12399952364735014.543439368391m), // 6 / 22
-	    new TestResult(2, 179108914452685.79816067884477m), // 6 / 23
-	    new TestResult(2, -154490919806941.48506503891762m), // 6 / 24
-	    new TestResult(2, 130108199431.16705963085822836m), // 6 / 25
-	    new TestResult(2, -1862655.7707746844883926874832m), // 6 / 26
-	    new TestResult(2, -10146692.753313261555369747673m), // 6 / 27
-	    new TestResult(0, 76.341858036091015923443233609m), // 6 / 28
-	    new TestResult(2, -15854755435520147876.101506668m), // 6 / 29
-	    new TestResult(3, 0m), // 7 / 0
-	    new TestResult(0, -79228162514264337593543950335m), // 7 / 1
-	    new TestResult(0, 79228162514264337593543950335m), // 7 / 2
-	    new TestResult(4, -39614081257132168796771975168m), // 7 / 3
-	    new TestResult(4, -7922816251426433759354395033.5m), // 7 / 4
-	    new TestResult(1, 0m), // 7 / 5
-	    new TestResult(0, -1m), // 7 / 6
-	    new TestResult(0, 1m), // 7 / 7
-	    new TestResult(2, -2859.8815108190596050496514036m), // 7 / 8
-	    new TestResult(2, 24729010396044602218186.765763m), // 7 / 9
-	    new TestResult(0, 1634686.9890330150250120997619m), // 7 / 10
-	    new TestResult(2, 145321128061.87519668639091926m), // 7 / 11
-	    new TestResult(1, 0m), // 7 / 12
-	    new TestResult(0, 197846315.8215581473367403789m), // 7 / 13
-	    new TestResult(0, -355519.78373087286985534915017m), // 7 / 14
-	    new TestResult(0, -5561.4152228343398478498516935m), // 7 / 15
-	    new TestResult(0, 188135307817449443294332.61564m), // 7 / 16
-	    new TestResult(4, -3238655413907.0152158135371692m), // 7 / 17
-	    new TestResult(0, 14883.393842880239095927799143m), // 7 / 18
-	    new TestResult(0, -770.69397665852204557888702506m), // 7 / 19
-	    new TestResult(4, -11188331272543609822.484506627m), // 7 / 20
-	    new TestResult(0, -190565794778408772.72439011791m), // 7 / 21
-	    new TestResult(4, 12399952364735014.543439368391m), // 7 / 22
-	    new TestResult(2, -179108914452685.79816067884477m), // 7 / 23
-	    new TestResult(2, 154490919806941.48506503891762m), // 7 / 24
-	    new TestResult(2, -130108199431.16705963085822836m), // 7 / 25
-	    new TestResult(2, 1862655.7707746844883926874832m), // 7 / 26
-	    new TestResult(2, 10146692.753313261555369747673m), // 7 / 27
-	    new TestResult(0, -76.341858036091015923443233609m), // 7 / 28
-	    new TestResult(2, 15854755435520147876.101506668m), // 7 / 29
-	    new TestResult(3, 0m), // 8 / 0
-	    new TestResult(0, 27703302467091960609331879.532m), // 8 / 1
-	    new TestResult(0, -27703302467091960609331879.532m), // 8 / 2
-	    new TestResult(0, 13851651233545980304665939.766m), // 8 / 3
-	    new TestResult(0, 2770330246709196060933187.9532m), // 8 / 4
-	    new TestResult(0, 277033024670919606093318795.32m), // 8 / 5
-	    new TestResult(2, 0.0003496648361888264585379374m), // 8 / 6
-	    new TestResult(2, -0.0003496648361888264585379374m), // 8 / 7
-	    new TestResult(0, 1m), // 8 / 8
-	    new TestResult(2, -8646865369244722339.540450168m), // 8 / 9
-	    new TestResult(0, -571.59255824023515226354006889m), // 8 / 10
-	    new TestResult(0, -50813688.438531062464476589278m), // 8 / 11
-	    new TestResult(0, 36312036402878882966329689.018m), // 8 / 12
-	    new TestResult(0, -69179.899612307954004328275068m), // 8 / 13
-	    new TestResult(2, 124.31276694014267187689413445m), // 8 / 14
-	    new TestResult(0, 1.9446313428704152390534655913m), // 8 / 15
-	    new TestResult(0, -65784301589322901428.917817252m), // 8 / 16
-	    new TestResult(2, 1132443914.7758524269197245123m), // 8 / 17
-	    new TestResult(0, -5.2041994700045071214948001057m), // 8 / 18
-	    new TestResult(2, 0.2694845831000173532986745484m), // 8 / 19
-	    new TestResult(0, 3912166021640285.6025706982227m), // 8 / 20
-	    new TestResult(0, 66634157414385.824002109431498m), // 8 / 21
-	    new TestResult(0, -4335827312364.3201348613764117m), // 8 / 22
-	    new TestResult(0, 62628089232.056911382057917869m), // 8 / 23
-	    new TestResult(0, -54020042166.955319300276527479m), // 8 / 24
-	    new TestResult(0, 45494262.240922193719761217507m), // 8 / 25
-	    new TestResult(0, -651.30522496410233725620872491m), // 8 / 26
-	    new TestResult(0, -3547.9416594456341168641639951m), // 8 / 27
-	    new TestResult(2, 0.0266940632845404098551052086m), // 8 / 28
-	    new TestResult(0, -5543850462175058.4016671641533m), // 8 / 29
-	    new TestResult(3, 0m), // 9 / 0
-	    new TestResult(0, -3203854.9559968181492513385018m), // 9 / 1
-	    new TestResult(0, 3203854.9559968181492513385018m), // 9 / 2
-	    new TestResult(0, -1601927.4779984090746256692509m), // 9 / 3
-	    new TestResult(0, -320385.49559968181492513385018m), // 9 / 4
-	    new TestResult(0, -32038549.559968181492513385018m), // 9 / 5
-	    new TestResult(2, -4.04383E-23m), // 9 / 6
-	    new TestResult(2, 4.04383E-23m), // 9 / 7
-	    new TestResult(2, -1.156488458E-19m), // 9 / 8
-	    new TestResult(0, 1m), // 9 / 9
-	    new TestResult(2, 6.61040196455E-17m), // 9 / 10
-	    new TestResult(2, 5.8765444202781065E-12m), // 9 / 11
-	    new TestResult(0, -4199445.0997275825559060668592m), // 9 / 12
-	    new TestResult(2, 8.0005755447943E-15m), // 9 / 13
-	    new TestResult(2, -1.43766280186E-17m), // 9 / 14
-	    new TestResult(2, -2.248943704E-19m), // 9 / 15
-	    new TestResult(0, 7.6078785525336521046280405305m), // 9 / 16
-	    new TestResult(2, -1.309658317109623269E-10m), // 9 / 17
-	    new TestResult(2, 6.018596622E-19m), // 9 / 18
-	    new TestResult(2, -3.1165581E-20m), // 9 / 19
-	    new TestResult(2, -0.0004524374850977934825669157m), // 9 / 20
-	    new TestResult(2, -7.7061633978240275370839E-06m), // 9 / 21
-	    new TestResult(2, 5.014334243928492665444E-07m), // 9 / 22
-	    new TestResult(2, -7.242866236221657103E-09m), // 9 / 23
-	    new TestResult(2, 6.2473555282928855602E-09m), // 9 / 24
-	    new TestResult(2, -5.261358920047113E-12m), // 9 / 25
-	    new TestResult(2, 7.53226975501E-17m), // 9 / 26
-	    new TestResult(2, 4.103153579868E-16m), // 9 / 27
-	    new TestResult(2, -3.0871376E-21m), // 9 / 28
-	    new TestResult(2, 0.0006411399074043056427231896m), // 9 / 29
-	    new TestResult(3, 0m), // 10 / 0
-	    new TestResult(0, -48466870444188873796420.028868m), // 10 / 1
-	    new TestResult(0, 48466870444188873796420.028868m), // 10 / 2
-	    new TestResult(0, -24233435222094436898210.014434m), // 10 / 3
-	    new TestResult(0, -4846687044418887379642.0028868m), // 10 / 4
-	    new TestResult(0, -484668704441888737964200.28868m), // 10 / 5
-	    new TestResult(2, -6.11737908669317400216E-07m), // 10 / 6
-	    new TestResult(2, 6.11737908669317400216E-07m), // 10 / 7
-	    new TestResult(2, -0.001749497934470499347067655m), // 10 / 8
-	    new TestResult(2, 15127673103138133.38384122385m), // 10 / 9
-	    new TestResult(0, 1m), // 10 / 10
-	    new TestResult(2, 88898.44296603758700885485801m), // 10 / 11
-	    new TestResult(0, -63527832683254186820073.01815m), // 10 / 12
-	    new TestResult(2, 121.03009147860926410013615872m), // 10 / 13
-	    new TestResult(2, -0.217484928990092181791376891m), // 10 / 14
-	    new TestResult(2, -0.0034021285176583848675539818m), // 10 / 15
-	    new TestResult(2, 115089499751104803.45385549602m), // 10 / 16
-	    new TestResult(2, -1981208.2898040400164777217752m), // 10 / 17
-	    new TestResult(2, 0.0091047362233453526323903968m), // 10 / 18
-	    new TestResult(2, -0.0004714627215051239953535366m), // 10 / 19
-	    new TestResult(0, -6844326374165.3505116694016252m), // 10 / 20
-	    new TestResult(2, -116576320761.65010852644993727m), // 10 / 21
-	    new TestResult(0, 7585520927.2021546507200976307m), // 10 / 22
-	    new TestResult(2, -109567712.75131768812510902617m), // 10 / 23
-	    new TestResult(2, 94507952.1910976087542637813m), // 10 / 24
-	    new TestResult(0, -79592.11782075260884714858998m), // 10 / 25
-	    new TestResult(0, 1.1394571457845409462816707224m), // 10 / 26
-	    new TestResult(0, 6.2071166048219727069770728387m), // 10 / 27
-	    new TestResult(2, -4.67012085789282405269787E-05m), // 10 / 28
-	    new TestResult(2, 9698954932588.587842740128447m), // 10 / 29
-	    new TestResult(3, 0m), // 11 / 0
-	    new TestResult(0, -545193693242804794.30331374676m), // 11 / 1
-	    new TestResult(0, 545193693242804794.30331374676m), // 11 / 2
-	    new TestResult(0, -272596846621402397.15165687338m), // 11 / 3
-	    new TestResult(0, -54519369324280479.430331374676m), // 11 / 4
-	    new TestResult(0, -5451936932428047943.0331374676m), // 11 / 5
-	    new TestResult(2, -6.8813118459568899E-12m), // 11 / 6
-	    new TestResult(2, 6.8813118459568899E-12m), // 11 / 7
-	    new TestResult(2, -1.96797365184322821747E-08m), // 11 / 8
-	    new TestResult(2, 170168032177.09280206999941461m), // 11 / 9
-	    new TestResult(2, 1.12487909420644868170014E-05m), // 11 / 10
-	    new TestResult(0, 1m), // 11 / 11
-	    new TestResult(0, -714611308856377959.50595110446m), // 11 / 12
-	    new TestResult(2, 0.0013614421967418161221277362m), // 11 / 13
-	    new TestResult(2, -2.4464424992592870530962E-06m), // 11 / 14
-	    new TestResult(2, -3.82698324531749191876E-08m), // 11 / 15
-	    new TestResult(2, 1294617722326.9607230936474447m), // 11 / 16
-	    new TestResult(0, -22.286197864690758108786295635m), // 11 / 17
-	    new TestResult(2, 1.024172743590536270877E-07m), // 11 / 18
-	    new TestResult(2, -5.3033855911879105358E-09m), // 11 / 19
-	    new TestResult(0, -76990396.522244266468310204941m), // 11 / 20
-	    new TestResult(2, -1311342.6610428539176292952583m), // 11 / 21
-	    new TestResult(2, 85327.93909675220473779587097m), // 11 / 22
-	    new TestResult(2, -1232.5042947397459817875590485m), // 11 / 23
-	    new TestResult(2, 1063.1001965602823514109428061m), // 11 / 24
-	    new TestResult(2, -0.8953150940018113683593315845m), // 11 / 25
-	    new TestResult(2, 1.28175152203717976446025E-05m), // 11 / 26
-	    new TestResult(2, 6.98225570406594773014162E-05m), // 11 / 27
-	    new TestResult(2, -5.253321320461122964E-10m), // 11 / 28
-	    new TestResult(2, 109101516.393194182269828744m), // 11 / 29
-	    new TestResult(3, 0m), // 12 / 0
-	    new TestResult(0, 0.7629234053338741809892531431m), // 12 / 1
-	    new TestResult(0, -0.7629234053338741809892531431m), // 12 / 2
-	    new TestResult(2, 0.3814617026669370904946265716m), // 12 / 3
-	    new TestResult(2, 0.0762923405333874180989253143m), // 12 / 4
-	    new TestResult(0, 7.629234053338741809892531431m), // 12 / 5
-	    new TestResult(0, 0m), // 12 / 6
-	    new TestResult(0, 0m), // 12 / 7
-	    new TestResult(2, 2.75E-26m), // 12 / 8
-	    new TestResult(2, -2.381266991833920788159E-07m), // 12 / 9
-	    new TestResult(2, -1.57411E-23m), // 12 / 10
-	    new TestResult(2, -1.3993621254E-18m), // 12 / 11
-	    new TestResult(0, 1m), // 12 / 12
-	    new TestResult(2, -1.9051506E-21m), // 12 / 13
-	    new TestResult(2, 3.4235E-24m), // 12 / 14
-	    new TestResult(2, 5.36E-26m), // 12 / 15
-	    new TestResult(2, -1.8116390075029613252172E-06m), // 12 / 16
-	    new TestResult(2, 3.11864612111E-17m), // 12 / 17
-	    new TestResult(2, -1.433E-25m), // 12 / 18
-	    new TestResult(2, 7.4E-27m), // 12 / 19
-	    new TestResult(2, 1.077374449131727051E-10m), // 12 / 20
-	    new TestResult(2, 1.8350432532917088E-12m), // 12 / 21
-	    new TestResult(2, -1.194046862108942E-13m), // 12 / 22
-	    new TestResult(2, 1.7247198294583E-15m), // 12 / 23
-	    new TestResult(2, -1.4876621505775E-15m), // 12 / 24
-	    new TestResult(2, 1.2528700328E-18m), // 12 / 25
-	    new TestResult(2, -1.79363E-23m), // 12 / 26
-	    new TestResult(2, -9.7707E-23m), // 12 / 27
-	    new TestResult(2, 7E-28m), // 12 / 28
-	    new TestResult(2, -1.526725298649329415E-10m), // 12 / 29
-	    new TestResult(3, 0m), // 13 / 0
-	    new TestResult(0, -400453059665371395972.33474452m), // 13 / 1
-	    new TestResult(0, 400453059665371395972.33474452m), // 13 / 2
-	    new TestResult(0, -200226529832685697986.16737226m), // 13 / 3
-	    new TestResult(0, -40045305966537139597.233474452m), // 13 / 4
-	    new TestResult(0, -4004530596653713959723.3474452m), // 13 / 5
-	    new TestResult(2, -5.0544282103383796846E-09m), // 13 / 6
-	    new TestResult(2, 5.0544282103383796846E-09m), // 13 / 7
-	    new TestResult(2, -1.44550657865090008770424E-05m), // 13 / 8
-	    new TestResult(0, 124991007759518.90460797449561m), // 13 / 9
-	    new TestResult(2, 0.0082624080324415766315344098m), // 13 / 10
-	    new TestResult(0, 734.51520923413833710945795487m), // 13 / 11
-	    new TestResult(0, -524892875045723911444.75281192m), // 13 / 12
-	    new TestResult(0, 1m), // 13 / 13
-	    new TestResult(2, -0.0017969492242227235536064218m), // 13 / 14
-	    new TestResult(2, -2.81097739916991934127E-05m), // 13 / 15
-	    new TestResult(0, 950916407193211.1625559901416m), // 13 / 16
-	    new TestResult(2, -16369.551287616739221174657438m), // 13 / 17
-	    new TestResult(2, 7.52270457050304262522489E-05m), // 13 / 18
-	    new TestResult(2, -3.8954173771607025488213E-06m), // 13 / 19
-	    new TestResult(0, -56550617210.555523949138629466m), // 13 / 20
-	    new TestResult(2, -963201129.053543593301215979m), // 13 / 21
-	    new TestResult(0, 62674669.039168758653283589393m), // 13 / 22
-	    new TestResult(2, -905293.1499327386264702284996m), // 13 / 23
-	    new TestResult(0, 780863.26331332938464898250347m), // 13 / 24
-	    new TestResult(0, -657.62255360122271090761257385m), // 13 / 25
-	    new TestResult(2, 0.0094146598739531437042039072m), // 13 / 26
-	    new TestResult(2, 0.0512857300939825548661107378m), // 13 / 27
-	    new TestResult(2, -3.858644408872661628546E-07m), // 13 / 28
-	    new TestResult(2, 80136723141.3087985919301071m), // 13 / 29
-	    new TestResult(3, 0m), // 14 / 0
-	    new TestResult(0, 222851627785191714190050.61676m), // 14 / 1
-	    new TestResult(0, -222851627785191714190050.61676m), // 14 / 2
-	    new TestResult(0, 111425813892595857095025.30838m), // 14 / 3
-	    new TestResult(0, 22285162778519171419005.061676m), // 14 / 4
-	    new TestResult(0, 2228516277851917141900506.1676m), // 14 / 5
-	    new TestResult(2, 2.8127829891936371496034E-06m), // 14 / 6
-	    new TestResult(2, -2.8127829891936371496034E-06m), // 14 / 7
-	    new TestResult(2, 0.0080442260647412496180191824m), // 14 / 8
-	    new TestResult(0, -69557339781586865.090190294226m), // 14 / 9
-	    new TestResult(0, -4.5980197554082303507855592074m), // 14 / 10
-	    new TestResult(0, -408756.79698287266169556154972m), // 14 / 11
-	    new TestResult(0, 292102229695871398106087.53771m), // 14 / 12
-	    new TestResult(0, -556.49875161751071295835933612m), // 14 / 13
-	    new TestResult(0, 1m), // 14 / 14
-	    new TestResult(2, 0.0156430541346309720805875037m), // 14 / 15
-	    new TestResult(0, -529183793495630496.21134784463m), // 14 / 16
-	    new TestResult(0, 9109634.856097530429701051341m), // 14 / 17
-	    new TestResult(2, -0.0418637570227228532534385582m), // 14 / 18
-	    new TestResult(2, 0.0021677949074190888565424407m), // 14 / 19
-	    new TestResult(0, 31470347880873.8650457716423m), // 14 / 20
-	    new TestResult(0, 536020225874.87383772032904409m), // 14 / 21
-	    new TestResult(0, -34878375078.338063831579069802m), // 14 / 22
-	    new TestResult(0, 503794507.78545299809142202221m), // 14 / 23
-	    new TestResult(0, -434549431.21784335466036244264m), // 14 / 24
-	    new TestResult(0, 365966.13011459996262470838791m), // 14 / 25
-	    new TestResult(0, -5.2392464667583952349382510034m), // 14 / 26
-	    new TestResult(0, -28.540444773093892153704750451m), // 14 / 27
-	    new TestResult(2, 0.0002147330796473523774307252m), // 14 / 28
-	    new TestResult(0, -44595986386856.427962855912902m), // 14 / 29
-	    new TestResult(3, 0m), // 15 / 0
-	    new TestResult(0, 14246043379204153213661335.584m), // 15 / 1
-	    new TestResult(0, -14246043379204153213661335.584m), // 15 / 2
-	    new TestResult(0, 7123021689602076606830667.792m), // 15 / 3
-	    new TestResult(0, 1424604337920415321366133.5584m), // 15 / 4
-	    new TestResult(0, 142460433792041532136613355.84m), // 15 / 5
-	    new TestResult(2, 0.000179810346814988644017588m), // 15 / 6
-	    new TestResult(2, -0.000179810346814988644017588m), // 15 / 7
-	    new TestResult(2, 0.5142362863101488055319975668m), // 15 / 8
-	    new TestResult(0, -4446531935704239606.853757764m), // 15 / 9
-	    new TestResult(0, -293.9336344319759696558350238m), // 15 / 10
-	    new TestResult(0, -26130242.436351157631251931791m), // 15 / 11
-	    new TestResult(0, 18672966748175371201221341.455m), // 15 / 12
-	    new TestResult(0, -35574.814663942145387025413585m), // 15 / 13
-	    new TestResult(0, 63.926135612238008074953534656m), // 15 / 14
-	    new TestResult(0, 1m), // 15 / 15
-	    new TestResult(0, -33828674946800228646.235978357m), // 15 / 16
-	    new TestResult(0, 582343753.18886100200299543357m), // 15 / 17
-	    new TestResult(0, -2.676188208672362394790189458m), // 15 / 18
-	    new TestResult(2, 0.1385787512311916118536189686m), // 15 / 19
-	    new TestResult(0, 2011777726397049.7148998294303m), // 15 / 20
-	    new TestResult(0, 34265701650179.633435597272951m), // 15 / 21
-	    new TestResult(0, -2229639735192.3415269889385254m), // 15 / 22
-	    new TestResult(0, 32205636025.393565317814400562m), // 15 / 23
-	    new TestResult(0, -27779065870.252746877787654023m), // 15 / 24
-	    new TestResult(0, 23394800.463191857206004010592m), // 15 / 25
-	    new TestResult(0, -334.92478013993600679391750784m), // 15 / 26
-	    new TestResult(0, -1824.480342998389574945394373m), // 15 / 27
-	    new TestResult(2, 0.0137270559699701534233028604m), // 15 / 28
-	    new TestResult(0, -2850849073527704.1131980257228m), // 15 / 29
-	    new TestResult(3, 0m), // 16 / 0
-	    new TestResult(0, -421123.30446308691436596648186m), // 16 / 1
-	    new TestResult(0, 421123.30446308691436596648186m), // 16 / 2
-	    new TestResult(0, -210561.65223154345718298324093m), // 16 / 3
-	    new TestResult(0, -42112.330446308691436596648186m), // 16 / 4
-	    new TestResult(0, -4211233.0446308691436596648186m), // 16 / 5
-	    new TestResult(2, -5.3153E-24m), // 16 / 6
-	    new TestResult(2, 5.3153E-24m), // 16 / 7
-	    new TestResult(2, -1.52011951E-20m), // 16 / 8
-	    new TestResult(2, 0.1314426870900784765046305445m), // 16 / 9
-	    new TestResult(2, 8.6888899697E-18m), // 16 / 10
-	    new TestResult(2, 7.724287894055618E-13m), // 16 / 11
-	    new TestResult(0, -551986.34819545603591091806686m), // 16 / 12
-	    new TestResult(2, 1.0516171478749E-15m), // 16 / 13
-	    new TestResult(2, -1.8897026181E-18m), // 16 / 14
-	    new TestResult(2, -2.95607204E-20m), // 16 / 15
-	    new TestResult(0, 1m), // 16 / 16
-	    new TestResult(2, -1.72145008370758982E-11m), // 16 / 17
-	    new TestResult(2, 7.91100512E-20m), // 16 / 18
-	    new TestResult(2, -4.0964877E-21m), // 16 / 19
-	    new TestResult(2, -5.94695987815313124908788E-05m), // 16 / 20
-	    new TestResult(2, -1.012918824165199591208E-06m), // 16 / 21
-	    new TestResult(2, 6.59097566989758101184E-08m), // 16 / 22
-	    new TestResult(2, -9.520218003229776933E-10m), // 16 / 23
-	    new TestResult(2, 8.211691978458736692E-10m), // 16 / 24
-	    new TestResult(2, -6.915671541963459E-13m), // 16 / 25
-	    new TestResult(2, 9.9006177649E-18m), // 16 / 26
-	    new TestResult(2, 5.39329532081E-17m), // 16 / 27
-	    new TestResult(2, -4.057817E-22m), // 16 / 28
-	    new TestResult(2, 8.42731522299060351340978E-05m), // 16 / 29
-	    new TestResult(3, 0m), // 17 / 0
-	    new TestResult(0, 24463288738299545.200508898642m), // 17 / 1
-	    new TestResult(0, -24463288738299545.200508898642m), // 17 / 2
-	    new TestResult(0, 12231644369149772.600254449321m), // 17 / 3
-	    new TestResult(0, 2446328873829954.5200508898642m), // 17 / 4
-	    new TestResult(0, 244632887382995452.00508898642m), // 17 / 5
-	    new TestResult(2, 3.087701135804474E-13m), // 17 / 6
-	    new TestResult(2, -3.087701135804474E-13m), // 17 / 7
-	    new TestResult(2, 8.830459389222225669E-10m), // 17 / 8
-	    new TestResult(0, -7635579348.7187565660747357791m), // 17 / 9
-	    new TestResult(2, -5.047424872722036356353E-07m), // 17 / 10
-	    new TestResult(2, -0.0448708212173039475800037318m), // 17 / 11
-	    new TestResult(0, 32065196279558108.529140993113m), // 17 / 12
-	    new TestResult(2, -6.10890294076955781848965E-05m), // 17 / 13
-	    new TestResult(2, 1.097738840026777145636E-07m), // 17 / 14
-	    new TestResult(2, 1.7171988100225883459E-09m), // 17 / 15
-	    new TestResult(0, -58090560363.286299748647320613m), // 17 / 16
-	    new TestResult(0, 1m), // 17 / 17
-	    new TestResult(2, -4.5955472073286630491E-09m), // 17 / 18
-	    new TestResult(2, 2.379672667086185355E-10m), // 17 / 19
-	    new TestResult(0, 3454622.3177989620890093190782m), // 17 / 20
-	    new TestResult(0, 58841.022098277508341771781449m), // 17 / 21
-	    new TestResult(0, -3828.7347000513678647353825371m), // 17 / 22
-	    new TestResult(0, 55.303479858826432190514052161m), // 17 / 23
-	    new TestResult(0, -47.702178855937114485246771806m), // 17 / 24
-	    new TestResult(2, 0.0401735235161089558399723624m), // 17 / 25
-	    new TestResult(2, -5.751324339033751411128E-07m), // 17 / 26
-	    new TestResult(2, -3.1329954739064384030107E-06m), // 17 / 27
-	    new TestResult(2, 2.35720841767462147E-11m), // 17 / 28
-	    new TestResult(0, -4895474.6366157719700764456737m), // 17 / 29
-	    new TestResult(3, 0m), // 18 / 0
-	    new TestResult(0, -5323259153836385912697776.001m), // 18 / 1
-	    new TestResult(0, 5323259153836385912697776.001m), // 18 / 2
-	    new TestResult(0, -2661629576918192956348888.0005m), // 18 / 3
-	    new TestResult(0, -532325915383638591269777.6001m), // 18 / 4
-	    new TestResult(0, -53232591538363859126977760.01m), // 18 / 5
-	    new TestResult(2, -6.71889765571425396685425E-05m), // 18 / 6
-	    new TestResult(2, 6.71889765571425396685425E-05m), // 18 / 7
-	    new TestResult(2, -0.1921525117866271842350897941m), // 18 / 8
-	    new TestResult(2, 1661516899781174928.9093780261m), // 18 / 9
-	    new TestResult(2, 109.83294578440517035615430815m), // 18 / 10
-	    new TestResult(0, 9763977.866606841461047851247m), // 18 / 11
-	    new TestResult(0, -6977449002900619940294072.5616m), // 18 / 12
-	    new TestResult(2, 13293.091475651689504900168879m), // 18 / 13
-	    new TestResult(2, -23.887010414694002921991680138m), // 18 / 14
-	    new TestResult(2, -0.3736657970315521134142448751m), // 18 / 15
-	    new TestResult(2, 12640618786517406225.453062932m), // 18 / 16
-	    new TestResult(2, -217601942.68166121398235985303m), // 18 / 17
-	    new TestResult(0, 1m), // 18 / 18
-	    new TestResult(2, -0.0517821395304403973786481636m), // 18 / 19
-	    new TestResult(0, -751732527584477.35915419894761m), // 18 / 20
-	    new TestResult(2, -12803920717959.743225565448731m), // 18 / 21
-	    new TestResult(2, 833140108743.8650907762143944m), // 18 / 22
-	    new TestResult(2, -12034144654.336754703603784598m), // 18 / 23
-	    new TestResult(2, 10380086789.199979490407779016m), // 18 / 24
-	    new TestResult(2, -8741836.761472709884309939817m), // 18 / 25
-	    new TestResult(2, 125.14993491660654415586289072m), // 18 / 26
-	    new TestResult(0, 681.74590153489282094280759828m), // 18 / 27
-	    new TestResult(2, -0.0051293313099156230719389272m), // 18 / 28
-	    new TestResult(2, 1065264791276391.4723331595476m), // 18 / 29
-	    new TestResult(3, 0m), // 19 / 0
-	    new TestResult(0, 102801066199805834724673169.19m), // 19 / 1
-	    new TestResult(0, -102801066199805834724673169.19m), // 19 / 2
-	    new TestResult(0, 51400533099902917362336584.595m), // 19 / 3
-	    new TestResult(0, 10280106619980583472467316.919m), // 19 / 4
-	    new TestResult(0, 1028010661998058347246731691.9m), // 19 / 5
-	    new TestResult(2, 0.0012975318742410238535080931m), // 19 / 6
-	    new TestResult(2, -0.0012975318742410238535080931m), // 19 / 7
-	    new TestResult(0, 3.7107874168403053465719309061m), // 19 / 8
-	    new TestResult(0, -32086679207305516282.844795417m), // 19 / 9
-	    new TestResult(0, -2121.0584726774239906503858037m), // 19 / 10
-	    new TestResult(0, -188558795.66094477019222763757m), // 19 / 11
-	    new TestResult(0, 134746247763650063417846672.74m), // 19 / 12
-	    new TestResult(0, -256711.90097962787395549999647m), // 19 / 13
-	    new TestResult(0, 461.29825131408293475234811789m), // 19 / 14
-	    new TestResult(0, 7.2161135175168023022995955438m), // 19 / 15
-	    new TestResult(0, -244111558563287122929.04506056m), // 19 / 16
-	    new TestResult(0, 4202258629.2276083227657702227m), // 19 / 17
-	    new TestResult(0, -19.311677908019711128996883838m), // 19 / 18
-	    new TestResult(0, 1m), // 19 / 19
-	    new TestResult(0, 14517216445692969.517326696553m), // 19 / 20
-	    new TestResult(0, 247265192865059.0518154425151m), // 19 / 21
-	    new TestResult(0, -16089333432314.039236231362245m), // 19 / 22
-	    new TestResult(0, 232399525463.06860877964908684m), // 19 / 23
-	    new TestResult(0, -200456892730.3205001486617745m), // 19 / 24
-	    new TestResult(0, 168819535.86204710848979659043m), // 19 / 25
-	    new TestResult(0, -2416.8552333191352676140967438m), // 19 / 26
-	    new TestResult(0, -13165.657265554370962757268367m), // 19 / 27
-	    new TestResult(2, 0.0990559941406113443335355768m), // 19 / 28
-	    new TestResult(0, -20572050535883517.889932557941m), // 19 / 29
-	    new TestResult(3, 0m), // 20 / 0
-	    new TestResult(0, 7081320760.3793287174700927968m), // 20 / 1
-	    new TestResult(0, -7081320760.3793287174700927968m), // 20 / 2
-	    new TestResult(0, 3540660380.1896643587350463984m), // 20 / 3
-	    new TestResult(0, 708132076.03793287174700927968m), // 20 / 4
-	    new TestResult(0, 70813207603.793287174700927968m), // 20 / 5
-	    new TestResult(2, 8.93788337E-20m), // 20 / 6
-	    new TestResult(2, -8.93788337E-20m), // 20 / 7
-	    new TestResult(2, 2.556128739088E-16m), // 20 / 8
-	    new TestResult(0, -2210.250107335496183875574735m), // 20 / 9
-	    new TestResult(2, -1.461064165166945E-13m), // 20 / 10
-	    new TestResult(2, -1.2988632935681496171E-08m), // 20 / 11
-	    new TestResult(2, 9281823982.422412820396304075m), // 20 / 12
-	    new TestResult(2, -1.76832729566273202E-11m), // 20 / 13
-	    new TestResult(2, 3.17759436211301E-14m), // 20 / 14
-	    new TestResult(2, 4.970728062443E-16m), // 20 / 15
-	    new TestResult(2, -16815.314387332923907118773285m), // 20 / 16
-	    new TestResult(2, 2.894672435964370128732E-07m), // 20 / 17
-	    new TestResult(2, -1.3302603829227E-15m), // 20 / 18
-	    new TestResult(2, 6.88837287603E-17m), // 20 / 19
-	    new TestResult(0, 1m), // 20 / 20
-	    new TestResult(2, 0.0170325484771854288433021822m), // 20 / 21
-	    new TestResult(2, -0.0011082932800859005017661851m), // 20 / 22
-	    new TestResult(2, 1.60085458760255588702037E-05m), // 20 / 23
-	    new TestResult(2, -1.38082182269723557757959E-05m), // 20 / 24
-	    new TestResult(2, 1.16289191177647018971E-08m), // 20 / 25
-	    new TestResult(2, -1.6648200034492E-13m), // 20 / 26
-	    new TestResult(2, -9.068995640318096E-13m), // 20 / 27
-	    new TestResult(2, 6.8233462325E-18m), // 20 / 28
-	    new TestResult(2, -1.4170795491574366313541174399m), // 20 / 29
-	    new TestResult(3, 0m), // 21 / 0
-	    new TestResult(0, 415752273939.77704245656837041m), // 21 / 1
-	    new TestResult(0, -415752273939.77704245656837041m), // 21 / 2
-	    new TestResult(2, 207876136969.8885212282841852m), // 21 / 3
-	    new TestResult(0, 41575227393.977704245656837041m), // 21 / 4
-	    new TestResult(0, 4157522739397.7704245656837041m), // 21 / 5
-	    new TestResult(2, 5.2475314427E-18m), // 21 / 6
-	    new TestResult(2, -5.2475314427E-18m), // 21 / 7
-	    new TestResult(2, 1.50073181503771E-14m), // 21 / 8
-	    new TestResult(2, -129766.25959973387113808743405m), // 21 / 9
-	    new TestResult(2, -8.5780713738991847E-12m), // 21 / 10
-	    new TestResult(2, -7.625771887911763590261E-07m), // 21 / 11
-	    new TestResult(0, 544946282986.07977368508338172m), // 21 / 12
-	    new TestResult(2, -1.0382047630930577807E-09m), // 21 / 13
-	    new TestResult(2, 1.8656012436244067E-12m), // 21 / 14
-	    new TestResult(2, 2.91837012476515E-14m), // 21 / 15
-	    new TestResult(2, -987245.9432513294606844938685m), // 21 / 16
-	    new TestResult(2, 1.69949461164997956913075E-05m), // 21 / 17
-	    new TestResult(2, -7.81010771643817E-14m), // 21 / 18
-	    new TestResult(2, 4.0442408752037E-15m), // 21 / 19
-	    new TestResult(0, 58.711120143850993772970798576m), // 21 / 20
-	    new TestResult(0, 1m), // 21 / 21
-	    new TestResult(2, -0.0650691399217460043995169619m), // 21 / 22
-	    new TestResult(2, 0.0009398796602556869430220663m), // 21 / 23
-	    new TestResult(2, -0.0008106959592962871308194687m), // 21 / 24
-	    new TestResult(2, 6.827468674662091164433E-07m), // 21 / 25
-	    new TestResult(2, -9.7743447240392408E-12m), // 21 / 26
-	    new TestResult(2, -5.32450892622776623E-11m), // 21 / 27
-	    new TestResult(2, 4.006063004374E-16m), // 21 / 28
-	    new TestResult(2, -83.19832766397646235747803502m), // 21 / 29
-	    new TestResult(3, 0m), // 22 / 0
-	    new TestResult(0, -6389392489892.6362673670820462m), // 22 / 1
-	    new TestResult(0, 6389392489892.6362673670820462m), // 22 / 2
-	    new TestResult(0, -3194696244946.3181336835410231m), // 22 / 3
-	    new TestResult(0, -638939248989.26362673670820462m), // 22 / 4
-	    new TestResult(0, -63893924898926.362673670820462m), // 22 / 5
-	    new TestResult(2, -8.06454710942E-17m), // 22 / 6
-	    new TestResult(2, 8.06454710942E-17m), // 22 / 7
-	    new TestResult(2, -2.306364917136659E-13m), // 22 / 8
-	    new TestResult(2, 1994282.6930829954142428134453m), // 22 / 9
-	    new TestResult(2, 1.31830102322167113E-10m), // 22 / 10
-	    new TestResult(2, 1.17194908324940723524544E-05m), // 22 / 11
-	    new TestResult(2, -8374880682938.911591614017805m), // 22 / 12
-	    new TestResult(2, 1.59554093436863052632E-08m), // 22 / 13
-	    new TestResult(2, -2.8671060442293101E-11m), // 22 / 14
-	    new TestResult(2, -4.485029505960676E-13m), // 22 / 15
-	    new TestResult(2, 15172260.52839517272431927284m), // 22 / 16
-	    new TestResult(2, -0.0002611828915663923103773216m), // 22 / 17
-	    new TestResult(2, 1.2002783079399592E-12m), // 22 / 18
-	    new TestResult(2, -6.21529788171079E-14m), // 22 / 19
-	    new TestResult(2, -902.2882462325251912660653119m), // 22 / 20
-	    new TestResult(2, -15.368268294350108200187006165m), // 22 / 21
-	    new TestResult(0, 1m), // 22 / 22
-	    new TestResult(2, -0.0144443227832120251558802997m), // 22 / 23
-	    new TestResult(2, 0.0124589930076108753677011728m), // 22 / 24
-	    new TestResult(2, -1.04926370363477969575619E-05m), // 22 / 25
-	    new TestResult(2, 1.50214752120500522E-10m), // 22 / 26
-	    new TestResult(2, 8.182848171393031905E-10m), // 22 / 27
-	    new TestResult(2, -6.156625105529E-15m), // 22 / 28
-	    new TestResult(2, 1278.6142211812409691677177837m), // 22 / 29
-	    new TestResult(3, 0m), // 23 / 0
-	    new TestResult(0, 442346282742915.0596416330681m), // 23 / 1
-	    new TestResult(0, -442346282742915.0596416330681m), // 23 / 2
-	    new TestResult(0, 221173141371457.52982081653405m), // 23 / 3
-	    new TestResult(0, 44234628274291.50596416330681m), // 23 / 4
-	    new TestResult(0, 4423462827429150.596416330681m), // 23 / 5
-	    new TestResult(2, 5.5831950244116E-15m), // 23 / 6
-	    new TestResult(2, -5.5831950244116E-15m), // 23 / 7
-	    new TestResult(2, 1.59672762216117307E-11m), // 23 / 8
-	    new TestResult(0, -138066887.80181919317571960944m), // 23 / 9
-	    new TestResult(2, -9.1267762636395250963E-09m), // 23 / 10
-	    new TestResult(2, -0.0008113561991369439495762269m), // 23 / 11
-	    new TestResult(0, 579804315413987.55317875373327m), // 23 / 12
-	    new TestResult(2, -1.104614566093091384748E-06m), // 23 / 13
-	    new TestResult(2, 1.9849362876061009571E-09m), // 23 / 14
-	    new TestResult(2, 3.10504658008156699E-11m), // 23 / 15
-	    new TestResult(2, -1050396114.5225303515983863327m), // 23 / 16
-	    new TestResult(2, 0.018082044792709369766201304m), // 23 / 17
-	    new TestResult(2, -8.30968904499273382E-11m), // 23 / 18
-	    new TestResult(2, 4.3029347758238576E-12m), // 23 / 19
-	    new TestResult(0, 62466.635492334295970467255163m), // 23 / 20
-	    new TestResult(2, 1063.9659972298557739709718754m), // 23 / 21
-	    new TestResult(0, -69.231352345729507070036842909m), // 23 / 22
-	    new TestResult(0, 1m), // 23 / 23
-	    new TestResult(2, -0.8625529347828887027197930493m), // 23 / 24
-	    new TestResult(2, 0.000726419451699245356034835m), // 23 / 25
-	    new TestResult(2, -1.03995704315807902618E-08m), // 23 / 26
-	    new TestResult(2, -5.66509644945319386873E-08m), // 23 / 27
-	    new TestResult(2, 4.262314819414408E-13m), // 23 / 28
-	    new TestResult(0, -88520.19166085901375500091819m), // 23 / 29
-	    new TestResult(3, 0m), // 24 / 0
-	    new TestResult(0, -512833780867323.89020837443764m), // 24 / 1
-	    new TestResult(0, 512833780867323.89020837443764m), // 24 / 2
-	    new TestResult(0, -256416890433661.94510418721882m), // 24 / 3
-	    new TestResult(0, -51283378086732.389020837443764m), // 24 / 4
-	    new TestResult(0, -5128337808673238.9020837443764m), // 24 / 5
-	    new TestResult(2, -6.4728723296466E-15m), // 24 / 6
-	    new TestResult(2, 6.4728723296466E-15m), // 24 / 7
-	    new TestResult(2, -1.85116478974485417E-11m), // 24 / 8
-	    new TestResult(0, 160067727.13209967231293920454m), // 24 / 9
-	    new TestResult(2, 1.05811201789450821647E-08m), // 24 / 10
-	    new TestResult(2, 0.0009406451087447388135269385m), // 24 / 11
-	    new TestResult(0, -672195632329427.78049892650167m), // 24 / 12
-	    new TestResult(2, 1.280633943203881720602E-06m), // 24 / 13
-	    new TestResult(2, -2.3012341707535026743E-09m), // 24 / 14
-	    new TestResult(2, -3.59983307095596564E-11m), // 24 / 15
-	    new TestResult(2, 1217775828.2011100471829103026m), // 24 / 16
-	    new TestResult(2, -0.0209634030139388041036175456m), // 24 / 17
-	    new TestResult(2, 9.63383081768117492E-11m), // 24 / 18
-	    new TestResult(2, -4.988603716138233E-12m), // 24 / 19
-	    new TestResult(0, -72420.639908967018993409156115m), // 24 / 20
-	    new TestResult(2, -1233.5080599982704934889448056m), // 24 / 21
-	    new TestResult(2, 80.26330855062892819843621147m), // 24 / 22
-	    new TestResult(0, -1.1593491363538259770624590073m), // 24 / 23
-	    new TestResult(0, 1m), // 24 / 24
-	    new TestResult(2, -0.0008421737639581399076256596m), // 24 / 25
-	    new TestResult(2, 1.20567329983039744731E-08m), // 24 / 26
-	    new TestResult(2, 6.56782467603468627053E-08m), // 24 / 27
-	    new TestResult(2, -4.941511004756208E-13m), // 24 / 28
-	    new TestResult(2, 102625.80775189204591883200668m), // 24 / 29
-	    new TestResult(3, 0m), // 25 / 0
-	    new TestResult(0, 608940580690915704.1450897514m), // 25 / 1
-	    new TestResult(0, -608940580690915704.1450897514m), // 25 / 2
-	    new TestResult(0, 304470290345457852.0725448757m), // 25 / 3
-	    new TestResult(0, 60894058069091570.41450897514m), // 25 / 4
-	    new TestResult(0, 6089405806909157041.450897514m), // 25 / 5
-	    new TestResult(2, 7.6859106833543095E-12m), // 25 / 6
-	    new TestResult(2, -7.6859106833543095E-12m), // 25 / 7
-	    new TestResult(2, 2.19807938571316735336E-08m), // 25 / 8
-	    new TestResult(2, -190064965191.73899284873850192m), // 25 / 9
-	    new TestResult(2, -1.2564058192949139177057E-05m), // 25 / 10
-	    new TestResult(2, -1.1169252106878663178369471734m), // 25 / 11
-	    new TestResult(2, 798167386704341861.9682340376m), // 25 / 12
-	    new TestResult(2, -0.0015206291124352045188095451m), // 25 / 13
-	    new TestResult(2, 2.7324933039209294299951E-06m), // 25 / 14
-	    new TestResult(2, 4.27445406757517405142E-08m), // 25 / 15
-	    new TestResult(0, -1445991172270.2862199666258075m), // 25 / 16
-	    new TestResult(2, 24.892016245451201449485802529m), // 25 / 17
-	    new TestResult(2, -1.143924357415629812325E-07m), // 25 / 18
-	    new TestResult(2, 5.9234850687965514433E-09m), // 25 / 19
-	    new TestResult(2, 85992514.8565500475609760009m), // 25 / 20
-	    new TestResult(2, 1464671.6779692768786214751455m), // 25 / 21
-	    new TestResult(2, -95304.9263532013818698238713m), // 25 / 22
-	    new TestResult(2, 1376.6151190758908669955780933m), // 25 / 23
-	    new TestResult(2, -1187.4034110254054607086172841m), // 25 / 24
-	    new TestResult(0, 1m), // 25 / 25
-	    new TestResult(2, -1.43162058880087033607313E-05m), // 25 / 26
-	    new TestResult(2, -7.79865742334041504368931E-05m), // 25 / 27
-	    new TestResult(2, 5.867567022667099857E-10m), // 25 / 28
-	    new TestResult(2, -121858234.18383411295432055833m), // 25 / 29
-	    new TestResult(3, 0m), // 26 / 0
-	    new TestResult(0, -42535053313319986966115.037787m), // 26 / 1
-	    new TestResult(0, 42535053313319986966115.037787m), // 26 / 2
-	    new TestResult(2, -21267526656659993483057.518894m), // 26 / 3
-	    new TestResult(0, -4253505331331998696611.5037787m), // 26 / 4
-	    new TestResult(0, -425350533133199869661150.37787m), // 26 / 5
-	    new TestResult(2, -5.368678505659136383798E-07m), // 26 / 6
-	    new TestResult(2, 5.368678505659136383798E-07m), // 26 / 7
-	    new TestResult(2, -0.0015353784395866262203076433m), // 26 / 8
-	    new TestResult(2, 13276210657946598.343741130625m), // 26 / 9
-	    new TestResult(2, 0.8776108901502200170717671109m), // 26 / 10
-	    new TestResult(0, 78018.241664392812128305230978m), // 26 / 11
-	    new TestResult(0, -55752717790464947101601.359896m), // 26 / 12
-	    new TestResult(2, 106.21732631750483463727976216m), // 26 / 13
-	    new TestResult(2, -0.1908671421252521905897157731m), // 26 / 14
-	    new TestResult(2, -0.0029857450367876236635795704m), // 26 / 15
-	    new TestResult(2, 101003798323510611.65980529603m), // 26 / 16
-	    new TestResult(0, -1738729.9707879186275737174853m), // 26 / 17
-	    new TestResult(2, 0.0079904156615530673319808542m), // 26 / 18
-	    new TestResult(2, -0.0004137608186927571471957746m), // 26 / 19
-	    new TestResult(0, -6006655361709.8810944800037905m), // 26 / 20
-	    new TestResult(2, -102308648634.06932650747319597m), // 26 / 21
-	    new TestResult(0, 6657135773.1750052361186583781m), // 26 / 22
-	    new TestResult(2, -96157817.91940752862823678187m), // 26 / 23
-	    new TestResult(2, 82941208.04870360868726566113m), // 26 / 24
-	    new TestResult(0, -69850.909369611886817979504214m), // 26 / 25
-	    new TestResult(0, 1m), // 26 / 26
-	    new TestResult(0, 5.4474331288240229212686639513m), // 26 / 27
-	    new TestResult(2, -4.09854892320443047650146E-05m), // 26 / 28
-	    new TestResult(0, 8511908471915.937756062101659m), // 26 / 29
-	    new TestResult(3, 0m), // 27 / 0
-	    new TestResult(0, -7808274522591953107485.8812311m), // 27 / 1
-	    new TestResult(0, 7808274522591953107485.8812311m), // 27 / 2
-	    new TestResult(2, -3904137261295976553742.9406156m), // 27 / 3
-	    new TestResult(0, -780827452259195310748.58812311m), // 27 / 4
-	    new TestResult(0, -78082745225919531074858.812311m), // 27 / 5
-	    new TestResult(2, -9.85542801296968307756E-08m), // 27 / 6
-	    new TestResult(2, 9.85542801296968307756E-08m), // 27 / 7
-	    new TestResult(2, -0.000281853563555002197999826m), // 27 / 8
-	    new TestResult(2, 2437149817901964.8960845694514m), // 27 / 9
-	    new TestResult(2, 0.1611053994415304138070003376m), // 27 / 10
-	    new TestResult(2, 14322.019163773595213651372685m), // 27 / 11
-	    new TestResult(2, -10234676860090376638967.506512m), // 27 / 12
-	    new TestResult(2, 19.498601232106311831598265533m), // 27 / 13
-	    new TestResult(2, -0.0350379963574616786880617938m), // 27 / 14
-	    new TestResult(2, -0.0005481012737887758520091497m), // 27 / 15
-	    new TestResult(2, 18541539828927654.501195934005m), // 27 / 16
-	    new TestResult(2, -319183.3529057512147016471775m), // 27 / 17
-	    new TestResult(2, 0.0014668221660718241029342142m), // 27 / 18
-	    new TestResult(2, -7.59551900698740123366376E-05m), // 27 / 19
-	    new TestResult(2, -1102657934418.1103423727465413m), // 27 / 20
-	    new TestResult(2, -18781074721.729615778535996388m), // 27 / 21
-	    new TestResult(2, 1222068378.9489912725931951927m), // 27 / 22
-	    new TestResult(2, -17651950.128695901472129097893m), // 27 / 23
-	    new TestResult(0, 15225741.38814783974528909088m), // 27 / 24
-	    new TestResult(2, -12822.719933909700245783228909m), // 27 / 25
-	    new TestResult(2, 0.1835726986181246222761380025m), // 27 / 26
-	    new TestResult(0, 1m), // 27 / 27
-	    new TestResult(2, -7.5238168625104611316081E-06m), // 27 / 28
-	    new TestResult(2, 1562554008580.0861321324839011m), // 27 / 29
-	    new TestResult(3, 0m), // 28 / 0
-	    new TestResult(0, 1037807626804273037330059471.7m), // 28 / 1
-	    new TestResult(0, -1037807626804273037330059471.7m), // 28 / 2
-	    new TestResult(0, 518903813402136518665029735.85m), // 28 / 3
-	    new TestResult(0, 103780762680427303733005947.17m), // 28 / 4
-	    new TestResult(0, 10378076268042730373300594717m), // 28 / 5
-	    new TestResult(2, 0.013098973822817421173845813m), // 28 / 6
-	    new TestResult(2, -0.013098973822817421173845813m), // 28 / 7
-	    new TestResult(0, 37.461513046578399246836695461m), // 28 / 8
-	    new TestResult(0, -323924659841968113506.41166762m), // 28 / 9
-	    new TestResult(0, -21412.722077843692663812014719m), // 28 / 10
-	    new TestResult(0, -1903557652.3848013647110715272m), // 28 / 11
-	    new TestResult(0, 1360303825454277040707598638.1m), // 28 / 12
-	    new TestResult(0, -2591583.7118874583629347087379m), // 28 / 13
-	    new TestResult(0, 4656.9443405844146143879311m), // 28 / 14
-	    new TestResult(0, 72.848832421725332869329889807m), // 28 / 15
-	    new TestResult(0, -2464379472248467996678.919247m), // 28 / 16
-	    new TestResult(0, 42423062487.893912564215173398m), // 28 / 17
-	    new TestResult(0, -194.95718634257023426451589779m), // 28 / 18
-	    new TestResult(0, 10.095300225653040883323838635m), // 28 / 19
-	    new TestResult(0, 146555658460058271.30028503504m), // 28 / 20
-	    new TestResult(0, 2496216357326773.3203945609668m), // 28 / 21
-	    new TestResult(0, -162426651429846.93508891542812m), // 28 / 22
-	    new TestResult(0, 2346142981848.9761467960716552m), // 28 / 23
-	    new TestResult(0, -2023672514414.1119557698582125m), // 28 / 24
-	    new TestResult(0, 1704283898.4827658021193146276m), // 28 / 25
-	    new TestResult(0, -24398.879182297399040382596287m), // 28 / 26
-	    new TestResult(0, -132911.26276382163838029345835m), // 28 / 27
-	    new TestResult(0, 1m), // 28 / 28
-	    new TestResult(0, -207681026417050638.7817636979m), // 28 / 29
-	    new TestResult(3, 0m), // 29 / 0
-	    new TestResult(0, -4997122966.448652425771563042m), // 29 / 1
-	    new TestResult(0, 4997122966.448652425771563042m), // 29 / 2
-	    new TestResult(0, -2498561483.224326212885781521m), // 29 / 3
-	    new TestResult(0, -499712296.6448652425771563042m), // 29 / 4
-	    new TestResult(0, -49971229664.48652425771563042m), // 29 / 5
-	    new TestResult(2, -6.30725591E-20m), // 29 / 6
-	    new TestResult(2, 6.30725591E-20m), // 29 / 7
-	    new TestResult(2, -1.803800457503E-16m), // 29 / 8
-	    new TestResult(0, 1559.7219709011119254589559305m), // 29 / 9
-	    new TestResult(2, 1.031038918059089E-13m), // 29 / 10
-	    new TestResult(2, 9.1657754452841005337E-09m), // 29 / 11
-	    new TestResult(0, -6549966787.6381215871101448624m), // 29 / 12
-	    new TestResult(2, 1.24786734570697837E-11m), // 29 / 13
-	    new TestResult(2, -2.24235425880102E-14m), // 29 / 14
-	    new TestResult(2, -3.507726905944E-16m), // 29 / 15
-	    new TestResult(2, 11866.175330334086443056587349m), // 29 / 16
-	    new TestResult(2, -2.042702851569255038994E-07m), // 29 / 17
-	    new TestResult(2, 9.387337384931E-16m), // 29 / 18
-	    new TestResult(2, -4.86096414286E-17m), // 29 / 19
-	    new TestResult(2, -0.705676685966272906628710787m), // 29 / 20
-	    new TestResult(2, -0.0120194723629401016807892544m), // 29 / 21
-	    new TestResult(2, 0.0007820967289697085504718691m), // 29 / 22
-	    new TestResult(2, -1.1296857600932761513324E-05m), // 29 / 23
-	    new TestResult(2, 9.7441376775089367720444E-06m), // 29 / 24
-	    new TestResult(2, -8.2062571043940289217E-09m), // 29 / 25
-	    new TestResult(2, 1.17482466276439E-13m), // 29 / 26
-	    new TestResult(2, 6.399778788502251E-13m), // 29 / 27
-	    new TestResult(2, -4.8150763565E-18m), // 29 / 28
-	    new TestResult(0, 1m), // 29 / 29
-        };
-
-        #endregion
-    }
-}
+// DecimalTest.cs - NUnit Test Cases for the System.Decimal struct
+//
+// Author: Martin Weindel (martin.weindel@t-online.de)
+//
+// (C) Martin Weindel, 2001
+// 
+
+using NUnit.Framework;
+using System;
+using System.Globalization;
+using System.Runtime.CompilerServices;
+
+namespace MonoTests.System
+{
+
+    public enum TestResultInfo
+    {
+        Ok = 0,
+        Overflow = 1,
+        ReverseRound = 2,
+        DivideByZero = 3,
+        ReverseOverflow = 4
+    }
+
+    public struct TestResult
+    {
+        public TestResult(int i, decimal v)
+        {
+            info = (TestResultInfo) i;
+            val = v;
+        }
+
+        public TestResultInfo info;
+        public decimal val;
+    }
+
+
+    /// <summary>
+    /// Tests for System.Decimal
+    /// </summary>
+    [TestFixture]
+    public class DecimalTest2
+    {
+        private void ReportOpError(string msg, int i, int j, decimal d1, decimal d2, decimal d3, decimal d3b)
+        {
+		decimal delta = 0;
+		try {
+			delta = d3 - d3b;
+		} catch (Exception e) {
+			Assert.Fail ("ReportOpError: Unexpected exception on " + d3 + " - " + d3b + ". e:" + e);
+		}
+		Assert.Fail ("*** " + msg + " for d1=" + d1 + " i=" + i + " d2=" + d2 + " j=" + j + " d3=" + d3 + " d3b=" + d3b + "\n"
+			+ "is:" + d3 +  "  must be:" + d3b + "  delta=" + (delta) + " == " + (d3 == d3b));
+        }
+
+	[Test]
+	     
+        public void TestCompare()
+        {
+            const int size = 14;
+            decimal[] data = new decimal[size] {
+                0m,	1m, -1m, 2m, 10m, 0.1m, 0.11m,
+                79228162514264337593543950335m,
+                -79228162514264337593543950335m,
+                27703302467091960609331879.532m,
+                -3203854.9559968181492513385018m,
+                -3203854.9559968181492513385017m,
+                -48466870444188873796420.0286m,
+                -48466870444188873796420.02860m
+            };
+
+            short[,] cmpTable = new short[size,size] {
+                {0,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,1,1},
+                {1,0,1,-1,-1,1,1,-1,1,-1,1,1,1,1},
+                {-1,-1,0,-1,-1,-1,-1,-1,1,-1,1,1,1,1},
+                {1,1,1,0,-1,1,1,-1,1,-1,1,1,1,1},
+                {1,1,1,1,0,1,1,-1,1,-1,1,1,1,1},
+                {1,-1,1,-1,-1,0,-1,-1,1,-1,1,1,1,1},
+                {1,-1,1,-1,-1,1,0,-1,1,-1,1,1,1,1},
+                {1,1,1,1,1,1,1,0,1,1,1,1,1,1},
+                {-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1},
+                {1,1,1,1,1,1,1,-1,1,0,1,1,1,1},
+                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,0,-1,1,1},
+                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,0,1,1},
+                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,0,0},
+                {-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,0,0}
+            };
+
+            for (int i = 0; i < size; i++) 
+            {
+                Decimal d1 = data[i];
+                for (int j = 0; j < size; j++) 
+                {
+                    Assert.IsTrue (cmpTable[i,j] == -cmpTable[j,i]);
+                    int x = cmpTable[i,j];
+                    Decimal d2 = data[j];
+
+                    int y = Decimal.Compare(d1, d2);
+                    if (y < 0) y = -1;
+                    else if (y > 0) y = 1;
+                    Assert.IsTrue (x == y);
+
+                    y = d1.CompareTo(d2);
+                    if (y < 0) y = -1;
+                    else if (y > 0) y = 1;
+                    Assert.IsTrue (x == y);
+
+                    bool b = d1 < d2;
+                    if (x != -1) b = !b;
+                    Assert.IsTrue (b);
+
+                    b = d1 <= d2;
+                    if (x == 1) b = !b;
+                    Assert.IsTrue (b);
+
+                    b = d1 >= d2;
+                    if (x == -1) b = !b;
+                    Assert.IsTrue (b);
+
+                    b = d1 > d2;
+                    if (x != 1) b = !b;
+                    Assert.IsTrue (b);
+
+                    b = d1 == d2;
+                    if (x != 0) b = !b;
+                    Assert.IsTrue (b);
+
+                    b = d1.Equals(d2);
+                    if (x != 0) b = !b;
+                    Assert.IsTrue (b);
+
+                    b = Decimal.Equals(d1, d2);
+                    if (x != 0) b = !b;
+                    Assert.IsTrue (b);
+                }
+            }
+        }
+
+        private bool AreNotEqual(Decimal v1, Decimal v2)
+        {
+            return v1 != v2;
+        }
+
+	[Test]
+	     
+        public void TestRemainder()
+        {
+            Assert.IsTrue ((decimal)Decimal.Remainder(3.6m, 1.3m) == 1.0m);
+            decimal res = 24420760848422211464106753m;
+            decimal remainder = Decimal.Remainder(79228162514264337593543950335m, 27703302467091960609331879.53200m);
+            if (AreNotEqual (res, remainder))
+                Assert.AreEqual (res, remainder, "A02");
+
+            Assert.IsTrue ((decimal)Decimal.Remainder(45937986975432m, 43987453m)
+                == 42334506m);
+            Assert.IsTrue ((decimal)Decimal.Remainder(45937986975000m, 5000m)
+                == 0m);
+            Assert.IsTrue ((decimal)Decimal.Remainder(-54789548973.6234m, 1.3356m) 
+                == -0.1074m);
+        }
+
+	[Test]
+	     
+        public void TestAdd()
+        {
+            decimal[] args = auto_build2;
+            TestResult[] trs = trAuto_Add_build2;
+            int errOverflow = 0;
+            int errOp = 0;
+            int count = args.GetLength(0);
+            int n = 0;
+            for (int i = 0; i < count; i++) 
+            {
+                decimal d1 = args[i];
+                for (int j = 0; j < count; j++, n++) 
+                {
+                    decimal d2 = args[j];
+                    decimal d3 = 0;
+                    decimal d4 = 0;
+                    TestResult tr = trs[n];
+                    try
+                    {
+                        d3 = Decimal.Add(d1, d2);
+                        if (AreNotEqual (d3, tr.val))
+                        {
+                            if (tr.info == TestResultInfo.Overflow)
+                            {
+                                ReportOpError("Add: expected overflow", i, j, d1, d2, d3, tr.val);
+                                errOverflow++;
+                            }
+                            else
+                            {
+                                ReportOpError("Add: result mismatch", i, j, d1, d2, d3, tr.val);
+                                errOp++;
+                            }
+                        }
+                        else if (tr.info == TestResultInfo.Ok)
+                        {
+                            d4 = Decimal.Subtract(d3, d2);
+                            if (AreNotEqual (d4, d1))
+                            {
+                                ReportOpError("Subtract: result mismatch", i, j, d3, d2, d4, d1);
+                                errOp++;
+                            }
+                        }
+                    }
+                    catch (OverflowException)
+                    {
+                        if (tr.info != TestResultInfo.Overflow) 
+                        {
+                            ReportOpError("Add: unexpected overflow", i, j, d1, d2, d3, 0);
+                            errOverflow++;
+                        }
+                    }
+                }
+            }
+
+            if (errOverflow + errOp > 0) 
+            {
+                Assert.Fail ("" + errOp + " wrong additions, " + errOverflow + " wrong overflows");
+            }
+        }
+
+	[Test]
+	     
+        public void TestMult()
+        {
+            decimal[] args = auto_build2;
+            TestResult[] trs = trAuto_Mult_build2;
+            int errOverflow = 0;
+            int errOp = 0;
+            int count = args.GetLength(0);
+            int n = 0;
+            for (int i = 0; i < count; i++) 
+            {
+                decimal d1 = args[i];
+                for (int j = 0; j < count; j++, n++) 
+                {
+                    decimal d2 = args[j];
+                    decimal d3 = 0;
+                    decimal d4 = 0;
+                    TestResult tr = trs[n];
+                    try
+                    {
+                        d3 = Decimal.Multiply(d1, d2);
+                        if (AreNotEqual (d3, tr.val)) 
+                        {
+                            if (tr.info == TestResultInfo.Overflow)
+                            {
+                                ReportOpError("Mult: expected overflow", i, j, d1, d2, d3, tr.val);
+                                errOverflow++;
+                            }
+                            else 
+                            {
+                                ReportOpError("Mult: result mismatch", i, j, d1, d2, d3, tr.val);
+                                errOp++;
+                            }
+                        } 
+                    }
+                    catch (OverflowException)
+                    {
+                        if (tr.info != TestResultInfo.Overflow) 
+                        {
+                            ReportOpError("Mult: unexpected overflow", i, j, d1, d2, d3, 0);
+                            errOverflow++;
+                        }
+                    }
+
+                    if (d2 != 0 && tr.info != TestResultInfo.Overflow)
+                    {
+                        try 
+                        {
+                            d4 = Decimal.Divide(d3, d2);
+                            if (AreNotEqual (d4, d1) && tr.info != TestResultInfo.ReverseRound)
+                            {
+                                ReportOpError("MultDiv: result mismatch", i, j, d3, d2, d4, d1);
+                                errOp++;
+                            }
+                        }
+                        catch (OverflowException)
+                        {
+                            if (tr.info != TestResultInfo.ReverseOverflow) 
+                            {
+                                ReportOpError("MultDiv: unexpected overflow", i, j, d3, d2, d4, d1);
+                                errOverflow++;
+                            }
+                        }
+                    }
+
+                }
+            }
+
+            if (errOverflow + errOp > 0) 
+            {
+                Assert.Fail ("" + errOp + " wrong multiplications, " + errOverflow + " wrong overflows");
+            }
+        }
+
+	// MS 1.x is being less precise than Mono (2 cases). MS 2.0 is correct.
+	// Mono doesn't produce the same result for (i==21/j==3)
+	[Test]
+	     
+        public void TestDiv()
+        {
+            decimal[] args = auto_build2;
+            TestResult[] trs = trAuto_Div_build2;
+            int errOverflow = 0;
+            int errDivideByZero = 0;
+            int errOp = 0;
+            int count = args.GetLength(0);
+            int n = 0;
+            for (int i = 0; i < count; i++) 
+            {
+                decimal d1 = args[i];
+                for (int j = 0; j < count; j++, n++) 
+                {
+                    decimal d2 = args[j];
+                    decimal d3 = 0;
+                    decimal d4 = 0;
+                    TestResult tr = trs[n];
+                    try
+                    {
+                        d3 = Decimal.Divide(d1, d2);
+                        if (AreNotEqual (d3, tr.val)) 
+                        {
+                            if (tr.info == TestResultInfo.Overflow)
+                            {
+                                ReportOpError("Div: expected overflow", i, j, d1, d2, d3, tr.val);
+                                errOverflow++;
+                            }
+                            else if (tr.info == TestResultInfo.DivideByZero)
+                            {
+                                ReportOpError("Div: expected divide by zero", i, j, d1, d2, d3, tr.val);
+                                errDivideByZero++;
+                            }
+                            else 
+                            {
+				    // very small difference 0.00000000000000001 between Mono and MS
+				    if ((i == 21) && (j == 3))
+					    continue;
+				    ReportOpError ("Div: result mismatch", i, j, d1, d2, d3, tr.val);
+				    errOp++;
+			    }
+                        }
+                    }
+                    catch (OverflowException)
+                    {
+                        if (tr.info != TestResultInfo.Overflow) 
+                        {
+                            ReportOpError("Div: unexpected overflow", i, j, d1, d2, d3, 0);
+                            errOverflow++;
+                        }
+                    }
+                    catch (DivideByZeroException)
+                    {
+                        if (tr.info != TestResultInfo.DivideByZero) 
+                        {
+                            ReportOpError("Div: unexpected divide by zero", i, j, d1, d2, d3, 0);
+                            errDivideByZero++;
+                        }
+                    }
+
+                    if (d3 != 0)
+                    {
+                        try
+                        {
+                            d4 = Decimal.Multiply(d3, d2);
+                            if (AreNotEqual(d4, d1) && tr.info != TestResultInfo.ReverseRound)
+                            {
+                                ReportOpError("DivMult: result mismatch", i, j, d3, d2, d4, d1);
+                                errOp++;
+                            }
+                        }
+                        catch (OverflowException)
+                        {
+                            if (tr.info != TestResultInfo.ReverseOverflow) 
+                            {
+                                ReportOpError("DivMult: unexpected overflow", i, j, d3, d2, d4, d1);
+                                errOverflow++;
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (errOverflow + errOp > 0) 
+            {
+                Assert.Fail ("" + errOp + " wrong division, " + errOverflow + " wrong overflows, " + errDivideByZero + " wrong divide by zero, ");
+            }
+        }
+
+        #region Data
+
+
+        // generated argument list build2
+        decimal[] auto_build2 = new decimal[] {
+	    0m, // 0
+	    1m, // 1
+	    -1m, // 2
+	    2m, // 3
+	    10m, // 4
+	    0.1m, // 5
+	    79228162514264337593543950335m, // 6
+	    -79228162514264337593543950335m, // 7
+	    27703302467091960609331879.532m, // 8
+	    -3203854.9559968181492513385018m, // 9
+	    -48466870444188873796420.028868m, // 10
+	    -545193693242804794.30331374676m, // 11
+	    0.7629234053338741809892531431m, // 12
+	    -400453059665371395972.33474452m, // 13
+	    222851627785191714190050.61676m, // 14
+	    14246043379204153213661335.584m, // 15
+	    -421123.30446308691436596648186m, // 16
+	    24463288738299545.200508898642m, // 17
+	    -5323259153836385912697776.001m, // 18
+	    102801066199805834724673169.19m, // 19
+	    7081320760.3793287174700927968m, // 20
+	    415752273939.77704245656837041m, // 21
+	    -6389392489892.6362673670820462m, // 22
+	    442346282742915.0596416330681m, // 23
+	    -512833780867323.89020837443764m, // 24
+	    608940580690915704.1450897514m, // 25
+	    -42535053313319986966115.037787m, // 26
+	    -7808274522591953107485.8812311m, // 27
+	    1037807626804273037330059471.7m, // 28
+	    -4997122966.448652425771563042m, // 29
+        };
+
+
+        // generated result list build2
+        TestResult[] trAuto_Add_build2 = new TestResult[] {
+	    new TestResult(0, 0m), // 0 + 0
+	    new TestResult(0, 1m), // 0 + 1
+	    new TestResult(0, -1m), // 0 + 2
+	    new TestResult(0, 2m), // 0 + 3
+	    new TestResult(0, 10m), // 0 + 4
+	    new TestResult(0, 0.1m), // 0 + 5
+	    new TestResult(0, 79228162514264337593543950335m), // 0 + 6
+	    new TestResult(0, -79228162514264337593543950335m), // 0 + 7
+	    new TestResult(0, 27703302467091960609331879.532m), // 0 + 8
+	    new TestResult(0, -3203854.9559968181492513385018m), // 0 + 9
+	    new TestResult(0, -48466870444188873796420.028868m), // 0 + 10
+	    new TestResult(0, -545193693242804794.30331374676m), // 0 + 11
+	    new TestResult(0, 0.7629234053338741809892531431m), // 0 + 12
+	    new TestResult(0, -400453059665371395972.33474452m), // 0 + 13
+	    new TestResult(0, 222851627785191714190050.61676m), // 0 + 14
+	    new TestResult(0, 14246043379204153213661335.584m), // 0 + 15
+	    new TestResult(0, -421123.30446308691436596648186m), // 0 + 16
+	    new TestResult(0, 24463288738299545.200508898642m), // 0 + 17
+	    new TestResult(0, -5323259153836385912697776.001m), // 0 + 18
+	    new TestResult(0, 102801066199805834724673169.19m), // 0 + 19
+	    new TestResult(0, 7081320760.3793287174700927968m), // 0 + 20
+	    new TestResult(0, 415752273939.77704245656837041m), // 0 + 21
+	    new TestResult(0, -6389392489892.6362673670820462m), // 0 + 22
+	    new TestResult(0, 442346282742915.0596416330681m), // 0 + 23
+	    new TestResult(0, -512833780867323.89020837443764m), // 0 + 24
+	    new TestResult(0, 608940580690915704.1450897514m), // 0 + 25
+	    new TestResult(0, -42535053313319986966115.037787m), // 0 + 26
+	    new TestResult(0, -7808274522591953107485.8812311m), // 0 + 27
+	    new TestResult(0, 1037807626804273037330059471.7m), // 0 + 28
+	    new TestResult(0, -4997122966.448652425771563042m), // 0 + 29
+	    new TestResult(0, 1m), // 1 + 0
+	    new TestResult(0, 2m), // 1 + 1
+	    new TestResult(0, 0m), // 1 + 2
+	    new TestResult(0, 3m), // 1 + 3
+	    new TestResult(0, 11m), // 1 + 4
+	    new TestResult(0, 1.1m), // 1 + 5
+	    new TestResult(1, 0m), // 1 + 6
+	    new TestResult(0, -79228162514264337593543950334m), // 1 + 7
+	    new TestResult(0, 27703302467091960609331880.532m), // 1 + 8
+	    new TestResult(0, -3203853.9559968181492513385018m), // 1 + 9
+	    new TestResult(0, -48466870444188873796419.028868m), // 1 + 10
+	    new TestResult(0, -545193693242804793.30331374676m), // 1 + 11
+	    new TestResult(0, 1.7629234053338741809892531431m), // 1 + 12
+	    new TestResult(0, -400453059665371395971.33474452m), // 1 + 13
+	    new TestResult(0, 222851627785191714190051.61676m), // 1 + 14
+	    new TestResult(0, 14246043379204153213661336.584m), // 1 + 15
+	    new TestResult(0, -421122.30446308691436596648186m), // 1 + 16
+	    new TestResult(0, 24463288738299546.200508898642m), // 1 + 17
+	    new TestResult(0, -5323259153836385912697775.001m), // 1 + 18
+	    new TestResult(0, 102801066199805834724673170.19m), // 1 + 19
+	    new TestResult(0, 7081320761.3793287174700927968m), // 1 + 20
+	    new TestResult(0, 415752273940.77704245656837041m), // 1 + 21
+	    new TestResult(0, -6389392489891.6362673670820462m), // 1 + 22
+	    new TestResult(0, 442346282742916.0596416330681m), // 1 + 23
+	    new TestResult(0, -512833780867322.89020837443764m), // 1 + 24
+	    new TestResult(0, 608940580690915705.1450897514m), // 1 + 25
+	    new TestResult(0, -42535053313319986966114.037787m), // 1 + 26
+	    new TestResult(0, -7808274522591953107484.8812311m), // 1 + 27
+	    new TestResult(0, 1037807626804273037330059472.7m), // 1 + 28
+	    new TestResult(0, -4997122965.448652425771563042m), // 1 + 29
+	    new TestResult(0, -1m), // 2 + 0
+	    new TestResult(0, 0m), // 2 + 1
+	    new TestResult(0, -2m), // 2 + 2
+	    new TestResult(0, 1m), // 2 + 3
+	    new TestResult(0, 9m), // 2 + 4
+	    new TestResult(0, -0.9m), // 2 + 5
+	    new TestResult(0, 79228162514264337593543950334m), // 2 + 6
+	    new TestResult(1, 0m), // 2 + 7
+	    new TestResult(0, 27703302467091960609331878.532m), // 2 + 8
+	    new TestResult(0, -3203855.9559968181492513385018m), // 2 + 9
+	    new TestResult(0, -48466870444188873796421.028868m), // 2 + 10
+	    new TestResult(0, -545193693242804795.30331374676m), // 2 + 11
+	    new TestResult(0, -0.2370765946661258190107468569m), // 2 + 12
+	    new TestResult(0, -400453059665371395973.33474452m), // 2 + 13
+	    new TestResult(0, 222851627785191714190049.61676m), // 2 + 14
+	    new TestResult(0, 14246043379204153213661334.584m), // 2 + 15
+	    new TestResult(0, -421124.30446308691436596648186m), // 2 + 16
+	    new TestResult(0, 24463288738299544.200508898642m), // 2 + 17
+	    new TestResult(0, -5323259153836385912697777.001m), // 2 + 18
+	    new TestResult(0, 102801066199805834724673168.19m), // 2 + 19
+	    new TestResult(0, 7081320759.3793287174700927968m), // 2 + 20
+	    new TestResult(0, 415752273938.77704245656837041m), // 2 + 21
+	    new TestResult(0, -6389392489893.6362673670820462m), // 2 + 22
+	    new TestResult(0, 442346282742914.0596416330681m), // 2 + 23
+	    new TestResult(0, -512833780867324.89020837443764m), // 2 + 24
+	    new TestResult(0, 608940580690915703.1450897514m), // 2 + 25
+	    new TestResult(0, -42535053313319986966116.037787m), // 2 + 26
+	    new TestResult(0, -7808274522591953107486.8812311m), // 2 + 27
+	    new TestResult(0, 1037807626804273037330059470.7m), // 2 + 28
+	    new TestResult(0, -4997122967.448652425771563042m), // 2 + 29
+	    new TestResult(0, 2m), // 3 + 0
+	    new TestResult(0, 3m), // 3 + 1
+	    new TestResult(0, 1m), // 3 + 2
+	    new TestResult(0, 4m), // 3 + 3
+	    new TestResult(0, 12m), // 3 + 4
+	    new TestResult(0, 2.1m), // 3 + 5
+	    new TestResult(1, 0m), // 3 + 6
+	    new TestResult(0, -79228162514264337593543950333m), // 3 + 7
+	    new TestResult(0, 27703302467091960609331881.532m), // 3 + 8
+	    new TestResult(0, -3203852.9559968181492513385018m), // 3 + 9
+	    new TestResult(0, -48466870444188873796418.028868m), // 3 + 10
+	    new TestResult(0, -545193693242804792.30331374676m), // 3 + 11
+	    new TestResult(0, 2.7629234053338741809892531431m), // 3 + 12
+	    new TestResult(0, -400453059665371395970.33474452m), // 3 + 13
+	    new TestResult(0, 222851627785191714190052.61676m), // 3 + 14
+	    new TestResult(0, 14246043379204153213661337.584m), // 3 + 15
+	    new TestResult(0, -421121.30446308691436596648186m), // 3 + 16
+	    new TestResult(0, 24463288738299547.200508898642m), // 3 + 17
+	    new TestResult(0, -5323259153836385912697774.001m), // 3 + 18
+	    new TestResult(0, 102801066199805834724673171.19m), // 3 + 19
+	    new TestResult(0, 7081320762.3793287174700927968m), // 3 + 20
+	    new TestResult(0, 415752273941.77704245656837041m), // 3 + 21
+	    new TestResult(0, -6389392489890.6362673670820462m), // 3 + 22
+	    new TestResult(0, 442346282742917.0596416330681m), // 3 + 23
+	    new TestResult(0, -512833780867321.89020837443764m), // 3 + 24
+	    new TestResult(0, 608940580690915706.1450897514m), // 3 + 25
+	    new TestResult(0, -42535053313319986966113.037787m), // 3 + 26
+	    new TestResult(0, -7808274522591953107483.8812311m), // 3 + 27
+	    new TestResult(0, 1037807626804273037330059473.7m), // 3 + 28
+	    new TestResult(0, -4997122964.448652425771563042m), // 3 + 29
+	    new TestResult(0, 10m), // 4 + 0
+	    new TestResult(0, 11m), // 4 + 1
+	    new TestResult(0, 9m), // 4 + 2
+	    new TestResult(0, 12m), // 4 + 3
+	    new TestResult(0, 20m), // 4 + 4
+	    new TestResult(0, 10.1m), // 4 + 5
+	    new TestResult(1, 0m), // 4 + 6
+	    new TestResult(0, -79228162514264337593543950325m), // 4 + 7
+	    new TestResult(0, 27703302467091960609331889.532m), // 4 + 8
+	    new TestResult(0, -3203844.9559968181492513385018m), // 4 + 9
+	    new TestResult(0, -48466870444188873796410.028868m), // 4 + 10
+	    new TestResult(0, -545193693242804784.30331374676m), // 4 + 11
+	    new TestResult(0, 10.762923405333874180989253143m), // 4 + 12
+	    new TestResult(0, -400453059665371395962.33474452m), // 4 + 13
+	    new TestResult(0, 222851627785191714190060.61676m), // 4 + 14
+	    new TestResult(0, 14246043379204153213661345.584m), // 4 + 15
+	    new TestResult(0, -421113.30446308691436596648186m), // 4 + 16
+	    new TestResult(0, 24463288738299555.200508898642m), // 4 + 17
+	    new TestResult(0, -5323259153836385912697766.001m), // 4 + 18
+	    new TestResult(0, 102801066199805834724673179.19m), // 4 + 19
+	    new TestResult(0, 7081320770.3793287174700927968m), // 4 + 20
+	    new TestResult(0, 415752273949.77704245656837041m), // 4 + 21
+	    new TestResult(0, -6389392489882.6362673670820462m), // 4 + 22
+	    new TestResult(0, 442346282742925.0596416330681m), // 4 + 23
+	    new TestResult(0, -512833780867313.89020837443764m), // 4 + 24
+	    new TestResult(0, 608940580690915714.1450897514m), // 4 + 25
+	    new TestResult(0, -42535053313319986966105.037787m), // 4 + 26
+	    new TestResult(0, -7808274522591953107475.8812311m), // 4 + 27
+	    new TestResult(0, 1037807626804273037330059481.7m), // 4 + 28
+	    new TestResult(0, -4997122956.448652425771563042m), // 4 + 29
+	    new TestResult(0, 0.1m), // 5 + 0
+	    new TestResult(0, 1.1m), // 5 + 1
+	    new TestResult(0, -0.9m), // 5 + 2
+	    new TestResult(0, 2.1m), // 5 + 3
+	    new TestResult(0, 10.1m), // 5 + 4
+	    new TestResult(0, 0.2m), // 5 + 5
+	    new TestResult(2, 79228162514264337593543950335m), // 5 + 6
+	    new TestResult(2, -79228162514264337593543950335m), // 5 + 7
+	    new TestResult(0, 27703302467091960609331879.632m), // 5 + 8
+	    new TestResult(0, -3203854.8559968181492513385018m), // 5 + 9
+	    new TestResult(0, -48466870444188873796419.928868m), // 5 + 10
+	    new TestResult(0, -545193693242804794.20331374676m), // 5 + 11
+	    new TestResult(0, 0.8629234053338741809892531431m), // 5 + 12
+	    new TestResult(0, -400453059665371395972.23474452m), // 5 + 13
+	    new TestResult(0, 222851627785191714190050.71676m), // 5 + 14
+	    new TestResult(0, 14246043379204153213661335.684m), // 5 + 15
+	    new TestResult(0, -421123.20446308691436596648186m), // 5 + 16
+	    new TestResult(0, 24463288738299545.300508898642m), // 5 + 17
+	    new TestResult(0, -5323259153836385912697775.901m), // 5 + 18
+	    new TestResult(0, 102801066199805834724673169.29m), // 5 + 19
+	    new TestResult(0, 7081320760.4793287174700927968m), // 5 + 20
+	    new TestResult(0, 415752273939.87704245656837041m), // 5 + 21
+	    new TestResult(0, -6389392489892.5362673670820462m), // 5 + 22
+	    new TestResult(0, 442346282742915.1596416330681m), // 5 + 23
+	    new TestResult(0, -512833780867323.79020837443764m), // 5 + 24
+	    new TestResult(0, 608940580690915704.2450897514m), // 5 + 25
+	    new TestResult(0, -42535053313319986966114.937787m), // 5 + 26
+	    new TestResult(0, -7808274522591953107485.7812311m), // 5 + 27
+	    new TestResult(0, 1037807626804273037330059471.8m), // 5 + 28
+	    new TestResult(0, -4997122966.348652425771563042m), // 5 + 29
+	    new TestResult(0, 79228162514264337593543950335m), // 6 + 0
+	    new TestResult(1, 0m), // 6 + 1
+	    new TestResult(0, 79228162514264337593543950334m), // 6 + 2
+	    new TestResult(1, 0m), // 6 + 3
+	    new TestResult(1, 0m), // 6 + 4
+	    new TestResult(0, 79228162514264337593543950335m), // 6 + 5
+	    new TestResult(1, 0m), // 6 + 6
+	    new TestResult(0, 0m), // 6 + 7
+	    new TestResult(1, 0m), // 6 + 8
+	    new TestResult(0, 79228162514264337593540746480m), // 6 + 9
+	    new TestResult(0, 79228114047393893404670153915m), // 6 + 10
+	    new TestResult(0, 79228162513719143900301145541m), // 6 + 11
+	    new TestResult(1, 0m), // 6 + 12
+	    new TestResult(0, 79228162113811277928172554363m), // 6 + 13
+	    new TestResult(1, 0m), // 6 + 14
+	    new TestResult(1, 0m), // 6 + 15
+	    new TestResult(0, 79228162514264337593543529212m), // 6 + 16
+	    new TestResult(1, 0m), // 6 + 17
+	    new TestResult(0, 79222839255110501207631252559m), // 6 + 18
+	    new TestResult(1, 0m), // 6 + 19
+	    new TestResult(1, 0m), // 6 + 20
+	    new TestResult(1, 0m), // 6 + 21
+	    new TestResult(0, 79228162514264331204151460442m), // 6 + 22
+	    new TestResult(1, 0m), // 6 + 23
+	    new TestResult(0, 79228162514263824759763083011m), // 6 + 24
+	    new TestResult(1, 0m), // 6 + 25
+	    new TestResult(0, 79228119979211024273556984220m), // 6 + 26
+	    new TestResult(0, 79228154705989815001590842849m), // 6 + 27
+	    new TestResult(1, 0m), // 6 + 28
+	    new TestResult(0, 79228162514264337588546827369m), // 6 + 29
+	    new TestResult(0, -79228162514264337593543950335m), // 7 + 0
+	    new TestResult(0, -79228162514264337593543950334m), // 7 + 1
+	    new TestResult(1, 0m), // 7 + 2
+	    new TestResult(0, -79228162514264337593543950333m), // 7 + 3
+	    new TestResult(0, -79228162514264337593543950325m), // 7 + 4
+	    new TestResult(0, -79228162514264337593543950335m), // 7 + 5
+	    new TestResult(0, 0m), // 7 + 6
+	    new TestResult(1, 0m), // 7 + 7
+	    new TestResult(0, -79200459211797245632934618455m), // 7 + 8
+	    new TestResult(1, 0m), // 7 + 9
+	    new TestResult(1, 0m), // 7 + 10
+	    new TestResult(1, 0m), // 7 + 11
+	    new TestResult(0, -79228162514264337593543950334m), // 7 + 12
+	    new TestResult(1, 0m), // 7 + 13
+	    new TestResult(0, -79227939662636552401829760284m), // 7 + 14
+	    new TestResult(0, -79213916470885133440330288999m), // 7 + 15
+	    new TestResult(1, 0m), // 7 + 16
+	    new TestResult(0, -79228162514239874304805650790m), // 7 + 17
+	    new TestResult(1, 0m), // 7 + 18
+	    new TestResult(0, -79125361448064531758819277166m), // 7 + 19
+	    new TestResult(0, -79228162514264337586462629575m), // 7 + 20
+	    new TestResult(0, -79228162514264337177791676395m), // 7 + 21
+	    new TestResult(1, 0m), // 7 + 22
+	    new TestResult(0, -79228162514263895247261207420m), // 7 + 23
+	    new TestResult(1, 0m), // 7 + 24
+	    new TestResult(0, -79228162513655397012853034631m), // 7 + 25
+	    new TestResult(1, 0m), // 7 + 26
+	    new TestResult(1, 0m), // 7 + 27
+	    new TestResult(0, -78190354887460064556213890863m), // 7 + 28
+	    new TestResult(1, 0m), // 7 + 29
+	    new TestResult(0, 27703302467091960609331879.532m), // 8 + 0
+	    new TestResult(0, 27703302467091960609331880.532m), // 8 + 1
+	    new TestResult(0, 27703302467091960609331878.532m), // 8 + 2
+	    new TestResult(0, 27703302467091960609331881.532m), // 8 + 3
+	    new TestResult(0, 27703302467091960609331889.532m), // 8 + 4
+	    new TestResult(0, 27703302467091960609331879.632m), // 8 + 5
+	    new TestResult(1, 0m), // 8 + 6
+	    new TestResult(2, -79200459211797245632934618455m), // 8 + 7
+	    new TestResult(0, 55406604934183921218663759.064m), // 8 + 8
+	    new TestResult(0, 27703302467091960606128024.576m), // 8 + 9
+	    new TestResult(0, 27654835596647771735535459.503m), // 8 + 10
+	    new TestResult(0, 27703301921898267366527085.229m), // 8 + 11
+	    new TestResult(0, 27703302467091960609331880.295m), // 8 + 12
+	    new TestResult(0, 27702902014032295237935907.197m), // 8 + 13
+	    new TestResult(0, 27926154094877152323521930.149m), // 8 + 14
+	    new TestResult(0, 41949345846296113822993215.116m), // 8 + 15
+	    new TestResult(0, 27703302467091960608910756.228m), // 8 + 16
+	    new TestResult(0, 27703302491555249347631424.733m), // 8 + 17
+	    new TestResult(0, 22380043313255574696634103.531m), // 8 + 18
+	    new TestResult(2, 130504368666897795334005048.72m), // 8 + 19
+	    new TestResult(0, 27703302467091967690652639.911m), // 8 + 20
+	    new TestResult(0, 27703302467092376361605819.309m), // 8 + 21
+	    new TestResult(0, 27703302467085571216841986.896m), // 8 + 22
+	    new TestResult(0, 27703302467534306892074794.592m), // 8 + 23
+	    new TestResult(0, 27703302466579126828464555.642m), // 8 + 24
+	    new TestResult(0, 27703303076032541300247583.677m), // 8 + 25
+	    new TestResult(0, 27660767413778640622365764.494m), // 8 + 26
+	    new TestResult(0, 27695494192569368656224393.651m), // 8 + 27
+	    new TestResult(2, 1065510929271364997939391351.2m), // 8 + 28
+	    new TestResult(0, 27703302467091955612208913.083m), // 8 + 29
+	    new TestResult(0, -3203854.9559968181492513385018m), // 9 + 0
+	    new TestResult(0, -3203853.9559968181492513385018m), // 9 + 1
+	    new TestResult(0, -3203855.9559968181492513385018m), // 9 + 2
+	    new TestResult(0, -3203852.9559968181492513385018m), // 9 + 3
+	    new TestResult(0, -3203844.9559968181492513385018m), // 9 + 4
+	    new TestResult(0, -3203854.8559968181492513385018m), // 9 + 5
+	    new TestResult(2, 79228162514264337593540746480m), // 9 + 6
+	    new TestResult(1, 0m), // 9 + 7
+	    new TestResult(2, 27703302467091960606128024.576m), // 9 + 8
+	    new TestResult(0, -6407709.9119936362985026770036m), // 9 + 9
+	    new TestResult(2, -48466870444188877000274.984865m), // 9 + 10
+	    new TestResult(2, -545193693246008649.25931056491m), // 9 + 11
+	    new TestResult(0, -3203854.1930734128153771575125m), // 9 + 12
+	    new TestResult(2, -400453059665374599827.29074134m), // 9 + 13
+	    new TestResult(2, 222851627785191710986195.66076m), // 9 + 14
+	    new TestResult(2, 14246043379204153210457480.628m), // 9 + 15
+	    new TestResult(0, -3624978.2604599050636173049837m), // 9 + 16
+	    new TestResult(2, 24463288735095690.244512080493m), // 9 + 17
+	    new TestResult(2, -5323259153836385915901630.957m), // 9 + 18
+	    new TestResult(2, 102801066199805834721469314.23m), // 9 + 19
+	    new TestResult(2, 7078116905.4233318993208414583m), // 9 + 20
+	    new TestResult(2, 415749070084.82104563841911907m), // 9 + 21
+	    new TestResult(2, -6389395693747.5922641852312975m), // 9 + 22
+	    new TestResult(2, 442346279539060.10364481491885m), // 9 + 23
+	    new TestResult(2, -512833784071178.84620519258689m), // 9 + 24
+	    new TestResult(2, 608940580687711849.18909293325m), // 9 + 25
+	    new TestResult(2, -42535053313319990169969.993784m), // 9 + 26
+	    new TestResult(2, -7808274522591956311340.8372279m), // 9 + 27
+	    new TestResult(2, 1037807626804273037326855616.7m), // 9 + 28
+	    new TestResult(2, -5000326821.4046492439208143805m), // 9 + 29
+	    new TestResult(0, -48466870444188873796420.028868m), // 10 + 0
+	    new TestResult(0, -48466870444188873796419.028868m), // 10 + 1
+	    new TestResult(0, -48466870444188873796421.028868m), // 10 + 2
+	    new TestResult(0, -48466870444188873796418.028868m), // 10 + 3
+	    new TestResult(0, -48466870444188873796410.028868m), // 10 + 4
+	    new TestResult(0, -48466870444188873796419.928868m), // 10 + 5
+	    new TestResult(2, 79228114047393893404670153915m), // 10 + 6
+	    new TestResult(1, 0m), // 10 + 7
+	    new TestResult(2, 27654835596647771735535459.503m), // 10 + 8
+	    new TestResult(0, -48466870444188877000274.984865m), // 10 + 9
+	    new TestResult(2, -96933740888377747592840.05774m), // 10 + 10
+	    new TestResult(0, -48467415637882116601214.332182m), // 10 + 11
+	    new TestResult(0, -48466870444188873796419.265945m), // 10 + 12
+	    new TestResult(0, -48867323503854245192392.363613m), // 10 + 13
+	    new TestResult(2, 174384757341002840393630.58789m), // 10 + 14
+	    new TestResult(2, 14197576508759964339864915.555m), // 10 + 15
+	    new TestResult(0, -48466870444188874217543.333331m), // 10 + 16
+	    new TestResult(0, -48466845980900135496874.828359m), // 10 + 17
+	    new TestResult(2, -5371726024280574786494196.0299m), // 10 + 18
+	    new TestResult(2, 102752599329361645850876749.16m), // 10 + 19
+	    new TestResult(0, -48466870444181792475659.649539m), // 10 + 20
+	    new TestResult(0, -48466870443773121522480.251826m), // 10 + 21
+	    new TestResult(0, -48466870450578266286312.665135m), // 10 + 22
+	    new TestResult(0, -48466870001842591053504.969226m), // 10 + 23
+	    new TestResult(0, -48466870957022654663743.919076m), // 10 + 24
+	    new TestResult(0, -48466261503608182880715.883778m), // 10 + 25
+	    new TestResult(2, -91001923757508860762535.06666m), // 10 + 26
+	    new TestResult(0, -56275144966780826903905.910099m), // 10 + 27
+	    new TestResult(2, 1037759159933828848456263051.7m), // 10 + 28
+	    new TestResult(0, -48466870444193870919386.47752m), // 10 + 29
+	    new TestResult(0, -545193693242804794.30331374676m), // 11 + 0
+	    new TestResult(0, -545193693242804793.30331374676m), // 11 + 1
+	    new TestResult(0, -545193693242804795.30331374676m), // 11 + 2
+	    new TestResult(0, -545193693242804792.30331374676m), // 11 + 3
+	    new TestResult(0, -545193693242804784.30331374676m), // 11 + 4
+	    new TestResult(0, -545193693242804794.20331374676m), // 11 + 5
+	    new TestResult(2, 79228162513719143900301145541m), // 11 + 6
+	    new TestResult(1, 0m), // 11 + 7
+	    new TestResult(2, 27703301921898267366527085.229m), // 11 + 8
+	    new TestResult(0, -545193693246008649.25931056491m), // 11 + 9
+	    new TestResult(2, -48467415637882116601214.332182m), // 11 + 10
+	    new TestResult(2, -1090387386485609588.6066274935m), // 11 + 11
+	    new TestResult(0, -545193693242804793.54039034143m), // 11 + 12
+	    new TestResult(2, -400998253358614200766.63805827m), // 11 + 13
+	    new TestResult(2, 222851082591498471385256.31345m), // 11 + 14
+	    new TestResult(2, 14246042834010459970856541.281m), // 11 + 15
+	    new TestResult(0, -545193693243225917.60777683367m), // 11 + 16
+	    new TestResult(0, -520730404504505249.10280484812m), // 11 + 17
+	    new TestResult(2, -5323259699030079155502570.3043m), // 11 + 18
+	    new TestResult(2, 102801065654612141481868374.89m), // 11 + 19
+	    new TestResult(0, -545193686161484033.92398502929m), // 11 + 20
+	    new TestResult(0, -545193277490530854.52627129019m), // 11 + 21
+	    new TestResult(0, -545200082635294686.93958111384m), // 11 + 22
+	    new TestResult(0, -544751346960061879.24367211369m), // 11 + 23
+	    new TestResult(0, -545706527023672118.1935221212m), // 11 + 24
+	    new TestResult(0, 63746887448110909.84177600464m), // 11 + 25
+	    new TestResult(2, -42535598507013229770909.341101m), // 11 + 26
+	    new TestResult(2, -7808819716285195912280.1845448m), // 11 + 27
+	    new TestResult(2, 1037807626259079344087254677.4m), // 11 + 28
+	    new TestResult(0, -545193698239927760.75196617253m), // 11 + 29
+	    new TestResult(0, 0.7629234053338741809892531431m), // 12 + 0
+	    new TestResult(0, 1.7629234053338741809892531431m), // 12 + 1
+	    new TestResult(0, -0.2370765946661258190107468569m), // 12 + 2
+	    new TestResult(0, 2.7629234053338741809892531431m), // 12 + 3
+	    new TestResult(2, 10.762923405333874180989253143m), // 12 + 4
+	    new TestResult(0, 0.8629234053338741809892531431m), // 12 + 5
+	    new TestResult(1, 0m), // 12 + 6
+	    new TestResult(2, -79228162514264337593543950334m), // 12 + 7
+	    new TestResult(2, 27703302467091960609331880.295m), // 12 + 8
+	    new TestResult(2, -3203854.1930734128153771575125m), // 12 + 9
+	    new TestResult(2, -48466870444188873796419.265945m), // 12 + 10
+	    new TestResult(2, -545193693242804793.54039034143m), // 12 + 11
+	    new TestResult(0, 1.5258468106677483619785062862m), // 12 + 12
+	    new TestResult(2, -400453059665371395971.57182111m), // 12 + 13
+	    new TestResult(2, 222851627785191714190051.37968m), // 12 + 14
+	    new TestResult(2, 14246043379204153213661336.347m), // 12 + 15
+	    new TestResult(2, -421122.54153968158049178549261m), // 12 + 16
+	    new TestResult(2, 24463288738299545.963432303976m), // 12 + 17
+	    new TestResult(2, -5323259153836385912697775.2381m), // 12 + 18
+	    new TestResult(2, 102801066199805834724673169.95m), // 12 + 19
+	    new TestResult(2, 7081320761.1422521228039669778m), // 12 + 20
+	    new TestResult(2, 415752273940.53996586190224459m), // 12 + 21
+	    new TestResult(2, -6389392489891.873343961748172m), // 12 + 22
+	    new TestResult(2, 442346282742915.82256503840197m), // 12 + 23
+	    new TestResult(2, -512833780867323.12728496910377m), // 12 + 24
+	    new TestResult(2, 608940580690915704.90801315673m), // 12 + 25
+	    new TestResult(2, -42535053313319986966114.274864m), // 12 + 26
+	    new TestResult(2, -7808274522591953107485.1183077m), // 12 + 27
+	    new TestResult(2, 1037807626804273037330059472.5m), // 12 + 28
+	    new TestResult(2, -4997122965.685729020437688861m), // 12 + 29
+	    new TestResult(0, -400453059665371395972.33474452m), // 13 + 0
+	    new TestResult(0, -400453059665371395971.33474452m), // 13 + 1
+	    new TestResult(0, -400453059665371395973.33474452m), // 13 + 2
+	    new TestResult(0, -400453059665371395970.33474452m), // 13 + 3
+	    new TestResult(0, -400453059665371395962.33474452m), // 13 + 4
+	    new TestResult(0, -400453059665371395972.23474452m), // 13 + 5
+	    new TestResult(2, 79228162113811277928172554363m), // 13 + 6
+	    new TestResult(1, 0m), // 13 + 7
+	    new TestResult(2, 27702902014032295237935907.197m), // 13 + 8
+	    new TestResult(0, -400453059665374599827.29074134m), // 13 + 9
+	    new TestResult(2, -48867323503854245192392.363613m), // 13 + 10
+	    new TestResult(0, -400998253358614200766.63805827m), // 13 + 11
+	    new TestResult(0, -400453059665371395971.57182111m), // 13 + 12
+	    new TestResult(2, -800906119330742791944.669489m), // 13 + 13
+	    new TestResult(2, 222451174725526342794078.28202m), // 13 + 14
+	    new TestResult(2, 14245642926144487842265363.249m), // 13 + 15
+	    new TestResult(0, -400453059665371817095.63920761m), // 13 + 16
+	    new TestResult(0, -400428596376633096427.13423562m), // 13 + 17
+	    new TestResult(2, -5323659606896051284093748.3357m), // 13 + 18
+	    new TestResult(2, 102800665746746169353277196.86m), // 13 + 19
+	    new TestResult(0, -400453059658290075211.9554158m), // 13 + 20
+	    new TestResult(0, -400453059249619122032.55770206m), // 13 + 21
+	    new TestResult(0, -400453066054763885864.97101189m), // 13 + 22
+	    new TestResult(0, -400452617319088653057.27510289m), // 13 + 23
+	    new TestResult(0, -400453572499152263296.22495289m), // 13 + 24
+	    new TestResult(0, -399844119084680480268.18965477m), // 13 + 25
+	    new TestResult(2, -42935506372985358362087.372532m), // 13 + 26
+	    new TestResult(2, -8208727582257324503458.215976m), // 13 + 27
+	    new TestResult(2, 1037807226351213371958663499.4m), // 13 + 28
+	    new TestResult(0, -400453059670368518938.78339695m), // 13 + 29
+	    new TestResult(0, 222851627785191714190050.61676m), // 14 + 0
+	    new TestResult(0, 222851627785191714190051.61676m), // 14 + 1
+	    new TestResult(0, 222851627785191714190049.61676m), // 14 + 2
+	    new TestResult(0, 222851627785191714190052.61676m), // 14 + 3
+	    new TestResult(0, 222851627785191714190060.61676m), // 14 + 4
+	    new TestResult(0, 222851627785191714190050.71676m), // 14 + 5
+	    new TestResult(1, 0m), // 14 + 6
+	    new TestResult(2, -79227939662636552401829760284m), // 14 + 7
+	    new TestResult(2, 27926154094877152323521930.149m), // 14 + 8
+	    new TestResult(0, 222851627785191710986195.66076m), // 14 + 9
+	    new TestResult(0, 174384757341002840393630.58789m), // 14 + 10
+	    new TestResult(0, 222851082591498471385256.31345m), // 14 + 11
+	    new TestResult(0, 222851627785191714190051.37968m), // 14 + 12
+	    new TestResult(0, 222451174725526342794078.28202m), // 14 + 13
+	    new TestResult(0, 445703255570383428380101.23352m), // 14 + 14
+	    new TestResult(2, 14468895006989344927851386.201m), // 14 + 15
+	    new TestResult(0, 222851627785191713768927.3123m), // 14 + 16
+	    new TestResult(0, 222851652248480452489595.81727m), // 14 + 17
+	    new TestResult(2, -5100407526051194198507725.3842m), // 14 + 18
+	    new TestResult(2, 103023917827591026438863219.81m), // 14 + 19
+	    new TestResult(0, 222851627785198795510810.99609m), // 14 + 20
+	    new TestResult(0, 222851627785607466463990.3938m), // 14 + 21
+	    new TestResult(0, 222851627778802321700157.98049m), // 14 + 22
+	    new TestResult(0, 222851628227537996932965.6764m), // 14 + 23
+	    new TestResult(0, 222851627272357933322726.72655m), // 14 + 24
+	    new TestResult(0, 222852236725772405105754.76185m), // 14 + 25
+	    new TestResult(0, 180316574471871727223935.57897m), // 14 + 26
+	    new TestResult(0, 215043353262599761082564.73553m), // 14 + 27
+	    new TestResult(2, 1038030478432058229044249522.3m), // 14 + 28
+	    new TestResult(0, 222851627785186717067084.16811m), // 14 + 29
+	    new TestResult(0, 14246043379204153213661335.584m), // 15 + 0
+	    new TestResult(0, 14246043379204153213661336.584m), // 15 + 1
+	    new TestResult(0, 14246043379204153213661334.584m), // 15 + 2
+	    new TestResult(0, 14246043379204153213661337.584m), // 15 + 3
+	    new TestResult(0, 14246043379204153213661345.584m), // 15 + 4
+	    new TestResult(0, 14246043379204153213661335.684m), // 15 + 5
+	    new TestResult(1, 0m), // 15 + 6
+	    new TestResult(2, -79213916470885133440330288999m), // 15 + 7
+	    new TestResult(0, 41949345846296113822993215.116m), // 15 + 8
+	    new TestResult(0, 14246043379204153210457480.628m), // 15 + 9
+	    new TestResult(0, 14197576508759964339864915.555m), // 15 + 10
+	    new TestResult(0, 14246042834010459970856541.281m), // 15 + 11
+	    new TestResult(0, 14246043379204153213661336.347m), // 15 + 12
+	    new TestResult(0, 14245642926144487842265363.249m), // 15 + 13
+	    new TestResult(0, 14468895006989344927851386.201m), // 15 + 14
+	    new TestResult(0, 28492086758408306427322671.168m), // 15 + 15
+	    new TestResult(0, 14246043379204153213240212.28m), // 15 + 16
+	    new TestResult(0, 14246043403667441951960880.785m), // 15 + 17
+	    new TestResult(0, 8922784225367767300963559.583m), // 15 + 18
+	    new TestResult(2, 117047109579009987938334504.77m), // 15 + 19
+	    new TestResult(0, 14246043379204160294982095.963m), // 15 + 20
+	    new TestResult(0, 14246043379204568965935275.361m), // 15 + 21
+	    new TestResult(0, 14246043379197763821171442.948m), // 15 + 22
+	    new TestResult(0, 14246043379646499496404250.644m), // 15 + 23
+	    new TestResult(0, 14246043378691319432794011.694m), // 15 + 24
+	    new TestResult(0, 14246043988144733904577039.729m), // 15 + 25
+	    new TestResult(0, 14203508325890833226695220.546m), // 15 + 26
+	    new TestResult(0, 14238235104681561260553849.703m), // 15 + 27
+	    new TestResult(2, 1052053670183477190543720807.3m), // 15 + 28
+	    new TestResult(0, 14246043379204148216538369.135m), // 15 + 29
+	    new TestResult(0, -421123.30446308691436596648186m), // 16 + 0
+	    new TestResult(0, -421122.30446308691436596648186m), // 16 + 1
+	    new TestResult(0, -421124.30446308691436596648186m), // 16 + 2
+	    new TestResult(0, -421121.30446308691436596648186m), // 16 + 3
+	    new TestResult(0, -421113.30446308691436596648186m), // 16 + 4
+	    new TestResult(0, -421123.20446308691436596648186m), // 16 + 5
+	    new TestResult(2, 79228162514264337593543529212m), // 16 + 6
+	    new TestResult(1, 0m), // 16 + 7
+	    new TestResult(2, 27703302467091960608910756.228m), // 16 + 8
+	    new TestResult(2, -3624978.2604599050636173049837m), // 16 + 9
+	    new TestResult(2, -48466870444188874217543.333331m), // 16 + 10
+	    new TestResult(2, -545193693243225917.60777683367m), // 16 + 11
+	    new TestResult(0, -421122.54153968158049178549261m), // 16 + 12
+	    new TestResult(2, -400453059665371817095.63920761m), // 16 + 13
+	    new TestResult(2, 222851627785191713768927.3123m), // 16 + 14
+	    new TestResult(2, 14246043379204153213240212.28m), // 16 + 15
+	    new TestResult(2, -842246.6089261738287319329637m), // 16 + 16
+	    new TestResult(2, 24463288737878421.896045811728m), // 16 + 17
+	    new TestResult(2, -5323259153836385913118899.3055m), // 16 + 18
+	    new TestResult(2, 102801066199805834724252045.89m), // 16 + 19
+	    new TestResult(2, 7080899637.0748656305557268303m), // 16 + 20
+	    new TestResult(2, 415751852816.47257936965400444m), // 16 + 21
+	    new TestResult(2, -6389392911015.9407304539964122m), // 16 + 22
+	    new TestResult(2, 442346282321791.75517854615373m), // 16 + 23
+	    new TestResult(2, -512833781288447.19467146135201m), // 16 + 24
+	    new TestResult(2, 608940580690494580.84062666449m), // 16 + 25
+	    new TestResult(2, -42535053313319987387238.34225m), // 16 + 26
+	    new TestResult(2, -7808274522591953528609.1856942m), // 16 + 27
+	    new TestResult(2, 1037807626804273037329638348.4m), // 16 + 28
+	    new TestResult(2, -4997544089.7531155126859290085m), // 16 + 29
+	    new TestResult(0, 24463288738299545.200508898642m), // 17 + 0
+	    new TestResult(0, 24463288738299546.200508898642m), // 17 + 1
+	    new TestResult(0, 24463288738299544.200508898642m), // 17 + 2
+	    new TestResult(0, 24463288738299547.200508898642m), // 17 + 3
+	    new TestResult(0, 24463288738299555.200508898642m), // 17 + 4
+	    new TestResult(0, 24463288738299545.300508898642m), // 17 + 5
+	    new TestResult(1, 0m), // 17 + 6
+	    new TestResult(2, -79228162514239874304805650790m), // 17 + 7
+	    new TestResult(2, 27703302491555249347631424.733m), // 17 + 8
+	    new TestResult(0, 24463288735095690.244512080493m), // 17 + 9
+	    new TestResult(2, -48466845980900135496874.828359m), // 17 + 10
+	    new TestResult(2, -520730404504505249.10280484812m), // 17 + 11
+	    new TestResult(0, 24463288738299545.963432303976m), // 17 + 12
+	    new TestResult(2, -400428596376633096427.13423562m), // 17 + 13
+	    new TestResult(2, 222851652248480452489595.81727m), // 17 + 14
+	    new TestResult(2, 14246043403667441951960880.785m), // 17 + 15
+	    new TestResult(0, 24463288737878421.896045811728m), // 17 + 16
+	    new TestResult(0, 48926577476599090.401017797284m), // 17 + 17
+	    new TestResult(2, -5323259129373097174398230.8005m), // 17 + 18
+	    new TestResult(2, 102801066224269123462972714.39m), // 17 + 19
+	    new TestResult(0, 24463295819620305.579837616112m), // 17 + 20
+	    new TestResult(0, 24463704490573484.97755135521m), // 17 + 21
+	    new TestResult(0, 24456899345809652.56424153156m), // 17 + 22
+	    new TestResult(0, 24905635021042460.26015053171m), // 17 + 23
+	    new TestResult(0, 23950454957432221.310300524204m), // 17 + 24
+	    new TestResult(2, 633403869429215249.34559865004m), // 17 + 25
+	    new TestResult(2, -42535028850031248666569.837278m), // 17 + 26
+	    new TestResult(2, -7808250059303214807940.6807222m), // 17 + 27
+	    new TestResult(2, 1037807626828736326068359016.9m), // 17 + 28
+	    new TestResult(0, 24463283741176578.75185647287m), // 17 + 29
+	    new TestResult(0, -5323259153836385912697776.001m), // 18 + 0
+	    new TestResult(0, -5323259153836385912697775.001m), // 18 + 1
+	    new TestResult(0, -5323259153836385912697777.001m), // 18 + 2
+	    new TestResult(0, -5323259153836385912697774.001m), // 18 + 3
+	    new TestResult(0, -5323259153836385912697766.001m), // 18 + 4
+	    new TestResult(0, -5323259153836385912697775.901m), // 18 + 5
+	    new TestResult(2, 79222839255110501207631252559m), // 18 + 6
+	    new TestResult(1, 0m), // 18 + 7
+	    new TestResult(0, 22380043313255574696634103.531m), // 18 + 8
+	    new TestResult(0, -5323259153836385915901630.957m), // 18 + 9
+	    new TestResult(0, -5371726024280574786494196.0299m), // 18 + 10
+	    new TestResult(0, -5323259699030079155502570.3043m), // 18 + 11
+	    new TestResult(0, -5323259153836385912697775.2381m), // 18 + 12
+	    new TestResult(0, -5323659606896051284093748.3357m), // 18 + 13
+	    new TestResult(0, -5100407526051194198507725.3842m), // 18 + 14
+	    new TestResult(0, 8922784225367767300963559.583m), // 18 + 15
+	    new TestResult(0, -5323259153836385913118899.3055m), // 18 + 16
+	    new TestResult(0, -5323259129373097174398230.8005m), // 18 + 17
+	    new TestResult(0, -10646518307672771825395552.002m), // 18 + 18
+	    new TestResult(2, 97477807045969448811975393.19m), // 18 + 19
+	    new TestResult(0, -5323259153836378831377015.6217m), // 18 + 20
+	    new TestResult(0, -5323259153835970160423836.224m), // 18 + 21
+	    new TestResult(0, -5323259153842775305187668.6373m), // 18 + 22
+	    new TestResult(0, -5323259153394039629954860.9414m), // 18 + 23
+	    new TestResult(0, -5323259154349219693565099.8912m), // 18 + 24
+	    new TestResult(0, -5323258544895805221782071.8559m), // 18 + 25
+	    new TestResult(0, -5365794207149705899663891.0388m), // 18 + 26
+	    new TestResult(0, -5331067428358977865805261.8822m), // 18 + 27
+	    new TestResult(2, 1032484367650436651417361695.7m), // 18 + 28
+	    new TestResult(0, -5323259153836390909820742.4497m), // 18 + 29
+	    new TestResult(0, 102801066199805834724673169.19m), // 19 + 0
+	    new TestResult(0, 102801066199805834724673170.19m), // 19 + 1
+	    new TestResult(0, 102801066199805834724673168.19m), // 19 + 2
+	    new TestResult(0, 102801066199805834724673171.19m), // 19 + 3
+	    new TestResult(0, 102801066199805834724673179.19m), // 19 + 4
+	    new TestResult(0, 102801066199805834724673169.29m), // 19 + 5
+	    new TestResult(1, 0m), // 19 + 6
+	    new TestResult(2, -79125361448064531758819277166m), // 19 + 7
+	    new TestResult(0, 130504368666897795334005048.72m), // 19 + 8
+	    new TestResult(0, 102801066199805834721469314.23m), // 19 + 9
+	    new TestResult(0, 102752599329361645850876749.16m), // 19 + 10
+	    new TestResult(0, 102801065654612141481868374.89m), // 19 + 11
+	    new TestResult(0, 102801066199805834724673169.95m), // 19 + 12
+	    new TestResult(0, 102800665746746169353277196.86m), // 19 + 13
+	    new TestResult(0, 103023917827591026438863219.81m), // 19 + 14
+	    new TestResult(0, 117047109579009987938334504.77m), // 19 + 15
+	    new TestResult(0, 102801066199805834724252045.89m), // 19 + 16
+	    new TestResult(0, 102801066224269123462972714.39m), // 19 + 17
+	    new TestResult(0, 97477807045969448811975393.19m), // 19 + 18
+	    new TestResult(0, 205602132399611669449346338.38m), // 19 + 19
+	    new TestResult(0, 102801066199805841805993929.57m), // 19 + 20
+	    new TestResult(0, 102801066199806250476947108.97m), // 19 + 21
+	    new TestResult(0, 102801066199799445332183276.55m), // 19 + 22
+	    new TestResult(0, 102801066200248181007416084.25m), // 19 + 23
+	    new TestResult(0, 102801066199293000943805845.3m), // 19 + 24
+	    new TestResult(0, 102801066808746415415588873.34m), // 19 + 25
+	    new TestResult(0, 102758531146492514737707054.15m), // 19 + 26
+	    new TestResult(0, 102793257925283242771565683.31m), // 19 + 27
+	    new TestResult(2, 1140608693004078872054732640.9m), // 19 + 28
+	    new TestResult(0, 102801066199805829727550202.74m), // 19 + 29
+	    new TestResult(0, 7081320760.3793287174700927968m), // 20 + 0
+	    new TestResult(0, 7081320761.3793287174700927968m), // 20 + 1
+	    new TestResult(0, 7081320759.3793287174700927968m), // 20 + 2
+	    new TestResult(0, 7081320762.3793287174700927968m), // 20 + 3
+	    new TestResult(0, 7081320770.3793287174700927968m), // 20 + 4
+	    new TestResult(0, 7081320760.4793287174700927968m), // 20 + 5
+	    new TestResult(1, 0m), // 20 + 6
+	    new TestResult(2, -79228162514264337586462629575m), // 20 + 7
+	    new TestResult(2, 27703302467091967690652639.911m), // 20 + 8
+	    new TestResult(0, 7078116905.4233318993208414583m), // 20 + 9
+	    new TestResult(2, -48466870444181792475659.649539m), // 20 + 10
+	    new TestResult(2, -545193686161484033.92398502929m), // 20 + 11
+	    new TestResult(0, 7081320761.1422521228039669778m), // 20 + 12
+	    new TestResult(2, -400453059658290075211.9554158m), // 20 + 13
+	    new TestResult(2, 222851627785198795510810.99609m), // 20 + 14
+	    new TestResult(2, 14246043379204160294982095.963m), // 20 + 15
+	    new TestResult(0, 7080899637.0748656305557268303m), // 20 + 16
+	    new TestResult(2, 24463295819620305.579837616112m), // 20 + 17
+	    new TestResult(2, -5323259153836378831377015.6217m), // 20 + 18
+	    new TestResult(2, 102801066199805841805993929.57m), // 20 + 19
+	    new TestResult(2, 14162641520.758657434940185594m), // 20 + 20
+	    new TestResult(2, 422833594700.15637117403846321m), // 20 + 21
+	    new TestResult(2, -6382311169132.2569386496119534m), // 20 + 22
+	    new TestResult(2, 442353364063675.43897035053819m), // 20 + 23
+	    new TestResult(2, -512826699546563.51087965696755m), // 20 + 24
+	    new TestResult(2, 608940587772236464.52441846887m), // 20 + 25
+	    new TestResult(2, -42535053313312905645354.658458m), // 20 + 26
+	    new TestResult(2, -7808274522584871786725.5019024m), // 20 + 27
+	    new TestResult(2, 1037807626804273044411380232.1m), // 20 + 28
+	    new TestResult(0, 2084197793.9306762916985297548m), // 20 + 29
+	    new TestResult(0, 415752273939.77704245656837041m), // 21 + 0
+	    new TestResult(0, 415752273940.77704245656837041m), // 21 + 1
+	    new TestResult(0, 415752273938.77704245656837041m), // 21 + 2
+	    new TestResult(0, 415752273941.77704245656837041m), // 21 + 3
+	    new TestResult(0, 415752273949.77704245656837041m), // 21 + 4
+	    new TestResult(0, 415752273939.87704245656837041m), // 21 + 5
+	    new TestResult(1, 0m), // 21 + 6
+	    new TestResult(2, -79228162514264337177791676395m), // 21 + 7
+	    new TestResult(2, 27703302467092376361605819.309m), // 21 + 8
+	    new TestResult(0, 415749070084.82104563841911907m), // 21 + 9
+	    new TestResult(2, -48466870443773121522480.251826m), // 21 + 10
+	    new TestResult(2, -545193277490530854.52627129019m), // 21 + 11
+	    new TestResult(0, 415752273940.53996586190224459m), // 21 + 12
+	    new TestResult(2, -400453059249619122032.55770206m), // 21 + 13
+	    new TestResult(2, 222851627785607466463990.3938m), // 21 + 14
+	    new TestResult(2, 14246043379204568965935275.361m), // 21 + 15
+	    new TestResult(0, 415751852816.47257936965400444m), // 21 + 16
+	    new TestResult(2, 24463704490573484.97755135521m), // 21 + 17
+	    new TestResult(2, -5323259153835970160423836.224m), // 21 + 18
+	    new TestResult(2, 102801066199806250476947108.97m), // 21 + 19
+	    new TestResult(0, 422833594700.15637117403846321m), // 21 + 20
+	    new TestResult(2, 831504547879.5540849131367408m), // 21 + 21
+	    new TestResult(2, -5973640215952.8592249105136758m), // 21 + 22
+	    new TestResult(2, 442762035016854.83668408963647m), // 21 + 23
+	    new TestResult(2, -512418028593384.11316591786927m), // 21 + 24
+	    new TestResult(2, 608940996443189643.92213220797m), // 21 + 25
+	    new TestResult(2, -42535053312904234692175.260745m), // 21 + 26
+	    new TestResult(2, -7808274522176200833546.1041886m), // 21 + 27
+	    new TestResult(2, 1037807626804273453082333411.5m), // 21 + 28
+	    new TestResult(0, 410755150973.32839003079680737m), // 21 + 29
+	    new TestResult(0, -6389392489892.6362673670820462m), // 22 + 0
+	    new TestResult(0, -6389392489891.6362673670820462m), // 22 + 1
+	    new TestResult(0, -6389392489893.6362673670820462m), // 22 + 2
+	    new TestResult(0, -6389392489890.6362673670820462m), // 22 + 3
+	    new TestResult(0, -6389392489882.6362673670820462m), // 22 + 4
+	    new TestResult(0, -6389392489892.5362673670820462m), // 22 + 5
+	    new TestResult(2, 79228162514264331204151460442m), // 22 + 6
+	    new TestResult(1, 0m), // 22 + 7
+	    new TestResult(2, 27703302467085571216841986.896m), // 22 + 8
+	    new TestResult(0, -6389395693747.5922641852312975m), // 22 + 9
+	    new TestResult(2, -48466870450578266286312.665135m), // 22 + 10
+	    new TestResult(2, -545200082635294686.93958111384m), // 22 + 11
+	    new TestResult(0, -6389392489891.873343961748172m), // 22 + 12
+	    new TestResult(2, -400453066054763885864.97101189m), // 22 + 13
+	    new TestResult(2, 222851627778802321700157.98049m), // 22 + 14
+	    new TestResult(2, 14246043379197763821171442.948m), // 22 + 15
+	    new TestResult(0, -6389392911015.9407304539964122m), // 22 + 16
+	    new TestResult(2, 24456899345809652.56424153156m), // 22 + 17
+	    new TestResult(2, -5323259153842775305187668.6373m), // 22 + 18
+	    new TestResult(2, 102801066199799445332183276.55m), // 22 + 19
+	    new TestResult(0, -6382311169132.2569386496119534m), // 22 + 20
+	    new TestResult(0, -5973640215952.8592249105136758m), // 22 + 21
+	    new TestResult(2, -12778784979785.272534734164092m), // 22 + 22
+	    new TestResult(2, 435956890253022.42337426598605m), // 22 + 23
+	    new TestResult(2, -519223173357216.52647574151969m), // 22 + 24
+	    new TestResult(2, 608934191298425811.50882238432m), // 22 + 25
+	    new TestResult(2, -42535053319709379456007.674054m), // 22 + 26
+	    new TestResult(2, -7808274528981345597378.5174985m), // 22 + 27
+	    new TestResult(2, 1037807626804266647937569579.1m), // 22 + 28
+	    new TestResult(0, -6394389612859.0849197928536092m), // 22 + 29
+	    new TestResult(0, 442346282742915.0596416330681m), // 23 + 0
+	    new TestResult(0, 442346282742916.0596416330681m), // 23 + 1
+	    new TestResult(0, 442346282742914.0596416330681m), // 23 + 2
+	    new TestResult(0, 442346282742917.0596416330681m), // 23 + 3
+	    new TestResult(0, 442346282742925.0596416330681m), // 23 + 4
+	    new TestResult(0, 442346282742915.1596416330681m), // 23 + 5
+	    new TestResult(1, 0m), // 23 + 6
+	    new TestResult(2, -79228162514263895247261207420m), // 23 + 7
+	    new TestResult(2, 27703302467534306892074794.592m), // 23 + 8
+	    new TestResult(0, 442346279539060.10364481491885m), // 23 + 9
+	    new TestResult(2, -48466870001842591053504.969226m), // 23 + 10
+	    new TestResult(2, -544751346960061879.24367211369m), // 23 + 11
+	    new TestResult(0, 442346282742915.82256503840197m), // 23 + 12
+	    new TestResult(2, -400452617319088653057.27510289m), // 23 + 13
+	    new TestResult(2, 222851628227537996932965.6764m), // 23 + 14
+	    new TestResult(2, 14246043379646499496404250.644m), // 23 + 15
+	    new TestResult(0, 442346282321791.75517854615373m), // 23 + 16
+	    new TestResult(2, 24905635021042460.26015053171m), // 23 + 17
+	    new TestResult(2, -5323259153394039629954860.9414m), // 23 + 18
+	    new TestResult(2, 102801066200248181007416084.25m), // 23 + 19
+	    new TestResult(0, 442353364063675.43897035053819m), // 23 + 20
+	    new TestResult(0, 442762035016854.83668408963647m), // 23 + 21
+	    new TestResult(0, 435956890253022.42337426598605m), // 23 + 22
+	    new TestResult(0, 884692565485830.1192832661362m), // 23 + 23
+	    new TestResult(0, -70487498124408.83056674136954m), // 23 + 24
+	    new TestResult(2, 609382926973658619.20473138447m), // 23 + 25
+	    new TestResult(2, -42535052870973704223199.978145m), // 23 + 26
+	    new TestResult(2, -7808274080245670364570.8215895m), // 23 + 27
+	    new TestResult(2, 1037807626804715383612802386.8m), // 23 + 28
+	    new TestResult(0, 442341285619948.61098920729654m), // 23 + 29
+	    new TestResult(0, -512833780867323.89020837443764m), // 24 + 0
+	    new TestResult(0, -512833780867322.89020837443764m), // 24 + 1
+	    new TestResult(0, -512833780867324.89020837443764m), // 24 + 2
+	    new TestResult(0, -512833780867321.89020837443764m), // 24 + 3
+	    new TestResult(0, -512833780867313.89020837443764m), // 24 + 4
+	    new TestResult(0, -512833780867323.79020837443764m), // 24 + 5
+	    new TestResult(2, 79228162514263824759763083011m), // 24 + 6
+	    new TestResult(1, 0m), // 24 + 7
+	    new TestResult(2, 27703302466579126828464555.642m), // 24 + 8
+	    new TestResult(0, -512833784071178.84620519258689m), // 24 + 9
+	    new TestResult(2, -48466870957022654663743.919076m), // 24 + 10
+	    new TestResult(2, -545706527023672118.1935221212m), // 24 + 11
+	    new TestResult(0, -512833780867323.12728496910377m), // 24 + 12
+	    new TestResult(2, -400453572499152263296.22495289m), // 24 + 13
+	    new TestResult(2, 222851627272357933322726.72655m), // 24 + 14
+	    new TestResult(2, 14246043378691319432794011.694m), // 24 + 15
+	    new TestResult(0, -512833781288447.19467146135201m), // 24 + 16
+	    new TestResult(2, 23950454957432221.310300524204m), // 24 + 17
+	    new TestResult(2, -5323259154349219693565099.8912m), // 24 + 18
+	    new TestResult(2, 102801066199293000943805845.3m), // 24 + 19
+	    new TestResult(0, -512826699546563.51087965696755m), // 24 + 20
+	    new TestResult(0, -512418028593384.11316591786927m), // 24 + 21
+	    new TestResult(0, -519223173357216.52647574151969m), // 24 + 22
+	    new TestResult(0, -70487498124408.83056674136954m), // 24 + 23
+	    new TestResult(2, -1025667561734647.7804167488753m), // 24 + 24
+	    new TestResult(2, 608427746910048380.25488137696m), // 24 + 25
+	    new TestResult(2, -42535053826153767833438.927995m), // 24 + 26
+	    new TestResult(2, -7808275035425733974809.7714395m), // 24 + 27
+	    new TestResult(2, 1037807626803760203549192147.8m), // 24 + 28
+	    new TestResult(0, -512838777990290.3388608002092m), // 24 + 29
+	    new TestResult(0, 608940580690915704.1450897514m), // 25 + 0
+	    new TestResult(0, 608940580690915705.1450897514m), // 25 + 1
+	    new TestResult(0, 608940580690915703.1450897514m), // 25 + 2
+	    new TestResult(0, 608940580690915706.1450897514m), // 25 + 3
+	    new TestResult(0, 608940580690915714.1450897514m), // 25 + 4
+	    new TestResult(0, 608940580690915704.2450897514m), // 25 + 5
+	    new TestResult(1, 0m), // 25 + 6
+	    new TestResult(2, -79228162513655397012853034631m), // 25 + 7
+	    new TestResult(2, 27703303076032541300247583.677m), // 25 + 8
+	    new TestResult(0, 608940580687711849.18909293325m), // 25 + 9
+	    new TestResult(2, -48466261503608182880715.883778m), // 25 + 10
+	    new TestResult(0, 63746887448110909.84177600464m), // 25 + 11
+	    new TestResult(0, 608940580690915704.90801315673m), // 25 + 12
+	    new TestResult(2, -399844119084680480268.18965477m), // 25 + 13
+	    new TestResult(2, 222852236725772405105754.76185m), // 25 + 14
+	    new TestResult(2, 14246043988144733904577039.729m), // 25 + 15
+	    new TestResult(0, 608940580690494580.84062666449m), // 25 + 16
+	    new TestResult(0, 633403869429215249.34559865004m), // 25 + 17
+	    new TestResult(2, -5323258544895805221782071.8559m), // 25 + 18
+	    new TestResult(2, 102801066808746415415588873.34m), // 25 + 19
+	    new TestResult(0, 608940587772236464.52441846887m), // 25 + 20
+	    new TestResult(0, 608940996443189643.92213220797m), // 25 + 21
+	    new TestResult(0, 608934191298425811.50882238432m), // 25 + 22
+	    new TestResult(0, 609382926973658619.20473138447m), // 25 + 23
+	    new TestResult(0, 608427746910048380.25488137696m), // 25 + 24
+	    new TestResult(0, 1217881161381831408.2901795028m), // 25 + 25
+	    new TestResult(2, -42534444372739296050410.892697m), // 25 + 26
+	    new TestResult(2, -7807665582011262191781.7361413m), // 25 + 27
+	    new TestResult(2, 1037807627413213618020975175.8m), // 25 + 28
+	    new TestResult(0, 608940575693792737.69643732563m), // 25 + 29
+	    new TestResult(0, -42535053313319986966115.037787m), // 26 + 0
+	    new TestResult(0, -42535053313319986966114.037787m), // 26 + 1
+	    new TestResult(0, -42535053313319986966116.037787m), // 26 + 2
+	    new TestResult(0, -42535053313319986966113.037787m), // 26 + 3
+	    new TestResult(0, -42535053313319986966105.037787m), // 26 + 4
+	    new TestResult(0, -42535053313319986966114.937787m), // 26 + 5
+	    new TestResult(2, 79228119979211024273556984220m), // 26 + 6
+	    new TestResult(1, 0m), // 26 + 7
+	    new TestResult(2, 27660767413778640622365764.494m), // 26 + 8
+	    new TestResult(0, -42535053313319990169969.993784m), // 26 + 9
+	    new TestResult(2, -91001923757508860762535.06666m), // 26 + 10
+	    new TestResult(0, -42535598507013229770909.341101m), // 26 + 11
+	    new TestResult(0, -42535053313319986966114.274864m), // 26 + 12
+	    new TestResult(0, -42935506372985358362087.372532m), // 26 + 13
+	    new TestResult(2, 180316574471871727223935.57897m), // 26 + 14
+	    new TestResult(2, 14203508325890833226695220.546m), // 26 + 15
+	    new TestResult(0, -42535053313319987387238.34225m), // 26 + 16
+	    new TestResult(0, -42535028850031248666569.837278m), // 26 + 17
+	    new TestResult(2, -5365794207149705899663891.0388m), // 26 + 18
+	    new TestResult(2, 102758531146492514737707054.15m), // 26 + 19
+	    new TestResult(0, -42535053313312905645354.658458m), // 26 + 20
+	    new TestResult(0, -42535053312904234692175.260745m), // 26 + 21
+	    new TestResult(0, -42535053319709379456007.674054m), // 26 + 22
+	    new TestResult(0, -42535052870973704223199.978145m), // 26 + 23
+	    new TestResult(0, -42535053826153767833438.927995m), // 26 + 24
+	    new TestResult(0, -42534444372739296050410.892697m), // 26 + 25
+	    new TestResult(2, -85070106626639973932230.07557m), // 26 + 26
+	    new TestResult(0, -50343327835911940073600.919018m), // 26 + 27
+	    new TestResult(2, 1037765091750959717343093356.7m), // 26 + 28
+	    new TestResult(0, -42535053313324984089081.486439m), // 26 + 29
+	    new TestResult(0, -7808274522591953107485.8812311m), // 27 + 0
+	    new TestResult(0, -7808274522591953107484.8812311m), // 27 + 1
+	    new TestResult(0, -7808274522591953107486.8812311m), // 27 + 2
+	    new TestResult(0, -7808274522591953107483.8812311m), // 27 + 3
+	    new TestResult(0, -7808274522591953107475.8812311m), // 27 + 4
+	    new TestResult(0, -7808274522591953107485.7812311m), // 27 + 5
+	    new TestResult(2, 79228154705989815001590842849m), // 27 + 6
+	    new TestResult(1, 0m), // 27 + 7
+	    new TestResult(2, 27695494192569368656224393.651m), // 27 + 8
+	    new TestResult(0, -7808274522591956311340.8372279m), // 27 + 9
+	    new TestResult(2, -56275144966780826903905.910099m), // 27 + 10
+	    new TestResult(0, -7808819716285195912280.1845448m), // 27 + 11
+	    new TestResult(0, -7808274522591953107485.1183077m), // 27 + 12
+	    new TestResult(2, -8208727582257324503458.215976m), // 27 + 13
+	    new TestResult(2, 215043353262599761082564.73553m), // 27 + 14
+	    new TestResult(2, 14238235104681561260553849.703m), // 27 + 15
+	    new TestResult(0, -7808274522591953528609.1856942m), // 27 + 16
+	    new TestResult(0, -7808250059303214807940.6807222m), // 27 + 17
+	    new TestResult(2, -5331067428358977865805261.8822m), // 27 + 18
+	    new TestResult(2, 102793257925283242771565683.31m), // 27 + 19
+	    new TestResult(0, -7808274522584871786725.5019024m), // 27 + 20
+	    new TestResult(0, -7808274522176200833546.1041886m), // 27 + 21
+	    new TestResult(0, -7808274528981345597378.5174985m), // 27 + 22
+	    new TestResult(0, -7808274080245670364570.8215895m), // 27 + 23
+	    new TestResult(0, -7808275035425733974809.7714395m), // 27 + 24
+	    new TestResult(0, -7807665582011262191781.7361413m), // 27 + 25
+	    new TestResult(2, -50343327835911940073600.919018m), // 27 + 26
+	    new TestResult(2, -15616549045183906214971.762462m), // 27 + 27
+	    new TestResult(2, 1037799818529750445376951985.8m), // 27 + 28
+	    new TestResult(0, -7808274522596950230452.3298835m), // 27 + 29
+	    new TestResult(0, 1037807626804273037330059471.7m), // 28 + 0
+	    new TestResult(0, 1037807626804273037330059472.7m), // 28 + 1
+	    new TestResult(0, 1037807626804273037330059470.7m), // 28 + 2
+	    new TestResult(0, 1037807626804273037330059473.7m), // 28 + 3
+	    new TestResult(0, 1037807626804273037330059481.7m), // 28 + 4
+	    new TestResult(0, 1037807626804273037330059471.8m), // 28 + 5
+	    new TestResult(1, 0m), // 28 + 6
+	    new TestResult(2, -78190354887460064556213890863m), // 28 + 7
+	    new TestResult(0, 1065510929271364997939391351.2m), // 28 + 8
+	    new TestResult(0, 1037807626804273037326855616.7m), // 28 + 9
+	    new TestResult(0, 1037759159933828848456263051.7m), // 28 + 10
+	    new TestResult(0, 1037807626259079344087254677.4m), // 28 + 11
+	    new TestResult(0, 1037807626804273037330059472.5m), // 28 + 12
+	    new TestResult(0, 1037807226351213371958663499.4m), // 28 + 13
+	    new TestResult(0, 1038030478432058229044249522.3m), // 28 + 14
+	    new TestResult(0, 1052053670183477190543720807.3m), // 28 + 15
+	    new TestResult(0, 1037807626804273037329638348.4m), // 28 + 16
+	    new TestResult(0, 1037807626828736326068359016.9m), // 28 + 17
+	    new TestResult(0, 1032484367650436651417361695.7m), // 28 + 18
+	    new TestResult(0, 1140608693004078872054732640.9m), // 28 + 19
+	    new TestResult(0, 1037807626804273044411380232.1m), // 28 + 20
+	    new TestResult(0, 1037807626804273453082333411.5m), // 28 + 21
+	    new TestResult(0, 1037807626804266647937569579.1m), // 28 + 22
+	    new TestResult(0, 1037807626804715383612802386.8m), // 28 + 23
+	    new TestResult(0, 1037807626803760203549192147.8m), // 28 + 24
+	    new TestResult(0, 1037807627413213618020975175.8m), // 28 + 25
+	    new TestResult(0, 1037765091750959717343093356.7m), // 28 + 26
+	    new TestResult(0, 1037799818529750445376951985.8m), // 28 + 27
+	    new TestResult(0, 2075615253608546074660118943.4m), // 28 + 28
+	    new TestResult(0, 1037807626804273032332936505.3m), // 28 + 29
+	    new TestResult(0, -4997122966.448652425771563042m), // 29 + 0
+	    new TestResult(0, -4997122965.448652425771563042m), // 29 + 1
+	    new TestResult(0, -4997122967.448652425771563042m), // 29 + 2
+	    new TestResult(0, -4997122964.448652425771563042m), // 29 + 3
+	    new TestResult(0, -4997122956.448652425771563042m), // 29 + 4
+	    new TestResult(0, -4997122966.348652425771563042m), // 29 + 5
+	    new TestResult(2, 79228162514264337588546827369m), // 29 + 6
+	    new TestResult(1, 0m), // 29 + 7
+	    new TestResult(2, 27703302467091955612208913.083m), // 29 + 8
+	    new TestResult(0, -5000326821.4046492439208143805m), // 29 + 9
+	    new TestResult(2, -48466870444193870919386.47752m), // 29 + 10
+	    new TestResult(2, -545193698239927760.75196617253m), // 29 + 11
+	    new TestResult(0, -4997122965.685729020437688861m), // 29 + 12
+	    new TestResult(2, -400453059670368518938.78339695m), // 29 + 13
+	    new TestResult(2, 222851627785186717067084.16811m), // 29 + 14
+	    new TestResult(2, 14246043379204148216538369.135m), // 29 + 15
+	    new TestResult(0, -4997544089.7531155126859290085m), // 29 + 16
+	    new TestResult(2, 24463283741176578.75185647287m), // 29 + 17
+	    new TestResult(2, -5323259153836390909820742.4497m), // 29 + 18
+	    new TestResult(2, 102801066199805829727550202.74m), // 29 + 19
+	    new TestResult(0, 2084197793.9306762916985297548m), // 29 + 20
+	    new TestResult(2, 410755150973.32839003079680737m), // 29 + 21
+	    new TestResult(2, -6394389612859.0849197928536092m), // 29 + 22
+	    new TestResult(2, 442341285619948.61098920729654m), // 29 + 23
+	    new TestResult(2, -512838777990290.3388608002092m), // 29 + 24
+	    new TestResult(2, 608940575693792737.69643732563m), // 29 + 25
+	    new TestResult(2, -42535053313324984089081.486439m), // 29 + 26
+	    new TestResult(2, -7808274522596950230452.3298835m), // 29 + 27
+	    new TestResult(2, 1037807626804273032332936505.3m), // 29 + 28
+	    new TestResult(0, -9994245932.897304851543126084m), // 29 + 29
+        };
+
+
+        // generated result list build2
+        TestResult[] trAuto_Mult_build2 = new TestResult[] {
+	    new TestResult(0, 0m), // 0 * 0
+	    new TestResult(0, 0m), // 0 * 1
+	    new TestResult(0, 0m), // 0 * 2
+	    new TestResult(0, 0m), // 0 * 3
+	    new TestResult(0, 0m), // 0 * 4
+	    new TestResult(0, 0m), // 0 * 5
+	    new TestResult(0, 0m), // 0 * 6
+	    new TestResult(0, 0m), // 0 * 7
+	    new TestResult(0, 0m), // 0 * 8
+	    new TestResult(0, 0m), // 0 * 9
+	    new TestResult(0, 0m), // 0 * 10
+	    new TestResult(0, 0m), // 0 * 11
+	    new TestResult(0, 0m), // 0 * 12
+	    new TestResult(0, 0m), // 0 * 13
+	    new TestResult(0, 0m), // 0 * 14
+	    new TestResult(0, 0m), // 0 * 15
+	    new TestResult(0, 0m), // 0 * 16
+	    new TestResult(0, 0m), // 0 * 17
+	    new TestResult(0, 0m), // 0 * 18
+	    new TestResult(0, 0m), // 0 * 19
+	    new TestResult(0, 0m), // 0 * 20
+	    new TestResult(0, 0m), // 0 * 21
+	    new TestResult(0, 0m), // 0 * 22
+	    new TestResult(0, 0m), // 0 * 23
+	    new TestResult(0, 0m), // 0 * 24
+	    new TestResult(0, 0m), // 0 * 25
+	    new TestResult(0, 0m), // 0 * 26
+	    new TestResult(0, 0m), // 0 * 27
+	    new TestResult(0, 0m), // 0 * 28
+	    new TestResult(0, 0m), // 0 * 29
+	    new TestResult(0, 0m), // 1 * 0
+	    new TestResult(0, 1m), // 1 * 1
+	    new TestResult(0, -1m), // 1 * 2
+	    new TestResult(0, 2m), // 1 * 3
+	    new TestResult(0, 10m), // 1 * 4
+	    new TestResult(0, 0.1m), // 1 * 5
+	    new TestResult(0, 79228162514264337593543950335m), // 1 * 6
+	    new TestResult(0, -79228162514264337593543950335m), // 1 * 7
+	    new TestResult(0, 27703302467091960609331879.532m), // 1 * 8
+	    new TestResult(0, -3203854.9559968181492513385018m), // 1 * 9
+	    new TestResult(0, -48466870444188873796420.028868m), // 1 * 10
+	    new TestResult(0, -545193693242804794.30331374676m), // 1 * 11
+	    new TestResult(0, 0.7629234053338741809892531431m), // 1 * 12
+	    new TestResult(0, -400453059665371395972.33474452m), // 1 * 13
+	    new TestResult(0, 222851627785191714190050.61676m), // 1 * 14
+	    new TestResult(0, 14246043379204153213661335.584m), // 1 * 15
+	    new TestResult(0, -421123.30446308691436596648186m), // 1 * 16
+	    new TestResult(0, 24463288738299545.200508898642m), // 1 * 17
+	    new TestResult(0, -5323259153836385912697776.001m), // 1 * 18
+	    new TestResult(0, 102801066199805834724673169.19m), // 1 * 19
+	    new TestResult(0, 7081320760.3793287174700927968m), // 1 * 20
+	    new TestResult(0, 415752273939.77704245656837041m), // 1 * 21
+	    new TestResult(0, -6389392489892.6362673670820462m), // 1 * 22
+	    new TestResult(0, 442346282742915.0596416330681m), // 1 * 23
+	    new TestResult(0, -512833780867323.89020837443764m), // 1 * 24
+	    new TestResult(0, 608940580690915704.1450897514m), // 1 * 25
+	    new TestResult(0, -42535053313319986966115.037787m), // 1 * 26
+	    new TestResult(0, -7808274522591953107485.8812311m), // 1 * 27
+	    new TestResult(0, 1037807626804273037330059471.7m), // 1 * 28
+	    new TestResult(0, -4997122966.448652425771563042m), // 1 * 29
+	    new TestResult(0, 0m), // 2 * 0
+	    new TestResult(0, -1m), // 2 * 1
+	    new TestResult(0, 1m), // 2 * 2
+	    new TestResult(0, -2m), // 2 * 3
+	    new TestResult(0, -10m), // 2 * 4
+	    new TestResult(0, -0.1m), // 2 * 5
+	    new TestResult(0, -79228162514264337593543950335m), // 2 * 6
+	    new TestResult(0, 79228162514264337593543950335m), // 2 * 7
+	    new TestResult(0, -27703302467091960609331879.532m), // 2 * 8
+	    new TestResult(0, 3203854.9559968181492513385018m), // 2 * 9
+	    new TestResult(0, 48466870444188873796420.028868m), // 2 * 10
+	    new TestResult(0, 545193693242804794.30331374676m), // 2 * 11
+	    new TestResult(0, -0.7629234053338741809892531431m), // 2 * 12
+	    new TestResult(0, 400453059665371395972.33474452m), // 2 * 13
+	    new TestResult(0, -222851627785191714190050.61676m), // 2 * 14
+	    new TestResult(0, -14246043379204153213661335.584m), // 2 * 15
+	    new TestResult(0, 421123.30446308691436596648186m), // 2 * 16
+	    new TestResult(0, -24463288738299545.200508898642m), // 2 * 17
+	    new TestResult(0, 5323259153836385912697776.001m), // 2 * 18
+	    new TestResult(0, -102801066199805834724673169.19m), // 2 * 19
+	    new TestResult(0, -7081320760.3793287174700927968m), // 2 * 20
+	    new TestResult(0, -415752273939.77704245656837041m), // 2 * 21
+	    new TestResult(0, 6389392489892.6362673670820462m), // 2 * 22
+	    new TestResult(0, -442346282742915.0596416330681m), // 2 * 23
+	    new TestResult(0, 512833780867323.89020837443764m), // 2 * 24
+	    new TestResult(0, -608940580690915704.1450897514m), // 2 * 25
+	    new TestResult(0, 42535053313319986966115.037787m), // 2 * 26
+	    new TestResult(0, 7808274522591953107485.8812311m), // 2 * 27
+	    new TestResult(0, -1037807626804273037330059471.7m), // 2 * 28
+	    new TestResult(0, 4997122966.448652425771563042m), // 2 * 29
+	    new TestResult(0, 0m), // 3 * 0
+	    new TestResult(0, 2m), // 3 * 1
+	    new TestResult(0, -2m), // 3 * 2
+	    new TestResult(0, 4m), // 3 * 3
+	    new TestResult(0, 20m), // 3 * 4
+	    new TestResult(0, 0.2m), // 3 * 5
+	    new TestResult(1, 0m), // 3 * 6
+	    new TestResult(1, 0m), // 3 * 7
+	    new TestResult(0, 55406604934183921218663759.064m), // 3 * 8
+	    new TestResult(0, -6407709.9119936362985026770036m), // 3 * 9
+	    new TestResult(2, -96933740888377747592840.05774m), // 3 * 10
+	    new TestResult(0, -1090387386485609588.6066274935m), // 3 * 11
+	    new TestResult(0, 1.5258468106677483619785062862m), // 3 * 12
+	    new TestResult(2, -800906119330742791944.669489m), // 3 * 13
+	    new TestResult(0, 445703255570383428380101.23352m), // 3 * 14
+	    new TestResult(0, 28492086758408306427322671.168m), // 3 * 15
+	    new TestResult(0, -842246.6089261738287319329637m), // 3 * 16
+	    new TestResult(0, 48926577476599090.401017797284m), // 3 * 17
+	    new TestResult(0, -10646518307672771825395552.002m), // 3 * 18
+	    new TestResult(0, 205602132399611669449346338.38m), // 3 * 19
+	    new TestResult(2, 14162641520.758657434940185594m), // 3 * 20
+	    new TestResult(0, 831504547879.5540849131367408m), // 3 * 21
+	    new TestResult(2, -12778784979785.272534734164092m), // 3 * 22
+	    new TestResult(0, 884692565485830.1192832661362m), // 3 * 23
+	    new TestResult(0, -1025667561734647.7804167488753m), // 3 * 24
+	    new TestResult(0, 1217881161381831408.2901795028m), // 3 * 25
+	    new TestResult(2, -85070106626639973932230.07557m), // 3 * 26
+	    new TestResult(0, -15616549045183906214971.762462m), // 3 * 27
+	    new TestResult(0, 2075615253608546074660118943.4m), // 3 * 28
+	    new TestResult(0, -9994245932.897304851543126084m), // 3 * 29
+	    new TestResult(0, 0m), // 4 * 0
+	    new TestResult(0, 10m), // 4 * 1
+	    new TestResult(0, -10m), // 4 * 2
+	    new TestResult(0, 20m), // 4 * 3
+	    new TestResult(0, 100m), // 4 * 4
+	    new TestResult(0, 1m), // 4 * 5
+	    new TestResult(1, 0m), // 4 * 6
+	    new TestResult(1, 0m), // 4 * 7
+	    new TestResult(0, 277033024670919606093318795.32m), // 4 * 8
+	    new TestResult(0, -32038549.559968181492513385018m), // 4 * 9
+	    new TestResult(0, -484668704441888737964200.28868m), // 4 * 10
+	    new TestResult(0, -5451936932428047943.0331374676m), // 4 * 11
+	    new TestResult(0, 7.629234053338741809892531431m), // 4 * 12
+	    new TestResult(0, -4004530596653713959723.3474452m), // 4 * 13
+	    new TestResult(0, 2228516277851917141900506.1676m), // 4 * 14
+	    new TestResult(0, 142460433792041532136613355.84m), // 4 * 15
+	    new TestResult(0, -4211233.0446308691436596648186m), // 4 * 16
+	    new TestResult(0, 244632887382995452.00508898642m), // 4 * 17
+	    new TestResult(0, -53232591538363859126977760.01m), // 4 * 18
+	    new TestResult(0, 1028010661998058347246731691.9m), // 4 * 19
+	    new TestResult(0, 70813207603.793287174700927968m), // 4 * 20
+	    new TestResult(0, 4157522739397.7704245656837041m), // 4 * 21
+	    new TestResult(0, -63893924898926.362673670820462m), // 4 * 22
+	    new TestResult(0, 4423462827429150.596416330681m), // 4 * 23
+	    new TestResult(0, -5128337808673238.9020837443764m), // 4 * 24
+	    new TestResult(0, 6089405806909157041.450897514m), // 4 * 25
+	    new TestResult(0, -425350533133199869661150.37787m), // 4 * 26
+	    new TestResult(0, -78082745225919531074858.812311m), // 4 * 27
+	    new TestResult(0, 10378076268042730373300594717m), // 4 * 28
+	    new TestResult(0, -49971229664.48652425771563042m), // 4 * 29
+	    new TestResult(0, 0m), // 5 * 0
+	    new TestResult(0, 0.1m), // 5 * 1
+	    new TestResult(0, -0.1m), // 5 * 2
+	    new TestResult(0, 0.2m), // 5 * 3
+	    new TestResult(0, 1m), // 5 * 4
+	    new TestResult(0, 0.01m), // 5 * 5
+	    new TestResult(0, 7922816251426433759354395033.5m), // 5 * 6
+	    new TestResult(0, -7922816251426433759354395033.5m), // 5 * 7
+	    new TestResult(0, 2770330246709196060933187.9532m), // 5 * 8
+	    new TestResult(0, -320385.49559968181492513385018m), // 5 * 9
+	    new TestResult(0, -4846687044418887379642.0028868m), // 5 * 10
+	    new TestResult(0, -54519369324280479.430331374676m), // 5 * 11
+	    new TestResult(0, 0.0762923405333874180989253143m), // 5 * 12
+	    new TestResult(0, -40045305966537139597.233474452m), // 5 * 13
+	    new TestResult(0, 22285162778519171419005.061676m), // 5 * 14
+	    new TestResult(0, 1424604337920415321366133.5584m), // 5 * 15
+	    new TestResult(0, -42112.330446308691436596648186m), // 5 * 16
+	    new TestResult(0, 2446328873829954.5200508898642m), // 5 * 17
+	    new TestResult(0, -532325915383638591269777.6001m), // 5 * 18
+	    new TestResult(0, 10280106619980583472467316.919m), // 5 * 19
+	    new TestResult(0, 708132076.03793287174700927968m), // 5 * 20
+	    new TestResult(0, 41575227393.977704245656837041m), // 5 * 21
+	    new TestResult(0, -638939248989.26362673670820462m), // 5 * 22
+	    new TestResult(0, 44234628274291.50596416330681m), // 5 * 23
+	    new TestResult(0, -51283378086732.389020837443764m), // 5 * 24
+	    new TestResult(0, 60894058069091570.41450897514m), // 5 * 25
+	    new TestResult(0, -4253505331331998696611.5037787m), // 5 * 26
+	    new TestResult(0, -780827452259195310748.58812311m), // 5 * 27
+	    new TestResult(0, 103780762680427303733005947.17m), // 5 * 28
+	    new TestResult(0, -499712296.6448652425771563042m), // 5 * 29
+	    new TestResult(0, 0m), // 6 * 0
+	    new TestResult(0, 79228162514264337593543950335m), // 6 * 1
+	    new TestResult(0, -79228162514264337593543950335m), // 6 * 2
+	    new TestResult(1, 0m), // 6 * 3
+	    new TestResult(1, 0m), // 6 * 4
+	    new TestResult(0, 7922816251426433759354395033.5m), // 6 * 5
+	    new TestResult(1, 0m), // 6 * 6
+	    new TestResult(1, 0m), // 6 * 7
+	    new TestResult(1, 0m), // 6 * 8
+	    new TestResult(1, 0m), // 6 * 9
+	    new TestResult(1, 0m), // 6 * 10
+	    new TestResult(1, 0m), // 6 * 11
+	    new TestResult(4, 60445019543728147377669509413m), // 6 * 12
+	    new TestResult(1, 0m), // 6 * 13
+	    new TestResult(1, 0m), // 6 * 14
+	    new TestResult(1, 0m), // 6 * 15
+	    new TestResult(1, 0m), // 6 * 16
+	    new TestResult(1, 0m), // 6 * 17
+	    new TestResult(1, 0m), // 6 * 18
+	    new TestResult(1, 0m), // 6 * 19
+	    new TestResult(1, 0m), // 6 * 20
+	    new TestResult(1, 0m), // 6 * 21
+	    new TestResult(1, 0m), // 6 * 22
+	    new TestResult(1, 0m), // 6 * 23
+	    new TestResult(1, 0m), // 6 * 24
+	    new TestResult(1, 0m), // 6 * 25
+	    new TestResult(1, 0m), // 6 * 26
+	    new TestResult(1, 0m), // 6 * 27
+	    new TestResult(1, 0m), // 6 * 28
+	    new TestResult(1, 0m), // 6 * 29
+	    new TestResult(0, 0m), // 7 * 0
+	    new TestResult(0, -79228162514264337593543950335m), // 7 * 1
+	    new TestResult(0, 79228162514264337593543950335m), // 7 * 2
+	    new TestResult(1, 0m), // 7 * 3
+	    new TestResult(1, 0m), // 7 * 4
+	    new TestResult(0, -7922816251426433759354395033.5m), // 7 * 5
+	    new TestResult(1, 0m), // 7 * 6
+	    new TestResult(1, 0m), // 7 * 7
+	    new TestResult(1, 0m), // 7 * 8
+	    new TestResult(1, 0m), // 7 * 9
+	    new TestResult(1, 0m), // 7 * 10
+	    new TestResult(1, 0m), // 7 * 11
+	    new TestResult(4, -60445019543728147377669509413m), // 7 * 12
+	    new TestResult(1, 0m), // 7 * 13
+	    new TestResult(1, 0m), // 7 * 14
+	    new TestResult(1, 0m), // 7 * 15
+	    new TestResult(1, 0m), // 7 * 16
+	    new TestResult(1, 0m), // 7 * 17
+	    new TestResult(1, 0m), // 7 * 18
+	    new TestResult(1, 0m), // 7 * 19
+	    new TestResult(1, 0m), // 7 * 20
+	    new TestResult(1, 0m), // 7 * 21
+	    new TestResult(1, 0m), // 7 * 22
+	    new TestResult(1, 0m), // 7 * 23
+	    new TestResult(1, 0m), // 7 * 24
+	    new TestResult(1, 0m), // 7 * 25
+	    new TestResult(1, 0m), // 7 * 26
+	    new TestResult(1, 0m), // 7 * 27
+	    new TestResult(1, 0m), // 7 * 28
+	    new TestResult(1, 0m), // 7 * 29
+	    new TestResult(0, 0m), // 8 * 0
+	    new TestResult(0, 27703302467091960609331879.532m), // 8 * 1
+	    new TestResult(0, -27703302467091960609331879.532m), // 8 * 2
+	    new TestResult(0, 55406604934183921218663759.064m), // 8 * 3
+	    new TestResult(0, 277033024670919606093318795.32m), // 8 * 4
+	    new TestResult(0, 2770330246709196060933187.9532m), // 8 * 5
+	    new TestResult(1, 0m), // 8 * 6
+	    new TestResult(1, 0m), // 8 * 7
+	    new TestResult(1, 0m), // 8 * 8
+	    new TestResult(1, 0m), // 8 * 9
+	    new TestResult(1, 0m), // 8 * 10
+	    new TestResult(1, 0m), // 8 * 11
+	    new TestResult(2, 21135497857188116458095236.68m), // 8 * 12
+	    new TestResult(1, 0m), // 8 * 13
+	    new TestResult(1, 0m), // 8 * 14
+	    new TestResult(1, 0m), // 8 * 15
+	    new TestResult(1, 0m), // 8 * 16
+	    new TestResult(1, 0m), // 8 * 17
+	    new TestResult(1, 0m), // 8 * 18
+	    new TestResult(1, 0m), // 8 * 19
+	    new TestResult(1, 0m), // 8 * 20
+	    new TestResult(1, 0m), // 8 * 21
+	    new TestResult(1, 0m), // 8 * 22
+	    new TestResult(1, 0m), // 8 * 23
+	    new TestResult(1, 0m), // 8 * 24
+	    new TestResult(1, 0m), // 8 * 25
+	    new TestResult(1, 0m), // 8 * 26
+	    new TestResult(1, 0m), // 8 * 27
+	    new TestResult(1, 0m), // 8 * 28
+	    new TestResult(1, 0m), // 8 * 29
+	    new TestResult(0, 0m), // 9 * 0
+	    new TestResult(0, -3203854.9559968181492513385018m), // 9 * 1
+	    new TestResult(0, 3203854.9559968181492513385018m), // 9 * 2
+	    new TestResult(0, -6407709.9119936362985026770036m), // 9 * 3
+	    new TestResult(0, -32038549.559968181492513385018m), // 9 * 4
+	    new TestResult(0, -320385.49559968181492513385018m), // 9 * 5
+	    new TestResult(1, 0m), // 9 * 6
+	    new TestResult(1, 0m), // 9 * 7
+	    new TestResult(1, 0m), // 9 * 8
+	    new TestResult(2, 10264686579065.373559419307221m), // 9 * 9
+	    new TestResult(1, 0m), // 9 * 10
+	    new TestResult(2, 1746721516074169126608222.1692m), // 9 * 11
+	    new TestResult(2, -2444295.933224902121034426698m), // 9 * 12
+	    new TestResult(2, 1282993519852989666698903060.5m), // 9 * 13
+	    new TestResult(1, 0m), // 9 * 14
+	    new TestResult(1, 0m), // 9 * 15
+	    new TestResult(0, 1349217986089.8179781485646335m), // 9 * 16
+	    new TestResult(0, -78376828864182146369609.767831m), // 9 * 17
+	    new TestResult(1, 0m), // 9 * 18
+	    new TestResult(1, 0m), // 9 * 19
+	    new TestResult(0, -22687524613144469.045656755412m), // 9 * 20
+	    new TestResult(0, -1332009983328901461.3254059884m), // 9 * 21
+	    new TestResult(0, 20470686794551372519.831909846m), // 9 * 22
+	    new TestResult(0, -1417213330232658207868.9685141m), // 9 * 23
+	    new TestResult(0, 1643045050434361863551.7087135m), // 9 * 24
+	    new TestResult(0, -1950957297354170624860913.7855m), // 9 * 25
+	    new TestResult(1, 0m), // 9 * 26
+	    new TestResult(0, 25016579026989918165002777574m), // 9 * 27
+	    new TestResult(1, 0m), // 9 * 28
+	    new TestResult(2, 16010057181782036.694377696165m), // 9 * 29
+	    new TestResult(0, 0m), // 10 * 0
+	    new TestResult(0, -48466870444188873796420.028868m), // 10 * 1
+	    new TestResult(0, 48466870444188873796420.028868m), // 10 * 2
+	    new TestResult(2, -96933740888377747592840.05774m), // 10 * 3
+	    new TestResult(0, -484668704441888737964200.28868m), // 10 * 4
+	    new TestResult(0, -4846687044418887379642.0028868m), // 10 * 5
+	    new TestResult(1, 0m), // 10 * 6
+	    new TestResult(1, 0m), // 10 * 7
+	    new TestResult(1, 0m), // 10 * 8
+	    new TestResult(1, 0m), // 10 * 9
+	    new TestResult(1, 0m), // 10 * 10
+	    new TestResult(1, 0m), // 10 * 11
+	    new TestResult(0, -36976509845156274734545.845161m), // 10 * 12
+	    new TestResult(1, 0m), // 10 * 13
+	    new TestResult(1, 0m), // 10 * 14
+	    new TestResult(1, 0m), // 10 * 15
+	    new TestResult(2, 20410528638441139616161910791m), // 10 * 16
+	    new TestResult(1, 0m), // 10 * 17
+	    new TestResult(1, 0m), // 10 * 18
+	    new TestResult(1, 0m), // 10 * 19
+	    new TestResult(1, 0m), // 10 * 20
+	    new TestResult(1, 0m), // 10 * 21
+	    new TestResult(1, 0m), // 10 * 22
+	    new TestResult(1, 0m), // 10 * 23
+	    new TestResult(1, 0m), // 10 * 24
+	    new TestResult(1, 0m), // 10 * 25
+	    new TestResult(1, 0m), // 10 * 26
+	    new TestResult(1, 0m), // 10 * 27
+	    new TestResult(1, 0m), // 10 * 28
+	    new TestResult(1, 0m), // 10 * 29
+	    new TestResult(0, 0m), // 11 * 0
+	    new TestResult(0, -545193693242804794.30331374676m), // 11 * 1
+	    new TestResult(0, 545193693242804794.30331374676m), // 11 * 2
+	    new TestResult(2, -1090387386485609588.6066274935m), // 11 * 3
+	    new TestResult(0, -5451936932428047943.0331374676m), // 11 * 4
+	    new TestResult(0, -54519369324280479.430331374676m), // 11 * 5
+	    new TestResult(1, 0m), // 11 * 6
+	    new TestResult(1, 0m), // 11 * 7
+	    new TestResult(1, 0m), // 11 * 8
+	    new TestResult(2, 1746721516074169126608222.1692m), // 11 * 9
+	    new TestResult(1, 0m), // 11 * 10
+	    new TestResult(1, 0m), // 11 * 11
+	    new TestResult(0, -415941029015352223.2321562927m), // 11 * 12
+	    new TestResult(1, 0m), // 11 * 13
+	    new TestResult(1, 0m), // 11 * 14
+	    new TestResult(1, 0m), // 11 * 15
+	    new TestResult(0, 229593769670844494339647.60593m), // 11 * 16
+	    new TestResult(1, 0m), // 11 * 17
+	    new TestResult(1, 0m), // 11 * 18
+	    new TestResult(1, 0m), // 11 * 19
+	    new TestResult(0, -3860691418388152934958161711.9m), // 11 * 20
+	    new TestResult(1, 0m), // 11 * 21
+	    new TestResult(1, 0m), // 11 * 22
+	    new TestResult(1, 0m), // 11 * 23
+	    new TestResult(1, 0m), // 11 * 24
+	    new TestResult(1, 0m), // 11 * 25
+	    new TestResult(1, 0m), // 11 * 26
+	    new TestResult(1, 0m), // 11 * 27
+	    new TestResult(1, 0m), // 11 * 28
+	    new TestResult(2, 2724399925666581324856736883m), // 11 * 29
+	    new TestResult(0, 0m), // 12 * 0
+	    new TestResult(0, 0.7629234053338741809892531431m), // 12 * 1
+	    new TestResult(0, -0.7629234053338741809892531431m), // 12 * 2
+	    new TestResult(0, 1.5258468106677483619785062862m), // 12 * 3
+	    new TestResult(0, 7.629234053338741809892531431m), // 12 * 4
+	    new TestResult(2, 0.0762923405333874180989253143m), // 12 * 5
+	    new TestResult(0, 60445019543728147377669509413m), // 12 * 6
+	    new TestResult(0, -60445019543728147377669509413m), // 12 * 7
+	    new TestResult(0, 21135497857188116458095236.68m), // 12 * 8
+	    new TestResult(0, -2444295.933224902121034426698m), // 12 * 9
+	    new TestResult(0, -36976509845156274734545.845161m), // 12 * 10
+	    new TestResult(0, -415941029015352223.2321562927m), // 12 * 11
+	    new TestResult(0, 0.5820521224062348791152865214m), // 12 * 12
+	    new TestResult(0, -305515011956274243325.23330625m), // 12 * 13
+	    new TestResult(0, 170018722754075475876563.00661m), // 12 * 14
+	    new TestResult(0, 10868639927396524825477357.557m), // 12 * 15
+	    new TestResult(0, -321284.82550643216389212760083m), // 12 * 16
+	    new TestResult(0, 18663615549889303.426127037208m), // 12 * 17
+	    new TestResult(0, -4061239001119573143590088.0528m), // 12 * 18
+	    new TestResult(0, 78429339497108899549297058.831m), // 12 * 19
+	    new TestResult(0, 5402505348.7700567259404098662m), // 12 * 20
+	    new TestResult(0, 317187140609.43641612785737895m), // 12 * 21
+	    new TestResult(0, -4874617076403.5713301079734445m), // 12 * 22
+	    new TestResult(0, 337476332367005.49979200414696m), // 12 * 23
+	    new TestResult(0, -391252894469544.55412631906773m), // 12 * 24
+	    new TestResult(0, 464575021466700199.22364418475m), // 12 * 25
+	    new TestResult(0, -32450987719855972399063.033158m), // 12 * 26
+	    new TestResult(0, -5957115388557583551533.0994303m), // 12 * 27
+	    new TestResult(0, 791767728722982425613218218.59m), // 12 * 28
+	    new TestResult(0, -3812422070.43511700405678157m), // 12 * 29
+	    new TestResult(0, 0m), // 13 * 0
+	    new TestResult(0, -400453059665371395972.33474452m), // 13 * 1
+	    new TestResult(0, 400453059665371395972.33474452m), // 13 * 2
+	    new TestResult(2, -800906119330742791944.669489m), // 13 * 3
+	    new TestResult(0, -4004530596653713959723.3474452m), // 13 * 4
+	    new TestResult(0, -40045305966537139597.233474452m), // 13 * 5
+	    new TestResult(1, 0m), // 13 * 6
+	    new TestResult(1, 0m), // 13 * 7
+	    new TestResult(1, 0m), // 13 * 8
+	    new TestResult(2, 1282993519852989666698903060.5m), // 13 * 9
+	    new TestResult(1, 0m), // 13 * 10
+	    new TestResult(1, 0m), // 13 * 11
+	    new TestResult(0, -305515011956274243325.23330625m), // 13 * 12
+	    new TestResult(1, 0m), // 13 * 13
+	    new TestResult(1, 0m), // 13 * 14
+	    new TestResult(1, 0m), // 13 * 15
+	    new TestResult(2, 168640115768634908407809010.03m), // 13 * 16
+	    new TestResult(1, 0m), // 13 * 17
+	    new TestResult(1, 0m), // 13 * 18
+	    new TestResult(1, 0m), // 13 * 19
+	    new TestResult(1, 0m), // 13 * 20
+	    new TestResult(1, 0m), // 13 * 21
+	    new TestResult(1, 0m), // 13 * 22
+	    new TestResult(1, 0m), // 13 * 23
+	    new TestResult(1, 0m), // 13 * 24
+	    new TestResult(1, 0m), // 13 * 25
+	    new TestResult(1, 0m), // 13 * 26
+	    new TestResult(1, 0m), // 13 * 27
+	    new TestResult(1, 0m), // 13 * 28
+	    new TestResult(1, 0m), // 13 * 29
+	    new TestResult(0, 0m), // 14 * 0
+	    new TestResult(0, 222851627785191714190050.61676m), // 14 * 1
+	    new TestResult(0, -222851627785191714190050.61676m), // 14 * 2
+	    new TestResult(0, 445703255570383428380101.23352m), // 14 * 3
+	    new TestResult(0, 2228516277851917141900506.1676m), // 14 * 4
+	    new TestResult(0, 22285162778519171419005.061676m), // 14 * 5
+	    new TestResult(1, 0m), // 14 * 6
+	    new TestResult(1, 0m), // 14 * 7
+	    new TestResult(1, 0m), // 14 * 8
+	    new TestResult(1, 0m), // 14 * 9
+	    new TestResult(1, 0m), // 14 * 10
+	    new TestResult(1, 0m), // 14 * 11
+	    new TestResult(0, 170018722754075475876563.00661m), // 14 * 12
+	    new TestResult(1, 0m), // 14 * 13
+	    new TestResult(1, 0m), // 14 * 14
+	    new TestResult(1, 0m), // 14 * 15
+	    new TestResult(1, 0m), // 14 * 16
+	    new TestResult(1, 0m), // 14 * 17
+	    new TestResult(1, 0m), // 14 * 18
+	    new TestResult(1, 0m), // 14 * 19
+	    new TestResult(1, 0m), // 14 * 20
+	    new TestResult(1, 0m), // 14 * 21
+	    new TestResult(1, 0m), // 14 * 22
+	    new TestResult(1, 0m), // 14 * 23
+	    new TestResult(1, 0m), // 14 * 24
+	    new TestResult(1, 0m), // 14 * 25
+	    new TestResult(1, 0m), // 14 * 26
+	    new TestResult(1, 0m), // 14 * 27
+	    new TestResult(1, 0m), // 14 * 28
+	    new TestResult(1, 0m), // 14 * 29
+	    new TestResult(0, 0m), // 15 * 0
+	    new TestResult(0, 14246043379204153213661335.584m), // 15 * 1
+	    new TestResult(0, -14246043379204153213661335.584m), // 15 * 2
+	    new TestResult(0, 28492086758408306427322671.168m), // 15 * 3
+	    new TestResult(0, 142460433792041532136613355.84m), // 15 * 4
+	    new TestResult(0, 1424604337920415321366133.5584m), // 15 * 5
+	    new TestResult(1, 0m), // 15 * 6
+	    new TestResult(1, 0m), // 15 * 7
+	    new TestResult(1, 0m), // 15 * 8
+	    new TestResult(1, 0m), // 15 * 9
+	    new TestResult(1, 0m), // 15 * 10
+	    new TestResult(1, 0m), // 15 * 11
+	    new TestResult(0, 10868639927396524825477357.557m), // 15 * 12
+	    new TestResult(1, 0m), // 15 * 13
+	    new TestResult(1, 0m), // 15 * 14
+	    new TestResult(1, 0m), // 15 * 15
+	    new TestResult(1, 0m), // 15 * 16
+	    new TestResult(1, 0m), // 15 * 17
+	    new TestResult(1, 0m), // 15 * 18
+	    new TestResult(1, 0m), // 15 * 19
+	    new TestResult(1, 0m), // 15 * 20
+	    new TestResult(1, 0m), // 15 * 21
+	    new TestResult(1, 0m), // 15 * 22
+	    new TestResult(1, 0m), // 15 * 23
+	    new TestResult(1, 0m), // 15 * 24
+	    new TestResult(1, 0m), // 15 * 25
+	    new TestResult(1, 0m), // 15 * 26
+	    new TestResult(1, 0m), // 15 * 27
+	    new TestResult(1, 0m), // 15 * 28
+	    new TestResult(1, 0m), // 15 * 29
+	    new TestResult(0, 0m), // 16 * 0
+	    new TestResult(0, -421123.30446308691436596648186m), // 16 * 1
+	    new TestResult(0, 421123.30446308691436596648186m), // 16 * 2
+	    new TestResult(2, -842246.6089261738287319329637m), // 16 * 3
+	    new TestResult(0, -4211233.0446308691436596648186m), // 16 * 4
+	    new TestResult(0, -42112.330446308691436596648186m), // 16 * 5
+	    new TestResult(1, 0m), // 16 * 6
+	    new TestResult(1, 0m), // 16 * 7
+	    new TestResult(1, 0m), // 16 * 8
+	    new TestResult(0, 1349217986089.8179781485646335m), // 16 * 9
+	    new TestResult(2, 20410528638441139616161910791m), // 16 * 10
+	    new TestResult(0, 229593769670844494339647.60593m), // 16 * 11
+	    new TestResult(0, -321284.82550643216389212760083m), // 16 * 12
+	    new TestResult(2, 168640115768634908407809010.03m), // 16 * 13
+	    new TestResult(1, 0m), // 16 * 14
+	    new TestResult(1, 0m), // 16 * 15
+	    new TestResult(2, 177344837561.90979904837123025m), // 16 * 16
+	    new TestResult(2, -10302060991507324713598.483586m), // 16 * 17
+	    new TestResult(1, 0m), // 16 * 18
+	    new TestResult(1, 0m), // 16 * 19
+	    new TestResult(2, -2982109198574002.1833628108505m), // 16 * 20
+	    new TestResult(2, -175082971439561442.82206371811m), // 16 * 21
+	    new TestResult(2, 2690722078855217643.0013135833m), // 16 * 22
+	    new TestResult(2, -186282328305659347664.31347679m), // 16 * 23
+	    new TestResult(2, 215966256439146035447.16512997m), // 16 * 24
+	    new TestResult(0, -256439069562229438659442.67473m), // 16 * 25
+	    new TestResult(2, 17912502206818886711664532432m), // 16 * 26
+	    new TestResult(0, 3288246369108855691627019039.6m), // 16 * 27
+	    new TestResult(1, 0m), // 16 * 28
+	    new TestResult(2, 2104404936439239.9111285468803m), // 16 * 29
+	    new TestResult(0, 0m), // 17 * 0
+	    new TestResult(0, 24463288738299545.200508898642m), // 17 * 1
+	    new TestResult(0, -24463288738299545.200508898642m), // 17 * 2
+	    new TestResult(0, 48926577476599090.401017797284m), // 17 * 3
+	    new TestResult(0, 244632887382995452.00508898642m), // 17 * 4
+	    new TestResult(0, 2446328873829954.5200508898642m), // 17 * 5
+	    new TestResult(1, 0m), // 17 * 6
+	    new TestResult(1, 0m), // 17 * 7
+	    new TestResult(1, 0m), // 17 * 8
+	    new TestResult(0, -78376828864182146369609.767831m), // 17 * 9
+	    new TestResult(1, 0m), // 17 * 10
+	    new TestResult(1, 0m), // 17 * 11
+	    new TestResult(0, 18663615549889303.426127037208m), // 17 * 12
+	    new TestResult(1, 0m), // 17 * 13
+	    new TestResult(1, 0m), // 17 * 14
+	    new TestResult(1, 0m), // 17 * 15
+	    new TestResult(2, -10302060991507324713598.483586m), // 17 * 16
+	    new TestResult(1, 0m), // 17 * 17
+	    new TestResult(1, 0m), // 17 * 18
+	    new TestResult(1, 0m), // 17 * 19
+	    new TestResult(0, 173232394409674404469121757.58m), // 17 * 20
+	    new TestResult(2, 10170667920993375211218037940m), // 17 * 21
+	    new TestResult(1, 0m), // 17 * 22
+	    new TestResult(1, 0m), // 17 * 23
+	    new TestResult(1, 0m), // 17 * 24
+	    new TestResult(1, 0m), // 17 * 25
+	    new TestResult(1, 0m), // 17 * 26
+	    new TestResult(1, 0m), // 17 * 27
+	    new TestResult(1, 0m), // 17 * 28
+	    new TestResult(0, -122246061989021334943606343.1m), // 17 * 29
+	    new TestResult(0, 0m), // 18 * 0
+	    new TestResult(0, -5323259153836385912697776.001m), // 18 * 1
+	    new TestResult(0, 5323259153836385912697776.001m), // 18 * 2
+	    new TestResult(0, -10646518307672771825395552.002m), // 18 * 3
+	    new TestResult(0, -53232591538363859126977760.01m), // 18 * 4
+	    new TestResult(0, -532325915383638591269777.6001m), // 18 * 5
+	    new TestResult(1, 0m), // 18 * 6
+	    new TestResult(1, 0m), // 18 * 7
+	    new TestResult(1, 0m), // 18 * 8
+	    new TestResult(1, 0m), // 18 * 9
+	    new TestResult(1, 0m), // 18 * 10
+	    new TestResult(1, 0m), // 18 * 11
+	    new TestResult(2, -4061239001119573143590088.0528m), // 18 * 12
+	    new TestResult(1, 0m), // 18 * 13
+	    new TestResult(1, 0m), // 18 * 14
+	    new TestResult(1, 0m), // 18 * 15
+	    new TestResult(1, 0m), // 18 * 16
+	    new TestResult(1, 0m), // 18 * 17
+	    new TestResult(1, 0m), // 18 * 18
+	    new TestResult(1, 0m), // 18 * 19
+	    new TestResult(1, 0m), // 18 * 20
+	    new TestResult(1, 0m), // 18 * 21
+	    new TestResult(1, 0m), // 18 * 22
+	    new TestResult(1, 0m), // 18 * 23
+	    new TestResult(1, 0m), // 18 * 24
+	    new TestResult(1, 0m), // 18 * 25
+	    new TestResult(1, 0m), // 18 * 26
+	    new TestResult(1, 0m), // 18 * 27
+	    new TestResult(1, 0m), // 18 * 28
+	    new TestResult(1, 0m), // 18 * 29
+	    new TestResult(0, 0m), // 19 * 0
+	    new TestResult(0, 102801066199805834724673169.19m), // 19 * 1
+	    new TestResult(0, -102801066199805834724673169.19m), // 19 * 2
+	    new TestResult(0, 205602132399611669449346338.38m), // 19 * 3
+	    new TestResult(0, 1028010661998058347246731691.9m), // 19 * 4
+	    new TestResult(0, 10280106619980583472467316.919m), // 19 * 5
+	    new TestResult(1, 0m), // 19 * 6
+	    new TestResult(1, 0m), // 19 * 7
+	    new TestResult(1, 0m), // 19 * 8
+	    new TestResult(1, 0m), // 19 * 9
+	    new TestResult(1, 0m), // 19 * 10
+	    new TestResult(1, 0m), // 19 * 11
+	    new TestResult(0, 78429339497108899549297058.831m), // 19 * 12
+	    new TestResult(1, 0m), // 19 * 13
+	    new TestResult(1, 0m), // 19 * 14
+	    new TestResult(1, 0m), // 19 * 15
+	    new TestResult(1, 0m), // 19 * 16
+	    new TestResult(1, 0m), // 19 * 17
+	    new TestResult(1, 0m), // 19 * 18
+	    new TestResult(1, 0m), // 19 * 19
+	    new TestResult(1, 0m), // 19 * 20
+	    new TestResult(1, 0m), // 19 * 21
+	    new TestResult(1, 0m), // 19 * 22
+	    new TestResult(1, 0m), // 19 * 23
+	    new TestResult(1, 0m), // 19 * 24
+	    new TestResult(1, 0m), // 19 * 25
+	    new TestResult(1, 0m), // 19 * 26
+	    new TestResult(1, 0m), // 19 * 27
+	    new TestResult(1, 0m), // 19 * 28
+	    new TestResult(1, 0m), // 19 * 29
+	    new TestResult(0, 0m), // 20 * 0
+	    new TestResult(0, 7081320760.3793287174700927968m), // 20 * 1
+	    new TestResult(0, -7081320760.3793287174700927968m), // 20 * 2
+	    new TestResult(2, 14162641520.758657434940185594m), // 20 * 3
+	    new TestResult(0, 70813207603.793287174700927968m), // 20 * 4
+	    new TestResult(0, 708132076.03793287174700927968m), // 20 * 5
+	    new TestResult(1, 0m), // 20 * 6
+	    new TestResult(1, 0m), // 20 * 7
+	    new TestResult(1, 0m), // 20 * 8
+	    new TestResult(0, -22687524613144469.045656755412m), // 20 * 9
+	    new TestResult(1, 0m), // 20 * 10
+	    new TestResult(0, -3860691418388152934958161711.9m), // 20 * 11
+	    new TestResult(0, 5402505348.7700567259404098662m), // 20 * 12
+	    new TestResult(1, 0m), // 20 * 13
+	    new TestResult(1, 0m), // 20 * 14
+	    new TestResult(1, 0m), // 20 * 15
+	    new TestResult(2, -2982109198574002.1833628108505m), // 20 * 16
+	    new TestResult(2, 173232394409674404469121757.58m), // 20 * 17
+	    new TestResult(1, 0m), // 20 * 18
+	    new TestResult(1, 0m), // 20 * 19
+	    new TestResult(0, 50145103711379274243.914175878m), // 20 * 20
+	    new TestResult(2, 2944075208624656937377.9493098m), // 20 * 21
+	    new TestResult(0, -45245337684888495429839.445203m), // 20 * 22
+	    new TestResult(2, 3132395915264028802867467.4171m), // 20 * 23
+	    new TestResult(2, -3631540499079604049748263.216m), // 20 * 24
+	    new TestResult(0, 4312103575884025168661620716.9m), // 20 * 25
+	    new TestResult(1, 0m), // 20 * 26
+	    new TestResult(1, 0m), // 20 * 27
+	    new TestResult(1, 0m), // 20 * 28
+	    new TestResult(2, -35386230604481178142.543841269m), // 20 * 29
+	    new TestResult(0, 0m), // 21 * 0
+	    new TestResult(0, 415752273939.77704245656837041m), // 21 * 1
+	    new TestResult(0, -415752273939.77704245656837041m), // 21 * 2
+	    new TestResult(2, 831504547879.5540849131367408m), // 21 * 3
+	    new TestResult(0, 4157522739397.7704245656837041m), // 21 * 4
+	    new TestResult(0, 41575227393.977704245656837041m), // 21 * 5
+	    new TestResult(1, 0m), // 21 * 6
+	    new TestResult(1, 0m), // 21 * 7
+	    new TestResult(1, 0m), // 21 * 8
+	    new TestResult(2, -1332009983328901461.3254059884m), // 21 * 9
+	    new TestResult(1, 0m), // 21 * 10
+	    new TestResult(1, 0m), // 21 * 11
+	    new TestResult(0, 317187140609.43641612785737895m), // 21 * 12
+	    new TestResult(1, 0m), // 21 * 13
+	    new TestResult(1, 0m), // 21 * 14
+	    new TestResult(1, 0m), // 21 * 15
+	    new TestResult(2, -175082971439561442.82206371811m), // 21 * 16
+	    new TestResult(2, 10170667920993375211218037940m), // 21 * 17
+	    new TestResult(1, 0m), // 21 * 18
+	    new TestResult(1, 0m), // 21 * 19
+	    new TestResult(2, 2944075208624656937377.9493098m), // 21 * 20
+	    new TestResult(2, 172849953286095412912252.49708m), // 21 * 21
+	    new TestResult(2, -2656404456766597431365611.212m), // 21 * 22
+	    new TestResult(0, 183906472919174492029733196.17m), // 21 * 23
+	    new TestResult(0, -213211810548723232636647639.7m), // 21 * 24
+	    new TestResult(1, 0m), // 21 * 25
+	    new TestResult(1, 0m), // 21 * 26
+	    new TestResult(1, 0m), // 21 * 27
+	    new TestResult(1, 0m), // 21 * 28
+	    new TestResult(0, -2077565236457711426002.3992246m), // 21 * 29
+	    new TestResult(0, 0m), // 22 * 0
+	    new TestResult(0, -6389392489892.6362673670820462m), // 22 * 1
+	    new TestResult(0, 6389392489892.6362673670820462m), // 22 * 2
+	    new TestResult(2, -12778784979785.272534734164092m), // 22 * 3
+	    new TestResult(0, -63893924898926.362673670820462m), // 22 * 4
+	    new TestResult(0, -638939248989.26362673670820462m), // 22 * 5
+	    new TestResult(1, 0m), // 22 * 6
+	    new TestResult(1, 0m), // 22 * 7
+	    new TestResult(1, 0m), // 22 * 8
+	    new TestResult(2, 20470686794551372519.831909846m), // 22 * 9
+	    new TestResult(1, 0m), // 22 * 10
+	    new TestResult(1, 0m), // 22 * 11
+	    new TestResult(0, -4874617076403.5713301079734445m), // 22 * 12
+	    new TestResult(1, 0m), // 22 * 13
+	    new TestResult(1, 0m), // 22 * 14
+	    new TestResult(1, 0m), // 22 * 15
+	    new TestResult(2, 2690722078855217643.0013135833m), // 22 * 16
+	    new TestResult(1, 0m), // 22 * 17
+	    new TestResult(1, 0m), // 22 * 18
+	    new TestResult(1, 0m), // 22 * 19
+	    new TestResult(0, -45245337684888495429839.445203m), // 22 * 20
+	    new TestResult(2, -2656404456766597431365611.212m), // 22 * 21
+	    new TestResult(2, 40824336389896422046045259.169m), // 22 * 22
+	    new TestResult(2, -2826324016889506134750576955.1m), // 22 * 23
+	    new TestResult(2, 3276696308036925201560804370m), // 22 * 24
+	    new TestResult(1, 0m), // 22 * 25
+	    new TestResult(1, 0m), // 22 * 26
+	    new TestResult(1, 0m), // 22 * 27
+	    new TestResult(1, 0m), // 22 * 28
+	    new TestResult(2, 31928579952897032005741.500403m), // 22 * 29
+	    new TestResult(0, 0m), // 23 * 0
+	    new TestResult(0, 442346282742915.0596416330681m), // 23 * 1
+	    new TestResult(0, -442346282742915.0596416330681m), // 23 * 2
+	    new TestResult(0, 884692565485830.1192832661362m), // 23 * 3
+	    new TestResult(0, 4423462827429150.596416330681m), // 23 * 4
+	    new TestResult(0, 44234628274291.50596416330681m), // 23 * 5
+	    new TestResult(1, 0m), // 23 * 6
+	    new TestResult(1, 0m), // 23 * 7
+	    new TestResult(1, 0m), // 23 * 8
+	    new TestResult(2, -1417213330232658207868.9685141m), // 23 * 9
+	    new TestResult(1, 0m), // 23 * 10
+	    new TestResult(1, 0m), // 23 * 11
+	    new TestResult(2, 337476332367005.49979200414696m), // 23 * 12
+	    new TestResult(1, 0m), // 23 * 13
+	    new TestResult(1, 0m), // 23 * 14
+	    new TestResult(1, 0m), // 23 * 15
+	    new TestResult(2, -186282328305659347664.31347679m), // 23 * 16
+	    new TestResult(1, 0m), // 23 * 17
+	    new TestResult(1, 0m), // 23 * 18
+	    new TestResult(1, 0m), // 23 * 19
+	    new TestResult(2, 3132395915264028802867467.4171m), // 23 * 20
+	    new TestResult(0, 183906472919174492029733196.17m), // 23 * 21
+	    new TestResult(2, -2826324016889506134750576955.1m), // 23 * 22
+	    new TestResult(1, 0m), // 23 * 23
+	    new TestResult(1, 0m), // 23 * 24
+	    new TestResult(1, 0m), // 23 * 25
+	    new TestResult(1, 0m), // 23 * 26
+	    new TestResult(1, 0m), // 23 * 27
+	    new TestResult(1, 0m), // 23 * 28
+	    new TestResult(2, -2210458768617810051106106.871m), // 23 * 29
+	    new TestResult(0, 0m), // 24 * 0
+	    new TestResult(0, -512833780867323.89020837443764m), // 24 * 1
+	    new TestResult(0, 512833780867323.89020837443764m), // 24 * 2
+	    new TestResult(2, -1025667561734647.7804167488753m), // 24 * 3
+	    new TestResult(0, -5128337808673238.9020837443764m), // 24 * 4
+	    new TestResult(0, -51283378086732.389020837443764m), // 24 * 5
+	    new TestResult(1, 0m), // 24 * 6
+	    new TestResult(1, 0m), // 24 * 7
+	    new TestResult(1, 0m), // 24 * 8
+	    new TestResult(0, 1643045050434361863551.7087135m), // 24 * 9
+	    new TestResult(1, 0m), // 24 * 10
+	    new TestResult(1, 0m), // 24 * 11
+	    new TestResult(0, -391252894469544.55412631906773m), // 24 * 12
+	    new TestResult(1, 0m), // 24 * 13
+	    new TestResult(1, 0m), // 24 * 14
+	    new TestResult(1, 0m), // 24 * 15
+	    new TestResult(2, 215966256439146035447.16512997m), // 24 * 16
+	    new TestResult(1, 0m), // 24 * 17
+	    new TestResult(1, 0m), // 24 * 18
+	    new TestResult(1, 0m), // 24 * 19
+	    new TestResult(2, -3631540499079604049748263.216m), // 24 * 20
+	    new TestResult(0, -213211810548723232636647639.7m), // 24 * 21
+	    new TestResult(2, 3276696308036925201560804370m), // 24 * 22
+	    new TestResult(1, 0m), // 24 * 23
+	    new TestResult(1, 0m), // 24 * 24
+	    new TestResult(1, 0m), // 24 * 25
+	    new TestResult(1, 0m), // 24 * 26
+	    new TestResult(1, 0m), // 24 * 27
+	    new TestResult(1, 0m), // 24 * 28
+	    new TestResult(2, 2562693464342799730524457.4865m), // 24 * 29
+	    new TestResult(0, 0m), // 25 * 0
+	    new TestResult(0, 608940580690915704.1450897514m), // 25 * 1
+	    new TestResult(0, -608940580690915704.1450897514m), // 25 * 2
+	    new TestResult(0, 1217881161381831408.2901795028m), // 25 * 3
+	    new TestResult(0, 6089405806909157041.450897514m), // 25 * 4
+	    new TestResult(0, 60894058069091570.41450897514m), // 25 * 5
+	    new TestResult(1, 0m), // 25 * 6
+	    new TestResult(1, 0m), // 25 * 7
+	    new TestResult(1, 0m), // 25 * 8
+	    new TestResult(0, -1950957297354170624860913.7855m), // 25 * 9
+	    new TestResult(1, 0m), // 25 * 10
+	    new TestResult(1, 0m), // 25 * 11
+	    new TestResult(0, 464575021466700199.22364418475m), // 25 * 12
+	    new TestResult(1, 0m), // 25 * 13
+	    new TestResult(1, 0m), // 25 * 14
+	    new TestResult(1, 0m), // 25 * 15
+	    new TestResult(0, -256439069562229438659442.67473m), // 25 * 16
+	    new TestResult(1, 0m), // 25 * 17
+	    new TestResult(1, 0m), // 25 * 18
+	    new TestResult(1, 0m), // 25 * 19
+	    new TestResult(0, 4312103575884025168661620716.9m), // 25 * 20
+	    new TestResult(1, 0m), // 25 * 21
+	    new TestResult(1, 0m), // 25 * 22
+	    new TestResult(1, 0m), // 25 * 23
+	    new TestResult(1, 0m), // 25 * 24
+	    new TestResult(1, 0m), // 25 * 25
+	    new TestResult(1, 0m), // 25 * 26
+	    new TestResult(1, 0m), // 25 * 27
+	    new TestResult(1, 0m), // 25 * 28
+	    new TestResult(0, -3042950960973153681431212945.8m), // 25 * 29
+	    new TestResult(0, 0m), // 26 * 0
+	    new TestResult(0, -42535053313319986966115.037787m), // 26 * 1
+	    new TestResult(0, 42535053313319986966115.037787m), // 26 * 2
+	    new TestResult(2, -85070106626639973932230.07557m), // 26 * 3
+	    new TestResult(0, -425350533133199869661150.37787m), // 26 * 4
+	    new TestResult(0, -4253505331331998696611.5037787m), // 26 * 5
+	    new TestResult(1, 0m), // 26 * 6
+	    new TestResult(1, 0m), // 26 * 7
+	    new TestResult(1, 0m), // 26 * 8
+	    new TestResult(1, 0m), // 26 * 9
+	    new TestResult(1, 0m), // 26 * 10
+	    new TestResult(1, 0m), // 26 * 11
+	    new TestResult(0, -32450987719855972399063.033158m), // 26 * 12
+	    new TestResult(1, 0m), // 26 * 13
+	    new TestResult(1, 0m), // 26 * 14
+	    new TestResult(1, 0m), // 26 * 15
+	    new TestResult(2, 17912502206818886711664532432m), // 26 * 16
+	    new TestResult(1, 0m), // 26 * 17
+	    new TestResult(1, 0m), // 26 * 18
+	    new TestResult(1, 0m), // 26 * 19
+	    new TestResult(1, 0m), // 26 * 20
+	    new TestResult(1, 0m), // 26 * 21
+	    new TestResult(1, 0m), // 26 * 22
+	    new TestResult(1, 0m), // 26 * 23
+	    new TestResult(1, 0m), // 26 * 24
+	    new TestResult(1, 0m), // 26 * 25
+	    new TestResult(1, 0m), // 26 * 26
+	    new TestResult(1, 0m), // 26 * 27
+	    new TestResult(1, 0m), // 26 * 28
+	    new TestResult(1, 0m), // 26 * 29
+	    new TestResult(0, 0m), // 27 * 0
+	    new TestResult(0, -7808274522591953107485.8812311m), // 27 * 1
+	    new TestResult(0, 7808274522591953107485.8812311m), // 27 * 2
+	    new TestResult(2, -15616549045183906214971.762462m), // 27 * 3
+	    new TestResult(0, -78082745225919531074858.812311m), // 27 * 4
+	    new TestResult(0, -780827452259195310748.58812311m), // 27 * 5
+	    new TestResult(1, 0m), // 27 * 6
+	    new TestResult(1, 0m), // 27 * 7
+	    new TestResult(1, 0m), // 27 * 8
+	    new TestResult(0, 25016579026989918165002777574m), // 27 * 9
+	    new TestResult(1, 0m), // 27 * 10
+	    new TestResult(1, 0m), // 27 * 11
+	    new TestResult(0, -5957115388557583551533.0994303m), // 27 * 12
+	    new TestResult(1, 0m), // 27 * 13
+	    new TestResult(1, 0m), // 27 * 14
+	    new TestResult(1, 0m), // 27 * 15
+	    new TestResult(0, 3288246369108855691627019039.6m), // 27 * 16
+	    new TestResult(1, 0m), // 27 * 17
+	    new TestResult(1, 0m), // 27 * 18
+	    new TestResult(1, 0m), // 27 * 19
+	    new TestResult(1, 0m), // 27 * 20
+	    new TestResult(1, 0m), // 27 * 21
+	    new TestResult(1, 0m), // 27 * 22
+	    new TestResult(1, 0m), // 27 * 23
+	    new TestResult(1, 0m), // 27 * 24
+	    new TestResult(1, 0m), // 27 * 25
+	    new TestResult(1, 0m), // 27 * 26
+	    new TestResult(1, 0m), // 27 * 27
+	    new TestResult(1, 0m), // 27 * 28
+	    new TestResult(1, 0m), // 27 * 29
+	    new TestResult(0, 0m), // 28 * 0
+	    new TestResult(0, 1037807626804273037330059471.7m), // 28 * 1
+	    new TestResult(0, -1037807626804273037330059471.7m), // 28 * 2
+	    new TestResult(0, 2075615253608546074660118943.4m), // 28 * 3
+	    new TestResult(0, 10378076268042730373300594717m), // 28 * 4
+	    new TestResult(0, 103780762680427303733005947.17m), // 28 * 5
+	    new TestResult(1, 0m), // 28 * 6
+	    new TestResult(1, 0m), // 28 * 7
+	    new TestResult(1, 0m), // 28 * 8
+	    new TestResult(1, 0m), // 28 * 9
+	    new TestResult(1, 0m), // 28 * 10
+	    new TestResult(1, 0m), // 28 * 11
+	    new TestResult(0, 791767728722982425613218218.59m), // 28 * 12
+	    new TestResult(1, 0m), // 28 * 13
+	    new TestResult(1, 0m), // 28 * 14
+	    new TestResult(1, 0m), // 28 * 15
+	    new TestResult(1, 0m), // 28 * 16
+	    new TestResult(1, 0m), // 28 * 17
+	    new TestResult(1, 0m), // 28 * 18
+	    new TestResult(1, 0m), // 28 * 19
+	    new TestResult(1, 0m), // 28 * 20
+	    new TestResult(1, 0m), // 28 * 21
+	    new TestResult(1, 0m), // 28 * 22
+	    new TestResult(1, 0m), // 28 * 23
+	    new TestResult(1, 0m), // 28 * 24
+	    new TestResult(1, 0m), // 28 * 25
+	    new TestResult(1, 0m), // 28 * 26
+	    new TestResult(1, 0m), // 28 * 27
+	    new TestResult(1, 0m), // 28 * 28
+	    new TestResult(1, 0m), // 28 * 29
+	    new TestResult(0, 0m), // 29 * 0
+	    new TestResult(0, -4997122966.448652425771563042m), // 29 * 1
+	    new TestResult(0, 4997122966.448652425771563042m), // 29 * 2
+	    new TestResult(0, -9994245932.897304851543126084m), // 29 * 3
+	    new TestResult(0, -49971229664.48652425771563042m), // 29 * 4
+	    new TestResult(0, -499712296.6448652425771563042m), // 29 * 5
+	    new TestResult(1, 0m), // 29 * 6
+	    new TestResult(1, 0m), // 29 * 7
+	    new TestResult(1, 0m), // 29 * 8
+	    new TestResult(2, 16010057181782036.694377696165m), // 29 * 9
+	    new TestResult(1, 0m), // 29 * 10
+	    new TestResult(2, 2724399925666581324856736883m), // 29 * 11
+	    new TestResult(2, -3812422070.43511700405678157m), // 29 * 12
+	    new TestResult(1, 0m), // 29 * 13
+	    new TestResult(1, 0m), // 29 * 14
+	    new TestResult(1, 0m), // 29 * 15
+	    new TestResult(2, 2104404936439239.9111285468803m), // 29 * 16
+	    new TestResult(2, -122246061989021334943606343.1m), // 29 * 17
+	    new TestResult(1, 0m), // 29 * 18
+	    new TestResult(1, 0m), // 29 * 19
+	    new TestResult(0, -35386230604481178142.543841269m), // 29 * 20
+	    new TestResult(0, -2077565236457711426002.3992246m), // 29 * 21
+	    new TestResult(2, 31928579952897032005741.500403m), // 29 * 22
+	    new TestResult(2, -2210458768617810051106106.871m), // 29 * 23
+	    new TestResult(2, 2562693464342799730524457.4865m), // 29 * 24
+	    new TestResult(0, -3042950960973153681431212945.8m), // 29 * 25
+	    new TestResult(1, 0m), // 29 * 26
+	    new TestResult(1, 0m), // 29 * 27
+	    new TestResult(1, 0m), // 29 * 28
+	    new TestResult(0, 24971237941808579837.350664893m), // 29 * 29
+        };
+
+
+        // generated result list build2
+        TestResult[] trAuto_Div_build2 = new TestResult[] {
+	    new TestResult(3, 0m), // 0 / 0
+	    new TestResult(0, 0m), // 0 / 1
+	    new TestResult(0, 0m), // 0 / 2
+	    new TestResult(0, 0m), // 0 / 3
+	    new TestResult(0, 0m), // 0 / 4
+	    new TestResult(0, 0m), // 0 / 5
+	    new TestResult(0, 0m), // 0 / 6
+	    new TestResult(0, 0m), // 0 / 7
+	    new TestResult(0, 0m), // 0 / 8
+	    new TestResult(0, 0m), // 0 / 9
+	    new TestResult(0, 0m), // 0 / 10
+	    new TestResult(0, 0m), // 0 / 11
+	    new TestResult(0, 0m), // 0 / 12
+	    new TestResult(0, 0m), // 0 / 13
+	    new TestResult(0, 0m), // 0 / 14
+	    new TestResult(0, 0m), // 0 / 15
+	    new TestResult(0, 0m), // 0 / 16
+	    new TestResult(0, 0m), // 0 / 17
+	    new TestResult(0, 0m), // 0 / 18
+	    new TestResult(0, 0m), // 0 / 19
+	    new TestResult(0, 0m), // 0 / 20
+	    new TestResult(0, 0m), // 0 / 21
+	    new TestResult(0, 0m), // 0 / 22
+	    new TestResult(0, 0m), // 0 / 23
+	    new TestResult(0, 0m), // 0 / 24
+	    new TestResult(0, 0m), // 0 / 25
+	    new TestResult(0, 0m), // 0 / 26
+	    new TestResult(0, 0m), // 0 / 27
+	    new TestResult(0, 0m), // 0 / 28
+	    new TestResult(0, 0m), // 0 / 29
+	    new TestResult(3, 0m), // 1 / 0
+	    new TestResult(0, 1m), // 1 / 1
+	    new TestResult(0, -1m), // 1 / 2
+	    new TestResult(0, 0.5m), // 1 / 3
+	    new TestResult(0, 0.1m), // 1 / 4
+	    new TestResult(0, 10m), // 1 / 5
+	    new TestResult(0, 0m), // 1 / 6
+	    new TestResult(0, 0m), // 1 / 7
+	    new TestResult(2, 3.61E-26m), // 1 / 8
+	    new TestResult(2, -3.121239924198969049581E-07m), // 1 / 9
+	    new TestResult(2, -2.06327E-23m), // 1 / 10
+	    new TestResult(2, -1.8342105061E-18m), // 1 / 11
+	    new TestResult(0, 1.3107475704751451797758879069m), // 1 / 12
+	    new TestResult(2, -2.4971716E-21m), // 1 / 13
+	    new TestResult(2, 4.4873E-24m), // 1 / 14
+	    new TestResult(2, 7.02E-26m), // 1 / 15
+	    new TestResult(2, -2.3746014276625098667414E-06m), // 1 / 16
+	    new TestResult(2, 4.08775782642E-17m), // 1 / 17
+	    new TestResult(2, -1.879E-25m), // 1 / 18
+	    new TestResult(2, 9.7E-27m), // 1 / 19
+	    new TestResult(2, 1.412165941691409118E-10m), // 1 / 20
+	    new TestResult(2, 2.4052784859689137E-12m), // 1 / 21
+	    new TestResult(2, -1.565094023542766E-13m), // 1 / 22
+	    new TestResult(2, 2.2606723262128E-15m), // 1 / 23
+	    new TestResult(2, -1.9499495495573E-15m), // 1 / 24
+	    new TestResult(2, 1.6421963517E-18m), // 1 / 25
+	    new TestResult(2, -2.351E-23m), // 1 / 26
+	    new TestResult(2, -1.280693E-22m), // 1 / 27
+	    new TestResult(2, 1E-27m), // 1 / 28
+	    new TestResult(2, -2.00115147598754898E-10m), // 1 / 29
+	    new TestResult(3, 0m), // 2 / 0
+	    new TestResult(0, -1m), // 2 / 1
+	    new TestResult(0, 1m), // 2 / 2
+	    new TestResult(0, -0.5m), // 2 / 3
+	    new TestResult(0, -0.1m), // 2 / 4
+	    new TestResult(0, -10m), // 2 / 5
+	    new TestResult(0, 0m), // 2 / 6
+	    new TestResult(0, 0m), // 2 / 7
+	    new TestResult(2, -3.61E-26m), // 2 / 8
+	    new TestResult(2, 3.121239924198969049581E-07m), // 2 / 9
+	    new TestResult(2, 2.06327E-23m), // 2 / 10
+	    new TestResult(2, 1.8342105061E-18m), // 2 / 11
+	    new TestResult(0, -1.3107475704751451797758879069m), // 2 / 12
+	    new TestResult(2, 2.4971716E-21m), // 2 / 13
+	    new TestResult(2, -4.4873E-24m), // 2 / 14
+	    new TestResult(2, -7.02E-26m), // 2 / 15
+	    new TestResult(2, 2.3746014276625098667414E-06m), // 2 / 16
+	    new TestResult(2, -4.08775782642E-17m), // 2 / 17
+	    new TestResult(2, 1.879E-25m), // 2 / 18
+	    new TestResult(2, -9.7E-27m), // 2 / 19
+	    new TestResult(2, -1.412165941691409118E-10m), // 2 / 20
+	    new TestResult(2, -2.4052784859689137E-12m), // 2 / 21
+	    new TestResult(2, 1.565094023542766E-13m), // 2 / 22
+	    new TestResult(2, -2.2606723262128E-15m), // 2 / 23
+	    new TestResult(2, 1.9499495495573E-15m), // 2 / 24
+	    new TestResult(2, -1.6421963517E-18m), // 2 / 25
+	    new TestResult(2, 2.351E-23m), // 2 / 26
+	    new TestResult(2, 1.280693E-22m), // 2 / 27
+	    new TestResult(2, -1E-27m), // 2 / 28
+	    new TestResult(2, 2.00115147598754898E-10m), // 2 / 29
+	    new TestResult(3, 0m), // 3 / 0
+	    new TestResult(0, 2m), // 3 / 1
+	    new TestResult(0, -2m), // 3 / 2
+	    new TestResult(0, 1m), // 3 / 3
+	    new TestResult(0, 0.2m), // 3 / 4
+	    new TestResult(0, 20m), // 3 / 5
+	    new TestResult(0, 0m), // 3 / 6
+	    new TestResult(0, 0m), // 3 / 7
+	    new TestResult(2, 7.22E-26m), // 3 / 8
+	    new TestResult(2, -6.242479848397938099161E-07m), // 3 / 9
+	    new TestResult(2, -4.12653E-23m), // 3 / 10
+	    new TestResult(2, -3.6684210122E-18m), // 3 / 11
+	    new TestResult(0, 2.6214951409502903595517758138m), // 3 / 12
+	    new TestResult(2, -4.9943432E-21m), // 3 / 13
+	    new TestResult(2, 8.9746E-24m), // 3 / 14
+	    new TestResult(2, 1.404E-25m), // 3 / 15
+	    new TestResult(2, -4.7492028553250197334829E-06m), // 3 / 16
+	    new TestResult(2, 8.17551565284E-17m), // 3 / 17
+	    new TestResult(2, -3.757E-25m), // 3 / 18
+	    new TestResult(2, 1.95E-26m), // 3 / 19
+	    new TestResult(2, 2.824331883382818237E-10m), // 3 / 20
+	    new TestResult(2, 4.8105569719378275E-12m), // 3 / 21
+	    new TestResult(2, -3.130188047085533E-13m), // 3 / 22
+	    new TestResult(2, 4.5213446524256E-15m), // 3 / 23
+	    new TestResult(2, -3.8998990991146E-15m), // 3 / 24
+	    new TestResult(2, 3.2843927034E-18m), // 3 / 25
+	    new TestResult(2, -4.702E-23m), // 3 / 26
+	    new TestResult(2, -2.561385E-22m), // 3 / 27
+	    new TestResult(2, 1.9E-27m), // 3 / 28
+	    new TestResult(2, -4.002302951975097959E-10m), // 3 / 29
+	    new TestResult(3, 0m), // 4 / 0
+	    new TestResult(0, 10m), // 4 / 1
+	    new TestResult(0, -10m), // 4 / 2
+	    new TestResult(0, 5m), // 4 / 3
+	    new TestResult(0, 1m), // 4 / 4
+	    new TestResult(0, 100m), // 4 / 5
+	    new TestResult(2, 1E-28m), // 4 / 6
+	    new TestResult(2, -1E-28m), // 4 / 7
+	    new TestResult(2, 3.61E-25m), // 4 / 8
+	    new TestResult(2, -3.1212399241989690495806E-06m), // 4 / 9
+	    new TestResult(2, -2.063265E-22m), // 4 / 10
+	    new TestResult(2, -1.83421050609E-17m), // 4 / 11
+	    new TestResult(0, 13.107475704751451797758879069m), // 4 / 12
+	    new TestResult(2, -2.49717158E-20m), // 4 / 13
+	    new TestResult(2, 4.48729E-23m), // 4 / 14
+	    new TestResult(2, 7.019E-25m), // 4 / 15
+	    new TestResult(2, -2.37460142766250986674143E-05m), // 4 / 16
+	    new TestResult(2, 4.087757826422E-16m), // 4 / 17
+	    new TestResult(2, -1.8785E-24m), // 4 / 18
+	    new TestResult(2, 9.73E-26m), // 4 / 19
+	    new TestResult(2, 1.4121659416914091185E-09m), // 4 / 20
+	    new TestResult(2, 2.40527848596891375E-11m), // 4 / 21
+	    new TestResult(2, -1.5650940235427663E-12m), // 4 / 22
+	    new TestResult(2, 2.26067232621278E-14m), // 4 / 23
+	    new TestResult(2, -1.94994954955729E-14m), // 4 / 24
+	    new TestResult(2, 1.64219635168E-17m), // 4 / 25
+	    new TestResult(2, -2.351002E-22m), // 4 / 26
+	    new TestResult(2, -1.2806927E-21m), // 4 / 27
+	    new TestResult(2, 9.6E-27m), // 4 / 28
+	    new TestResult(2, -2.0011514759875489796E-09m), // 4 / 29
+	    new TestResult(3, 0m), // 5 / 0
+	    new TestResult(0, 0.1m), // 5 / 1
+	    new TestResult(0, -0.1m), // 5 / 2
+	    new TestResult(0, 0.05m), // 5 / 3
+	    new TestResult(0, 0.01m), // 5 / 4
+	    new TestResult(0, 1m), // 5 / 5
+	    new TestResult(0, 0m), // 5 / 6
+	    new TestResult(0, 0m), // 5 / 7
+	    new TestResult(2, 3.6E-27m), // 5 / 8
+	    new TestResult(2, -3.12123992419896904958E-08m), // 5 / 9
+	    new TestResult(2, -2.0633E-24m), // 5 / 10
+	    new TestResult(2, -1.834210506E-19m), // 5 / 11
+	    new TestResult(0, 0.1310747570475145179775887907m), // 5 / 12
+	    new TestResult(2, -2.497172E-22m), // 5 / 13
+	    new TestResult(2, 4.487E-25m), // 5 / 14
+	    new TestResult(2, 7E-27m), // 5 / 15
+	    new TestResult(2, -2.374601427662509866741E-07m), // 5 / 16
+	    new TestResult(2, 4.0877578264E-18m), // 5 / 17
+	    new TestResult(2, -1.88E-26m), // 5 / 18
+	    new TestResult(2, 1E-27m), // 5 / 19
+	    new TestResult(2, 1.41216594169140912E-11m), // 5 / 20
+	    new TestResult(2, 2.405278485968914E-13m), // 5 / 21
+	    new TestResult(2, -1.56509402354277E-14m), // 5 / 22
+	    new TestResult(2, 2.260672326213E-16m), // 5 / 23
+	    new TestResult(2, -1.949949549557E-16m), // 5 / 24
+	    new TestResult(2, 1.642196352E-19m), // 5 / 25
+	    new TestResult(2, -2.351E-24m), // 5 / 26
+	    new TestResult(2, -1.28069E-23m), // 5 / 27
+	    new TestResult(2, 1E-28m), // 5 / 28
+	    new TestResult(2, -2.00115147598754898E-11m), // 5 / 29
+	    new TestResult(3, 0m), // 6 / 0
+	    new TestResult(0, 79228162514264337593543950335m), // 6 / 1
+	    new TestResult(0, -79228162514264337593543950335m), // 6 / 2
+	    new TestResult(4, 39614081257132168796771975168m), // 6 / 3
+	    new TestResult(4, 7922816251426433759354395033.5m), // 6 / 4
+	    new TestResult(1, 0m), // 6 / 5
+	    new TestResult(0, 1m), // 6 / 6
+	    new TestResult(0, -1m), // 6 / 7
+	    new TestResult(2, 2859.8815108190596050496514036m), // 6 / 8
+	    new TestResult(2, -24729010396044602218186.765763m), // 6 / 9
+	    new TestResult(0, -1634686.9890330150250120997619m), // 6 / 10
+	    new TestResult(2, -145321128061.87519668639091926m), // 6 / 11
+	    new TestResult(1, 0m), // 6 / 12
+	    new TestResult(0, -197846315.8215581473367403789m), // 6 / 13
+	    new TestResult(0, 355519.78373087286985534915017m), // 6 / 14
+	    new TestResult(0, 5561.4152228343398478498516935m), // 6 / 15
+	    new TestResult(0, -188135307817449443294332.61564m), // 6 / 16
+	    new TestResult(4, 3238655413907.0152158135371692m), // 6 / 17
+	    new TestResult(0, -14883.393842880239095927799143m), // 6 / 18
+	    new TestResult(0, 770.69397665852204557888702506m), // 6 / 19
+	    new TestResult(4, 11188331272543609822.484506627m), // 6 / 20
+	    new TestResult(0, 190565794778408772.72439011791m), // 6 / 21
+	    new TestResult(4, -12399952364735014.543439368391m), // 6 / 22
+	    new TestResult(2, 179108914452685.79816067884477m), // 6 / 23
+	    new TestResult(2, -154490919806941.48506503891762m), // 6 / 24
+	    new TestResult(2, 130108199431.16705963085822836m), // 6 / 25
+	    new TestResult(2, -1862655.7707746844883926874832m), // 6 / 26
+	    new TestResult(2, -10146692.753313261555369747673m), // 6 / 27
+	    new TestResult(0, 76.341858036091015923443233609m), // 6 / 28
+	    new TestResult(2, -15854755435520147876.101506668m), // 6 / 29
+	    new TestResult(3, 0m), // 7 / 0
+	    new TestResult(0, -79228162514264337593543950335m), // 7 / 1
+	    new TestResult(0, 79228162514264337593543950335m), // 7 / 2
+	    new TestResult(4, -39614081257132168796771975168m), // 7 / 3
+	    new TestResult(4, -7922816251426433759354395033.5m), // 7 / 4
+	    new TestResult(1, 0m), // 7 / 5
+	    new TestResult(0, -1m), // 7 / 6
+	    new TestResult(0, 1m), // 7 / 7
+	    new TestResult(2, -2859.8815108190596050496514036m), // 7 / 8
+	    new TestResult(2, 24729010396044602218186.765763m), // 7 / 9
+	    new TestResult(0, 1634686.9890330150250120997619m), // 7 / 10
+	    new TestResult(2, 145321128061.87519668639091926m), // 7 / 11
+	    new TestResult(1, 0m), // 7 / 12
+	    new TestResult(0, 197846315.8215581473367403789m), // 7 / 13
+	    new TestResult(0, -355519.78373087286985534915017m), // 7 / 14
+	    new TestResult(0, -5561.4152228343398478498516935m), // 7 / 15
+	    new TestResult(0, 188135307817449443294332.61564m), // 7 / 16
+	    new TestResult(4, -3238655413907.0152158135371692m), // 7 / 17
+	    new TestResult(0, 14883.393842880239095927799143m), // 7 / 18
+	    new TestResult(0, -770.69397665852204557888702506m), // 7 / 19
+	    new TestResult(4, -11188331272543609822.484506627m), // 7 / 20
+	    new TestResult(0, -190565794778408772.72439011791m), // 7 / 21
+	    new TestResult(4, 12399952364735014.543439368391m), // 7 / 22
+	    new TestResult(2, -179108914452685.79816067884477m), // 7 / 23
+	    new TestResult(2, 154490919806941.48506503891762m), // 7 / 24
+	    new TestResult(2, -130108199431.16705963085822836m), // 7 / 25
+	    new TestResult(2, 1862655.7707746844883926874832m), // 7 / 26
+	    new TestResult(2, 10146692.753313261555369747673m), // 7 / 27
+	    new TestResult(0, -76.341858036091015923443233609m), // 7 / 28
+	    new TestResult(2, 15854755435520147876.101506668m), // 7 / 29
+	    new TestResult(3, 0m), // 8 / 0
+	    new TestResult(0, 27703302467091960609331879.532m), // 8 / 1
+	    new TestResult(0, -27703302467091960609331879.532m), // 8 / 2
+	    new TestResult(0, 13851651233545980304665939.766m), // 8 / 3
+	    new TestResult(0, 2770330246709196060933187.9532m), // 8 / 4
+	    new TestResult(0, 277033024670919606093318795.32m), // 8 / 5
+	    new TestResult(2, 0.0003496648361888264585379374m), // 8 / 6
+	    new TestResult(2, -0.0003496648361888264585379374m), // 8 / 7
+	    new TestResult(0, 1m), // 8 / 8
+	    new TestResult(2, -8646865369244722339.540450168m), // 8 / 9
+	    new TestResult(0, -571.59255824023515226354006889m), // 8 / 10
+	    new TestResult(0, -50813688.438531062464476589278m), // 8 / 11
+	    new TestResult(0, 36312036402878882966329689.018m), // 8 / 12
+	    new TestResult(0, -69179.899612307954004328275068m), // 8 / 13
+	    new TestResult(2, 124.31276694014267187689413445m), // 8 / 14
+	    new TestResult(0, 1.9446313428704152390534655913m), // 8 / 15
+	    new TestResult(0, -65784301589322901428.917817252m), // 8 / 16
+	    new TestResult(2, 1132443914.7758524269197245123m), // 8 / 17
+	    new TestResult(0, -5.2041994700045071214948001057m), // 8 / 18
+	    new TestResult(2, 0.2694845831000173532986745484m), // 8 / 19
+	    new TestResult(0, 3912166021640285.6025706982227m), // 8 / 20
+	    new TestResult(0, 66634157414385.824002109431498m), // 8 / 21
+	    new TestResult(0, -4335827312364.3201348613764117m), // 8 / 22
+	    new TestResult(0, 62628089232.056911382057917869m), // 8 / 23
+	    new TestResult(0, -54020042166.955319300276527479m), // 8 / 24
+	    new TestResult(0, 45494262.240922193719761217507m), // 8 / 25
+	    new TestResult(0, -651.30522496410233725620872491m), // 8 / 26
+	    new TestResult(0, -3547.9416594456341168641639951m), // 8 / 27
+	    new TestResult(2, 0.0266940632845404098551052086m), // 8 / 28
+	    new TestResult(0, -5543850462175058.4016671641533m), // 8 / 29
+	    new TestResult(3, 0m), // 9 / 0
+	    new TestResult(0, -3203854.9559968181492513385018m), // 9 / 1
+	    new TestResult(0, 3203854.9559968181492513385018m), // 9 / 2
+	    new TestResult(0, -1601927.4779984090746256692509m), // 9 / 3
+	    new TestResult(0, -320385.49559968181492513385018m), // 9 / 4
+	    new TestResult(0, -32038549.559968181492513385018m), // 9 / 5
+	    new TestResult(2, -4.04383E-23m), // 9 / 6
+	    new TestResult(2, 4.04383E-23m), // 9 / 7
+	    new TestResult(2, -1.156488458E-19m), // 9 / 8
+	    new TestResult(0, 1m), // 9 / 9
+	    new TestResult(2, 6.61040196455E-17m), // 9 / 10
+	    new TestResult(2, 5.8765444202781065E-12m), // 9 / 11
+	    new TestResult(0, -4199445.0997275825559060668592m), // 9 / 12
+	    new TestResult(2, 8.0005755447943E-15m), // 9 / 13
+	    new TestResult(2, -1.43766280186E-17m), // 9 / 14
+	    new TestResult(2, -2.248943704E-19m), // 9 / 15
+	    new TestResult(0, 7.6078785525336521046280405305m), // 9 / 16
+	    new TestResult(2, -1.309658317109623269E-10m), // 9 / 17
+	    new TestResult(2, 6.018596622E-19m), // 9 / 18
+	    new TestResult(2, -3.1165581E-20m), // 9 / 19
+	    new TestResult(2, -0.0004524374850977934825669157m), // 9 / 20
+	    new TestResult(2, -7.7061633978240275370839E-06m), // 9 / 21
+	    new TestResult(2, 5.014334243928492665444E-07m), // 9 / 22
+	    new TestResult(2, -7.242866236221657103E-09m), // 9 / 23
+	    new TestResult(2, 6.2473555282928855602E-09m), // 9 / 24
+	    new TestResult(2, -5.261358920047113E-12m), // 9 / 25
+	    new TestResult(2, 7.53226975501E-17m), // 9 / 26
+	    new TestResult(2, 4.103153579868E-16m), // 9 / 27
+	    new TestResult(2, -3.0871376E-21m), // 9 / 28
+	    new TestResult(2, 0.0006411399074043056427231896m), // 9 / 29
+	    new TestResult(3, 0m), // 10 / 0
+	    new TestResult(0, -48466870444188873796420.028868m), // 10 / 1
+	    new TestResult(0, 48466870444188873796420.028868m), // 10 / 2
+	    new TestResult(0, -24233435222094436898210.014434m), // 10 / 3
+	    new TestResult(0, -4846687044418887379642.0028868m), // 10 / 4
+	    new TestResult(0, -484668704441888737964200.28868m), // 10 / 5
+	    new TestResult(2, -6.11737908669317400216E-07m), // 10 / 6
+	    new TestResult(2, 6.11737908669317400216E-07m), // 10 / 7
+	    new TestResult(2, -0.001749497934470499347067655m), // 10 / 8
+	    new TestResult(2, 15127673103138133.38384122385m), // 10 / 9
+	    new TestResult(0, 1m), // 10 / 10
+	    new TestResult(2, 88898.44296603758700885485801m), // 10 / 11
+	    new TestResult(0, -63527832683254186820073.01815m), // 10 / 12
+	    new TestResult(2, 121.03009147860926410013615872m), // 10 / 13
+	    new TestResult(2, -0.217484928990092181791376891m), // 10 / 14
+	    new TestResult(2, -0.0034021285176583848675539818m), // 10 / 15
+	    new TestResult(2, 115089499751104803.45385549602m), // 10 / 16
+	    new TestResult(2, -1981208.2898040400164777217752m), // 10 / 17
+	    new TestResult(2, 0.0091047362233453526323903968m), // 10 / 18
+	    new TestResult(2, -0.0004714627215051239953535366m), // 10 / 19
+	    new TestResult(0, -6844326374165.3505116694016252m), // 10 / 20
+	    new TestResult(2, -116576320761.65010852644993727m), // 10 / 21
+	    new TestResult(0, 7585520927.2021546507200976307m), // 10 / 22
+	    new TestResult(2, -109567712.75131768812510902617m), // 10 / 23
+	    new TestResult(2, 94507952.1910976087542637813m), // 10 / 24
+	    new TestResult(0, -79592.11782075260884714858998m), // 10 / 25
+	    new TestResult(0, 1.1394571457845409462816707224m), // 10 / 26
+	    new TestResult(0, 6.2071166048219727069770728387m), // 10 / 27
+	    new TestResult(2, -4.67012085789282405269787E-05m), // 10 / 28
+	    new TestResult(2, 9698954932588.587842740128447m), // 10 / 29
+	    new TestResult(3, 0m), // 11 / 0
+	    new TestResult(0, -545193693242804794.30331374676m), // 11 / 1
+	    new TestResult(0, 545193693242804794.30331374676m), // 11 / 2
+	    new TestResult(0, -272596846621402397.15165687338m), // 11 / 3
+	    new TestResult(0, -54519369324280479.430331374676m), // 11 / 4
+	    new TestResult(0, -5451936932428047943.0331374676m), // 11 / 5
+	    new TestResult(2, -6.8813118459568899E-12m), // 11 / 6
+	    new TestResult(2, 6.8813118459568899E-12m), // 11 / 7
+	    new TestResult(2, -1.96797365184322821747E-08m), // 11 / 8
+	    new TestResult(2, 170168032177.09280206999941461m), // 11 / 9
+	    new TestResult(2, 1.12487909420644868170014E-05m), // 11 / 10
+	    new TestResult(0, 1m), // 11 / 11
+	    new TestResult(0, -714611308856377959.50595110446m), // 11 / 12
+	    new TestResult(2, 0.0013614421967418161221277362m), // 11 / 13
+	    new TestResult(2, -2.4464424992592870530962E-06m), // 11 / 14
+	    new TestResult(2, -3.82698324531749191876E-08m), // 11 / 15
+	    new TestResult(2, 1294617722326.9607230936474447m), // 11 / 16
+	    new TestResult(0, -22.286197864690758108786295635m), // 11 / 17
+	    new TestResult(2, 1.024172743590536270877E-07m), // 11 / 18
+	    new TestResult(2, -5.3033855911879105358E-09m), // 11 / 19
+	    new TestResult(0, -76990396.522244266468310204941m), // 11 / 20
+	    new TestResult(2, -1311342.6610428539176292952583m), // 11 / 21
+	    new TestResult(2, 85327.93909675220473779587097m), // 11 / 22
+	    new TestResult(2, -1232.5042947397459817875590485m), // 11 / 23
+	    new TestResult(2, 1063.1001965602823514109428061m), // 11 / 24
+	    new TestResult(2, -0.8953150940018113683593315845m), // 11 / 25
+	    new TestResult(2, 1.28175152203717976446025E-05m), // 11 / 26
+	    new TestResult(2, 6.98225570406594773014162E-05m), // 11 / 27
+	    new TestResult(2, -5.253321320461122964E-10m), // 11 / 28
+	    new TestResult(2, 109101516.393194182269828744m), // 11 / 29
+	    new TestResult(3, 0m), // 12 / 0
+	    new TestResult(0, 0.7629234053338741809892531431m), // 12 / 1
+	    new TestResult(0, -0.7629234053338741809892531431m), // 12 / 2
+	    new TestResult(2, 0.3814617026669370904946265716m), // 12 / 3
+	    new TestResult(2, 0.0762923405333874180989253143m), // 12 / 4
+	    new TestResult(0, 7.629234053338741809892531431m), // 12 / 5
+	    new TestResult(0, 0m), // 12 / 6
+	    new TestResult(0, 0m), // 12 / 7
+	    new TestResult(2, 2.75E-26m), // 12 / 8
+	    new TestResult(2, -2.381266991833920788159E-07m), // 12 / 9
+	    new TestResult(2, -1.57411E-23m), // 12 / 10
+	    new TestResult(2, -1.3993621254E-18m), // 12 / 11
+	    new TestResult(0, 1m), // 12 / 12
+	    new TestResult(2, -1.9051506E-21m), // 12 / 13
+	    new TestResult(2, 3.4235E-24m), // 12 / 14
+	    new TestResult(2, 5.36E-26m), // 12 / 15
+	    new TestResult(2, -1.8116390075029613252172E-06m), // 12 / 16
+	    new TestResult(2, 3.11864612111E-17m), // 12 / 17
+	    new TestResult(2, -1.433E-25m), // 12 / 18
+	    new TestResult(2, 7.4E-27m), // 12 / 19
+	    new TestResult(2, 1.077374449131727051E-10m), // 12 / 20
+	    new TestResult(2, 1.8350432532917088E-12m), // 12 / 21
+	    new TestResult(2, -1.194046862108942E-13m), // 12 / 22
+	    new TestResult(2, 1.7247198294583E-15m), // 12 / 23
+	    new TestResult(2, -1.4876621505775E-15m), // 12 / 24
+	    new TestResult(2, 1.2528700328E-18m), // 12 / 25
+	    new TestResult(2, -1.79363E-23m), // 12 / 26
+	    new TestResult(2, -9.7707E-23m), // 12 / 27
+	    new TestResult(2, 7E-28m), // 12 / 28
+	    new TestResult(2, -1.526725298649329415E-10m), // 12 / 29
+	    new TestResult(3, 0m), // 13 / 0
+	    new TestResult(0, -400453059665371395972.33474452m), // 13 / 1
+	    new TestResult(0, 400453059665371395972.33474452m), // 13 / 2
+	    new TestResult(0, -200226529832685697986.16737226m), // 13 / 3
+	    new TestResult(0, -40045305966537139597.233474452m), // 13 / 4
+	    new TestResult(0, -4004530596653713959723.3474452m), // 13 / 5
+	    new TestResult(2, -5.0544282103383796846E-09m), // 13 / 6
+	    new TestResult(2, 5.0544282103383796846E-09m), // 13 / 7
+	    new TestResult(2, -1.44550657865090008770424E-05m), // 13 / 8
+	    new TestResult(0, 124991007759518.90460797449561m), // 13 / 9
+	    new TestResult(2, 0.0082624080324415766315344098m), // 13 / 10
+	    new TestResult(0, 734.51520923413833710945795487m), // 13 / 11
+	    new TestResult(0, -524892875045723911444.75281192m), // 13 / 12
+	    new TestResult(0, 1m), // 13 / 13
+	    new TestResult(2, -0.0017969492242227235536064218m), // 13 / 14
+	    new TestResult(2, -2.81097739916991934127E-05m), // 13 / 15
+	    new TestResult(0, 950916407193211.1625559901416m), // 13 / 16
+	    new TestResult(2, -16369.551287616739221174657438m), // 13 / 17
+	    new TestResult(2, 7.52270457050304262522489E-05m), // 13 / 18
+	    new TestResult(2, -3.8954173771607025488213E-06m), // 13 / 19
+	    new TestResult(0, -56550617210.555523949138629466m), // 13 / 20
+	    new TestResult(2, -963201129.053543593301215979m), // 13 / 21
+	    new TestResult(0, 62674669.039168758653283589393m), // 13 / 22
+	    new TestResult(2, -905293.1499327386264702284996m), // 13 / 23
+	    new TestResult(0, 780863.26331332938464898250347m), // 13 / 24
+	    new TestResult(0, -657.62255360122271090761257385m), // 13 / 25
+	    new TestResult(2, 0.0094146598739531437042039072m), // 13 / 26
+	    new TestResult(2, 0.0512857300939825548661107378m), // 13 / 27
+	    new TestResult(2, -3.858644408872661628546E-07m), // 13 / 28
+	    new TestResult(2, 80136723141.3087985919301071m), // 13 / 29
+	    new TestResult(3, 0m), // 14 / 0
+	    new TestResult(0, 222851627785191714190050.61676m), // 14 / 1
+	    new TestResult(0, -222851627785191714190050.61676m), // 14 / 2
+	    new TestResult(0, 111425813892595857095025.30838m), // 14 / 3
+	    new TestResult(0, 22285162778519171419005.061676m), // 14 / 4
+	    new TestResult(0, 2228516277851917141900506.1676m), // 14 / 5
+	    new TestResult(2, 2.8127829891936371496034E-06m), // 14 / 6
+	    new TestResult(2, -2.8127829891936371496034E-06m), // 14 / 7
+	    new TestResult(2, 0.0080442260647412496180191824m), // 14 / 8
+	    new TestResult(0, -69557339781586865.090190294226m), // 14 / 9
+	    new TestResult(0, -4.5980197554082303507855592074m), // 14 / 10
+	    new TestResult(0, -408756.79698287266169556154972m), // 14 / 11
+	    new TestResult(0, 292102229695871398106087.53771m), // 14 / 12
+	    new TestResult(0, -556.49875161751071295835933612m), // 14 / 13
+	    new TestResult(0, 1m), // 14 / 14
+	    new TestResult(2, 0.0156430541346309720805875037m), // 14 / 15
+	    new TestResult(0, -529183793495630496.21134784463m), // 14 / 16
+	    new TestResult(0, 9109634.856097530429701051341m), // 14 / 17
+	    new TestResult(2, -0.0418637570227228532534385582m), // 14 / 18
+	    new TestResult(2, 0.0021677949074190888565424407m), // 14 / 19
+	    new TestResult(0, 31470347880873.8650457716423m), // 14 / 20
+	    new TestResult(0, 536020225874.87383772032904409m), // 14 / 21
+	    new TestResult(0, -34878375078.338063831579069802m), // 14 / 22
+	    new TestResult(0, 503794507.78545299809142202221m), // 14 / 23
+	    new TestResult(0, -434549431.21784335466036244264m), // 14 / 24
+	    new TestResult(0, 365966.13011459996262470838791m), // 14 / 25
+	    new TestResult(0, -5.2392464667583952349382510034m), // 14 / 26
+	    new TestResult(0, -28.540444773093892153704750451m), // 14 / 27
+	    new TestResult(2, 0.0002147330796473523774307252m), // 14 / 28
+	    new TestResult(0, -44595986386856.427962855912902m), // 14 / 29
+	    new TestResult(3, 0m), // 15 / 0
+	    new TestResult(0, 14246043379204153213661335.584m), // 15 / 1
+	    new TestResult(0, -14246043379204153213661335.584m), // 15 / 2
+	    new TestResult(0, 7123021689602076606830667.792m), // 15 / 3
+	    new TestResult(0, 1424604337920415321366133.5584m), // 15 / 4
+	    new TestResult(0, 142460433792041532136613355.84m), // 15 / 5
+	    new TestResult(2, 0.000179810346814988644017588m), // 15 / 6
+	    new TestResult(2, -0.000179810346814988644017588m), // 15 / 7
+	    new TestResult(2, 0.5142362863101488055319975668m), // 15 / 8
+	    new TestResult(0, -4446531935704239606.853757764m), // 15 / 9
+	    new TestResult(0, -293.9336344319759696558350238m), // 15 / 10
+	    new TestResult(0, -26130242.436351157631251931791m), // 15 / 11
+	    new TestResult(0, 18672966748175371201221341.455m), // 15 / 12
+	    new TestResult(0, -35574.814663942145387025413585m), // 15 / 13
+	    new TestResult(0, 63.926135612238008074953534656m), // 15 / 14
+	    new TestResult(0, 1m), // 15 / 15
+	    new TestResult(0, -33828674946800228646.235978357m), // 15 / 16
+	    new TestResult(0, 582343753.18886100200299543357m), // 15 / 17
+	    new TestResult(0, -2.676188208672362394790189458m), // 15 / 18
+	    new TestResult(2, 0.1385787512311916118536189686m), // 15 / 19
+	    new TestResult(0, 2011777726397049.7148998294303m), // 15 / 20
+	    new TestResult(0, 34265701650179.633435597272951m), // 15 / 21
+	    new TestResult(0, -2229639735192.3415269889385254m), // 15 / 22
+	    new TestResult(0, 32205636025.393565317814400562m), // 15 / 23
+	    new TestResult(0, -27779065870.252746877787654023m), // 15 / 24
+	    new TestResult(0, 23394800.463191857206004010592m), // 15 / 25
+	    new TestResult(0, -334.92478013993600679391750784m), // 15 / 26
+	    new TestResult(0, -1824.480342998389574945394373m), // 15 / 27
+	    new TestResult(2, 0.0137270559699701534233028604m), // 15 / 28
+	    new TestResult(0, -2850849073527704.1131980257228m), // 15 / 29
+	    new TestResult(3, 0m), // 16 / 0
+	    new TestResult(0, -421123.30446308691436596648186m), // 16 / 1
+	    new TestResult(0, 421123.30446308691436596648186m), // 16 / 2
+	    new TestResult(0, -210561.65223154345718298324093m), // 16 / 3
+	    new TestResult(0, -42112.330446308691436596648186m), // 16 / 4
+	    new TestResult(0, -4211233.0446308691436596648186m), // 16 / 5
+	    new TestResult(2, -5.3153E-24m), // 16 / 6
+	    new TestResult(2, 5.3153E-24m), // 16 / 7
+	    new TestResult(2, -1.52011951E-20m), // 16 / 8
+	    new TestResult(2, 0.1314426870900784765046305445m), // 16 / 9
+	    new TestResult(2, 8.6888899697E-18m), // 16 / 10
+	    new TestResult(2, 7.724287894055618E-13m), // 16 / 11
+	    new TestResult(0, -551986.34819545603591091806686m), // 16 / 12
+	    new TestResult(2, 1.0516171478749E-15m), // 16 / 13
+	    new TestResult(2, -1.8897026181E-18m), // 16 / 14
+	    new TestResult(2, -2.95607204E-20m), // 16 / 15
+	    new TestResult(0, 1m), // 16 / 16
+	    new TestResult(2, -1.72145008370758982E-11m), // 16 / 17
+	    new TestResult(2, 7.91100512E-20m), // 16 / 18
+	    new TestResult(2, -4.0964877E-21m), // 16 / 19
+	    new TestResult(2, -5.94695987815313124908788E-05m), // 16 / 20
+	    new TestResult(2, -1.012918824165199591208E-06m), // 16 / 21
+	    new TestResult(2, 6.59097566989758101184E-08m), // 16 / 22
+	    new TestResult(2, -9.520218003229776933E-10m), // 16 / 23
+	    new TestResult(2, 8.211691978458736692E-10m), // 16 / 24
+	    new TestResult(2, -6.915671541963459E-13m), // 16 / 25
+	    new TestResult(2, 9.9006177649E-18m), // 16 / 26
+	    new TestResult(2, 5.39329532081E-17m), // 16 / 27
+	    new TestResult(2, -4.057817E-22m), // 16 / 28
+	    new TestResult(2, 8.42731522299060351340978E-05m), // 16 / 29
+	    new TestResult(3, 0m), // 17 / 0
+	    new TestResult(0, 24463288738299545.200508898642m), // 17 / 1
+	    new TestResult(0, -24463288738299545.200508898642m), // 17 / 2
+	    new TestResult(0, 12231644369149772.600254449321m), // 17 / 3
+	    new TestResult(0, 2446328873829954.5200508898642m), // 17 / 4
+	    new TestResult(0, 244632887382995452.00508898642m), // 17 / 5
+	    new TestResult(2, 3.087701135804474E-13m), // 17 / 6
+	    new TestResult(2, -3.087701135804474E-13m), // 17 / 7
+	    new TestResult(2, 8.830459389222225669E-10m), // 17 / 8
+	    new TestResult(0, -7635579348.7187565660747357791m), // 17 / 9
+	    new TestResult(2, -5.047424872722036356353E-07m), // 17 / 10
+	    new TestResult(2, -0.0448708212173039475800037318m), // 17 / 11
+	    new TestResult(0, 32065196279558108.529140993113m), // 17 / 12
+	    new TestResult(2, -6.10890294076955781848965E-05m), // 17 / 13
+	    new TestResult(2, 1.097738840026777145636E-07m), // 17 / 14
+	    new TestResult(2, 1.7171988100225883459E-09m), // 17 / 15
+	    new TestResult(0, -58090560363.286299748647320613m), // 17 / 16
+	    new TestResult(0, 1m), // 17 / 17
+	    new TestResult(2, -4.5955472073286630491E-09m), // 17 / 18
+	    new TestResult(2, 2.379672667086185355E-10m), // 17 / 19
+	    new TestResult(0, 3454622.3177989620890093190782m), // 17 / 20
+	    new TestResult(0, 58841.022098277508341771781449m), // 17 / 21
+	    new TestResult(0, -3828.7347000513678647353825371m), // 17 / 22
+	    new TestResult(0, 55.303479858826432190514052161m), // 17 / 23
+	    new TestResult(0, -47.702178855937114485246771806m), // 17 / 24
+	    new TestResult(2, 0.0401735235161089558399723624m), // 17 / 25
+	    new TestResult(2, -5.751324339033751411128E-07m), // 17 / 26
+	    new TestResult(2, -3.1329954739064384030107E-06m), // 17 / 27
+	    new TestResult(2, 2.35720841767462147E-11m), // 17 / 28
+	    new TestResult(0, -4895474.6366157719700764456737m), // 17 / 29
+	    new TestResult(3, 0m), // 18 / 0
+	    new TestResult(0, -5323259153836385912697776.001m), // 18 / 1
+	    new TestResult(0, 5323259153836385912697776.001m), // 18 / 2
+	    new TestResult(0, -2661629576918192956348888.0005m), // 18 / 3
+	    new TestResult(0, -532325915383638591269777.6001m), // 18 / 4
+	    new TestResult(0, -53232591538363859126977760.01m), // 18 / 5
+	    new TestResult(2, -6.71889765571425396685425E-05m), // 18 / 6
+	    new TestResult(2, 6.71889765571425396685425E-05m), // 18 / 7
+	    new TestResult(2, -0.1921525117866271842350897941m), // 18 / 8
+	    new TestResult(2, 1661516899781174928.9093780261m), // 18 / 9
+	    new TestResult(2, 109.83294578440517035615430815m), // 18 / 10
+	    new TestResult(0, 9763977.866606841461047851247m), // 18 / 11
+	    new TestResult(0, -6977449002900619940294072.5616m), // 18 / 12
+	    new TestResult(2, 13293.091475651689504900168879m), // 18 / 13
+	    new TestResult(2, -23.887010414694002921991680138m), // 18 / 14
+	    new TestResult(2, -0.3736657970315521134142448751m), // 18 / 15
+	    new TestResult(2, 12640618786517406225.453062932m), // 18 / 16
+	    new TestResult(2, -217601942.68166121398235985303m), // 18 / 17
+	    new TestResult(0, 1m), // 18 / 18
+	    new TestResult(2, -0.0517821395304403973786481636m), // 18 / 19
+	    new TestResult(0, -751732527584477.35915419894761m), // 18 / 20
+	    new TestResult(2, -12803920717959.743225565448731m), // 18 / 21
+	    new TestResult(2, 833140108743.8650907762143944m), // 18 / 22
+	    new TestResult(2, -12034144654.336754703603784598m), // 18 / 23
+	    new TestResult(2, 10380086789.199979490407779016m), // 18 / 24
+	    new TestResult(2, -8741836.761472709884309939817m), // 18 / 25
+	    new TestResult(2, 125.14993491660654415586289072m), // 18 / 26
+	    new TestResult(0, 681.74590153489282094280759828m), // 18 / 27
+	    new TestResult(2, -0.0051293313099156230719389272m), // 18 / 28
+	    new TestResult(2, 1065264791276391.4723331595476m), // 18 / 29
+	    new TestResult(3, 0m), // 19 / 0
+	    new TestResult(0, 102801066199805834724673169.19m), // 19 / 1
+	    new TestResult(0, -102801066199805834724673169.19m), // 19 / 2
+	    new TestResult(0, 51400533099902917362336584.595m), // 19 / 3
+	    new TestResult(0, 10280106619980583472467316.919m), // 19 / 4
+	    new TestResult(0, 1028010661998058347246731691.9m), // 19 / 5
+	    new TestResult(2, 0.0012975318742410238535080931m), // 19 / 6
+	    new TestResult(2, -0.0012975318742410238535080931m), // 19 / 7
+	    new TestResult(0, 3.7107874168403053465719309061m), // 19 / 8
+	    new TestResult(0, -32086679207305516282.844795417m), // 19 / 9
+	    new TestResult(0, -2121.0584726774239906503858037m), // 19 / 10
+	    new TestResult(0, -188558795.66094477019222763757m), // 19 / 11
+	    new TestResult(0, 134746247763650063417846672.74m), // 19 / 12
+	    new TestResult(0, -256711.90097962787395549999647m), // 19 / 13
+	    new TestResult(0, 461.29825131408293475234811789m), // 19 / 14
+	    new TestResult(0, 7.2161135175168023022995955438m), // 19 / 15
+	    new TestResult(0, -244111558563287122929.04506056m), // 19 / 16
+	    new TestResult(0, 4202258629.2276083227657702227m), // 19 / 17
+	    new TestResult(0, -19.311677908019711128996883838m), // 19 / 18
+	    new TestResult(0, 1m), // 19 / 19
+	    new TestResult(0, 14517216445692969.517326696553m), // 19 / 20
+	    new TestResult(0, 247265192865059.0518154425151m), // 19 / 21
+	    new TestResult(0, -16089333432314.039236231362245m), // 19 / 22
+	    new TestResult(0, 232399525463.06860877964908684m), // 19 / 23
+	    new TestResult(0, -200456892730.3205001486617745m), // 19 / 24
+	    new TestResult(0, 168819535.86204710848979659043m), // 19 / 25
+	    new TestResult(0, -2416.8552333191352676140967438m), // 19 / 26
+	    new TestResult(0, -13165.657265554370962757268367m), // 19 / 27
+	    new TestResult(2, 0.0990559941406113443335355768m), // 19 / 28
+	    new TestResult(0, -20572050535883517.889932557941m), // 19 / 29
+	    new TestResult(3, 0m), // 20 / 0
+	    new TestResult(0, 7081320760.3793287174700927968m), // 20 / 1
+	    new TestResult(0, -7081320760.3793287174700927968m), // 20 / 2
+	    new TestResult(0, 3540660380.1896643587350463984m), // 20 / 3
+	    new TestResult(0, 708132076.03793287174700927968m), // 20 / 4
+	    new TestResult(0, 70813207603.793287174700927968m), // 20 / 5
+	    new TestResult(2, 8.93788337E-20m), // 20 / 6
+	    new TestResult(2, -8.93788337E-20m), // 20 / 7
+	    new TestResult(2, 2.556128739088E-16m), // 20 / 8
+	    new TestResult(0, -2210.250107335496183875574735m), // 20 / 9
+	    new TestResult(2, -1.461064165166945E-13m), // 20 / 10
+	    new TestResult(2, -1.2988632935681496171E-08m), // 20 / 11
+	    new TestResult(2, 9281823982.422412820396304075m), // 20 / 12
+	    new TestResult(2, -1.76832729566273202E-11m), // 20 / 13
+	    new TestResult(2, 3.17759436211301E-14m), // 20 / 14
+	    new TestResult(2, 4.970728062443E-16m), // 20 / 15
+	    new TestResult(2, -16815.314387332923907118773285m), // 20 / 16
+	    new TestResult(2, 2.894672435964370128732E-07m), // 20 / 17
+	    new TestResult(2, -1.3302603829227E-15m), // 20 / 18
+	    new TestResult(2, 6.88837287603E-17m), // 20 / 19
+	    new TestResult(0, 1m), // 20 / 20
+	    new TestResult(2, 0.0170325484771854288433021822m), // 20 / 21
+	    new TestResult(2, -0.0011082932800859005017661851m), // 20 / 22
+	    new TestResult(2, 1.60085458760255588702037E-05m), // 20 / 23
+	    new TestResult(2, -1.38082182269723557757959E-05m), // 20 / 24
+	    new TestResult(2, 1.16289191177647018971E-08m), // 20 / 25
+	    new TestResult(2, -1.6648200034492E-13m), // 20 / 26
+	    new TestResult(2, -9.068995640318096E-13m), // 20 / 27
+	    new TestResult(2, 6.8233462325E-18m), // 20 / 28
+	    new TestResult(2, -1.4170795491574366313541174399m), // 20 / 29
+	    new TestResult(3, 0m), // 21 / 0
+	    new TestResult(0, 415752273939.77704245656837041m), // 21 / 1
+	    new TestResult(0, -415752273939.77704245656837041m), // 21 / 2
+	    new TestResult(2, 207876136969.8885212282841852m), // 21 / 3
+	    new TestResult(0, 41575227393.977704245656837041m), // 21 / 4
+	    new TestResult(0, 4157522739397.7704245656837041m), // 21 / 5
+	    new TestResult(2, 5.2475314427E-18m), // 21 / 6
+	    new TestResult(2, -5.2475314427E-18m), // 21 / 7
+	    new TestResult(2, 1.50073181503771E-14m), // 21 / 8
+	    new TestResult(2, -129766.25959973387113808743405m), // 21 / 9
+	    new TestResult(2, -8.5780713738991847E-12m), // 21 / 10
+	    new TestResult(2, -7.625771887911763590261E-07m), // 21 / 11
+	    new TestResult(0, 544946282986.07977368508338172m), // 21 / 12
+	    new TestResult(2, -1.0382047630930577807E-09m), // 21 / 13
+	    new TestResult(2, 1.8656012436244067E-12m), // 21 / 14
+	    new TestResult(2, 2.91837012476515E-14m), // 21 / 15
+	    new TestResult(2, -987245.9432513294606844938685m), // 21 / 16
+	    new TestResult(2, 1.69949461164997956913075E-05m), // 21 / 17
+	    new TestResult(2, -7.81010771643817E-14m), // 21 / 18
+	    new TestResult(2, 4.0442408752037E-15m), // 21 / 19
+	    new TestResult(0, 58.711120143850993772970798576m), // 21 / 20
+	    new TestResult(0, 1m), // 21 / 21
+	    new TestResult(2, -0.0650691399217460043995169619m), // 21 / 22
+	    new TestResult(2, 0.0009398796602556869430220663m), // 21 / 23
+	    new TestResult(2, -0.0008106959592962871308194687m), // 21 / 24
+	    new TestResult(2, 6.827468674662091164433E-07m), // 21 / 25
+	    new TestResult(2, -9.7743447240392408E-12m), // 21 / 26
+	    new TestResult(2, -5.32450892622776623E-11m), // 21 / 27
+	    new TestResult(2, 4.006063004374E-16m), // 21 / 28
+	    new TestResult(2, -83.19832766397646235747803502m), // 21 / 29
+	    new TestResult(3, 0m), // 22 / 0
+	    new TestResult(0, -6389392489892.6362673670820462m), // 22 / 1
+	    new TestResult(0, 6389392489892.6362673670820462m), // 22 / 2
+	    new TestResult(0, -3194696244946.3181336835410231m), // 22 / 3
+	    new TestResult(0, -638939248989.26362673670820462m), // 22 / 4
+	    new TestResult(0, -63893924898926.362673670820462m), // 22 / 5
+	    new TestResult(2, -8.06454710942E-17m), // 22 / 6
+	    new TestResult(2, 8.06454710942E-17m), // 22 / 7
+	    new TestResult(2, -2.306364917136659E-13m), // 22 / 8
+	    new TestResult(2, 1994282.6930829954142428134453m), // 22 / 9
+	    new TestResult(2, 1.31830102322167113E-10m), // 22 / 10
+	    new TestResult(2, 1.17194908324940723524544E-05m), // 22 / 11
+	    new TestResult(2, -8374880682938.911591614017805m), // 22 / 12
+	    new TestResult(2, 1.59554093436863052632E-08m), // 22 / 13
+	    new TestResult(2, -2.8671060442293101E-11m), // 22 / 14
+	    new TestResult(2, -4.485029505960676E-13m), // 22 / 15
+	    new TestResult(2, 15172260.52839517272431927284m), // 22 / 16
+	    new TestResult(2, -0.0002611828915663923103773216m), // 22 / 17
+	    new TestResult(2, 1.2002783079399592E-12m), // 22 / 18
+	    new TestResult(2, -6.21529788171079E-14m), // 22 / 19
+	    new TestResult(2, -902.2882462325251912660653119m), // 22 / 20
+	    new TestResult(2, -15.368268294350108200187006165m), // 22 / 21
+	    new TestResult(0, 1m), // 22 / 22
+	    new TestResult(2, -0.0144443227832120251558802997m), // 22 / 23
+	    new TestResult(2, 0.0124589930076108753677011728m), // 22 / 24
+	    new TestResult(2, -1.04926370363477969575619E-05m), // 22 / 25
+	    new TestResult(2, 1.50214752120500522E-10m), // 22 / 26
+	    new TestResult(2, 8.182848171393031905E-10m), // 22 / 27
+	    new TestResult(2, -6.156625105529E-15m), // 22 / 28
+	    new TestResult(2, 1278.6142211812409691677177837m), // 22 / 29
+	    new TestResult(3, 0m), // 23 / 0
+	    new TestResult(0, 442346282742915.0596416330681m), // 23 / 1
+	    new TestResult(0, -442346282742915.0596416330681m), // 23 / 2
+	    new TestResult(0, 221173141371457.52982081653405m), // 23 / 3
+	    new TestResult(0, 44234628274291.50596416330681m), // 23 / 4
+	    new TestResult(0, 4423462827429150.596416330681m), // 23 / 5
+	    new TestResult(2, 5.5831950244116E-15m), // 23 / 6
+	    new TestResult(2, -5.5831950244116E-15m), // 23 / 7
+	    new TestResult(2, 1.59672762216117307E-11m), // 23 / 8
+	    new TestResult(0, -138066887.80181919317571960944m), // 23 / 9
+	    new TestResult(2, -9.1267762636395250963E-09m), // 23 / 10
+	    new TestResult(2, -0.0008113561991369439495762269m), // 23 / 11
+	    new TestResult(0, 579804315413987.55317875373327m), // 23 / 12
+	    new TestResult(2, -1.104614566093091384748E-06m), // 23 / 13
+	    new TestResult(2, 1.9849362876061009571E-09m), // 23 / 14
+	    new TestResult(2, 3.10504658008156699E-11m), // 23 / 15
+	    new TestResult(2, -1050396114.5225303515983863327m), // 23 / 16
+	    new TestResult(2, 0.018082044792709369766201304m), // 23 / 17
+	    new TestResult(2, -8.30968904499273382E-11m), // 23 / 18
+	    new TestResult(2, 4.3029347758238576E-12m), // 23 / 19
+	    new TestResult(0, 62466.635492334295970467255163m), // 23 / 20
+	    new TestResult(2, 1063.9659972298557739709718754m), // 23 / 21
+	    new TestResult(0, -69.231352345729507070036842909m), // 23 / 22
+	    new TestResult(0, 1m), // 23 / 23
+	    new TestResult(2, -0.8625529347828887027197930493m), // 23 / 24
+	    new TestResult(2, 0.000726419451699245356034835m), // 23 / 25
+	    new TestResult(2, -1.03995704315807902618E-08m), // 23 / 26
+	    new TestResult(2, -5.66509644945319386873E-08m), // 23 / 27
+	    new TestResult(2, 4.262314819414408E-13m), // 23 / 28
+	    new TestResult(0, -88520.19166085901375500091819m), // 23 / 29
+	    new TestResult(3, 0m), // 24 / 0
+	    new TestResult(0, -512833780867323.89020837443764m), // 24 / 1
+	    new TestResult(0, 512833780867323.89020837443764m), // 24 / 2
+	    new TestResult(0, -256416890433661.94510418721882m), // 24 / 3
+	    new TestResult(0, -51283378086732.389020837443764m), // 24 / 4
+	    new TestResult(0, -5128337808673238.9020837443764m), // 24 / 5
+	    new TestResult(2, -6.4728723296466E-15m), // 24 / 6
+	    new TestResult(2, 6.4728723296466E-15m), // 24 / 7
+	    new TestResult(2, -1.85116478974485417E-11m), // 24 / 8
+	    new TestResult(0, 160067727.13209967231293920454m), // 24 / 9
+	    new TestResult(2, 1.05811201789450821647E-08m), // 24 / 10
+	    new TestResult(2, 0.0009406451087447388135269385m), // 24 / 11
+	    new TestResult(0, -672195632329427.78049892650167m), // 24 / 12
+	    new TestResult(2, 1.280633943203881720602E-06m), // 24 / 13
+	    new TestResult(2, -2.3012341707535026743E-09m), // 24 / 14
+	    new TestResult(2, -3.59983307095596564E-11m), // 24 / 15
+	    new TestResult(2, 1217775828.2011100471829103026m), // 24 / 16
+	    new TestResult(2, -0.0209634030139388041036175456m), // 24 / 17
+	    new TestResult(2, 9.63383081768117492E-11m), // 24 / 18
+	    new TestResult(2, -4.988603716138233E-12m), // 24 / 19
+	    new TestResult(0, -72420.639908967018993409156115m), // 24 / 20
+	    new TestResult(2, -1233.5080599982704934889448056m), // 24 / 21
+	    new TestResult(2, 80.26330855062892819843621147m), // 24 / 22
+	    new TestResult(0, -1.1593491363538259770624590073m), // 24 / 23
+	    new TestResult(0, 1m), // 24 / 24
+	    new TestResult(2, -0.0008421737639581399076256596m), // 24 / 25
+	    new TestResult(2, 1.20567329983039744731E-08m), // 24 / 26
+	    new TestResult(2, 6.56782467603468627053E-08m), // 24 / 27
+	    new TestResult(2, -4.941511004756208E-13m), // 24 / 28
+	    new TestResult(2, 102625.80775189204591883200668m), // 24 / 29
+	    new TestResult(3, 0m), // 25 / 0
+	    new TestResult(0, 608940580690915704.1450897514m), // 25 / 1
+	    new TestResult(0, -608940580690915704.1450897514m), // 25 / 2
+	    new TestResult(0, 304470290345457852.0725448757m), // 25 / 3
+	    new TestResult(0, 60894058069091570.41450897514m), // 25 / 4
+	    new TestResult(0, 6089405806909157041.450897514m), // 25 / 5
+	    new TestResult(2, 7.6859106833543095E-12m), // 25 / 6
+	    new TestResult(2, -7.6859106833543095E-12m), // 25 / 7
+	    new TestResult(2, 2.19807938571316735336E-08m), // 25 / 8
+	    new TestResult(2, -190064965191.73899284873850192m), // 25 / 9
+	    new TestResult(2, -1.2564058192949139177057E-05m), // 25 / 10
+	    new TestResult(2, -1.1169252106878663178369471734m), // 25 / 11
+	    new TestResult(2, 798167386704341861.9682340376m), // 25 / 12
+	    new TestResult(2, -0.0015206291124352045188095451m), // 25 / 13
+	    new TestResult(2, 2.7324933039209294299951E-06m), // 25 / 14
+	    new TestResult(2, 4.27445406757517405142E-08m), // 25 / 15
+	    new TestResult(0, -1445991172270.2862199666258075m), // 25 / 16
+	    new TestResult(2, 24.892016245451201449485802529m), // 25 / 17
+	    new TestResult(2, -1.143924357415629812325E-07m), // 25 / 18
+	    new TestResult(2, 5.9234850687965514433E-09m), // 25 / 19
+	    new TestResult(2, 85992514.8565500475609760009m), // 25 / 20
+	    new TestResult(2, 1464671.6779692768786214751455m), // 25 / 21
+	    new TestResult(2, -95304.9263532013818698238713m), // 25 / 22
+	    new TestResult(2, 1376.6151190758908669955780933m), // 25 / 23
+	    new TestResult(2, -1187.4034110254054607086172841m), // 25 / 24
+	    new TestResult(0, 1m), // 25 / 25
+	    new TestResult(2, -1.43162058880087033607313E-05m), // 25 / 26
+	    new TestResult(2, -7.79865742334041504368931E-05m), // 25 / 27
+	    new TestResult(2, 5.867567022667099857E-10m), // 25 / 28
+	    new TestResult(2, -121858234.18383411295432055833m), // 25 / 29
+	    new TestResult(3, 0m), // 26 / 0
+	    new TestResult(0, -42535053313319986966115.037787m), // 26 / 1
+	    new TestResult(0, 42535053313319986966115.037787m), // 26 / 2
+	    new TestResult(2, -21267526656659993483057.518894m), // 26 / 3
+	    new TestResult(0, -4253505331331998696611.5037787m), // 26 / 4
+	    new TestResult(0, -425350533133199869661150.37787m), // 26 / 5
+	    new TestResult(2, -5.368678505659136383798E-07m), // 26 / 6
+	    new TestResult(2, 5.368678505659136383798E-07m), // 26 / 7
+	    new TestResult(2, -0.0015353784395866262203076433m), // 26 / 8
+	    new TestResult(2, 13276210657946598.343741130625m), // 26 / 9
+	    new TestResult(2, 0.8776108901502200170717671109m), // 26 / 10
+	    new TestResult(0, 78018.241664392812128305230978m), // 26 / 11
+	    new TestResult(0, -55752717790464947101601.359896m), // 26 / 12
+	    new TestResult(2, 106.21732631750483463727976216m), // 26 / 13
+	    new TestResult(2, -0.1908671421252521905897157731m), // 26 / 14
+	    new TestResult(2, -0.0029857450367876236635795704m), // 26 / 15
+	    new TestResult(2, 101003798323510611.65980529603m), // 26 / 16
+	    new TestResult(0, -1738729.9707879186275737174853m), // 26 / 17
+	    new TestResult(2, 0.0079904156615530673319808542m), // 26 / 18
+	    new TestResult(2, -0.0004137608186927571471957746m), // 26 / 19
+	    new TestResult(0, -6006655361709.8810944800037905m), // 26 / 20
+	    new TestResult(2, -102308648634.06932650747319597m), // 26 / 21
+	    new TestResult(0, 6657135773.1750052361186583781m), // 26 / 22
+	    new TestResult(2, -96157817.91940752862823678187m), // 26 / 23
+	    new TestResult(2, 82941208.04870360868726566113m), // 26 / 24
+	    new TestResult(0, -69850.909369611886817979504214m), // 26 / 25
+	    new TestResult(0, 1m), // 26 / 26
+	    new TestResult(0, 5.4474331288240229212686639513m), // 26 / 27
+	    new TestResult(2, -4.09854892320443047650146E-05m), // 26 / 28
+	    new TestResult(0, 8511908471915.937756062101659m), // 26 / 29
+	    new TestResult(3, 0m), // 27 / 0
+	    new TestResult(0, -7808274522591953107485.8812311m), // 27 / 1
+	    new TestResult(0, 7808274522591953107485.8812311m), // 27 / 2
+	    new TestResult(2, -3904137261295976553742.9406156m), // 27 / 3
+	    new TestResult(0, -780827452259195310748.58812311m), // 27 / 4
+	    new TestResult(0, -78082745225919531074858.812311m), // 27 / 5
+	    new TestResult(2, -9.85542801296968307756E-08m), // 27 / 6
+	    new TestResult(2, 9.85542801296968307756E-08m), // 27 / 7
+	    new TestResult(2, -0.000281853563555002197999826m), // 27 / 8
+	    new TestResult(2, 2437149817901964.8960845694514m), // 27 / 9
+	    new TestResult(2, 0.1611053994415304138070003376m), // 27 / 10
+	    new TestResult(2, 14322.019163773595213651372685m), // 27 / 11
+	    new TestResult(2, -10234676860090376638967.506512m), // 27 / 12
+	    new TestResult(2, 19.498601232106311831598265533m), // 27 / 13
+	    new TestResult(2, -0.0350379963574616786880617938m), // 27 / 14
+	    new TestResult(2, -0.0005481012737887758520091497m), // 27 / 15
+	    new TestResult(2, 18541539828927654.501195934005m), // 27 / 16
+	    new TestResult(2, -319183.3529057512147016471775m), // 27 / 17
+	    new TestResult(2, 0.0014668221660718241029342142m), // 27 / 18
+	    new TestResult(2, -7.59551900698740123366376E-05m), // 27 / 19
+	    new TestResult(2, -1102657934418.1103423727465413m), // 27 / 20
+	    new TestResult(2, -18781074721.729615778535996388m), // 27 / 21
+	    new TestResult(2, 1222068378.9489912725931951927m), // 27 / 22
+	    new TestResult(2, -17651950.128695901472129097893m), // 27 / 23
+	    new TestResult(0, 15225741.38814783974528909088m), // 27 / 24
+	    new TestResult(2, -12822.719933909700245783228909m), // 27 / 25
+	    new TestResult(2, 0.1835726986181246222761380025m), // 27 / 26
+	    new TestResult(0, 1m), // 27 / 27
+	    new TestResult(2, -7.5238168625104611316081E-06m), // 27 / 28
+	    new TestResult(2, 1562554008580.0861321324839011m), // 27 / 29
+	    new TestResult(3, 0m), // 28 / 0
+	    new TestResult(0, 1037807626804273037330059471.7m), // 28 / 1
+	    new TestResult(0, -1037807626804273037330059471.7m), // 28 / 2
+	    new TestResult(0, 518903813402136518665029735.85m), // 28 / 3
+	    new TestResult(0, 103780762680427303733005947.17m), // 28 / 4
+	    new TestResult(0, 10378076268042730373300594717m), // 28 / 5
+	    new TestResult(2, 0.013098973822817421173845813m), // 28 / 6
+	    new TestResult(2, -0.013098973822817421173845813m), // 28 / 7
+	    new TestResult(0, 37.461513046578399246836695461m), // 28 / 8
+	    new TestResult(0, -323924659841968113506.41166762m), // 28 / 9
+	    new TestResult(0, -21412.722077843692663812014719m), // 28 / 10
+	    new TestResult(0, -1903557652.3848013647110715272m), // 28 / 11
+	    new TestResult(0, 1360303825454277040707598638.1m), // 28 / 12
+	    new TestResult(0, -2591583.7118874583629347087379m), // 28 / 13
+	    new TestResult(0, 4656.9443405844146143879311m), // 28 / 14
+	    new TestResult(0, 72.848832421725332869329889807m), // 28 / 15
+	    new TestResult(0, -2464379472248467996678.919247m), // 28 / 16
+	    new TestResult(0, 42423062487.893912564215173398m), // 28 / 17
+	    new TestResult(0, -194.95718634257023426451589779m), // 28 / 18
+	    new TestResult(0, 10.095300225653040883323838635m), // 28 / 19
+	    new TestResult(0, 146555658460058271.30028503504m), // 28 / 20
+	    new TestResult(0, 2496216357326773.3203945609668m), // 28 / 21
+	    new TestResult(0, -162426651429846.93508891542812m), // 28 / 22
+	    new TestResult(0, 2346142981848.9761467960716552m), // 28 / 23
+	    new TestResult(0, -2023672514414.1119557698582125m), // 28 / 24
+	    new TestResult(0, 1704283898.4827658021193146276m), // 28 / 25
+	    new TestResult(0, -24398.879182297399040382596287m), // 28 / 26
+	    new TestResult(0, -132911.26276382163838029345835m), // 28 / 27
+	    new TestResult(0, 1m), // 28 / 28
+	    new TestResult(0, -207681026417050638.7817636979m), // 28 / 29
+	    new TestResult(3, 0m), // 29 / 0
+	    new TestResult(0, -4997122966.448652425771563042m), // 29 / 1
+	    new TestResult(0, 4997122966.448652425771563042m), // 29 / 2
+	    new TestResult(0, -2498561483.224326212885781521m), // 29 / 3
+	    new TestResult(0, -499712296.6448652425771563042m), // 29 / 4
+	    new TestResult(0, -49971229664.48652425771563042m), // 29 / 5
+	    new TestResult(2, -6.30725591E-20m), // 29 / 6
+	    new TestResult(2, 6.30725591E-20m), // 29 / 7
+	    new TestResult(2, -1.803800457503E-16m), // 29 / 8
+	    new TestResult(0, 1559.7219709011119254589559305m), // 29 / 9
+	    new TestResult(2, 1.031038918059089E-13m), // 29 / 10
+	    new TestResult(2, 9.1657754452841005337E-09m), // 29 / 11
+	    new TestResult(0, -6549966787.6381215871101448624m), // 29 / 12
+	    new TestResult(2, 1.24786734570697837E-11m), // 29 / 13
+	    new TestResult(2, -2.24235425880102E-14m), // 29 / 14
+	    new TestResult(2, -3.507726905944E-16m), // 29 / 15
+	    new TestResult(2, 11866.175330334086443056587349m), // 29 / 16
+	    new TestResult(2, -2.042702851569255038994E-07m), // 29 / 17
+	    new TestResult(2, 9.387337384931E-16m), // 29 / 18
+	    new TestResult(2, -4.86096414286E-17m), // 29 / 19
+	    new TestResult(2, -0.705676685966272906628710787m), // 29 / 20
+	    new TestResult(2, -0.0120194723629401016807892544m), // 29 / 21
+	    new TestResult(2, 0.0007820967289697085504718691m), // 29 / 22
+	    new TestResult(2, -1.1296857600932761513324E-05m), // 29 / 23
+	    new TestResult(2, 9.7441376775089367720444E-06m), // 29 / 24
+	    new TestResult(2, -8.2062571043940289217E-09m), // 29 / 25
+	    new TestResult(2, 1.17482466276439E-13m), // 29 / 26
+	    new TestResult(2, 6.399778788502251E-13m), // 29 / 27
+	    new TestResult(2, -4.8150763565E-18m), // 29 / 28
+	    new TestResult(0, 1m), // 29 / 29
+        };
+
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/System/ExceptionTest.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/System/ExceptionTest.cs
@@ -1,432 +1,432 @@
-//
-// ExceptionTest.cs - NUnit Test Cases for the System.Exception class
-//
-// Authors:
-//	Linus Upson (linus@linus.com)
-//	Duncan Mak (duncan@ximian.com)
-//	Gert Driesen (drieseng@users.sourceforge.net)
-//
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-
-using System;
-using System.Collections;
-using System.Runtime.Serialization;
-
-using NUnit.Framework;
-
-namespace MonoTests.System
-{
-	[TestFixture]
-	public class ExceptionTest
-	{
-		[Test] // .ctor (SerializationInfo, StreamingContext)
-		public void Constructor3 ()
-		{
-			SerializationInfo si;
-			MyException ex;
-			Exception inner;
-
-			inner = new ArgumentException ();
-			si = new SerializationInfo (typeof (Exception),
-				new FormatterConverter ());
-			si.AddValue ("ClassName", "CLASS");
-			si.AddValue ("Message", "MSG");
-			si.AddValue ("InnerException", inner, typeof (Exception));
-			si.AddValue ("HelpURL", "URL");
-			si.AddValue ("StackTraceString", null);
-			si.AddValue ("RemoteStackTraceString", null);
-			si.AddValue ("RemoteStackIndex", 0);
-			si.AddValue ("HResult", 10);
-			si.AddValue ("Source", "SRC");
-			si.AddValue ("ExceptionMethod", null);
-			Hashtable data = new Hashtable ();
-			data.Add ("XX", "ZZ");
-			si.AddValue ("Data", data, typeof (IDictionary));
-
-			ex = new MyException (si, new StreamingContext ());
-			Assert.AreEqual ("MSG", ex.Message, "#A1");
-			Assert.AreSame (inner, ex.InnerException, "#A2");
-			Assert.AreEqual ("URL", ex.HelpLink, "#A3");
-			Assert.AreEqual (10, ex.HResult, "#A4");
-			Assert.AreEqual ("SRC", ex.Source, "#A5");
-			Assert.IsNotNull (ex.Data, "#A6");
-			Assert.AreEqual (1, ex.Data.Keys.Count, "#A7");
-			Assert.AreEqual ("ZZ", ex.Data ["XX"], "#A8");
-
-			inner = null;
-			si = new SerializationInfo (typeof (Exception),
-				new FormatterConverter ());
-			si.AddValue ("ClassName", "CLASS");
-			si.AddValue ("Message", null);
-			si.AddValue ("InnerException", inner, typeof (Exception));
-			si.AddValue ("HelpURL", "URL");
-			si.AddValue ("StackTraceString", null);
-			si.AddValue ("RemoteStackTraceString", null);
-			si.AddValue ("RemoteStackIndex", 0);
-			si.AddValue ("HResult", 10);
-			si.AddValue ("Source", "SRC");
-			si.AddValue ("ExceptionMethod", null);
-
-			ex = new MyException (si, new StreamingContext ());
-			Assert.IsNotNull (ex.Message, "#B1");
-			Assert.IsTrue (ex.Message.IndexOf ("CLASS") != -1, "#B2");
-			Assert.IsNull (ex.InnerException, "#B3");
-			Assert.AreEqual ("URL", ex.HelpLink, "#B4");
-			Assert.AreEqual (10, ex.HResult, "#B5");
-			Assert.AreEqual ("SRC", ex.Source, "#B6");
-			Assert.IsNotNull (ex.Data, "#B7");
-			Assert.AreEqual (0, ex.Data.Keys.Count, "#B8");
-		}
-
-
-		// This test makes sure that exceptions thrown on block boundaries are
-		// handled in the correct block. The meaning of the 'caught' variable is
-		// a little confusing since there are two catchers: the method being
-		// tested the the method calling the test. There is probably a better
-		// name, but I can't think of it right now.
-		[Test]
-		public void TestThrowOnBlockBoundaries ()
-		{
-			bool caught;
-			
-			try {
-				caught = false;
-				ThrowBeforeTry();
-			} catch {
-				caught = true;
-			}
-			Assert.IsTrue (caught, "Exceptions thrown before try blocks should not be caught");
-			
-			try {
-				caught = false;
-				ThrowAtBeginOfTry();
-			} catch {
-				caught = true;
-			}
-			Assert.IsFalse (caught, "Exceptions thrown at begin of try blocks should be caught");
-
-			try {
-				caught = false;
-				ThrowAtEndOfTry();
-			} catch {
-				caught = true;
-			}
-			Assert.IsFalse (caught, "Exceptions thrown at end of try blocks should be caught");
-
-			try {
-				caught = false;
-				ThrowAtBeginOfCatch();
-			} catch {
-				caught = true;
-			}
-			Assert.IsTrue (caught, "Exceptions thrown at begin of catch blocks should not be caught");
-
-			try {
-				caught = false;
-				ThrowAtEndOfCatch();
-			} catch {
-				caught = true;
-			}
-			Assert.IsTrue (caught, "Exceptions thrown at end of catch blocks should not be caught");
-
-			try {
-				caught = false;
-				ThrowAtBeginOfFinally();
-			} catch {
-				caught = true;
-			}
-			Assert.IsTrue (caught, "Exceptions thrown at begin of finally blocks should not be caught");
-
-			try {
-				caught = false;
-				ThrowAtEndOfFinally();
-			} catch {
-				caught = true;
-			}
-			Assert.IsTrue (caught, "Exceptions thrown at end of finally blocks should not be caught");
-
-			try {
-				caught = false;
-				ThrowAfterFinally();
-			} catch {
-				caught = true;
-			}
-			Assert.IsTrue (caught, "Exceptions thrown after finally blocks should not be caught");
-		}
-		
-		private static void DoNothing()
-		{
-		}
-
-		private static void ThrowException()
-		{
-			throw new Exception();
-		}
-
-		private static void ThrowBeforeTry()
-		{
-			ThrowException();
-			try {
-				DoNothing();
-			} catch (Exception) {
-				DoNothing();
-			}
-		}
-
-		private static void ThrowAtBeginOfTry()
-		{
-			DoNothing();
-			try {
-				ThrowException();
-				DoNothing();
-			} catch (Exception) {
-				DoNothing();
-			}
-		}
-
-		private static void ThrowAtEndOfTry()
-		{
-			DoNothing();
-			try {
-				DoNothing();
-				ThrowException();
-			} catch (Exception) {
-				DoNothing();
-			}
-		}
-
-		private static void ThrowAtBeginOfCatch()
-		{
-			DoNothing();
-			try {
-				DoNothing();
-				ThrowException();
-			} catch (Exception) {
-				throw;
-			}
-		}
-
-		private static void ThrowAtEndOfCatch()
-		{
-			DoNothing();
-			try {
-				DoNothing();
-				ThrowException();
-			} catch (Exception) {
-				DoNothing();
-				throw;
-			}
-		}
-
-		private static void ThrowAtBeginOfFinally()
-		{
-			DoNothing();
-			try {
-				DoNothing();
-				ThrowException();
-			} catch (Exception) {
-				DoNothing();
-			} finally {
-				ThrowException();
-				DoNothing();
-			}
-		}
-
-		private static void ThrowAtEndOfFinally()
-		{
-			DoNothing();
-			try {
-				DoNothing();
-				ThrowException();
-			} catch (Exception) {
-				DoNothing();
-			} finally {
-				DoNothing();
-				ThrowException();
-			}
-		}
-
-		private static void ThrowAfterFinally()
-		{
-			DoNothing();
-			try {
-				DoNothing();
-				ThrowException();
-			} catch (Exception) {
-				DoNothing();
-			} finally {
-				DoNothing();
-			}
-			ThrowException();
-		}
-
-		[Test]
-		public void GetObjectData ()
-		{
-			string msg = "MESSAGE";
-			Exception inner = new ArgumentException ("whatever");
-			SerializationInfo si;
-			Exception se;
-
-			se = new Exception (msg, inner);
-			si = new SerializationInfo (typeof (Exception),
-				new FormatterConverter ());
-			se.GetObjectData (si, new StreamingContext ());
-			Assert.AreEqual (11, si.MemberCount, "#A1");
-			Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#A2");
-			Assert.IsNull (si.GetValue ("Data", typeof (IDictionary)), "#A3");
-			Assert.AreSame (msg, si.GetString ("Message"), "#A4");
-			Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#A5");
-			Assert.AreSame (se.HelpLink, si.GetString ("HelpURL"), "#A6");
-			Assert.IsNull (si.GetString ("StackTraceString"), "#A7");
-			Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#A8");
-			Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#A9");
-			Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#A10");
-			Assert.IsNull (si.GetString ("Source"), "#A11");
-			Assert.IsNull (si.GetString ("ExceptionMethod"), "#A12");
-
-			// attempt initialization of lazy init members
-			Assert.IsNotNull (se.Data);
-			Assert.IsNull (se.Source);
-			Assert.IsNull (se.StackTrace);
-
-			si = new SerializationInfo (typeof (Exception),
-				new FormatterConverter ());
-			se.GetObjectData (si, new StreamingContext ());
-			Assert.AreEqual (11, si.MemberCount, "#B1");
-			Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#B2");
-			Assert.AreSame (se.Data, si.GetValue ("Data", typeof (IDictionary)), "#B3");
-			Assert.AreSame (msg, si.GetString ("Message"), "#B4");
-			Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#B5");
-			Assert.AreSame (se.HelpLink, si.GetString ("HelpURL"), "#B6");
-			Assert.IsNull (si.GetString ("StackTraceString"), "#B7");
-			Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#B8");
-			Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#B9");
-			Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#B10");
-			Assert.IsNull (si.GetString ("Source"), "#B11");
-			Assert.IsNull (si.GetString ("ExceptionMethod"), "#B12");
-
-			try {
-				throw new Exception (msg, inner);
-			} catch (Exception ex) {
-				si = new SerializationInfo (typeof (Exception),
-					new FormatterConverter ());
-				ex.GetObjectData (si, new StreamingContext ());
-				Assert.AreEqual (11, si.MemberCount, "#C1");
-				Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#C2");
-				Assert.IsNull (si.GetValue ("Data", typeof (IDictionary)), "#C3");
-				Assert.AreSame (msg, si.GetString ("Message"), "#C4");
-				Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#C5");
-				Assert.AreSame (se.HelpLink, si.GetString ("HelpURL"), "#C6");
-				Assert.IsNotNull (si.GetString ("StackTraceString"), "#C7");
-				Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#C8");
-				Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#C9");
-				Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#C10");
-				Assert.IsNotNull (si.GetString ("Source"), "#C11");
-				//Assert.IsNotNull (si.GetString ("ExceptionMethod"), "#C12");
-			}
-
-			try {
-				throw new Exception (msg, inner);
-			} catch (Exception ex) {
-				// force initialization of lazy init members
-				Assert.IsNotNull (ex.Data);
-				Assert.IsNotNull (ex.StackTrace);
-
-				si = new SerializationInfo (typeof (Exception),
-					new FormatterConverter ());
-				ex.GetObjectData (si, new StreamingContext ());
-				Assert.AreEqual (11, si.MemberCount, "#D1");
-				Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#D2");
-				Assert.AreSame (ex.Data, si.GetValue ("Data", typeof (IDictionary)), "#D3");
-				Assert.AreSame (msg, si.GetString ("Message"), "#D4");
-				Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#D5");
-				Assert.AreSame (ex.HelpLink, si.GetString ("HelpURL"), "#D6");
-				Assert.IsNotNull (si.GetString ("StackTraceString"), "#D7");
-				Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#D8");
-				Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#D9");
-				Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#D10");
-				Assert.AreEqual (typeof (ExceptionTest).Assembly.GetName ().Name, si.GetString ("Source"), "#D11");
-				//Assert.IsNotNull (si.GetString ("ExceptionMethod"), "#D12");
-			}
-		}
-
-		[Test]
-		public void GetObjectData_Info_Null ()
-		{
-			Exception e = new Exception ();
-			try {
-				e.GetObjectData (null, new StreamingContext ());
-				Assert.Fail ("#1");
-			} catch (ArgumentNullException ex) {
-				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
-				Assert.IsNull (ex.InnerException, "#3");
-				Assert.IsNotNull (ex.Message, "#4");
-				Assert.AreEqual ("info", ex.ParamName, "#5");
-			}
-		}
-
-		[Test]
-		public void HResult ()
-		{
-			MyException ex = new MyException ();
-			Assert.AreEqual (-2146233088, ex.HResult, "#1");
-			ex.HResult = int.MaxValue;
-			Assert.AreEqual (int.MaxValue, ex.HResult, "#2");
-			ex.HResult = int.MinValue;
-			Assert.AreEqual (int.MinValue, ex.HResult, "#3");
-		}
-
-		[Test]
-		public void Source ()
-		{
-			Exception ex1 = new Exception ("MSG");
-			Assert.IsNull (ex1.Source, "#1");
-
-			try {
-				throw new Exception ("MSG");
-			} catch (Exception ex2) {
-				Assert.AreEqual (typeof (ExceptionTest).Assembly.GetName ().Name, ex2.Source, "#2");
-			}
-		}
-
-		[Test]
-		public void Source_InnerException ()
-		{
-			Exception a = new Exception ("a", new ArgumentException ("b"));
-			a.Source = "foo";
-
-			Assert.IsNull (a.InnerException.Source);
-		}
-
-		[Test]
-		public void StackTrace ()
-		{
-			Exception ex1 = new Exception ("MSG");
-			Assert.IsNull (ex1.StackTrace, "#1");
-
-			try {
-				throw new Exception ("MSG");
-			} catch (Exception ex2) {
-				Assert.IsNotNull (ex2.StackTrace, "#2");
-			}
-		}
-
-		class MyException : Exception {
-			public MyException ()
-			{
-			}
-
-			public MyException (SerializationInfo info, StreamingContext context)
-				: base (info, context)
-			{
-			}
-
-			public new int HResult {
-				get { return base.HResult; }
-				set { base.HResult = value; }
-			}
-		}
-	}
-}
+//
+// ExceptionTest.cs - NUnit Test Cases for the System.Exception class
+//
+// Authors:
+//	Linus Upson (linus@linus.com)
+//	Duncan Mak (duncan@ximian.com)
+//	Gert Driesen (drieseng@users.sourceforge.net)
+//
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+//
+
+using System;
+using System.Collections;
+using System.Runtime.Serialization;
+
+using NUnit.Framework;
+
+namespace MonoTests.System
+{
+	[TestFixture]
+	public class ExceptionTest
+	{
+		[Test] // .ctor (SerializationInfo, StreamingContext)
+		public void Constructor3 ()
+		{
+			SerializationInfo si;
+			MyException ex;
+			Exception inner;
+
+			inner = new ArgumentException ();
+			si = new SerializationInfo (typeof (Exception),
+				new FormatterConverter ());
+			si.AddValue ("ClassName", "CLASS");
+			si.AddValue ("Message", "MSG");
+			si.AddValue ("InnerException", inner, typeof (Exception));
+			si.AddValue ("HelpURL", "URL");
+			si.AddValue ("StackTraceString", null);
+			si.AddValue ("RemoteStackTraceString", null);
+			si.AddValue ("RemoteStackIndex", 0);
+			si.AddValue ("HResult", 10);
+			si.AddValue ("Source", "SRC");
+			si.AddValue ("ExceptionMethod", null);
+			Hashtable data = new Hashtable ();
+			data.Add ("XX", "ZZ");
+			si.AddValue ("Data", data, typeof (IDictionary));
+
+			ex = new MyException (si, new StreamingContext ());
+			Assert.AreEqual ("MSG", ex.Message, "#A1");
+			Assert.AreSame (inner, ex.InnerException, "#A2");
+			Assert.AreEqual ("URL", ex.HelpLink, "#A3");
+			Assert.AreEqual (10, ex.HResult, "#A4");
+			Assert.AreEqual ("SRC", ex.Source, "#A5");
+			Assert.IsNotNull (ex.Data, "#A6");
+			Assert.AreEqual (1, ex.Data.Keys.Count, "#A7");
+			Assert.AreEqual ("ZZ", ex.Data ["XX"], "#A8");
+
+			inner = null;
+			si = new SerializationInfo (typeof (Exception),
+				new FormatterConverter ());
+			si.AddValue ("ClassName", "CLASS");
+			si.AddValue ("Message", null);
+			si.AddValue ("InnerException", inner, typeof (Exception));
+			si.AddValue ("HelpURL", "URL");
+			si.AddValue ("StackTraceString", null);
+			si.AddValue ("RemoteStackTraceString", null);
+			si.AddValue ("RemoteStackIndex", 0);
+			si.AddValue ("HResult", 10);
+			si.AddValue ("Source", "SRC");
+			si.AddValue ("ExceptionMethod", null);
+
+			ex = new MyException (si, new StreamingContext ());
+			Assert.IsNotNull (ex.Message, "#B1");
+			Assert.IsTrue (ex.Message.IndexOf ("CLASS") != -1, "#B2");
+			Assert.IsNull (ex.InnerException, "#B3");
+			Assert.AreEqual ("URL", ex.HelpLink, "#B4");
+			Assert.AreEqual (10, ex.HResult, "#B5");
+			Assert.AreEqual ("SRC", ex.Source, "#B6");
+			Assert.IsNotNull (ex.Data, "#B7");
+			Assert.AreEqual (0, ex.Data.Keys.Count, "#B8");
+		}
+
+
+		// This test makes sure that exceptions thrown on block boundaries are
+		// handled in the correct block. The meaning of the 'caught' variable is
+		// a little confusing since there are two catchers: the method being
+		// tested the the method calling the test. There is probably a better
+		// name, but I can't think of it right now.
+		[Test]
+		public void TestThrowOnBlockBoundaries ()
+		{
+			bool caught;
+			
+			try {
+				caught = false;
+				ThrowBeforeTry();
+			} catch {
+				caught = true;
+			}
+			Assert.IsTrue (caught, "Exceptions thrown before try blocks should not be caught");
+			
+			try {
+				caught = false;
+				ThrowAtBeginOfTry();
+			} catch {
+				caught = true;
+			}
+			Assert.IsFalse (caught, "Exceptions thrown at begin of try blocks should be caught");
+
+			try {
+				caught = false;
+				ThrowAtEndOfTry();
+			} catch {
+				caught = true;
+			}
+			Assert.IsFalse (caught, "Exceptions thrown at end of try blocks should be caught");
+
+			try {
+				caught = false;
+				ThrowAtBeginOfCatch();
+			} catch {
+				caught = true;
+			}
+			Assert.IsTrue (caught, "Exceptions thrown at begin of catch blocks should not be caught");
+
+			try {
+				caught = false;
+				ThrowAtEndOfCatch();
+			} catch {
+				caught = true;
+			}
+			Assert.IsTrue (caught, "Exceptions thrown at end of catch blocks should not be caught");
+
+			try {
+				caught = false;
+				ThrowAtBeginOfFinally();
+			} catch {
+				caught = true;
+			}
+			Assert.IsTrue (caught, "Exceptions thrown at begin of finally blocks should not be caught");
+
+			try {
+				caught = false;
+				ThrowAtEndOfFinally();
+			} catch {
+				caught = true;
+			}
+			Assert.IsTrue (caught, "Exceptions thrown at end of finally blocks should not be caught");
+
+			try {
+				caught = false;
+				ThrowAfterFinally();
+			} catch {
+				caught = true;
+			}
+			Assert.IsTrue (caught, "Exceptions thrown after finally blocks should not be caught");
+		}
+		
+		private static void DoNothing()
+		{
+		}
+
+		private static void ThrowException()
+		{
+			throw new Exception();
+		}
+
+		private static void ThrowBeforeTry()
+		{
+			ThrowException();
+			try {
+				DoNothing();
+			} catch (Exception) {
+				DoNothing();
+			}
+		}
+
+		private static void ThrowAtBeginOfTry()
+		{
+			DoNothing();
+			try {
+				ThrowException();
+				DoNothing();
+			} catch (Exception) {
+				DoNothing();
+			}
+		}
+
+		private static void ThrowAtEndOfTry()
+		{
+			DoNothing();
+			try {
+				DoNothing();
+				ThrowException();
+			} catch (Exception) {
+				DoNothing();
+			}
+		}
+
+		private static void ThrowAtBeginOfCatch()
+		{
+			DoNothing();
+			try {
+				DoNothing();
+				ThrowException();
+			} catch (Exception) {
+				throw;
+			}
+		}
+
+		private static void ThrowAtEndOfCatch()
+		{
+			DoNothing();
+			try {
+				DoNothing();
+				ThrowException();
+			} catch (Exception) {
+				DoNothing();
+				throw;
+			}
+		}
+
+		private static void ThrowAtBeginOfFinally()
+		{
+			DoNothing();
+			try {
+				DoNothing();
+				ThrowException();
+			} catch (Exception) {
+				DoNothing();
+			} finally {
+				ThrowException();
+				DoNothing();
+			}
+		}
+
+		private static void ThrowAtEndOfFinally()
+		{
+			DoNothing();
+			try {
+				DoNothing();
+				ThrowException();
+			} catch (Exception) {
+				DoNothing();
+			} finally {
+				DoNothing();
+				ThrowException();
+			}
+		}
+
+		private static void ThrowAfterFinally()
+		{
+			DoNothing();
+			try {
+				DoNothing();
+				ThrowException();
+			} catch (Exception) {
+				DoNothing();
+			} finally {
+				DoNothing();
+			}
+			ThrowException();
+		}
+
+		[Test]
+		public void GetObjectData ()
+		{
+			string msg = "MESSAGE";
+			Exception inner = new ArgumentException ("whatever");
+			SerializationInfo si;
+			Exception se;
+
+			se = new Exception (msg, inner);
+			si = new SerializationInfo (typeof (Exception),
+				new FormatterConverter ());
+			se.GetObjectData (si, new StreamingContext ());
+			Assert.AreEqual (11, si.MemberCount, "#A1");
+			Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#A2");
+			Assert.IsNull (si.GetValue ("Data", typeof (IDictionary)), "#A3");
+			Assert.AreSame (msg, si.GetString ("Message"), "#A4");
+			Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#A5");
+			Assert.AreSame (se.HelpLink, si.GetString ("HelpURL"), "#A6");
+			Assert.IsNull (si.GetString ("StackTraceString"), "#A7");
+			Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#A8");
+			Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#A9");
+			Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#A10");
+			Assert.IsNull (si.GetString ("Source"), "#A11");
+			Assert.IsNull (si.GetString ("ExceptionMethod"), "#A12");
+
+			// attempt initialization of lazy init members
+			Assert.IsNotNull (se.Data);
+			Assert.IsNull (se.Source);
+			Assert.IsNull (se.StackTrace);
+
+			si = new SerializationInfo (typeof (Exception),
+				new FormatterConverter ());
+			se.GetObjectData (si, new StreamingContext ());
+			Assert.AreEqual (11, si.MemberCount, "#B1");
+			Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#B2");
+			Assert.AreSame (se.Data, si.GetValue ("Data", typeof (IDictionary)), "#B3");
+			Assert.AreSame (msg, si.GetString ("Message"), "#B4");
+			Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#B5");
+			Assert.AreSame (se.HelpLink, si.GetString ("HelpURL"), "#B6");
+			Assert.IsNull (si.GetString ("StackTraceString"), "#B7");
+			Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#B8");
+			Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#B9");
+			Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#B10");
+			Assert.IsNull (si.GetString ("Source"), "#B11");
+			Assert.IsNull (si.GetString ("ExceptionMethod"), "#B12");
+
+			try {
+				throw new Exception (msg, inner);
+			} catch (Exception ex) {
+				si = new SerializationInfo (typeof (Exception),
+					new FormatterConverter ());
+				ex.GetObjectData (si, new StreamingContext ());
+				Assert.AreEqual (11, si.MemberCount, "#C1");
+				Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#C2");
+				Assert.IsNull (si.GetValue ("Data", typeof (IDictionary)), "#C3");
+				Assert.AreSame (msg, si.GetString ("Message"), "#C4");
+				Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#C5");
+				Assert.AreSame (se.HelpLink, si.GetString ("HelpURL"), "#C6");
+				Assert.IsNotNull (si.GetString ("StackTraceString"), "#C7");
+				Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#C8");
+				Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#C9");
+				Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#C10");
+				Assert.IsNotNull (si.GetString ("Source"), "#C11");
+				//Assert.IsNotNull (si.GetString ("ExceptionMethod"), "#C12");
+			}
+
+			try {
+				throw new Exception (msg, inner);
+			} catch (Exception ex) {
+				// force initialization of lazy init members
+				Assert.IsNotNull (ex.Data);
+				Assert.IsNotNull (ex.StackTrace);
+
+				si = new SerializationInfo (typeof (Exception),
+					new FormatterConverter ());
+				ex.GetObjectData (si, new StreamingContext ());
+				Assert.AreEqual (11, si.MemberCount, "#D1");
+				Assert.AreEqual (typeof (Exception).FullName, si.GetString ("ClassName"), "#D2");
+				Assert.AreSame (ex.Data, si.GetValue ("Data", typeof (IDictionary)), "#D3");
+				Assert.AreSame (msg, si.GetString ("Message"), "#D4");
+				Assert.AreSame (inner, si.GetValue ("InnerException", typeof (Exception)), "#D5");
+				Assert.AreSame (ex.HelpLink, si.GetString ("HelpURL"), "#D6");
+				Assert.IsNotNull (si.GetString ("StackTraceString"), "#D7");
+				Assert.IsNull (si.GetString ("RemoteStackTraceString"), "#D8");
+				Assert.AreEqual (0, si.GetInt32 ("RemoteStackIndex"), "#D9");
+				Assert.AreEqual (-2146233088, si.GetInt32 ("HResult"), "#D10");
+				Assert.AreEqual (typeof (ExceptionTest).Assembly.GetName ().Name, si.GetString ("Source"), "#D11");
+				//Assert.IsNotNull (si.GetString ("ExceptionMethod"), "#D12");
+			}
+		}
+
+		[Test]
+		public void GetObjectData_Info_Null ()
+		{
+			Exception e = new Exception ();
+			try {
+				e.GetObjectData (null, new StreamingContext ());
+				Assert.Fail ("#1");
+			} catch (ArgumentNullException ex) {
+				Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
+				Assert.IsNull (ex.InnerException, "#3");
+				Assert.IsNotNull (ex.Message, "#4");
+				Assert.AreEqual ("info", ex.ParamName, "#5");
+			}
+		}
+
+		[Test]
+		public void HResult ()
+		{
+			MyException ex = new MyException ();
+			Assert.AreEqual (-2146233088, ex.HResult, "#1");
+			ex.HResult = int.MaxValue;
+			Assert.AreEqual (int.MaxValue, ex.HResult, "#2");
+			ex.HResult = int.MinValue;
+			Assert.AreEqual (int.MinValue, ex.HResult, "#3");
+		}
+
+		[Test]
+		public void Source ()
+		{
+			Exception ex1 = new Exception ("MSG");
+			Assert.IsNull (ex1.Source, "#1");
+
+			try {
+				throw new Exception ("MSG");
+			} catch (Exception ex2) {
+				Assert.AreEqual (typeof (ExceptionTest).Assembly.GetName ().Name, ex2.Source, "#2");
+			}
+		}
+
+		[Test]
+		public void Source_InnerException ()
+		{
+			Exception a = new Exception ("a", new ArgumentException ("b"));
+			a.Source = "foo";
+
+			Assert.IsNull (a.InnerException.Source);
+		}
+
+		[Test]
+		public void StackTrace ()
+		{
+			Exception ex1 = new Exception ("MSG");
+			Assert.IsNull (ex1.StackTrace, "#1");
+
+			try {
+				throw new Exception ("MSG");
+			} catch (Exception ex2) {
+				Assert.IsNotNull (ex2.StackTrace, "#2");
+			}
+		}
+
+		class MyException : Exception {
+			public MyException ()
+			{
+			}
+
+			public MyException (SerializationInfo info, StreamingContext context)
+				: base (info, context)
+			{
+			}
+
+			public new int HResult {
+				get { return base.HResult; }
+				set { base.HResult = value; }
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/System/MulticastDelegate.cs
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/System/MulticastDelegate.cs
@@ -1,132 +1,132 @@
-// MulticastDelegate.cs - NUnit Test Cases for MulticastDelegates (C# delegates)
-//
-// Daniel Stodden (stodden@in.tum.de)
-//
-// (C) Daniel Stodden
-// 
-
-using NUnit.Framework;
-using System;
-
-namespace MonoTests.System
-{
-
-[TestFixture]
-public class MulticastDelegateTest {
-	
-	public MulticastDelegateTest() {}
-
-	private delegate char MyDelegate( ref string s );
-
-	private char MethodA( ref string s ) 
-	{
-		s += "a";
-		return 'a';
-	}
-
-	private char MethodB( ref string s )
-	{
-		s += "b";
-		return 'b';
-	}
-
-	private char MethodC( ref string s )
-	{
-		s += "c";
-		return 'c';
-	}
-
-	private char MethodD( ref string s )
-	{
-		s += "d";
-		return 'd';
-	}
-
-	[Test]
-	public void TestEquals()
-	{
-		MyDelegate dela = new MyDelegate( MethodA );
-		MyDelegate delb = new MyDelegate( MethodB );
-		MyDelegate delc = new MyDelegate( MethodC );
-
-		Assert.AreEqual(false, dela == delb , "#A01");
-		
-		MyDelegate del1, del2;
-
-		del1 = dela + delb;
-		del2 = delb + delc;
-		Assert.AreEqual(false, del1 == del2 , "#A02");
-		
-		del1 += delc;
-		del2 = dela + del2;
-		Assert.AreEqual(true, del1 == del2 , "#A03");
-		
-		object o = new object ();
-		
-		Assert.AreEqual (false, dela.Equals (o), "#A04");
-		
-	}
-
-	[Test]
-	public void TestCombineRemove()
-	{
-		MyDelegate dela = new MyDelegate( MethodA );
-		MyDelegate delb = new MyDelegate( MethodB );
-		MyDelegate delc = new MyDelegate( MethodC );
-		MyDelegate deld = new MyDelegate( MethodD );
-
-		string val;
-		char res;
-
-		// test combine
-		MyDelegate del1, del2;
-		del1 = dela + delb + delb + delc + delb + delb + deld;
-		val = "";
-		res = del1( ref val );
-		Assert.AreEqual("abbcbbd", val , "#A01");
-		Assert.AreEqual('d', res , "#A02");
-
-		// test remove
-		del2 = del1 - ( delb + delb );
-		val = "";
-		res = del2( ref val );
-		Assert.AreEqual("abbcd", val , "#A03");
-		Assert.AreEqual('d', res , "#A04");
-
-		// we did not affect del1, did we?
-		val = "";
-		res = del1( ref val );
-		Assert.AreEqual("abbcbbd", val , "#A05");
-	}
-
-	[Test] //Bug #12536
-	public void TestCombineBothDirections ()
-	{
-		MyDelegate dela = new MyDelegate( MethodA );
-		MyDelegate delb = new MyDelegate( MethodB );
-		MyDelegate delc = new MyDelegate( MethodC );
-		MyDelegate deld = new MyDelegate( MethodD );
-
-		string val;
-		char res;
-
-		MyDelegate a = dela + delb;
-		val = "";
-		res = a (ref val);
-		Assert.AreEqual ("ab", val, "#1");
-		Assert.AreEqual ('b', res, "#2");
-
-		MyDelegate b = delc + deld;
-		val = "";
-		res = b (ref val);
-		Assert.AreEqual ("cd", val, "#3");
-		Assert.AreEqual ('d', res, "#4");
-
-		MyDelegate c = a + b;
-		val = "";
-		res = c (ref val);
-		Assert.AreEqual ("abcd", val, "#5");
-		Assert.AreEqual ('d', res, "#6");
-	}
-}
-}
+// MulticastDelegate.cs - NUnit Test Cases for MulticastDelegates (C# delegates)
+//
+// Daniel Stodden (stodden@in.tum.de)
+//
+// (C) Daniel Stodden
+// 
+
+using NUnit.Framework;
+using System;
+
+namespace MonoTests.System
+{
+
+[TestFixture]
+public class MulticastDelegateTest {
+	
+	public MulticastDelegateTest() {}
+
+	private delegate char MyDelegate( ref string s );
+
+	private char MethodA( ref string s ) 
+	{
+		s += "a";
+		return 'a';
+	}
+
+	private char MethodB( ref string s )
+	{
+		s += "b";
+		return 'b';
+	}
+
+	private char MethodC( ref string s )
+	{
+		s += "c";
+		return 'c';
+	}
+
+	private char MethodD( ref string s )
+	{
+		s += "d";
+		return 'd';
+	}
+
+	[Test]
+	public void TestEquals()
+	{
+		MyDelegate dela = new MyDelegate( MethodA );
+		MyDelegate delb = new MyDelegate( MethodB );
+		MyDelegate delc = new MyDelegate( MethodC );
+
+		Assert.AreEqual(false, dela == delb , "#A01");
+		
+		MyDelegate del1, del2;
+
+		del1 = dela + delb;
+		del2 = delb + delc;
+		Assert.AreEqual(false, del1 == del2 , "#A02");
+		
+		del1 += delc;
+		del2 = dela + del2;
+		Assert.AreEqual(true, del1 == del2 , "#A03");
+		
+		object o = new object ();
+		
+		Assert.AreEqual (false, dela.Equals (o), "#A04");
+		
+	}
+
+	[Test]
+	public void TestCombineRemove()
+	{
+		MyDelegate dela = new MyDelegate( MethodA );
+		MyDelegate delb = new MyDelegate( MethodB );
+		MyDelegate delc = new MyDelegate( MethodC );
+		MyDelegate deld = new MyDelegate( MethodD );
+
+		string val;
+		char res;
+
+		// test combine
+		MyDelegate del1, del2;
+		del1 = dela + delb + delb + delc + delb + delb + deld;
+		val = "";
+		res = del1( ref val );
+		Assert.AreEqual("abbcbbd", val , "#A01");
+		Assert.AreEqual('d', res , "#A02");
+
+		// test remove
+		del2 = del1 - ( delb + delb );
+		val = "";
+		res = del2( ref val );
+		Assert.AreEqual("abbcd", val , "#A03");
+		Assert.AreEqual('d', res , "#A04");
+
+		// we did not affect del1, did we?
+		val = "";
+		res = del1( ref val );
+		Assert.AreEqual("abbcbbd", val , "#A05");
+	}
+
+	[Test] //Bug #12536
+	public void TestCombineBothDirections ()
+	{
+		MyDelegate dela = new MyDelegate( MethodA );
+		MyDelegate delb = new MyDelegate( MethodB );
+		MyDelegate delc = new MyDelegate( MethodC );
+		MyDelegate deld = new MyDelegate( MethodD );
+
+		string val;
+		char res;
+
+		MyDelegate a = dela + delb;
+		val = "";
+		res = a (ref val);
+		Assert.AreEqual ("ab", val, "#1");
+		Assert.AreEqual ('b', res, "#2");
+
+		MyDelegate b = delc + deld;
+		val = "";
+		res = b (ref val);
+		Assert.AreEqual ("cd", val, "#3");
+		Assert.AreEqual ('d', res, "#4");
+
+		MyDelegate c = a + b;
+		val = "";
+		res = c (ref val);
+		Assert.AreEqual ("abcd", val, "#5");
+		Assert.AreEqual ('d', res, "#6");
+	}
+}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/resources/AFile.txt
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/resources/AFile.txt
@@ -1,39 +1,39 @@
-//
-// Mono.Tests.AllTests.cs
-//
-// Author:
-//      Alexander Klyubin (klyubin@aqris.com)
-//
-// (C) 2001
-//
-
-using System;
-using NUnit.Framework;
-
-namespace MonoTests {
-        /// <summary>
-        ///   Combines all available unit tests into one test suite.
-        /// </summary>
-        public class AllTests : TestCase {
-                public AllTests(string name) : base(name) {}
-                
-                public static ITest Suite 
-                { 
-                        get 
-                        {
-                                TestSuite suite =  new TestSuite();
-                                suite.AddTest(System.AllTests.Suite);
-                                suite.AddTest(System.Collections.AllTests.Suite);
-                                suite.AddTest(System.Security.AllTests.Suite);
-                                suite.AddTest(System.Security.Cryptography.AllTests.Suite);
-                                suite.AddTest(System.IO.AllTests.Suite);
-                                suite.AddTest(System.Net.AllTests.Suite);
-                                suite.AddTest(System.Text.AllTests.Suite);
-                                suite.AddTest(System.Security.Permissions.AllTests.Suite);
-                                suite.AddTest(System.Resources.AllTests.Suite);
-//                                suite.AddTest(System.Security.Policy.AllTests.Suite);
-                                return suite;
-                        }
-                }
-        }
-}
+//
+// Mono.Tests.AllTests.cs
+//
+// Author:
+//      Alexander Klyubin (klyubin@aqris.com)
+//
+// (C) 2001
+//
+
+using System;
+using NUnit.Framework;
+
+namespace MonoTests {
+        /// <summary>
+        ///   Combines all available unit tests into one test suite.
+        /// </summary>
+        public class AllTests : TestCase {
+                public AllTests(string name) : base(name) {}
+                
+                public static ITest Suite 
+                { 
+                        get 
+                        {
+                                TestSuite suite =  new TestSuite();
+                                suite.AddTest(System.AllTests.Suite);
+                                suite.AddTest(System.Collections.AllTests.Suite);
+                                suite.AddTest(System.Security.AllTests.Suite);
+                                suite.AddTest(System.Security.Cryptography.AllTests.Suite);
+                                suite.AddTest(System.IO.AllTests.Suite);
+                                suite.AddTest(System.Net.AllTests.Suite);
+                                suite.AddTest(System.Text.AllTests.Suite);
+                                suite.AddTest(System.Security.Permissions.AllTests.Suite);
+                                suite.AddTest(System.Resources.AllTests.Suite);
+//                                suite.AddTest(System.Security.Policy.AllTests.Suite);
+                                return suite;
+                        }
+                }
+        }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/resources/Resources.es-ES.resx
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/resources/Resources.es-ES.resx
@@ -1,123 +1,123 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="Hello" xml:space="preserve">
-    <value>Hola</value>
-  </data>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Hello" xml:space="preserve">
+    <value>Hola</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/resources/Resources.nn-NO.resx
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/resources/Resources.nn-NO.resx
@@ -1,123 +1,123 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="Hello" xml:space="preserve">
-    <value>Hei</value>
-  </data>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Hello" xml:space="preserve">
+    <value>Hei</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/corlib/Test/resources/Resources.resx
+++ mono-4.6.2.7+dfsg/mcs/class/corlib/Test/resources/Resources.resx
@@ -1,123 +1,123 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="Hello" xml:space="preserve">
-    <value>Hello</value>
-  </data>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Hello" xml:space="preserve">
+    <value>Hello</value>
+  </data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/class/monodoc/Resources/helper.js
+++ mono-4.6.2.7+dfsg/mcs/class/monodoc/Resources/helper.js
@@ -1,12 +1,12 @@
-function toggle_display (block) {
-  var w = document.getElementById (block);
-  var t = document.getElementById (block + ":toggle");
-  if (w.style.display == "none") {
-    w.style.display = "block";
-		t.getElementsByTagName("img")[0].setAttribute ("src", "xtree/images/clean/Lminus.gif"); // <img src="xtree/images/clean/Lminus.gif">
-  } else {
-    w.style.display = "none";
-		t.getElementsByTagName("img")[0].setAttribute ("src", "xtree/images/clean/Lplus.gif"); // <img src="xtree/images/clean/Lplus.gif">
-  }
-}
-
+function toggle_display (block) {
+  var w = document.getElementById (block);
+  var t = document.getElementById (block + ":toggle");
+  if (w.style.display == "none") {
+    w.style.display = "block";
+		t.getElementsByTagName("img")[0].setAttribute ("src", "xtree/images/clean/Lminus.gif"); // <img src="xtree/images/clean/Lminus.gif">
+  } else {
+    w.style.display = "none";
+		t.getElementsByTagName("img")[0].setAttribute ("src", "xtree/images/clean/Lplus.gif"); // <img src="xtree/images/clean/Lplus.gif">
+  }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/class/reference-assemblies/Makefile
+++ mono-4.6.2.7+dfsg/mcs/class/reference-assemblies/Makefile
@@ -12,19 +12,12 @@ install-local:
 	$(MKINSTALLDIRS) $(PROFILE_DIR)/4.0-api
 	$(MKINSTALLDIRS) $(PROFILE_DIR)/4.5-api
 	$(MKINSTALLDIRS) $(PROFILE_DIR)/4.5-api/Facades
-	$(INSTALL_LIB) ../../../external/binary-reference-assemblies/v2.0/*.dll $(PROFILE_DIR)/2.0-api
-	$(INSTALL_LIB) ../../../external/binary-reference-assemblies/v3.5/*.dll $(PROFILE_DIR)/3.5-api
-	$(INSTALL_LIB) ../../../external/binary-reference-assemblies/v4.0/*.dll $(PROFILE_DIR)/4.0-api
-	$(INSTALL_LIB) ../../../external/binary-reference-assemblies/v4.5/*.dll $(PROFILE_DIR)/4.5-api
-	$(INSTALL_LIB) ../../../external/binary-reference-assemblies/v4.5/Facades/*.dll $(PROFILE_DIR)/4.5-api/Facades
 
 	# Unfortunately, a few programs (most notably NUnit and FSharp) have hardcoded checks for <prefix>/lib/mono/4.0/mscorlib.dll or Mono.Posix.dll,
 	# so we need to place something there or those tools break. We decided to symlink to the reference assembly for now.
 	# See https://bugzilla.xamarin.com/show_bug.cgi?id=38331 and https://bugzilla.xamarin.com/show_bug.cgi?id=41052
 	$(MKINSTALLDIRS) $(PROFILE_DIR)/4.0
-	ln -sf ../4.0-api/mscorlib.dll $(PROFILE_DIR)/4.0/mscorlib.dll
-	ln -sf ../4.0-api/Mono.Posix.dll $(PROFILE_DIR)/4.0/Mono.Posix.dll
 
-DISTFILES = $(wildcard ../../../external/binary-reference-assemblies/v4.5/Facades/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v4.5/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v4.0/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v3.5/*.dll) $(wildcard ../../../external/binary-reference-assemblies/v2.0/*.dll) Makefile
+DISTFILES = Makefile
 
 dist-local: dist-default
--- mono-4.6.2.7+dfsg.orig/mcs/class/referencesource/LICENSE.txt
+++ mono-4.6.2.7+dfsg/mcs/class/referencesource/LICENSE.txt
@@ -1,21 +1,21 @@
-﻿The MIT License (MIT)
-
-Copyright (c) Microsoft Corporation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy 
-of this software and associated documentation files (the "Software"), to deal 
-in the Software without restriction, including without limitation the rights 
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom the Software is 
-furnished to do so, subject to the following conditions: 
-
-The above copyright notice and this permission notice shall be included in all 
-copies or substantial portions of the Software. 
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
-SOFTWARE.
+﻿The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining a copy 
+of this software and associated documentation files (the "Software"), to deal 
+in the Software without restriction, including without limitation the rights 
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
+copies of the Software, and to permit persons to whom the Software is 
+furnished to do so, subject to the following conditions: 
+
+The above copyright notice and this permission notice shall be included in all 
+copies or substantial portions of the Software. 
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
+SOFTWARE.
--- mono-4.6.2.7+dfsg.orig/mcs/class/referencesource/PATENTS.TXT
+++ mono-4.6.2.7+dfsg/mcs/class/referencesource/PATENTS.TXT
@@ -1,46 +1,46 @@
-﻿Microsoft Patent Promise for .NET Libraries and Runtime Components 
-
-Microsoft Corporation and its affiliates ("Microsoft") promise not to assert 
-any .NET Patents against you for making, using, selling, offering for sale, 
-importing, or distributing Covered Code, as part of either a .NET Runtime or 
-as part of any application designed to run on a .NET Runtime. 
-
-If you file, maintain, or voluntarily participate in any claim in a lawsuit 
-alleging direct or contributory patent infringement by any Covered Code, or 
-inducement of patent infringement by any Covered Code, then your rights under 
-this promise will automatically terminate. 
-
-This promise is not an assurance that (i) any .NET Patents are valid or 
-enforceable, or (ii) Covered Code does not infringe patents or other 
-intellectual property rights of any third party. No rights except those 
-expressly stated in this promise are granted, waived, or received by 
-Microsoft, whether by implication, exhaustion, estoppel, or otherwise. 
-This is a personal promise directly from Microsoft to you, and you agree as a 
-condition of benefiting from it that no Microsoft rights are received from 
-suppliers, distributors, or otherwise from any other person in connection with 
-this promise. 
-
-Definitions: 
-
-"Covered Code" means those Microsoft .NET libraries and runtime components as 
-made available by Microsoft at https://github.com/Microsoft/referencesource. 
-
-".NET Patents" are those patent claims, both currently owned by Microsoft and 
-acquired in the future, that are necessarily infringed by Covered Code. .NET 
-Patents do not include any patent claims that are infringed by any Enabling 
-Technology, that are infringed only as a consequence of modification of 
-Covered Code, or that are infringed only by the combination of Covered Code 
-with third party code. 
-
-".NET Runtime" means any compliant implementation in software of (a) all of 
-the required parts of the mandatory provisions of Standard ECMA-335 – Common 
-Language Infrastructure (CLI); and (b) if implemented, any additional 
-functionality in Microsoft's .NET Framework, as described in Microsoft's API 
-documentation on its MSDN website. For example, .NET Runtimes include 
-Microsoft's .NET Framework and those portions of the Mono Project compliant 
-with (a) and (b). 
-
-"Enabling Technology" means underlying or enabling technology that may be 
-used, combined, or distributed in connection with Microsoft's .NET Framework 
-or other .NET Runtimes, such as hardware, operating systems, and applications 
-that run on .NET Framework or other .NET Runtimes. 
+﻿Microsoft Patent Promise for .NET Libraries and Runtime Components 
+
+Microsoft Corporation and its affiliates ("Microsoft") promise not to assert 
+any .NET Patents against you for making, using, selling, offering for sale, 
+importing, or distributing Covered Code, as part of either a .NET Runtime or 
+as part of any application designed to run on a .NET Runtime. 
+
+If you file, maintain, or voluntarily participate in any claim in a lawsuit 
+alleging direct or contributory patent infringement by any Covered Code, or 
+inducement of patent infringement by any Covered Code, then your rights under 
+this promise will automatically terminate. 
+
+This promise is not an assurance that (i) any .NET Patents are valid or 
+enforceable, or (ii) Covered Code does not infringe patents or other 
+intellectual property rights of any third party. No rights except those 
+expressly stated in this promise are granted, waived, or received by 
+Microsoft, whether by implication, exhaustion, estoppel, or otherwise. 
+This is a personal promise directly from Microsoft to you, and you agree as a 
+condition of benefiting from it that no Microsoft rights are received from 
+suppliers, distributors, or otherwise from any other person in connection with 
+this promise. 
+
+Definitions: 
+
+"Covered Code" means those Microsoft .NET libraries and runtime components as 
+made available by Microsoft at https://github.com/Microsoft/referencesource. 
+
+".NET Patents" are those patent claims, both currently owned by Microsoft and 
+acquired in the future, that are necessarily infringed by Covered Code. .NET 
+Patents do not include any patent claims that are infringed by any Enabling 
+Technology, that are infringed only as a consequence of modification of 
+Covered Code, or that are infringed only by the combination of Covered Code 
+with third party code. 
+
+".NET Runtime" means any compliant implementation in software of (a) all of 
+the required parts of the mandatory provisions of Standard ECMA-335 – Common 
+Language Infrastructure (CLI); and (b) if implemented, any additional 
+functionality in Microsoft's .NET Framework, as described in Microsoft's API 
+documentation on its MSDN website. For example, .NET Runtimes include 
+Microsoft's .NET Framework and those portions of the Mono Project compliant 
+with (a) and (b). 
+
+"Enabling Technology" means underlying or enabling technology that may be 
+used, combined, or distributed in connection with Microsoft's .NET Framework 
+or other .NET Runtimes, such as hardware, operating systems, and applications 
+that run on .NET Framework or other .NET Runtimes. 
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/codegen/CodeGen.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/codegen/CodeGen.cs
@@ -1,549 +1,549 @@
-//
-// Mono.ILASM.CodeGen.cs
-//
-// Author(s):
-//  Sergey Chaban (serge@wildwestsoftware.com)
-//  Jackson Harper (Jackson@LatitudeGeo.com)
-//
-// (C) Sergey Chaban
-// (C) 2003 Jackson Harper, All rights reserved
-//
-
-using PEAPI;
-using System;
-using System.IO;
-using System.Collections;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Text;
-using System.Security;
-
-using SSPermissionSet = System.Security.PermissionSet;
-using MIPermissionSet = Mono.ILASM.PermissionSet;
-
-using MIAssembly = Mono.ILASM.Assembly;
-
-namespace Mono.ILASM {
-
-        public class CodeGen {
-
-                private PEFile pefile;
-                private ExternAssembly current_assemblyref;
-                private ExternModule current_moduleref;
-                private string current_namespace;
-                private TypeDef current_typedef;
-                private MethodDef current_methoddef;
-                private ArrayList typedef_stack;
-		private int typedef_stack_top;
-		private SymbolWriter symwriter;
-                private ICustomAttrTarget current_customattrtarget;
-                private IDeclSecurityTarget current_declsectarget;
-                private PEAPI.NativeType current_field_native_type;
-
-                private MIAssembly this_assembly;
-                        
-                private TypeManager type_manager;
-                private ExternTable extern_table;
-                private Hashtable global_field_table;
-                private Hashtable global_method_table;
-                private Hashtable global_methodref_table;
-                private Hashtable global_fieldref_table;
-                private Hashtable data_table;
-                private FileRef file_ref;
-                private ArrayList manifestResources;
-                private Hashtable typeref_table;
-                
-                private ArrayList defcont_list;
-
-                private int sub_system;
-                private int cor_flags;
-                private long image_base;
-                private long stack_reserve;
-
-                private string output_file;
-		private string debug_file;
-                private bool is_dll;
-                private bool entry_point;
-
-                private Module this_module;
-
-                public CodeGen (string output_file, bool is_dll, bool debugging_info)
-                {
-                        this.output_file = output_file;
-                        this.is_dll = is_dll;
-
-			if (debugging_info)
-				symwriter = new SymbolWriter (output_file);
-
-                        type_manager = new TypeManager (this);
-                        extern_table = new ExternTable ();
-                        typedef_stack = new ArrayList ();
-			typedef_stack_top = 0;
-                        global_field_table = new Hashtable ();
-                        global_method_table = new Hashtable ();
-
-                        data_table = new Hashtable ();
-
-                        defcont_list = new ArrayList ();
-
-                        sub_system = -1;
-                        cor_flags = -1;
-                        image_base = -1;
-                        stack_reserve = -1;
-                        entry_point = false;
-                        this_module = null;
-                }
-
-                public PEFile PEFile {
-                        get { return pefile; }
-                }
-
-		public SymbolWriter SymbolWriter {
-			get { return symwriter; }
-		}
-
-                public string CurrentNameSpace {
-                        get { return current_namespace; }
-                        set { current_namespace = value; }
-                }
-
-                public TypeDef CurrentTypeDef {
-                        get { return current_typedef; }
-                }
-
-                public MethodDef CurrentMethodDef {
-                        get { return current_methoddef; }
-                }
-
-                public ExternAssembly CurrentAssemblyRef {
-                        get { return current_assemblyref; }
-                }
-
-                public ExternModule CurrentModuleRef {
-                        get { return current_moduleref; }
-                }
-
-                public ICustomAttrTarget CurrentCustomAttrTarget {
-                        get { return current_customattrtarget; }
-                        set { current_customattrtarget = value; }
-                }
-
-                public IDeclSecurityTarget CurrentDeclSecurityTarget {
-                        get { return current_declsectarget; }
-                        set { current_declsectarget = value; }
-                }
-
-                public ExternTable ExternTable {
-                        get { return extern_table; }
-                }
-
-                public TypeManager TypeManager {
-                        get { return type_manager; }
-                }
-
-                public bool HasEntryPoint {
-                        get { return entry_point; }
-                        set { 
-                                /* if (!value) error: unsetting entrypoint ? */
-                                if (entry_point)
-                                        Report.Error ("Multiple .entrypoint declarations.");
-                                entry_point = value;
-                        }                
-                }
-
-                public TypeRef GetTypeRef (string name)
-                {
-                        TypeRef tr = null;
-
-                        if (typeref_table == null) 
-                                typeref_table = new Hashtable ();
-                        else 
-                                tr = typeref_table [name] as TypeRef;
-
-                        if (tr == null) {
-                                tr = new TypeRef (name, false, null);
-                                typeref_table [name] = tr;
-                        }
-
-                        return tr;
-                }
-
-                public GlobalMethodRef GetGlobalMethodRef (BaseTypeRef ret_type, PEAPI.CallConv call_conv,
-                                string name, BaseTypeRef[] param, int gen_param_count)
-                {
-                        string key = MethodDef.CreateSignature (ret_type, call_conv, name, param, gen_param_count, true);
-
-                        GlobalMethodRef methref = null;
-
-                        if (global_methodref_table == null)
-                                global_methodref_table = new Hashtable ();
-                        else
-                                methref = (GlobalMethodRef) global_methodref_table [key];
-
-                        if (methref == null) {
-                                methref = new GlobalMethodRef (ret_type, call_conv, name, param, gen_param_count);
-                                global_methodref_table [key] = methref;
-                        }
-                        
-                        return methref;
-                }
-
-                public GlobalFieldRef GetGlobalFieldRef (BaseTypeRef ret_type, string name)
-                {
-                        string key = ret_type.FullName + name;
-
-                        GlobalFieldRef fieldref = null;
-
-                        if (global_fieldref_table == null)
-                                global_fieldref_table = new Hashtable ();
-                        else
-                                fieldref = (GlobalFieldRef) global_fieldref_table [key];
-
-                        if (fieldref == null) {
-                                fieldref = new GlobalFieldRef (ret_type, name);
-                                global_fieldref_table [key] = fieldref;
-                        }
-                        
-                        return fieldref;
-                }
-
-                public void SetSubSystem (int sub_system)
-                {
-                        this.sub_system = sub_system;
-                }
-
-                public void SetCorFlags (int cor_flags)
-                {
-                        this.cor_flags = cor_flags;
-                }
-
-                public void SetImageBase (long image_base)
-                {
-                        this.image_base = image_base;
-                }
-
-                public void SetStackReserve (long stack_reserve)
-                {
-                        this.stack_reserve = stack_reserve;
-                }
-
-                public void SetThisAssembly (string name, PEAPI.AssemAttr attr)
-                {
-                        if (this_assembly != null && this_assembly.Name != name)
-                                Report.Error ("Multiple assembly declarations");
-
-                        this_assembly = new Assembly (name);
-                        this_assembly.SetAssemblyAttr (attr);
-                        if (name != "mscorlib")
-                                ExternTable.AddCorlib ();
-                }
-
-                public void SetModuleName (string module_name)
-                {
-                        this_module = new Module (module_name);
-                        CurrentCustomAttrTarget = this_module;
-                }
-
-                public void SetFileRef (FileRef file_ref)
-                {
-                        this.file_ref = file_ref;
-                }
-
-                public MIAssembly ThisAssembly {
-                        get { return this_assembly; }
-                }
-
-                public bool IsThisAssembly (string name)
-                {
-                        return (this_assembly != null && name == this_assembly.Name);
-                }
-
-                public Module ThisModule {
-                        get { return this_module; }
-                }
-                
-                public bool IsThisModule (string name)
-                {
-                        return (this_module != null && name == this_module.Name);
-                }
-
-		public void BeginSourceFile (string name)
-		{
-			if (symwriter != null)
-				symwriter.BeginSourceFile (name);
-		}
-
-		public void EndSourceFile ()
-		{
-			if (symwriter != null)
-				symwriter.EndSourceFile ();
-		}
-
-                public void BeginTypeDef (TypeAttr attr, string name, BaseClassRef parent,
-                                ArrayList impl_list, Location location, GenericParameters gen_params)
-                {
-                        TypeDef outer = null;
-                        string cache_name = CacheName (name);
-                        if (typedef_stack_top > 0) {
-				StringBuilder sb = new StringBuilder ();
-
-				for (int i = 0; i < typedef_stack_top; i++){
-					outer = (TypeDef) typedef_stack [i];
-					if (i == 0)
-						/* Use FullName for outermost class to get the
-						   namespace also */
-						sb.Append (outer.FullName);
-					else
-						sb.Append (outer.Name);
-					sb.Append ("/");
-				}
-				sb.Append (name);
-				cache_name = sb.ToString ();
-                        }
-
-                        TypeDef typedef = type_manager[cache_name];
-
-                        if (typedef != null) {
-                                // Class head is allready defined, we are just reopening the class
-                                current_customattrtarget = current_typedef = typedef;
-                                current_declsectarget = typedef;
-                                typedef_stack.Add (current_typedef);
-				typedef_stack_top++;
-                                return;
-                        }
-
-                        typedef = new TypeDef (attr, current_namespace,
-                                        name, parent, impl_list, location, gen_params, outer);
-
-                        type_manager[cache_name] = typedef;
-                        current_customattrtarget = current_typedef = typedef;
-                        current_declsectarget = typedef;
-			typedef_stack.Add (typedef);
-			typedef_stack_top++;
-                }
-
-                public void AddFieldMarshalInfo (PEAPI.NativeType native_type)
-                {
-                        current_field_native_type = native_type;
-                }
-
-                public void AddFieldDef (FieldDef fielddef)
-                {
-                        if (current_field_native_type != null) {
-                                fielddef.AddMarshalInfo (current_field_native_type);
-                                current_field_native_type = null;
-                        }
-
-                        if (current_typedef != null) {
-                                current_typedef.AddFieldDef (fielddef);
-                        } else {
-                                global_field_table.Add (
-                                        new DictionaryEntry (fielddef.Name, fielddef.Type.FullName),
-                                        fielddef);
-                        }
-                }
-
-                public void AddDataDef (DataDef datadef)
-                {
-                        if (data_table [datadef.Name] != null)
-                                Report.Error ("Duplicate global label '" + datadef.Name + "'");
-                        data_table [datadef.Name] = datadef;
-                }
-
-		public void AddManifestResource (ManifestResource mr)
-		{
-			if (manifestResources == null)
-				manifestResources = new ArrayList ();
-			manifestResources.Add (mr);
-		}
-
-                public PEAPI.DataConstant GetDataConst (string name)
-                {
-                        DataDef def = (DataDef) data_table [name];
-                        if (def == null)
-                                return null;
-
-                        return (DataConstant) def.PeapiConstant;
-                }
-
-                public void BeginMethodDef (MethodDef methoddef)
-                {
-                        if (current_typedef != null) {
-                                current_typedef.AddMethodDef (methoddef);
-                        } else {
-                                global_method_table.Add (methoddef.Signature,
-                                                methoddef);
-                        }
-
-                        current_customattrtarget = current_methoddef = methoddef;
-                        current_declsectarget = methoddef;
-                }
-
-                public void EndMethodDef (Location location)
-                {
-			if (symwriter != null)
-				symwriter.EndMethod (location);
-
-                        current_methoddef = null;
-                }
-
-                public void EndTypeDef ()
-                {
-			typedef_stack_top--;
-			typedef_stack.RemoveAt (typedef_stack_top);
-
-                        if (typedef_stack_top > 0)
-                                current_typedef = (TypeDef) typedef_stack [typedef_stack_top-1];
-                        else
-                                current_typedef = null;
-
-                }
-
-                public void BeginAssemblyRef (string name, AssemblyName asmb_name, PEAPI.AssemAttr attr)
-                {
-                        current_customattrtarget = current_assemblyref = ExternTable.AddAssembly (name, asmb_name, attr);
-                        current_declsectarget = current_assemblyref;
-                }
-
-                public void EndAssemblyRef ()
-                {
-                        current_assemblyref = null;
-                        current_customattrtarget = null;
-                        current_declsectarget = null;
-                }
-
-                public void AddToDefineContentsList (TypeDef typedef)
-                {
-                        defcont_list.Add (typedef);
-                }
-
-                public void AddPermission (PEAPI.SecurityAction sec_action, object perm)
-                {
-                        if (CurrentDeclSecurityTarget == null)
-                                return;
-
-                        AddPermission (sec_action, perm, CurrentDeclSecurityTarget.DeclSecurity);
-                }
-
-                private void AddPermission (PEAPI.SecurityAction sec_action, object perm, DeclSecurity decl_sec)
-                {
-                        SSPermissionSet ps = perm as SSPermissionSet;
-                        if (ps != null) {
-                                decl_sec.AddPermissionSet (sec_action, ps);
-                                return;
-                        }
-
-                        IPermission iper = perm as IPermission;
-                        if (iper != null) {
-                                decl_sec.AddPermission (sec_action, iper);
-                                return;
-                        }
-
-                        MIPermissionSet ps20 = perm as MIPermissionSet;
-                        if (ps20 != null) {
-                                decl_sec.AddPermissionSet (sec_action, ps20);
-                                return;
-                        }
-                }
-
-                public void Write ()
-                {
-                        FileStream out_stream = null;
-
-                        try {
-                                if (ThisModule == null)
-                                        this_module = new Module (Path.GetFileName (output_file));
-
-                                out_stream = new FileStream (output_file, FileMode.Create, FileAccess.Write);
-                                pefile = new PEFile (ThisAssembly != null ? ThisAssembly.Name : null, ThisModule.Name, is_dll, ThisAssembly != null, null, out_stream);
-                                PEAPI.Assembly asmb = pefile.GetThisAssembly ();
-
-                                ThisModule.PeapiModule = pefile.GetThisModule ();
-
-                                if (file_ref != null)
-                                        file_ref.Resolve (this);
-
-                                extern_table.Resolve (this);
-                                type_manager.DefineAll ();
-
-				if (manifestResources != null) {
-					foreach (ManifestResource mr in manifestResources)
-						pefile.AddManifestResource (mr);
-				}
-
-                                foreach (FieldDef fielddef in global_field_table.Values) {
-                                        fielddef.Define (this);
-                                }
-
-                                foreach (MethodDef methoddef in global_method_table.Values) {
-                                        methoddef.Define (this);
-                                }
-
-                                foreach (TypeDef typedef in defcont_list) {
-                                        typedef.DefineContents (this);
-                                }
-
-                                if (ThisAssembly != null)
-                                        ThisAssembly.Resolve (this, pefile.GetThisAssembly ());
-                                ThisModule.Resolve (this, pefile.GetThisModule ());
-
-                                if (sub_system != -1)
-                                        pefile.SetSubSystem ((PEAPI.SubSystem) sub_system);
-                                if (cor_flags != -1)
-                                        pefile.SetCorFlags (cor_flags);
-                                if (stack_reserve != -1)
-                                        pefile.SetStackReserve (stack_reserve);
-
-                                pefile.WritePEFile ();
-
-				if (symwriter != null) {
-					Guid guid = pefile.GetThisModule ().Guid;
-					symwriter.Write (guid);
-				}
-                        } finally {
-                                if (out_stream != null)
-                                        out_stream.Close ();
-                        }
-                }
-
-                public PEAPI.Method ResolveMethod (string signature)
-                {
-                        MethodDef methoddef = (MethodDef) global_method_table[signature];
-                        if (methoddef == null)
-                                Report.Error ("Unable to resolve global method : " + signature);
-
-                        return methoddef.Resolve (this);
-                }
-
-                public PEAPI.Method ResolveVarargMethod (string sig_only_required_params, string sig_with_optional_params,
-                                CodeGen code_gen, PEAPI.Type[] opt)
-                {
-                        MethodDef methoddef = (MethodDef) global_method_table [sig_only_required_params];
-                        if (methoddef == null)
-                                Report.Error ("Unable to resolve global method : " + sig_only_required_params);
-
-                        methoddef.Resolve (code_gen);
-                        return methoddef.GetVarargSig (opt, sig_with_optional_params);
-                }
-
-                public PEAPI.Field ResolveField (string name, string type_name)
-                {
-                        FieldDef fielddef = (FieldDef) global_field_table[new DictionaryEntry (name, type_name)]; 
-                        if (fielddef == null)
-                                Report.Error (String.Format ("Unable to resolve global field : {0} {1}", type_name, name));
-
-                        return fielddef.Resolve (this);
-                }
-
-                private string CacheName (string name)
-                {
-                        if (current_namespace == null ||
-                                        current_namespace == String.Empty)
-                                return name;
-
-                        return current_namespace + "." + name;
-                }
-        }
-
-}
-
+//
+// Mono.ILASM.CodeGen.cs
+//
+// Author(s):
+//  Sergey Chaban (serge@wildwestsoftware.com)
+//  Jackson Harper (Jackson@LatitudeGeo.com)
+//
+// (C) Sergey Chaban
+// (C) 2003 Jackson Harper, All rights reserved
+//
+
+using PEAPI;
+using System;
+using System.IO;
+using System.Collections;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Text;
+using System.Security;
+
+using SSPermissionSet = System.Security.PermissionSet;
+using MIPermissionSet = Mono.ILASM.PermissionSet;
+
+using MIAssembly = Mono.ILASM.Assembly;
+
+namespace Mono.ILASM {
+
+        public class CodeGen {
+
+                private PEFile pefile;
+                private ExternAssembly current_assemblyref;
+                private ExternModule current_moduleref;
+                private string current_namespace;
+                private TypeDef current_typedef;
+                private MethodDef current_methoddef;
+                private ArrayList typedef_stack;
+		private int typedef_stack_top;
+		private SymbolWriter symwriter;
+                private ICustomAttrTarget current_customattrtarget;
+                private IDeclSecurityTarget current_declsectarget;
+                private PEAPI.NativeType current_field_native_type;
+
+                private MIAssembly this_assembly;
+                        
+                private TypeManager type_manager;
+                private ExternTable extern_table;
+                private Hashtable global_field_table;
+                private Hashtable global_method_table;
+                private Hashtable global_methodref_table;
+                private Hashtable global_fieldref_table;
+                private Hashtable data_table;
+                private FileRef file_ref;
+                private ArrayList manifestResources;
+                private Hashtable typeref_table;
+                
+                private ArrayList defcont_list;
+
+                private int sub_system;
+                private int cor_flags;
+                private long image_base;
+                private long stack_reserve;
+
+                private string output_file;
+		private string debug_file;
+                private bool is_dll;
+                private bool entry_point;
+
+                private Module this_module;
+
+                public CodeGen (string output_file, bool is_dll, bool debugging_info)
+                {
+                        this.output_file = output_file;
+                        this.is_dll = is_dll;
+
+			if (debugging_info)
+				symwriter = new SymbolWriter (output_file);
+
+                        type_manager = new TypeManager (this);
+                        extern_table = new ExternTable ();
+                        typedef_stack = new ArrayList ();
+			typedef_stack_top = 0;
+                        global_field_table = new Hashtable ();
+                        global_method_table = new Hashtable ();
+
+                        data_table = new Hashtable ();
+
+                        defcont_list = new ArrayList ();
+
+                        sub_system = -1;
+                        cor_flags = -1;
+                        image_base = -1;
+                        stack_reserve = -1;
+                        entry_point = false;
+                        this_module = null;
+                }
+
+                public PEFile PEFile {
+                        get { return pefile; }
+                }
+
+		public SymbolWriter SymbolWriter {
+			get { return symwriter; }
+		}
+
+                public string CurrentNameSpace {
+                        get { return current_namespace; }
+                        set { current_namespace = value; }
+                }
+
+                public TypeDef CurrentTypeDef {
+                        get { return current_typedef; }
+                }
+
+                public MethodDef CurrentMethodDef {
+                        get { return current_methoddef; }
+                }
+
+                public ExternAssembly CurrentAssemblyRef {
+                        get { return current_assemblyref; }
+                }
+
+                public ExternModule CurrentModuleRef {
+                        get { return current_moduleref; }
+                }
+
+                public ICustomAttrTarget CurrentCustomAttrTarget {
+                        get { return current_customattrtarget; }
+                        set { current_customattrtarget = value; }
+                }
+
+                public IDeclSecurityTarget CurrentDeclSecurityTarget {
+                        get { return current_declsectarget; }
+                        set { current_declsectarget = value; }
+                }
+
+                public ExternTable ExternTable {
+                        get { return extern_table; }
+                }
+
+                public TypeManager TypeManager {
+                        get { return type_manager; }
+                }
+
+                public bool HasEntryPoint {
+                        get { return entry_point; }
+                        set { 
+                                /* if (!value) error: unsetting entrypoint ? */
+                                if (entry_point)
+                                        Report.Error ("Multiple .entrypoint declarations.");
+                                entry_point = value;
+                        }                
+                }
+
+                public TypeRef GetTypeRef (string name)
+                {
+                        TypeRef tr = null;
+
+                        if (typeref_table == null) 
+                                typeref_table = new Hashtable ();
+                        else 
+                                tr = typeref_table [name] as TypeRef;
+
+                        if (tr == null) {
+                                tr = new TypeRef (name, false, null);
+                                typeref_table [name] = tr;
+                        }
+
+                        return tr;
+                }
+
+                public GlobalMethodRef GetGlobalMethodRef (BaseTypeRef ret_type, PEAPI.CallConv call_conv,
+                                string name, BaseTypeRef[] param, int gen_param_count)
+                {
+                        string key = MethodDef.CreateSignature (ret_type, call_conv, name, param, gen_param_count, true);
+
+                        GlobalMethodRef methref = null;
+
+                        if (global_methodref_table == null)
+                                global_methodref_table = new Hashtable ();
+                        else
+                                methref = (GlobalMethodRef) global_methodref_table [key];
+
+                        if (methref == null) {
+                                methref = new GlobalMethodRef (ret_type, call_conv, name, param, gen_param_count);
+                                global_methodref_table [key] = methref;
+                        }
+                        
+                        return methref;
+                }
+
+                public GlobalFieldRef GetGlobalFieldRef (BaseTypeRef ret_type, string name)
+                {
+                        string key = ret_type.FullName + name;
+
+                        GlobalFieldRef fieldref = null;
+
+                        if (global_fieldref_table == null)
+                                global_fieldref_table = new Hashtable ();
+                        else
+                                fieldref = (GlobalFieldRef) global_fieldref_table [key];
+
+                        if (fieldref == null) {
+                                fieldref = new GlobalFieldRef (ret_type, name);
+                                global_fieldref_table [key] = fieldref;
+                        }
+                        
+                        return fieldref;
+                }
+
+                public void SetSubSystem (int sub_system)
+                {
+                        this.sub_system = sub_system;
+                }
+
+                public void SetCorFlags (int cor_flags)
+                {
+                        this.cor_flags = cor_flags;
+                }
+
+                public void SetImageBase (long image_base)
+                {
+                        this.image_base = image_base;
+                }
+
+                public void SetStackReserve (long stack_reserve)
+                {
+                        this.stack_reserve = stack_reserve;
+                }
+
+                public void SetThisAssembly (string name, PEAPI.AssemAttr attr)
+                {
+                        if (this_assembly != null && this_assembly.Name != name)
+                                Report.Error ("Multiple assembly declarations");
+
+                        this_assembly = new Assembly (name);
+                        this_assembly.SetAssemblyAttr (attr);
+                        if (name != "mscorlib")
+                                ExternTable.AddCorlib ();
+                }
+
+                public void SetModuleName (string module_name)
+                {
+                        this_module = new Module (module_name);
+                        CurrentCustomAttrTarget = this_module;
+                }
+
+                public void SetFileRef (FileRef file_ref)
+                {
+                        this.file_ref = file_ref;
+                }
+
+                public MIAssembly ThisAssembly {
+                        get { return this_assembly; }
+                }
+
+                public bool IsThisAssembly (string name)
+                {
+                        return (this_assembly != null && name == this_assembly.Name);
+                }
+
+                public Module ThisModule {
+                        get { return this_module; }
+                }
+                
+                public bool IsThisModule (string name)
+                {
+                        return (this_module != null && name == this_module.Name);
+                }
+
+		public void BeginSourceFile (string name)
+		{
+			if (symwriter != null)
+				symwriter.BeginSourceFile (name);
+		}
+
+		public void EndSourceFile ()
+		{
+			if (symwriter != null)
+				symwriter.EndSourceFile ();
+		}
+
+                public void BeginTypeDef (TypeAttr attr, string name, BaseClassRef parent,
+                                ArrayList impl_list, Location location, GenericParameters gen_params)
+                {
+                        TypeDef outer = null;
+                        string cache_name = CacheName (name);
+                        if (typedef_stack_top > 0) {
+				StringBuilder sb = new StringBuilder ();
+
+				for (int i = 0; i < typedef_stack_top; i++){
+					outer = (TypeDef) typedef_stack [i];
+					if (i == 0)
+						/* Use FullName for outermost class to get the
+						   namespace also */
+						sb.Append (outer.FullName);
+					else
+						sb.Append (outer.Name);
+					sb.Append ("/");
+				}
+				sb.Append (name);
+				cache_name = sb.ToString ();
+                        }
+
+                        TypeDef typedef = type_manager[cache_name];
+
+                        if (typedef != null) {
+                                // Class head is allready defined, we are just reopening the class
+                                current_customattrtarget = current_typedef = typedef;
+                                current_declsectarget = typedef;
+                                typedef_stack.Add (current_typedef);
+				typedef_stack_top++;
+                                return;
+                        }
+
+                        typedef = new TypeDef (attr, current_namespace,
+                                        name, parent, impl_list, location, gen_params, outer);
+
+                        type_manager[cache_name] = typedef;
+                        current_customattrtarget = current_typedef = typedef;
+                        current_declsectarget = typedef;
+			typedef_stack.Add (typedef);
+			typedef_stack_top++;
+                }
+
+                public void AddFieldMarshalInfo (PEAPI.NativeType native_type)
+                {
+                        current_field_native_type = native_type;
+                }
+
+                public void AddFieldDef (FieldDef fielddef)
+                {
+                        if (current_field_native_type != null) {
+                                fielddef.AddMarshalInfo (current_field_native_type);
+                                current_field_native_type = null;
+                        }
+
+                        if (current_typedef != null) {
+                                current_typedef.AddFieldDef (fielddef);
+                        } else {
+                                global_field_table.Add (
+                                        new DictionaryEntry (fielddef.Name, fielddef.Type.FullName),
+                                        fielddef);
+                        }
+                }
+
+                public void AddDataDef (DataDef datadef)
+                {
+                        if (data_table [datadef.Name] != null)
+                                Report.Error ("Duplicate global label '" + datadef.Name + "'");
+                        data_table [datadef.Name] = datadef;
+                }
+
+		public void AddManifestResource (ManifestResource mr)
+		{
+			if (manifestResources == null)
+				manifestResources = new ArrayList ();
+			manifestResources.Add (mr);
+		}
+
+                public PEAPI.DataConstant GetDataConst (string name)
+                {
+                        DataDef def = (DataDef) data_table [name];
+                        if (def == null)
+                                return null;
+
+                        return (DataConstant) def.PeapiConstant;
+                }
+
+                public void BeginMethodDef (MethodDef methoddef)
+                {
+                        if (current_typedef != null) {
+                                current_typedef.AddMethodDef (methoddef);
+                        } else {
+                                global_method_table.Add (methoddef.Signature,
+                                                methoddef);
+                        }
+
+                        current_customattrtarget = current_methoddef = methoddef;
+                        current_declsectarget = methoddef;
+                }
+
+                public void EndMethodDef (Location location)
+                {
+			if (symwriter != null)
+				symwriter.EndMethod (location);
+
+                        current_methoddef = null;
+                }
+
+                public void EndTypeDef ()
+                {
+			typedef_stack_top--;
+			typedef_stack.RemoveAt (typedef_stack_top);
+
+                        if (typedef_stack_top > 0)
+                                current_typedef = (TypeDef) typedef_stack [typedef_stack_top-1];
+                        else
+                                current_typedef = null;
+
+                }
+
+                public void BeginAssemblyRef (string name, AssemblyName asmb_name, PEAPI.AssemAttr attr)
+                {
+                        current_customattrtarget = current_assemblyref = ExternTable.AddAssembly (name, asmb_name, attr);
+                        current_declsectarget = current_assemblyref;
+                }
+
+                public void EndAssemblyRef ()
+                {
+                        current_assemblyref = null;
+                        current_customattrtarget = null;
+                        current_declsectarget = null;
+                }
+
+                public void AddToDefineContentsList (TypeDef typedef)
+                {
+                        defcont_list.Add (typedef);
+                }
+
+                public void AddPermission (PEAPI.SecurityAction sec_action, object perm)
+                {
+                        if (CurrentDeclSecurityTarget == null)
+                                return;
+
+                        AddPermission (sec_action, perm, CurrentDeclSecurityTarget.DeclSecurity);
+                }
+
+                private void AddPermission (PEAPI.SecurityAction sec_action, object perm, DeclSecurity decl_sec)
+                {
+                        SSPermissionSet ps = perm as SSPermissionSet;
+                        if (ps != null) {
+                                decl_sec.AddPermissionSet (sec_action, ps);
+                                return;
+                        }
+
+                        IPermission iper = perm as IPermission;
+                        if (iper != null) {
+                                decl_sec.AddPermission (sec_action, iper);
+                                return;
+                        }
+
+                        MIPermissionSet ps20 = perm as MIPermissionSet;
+                        if (ps20 != null) {
+                                decl_sec.AddPermissionSet (sec_action, ps20);
+                                return;
+                        }
+                }
+
+                public void Write ()
+                {
+                        FileStream out_stream = null;
+
+                        try {
+                                if (ThisModule == null)
+                                        this_module = new Module (Path.GetFileName (output_file));
+
+                                out_stream = new FileStream (output_file, FileMode.Create, FileAccess.Write);
+                                pefile = new PEFile (ThisAssembly != null ? ThisAssembly.Name : null, ThisModule.Name, is_dll, ThisAssembly != null, null, out_stream);
+                                PEAPI.Assembly asmb = pefile.GetThisAssembly ();
+
+                                ThisModule.PeapiModule = pefile.GetThisModule ();
+
+                                if (file_ref != null)
+                                        file_ref.Resolve (this);
+
+                                extern_table.Resolve (this);
+                                type_manager.DefineAll ();
+
+				if (manifestResources != null) {
+					foreach (ManifestResource mr in manifestResources)
+						pefile.AddManifestResource (mr);
+				}
+
+                                foreach (FieldDef fielddef in global_field_table.Values) {
+                                        fielddef.Define (this);
+                                }
+
+                                foreach (MethodDef methoddef in global_method_table.Values) {
+                                        methoddef.Define (this);
+                                }
+
+                                foreach (TypeDef typedef in defcont_list) {
+                                        typedef.DefineContents (this);
+                                }
+
+                                if (ThisAssembly != null)
+                                        ThisAssembly.Resolve (this, pefile.GetThisAssembly ());
+                                ThisModule.Resolve (this, pefile.GetThisModule ());
+
+                                if (sub_system != -1)
+                                        pefile.SetSubSystem ((PEAPI.SubSystem) sub_system);
+                                if (cor_flags != -1)
+                                        pefile.SetCorFlags (cor_flags);
+                                if (stack_reserve != -1)
+                                        pefile.SetStackReserve (stack_reserve);
+
+                                pefile.WritePEFile ();
+
+				if (symwriter != null) {
+					Guid guid = pefile.GetThisModule ().Guid;
+					symwriter.Write (guid);
+				}
+                        } finally {
+                                if (out_stream != null)
+                                        out_stream.Close ();
+                        }
+                }
+
+                public PEAPI.Method ResolveMethod (string signature)
+                {
+                        MethodDef methoddef = (MethodDef) global_method_table[signature];
+                        if (methoddef == null)
+                                Report.Error ("Unable to resolve global method : " + signature);
+
+                        return methoddef.Resolve (this);
+                }
+
+                public PEAPI.Method ResolveVarargMethod (string sig_only_required_params, string sig_with_optional_params,
+                                CodeGen code_gen, PEAPI.Type[] opt)
+                {
+                        MethodDef methoddef = (MethodDef) global_method_table [sig_only_required_params];
+                        if (methoddef == null)
+                                Report.Error ("Unable to resolve global method : " + sig_only_required_params);
+
+                        methoddef.Resolve (code_gen);
+                        return methoddef.GetVarargSig (opt, sig_with_optional_params);
+                }
+
+                public PEAPI.Field ResolveField (string name, string type_name)
+                {
+                        FieldDef fielddef = (FieldDef) global_field_table[new DictionaryEntry (name, type_name)]; 
+                        if (fielddef == null)
+                                Report.Error (String.Format ("Unable to resolve global field : {0} {1}", type_name, name));
+
+                        return fielddef.Resolve (this);
+                }
+
+                private string CacheName (string name)
+                {
+                        if (current_namespace == null ||
+                                        current_namespace == String.Empty)
+                                return name;
+
+                        return current_namespace + "." + name;
+                }
+        }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/parser/ILParser.jay
+++ mono-4.6.2.7+dfsg/mcs/ilasm/parser/ILParser.jay
@@ -1,3438 +1,3438 @@
-%{
-//
-// Mono::ILASM::ILParser
-// 
-// (C) Sergey Chaban (serge@wildwestsoftware.com)
-// (C) 2003 Jackson Harper, All rights reserved
-//
-
-using PEAPI;
-using System;
-using System.IO;
-using System.Collections;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Security;
-using System.Security.Permissions;
-
-using MIPermission = Mono.ILASM.Permission;
-using MIPermissionSet = Mono.ILASM.PermissionSet;
-
-namespace Mono.ILASM {
-
-	public class ILParser {
-
-		private CodeGen codegen;
-
-		private bool is_value_class;
-		private bool is_enum_class;
-                private bool pinvoke_info;
-                private string pinvoke_mod;
-                private string pinvoke_meth;
-                private PEAPI.PInvokeAttr pinvoke_attr;
-                private ILTokenizer tokenizer;
-		static int yacc_verbose_flag;
-		KeyValuePair<string, TypeAttr> current_extern;
-
-                class NameValuePair {
-                        public string Name;
-                        public object Value;
-
-                        public NameValuePair (string name, object value)
-                        {
-                                this.Name = name;
-                                this.Value = value;
-                        }
-                }
-
-                class PermPair {
-                        public PEAPI.SecurityAction sec_action;
-                        public object perm;
-
-                        public PermPair (PEAPI.SecurityAction sec_action, object perm)
-                        {
-                                this.sec_action = sec_action;
-                                this.perm = perm;
-                        }
-                }
-
-                public bool CheckSecurityActionValidity (System.Security.Permissions.SecurityAction action, bool for_assembly)
-                {
-                        if ((action == System.Security.Permissions.SecurityAction.RequestMinimum || 
-                                action == System.Security.Permissions.SecurityAction.RequestOptional || 
-                                action == System.Security.Permissions.SecurityAction.RequestRefuse) && !for_assembly) {
-                                Report.Warning (String.Format ("System.Security.Permissions.SecurityAction '{0}' is not valid for this declaration", action));
-                                return false;
-                        }
-
-                        return true;
-                }
-
-		public void AddSecDecl (object perm, bool for_assembly)
-		{
-			PermPair pp = perm as PermPair;
-
-			if (pp == null) {
-				MIPermissionSet ps_20 = (MIPermissionSet) perm;
-				codegen.AddPermission (ps_20.SecurityAction, ps_20);
-				return;
-			}
-
-			if (!CheckSecurityActionValidity ((System.Security.Permissions.SecurityAction) pp.sec_action, for_assembly))
-				Report.Error (String.Format ("Invalid security action : {0}", pp.sec_action));
-
-			codegen.AddPermission (pp.sec_action, pp.perm);
-		}
-
-                public object ClassRefToObject (object class_ref, object val)
-                {
-                        ExternTypeRef etr = class_ref as ExternTypeRef;
-                        if (etr == null)
-                                /* FIXME: report error? can be PrimitiveTypeRef or TypeRef */
-                                return null;
-                                
-                        System.Type t = etr.GetReflectedType ();
-                        return (t.IsEnum ? Enum.Parse (t, String.Format ("{0}", val)) : val);
-                }
-
-		/* Converts a type_spec to a corresponding PermPair */
-                PermPair TypeSpecToPermPair (object action, object type_spec, ArrayList pairs)
-                {
-                        ExternTypeRef etr = type_spec as ExternTypeRef;
-                        if (etr == null)
-                                /* FIXME: could be PrimitiveTypeRef or TypeRef 
-                                          Report what error? */
-                                return null;
-
-                        System.Type t = etr.GetReflectedType ();
-                        object obj = Activator.CreateInstance (t, 
-                                                new object [] {(System.Security.Permissions.SecurityAction) (short) action});
-
-                        if (pairs != null)
-                                foreach (NameValuePair pair in pairs) {
-                                        PropertyInfo pi = t.GetProperty (pair.Name);
-                                        pi.SetValue (obj, pair.Value, null);
-                                }
-
-                        IPermission iper = (IPermission) t.GetMethod ("CreatePermission").Invoke (obj, null);
-                        return new PermPair ((PEAPI.SecurityAction) action, iper);
-                }
-
-		public ILParser (CodeGen codegen, ILTokenizer tokenizer)
-                {
-			this.codegen = codegen;
-                        this.tokenizer = tokenizer;
-		}
-
-		public CodeGen CodeGen {
-			get { return codegen; }
-		}
-
-                private BaseTypeRef GetTypeRef (BaseTypeRef b)
-                {
-                        //FIXME: Caching required.. 
-                        return b.Clone ();
-                }
-
-%}
-
-%token EOF
-
-/* ID - alpha-numeric identifier */
-%token ID
-
-/* QSTRING - quoted string */
-%token QSTRING
-
-/* SQSTRING - single quoted string */
-%token SQSTRING
-
-/* COMP_NAME - A name with dots */
-%token COMP_NAME
-
-/* INT32 - 32 bit integer */
-%token INT32
-
-/* INT64 - 64 bit integer */
-%token INT64
-
-/* FLOAT64 - floating point number */
-%token FLOAT64
-
-/* HEXBYTE - two digit hex number */
-%token HEXBYTE
-
-
-/* Punctuation */
-%token DOT           "."
-%token OPEN_BRACE    "{"
-%token CLOSE_BRACE   "}"
-%token OPEN_BRACKET  "["
-%token CLOSE_BRACKET "]"
-%token OPEN_PARENS   "("
-%token CLOSE_PARENS  ")"
-%token COMMA         ","
-%token COLON         ":"
-%token DOUBLE_COLON  "::"
-%token SEMICOLON     ";"
-%token ASSIGN        "="
-%token STAR          "*"
-%token AMPERSAND     "&"
-%token PLUS          "+"
-%token SLASH         "/"
-%token BANG          "!"
-%token ELLIPSIS      "..."
-%token DASH          "-"
-%token OPEN_ANGLE_BRACKET   "<"
-%token CLOSE_ANGLE_BRACKET  ">"
-
-
-
-%token UNKNOWN
-
-
-/* INSTR_* instruction types */
-%token INSTR_NONE
-%token INSTR_VAR
-%token INSTR_I
-%token INSTR_I8
-%token INSTR_R
-%token INSTR_BRTARGET
-%token INSTR_METHOD
-%token INSTR_NEWOBJ
-%token INSTR_FIELD
-%token INSTR_TYPE
-%token INSTR_STRING
-%token INSTR_SIG
-%token INSTR_RVA
-%token INSTR_TOK
-%token INSTR_SWITCH
-%token INSTR_PHI
-%token INSTR_LOCAL
-%token INSTR_PARAM
-
-
-
-
-
-/* Mechanically generated  - DO NOT EDIT! */
-
-
-/* Directives */
-%token D_ADDON
-%token D_ALGORITHM
-%token D_ASSEMBLY
-%token D_BACKING
-%token D_BLOB
-%token D_CAPABILITY
-%token D_CCTOR
-%token D_CLASS
-%token D_COMTYPE
-%token D_CONFIG
-%token D_IMAGEBASE
-%token D_CORFLAGS
-%token D_CTOR
-%token D_CUSTOM
-%token D_DATA
-%token D_EMITBYTE
-%token D_ENTRYPOINT
-%token D_EVENT
-%token D_EXELOC
-%token D_EXPORT
-%token D_FIELD
-%token D_FILE
-%token D_FIRE
-%token D_GET
-%token D_HASH
-%token D_IMPLICITCOM
-%token D_LANGUAGE
-%token D_LINE
-%token D_XLINE
-%token D_LOCALE
-%token D_LOCALS
-%token D_MANIFESTRES
-%token D_MAXSTACK
-%token D_METHOD
-%token D_MIME
-%token D_MODULE
-%token D_MRESOURCE
-%token D_NAMESPACE
-%token D_ORIGINATOR
-%token D_OS
-%token D_OTHER
-%token D_OVERRIDE
-%token D_PACK
-%token D_PARAM
-%token D_PERMISSION
-%token D_PERMISSIONSET
-%token D_PROCESSOR
-%token D_PROPERTY
-%token D_PUBLICKEY
-%token D_PUBLICKEYTOKEN
-%token D_REMOVEON
-%token D_SET
-%token D_SIZE
-%token D_STACKRESERVE
-%token D_SUBSYSTEM
-%token D_TITLE
-%token D_TRY
-%token D_VER
-%token D_VTABLE
-%token D_VTENTRY
-%token D_VTFIXUP
-%token D_ZEROINIT
-
-
-/* Keywords */
-%token K_AT
-%token K_AS
-%token K_IMPLICITCOM
-%token K_IMPLICITRES
-%token K_NOAPPDOMAIN
-%token K_NOPROCESS
-%token K_NOMACHINE
-%token K_EXTERN
-%token K_INSTANCE
-%token K_EXPLICIT
-%token K_DEFAULT
-%token K_VARARG
-%token K_UNMANAGED
-%token K_CDECL
-%token K_STDCALL
-%token K_THISCALL
-%token K_FASTCALL
-%token K_MARSHAL
-%token K_IN
-%token K_OUT
-%token K_OPT
-// %token K_LCID
-//%token K_RETVAL
-%token K_STATIC
-%token K_PUBLIC
-%token K_PRIVATE
-%token K_FAMILY
-%token K_INITONLY
-%token K_RTSPECIALNAME
-%token K_STRICT
-%token K_SPECIALNAME
-%token K_ASSEMBLY
-%token K_FAMANDASSEM
-%token K_FAMORASSEM
-%token K_PRIVATESCOPE
-%token K_LITERAL
-%token K_NOTSERIALIZED
-%token K_VALUE
-%token K_NOT_IN_GC_HEAP
-%token K_INTERFACE
-%token K_SEALED
-%token K_ABSTRACT
-%token K_AUTO
-%token K_SEQUENTIAL
-%token K_ANSI
-%token K_UNICODE
-%token K_AUTOCHAR
-%token K_BESTFIT
-%token K_IMPORT
-%token K_SERIALIZABLE
-%token K_NESTED
-%token K_LATEINIT
-%token K_EXTENDS
-%token K_IMPLEMENTS
-%token K_FINAL
-%token K_VIRTUAL
-%token K_HIDEBYSIG
-%token K_NEWSLOT
-%token K_UNMANAGEDEXP
-%token K_PINVOKEIMPL
-%token K_NOMANGLE
-%token K_OLE
-%token K_LASTERR
-%token K_WINAPI
-%token K_NATIVE
-%token K_IL
-%token K_CIL
-%token K_OPTIL
-%token K_MANAGED
-%token K_FORWARDREF
-%token K_RUNTIME
-%token K_INTERNALCALL
-%token K_SYNCHRONIZED
-%token K_NOINLINING
-%token K_CUSTOM
-%token K_FIXED
-%token K_SYSSTRING
-%token K_ARRAY
-%token K_VARIANT
-%token K_CURRENCY
-%token K_SYSCHAR
-%token K_VOID
-%token K_BOOL
-%token K_INT8
-%token K_INT16
-%token K_INT32
-%token K_INT64
-%token K_FLOAT32
-%token K_FLOAT64
-%token K_ERROR
-%token K_UNSIGNED
-%token K_UINT
-%token K_UINT8
-%token K_UINT16
-%token K_UINT32
-%token K_UINT64
-%token K_DECIMAL
-%token K_DATE
-%token K_BSTR
-%token K_LPSTR
-%token K_LPWSTR
-%token K_LPTSTR
-%token K_OBJECTREF
-%token K_IUNKNOWN
-%token K_IDISPATCH
-%token K_STRUCT
-%token K_SAFEARRAY
-%token K_INT
-%token K_BYVALSTR
-%token K_TBSTR
-%token K_LPVOID
-%token K_ANY
-%token K_FLOAT
-%token K_LPSTRUCT
-%token K_NULL
-%token K_PTR
-%token K_VECTOR
-%token K_HRESULT
-%token K_CARRAY
-%token K_USERDEFINED
-%token K_RECORD
-%token K_FILETIME
-%token K_BLOB
-%token K_STREAM
-%token K_STORAGE
-%token K_STREAMED_OBJECT
-%token K_STORED_OBJECT
-%token K_BLOB_OBJECT
-%token K_CF
-%token K_CLSID
-%token K_METHOD
-%token K_CLASS
-%token K_PINNED
-%token K_MODREQ
-%token K_MODOPT
-%token K_TYPEDREF
-%token K_TYPE
-%token K_WCHAR
-%token K_CHAR
-%token K_FROMUNMANAGED
-%token K_CALLMOSTDERIVED
-%token K_BYTEARRAY
-%token K_WITH
-%token K_INIT
-%token K_TO
-%token K_CATCH
-%token K_FILTER
-%token K_FINALLY
-%token K_FAULT
-%token K_HANDLER
-%token K_TLS
-%token K_FIELD
-%token K_PROPERTY
-%token K_REQUEST
-%token K_DEMAND
-%token K_ASSERT
-%token K_DENY
-%token K_PERMITONLY
-%token K_LINKCHECK
-%token K_INHERITCHECK
-%token K_REQMIN
-%token K_REQOPT
-%token K_REQREFUSE
-%token K_PREJITGRANT
-%token K_PREJITDENY
-%token K_NONCASDEMAND
-%token K_NONCASLINKDEMAND
-%token K_NONCASINHERITANCE
-%token K_READONLY
-%token K_NOMETADATA
-%token K_ALGORITHM
-%token K_FULLORIGIN
-// %token K_NAN
-// %token K_INF
-// %token K_PUBLICKEY
-%token K_ENABLEJITTRACKING
-%token K_DISABLEJITOPTIMIZER
-%token K_RETARGETABLE
-%token K_PRESERVESIG
-%token K_BEFOREFIELDINIT
-%token K_ALIGNMENT
-%token K_NULLREF
-%token K_VALUETYPE
-%token K_COMPILERCONTROLLED
-%token K_REQSECOBJ
-%token K_ENUM
-%token K_OBJECT
-%token K_STRING
-%token K_TRUE
-%token K_FALSE
-%token K_IS
-%token K_ON
-%token K_OFF
-%token K_FORWARDER
-%token K_CHARMAPERROR
-%token K_LEGACY
-%token K_LIBRARY
-%token K_AUTO
-
-/* end generated */
-
-
-
-
-
-%start il_file
-
-%%
-
-il_file			: decls
-			;
-
-decls			: /* EMPTY */
-			| decls decl
-			;
-
-decl			: class_all
-			| namespace_all
-			| method_all
-			| field_decl
-			| data_decl
-			| vtfixup_decl
-			| file_decl
-			| assembly_all
-			| assemblyref_all
-			| exptype_all
-			| manifestres_all
-			| module_head
-			| sec_decl
-			| customattr_decl
-			  {
-				if (codegen.CurrentCustomAttrTarget != null)
-					codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
-			  }
-			| D_SUBSYSTEM int32
-                          {
-                                codegen.SetSubSystem ((int) $2);
-                          }
-			| D_CORFLAGS int32
-                          {
-                                codegen.SetCorFlags ((int) $2);
-                          }
-			| D_FILE K_ALIGNMENT int32
-			| D_IMAGEBASE int64
-                          {
-                                codegen.SetImageBase ((long) $2);
-                          }
-			| D_STACKRESERVE int64
-                          {
-				codegen.SetStackReserve ((long)	$2);
-                          }
-			| extsource_spec
-			| language_decl
-			;
-
-extsource_spec		: D_LINE int32 SQSTRING
-			| D_LINE int32
-			| D_LINE int32 COLON int32 SQSTRING
-			| D_LINE int32 COLON int32
-			;
-
-language_decl		: D_LANGUAGE SQSTRING
-			| D_LANGUAGE SQSTRING COMMA SQSTRING
-			| D_LANGUAGE SQSTRING COMMA SQSTRING COMMA SQSTRING
-			;
-
-                        
-vtfixup_decl		: D_VTFIXUP OPEN_BRACKET int32 CLOSE_BRACKET 
-			  vtfixup_attr K_AT id
-			;
-
-vtfixup_attr		: /* EMPTY */
-			| vtfixup_attr K_INT32
-			| vtfixup_attr K_INT64
-			| vtfixup_attr K_FROMUNMANAGED
-			| vtfixup_attr K_CALLMOSTDERIVED
-			;
-
-namespace_all		: namespace_head OPEN_BRACE decls CLOSE_BRACE
-                          {
-                                codegen.CurrentNameSpace = null;
-                          }
-			;
-
-namespace_head		: D_NAMESPACE comp_name
-                          {
-                                codegen.CurrentNameSpace = (string) $2;
-                          }
-			;
-
-class_all		: class_head OPEN_BRACE class_decls CLOSE_BRACE
-                          {
-                                codegen.EndTypeDef ();
-                          }
-			;
-
-class_head 		: D_CLASS class_attr comp_name formal_typars_clause extends_clause
-                          impl_clause
-                          {
-                                codegen.BeginTypeDef ((TypeAttr) $2, (string) $3, 
-						$5 as BaseClassRef, $6 as ArrayList, null, (GenericParameters) $4);
-				
-				if (is_value_class)
-					codegen.CurrentTypeDef.MakeValueClass ();
-				if (is_enum_class)
-					codegen.CurrentTypeDef.MakeEnumClass ();
-                          }
-			;
-
-class_attr		: /* EMPTY */                           
-			  { 
-				// Reset some flags
-				is_value_class = false;
-				is_enum_class = false;
-				$$ = new TypeAttr ();
-			  }
-			| class_attr K_PUBLIC                   { $$ = (TypeAttr)$1 | TypeAttr.Public; }        
-			| class_attr K_PRIVATE                  { $$ = (TypeAttr)$1 | TypeAttr.Private; }
-			| class_attr K_NESTED K_PRIVATE         { $$ = (TypeAttr)$1 | TypeAttr.NestedPrivate; }
-			| class_attr K_NESTED K_PUBLIC          { $$ = (TypeAttr)$1 | TypeAttr.NestedPublic; }
-			| class_attr K_NESTED K_FAMILY          { $$ = (TypeAttr)$1 | TypeAttr.NestedFamily; }
-			| class_attr K_NESTED K_ASSEMBLY        { $$ = (TypeAttr)$1 | TypeAttr.NestedAssembly;}
-			| class_attr K_NESTED K_FAMANDASSEM     { $$ = (TypeAttr)$1 | TypeAttr.NestedFamAndAssem; }
-			| class_attr K_NESTED K_FAMORASSEM      { $$ = (TypeAttr)$1 | TypeAttr.NestedFamOrAssem; }
-			| class_attr K_VALUE                    { is_value_class = true; }
-			| class_attr K_ENUM                     { is_enum_class = true; }
-			| class_attr K_INTERFACE                { $$ = (TypeAttr)$1 | TypeAttr.Interface; }
-			| class_attr K_SEALED                   { $$ = (TypeAttr)$1 | TypeAttr.Sealed; }
-			| class_attr K_ABSTRACT                 { $$ = (TypeAttr)$1 | TypeAttr.Abstract; }
-			| class_attr K_AUTO                     {  }
-			| class_attr K_SEQUENTIAL               { $$ = (TypeAttr)$1 | TypeAttr.SequentialLayout; }
-			| class_attr K_EXPLICIT                 { $$ = (TypeAttr)$1 | TypeAttr.ExplicitLayout; }
-			| class_attr K_ANSI                     {  }
-			| class_attr K_UNICODE                  { $$ = (TypeAttr)$1 | TypeAttr.UnicodeClass; }
-			| class_attr K_AUTOCHAR                 { $$ = (TypeAttr)$1 | TypeAttr.AutoClass; }
-			| class_attr K_IMPORT                   { $$ = (TypeAttr)$1 | TypeAttr.Import; }
-			| class_attr K_SERIALIZABLE             { $$ = (TypeAttr)$1 | TypeAttr.Serializable; }
-			| class_attr K_BEFOREFIELDINIT          { $$ = (TypeAttr)$1 | TypeAttr.BeforeFieldInit; }
-			| class_attr K_SPECIALNAME              { $$ = (TypeAttr)$1 | TypeAttr.SpecialName; }
-			| class_attr K_RTSPECIALNAME            { $$ = (TypeAttr)$1 | TypeAttr.RTSpecialName; }
-			;
-
-extends_clause		: /* EMPTY */
-			| K_EXTENDS generic_class_ref
-                          {
-                                $$ = $2;
-                          }
-			;
-
-impl_clause		: /* EMPTY */
-			| impl_class_refs
-			;
-
-impl_class_refs		: K_IMPLEMENTS generic_class_ref
-                          {
-                                ArrayList al = new ArrayList ();
-                                al.Add ($2);
-                                $$ = al;
-                          }
-			| impl_class_refs COMMA generic_class_ref
-                          {
-                                ArrayList al = (ArrayList) $1;
-
-                                al.Insert (0, $3);
-                                $$ = al;
-                          }
- 			;
-
-formal_typars_clause           : /* EMPTY */
-                        | OPEN_ANGLE_BRACKET formal_typars CLOSE_ANGLE_BRACKET
-                          {
-                                $$ = $2;
-                          }
-                        ;
-
-typars_clause           : /* EMPTY */
-                        | OPEN_ANGLE_BRACKET typars CLOSE_ANGLE_BRACKET
-                          {
-                                $$ = $2;
-                          }
-                        ;
-
-typars                  : type
-                          {
-                                GenericArguments ga = new GenericArguments ();
-                                ga.Add ((BaseTypeRef) $1);
-                                $$ = ga;
-                          }
-                        | typars COMMA type
-                          {
-                                ((GenericArguments) $1).Add ((BaseTypeRef) $3);
-                                $$ = $1;
-                          }
-                        ;
-
-constraints_clause	: /* EMTPY */
-			| OPEN_PARENS constraints CLOSE_PARENS
-                          {
-                                $$ = $2;
-                          }
-                       ;
-
-
-constraints		: type
-			  {
-                                ArrayList al = new ArrayList ();
-                                al.Add ($1);
-                                $$ = al;
-                           }
-			| constraints COMMA type
-                          {
-                                ArrayList al = (ArrayList) $1;
-                                al.Add ($3);
-                                $$ = al;
-                          }
-			;
-
-generic_class_ref	: class_ref
-			  {
-                                $$ = $1;
-			  }
-			| K_OBJECT
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Object, "System.Object");
-                          }
-			| K_CLASS class_ref typars_clause
-			  {
-                                if ($3 != null)
-                                        $$ = ((BaseClassRef) $2).GetGenericTypeInst ((GenericArguments) $3);
-                                else
-                                        $$ = $2;
-			  }
-			| BANG int32
-                          {
-                                GenParam gpar = new GenParam ((int) $2, "", GenParamType.Var);
-                                $$ = new GenericParamRef (gpar, $2.ToString ());
-                          }
-                        | BANG BANG int32
-                          {
-                                GenParam gpar = new GenParam ((int) $3, "", GenParamType.MVar);
-                                $$ = new GenericParamRef (gpar, $3.ToString ());
-                          }
-			| BANG id
-                          {
-				int num = -1;
-				string name = (string) $2;
-				if (codegen.CurrentTypeDef != null)
-					num = codegen.CurrentTypeDef.GetGenericParamNum (name);
-				GenParam gpar = new GenParam (num, name, GenParamType.Var);
-                                $$ = new GenericParamRef (gpar, name);
-                          }
-                        | BANG BANG id
-                          {
-				int num = -1;
-				string name = (string) $3;
-				if (codegen.CurrentMethodDef != null)
-					num = codegen.CurrentMethodDef.GetGenericParamNum (name);
-				GenParam gpar = new GenParam (num, name, GenParamType.MVar);
-                                $$ = new GenericParamRef (gpar, name);
-                          }
-			; 
-
-formal_typars           : formal_typar_attr constraints_clause formal_typar
-                          {
-                                GenericParameter gp = new GenericParameter ((string) $3, (PEAPI.GenericParamAttributes) $1, (ArrayList) $2);
-
-                                GenericParameters colln = new GenericParameters ();
-                                colln.Add (gp);
-                                $$ = colln;
-                          }
-                        | formal_typars COMMA formal_typar_attr constraints_clause formal_typar
-                          {
-                                GenericParameters colln = (GenericParameters) $1;
-                                colln.Add (new GenericParameter ((string) $5, (PEAPI.GenericParamAttributes) $3, (ArrayList) $4));
-                                $$ = colln;
-                          }
-                         ;
- 
-formal_typar_attr	: /* EMPTY */
-                          {
-                                $$ = new PEAPI.GenericParamAttributes ();
-                          }
-			| formal_typar_attr PLUS
-                          {
-                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.Covariant; 
-                          }
-			| formal_typar_attr DASH
-                          {
-                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.Contravariant; 
-                          }
-			| formal_typar_attr D_CTOR
-                          {
-                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.DefaultConstructorConstrait; 
-                          }
-			| formal_typar_attr K_VALUETYPE
-                          {
-                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.NotNullableValueTypeConstraint; 
-                          }
-			| formal_typar_attr K_CLASS
-                          {
-                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.ReferenceTypeConstraint; 
-                          }
-                        ;
-
-formal_typar            : id
-                          {
-                                $$ = $1;
-                          }
-                        ;
-
-param_type_decl         : D_PARAM K_TYPE id
-			  {
-				  if (codegen.CurrentMethodDef != null)
-					  codegen.CurrentCustomAttrTarget = codegen.CurrentMethodDef.GetGenericParam ((string) $3);
-				  else
-					  codegen.CurrentCustomAttrTarget = codegen.CurrentTypeDef.GetGenericParam ((string) $3);
-				  if (codegen.CurrentCustomAttrTarget == null)
-					  Report.Error (String.Format ("Type parameter '{0}' undefined.", (string) $3));
-			  }
-			| D_PARAM K_TYPE OPEN_BRACKET int32 CLOSE_BRACKET
-			  {
-				  int index = ((int) $4);
-				  if (codegen.CurrentMethodDef != null)
-					  codegen.CurrentCustomAttrTarget = codegen.CurrentMethodDef.GetGenericParam (index - 1);
-				  else
-					  codegen.CurrentCustomAttrTarget = codegen.CurrentTypeDef.GetGenericParam (index - 1);
-				  if (codegen.CurrentCustomAttrTarget == null)
-					  Report.Error (String.Format ("Type parameter '{0}' index out of range.", index));
-			  }
-			;
-                        
-class_refs		: class_ref
-                          {
-                                ArrayList class_list = new ArrayList ();
-                                class_list.Add ($1);
-                                $$ = class_list; 
-                          }
-			| class_refs COMMA class_ref
-                          {
-                                ArrayList class_list = (ArrayList) $1;
-                                class_list.Add ($3);
-                          }
-			;
-
-slashed_name		: comp_name
-			| slashed_name SLASH comp_name
-                          {
-                                $$ = String.Format ("{0}/{1}", $1, $3);
-                          }
-			;
-
-class_ref		: OPEN_BRACKET slashed_name CLOSE_BRACKET slashed_name
-                          {
-                                if (codegen.IsThisAssembly ((string) $2)) {
-                                        $$ = codegen.GetTypeRef ((string) $4);
-                                } else {
-                                        $$ = codegen.ExternTable.GetTypeRef ((string) $2, (string) $4, false);
-                                }
-                          }
-			| OPEN_BRACKET D_MODULE slashed_name CLOSE_BRACKET slashed_name
-                          {
-                                if (codegen.IsThisModule ((string) $3)) {
-                                        $$ = codegen.GetTypeRef ((string) $5);
-                                } else {
-                                        $$ = codegen.ExternTable.GetModuleTypeRef ((string) $3, (string) $5, false);
-                                }
-                          }
-			| slashed_name
-                          {
-                                PrimitiveTypeRef prim = PrimitiveTypeRef.GetPrimitiveType ((string) $1);
-
-                                if (prim != null && !codegen.IsThisAssembly ("mscorlib"))
-                                        $$ = prim;
-                                else
-                                        $$ = codegen.GetTypeRef ((string) $1);
-                          }
-                      
-			;
-
-class_decls		: /* EMPTY */
-			| class_decls class_decl
-			;
-
-class_decl		: method_all
-			| class_all
-			| event_all
-			| prop_all
-			| field_decl
-			| data_decl
-			| sec_decl
-			  {
-				AddSecDecl ($1, false);
-			  }
-			| extsource_spec
-			| customattr_decl
-                          {
-                                if (codegen.CurrentCustomAttrTarget != null)
-                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
-                          }
-			| param_type_decl
-			| D_SIZE int32
-                          {
-                                codegen.CurrentTypeDef.SetSize ((int) $2);
-                          }
-			| D_PACK int32
-                          {
-                                codegen.CurrentTypeDef.SetPack ((int) $2);
-                          }
-			| D_OVERRIDE type_spec DOUBLE_COLON method_name K_WITH call_conv type
-                          type_spec DOUBLE_COLON method_name type_list
-                          {
-                                //
-                                // My copy of the spec didn't have a type_list but
-                                // it seems pretty crucial
-                                //
-                                BaseTypeRef owner = (BaseTypeRef) $2;
-                                ArrayList arg_list = (ArrayList) $11;
-                                BaseTypeRef[] param_list;
-                                BaseMethodRef decl;
-
-                                if (arg_list != null)
-                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
-                                else
-                                        param_list = new BaseTypeRef[0];
-
-                                decl = owner.GetMethodRef ((BaseTypeRef) $7,
-                                        (CallConv) $6, (string) $4, param_list, 0);
-
-				// NOTICE: `owner' here might be wrong
-                                string sig = MethodDef.CreateSignature (owner, (CallConv) $6, (string) $10,
-                                                                        param_list, 0, false);
-                                codegen.CurrentTypeDef.AddOverride (sig, decl);                                        
-                          }
-			  OPEN_PARENS sig_args CLOSE_PARENS
-			| language_decl
-			;
-
-type			: generic_class_ref
-                          {
-				$$ = GetTypeRef ((BaseTypeRef) $1);
-                          }
-			| K_VALUE K_CLASS class_ref
-                          {
-                                BaseClassRef class_ref = (BaseClassRef) $3;
-                                class_ref.MakeValueClass ();
-                                $$ = GetTypeRef (class_ref);
-                          }
-			| K_VALUETYPE OPEN_BRACKET slashed_name CLOSE_BRACKET slashed_name typars_clause
-                          {
-                                ExternTypeRef ext_ref = codegen.ExternTable.GetTypeRef ((string) $3, (string) $5, true);
-                                if ($6 != null)
-                                        $$ = ext_ref.GetGenericTypeInst ((GenericArguments) $6);
-                                else
-                                        $$ = GetTypeRef (ext_ref);
-                          }
-                        | K_VALUETYPE slashed_name typars_clause
-                          {
-                                TypeRef t_ref = codegen.GetTypeRef ((string) $2);
-                                t_ref.MakeValueClass ();
-                                if ($3 != null)
-                                        $$ = t_ref.GetGenericTypeInst ((GenericArguments) $3);
-                                else
-                                        $$ = GetTypeRef (t_ref);
-                          }
-			| type OPEN_BRACKET CLOSE_BRACKET
-                          {
-                                BaseTypeRef base_type = (BaseTypeRef) $1;
-                                base_type.MakeArray ();
-                                $$ = base_type;
-                          }
-			| type OPEN_BRACKET bounds CLOSE_BRACKET
-                          {
-                                BaseTypeRef base_type = (BaseTypeRef) $1;
-                                ArrayList bound_list = (ArrayList) $3;
-                                base_type.MakeBoundArray (bound_list);
-                                $$ = base_type;
-                          }
-			| type AMPERSAND
-                          {
-                                BaseTypeRef base_type = (BaseTypeRef) $1;
-                                base_type.MakeManagedPointer ();
-                                $$ = base_type;
-                          }
-			| type STAR
-                          {
-                                BaseTypeRef base_type = (BaseTypeRef) $1;
-                                base_type.MakeUnmanagedPointer ();
-                                $$ = base_type;
-                          }
-			| type K_PINNED
-                          {
-                                BaseTypeRef base_type = (BaseTypeRef) $1;
-                                base_type.MakePinned ();
-                                $$ = base_type;
-                          }
-			| type K_MODREQ OPEN_PARENS custom_modifier_type CLOSE_PARENS
-                          {
-                                BaseTypeRef base_type = (BaseTypeRef) $1;
-                                BaseTypeRef class_ref = (BaseTypeRef) $4;
-                                base_type.MakeCustomModified (codegen,
-                                        CustomModifier.modreq, class_ref);
-                                $$ = base_type;
-                          }
-			| type K_MODOPT OPEN_PARENS custom_modifier_type CLOSE_PARENS
-                          {
-                                BaseTypeRef base_type = (BaseTypeRef) $1;
-                                BaseTypeRef class_ref = (BaseTypeRef) $4;
-                                base_type.MakeCustomModified (codegen,
-                                        CustomModifier.modopt, class_ref);
-                                $$ = base_type;
-                          }
-			| K_METHOD call_conv type STAR OPEN_PARENS sig_args CLOSE_PARENS
-                          {
-                                $$ = new MethodPointerTypeRef ((CallConv) $2, (BaseTypeRef) $3, (ArrayList) $6);
-                          }
-			| primitive_type
-			;
-
-primitive_type		: K_INT8
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Int8, "System.SByte");
-                          }
-			| K_INT16
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Int16, "System.Int16");
-                          }
-			| K_INT32
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Int32, "System.Int32");
-                          }
-			| K_INT64
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Int64, "System.Int64");
-                          }
-			| K_FLOAT32
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Float32, "System.Single");
-                          }
-			| K_FLOAT64
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Float64, "System.Double");
-                          }
-			| K_UNSIGNED K_INT8
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt8, "System.Byte");
-                          }
-			| K_UINT8
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt8, "System.Byte");
-                          }
-			| K_UNSIGNED K_INT16
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt16, "System.UInt16");     
-                          }
-			| K_UINT16
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt16, "System.UInt16");     
-                          }
-			| K_UNSIGNED K_INT32
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt32, "System.UInt32");
-                          }
-			| K_UINT32
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt32, "System.UInt32");
-                          }
-			| K_UNSIGNED K_INT64
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt64, "System.UInt64");
-                          }
-			| K_UINT64
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt64, "System.UInt64");
-                          }
-			| K_NATIVE K_INT
-                          {
-                                // TODO: Is this the proper full name
-                                $$ = new PrimitiveTypeRef (PrimitiveType.NativeInt, "System.IntPtr");
-                          }
-			| K_NATIVE K_UNSIGNED K_INT
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.NativeUInt, "System.UIntPtr");
-                          }
-			| K_NATIVE K_UINT
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.NativeUInt, "System.UIntPtr");
-                          }
-			| K_TYPEDREF
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.TypedRef,
-                                        "System.TypedReference");
-                          }
-			| K_CHAR
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Char, "System.Char");
-                          }
-			| K_WCHAR
-			  {
-				$$ = new PrimitiveTypeRef (PrimitiveType.Char, "System.Char");
-			  }
-			| K_VOID
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Void, "System.Void");
-                          }
-			| K_BOOL
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.Boolean, "System.Boolean");
-                          }
-			| K_STRING
-                          {
-                                $$ = new PrimitiveTypeRef (PrimitiveType.String, "System.String");
-                          }
-			;
-
-bounds			: bound
-                          {
-                                ArrayList bound_list = new ArrayList ();
-                                bound_list.Add ($1);
-                                $$ = bound_list;
-                          }
-			| bounds COMMA bound
-                          {
-                                ArrayList bound_list = (ArrayList) $1;
-                                bound_list.Add ($3);
-                          }
-			;
-
-bound			: /* EMPTY */
-                          {
-                                // This is shortref for no lowerbound or size
-                                $$ = new DictionaryEntry (TypeRef.Ellipsis, TypeRef.Ellipsis);
-                          }
-			| ELLIPSIS
-                          {
-                                // No lower bound or size
-                                $$ = new DictionaryEntry (TypeRef.Ellipsis, TypeRef.Ellipsis);
-                          }
-			| int32
-                          {
-                                /* Only size specified */ 
-                                int size = (int) $1;
-                                if (size < 0)
-                                        /* size cannot be < 0, so emit as (0, ...)
-                                           ilasm.net emits it like this */
-                                        $$ = new DictionaryEntry (0, TypeRef.Ellipsis);
-                                else
-                                        $$ = new DictionaryEntry (TypeRef.Ellipsis, size);
-                          }
-			| int32 ELLIPSIS int32
-                          {
-                                // lower and upper bound
-                                int lower = (int) $1;
-                                int upper = (int) $3;
-                                if (lower > upper) 
-                                        Report.Error ("Lower bound " + lower + " must be <= upper bound " + upper);
-
-                                $$ = new DictionaryEntry ($1, $3);
-                          }
-			| int32 ELLIPSIS
-                          {
-                                // Just lower bound
-                                $$ = new DictionaryEntry ($1, TypeRef.Ellipsis);
-                          }
-			;
-
-call_conv		: K_INSTANCE call_conv
-                          {
-                                $$ = (CallConv) $2 | CallConv.Instance;
-                          }
-			| K_EXPLICIT call_conv
-                          {
-                                $$ = (CallConv) $2 | CallConv.InstanceExplicit;
-                          }
-			| call_kind
-			;
-
-call_kind		: /* EMPTY */
-                          {
-                                $$ = new CallConv ();
-                          }
-			| K_DEFAULT
-                          {
-                                $$ = CallConv.Default;
-                          }
-			| K_VARARG
-                          {
-                                $$ = CallConv.Vararg;
-                          }
-			| K_UNMANAGED K_CDECL
-                          {
-                                $$ = CallConv.Cdecl;
-                          }
-			| K_UNMANAGED K_STDCALL
-                          {
-                                $$ = CallConv.Stdcall;
-                          }
-			| K_UNMANAGED K_THISCALL
-                          {
-                                $$ = CallConv.Thiscall;
-                          }
-			| K_UNMANAGED K_FASTCALL
-                          {
-                                $$ = CallConv.Fastcall;
-                          }
-			;
-
-native_type		: /* EMPTY */
-			| K_CUSTOM OPEN_PARENS comp_qstring COMMA comp_qstring CLOSE_PARENS
-			  {
-				$$ = new CustomMarshaller ((string) $3, (string) $5);
-			  }
-			| K_FIXED K_SYSSTRING OPEN_BRACKET int32 CLOSE_BRACKET
-                          {
-                                $$ = new FixedSysString ((uint) (int)$4);
-                          }
-			| K_FIXED K_ARRAY OPEN_BRACKET int32 CLOSE_BRACKET
-			  {
-                                $$ = new FixedArray ((int) $4);        
-                          }
-			| K_VARIANT
-			| K_CURRENCY
-                          {
-                                $$ = NativeType.Currency;
-                          }
-			| K_SYSCHAR
-			| K_VOID
-                          {
-                                $$ = NativeType.Void;
-                          }
-			| K_BOOL
-                          {
-                                $$ = NativeType.Boolean;
-                          }
-			| K_INT8
-                          {
-                                $$ = NativeType.Int8;
-                          }
-			| K_INT16
-                          {
-                                $$ = NativeType.Int16;
-                          }
-			| K_INT32
-                          {
-                                $$ = NativeType.Int32;
-                          }
-			| K_INT64
-                          {
-                                $$ = NativeType.Int64;
-                          }
-			| K_FLOAT32
-                          {
-                                $$ = NativeType.Float32;
-                          }
-			| K_FLOAT64
-                          {
-                                $$ = NativeType.Float64;
-                          }
-			| K_ERROR
-                          {
-                                $$ = NativeType.Error;
-                          }
-			| K_UNSIGNED K_INT8
-                          {
-                                $$ = NativeType.UInt8;
-                          }
-			| K_UINT8
-                          {
-                                $$ = NativeType.UInt8;
-                          }
-			| K_UNSIGNED K_INT16
-                          {
-                                $$ = NativeType.UInt16;
-                          }
-			| K_UINT16
-                          {
-                                $$ = NativeType.UInt16;
-                          }
-			| K_UNSIGNED K_INT32
-                          {
-                                $$ = NativeType.UInt32;
-                          }
-			| K_UINT32
-                          {
-                                $$ = NativeType.UInt32;
-                          }
-			| K_UNSIGNED K_INT64
-                          {
-                                $$ = NativeType.UInt64;
-                          }
-			| K_UINT64
-                          {
-                                $$ = NativeType.UInt64;
-                          }
-			| native_type STAR
-			| native_type OPEN_BRACKET CLOSE_BRACKET
-			  {
-                                $$ = new NativeArray ((NativeType) $1);
-			  }
-			| native_type OPEN_BRACKET int32 CLOSE_BRACKET
-                          {
-                		$$ = new NativeArray ((NativeType) $1, (int) $3, 0, 0);
-			  }
-			| native_type OPEN_BRACKET int32 PLUS int32 CLOSE_BRACKET
-                          {
-                                //FIXME: Allowed only for methods, !fields
-                                $$ = new NativeArray ((NativeType) $1, (int) $3, (int) $5);
-			  }
-			| native_type OPEN_BRACKET PLUS int32 CLOSE_BRACKET
-			  {
-                                //FIXME: Allowed only for methods, !fields
-                                $$ = new NativeArray ((NativeType) $1, -1, (int) $4);
-			  }
-			| K_DECIMAL
-			| K_DATE
-			| K_BSTR
-                          {
-                                $$ = NativeType.BStr;
-                          }
-			| K_LPSTR
-                          {
-                                $$ = NativeType.LPStr;
-                          }
-			| K_LPWSTR
-                          {
-                                $$ = NativeType.LPWStr;
-                          }
-			| K_LPTSTR
-                          {
-                                $$ = NativeType.LPTStr;
-                          }
-			| K_OBJECTREF
-			| K_IUNKNOWN
-                          {
-                                $$ = NativeType.IUnknown;
-                          }
-			| K_IDISPATCH
-                          {
-                                $$ = NativeType.IDispatch;
-                          }
-			| K_STRUCT
-                          {
-                                $$ = NativeType.Struct;
-                          }
-			| K_INTERFACE
-                          {
-                                $$ = NativeType.Interface;
-                          }
-			| K_SAFEARRAY variant_type
-                          {
-                                if ($2 == null)
-                                        $$ = new SafeArray ();
-                                else        
-                                        $$ = new SafeArray ((SafeArrayType) $2);
-                          }
-			| K_SAFEARRAY variant_type COMMA comp_qstring
-			| K_INT
-                          {
-                                $$ = NativeType.Int;
-                          }
-			| K_UNSIGNED K_INT
-                          {
-                                $$ = NativeType.UInt;
-                          }
-			| K_NESTED K_STRUCT
-			| K_BYVALSTR
-                          {
-                                $$ = NativeType.ByValStr;
-                          }
-			| K_ANSI K_BSTR
-                          {
-                                $$ = NativeType.AnsiBStr;
-                          }
-			| K_TBSTR
-                          {
-                                $$ = NativeType.TBstr;
-                          }
-			| K_VARIANT K_BOOL
-                          {
-                                $$ = NativeType.VariantBool;
-                          }
-			| K_METHOD
-                          {
-                                $$ = NativeType.FuncPtr;
-                          }	
-			| K_AS K_ANY
-                          {
-                                $$ = NativeType.AsAny;
-                          }
-			| K_LPSTRUCT
-                          {
-                                $$ = NativeType.LPStruct;
-                          }
-			;
-
-variant_type		: /* EMPTY */
-			| K_NULL
-			| K_VARIANT
-			  {
-                                $$ = SafeArrayType.variant;
-			  }
-			| K_CURRENCY
-			  {
-                                $$ = SafeArrayType.currency;
-			  }
-			| K_VOID
-			| K_BOOL
-			  {
-                                $$ = SafeArrayType.boolean;
-			  }
-			| K_INT8
-			  {
-                                $$ = SafeArrayType.int8;
-			  }
-			| K_INT16
-			  {
-                                $$ = SafeArrayType.int16;
-			  }
-			| K_INT32
-			  {
-                                $$ = SafeArrayType.int32;
-			  }
-			| K_INT64
-			| K_FLOAT32
-			  {
-                                $$ = SafeArrayType.float32;
-			  }
-			| K_FLOAT64
-			  {
-                                $$ = SafeArrayType.float64;
-			  }
-			| K_UNSIGNED K_INT8
-			  {
-                                $$ = SafeArrayType.uint8;
-			  }
-			| K_UNSIGNED K_INT16
-			  {
-                                $$ = SafeArrayType.uint16;
-			  }
-			| K_UNSIGNED K_INT32
-			  {
-                                $$ = SafeArrayType.uint32;
-			  }
-			| K_UNSIGNED K_INT64
-			| STAR
-			| variant_type OPEN_BRACKET CLOSE_BRACKET
-			| variant_type K_VECTOR
-			| variant_type AMPERSAND
-			| K_DECIMAL
-			  {
-                                $$ = SafeArrayType.Decimal;
-			  }
-			| K_DATE
-			  {
-                                $$ = SafeArrayType.date;
-			  }
-			| K_BSTR
-			  {
-                                $$ = SafeArrayType.bstr;
-			  }
-			| K_LPSTR
-			| K_LPWSTR
-			| K_IUNKNOWN
-			  {
-                                $$ = SafeArrayType.unknown;
-			  }
-			| K_IDISPATCH
-			  {
-                                $$ = SafeArrayType.unknown;
-			  }
-			| K_SAFEARRAY
-			| K_INT
-			  {
-                                $$ = SafeArrayType.Int;
-			  }
-			| K_UNSIGNED K_INT
-			  {
-                                $$ = SafeArrayType.UInt;
-			  }
-			| K_ERROR
-			  {
-                                $$ = SafeArrayType.error;
-			  }
-			| K_HRESULT
-			| K_CARRAY
-			| K_USERDEFINED
-			| K_RECORD
-			| K_FILETIME
-			| K_BLOB
-			| K_STREAM
-			| K_STORAGE
-			| K_STREAMED_OBJECT
-			| K_STORED_OBJECT
-			| K_BLOB_OBJECT
-			| K_CF
-			| K_CLSID
-			;
-
-custom_modifier_type
-			: primitive_type
-			| class_ref
-			;
-
-field_decl		: D_FIELD repeat_opt field_attr type id at_opt init_opt semicolon_opt
-                          {
-                                FieldDef field_def = new FieldDef((FieldAttr) $3, 
-					(string) $5, (BaseTypeRef) $4);
-                                codegen.AddFieldDef (field_def);
-                                codegen.CurrentCustomAttrTarget = field_def;
-                                
-                                if ($2 != null) {
-                                        field_def.SetOffset ((uint) (int)$2);
-                                }
-
-                                if ($6 != null) {
-                                        field_def.AddDataValue ((string) $6);
-                                }
-
-                                if ($7 != null) {
-                                        field_def.SetValue ((Constant) $7);
-                                }
-                          }
-			;
-
-repeat_opt		: /* EMPTY */
-			| OPEN_BRACKET int32 CLOSE_BRACKET
-                          {
-                                $$ = $2;
-                          }
-			;
-
-field_attr		: /* EMPTY */
-                          {
-                                $$ = new FieldAttr ();
-                          }
-			| field_attr K_PUBLIC
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Public;
-                          }
-			| field_attr K_PRIVATE
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Private;
-                          }
-			| field_attr K_FAMILY
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Family;
-                          }
-			| field_attr K_ASSEMBLY
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Assembly;
-                          }
-			| field_attr K_FAMANDASSEM
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.FamAndAssem;
-                          }
-			| field_attr K_FAMORASSEM
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.FamOrAssem;
-                          }
-			| field_attr K_PRIVATESCOPE
-                          {
-                                // This is just 0x0000
-                          }
-			| field_attr K_STATIC
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Static;
-                          }
-			| field_attr K_INITONLY
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Initonly;
-                          }
-			| field_attr K_RTSPECIALNAME
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.RTSpecialName;
-                          }
-			| field_attr K_SPECIALNAME
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.SpecialName;
-                          }
-			| field_attr K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS
-                          {
-                               codegen.AddFieldMarshalInfo ((NativeType) $4);
-                               $$ = (FieldAttr) $1 | FieldAttr.HasFieldMarshal;
-                          }
-			| field_attr K_LITERAL
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Literal;
-                          }
-			| field_attr K_NOTSERIALIZED
-                          {
-                                $$ = (FieldAttr) $1 | FieldAttr.Notserialized;
-                          }
-			;
-
-at_opt			: /* EMPTY */
-			| K_AT id
-                          {
-                                $$ = $2;
-                          }
-			;
-
-init_opt		: /* EMPTY */
-			| ASSIGN field_init
-                          {
-                                $$ = $2;
-                          }
-			;
-
-field_init_primitive	: K_FLOAT32 OPEN_PARENS float64 CLOSE_PARENS
-                          {
-                                $$ = new FloatConst (Convert.ToSingle ($3));
-                          }
-			| K_FLOAT64 OPEN_PARENS float64 CLOSE_PARENS
-                          {
-                                $$ = new DoubleConst (Convert.ToDouble ($3));
-                          }
-			| K_FLOAT32 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new FloatConst (BitConverter.ToSingle (BitConverter.GetBytes ((long)$3), BitConverter.IsLittleEndian ? 0 : 4));
-                          }
-			| K_FLOAT64 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new DoubleConst (BitConverter.Int64BitsToDouble ((long)$3));
-                          }
-			| K_INT64 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new IntConst (Convert.ToInt64 ($3));
-                          }
-			| K_UINT64 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new UIntConst (Convert.ToUInt64 ((ulong)(long) $3));
-                          }
-			| K_INT32 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new IntConst ((int)((long)$3));
-                          }
-			| K_UINT32 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new UIntConst ((uint)((long)$3));
-                          }
-			| K_INT16 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new IntConst ((short)((long) $3));
-                          }
-			| K_UINT16 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new UIntConst ((ushort)((long) $3));
-                          }
-			| K_CHAR OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new CharConst (Convert.ToChar ($3));
-                          }
-			| K_WCHAR OPEN_PARENS int64 CLOSE_PARENS
-			  {
-				$$ = new CharConst (Convert.ToChar ($3));
-			  }
-			| K_INT8 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new IntConst ((sbyte)((long) ($3)));
-                          }
-			| K_UINT8 OPEN_PARENS int64 CLOSE_PARENS
-                          {
-                                $$ = new UIntConst ((byte)((long) ($3)));
-                          }
-			| K_BOOL OPEN_PARENS truefalse CLOSE_PARENS
-                          {
-                                $$ = new BoolConst ((bool) $3);
-                          }
-			;
-
-field_init_full : field_init_primitive
-			| K_BYTEARRAY bytes_list
-                          {
-                                $$ = new ByteArrConst ((byte[]) $2);
-                          }
-			;
-
-field_init : field_init_full
-			| comp_qstring
-                          {
-                                // ******** THIS IS NOT IN THE DOCUMENTATION ******** //
-                                $$ = new StringConst ((string) $1);
-                          }
-			| K_NULLREF
-                          {
-                                $$ = new NullConst ();
-                          }
-			;
-
-member_init : field_init_full
-			| K_STRING OPEN_PARENS SQSTRING CLOSE_PARENS
-			  {
-				$$ = new StringConst ((string) $3);
-			  }
-			;
-
-opt_truefalse_list
-				: truefalse_list
-				;
-
-truefalse_list
-				: truefalse
-				  {
-				  	$$ = new List<BoolConst> () { new BoolConst ((bool) $1) };
-				  }
-				| truefalse_list truefalse
-				  {
-				  	var l = (List<BoolConst>) $1;
-				  	l.Add (new BoolConst ((bool) $2));
-				  	$$ = l;
-				  }
-				;
-
-data_decl		: data_head data_body
-                          {
-                                DataDef datadef = (DataDef) $1;
-                                
-                                if ($2 is ArrayList) {
-                                        ArrayList const_list = (ArrayList) $2;
-                                        DataConstant[] const_arr = new DataConstant[const_list.Count];
-                                        
-                                        for (int i=0; i<const_arr.Length; i++)
-                                                const_arr[i] = (DataConstant) const_list[i];
-
-                                        datadef.PeapiConstant = new ArrayConstant (const_arr);
-                                } else {
-                                        datadef.PeapiConstant = (PEAPI.Constant) $2;
-                                }
-                                codegen.AddDataDef (datadef);
-                          }
-			;
-
-data_head		: D_DATA tls id ASSIGN
-                          {
-                                $$ = new DataDef ((string) $3, (bool) $2);    
-                          } 
-			| D_DATA tls
-                          {
-                                $$ = new DataDef (String.Empty, (bool) $2);
-                          }
-			;
-
-tls			: /* EMPTY */   { $$ = false; }
-			| K_TLS         { $$ = true; }
-			;
-
-data_body		: OPEN_BRACE dataitem_list CLOSE_BRACE
-                          {
-                                $$ = $2;
-                          }
-			| dataitem
-			;
-
-dataitem_list		: dataitem
-                          {
-                                ArrayList dataitem_list = new ArrayList ();
-                                dataitem_list.Add ($1);
-                                $$ = dataitem_list;
-                          }
-			| dataitem_list COMMA dataitem
-                          {
-                                ArrayList list = (ArrayList) $1;
-                                list.Add ($3);
-                          }
-			;
-
-dataitem		: K_CHAR STAR OPEN_PARENS comp_qstring CLOSE_PARENS
-                          {
-                                $$ = new StringConst ((string) $4);
-                          }
-			| K_WCHAR STAR OPEN_PARENS comp_qstring CLOSE_PARENS
-			  {
-				$$ = new StringConst ((string) $4);
-			  }
-			| AMPERSAND OPEN_PARENS id CLOSE_PARENS
-                          {
-                           //     DataDef def = codegen.CurrentTypeDef.GetDataDef ((string) $3);
-                           //     $$ = new AddressConstant ((DataConstant) def.PeapiConstant);
-                          }
-			| K_BYTEARRAY ASSIGN bytes_list
-                          {
-                                $$ = new ByteArrConst ((byte[]) $3);
-                          }
-			| K_BYTEARRAY bytes_list
-                          {
-                                // ******** THIS IS NOT IN THE SPECIFICATION ******** //
-                                $$ = new ByteArrConst ((byte[]) $2);
-                          }
-			| K_FLOAT32 OPEN_PARENS float64 CLOSE_PARENS repeat_opt
-                          {
-                                double d = (double) $3;
-                                FloatConst float_const = new FloatConst ((float) d);
-
-                                if ($5 != null)
-                                        $$ = new RepeatedConstant (float_const, (int) $5);
-                                else
-                                        $$ = float_const;
-                          }
-			| K_FLOAT64 OPEN_PARENS float64 CLOSE_PARENS repeat_opt
-                          {
-                                DoubleConst double_const = new DoubleConst ((double) $3);
-
-                                if ($5 != null)
-                                        $$ = new RepeatedConstant (double_const, (int) $5);
-                                else
-                                        $$ = double_const;
-                          }
-			| K_INT64 OPEN_PARENS int64 CLOSE_PARENS repeat_opt
-                          {
-                                IntConst int_const = new IntConst ((long) $3);
-
-                                if ($5 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $5);
-                                else
-                                        $$ = int_const;
-                          }
-			| K_INT32 OPEN_PARENS int32 CLOSE_PARENS repeat_opt
-                          {
-                                IntConst int_const = new IntConst ((int) $3);
-
-                                if ($5 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $5);
-                                else
-                                        $$ = int_const;
-                          }
-			| K_INT16 OPEN_PARENS int32 CLOSE_PARENS repeat_opt
-                          {
-                                int i = (int) $3;
-                                IntConst int_const = new IntConst ((short) i);
-
-                                if ($5 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $5);
-                                else
-                                        $$ = int_const;
-                          }
-			| K_INT8 OPEN_PARENS int32 CLOSE_PARENS repeat_opt
-                          {
-                                int i = (int) $3;
-                                IntConst int_const = new IntConst ((sbyte) i);
-
-                                if ($5 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $5);
-                                else
-                                        $$ = int_const;
-                          }
-			| K_FLOAT32 repeat_opt
-                          {
-                                FloatConst float_const = new FloatConst (0F);
-
-                                if ($2 != null)
-                                        $$ = new RepeatedConstant (float_const, (int) $2);
-                                else
-                                        $$ = float_const;
-                          }
-			| K_FLOAT64 repeat_opt
-                          {
-                                DoubleConst double_const = new DoubleConst (0);
-
-                                if ($2 != null)
-                                        $$ = new RepeatedConstant (double_const, (int) $2);
-                                else
-                                        $$ = double_const;
-                          }
-			| K_INT64 repeat_opt
-                          {
-                                IntConst int_const = new IntConst ((long) 0);
-
-                                if ($2 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $2);
-                                else
-                                        $$ = int_const;
-                          }
-			| K_INT32 repeat_opt
-                          {
-                                IntConst int_const = new IntConst ((int) 0);
-
-                                if ($2 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $2);
-                                else
-                                        $$ = int_const;
-                          }
-			| K_INT16 repeat_opt
-                          {
-                                IntConst int_const = new IntConst ((short) 0);
-
-                                if ($2 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $2);
-                                else
-                                        $$ = int_const;
-                          }
-			| K_INT8 repeat_opt
-                          {
-                                IntConst int_const = new IntConst ((sbyte) 0);
-
-                                if ($2 != null)
-                                        $$ = new RepeatedConstant (int_const, (int) $2);
-                                else
-                                        $$ = int_const;
-                          }
-			;
-
-method_all		: method_head OPEN_BRACE method_decls CLOSE_BRACE
-                          {
-                                codegen.EndMethodDef (tokenizer.Location);
-                          }
-			;
-
-method_head		: D_METHOD meth_attr call_conv param_attr type method_name
-                          formal_typars_clause OPEN_PARENS sig_args CLOSE_PARENS impl_attr
-                          {
-                                CallConv cc = (CallConv) $3;
-                                if ($7 != null)
-                                        cc |= CallConv.Generic;
-
-                                MethodDef methdef = new MethodDef (
-                                        codegen, (MethAttr) $2, cc,
-                                        (ImplAttr) $11, (string) $6, (BaseTypeRef) $5,
-                                        (ArrayList) $9, tokenizer.Reader.Location, (GenericParameters) $7, codegen.CurrentTypeDef);
-                                if (pinvoke_info) {
-                                        ExternModule mod = codegen.ExternTable.AddModule (pinvoke_mod);
-                                        methdef.AddPInvokeInfo (pinvoke_attr, mod, pinvoke_meth);
-                                        pinvoke_info = false;
-                                }
-                          }
-			| D_METHOD meth_attr call_conv param_attr type 
-			  K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS method_name
-			  OPEN_PARENS sig_args CLOSE_PARENS impl_attr
-			  {
-                                MethodDef methdef = new MethodDef (
-                              		codegen, (MethAttr) $2, (CallConv) $3,
-                                        (ImplAttr) $14, (string) $10, (BaseTypeRef) $5,
-                                        (ArrayList) $12, tokenizer.Reader.Location, null, codegen.CurrentTypeDef);
-
-                                if (pinvoke_info) {
-                                        ExternModule mod = codegen.ExternTable.AddModule (pinvoke_mod);
-                                        methdef.AddPInvokeInfo (pinvoke_attr, mod, pinvoke_meth);
-                                        pinvoke_info = false;
-                                }
-		                
-                                methdef.AddRetTypeMarshalInfo ((NativeType) $8);
-			  }
-			;
-
-meth_attr		: /* EMPTY */                   { $$ = new MethAttr (); }
-			| meth_attr K_STATIC            { $$ = (MethAttr) $1 | MethAttr.Static; }
-			| meth_attr K_PUBLIC            { $$ = (MethAttr) $1 | MethAttr.Public; }
-			| meth_attr K_PRIVATE           { $$ = (MethAttr) $1 | MethAttr.Private; }
-			| meth_attr K_FAMILY            { $$ = (MethAttr) $1 | MethAttr.Family; }
-			| meth_attr K_ASSEMBLY          { $$ = (MethAttr) $1 | MethAttr.Assembly; }
-			| meth_attr K_FAMANDASSEM       { $$ = (MethAttr) $1 | MethAttr.FamAndAssem; } 
-			| meth_attr K_FAMORASSEM        { $$ = (MethAttr) $1 | MethAttr.FamOrAssem; } 
-			| meth_attr K_PRIVATESCOPE      { /* CHECK HEADERS */ }
-			| meth_attr K_FINAL             { $$ = (MethAttr) $1 | MethAttr.Final; } 
-			| meth_attr K_VIRTUAL           { $$ = (MethAttr) $1 | MethAttr.Virtual; }
-			| meth_attr K_ABSTRACT          { $$ = (MethAttr) $1 | MethAttr.Abstract; }
-			| meth_attr K_HIDEBYSIG         { $$ = (MethAttr) $1 | MethAttr.HideBySig; }
-			| meth_attr K_NEWSLOT           { $$ = (MethAttr) $1 | MethAttr.NewSlot; }
-			| meth_attr K_REQSECOBJ         { $$ = (MethAttr) $1 | MethAttr.RequireSecObject; }
-			| meth_attr K_SPECIALNAME       { $$ = (MethAttr) $1 | MethAttr.SpecialName; }
-			| meth_attr K_RTSPECIALNAME     { $$ = (MethAttr) $1 | MethAttr.RTSpecialName; }
-			| meth_attr K_STRICT            { $$ = (MethAttr) $1 | MethAttr.Strict; }
-                        | meth_attr K_COMPILERCONTROLLED { /* Do nothing */ }
-			| meth_attr K_UNMANAGEDEXP      
-			| meth_attr K_PINVOKEIMPL OPEN_PARENS comp_qstring K_AS
-				comp_qstring pinv_attr CLOSE_PARENS
-                          {
-                                pinvoke_info = true;
-                                pinvoke_mod = (string) $4;
-                                pinvoke_meth = (string) $6;
-                                pinvoke_attr = (PInvokeAttr) $7;
-                          }
-			| meth_attr K_PINVOKEIMPL OPEN_PARENS comp_qstring pinv_attr CLOSE_PARENS
-                          {
-                                pinvoke_info = true;
-                                pinvoke_mod = (string) $4;
-                                pinvoke_meth = null;
-                                pinvoke_attr = (PInvokeAttr) $5;
-                          }
-			| meth_attr K_PINVOKEIMPL OPEN_PARENS pinv_attr CLOSE_PARENS
-                          {
-                                pinvoke_info = true;
-                                pinvoke_mod = null;
-                                pinvoke_meth = null;
-                                pinvoke_attr = (PInvokeAttr) $4;
-                          }
-			;
-
-pinv_attr		: /* EMPTY */ { $$ = new PInvokeAttr (); }
-			| pinv_attr K_NOMANGLE { $$ = (PInvokeAttr) $1 | PInvokeAttr.nomangle; }
-			| pinv_attr K_ANSI { $$ = (PInvokeAttr) $1 | PInvokeAttr.ansi; }
-			| pinv_attr K_UNICODE { $$ = (PInvokeAttr) $1 | PInvokeAttr.unicode; }
-			| pinv_attr K_AUTOCHAR { $$ = (PInvokeAttr) $1 | PInvokeAttr.autochar; }
-			| pinv_attr K_LASTERR { $$ = (PInvokeAttr) $1 | PInvokeAttr.lasterr; }
-			| pinv_attr K_WINAPI { $$ = (PInvokeAttr) $1 | PInvokeAttr.winapi; }
-			| pinv_attr K_CDECL { $$ = (PInvokeAttr) $1 | PInvokeAttr.cdecl; }
-			| pinv_attr K_STDCALL { $$ = (PInvokeAttr) $1 | PInvokeAttr.stdcall; }
-			| pinv_attr K_THISCALL { $$ = (PInvokeAttr) $1 | PInvokeAttr.thiscall; }
-			| pinv_attr K_FASTCALL { $$ = (PInvokeAttr) $1 | PInvokeAttr.fastcall; }
-			| pinv_attr K_BESTFIT COLON K_ON { $$ = (PInvokeAttr) $1 | PInvokeAttr.bestfit_on; }
-			| pinv_attr K_BESTFIT COLON K_OFF { $$ = (PInvokeAttr) $1 | PInvokeAttr.bestfit_off; }
-			| pinv_attr K_CHARMAPERROR COLON K_ON { $$ = (PInvokeAttr) $1 | PInvokeAttr.charmaperror_on; }
-			| pinv_attr K_CHARMAPERROR COLON K_OFF { $$ = (PInvokeAttr) $1 | PInvokeAttr.charmaperror_off; }
-			;
-
-method_name		: D_CTOR
-			| D_CCTOR
-			| comp_name
-			;
-
-param_attr		: /* EMPTY */                                   { $$ = new ParamAttr (); }
-			| param_attr OPEN_BRACKET K_IN CLOSE_BRACKET    { $$ = (ParamAttr) $1 | ParamAttr.In; }
-			| param_attr OPEN_BRACKET K_OUT CLOSE_BRACKET   { $$ = (ParamAttr) $1 | ParamAttr.Out; }
-			| param_attr OPEN_BRACKET K_OPT CLOSE_BRACKET   { $$ = (ParamAttr) $1 | ParamAttr.Opt; }
-			;
-
-impl_attr		: /* EMPTY */                   { $$ = new ImplAttr (); }
-			| impl_attr K_NATIVE            { $$ = (ImplAttr) $1 | ImplAttr.Native; }
-			| impl_attr K_CIL               { $$ = (ImplAttr) $1 | ImplAttr.IL; }
-                        | impl_attr K_IL                { $$ = (ImplAttr) $1 | ImplAttr.IL; }
-			| impl_attr K_OPTIL             { $$ = (ImplAttr) $1 | ImplAttr.Optil; }
-			| impl_attr K_MANAGED           { /* should this reset? */ }
-			| impl_attr K_UNMANAGED         { $$ = (ImplAttr) $1 | ImplAttr.Unmanaged; }
-			| impl_attr K_FORWARDREF        { $$ = (ImplAttr) $1 | ImplAttr.ForwardRef; }
-			| impl_attr K_PRESERVESIG       { $$ = (ImplAttr) $1 | ImplAttr.PreserveSig; }
-			| impl_attr K_RUNTIME           { $$ = (ImplAttr) $1 | ImplAttr.Runtime; }
-			| impl_attr K_INTERNALCALL      { $$ = (ImplAttr) $1 | ImplAttr.InternalCall; }
-			| impl_attr K_SYNCHRONIZED      { $$ = (ImplAttr) $1 | ImplAttr.Synchronised; }
-			| impl_attr K_NOINLINING        { $$ = (ImplAttr) $1 | ImplAttr.NoInLining; }
-			;
-
-sig_args		: /* EMPTY */
-			| sig_arg_list
-			;
-
-sig_arg_list 		: sig_arg
-                          {
-                                ArrayList sig_list = new ArrayList ();
-                                sig_list.Add ($1);
-                                $$ = sig_list;
-                          }
-			| sig_arg_list COMMA sig_arg
-                          {
-                                ArrayList sig_list = (ArrayList) $1;
-                                sig_list.Add ($3);
-                                $$ = sig_list;
-                          }
-			;
-
-sig_arg			: param_attr type
-                          {
-                                $$ = new ParamDef ((ParamAttr) $1, null, (BaseTypeRef) $2);
-                          }
-			| param_attr type id
-                          {
-                                $$ = new ParamDef ((ParamAttr) $1, (string) $3, (BaseTypeRef) $2);
-                          }
-                        | ELLIPSIS
-                          {
-				$$ = new ParamDef ((ParamAttr) 0, "...", new SentinelTypeRef ());
-                                // $$ = ParamDef.Ellipsis;
-                          }
-			| param_attr type K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS
-			  {
-                                ParamDef param_def = new ParamDef ((ParamAttr) $1, null, (BaseTypeRef) $2);
-                                param_def.AddMarshalInfo ((PEAPI.NativeType) $5);
-
-                                $$ = param_def;
-			  }
-			| param_attr type K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS id
-			  {
-                                ParamDef param_def = new ParamDef ((ParamAttr) $1, (string) $7, (BaseTypeRef) $2);
-                                param_def.AddMarshalInfo ((PEAPI.NativeType) $5);
-
-                                $$ = param_def;
-			  }
-			;
-
-type_list               : /* EMPTY */
-                          {
-                                $$ = new ArrayList (0);
-                          }
-                        | ELLIPSIS
-                          {
-                                ArrayList type_list = new ArrayList ();
-                                // type_list.Add (TypeRef.Ellipsis);
-				type_list.Add (new SentinelTypeRef ());
-                                $$ = type_list;
-                          }
-                        | type_list COMMA ELLIPSIS
-                          {
-                                ArrayList type_list = (ArrayList) $1;
-                                // type_list.Add (TypeRef.Ellipsis);
-				type_list.Add (new SentinelTypeRef ());
-				$$ = type_list;
-                          }
-                        | param_attr type opt_id
-                          {
-                                ArrayList type_list = new ArrayList ();
-                                type_list.Add ($2);
-                                $$ = type_list;
-                          }
-                        | type_list COMMA param_attr type opt_id
-                          {
-                                ArrayList type_list = (ArrayList) $1;
-                                type_list.Add ($4);
-                          }
-                        ;
-
-opt_id                  : /* EMPTY */
-                        | id
-                        ;
-
-method_decls		: /* EMPTY */
-			| method_decls method_decl
-			;
-
-method_decl		: D_EMITBYTE int32
-						{
-							codegen.CurrentMethodDef.AddInstr (new
-                                        EmitByteInstr ((int) $2, tokenizer.Location));
-                          
-						}
-			| D_MAXSTACK int32
-                          {
-                                codegen.CurrentMethodDef.SetMaxStack ((int) $2);
-                          }
-			| D_LOCALS OPEN_PARENS local_list CLOSE_PARENS
-                          {
-                                if ($3 != null) {
-                                        codegen.CurrentMethodDef.AddLocals (
-                                                (ArrayList) $3);
-                                }
-                          }
-			| D_LOCALS K_INIT OPEN_PARENS local_list CLOSE_PARENS
-                          {
-                                if ($4 != null) {
-                                        codegen.CurrentMethodDef.AddLocals (
-                                                (ArrayList) $4);
-                                        codegen.CurrentMethodDef.InitLocals ();
-                                }
-                          }
-			| D_ENTRYPOINT
-                          {
-                                codegen.CurrentMethodDef.EntryPoint ();
-                                codegen.HasEntryPoint = true;
-                          }
-			| D_ZEROINIT
-                          {
-                                codegen.CurrentMethodDef.ZeroInit ();
-                          }
-			| D_EXPORT OPEN_BRACKET int32 CLOSE_BRACKET
-			| D_EXPORT OPEN_BRACKET int32 CLOSE_BRACKET K_AS id
-			| D_VTENTRY int32 COLON int32 
-			| D_OVERRIDE type_spec DOUBLE_COLON method_name
-                          {
-                                codegen.CurrentTypeDef.AddOverride (codegen.CurrentMethodDef,
-                                        (BaseTypeRef) $2, (string) $4);
-                                
-                          }
-			| D_OVERRIDE K_METHOD method_ref
-                          {
-				codegen.CurrentTypeDef.AddOverride (codegen.CurrentMethodDef.Signature,
-					(BaseMethodRef) $3);
-                          }
-			| D_OVERRIDE K_METHOD call_conv type type_spec DOUBLE_COLON method_name
-			  OPEN_ANGLE_BRACKET OPEN_BRACKET int32 CLOSE_BRACKET CLOSE_ANGLE_BRACKET
-			  OPEN_PARENS type_list CLOSE_PARENS 
-                          {
-                                BaseTypeRef owner = (BaseTypeRef) $5;
-                                ArrayList arg_list = (ArrayList) $14;
-                                BaseTypeRef[] param_list;
-                                BaseMethodRef methref;
-
-                                if (arg_list != null)
-                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
-                                else
-                                        param_list = new BaseTypeRef[0];
-
-                                if (owner.UseTypeSpec) {
-                                        methref = new TypeSpecMethodRef (owner, (CallConv) $3, (BaseTypeRef) $4,
-                                                (string) $7, param_list, (int) $10);
-                                } else {
-                                        methref = owner.GetMethodRef ((BaseTypeRef) $4,
-                                                (CallConv) $3, (string) $7, param_list, (int) $10);
-                                }
-
-				codegen.CurrentTypeDef.AddOverride (codegen.CurrentMethodDef.Signature,
-					methref);
-			  }
-			| scope_block
-			| D_PARAM OPEN_BRACKET int32 CLOSE_BRACKET init_opt
-                          {
-                                int index = (int) $3;
-                                ParamDef param = codegen.CurrentMethodDef.GetParam (index);
-                                codegen.CurrentCustomAttrTarget = param;
-
-                                if (param == null) {
-                                        Report.Warning (tokenizer.Location, String.Format ("invalid param index ({0}) with .param", index));
-                                } else if ($5 != null)
-                                        param.AddDefaultValue ((Constant) $5);
-                          }
-			| param_type_decl
-			| id COLON
-                          {
-                                codegen.CurrentMethodDef.AddLabel ((string) $1);
-                          }
-			| seh_block
-			| instr
-			| sec_decl
-			  {
-				AddSecDecl ($1, false);
-			  }
-			| extsource_spec
-			| language_decl
-			| customattr_decl
-                          {
-                                if (codegen.CurrentCustomAttrTarget != null)
-                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
-                          }
-			| data_decl
-			;
-
-local_list              : /* EMPTY */
-                        | local
-                          {
-                                ArrayList local_list = new ArrayList ();
-                                local_list.Add ($1);
-                                $$ = local_list;
-                          }
-                        | local_list COMMA local
-                          {
-                                ArrayList local_list = (ArrayList) $1;
-                                local_list.Add ($3);
-                          }
-                        ;
-
-local                   : type
-                          {
-                                $$ = new Local (-1, (BaseTypeRef) $1);
-                          }
-                        | type id
-                          {
-                                $$ = new Local (-1, (string) $2, (BaseTypeRef) $1);
-                          }
-                        | slot_num type
-                          {
-                                $$ = new Local ((int) $1, (BaseTypeRef) $2);
-                          }
-                        | slot_num type id
-                          {
-                                $$ = new Local ((int) $1, (string) $3, (BaseTypeRef) $2);
-                          }
-                        ;
-
-slot_num                : OPEN_BRACKET int32 CLOSE_BRACKET
-                          {
-                                $$ = $2;
-                          }
-                        ;
-
-type_spec		: OPEN_BRACKET slashed_name CLOSE_BRACKET
-                          {
-                                // This is a reference to a global method in another
-                                // assembly. This is not supported in the MS version of ilasm
-                          }
-			| OPEN_BRACKET D_MODULE slashed_name CLOSE_BRACKET
-                          {
-                                string module = (string) $3;
-
-                                if (codegen.IsThisModule (module)) {
-                                    // This is not handled yet.
-                                } else {
-                                    $$ = codegen.ExternTable.GetModuleTypeRef ((string) $3, "<Module>", false);
-                                }
-
-                          }
-			| type
-			;
-
-scope_block		: scope_block_begin method_decls CLOSE_BRACE
-                          {
-                                $$ = new HandlerBlock ((LabelInfo) $1,
-                                        codegen.CurrentMethodDef.AddLabel ());
-                                codegen.CurrentMethodDef.EndLocalsScope ();
-                          }
-			;
-
-scope_block_begin       : OPEN_BRACE
-                          {
-                                $$ = codegen.CurrentMethodDef.AddLabel ();
-                                codegen.CurrentMethodDef.BeginLocalsScope ();
-                          }
-                        ;
-                        
-                        
-seh_block		: try_block seh_clauses
-                          {
-                                TryBlock try_block = (TryBlock) $1;
-
-                                ArrayList clause_list = (ArrayList) $2;
-                                foreach (object clause in clause_list)
-                                        try_block.AddSehClause ((ISehClause) clause);
-
-                                codegen.CurrentMethodDef.AddInstr (try_block);
-                          }
-			;
-
-try_block		: D_TRY scope_block
-                          {
-                                $$ = new TryBlock ((HandlerBlock) $2, tokenizer.Location);
-                          }
-			| D_TRY id K_TO id
-                          {
-				LabelInfo from = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
-				LabelInfo to = codegen.CurrentMethodDef.AddLabelRef ((string) $4);
-				
-                                $$ = new TryBlock (new HandlerBlock (from, to), tokenizer.Location);
-                          }
-			| D_TRY int32 K_TO int32
-			  {
-				LabelInfo from = codegen.CurrentMethodDef.AddLabel ((int) $2);
-				LabelInfo to = codegen.CurrentMethodDef.AddLabel ((int) $4);
-				
-				$$ = new TryBlock (new HandlerBlock (from, to), tokenizer.Location);
-			  }
-			;
-
-seh_clauses		: seh_clause
-                          {
-                                ArrayList clause_list = new ArrayList ();
-                                clause_list.Add ($1);
-                                $$ = clause_list;
-                          }
-			| seh_clauses seh_clause
-                          {
-                                ArrayList clause_list = (ArrayList) $1;
-                                clause_list.Add ($2);
-                          }
-			;
-
-seh_clause		: K_CATCH type handler_block
-                          {
-				if ($2.GetType () == typeof (PrimitiveTypeRef))
-					Report.Error ("Exception not be of a primitive type.");
-					
-                                BaseTypeRef type = (BaseTypeRef) $2;
-                                CatchBlock cb = new CatchBlock (type);
-                                cb.SetHandlerBlock ((HandlerBlock) $3);
-                                $$ = cb;
-                          }
-			| K_FINALLY handler_block
-                          {
-                                FinallyBlock fb = new FinallyBlock ();
-                                fb.SetHandlerBlock ((HandlerBlock) $2);
-                                $$ = fb;
-                          }
-			| K_FAULT handler_block
-                          {
-                                FaultBlock fb = new FaultBlock ();
-                                fb.SetHandlerBlock ((HandlerBlock) $2);
-                                $$ = fb;
-                          }
-			| filter_clause handler_block
-                          {
-                                FilterBlock fb = (FilterBlock) $1;
-                                fb.SetHandlerBlock ((HandlerBlock) $2);
-                          }
-			;
-
-filter_clause		: K_FILTER scope_block
-                          {
-                                HandlerBlock block = (HandlerBlock) $2;
-                                FilterBlock fb = new FilterBlock (block);
-                                $$ = fb;
-                          }
-			| K_FILTER id
-                          {
-				LabelInfo from = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
-                                FilterBlock fb = new FilterBlock (new HandlerBlock (from, null));
-                                $$ = fb;
-                          }
-			| K_FILTER int32
-			  {
-				LabelInfo from = codegen.CurrentMethodDef.AddLabel ((int) $2);
-				FilterBlock fb = new FilterBlock (new HandlerBlock (from, null));
-				$$ = fb;
-			  }
-			;
-
-handler_block		: scope_block
-                          {
-                                
-                          }
-			| K_HANDLER id K_TO id
-                          {	
-				LabelInfo from = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
-				LabelInfo to = codegen.CurrentMethodDef.AddLabelRef ((string) $4);
-
-                                $$ = new HandlerBlock (from, to);
-                          }
-			| K_HANDLER int32 K_TO int32
-			  {
-				LabelInfo from = codegen.CurrentMethodDef.AddLabel ((int) $2);
-				LabelInfo to = codegen.CurrentMethodDef.AddLabel ((int) $4);
-
-				$$ = new HandlerBlock (from, to);
-			  }
-			;
-
-instr			: INSTR_NONE
-                          {
-                                codegen.CurrentMethodDef.AddInstr (
-                                        new SimpInstr ((Op) $1, tokenizer.Location));
-                          }
-			| INSTR_LOCAL int32
-                          {
-                                codegen.CurrentMethodDef.AddInstr (
-                                        new IntInstr ((IntOp) $1, (int) $2, tokenizer.Location));        
-                          }
-                        | INSTR_LOCAL id
-                          {
-                                int slot = codegen.CurrentMethodDef.GetNamedLocalSlot ((string) $2);
-                                if (slot < 0)
-                                        Report.Error (String.Format ("Undeclared identifier '{0}'", (string) $2));
-                                codegen.CurrentMethodDef.AddInstr (
-                                        new IntInstr ((IntOp) $1, slot, tokenizer.Location));
-                          }
-                        | INSTR_PARAM int32
-                          {
-                                codegen.CurrentMethodDef.AddInstr (
-                                        new IntInstr ((IntOp) $1, (int) $2, tokenizer.Location));
-                          }
-                        | INSTR_PARAM id
-                          {
-                                int pos = codegen.CurrentMethodDef.GetNamedParamPos ((string) $2);
-                                if (pos < 0)
-                                        Report.Error (String.Format ("Undeclared identifier '{0}'", (string) $2));
-
-                                codegen.CurrentMethodDef.AddInstr (
-                                        new IntInstr ((IntOp) $1, pos, tokenizer.Location));
-                          }
-			| INSTR_I int32
-                          {
-                                codegen.CurrentMethodDef.AddInstr (new
-                                        IntInstr ((IntOp) $1, (int) $2, tokenizer.Location));
-                          }
-			| INSTR_I id
-                          {
-                                int slot = codegen.CurrentMethodDef.GetNamedLocalSlot ((string) $2);
-                                if (slot < 0)
-                                        Report.Error (String.Format ("Undeclared identifier '{0}'", (string) $2));
-                                codegen.CurrentMethodDef.AddInstr (new
-                                        IntInstr ((IntOp) $1, slot, tokenizer.Location));
-                          }
-			| INSTR_I8 int64
-                          {
-                                if ($1 is MiscInstr) {
-                                        switch ((MiscInstr) $1) {
-                                        case MiscInstr.ldc_i8:
-                                        codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1,
-                                                (long) $2, tokenizer.Location));
-                                        break;
-                                        }
-                                }
-                          }
-			| INSTR_R float64
-                          {
-                                switch ((MiscInstr) $1) {
-                                case MiscInstr.ldc_r4:
-                                case MiscInstr.ldc_r8:
-                                         codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, (double) $2, tokenizer.Location));
-                                         break;
-                                }
-                          }
-			| INSTR_R int64
-                          {
-                                long l = (long) $2;
-                                
-                                switch ((MiscInstr) $1) {
-                                        case MiscInstr.ldc_r4:
-                                        case MiscInstr.ldc_r8:
-                                        codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, (double) l, tokenizer.Location));
-                                        break;
-                                }
-                          }
-			| INSTR_R bytes_list
-                          {
-				byte[] fpdata;
-                                switch ((MiscInstr) $1) {
-                                        case MiscInstr.ldc_r4:
-						fpdata = (byte []) $2;
-						if (!BitConverter.IsLittleEndian) {
-							System.Array.Reverse (fpdata, 0, 4);
-						}
-                                                float s = BitConverter.ToSingle (fpdata, 0);
-                                                codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, s, tokenizer.Location));
-                                                break;
-                                        case MiscInstr.ldc_r8:
-						fpdata = (byte []) $2;
-						if (!BitConverter.IsLittleEndian) {
-							System.Array.Reverse (fpdata, 0, 8);
-						}
-                                                double d = BitConverter.ToDouble (fpdata, 0);
-                                                codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, d, tokenizer.Location));
-                                                break;
-                                }
-                          }
-			| INSTR_BRTARGET int32
-                          {
-				LabelInfo target = codegen.CurrentMethodDef.AddLabel ((int) $2);
-                                codegen.CurrentMethodDef.AddInstr (new BranchInstr ((BranchOp) $1,
-								   target, tokenizer.Location));  
-                          }
-			| INSTR_BRTARGET id
-                          {
-				LabelInfo target = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
-                                codegen.CurrentMethodDef.AddInstr (new BranchInstr ((BranchOp) $1,
-                                        			   target, tokenizer.Location));
-                          }
-			| INSTR_METHOD method_ref
-                          {
-                                codegen.CurrentMethodDef.AddInstr (new MethodInstr ((MethodOp) $1,
-                                        (BaseMethodRef) $2, tokenizer.Location));
-                          }
-			| INSTR_FIELD type type_spec DOUBLE_COLON id
-                          {
-                                
-                                BaseTypeRef owner = (BaseTypeRef) $3;
-                                GenericParamRef gpr = $2 as GenericParamRef;
-                                if (gpr != null && codegen.CurrentMethodDef != null)
-                                        codegen.CurrentMethodDef.ResolveGenParam ((PEAPI.GenParam) gpr.PeapiType);
-                                IFieldRef fieldref = owner.GetFieldRef (
-                                        (BaseTypeRef) $2, (string) $5);
-
-                                codegen.CurrentMethodDef.AddInstr (new FieldInstr ((FieldOp) $1, fieldref, tokenizer.Location));
-                          }
-			| INSTR_FIELD type id
-                          {
-                                GlobalFieldRef fieldref = codegen.GetGlobalFieldRef ((BaseTypeRef) $2, (string) $3);
-
-                                codegen.CurrentMethodDef.AddInstr (new FieldInstr ((FieldOp) $1, fieldref, tokenizer.Location));
-                          }
-			| INSTR_TYPE type_spec
-                          {
-                                codegen.CurrentMethodDef.AddInstr (new TypeInstr ((TypeOp) $1,
-                                        (BaseTypeRef) $2, tokenizer.Location));
-                          }
-			| INSTR_STRING comp_qstring
-                          {
-                                if ((MiscInstr) $1 == MiscInstr.ldstr)
-                                        codegen.CurrentMethodDef.AddInstr (new LdstrInstr ((string) $2, tokenizer.Location));
-                          }
-			| INSTR_STRING K_BYTEARRAY ASSIGN bytes_list
-                          {
-                                byte[] bs = (byte[]) $4;
-                                if ((MiscInstr) $1 == MiscInstr.ldstr)
-                                        codegen.CurrentMethodDef.AddInstr (new LdstrInstr (bs, tokenizer.Location));
-                          }
-			| INSTR_STRING K_BYTEARRAY bytes_list
-                          {
-                                byte[] bs = (byte[]) $3;
-                                if ((MiscInstr) $1 == MiscInstr.ldstr)
-                                        codegen.CurrentMethodDef.AddInstr (new LdstrInstr (bs, tokenizer.Location));
-                          }
-			| INSTR_SIG call_conv type OPEN_PARENS type_list CLOSE_PARENS
-                          {
-                                ArrayList arg_list = (ArrayList) $5;
-                                BaseTypeRef[] arg_array = null;
-
-                                if (arg_list != null)
-                                        arg_array = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
-
-                                codegen.CurrentMethodDef.AddInstr (new CalliInstr ((CallConv) $2,
-                                        (BaseTypeRef) $3, arg_array, tokenizer.Location));
-                          }     
-			| INSTR_TOK owner_type
-                          {
-                                if ((MiscInstr) $1 == MiscInstr.ldtoken) {
-                                        if ($2 is BaseMethodRef)
-                                                codegen.CurrentMethodDef.AddInstr (new LdtokenInstr ((BaseMethodRef) $2, tokenizer.Location));
-                                        else if ($2 is IFieldRef)
-                                                codegen.CurrentMethodDef.AddInstr (new LdtokenInstr ((IFieldRef) $2, tokenizer.Location));
-                                        else
-                                                codegen.CurrentMethodDef.AddInstr (new LdtokenInstr ((BaseTypeRef) $2, tokenizer.Location));
-                                                
-                                }
-                          }
-			| INSTR_SWITCH OPEN_PARENS labels CLOSE_PARENS
-                          {
-                                codegen.CurrentMethodDef.AddInstr (new SwitchInstr ((ArrayList) $3, tokenizer.Location));
-                          }
-			;
-
-method_ref		: call_conv type method_name typars_clause
-			  OPEN_PARENS type_list CLOSE_PARENS
-                          {
-                                ArrayList arg_list = (ArrayList) $6;
-                                GenericArguments ga = (GenericArguments) $4;
-                                BaseTypeRef[] param_list;
-  
-                                if (arg_list != null)
-                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
-                                else
-                                        param_list = new BaseTypeRef[0];
-
-				BaseMethodRef methref = codegen.GetGlobalMethodRef ((BaseTypeRef) $2, (CallConv) $1,
-                                        (string) $3, param_list, (ga != null ? ga.Count : 0));
-
-                                if (ga != null)
-                                        methref = methref.GetGenericMethodRef (ga);
-
-                                $$ = methref;
-                          }
-                        | call_conv type type_spec DOUBLE_COLON method_name
-                          typars_clause OPEN_PARENS type_list CLOSE_PARENS 
-                          {
-                                BaseTypeRef owner = (BaseTypeRef) $3;
-                                ArrayList arg_list = (ArrayList) $8;
-                                GenericArguments ga = (GenericArguments) $6;
-                                BaseTypeRef[] param_list;
-                                BaseMethodRef methref;
-
-                                if (arg_list != null)
-                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
-                                else
-                                        param_list = new BaseTypeRef[0];
-
-                                if (codegen.IsThisAssembly ("mscorlib")) {
-                                        PrimitiveTypeRef prim = owner as PrimitiveTypeRef;
-                                        if (prim != null && prim.SigMod == "")
-                                                owner = codegen.GetTypeRef (prim.Name);
-                                }
-
-                                if (owner.UseTypeSpec) {
-                                        methref = new TypeSpecMethodRef (owner, (CallConv) $1, (BaseTypeRef) $2,
-                                                (string) $5, param_list, (ga != null ? ga.Count : 0));
-                                } else {
-                                        methref = owner.GetMethodRef ((BaseTypeRef) $2,
-                                                (CallConv) $1, (string) $5, param_list, (ga != null ? ga.Count : 0));
-                                }
-
-                                if (ga != null)
-                                        methref = methref.GetGenericMethodRef (ga);
-                                
-                                $$ = methref;
-                          }
-			;
-
-labels			: /* EMPTY */
-			| id
-                          {
-                                ArrayList label_list = new ArrayList ();
-                                label_list.Add (codegen.CurrentMethodDef.AddLabelRef ((string) $1));
-                                $$ = label_list;
-                          }
-			| int32
-                          {
-                                ArrayList label_list = new ArrayList ();
-                                label_list.Add ($1);
-                                $$ = label_list;
-                          }
-			| labels COMMA id
-                          {
-                                ArrayList label_list = (ArrayList) $1;
-                                label_list.Add (codegen.CurrentMethodDef.AddLabelRef ((string) $3));
-                          }
-			| labels COMMA int32
-                          {
-                                ArrayList label_list = (ArrayList) $1;
-                                label_list.Add ($3);
-                          }
-			;
-
-owner_type		: type_spec
-			| member_ref
-			;
-
-member_ref		: K_METHOD method_ref
-                          {
-                                $$ = $2;
-                          }
-			| K_FIELD type type_spec DOUBLE_COLON id
-                          {
-                                BaseTypeRef owner = (BaseTypeRef) $3;
-
-                                $$ = owner.GetFieldRef (
-                                        (BaseTypeRef) $2, (string) $5);
-                          }
-			| K_FIELD type id
-                          {
-                                $$ = codegen.GetGlobalFieldRef ((BaseTypeRef) $2, (string) $3);
-                          }
-			;
-
-event_all		: event_head OPEN_BRACE event_decls CLOSE_BRACE
-                          {
-                                codegen.CurrentTypeDef.EndEventDef ();
-                          }
-			;
-
-event_head		: D_EVENT event_attr type_spec comp_name
-                          {
-                                EventDef event_def = new EventDef ((FeatureAttr) $2,
-                                        (BaseTypeRef) $3, (string) $4);
-                                codegen.CurrentTypeDef.BeginEventDef (event_def);
-                                codegen.CurrentCustomAttrTarget = event_def;
-                          }
-			| D_EVENT event_attr id
-			;
-
-event_attr		: /* EMPTY */
-                          {
-                                $$ = new FeatureAttr ();
-                          }
-			| event_attr K_RTSPECIALNAME
-                          {
-                                $$ = (FeatureAttr) $1 & FeatureAttr.Rtspecialname;
-                          }
-			| event_attr K_SPECIALNAME
-                          {
-                                $$ = (FeatureAttr) $1 & FeatureAttr.Specialname;
-                          }
-			;
-
-event_decls		: /* EMPTY */
-			| event_decls event_decl
-			;
-
-event_decl		: D_ADDON method_ref semicolon_opt
-                          {
-                                codegen.CurrentTypeDef.CurrentEvent.AddAddon (
-                                        (MethodRef) $2);                                
-                          }
-			| D_REMOVEON method_ref semicolon_opt
-                          {
-                                codegen.CurrentTypeDef.CurrentEvent.AddRemoveon (
-                                        (MethodRef) $2);
-                          }
-			| D_FIRE method_ref semicolon_opt
-                          {
-                                codegen.CurrentTypeDef.CurrentEvent.AddFire (
-                                        (MethodRef) $2);
-                          }
-			| D_OTHER method_ref semicolon_opt
-                          {
-                                codegen.CurrentTypeDef.CurrentEvent.AddOther (
-                                        (MethodRef) $2);
-                          }
-			| customattr_decl
-                          {
-                                if (codegen.CurrentCustomAttrTarget != null)
-                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
-                          }
-			| extsource_spec
-			| language_decl
-			;
-
-prop_all		: prop_head OPEN_BRACE prop_decls CLOSE_BRACE
-                          {
-                                codegen.CurrentTypeDef.EndPropertyDef ();
-                          }
-			;
-
-prop_head		: D_PROPERTY prop_attr type comp_name OPEN_PARENS type_list CLOSE_PARENS init_opt
-                          {
-                                PropertyDef prop_def = new PropertyDef ((FeatureAttr) $2, (BaseTypeRef) $3,
-                                        (string) $4, (ArrayList) $6);
-                                codegen.CurrentTypeDef.BeginPropertyDef (prop_def);
-                                codegen.CurrentCustomAttrTarget = prop_def;
-
-                                if ($8 != null) {
-                                        prop_def.AddInitValue ((Constant) $8);
-                                }
-                          }
-			;
-
-prop_attr 		: /* EMPTY */
-                          {
-                                $$ = new FeatureAttr ();
-                          }
-			| prop_attr K_RTSPECIALNAME
-                          {
-                                $$ = (FeatureAttr) $1 | FeatureAttr.Rtspecialname;
-                          }
-			| prop_attr K_SPECIALNAME
-                          {
-                                $$ = (FeatureAttr) $1 | FeatureAttr.Specialname;
-                          }
-                        | prop_attr K_INSTANCE
-                          {
-                                $$ = (FeatureAttr) $1 | FeatureAttr.Instance;
-                          }
-			;
-
-prop_decls		: /* EMPTY */
-			| prop_decls prop_decl
-			;
-
-prop_decl		: D_SET method_ref
-                          {
-                                codegen.CurrentTypeDef.CurrentProperty.AddSet ((MethodRef) $2);
-                          }
-			| D_GET method_ref
-                          {
-                                codegen.CurrentTypeDef.CurrentProperty.AddGet ((MethodRef) $2);
-                          }
-			| D_OTHER method_ref
-                          {
-                                codegen.CurrentTypeDef.CurrentProperty.AddOther ((MethodRef) $2);
-                          }
-			| customattr_decl
-                         {
-                                if (codegen.CurrentCustomAttrTarget != null)
-                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
-                         }
-			| extsource_spec
-			| language_decl
-			;
-
-customattr_decl
-			: D_CUSTOM customattr_owner_type_opt custom_type
-                          {
-                                $$ = new CustomAttr ((BaseMethodRef) $3, null);
-                          }
-			| D_CUSTOM customattr_owner_type_opt custom_type ASSIGN comp_qstring
-			| D_CUSTOM customattr_owner_type_opt custom_type ASSIGN bytes_list
-                          {
-                                $$ = new CustomAttr ((BaseMethodRef) $3, new ByteArrConst ((byte[]) $5));
-                          }
-            | D_CUSTOM customattr_owner_type_opt custom_type ASSIGN OPEN_BRACE customattr_values CLOSE_BRACE
-              {
-            	$$ = new CustomAttr ((BaseMethodRef) $3, (PEAPI.Constant) $6);
-              }
-			;
-
-// TODO: unused for now
-customattr_owner_type_opt
-			: /* empty */
-			| OPEN_PARENS type CLOSE_PARENS
-			;
-
-customattr_values
-				: /* empty */
-				| K_BOOL OPEN_BRACKET int32 CLOSE_BRACKET OPEN_PARENS opt_truefalse_list CLOSE_PARENS
-				  {
-			  		var l = (List<BoolConst>) $6;
-			  		$$ = new ArrayConstant (l?.ToArray ()) {
-			  			ExplicitSize = (int) $3
-			  		};
-				  }
-				| K_BYTEARRAY bytes_list
-                 {
-    				$$ = new ByteArrConst ((byte[]) $2);
-                 }
-				| K_STRING OPEN_PARENS SQSTRING CLOSE_PARENS
-				  {
-					$$ = new StringConst ((string) $3);
-				  }
-				| customattr_ctor_args
-				  {
-				  	var c = $1 as Constant;
-			  		$$ = c ?? new ArrayConstant (((List<DataConstant>) $1).ToArray ());
-				  }
-				;
-
-customattr_ctor_args
-				: customattr_ctor_arg
-				| customattr_ctor_args customattr_ctor_arg
-				  {
-				  	var l = $1 as List<DataConstant>;
-				  	if (l == null) {
-				  		l = new List<DataConstant> () {
-				  			(DataConstant) $1
-				  		};
-				  	}
-
-				  	l.Add ((DataConstant) $2);
-				  	$$ = l;
-				  }
-				;
-
-customattr_ctor_arg
-				: field_init_primitive
-				| K_TYPE OPEN_PARENS type CLOSE_PARENS
-				  {
-				  	$$ = new StringConst (((TypeRef) $3).FullName);
-				  }
-				;
-
-			
-custom_type		: call_conv type type_spec DOUBLE_COLON method_name OPEN_PARENS type_list CLOSE_PARENS
-                          {
-                                BaseTypeRef owner = (BaseTypeRef) $3;
-                                ArrayList arg_list = (ArrayList) $7;
-                                BaseTypeRef[] param_list;
-  
-                                if (arg_list != null)
-                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
-                                else
-                                        param_list = new BaseTypeRef[0];
-
-                                $$ = owner.GetMethodRef ((BaseTypeRef) $2,
-                                        (CallConv) $1, (string) $5, param_list, 0);
-                          }
-			| call_conv type method_name OPEN_PARENS type_list CLOSE_PARENS
-                          {
-                                ArrayList arg_list = (ArrayList) $5;
-                                BaseTypeRef[] param_list;
-  
-                                if (arg_list != null)
-                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
-                                else
-                                        param_list = new BaseTypeRef[0];
-
-                                $$ = codegen.GetGlobalMethodRef ((BaseTypeRef) $2, (CallConv) $1,
-                                        (string) $3, param_list, 0);
-                          }
-			;
-
-sec_decl		: D_PERMISSION sec_action type_spec OPEN_PARENS nameval_pairs CLOSE_PARENS
-			  {
-                                $$ = TypeSpecToPermPair ($2, $3, (ArrayList) $5);
-			  }
-			| D_PERMISSION sec_action type_spec
-			  {
-                                $$ = TypeSpecToPermPair ($2, $3, null);
-			  }
-			| D_PERMISSIONSET sec_action ASSIGN bytes_list
-			  {
-				System.Text.UnicodeEncoding ue = new System.Text.UnicodeEncoding ();
-				PermissionSetAttribute psa = new PermissionSetAttribute ((System.Security.Permissions.SecurityAction) (short) $2);
-				psa.XML = ue.GetString ((byte []) $4);
-				$$ = new PermPair ((PEAPI.SecurityAction) $2, psa.CreatePermissionSet ());
-			  }
-			| D_PERMISSIONSET sec_action comp_qstring
-			  {
-				PermissionSetAttribute psa = new PermissionSetAttribute ((System.Security.Permissions.SecurityAction) (short) $2);
-				psa.XML = (string) $3;
-				$$ = new PermPair ((PEAPI.SecurityAction) $2, psa.CreatePermissionSet ());
-			  }
-			| D_PERMISSIONSET sec_action ASSIGN OPEN_BRACE permissions CLOSE_BRACE
-			  {
-				$$ = new MIPermissionSet ((PEAPI.SecurityAction) $2, (ArrayList) $5);
-			  }
-			;
-
-permissions		: permission
-			  {
-				ArrayList list = new ArrayList ();
-				list.Add ($1);
-				$$ = list;
-			  }
-			| permissions COMMA permission
-			  {
-				ArrayList list = (ArrayList) $1;
-				list.Add ($3);
-				$$ = list;
-			  }
-			;
-			
-permission		: class_ref ASSIGN OPEN_BRACE permission_members CLOSE_BRACE
-			  {
-				$$ = new MIPermission ((BaseTypeRef) $1, (ArrayList) $4);
-			  }
-			;
-
-permission_members	: permission_member
-			  {
-				  ArrayList list = new ArrayList ();
-				  list.Add ($1);
-				  $$ = list;
-			  }
-			| permission_members permission_member
-			  {
-				  ArrayList list = (ArrayList) $1;
-				  list.Add ($2);
-				  $$ = list;
-			  }
-			;
-
-permission_member	: prop_or_field primitive_type perm_mbr_nameval_pair
-			  {
-				NameValuePair pair = (NameValuePair) $3;
-				$$ = new PermissionMember ((MemberTypes) $1, (BaseTypeRef) $2, pair.Name, pair.Value);
-			  }
-			| prop_or_field K_ENUM class_ref perm_mbr_nameval_pair
-			  {
-				NameValuePair pair = (NameValuePair) $4;
-				$$ = new PermissionMember ((MemberTypes) $1, (BaseTypeRef) $3, pair.Name, pair.Value);
-			  }
-			;
-
-perm_mbr_nameval_pair	: SQSTRING ASSIGN member_init
-			  {
-				$$ = new NameValuePair ((string) $1, (PEAPI.Constant) $3);
-			  }
-			;
-
-prop_or_field		: K_PROPERTY
-			  {
-				$$ = MemberTypes.Property;
-			  }
-			| K_FIELD
-			  {
-				$$ = MemberTypes.Field;
-			  }
-			;
-
-nameval_pairs		: nameval_pair 
-			  {
-				ArrayList pairs = new ArrayList ();
-				pairs.Add ($1);
-				$$ = pairs;
-			  }
-			| nameval_pairs COMMA nameval_pair
-			  {
-			  	ArrayList pairs = (ArrayList) $1;
-				pairs.Add ($3);
-				$$ = pairs;
-			  }
-			;
-
-nameval_pair 		: comp_qstring ASSIGN cavalue
-			  {
-				$$ = new NameValuePair ((string) $1, $3);
-			  }
-			;
-
-cavalue 		: truefalse
-			| int32
-			| int32 OPEN_PARENS int32 CLOSE_PARENS
-			  {
-				$$ = $3;
-			  }
-			| comp_qstring 
-			| class_ref OPEN_PARENS K_INT8 COLON int32 CLOSE_PARENS
-			  {
-				$$ = ClassRefToObject ($1, (byte) (int) $5);
-			  }
-			| class_ref OPEN_PARENS K_INT16 COLON int32 CLOSE_PARENS
-			  {
-				$$ = ClassRefToObject ($1, (short) (int) $5);
-			  }
-			| class_ref OPEN_PARENS K_INT32 COLON int32 CLOSE_PARENS
-			  {
-				$$ = ClassRefToObject ($1, (int) $5);
-			  }
-			| class_ref OPEN_PARENS int32 CLOSE_PARENS
-			  {
-				$$ = ClassRefToObject ($1, (int) $3);
-			  }
-			;
-
-sec_action		: K_REQUEST
-			  {
-				$$ = PEAPI.SecurityAction.Request;
-			  }
-			| K_DEMAND
-			  {
-				$$ = PEAPI.SecurityAction.Demand;
-			  }
-			| K_ASSERT
-			  {
-				$$ = PEAPI.SecurityAction.Assert;
-			  }
-			| K_DENY
-			  {
-				$$ = PEAPI.SecurityAction.Deny;
-			  }
-			| K_PERMITONLY
-			  {
-				$$ = PEAPI.SecurityAction.PermitOnly;
-			  }
-			| K_LINKCHECK
-			  {
-				$$ = PEAPI.SecurityAction.LinkDemand;
-			  }
-			| K_INHERITCHECK
-			  {
-				$$ = PEAPI.SecurityAction.InheritDemand;
-			  }
-			| K_REQMIN
-			  {
-				$$ = PEAPI.SecurityAction.RequestMinimum;
-			  }
-			| K_REQOPT
-			  {
-				$$ = PEAPI.SecurityAction.RequestOptional;
-			  }
-			| K_REQREFUSE
-			  {
-				$$ = PEAPI.SecurityAction.RequestRefuse;
-			  }
-			| K_PREJITGRANT
-			  {
-				$$ = PEAPI.SecurityAction.PreJitGrant;
-			  }
-			| K_PREJITDENY
-			  {
-				$$ = PEAPI.SecurityAction.PreJitDeny;
-			  }
-			| K_NONCASDEMAND
-			  {
-				$$ = PEAPI.SecurityAction.NonCasDemand;
-			  }
-			| K_NONCASLINKDEMAND
-			  {
-				$$ = PEAPI.SecurityAction.NonCasLinkDemand;
-			  }
-			| K_NONCASINHERITANCE
-			  {
-				$$ = PEAPI.SecurityAction.NonCasInheritance;
-			  }
-			/* FIXME: Should we have LinkDemandChoice, InheritDemandChoice and DemandChoice ? */  
-			;
-
-module_head		: D_MODULE
-                          {
-                          }
-			| D_MODULE comp_name
-                          {
-                                codegen.SetModuleName ((string) $2);
-                          }
-			| D_MODULE K_EXTERN comp_name
-                          {
-                                codegen.ExternTable.AddModule ((string) $3);                         
-                          }
-			;
-
-file_decl		: D_FILE file_attr comp_name file_entry D_HASH ASSIGN
-			  bytes_list file_entry
-                          {
-                                codegen.SetFileRef (new FileRef ((string) $3, (byte []) $7, (bool) $2, (bool) $8)); 
-                          }
-			| D_FILE file_attr comp_name file_entry
-                          {
-                                // We need to compute the hash ourselves. :-(
-                                // AssemblyName an = AssemblyName.GetName ((string) $3);
-                          }
-			;
-
-file_attr 		: /* EMPTY */
-                          {
-                                $$ = true;
-                          }
-			| file_attr K_NOMETADATA
-                          {
-                                $$ = false;
-                          }
-			;
-
-file_entry		: /* EMPTY */
-                          {
-                                $$ = false;
-                          }
-			| D_ENTRYPOINT
-                          {
-                                $$ = true;
-                          }
-			;
-
-assembly_all		: assembly_head OPEN_BRACE assembly_decls CLOSE_BRACE
-			  {
-				codegen.CurrentCustomAttrTarget = null;
-				codegen.CurrentDeclSecurityTarget = null;
-			  }
-			;
-
-assembly_head		: D_ASSEMBLY legacylibrary_opt asm_attr slashed_name
-                          {
-                                codegen.SetThisAssembly ((string) $4, (PEAPI.AssemAttr) $3);
-                                codegen.CurrentCustomAttrTarget = codegen.ThisAssembly;
-				codegen.CurrentDeclSecurityTarget = codegen.ThisAssembly;
-                          }
-			;
-
-asm_attr		: /* EMPTY */
-			  {
-				  $$ = new PEAPI.AssemAttr ();
-			  }
-			/*| asm_attr K_NOAPPDOMAIN
-			| asm_attr K_NOPROCESS
-			| asm_attr K_NOMACHINE*/
-			| asm_attr K_RETARGETABLE
-			  {
-				  $$ = ((PEAPI.AssemAttr) $1) | PEAPI.AssemAttr.Retargetable;
-			  }
-			;
-
-assembly_decls		: /* EMPTY */
-			| assembly_decls assembly_decl
-			;
-
-assembly_decl		: D_PUBLICKEY ASSIGN bytes_list
-			  {
-				codegen.ThisAssembly.SetPublicKey ((byte []) $3);
-			  }
-			| D_VER int32 COLON int32 COLON int32 COLON int32
-			  {
-				codegen.ThisAssembly.SetVersion ((int) $2, (int) $4, (int) $6, (int) $8);
-			  }
-			| D_LOCALE comp_qstring
-			  {
-				codegen.ThisAssembly.SetLocale ((string) $2);
-			  }
-			| D_LOCALE ASSIGN bytes_list
-			| D_HASH K_ALGORITHM int32
-			  {
-				codegen.ThisAssembly.SetHashAlgorithm ((int) $3);
-			  }
-			| customattr_decl
-			  {
-				codegen.ThisAssembly.AddCustomAttribute ((CustomAttr) $1);
-			  }
-			| sec_decl
-			  {
-				AddSecDecl ($1, true);
-			  }
-			;
-
-asm_or_ref_decl		: D_PUBLICKEY ASSIGN bytes_list
-			| D_VER int32 COLON int32 COLON int32 COLON int32 
-			| D_LOCALE comp_qstring
-			| D_LOCALE ASSIGN bytes_list
-			| customattr_decl
-			;
-
-assemblyref_all		: assemblyref_head OPEN_BRACE assemblyref_decls CLOSE_BRACE
-			;
-
-assemblyref_head	: D_ASSEMBLY K_EXTERN legacylibrary_opt asm_attr slashed_name
-                          {
-                                System.Reflection.AssemblyName asmb_name = 
-					new System.Reflection.AssemblyName ();
-				asmb_name.Name = (string) $5;
-				codegen.BeginAssemblyRef ((string) $5, asmb_name, (PEAPI.AssemAttr) $4);
-                          }
-			| D_ASSEMBLY K_EXTERN legacylibrary_opt asm_attr slashed_name K_AS slashed_name
-                          {
-                                System.Reflection.AssemblyName asmb_name = 
-					new System.Reflection.AssemblyName ();
-				asmb_name.Name = (string) $5;
-				codegen.BeginAssemblyRef ((string) $7, asmb_name, (PEAPI.AssemAttr) $4);
-                          }
-			;
-
-assemblyref_decls	: /* EMPTY */
-			| assemblyref_decls assemblyref_decl
-			;
-
-assemblyref_decl	: D_VER int32 COLON int32 COLON int32 COLON int32
-                          {
-                                codegen.CurrentAssemblyRef.SetVersion ((int) $2, (int) $4, (int) $6, (int) $8);
-                          }
-                        | D_PUBLICKEY ASSIGN bytes_list
-                          {
-                                codegen.CurrentAssemblyRef.SetPublicKey ((byte []) $3);
-                          }
-                        | D_PUBLICKEYTOKEN ASSIGN bytes_list
-                          {
-                                codegen.CurrentAssemblyRef.SetPublicKeyToken ((byte []) $3);
-                          }
-			| D_LOCALE comp_qstring
-                          {
-                                codegen.CurrentAssemblyRef.SetLocale ((string) $2);
-                          }
-			| D_LOCALE ASSIGN bytes_list
-			
-                        | D_HASH ASSIGN bytes_list
-                          {
-                                codegen.CurrentAssemblyRef.SetHash ((byte []) $3);
-                          }
-                        | customattr_decl
-                          {
-                                if (codegen.CurrentCustomAttrTarget != null)
-                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
-                          }
-            | K_AUTO  /* MS ilasm uses this keyword to lookup the specified assembly in the GAC and embeds its attributes, we just ignore it */
-			;
-
-exptype_all		: exptype_head OPEN_BRACE exptype_decls CLOSE_BRACE
-			;
-
-exptype_head		: D_CLASS K_EXTERN expt_attr comp_name
-					{
-						current_extern = new KeyValuePair<string, TypeAttr> ((string) $4, (TypeAttr) $3);
-					}
-			;
-
-expt_attr 		: { $$ = 0; } /* EMPTY */
-			| expt_attr K_PRIVATE                   { $$ = (TypeAttr)$1 | TypeAttr.Private; }
-			| expt_attr K_PUBLIC                    { $$ = (TypeAttr)$1 | TypeAttr.Public; }
-			| expt_attr K_NESTED K_PUBLIC           { $$ = (TypeAttr)$1 | TypeAttr.NestedPublic; }
-			| expt_attr K_NESTED K_PRIVATE          { $$ = (TypeAttr)$1 | TypeAttr.NestedPrivate; }
-			| expt_attr K_NESTED K_FAMILY           { $$ = (TypeAttr)$1 | TypeAttr.NestedFamily; }
-			| expt_attr K_NESTED K_ASSEMBLY         { $$ = (TypeAttr)$1 | TypeAttr.NestedAssembly;}
-			| expt_attr K_NESTED K_FAMANDASSEM      { $$ = (TypeAttr)$1 | TypeAttr.NestedFamAndAssem; }
-			| expt_attr K_NESTED K_FAMORASSEM       { $$ = (TypeAttr)$1 | TypeAttr.NestedFamOrAssem; }
-			| K_FORWARDER                           { $$ = TypeAttr.Forwarder; }
-			;
-
-exptype_decls		: /* EMPTY */
-			| exptype_decls exptype_decl
-			;
-
-exptype_decl		: D_FILE comp_name
-			| D_CLASS K_EXTERN comp_name
-			| customattr_decl
-			| D_ASSEMBLY K_EXTERN comp_name
-			  {
-			  	codegen.ExternTable.AddClass (current_extern.Key, current_extern.Value, (string) $3);
-			  }
-			;
-
-manifestres_all		: manifestres_head OPEN_BRACE manifestres_decls CLOSE_BRACE
-			;
-
-manifestres_head	: D_MRESOURCE manres_attr comp_name
-			  {
-				FileStream s = new FileStream ((string) $3, FileMode.Open, FileAccess.Read);
-				byte [] buff = new byte [s.Length];
-				s.Read (buff, 0, (int) s.Length);
-				s.Close ();
-
-				codegen.AddManifestResource (new ManifestResource ((string) $3, buff, ($2 == null) ? 0 : (uint) $2));
-			  }
-			;
-
-manres_attr		: /* EMPTY */
-			| manres_attr K_PUBLIC { $$ = ManifestResource.PublicResource; }
-			| manres_attr K_PRIVATE { $$ = ManifestResource.PrivateResource; } 
-			;
-
-manifestres_decls	: /* EMPTY */
-			| manifestres_decls manifestres_decl
-			;
-
-manifestres_decl	: D_FILE comp_name K_AT int32
-			| D_ASSEMBLY K_EXTERN slashed_name
-			| customattr_decl
-			;
-
-comp_qstring		: QSTRING
-			| comp_qstring PLUS QSTRING 	{ $$ = String.Format ("{0}{1}", $1, $3); }
-			;
-
-int32			: INT64
-                          {
-                                long l = (long) $1;
-                                byte[] intb = BitConverter.GetBytes (l);
-                                $$ = BitConverter.ToInt32 (intb, BitConverter.IsLittleEndian ? 0 : 4);
-                          }
-			;
-
-int64		        : INT64
-			;
-
-float64			: FLOAT64
-			| K_FLOAT32 OPEN_PARENS INT32 CLOSE_PARENS
-                          {
-                                int i = (int) $3;
-                                byte[] intb = BitConverter.GetBytes (i);
-                                $$ = (double) BitConverter.ToSingle (intb, 0);
-                          }
-                        | K_FLOAT32 OPEN_PARENS INT64 CLOSE_PARENS
-                          {
-                                long l = (long) $3;
-                                byte[] intb = BitConverter.GetBytes (l);
-                                $$ = (double) BitConverter.ToSingle (intb, BitConverter.IsLittleEndian ? 0 : 4);
-                          }
-			| K_FLOAT64 OPEN_PARENS INT64 CLOSE_PARENS
-                          {
-                                byte[] intb = BitConverter.GetBytes ((long) $3);
-				$$ = BitConverter.ToDouble (intb, 0);
-                          }
-                        | K_FLOAT64 OPEN_PARENS INT32 CLOSE_PARENS
-                          {
-                                byte[] intb = BitConverter.GetBytes ((int) $3);
-                                $$ = (double) BitConverter.ToSingle (intb, 0);
-                          }
-			;
-
-hexbyte			: HEXBYTE       { }
-			;
-
-bytes_list              : OPEN_PARENS
-                          {
-                                tokenizer.InByteArray = true;
-                          }
-                          bytes CLOSE_PARENS
-                          {
-                                $$ = $3;
-                                tokenizer.InByteArray = false;
-                          }
-                        ;
-
-bytes 			: /* EMPTY */   { $$ = new byte[0]; }
-			| hexbytes
-                          {
-                                ArrayList byte_list = (ArrayList) $1;
-                                $$ = byte_list.ToArray (typeof (byte));
-                          }
-			;
-
-hexbytes		: hexbyte
-                          {
-                                ArrayList byte_list = new ArrayList ();
-                                byte_list.Add (Convert.ToByte ($1));
-                                $$ = byte_list;
-                          }
-			| hexbytes hexbyte
-                          {
-                                ArrayList byte_list = (ArrayList) $1;
-                                byte_list.Add (Convert.ToByte ($2));
-                          }
-			;
-
-truefalse		: K_TRUE
-                          {
-                                $$ = true;
-                          }
-			| K_FALSE
-                          {
-                                $$ = false;
-                          }
-			;
-
-id			: ID
-			| SQSTRING
-			;
-
-comp_name		: id
-			| comp_name DOT comp_name
-                          {
-                                $$ = (string) $1 + '.' + (string) $3;
-                          }
-                        | COMP_NAME
-			;
-
-semicolon_opt
-			: /* empty */
-			| SEMICOLON
-			;
-
-legacylibrary_opt	: /* empty */
-					| K_LEGACY K_LIBRARY  /* MS ilasm has these keywords for backwards compatibility, we just ignore them */
-					;
-
-%%
-
-}
-
+%{
+//
+// Mono::ILASM::ILParser
+// 
+// (C) Sergey Chaban (serge@wildwestsoftware.com)
+// (C) 2003 Jackson Harper, All rights reserved
+//
+
+using PEAPI;
+using System;
+using System.IO;
+using System.Collections;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Reflection;
+using System.Security;
+using System.Security.Permissions;
+
+using MIPermission = Mono.ILASM.Permission;
+using MIPermissionSet = Mono.ILASM.PermissionSet;
+
+namespace Mono.ILASM {
+
+	public class ILParser {
+
+		private CodeGen codegen;
+
+		private bool is_value_class;
+		private bool is_enum_class;
+                private bool pinvoke_info;
+                private string pinvoke_mod;
+                private string pinvoke_meth;
+                private PEAPI.PInvokeAttr pinvoke_attr;
+                private ILTokenizer tokenizer;
+		static int yacc_verbose_flag;
+		KeyValuePair<string, TypeAttr> current_extern;
+
+                class NameValuePair {
+                        public string Name;
+                        public object Value;
+
+                        public NameValuePair (string name, object value)
+                        {
+                                this.Name = name;
+                                this.Value = value;
+                        }
+                }
+
+                class PermPair {
+                        public PEAPI.SecurityAction sec_action;
+                        public object perm;
+
+                        public PermPair (PEAPI.SecurityAction sec_action, object perm)
+                        {
+                                this.sec_action = sec_action;
+                                this.perm = perm;
+                        }
+                }
+
+                public bool CheckSecurityActionValidity (System.Security.Permissions.SecurityAction action, bool for_assembly)
+                {
+                        if ((action == System.Security.Permissions.SecurityAction.RequestMinimum || 
+                                action == System.Security.Permissions.SecurityAction.RequestOptional || 
+                                action == System.Security.Permissions.SecurityAction.RequestRefuse) && !for_assembly) {
+                                Report.Warning (String.Format ("System.Security.Permissions.SecurityAction '{0}' is not valid for this declaration", action));
+                                return false;
+                        }
+
+                        return true;
+                }
+
+		public void AddSecDecl (object perm, bool for_assembly)
+		{
+			PermPair pp = perm as PermPair;
+
+			if (pp == null) {
+				MIPermissionSet ps_20 = (MIPermissionSet) perm;
+				codegen.AddPermission (ps_20.SecurityAction, ps_20);
+				return;
+			}
+
+			if (!CheckSecurityActionValidity ((System.Security.Permissions.SecurityAction) pp.sec_action, for_assembly))
+				Report.Error (String.Format ("Invalid security action : {0}", pp.sec_action));
+
+			codegen.AddPermission (pp.sec_action, pp.perm);
+		}
+
+                public object ClassRefToObject (object class_ref, object val)
+                {
+                        ExternTypeRef etr = class_ref as ExternTypeRef;
+                        if (etr == null)
+                                /* FIXME: report error? can be PrimitiveTypeRef or TypeRef */
+                                return null;
+                                
+                        System.Type t = etr.GetReflectedType ();
+                        return (t.IsEnum ? Enum.Parse (t, String.Format ("{0}", val)) : val);
+                }
+
+		/* Converts a type_spec to a corresponding PermPair */
+                PermPair TypeSpecToPermPair (object action, object type_spec, ArrayList pairs)
+                {
+                        ExternTypeRef etr = type_spec as ExternTypeRef;
+                        if (etr == null)
+                                /* FIXME: could be PrimitiveTypeRef or TypeRef 
+                                          Report what error? */
+                                return null;
+
+                        System.Type t = etr.GetReflectedType ();
+                        object obj = Activator.CreateInstance (t, 
+                                                new object [] {(System.Security.Permissions.SecurityAction) (short) action});
+
+                        if (pairs != null)
+                                foreach (NameValuePair pair in pairs) {
+                                        PropertyInfo pi = t.GetProperty (pair.Name);
+                                        pi.SetValue (obj, pair.Value, null);
+                                }
+
+                        IPermission iper = (IPermission) t.GetMethod ("CreatePermission").Invoke (obj, null);
+                        return new PermPair ((PEAPI.SecurityAction) action, iper);
+                }
+
+		public ILParser (CodeGen codegen, ILTokenizer tokenizer)
+                {
+			this.codegen = codegen;
+                        this.tokenizer = tokenizer;
+		}
+
+		public CodeGen CodeGen {
+			get { return codegen; }
+		}
+
+                private BaseTypeRef GetTypeRef (BaseTypeRef b)
+                {
+                        //FIXME: Caching required.. 
+                        return b.Clone ();
+                }
+
+%}
+
+%token EOF
+
+/* ID - alpha-numeric identifier */
+%token ID
+
+/* QSTRING - quoted string */
+%token QSTRING
+
+/* SQSTRING - single quoted string */
+%token SQSTRING
+
+/* COMP_NAME - A name with dots */
+%token COMP_NAME
+
+/* INT32 - 32 bit integer */
+%token INT32
+
+/* INT64 - 64 bit integer */
+%token INT64
+
+/* FLOAT64 - floating point number */
+%token FLOAT64
+
+/* HEXBYTE - two digit hex number */
+%token HEXBYTE
+
+
+/* Punctuation */
+%token DOT           "."
+%token OPEN_BRACE    "{"
+%token CLOSE_BRACE   "}"
+%token OPEN_BRACKET  "["
+%token CLOSE_BRACKET "]"
+%token OPEN_PARENS   "("
+%token CLOSE_PARENS  ")"
+%token COMMA         ","
+%token COLON         ":"
+%token DOUBLE_COLON  "::"
+%token SEMICOLON     ";"
+%token ASSIGN        "="
+%token STAR          "*"
+%token AMPERSAND     "&"
+%token PLUS          "+"
+%token SLASH         "/"
+%token BANG          "!"
+%token ELLIPSIS      "..."
+%token DASH          "-"
+%token OPEN_ANGLE_BRACKET   "<"
+%token CLOSE_ANGLE_BRACKET  ">"
+
+
+
+%token UNKNOWN
+
+
+/* INSTR_* instruction types */
+%token INSTR_NONE
+%token INSTR_VAR
+%token INSTR_I
+%token INSTR_I8
+%token INSTR_R
+%token INSTR_BRTARGET
+%token INSTR_METHOD
+%token INSTR_NEWOBJ
+%token INSTR_FIELD
+%token INSTR_TYPE
+%token INSTR_STRING
+%token INSTR_SIG
+%token INSTR_RVA
+%token INSTR_TOK
+%token INSTR_SWITCH
+%token INSTR_PHI
+%token INSTR_LOCAL
+%token INSTR_PARAM
+
+
+
+
+
+/* Mechanically generated  - DO NOT EDIT! */
+
+
+/* Directives */
+%token D_ADDON
+%token D_ALGORITHM
+%token D_ASSEMBLY
+%token D_BACKING
+%token D_BLOB
+%token D_CAPABILITY
+%token D_CCTOR
+%token D_CLASS
+%token D_COMTYPE
+%token D_CONFIG
+%token D_IMAGEBASE
+%token D_CORFLAGS
+%token D_CTOR
+%token D_CUSTOM
+%token D_DATA
+%token D_EMITBYTE
+%token D_ENTRYPOINT
+%token D_EVENT
+%token D_EXELOC
+%token D_EXPORT
+%token D_FIELD
+%token D_FILE
+%token D_FIRE
+%token D_GET
+%token D_HASH
+%token D_IMPLICITCOM
+%token D_LANGUAGE
+%token D_LINE
+%token D_XLINE
+%token D_LOCALE
+%token D_LOCALS
+%token D_MANIFESTRES
+%token D_MAXSTACK
+%token D_METHOD
+%token D_MIME
+%token D_MODULE
+%token D_MRESOURCE
+%token D_NAMESPACE
+%token D_ORIGINATOR
+%token D_OS
+%token D_OTHER
+%token D_OVERRIDE
+%token D_PACK
+%token D_PARAM
+%token D_PERMISSION
+%token D_PERMISSIONSET
+%token D_PROCESSOR
+%token D_PROPERTY
+%token D_PUBLICKEY
+%token D_PUBLICKEYTOKEN
+%token D_REMOVEON
+%token D_SET
+%token D_SIZE
+%token D_STACKRESERVE
+%token D_SUBSYSTEM
+%token D_TITLE
+%token D_TRY
+%token D_VER
+%token D_VTABLE
+%token D_VTENTRY
+%token D_VTFIXUP
+%token D_ZEROINIT
+
+
+/* Keywords */
+%token K_AT
+%token K_AS
+%token K_IMPLICITCOM
+%token K_IMPLICITRES
+%token K_NOAPPDOMAIN
+%token K_NOPROCESS
+%token K_NOMACHINE
+%token K_EXTERN
+%token K_INSTANCE
+%token K_EXPLICIT
+%token K_DEFAULT
+%token K_VARARG
+%token K_UNMANAGED
+%token K_CDECL
+%token K_STDCALL
+%token K_THISCALL
+%token K_FASTCALL
+%token K_MARSHAL
+%token K_IN
+%token K_OUT
+%token K_OPT
+// %token K_LCID
+//%token K_RETVAL
+%token K_STATIC
+%token K_PUBLIC
+%token K_PRIVATE
+%token K_FAMILY
+%token K_INITONLY
+%token K_RTSPECIALNAME
+%token K_STRICT
+%token K_SPECIALNAME
+%token K_ASSEMBLY
+%token K_FAMANDASSEM
+%token K_FAMORASSEM
+%token K_PRIVATESCOPE
+%token K_LITERAL
+%token K_NOTSERIALIZED
+%token K_VALUE
+%token K_NOT_IN_GC_HEAP
+%token K_INTERFACE
+%token K_SEALED
+%token K_ABSTRACT
+%token K_AUTO
+%token K_SEQUENTIAL
+%token K_ANSI
+%token K_UNICODE
+%token K_AUTOCHAR
+%token K_BESTFIT
+%token K_IMPORT
+%token K_SERIALIZABLE
+%token K_NESTED
+%token K_LATEINIT
+%token K_EXTENDS
+%token K_IMPLEMENTS
+%token K_FINAL
+%token K_VIRTUAL
+%token K_HIDEBYSIG
+%token K_NEWSLOT
+%token K_UNMANAGEDEXP
+%token K_PINVOKEIMPL
+%token K_NOMANGLE
+%token K_OLE
+%token K_LASTERR
+%token K_WINAPI
+%token K_NATIVE
+%token K_IL
+%token K_CIL
+%token K_OPTIL
+%token K_MANAGED
+%token K_FORWARDREF
+%token K_RUNTIME
+%token K_INTERNALCALL
+%token K_SYNCHRONIZED
+%token K_NOINLINING
+%token K_CUSTOM
+%token K_FIXED
+%token K_SYSSTRING
+%token K_ARRAY
+%token K_VARIANT
+%token K_CURRENCY
+%token K_SYSCHAR
+%token K_VOID
+%token K_BOOL
+%token K_INT8
+%token K_INT16
+%token K_INT32
+%token K_INT64
+%token K_FLOAT32
+%token K_FLOAT64
+%token K_ERROR
+%token K_UNSIGNED
+%token K_UINT
+%token K_UINT8
+%token K_UINT16
+%token K_UINT32
+%token K_UINT64
+%token K_DECIMAL
+%token K_DATE
+%token K_BSTR
+%token K_LPSTR
+%token K_LPWSTR
+%token K_LPTSTR
+%token K_OBJECTREF
+%token K_IUNKNOWN
+%token K_IDISPATCH
+%token K_STRUCT
+%token K_SAFEARRAY
+%token K_INT
+%token K_BYVALSTR
+%token K_TBSTR
+%token K_LPVOID
+%token K_ANY
+%token K_FLOAT
+%token K_LPSTRUCT
+%token K_NULL
+%token K_PTR
+%token K_VECTOR
+%token K_HRESULT
+%token K_CARRAY
+%token K_USERDEFINED
+%token K_RECORD
+%token K_FILETIME
+%token K_BLOB
+%token K_STREAM
+%token K_STORAGE
+%token K_STREAMED_OBJECT
+%token K_STORED_OBJECT
+%token K_BLOB_OBJECT
+%token K_CF
+%token K_CLSID
+%token K_METHOD
+%token K_CLASS
+%token K_PINNED
+%token K_MODREQ
+%token K_MODOPT
+%token K_TYPEDREF
+%token K_TYPE
+%token K_WCHAR
+%token K_CHAR
+%token K_FROMUNMANAGED
+%token K_CALLMOSTDERIVED
+%token K_BYTEARRAY
+%token K_WITH
+%token K_INIT
+%token K_TO
+%token K_CATCH
+%token K_FILTER
+%token K_FINALLY
+%token K_FAULT
+%token K_HANDLER
+%token K_TLS
+%token K_FIELD
+%token K_PROPERTY
+%token K_REQUEST
+%token K_DEMAND
+%token K_ASSERT
+%token K_DENY
+%token K_PERMITONLY
+%token K_LINKCHECK
+%token K_INHERITCHECK
+%token K_REQMIN
+%token K_REQOPT
+%token K_REQREFUSE
+%token K_PREJITGRANT
+%token K_PREJITDENY
+%token K_NONCASDEMAND
+%token K_NONCASLINKDEMAND
+%token K_NONCASINHERITANCE
+%token K_READONLY
+%token K_NOMETADATA
+%token K_ALGORITHM
+%token K_FULLORIGIN
+// %token K_NAN
+// %token K_INF
+// %token K_PUBLICKEY
+%token K_ENABLEJITTRACKING
+%token K_DISABLEJITOPTIMIZER
+%token K_RETARGETABLE
+%token K_PRESERVESIG
+%token K_BEFOREFIELDINIT
+%token K_ALIGNMENT
+%token K_NULLREF
+%token K_VALUETYPE
+%token K_COMPILERCONTROLLED
+%token K_REQSECOBJ
+%token K_ENUM
+%token K_OBJECT
+%token K_STRING
+%token K_TRUE
+%token K_FALSE
+%token K_IS
+%token K_ON
+%token K_OFF
+%token K_FORWARDER
+%token K_CHARMAPERROR
+%token K_LEGACY
+%token K_LIBRARY
+%token K_AUTO
+
+/* end generated */
+
+
+
+
+
+%start il_file
+
+%%
+
+il_file			: decls
+			;
+
+decls			: /* EMPTY */
+			| decls decl
+			;
+
+decl			: class_all
+			| namespace_all
+			| method_all
+			| field_decl
+			| data_decl
+			| vtfixup_decl
+			| file_decl
+			| assembly_all
+			| assemblyref_all
+			| exptype_all
+			| manifestres_all
+			| module_head
+			| sec_decl
+			| customattr_decl
+			  {
+				if (codegen.CurrentCustomAttrTarget != null)
+					codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
+			  }
+			| D_SUBSYSTEM int32
+                          {
+                                codegen.SetSubSystem ((int) $2);
+                          }
+			| D_CORFLAGS int32
+                          {
+                                codegen.SetCorFlags ((int) $2);
+                          }
+			| D_FILE K_ALIGNMENT int32
+			| D_IMAGEBASE int64
+                          {
+                                codegen.SetImageBase ((long) $2);
+                          }
+			| D_STACKRESERVE int64
+                          {
+				codegen.SetStackReserve ((long)	$2);
+                          }
+			| extsource_spec
+			| language_decl
+			;
+
+extsource_spec		: D_LINE int32 SQSTRING
+			| D_LINE int32
+			| D_LINE int32 COLON int32 SQSTRING
+			| D_LINE int32 COLON int32
+			;
+
+language_decl		: D_LANGUAGE SQSTRING
+			| D_LANGUAGE SQSTRING COMMA SQSTRING
+			| D_LANGUAGE SQSTRING COMMA SQSTRING COMMA SQSTRING
+			;
+
+                        
+vtfixup_decl		: D_VTFIXUP OPEN_BRACKET int32 CLOSE_BRACKET 
+			  vtfixup_attr K_AT id
+			;
+
+vtfixup_attr		: /* EMPTY */
+			| vtfixup_attr K_INT32
+			| vtfixup_attr K_INT64
+			| vtfixup_attr K_FROMUNMANAGED
+			| vtfixup_attr K_CALLMOSTDERIVED
+			;
+
+namespace_all		: namespace_head OPEN_BRACE decls CLOSE_BRACE
+                          {
+                                codegen.CurrentNameSpace = null;
+                          }
+			;
+
+namespace_head		: D_NAMESPACE comp_name
+                          {
+                                codegen.CurrentNameSpace = (string) $2;
+                          }
+			;
+
+class_all		: class_head OPEN_BRACE class_decls CLOSE_BRACE
+                          {
+                                codegen.EndTypeDef ();
+                          }
+			;
+
+class_head 		: D_CLASS class_attr comp_name formal_typars_clause extends_clause
+                          impl_clause
+                          {
+                                codegen.BeginTypeDef ((TypeAttr) $2, (string) $3, 
+						$5 as BaseClassRef, $6 as ArrayList, null, (GenericParameters) $4);
+				
+				if (is_value_class)
+					codegen.CurrentTypeDef.MakeValueClass ();
+				if (is_enum_class)
+					codegen.CurrentTypeDef.MakeEnumClass ();
+                          }
+			;
+
+class_attr		: /* EMPTY */                           
+			  { 
+				// Reset some flags
+				is_value_class = false;
+				is_enum_class = false;
+				$$ = new TypeAttr ();
+			  }
+			| class_attr K_PUBLIC                   { $$ = (TypeAttr)$1 | TypeAttr.Public; }        
+			| class_attr K_PRIVATE                  { $$ = (TypeAttr)$1 | TypeAttr.Private; }
+			| class_attr K_NESTED K_PRIVATE         { $$ = (TypeAttr)$1 | TypeAttr.NestedPrivate; }
+			| class_attr K_NESTED K_PUBLIC          { $$ = (TypeAttr)$1 | TypeAttr.NestedPublic; }
+			| class_attr K_NESTED K_FAMILY          { $$ = (TypeAttr)$1 | TypeAttr.NestedFamily; }
+			| class_attr K_NESTED K_ASSEMBLY        { $$ = (TypeAttr)$1 | TypeAttr.NestedAssembly;}
+			| class_attr K_NESTED K_FAMANDASSEM     { $$ = (TypeAttr)$1 | TypeAttr.NestedFamAndAssem; }
+			| class_attr K_NESTED K_FAMORASSEM      { $$ = (TypeAttr)$1 | TypeAttr.NestedFamOrAssem; }
+			| class_attr K_VALUE                    { is_value_class = true; }
+			| class_attr K_ENUM                     { is_enum_class = true; }
+			| class_attr K_INTERFACE                { $$ = (TypeAttr)$1 | TypeAttr.Interface; }
+			| class_attr K_SEALED                   { $$ = (TypeAttr)$1 | TypeAttr.Sealed; }
+			| class_attr K_ABSTRACT                 { $$ = (TypeAttr)$1 | TypeAttr.Abstract; }
+			| class_attr K_AUTO                     {  }
+			| class_attr K_SEQUENTIAL               { $$ = (TypeAttr)$1 | TypeAttr.SequentialLayout; }
+			| class_attr K_EXPLICIT                 { $$ = (TypeAttr)$1 | TypeAttr.ExplicitLayout; }
+			| class_attr K_ANSI                     {  }
+			| class_attr K_UNICODE                  { $$ = (TypeAttr)$1 | TypeAttr.UnicodeClass; }
+			| class_attr K_AUTOCHAR                 { $$ = (TypeAttr)$1 | TypeAttr.AutoClass; }
+			| class_attr K_IMPORT                   { $$ = (TypeAttr)$1 | TypeAttr.Import; }
+			| class_attr K_SERIALIZABLE             { $$ = (TypeAttr)$1 | TypeAttr.Serializable; }
+			| class_attr K_BEFOREFIELDINIT          { $$ = (TypeAttr)$1 | TypeAttr.BeforeFieldInit; }
+			| class_attr K_SPECIALNAME              { $$ = (TypeAttr)$1 | TypeAttr.SpecialName; }
+			| class_attr K_RTSPECIALNAME            { $$ = (TypeAttr)$1 | TypeAttr.RTSpecialName; }
+			;
+
+extends_clause		: /* EMPTY */
+			| K_EXTENDS generic_class_ref
+                          {
+                                $$ = $2;
+                          }
+			;
+
+impl_clause		: /* EMPTY */
+			| impl_class_refs
+			;
+
+impl_class_refs		: K_IMPLEMENTS generic_class_ref
+                          {
+                                ArrayList al = new ArrayList ();
+                                al.Add ($2);
+                                $$ = al;
+                          }
+			| impl_class_refs COMMA generic_class_ref
+                          {
+                                ArrayList al = (ArrayList) $1;
+
+                                al.Insert (0, $3);
+                                $$ = al;
+                          }
+ 			;
+
+formal_typars_clause           : /* EMPTY */
+                        | OPEN_ANGLE_BRACKET formal_typars CLOSE_ANGLE_BRACKET
+                          {
+                                $$ = $2;
+                          }
+                        ;
+
+typars_clause           : /* EMPTY */
+                        | OPEN_ANGLE_BRACKET typars CLOSE_ANGLE_BRACKET
+                          {
+                                $$ = $2;
+                          }
+                        ;
+
+typars                  : type
+                          {
+                                GenericArguments ga = new GenericArguments ();
+                                ga.Add ((BaseTypeRef) $1);
+                                $$ = ga;
+                          }
+                        | typars COMMA type
+                          {
+                                ((GenericArguments) $1).Add ((BaseTypeRef) $3);
+                                $$ = $1;
+                          }
+                        ;
+
+constraints_clause	: /* EMTPY */
+			| OPEN_PARENS constraints CLOSE_PARENS
+                          {
+                                $$ = $2;
+                          }
+                       ;
+
+
+constraints		: type
+			  {
+                                ArrayList al = new ArrayList ();
+                                al.Add ($1);
+                                $$ = al;
+                           }
+			| constraints COMMA type
+                          {
+                                ArrayList al = (ArrayList) $1;
+                                al.Add ($3);
+                                $$ = al;
+                          }
+			;
+
+generic_class_ref	: class_ref
+			  {
+                                $$ = $1;
+			  }
+			| K_OBJECT
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Object, "System.Object");
+                          }
+			| K_CLASS class_ref typars_clause
+			  {
+                                if ($3 != null)
+                                        $$ = ((BaseClassRef) $2).GetGenericTypeInst ((GenericArguments) $3);
+                                else
+                                        $$ = $2;
+			  }
+			| BANG int32
+                          {
+                                GenParam gpar = new GenParam ((int) $2, "", GenParamType.Var);
+                                $$ = new GenericParamRef (gpar, $2.ToString ());
+                          }
+                        | BANG BANG int32
+                          {
+                                GenParam gpar = new GenParam ((int) $3, "", GenParamType.MVar);
+                                $$ = new GenericParamRef (gpar, $3.ToString ());
+                          }
+			| BANG id
+                          {
+				int num = -1;
+				string name = (string) $2;
+				if (codegen.CurrentTypeDef != null)
+					num = codegen.CurrentTypeDef.GetGenericParamNum (name);
+				GenParam gpar = new GenParam (num, name, GenParamType.Var);
+                                $$ = new GenericParamRef (gpar, name);
+                          }
+                        | BANG BANG id
+                          {
+				int num = -1;
+				string name = (string) $3;
+				if (codegen.CurrentMethodDef != null)
+					num = codegen.CurrentMethodDef.GetGenericParamNum (name);
+				GenParam gpar = new GenParam (num, name, GenParamType.MVar);
+                                $$ = new GenericParamRef (gpar, name);
+                          }
+			; 
+
+formal_typars           : formal_typar_attr constraints_clause formal_typar
+                          {
+                                GenericParameter gp = new GenericParameter ((string) $3, (PEAPI.GenericParamAttributes) $1, (ArrayList) $2);
+
+                                GenericParameters colln = new GenericParameters ();
+                                colln.Add (gp);
+                                $$ = colln;
+                          }
+                        | formal_typars COMMA formal_typar_attr constraints_clause formal_typar
+                          {
+                                GenericParameters colln = (GenericParameters) $1;
+                                colln.Add (new GenericParameter ((string) $5, (PEAPI.GenericParamAttributes) $3, (ArrayList) $4));
+                                $$ = colln;
+                          }
+                         ;
+ 
+formal_typar_attr	: /* EMPTY */
+                          {
+                                $$ = new PEAPI.GenericParamAttributes ();
+                          }
+			| formal_typar_attr PLUS
+                          {
+                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.Covariant; 
+                          }
+			| formal_typar_attr DASH
+                          {
+                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.Contravariant; 
+                          }
+			| formal_typar_attr D_CTOR
+                          {
+                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.DefaultConstructorConstrait; 
+                          }
+			| formal_typar_attr K_VALUETYPE
+                          {
+                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.NotNullableValueTypeConstraint; 
+                          }
+			| formal_typar_attr K_CLASS
+                          {
+                               $$ = (PEAPI.GenericParamAttributes) $1 | PEAPI.GenericParamAttributes.ReferenceTypeConstraint; 
+                          }
+                        ;
+
+formal_typar            : id
+                          {
+                                $$ = $1;
+                          }
+                        ;
+
+param_type_decl         : D_PARAM K_TYPE id
+			  {
+				  if (codegen.CurrentMethodDef != null)
+					  codegen.CurrentCustomAttrTarget = codegen.CurrentMethodDef.GetGenericParam ((string) $3);
+				  else
+					  codegen.CurrentCustomAttrTarget = codegen.CurrentTypeDef.GetGenericParam ((string) $3);
+				  if (codegen.CurrentCustomAttrTarget == null)
+					  Report.Error (String.Format ("Type parameter '{0}' undefined.", (string) $3));
+			  }
+			| D_PARAM K_TYPE OPEN_BRACKET int32 CLOSE_BRACKET
+			  {
+				  int index = ((int) $4);
+				  if (codegen.CurrentMethodDef != null)
+					  codegen.CurrentCustomAttrTarget = codegen.CurrentMethodDef.GetGenericParam (index - 1);
+				  else
+					  codegen.CurrentCustomAttrTarget = codegen.CurrentTypeDef.GetGenericParam (index - 1);
+				  if (codegen.CurrentCustomAttrTarget == null)
+					  Report.Error (String.Format ("Type parameter '{0}' index out of range.", index));
+			  }
+			;
+                        
+class_refs		: class_ref
+                          {
+                                ArrayList class_list = new ArrayList ();
+                                class_list.Add ($1);
+                                $$ = class_list; 
+                          }
+			| class_refs COMMA class_ref
+                          {
+                                ArrayList class_list = (ArrayList) $1;
+                                class_list.Add ($3);
+                          }
+			;
+
+slashed_name		: comp_name
+			| slashed_name SLASH comp_name
+                          {
+                                $$ = String.Format ("{0}/{1}", $1, $3);
+                          }
+			;
+
+class_ref		: OPEN_BRACKET slashed_name CLOSE_BRACKET slashed_name
+                          {
+                                if (codegen.IsThisAssembly ((string) $2)) {
+                                        $$ = codegen.GetTypeRef ((string) $4);
+                                } else {
+                                        $$ = codegen.ExternTable.GetTypeRef ((string) $2, (string) $4, false);
+                                }
+                          }
+			| OPEN_BRACKET D_MODULE slashed_name CLOSE_BRACKET slashed_name
+                          {
+                                if (codegen.IsThisModule ((string) $3)) {
+                                        $$ = codegen.GetTypeRef ((string) $5);
+                                } else {
+                                        $$ = codegen.ExternTable.GetModuleTypeRef ((string) $3, (string) $5, false);
+                                }
+                          }
+			| slashed_name
+                          {
+                                PrimitiveTypeRef prim = PrimitiveTypeRef.GetPrimitiveType ((string) $1);
+
+                                if (prim != null && !codegen.IsThisAssembly ("mscorlib"))
+                                        $$ = prim;
+                                else
+                                        $$ = codegen.GetTypeRef ((string) $1);
+                          }
+                      
+			;
+
+class_decls		: /* EMPTY */
+			| class_decls class_decl
+			;
+
+class_decl		: method_all
+			| class_all
+			| event_all
+			| prop_all
+			| field_decl
+			| data_decl
+			| sec_decl
+			  {
+				AddSecDecl ($1, false);
+			  }
+			| extsource_spec
+			| customattr_decl
+                          {
+                                if (codegen.CurrentCustomAttrTarget != null)
+                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
+                          }
+			| param_type_decl
+			| D_SIZE int32
+                          {
+                                codegen.CurrentTypeDef.SetSize ((int) $2);
+                          }
+			| D_PACK int32
+                          {
+                                codegen.CurrentTypeDef.SetPack ((int) $2);
+                          }
+			| D_OVERRIDE type_spec DOUBLE_COLON method_name K_WITH call_conv type
+                          type_spec DOUBLE_COLON method_name type_list
+                          {
+                                //
+                                // My copy of the spec didn't have a type_list but
+                                // it seems pretty crucial
+                                //
+                                BaseTypeRef owner = (BaseTypeRef) $2;
+                                ArrayList arg_list = (ArrayList) $11;
+                                BaseTypeRef[] param_list;
+                                BaseMethodRef decl;
+
+                                if (arg_list != null)
+                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
+                                else
+                                        param_list = new BaseTypeRef[0];
+
+                                decl = owner.GetMethodRef ((BaseTypeRef) $7,
+                                        (CallConv) $6, (string) $4, param_list, 0);
+
+				// NOTICE: `owner' here might be wrong
+                                string sig = MethodDef.CreateSignature (owner, (CallConv) $6, (string) $10,
+                                                                        param_list, 0, false);
+                                codegen.CurrentTypeDef.AddOverride (sig, decl);                                        
+                          }
+			  OPEN_PARENS sig_args CLOSE_PARENS
+			| language_decl
+			;
+
+type			: generic_class_ref
+                          {
+				$$ = GetTypeRef ((BaseTypeRef) $1);
+                          }
+			| K_VALUE K_CLASS class_ref
+                          {
+                                BaseClassRef class_ref = (BaseClassRef) $3;
+                                class_ref.MakeValueClass ();
+                                $$ = GetTypeRef (class_ref);
+                          }
+			| K_VALUETYPE OPEN_BRACKET slashed_name CLOSE_BRACKET slashed_name typars_clause
+                          {
+                                ExternTypeRef ext_ref = codegen.ExternTable.GetTypeRef ((string) $3, (string) $5, true);
+                                if ($6 != null)
+                                        $$ = ext_ref.GetGenericTypeInst ((GenericArguments) $6);
+                                else
+                                        $$ = GetTypeRef (ext_ref);
+                          }
+                        | K_VALUETYPE slashed_name typars_clause
+                          {
+                                TypeRef t_ref = codegen.GetTypeRef ((string) $2);
+                                t_ref.MakeValueClass ();
+                                if ($3 != null)
+                                        $$ = t_ref.GetGenericTypeInst ((GenericArguments) $3);
+                                else
+                                        $$ = GetTypeRef (t_ref);
+                          }
+			| type OPEN_BRACKET CLOSE_BRACKET
+                          {
+                                BaseTypeRef base_type = (BaseTypeRef) $1;
+                                base_type.MakeArray ();
+                                $$ = base_type;
+                          }
+			| type OPEN_BRACKET bounds CLOSE_BRACKET
+                          {
+                                BaseTypeRef base_type = (BaseTypeRef) $1;
+                                ArrayList bound_list = (ArrayList) $3;
+                                base_type.MakeBoundArray (bound_list);
+                                $$ = base_type;
+                          }
+			| type AMPERSAND
+                          {
+                                BaseTypeRef base_type = (BaseTypeRef) $1;
+                                base_type.MakeManagedPointer ();
+                                $$ = base_type;
+                          }
+			| type STAR
+                          {
+                                BaseTypeRef base_type = (BaseTypeRef) $1;
+                                base_type.MakeUnmanagedPointer ();
+                                $$ = base_type;
+                          }
+			| type K_PINNED
+                          {
+                                BaseTypeRef base_type = (BaseTypeRef) $1;
+                                base_type.MakePinned ();
+                                $$ = base_type;
+                          }
+			| type K_MODREQ OPEN_PARENS custom_modifier_type CLOSE_PARENS
+                          {
+                                BaseTypeRef base_type = (BaseTypeRef) $1;
+                                BaseTypeRef class_ref = (BaseTypeRef) $4;
+                                base_type.MakeCustomModified (codegen,
+                                        CustomModifier.modreq, class_ref);
+                                $$ = base_type;
+                          }
+			| type K_MODOPT OPEN_PARENS custom_modifier_type CLOSE_PARENS
+                          {
+                                BaseTypeRef base_type = (BaseTypeRef) $1;
+                                BaseTypeRef class_ref = (BaseTypeRef) $4;
+                                base_type.MakeCustomModified (codegen,
+                                        CustomModifier.modopt, class_ref);
+                                $$ = base_type;
+                          }
+			| K_METHOD call_conv type STAR OPEN_PARENS sig_args CLOSE_PARENS
+                          {
+                                $$ = new MethodPointerTypeRef ((CallConv) $2, (BaseTypeRef) $3, (ArrayList) $6);
+                          }
+			| primitive_type
+			;
+
+primitive_type		: K_INT8
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Int8, "System.SByte");
+                          }
+			| K_INT16
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Int16, "System.Int16");
+                          }
+			| K_INT32
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Int32, "System.Int32");
+                          }
+			| K_INT64
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Int64, "System.Int64");
+                          }
+			| K_FLOAT32
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Float32, "System.Single");
+                          }
+			| K_FLOAT64
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Float64, "System.Double");
+                          }
+			| K_UNSIGNED K_INT8
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt8, "System.Byte");
+                          }
+			| K_UINT8
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt8, "System.Byte");
+                          }
+			| K_UNSIGNED K_INT16
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt16, "System.UInt16");     
+                          }
+			| K_UINT16
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt16, "System.UInt16");     
+                          }
+			| K_UNSIGNED K_INT32
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt32, "System.UInt32");
+                          }
+			| K_UINT32
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt32, "System.UInt32");
+                          }
+			| K_UNSIGNED K_INT64
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt64, "System.UInt64");
+                          }
+			| K_UINT64
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.UInt64, "System.UInt64");
+                          }
+			| K_NATIVE K_INT
+                          {
+                                // TODO: Is this the proper full name
+                                $$ = new PrimitiveTypeRef (PrimitiveType.NativeInt, "System.IntPtr");
+                          }
+			| K_NATIVE K_UNSIGNED K_INT
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.NativeUInt, "System.UIntPtr");
+                          }
+			| K_NATIVE K_UINT
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.NativeUInt, "System.UIntPtr");
+                          }
+			| K_TYPEDREF
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.TypedRef,
+                                        "System.TypedReference");
+                          }
+			| K_CHAR
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Char, "System.Char");
+                          }
+			| K_WCHAR
+			  {
+				$$ = new PrimitiveTypeRef (PrimitiveType.Char, "System.Char");
+			  }
+			| K_VOID
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Void, "System.Void");
+                          }
+			| K_BOOL
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.Boolean, "System.Boolean");
+                          }
+			| K_STRING
+                          {
+                                $$ = new PrimitiveTypeRef (PrimitiveType.String, "System.String");
+                          }
+			;
+
+bounds			: bound
+                          {
+                                ArrayList bound_list = new ArrayList ();
+                                bound_list.Add ($1);
+                                $$ = bound_list;
+                          }
+			| bounds COMMA bound
+                          {
+                                ArrayList bound_list = (ArrayList) $1;
+                                bound_list.Add ($3);
+                          }
+			;
+
+bound			: /* EMPTY */
+                          {
+                                // This is shortref for no lowerbound or size
+                                $$ = new DictionaryEntry (TypeRef.Ellipsis, TypeRef.Ellipsis);
+                          }
+			| ELLIPSIS
+                          {
+                                // No lower bound or size
+                                $$ = new DictionaryEntry (TypeRef.Ellipsis, TypeRef.Ellipsis);
+                          }
+			| int32
+                          {
+                                /* Only size specified */ 
+                                int size = (int) $1;
+                                if (size < 0)
+                                        /* size cannot be < 0, so emit as (0, ...)
+                                           ilasm.net emits it like this */
+                                        $$ = new DictionaryEntry (0, TypeRef.Ellipsis);
+                                else
+                                        $$ = new DictionaryEntry (TypeRef.Ellipsis, size);
+                          }
+			| int32 ELLIPSIS int32
+                          {
+                                // lower and upper bound
+                                int lower = (int) $1;
+                                int upper = (int) $3;
+                                if (lower > upper) 
+                                        Report.Error ("Lower bound " + lower + " must be <= upper bound " + upper);
+
+                                $$ = new DictionaryEntry ($1, $3);
+                          }
+			| int32 ELLIPSIS
+                          {
+                                // Just lower bound
+                                $$ = new DictionaryEntry ($1, TypeRef.Ellipsis);
+                          }
+			;
+
+call_conv		: K_INSTANCE call_conv
+                          {
+                                $$ = (CallConv) $2 | CallConv.Instance;
+                          }
+			| K_EXPLICIT call_conv
+                          {
+                                $$ = (CallConv) $2 | CallConv.InstanceExplicit;
+                          }
+			| call_kind
+			;
+
+call_kind		: /* EMPTY */
+                          {
+                                $$ = new CallConv ();
+                          }
+			| K_DEFAULT
+                          {
+                                $$ = CallConv.Default;
+                          }
+			| K_VARARG
+                          {
+                                $$ = CallConv.Vararg;
+                          }
+			| K_UNMANAGED K_CDECL
+                          {
+                                $$ = CallConv.Cdecl;
+                          }
+			| K_UNMANAGED K_STDCALL
+                          {
+                                $$ = CallConv.Stdcall;
+                          }
+			| K_UNMANAGED K_THISCALL
+                          {
+                                $$ = CallConv.Thiscall;
+                          }
+			| K_UNMANAGED K_FASTCALL
+                          {
+                                $$ = CallConv.Fastcall;
+                          }
+			;
+
+native_type		: /* EMPTY */
+			| K_CUSTOM OPEN_PARENS comp_qstring COMMA comp_qstring CLOSE_PARENS
+			  {
+				$$ = new CustomMarshaller ((string) $3, (string) $5);
+			  }
+			| K_FIXED K_SYSSTRING OPEN_BRACKET int32 CLOSE_BRACKET
+                          {
+                                $$ = new FixedSysString ((uint) (int)$4);
+                          }
+			| K_FIXED K_ARRAY OPEN_BRACKET int32 CLOSE_BRACKET
+			  {
+                                $$ = new FixedArray ((int) $4);        
+                          }
+			| K_VARIANT
+			| K_CURRENCY
+                          {
+                                $$ = NativeType.Currency;
+                          }
+			| K_SYSCHAR
+			| K_VOID
+                          {
+                                $$ = NativeType.Void;
+                          }
+			| K_BOOL
+                          {
+                                $$ = NativeType.Boolean;
+                          }
+			| K_INT8
+                          {
+                                $$ = NativeType.Int8;
+                          }
+			| K_INT16
+                          {
+                                $$ = NativeType.Int16;
+                          }
+			| K_INT32
+                          {
+                                $$ = NativeType.Int32;
+                          }
+			| K_INT64
+                          {
+                                $$ = NativeType.Int64;
+                          }
+			| K_FLOAT32
+                          {
+                                $$ = NativeType.Float32;
+                          }
+			| K_FLOAT64
+                          {
+                                $$ = NativeType.Float64;
+                          }
+			| K_ERROR
+                          {
+                                $$ = NativeType.Error;
+                          }
+			| K_UNSIGNED K_INT8
+                          {
+                                $$ = NativeType.UInt8;
+                          }
+			| K_UINT8
+                          {
+                                $$ = NativeType.UInt8;
+                          }
+			| K_UNSIGNED K_INT16
+                          {
+                                $$ = NativeType.UInt16;
+                          }
+			| K_UINT16
+                          {
+                                $$ = NativeType.UInt16;
+                          }
+			| K_UNSIGNED K_INT32
+                          {
+                                $$ = NativeType.UInt32;
+                          }
+			| K_UINT32
+                          {
+                                $$ = NativeType.UInt32;
+                          }
+			| K_UNSIGNED K_INT64
+                          {
+                                $$ = NativeType.UInt64;
+                          }
+			| K_UINT64
+                          {
+                                $$ = NativeType.UInt64;
+                          }
+			| native_type STAR
+			| native_type OPEN_BRACKET CLOSE_BRACKET
+			  {
+                                $$ = new NativeArray ((NativeType) $1);
+			  }
+			| native_type OPEN_BRACKET int32 CLOSE_BRACKET
+                          {
+                		$$ = new NativeArray ((NativeType) $1, (int) $3, 0, 0);
+			  }
+			| native_type OPEN_BRACKET int32 PLUS int32 CLOSE_BRACKET
+                          {
+                                //FIXME: Allowed only for methods, !fields
+                                $$ = new NativeArray ((NativeType) $1, (int) $3, (int) $5);
+			  }
+			| native_type OPEN_BRACKET PLUS int32 CLOSE_BRACKET
+			  {
+                                //FIXME: Allowed only for methods, !fields
+                                $$ = new NativeArray ((NativeType) $1, -1, (int) $4);
+			  }
+			| K_DECIMAL
+			| K_DATE
+			| K_BSTR
+                          {
+                                $$ = NativeType.BStr;
+                          }
+			| K_LPSTR
+                          {
+                                $$ = NativeType.LPStr;
+                          }
+			| K_LPWSTR
+                          {
+                                $$ = NativeType.LPWStr;
+                          }
+			| K_LPTSTR
+                          {
+                                $$ = NativeType.LPTStr;
+                          }
+			| K_OBJECTREF
+			| K_IUNKNOWN
+                          {
+                                $$ = NativeType.IUnknown;
+                          }
+			| K_IDISPATCH
+                          {
+                                $$ = NativeType.IDispatch;
+                          }
+			| K_STRUCT
+                          {
+                                $$ = NativeType.Struct;
+                          }
+			| K_INTERFACE
+                          {
+                                $$ = NativeType.Interface;
+                          }
+			| K_SAFEARRAY variant_type
+                          {
+                                if ($2 == null)
+                                        $$ = new SafeArray ();
+                                else        
+                                        $$ = new SafeArray ((SafeArrayType) $2);
+                          }
+			| K_SAFEARRAY variant_type COMMA comp_qstring
+			| K_INT
+                          {
+                                $$ = NativeType.Int;
+                          }
+			| K_UNSIGNED K_INT
+                          {
+                                $$ = NativeType.UInt;
+                          }
+			| K_NESTED K_STRUCT
+			| K_BYVALSTR
+                          {
+                                $$ = NativeType.ByValStr;
+                          }
+			| K_ANSI K_BSTR
+                          {
+                                $$ = NativeType.AnsiBStr;
+                          }
+			| K_TBSTR
+                          {
+                                $$ = NativeType.TBstr;
+                          }
+			| K_VARIANT K_BOOL
+                          {
+                                $$ = NativeType.VariantBool;
+                          }
+			| K_METHOD
+                          {
+                                $$ = NativeType.FuncPtr;
+                          }	
+			| K_AS K_ANY
+                          {
+                                $$ = NativeType.AsAny;
+                          }
+			| K_LPSTRUCT
+                          {
+                                $$ = NativeType.LPStruct;
+                          }
+			;
+
+variant_type		: /* EMPTY */
+			| K_NULL
+			| K_VARIANT
+			  {
+                                $$ = SafeArrayType.variant;
+			  }
+			| K_CURRENCY
+			  {
+                                $$ = SafeArrayType.currency;
+			  }
+			| K_VOID
+			| K_BOOL
+			  {
+                                $$ = SafeArrayType.boolean;
+			  }
+			| K_INT8
+			  {
+                                $$ = SafeArrayType.int8;
+			  }
+			| K_INT16
+			  {
+                                $$ = SafeArrayType.int16;
+			  }
+			| K_INT32
+			  {
+                                $$ = SafeArrayType.int32;
+			  }
+			| K_INT64
+			| K_FLOAT32
+			  {
+                                $$ = SafeArrayType.float32;
+			  }
+			| K_FLOAT64
+			  {
+                                $$ = SafeArrayType.float64;
+			  }
+			| K_UNSIGNED K_INT8
+			  {
+                                $$ = SafeArrayType.uint8;
+			  }
+			| K_UNSIGNED K_INT16
+			  {
+                                $$ = SafeArrayType.uint16;
+			  }
+			| K_UNSIGNED K_INT32
+			  {
+                                $$ = SafeArrayType.uint32;
+			  }
+			| K_UNSIGNED K_INT64
+			| STAR
+			| variant_type OPEN_BRACKET CLOSE_BRACKET
+			| variant_type K_VECTOR
+			| variant_type AMPERSAND
+			| K_DECIMAL
+			  {
+                                $$ = SafeArrayType.Decimal;
+			  }
+			| K_DATE
+			  {
+                                $$ = SafeArrayType.date;
+			  }
+			| K_BSTR
+			  {
+                                $$ = SafeArrayType.bstr;
+			  }
+			| K_LPSTR
+			| K_LPWSTR
+			| K_IUNKNOWN
+			  {
+                                $$ = SafeArrayType.unknown;
+			  }
+			| K_IDISPATCH
+			  {
+                                $$ = SafeArrayType.unknown;
+			  }
+			| K_SAFEARRAY
+			| K_INT
+			  {
+                                $$ = SafeArrayType.Int;
+			  }
+			| K_UNSIGNED K_INT
+			  {
+                                $$ = SafeArrayType.UInt;
+			  }
+			| K_ERROR
+			  {
+                                $$ = SafeArrayType.error;
+			  }
+			| K_HRESULT
+			| K_CARRAY
+			| K_USERDEFINED
+			| K_RECORD
+			| K_FILETIME
+			| K_BLOB
+			| K_STREAM
+			| K_STORAGE
+			| K_STREAMED_OBJECT
+			| K_STORED_OBJECT
+			| K_BLOB_OBJECT
+			| K_CF
+			| K_CLSID
+			;
+
+custom_modifier_type
+			: primitive_type
+			| class_ref
+			;
+
+field_decl		: D_FIELD repeat_opt field_attr type id at_opt init_opt semicolon_opt
+                          {
+                                FieldDef field_def = new FieldDef((FieldAttr) $3, 
+					(string) $5, (BaseTypeRef) $4);
+                                codegen.AddFieldDef (field_def);
+                                codegen.CurrentCustomAttrTarget = field_def;
+                                
+                                if ($2 != null) {
+                                        field_def.SetOffset ((uint) (int)$2);
+                                }
+
+                                if ($6 != null) {
+                                        field_def.AddDataValue ((string) $6);
+                                }
+
+                                if ($7 != null) {
+                                        field_def.SetValue ((Constant) $7);
+                                }
+                          }
+			;
+
+repeat_opt		: /* EMPTY */
+			| OPEN_BRACKET int32 CLOSE_BRACKET
+                          {
+                                $$ = $2;
+                          }
+			;
+
+field_attr		: /* EMPTY */
+                          {
+                                $$ = new FieldAttr ();
+                          }
+			| field_attr K_PUBLIC
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Public;
+                          }
+			| field_attr K_PRIVATE
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Private;
+                          }
+			| field_attr K_FAMILY
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Family;
+                          }
+			| field_attr K_ASSEMBLY
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Assembly;
+                          }
+			| field_attr K_FAMANDASSEM
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.FamAndAssem;
+                          }
+			| field_attr K_FAMORASSEM
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.FamOrAssem;
+                          }
+			| field_attr K_PRIVATESCOPE
+                          {
+                                // This is just 0x0000
+                          }
+			| field_attr K_STATIC
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Static;
+                          }
+			| field_attr K_INITONLY
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Initonly;
+                          }
+			| field_attr K_RTSPECIALNAME
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.RTSpecialName;
+                          }
+			| field_attr K_SPECIALNAME
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.SpecialName;
+                          }
+			| field_attr K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS
+                          {
+                               codegen.AddFieldMarshalInfo ((NativeType) $4);
+                               $$ = (FieldAttr) $1 | FieldAttr.HasFieldMarshal;
+                          }
+			| field_attr K_LITERAL
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Literal;
+                          }
+			| field_attr K_NOTSERIALIZED
+                          {
+                                $$ = (FieldAttr) $1 | FieldAttr.Notserialized;
+                          }
+			;
+
+at_opt			: /* EMPTY */
+			| K_AT id
+                          {
+                                $$ = $2;
+                          }
+			;
+
+init_opt		: /* EMPTY */
+			| ASSIGN field_init
+                          {
+                                $$ = $2;
+                          }
+			;
+
+field_init_primitive	: K_FLOAT32 OPEN_PARENS float64 CLOSE_PARENS
+                          {
+                                $$ = new FloatConst (Convert.ToSingle ($3));
+                          }
+			| K_FLOAT64 OPEN_PARENS float64 CLOSE_PARENS
+                          {
+                                $$ = new DoubleConst (Convert.ToDouble ($3));
+                          }
+			| K_FLOAT32 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new FloatConst (BitConverter.ToSingle (BitConverter.GetBytes ((long)$3), BitConverter.IsLittleEndian ? 0 : 4));
+                          }
+			| K_FLOAT64 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new DoubleConst (BitConverter.Int64BitsToDouble ((long)$3));
+                          }
+			| K_INT64 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new IntConst (Convert.ToInt64 ($3));
+                          }
+			| K_UINT64 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new UIntConst (Convert.ToUInt64 ((ulong)(long) $3));
+                          }
+			| K_INT32 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new IntConst ((int)((long)$3));
+                          }
+			| K_UINT32 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new UIntConst ((uint)((long)$3));
+                          }
+			| K_INT16 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new IntConst ((short)((long) $3));
+                          }
+			| K_UINT16 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new UIntConst ((ushort)((long) $3));
+                          }
+			| K_CHAR OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new CharConst (Convert.ToChar ($3));
+                          }
+			| K_WCHAR OPEN_PARENS int64 CLOSE_PARENS
+			  {
+				$$ = new CharConst (Convert.ToChar ($3));
+			  }
+			| K_INT8 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new IntConst ((sbyte)((long) ($3)));
+                          }
+			| K_UINT8 OPEN_PARENS int64 CLOSE_PARENS
+                          {
+                                $$ = new UIntConst ((byte)((long) ($3)));
+                          }
+			| K_BOOL OPEN_PARENS truefalse CLOSE_PARENS
+                          {
+                                $$ = new BoolConst ((bool) $3);
+                          }
+			;
+
+field_init_full : field_init_primitive
+			| K_BYTEARRAY bytes_list
+                          {
+                                $$ = new ByteArrConst ((byte[]) $2);
+                          }
+			;
+
+field_init : field_init_full
+			| comp_qstring
+                          {
+                                // ******** THIS IS NOT IN THE DOCUMENTATION ******** //
+                                $$ = new StringConst ((string) $1);
+                          }
+			| K_NULLREF
+                          {
+                                $$ = new NullConst ();
+                          }
+			;
+
+member_init : field_init_full
+			| K_STRING OPEN_PARENS SQSTRING CLOSE_PARENS
+			  {
+				$$ = new StringConst ((string) $3);
+			  }
+			;
+
+opt_truefalse_list
+				: truefalse_list
+				;
+
+truefalse_list
+				: truefalse
+				  {
+				  	$$ = new List<BoolConst> () { new BoolConst ((bool) $1) };
+				  }
+				| truefalse_list truefalse
+				  {
+				  	var l = (List<BoolConst>) $1;
+				  	l.Add (new BoolConst ((bool) $2));
+				  	$$ = l;
+				  }
+				;
+
+data_decl		: data_head data_body
+                          {
+                                DataDef datadef = (DataDef) $1;
+                                
+                                if ($2 is ArrayList) {
+                                        ArrayList const_list = (ArrayList) $2;
+                                        DataConstant[] const_arr = new DataConstant[const_list.Count];
+                                        
+                                        for (int i=0; i<const_arr.Length; i++)
+                                                const_arr[i] = (DataConstant) const_list[i];
+
+                                        datadef.PeapiConstant = new ArrayConstant (const_arr);
+                                } else {
+                                        datadef.PeapiConstant = (PEAPI.Constant) $2;
+                                }
+                                codegen.AddDataDef (datadef);
+                          }
+			;
+
+data_head		: D_DATA tls id ASSIGN
+                          {
+                                $$ = new DataDef ((string) $3, (bool) $2);    
+                          } 
+			| D_DATA tls
+                          {
+                                $$ = new DataDef (String.Empty, (bool) $2);
+                          }
+			;
+
+tls			: /* EMPTY */   { $$ = false; }
+			| K_TLS         { $$ = true; }
+			;
+
+data_body		: OPEN_BRACE dataitem_list CLOSE_BRACE
+                          {
+                                $$ = $2;
+                          }
+			| dataitem
+			;
+
+dataitem_list		: dataitem
+                          {
+                                ArrayList dataitem_list = new ArrayList ();
+                                dataitem_list.Add ($1);
+                                $$ = dataitem_list;
+                          }
+			| dataitem_list COMMA dataitem
+                          {
+                                ArrayList list = (ArrayList) $1;
+                                list.Add ($3);
+                          }
+			;
+
+dataitem		: K_CHAR STAR OPEN_PARENS comp_qstring CLOSE_PARENS
+                          {
+                                $$ = new StringConst ((string) $4);
+                          }
+			| K_WCHAR STAR OPEN_PARENS comp_qstring CLOSE_PARENS
+			  {
+				$$ = new StringConst ((string) $4);
+			  }
+			| AMPERSAND OPEN_PARENS id CLOSE_PARENS
+                          {
+                           //     DataDef def = codegen.CurrentTypeDef.GetDataDef ((string) $3);
+                           //     $$ = new AddressConstant ((DataConstant) def.PeapiConstant);
+                          }
+			| K_BYTEARRAY ASSIGN bytes_list
+                          {
+                                $$ = new ByteArrConst ((byte[]) $3);
+                          }
+			| K_BYTEARRAY bytes_list
+                          {
+                                // ******** THIS IS NOT IN THE SPECIFICATION ******** //
+                                $$ = new ByteArrConst ((byte[]) $2);
+                          }
+			| K_FLOAT32 OPEN_PARENS float64 CLOSE_PARENS repeat_opt
+                          {
+                                double d = (double) $3;
+                                FloatConst float_const = new FloatConst ((float) d);
+
+                                if ($5 != null)
+                                        $$ = new RepeatedConstant (float_const, (int) $5);
+                                else
+                                        $$ = float_const;
+                          }
+			| K_FLOAT64 OPEN_PARENS float64 CLOSE_PARENS repeat_opt
+                          {
+                                DoubleConst double_const = new DoubleConst ((double) $3);
+
+                                if ($5 != null)
+                                        $$ = new RepeatedConstant (double_const, (int) $5);
+                                else
+                                        $$ = double_const;
+                          }
+			| K_INT64 OPEN_PARENS int64 CLOSE_PARENS repeat_opt
+                          {
+                                IntConst int_const = new IntConst ((long) $3);
+
+                                if ($5 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $5);
+                                else
+                                        $$ = int_const;
+                          }
+			| K_INT32 OPEN_PARENS int32 CLOSE_PARENS repeat_opt
+                          {
+                                IntConst int_const = new IntConst ((int) $3);
+
+                                if ($5 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $5);
+                                else
+                                        $$ = int_const;
+                          }
+			| K_INT16 OPEN_PARENS int32 CLOSE_PARENS repeat_opt
+                          {
+                                int i = (int) $3;
+                                IntConst int_const = new IntConst ((short) i);
+
+                                if ($5 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $5);
+                                else
+                                        $$ = int_const;
+                          }
+			| K_INT8 OPEN_PARENS int32 CLOSE_PARENS repeat_opt
+                          {
+                                int i = (int) $3;
+                                IntConst int_const = new IntConst ((sbyte) i);
+
+                                if ($5 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $5);
+                                else
+                                        $$ = int_const;
+                          }
+			| K_FLOAT32 repeat_opt
+                          {
+                                FloatConst float_const = new FloatConst (0F);
+
+                                if ($2 != null)
+                                        $$ = new RepeatedConstant (float_const, (int) $2);
+                                else
+                                        $$ = float_const;
+                          }
+			| K_FLOAT64 repeat_opt
+                          {
+                                DoubleConst double_const = new DoubleConst (0);
+
+                                if ($2 != null)
+                                        $$ = new RepeatedConstant (double_const, (int) $2);
+                                else
+                                        $$ = double_const;
+                          }
+			| K_INT64 repeat_opt
+                          {
+                                IntConst int_const = new IntConst ((long) 0);
+
+                                if ($2 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $2);
+                                else
+                                        $$ = int_const;
+                          }
+			| K_INT32 repeat_opt
+                          {
+                                IntConst int_const = new IntConst ((int) 0);
+
+                                if ($2 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $2);
+                                else
+                                        $$ = int_const;
+                          }
+			| K_INT16 repeat_opt
+                          {
+                                IntConst int_const = new IntConst ((short) 0);
+
+                                if ($2 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $2);
+                                else
+                                        $$ = int_const;
+                          }
+			| K_INT8 repeat_opt
+                          {
+                                IntConst int_const = new IntConst ((sbyte) 0);
+
+                                if ($2 != null)
+                                        $$ = new RepeatedConstant (int_const, (int) $2);
+                                else
+                                        $$ = int_const;
+                          }
+			;
+
+method_all		: method_head OPEN_BRACE method_decls CLOSE_BRACE
+                          {
+                                codegen.EndMethodDef (tokenizer.Location);
+                          }
+			;
+
+method_head		: D_METHOD meth_attr call_conv param_attr type method_name
+                          formal_typars_clause OPEN_PARENS sig_args CLOSE_PARENS impl_attr
+                          {
+                                CallConv cc = (CallConv) $3;
+                                if ($7 != null)
+                                        cc |= CallConv.Generic;
+
+                                MethodDef methdef = new MethodDef (
+                                        codegen, (MethAttr) $2, cc,
+                                        (ImplAttr) $11, (string) $6, (BaseTypeRef) $5,
+                                        (ArrayList) $9, tokenizer.Reader.Location, (GenericParameters) $7, codegen.CurrentTypeDef);
+                                if (pinvoke_info) {
+                                        ExternModule mod = codegen.ExternTable.AddModule (pinvoke_mod);
+                                        methdef.AddPInvokeInfo (pinvoke_attr, mod, pinvoke_meth);
+                                        pinvoke_info = false;
+                                }
+                          }
+			| D_METHOD meth_attr call_conv param_attr type 
+			  K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS method_name
+			  OPEN_PARENS sig_args CLOSE_PARENS impl_attr
+			  {
+                                MethodDef methdef = new MethodDef (
+                              		codegen, (MethAttr) $2, (CallConv) $3,
+                                        (ImplAttr) $14, (string) $10, (BaseTypeRef) $5,
+                                        (ArrayList) $12, tokenizer.Reader.Location, null, codegen.CurrentTypeDef);
+
+                                if (pinvoke_info) {
+                                        ExternModule mod = codegen.ExternTable.AddModule (pinvoke_mod);
+                                        methdef.AddPInvokeInfo (pinvoke_attr, mod, pinvoke_meth);
+                                        pinvoke_info = false;
+                                }
+		                
+                                methdef.AddRetTypeMarshalInfo ((NativeType) $8);
+			  }
+			;
+
+meth_attr		: /* EMPTY */                   { $$ = new MethAttr (); }
+			| meth_attr K_STATIC            { $$ = (MethAttr) $1 | MethAttr.Static; }
+			| meth_attr K_PUBLIC            { $$ = (MethAttr) $1 | MethAttr.Public; }
+			| meth_attr K_PRIVATE           { $$ = (MethAttr) $1 | MethAttr.Private; }
+			| meth_attr K_FAMILY            { $$ = (MethAttr) $1 | MethAttr.Family; }
+			| meth_attr K_ASSEMBLY          { $$ = (MethAttr) $1 | MethAttr.Assembly; }
+			| meth_attr K_FAMANDASSEM       { $$ = (MethAttr) $1 | MethAttr.FamAndAssem; } 
+			| meth_attr K_FAMORASSEM        { $$ = (MethAttr) $1 | MethAttr.FamOrAssem; } 
+			| meth_attr K_PRIVATESCOPE      { /* CHECK HEADERS */ }
+			| meth_attr K_FINAL             { $$ = (MethAttr) $1 | MethAttr.Final; } 
+			| meth_attr K_VIRTUAL           { $$ = (MethAttr) $1 | MethAttr.Virtual; }
+			| meth_attr K_ABSTRACT          { $$ = (MethAttr) $1 | MethAttr.Abstract; }
+			| meth_attr K_HIDEBYSIG         { $$ = (MethAttr) $1 | MethAttr.HideBySig; }
+			| meth_attr K_NEWSLOT           { $$ = (MethAttr) $1 | MethAttr.NewSlot; }
+			| meth_attr K_REQSECOBJ         { $$ = (MethAttr) $1 | MethAttr.RequireSecObject; }
+			| meth_attr K_SPECIALNAME       { $$ = (MethAttr) $1 | MethAttr.SpecialName; }
+			| meth_attr K_RTSPECIALNAME     { $$ = (MethAttr) $1 | MethAttr.RTSpecialName; }
+			| meth_attr K_STRICT            { $$ = (MethAttr) $1 | MethAttr.Strict; }
+                        | meth_attr K_COMPILERCONTROLLED { /* Do nothing */ }
+			| meth_attr K_UNMANAGEDEXP      
+			| meth_attr K_PINVOKEIMPL OPEN_PARENS comp_qstring K_AS
+				comp_qstring pinv_attr CLOSE_PARENS
+                          {
+                                pinvoke_info = true;
+                                pinvoke_mod = (string) $4;
+                                pinvoke_meth = (string) $6;
+                                pinvoke_attr = (PInvokeAttr) $7;
+                          }
+			| meth_attr K_PINVOKEIMPL OPEN_PARENS comp_qstring pinv_attr CLOSE_PARENS
+                          {
+                                pinvoke_info = true;
+                                pinvoke_mod = (string) $4;
+                                pinvoke_meth = null;
+                                pinvoke_attr = (PInvokeAttr) $5;
+                          }
+			| meth_attr K_PINVOKEIMPL OPEN_PARENS pinv_attr CLOSE_PARENS
+                          {
+                                pinvoke_info = true;
+                                pinvoke_mod = null;
+                                pinvoke_meth = null;
+                                pinvoke_attr = (PInvokeAttr) $4;
+                          }
+			;
+
+pinv_attr		: /* EMPTY */ { $$ = new PInvokeAttr (); }
+			| pinv_attr K_NOMANGLE { $$ = (PInvokeAttr) $1 | PInvokeAttr.nomangle; }
+			| pinv_attr K_ANSI { $$ = (PInvokeAttr) $1 | PInvokeAttr.ansi; }
+			| pinv_attr K_UNICODE { $$ = (PInvokeAttr) $1 | PInvokeAttr.unicode; }
+			| pinv_attr K_AUTOCHAR { $$ = (PInvokeAttr) $1 | PInvokeAttr.autochar; }
+			| pinv_attr K_LASTERR { $$ = (PInvokeAttr) $1 | PInvokeAttr.lasterr; }
+			| pinv_attr K_WINAPI { $$ = (PInvokeAttr) $1 | PInvokeAttr.winapi; }
+			| pinv_attr K_CDECL { $$ = (PInvokeAttr) $1 | PInvokeAttr.cdecl; }
+			| pinv_attr K_STDCALL { $$ = (PInvokeAttr) $1 | PInvokeAttr.stdcall; }
+			| pinv_attr K_THISCALL { $$ = (PInvokeAttr) $1 | PInvokeAttr.thiscall; }
+			| pinv_attr K_FASTCALL { $$ = (PInvokeAttr) $1 | PInvokeAttr.fastcall; }
+			| pinv_attr K_BESTFIT COLON K_ON { $$ = (PInvokeAttr) $1 | PInvokeAttr.bestfit_on; }
+			| pinv_attr K_BESTFIT COLON K_OFF { $$ = (PInvokeAttr) $1 | PInvokeAttr.bestfit_off; }
+			| pinv_attr K_CHARMAPERROR COLON K_ON { $$ = (PInvokeAttr) $1 | PInvokeAttr.charmaperror_on; }
+			| pinv_attr K_CHARMAPERROR COLON K_OFF { $$ = (PInvokeAttr) $1 | PInvokeAttr.charmaperror_off; }
+			;
+
+method_name		: D_CTOR
+			| D_CCTOR
+			| comp_name
+			;
+
+param_attr		: /* EMPTY */                                   { $$ = new ParamAttr (); }
+			| param_attr OPEN_BRACKET K_IN CLOSE_BRACKET    { $$ = (ParamAttr) $1 | ParamAttr.In; }
+			| param_attr OPEN_BRACKET K_OUT CLOSE_BRACKET   { $$ = (ParamAttr) $1 | ParamAttr.Out; }
+			| param_attr OPEN_BRACKET K_OPT CLOSE_BRACKET   { $$ = (ParamAttr) $1 | ParamAttr.Opt; }
+			;
+
+impl_attr		: /* EMPTY */                   { $$ = new ImplAttr (); }
+			| impl_attr K_NATIVE            { $$ = (ImplAttr) $1 | ImplAttr.Native; }
+			| impl_attr K_CIL               { $$ = (ImplAttr) $1 | ImplAttr.IL; }
+                        | impl_attr K_IL                { $$ = (ImplAttr) $1 | ImplAttr.IL; }
+			| impl_attr K_OPTIL             { $$ = (ImplAttr) $1 | ImplAttr.Optil; }
+			| impl_attr K_MANAGED           { /* should this reset? */ }
+			| impl_attr K_UNMANAGED         { $$ = (ImplAttr) $1 | ImplAttr.Unmanaged; }
+			| impl_attr K_FORWARDREF        { $$ = (ImplAttr) $1 | ImplAttr.ForwardRef; }
+			| impl_attr K_PRESERVESIG       { $$ = (ImplAttr) $1 | ImplAttr.PreserveSig; }
+			| impl_attr K_RUNTIME           { $$ = (ImplAttr) $1 | ImplAttr.Runtime; }
+			| impl_attr K_INTERNALCALL      { $$ = (ImplAttr) $1 | ImplAttr.InternalCall; }
+			| impl_attr K_SYNCHRONIZED      { $$ = (ImplAttr) $1 | ImplAttr.Synchronised; }
+			| impl_attr K_NOINLINING        { $$ = (ImplAttr) $1 | ImplAttr.NoInLining; }
+			;
+
+sig_args		: /* EMPTY */
+			| sig_arg_list
+			;
+
+sig_arg_list 		: sig_arg
+                          {
+                                ArrayList sig_list = new ArrayList ();
+                                sig_list.Add ($1);
+                                $$ = sig_list;
+                          }
+			| sig_arg_list COMMA sig_arg
+                          {
+                                ArrayList sig_list = (ArrayList) $1;
+                                sig_list.Add ($3);
+                                $$ = sig_list;
+                          }
+			;
+
+sig_arg			: param_attr type
+                          {
+                                $$ = new ParamDef ((ParamAttr) $1, null, (BaseTypeRef) $2);
+                          }
+			| param_attr type id
+                          {
+                                $$ = new ParamDef ((ParamAttr) $1, (string) $3, (BaseTypeRef) $2);
+                          }
+                        | ELLIPSIS
+                          {
+				$$ = new ParamDef ((ParamAttr) 0, "...", new SentinelTypeRef ());
+                                // $$ = ParamDef.Ellipsis;
+                          }
+			| param_attr type K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS
+			  {
+                                ParamDef param_def = new ParamDef ((ParamAttr) $1, null, (BaseTypeRef) $2);
+                                param_def.AddMarshalInfo ((PEAPI.NativeType) $5);
+
+                                $$ = param_def;
+			  }
+			| param_attr type K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS id
+			  {
+                                ParamDef param_def = new ParamDef ((ParamAttr) $1, (string) $7, (BaseTypeRef) $2);
+                                param_def.AddMarshalInfo ((PEAPI.NativeType) $5);
+
+                                $$ = param_def;
+			  }
+			;
+
+type_list               : /* EMPTY */
+                          {
+                                $$ = new ArrayList (0);
+                          }
+                        | ELLIPSIS
+                          {
+                                ArrayList type_list = new ArrayList ();
+                                // type_list.Add (TypeRef.Ellipsis);
+				type_list.Add (new SentinelTypeRef ());
+                                $$ = type_list;
+                          }
+                        | type_list COMMA ELLIPSIS
+                          {
+                                ArrayList type_list = (ArrayList) $1;
+                                // type_list.Add (TypeRef.Ellipsis);
+				type_list.Add (new SentinelTypeRef ());
+				$$ = type_list;
+                          }
+                        | param_attr type opt_id
+                          {
+                                ArrayList type_list = new ArrayList ();
+                                type_list.Add ($2);
+                                $$ = type_list;
+                          }
+                        | type_list COMMA param_attr type opt_id
+                          {
+                                ArrayList type_list = (ArrayList) $1;
+                                type_list.Add ($4);
+                          }
+                        ;
+
+opt_id                  : /* EMPTY */
+                        | id
+                        ;
+
+method_decls		: /* EMPTY */
+			| method_decls method_decl
+			;
+
+method_decl		: D_EMITBYTE int32
+						{
+							codegen.CurrentMethodDef.AddInstr (new
+                                        EmitByteInstr ((int) $2, tokenizer.Location));
+                          
+						}
+			| D_MAXSTACK int32
+                          {
+                                codegen.CurrentMethodDef.SetMaxStack ((int) $2);
+                          }
+			| D_LOCALS OPEN_PARENS local_list CLOSE_PARENS
+                          {
+                                if ($3 != null) {
+                                        codegen.CurrentMethodDef.AddLocals (
+                                                (ArrayList) $3);
+                                }
+                          }
+			| D_LOCALS K_INIT OPEN_PARENS local_list CLOSE_PARENS
+                          {
+                                if ($4 != null) {
+                                        codegen.CurrentMethodDef.AddLocals (
+                                                (ArrayList) $4);
+                                        codegen.CurrentMethodDef.InitLocals ();
+                                }
+                          }
+			| D_ENTRYPOINT
+                          {
+                                codegen.CurrentMethodDef.EntryPoint ();
+                                codegen.HasEntryPoint = true;
+                          }
+			| D_ZEROINIT
+                          {
+                                codegen.CurrentMethodDef.ZeroInit ();
+                          }
+			| D_EXPORT OPEN_BRACKET int32 CLOSE_BRACKET
+			| D_EXPORT OPEN_BRACKET int32 CLOSE_BRACKET K_AS id
+			| D_VTENTRY int32 COLON int32 
+			| D_OVERRIDE type_spec DOUBLE_COLON method_name
+                          {
+                                codegen.CurrentTypeDef.AddOverride (codegen.CurrentMethodDef,
+                                        (BaseTypeRef) $2, (string) $4);
+                                
+                          }
+			| D_OVERRIDE K_METHOD method_ref
+                          {
+				codegen.CurrentTypeDef.AddOverride (codegen.CurrentMethodDef.Signature,
+					(BaseMethodRef) $3);
+                          }
+			| D_OVERRIDE K_METHOD call_conv type type_spec DOUBLE_COLON method_name
+			  OPEN_ANGLE_BRACKET OPEN_BRACKET int32 CLOSE_BRACKET CLOSE_ANGLE_BRACKET
+			  OPEN_PARENS type_list CLOSE_PARENS 
+                          {
+                                BaseTypeRef owner = (BaseTypeRef) $5;
+                                ArrayList arg_list = (ArrayList) $14;
+                                BaseTypeRef[] param_list;
+                                BaseMethodRef methref;
+
+                                if (arg_list != null)
+                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
+                                else
+                                        param_list = new BaseTypeRef[0];
+
+                                if (owner.UseTypeSpec) {
+                                        methref = new TypeSpecMethodRef (owner, (CallConv) $3, (BaseTypeRef) $4,
+                                                (string) $7, param_list, (int) $10);
+                                } else {
+                                        methref = owner.GetMethodRef ((BaseTypeRef) $4,
+                                                (CallConv) $3, (string) $7, param_list, (int) $10);
+                                }
+
+				codegen.CurrentTypeDef.AddOverride (codegen.CurrentMethodDef.Signature,
+					methref);
+			  }
+			| scope_block
+			| D_PARAM OPEN_BRACKET int32 CLOSE_BRACKET init_opt
+                          {
+                                int index = (int) $3;
+                                ParamDef param = codegen.CurrentMethodDef.GetParam (index);
+                                codegen.CurrentCustomAttrTarget = param;
+
+                                if (param == null) {
+                                        Report.Warning (tokenizer.Location, String.Format ("invalid param index ({0}) with .param", index));
+                                } else if ($5 != null)
+                                        param.AddDefaultValue ((Constant) $5);
+                          }
+			| param_type_decl
+			| id COLON
+                          {
+                                codegen.CurrentMethodDef.AddLabel ((string) $1);
+                          }
+			| seh_block
+			| instr
+			| sec_decl
+			  {
+				AddSecDecl ($1, false);
+			  }
+			| extsource_spec
+			| language_decl
+			| customattr_decl
+                          {
+                                if (codegen.CurrentCustomAttrTarget != null)
+                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
+                          }
+			| data_decl
+			;
+
+local_list              : /* EMPTY */
+                        | local
+                          {
+                                ArrayList local_list = new ArrayList ();
+                                local_list.Add ($1);
+                                $$ = local_list;
+                          }
+                        | local_list COMMA local
+                          {
+                                ArrayList local_list = (ArrayList) $1;
+                                local_list.Add ($3);
+                          }
+                        ;
+
+local                   : type
+                          {
+                                $$ = new Local (-1, (BaseTypeRef) $1);
+                          }
+                        | type id
+                          {
+                                $$ = new Local (-1, (string) $2, (BaseTypeRef) $1);
+                          }
+                        | slot_num type
+                          {
+                                $$ = new Local ((int) $1, (BaseTypeRef) $2);
+                          }
+                        | slot_num type id
+                          {
+                                $$ = new Local ((int) $1, (string) $3, (BaseTypeRef) $2);
+                          }
+                        ;
+
+slot_num                : OPEN_BRACKET int32 CLOSE_BRACKET
+                          {
+                                $$ = $2;
+                          }
+                        ;
+
+type_spec		: OPEN_BRACKET slashed_name CLOSE_BRACKET
+                          {
+                                // This is a reference to a global method in another
+                                // assembly. This is not supported in the MS version of ilasm
+                          }
+			| OPEN_BRACKET D_MODULE slashed_name CLOSE_BRACKET
+                          {
+                                string module = (string) $3;
+
+                                if (codegen.IsThisModule (module)) {
+                                    // This is not handled yet.
+                                } else {
+                                    $$ = codegen.ExternTable.GetModuleTypeRef ((string) $3, "<Module>", false);
+                                }
+
+                          }
+			| type
+			;
+
+scope_block		: scope_block_begin method_decls CLOSE_BRACE
+                          {
+                                $$ = new HandlerBlock ((LabelInfo) $1,
+                                        codegen.CurrentMethodDef.AddLabel ());
+                                codegen.CurrentMethodDef.EndLocalsScope ();
+                          }
+			;
+
+scope_block_begin       : OPEN_BRACE
+                          {
+                                $$ = codegen.CurrentMethodDef.AddLabel ();
+                                codegen.CurrentMethodDef.BeginLocalsScope ();
+                          }
+                        ;
+                        
+                        
+seh_block		: try_block seh_clauses
+                          {
+                                TryBlock try_block = (TryBlock) $1;
+
+                                ArrayList clause_list = (ArrayList) $2;
+                                foreach (object clause in clause_list)
+                                        try_block.AddSehClause ((ISehClause) clause);
+
+                                codegen.CurrentMethodDef.AddInstr (try_block);
+                          }
+			;
+
+try_block		: D_TRY scope_block
+                          {
+                                $$ = new TryBlock ((HandlerBlock) $2, tokenizer.Location);
+                          }
+			| D_TRY id K_TO id
+                          {
+				LabelInfo from = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
+				LabelInfo to = codegen.CurrentMethodDef.AddLabelRef ((string) $4);
+				
+                                $$ = new TryBlock (new HandlerBlock (from, to), tokenizer.Location);
+                          }
+			| D_TRY int32 K_TO int32
+			  {
+				LabelInfo from = codegen.CurrentMethodDef.AddLabel ((int) $2);
+				LabelInfo to = codegen.CurrentMethodDef.AddLabel ((int) $4);
+				
+				$$ = new TryBlock (new HandlerBlock (from, to), tokenizer.Location);
+			  }
+			;
+
+seh_clauses		: seh_clause
+                          {
+                                ArrayList clause_list = new ArrayList ();
+                                clause_list.Add ($1);
+                                $$ = clause_list;
+                          }
+			| seh_clauses seh_clause
+                          {
+                                ArrayList clause_list = (ArrayList) $1;
+                                clause_list.Add ($2);
+                          }
+			;
+
+seh_clause		: K_CATCH type handler_block
+                          {
+				if ($2.GetType () == typeof (PrimitiveTypeRef))
+					Report.Error ("Exception not be of a primitive type.");
+					
+                                BaseTypeRef type = (BaseTypeRef) $2;
+                                CatchBlock cb = new CatchBlock (type);
+                                cb.SetHandlerBlock ((HandlerBlock) $3);
+                                $$ = cb;
+                          }
+			| K_FINALLY handler_block
+                          {
+                                FinallyBlock fb = new FinallyBlock ();
+                                fb.SetHandlerBlock ((HandlerBlock) $2);
+                                $$ = fb;
+                          }
+			| K_FAULT handler_block
+                          {
+                                FaultBlock fb = new FaultBlock ();
+                                fb.SetHandlerBlock ((HandlerBlock) $2);
+                                $$ = fb;
+                          }
+			| filter_clause handler_block
+                          {
+                                FilterBlock fb = (FilterBlock) $1;
+                                fb.SetHandlerBlock ((HandlerBlock) $2);
+                          }
+			;
+
+filter_clause		: K_FILTER scope_block
+                          {
+                                HandlerBlock block = (HandlerBlock) $2;
+                                FilterBlock fb = new FilterBlock (block);
+                                $$ = fb;
+                          }
+			| K_FILTER id
+                          {
+				LabelInfo from = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
+                                FilterBlock fb = new FilterBlock (new HandlerBlock (from, null));
+                                $$ = fb;
+                          }
+			| K_FILTER int32
+			  {
+				LabelInfo from = codegen.CurrentMethodDef.AddLabel ((int) $2);
+				FilterBlock fb = new FilterBlock (new HandlerBlock (from, null));
+				$$ = fb;
+			  }
+			;
+
+handler_block		: scope_block
+                          {
+                                
+                          }
+			| K_HANDLER id K_TO id
+                          {	
+				LabelInfo from = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
+				LabelInfo to = codegen.CurrentMethodDef.AddLabelRef ((string) $4);
+
+                                $$ = new HandlerBlock (from, to);
+                          }
+			| K_HANDLER int32 K_TO int32
+			  {
+				LabelInfo from = codegen.CurrentMethodDef.AddLabel ((int) $2);
+				LabelInfo to = codegen.CurrentMethodDef.AddLabel ((int) $4);
+
+				$$ = new HandlerBlock (from, to);
+			  }
+			;
+
+instr			: INSTR_NONE
+                          {
+                                codegen.CurrentMethodDef.AddInstr (
+                                        new SimpInstr ((Op) $1, tokenizer.Location));
+                          }
+			| INSTR_LOCAL int32
+                          {
+                                codegen.CurrentMethodDef.AddInstr (
+                                        new IntInstr ((IntOp) $1, (int) $2, tokenizer.Location));        
+                          }
+                        | INSTR_LOCAL id
+                          {
+                                int slot = codegen.CurrentMethodDef.GetNamedLocalSlot ((string) $2);
+                                if (slot < 0)
+                                        Report.Error (String.Format ("Undeclared identifier '{0}'", (string) $2));
+                                codegen.CurrentMethodDef.AddInstr (
+                                        new IntInstr ((IntOp) $1, slot, tokenizer.Location));
+                          }
+                        | INSTR_PARAM int32
+                          {
+                                codegen.CurrentMethodDef.AddInstr (
+                                        new IntInstr ((IntOp) $1, (int) $2, tokenizer.Location));
+                          }
+                        | INSTR_PARAM id
+                          {
+                                int pos = codegen.CurrentMethodDef.GetNamedParamPos ((string) $2);
+                                if (pos < 0)
+                                        Report.Error (String.Format ("Undeclared identifier '{0}'", (string) $2));
+
+                                codegen.CurrentMethodDef.AddInstr (
+                                        new IntInstr ((IntOp) $1, pos, tokenizer.Location));
+                          }
+			| INSTR_I int32
+                          {
+                                codegen.CurrentMethodDef.AddInstr (new
+                                        IntInstr ((IntOp) $1, (int) $2, tokenizer.Location));
+                          }
+			| INSTR_I id
+                          {
+                                int slot = codegen.CurrentMethodDef.GetNamedLocalSlot ((string) $2);
+                                if (slot < 0)
+                                        Report.Error (String.Format ("Undeclared identifier '{0}'", (string) $2));
+                                codegen.CurrentMethodDef.AddInstr (new
+                                        IntInstr ((IntOp) $1, slot, tokenizer.Location));
+                          }
+			| INSTR_I8 int64
+                          {
+                                if ($1 is MiscInstr) {
+                                        switch ((MiscInstr) $1) {
+                                        case MiscInstr.ldc_i8:
+                                        codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1,
+                                                (long) $2, tokenizer.Location));
+                                        break;
+                                        }
+                                }
+                          }
+			| INSTR_R float64
+                          {
+                                switch ((MiscInstr) $1) {
+                                case MiscInstr.ldc_r4:
+                                case MiscInstr.ldc_r8:
+                                         codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, (double) $2, tokenizer.Location));
+                                         break;
+                                }
+                          }
+			| INSTR_R int64
+                          {
+                                long l = (long) $2;
+                                
+                                switch ((MiscInstr) $1) {
+                                        case MiscInstr.ldc_r4:
+                                        case MiscInstr.ldc_r8:
+                                        codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, (double) l, tokenizer.Location));
+                                        break;
+                                }
+                          }
+			| INSTR_R bytes_list
+                          {
+				byte[] fpdata;
+                                switch ((MiscInstr) $1) {
+                                        case MiscInstr.ldc_r4:
+						fpdata = (byte []) $2;
+						if (!BitConverter.IsLittleEndian) {
+							System.Array.Reverse (fpdata, 0, 4);
+						}
+                                                float s = BitConverter.ToSingle (fpdata, 0);
+                                                codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, s, tokenizer.Location));
+                                                break;
+                                        case MiscInstr.ldc_r8:
+						fpdata = (byte []) $2;
+						if (!BitConverter.IsLittleEndian) {
+							System.Array.Reverse (fpdata, 0, 8);
+						}
+                                                double d = BitConverter.ToDouble (fpdata, 0);
+                                                codegen.CurrentMethodDef.AddInstr (new LdcInstr ((MiscInstr) $1, d, tokenizer.Location));
+                                                break;
+                                }
+                          }
+			| INSTR_BRTARGET int32
+                          {
+				LabelInfo target = codegen.CurrentMethodDef.AddLabel ((int) $2);
+                                codegen.CurrentMethodDef.AddInstr (new BranchInstr ((BranchOp) $1,
+								   target, tokenizer.Location));  
+                          }
+			| INSTR_BRTARGET id
+                          {
+				LabelInfo target = codegen.CurrentMethodDef.AddLabelRef ((string) $2);
+                                codegen.CurrentMethodDef.AddInstr (new BranchInstr ((BranchOp) $1,
+                                        			   target, tokenizer.Location));
+                          }
+			| INSTR_METHOD method_ref
+                          {
+                                codegen.CurrentMethodDef.AddInstr (new MethodInstr ((MethodOp) $1,
+                                        (BaseMethodRef) $2, tokenizer.Location));
+                          }
+			| INSTR_FIELD type type_spec DOUBLE_COLON id
+                          {
+                                
+                                BaseTypeRef owner = (BaseTypeRef) $3;
+                                GenericParamRef gpr = $2 as GenericParamRef;
+                                if (gpr != null && codegen.CurrentMethodDef != null)
+                                        codegen.CurrentMethodDef.ResolveGenParam ((PEAPI.GenParam) gpr.PeapiType);
+                                IFieldRef fieldref = owner.GetFieldRef (
+                                        (BaseTypeRef) $2, (string) $5);
+
+                                codegen.CurrentMethodDef.AddInstr (new FieldInstr ((FieldOp) $1, fieldref, tokenizer.Location));
+                          }
+			| INSTR_FIELD type id
+                          {
+                                GlobalFieldRef fieldref = codegen.GetGlobalFieldRef ((BaseTypeRef) $2, (string) $3);
+
+                                codegen.CurrentMethodDef.AddInstr (new FieldInstr ((FieldOp) $1, fieldref, tokenizer.Location));
+                          }
+			| INSTR_TYPE type_spec
+                          {
+                                codegen.CurrentMethodDef.AddInstr (new TypeInstr ((TypeOp) $1,
+                                        (BaseTypeRef) $2, tokenizer.Location));
+                          }
+			| INSTR_STRING comp_qstring
+                          {
+                                if ((MiscInstr) $1 == MiscInstr.ldstr)
+                                        codegen.CurrentMethodDef.AddInstr (new LdstrInstr ((string) $2, tokenizer.Location));
+                          }
+			| INSTR_STRING K_BYTEARRAY ASSIGN bytes_list
+                          {
+                                byte[] bs = (byte[]) $4;
+                                if ((MiscInstr) $1 == MiscInstr.ldstr)
+                                        codegen.CurrentMethodDef.AddInstr (new LdstrInstr (bs, tokenizer.Location));
+                          }
+			| INSTR_STRING K_BYTEARRAY bytes_list
+                          {
+                                byte[] bs = (byte[]) $3;
+                                if ((MiscInstr) $1 == MiscInstr.ldstr)
+                                        codegen.CurrentMethodDef.AddInstr (new LdstrInstr (bs, tokenizer.Location));
+                          }
+			| INSTR_SIG call_conv type OPEN_PARENS type_list CLOSE_PARENS
+                          {
+                                ArrayList arg_list = (ArrayList) $5;
+                                BaseTypeRef[] arg_array = null;
+
+                                if (arg_list != null)
+                                        arg_array = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
+
+                                codegen.CurrentMethodDef.AddInstr (new CalliInstr ((CallConv) $2,
+                                        (BaseTypeRef) $3, arg_array, tokenizer.Location));
+                          }     
+			| INSTR_TOK owner_type
+                          {
+                                if ((MiscInstr) $1 == MiscInstr.ldtoken) {
+                                        if ($2 is BaseMethodRef)
+                                                codegen.CurrentMethodDef.AddInstr (new LdtokenInstr ((BaseMethodRef) $2, tokenizer.Location));
+                                        else if ($2 is IFieldRef)
+                                                codegen.CurrentMethodDef.AddInstr (new LdtokenInstr ((IFieldRef) $2, tokenizer.Location));
+                                        else
+                                                codegen.CurrentMethodDef.AddInstr (new LdtokenInstr ((BaseTypeRef) $2, tokenizer.Location));
+                                                
+                                }
+                          }
+			| INSTR_SWITCH OPEN_PARENS labels CLOSE_PARENS
+                          {
+                                codegen.CurrentMethodDef.AddInstr (new SwitchInstr ((ArrayList) $3, tokenizer.Location));
+                          }
+			;
+
+method_ref		: call_conv type method_name typars_clause
+			  OPEN_PARENS type_list CLOSE_PARENS
+                          {
+                                ArrayList arg_list = (ArrayList) $6;
+                                GenericArguments ga = (GenericArguments) $4;
+                                BaseTypeRef[] param_list;
+  
+                                if (arg_list != null)
+                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
+                                else
+                                        param_list = new BaseTypeRef[0];
+
+				BaseMethodRef methref = codegen.GetGlobalMethodRef ((BaseTypeRef) $2, (CallConv) $1,
+                                        (string) $3, param_list, (ga != null ? ga.Count : 0));
+
+                                if (ga != null)
+                                        methref = methref.GetGenericMethodRef (ga);
+
+                                $$ = methref;
+                          }
+                        | call_conv type type_spec DOUBLE_COLON method_name
+                          typars_clause OPEN_PARENS type_list CLOSE_PARENS 
+                          {
+                                BaseTypeRef owner = (BaseTypeRef) $3;
+                                ArrayList arg_list = (ArrayList) $8;
+                                GenericArguments ga = (GenericArguments) $6;
+                                BaseTypeRef[] param_list;
+                                BaseMethodRef methref;
+
+                                if (arg_list != null)
+                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
+                                else
+                                        param_list = new BaseTypeRef[0];
+
+                                if (codegen.IsThisAssembly ("mscorlib")) {
+                                        PrimitiveTypeRef prim = owner as PrimitiveTypeRef;
+                                        if (prim != null && prim.SigMod == "")
+                                                owner = codegen.GetTypeRef (prim.Name);
+                                }
+
+                                if (owner.UseTypeSpec) {
+                                        methref = new TypeSpecMethodRef (owner, (CallConv) $1, (BaseTypeRef) $2,
+                                                (string) $5, param_list, (ga != null ? ga.Count : 0));
+                                } else {
+                                        methref = owner.GetMethodRef ((BaseTypeRef) $2,
+                                                (CallConv) $1, (string) $5, param_list, (ga != null ? ga.Count : 0));
+                                }
+
+                                if (ga != null)
+                                        methref = methref.GetGenericMethodRef (ga);
+                                
+                                $$ = methref;
+                          }
+			;
+
+labels			: /* EMPTY */
+			| id
+                          {
+                                ArrayList label_list = new ArrayList ();
+                                label_list.Add (codegen.CurrentMethodDef.AddLabelRef ((string) $1));
+                                $$ = label_list;
+                          }
+			| int32
+                          {
+                                ArrayList label_list = new ArrayList ();
+                                label_list.Add ($1);
+                                $$ = label_list;
+                          }
+			| labels COMMA id
+                          {
+                                ArrayList label_list = (ArrayList) $1;
+                                label_list.Add (codegen.CurrentMethodDef.AddLabelRef ((string) $3));
+                          }
+			| labels COMMA int32
+                          {
+                                ArrayList label_list = (ArrayList) $1;
+                                label_list.Add ($3);
+                          }
+			;
+
+owner_type		: type_spec
+			| member_ref
+			;
+
+member_ref		: K_METHOD method_ref
+                          {
+                                $$ = $2;
+                          }
+			| K_FIELD type type_spec DOUBLE_COLON id
+                          {
+                                BaseTypeRef owner = (BaseTypeRef) $3;
+
+                                $$ = owner.GetFieldRef (
+                                        (BaseTypeRef) $2, (string) $5);
+                          }
+			| K_FIELD type id
+                          {
+                                $$ = codegen.GetGlobalFieldRef ((BaseTypeRef) $2, (string) $3);
+                          }
+			;
+
+event_all		: event_head OPEN_BRACE event_decls CLOSE_BRACE
+                          {
+                                codegen.CurrentTypeDef.EndEventDef ();
+                          }
+			;
+
+event_head		: D_EVENT event_attr type_spec comp_name
+                          {
+                                EventDef event_def = new EventDef ((FeatureAttr) $2,
+                                        (BaseTypeRef) $3, (string) $4);
+                                codegen.CurrentTypeDef.BeginEventDef (event_def);
+                                codegen.CurrentCustomAttrTarget = event_def;
+                          }
+			| D_EVENT event_attr id
+			;
+
+event_attr		: /* EMPTY */
+                          {
+                                $$ = new FeatureAttr ();
+                          }
+			| event_attr K_RTSPECIALNAME
+                          {
+                                $$ = (FeatureAttr) $1 & FeatureAttr.Rtspecialname;
+                          }
+			| event_attr K_SPECIALNAME
+                          {
+                                $$ = (FeatureAttr) $1 & FeatureAttr.Specialname;
+                          }
+			;
+
+event_decls		: /* EMPTY */
+			| event_decls event_decl
+			;
+
+event_decl		: D_ADDON method_ref semicolon_opt
+                          {
+                                codegen.CurrentTypeDef.CurrentEvent.AddAddon (
+                                        (MethodRef) $2);                                
+                          }
+			| D_REMOVEON method_ref semicolon_opt
+                          {
+                                codegen.CurrentTypeDef.CurrentEvent.AddRemoveon (
+                                        (MethodRef) $2);
+                          }
+			| D_FIRE method_ref semicolon_opt
+                          {
+                                codegen.CurrentTypeDef.CurrentEvent.AddFire (
+                                        (MethodRef) $2);
+                          }
+			| D_OTHER method_ref semicolon_opt
+                          {
+                                codegen.CurrentTypeDef.CurrentEvent.AddOther (
+                                        (MethodRef) $2);
+                          }
+			| customattr_decl
+                          {
+                                if (codegen.CurrentCustomAttrTarget != null)
+                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
+                          }
+			| extsource_spec
+			| language_decl
+			;
+
+prop_all		: prop_head OPEN_BRACE prop_decls CLOSE_BRACE
+                          {
+                                codegen.CurrentTypeDef.EndPropertyDef ();
+                          }
+			;
+
+prop_head		: D_PROPERTY prop_attr type comp_name OPEN_PARENS type_list CLOSE_PARENS init_opt
+                          {
+                                PropertyDef prop_def = new PropertyDef ((FeatureAttr) $2, (BaseTypeRef) $3,
+                                        (string) $4, (ArrayList) $6);
+                                codegen.CurrentTypeDef.BeginPropertyDef (prop_def);
+                                codegen.CurrentCustomAttrTarget = prop_def;
+
+                                if ($8 != null) {
+                                        prop_def.AddInitValue ((Constant) $8);
+                                }
+                          }
+			;
+
+prop_attr 		: /* EMPTY */
+                          {
+                                $$ = new FeatureAttr ();
+                          }
+			| prop_attr K_RTSPECIALNAME
+                          {
+                                $$ = (FeatureAttr) $1 | FeatureAttr.Rtspecialname;
+                          }
+			| prop_attr K_SPECIALNAME
+                          {
+                                $$ = (FeatureAttr) $1 | FeatureAttr.Specialname;
+                          }
+                        | prop_attr K_INSTANCE
+                          {
+                                $$ = (FeatureAttr) $1 | FeatureAttr.Instance;
+                          }
+			;
+
+prop_decls		: /* EMPTY */
+			| prop_decls prop_decl
+			;
+
+prop_decl		: D_SET method_ref
+                          {
+                                codegen.CurrentTypeDef.CurrentProperty.AddSet ((MethodRef) $2);
+                          }
+			| D_GET method_ref
+                          {
+                                codegen.CurrentTypeDef.CurrentProperty.AddGet ((MethodRef) $2);
+                          }
+			| D_OTHER method_ref
+                          {
+                                codegen.CurrentTypeDef.CurrentProperty.AddOther ((MethodRef) $2);
+                          }
+			| customattr_decl
+                         {
+                                if (codegen.CurrentCustomAttrTarget != null)
+                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
+                         }
+			| extsource_spec
+			| language_decl
+			;
+
+customattr_decl
+			: D_CUSTOM customattr_owner_type_opt custom_type
+                          {
+                                $$ = new CustomAttr ((BaseMethodRef) $3, null);
+                          }
+			| D_CUSTOM customattr_owner_type_opt custom_type ASSIGN comp_qstring
+			| D_CUSTOM customattr_owner_type_opt custom_type ASSIGN bytes_list
+                          {
+                                $$ = new CustomAttr ((BaseMethodRef) $3, new ByteArrConst ((byte[]) $5));
+                          }
+            | D_CUSTOM customattr_owner_type_opt custom_type ASSIGN OPEN_BRACE customattr_values CLOSE_BRACE
+              {
+            	$$ = new CustomAttr ((BaseMethodRef) $3, (PEAPI.Constant) $6);
+              }
+			;
+
+// TODO: unused for now
+customattr_owner_type_opt
+			: /* empty */
+			| OPEN_PARENS type CLOSE_PARENS
+			;
+
+customattr_values
+				: /* empty */
+				| K_BOOL OPEN_BRACKET int32 CLOSE_BRACKET OPEN_PARENS opt_truefalse_list CLOSE_PARENS
+				  {
+			  		var l = (List<BoolConst>) $6;
+			  		$$ = new ArrayConstant (l?.ToArray ()) {
+			  			ExplicitSize = (int) $3
+			  		};
+				  }
+				| K_BYTEARRAY bytes_list
+                 {
+    				$$ = new ByteArrConst ((byte[]) $2);
+                 }
+				| K_STRING OPEN_PARENS SQSTRING CLOSE_PARENS
+				  {
+					$$ = new StringConst ((string) $3);
+				  }
+				| customattr_ctor_args
+				  {
+				  	var c = $1 as Constant;
+			  		$$ = c ?? new ArrayConstant (((List<DataConstant>) $1).ToArray ());
+				  }
+				;
+
+customattr_ctor_args
+				: customattr_ctor_arg
+				| customattr_ctor_args customattr_ctor_arg
+				  {
+				  	var l = $1 as List<DataConstant>;
+				  	if (l == null) {
+				  		l = new List<DataConstant> () {
+				  			(DataConstant) $1
+				  		};
+				  	}
+
+				  	l.Add ((DataConstant) $2);
+				  	$$ = l;
+				  }
+				;
+
+customattr_ctor_arg
+				: field_init_primitive
+				| K_TYPE OPEN_PARENS type CLOSE_PARENS
+				  {
+				  	$$ = new StringConst (((TypeRef) $3).FullName);
+				  }
+				;
+
+			
+custom_type		: call_conv type type_spec DOUBLE_COLON method_name OPEN_PARENS type_list CLOSE_PARENS
+                          {
+                                BaseTypeRef owner = (BaseTypeRef) $3;
+                                ArrayList arg_list = (ArrayList) $7;
+                                BaseTypeRef[] param_list;
+  
+                                if (arg_list != null)
+                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
+                                else
+                                        param_list = new BaseTypeRef[0];
+
+                                $$ = owner.GetMethodRef ((BaseTypeRef) $2,
+                                        (CallConv) $1, (string) $5, param_list, 0);
+                          }
+			| call_conv type method_name OPEN_PARENS type_list CLOSE_PARENS
+                          {
+                                ArrayList arg_list = (ArrayList) $5;
+                                BaseTypeRef[] param_list;
+  
+                                if (arg_list != null)
+                                        param_list = (BaseTypeRef[]) arg_list.ToArray (typeof (BaseTypeRef));
+                                else
+                                        param_list = new BaseTypeRef[0];
+
+                                $$ = codegen.GetGlobalMethodRef ((BaseTypeRef) $2, (CallConv) $1,
+                                        (string) $3, param_list, 0);
+                          }
+			;
+
+sec_decl		: D_PERMISSION sec_action type_spec OPEN_PARENS nameval_pairs CLOSE_PARENS
+			  {
+                                $$ = TypeSpecToPermPair ($2, $3, (ArrayList) $5);
+			  }
+			| D_PERMISSION sec_action type_spec
+			  {
+                                $$ = TypeSpecToPermPair ($2, $3, null);
+			  }
+			| D_PERMISSIONSET sec_action ASSIGN bytes_list
+			  {
+				System.Text.UnicodeEncoding ue = new System.Text.UnicodeEncoding ();
+				PermissionSetAttribute psa = new PermissionSetAttribute ((System.Security.Permissions.SecurityAction) (short) $2);
+				psa.XML = ue.GetString ((byte []) $4);
+				$$ = new PermPair ((PEAPI.SecurityAction) $2, psa.CreatePermissionSet ());
+			  }
+			| D_PERMISSIONSET sec_action comp_qstring
+			  {
+				PermissionSetAttribute psa = new PermissionSetAttribute ((System.Security.Permissions.SecurityAction) (short) $2);
+				psa.XML = (string) $3;
+				$$ = new PermPair ((PEAPI.SecurityAction) $2, psa.CreatePermissionSet ());
+			  }
+			| D_PERMISSIONSET sec_action ASSIGN OPEN_BRACE permissions CLOSE_BRACE
+			  {
+				$$ = new MIPermissionSet ((PEAPI.SecurityAction) $2, (ArrayList) $5);
+			  }
+			;
+
+permissions		: permission
+			  {
+				ArrayList list = new ArrayList ();
+				list.Add ($1);
+				$$ = list;
+			  }
+			| permissions COMMA permission
+			  {
+				ArrayList list = (ArrayList) $1;
+				list.Add ($3);
+				$$ = list;
+			  }
+			;
+			
+permission		: class_ref ASSIGN OPEN_BRACE permission_members CLOSE_BRACE
+			  {
+				$$ = new MIPermission ((BaseTypeRef) $1, (ArrayList) $4);
+			  }
+			;
+
+permission_members	: permission_member
+			  {
+				  ArrayList list = new ArrayList ();
+				  list.Add ($1);
+				  $$ = list;
+			  }
+			| permission_members permission_member
+			  {
+				  ArrayList list = (ArrayList) $1;
+				  list.Add ($2);
+				  $$ = list;
+			  }
+			;
+
+permission_member	: prop_or_field primitive_type perm_mbr_nameval_pair
+			  {
+				NameValuePair pair = (NameValuePair) $3;
+				$$ = new PermissionMember ((MemberTypes) $1, (BaseTypeRef) $2, pair.Name, pair.Value);
+			  }
+			| prop_or_field K_ENUM class_ref perm_mbr_nameval_pair
+			  {
+				NameValuePair pair = (NameValuePair) $4;
+				$$ = new PermissionMember ((MemberTypes) $1, (BaseTypeRef) $3, pair.Name, pair.Value);
+			  }
+			;
+
+perm_mbr_nameval_pair	: SQSTRING ASSIGN member_init
+			  {
+				$$ = new NameValuePair ((string) $1, (PEAPI.Constant) $3);
+			  }
+			;
+
+prop_or_field		: K_PROPERTY
+			  {
+				$$ = MemberTypes.Property;
+			  }
+			| K_FIELD
+			  {
+				$$ = MemberTypes.Field;
+			  }
+			;
+
+nameval_pairs		: nameval_pair 
+			  {
+				ArrayList pairs = new ArrayList ();
+				pairs.Add ($1);
+				$$ = pairs;
+			  }
+			| nameval_pairs COMMA nameval_pair
+			  {
+			  	ArrayList pairs = (ArrayList) $1;
+				pairs.Add ($3);
+				$$ = pairs;
+			  }
+			;
+
+nameval_pair 		: comp_qstring ASSIGN cavalue
+			  {
+				$$ = new NameValuePair ((string) $1, $3);
+			  }
+			;
+
+cavalue 		: truefalse
+			| int32
+			| int32 OPEN_PARENS int32 CLOSE_PARENS
+			  {
+				$$ = $3;
+			  }
+			| comp_qstring 
+			| class_ref OPEN_PARENS K_INT8 COLON int32 CLOSE_PARENS
+			  {
+				$$ = ClassRefToObject ($1, (byte) (int) $5);
+			  }
+			| class_ref OPEN_PARENS K_INT16 COLON int32 CLOSE_PARENS
+			  {
+				$$ = ClassRefToObject ($1, (short) (int) $5);
+			  }
+			| class_ref OPEN_PARENS K_INT32 COLON int32 CLOSE_PARENS
+			  {
+				$$ = ClassRefToObject ($1, (int) $5);
+			  }
+			| class_ref OPEN_PARENS int32 CLOSE_PARENS
+			  {
+				$$ = ClassRefToObject ($1, (int) $3);
+			  }
+			;
+
+sec_action		: K_REQUEST
+			  {
+				$$ = PEAPI.SecurityAction.Request;
+			  }
+			| K_DEMAND
+			  {
+				$$ = PEAPI.SecurityAction.Demand;
+			  }
+			| K_ASSERT
+			  {
+				$$ = PEAPI.SecurityAction.Assert;
+			  }
+			| K_DENY
+			  {
+				$$ = PEAPI.SecurityAction.Deny;
+			  }
+			| K_PERMITONLY
+			  {
+				$$ = PEAPI.SecurityAction.PermitOnly;
+			  }
+			| K_LINKCHECK
+			  {
+				$$ = PEAPI.SecurityAction.LinkDemand;
+			  }
+			| K_INHERITCHECK
+			  {
+				$$ = PEAPI.SecurityAction.InheritDemand;
+			  }
+			| K_REQMIN
+			  {
+				$$ = PEAPI.SecurityAction.RequestMinimum;
+			  }
+			| K_REQOPT
+			  {
+				$$ = PEAPI.SecurityAction.RequestOptional;
+			  }
+			| K_REQREFUSE
+			  {
+				$$ = PEAPI.SecurityAction.RequestRefuse;
+			  }
+			| K_PREJITGRANT
+			  {
+				$$ = PEAPI.SecurityAction.PreJitGrant;
+			  }
+			| K_PREJITDENY
+			  {
+				$$ = PEAPI.SecurityAction.PreJitDeny;
+			  }
+			| K_NONCASDEMAND
+			  {
+				$$ = PEAPI.SecurityAction.NonCasDemand;
+			  }
+			| K_NONCASLINKDEMAND
+			  {
+				$$ = PEAPI.SecurityAction.NonCasLinkDemand;
+			  }
+			| K_NONCASINHERITANCE
+			  {
+				$$ = PEAPI.SecurityAction.NonCasInheritance;
+			  }
+			/* FIXME: Should we have LinkDemandChoice, InheritDemandChoice and DemandChoice ? */  
+			;
+
+module_head		: D_MODULE
+                          {
+                          }
+			| D_MODULE comp_name
+                          {
+                                codegen.SetModuleName ((string) $2);
+                          }
+			| D_MODULE K_EXTERN comp_name
+                          {
+                                codegen.ExternTable.AddModule ((string) $3);                         
+                          }
+			;
+
+file_decl		: D_FILE file_attr comp_name file_entry D_HASH ASSIGN
+			  bytes_list file_entry
+                          {
+                                codegen.SetFileRef (new FileRef ((string) $3, (byte []) $7, (bool) $2, (bool) $8)); 
+                          }
+			| D_FILE file_attr comp_name file_entry
+                          {
+                                // We need to compute the hash ourselves. :-(
+                                // AssemblyName an = AssemblyName.GetName ((string) $3);
+                          }
+			;
+
+file_attr 		: /* EMPTY */
+                          {
+                                $$ = true;
+                          }
+			| file_attr K_NOMETADATA
+                          {
+                                $$ = false;
+                          }
+			;
+
+file_entry		: /* EMPTY */
+                          {
+                                $$ = false;
+                          }
+			| D_ENTRYPOINT
+                          {
+                                $$ = true;
+                          }
+			;
+
+assembly_all		: assembly_head OPEN_BRACE assembly_decls CLOSE_BRACE
+			  {
+				codegen.CurrentCustomAttrTarget = null;
+				codegen.CurrentDeclSecurityTarget = null;
+			  }
+			;
+
+assembly_head		: D_ASSEMBLY legacylibrary_opt asm_attr slashed_name
+                          {
+                                codegen.SetThisAssembly ((string) $4, (PEAPI.AssemAttr) $3);
+                                codegen.CurrentCustomAttrTarget = codegen.ThisAssembly;
+				codegen.CurrentDeclSecurityTarget = codegen.ThisAssembly;
+                          }
+			;
+
+asm_attr		: /* EMPTY */
+			  {
+				  $$ = new PEAPI.AssemAttr ();
+			  }
+			/*| asm_attr K_NOAPPDOMAIN
+			| asm_attr K_NOPROCESS
+			| asm_attr K_NOMACHINE*/
+			| asm_attr K_RETARGETABLE
+			  {
+				  $$ = ((PEAPI.AssemAttr) $1) | PEAPI.AssemAttr.Retargetable;
+			  }
+			;
+
+assembly_decls		: /* EMPTY */
+			| assembly_decls assembly_decl
+			;
+
+assembly_decl		: D_PUBLICKEY ASSIGN bytes_list
+			  {
+				codegen.ThisAssembly.SetPublicKey ((byte []) $3);
+			  }
+			| D_VER int32 COLON int32 COLON int32 COLON int32
+			  {
+				codegen.ThisAssembly.SetVersion ((int) $2, (int) $4, (int) $6, (int) $8);
+			  }
+			| D_LOCALE comp_qstring
+			  {
+				codegen.ThisAssembly.SetLocale ((string) $2);
+			  }
+			| D_LOCALE ASSIGN bytes_list
+			| D_HASH K_ALGORITHM int32
+			  {
+				codegen.ThisAssembly.SetHashAlgorithm ((int) $3);
+			  }
+			| customattr_decl
+			  {
+				codegen.ThisAssembly.AddCustomAttribute ((CustomAttr) $1);
+			  }
+			| sec_decl
+			  {
+				AddSecDecl ($1, true);
+			  }
+			;
+
+asm_or_ref_decl		: D_PUBLICKEY ASSIGN bytes_list
+			| D_VER int32 COLON int32 COLON int32 COLON int32 
+			| D_LOCALE comp_qstring
+			| D_LOCALE ASSIGN bytes_list
+			| customattr_decl
+			;
+
+assemblyref_all		: assemblyref_head OPEN_BRACE assemblyref_decls CLOSE_BRACE
+			;
+
+assemblyref_head	: D_ASSEMBLY K_EXTERN legacylibrary_opt asm_attr slashed_name
+                          {
+                                System.Reflection.AssemblyName asmb_name = 
+					new System.Reflection.AssemblyName ();
+				asmb_name.Name = (string) $5;
+				codegen.BeginAssemblyRef ((string) $5, asmb_name, (PEAPI.AssemAttr) $4);
+                          }
+			| D_ASSEMBLY K_EXTERN legacylibrary_opt asm_attr slashed_name K_AS slashed_name
+                          {
+                                System.Reflection.AssemblyName asmb_name = 
+					new System.Reflection.AssemblyName ();
+				asmb_name.Name = (string) $5;
+				codegen.BeginAssemblyRef ((string) $7, asmb_name, (PEAPI.AssemAttr) $4);
+                          }
+			;
+
+assemblyref_decls	: /* EMPTY */
+			| assemblyref_decls assemblyref_decl
+			;
+
+assemblyref_decl	: D_VER int32 COLON int32 COLON int32 COLON int32
+                          {
+                                codegen.CurrentAssemblyRef.SetVersion ((int) $2, (int) $4, (int) $6, (int) $8);
+                          }
+                        | D_PUBLICKEY ASSIGN bytes_list
+                          {
+                                codegen.CurrentAssemblyRef.SetPublicKey ((byte []) $3);
+                          }
+                        | D_PUBLICKEYTOKEN ASSIGN bytes_list
+                          {
+                                codegen.CurrentAssemblyRef.SetPublicKeyToken ((byte []) $3);
+                          }
+			| D_LOCALE comp_qstring
+                          {
+                                codegen.CurrentAssemblyRef.SetLocale ((string) $2);
+                          }
+			| D_LOCALE ASSIGN bytes_list
+			
+                        | D_HASH ASSIGN bytes_list
+                          {
+                                codegen.CurrentAssemblyRef.SetHash ((byte []) $3);
+                          }
+                        | customattr_decl
+                          {
+                                if (codegen.CurrentCustomAttrTarget != null)
+                                        codegen.CurrentCustomAttrTarget.AddCustomAttribute ((CustomAttr) $1);
+                          }
+            | K_AUTO  /* MS ilasm uses this keyword to lookup the specified assembly in the GAC and embeds its attributes, we just ignore it */
+			;
+
+exptype_all		: exptype_head OPEN_BRACE exptype_decls CLOSE_BRACE
+			;
+
+exptype_head		: D_CLASS K_EXTERN expt_attr comp_name
+					{
+						current_extern = new KeyValuePair<string, TypeAttr> ((string) $4, (TypeAttr) $3);
+					}
+			;
+
+expt_attr 		: { $$ = 0; } /* EMPTY */
+			| expt_attr K_PRIVATE                   { $$ = (TypeAttr)$1 | TypeAttr.Private; }
+			| expt_attr K_PUBLIC                    { $$ = (TypeAttr)$1 | TypeAttr.Public; }
+			| expt_attr K_NESTED K_PUBLIC           { $$ = (TypeAttr)$1 | TypeAttr.NestedPublic; }
+			| expt_attr K_NESTED K_PRIVATE          { $$ = (TypeAttr)$1 | TypeAttr.NestedPrivate; }
+			| expt_attr K_NESTED K_FAMILY           { $$ = (TypeAttr)$1 | TypeAttr.NestedFamily; }
+			| expt_attr K_NESTED K_ASSEMBLY         { $$ = (TypeAttr)$1 | TypeAttr.NestedAssembly;}
+			| expt_attr K_NESTED K_FAMANDASSEM      { $$ = (TypeAttr)$1 | TypeAttr.NestedFamAndAssem; }
+			| expt_attr K_NESTED K_FAMORASSEM       { $$ = (TypeAttr)$1 | TypeAttr.NestedFamOrAssem; }
+			| K_FORWARDER                           { $$ = TypeAttr.Forwarder; }
+			;
+
+exptype_decls		: /* EMPTY */
+			| exptype_decls exptype_decl
+			;
+
+exptype_decl		: D_FILE comp_name
+			| D_CLASS K_EXTERN comp_name
+			| customattr_decl
+			| D_ASSEMBLY K_EXTERN comp_name
+			  {
+			  	codegen.ExternTable.AddClass (current_extern.Key, current_extern.Value, (string) $3);
+			  }
+			;
+
+manifestres_all		: manifestres_head OPEN_BRACE manifestres_decls CLOSE_BRACE
+			;
+
+manifestres_head	: D_MRESOURCE manres_attr comp_name
+			  {
+				FileStream s = new FileStream ((string) $3, FileMode.Open, FileAccess.Read);
+				byte [] buff = new byte [s.Length];
+				s.Read (buff, 0, (int) s.Length);
+				s.Close ();
+
+				codegen.AddManifestResource (new ManifestResource ((string) $3, buff, ($2 == null) ? 0 : (uint) $2));
+			  }
+			;
+
+manres_attr		: /* EMPTY */
+			| manres_attr K_PUBLIC { $$ = ManifestResource.PublicResource; }
+			| manres_attr K_PRIVATE { $$ = ManifestResource.PrivateResource; } 
+			;
+
+manifestres_decls	: /* EMPTY */
+			| manifestres_decls manifestres_decl
+			;
+
+manifestres_decl	: D_FILE comp_name K_AT int32
+			| D_ASSEMBLY K_EXTERN slashed_name
+			| customattr_decl
+			;
+
+comp_qstring		: QSTRING
+			| comp_qstring PLUS QSTRING 	{ $$ = String.Format ("{0}{1}", $1, $3); }
+			;
+
+int32			: INT64
+                          {
+                                long l = (long) $1;
+                                byte[] intb = BitConverter.GetBytes (l);
+                                $$ = BitConverter.ToInt32 (intb, BitConverter.IsLittleEndian ? 0 : 4);
+                          }
+			;
+
+int64		        : INT64
+			;
+
+float64			: FLOAT64
+			| K_FLOAT32 OPEN_PARENS INT32 CLOSE_PARENS
+                          {
+                                int i = (int) $3;
+                                byte[] intb = BitConverter.GetBytes (i);
+                                $$ = (double) BitConverter.ToSingle (intb, 0);
+                          }
+                        | K_FLOAT32 OPEN_PARENS INT64 CLOSE_PARENS
+                          {
+                                long l = (long) $3;
+                                byte[] intb = BitConverter.GetBytes (l);
+                                $$ = (double) BitConverter.ToSingle (intb, BitConverter.IsLittleEndian ? 0 : 4);
+                          }
+			| K_FLOAT64 OPEN_PARENS INT64 CLOSE_PARENS
+                          {
+                                byte[] intb = BitConverter.GetBytes ((long) $3);
+				$$ = BitConverter.ToDouble (intb, 0);
+                          }
+                        | K_FLOAT64 OPEN_PARENS INT32 CLOSE_PARENS
+                          {
+                                byte[] intb = BitConverter.GetBytes ((int) $3);
+                                $$ = (double) BitConverter.ToSingle (intb, 0);
+                          }
+			;
+
+hexbyte			: HEXBYTE       { }
+			;
+
+bytes_list              : OPEN_PARENS
+                          {
+                                tokenizer.InByteArray = true;
+                          }
+                          bytes CLOSE_PARENS
+                          {
+                                $$ = $3;
+                                tokenizer.InByteArray = false;
+                          }
+                        ;
+
+bytes 			: /* EMPTY */   { $$ = new byte[0]; }
+			| hexbytes
+                          {
+                                ArrayList byte_list = (ArrayList) $1;
+                                $$ = byte_list.ToArray (typeof (byte));
+                          }
+			;
+
+hexbytes		: hexbyte
+                          {
+                                ArrayList byte_list = new ArrayList ();
+                                byte_list.Add (Convert.ToByte ($1));
+                                $$ = byte_list;
+                          }
+			| hexbytes hexbyte
+                          {
+                                ArrayList byte_list = (ArrayList) $1;
+                                byte_list.Add (Convert.ToByte ($2));
+                          }
+			;
+
+truefalse		: K_TRUE
+                          {
+                                $$ = true;
+                          }
+			| K_FALSE
+                          {
+                                $$ = false;
+                          }
+			;
+
+id			: ID
+			| SQSTRING
+			;
+
+comp_name		: id
+			| comp_name DOT comp_name
+                          {
+                                $$ = (string) $1 + '.' + (string) $3;
+                          }
+                        | COMP_NAME
+			;
+
+semicolon_opt
+			: /* empty */
+			| SEMICOLON
+			;
+
+legacylibrary_opt	: /* empty */
+					| K_LEGACY K_LIBRARY  /* MS ilasm has these keywords for backwards compatibility, we just ignore them */
+					;
+
+%%
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/parser/ScannerAdapter.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/parser/ScannerAdapter.cs
@@ -1,60 +1,60 @@
-// ScannerAdapter.cs
-// (C) Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-
-namespace Mono.ILASM {
-
-	/// <summary>
-	/// </summary>
-	public class ScannerAdapter : yyParser.yyInput {
-
-		private ITokenStream tokens;
-
-		/// <summary>
-		/// </summary>
-		/// <param name="tokens"></param>
-		public ScannerAdapter (ITokenStream tokens)
-		{
-			this.tokens = tokens;
-		}
-
-
-		/// <summary>
-		/// </summary>
-		public ITokenStream BaseStream {
-			get {
-				return tokens;
-			}
-		}
-
-		//
-		// yyParser.yyInput interface
-		//
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public bool advance ()
-		{
-			return (tokens.NextToken != ILToken.EOF);
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public int token ()
-		{
-			return tokens.LastToken.TokenId;
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public object value ()
-		{
-			return tokens.LastToken.Value;
-		}
-	}
-}
-
+// ScannerAdapter.cs
+// (C) Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+
+namespace Mono.ILASM {
+
+	/// <summary>
+	/// </summary>
+	public class ScannerAdapter : yyParser.yyInput {
+
+		private ITokenStream tokens;
+
+		/// <summary>
+		/// </summary>
+		/// <param name="tokens"></param>
+		public ScannerAdapter (ITokenStream tokens)
+		{
+			this.tokens = tokens;
+		}
+
+
+		/// <summary>
+		/// </summary>
+		public ITokenStream BaseStream {
+			get {
+				return tokens;
+			}
+		}
+
+		//
+		// yyParser.yyInput interface
+		//
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public bool advance ()
+		{
+			return (tokens.NextToken != ILToken.EOF);
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public int token ()
+		{
+			return tokens.LastToken.TokenId;
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public object value ()
+		{
+			return tokens.LastToken.Value;
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/ILReader.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/ILReader.cs
@@ -1,166 +1,166 @@
-// ILReader.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.IO;
-using System.Text;
-using System.Collections;
-
-namespace Mono.ILASM {
-
-
-	/// <summary>
-	/// </summary>
-	public class ILReader {
-		
-		private StreamReader reader;
-		private Stack putback_stack;
-		private Location location;
-		private Location markedLocation;
-		
-		public ILReader (StreamReader reader)
-		{
-			this.reader = reader;
-			putback_stack = new Stack ();
-			
-			location = new Location ();
-			markedLocation = Location.Unknown;
-		}
-
-
-
-		/// <summary>
-		/// </summary>
-		public Location Location {
-			get {
-				return location;
-			}
-		}
-
-
-		/// <summary>
-		/// Provides access to underlying StreamReader.
-		/// </summary>
-		public StreamReader BaseReader {
-			get {
-				return reader;
-			}
-		}
-
-		private int DoRead ()
-		{
-			if (putback_stack.Count > 0) 
-				return (char) putback_stack.Pop ();
-			
-			return reader.Read ();
-		}
-
-		private int DoPeek ()
-		{
-			if (putback_stack.Count > 0)
-				return (char) putback_stack.Peek ();
-			
-			return reader.Peek ();
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public int Read ()
-		{
-			int read = DoRead ();
-			if (read == '\n')
-				location.NewLine ();
-			else
-				location.NextColumn ();
-			return read;
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public int Peek ()
-		{
-			return DoPeek ();
-		}
-
-
-		/// <summary>
-		/// </summary>
-		public void Unread (char c)
-		{
-			putback_stack.Push (c);
-
-			if ('\n' == c)
-				location.PreviousLine ();
-
-			location.PreviousColumn ();
-		}
-
-
-		/// <summary>
-		/// </summary>
-		/// <param name="chars"></param>
-		public void Unread (char [] chars)
-		{
-			for (int i=chars.Length-1; i>=0; i--)
-				Unread (chars[i]);					
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <param name="c"></param>
-		public void Unread (int c)
-		{
-			Unread ((char)c);
-		}
-
-
-		/// <summary>
-		/// </summary>
-		public void SkipWhitespace ()
-		{
-			int ch = Read ();
-			for (; ch != -1 && Char.IsWhiteSpace((char) ch); ch = Read ());
-			if (ch != -1) Unread (ch);
-		}
-
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public string ReadToWhitespace ()
-		{
-			StringBuilder sb = new StringBuilder ();
-			int ch = Read ();
-			for (; ch != -1 && !Char.IsWhiteSpace((char) ch); sb.Append ((char) ch), ch = Read ());
-			if (ch != -1) Unread (ch);
-			return sb.ToString ();
-		}
-
-
-		/// <summary>
-		/// </summary>
-		public void MarkLocation ()
-		{
-			if (markedLocation == Location.Unknown) {
-				markedLocation = new Location (location);
-			} else {
-				markedLocation.CopyFrom (location);
-			}
-		}
-
-
-		/// <summary>
-		/// </summary>
-		public void RestoreLocation ()
-		{
-			if (markedLocation != Location.Unknown) {
-				location.CopyFrom (markedLocation);
-			}
-		}
-
-	}
-
-}
-
+// ILReader.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.IO;
+using System.Text;
+using System.Collections;
+
+namespace Mono.ILASM {
+
+
+	/// <summary>
+	/// </summary>
+	public class ILReader {
+		
+		private StreamReader reader;
+		private Stack putback_stack;
+		private Location location;
+		private Location markedLocation;
+		
+		public ILReader (StreamReader reader)
+		{
+			this.reader = reader;
+			putback_stack = new Stack ();
+			
+			location = new Location ();
+			markedLocation = Location.Unknown;
+		}
+
+
+
+		/// <summary>
+		/// </summary>
+		public Location Location {
+			get {
+				return location;
+			}
+		}
+
+
+		/// <summary>
+		/// Provides access to underlying StreamReader.
+		/// </summary>
+		public StreamReader BaseReader {
+			get {
+				return reader;
+			}
+		}
+
+		private int DoRead ()
+		{
+			if (putback_stack.Count > 0) 
+				return (char) putback_stack.Pop ();
+			
+			return reader.Read ();
+		}
+
+		private int DoPeek ()
+		{
+			if (putback_stack.Count > 0)
+				return (char) putback_stack.Peek ();
+			
+			return reader.Peek ();
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public int Read ()
+		{
+			int read = DoRead ();
+			if (read == '\n')
+				location.NewLine ();
+			else
+				location.NextColumn ();
+			return read;
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public int Peek ()
+		{
+			return DoPeek ();
+		}
+
+
+		/// <summary>
+		/// </summary>
+		public void Unread (char c)
+		{
+			putback_stack.Push (c);
+
+			if ('\n' == c)
+				location.PreviousLine ();
+
+			location.PreviousColumn ();
+		}
+
+
+		/// <summary>
+		/// </summary>
+		/// <param name="chars"></param>
+		public void Unread (char [] chars)
+		{
+			for (int i=chars.Length-1; i>=0; i--)
+				Unread (chars[i]);					
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <param name="c"></param>
+		public void Unread (int c)
+		{
+			Unread ((char)c);
+		}
+
+
+		/// <summary>
+		/// </summary>
+		public void SkipWhitespace ()
+		{
+			int ch = Read ();
+			for (; ch != -1 && Char.IsWhiteSpace((char) ch); ch = Read ());
+			if (ch != -1) Unread (ch);
+		}
+
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public string ReadToWhitespace ()
+		{
+			StringBuilder sb = new StringBuilder ();
+			int ch = Read ();
+			for (; ch != -1 && !Char.IsWhiteSpace((char) ch); sb.Append ((char) ch), ch = Read ());
+			if (ch != -1) Unread (ch);
+			return sb.ToString ();
+		}
+
+
+		/// <summary>
+		/// </summary>
+		public void MarkLocation ()
+		{
+			if (markedLocation == Location.Unknown) {
+				markedLocation = new Location (location);
+			} else {
+				markedLocation.CopyFrom (location);
+			}
+		}
+
+
+		/// <summary>
+		/// </summary>
+		public void RestoreLocation ()
+		{
+			if (markedLocation != Location.Unknown) {
+				location.CopyFrom (markedLocation);
+			}
+		}
+
+	}
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/ILTables.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/ILTables.cs
@@ -1,336 +1,336 @@
-// ILTables.cs
-// Mechanically generated  - DO NOT EDIT!
-//
-// (C) Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.Collections;
-using System.Reflection.Emit;
-
-namespace Mono.ILASM {
-
-
-
-
-
-        public sealed class ILTables {
-
-                private static Hashtable keywords = null;
-                private static Hashtable directives = null;
-                private static readonly object mutex;
-
-
-                private ILTables ()
-                {
-                }
-
-                static ILTables ()
-                {
-                        mutex = new object ();
-                }
-
-                private static void AllocTable (ref Hashtable tbl, int size)
-                {
-                        lock (mutex) {
-                                if (tbl == null)
-                                        tbl = new Hashtable (size);
-                        }
-                }
-
-                public static Hashtable Directives
-                {
-                        get {
-                                if (directives != null) return directives;
-
-                                AllocTable (ref directives, 300);
-
-                                directives [".addon"] = new ILToken (Token.D_ADDON, ".addon");
-                                directives [".algorithm"] = new ILToken (Token.D_ALGORITHM, ".algorithm");
-                                directives [".assembly"] = new ILToken (Token.D_ASSEMBLY, ".assembly");
-                                directives [".backing"] = new ILToken (Token.D_BACKING, ".backing");
-                                directives [".blob"] = new ILToken (Token.D_BLOB, ".blob");
-                                directives [".capability"] = new ILToken (Token.D_CAPABILITY, ".capability");
-                                directives [".cctor"] = new ILToken (Token.D_CCTOR, ".cctor");
-                                directives [".class"] = new ILToken (Token.D_CLASS, ".class");
-                                directives [".comtype"] = new ILToken (Token.D_COMTYPE, ".comtype");
-                                directives [".config"] = new ILToken (Token.D_CONFIG, ".config");
-                                directives [".imagebase"] = new ILToken (Token.D_IMAGEBASE, ".imagebase");
-                                directives [".corflags"] = new ILToken (Token.D_CORFLAGS, ".corflags");
-                                directives [".ctor"] = new ILToken (Token.D_CTOR, ".ctor");
-                                directives [".custom"] = new ILToken (Token.D_CUSTOM, ".custom");
-                                directives [".data"] = new ILToken (Token.D_DATA, ".data");
-                                directives [".emitbyte"] = new ILToken (Token.D_EMITBYTE, ".emitbyte");
-                                directives [".entrypoint"] = new ILToken (Token.D_ENTRYPOINT, ".entrypoint");
-                                directives [".event"] = new ILToken (Token.D_EVENT, ".event");
-                                directives [".exeloc"] = new ILToken (Token.D_EXELOC, ".exeloc");
-                                directives [".export"] = new ILToken (Token.D_EXPORT, ".export");
-                                directives [".field"] = new ILToken (Token.D_FIELD, ".field");
-                                directives [".file"] = new ILToken (Token.D_FILE, ".file");
-                                directives [".fire"] = new ILToken (Token.D_FIRE, ".fire");
-                                directives [".get"] = new ILToken (Token.D_GET, ".get");
-                                directives [".hash"] = new ILToken (Token.D_HASH, ".hash");
-                                directives [".implicitcom"] = new ILToken (Token.D_IMPLICITCOM, ".implicitcom");
-                                directives [".language"] = new ILToken (Token.D_LANGUAGE, ".language");
-                                directives [".line"] = new ILToken (Token.D_LINE, ".line");
-                                directives ["#line"] = new ILToken (Token.D_XLINE, "#line");
-                                directives [".locale"] = new ILToken (Token.D_LOCALE, ".locale");
-                                directives [".locals"] = new ILToken (Token.D_LOCALS, ".locals");
-                                directives [".manifestres"] = new ILToken (Token.D_MANIFESTRES, ".manifestres");
-                                directives [".maxstack"] = new ILToken (Token.D_MAXSTACK, ".maxstack");
-                                directives [".method"] = new ILToken (Token.D_METHOD, ".method");
-                                directives [".mime"] = new ILToken (Token.D_MIME, ".mime");
-                                directives [".module"] = new ILToken (Token.D_MODULE, ".module");
-                                directives [".mresource"] = new ILToken (Token.D_MRESOURCE, ".mresource");
-                                directives [".namespace"] = new ILToken (Token.D_NAMESPACE, ".namespace");
-                                directives [".originator"] = new ILToken (Token.D_ORIGINATOR, ".originator");
-                                directives [".os"] = new ILToken (Token.D_OS, ".os");
-                                directives [".other"] = new ILToken (Token.D_OTHER, ".other");
-                                directives [".override"] = new ILToken (Token.D_OVERRIDE, ".override");
-                                directives [".pack"] = new ILToken (Token.D_PACK, ".pack");
-                                directives [".param"] = new ILToken (Token.D_PARAM, ".param");
-                                directives [".permission"] = new ILToken (Token.D_PERMISSION, ".permission");
-                                directives [".permissionset"] = new ILToken (Token.D_PERMISSIONSET, ".permissionset");
-                                directives [".processor"] = new ILToken (Token.D_PROCESSOR, ".processor");
-                                directives [".property"] = new ILToken (Token.D_PROPERTY, ".property");
-                                directives [".publickey"] = new ILToken (Token.D_PUBLICKEY, ".publickey");
-                                directives [".publickeytoken"] = new ILToken (Token.D_PUBLICKEYTOKEN, ".publickeytoken");
-                                directives [".removeon"] = new ILToken (Token.D_REMOVEON, ".removeon");
-                                directives [".set"] = new ILToken (Token.D_SET, ".set");
-                                directives [".size"] = new ILToken (Token.D_SIZE, ".size");
-				directives [".stackreserve"] = new ILToken (Token.D_STACKRESERVE, ".stackreserve");
-                                directives [".subsystem"] = new ILToken (Token.D_SUBSYSTEM, ".subsystem");
-                                directives [".title"] = new ILToken (Token.D_TITLE, ".title");
-                                directives [".try"] = new ILToken (Token.D_TRY, ".try");
-                                directives [".ver"] = new ILToken (Token.D_VER, ".ver");
-                                directives [".vtable"] = new ILToken (Token.D_VTABLE, ".vtable");
-                                directives [".vtentry"] = new ILToken (Token.D_VTENTRY, ".vtentry");
-                                directives [".vtfixup"] = new ILToken (Token.D_VTFIXUP, ".vtfixup");
-                                directives [".zeroinit"] = new ILToken (Token.D_ZEROINIT, ".zeroinit");
-
-                                return directives;
-                        }
-                }
-
-
-
-                public static Hashtable Keywords
-                {
-                        get {
-                                if (keywords != null) return keywords;
-
-                                AllocTable (ref keywords, 300);
-
-                                keywords ["at"] = new ILToken (Token.K_AT, "at");
-                                keywords ["as"] = new ILToken (Token.K_AS, "as");
-                                keywords ["implicitcom"] = new ILToken (Token.K_IMPLICITCOM, "implicitcom");
-                                keywords ["implicitres"] = new ILToken (Token.K_IMPLICITRES, "implicitres");
-                                keywords ["noappdomain"] = new ILToken (Token.K_NOAPPDOMAIN, "noappdomain");
-                                keywords ["noprocess"] = new ILToken (Token.K_NOPROCESS, "noprocess");
-                                keywords ["nomachine"] = new ILToken (Token.K_NOMACHINE, "nomachine");
-                                keywords ["extern"] = new ILToken (Token.K_EXTERN, "extern");
-                                keywords ["instance"] = new ILToken (Token.K_INSTANCE, "instance");
-                                keywords ["explicit"] = new ILToken (Token.K_EXPLICIT, "explicit");
-                                keywords ["default"] = new ILToken (Token.K_DEFAULT, "default");
-                                keywords ["vararg"] = new ILToken (Token.K_VARARG, "vararg");
-                                keywords ["unmanaged"] = new ILToken (Token.K_UNMANAGED, "unmanaged");
-                                keywords ["cdecl"] = new ILToken (Token.K_CDECL, "cdecl");
-                                keywords ["stdcall"] = new ILToken (Token.K_STDCALL, "stdcall");
-                                keywords ["thiscall"] = new ILToken (Token.K_THISCALL, "thiscall");
-                                keywords ["fastcall"] = new ILToken (Token.K_FASTCALL, "fastcall");
-                                keywords ["marshal"] = new ILToken (Token.K_MARSHAL, "marshal");
-                                keywords ["in"] = new ILToken (Token.K_IN, "in");
-                                keywords ["out"] = new ILToken (Token.K_OUT, "out");
-                                keywords ["opt"] = new ILToken (Token.K_OPT, "opt");
-                                // Not a keyword according to ilasm 1.1
-                                // keywords ["lcid"] = new ILToken (Token.K_LCID, "lcid");
-                                //keywords ["retval"] = new ILToken (Token.K_RETVAL, "retval");
-                                keywords ["static"] = new ILToken (Token.K_STATIC, "static");
-                                keywords ["public"] = new ILToken (Token.K_PUBLIC, "public");
-                                keywords ["private"] = new ILToken (Token.K_PRIVATE, "private");
-                                keywords ["family"] = new ILToken (Token.K_FAMILY, "family");
-                                keywords ["initonly"] = new ILToken (Token.K_INITONLY, "initonly");
-                                keywords ["rtspecialname"] = new ILToken (Token.K_RTSPECIALNAME, "rtspecialname");
-                                keywords ["specialname"] = new ILToken (Token.K_SPECIALNAME, "specialname");
-                                keywords ["assembly"] = new ILToken (Token.K_ASSEMBLY, "assembly");
-                                keywords ["famandassem"] = new ILToken (Token.K_FAMANDASSEM, "famandassem");
-                                keywords ["famorassem"] = new ILToken (Token.K_FAMORASSEM, "famorassem");
-                                keywords ["privatescope"] = new ILToken (Token.K_PRIVATESCOPE, "privatescope");
-                                keywords ["literal"] = new ILToken (Token.K_LITERAL, "literal");
-                                keywords ["notserialized"] = new ILToken (Token.K_NOTSERIALIZED, "notserialized");
-                                keywords ["value"] = new ILToken (Token.K_VALUE, "value");
-                                keywords ["not_in_gc_heap"] = new ILToken (Token.K_NOT_IN_GC_HEAP, "not_in_gc_heap");
-                                keywords ["interface"] = new ILToken (Token.K_INTERFACE, "interface");
-                                keywords ["sealed"] = new ILToken (Token.K_SEALED, "sealed");
-                                keywords ["abstract"] = new ILToken (Token.K_ABSTRACT, "abstract");
-                                keywords ["auto"] = new ILToken (Token.K_AUTO, "auto");
-                                keywords ["sequential"] = new ILToken (Token.K_SEQUENTIAL, "sequential");
-                                keywords ["ansi"] = new ILToken (Token.K_ANSI, "ansi");
-                                keywords ["unicode"] = new ILToken (Token.K_UNICODE, "unicode");
-                                keywords ["autochar"] = new ILToken (Token.K_AUTOCHAR, "autochar");
-                                keywords ["bestfit"] = new ILToken (Token.K_BESTFIT, "bestfit");
-                                keywords ["charmaperror"] = new ILToken (Token.K_CHARMAPERROR, "charmaperror");
-                                keywords ["import"] = new ILToken (Token.K_IMPORT, "import");
-                                keywords ["serializable"] = new ILToken (Token.K_SERIALIZABLE, "serializable");
-                                keywords ["nested"] = new ILToken (Token.K_NESTED, "nested");
-                                keywords ["lateinit"] = new ILToken (Token.K_LATEINIT, "lateinit");
-                                keywords ["extends"] = new ILToken (Token.K_EXTENDS, "extends");
-                                keywords ["implements"] = new ILToken (Token.K_IMPLEMENTS, "implements");
-                                keywords ["final"] = new ILToken (Token.K_FINAL, "final");
-                                keywords ["virtual"] = new ILToken (Token.K_VIRTUAL, "virtual");
-                                keywords ["hidebysig"] = new ILToken (Token.K_HIDEBYSIG, "hidebysig");
-                                keywords ["newslot"] = new ILToken (Token.K_NEWSLOT, "newslot");
-                                keywords ["unmanagedexp"] = new ILToken (Token.K_UNMANAGEDEXP, "unmanagedexp");
-                                keywords ["pinvokeimpl"] = new ILToken (Token.K_PINVOKEIMPL, "pinvokeimpl");
-                                keywords ["nomangle"] = new ILToken (Token.K_NOMANGLE, "nomangle");
-                                keywords ["ole"] = new ILToken (Token.K_OLE, "ole");
-                                keywords ["lasterr"] = new ILToken (Token.K_LASTERR, "lasterr");
-                                keywords ["winapi"] = new ILToken (Token.K_WINAPI, "winapi");
-                                keywords ["native"] = new ILToken (Token.K_NATIVE, "native");
-                                keywords ["il"] = new ILToken (Token.K_IL, "il");
-                                keywords ["cil"] = new ILToken (Token.K_CIL, "cil");
-                                keywords ["optil"] = new ILToken (Token.K_OPTIL, "optil");
-                                keywords ["managed"] = new ILToken (Token.K_MANAGED, "managed");
-                                keywords ["forwardref"] = new ILToken (Token.K_FORWARDREF, "forwardref");
-                                keywords ["runtime"] = new ILToken (Token.K_RUNTIME, "runtime");
-                                keywords ["internalcall"] = new ILToken (Token.K_INTERNALCALL, "internalcall");
-                                keywords ["synchronized"] = new ILToken (Token.K_SYNCHRONIZED, "synchronized");
-                                keywords ["noinlining"] = new ILToken (Token.K_NOINLINING, "noinlining");
-                                keywords ["custom"] = new ILToken (Token.K_CUSTOM, "custom");
-                                keywords ["fixed"] = new ILToken (Token.K_FIXED, "fixed");
-                                keywords ["sysstring"] = new ILToken (Token.K_SYSSTRING, "sysstring");
-                                keywords ["array"] = new ILToken (Token.K_ARRAY, "array");
-                                keywords ["variant"] = new ILToken (Token.K_VARIANT, "variant");
-                                keywords ["currency"] = new ILToken (Token.K_CURRENCY, "currency");
-                                keywords ["syschar"] = new ILToken (Token.K_SYSCHAR, "syschar");
-                                keywords ["void"] = new ILToken (Token.K_VOID, "void");
-                                keywords ["bool"] = new ILToken (Token.K_BOOL, "bool");
-                                keywords ["int8"] = new ILToken (Token.K_INT8, "int8");
-                                keywords ["int16"] = new ILToken (Token.K_INT16, "int16");
-                                keywords ["int32"] = new ILToken (Token.K_INT32, "int32");
-                                keywords ["int64"] = new ILToken (Token.K_INT64, "int64");
-                                keywords ["float32"] = new ILToken (Token.K_FLOAT32, "float32");
-                                keywords ["float64"] = new ILToken (Token.K_FLOAT64, "float64");
-                                keywords ["error"] = new ILToken (Token.K_ERROR, "error");
-                                keywords ["unsigned"] = new ILToken (Token.K_UNSIGNED, "unsigned");
-                                keywords ["uint"] = new ILToken (Token.K_UINT, "uint");
-                                keywords ["uint8"] = new ILToken (Token.K_UINT8, "uint8");
-                                keywords ["uint16"] = new ILToken (Token.K_UINT16, "uint16");
-                                keywords ["uint32"] = new ILToken (Token.K_UINT32, "uint32");
-                                keywords ["uint64"] = new ILToken (Token.K_UINT64, "uint64");
-                                keywords ["decimal"] = new ILToken (Token.K_DECIMAL, "decimal");
-                                keywords ["date"] = new ILToken (Token.K_DATE, "date");
-                                keywords ["bstr"] = new ILToken (Token.K_BSTR, "bstr");
-                                keywords ["lpstr"] = new ILToken (Token.K_LPSTR, "lpstr");
-                                keywords ["lpwstr"] = new ILToken (Token.K_LPWSTR, "lpwstr");
-                                keywords ["lptstr"] = new ILToken (Token.K_LPTSTR, "lptstr");
-                                keywords ["objectref"] = new ILToken (Token.K_OBJECTREF, "objectref");
-                                keywords ["iunknown"] = new ILToken (Token.K_IUNKNOWN, "iunknown");
-                                keywords ["idispatch"] = new ILToken (Token.K_IDISPATCH, "idispatch");
-                                keywords ["struct"] = new ILToken (Token.K_STRUCT, "struct");
-                                keywords ["safearray"] = new ILToken (Token.K_SAFEARRAY, "safearray");
-                                keywords ["int"] = new ILToken (Token.K_INT, "int");
-                                keywords ["byvalstr"] = new ILToken (Token.K_BYVALSTR, "byvalstr");
-                                keywords ["tbstr"] = new ILToken (Token.K_TBSTR, "tbstr");
-                                keywords ["lpvoid"] = new ILToken (Token.K_LPVOID, "lpvoid");
-                                keywords ["any"] = new ILToken (Token.K_ANY, "any");
-                                keywords ["float"] = new ILToken (Token.K_FLOAT, "float");
-                                keywords ["lpstruct"] = new ILToken (Token.K_LPSTRUCT, "lpstruct");
-                                keywords ["null"] = new ILToken (Token.K_NULL, "null");
-                                //              keywords ["ptr"] = new ILToken (Token.K_PTR, "ptr");
-                                keywords ["vector"] = new ILToken (Token.K_VECTOR, "vector");
-                                keywords ["hresult"] = new ILToken (Token.K_HRESULT, "hresult");
-                                keywords ["carray"] = new ILToken (Token.K_CARRAY, "carray");
-                                keywords ["userdefined"] = new ILToken (Token.K_USERDEFINED, "userdefined");
-                                keywords ["record"] = new ILToken (Token.K_RECORD, "record");
-                                keywords ["filetime"] = new ILToken (Token.K_FILETIME, "filetime");
-                                keywords ["blob"] = new ILToken (Token.K_BLOB, "blob");
-                                keywords ["stream"] = new ILToken (Token.K_STREAM, "stream");
-                                keywords ["storage"] = new ILToken (Token.K_STORAGE, "storage");
-                                keywords ["streamed_object"] = new ILToken (Token.K_STREAMED_OBJECT, "streamed_object");
-                                keywords ["stored_object"] = new ILToken (Token.K_STORED_OBJECT, "stored_object");
-                                keywords ["blob_object"] = new ILToken (Token.K_BLOB_OBJECT, "blob_object");
-                                keywords ["cf"] = new ILToken (Token.K_CF, "cf");
-                                keywords ["clsid"] = new ILToken (Token.K_CLSID, "clsid");
-                                keywords ["method"] = new ILToken (Token.K_METHOD, "method");
-                                keywords ["class"] = new ILToken (Token.K_CLASS, "class");
-                                keywords ["pinned"] = new ILToken (Token.K_PINNED, "pinned");
-                                keywords ["modreq"] = new ILToken (Token.K_MODREQ, "modreq");
-                                keywords ["modopt"] = new ILToken (Token.K_MODOPT, "modopt");
-                                keywords ["typedref"] = new ILToken (Token.K_TYPEDREF, "typedref");
-                                keywords ["property"] = new ILToken (Token.K_PROPERTY, "property");
-                                keywords ["type"] = new ILToken (Token.K_TYPE, "type");
-                                keywords ["refany"] = new ILToken (Token.K_TYPEDREF, "typedref");
-                                keywords ["wchar"] = new ILToken (Token.K_WCHAR, "wchar");
-                                keywords ["char"] = new ILToken (Token.K_CHAR, "char");
-                                keywords ["fromunmanaged"] = new ILToken (Token.K_FROMUNMANAGED, "fromunmanaged");
-                                keywords ["callmostderived"] = new ILToken (Token.K_CALLMOSTDERIVED, "callmostderived");
-                                keywords ["bytearray"] = new ILToken (Token.K_BYTEARRAY, "bytearray");
-                                keywords ["with"] = new ILToken (Token.K_WITH, "with");
-                                keywords ["init"] = new ILToken (Token.K_INIT, "init");
-                                keywords ["to"] = new ILToken (Token.K_TO, "to");
-                                keywords ["catch"] = new ILToken (Token.K_CATCH, "catch");
-                                keywords ["filter"] = new ILToken (Token.K_FILTER, "filter");
-                                keywords ["finally"] = new ILToken (Token.K_FINALLY, "finally");
-                                keywords ["fault"] = new ILToken (Token.K_FAULT, "fault");
-                                keywords ["handler"] = new ILToken (Token.K_HANDLER, "handler");
-                                keywords ["tls"] = new ILToken (Token.K_TLS, "tls");
-                                keywords ["field"] = new ILToken (Token.K_FIELD, "field");
-                                keywords ["request"] = new ILToken (Token.K_REQUEST, "request");
-                                keywords ["demand"] = new ILToken (Token.K_DEMAND, "demand");
-                                keywords ["assert"] = new ILToken (Token.K_ASSERT, "assert");
-                                keywords ["deny"] = new ILToken (Token.K_DENY, "deny");
-                                keywords ["permitonly"] = new ILToken (Token.K_PERMITONLY, "permitonly");
-                                keywords ["linkcheck"] = new ILToken (Token.K_LINKCHECK, "linkcheck");
-                                keywords ["inheritcheck"] = new ILToken (Token.K_INHERITCHECK, "inheritcheck");
-                                keywords ["reqmin"] = new ILToken (Token.K_REQMIN, "reqmin");
-                                keywords ["reqopt"] = new ILToken (Token.K_REQOPT, "reqopt");
-                                keywords ["reqrefuse"] = new ILToken (Token.K_REQREFUSE, "reqrefuse");
-                                keywords ["prejitgrant"] = new ILToken (Token.K_PREJITGRANT, "prejitgrant");
-                                keywords ["prejitdeny"] = new ILToken (Token.K_PREJITDENY, "prejitdeny");
-                                keywords ["noncasdemand"] = new ILToken (Token.K_NONCASDEMAND, "noncasdemand");
-                                keywords ["noncaslinkdemand"] = new ILToken (Token.K_NONCASLINKDEMAND, "noncaslinkdemand");
-                                keywords ["noncasinheritance"] = new ILToken (Token.K_NONCASINHERITANCE, "noncasinheritance");
-                                keywords ["readonly"] = new ILToken (Token.K_READONLY, "readonly");
-                                keywords ["nometadata"] = new ILToken (Token.K_NOMETADATA, "nometadata");
-                                keywords ["algorithm"] = new ILToken (Token.K_ALGORITHM, "algorithm");
-                                keywords ["fullorigin"] = new ILToken (Token.K_FULLORIGIN, "fullorigin");
-                                // keywords ["nan"] = new ILToken (Token.K_NAN, "nan");
-                                // keywords ["inf"] = new ILToken (Token.K_INF, "inf");
-                                // keywords ["publickey"] = new ILToken (Token.K_PUBLICKEY, "publickey");
-                                keywords ["enablejittracking"] = new ILToken (Token.K_ENABLEJITTRACKING, "enablejittracking");
-                                keywords ["disablejitoptimizer"] = new ILToken (Token.K_DISABLEJITOPTIMIZER, "disablejitoptimizer");
-                                keywords ["retargetable"] = new ILToken (Token.K_RETARGETABLE, "retargetable");
-                                keywords ["preservesig"] = new ILToken (Token.K_PRESERVESIG, "preservesig");
-                                keywords ["beforefieldinit"] = new ILToken (Token.K_BEFOREFIELDINIT, "beforefieldinit");
-                                keywords ["alignment"] = new ILToken (Token.K_ALIGNMENT, "alignment");
-                                keywords ["nullref"] = new ILToken (Token.K_NULLREF, "nullref");
-                                keywords ["valuetype"] = new ILToken (Token.K_VALUETYPE, "valuetype");
-                                keywords ["compilercontrolled"] = new ILToken (Token.K_COMPILERCONTROLLED, "compilercontrolled");
-                                keywords ["reqsecobj"] = new ILToken (Token.K_REQSECOBJ, "reqsecobj");
-                                keywords ["enum"] = new ILToken (Token.K_ENUM, "enum");
-                                keywords ["object"] = new ILToken (Token.K_OBJECT, "object");
-                                keywords ["string"] = new ILToken (Token.K_STRING, "string");
-                                keywords ["true"] = new ILToken (Token.K_TRUE, "true");
-                                keywords ["false"] = new ILToken (Token.K_FALSE, "false");
-                                keywords ["is"] = new ILToken (Token.K_IS, "is");
-                                keywords ["on"] = new ILToken (Token.K_ON, "on");
-                                keywords ["off"] = new ILToken (Token.K_OFF, "off");
-				keywords ["strict"] = new ILToken (Token.K_STRICT, "strict");
-				keywords ["forwarder"] = new ILToken (Token.K_FORWARDER, "forwarder");
-                                keywords ["legacy"] = new ILToken (Token.K_LEGACY, "legacy");
-                                keywords ["library"] = new ILToken (Token.K_LIBRARY, "library");
-                                keywords ["auto"] = new ILToken (Token.K_AUTO, "auto");
-
-                                return keywords;
-                        }
-                }
-
-
-
-
-        } // class ILTables
-
-
-
-
-} // namespace Mono.ILASM
+// ILTables.cs
+// Mechanically generated  - DO NOT EDIT!
+//
+// (C) Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.Collections;
+using System.Reflection.Emit;
+
+namespace Mono.ILASM {
+
+
+
+
+
+        public sealed class ILTables {
+
+                private static Hashtable keywords = null;
+                private static Hashtable directives = null;
+                private static readonly object mutex;
+
+
+                private ILTables ()
+                {
+                }
+
+                static ILTables ()
+                {
+                        mutex = new object ();
+                }
+
+                private static void AllocTable (ref Hashtable tbl, int size)
+                {
+                        lock (mutex) {
+                                if (tbl == null)
+                                        tbl = new Hashtable (size);
+                        }
+                }
+
+                public static Hashtable Directives
+                {
+                        get {
+                                if (directives != null) return directives;
+
+                                AllocTable (ref directives, 300);
+
+                                directives [".addon"] = new ILToken (Token.D_ADDON, ".addon");
+                                directives [".algorithm"] = new ILToken (Token.D_ALGORITHM, ".algorithm");
+                                directives [".assembly"] = new ILToken (Token.D_ASSEMBLY, ".assembly");
+                                directives [".backing"] = new ILToken (Token.D_BACKING, ".backing");
+                                directives [".blob"] = new ILToken (Token.D_BLOB, ".blob");
+                                directives [".capability"] = new ILToken (Token.D_CAPABILITY, ".capability");
+                                directives [".cctor"] = new ILToken (Token.D_CCTOR, ".cctor");
+                                directives [".class"] = new ILToken (Token.D_CLASS, ".class");
+                                directives [".comtype"] = new ILToken (Token.D_COMTYPE, ".comtype");
+                                directives [".config"] = new ILToken (Token.D_CONFIG, ".config");
+                                directives [".imagebase"] = new ILToken (Token.D_IMAGEBASE, ".imagebase");
+                                directives [".corflags"] = new ILToken (Token.D_CORFLAGS, ".corflags");
+                                directives [".ctor"] = new ILToken (Token.D_CTOR, ".ctor");
+                                directives [".custom"] = new ILToken (Token.D_CUSTOM, ".custom");
+                                directives [".data"] = new ILToken (Token.D_DATA, ".data");
+                                directives [".emitbyte"] = new ILToken (Token.D_EMITBYTE, ".emitbyte");
+                                directives [".entrypoint"] = new ILToken (Token.D_ENTRYPOINT, ".entrypoint");
+                                directives [".event"] = new ILToken (Token.D_EVENT, ".event");
+                                directives [".exeloc"] = new ILToken (Token.D_EXELOC, ".exeloc");
+                                directives [".export"] = new ILToken (Token.D_EXPORT, ".export");
+                                directives [".field"] = new ILToken (Token.D_FIELD, ".field");
+                                directives [".file"] = new ILToken (Token.D_FILE, ".file");
+                                directives [".fire"] = new ILToken (Token.D_FIRE, ".fire");
+                                directives [".get"] = new ILToken (Token.D_GET, ".get");
+                                directives [".hash"] = new ILToken (Token.D_HASH, ".hash");
+                                directives [".implicitcom"] = new ILToken (Token.D_IMPLICITCOM, ".implicitcom");
+                                directives [".language"] = new ILToken (Token.D_LANGUAGE, ".language");
+                                directives [".line"] = new ILToken (Token.D_LINE, ".line");
+                                directives ["#line"] = new ILToken (Token.D_XLINE, "#line");
+                                directives [".locale"] = new ILToken (Token.D_LOCALE, ".locale");
+                                directives [".locals"] = new ILToken (Token.D_LOCALS, ".locals");
+                                directives [".manifestres"] = new ILToken (Token.D_MANIFESTRES, ".manifestres");
+                                directives [".maxstack"] = new ILToken (Token.D_MAXSTACK, ".maxstack");
+                                directives [".method"] = new ILToken (Token.D_METHOD, ".method");
+                                directives [".mime"] = new ILToken (Token.D_MIME, ".mime");
+                                directives [".module"] = new ILToken (Token.D_MODULE, ".module");
+                                directives [".mresource"] = new ILToken (Token.D_MRESOURCE, ".mresource");
+                                directives [".namespace"] = new ILToken (Token.D_NAMESPACE, ".namespace");
+                                directives [".originator"] = new ILToken (Token.D_ORIGINATOR, ".originator");
+                                directives [".os"] = new ILToken (Token.D_OS, ".os");
+                                directives [".other"] = new ILToken (Token.D_OTHER, ".other");
+                                directives [".override"] = new ILToken (Token.D_OVERRIDE, ".override");
+                                directives [".pack"] = new ILToken (Token.D_PACK, ".pack");
+                                directives [".param"] = new ILToken (Token.D_PARAM, ".param");
+                                directives [".permission"] = new ILToken (Token.D_PERMISSION, ".permission");
+                                directives [".permissionset"] = new ILToken (Token.D_PERMISSIONSET, ".permissionset");
+                                directives [".processor"] = new ILToken (Token.D_PROCESSOR, ".processor");
+                                directives [".property"] = new ILToken (Token.D_PROPERTY, ".property");
+                                directives [".publickey"] = new ILToken (Token.D_PUBLICKEY, ".publickey");
+                                directives [".publickeytoken"] = new ILToken (Token.D_PUBLICKEYTOKEN, ".publickeytoken");
+                                directives [".removeon"] = new ILToken (Token.D_REMOVEON, ".removeon");
+                                directives [".set"] = new ILToken (Token.D_SET, ".set");
+                                directives [".size"] = new ILToken (Token.D_SIZE, ".size");
+				directives [".stackreserve"] = new ILToken (Token.D_STACKRESERVE, ".stackreserve");
+                                directives [".subsystem"] = new ILToken (Token.D_SUBSYSTEM, ".subsystem");
+                                directives [".title"] = new ILToken (Token.D_TITLE, ".title");
+                                directives [".try"] = new ILToken (Token.D_TRY, ".try");
+                                directives [".ver"] = new ILToken (Token.D_VER, ".ver");
+                                directives [".vtable"] = new ILToken (Token.D_VTABLE, ".vtable");
+                                directives [".vtentry"] = new ILToken (Token.D_VTENTRY, ".vtentry");
+                                directives [".vtfixup"] = new ILToken (Token.D_VTFIXUP, ".vtfixup");
+                                directives [".zeroinit"] = new ILToken (Token.D_ZEROINIT, ".zeroinit");
+
+                                return directives;
+                        }
+                }
+
+
+
+                public static Hashtable Keywords
+                {
+                        get {
+                                if (keywords != null) return keywords;
+
+                                AllocTable (ref keywords, 300);
+
+                                keywords ["at"] = new ILToken (Token.K_AT, "at");
+                                keywords ["as"] = new ILToken (Token.K_AS, "as");
+                                keywords ["implicitcom"] = new ILToken (Token.K_IMPLICITCOM, "implicitcom");
+                                keywords ["implicitres"] = new ILToken (Token.K_IMPLICITRES, "implicitres");
+                                keywords ["noappdomain"] = new ILToken (Token.K_NOAPPDOMAIN, "noappdomain");
+                                keywords ["noprocess"] = new ILToken (Token.K_NOPROCESS, "noprocess");
+                                keywords ["nomachine"] = new ILToken (Token.K_NOMACHINE, "nomachine");
+                                keywords ["extern"] = new ILToken (Token.K_EXTERN, "extern");
+                                keywords ["instance"] = new ILToken (Token.K_INSTANCE, "instance");
+                                keywords ["explicit"] = new ILToken (Token.K_EXPLICIT, "explicit");
+                                keywords ["default"] = new ILToken (Token.K_DEFAULT, "default");
+                                keywords ["vararg"] = new ILToken (Token.K_VARARG, "vararg");
+                                keywords ["unmanaged"] = new ILToken (Token.K_UNMANAGED, "unmanaged");
+                                keywords ["cdecl"] = new ILToken (Token.K_CDECL, "cdecl");
+                                keywords ["stdcall"] = new ILToken (Token.K_STDCALL, "stdcall");
+                                keywords ["thiscall"] = new ILToken (Token.K_THISCALL, "thiscall");
+                                keywords ["fastcall"] = new ILToken (Token.K_FASTCALL, "fastcall");
+                                keywords ["marshal"] = new ILToken (Token.K_MARSHAL, "marshal");
+                                keywords ["in"] = new ILToken (Token.K_IN, "in");
+                                keywords ["out"] = new ILToken (Token.K_OUT, "out");
+                                keywords ["opt"] = new ILToken (Token.K_OPT, "opt");
+                                // Not a keyword according to ilasm 1.1
+                                // keywords ["lcid"] = new ILToken (Token.K_LCID, "lcid");
+                                //keywords ["retval"] = new ILToken (Token.K_RETVAL, "retval");
+                                keywords ["static"] = new ILToken (Token.K_STATIC, "static");
+                                keywords ["public"] = new ILToken (Token.K_PUBLIC, "public");
+                                keywords ["private"] = new ILToken (Token.K_PRIVATE, "private");
+                                keywords ["family"] = new ILToken (Token.K_FAMILY, "family");
+                                keywords ["initonly"] = new ILToken (Token.K_INITONLY, "initonly");
+                                keywords ["rtspecialname"] = new ILToken (Token.K_RTSPECIALNAME, "rtspecialname");
+                                keywords ["specialname"] = new ILToken (Token.K_SPECIALNAME, "specialname");
+                                keywords ["assembly"] = new ILToken (Token.K_ASSEMBLY, "assembly");
+                                keywords ["famandassem"] = new ILToken (Token.K_FAMANDASSEM, "famandassem");
+                                keywords ["famorassem"] = new ILToken (Token.K_FAMORASSEM, "famorassem");
+                                keywords ["privatescope"] = new ILToken (Token.K_PRIVATESCOPE, "privatescope");
+                                keywords ["literal"] = new ILToken (Token.K_LITERAL, "literal");
+                                keywords ["notserialized"] = new ILToken (Token.K_NOTSERIALIZED, "notserialized");
+                                keywords ["value"] = new ILToken (Token.K_VALUE, "value");
+                                keywords ["not_in_gc_heap"] = new ILToken (Token.K_NOT_IN_GC_HEAP, "not_in_gc_heap");
+                                keywords ["interface"] = new ILToken (Token.K_INTERFACE, "interface");
+                                keywords ["sealed"] = new ILToken (Token.K_SEALED, "sealed");
+                                keywords ["abstract"] = new ILToken (Token.K_ABSTRACT, "abstract");
+                                keywords ["auto"] = new ILToken (Token.K_AUTO, "auto");
+                                keywords ["sequential"] = new ILToken (Token.K_SEQUENTIAL, "sequential");
+                                keywords ["ansi"] = new ILToken (Token.K_ANSI, "ansi");
+                                keywords ["unicode"] = new ILToken (Token.K_UNICODE, "unicode");
+                                keywords ["autochar"] = new ILToken (Token.K_AUTOCHAR, "autochar");
+                                keywords ["bestfit"] = new ILToken (Token.K_BESTFIT, "bestfit");
+                                keywords ["charmaperror"] = new ILToken (Token.K_CHARMAPERROR, "charmaperror");
+                                keywords ["import"] = new ILToken (Token.K_IMPORT, "import");
+                                keywords ["serializable"] = new ILToken (Token.K_SERIALIZABLE, "serializable");
+                                keywords ["nested"] = new ILToken (Token.K_NESTED, "nested");
+                                keywords ["lateinit"] = new ILToken (Token.K_LATEINIT, "lateinit");
+                                keywords ["extends"] = new ILToken (Token.K_EXTENDS, "extends");
+                                keywords ["implements"] = new ILToken (Token.K_IMPLEMENTS, "implements");
+                                keywords ["final"] = new ILToken (Token.K_FINAL, "final");
+                                keywords ["virtual"] = new ILToken (Token.K_VIRTUAL, "virtual");
+                                keywords ["hidebysig"] = new ILToken (Token.K_HIDEBYSIG, "hidebysig");
+                                keywords ["newslot"] = new ILToken (Token.K_NEWSLOT, "newslot");
+                                keywords ["unmanagedexp"] = new ILToken (Token.K_UNMANAGEDEXP, "unmanagedexp");
+                                keywords ["pinvokeimpl"] = new ILToken (Token.K_PINVOKEIMPL, "pinvokeimpl");
+                                keywords ["nomangle"] = new ILToken (Token.K_NOMANGLE, "nomangle");
+                                keywords ["ole"] = new ILToken (Token.K_OLE, "ole");
+                                keywords ["lasterr"] = new ILToken (Token.K_LASTERR, "lasterr");
+                                keywords ["winapi"] = new ILToken (Token.K_WINAPI, "winapi");
+                                keywords ["native"] = new ILToken (Token.K_NATIVE, "native");
+                                keywords ["il"] = new ILToken (Token.K_IL, "il");
+                                keywords ["cil"] = new ILToken (Token.K_CIL, "cil");
+                                keywords ["optil"] = new ILToken (Token.K_OPTIL, "optil");
+                                keywords ["managed"] = new ILToken (Token.K_MANAGED, "managed");
+                                keywords ["forwardref"] = new ILToken (Token.K_FORWARDREF, "forwardref");
+                                keywords ["runtime"] = new ILToken (Token.K_RUNTIME, "runtime");
+                                keywords ["internalcall"] = new ILToken (Token.K_INTERNALCALL, "internalcall");
+                                keywords ["synchronized"] = new ILToken (Token.K_SYNCHRONIZED, "synchronized");
+                                keywords ["noinlining"] = new ILToken (Token.K_NOINLINING, "noinlining");
+                                keywords ["custom"] = new ILToken (Token.K_CUSTOM, "custom");
+                                keywords ["fixed"] = new ILToken (Token.K_FIXED, "fixed");
+                                keywords ["sysstring"] = new ILToken (Token.K_SYSSTRING, "sysstring");
+                                keywords ["array"] = new ILToken (Token.K_ARRAY, "array");
+                                keywords ["variant"] = new ILToken (Token.K_VARIANT, "variant");
+                                keywords ["currency"] = new ILToken (Token.K_CURRENCY, "currency");
+                                keywords ["syschar"] = new ILToken (Token.K_SYSCHAR, "syschar");
+                                keywords ["void"] = new ILToken (Token.K_VOID, "void");
+                                keywords ["bool"] = new ILToken (Token.K_BOOL, "bool");
+                                keywords ["int8"] = new ILToken (Token.K_INT8, "int8");
+                                keywords ["int16"] = new ILToken (Token.K_INT16, "int16");
+                                keywords ["int32"] = new ILToken (Token.K_INT32, "int32");
+                                keywords ["int64"] = new ILToken (Token.K_INT64, "int64");
+                                keywords ["float32"] = new ILToken (Token.K_FLOAT32, "float32");
+                                keywords ["float64"] = new ILToken (Token.K_FLOAT64, "float64");
+                                keywords ["error"] = new ILToken (Token.K_ERROR, "error");
+                                keywords ["unsigned"] = new ILToken (Token.K_UNSIGNED, "unsigned");
+                                keywords ["uint"] = new ILToken (Token.K_UINT, "uint");
+                                keywords ["uint8"] = new ILToken (Token.K_UINT8, "uint8");
+                                keywords ["uint16"] = new ILToken (Token.K_UINT16, "uint16");
+                                keywords ["uint32"] = new ILToken (Token.K_UINT32, "uint32");
+                                keywords ["uint64"] = new ILToken (Token.K_UINT64, "uint64");
+                                keywords ["decimal"] = new ILToken (Token.K_DECIMAL, "decimal");
+                                keywords ["date"] = new ILToken (Token.K_DATE, "date");
+                                keywords ["bstr"] = new ILToken (Token.K_BSTR, "bstr");
+                                keywords ["lpstr"] = new ILToken (Token.K_LPSTR, "lpstr");
+                                keywords ["lpwstr"] = new ILToken (Token.K_LPWSTR, "lpwstr");
+                                keywords ["lptstr"] = new ILToken (Token.K_LPTSTR, "lptstr");
+                                keywords ["objectref"] = new ILToken (Token.K_OBJECTREF, "objectref");
+                                keywords ["iunknown"] = new ILToken (Token.K_IUNKNOWN, "iunknown");
+                                keywords ["idispatch"] = new ILToken (Token.K_IDISPATCH, "idispatch");
+                                keywords ["struct"] = new ILToken (Token.K_STRUCT, "struct");
+                                keywords ["safearray"] = new ILToken (Token.K_SAFEARRAY, "safearray");
+                                keywords ["int"] = new ILToken (Token.K_INT, "int");
+                                keywords ["byvalstr"] = new ILToken (Token.K_BYVALSTR, "byvalstr");
+                                keywords ["tbstr"] = new ILToken (Token.K_TBSTR, "tbstr");
+                                keywords ["lpvoid"] = new ILToken (Token.K_LPVOID, "lpvoid");
+                                keywords ["any"] = new ILToken (Token.K_ANY, "any");
+                                keywords ["float"] = new ILToken (Token.K_FLOAT, "float");
+                                keywords ["lpstruct"] = new ILToken (Token.K_LPSTRUCT, "lpstruct");
+                                keywords ["null"] = new ILToken (Token.K_NULL, "null");
+                                //              keywords ["ptr"] = new ILToken (Token.K_PTR, "ptr");
+                                keywords ["vector"] = new ILToken (Token.K_VECTOR, "vector");
+                                keywords ["hresult"] = new ILToken (Token.K_HRESULT, "hresult");
+                                keywords ["carray"] = new ILToken (Token.K_CARRAY, "carray");
+                                keywords ["userdefined"] = new ILToken (Token.K_USERDEFINED, "userdefined");
+                                keywords ["record"] = new ILToken (Token.K_RECORD, "record");
+                                keywords ["filetime"] = new ILToken (Token.K_FILETIME, "filetime");
+                                keywords ["blob"] = new ILToken (Token.K_BLOB, "blob");
+                                keywords ["stream"] = new ILToken (Token.K_STREAM, "stream");
+                                keywords ["storage"] = new ILToken (Token.K_STORAGE, "storage");
+                                keywords ["streamed_object"] = new ILToken (Token.K_STREAMED_OBJECT, "streamed_object");
+                                keywords ["stored_object"] = new ILToken (Token.K_STORED_OBJECT, "stored_object");
+                                keywords ["blob_object"] = new ILToken (Token.K_BLOB_OBJECT, "blob_object");
+                                keywords ["cf"] = new ILToken (Token.K_CF, "cf");
+                                keywords ["clsid"] = new ILToken (Token.K_CLSID, "clsid");
+                                keywords ["method"] = new ILToken (Token.K_METHOD, "method");
+                                keywords ["class"] = new ILToken (Token.K_CLASS, "class");
+                                keywords ["pinned"] = new ILToken (Token.K_PINNED, "pinned");
+                                keywords ["modreq"] = new ILToken (Token.K_MODREQ, "modreq");
+                                keywords ["modopt"] = new ILToken (Token.K_MODOPT, "modopt");
+                                keywords ["typedref"] = new ILToken (Token.K_TYPEDREF, "typedref");
+                                keywords ["property"] = new ILToken (Token.K_PROPERTY, "property");
+                                keywords ["type"] = new ILToken (Token.K_TYPE, "type");
+                                keywords ["refany"] = new ILToken (Token.K_TYPEDREF, "typedref");
+                                keywords ["wchar"] = new ILToken (Token.K_WCHAR, "wchar");
+                                keywords ["char"] = new ILToken (Token.K_CHAR, "char");
+                                keywords ["fromunmanaged"] = new ILToken (Token.K_FROMUNMANAGED, "fromunmanaged");
+                                keywords ["callmostderived"] = new ILToken (Token.K_CALLMOSTDERIVED, "callmostderived");
+                                keywords ["bytearray"] = new ILToken (Token.K_BYTEARRAY, "bytearray");
+                                keywords ["with"] = new ILToken (Token.K_WITH, "with");
+                                keywords ["init"] = new ILToken (Token.K_INIT, "init");
+                                keywords ["to"] = new ILToken (Token.K_TO, "to");
+                                keywords ["catch"] = new ILToken (Token.K_CATCH, "catch");
+                                keywords ["filter"] = new ILToken (Token.K_FILTER, "filter");
+                                keywords ["finally"] = new ILToken (Token.K_FINALLY, "finally");
+                                keywords ["fault"] = new ILToken (Token.K_FAULT, "fault");
+                                keywords ["handler"] = new ILToken (Token.K_HANDLER, "handler");
+                                keywords ["tls"] = new ILToken (Token.K_TLS, "tls");
+                                keywords ["field"] = new ILToken (Token.K_FIELD, "field");
+                                keywords ["request"] = new ILToken (Token.K_REQUEST, "request");
+                                keywords ["demand"] = new ILToken (Token.K_DEMAND, "demand");
+                                keywords ["assert"] = new ILToken (Token.K_ASSERT, "assert");
+                                keywords ["deny"] = new ILToken (Token.K_DENY, "deny");
+                                keywords ["permitonly"] = new ILToken (Token.K_PERMITONLY, "permitonly");
+                                keywords ["linkcheck"] = new ILToken (Token.K_LINKCHECK, "linkcheck");
+                                keywords ["inheritcheck"] = new ILToken (Token.K_INHERITCHECK, "inheritcheck");
+                                keywords ["reqmin"] = new ILToken (Token.K_REQMIN, "reqmin");
+                                keywords ["reqopt"] = new ILToken (Token.K_REQOPT, "reqopt");
+                                keywords ["reqrefuse"] = new ILToken (Token.K_REQREFUSE, "reqrefuse");
+                                keywords ["prejitgrant"] = new ILToken (Token.K_PREJITGRANT, "prejitgrant");
+                                keywords ["prejitdeny"] = new ILToken (Token.K_PREJITDENY, "prejitdeny");
+                                keywords ["noncasdemand"] = new ILToken (Token.K_NONCASDEMAND, "noncasdemand");
+                                keywords ["noncaslinkdemand"] = new ILToken (Token.K_NONCASLINKDEMAND, "noncaslinkdemand");
+                                keywords ["noncasinheritance"] = new ILToken (Token.K_NONCASINHERITANCE, "noncasinheritance");
+                                keywords ["readonly"] = new ILToken (Token.K_READONLY, "readonly");
+                                keywords ["nometadata"] = new ILToken (Token.K_NOMETADATA, "nometadata");
+                                keywords ["algorithm"] = new ILToken (Token.K_ALGORITHM, "algorithm");
+                                keywords ["fullorigin"] = new ILToken (Token.K_FULLORIGIN, "fullorigin");
+                                // keywords ["nan"] = new ILToken (Token.K_NAN, "nan");
+                                // keywords ["inf"] = new ILToken (Token.K_INF, "inf");
+                                // keywords ["publickey"] = new ILToken (Token.K_PUBLICKEY, "publickey");
+                                keywords ["enablejittracking"] = new ILToken (Token.K_ENABLEJITTRACKING, "enablejittracking");
+                                keywords ["disablejitoptimizer"] = new ILToken (Token.K_DISABLEJITOPTIMIZER, "disablejitoptimizer");
+                                keywords ["retargetable"] = new ILToken (Token.K_RETARGETABLE, "retargetable");
+                                keywords ["preservesig"] = new ILToken (Token.K_PRESERVESIG, "preservesig");
+                                keywords ["beforefieldinit"] = new ILToken (Token.K_BEFOREFIELDINIT, "beforefieldinit");
+                                keywords ["alignment"] = new ILToken (Token.K_ALIGNMENT, "alignment");
+                                keywords ["nullref"] = new ILToken (Token.K_NULLREF, "nullref");
+                                keywords ["valuetype"] = new ILToken (Token.K_VALUETYPE, "valuetype");
+                                keywords ["compilercontrolled"] = new ILToken (Token.K_COMPILERCONTROLLED, "compilercontrolled");
+                                keywords ["reqsecobj"] = new ILToken (Token.K_REQSECOBJ, "reqsecobj");
+                                keywords ["enum"] = new ILToken (Token.K_ENUM, "enum");
+                                keywords ["object"] = new ILToken (Token.K_OBJECT, "object");
+                                keywords ["string"] = new ILToken (Token.K_STRING, "string");
+                                keywords ["true"] = new ILToken (Token.K_TRUE, "true");
+                                keywords ["false"] = new ILToken (Token.K_FALSE, "false");
+                                keywords ["is"] = new ILToken (Token.K_IS, "is");
+                                keywords ["on"] = new ILToken (Token.K_ON, "on");
+                                keywords ["off"] = new ILToken (Token.K_OFF, "off");
+				keywords ["strict"] = new ILToken (Token.K_STRICT, "strict");
+				keywords ["forwarder"] = new ILToken (Token.K_FORWARDER, "forwarder");
+                                keywords ["legacy"] = new ILToken (Token.K_LEGACY, "legacy");
+                                keywords ["library"] = new ILToken (Token.K_LIBRARY, "library");
+                                keywords ["auto"] = new ILToken (Token.K_AUTO, "auto");
+
+                                return keywords;
+                        }
+                }
+
+
+
+
+        } // class ILTables
+
+
+
+
+} // namespace Mono.ILASM
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/ILToken.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/ILToken.cs
@@ -1,241 +1,241 @@
-// ILToken.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-
-using System;
-
-namespace Mono.ILASM {
-
-        public class ILToken : ICloneable {
-                internal int token;
-                internal object val;
-
-                public static readonly ILToken Invalid;
-                public static readonly ILToken EOF;
-
-                public static readonly ILToken Dot;
-
-                public static readonly ILToken OpenBrace;
-                public static readonly ILToken CloseBrace;
-                public static readonly ILToken OpenBracket;
-                public static readonly ILToken CloseBracket;
-                public static readonly ILToken OpenParens;
-                public static readonly ILToken CloseParens;
-                public static readonly ILToken Comma;
-                public static readonly ILToken Colon;
-                public static readonly ILToken DoubleColon;
-                public static readonly ILToken Semicolon;
-                public static readonly ILToken Assign;
-                public static readonly ILToken Star;
-                public static readonly ILToken Ampersand;
-                public static readonly ILToken Plus;
-                public static readonly ILToken Slash;
-                public static readonly ILToken Bang;
-                public static readonly ILToken Ellipsis;
-                public static readonly ILToken Dash;
-                public static readonly ILToken OpenAngleBracket;
-                public static readonly ILToken CloseAngleBracket;
-
-                private static readonly ILToken [] punctuations;
-
-                /// <summary>
-                /// </summary>
-                static ILToken ()
-                {
-                        Invalid = new ILToken (-1, "invalid");
-                        EOF = new ILToken (Token.EOF, "eof");
-
-                        Dot = new ILToken (Token.DOT, ".");
-                        OpenBrace = new ILToken (Token.OPEN_BRACE, "{");
-                        CloseBrace = new ILToken (Token.CLOSE_BRACE, "}");
-                        OpenBracket = new ILToken (Token.OPEN_BRACKET, "[");
-                        CloseBracket = new ILToken (Token.CLOSE_BRACKET, "]");
-                        OpenParens = new ILToken (Token.OPEN_PARENS, "(");
-                        CloseParens = new ILToken (Token.CLOSE_PARENS, ")");
-                        Comma = new ILToken (Token.COMMA, ",");
-                        Colon = new ILToken (Token.COLON, ":");
-                        DoubleColon = new ILToken (Token.DOUBLE_COLON, "::");
-                        Semicolon = new ILToken (Token.SEMICOLON, ";");
-                        Assign = new ILToken (Token.ASSIGN, "=");
-                        Star = new ILToken (Token.STAR, "*");
-                        Ampersand = new ILToken (Token.AMPERSAND, "&");
-                        Plus = new ILToken (Token.PLUS, "+");
-                        Slash = new ILToken (Token.SLASH, "/");
-                        Bang = new ILToken (Token.BANG, "!");
-                        Ellipsis = new ILToken (Token.ELLIPSIS, "...");
-                        Dash = new ILToken (Token.DASH, "-");
-                        OpenAngleBracket = new ILToken (Token.OPEN_ANGLE_BRACKET, "<");
-                        CloseAngleBracket = new ILToken (Token.CLOSE_ANGLE_BRACKET, ">");
-
-                        punctuations = new ILToken [] {
-                                OpenBrace, CloseBrace,
-                                OpenBracket, CloseBracket,
-                                OpenParens, CloseParens,
-                                Comma, Colon, Semicolon,
-                                Assign, Star, Ampersand,
-                                Plus, Slash, Bang,
-                                OpenAngleBracket, CloseAngleBracket
-                        };
-                }
-
-                /// <summary>
-                /// </summary>
-                public ILToken ()
-                {
-                }
-
-                /// <summary>
-                /// </summary>
-                /// <param name="token"></param>
-                /// <param name="val"></param>
-                public ILToken (int token, object val)
-                {
-                        this.token = token;
-                        this.val = val;
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <param name="that"></param>
-                public ILToken (ILToken that)
-                {
-                        this.token = that.token;
-                        this.val = that.val;
-                }
-
-
-
-                /// <summary>
-                /// </summary>
-                public int TokenId {
-                        get {
-                                return token;
-                        }
-                }
-
-                /// <summary>
-                /// </summary>
-                public object Value {
-                        get {
-                                return val;
-                        }
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <param name="that"></param>
-                public virtual void CopyFrom (ILToken that)
-                {
-                        this.token = that.token;
-                        this.val = that.val;
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <returns></returns>
-                public virtual object Clone ()
-                {
-                        return new ILToken (this);
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <returns></returns>
-                public override int GetHashCode ()
-                {
-                        int h = token;
-                        if (val != null) h ^= val.GetHashCode ();
-                        return h;
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <returns></returns>
-                public override string ToString ()
-                {
-                        return (token.ToString() + " : " + (val != null ? val.ToString () : "<null>"));
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <param name="o"></param>
-                /// <returns></returns>
-                public override bool Equals (object o)
-                {
-                        bool res = (o != null);
-
-                        if (res) {
-                                res = Object.ReferenceEquals (this, o);
-                                if (!res) {
-                                        res = o is ILToken;
-                                        if (res) {
-                                                ILToken that = o as ILToken;
-                                                res = (this.token == that.token) && (this.val.Equals (that.val));
-                                        }
-                                }
-                        }
-
-                        return res;
-                }
-
-
-                private static bool EqImpl (ILToken t1, ILToken t2)
-                {
-                        bool res = false;
-                        if ((t1 as object) != null) {
-                                res = t1.Equals (t2);
-                        } else {
-                                res = ((t2 as object) == null);
-                        }
-
-                        return res;
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <param name="t1"></param>
-                /// <param name="t2"></param>
-                /// <returns></returns>
-                public static bool operator == (ILToken t1, ILToken t2)
-                {
-                        return EqImpl (t1, t2);
-                }
-
-                /// <summary>
-                /// </summary>
-                /// <param name="t1"></param>
-                /// <param name="t2"></param>
-                /// <returns></returns>
-                public static bool operator != (ILToken t1, ILToken t2)
-                {
-                        return !EqImpl (t1, t2);
-                }
-
-
-
-                /// <summary>
-                /// </summary>
-                /// <param name="ch"></param>
-                /// <returns></returns>
-                public static ILToken GetPunctuation (int ch)
-                {
-                        int id = "{}[](),:;=*&+/!<>".IndexOf ((char) ch);
-                        ILToken res = null;
-
-                        if (id != -1) {
-                                res = punctuations [id];
-                        }
-
-                        return res;
-                }
-
-
-        }
-}
+// ILToken.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+
+using System;
+
+namespace Mono.ILASM {
+
+        public class ILToken : ICloneable {
+                internal int token;
+                internal object val;
+
+                public static readonly ILToken Invalid;
+                public static readonly ILToken EOF;
+
+                public static readonly ILToken Dot;
+
+                public static readonly ILToken OpenBrace;
+                public static readonly ILToken CloseBrace;
+                public static readonly ILToken OpenBracket;
+                public static readonly ILToken CloseBracket;
+                public static readonly ILToken OpenParens;
+                public static readonly ILToken CloseParens;
+                public static readonly ILToken Comma;
+                public static readonly ILToken Colon;
+                public static readonly ILToken DoubleColon;
+                public static readonly ILToken Semicolon;
+                public static readonly ILToken Assign;
+                public static readonly ILToken Star;
+                public static readonly ILToken Ampersand;
+                public static readonly ILToken Plus;
+                public static readonly ILToken Slash;
+                public static readonly ILToken Bang;
+                public static readonly ILToken Ellipsis;
+                public static readonly ILToken Dash;
+                public static readonly ILToken OpenAngleBracket;
+                public static readonly ILToken CloseAngleBracket;
+
+                private static readonly ILToken [] punctuations;
+
+                /// <summary>
+                /// </summary>
+                static ILToken ()
+                {
+                        Invalid = new ILToken (-1, "invalid");
+                        EOF = new ILToken (Token.EOF, "eof");
+
+                        Dot = new ILToken (Token.DOT, ".");
+                        OpenBrace = new ILToken (Token.OPEN_BRACE, "{");
+                        CloseBrace = new ILToken (Token.CLOSE_BRACE, "}");
+                        OpenBracket = new ILToken (Token.OPEN_BRACKET, "[");
+                        CloseBracket = new ILToken (Token.CLOSE_BRACKET, "]");
+                        OpenParens = new ILToken (Token.OPEN_PARENS, "(");
+                        CloseParens = new ILToken (Token.CLOSE_PARENS, ")");
+                        Comma = new ILToken (Token.COMMA, ",");
+                        Colon = new ILToken (Token.COLON, ":");
+                        DoubleColon = new ILToken (Token.DOUBLE_COLON, "::");
+                        Semicolon = new ILToken (Token.SEMICOLON, ";");
+                        Assign = new ILToken (Token.ASSIGN, "=");
+                        Star = new ILToken (Token.STAR, "*");
+                        Ampersand = new ILToken (Token.AMPERSAND, "&");
+                        Plus = new ILToken (Token.PLUS, "+");
+                        Slash = new ILToken (Token.SLASH, "/");
+                        Bang = new ILToken (Token.BANG, "!");
+                        Ellipsis = new ILToken (Token.ELLIPSIS, "...");
+                        Dash = new ILToken (Token.DASH, "-");
+                        OpenAngleBracket = new ILToken (Token.OPEN_ANGLE_BRACKET, "<");
+                        CloseAngleBracket = new ILToken (Token.CLOSE_ANGLE_BRACKET, ">");
+
+                        punctuations = new ILToken [] {
+                                OpenBrace, CloseBrace,
+                                OpenBracket, CloseBracket,
+                                OpenParens, CloseParens,
+                                Comma, Colon, Semicolon,
+                                Assign, Star, Ampersand,
+                                Plus, Slash, Bang,
+                                OpenAngleBracket, CloseAngleBracket
+                        };
+                }
+
+                /// <summary>
+                /// </summary>
+                public ILToken ()
+                {
+                }
+
+                /// <summary>
+                /// </summary>
+                /// <param name="token"></param>
+                /// <param name="val"></param>
+                public ILToken (int token, object val)
+                {
+                        this.token = token;
+                        this.val = val;
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <param name="that"></param>
+                public ILToken (ILToken that)
+                {
+                        this.token = that.token;
+                        this.val = that.val;
+                }
+
+
+
+                /// <summary>
+                /// </summary>
+                public int TokenId {
+                        get {
+                                return token;
+                        }
+                }
+
+                /// <summary>
+                /// </summary>
+                public object Value {
+                        get {
+                                return val;
+                        }
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <param name="that"></param>
+                public virtual void CopyFrom (ILToken that)
+                {
+                        this.token = that.token;
+                        this.val = that.val;
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <returns></returns>
+                public virtual object Clone ()
+                {
+                        return new ILToken (this);
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <returns></returns>
+                public override int GetHashCode ()
+                {
+                        int h = token;
+                        if (val != null) h ^= val.GetHashCode ();
+                        return h;
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <returns></returns>
+                public override string ToString ()
+                {
+                        return (token.ToString() + " : " + (val != null ? val.ToString () : "<null>"));
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <param name="o"></param>
+                /// <returns></returns>
+                public override bool Equals (object o)
+                {
+                        bool res = (o != null);
+
+                        if (res) {
+                                res = Object.ReferenceEquals (this, o);
+                                if (!res) {
+                                        res = o is ILToken;
+                                        if (res) {
+                                                ILToken that = o as ILToken;
+                                                res = (this.token == that.token) && (this.val.Equals (that.val));
+                                        }
+                                }
+                        }
+
+                        return res;
+                }
+
+
+                private static bool EqImpl (ILToken t1, ILToken t2)
+                {
+                        bool res = false;
+                        if ((t1 as object) != null) {
+                                res = t1.Equals (t2);
+                        } else {
+                                res = ((t2 as object) == null);
+                        }
+
+                        return res;
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <param name="t1"></param>
+                /// <param name="t2"></param>
+                /// <returns></returns>
+                public static bool operator == (ILToken t1, ILToken t2)
+                {
+                        return EqImpl (t1, t2);
+                }
+
+                /// <summary>
+                /// </summary>
+                /// <param name="t1"></param>
+                /// <param name="t2"></param>
+                /// <returns></returns>
+                public static bool operator != (ILToken t1, ILToken t2)
+                {
+                        return !EqImpl (t1, t2);
+                }
+
+
+
+                /// <summary>
+                /// </summary>
+                /// <param name="ch"></param>
+                /// <returns></returns>
+                public static ILToken GetPunctuation (int ch)
+                {
+                        int id = "{}[](),:;=*&+/!<>".IndexOf ((char) ch);
+                        ILToken res = null;
+
+                        if (id != -1) {
+                                res = punctuations [id];
+                        }
+
+                        return res;
+                }
+
+
+        }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/ILTokenizer.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/ILTokenizer.cs
@@ -1,371 +1,371 @@
-// ILTokenizer.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.IO;
-using System.Text;
-using System.Collections;
-using System.Globalization;
-
-namespace Mono.ILASM {
-
-        public delegate void NewTokenEvent (object sender, NewTokenEventArgs args);
-
-        public class NewTokenEventArgs : EventArgs {
-
-                public readonly ILToken Token;
-
-                public NewTokenEventArgs (ILToken token)
-                {
-                        Token = token;
-                }
-        }
-
-        /// <summary>
-        /// </summary>
-        public class ILTokenizer : ITokenStream {
-
-                private static readonly string idchars = "_$@?.`";
-
-                private static Hashtable keywords;
-                private static Hashtable directives;
-
-                private ILToken lastToken;
-                private ILReader reader;
-                private StringHelper strBuilder;
-                private NumberHelper numBuilder;
-                private bool in_byte_array;
-                
-                public event NewTokenEvent NewTokenEvent;
-
-                static ILTokenizer()
-                {
-                        keywords = ILTables.Keywords;
-                        directives = ILTables.Directives;
-                }
-
-                /// <summary>
-                /// </summary>
-                /// <param name="reader"></param>
-                public ILTokenizer (StreamReader reader)
-                {
-                        this.reader = new ILReader (reader);
-                        strBuilder = new StringHelper (this);
-                        numBuilder = new NumberHelper (this);
-                        lastToken = ILToken.Invalid.Clone () as ILToken;
-                }
-
-                public ILReader Reader {
-                        get {
-                                return reader;
-                        }
-                }
-
-		public Location Location {
-			get {
-				return reader.Location;
-			}
-		}
-
-                public bool InByteArray {
-                        get { return in_byte_array; }
-                        set { in_byte_array = value; }
-                }
-
-                public ILToken GetNextToken ()
-                {
-                        if (lastToken == ILToken.EOF) return ILToken.EOF;
-
-                        int ch;
-                        int next;
-                        ILToken res = ILToken.EOF.Clone () as ILToken;
-
-                        
-                        while ((ch = reader.Read ()) != -1) {
-
-                                // Comments
-                                if (ch == '/') {
-                                        next = reader.Peek ();
-                                        if (next == '/') {
-                                                // double-slash comment, skip to the end of the line.
-                                                for (reader.Read ();
-                                                        next != -1 && next != '\n';
-                                                        next = reader.Read ());
-                                                continue;
-                                        } else if (next == '*') {
-                                                reader.Read ();
-                                                for (next = reader.Read (); next != -1; next = reader.Read ()) {
-                                                        if (next == '*' && reader.Peek () == '/') {
-                                                                reader.Read ();
-                                                                goto end;
-                                                        }
-                                                }
-                                        end:
-                                                continue;
-                                        }
-                                }
-
-                                // HEXBYTES are flagged by the parser otherwise it is
-                                // impossible to figure them out
-                                if (in_byte_array) {
-                                        string hx = String.Empty;
-
-                                        if (Char.IsWhiteSpace ((char) ch))
-                                                continue;
-
-                                        if (ch == ')') {
-                                                res = ILToken.CloseParens;
-                                                break;
-                                        }
-
-                                        if (!is_hex (ch))
-                                                throw new ILTokenizingException (reader.Location, ((char) ch).ToString ());
-                                        hx += (char) ch;
-                                        if (is_hex (reader.Peek ()))
-                                                hx += (char) reader.Read ();
-                                        else if (!Char.IsWhiteSpace ((char) reader.Peek ()) && reader.Peek () != ')')
-                                                throw new ILTokenizingException (reader.Location,
-                                                                ((char) reader.Peek ()).ToString ());
-                                        res.token = Token.HEXBYTE;
-                                        res.val = Byte.Parse (hx, NumberStyles.HexNumber);
-
-                                        while (Char.IsWhiteSpace ((char) reader.Peek ()))
-                                                reader.Read ();
-                                        break;
-                                }
-                                
-                                // Ellipsis
-                                if (ch == '.' && reader.Peek () == '.') {
-                                        reader.MarkLocation ();
-                                        int ch2 = reader.Read ();
-                                        if (reader.Peek () == '.') {
-                                                res = ILToken.Ellipsis;
-                                                reader.Read ();
-                                                break;
-                                        }
-                                        reader.Unread (ch2);
-                                        reader.RestoreLocation ();
-                                }
-
-                                if (ch == '.' || ch == '#') {
-                                        next = reader.Peek ();
-                                        if (ch == '.' && Char.IsDigit((char) next)) {
-                                                numBuilder.Start (ch);
-                                                reader.Unread (ch);
-                                                numBuilder.Build ();
-                                                if (numBuilder.ResultToken != ILToken.Invalid) {
-                                                        res.CopyFrom (numBuilder.ResultToken);
-                                                        break;
-                                                }
-                                        } else {
-                                                if (strBuilder.Start (next) && strBuilder.TokenId == Token.ID) {
-                                                        reader.MarkLocation ();
-                                                        string dirBody = strBuilder.Build ();
-                                                        string dir = new string ((char) ch, 1) + dirBody;
-                                                        if (IsDirective (dir)) {
-                                                                res = ILTables.Directives [dir] as ILToken;
-                                                        } else {
-                                                                reader.Unread (dirBody.ToCharArray ());
-                                                                reader.RestoreLocation ();
-                                                                res = ILToken.Dot;
-                                                        }
-                                                } else {
-                                                        res = ILToken.Dot;
-                                                }
-                                                break;
-                                        }
-                                }
-
-                                // Numbers && Hexbytes
-                                if (numBuilder.Start (ch)) {
-                                        if ((ch == '-') && !(Char.IsDigit ((char) reader.Peek ()))) {
-                                                res = ILToken.Dash;
-                                                break;
-                                        } else {
-                                                reader.Unread (ch);
-                                                numBuilder.Build ();
-                                                if (numBuilder.ResultToken != ILToken.Invalid) {
-                                                        res.CopyFrom (numBuilder.ResultToken);
-                                                        break;
-                                                }
-                                        }
-                                }
-
-                                // Punctuation
-                                ILToken punct = ILToken.GetPunctuation (ch);
-                                if (punct != null) {
-                                        if (punct == ILToken.Colon && reader.Peek () == ':') {
-                                                reader.Read ();
-                                                res = ILToken.DoubleColon;
-                                        } else {
-                                                res = punct;
-                                        }
-                                        break;
-                                }
-
-                                // ID | QSTRING | SQSTRING | INSTR_* | KEYWORD
-                                if (strBuilder.Start (ch)) {
-                                        reader.Unread (ch);
-                                        string val = strBuilder.Build ();
-                                        if (strBuilder.TokenId == Token.ID) {
-                                                ILToken opcode;
-                                                next = reader.Peek ();
-                                                if (next == '.') {
-                                                        reader.MarkLocation ();
-                                                        reader.Read ();
-                                                        next = reader.Peek ();
-                                                        if (IsIdChar ((char) next)) {
-                                                                string opTail = BuildId ();
-                                                                string full_str = String.Format ("{0}.{1}", val, opTail);
-                                                                opcode = InstrTable.GetToken (full_str);
-
-                                                                if (opcode == null) {
-                                                                        if (strBuilder.TokenId != Token.ID) {
-                                                                                reader.Unread (opTail.ToCharArray ());
-										reader.Unread ('.');
-                                                                                reader.RestoreLocation ();
-                                                                                res.val = val;
-                                                                        } else {
-                                                                                res.token = Token.COMP_NAME;
-                                                                                res.val = full_str;
-                                                                        }
-                                                                        break;
-                                                                } else {
-                                                                        res = opcode;
-                                                                        break;
-                                                                }
-
-                                                        } else if (Char.IsWhiteSpace ((char) next)) {
-								// Handle 'tail.' and 'unaligned.'
-								opcode = InstrTable.GetToken (val + ".");
-								if (opcode != null) {
-									res = opcode;
-									break;
-								}
-								// Let the parser handle the dot
-								reader.Unread ('.');
-                                                        }
-                                                }
-                                                opcode = InstrTable.GetToken (val);
-                                                if (opcode != null) {
-                                                        res = opcode;
-                                                        break;
-                                                }
-                                                if (IsKeyword (val)) {
-                                                        res = ILTables.Keywords [val] as ILToken;
-                                                        break;
-                                                }
-                                        }
-
-                                        res.token = strBuilder.TokenId;
-                                        res.val = val;
-                                        break;
-                                }
-                        }
-
-                        OnNewToken (res);
-                        lastToken.CopyFrom (res);
-                        return res;
-                }
-
-
-                /// <summary>
-                /// </summary>
-                public ILToken NextToken {
-                        get {
-                                return GetNextToken ();
-                        }
-                }
-
-
-                /// <summary>
-                /// </summary>
-                public ILToken LastToken {
-                        get {
-                                return lastToken;
-                        }
-                }
-
-                bool is_hex (int e)
-                {
-                        return (e >= '0' && e <= '9') || (e >= 'A' && e <= 'F') || (e >= 'a' && e <= 'f');
-                }
-
-                private static bool IsIdStartChar (char ch)
-                {
-                        return (Char.IsLetter (ch) || (idchars.IndexOf (ch) != -1));
-                }
-
-
-                private static bool IsIdChar (char ch)
-                {
-                        return (Char.IsLetterOrDigit (ch) || (idchars.IndexOf (ch) != -1));
-                }
-
-                /// <summary>
-                /// </summary>
-                /// <param name="name"></param>
-                /// <returns></returns>
-                public static bool IsOpcode (string name)
-                {
-                        return InstrTable.IsInstr (name);
-                }
-
-
-                /// <summary>
-                /// </summary>
-                /// <param name="name"></param>
-                /// <returns></returns>
-                public static bool IsDirective (string name)
-                {
-                        char ch = name [0];
-                        bool res = (ch == '.' || ch == '#');
-
-                        if (res) {
-                                res = directives.Contains (name);
-                        }
-
-                        return res;
-                }
-
-                private string BuildId ()
-                {
-                        StringBuilder idsb = new StringBuilder ();
-                        int ch, last;
-
-                        last = -1;
-                        while ((ch = reader.Read ()) != -1) {
-                                if (IsIdChar ((char) ch) || ch == '.') {
-                                        idsb.Append ((char) ch);
-                                } else {
-                                        reader.Unread (ch);
-                                        // Never end an id on a DOT
-                                        if (last == '.') {
-                                                reader.Unread (last);
-                                                idsb.Length -= 1;
-                                        }        
-                                        break;
-                                }
-                                last = ch;
-                        }
-
-                        return idsb.ToString ();
-                }
-
-                /// <summary>
-                /// </summary>
-                /// <param name="name"></param>
-                /// <returns></returns>
-                public static bool IsKeyword (string name)
-                {
-                        return keywords.Contains (name);
-                }
-
-                private void OnNewToken (ILToken token)
-                {
-                        if (NewTokenEvent != null)
-                                NewTokenEvent (this, new NewTokenEventArgs (token));
-                }
-
-        }
-}
+// ILTokenizer.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.IO;
+using System.Text;
+using System.Collections;
+using System.Globalization;
+
+namespace Mono.ILASM {
+
+        public delegate void NewTokenEvent (object sender, NewTokenEventArgs args);
+
+        public class NewTokenEventArgs : EventArgs {
+
+                public readonly ILToken Token;
+
+                public NewTokenEventArgs (ILToken token)
+                {
+                        Token = token;
+                }
+        }
+
+        /// <summary>
+        /// </summary>
+        public class ILTokenizer : ITokenStream {
+
+                private static readonly string idchars = "_$@?.`";
+
+                private static Hashtable keywords;
+                private static Hashtable directives;
+
+                private ILToken lastToken;
+                private ILReader reader;
+                private StringHelper strBuilder;
+                private NumberHelper numBuilder;
+                private bool in_byte_array;
+                
+                public event NewTokenEvent NewTokenEvent;
+
+                static ILTokenizer()
+                {
+                        keywords = ILTables.Keywords;
+                        directives = ILTables.Directives;
+                }
+
+                /// <summary>
+                /// </summary>
+                /// <param name="reader"></param>
+                public ILTokenizer (StreamReader reader)
+                {
+                        this.reader = new ILReader (reader);
+                        strBuilder = new StringHelper (this);
+                        numBuilder = new NumberHelper (this);
+                        lastToken = ILToken.Invalid.Clone () as ILToken;
+                }
+
+                public ILReader Reader {
+                        get {
+                                return reader;
+                        }
+                }
+
+		public Location Location {
+			get {
+				return reader.Location;
+			}
+		}
+
+                public bool InByteArray {
+                        get { return in_byte_array; }
+                        set { in_byte_array = value; }
+                }
+
+                public ILToken GetNextToken ()
+                {
+                        if (lastToken == ILToken.EOF) return ILToken.EOF;
+
+                        int ch;
+                        int next;
+                        ILToken res = ILToken.EOF.Clone () as ILToken;
+
+                        
+                        while ((ch = reader.Read ()) != -1) {
+
+                                // Comments
+                                if (ch == '/') {
+                                        next = reader.Peek ();
+                                        if (next == '/') {
+                                                // double-slash comment, skip to the end of the line.
+                                                for (reader.Read ();
+                                                        next != -1 && next != '\n';
+                                                        next = reader.Read ());
+                                                continue;
+                                        } else if (next == '*') {
+                                                reader.Read ();
+                                                for (next = reader.Read (); next != -1; next = reader.Read ()) {
+                                                        if (next == '*' && reader.Peek () == '/') {
+                                                                reader.Read ();
+                                                                goto end;
+                                                        }
+                                                }
+                                        end:
+                                                continue;
+                                        }
+                                }
+
+                                // HEXBYTES are flagged by the parser otherwise it is
+                                // impossible to figure them out
+                                if (in_byte_array) {
+                                        string hx = String.Empty;
+
+                                        if (Char.IsWhiteSpace ((char) ch))
+                                                continue;
+
+                                        if (ch == ')') {
+                                                res = ILToken.CloseParens;
+                                                break;
+                                        }
+
+                                        if (!is_hex (ch))
+                                                throw new ILTokenizingException (reader.Location, ((char) ch).ToString ());
+                                        hx += (char) ch;
+                                        if (is_hex (reader.Peek ()))
+                                                hx += (char) reader.Read ();
+                                        else if (!Char.IsWhiteSpace ((char) reader.Peek ()) && reader.Peek () != ')')
+                                                throw new ILTokenizingException (reader.Location,
+                                                                ((char) reader.Peek ()).ToString ());
+                                        res.token = Token.HEXBYTE;
+                                        res.val = Byte.Parse (hx, NumberStyles.HexNumber);
+
+                                        while (Char.IsWhiteSpace ((char) reader.Peek ()))
+                                                reader.Read ();
+                                        break;
+                                }
+                                
+                                // Ellipsis
+                                if (ch == '.' && reader.Peek () == '.') {
+                                        reader.MarkLocation ();
+                                        int ch2 = reader.Read ();
+                                        if (reader.Peek () == '.') {
+                                                res = ILToken.Ellipsis;
+                                                reader.Read ();
+                                                break;
+                                        }
+                                        reader.Unread (ch2);
+                                        reader.RestoreLocation ();
+                                }
+
+                                if (ch == '.' || ch == '#') {
+                                        next = reader.Peek ();
+                                        if (ch == '.' && Char.IsDigit((char) next)) {
+                                                numBuilder.Start (ch);
+                                                reader.Unread (ch);
+                                                numBuilder.Build ();
+                                                if (numBuilder.ResultToken != ILToken.Invalid) {
+                                                        res.CopyFrom (numBuilder.ResultToken);
+                                                        break;
+                                                }
+                                        } else {
+                                                if (strBuilder.Start (next) && strBuilder.TokenId == Token.ID) {
+                                                        reader.MarkLocation ();
+                                                        string dirBody = strBuilder.Build ();
+                                                        string dir = new string ((char) ch, 1) + dirBody;
+                                                        if (IsDirective (dir)) {
+                                                                res = ILTables.Directives [dir] as ILToken;
+                                                        } else {
+                                                                reader.Unread (dirBody.ToCharArray ());
+                                                                reader.RestoreLocation ();
+                                                                res = ILToken.Dot;
+                                                        }
+                                                } else {
+                                                        res = ILToken.Dot;
+                                                }
+                                                break;
+                                        }
+                                }
+
+                                // Numbers && Hexbytes
+                                if (numBuilder.Start (ch)) {
+                                        if ((ch == '-') && !(Char.IsDigit ((char) reader.Peek ()))) {
+                                                res = ILToken.Dash;
+                                                break;
+                                        } else {
+                                                reader.Unread (ch);
+                                                numBuilder.Build ();
+                                                if (numBuilder.ResultToken != ILToken.Invalid) {
+                                                        res.CopyFrom (numBuilder.ResultToken);
+                                                        break;
+                                                }
+                                        }
+                                }
+
+                                // Punctuation
+                                ILToken punct = ILToken.GetPunctuation (ch);
+                                if (punct != null) {
+                                        if (punct == ILToken.Colon && reader.Peek () == ':') {
+                                                reader.Read ();
+                                                res = ILToken.DoubleColon;
+                                        } else {
+                                                res = punct;
+                                        }
+                                        break;
+                                }
+
+                                // ID | QSTRING | SQSTRING | INSTR_* | KEYWORD
+                                if (strBuilder.Start (ch)) {
+                                        reader.Unread (ch);
+                                        string val = strBuilder.Build ();
+                                        if (strBuilder.TokenId == Token.ID) {
+                                                ILToken opcode;
+                                                next = reader.Peek ();
+                                                if (next == '.') {
+                                                        reader.MarkLocation ();
+                                                        reader.Read ();
+                                                        next = reader.Peek ();
+                                                        if (IsIdChar ((char) next)) {
+                                                                string opTail = BuildId ();
+                                                                string full_str = String.Format ("{0}.{1}", val, opTail);
+                                                                opcode = InstrTable.GetToken (full_str);
+
+                                                                if (opcode == null) {
+                                                                        if (strBuilder.TokenId != Token.ID) {
+                                                                                reader.Unread (opTail.ToCharArray ());
+										reader.Unread ('.');
+                                                                                reader.RestoreLocation ();
+                                                                                res.val = val;
+                                                                        } else {
+                                                                                res.token = Token.COMP_NAME;
+                                                                                res.val = full_str;
+                                                                        }
+                                                                        break;
+                                                                } else {
+                                                                        res = opcode;
+                                                                        break;
+                                                                }
+
+                                                        } else if (Char.IsWhiteSpace ((char) next)) {
+								// Handle 'tail.' and 'unaligned.'
+								opcode = InstrTable.GetToken (val + ".");
+								if (opcode != null) {
+									res = opcode;
+									break;
+								}
+								// Let the parser handle the dot
+								reader.Unread ('.');
+                                                        }
+                                                }
+                                                opcode = InstrTable.GetToken (val);
+                                                if (opcode != null) {
+                                                        res = opcode;
+                                                        break;
+                                                }
+                                                if (IsKeyword (val)) {
+                                                        res = ILTables.Keywords [val] as ILToken;
+                                                        break;
+                                                }
+                                        }
+
+                                        res.token = strBuilder.TokenId;
+                                        res.val = val;
+                                        break;
+                                }
+                        }
+
+                        OnNewToken (res);
+                        lastToken.CopyFrom (res);
+                        return res;
+                }
+
+
+                /// <summary>
+                /// </summary>
+                public ILToken NextToken {
+                        get {
+                                return GetNextToken ();
+                        }
+                }
+
+
+                /// <summary>
+                /// </summary>
+                public ILToken LastToken {
+                        get {
+                                return lastToken;
+                        }
+                }
+
+                bool is_hex (int e)
+                {
+                        return (e >= '0' && e <= '9') || (e >= 'A' && e <= 'F') || (e >= 'a' && e <= 'f');
+                }
+
+                private static bool IsIdStartChar (char ch)
+                {
+                        return (Char.IsLetter (ch) || (idchars.IndexOf (ch) != -1));
+                }
+
+
+                private static bool IsIdChar (char ch)
+                {
+                        return (Char.IsLetterOrDigit (ch) || (idchars.IndexOf (ch) != -1));
+                }
+
+                /// <summary>
+                /// </summary>
+                /// <param name="name"></param>
+                /// <returns></returns>
+                public static bool IsOpcode (string name)
+                {
+                        return InstrTable.IsInstr (name);
+                }
+
+
+                /// <summary>
+                /// </summary>
+                /// <param name="name"></param>
+                /// <returns></returns>
+                public static bool IsDirective (string name)
+                {
+                        char ch = name [0];
+                        bool res = (ch == '.' || ch == '#');
+
+                        if (res) {
+                                res = directives.Contains (name);
+                        }
+
+                        return res;
+                }
+
+                private string BuildId ()
+                {
+                        StringBuilder idsb = new StringBuilder ();
+                        int ch, last;
+
+                        last = -1;
+                        while ((ch = reader.Read ()) != -1) {
+                                if (IsIdChar ((char) ch) || ch == '.') {
+                                        idsb.Append ((char) ch);
+                                } else {
+                                        reader.Unread (ch);
+                                        // Never end an id on a DOT
+                                        if (last == '.') {
+                                                reader.Unread (last);
+                                                idsb.Length -= 1;
+                                        }        
+                                        break;
+                                }
+                                last = ch;
+                        }
+
+                        return idsb.ToString ();
+                }
+
+                /// <summary>
+                /// </summary>
+                /// <param name="name"></param>
+                /// <returns></returns>
+                public static bool IsKeyword (string name)
+                {
+                        return keywords.Contains (name);
+                }
+
+                private void OnNewToken (ILToken token)
+                {
+                        if (NewTokenEvent != null)
+                                NewTokenEvent (this, new NewTokenEventArgs (token));
+                }
+
+        }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/ITokenStream.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/ITokenStream.cs
@@ -1,13 +1,13 @@
-// ITokenStream.cs
-// (C) Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.Collections;
-
-namespace Mono.ILASM {
-	public interface ITokenStream {
-		ILToken NextToken {get;}
-		ILToken LastToken {get;}
-	}
-}
-
+// ITokenStream.cs
+// (C) Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.Collections;
+
+namespace Mono.ILASM {
+	public interface ITokenStream {
+		ILToken NextToken {get;}
+		ILToken LastToken {get;}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/InstrToken.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/InstrToken.cs
@@ -1,105 +1,105 @@
-// InstrToken.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.Reflection.Emit;
-
-namespace Mono.ILASM {
-
-	public class InstrToken : ILToken {
-
-
-		/// <summary>
-		/// </summary>
-		public InstrToken (OpCode opcode)
-		{
-			this.val = opcode;
-			token = GetInstrType (opcode);
-		}
-
-
-		/// <summary>
-		/// </summary>
-		/// <param name="opcode"></param>
-		/// <returns></returns>
-		public static int GetInstrType (OpCode opcode)
-		{
-			OperandType t = opcode.OperandType;
-			int token = Token.UNKNOWN;
-
-			switch (t) {
-
-				case OperandType.InlineBrTarget:
-				case OperandType.ShortInlineBrTarget:
-					token = Token.INSTR_BRTARGET;
-					break;
-
-				case OperandType.InlineField:
-					token = Token.INSTR_FIELD;
-					break;
-
-				case OperandType.InlineI:
-				case OperandType.ShortInlineI:
-					token = Token.INSTR_I;
-					break;
-
-				case OperandType.InlineI8:
-					token = Token.INSTR_I8;
-					break;
-
-				case OperandType.InlineMethod:
-					token = Token.INSTR_METHOD;
-					break;
-
-				case OperandType.InlineNone:
-					token = Token.INSTR_NONE;
-					break;
-
-				case OperandType.InlinePhi:
-					token = Token.INSTR_PHI;
-					break;
-
-				case OperandType.InlineR:
-				case OperandType.ShortInlineR:
-					token = Token.INSTR_R;
-					break;
-
-				/*
-				case OperandType.InlineRVA:
-					token = Token.INSTR_RVA;
-					break;
-				*/
-
-				case OperandType.InlineSig:
-					token = Token.INSTR_SIG;
-					break;
-
-				case OperandType.InlineString:
-					token = Token.INSTR_STRING;
-					break;
-
-				case OperandType.InlineSwitch:
-					token = Token.INSTR_SWITCH;
-					break;
-
-				case OperandType.InlineTok:
-					token = Token.INSTR_TOK;
-					break;
-
-				case OperandType.InlineType:
-					token = Token.INSTR_TYPE;
-					break;
-
-				case OperandType.InlineVar:
-				case OperandType.ShortInlineVar:
-					token = Token.INSTR_VAR;
-					break;
-			}
-
-			return token;
-		}
-
-
-	}
-
-}
+// InstrToken.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.Reflection.Emit;
+
+namespace Mono.ILASM {
+
+	public class InstrToken : ILToken {
+
+
+		/// <summary>
+		/// </summary>
+		public InstrToken (OpCode opcode)
+		{
+			this.val = opcode;
+			token = GetInstrType (opcode);
+		}
+
+
+		/// <summary>
+		/// </summary>
+		/// <param name="opcode"></param>
+		/// <returns></returns>
+		public static int GetInstrType (OpCode opcode)
+		{
+			OperandType t = opcode.OperandType;
+			int token = Token.UNKNOWN;
+
+			switch (t) {
+
+				case OperandType.InlineBrTarget:
+				case OperandType.ShortInlineBrTarget:
+					token = Token.INSTR_BRTARGET;
+					break;
+
+				case OperandType.InlineField:
+					token = Token.INSTR_FIELD;
+					break;
+
+				case OperandType.InlineI:
+				case OperandType.ShortInlineI:
+					token = Token.INSTR_I;
+					break;
+
+				case OperandType.InlineI8:
+					token = Token.INSTR_I8;
+					break;
+
+				case OperandType.InlineMethod:
+					token = Token.INSTR_METHOD;
+					break;
+
+				case OperandType.InlineNone:
+					token = Token.INSTR_NONE;
+					break;
+
+				case OperandType.InlinePhi:
+					token = Token.INSTR_PHI;
+					break;
+
+				case OperandType.InlineR:
+				case OperandType.ShortInlineR:
+					token = Token.INSTR_R;
+					break;
+
+				/*
+				case OperandType.InlineRVA:
+					token = Token.INSTR_RVA;
+					break;
+				*/
+
+				case OperandType.InlineSig:
+					token = Token.INSTR_SIG;
+					break;
+
+				case OperandType.InlineString:
+					token = Token.INSTR_STRING;
+					break;
+
+				case OperandType.InlineSwitch:
+					token = Token.INSTR_SWITCH;
+					break;
+
+				case OperandType.InlineTok:
+					token = Token.INSTR_TOK;
+					break;
+
+				case OperandType.InlineType:
+					token = Token.INSTR_TYPE;
+					break;
+
+				case OperandType.InlineVar:
+				case OperandType.ShortInlineVar:
+					token = Token.INSTR_VAR;
+					break;
+			}
+
+			return token;
+		}
+
+
+	}
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/Location.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/Location.cs
@@ -1,103 +1,103 @@
-// Location.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-
-namespace Mono.ILASM {
-
-
-	/// <summary>
-	/// </summary>
-	public class Location : ICloneable {
-		internal int line;
-		internal int column;
-
-
-		/// <summary>
-		/// </summary>
-		public static readonly Location Unknown = new Location (-1, -1);
-
-		/// <summary>
-		/// </summary>
-		public Location () {
-			line = 1;
-			column = 1;
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <param name="line"></param>
-		/// <param name="column"></param>
-		public Location (int line, int column)
-		{
-			this.line = line;
-			this.column = column;
-		}
-
-
-		/// <summary>
-		/// </summary>
-		/// <param name="that"></param>
-		public Location (Location that)
-		{
-			this.line = that.line;
-			this.column = that.column;
-		}
-
-
-
-
-		/// <summary>
-		/// </summary>
-		public void NewLine ()
-		{
-			++line;
-			column = 1;
-		}
-
-
-		/// <summary>
-		/// </summary>
-		public void PreviousLine ()
-		{
-			--line;
-			column = 1;
-		}
-
-		/// <summary>
-		/// </summary>
-		public void NextColumn ()
-		{
-			++column;
-		}
-
-		/// <summary>
-		/// </summary>
-		public void PreviousColumn ()
-		{
-			--column;
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <param name="other"></param>
-		public void CopyFrom (Location other)
-		{
-			this.line = other.line;
-			this.column = other.column;
-		}
-
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public virtual object Clone () {
-			return new Location (this);
-		}
-
-		public override string ToString ()
-		{
-			return "line (" + line + ") column (" + column + ")";
-		}
-	}
-}
+// Location.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+
+namespace Mono.ILASM {
+
+
+	/// <summary>
+	/// </summary>
+	public class Location : ICloneable {
+		internal int line;
+		internal int column;
+
+
+		/// <summary>
+		/// </summary>
+		public static readonly Location Unknown = new Location (-1, -1);
+
+		/// <summary>
+		/// </summary>
+		public Location () {
+			line = 1;
+			column = 1;
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <param name="line"></param>
+		/// <param name="column"></param>
+		public Location (int line, int column)
+		{
+			this.line = line;
+			this.column = column;
+		}
+
+
+		/// <summary>
+		/// </summary>
+		/// <param name="that"></param>
+		public Location (Location that)
+		{
+			this.line = that.line;
+			this.column = that.column;
+		}
+
+
+
+
+		/// <summary>
+		/// </summary>
+		public void NewLine ()
+		{
+			++line;
+			column = 1;
+		}
+
+
+		/// <summary>
+		/// </summary>
+		public void PreviousLine ()
+		{
+			--line;
+			column = 1;
+		}
+
+		/// <summary>
+		/// </summary>
+		public void NextColumn ()
+		{
+			++column;
+		}
+
+		/// <summary>
+		/// </summary>
+		public void PreviousColumn ()
+		{
+			--column;
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <param name="other"></param>
+		public void CopyFrom (Location other)
+		{
+			this.line = other.line;
+			this.column = other.column;
+		}
+
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public virtual object Clone () {
+			return new Location (this);
+		}
+
+		public override string ToString ()
+		{
+			return "line (" + line + ") column (" + column + ")";
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/NumberHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/NumberHelper.cs
@@ -1,221 +1,221 @@
-// NumberHelper.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.Text;
-using System.Globalization;
-
-namespace Mono.ILASM {
-
-        /// <summary>
-        /// </summary>
-        internal class NumberHelper : StringHelperBase {
-
-                private ILToken result;
-
-                /// <summary>
-                /// </summary>
-                /// <param name="host"></param>
-                public NumberHelper (ILTokenizer host) : base (host)
-                {
-                        Reset ();
-                }
-
-
-                private void Reset ()
-                {
-                        result = ILToken.Invalid.Clone() as ILToken;
-                }
-
-                /// <summary>
-                /// </summary>
-                /// <returns></returns>
-                public override bool Start (char ch)
-                {
-                        bool res = (Char.IsDigit (ch) || ch == '-' || (ch == '.' && Char.IsDigit ((char) host.Reader.Peek ())));
-                        Reset ();
-                        return res;
-                }
-
-                bool is_hex (int e)
-                {
-                        return (e >= '0' && e <= '9') || (e >= 'A' && e <= 'F') || (e >= 'a' && e <= 'f');
-                }
-
-                bool is_sign (int ch)
-                {
-                        return ((ch == '+') || (ch == '-'));
-                }
-
-                bool is_e (int ch)
-                {
-                        return ((ch == 'e') || (ch == 'E'));
-                }
-
-                /// <summary>
-                /// </summary>
-                /// <returns></returns>
-                public override string Build ()
-                {
-                        ILReader reader = host.Reader;
-                        reader.MarkLocation ();
-                        StringBuilder num_builder = new StringBuilder ();
-                        string num;
-                        int ch;
-                        int peek;
-                        bool is_real = false;
-                        bool dec_found = false;
-
-                        NumberStyles nstyles = NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint |
-                                NumberStyles.AllowLeadingSign;
-
-                        ch = reader.Read ();
-                        peek = reader.Peek ();
-                        reader.Unread (ch);
-
-                        if (ch == '0' && (peek == 'x' || peek == 'X'))
-                                return BuildHex ();
-
-                        if (is_sign (reader.Peek ()))
-                                num_builder.Append ((char) reader.Read ());
-
-                        do {
-                                ch = reader.Read ();
-                                peek = reader.Peek ();
-                                num_builder.Append ((char) ch);
-
-                                if (is_e (ch)) {
-                                        if (is_real)
-                                                throw new ILTokenizingException (reader.Location, num_builder.ToString ());
-
-                                        is_real = true;
-                                }
-                                if (ch == '.')
-                                        dec_found = true;
-                                if (!is_hex(peek) &&
-                                    !(peek == '.' && !dec_found) && !is_e (peek) &&
-                                    !(is_sign (peek) && is_real)) {
-                                        break;
-                                }
-                        } while (ch != -1);
-
-                        num = num_builder.ToString ();
-
-                        // Check for hexbytes
-                        if (num.Length == 2) {
-                                if (Char.IsLetter (num[0]) || Char.IsLetter (num[1])) {
-                                        result.token = Token.HEXBYTE;
-                                        result.val = Byte.Parse (num, NumberStyles.HexNumber);
-                                        return num;
-                                }
-                        }
-
-                        if (ch == '.' && peek == '.') {
-                                num = num.Substring (0, num.Length-1);
-                                reader.Unread ('.');
-                                dec_found = false;
-                        } else if (ch == '.') {
-                                num += '0';
-                        }
-
-                        if (!dec_found && !is_real) {        
-                                try { 
-                                        long i = Int64.Parse (num, nstyles);
-                                        result.token = Token.INT64;
-                                        result.val = i;
-
-                                        return num;
-                                } catch {
-                                }
-
-				try {
-					long i = (long) UInt64.Parse (num, nstyles);
-                                        result.token = Token.INT64;
-                                        result.val = i;
-
-					return num;
-				} catch {
-				}
-                        }
-
-                        try {
-                                double d = Double.Parse (num, nstyles, NumberFormatInfo.InvariantInfo);
-                                result.token = Token.FLOAT64;
-                                result.val = d;
-                        } catch {
-                                reader.Unread (num.ToCharArray ());
-                                reader.RestoreLocation ();
-                                num = String.Empty;
-                                Reset ();
-                                throw new ILTokenizingException (reader.Location, num_builder.ToString ());
-                        }
-                        return num;
-                }
-
-                public string BuildHex ()
-                {
-                        ILReader reader = host.Reader;
-                        reader.MarkLocation ();
-                        StringBuilder num_builder = new StringBuilder ();
-                        NumberStyles nstyles = NumberStyles.HexNumber;
-
-                        string num;
-                        int ch;
-                        int peek;
-
-                        ch = reader.Read ();
-                        if (ch != '0')
-                                throw new ILTokenizingException (reader.Location, ((char) ch).ToString ());
-
-                        ch = reader.Read ();
-
-                        if (ch != 'x' && ch != 'X')
-                                throw new ILTokenizingException (reader.Location, "0" + (char) ch);
-
-                        do {
-                                ch = reader.Read ();
-                                peek = reader.Peek ();
-                                num_builder.Append ((char) ch);
-
-                                if (!is_hex ((char) peek))
-                                        break;
-
-                                if (num_builder.Length == 32)
-                                        throw new ILTokenizingException (reader.Location, num_builder.ToString ());
-
-                        } while (ch != -1);
-
-                        num = num_builder.ToString ();
-
-                        try {
-                                long i = (long) UInt64.Parse (num, nstyles);
-                                //if (i < Int32.MinValue || i > Int32.MaxValue) {
-                                        result.token = Token.INT64;
-                                        result.val = i;
-                                //} else {
-                                //        result.token = Token.INT32;
-                                //        result.val = (int) i;
-                                //}
-                        } catch {
-                                string tnum = num;
-                                reader.Unread (num.ToCharArray ());
-                                reader.RestoreLocation ();
-                                num = String.Empty;
-                                Reset ();
-                                throw new ILTokenizingException (reader.Location, tnum);
-                        }
-                        return num;
-                }
-
-                /// <summary>
-                /// </summary>
-                public ILToken ResultToken {
-                        get {
-                                return result;
-                        }
-                }
-
-
-        }
-
-}
+// NumberHelper.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.Text;
+using System.Globalization;
+
+namespace Mono.ILASM {
+
+        /// <summary>
+        /// </summary>
+        internal class NumberHelper : StringHelperBase {
+
+                private ILToken result;
+
+                /// <summary>
+                /// </summary>
+                /// <param name="host"></param>
+                public NumberHelper (ILTokenizer host) : base (host)
+                {
+                        Reset ();
+                }
+
+
+                private void Reset ()
+                {
+                        result = ILToken.Invalid.Clone() as ILToken;
+                }
+
+                /// <summary>
+                /// </summary>
+                /// <returns></returns>
+                public override bool Start (char ch)
+                {
+                        bool res = (Char.IsDigit (ch) || ch == '-' || (ch == '.' && Char.IsDigit ((char) host.Reader.Peek ())));
+                        Reset ();
+                        return res;
+                }
+
+                bool is_hex (int e)
+                {
+                        return (e >= '0' && e <= '9') || (e >= 'A' && e <= 'F') || (e >= 'a' && e <= 'f');
+                }
+
+                bool is_sign (int ch)
+                {
+                        return ((ch == '+') || (ch == '-'));
+                }
+
+                bool is_e (int ch)
+                {
+                        return ((ch == 'e') || (ch == 'E'));
+                }
+
+                /// <summary>
+                /// </summary>
+                /// <returns></returns>
+                public override string Build ()
+                {
+                        ILReader reader = host.Reader;
+                        reader.MarkLocation ();
+                        StringBuilder num_builder = new StringBuilder ();
+                        string num;
+                        int ch;
+                        int peek;
+                        bool is_real = false;
+                        bool dec_found = false;
+
+                        NumberStyles nstyles = NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint |
+                                NumberStyles.AllowLeadingSign;
+
+                        ch = reader.Read ();
+                        peek = reader.Peek ();
+                        reader.Unread (ch);
+
+                        if (ch == '0' && (peek == 'x' || peek == 'X'))
+                                return BuildHex ();
+
+                        if (is_sign (reader.Peek ()))
+                                num_builder.Append ((char) reader.Read ());
+
+                        do {
+                                ch = reader.Read ();
+                                peek = reader.Peek ();
+                                num_builder.Append ((char) ch);
+
+                                if (is_e (ch)) {
+                                        if (is_real)
+                                                throw new ILTokenizingException (reader.Location, num_builder.ToString ());
+
+                                        is_real = true;
+                                }
+                                if (ch == '.')
+                                        dec_found = true;
+                                if (!is_hex(peek) &&
+                                    !(peek == '.' && !dec_found) && !is_e (peek) &&
+                                    !(is_sign (peek) && is_real)) {
+                                        break;
+                                }
+                        } while (ch != -1);
+
+                        num = num_builder.ToString ();
+
+                        // Check for hexbytes
+                        if (num.Length == 2) {
+                                if (Char.IsLetter (num[0]) || Char.IsLetter (num[1])) {
+                                        result.token = Token.HEXBYTE;
+                                        result.val = Byte.Parse (num, NumberStyles.HexNumber);
+                                        return num;
+                                }
+                        }
+
+                        if (ch == '.' && peek == '.') {
+                                num = num.Substring (0, num.Length-1);
+                                reader.Unread ('.');
+                                dec_found = false;
+                        } else if (ch == '.') {
+                                num += '0';
+                        }
+
+                        if (!dec_found && !is_real) {        
+                                try { 
+                                        long i = Int64.Parse (num, nstyles);
+                                        result.token = Token.INT64;
+                                        result.val = i;
+
+                                        return num;
+                                } catch {
+                                }
+
+				try {
+					long i = (long) UInt64.Parse (num, nstyles);
+                                        result.token = Token.INT64;
+                                        result.val = i;
+
+					return num;
+				} catch {
+				}
+                        }
+
+                        try {
+                                double d = Double.Parse (num, nstyles, NumberFormatInfo.InvariantInfo);
+                                result.token = Token.FLOAT64;
+                                result.val = d;
+                        } catch {
+                                reader.Unread (num.ToCharArray ());
+                                reader.RestoreLocation ();
+                                num = String.Empty;
+                                Reset ();
+                                throw new ILTokenizingException (reader.Location, num_builder.ToString ());
+                        }
+                        return num;
+                }
+
+                public string BuildHex ()
+                {
+                        ILReader reader = host.Reader;
+                        reader.MarkLocation ();
+                        StringBuilder num_builder = new StringBuilder ();
+                        NumberStyles nstyles = NumberStyles.HexNumber;
+
+                        string num;
+                        int ch;
+                        int peek;
+
+                        ch = reader.Read ();
+                        if (ch != '0')
+                                throw new ILTokenizingException (reader.Location, ((char) ch).ToString ());
+
+                        ch = reader.Read ();
+
+                        if (ch != 'x' && ch != 'X')
+                                throw new ILTokenizingException (reader.Location, "0" + (char) ch);
+
+                        do {
+                                ch = reader.Read ();
+                                peek = reader.Peek ();
+                                num_builder.Append ((char) ch);
+
+                                if (!is_hex ((char) peek))
+                                        break;
+
+                                if (num_builder.Length == 32)
+                                        throw new ILTokenizingException (reader.Location, num_builder.ToString ());
+
+                        } while (ch != -1);
+
+                        num = num_builder.ToString ();
+
+                        try {
+                                long i = (long) UInt64.Parse (num, nstyles);
+                                //if (i < Int32.MinValue || i > Int32.MaxValue) {
+                                        result.token = Token.INT64;
+                                        result.val = i;
+                                //} else {
+                                //        result.token = Token.INT32;
+                                //        result.val = (int) i;
+                                //}
+                        } catch {
+                                string tnum = num;
+                                reader.Unread (num.ToCharArray ());
+                                reader.RestoreLocation ();
+                                num = String.Empty;
+                                Reset ();
+                                throw new ILTokenizingException (reader.Location, tnum);
+                        }
+                        return num;
+                }
+
+                /// <summary>
+                /// </summary>
+                public ILToken ResultToken {
+                        get {
+                                return result;
+                        }
+                }
+
+
+        }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/StringHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/StringHelper.cs
@@ -1,142 +1,142 @@
-// StringHelper.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.Text;
-
-namespace Mono.ILASM {
-
-	/// <summary>
-	/// </summary>
-	internal class StringHelper : StringHelperBase {
-
-		private static readonly string startIdChars = "#$@_";
-		private static readonly string idChars = "_$@?`";
-
-		/// <summary>
-		/// </summary>
-		/// <param name="host"></param>
-		public StringHelper (ILTokenizer host) : base (host)
-		{
-		}
-
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public override bool Start (char ch)
-		{
-			mode = Token.UNKNOWN;
-
-			if (Char.IsLetter (ch) || startIdChars.IndexOf (ch) != -1) {
-				mode = Token.ID;
-			} else if (ch == '\'') {
-				mode = Token.SQSTRING;
-			} else if (ch == '"') {
-				mode = Token.QSTRING;
-			}
-
-			return (mode != Token.UNKNOWN);
-		}
-
-
-		private static bool IsIdChar (int c)
-		{
-			char ch = (char) c;
-			return (Char.IsLetterOrDigit(ch) || idChars.IndexOf (ch) != -1);
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public override string Build ()
-		{
-			if (mode == Token.UNKNOWN) return String.Empty;
-			int ch = 0;
-
-			ILReader reader = host.Reader;
-
-			StringBuilder idsb = new StringBuilder ();
-			if (mode == Token.SQSTRING || mode == Token.QSTRING) {
-				int term = (mode == Token.SQSTRING) ? '\'' : '"';
-				reader.Read (); // skip quote
-				for (ch = reader.Read (); ch != -1; ch = reader.Read ()) {
-					if (ch == term) {
-						break;
-					}
-
-					if (ch == '\\') {
-						ch = reader.Read ();
-
-						/*
-						 * Long string can be broken across multiple lines
-						 * by using '\' as the last char in line.
-						 * Any white space chars between '\' and the first
-						 * char on the next line are ignored.
-						 */
-						if (ch == '\n') {
-							reader.SkipWhitespace ();
-							continue;
-						}
-
-						int escaped = Escape (reader, ch);
-						if (escaped == -1) {
-                                                        reader.Unread (ch);
-                                                        ch = '\\';
-                                                } else {
-                                                        ch = escaped;
-						}
-					}
-
-					idsb.Append((char)ch);
-				}
-			} else { // ID
-				while ((ch = reader.Read ()) != -1) {
-					if (IsIdChar (ch)) {
-						idsb.Append ((char) ch);
-					} else {
-						reader.Unread (ch);
-						break;
-					}
-				}
-			}
-			return idsb.ToString ();
-		}
-
-
-
-
-		/// <summary>
-		/// </summary>
-		/// <param name="ch"></param>
-		/// <returns></returns>
-		public static int Escape (ILReader reader, int ch)
-		{
-			int res = -1;
-
-			if (ch >= '0' && ch <='7') {
-				StringBuilder octal = new StringBuilder ();
-				octal.Append ((char)ch);
-				int possibleOctalChar = reader.Peek ();
-				if (possibleOctalChar >= '0' && possibleOctalChar <='7') {
-					octal.Append ((char)reader.Read ());
-					possibleOctalChar = reader.Peek ();
-					if (possibleOctalChar >= '0' && possibleOctalChar <='7')
-						octal.Append ((char)reader.Read ());
-				}
-				res = Convert.ToInt32(octal.ToString (), 8);
-			} else {
-				int id = "abfnrtv\"'\\".IndexOf ((char)ch);
-				if (id != -1) {
-					res = "\a\b\f\n\r\t\v\"'\\" [id];
-				}
-			}
-
-			return res;
-		}
-
-	}
-
-
-}
-
+// StringHelper.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.Text;
+
+namespace Mono.ILASM {
+
+	/// <summary>
+	/// </summary>
+	internal class StringHelper : StringHelperBase {
+
+		private static readonly string startIdChars = "#$@_";
+		private static readonly string idChars = "_$@?`";
+
+		/// <summary>
+		/// </summary>
+		/// <param name="host"></param>
+		public StringHelper (ILTokenizer host) : base (host)
+		{
+		}
+
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public override bool Start (char ch)
+		{
+			mode = Token.UNKNOWN;
+
+			if (Char.IsLetter (ch) || startIdChars.IndexOf (ch) != -1) {
+				mode = Token.ID;
+			} else if (ch == '\'') {
+				mode = Token.SQSTRING;
+			} else if (ch == '"') {
+				mode = Token.QSTRING;
+			}
+
+			return (mode != Token.UNKNOWN);
+		}
+
+
+		private static bool IsIdChar (int c)
+		{
+			char ch = (char) c;
+			return (Char.IsLetterOrDigit(ch) || idChars.IndexOf (ch) != -1);
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public override string Build ()
+		{
+			if (mode == Token.UNKNOWN) return String.Empty;
+			int ch = 0;
+
+			ILReader reader = host.Reader;
+
+			StringBuilder idsb = new StringBuilder ();
+			if (mode == Token.SQSTRING || mode == Token.QSTRING) {
+				int term = (mode == Token.SQSTRING) ? '\'' : '"';
+				reader.Read (); // skip quote
+				for (ch = reader.Read (); ch != -1; ch = reader.Read ()) {
+					if (ch == term) {
+						break;
+					}
+
+					if (ch == '\\') {
+						ch = reader.Read ();
+
+						/*
+						 * Long string can be broken across multiple lines
+						 * by using '\' as the last char in line.
+						 * Any white space chars between '\' and the first
+						 * char on the next line are ignored.
+						 */
+						if (ch == '\n') {
+							reader.SkipWhitespace ();
+							continue;
+						}
+
+						int escaped = Escape (reader, ch);
+						if (escaped == -1) {
+                                                        reader.Unread (ch);
+                                                        ch = '\\';
+                                                } else {
+                                                        ch = escaped;
+						}
+					}
+
+					idsb.Append((char)ch);
+				}
+			} else { // ID
+				while ((ch = reader.Read ()) != -1) {
+					if (IsIdChar (ch)) {
+						idsb.Append ((char) ch);
+					} else {
+						reader.Unread (ch);
+						break;
+					}
+				}
+			}
+			return idsb.ToString ();
+		}
+
+
+
+
+		/// <summary>
+		/// </summary>
+		/// <param name="ch"></param>
+		/// <returns></returns>
+		public static int Escape (ILReader reader, int ch)
+		{
+			int res = -1;
+
+			if (ch >= '0' && ch <='7') {
+				StringBuilder octal = new StringBuilder ();
+				octal.Append ((char)ch);
+				int possibleOctalChar = reader.Peek ();
+				if (possibleOctalChar >= '0' && possibleOctalChar <='7') {
+					octal.Append ((char)reader.Read ());
+					possibleOctalChar = reader.Peek ();
+					if (possibleOctalChar >= '0' && possibleOctalChar <='7')
+						octal.Append ((char)reader.Read ());
+				}
+				res = Convert.ToInt32(octal.ToString (), 8);
+			} else {
+				int id = "abfnrtv\"'\\".IndexOf ((char)ch);
+				if (id != -1) {
+					res = "\a\b\f\n\r\t\v\"'\\" [id];
+				}
+			}
+
+			return res;
+		}
+
+	}
+
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/scanner/StringHelperBase.cs
+++ mono-4.6.2.7+dfsg/mcs/ilasm/scanner/StringHelperBase.cs
@@ -1,63 +1,63 @@
-// StringHelperBase.cs
-// Author: Sergey Chaban (serge@wildwestsoftware.com)
-
-using System;
-using System.Text;
-
-namespace Mono.ILASM {
-
-	/// <summary>
-	/// </summary>
-	internal abstract class StringHelperBase {
-
-		protected ILTokenizer host;
-		protected int mode;
-
-		/// <summary>
-		/// </summary>
-		/// <param name="host"></param>
-		public StringHelperBase (ILTokenizer host) {
-			this.host = host;
-			mode = Token.UNKNOWN;
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public abstract bool Start (char ch);
-
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public bool Start (int ch)
-		{
-			return Start ((char)ch);
-		}
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public bool Start ()
-		{
-			return Start (host.Reader.Peek ());
-		}
-
-
-		/// <summary>
-		/// </summary>
-		/// <returns></returns>
-		public abstract string Build ();
-
-
-		/// <summary>
-		/// </summary>
-		public int TokenId {
-			get {
-				return mode;
-			}
-		}
-
-	}
-
+// StringHelperBase.cs
+// Author: Sergey Chaban (serge@wildwestsoftware.com)
+
+using System;
+using System.Text;
+
+namespace Mono.ILASM {
+
+	/// <summary>
+	/// </summary>
+	internal abstract class StringHelperBase {
+
+		protected ILTokenizer host;
+		protected int mode;
+
+		/// <summary>
+		/// </summary>
+		/// <param name="host"></param>
+		public StringHelperBase (ILTokenizer host) {
+			this.host = host;
+			mode = Token.UNKNOWN;
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public abstract bool Start (char ch);
+
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public bool Start (int ch)
+		{
+			return Start ((char)ch);
+		}
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public bool Start ()
+		{
+			return Start (host.Reader.Peek ());
+		}
+
+
+		/// <summary>
+		/// </summary>
+		/// <returns></returns>
+		public abstract string Build ();
+
+
+		/// <summary>
+		/// </summary>
+		public int TokenId {
+			get {
+				return mode;
+			}
+		}
+
+	}
+
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method1.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method1.il
@@ -1,10 +1,10 @@
-//Interface not marked abstract,
-//abstract instance method
-
-.class public interface Test
-{
-       .method public newslot instance object Foo ()
-       { }
-
-}
-
+//Interface not marked abstract,
+//abstract instance method
+
+.class public interface Test
+{
+       .method public newslot instance object Foo ()
+       { }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method10.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method10.il
@@ -1,10 +1,10 @@
-//Abstract static method
-
-.class public abstract Test
-{
-       .method public static abstract newslot object Foo ()
-       { 
-       }
-
-}
-
+//Abstract static method
+
+.class public abstract Test
+{
+       .method public static abstract newslot object Foo ()
+       { 
+       }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method2.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method2.il
@@ -1,10 +1,10 @@
-//Interface not marked abstract,
-//abstract static method
-
-.class public interface Test
-{
-       .method public newslot static object Foo ()
-       { }
-
-}
-
+//Interface not marked abstract,
+//abstract static method
+
+.class public interface Test
+{
+       .method public newslot static object Foo ()
+       { }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method3.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method3.il
@@ -1,13 +1,13 @@
-//Interface not marked abstract,
-//static method with body
-
-.class public interface Test
-{
-       .method public newslot static object Foo ()
-       { 
-		ldnull
-		ret
-       }
-
-}
-
+//Interface not marked abstract,
+//static method with body
+
+.class public interface Test
+{
+       .method public newslot static object Foo ()
+       { 
+		ldnull
+		ret
+       }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method5.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method5.il
@@ -1,13 +1,13 @@
-//Abstract class,
-//instance method with body
-
-.class public abstract Test
-{
-       .method public newslot object Foo ()
-       { 
-		ldnull
-		ret
-       }
-
-}
-
+//Abstract class,
+//instance method with body
+
+.class public abstract Test
+{
+       .method public newslot object Foo ()
+       { 
+		ldnull
+		ret
+       }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method6.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method6.il
@@ -1,11 +1,11 @@
-//Abstract class,
-//instance method with no body
-
-.class public abstract Test
-{
-       .method public newslot object Foo ()
-       { 
-       }
-
-}
-
+//Abstract class,
+//instance method with no body
+
+.class public abstract Test
+{
+       .method public newslot object Foo ()
+       { 
+       }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method7.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method7.il
@@ -1,13 +1,13 @@
-//Abstract class,
-//static method with body
-
-.class public abstract Test
-{
-       .method public static newslot object Foo ()
-       { 
-	        ldnull
-		ret
-       }
-
-}
-
+//Abstract class,
+//static method with body
+
+.class public abstract Test
+{
+       .method public static newslot object Foo ()
+       { 
+	        ldnull
+		ret
+       }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/abs_method8.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/abs_method8.il
@@ -1,11 +1,11 @@
-//Abstract class,
-//static method with no body
-
-.class public abstract Test
-{
-       .method public static newslot object Foo ()
-       { 
-       }
-
-}
-
+//Abstract class,
+//static method with no body
+
+.class public abstract Test
+{
+       .method public static newslot object Foo ()
+       { 
+       }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/dotted-names.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/dotted-names.il
@@ -1,28 +1,28 @@
-//Tests dotted names (namespace, class names)
-//It should emit namespace = A.B.C and type name = D
-//For E.F, namespace = E, name = F
-
-.assembly extern mscorlib
-{
-}
-
-.assembly Output 
-{
-}
-
-.module Output
-
-.namespace A.B {
-	
-.class public auto autochar sealed beforefieldinit C.D
-       extends [mscorlib]System.Object
-{
-}
-
-}
-
-.class public auto autochar sealed beforefieldinit E.F 
-       extends [mscorlib]System.Object
-{
-}
-
+//Tests dotted names (namespace, class names)
+//It should emit namespace = A.B.C and type name = D
+//For E.F, namespace = E, name = F
+
+.assembly extern mscorlib
+{
+}
+
+.assembly Output 
+{
+}
+
+.module Output
+
+.namespace A.B {
+	
+.class public auto autochar sealed beforefieldinit C.D
+       extends [mscorlib]System.Object
+{
+}
+
+}
+
+.class public auto autochar sealed beforefieldinit E.F 
+       extends [mscorlib]System.Object
+{
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/gen-1.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/gen-1.il
@@ -1,69 +1,69 @@
-//Tests generic method reference
-
-.assembly extern mscorlib
-{
-  .ver 2:0:0:0
-}
-.assembly pp
-{
-  .ver 0:0:0:0
-}
-
-.class private auto ansi beforefieldinit 'A`1'<T>
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig static !T  foo<X,Y>(!T _t,
-                                               !!X _x) cil managed
-  {
-    .maxstack  1
-    .locals init (!T V_0)
-    IL_0000:  nop
-    IL_0001:  ldarg.0
-    IL_0002:  stloc.0
-    IL_0003:  br.s       IL_0005
-
-    IL_0005:  ldloc.0
-    IL_0006:  ret
-  }
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
-.class private auto ansi beforefieldinit 'B`1'<U>
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig static void  bar<Z>() cil managed
-  {
-    // Code size       18 (0x12)
-    .maxstack  2
-    .locals init (!U V_0)
-    IL_0000:  nop
-    IL_0001:  ldloca.s   V_0
-    IL_0003:  initobj    !U
-    IL_0009:  ldloc.0
-    IL_000a:  ldc.i4.5
-    IL_000b:  call       !0 class 'A`1'<!U>::foo<int32,!U>(!0,
-                                                         !!Z)
-    IL_0010:  pop
-    IL_0011:  ret
-  } // end of method B`1::bar
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    // Code size       7 (0x7)
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  } // end of method B`1::.ctor
-
-}
+//Tests generic method reference
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+}
+.assembly pp
+{
+  .ver 0:0:0:0
+}
+
+.class private auto ansi beforefieldinit 'A`1'<T>
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig static !T  foo<X,Y>(!T _t,
+                                               !!X _x) cil managed
+  {
+    .maxstack  1
+    .locals init (!T V_0)
+    IL_0000:  nop
+    IL_0001:  ldarg.0
+    IL_0002:  stloc.0
+    IL_0003:  br.s       IL_0005
+
+    IL_0005:  ldloc.0
+    IL_0006:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class private auto ansi beforefieldinit 'B`1'<U>
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig static void  bar<Z>() cil managed
+  {
+    // Code size       18 (0x12)
+    .maxstack  2
+    .locals init (!U V_0)
+    IL_0000:  nop
+    IL_0001:  ldloca.s   V_0
+    IL_0003:  initobj    !U
+    IL_0009:  ldloc.0
+    IL_000a:  ldc.i4.5
+    IL_000b:  call       !0 class 'A`1'<!U>::foo<int32,!U>(!0,
+                                                         !!Z)
+    IL_0010:  pop
+    IL_0011:  ret
+  } // end of method B`1::bar
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    // Code size       7 (0x7)
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  } // end of method B`1::.ctor
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/gen-extern-type.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/gen-extern-type.il
@@ -1,51 +1,51 @@
-// Test for Ref to external generic types
-
-.assembly extern mscorlib
-{
-  .ver 2:0:0:0
-}
-.assembly extern one
-{
-  .ver 0:0:0:0
-}
-.assembly 'gen-extern-type'
-{
-  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78
-                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )
-  .ver 0:0:0:0
-}
-
-.module use.exe
-
-.class private auto ansi beforefieldinit test
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-  .method public hidebysig static void  Main() cil managed
-  {
-    .entrypoint
-    .maxstack  3
-    .locals init (class [one]ns.gen_m`1<int32>[] V_0)
-    IL_0000:  ldc.i4.5
-    IL_0001:  newarr     class [one]ns.gen_m`1<int32>
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  ldc.i4.0
-    IL_0009:  newobj     instance void class [one]ns.gen_m`1<int32>::.ctor()
-    IL_000e:  stelem.ref
-    IL_000f:  ldstr      "asd"
-    IL_0014:  call       void class [one]ns.gen_m`1<int32>::foo<string>(!!0)
-    IL_0019:  ldc.i4.5
-    IL_001a:  call       void class [one]ns.gen_m`1<int32>::foo<int32,string>(!!0)
-    IL_001f:  ret
-  }
-
-}
+// Test for Ref to external generic types
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+}
+.assembly extern one
+{
+  .ver 0:0:0:0
+}
+.assembly 'gen-extern-type'
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78
+                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )
+  .ver 0:0:0:0
+}
+
+.module use.exe
+
+.class private auto ansi beforefieldinit test
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+  .method public hidebysig static void  Main() cil managed
+  {
+    .entrypoint
+    .maxstack  3
+    .locals init (class [one]ns.gen_m`1<int32>[] V_0)
+    IL_0000:  ldc.i4.5
+    IL_0001:  newarr     class [one]ns.gen_m`1<int32>
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  ldc.i4.0
+    IL_0009:  newobj     instance void class [one]ns.gen_m`1<int32>::.ctor()
+    IL_000e:  stelem.ref
+    IL_000f:  ldstr      "asd"
+    IL_0014:  call       void class [one]ns.gen_m`1<int32>::foo<string>(!!0)
+    IL_0019:  ldc.i4.5
+    IL_001a:  call       void class [one]ns.gen_m`1<int32>::foo<int32,string>(!!0)
+    IL_001f:  ret
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/global.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/global.il
@@ -1,39 +1,39 @@
-//Tests global generic methods
-
-.assembly extern mscorlib
-{
-  .ver 2:0:0:0
-}
-.assembly ca
-{
-   .ver 0:0:0:0
-}
-.module ca.dll
-
-//Global Method
-  .method public hidebysig static void  foo<A,B>() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ret
-  }
-
-.class private auto ansi beforefieldinit abc`1<Z>
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-  .method public hidebysig static void  bar() cil managed
-  {
-    .maxstack  8
-    IL_0000:  call       void foo<!Z,string>()
-    IL_0005:  ret
-  }
-
-}
+//Tests global generic methods
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+}
+.assembly ca
+{
+   .ver 0:0:0:0
+}
+.module ca.dll
+
+//Global Method
+  .method public hidebysig static void  foo<A,B>() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ret
+  }
+
+.class private auto ansi beforefieldinit abc`1<Z>
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+  .method public hidebysig static void  bar() cil managed
+  {
+    .maxstack  8
+    IL_0000:  call       void foo<!Z,string>()
+    IL_0005:  ret
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/test-33.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/test-33.il
@@ -1,75 +1,75 @@
-.assembly extern mscorlib
-{
-}
-.assembly bb
-{
-  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
-  .hash algorithm 0x00008004
-  .ver 0:0:0:0
-}
-.module bb.exe
-
-.class private auto ansi beforefieldinit GenParAttribute
-       extends [mscorlib]System.Attribute
-{
-  .custom instance void [mscorlib]System.AttributeUsageAttribute::.ctor(valuetype [mscorlib]System.AttributeTargets) = ( 01 00 00 40 00 00 00 00 )
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Attribute::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
-.class private auto ansi beforefieldinit cons`1<A>
-       extends [mscorlib]System.Object
-{
-  .param type A 
-  .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
-
-  .method public hidebysig instance void 
-          abc<M>() cil managed
-  {
-    .param type M 
-    .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
-
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ret
-  }
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
-.class private auto ansi beforefieldinit Test
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig static void  Main() cil managed
-  {
-    .entrypoint
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ret
-  }
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-}
+.assembly extern mscorlib
+{
+}
+.assembly bb
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module bb.exe
+
+.class private auto ansi beforefieldinit GenParAttribute
+       extends [mscorlib]System.Attribute
+{
+  .custom instance void [mscorlib]System.AttributeUsageAttribute::.ctor(valuetype [mscorlib]System.AttributeTargets) = ( 01 00 00 40 00 00 00 00 )
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Attribute::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class private auto ansi beforefieldinit cons`1<A>
+       extends [mscorlib]System.Object
+{
+  .param type A 
+  .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
+
+  .method public hidebysig instance void 
+          abc<M>() cil managed
+  {
+    .param type M 
+    .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
+
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class private auto ansi beforefieldinit Test
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig static void  Main() cil managed
+  {
+    .entrypoint
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/test-34.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/test-34.il
@@ -1,76 +1,76 @@
-.assembly extern mscorlib
-{
-}
-.assembly bb
-{
-  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
-  .hash algorithm 0x00008004
-  .ver 0:0:0:0
-}
-.module bb.exe
-
-.class private auto ansi beforefieldinit GenParAttribute
-       extends [mscorlib]System.Attribute
-{
-  .custom instance void [mscorlib]System.AttributeUsageAttribute::.ctor(valuetype [mscorlib]System.AttributeTargets) = ( 01 00 00 40 00 00 00 00 )
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Attribute::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
-.class private auto ansi beforefieldinit cons`1<A>
-       extends [mscorlib]System.Object
-{
-  .param type [1]
-  .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
-  .method public hidebysig instance void 
-          abc<M>() cil managed
-  {
-    .param type [1]
-    .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
-    // Code size       2 (0x2)
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ret
-  }
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
-.class private auto ansi beforefieldinit Test
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig static void  Main() cil managed
-  {
-    .entrypoint
-    // Code size       2 (0x2)
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ret
-  }
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
+.assembly extern mscorlib
+{
+}
+.assembly bb
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module bb.exe
+
+.class private auto ansi beforefieldinit GenParAttribute
+       extends [mscorlib]System.Attribute
+{
+  .custom instance void [mscorlib]System.AttributeUsageAttribute::.ctor(valuetype [mscorlib]System.AttributeTargets) = ( 01 00 00 40 00 00 00 00 )
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Attribute::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class private auto ansi beforefieldinit cons`1<A>
+       extends [mscorlib]System.Object
+{
+  .param type [1]
+  .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
+  .method public hidebysig instance void 
+          abc<M>() cil managed
+  {
+    .param type [1]
+    .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
+    // Code size       2 (0x2)
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class private auto ansi beforefieldinit Test
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig static void  Main() cil managed
+  {
+    .entrypoint
+    // Code size       2 (0x2)
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ret
+  }
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/test-bounded-array.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/test-bounded-array.il
@@ -1,28 +1,28 @@
-//Test case for #76976
-//uint8[0...] should not lose its lower-bound info
-
-.assembly extern mscorlib
-{
-}
-.assembly Output
-{
-  .ver 1:0:0:0
-}
-.module Output
-
-.class private auto autochar beforefieldinit Test
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig static void  Main() cil managed
-  {
-    .entrypoint
-    .maxstack 2 
-    .locals init (uint8[8] V_0,
-             int32 V_1)
-    ldc.i4.8
-    newobj     instance void uint8[0...]::.ctor(int32)
-    pop
-    ret
-  }
-
-}
+//Test case for #76976
+//uint8[0...] should not lose its lower-bound info
+
+.assembly extern mscorlib
+{
+}
+.assembly Output
+{
+  .ver 1:0:0:0
+}
+.module Output
+
+.class private auto autochar beforefieldinit Test
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig static void  Main() cil managed
+  {
+    .entrypoint
+    .maxstack 2 
+    .locals init (uint8[8] V_0,
+             int32 V_1)
+    ldc.i4.8
+    newobj     instance void uint8[0...]::.ctor(int32)
+    pop
+    ret
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/test-cattr-1.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/test-cattr-1.il
@@ -1,43 +1,43 @@
-//Test for custom attributes on return type of a method
-
-.assembly extern mscorlib
-{
-}
-.assembly bb
-{
-  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
-  .hash algorithm 0x00008004
-  .ver 0:0:0:0
-}
-.module bb.exe
-
-.class private auto ansi beforefieldinit GenParAttribute
-       extends [mscorlib]System.Attribute
-{
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Attribute::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
-.class private auto ansi beforefieldinit foo
-       extends [mscorlib]System.Object
-{
-
-  .method public hidebysig static void 
-          abc () cil managed
-  {
-    .param [0]
-    .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
-
-    .entrypoint
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ret
-  }
-}
+//Test for custom attributes on return type of a method
+
+.assembly extern mscorlib
+{
+}
+.assembly bb
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module bb.exe
+
+.class private auto ansi beforefieldinit GenParAttribute
+       extends [mscorlib]System.Attribute
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Attribute::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class private auto ansi beforefieldinit foo
+       extends [mscorlib]System.Object
+{
+
+  .method public hidebysig static void 
+          abc () cil managed
+  {
+    .param [0]
+    .custom instance void GenParAttribute::.ctor() = ( 01 00 00 00 ) 
+
+    .entrypoint
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ret
+  }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/test-field-init.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/test-field-init.il
@@ -1,40 +1,40 @@
-// Test for field initialization, for the syntax 
-//   .. = int8 (value)
-
-.assembly extern mscorlib
-{
-  .ver 2:0:0:0
-}
-.assembly 'test-field-init'
-{
-  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
-                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
-  .ver 0:0:0:0
-}
-.module 'test-field-init.dll'
-
-.class private auto ansi beforefieldinit test
-       extends [mscorlib]System.Object
-{
-  .field public static literal int8 tf = int8(-3)
-  .field public static literal uint8 tf = int8(3)
-  
-  .field public static literal int16 tf = int16(-3)
-  .field public static literal uint16 tf = uint16(3)
-  
-  .field public static literal int32 tf = int32(-3)
-  .field public static literal uint32 tf = uint32(3)
-
-  .field public static literal int64 tf = int64(12345)
-  .field public static literal uint64 tf = uint64(0xFFFFFFFFFFFFFFFF)
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-}
+// Test for field initialization, for the syntax 
+//   .. = int8 (value)
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+}
+.assembly 'test-field-init'
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
+  .ver 0:0:0:0
+}
+.module 'test-field-init.dll'
+
+.class private auto ansi beforefieldinit test
+       extends [mscorlib]System.Object
+{
+  .field public static literal int8 tf = int8(-3)
+  .field public static literal uint8 tf = int8(3)
+  
+  .field public static literal int16 tf = int16(-3)
+  .field public static literal uint16 tf = uint16(3)
+  
+  .field public static literal int32 tf = int32(-3)
+  .field public static literal uint32 tf = uint32(3)
+
+  .field public static literal int64 tf = int64(12345)
+  .field public static literal uint64 tf = uint64(0xFFFFFFFFFFFFFFFF)
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/test-perm_pass-2.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/test-perm_pass-2.il
@@ -1,42 +1,42 @@
-// Test for new(2.0) syntax for specifying permissionset
-// (Uses string instead of a bytearray or namevalue pairs)
-
-.assembly extern mscorlib
-{
-  .ver 2:0:0:0
-}
-.assembly 'test-perm_pass-2'
-{
-  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
-                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
-  .hash algorithm 0x00008004
-  .ver 0:0:0:0
-}
-.module 'test-perm_pass-2.dll'
-
-.class private auto ansi beforefieldinit test
-       extends [mscorlib]System.Object
-{
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-  .method public hidebysig static void  foo() cil managed
-  {
-    .permissionset linkcheck
-              "<PermissionSet class=\"System.Security.PermissionSe"
-    + "t\"\nversion=\"1\">\n<IPermission class=\"System.Security.Permissi"
-    + "ons.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=n"
-    + "eutral, PublicKeyToken=b77a5c561934e089\"\nversion=\"1\"\nUnrestr"
-    + "icted=\"true\"/>\n</PermissionSet>\n"
-    // Code size       1 (0x1)
-    .maxstack  8
-    IL_0000:  ret
-  }
-
-}
+// Test for new(2.0) syntax for specifying permissionset
+// (Uses string instead of a bytearray or namevalue pairs)
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+}
+.assembly 'test-perm_pass-2'
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module 'test-perm_pass-2.dll'
+
+.class private auto ansi beforefieldinit test
+       extends [mscorlib]System.Object
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+  .method public hidebysig static void  foo() cil managed
+  {
+    .permissionset linkcheck
+              "<PermissionSet class=\"System.Security.PermissionSe"
+    + "t\"\nversion=\"1\">\n<IPermission class=\"System.Security.Permissi"
+    + "ons.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=n"
+    + "eutral, PublicKeyToken=b77a5c561934e089\"\nversion=\"1\"\nUnrestr"
+    + "icted=\"true\"/>\n</PermissionSet>\n"
+    // Code size       1 (0x1)
+    .maxstack  8
+    IL_0000:  ret
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/ilasm/tests/test-perm_pass-3.il
+++ mono-4.6.2.7+dfsg/mcs/ilasm/tests/test-perm_pass-3.il
@@ -1,60 +1,60 @@
-.assembly extern mscorlib
-{
-  .ver 2:0:0:0
-}
-.assembly 'test-perm_pass-3'
-{
-  .permissionset reqopt
-            "<PermissionSet class=\"System.Security.PermissionSe"
-  + "t\"\n               version=\"1\">\n   <IPermission class=\"System"
-  + ".Security.Permissions.SecurityPermission, mscorlib, Version="
-  + "2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n "
-  + "               version=\"1\"\n                Flags=\"SkipVerifi"
-  + "cation\"/>\n</PermissionSet>\n"
-  
-  .permissionset assert = {
-			[mscorlib]System.Security.Permissions.IsolatedStorageFilePermissionAttribute = {
-				property enum [mscorlib]System.Security.Permissions.IsolatedStorageContainment 'UserQuota' = int32 (5)
-			}
-  }
-
-  .ver 0:0:0:0
-}
-
-.module 'test-perm_pass-3.dll'
-.imagebase 0x00400000
-.file alignment 0x00000200
-.stackreserve 0x00100000
-.subsystem 0x0003
-.corflags 0x00000001
-
-.class public abstract foo
-{
-  .permissionset assert = {
-	                [mscorlib]System.Security.Permissions.ReflectionPermissionAttribute = {
-				property bool 'MemberAccess' = bool(true)
-			}
-  }
-
-  .method public hidebysig newslot abstract virtual 
-          instance void  abc() cil managed
-  {
-    .permissionset demand =
-                {
-			[mscorlib]System.Security.Permissions.IsolatedStorageFilePermissionAttribute = {
-				property enum [mscorlib]System.Security.Permissions.IsolatedStorageContainment 'UserQuota' = int32 (50)
-			},
-
-	                [mscorlib]System.Security.Permissions.IsolatedStorageFilePermissionAttribute = {
-				property enum [mscorlib]System.Security.Permissions.IsolatedStorageContainment 'UsageAllowed' = int32 (123)
-			},
-
-	                [mscorlib]System.Security.Permissions.ReflectionPermissionAttribute = {
-				property char 'MemberAccess' = char (16)
-			}
-		}
-
-    
-  }
-
-}
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+}
+.assembly 'test-perm_pass-3'
+{
+  .permissionset reqopt
+            "<PermissionSet class=\"System.Security.PermissionSe"
+  + "t\"\n               version=\"1\">\n   <IPermission class=\"System"
+  + ".Security.Permissions.SecurityPermission, mscorlib, Version="
+  + "2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n "
+  + "               version=\"1\"\n                Flags=\"SkipVerifi"
+  + "cation\"/>\n</PermissionSet>\n"
+  
+  .permissionset assert = {
+			[mscorlib]System.Security.Permissions.IsolatedStorageFilePermissionAttribute = {
+				property enum [mscorlib]System.Security.Permissions.IsolatedStorageContainment 'UserQuota' = int32 (5)
+			}
+  }
+
+  .ver 0:0:0:0
+}
+
+.module 'test-perm_pass-3.dll'
+.imagebase 0x00400000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003
+.corflags 0x00000001
+
+.class public abstract foo
+{
+  .permissionset assert = {
+	                [mscorlib]System.Security.Permissions.ReflectionPermissionAttribute = {
+				property bool 'MemberAccess' = bool(true)
+			}
+  }
+
+  .method public hidebysig newslot abstract virtual 
+          instance void  abc() cil managed
+  {
+    .permissionset demand =
+                {
+			[mscorlib]System.Security.Permissions.IsolatedStorageFilePermissionAttribute = {
+				property enum [mscorlib]System.Security.Permissions.IsolatedStorageContainment 'UserQuota' = int32 (50)
+			},
+
+	                [mscorlib]System.Security.Permissions.IsolatedStorageFilePermissionAttribute = {
+				property enum [mscorlib]System.Security.Permissions.IsolatedStorageContainment 'UsageAllowed' = int32 (123)
+			},
+
+	                [mscorlib]System.Security.Permissions.ReflectionPermissionAttribute = {
+				property char 'MemberAccess' = char (16)
+			}
+		}
+
+    
+  }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/jay/jay.vcxproj
+++ mono-4.6.2.7+dfsg/mcs/jay/jay.vcxproj
@@ -1,108 +1,108 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5D485D32-3B9F-4287-AB24-C8DA5B89F537}</ProjectGuid>
-    <RootNamespace>jay</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="closure.c" />
-    <ClCompile Include="error.c" />
-    <ClCompile Include="lalr.c" />
-    <ClCompile Include="lr0.c" />
-    <ClCompile Include="main.c" />
-    <ClCompile Include="mkpar.c" />
-    <ClCompile Include="output.c" />
-    <ClCompile Include="reader.c" />
-    <ClCompile Include="symtab.c" />
-    <ClCompile Include="verbose.c" />
-    <ClCompile Include="warshall.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="defs.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5D485D32-3B9F-4287-AB24-C8DA5B89F537}</ProjectGuid>
+    <RootNamespace>jay</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>SKEL_DIRECTORY=".";%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy $(OutDir)jay.exe $(ProjectDir)jay.exe</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="closure.c" />
+    <ClCompile Include="error.c" />
+    <ClCompile Include="lalr.c" />
+    <ClCompile Include="lr0.c" />
+    <ClCompile Include="main.c" />
+    <ClCompile Include="mkpar.c" />
+    <ClCompile Include="output.c" />
+    <ClCompile Include="reader.c" />
+    <ClCompile Include="symtab.c" />
+    <ClCompile Include="verbose.c" />
+    <ClCompile Include="warshall.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="defs.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/mcs/mcs.csproj
+++ mono-4.6.2.7+dfsg/mcs/mcs/mcs.csproj
@@ -1,192 +1,192 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.30703</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}</ProjectGuid>
-    <OutputType>Exe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Mono.CSharp</RootNamespace>
-    <AssemblyName>mcs</AssemblyName>
-    <FileAlignment>512</FileAlignment>
-    <PlatformTarget>x86</PlatformTarget>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>True</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>False</Optimize>
-    <OutputPath>.</OutputPath>
-    <DefineConstants>TRACE;DEBUG;NET_4_5;STATIC;NO_SYMBOL_WRITER;NO_AUTHENTICODE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <Commandlineparameters>y.cs</Commandlineparameters>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>True</Optimize>
-    <DefineConstants>TRACE;NET_4_0;STATIC;NO_SYMBOL_WRITER;NO_AUTHENTICODE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <OutputPath>.</OutputPath>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug - AST|AnyCPU'">
-    <DebugSymbols>True</DebugSymbols>
-    <OutputPath>.</OutputPath>
-    <DefineConstants>TRACE;DEBUG;NET_4_0;STATIC;NO_SYMBOL_WRITER;NO_AUTHENTICODE;FULL_AST</DefineConstants>
-    <DebugType>full</DebugType>
-    <CodeAnalysisLogFile>mcs.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
-    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
-    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
-    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
-    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
-    <WarningLevel>4</WarningLevel>
-    <Optimize>False</Optimize>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\build\common\Consts.cs">
-    </Compile>
-    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs">
-      <Link>CryptoConvert.cs</Link>
-    </Compile>
-    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs">
-      <Link>MonoSymbolFile.cs</Link>
-    </Compile>
-    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs">
-      <Link>MonoSymbolTable.cs</Link>
-    </Compile>
-    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs">
-      <Link>SourceMethodBuilder.cs</Link>
-    </Compile>
-    <Compile Include="argument.cs" />
-    <Compile Include="assembly.cs" />
-    <Compile Include="AssemblyInfo.cs">
-    </Compile>
-    <Compile Include="anonymous.cs">
-    </Compile>
-    <Compile Include="assign.cs">
-    </Compile>
-    <Compile Include="async.cs" />
-    <Compile Include="attribute.cs">
-    </Compile>
-    <Compile Include="cfold.cs">
-    </Compile>
-    <Compile Include="class.cs">
-    </Compile>
-    <Compile Include="codegen.cs">
-    </Compile>
-    <Compile Include="complete.cs" />
-    <Compile Include="const.cs">
-    </Compile>
-    <Compile Include="constant.cs">
-    </Compile>
-    <Compile Include="convert.cs">
-    </Compile>
-    <Compile Include="context.cs" />
-    <Compile Include="dynamic.cs" />
-    <Compile Include="eval.cs" />
-    <Compile Include="ikvm.cs" />
-    <Compile Include="import.cs" />
-    <Compile Include="lambda.cs">
-    </Compile>
-    <Compile Include="cs-parser.cs" />
-    <Compile Include="cs-tokenizer.cs">
-    </Compile>
-    <Compile Include="decl.cs">
-    </Compile>
-    <Compile Include="delegate.cs">
-    </Compile>
-    <Compile Include="doc.cs">
-    </Compile>
-    <Compile Include="driver.cs">
-    </Compile>
-    <Compile Include="ecore.cs">
-    </Compile>
-    <Compile Include="enum.cs">
-    </Compile>
-    <Compile Include="expression.cs">
-    </Compile>
-    <Compile Include="flowanalysis.cs">
-    </Compile>
-    <Compile Include="generic.cs" />
-    <Compile Include="iterators.cs">
-    </Compile>
-    <Compile Include="literal.cs">
-    </Compile>
-    <Compile Include="location.cs">
-    </Compile>
-    <Compile Include="membercache.cs" />
-    <Compile Include="method.cs" />
-    <Compile Include="modifiers.cs">
-    </Compile>
-    <Compile Include="namespace.cs">
-    </Compile>
-    <Compile Include="nullable.cs" />
-    <Compile Include="..\tools\monop\outline.cs">
-      <Link>outline.cs</Link>
-    </Compile>
-    <Compile Include="parameter.cs" />
-    <Compile Include="pending.cs" />
-    <Compile Include="property.cs" />
-    <Compile Include="reflection.cs" />
-    <Compile Include="report.cs" />
-    <Compile Include="settings.cs">
-    </Compile>
-    <Compile Include="module.cs">
-    </Compile>
-    <Compile Include="statement.cs">
-    </Compile>
-    <Compile Include="support.cs">
-    </Compile>
-    <Compile Include="typemanager.cs">
-    </Compile>
-    <Compile Include="linq.cs" />
-    <Compile Include="field.cs" />
-    <Compile Include="typespec.cs" />
-    <Compile Include="visit.cs" />
-  </ItemGroup>
-  <ItemGroup Label="IKVM.Reflection">
-    <Compile Include="..\..\external\ikvm\reflect\*.cs">
-      <Visible>False</Visible>
-    </Compile>
-    <Compile Include="..\..\external\ikvm\reflect\Emit\*.cs">
-      <Visible>False</Visible>
-    </Compile>
-    <Compile Include="..\..\external\ikvm\reflect\Metadata\*.cs">
-      <Visible>False</Visible>
-    </Compile>
-    <Compile Include="..\..\external\ikvm\reflect\Reader\*.cs">
-      <Visible>False</Visible>
-    </Compile>
-    <Compile Include="..\..\external\ikvm\reflect\Writer\*.cs">
-      <Visible>False</Visible>
-    </Compile>
-    <Compile Include="..\..\external\ikvm\reflect\Impl\ITypeOwner.cs">
-      <Visible>False</Visible>
-    </Compile>
-    <Compile Include="..\..\external\ikvm\reflect\Impl\SymbolSupport.cs">
-      <Visible>False</Visible>
-    </Compile>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Mono.CSharp</RootNamespace>
+    <AssemblyName>mcs</AssemblyName>
+    <FileAlignment>512</FileAlignment>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>True</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>False</Optimize>
+    <OutputPath>.</OutputPath>
+    <DefineConstants>TRACE;DEBUG;NET_4_5;STATIC;NO_SYMBOL_WRITER;NO_AUTHENTICODE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <Commandlineparameters>y.cs</Commandlineparameters>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>True</Optimize>
+    <DefineConstants>TRACE;NET_4_0;STATIC;NO_SYMBOL_WRITER;NO_AUTHENTICODE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <OutputPath>.</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug - AST|AnyCPU'">
+    <DebugSymbols>True</DebugSymbols>
+    <OutputPath>.</OutputPath>
+    <DefineConstants>TRACE;DEBUG;NET_4_0;STATIC;NO_SYMBOL_WRITER;NO_AUTHENTICODE;FULL_AST</DefineConstants>
+    <DebugType>full</DebugType>
+    <CodeAnalysisLogFile>mcs.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+    <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
+    <WarningLevel>4</WarningLevel>
+    <Optimize>False</Optimize>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\build\common\Consts.cs">
+    </Compile>
+    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs">
+      <Link>CryptoConvert.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs">
+      <Link>MonoSymbolFile.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs">
+      <Link>MonoSymbolTable.cs</Link>
+    </Compile>
+    <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs">
+      <Link>SourceMethodBuilder.cs</Link>
+    </Compile>
+    <Compile Include="argument.cs" />
+    <Compile Include="assembly.cs" />
+    <Compile Include="AssemblyInfo.cs">
+    </Compile>
+    <Compile Include="anonymous.cs">
+    </Compile>
+    <Compile Include="assign.cs">
+    </Compile>
+    <Compile Include="async.cs" />
+    <Compile Include="attribute.cs">
+    </Compile>
+    <Compile Include="cfold.cs">
+    </Compile>
+    <Compile Include="class.cs">
+    </Compile>
+    <Compile Include="codegen.cs">
+    </Compile>
+    <Compile Include="complete.cs" />
+    <Compile Include="const.cs">
+    </Compile>
+    <Compile Include="constant.cs">
+    </Compile>
+    <Compile Include="convert.cs">
+    </Compile>
+    <Compile Include="context.cs" />
+    <Compile Include="dynamic.cs" />
+    <Compile Include="eval.cs" />
+    <Compile Include="ikvm.cs" />
+    <Compile Include="import.cs" />
+    <Compile Include="lambda.cs">
+    </Compile>
+    <Compile Include="cs-parser.cs" />
+    <Compile Include="cs-tokenizer.cs">
+    </Compile>
+    <Compile Include="decl.cs">
+    </Compile>
+    <Compile Include="delegate.cs">
+    </Compile>
+    <Compile Include="doc.cs">
+    </Compile>
+    <Compile Include="driver.cs">
+    </Compile>
+    <Compile Include="ecore.cs">
+    </Compile>
+    <Compile Include="enum.cs">
+    </Compile>
+    <Compile Include="expression.cs">
+    </Compile>
+    <Compile Include="flowanalysis.cs">
+    </Compile>
+    <Compile Include="generic.cs" />
+    <Compile Include="iterators.cs">
+    </Compile>
+    <Compile Include="literal.cs">
+    </Compile>
+    <Compile Include="location.cs">
+    </Compile>
+    <Compile Include="membercache.cs" />
+    <Compile Include="method.cs" />
+    <Compile Include="modifiers.cs">
+    </Compile>
+    <Compile Include="namespace.cs">
+    </Compile>
+    <Compile Include="nullable.cs" />
+    <Compile Include="..\tools\monop\outline.cs">
+      <Link>outline.cs</Link>
+    </Compile>
+    <Compile Include="parameter.cs" />
+    <Compile Include="pending.cs" />
+    <Compile Include="property.cs" />
+    <Compile Include="reflection.cs" />
+    <Compile Include="report.cs" />
+    <Compile Include="settings.cs">
+    </Compile>
+    <Compile Include="module.cs">
+    </Compile>
+    <Compile Include="statement.cs">
+    </Compile>
+    <Compile Include="support.cs">
+    </Compile>
+    <Compile Include="typemanager.cs">
+    </Compile>
+    <Compile Include="linq.cs" />
+    <Compile Include="field.cs" />
+    <Compile Include="typespec.cs" />
+    <Compile Include="visit.cs" />
+  </ItemGroup>
+  <ItemGroup Label="IKVM.Reflection">
+    <Compile Include="..\..\external\ikvm\reflect\*.cs">
+      <Visible>False</Visible>
+    </Compile>
+    <Compile Include="..\..\external\ikvm\reflect\Emit\*.cs">
+      <Visible>False</Visible>
+    </Compile>
+    <Compile Include="..\..\external\ikvm\reflect\Metadata\*.cs">
+      <Visible>False</Visible>
+    </Compile>
+    <Compile Include="..\..\external\ikvm\reflect\Reader\*.cs">
+      <Visible>False</Visible>
+    </Compile>
+    <Compile Include="..\..\external\ikvm\reflect\Writer\*.cs">
+      <Visible>False</Visible>
+    </Compile>
+    <Compile Include="..\..\external\ikvm\reflect\Impl\ITypeOwner.cs">
+      <Visible>False</Visible>
+    </Compile>
+    <Compile Include="..\..\external\ikvm\reflect\Impl\SymbolSupport.cs">
+      <Visible>False</Visible>
+    </Compile>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
--- mono-4.6.2.7+dfsg.orig/mcs/mcs/mcs.sln
+++ mono-4.6.2.7+dfsg/mcs/mcs/mcs.sln
@@ -1,23 +1,23 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mcs", "mcs.csproj", "{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug - AST|Any CPU = Debug - AST|Any CPU
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug - AST|Any CPU.ActiveCfg = Debug - AST|Any CPU
-		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug - AST|Any CPU.Build.0 = Debug - AST|Any CPU
-		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+﻿
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mcs", "mcs.csproj", "{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug - AST|Any CPU = Debug - AST|Any CPU
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug - AST|Any CPU.ActiveCfg = Debug - AST|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug - AST|Any CPU.Build.0 = Debug - AST|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D4A01C5B-A1B5-48F5-BB5B-D2E1BD236E56}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/AggregatingTestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/AggregatingTestRunner.cs
@@ -1,293 +1,293 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-//#define RUN_IN_PARALLEL
-
-namespace NUnit.Util
-{
-	using System;
-	using System.Collections;
-	using System.IO;
-	using NUnit.Core;
-
-	/// <summary>
-	/// AggregatingTestRunner allows running multiple TestRunners
-	/// and combining the results.
-	/// </summary>
-	public abstract class AggregatingTestRunner : MarshalByRefObject, TestRunner, EventListener
-	{
-		static int AggregateTestID = 1000;
-
-		#region Instance Variables
-
-		/// <summary>
-		/// Our runner ID
-		/// </summary>
-		protected int runnerID;
-
-		/// <summary>
-		/// The downstream TestRunners
-		/// </summary>
-		protected ArrayList runners;
-
-		/// <summary>
-		/// The loaded test suite
-		/// </summary>
-		protected TestNode aggregateTest;
-
-		/// <summary>
-		/// The result of the last run
-		/// </summary>
-		private TestResult testResult;
-
-		/// <summary>
-		/// The event listener for the currently running test
-		/// </summary>
-		protected EventListener listener;
-
-		protected string projectName;
-
-		protected TestName testName;
-
-		#endregion
-
-		#region Constructors
-		public AggregatingTestRunner() : this( 0 ) { }
-		public AggregatingTestRunner( int runnerID )
-		{
-			this.runnerID = runnerID;
-			this.testName = new TestName();
-			testName.TestID = new TestID( AggregateTestID );
-			testName.RunnerID = this.runnerID;
-			testName.FullName = testName.Name = "Not Loaded";
-		}
-		#endregion
-
-		#region Properties
-
-		public virtual int ID
-		{
-			get { return runnerID; }
-		}
-
-		public virtual bool Running
-		{
-			get 
-			{ 
-				foreach( TestRunner runner in runners )
-					if ( runner.Running )
-						return true;
-			
-				return false;
-			}
-		}
-
-		public virtual IList AssemblyInfo
-		{
-			get
-			{
-				ArrayList info = new ArrayList();
-				foreach( TestRunner runner in runners )
-					info.AddRange( runner.AssemblyInfo );
-				return info;
-			}
-		}
-
-		public virtual ITest Test
-		{
-			get
-			{
-				if ( aggregateTest == null && runners != null )
-				{
-					// Count non-null tests, in case we specified a fixture
-					int count = 0;
-					foreach( TestRunner runner in runners )
-						if ( runner.Test != null )
-							++count;  
-
-					// Copy non-null tests to an array
-					int index = 0;
-					ITest[] tests = new ITest[count];
-					foreach( TestRunner runner in runners )
-						if ( runner.Test != null )
-							tests[index++] = runner.Test;
-
-					// Return master node containing all the tests
-					aggregateTest = new TestNode( testName, tests );
-				}
-
-				return aggregateTest;
-			}
-		}
-
-		public virtual TestResult TestResult
-		{
-			get { return testResult; }
-		}
-		#endregion
-
-		#region Load and Unload Methods       
-		public abstract bool Load(TestPackage package);
-
-		public virtual void Unload()
-		{
-			foreach( TestRunner runner in runners )
-				runner.Unload();
-			aggregateTest = null;
-		}
-		#endregion
-
-		#region CountTestCases
-		public virtual int CountTestCases( ITestFilter filter )
-		{
-			int count = 0;
-			foreach( TestRunner runner in runners )
-				count += runner.CountTestCases( filter );
-			return count;
-		}
-		#endregion
-
-		#region Methods for Running Tests
-		public virtual TestResult Run( EventListener listener )
-		{
-			return Run( listener, TestFilter.Empty );
-		}
-
-		public virtual TestResult Run(EventListener listener, ITestFilter filter )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-
-			ITest[] tests = new ITest[runners.Count];
-			for( int index = 0; index < runners.Count; index++ )
-				tests[index] = ((TestRunner)runners[index]).Test;
-
-			this.listener.RunStarted( this.Test.TestName.Name, this.CountTestCases( filter ) );
-
-			this.listener.SuiteStarted( this.Test.TestName );
-			long startTime = DateTime.Now.Ticks;
-
-			TestSuiteResult result = new TestSuiteResult( new TestInfo( testName, tests ), projectName );
-			result.RunState = RunState.Executed;
-			foreach( TestRunner runner in runners )
-				if ( filter.Pass( runner.Test ) )
-					result.AddResult( runner.Run( this, filter ) );
-			
-			long stopTime = DateTime.Now.Ticks;
-			double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;
-			result.Time = time;
-
-			this.listener.SuiteFinished( result );
-
-			this.listener.RunFinished( result );
-
-			this.testResult = result;
-
-			return result;
-		}
-
-		public virtual void BeginRun( EventListener listener )
-		{
-			BeginRun( listener, TestFilter.Empty );
-		}
-
-		public virtual void BeginRun( EventListener listener, ITestFilter filter )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-
-#if RUN_IN_PARALLEL
-			this.listener.RunStarted( this.Test.Name, this.CountTestCases( filter ) );
-
-			foreach( TestRunner runner in runners )
-				if ( runner.Test != null )
-					runner.BeginRun( this, filter );
-
-			//this.listener.RunFinished( this.Results );
-#else
-			ThreadedTestRunner threadedRunner = new ThreadedTestRunner( this );
-			threadedRunner.BeginRun( listener, filter );
-#endif
-		}
-
-		public virtual TestResult EndRun()
-		{
-			TestSuiteResult suiteResult = new TestSuiteResult( aggregateTest, Test.TestName.FullName );
-			foreach( TestRunner runner in runners )
-				suiteResult.Results.Add( runner.EndRun() );
-
-			return suiteResult;
-		}
-
-		public virtual void CancelRun()
-		{
-			foreach( TestRunner runner in runners )
-				runner.CancelRun();
-		}
-
-		public virtual void Wait()
-		{
-			foreach( TestRunner runner in runners )
-				runner.Wait();
-		}
-		#endregion
-
-		#region EventListener Members
-		public void TestStarted(TestName testName)
-		{
-			this.listener.TestStarted( testName );
-		}
-
-		public void RunStarted(string name, int testCount)
-		{
-			// TODO: We may want to count how many runs are started
-			// Ignore - we provide our own
-		}
-
-		public void RunFinished(Exception exception)
-		{
-			// Ignore - we provide our own
-		}
-
-		void NUnit.Core.EventListener.RunFinished(TestResult result)
-		{
-			// TODO: Issue combined RunFinished when all runs are done
-		}
-
-		public void SuiteFinished(TestSuiteResult result)
-		{
-			this.listener.SuiteFinished( result );
-		}
-
-		public void TestFinished(TestCaseResult result)
-		{
-			this.listener.TestFinished( result );
-		}
-
-		public void UnhandledException(Exception exception)
-		{
-			this.listener.UnhandledException( exception );
-		}
-
-		public void TestOutput(TestOutput testOutput)
-		{
-			this.listener.TestOutput( testOutput );
-		}
-
-		public void SuiteStarted(TestName suiteName)
-		{
-			this.listener.SuiteStarted( suiteName );
-		}
-		#endregion
-
-		#region InitializeLifetimeService Override
-		public override object InitializeLifetimeService()
-		{
-			return null;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+//#define RUN_IN_PARALLEL
+
+namespace NUnit.Util
+{
+	using System;
+	using System.Collections;
+	using System.IO;
+	using NUnit.Core;
+
+	/// <summary>
+	/// AggregatingTestRunner allows running multiple TestRunners
+	/// and combining the results.
+	/// </summary>
+	public abstract class AggregatingTestRunner : MarshalByRefObject, TestRunner, EventListener
+	{
+		static int AggregateTestID = 1000;
+
+		#region Instance Variables
+
+		/// <summary>
+		/// Our runner ID
+		/// </summary>
+		protected int runnerID;
+
+		/// <summary>
+		/// The downstream TestRunners
+		/// </summary>
+		protected ArrayList runners;
+
+		/// <summary>
+		/// The loaded test suite
+		/// </summary>
+		protected TestNode aggregateTest;
+
+		/// <summary>
+		/// The result of the last run
+		/// </summary>
+		private TestResult testResult;
+
+		/// <summary>
+		/// The event listener for the currently running test
+		/// </summary>
+		protected EventListener listener;
+
+		protected string projectName;
+
+		protected TestName testName;
+
+		#endregion
+
+		#region Constructors
+		public AggregatingTestRunner() : this( 0 ) { }
+		public AggregatingTestRunner( int runnerID )
+		{
+			this.runnerID = runnerID;
+			this.testName = new TestName();
+			testName.TestID = new TestID( AggregateTestID );
+			testName.RunnerID = this.runnerID;
+			testName.FullName = testName.Name = "Not Loaded";
+		}
+		#endregion
+
+		#region Properties
+
+		public virtual int ID
+		{
+			get { return runnerID; }
+		}
+
+		public virtual bool Running
+		{
+			get 
+			{ 
+				foreach( TestRunner runner in runners )
+					if ( runner.Running )
+						return true;
+			
+				return false;
+			}
+		}
+
+		public virtual IList AssemblyInfo
+		{
+			get
+			{
+				ArrayList info = new ArrayList();
+				foreach( TestRunner runner in runners )
+					info.AddRange( runner.AssemblyInfo );
+				return info;
+			}
+		}
+
+		public virtual ITest Test
+		{
+			get
+			{
+				if ( aggregateTest == null && runners != null )
+				{
+					// Count non-null tests, in case we specified a fixture
+					int count = 0;
+					foreach( TestRunner runner in runners )
+						if ( runner.Test != null )
+							++count;  
+
+					// Copy non-null tests to an array
+					int index = 0;
+					ITest[] tests = new ITest[count];
+					foreach( TestRunner runner in runners )
+						if ( runner.Test != null )
+							tests[index++] = runner.Test;
+
+					// Return master node containing all the tests
+					aggregateTest = new TestNode( testName, tests );
+				}
+
+				return aggregateTest;
+			}
+		}
+
+		public virtual TestResult TestResult
+		{
+			get { return testResult; }
+		}
+		#endregion
+
+		#region Load and Unload Methods       
+		public abstract bool Load(TestPackage package);
+
+		public virtual void Unload()
+		{
+			foreach( TestRunner runner in runners )
+				runner.Unload();
+			aggregateTest = null;
+		}
+		#endregion
+
+		#region CountTestCases
+		public virtual int CountTestCases( ITestFilter filter )
+		{
+			int count = 0;
+			foreach( TestRunner runner in runners )
+				count += runner.CountTestCases( filter );
+			return count;
+		}
+		#endregion
+
+		#region Methods for Running Tests
+		public virtual TestResult Run( EventListener listener )
+		{
+			return Run( listener, TestFilter.Empty );
+		}
+
+		public virtual TestResult Run(EventListener listener, ITestFilter filter )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+
+			ITest[] tests = new ITest[runners.Count];
+			for( int index = 0; index < runners.Count; index++ )
+				tests[index] = ((TestRunner)runners[index]).Test;
+
+			this.listener.RunStarted( this.Test.TestName.Name, this.CountTestCases( filter ) );
+
+			this.listener.SuiteStarted( this.Test.TestName );
+			long startTime = DateTime.Now.Ticks;
+
+			TestSuiteResult result = new TestSuiteResult( new TestInfo( testName, tests ), projectName );
+			result.RunState = RunState.Executed;
+			foreach( TestRunner runner in runners )
+				if ( filter.Pass( runner.Test ) )
+					result.AddResult( runner.Run( this, filter ) );
+			
+			long stopTime = DateTime.Now.Ticks;
+			double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;
+			result.Time = time;
+
+			this.listener.SuiteFinished( result );
+
+			this.listener.RunFinished( result );
+
+			this.testResult = result;
+
+			return result;
+		}
+
+		public virtual void BeginRun( EventListener listener )
+		{
+			BeginRun( listener, TestFilter.Empty );
+		}
+
+		public virtual void BeginRun( EventListener listener, ITestFilter filter )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+
+#if RUN_IN_PARALLEL
+			this.listener.RunStarted( this.Test.Name, this.CountTestCases( filter ) );
+
+			foreach( TestRunner runner in runners )
+				if ( runner.Test != null )
+					runner.BeginRun( this, filter );
+
+			//this.listener.RunFinished( this.Results );
+#else
+			ThreadedTestRunner threadedRunner = new ThreadedTestRunner( this );
+			threadedRunner.BeginRun( listener, filter );
+#endif
+		}
+
+		public virtual TestResult EndRun()
+		{
+			TestSuiteResult suiteResult = new TestSuiteResult( aggregateTest, Test.TestName.FullName );
+			foreach( TestRunner runner in runners )
+				suiteResult.Results.Add( runner.EndRun() );
+
+			return suiteResult;
+		}
+
+		public virtual void CancelRun()
+		{
+			foreach( TestRunner runner in runners )
+				runner.CancelRun();
+		}
+
+		public virtual void Wait()
+		{
+			foreach( TestRunner runner in runners )
+				runner.Wait();
+		}
+		#endregion
+
+		#region EventListener Members
+		public void TestStarted(TestName testName)
+		{
+			this.listener.TestStarted( testName );
+		}
+
+		public void RunStarted(string name, int testCount)
+		{
+			// TODO: We may want to count how many runs are started
+			// Ignore - we provide our own
+		}
+
+		public void RunFinished(Exception exception)
+		{
+			// Ignore - we provide our own
+		}
+
+		void NUnit.Core.EventListener.RunFinished(TestResult result)
+		{
+			// TODO: Issue combined RunFinished when all runs are done
+		}
+
+		public void SuiteFinished(TestSuiteResult result)
+		{
+			this.listener.SuiteFinished( result );
+		}
+
+		public void TestFinished(TestCaseResult result)
+		{
+			this.listener.TestFinished( result );
+		}
+
+		public void UnhandledException(Exception exception)
+		{
+			this.listener.UnhandledException( exception );
+		}
+
+		public void TestOutput(TestOutput testOutput)
+		{
+			this.listener.TestOutput( testOutput );
+		}
+
+		public void SuiteStarted(TestName suiteName)
+		{
+			this.listener.SuiteStarted( suiteName );
+		}
+		#endregion
+
+		#region InitializeLifetimeService Override
+		public override object InitializeLifetimeService()
+		{
+			return null;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/AssemblyInfo.cs
@@ -1,11 +1,11 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.Reflection;
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.Reflection;
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/AssemblyItem.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/AssemblyItem.cs
@@ -1,36 +1,36 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Threading;
-using System.Xml.Serialization;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Holds an assembly path and other information needed to
-	/// load an assembly. Currently there is no other info.
-	/// Used in serialization of NUnit projects.
-	/// </summary>
-	[Serializable]
-	public struct AssemblyItem
-	{
-		[XmlAttribute]
-		public string path;
-
-		public ApartmentState apartment;
-
-		public AssemblyItem( string path ) : this( path, ApartmentState.Unknown ) { }
-
-		public AssemblyItem( string path, ApartmentState apartment )
-		{
-			if ( !System.IO.Path.IsPathRooted( path ) )
-				throw new ArgumentException( "Assembly path must be absolute", "path" );
-			this.path = path;
-			this.apartment = apartment;
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Threading;
+using System.Xml.Serialization;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Holds an assembly path and other information needed to
+	/// load an assembly. Currently there is no other info.
+	/// Used in serialization of NUnit projects.
+	/// </summary>
+	[Serializable]
+	public struct AssemblyItem
+	{
+		[XmlAttribute]
+		public string path;
+
+		public ApartmentState apartment;
+
+		public AssemblyItem( string path ) : this( path, ApartmentState.Unknown ) { }
+
+		public AssemblyItem( string path, ApartmentState apartment )
+		{
+			if ( !System.IO.Path.IsPathRooted( path ) )
+				throw new ArgumentException( "Assembly path must be absolute", "path" );
+			this.path = path;
+			this.apartment = apartment;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/AssemblyList.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/AssemblyList.cs
@@ -1,79 +1,79 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Collections;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Represents a list of assemblies. It stores paths 
-	/// that are added and fires an event whenevever it
-	/// changes. All paths must be added as absolute paths.
-	/// </summary>
-	public class AssemblyList : CollectionBase
-	{
-		#region Properties and Events
-		public string this[int index]
-		{
-			get { return (string)List[index]; }
-			set 
-			{ 
-				if ( !Path.IsPathRooted( value ) )
-					throw new ArgumentException( "Assembly path must be absolute" );
-				List[index] = value; 
-			}
-		}
-
-		public event EventHandler Changed;
-		#endregion
-
-		#region Methods
-		public string[] ToArray()
-		{
-			return (string[])InnerList.ToArray( typeof( string ) );
-		}
-
-		public void Add( string assemblyPath )
-		{
-			if ( !Path.IsPathRooted( assemblyPath ) )
-				throw new ArgumentException( "Assembly path must be absolute" );
-			List.Add( assemblyPath );
-		}
-
-		public void Remove( string assemblyPath )
-		{
-			for( int index = 0; index < this.Count; index++ )
-			{
-				if ( this[index] == assemblyPath )
-					RemoveAt( index );
-			}
-		}
-
-		protected override void OnRemoveComplete(int index, object value)
-		{
-			FireChangedEvent();
-		}
-
-		protected override void OnInsertComplete(int index, object value)
-		{
-			FireChangedEvent();
-		}
-
-		protected override void OnSetComplete(int index, object oldValue, object newValue)
-		{
-			FireChangedEvent();
-		}
-
-		private void FireChangedEvent()
-		{
-			if ( Changed != null )
-				Changed( this, EventArgs.Empty );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Represents a list of assemblies. It stores paths 
+	/// that are added and fires an event whenevever it
+	/// changes. All paths must be added as absolute paths.
+	/// </summary>
+	public class AssemblyList : CollectionBase
+	{
+		#region Properties and Events
+		public string this[int index]
+		{
+			get { return (string)List[index]; }
+			set 
+			{ 
+				if ( !Path.IsPathRooted( value ) )
+					throw new ArgumentException( "Assembly path must be absolute" );
+				List[index] = value; 
+			}
+		}
+
+		public event EventHandler Changed;
+		#endregion
+
+		#region Methods
+		public string[] ToArray()
+		{
+			return (string[])InnerList.ToArray( typeof( string ) );
+		}
+
+		public void Add( string assemblyPath )
+		{
+			if ( !Path.IsPathRooted( assemblyPath ) )
+				throw new ArgumentException( "Assembly path must be absolute" );
+			List.Add( assemblyPath );
+		}
+
+		public void Remove( string assemblyPath )
+		{
+			for( int index = 0; index < this.Count; index++ )
+			{
+				if ( this[index] == assemblyPath )
+					RemoveAt( index );
+			}
+		}
+
+		protected override void OnRemoveComplete(int index, object value)
+		{
+			FireChangedEvent();
+		}
+
+		protected override void OnInsertComplete(int index, object value)
+		{
+			FireChangedEvent();
+		}
+
+		protected override void OnSetComplete(int index, object oldValue, object newValue)
+		{
+			FireChangedEvent();
+		}
+
+		private void FireChangedEvent()
+		{
+			if ( Changed != null )
+				Changed( this, EventArgs.Empty );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/AssemblyWatcher.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/AssemblyWatcher.cs
@@ -1,114 +1,114 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Text;
-using System.Timers;
-using System.Collections;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// AssemblyWatcher keeps track of one or more assemblies to 
-	/// see if they have changed. It incorporates a delayed notification
-	/// and uses a standard event to notify any interested parties
-	/// about the change. The path to the assembly is provided as
-	/// an argument to the event handler so that one routine can
-	/// be used to handle events from multiple watchers.
-	/// </summary>
-	public class AssemblyWatcher
-	{
-		FileSystemWatcher[] fileWatcher;
-		FileInfo[] fileInfo;
-
-		protected System.Timers.Timer timer;
-		protected string changedAssemblyPath; 
-
-		public delegate void AssemblyChangedHandler(String fullPath);
-		public event AssemblyChangedHandler AssemblyChangedEvent;
-
-		public AssemblyWatcher( int delay, string assemblyFileName )
-			: this( delay, new string[]{ assemblyFileName } ) { }
-
-		public AssemblyWatcher( int delay, IList assemblies )
-		{
-			fileInfo = new FileInfo[assemblies.Count];
-			fileWatcher = new FileSystemWatcher[assemblies.Count];
-
-			for( int i = 0; i < assemblies.Count; i++ )
-			{
-				fileInfo[i] = new FileInfo( (string)assemblies[i] );
-
-				fileWatcher[i] = new FileSystemWatcher();
-				fileWatcher[i].Path = fileInfo[i].DirectoryName;
-				fileWatcher[i].Filter = fileInfo[i].Name;
-				fileWatcher[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite;
-				fileWatcher[i].Changed+=new FileSystemEventHandler(OnChanged);
-				fileWatcher[i].EnableRaisingEvents = false;
-			}
-
-			timer = new System.Timers.Timer( delay );
-			timer.AutoReset=false;
-			timer.Enabled=false;
-			timer.Elapsed+=new ElapsedEventHandler(OnTimer);
-		}
-
-		public FileInfo GetFileInfo( int index )
-		{
-			return fileInfo[index];
-		}
-
-		public void Start()
-		{
-			EnableWatchers( true );
-		}
-
-		public void Stop()
-		{
-			EnableWatchers( false );
-		}
-
-		private void EnableWatchers( bool enable )
-		{
-			foreach( FileSystemWatcher watcher in fileWatcher )
-				watcher.EnableRaisingEvents = enable;
-		}
-
-		protected void OnTimer(Object source, ElapsedEventArgs e)
-		{
-			lock(this)
-			{
-				PublishEvent();
-				timer.Enabled=false;
-			}
-		}
-		
-		protected void OnChanged(object source, FileSystemEventArgs e)
-		{
-			changedAssemblyPath = e.FullPath;
-			if ( timer != null )
-			{
-				lock(this)
-				{
-					if(!timer.Enabled)
-						timer.Enabled=true;
-					timer.Start();
-				}
-			}
-			else
-			{
-				PublishEvent();
-			}
-		}
-	
-		protected void PublishEvent()
-		{
-			if ( AssemblyChangedEvent != null )
-				AssemblyChangedEvent( changedAssemblyPath );
-		}
-	}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Text;
+using System.Timers;
+using System.Collections;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// AssemblyWatcher keeps track of one or more assemblies to 
+	/// see if they have changed. It incorporates a delayed notification
+	/// and uses a standard event to notify any interested parties
+	/// about the change. The path to the assembly is provided as
+	/// an argument to the event handler so that one routine can
+	/// be used to handle events from multiple watchers.
+	/// </summary>
+	public class AssemblyWatcher
+	{
+		FileSystemWatcher[] fileWatcher;
+		FileInfo[] fileInfo;
+
+		protected System.Timers.Timer timer;
+		protected string changedAssemblyPath; 
+
+		public delegate void AssemblyChangedHandler(String fullPath);
+		public event AssemblyChangedHandler AssemblyChangedEvent;
+
+		public AssemblyWatcher( int delay, string assemblyFileName )
+			: this( delay, new string[]{ assemblyFileName } ) { }
+
+		public AssemblyWatcher( int delay, IList assemblies )
+		{
+			fileInfo = new FileInfo[assemblies.Count];
+			fileWatcher = new FileSystemWatcher[assemblies.Count];
+
+			for( int i = 0; i < assemblies.Count; i++ )
+			{
+				fileInfo[i] = new FileInfo( (string)assemblies[i] );
+
+				fileWatcher[i] = new FileSystemWatcher();
+				fileWatcher[i].Path = fileInfo[i].DirectoryName;
+				fileWatcher[i].Filter = fileInfo[i].Name;
+				fileWatcher[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite;
+				fileWatcher[i].Changed+=new FileSystemEventHandler(OnChanged);
+				fileWatcher[i].EnableRaisingEvents = false;
+			}
+
+			timer = new System.Timers.Timer( delay );
+			timer.AutoReset=false;
+			timer.Enabled=false;
+			timer.Elapsed+=new ElapsedEventHandler(OnTimer);
+		}
+
+		public FileInfo GetFileInfo( int index )
+		{
+			return fileInfo[index];
+		}
+
+		public void Start()
+		{
+			EnableWatchers( true );
+		}
+
+		public void Stop()
+		{
+			EnableWatchers( false );
+		}
+
+		private void EnableWatchers( bool enable )
+		{
+			foreach( FileSystemWatcher watcher in fileWatcher )
+				watcher.EnableRaisingEvents = enable;
+		}
+
+		protected void OnTimer(Object source, ElapsedEventArgs e)
+		{
+			lock(this)
+			{
+				PublishEvent();
+				timer.Enabled=false;
+			}
+		}
+		
+		protected void OnChanged(object source, FileSystemEventArgs e)
+		{
+			changedAssemblyPath = e.FullPath;
+			if ( timer != null )
+			{
+				lock(this)
+				{
+					if(!timer.Enabled)
+						timer.Enabled=true;
+					timer.Start();
+				}
+			}
+			else
+			{
+				PublishEvent();
+			}
+		}
+	
+		protected void PublishEvent()
+		{
+			if ( AssemblyChangedEvent != null )
+				AssemblyChangedEvent( changedAssemblyPath );
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/CategoryExpression.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/CategoryExpression.cs
@@ -1,152 +1,152 @@
-using System;
-using System.Collections;
-using NUnit.Core;
-using NUnit.Core.Filters;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// CategoryExpression parses strings representing boolean
-	/// combinations of categories according to the following
-	/// grammar:
-	///   CategoryName ::= string not containing any of ',', '&', '+', '-'
-	///   CategoryFilter ::= CategoryName | CategoryFilter ',' CategoryName
-	///   CategoryPrimitive ::= CategoryFilter | '-' CategoryPrimitive
-	///   CategoryTerm ::= CategoryPrimitive | CategoryTerm '&' CategoryPrimitive
-	/// </summary>
-	public class CategoryExpression
-	{
-		static readonly char[] ops = new char[] { ',', ';', '-', '|', '+', '(', ')' };
-
-		private string text;
-		private int next;
-		private string token;
-
-		private TestFilter filter;
-
-		public CategoryExpression(string text) 
-		{
-			this.text =  text;
-			this.next = 0;
-		}
-
-		public TestFilter Filter
-		{
-			get
-			{
-				if( filter == null )
-				{
-					filter = GetToken() == null
-						? TestFilter.Empty
-						: GetExpression();
-				}
-
-				return filter;
-			}
-		}
-
-		private TestFilter GetExpression()
-		{
-			TestFilter term = GetTerm();
-			if ( token != "|" )
-				return term;
-
-			OrFilter filter = new OrFilter( term );
-			
-			while ( token == "|" )
-			{
-				GetToken();
-				filter.Add( GetTerm() );
-			}
-
-			return filter;
-		}
-
-		private TestFilter GetTerm()
-		{
-			TestFilter prim = GetPrimitive();
-			if ( token != "+" && token != "-" )
-				return prim;
-
-			AndFilter filter = new AndFilter( prim );
-			
-			while ( token == "+"|| token == "-" )
-			{
-				string tok = token;
-				GetToken();
-				prim = GetPrimitive();
-				filter.Add( tok == "-" ? new NotFilter( prim ) : prim );
-			}
-
-			return filter;
-		}
-
-		private TestFilter GetPrimitive()
-		{
-			if( token == "-" )
-			{
-				GetToken();
-				return new NotFilter( GetPrimitive() );
-			}
-			else if( token == "(" )
-			{
-				GetToken();
-				TestFilter expr = GetExpression();
-				GetToken(); // Skip ')'
-				return expr;
-			}
-
-			return GetCategoryFilter();
-		}
-
-		private CategoryFilter GetCategoryFilter()
-		{
-			CategoryFilter filter = new CategoryFilter( token );
-
-			while( GetToken() == "," || token == ";" )
-				filter.AddCategory( GetToken() );
-
-			return filter;
-		}
-
-		public string GetToken()
-		{
-			SkipWhiteSpace();
-
-			if ( EndOfText() ) 
-				token = null;
-			else if ( NextIsOperator() )
-				token = text.Substring(next++, 1);
-			else
-			{
-				int index2 = text.IndexOfAny( ops, next );
-				if ( index2 < 0 ) index2 = text.Length;
-
-				token = text.Substring( next, index2 - next ).TrimEnd();
-				next = index2;
-			}
-
-			return token;
-		}
-
-		private void SkipWhiteSpace()
-		{
-			while( next < text.Length && Char.IsWhiteSpace( text[next] ) )
-				++next;
-		}
-
-		private bool EndOfText()
-		{
-			return next >= text.Length;
-		}
-
-		private bool NextIsOperator()
-		{
-			foreach( char op in ops )
-				if( op == text[next] )
-					return true;
-
-			return false;
-		}
-	}
-}
+using System;
+using System.Collections;
+using NUnit.Core;
+using NUnit.Core.Filters;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// CategoryExpression parses strings representing boolean
+	/// combinations of categories according to the following
+	/// grammar:
+	///   CategoryName ::= string not containing any of ',', '&', '+', '-'
+	///   CategoryFilter ::= CategoryName | CategoryFilter ',' CategoryName
+	///   CategoryPrimitive ::= CategoryFilter | '-' CategoryPrimitive
+	///   CategoryTerm ::= CategoryPrimitive | CategoryTerm '&' CategoryPrimitive
+	/// </summary>
+	public class CategoryExpression
+	{
+		static readonly char[] ops = new char[] { ',', ';', '-', '|', '+', '(', ')' };
+
+		private string text;
+		private int next;
+		private string token;
+
+		private TestFilter filter;
+
+		public CategoryExpression(string text) 
+		{
+			this.text =  text;
+			this.next = 0;
+		}
+
+		public TestFilter Filter
+		{
+			get
+			{
+				if( filter == null )
+				{
+					filter = GetToken() == null
+						? TestFilter.Empty
+						: GetExpression();
+				}
+
+				return filter;
+			}
+		}
+
+		private TestFilter GetExpression()
+		{
+			TestFilter term = GetTerm();
+			if ( token != "|" )
+				return term;
+
+			OrFilter filter = new OrFilter( term );
+			
+			while ( token == "|" )
+			{
+				GetToken();
+				filter.Add( GetTerm() );
+			}
+
+			return filter;
+		}
+
+		private TestFilter GetTerm()
+		{
+			TestFilter prim = GetPrimitive();
+			if ( token != "+" && token != "-" )
+				return prim;
+
+			AndFilter filter = new AndFilter( prim );
+			
+			while ( token == "+"|| token == "-" )
+			{
+				string tok = token;
+				GetToken();
+				prim = GetPrimitive();
+				filter.Add( tok == "-" ? new NotFilter( prim ) : prim );
+			}
+
+			return filter;
+		}
+
+		private TestFilter GetPrimitive()
+		{
+			if( token == "-" )
+			{
+				GetToken();
+				return new NotFilter( GetPrimitive() );
+			}
+			else if( token == "(" )
+			{
+				GetToken();
+				TestFilter expr = GetExpression();
+				GetToken(); // Skip ')'
+				return expr;
+			}
+
+			return GetCategoryFilter();
+		}
+
+		private CategoryFilter GetCategoryFilter()
+		{
+			CategoryFilter filter = new CategoryFilter( token );
+
+			while( GetToken() == "," || token == ";" )
+				filter.AddCategory( GetToken() );
+
+			return filter;
+		}
+
+		public string GetToken()
+		{
+			SkipWhiteSpace();
+
+			if ( EndOfText() ) 
+				token = null;
+			else if ( NextIsOperator() )
+				token = text.Substring(next++, 1);
+			else
+			{
+				int index2 = text.IndexOfAny( ops, next );
+				if ( index2 < 0 ) index2 = text.Length;
+
+				token = text.Substring( next, index2 - next ).TrimEnd();
+				next = index2;
+			}
+
+			return token;
+		}
+
+		private void SkipWhiteSpace()
+		{
+			while( next < text.Length && Char.IsWhiteSpace( text[next] ) )
+				++next;
+		}
+
+		private bool EndOfText()
+		{
+			return next >= text.Length;
+		}
+
+		private bool NextIsOperator()
+		{
+			foreach( char op in ops )
+				if( op == text[next] )
+					return true;
+
+			return false;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/CategoryManager.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/CategoryManager.cs
@@ -1,54 +1,54 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	public class CategoryManager
-	{
-		private Hashtable categories = new Hashtable();
-
-		public void Add(string name) 
-		{
-			categories[name] = name;
-		}
-
-		public void Add(IList list) 
-		{
-			foreach(string name in list) 
-			{
-				Add(name);
-			}
-		}
-
-		public void AddCategories( ITest test )
-		{
-			if ( test.Categories != null )
-				Add( test.Categories );
-		}
-
-		public void AddAllCategories( ITest test )
-		{
-			AddCategories( test );
-			if ( test.IsSuite )
-				foreach( ITest child in test.Tests )
-					AddAllCategories( child );
-		}
-
-		public ICollection Categories 
-		{
-			get { return categories.Values; }
-		}
-
-		public void Clear() 
-		{
-			categories = new Hashtable();
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	public class CategoryManager
+	{
+		private Hashtable categories = new Hashtable();
+
+		public void Add(string name) 
+		{
+			categories[name] = name;
+		}
+
+		public void Add(IList list) 
+		{
+			foreach(string name in list) 
+			{
+				Add(name);
+			}
+		}
+
+		public void AddCategories( ITest test )
+		{
+			if ( test.Categories != null )
+				Add( test.Categories );
+		}
+
+		public void AddAllCategories( ITest test )
+		{
+			AddCategories( test );
+			if ( test.IsSuite )
+				foreach( ITest child in test.Tests )
+					AddAllCategories( child );
+		}
+
+		public ICollection Categories 
+		{
+			get { return categories.Values; }
+		}
+
+		public void Clear() 
+		{
+			categories = new Hashtable();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/CommandLineOptions.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/CommandLineOptions.cs
@@ -1,316 +1,316 @@
-// File: CommandLineOptions.cs
-//
-// This is a re-usable component to be used when you 
-// need to parse command-line options/parameters.
-//
-// Separates command line parameters from command line options.
-// Uses reflection to populate member variables the derived class with the values 
-// of the options.
-//
-// An option can start with "-" or "--". On Windows systems, it can start with "/" as well.
-//
-// I define 3 types of "options":
-//   1. Boolean options (yes/no values), e.g: /r to recurse
-//   2. Value options, e.g: /loglevel=3
-//   2. Parameters: standalone strings like file names
-//
-// An example to explain:
-//   csc /nologo /t:exe myfile.cs
-//       |       |      |
-//       |       |      + parameter
-//       |       |
-//       |       + value option
-//       |
-//       + boolean option
-//
-// Please see a short description of the CommandLineOptions class
-// at http://codeblast.com/~gert/dotnet/sells.html
-// 
-// Gert Lombard (gert@codeblast.com)
-// James Newkirk (jim@nunit.org)
-
-namespace Codeblast
-{
-	using System;
-	using System.Reflection;
-	using System.Collections;
-	using System.Text;
-
-	//
-	// The Attributes
-	//
-
-	[AttributeUsage(AttributeTargets.Field)]
-	public class OptionAttribute : Attribute 
-	{
-		protected object optValue;
-		protected string optName;
-		protected string description;
-
-		public string Short 
-		{
-			get { return optName; }
-			set { optName = value; }
-		}
-
-		public object Value
-		{
-			get { return optValue; }
-			set { optValue = value; }
-		}
-
-		public string Description 
-		{
-			get { return description; }
-			set { description = value; }
-		}
-	}
-
-	//
-	// The CommandLineOptions members
-	//
-
-	public abstract class CommandLineOptions
-	{
-		protected ArrayList parameters;
-		protected bool isInvalid = false; 
-
-		private int optionCount;
-		private ArrayList invalidArguments = new ArrayList();
-		private bool allowForwardSlash;
-
-		public CommandLineOptions( string[] args )
-			: this( System.IO.Path.DirectorySeparatorChar != '/', args ) {}
-
-		public CommandLineOptions( bool allowForwardSlash, string[] args )
-		{
-			this.allowForwardSlash = allowForwardSlash;
-			optionCount = Init( args );
-		}
-
-		public IList InvalidArguments
-		{
-			get { return invalidArguments; }
-		}
-
-		public bool NoArgs
-		{
-			get 
-			{ 
-				return ParameterCount == 0 && optionCount == 0;
-			}
-		}
-
-		public bool AllowForwardSlash
-		{
-			get { return allowForwardSlash; }
-		}
-
-		public int Init(params string[] args)
-		{
-			int count = 0;
-			int n = 0;
-			while (n < args.Length)
-			{
-				int pos = IsOption(args[n]);
-				if (pos > 0)
-				{
-					// It's an option:
-					if (GetOption(args, ref n, pos))
-						count++;
-					else
-						InvalidOption(args[Math.Min(n, args.Length-1)]);
-				}
-				else
-				{
-					if (parameters == null) parameters = new ArrayList();
-					parameters.Add(args[n]);
-					if ( !IsValidParameter(args[n]) )
-						InvalidOption( args[n] );
-				}
-				n++;
-			}
-			return count;
-		}
-
-		// An option starts with "/", "-" or "--":
-		protected virtual int IsOption(string opt)
-		{
-			char[] c = null;
-			if (opt.Length < 2) 
-			{
-				return 0;
-			}
-			else if (opt.Length > 2)
-			{
-				c = opt.ToCharArray(0, 3);
-				if (c[0] == '-' && c[1] == '-' && IsOptionNameChar(c[2])) return 2;
-			}
-			else
-			{
-				c = opt.ToCharArray(0, 2);
-			}
-			if ((c[0] == '-' || c[0] == '/' && AllowForwardSlash) && IsOptionNameChar(c[1])) return 1;
-			return 0; 
-		}
-
-		protected virtual bool IsOptionNameChar(char c)
-		{
-			return Char.IsLetterOrDigit(c) || c == '?';
-		}
-
-		protected virtual void InvalidOption(string name)
-		{
-			invalidArguments.Add( name );
-			isInvalid = true;
-		}
-
-		protected virtual bool IsValidParameter(string param)
-		{
-			return true;
-		}
-
-		protected virtual bool MatchShortName(FieldInfo field, string name)
-		{
-			object[] atts = field.GetCustomAttributes(typeof(OptionAttribute), true);
-			foreach (OptionAttribute att in atts)
-			{
-				if (string.Compare(att.Short, name, true) == 0) return true;
-			}
-			return false;
-		}
-
-		protected virtual FieldInfo GetMemberField(string name)
-		{
-			Type t = this.GetType();
-			FieldInfo[] fields = t.GetFields(BindingFlags.Instance|BindingFlags.Public);
-			foreach (FieldInfo field in fields)
-			{
-				if (string.Compare(field.Name, name, true) == 0) return field;
-				if (MatchShortName(field, name)) return field;
-			}
-			return null;
-		}
-
-		protected virtual object GetOptionValue(FieldInfo field)
-		{
-			object[] atts = field.GetCustomAttributes(typeof(OptionAttribute), true);
-			if (atts.Length > 0)
-			{
-				OptionAttribute att = (OptionAttribute)atts[0];
-				return att.Value;
-			}
-			return null;
-		}
-
-		protected virtual bool GetOption(string[] args, ref int index, int pos)
-		{
-			try
-			{
-				object cmdLineVal = null;
-				string opt = args[index].Substring(pos, args[index].Length-pos);
-				SplitOptionAndValue(ref opt, ref cmdLineVal);
-				FieldInfo field = GetMemberField(opt);
-				if (field != null)
-				{
-					object value = GetOptionValue(field);
-					if (value == null)
-					{
-						if (field.FieldType == typeof(bool))
-							value = true; // default for bool values is true
-						else if(field.FieldType == typeof(string))
-						{
-							value = cmdLineVal != null ? cmdLineVal : args[++index];
-							field.SetValue(this, Convert.ChangeType(value, field.FieldType));
-							string stringValue = (string)value;
-							if(stringValue == null || stringValue.Length == 0) return false; 
-							return true;
-						}
-						else if(field.FieldType.IsEnum)
-							value = Enum.Parse( field.FieldType, (string)cmdLineVal, true );
-						else
-							value = cmdLineVal != null ? cmdLineVal : args[++index];
-					}
-					field.SetValue(this, Convert.ChangeType(value, field.FieldType));
-					return true;
-				}
-			}
-			catch (Exception) 
-			{
-				// Ignore exceptions like type conversion errors.
-			}
-			return false;
-		}
-
-		protected virtual void SplitOptionAndValue(ref string opt, ref object val)
-		{
-			// Look for ":" or "=" separator in the option:
-			int pos = opt.IndexOfAny( new char[] { ':', '=' } );
-			if (pos < 1) return;
-
-			val = opt.Substring(pos+1);
-			opt = opt.Substring(0, pos);
-		}
-
-		// Parameter accessor:
-		public string this[int index]
-		{
-			get
-			{
-				if (parameters != null) return (string)parameters[index];
-				return null;
-			}
-		}
-
-		public ArrayList Parameters
-		{
-			get { return parameters; }
-		}
-
-		public int ParameterCount
-		{
-			get
-			{
-				return parameters == null ? 0 : parameters.Count;
-			}
-		}
-
-		public virtual void Help()
-		{
-			Console.WriteLine(GetHelpText());
-		}
-
-		public virtual string GetHelpText()
-		{
-			StringBuilder helpText = new StringBuilder();
-
-			Type t = this.GetType();
-			FieldInfo[] fields = t.GetFields(BindingFlags.Instance|BindingFlags.Public);
-            char optChar = allowForwardSlash ? '/' : '-';
-			foreach (FieldInfo field in fields)
-			{
-				object[] atts = field.GetCustomAttributes(typeof(OptionAttribute), true);
-				if (atts.Length > 0)
-				{
-					OptionAttribute att = (OptionAttribute)atts[0];
-					if (att.Description != null)
-					{
-						string valType = "";
-						if (att.Value == null)
-						{
-							if (field.FieldType == typeof(float)) valType = "=FLOAT";
-							else if (field.FieldType == typeof(string)) valType = "=STR";
-							else if (field.FieldType != typeof(bool)) valType = "=X";
-						}
-
-						helpText.AppendFormat("{0}{1,-20}\t{2}", optChar, field.Name+valType, att.Description);
-						if (att.Short != null) 
-							helpText.AppendFormat(" (Short format: {0}{1}{2})", optChar, att.Short, valType);
-						helpText.Append( Environment.NewLine );
-					}
-				}
-			}
-			return helpText.ToString();
-		}
-	}
-}
+// File: CommandLineOptions.cs
+//
+// This is a re-usable component to be used when you 
+// need to parse command-line options/parameters.
+//
+// Separates command line parameters from command line options.
+// Uses reflection to populate member variables the derived class with the values 
+// of the options.
+//
+// An option can start with "-" or "--". On Windows systems, it can start with "/" as well.
+//
+// I define 3 types of "options":
+//   1. Boolean options (yes/no values), e.g: /r to recurse
+//   2. Value options, e.g: /loglevel=3
+//   2. Parameters: standalone strings like file names
+//
+// An example to explain:
+//   csc /nologo /t:exe myfile.cs
+//       |       |      |
+//       |       |      + parameter
+//       |       |
+//       |       + value option
+//       |
+//       + boolean option
+//
+// Please see a short description of the CommandLineOptions class
+// at http://codeblast.com/~gert/dotnet/sells.html
+// 
+// Gert Lombard (gert@codeblast.com)
+// James Newkirk (jim@nunit.org)
+
+namespace Codeblast
+{
+	using System;
+	using System.Reflection;
+	using System.Collections;
+	using System.Text;
+
+	//
+	// The Attributes
+	//
+
+	[AttributeUsage(AttributeTargets.Field)]
+	public class OptionAttribute : Attribute 
+	{
+		protected object optValue;
+		protected string optName;
+		protected string description;
+
+		public string Short 
+		{
+			get { return optName; }
+			set { optName = value; }
+		}
+
+		public object Value
+		{
+			get { return optValue; }
+			set { optValue = value; }
+		}
+
+		public string Description 
+		{
+			get { return description; }
+			set { description = value; }
+		}
+	}
+
+	//
+	// The CommandLineOptions members
+	//
+
+	public abstract class CommandLineOptions
+	{
+		protected ArrayList parameters;
+		protected bool isInvalid = false; 
+
+		private int optionCount;
+		private ArrayList invalidArguments = new ArrayList();
+		private bool allowForwardSlash;
+
+		public CommandLineOptions( string[] args )
+			: this( System.IO.Path.DirectorySeparatorChar != '/', args ) {}
+
+		public CommandLineOptions( bool allowForwardSlash, string[] args )
+		{
+			this.allowForwardSlash = allowForwardSlash;
+			optionCount = Init( args );
+		}
+
+		public IList InvalidArguments
+		{
+			get { return invalidArguments; }
+		}
+
+		public bool NoArgs
+		{
+			get 
+			{ 
+				return ParameterCount == 0 && optionCount == 0;
+			}
+		}
+
+		public bool AllowForwardSlash
+		{
+			get { return allowForwardSlash; }
+		}
+
+		public int Init(params string[] args)
+		{
+			int count = 0;
+			int n = 0;
+			while (n < args.Length)
+			{
+				int pos = IsOption(args[n]);
+				if (pos > 0)
+				{
+					// It's an option:
+					if (GetOption(args, ref n, pos))
+						count++;
+					else
+						InvalidOption(args[Math.Min(n, args.Length-1)]);
+				}
+				else
+				{
+					if (parameters == null) parameters = new ArrayList();
+					parameters.Add(args[n]);
+					if ( !IsValidParameter(args[n]) )
+						InvalidOption( args[n] );
+				}
+				n++;
+			}
+			return count;
+		}
+
+		// An option starts with "/", "-" or "--":
+		protected virtual int IsOption(string opt)
+		{
+			char[] c = null;
+			if (opt.Length < 2) 
+			{
+				return 0;
+			}
+			else if (opt.Length > 2)
+			{
+				c = opt.ToCharArray(0, 3);
+				if (c[0] == '-' && c[1] == '-' && IsOptionNameChar(c[2])) return 2;
+			}
+			else
+			{
+				c = opt.ToCharArray(0, 2);
+			}
+			if ((c[0] == '-' || c[0] == '/' && AllowForwardSlash) && IsOptionNameChar(c[1])) return 1;
+			return 0; 
+		}
+
+		protected virtual bool IsOptionNameChar(char c)
+		{
+			return Char.IsLetterOrDigit(c) || c == '?';
+		}
+
+		protected virtual void InvalidOption(string name)
+		{
+			invalidArguments.Add( name );
+			isInvalid = true;
+		}
+
+		protected virtual bool IsValidParameter(string param)
+		{
+			return true;
+		}
+
+		protected virtual bool MatchShortName(FieldInfo field, string name)
+		{
+			object[] atts = field.GetCustomAttributes(typeof(OptionAttribute), true);
+			foreach (OptionAttribute att in atts)
+			{
+				if (string.Compare(att.Short, name, true) == 0) return true;
+			}
+			return false;
+		}
+
+		protected virtual FieldInfo GetMemberField(string name)
+		{
+			Type t = this.GetType();
+			FieldInfo[] fields = t.GetFields(BindingFlags.Instance|BindingFlags.Public);
+			foreach (FieldInfo field in fields)
+			{
+				if (string.Compare(field.Name, name, true) == 0) return field;
+				if (MatchShortName(field, name)) return field;
+			}
+			return null;
+		}
+
+		protected virtual object GetOptionValue(FieldInfo field)
+		{
+			object[] atts = field.GetCustomAttributes(typeof(OptionAttribute), true);
+			if (atts.Length > 0)
+			{
+				OptionAttribute att = (OptionAttribute)atts[0];
+				return att.Value;
+			}
+			return null;
+		}
+
+		protected virtual bool GetOption(string[] args, ref int index, int pos)
+		{
+			try
+			{
+				object cmdLineVal = null;
+				string opt = args[index].Substring(pos, args[index].Length-pos);
+				SplitOptionAndValue(ref opt, ref cmdLineVal);
+				FieldInfo field = GetMemberField(opt);
+				if (field != null)
+				{
+					object value = GetOptionValue(field);
+					if (value == null)
+					{
+						if (field.FieldType == typeof(bool))
+							value = true; // default for bool values is true
+						else if(field.FieldType == typeof(string))
+						{
+							value = cmdLineVal != null ? cmdLineVal : args[++index];
+							field.SetValue(this, Convert.ChangeType(value, field.FieldType));
+							string stringValue = (string)value;
+							if(stringValue == null || stringValue.Length == 0) return false; 
+							return true;
+						}
+						else if(field.FieldType.IsEnum)
+							value = Enum.Parse( field.FieldType, (string)cmdLineVal, true );
+						else
+							value = cmdLineVal != null ? cmdLineVal : args[++index];
+					}
+					field.SetValue(this, Convert.ChangeType(value, field.FieldType));
+					return true;
+				}
+			}
+			catch (Exception) 
+			{
+				// Ignore exceptions like type conversion errors.
+			}
+			return false;
+		}
+
+		protected virtual void SplitOptionAndValue(ref string opt, ref object val)
+		{
+			// Look for ":" or "=" separator in the option:
+			int pos = opt.IndexOfAny( new char[] { ':', '=' } );
+			if (pos < 1) return;
+
+			val = opt.Substring(pos+1);
+			opt = opt.Substring(0, pos);
+		}
+
+		// Parameter accessor:
+		public string this[int index]
+		{
+			get
+			{
+				if (parameters != null) return (string)parameters[index];
+				return null;
+			}
+		}
+
+		public ArrayList Parameters
+		{
+			get { return parameters; }
+		}
+
+		public int ParameterCount
+		{
+			get
+			{
+				return parameters == null ? 0 : parameters.Count;
+			}
+		}
+
+		public virtual void Help()
+		{
+			Console.WriteLine(GetHelpText());
+		}
+
+		public virtual string GetHelpText()
+		{
+			StringBuilder helpText = new StringBuilder();
+
+			Type t = this.GetType();
+			FieldInfo[] fields = t.GetFields(BindingFlags.Instance|BindingFlags.Public);
+            char optChar = allowForwardSlash ? '/' : '-';
+			foreach (FieldInfo field in fields)
+			{
+				object[] atts = field.GetCustomAttributes(typeof(OptionAttribute), true);
+				if (atts.Length > 0)
+				{
+					OptionAttribute att = (OptionAttribute)atts[0];
+					if (att.Description != null)
+					{
+						string valType = "";
+						if (att.Value == null)
+						{
+							if (field.FieldType == typeof(float)) valType = "=FLOAT";
+							else if (field.FieldType == typeof(string)) valType = "=STR";
+							else if (field.FieldType != typeof(bool)) valType = "=X";
+						}
+
+						helpText.AppendFormat("{0}{1,-20}\t{2}", optChar, field.Name+valType, att.Description);
+						if (att.Short != null) 
+							helpText.AppendFormat(" (Short format: {0}{1}{2})", optChar, att.Short, valType);
+						helpText.Append( Environment.NewLine );
+					}
+				}
+			}
+			return helpText.ToString();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ConsoleWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ConsoleWriter.cs
@@ -1,73 +1,73 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using System.IO;
-	using System.Text;
-
-	/// <summary>
-	/// Class used for receiving console output from the running test and displaying it.
-	/// </summary>
-	public class ConsoleWriter : TextWriter
-	{
-		#region Private Fields
-
-		private TextWriter console;
-
-		#endregion
-
-		#region Constructors
-    			
-		public ConsoleWriter(TextWriter console)
-		{
-			this.console = console;
-		}
-
-		#endregion
-    			
-		#region TextWriter Overrides
-
-		public override void Close()
-		{
-			//console.Close ();
-		}
-
-		public override void Flush()
-		{
-			console.Flush ();
-		}
-
-
-		public override void Write(char c)
-		{
-			console.Write(c);
-		}
-
-		public override void Write(String s)
-		{
-			console.Write(s);
-		}
-
-		public override void WriteLine(string s)
-		{
-			console.WriteLine(s);
-		}
-
-		public override Encoding Encoding
-		{
-			get { return Encoding.Default; }
-		}
-
-		public override Object InitializeLifetimeService()
-		{
-			return null;
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using System.IO;
+	using System.Text;
+
+	/// <summary>
+	/// Class used for receiving console output from the running test and displaying it.
+	/// </summary>
+	public class ConsoleWriter : TextWriter
+	{
+		#region Private Fields
+
+		private TextWriter console;
+
+		#endregion
+
+		#region Constructors
+    			
+		public ConsoleWriter(TextWriter console)
+		{
+			this.console = console;
+		}
+
+		#endregion
+    			
+		#region TextWriter Overrides
+
+		public override void Close()
+		{
+			//console.Close ();
+		}
+
+		public override void Flush()
+		{
+			console.Flush ();
+		}
+
+
+		public override void Write(char c)
+		{
+			console.Write(c);
+		}
+
+		public override void Write(String s)
+		{
+			console.Write(s);
+		}
+
+		public override void WriteLine(string s)
+		{
+			console.WriteLine(s);
+		}
+
+		public override Encoding Encoding
+		{
+			get { return Encoding.Default; }
+		}
+
+		public override Object InitializeLifetimeService()
+		{
+			return null;
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ISettings.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ISettings.cs
@@ -1,102 +1,102 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	public delegate void SettingsEventHandler( object sender, SettingsEventArgs args );
-
-	public class SettingsEventArgs : EventArgs
-	{
-		private string settingName;
-
-		public SettingsEventArgs( string settingName )
-		{
-			this.settingName = settingName;
-		}
-
-		public string SettingName
-		{
-			get { return settingName; }
-		}
-	}
-
-	/// <summary>
-	/// The ISettings interface is used to access all user
-	/// settings and options.
-	/// </summary>
-	public interface ISettings
-	{
-		event SettingsEventHandler Changed;
-
-		/// <summary>
-		/// Load a setting from the storage.
-		/// </summary>
-		/// <param name="settingName">Name of the setting to load</param>
-		/// <returns>Value of the setting or null</returns>
-		object GetSetting( string settingName );
-
-		/// <summary>
-		/// Load a setting from the storage or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of the setting to load</param>
-		/// <param name="settingName">Value to return if the setting is missing</param>
-		/// <returns>Value of the setting or the default value</returns>
-		object GetSetting( string settingName, object defaultValue );
-
-		/// <summary>
-		/// Load an integer setting from the storage or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of the setting to load</param>
-		/// <param name="defaultValue">Value to return if the setting is missing</param>
-		/// <returns>Value of the setting or the default value</returns>
-		int GetSetting( string settingName, int defaultValue );
-
-		/// <summary>
-		/// Load a boolean setting or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of setting to load</param>
-		/// <param name="defaultValue">Value to return if the setting is missing</param>
-		/// <returns>Value of the setting or the default value</returns>
-		bool GetSetting( string settingName, bool defaultValue );
-
-		/// <summary>
-		/// Load a string setting from the storage or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of the setting to load</param>
-		/// <param name="defaultValue">Value to return if the setting is missing</param>
-		/// <returns>Value of the setting or the default value</returns>
-		string GetSetting( string settingName, string defaultValue );
-
-		/// <summary>
-		/// Load an enum setting from the storage or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of the setting to load</param>
-		/// <param name="defaultValue">Value to return if the setting is missing</param>
-		/// <returns>Value of the setting or the default value</returns>
-		System.Enum GetSetting( string settingName, System.Enum defaultValue );
-
-		/// <summary>
-		/// Remove a setting from the storage
-		/// </summary>
-		/// <param name="settingName">Name of the setting to remove</param>
-		void RemoveSetting( string settingName );
-
-		/// <summary>
-		/// Remove an entire group of settings from the storage
-		/// </summary>
-		/// <param name="groupName">Name of the group to remove</param>
-		void RemoveGroup( string groupName );
-
-		/// <summary>
-		/// Save a setting in the storage
-		/// </summary>
-		/// <param name="settingName">Name of the setting to save</param>
-		/// <param name="settingValue">Value to be saved</param>
-		void SaveSetting( string settingName, object settingValue );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	public delegate void SettingsEventHandler( object sender, SettingsEventArgs args );
+
+	public class SettingsEventArgs : EventArgs
+	{
+		private string settingName;
+
+		public SettingsEventArgs( string settingName )
+		{
+			this.settingName = settingName;
+		}
+
+		public string SettingName
+		{
+			get { return settingName; }
+		}
+	}
+
+	/// <summary>
+	/// The ISettings interface is used to access all user
+	/// settings and options.
+	/// </summary>
+	public interface ISettings
+	{
+		event SettingsEventHandler Changed;
+
+		/// <summary>
+		/// Load a setting from the storage.
+		/// </summary>
+		/// <param name="settingName">Name of the setting to load</param>
+		/// <returns>Value of the setting or null</returns>
+		object GetSetting( string settingName );
+
+		/// <summary>
+		/// Load a setting from the storage or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of the setting to load</param>
+		/// <param name="settingName">Value to return if the setting is missing</param>
+		/// <returns>Value of the setting or the default value</returns>
+		object GetSetting( string settingName, object defaultValue );
+
+		/// <summary>
+		/// Load an integer setting from the storage or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of the setting to load</param>
+		/// <param name="defaultValue">Value to return if the setting is missing</param>
+		/// <returns>Value of the setting or the default value</returns>
+		int GetSetting( string settingName, int defaultValue );
+
+		/// <summary>
+		/// Load a boolean setting or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of setting to load</param>
+		/// <param name="defaultValue">Value to return if the setting is missing</param>
+		/// <returns>Value of the setting or the default value</returns>
+		bool GetSetting( string settingName, bool defaultValue );
+
+		/// <summary>
+		/// Load a string setting from the storage or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of the setting to load</param>
+		/// <param name="defaultValue">Value to return if the setting is missing</param>
+		/// <returns>Value of the setting or the default value</returns>
+		string GetSetting( string settingName, string defaultValue );
+
+		/// <summary>
+		/// Load an enum setting from the storage or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of the setting to load</param>
+		/// <param name="defaultValue">Value to return if the setting is missing</param>
+		/// <returns>Value of the setting or the default value</returns>
+		System.Enum GetSetting( string settingName, System.Enum defaultValue );
+
+		/// <summary>
+		/// Remove a setting from the storage
+		/// </summary>
+		/// <param name="settingName">Name of the setting to remove</param>
+		void RemoveSetting( string settingName );
+
+		/// <summary>
+		/// Remove an entire group of settings from the storage
+		/// </summary>
+		/// <param name="groupName">Name of the group to remove</param>
+		void RemoveGroup( string groupName );
+
+		/// <summary>
+		/// Save a setting in the storage
+		/// </summary>
+		/// <param name="settingName">Name of the setting to save</param>
+		/// <param name="settingValue">Value to be saved</param>
+		void SaveSetting( string settingName, object settingValue );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ITestEvents.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ITestEvents.cs
@@ -1,67 +1,67 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// ITestEvents interface defines events related to loading
-	/// and unloading of test projects and loading, unloading and
-	/// running tests.
-	/// </summary>
-	public interface ITestEvents
-	{
-		// Events related to the loading and unloading
-		// of projects - including wrapper projects
-		// created in order to load assemblies. This
-		// occurs separately from the loading of tests
-		// for the assemblies in the project.
-		event TestEventHandler ProjectLoading;
-		event TestEventHandler ProjectLoaded;
-		event TestEventHandler ProjectLoadFailed;
-		event TestEventHandler ProjectUnloading;
-		event TestEventHandler ProjectUnloaded;
-		event TestEventHandler ProjectUnloadFailed;
-
-		// Events related to loading and unloading tests.
-		event TestEventHandler TestLoading;
-		event TestEventHandler TestLoaded;
-		event TestEventHandler TestLoadFailed;
-		
-		event TestEventHandler TestReloading;
-		event TestEventHandler TestReloaded;
-		event TestEventHandler TestReloadFailed;
-		
-		event TestEventHandler TestUnloading;
-		event TestEventHandler TestUnloaded;
-		event TestEventHandler TestUnloadFailed;
-	
-		// Events related to a running a set of tests
-		event TestEventHandler RunStarting;	
-		event TestEventHandler RunFinished;
-
-		// Events that arise while a test is running
-		// These are translated from calls to the runner on the
-		// EventListener interface.
-		event TestEventHandler SuiteStarting;
-		event TestEventHandler SuiteFinished;
-		event TestEventHandler TestStarting;
-		event TestEventHandler TestFinished;
-
-		/// <summary>
-		/// An unhandled exception was thrown during a test run,
-		/// and it cannot be associated with a particular test failure.
-		/// </summary>
-		event TestEventHandler TestException;
-
-		/// <summary>
-		/// Console Out/Error
-		/// </summary>
-		event TestEventHandler TestOutput;
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// ITestEvents interface defines events related to loading
+	/// and unloading of test projects and loading, unloading and
+	/// running tests.
+	/// </summary>
+	public interface ITestEvents
+	{
+		// Events related to the loading and unloading
+		// of projects - including wrapper projects
+		// created in order to load assemblies. This
+		// occurs separately from the loading of tests
+		// for the assemblies in the project.
+		event TestEventHandler ProjectLoading;
+		event TestEventHandler ProjectLoaded;
+		event TestEventHandler ProjectLoadFailed;
+		event TestEventHandler ProjectUnloading;
+		event TestEventHandler ProjectUnloaded;
+		event TestEventHandler ProjectUnloadFailed;
+
+		// Events related to loading and unloading tests.
+		event TestEventHandler TestLoading;
+		event TestEventHandler TestLoaded;
+		event TestEventHandler TestLoadFailed;
+		
+		event TestEventHandler TestReloading;
+		event TestEventHandler TestReloaded;
+		event TestEventHandler TestReloadFailed;
+		
+		event TestEventHandler TestUnloading;
+		event TestEventHandler TestUnloaded;
+		event TestEventHandler TestUnloadFailed;
+	
+		// Events related to a running a set of tests
+		event TestEventHandler RunStarting;	
+		event TestEventHandler RunFinished;
+
+		// Events that arise while a test is running
+		// These are translated from calls to the runner on the
+		// EventListener interface.
+		event TestEventHandler SuiteStarting;
+		event TestEventHandler SuiteFinished;
+		event TestEventHandler TestStarting;
+		event TestEventHandler TestFinished;
+
+		/// <summary>
+		/// An unhandled exception was thrown during a test run,
+		/// and it cannot be associated with a particular test failure.
+		/// </summary>
+		event TestEventHandler TestException;
+
+		/// <summary>
+		/// Console Out/Error
+		/// </summary>
+		event TestEventHandler TestOutput;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ITestLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ITestLoader.cs
@@ -1,83 +1,83 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// The ITestLoader interface supports the loading and running
-	/// of tests in a remote domain.
-	/// </summary>
-	public interface ITestLoader
-	{
-		#region Properties
-
-		// See if a project is loaded
-		bool IsProjectLoaded { get; }
-
-		// See if a test has been loaded from the project
-		bool IsTestLoaded { get; }
-
-		// See if a test is running
-		bool Running { get; }
-
-		// The loaded test project
-		NUnitProject TestProject { get; set; }
-
-		string TestFileName { get; }
-
-		// Our last test results
-		TestResult TestResult { get; }
-
-		#endregion
-
-		#region Methods
-
-		// Create a new empty project using a default name
-		void NewProject();
-
-		// Create a new project given a filename
-		void NewProject( string filename );
-
-		// Load a project given a filename
-		void LoadProject( string filename );
-
-		// Load a project given a filename and config
-		void LoadProject( string filename, string configname );
-
-		// Load a project given an array of assemblies
-		void LoadProject( string[] assemblies );
-
-		// Unload current project
-		void UnloadProject();
-
-		// Load tests for current project and config
-		void LoadTest();
-
-		// Load a specific test for current project and config
-		void LoadTest( string testName );
-
-		// Unload current test
-		void UnloadTest();
-		
-		// Reload current test
-		void ReloadTest();
-
-		// Run all tests
-		void RunTests();
-
-		// Run specific tests
-		void RunTests( ITestFilter filter );
-
-		// Cancel the running test
-		void CancelTestRun();
-
-		#endregion
-	}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// The ITestLoader interface supports the loading and running
+	/// of tests in a remote domain.
+	/// </summary>
+	public interface ITestLoader
+	{
+		#region Properties
+
+		// See if a project is loaded
+		bool IsProjectLoaded { get; }
+
+		// See if a test has been loaded from the project
+		bool IsTestLoaded { get; }
+
+		// See if a test is running
+		bool Running { get; }
+
+		// The loaded test project
+		NUnitProject TestProject { get; set; }
+
+		string TestFileName { get; }
+
+		// Our last test results
+		TestResult TestResult { get; }
+
+		#endregion
+
+		#region Methods
+
+		// Create a new empty project using a default name
+		void NewProject();
+
+		// Create a new project given a filename
+		void NewProject( string filename );
+
+		// Load a project given a filename
+		void LoadProject( string filename );
+
+		// Load a project given a filename and config
+		void LoadProject( string filename, string configname );
+
+		// Load a project given an array of assemblies
+		void LoadProject( string[] assemblies );
+
+		// Unload current project
+		void UnloadProject();
+
+		// Load tests for current project and config
+		void LoadTest();
+
+		// Load a specific test for current project and config
+		void LoadTest( string testName );
+
+		// Unload current test
+		void UnloadTest();
+		
+		// Reload current test
+		void ReloadTest();
+
+		// Run all tests
+		void RunTests();
+
+		// Run specific tests
+		void RunTests( ITestFilter filter );
+
+		// Cancel the running test
+		void CancelTestRun();
+
+		#endregion
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/MemorySettingsStorage.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/MemorySettingsStorage.cs
@@ -1,79 +1,79 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	///  MemorySettingsStorage is used to hold settings for
-	///  the NUnit tests and also serves as the base class
-	///  for XmlSettingsStorage.
-	/// </summary>
-	public class MemorySettingsStorage : ISettingsStorage
-	{
-		protected Hashtable settings = new Hashtable();
-
-		#region ISettingsStorage Members
-
-		public object GetSetting(string settingName)
-		{
-			return settings[settingName];
-		}
-
-		public void RemoveSetting(string settingName)
-		{
-			settings.Remove( settingName );
-		}
-
-		public void RemoveGroup( string groupName )
-		{
-			ArrayList keysToRemove = new ArrayList();
-
-			string prefix = groupName;
-			if ( !prefix.EndsWith(".") )
-				prefix = prefix + ".";
-
-			foreach( string key in settings.Keys )
-				if ( key.StartsWith( prefix ) )
-					keysToRemove.Add( key );
-
-			foreach( string key in keysToRemove )
-				settings.Remove( key );
-		}
-
-		public void SaveSetting(string settingName, object settingValue)
-		{
-			settings[settingName] = settingValue;
-		}
-
-		public ISettingsStorage MakeChildStorage(string name)
-		{
-			return new MemorySettingsStorage();
-		}
-
-		public virtual void LoadSettings()
-		{
-			// No action required
-		}
-
-		public virtual void SaveSettings()
-		{
-			// No action required
-		}
-		#endregion
-
-		#region IDisposable Members
-
-		public void Dispose()
-		{
-			// TODO:  Add MemorySettingsStorage.Dispose implementation
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	///  MemorySettingsStorage is used to hold settings for
+	///  the NUnit tests and also serves as the base class
+	///  for XmlSettingsStorage.
+	/// </summary>
+	public class MemorySettingsStorage : ISettingsStorage
+	{
+		protected Hashtable settings = new Hashtable();
+
+		#region ISettingsStorage Members
+
+		public object GetSetting(string settingName)
+		{
+			return settings[settingName];
+		}
+
+		public void RemoveSetting(string settingName)
+		{
+			settings.Remove( settingName );
+		}
+
+		public void RemoveGroup( string groupName )
+		{
+			ArrayList keysToRemove = new ArrayList();
+
+			string prefix = groupName;
+			if ( !prefix.EndsWith(".") )
+				prefix = prefix + ".";
+
+			foreach( string key in settings.Keys )
+				if ( key.StartsWith( prefix ) )
+					keysToRemove.Add( key );
+
+			foreach( string key in keysToRemove )
+				settings.Remove( key );
+		}
+
+		public void SaveSetting(string settingName, object settingValue)
+		{
+			settings[settingName] = settingValue;
+		}
+
+		public ISettingsStorage MakeChildStorage(string name)
+		{
+			return new MemorySettingsStorage();
+		}
+
+		public virtual void LoadSettings()
+		{
+			// No action required
+		}
+
+		public virtual void SaveSettings()
+		{
+			// No action required
+		}
+		#endregion
+
+		#region IDisposable Members
+
+		public void Dispose()
+		{
+			// TODO:  Add MemorySettingsStorage.Dispose implementation
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/MultipleTestDomainRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/MultipleTestDomainRunner.cs
@@ -1,87 +1,87 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for MultipleTestDomainRunner.
-	/// </summary>
-	public class MultipleTestDomainRunner : AggregatingTestRunner
-	{
-		#region Constructors
-		public MultipleTestDomainRunner() : base( 0 ) { }
-
-		public MultipleTestDomainRunner( int runnerID ) : base( runnerID ) { }
-		#endregion
-
-		#region Load Method Overrides
-		public override bool Load(TestPackage package)
-		{
-			this.projectName = package.FullName;
-			this.testName.FullName = this.testName.Name = projectName;
-			runners = new ArrayList();
-
-			int nfound = 0;
-			int index = 0;
-
-			string targetAssemblyName = null;
-			if( package.TestName != null && package.Assemblies.Contains( package.TestName ) )
-			{
-				targetAssemblyName = package.TestName;
-				package.TestName = null;
-			}
-			
-			foreach( string assembly in package.Assemblies )
-			{
-				if ( targetAssemblyName == null || targetAssemblyName == assembly )
-				{
-					TestDomain runner = new TestDomain( this.runnerID * 100 + index + 1 );
-
-					TestPackage p = new TestPackage( assembly );
-					p.AutoBinPath = package.AutoBinPath;
-					p.ConfigurationFile = package.ConfigurationFile;
-					p.BasePath = package.BasePath;
-					p.PrivateBinPath = package.PrivateBinPath;
-					p.TestName = package.TestName;
-					foreach( object key in package.Settings.Keys )
-						p.Settings[key] = package.Settings[key];
-
-					if ( package.TestName == null )
-					{
-						runners.Add( runner );
-						if ( runner.Load( p ) )
-							nfound++;
-					}
-					else if ( runner.Load( p ) )
-					{
-						runners.Add( runner );
-						nfound++;
-					}
-				}
-			}
-
-			if ( package.TestName == null && targetAssemblyName == null )
-				return nfound == package.Assemblies.Count;
-			else
-				return nfound > 0;
-		}
-
-		private void CreateRunners( int count )
-		{
-			runners = new ArrayList();
-			for( int index = 0; index < count; index++ )
-			{
-				TestDomain runner = new TestDomain( this.runnerID * 100 + index + 1 );
-				runners.Add( runner );
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for MultipleTestDomainRunner.
+	/// </summary>
+	public class MultipleTestDomainRunner : AggregatingTestRunner
+	{
+		#region Constructors
+		public MultipleTestDomainRunner() : base( 0 ) { }
+
+		public MultipleTestDomainRunner( int runnerID ) : base( runnerID ) { }
+		#endregion
+
+		#region Load Method Overrides
+		public override bool Load(TestPackage package)
+		{
+			this.projectName = package.FullName;
+			this.testName.FullName = this.testName.Name = projectName;
+			runners = new ArrayList();
+
+			int nfound = 0;
+			int index = 0;
+
+			string targetAssemblyName = null;
+			if( package.TestName != null && package.Assemblies.Contains( package.TestName ) )
+			{
+				targetAssemblyName = package.TestName;
+				package.TestName = null;
+			}
+			
+			foreach( string assembly in package.Assemblies )
+			{
+				if ( targetAssemblyName == null || targetAssemblyName == assembly )
+				{
+					TestDomain runner = new TestDomain( this.runnerID * 100 + index + 1 );
+
+					TestPackage p = new TestPackage( assembly );
+					p.AutoBinPath = package.AutoBinPath;
+					p.ConfigurationFile = package.ConfigurationFile;
+					p.BasePath = package.BasePath;
+					p.PrivateBinPath = package.PrivateBinPath;
+					p.TestName = package.TestName;
+					foreach( object key in package.Settings.Keys )
+						p.Settings[key] = package.Settings[key];
+
+					if ( package.TestName == null )
+					{
+						runners.Add( runner );
+						if ( runner.Load( p ) )
+							nfound++;
+					}
+					else if ( runner.Load( p ) )
+					{
+						runners.Add( runner );
+						nfound++;
+					}
+				}
+			}
+
+			if ( package.TestName == null && targetAssemblyName == null )
+				return nfound == package.Assemblies.Count;
+			else
+				return nfound > 0;
+		}
+
+		private void CreateRunners( int count )
+		{
+			runners = new ArrayList();
+			for( int index = 0; index < count; index++ )
+			{
+				TestDomain runner = new TestDomain( this.runnerID * 100 + index + 1 );
+				runners.Add( runner );
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/NUnitProject.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/NUnitProject.cs
@@ -1,656 +1,656 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Xml;
-using System.Xml.Schema;
-using System.IO;
-using System.Threading;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Types of changes that may occur to a config
-	/// </summary>
-	public enum ProjectChangeType
-	{
-		ActiveConfig,
-		AddConfig,
-		RemoveConfig,
-		UpdateConfig,
-		Other
-	}
-
-	/// <summary>
-	///  Arguments for a project event
-	/// </summary>
-	public class ProjectEventArgs : EventArgs
-	{
-		public ProjectChangeType type;
-		public string configName;
-
-		public ProjectEventArgs( ProjectChangeType type, string configName )
-		{
-			this.type = type;
-			this.configName = configName;
-		}
-	}
-
-	/// <summary>
-	/// Delegate to be used to handle project events
-	/// </summary>
-	public delegate void ProjectEventHandler( object sender, ProjectEventArgs e );
-
-	/// <summary>
-	/// Class that represents an NUnit test project
-	/// </summary>
-	public class NUnitProject
-	{
-		#region Static and instance variables
-
-		/// <summary>
-		/// Used to generate default names for projects
-		/// </summary>
-		private static int projectSeed = 0;
-
-		/// <summary>
-		/// The extension used for test projects
-		/// </summary>
-		private static readonly string nunitExtension = ".nunit";
-
-		/// <summary>
-		/// Path to the file storing this project
-		/// </summary>
-		private string projectPath;
-
-		/// <summary>
-		/// Application Base for the project. Since this
-		/// can be null, always fetch from the property
-		/// rather than using the field directly.
-		/// </summary>
-		private string basePath;
-
-		/// <summary>
-		///  Whether the project is dirty
-		/// </summary>
-		private bool isDirty = false;
-		
-		/// <summary>
-		/// Collection of configs for the project
-		/// </summary>
-		private ProjectConfigCollection configs;
-
-		/// <summary>
-		/// The currently active configuration
-		/// </summary>
-		private ProjectConfig activeConfig;
-
-		/// <summary>
-		/// Flag indicating that this project is a
-		/// temporary wrapper for an assembly.
-		/// </summary>
-		private bool isAssemblyWrapper = false;
-
-		#endregion
-
-		#region Constructor
-
-		public NUnitProject( string projectPath )
-		{
-			this.projectPath = Path.GetFullPath( projectPath );
-			configs = new ProjectConfigCollection( this );
-		}
-
-		#endregion
-
-		#region Static Methods
-		// True if it's one of our project types
-		public static bool IsProjectFile( string path )
-		{
-			return Path.GetExtension( path ) == nunitExtension;
-		}
-
-		// True if it's ours or one we can load
-		public static bool CanLoadAsProject( string path )
-		{
-			return	IsProjectFile( path ) ||
-					VSProject.IsProjectFile( path ) ||
-					VSProject.IsSolutionFile( path );
-		}
-
-		public static string GenerateProjectName()
-		{
-			return string.Format( "Project{0}", ++projectSeed );
-		}
-
-		public static NUnitProject EmptyProject()
-		{
-			return new NUnitProject( GenerateProjectName() );
-		}
-
-		public static NUnitProject NewProject()
-		{
-			NUnitProject project = EmptyProject();
-
-			project.Configs.Add( "Debug" );
-			project.Configs.Add( "Release" );
-			project.IsDirty = false;
-
-			return project;
-		}
-
-		/// <summary>
-		/// Return a test project by either loading it from
-		/// the supplied path, creating one from a VS file
-		/// or wrapping an assembly.
-		/// </summary>
-		public static NUnitProject LoadProject( string path )
-		{
-			if ( NUnitProject.IsProjectFile( path ) )
-			{
-				NUnitProject project = new NUnitProject( path );
-				project.Load();
-				return project;
-			}
-			else if ( VSProject.IsProjectFile( path ) )
-				return NUnitProject.FromVSProject( path );
-			else if ( VSProject.IsSolutionFile( path ) )
-				return NUnitProject.FromVSSolution( path );
-			else
-				return NUnitProject.FromAssembly( path );
-			
-		}
-
-		/// <summary>
-		/// Creates a project to wrap a list of assemblies
-		/// </summary>
-		public static NUnitProject FromAssemblies( string[] assemblies )
-		{
-			// if only one assembly is passed in then the configuration file
-			// should follow the name of the assembly. This will only happen
-			// if the LoadAssembly method is called. Currently the console ui
-			// does not differentiate between having one or multiple assemblies
-			// passed in.
-			if ( assemblies.Length == 1)
-				return NUnitProject.FromAssembly(assemblies[0]);
-
-
-			NUnitProject project = NUnitProject.EmptyProject();
-			ProjectConfig config = new ProjectConfig( "Default" );
-			foreach( string assembly in assemblies )
-			{
-				string fullPath = Path.GetFullPath( assembly );
-
-				if ( !File.Exists( fullPath ) )
-					throw new FileNotFoundException( string.Format( "Assembly not found: {0}", fullPath ) );
-				
-				config.Assemblies.Add( fullPath );
-			}
-
-			project.Configs.Add( config );
-
-			// TODO: Deduce application base, and provide a
-			// better value for loadpath and project path
-			// analagous to how new projects are handled
-			string basePath = Path.GetDirectoryName( Path.GetFullPath( assemblies[0] ) );
-			project.projectPath = Path.Combine( basePath, project.Name + ".nunit" );
-
-			project.IsDirty = true;
-
-			return project;
-		}
-
-		/// <summary>
-		/// Creates a project to wrap an assembly
-		/// </summary>
-		public static NUnitProject FromAssembly( string assemblyPath )
-		{
-			if ( !File.Exists( assemblyPath ) )
-				throw new FileNotFoundException( string.Format( "Assembly not found: {0}", assemblyPath ) );
-
-			string fullPath = Path.GetFullPath( assemblyPath );
-
-			NUnitProject project = new NUnitProject( fullPath );
-			
-			ProjectConfig config = new ProjectConfig( "Default" );
-			config.Assemblies.Add( fullPath );
-			project.Configs.Add( config );
-
-			project.isAssemblyWrapper = true;
-			project.IsDirty = false;
-
-			return project;
-		}
-
-		public static NUnitProject FromVSProject( string vsProjectPath )
-		{
-			NUnitProject project = new NUnitProject( Path.GetFullPath( vsProjectPath ) );
-
-			VSProject vsProject = new VSProject( vsProjectPath );
-			project.Add( vsProject );
-
-			project.isDirty = false;
-
-			return project;
-		}
-
-		public static NUnitProject FromVSSolution( string solutionPath )
-		{
-			NUnitProject project = new NUnitProject( Path.GetFullPath( solutionPath ) );
-
-			string solutionDirectory = Path.GetDirectoryName( solutionPath );
-			using(StreamReader reader = new StreamReader( solutionPath ))
-			{
-				char[] delims = { '=', ',' };
-				char[] trimchars = { ' ', '"' };
-
-				string line = reader.ReadLine();
-				while ( line != null )
-				{
-					if ( line.StartsWith( "Project" ) )
-					{
-						string[] parts = line.Split( delims );
-						string vsProjectPath = parts[2].Trim(trimchars);
-						
-						if ( VSProject.IsProjectFile( vsProjectPath ) )
-							project.Add( new VSProject( Path.Combine( solutionDirectory, vsProjectPath ) ) );
-					}
-
-					line = reader.ReadLine();
-				}
-			}
-
-			project.isDirty = false;
-
-			return project;
-		}
-
-		/// <summary>
-		/// Figure out the proper name to be used when saving a file.
-		/// </summary>
-		public static string ProjectPathFromFile( string path )
-		{
-			string fileName = Path.GetFileNameWithoutExtension( path ) + nunitExtension;
-			return Path.Combine( Path.GetDirectoryName( path ), fileName );
-		}
-
-		#endregion
-
-		#region Properties and Events
-
-		public static int ProjectSeed
-		{
-			get { return projectSeed; }
-			set { projectSeed = value; }
-		}
-
-		/// <summary>
-		/// The path to which a project will be saved.
-		/// </summary>
-		public string ProjectPath
-		{
-			get { return projectPath; }
-			set 
-			{
-				projectPath = Path.GetFullPath( value );
-				isDirty = true;
-			}
-		}
-
-		public string DefaultBasePath
-		{
-			get { return Path.GetDirectoryName( projectPath ); }
-		}
-
-		/// <summary>
-		/// Indicates whether a base path was specified for the project
-		/// </summary>
-		public bool BasePathSpecified
-		{
-			get
-			{
-				return basePath != null && basePath != string.Empty;
-			}
-		}
-
-		/// <summary>
-		/// The base path for the project. Constructor sets
-		/// it to the directory part of the project path.
-		/// </summary>
-		public string BasePath
-		{
-			get 
-			{ 
-				if ( !BasePathSpecified )
-					return DefaultBasePath; 
-				return basePath;
-			}
-			set	
-			{ 
-				basePath = value;
-				
-				if ( basePath != null && basePath != string.Empty 
-					&& !Path.IsPathRooted( basePath ) )
-				{
-					basePath = Path.Combine( 
-						DefaultBasePath, 
-						basePath );	
-				}
-
-				basePath = PathUtils.Canonicalize( basePath );
-				OnProjectChange( ProjectChangeType.Other, null );
-			}
-		}
-
-		/// <summary>
-		/// The name of the project.
-		/// </summary>
-		public string Name
-		{
-			get { return Path.GetFileNameWithoutExtension( projectPath ); }
-		}
-
-		public ProjectConfig ActiveConfig
-		{
-			get 
-			{ 
-				// In case the previous active config was removed
-				if ( activeConfig != null && !configs.Contains( activeConfig ) )
-					activeConfig = null;
-				
-				// In case no active config is set or it was removed
-				if ( activeConfig == null && configs.Count > 0 )
-					activeConfig = configs[0];
-				
-				return activeConfig; 
-			}
-		}
-
-		// Safe access to name of the active config
-		public string ActiveConfigName
-		{
-			get
-			{
-				ProjectConfig config = ActiveConfig;
-				return config == null ? null : config.Name;
-			}
-		}
-
-		public bool IsLoadable
-		{
-			get
-			{
-				return	ActiveConfig != null &&
-					ActiveConfig.Assemblies.Count > 0;
-			}
-		}
-
-		// A project made from a single assembly is treated
-		// as a transparent wrapper for some purposes until
-		// a change is made to it.
-		public bool IsAssemblyWrapper
-		{
-			get { return isAssemblyWrapper; }
-		}
-
-		public string ConfigurationFile
-		{
-			get 
-			{ 
-				// TODO: Check this
-				return isAssemblyWrapper
-					  ? Path.GetFileName( projectPath ) + ".config"
-					  : Path.GetFileNameWithoutExtension( projectPath ) + ".config";
-			}
-		}
-
-		public bool IsDirty
-		{
-			get { return isDirty; }
-			set { isDirty = value; }
-		}
-
-		public ProjectConfigCollection Configs
-		{
-			get { return configs; }
-		}
-
-		public event ProjectEventHandler Changed;
-
-		#endregion
-
-		#region Instance Methods
-
-		public void SetActiveConfig( int index )
-		{
-			activeConfig = configs[index];
-			OnProjectChange( ProjectChangeType.ActiveConfig, activeConfig.Name );
-		}
-
-		public void SetActiveConfig( string name )
-		{
-			foreach( ProjectConfig config in configs )
-			{
-				if ( config.Name == name )
-				{
-					activeConfig = config;
-					OnProjectChange( ProjectChangeType.ActiveConfig, activeConfig.Name );
-					break;
-				}
-			}
-		}
-
-//		public int IndexOf( string name )
-//		{
-//			for( int index = 0; index < configs.Count; index++ )
-//				if( configs[index].Name == name )
-//					return index;
-//
-//			return -1;
-//		}
-
-		public void OnProjectChange( ProjectChangeType type, string configName )
-		{
-			isDirty = true;
-
-			if ( isAssemblyWrapper )
-			{
-				projectPath = Path.ChangeExtension( projectPath, ".nunit" );
-				isAssemblyWrapper = false;
-			}
-
-			if ( Changed != null )
-				Changed( this, new ProjectEventArgs( type, configName ) );
-
-			if ( type == ProjectChangeType.RemoveConfig )
-			{
-				if ( activeConfig == null || activeConfig.Name == configName )
-				{
-					if ( configs.Count > 0 )
-						SetActiveConfig( 0 );
-				}
-			}
-		}
-
-		public void Add( VSProject vsProject )
-		{
-			foreach( VSProjectConfig vsConfig in vsProject.Configs )
-			{
-				string name = vsConfig.Name;
-
-				if ( !configs.Contains( name ) )
-					configs.Add( name );
-
-				ProjectConfig config = this.Configs[name];
-
-				foreach ( string assembly in vsConfig.Assemblies )
-					config.Assemblies.Add( assembly );
-			}
-		}
-
-		public void Load()
-		{
-			XmlTextReader reader = new XmlTextReader( projectPath );
-
-			string activeConfigName = null;
-			ProjectConfig currentConfig = null;
-			
-			try
-			{
-				reader.MoveToContent();
-				if ( reader.NodeType != XmlNodeType.Element || reader.Name != "NUnitProject" )
-					throw new ProjectFormatException( 
-						"Invalid project format: <NUnitProject> expected.", 
-						reader.LineNumber, reader.LinePosition );
-
-				while( reader.Read() )
-					if ( reader.NodeType == XmlNodeType.Element )
-						switch( reader.Name )
-						{
-							case "Settings":
-								if ( reader.NodeType == XmlNodeType.Element )
-								{
-									activeConfigName = reader.GetAttribute( "activeconfig" );
-                                    if (activeConfigName == "NUnitAutoConfig")
-										activeConfigName = NUnitFramework.BuildConfiguration;
-									string appbase = reader.GetAttribute( "appbase" );
-									if ( appbase != null )
-										this.BasePath = appbase;
-								}
-								break;
-
-							case "Config":
-								if ( reader.NodeType == XmlNodeType.Element )
-								{
-									string configName = reader.GetAttribute( "name" );
-									currentConfig = new ProjectConfig( configName );
-									currentConfig.BasePath = reader.GetAttribute( "appbase" );
-									currentConfig.ConfigurationFile = reader.GetAttribute( "configfile" );
-
-									string binpath = reader.GetAttribute( "binpath" );
-									currentConfig.PrivateBinPath = binpath;
-									string type = reader.GetAttribute( "binpathtype" );
-									if ( type == null )
-										if ( binpath == null )
-											currentConfig.BinPathType = BinPathType.Auto;
-										else
-											currentConfig.BinPathType = BinPathType.Manual;
-									else
-										currentConfig.BinPathType = (BinPathType)Enum.Parse( typeof( BinPathType ), type, true );
-									Configs.Add( currentConfig );
-									if ( configName == activeConfigName )
-										activeConfig = currentConfig;
-								}
-								else if ( reader.NodeType == XmlNodeType.EndElement )
-									currentConfig = null;
-								break;
-
-							case "assembly":
-								if ( reader.NodeType == XmlNodeType.Element && currentConfig != null )
-								{
-									string path = reader.GetAttribute( "path" );
-									currentConfig.Assemblies.Add( 
-										Path.Combine( currentConfig.BasePath, path ) );
-								}
-								break;
-
-							default:
-								break;
-						}
-
-				this.IsDirty = false;
-			}
-			catch( FileNotFoundException )
-			{
-				throw;
-			}
-			catch( XmlException e )
-			{
-				throw new ProjectFormatException(
-					string.Format( "Invalid project format: {0}", e.Message ),
-					e.LineNumber, e.LinePosition );
-			}
-			catch( Exception e )
-			{
-				throw new ProjectFormatException( 
-					string.Format( "Invalid project format: {0} Line {1}, Position {2}", 
-					e.Message, reader.LineNumber, reader.LinePosition ),
-					reader.LineNumber, reader.LinePosition );
-			}
-			finally
-			{
-				reader.Close();
-			}
-		}
-
-		public void Save()
-		{
-			projectPath = ProjectPathFromFile( projectPath );
-
-			XmlTextWriter writer = new XmlTextWriter(  projectPath, System.Text.Encoding.UTF8 );
-			writer.Formatting = Formatting.Indented;
-
-			writer.WriteStartElement( "NUnitProject" );
-			
-			if ( configs.Count > 0 || this.BasePath != this.DefaultBasePath )
-			{
-				writer.WriteStartElement( "Settings" );
-				if ( configs.Count > 0 )
-					writer.WriteAttributeString( "activeconfig", ActiveConfigName );
-				if ( this.BasePath != this.DefaultBasePath )
-					writer.WriteAttributeString( "appbase", this.BasePath );
-				writer.WriteEndElement();
-			}
-			
-			foreach( ProjectConfig config in Configs )
-			{
-				writer.WriteStartElement( "Config" );
-				writer.WriteAttributeString( "name", config.Name );
-				string appbase = config.BasePath;
-				if ( !PathUtils.SamePathOrUnder( this.BasePath, appbase ) )
-					writer.WriteAttributeString( "appbase", appbase );
-				else if ( config.RelativeBasePath != null )
-					writer.WriteAttributeString( "appbase", config.RelativeBasePath );
-				
-				string configFile = config.ConfigurationFile;
-				if ( configFile != null && configFile != this.ConfigurationFile )
-					writer.WriteAttributeString( "configfile", config.ConfigurationFile );
-				
-				if ( config.BinPathType == BinPathType.Manual )
-					writer.WriteAttributeString( "binpath", config.PrivateBinPath );
-				else
-					writer.WriteAttributeString( "binpathtype", config.BinPathType.ToString() );
-
-				foreach( string assembly in config.Assemblies )
-				{
-					writer.WriteStartElement( "assembly" );
-					writer.WriteAttributeString( "path", PathUtils.RelativePath( config.BasePath, assembly ) );
-					writer.WriteEndElement();
-				}
-
-				writer.WriteEndElement();
-			}
-
-			writer.WriteEndElement();
-
-			writer.Close();
-			this.IsDirty = false;
-
-			// Once we save a project, it's no longer
-			// loaded as an assembly wrapper on reload.
-			this.isAssemblyWrapper = false;
-		}
-
-		public void Save( string projectPath )
-		{
-			this.ProjectPath = projectPath;
-			Save();
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Xml;
+using System.Xml.Schema;
+using System.IO;
+using System.Threading;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Types of changes that may occur to a config
+	/// </summary>
+	public enum ProjectChangeType
+	{
+		ActiveConfig,
+		AddConfig,
+		RemoveConfig,
+		UpdateConfig,
+		Other
+	}
+
+	/// <summary>
+	///  Arguments for a project event
+	/// </summary>
+	public class ProjectEventArgs : EventArgs
+	{
+		public ProjectChangeType type;
+		public string configName;
+
+		public ProjectEventArgs( ProjectChangeType type, string configName )
+		{
+			this.type = type;
+			this.configName = configName;
+		}
+	}
+
+	/// <summary>
+	/// Delegate to be used to handle project events
+	/// </summary>
+	public delegate void ProjectEventHandler( object sender, ProjectEventArgs e );
+
+	/// <summary>
+	/// Class that represents an NUnit test project
+	/// </summary>
+	public class NUnitProject
+	{
+		#region Static and instance variables
+
+		/// <summary>
+		/// Used to generate default names for projects
+		/// </summary>
+		private static int projectSeed = 0;
+
+		/// <summary>
+		/// The extension used for test projects
+		/// </summary>
+		private static readonly string nunitExtension = ".nunit";
+
+		/// <summary>
+		/// Path to the file storing this project
+		/// </summary>
+		private string projectPath;
+
+		/// <summary>
+		/// Application Base for the project. Since this
+		/// can be null, always fetch from the property
+		/// rather than using the field directly.
+		/// </summary>
+		private string basePath;
+
+		/// <summary>
+		///  Whether the project is dirty
+		/// </summary>
+		private bool isDirty = false;
+		
+		/// <summary>
+		/// Collection of configs for the project
+		/// </summary>
+		private ProjectConfigCollection configs;
+
+		/// <summary>
+		/// The currently active configuration
+		/// </summary>
+		private ProjectConfig activeConfig;
+
+		/// <summary>
+		/// Flag indicating that this project is a
+		/// temporary wrapper for an assembly.
+		/// </summary>
+		private bool isAssemblyWrapper = false;
+
+		#endregion
+
+		#region Constructor
+
+		public NUnitProject( string projectPath )
+		{
+			this.projectPath = Path.GetFullPath( projectPath );
+			configs = new ProjectConfigCollection( this );
+		}
+
+		#endregion
+
+		#region Static Methods
+		// True if it's one of our project types
+		public static bool IsProjectFile( string path )
+		{
+			return Path.GetExtension( path ) == nunitExtension;
+		}
+
+		// True if it's ours or one we can load
+		public static bool CanLoadAsProject( string path )
+		{
+			return	IsProjectFile( path ) ||
+					VSProject.IsProjectFile( path ) ||
+					VSProject.IsSolutionFile( path );
+		}
+
+		public static string GenerateProjectName()
+		{
+			return string.Format( "Project{0}", ++projectSeed );
+		}
+
+		public static NUnitProject EmptyProject()
+		{
+			return new NUnitProject( GenerateProjectName() );
+		}
+
+		public static NUnitProject NewProject()
+		{
+			NUnitProject project = EmptyProject();
+
+			project.Configs.Add( "Debug" );
+			project.Configs.Add( "Release" );
+			project.IsDirty = false;
+
+			return project;
+		}
+
+		/// <summary>
+		/// Return a test project by either loading it from
+		/// the supplied path, creating one from a VS file
+		/// or wrapping an assembly.
+		/// </summary>
+		public static NUnitProject LoadProject( string path )
+		{
+			if ( NUnitProject.IsProjectFile( path ) )
+			{
+				NUnitProject project = new NUnitProject( path );
+				project.Load();
+				return project;
+			}
+			else if ( VSProject.IsProjectFile( path ) )
+				return NUnitProject.FromVSProject( path );
+			else if ( VSProject.IsSolutionFile( path ) )
+				return NUnitProject.FromVSSolution( path );
+			else
+				return NUnitProject.FromAssembly( path );
+			
+		}
+
+		/// <summary>
+		/// Creates a project to wrap a list of assemblies
+		/// </summary>
+		public static NUnitProject FromAssemblies( string[] assemblies )
+		{
+			// if only one assembly is passed in then the configuration file
+			// should follow the name of the assembly. This will only happen
+			// if the LoadAssembly method is called. Currently the console ui
+			// does not differentiate between having one or multiple assemblies
+			// passed in.
+			if ( assemblies.Length == 1)
+				return NUnitProject.FromAssembly(assemblies[0]);
+
+
+			NUnitProject project = NUnitProject.EmptyProject();
+			ProjectConfig config = new ProjectConfig( "Default" );
+			foreach( string assembly in assemblies )
+			{
+				string fullPath = Path.GetFullPath( assembly );
+
+				if ( !File.Exists( fullPath ) )
+					throw new FileNotFoundException( string.Format( "Assembly not found: {0}", fullPath ) );
+				
+				config.Assemblies.Add( fullPath );
+			}
+
+			project.Configs.Add( config );
+
+			// TODO: Deduce application base, and provide a
+			// better value for loadpath and project path
+			// analagous to how new projects are handled
+			string basePath = Path.GetDirectoryName( Path.GetFullPath( assemblies[0] ) );
+			project.projectPath = Path.Combine( basePath, project.Name + ".nunit" );
+
+			project.IsDirty = true;
+
+			return project;
+		}
+
+		/// <summary>
+		/// Creates a project to wrap an assembly
+		/// </summary>
+		public static NUnitProject FromAssembly( string assemblyPath )
+		{
+			if ( !File.Exists( assemblyPath ) )
+				throw new FileNotFoundException( string.Format( "Assembly not found: {0}", assemblyPath ) );
+
+			string fullPath = Path.GetFullPath( assemblyPath );
+
+			NUnitProject project = new NUnitProject( fullPath );
+			
+			ProjectConfig config = new ProjectConfig( "Default" );
+			config.Assemblies.Add( fullPath );
+			project.Configs.Add( config );
+
+			project.isAssemblyWrapper = true;
+			project.IsDirty = false;
+
+			return project;
+		}
+
+		public static NUnitProject FromVSProject( string vsProjectPath )
+		{
+			NUnitProject project = new NUnitProject( Path.GetFullPath( vsProjectPath ) );
+
+			VSProject vsProject = new VSProject( vsProjectPath );
+			project.Add( vsProject );
+
+			project.isDirty = false;
+
+			return project;
+		}
+
+		public static NUnitProject FromVSSolution( string solutionPath )
+		{
+			NUnitProject project = new NUnitProject( Path.GetFullPath( solutionPath ) );
+
+			string solutionDirectory = Path.GetDirectoryName( solutionPath );
+			using(StreamReader reader = new StreamReader( solutionPath ))
+			{
+				char[] delims = { '=', ',' };
+				char[] trimchars = { ' ', '"' };
+
+				string line = reader.ReadLine();
+				while ( line != null )
+				{
+					if ( line.StartsWith( "Project" ) )
+					{
+						string[] parts = line.Split( delims );
+						string vsProjectPath = parts[2].Trim(trimchars);
+						
+						if ( VSProject.IsProjectFile( vsProjectPath ) )
+							project.Add( new VSProject( Path.Combine( solutionDirectory, vsProjectPath ) ) );
+					}
+
+					line = reader.ReadLine();
+				}
+			}
+
+			project.isDirty = false;
+
+			return project;
+		}
+
+		/// <summary>
+		/// Figure out the proper name to be used when saving a file.
+		/// </summary>
+		public static string ProjectPathFromFile( string path )
+		{
+			string fileName = Path.GetFileNameWithoutExtension( path ) + nunitExtension;
+			return Path.Combine( Path.GetDirectoryName( path ), fileName );
+		}
+
+		#endregion
+
+		#region Properties and Events
+
+		public static int ProjectSeed
+		{
+			get { return projectSeed; }
+			set { projectSeed = value; }
+		}
+
+		/// <summary>
+		/// The path to which a project will be saved.
+		/// </summary>
+		public string ProjectPath
+		{
+			get { return projectPath; }
+			set 
+			{
+				projectPath = Path.GetFullPath( value );
+				isDirty = true;
+			}
+		}
+
+		public string DefaultBasePath
+		{
+			get { return Path.GetDirectoryName( projectPath ); }
+		}
+
+		/// <summary>
+		/// Indicates whether a base path was specified for the project
+		/// </summary>
+		public bool BasePathSpecified
+		{
+			get
+			{
+				return basePath != null && basePath != string.Empty;
+			}
+		}
+
+		/// <summary>
+		/// The base path for the project. Constructor sets
+		/// it to the directory part of the project path.
+		/// </summary>
+		public string BasePath
+		{
+			get 
+			{ 
+				if ( !BasePathSpecified )
+					return DefaultBasePath; 
+				return basePath;
+			}
+			set	
+			{ 
+				basePath = value;
+				
+				if ( basePath != null && basePath != string.Empty 
+					&& !Path.IsPathRooted( basePath ) )
+				{
+					basePath = Path.Combine( 
+						DefaultBasePath, 
+						basePath );	
+				}
+
+				basePath = PathUtils.Canonicalize( basePath );
+				OnProjectChange( ProjectChangeType.Other, null );
+			}
+		}
+
+		/// <summary>
+		/// The name of the project.
+		/// </summary>
+		public string Name
+		{
+			get { return Path.GetFileNameWithoutExtension( projectPath ); }
+		}
+
+		public ProjectConfig ActiveConfig
+		{
+			get 
+			{ 
+				// In case the previous active config was removed
+				if ( activeConfig != null && !configs.Contains( activeConfig ) )
+					activeConfig = null;
+				
+				// In case no active config is set or it was removed
+				if ( activeConfig == null && configs.Count > 0 )
+					activeConfig = configs[0];
+				
+				return activeConfig; 
+			}
+		}
+
+		// Safe access to name of the active config
+		public string ActiveConfigName
+		{
+			get
+			{
+				ProjectConfig config = ActiveConfig;
+				return config == null ? null : config.Name;
+			}
+		}
+
+		public bool IsLoadable
+		{
+			get
+			{
+				return	ActiveConfig != null &&
+					ActiveConfig.Assemblies.Count > 0;
+			}
+		}
+
+		// A project made from a single assembly is treated
+		// as a transparent wrapper for some purposes until
+		// a change is made to it.
+		public bool IsAssemblyWrapper
+		{
+			get { return isAssemblyWrapper; }
+		}
+
+		public string ConfigurationFile
+		{
+			get 
+			{ 
+				// TODO: Check this
+				return isAssemblyWrapper
+					  ? Path.GetFileName( projectPath ) + ".config"
+					  : Path.GetFileNameWithoutExtension( projectPath ) + ".config";
+			}
+		}
+
+		public bool IsDirty
+		{
+			get { return isDirty; }
+			set { isDirty = value; }
+		}
+
+		public ProjectConfigCollection Configs
+		{
+			get { return configs; }
+		}
+
+		public event ProjectEventHandler Changed;
+
+		#endregion
+
+		#region Instance Methods
+
+		public void SetActiveConfig( int index )
+		{
+			activeConfig = configs[index];
+			OnProjectChange( ProjectChangeType.ActiveConfig, activeConfig.Name );
+		}
+
+		public void SetActiveConfig( string name )
+		{
+			foreach( ProjectConfig config in configs )
+			{
+				if ( config.Name == name )
+				{
+					activeConfig = config;
+					OnProjectChange( ProjectChangeType.ActiveConfig, activeConfig.Name );
+					break;
+				}
+			}
+		}
+
+//		public int IndexOf( string name )
+//		{
+//			for( int index = 0; index < configs.Count; index++ )
+//				if( configs[index].Name == name )
+//					return index;
+//
+//			return -1;
+//		}
+
+		public void OnProjectChange( ProjectChangeType type, string configName )
+		{
+			isDirty = true;
+
+			if ( isAssemblyWrapper )
+			{
+				projectPath = Path.ChangeExtension( projectPath, ".nunit" );
+				isAssemblyWrapper = false;
+			}
+
+			if ( Changed != null )
+				Changed( this, new ProjectEventArgs( type, configName ) );
+
+			if ( type == ProjectChangeType.RemoveConfig )
+			{
+				if ( activeConfig == null || activeConfig.Name == configName )
+				{
+					if ( configs.Count > 0 )
+						SetActiveConfig( 0 );
+				}
+			}
+		}
+
+		public void Add( VSProject vsProject )
+		{
+			foreach( VSProjectConfig vsConfig in vsProject.Configs )
+			{
+				string name = vsConfig.Name;
+
+				if ( !configs.Contains( name ) )
+					configs.Add( name );
+
+				ProjectConfig config = this.Configs[name];
+
+				foreach ( string assembly in vsConfig.Assemblies )
+					config.Assemblies.Add( assembly );
+			}
+		}
+
+		public void Load()
+		{
+			XmlTextReader reader = new XmlTextReader( projectPath );
+
+			string activeConfigName = null;
+			ProjectConfig currentConfig = null;
+			
+			try
+			{
+				reader.MoveToContent();
+				if ( reader.NodeType != XmlNodeType.Element || reader.Name != "NUnitProject" )
+					throw new ProjectFormatException( 
+						"Invalid project format: <NUnitProject> expected.", 
+						reader.LineNumber, reader.LinePosition );
+
+				while( reader.Read() )
+					if ( reader.NodeType == XmlNodeType.Element )
+						switch( reader.Name )
+						{
+							case "Settings":
+								if ( reader.NodeType == XmlNodeType.Element )
+								{
+									activeConfigName = reader.GetAttribute( "activeconfig" );
+                                    if (activeConfigName == "NUnitAutoConfig")
+										activeConfigName = NUnitFramework.BuildConfiguration;
+									string appbase = reader.GetAttribute( "appbase" );
+									if ( appbase != null )
+										this.BasePath = appbase;
+								}
+								break;
+
+							case "Config":
+								if ( reader.NodeType == XmlNodeType.Element )
+								{
+									string configName = reader.GetAttribute( "name" );
+									currentConfig = new ProjectConfig( configName );
+									currentConfig.BasePath = reader.GetAttribute( "appbase" );
+									currentConfig.ConfigurationFile = reader.GetAttribute( "configfile" );
+
+									string binpath = reader.GetAttribute( "binpath" );
+									currentConfig.PrivateBinPath = binpath;
+									string type = reader.GetAttribute( "binpathtype" );
+									if ( type == null )
+										if ( binpath == null )
+											currentConfig.BinPathType = BinPathType.Auto;
+										else
+											currentConfig.BinPathType = BinPathType.Manual;
+									else
+										currentConfig.BinPathType = (BinPathType)Enum.Parse( typeof( BinPathType ), type, true );
+									Configs.Add( currentConfig );
+									if ( configName == activeConfigName )
+										activeConfig = currentConfig;
+								}
+								else if ( reader.NodeType == XmlNodeType.EndElement )
+									currentConfig = null;
+								break;
+
+							case "assembly":
+								if ( reader.NodeType == XmlNodeType.Element && currentConfig != null )
+								{
+									string path = reader.GetAttribute( "path" );
+									currentConfig.Assemblies.Add( 
+										Path.Combine( currentConfig.BasePath, path ) );
+								}
+								break;
+
+							default:
+								break;
+						}
+
+				this.IsDirty = false;
+			}
+			catch( FileNotFoundException )
+			{
+				throw;
+			}
+			catch( XmlException e )
+			{
+				throw new ProjectFormatException(
+					string.Format( "Invalid project format: {0}", e.Message ),
+					e.LineNumber, e.LinePosition );
+			}
+			catch( Exception e )
+			{
+				throw new ProjectFormatException( 
+					string.Format( "Invalid project format: {0} Line {1}, Position {2}", 
+					e.Message, reader.LineNumber, reader.LinePosition ),
+					reader.LineNumber, reader.LinePosition );
+			}
+			finally
+			{
+				reader.Close();
+			}
+		}
+
+		public void Save()
+		{
+			projectPath = ProjectPathFromFile( projectPath );
+
+			XmlTextWriter writer = new XmlTextWriter(  projectPath, System.Text.Encoding.UTF8 );
+			writer.Formatting = Formatting.Indented;
+
+			writer.WriteStartElement( "NUnitProject" );
+			
+			if ( configs.Count > 0 || this.BasePath != this.DefaultBasePath )
+			{
+				writer.WriteStartElement( "Settings" );
+				if ( configs.Count > 0 )
+					writer.WriteAttributeString( "activeconfig", ActiveConfigName );
+				if ( this.BasePath != this.DefaultBasePath )
+					writer.WriteAttributeString( "appbase", this.BasePath );
+				writer.WriteEndElement();
+			}
+			
+			foreach( ProjectConfig config in Configs )
+			{
+				writer.WriteStartElement( "Config" );
+				writer.WriteAttributeString( "name", config.Name );
+				string appbase = config.BasePath;
+				if ( !PathUtils.SamePathOrUnder( this.BasePath, appbase ) )
+					writer.WriteAttributeString( "appbase", appbase );
+				else if ( config.RelativeBasePath != null )
+					writer.WriteAttributeString( "appbase", config.RelativeBasePath );
+				
+				string configFile = config.ConfigurationFile;
+				if ( configFile != null && configFile != this.ConfigurationFile )
+					writer.WriteAttributeString( "configfile", config.ConfigurationFile );
+				
+				if ( config.BinPathType == BinPathType.Manual )
+					writer.WriteAttributeString( "binpath", config.PrivateBinPath );
+				else
+					writer.WriteAttributeString( "binpathtype", config.BinPathType.ToString() );
+
+				foreach( string assembly in config.Assemblies )
+				{
+					writer.WriteStartElement( "assembly" );
+					writer.WriteAttributeString( "path", PathUtils.RelativePath( config.BasePath, assembly ) );
+					writer.WriteEndElement();
+				}
+
+				writer.WriteEndElement();
+			}
+
+			writer.WriteEndElement();
+
+			writer.Close();
+			this.IsDirty = false;
+
+			// Once we save a project, it's no longer
+			// loaded as an assembly wrapper on reload.
+			this.isAssemblyWrapper = false;
+		}
+
+		public void Save( string projectPath )
+		{
+			this.ProjectPath = projectPath;
+			Save();
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/NUnitRegistry.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/NUnitRegistry.cs
@@ -1,141 +1,141 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using System.IO;
-	using System.Text;
-	using Microsoft.Win32;
-
-	/// <summary>
-	/// NUnitRegistry provides static properties for NUnit's
-	/// CurrentUser and LocalMachine subkeys.
-	/// </summary>
-	public class NUnitRegistry
-	{
-		public static readonly string KEY = 
-			@"Software\nunit.org\Nunit\2.4";
-
-		public static readonly string LEGACY_KEY = 
-			@"Software\Nascent Software\Nunit\";
-
-		private static bool testMode = false;
-		public static readonly string TEST_KEY = 
-			@"Software\nunit.org\Nunit-Test";
-
-
-		/// <summary>
-		/// Prevent construction of object
-		/// </summary>
-		private NUnitRegistry() { }
-
-		public static bool TestMode
-		{
-			get { return testMode; }
-			set { testMode = value; }
-		}
-
-		/// <summary>
-		/// Registry subkey for the current user
-		/// </summary>
-		public static RegistryKey CurrentUser
-		{
-			get 
-			{
-				if ( testMode )
-					return Registry.CurrentUser.CreateSubKey( TEST_KEY );
-				
-				RegistryKey newKey = Registry.CurrentUser.OpenSubKey( KEY, true );
-				if (newKey == null)
-				{
-					newKey = Registry.CurrentUser.CreateSubKey( KEY );
-					RegistryKey oldKey = Registry.CurrentUser.OpenSubKey( LEGACY_KEY );
-					if ( oldKey != null )
-					{
-						CopyKey( oldKey, newKey );
-						oldKey.Close();
-					}
-				}
-
-				return newKey; 
-			}
-		}
-
-		public static bool KeyExists( string subkey )
-		{
-			using ( RegistryKey key = Registry.CurrentUser.OpenSubKey( subkey, true ) )
-			{
-				return key != null;
-			} 
-		}
-
-		/// <summary>
-		/// Registry subkey for the local machine
-		/// </summary>
-		public static RegistryKey LocalMachine
-		{
-			get { return Registry.LocalMachine.CreateSubKey( testMode ? TEST_KEY : KEY ); }
-		}
-
-		public static void ClearTestKeys()
-		{
-			ClearSubKey( Registry.CurrentUser, TEST_KEY );
-			//ClearSubKey( Registry.LocalMachine, TEST_KEY );	
-		}
-
-		/// <summary>
-		/// Static helper method that clears out the contents of a subkey
-		/// </summary>
-		/// <param name="baseKey">Base key for the subkey</param>
-		/// <param name="subKey">Name of the subkey</param>
-		private static void ClearSubKey( RegistryKey baseKey, string subKey )
-		{
-			using( RegistryKey key = baseKey.OpenSubKey( subKey, true ) )
-			{
-				if ( key != null ) ClearKey( key );
-			}
-		}
-
-		/// <summary>
-		/// Static function that clears out the contents of a key
-		/// </summary>
-		/// <param name="key">Key to be cleared</param>
-		public static void ClearKey( RegistryKey key )
-		{
-			foreach( string name in key.GetValueNames() )
-				key.DeleteValue( name );
-
-			// TODO: This throws under Mono - Restore when bug is fixed
-			//foreach( string name in key.GetSubKeyNames() )
-			//    key.DeleteSubKeyTree( name );
-
-			foreach (string name in key.GetSubKeyNames())
-			{
-				ClearSubKey(key, name);
-				key.DeleteSubKey( name );
-			}
-		}
-
-		/// <summary>
-		/// Static method that copies the contents of one key to another
-		/// </summary>
-		/// <param name="fromKey">The source key for the copy</param>
-		/// <param name="toKey">The target key for the copy</param>
-		public static void CopyKey( RegistryKey fromKey, RegistryKey toKey )
-		{
-			foreach( string name in fromKey.GetValueNames() )
-				toKey.SetValue( name, fromKey.GetValue( name ) );
-
-			foreach( string name in fromKey.GetSubKeyNames() )
-				using( RegistryKey fromSubKey = fromKey.OpenSubKey( name ) )
-				using( RegistryKey toSubKey = toKey.CreateSubKey( name ) )
-				{
-					CopyKey( fromSubKey, toSubKey );
-				}
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using System.IO;
+	using System.Text;
+	using Microsoft.Win32;
+
+	/// <summary>
+	/// NUnitRegistry provides static properties for NUnit's
+	/// CurrentUser and LocalMachine subkeys.
+	/// </summary>
+	public class NUnitRegistry
+	{
+		public static readonly string KEY = 
+			@"Software\nunit.org\Nunit\2.4";
+
+		public static readonly string LEGACY_KEY = 
+			@"Software\Nascent Software\Nunit\";
+
+		private static bool testMode = false;
+		public static readonly string TEST_KEY = 
+			@"Software\nunit.org\Nunit-Test";
+
+
+		/// <summary>
+		/// Prevent construction of object
+		/// </summary>
+		private NUnitRegistry() { }
+
+		public static bool TestMode
+		{
+			get { return testMode; }
+			set { testMode = value; }
+		}
+
+		/// <summary>
+		/// Registry subkey for the current user
+		/// </summary>
+		public static RegistryKey CurrentUser
+		{
+			get 
+			{
+				if ( testMode )
+					return Registry.CurrentUser.CreateSubKey( TEST_KEY );
+				
+				RegistryKey newKey = Registry.CurrentUser.OpenSubKey( KEY, true );
+				if (newKey == null)
+				{
+					newKey = Registry.CurrentUser.CreateSubKey( KEY );
+					RegistryKey oldKey = Registry.CurrentUser.OpenSubKey( LEGACY_KEY );
+					if ( oldKey != null )
+					{
+						CopyKey( oldKey, newKey );
+						oldKey.Close();
+					}
+				}
+
+				return newKey; 
+			}
+		}
+
+		public static bool KeyExists( string subkey )
+		{
+			using ( RegistryKey key = Registry.CurrentUser.OpenSubKey( subkey, true ) )
+			{
+				return key != null;
+			} 
+		}
+
+		/// <summary>
+		/// Registry subkey for the local machine
+		/// </summary>
+		public static RegistryKey LocalMachine
+		{
+			get { return Registry.LocalMachine.CreateSubKey( testMode ? TEST_KEY : KEY ); }
+		}
+
+		public static void ClearTestKeys()
+		{
+			ClearSubKey( Registry.CurrentUser, TEST_KEY );
+			//ClearSubKey( Registry.LocalMachine, TEST_KEY );	
+		}
+
+		/// <summary>
+		/// Static helper method that clears out the contents of a subkey
+		/// </summary>
+		/// <param name="baseKey">Base key for the subkey</param>
+		/// <param name="subKey">Name of the subkey</param>
+		private static void ClearSubKey( RegistryKey baseKey, string subKey )
+		{
+			using( RegistryKey key = baseKey.OpenSubKey( subKey, true ) )
+			{
+				if ( key != null ) ClearKey( key );
+			}
+		}
+
+		/// <summary>
+		/// Static function that clears out the contents of a key
+		/// </summary>
+		/// <param name="key">Key to be cleared</param>
+		public static void ClearKey( RegistryKey key )
+		{
+			foreach( string name in key.GetValueNames() )
+				key.DeleteValue( name );
+
+			// TODO: This throws under Mono - Restore when bug is fixed
+			//foreach( string name in key.GetSubKeyNames() )
+			//    key.DeleteSubKeyTree( name );
+
+			foreach (string name in key.GetSubKeyNames())
+			{
+				ClearSubKey(key, name);
+				key.DeleteSubKey( name );
+			}
+		}
+
+		/// <summary>
+		/// Static method that copies the contents of one key to another
+		/// </summary>
+		/// <param name="fromKey">The source key for the copy</param>
+		/// <param name="toKey">The target key for the copy</param>
+		public static void CopyKey( RegistryKey fromKey, RegistryKey toKey )
+		{
+			foreach( string name in fromKey.GetValueNames() )
+				toKey.SetValue( name, fromKey.GetValue( name ) );
+
+			foreach( string name in fromKey.GetSubKeyNames() )
+				using( RegistryKey fromSubKey = fromKey.OpenSubKey( name ) )
+				using( RegistryKey toSubKey = toKey.CreateSubKey( name ) )
+				{
+					CopyKey( fromSubKey, toSubKey );
+				}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/PathUtils.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/PathUtils.cs
@@ -1,209 +1,209 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Text;
-using System.Reflection;
-using System.Collections;
-using System.Runtime.InteropServices;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Static methods for manipulating project paths, including both directories
-	/// and files. Some synonyms for System.Path methods are included as well.
-	/// </summary> 
-	public class PathUtils
-	{
-		public const uint FILE_ATTRIBUTE_DIRECTORY  = 0x00000010;  
-		public const uint FILE_ATTRIBUTE_NORMAL     = 0x00000080;  
-		public const int MAX_PATH = 256;
-
-		protected static char DirectorySeparatorChar = Path.DirectorySeparatorChar;
-		protected static char AltDirectorySeparatorChar = Path.AltDirectorySeparatorChar;
-
-		#region Public methods
-
-		public static bool IsAssemblyFileType( string path )
-		{
-			string extension = Path.GetExtension( path ).ToLower();
-			return extension == ".dll" || extension == ".exe";
-		}
-
-		/// <summary>
-		/// Returns the relative path from a base directory to another
-		/// directory or file.
-		/// </summary>
-		public static string RelativePath( string from, string to )
-		{
-			if (from == null)
-				throw new ArgumentNullException (from);
-			if (to == null)
-				throw new ArgumentNullException (to);
-			if (!Path.IsPathRooted (to))
-				return to;
-			if (Path.GetPathRoot (from) != Path.GetPathRoot (to))
-				return null;
-
-			string[] _from = from.Split (PathUtils.DirectorySeparatorChar, 
-				PathUtils.AltDirectorySeparatorChar);
-			string[] _to   =   to.Split (PathUtils.DirectorySeparatorChar, 
-				PathUtils.AltDirectorySeparatorChar);
-
-			StringBuilder sb = new StringBuilder (Math.Max (from.Length, to.Length));
-
-			int last_common, min = Math.Min (_from.Length, _to.Length);
-			for (last_common = 0; last_common < min;  ++last_common) 
-			{
-				if (!_from [last_common].Equals (_to [last_common]))
-					break;
-			}
-
-			if (last_common < _from.Length)
-				sb.Append ("..");
-			for (int i = last_common + 1; i < _from.Length; ++i) 
-			{
-				sb.Append (PathUtils.DirectorySeparatorChar).Append ("..");
-			}
-
-			if (sb.Length > 0)
-				sb.Append (PathUtils.DirectorySeparatorChar);
-			if (last_common < _to.Length)
-				sb.Append (_to [last_common]);
-			for (int i = last_common + 1; i < _to.Length; ++i) 
-			{
-				sb.Append (PathUtils.DirectorySeparatorChar).Append (_to [i]);
-			}
-
-			return sb.ToString ();
-		}
-
-		/// <summary>
-		/// Return the canonical form of a path.
-		/// </summary>
-		public static string Canonicalize( string path )
-		{
-			ArrayList parts = new ArrayList(
-				path.Split( DirectorySeparatorChar, AltDirectorySeparatorChar ) );
-
-			for( int index = 0; index < parts.Count; )
-			{
-				string part = (string)parts[index];
-		
-				switch( part )
-				{
-					case ".":
-						parts.RemoveAt( index );
-						break;
-				
-					case "..":
-						parts.RemoveAt( index );
-						if ( index > 0 )
-							parts.RemoveAt( --index );
-						break;
-					default:
-						index++;
-						break;
-				}
-			}
-	
-			return String.Join( DirectorySeparatorChar.ToString(), (string[])parts.ToArray( typeof( string ) ) );
-		}
-
-		/// <summary>
-		/// True if the two paths are the same. However, two paths
-		/// to the same file or directory using different network
-		/// shares or drive letters are not treated as equal.
-		/// </summary>
-		public static bool SamePath( string path1, string path2 )
-		{
-			return string.Compare( Canonicalize(path1), Canonicalize(path2), PathUtils.IsWindows() ) == 0;
-		}
-
-		/// <summary>
-		/// True if the two paths are the same or if the second is
-		/// directly or indirectly under the first. Note that paths 
-		/// using different network shares or drive letters are 
-		/// considered unrelated, even if they end up referencing
-		/// the same subtrees in the file system.
-		/// </summary>
-		public static bool SamePathOrUnder( string path1, string path2 )
-		{
-			path1 = Canonicalize( path1 );
-			path2 = Canonicalize( path2 );
-
-			int length1 = path1.Length;
-			int length2 = path2.Length;
-
-			// if path1 is longer, then path2 can't be under it
-			if ( length1 > length2 )
-				return false;
-
-			// if lengths are the same, check for equality
-			if ( length1 == length2 )
-				//return path1.ToLower() == path2.ToLower();
-				return string.Compare( path1, path2, IsWindows() ) == 0;
-
-			// path 2 is longer than path 1: see if initial parts match
-			//if ( path1.ToLower() != path2.Substring( 0, length1 ).ToLower() )
-			if ( string.Compare( path1, path2.Substring( 0, length1 ), IsWindows() ) != 0 )
-				return false;
-			
-			// must match through or up to a directory separator boundary
-			return	path2[length1-1] == DirectorySeparatorChar ||
-				path2[length1] == DirectorySeparatorChar;
-		}
-
-		public static string Combine( string path1, params string[] morePaths )
-		{
-			string result = path1;
-			foreach( string path in morePaths )
-				result = Path.Combine( result, path );
-			return result;
-		}
-
-		// TODO: This logic should be in shared source
-		public static string GetAssemblyPath( Assembly assembly )
-		{
-			string uri = assembly.CodeBase;
-
-			// If it wasn't loaded locally, use the Location
-			if ( !uri.StartsWith( Uri.UriSchemeFile ) )
-				return assembly.Location;
-
-			return GetAssemblyPathFromFileUri( uri );
-		}
-
-		// Separate method for testability
-		public static string GetAssemblyPathFromFileUri( string uri )
-		{
-			// Skip over the file://
-			int start = Uri.UriSchemeFile.Length + Uri.SchemeDelimiter.Length;
-			
-			if ( PathUtils.DirectorySeparatorChar == '\\' )
-			{
-				if ( uri[start] == '/' && uri[start+2] == ':' )
-					++start;
-			}
-			else
-			{
-				if ( uri[start] != '/' )
-					--start;
-			}
-
-			return uri.Substring( start );
-		}
-		#endregion
-
-		#region Helper Methods
-		private static bool IsWindows()
-		{
-			return PathUtils.DirectorySeparatorChar == '\\';
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Text;
+using System.Reflection;
+using System.Collections;
+using System.Runtime.InteropServices;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Static methods for manipulating project paths, including both directories
+	/// and files. Some synonyms for System.Path methods are included as well.
+	/// </summary> 
+	public class PathUtils
+	{
+		public const uint FILE_ATTRIBUTE_DIRECTORY  = 0x00000010;  
+		public const uint FILE_ATTRIBUTE_NORMAL     = 0x00000080;  
+		public const int MAX_PATH = 256;
+
+		protected static char DirectorySeparatorChar = Path.DirectorySeparatorChar;
+		protected static char AltDirectorySeparatorChar = Path.AltDirectorySeparatorChar;
+
+		#region Public methods
+
+		public static bool IsAssemblyFileType( string path )
+		{
+			string extension = Path.GetExtension( path ).ToLower();
+			return extension == ".dll" || extension == ".exe";
+		}
+
+		/// <summary>
+		/// Returns the relative path from a base directory to another
+		/// directory or file.
+		/// </summary>
+		public static string RelativePath( string from, string to )
+		{
+			if (from == null)
+				throw new ArgumentNullException (from);
+			if (to == null)
+				throw new ArgumentNullException (to);
+			if (!Path.IsPathRooted (to))
+				return to;
+			if (Path.GetPathRoot (from) != Path.GetPathRoot (to))
+				return null;
+
+			string[] _from = from.Split (PathUtils.DirectorySeparatorChar, 
+				PathUtils.AltDirectorySeparatorChar);
+			string[] _to   =   to.Split (PathUtils.DirectorySeparatorChar, 
+				PathUtils.AltDirectorySeparatorChar);
+
+			StringBuilder sb = new StringBuilder (Math.Max (from.Length, to.Length));
+
+			int last_common, min = Math.Min (_from.Length, _to.Length);
+			for (last_common = 0; last_common < min;  ++last_common) 
+			{
+				if (!_from [last_common].Equals (_to [last_common]))
+					break;
+			}
+
+			if (last_common < _from.Length)
+				sb.Append ("..");
+			for (int i = last_common + 1; i < _from.Length; ++i) 
+			{
+				sb.Append (PathUtils.DirectorySeparatorChar).Append ("..");
+			}
+
+			if (sb.Length > 0)
+				sb.Append (PathUtils.DirectorySeparatorChar);
+			if (last_common < _to.Length)
+				sb.Append (_to [last_common]);
+			for (int i = last_common + 1; i < _to.Length; ++i) 
+			{
+				sb.Append (PathUtils.DirectorySeparatorChar).Append (_to [i]);
+			}
+
+			return sb.ToString ();
+		}
+
+		/// <summary>
+		/// Return the canonical form of a path.
+		/// </summary>
+		public static string Canonicalize( string path )
+		{
+			ArrayList parts = new ArrayList(
+				path.Split( DirectorySeparatorChar, AltDirectorySeparatorChar ) );
+
+			for( int index = 0; index < parts.Count; )
+			{
+				string part = (string)parts[index];
+		
+				switch( part )
+				{
+					case ".":
+						parts.RemoveAt( index );
+						break;
+				
+					case "..":
+						parts.RemoveAt( index );
+						if ( index > 0 )
+							parts.RemoveAt( --index );
+						break;
+					default:
+						index++;
+						break;
+				}
+			}
+	
+			return String.Join( DirectorySeparatorChar.ToString(), (string[])parts.ToArray( typeof( string ) ) );
+		}
+
+		/// <summary>
+		/// True if the two paths are the same. However, two paths
+		/// to the same file or directory using different network
+		/// shares or drive letters are not treated as equal.
+		/// </summary>
+		public static bool SamePath( string path1, string path2 )
+		{
+			return string.Compare( Canonicalize(path1), Canonicalize(path2), PathUtils.IsWindows() ) == 0;
+		}
+
+		/// <summary>
+		/// True if the two paths are the same or if the second is
+		/// directly or indirectly under the first. Note that paths 
+		/// using different network shares or drive letters are 
+		/// considered unrelated, even if they end up referencing
+		/// the same subtrees in the file system.
+		/// </summary>
+		public static bool SamePathOrUnder( string path1, string path2 )
+		{
+			path1 = Canonicalize( path1 );
+			path2 = Canonicalize( path2 );
+
+			int length1 = path1.Length;
+			int length2 = path2.Length;
+
+			// if path1 is longer, then path2 can't be under it
+			if ( length1 > length2 )
+				return false;
+
+			// if lengths are the same, check for equality
+			if ( length1 == length2 )
+				//return path1.ToLower() == path2.ToLower();
+				return string.Compare( path1, path2, IsWindows() ) == 0;
+
+			// path 2 is longer than path 1: see if initial parts match
+			//if ( path1.ToLower() != path2.Substring( 0, length1 ).ToLower() )
+			if ( string.Compare( path1, path2.Substring( 0, length1 ), IsWindows() ) != 0 )
+				return false;
+			
+			// must match through or up to a directory separator boundary
+			return	path2[length1-1] == DirectorySeparatorChar ||
+				path2[length1] == DirectorySeparatorChar;
+		}
+
+		public static string Combine( string path1, params string[] morePaths )
+		{
+			string result = path1;
+			foreach( string path in morePaths )
+				result = Path.Combine( result, path );
+			return result;
+		}
+
+		// TODO: This logic should be in shared source
+		public static string GetAssemblyPath( Assembly assembly )
+		{
+			string uri = assembly.CodeBase;
+
+			// If it wasn't loaded locally, use the Location
+			if ( !uri.StartsWith( Uri.UriSchemeFile ) )
+				return assembly.Location;
+
+			return GetAssemblyPathFromFileUri( uri );
+		}
+
+		// Separate method for testability
+		public static string GetAssemblyPathFromFileUri( string uri )
+		{
+			// Skip over the file://
+			int start = Uri.UriSchemeFile.Length + Uri.SchemeDelimiter.Length;
+			
+			if ( PathUtils.DirectorySeparatorChar == '\\' )
+			{
+				if ( uri[start] == '/' && uri[start+2] == ':' )
+					++start;
+			}
+			else
+			{
+				if ( uri[start] != '/' )
+					--start;
+			}
+
+			return uri.Substring( start );
+		}
+		#endregion
+
+		#region Helper Methods
+		private static bool IsWindows()
+		{
+			return PathUtils.DirectorySeparatorChar == '\\';
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ProcessRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ProcessRunner.cs
@@ -1,58 +1,58 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Diagnostics;
-using System.Reflection;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Proxies;
-using System.Runtime.Remoting.Services;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for ProcessRunner.
-	/// </summary>
-	public class ProcessRunner : ProxyTestRunner, IDisposable
-	{
-		private TestAgent agent;
-
-		#region Constructors
-		public ProcessRunner() : base( 0 ) { }
-
-		public ProcessRunner( int runnerID ) : base( runnerID ) { }
-		#endregion
-
-		public override bool Load(TestPackage package)
-		{
-			if ( this.agent == null )
-				this.agent = Services.TestAgency.GetAgent( AgentType.ProcessAgent, 5000 );		
-	
-			if ( this.TestRunner == null )
-				this.TestRunner = agent.CreateRunner(this.runnerID);
-
-			return base.Load (package);
-		}
-
-		#region IDisposable Members
-		public void Dispose()
-		{
-			if ( TestRunner != null )
-				this.TestRunner.Unload();
-
-			if ( this.agent != null )
-				Services.TestAgency.ReleaseAgent(this.agent);
-
-			this.TestRunner = null;
-			this.agent = null;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Diagnostics;
+using System.Reflection;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Services;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for ProcessRunner.
+	/// </summary>
+	public class ProcessRunner : ProxyTestRunner, IDisposable
+	{
+		private TestAgent agent;
+
+		#region Constructors
+		public ProcessRunner() : base( 0 ) { }
+
+		public ProcessRunner( int runnerID ) : base( runnerID ) { }
+		#endregion
+
+		public override bool Load(TestPackage package)
+		{
+			if ( this.agent == null )
+				this.agent = Services.TestAgency.GetAgent( AgentType.ProcessAgent, 5000 );		
+	
+			if ( this.TestRunner == null )
+				this.TestRunner = agent.CreateRunner(this.runnerID);
+
+			return base.Load (package);
+		}
+
+		#region IDisposable Members
+		public void Dispose()
+		{
+			if ( TestRunner != null )
+				this.TestRunner.Unload();
+
+			if ( this.agent != null )
+				Services.TestAgency.ReleaseAgent(this.agent);
+
+			this.TestRunner = null;
+			this.agent = null;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ProjectConfig.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ProjectConfig.cs
@@ -1,255 +1,255 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Text;
-using System.Collections;
-using System.IO;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	public enum BinPathType
-	{
-		Auto,
-		Manual,
-		None
-	}
-
-	public class ProjectConfig
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// The name of this config
-		/// </summary>
-		private string name;
-
-		/// <summary>
-		/// IProject interface of containing project
-		/// </summary>
-		protected NUnitProject project = null;
-
-		/// <summary>
-		/// List of the names of the assemblies
-		/// </summary>
-		private AssemblyList assemblies;
-
-		/// <summary>
-		/// Base path specific to this configuration
-		/// </summary>
-		private string basePath;
-
-		/// <summary>
-		/// Our configuration file, if specified
-		/// </summary>
-		private string configFile;
-
-		/// <summary>
-		/// Private bin path, if specified
-		/// </summary>
-		private string binPath;
-
-		/// <summary>
-		/// True if assembly paths should be added to bin path
-		/// </summary>
-		private BinPathType binPathType = BinPathType.Auto;
-
-		#endregion
-
-		#region Constructor
-		public ProjectConfig( string name )
-		{
-			this.name = name;
-			this.assemblies = new AssemblyList();
-			assemblies.Changed += new EventHandler( assemblies_Changed );
-		}
-		#endregion
-
-		#region Properties and Events
-
-		public event EventHandler Changed;
-
-		public NUnitProject Project
-		{
-//			get { return project; }
-			set { project = value; }
-		}
-
-		public string Name
-		{
-			get { return name; }
-			set 
-			{
-				if ( name != value )
-				{
-					name = value; 
-					FireChangedEvent();
-				}
-			}
-		}
-
-		private bool BasePathSpecified
-		{
-			get 
-			{
-				return project.BasePathSpecified || this.basePath != null && this.basePath != "";
-			}
-		}
-
-		/// <summary>
-		/// The base directory for this config - used
-		/// as the application base for loading tests.
-		/// </summary>
-		public string BasePath
-		{
-			get
-			{ 
-				if ( project == null || project.BasePath == null )
-					return basePath;
-
-				if ( basePath == null )
-					return project.BasePath;
-
-				return Path.Combine( project.BasePath, basePath );
-			}
-			set 
-			{
-				if ( BasePath != value )
-				{
-					basePath = value;
-					FireChangedEvent();
-				}
-			}
-		}
-
-		/// <summary>
-		/// The base path relative to the project base
-		/// </summary>
-		public string RelativeBasePath
-		{
-			get
-			{
-				if ( project == null || basePath == null || !Path.IsPathRooted( basePath ) )
-					return basePath;
-
-				return PathUtils.RelativePath( project.BasePath, basePath );
-			}
-		}
-
-		private bool ConfigurationFileSpecified
-		{
-			get { return configFile != null; }
-		}
-
-		public string ConfigurationFile
-		{
-			get 
-			{ 
-				return configFile == null && project != null
-					? project.ConfigurationFile 
-					: configFile;
-			}
-			set
-			{
-				if ( ConfigurationFile != value )
-				{
-					configFile = value;
-					FireChangedEvent();
-				}
-			}
-		}
-
-		public string ConfigurationFilePath
-		{
-			get
-			{		
-				return BasePath != null && ConfigurationFile != null
-					? Path.Combine( BasePath, ConfigurationFile )
-					: ConfigurationFile;
-			}
-		}
-
-		private bool PrivateBinPathSpecified
-		{
-			get { return binPath != null; }
-		}
-
-		/// <summary>
-		/// The Path.PathSeparator-separated path containing all the
-		/// assemblies in the list.
-		/// </summary>
-		public string PrivateBinPath
-		{
-			get	{ return binPath; }
-			set
-			{
-				if ( binPath != value )
-				{
-					binPath = value;
-					binPathType = binPath == null ? BinPathType.Auto : BinPathType.Manual;
-					FireChangedEvent();
-				}
-			}
-		}
-
-		/// <summary>
-		/// How our PrivateBinPath is generated
-		/// </summary>
-		public BinPathType BinPathType
-		{
-			get { return binPathType; }
-			set 
-			{
-				if ( binPathType != value )
-				{
-					binPathType = value;
-					FireChangedEvent();
-				}
-			}
-		}
-
-		/// <summary>
-		/// Return our AssemblyList
-		/// </summary>
-		public AssemblyList Assemblies
-		{
-			get { return assemblies; }
-		}
-		#endregion
-
-		public TestPackage MakeTestPackage()
-		{
-			TestPackage package = new TestPackage( project.ProjectPath );
-
-			if ( !project.IsAssemblyWrapper )
-				foreach ( string assembly in this.Assemblies )
-					package.Assemblies.Add( assembly );
-
-			if ( this.BasePathSpecified || this.PrivateBinPathSpecified || this.ConfigurationFileSpecified )
-			{
-				package.BasePath = this.BasePath;
-				package.PrivateBinPath = this.PrivateBinPath;
-				package.ConfigurationFile = this.ConfigurationFile;
-			}
-
-			package.AutoBinPath = this.BinPathType == BinPathType.Auto;
-
-			return package;
-		}
-
-		private void assemblies_Changed( object sender, EventArgs e )
-		{
-			FireChangedEvent();
-		}
-
-		private void FireChangedEvent()
-		{
-			if ( Changed != null )
-				Changed( this, EventArgs.Empty );
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Text;
+using System.Collections;
+using System.IO;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	public enum BinPathType
+	{
+		Auto,
+		Manual,
+		None
+	}
+
+	public class ProjectConfig
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// The name of this config
+		/// </summary>
+		private string name;
+
+		/// <summary>
+		/// IProject interface of containing project
+		/// </summary>
+		protected NUnitProject project = null;
+
+		/// <summary>
+		/// List of the names of the assemblies
+		/// </summary>
+		private AssemblyList assemblies;
+
+		/// <summary>
+		/// Base path specific to this configuration
+		/// </summary>
+		private string basePath;
+
+		/// <summary>
+		/// Our configuration file, if specified
+		/// </summary>
+		private string configFile;
+
+		/// <summary>
+		/// Private bin path, if specified
+		/// </summary>
+		private string binPath;
+
+		/// <summary>
+		/// True if assembly paths should be added to bin path
+		/// </summary>
+		private BinPathType binPathType = BinPathType.Auto;
+
+		#endregion
+
+		#region Constructor
+		public ProjectConfig( string name )
+		{
+			this.name = name;
+			this.assemblies = new AssemblyList();
+			assemblies.Changed += new EventHandler( assemblies_Changed );
+		}
+		#endregion
+
+		#region Properties and Events
+
+		public event EventHandler Changed;
+
+		public NUnitProject Project
+		{
+//			get { return project; }
+			set { project = value; }
+		}
+
+		public string Name
+		{
+			get { return name; }
+			set 
+			{
+				if ( name != value )
+				{
+					name = value; 
+					FireChangedEvent();
+				}
+			}
+		}
+
+		private bool BasePathSpecified
+		{
+			get 
+			{
+				return project.BasePathSpecified || this.basePath != null && this.basePath != "";
+			}
+		}
+
+		/// <summary>
+		/// The base directory for this config - used
+		/// as the application base for loading tests.
+		/// </summary>
+		public string BasePath
+		{
+			get
+			{ 
+				if ( project == null || project.BasePath == null )
+					return basePath;
+
+				if ( basePath == null )
+					return project.BasePath;
+
+				return Path.Combine( project.BasePath, basePath );
+			}
+			set 
+			{
+				if ( BasePath != value )
+				{
+					basePath = value;
+					FireChangedEvent();
+				}
+			}
+		}
+
+		/// <summary>
+		/// The base path relative to the project base
+		/// </summary>
+		public string RelativeBasePath
+		{
+			get
+			{
+				if ( project == null || basePath == null || !Path.IsPathRooted( basePath ) )
+					return basePath;
+
+				return PathUtils.RelativePath( project.BasePath, basePath );
+			}
+		}
+
+		private bool ConfigurationFileSpecified
+		{
+			get { return configFile != null; }
+		}
+
+		public string ConfigurationFile
+		{
+			get 
+			{ 
+				return configFile == null && project != null
+					? project.ConfigurationFile 
+					: configFile;
+			}
+			set
+			{
+				if ( ConfigurationFile != value )
+				{
+					configFile = value;
+					FireChangedEvent();
+				}
+			}
+		}
+
+		public string ConfigurationFilePath
+		{
+			get
+			{		
+				return BasePath != null && ConfigurationFile != null
+					? Path.Combine( BasePath, ConfigurationFile )
+					: ConfigurationFile;
+			}
+		}
+
+		private bool PrivateBinPathSpecified
+		{
+			get { return binPath != null; }
+		}
+
+		/// <summary>
+		/// The Path.PathSeparator-separated path containing all the
+		/// assemblies in the list.
+		/// </summary>
+		public string PrivateBinPath
+		{
+			get	{ return binPath; }
+			set
+			{
+				if ( binPath != value )
+				{
+					binPath = value;
+					binPathType = binPath == null ? BinPathType.Auto : BinPathType.Manual;
+					FireChangedEvent();
+				}
+			}
+		}
+
+		/// <summary>
+		/// How our PrivateBinPath is generated
+		/// </summary>
+		public BinPathType BinPathType
+		{
+			get { return binPathType; }
+			set 
+			{
+				if ( binPathType != value )
+				{
+					binPathType = value;
+					FireChangedEvent();
+				}
+			}
+		}
+
+		/// <summary>
+		/// Return our AssemblyList
+		/// </summary>
+		public AssemblyList Assemblies
+		{
+			get { return assemblies; }
+		}
+		#endregion
+
+		public TestPackage MakeTestPackage()
+		{
+			TestPackage package = new TestPackage( project.ProjectPath );
+
+			if ( !project.IsAssemblyWrapper )
+				foreach ( string assembly in this.Assemblies )
+					package.Assemblies.Add( assembly );
+
+			if ( this.BasePathSpecified || this.PrivateBinPathSpecified || this.ConfigurationFileSpecified )
+			{
+				package.BasePath = this.BasePath;
+				package.PrivateBinPath = this.PrivateBinPath;
+				package.ConfigurationFile = this.ConfigurationFile;
+			}
+
+			package.AutoBinPath = this.BinPathType == BinPathType.Auto;
+
+			return package;
+		}
+
+		private void assemblies_Changed( object sender, EventArgs e )
+		{
+			FireChangedEvent();
+		}
+
+		private void FireChangedEvent()
+		{
+			if ( Changed != null )
+				Changed( this, EventArgs.Empty );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ProjectConfigCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ProjectConfigCollection.cs
@@ -1,103 +1,103 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for ProjectConfigCollection.
-	/// </summary>
-	public class ProjectConfigCollection : CollectionBase
-	{
-		protected NUnitProject project;
-
-		public ProjectConfigCollection( NUnitProject project ) 
-		{ 
-			this.project = project;
-		}
-
-		#region Properties
-		public ProjectConfig this[int index]
-		{
-			get { return (ProjectConfig)InnerList[index]; }
-		}
-
-		public ProjectConfig this[string name]
-		{
-			get 
-			{ 
-				int index = IndexOf( name );
-				return index >= 0 ? (ProjectConfig)InnerList[index]: null;
-			}
-		}
-		#endregion
-
-		#region Methods
-		public void Add( ProjectConfig config )
-		{
-			List.Add( config );
-			config.Project = this.project;
-			config.Changed += new EventHandler(config_Changed);
-		}
-
-		public void Add( string name )
-		{
-			Add( new ProjectConfig( name ) );
-		}
-
-		public void Remove( string name )
-		{
-			int index = IndexOf( name );
-			if ( index >= 0 )
-			{
-				RemoveAt( index );
-			}
-		}
-
-		private int IndexOf( string name )
-		{
-			for( int index = 0; index < InnerList.Count; index++ )
-			{
-				ProjectConfig config = (ProjectConfig)InnerList[index];
-				if( config.Name == name )
-					return index;
-			}
-
-			return -1;
-		}
-
-		public bool Contains( ProjectConfig config )
-		{
-			return InnerList.Contains( config );
-		}
-
-		public bool Contains( string name )
-		{
-			return IndexOf( name ) >= 0;
-		}
-
-		protected override void OnRemoveComplete( int index, object obj )
-		{
-			ProjectConfig config = obj as ProjectConfig;
-			this.project.OnProjectChange( ProjectChangeType.RemoveConfig, config.Name );
-		}
-
-		protected override void OnInsertComplete( int index, object obj )
-		{
-			ProjectConfig config = obj as ProjectConfig;
-			project.OnProjectChange( ProjectChangeType.AddConfig, config.Name );
-		}
-
-		private void config_Changed(object sender, EventArgs e)
-		{
-			ProjectConfig config = sender as ProjectConfig;
-			project.OnProjectChange( ProjectChangeType.UpdateConfig, config.Name );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for ProjectConfigCollection.
+	/// </summary>
+	public class ProjectConfigCollection : CollectionBase
+	{
+		protected NUnitProject project;
+
+		public ProjectConfigCollection( NUnitProject project ) 
+		{ 
+			this.project = project;
+		}
+
+		#region Properties
+		public ProjectConfig this[int index]
+		{
+			get { return (ProjectConfig)InnerList[index]; }
+		}
+
+		public ProjectConfig this[string name]
+		{
+			get 
+			{ 
+				int index = IndexOf( name );
+				return index >= 0 ? (ProjectConfig)InnerList[index]: null;
+			}
+		}
+		#endregion
+
+		#region Methods
+		public void Add( ProjectConfig config )
+		{
+			List.Add( config );
+			config.Project = this.project;
+			config.Changed += new EventHandler(config_Changed);
+		}
+
+		public void Add( string name )
+		{
+			Add( new ProjectConfig( name ) );
+		}
+
+		public void Remove( string name )
+		{
+			int index = IndexOf( name );
+			if ( index >= 0 )
+			{
+				RemoveAt( index );
+			}
+		}
+
+		private int IndexOf( string name )
+		{
+			for( int index = 0; index < InnerList.Count; index++ )
+			{
+				ProjectConfig config = (ProjectConfig)InnerList[index];
+				if( config.Name == name )
+					return index;
+			}
+
+			return -1;
+		}
+
+		public bool Contains( ProjectConfig config )
+		{
+			return InnerList.Contains( config );
+		}
+
+		public bool Contains( string name )
+		{
+			return IndexOf( name ) >= 0;
+		}
+
+		protected override void OnRemoveComplete( int index, object obj )
+		{
+			ProjectConfig config = obj as ProjectConfig;
+			this.project.OnProjectChange( ProjectChangeType.RemoveConfig, config.Name );
+		}
+
+		protected override void OnInsertComplete( int index, object obj )
+		{
+			ProjectConfig config = obj as ProjectConfig;
+			project.OnProjectChange( ProjectChangeType.AddConfig, config.Name );
+		}
+
+		private void config_Changed(object sender, EventArgs e)
+		{
+			ProjectConfig config = sender as ProjectConfig;
+			project.OnProjectChange( ProjectChangeType.UpdateConfig, config.Name );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ProjectFormatException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ProjectFormatException.cs
@@ -1,58 +1,58 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Exception raised when loading a project file with
-	/// an invalid format.
-	/// </summary>
-	public class ProjectFormatException : ApplicationException
-	{
-		#region Instance Variables
-
-		private int lineNumber;
-
-		private int linePosition;
-
-		#endregion
-
-		#region Constructors
-
-		public ProjectFormatException() : base() {}
-
-		public ProjectFormatException( string message )
-			: base( message ) {}
-
-		public ProjectFormatException( string message, Exception inner )
-			: base( message, inner ) {}
-
-		public ProjectFormatException( string message, int lineNumber, int linePosition )
-			: base( message )
-		{
-			this.lineNumber = lineNumber;
-			this.linePosition = linePosition;
-		}
-
-		#endregion
-
-		#region Properties
-
-		public int LineNumber
-		{
-			get { return lineNumber; }
-		}
-
-		public int LinePosition
-		{
-			get { return linePosition; }
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Exception raised when loading a project file with
+	/// an invalid format.
+	/// </summary>
+	public class ProjectFormatException : ApplicationException
+	{
+		#region Instance Variables
+
+		private int lineNumber;
+
+		private int linePosition;
+
+		#endregion
+
+		#region Constructors
+
+		public ProjectFormatException() : base() {}
+
+		public ProjectFormatException( string message )
+			: base( message ) {}
+
+		public ProjectFormatException( string message, Exception inner )
+			: base( message, inner ) {}
+
+		public ProjectFormatException( string message, int lineNumber, int linePosition )
+			: base( message )
+		{
+			this.lineNumber = lineNumber;
+			this.linePosition = linePosition;
+		}
+
+		#endregion
+
+		#region Properties
+
+		public int LineNumber
+		{
+			get { return lineNumber; }
+		}
+
+		public int LinePosition
+		{
+			get { return linePosition; }
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ProxyTestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ProxyTestRunner.cs
@@ -1,179 +1,179 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using System.Collections;
-	using System.IO;
-	using NUnit.Core;
-
-	/// <summary>
-	/// ProxyTestRunner is the abstract base for all client-side
-	/// TestRunner implementations that delegate to a remote
-	/// TestRunner. All calls are simply passed on to the
-	/// TestRunner that is provided to the constructor.
-	/// 
-	/// This class is similar to DelegatingTestRunner in the
-	/// NUnit core, but is separate because of how it is used.
-	/// 
-	/// Although the class is abstract, it has no abstract 
-	/// methods specified because each implementation will
-	/// need to override different methods. All methods are
-	/// specified using interface syntax and the derived class
-	/// must explicitly implement TestRunner in order to 
-	/// redefine the selected methods.
-	/// </summary>
-	public abstract class ProxyTestRunner : TestRunner
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// Our runner ID
-		/// </summary>
-		protected int runnerID;
-
-		/// <summary>
-		/// The downstream TestRunner
-		/// </summary>
-		private TestRunner testRunner;
-
-		/// <summary>
-		/// The event listener for the currently running test
-		/// </summary>
-		protected EventListener listener;
-
-		#endregion
-
-		#region Construction
-		public ProxyTestRunner(TestRunner testRunner)
-		{
-			this.testRunner = testRunner;
-			this.runnerID = testRunner.ID;
-		}
-
-		/// <summary>
-		/// Protected constructor for runners that create their own
-		/// specialized downstream runner.
-		/// </summary>
-		protected ProxyTestRunner( int runnerID )
-		{
-			this.runnerID = runnerID;
-		}
-		#endregion
-
-		#region Properties
-		public virtual int ID
-		{
-			get { return runnerID; }
-		}
-
-		public virtual bool Running
-		{
-			get { return testRunner != null && testRunner.Running; }
-		}
-
-		public virtual IList AssemblyInfo
-		{
-			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
-		}
-
-		public virtual ITest Test
-		{
-			get { return testRunner == null ? null : testRunner.Test; }
-		}
-
-		public virtual TestResult TestResult
-		{
-			get { return testRunner == null ? null : testRunner.TestResult; }
-		}
-
-		/// <summary>
-		/// Protected property copies any settings to the downstream test runner
-		/// when it is set. Derived runners overriding this should call the base
-		/// or copy the settings themselves.
-		/// </summary>
-		protected virtual TestRunner TestRunner
-		{
-			get { return testRunner; }
-			set { testRunner = value; }
-		}
-		#endregion
-
-		#region Load and Unload Methods
-		public virtual bool Load( TestPackage package )
-		{
-			return this.testRunner.Load( package );
-		}
-
-		public virtual void Unload()
-		{
-            if ( this.testRunner != null )
-			    this.testRunner.Unload();
-		}
-		#endregion
-
-		#region CountTestCases
-		public virtual int CountTestCases( ITestFilter filter )
-		{
-			return this.testRunner.CountTestCases( filter );
-		}
-		#endregion
-
-		#region Methods for Running Tests
-		public virtual TestResult Run(EventListener listener)
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			return this.testRunner.Run(listener);
-		}
-
-		public virtual TestResult Run(EventListener listener, ITestFilter filter)
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			return this.testRunner.Run(listener, filter);
-		}
-
-		public virtual void BeginRun( EventListener listener )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			this.testRunner.BeginRun( listener );
-		}
-
-		public virtual void BeginRun( EventListener listener, ITestFilter filter )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			this.testRunner.BeginRun( listener, filter );
-		}
-
-		public virtual TestResult EndRun()
-		{
-			return this.testRunner.EndRun();
-		}
-
-		public virtual void CancelRun()
-		{
-			this.testRunner.CancelRun();
-		}
-
-		public virtual void Wait()
-		{
-			this.testRunner.Wait();
-		}
-		#endregion
-
-		#region InitializeLifetimeService Override
-//		public override object InitializeLifetimeService()
-//		{
-//			return null;
-//		}
-		#endregion
-
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using System.Collections;
+	using System.IO;
+	using NUnit.Core;
+
+	/// <summary>
+	/// ProxyTestRunner is the abstract base for all client-side
+	/// TestRunner implementations that delegate to a remote
+	/// TestRunner. All calls are simply passed on to the
+	/// TestRunner that is provided to the constructor.
+	/// 
+	/// This class is similar to DelegatingTestRunner in the
+	/// NUnit core, but is separate because of how it is used.
+	/// 
+	/// Although the class is abstract, it has no abstract 
+	/// methods specified because each implementation will
+	/// need to override different methods. All methods are
+	/// specified using interface syntax and the derived class
+	/// must explicitly implement TestRunner in order to 
+	/// redefine the selected methods.
+	/// </summary>
+	public abstract class ProxyTestRunner : TestRunner
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// Our runner ID
+		/// </summary>
+		protected int runnerID;
+
+		/// <summary>
+		/// The downstream TestRunner
+		/// </summary>
+		private TestRunner testRunner;
+
+		/// <summary>
+		/// The event listener for the currently running test
+		/// </summary>
+		protected EventListener listener;
+
+		#endregion
+
+		#region Construction
+		public ProxyTestRunner(TestRunner testRunner)
+		{
+			this.testRunner = testRunner;
+			this.runnerID = testRunner.ID;
+		}
+
+		/// <summary>
+		/// Protected constructor for runners that create their own
+		/// specialized downstream runner.
+		/// </summary>
+		protected ProxyTestRunner( int runnerID )
+		{
+			this.runnerID = runnerID;
+		}
+		#endregion
+
+		#region Properties
+		public virtual int ID
+		{
+			get { return runnerID; }
+		}
+
+		public virtual bool Running
+		{
+			get { return testRunner != null && testRunner.Running; }
+		}
+
+		public virtual IList AssemblyInfo
+		{
+			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
+		}
+
+		public virtual ITest Test
+		{
+			get { return testRunner == null ? null : testRunner.Test; }
+		}
+
+		public virtual TestResult TestResult
+		{
+			get { return testRunner == null ? null : testRunner.TestResult; }
+		}
+
+		/// <summary>
+		/// Protected property copies any settings to the downstream test runner
+		/// when it is set. Derived runners overriding this should call the base
+		/// or copy the settings themselves.
+		/// </summary>
+		protected virtual TestRunner TestRunner
+		{
+			get { return testRunner; }
+			set { testRunner = value; }
+		}
+		#endregion
+
+		#region Load and Unload Methods
+		public virtual bool Load( TestPackage package )
+		{
+			return this.testRunner.Load( package );
+		}
+
+		public virtual void Unload()
+		{
+            if ( this.testRunner != null )
+			    this.testRunner.Unload();
+		}
+		#endregion
+
+		#region CountTestCases
+		public virtual int CountTestCases( ITestFilter filter )
+		{
+			return this.testRunner.CountTestCases( filter );
+		}
+		#endregion
+
+		#region Methods for Running Tests
+		public virtual TestResult Run(EventListener listener)
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			return this.testRunner.Run(listener);
+		}
+
+		public virtual TestResult Run(EventListener listener, ITestFilter filter)
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			return this.testRunner.Run(listener, filter);
+		}
+
+		public virtual void BeginRun( EventListener listener )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			this.testRunner.BeginRun( listener );
+		}
+
+		public virtual void BeginRun( EventListener listener, ITestFilter filter )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			this.testRunner.BeginRun( listener, filter );
+		}
+
+		public virtual TestResult EndRun()
+		{
+			return this.testRunner.EndRun();
+		}
+
+		public virtual void CancelRun()
+		{
+			this.testRunner.CancelRun();
+		}
+
+		public virtual void Wait()
+		{
+			this.testRunner.Wait();
+		}
+		#endregion
+
+		#region InitializeLifetimeService Override
+//		public override object InitializeLifetimeService()
+//		{
+//			return null;
+//		}
+		#endregion
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/RecentFileEntry.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/RecentFileEntry.cs
@@ -1,74 +1,74 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	public class RecentFileEntry
-	{
-		public static readonly char Separator = ',';
-
-		private string path;
-		
-		private Version clrVersion;
-
-		public RecentFileEntry( string path )
-		{
-			this.path = path;
-			this.clrVersion = Environment.Version;
-		}
-
-		public RecentFileEntry( string path, Version clrVersion )
-		{
-			this.path = path;
-			this.clrVersion = clrVersion;
-		}
-
-		public string Path
-		{
-			get { return path; }
-		}
-
-		public Version CLRVersion
-		{
-			get { return clrVersion; }
-		}
-
-		public bool Exists
-		{
-			get { return path != null && System.IO.File.Exists( path ); }
-		}
-
-		public bool IsCompatibleCLRVersion
-		{
-			get { return clrVersion.Major <= Environment.Version.Major; }
-		}
-
-		public override string ToString()
-		{
-			return Path + Separator + CLRVersion.ToString();
-		}
-
-		public static RecentFileEntry Parse( string text )
-		{
-			int sepIndex = text.LastIndexOf( Separator );
-
-			if ( sepIndex > 0 )
-				try
-				{
-					return new RecentFileEntry( text.Substring( 0, sepIndex ), 
-						new Version( text.Substring( sepIndex + 1 ) ) );
-				}
-				catch
-				{
-					//The last part was not a version, so fall through and return the whole text
-				}
-			
-			return new RecentFileEntry( text );
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	public class RecentFileEntry
+	{
+		public static readonly char Separator = ',';
+
+		private string path;
+		
+		private Version clrVersion;
+
+		public RecentFileEntry( string path )
+		{
+			this.path = path;
+			this.clrVersion = Environment.Version;
+		}
+
+		public RecentFileEntry( string path, Version clrVersion )
+		{
+			this.path = path;
+			this.clrVersion = clrVersion;
+		}
+
+		public string Path
+		{
+			get { return path; }
+		}
+
+		public Version CLRVersion
+		{
+			get { return clrVersion; }
+		}
+
+		public bool Exists
+		{
+			get { return path != null && System.IO.File.Exists( path ); }
+		}
+
+		public bool IsCompatibleCLRVersion
+		{
+			get { return clrVersion.Major <= Environment.Version.Major; }
+		}
+
+		public override string ToString()
+		{
+			return Path + Separator + CLRVersion.ToString();
+		}
+
+		public static RecentFileEntry Parse( string text )
+		{
+			int sepIndex = text.LastIndexOf( Separator );
+
+			if ( sepIndex > 0 )
+				try
+				{
+					return new RecentFileEntry( text.Substring( 0, sepIndex ), 
+						new Version( text.Substring( sepIndex + 1 ) ) );
+				}
+				catch
+				{
+					//The last part was not a version, so fall through and return the whole text
+				}
+			
+			return new RecentFileEntry( text );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/RecentFiles.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/RecentFiles.cs
@@ -1,55 +1,55 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// The RecentFiles interface is used to isolate the app
-	/// from various implementations of recent files.
-	/// </summary>
-	public interface RecentFiles
-	{ 
-		/// <summary>
-		/// The max number of files saved
-		/// </summary>
-		int MaxFiles { get; set; }
-
-		/// <summary>
-		/// The current number of saved files
-		/// </summary>
-		int Count { get; }
-
-		/// <summary>
-		/// Get a list of all the file entries
-		/// </summary>
-		/// <returns>The most recent file list</returns>
-		RecentFilesCollection Entries { get; }
-
-		/// <summary>
-		/// Set the most recent file entry, reordering
-		/// the saved names as needed and removing the oldest
-		/// if the max number of files would be exceeded.
-		/// </summary>
-		void SetMostRecent( RecentFileEntry entry );
-
-		/// <summary>
-		/// Set the most recent file name, reordering
-		/// the saved names as needed and removing the oldest
-		/// if the max number of files would be exceeded.
-		/// The current CLR version is used to create the entry.
-		/// </summary>
-		void SetMostRecent( string fileName );
-
-		/// <summary>
-		/// Remove a file from the list
-		/// </summary>
-		/// <param name="fileName">The name of the file to remove</param>
-		void Remove( string fileName );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// The RecentFiles interface is used to isolate the app
+	/// from various implementations of recent files.
+	/// </summary>
+	public interface RecentFiles
+	{ 
+		/// <summary>
+		/// The max number of files saved
+		/// </summary>
+		int MaxFiles { get; set; }
+
+		/// <summary>
+		/// The current number of saved files
+		/// </summary>
+		int Count { get; }
+
+		/// <summary>
+		/// Get a list of all the file entries
+		/// </summary>
+		/// <returns>The most recent file list</returns>
+		RecentFilesCollection Entries { get; }
+
+		/// <summary>
+		/// Set the most recent file entry, reordering
+		/// the saved names as needed and removing the oldest
+		/// if the max number of files would be exceeded.
+		/// </summary>
+		void SetMostRecent( RecentFileEntry entry );
+
+		/// <summary>
+		/// Set the most recent file name, reordering
+		/// the saved names as needed and removing the oldest
+		/// if the max number of files would be exceeded.
+		/// The current CLR version is used to create the entry.
+		/// </summary>
+		void SetMostRecent( string fileName );
+
+		/// <summary>
+		/// Remove a file from the list
+		/// </summary>
+		/// <param name="fileName">The name of the file to remove</param>
+		void Remove( string fileName );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/RecentFilesCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/RecentFilesCollection.cs
@@ -1,57 +1,57 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for RecentFilesCollection.
-	/// </summary>
-	public class RecentFilesCollection : ReadOnlyCollectionBase
-	{
-		public void Add( RecentFileEntry entry )
-		{
-			InnerList.Add( entry );
-		}
-
-		public void Insert( int index, RecentFileEntry entry )
-		{
-			InnerList.Insert( index, entry );
-		}
-
-		public void Remove( string fileName )
-		{
-			int index = IndexOf( fileName );
-			if ( index != -1 )
-				RemoveAt( index );
-		}
-
-		public void RemoveAt( int index )
-		{
-			InnerList.RemoveAt( index );
-		}
-
-		public int IndexOf( string fileName )
-		{
-			for( int index = 0; index < InnerList.Count; index++ )
-				if ( this[index].Path == fileName )
-					return index;
-			return -1;
-		}
-
-		public RecentFileEntry this[int index]
-		{
-			get { return (RecentFileEntry)InnerList[index]; }
-		}
-
-		public void Clear()
-		{
-			InnerList.Clear();
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for RecentFilesCollection.
+	/// </summary>
+	public class RecentFilesCollection : ReadOnlyCollectionBase
+	{
+		public void Add( RecentFileEntry entry )
+		{
+			InnerList.Add( entry );
+		}
+
+		public void Insert( int index, RecentFileEntry entry )
+		{
+			InnerList.Insert( index, entry );
+		}
+
+		public void Remove( string fileName )
+		{
+			int index = IndexOf( fileName );
+			if ( index != -1 )
+				RemoveAt( index );
+		}
+
+		public void RemoveAt( int index )
+		{
+			InnerList.RemoveAt( index );
+		}
+
+		public int IndexOf( string fileName )
+		{
+			for( int index = 0; index < InnerList.Count; index++ )
+				if ( this[index].Path == fileName )
+					return index;
+			return -1;
+		}
+
+		public RecentFileEntry this[int index]
+		{
+			get { return (RecentFileEntry)InnerList[index]; }
+		}
+
+		public void Clear()
+		{
+			InnerList.Clear();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/RegistrySettingsStorage.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/RegistrySettingsStorage.cs
@@ -1,167 +1,167 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Diagnostics;
-using Microsoft.Win32;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Implementation of SettingsStorage for NUnit user settings,
-	/// based on storage of settings in the registry.
-	/// 
-	/// Setting names containing a dot are interpreted as a 
-	/// reference to a subkey. Only the first dot is used
-	/// in this way, since the feature is only intended
-	/// to support legacy registry settings, which are not
-	/// nested any deeper.
-	/// </summary>
-	public class RegistrySettingsStorage : ISettingsStorage
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// If not null, the registry key for this storage
-		/// </summary>
-		private RegistryKey storageKey;
-
-		#endregion
-
-		#region Construction and Disposal
-
-		/// <summary>
-		/// Construct a storage on top of a pre-created registry key
-		/// </summary>
-		/// <param name="storageKey"></param>
-		public RegistrySettingsStorage( RegistryKey storageKey )
-		{
-			this.storageKey = storageKey;
-		}
-
-		#endregion
-
-		#region Properties
-
-		/// <summary>
-		/// The registry key used to hold this storage
-		/// </summary>
-		public RegistryKey StorageKey
-		{
-			get { return storageKey; }
-		}
-
-		#endregion
-
-		#region ISettingsStorage Members
-
-		/// <summary>
-		/// Load a setting from this storage
-		/// </summary>
-		/// <param name="settingName">Name of the setting to load</param>
-		/// <returns>Value of the setting</returns>
-		public object GetSetting( string settingName )
-		{
-			int dot = settingName.IndexOf( '.' );
-			if ( dot < 0 )
-				return storageKey.GetValue( settingName );
-
-			using( RegistryKey subKey = storageKey.OpenSubKey( settingName.Substring( 0, dot ) ) )
-			{
-				if ( subKey != null )
-					return subKey.GetValue( settingName.Substring( dot + 1 ) );
-			}
-
-			return null;
-		}
-
-		/// <summary>
-		/// Remove a setting from the storage
-		/// </summary>
-		/// <param name="settingName">Name of the setting to remove</param>
-		public void RemoveSetting( string settingName )
-		{
-			int dot = settingName.IndexOf( '.' );
-			if ( dot < 0 )
-				storageKey.DeleteValue( settingName, false );
-			else
-			{
-				using( RegistryKey subKey = storageKey.OpenSubKey( settingName.Substring( 0, dot ), true ) )
-				{
-					if ( subKey != null )
-						subKey.DeleteValue( settingName.Substring( dot + 1 ) );
-				}
-			}
-		}
-
-		public void RemoveGroup( string groupName )
-		{
-			storageKey.DeleteSubKeyTree( groupName );
-		}
-
-		/// <summary>
-		/// Save a setting in this storage
-		/// </summary>
-		/// <param name="settingName">Name of the setting to save</param>
-		/// <param name="settingValue">Value to be saved</param>
-		public void SaveSetting( string settingName, object settingValue )
-		{
-			object val = settingValue;
-			if ( val is bool )
-				val = ((bool)val) ? 1 : 0;
-
-			int dot = settingName.IndexOf( '.' );
-			if ( dot < 0 )
-				storageKey.SetValue( settingName, val );
-			else
-			{
-				using(  RegistryKey subKey = storageKey.CreateSubKey( settingName.Substring( 0, dot ) ) )
-				{
-					subKey.SetValue( settingName.Substring( dot + 1 ), val );
-				}
-			}
-		}
-
-		/// <summary>
-		/// Make a new child storage under this one
-		/// </summary>
-		/// <param name="storageName">Name of the child storage to make</param>
-		/// <returns>New storage</returns>
-		public ISettingsStorage MakeChildStorage( string storageName )
-		{
-			return new RegistrySettingsStorage( storageKey.CreateSubKey( storageName ) );
-		}
-
-		/// <summary>
-		/// LoadSettings does nothing in this implementation, since the
-		/// registry is accessed directly.
-		/// </summary>
-		public void LoadSettings()
-		{
-		}
-
-		/// <summary>
-		/// SaveSettings does nothing in this implementation, since the
-		/// registry is accessed directly.
-		/// </summary>
-		public void SaveSettings()
-		{
-		}
-		#endregion
-
-		#region IDisposable Members
-		/// <summary>
-		/// Dispose of this object by closing the storage key, if any
-		/// </summary>
-		public void Dispose()
-		{
-			if ( storageKey != null )
-				storageKey.Close();
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Diagnostics;
+using Microsoft.Win32;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Implementation of SettingsStorage for NUnit user settings,
+	/// based on storage of settings in the registry.
+	/// 
+	/// Setting names containing a dot are interpreted as a 
+	/// reference to a subkey. Only the first dot is used
+	/// in this way, since the feature is only intended
+	/// to support legacy registry settings, which are not
+	/// nested any deeper.
+	/// </summary>
+	public class RegistrySettingsStorage : ISettingsStorage
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// If not null, the registry key for this storage
+		/// </summary>
+		private RegistryKey storageKey;
+
+		#endregion
+
+		#region Construction and Disposal
+
+		/// <summary>
+		/// Construct a storage on top of a pre-created registry key
+		/// </summary>
+		/// <param name="storageKey"></param>
+		public RegistrySettingsStorage( RegistryKey storageKey )
+		{
+			this.storageKey = storageKey;
+		}
+
+		#endregion
+
+		#region Properties
+
+		/// <summary>
+		/// The registry key used to hold this storage
+		/// </summary>
+		public RegistryKey StorageKey
+		{
+			get { return storageKey; }
+		}
+
+		#endregion
+
+		#region ISettingsStorage Members
+
+		/// <summary>
+		/// Load a setting from this storage
+		/// </summary>
+		/// <param name="settingName">Name of the setting to load</param>
+		/// <returns>Value of the setting</returns>
+		public object GetSetting( string settingName )
+		{
+			int dot = settingName.IndexOf( '.' );
+			if ( dot < 0 )
+				return storageKey.GetValue( settingName );
+
+			using( RegistryKey subKey = storageKey.OpenSubKey( settingName.Substring( 0, dot ) ) )
+			{
+				if ( subKey != null )
+					return subKey.GetValue( settingName.Substring( dot + 1 ) );
+			}
+
+			return null;
+		}
+
+		/// <summary>
+		/// Remove a setting from the storage
+		/// </summary>
+		/// <param name="settingName">Name of the setting to remove</param>
+		public void RemoveSetting( string settingName )
+		{
+			int dot = settingName.IndexOf( '.' );
+			if ( dot < 0 )
+				storageKey.DeleteValue( settingName, false );
+			else
+			{
+				using( RegistryKey subKey = storageKey.OpenSubKey( settingName.Substring( 0, dot ), true ) )
+				{
+					if ( subKey != null )
+						subKey.DeleteValue( settingName.Substring( dot + 1 ) );
+				}
+			}
+		}
+
+		public void RemoveGroup( string groupName )
+		{
+			storageKey.DeleteSubKeyTree( groupName );
+		}
+
+		/// <summary>
+		/// Save a setting in this storage
+		/// </summary>
+		/// <param name="settingName">Name of the setting to save</param>
+		/// <param name="settingValue">Value to be saved</param>
+		public void SaveSetting( string settingName, object settingValue )
+		{
+			object val = settingValue;
+			if ( val is bool )
+				val = ((bool)val) ? 1 : 0;
+
+			int dot = settingName.IndexOf( '.' );
+			if ( dot < 0 )
+				storageKey.SetValue( settingName, val );
+			else
+			{
+				using(  RegistryKey subKey = storageKey.CreateSubKey( settingName.Substring( 0, dot ) ) )
+				{
+					subKey.SetValue( settingName.Substring( dot + 1 ), val );
+				}
+			}
+		}
+
+		/// <summary>
+		/// Make a new child storage under this one
+		/// </summary>
+		/// <param name="storageName">Name of the child storage to make</param>
+		/// <returns>New storage</returns>
+		public ISettingsStorage MakeChildStorage( string storageName )
+		{
+			return new RegistrySettingsStorage( storageKey.CreateSubKey( storageName ) );
+		}
+
+		/// <summary>
+		/// LoadSettings does nothing in this implementation, since the
+		/// registry is accessed directly.
+		/// </summary>
+		public void LoadSettings()
+		{
+		}
+
+		/// <summary>
+		/// SaveSettings does nothing in this implementation, since the
+		/// registry is accessed directly.
+		/// </summary>
+		public void SaveSettings()
+		{
+		}
+		#endregion
+
+		#region IDisposable Members
+		/// <summary>
+		/// Dispose of this object by closing the storage key, if any
+		/// </summary>
+		public void Dispose()
+		{
+			if ( storageKey != null )
+				storageKey.Close();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/RemoteTestAgent.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/RemoteTestAgent.cs
@@ -1,133 +1,133 @@
-using System;
-using System.Threading;
-using System.Collections;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// RemoteTestAgent represents a remote agent executing in another process
-	/// and communicating with NUnit by TCP. Although it is similar to a
-	/// TestServer, it does not publish a Uri at which clients may connect 
-	/// to it. Rather, it reports back to the sponsoring TestAgency upon 
-	/// startup so that the agency may in turn provide it to clients for use.
-	/// </summary>
-	public class RemoteTestAgent : MarshalByRefObject, IDisposable
-	{
-		#region Fields
-		/// <summary>
-		/// Url of the agency that controls this agent
-		/// </summary>
-		string agencyUrl;
-
-		/// <summary>
-		/// Reference to the TestAgency that controls this agent
-		/// </summary>
-		TestAgency agency;
-
-		/// <summary>
-		/// Channel used for communications with the agency
-		/// and with clients
-		/// </summary>
-		private TcpChannel channel;
-
-		/// <summary>
-		/// Lock used to avoid thread contention
-		/// </summary>
-		private object theLock = new object();
-
-		#endregion
-
-		#region Constructor
-		/// <summary>
-		/// Construct a RemoteTestAgent given the Url of its agency
-		/// </summary>
-		/// <param name="agencyUrl"></param>
-		public RemoteTestAgent( string agencyUrl )
-		{
-			this.agencyUrl = agencyUrl;
-		}
-		#endregion
-
-		#region Properties
-		public TestAgency Agency
-		{
-			get { return agency; }
-		}
-
-		public int ProcessId
-		{
-			get { return System.Diagnostics.Process.GetCurrentProcess().Id; }
-		}
-		#endregion
-
-		#region Public Methods - Called By local Agent
-		public TestRunner CreateRunner(int runnerID)
-		{
-			return new TestDomain( runnerID );
-		}
-		#endregion
-
-		#region Public Methods
-		public void Start()
-		{
-			NTrace.Info("Starting");
-			this.channel = ServerUtilities.GetTcpChannel();
-			NTrace.Debug("Acquired Tcp Channel");
-
-			try
-			{
-				this.agency = (TestAgency)Activator.GetObject( typeof( TestAgency ), agencyUrl );
-				NTrace.DebugFormat("Connected to TestAgency at {0}", agencyUrl);
-			}
-			catch( Exception ex )
-			{
-				NTrace.ErrorFormat( "Unable to connect to test agency at {0}", agencyUrl );
-				NTrace.Error( ex.Message );
-			}
-
-			try
-			{
-				this.agency.Register( this, ProcessId );
-				NTrace.Debug( "Registered with TestAgency" );
-			}
-			catch( Exception ex )
-			{
-				NTrace.Error( "Failed to register with TestAgency", ex );
-			}
-		}
-
-		[System.Runtime.Remoting.Messaging.OneWay]
-		public void Stop()
-		{
-			NTrace.Info( "Stopping" );
-			lock( theLock )
-			{
-				if ( this.channel != null )
-					ChannelServices.UnregisterChannel( this.channel );
-				Monitor.PulseAll( theLock );
-			}
-		}
-
-		public void WaitForStop()
-		{
-			lock( theLock )
-			{
-				Monitor.Wait( theLock );
-			}
-		}
-		#endregion
-
-		#region IDisposable Members
-
-		public void Dispose()
-		{
-			this.Stop();
-		}
-
-		#endregion
-	}
-}
+using System;
+using System.Threading;
+using System.Collections;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// RemoteTestAgent represents a remote agent executing in another process
+	/// and communicating with NUnit by TCP. Although it is similar to a
+	/// TestServer, it does not publish a Uri at which clients may connect 
+	/// to it. Rather, it reports back to the sponsoring TestAgency upon 
+	/// startup so that the agency may in turn provide it to clients for use.
+	/// </summary>
+	public class RemoteTestAgent : MarshalByRefObject, IDisposable
+	{
+		#region Fields
+		/// <summary>
+		/// Url of the agency that controls this agent
+		/// </summary>
+		string agencyUrl;
+
+		/// <summary>
+		/// Reference to the TestAgency that controls this agent
+		/// </summary>
+		TestAgency agency;
+
+		/// <summary>
+		/// Channel used for communications with the agency
+		/// and with clients
+		/// </summary>
+		private TcpChannel channel;
+
+		/// <summary>
+		/// Lock used to avoid thread contention
+		/// </summary>
+		private object theLock = new object();
+
+		#endregion
+
+		#region Constructor
+		/// <summary>
+		/// Construct a RemoteTestAgent given the Url of its agency
+		/// </summary>
+		/// <param name="agencyUrl"></param>
+		public RemoteTestAgent( string agencyUrl )
+		{
+			this.agencyUrl = agencyUrl;
+		}
+		#endregion
+
+		#region Properties
+		public TestAgency Agency
+		{
+			get { return agency; }
+		}
+
+		public int ProcessId
+		{
+			get { return System.Diagnostics.Process.GetCurrentProcess().Id; }
+		}
+		#endregion
+
+		#region Public Methods - Called By local Agent
+		public TestRunner CreateRunner(int runnerID)
+		{
+			return new TestDomain( runnerID );
+		}
+		#endregion
+
+		#region Public Methods
+		public void Start()
+		{
+			NTrace.Info("Starting");
+			this.channel = ServerUtilities.GetTcpChannel();
+			NTrace.Debug("Acquired Tcp Channel");
+
+			try
+			{
+				this.agency = (TestAgency)Activator.GetObject( typeof( TestAgency ), agencyUrl );
+				NTrace.DebugFormat("Connected to TestAgency at {0}", agencyUrl);
+			}
+			catch( Exception ex )
+			{
+				NTrace.ErrorFormat( "Unable to connect to test agency at {0}", agencyUrl );
+				NTrace.Error( ex.Message );
+			}
+
+			try
+			{
+				this.agency.Register( this, ProcessId );
+				NTrace.Debug( "Registered with TestAgency" );
+			}
+			catch( Exception ex )
+			{
+				NTrace.Error( "Failed to register with TestAgency", ex );
+			}
+		}
+
+		[System.Runtime.Remoting.Messaging.OneWay]
+		public void Stop()
+		{
+			NTrace.Info( "Stopping" );
+			lock( theLock )
+			{
+				if ( this.channel != null )
+					ChannelServices.UnregisterChannel( this.channel );
+				Monitor.PulseAll( theLock );
+			}
+		}
+
+		public void WaitForStop()
+		{
+			lock( theLock )
+			{
+				Monitor.Wait( theLock );
+			}
+		}
+		#endregion
+
+		#region IDisposable Members
+
+		public void Dispose()
+		{
+			this.Stop();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ResultSummarizer.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ResultSummarizer.cs
@@ -1,80 +1,80 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using NUnit.Core;
-
-	/// <summary>
-	/// Summary description for ResultSummarizer.
-	/// </summary>
-	public class ResultSummarizer
-	{
-		private SummaryVisitor visitor = new SummaryVisitor();
-
-		public ResultSummarizer(TestResult result)
-		{
-			result.Accept(visitor);
-		}
-
-		public ResultSummarizer(TestResult[] results)
-		{
-			foreach( TestResult result in results )
-				result.Accept( visitor );
-		}
-
-		public string Name
-		{
-			get { return visitor.Name; }
-		}
-
-		public bool Success
-		{
-			get { return visitor.Success; }
-		}
-
-		public int ResultCount
-		{
-			get { return visitor.ResultCount; }
-		}
-
-//		public int Errors
-//		{
-//			get { return visitor.Errors; }
-//		}
-
-		public int FailureCount 
-		{
-			get { return visitor.FailureCount; }
-		}
-
-		public int SkipCount
-		{
-			get { return visitor.SkipCount; }
-		}
-
-		public int IgnoreCount
-		{
-			get { return visitor.IgnoreCount; }
-		}
-
-		public double Time
-		{
-			get { return visitor.Time; }
-		}
-
-		public int TestsNotRun
-		{
-			get { return visitor.TestsNotRun; }
-		}
-
-		public int SuitesNotRun
-		{
-			get { return visitor.SuitesNotRun; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using NUnit.Core;
+
+	/// <summary>
+	/// Summary description for ResultSummarizer.
+	/// </summary>
+	public class ResultSummarizer
+	{
+		private SummaryVisitor visitor = new SummaryVisitor();
+
+		public ResultSummarizer(TestResult result)
+		{
+			result.Accept(visitor);
+		}
+
+		public ResultSummarizer(TestResult[] results)
+		{
+			foreach( TestResult result in results )
+				result.Accept( visitor );
+		}
+
+		public string Name
+		{
+			get { return visitor.Name; }
+		}
+
+		public bool Success
+		{
+			get { return visitor.Success; }
+		}
+
+		public int ResultCount
+		{
+			get { return visitor.ResultCount; }
+		}
+
+//		public int Errors
+//		{
+//			get { return visitor.Errors; }
+//		}
+
+		public int FailureCount 
+		{
+			get { return visitor.FailureCount; }
+		}
+
+		public int SkipCount
+		{
+			get { return visitor.SkipCount; }
+		}
+
+		public int IgnoreCount
+		{
+			get { return visitor.IgnoreCount; }
+		}
+
+		public double Time
+		{
+			get { return visitor.Time; }
+		}
+
+		public int TestsNotRun
+		{
+			get { return visitor.TestsNotRun; }
+		}
+
+		public int SuitesNotRun
+		{
+			get { return visitor.SuitesNotRun; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ServerBase.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ServerBase.cs
@@ -1,89 +1,89 @@
-using System;
-using System.Threading;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Services;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for ServerBase.
-	/// </summary>
-	public abstract class ServerBase : MarshalByRefObject, IDisposable
-	{
-		protected string uri;
-		protected int port;
-
-		private TcpChannel channel;
-		private bool isMarshalled;
-
-		private object theLock = new object();
-
-		protected ServerBase()
-		{
-		}
-
-		/// <summary>
-		/// Constructor used to provide
-		/// </summary>
-		/// <param name="uri"></param>
-		/// <param name="port"></param>
-		protected ServerBase(string uri, int port)
-		{
-			this.uri = uri;
-			this.port = port;
-		}
-
-		public virtual void Start()
-		{
-			if ( uri != null && uri != string.Empty )
-				lock( theLock )
-				{
-					this.channel = ServerUtilities.GetTcpChannel( uri + "Channel", port, 100 );
-
-					RemotingServices.Marshal( this, uri );
-					this.isMarshalled = true;
-				}
-		}
-
-		[System.Runtime.Remoting.Messaging.OneWay]
-		public virtual void Stop()
-		{
-			lock( theLock )
-			{
-				if ( this.isMarshalled )
-				{
-					RemotingServices.Disconnect( this );
-					this.isMarshalled = false;
-				}
-
-				if ( this.channel != null )
-				{
-					ChannelServices.UnregisterChannel( this.channel );
-					this.channel = null;
-				}
-
-				Monitor.PulseAll( theLock );
-			}
-		}
-
-		public void WaitForStop()
-		{
-			lock( theLock )
-			{
-				Monitor.Wait( theLock );
-			}
-		}
-
-		#region IDisposable Members
-
-		public void Dispose()
-		{
-			this.Stop();
-		}
-
-		#endregion
-	}
-}
+using System;
+using System.Threading;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Services;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for ServerBase.
+	/// </summary>
+	public abstract class ServerBase : MarshalByRefObject, IDisposable
+	{
+		protected string uri;
+		protected int port;
+
+		private TcpChannel channel;
+		private bool isMarshalled;
+
+		private object theLock = new object();
+
+		protected ServerBase()
+		{
+		}
+
+		/// <summary>
+		/// Constructor used to provide
+		/// </summary>
+		/// <param name="uri"></param>
+		/// <param name="port"></param>
+		protected ServerBase(string uri, int port)
+		{
+			this.uri = uri;
+			this.port = port;
+		}
+
+		public virtual void Start()
+		{
+			if ( uri != null && uri != string.Empty )
+				lock( theLock )
+				{
+					this.channel = ServerUtilities.GetTcpChannel( uri + "Channel", port, 100 );
+
+					RemotingServices.Marshal( this, uri );
+					this.isMarshalled = true;
+				}
+		}
+
+		[System.Runtime.Remoting.Messaging.OneWay]
+		public virtual void Stop()
+		{
+			lock( theLock )
+			{
+				if ( this.isMarshalled )
+				{
+					RemotingServices.Disconnect( this );
+					this.isMarshalled = false;
+				}
+
+				if ( this.channel != null )
+				{
+					ChannelServices.UnregisterChannel( this.channel );
+					this.channel = null;
+				}
+
+				Monitor.PulseAll( theLock );
+			}
+		}
+
+		public void WaitForStop()
+		{
+			lock( theLock )
+			{
+				Monitor.Wait( theLock );
+			}
+		}
+
+		#region IDisposable Members
+
+		public void Dispose()
+		{
+			this.Stop();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/ServerUtilities.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/ServerUtilities.cs
@@ -1,128 +1,128 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.IO;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-using System.Reflection;
-using System.Diagnostics;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for RemotingUtilities.
-	/// </summary>
-	public class ServerUtilities
-	{
-		/// <summary>
-		///  Create a TcpChannel with a given name, on a given port.
-		/// </summary>
-		/// <param name="port"></param>
-		/// <param name="name"></param>
-		/// <returns></returns>
-		private static TcpChannel CreateTcpChannel( string name, int port, int limit )
-		{
-			ListDictionary props = new ListDictionary();
-			props.Add( "port", port );
-			props.Add( "name", name );
-			props.Add( "bindTo", "127.0.0.1" );
-
-			BinaryServerFormatterSinkProvider serverProvider =
-				new BinaryServerFormatterSinkProvider();
-
-            // NOTE: TypeFilterLevel and "clientConnectionLimit" property don't exist in .NET 1.0.
-			Type typeFilterLevelType = typeof(object).Assembly.GetType("System.Runtime.Serialization.Formatters.TypeFilterLevel");
-			if (typeFilterLevelType != null)
-			{
-				PropertyInfo typeFilterLevelProperty = serverProvider.GetType().GetProperty("TypeFilterLevel");
-				object typeFilterLevel = Enum.Parse(typeFilterLevelType, "Full");
-				typeFilterLevelProperty.SetValue(serverProvider, typeFilterLevel, null);
-
-                props.Add("clientConnectionLimit", limit);
-            }
-
-			BinaryClientFormatterSinkProvider clientProvider =
-				new BinaryClientFormatterSinkProvider();
-
-			return new TcpChannel( props, clientProvider, serverProvider );
-		}
-
-		public static TcpChannel GetTcpChannel()
-		{
-			return GetTcpChannel( "", 0, 2 );
-		}
-
-		/// <summary>
-		/// Get a channel by name, casting it to a TcpChannel.
-		/// Otherwise, create, register and return a TcpChannel with
-		/// that name, on the port provided as the second argument.
-		/// </summary>
-		/// <param name="name">The channel name</param>
-		/// <param name="port">The port to use if the channel must be created</param>
-		/// <returns>A TcpChannel or null</returns>
-		public static TcpChannel GetTcpChannel( string name, int port )
-		{
-			return GetTcpChannel( name, port, 2 );
-		}
-		
-		/// <summary>
-		/// Get a channel by name, casting it to a TcpChannel.
-		/// Otherwise, create, register and return a TcpChannel with
-		/// that name, on the port provided as the second argument.
-		/// </summary>
-		/// <param name="name">The channel name</param>
-		/// <param name="port">The port to use if the channel must be created</param>
-		/// <param name="limit">The client connection limit or negative for the default</param>
-		/// <returns>A TcpChannel or null</returns>
-		public static TcpChannel GetTcpChannel( string name, int port, int limit )
-		{
-			TcpChannel channel = ChannelServices.GetChannel( name ) as TcpChannel;
-
-			if ( channel == null )
-			{
-				// NOTE: Retries are normally only needed when rapidly creating
-				// and destroying channels, as in running the NUnit tests.
-				int retries = 10;
-				while( --retries > 0 )
-					try
-					{
-						channel = CreateTcpChannel( name, port, limit );
-						ChannelServices.RegisterChannel( channel );
-						break;
-					}
-					catch( Exception e )
-					{
-                        Trace.WriteLine(e);
-						System.Threading.Thread.Sleep(300);
-					}
-			}
-
-			return channel;
-		}
-
-		public static void SafeReleaseChannel( IChannel channel )
-		{
-			if( channel != null )
-				try
-				{
-					ChannelServices.UnregisterChannel( channel );
-				}
-				catch( RemotingException )
-				{
-					// Channel was not registered - ignore
-				}
-		}
-
-		public static string MakeUrl( string uri, int port )
-		{
-			return string.Format( "tcp://127.0.0.1:{0}/{1}", port, uri );
-		}
-
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.IO;
+using System.Collections;
+using System.Collections.Specialized;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+using System.Reflection;
+using System.Diagnostics;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for RemotingUtilities.
+	/// </summary>
+	public class ServerUtilities
+	{
+		/// <summary>
+		///  Create a TcpChannel with a given name, on a given port.
+		/// </summary>
+		/// <param name="port"></param>
+		/// <param name="name"></param>
+		/// <returns></returns>
+		private static TcpChannel CreateTcpChannel( string name, int port, int limit )
+		{
+			ListDictionary props = new ListDictionary();
+			props.Add( "port", port );
+			props.Add( "name", name );
+			props.Add( "bindTo", "127.0.0.1" );
+
+			BinaryServerFormatterSinkProvider serverProvider =
+				new BinaryServerFormatterSinkProvider();
+
+            // NOTE: TypeFilterLevel and "clientConnectionLimit" property don't exist in .NET 1.0.
+			Type typeFilterLevelType = typeof(object).Assembly.GetType("System.Runtime.Serialization.Formatters.TypeFilterLevel");
+			if (typeFilterLevelType != null)
+			{
+				PropertyInfo typeFilterLevelProperty = serverProvider.GetType().GetProperty("TypeFilterLevel");
+				object typeFilterLevel = Enum.Parse(typeFilterLevelType, "Full");
+				typeFilterLevelProperty.SetValue(serverProvider, typeFilterLevel, null);
+
+                props.Add("clientConnectionLimit", limit);
+            }
+
+			BinaryClientFormatterSinkProvider clientProvider =
+				new BinaryClientFormatterSinkProvider();
+
+			return new TcpChannel( props, clientProvider, serverProvider );
+		}
+
+		public static TcpChannel GetTcpChannel()
+		{
+			return GetTcpChannel( "", 0, 2 );
+		}
+
+		/// <summary>
+		/// Get a channel by name, casting it to a TcpChannel.
+		/// Otherwise, create, register and return a TcpChannel with
+		/// that name, on the port provided as the second argument.
+		/// </summary>
+		/// <param name="name">The channel name</param>
+		/// <param name="port">The port to use if the channel must be created</param>
+		/// <returns>A TcpChannel or null</returns>
+		public static TcpChannel GetTcpChannel( string name, int port )
+		{
+			return GetTcpChannel( name, port, 2 );
+		}
+		
+		/// <summary>
+		/// Get a channel by name, casting it to a TcpChannel.
+		/// Otherwise, create, register and return a TcpChannel with
+		/// that name, on the port provided as the second argument.
+		/// </summary>
+		/// <param name="name">The channel name</param>
+		/// <param name="port">The port to use if the channel must be created</param>
+		/// <param name="limit">The client connection limit or negative for the default</param>
+		/// <returns>A TcpChannel or null</returns>
+		public static TcpChannel GetTcpChannel( string name, int port, int limit )
+		{
+			TcpChannel channel = ChannelServices.GetChannel( name ) as TcpChannel;
+
+			if ( channel == null )
+			{
+				// NOTE: Retries are normally only needed when rapidly creating
+				// and destroying channels, as in running the NUnit tests.
+				int retries = 10;
+				while( --retries > 0 )
+					try
+					{
+						channel = CreateTcpChannel( name, port, limit );
+						ChannelServices.RegisterChannel( channel );
+						break;
+					}
+					catch( Exception e )
+					{
+                        Trace.WriteLine(e);
+						System.Threading.Thread.Sleep(300);
+					}
+			}
+
+			return channel;
+		}
+
+		public static void SafeReleaseChannel( IChannel channel )
+		{
+			if( channel != null )
+				try
+				{
+					ChannelServices.UnregisterChannel( channel );
+				}
+				catch( RemotingException )
+				{
+					// Channel was not registered - ignore
+				}
+		}
+
+		public static string MakeUrl( string uri, int port )
+		{
+			return string.Format( "tcp://127.0.0.1:{0}/{1}", port, uri );
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services.cs
@@ -1,130 +1,130 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using NUnit.Core;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for Services
-	/// </summary>
-	public class Services
-	{
-		#region AddinManager
-		private static AddinManager addinManager;
-		public static AddinManager AddinManager
-		{
-			get 
-			{
-				if (addinManager == null )
-					addinManager = (AddinManager)ServiceManager.Services.GetService( typeof( AddinManager ) );
-
-				return addinManager; 
-			}
-		}
-		#endregion
-
-		#region AddinRegistry
-		private static IAddinRegistry addinRegistry;
-		public static IAddinRegistry AddinRegistry
-		{
-			get 
-			{
-				if (addinRegistry == null)
-					addinRegistry = (IAddinRegistry)ServiceManager.Services.GetService( typeof( IAddinRegistry ) );
-                
-				return addinRegistry;
-			}
-		}
-		#endregion
-
-		#region DomainManager
-		private static DomainManager domainManager;
-		public static DomainManager DomainManager
-		{
-			get
-			{
-				if ( domainManager == null )
-					domainManager = (DomainManager)ServiceManager.Services.GetService( typeof( DomainManager ) );
-
-				return domainManager;
-			}
-		}
-		#endregion
-
-		#region UserSettings
-		private static SettingsService userSettings;
-		public static SettingsService UserSettings
-		{
-			get 
-			{ 
-				if ( userSettings == null )
-					userSettings = (SettingsService)ServiceManager.Services.GetService( typeof( SettingsService ) );
-
-				// Temporary fix needed to run TestDomain tests in test AppDomain
-				// TODO: Figure out how to set up the test domain correctly
-				if ( userSettings == null )
-					userSettings = new SettingsService();
-
-				return userSettings; 
-			}
-		}
-		
-		#endregion
-
-		#region RecentFilesService
-		private static RecentFiles recentFiles;
-		public static RecentFiles RecentFiles
-		{
-			get
-			{
-				if ( recentFiles == null )
-					recentFiles = (RecentFiles)ServiceManager.Services.GetService( typeof( RecentFiles ) );
-
-				return recentFiles;
-			}
-		}
-		#endregion
-
-		#region TestLoader
-		private static TestLoader loader;
-		public static TestLoader TestLoader
-		{
-			get
-			{
-				if ( loader == null )
-					loader = (TestLoader)ServiceManager.Services.GetService( typeof( TestLoader ) );
-
-				return loader;
-			}
-		}
-		#endregion
-
-		#region TestAgency
-		private static TestAgency agency;
-		public static TestAgency TestAgency
-		{
-			get
-			{
-				if ( agency == null )
-					agency = (TestAgency)ServiceManager.Services.GetService( typeof( TestAgency ) );
-
-				// Temporary fix needed to run ProcessRunner tests in test AppDomain
-				// TODO: Figure out how to set up the test domain correctly
-//				if ( agency == null )
-//				{
-//					agency = new TestAgency();
-//					agency.Start();
-//				}
-
-				return agency;
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using NUnit.Core;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for Services
+	/// </summary>
+	public class Services
+	{
+		#region AddinManager
+		private static AddinManager addinManager;
+		public static AddinManager AddinManager
+		{
+			get 
+			{
+				if (addinManager == null )
+					addinManager = (AddinManager)ServiceManager.Services.GetService( typeof( AddinManager ) );
+
+				return addinManager; 
+			}
+		}
+		#endregion
+
+		#region AddinRegistry
+		private static IAddinRegistry addinRegistry;
+		public static IAddinRegistry AddinRegistry
+		{
+			get 
+			{
+				if (addinRegistry == null)
+					addinRegistry = (IAddinRegistry)ServiceManager.Services.GetService( typeof( IAddinRegistry ) );
+                
+				return addinRegistry;
+			}
+		}
+		#endregion
+
+		#region DomainManager
+		private static DomainManager domainManager;
+		public static DomainManager DomainManager
+		{
+			get
+			{
+				if ( domainManager == null )
+					domainManager = (DomainManager)ServiceManager.Services.GetService( typeof( DomainManager ) );
+
+				return domainManager;
+			}
+		}
+		#endregion
+
+		#region UserSettings
+		private static SettingsService userSettings;
+		public static SettingsService UserSettings
+		{
+			get 
+			{ 
+				if ( userSettings == null )
+					userSettings = (SettingsService)ServiceManager.Services.GetService( typeof( SettingsService ) );
+
+				// Temporary fix needed to run TestDomain tests in test AppDomain
+				// TODO: Figure out how to set up the test domain correctly
+				if ( userSettings == null )
+					userSettings = new SettingsService();
+
+				return userSettings; 
+			}
+		}
+		
+		#endregion
+
+		#region RecentFilesService
+		private static RecentFiles recentFiles;
+		public static RecentFiles RecentFiles
+		{
+			get
+			{
+				if ( recentFiles == null )
+					recentFiles = (RecentFiles)ServiceManager.Services.GetService( typeof( RecentFiles ) );
+
+				return recentFiles;
+			}
+		}
+		#endregion
+
+		#region TestLoader
+		private static TestLoader loader;
+		public static TestLoader TestLoader
+		{
+			get
+			{
+				if ( loader == null )
+					loader = (TestLoader)ServiceManager.Services.GetService( typeof( TestLoader ) );
+
+				return loader;
+			}
+		}
+		#endregion
+
+		#region TestAgency
+		private static TestAgency agency;
+		public static TestAgency TestAgency
+		{
+			get
+			{
+				if ( agency == null )
+					agency = (TestAgency)ServiceManager.Services.GetService( typeof( TestAgency ) );
+
+				// Temporary fix needed to run ProcessRunner tests in test AppDomain
+				// TODO: Figure out how to set up the test domain correctly
+//				if ( agency == null )
+//				{
+//					agency = new TestAgency();
+//					agency.Start();
+//				}
+
+				return agency;
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/AddinManager.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/AddinManager.cs
@@ -1,93 +1,93 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Diagnostics;
-using System.Collections;
-using System.Reflection;
-using NUnit.Core;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Util
-{
-	public class AddinManager : IService
-	{
-		#region Instance Fields
-		IAddinRegistry addinRegistry;
-		#endregion
-
-		#region Constructor
-		public AddinManager()
-		{
-		}
-		#endregion
-
-		#region Addin Registration
-		public void RegisterAddins()
-		{
-			//Figure out the directory from which NUnit is executing
-			string moduleName = TestFixtureBuilder.GetAssemblyPath( GetType().Assembly );
-			//string moduleName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
-			string nunitDirPath = Path.GetDirectoryName( moduleName );
-			string coreExtensions = Path.Combine( nunitDirPath, "nunit.core.extensions.dll" );
-			string addinsDirPath = Path.Combine( nunitDirPath, "addins" );
-
-			// Load nunit.core.extensions if available
-			if ( File.Exists( coreExtensions ) )
-				Register( coreExtensions );
-
-			// Load any extensions in the addins directory
-			DirectoryInfo dir = new DirectoryInfo( addinsDirPath );
-			if ( dir.Exists )
-				foreach( FileInfo file in dir.GetFiles( "*.dll" ) )
-					Register( file.FullName );
-		}
-
-		public void Register( string path )
-		{
-			try
-			{
-				AssemblyName assemblyName = new AssemblyName();
-				assemblyName.Name = Path.GetFileNameWithoutExtension(path);
-				assemblyName.CodeBase = path;
-				Assembly assembly = Assembly.Load(assemblyName);
-				NTrace.Debug( "Loaded " + Path.GetFileName(path) );
-
-				foreach ( Type type in assembly.GetExportedTypes() )
-				{
-					if ( type.GetCustomAttributes(typeof(NUnitAddinAttribute), false).Length == 1 )
-					{
-						Addin addin = new Addin( type );
-						addinRegistry.Register( addin );
-						NTrace.Debug( "Registered addin: " + addin.Name );
-					}
-				}
-			}
-			catch( Exception ex )
-			{
-				// NOTE: Since the gui isn't loaded at this point, 
-				// the trace output will only show up in Visual Studio
-				NTrace.Error( "Failed to load" + path, ex  );
-			}
-		}
-		#endregion
-
-		#region IService Members
-
-		public void InitializeService()
-		{
-			addinRegistry = Services.AddinRegistry;
-			RegisterAddins();
-		}
-
-		public void UnloadService()
-		{
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Diagnostics;
+using System.Collections;
+using System.Reflection;
+using NUnit.Core;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Util
+{
+	public class AddinManager : IService
+	{
+		#region Instance Fields
+		IAddinRegistry addinRegistry;
+		#endregion
+
+		#region Constructor
+		public AddinManager()
+		{
+		}
+		#endregion
+
+		#region Addin Registration
+		public void RegisterAddins()
+		{
+			//Figure out the directory from which NUnit is executing
+			string moduleName = TestFixtureBuilder.GetAssemblyPath( GetType().Assembly );
+			//string moduleName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
+			string nunitDirPath = Path.GetDirectoryName( moduleName );
+			string coreExtensions = Path.Combine( nunitDirPath, "nunit.core.extensions.dll" );
+			string addinsDirPath = Path.Combine( nunitDirPath, "addins" );
+
+			// Load nunit.core.extensions if available
+			if ( File.Exists( coreExtensions ) )
+				Register( coreExtensions );
+
+			// Load any extensions in the addins directory
+			DirectoryInfo dir = new DirectoryInfo( addinsDirPath );
+			if ( dir.Exists )
+				foreach( FileInfo file in dir.GetFiles( "*.dll" ) )
+					Register( file.FullName );
+		}
+
+		public void Register( string path )
+		{
+			try
+			{
+				AssemblyName assemblyName = new AssemblyName();
+				assemblyName.Name = Path.GetFileNameWithoutExtension(path);
+				assemblyName.CodeBase = path;
+				Assembly assembly = Assembly.Load(assemblyName);
+				NTrace.Debug( "Loaded " + Path.GetFileName(path) );
+
+				foreach ( Type type in assembly.GetExportedTypes() )
+				{
+					if ( type.GetCustomAttributes(typeof(NUnitAddinAttribute), false).Length == 1 )
+					{
+						Addin addin = new Addin( type );
+						addinRegistry.Register( addin );
+						NTrace.Debug( "Registered addin: " + addin.Name );
+					}
+				}
+			}
+			catch( Exception ex )
+			{
+				// NOTE: Since the gui isn't loaded at this point, 
+				// the trace output will only show up in Visual Studio
+				NTrace.Error( "Failed to load" + path, ex  );
+			}
+		}
+		#endregion
+
+		#region IService Members
+
+		public void InitializeService()
+		{
+			addinRegistry = Services.AddinRegistry;
+			RegisterAddins();
+		}
+
+		public void UnloadService()
+		{
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/AddinRegistry.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/AddinRegistry.cs
@@ -1,60 +1,60 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Reflection;
-using NUnit.Core;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for AddinRegistry.
-	/// </summary>
-	public class AddinRegistry : MarshalByRefObject, IAddinRegistry, IService
-    {
-        #region Instance Fields
-        private ArrayList addins = new ArrayList();
-		#endregion
-
-		#region IAddinRegistry Members
-
-		public void Register(Addin addin)
-		{
-			addins.Add( addin );
-		}
-
-		public  IList Addins
-		{
-			get
-			{
-				return addins;
-			}
-		}
-
-		public void SetStatus( string name, AddinStatus status, string message )
-		{
-			foreach( Addin addin in addins )
-				if ( addin.Name == name )
-				{
-					addin.Status = status;
-					addin.Message = message;
-				}
-		}
-		#endregion
-
-		#region IService Members
-		public void InitializeService()
-		{
-		}
-
-		public void UnloadService()
-		{
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using NUnit.Core;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for AddinRegistry.
+	/// </summary>
+	public class AddinRegistry : MarshalByRefObject, IAddinRegistry, IService
+    {
+        #region Instance Fields
+        private ArrayList addins = new ArrayList();
+		#endregion
+
+		#region IAddinRegistry Members
+
+		public void Register(Addin addin)
+		{
+			addins.Add( addin );
+		}
+
+		public  IList Addins
+		{
+			get
+			{
+				return addins;
+			}
+		}
+
+		public void SetStatus( string name, AddinStatus status, string message )
+		{
+			foreach( Addin addin in addins )
+				if ( addin.Name == name )
+				{
+					addin.Status = status;
+					addin.Message = message;
+				}
+		}
+		#endregion
+
+		#region IService Members
+		public void InitializeService()
+		{
+		}
+
+		public void UnloadService()
+		{
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/DomainManager.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/DomainManager.cs
@@ -1,298 +1,298 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Collections;
-using System.Text;
-using System.Threading;
-using System.Configuration;
-using System.Diagnostics;
-using System.Security.Policy;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// The DomainManager class handles the creation and unloading
-	/// of domains as needed and keeps track of all existing domains.
-	/// </summary>
-	public class DomainManager : IService
-	{
-		#region Properties
-		private static string shadowCopyPath;
-		public static string ShadowCopyPath
-		{
-			get
-			{
-				if ( shadowCopyPath == null )
-				{
-					shadowCopyPath = ConfigurationSettings.AppSettings["shadowfiles.path"];
-					if ( shadowCopyPath == "" || shadowCopyPath== null )
-						shadowCopyPath = Path.Combine( Path.GetTempPath(), @"nunit20\ShadowCopyCache" );
-					else
-						shadowCopyPath = Environment.ExpandEnvironmentVariables(shadowCopyPath);
-
-					// FIXME: we know that in the config file we have %temp%...
-					if( shadowCopyPath.IndexOf ( "%temp%\\" ) != -1) {
-						shadowCopyPath = shadowCopyPath.Replace( "%temp%\\", Path.GetTempPath() );
-						if ( Path.DirectorySeparatorChar == '/' )
-							shadowCopyPath = shadowCopyPath.Replace ( '\\', '/' );
-					}
-				}
-
-				return shadowCopyPath;
-			}
-		}
-		#endregion
-
-		#region Create and Unload Domains
-		/// <summary>
-		/// Construct an application domain for running a test package
-		/// </summary>
-		/// <param name="package">The TestPackage to be run</param>
-		public AppDomain CreateDomain( TestPackage package )
-		{
-			FileInfo testFile = new FileInfo( package.FullName );
-
-			AppDomainSetup setup = new AppDomainSetup();
-
-			// We always use the same application name
-			setup.ApplicationName = "Tests";
-
-			string appBase = package.BasePath;
-			if ( appBase == null || appBase == string.Empty )
-				appBase = testFile.DirectoryName;
-			setup.ApplicationBase = appBase;
-
-			string configFile = package.ConfigurationFile;
-			if ( configFile == null || configFile == string.Empty )
-				configFile = NUnitProject.IsProjectFile(testFile.Name) 
-					? Path.GetFileNameWithoutExtension( testFile.Name ) + ".config"
-					: testFile.Name + ".config";
-			// Note: Mono needs full path to config file...
-			setup.ConfigurationFile =  Path.Combine( appBase, configFile );
-
-			string binPath = package.PrivateBinPath;
-			if ( package.AutoBinPath )
-				binPath = GetPrivateBinPath( appBase, package.Assemblies );
-			setup.PrivateBinPath = binPath;
-
-			if ( package.GetSetting( "ShadowCopyFiles", true ) )
-			{
-				setup.ShadowCopyFiles = "true";
-				setup.ShadowCopyDirectories = appBase;
-				setup.CachePath = GetCachePath();
-			}
-
-			string domainName = "domain-" + package.Name;
-			Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
-			Evidence evidence = new Evidence(baseEvidence);
-			AppDomain runnerDomain = AppDomain.CreateDomain(domainName, evidence, setup);
-
-			// Inject assembly resolver into remote domain to help locate our assemblies
-			AssemblyResolver assemblyResolver = (AssemblyResolver)runnerDomain.CreateInstanceFromAndUnwrap(
-				typeof(AssemblyResolver).Assembly.CodeBase,
-				typeof(AssemblyResolver).FullName);
-
-			// Tell resolver to use our core assemblies in the test domain
-			assemblyResolver.AddFile( typeof( NUnit.Core.RemoteTestRunner ).Assembly.Location );
-			assemblyResolver.AddFile( typeof( NUnit.Core.ITest ).Assembly.Location );
-
-// No reference to extensions, so we do it a different way
-            string moduleName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
-            string nunitDirPath = Path.GetDirectoryName(moduleName);
-//            string coreExtensions = Path.Combine(nunitDirPath, "nunit.core.extensions.dll");
-//			assemblyResolver.AddFile( coreExtensions );
-            //assemblyResolver.AddFiles( nunitDirPath, "*.dll" );
-
-            string addinsDirPath = Path.Combine(nunitDirPath, "addins");
-            assemblyResolver.AddDirectory( addinsDirPath );
-
-			// HACK: Only pass down our AddinRegistry one level so that tests of NUnit
-			// itself start without any addins defined.
-			if ( !IsTestDomain( AppDomain.CurrentDomain ) )
-				runnerDomain.SetData("AddinRegistry", Services.AddinRegistry);
-
-			return runnerDomain;
-		}
-
-		public void Unload( AppDomain domain )
-		{
-			new DomainUnloader(domain).Unload();
-		}
-		#endregion
-
-		#region Nested DomainUnloader Class
-		class DomainUnloader
-		{
-			private Thread thread;
-			private AppDomain domain;
-
-			public DomainUnloader(AppDomain domain)
-			{
-				this.domain = domain;
-			}
-
-			public void Unload()
-			{
-				thread = new Thread(new ThreadStart(UnloadOnThread));
-				thread.Start();
-				if (!thread.Join(20000))
-				{
-					Trace.WriteLine("Unable to unload AppDomain {0}", domain.FriendlyName);
-					Trace.WriteLine("Unload thread timed out");
-				}
-			}
-
-			private void UnloadOnThread()
-			{
-				bool shadowCopy = domain.ShadowCopyFiles;
-				string cachePath = domain.SetupInformation.CachePath;
-				string domainName = domain.FriendlyName;
-
-    	        try
-	            {
-        	        AppDomain.Unload(domain);
-            	}
-	            catch (Exception ex)
-    	        {
-        	        // We assume that the tests did something bad and just leave
-            	    // the orphaned AppDomain "out there". 
-                	// TODO: Something useful.
-	                Trace.WriteLine("Unable to unload AppDomain {0}", domainName);
-    	            Trace.WriteLine(ex.ToString());
-        	    }
-            	finally
-	            {
-    	            if (shadowCopy)
-        	            DeleteCacheDir(new DirectoryInfo(cachePath));
-            	}
-			}
-		}
-		#endregion
-
-		#region Helper Methods
-		/// <summary>
-		/// Get the location for caching and delete any old cache info
-		/// </summary>
-		private string GetCachePath()
-		{
-            int processId = Process.GetCurrentProcess().Id;
-            long ticks = DateTime.Now.Ticks;
-			string cachePath = Path.Combine( ShadowCopyPath, processId.ToString() + "_" + ticks.ToString() ); 
-				
-			try 
-			{
-				DirectoryInfo dir = new DirectoryInfo(cachePath);		
-				if(dir.Exists) dir.Delete(true);
-			}
-			catch( Exception ex)
-			{
-				throw new ApplicationException( 
-					string.Format( "Invalid cache path: {0}",cachePath ),
-					ex );
-			}
-
-			return cachePath;
-		}
-
-		/// <summary>
-		/// Helper method to delete the cache dir. This method deals 
-		/// with a bug that occurs when files are marked read-only
-		/// and deletes each file separately in order to give better 
-		/// exception information when problems occur.
-		/// 
-		/// TODO: This entire method is problematic. Should we be doing it?
-		/// </summary>
-		/// <param name="cacheDir"></param>
-		private static void DeleteCacheDir( DirectoryInfo cacheDir )
-		{
-			//			Debug.WriteLine( "Modules:");
-			//			foreach( ProcessModule module in Process.GetCurrentProcess().Modules )
-			//				Debug.WriteLine( module.ModuleName );
-			
-
-			if(cacheDir.Exists)
-			{
-				foreach( DirectoryInfo dirInfo in cacheDir.GetDirectories() )
-					DeleteCacheDir( dirInfo );
-
-				foreach( FileInfo fileInfo in cacheDir.GetFiles() )
-				{
-					fileInfo.Attributes = FileAttributes.Normal;
-					try 
-					{
-						fileInfo.Delete();
-					}
-					catch( Exception ex )
-					{
-						Debug.WriteLine( string.Format( 
-							"Error deleting {0}, {1}", fileInfo.Name, ex.Message ) );
-					}
-				}
-
-				cacheDir.Attributes = FileAttributes.Normal;
-
-				try
-				{
-					cacheDir.Delete();
-				}
-				catch( Exception ex )
-				{
-					Debug.WriteLine( string.Format( 
-						"Error deleting {0}, {1}", cacheDir.Name, ex.Message ) );
-				}
-			}
-		}
-
-		private bool IsTestDomain(AppDomain domain)
-		{
-			return domain.FriendlyName.StartsWith( "domain-" );
-		}
-
-		public static string GetPrivateBinPath( string basePath, IList assemblies )
-		{
-			StringBuilder sb = new StringBuilder(200);
-			ArrayList dirList = new ArrayList();
-
-			foreach( string assembly in assemblies )
-			{
-				string dir = PathUtils.RelativePath( basePath, Path.GetDirectoryName( assembly ) );
-				if ( dir != null && dir != "." && !dirList.Contains( dir ) )
-				{
-					dirList.Add( dir );
-					if ( sb.Length > 0 )
-						sb.Append( Path.PathSeparator );
-					sb.Append( dir );
-				}
-			}
-
-			return sb.Length == 0 ? null : sb.ToString();
-		}
-
-		public static void DeleteShadowCopyPath()
-		{
-			if ( Directory.Exists( ShadowCopyPath ) )
-				Directory.Delete( ShadowCopyPath, true );
-		}
-		#endregion
-
-		#region IService Members
-
-		public void UnloadService()
-		{
-			// TODO:  Add DomainManager.UnloadService implementation
-		}
-
-		public void InitializeService()
-		{
-			// TODO:  Add DomainManager.InitializeService implementation
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Text;
+using System.Threading;
+using System.Configuration;
+using System.Diagnostics;
+using System.Security.Policy;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// The DomainManager class handles the creation and unloading
+	/// of domains as needed and keeps track of all existing domains.
+	/// </summary>
+	public class DomainManager : IService
+	{
+		#region Properties
+		private static string shadowCopyPath;
+		public static string ShadowCopyPath
+		{
+			get
+			{
+				if ( shadowCopyPath == null )
+				{
+					shadowCopyPath = ConfigurationSettings.AppSettings["shadowfiles.path"];
+					if ( shadowCopyPath == "" || shadowCopyPath== null )
+						shadowCopyPath = Path.Combine( Path.GetTempPath(), @"nunit20\ShadowCopyCache" );
+					else
+						shadowCopyPath = Environment.ExpandEnvironmentVariables(shadowCopyPath);
+
+					// FIXME: we know that in the config file we have %temp%...
+					if( shadowCopyPath.IndexOf ( "%temp%\\" ) != -1) {
+						shadowCopyPath = shadowCopyPath.Replace( "%temp%\\", Path.GetTempPath() );
+						if ( Path.DirectorySeparatorChar == '/' )
+							shadowCopyPath = shadowCopyPath.Replace ( '\\', '/' );
+					}
+				}
+
+				return shadowCopyPath;
+			}
+		}
+		#endregion
+
+		#region Create and Unload Domains
+		/// <summary>
+		/// Construct an application domain for running a test package
+		/// </summary>
+		/// <param name="package">The TestPackage to be run</param>
+		public AppDomain CreateDomain( TestPackage package )
+		{
+			FileInfo testFile = new FileInfo( package.FullName );
+
+			AppDomainSetup setup = new AppDomainSetup();
+
+			// We always use the same application name
+			setup.ApplicationName = "Tests";
+
+			string appBase = package.BasePath;
+			if ( appBase == null || appBase == string.Empty )
+				appBase = testFile.DirectoryName;
+			setup.ApplicationBase = appBase;
+
+			string configFile = package.ConfigurationFile;
+			if ( configFile == null || configFile == string.Empty )
+				configFile = NUnitProject.IsProjectFile(testFile.Name) 
+					? Path.GetFileNameWithoutExtension( testFile.Name ) + ".config"
+					: testFile.Name + ".config";
+			// Note: Mono needs full path to config file...
+			setup.ConfigurationFile =  Path.Combine( appBase, configFile );
+
+			string binPath = package.PrivateBinPath;
+			if ( package.AutoBinPath )
+				binPath = GetPrivateBinPath( appBase, package.Assemblies );
+			setup.PrivateBinPath = binPath;
+
+			if ( package.GetSetting( "ShadowCopyFiles", true ) )
+			{
+				setup.ShadowCopyFiles = "true";
+				setup.ShadowCopyDirectories = appBase;
+				setup.CachePath = GetCachePath();
+			}
+
+			string domainName = "domain-" + package.Name;
+			Evidence baseEvidence = AppDomain.CurrentDomain.Evidence;
+			Evidence evidence = new Evidence(baseEvidence);
+			AppDomain runnerDomain = AppDomain.CreateDomain(domainName, evidence, setup);
+
+			// Inject assembly resolver into remote domain to help locate our assemblies
+			AssemblyResolver assemblyResolver = (AssemblyResolver)runnerDomain.CreateInstanceFromAndUnwrap(
+				typeof(AssemblyResolver).Assembly.CodeBase,
+				typeof(AssemblyResolver).FullName);
+
+			// Tell resolver to use our core assemblies in the test domain
+			assemblyResolver.AddFile( typeof( NUnit.Core.RemoteTestRunner ).Assembly.Location );
+			assemblyResolver.AddFile( typeof( NUnit.Core.ITest ).Assembly.Location );
+
+// No reference to extensions, so we do it a different way
+            string moduleName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
+            string nunitDirPath = Path.GetDirectoryName(moduleName);
+//            string coreExtensions = Path.Combine(nunitDirPath, "nunit.core.extensions.dll");
+//			assemblyResolver.AddFile( coreExtensions );
+            //assemblyResolver.AddFiles( nunitDirPath, "*.dll" );
+
+            string addinsDirPath = Path.Combine(nunitDirPath, "addins");
+            assemblyResolver.AddDirectory( addinsDirPath );
+
+			// HACK: Only pass down our AddinRegistry one level so that tests of NUnit
+			// itself start without any addins defined.
+			if ( !IsTestDomain( AppDomain.CurrentDomain ) )
+				runnerDomain.SetData("AddinRegistry", Services.AddinRegistry);
+
+			return runnerDomain;
+		}
+
+		public void Unload( AppDomain domain )
+		{
+			new DomainUnloader(domain).Unload();
+		}
+		#endregion
+
+		#region Nested DomainUnloader Class
+		class DomainUnloader
+		{
+			private Thread thread;
+			private AppDomain domain;
+
+			public DomainUnloader(AppDomain domain)
+			{
+				this.domain = domain;
+			}
+
+			public void Unload()
+			{
+				thread = new Thread(new ThreadStart(UnloadOnThread));
+				thread.Start();
+				if (!thread.Join(20000))
+				{
+					Trace.WriteLine("Unable to unload AppDomain {0}", domain.FriendlyName);
+					Trace.WriteLine("Unload thread timed out");
+				}
+			}
+
+			private void UnloadOnThread()
+			{
+				bool shadowCopy = domain.ShadowCopyFiles;
+				string cachePath = domain.SetupInformation.CachePath;
+				string domainName = domain.FriendlyName;
+
+    	        try
+	            {
+        	        AppDomain.Unload(domain);
+            	}
+	            catch (Exception ex)
+    	        {
+        	        // We assume that the tests did something bad and just leave
+            	    // the orphaned AppDomain "out there". 
+                	// TODO: Something useful.
+	                Trace.WriteLine("Unable to unload AppDomain {0}", domainName);
+    	            Trace.WriteLine(ex.ToString());
+        	    }
+            	finally
+	            {
+    	            if (shadowCopy)
+        	            DeleteCacheDir(new DirectoryInfo(cachePath));
+            	}
+			}
+		}
+		#endregion
+
+		#region Helper Methods
+		/// <summary>
+		/// Get the location for caching and delete any old cache info
+		/// </summary>
+		private string GetCachePath()
+		{
+            int processId = Process.GetCurrentProcess().Id;
+            long ticks = DateTime.Now.Ticks;
+			string cachePath = Path.Combine( ShadowCopyPath, processId.ToString() + "_" + ticks.ToString() ); 
+				
+			try 
+			{
+				DirectoryInfo dir = new DirectoryInfo(cachePath);		
+				if(dir.Exists) dir.Delete(true);
+			}
+			catch( Exception ex)
+			{
+				throw new ApplicationException( 
+					string.Format( "Invalid cache path: {0}",cachePath ),
+					ex );
+			}
+
+			return cachePath;
+		}
+
+		/// <summary>
+		/// Helper method to delete the cache dir. This method deals 
+		/// with a bug that occurs when files are marked read-only
+		/// and deletes each file separately in order to give better 
+		/// exception information when problems occur.
+		/// 
+		/// TODO: This entire method is problematic. Should we be doing it?
+		/// </summary>
+		/// <param name="cacheDir"></param>
+		private static void DeleteCacheDir( DirectoryInfo cacheDir )
+		{
+			//			Debug.WriteLine( "Modules:");
+			//			foreach( ProcessModule module in Process.GetCurrentProcess().Modules )
+			//				Debug.WriteLine( module.ModuleName );
+			
+
+			if(cacheDir.Exists)
+			{
+				foreach( DirectoryInfo dirInfo in cacheDir.GetDirectories() )
+					DeleteCacheDir( dirInfo );
+
+				foreach( FileInfo fileInfo in cacheDir.GetFiles() )
+				{
+					fileInfo.Attributes = FileAttributes.Normal;
+					try 
+					{
+						fileInfo.Delete();
+					}
+					catch( Exception ex )
+					{
+						Debug.WriteLine( string.Format( 
+							"Error deleting {0}, {1}", fileInfo.Name, ex.Message ) );
+					}
+				}
+
+				cacheDir.Attributes = FileAttributes.Normal;
+
+				try
+				{
+					cacheDir.Delete();
+				}
+				catch( Exception ex )
+				{
+					Debug.WriteLine( string.Format( 
+						"Error deleting {0}, {1}", cacheDir.Name, ex.Message ) );
+				}
+			}
+		}
+
+		private bool IsTestDomain(AppDomain domain)
+		{
+			return domain.FriendlyName.StartsWith( "domain-" );
+		}
+
+		public static string GetPrivateBinPath( string basePath, IList assemblies )
+		{
+			StringBuilder sb = new StringBuilder(200);
+			ArrayList dirList = new ArrayList();
+
+			foreach( string assembly in assemblies )
+			{
+				string dir = PathUtils.RelativePath( basePath, Path.GetDirectoryName( assembly ) );
+				if ( dir != null && dir != "." && !dirList.Contains( dir ) )
+				{
+					dirList.Add( dir );
+					if ( sb.Length > 0 )
+						sb.Append( Path.PathSeparator );
+					sb.Append( dir );
+				}
+			}
+
+			return sb.Length == 0 ? null : sb.ToString();
+		}
+
+		public static void DeleteShadowCopyPath()
+		{
+			if ( Directory.Exists( ShadowCopyPath ) )
+				Directory.Delete( ShadowCopyPath, true );
+		}
+		#endregion
+
+		#region IService Members
+
+		public void UnloadService()
+		{
+			// TODO:  Add DomainManager.UnloadService implementation
+		}
+
+		public void InitializeService()
+		{
+			// TODO:  Add DomainManager.InitializeService implementation
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/RecentFilesService.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/RecentFilesService.cs
@@ -1,169 +1,169 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for RecentFilesService.
-	/// </summary>
-	public class RecentFilesService : RecentFiles, NUnit.Core.IService
-	{
-		private RecentFilesCollection fileEntries = new RecentFilesCollection();
-
-		private ISettings settings;
-
-		public static readonly int MinSize = 1;
-
-		public static readonly int MaxSize = 24;
-
-		public static readonly int DefaultSize = 5;
-
-		#region Constructor
-		public RecentFilesService()
-			: this( Services.UserSettings ) { }
-
-		public RecentFilesService( ISettings settings ) 
-		{
-			this.settings = settings;
-		}
-		#endregion
-
-		#region Properties
-		public int Count
-		{
-			get { return fileEntries.Count; }
-		}
-
-		public int MaxFiles
-		{
-			get 
-			{ 
-				int size = settings.GetSetting( "RecentProjects.MaxFiles", DefaultSize );
-				
-				if ( size < MinSize ) size = MinSize;
-				if ( size > MaxSize ) size = MaxSize;
-				
-				return size;
-			}
-			set 
-			{ 
-				int oldSize = MaxFiles;
-				int newSize = value;
-				
-				if ( newSize < MinSize ) newSize = MinSize;
-				if ( newSize > MaxSize ) newSize = MaxSize;
-
-				settings.SaveSetting( "RecentProjects.MaxFiles", newSize );
-				if ( newSize < oldSize ) SaveEntriesToSettings( this. settings );
-			}
-		}
-		#endregion
-
-		#region Public Methods
-		public RecentFilesCollection Entries
-		{
-			get
-			{
-				return fileEntries;
-			}
-		}
-		
-		public void Remove( string fileName )
-		{
-			fileEntries.Remove( fileName );
-		}
-
-		public void SetMostRecent( string fileName )
-		{
-			SetMostRecent( new RecentFileEntry( fileName ) );
-		}
-
-		public void SetMostRecent( RecentFileEntry entry )
-		{
-			int index = fileEntries.IndexOf(entry.Path);
-
-			if(index != -1)
-				fileEntries.RemoveAt(index);
-
-			fileEntries.Insert( 0, entry );
-			if( fileEntries.Count > MaxFiles )
-				fileEntries.RemoveAt( MaxFiles );
-		}
-		#endregion
-
-		#region Helper Methods for saving and restoring the settings
-		private void LoadEntriesFromSettings( ISettings settings )
-		{
-			fileEntries.Clear();
-
-			string prefix = Environment.Version.Major >= 2
-				? "RecentProjects.V2"
-				: "RecentProjects.V1";
-
-			for ( int index = 1; index <= MaxFiles; index++ )
-			{
-				string fileSpec = settings.GetSetting( GetRecentFileKey( prefix, index ) ) as string;
-				if ( fileSpec != null )	fileEntries.Add( new RecentFileEntry( fileSpec ) );
-			}
-
-			// Try legacy entries if nothing was found
-			if ( fileEntries.Count == 0 )
-			{
-				for ( int index = 1; index <= MaxFiles; index++ )
-				{
-					string fileSpec = settings.GetSetting( GetRecentFileKey( "RecentProjects", index ) ) as string;
-					if ( fileSpec != null )
-					{
-						RecentFileEntry entry = RecentFileEntry.Parse( fileSpec );
-						if ( entry.CLRVersion.Major <= Environment.Version.Major )
-							fileEntries.Add( entry );
-					}
-				}
-			};
-		}
-
-		private void SaveEntriesToSettings( ISettings settings )
-		{
-			string prefix = Environment.Version.Major >= 2
-				? "RecentProjects.V2"
-				: "RecentProjects.V1";
-
-			while( fileEntries.Count > MaxFiles )
-				fileEntries.RemoveAt( fileEntries.Count - 1 );
-
-			for( int index = 0; index < MaxSize; index++ ) 
-			{
-				string keyName = GetRecentFileKey( prefix, index + 1 );
-				if ( index < fileEntries.Count )
-					settings.SaveSetting( keyName, fileEntries[index].Path );
-				else
-					settings.RemoveSetting( keyName );
-			}
-		}
-
-		private string GetRecentFileKey( string prefix, int index )
-		{
-			return string.Format( "{0}.File{1}", prefix, index );
-		}
-		#endregion
-
-		#region IService Members
-
-		public void UnloadService()
-		{
-			SaveEntriesToSettings( this.settings );
-		}
-
-		public void InitializeService()
-		{
-			LoadEntriesFromSettings( this.settings );
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for RecentFilesService.
+	/// </summary>
+	public class RecentFilesService : RecentFiles, NUnit.Core.IService
+	{
+		private RecentFilesCollection fileEntries = new RecentFilesCollection();
+
+		private ISettings settings;
+
+		public static readonly int MinSize = 1;
+
+		public static readonly int MaxSize = 24;
+
+		public static readonly int DefaultSize = 5;
+
+		#region Constructor
+		public RecentFilesService()
+			: this( Services.UserSettings ) { }
+
+		public RecentFilesService( ISettings settings ) 
+		{
+			this.settings = settings;
+		}
+		#endregion
+
+		#region Properties
+		public int Count
+		{
+			get { return fileEntries.Count; }
+		}
+
+		public int MaxFiles
+		{
+			get 
+			{ 
+				int size = settings.GetSetting( "RecentProjects.MaxFiles", DefaultSize );
+				
+				if ( size < MinSize ) size = MinSize;
+				if ( size > MaxSize ) size = MaxSize;
+				
+				return size;
+			}
+			set 
+			{ 
+				int oldSize = MaxFiles;
+				int newSize = value;
+				
+				if ( newSize < MinSize ) newSize = MinSize;
+				if ( newSize > MaxSize ) newSize = MaxSize;
+
+				settings.SaveSetting( "RecentProjects.MaxFiles", newSize );
+				if ( newSize < oldSize ) SaveEntriesToSettings( this. settings );
+			}
+		}
+		#endregion
+
+		#region Public Methods
+		public RecentFilesCollection Entries
+		{
+			get
+			{
+				return fileEntries;
+			}
+		}
+		
+		public void Remove( string fileName )
+		{
+			fileEntries.Remove( fileName );
+		}
+
+		public void SetMostRecent( string fileName )
+		{
+			SetMostRecent( new RecentFileEntry( fileName ) );
+		}
+
+		public void SetMostRecent( RecentFileEntry entry )
+		{
+			int index = fileEntries.IndexOf(entry.Path);
+
+			if(index != -1)
+				fileEntries.RemoveAt(index);
+
+			fileEntries.Insert( 0, entry );
+			if( fileEntries.Count > MaxFiles )
+				fileEntries.RemoveAt( MaxFiles );
+		}
+		#endregion
+
+		#region Helper Methods for saving and restoring the settings
+		private void LoadEntriesFromSettings( ISettings settings )
+		{
+			fileEntries.Clear();
+
+			string prefix = Environment.Version.Major >= 2
+				? "RecentProjects.V2"
+				: "RecentProjects.V1";
+
+			for ( int index = 1; index <= MaxFiles; index++ )
+			{
+				string fileSpec = settings.GetSetting( GetRecentFileKey( prefix, index ) ) as string;
+				if ( fileSpec != null )	fileEntries.Add( new RecentFileEntry( fileSpec ) );
+			}
+
+			// Try legacy entries if nothing was found
+			if ( fileEntries.Count == 0 )
+			{
+				for ( int index = 1; index <= MaxFiles; index++ )
+				{
+					string fileSpec = settings.GetSetting( GetRecentFileKey( "RecentProjects", index ) ) as string;
+					if ( fileSpec != null )
+					{
+						RecentFileEntry entry = RecentFileEntry.Parse( fileSpec );
+						if ( entry.CLRVersion.Major <= Environment.Version.Major )
+							fileEntries.Add( entry );
+					}
+				}
+			};
+		}
+
+		private void SaveEntriesToSettings( ISettings settings )
+		{
+			string prefix = Environment.Version.Major >= 2
+				? "RecentProjects.V2"
+				: "RecentProjects.V1";
+
+			while( fileEntries.Count > MaxFiles )
+				fileEntries.RemoveAt( fileEntries.Count - 1 );
+
+			for( int index = 0; index < MaxSize; index++ ) 
+			{
+				string keyName = GetRecentFileKey( prefix, index + 1 );
+				if ( index < fileEntries.Count )
+					settings.SaveSetting( keyName, fileEntries[index].Path );
+				else
+					settings.RemoveSetting( keyName );
+			}
+		}
+
+		private string GetRecentFileKey( string prefix, int index )
+		{
+			return string.Format( "{0}.File{1}", prefix, index );
+		}
+		#endregion
+
+		#region IService Members
+
+		public void UnloadService()
+		{
+			SaveEntriesToSettings( this.settings );
+		}
+
+		public void InitializeService()
+		{
+			LoadEntriesFromSettings( this.settings );
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/ServiceManager.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/ServiceManager.cs
@@ -1,82 +1,82 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for ServiceManger.
-	/// </summary>
-	public class ServiceManager
-	{
-		private ArrayList services = new ArrayList();
-		private Hashtable serviceIndex = new Hashtable();
-
-		private static ServiceManager defaultServiceManager = new ServiceManager();
-
-		public static ServiceManager Services
-		{
-			get { return defaultServiceManager; }
-		}
-
-		public void AddService( IService service )
-		{
-			services.Add( service );
-			NTrace.Debug( "Added " + service.GetType().Name );
-		}
-
-		public IService GetService( Type serviceType )
-		{
-			IService theService = (IService)serviceIndex[serviceType];
-			if ( theService == null )
-				foreach( IService service in services )
-				{
-					// TODO: Does this work on Mono?
-					if( serviceType.IsInstanceOfType( service ) )
-					{
-						serviceIndex[serviceType] = service;
-						theService = service;
-						break;
-					}
-				}
-
-			if ( theService == null )
-				NTrace.Error( string.Format( "Requested service {0} was not found", serviceType.FullName ) );
-			else
-				NTrace.Info( string.Format( "Request for service {0} satisfied by {1}", serviceType.Name, theService.GetType().Name ) );
-			
-			return theService;
-		}
-
-		public void InitializeServices()
-		{
-			foreach( IService service in services )
-			{
-				NTrace.Info( "Initializing " + service.GetType().Name );
-				service.InitializeService();
-			}
-		}
-
-		public void StopAllServices()
-		{
-			// Stop services in reverse of initialization order
-			// TODO: Deal with dependencies explicitly
-			int index = services.Count;
-			while( --index >= 0 )
-				((IService)services[index]).UnloadService();
-		}
-
-		public void ClearServices()
-		{
-			services.Clear();
-		}
-
-		private ServiceManager() { }
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for ServiceManger.
+	/// </summary>
+	public class ServiceManager
+	{
+		private ArrayList services = new ArrayList();
+		private Hashtable serviceIndex = new Hashtable();
+
+		private static ServiceManager defaultServiceManager = new ServiceManager();
+
+		public static ServiceManager Services
+		{
+			get { return defaultServiceManager; }
+		}
+
+		public void AddService( IService service )
+		{
+			services.Add( service );
+			NTrace.Debug( "Added " + service.GetType().Name );
+		}
+
+		public IService GetService( Type serviceType )
+		{
+			IService theService = (IService)serviceIndex[serviceType];
+			if ( theService == null )
+				foreach( IService service in services )
+				{
+					// TODO: Does this work on Mono?
+					if( serviceType.IsInstanceOfType( service ) )
+					{
+						serviceIndex[serviceType] = service;
+						theService = service;
+						break;
+					}
+				}
+
+			if ( theService == null )
+				NTrace.Error( string.Format( "Requested service {0} was not found", serviceType.FullName ) );
+			else
+				NTrace.Info( string.Format( "Request for service {0} satisfied by {1}", serviceType.Name, theService.GetType().Name ) );
+			
+			return theService;
+		}
+
+		public void InitializeServices()
+		{
+			foreach( IService service in services )
+			{
+				NTrace.Info( "Initializing " + service.GetType().Name );
+				service.InitializeService();
+			}
+		}
+
+		public void StopAllServices()
+		{
+			// Stop services in reverse of initialization order
+			// TODO: Deal with dependencies explicitly
+			int index = services.Count;
+			while( --index >= 0 )
+				((IService)services[index]).UnloadService();
+		}
+
+		public void ClearServices()
+		{
+			services.Clear();
+		}
+
+		private ServiceManager() { }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/SettingsService.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/SettingsService.cs
@@ -1,140 +1,140 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using Microsoft.Win32;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for UserSettingsService.
-	/// </summary>
-	public class SettingsService : SettingsGroup, NUnit.Core.IService
-	{
-		static readonly string applicationDirectory = 
-			Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData ) 
-			+ Path.DirectorySeparatorChar + "NUnit" + Path.DirectorySeparatorChar;
-
-		static readonly string settingsFileName = "NUnitSettings.xml";
-
-		public SettingsService()
-		{
-			string settingsFile = System.Configuration.ConfigurationSettings.AppSettings["settingsFile"];
-			if ( settingsFile == null )
-				settingsFile = applicationDirectory + settingsFileName;
-
-			this.storage = new XmlSettingsStorage( settingsFile );
-
-			if ( File.Exists( settingsFile ) )
-				storage.LoadSettings();
-			else
-				ConvertLegacySettings();
-		}
-
-		#region IService Implementation
-		public void InitializeService()
-		{
-		}
-
-		public void UnloadService()
-		{
-			storage.SaveSettings();
-			this.Dispose();
-		}
-		#endregion
-
-		#region ConvertLegacySettings
-		void ConvertLegacySettings()
-		{
-			RegistryKey key = Registry.CurrentUser.OpenSubKey( NUnitRegistry.KEY );
-			if ( key == null )
-				key = Registry.CurrentUser.OpenSubKey( NUnitRegistry.LEGACY_KEY );
-
-			if ( key != null )
-			{
-				using( ISettingsStorage legacyStorage = new RegistrySettingsStorage( key ) )
-				{
-					new LegacySettingsConverter( legacyStorage, storage ).Convert();
-				}
-
-				storage.SaveSettings();
-			}
-		}
-
-		private class LegacySettingsConverter : SettingsGroup
-		{
-			private ISettingsStorage legacy;
-			private ISettingsStorage current;
-
-			public LegacySettingsConverter( ISettingsStorage legacy, ISettingsStorage current )
-				: base( current )
-			{
-				this.legacy = legacy;
-				this.current = current;
-			}
-
-			public void Convert()
-			{
-				Convert( "Form.x-location", "Gui.MainForm.Left" );
-				Convert( "Form.x-location", "Gui.MiniForm.Left" );
-				Convert( "Form.y-location", "Gui.MainForm.Top" );
-				Convert( "Form.y-location", "Gui.MiniForm.Top" );
-				Convert( "Form.width", "Gui.MainForm.Width" );
-				Convert( "Form.width", "Gui.MiniForm.Width" );
-				Convert( "Form.height", "Gui.MainForm.Height" );
-				Convert( "Form.height", "Gui.MiniForm.Height" );
-				Convert( "Form.maximized", "Gui.MainForm.Maximized", "False", "True" );
-				Convert( "Form.maximized", "Gui.MiniForm.Maximized", "False", "True" );
-				Convert( "Form.font", "Gui.MainForm.Font" );
-				Convert( "Form.font", "Gui.MiniForm.Font" );
-				Convert( "Form.tree-splitter-position", "Gui.MainForm.SplitPosition");
-				Convert( "Form.tab-splitter-position", "Gui.ResultTabs.ErrorsTabSplitterPosition");
-				Convert( "Options.TestLabels", "Gui.ResultTabs.DisplayTestLabels", "False", "True" );
-				Convert( "Options.FailureToolTips", "Gui.ResultTabs.ErrorTab.ToolTipsEnabled", "False", "True" );
-				Convert( "Options.EnableWordWrapForFailures", "Gui.ResultTabs.ErrorTab.WordWrapEnabled", "False", "True" );
-				Convert( "Options.InitialTreeDisplay", "Gui.TestTree.InitialTreeDisplay", "Auto", "Expand", "Collapse", "HideTests"  );
-				Convert( "Options.ShowCheckBoxes", "Gui.TestTree.ShowCheckBoxes", "False", "True" );
-				Convert( "Options.LoadLastProject", "Options.LoadLastProject", "False", "True" );
-				Convert( "Options.ClearResults", "Options.TestLoader.ClearResultsOnReload", "False", "True" ); 
-				Convert( "Options.ReloadOnChange", "Options.TestLoader.ReloadOnChange", "False", "True" );
-				Convert( "Options.RerunOnChange", "Options.TestLoader.RerunOnChange", "False", "True" );
-				Convert( "Options.ReloadOnRun", "Options.TestLoader.ReloadOnRun", "False", "True" );
-				Convert( "Options.MergeAssemblies", "Options.TestLoader.MergeAssemblies", "False", "True" );
-				Convert( "Options.MultiDomain", "Options.TestLoader.MultiDomain", "False", "True" );
-				Convert( "Options.AutoNamespaceSuites", "Options.TestLoader.AutoNamespaceSuites", "False", "True" );
-				Convert( "Options.VisualStudioSupport", "Options.TestLoader.VisualStudioSupport", "False", "True" );
-				Convert( "Recent-Projects.MaxFiles", "RecentProjects.MaxFiles" );
-
-				int maxFiles = this.GetSetting( "RecentProjects.MaxFiles", 5 );
-				for( int i = 1; i <= maxFiles; i++ )
-				{
-					string fileKey = string.Format( "File{0}", i );
-					object fileEntry = legacy.GetSetting( "Recent-Projects." + fileKey );
-					if ( fileEntry != null )
-						this.SaveSetting( "RecentProjects." + fileKey, fileEntry );
-				}
-			}
-
-			private void Convert( string legacyName, string currentName, params string[]values )
-			{
-				object val = legacy.GetSetting( legacyName );
-				if ( val != null )
-				{
-					if ( val is int && values != null )
-					{
-						int ival = (int)val;
-						if ( ival >= 0 && ival < values.Length )
-							val = values[(int)val];
-					}
-
-					this.SaveSetting( currentName, val );
-				}
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using Microsoft.Win32;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for UserSettingsService.
+	/// </summary>
+	public class SettingsService : SettingsGroup, NUnit.Core.IService
+	{
+		static readonly string applicationDirectory = 
+			Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData ) 
+			+ Path.DirectorySeparatorChar + "NUnit" + Path.DirectorySeparatorChar;
+
+		static readonly string settingsFileName = "NUnitSettings.xml";
+
+		public SettingsService()
+		{
+			string settingsFile = System.Configuration.ConfigurationSettings.AppSettings["settingsFile"];
+			if ( settingsFile == null )
+				settingsFile = applicationDirectory + settingsFileName;
+
+			this.storage = new XmlSettingsStorage( settingsFile );
+
+			if ( File.Exists( settingsFile ) )
+				storage.LoadSettings();
+			else
+				ConvertLegacySettings();
+		}
+
+		#region IService Implementation
+		public void InitializeService()
+		{
+		}
+
+		public void UnloadService()
+		{
+			storage.SaveSettings();
+			this.Dispose();
+		}
+		#endregion
+
+		#region ConvertLegacySettings
+		void ConvertLegacySettings()
+		{
+			RegistryKey key = Registry.CurrentUser.OpenSubKey( NUnitRegistry.KEY );
+			if ( key == null )
+				key = Registry.CurrentUser.OpenSubKey( NUnitRegistry.LEGACY_KEY );
+
+			if ( key != null )
+			{
+				using( ISettingsStorage legacyStorage = new RegistrySettingsStorage( key ) )
+				{
+					new LegacySettingsConverter( legacyStorage, storage ).Convert();
+				}
+
+				storage.SaveSettings();
+			}
+		}
+
+		private class LegacySettingsConverter : SettingsGroup
+		{
+			private ISettingsStorage legacy;
+			private ISettingsStorage current;
+
+			public LegacySettingsConverter( ISettingsStorage legacy, ISettingsStorage current )
+				: base( current )
+			{
+				this.legacy = legacy;
+				this.current = current;
+			}
+
+			public void Convert()
+			{
+				Convert( "Form.x-location", "Gui.MainForm.Left" );
+				Convert( "Form.x-location", "Gui.MiniForm.Left" );
+				Convert( "Form.y-location", "Gui.MainForm.Top" );
+				Convert( "Form.y-location", "Gui.MiniForm.Top" );
+				Convert( "Form.width", "Gui.MainForm.Width" );
+				Convert( "Form.width", "Gui.MiniForm.Width" );
+				Convert( "Form.height", "Gui.MainForm.Height" );
+				Convert( "Form.height", "Gui.MiniForm.Height" );
+				Convert( "Form.maximized", "Gui.MainForm.Maximized", "False", "True" );
+				Convert( "Form.maximized", "Gui.MiniForm.Maximized", "False", "True" );
+				Convert( "Form.font", "Gui.MainForm.Font" );
+				Convert( "Form.font", "Gui.MiniForm.Font" );
+				Convert( "Form.tree-splitter-position", "Gui.MainForm.SplitPosition");
+				Convert( "Form.tab-splitter-position", "Gui.ResultTabs.ErrorsTabSplitterPosition");
+				Convert( "Options.TestLabels", "Gui.ResultTabs.DisplayTestLabels", "False", "True" );
+				Convert( "Options.FailureToolTips", "Gui.ResultTabs.ErrorTab.ToolTipsEnabled", "False", "True" );
+				Convert( "Options.EnableWordWrapForFailures", "Gui.ResultTabs.ErrorTab.WordWrapEnabled", "False", "True" );
+				Convert( "Options.InitialTreeDisplay", "Gui.TestTree.InitialTreeDisplay", "Auto", "Expand", "Collapse", "HideTests"  );
+				Convert( "Options.ShowCheckBoxes", "Gui.TestTree.ShowCheckBoxes", "False", "True" );
+				Convert( "Options.LoadLastProject", "Options.LoadLastProject", "False", "True" );
+				Convert( "Options.ClearResults", "Options.TestLoader.ClearResultsOnReload", "False", "True" ); 
+				Convert( "Options.ReloadOnChange", "Options.TestLoader.ReloadOnChange", "False", "True" );
+				Convert( "Options.RerunOnChange", "Options.TestLoader.RerunOnChange", "False", "True" );
+				Convert( "Options.ReloadOnRun", "Options.TestLoader.ReloadOnRun", "False", "True" );
+				Convert( "Options.MergeAssemblies", "Options.TestLoader.MergeAssemblies", "False", "True" );
+				Convert( "Options.MultiDomain", "Options.TestLoader.MultiDomain", "False", "True" );
+				Convert( "Options.AutoNamespaceSuites", "Options.TestLoader.AutoNamespaceSuites", "False", "True" );
+				Convert( "Options.VisualStudioSupport", "Options.TestLoader.VisualStudioSupport", "False", "True" );
+				Convert( "Recent-Projects.MaxFiles", "RecentProjects.MaxFiles" );
+
+				int maxFiles = this.GetSetting( "RecentProjects.MaxFiles", 5 );
+				for( int i = 1; i <= maxFiles; i++ )
+				{
+					string fileKey = string.Format( "File{0}", i );
+					object fileEntry = legacy.GetSetting( "Recent-Projects." + fileKey );
+					if ( fileEntry != null )
+						this.SaveSetting( "RecentProjects." + fileKey, fileEntry );
+				}
+			}
+
+			private void Convert( string legacyName, string currentName, params string[]values )
+			{
+				object val = legacy.GetSetting( legacyName );
+				if ( val != null )
+				{
+					if ( val is int && values != null )
+					{
+						int ival = (int)val;
+						if ( ival >= 0 && ival < values.Length )
+							val = values[(int)val];
+					}
+
+					this.SaveSetting( currentName, val );
+				}
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/TestAgency.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/TestAgency.cs
@@ -1,353 +1,353 @@
-using System;
-using System.IO;
-using System.Threading;
-using System.Diagnostics;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Services;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Enumeration of agent types used to request agents
-	/// </summary>
-	[Flags]
-	public enum AgentType
-	{
-		Default = 0,
-		DomainAgent = 1, // NYI
-		ProcessAgent = 2
-	}
-
-	/// <summary>
-	/// Enumeration used to report AgentStatus
-	/// </summary>
-	public enum AgentStatus
-	{
-		Unknown,
-		Starting,
-		Ready,
-		Busy,
-		Stopping
-	}
-
-	/// <summary>
-	/// The TestAgency class provides RemoteTestAgents
-	/// on request and tracks their status. Agents
-	/// are wrapped in an instance of the TestAgent
-	/// class. Multiple agent types are supported
-	/// but only one, ProcessAgent is implemented
-	/// at this time.
-	/// </summary>
-	public class TestAgency : ServerBase, IService
-	{
-		#region Private Fields
-		private AgentDataBase agentData = new AgentDataBase();
-
-		private AgentType supportedAgentTypes = AgentType.ProcessAgent;
-
-		private AgentType defaultAgentType = AgentType.ProcessAgent;
-		#endregion
-
-		#region Constructors
-		public TestAgency() : this( "TestAgency", 9100 ) { }
-
-		public TestAgency( string uri, int port ) : base( uri, port ) { }
-		#endregion
-
-		#region Static Property - TestAgentExePath
-		public static string TestAgentExePath
-		{
-			get
-			{
-				string agentPath = "nunit-agent.exe";
-			
-				if ( !File.Exists(agentPath) )
-				{
-					DirectoryInfo dir = new DirectoryInfo( Environment.CurrentDirectory );
-					if ( dir.Parent.Name == "bin" )
-						dir = dir.Parent.Parent.Parent.Parent;
-				
-					string path = PathUtils.Combine( dir.FullName, "NUnitTestServer", "nunit-agent-exe", 
-						"bin", NUnitFramework.BuildConfiguration, "nunit-agent.exe" );
-					if( File.Exists( path ) )
-						agentPath = path;
-				}
-
-				return agentPath;
-			}
-		}
-		#endregion
-
-		#region ServerBase Overrides
-		public override void Stop()
-		{
-			foreach( AgentRecord r in agentData )
-			{
-				if ( !r.Process.HasExited )
-				{
-					if ( r.Agent != null )
-						r.Agent.Stop();
-
-					//r.Process.Kill();
-				}
-			}
-
-			agentData.Clear();
-
-			base.Stop ();
-		}
-		#endregion
-
-		#region Public Methods - Called by Agents
-		public void Register( RemoteTestAgent agent, int pid )
-		{
-			AgentRecord r = agentData[pid];
-			if ( r == null )
-				throw new ArgumentException( "Specified process is not in the agency database", "pid" );
-			r.Agent = agent;
-		}
-
-		public void ReportStatus( int pid, AgentStatus status )
-		{
-			AgentRecord r = agentData[pid];
-
-			if ( r == null )
-				throw new ArgumentException( "Specified process is not in the agency database", "pid" );
-
-			r.Status = status;
-		}
-		#endregion
-
-		#region Public Methods - Called by Clients
-		public TestAgent GetAgent()
-		{
-			return GetAgent( AgentType.Default, 5000 );
-		}
-
-		public TestAgent GetAgent( AgentType type )
-		{
-			return GetAgent( type, 5000 );
-		}
-
-		public TestAgent GetAgent(AgentType type, int waitTime)
-		{
-			if ( type == AgentType.Default )
-				type = defaultAgentType;
-
-			if ( (type & supportedAgentTypes) == 0 )
-				throw new ArgumentException( 
-					string.Format( "AgentType {0} is not supported by this agency", type ),
-					"type" );
-
-			AgentRecord r = FindAvailableRemoteAgent(type);
-			if ( r == null )
-				r = CreateRemoteAgent(type, waitTime);
-
-			return new TestAgent( this, r.Process.Id, r.Agent );
-		}
-
-		public void ReleaseAgent( TestAgent agent )
-		{
-			AgentRecord r = agentData[agent.Id];
-			if ( r == null )
-				NTrace.Error( string.Format( "Unable to release agent {0} - not in database", agent.Id ) );
-			else
-			{
-				r.Status = AgentStatus.Ready;
-				NTrace.Debug( "Releasing agent " + agent.Id.ToString() );
-			}
-		}
-
-		public void DestroyAgent( TestAgent agent )
-		{
-			AgentRecord r = agentData[agent.Id];
-			if ( r != null )
-			{
-				if( !r.Process.HasExited )
-					r.Agent.Stop();
-				agentData[r.Process.Id] = null;
-			}
-		}
-		#endregion
-
-		#region Helper Methods
-		private int LaunchAgentProcess()
-		{
-			//ProcessStartInfo startInfo = new ProcessStartInfo( TestAgentExePath, ServerUtilities.MakeUrl( this.uri, this.port ) );
-			//startInfo.CreateNoWindow = true;
-			Process p = new Process();
-			if ( Type.GetType( "Mono.Runtime", false ) != null )
-			{
-				p.StartInfo.FileName = @"C:\Program Files\mono-1.2.5\bin\mono.exe";
-				p.StartInfo.Arguments = TestAgentExePath + " " + ServerUtilities.MakeUrl( this.uri, this.port );
-			}
-			else
-			{
-				p.StartInfo.FileName = TestAgentExePath;
-				p.StartInfo.Arguments = ServerUtilities.MakeUrl( this.uri, this.port );
-			}
-			
-			//NTrace.Debug( "Launching {0}" p.StartInfo.FileName );
-			p.Start();
-			agentData.Add( new AgentRecord( p.Id, p, null, AgentStatus.Starting ) );
-			return p.Id;
-		}
-
-		private AgentRecord FindAvailableRemoteAgent(AgentType type)
-		{
-			foreach( AgentRecord r in agentData )
-				if ( r.Status == AgentStatus.Ready )
-				{
-					NTrace.DebugFormat( "Reusing agent {0}", r.Id );
-					r.Status = AgentStatus.Busy;
-					return r;
-				}
-
-			return null;
-		}
-
-		private AgentRecord CreateRemoteAgent(AgentType type, int waitTime)
-		{
-			int pid = LaunchAgentProcess();
-
-			NTrace.DebugFormat( "Waiting for agent {0} to register", pid );
-			while( waitTime > 0 )
-			{
-				int pollTime = Math.Min( 200, waitTime );
-				Thread.Sleep( pollTime );
-				waitTime -= pollTime;
-				if ( agentData[pid].Agent != null )
-				{
-					NTrace.DebugFormat( "Returning new agent record {0}", pid ); 
-					return agentData[pid];
-				}
-			}
-
-			return null;
-		}
-		#endregion
-
-		#region IService Members
-
-		public void UnloadService()
-		{
-			this.Stop();
-		}
-
-		public void InitializeService()
-		{
-			this.Start();
-		}
-
-		#endregion
-
-		#region Nested Class - AgentRecord
-		private class AgentRecord
-		{
-			public int Id;
-			public Process Process;
-			public RemoteTestAgent Agent;
-			public AgentStatus Status;
-
-			public AgentRecord( int id, Process p, RemoteTestAgent a, AgentStatus s )
-			{
-				this.Id = id;
-				this.Process = p;
-				this.Agent = a;
-				this.Status = s;
-			}
-
-		}
-		#endregion
-
-		#region Nested Class - AgentDataBase
-		/// <summary>
-		///  A simple class that tracks data about this
-		///  agencies active and available agents
-		/// </summary>
-		private class AgentDataBase : IEnumerable
-		{
-			private ListDictionary agentData = new ListDictionary();
-
-			public AgentRecord this[int id]
-			{
-				get { return (AgentRecord)agentData[id]; }
-				set
-				{
-					if ( value == null )
-						agentData.Remove( id );
-					else
-						agentData[id] = value;
-				}
-			}
-
-			public AgentRecord this[RemoteTestAgent agent]
-			{
-				get
-				{
-					foreach( System.Collections.DictionaryEntry entry in agentData )
-					{
-						AgentRecord r = (AgentRecord)entry.Value;
-						if ( r.Agent == agent )
-							return r;
-					}
-
-					return null;
-				}
-			}
-
-			public void Add( AgentRecord r )
-			{
-				agentData[r.Id] = r;
-			}
-
-			public void Clear()
-			{
-				agentData.Clear();
-			}
-
-			#region IEnumerable Members
-			public IEnumerator GetEnumerator()
-			{
-				return new AgentDataEnumerator( agentData );
-			}
-			#endregion
-
-			#region Nested Class - AgentDataEnumerator
-			public class AgentDataEnumerator : IEnumerator
-			{
-				IEnumerator innerEnum;
-
-				public AgentDataEnumerator( IDictionary list )
-				{
-					innerEnum = list.GetEnumerator();
-				}
-
-				#region IEnumerator Members
-				public void Reset()
-				{
-					innerEnum.Reset();
-				}
-
-				public object Current
-				{
-					get { return ((DictionaryEntry)innerEnum.Current).Value; }
-				}
-
-				public bool MoveNext()
-				{
-					return innerEnum.MoveNext();
-				}
-				#endregion
-			}
-			#endregion
-		}
-
-		#endregion
-	}
-}
+using System;
+using System.IO;
+using System.Threading;
+using System.Diagnostics;
+using System.Collections;
+using System.Collections.Specialized;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Services;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Enumeration of agent types used to request agents
+	/// </summary>
+	[Flags]
+	public enum AgentType
+	{
+		Default = 0,
+		DomainAgent = 1, // NYI
+		ProcessAgent = 2
+	}
+
+	/// <summary>
+	/// Enumeration used to report AgentStatus
+	/// </summary>
+	public enum AgentStatus
+	{
+		Unknown,
+		Starting,
+		Ready,
+		Busy,
+		Stopping
+	}
+
+	/// <summary>
+	/// The TestAgency class provides RemoteTestAgents
+	/// on request and tracks their status. Agents
+	/// are wrapped in an instance of the TestAgent
+	/// class. Multiple agent types are supported
+	/// but only one, ProcessAgent is implemented
+	/// at this time.
+	/// </summary>
+	public class TestAgency : ServerBase, IService
+	{
+		#region Private Fields
+		private AgentDataBase agentData = new AgentDataBase();
+
+		private AgentType supportedAgentTypes = AgentType.ProcessAgent;
+
+		private AgentType defaultAgentType = AgentType.ProcessAgent;
+		#endregion
+
+		#region Constructors
+		public TestAgency() : this( "TestAgency", 9100 ) { }
+
+		public TestAgency( string uri, int port ) : base( uri, port ) { }
+		#endregion
+
+		#region Static Property - TestAgentExePath
+		public static string TestAgentExePath
+		{
+			get
+			{
+				string agentPath = "nunit-agent.exe";
+			
+				if ( !File.Exists(agentPath) )
+				{
+					DirectoryInfo dir = new DirectoryInfo( Environment.CurrentDirectory );
+					if ( dir.Parent.Name == "bin" )
+						dir = dir.Parent.Parent.Parent.Parent;
+				
+					string path = PathUtils.Combine( dir.FullName, "NUnitTestServer", "nunit-agent-exe", 
+						"bin", NUnitFramework.BuildConfiguration, "nunit-agent.exe" );
+					if( File.Exists( path ) )
+						agentPath = path;
+				}
+
+				return agentPath;
+			}
+		}
+		#endregion
+
+		#region ServerBase Overrides
+		public override void Stop()
+		{
+			foreach( AgentRecord r in agentData )
+			{
+				if ( !r.Process.HasExited )
+				{
+					if ( r.Agent != null )
+						r.Agent.Stop();
+
+					//r.Process.Kill();
+				}
+			}
+
+			agentData.Clear();
+
+			base.Stop ();
+		}
+		#endregion
+
+		#region Public Methods - Called by Agents
+		public void Register( RemoteTestAgent agent, int pid )
+		{
+			AgentRecord r = agentData[pid];
+			if ( r == null )
+				throw new ArgumentException( "Specified process is not in the agency database", "pid" );
+			r.Agent = agent;
+		}
+
+		public void ReportStatus( int pid, AgentStatus status )
+		{
+			AgentRecord r = agentData[pid];
+
+			if ( r == null )
+				throw new ArgumentException( "Specified process is not in the agency database", "pid" );
+
+			r.Status = status;
+		}
+		#endregion
+
+		#region Public Methods - Called by Clients
+		public TestAgent GetAgent()
+		{
+			return GetAgent( AgentType.Default, 5000 );
+		}
+
+		public TestAgent GetAgent( AgentType type )
+		{
+			return GetAgent( type, 5000 );
+		}
+
+		public TestAgent GetAgent(AgentType type, int waitTime)
+		{
+			if ( type == AgentType.Default )
+				type = defaultAgentType;
+
+			if ( (type & supportedAgentTypes) == 0 )
+				throw new ArgumentException( 
+					string.Format( "AgentType {0} is not supported by this agency", type ),
+					"type" );
+
+			AgentRecord r = FindAvailableRemoteAgent(type);
+			if ( r == null )
+				r = CreateRemoteAgent(type, waitTime);
+
+			return new TestAgent( this, r.Process.Id, r.Agent );
+		}
+
+		public void ReleaseAgent( TestAgent agent )
+		{
+			AgentRecord r = agentData[agent.Id];
+			if ( r == null )
+				NTrace.Error( string.Format( "Unable to release agent {0} - not in database", agent.Id ) );
+			else
+			{
+				r.Status = AgentStatus.Ready;
+				NTrace.Debug( "Releasing agent " + agent.Id.ToString() );
+			}
+		}
+
+		public void DestroyAgent( TestAgent agent )
+		{
+			AgentRecord r = agentData[agent.Id];
+			if ( r != null )
+			{
+				if( !r.Process.HasExited )
+					r.Agent.Stop();
+				agentData[r.Process.Id] = null;
+			}
+		}
+		#endregion
+
+		#region Helper Methods
+		private int LaunchAgentProcess()
+		{
+			//ProcessStartInfo startInfo = new ProcessStartInfo( TestAgentExePath, ServerUtilities.MakeUrl( this.uri, this.port ) );
+			//startInfo.CreateNoWindow = true;
+			Process p = new Process();
+			if ( Type.GetType( "Mono.Runtime", false ) != null )
+			{
+				p.StartInfo.FileName = @"C:\Program Files\mono-1.2.5\bin\mono.exe";
+				p.StartInfo.Arguments = TestAgentExePath + " " + ServerUtilities.MakeUrl( this.uri, this.port );
+			}
+			else
+			{
+				p.StartInfo.FileName = TestAgentExePath;
+				p.StartInfo.Arguments = ServerUtilities.MakeUrl( this.uri, this.port );
+			}
+			
+			//NTrace.Debug( "Launching {0}" p.StartInfo.FileName );
+			p.Start();
+			agentData.Add( new AgentRecord( p.Id, p, null, AgentStatus.Starting ) );
+			return p.Id;
+		}
+
+		private AgentRecord FindAvailableRemoteAgent(AgentType type)
+		{
+			foreach( AgentRecord r in agentData )
+				if ( r.Status == AgentStatus.Ready )
+				{
+					NTrace.DebugFormat( "Reusing agent {0}", r.Id );
+					r.Status = AgentStatus.Busy;
+					return r;
+				}
+
+			return null;
+		}
+
+		private AgentRecord CreateRemoteAgent(AgentType type, int waitTime)
+		{
+			int pid = LaunchAgentProcess();
+
+			NTrace.DebugFormat( "Waiting for agent {0} to register", pid );
+			while( waitTime > 0 )
+			{
+				int pollTime = Math.Min( 200, waitTime );
+				Thread.Sleep( pollTime );
+				waitTime -= pollTime;
+				if ( agentData[pid].Agent != null )
+				{
+					NTrace.DebugFormat( "Returning new agent record {0}", pid ); 
+					return agentData[pid];
+				}
+			}
+
+			return null;
+		}
+		#endregion
+
+		#region IService Members
+
+		public void UnloadService()
+		{
+			this.Stop();
+		}
+
+		public void InitializeService()
+		{
+			this.Start();
+		}
+
+		#endregion
+
+		#region Nested Class - AgentRecord
+		private class AgentRecord
+		{
+			public int Id;
+			public Process Process;
+			public RemoteTestAgent Agent;
+			public AgentStatus Status;
+
+			public AgentRecord( int id, Process p, RemoteTestAgent a, AgentStatus s )
+			{
+				this.Id = id;
+				this.Process = p;
+				this.Agent = a;
+				this.Status = s;
+			}
+
+		}
+		#endregion
+
+		#region Nested Class - AgentDataBase
+		/// <summary>
+		///  A simple class that tracks data about this
+		///  agencies active and available agents
+		/// </summary>
+		private class AgentDataBase : IEnumerable
+		{
+			private ListDictionary agentData = new ListDictionary();
+
+			public AgentRecord this[int id]
+			{
+				get { return (AgentRecord)agentData[id]; }
+				set
+				{
+					if ( value == null )
+						agentData.Remove( id );
+					else
+						agentData[id] = value;
+				}
+			}
+
+			public AgentRecord this[RemoteTestAgent agent]
+			{
+				get
+				{
+					foreach( System.Collections.DictionaryEntry entry in agentData )
+					{
+						AgentRecord r = (AgentRecord)entry.Value;
+						if ( r.Agent == agent )
+							return r;
+					}
+
+					return null;
+				}
+			}
+
+			public void Add( AgentRecord r )
+			{
+				agentData[r.Id] = r;
+			}
+
+			public void Clear()
+			{
+				agentData.Clear();
+			}
+
+			#region IEnumerable Members
+			public IEnumerator GetEnumerator()
+			{
+				return new AgentDataEnumerator( agentData );
+			}
+			#endregion
+
+			#region Nested Class - AgentDataEnumerator
+			public class AgentDataEnumerator : IEnumerator
+			{
+				IEnumerator innerEnum;
+
+				public AgentDataEnumerator( IDictionary list )
+				{
+					innerEnum = list.GetEnumerator();
+				}
+
+				#region IEnumerator Members
+				public void Reset()
+				{
+					innerEnum.Reset();
+				}
+
+				public object Current
+				{
+					get { return ((DictionaryEntry)innerEnum.Current).Value; }
+				}
+
+				public bool MoveNext()
+				{
+					return innerEnum.MoveNext();
+				}
+				#endregion
+			}
+			#endregion
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Services/TestAgentManager.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Services/TestAgentManager.cs
@@ -1,45 +1,45 @@
-using System;
-using System.Threading;
-using System.Collections.Specialized;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Services;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for TestAgentManager.
-	/// </summary>
-	public class TestAgentManager : ServerBase, IService
-	{
-		private ListDictionary agents = new ListDictionary();
-
-		public TestAgentManager( string uri, int port ) : base( uri, port ) { }
-
-		public void Register( object obj, int id )
-		{
-			agents[id] = obj;
-		}
-
-		public object GetTestRunner( int id )
-		{
-			return agents[id];
-		}
-
-		#region IService Members
-
-		public void UnloadService()
-		{
-			// TODO:  Add TestAgentManager.UnloadService implementation
-		}
-
-		public void InitializeService()
-		{
-			this.Start();
-		}
-
-		#endregion
-	}
-}
+using System;
+using System.Threading;
+using System.Collections.Specialized;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Services;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for TestAgentManager.
+	/// </summary>
+	public class TestAgentManager : ServerBase, IService
+	{
+		private ListDictionary agents = new ListDictionary();
+
+		public TestAgentManager( string uri, int port ) : base( uri, port ) { }
+
+		public void Register( object obj, int id )
+		{
+			agents[id] = obj;
+		}
+
+		public object GetTestRunner( int id )
+		{
+			return agents[id];
+		}
+
+		#region IService Members
+
+		public void UnloadService()
+		{
+			// TODO:  Add TestAgentManager.UnloadService implementation
+		}
+
+		public void InitializeService()
+		{
+			this.Start();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/SettingsGroup.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/SettingsGroup.cs
@@ -1,256 +1,256 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-
-	/// <summary>
-	/// SettingsGroup is the base class representing a group
-	/// of user or system settings. All storge of settings
-	/// is delegated to a SettingsStorage.
-	/// </summary>
-	public class SettingsGroup : ISettings, IDisposable
-	{
-		#region Instance Fields
-		protected ISettingsStorage storage;
-		#endregion
-
-		#region Constructors
-
-		/// <summary>
-		/// Construct a settings group.
-		/// </summary>
-		/// <param name="storage">Storage for the group settings</param>
-		public SettingsGroup( ISettingsStorage storage )
-		{
-			this.storage = storage;
-		}
-
-		/// <summary>
-		/// Protected constructor for use by derived classes that
-		/// set the storage themselves or don't use a storage.
-		/// </summary>
-		protected SettingsGroup()
-		{
-		}
-		#endregion
-
-		#region Properties
-
-		public event SettingsEventHandler Changed;
-
-		/// <summary>
-		/// The storage used for the group settings
-		/// </summary>
-		public ISettingsStorage Storage
-		{
-			get { return storage; }
-		}
-
-		#endregion
-
-		#region ISettings Members
-
-		/// <summary>
-		/// Load the value of one of the group's settings
-		/// </summary>
-		/// <param name="settingName">Name of setting to load</param>
-		/// <returns>Value of the setting or null</returns>
-		public object GetSetting( string settingName )
-		{
-			return storage.GetSetting( settingName );
-		}
-
-		/// <summary>
-		/// Load the value of one of the group's settings or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of setting to load</param>
-		/// <param name="defaultValue">Value to return if the seeting is not present</param>
-		/// <returns>Value of the setting or the default</returns>
-		public object GetSetting( string settingName, object defaultValue )
-		{
-			object result = GetSetting(settingName );
-
-			if ( result == null )
-				result = defaultValue;
-
-			return result;
-		}
-
-		/// <summary>
-		/// Load the value of one of the group's integer settings
-		/// in a type-safe manner or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of setting to load</param>
-		/// <param name="defaultValue">Value to return if the seeting is not present</param>
-		/// <returns>Value of the setting or the default</returns>
-		public int GetSetting( string settingName, int defaultValue )
-		{
-			object result = GetSetting(settingName );
-
-			if ( result == null )
-				return defaultValue;
-
-			if ( result is int )
-				return (int) result;
-
-			try
-			{
-				return Int32.Parse( result.ToString() );
-			}
-			catch
-			{
-				return defaultValue;
-			}
-		}
-
-		/// <summary>
-		/// Load the value of one of the group's boolean settings
-		/// in a type-safe manner.
-		/// </summary>
-		/// <param name="settingName">Name of setting to load</param>
-		/// <param name="defaultValue">Value of the setting or the default</param>
-		/// <returns>Value of the setting</returns>
-		public bool GetSetting( string settingName, bool defaultValue )
-		{
-			object result = GetSetting(settingName );
-
-			if ( result == null )
-				return defaultValue;
-
-			// Handle legacy formats
-//			if ( result is int )
-//				return (int)result == 1;
-//
-//			if ( result is string )
-//			{
-//				if ( (string)result == "1" ) return true;
-//				if ( (string)result == "0" ) return false;
-//			}
-
-			if ( result is bool )
-				return (bool) result ;
-			
-			try
-			{
-				return Boolean.Parse( result.ToString() );
-			}
-			catch
-			{
-				return defaultValue;
-			}
-		}
-
-		/// <summary>
-		/// Load the value of one of the group's string settings
-		/// in a type-safe manner or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of setting to load</param>
-		/// <param name="defaultValue">Value to return if the setting is not present</param>
-		/// <returns>Value of the setting or the default</returns>
-		public string GetSetting( string settingName, string defaultValue )
-		{
-			object result = GetSetting(settingName );
-
-			if ( result == null )
-				return defaultValue;
-
-			if ( result is string )
-				return (string) result;
-			else
-				return result.ToString();
-		}
-
-		/// <summary>
-		/// Load the value of one of the group's enum settings
-		/// in a type-safe manner or return a default value
-		/// </summary>
-		/// <param name="settingName">Name of setting to load</param>
-		/// <param name="defaultValue">Value to return if the setting is not present</param>
-		/// <returns>Value of the setting or the default</returns>
-		public System.Enum GetSetting( string settingName, System.Enum defaultValue )
-		{
-			object result = GetSetting(settingName );
-
-			if ( result == null )
-				return defaultValue;
-
-			if ( result is System.Enum )
-				return (System.Enum) result;
-				
-			try
-			{
-				return (System.Enum)System.Enum.Parse( defaultValue.GetType(), result.ToString(), true );
-			}
-			catch
-			{
-				return defaultValue;
-			}
-		}
-
-		/// <summary>
-		/// Remove a setting from the group
-		/// </summary>
-		/// <param name="settingName">Name of the setting to remove</param>
-		public void RemoveSetting( string settingName )
-		{
-			storage.RemoveSetting( settingName );
-
-			if ( Changed != null )
-				Changed( this, new SettingsEventArgs( settingName ) );
-		}
-
-		/// <summary>
-		/// Remove a group of settings
-		/// </summary>
-		/// <param name="GroupName"></param>
-		public void RemoveGroup( string groupName )
-		{
-			storage.RemoveGroup( groupName );
-		}
-
-		/// <summary>
-		/// Save the value of one of the group's settings
-		/// </summary>
-		/// <param name="settingName">Name of the setting to save</param>
-		/// <param name="settingValue">Value to be saved</param>
-		public void SaveSetting( string settingName, object settingValue )
-		{
-			object oldValue = storage.GetSetting( settingName );
-
-			// Avoid signaling "changes" when there is not really a change
-			if ( oldValue != null )
-			{
-				if( oldValue is string && settingValue is string && (string)oldValue == (string)settingValue ||
-					oldValue is int && settingValue is int && (int)oldValue == (int)settingValue ||
-					oldValue is bool && settingValue is bool && (bool)oldValue == (bool)settingValue ||
-					oldValue is Enum && settingValue is Enum && oldValue.Equals(settingValue) )
-					return;
-			}
-
-			storage.SaveSetting( settingName, settingValue );
-
-			if ( Changed != null )
-				Changed( this, new SettingsEventArgs( settingName ) );
-		}
-		#endregion
-
-		#region IDisposable Members
-		/// <summary>
-		/// Dispose of this group by disposing of it's storage implementation
-		/// </summary>
-		public void Dispose()
-		{
-			if ( storage != null )
-			{
-				storage.Dispose();
-				storage = null;
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+
+	/// <summary>
+	/// SettingsGroup is the base class representing a group
+	/// of user or system settings. All storge of settings
+	/// is delegated to a SettingsStorage.
+	/// </summary>
+	public class SettingsGroup : ISettings, IDisposable
+	{
+		#region Instance Fields
+		protected ISettingsStorage storage;
+		#endregion
+
+		#region Constructors
+
+		/// <summary>
+		/// Construct a settings group.
+		/// </summary>
+		/// <param name="storage">Storage for the group settings</param>
+		public SettingsGroup( ISettingsStorage storage )
+		{
+			this.storage = storage;
+		}
+
+		/// <summary>
+		/// Protected constructor for use by derived classes that
+		/// set the storage themselves or don't use a storage.
+		/// </summary>
+		protected SettingsGroup()
+		{
+		}
+		#endregion
+
+		#region Properties
+
+		public event SettingsEventHandler Changed;
+
+		/// <summary>
+		/// The storage used for the group settings
+		/// </summary>
+		public ISettingsStorage Storage
+		{
+			get { return storage; }
+		}
+
+		#endregion
+
+		#region ISettings Members
+
+		/// <summary>
+		/// Load the value of one of the group's settings
+		/// </summary>
+		/// <param name="settingName">Name of setting to load</param>
+		/// <returns>Value of the setting or null</returns>
+		public object GetSetting( string settingName )
+		{
+			return storage.GetSetting( settingName );
+		}
+
+		/// <summary>
+		/// Load the value of one of the group's settings or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of setting to load</param>
+		/// <param name="defaultValue">Value to return if the seeting is not present</param>
+		/// <returns>Value of the setting or the default</returns>
+		public object GetSetting( string settingName, object defaultValue )
+		{
+			object result = GetSetting(settingName );
+
+			if ( result == null )
+				result = defaultValue;
+
+			return result;
+		}
+
+		/// <summary>
+		/// Load the value of one of the group's integer settings
+		/// in a type-safe manner or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of setting to load</param>
+		/// <param name="defaultValue">Value to return if the seeting is not present</param>
+		/// <returns>Value of the setting or the default</returns>
+		public int GetSetting( string settingName, int defaultValue )
+		{
+			object result = GetSetting(settingName );
+
+			if ( result == null )
+				return defaultValue;
+
+			if ( result is int )
+				return (int) result;
+
+			try
+			{
+				return Int32.Parse( result.ToString() );
+			}
+			catch
+			{
+				return defaultValue;
+			}
+		}
+
+		/// <summary>
+		/// Load the value of one of the group's boolean settings
+		/// in a type-safe manner.
+		/// </summary>
+		/// <param name="settingName">Name of setting to load</param>
+		/// <param name="defaultValue">Value of the setting or the default</param>
+		/// <returns>Value of the setting</returns>
+		public bool GetSetting( string settingName, bool defaultValue )
+		{
+			object result = GetSetting(settingName );
+
+			if ( result == null )
+				return defaultValue;
+
+			// Handle legacy formats
+//			if ( result is int )
+//				return (int)result == 1;
+//
+//			if ( result is string )
+//			{
+//				if ( (string)result == "1" ) return true;
+//				if ( (string)result == "0" ) return false;
+//			}
+
+			if ( result is bool )
+				return (bool) result ;
+			
+			try
+			{
+				return Boolean.Parse( result.ToString() );
+			}
+			catch
+			{
+				return defaultValue;
+			}
+		}
+
+		/// <summary>
+		/// Load the value of one of the group's string settings
+		/// in a type-safe manner or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of setting to load</param>
+		/// <param name="defaultValue">Value to return if the setting is not present</param>
+		/// <returns>Value of the setting or the default</returns>
+		public string GetSetting( string settingName, string defaultValue )
+		{
+			object result = GetSetting(settingName );
+
+			if ( result == null )
+				return defaultValue;
+
+			if ( result is string )
+				return (string) result;
+			else
+				return result.ToString();
+		}
+
+		/// <summary>
+		/// Load the value of one of the group's enum settings
+		/// in a type-safe manner or return a default value
+		/// </summary>
+		/// <param name="settingName">Name of setting to load</param>
+		/// <param name="defaultValue">Value to return if the setting is not present</param>
+		/// <returns>Value of the setting or the default</returns>
+		public System.Enum GetSetting( string settingName, System.Enum defaultValue )
+		{
+			object result = GetSetting(settingName );
+
+			if ( result == null )
+				return defaultValue;
+
+			if ( result is System.Enum )
+				return (System.Enum) result;
+				
+			try
+			{
+				return (System.Enum)System.Enum.Parse( defaultValue.GetType(), result.ToString(), true );
+			}
+			catch
+			{
+				return defaultValue;
+			}
+		}
+
+		/// <summary>
+		/// Remove a setting from the group
+		/// </summary>
+		/// <param name="settingName">Name of the setting to remove</param>
+		public void RemoveSetting( string settingName )
+		{
+			storage.RemoveSetting( settingName );
+
+			if ( Changed != null )
+				Changed( this, new SettingsEventArgs( settingName ) );
+		}
+
+		/// <summary>
+		/// Remove a group of settings
+		/// </summary>
+		/// <param name="GroupName"></param>
+		public void RemoveGroup( string groupName )
+		{
+			storage.RemoveGroup( groupName );
+		}
+
+		/// <summary>
+		/// Save the value of one of the group's settings
+		/// </summary>
+		/// <param name="settingName">Name of the setting to save</param>
+		/// <param name="settingValue">Value to be saved</param>
+		public void SaveSetting( string settingName, object settingValue )
+		{
+			object oldValue = storage.GetSetting( settingName );
+
+			// Avoid signaling "changes" when there is not really a change
+			if ( oldValue != null )
+			{
+				if( oldValue is string && settingValue is string && (string)oldValue == (string)settingValue ||
+					oldValue is int && settingValue is int && (int)oldValue == (int)settingValue ||
+					oldValue is bool && settingValue is bool && (bool)oldValue == (bool)settingValue ||
+					oldValue is Enum && settingValue is Enum && oldValue.Equals(settingValue) )
+					return;
+			}
+
+			storage.SaveSetting( settingName, settingValue );
+
+			if ( Changed != null )
+				Changed( this, new SettingsEventArgs( settingName ) );
+		}
+		#endregion
+
+		#region IDisposable Members
+		/// <summary>
+		/// Dispose of this group by disposing of it's storage implementation
+		/// </summary>
+		public void Dispose()
+		{
+			if ( storage != null )
+			{
+				storage.Dispose();
+				storage = null;
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/SettingsStorage.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/SettingsStorage.cs
@@ -1,62 +1,62 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-
-	/// <summary>
-	/// The ISettingsStorage interface is implemented by all
-	/// types of backing storage for settings.
-	/// </summary>
-	public interface ISettingsStorage : IDisposable
-	{
-		/// <summary>
-		/// Load a setting from the storage.
-		/// </summary>
-		/// <param name="settingName">Name of the setting to load</param>
-		/// <returns>Value of the setting or null</returns>
-		object GetSetting( string settingName );
-
-		/// <summary>
-		/// Remove a setting from the storage
-		/// </summary>
-		/// <param name="settingName">Name of the setting to remove</param>
-		void RemoveSetting( string settingName );
-
-		/// <summary>
-		/// Remove a group of settings from the storae
-		/// </summary>
-		/// <param name="groupName">Name of the group to remove</param>
-		void RemoveGroup( string groupName );
-
-		/// <summary>
-		/// Save a setting in the storage
-		/// </summary>
-		/// <param name="settingName">Name of the setting to save</param>
-		/// <param name="settingValue">Value to be saved</param>
-		void SaveSetting( string settingName, object settingValue );
-
-		/// <summary>
-		/// Create a child storage of the same type
-		/// </summary>
-		/// <param name="name">Name of the child storage</param>
-		/// <returns>New child storage</returns>
-		ISettingsStorage MakeChildStorage( string name );
-
-		/// <summary>
-		/// Load settings from external storage if required
-		/// by the implementation.
-		/// </summary>
-		void LoadSettings();
-
-		/// <summary>
-		/// Save settings to external storage if required
-		/// by the implementation.
-		/// </summary>
-		void SaveSettings();
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+
+	/// <summary>
+	/// The ISettingsStorage interface is implemented by all
+	/// types of backing storage for settings.
+	/// </summary>
+	public interface ISettingsStorage : IDisposable
+	{
+		/// <summary>
+		/// Load a setting from the storage.
+		/// </summary>
+		/// <param name="settingName">Name of the setting to load</param>
+		/// <returns>Value of the setting or null</returns>
+		object GetSetting( string settingName );
+
+		/// <summary>
+		/// Remove a setting from the storage
+		/// </summary>
+		/// <param name="settingName">Name of the setting to remove</param>
+		void RemoveSetting( string settingName );
+
+		/// <summary>
+		/// Remove a group of settings from the storae
+		/// </summary>
+		/// <param name="groupName">Name of the group to remove</param>
+		void RemoveGroup( string groupName );
+
+		/// <summary>
+		/// Save a setting in the storage
+		/// </summary>
+		/// <param name="settingName">Name of the setting to save</param>
+		/// <param name="settingValue">Value to be saved</param>
+		void SaveSetting( string settingName, object settingValue );
+
+		/// <summary>
+		/// Create a child storage of the same type
+		/// </summary>
+		/// <param name="name">Name of the child storage</param>
+		/// <returns>New child storage</returns>
+		ISettingsStorage MakeChildStorage( string name );
+
+		/// <summary>
+		/// Load settings from external storage if required
+		/// by the implementation.
+		/// </summary>
+		void LoadSettings();
+
+		/// <summary>
+		/// Save settings to external storage if required
+		/// by the implementation.
+		/// </summary>
+		void SaveSettings();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/StackTraceFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/StackTraceFilter.cs
@@ -1,62 +1,62 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using System.IO;
-
-	/// <summary>
-	/// Summary description for StackTraceFilter.
-	/// </summary>
-	public class StackTraceFilter
-	{
-		public static string Filter(string stack) 
-		{
-			if(stack == null) return null;
-			StringWriter sw = new StringWriter();
-			StringReader sr = new StringReader(stack);
-
-			try 
-			{
-				string line;
-				while ((line = sr.ReadLine()) != null) 
-				{
-					if (!FilterLine(line))
-						sw.WriteLine(line.Trim());
-				}
-			} 
-			catch (Exception) 
-			{
-				return stack;
-			}
-			return sw.ToString();
-		}
-
-		static bool FilterLine(string line) 
-		{
-			string[] patterns = new string[]
-			{
-				"NUnit.Core.TestCase",
-				"NUnit.Core.ExpectedExceptionTestCase",
-				"NUnit.Core.TemplateTestCase",
-				"NUnit.Core.TestResult",
-				"NUnit.Core.TestSuite",
-				"NUnit.Framework.Assertion", 
-				"NUnit.Framework.Assert" 
-			};
-
-			for (int i = 0; i < patterns.Length; i++) 
-			{
-				if (line.IndexOf(patterns[i]) > 0)
-					return true;
-			}
-
-			return false;
-		}
-
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using System.IO;
+
+	/// <summary>
+	/// Summary description for StackTraceFilter.
+	/// </summary>
+	public class StackTraceFilter
+	{
+		public static string Filter(string stack) 
+		{
+			if(stack == null) return null;
+			StringWriter sw = new StringWriter();
+			StringReader sr = new StringReader(stack);
+
+			try 
+			{
+				string line;
+				while ((line = sr.ReadLine()) != null) 
+				{
+					if (!FilterLine(line))
+						sw.WriteLine(line.Trim());
+				}
+			} 
+			catch (Exception) 
+			{
+				return stack;
+			}
+			return sw.ToString();
+		}
+
+		static bool FilterLine(string line) 
+		{
+			string[] patterns = new string[]
+			{
+				"NUnit.Core.TestCase",
+				"NUnit.Core.ExpectedExceptionTestCase",
+				"NUnit.Core.TemplateTestCase",
+				"NUnit.Core.TestResult",
+				"NUnit.Core.TestSuite",
+				"NUnit.Framework.Assertion", 
+				"NUnit.Framework.Assert" 
+			};
+
+			for (int i = 0; i < patterns.Length; i++) 
+			{
+				if (line.IndexOf(patterns[i]) > 0)
+					return true;
+			}
+
+			return false;
+		}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/SummaryVisitor.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/SummaryVisitor.cs
@@ -1,133 +1,133 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using NUnit.Core;
-
-	/// <summary>
-	/// SummaryVisitor examines a set of results and calculates 
-	/// summary statistics for the run. Note that a test run
-	/// will only produce results for tests that were selected
-	/// to be run. Curently, tests excluded by the Explicit 
-	/// attribute produce a result, while those excluded by
-	/// the Platform attribute do not. This anomaly will be
-	/// corrected in a later version.
-	/// </summary>
-	public class SummaryVisitor : ResultVisitor
-	{
-		private int resultCount;
-		private int failureCount;
-		private int skipCount;
-		private int ignoreCount;
-		private int suitesNotRun;
-		
-		private double time;
-		private string name;
-		private bool initialized;
-
-		public SummaryVisitor()
-		{
-			resultCount = 0;
-			initialized = false;
-		}
-
-		public void Visit(TestCaseResult caseResult) 
-		{
-			SetNameandTime(caseResult.Name, caseResult.Time);
-
-			switch( caseResult.RunState )
-			{
-				case RunState.Executed:
-					resultCount++;
-					if(caseResult.IsFailure)
-						failureCount++;
-					break;
-				case RunState.Ignored:
-					ignoreCount++;
-					break;
-				case RunState.Explicit:
-				case RunState.NotRunnable:
-				case RunState.Runnable:
-				case RunState.Skipped:
-				default:
-					skipCount++;
-					break;
-			}
-		}
-
-		public void Visit(TestSuiteResult suiteResult) 
-		{
-			SetNameandTime(suiteResult.Name, suiteResult.Time);
-
-			
-			
-			foreach (TestResult result in suiteResult.Results)
-			{
-				result.Accept(this);
-			}
-			
-			if(!suiteResult.Executed)
-				suitesNotRun++;
-		}
-
-		public double Time
-		{
-			get { return time; }
-		}
-
-		private void SetNameandTime(string name, double time)
-		{
-			if(!initialized)
-			{
-				this.time = time;
-				this.name = name;
-				initialized = true;
-			}
-		}
-
-		public bool Success
-		{
-			get { return (failureCount == 0); }
-		}
-
-		public int ResultCount
-		{
-			get { return resultCount; }
-		}
-
-		public int FailureCount
-		{
-			get { return failureCount; }
-		}
-
-		public int SkipCount
-		{
-			get { return skipCount; }
-		}
-
-		public int IgnoreCount
-		{
-			get { return ignoreCount; }
-		}
-
-		public int TestsNotRun
-		{
-			get { return skipCount + ignoreCount; }
-		}
-
-		public int SuitesNotRun
-		{
-			get { return suitesNotRun; }
-		}
-
-		public string Name
-		{
-			get { return name; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using NUnit.Core;
+
+	/// <summary>
+	/// SummaryVisitor examines a set of results and calculates 
+	/// summary statistics for the run. Note that a test run
+	/// will only produce results for tests that were selected
+	/// to be run. Curently, tests excluded by the Explicit 
+	/// attribute produce a result, while those excluded by
+	/// the Platform attribute do not. This anomaly will be
+	/// corrected in a later version.
+	/// </summary>
+	public class SummaryVisitor : ResultVisitor
+	{
+		private int resultCount;
+		private int failureCount;
+		private int skipCount;
+		private int ignoreCount;
+		private int suitesNotRun;
+		
+		private double time;
+		private string name;
+		private bool initialized;
+
+		public SummaryVisitor()
+		{
+			resultCount = 0;
+			initialized = false;
+		}
+
+		public void Visit(TestCaseResult caseResult) 
+		{
+			SetNameandTime(caseResult.Name, caseResult.Time);
+
+			switch( caseResult.RunState )
+			{
+				case RunState.Executed:
+					resultCount++;
+					if(caseResult.IsFailure)
+						failureCount++;
+					break;
+				case RunState.Ignored:
+					ignoreCount++;
+					break;
+				case RunState.Explicit:
+				case RunState.NotRunnable:
+				case RunState.Runnable:
+				case RunState.Skipped:
+				default:
+					skipCount++;
+					break;
+			}
+		}
+
+		public void Visit(TestSuiteResult suiteResult) 
+		{
+			SetNameandTime(suiteResult.Name, suiteResult.Time);
+
+			
+			
+			foreach (TestResult result in suiteResult.Results)
+			{
+				result.Accept(this);
+			}
+			
+			if(!suiteResult.Executed)
+				suitesNotRun++;
+		}
+
+		public double Time
+		{
+			get { return time; }
+		}
+
+		private void SetNameandTime(string name, double time)
+		{
+			if(!initialized)
+			{
+				this.time = time;
+				this.name = name;
+				initialized = true;
+			}
+		}
+
+		public bool Success
+		{
+			get { return (failureCount == 0); }
+		}
+
+		public int ResultCount
+		{
+			get { return resultCount; }
+		}
+
+		public int FailureCount
+		{
+			get { return failureCount; }
+		}
+
+		public int SkipCount
+		{
+			get { return skipCount; }
+		}
+
+		public int IgnoreCount
+		{
+			get { return ignoreCount; }
+		}
+
+		public int TestsNotRun
+		{
+			get { return skipCount + ignoreCount; }
+		}
+
+		public int SuitesNotRun
+		{
+			get { return suitesNotRun; }
+		}
+
+		public string Name
+		{
+			get { return name; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestAgent.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestAgent.cs
@@ -1,58 +1,58 @@
-using System;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// TestAgent provides a local representation
-	/// for a RemoteTestAgent allowing the lifetime
-	/// of the remote object to be independent of
-	/// its own.
-	/// </summary>
-	public class TestAgent
-	{
-		#region Fields
-		/// <summary>
-		/// Reference to the TestAgency that controls this agent
-		/// </summary>
-		private TestAgency agency;
-
-		/// <summary>
-		/// This agent's assigned id
-		/// </summary>
-		private int agentId;
-
-		/// <summary>
-		/// Reference to the remote agent
-		/// </summary>
-		private RemoteTestAgent remoteAgent;
-		#endregion
-
-		#region Constructor
-		public TestAgent( TestAgency agency, int agentId, RemoteTestAgent remoteAgent )
-		{
-			this.agency = agency;
-			this.agentId = agentId;
-			this.remoteAgent = remoteAgent;
-		}
-		#endregion
-
-		#region Properties
-		public TestAgency Agency
-		{
-			get { return agency; }
-		}
-
-		public int Id
-		{
-			get { return agentId; }
-		}
-		#endregion
-
-		#region Public Methods
-		public NUnit.Core.TestRunner CreateRunner(int runnerId)
-		{
-			return remoteAgent.CreateRunner( runnerId );
-		}
-		#endregion
-	}
-}
+using System;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// TestAgent provides a local representation
+	/// for a RemoteTestAgent allowing the lifetime
+	/// of the remote object to be independent of
+	/// its own.
+	/// </summary>
+	public class TestAgent
+	{
+		#region Fields
+		/// <summary>
+		/// Reference to the TestAgency that controls this agent
+		/// </summary>
+		private TestAgency agency;
+
+		/// <summary>
+		/// This agent's assigned id
+		/// </summary>
+		private int agentId;
+
+		/// <summary>
+		/// Reference to the remote agent
+		/// </summary>
+		private RemoteTestAgent remoteAgent;
+		#endregion
+
+		#region Constructor
+		public TestAgent( TestAgency agency, int agentId, RemoteTestAgent remoteAgent )
+		{
+			this.agency = agency;
+			this.agentId = agentId;
+			this.remoteAgent = remoteAgent;
+		}
+		#endregion
+
+		#region Properties
+		public TestAgency Agency
+		{
+			get { return agency; }
+		}
+
+		public int Id
+		{
+			get { return agentId; }
+		}
+		#endregion
+
+		#region Public Methods
+		public NUnit.Core.TestRunner CreateRunner(int runnerId)
+		{
+			return remoteAgent.CreateRunner( runnerId );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestDomain.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestDomain.cs
@@ -1,93 +1,93 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	using System.Diagnostics;
-	using System.Security.Policy;
-	using System.Reflection;
-	using System.Collections;
-	using System.Configuration;
-	using System.IO;
-
-	using NUnit.Core;
-
-	public class TestDomain : ProxyTestRunner, TestRunner
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// The appdomain used  to load tests
-		/// </summary>
-		private AppDomain domain; 
-
-		#endregion
-
-		#region Constructors
-		public TestDomain() : base( 0 ) { }
-
-		public TestDomain( int runnerID ) : base( runnerID ) { }
-		#endregion
-
-		#region Properties
-		public AppDomain AppDomain
-		{
-			get { return domain; }
-		}
-		#endregion
-
-		#region Loading and Unloading Tests
-		public override bool Load( TestPackage package )
-		{
-			Unload();
-
-			try
-			{
-				if ( this.domain == null )
-					this.domain = Services.DomainManager.CreateDomain( package );
-            
-				if ( this.TestRunner == null )
-					this.TestRunner = MakeRemoteTestRunner( domain );
-
-				return TestRunner.Load( package );
-			}
-			catch
-			{
-				Unload();
-				throw;
-			}
-		}
-
-		public override void Unload()
-		{
-			this.TestRunner = null;
-
-			if(domain != null) 
-			{
-				Services.DomainManager.Unload(domain);
-				domain = null;
-			}
-		}
-		#endregion
-
-		#region MakeRemoteTestRunner Helper
-		private TestRunner MakeRemoteTestRunner( AppDomain runnerDomain )
-		{
-			Type runnerType = typeof( RemoteTestRunner );
-			object obj = runnerDomain.CreateInstanceAndUnwrap(
-				runnerType.Assembly.FullName, 
-				runnerType.FullName,
-				false, BindingFlags.Default,null,new object[] { this.ID },null,null,null);
-			
-			RemoteTestRunner runner = (RemoteTestRunner) obj;
-
-			return runner;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	using System.Diagnostics;
+	using System.Security.Policy;
+	using System.Reflection;
+	using System.Collections;
+	using System.Configuration;
+	using System.IO;
+
+	using NUnit.Core;
+
+	public class TestDomain : ProxyTestRunner, TestRunner
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// The appdomain used  to load tests
+		/// </summary>
+		private AppDomain domain; 
+
+		#endregion
+
+		#region Constructors
+		public TestDomain() : base( 0 ) { }
+
+		public TestDomain( int runnerID ) : base( runnerID ) { }
+		#endregion
+
+		#region Properties
+		public AppDomain AppDomain
+		{
+			get { return domain; }
+		}
+		#endregion
+
+		#region Loading and Unloading Tests
+		public override bool Load( TestPackage package )
+		{
+			Unload();
+
+			try
+			{
+				if ( this.domain == null )
+					this.domain = Services.DomainManager.CreateDomain( package );
+            
+				if ( this.TestRunner == null )
+					this.TestRunner = MakeRemoteTestRunner( domain );
+
+				return TestRunner.Load( package );
+			}
+			catch
+			{
+				Unload();
+				throw;
+			}
+		}
+
+		public override void Unload()
+		{
+			this.TestRunner = null;
+
+			if(domain != null) 
+			{
+				Services.DomainManager.Unload(domain);
+				domain = null;
+			}
+		}
+		#endregion
+
+		#region MakeRemoteTestRunner Helper
+		private TestRunner MakeRemoteTestRunner( AppDomain runnerDomain )
+		{
+			Type runnerType = typeof( RemoteTestRunner );
+			object obj = runnerDomain.CreateInstanceAndUnwrap(
+				runnerType.Assembly.FullName, 
+				runnerType.FullName,
+				false, BindingFlags.Default,null,new object[] { this.ID },null,null,null);
+			
+			RemoteTestRunner runner = (RemoteTestRunner) obj;
+
+			return runner;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestEventArgs.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestEventArgs.cs
@@ -1,234 +1,234 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Diagnostics;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	#region TestEventHandler delegate
-
-	/// <summary>
-	/// The delegates for all events related to running tests
-	/// </summary>
-	public delegate void TestEventHandler ( object sender, TestEventArgs args );
-
-	#endregion
-
-	#region TestAction enumeration
-
-	/// <summary>
-	/// Enumeration used to distiguish test events
-	/// </summary>
-	public enum TestAction
-	{
-		// Project Load Events
-		ProjectLoading,
-		ProjectLoaded,
-		ProjectLoadFailed,
-		ProjectUnloading,
-		ProjectUnloaded,
-		ProjectUnloadFailed,
-		// Test Load Events
-		TestLoading,
-		TestLoaded,
-		TestLoadFailed,
-		TestReloading,
-		TestReloaded,
-		TestReloadFailed,
-		TestUnloading,
-		TestUnloaded,
-		TestUnloadFailed,
-		// Test Run Events
-		RunStarting,
-		RunFinished,
-		SuiteStarting,
-		SuiteFinished,
-		TestStarting,
-		TestFinished,
-		TestException,
-		TestOutput
-}
-
-	#endregion
-
-	/// <summary>
-	/// Argument used for all test events
-	/// </summary>
-	public class TestEventArgs : EventArgs
-	{
-		#region Instance Variables
-
-		// The action represented by the event
-		private TestAction action;
-
-		// The name of the test or other item
-		private string name;
-		
-		// The name of the test we are running
-		private ITest test;
-
-		private TestName testName;
-
-		// The results from our tests
-		private TestResult testResult;
-		
-		// The exception causing a failure
-		private Exception exception;
-
-		// The test output
-		private TestOutput testOutput;
-
-		// The number of tests we are running
-		private int testCount;
-
-		#endregion
-
-		#region Constructors
-
-		// TestLoaded, TestReloaded
-		public TestEventArgs( TestAction action, 
-			string name, ITest test )
-		{
-			Debug.Assert( 
-				action == TestAction.TestLoaded || action == TestAction.TestReloaded,
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.name = name;
-			this.test = test;
-			if ( test != null )
-				this.testCount = test.TestCount;
-		}
-
-		// ProjectLoading, ProjectLoaded, ProjectUnloading, ProjectUnloaded,
-		// TestLoading, TestUnloading, TestUnloaded, TestReloading
-		public TestEventArgs( TestAction action, string name )
-		{
-			Debug.Assert( 
-				action == TestAction.ProjectLoading || action == TestAction.ProjectLoaded ||
-				action == TestAction.ProjectUnloading || action == TestAction.ProjectUnloaded ||
-				action == TestAction.TestLoading || action == TestAction.TestUnloading ||
-				action == TestAction.TestUnloaded || action == TestAction.TestReloading,
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.name = name;
-		}
-
-		public TestEventArgs( TestAction action, string name, int testCount )
-		{
-			Debug.Assert( action == TestAction.RunStarting,
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.name = name;
-			this.testCount = testCount;
-		}
-
-		// ProjectLoadFailed, ProjectUnloadFailed, TestLoadFailed, TestUnloadFailed, TestReloadFailed, TestException
-		public TestEventArgs( TestAction action,
-			string name, Exception exception )
-		{
-			Debug.Assert(
-				action == TestAction.ProjectLoadFailed || action == TestAction.ProjectUnloadFailed ||
-				action == TestAction.TestLoadFailed || action == TestAction.TestUnloadFailed ||
-				action == TestAction.TestReloadFailed || action == TestAction.TestException, 
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.name = name;
-			this.exception = exception;
-		}
-
-		// TestStarting, SuiteStarting
-		public TestEventArgs( TestAction action, TestName testName )
-		{
-			Debug.Assert( action == TestAction.TestStarting || action == TestAction.SuiteStarting,
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.testName = testName;
-		}
-
-		// TestFinished, SuiteFinished, RunFinished
-		public TestEventArgs( TestAction action, TestResult testResult )
-		{
-			Debug.Assert( action == TestAction.TestFinished || action == TestAction.SuiteFinished ||
-				action == TestAction.RunFinished,
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.testResult = testResult;
-		}
-
-		// RunFinished
-		public TestEventArgs( TestAction action, Exception exception )
-		{
-			Debug.Assert( action == TestAction.RunFinished,
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.exception = exception;
-		}
-
-		// TestOutput
-		public TestEventArgs( TestAction action, TestOutput testOutput )
-		{
-			Debug.Assert( action == TestAction.TestOutput,
-				"Invalid TestAction argument to TestEventArgs constructor" );
-
-			this.action = action;
-			this.testOutput = testOutput;
-		}
-		#endregion
-
-		#region Properties
-
-		public TestAction Action
-		{
-			get { return action; }
-		}
-
-		public string Name
-		{
-			get { return name; }
-		}
-
-		public ITest Test
-		{
-			get { return test; }
-		}
-
-		public TestName TestName
-		{
-			get { return testName; }
-		}
-
-		public int TestCount 
-		{
-			get	{ return testCount;	}
-		}
-
-		public TestResult Result
-		{
-			get { return testResult; }
-		}
-
-		public Exception Exception
-		{
-			get { return exception; }
-		}
-
-		public TestOutput TestOutput
-		{
-			get { return testOutput; }
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Diagnostics;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	#region TestEventHandler delegate
+
+	/// <summary>
+	/// The delegates for all events related to running tests
+	/// </summary>
+	public delegate void TestEventHandler ( object sender, TestEventArgs args );
+
+	#endregion
+
+	#region TestAction enumeration
+
+	/// <summary>
+	/// Enumeration used to distiguish test events
+	/// </summary>
+	public enum TestAction
+	{
+		// Project Load Events
+		ProjectLoading,
+		ProjectLoaded,
+		ProjectLoadFailed,
+		ProjectUnloading,
+		ProjectUnloaded,
+		ProjectUnloadFailed,
+		// Test Load Events
+		TestLoading,
+		TestLoaded,
+		TestLoadFailed,
+		TestReloading,
+		TestReloaded,
+		TestReloadFailed,
+		TestUnloading,
+		TestUnloaded,
+		TestUnloadFailed,
+		// Test Run Events
+		RunStarting,
+		RunFinished,
+		SuiteStarting,
+		SuiteFinished,
+		TestStarting,
+		TestFinished,
+		TestException,
+		TestOutput
+}
+
+	#endregion
+
+	/// <summary>
+	/// Argument used for all test events
+	/// </summary>
+	public class TestEventArgs : EventArgs
+	{
+		#region Instance Variables
+
+		// The action represented by the event
+		private TestAction action;
+
+		// The name of the test or other item
+		private string name;
+		
+		// The name of the test we are running
+		private ITest test;
+
+		private TestName testName;
+
+		// The results from our tests
+		private TestResult testResult;
+		
+		// The exception causing a failure
+		private Exception exception;
+
+		// The test output
+		private TestOutput testOutput;
+
+		// The number of tests we are running
+		private int testCount;
+
+		#endregion
+
+		#region Constructors
+
+		// TestLoaded, TestReloaded
+		public TestEventArgs( TestAction action, 
+			string name, ITest test )
+		{
+			Debug.Assert( 
+				action == TestAction.TestLoaded || action == TestAction.TestReloaded,
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.name = name;
+			this.test = test;
+			if ( test != null )
+				this.testCount = test.TestCount;
+		}
+
+		// ProjectLoading, ProjectLoaded, ProjectUnloading, ProjectUnloaded,
+		// TestLoading, TestUnloading, TestUnloaded, TestReloading
+		public TestEventArgs( TestAction action, string name )
+		{
+			Debug.Assert( 
+				action == TestAction.ProjectLoading || action == TestAction.ProjectLoaded ||
+				action == TestAction.ProjectUnloading || action == TestAction.ProjectUnloaded ||
+				action == TestAction.TestLoading || action == TestAction.TestUnloading ||
+				action == TestAction.TestUnloaded || action == TestAction.TestReloading,
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.name = name;
+		}
+
+		public TestEventArgs( TestAction action, string name, int testCount )
+		{
+			Debug.Assert( action == TestAction.RunStarting,
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.name = name;
+			this.testCount = testCount;
+		}
+
+		// ProjectLoadFailed, ProjectUnloadFailed, TestLoadFailed, TestUnloadFailed, TestReloadFailed, TestException
+		public TestEventArgs( TestAction action,
+			string name, Exception exception )
+		{
+			Debug.Assert(
+				action == TestAction.ProjectLoadFailed || action == TestAction.ProjectUnloadFailed ||
+				action == TestAction.TestLoadFailed || action == TestAction.TestUnloadFailed ||
+				action == TestAction.TestReloadFailed || action == TestAction.TestException, 
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.name = name;
+			this.exception = exception;
+		}
+
+		// TestStarting, SuiteStarting
+		public TestEventArgs( TestAction action, TestName testName )
+		{
+			Debug.Assert( action == TestAction.TestStarting || action == TestAction.SuiteStarting,
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.testName = testName;
+		}
+
+		// TestFinished, SuiteFinished, RunFinished
+		public TestEventArgs( TestAction action, TestResult testResult )
+		{
+			Debug.Assert( action == TestAction.TestFinished || action == TestAction.SuiteFinished ||
+				action == TestAction.RunFinished,
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.testResult = testResult;
+		}
+
+		// RunFinished
+		public TestEventArgs( TestAction action, Exception exception )
+		{
+			Debug.Assert( action == TestAction.RunFinished,
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.exception = exception;
+		}
+
+		// TestOutput
+		public TestEventArgs( TestAction action, TestOutput testOutput )
+		{
+			Debug.Assert( action == TestAction.TestOutput,
+				"Invalid TestAction argument to TestEventArgs constructor" );
+
+			this.action = action;
+			this.testOutput = testOutput;
+		}
+		#endregion
+
+		#region Properties
+
+		public TestAction Action
+		{
+			get { return action; }
+		}
+
+		public string Name
+		{
+			get { return name; }
+		}
+
+		public ITest Test
+		{
+			get { return test; }
+		}
+
+		public TestName TestName
+		{
+			get { return testName; }
+		}
+
+		public int TestCount 
+		{
+			get	{ return testCount;	}
+		}
+
+		public TestResult Result
+		{
+			get { return testResult; }
+		}
+
+		public Exception Exception
+		{
+			get { return exception; }
+		}
+
+		public TestOutput TestOutput
+		{
+			get { return testOutput; }
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestEventDispatcher.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestEventDispatcher.cs
@@ -1,234 +1,234 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Helper class used to dispatch test events
-	/// </summary>
-	public class TestEventDispatcher : ITestEvents
-	{
-		#region Events
-
-		// Project loading events
-		public event TestEventHandler ProjectLoading;
-		public event TestEventHandler ProjectLoaded;
-		public event TestEventHandler ProjectLoadFailed;
-		public event TestEventHandler ProjectUnloading;
-		public event TestEventHandler ProjectUnloaded;
-		public event TestEventHandler ProjectUnloadFailed;
-
-		// Test loading events
-		public event TestEventHandler TestLoading;	
-		public event TestEventHandler TestLoaded;	
-		public event TestEventHandler TestLoadFailed;
-
-		public event TestEventHandler TestReloading;
-		public event TestEventHandler TestReloaded;
-		public event TestEventHandler TestReloadFailed;
-
-		public event TestEventHandler TestUnloading;
-		public event TestEventHandler TestUnloaded;
-		public event TestEventHandler TestUnloadFailed;
-
-		// Test running events
-		public event TestEventHandler RunStarting;	
-		public event TestEventHandler RunFinished;
-		
-		public event TestEventHandler SuiteStarting;
-		public event TestEventHandler SuiteFinished;
-
-		public event TestEventHandler TestStarting;
-		public event TestEventHandler TestFinished;
-
-		public event TestEventHandler TestException;
-		public event TestEventHandler TestOutput;
-
-		#endregion
-
-		#region Methods for Firing Events
-		
-		protected virtual void Fire( TestEventHandler handler, TestEventArgs e )
-		{
-			if ( handler != null )
-				handler( this, e );
-		}
-
-		public void FireProjectLoading( string fileName )
-		{
-			Fire(
-				ProjectLoading,
-				new TestEventArgs( TestAction.ProjectLoading, fileName ) );
-		}
-
-		public void FireProjectLoaded( string fileName )
-		{
-			Fire( 
-				ProjectLoaded,
-				new TestEventArgs( TestAction.ProjectLoaded, fileName ) );
-		}
-
-		public void FireProjectLoadFailed( string fileName, Exception exception )
-		{
-			Fire( 
-				ProjectLoadFailed,
-				new TestEventArgs( TestAction.ProjectLoadFailed, fileName, exception ) );
-		}
-
-		public void FireProjectUnloading( string fileName )
-		{
-			Fire( 
-				ProjectUnloading,
-				new TestEventArgs( TestAction.ProjectUnloading, fileName ) );
-		}
-
-		public void FireProjectUnloaded( string fileName )
-		{
-			Fire( 
-				ProjectUnloaded,
-				new TestEventArgs( TestAction.ProjectUnloaded, fileName ) );
-		}
-
-		public void FireProjectUnloadFailed( string fileName, Exception exception )
-		{
-			Fire( 
-				ProjectUnloadFailed,
-				new TestEventArgs( TestAction.ProjectUnloadFailed, fileName, exception ) );
-		}
-
-		public void FireTestLoading( string fileName )
-		{
-			Fire( 
-				TestLoading,
-				new TestEventArgs( TestAction.TestLoading, fileName ) );
-		}
-
-		public void FireTestLoaded( string fileName, ITest test )
-		{
-			Fire( 
-				TestLoaded,
-				new TestEventArgs( TestAction.TestLoaded, fileName, test ) );
-		}
-
-		public void FireTestLoadFailed( string fileName, Exception exception )
-		{
-			Fire(
-				TestLoadFailed,
-				new TestEventArgs( TestAction.TestLoadFailed, fileName, exception ) );
-		}
-
-		public void FireTestUnloading( string fileName )
-		{
-			Fire(
-				TestUnloading,
-				new TestEventArgs( TestAction.TestUnloading, fileName ) );
-		}
-
-		public void FireTestUnloaded( string fileName )
-		{
-			Fire(
-				TestUnloaded,
-				new TestEventArgs( TestAction.TestUnloaded, fileName ) );
-		}
-
-		public void FireTestUnloadFailed( string fileName, Exception exception )
-		{
-			Fire(
-				TestUnloadFailed, 
-				new TestEventArgs( TestAction.TestUnloadFailed, fileName, exception ) );
-		}
-
-		public void FireTestReloading( string fileName )
-		{
-			Fire(
-				TestReloading,
-				new TestEventArgs( TestAction.TestReloading, fileName ) );
-		}
-
-		public void FireTestReloaded( string fileName, ITest test )
-		{
-			Fire(
-				TestReloaded,
-				new TestEventArgs( TestAction.TestReloaded, fileName, test ) );
-		}
-
-		public void FireTestReloadFailed( string fileName, Exception exception )
-		{
-			Fire(
-				TestReloadFailed, 
-				new TestEventArgs( TestAction.TestReloadFailed, fileName, exception ) );
-		}
-
-		public void FireRunStarting( string name, int testCount )
-		{
-			Fire(
-				RunStarting,
-				new TestEventArgs( TestAction.RunStarting, name, testCount ) );
-		}
-
-		public void FireRunFinished( TestResult result )
-		{	
-			Fire(
-				RunFinished,
-				new TestEventArgs( TestAction.RunFinished, result ) );
-		}
-
-		public void FireRunFinished( Exception exception )
-		{
-			Fire(
-				RunFinished,
-				new TestEventArgs( TestAction.RunFinished, exception ) );
-		}
-
-		public void FireTestStarting( TestName testName )
-		{
-			Fire(
-				TestStarting,
-				new TestEventArgs( TestAction.TestStarting, testName ) );
-		}
-
-		public void FireTestFinished( TestResult result )
-		{	
-			Fire(
-				TestFinished,
-				new TestEventArgs( TestAction.TestFinished, result ) );
-		}
-
-		public void FireSuiteStarting( TestName testName )
-		{
-			Fire(
-				SuiteStarting,
-				new TestEventArgs( TestAction.SuiteStarting, testName ) );
-		}
-
-		public void FireSuiteFinished( TestResult result )
-		{	
-			Fire(
-				SuiteFinished,
-				new TestEventArgs( TestAction.SuiteFinished, result ) );
-		}
-
-		public void FireTestException( string name, Exception exception )
-		{
-			Fire(
-				TestException,
-				new TestEventArgs( TestAction.TestException, name, exception ) );
-		}
-
-		public void FireTestOutput( TestOutput testOutput )
-		{
-			Fire(
-				TestOutput,
-				new TestEventArgs( TestAction.TestOutput, testOutput ) );
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Helper class used to dispatch test events
+	/// </summary>
+	public class TestEventDispatcher : ITestEvents
+	{
+		#region Events
+
+		// Project loading events
+		public event TestEventHandler ProjectLoading;
+		public event TestEventHandler ProjectLoaded;
+		public event TestEventHandler ProjectLoadFailed;
+		public event TestEventHandler ProjectUnloading;
+		public event TestEventHandler ProjectUnloaded;
+		public event TestEventHandler ProjectUnloadFailed;
+
+		// Test loading events
+		public event TestEventHandler TestLoading;	
+		public event TestEventHandler TestLoaded;	
+		public event TestEventHandler TestLoadFailed;
+
+		public event TestEventHandler TestReloading;
+		public event TestEventHandler TestReloaded;
+		public event TestEventHandler TestReloadFailed;
+
+		public event TestEventHandler TestUnloading;
+		public event TestEventHandler TestUnloaded;
+		public event TestEventHandler TestUnloadFailed;
+
+		// Test running events
+		public event TestEventHandler RunStarting;	
+		public event TestEventHandler RunFinished;
+		
+		public event TestEventHandler SuiteStarting;
+		public event TestEventHandler SuiteFinished;
+
+		public event TestEventHandler TestStarting;
+		public event TestEventHandler TestFinished;
+
+		public event TestEventHandler TestException;
+		public event TestEventHandler TestOutput;
+
+		#endregion
+
+		#region Methods for Firing Events
+		
+		protected virtual void Fire( TestEventHandler handler, TestEventArgs e )
+		{
+			if ( handler != null )
+				handler( this, e );
+		}
+
+		public void FireProjectLoading( string fileName )
+		{
+			Fire(
+				ProjectLoading,
+				new TestEventArgs( TestAction.ProjectLoading, fileName ) );
+		}
+
+		public void FireProjectLoaded( string fileName )
+		{
+			Fire( 
+				ProjectLoaded,
+				new TestEventArgs( TestAction.ProjectLoaded, fileName ) );
+		}
+
+		public void FireProjectLoadFailed( string fileName, Exception exception )
+		{
+			Fire( 
+				ProjectLoadFailed,
+				new TestEventArgs( TestAction.ProjectLoadFailed, fileName, exception ) );
+		}
+
+		public void FireProjectUnloading( string fileName )
+		{
+			Fire( 
+				ProjectUnloading,
+				new TestEventArgs( TestAction.ProjectUnloading, fileName ) );
+		}
+
+		public void FireProjectUnloaded( string fileName )
+		{
+			Fire( 
+				ProjectUnloaded,
+				new TestEventArgs( TestAction.ProjectUnloaded, fileName ) );
+		}
+
+		public void FireProjectUnloadFailed( string fileName, Exception exception )
+		{
+			Fire( 
+				ProjectUnloadFailed,
+				new TestEventArgs( TestAction.ProjectUnloadFailed, fileName, exception ) );
+		}
+
+		public void FireTestLoading( string fileName )
+		{
+			Fire( 
+				TestLoading,
+				new TestEventArgs( TestAction.TestLoading, fileName ) );
+		}
+
+		public void FireTestLoaded( string fileName, ITest test )
+		{
+			Fire( 
+				TestLoaded,
+				new TestEventArgs( TestAction.TestLoaded, fileName, test ) );
+		}
+
+		public void FireTestLoadFailed( string fileName, Exception exception )
+		{
+			Fire(
+				TestLoadFailed,
+				new TestEventArgs( TestAction.TestLoadFailed, fileName, exception ) );
+		}
+
+		public void FireTestUnloading( string fileName )
+		{
+			Fire(
+				TestUnloading,
+				new TestEventArgs( TestAction.TestUnloading, fileName ) );
+		}
+
+		public void FireTestUnloaded( string fileName )
+		{
+			Fire(
+				TestUnloaded,
+				new TestEventArgs( TestAction.TestUnloaded, fileName ) );
+		}
+
+		public void FireTestUnloadFailed( string fileName, Exception exception )
+		{
+			Fire(
+				TestUnloadFailed, 
+				new TestEventArgs( TestAction.TestUnloadFailed, fileName, exception ) );
+		}
+
+		public void FireTestReloading( string fileName )
+		{
+			Fire(
+				TestReloading,
+				new TestEventArgs( TestAction.TestReloading, fileName ) );
+		}
+
+		public void FireTestReloaded( string fileName, ITest test )
+		{
+			Fire(
+				TestReloaded,
+				new TestEventArgs( TestAction.TestReloaded, fileName, test ) );
+		}
+
+		public void FireTestReloadFailed( string fileName, Exception exception )
+		{
+			Fire(
+				TestReloadFailed, 
+				new TestEventArgs( TestAction.TestReloadFailed, fileName, exception ) );
+		}
+
+		public void FireRunStarting( string name, int testCount )
+		{
+			Fire(
+				RunStarting,
+				new TestEventArgs( TestAction.RunStarting, name, testCount ) );
+		}
+
+		public void FireRunFinished( TestResult result )
+		{	
+			Fire(
+				RunFinished,
+				new TestEventArgs( TestAction.RunFinished, result ) );
+		}
+
+		public void FireRunFinished( Exception exception )
+		{
+			Fire(
+				RunFinished,
+				new TestEventArgs( TestAction.RunFinished, exception ) );
+		}
+
+		public void FireTestStarting( TestName testName )
+		{
+			Fire(
+				TestStarting,
+				new TestEventArgs( TestAction.TestStarting, testName ) );
+		}
+
+		public void FireTestFinished( TestResult result )
+		{	
+			Fire(
+				TestFinished,
+				new TestEventArgs( TestAction.TestFinished, result ) );
+		}
+
+		public void FireSuiteStarting( TestName testName )
+		{
+			Fire(
+				SuiteStarting,
+				new TestEventArgs( TestAction.SuiteStarting, testName ) );
+		}
+
+		public void FireSuiteFinished( TestResult result )
+		{	
+			Fire(
+				SuiteFinished,
+				new TestEventArgs( TestAction.SuiteFinished, result ) );
+		}
+
+		public void FireTestException( string name, Exception exception )
+		{
+			Fire(
+				TestException,
+				new TestEventArgs( TestAction.TestException, name, exception ) );
+		}
+
+		public void FireTestOutput( TestOutput testOutput )
+		{
+			Fire(
+				TestOutput,
+				new TestEventArgs( TestAction.TestOutput, testOutput ) );
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestExceptionHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestExceptionHandler.cs
@@ -1,46 +1,46 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for UnhandledExceptionCatcher.
-	/// </summary>
-	public class TestExceptionHandler : IDisposable
-	{
-		private UnhandledExceptionEventHandler handler;
-
-		public TestExceptionHandler( UnhandledExceptionEventHandler handler )
-		{
-			this.handler = handler;
-			AppDomain.CurrentDomain.UnhandledException += handler;
-		}
-
-		~TestExceptionHandler()
-		{
-			if ( handler != null )
-			{
-				AppDomain.CurrentDomain.UnhandledException -= handler;
-				handler = null;
-			}
-		}
-
-
-
-		public void Dispose()
-		{
-			if ( handler != null )
-			{
-				AppDomain.CurrentDomain.UnhandledException -= handler;
-				handler = null;
-			}
-
-			System.GC.SuppressFinalize( this );
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for UnhandledExceptionCatcher.
+	/// </summary>
+	public class TestExceptionHandler : IDisposable
+	{
+		private UnhandledExceptionEventHandler handler;
+
+		public TestExceptionHandler( UnhandledExceptionEventHandler handler )
+		{
+			this.handler = handler;
+			AppDomain.CurrentDomain.UnhandledException += handler;
+		}
+
+		~TestExceptionHandler()
+		{
+			if ( handler != null )
+			{
+				AppDomain.CurrentDomain.UnhandledException -= handler;
+				handler = null;
+			}
+		}
+
+
+
+		public void Dispose()
+		{
+			if ( handler != null )
+			{
+				AppDomain.CurrentDomain.UnhandledException -= handler;
+				handler = null;
+			}
+
+			System.GC.SuppressFinalize( this );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestLoader.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestLoader.cs
@@ -1,786 +1,786 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using System.IO;
-	using System.Collections;
-	using System.Threading;
-	using System.Configuration;
-	using NUnit.Core;
-	using NUnit.Core.Filters;
-
-
-	/// <summary>
-	/// TestLoader handles interactions between a test runner and a 
-	/// client program - typically the user interface - for the 
-	/// purpose of loading, unloading and running tests.
-	/// 
-	/// It implemements the EventListener interface which is used by 
-	/// the test runner and repackages those events, along with
-	/// others as individual events that clients may subscribe to
-	/// in collaboration with a TestEventDispatcher helper object.
-	/// 
-	/// TestLoader is quite handy for use with a gui client because
-	/// of the large number of events it supports. However, it has
-	/// no dependencies on ui components and can be used independently.
-	/// </summary>
-	public class TestLoader : MarshalByRefObject, NUnit.Core.EventListener, ITestLoader, IService
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// Our event dispatching helper object
-		/// </summary>
-		private TestEventDispatcher events;
-
-		/// <summary>
-		/// Use MuiltipleTestDomainRunner if true
-		/// </summary>
-		private bool multiDomain;
-
-		/// <summary>
-		/// Merge namespaces across multiple assemblies
-		/// </summary>
-		private bool mergeAssemblies;
-
-		/// <summary>
-		/// Generate suites for each level of namespace containing tests
-		/// </summary>
-		private bool autoNamespaceSuites;
-
-		private bool shadowCopyFiles;
-
-		/// <summary>
-		/// Loads and executes tests. Non-null when
-		/// we have loaded a test.
-		/// </summary>
-		private TestRunner testRunner = null;
-
-		/// <summary>
-		/// Our current test project, if we have one.
-		/// </summary>
-		private NUnitProject testProject = null;
-
-		/// <summary>
-		/// The currently loaded test, returned by the testrunner
-		/// </summary>
-		private ITest loadedTest = null;
-
-		/// <summary>
-		/// The test name that was specified when loading
-		/// </summary>
-		private string loadedTestName = null;
-
-		/// <summary>
-		/// The currently executing test
-		/// </summary>
-		private string currentTestName;
-
-		/// <summary>
-		/// Result of the last test run
-		/// </summary>
-		private TestResult testResult = null;
-
-		/// <summary>
-		/// The last exception received when trying to load, unload or run a test
-		/// </summary>
-		private Exception lastException = null;
-
-		/// <summary>
-		/// Watcher fires when the assembly changes
-		/// </summary>
-		private AssemblyWatcher watcher;
-
-		/// <summary>
-		/// Assembly changed during a test and
-		/// needs to be reloaded later
-		/// </summary>
-		private bool reloadPending = false;
-
-		/// <summary>
-		/// Indicates whether to watch for changes
-		/// and reload the tests when a change occurs.
-		/// </summary>
-		private bool reloadOnChange = false;
-
-		/// <summary>
-		/// Indicates whether to automatically rerun
-		/// the tests when a change occurs.
-		/// </summary>
-		private bool rerunOnChange = false;
-
-		/// <summary>
-		/// The last filter used for a run - used to 
-		/// rerun tests when a change occurs
-		/// </summary>
-		private ITestFilter lastFilter;
-
-		/// <summary>
-		/// Indicates whether to reload the tests
-		/// before each run.
-		/// </summary>
-		private bool reloadOnRun = false;
-
-		#endregion
-
-		#region Constructors
-
-		public TestLoader()
-			: this( new TestEventDispatcher() ) { }
-
-		public TestLoader(TestEventDispatcher eventDispatcher )
-		{
-			this.events = eventDispatcher;
-
-			ISettings settings = Services.UserSettings;
-			this.ReloadOnRun = settings.GetSetting( "Options.TestLoader.ReloadOnRun", true );
-			this.ReloadOnChange = settings.GetSetting( "Options.TestLoader.ReloadOnChange", true );
-			this.RerunOnChange = settings.GetSetting( "Options.TestLoader.RerunOnChange", false );
-			this.MultiDomain = settings.GetSetting( "Options.TestLoader.MultiDomain", false );
-			this.MergeAssemblies = settings.GetSetting( "Options.TestLoader.MergeAssemblies", false );
-			this.AutoNamespaceSuites = settings.GetSetting( "Options.TestLoader.AutoNamespaceSuites", true );
-			this.ShadowCopyFiles = settings.GetSetting( "Options.TestLoader.ShadowCopyFiles", true );
-
-			AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( OnUnhandledException );
-		}
-
-		#endregion
-
-		#region Properties
-		public bool IsProjectLoaded
-		{
-			get { return testProject != null; }
-		}
-
-		public bool IsTestLoaded
-		{
-			get { return loadedTest != null; }
-		}
-
-		public bool Running
-		{
-			get { return testRunner != null && testRunner.Running; }
-		}
-
-		public NUnitProject TestProject
-		{
-			get { return testProject; }
-			set	{ OnProjectLoad( value ); }
-		}
-
-		public ITestEvents Events
-		{
-			get { return events; }
-		}
-
-		public string TestFileName
-		{
-			get { return testProject.ProjectPath; }
-		}
-
-		public TestResult TestResult
-		{
-			get { return testResult; }
-		}
-
-		public Exception LastException
-		{
-			get { return lastException; }
-		}
-
-		public bool ReloadOnChange
-		{
-			get { return reloadOnChange; }
-			set { reloadOnChange = value; }
-		}
-
-		public bool RerunOnChange
-		{
-			get { return rerunOnChange; }
-			set { rerunOnChange = value; }
-		}
-
-		public bool ReloadOnRun
-		{
-			get { return reloadOnRun; }
-			set { reloadOnRun = value; }
-		}
-
-		public bool MultiDomain
-		{
-			get { return multiDomain; }
-			set { multiDomain = value; }
-		}
-
-		public bool MergeAssemblies
-		{
-			get { return mergeAssemblies; }
-			set { mergeAssemblies = value; }
-		}
-
-		public bool AutoNamespaceSuites
-		{
-			get { return autoNamespaceSuites; }
-			set { autoNamespaceSuites = value; }
-		}
-
-		public bool ShadowCopyFiles
-		{
-			get { return shadowCopyFiles; }
-			set { shadowCopyFiles = value; }
-		}
-
-		public IList AssemblyInfo
-		{
-			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
-		}
-
-		public int TestCount
-		{
-			get { return loadedTest == null ? 0 : loadedTest.TestCount; }
-		}
-		#endregion
-
-		#region EventListener Handlers
-
-		void EventListener.RunStarted(string name, int testCount)
-		{
-			events.FireRunStarting( name, testCount );
-		}
-
-		void EventListener.RunFinished(NUnit.Core.TestResult testResult)
-		{
-			this.testResult = testResult;
-
-			try
-			{
-				this.SaveLastResult( 
-					Path.Combine( Path.GetDirectoryName( this.TestFileName ), "TestResult.xml" ) );
-				events.FireRunFinished( testResult );
-			}
-			catch( Exception ex )
-			{
-				this.lastException = ex;
-				events.FireRunFinished( ex );
-			}
-		}
-
-		void EventListener.RunFinished(Exception exception)
-		{
-			this.lastException = exception;
-			events.FireRunFinished( exception );
-		}
-
-		/// <summary>
-		/// Trigger event when each test starts
-		/// </summary>
-		/// <param name="testCase">TestCase that is starting</param>
-		void EventListener.TestStarted(TestName testName)
-		{
-			this.currentTestName = testName.FullName;
-			events.FireTestStarting( testName );
-		}
-
-		/// <summary>
-		/// Trigger event when each test finishes
-		/// </summary>
-		/// <param name="result">Result of the case that finished</param>
-		void EventListener.TestFinished(TestCaseResult result)
-		{
-			events.FireTestFinished( result );
-		}
-
-		/// <summary>
-		/// Trigger event when each suite starts
-		/// </summary>
-		/// <param name="suite">Suite that is starting</param>
-		void EventListener.SuiteStarted(TestName suiteName)
-		{
-			events.FireSuiteStarting( suiteName );
-		}
-
-		/// <summary>
-		/// Trigger event when each suite finishes
-		/// </summary>
-		/// <param name="result">Result of the suite that finished</param>
-		void EventListener.SuiteFinished(TestSuiteResult result)
-		{
-			events.FireSuiteFinished( result );
-		}
-
-		/// <summary>
-		/// Trigger event when an unhandled exception (other than ThreadAbordException) occurs during a test
-		/// </summary>
-		/// <param name="exception">The unhandled exception</param>
-		void EventListener.UnhandledException(Exception exception)
-		{
-			events.FireTestException( this.currentTestName, exception );
-		}
-
-		void OnUnhandledException( object sender, UnhandledExceptionEventArgs args )
-		{
-			switch( args.ExceptionObject.GetType().FullName )
-			{
-				case "System.Threading.ThreadAbortException":
-					break;
-				case "NUnit.Framework.AssertionException":
-				default:
-					events.FireTestException( this.currentTestName, (Exception)args.ExceptionObject );
-					break;
-			}
-		}
-
-		/// <summary>
-		/// Trigger event when output occurs during a test
-		/// </summary>
-		/// <param name="testOutput">The test output</param>
-		void EventListener.TestOutput(TestOutput testOutput)
-		{
-			events.FireTestOutput( testOutput );
-		}
-
-		#endregion
-
-		#region Methods for Loading and Unloading Projects
-		
-		/// <summary>
-		/// Create a new project with default naming
-		/// </summary>
-		public void NewProject()
-		{
-			try
-			{
-				events.FireProjectLoading( "New Project" );
-
-				OnProjectLoad( NUnitProject.NewProject() );
-			}
-			catch( Exception exception )
-			{
-				lastException = exception;
-				events.FireProjectLoadFailed( "New Project", exception );
-			}
-		}
-
-		/// <summary>
-		/// Create a new project using a given path
-		/// </summary>
-		public void NewProject( string filePath )
-		{
-			try
-			{
-				events.FireProjectLoading( filePath );
-
-				NUnitProject project = new NUnitProject( filePath );
-
-				project.Configs.Add( "Debug" );
-				project.Configs.Add( "Release" );			
-				project.IsDirty = false;
-
-				OnProjectLoad( project );
-			}
-			catch( Exception exception )
-			{
-				lastException = exception;
-				events.FireProjectLoadFailed( filePath, exception );
-			}
-		}
-
-		/// <summary>
-		/// Load a new project, optionally selecting the config and fire events
-		/// </summary>
-		public void LoadProject( string filePath, string configName )
-		{
-			try
-			{
-				events.FireProjectLoading( filePath );
-
-				NUnitProject newProject = NUnitProject.LoadProject( filePath );
-				if ( configName != null ) 
-				{
-					newProject.SetActiveConfig( configName );
-					newProject.IsDirty = false;
-				}
-
-				OnProjectLoad( newProject );
-			}
-			catch( Exception exception )
-			{
-				lastException = exception;
-				events.FireProjectLoadFailed( filePath, exception );
-			}
-		}
-
-		/// <summary>
-		/// Load a new project using the default config and fire events
-		/// </summary>
-		public void LoadProject( string filePath )
-		{
-			LoadProject( filePath, null );
-		}
-
-		/// <summary>
-		/// Load a project from a list of assemblies and fire events
-		/// </summary>
-		public void LoadProject( string[] assemblies )
-		{
-			try
-			{
-				events.FireProjectLoading( "New Project" );
-
-				NUnitProject newProject = NUnitProject.FromAssemblies( assemblies );
-
-				OnProjectLoad( newProject );
-			}
-			catch( Exception exception )
-			{
-				lastException = exception;
-				events.FireProjectLoadFailed( "New Project", exception );
-			}
-		}
-
-		/// <summary>
-		/// Unload the current project and fire events
-		/// </summary>
-		public void UnloadProject()
-		{
-			string testFileName = TestFileName;
-
-			try
-			{
-				events.FireProjectUnloading( testFileName );
-
-				if ( IsTestLoaded )
-					UnloadTest();
-
-				testProject.Changed -= new ProjectEventHandler( OnProjectChanged );
-				testProject = null;
-
-				events.FireProjectUnloaded( testFileName );
-			}
-			catch (Exception exception )
-			{
-				lastException = exception;
-				events.FireProjectUnloadFailed( testFileName, exception );
-			}
-
-		}
-
-		/// <summary>
-		/// Common operations done each time a project is loaded
-		/// </summary>
-		/// <param name="testProject">The newly loaded project</param>
-		private void OnProjectLoad( NUnitProject testProject )
-		{
-			if ( IsProjectLoaded )
-				UnloadProject();
-
-			this.testProject = testProject;
-			testProject.Changed += new ProjectEventHandler( OnProjectChanged );
-
-			events.FireProjectLoaded( TestFileName );
-		}
-
-		private void OnProjectChanged( object sender, ProjectEventArgs e )
-		{
-			switch ( e.type )
-			{
-				case ProjectChangeType.ActiveConfig:
-				case ProjectChangeType.Other:
-					if( TestProject.IsLoadable )
-						TryToLoadOrReloadTest();
-					break;
-
-				case ProjectChangeType.AddConfig:
-				case ProjectChangeType.UpdateConfig:
-					if ( e.configName == TestProject.ActiveConfigName && TestProject.IsLoadable )
-						TryToLoadOrReloadTest();
-					break;
-
-				case ProjectChangeType.RemoveConfig:
-					if ( IsTestLoaded && TestProject.Configs.Count == 0 )
-						UnloadTest();
-					break;
-
-				default:
-					break;
-			}
-		}
-
-		private void TryToLoadOrReloadTest()
-		{
-			if ( IsTestLoaded ) 
-				ReloadTest();
-			else 
-				LoadTest();
-		}
-
-		#endregion
-
-		#region Methods for Loading and Unloading Tests
-
-		public void LoadTest()
-		{
-			LoadTest( null );
-		}
-		
-		public void LoadTest( string testName )
-		{
-            long startTime = DateTime.Now.Ticks;
-
-			try
-			{
-				events.FireTestLoading( TestFileName );
-
-				testRunner = CreateRunner();
-
-				bool loaded = testRunner.Load( MakeTestPackage( testName ) );
-
-				loadedTest = testRunner.Test;
-				loadedTestName = testName;
-				testResult = null;
-				reloadPending = false;
-			
-				if ( ReloadOnChange )
-					InstallWatcher( );
-
-				if ( loaded )
-					events.FireTestLoaded( TestFileName, loadedTest );
-				else
-				{
-					lastException = new ApplicationException( string.Format ( "Unable to find test {0} in assembly", testName ) );
-					events.FireTestLoadFailed( TestFileName, lastException );
-				}
-			}
-			catch( FileNotFoundException exception )
-			{
-				lastException = exception;
-
-				foreach( string assembly in TestProject.ActiveConfig.Assemblies )
-				{
-					if ( Path.GetFileNameWithoutExtension( assembly ) == exception.FileName &&
-						!PathUtils.SamePathOrUnder( testProject.ActiveConfig.BasePath, assembly ) )
-					{
-						lastException = new ApplicationException( string.Format( "Unable to load {0} because it is not located under the AppBase", exception.FileName ), exception );
-						break;
-					}
-				}
-
-				events.FireTestLoadFailed( TestFileName, lastException );
-			}
-			catch( Exception exception )
-			{
-				lastException = exception;
-				events.FireTestLoadFailed( TestFileName, exception );
-			}
-
-            double loadTime = (double)(DateTime.Now.Ticks - startTime) / (double)TimeSpan.TicksPerSecond;
-            System.Diagnostics.Trace.WriteLine(string.Format("TestLoader: Loaded in {0} seconds", loadTime)); 
-		}
-
-		/// <summary>
-		/// Unload the current test suite and fire the Unloaded event
-		/// </summary>
-		public void UnloadTest( )
-		{
-			if( IsTestLoaded )
-			{
-				// Hold the name for notifications after unload
-				string fileName = TestFileName;
-
-				try
-				{
-					events.FireTestUnloading( fileName );
-
-					RemoveWatcher();
-
-					testRunner.Unload();
-
-					testRunner = null;
-
-					loadedTest = null;
-					loadedTestName = null;
-					testResult = null;
-					reloadPending = false;
-
-					events.FireTestUnloaded( fileName );
-				}
-				catch( Exception exception )
-				{
-					lastException = exception;
-					events.FireTestUnloadFailed( fileName, exception );
-				}
-			}
-		}
-
-		/// <summary>
-		/// Reload the current test on command
-		/// </summary>
-		public void ReloadTest()
-		{
-			try
-			{
-				events.FireTestReloading( TestFileName );
-
-				testRunner.Load( MakeTestPackage( loadedTestName ) );
-
-				loadedTest = testRunner.Test;
-				reloadPending = false;
-
-				events.FireTestReloaded( TestFileName, loadedTest );				
-			}
-			catch( Exception exception )
-			{
-				lastException = exception;
-				events.FireTestReloadFailed( TestFileName, exception );
-			}
-		}
-
-		/// <summary>
-		/// Handle watcher event that signals when the loaded assembly
-		/// file has changed. Make sure it's a real change before
-		/// firing the SuiteChangedEvent. Since this all happens
-		/// asynchronously, we use an event to let ui components
-		/// know that the failure happened.
-		/// </summary>
-		public void OnTestChanged( string testFileName )
-		{
-			if ( Running )
-				reloadPending = true;
-			else
-			{
-				ReloadTest();
-
-				if ( rerunOnChange && lastFilter != null )
-					testRunner.BeginRun( this, lastFilter );
-			}
-		}
-		#endregion
-
-		#region Methods for Running Tests
-		/// <summary>
-		/// Run all the tests
-		/// </summary>
-		public void RunTests()
-		{
-			RunTests( TestFilter.Empty );
-		}
-
-		/// <summary>
-		/// Run selected tests using a filter
-		/// </summary>
-		/// <param name="filter">The filter to be used</param>
-		public void RunTests( ITestFilter filter )
-		{
-			if ( !Running )
-			{
-				if ( reloadPending || ReloadOnRun )
-					ReloadTest();
-
-				this.lastFilter = filter;
-				testRunner.BeginRun( this, filter );
-			}
-		}
-
-		/// <summary>
-		/// Cancel the currently running test.
-		/// Fail silently if there is none to
-		/// allow for latency in the UI.
-		/// </summary>
-		public void CancelTestRun()
-		{
-			if ( Running )
-				testRunner.CancelRun();
-		}
-
-		public IList GetCategories() 
-		{
-			CategoryManager categoryManager = new CategoryManager();
-			categoryManager.AddAllCategories( this.loadedTest );
-			ArrayList list = new ArrayList( categoryManager.Categories );
-			list.Sort();
-			return list;
-		}
-		#endregion
-
-		public void SaveLastResult( string fileName )
-		{
-			XmlResultVisitor resultVisitor 
-				= new XmlResultVisitor( fileName, this.testResult );
-			this.testResult.Accept(resultVisitor);
-			resultVisitor.Write();
-		}
-
-		#region Helper Methods
-
-		/// <summary>
-		/// Install our watcher object so as to get notifications
-		/// about changes to a test.
-		/// </summary>
-		private void InstallWatcher()
-		{
-			if(watcher!=null) watcher.Stop();
-
-			watcher = new AssemblyWatcher( 1000, TestProject.ActiveConfig.Assemblies.ToArray() );
-			watcher.AssemblyChangedEvent += new AssemblyWatcher.AssemblyChangedHandler( OnTestChanged );
-			watcher.Start();
-		}
-
-		/// <summary>
-		/// Stop and remove our current watcher object.
-		/// </summary>
-		private void RemoveWatcher()
-		{
-			if ( watcher != null )
-			{
-				watcher.Stop();
-				watcher = null;
-			}
-		}
-
-		private TestRunner CreateRunner()
-		{
-			TestRunner runner = multiDomain
-				? (TestRunner)new MultipleTestDomainRunner()
-				: (TestRunner)new TestDomain();
-				
-			return runner;
-		}
-
-		private TestPackage MakeTestPackage( string testName )
-		{
-			TestPackage package = TestProject.ActiveConfig.MakeTestPackage();
-			package.TestName = testName;
-			package.Settings["MergeAssemblies"] = mergeAssemblies;
-			package.Settings["AutoNamespaceSuites"] = autoNamespaceSuites;
-			package.Settings["ShadowCopyFiles"] = shadowCopyFiles;
-			return package;
-		}
-		#endregion
-
-		#region InitializeLifetimeService Override
-		public override object InitializeLifetimeService()
-		{
-			return null;
-		}
-		#endregion
-
-		#region IService Members
-
-		public void UnloadService()
-		{
-			// TODO:  Add TestLoader.UnloadService implementation
-		}
-
-		public void InitializeService()
-		{
-			// TODO:  Add TestLoader.InitializeService implementation
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using System.IO;
+	using System.Collections;
+	using System.Threading;
+	using System.Configuration;
+	using NUnit.Core;
+	using NUnit.Core.Filters;
+
+
+	/// <summary>
+	/// TestLoader handles interactions between a test runner and a 
+	/// client program - typically the user interface - for the 
+	/// purpose of loading, unloading and running tests.
+	/// 
+	/// It implemements the EventListener interface which is used by 
+	/// the test runner and repackages those events, along with
+	/// others as individual events that clients may subscribe to
+	/// in collaboration with a TestEventDispatcher helper object.
+	/// 
+	/// TestLoader is quite handy for use with a gui client because
+	/// of the large number of events it supports. However, it has
+	/// no dependencies on ui components and can be used independently.
+	/// </summary>
+	public class TestLoader : MarshalByRefObject, NUnit.Core.EventListener, ITestLoader, IService
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// Our event dispatching helper object
+		/// </summary>
+		private TestEventDispatcher events;
+
+		/// <summary>
+		/// Use MuiltipleTestDomainRunner if true
+		/// </summary>
+		private bool multiDomain;
+
+		/// <summary>
+		/// Merge namespaces across multiple assemblies
+		/// </summary>
+		private bool mergeAssemblies;
+
+		/// <summary>
+		/// Generate suites for each level of namespace containing tests
+		/// </summary>
+		private bool autoNamespaceSuites;
+
+		private bool shadowCopyFiles;
+
+		/// <summary>
+		/// Loads and executes tests. Non-null when
+		/// we have loaded a test.
+		/// </summary>
+		private TestRunner testRunner = null;
+
+		/// <summary>
+		/// Our current test project, if we have one.
+		/// </summary>
+		private NUnitProject testProject = null;
+
+		/// <summary>
+		/// The currently loaded test, returned by the testrunner
+		/// </summary>
+		private ITest loadedTest = null;
+
+		/// <summary>
+		/// The test name that was specified when loading
+		/// </summary>
+		private string loadedTestName = null;
+
+		/// <summary>
+		/// The currently executing test
+		/// </summary>
+		private string currentTestName;
+
+		/// <summary>
+		/// Result of the last test run
+		/// </summary>
+		private TestResult testResult = null;
+
+		/// <summary>
+		/// The last exception received when trying to load, unload or run a test
+		/// </summary>
+		private Exception lastException = null;
+
+		/// <summary>
+		/// Watcher fires when the assembly changes
+		/// </summary>
+		private AssemblyWatcher watcher;
+
+		/// <summary>
+		/// Assembly changed during a test and
+		/// needs to be reloaded later
+		/// </summary>
+		private bool reloadPending = false;
+
+		/// <summary>
+		/// Indicates whether to watch for changes
+		/// and reload the tests when a change occurs.
+		/// </summary>
+		private bool reloadOnChange = false;
+
+		/// <summary>
+		/// Indicates whether to automatically rerun
+		/// the tests when a change occurs.
+		/// </summary>
+		private bool rerunOnChange = false;
+
+		/// <summary>
+		/// The last filter used for a run - used to 
+		/// rerun tests when a change occurs
+		/// </summary>
+		private ITestFilter lastFilter;
+
+		/// <summary>
+		/// Indicates whether to reload the tests
+		/// before each run.
+		/// </summary>
+		private bool reloadOnRun = false;
+
+		#endregion
+
+		#region Constructors
+
+		public TestLoader()
+			: this( new TestEventDispatcher() ) { }
+
+		public TestLoader(TestEventDispatcher eventDispatcher )
+		{
+			this.events = eventDispatcher;
+
+			ISettings settings = Services.UserSettings;
+			this.ReloadOnRun = settings.GetSetting( "Options.TestLoader.ReloadOnRun", true );
+			this.ReloadOnChange = settings.GetSetting( "Options.TestLoader.ReloadOnChange", true );
+			this.RerunOnChange = settings.GetSetting( "Options.TestLoader.RerunOnChange", false );
+			this.MultiDomain = settings.GetSetting( "Options.TestLoader.MultiDomain", false );
+			this.MergeAssemblies = settings.GetSetting( "Options.TestLoader.MergeAssemblies", false );
+			this.AutoNamespaceSuites = settings.GetSetting( "Options.TestLoader.AutoNamespaceSuites", true );
+			this.ShadowCopyFiles = settings.GetSetting( "Options.TestLoader.ShadowCopyFiles", true );
+
+			AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( OnUnhandledException );
+		}
+
+		#endregion
+
+		#region Properties
+		public bool IsProjectLoaded
+		{
+			get { return testProject != null; }
+		}
+
+		public bool IsTestLoaded
+		{
+			get { return loadedTest != null; }
+		}
+
+		public bool Running
+		{
+			get { return testRunner != null && testRunner.Running; }
+		}
+
+		public NUnitProject TestProject
+		{
+			get { return testProject; }
+			set	{ OnProjectLoad( value ); }
+		}
+
+		public ITestEvents Events
+		{
+			get { return events; }
+		}
+
+		public string TestFileName
+		{
+			get { return testProject.ProjectPath; }
+		}
+
+		public TestResult TestResult
+		{
+			get { return testResult; }
+		}
+
+		public Exception LastException
+		{
+			get { return lastException; }
+		}
+
+		public bool ReloadOnChange
+		{
+			get { return reloadOnChange; }
+			set { reloadOnChange = value; }
+		}
+
+		public bool RerunOnChange
+		{
+			get { return rerunOnChange; }
+			set { rerunOnChange = value; }
+		}
+
+		public bool ReloadOnRun
+		{
+			get { return reloadOnRun; }
+			set { reloadOnRun = value; }
+		}
+
+		public bool MultiDomain
+		{
+			get { return multiDomain; }
+			set { multiDomain = value; }
+		}
+
+		public bool MergeAssemblies
+		{
+			get { return mergeAssemblies; }
+			set { mergeAssemblies = value; }
+		}
+
+		public bool AutoNamespaceSuites
+		{
+			get { return autoNamespaceSuites; }
+			set { autoNamespaceSuites = value; }
+		}
+
+		public bool ShadowCopyFiles
+		{
+			get { return shadowCopyFiles; }
+			set { shadowCopyFiles = value; }
+		}
+
+		public IList AssemblyInfo
+		{
+			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
+		}
+
+		public int TestCount
+		{
+			get { return loadedTest == null ? 0 : loadedTest.TestCount; }
+		}
+		#endregion
+
+		#region EventListener Handlers
+
+		void EventListener.RunStarted(string name, int testCount)
+		{
+			events.FireRunStarting( name, testCount );
+		}
+
+		void EventListener.RunFinished(NUnit.Core.TestResult testResult)
+		{
+			this.testResult = testResult;
+
+			try
+			{
+				this.SaveLastResult( 
+					Path.Combine( Path.GetDirectoryName( this.TestFileName ), "TestResult.xml" ) );
+				events.FireRunFinished( testResult );
+			}
+			catch( Exception ex )
+			{
+				this.lastException = ex;
+				events.FireRunFinished( ex );
+			}
+		}
+
+		void EventListener.RunFinished(Exception exception)
+		{
+			this.lastException = exception;
+			events.FireRunFinished( exception );
+		}
+
+		/// <summary>
+		/// Trigger event when each test starts
+		/// </summary>
+		/// <param name="testCase">TestCase that is starting</param>
+		void EventListener.TestStarted(TestName testName)
+		{
+			this.currentTestName = testName.FullName;
+			events.FireTestStarting( testName );
+		}
+
+		/// <summary>
+		/// Trigger event when each test finishes
+		/// </summary>
+		/// <param name="result">Result of the case that finished</param>
+		void EventListener.TestFinished(TestCaseResult result)
+		{
+			events.FireTestFinished( result );
+		}
+
+		/// <summary>
+		/// Trigger event when each suite starts
+		/// </summary>
+		/// <param name="suite">Suite that is starting</param>
+		void EventListener.SuiteStarted(TestName suiteName)
+		{
+			events.FireSuiteStarting( suiteName );
+		}
+
+		/// <summary>
+		/// Trigger event when each suite finishes
+		/// </summary>
+		/// <param name="result">Result of the suite that finished</param>
+		void EventListener.SuiteFinished(TestSuiteResult result)
+		{
+			events.FireSuiteFinished( result );
+		}
+
+		/// <summary>
+		/// Trigger event when an unhandled exception (other than ThreadAbordException) occurs during a test
+		/// </summary>
+		/// <param name="exception">The unhandled exception</param>
+		void EventListener.UnhandledException(Exception exception)
+		{
+			events.FireTestException( this.currentTestName, exception );
+		}
+
+		void OnUnhandledException( object sender, UnhandledExceptionEventArgs args )
+		{
+			switch( args.ExceptionObject.GetType().FullName )
+			{
+				case "System.Threading.ThreadAbortException":
+					break;
+				case "NUnit.Framework.AssertionException":
+				default:
+					events.FireTestException( this.currentTestName, (Exception)args.ExceptionObject );
+					break;
+			}
+		}
+
+		/// <summary>
+		/// Trigger event when output occurs during a test
+		/// </summary>
+		/// <param name="testOutput">The test output</param>
+		void EventListener.TestOutput(TestOutput testOutput)
+		{
+			events.FireTestOutput( testOutput );
+		}
+
+		#endregion
+
+		#region Methods for Loading and Unloading Projects
+		
+		/// <summary>
+		/// Create a new project with default naming
+		/// </summary>
+		public void NewProject()
+		{
+			try
+			{
+				events.FireProjectLoading( "New Project" );
+
+				OnProjectLoad( NUnitProject.NewProject() );
+			}
+			catch( Exception exception )
+			{
+				lastException = exception;
+				events.FireProjectLoadFailed( "New Project", exception );
+			}
+		}
+
+		/// <summary>
+		/// Create a new project using a given path
+		/// </summary>
+		public void NewProject( string filePath )
+		{
+			try
+			{
+				events.FireProjectLoading( filePath );
+
+				NUnitProject project = new NUnitProject( filePath );
+
+				project.Configs.Add( "Debug" );
+				project.Configs.Add( "Release" );			
+				project.IsDirty = false;
+
+				OnProjectLoad( project );
+			}
+			catch( Exception exception )
+			{
+				lastException = exception;
+				events.FireProjectLoadFailed( filePath, exception );
+			}
+		}
+
+		/// <summary>
+		/// Load a new project, optionally selecting the config and fire events
+		/// </summary>
+		public void LoadProject( string filePath, string configName )
+		{
+			try
+			{
+				events.FireProjectLoading( filePath );
+
+				NUnitProject newProject = NUnitProject.LoadProject( filePath );
+				if ( configName != null ) 
+				{
+					newProject.SetActiveConfig( configName );
+					newProject.IsDirty = false;
+				}
+
+				OnProjectLoad( newProject );
+			}
+			catch( Exception exception )
+			{
+				lastException = exception;
+				events.FireProjectLoadFailed( filePath, exception );
+			}
+		}
+
+		/// <summary>
+		/// Load a new project using the default config and fire events
+		/// </summary>
+		public void LoadProject( string filePath )
+		{
+			LoadProject( filePath, null );
+		}
+
+		/// <summary>
+		/// Load a project from a list of assemblies and fire events
+		/// </summary>
+		public void LoadProject( string[] assemblies )
+		{
+			try
+			{
+				events.FireProjectLoading( "New Project" );
+
+				NUnitProject newProject = NUnitProject.FromAssemblies( assemblies );
+
+				OnProjectLoad( newProject );
+			}
+			catch( Exception exception )
+			{
+				lastException = exception;
+				events.FireProjectLoadFailed( "New Project", exception );
+			}
+		}
+
+		/// <summary>
+		/// Unload the current project and fire events
+		/// </summary>
+		public void UnloadProject()
+		{
+			string testFileName = TestFileName;
+
+			try
+			{
+				events.FireProjectUnloading( testFileName );
+
+				if ( IsTestLoaded )
+					UnloadTest();
+
+				testProject.Changed -= new ProjectEventHandler( OnProjectChanged );
+				testProject = null;
+
+				events.FireProjectUnloaded( testFileName );
+			}
+			catch (Exception exception )
+			{
+				lastException = exception;
+				events.FireProjectUnloadFailed( testFileName, exception );
+			}
+
+		}
+
+		/// <summary>
+		/// Common operations done each time a project is loaded
+		/// </summary>
+		/// <param name="testProject">The newly loaded project</param>
+		private void OnProjectLoad( NUnitProject testProject )
+		{
+			if ( IsProjectLoaded )
+				UnloadProject();
+
+			this.testProject = testProject;
+			testProject.Changed += new ProjectEventHandler( OnProjectChanged );
+
+			events.FireProjectLoaded( TestFileName );
+		}
+
+		private void OnProjectChanged( object sender, ProjectEventArgs e )
+		{
+			switch ( e.type )
+			{
+				case ProjectChangeType.ActiveConfig:
+				case ProjectChangeType.Other:
+					if( TestProject.IsLoadable )
+						TryToLoadOrReloadTest();
+					break;
+
+				case ProjectChangeType.AddConfig:
+				case ProjectChangeType.UpdateConfig:
+					if ( e.configName == TestProject.ActiveConfigName && TestProject.IsLoadable )
+						TryToLoadOrReloadTest();
+					break;
+
+				case ProjectChangeType.RemoveConfig:
+					if ( IsTestLoaded && TestProject.Configs.Count == 0 )
+						UnloadTest();
+					break;
+
+				default:
+					break;
+			}
+		}
+
+		private void TryToLoadOrReloadTest()
+		{
+			if ( IsTestLoaded ) 
+				ReloadTest();
+			else 
+				LoadTest();
+		}
+
+		#endregion
+
+		#region Methods for Loading and Unloading Tests
+
+		public void LoadTest()
+		{
+			LoadTest( null );
+		}
+		
+		public void LoadTest( string testName )
+		{
+            long startTime = DateTime.Now.Ticks;
+
+			try
+			{
+				events.FireTestLoading( TestFileName );
+
+				testRunner = CreateRunner();
+
+				bool loaded = testRunner.Load( MakeTestPackage( testName ) );
+
+				loadedTest = testRunner.Test;
+				loadedTestName = testName;
+				testResult = null;
+				reloadPending = false;
+			
+				if ( ReloadOnChange )
+					InstallWatcher( );
+
+				if ( loaded )
+					events.FireTestLoaded( TestFileName, loadedTest );
+				else
+				{
+					lastException = new ApplicationException( string.Format ( "Unable to find test {0} in assembly", testName ) );
+					events.FireTestLoadFailed( TestFileName, lastException );
+				}
+			}
+			catch( FileNotFoundException exception )
+			{
+				lastException = exception;
+
+				foreach( string assembly in TestProject.ActiveConfig.Assemblies )
+				{
+					if ( Path.GetFileNameWithoutExtension( assembly ) == exception.FileName &&
+						!PathUtils.SamePathOrUnder( testProject.ActiveConfig.BasePath, assembly ) )
+					{
+						lastException = new ApplicationException( string.Format( "Unable to load {0} because it is not located under the AppBase", exception.FileName ), exception );
+						break;
+					}
+				}
+
+				events.FireTestLoadFailed( TestFileName, lastException );
+			}
+			catch( Exception exception )
+			{
+				lastException = exception;
+				events.FireTestLoadFailed( TestFileName, exception );
+			}
+
+            double loadTime = (double)(DateTime.Now.Ticks - startTime) / (double)TimeSpan.TicksPerSecond;
+            System.Diagnostics.Trace.WriteLine(string.Format("TestLoader: Loaded in {0} seconds", loadTime)); 
+		}
+
+		/// <summary>
+		/// Unload the current test suite and fire the Unloaded event
+		/// </summary>
+		public void UnloadTest( )
+		{
+			if( IsTestLoaded )
+			{
+				// Hold the name for notifications after unload
+				string fileName = TestFileName;
+
+				try
+				{
+					events.FireTestUnloading( fileName );
+
+					RemoveWatcher();
+
+					testRunner.Unload();
+
+					testRunner = null;
+
+					loadedTest = null;
+					loadedTestName = null;
+					testResult = null;
+					reloadPending = false;
+
+					events.FireTestUnloaded( fileName );
+				}
+				catch( Exception exception )
+				{
+					lastException = exception;
+					events.FireTestUnloadFailed( fileName, exception );
+				}
+			}
+		}
+
+		/// <summary>
+		/// Reload the current test on command
+		/// </summary>
+		public void ReloadTest()
+		{
+			try
+			{
+				events.FireTestReloading( TestFileName );
+
+				testRunner.Load( MakeTestPackage( loadedTestName ) );
+
+				loadedTest = testRunner.Test;
+				reloadPending = false;
+
+				events.FireTestReloaded( TestFileName, loadedTest );				
+			}
+			catch( Exception exception )
+			{
+				lastException = exception;
+				events.FireTestReloadFailed( TestFileName, exception );
+			}
+		}
+
+		/// <summary>
+		/// Handle watcher event that signals when the loaded assembly
+		/// file has changed. Make sure it's a real change before
+		/// firing the SuiteChangedEvent. Since this all happens
+		/// asynchronously, we use an event to let ui components
+		/// know that the failure happened.
+		/// </summary>
+		public void OnTestChanged( string testFileName )
+		{
+			if ( Running )
+				reloadPending = true;
+			else
+			{
+				ReloadTest();
+
+				if ( rerunOnChange && lastFilter != null )
+					testRunner.BeginRun( this, lastFilter );
+			}
+		}
+		#endregion
+
+		#region Methods for Running Tests
+		/// <summary>
+		/// Run all the tests
+		/// </summary>
+		public void RunTests()
+		{
+			RunTests( TestFilter.Empty );
+		}
+
+		/// <summary>
+		/// Run selected tests using a filter
+		/// </summary>
+		/// <param name="filter">The filter to be used</param>
+		public void RunTests( ITestFilter filter )
+		{
+			if ( !Running )
+			{
+				if ( reloadPending || ReloadOnRun )
+					ReloadTest();
+
+				this.lastFilter = filter;
+				testRunner.BeginRun( this, filter );
+			}
+		}
+
+		/// <summary>
+		/// Cancel the currently running test.
+		/// Fail silently if there is none to
+		/// allow for latency in the UI.
+		/// </summary>
+		public void CancelTestRun()
+		{
+			if ( Running )
+				testRunner.CancelRun();
+		}
+
+		public IList GetCategories() 
+		{
+			CategoryManager categoryManager = new CategoryManager();
+			categoryManager.AddAllCategories( this.loadedTest );
+			ArrayList list = new ArrayList( categoryManager.Categories );
+			list.Sort();
+			return list;
+		}
+		#endregion
+
+		public void SaveLastResult( string fileName )
+		{
+			XmlResultVisitor resultVisitor 
+				= new XmlResultVisitor( fileName, this.testResult );
+			this.testResult.Accept(resultVisitor);
+			resultVisitor.Write();
+		}
+
+		#region Helper Methods
+
+		/// <summary>
+		/// Install our watcher object so as to get notifications
+		/// about changes to a test.
+		/// </summary>
+		private void InstallWatcher()
+		{
+			if(watcher!=null) watcher.Stop();
+
+			watcher = new AssemblyWatcher( 1000, TestProject.ActiveConfig.Assemblies.ToArray() );
+			watcher.AssemblyChangedEvent += new AssemblyWatcher.AssemblyChangedHandler( OnTestChanged );
+			watcher.Start();
+		}
+
+		/// <summary>
+		/// Stop and remove our current watcher object.
+		/// </summary>
+		private void RemoveWatcher()
+		{
+			if ( watcher != null )
+			{
+				watcher.Stop();
+				watcher = null;
+			}
+		}
+
+		private TestRunner CreateRunner()
+		{
+			TestRunner runner = multiDomain
+				? (TestRunner)new MultipleTestDomainRunner()
+				: (TestRunner)new TestDomain();
+				
+			return runner;
+		}
+
+		private TestPackage MakeTestPackage( string testName )
+		{
+			TestPackage package = TestProject.ActiveConfig.MakeTestPackage();
+			package.TestName = testName;
+			package.Settings["MergeAssemblies"] = mergeAssemblies;
+			package.Settings["AutoNamespaceSuites"] = autoNamespaceSuites;
+			package.Settings["ShadowCopyFiles"] = shadowCopyFiles;
+			return package;
+		}
+		#endregion
+
+		#region InitializeLifetimeService Override
+		public override object InitializeLifetimeService()
+		{
+			return null;
+		}
+		#endregion
+
+		#region IService Members
+
+		public void UnloadService()
+		{
+			// TODO:  Add TestLoader.UnloadService implementation
+		}
+
+		public void InitializeService()
+		{
+			// TODO:  Add TestLoader.InitializeService implementation
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestObserver.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestObserver.cs
@@ -1,20 +1,20 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// The TestObserver interface is implemented by a class that
-	/// subscribes to the events generated in loading and running
-	/// tests and uses that information in some way.
-	/// </summary>
-	public interface TestObserver
-	{
-		void Subscribe( ITestEvents events );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// The TestObserver interface is implemented by a class that
+	/// subscribes to the events generated in loading and running
+	/// tests and uses that information in some way.
+	/// </summary>
+	public interface TestObserver
+	{
+		void Subscribe( ITestEvents events );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestResultItem.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestResultItem.cs
@@ -1,76 +1,76 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Util
-{
-	using NUnit.Core;
-
-	/// <summary>
-	/// Summary description for TestResultItem.
-	/// </summary>
-	public class TestResultItem
-	{
-		private string testName;
-		private string message;
-		private string stackTrace;
-
-		public TestResultItem(TestResult result )
-		{
-			testName = result.Test.TestName.FullName;
-			message = result.Message;
-			stackTrace = result.StackTrace;
-
-			if ( result.Test.IsSuite && result.FailureSite == FailureSite.SetUp )
-				testName += " (TestFixtureSetUp)";
-		}
-
-		public TestResultItem( string testName, string message, string stackTrace )
-		{
-			this.testName = testName;
-			this.message = message;
-			this.stackTrace = stackTrace;
-		}
-
-		public override string ToString()
-		{
-			if ( message.Length > 64000 )
-				return string.Format( "{0}:{1}{2}", testName, Environment.NewLine, message.Substring( 0, 64000 ) );
-
-			return GetMessage();
-		}
-
-		public string GetMessage()
-		{
-			return String.Format("{0}:{1}{2}", testName, Environment.NewLine, message);
-		}
-
-        public string GetToolTipMessage()   //NRG 05/28/03 - Substitute spaces for tab characters
-        {
-            return (ReplaceTabs(GetMessage(), 8)); // Change each tab to 8 space characters
-        }
-
-        public string ReplaceTabs(string strOriginal, int nSpaces)  //NRG 05/28/03
-        {
-            string strSpaces = string.Empty;
-            strSpaces = strSpaces.PadRight(nSpaces, ' ');
-            return(strOriginal.Replace("\t", strSpaces));
-        }
-
-		public string StackTrace
-		{
-			get 
-			{
-				string trace = "No stack trace is available";
-				if(stackTrace != null)
-					trace = StackTraceFilter.Filter(stackTrace);
-
-				return trace;
-			}
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Util
+{
+	using NUnit.Core;
+
+	/// <summary>
+	/// Summary description for TestResultItem.
+	/// </summary>
+	public class TestResultItem
+	{
+		private string testName;
+		private string message;
+		private string stackTrace;
+
+		public TestResultItem(TestResult result )
+		{
+			testName = result.Test.TestName.FullName;
+			message = result.Message;
+			stackTrace = result.StackTrace;
+
+			if ( result.Test.IsSuite && result.FailureSite == FailureSite.SetUp )
+				testName += " (TestFixtureSetUp)";
+		}
+
+		public TestResultItem( string testName, string message, string stackTrace )
+		{
+			this.testName = testName;
+			this.message = message;
+			this.stackTrace = stackTrace;
+		}
+
+		public override string ToString()
+		{
+			if ( message.Length > 64000 )
+				return string.Format( "{0}:{1}{2}", testName, Environment.NewLine, message.Substring( 0, 64000 ) );
+
+			return GetMessage();
+		}
+
+		public string GetMessage()
+		{
+			return String.Format("{0}:{1}{2}", testName, Environment.NewLine, message);
+		}
+
+        public string GetToolTipMessage()   //NRG 05/28/03 - Substitute spaces for tab characters
+        {
+            return (ReplaceTabs(GetMessage(), 8)); // Change each tab to 8 space characters
+        }
+
+        public string ReplaceTabs(string strOriginal, int nSpaces)  //NRG 05/28/03
+        {
+            string strSpaces = string.Empty;
+            strSpaces = strSpaces.PadRight(nSpaces, ' ');
+            return(strOriginal.Replace("\t", strSpaces));
+        }
+
+		public string StackTrace
+		{
+			get 
+			{
+				string trace = "No stack trace is available";
+				if(stackTrace != null)
+					trace = StackTraceFilter.Filter(stackTrace);
+
+				return trace;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/TestServer.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/TestServer.cs
@@ -1,28 +1,28 @@
-using System;
-using System.Threading;
-using System.Runtime.Remoting;
-using System.Runtime.Remoting.Services;
-using System.Runtime.Remoting.Channels;
-using System.Runtime.Remoting.Channels.Tcp;
-using NUnit.Core;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Base class for servers
-	/// </summary>
-	public class TestServer : ServerBase
-	{
-		private TestRunner runner;
-
-		public TestServer( string uri, int port ) : base( uri, port )
-		{
-			this.runner = new TestDomain();
-		}
-
-		public TestRunner TestRunner
-		{
-			get { return runner; }
-		}
-	}
-}
+using System;
+using System.Threading;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Services;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Tcp;
+using NUnit.Core;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Base class for servers
+	/// </summary>
+	public class TestServer : ServerBase
+	{
+		private TestRunner runner;
+
+		public TestServer( string uri, int port ) : base( uri, port )
+		{
+			this.runner = new TestDomain();
+		}
+
+		public TestRunner TestRunner
+		{
+			get { return runner; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/Transform.resx
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/Transform.resx
@@ -1,153 +1,153 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<root>
-	<!-- 
-            Microsoft ResX Schema 
-        
-            Version 1.3
-                
-            The primary goals of this format is to allow a simple XML format 
-            that is mostly human readable. The generation and parsing of the 
-            various data types are done through the TypeConverter classes 
-            associated with the data types.
-        
-            Example:
-        
-                ... ado.net/XML headers & schema ...
-                <resheader name="resmimetype">text/microsoft-resx</resheader>
-                <resheader name="version">1.3</resheader>
-                <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-                <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-                <data name="Name1">this is my long string</data>
-                <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-                <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-                    [base64 mime encoded serialized .NET Framework object]
-                </data>
-                <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-                    [base64 mime encoded string representing a byte array form of the .NET Framework object]
-                </data>
-        
-            There are any number of "resheader" rows that contain simple 
-            name/value pairs.
-            
-            Each data row contains a name, and value. The row also contains a 
-            type or mimetype. Type corresponds to a .NET class that support 
-            text/value conversion through the TypeConverter architecture. 
-            Classes that don't support this are serialized and stored with the 
-            mimetype set.
-                     
-            The mimetype is used for serialized objects, and tells the 
-            ResXResourceReader how to depersist the object. This is currently not 
-            extensible. For a given mimetype the value must be set accordingly:
-        
-            Note - application/x-microsoft.net.object.binary.base64 is the format 
-                   that the ResXResourceWriter will generate, however the reader can 
-                   read any of the formats listed below.
-        
-            mimetype: application/x-microsoft.net.object.binary.base64
-            value   : The object must be serialized with 
-                    : System.Serialization.Formatters.Binary.BinaryFormatter
-                    : and then encoded with base64 encoding.
-        
-            mimetype: application/x-microsoft.net.object.soap.base64
-            value   : The object must be serialized with 
-                    : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-                    : and then encoded with base64 encoding.
-            mimetype: application/x-microsoft.net.object.bytearray.base64
-            value   : The object must be serialized into a byte array 
-                    : using a System.ComponentModel.TypeConverter
-                    : and then encoded with base64 encoding.
-        -->
-	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-		<xsd:element name="root" msdata:IsDataSet="true">
-			<xsd:complexType>
-				<xsd:choice maxOccurs="unbounded">
-					<xsd:element name="data">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
-							<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-							<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-						</xsd:complexType>
-					</xsd:element>
-					<xsd:element name="resheader">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" use="required" />
-						</xsd:complexType>
-					</xsd:element>
-				</xsd:choice>
-			</xsd:complexType>
-		</xsd:element>
-	</xsd:schema>
-	<resheader name="resmimetype">
-		<value>text/microsoft-resx</value>
-	</resheader>
-	<resheader name="version">
-		<value>1.3</value>
-	</resheader>
-	<resheader name="reader">
-		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
-	<resheader name="writer">
-		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
-	<data name="Summary.xslt">
-		<value>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
-&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
-&lt;xsl:output method='text'/&gt;
-
-&lt;xsl:template match="/"&gt;
-	&lt;xsl:apply-templates/&gt;
-&lt;/xsl:template&gt;
-
-&lt;xsl:template match="test-results"&gt;
-&lt;xsl:text&gt;Tests run: &lt;/xsl:text&gt;
-&lt;xsl:value-of select="@total"/&gt;
-&lt;xsl:text&gt;, Failures: &lt;/xsl:text&gt;
-&lt;xsl:value-of select="@failures"/&gt;
-&lt;xsl:text&gt;, Not run: &lt;/xsl:text&gt;
-&lt;xsl:value-of select="@not-run"/&gt;
-&lt;xsl:text&gt;, Time: &lt;/xsl:text&gt;
-&lt;xsl:value-of select="test-suite/@time"/&gt;
-&lt;xsl:text&gt; seconds
-&lt;/xsl:text&gt;
-&lt;xsl:text&gt;
-&lt;/xsl:text&gt;
-
-&lt;xsl:if test="//test-suite[failure]"&gt;&lt;xsl:text&gt;Test Fixture SetUp Failures:
-&lt;/xsl:text&gt;&lt;/xsl:if&gt;
-&lt;xsl:apply-templates select="//test-suite[failure]"/&gt;
-&lt;xsl:if test="//test-case[failure]"&gt;&lt;xsl:text&gt;Test Case Failures:
-&lt;/xsl:text&gt;&lt;/xsl:if&gt;
-&lt;xsl:apply-templates select="//test-case[failure]"/&gt;
-&lt;!-- Comment out this seldom used output block
-&lt;xsl:if test="//test-case[@executed='False']"&gt;&lt;xsl:text&gt;Tests not run:
-&lt;/xsl:text&gt;&lt;/xsl:if&gt;
-&lt;xsl:apply-templates select="//test-case[@executed='False']"/&gt;
---&gt;
-&lt;xsl:text disable-output-escaping='yes'&gt;&amp;#xD;&amp;#xA;&lt;/xsl:text&gt;
-&lt;/xsl:template&gt;
-
-&lt;xsl:template match="test-case|test-suite"&gt;
-	&lt;xsl:value-of select="position()"/&gt;&lt;xsl:text&gt;) &lt;/xsl:text&gt;
-	&lt;xsl:value-of select="@name"/&gt;
-	&lt;xsl:text&gt; : &lt;/xsl:text&gt;
-	&lt;xsl:value-of select="child::node()/message"/&gt;
-&lt;xsl:text disable-output-escaping='yes'&gt;&amp;#xD;&amp;#xA;&lt;/xsl:text&gt;
-	&lt;xsl:if test="failure"&gt;
-		&lt;xsl:value-of select="failure/stack-trace"/&gt;
-&lt;xsl:text&gt;
-&lt;/xsl:text&gt;
-	&lt;/xsl:if&gt;
-&lt;/xsl:template&gt;
-
-&lt;/xsl:stylesheet&gt;
-
-  </value>
-	</data>
+<?xml version="1.0" encoding="utf-8" ?>
+<root>
+	<!-- 
+            Microsoft ResX Schema 
+        
+            Version 1.3
+                
+            The primary goals of this format is to allow a simple XML format 
+            that is mostly human readable. The generation and parsing of the 
+            various data types are done through the TypeConverter classes 
+            associated with the data types.
+        
+            Example:
+        
+                ... ado.net/XML headers & schema ...
+                <resheader name="resmimetype">text/microsoft-resx</resheader>
+                <resheader name="version">1.3</resheader>
+                <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+                <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+                <data name="Name1">this is my long string</data>
+                <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+                <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+                    [base64 mime encoded serialized .NET Framework object]
+                </data>
+                <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+                    [base64 mime encoded string representing a byte array form of the .NET Framework object]
+                </data>
+        
+            There are any number of "resheader" rows that contain simple 
+            name/value pairs.
+            
+            Each data row contains a name, and value. The row also contains a 
+            type or mimetype. Type corresponds to a .NET class that support 
+            text/value conversion through the TypeConverter architecture. 
+            Classes that don't support this are serialized and stored with the 
+            mimetype set.
+                     
+            The mimetype is used for serialized objects, and tells the 
+            ResXResourceReader how to depersist the object. This is currently not 
+            extensible. For a given mimetype the value must be set accordingly:
+        
+            Note - application/x-microsoft.net.object.binary.base64 is the format 
+                   that the ResXResourceWriter will generate, however the reader can 
+                   read any of the formats listed below.
+        
+            mimetype: application/x-microsoft.net.object.binary.base64
+            value   : The object must be serialized with 
+                    : System.Serialization.Formatters.Binary.BinaryFormatter
+                    : and then encoded with base64 encoding.
+        
+            mimetype: application/x-microsoft.net.object.soap.base64
+            value   : The object must be serialized with 
+                    : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+                    : and then encoded with base64 encoding.
+            mimetype: application/x-microsoft.net.object.bytearray.base64
+            value   : The object must be serialized into a byte array 
+                    : using a System.ComponentModel.TypeConverter
+                    : and then encoded with base64 encoding.
+        -->
+	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+		<xsd:element name="root" msdata:IsDataSet="true">
+			<xsd:complexType>
+				<xsd:choice maxOccurs="unbounded">
+					<xsd:element name="data">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+							<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+							<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="resheader">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" use="required" />
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:choice>
+			</xsd:complexType>
+		</xsd:element>
+	</xsd:schema>
+	<resheader name="resmimetype">
+		<value>text/microsoft-resx</value>
+	</resheader>
+	<resheader name="version">
+		<value>1.3</value>
+	</resheader>
+	<resheader name="reader">
+		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+	<resheader name="writer">
+		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+	<data name="Summary.xslt">
+		<value>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
+&lt;xsl:output method='text'/&gt;
+
+&lt;xsl:template match="/"&gt;
+	&lt;xsl:apply-templates/&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match="test-results"&gt;
+&lt;xsl:text&gt;Tests run: &lt;/xsl:text&gt;
+&lt;xsl:value-of select="@total"/&gt;
+&lt;xsl:text&gt;, Failures: &lt;/xsl:text&gt;
+&lt;xsl:value-of select="@failures"/&gt;
+&lt;xsl:text&gt;, Not run: &lt;/xsl:text&gt;
+&lt;xsl:value-of select="@not-run"/&gt;
+&lt;xsl:text&gt;, Time: &lt;/xsl:text&gt;
+&lt;xsl:value-of select="test-suite/@time"/&gt;
+&lt;xsl:text&gt; seconds
+&lt;/xsl:text&gt;
+&lt;xsl:text&gt;
+&lt;/xsl:text&gt;
+
+&lt;xsl:if test="//test-suite[failure]"&gt;&lt;xsl:text&gt;Test Fixture SetUp Failures:
+&lt;/xsl:text&gt;&lt;/xsl:if&gt;
+&lt;xsl:apply-templates select="//test-suite[failure]"/&gt;
+&lt;xsl:if test="//test-case[failure]"&gt;&lt;xsl:text&gt;Test Case Failures:
+&lt;/xsl:text&gt;&lt;/xsl:if&gt;
+&lt;xsl:apply-templates select="//test-case[failure]"/&gt;
+&lt;!-- Comment out this seldom used output block
+&lt;xsl:if test="//test-case[@executed='False']"&gt;&lt;xsl:text&gt;Tests not run:
+&lt;/xsl:text&gt;&lt;/xsl:if&gt;
+&lt;xsl:apply-templates select="//test-case[@executed='False']"/&gt;
+--&gt;
+&lt;xsl:text disable-output-escaping='yes'&gt;&amp;#xD;&amp;#xA;&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match="test-case|test-suite"&gt;
+	&lt;xsl:value-of select="position()"/&gt;&lt;xsl:text&gt;) &lt;/xsl:text&gt;
+	&lt;xsl:value-of select="@name"/&gt;
+	&lt;xsl:text&gt; : &lt;/xsl:text&gt;
+	&lt;xsl:value-of select="child::node()/message"/&gt;
+&lt;xsl:text disable-output-escaping='yes'&gt;&amp;#xD;&amp;#xA;&lt;/xsl:text&gt;
+	&lt;xsl:if test="failure"&gt;
+		&lt;xsl:value-of select="failure/stack-trace"/&gt;
+&lt;xsl:text&gt;
+&lt;/xsl:text&gt;
+	&lt;/xsl:if&gt;
+&lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;
+
+  </value>
+	</data>
 </root>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/VSProject.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/VSProject.cs
@@ -1,328 +1,328 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Xml;
-using System.Text.RegularExpressions;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// This class allows loading information about
-	/// configurations and assemblies in a Visual
-	/// Studio project file and inspecting them.
-	/// Only the most common project types are
-	/// supported and an exception is thrown if
-	/// an attempt is made to load an invalid
-	/// file or one of an unknown type.
-	/// </summary>
-	public class VSProject
-	{
-		#region Static and Instance Variables
-
-		/// <summary>
-		/// VS Project extentions
-		/// </summary>
-		private static readonly string[] validExtensions = { ".csproj", ".vbproj", ".vjsproj", ".vcproj" };
-		
-		/// <summary>
-		/// VS Solution extension
-		/// </summary>
-		private static readonly string solutionExtension = ".sln";
-
-		/// <summary>
-		/// Path to the file storing this project
-		/// </summary>
-		private string projectPath;
-
-		/// <summary>
-		/// Collection of configs for the project
-		/// </summary>
-		private VSProjectConfigCollection configs;
-
-		#endregion
-
-		#region Constructor
-
-		public VSProject( string projectPath )
-		{
-			this.projectPath = Path.GetFullPath( projectPath );
-			configs = new VSProjectConfigCollection();		
-
-			Load();
-		}
-
-		#endregion
-
-		#region Properties
-
-		/// <summary>
-		/// The name of the project.
-		/// </summary>
-		public string Name
-		{
-			get { return Path.GetFileNameWithoutExtension( projectPath ); }
-		}
-
-		/// <summary>
-		/// The path to the project
-		/// </summary>
-		public string ProjectPath
-		{
-			get { return projectPath; }
-		}
-
-		/// <summary>
-		/// Our collection of configurations
-		/// </summary>
-		public VSProjectConfigCollection Configs
-		{
-			get { return configs; }
-		}
-
-		#endregion
-
-		#region Static Methods
-
-		public static bool IsProjectFile( string path )
-		{
-			if ( path.IndexOfAny( Path.InvalidPathChars ) >= 0 )
-				return false;
-
-			if ( path.ToLower().IndexOf( "http:" ) >= 0 )
-				return false;
-		
-			string extension = Path.GetExtension( path );
-
-			foreach( string validExtension in validExtensions )
-				if ( extension == validExtension )
-					return true;
-
-			return false;
-		}
-
-		public static bool IsSolutionFile( string path )
-		{
-			return Path.GetExtension( path ) == solutionExtension;
-		}
-
-		#endregion
-
-		#region Instance Methods
-
-		private void Load()
-		{
-			if ( !IsProjectFile( projectPath ) ) 
-				ThrowInvalidFileType( projectPath );
-
-			string projectDirectory = Path.GetFullPath( Path.GetDirectoryName( projectPath ) );
-			StreamReader rdr = new StreamReader( projectPath, System.Text.Encoding.UTF8 );
-			string[] extensions = {"", ".exe", ".dll", ".lib", "" };
-			
-			try
-			{
-				XmlDocument doc = new XmlDocument();
-				doc.Load( rdr );
-
-				string extension = Path.GetExtension( projectPath );
-				string assemblyName = null;
-
-				switch ( extension )
-				{
-					case ".vcproj":
-						XmlNode topNode = doc.SelectSingleNode( "/VisualStudioProject" );
-
-						// TODO: This is all very hacked up... replace it.
-						foreach ( XmlNode configNode in doc.SelectNodes( "/VisualStudioProject/Configurations/Configuration" ) )
-						{
-							string name = RequiredAttributeValue( configNode, "Name" );
-							int config_type = System.Convert.ToInt32(RequiredAttributeValue(configNode, "ConfigurationType" ) );
-							string dirName = name;
-							int bar = dirName.IndexOf( '|' );
-							if ( bar >= 0 )
-								dirName = dirName.Substring( 0, bar );
-							string outputPath = RequiredAttributeValue( configNode, "OutputDirectory" );
-							outputPath = outputPath.Replace( "$(SolutionDir)", Path.GetFullPath( Path.GetDirectoryName( projectPath ) ) + Path.DirectorySeparatorChar );
-							outputPath = outputPath.Replace( "$(ConfigurationName)", dirName );
-
-							string outputDirectory = Path.Combine( projectDirectory, outputPath );
-							XmlNode toolNode = configNode.SelectSingleNode( "Tool[@Name='VCLinkerTool']" );
-							if ( toolNode != null )
-							{
-								assemblyName = SafeAttributeValue( toolNode, "OutputFile" );
-								if ( assemblyName != null )
-									assemblyName = Path.GetFileName( assemblyName );
-								else
-									assemblyName = Path.GetFileNameWithoutExtension(projectPath) + extensions[config_type];
-							}
-							else
-							{
-								toolNode = configNode.SelectSingleNode( "Tool[@Name='VCNMakeTool']" );
-								if ( toolNode != null )
-									assemblyName = Path.GetFileName( RequiredAttributeValue( toolNode, "Output" ) );
-							}
-
-							assemblyName = assemblyName.Replace( "$(OutDir)", outputPath );
-							assemblyName = assemblyName.Replace( "$(ProjectName)", this.Name );
-
-							VSProjectConfig config = new VSProjectConfig ( name );
-							if ( assemblyName != null )
-								config.Assemblies.Add( Path.Combine( outputDirectory, assemblyName ) );
-							
-							this.configs.Add( config );
-						}
-					
-						break;
-
-					case ".csproj":
-					case ".vbproj":
-					case ".vjsproj":
-						LoadProject( projectDirectory, doc );
-						break;
-
-					default:
-						break;
-				}
-			}
-			catch( FileNotFoundException )
-			{
-				throw;
-			}
-			catch( Exception e )
-			{
-				ThrowInvalidFormat( projectPath, e );
-			}
-			finally
-			{
-				rdr.Close();
-			}
-		}
-
-		private bool LoadProject(string projectDirectory, XmlDocument doc)
-		{
-			bool loaded = LoadVS2003Project(projectDirectory, doc);
-			if (loaded) return true;
-
-			loaded = LoadMSBuildProject(projectDirectory, doc);
-			if (loaded) return true;
-
-			return false;
-		}
-
-		private bool LoadVS2003Project(string projectDirectory, XmlDocument doc)
-		{
-			XmlNode settingsNode = doc.SelectSingleNode("/VisualStudioProject/*/Build/Settings");
-			if (settingsNode == null)
-				return false;
-
-			string assemblyName = RequiredAttributeValue( settingsNode, "AssemblyName" );
-			string outputType = RequiredAttributeValue( settingsNode, "OutputType" );
-
-			if (outputType == "Exe" || outputType == "WinExe")
-				assemblyName = assemblyName + ".exe";
-			else
-				assemblyName = assemblyName + ".dll";
-
-			XmlNodeList nodes = settingsNode.SelectNodes("Config");
-			if (nodes != null)
-				foreach (XmlNode configNode in nodes)
-				{
-					string name = RequiredAttributeValue( configNode, "Name" );
-					string outputPath = RequiredAttributeValue( configNode, "OutputPath" );
-					string outputDirectory = Path.Combine(projectDirectory, outputPath);
-					string assemblyPath = Path.Combine(outputDirectory, assemblyName);
-
-					VSProjectConfig config = new VSProjectConfig(name);
-					config.Assemblies.Add(assemblyPath);
-
-					configs.Add(config);
-				}
-
-			return true;
-		}
-
-		private bool LoadMSBuildProject(string projectDirectory, XmlDocument doc)
-		{
-			XmlNamespaceManager namespaceManager = new XmlNamespaceManager(doc.NameTable);
-			namespaceManager.AddNamespace("msbuild", "http://schemas.microsoft.com/developer/msbuild/2003");
-
-			XmlNodeList nodes = doc.SelectNodes("/msbuild:Project/msbuild:PropertyGroup", namespaceManager);
-			if (nodes == null) return false;
-
-			XmlElement assemblyNameElement = (XmlElement)doc.SelectSingleNode("/msbuild:Project/msbuild:PropertyGroup/msbuild:AssemblyName", namespaceManager);
-			string assemblyName = assemblyNameElement.InnerText;
-
-			XmlElement outputTypeElement = (XmlElement)doc.SelectSingleNode("/msbuild:Project/msbuild:PropertyGroup/msbuild:OutputType", namespaceManager);
-			string outputType = outputTypeElement.InnerText;
-
-			if (outputType == "Exe" || outputType == "WinExe")
-				assemblyName = assemblyName + ".exe";
-			else
-				assemblyName = assemblyName + ".dll";
-
-			foreach (XmlElement configNode in nodes)
-			{
-                if (configNode.Name != "PropertyGroup")
-                    continue;
-
-				XmlAttribute conditionAttribute = configNode.Attributes["Condition"];
-				if (conditionAttribute == null) continue;
-
-				string condition = conditionAttribute.Value;
-				int start = condition.IndexOf( "==" );
-				if ( start < 0 ) continue;
-
-				string configurationName = condition.Substring( start + 2 ).Trim(new char[] {' ', '\'' } );
-				if ( configurationName.EndsWith( "|AnyCPU" ) )
-					configurationName = configurationName.Substring( 0, configurationName.Length - 7 );
-
-				XmlElement outputPathElement = (XmlElement)configNode.SelectSingleNode("msbuild:OutputPath", namespaceManager);
-				string outputPath = outputPathElement.InnerText;
-
-				string outputDirectory = Path.Combine(projectDirectory, outputPath);
-				string assemblyPath = Path.Combine(outputDirectory, assemblyName);
-
-				VSProjectConfig config = new VSProjectConfig(configurationName);
-				config.Assemblies.Add(assemblyPath);
-
-				configs.Add(config);
-			}
-
-			return true;
-		}
-
-		private void ThrowInvalidFileType(string projectPath)
-		{
-			throw new ArgumentException( 
-				string.Format( "Invalid project file type: {0}", 
-								Path.GetFileName( projectPath ) ) );
-		}
-
-		private void ThrowInvalidFormat( string projectPath, Exception e )
-		{
-			throw new ArgumentException( 
-				string.Format( "Invalid project file format: {0}", 
-								Path.GetFileName( projectPath ) ), e );
-		}
-
-		private string SafeAttributeValue( XmlNode node, string attrName )
-		{
-			XmlNode attrNode = node.Attributes[attrName];
-			return attrNode == null ? null : attrNode.Value;
-		}
-
-		private string RequiredAttributeValue( XmlNode node, string name )
-		{
-			string result = SafeAttributeValue( node, name );
-			if ( result != null )
-				return result;
-
-			throw new ApplicationException( "Missing required attribute " + name );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Xml;
+using System.Text.RegularExpressions;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// This class allows loading information about
+	/// configurations and assemblies in a Visual
+	/// Studio project file and inspecting them.
+	/// Only the most common project types are
+	/// supported and an exception is thrown if
+	/// an attempt is made to load an invalid
+	/// file or one of an unknown type.
+	/// </summary>
+	public class VSProject
+	{
+		#region Static and Instance Variables
+
+		/// <summary>
+		/// VS Project extentions
+		/// </summary>
+		private static readonly string[] validExtensions = { ".csproj", ".vbproj", ".vjsproj", ".vcproj" };
+		
+		/// <summary>
+		/// VS Solution extension
+		/// </summary>
+		private static readonly string solutionExtension = ".sln";
+
+		/// <summary>
+		/// Path to the file storing this project
+		/// </summary>
+		private string projectPath;
+
+		/// <summary>
+		/// Collection of configs for the project
+		/// </summary>
+		private VSProjectConfigCollection configs;
+
+		#endregion
+
+		#region Constructor
+
+		public VSProject( string projectPath )
+		{
+			this.projectPath = Path.GetFullPath( projectPath );
+			configs = new VSProjectConfigCollection();		
+
+			Load();
+		}
+
+		#endregion
+
+		#region Properties
+
+		/// <summary>
+		/// The name of the project.
+		/// </summary>
+		public string Name
+		{
+			get { return Path.GetFileNameWithoutExtension( projectPath ); }
+		}
+
+		/// <summary>
+		/// The path to the project
+		/// </summary>
+		public string ProjectPath
+		{
+			get { return projectPath; }
+		}
+
+		/// <summary>
+		/// Our collection of configurations
+		/// </summary>
+		public VSProjectConfigCollection Configs
+		{
+			get { return configs; }
+		}
+
+		#endregion
+
+		#region Static Methods
+
+		public static bool IsProjectFile( string path )
+		{
+			if ( path.IndexOfAny( Path.InvalidPathChars ) >= 0 )
+				return false;
+
+			if ( path.ToLower().IndexOf( "http:" ) >= 0 )
+				return false;
+		
+			string extension = Path.GetExtension( path );
+
+			foreach( string validExtension in validExtensions )
+				if ( extension == validExtension )
+					return true;
+
+			return false;
+		}
+
+		public static bool IsSolutionFile( string path )
+		{
+			return Path.GetExtension( path ) == solutionExtension;
+		}
+
+		#endregion
+
+		#region Instance Methods
+
+		private void Load()
+		{
+			if ( !IsProjectFile( projectPath ) ) 
+				ThrowInvalidFileType( projectPath );
+
+			string projectDirectory = Path.GetFullPath( Path.GetDirectoryName( projectPath ) );
+			StreamReader rdr = new StreamReader( projectPath, System.Text.Encoding.UTF8 );
+			string[] extensions = {"", ".exe", ".dll", ".lib", "" };
+			
+			try
+			{
+				XmlDocument doc = new XmlDocument();
+				doc.Load( rdr );
+
+				string extension = Path.GetExtension( projectPath );
+				string assemblyName = null;
+
+				switch ( extension )
+				{
+					case ".vcproj":
+						XmlNode topNode = doc.SelectSingleNode( "/VisualStudioProject" );
+
+						// TODO: This is all very hacked up... replace it.
+						foreach ( XmlNode configNode in doc.SelectNodes( "/VisualStudioProject/Configurations/Configuration" ) )
+						{
+							string name = RequiredAttributeValue( configNode, "Name" );
+							int config_type = System.Convert.ToInt32(RequiredAttributeValue(configNode, "ConfigurationType" ) );
+							string dirName = name;
+							int bar = dirName.IndexOf( '|' );
+							if ( bar >= 0 )
+								dirName = dirName.Substring( 0, bar );
+							string outputPath = RequiredAttributeValue( configNode, "OutputDirectory" );
+							outputPath = outputPath.Replace( "$(SolutionDir)", Path.GetFullPath( Path.GetDirectoryName( projectPath ) ) + Path.DirectorySeparatorChar );
+							outputPath = outputPath.Replace( "$(ConfigurationName)", dirName );
+
+							string outputDirectory = Path.Combine( projectDirectory, outputPath );
+							XmlNode toolNode = configNode.SelectSingleNode( "Tool[@Name='VCLinkerTool']" );
+							if ( toolNode != null )
+							{
+								assemblyName = SafeAttributeValue( toolNode, "OutputFile" );
+								if ( assemblyName != null )
+									assemblyName = Path.GetFileName( assemblyName );
+								else
+									assemblyName = Path.GetFileNameWithoutExtension(projectPath) + extensions[config_type];
+							}
+							else
+							{
+								toolNode = configNode.SelectSingleNode( "Tool[@Name='VCNMakeTool']" );
+								if ( toolNode != null )
+									assemblyName = Path.GetFileName( RequiredAttributeValue( toolNode, "Output" ) );
+							}
+
+							assemblyName = assemblyName.Replace( "$(OutDir)", outputPath );
+							assemblyName = assemblyName.Replace( "$(ProjectName)", this.Name );
+
+							VSProjectConfig config = new VSProjectConfig ( name );
+							if ( assemblyName != null )
+								config.Assemblies.Add( Path.Combine( outputDirectory, assemblyName ) );
+							
+							this.configs.Add( config );
+						}
+					
+						break;
+
+					case ".csproj":
+					case ".vbproj":
+					case ".vjsproj":
+						LoadProject( projectDirectory, doc );
+						break;
+
+					default:
+						break;
+				}
+			}
+			catch( FileNotFoundException )
+			{
+				throw;
+			}
+			catch( Exception e )
+			{
+				ThrowInvalidFormat( projectPath, e );
+			}
+			finally
+			{
+				rdr.Close();
+			}
+		}
+
+		private bool LoadProject(string projectDirectory, XmlDocument doc)
+		{
+			bool loaded = LoadVS2003Project(projectDirectory, doc);
+			if (loaded) return true;
+
+			loaded = LoadMSBuildProject(projectDirectory, doc);
+			if (loaded) return true;
+
+			return false;
+		}
+
+		private bool LoadVS2003Project(string projectDirectory, XmlDocument doc)
+		{
+			XmlNode settingsNode = doc.SelectSingleNode("/VisualStudioProject/*/Build/Settings");
+			if (settingsNode == null)
+				return false;
+
+			string assemblyName = RequiredAttributeValue( settingsNode, "AssemblyName" );
+			string outputType = RequiredAttributeValue( settingsNode, "OutputType" );
+
+			if (outputType == "Exe" || outputType == "WinExe")
+				assemblyName = assemblyName + ".exe";
+			else
+				assemblyName = assemblyName + ".dll";
+
+			XmlNodeList nodes = settingsNode.SelectNodes("Config");
+			if (nodes != null)
+				foreach (XmlNode configNode in nodes)
+				{
+					string name = RequiredAttributeValue( configNode, "Name" );
+					string outputPath = RequiredAttributeValue( configNode, "OutputPath" );
+					string outputDirectory = Path.Combine(projectDirectory, outputPath);
+					string assemblyPath = Path.Combine(outputDirectory, assemblyName);
+
+					VSProjectConfig config = new VSProjectConfig(name);
+					config.Assemblies.Add(assemblyPath);
+
+					configs.Add(config);
+				}
+
+			return true;
+		}
+
+		private bool LoadMSBuildProject(string projectDirectory, XmlDocument doc)
+		{
+			XmlNamespaceManager namespaceManager = new XmlNamespaceManager(doc.NameTable);
+			namespaceManager.AddNamespace("msbuild", "http://schemas.microsoft.com/developer/msbuild/2003");
+
+			XmlNodeList nodes = doc.SelectNodes("/msbuild:Project/msbuild:PropertyGroup", namespaceManager);
+			if (nodes == null) return false;
+
+			XmlElement assemblyNameElement = (XmlElement)doc.SelectSingleNode("/msbuild:Project/msbuild:PropertyGroup/msbuild:AssemblyName", namespaceManager);
+			string assemblyName = assemblyNameElement.InnerText;
+
+			XmlElement outputTypeElement = (XmlElement)doc.SelectSingleNode("/msbuild:Project/msbuild:PropertyGroup/msbuild:OutputType", namespaceManager);
+			string outputType = outputTypeElement.InnerText;
+
+			if (outputType == "Exe" || outputType == "WinExe")
+				assemblyName = assemblyName + ".exe";
+			else
+				assemblyName = assemblyName + ".dll";
+
+			foreach (XmlElement configNode in nodes)
+			{
+                if (configNode.Name != "PropertyGroup")
+                    continue;
+
+				XmlAttribute conditionAttribute = configNode.Attributes["Condition"];
+				if (conditionAttribute == null) continue;
+
+				string condition = conditionAttribute.Value;
+				int start = condition.IndexOf( "==" );
+				if ( start < 0 ) continue;
+
+				string configurationName = condition.Substring( start + 2 ).Trim(new char[] {' ', '\'' } );
+				if ( configurationName.EndsWith( "|AnyCPU" ) )
+					configurationName = configurationName.Substring( 0, configurationName.Length - 7 );
+
+				XmlElement outputPathElement = (XmlElement)configNode.SelectSingleNode("msbuild:OutputPath", namespaceManager);
+				string outputPath = outputPathElement.InnerText;
+
+				string outputDirectory = Path.Combine(projectDirectory, outputPath);
+				string assemblyPath = Path.Combine(outputDirectory, assemblyName);
+
+				VSProjectConfig config = new VSProjectConfig(configurationName);
+				config.Assemblies.Add(assemblyPath);
+
+				configs.Add(config);
+			}
+
+			return true;
+		}
+
+		private void ThrowInvalidFileType(string projectPath)
+		{
+			throw new ArgumentException( 
+				string.Format( "Invalid project file type: {0}", 
+								Path.GetFileName( projectPath ) ) );
+		}
+
+		private void ThrowInvalidFormat( string projectPath, Exception e )
+		{
+			throw new ArgumentException( 
+				string.Format( "Invalid project file format: {0}", 
+								Path.GetFileName( projectPath ) ), e );
+		}
+
+		private string SafeAttributeValue( XmlNode node, string attrName )
+		{
+			XmlNode attrNode = node.Attributes[attrName];
+			return attrNode == null ? null : attrNode.Value;
+		}
+
+		private string RequiredAttributeValue( XmlNode node, string name )
+		{
+			string result = SafeAttributeValue( node, name );
+			if ( result != null )
+				return result;
+
+			throw new ApplicationException( "Missing required attribute " + name );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/VSProjectConfig.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/VSProjectConfig.cs
@@ -1,39 +1,39 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections.Specialized;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Originally, we used the same ProjectConfig class for both
-	/// NUnit and Visual Studio projects. Since we really do very
-	/// little with VS Projects, this class has been created to 
-	/// hold the name and the collection of assembly paths.
-	/// </summary>
-	public class VSProjectConfig
-	{
-		private string name;
-		
-		private StringCollection assemblies = new StringCollection();
-
-		public VSProjectConfig( string name )
-		{
-			this.name = name;
-		}
-
-		public string Name
-		{
-			get { return name; }
-		}
-
-		public StringCollection Assemblies
-		{
-			get { return assemblies; }
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections.Specialized;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Originally, we used the same ProjectConfig class for both
+	/// NUnit and Visual Studio projects. Since we really do very
+	/// little with VS Projects, this class has been created to 
+	/// hold the name and the collection of assembly paths.
+	/// </summary>
+	public class VSProjectConfig
+	{
+		private string name;
+		
+		private StringCollection assemblies = new StringCollection();
+
+		public VSProjectConfig( string name )
+		{
+			this.name = name;
+		}
+
+		public string Name
+		{
+			get { return name; }
+		}
+
+		public StringCollection Assemblies
+		{
+			get { return assemblies; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/VSProjectConfigCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/VSProjectConfigCollection.cs
@@ -1,48 +1,48 @@
-// ****************************************************************
-// Copyright 2002-2003, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// A simple collection to hold VSProjectConfigs. Originally,
-	/// we used the (NUnit) ProjectConfigCollection, but the
-	/// classes have since diverged.
-	/// </summary>
-	public class VSProjectConfigCollection : CollectionBase
-	{
-		public VSProjectConfig this[int index]
-		{
-			get { return List[index] as VSProjectConfig; }
-		}
-
-		public VSProjectConfig this[string name]
-		{
-			get
-			{
-				foreach ( VSProjectConfig config in InnerList )
-					if ( config.Name == name ) return config;
-
-				return null;
-			}
-		}
-
-		public void Add( VSProjectConfig config )
-		{
-			List.Add( config );
-		}
-
-		public bool Contains( string name )
-		{
-			foreach( VSProjectConfig config in InnerList )
-				if ( config.Name == name ) return true;
-
-			return false;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2002-2003, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// A simple collection to hold VSProjectConfigs. Originally,
+	/// we used the (NUnit) ProjectConfigCollection, but the
+	/// classes have since diverged.
+	/// </summary>
+	public class VSProjectConfigCollection : CollectionBase
+	{
+		public VSProjectConfig this[int index]
+		{
+			get { return List[index] as VSProjectConfig; }
+		}
+
+		public VSProjectConfig this[string name]
+		{
+			get
+			{
+				foreach ( VSProjectConfig config in InnerList )
+					if ( config.Name == name ) return config;
+
+				return null;
+			}
+		}
+
+		public void Add( VSProjectConfig config )
+		{
+			List.Add( config );
+		}
+
+		public bool Contains( string name )
+		{
+			foreach( VSProjectConfig config in InnerList )
+				if ( config.Name == name ) return true;
+
+			return false;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/XmlResultTransform.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/XmlResultTransform.cs
@@ -1,65 +1,65 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Xml;
-using System.Xml.Xsl;
-using System.Xml.XPath;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for XmlResultTransform.
-	/// </summary>
-	public class XmlResultTransform
-	{
-		private XslTransform xslTransform = new XslTransform();
-
-		public XmlResultTransform() { }
-
-		public XmlResultTransform( string stylesheet )
-		{
-			Load( stylesheet );
-		}
-
-		public XmlResultTransform( XmlReader reader )
-		{
-			Load( reader );
-		}
-
-		public void Load( string stylesheet )
-		{
-			xslTransform.Load( stylesheet );				
-		}
-
-		public void Load( XmlReader reader )
-		{
-			// NOTE: Not compatable with .NET 1.0.
-			// xslTransform.Load(reader, null, null);
-
-			xslTransform.Load(reader);
-	        }
-
-		public void Transform( string inputFile, string outputFile )
-		{
-			Transform( new StreamReader( inputFile ), new StreamWriter( outputFile ) );
-		}
-
-		public void Transform( TextReader reader, TextWriter writer )
-		{
-			Transform( new XPathDocument( reader ), writer );
-		}
-
-		public void Transform( IXPathNavigable xpnav, TextWriter writer )
-		{
-			// NOTE: Not compatable with .NET 1.0.
-			// xslTransform.Transform(xpnav, null, writer, null);
-
-			xslTransform.Transform(xpnav, null, writer);
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Xml;
+using System.Xml.Xsl;
+using System.Xml.XPath;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for XmlResultTransform.
+	/// </summary>
+	public class XmlResultTransform
+	{
+		private XslTransform xslTransform = new XslTransform();
+
+		public XmlResultTransform() { }
+
+		public XmlResultTransform( string stylesheet )
+		{
+			Load( stylesheet );
+		}
+
+		public XmlResultTransform( XmlReader reader )
+		{
+			Load( reader );
+		}
+
+		public void Load( string stylesheet )
+		{
+			xslTransform.Load( stylesheet );				
+		}
+
+		public void Load( XmlReader reader )
+		{
+			// NOTE: Not compatable with .NET 1.0.
+			// xslTransform.Load(reader, null, null);
+
+			xslTransform.Load(reader);
+	        }
+
+		public void Transform( string inputFile, string outputFile )
+		{
+			Transform( new StreamReader( inputFile ), new StreamWriter( outputFile ) );
+		}
+
+		public void Transform( TextReader reader, TextWriter writer )
+		{
+			Transform( new XPathDocument( reader ), writer );
+		}
+
+		public void Transform( IXPathNavigable xpnav, TextWriter writer )
+		{
+			// NOTE: Not compatable with .NET 1.0.
+			// xslTransform.Transform(xpnav, null, writer, null);
+
+			xslTransform.Transform(xpnav, null, writer);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/XmlResultVisitor.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/XmlResultVisitor.cs
@@ -1,277 +1,277 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Util
-{
-	using System;
-	using System.Globalization;
-	using System.IO;
-	using System.Xml;
-	using System.Reflection;
-	using NUnit.Core;
-
-	/// <summary>
-	/// Summary description for XmlResultVisitor.
-	/// </summary>
-	public class XmlResultVisitor : ResultVisitor
-	{
-		private XmlTextWriter xmlWriter;
-		private TextWriter writer;
-		private MemoryStream memoryStream;
-
-		public XmlResultVisitor(string fileName, TestResult result)
-		{
-			xmlWriter = new XmlTextWriter( new StreamWriter(fileName, false, System.Text.Encoding.UTF8) );
-			Initialize(result);
-		}
-
-        public XmlResultVisitor( TextWriter writer, TestResult result )
-		{
-			this.memoryStream = new MemoryStream();
-			this.writer = writer;
-			this.xmlWriter = new XmlTextWriter( new StreamWriter( memoryStream, System.Text.Encoding.UTF8 ) );
-			Initialize( result );
-		}
-
-		private void Initialize(TestResult result) 
-		{
-			ResultSummarizer summaryResults = new ResultSummarizer(result);
-
-			xmlWriter.Formatting = Formatting.Indented;
-			xmlWriter.WriteStartDocument(false);
-			xmlWriter.WriteComment("This file represents the results of running a test suite");
-
-			xmlWriter.WriteStartElement("test-results");
-
-			xmlWriter.WriteAttributeString("name", summaryResults.Name);
-			xmlWriter.WriteAttributeString("total", summaryResults.ResultCount.ToString());
-			xmlWriter.WriteAttributeString("failures", summaryResults.FailureCount.ToString());
-			xmlWriter.WriteAttributeString("not-run", summaryResults.TestsNotRun.ToString());
-
-			DateTime now = DateTime.Now;
-			xmlWriter.WriteAttributeString("date", XmlConvert.ToString( now, "yyyy-MM-dd" ) );
-			xmlWriter.WriteAttributeString("time", XmlConvert.ToString( now, "HH:mm:ss" ));
-			WriteEnvironment();
-			WriteCultureInfo();
-		}
-
-		private void WriteCultureInfo() {
-			xmlWriter.WriteStartElement("culture-info");
-			xmlWriter.WriteAttributeString("current-culture",
-			                               CultureInfo.CurrentCulture.ToString());
-			xmlWriter.WriteAttributeString("current-uiculture",
-			                               CultureInfo.CurrentUICulture.ToString());
-			xmlWriter.WriteEndElement();
-		}
-
-		private void WriteEnvironment() {
-			xmlWriter.WriteStartElement("environment");
-			xmlWriter.WriteAttributeString("nunit-version", 
-										   Assembly.GetExecutingAssembly().GetName().Version.ToString());
-			xmlWriter.WriteAttributeString("clr-version", 
-			                               Environment.Version.ToString());
-			xmlWriter.WriteAttributeString("os-version",
-			                               Environment.OSVersion.ToString());
-			xmlWriter.WriteAttributeString("platform",
-				Environment.OSVersion.Platform.ToString());
-			xmlWriter.WriteAttributeString("cwd",
-			                               Environment.CurrentDirectory);
-			xmlWriter.WriteAttributeString("machine-name",
-			                               Environment.MachineName);
-			xmlWriter.WriteAttributeString("user",
-			                               Environment.UserName);
-			xmlWriter.WriteAttributeString("user-domain",
-			                               Environment.UserDomainName);
-			xmlWriter.WriteEndElement();
-		}
-
-		public void Visit(TestCaseResult caseResult) 
-		{
-			xmlWriter.WriteStartElement("test-case");
-			xmlWriter.WriteAttributeString("name",caseResult.Name);
-
-			if(caseResult.Description != null)
-				xmlWriter.WriteAttributeString("description", caseResult.Description);
-
-			xmlWriter.WriteAttributeString("executed", caseResult.Executed.ToString());
-			if(caseResult.Executed)
-			{
-				xmlWriter.WriteAttributeString("success", caseResult.IsSuccess.ToString() );
-
-				xmlWriter.WriteAttributeString("time", caseResult.Time.ToString("#####0.000", NumberFormatInfo.InvariantInfo));
-
-				xmlWriter.WriteAttributeString("asserts", caseResult.AssertCount.ToString() );
-				WriteCategories(caseResult);
-				WriteProperties(caseResult);
-				if(caseResult.IsFailure)
-				{
-					if(caseResult.IsFailure)
-						xmlWriter.WriteStartElement("failure");
-					else
-						xmlWriter.WriteStartElement("error");
-				
-					xmlWriter.WriteStartElement("message");
-					xmlWriter.WriteCData( EncodeCData( caseResult.Message ) );
-					xmlWriter.WriteEndElement();
-				
-					xmlWriter.WriteStartElement("stack-trace");
-					if(caseResult.StackTrace != null)
-						xmlWriter.WriteCData( EncodeCData( StackTraceFilter.Filter( caseResult.StackTrace ) ) );
-					xmlWriter.WriteEndElement();
-				
-					xmlWriter.WriteEndElement();
-				}
-				
-			}
-			else
-			{
-				WriteCategories(caseResult);
-				WriteProperties(caseResult);
-				xmlWriter.WriteStartElement("reason");
-				xmlWriter.WriteStartElement("message");
-				xmlWriter.WriteCData(caseResult.Message);
-				xmlWriter.WriteEndElement();
-				xmlWriter.WriteEndElement();
-			}
-            
-			xmlWriter.WriteEndElement();
-		}
-
-		/// <summary>
-		/// Makes string safe for xml parsing, replacing control chars with '?'
-		/// </summary>
-		/// <param name="encodedString">string to make safe</param>
-		/// <returns>xml safe string</returns>
-		private static string CharacterSafeString(string encodedString)
-		{
-			/*The default code page for the system will be used.
-			Since all code pages use the same lower 128 bytes, this should be sufficient
-			for finding uprintable control characters that make the xslt processor error.
-			We use characters encoded by the default code page to avoid mistaking bytes as
-			individual characters on non-latin code pages.*/
-			char[] encodedChars = System.Text.Encoding.Default.GetChars(System.Text.Encoding.Default.GetBytes(encodedString));
-			
-			System.Collections.ArrayList pos = new System.Collections.ArrayList();
-			for(int x = 0 ; x < encodedChars.Length ; x++)
-			{
-				char currentChar = encodedChars[x];
-				//unprintable characters are below 0x20 in Unicode tables
-				//some control characters are acceptable. (carriage return 0x0D, line feed 0x0A, horizontal tab 0x09)
-				if(currentChar < 32 && (currentChar != 9 && currentChar != 10 && currentChar != 13))
-				{
-					//save the array index for later replacement.
-					pos.Add(x);
-				}
-			}
-			foreach(int index in pos)
-			{
-				encodedChars[index] = '?';//replace unprintable control characters with ?(3F)
-			}
-			return System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(encodedChars));
-		}
-
-		private string EncodeCData( string text )
-		{
-			return CharacterSafeString( text ).Replace( "]]>", "]]&gt;" );
-		}
-
-		public void WriteCategories(TestResult result)
-		{
-			if (result.Test.Categories != null && result.Test.Categories.Count > 0)
-			{
-				xmlWriter.WriteStartElement("categories");
-				foreach (string category in result.Test.Categories)
-				{
-					xmlWriter.WriteStartElement("category");
-					xmlWriter.WriteAttributeString("name", category);
-					xmlWriter.WriteEndElement();
-				}
-				xmlWriter.WriteEndElement();
-			}
-		}
-
-		public void WriteProperties(TestResult result)
-		{
-			if (result.Test.Properties != null && result.Test.Properties.Count > 0)
-			{
-				xmlWriter.WriteStartElement("properties");
-				foreach (string key in result.Test.Properties.Keys)
-				{
-					xmlWriter.WriteStartElement("property");
-					xmlWriter.WriteAttributeString("name", key);
-					xmlWriter.WriteAttributeString("value", result.Test.Properties[key].ToString() );
-					xmlWriter.WriteEndElement();
-				}
-				xmlWriter.WriteEndElement();
-			}
-		}
-
-		public void Visit(TestSuiteResult suiteResult) 
-		{
-			xmlWriter.WriteStartElement("test-suite");
-			xmlWriter.WriteAttributeString("name",suiteResult.Name);
-			if(suiteResult.Description != null)
-				xmlWriter.WriteAttributeString("description", suiteResult.Description);
-
-			xmlWriter.WriteAttributeString("success", suiteResult.IsSuccess.ToString());
-			xmlWriter.WriteAttributeString("time", suiteResult.Time.ToString("#####0.000", NumberFormatInfo.InvariantInfo));
-			xmlWriter.WriteAttributeString("asserts", suiteResult.AssertCount.ToString() );
-         
-			WriteCategories(suiteResult);
-			WriteProperties(suiteResult);
-
-			if ( suiteResult.IsFailure && suiteResult.FailureSite == FailureSite.SetUp )
-			{
-				xmlWriter.WriteStartElement("failure");
-
-				xmlWriter.WriteStartElement("message");
-				xmlWriter.WriteCData( EncodeCData( suiteResult.Message ) );
-				xmlWriter.WriteEndElement();
-
-				xmlWriter.WriteStartElement("stack-trace");
-				if(suiteResult.StackTrace != null)
-					xmlWriter.WriteCData( EncodeCData( StackTraceFilter.Filter( suiteResult.StackTrace ) ) );
-				xmlWriter.WriteEndElement();
-
-				xmlWriter.WriteEndElement();
-			}
-
-			xmlWriter.WriteStartElement("results");                  
-			foreach (TestResult result in suiteResult.Results)
-			{
-				result.Accept(this);
-			}
-			xmlWriter.WriteEndElement();
-
-			xmlWriter.WriteEndElement();
-		}
-
-		public void Write()
-		{
-			try 
-			{
-				xmlWriter.WriteEndElement();
-				xmlWriter.WriteEndDocument();
-				xmlWriter.Flush();
-
-				if ( memoryStream != null && writer != null )
-				{
-					memoryStream.Position = 0;
-					using ( StreamReader rdr = new StreamReader( memoryStream ) )
-					{
-						writer.Write( rdr.ReadToEnd() );
-					}
-				}
-
-				xmlWriter.Close();
-			} 
-			finally 
-			{
-				//writer.Close();
-			}
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Util
+{
+	using System;
+	using System.Globalization;
+	using System.IO;
+	using System.Xml;
+	using System.Reflection;
+	using NUnit.Core;
+
+	/// <summary>
+	/// Summary description for XmlResultVisitor.
+	/// </summary>
+	public class XmlResultVisitor : ResultVisitor
+	{
+		private XmlTextWriter xmlWriter;
+		private TextWriter writer;
+		private MemoryStream memoryStream;
+
+		public XmlResultVisitor(string fileName, TestResult result)
+		{
+			xmlWriter = new XmlTextWriter( new StreamWriter(fileName, false, System.Text.Encoding.UTF8) );
+			Initialize(result);
+		}
+
+        public XmlResultVisitor( TextWriter writer, TestResult result )
+		{
+			this.memoryStream = new MemoryStream();
+			this.writer = writer;
+			this.xmlWriter = new XmlTextWriter( new StreamWriter( memoryStream, System.Text.Encoding.UTF8 ) );
+			Initialize( result );
+		}
+
+		private void Initialize(TestResult result) 
+		{
+			ResultSummarizer summaryResults = new ResultSummarizer(result);
+
+			xmlWriter.Formatting = Formatting.Indented;
+			xmlWriter.WriteStartDocument(false);
+			xmlWriter.WriteComment("This file represents the results of running a test suite");
+
+			xmlWriter.WriteStartElement("test-results");
+
+			xmlWriter.WriteAttributeString("name", summaryResults.Name);
+			xmlWriter.WriteAttributeString("total", summaryResults.ResultCount.ToString());
+			xmlWriter.WriteAttributeString("failures", summaryResults.FailureCount.ToString());
+			xmlWriter.WriteAttributeString("not-run", summaryResults.TestsNotRun.ToString());
+
+			DateTime now = DateTime.Now;
+			xmlWriter.WriteAttributeString("date", XmlConvert.ToString( now, "yyyy-MM-dd" ) );
+			xmlWriter.WriteAttributeString("time", XmlConvert.ToString( now, "HH:mm:ss" ));
+			WriteEnvironment();
+			WriteCultureInfo();
+		}
+
+		private void WriteCultureInfo() {
+			xmlWriter.WriteStartElement("culture-info");
+			xmlWriter.WriteAttributeString("current-culture",
+			                               CultureInfo.CurrentCulture.ToString());
+			xmlWriter.WriteAttributeString("current-uiculture",
+			                               CultureInfo.CurrentUICulture.ToString());
+			xmlWriter.WriteEndElement();
+		}
+
+		private void WriteEnvironment() {
+			xmlWriter.WriteStartElement("environment");
+			xmlWriter.WriteAttributeString("nunit-version", 
+										   Assembly.GetExecutingAssembly().GetName().Version.ToString());
+			xmlWriter.WriteAttributeString("clr-version", 
+			                               Environment.Version.ToString());
+			xmlWriter.WriteAttributeString("os-version",
+			                               Environment.OSVersion.ToString());
+			xmlWriter.WriteAttributeString("platform",
+				Environment.OSVersion.Platform.ToString());
+			xmlWriter.WriteAttributeString("cwd",
+			                               Environment.CurrentDirectory);
+			xmlWriter.WriteAttributeString("machine-name",
+			                               Environment.MachineName);
+			xmlWriter.WriteAttributeString("user",
+			                               Environment.UserName);
+			xmlWriter.WriteAttributeString("user-domain",
+			                               Environment.UserDomainName);
+			xmlWriter.WriteEndElement();
+		}
+
+		public void Visit(TestCaseResult caseResult) 
+		{
+			xmlWriter.WriteStartElement("test-case");
+			xmlWriter.WriteAttributeString("name",caseResult.Name);
+
+			if(caseResult.Description != null)
+				xmlWriter.WriteAttributeString("description", caseResult.Description);
+
+			xmlWriter.WriteAttributeString("executed", caseResult.Executed.ToString());
+			if(caseResult.Executed)
+			{
+				xmlWriter.WriteAttributeString("success", caseResult.IsSuccess.ToString() );
+
+				xmlWriter.WriteAttributeString("time", caseResult.Time.ToString("#####0.000", NumberFormatInfo.InvariantInfo));
+
+				xmlWriter.WriteAttributeString("asserts", caseResult.AssertCount.ToString() );
+				WriteCategories(caseResult);
+				WriteProperties(caseResult);
+				if(caseResult.IsFailure)
+				{
+					if(caseResult.IsFailure)
+						xmlWriter.WriteStartElement("failure");
+					else
+						xmlWriter.WriteStartElement("error");
+				
+					xmlWriter.WriteStartElement("message");
+					xmlWriter.WriteCData( EncodeCData( caseResult.Message ) );
+					xmlWriter.WriteEndElement();
+				
+					xmlWriter.WriteStartElement("stack-trace");
+					if(caseResult.StackTrace != null)
+						xmlWriter.WriteCData( EncodeCData( StackTraceFilter.Filter( caseResult.StackTrace ) ) );
+					xmlWriter.WriteEndElement();
+				
+					xmlWriter.WriteEndElement();
+				}
+				
+			}
+			else
+			{
+				WriteCategories(caseResult);
+				WriteProperties(caseResult);
+				xmlWriter.WriteStartElement("reason");
+				xmlWriter.WriteStartElement("message");
+				xmlWriter.WriteCData(caseResult.Message);
+				xmlWriter.WriteEndElement();
+				xmlWriter.WriteEndElement();
+			}
+            
+			xmlWriter.WriteEndElement();
+		}
+
+		/// <summary>
+		/// Makes string safe for xml parsing, replacing control chars with '?'
+		/// </summary>
+		/// <param name="encodedString">string to make safe</param>
+		/// <returns>xml safe string</returns>
+		private static string CharacterSafeString(string encodedString)
+		{
+			/*The default code page for the system will be used.
+			Since all code pages use the same lower 128 bytes, this should be sufficient
+			for finding uprintable control characters that make the xslt processor error.
+			We use characters encoded by the default code page to avoid mistaking bytes as
+			individual characters on non-latin code pages.*/
+			char[] encodedChars = System.Text.Encoding.Default.GetChars(System.Text.Encoding.Default.GetBytes(encodedString));
+			
+			System.Collections.ArrayList pos = new System.Collections.ArrayList();
+			for(int x = 0 ; x < encodedChars.Length ; x++)
+			{
+				char currentChar = encodedChars[x];
+				//unprintable characters are below 0x20 in Unicode tables
+				//some control characters are acceptable. (carriage return 0x0D, line feed 0x0A, horizontal tab 0x09)
+				if(currentChar < 32 && (currentChar != 9 && currentChar != 10 && currentChar != 13))
+				{
+					//save the array index for later replacement.
+					pos.Add(x);
+				}
+			}
+			foreach(int index in pos)
+			{
+				encodedChars[index] = '?';//replace unprintable control characters with ?(3F)
+			}
+			return System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(encodedChars));
+		}
+
+		private string EncodeCData( string text )
+		{
+			return CharacterSafeString( text ).Replace( "]]>", "]]&gt;" );
+		}
+
+		public void WriteCategories(TestResult result)
+		{
+			if (result.Test.Categories != null && result.Test.Categories.Count > 0)
+			{
+				xmlWriter.WriteStartElement("categories");
+				foreach (string category in result.Test.Categories)
+				{
+					xmlWriter.WriteStartElement("category");
+					xmlWriter.WriteAttributeString("name", category);
+					xmlWriter.WriteEndElement();
+				}
+				xmlWriter.WriteEndElement();
+			}
+		}
+
+		public void WriteProperties(TestResult result)
+		{
+			if (result.Test.Properties != null && result.Test.Properties.Count > 0)
+			{
+				xmlWriter.WriteStartElement("properties");
+				foreach (string key in result.Test.Properties.Keys)
+				{
+					xmlWriter.WriteStartElement("property");
+					xmlWriter.WriteAttributeString("name", key);
+					xmlWriter.WriteAttributeString("value", result.Test.Properties[key].ToString() );
+					xmlWriter.WriteEndElement();
+				}
+				xmlWriter.WriteEndElement();
+			}
+		}
+
+		public void Visit(TestSuiteResult suiteResult) 
+		{
+			xmlWriter.WriteStartElement("test-suite");
+			xmlWriter.WriteAttributeString("name",suiteResult.Name);
+			if(suiteResult.Description != null)
+				xmlWriter.WriteAttributeString("description", suiteResult.Description);
+
+			xmlWriter.WriteAttributeString("success", suiteResult.IsSuccess.ToString());
+			xmlWriter.WriteAttributeString("time", suiteResult.Time.ToString("#####0.000", NumberFormatInfo.InvariantInfo));
+			xmlWriter.WriteAttributeString("asserts", suiteResult.AssertCount.ToString() );
+         
+			WriteCategories(suiteResult);
+			WriteProperties(suiteResult);
+
+			if ( suiteResult.IsFailure && suiteResult.FailureSite == FailureSite.SetUp )
+			{
+				xmlWriter.WriteStartElement("failure");
+
+				xmlWriter.WriteStartElement("message");
+				xmlWriter.WriteCData( EncodeCData( suiteResult.Message ) );
+				xmlWriter.WriteEndElement();
+
+				xmlWriter.WriteStartElement("stack-trace");
+				if(suiteResult.StackTrace != null)
+					xmlWriter.WriteCData( EncodeCData( StackTraceFilter.Filter( suiteResult.StackTrace ) ) );
+				xmlWriter.WriteEndElement();
+
+				xmlWriter.WriteEndElement();
+			}
+
+			xmlWriter.WriteStartElement("results");                  
+			foreach (TestResult result in suiteResult.Results)
+			{
+				result.Accept(this);
+			}
+			xmlWriter.WriteEndElement();
+
+			xmlWriter.WriteEndElement();
+		}
+
+		public void Write()
+		{
+			try 
+			{
+				xmlWriter.WriteEndElement();
+				xmlWriter.WriteEndDocument();
+				xmlWriter.Flush();
+
+				if ( memoryStream != null && writer != null )
+				{
+					memoryStream.Position = 0;
+					using ( StreamReader rdr = new StreamReader( memoryStream ) )
+					{
+						writer.Write( rdr.ReadToEnd() );
+					}
+				}
+
+				xmlWriter.Close();
+			} 
+			finally 
+			{
+				//writer.Close();
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/XmlSettingsStorage.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/XmlSettingsStorage.cs
@@ -1,91 +1,91 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Xml;
-using System.Collections;
-using System.ComponentModel;
-
-namespace NUnit.Util
-{
-	/// <summary>
-	/// Summary description for XmlSettingsStorage.
-	/// </summary>
-	public class XmlSettingsStorage : MemorySettingsStorage
-	{
-		private string filePath;
-
-		public XmlSettingsStorage( string filePath )
-		{
-			this.filePath = filePath;
-		}
-
-		public override void LoadSettings()
-		{
-			FileInfo info = new FileInfo(filePath);
-			if ( !info.Exists || info.Length == 0 )
-				return;
-
-			try
-			{
-				XmlDocument doc = new XmlDocument();
-				doc.Load( filePath );
-
-				foreach( XmlElement element in doc.DocumentElement["Settings"].ChildNodes )
-				{
-					if ( element.Name != "Setting" )
-						throw new ApplicationException( "Unknown element in settings file: " + element.Name );
-
-					if ( !element.HasAttribute( "name" ) )
-						throw new ApplicationException( "Setting must have 'name' attribute" );
-
-					if ( !element.HasAttribute( "value" ) )
-						throw new ApplicationException( "Setting must have 'value' attribute" );
-
-					settings[ element.GetAttribute( "name" ) ] = element.GetAttribute( "value" );
-				}
-			}
-			catch( Exception ex )
-			{
-				throw new ApplicationException( "Error loading settings file", ex );
-			}
-		}
-
-		public override void SaveSettings()
-		{
-			string dirPath = Path.GetDirectoryName( filePath );
-			if ( !Directory.Exists( dirPath ) )
-				Directory.CreateDirectory( dirPath );
-
-			XmlTextWriter writer = new XmlTextWriter(  filePath, System.Text.Encoding.UTF8 );
-			writer.Formatting = Formatting.Indented;
-
-			writer.WriteProcessingInstruction( "xml", "version=\"1.0\"" );
-			writer.WriteStartElement( "NUnitSettings" );
-			writer.WriteStartElement( "Settings" );
-
-			ArrayList keys = new ArrayList( settings.Keys );
-			keys.Sort();
-
-			foreach( string name in keys )
-			{
-				object val = settings[name];
-				if ( val != null )
-				{
-					writer.WriteStartElement( "Setting");
-					writer.WriteAttributeString( "name", name );
-					writer.WriteAttributeString( "value", val.ToString() );
-					writer.WriteEndElement();
-				}
-			}
-
-			writer.WriteEndElement();
-			writer.WriteEndElement();
-			writer.Close();
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Xml;
+using System.Collections;
+using System.ComponentModel;
+
+namespace NUnit.Util
+{
+	/// <summary>
+	/// Summary description for XmlSettingsStorage.
+	/// </summary>
+	public class XmlSettingsStorage : MemorySettingsStorage
+	{
+		private string filePath;
+
+		public XmlSettingsStorage( string filePath )
+		{
+			this.filePath = filePath;
+		}
+
+		public override void LoadSettings()
+		{
+			FileInfo info = new FileInfo(filePath);
+			if ( !info.Exists || info.Length == 0 )
+				return;
+
+			try
+			{
+				XmlDocument doc = new XmlDocument();
+				doc.Load( filePath );
+
+				foreach( XmlElement element in doc.DocumentElement["Settings"].ChildNodes )
+				{
+					if ( element.Name != "Setting" )
+						throw new ApplicationException( "Unknown element in settings file: " + element.Name );
+
+					if ( !element.HasAttribute( "name" ) )
+						throw new ApplicationException( "Setting must have 'name' attribute" );
+
+					if ( !element.HasAttribute( "value" ) )
+						throw new ApplicationException( "Setting must have 'value' attribute" );
+
+					settings[ element.GetAttribute( "name" ) ] = element.GetAttribute( "value" );
+				}
+			}
+			catch( Exception ex )
+			{
+				throw new ApplicationException( "Error loading settings file", ex );
+			}
+		}
+
+		public override void SaveSettings()
+		{
+			string dirPath = Path.GetDirectoryName( filePath );
+			if ( !Directory.Exists( dirPath ) )
+				Directory.CreateDirectory( dirPath );
+
+			XmlTextWriter writer = new XmlTextWriter(  filePath, System.Text.Encoding.UTF8 );
+			writer.Formatting = Formatting.Indented;
+
+			writer.WriteProcessingInstruction( "xml", "version=\"1.0\"" );
+			writer.WriteStartElement( "NUnitSettings" );
+			writer.WriteStartElement( "Settings" );
+
+			ArrayList keys = new ArrayList( settings.Keys );
+			keys.Sort();
+
+			foreach( string name in keys )
+			{
+				object val = settings[name];
+				if ( val != null )
+				{
+					writer.WriteStartElement( "Setting");
+					writer.WriteAttributeString( "name", name );
+					writer.WriteAttributeString( "value", val.ToString() );
+					writer.WriteEndElement();
+				}
+			}
+
+			writer.WriteEndElement();
+			writer.WriteEndElement();
+			writer.Close();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/nunit.util.dll.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/nunit.util.dll.csproj
@@ -1,395 +1,395 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{61CE9CE5-943E-44D4-A381-814DC1406767}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit.util"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.Util"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "true"
-                    NoStdLib = "false"
-                    NoWarn = "618"
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = "618"
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
-                />
-                <Reference
-                    Name = "System.Runtime.Remoting"
-                    AssemblyName = "System.Runtime.Remoting"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Runtime.Remoting.dll"
-                />
-                <Reference
-                    Name = "nunit.core.dll"
-                    Project = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "nunit.core.interfaces.dll"
-                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "System.Drawing"
-                    AssemblyName = "System.Drawing"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AggregatingTestRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssemblyList.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssemblyWatcher.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CategoryExpression.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CategoryManager.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommandLineOptions.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ConsoleWriter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ISettings.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ITestEvents.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ITestLoader.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MemorySettingsStorage.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MultipleTestDomainRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NUnitProject.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NUnitRegistry.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "PathUtils.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ProcessRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ProjectConfig.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ProjectConfigCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ProjectFormatException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RecentFileEntry.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RecentFiles.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RecentFilesCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RegistrySettingsStorage.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RemoteTestAgent.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ResultSummarizer.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ServerBase.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ServerUtilities.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SettingsGroup.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SettingsStorage.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "StackTraceFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SummaryVisitor.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestAgent.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestDomain.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestEventArgs.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestEventDispatcher.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestExceptionHandler.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestLoader.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestObserver.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestResultItem.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestServer.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Transform.resx"
-                    BuildAction = "EmbeddedResource"
-                />
-                <File
-                    RelPath = "VSProject.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "VSProjectConfig.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "VSProjectConfigCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlResultTransform.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlResultVisitor.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "XmlSettingsStorage.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services\AddinManager.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services\AddinRegistry.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services\DomainManager.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services\RecentFilesService.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services\ServiceManager.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services\SettingsService.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Services\TestAgency.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{61CE9CE5-943E-44D4-A381-814DC1406767}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit.util"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.Util"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "true"
+                    NoStdLib = "false"
+                    NoWarn = "618"
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = "618"
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
+                />
+                <Reference
+                    Name = "System.Runtime.Remoting"
+                    AssemblyName = "System.Runtime.Remoting"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Runtime.Remoting.dll"
+                />
+                <Reference
+                    Name = "nunit.core.dll"
+                    Project = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "nunit.core.interfaces.dll"
+                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "System.Drawing"
+                    AssemblyName = "System.Drawing"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AggregatingTestRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssemblyList.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssemblyWatcher.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CategoryExpression.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CategoryManager.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommandLineOptions.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ConsoleWriter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ISettings.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ITestEvents.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ITestLoader.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MemorySettingsStorage.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MultipleTestDomainRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NUnitProject.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NUnitRegistry.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "PathUtils.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ProcessRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ProjectConfig.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ProjectConfigCollection.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ProjectFormatException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RecentFileEntry.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RecentFiles.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RecentFilesCollection.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RegistrySettingsStorage.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RemoteTestAgent.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ResultSummarizer.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ServerBase.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ServerUtilities.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SettingsGroup.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SettingsStorage.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "StackTraceFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SummaryVisitor.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestAgent.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestDomain.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestEventArgs.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestEventDispatcher.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestExceptionHandler.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestLoader.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestObserver.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestResultItem.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestServer.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Transform.resx"
+                    BuildAction = "EmbeddedResource"
+                />
+                <File
+                    RelPath = "VSProject.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "VSProjectConfig.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "VSProjectConfigCollection.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlResultTransform.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlResultVisitor.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlSettingsStorage.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services\AddinManager.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services\AddinRegistry.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services\DomainManager.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services\RecentFilesService.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services\ServiceManager.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services\SettingsService.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Services\TestAgency.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ClientUtilities/util/nunit.util.dll_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ClientUtilities/util/nunit.util.dll_VS2005.csproj
@@ -1,208 +1,208 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{61CE9CE5-943E-44D4-A381-814DC1406767}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.util</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Util</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <SignAssembly>false</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <Optimize>true</Optimize>
-    <NoWarn>618,1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <NoWarn>618,1699</NoWarn>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Runtime.Remoting">
-      <Name>System.Runtime.Remoting</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AggregatingTestRunner.cs" />
-    <Compile Include="AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="AssemblyList.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="AssemblyWatcher.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="CategoryExpression.cs" />
-    <Compile Include="CategoryManager.cs" />
-    <Compile Include="CommandLineOptions.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ConsoleWriter.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ISettings.cs" />
-    <Compile Include="ITestEvents.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ITestLoader.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="MemorySettingsStorage.cs" />
-    <Compile Include="MultipleTestDomainRunner.cs" />
-    <Compile Include="NUnitProject.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NUnitRegistry.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="PathUtils.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ProcessRunner.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ProjectConfig.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ProjectConfigCollection.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ProjectFormatException.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="RecentFileEntry.cs" />
-    <Compile Include="RecentFiles.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="RecentFilesCollection.cs" />
-    <Compile Include="RegistrySettingsStorage.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="RemoteTestAgent.cs" />
-    <Compile Include="ResultSummarizer.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ServerBase.cs" />
-    <Compile Include="ServerUtilities.cs" />
-    <Compile Include="Services.cs" />
-    <Compile Include="Services\AddinManager.cs" />
-    <Compile Include="Services\AddinRegistry.cs" />
-    <Compile Include="Services\DomainManager.cs" />
-    <Compile Include="Services\RecentFilesService.cs" />
-    <Compile Include="Services\ServiceManager.cs" />
-    <Compile Include="Services\SettingsService.cs" />
-    <Compile Include="Services\TestAgency.cs" />
-    <Compile Include="SettingsGroup.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="SettingsStorage.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="StackTraceFilter.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="SummaryVisitor.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestAgent.cs" />
-    <Compile Include="TestDomain.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestEventArgs.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestEventDispatcher.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestExceptionHandler.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestLoader.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestObserver.cs" />
-    <Compile Include="TestResultItem.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestServer.cs" />
-    <Compile Include="VSProject.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="VSProjectConfig.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="VSProjectConfigCollection.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="XmlResultTransform.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="XmlResultVisitor.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="XmlSettingsStorage.cs" />
-    <EmbeddedResource Include="Transform.resx">
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll_VS2005.csproj">
-      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
-      <Name>nunit.core.dll_VS2005</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
-      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
-      <Name>nunit.core.interfaces.dll_VS2005</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Services\CVS\Entries" />
-    <None Include="Services\CVS\Repository" />
-    <None Include="Services\CVS\Root" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{61CE9CE5-943E-44D4-A381-814DC1406767}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.util</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Util</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <SignAssembly>false</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <Optimize>true</Optimize>
+    <NoWarn>618,1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <NoWarn>618,1699</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Runtime.Remoting">
+      <Name>System.Runtime.Remoting</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AggregatingTestRunner.cs" />
+    <Compile Include="AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssemblyList.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssemblyWatcher.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="CategoryExpression.cs" />
+    <Compile Include="CategoryManager.cs" />
+    <Compile Include="CommandLineOptions.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ConsoleWriter.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ISettings.cs" />
+    <Compile Include="ITestEvents.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ITestLoader.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MemorySettingsStorage.cs" />
+    <Compile Include="MultipleTestDomainRunner.cs" />
+    <Compile Include="NUnitProject.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NUnitRegistry.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="PathUtils.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ProcessRunner.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ProjectConfig.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ProjectConfigCollection.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ProjectFormatException.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RecentFileEntry.cs" />
+    <Compile Include="RecentFiles.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RecentFilesCollection.cs" />
+    <Compile Include="RegistrySettingsStorage.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RemoteTestAgent.cs" />
+    <Compile Include="ResultSummarizer.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ServerBase.cs" />
+    <Compile Include="ServerUtilities.cs" />
+    <Compile Include="Services.cs" />
+    <Compile Include="Services\AddinManager.cs" />
+    <Compile Include="Services\AddinRegistry.cs" />
+    <Compile Include="Services\DomainManager.cs" />
+    <Compile Include="Services\RecentFilesService.cs" />
+    <Compile Include="Services\ServiceManager.cs" />
+    <Compile Include="Services\SettingsService.cs" />
+    <Compile Include="Services\TestAgency.cs" />
+    <Compile Include="SettingsGroup.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="SettingsStorage.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="StackTraceFilter.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="SummaryVisitor.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestAgent.cs" />
+    <Compile Include="TestDomain.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestEventArgs.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestEventDispatcher.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestExceptionHandler.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestLoader.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestObserver.cs" />
+    <Compile Include="TestResultItem.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestServer.cs" />
+    <Compile Include="VSProject.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="VSProjectConfig.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="VSProjectConfigCollection.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="XmlResultTransform.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="XmlResultVisitor.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="XmlSettingsStorage.cs" />
+    <EmbeddedResource Include="Transform.resx">
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll_VS2005.csproj">
+      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
+      <Name>nunit.core.dll_VS2005</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
+      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
+      <Name>nunit.core.interfaces.dll_VS2005</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Services\CVS\Entries" />
+    <None Include="Services\CVS\Repository" />
+    <None Include="Services\CVS\Root" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/CommonAssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/CommonAssemblyInfo.cs
@@ -1,34 +1,34 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.Reflection;
-
-//
-// Common Information about all NUnit assemblies is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-//
-//[assembly: AssemblyTitle("")]
-//[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("NUnit.org")]
-[assembly: AssemblyProduct("NUnit")]
-[assembly: AssemblyCopyright("Copyright (C) 2002-2007 Charlie Poole.\r\nCopyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.\r\nCopyright (C) 2000-2002 Philip Craig.\r\nAll Rights Reserved.")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]		
-
-//
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers 
-// by using the '*' as shown below:
-
-[assembly: AssemblyVersion("2.4.8")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.Reflection;
+
+//
+// Common Information about all NUnit assemblies is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+//[assembly: AssemblyTitle("")]
+//[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("NUnit.org")]
+[assembly: AssemblyProduct("NUnit")]
+[assembly: AssemblyCopyright("Copyright (C) 2002-2007 Charlie Poole.\r\nCopyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.\r\nCopyright (C) 2000-2002 Philip Craig.\r\nAll Rights Reserved.")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]		
+
+//
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("2.4.8")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console-exe/Class1.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console-exe/Class1.cs
@@ -1,25 +1,25 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.ConsoleRunner
-{
-	/// <summary>
-	/// Summary description for Class1.
-	/// </summary>
-	class Class1
-	{
-		/// <summary>
-		/// The main entry point for the application.
-		/// </summary>
-		[STAThread]
-		public static int Main(string[] args)
-		{
-			return Runner.Main( args );
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.ConsoleRunner
+{
+	/// <summary>
+	/// Summary description for Class1.
+	/// </summary>
+	class Class1
+	{
+		/// <summary>
+		/// The main entry point for the application.
+		/// </summary>
+		[STAThread]
+		public static int Main(string[] args)
+		{
+			return Runner.Main( args );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console-exe/assemblyinfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console-exe/assemblyinfo.cs
@@ -1,11 +1,11 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-[assembly: AssemblyTitle("NUnit-Console")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+[assembly: AssemblyTitle("NUnit-Console")]
 [assembly: AssemblyDescription("")]
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.config
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.config
@@ -1,119 +1,119 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<configuration>
-
-	<!-- Do not remove. Sets up configsectionhandler section for log4net -->
-    <configSections>
-        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
-    </configSections>
-
-	<!--
-     Application settings for NUnit-console.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-	<appSettings>
-
-	<!--
-	 Specify the location to be used by .NET for the cache
-	-->
-    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
-  
-	</appSettings>
-  
-    <system.diagnostics>
-	  <switches>
-		<add name="NTrace" value="4" />
-	  </switches>
-	  <trace autoflush="true" indentsize="4">
-		<listeners>
-<!--
-			<add name="NUnitInternalTrace" type="System.Diagnostics.TextWriterTraceListener" 
-				initializeData="C:\NUnitPrimaryTrace.txt"/>
--->
-		</listeners>
-	  </trace>
-	</system.diagnostics>
-	
-	<!-- 
-     The startup section may be used to specify the runtime versions 
-     supported in the order that they will be used if more than one
-     is present. As supplied, this section is commented out, which
-     causes nunit-console to use the version of the framework with
-     which it was built.
-  	 
-	 Since .NET 1.0 does not recognize the <supportedRuntime> elements,
-	 a <requiredRuntime> element is used in case it is the only version
-	 of the framework that is installed.
-    -->
-    <!--
-	<startup>
-	  <supportedRuntime version="v2.0.50727" />
-	  <supportedRuntime version="v2.0.50215" />
-	  <supportedRuntime version="v2.0.40607" />
-	  <supportedRuntime version="v1.1.4322" />
-	  <supportedRuntime version="v1.0.3705" />
-	
-	  <requiredRuntime version="v1.0.3705" />
-	</startup>
-	-->
-
-   <!--
-    The following <runtime> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0version 1
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file.
-   -->
-  
- <runtime>
-
-   <legacyUnhandledExceptionPolicy enabled="1" />
-
-   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-			appliesTo="v1.0.3705">
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Data" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Drawing" 
-                          publicKeyToken="b03f5f7f11d50a3a" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Windows.Forms" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Xml" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-
-  </runtime>
-  
-</configuration>
+<?xml version="1.0" encoding="Windows-1252"?>
+<configuration>
+
+	<!-- Do not remove. Sets up configsectionhandler section for log4net -->
+    <configSections>
+        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
+    </configSections>
+
+	<!--
+     Application settings for NUnit-console.exe. Do NOT put settings
+	 for use by your tests here.
+	-->
+	<appSettings>
+
+	<!--
+	 Specify the location to be used by .NET for the cache
+	-->
+    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
+  
+	</appSettings>
+  
+    <system.diagnostics>
+	  <switches>
+		<add name="NTrace" value="4" />
+	  </switches>
+	  <trace autoflush="true" indentsize="4">
+		<listeners>
+<!--
+			<add name="NUnitInternalTrace" type="System.Diagnostics.TextWriterTraceListener" 
+				initializeData="C:\NUnitPrimaryTrace.txt"/>
+-->
+		</listeners>
+	  </trace>
+	</system.diagnostics>
+	
+	<!-- 
+     The startup section may be used to specify the runtime versions 
+     supported in the order that they will be used if more than one
+     is present. As supplied, this section is commented out, which
+     causes nunit-console to use the version of the framework with
+     which it was built.
+  	 
+	 Since .NET 1.0 does not recognize the <supportedRuntime> elements,
+	 a <requiredRuntime> element is used in case it is the only version
+	 of the framework that is installed.
+    -->
+    <!--
+	<startup>
+	  <supportedRuntime version="v2.0.50727" />
+	  <supportedRuntime version="v2.0.50215" />
+	  <supportedRuntime version="v2.0.40607" />
+	  <supportedRuntime version="v1.1.4322" />
+	  <supportedRuntime version="v1.0.3705" />
+	
+	  <requiredRuntime version="v1.0.3705" />
+	</startup>
+	-->
+
+   <!--
+    The following <runtime> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0version 1
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file.
+   -->
+  
+ <runtime>
+
+   <legacyUnhandledExceptionPolicy enabled="1" />
+
+   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+			appliesTo="v1.0.3705">
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Data" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Drawing" 
+                          publicKeyToken="b03f5f7f11d50a3a" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Windows.Forms" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Xml" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+
+  </runtime>
+  
+</configuration>
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.config.net_2_0
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.config.net_2_0
@@ -1,111 +1,111 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<configuration>
-
-	<!-- Do not remove. Sets up configsectionhandler section for log4net -->
-    <configSections>
-        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
-    </configSections>
-
-	<!--
-     Application settings for NUnit-console.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-	<appSettings>
-
-	<!--
-	 Specify the location to be used by .NET for the cache
-	-->
-    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
-  
-	</appSettings>
-  
-    <system.diagnostics>
-	  <switches>
-		<add name="NTrace" value="4" />
-	  </switches>
-	  <trace autoflush="true" indentsize="4">
-		<listeners>
-<!--
-			<add name="NUnitInternalTrace" type="System.Diagnostics.TextWriterTraceListener" 
-				initializeData="C:\NUnitPrimaryTrace.txt"/>
--->
-		</listeners>
-	  </trace>
-	</system.diagnostics>
-	
-	<!-- 
-     The startup section may be used to specify the runtime versions 
-     supported in the order that they will be used if more than one
-     is present. As supplied, this section is commented out, which
-     causes nunit-console to use the version of the framework with
-     which it was built.
-  	 
-	 Since .NET 1.0 does not recognize the <supportedRuntime> elements,
-	 a <requiredRuntime> element is used in case it is the only version
-	 of the framework that is installed.
-    -->
-	<startup>
-	  <supportedRuntime version="v2.0.50727" />
-	</startup>
-
-   <!--
-    The following <runtime> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0version 1
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file.
-   -->
-  
- <runtime>
-
-   <legacyUnhandledExceptionPolicy enabled="1" />
-
-   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-			appliesTo="v1.0.3705">
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Data" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Drawing" 
-                          publicKeyToken="b03f5f7f11d50a3a" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Windows.Forms" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Xml" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-
-  </runtime>
-  
-</configuration>
+<?xml version="1.0" encoding="Windows-1252"?>
+<configuration>
+
+	<!-- Do not remove. Sets up configsectionhandler section for log4net -->
+    <configSections>
+        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
+    </configSections>
+
+	<!--
+     Application settings for NUnit-console.exe. Do NOT put settings
+	 for use by your tests here.
+	-->
+	<appSettings>
+
+	<!--
+	 Specify the location to be used by .NET for the cache
+	-->
+    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
+  
+	</appSettings>
+  
+    <system.diagnostics>
+	  <switches>
+		<add name="NTrace" value="4" />
+	  </switches>
+	  <trace autoflush="true" indentsize="4">
+		<listeners>
+<!--
+			<add name="NUnitInternalTrace" type="System.Diagnostics.TextWriterTraceListener" 
+				initializeData="C:\NUnitPrimaryTrace.txt"/>
+-->
+		</listeners>
+	  </trace>
+	</system.diagnostics>
+	
+	<!-- 
+     The startup section may be used to specify the runtime versions 
+     supported in the order that they will be used if more than one
+     is present. As supplied, this section is commented out, which
+     causes nunit-console to use the version of the framework with
+     which it was built.
+  	 
+	 Since .NET 1.0 does not recognize the <supportedRuntime> elements,
+	 a <requiredRuntime> element is used in case it is the only version
+	 of the framework that is installed.
+    -->
+	<startup>
+	  <supportedRuntime version="v2.0.50727" />
+	</startup>
+
+   <!--
+    The following <runtime> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0version 1
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file.
+   -->
+  
+ <runtime>
+
+   <legacyUnhandledExceptionPolicy enabled="1" />
+
+   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+			appliesTo="v1.0.3705">
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Data" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Drawing" 
+                          publicKeyToken="b03f5f7f11d50a3a" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Windows.Forms" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Xml" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+
+  </runtime>
+  
+</configuration>
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.config.net_3_5
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.config.net_3_5
@@ -1,111 +1,111 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<configuration>
-
-	<!-- Do not remove. Sets up configsectionhandler section for log4net -->
-    <configSections>
-        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
-    </configSections>
-
-	<!--
-     Application settings for NUnit-console.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-	<appSettings>
-
-	<!--
-	 Specify the location to be used by .NET for the cache
-	-->
-    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
-  
-	</appSettings>
-  
-    <system.diagnostics>
-	  <switches>
-		<add name="NTrace" value="4" />
-	  </switches>
-	  <trace autoflush="true" indentsize="4">
-		<listeners>
-<!--
-			<add name="NUnitInternalTrace" type="System.Diagnostics.TextWriterTraceListener" 
-				initializeData="C:\NUnitPrimaryTrace.txt"/>
--->
-		</listeners>
-	  </trace>
-	</system.diagnostics>
-	
-	<!-- 
-     The startup section may be used to specify the runtime versions 
-     supported in the order that they will be used if more than one
-     is present. As supplied, this section is commented out, which
-     causes nunit-console to use the version of the framework with
-     which it was built.
-  	 
-	 Since .NET 1.0 does not recognize the <supportedRuntime> elements,
-	 a <requiredRuntime> element is used in case it is the only version
-	 of the framework that is installed.
-    -->
-	<startup>
-	  <supportedRuntime version="v2.0.50727" />
-	</startup>
-
-   <!--
-    The following <runtime> section allows running nunit under 
-    .NET 1.0 by redirecting assemblies. The appliesTo attribute
-    causes the section to be ignored except under .NET 1.0version 1
-    on a machine with only the .NET version 1.0 runtime installed.
-    If application and its tests were built for .NET 1.1 you will
-    also need to redirect system assemblies in the test config file.
-   -->
-  
- <runtime>
-
-   <legacyUnhandledExceptionPolicy enabled="1" />
-
-   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
-			appliesTo="v1.0.3705">
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Data" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Drawing" 
-                          publicKeyToken="b03f5f7f11d50a3a" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Windows.Forms" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-      <dependentAssembly> 
-        <assemblyIdentity name="System.Xml" 
-                          publicKeyToken="b77a5c561934e089" 
-                          culture="neutral"/>
-        <bindingRedirect  oldVersion="1.0.5000.0" 
-                          newVersion="1.0.3300.0"/>
-      </dependentAssembly>
-
-    </assemblyBinding>
-
-  </runtime>
-  
-</configuration>
+<?xml version="1.0" encoding="Windows-1252"?>
+<configuration>
+
+	<!-- Do not remove. Sets up configsectionhandler section for log4net -->
+    <configSections>
+        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
+    </configSections>
+
+	<!--
+     Application settings for NUnit-console.exe. Do NOT put settings
+	 for use by your tests here.
+	-->
+	<appSettings>
+
+	<!--
+	 Specify the location to be used by .NET for the cache
+	-->
+    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
+  
+	</appSettings>
+  
+    <system.diagnostics>
+	  <switches>
+		<add name="NTrace" value="4" />
+	  </switches>
+	  <trace autoflush="true" indentsize="4">
+		<listeners>
+<!--
+			<add name="NUnitInternalTrace" type="System.Diagnostics.TextWriterTraceListener" 
+				initializeData="C:\NUnitPrimaryTrace.txt"/>
+-->
+		</listeners>
+	  </trace>
+	</system.diagnostics>
+	
+	<!-- 
+     The startup section may be used to specify the runtime versions 
+     supported in the order that they will be used if more than one
+     is present. As supplied, this section is commented out, which
+     causes nunit-console to use the version of the framework with
+     which it was built.
+  	 
+	 Since .NET 1.0 does not recognize the <supportedRuntime> elements,
+	 a <requiredRuntime> element is used in case it is the only version
+	 of the framework that is installed.
+    -->
+	<startup>
+	  <supportedRuntime version="v2.0.50727" />
+	</startup>
+
+   <!--
+    The following <runtime> section allows running nunit under 
+    .NET 1.0 by redirecting assemblies. The appliesTo attribute
+    causes the section to be ignored except under .NET 1.0version 1
+    on a machine with only the .NET version 1.0 runtime installed.
+    If application and its tests were built for .NET 1.1 you will
+    also need to redirect system assemblies in the test config file.
+   -->
+  
+ <runtime>
+
+   <legacyUnhandledExceptionPolicy enabled="1" />
+
+   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
+			appliesTo="v1.0.3705">
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Data" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Drawing" 
+                          publicKeyToken="b03f5f7f11d50a3a" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Windows.Forms" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+      <dependentAssembly> 
+        <assemblyIdentity name="System.Xml" 
+                          publicKeyToken="b77a5c561934e089" 
+                          culture="neutral"/>
+        <bindingRedirect  oldVersion="1.0.5000.0" 
+                          newVersion="1.0.3300.0"/>
+      </dependentAssembly>
+
+    </assemblyBinding>
+
+  </runtime>
+  
+</configuration>
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe.csproj
@@ -1,124 +1,124 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = "App.ico"
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit-console"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Exe"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.ConsoleRunner"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-                <Reference
-                    Name = "nunit-console"
-                    Project = "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "nunit.core.extensions.dll"
-                    Project = "{98B10E98-003C-45A0-9587-119142E39986}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "app.config"
-                    BuildAction = "None"
-                />
-                <File
-                    RelPath = "App.ico"
-                    BuildAction = "Content"
-                />
-                <File
-                    RelPath = "assemblyinfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Class1.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = "App.ico"
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit-console"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Exe"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.ConsoleRunner"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+                <Reference
+                    Name = "nunit-console"
+                    Project = "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "nunit.core.extensions.dll"
+                    Project = "{98B10E98-003C-45A0-9587-119142E39986}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "app.config"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "App.ico"
+                    BuildAction = "Content"
+                />
+                <File
+                    RelPath = "assemblyinfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Class1.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console-exe/nunit-console.exe_VS2005.csproj
@@ -1,79 +1,79 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>App.ico</ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit-console</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Exe</OutputType>
-    <RootNamespace>NUnit.ConsoleRunner</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <Optimize>true</Optimize>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="app.config" />
-    <Content Include="App.ico" />
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="Class1.cs">
-      <SubType>Code</SubType>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\NUnitExtensions\core\nunit.core.extensions.dll_VS2005.csproj">
-      <Project>{98B10E98-003C-45A0-9587-119142E39986}</Project>
-      <Name>nunit.core.extensions.dll_VS2005</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\nunit-console\nunit-console_VS2005.csproj">
-      <Project>{9367EC89-6A38-42BA-9607-0DC288E4BC3A}</Project>
-      <Name>nunit-console_VS2005</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>App.ico</ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit-console</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>NUnit.ConsoleRunner</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <Optimize>true</Optimize>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <Content Include="App.ico" />
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="Class1.cs">
+      <SubType>Code</SubType>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\NUnitExtensions\core\nunit.core.extensions.dll_VS2005.csproj">
+      <Project>{98B10E98-003C-45A0-9587-119142E39986}</Project>
+      <Name>nunit.core.extensions.dll_VS2005</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\nunit-console\nunit-console_VS2005.csproj">
+      <Project>{9367EC89-6A38-42BA-9607-0DC288E4BC3A}</Project>
+      <Name>nunit-console_VS2005</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console/AssemblyInfo.cs
@@ -1,11 +1,11 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.Reflection;
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.Reflection;
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console/ConsoleOptions.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console/ConsoleOptions.cs
@@ -1,127 +1,127 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.ConsoleRunner
-{
-	using System;
-	using Codeblast;
-	using NUnit.Util;
-
-	public class ConsoleOptions : CommandLineOptions
-	{
-		public enum DomainUsage
-		{
-			Default,
-			None,
-			Single,
-			Multiple
-		}
-
-		[Option(Short="load", Description = "Test fixture to be loaded")]
-		public string fixture;
-
-		[Option(Description = "Name of the test to run")]
-		public string run;
-
-		[Option(Description = "Project configuration to load")]
-		public string config;
-
-		[Option(Description = "Name of XML output file")]
-		public string xml;
-
-		[Option(Description = "Name of transform file")]
-		public string transform;
-
-		[Option(Description = "Display XML to the console")]
-		public bool xmlConsole;
-
-		[Option(Short="out", Description = "File to receive test output")]
-		public string output;
-
-		[Option(Description = "File to receive test error output")]
-		public string err;
-
-		[Option(Description = "Label each test in stdOut")]
-		public bool labels = false;
-
-		[Option(Description = "List of categories to include")]
-		public string include;
-
-		[Option(Description = "List of categories to exclude")]
-		public string exclude;
-
-//		[Option(Description = "Run in a separate process")]
-//		public bool process;
-
-		[Option(Description = "AppDomain Usage for Tests")]
-		public DomainUsage domain;
-
-		[Option(Description = "Disable shadow copy when running in separate domain")]
-		public bool noshadow;
-
-		[Option (Description = "Disable use of a separate thread for tests")]
-		public bool nothread;
-
-		[Option(Description = "Wait for input before closing console window")]
-		public bool wait = false;
-
-		[Option(Description = "Do not display the logo")]
-		public bool nologo = false;
-
-		[Option(Description = "Do not display progress" )]
-		public bool nodots = false;
-
-		[Option(Short="?", Description = "Display help")]
-		public bool help = false;
-
-		public ConsoleOptions( params string[] args ) : base( args ) {}
-
-		public ConsoleOptions( bool allowForwardSlash, params string[] args ) : base( allowForwardSlash, args ) {}
-
-		public bool Validate()
-		{
-			if(isInvalid) return false; 
-
-			if(NoArgs) return true; 
-
-			if(ParameterCount >= 1) return true; 
-
-			return false;
-		}
-
-		protected override bool IsValidParameter(string parm)
-		{
-			return NUnitProject.CanLoadAsProject( parm ) || PathUtils.IsAssemblyFileType( parm );
-		}
-
-
-        public bool IsTestProject
-        {
-            get
-            {
-                return ParameterCount == 1 && NUnitProject.CanLoadAsProject((string)Parameters[0]);
-            }
-        }
-
-		public override void Help()
-		{
-			Console.WriteLine();
-			Console.WriteLine( "NUNIT-CONSOLE [inputfiles] [options]" );
-			Console.WriteLine();
-			Console.WriteLine( "Runs a set of NUnit tests from the console." );
-			Console.WriteLine();
-			Console.WriteLine( "You may specify one or more assemblies or a single" );
-			Console.WriteLine( "project file of type .nunit." );
-			Console.WriteLine();
-			Console.WriteLine( "Options:" );
-			base.Help();
-			Console.WriteLine();
-			Console.WriteLine( "Options that take values may use an equal sign, a colon" );
-			Console.WriteLine( "or a space to separate the option from its value." );
-			Console.WriteLine();
-		}
-	}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.ConsoleRunner
+{
+	using System;
+	using Codeblast;
+	using NUnit.Util;
+
+	public class ConsoleOptions : CommandLineOptions
+	{
+		public enum DomainUsage
+		{
+			Default,
+			None,
+			Single,
+			Multiple
+		}
+
+		[Option(Short="load", Description = "Test fixture to be loaded")]
+		public string fixture;
+
+		[Option(Description = "Name of the test to run")]
+		public string run;
+
+		[Option(Description = "Project configuration to load")]
+		public string config;
+
+		[Option(Description = "Name of XML output file")]
+		public string xml;
+
+		[Option(Description = "Name of transform file")]
+		public string transform;
+
+		[Option(Description = "Display XML to the console")]
+		public bool xmlConsole;
+
+		[Option(Short="out", Description = "File to receive test output")]
+		public string output;
+
+		[Option(Description = "File to receive test error output")]
+		public string err;
+
+		[Option(Description = "Label each test in stdOut")]
+		public bool labels = false;
+
+		[Option(Description = "List of categories to include")]
+		public string include;
+
+		[Option(Description = "List of categories to exclude")]
+		public string exclude;
+
+//		[Option(Description = "Run in a separate process")]
+//		public bool process;
+
+		[Option(Description = "AppDomain Usage for Tests")]
+		public DomainUsage domain;
+
+		[Option(Description = "Disable shadow copy when running in separate domain")]
+		public bool noshadow;
+
+		[Option (Description = "Disable use of a separate thread for tests")]
+		public bool nothread;
+
+		[Option(Description = "Wait for input before closing console window")]
+		public bool wait = false;
+
+		[Option(Description = "Do not display the logo")]
+		public bool nologo = false;
+
+		[Option(Description = "Do not display progress" )]
+		public bool nodots = false;
+
+		[Option(Short="?", Description = "Display help")]
+		public bool help = false;
+
+		public ConsoleOptions( params string[] args ) : base( args ) {}
+
+		public ConsoleOptions( bool allowForwardSlash, params string[] args ) : base( allowForwardSlash, args ) {}
+
+		public bool Validate()
+		{
+			if(isInvalid) return false; 
+
+			if(NoArgs) return true; 
+
+			if(ParameterCount >= 1) return true; 
+
+			return false;
+		}
+
+		protected override bool IsValidParameter(string parm)
+		{
+			return NUnitProject.CanLoadAsProject( parm ) || PathUtils.IsAssemblyFileType( parm );
+		}
+
+
+        public bool IsTestProject
+        {
+            get
+            {
+                return ParameterCount == 1 && NUnitProject.CanLoadAsProject((string)Parameters[0]);
+            }
+        }
+
+		public override void Help()
+		{
+			Console.WriteLine();
+			Console.WriteLine( "NUNIT-CONSOLE [inputfiles] [options]" );
+			Console.WriteLine();
+			Console.WriteLine( "Runs a set of NUnit tests from the console." );
+			Console.WriteLine();
+			Console.WriteLine( "You may specify one or more assemblies or a single" );
+			Console.WriteLine( "project file of type .nunit." );
+			Console.WriteLine();
+			Console.WriteLine( "Options:" );
+			base.Help();
+			Console.WriteLine();
+			Console.WriteLine( "Options that take values may use an equal sign, a colon" );
+			Console.WriteLine( "or a space to separate the option from its value." );
+			Console.WriteLine();
+		}
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console/ConsoleUi.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console/ConsoleUi.cs
@@ -1,279 +1,279 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.ConsoleRunner
-{
-	using System;
-	using System.IO;
-	using System.Reflection;
-	using System.Xml;
-	using System.Resources;
-	using System.Text;
-	using NUnit.Core;
-	using NUnit.Core.Filters;
-	using NUnit.Util;
-	
-	/// <summary>
-	/// Summary description for ConsoleUi.
-	/// </summary>
-	public class ConsoleUi
-	{
-		public static readonly int OK = 0;
-		public static readonly int INVALID_ARG = -1;
-		public static readonly int FILE_NOT_FOUND = -2;
-		public static readonly int FIXTURE_NOT_FOUND = -3;
-		public static readonly int TRANSFORM_ERROR = -4;
-		public static readonly int UNEXPECTED_ERROR = -100;
-
-		public ConsoleUi()
-		{
-		}
-
-		public int Execute( ConsoleOptions options )
-		{
-			XmlTextReader transformReader = GetTransformReader(options);
-			if(transformReader == null) return FILE_NOT_FOUND;
-
-			TextWriter outWriter = Console.Out;
-			bool redirectOutput = options.output != null && options.output != string.Empty;
-			if ( redirectOutput )
-			{
-				StreamWriter outStreamWriter = new StreamWriter( options.output );
-				outStreamWriter.AutoFlush = true;
-				outWriter = outStreamWriter;
-			}
-
-			TextWriter errorWriter = Console.Error;
-			bool redirectError = options.err != null && options.err != string.Empty;
-			if ( redirectError )
-			{
-				StreamWriter errorStreamWriter = new StreamWriter( options.err );
-				errorStreamWriter.AutoFlush = true;
-				errorWriter = errorStreamWriter;
-			}
-
-			TestRunner testRunner = MakeRunnerFromCommandLine( options );
-
-			try
-			{
-				if (testRunner.Test == null)
-				{
-					testRunner.Unload();
-					Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture);
-					return FIXTURE_NOT_FOUND;
-				}
-
-				EventCollector collector = new EventCollector( options, outWriter, errorWriter );
-
-				TestFilter testFilter = TestFilter.Empty;
-				if ( options.run != null && options.run != string.Empty )
-				{
-					Console.WriteLine( "Selected test: " + options.run );
-					testFilter = new SimpleNameFilter( options.run );
-				}
-
-				if ( options.include != null && options.include != string.Empty )
-				{
-					Console.WriteLine( "Included categories: " + options.include );
-					TestFilter includeFilter = new CategoryExpression( options.include ).Filter;
-					if ( testFilter.IsEmpty )
-						testFilter = includeFilter;
-					else
-						testFilter = new AndFilter( testFilter, includeFilter );
-				}
-
-				if ( options.exclude != null && options.exclude != string.Empty )
-				{
-					Console.WriteLine( "Excluded categories: " + options.exclude );
-					TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter );
-					if ( testFilter.IsEmpty )
-						testFilter = excludeFilter;
-					else if ( testFilter is AndFilter )
-						((AndFilter)testFilter).Add( excludeFilter );
-					else
-						testFilter = new AndFilter( testFilter, excludeFilter );
-				}
-
-				testFilter = BabysitterSupport.AddBabysitterFilter(testFilter);
-
-				TestResult result = null;
-				string savedDirectory = Environment.CurrentDirectory;
-				TextWriter savedOut = Console.Out;
-				TextWriter savedError = Console.Error;
-
-				try
-				{
-					result = testRunner.Run( collector, testFilter );
-				}
-				finally
-				{
-					outWriter.Flush();
-					errorWriter.Flush();
-
-					if ( redirectOutput )
-						outWriter.Close();
-					if ( redirectError )
-						errorWriter.Close();
-
-					Environment.CurrentDirectory = savedDirectory;
-					Console.SetOut( savedOut );
-					Console.SetError( savedError );
-				}
-
-				Console.WriteLine();
-
-				if (result != null) {
-					string xmlOutput = CreateXmlOutput( result );
-
-					if (options.xmlConsole)
-					{
-						Console.WriteLine(xmlOutput);
-					}
-					else
-					{
-						try
-						{
-							//CreateSummaryDocument(xmlOutput, transformReader );
-							XmlResultTransform xform = new XmlResultTransform( transformReader );
-							xform.Transform( new StringReader( xmlOutput ), Console.Out );
-						}
-						catch( Exception ex )
-						{
-							Console.WriteLine( "Error: {0}", ex.Message );
-							return TRANSFORM_ERROR;
-						}
-					}
-
-					// Write xml output here
-					string xmlResultFile = options.xml == null || options.xml == string.Empty
-						? "TestResult.xml" : options.xml;
-
-					using ( StreamWriter writer = new StreamWriter( xmlResultFile ) )
-					{
-						writer.Write(xmlOutput);
-					}
-				}
-
-				//if ( testRunner != null )
-				//    testRunner.Unload();
-
-				if ( result == null || collector.HasExceptions )
-				{
-					collector.WriteExceptions();
-					return UNEXPECTED_ERROR;
-				}
-            
-				if ( !result.IsFailure ) return OK;
-
-				ResultSummarizer summ = new ResultSummarizer( result );
-				return summ.FailureCount;
-			}
-			finally
-			{
-				testRunner.Unload();
-			}
-		}
-
-		#region Helper Methods
-		private static XmlTextReader GetTransformReader(ConsoleOptions parser)
-		{
-			XmlTextReader reader = null;
-			if(parser.transform == null || parser.transform == string.Empty)
-			{
-				Assembly assembly = Assembly.GetAssembly(typeof(XmlResultVisitor));
-				ResourceManager resourceManager = new ResourceManager("NUnit.Util.Transform",assembly);
-				string xmlData = (string)resourceManager.GetObject("Summary.xslt");
-
-				reader = new XmlTextReader(new StringReader(xmlData));
-			}
-			else
-			{
-				FileInfo xsltInfo = new FileInfo(parser.transform);
-				if(!xsltInfo.Exists)
-				{
-					Console.Error.WriteLine("Transform file: {0} does not exist", xsltInfo.FullName);
-					reader = null;
-				}
-				else
-				{
-					reader = new XmlTextReader(xsltInfo.FullName);
-				}
-			}
-
-			return reader;
-		}
-
-		private static TestRunner MakeRunnerFromCommandLine( ConsoleOptions options )
-		{
-			TestPackage package;
-			ConsoleOptions.DomainUsage domainUsage = ConsoleOptions.DomainUsage.Default;
-
-			if (options.IsTestProject)
-			{
-				NUnitProject project = NUnitProject.LoadProject((string)options.Parameters[0]);
-				string configName = options.config;
-				if (configName != null)
-					project.SetActiveConfig(configName);
-
-				package = project.ActiveConfig.MakeTestPackage();
-				package.TestName = options.fixture;
-
-				domainUsage = ConsoleOptions.DomainUsage.Single;
-			}
-			else if (options.Parameters.Count == 1)
-			{
-				package = new TestPackage((string)options.Parameters[0]);
-				domainUsage = ConsoleOptions.DomainUsage.Single;
-			}
-			else
-			{
-				package = new TestPackage("UNNAMED", options.Parameters);
-				domainUsage = ConsoleOptions.DomainUsage.Multiple;
-			}
-
-			if (options.domain != ConsoleOptions.DomainUsage.Default)
-				domainUsage = options.domain;
-                    
-			TestRunner testRunner = null;
-				
-			switch( domainUsage )
-			{
-				case ConsoleOptions.DomainUsage.None:
-					testRunner = new NUnit.Core.RemoteTestRunner();
-					// Make sure that addins are available
-					CoreExtensions.Host.AddinRegistry = Services.AddinRegistry;
-					break;
-
-				case ConsoleOptions.DomainUsage.Single:
-					testRunner = new TestDomain();
-					break;
-
-				case ConsoleOptions.DomainUsage.Multiple:
-					testRunner = new MultipleTestDomainRunner();
-					break;
-			}
-
-			package.TestName = options.fixture;
-			package.Settings["ShadowCopyFiles"] = !options.noshadow;
-			package.Settings["UseThreadedRunner"] = !options.nothread;
-			testRunner.Load( package );
-
-			return testRunner;
-		}
-
-		private static string CreateXmlOutput( TestResult result )
-		{
-			StringBuilder builder = new StringBuilder();
-			XmlResultVisitor resultVisitor = new XmlResultVisitor(new StringWriter( builder ), result);
-			result.Accept(resultVisitor);
-			resultVisitor.Write();
-
-			return builder.ToString();
-		}
-		#endregion
-	}
-}
-
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.ConsoleRunner
+{
+	using System;
+	using System.IO;
+	using System.Reflection;
+	using System.Xml;
+	using System.Resources;
+	using System.Text;
+	using NUnit.Core;
+	using NUnit.Core.Filters;
+	using NUnit.Util;
+	
+	/// <summary>
+	/// Summary description for ConsoleUi.
+	/// </summary>
+	public class ConsoleUi
+	{
+		public static readonly int OK = 0;
+		public static readonly int INVALID_ARG = -1;
+		public static readonly int FILE_NOT_FOUND = -2;
+		public static readonly int FIXTURE_NOT_FOUND = -3;
+		public static readonly int TRANSFORM_ERROR = -4;
+		public static readonly int UNEXPECTED_ERROR = -100;
+
+		public ConsoleUi()
+		{
+		}
+
+		public int Execute( ConsoleOptions options )
+		{
+			XmlTextReader transformReader = GetTransformReader(options);
+			if(transformReader == null) return FILE_NOT_FOUND;
+
+			TextWriter outWriter = Console.Out;
+			bool redirectOutput = options.output != null && options.output != string.Empty;
+			if ( redirectOutput )
+			{
+				StreamWriter outStreamWriter = new StreamWriter( options.output );
+				outStreamWriter.AutoFlush = true;
+				outWriter = outStreamWriter;
+			}
+
+			TextWriter errorWriter = Console.Error;
+			bool redirectError = options.err != null && options.err != string.Empty;
+			if ( redirectError )
+			{
+				StreamWriter errorStreamWriter = new StreamWriter( options.err );
+				errorStreamWriter.AutoFlush = true;
+				errorWriter = errorStreamWriter;
+			}
+
+			TestRunner testRunner = MakeRunnerFromCommandLine( options );
+
+			try
+			{
+				if (testRunner.Test == null)
+				{
+					testRunner.Unload();
+					Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture);
+					return FIXTURE_NOT_FOUND;
+				}
+
+				EventCollector collector = new EventCollector( options, outWriter, errorWriter );
+
+				TestFilter testFilter = TestFilter.Empty;
+				if ( options.run != null && options.run != string.Empty )
+				{
+					Console.WriteLine( "Selected test: " + options.run );
+					testFilter = new SimpleNameFilter( options.run );
+				}
+
+				if ( options.include != null && options.include != string.Empty )
+				{
+					Console.WriteLine( "Included categories: " + options.include );
+					TestFilter includeFilter = new CategoryExpression( options.include ).Filter;
+					if ( testFilter.IsEmpty )
+						testFilter = includeFilter;
+					else
+						testFilter = new AndFilter( testFilter, includeFilter );
+				}
+
+				if ( options.exclude != null && options.exclude != string.Empty )
+				{
+					Console.WriteLine( "Excluded categories: " + options.exclude );
+					TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter );
+					if ( testFilter.IsEmpty )
+						testFilter = excludeFilter;
+					else if ( testFilter is AndFilter )
+						((AndFilter)testFilter).Add( excludeFilter );
+					else
+						testFilter = new AndFilter( testFilter, excludeFilter );
+				}
+
+				testFilter = BabysitterSupport.AddBabysitterFilter(testFilter);
+
+				TestResult result = null;
+				string savedDirectory = Environment.CurrentDirectory;
+				TextWriter savedOut = Console.Out;
+				TextWriter savedError = Console.Error;
+
+				try
+				{
+					result = testRunner.Run( collector, testFilter );
+				}
+				finally
+				{
+					outWriter.Flush();
+					errorWriter.Flush();
+
+					if ( redirectOutput )
+						outWriter.Close();
+					if ( redirectError )
+						errorWriter.Close();
+
+					Environment.CurrentDirectory = savedDirectory;
+					Console.SetOut( savedOut );
+					Console.SetError( savedError );
+				}
+
+				Console.WriteLine();
+
+				if (result != null) {
+					string xmlOutput = CreateXmlOutput( result );
+
+					if (options.xmlConsole)
+					{
+						Console.WriteLine(xmlOutput);
+					}
+					else
+					{
+						try
+						{
+							//CreateSummaryDocument(xmlOutput, transformReader );
+							XmlResultTransform xform = new XmlResultTransform( transformReader );
+							xform.Transform( new StringReader( xmlOutput ), Console.Out );
+						}
+						catch( Exception ex )
+						{
+							Console.WriteLine( "Error: {0}", ex.Message );
+							return TRANSFORM_ERROR;
+						}
+					}
+
+					// Write xml output here
+					string xmlResultFile = options.xml == null || options.xml == string.Empty
+						? "TestResult.xml" : options.xml;
+
+					using ( StreamWriter writer = new StreamWriter( xmlResultFile ) )
+					{
+						writer.Write(xmlOutput);
+					}
+				}
+
+				//if ( testRunner != null )
+				//    testRunner.Unload();
+
+				if ( result == null || collector.HasExceptions )
+				{
+					collector.WriteExceptions();
+					return UNEXPECTED_ERROR;
+				}
+            
+				if ( !result.IsFailure ) return OK;
+
+				ResultSummarizer summ = new ResultSummarizer( result );
+				return summ.FailureCount;
+			}
+			finally
+			{
+				testRunner.Unload();
+			}
+		}
+
+		#region Helper Methods
+		private static XmlTextReader GetTransformReader(ConsoleOptions parser)
+		{
+			XmlTextReader reader = null;
+			if(parser.transform == null || parser.transform == string.Empty)
+			{
+				Assembly assembly = Assembly.GetAssembly(typeof(XmlResultVisitor));
+				ResourceManager resourceManager = new ResourceManager("NUnit.Util.Transform",assembly);
+				string xmlData = (string)resourceManager.GetObject("Summary.xslt");
+
+				reader = new XmlTextReader(new StringReader(xmlData));
+			}
+			else
+			{
+				FileInfo xsltInfo = new FileInfo(parser.transform);
+				if(!xsltInfo.Exists)
+				{
+					Console.Error.WriteLine("Transform file: {0} does not exist", xsltInfo.FullName);
+					reader = null;
+				}
+				else
+				{
+					reader = new XmlTextReader(xsltInfo.FullName);
+				}
+			}
+
+			return reader;
+		}
+
+		private static TestRunner MakeRunnerFromCommandLine( ConsoleOptions options )
+		{
+			TestPackage package;
+			ConsoleOptions.DomainUsage domainUsage = ConsoleOptions.DomainUsage.Default;
+
+			if (options.IsTestProject)
+			{
+				NUnitProject project = NUnitProject.LoadProject((string)options.Parameters[0]);
+				string configName = options.config;
+				if (configName != null)
+					project.SetActiveConfig(configName);
+
+				package = project.ActiveConfig.MakeTestPackage();
+				package.TestName = options.fixture;
+
+				domainUsage = ConsoleOptions.DomainUsage.Single;
+			}
+			else if (options.Parameters.Count == 1)
+			{
+				package = new TestPackage((string)options.Parameters[0]);
+				domainUsage = ConsoleOptions.DomainUsage.Single;
+			}
+			else
+			{
+				package = new TestPackage("UNNAMED", options.Parameters);
+				domainUsage = ConsoleOptions.DomainUsage.Multiple;
+			}
+
+			if (options.domain != ConsoleOptions.DomainUsage.Default)
+				domainUsage = options.domain;
+                    
+			TestRunner testRunner = null;
+				
+			switch( domainUsage )
+			{
+				case ConsoleOptions.DomainUsage.None:
+					testRunner = new NUnit.Core.RemoteTestRunner();
+					// Make sure that addins are available
+					CoreExtensions.Host.AddinRegistry = Services.AddinRegistry;
+					break;
+
+				case ConsoleOptions.DomainUsage.Single:
+					testRunner = new TestDomain();
+					break;
+
+				case ConsoleOptions.DomainUsage.Multiple:
+					testRunner = new MultipleTestDomainRunner();
+					break;
+			}
+
+			package.TestName = options.fixture;
+			package.Settings["ShadowCopyFiles"] = !options.noshadow;
+			package.Settings["UseThreadedRunner"] = !options.nothread;
+			testRunner.Load( package );
+
+			return testRunner;
+		}
+
+		private static string CreateXmlOutput( TestResult result )
+		{
+			StringBuilder builder = new StringBuilder();
+			XmlResultVisitor resultVisitor = new XmlResultVisitor(new StringWriter( builder ), result);
+			result.Accept(resultVisitor);
+			resultVisitor.Write();
+
+			return builder.ToString();
+		}
+		#endregion
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console/EventCollector.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console/EventCollector.cs
@@ -1,211 +1,211 @@
-using System;
-using System.IO;
-using System.Diagnostics;
-using System.Text.RegularExpressions;
-using System.Collections;
-using System.Collections.Specialized;
-using NUnit.Core;
-using NUnit.Util;
-
-namespace NUnit.ConsoleRunner
-{
-	/// <summary>
-	/// Summary description for EventCollector.
-	/// </summary>
-	public class EventCollector : MarshalByRefObject, EventListener
-	{
-		private int testRunCount;
-		private int testIgnoreCount;
-		private int failureCount;
-		private int level;
-
-		private ConsoleOptions options;
-		private TextWriter outWriter;
-		private TextWriter errorWriter;
-
-		StringCollection messages;
-		
-		private bool progress = false;
-		private string currentTestName;
-
-		private ArrayList unhandledExceptions = new ArrayList();
-
-		public EventCollector( ConsoleOptions options, TextWriter outWriter, TextWriter errorWriter )
-		{
-			level = 0;
-			this.options = options;
-			this.outWriter = outWriter;
-			this.errorWriter = errorWriter;
-			this.currentTestName = string.Empty;
-			this.progress = !options.xmlConsole && !options.labels && !options.nodots;
-
-			AppDomain.CurrentDomain.UnhandledException += 
-				new UnhandledExceptionEventHandler(OnUnhandledException);
-		}
-
-		public bool HasExceptions
-		{
-			get { return unhandledExceptions.Count > 0; }
-		}
-
-		public void WriteExceptions()
-		{
-			Console.WriteLine();
-			Console.WriteLine("Unhandled exceptions:");
-			int index = 1;
-			foreach( string msg in unhandledExceptions )
-				Console.WriteLine( "{0}) {1}", index++, msg );
-		}
-
-		public void RunStarted(string name, int testCount)
-		{
-		}
-
-		public void RunFinished(TestResult result)
-		{
-		}
-
-		public void RunFinished(Exception exception)
-		{
-		}
-
-		public void TestFinished(TestCaseResult testResult)
-		{
-			if(testResult.Executed)
-			{
-				testRunCount++;
-
-				if(testResult.IsFailure)
-				{	
-					failureCount++;
-						
-					if ( progress )
-						Console.Write("F");
-						
-					messages.Add( string.Format( "{0}) {1} :", failureCount, testResult.Test.TestName.FullName ) );
-					messages.Add( testResult.Message.Trim( Environment.NewLine.ToCharArray() ) );
-
-					string stackTrace = StackTraceFilter.Filter( testResult.StackTrace );
-					if ( stackTrace != null && stackTrace != string.Empty )
-					{
-						string[] trace = stackTrace.Split( System.Environment.NewLine.ToCharArray() );
-						foreach( string s in trace )
-						{
-							if ( s != string.Empty )
-							{
-								string link = Regex.Replace( s.Trim(), @".* in (.*):line (.*)", "$1($2)");
-								messages.Add( string.Format( "at\n{0}", link ) );
-							}
-						}
-					}
-
-					BabysitterSupport.RecordFailedTest(currentTestName);
-				}
-			}
-			else
-			{
-				testIgnoreCount++;
-					
-				if ( progress )
-					Console.Write("N");
-			}
-
-			currentTestName = string.Empty;
-		}
-
-		public void TestStarted(TestName testName)
-		{
-			currentTestName = testName.FullName;
-
-			if ( options.labels )
-				outWriter.WriteLine("***** {0}", currentTestName );
-				
-			if ( progress )
-				Console.Write(".");
-		}
-
-		public void SuiteStarted(TestName testName)
-		{
-			if ( level++ == 0 )
-			{
-				messages = new StringCollection();
-				testRunCount = 0;
-				testIgnoreCount = 0;
-				failureCount = 0;
-				Trace.WriteLine( "################################ UNIT TESTS ################################" );
-				Trace.WriteLine( "Running tests in '" + testName.FullName + "'..." );
-			}
-		}
-
-		public void SuiteFinished(TestSuiteResult suiteResult) 
-		{
-			if ( --level == 0) 
-			{
-				Trace.WriteLine( "############################################################################" );
-
-				if (messages.Count == 0) 
-				{
-					Trace.WriteLine( "##############                 S U C C E S S               #################" );
-				}
-				else 
-				{
-					Trace.WriteLine( "##############                F A I L U R E S              #################" );
-						
-					foreach ( string s in messages ) 
-					{
-						Trace.WriteLine(s);
-					}
-				}
-
-				Trace.WriteLine( "############################################################################" );
-				Trace.WriteLine( "Executed tests       : " + testRunCount );
-				Trace.WriteLine( "Ignored tests        : " + testIgnoreCount );
-				Trace.WriteLine( "Failed tests         : " + failureCount );
-				Trace.WriteLine( "Unhandled exceptions : " + unhandledExceptions.Count);
-				Trace.WriteLine( "Total time           : " + suiteResult.Time + " seconds" );
-				Trace.WriteLine( "############################################################################");
-			}
-		}
-
-		private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
-		{
-			if (e.ExceptionObject.GetType() != typeof(System.Threading.ThreadAbortException))
-			{
-				this.UnhandledException((Exception)e.ExceptionObject);
-			}
-		}
-
-
-		public void UnhandledException( Exception exception )
-		{
-			// If we do labels, we already have a newline
-			unhandledExceptions.Add(currentTestName + " : " + exception.ToString());
-			//if (!options.labels) outWriter.WriteLine();
-			string msg = string.Format("##### Unhandled Exception while running {0}", currentTestName);
-			//outWriter.WriteLine(msg);
-			//outWriter.WriteLine(exception.ToString());
-
-			Trace.WriteLine(msg);
-			Trace.WriteLine(exception.ToString());
-		}
-
-		public void TestOutput( TestOutput output)
-		{
-			switch ( output.Type )
-			{
-				case TestOutputType.Out:
-					outWriter.Write( output.Text );
-					break;
-				case TestOutputType.Error:
-					errorWriter.Write( output.Text );
-					break;
-			}
-		}
-
-
-		public override object InitializeLifetimeService()
-		{
-			return null;
-		}
-	}
-}
+using System;
+using System.IO;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
+using System.Collections;
+using System.Collections.Specialized;
+using NUnit.Core;
+using NUnit.Util;
+
+namespace NUnit.ConsoleRunner
+{
+	/// <summary>
+	/// Summary description for EventCollector.
+	/// </summary>
+	public class EventCollector : MarshalByRefObject, EventListener
+	{
+		private int testRunCount;
+		private int testIgnoreCount;
+		private int failureCount;
+		private int level;
+
+		private ConsoleOptions options;
+		private TextWriter outWriter;
+		private TextWriter errorWriter;
+
+		StringCollection messages;
+		
+		private bool progress = false;
+		private string currentTestName;
+
+		private ArrayList unhandledExceptions = new ArrayList();
+
+		public EventCollector( ConsoleOptions options, TextWriter outWriter, TextWriter errorWriter )
+		{
+			level = 0;
+			this.options = options;
+			this.outWriter = outWriter;
+			this.errorWriter = errorWriter;
+			this.currentTestName = string.Empty;
+			this.progress = !options.xmlConsole && !options.labels && !options.nodots;
+
+			AppDomain.CurrentDomain.UnhandledException += 
+				new UnhandledExceptionEventHandler(OnUnhandledException);
+		}
+
+		public bool HasExceptions
+		{
+			get { return unhandledExceptions.Count > 0; }
+		}
+
+		public void WriteExceptions()
+		{
+			Console.WriteLine();
+			Console.WriteLine("Unhandled exceptions:");
+			int index = 1;
+			foreach( string msg in unhandledExceptions )
+				Console.WriteLine( "{0}) {1}", index++, msg );
+		}
+
+		public void RunStarted(string name, int testCount)
+		{
+		}
+
+		public void RunFinished(TestResult result)
+		{
+		}
+
+		public void RunFinished(Exception exception)
+		{
+		}
+
+		public void TestFinished(TestCaseResult testResult)
+		{
+			if(testResult.Executed)
+			{
+				testRunCount++;
+
+				if(testResult.IsFailure)
+				{	
+					failureCount++;
+						
+					if ( progress )
+						Console.Write("F");
+						
+					messages.Add( string.Format( "{0}) {1} :", failureCount, testResult.Test.TestName.FullName ) );
+					messages.Add( testResult.Message.Trim( Environment.NewLine.ToCharArray() ) );
+
+					string stackTrace = StackTraceFilter.Filter( testResult.StackTrace );
+					if ( stackTrace != null && stackTrace != string.Empty )
+					{
+						string[] trace = stackTrace.Split( System.Environment.NewLine.ToCharArray() );
+						foreach( string s in trace )
+						{
+							if ( s != string.Empty )
+							{
+								string link = Regex.Replace( s.Trim(), @".* in (.*):line (.*)", "$1($2)");
+								messages.Add( string.Format( "at\n{0}", link ) );
+							}
+						}
+					}
+
+					BabysitterSupport.RecordFailedTest(currentTestName);
+				}
+			}
+			else
+			{
+				testIgnoreCount++;
+					
+				if ( progress )
+					Console.Write("N");
+			}
+
+			currentTestName = string.Empty;
+		}
+
+		public void TestStarted(TestName testName)
+		{
+			currentTestName = testName.FullName;
+
+			if ( options.labels )
+				outWriter.WriteLine("***** {0}", currentTestName );
+				
+			if ( progress )
+				Console.Write(".");
+		}
+
+		public void SuiteStarted(TestName testName)
+		{
+			if ( level++ == 0 )
+			{
+				messages = new StringCollection();
+				testRunCount = 0;
+				testIgnoreCount = 0;
+				failureCount = 0;
+				Trace.WriteLine( "################################ UNIT TESTS ################################" );
+				Trace.WriteLine( "Running tests in '" + testName.FullName + "'..." );
+			}
+		}
+
+		public void SuiteFinished(TestSuiteResult suiteResult) 
+		{
+			if ( --level == 0) 
+			{
+				Trace.WriteLine( "############################################################################" );
+
+				if (messages.Count == 0) 
+				{
+					Trace.WriteLine( "##############                 S U C C E S S               #################" );
+				}
+				else 
+				{
+					Trace.WriteLine( "##############                F A I L U R E S              #################" );
+						
+					foreach ( string s in messages ) 
+					{
+						Trace.WriteLine(s);
+					}
+				}
+
+				Trace.WriteLine( "############################################################################" );
+				Trace.WriteLine( "Executed tests       : " + testRunCount );
+				Trace.WriteLine( "Ignored tests        : " + testIgnoreCount );
+				Trace.WriteLine( "Failed tests         : " + failureCount );
+				Trace.WriteLine( "Unhandled exceptions : " + unhandledExceptions.Count);
+				Trace.WriteLine( "Total time           : " + suiteResult.Time + " seconds" );
+				Trace.WriteLine( "############################################################################");
+			}
+		}
+
+		private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
+		{
+			if (e.ExceptionObject.GetType() != typeof(System.Threading.ThreadAbortException))
+			{
+				this.UnhandledException((Exception)e.ExceptionObject);
+			}
+		}
+
+
+		public void UnhandledException( Exception exception )
+		{
+			// If we do labels, we already have a newline
+			unhandledExceptions.Add(currentTestName + " : " + exception.ToString());
+			//if (!options.labels) outWriter.WriteLine();
+			string msg = string.Format("##### Unhandled Exception while running {0}", currentTestName);
+			//outWriter.WriteLine(msg);
+			//outWriter.WriteLine(exception.ToString());
+
+			Trace.WriteLine(msg);
+			Trace.WriteLine(exception.ToString());
+		}
+
+		public void TestOutput( TestOutput output)
+		{
+			switch ( output.Type )
+			{
+				case TestOutputType.Out:
+					outWriter.Write( output.Text );
+					break;
+				case TestOutputType.Error:
+					errorWriter.Write( output.Text );
+					break;
+			}
+		}
+
+
+		public override object InitializeLifetimeService()
+		{
+			return null;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console/Runner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console/Runner.cs
@@ -1,117 +1,117 @@
-using System;
-using System.IO;
-using System.Reflection;
-using NUnit.Core;
-using NUnit.Util;
-
-
-namespace NUnit.ConsoleRunner
-{
-	/// <summary>
-	/// Summary description for Runner.
-	/// </summary>
-	public class Runner
-	{
-		[STAThread]
-		public static int Main(string[] args)
-		{
-			NTrace.Info( "NUnit-console.exe starting" );
-
-			ConsoleOptions options = new ConsoleOptions(args);
-			
-			if(!options.nologo)
-				WriteCopyright();
-
-			if(options.help)
-			{
-				options.Help();
-				return ConsoleUi.OK;
-			}
-			
-			if(options.NoArgs) 
-			{
-				Console.Error.WriteLine("fatal error: no inputs specified");
-				options.Help();
-				return ConsoleUi.OK;
-			}
-			
-			if(!options.Validate())
-			{
-				foreach( string arg in options.InvalidArguments )
-					Console.Error.WriteLine("fatal error: invalid argument: {0}", arg );
-				options.Help();
-				return ConsoleUi.INVALID_ARG;
-			}
-
-			// Add Standard Services to ServiceManager
-			ServiceManager.Services.AddService( new SettingsService() );
-			ServiceManager.Services.AddService( new DomainManager() );
-			//ServiceManager.Services.AddService( new RecentFilesService() );
-			//ServiceManager.Services.AddService( new TestLoader() );
-			ServiceManager.Services.AddService( new AddinRegistry() );
-			ServiceManager.Services.AddService( new AddinManager() );
-			// TODO: Resolve conflict with gui testagency when running
-			// console tests under the gui.
-			//ServiceManager.Services.AddService( new TestAgency() );
-
-			// Initialize Services
-			ServiceManager.Services.InitializeServices();
-
-			try
-			{
-				ConsoleUi consoleUi = new ConsoleUi();
-				return consoleUi.Execute( options );
-			}
-			catch( FileNotFoundException ex )
-			{
-				Console.WriteLine( ex.Message );
-				return ConsoleUi.FILE_NOT_FOUND;
-			}
-			catch( Exception ex )
-			{
-				Console.WriteLine( "Unhandled Exception:\n{0}", ex.ToString() );
-				return ConsoleUi.UNEXPECTED_ERROR;
-			}
-			finally
-			{
-				if(options.wait)
-				{
-					Console.Out.WriteLine("\nHit <enter> key to continue");
-					Console.ReadLine();
-				}
-
-				NTrace.Info( "NUnit-console.exe terminating" );
-			}
-
-		}
-
-		private static void WriteCopyright()
-		{
-			Assembly executingAssembly = Assembly.GetExecutingAssembly();
-			System.Version version = executingAssembly.GetName().Version;
-
-			string productName = "NUnit";
-			string copyrightText = "Copyright (C) 2002-2007 Charlie Poole.\r\nCopyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.\r\nCopyright (C) 2000-2002 Philip Craig.\r\nAll Rights Reserved.";
-
-			object[] objectAttrs = executingAssembly.GetCustomAttributes(typeof(AssemblyProductAttribute), false);
-			if ( objectAttrs.Length > 0 )
-				productName = ((AssemblyProductAttribute)objectAttrs[0]).Product;
-
-			objectAttrs = executingAssembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
-			if ( objectAttrs.Length > 0 )
-				copyrightText = ((AssemblyCopyrightAttribute)objectAttrs[0]).Copyright;
-
-			Console.WriteLine(String.Format("{0} version {1}", productName, version.ToString(3)));
-			Console.WriteLine(copyrightText);
-			Console.WriteLine();
-
-			Console.WriteLine( "Runtime Environment - " );
-			RuntimeFramework framework = RuntimeFramework.CurrentFramework;
-			Console.WriteLine( string.Format("   OS Version: {0}", Environment.OSVersion ) );
-			Console.WriteLine( string.Format("  CLR Version: {0} ( {1} )",
-				Environment.Version,  framework.GetDisplayName() ) );
-
-			Console.WriteLine();
-		}
-	}
-}
+using System;
+using System.IO;
+using System.Reflection;
+using NUnit.Core;
+using NUnit.Util;
+
+
+namespace NUnit.ConsoleRunner
+{
+	/// <summary>
+	/// Summary description for Runner.
+	/// </summary>
+	public class Runner
+	{
+		[STAThread]
+		public static int Main(string[] args)
+		{
+			NTrace.Info( "NUnit-console.exe starting" );
+
+			ConsoleOptions options = new ConsoleOptions(args);
+			
+			if(!options.nologo)
+				WriteCopyright();
+
+			if(options.help)
+			{
+				options.Help();
+				return ConsoleUi.OK;
+			}
+			
+			if(options.NoArgs) 
+			{
+				Console.Error.WriteLine("fatal error: no inputs specified");
+				options.Help();
+				return ConsoleUi.OK;
+			}
+			
+			if(!options.Validate())
+			{
+				foreach( string arg in options.InvalidArguments )
+					Console.Error.WriteLine("fatal error: invalid argument: {0}", arg );
+				options.Help();
+				return ConsoleUi.INVALID_ARG;
+			}
+
+			// Add Standard Services to ServiceManager
+			ServiceManager.Services.AddService( new SettingsService() );
+			ServiceManager.Services.AddService( new DomainManager() );
+			//ServiceManager.Services.AddService( new RecentFilesService() );
+			//ServiceManager.Services.AddService( new TestLoader() );
+			ServiceManager.Services.AddService( new AddinRegistry() );
+			ServiceManager.Services.AddService( new AddinManager() );
+			// TODO: Resolve conflict with gui testagency when running
+			// console tests under the gui.
+			//ServiceManager.Services.AddService( new TestAgency() );
+
+			// Initialize Services
+			ServiceManager.Services.InitializeServices();
+
+			try
+			{
+				ConsoleUi consoleUi = new ConsoleUi();
+				return consoleUi.Execute( options );
+			}
+			catch( FileNotFoundException ex )
+			{
+				Console.WriteLine( ex.Message );
+				return ConsoleUi.FILE_NOT_FOUND;
+			}
+			catch( Exception ex )
+			{
+				Console.WriteLine( "Unhandled Exception:\n{0}", ex.ToString() );
+				return ConsoleUi.UNEXPECTED_ERROR;
+			}
+			finally
+			{
+				if(options.wait)
+				{
+					Console.Out.WriteLine("\nHit <enter> key to continue");
+					Console.ReadLine();
+				}
+
+				NTrace.Info( "NUnit-console.exe terminating" );
+			}
+
+		}
+
+		private static void WriteCopyright()
+		{
+			Assembly executingAssembly = Assembly.GetExecutingAssembly();
+			System.Version version = executingAssembly.GetName().Version;
+
+			string productName = "NUnit";
+			string copyrightText = "Copyright (C) 2002-2007 Charlie Poole.\r\nCopyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.\r\nCopyright (C) 2000-2002 Philip Craig.\r\nAll Rights Reserved.";
+
+			object[] objectAttrs = executingAssembly.GetCustomAttributes(typeof(AssemblyProductAttribute), false);
+			if ( objectAttrs.Length > 0 )
+				productName = ((AssemblyProductAttribute)objectAttrs[0]).Product;
+
+			objectAttrs = executingAssembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
+			if ( objectAttrs.Length > 0 )
+				copyrightText = ((AssemblyCopyrightAttribute)objectAttrs[0]).Copyright;
+
+			Console.WriteLine(String.Format("{0} version {1}", productName, version.ToString(3)));
+			Console.WriteLine(copyrightText);
+			Console.WriteLine();
+
+			Console.WriteLine( "Runtime Environment - " );
+			RuntimeFramework framework = RuntimeFramework.CurrentFramework;
+			Console.WriteLine( string.Format("   OS Version: {0}", Environment.OSVersion ) );
+			Console.WriteLine( string.Format("  CLR Version: {0} ( {1} )",
+				Environment.Version,  framework.GetDisplayName() ) );
+
+			Console.WriteLine();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console/nunit-console.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console/nunit-console.csproj
@@ -1,140 +1,140 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit-console-runner"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.ConsoleRunner"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "true"
-                    NoStdLib = "false"
-                    NoWarn = "618"
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = "618"
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
-                />
-                <Reference
-                    Name = "nunit.util.dll"
-                    Project = "{61CE9CE5-943E-44D4-A381-814DC1406767}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "nunit.core.interfaces.dll"
-                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "nunit.core.dll"
-                    Project = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "App.ico"
-                    BuildAction = "Content"
-                />
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ConsoleOptions.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ConsoleUi.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "EventCollector.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Runner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit-console-runner"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.ConsoleRunner"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "true"
+                    NoStdLib = "false"
+                    NoWarn = "618"
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = "618"
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
+                />
+                <Reference
+                    Name = "nunit.util.dll"
+                    Project = "{61CE9CE5-943E-44D4-A381-814DC1406767}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "nunit.core.interfaces.dll"
+                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "nunit.core.dll"
+                    Project = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "App.ico"
+                    BuildAction = "Content"
+                />
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ConsoleOptions.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ConsoleUi.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "EventCollector.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Runner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/ConsoleRunner/nunit-console/nunit-console_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/ConsoleRunner/nunit-console/nunit-console_VS2005.csproj
@@ -1,94 +1,94 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{9367EC89-6A38-42BA-9607-0DC288E4BC3A}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit-console-runner</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.ConsoleRunner</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <SignAssembly>false</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <Optimize>true</Optimize>
-    <NoWarn>618;1701;1702;1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <NoWarn>618;1701;1702;1699</NoWarn>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Content Include="App.ico" />
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ConsoleOptions.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ConsoleUi.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="EventCollector.cs" />
-    <Compile Include="Runner.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\ClientUtilities\util\nunit.util.dll_VS2005.csproj">
-      <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project>
-      <Name>nunit.util.dll_VS2005</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll_VS2005.csproj">
-      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
-      <Name>nunit.core.dll_VS2005</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
-      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
-      <Name>nunit.core.interfaces.dll_VS2005</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{9367EC89-6A38-42BA-9607-0DC288E4BC3A}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit-console-runner</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.ConsoleRunner</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <SignAssembly>false</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <Optimize>true</Optimize>
+    <NoWarn>618;1701;1702;1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <NoWarn>618;1701;1702;1699</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="App.ico" />
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ConsoleOptions.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ConsoleUi.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="EventCollector.cs" />
+    <Compile Include="Runner.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\ClientUtilities\util\nunit.util.dll_VS2005.csproj">
+      <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project>
+      <Name>nunit.util.dll_VS2005</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll_VS2005.csproj">
+      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
+      <Name>nunit.core.dll_VS2005</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
+      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
+      <Name>nunit.core.interfaces.dll_VS2005</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/AbstractTestCaseDecoration.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/AbstractTestCaseDecoration.cs
@@ -1,41 +1,41 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestCaseDecorator is used to add functionality to
-	/// another TestCase, which it aggregates.
-	/// </summary>
-	public abstract class AbstractTestCaseDecoration : TestCase
-	{
-		protected TestCase testCase;
-
-		public AbstractTestCaseDecoration( TestCase testCase )
-			: base( (TestName)testCase.TestName.Clone() )
-		{
-			this.testCase = testCase;
-			this.RunState = testCase.RunState;
-			this.IgnoreReason = testCase.IgnoreReason;
-            this.Description = testCase.Description;
-            this.Categories = new System.Collections.ArrayList(testCase.Categories);
-            if (testCase.Properties != null)
-            {
-                this.Properties = new ListDictionary();
-                foreach (DictionaryEntry entry in testCase.Properties)
-                    this.Properties.Add(entry.Key, entry.Value);
-            }
-        }
-
-		public override int TestCount
-		{
-			get { return testCase.TestCount; }
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+using System.Collections.Specialized;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestCaseDecorator is used to add functionality to
+	/// another TestCase, which it aggregates.
+	/// </summary>
+	public abstract class AbstractTestCaseDecoration : TestCase
+	{
+		protected TestCase testCase;
+
+		public AbstractTestCaseDecoration( TestCase testCase )
+			: base( (TestName)testCase.TestName.Clone() )
+		{
+			this.testCase = testCase;
+			this.RunState = testCase.RunState;
+			this.IgnoreReason = testCase.IgnoreReason;
+            this.Description = testCase.Description;
+            this.Categories = new System.Collections.ArrayList(testCase.Categories);
+            if (testCase.Properties != null)
+            {
+                this.Properties = new ListDictionary();
+                foreach (DictionaryEntry entry in testCase.Properties)
+                    this.Properties.Add(entry.Key, entry.Value);
+            }
+        }
+
+		public override int TestCount
+		{
+			get { return testCase.TestCount; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/AssemblyInfo.cs
@@ -1,13 +1,13 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-using System;
-using System.Reflection;
-
-[assembly: CLSCompliant(true)]
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+using System;
+using System.Reflection;
+
+[assembly: CLSCompliant(true)]
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/AssemblyReader.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/AssemblyReader.cs
@@ -1,168 +1,168 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-using System.Text;
-using System.IO;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// AssemblyReader knows how to find various things in an assembly header
-	/// </summary>
-	public class AssemblyReader : IDisposable
-	{
-		private string assemblyPath;
-		private BinaryReader rdr;
-		private FileStream fs;
-
-		UInt16 dos_magic = 0xffff;
-		uint pe_signature = 0xffffffff;
-		UInt16 numDataSections;
-		UInt16 optionalHeaderSize;
-
-		private uint peHeader = 0;
-		private uint fileHeader = 0;
-		private uint optionalHeader = 0;
-		private uint dataDirectory = 0;
-		private uint dataSections = 0;
-
-		private struct Section
-		{
-			public uint virtualAddress;
-			public uint virtualSize;
-			public uint fileOffset;
-		};
-
-		private Section[] sections;
-
-		public AssemblyReader( string assemblyPath )
-		{
-			this.assemblyPath = assemblyPath;
-			CalcHeaderOffsets();
-		}
-
-		public AssemblyReader( Assembly assembly )
-		{
-			this.assemblyPath = TestFixtureBuilder.GetAssemblyPath( assembly );
-			CalcHeaderOffsets();
-		}
-
-		private void CalcHeaderOffsets()
-		{
-			this.fs = new FileStream( assemblyPath, FileMode.Open, FileAccess.Read );
-			this.rdr = new BinaryReader( fs );
-			dos_magic = rdr.ReadUInt16();
-			if ( dos_magic == 0x5a4d )
-			{
-				fs.Position = 0x3c;
-				peHeader = rdr.ReadUInt32();
-				fileHeader = peHeader + 4;
-				optionalHeader = fileHeader + 20;
-				dataDirectory = optionalHeader + 96;
-				// dotNetDirectoryEntry = dataDirectory + 14 * 8;
-
-				fs.Position = peHeader;
-				pe_signature = rdr.ReadUInt32();
-				rdr.ReadUInt16(); // machine
-				numDataSections = rdr.ReadUInt16();
-				fs.Position += 12;
-				optionalHeaderSize = rdr.ReadUInt16();
-				dataSections = optionalHeader + optionalHeaderSize;
-
-				sections = new Section[numDataSections];
-				fs.Position = dataSections;
-				for( int i = 0; i < numDataSections; i++ )
-				{
-					fs.Position += 8;
-					sections[i].virtualSize = rdr.ReadUInt32();
-					sections[i].virtualAddress = rdr.ReadUInt32();
-					uint rawDataSize = rdr.ReadUInt32();
-					sections[i].fileOffset = rdr.ReadUInt32();
-					if ( sections[i].virtualSize == 0 )
-						sections[i].virtualSize = rawDataSize;
-
-					fs.Position += 16;
-				}
-			}
-		}
-
-		private uint DataDirectoryRva( int n )
-		{
-			fs.Position = dataDirectory + n * 8;
-			return rdr.ReadUInt32();
-		}
-
-		private uint RvaToLfa( uint rva )
-		{
-			for( int i = 0; i < numDataSections; i++ )
-				if ( rva >= sections[i].virtualAddress && rva < sections[i].virtualAddress + sections[i].virtualSize )
-					return rva - sections[i].virtualAddress + sections[i].fileOffset;
-
-			return 0;
-		}
-
-		public string AssemblyPath
-		{
-			get { return assemblyPath; }
-		}
-
-		public bool IsValidPeFile
-		{
-			get { return dos_magic == 0x5a4d && pe_signature == 0x00004550; }
-		}
-
-		public bool IsDotNetFile
-		{
-			get { return IsValidPeFile && DataDirectoryRva(14) != 0; }
-		}
-
-		public string ImageRuntimeVersion
-		{
-			get 
-			{
-				string runtimeVersion = string.Empty;
-
-				uint rva = DataDirectoryRva(14);
-				if ( rva != 0 )
-				{
-					fs.Position = RvaToLfa( rva ) + 8;
-					uint metadata = rdr.ReadUInt32();
-					fs.Position = RvaToLfa( metadata );
-					if ( rdr.ReadUInt32() == 0x424a5342 )
-					{
-						// Copy string representing runtime version
-						fs.Position += 12;
-						StringBuilder sb = new StringBuilder();
-						char c;
-						while ((c = rdr.ReadChar())!= '\0')
-							sb.Append(c);
-
-						if (sb[0] == 'v') // Last sanity check
-							runtimeVersion = sb.ToString();
-
-						// Could do fixups here for bad values in older files
-						// like 1.x86, 1.build, etc. But we are only using
-						// the major version anyway
-					}
-				}
-
-				return runtimeVersion; 
-			}
-		}
-
-		public void Dispose()
-		{
-			if ( fs != null )
-				fs.Close();
-			if ( rdr != null )
-				rdr.Close();
-
-			fs = null;
-			rdr = null;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+using System.Text;
+using System.IO;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// AssemblyReader knows how to find various things in an assembly header
+	/// </summary>
+	public class AssemblyReader : IDisposable
+	{
+		private string assemblyPath;
+		private BinaryReader rdr;
+		private FileStream fs;
+
+		UInt16 dos_magic = 0xffff;
+		uint pe_signature = 0xffffffff;
+		UInt16 numDataSections;
+		UInt16 optionalHeaderSize;
+
+		private uint peHeader = 0;
+		private uint fileHeader = 0;
+		private uint optionalHeader = 0;
+		private uint dataDirectory = 0;
+		private uint dataSections = 0;
+
+		private struct Section
+		{
+			public uint virtualAddress;
+			public uint virtualSize;
+			public uint fileOffset;
+		};
+
+		private Section[] sections;
+
+		public AssemblyReader( string assemblyPath )
+		{
+			this.assemblyPath = assemblyPath;
+			CalcHeaderOffsets();
+		}
+
+		public AssemblyReader( Assembly assembly )
+		{
+			this.assemblyPath = TestFixtureBuilder.GetAssemblyPath( assembly );
+			CalcHeaderOffsets();
+		}
+
+		private void CalcHeaderOffsets()
+		{
+			this.fs = new FileStream( assemblyPath, FileMode.Open, FileAccess.Read );
+			this.rdr = new BinaryReader( fs );
+			dos_magic = rdr.ReadUInt16();
+			if ( dos_magic == 0x5a4d )
+			{
+				fs.Position = 0x3c;
+				peHeader = rdr.ReadUInt32();
+				fileHeader = peHeader + 4;
+				optionalHeader = fileHeader + 20;
+				dataDirectory = optionalHeader + 96;
+				// dotNetDirectoryEntry = dataDirectory + 14 * 8;
+
+				fs.Position = peHeader;
+				pe_signature = rdr.ReadUInt32();
+				rdr.ReadUInt16(); // machine
+				numDataSections = rdr.ReadUInt16();
+				fs.Position += 12;
+				optionalHeaderSize = rdr.ReadUInt16();
+				dataSections = optionalHeader + optionalHeaderSize;
+
+				sections = new Section[numDataSections];
+				fs.Position = dataSections;
+				for( int i = 0; i < numDataSections; i++ )
+				{
+					fs.Position += 8;
+					sections[i].virtualSize = rdr.ReadUInt32();
+					sections[i].virtualAddress = rdr.ReadUInt32();
+					uint rawDataSize = rdr.ReadUInt32();
+					sections[i].fileOffset = rdr.ReadUInt32();
+					if ( sections[i].virtualSize == 0 )
+						sections[i].virtualSize = rawDataSize;
+
+					fs.Position += 16;
+				}
+			}
+		}
+
+		private uint DataDirectoryRva( int n )
+		{
+			fs.Position = dataDirectory + n * 8;
+			return rdr.ReadUInt32();
+		}
+
+		private uint RvaToLfa( uint rva )
+		{
+			for( int i = 0; i < numDataSections; i++ )
+				if ( rva >= sections[i].virtualAddress && rva < sections[i].virtualAddress + sections[i].virtualSize )
+					return rva - sections[i].virtualAddress + sections[i].fileOffset;
+
+			return 0;
+		}
+
+		public string AssemblyPath
+		{
+			get { return assemblyPath; }
+		}
+
+		public bool IsValidPeFile
+		{
+			get { return dos_magic == 0x5a4d && pe_signature == 0x00004550; }
+		}
+
+		public bool IsDotNetFile
+		{
+			get { return IsValidPeFile && DataDirectoryRva(14) != 0; }
+		}
+
+		public string ImageRuntimeVersion
+		{
+			get 
+			{
+				string runtimeVersion = string.Empty;
+
+				uint rva = DataDirectoryRva(14);
+				if ( rva != 0 )
+				{
+					fs.Position = RvaToLfa( rva ) + 8;
+					uint metadata = rdr.ReadUInt32();
+					fs.Position = RvaToLfa( metadata );
+					if ( rdr.ReadUInt32() == 0x424a5342 )
+					{
+						// Copy string representing runtime version
+						fs.Position += 12;
+						StringBuilder sb = new StringBuilder();
+						char c;
+						while ((c = rdr.ReadChar())!= '\0')
+							sb.Append(c);
+
+						if (sb[0] == 'v') // Last sanity check
+							runtimeVersion = sb.ToString();
+
+						// Could do fixups here for bad values in older files
+						// like 1.x86, 1.build, etc. But we are only using
+						// the major version anyway
+					}
+				}
+
+				return runtimeVersion; 
+			}
+		}
+
+		public void Dispose()
+		{
+			if ( fs != null )
+				fs.Close();
+			if ( rdr != null )
+				rdr.Close();
+
+			fs = null;
+			rdr = null;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/AssemblyResolver.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/AssemblyResolver.cs
@@ -1,122 +1,122 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.IO;
-	using System.Reflection;
-	using System.Collections;
-
-	/// <summary>
-	/// Class adapted from NUnitAddin for use in handling assemblies that are not
-    /// found in the test AppDomain.
-	/// </summary>
-    public class AssemblyResolver : MarshalByRefObject, IDisposable
-	{
-		private class AssemblyCache
-		{
-			private Hashtable _resolved = new Hashtable();
-
-			public bool Contains( string name )
-			{
-				return _resolved.ContainsKey( name );
-			}
-
-			public Assembly Resolve( string name )
-			{
-				if ( _resolved.ContainsKey( name ) )
-					return (Assembly)_resolved[name];
-				
-				return null;
-			}
-
-			public void Add( string name, Assembly assembly )
-			{
-				_resolved[name] = assembly;
-			}
-		}
-
-		private AssemblyCache _cache = new AssemblyCache();
-
-		private ArrayList _dirs = new ArrayList();
-
-		public AssemblyResolver()
-		{
-			AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
-		}
-
-		public void Dispose()
-		{
-			AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(CurrentDomain_AssemblyResolve);
-		}
-
-		public void AddFile( string file )
-		{
-			Assembly assembly = Assembly.LoadFrom( file );
-			_cache.Add(assembly.GetName().FullName, assembly);
-		}
-
-		public void AddFiles( string directory, string pattern )
-		{
-			if ( Directory.Exists( directory ) )
-				foreach( string file in Directory.GetFiles( directory, pattern ) )
-					AddFile( file );
-		}
-
-		public void AddDirectory( string directory )
-		{
-			if ( Directory.Exists( directory ) )
-				_dirs.Add( directory );
-		}
-
-		private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
-		{
-			string fullName = args.Name;
-			int index = fullName.IndexOf(',');
-			if(index == -1)							// Only resolve using full name.
-			{
-				NTrace.Debug( string.Format("Not a strong name: {0}", fullName ),
-					"'AssemblyResolver'" );
-				return null;
-			}
-
-			if ( _cache.Contains( fullName ) )
-			{
-				NTrace.Info( string.Format( "Resolved from Cache: {0}", fullName ), 
-					"'AssemblyResolver'" );
-				return _cache.Resolve(fullName);
-			}
-
-			foreach( string dir in _dirs )
-			{
-				foreach( string file in Directory.GetFiles( dir, "*.dll" ) )
-				{
-					string fullFile = Path.Combine( dir, file );
-					try
-					{
-						if ( AssemblyName.GetAssemblyName( fullFile ).FullName == fullName )
-						{
-							NTrace.Info( string.Format( "Added to Cache: {0}", fullFile ), 
-								"'AssemblyResolver'" );
-							AddFile( fullFile );
-							return _cache.Resolve( fullName );
-						}
-					}
-					catch
-					{
-						// Keep going if there's a bad assembly
-						NTrace.Debug( string.Format( "Bad assembly: {0}", fullFile  ), "AssemblyResolver");
-					}
-				}
-			}
-
-			NTrace.Debug( string.Format( "Not in Cache: {0}", fullName), 
-				"'AssemblyResolver'");
-			return null;
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.IO;
+	using System.Reflection;
+	using System.Collections;
+
+	/// <summary>
+	/// Class adapted from NUnitAddin for use in handling assemblies that are not
+    /// found in the test AppDomain.
+	/// </summary>
+    public class AssemblyResolver : MarshalByRefObject, IDisposable
+	{
+		private class AssemblyCache
+		{
+			private Hashtable _resolved = new Hashtable();
+
+			public bool Contains( string name )
+			{
+				return _resolved.ContainsKey( name );
+			}
+
+			public Assembly Resolve( string name )
+			{
+				if ( _resolved.ContainsKey( name ) )
+					return (Assembly)_resolved[name];
+				
+				return null;
+			}
+
+			public void Add( string name, Assembly assembly )
+			{
+				_resolved[name] = assembly;
+			}
+		}
+
+		private AssemblyCache _cache = new AssemblyCache();
+
+		private ArrayList _dirs = new ArrayList();
+
+		public AssemblyResolver()
+		{
+			AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
+		}
+
+		public void Dispose()
+		{
+			AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(CurrentDomain_AssemblyResolve);
+		}
+
+		public void AddFile( string file )
+		{
+			Assembly assembly = Assembly.LoadFrom( file );
+			_cache.Add(assembly.GetName().FullName, assembly);
+		}
+
+		public void AddFiles( string directory, string pattern )
+		{
+			if ( Directory.Exists( directory ) )
+				foreach( string file in Directory.GetFiles( directory, pattern ) )
+					AddFile( file );
+		}
+
+		public void AddDirectory( string directory )
+		{
+			if ( Directory.Exists( directory ) )
+				_dirs.Add( directory );
+		}
+
+		private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
+		{
+			string fullName = args.Name;
+			int index = fullName.IndexOf(',');
+			if(index == -1)							// Only resolve using full name.
+			{
+				NTrace.Debug( string.Format("Not a strong name: {0}", fullName ),
+					"'AssemblyResolver'" );
+				return null;
+			}
+
+			if ( _cache.Contains( fullName ) )
+			{
+				NTrace.Info( string.Format( "Resolved from Cache: {0}", fullName ), 
+					"'AssemblyResolver'" );
+				return _cache.Resolve(fullName);
+			}
+
+			foreach( string dir in _dirs )
+			{
+				foreach( string file in Directory.GetFiles( dir, "*.dll" ) )
+				{
+					string fullFile = Path.Combine( dir, file );
+					try
+					{
+						if ( AssemblyName.GetAssemblyName( fullFile ).FullName == fullName )
+						{
+							NTrace.Info( string.Format( "Added to Cache: {0}", fullFile ), 
+								"'AssemblyResolver'" );
+							AddFile( fullFile );
+							return _cache.Resolve( fullName );
+						}
+					}
+					catch
+					{
+						// Keep going if there's a bad assembly
+						NTrace.Debug( string.Format( "Bad assembly: {0}", fullFile  ), "AssemblyResolver");
+					}
+				}
+			}
+
+			NTrace.Debug( string.Format( "Not in Cache: {0}", fullName), 
+				"'AssemblyResolver'");
+			return null;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Builders/AbstractFixtureBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Builders/AbstractFixtureBuilder.cs
@@ -1,201 +1,201 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Reflection;
-
-namespace NUnit.Core.Builders
-{
-	/// <summary>
-	/// AbstractFixtureBuilder may serve as a base class for 
-	/// implementing a suite builder. It provides a templated
-	/// implementation of the BuildFrom method as well as a 
-	/// number of useful methods that derived classes may use.
-	/// </summary>
-	public abstract class AbstractFixtureBuilder : Extensibility.ISuiteBuilder
-	{
-		#region Instance Fields
-		/// <summary>
-		/// The TestSuite being constructed;
-		/// </summary>
-		protected TestSuite suite;
-
-		/// <summary>
-		/// The fixture builder's own test case builder collection 
-		/// </summary>
-		protected Extensibility.TestCaseBuilderCollection testCaseBuilders = 
-			new Extensibility.TestCaseBuilderCollection(CoreExtensions.Host);
-		#endregion
-
-		#region Abstract Methods
-		/// <summary>
-		/// Examine the type and determine if it is suitable for
-		/// this builder to use in building a TestSuite.
-		/// 
-		/// Note that returning false will cause the type to be ignored 
-		/// in loading the tests. If it is desired to load the suite
-		/// but label it as non-runnable, ignored, etc., then this
-		/// method must return true.
-		/// </summary>
-		/// <param name="type">The type of the fixture to be used</param>
-		/// <returns>True if the type can be used to build a TestSuite</returns>
-		public abstract bool CanBuildFrom(Type type);
-
-		/// <summary>
-		/// Method that actually creates a new TestSuite object
-		/// 
-		/// Derived classes must override this method.
-		/// </summary>
-		/// <param name="type">The user fixture type</param>
-		/// <returns></returns>
-		protected abstract TestSuite MakeSuite( Type type );
-		#endregion
-
-		#region Virtual Methods
-		/// <summary>
-		/// Templated implementaton of ISuiteBuilder.BuildFrom. Any
-		/// derived builder may choose to override this method in
-		/// it's entirety or to let it stand and override some of
-		/// the virtual methods that it calls.
-		/// </summary>
-		/// <param name="type"></param>
-		/// <returns></returns>
-		public virtual Test BuildFrom(Type type)
-		{
-			this.suite = MakeSuite(type);
-
-			SetTestSuiteProperties(type, suite);
-
-			AddTestCases(type);
-
-			if ( this.suite.RunState != RunState.NotRunnable && this.suite.TestCount == 0)
-			{
-				this.suite.RunState = RunState.NotRunnable;
-				this.suite.IgnoreReason = suite.TestName.Name + " does not have any tests";
-			}
-
-			return this.suite;
-		}
-
-		/// <summary>
-		/// Method that sets properties of the test suite based on the
-		/// information in the provided Type.
-		/// 
-		/// Derived classes normally override this method and should
-		/// call the base method or include equivalent code.
-		/// </summary>
-		/// <param name="type">The type to examine</param>
-		/// <param name="suite">The test suite being constructed</param>
-		protected virtual void SetTestSuiteProperties( Type type, TestSuite suite )
-		{
-			string reason = null;
-			if (!IsValidFixtureType(type, ref reason) )
-			{
-				this.suite.RunState = RunState.NotRunnable;
-				this.suite.IgnoreReason = reason;
-			}
-		}
-
-		/// <summary>
-		/// Virtual method that returns true if the fixture type is valid
-		/// for use by the builder. If not, it returns false and sets
-		/// reason to an appropriate message. As implemented in this class,
-		/// the method checks that a default constructor is available. You
-		/// may override this method in a derived class in order to make 
-		/// different or additional checks.
-		/// </summary>
-		/// <param name="fixtureType">The fixture type</param>
-		/// <param name="reason">The reason this fixture is not valid</param>
-		/// <returns>True if the fixture type is valid, false if not</returns>
-		protected virtual bool IsValidFixtureType( Type fixtureType, ref string reason )
-		{
-            if (fixtureType.IsAbstract)
-            {
-                reason = string.Format("{0} is an abstract class", fixtureType.FullName);
-                return false;
-            }
-
-            if (Reflect.GetConstructor(fixtureType) == null)
-			{
-				reason = string.Format( "{0} does not have a valid constructor", fixtureType.FullName );
-				return false;
-			}
-
-			return true;
-		}
-
-		/// <summary>
-		/// Method to add test cases to the newly constructed suite.
-		/// The default implementation looks at each candidate method
-		/// and tries to build a test case from it. It will only need
-		/// to be overridden if some other approach, such as reading a 
-		/// datafile is used to generate test cases.
-		/// </summary>
-		/// <param name="fixtureType"></param>
-		protected virtual void AddTestCases( Type fixtureType )
-		{
-			IList methods = GetCandidateTestMethods( fixtureType );
-			foreach(MethodInfo method in methods)
-			{
-				Test test = BuildTestCase(method);
-
-				if(test != null)
-				{
-					this.suite.Add( test );
-				}
-			}
-		}
-
-		/// <summary>
-		/// Method to create a test case from a MethodInfo and add
-		/// it to the suite being built. It first checks to see if
-		/// any global TestCaseBuilder addin wants to build the
-		/// test case. If not, it uses the internal builder
-		/// collection maintained by this fixture builder. After
-		/// building the test case, it applies any decorators
-		/// that have been installed.
-		/// 
-		/// The default implementation has no test case builders.
-		/// Derived classes should add builders to the collection
-		/// in their constructor.
-		/// </summary>
-		/// <param name="method"></param>
-		/// <returns></returns>
-		protected virtual Test BuildTestCase( MethodInfo method )
-		{
-			// TODO: Review order of using builders
-			Test test = CoreExtensions.Host.TestBuilders.BuildFrom( method );
-
-			if ( test == null && this.testCaseBuilders.CanBuildFrom( method ) )
-				test = this.testCaseBuilders.BuildFrom( method );
-
-			if ( test != null )
-				test = CoreExtensions.Host.TestDecorators.Decorate( test, method );
-
-			return test;
-		}
-
-		/// <summary>
-		/// Method to return all methods in a fixture that should be examined
-		/// to see if they are test methods. The default returns all methods
-		/// of the fixture: public and private, instance and static, declared
-		/// and inherited.
-        /// 
-        /// While this method may be overridden, it should normally not be.
-        /// If it is overridden to eliminate certain methods, they will be
-        /// silently ignored. Generally, it is better to include them in the
-        /// list and let the TestCaseBuilders decide how to handle them.
-		/// </summary>
-		/// <param name="fixtureType"></param>
-		/// <returns></returns>
-		protected IList GetCandidateTestMethods( Type fixtureType )
-		{
-			return fixtureType.GetMethods( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Core.Builders
+{
+	/// <summary>
+	/// AbstractFixtureBuilder may serve as a base class for 
+	/// implementing a suite builder. It provides a templated
+	/// implementation of the BuildFrom method as well as a 
+	/// number of useful methods that derived classes may use.
+	/// </summary>
+	public abstract class AbstractFixtureBuilder : Extensibility.ISuiteBuilder
+	{
+		#region Instance Fields
+		/// <summary>
+		/// The TestSuite being constructed;
+		/// </summary>
+		protected TestSuite suite;
+
+		/// <summary>
+		/// The fixture builder's own test case builder collection 
+		/// </summary>
+		protected Extensibility.TestCaseBuilderCollection testCaseBuilders = 
+			new Extensibility.TestCaseBuilderCollection(CoreExtensions.Host);
+		#endregion
+
+		#region Abstract Methods
+		/// <summary>
+		/// Examine the type and determine if it is suitable for
+		/// this builder to use in building a TestSuite.
+		/// 
+		/// Note that returning false will cause the type to be ignored 
+		/// in loading the tests. If it is desired to load the suite
+		/// but label it as non-runnable, ignored, etc., then this
+		/// method must return true.
+		/// </summary>
+		/// <param name="type">The type of the fixture to be used</param>
+		/// <returns>True if the type can be used to build a TestSuite</returns>
+		public abstract bool CanBuildFrom(Type type);
+
+		/// <summary>
+		/// Method that actually creates a new TestSuite object
+		/// 
+		/// Derived classes must override this method.
+		/// </summary>
+		/// <param name="type">The user fixture type</param>
+		/// <returns></returns>
+		protected abstract TestSuite MakeSuite( Type type );
+		#endregion
+
+		#region Virtual Methods
+		/// <summary>
+		/// Templated implementaton of ISuiteBuilder.BuildFrom. Any
+		/// derived builder may choose to override this method in
+		/// it's entirety or to let it stand and override some of
+		/// the virtual methods that it calls.
+		/// </summary>
+		/// <param name="type"></param>
+		/// <returns></returns>
+		public virtual Test BuildFrom(Type type)
+		{
+			this.suite = MakeSuite(type);
+
+			SetTestSuiteProperties(type, suite);
+
+			AddTestCases(type);
+
+			if ( this.suite.RunState != RunState.NotRunnable && this.suite.TestCount == 0)
+			{
+				this.suite.RunState = RunState.NotRunnable;
+				this.suite.IgnoreReason = suite.TestName.Name + " does not have any tests";
+			}
+
+			return this.suite;
+		}
+
+		/// <summary>
+		/// Method that sets properties of the test suite based on the
+		/// information in the provided Type.
+		/// 
+		/// Derived classes normally override this method and should
+		/// call the base method or include equivalent code.
+		/// </summary>
+		/// <param name="type">The type to examine</param>
+		/// <param name="suite">The test suite being constructed</param>
+		protected virtual void SetTestSuiteProperties( Type type, TestSuite suite )
+		{
+			string reason = null;
+			if (!IsValidFixtureType(type, ref reason) )
+			{
+				this.suite.RunState = RunState.NotRunnable;
+				this.suite.IgnoreReason = reason;
+			}
+		}
+
+		/// <summary>
+		/// Virtual method that returns true if the fixture type is valid
+		/// for use by the builder. If not, it returns false and sets
+		/// reason to an appropriate message. As implemented in this class,
+		/// the method checks that a default constructor is available. You
+		/// may override this method in a derived class in order to make 
+		/// different or additional checks.
+		/// </summary>
+		/// <param name="fixtureType">The fixture type</param>
+		/// <param name="reason">The reason this fixture is not valid</param>
+		/// <returns>True if the fixture type is valid, false if not</returns>
+		protected virtual bool IsValidFixtureType( Type fixtureType, ref string reason )
+		{
+            if (fixtureType.IsAbstract)
+            {
+                reason = string.Format("{0} is an abstract class", fixtureType.FullName);
+                return false;
+            }
+
+            if (Reflect.GetConstructor(fixtureType) == null)
+			{
+				reason = string.Format( "{0} does not have a valid constructor", fixtureType.FullName );
+				return false;
+			}
+
+			return true;
+		}
+
+		/// <summary>
+		/// Method to add test cases to the newly constructed suite.
+		/// The default implementation looks at each candidate method
+		/// and tries to build a test case from it. It will only need
+		/// to be overridden if some other approach, such as reading a 
+		/// datafile is used to generate test cases.
+		/// </summary>
+		/// <param name="fixtureType"></param>
+		protected virtual void AddTestCases( Type fixtureType )
+		{
+			IList methods = GetCandidateTestMethods( fixtureType );
+			foreach(MethodInfo method in methods)
+			{
+				Test test = BuildTestCase(method);
+
+				if(test != null)
+				{
+					this.suite.Add( test );
+				}
+			}
+		}
+
+		/// <summary>
+		/// Method to create a test case from a MethodInfo and add
+		/// it to the suite being built. It first checks to see if
+		/// any global TestCaseBuilder addin wants to build the
+		/// test case. If not, it uses the internal builder
+		/// collection maintained by this fixture builder. After
+		/// building the test case, it applies any decorators
+		/// that have been installed.
+		/// 
+		/// The default implementation has no test case builders.
+		/// Derived classes should add builders to the collection
+		/// in their constructor.
+		/// </summary>
+		/// <param name="method"></param>
+		/// <returns></returns>
+		protected virtual Test BuildTestCase( MethodInfo method )
+		{
+			// TODO: Review order of using builders
+			Test test = CoreExtensions.Host.TestBuilders.BuildFrom( method );
+
+			if ( test == null && this.testCaseBuilders.CanBuildFrom( method ) )
+				test = this.testCaseBuilders.BuildFrom( method );
+
+			if ( test != null )
+				test = CoreExtensions.Host.TestDecorators.Decorate( test, method );
+
+			return test;
+		}
+
+		/// <summary>
+		/// Method to return all methods in a fixture that should be examined
+		/// to see if they are test methods. The default returns all methods
+		/// of the fixture: public and private, instance and static, declared
+		/// and inherited.
+        /// 
+        /// While this method may be overridden, it should normally not be.
+        /// If it is overridden to eliminate certain methods, they will be
+        /// silently ignored. Generally, it is better to include them in the
+        /// list and let the TestCaseBuilders decide how to handle them.
+		/// </summary>
+		/// <param name="fixtureType"></param>
+		/// <returns></returns>
+		protected IList GetCandidateTestMethods( Type fixtureType )
+		{
+			return fixtureType.GetMethods( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Builders/AbstractTestCaseBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Builders/AbstractTestCaseBuilder.cs
@@ -1,105 +1,105 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.Reflection;
-
-namespace NUnit.Core.Builders
-{
-	/// <summary>
-	/// AbstractTestCaseBuilder may serve as a base class for 
-	/// implementing a test case builder. It provides a templated
-	/// implementation of the BuildFrom method.
-	/// 
-	/// Developers of extended test cases may choose to inherit
-	/// from this class, although NUnitTestCaseBuilder will 
-	/// probably be more useful if the extension is intended
-	/// to work like an NUnit test case. 
-	/// </summary>
-	public abstract class AbstractTestCaseBuilder : Extensibility.ITestCaseBuilder
-	{
-		#region Instance Fields
-		protected int runnerID;
-		protected TestCase testCase;
-		#endregion
-
-		#region Abstract Methods
-		/// <summary>
-		/// Examine the method and determine if it is suitable for
-		/// this builder to use in building a TestCase.
-		/// 
-		/// Note that returning false will cause the method to be ignored 
-		/// in loading the tests. If it is desired to load the method
-		/// but label it as non-runnable, ignored, etc., then this
-		/// method must return true.
-		/// 
-		/// Derived classes must override this method.
-		/// </summary>
-		/// <param name="method">The test method to examine</param>
-		/// <returns>True is the builder can use this method</returns>
-		public abstract bool CanBuildFrom(System.Reflection.MethodInfo method);
-
-		/// <summary>
-		/// Method that actually creates a new test case object.
-		/// 
-		/// Derived classes must override this method.
-		/// </summary>
-		/// <param name="method">The test method to examine</param>
-		/// <returns>An object derived from TestCase</returns>
-		protected abstract TestCase MakeTestCase( MethodInfo method );
-
-		/// <summary>
-		/// Method that sets properties of the test case based on the
-		/// information in the provided MethodInfo.
-		/// 
-		/// Derived classes must override this method.
-		/// </summary>
-		/// <param name="method">The test method to examine</param>
-		/// <param name="testCase">The test case being constructed</param>
-		protected abstract void SetTestProperties( MethodInfo method, TestCase testCase );
-		#endregion
-
-		#region Virtual Methods
-		/// <summary>
-		/// Templated implementaton of ITestCaseBuilder.BuildFrom. 
-		/// 
-		/// Any derived builder may choose to override this method in
-		/// it's entirety or to let it stand and override some of
-		/// the virtual methods that it calls.
-		/// </summary>
-		/// <param name="method">The method for which a test case is to be built</param>
-		/// <returns>A TestCase or null</returns>
-		public virtual Test BuildFrom(System.Reflection.MethodInfo method)
-		{
-			if ( !HasValidTestCaseSignature( method ) )
-				return new NotRunnableTestCase( method );
-
-			TestCase testCase = MakeTestCase( method );
-			if ( testCase != null )
-				SetTestProperties( method , testCase );
-
-			return testCase;
-		}
-		
-		/// <summary>
-		/// Virtual method that checks the signature of a potential test case to
-		/// determine if it is valid. The default implementation requires methods
-		/// to be public, non-abstract instance methods, taking no parameters and
-		/// returning void. Methods not meeting these criteria will be marked by
-		/// NUnit as non-runnable.
-		/// </summary>
-		/// <param name="method">The method to be checked</param>
-		/// <returns>True if the method signature is valid, false if not</returns>
-		protected virtual bool HasValidTestCaseSignature( MethodInfo method )
-		{
-			return !method.IsStatic
-				&& !method.IsAbstract
-				&& method.IsPublic
-				&& method.GetParameters().Length == 0
-				&& method.ReturnType.Equals(typeof(void) );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.Reflection;
+
+namespace NUnit.Core.Builders
+{
+	/// <summary>
+	/// AbstractTestCaseBuilder may serve as a base class for 
+	/// implementing a test case builder. It provides a templated
+	/// implementation of the BuildFrom method.
+	/// 
+	/// Developers of extended test cases may choose to inherit
+	/// from this class, although NUnitTestCaseBuilder will 
+	/// probably be more useful if the extension is intended
+	/// to work like an NUnit test case. 
+	/// </summary>
+	public abstract class AbstractTestCaseBuilder : Extensibility.ITestCaseBuilder
+	{
+		#region Instance Fields
+		protected int runnerID;
+		protected TestCase testCase;
+		#endregion
+
+		#region Abstract Methods
+		/// <summary>
+		/// Examine the method and determine if it is suitable for
+		/// this builder to use in building a TestCase.
+		/// 
+		/// Note that returning false will cause the method to be ignored 
+		/// in loading the tests. If it is desired to load the method
+		/// but label it as non-runnable, ignored, etc., then this
+		/// method must return true.
+		/// 
+		/// Derived classes must override this method.
+		/// </summary>
+		/// <param name="method">The test method to examine</param>
+		/// <returns>True is the builder can use this method</returns>
+		public abstract bool CanBuildFrom(System.Reflection.MethodInfo method);
+
+		/// <summary>
+		/// Method that actually creates a new test case object.
+		/// 
+		/// Derived classes must override this method.
+		/// </summary>
+		/// <param name="method">The test method to examine</param>
+		/// <returns>An object derived from TestCase</returns>
+		protected abstract TestCase MakeTestCase( MethodInfo method );
+
+		/// <summary>
+		/// Method that sets properties of the test case based on the
+		/// information in the provided MethodInfo.
+		/// 
+		/// Derived classes must override this method.
+		/// </summary>
+		/// <param name="method">The test method to examine</param>
+		/// <param name="testCase">The test case being constructed</param>
+		protected abstract void SetTestProperties( MethodInfo method, TestCase testCase );
+		#endregion
+
+		#region Virtual Methods
+		/// <summary>
+		/// Templated implementaton of ITestCaseBuilder.BuildFrom. 
+		/// 
+		/// Any derived builder may choose to override this method in
+		/// it's entirety or to let it stand and override some of
+		/// the virtual methods that it calls.
+		/// </summary>
+		/// <param name="method">The method for which a test case is to be built</param>
+		/// <returns>A TestCase or null</returns>
+		public virtual Test BuildFrom(System.Reflection.MethodInfo method)
+		{
+			if ( !HasValidTestCaseSignature( method ) )
+				return new NotRunnableTestCase( method );
+
+			TestCase testCase = MakeTestCase( method );
+			if ( testCase != null )
+				SetTestProperties( method , testCase );
+
+			return testCase;
+		}
+		
+		/// <summary>
+		/// Virtual method that checks the signature of a potential test case to
+		/// determine if it is valid. The default implementation requires methods
+		/// to be public, non-abstract instance methods, taking no parameters and
+		/// returning void. Methods not meeting these criteria will be marked by
+		/// NUnit as non-runnable.
+		/// </summary>
+		/// <param name="method">The method to be checked</param>
+		/// <returns>True if the method signature is valid, false if not</returns>
+		protected virtual bool HasValidTestCaseSignature( MethodInfo method )
+		{
+			return !method.IsStatic
+				&& !method.IsAbstract
+				&& method.IsPublic
+				&& method.GetParameters().Length == 0
+				&& method.ReturnType.Equals(typeof(void) );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Builders/LegacySuiteBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Builders/LegacySuiteBuilder.cs
@@ -1,26 +1,26 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core.Builders
-{
-	/// <summary>
-	/// Built-in SuiteBuilder for LegacySuite
-	/// </summary>
-	public class LegacySuiteBuilder : Extensibility.ISuiteBuilder
-	{
-		public bool CanBuildFrom( Type type )
-		{
-			return LegacySuite.GetSuiteProperty( type ) != null;
-		}
-
-		public Test BuildFrom( Type type )
-		{
-			return new LegacySuite( type );
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core.Builders
+{
+	/// <summary>
+	/// Built-in SuiteBuilder for LegacySuite
+	/// </summary>
+	public class LegacySuiteBuilder : Extensibility.ISuiteBuilder
+	{
+		public bool CanBuildFrom( Type type )
+		{
+			return LegacySuite.GetSuiteProperty( type ) != null;
+		}
+
+		public Test BuildFrom( Type type )
+		{
+			return new LegacySuite( type );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Builders/NUnitTestCaseBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Builders/NUnitTestCaseBuilder.cs
@@ -1,76 +1,76 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Text.RegularExpressions;
-using System.Configuration;
-using System.Diagnostics;
-
-namespace NUnit.Core.Builders
-{
-	public class NUnitTestCaseBuilder : AbstractTestCaseBuilder
-	{
-		private bool allowOldStyleTests = NUnitFramework.AllowOldStyleTests;
-
-        #region AbstractTestCaseBuilder Overrides
-		/// <summary>
-		/// Determine if the method is an NUnit test method.
-		/// The method must normally be marked with the test
-		/// attribute for this to be true. If the test config
-		/// file sets AllowOldStyleTests to true, then any 
-		/// method beginning "test..." (case-insensitive)
-		/// is treated as a test unless it is also marked
-		/// as a setup or teardown method.
-		/// </summary>
-		/// <param name="method">A MethodInfo for the method being used as a test method</param>
-		/// <returns>True if the builder can create a test case from this method</returns>
-        public override bool CanBuildFrom(MethodInfo method)
-        {
-            if ( Reflect.HasAttribute( method, NUnitFramework.TestAttribute, false ) )
-                return true;
-
-            if (allowOldStyleTests)
-            {
-                Regex regex = new Regex("^(?i:test)");
-                if ( regex.Match(method.Name).Success 
-					&& !NUnitFramework.IsSetUpMethod( method )
-					&& !NUnitFramework.IsTearDownMethod( method )
-					&& !NUnitFramework.IsFixtureSetUpMethod( method )
-					&& !NUnitFramework.IsFixtureTearDownMethod( method ) )
-						return true;
-            }
-
-            return false;
-        }
-
-		/// <summary>
-		/// Create an NUnitTestMethod
-		/// </summary>
-		/// <param name="method">A MethodInfo for the method being used as a test method</param>
-		/// <returns>A new NUnitTestMethod</returns>
-        protected override TestCase MakeTestCase(MethodInfo method)
-        {
-			return new NUnitTestMethod( method );
-        }
-
-		/// <summary>
-		/// Set additional properties of the newly created test case based
-		/// on its attributes. As implemented, the method sets the test's
-		/// RunState,  Description, Categories and Properties.
-		/// </summary>
-		/// <param name="method">A MethodInfo for the method being used as a test method</param>
-		/// <param name="testCase">The test case being constructed</param>
-		protected override void SetTestProperties( MethodInfo method, TestCase testCase )
-		{
-            NUnitFramework.ApplyCommonAttributes( method, testCase );
-			NUnitFramework.ApplyExpectedExceptionAttribute( method, (TestMethod)testCase );
-		}
-		#endregion
-    }
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+using System.Collections;
+using System.Collections.Specialized;
+using System.Text.RegularExpressions;
+using System.Configuration;
+using System.Diagnostics;
+
+namespace NUnit.Core.Builders
+{
+	public class NUnitTestCaseBuilder : AbstractTestCaseBuilder
+	{
+		private bool allowOldStyleTests = NUnitFramework.AllowOldStyleTests;
+
+        #region AbstractTestCaseBuilder Overrides
+		/// <summary>
+		/// Determine if the method is an NUnit test method.
+		/// The method must normally be marked with the test
+		/// attribute for this to be true. If the test config
+		/// file sets AllowOldStyleTests to true, then any 
+		/// method beginning "test..." (case-insensitive)
+		/// is treated as a test unless it is also marked
+		/// as a setup or teardown method.
+		/// </summary>
+		/// <param name="method">A MethodInfo for the method being used as a test method</param>
+		/// <returns>True if the builder can create a test case from this method</returns>
+        public override bool CanBuildFrom(MethodInfo method)
+        {
+            if ( Reflect.HasAttribute( method, NUnitFramework.TestAttribute, false ) )
+                return true;
+
+            if (allowOldStyleTests)
+            {
+                Regex regex = new Regex("^(?i:test)");
+                if ( regex.Match(method.Name).Success 
+					&& !NUnitFramework.IsSetUpMethod( method )
+					&& !NUnitFramework.IsTearDownMethod( method )
+					&& !NUnitFramework.IsFixtureSetUpMethod( method )
+					&& !NUnitFramework.IsFixtureTearDownMethod( method ) )
+						return true;
+            }
+
+            return false;
+        }
+
+		/// <summary>
+		/// Create an NUnitTestMethod
+		/// </summary>
+		/// <param name="method">A MethodInfo for the method being used as a test method</param>
+		/// <returns>A new NUnitTestMethod</returns>
+        protected override TestCase MakeTestCase(MethodInfo method)
+        {
+			return new NUnitTestMethod( method );
+        }
+
+		/// <summary>
+		/// Set additional properties of the newly created test case based
+		/// on its attributes. As implemented, the method sets the test's
+		/// RunState,  Description, Categories and Properties.
+		/// </summary>
+		/// <param name="method">A MethodInfo for the method being used as a test method</param>
+		/// <param name="testCase">The test case being constructed</param>
+		protected override void SetTestProperties( MethodInfo method, TestCase testCase )
+		{
+            NUnitFramework.ApplyCommonAttributes( method, testCase );
+			NUnitFramework.ApplyExpectedExceptionAttribute( method, (TestMethod)testCase );
+		}
+		#endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Builders/NUnitTestFixtureBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Builders/NUnitTestFixtureBuilder.cs
@@ -1,129 +1,129 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Reflection;
-using System.Text.RegularExpressions;
-
-namespace NUnit.Core.Builders
-{
-	/// <summary>
-	/// Built-in SuiteBuilder for NUnit TestFixture
-	/// </summary>
-	public class NUnitTestFixtureBuilder : AbstractFixtureBuilder
-	{
-		public NUnitTestFixtureBuilder()
-		{
-			this.testCaseBuilders.Install( new NUnitTestCaseBuilder() );
-		}
-
-		#region AbstractFixtureBuilder Overrides
-		/// <summary>
-		/// Makes an NUnitTestFixture instance
-		/// </summary>
-		/// <param name="type">The type to be used</param>
-		/// <returns>An NUnitTestFixture as a TestSuite</returns>
-		protected override TestSuite MakeSuite( Type type )
-		{
-			return new NUnitTestFixture( type );
-		}
-
-		/// <summary>
-		/// Method that sets properties of the test suite based on the
-		/// information in the provided Type.
-		/// </summary>
-		/// <param name="type">The type to examine</param>
-		/// <param name="suite">The test suite being constructed</param>
-		protected override void SetTestSuiteProperties( Type type, TestSuite suite )
-		{
-			base.SetTestSuiteProperties( type, suite );
-
-            NUnitFramework.ApplyCommonAttributes( type, suite );
-		}
-
-        /// <summary>
-        /// Checks to see if the fixture type has the test fixture
-        /// attribute type specified in the parameters. Override
-        /// to allow additional types - based on name, for example.
-        /// </summary>
-        /// <param name="type">The fixture type to check</param>
-        /// <returns>True if the fixture can be built, false if not</returns>
-        public override bool CanBuildFrom(Type type)
-        {
-            return Reflect.HasAttribute( type, NUnitFramework.TestFixtureAttribute, true );
-        }
-
-        /// <summary>
-        /// Check that the fixture is valid. In addition to the base class
-        /// check for a valid constructor, this method ensures that there 
-        /// is no more than one of each setup or teardown method and that
-        /// their signatures are correct.
-        /// </summary>
-        /// <param name="fixtureType">The type of the fixture to check</param>
-        /// <param name="reason">A message indicating why the fixture is invalid</param>
-        /// <returns>True if the fixture is valid, false if not</returns>
-        protected override bool IsValidFixtureType(Type fixtureType, ref string reason)
-        {
-            if (!base.IsValidFixtureType(fixtureType, ref reason))
-                return false;
-
-            if (!fixtureType.IsPublic && !fixtureType.IsNestedPublic)
-            {
-                reason = "Fixture class is not public";
-                return false;
-            }
-
-            return CheckSetUpTearDownMethod(fixtureType, "SetUp", NUnitFramework.SetUpAttribute, ref reason)
-                && CheckSetUpTearDownMethod(fixtureType, "TearDown", NUnitFramework.TearDownAttribute, ref reason)
-                && CheckSetUpTearDownMethod(fixtureType, "TestFixtureSetUp", NUnitFramework.FixtureSetUpAttribute, ref reason)
-                && CheckSetUpTearDownMethod(fixtureType, "TestFixtureTearDown", NUnitFramework.FixtureTearDownAttribute, ref reason);
-        }
-
-        /// <summary>
-        /// Internal helper to check a single setup or teardown method
-        /// </summary>
-        /// <param name="fixtureType">The type to be checked</param>
-        /// <param name="attributeName">The short name of the attribute to be checked</param>
-        /// <returns>True if the method is present no more than once and has a valid signature</returns>
-        private bool CheckSetUpTearDownMethod(Type fixtureType, string name, string attributeName, ref string reason)
-        {
-            int count = Reflect.CountMethodsWithAttribute(
-                fixtureType, attributeName,
-                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly,
-                true);
-
-            if (count == 0) return true;
-
-            if (count > 1)
-            {
-                reason = string.Format("More than one {0} method", name);
-                return false;
-            }
-
-            MethodInfo theMethod = Reflect.GetMethodWithAttribute(
-                fixtureType, attributeName,
-                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly,
-                true);
-
-            if (theMethod != null)
-            {
-                if (theMethod.IsStatic ||
-                    theMethod.IsAbstract ||
-                    !theMethod.IsPublic && !theMethod.IsFamily ||
-                    theMethod.GetParameters().Length != 0 ||
-                    !theMethod.ReturnType.Equals(typeof(void)))
-                {
-                    reason = string.Format("Invalid {0} method signature", name);
-                    return false;
-                }
-            }
-
-            return true;
-        }
-		#endregion
-	}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+using System.Text.RegularExpressions;
+
+namespace NUnit.Core.Builders
+{
+	/// <summary>
+	/// Built-in SuiteBuilder for NUnit TestFixture
+	/// </summary>
+	public class NUnitTestFixtureBuilder : AbstractFixtureBuilder
+	{
+		public NUnitTestFixtureBuilder()
+		{
+			this.testCaseBuilders.Install( new NUnitTestCaseBuilder() );
+		}
+
+		#region AbstractFixtureBuilder Overrides
+		/// <summary>
+		/// Makes an NUnitTestFixture instance
+		/// </summary>
+		/// <param name="type">The type to be used</param>
+		/// <returns>An NUnitTestFixture as a TestSuite</returns>
+		protected override TestSuite MakeSuite( Type type )
+		{
+			return new NUnitTestFixture( type );
+		}
+
+		/// <summary>
+		/// Method that sets properties of the test suite based on the
+		/// information in the provided Type.
+		/// </summary>
+		/// <param name="type">The type to examine</param>
+		/// <param name="suite">The test suite being constructed</param>
+		protected override void SetTestSuiteProperties( Type type, TestSuite suite )
+		{
+			base.SetTestSuiteProperties( type, suite );
+
+            NUnitFramework.ApplyCommonAttributes( type, suite );
+		}
+
+        /// <summary>
+        /// Checks to see if the fixture type has the test fixture
+        /// attribute type specified in the parameters. Override
+        /// to allow additional types - based on name, for example.
+        /// </summary>
+        /// <param name="type">The fixture type to check</param>
+        /// <returns>True if the fixture can be built, false if not</returns>
+        public override bool CanBuildFrom(Type type)
+        {
+            return Reflect.HasAttribute( type, NUnitFramework.TestFixtureAttribute, true );
+        }
+
+        /// <summary>
+        /// Check that the fixture is valid. In addition to the base class
+        /// check for a valid constructor, this method ensures that there 
+        /// is no more than one of each setup or teardown method and that
+        /// their signatures are correct.
+        /// </summary>
+        /// <param name="fixtureType">The type of the fixture to check</param>
+        /// <param name="reason">A message indicating why the fixture is invalid</param>
+        /// <returns>True if the fixture is valid, false if not</returns>
+        protected override bool IsValidFixtureType(Type fixtureType, ref string reason)
+        {
+            if (!base.IsValidFixtureType(fixtureType, ref reason))
+                return false;
+
+            if (!fixtureType.IsPublic && !fixtureType.IsNestedPublic)
+            {
+                reason = "Fixture class is not public";
+                return false;
+            }
+
+            return CheckSetUpTearDownMethod(fixtureType, "SetUp", NUnitFramework.SetUpAttribute, ref reason)
+                && CheckSetUpTearDownMethod(fixtureType, "TearDown", NUnitFramework.TearDownAttribute, ref reason)
+                && CheckSetUpTearDownMethod(fixtureType, "TestFixtureSetUp", NUnitFramework.FixtureSetUpAttribute, ref reason)
+                && CheckSetUpTearDownMethod(fixtureType, "TestFixtureTearDown", NUnitFramework.FixtureTearDownAttribute, ref reason);
+        }
+
+        /// <summary>
+        /// Internal helper to check a single setup or teardown method
+        /// </summary>
+        /// <param name="fixtureType">The type to be checked</param>
+        /// <param name="attributeName">The short name of the attribute to be checked</param>
+        /// <returns>True if the method is present no more than once and has a valid signature</returns>
+        private bool CheckSetUpTearDownMethod(Type fixtureType, string name, string attributeName, ref string reason)
+        {
+            int count = Reflect.CountMethodsWithAttribute(
+                fixtureType, attributeName,
+                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly,
+                true);
+
+            if (count == 0) return true;
+
+            if (count > 1)
+            {
+                reason = string.Format("More than one {0} method", name);
+                return false;
+            }
+
+            MethodInfo theMethod = Reflect.GetMethodWithAttribute(
+                fixtureType, attributeName,
+                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly,
+                true);
+
+            if (theMethod != null)
+            {
+                if (theMethod.IsStatic ||
+                    theMethod.IsAbstract ||
+                    !theMethod.IsPublic && !theMethod.IsFamily ||
+                    theMethod.GetParameters().Length != 0 ||
+                    !theMethod.ReturnType.Equals(typeof(void)))
+                {
+                    reason = string.Format("Invalid {0} method signature", name);
+                    return false;
+                }
+            }
+
+            return true;
+        }
+		#endregion
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Builders/SetUpFixtureBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Builders/SetUpFixtureBuilder.cs
@@ -1,35 +1,35 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core.Builders
-{
-	/// <summary>
-	/// SetUpFixtureBuilder knows how to build a SetUpFixture.
-	/// </summary>
-	public class SetUpFixtureBuilder : Extensibility.ISuiteBuilder
-	{	
-		public SetUpFixtureBuilder()
-		{
-			//
-			// TODO: Add constructor logic here	//
-		}
-
-		#region ISuiteBuilder Members
-
-		public Test BuildFrom(Type type)
-		{
-			return new SetUpFixture( type );
-		}
-
-		public bool CanBuildFrom(Type type)
-		{
-			return Reflect.HasAttribute( type, NUnitFramework.SetUpFixtureAttribute, false );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core.Builders
+{
+	/// <summary>
+	/// SetUpFixtureBuilder knows how to build a SetUpFixture.
+	/// </summary>
+	public class SetUpFixtureBuilder : Extensibility.ISuiteBuilder
+	{	
+		public SetUpFixtureBuilder()
+		{
+			//
+			// TODO: Add constructor logic here	//
+		}
+
+		#region ISuiteBuilder Members
+
+		public Test BuildFrom(Type type)
+		{
+			return new SetUpFixture( type );
+		}
+
+		public bool CanBuildFrom(Type type)
+		{
+			return Reflect.HasAttribute( type, NUnitFramework.SetUpFixtureAttribute, false );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Builders/TestAssemblyBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Builders/TestAssemblyBuilder.cs
@@ -1,213 +1,213 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Collections;
-using System.Reflection;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Core.Builders
-{
-	/// <summary>
-	/// Class that builds a TestSuite from an assembly
-	/// </summary>
-	public class TestAssemblyBuilder
-	{
-
-		#region Instance Fields
-		/// <summary>
-		/// The loaded assembly
-		/// </summary>
-		Assembly assembly;
-
-		/// <summary>
-		/// Our LegacySuite builder, which is only used when a 
-		/// fixture has been passed by name on the command line.
-		/// </summary>
-		ISuiteBuilder legacySuiteBuilder;
-
-		private TestAssemblyInfo assemblyInfo = null;
-
-		#endregion
-
-		#region Properties
-		public Assembly Assembly
-		{
-			get { return assembly; }
-		}
-
-		public TestAssemblyInfo AssemblyInfo
-		{
-			get 
-			{ 
-				if ( assemblyInfo == null && assembly != null )
-				{
-					string path = TestFixtureBuilder.GetAssemblyPath( assembly );
-					AssemblyReader rdr = new AssemblyReader( path );
-					Version runtimeVersion = new Version( rdr.ImageRuntimeVersion.Substring( 1 ) );
-					IList frameworks = CoreExtensions.Host.TestFrameworks.GetReferencedFrameworks( assembly );
-					assemblyInfo = new TestAssemblyInfo( path, runtimeVersion, frameworks );
-				}
-
-				return assemblyInfo;
-			}
-		}
-		#endregion
-
-		#region Constructor
-
-		public TestAssemblyBuilder()
-		{
-			// TODO: Keeping this separate till we can make
-			//it work in all situations.
-			legacySuiteBuilder = new NUnit.Core.Builders.LegacySuiteBuilder();
-		}
-
-		#endregion
-
-		#region Build Methods
-		public Test Build( string assemblyName, string testName, bool autoSuites )
-		{
-			if ( testName == null || testName == string.Empty )
-				return Build( assemblyName, autoSuites );
-
-			this.assembly = Load( assemblyName );
-			if ( assembly == null ) return null;
-
-			// If provided test name is actually the name of
-			// a type, we handle it specially
-			Type testType = assembly.GetType(testName);
-			if( testType != null )
-				return Build( assemblyName, testType, autoSuites );
-		
-			// Assume that testName is a namespace and get all fixtures in it
-			IList fixtures = GetFixtures( assembly, testName );
-			if ( fixtures.Count > 0 ) 
-				return BuildTestAssembly( assemblyName, fixtures, autoSuites );
-			return null;
-		}
-
-		public TestSuite Build( string assemblyName, bool autoSuites )
-		{
-			this.assembly = Load( assemblyName );
-			if ( this.assembly == null ) return null;
-
-			IList fixtures = GetFixtures( assembly, null );
-			return BuildTestAssembly( assemblyName, fixtures, autoSuites );
-		}
-
-		private Test Build( string assemblyName, Type testType, bool autoSuites )
-		{
-			// TODO: This is the only situation in which we currently
-			// recognize and load legacy suites. We need to determine 
-			// whether to allow them in more places.
-			if ( legacySuiteBuilder.CanBuildFrom( testType ) )
-				return legacySuiteBuilder.BuildFrom( testType );
-			else if ( TestFixtureBuilder.CanBuildFrom( testType ) )
-				return BuildTestAssembly( assemblyName,
-					new Test[] { TestFixtureBuilder.BuildFrom( testType ) }, autoSuites );
-			return null;
-		}
-
-		private TestSuite BuildTestAssembly( string assemblyName, IList fixtures, bool autoSuites )
-		{
-			TestSuite testAssembly = new TestSuite( assemblyName );
-
-			if ( autoSuites )
-			{
-				NamespaceTreeBuilder treeBuilder = 
-					new NamespaceTreeBuilder( testAssembly );
-				treeBuilder.Add( fixtures );
-                testAssembly = treeBuilder.RootSuite;
-			}
-			else 
-			foreach( TestSuite fixture in fixtures )
-			{
-				if ( fixture is SetUpFixture )
-				{
-					fixture.RunState = RunState.NotRunnable;
-					fixture.IgnoreReason = "SetUpFixture cannot be used when loading tests as a flat list of fixtures";
-				}
-
-				testAssembly.Add( fixture );
-			}
-
-			if ( fixtures.Count == 0 )
-			{
-				testAssembly.RunState = RunState.NotRunnable;
-				testAssembly.IgnoreReason = "Has no TestFixtures";
-			}
-			
-            NUnitFramework.ApplyCommonAttributes( assembly, testAssembly );
-
-			// TODO: Make this an option? Add Option to sort assemblies as well?
-			testAssembly.Sort();
-
-			return testAssembly;
-		}
-
-		#endregion
-
-		#region Helper Methods
-
-		private Assembly Load(string path)
-		{
-			Assembly assembly = null;
-
-			// Change currentDirectory in case assembly references unmanaged dlls
-			using( new DirectorySwapper( Path.GetDirectoryName( path ) ) )
-			{
-                // Throws if this isn't a managed assembly or if it was built
-				// with a later version of the same assembly. 
-				AssemblyName.GetAssemblyName( Path.GetFileName( path ) );
-				
-				// TODO: Figure out why we can't load using the assembly name
-				// in all cases. Might be a problem with the tests themselves.
-                assembly = Assembly.Load(Path.GetFileNameWithoutExtension(path));
-				
-                if ( assembly != null )
-                    CoreExtensions.Host.InstallAdhocExtensions( assembly );
-
-				NTrace.Info( "Loaded assembly " + assembly.FullName, "'TestAssemblyBuilder'" );
-
-				return assembly;
-			}
-		}
-
-		private IList GetFixtures( Assembly assembly, string ns )
-		{
-			ArrayList fixtures = new ArrayList();
-
-			IList testTypes = GetCandidateFixtureTypes( assembly, ns );
-			foreach(Type testType in testTypes)
-			{
-				if( TestFixtureBuilder.CanBuildFrom( testType ) )
-					fixtures.Add( TestFixtureBuilder.BuildFrom( testType ) );
-			}
-
-			return fixtures;
-		}
-	
-		private IList GetCandidateFixtureTypes( Assembly assembly, string ns )
-		{
-			IList types = assembly.GetTypes();
-				
-			if ( ns == null || ns == string.Empty || types.Count == 0 ) 
-				return types;
-
-			string prefix = ns + "." ;
-			
-			ArrayList result = new ArrayList();
-			foreach( Type type in types )
-				if ( type.FullName.StartsWith( prefix ) )
-					result.Add( type );
-
-			return result;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Reflection;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Core.Builders
+{
+	/// <summary>
+	/// Class that builds a TestSuite from an assembly
+	/// </summary>
+	public class TestAssemblyBuilder
+	{
+
+		#region Instance Fields
+		/// <summary>
+		/// The loaded assembly
+		/// </summary>
+		Assembly assembly;
+
+		/// <summary>
+		/// Our LegacySuite builder, which is only used when a 
+		/// fixture has been passed by name on the command line.
+		/// </summary>
+		ISuiteBuilder legacySuiteBuilder;
+
+		private TestAssemblyInfo assemblyInfo = null;
+
+		#endregion
+
+		#region Properties
+		public Assembly Assembly
+		{
+			get { return assembly; }
+		}
+
+		public TestAssemblyInfo AssemblyInfo
+		{
+			get 
+			{ 
+				if ( assemblyInfo == null && assembly != null )
+				{
+					string path = TestFixtureBuilder.GetAssemblyPath( assembly );
+					AssemblyReader rdr = new AssemblyReader( path );
+					Version runtimeVersion = new Version( rdr.ImageRuntimeVersion.Substring( 1 ) );
+					IList frameworks = CoreExtensions.Host.TestFrameworks.GetReferencedFrameworks( assembly );
+					assemblyInfo = new TestAssemblyInfo( path, runtimeVersion, frameworks );
+				}
+
+				return assemblyInfo;
+			}
+		}
+		#endregion
+
+		#region Constructor
+
+		public TestAssemblyBuilder()
+		{
+			// TODO: Keeping this separate till we can make
+			//it work in all situations.
+			legacySuiteBuilder = new NUnit.Core.Builders.LegacySuiteBuilder();
+		}
+
+		#endregion
+
+		#region Build Methods
+		public Test Build( string assemblyName, string testName, bool autoSuites )
+		{
+			if ( testName == null || testName == string.Empty )
+				return Build( assemblyName, autoSuites );
+
+			this.assembly = Load( assemblyName );
+			if ( assembly == null ) return null;
+
+			// If provided test name is actually the name of
+			// a type, we handle it specially
+			Type testType = assembly.GetType(testName);
+			if( testType != null )
+				return Build( assemblyName, testType, autoSuites );
+		
+			// Assume that testName is a namespace and get all fixtures in it
+			IList fixtures = GetFixtures( assembly, testName );
+			if ( fixtures.Count > 0 ) 
+				return BuildTestAssembly( assemblyName, fixtures, autoSuites );
+			return null;
+		}
+
+		public TestSuite Build( string assemblyName, bool autoSuites )
+		{
+			this.assembly = Load( assemblyName );
+			if ( this.assembly == null ) return null;
+
+			IList fixtures = GetFixtures( assembly, null );
+			return BuildTestAssembly( assemblyName, fixtures, autoSuites );
+		}
+
+		private Test Build( string assemblyName, Type testType, bool autoSuites )
+		{
+			// TODO: This is the only situation in which we currently
+			// recognize and load legacy suites. We need to determine 
+			// whether to allow them in more places.
+			if ( legacySuiteBuilder.CanBuildFrom( testType ) )
+				return legacySuiteBuilder.BuildFrom( testType );
+			else if ( TestFixtureBuilder.CanBuildFrom( testType ) )
+				return BuildTestAssembly( assemblyName,
+					new Test[] { TestFixtureBuilder.BuildFrom( testType ) }, autoSuites );
+			return null;
+		}
+
+		private TestSuite BuildTestAssembly( string assemblyName, IList fixtures, bool autoSuites )
+		{
+			TestSuite testAssembly = new TestSuite( assemblyName );
+
+			if ( autoSuites )
+			{
+				NamespaceTreeBuilder treeBuilder = 
+					new NamespaceTreeBuilder( testAssembly );
+				treeBuilder.Add( fixtures );
+                testAssembly = treeBuilder.RootSuite;
+			}
+			else 
+			foreach( TestSuite fixture in fixtures )
+			{
+				if ( fixture is SetUpFixture )
+				{
+					fixture.RunState = RunState.NotRunnable;
+					fixture.IgnoreReason = "SetUpFixture cannot be used when loading tests as a flat list of fixtures";
+				}
+
+				testAssembly.Add( fixture );
+			}
+
+			if ( fixtures.Count == 0 )
+			{
+				testAssembly.RunState = RunState.NotRunnable;
+				testAssembly.IgnoreReason = "Has no TestFixtures";
+			}
+			
+            NUnitFramework.ApplyCommonAttributes( assembly, testAssembly );
+
+			// TODO: Make this an option? Add Option to sort assemblies as well?
+			testAssembly.Sort();
+
+			return testAssembly;
+		}
+
+		#endregion
+
+		#region Helper Methods
+
+		private Assembly Load(string path)
+		{
+			Assembly assembly = null;
+
+			// Change currentDirectory in case assembly references unmanaged dlls
+			using( new DirectorySwapper( Path.GetDirectoryName( path ) ) )
+			{
+                // Throws if this isn't a managed assembly or if it was built
+				// with a later version of the same assembly. 
+				AssemblyName.GetAssemblyName( Path.GetFileName( path ) );
+				
+				// TODO: Figure out why we can't load using the assembly name
+				// in all cases. Might be a problem with the tests themselves.
+                assembly = Assembly.Load(Path.GetFileNameWithoutExtension(path));
+				
+                if ( assembly != null )
+                    CoreExtensions.Host.InstallAdhocExtensions( assembly );
+
+				NTrace.Info( "Loaded assembly " + assembly.FullName, "'TestAssemblyBuilder'" );
+
+				return assembly;
+			}
+		}
+
+		private IList GetFixtures( Assembly assembly, string ns )
+		{
+			ArrayList fixtures = new ArrayList();
+
+			IList testTypes = GetCandidateFixtureTypes( assembly, ns );
+			foreach(Type testType in testTypes)
+			{
+				if( TestFixtureBuilder.CanBuildFrom( testType ) )
+					fixtures.Add( TestFixtureBuilder.BuildFrom( testType ) );
+			}
+
+			return fixtures;
+		}
+	
+		private IList GetCandidateFixtureTypes( Assembly assembly, string ns )
+		{
+			IList types = assembly.GetTypes();
+				
+			if ( ns == null || ns == string.Empty || types.Count == 0 ) 
+				return types;
+
+			string prefix = ns + "." ;
+			
+			ArrayList result = new ArrayList();
+			foreach( Type type in types )
+				if ( type.FullName.StartsWith( prefix ) )
+					result.Add( type );
+
+			return result;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/CoreExtensions.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/CoreExtensions.cs
@@ -1,215 +1,215 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Collections;
-using System.Reflection;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// CoreExtensions is a singleton class that groups together all 
-	/// the extension points that are supported in the test domain.
-	/// It also provides access to the test builders and decorators
-	/// by other parts of the NUnit core.
-	/// </summary>
-	public class CoreExtensions : ExtensionHost, IService
-	{
-		#region Instance Fields
-		private IAddinRegistry addinRegistry;
-		private bool initialized;
-
-		private SuiteBuilderCollection suiteBuilders;
-		private TestCaseBuilderCollection testBuilders;
-		private TestDecoratorCollection testDecorators;
-		private EventListenerCollection listeners;
-
-//		private log4net.Appender.ConsoleAppender appender;
-		#endregion
-
-		#region CoreExtensions Singleton
-		private static CoreExtensions host;
-		public static CoreExtensions Host
-		{
-			get
-			{
-				if (host == null)
-					host = new CoreExtensions();
-
-				return host;
-			}
-		}
-		#endregion
-
-		#region Constructors
-		public CoreExtensions() 
-		{
-			this.suiteBuilders = new SuiteBuilderCollection(this);
-			this.testBuilders = new TestCaseBuilderCollection(this);
-			this.testDecorators = new TestDecoratorCollection(this);
-			this.listeners = new EventListenerCollection(this);
-
-			this.extensions = new IExtensionPoint[]
-				{ suiteBuilders, testBuilders, testDecorators, listeners };
-			this.supportedTypes = ExtensionType.Core;
-
-			// TODO: This should be somewhere central
-//			string logfile = Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData );
-//			logfile = Path.Combine( logfile, "NUnit" );
-//			logfile = Path.Combine( logfile, "NUnitTest.log" );
-//
-//			appender = new log4net.Appender.ConsoleAppender();
-////			appender.File = logfile;
-////			appender.AppendToFile = true;
-////			appender.LockingModel = new log4net.Appender.FileAppender.MinimalLock();
-//			appender.Layout = new log4net.Layout.PatternLayout(
-//				"%date{ABSOLUTE} %-5level [%4thread] %logger{1}: PID=%property{PID} %message%newline" );
-//			appender.Threshold = log4net.Core.Level.All;
-//			log4net.Config.BasicConfigurator.Configure(appender);
-		}
-		#endregion
-
-		#region Properties
-
-		public bool Initialized
-		{
-			get { return initialized; }
-		}
-
-		/// <summary>
-		/// Our AddinRegistry may be set from outside or passed into the domain
-		/// </summary>
-		public IAddinRegistry AddinRegistry
-		{
-			get 
-			{
-				if ( addinRegistry == null )
-					addinRegistry = AppDomain.CurrentDomain.GetData( "AddinRegistry" ) as IAddinRegistry;
-
-				return addinRegistry; 
-			}
-			set { addinRegistry = value; }
-		}
-
-		public ISuiteBuilder SuiteBuilders
-		{
-			get { return suiteBuilders; }
-		}
-
-		public ITestCaseBuilder TestBuilders
-		{
-			get { return testBuilders; }
-		}
-
-		public ITestDecorator TestDecorators
-		{
-			get { return testDecorators; }
-		}
-
-		public EventListener Listeners
-		{
-			get { return listeners; }
-		}
-
-		public FrameworkRegistry TestFrameworks
-		{
-			get { return frameworks; }
-		}
-		#endregion
-
-		#region Public Methods	
-		public void InstallBuiltins()
-		{
-			NTrace.Info( "Installing Builtins" );
-
-			// Define NUnit Framework
-			FrameworkRegistry.Register( "NUnit", "nunit.framework" );
-
-			// Install builtin SuiteBuilders - Note that the
-			// NUnitTestCaseBuilder is installed whenever
-			// an NUnitTestFixture is being populated and
-			// removed afterward.
-			suiteBuilders.Install( new Builders.NUnitTestFixtureBuilder() );
-			suiteBuilders.Install( new Builders.SetUpFixtureBuilder() );
-		}
-
-		public void InstallAddins()
-		{
-			NTrace.Info( "Installing Addins" );
-
-			if( AddinRegistry != null )
-			{
-				foreach (Addin addin in AddinRegistry.Addins)
-				{
-					if ( (this.ExtensionTypes & addin.ExtensionType) != 0 )
-					{
-						try
-						{
-							Type type = Type.GetType(addin.TypeName);
-							if ( type == null )
-							{
-								AddinRegistry.SetStatus( addin.Name, AddinStatus.Error, "Could not locate type" );
-								NTrace.Error( "Failed to load  " + addin.Name + " - Could not locate type" );
-							}
-							else if ( !InstallAddin( type ) )
-							{
-								AddinRegistry.SetStatus( addin.Name, AddinStatus.Error, "Install returned false" );
-								NTrace.Error( "Failed to load " +addin.Name + " - Install returned false" );
-							}
-							else
-								AddinRegistry.SetStatus( addin.Name, AddinStatus.Loaded, null );
-						}
-						catch( Exception ex )
-						{
-							AddinRegistry.SetStatus( addin.Name, AddinStatus.Error, ex.Message );
-							NTrace.Error( "Exception loading " + addin.Name + " - " + ex.Message );
-						}
-					}
-				}
-			}
-		}
-
-		public void InstallAdhocExtensions( Assembly assembly )
-		{
-			foreach ( Type type in assembly.GetExportedTypes() )
-			{
-				if ( type.GetCustomAttributes(typeof(NUnitAddinAttribute), false).Length == 1 )
-					InstallAddin( type );
-			}
-		}
-		#endregion
-
-		#region Helper Methods
-		private bool InstallAddin( Type type )
-		{
-			ConstructorInfo ctor = type.GetConstructor(Type.EmptyTypes);
-			object obj = ctor.Invoke( new object[0] );
-			IAddin theAddin = (IAddin)obj;
-
-			return theAddin.Install(this);
-		}
-		#endregion
-
-		#region IService Members
-
-		public void UnloadService()
-		{
-			// TODO:  Add CoreExtensions.UnloadService implementation
-		}
-
-		public void InitializeService()
-		{
-			InstallBuiltins();
-			InstallAddins();
-
-			initialized = true;
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Reflection;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// CoreExtensions is a singleton class that groups together all 
+	/// the extension points that are supported in the test domain.
+	/// It also provides access to the test builders and decorators
+	/// by other parts of the NUnit core.
+	/// </summary>
+	public class CoreExtensions : ExtensionHost, IService
+	{
+		#region Instance Fields
+		private IAddinRegistry addinRegistry;
+		private bool initialized;
+
+		private SuiteBuilderCollection suiteBuilders;
+		private TestCaseBuilderCollection testBuilders;
+		private TestDecoratorCollection testDecorators;
+		private EventListenerCollection listeners;
+
+//		private log4net.Appender.ConsoleAppender appender;
+		#endregion
+
+		#region CoreExtensions Singleton
+		private static CoreExtensions host;
+		public static CoreExtensions Host
+		{
+			get
+			{
+				if (host == null)
+					host = new CoreExtensions();
+
+				return host;
+			}
+		}
+		#endregion
+
+		#region Constructors
+		public CoreExtensions() 
+		{
+			this.suiteBuilders = new SuiteBuilderCollection(this);
+			this.testBuilders = new TestCaseBuilderCollection(this);
+			this.testDecorators = new TestDecoratorCollection(this);
+			this.listeners = new EventListenerCollection(this);
+
+			this.extensions = new IExtensionPoint[]
+				{ suiteBuilders, testBuilders, testDecorators, listeners };
+			this.supportedTypes = ExtensionType.Core;
+
+			// TODO: This should be somewhere central
+//			string logfile = Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData );
+//			logfile = Path.Combine( logfile, "NUnit" );
+//			logfile = Path.Combine( logfile, "NUnitTest.log" );
+//
+//			appender = new log4net.Appender.ConsoleAppender();
+////			appender.File = logfile;
+////			appender.AppendToFile = true;
+////			appender.LockingModel = new log4net.Appender.FileAppender.MinimalLock();
+//			appender.Layout = new log4net.Layout.PatternLayout(
+//				"%date{ABSOLUTE} %-5level [%4thread] %logger{1}: PID=%property{PID} %message%newline" );
+//			appender.Threshold = log4net.Core.Level.All;
+//			log4net.Config.BasicConfigurator.Configure(appender);
+		}
+		#endregion
+
+		#region Properties
+
+		public bool Initialized
+		{
+			get { return initialized; }
+		}
+
+		/// <summary>
+		/// Our AddinRegistry may be set from outside or passed into the domain
+		/// </summary>
+		public IAddinRegistry AddinRegistry
+		{
+			get 
+			{
+				if ( addinRegistry == null )
+					addinRegistry = AppDomain.CurrentDomain.GetData( "AddinRegistry" ) as IAddinRegistry;
+
+				return addinRegistry; 
+			}
+			set { addinRegistry = value; }
+		}
+
+		public ISuiteBuilder SuiteBuilders
+		{
+			get { return suiteBuilders; }
+		}
+
+		public ITestCaseBuilder TestBuilders
+		{
+			get { return testBuilders; }
+		}
+
+		public ITestDecorator TestDecorators
+		{
+			get { return testDecorators; }
+		}
+
+		public EventListener Listeners
+		{
+			get { return listeners; }
+		}
+
+		public FrameworkRegistry TestFrameworks
+		{
+			get { return frameworks; }
+		}
+		#endregion
+
+		#region Public Methods	
+		public void InstallBuiltins()
+		{
+			NTrace.Info( "Installing Builtins" );
+
+			// Define NUnit Framework
+			FrameworkRegistry.Register( "NUnit", "nunit.framework" );
+
+			// Install builtin SuiteBuilders - Note that the
+			// NUnitTestCaseBuilder is installed whenever
+			// an NUnitTestFixture is being populated and
+			// removed afterward.
+			suiteBuilders.Install( new Builders.NUnitTestFixtureBuilder() );
+			suiteBuilders.Install( new Builders.SetUpFixtureBuilder() );
+		}
+
+		public void InstallAddins()
+		{
+			NTrace.Info( "Installing Addins" );
+
+			if( AddinRegistry != null )
+			{
+				foreach (Addin addin in AddinRegistry.Addins)
+				{
+					if ( (this.ExtensionTypes & addin.ExtensionType) != 0 )
+					{
+						try
+						{
+							Type type = Type.GetType(addin.TypeName);
+							if ( type == null )
+							{
+								AddinRegistry.SetStatus( addin.Name, AddinStatus.Error, "Could not locate type" );
+								NTrace.Error( "Failed to load  " + addin.Name + " - Could not locate type" );
+							}
+							else if ( !InstallAddin( type ) )
+							{
+								AddinRegistry.SetStatus( addin.Name, AddinStatus.Error, "Install returned false" );
+								NTrace.Error( "Failed to load " +addin.Name + " - Install returned false" );
+							}
+							else
+								AddinRegistry.SetStatus( addin.Name, AddinStatus.Loaded, null );
+						}
+						catch( Exception ex )
+						{
+							AddinRegistry.SetStatus( addin.Name, AddinStatus.Error, ex.Message );
+							NTrace.Error( "Exception loading " + addin.Name + " - " + ex.Message );
+						}
+					}
+				}
+			}
+		}
+
+		public void InstallAdhocExtensions( Assembly assembly )
+		{
+			foreach ( Type type in assembly.GetExportedTypes() )
+			{
+				if ( type.GetCustomAttributes(typeof(NUnitAddinAttribute), false).Length == 1 )
+					InstallAddin( type );
+			}
+		}
+		#endregion
+
+		#region Helper Methods
+		private bool InstallAddin( Type type )
+		{
+			ConstructorInfo ctor = type.GetConstructor(Type.EmptyTypes);
+			object obj = ctor.Invoke( new object[0] );
+			IAddin theAddin = (IAddin)obj;
+
+			return theAddin.Install(this);
+		}
+		#endregion
+
+		#region IService Members
+
+		public void UnloadService()
+		{
+			// TODO:  Add CoreExtensions.UnloadService implementation
+		}
+
+		public void InitializeService()
+		{
+			InstallBuiltins();
+			InstallAddins();
+
+			initialized = true;
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/CultureDetector.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/CultureDetector.cs
@@ -1,127 +1,127 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-using System.Globalization;
-
-namespace NUnit.Core
-{
-	public class CultureDetector
-	{
-		private CultureInfo currentCulture;
-
-		// Set whenever we fail to support a list of platforms
-		private string reason = string.Empty;
-
-		/// <summary>
-		/// Default constructor uses the current culutre.
-		/// </summary>
-		public CultureDetector()
-		{
-			this.currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
-		}
-
-		/// <summary>
-		/// Contruct a CultureHelper for a particular culture for testing.
-		/// </summary>
-		/// <param name="culture">The culture to be used</param>
-		public CultureDetector( string culture )
-		{
-			this.currentCulture = new CultureInfo( culture );
-		}
-
-		/// <summary>
-		/// Test to determine if one of a collection of culturess
-		/// is being used currently.
-		/// </summary>
-		/// <param name="cultures"></param>
-		/// <returns></returns>
-		public bool IsCultureSupported( string[] cultures )
-		{
-			foreach( string culture in cultures )
-				if ( IsCultureSupported( culture ) )
-					return true;
-
-			return false;
-		}
-
-		/// <summary>
-		/// Tests to determine if the current culture is supported
-		/// based on a culture attribute.
-		/// </summary>
-		/// <param name="platformAttribute">The attribute to examine</param>
-		/// <returns></returns>
-		public bool IsCultureSupported( Attribute cultureAttribute )
-		{
-			//Use reflection to avoid dependency on a particular framework version
-			string include = (string)Reflect.GetPropertyValue( 
-				cultureAttribute, "Include", 
-				BindingFlags.Public | BindingFlags.Instance );
-
-			string exclude = (string)Reflect.GetPropertyValue(
-				cultureAttribute, "Exclude", 
-				BindingFlags.Public | BindingFlags.Instance );
-
-			try
-			{
-				if (include != null && !IsCultureSupported(include))
-				{
-					reason = string.Format("Only supported under culture {0}", include);
-					return false;
-				}
-
-				if (exclude != null && IsCultureSupported(exclude))
-				{
-					reason = string.Format("Not supported under culture {0}", exclude);
-					return false;
-				}
-			}
-			catch( ArgumentException ex )
-			{
-				reason = string.Format( "Invalid culture: {0}", ex.ParamName );
-				return false; 
-			}
-
-			return true;
-		}
-
-		/// <summary>
-		/// Test to determine if the a particular culture or comma-
-		/// delimited set of cultures is in use.
-		/// </summary>
-		/// <param name="platform">Name of the culture or comma-separated list of culture names</param>
-		/// <returns>True if the culture is in use on the system</returns>
-		public bool IsCultureSupported( string culture )
-		{
-			culture = culture.Trim();
-
-			if ( culture.IndexOf( ',' ) >= 0 )
-			{
-				if ( IsCultureSupported( culture.Split( new char[] { ',' } ) ) )
-					return true;
-			}
-			else
-			{
-				if( this.currentCulture.Name == culture || this.currentCulture.TwoLetterISOLanguageName == culture)
-					return true;
-			}
-
-			this.reason = "Only supported under culture " + culture;
-			return false;
-		}
-
-		/// <summary>
-		/// Return the last failure reason. Results are not
-		/// defined if called before IsSupported( Attribute )
-		/// is called.
-		/// </summary>
-		public string Reason
-		{
-			get { return reason; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+using System.Globalization;
+
+namespace NUnit.Core
+{
+	public class CultureDetector
+	{
+		private CultureInfo currentCulture;
+
+		// Set whenever we fail to support a list of platforms
+		private string reason = string.Empty;
+
+		/// <summary>
+		/// Default constructor uses the current culutre.
+		/// </summary>
+		public CultureDetector()
+		{
+			this.currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
+		}
+
+		/// <summary>
+		/// Contruct a CultureHelper for a particular culture for testing.
+		/// </summary>
+		/// <param name="culture">The culture to be used</param>
+		public CultureDetector( string culture )
+		{
+			this.currentCulture = new CultureInfo( culture );
+		}
+
+		/// <summary>
+		/// Test to determine if one of a collection of culturess
+		/// is being used currently.
+		/// </summary>
+		/// <param name="cultures"></param>
+		/// <returns></returns>
+		public bool IsCultureSupported( string[] cultures )
+		{
+			foreach( string culture in cultures )
+				if ( IsCultureSupported( culture ) )
+					return true;
+
+			return false;
+		}
+
+		/// <summary>
+		/// Tests to determine if the current culture is supported
+		/// based on a culture attribute.
+		/// </summary>
+		/// <param name="platformAttribute">The attribute to examine</param>
+		/// <returns></returns>
+		public bool IsCultureSupported( Attribute cultureAttribute )
+		{
+			//Use reflection to avoid dependency on a particular framework version
+			string include = (string)Reflect.GetPropertyValue( 
+				cultureAttribute, "Include", 
+				BindingFlags.Public | BindingFlags.Instance );
+
+			string exclude = (string)Reflect.GetPropertyValue(
+				cultureAttribute, "Exclude", 
+				BindingFlags.Public | BindingFlags.Instance );
+
+			try
+			{
+				if (include != null && !IsCultureSupported(include))
+				{
+					reason = string.Format("Only supported under culture {0}", include);
+					return false;
+				}
+
+				if (exclude != null && IsCultureSupported(exclude))
+				{
+					reason = string.Format("Not supported under culture {0}", exclude);
+					return false;
+				}
+			}
+			catch( ArgumentException ex )
+			{
+				reason = string.Format( "Invalid culture: {0}", ex.ParamName );
+				return false; 
+			}
+
+			return true;
+		}
+
+		/// <summary>
+		/// Test to determine if the a particular culture or comma-
+		/// delimited set of cultures is in use.
+		/// </summary>
+		/// <param name="platform">Name of the culture or comma-separated list of culture names</param>
+		/// <returns>True if the culture is in use on the system</returns>
+		public bool IsCultureSupported( string culture )
+		{
+			culture = culture.Trim();
+
+			if ( culture.IndexOf( ',' ) >= 0 )
+			{
+				if ( IsCultureSupported( culture.Split( new char[] { ',' } ) ) )
+					return true;
+			}
+			else
+			{
+				if( this.currentCulture.Name == culture || this.currentCulture.TwoLetterISOLanguageName == culture)
+					return true;
+			}
+
+			this.reason = "Only supported under culture " + culture;
+			return false;
+		}
+
+		/// <summary>
+		/// Return the last failure reason. Results are not
+		/// defined if called before IsSupported( Attribute )
+		/// is called.
+		/// </summary>
+		public string Reason
+		{
+			get { return reason; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/DelegatingTestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/DelegatingTestRunner.cs
@@ -1,174 +1,174 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-namespace NUnit.Core
-{
-	using System;
-	using System.Collections;
-	using System.IO;
-
-	/// <summary>
-	/// DelegatingTestRUnner is the abstract base for core TestRunner
-	/// implementations that operate by controlling a downstream
-	/// TestRunner. All calls are simply passed on to the
-	/// TestRunner that is provided to the constructor.
-	/// 
-	/// Although the class is abstract, it has no abstract 
-	/// methods specified because each implementation will
-	/// need to override different methods. All methods are
-	/// specified using interface syntax and the derived class
-	/// must explicitly implement TestRunner in order to 
-	/// redefine the selected methods.
-	/// </summary>
-	public abstract class DelegatingTestRunner : MarshalByRefObject, TestRunner
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// Our runner ID
-		/// </summary>
-		protected int runnerID;
-
-		/// <summary>
-		/// The downstream TestRunner
-		/// </summary>
-		private TestRunner testRunner;
-
-		/// <summary>
-		/// The event listener for the currently running test
-		/// </summary>
-		protected EventListener listener;
-
-		#endregion
-
-		#region Construction
-		public DelegatingTestRunner(TestRunner testRunner)
-		{
-			this.testRunner = testRunner;
-			this.runnerID = testRunner.ID;
-		}
-
-		/// <summary>
-		/// Protected constructor for runners that delay creation
-		/// of their downstream runner.
-		/// </summary>
-		protected DelegatingTestRunner( int runnerID )
-		{
-			this.runnerID = runnerID;
-		}
-		#endregion
-
-		#region Properties
-		public virtual int ID
-		{
-			get { return runnerID; }
-		}
-
-		public virtual bool Running
-		{
-			get { return testRunner != null && testRunner.Running; }
-		}
-
-		public virtual IList AssemblyInfo
-		{
-			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
-		}
-
-		public virtual ITest Test
-		{
-			get { return testRunner == null ? null : testRunner.Test; }
-		}
-
-		public virtual TestResult TestResult
-		{
-			get { return testRunner == null ? null : testRunner.TestResult; }
-		}
-
-		/// <summary>
-		/// Protected property copies any settings to the downstream test runner
-		/// when it is set. Derived runners overriding this should call the base
-		/// or copy the settings themselves.
-		/// </summary>
-		protected virtual TestRunner TestRunner
-		{
-			get { return testRunner; }
-			set { testRunner = value; }
-		}
-		#endregion
-
-		#region Load and Unload Methods
-		public virtual bool Load( TestPackage package )
-		{
-			return this.testRunner.Load( package );
-		}
-
-		public virtual void Unload()
-		{
-            if ( this.testRunner != null )
-			    this.testRunner.Unload();
-		}
-		#endregion
-
-		#region CountTestCases
-		public virtual int CountTestCases( ITestFilter filter )
-		{
-			return this.testRunner.CountTestCases( filter );
-		}
-		#endregion
-
-		#region Methods for Running Tests
-		public virtual TestResult Run(EventListener listener)
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			return this.testRunner.Run(listener);
-		}
-
-		public virtual TestResult Run(EventListener listener, ITestFilter filter)
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			return this.testRunner.Run(listener, filter);
-		}
-
-		public virtual void BeginRun( EventListener listener )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			this.testRunner.BeginRun( listener );
-		}
-
-		public virtual void BeginRun( EventListener listener, ITestFilter filter )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			this.testRunner.BeginRun( listener, filter );
-		}
-
-		public virtual TestResult EndRun()
-		{
-			return this.testRunner.EndRun();
-		}
-
-		public virtual void CancelRun()
-		{
-			this.testRunner.CancelRun();
-		}
-
-		public virtual void Wait()
-		{
-			this.testRunner.Wait();
-		}
-		#endregion
-
-		#region InitializeLifetimeService Override
-		public override object InitializeLifetimeService()
-		{
-			return null;
-		}
-		#endregion
-
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+namespace NUnit.Core
+{
+	using System;
+	using System.Collections;
+	using System.IO;
+
+	/// <summary>
+	/// DelegatingTestRUnner is the abstract base for core TestRunner
+	/// implementations that operate by controlling a downstream
+	/// TestRunner. All calls are simply passed on to the
+	/// TestRunner that is provided to the constructor.
+	/// 
+	/// Although the class is abstract, it has no abstract 
+	/// methods specified because each implementation will
+	/// need to override different methods. All methods are
+	/// specified using interface syntax and the derived class
+	/// must explicitly implement TestRunner in order to 
+	/// redefine the selected methods.
+	/// </summary>
+	public abstract class DelegatingTestRunner : MarshalByRefObject, TestRunner
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// Our runner ID
+		/// </summary>
+		protected int runnerID;
+
+		/// <summary>
+		/// The downstream TestRunner
+		/// </summary>
+		private TestRunner testRunner;
+
+		/// <summary>
+		/// The event listener for the currently running test
+		/// </summary>
+		protected EventListener listener;
+
+		#endregion
+
+		#region Construction
+		public DelegatingTestRunner(TestRunner testRunner)
+		{
+			this.testRunner = testRunner;
+			this.runnerID = testRunner.ID;
+		}
+
+		/// <summary>
+		/// Protected constructor for runners that delay creation
+		/// of their downstream runner.
+		/// </summary>
+		protected DelegatingTestRunner( int runnerID )
+		{
+			this.runnerID = runnerID;
+		}
+		#endregion
+
+		#region Properties
+		public virtual int ID
+		{
+			get { return runnerID; }
+		}
+
+		public virtual bool Running
+		{
+			get { return testRunner != null && testRunner.Running; }
+		}
+
+		public virtual IList AssemblyInfo
+		{
+			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
+		}
+
+		public virtual ITest Test
+		{
+			get { return testRunner == null ? null : testRunner.Test; }
+		}
+
+		public virtual TestResult TestResult
+		{
+			get { return testRunner == null ? null : testRunner.TestResult; }
+		}
+
+		/// <summary>
+		/// Protected property copies any settings to the downstream test runner
+		/// when it is set. Derived runners overriding this should call the base
+		/// or copy the settings themselves.
+		/// </summary>
+		protected virtual TestRunner TestRunner
+		{
+			get { return testRunner; }
+			set { testRunner = value; }
+		}
+		#endregion
+
+		#region Load and Unload Methods
+		public virtual bool Load( TestPackage package )
+		{
+			return this.testRunner.Load( package );
+		}
+
+		public virtual void Unload()
+		{
+            if ( this.testRunner != null )
+			    this.testRunner.Unload();
+		}
+		#endregion
+
+		#region CountTestCases
+		public virtual int CountTestCases( ITestFilter filter )
+		{
+			return this.testRunner.CountTestCases( filter );
+		}
+		#endregion
+
+		#region Methods for Running Tests
+		public virtual TestResult Run(EventListener listener)
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			return this.testRunner.Run(listener);
+		}
+
+		public virtual TestResult Run(EventListener listener, ITestFilter filter)
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			return this.testRunner.Run(listener, filter);
+		}
+
+		public virtual void BeginRun( EventListener listener )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			this.testRunner.BeginRun( listener );
+		}
+
+		public virtual void BeginRun( EventListener listener, ITestFilter filter )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			this.testRunner.BeginRun( listener, filter );
+		}
+
+		public virtual TestResult EndRun()
+		{
+			return this.testRunner.EndRun();
+		}
+
+		public virtual void CancelRun()
+		{
+			this.testRunner.CancelRun();
+		}
+
+		public virtual void Wait()
+		{
+			this.testRunner.Wait();
+		}
+		#endregion
+
+		#region InitializeLifetimeService Override
+		public override object InitializeLifetimeService()
+		{
+			return null;
+		}
+		#endregion
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/DirectorySwapper.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/DirectorySwapper.cs
@@ -1,44 +1,44 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Utility class that allows changing the current directory 
-	/// for the duration of some lexical scope and guaranteeing
-	/// that it will be restored upon exit.
-	/// 
-	/// Use it as follows:
-	///    using( new DirectorySwapper( @"X:\New\Path" )
-	///    {
-	///        // Code that operates in the new current directory
-	///    }
-	///    
-	/// Instantiating DirectorySwapper without a path merely
-	/// saves the current directory, but does not change it.
-	/// </summary>
-	public class DirectorySwapper : IDisposable
-	{
-		private string savedDirectoryName;
-
-		public DirectorySwapper() : this( null ) { }
-
-		public DirectorySwapper( string directoryName )
-		{
-			savedDirectoryName = Environment.CurrentDirectory;
-			
-			if ( directoryName != null && directoryName != string.Empty )
-				Environment.CurrentDirectory = directoryName;
-		}
-
-		public void Dispose()
-		{
-			Environment.CurrentDirectory = savedDirectoryName;
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Utility class that allows changing the current directory 
+	/// for the duration of some lexical scope and guaranteeing
+	/// that it will be restored upon exit.
+	/// 
+	/// Use it as follows:
+	///    using( new DirectorySwapper( @"X:\New\Path" )
+	///    {
+	///        // Code that operates in the new current directory
+	///    }
+	///    
+	/// Instantiating DirectorySwapper without a path merely
+	/// saves the current directory, but does not change it.
+	/// </summary>
+	public class DirectorySwapper : IDisposable
+	{
+		private string savedDirectoryName;
+
+		public DirectorySwapper() : this( null ) { }
+
+		public DirectorySwapper( string directoryName )
+		{
+			savedDirectoryName = Environment.CurrentDirectory;
+			
+			if ( directoryName != null && directoryName != string.Empty )
+				Environment.CurrentDirectory = directoryName;
+		}
+
+		public void Dispose()
+		{
+			Environment.CurrentDirectory = savedDirectoryName;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/EventListenerTextWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/EventListenerTextWriter.cs
@@ -1,114 +1,114 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-namespace NUnit.Core
-{
-	using System;
-	using System.IO;
-	using System.Text;
-
-	public class EventListenerTextWriter : TextWriter
-	{
-		private EventListener eventListener;
-		private TestOutputType type;
-
-		public EventListenerTextWriter( EventListener eventListener, TestOutputType type )
-		{
-			this.eventListener = eventListener;
-			this.type = type;
-		}
-		override public void Write(char aChar)
-		{
-			this.eventListener.TestOutput( new TestOutput( aChar.ToString(), this.type ) );
-		}
-
-		override public void Write(string aString)
-		{
-			this.eventListener.TestOutput( new TestOutput( aString, this.type ) );
-		}
-
-		override public void WriteLine(string aString)
-		{
-			this.eventListener.TestOutput( new TestOutput( aString + this.NewLine, this.type ) );
-		}
-
-		override public System.Text.Encoding Encoding
-		{
-			get { return Encoding.Default; }
-		}
-	}
-
-	/// <summary>
-	/// This wrapper adds buffering to improve cross-domain performance.
-	/// </summary>
-	public class BufferedEventListenerTextWriter : TextWriter
-	{
-		private EventListener eventListener;
-		private TestOutputType type;
-		private const int MAX_BUFFER = 1024;
-		private StringBuilder sb = new StringBuilder( MAX_BUFFER );
-
-		public BufferedEventListenerTextWriter( EventListener eventListener, TestOutputType type )
-		{
-			this.eventListener = eventListener;
-			this.type = type;
-		}
-
-		public override Encoding Encoding
-		{
-			get
-			{
-				return Encoding.Default;
-			}
-		}
-	
-		override public void Write(char ch)
-		{
-			lock( sb )
-			{
-				sb.Append( ch );
-				this.CheckBuffer();
-			}
-		}
-
-		override public void Write(string str)
-		{
-			lock( sb )
-			{
-				sb.Append( str );
-				this.CheckBuffer();
-			}
-		}
-
-		override public void WriteLine(string str)
-		{
-			lock( sb )
-			{
-				sb.Append( str );
-				sb.Append( base.NewLine );
-				this.CheckBuffer();
-			}
-		}
-
-		override public void Flush()
-		{
-			if ( sb.Length > 0 )
-			{
-				lock( sb )
-				{
-					TestOutput output = new TestOutput(sb.ToString(), this.type);
-					this.eventListener.TestOutput( output );
-					sb.Length = 0;
-				}
-			}
-		}
-
-		private void CheckBuffer()
-		{
-			if ( sb.Length >= MAX_BUFFER )
-				this.Flush();
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+namespace NUnit.Core
+{
+	using System;
+	using System.IO;
+	using System.Text;
+
+	public class EventListenerTextWriter : TextWriter
+	{
+		private EventListener eventListener;
+		private TestOutputType type;
+
+		public EventListenerTextWriter( EventListener eventListener, TestOutputType type )
+		{
+			this.eventListener = eventListener;
+			this.type = type;
+		}
+		override public void Write(char aChar)
+		{
+			this.eventListener.TestOutput( new TestOutput( aChar.ToString(), this.type ) );
+		}
+
+		override public void Write(string aString)
+		{
+			this.eventListener.TestOutput( new TestOutput( aString, this.type ) );
+		}
+
+		override public void WriteLine(string aString)
+		{
+			this.eventListener.TestOutput( new TestOutput( aString + this.NewLine, this.type ) );
+		}
+
+		override public System.Text.Encoding Encoding
+		{
+			get { return Encoding.Default; }
+		}
+	}
+
+	/// <summary>
+	/// This wrapper adds buffering to improve cross-domain performance.
+	/// </summary>
+	public class BufferedEventListenerTextWriter : TextWriter
+	{
+		private EventListener eventListener;
+		private TestOutputType type;
+		private const int MAX_BUFFER = 1024;
+		private StringBuilder sb = new StringBuilder( MAX_BUFFER );
+
+		public BufferedEventListenerTextWriter( EventListener eventListener, TestOutputType type )
+		{
+			this.eventListener = eventListener;
+			this.type = type;
+		}
+
+		public override Encoding Encoding
+		{
+			get
+			{
+				return Encoding.Default;
+			}
+		}
+	
+		override public void Write(char ch)
+		{
+			lock( sb )
+			{
+				sb.Append( ch );
+				this.CheckBuffer();
+			}
+		}
+
+		override public void Write(string str)
+		{
+			lock( sb )
+			{
+				sb.Append( str );
+				this.CheckBuffer();
+			}
+		}
+
+		override public void WriteLine(string str)
+		{
+			lock( sb )
+			{
+				sb.Append( str );
+				sb.Append( base.NewLine );
+				this.CheckBuffer();
+			}
+		}
+
+		override public void Flush()
+		{
+			if ( sb.Length > 0 )
+			{
+				lock( sb )
+				{
+					TestOutput output = new TestOutput(sb.ToString(), this.type);
+					this.eventListener.TestOutput( output );
+					sb.Length = 0;
+				}
+			}
+		}
+
+		private void CheckBuffer()
+		{
+			if ( sb.Length >= MAX_BUFFER )
+				this.Flush();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/EventPump.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/EventPump.cs
@@ -1,169 +1,169 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Threading;
-
-	/// <summary>
-	/// EventPump pulls events out of an EventQueue and sends
-	/// them to a listener. It is used to send events back to
-	/// the client without using the CallContext of the test
-	/// runner thread.
-	/// </summary>
-	public class EventPump : IDisposable
-	{
-		#region Instance Variables
-		/// <summary>
-		/// The downstream listener to which we send events
-		/// </summary>
-		EventListener eventListener;
-		
-		/// <summary>
-		/// The queue that holds our events
-		/// </summary>
-		EventQueue events;
-		
-		/// <summary>
-		/// Thread to do the pumping
-		/// </summary>
-		Thread pumpThread;
-
-		/// <summary>
-		/// Indicator that we are pumping events
-		/// </summary>
-		private bool pumping;
-		
-		/// <summary>
-		/// Indicator that we are stopping
-		/// </summary>
-		private bool stopping;
-
-		/// <summary>
-		/// If true, stop after sending RunFinished
-		/// </summary>
-		private bool autostop;
-		#endregion
-
-		#region Constructor
-		/// <summary>
-		/// Constructor
-		/// </summary>
-		/// <param name="eventListener">The EventListener to receive events</param>
-		/// <param name="events">The event queue to pull events from</param>
-		/// <param name="autostop">Set to true to stop pump after RunFinished</param>
-		public EventPump( EventListener eventListener, EventQueue events, bool autostop)
-		{
-			this.eventListener = eventListener;
-			this.events = events;
-			this.autostop = autostop;
-		}
-		#endregion
-
-		#region Properties
-		// TODO: Replace booleans with a state?
-		/// <summary>
-		/// Returns true if we are pumping events
-		/// </summary>
-		public bool Pumping
-		{
-			get { return pumping; }
-		}
-
-		/// <summary>
-		/// Returns true if a stop is in progress
-		/// </summary>
-		public bool Stopping
-		{
-			get { return stopping; }
-		}
-		#endregion
-
-		#region Public Methods
-		/// <summary>
-		/// Dispose stops the pump
-		/// </summary>
-		public void Dispose()
-		{
-			Stop();
-		}
-
-		/// <summary>
-		/// Start the pump
-		/// </summary>
-		public void Start()
-		{
-			if ( !this.Pumping )  // Ignore if already started
-			{
-				this.pumpThread = new Thread( new ThreadStart( PumpThreadProc ) );
-				this.pumpThread.Name = "EventPumpThread";
-				pumping = true;
-				this.pumpThread.Start();
-			}
-		}
-
-		/// <summary>
-		/// Tell the pump to stop after emptying the queue.
-		/// </summary>
-		public void Stop()
-		{
-			if ( this.Pumping && !this.Stopping ) // Ignore extra calls
-			{
-				lock( events )
-				{
-					stopping = true;
-					Monitor.Pulse( events ); // In case thread is waiting
-				}
-				this.pumpThread.Join();
-			}
-		}
-		#endregion
-
-		#region PumpThreadProc
-		/// <summary>
-		/// Our thread proc for removing items from the event
-		/// queue and sending them on. Note that this would
-		/// need to do more locking if any other thread were
-		/// removing events from the queue.
-		/// </summary>
-		private void PumpThreadProc()
-		{
-			EventListener hostListeners = CoreExtensions.Host.Listeners;
-			Monitor.Enter( events );
-            try
-            {
-                while (this.events.Count > 0 || !stopping)
-                {
-                    while (this.events.Count > 0)
-                    {
-                        Event e = this.events.Dequeue();
-                        e.Send(this.eventListener);
-						e.Send(hostListeners);
-                        if (autostop && e is RunFinishedEvent)
-                            stopping = true;
-                    }
-                    // Will be pulsed if there are any events added
-                    // or if it's time to stop the pump.
-                    if (!stopping)
-                        Monitor.Wait(events);
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new ApplicationException("Exception in pump thread", ex);
-            }
-			finally
-			{
-				Monitor.Exit( events );
-				pumping = false;
-				stopping = false;
-				//pumpThread = null;
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Threading;
+
+	/// <summary>
+	/// EventPump pulls events out of an EventQueue and sends
+	/// them to a listener. It is used to send events back to
+	/// the client without using the CallContext of the test
+	/// runner thread.
+	/// </summary>
+	public class EventPump : IDisposable
+	{
+		#region Instance Variables
+		/// <summary>
+		/// The downstream listener to which we send events
+		/// </summary>
+		EventListener eventListener;
+		
+		/// <summary>
+		/// The queue that holds our events
+		/// </summary>
+		EventQueue events;
+		
+		/// <summary>
+		/// Thread to do the pumping
+		/// </summary>
+		Thread pumpThread;
+
+		/// <summary>
+		/// Indicator that we are pumping events
+		/// </summary>
+		private bool pumping;
+		
+		/// <summary>
+		/// Indicator that we are stopping
+		/// </summary>
+		private bool stopping;
+
+		/// <summary>
+		/// If true, stop after sending RunFinished
+		/// </summary>
+		private bool autostop;
+		#endregion
+
+		#region Constructor
+		/// <summary>
+		/// Constructor
+		/// </summary>
+		/// <param name="eventListener">The EventListener to receive events</param>
+		/// <param name="events">The event queue to pull events from</param>
+		/// <param name="autostop">Set to true to stop pump after RunFinished</param>
+		public EventPump( EventListener eventListener, EventQueue events, bool autostop)
+		{
+			this.eventListener = eventListener;
+			this.events = events;
+			this.autostop = autostop;
+		}
+		#endregion
+
+		#region Properties
+		// TODO: Replace booleans with a state?
+		/// <summary>
+		/// Returns true if we are pumping events
+		/// </summary>
+		public bool Pumping
+		{
+			get { return pumping; }
+		}
+
+		/// <summary>
+		/// Returns true if a stop is in progress
+		/// </summary>
+		public bool Stopping
+		{
+			get { return stopping; }
+		}
+		#endregion
+
+		#region Public Methods
+		/// <summary>
+		/// Dispose stops the pump
+		/// </summary>
+		public void Dispose()
+		{
+			Stop();
+		}
+
+		/// <summary>
+		/// Start the pump
+		/// </summary>
+		public void Start()
+		{
+			if ( !this.Pumping )  // Ignore if already started
+			{
+				this.pumpThread = new Thread( new ThreadStart( PumpThreadProc ) );
+				this.pumpThread.Name = "EventPumpThread";
+				pumping = true;
+				this.pumpThread.Start();
+			}
+		}
+
+		/// <summary>
+		/// Tell the pump to stop after emptying the queue.
+		/// </summary>
+		public void Stop()
+		{
+			if ( this.Pumping && !this.Stopping ) // Ignore extra calls
+			{
+				lock( events )
+				{
+					stopping = true;
+					Monitor.Pulse( events ); // In case thread is waiting
+				}
+				this.pumpThread.Join();
+			}
+		}
+		#endregion
+
+		#region PumpThreadProc
+		/// <summary>
+		/// Our thread proc for removing items from the event
+		/// queue and sending them on. Note that this would
+		/// need to do more locking if any other thread were
+		/// removing events from the queue.
+		/// </summary>
+		private void PumpThreadProc()
+		{
+			EventListener hostListeners = CoreExtensions.Host.Listeners;
+			Monitor.Enter( events );
+            try
+            {
+                while (this.events.Count > 0 || !stopping)
+                {
+                    while (this.events.Count > 0)
+                    {
+                        Event e = this.events.Dequeue();
+                        e.Send(this.eventListener);
+						e.Send(hostListeners);
+                        if (autostop && e is RunFinishedEvent)
+                            stopping = true;
+                    }
+                    // Will be pulsed if there are any events added
+                    // or if it's time to stop the pump.
+                    if (!stopping)
+                        Monitor.Wait(events);
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new ApplicationException("Exception in pump thread", ex);
+            }
+			finally
+			{
+				Monitor.Exit( events );
+				pumping = false;
+				stopping = false;
+				//pumpThread = null;
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/EventQueue.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/EventQueue.cs
@@ -1,195 +1,195 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-using System.Threading;
-
-namespace NUnit.Core
-{
-	#region Individual Event Classes
-
-	/// <summary>
-	/// NUnit.Core.Event is the abstract base for all stored events.
-	/// An Event is the stored representation of a call to the 
-	/// EventListener interface and is used to record such calls
-	/// or to queue them for forwarding on another thread or at
-	/// a later time.
-	/// </summary>
-	public abstract class Event
-	{
-		abstract public void Send( EventListener listener );
-	}
-
-	public class RunStartedEvent : Event
-	{
-		string name;
-		int testCount;
-
-		public RunStartedEvent( string name, int testCount )
-		{
-			this.name = name;
-			this.testCount = testCount;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			listener.RunStarted(name, testCount);
-		}
-	}
-
-	public class RunFinishedEvent : Event
-	{
-		TestResult result;
-		Exception exception;
-
-		public RunFinishedEvent( TestResult result )
-		{
-			this.result = result;
-		}
-
-		public RunFinishedEvent( Exception exception )
-		{
-			this.exception = exception;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			if ( this.exception != null )
-				listener.RunFinished( this.exception );
-			else
-				listener.RunFinished( this.result );
-		}
-	}
-
-	public class TestStartedEvent : Event
-	{
-		TestName testName;
-
-		public TestStartedEvent( TestName testName )
-		{
-			this.testName = testName;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			listener.TestStarted( this.testName );
-		}
-	}
-			
-	public class TestFinishedEvent : Event
-	{
-		TestCaseResult result;
-
-		public TestFinishedEvent( TestCaseResult result )
-		{
-			this.result = result;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			listener.TestFinished( this.result );
-		}
-	}
-
-	public class SuiteStartedEvent : Event
-	{
-		TestName suiteName;
-
-		public SuiteStartedEvent( TestName suiteName )
-		{
-			this.suiteName = suiteName;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			listener.SuiteStarted( this.suiteName );
-		}
-	}
-
-	public class SuiteFinishedEvent : Event
-	{
-		TestSuiteResult result;
-
-		public SuiteFinishedEvent( TestSuiteResult result )
-		{
-			this.result = result;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			listener.SuiteFinished( this.result );
-		}
-	}
-
-	public class UnhandledExceptionEvent : Event
-	{
-		Exception exception;
-
-		public UnhandledExceptionEvent( Exception exception )
-		{
-			this.exception = exception;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			listener.UnhandledException( this.exception );
-		}
-	}
-
-	public class OutputEvent : Event
-	{
-		TestOutput output;
-
-		public OutputEvent( TestOutput output )
-		{
-			this.output = output;
-		}
-
-		public override void Send( EventListener listener )
-		{
-			listener.TestOutput( this.output );
-		}
-	}
-
-	#endregion
-
-	/// <summary>
-	/// Implements a queue of work items each of which
-	/// is queued as a WaitCallback.
-	/// </summary>
-	public class EventQueue
-	{
-		private Queue queue = new Queue();
-
-		public int Count
-		{
-			get 
-			{
-				lock( this )
-				{
-					return this.queue.Count; 
-				}
-			}
-		}
-
-		public void Enqueue( Event e )
-		{
-			lock( this )
-			{
-				this.queue.Enqueue( e );
-				Monitor.Pulse( this );
-			}
-		}
-
-		public Event Dequeue()
-		{
-			lock( this )
-			{
-				return (Event)this.queue.Dequeue();
-			}
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+using System.Threading;
+
+namespace NUnit.Core
+{
+	#region Individual Event Classes
+
+	/// <summary>
+	/// NUnit.Core.Event is the abstract base for all stored events.
+	/// An Event is the stored representation of a call to the 
+	/// EventListener interface and is used to record such calls
+	/// or to queue them for forwarding on another thread or at
+	/// a later time.
+	/// </summary>
+	public abstract class Event
+	{
+		abstract public void Send( EventListener listener );
+	}
+
+	public class RunStartedEvent : Event
+	{
+		string name;
+		int testCount;
+
+		public RunStartedEvent( string name, int testCount )
+		{
+			this.name = name;
+			this.testCount = testCount;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			listener.RunStarted(name, testCount);
+		}
+	}
+
+	public class RunFinishedEvent : Event
+	{
+		TestResult result;
+		Exception exception;
+
+		public RunFinishedEvent( TestResult result )
+		{
+			this.result = result;
+		}
+
+		public RunFinishedEvent( Exception exception )
+		{
+			this.exception = exception;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			if ( this.exception != null )
+				listener.RunFinished( this.exception );
+			else
+				listener.RunFinished( this.result );
+		}
+	}
+
+	public class TestStartedEvent : Event
+	{
+		TestName testName;
+
+		public TestStartedEvent( TestName testName )
+		{
+			this.testName = testName;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			listener.TestStarted( this.testName );
+		}
+	}
+			
+	public class TestFinishedEvent : Event
+	{
+		TestCaseResult result;
+
+		public TestFinishedEvent( TestCaseResult result )
+		{
+			this.result = result;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			listener.TestFinished( this.result );
+		}
+	}
+
+	public class SuiteStartedEvent : Event
+	{
+		TestName suiteName;
+
+		public SuiteStartedEvent( TestName suiteName )
+		{
+			this.suiteName = suiteName;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			listener.SuiteStarted( this.suiteName );
+		}
+	}
+
+	public class SuiteFinishedEvent : Event
+	{
+		TestSuiteResult result;
+
+		public SuiteFinishedEvent( TestSuiteResult result )
+		{
+			this.result = result;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			listener.SuiteFinished( this.result );
+		}
+	}
+
+	public class UnhandledExceptionEvent : Event
+	{
+		Exception exception;
+
+		public UnhandledExceptionEvent( Exception exception )
+		{
+			this.exception = exception;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			listener.UnhandledException( this.exception );
+		}
+	}
+
+	public class OutputEvent : Event
+	{
+		TestOutput output;
+
+		public OutputEvent( TestOutput output )
+		{
+			this.output = output;
+		}
+
+		public override void Send( EventListener listener )
+		{
+			listener.TestOutput( this.output );
+		}
+	}
+
+	#endregion
+
+	/// <summary>
+	/// Implements a queue of work items each of which
+	/// is queued as a WaitCallback.
+	/// </summary>
+	public class EventQueue
+	{
+		private Queue queue = new Queue();
+
+		public int Count
+		{
+			get 
+			{
+				lock( this )
+				{
+					return this.queue.Count; 
+				}
+			}
+		}
+
+		public void Enqueue( Event e )
+		{
+			lock( this )
+			{
+				this.queue.Enqueue( e );
+				Monitor.Pulse( this );
+			}
+		}
+
+		public Event Dequeue()
+		{
+			lock( this )
+			{
+				return (Event)this.queue.Dequeue();
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Extensibility/EventListenerCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Extensibility/EventListenerCollection.cs
@@ -1,86 +1,86 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// EventListenerCollection holds multiple event listeners
-	/// and relays all event calls to each of them.
-	/// </summary>
-	public class EventListenerCollection : ExtensionPoint, EventListener
-	{
-		#region Constructor
-		public EventListenerCollection( IExtensionHost host )
-			: base( "EventListeners", host ) { }
-		#endregion
-
-		#region EventListener Members
-		public void RunStarted(string name, int testCount)
-		{
-			foreach( EventListener listener in extensions )
-				listener.RunStarted( name, testCount );
-		}
-
-		public void RunFinished(TestResult result)
-		{
-			foreach( EventListener listener in extensions )
-				listener.RunFinished( result );
-		}
-
-		public void RunFinished(Exception exception)
-		{
-			foreach( EventListener listener in extensions )
-				listener.RunFinished( exception );
-		}
-
-		public void SuiteStarted(TestName testName)
-		{
-			foreach( EventListener listener in extensions )
-				listener.SuiteStarted( testName );
-		}
-
-		public void SuiteFinished(TestSuiteResult result)
-		{
-			foreach( EventListener listener in extensions )
-				listener.SuiteFinished( result );
-		}
-
-		public void TestStarted(TestName testName)
-		{
-			foreach( EventListener listener in extensions )
-				listener.TestStarted( testName );
-		}
-
-		public void TestFinished(TestCaseResult result)
-		{
-			foreach( EventListener listener in extensions )
-				listener.TestFinished( result );
-		}
-
-		public void UnhandledException(Exception exception)
-		{
-			foreach( EventListener listener in extensions )
-				listener.UnhandledException( exception );
-		}
-
-		public void TestOutput(TestOutput testOutput)
-		{
-			foreach( EventListener listener in extensions )
-				listener.TestOutput( testOutput );
-		}
-
-		#endregion
-
-		#region ExtensionPoint Overrides
-		protected override bool ValidExtension(object extension)
-		{
-			return extension is EventListener; 
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// EventListenerCollection holds multiple event listeners
+	/// and relays all event calls to each of them.
+	/// </summary>
+	public class EventListenerCollection : ExtensionPoint, EventListener
+	{
+		#region Constructor
+		public EventListenerCollection( IExtensionHost host )
+			: base( "EventListeners", host ) { }
+		#endregion
+
+		#region EventListener Members
+		public void RunStarted(string name, int testCount)
+		{
+			foreach( EventListener listener in extensions )
+				listener.RunStarted( name, testCount );
+		}
+
+		public void RunFinished(TestResult result)
+		{
+			foreach( EventListener listener in extensions )
+				listener.RunFinished( result );
+		}
+
+		public void RunFinished(Exception exception)
+		{
+			foreach( EventListener listener in extensions )
+				listener.RunFinished( exception );
+		}
+
+		public void SuiteStarted(TestName testName)
+		{
+			foreach( EventListener listener in extensions )
+				listener.SuiteStarted( testName );
+		}
+
+		public void SuiteFinished(TestSuiteResult result)
+		{
+			foreach( EventListener listener in extensions )
+				listener.SuiteFinished( result );
+		}
+
+		public void TestStarted(TestName testName)
+		{
+			foreach( EventListener listener in extensions )
+				listener.TestStarted( testName );
+		}
+
+		public void TestFinished(TestCaseResult result)
+		{
+			foreach( EventListener listener in extensions )
+				listener.TestFinished( result );
+		}
+
+		public void UnhandledException(Exception exception)
+		{
+			foreach( EventListener listener in extensions )
+				listener.UnhandledException( exception );
+		}
+
+		public void TestOutput(TestOutput testOutput)
+		{
+			foreach( EventListener listener in extensions )
+				listener.TestOutput( testOutput );
+		}
+
+		#endregion
+
+		#region ExtensionPoint Overrides
+		protected override bool ValidExtension(object extension)
+		{
+			return extension is EventListener; 
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Extensibility/FrameworkRegistry.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Extensibility/FrameworkRegistry.cs
@@ -1,60 +1,60 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-using System.Collections;
-
-namespace NUnit.Core.Extensibility
-{
-    public class FrameworkRegistry : IFrameworkRegistry
-    {
-        #region Instance Fields
-        /// <summary>
-        /// List of FrameworkInfo structs for supported frameworks
-        /// </summary>
-        private Hashtable testFrameworks = new Hashtable();
-        #endregion
-
-        #region IFrameworkRegistry Members
-        /// <summary>
-        /// Register a framework. NUnit registers itself using this method. Add-ins that
-        /// work with or emulate a different framework may register themselves as well.
-        /// </summary>
-        /// <param name="frameworkName">The name of the framework</param>
-        /// <param name="assemblyName">The name of the assembly that framework users reference</param>
-        public void Register(string frameworkName, string assemblyName)
-        {
-            testFrameworks[frameworkName] = new TestFramework(frameworkName, assemblyName);
-        }
-		#endregion
-
-		#region Other Methods
-        /// <summary>
-        /// Get a list of known frameworks referenced by an assembly
-        /// </summary>
-        /// <param name="assembly">The assembly to be examined</param>
-        /// <returns>A list of AssemblyNames</returns>
-        public IList GetReferencedFrameworks(Assembly assembly)
-        {
-            ArrayList referencedAssemblies = new ArrayList();
-
-            foreach (AssemblyName assemblyRef in assembly.GetReferencedAssemblies())
-            {
-                foreach (TestFramework info in testFrameworks.Values)
-                {
-                    if (assemblyRef.Name == info.AssemblyName)
-                    {
-                        referencedAssemblies.Add(assemblyRef);
-                        break;
-                    }
-                }
-            }
-
-            return referencedAssemblies;
-        }
-        #endregion
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+using System.Collections;
+
+namespace NUnit.Core.Extensibility
+{
+    public class FrameworkRegistry : IFrameworkRegistry
+    {
+        #region Instance Fields
+        /// <summary>
+        /// List of FrameworkInfo structs for supported frameworks
+        /// </summary>
+        private Hashtable testFrameworks = new Hashtable();
+        #endregion
+
+        #region IFrameworkRegistry Members
+        /// <summary>
+        /// Register a framework. NUnit registers itself using this method. Add-ins that
+        /// work with or emulate a different framework may register themselves as well.
+        /// </summary>
+        /// <param name="frameworkName">The name of the framework</param>
+        /// <param name="assemblyName">The name of the assembly that framework users reference</param>
+        public void Register(string frameworkName, string assemblyName)
+        {
+            testFrameworks[frameworkName] = new TestFramework(frameworkName, assemblyName);
+        }
+		#endregion
+
+		#region Other Methods
+        /// <summary>
+        /// Get a list of known frameworks referenced by an assembly
+        /// </summary>
+        /// <param name="assembly">The assembly to be examined</param>
+        /// <returns>A list of AssemblyNames</returns>
+        public IList GetReferencedFrameworks(Assembly assembly)
+        {
+            ArrayList referencedAssemblies = new ArrayList();
+
+            foreach (AssemblyName assemblyRef in assembly.GetReferencedAssemblies())
+            {
+                foreach (TestFramework info in testFrameworks.Values)
+                {
+                    if (assemblyRef.Name == info.AssemblyName)
+                    {
+                        referencedAssemblies.Add(assemblyRef);
+                        break;
+                    }
+                }
+            }
+
+            return referencedAssemblies;
+        }
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Extensibility/SuiteBuilderCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Extensibility/SuiteBuilderCollection.cs
@@ -1,68 +1,68 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// SuiteBuilderCollection is an ExtensionPoint for SuiteBuilders and
-	/// implements the ISuiteBuilder interface itself, passing calls 
-	/// on to the individual builders.
-	/// 
-	/// The builders are added to the collection by inserting them at
-	/// the start, as to take precedence over those added earlier. 
-	/// </summary>
-	public class SuiteBuilderCollection : ExtensionPoint, ISuiteBuilder
-	{
-		#region Constructor
-		/// <summary>
-		/// Default constructor
-		/// </summary>
-		public SuiteBuilderCollection(IExtensionHost host)
-			: base("SuiteBuilders", host ) { }
-		#endregion
-
-		#region ISuiteBuilder Members
-
-		/// <summary>
-		/// Examine the type and determine if it is suitable for
-		/// any SuiteBuilder to use in building a TestSuite
-		/// </summary>
-		/// <param name="type">The type of the fixture to be used</param>
-		/// <returns>True if the type can be used to build a TestSuite</returns>
-		public bool CanBuildFrom(Type type)
-		{
-			foreach( ISuiteBuilder builder in extensions )
-				if ( builder.CanBuildFrom( type ) )
-					return true;
-			return false;
-		}
-
-		/// <summary>
-		/// Build a TestSuite from type provided.
-		/// </summary>
-		/// <param name="type">The type of the fixture to be used</param>
-		/// <returns>A TestSuite or null</returns>
-		public Test BuildFrom(Type type)
-		{
-			foreach( ISuiteBuilder builder in extensions )
-				if ( builder.CanBuildFrom( type ) )
-					return builder.BuildFrom( type );
-			return null;
-		}
-
-		#endregion
-
-		#region ExtensionPoint Overrides
-		protected override bool ValidExtension(object extension)
-		{
-			return extension is ISuiteBuilder; 
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// SuiteBuilderCollection is an ExtensionPoint for SuiteBuilders and
+	/// implements the ISuiteBuilder interface itself, passing calls 
+	/// on to the individual builders.
+	/// 
+	/// The builders are added to the collection by inserting them at
+	/// the start, as to take precedence over those added earlier. 
+	/// </summary>
+	public class SuiteBuilderCollection : ExtensionPoint, ISuiteBuilder
+	{
+		#region Constructor
+		/// <summary>
+		/// Default constructor
+		/// </summary>
+		public SuiteBuilderCollection(IExtensionHost host)
+			: base("SuiteBuilders", host ) { }
+		#endregion
+
+		#region ISuiteBuilder Members
+
+		/// <summary>
+		/// Examine the type and determine if it is suitable for
+		/// any SuiteBuilder to use in building a TestSuite
+		/// </summary>
+		/// <param name="type">The type of the fixture to be used</param>
+		/// <returns>True if the type can be used to build a TestSuite</returns>
+		public bool CanBuildFrom(Type type)
+		{
+			foreach( ISuiteBuilder builder in extensions )
+				if ( builder.CanBuildFrom( type ) )
+					return true;
+			return false;
+		}
+
+		/// <summary>
+		/// Build a TestSuite from type provided.
+		/// </summary>
+		/// <param name="type">The type of the fixture to be used</param>
+		/// <returns>A TestSuite or null</returns>
+		public Test BuildFrom(Type type)
+		{
+			foreach( ISuiteBuilder builder in extensions )
+				if ( builder.CanBuildFrom( type ) )
+					return builder.BuildFrom( type );
+			return null;
+		}
+
+		#endregion
+
+		#region ExtensionPoint Overrides
+		protected override bool ValidExtension(object extension)
+		{
+			return extension is ISuiteBuilder; 
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Extensibility/TestCaseBuilderCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Extensibility/TestCaseBuilderCollection.cs
@@ -1,67 +1,67 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-using System.Reflection;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// TestCaseBuilderCollection is an ExtensionPoint for TestCaseBuilders 
-	/// and implements the ITestCaseBuilder interface itself, passing calls 
-	/// on to the individual builders.
-	/// 
-	/// The builders are added to the collection by inserting them at
-	/// the start, as to take precedence over those added earlier. 
-	/// </summary>
-	public class TestCaseBuilderCollection : ExtensionPoint, ITestCaseBuilder
-	{
-		#region Constructor
-		public TestCaseBuilderCollection(IExtensionHost host)
-			: base("TestCaseBuilders", host) { }
-		#endregion
-		
-		#region ITestCaseBuilder Members
-
-		/// <summary>
-		/// Examine the method and determine if it is suitable for
-		/// any TestCaseBuilder to use in building a TestCase
-		/// </summary>
-		/// <param name="method">The method to be used as a test case</param>
-		/// <returns>True if the type can be used to build a TestCase</returns>
-		public bool CanBuildFrom( MethodInfo method )
-		{
-			foreach( ITestCaseBuilder builder in extensions )
-				if ( builder.CanBuildFrom( method ) )
-					return true;
-			return false;
-		}
-
-		/// <summary>
-		/// Build a TestCase from the method provided.
-		/// </summary>
-		/// <param name="method">The method to be used</param>
-		/// <returns>A TestCase or null</returns>
-		public Test BuildFrom( MethodInfo method )
-		{
-			foreach( ITestCaseBuilder builder in extensions )
-			{
-				if ( builder.CanBuildFrom( method ) )
-					return builder.BuildFrom( method );
-			}
-
-			return null;
-		}
-		#endregion
-
-		#region ExtensionPoint Overrides
-		protected override bool ValidExtension(object extension)
-		{
-			return extension is ITestCaseBuilder; 
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// TestCaseBuilderCollection is an ExtensionPoint for TestCaseBuilders 
+	/// and implements the ITestCaseBuilder interface itself, passing calls 
+	/// on to the individual builders.
+	/// 
+	/// The builders are added to the collection by inserting them at
+	/// the start, as to take precedence over those added earlier. 
+	/// </summary>
+	public class TestCaseBuilderCollection : ExtensionPoint, ITestCaseBuilder
+	{
+		#region Constructor
+		public TestCaseBuilderCollection(IExtensionHost host)
+			: base("TestCaseBuilders", host) { }
+		#endregion
+		
+		#region ITestCaseBuilder Members
+
+		/// <summary>
+		/// Examine the method and determine if it is suitable for
+		/// any TestCaseBuilder to use in building a TestCase
+		/// </summary>
+		/// <param name="method">The method to be used as a test case</param>
+		/// <returns>True if the type can be used to build a TestCase</returns>
+		public bool CanBuildFrom( MethodInfo method )
+		{
+			foreach( ITestCaseBuilder builder in extensions )
+				if ( builder.CanBuildFrom( method ) )
+					return true;
+			return false;
+		}
+
+		/// <summary>
+		/// Build a TestCase from the method provided.
+		/// </summary>
+		/// <param name="method">The method to be used</param>
+		/// <returns>A TestCase or null</returns>
+		public Test BuildFrom( MethodInfo method )
+		{
+			foreach( ITestCaseBuilder builder in extensions )
+			{
+				if ( builder.CanBuildFrom( method ) )
+					return builder.BuildFrom( method );
+			}
+
+			return null;
+		}
+		#endregion
+
+		#region ExtensionPoint Overrides
+		protected override bool ValidExtension(object extension)
+		{
+			return extension is ITestCaseBuilder; 
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Extensibility/TestDecoratorCollection.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Extensibility/TestDecoratorCollection.cs
@@ -1,43 +1,43 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-using System.Reflection;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// TestDecoratorCollection is an ExtensionPoint for TestDecorators and
-	/// implements the ITestDecorator interface itself, passing calls 
-	/// on to the individual decorators.
-	/// </summary>
-	public class TestDecoratorCollection : ExtensionPoint, ITestDecorator
-	{
-		#region Constructor
-		public TestDecoratorCollection(IExtensionHost host)
-			: base( "TestDecorators", host ) { }
-		#endregion
-
-		#region ITestDecorator Members
-		public Test Decorate(Test test, MemberInfo member)
-		{
-			Test decoratedTest = test;
-
-			foreach( ITestDecorator decorator in extensions )
-				decoratedTest = decorator.Decorate( decoratedTest, member );
-
-			return decoratedTest;
-		}
-		#endregion
-
-		#region ExtensionPoint Overrides
-		protected override bool ValidExtension(object extension)
-		{
-			return extension is ITestDecorator; 
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// TestDecoratorCollection is an ExtensionPoint for TestDecorators and
+	/// implements the ITestDecorator interface itself, passing calls 
+	/// on to the individual decorators.
+	/// </summary>
+	public class TestDecoratorCollection : ExtensionPoint, ITestDecorator
+	{
+		#region Constructor
+		public TestDecoratorCollection(IExtensionHost host)
+			: base( "TestDecorators", host ) { }
+		#endregion
+
+		#region ITestDecorator Members
+		public Test Decorate(Test test, MemberInfo member)
+		{
+			Test decoratedTest = test;
+
+			foreach( ITestDecorator decorator in extensions )
+				decoratedTest = decorator.Decorate( decoratedTest, member );
+
+			return decoratedTest;
+		}
+		#endregion
+
+		#region ExtensionPoint Overrides
+		protected override bool ValidExtension(object extension)
+		{
+			return extension is ITestDecorator; 
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/ExtensionHost.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/ExtensionHost.cs
@@ -1,57 +1,57 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// ExtensionHost is the abstract base class used for
-	/// all extension hosts. It provides an array of 
-	/// extension points and a FrameworkRegistry and
-	/// implements the IExtensionHost interface. Derived
-	/// classes must initialize the extension points.
-	/// </summary>
-	public abstract class ExtensionHost : IExtensionHost
-	{
-		protected FrameworkRegistry frameworks;
-
-		protected IExtensionPoint[] extensions;
-
-		protected ExtensionType supportedTypes;
-
-		public ExtensionHost()
-		{
-			frameworks = new FrameworkRegistry();
-		}
-
-		#region IExtensionHost Interface
-		public IExtensionPoint[] ExtensionPoints
-		{
-			get { return extensions; }
-		}
-
-		public IFrameworkRegistry FrameworkRegistry
-		{
-			get { return frameworks; }
-		}
-
-		public IExtensionPoint GetExtensionPoint( string name )
-		{
-			foreach ( IExtensionPoint extensionPoint in extensions )
-				if ( extensionPoint.Name == name )
-					return extensionPoint;
-
-			return null;
-		}
-
-		public ExtensionType ExtensionTypes
-		{
-			get { return supportedTypes; }
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// ExtensionHost is the abstract base class used for
+	/// all extension hosts. It provides an array of 
+	/// extension points and a FrameworkRegistry and
+	/// implements the IExtensionHost interface. Derived
+	/// classes must initialize the extension points.
+	/// </summary>
+	public abstract class ExtensionHost : IExtensionHost
+	{
+		protected FrameworkRegistry frameworks;
+
+		protected IExtensionPoint[] extensions;
+
+		protected ExtensionType supportedTypes;
+
+		public ExtensionHost()
+		{
+			frameworks = new FrameworkRegistry();
+		}
+
+		#region IExtensionHost Interface
+		public IExtensionPoint[] ExtensionPoints
+		{
+			get { return extensions; }
+		}
+
+		public IFrameworkRegistry FrameworkRegistry
+		{
+			get { return frameworks; }
+		}
+
+		public IExtensionPoint GetExtensionPoint( string name )
+		{
+			foreach ( IExtensionPoint extensionPoint in extensions )
+				if ( extensionPoint.Name == name )
+					return extensionPoint;
+
+			return null;
+		}
+
+		public ExtensionType ExtensionTypes
+		{
+			get { return supportedTypes; }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/ExtensionPoint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/ExtensionPoint.cs
@@ -1,74 +1,74 @@
-using System;
-using System.Collections;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// ExtensionPoint is used as a base class for all 
-	/// extension points.
-	/// </summary>
-	public abstract class ExtensionPoint : IExtensionPoint
-	{
-		private string name;
-		private IExtensionHost host;
-
-		protected ArrayList extensions = new ArrayList();
-
-		#region Constructor
-		public ExtensionPoint(string name, IExtensionHost host)
-		{
-			this.name = name;
-			this.host = host;
-		}
-		#endregion
-
-		#region IExtensionPoint Members
-		/// <summary>
-		/// Get the name of this extension point
-		/// </summary>
-		public string Name
-		{
-			get { return this.name; }
-		}
-
-		/// <summary>
-		/// Get the host that provides this extension point
-		/// </summary>
-		public IExtensionHost Host
-		{
-			get { return this.host; }
-		}
-
-		/// <summary>
-		/// Install an extension at this extension point. If the
-		/// extension object does not meet the requirements for
-		/// this extension point, an exception is thrown.
-		/// </summary>
-		/// <param name="extension">The extension to install</param>
-		public void Install(object extension)
-		{
-			if ( !ValidExtension( extension ) )
-				throw new ArgumentException( 
-					extension.GetType().FullName + " is not {0} extension point", "extension" );
-
-			extensions.Add( extension );
-		}
-
-		/// <summary>
-		/// Removes an extension from this extension point. If the
-		/// extension object is not present, the method returns
-		/// without error.
-		/// </summary>
-		/// <param name="extension"></param>
-		public void Remove(object extension)
-		{
-			extensions.Remove( extension );
-		}
-		#endregion
-
-		#region Abstract Methods
-		protected abstract bool ValidExtension(object extension);
-		#endregion
-	}
-}
+using System;
+using System.Collections;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// ExtensionPoint is used as a base class for all 
+	/// extension points.
+	/// </summary>
+	public abstract class ExtensionPoint : IExtensionPoint
+	{
+		private string name;
+		private IExtensionHost host;
+
+		protected ArrayList extensions = new ArrayList();
+
+		#region Constructor
+		public ExtensionPoint(string name, IExtensionHost host)
+		{
+			this.name = name;
+			this.host = host;
+		}
+		#endregion
+
+		#region IExtensionPoint Members
+		/// <summary>
+		/// Get the name of this extension point
+		/// </summary>
+		public string Name
+		{
+			get { return this.name; }
+		}
+
+		/// <summary>
+		/// Get the host that provides this extension point
+		/// </summary>
+		public IExtensionHost Host
+		{
+			get { return this.host; }
+		}
+
+		/// <summary>
+		/// Install an extension at this extension point. If the
+		/// extension object does not meet the requirements for
+		/// this extension point, an exception is thrown.
+		/// </summary>
+		/// <param name="extension">The extension to install</param>
+		public void Install(object extension)
+		{
+			if ( !ValidExtension( extension ) )
+				throw new ArgumentException( 
+					extension.GetType().FullName + " is not {0} extension point", "extension" );
+
+			extensions.Add( extension );
+		}
+
+		/// <summary>
+		/// Removes an extension from this extension point. If the
+		/// extension object is not present, the method returns
+		/// without error.
+		/// </summary>
+		/// <param name="extension"></param>
+		public void Remove(object extension)
+		{
+			extensions.Remove( extension );
+		}
+		#endregion
+
+		#region Abstract Methods
+		protected abstract bool ValidExtension(object extension);
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/IgnoreDecorator.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/IgnoreDecorator.cs
@@ -1,49 +1,49 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Ignore Decorator is an alternative method of marking tests to
-	/// be ignored. It is currently not used, since the test builders
-	/// take care of the ignore attribute.
-	/// </summary>
-	public class IgnoreDecorator : Extensibility.ITestDecorator
-	{
-		public IgnoreDecorator( string ignoreAttributeType )
-		{
-		}
-
-		#region ITestDecorator Members
-
-//		public Test Decorate(Test test, MethodInfo method)
-//		{
-//			return DecorateTest( test, method );
-//		}
-//
-//		public Test Decorate(Test test, Type fixtureType)
-//		{
-//			return DecorateTest( test, fixtureType );
-//		}
-
-		public Test Decorate( Test test, MemberInfo member )
-		{
-			Attribute ignoreAttribute = Reflect.GetAttribute( member, NUnitFramework.IgnoreAttribute, false );
-
-			if ( ignoreAttribute != null )
-			{
-				test.RunState = RunState.Ignored;
-				test.IgnoreReason = NUnitFramework.GetIgnoreReason( ignoreAttribute );
-			}
-
-			return test;
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Ignore Decorator is an alternative method of marking tests to
+	/// be ignored. It is currently not used, since the test builders
+	/// take care of the ignore attribute.
+	/// </summary>
+	public class IgnoreDecorator : Extensibility.ITestDecorator
+	{
+		public IgnoreDecorator( string ignoreAttributeType )
+		{
+		}
+
+		#region ITestDecorator Members
+
+//		public Test Decorate(Test test, MethodInfo method)
+//		{
+//			return DecorateTest( test, method );
+//		}
+//
+//		public Test Decorate(Test test, Type fixtureType)
+//		{
+//			return DecorateTest( test, fixtureType );
+//		}
+
+		public Test Decorate( Test test, MemberInfo member )
+		{
+			Attribute ignoreAttribute = Reflect.GetAttribute( member, NUnitFramework.IgnoreAttribute, false );
+
+			if ( ignoreAttribute != null )
+			{
+				test.RunState = RunState.Ignored;
+				test.IgnoreReason = NUnitFramework.GetIgnoreReason( ignoreAttribute );
+			}
+
+			return test;
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/InvalidSuiteException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/InvalidSuiteException.cs
@@ -1,44 +1,44 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Runtime.Serialization;
-
-	[Serializable]
-	public class InvalidSuiteException : ApplicationException 
-	{
-		public InvalidSuiteException () : base() 
-		{} 
-
-		/// <summary>
-		/// Standard constructor
-		/// </summary>
-		/// <param name="message">The error message that explains 
-		/// the reason for the exception</param>
-		public InvalidSuiteException(string message) : base (message)
-		{}
-
-		/// <summary>
-		/// Standard constructor
-		/// </summary>
-		/// <param name="message">The error message that explains 
-		/// the reason for the exception</param>
-		/// <param name="inner">The exception that caused the 
-		/// current exception</param>
-		public InvalidSuiteException(string message, Exception inner) :
-			base(message, inner) 
-		{}
-
-		/// <summary>
-		/// Serialization Constructor
-		/// </summary>
-		protected InvalidSuiteException(SerializationInfo info, 
-			StreamingContext context) : base(info,context){}
-
-	}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Runtime.Serialization;
+
+	[Serializable]
+	public class InvalidSuiteException : ApplicationException 
+	{
+		public InvalidSuiteException () : base() 
+		{} 
+
+		/// <summary>
+		/// Standard constructor
+		/// </summary>
+		/// <param name="message">The error message that explains 
+		/// the reason for the exception</param>
+		public InvalidSuiteException(string message) : base (message)
+		{}
+
+		/// <summary>
+		/// Standard constructor
+		/// </summary>
+		/// <param name="message">The error message that explains 
+		/// the reason for the exception</param>
+		/// <param name="inner">The exception that caused the 
+		/// current exception</param>
+		public InvalidSuiteException(string message, Exception inner) :
+			base(message, inner) 
+		{}
+
+		/// <summary>
+		/// Serialization Constructor
+		/// </summary>
+		protected InvalidSuiteException(SerializationInfo info, 
+			StreamingContext context) : base(info,context){}
+
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/InvalidTestFixtureException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/InvalidTestFixtureException.cs
@@ -1,34 +1,34 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Runtime.Serialization;
-
-	/// <summary>
-	/// Summary description for NoTestMethodsException.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class InvalidTestFixtureException : ApplicationException
-	{
-		public InvalidTestFixtureException() : base() {}
-
-		public InvalidTestFixtureException(string message) : base(message)
-		{}
-
-		public InvalidTestFixtureException(string message, Exception inner) : base(message, inner)
-		{}
-
-		/// <summary>
-		/// Serialization Constructor
-		/// </summary>
-		protected InvalidTestFixtureException(SerializationInfo info, 
-			StreamingContext context) : base(info,context){}
-
-	}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Runtime.Serialization;
+
+	/// <summary>
+	/// Summary description for NoTestMethodsException.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class InvalidTestFixtureException : ApplicationException
+	{
+		public InvalidTestFixtureException() : base() {}
+
+		public InvalidTestFixtureException(string message) : base(message)
+		{}
+
+		public InvalidTestFixtureException(string message, Exception inner) : base(message, inner)
+		{}
+
+		/// <summary>
+		/// Serialization Constructor
+		/// </summary>
+		protected InvalidTestFixtureException(SerializationInfo info, 
+			StreamingContext context) : base(info,context){}
+
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/LegacySuite.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/LegacySuite.cs
@@ -1,85 +1,85 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Represents a test suite constructed from a type that has a static Suite property
-	/// </summary>
-	public class LegacySuite : TestSuite
-	{
-		#region Static Methods
-
-		public static PropertyInfo GetSuiteProperty( Type testClass )
-		{
-			if( testClass == null )
-				return null;
-
-			PropertyInfo property = Reflect.GetPropertyWithAttribute( 
-				testClass, 
-				NUnitFramework.SuiteAttribute,
-				BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly );
-
-			return property;
-		}
-
-		#endregion
-
-		#region Constructors
-
-		public LegacySuite( Type fixtureType ) : base( fixtureType )
-		{
-            PropertyInfo suiteProperty = GetSuiteProperty( fixtureType );
-
-            if (suiteProperty == null)
-                throw new ArgumentException( "Invalid argument to LegacySuite constructor", "fixtureType" );
-
-            this.fixtureSetUp = NUnitFramework.GetFixtureSetUpMethod(fixtureType);
-            this.fixtureTearDown = NUnitFramework.GetFixtureTearDownMethod(fixtureType);
-
-            MethodInfo method = suiteProperty.GetGetMethod(true);
-
-            if (method.GetParameters().Length == 0)
-            {
-                Type returnType = method.ReturnType;
-
-                if (returnType.FullName == "NUnit.Core.TestSuite")
-                {
-                    TestSuite suite = (TestSuite)suiteProperty.GetValue(null, new Object[0]);
-                    foreach (Test test in suite.Tests)
-                        this.Add(test);
-                }
-                else if (typeof(IEnumerable).IsAssignableFrom(returnType))
-                {
-                    foreach (object obj in (IEnumerable)suiteProperty.GetValue(null, new object[0]))
-                    {
-                        Type type = obj as Type;
-						if ( type != null && TestFixtureBuilder.CanBuildFrom(type) )
-							this.Add( TestFixtureBuilder.BuildFrom(type) );
-						else
-							this.Add(obj);
-                    }
-                }
-                else
-                {
-                    this.RunState = RunState.NotRunnable;
-                    this.IgnoreReason = "Suite property must return either TestSuite or IEnumerable";
-                }
-            }
-            else
-            {
-                this.RunState = RunState.NotRunnable;
-                this.IgnoreReason = "Suite property may not be indexed";
-            }
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Represents a test suite constructed from a type that has a static Suite property
+	/// </summary>
+	public class LegacySuite : TestSuite
+	{
+		#region Static Methods
+
+		public static PropertyInfo GetSuiteProperty( Type testClass )
+		{
+			if( testClass == null )
+				return null;
+
+			PropertyInfo property = Reflect.GetPropertyWithAttribute( 
+				testClass, 
+				NUnitFramework.SuiteAttribute,
+				BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly );
+
+			return property;
+		}
+
+		#endregion
+
+		#region Constructors
+
+		public LegacySuite( Type fixtureType ) : base( fixtureType )
+		{
+            PropertyInfo suiteProperty = GetSuiteProperty( fixtureType );
+
+            if (suiteProperty == null)
+                throw new ArgumentException( "Invalid argument to LegacySuite constructor", "fixtureType" );
+
+            this.fixtureSetUp = NUnitFramework.GetFixtureSetUpMethod(fixtureType);
+            this.fixtureTearDown = NUnitFramework.GetFixtureTearDownMethod(fixtureType);
+
+            MethodInfo method = suiteProperty.GetGetMethod(true);
+
+            if (method.GetParameters().Length == 0)
+            {
+                Type returnType = method.ReturnType;
+
+                if (returnType.FullName == "NUnit.Core.TestSuite")
+                {
+                    TestSuite suite = (TestSuite)suiteProperty.GetValue(null, new Object[0]);
+                    foreach (Test test in suite.Tests)
+                        this.Add(test);
+                }
+                else if (typeof(IEnumerable).IsAssignableFrom(returnType))
+                {
+                    foreach (object obj in (IEnumerable)suiteProperty.GetValue(null, new object[0]))
+                    {
+                        Type type = obj as Type;
+						if ( type != null && TestFixtureBuilder.CanBuildFrom(type) )
+							this.Add( TestFixtureBuilder.BuildFrom(type) );
+						else
+							this.Add(obj);
+                    }
+                }
+                else
+                {
+                    this.RunState = RunState.NotRunnable;
+                    this.IgnoreReason = "Suite property must return either TestSuite or IEnumerable";
+                }
+            }
+            else
+            {
+                this.RunState = RunState.NotRunnable;
+                this.IgnoreReason = "Suite property may not be indexed";
+            }
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Log4NetCapture.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Log4NetCapture.cs
@@ -1,180 +1,180 @@
-// ****************************************************************
-// Copyright 2008, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Reflection;
-using BF = System.Reflection.BindingFlags;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Proxy class for operations on a real log4net appender,
-	/// allowing NUnit to work with multiple versions of log4net
-	/// and to fail gracefully if no log4net assembly is present.
-	/// </summary>
-	public class Log4NetCapture : LogCapture
-	{
-		private Assembly log4netAssembly;
-		private Type appenderType;
-		private Type basicConfiguratorType;
-
-		private object appender;
-		private bool isInitialized;
-
-		// Layout codes that work for versions from 
-		// log4net 1.2.0.30714 to 1.2.10:
-		//
-		//	%a = domain friendly name
-		//	%c = logger name (%c{1} = last component )
-		//	%d = date and time
-		//	%d{ABSOLUTE} = time only
-		//	%l = source location of the error
-		//	%m = message
-		//	%n = newline
-		//	%p = level
-		//	%r = elapsed milliseconds since program start
-		//	%t = thread
-		//	%x = nested diagnostic content (NDC)
-		private static readonly string logFormat =
-			"%d{ABSOLUTE} %-5p [%4t] %c{1} [%x]- %m%n";
-
-		protected override void StartCapture()
-		{
-			if ( IsInitialized )
-			{
-				string threshold = DefaultThreshold;
-				if ( !SetLoggingThreshold( threshold ) )
-					SetLoggingThreshold( "Error" );
-
-				SetAppenderTextWriter( this.Writer );
-				ConfigureAppender();
-			}
-		}
-
-		protected override void StopCapture()
-		{
-			if ( appender != null )
-			{
-				SetLoggingThreshold( "Off" );
-				SetAppenderTextWriter( null );
-			}
-		}
-
-		#region Helpers
-		private bool IsInitialized
-		{
-			get
-			{
-				if ( isInitialized )
-					return true;
-
-				try
-				{
-					log4netAssembly = Assembly.Load( "log4net" );
-					if ( log4netAssembly == null ) return false;
-
-					appenderType = log4netAssembly.GetType( 
-						"log4net.Appender.TextWriterAppender", false, false );
-					if ( appenderType == null ) return false;
-
-					basicConfiguratorType = log4netAssembly.GetType( 
-						"log4net.Config.BasicConfigurator", false, false );
-					if ( basicConfiguratorType == null ) return false;
-
-					appender = TryCreateAppender();
-					if ( appender == null ) return false;
-
-					SetAppenderLogFormat( logFormat );
-
-					isInitialized = true;
-				}
-				catch
-				{
-				}
-
-				return isInitialized;
-			}
-		}
-
-		private Assembly TryLoadLog4NetAssembly()
-		{
-			Assembly assembly = null;
-
-			try
-			{
-				assembly = Assembly.Load( "log4net" );
-			}
-			catch
-			{
-				return null; 
-			}
-
-			return assembly;
-		}
-
-		/// <summary>
-		/// Attempt to create a TextWriterAppender using reflection,
-		/// failing silently if it is not possible.
-		/// </summary>
-		private object TryCreateAppender()
-		{
-			ConstructorInfo ctor = appenderType.GetConstructor( Type.EmptyTypes );
-			object appender = ctor.Invoke( new object[0] );
-
-			return appender;
-		}
-
-		private void SetAppenderLogFormat( string logFormat )
-		{
-			Type patternLayoutType = log4netAssembly.GetType( 
-				"log4net.Layout.PatternLayout", false, false );
-			if ( patternLayoutType == null ) return;
-
-			ConstructorInfo ctor = patternLayoutType.GetConstructor( new Type[] { typeof(string) } );
-			if ( ctor != null )
-			{
-				object patternLayout = ctor.Invoke( new object[] { logFormat } );
-
-				if ( patternLayout != null )
-				{
-					PropertyInfo prop = appenderType.GetProperty( "Layout", BF.Public | BF.Instance | BF.SetProperty );
-					if ( prop != null )
-						prop.SetValue( appender, patternLayout, null );
-				}
-			} 
-		}
-
-		private bool SetLoggingThreshold( string threshold )
-		{
-			PropertyInfo prop = appenderType.GetProperty( "Threshold", BF.Public | BF.Instance | BF.SetProperty );
-			if ( prop == null ) return false;
-
-			Type levelType = prop.PropertyType;
-			FieldInfo levelField = levelType.GetField( threshold, BF.Public | BF.Static | BF.IgnoreCase );
-			if ( levelField == null ) return false;
-
-			object level = levelField.GetValue( null );
-			prop.SetValue( appender, level, null );
-			return true;
-		}
-
-		private void SetAppenderTextWriter( TextWriter writer )
-		{
-			PropertyInfo prop = appenderType.GetProperty( "Writer", BF.Instance | BF.Public | BF.SetProperty );
-			if ( prop != null )
-				prop.SetValue( appender, writer, null );
-		}
-
-		private void ConfigureAppender()
-		{
-			MethodInfo configureMethod = basicConfiguratorType.GetMethod( "Configure", new Type[] { appenderType } );
-			if ( configureMethod != null )
-				configureMethod.Invoke( null, new object[] { appender } );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2008, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Reflection;
+using BF = System.Reflection.BindingFlags;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Proxy class for operations on a real log4net appender,
+	/// allowing NUnit to work with multiple versions of log4net
+	/// and to fail gracefully if no log4net assembly is present.
+	/// </summary>
+	public class Log4NetCapture : LogCapture
+	{
+		private Assembly log4netAssembly;
+		private Type appenderType;
+		private Type basicConfiguratorType;
+
+		private object appender;
+		private bool isInitialized;
+
+		// Layout codes that work for versions from 
+		// log4net 1.2.0.30714 to 1.2.10:
+		//
+		//	%a = domain friendly name
+		//	%c = logger name (%c{1} = last component )
+		//	%d = date and time
+		//	%d{ABSOLUTE} = time only
+		//	%l = source location of the error
+		//	%m = message
+		//	%n = newline
+		//	%p = level
+		//	%r = elapsed milliseconds since program start
+		//	%t = thread
+		//	%x = nested diagnostic content (NDC)
+		private static readonly string logFormat =
+			"%d{ABSOLUTE} %-5p [%4t] %c{1} [%x]- %m%n";
+
+		protected override void StartCapture()
+		{
+			if ( IsInitialized )
+			{
+				string threshold = DefaultThreshold;
+				if ( !SetLoggingThreshold( threshold ) )
+					SetLoggingThreshold( "Error" );
+
+				SetAppenderTextWriter( this.Writer );
+				ConfigureAppender();
+			}
+		}
+
+		protected override void StopCapture()
+		{
+			if ( appender != null )
+			{
+				SetLoggingThreshold( "Off" );
+				SetAppenderTextWriter( null );
+			}
+		}
+
+		#region Helpers
+		private bool IsInitialized
+		{
+			get
+			{
+				if ( isInitialized )
+					return true;
+
+				try
+				{
+					log4netAssembly = Assembly.Load( "log4net" );
+					if ( log4netAssembly == null ) return false;
+
+					appenderType = log4netAssembly.GetType( 
+						"log4net.Appender.TextWriterAppender", false, false );
+					if ( appenderType == null ) return false;
+
+					basicConfiguratorType = log4netAssembly.GetType( 
+						"log4net.Config.BasicConfigurator", false, false );
+					if ( basicConfiguratorType == null ) return false;
+
+					appender = TryCreateAppender();
+					if ( appender == null ) return false;
+
+					SetAppenderLogFormat( logFormat );
+
+					isInitialized = true;
+				}
+				catch
+				{
+				}
+
+				return isInitialized;
+			}
+		}
+
+		private Assembly TryLoadLog4NetAssembly()
+		{
+			Assembly assembly = null;
+
+			try
+			{
+				assembly = Assembly.Load( "log4net" );
+			}
+			catch
+			{
+				return null; 
+			}
+
+			return assembly;
+		}
+
+		/// <summary>
+		/// Attempt to create a TextWriterAppender using reflection,
+		/// failing silently if it is not possible.
+		/// </summary>
+		private object TryCreateAppender()
+		{
+			ConstructorInfo ctor = appenderType.GetConstructor( Type.EmptyTypes );
+			object appender = ctor.Invoke( new object[0] );
+
+			return appender;
+		}
+
+		private void SetAppenderLogFormat( string logFormat )
+		{
+			Type patternLayoutType = log4netAssembly.GetType( 
+				"log4net.Layout.PatternLayout", false, false );
+			if ( patternLayoutType == null ) return;
+
+			ConstructorInfo ctor = patternLayoutType.GetConstructor( new Type[] { typeof(string) } );
+			if ( ctor != null )
+			{
+				object patternLayout = ctor.Invoke( new object[] { logFormat } );
+
+				if ( patternLayout != null )
+				{
+					PropertyInfo prop = appenderType.GetProperty( "Layout", BF.Public | BF.Instance | BF.SetProperty );
+					if ( prop != null )
+						prop.SetValue( appender, patternLayout, null );
+				}
+			} 
+		}
+
+		private bool SetLoggingThreshold( string threshold )
+		{
+			PropertyInfo prop = appenderType.GetProperty( "Threshold", BF.Public | BF.Instance | BF.SetProperty );
+			if ( prop == null ) return false;
+
+			Type levelType = prop.PropertyType;
+			FieldInfo levelField = levelType.GetField( threshold, BF.Public | BF.Static | BF.IgnoreCase );
+			if ( levelField == null ) return false;
+
+			object level = levelField.GetValue( null );
+			prop.SetValue( appender, level, null );
+			return true;
+		}
+
+		private void SetAppenderTextWriter( TextWriter writer )
+		{
+			PropertyInfo prop = appenderType.GetProperty( "Writer", BF.Instance | BF.Public | BF.SetProperty );
+			if ( prop != null )
+				prop.SetValue( appender, writer, null );
+		}
+
+		private void ConfigureAppender()
+		{
+			MethodInfo configureMethod = basicConfiguratorType.GetMethod( "Configure", new Type[] { appenderType } );
+			if ( configureMethod != null )
+				configureMethod.Invoke( null, new object[] { appender } );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/LogCapture.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/LogCapture.cs
@@ -1,44 +1,44 @@
-// ****************************************************************
-// Copyright 2008, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System.Collections.Specialized;
-using System.Configuration;
-
-namespace NUnit.Core
-{
-    public abstract class LogCapture : TextCapture
-    {
-        private string defaultThreshold;
-
-        /// <summary>
-        /// The default threshold for log capture
-        /// is read from the config file. If not
-        /// found, we use "Error".
-        /// </summary>
-        public override string DefaultThreshold
-        {
-            get
-            {
-                if (defaultThreshold == null)
-                {
-                    defaultThreshold = "Error";
-
-                    NameValueCollection settings = (NameValueCollection)
-                        ConfigurationSettings.GetConfig("NUnit/TestRunner");
-
-                    if (settings != null)
-                    {
-                        string level = settings["DefaultLogThreshold"];
-                        if (level != null)
-                            defaultThreshold = level;
-                    }
-                }
-
-                return defaultThreshold;
-            }
-        }
-    }
-}
+// ****************************************************************
+// Copyright 2008, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System.Collections.Specialized;
+using System.Configuration;
+
+namespace NUnit.Core
+{
+    public abstract class LogCapture : TextCapture
+    {
+        private string defaultThreshold;
+
+        /// <summary>
+        /// The default threshold for log capture
+        /// is read from the config file. If not
+        /// found, we use "Error".
+        /// </summary>
+        public override string DefaultThreshold
+        {
+            get
+            {
+                if (defaultThreshold == null)
+                {
+                    defaultThreshold = "Error";
+
+                    NameValueCollection settings = (NameValueCollection)
+                        ConfigurationSettings.GetConfig("NUnit/TestRunner");
+
+                    if (settings != null)
+                    {
+                        string level = settings["DefaultLogThreshold"];
+                        if (level != null)
+                            defaultThreshold = level;
+                    }
+                }
+
+                return defaultThreshold;
+            }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NTrace.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NTrace.cs
@@ -1,123 +1,123 @@
-using System;
-using System.Diagnostics;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Summary description for Logger.
-	/// </summary>
-	public class NTrace
-	{
-		private readonly static TraceSwitch Level = new TraceSwitch( "NTrace", "NUnit internal trace" ); 
-		private readonly static string NL = Environment.NewLine;
-
-		#region Error
-		public static void Error( string message )
-		{
-			if ( Level.TraceError )
-				WriteLine( message );
-		}
-
-		public static void Error( string message, string category )
-		{
-			if ( Level.TraceError )
-				WriteLine( message, category );
-		}
-
-		public static void ErrorFormat( string message, params object[] args )
-		{
-			if ( Level.TraceError )
-				WriteFormat( message, args );
-		}
-
-		public static void Error( string message, Exception ex )
-		{
-			if ( Level.TraceError )
-			{
-				WriteLine( message );
-				WriteLine( ex.ToString() );
-			}
-		}
-		#endregion
-
-		#region Warning
-		public static void Warning( string message )
-		{
-			if ( Level.TraceWarning )
-				WriteLine( message );
-		}
-
-		public static void Warning( string message, string category )
-		{
-			if ( Level.TraceWarning )
-				WriteLine( message, category );
-		}
-
-		public static void WarningFormat( string message, params object[] args )
-		{
-			if ( Level.TraceWarning )
-				WriteFormat( message, args );
-		}
-		#endregion
-
-		#region Info
-		public static void Info( string message )
-		{
-			if ( Level.TraceInfo )
-				WriteLine( message );
-		}
-
-		public static void Info( string message, string category )
-		{
-			if ( Level.TraceInfo )
-				WriteLine( message, category );
-		}
-
-		public static void InfoFormat( string message, params object[] args )
-		{
-			if ( Level.TraceInfo )
-				WriteFormat( message, args );
-		}
-		#endregion
-
-		#region Debug
-		public static void Debug( string message )
-		{
-			if ( Level.TraceVerbose )
-				WriteLine( message );
-		}
-
-		public static void Debug( string message, string category )
-		{
-			if ( Level.TraceVerbose )
-				WriteLine( message, category );
-		}
-
-		public static void DebugFormat( string message, params object[] args )
-		{
-			if ( Level.TraceVerbose )
-				WriteFormat( message, args );
-		}
-		#endregion
-
-		#region Helper Methods
-		private static void WriteLine( string message )
-		{
-			Trace.WriteLine( message );
-		}
-
-		private static void WriteLine( string message, string category )
-		{
-			Trace.WriteLine( message, category );
-		}
-
-		private static void WriteFormat( string format, params object[] args )
-		{
-			string message = string.Format( format, args );
-			Trace.WriteLine( message );
-		}
-		#endregion
-
-		private NTrace() { }
-	}
-}
+using System;
+using System.Diagnostics;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Summary description for Logger.
+	/// </summary>
+	public class NTrace
+	{
+		private readonly static TraceSwitch Level = new TraceSwitch( "NTrace", "NUnit internal trace" ); 
+		private readonly static string NL = Environment.NewLine;
+
+		#region Error
+		public static void Error( string message )
+		{
+			if ( Level.TraceError )
+				WriteLine( message );
+		}
+
+		public static void Error( string message, string category )
+		{
+			if ( Level.TraceError )
+				WriteLine( message, category );
+		}
+
+		public static void ErrorFormat( string message, params object[] args )
+		{
+			if ( Level.TraceError )
+				WriteFormat( message, args );
+		}
+
+		public static void Error( string message, Exception ex )
+		{
+			if ( Level.TraceError )
+			{
+				WriteLine( message );
+				WriteLine( ex.ToString() );
+			}
+		}
+		#endregion
+
+		#region Warning
+		public static void Warning( string message )
+		{
+			if ( Level.TraceWarning )
+				WriteLine( message );
+		}
+
+		public static void Warning( string message, string category )
+		{
+			if ( Level.TraceWarning )
+				WriteLine( message, category );
+		}
+
+		public static void WarningFormat( string message, params object[] args )
+		{
+			if ( Level.TraceWarning )
+				WriteFormat( message, args );
+		}
+		#endregion
+
+		#region Info
+		public static void Info( string message )
+		{
+			if ( Level.TraceInfo )
+				WriteLine( message );
+		}
+
+		public static void Info( string message, string category )
+		{
+			if ( Level.TraceInfo )
+				WriteLine( message, category );
+		}
+
+		public static void InfoFormat( string message, params object[] args )
+		{
+			if ( Level.TraceInfo )
+				WriteFormat( message, args );
+		}
+		#endregion
+
+		#region Debug
+		public static void Debug( string message )
+		{
+			if ( Level.TraceVerbose )
+				WriteLine( message );
+		}
+
+		public static void Debug( string message, string category )
+		{
+			if ( Level.TraceVerbose )
+				WriteLine( message, category );
+		}
+
+		public static void DebugFormat( string message, params object[] args )
+		{
+			if ( Level.TraceVerbose )
+				WriteFormat( message, args );
+		}
+		#endregion
+
+		#region Helper Methods
+		private static void WriteLine( string message )
+		{
+			Trace.WriteLine( message );
+		}
+
+		private static void WriteLine( string message, string category )
+		{
+			Trace.WriteLine( message, category );
+		}
+
+		private static void WriteFormat( string format, params object[] args )
+		{
+			string message = string.Format( format, args );
+			Trace.WriteLine( message );
+		}
+		#endregion
+
+		private NTrace() { }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NUnitException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NUnitException.cs
@@ -1,50 +1,50 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core 
-{
-	using System;
-	using System.Runtime.Serialization;
-  
-	/// <summary>
-	/// Thrown when an assertion failed. Here to preserve the inner
-	/// exception and hence its stack trace.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class NUnitException : ApplicationException 
-	{
-		public NUnitException () : base() 
-		{} 
-
-		/// <summary>
-		/// Standard constructor
-		/// </summary>
-		/// <param name="message">The error message that explains 
-		/// the reason for the exception</param>
-		public NUnitException(string message) : base (message)
-		{}
-
-		/// <summary>
-		/// Standard constructor
-		/// </summary>
-		/// <param name="message">The error message that explains 
-		/// the reason for the exception</param>
-		/// <param name="inner">The exception that caused the 
-		/// current exception</param>
-		public NUnitException(string message, Exception inner) :
-			base(message, inner) 
-		{}
-
-		/// <summary>
-		/// Serialization Constructor
-		/// </summary>
-		protected NUnitException(SerializationInfo info, 
-			StreamingContext context) : base(info,context){}
-
-
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core 
+{
+	using System;
+	using System.Runtime.Serialization;
+  
+	/// <summary>
+	/// Thrown when an assertion failed. Here to preserve the inner
+	/// exception and hence its stack trace.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class NUnitException : ApplicationException 
+	{
+		public NUnitException () : base() 
+		{} 
+
+		/// <summary>
+		/// Standard constructor
+		/// </summary>
+		/// <param name="message">The error message that explains 
+		/// the reason for the exception</param>
+		public NUnitException(string message) : base (message)
+		{}
+
+		/// <summary>
+		/// Standard constructor
+		/// </summary>
+		/// <param name="message">The error message that explains 
+		/// the reason for the exception</param>
+		/// <param name="inner">The exception that caused the 
+		/// current exception</param>
+		public NUnitException(string message, Exception inner) :
+			base(message, inner) 
+		{}
+
+		/// <summary>
+		/// Serialization Constructor
+		/// </summary>
+		protected NUnitException(SerializationInfo info, 
+			StreamingContext context) : base(info,context){}
+
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NUnitFramework.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NUnitFramework.cs
@@ -1,448 +1,448 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Configuration;
-using System.Diagnostics;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Static methods that implement aspects of the NUnit framework that cut 
-	/// across individual test types, extensions, etc. Some of these use the 
-	/// methods of the Reflect class to implement operations specific to the 
-	/// NUnit Framework.
-	/// </summary>
-	public class NUnitFramework
-	{
-		private static Type assertType;
-        //private static Hashtable frameworkByAssembly = new Hashtable();
-
-        #region Constants
-
-		#region Attribute Names
-		// NOTE: Attributes used in switch statements must be const
-
-        // Attributes that apply to Assemblies, Classes and Methods
-        public const string IgnoreAttribute = "NUnit.Framework.IgnoreAttribute";
-		public const string PlatformAttribute = "NUnit.Framework.PlatformAttribute";
-		public const string CultureAttribute = "NUnit.Framework.CultureAttribute";
-		public const string ExplicitAttribute = "NUnit.Framework.ExplicitAttribute";
-        public const string CategoryAttribute = "NUnit.Framework.CategoryAttribute";
-        public const string PropertyAttribute = "NUnit.Framework.PropertyAttribute";
-		public const string DescriptionAttribute = "NUnit.Framework.DescriptionAttribute";
-
-        // Attributes that apply only to Classes
-        public const string TestFixtureAttribute = "NUnit.Framework.TestFixtureAttribute";
-        public const string SetUpFixtureAttribute = "NUnit.Framework.SetUpFixtureAttribute";
-
-        // Attributes that apply only to Methods
-        public const string TestAttribute = "NUnit.Framework.TestAttribute";
-        public static readonly string SetUpAttribute = "NUnit.Framework.SetUpAttribute";
-        public static readonly string TearDownAttribute = "NUnit.Framework.TearDownAttribute";
-        public static readonly string FixtureSetUpAttribute = "NUnit.Framework.TestFixtureSetUpAttribute";
-        public static readonly string FixtureTearDownAttribute = "NUnit.Framework.TestFixtureTearDownAttribute";
-        public static readonly string ExpectedExceptionAttribute = "NUnit.Framework.ExpectedExceptionAttribute";
-
-        // Attributes that apply only to Properties
-        public static readonly string SuiteAttribute = "NUnit.Framework.SuiteAttribute";
-        #endregion
-
-        #region Other Framework Types
-        public static readonly string AssertException = "NUnit.Framework.AssertionException";
-        public static readonly string IgnoreException = "NUnit.Framework.IgnoreException";
-        public static readonly string AssertType = "NUnit.Framework.Assert";
-		public static readonly string ExpectExceptionInterface = "NUnit.Framework.IExpectException";
-        #endregion
-
-        #region Core Types
-        public static readonly string SuiteBuilderAttribute = typeof(SuiteBuilderAttribute).FullName;
-        public static readonly string SuiteBuilderInterface = typeof(ISuiteBuilder).FullName;
-
-        public static readonly string TestCaseBuilderAttributeName = typeof(TestCaseBuilderAttribute).FullName;
-        public static readonly string TestCaseBuilderInterfaceName = typeof(ITestCaseBuilder).FullName;
-
-        public static readonly string TestDecoratorAttributeName = typeof(TestDecoratorAttribute).FullName;
-        public static readonly string TestDecoratorInterfaceName = typeof(ITestDecorator).FullName;
-        #endregion
-
-        #endregion
-
-        #region Identify SetUp and TearDown Methods
-        public static bool IsSetUpMethod(MethodInfo method)
-        {
-            return Reflect.HasAttribute(method, NUnitFramework.SetUpAttribute, false);
-        }
-
-        public static bool IsTearDownMethod(MethodInfo method)
-        {
-            return Reflect.HasAttribute(method, NUnitFramework.TearDownAttribute, false);
-        }
-
-        public static bool IsFixtureSetUpMethod(MethodInfo method)
-        {
-            return Reflect.HasAttribute(method, NUnitFramework.FixtureSetUpAttribute, false);
-        }
-
-        public static bool IsFixtureTearDownMethod(MethodInfo method)
-        {
-            return Reflect.HasAttribute(method, NUnitFramework.FixtureTearDownAttribute, false);
-        }
-
-        #endregion
-
-        #region Locate SetUp and TearDown Methods
-        public static MethodInfo GetSetUpMethod(Type fixtureType)
-		{
-			return Reflect.GetMethodWithAttribute(fixtureType, SetUpAttribute,
-				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
-				true);
-		}
-
-        public static MethodInfo GetTearDownMethod(Type fixtureType)
-		{
-			return Reflect.GetMethodWithAttribute(fixtureType, TearDownAttribute,
-				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
-				true);
-		}
-
-		public static MethodInfo GetFixtureSetUpMethod(Type fixtureType)
-		{
-			return Reflect.GetMethodWithAttribute(fixtureType, FixtureSetUpAttribute,
-				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
-				true);
-		}
-
-        public static MethodInfo GetFixtureTearDownMethod(Type fixtureType)
-		{
-			return Reflect.GetMethodWithAttribute(fixtureType, FixtureTearDownAttribute,
-				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
-				true);
-		}
-		#endregion
-
-		#region Locate ExceptionHandler
-		public static MethodInfo GetDefaultExceptionHandler( Type fixtureType )
-		{
-			return Reflect.HasInterface( fixtureType, ExpectExceptionInterface )
-				? GetExceptionHandler( fixtureType, "HandleException" )
-				: null;
-		}
-
-		public static MethodInfo GetExceptionHandler( Type fixtureType, string name )
-		{
-			return Reflect.GetNamedMethod( 
-				fixtureType, 
-				name,
-				new string[] { "System.Exception" },
-				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static );
-		}
-		#endregion
-
-		#region Get Special Properties of Attributes
-
-		#region IgnoreReason
-		public static string GetIgnoreReason( System.Attribute attribute )
-		{
-			return Reflect.GetPropertyValue( attribute, "Reason" ) as string;
-		}
-		#endregion
-
-		#region Description
-		/// <summary>
-		/// Method to return the description from an attribute
-		/// </summary>
-		/// <param name="attribute">The attribute to check</param>
-		/// <returns>The description, if any, or null</returns>
-		public static string GetDescription(System.Attribute attribute)
-		{
-			return Reflect.GetPropertyValue( attribute, "Description" ) as string;
-		}
-		#endregion
-
-		#region ExpectedException Attrributes
-		public static string GetHandler(System.Attribute attribute)
-		{
-			return Reflect.GetPropertyValue( attribute, "Handler" ) as string;
-		}
-
-		public static Type GetExceptionType(System.Attribute attribute)
-		{
-			return Reflect.GetPropertyValue( attribute, "ExceptionType" ) as Type;
-		}
-
-		public static string GetExceptionName(System.Attribute attribute)
-		{
-			return Reflect.GetPropertyValue( attribute, "ExceptionName" ) as string;
-		}
-
-		public static string GetExpectedMessage(System.Attribute attribute)
-		{
-			return Reflect.GetPropertyValue( attribute, "ExpectedMessage" ) as string;
-		}
-
-		public static string GetMatchType(System.Attribute attribute)
-		{
-			object matchEnum = Reflect.GetPropertyValue( attribute, "MatchType" );
-			return matchEnum != null ? matchEnum.ToString() : null;
-		}
-
-		public static string GetUserMessage(System.Attribute attribute)
-		{
-			return Reflect.GetPropertyValue( attribute, "UserMessage" ) as string;
-		}
-		#endregion
-
-		#endregion
-
-		#region ApplyCommonAttributes
-        /// <summary>
-        /// Modify a newly constructed test based on a type or method by 
-        /// applying any of NUnit's common attributes.
-        /// </summary>
-        /// <param name="member">The type or method from which the test was constructed</param>
-        /// <param name="test">The test to which the attributes apply</param>
-        public static void ApplyCommonAttributes(MemberInfo member, Test test)
-        {
-            ApplyCommonAttributes( Reflect.GetAttributes( member, false ), test );
-        }
-
-        /// <summary>
-        /// Modify a newly constructed test based on an assembly by applying 
-        /// any of NUnit's common attributes.
-        /// </summary>
-        /// <param name="assembly">The assembly from which the test was constructed</param>
-        /// <param name="test">The test to which the attributes apply</param>
-        public static void ApplyCommonAttributes(Assembly assembly, Test test)
-        {
-            ApplyCommonAttributes( Reflect.GetAttributes( assembly, false ), test );
-        }
-
-        /// <summary>
-        /// Modify a newly constructed test by applying any of NUnit's common
-        /// attributes, based on an input array of attributes. This method checks
-        /// for all attributes, relying on the fact that specific attributes can only
-        /// occur on those constructs on which they are allowed.
-        /// </summary>
-        /// <param name="attributes">An array of attributes possibly including NUnit attributes
-        /// <param name="test">The test to which the attributes apply</param>
-        public static void ApplyCommonAttributes(Attribute[] attributes, Test test)
-        {
-			IList categories = new ArrayList();
-			ListDictionary properties = new ListDictionary();
-
-            foreach (Attribute attribute in attributes)
-            {
-				Type attributeType = attribute.GetType();
-				string attributeName = attributeType.FullName;
-                bool isValid = test.RunState != RunState.NotRunnable;
-
-                switch (attributeName)
-                {
-					case TestFixtureAttribute:
-					case TestAttribute:
-						if ( test.Description == null )
-							test.Description = GetDescription( attribute );
-						break;
-					case DescriptionAttribute:
-						test.Description = GetDescription( attribute );
-						break;
-					case ExplicitAttribute:
-                        if (isValid)
-                        {
-                            test.RunState = RunState.Explicit;
-                            test.IgnoreReason = GetIgnoreReason(attribute);
-                        }
-                        break;
-                    case IgnoreAttribute:
-                        if (isValid)
-                        {
-                            test.RunState = RunState.Ignored;
-                            test.IgnoreReason = GetIgnoreReason(attribute);
-                        }
-                        break;
-                    case PlatformAttribute:
-                        PlatformHelper pHelper = new PlatformHelper();
-                        if (isValid && !pHelper.IsPlatformSupported(attribute))
-                        {
-                            test.RunState = RunState.Skipped;
-                            test.IgnoreReason = GetIgnoreReason(attribute);
-							if ( test.IgnoreReason == null )
-								test.IgnoreReason = pHelper.Reason;
-                        }
-                        break;
-					case CultureAttribute:
-						CultureDetector cultureDetector = new CultureDetector();
-						if (isValid && !cultureDetector.IsCultureSupported(attribute))
-						{
-							test.RunState = RunState.Skipped;
-							test.IgnoreReason = cultureDetector.Reason;
-						}
-						break;
-					default:
-						if ( Reflect.InheritsFrom( attributeType, CategoryAttribute ) )
-						{	
-							categories.Add( Reflect.GetPropertyValue( attribute, "Name" ) );
-						}
-						else if ( Reflect.InheritsFrom( attributeType, PropertyAttribute ) )
-						{
-							string name = (string)Reflect.GetPropertyValue( attribute, "Name" );
-							if ( name != null && name != string.Empty )
-							{
-								object val = Reflect.GetPropertyValue( attribute, "Value" );
-								properties[name] = val;
-							}
-						}
-						break;
-                }
-            }
-
-			test.Categories = categories;
-			test.Properties = properties;
-        }
-		#endregion
-
-		#region ApplyExpectedExceptionAttribute
-		// TODO: Handle this with a separate ExceptionProcessor object
-		public static void ApplyExpectedExceptionAttribute(MethodInfo method, TestMethod testMethod)
-		{
-			Attribute attribute = Reflect.GetAttribute(
-                method, NUnitFramework.ExpectedExceptionAttribute, false );
-
-			if (attribute != null)
-			{
-				testMethod.ExceptionExpected = true;
-
-				Type expectedExceptionType = GetExceptionType( attribute );
-				string expectedExceptionName = GetExceptionName( attribute );
-				if ( expectedExceptionType != null )
-					testMethod.ExpectedExceptionType = expectedExceptionType;
-				else if ( expectedExceptionName != null )
-					testMethod.ExpectedExceptionName = expectedExceptionName;
-				
-				testMethod.ExpectedMessage = GetExpectedMessage( attribute );
-				testMethod.MatchType = GetMatchType( attribute );
-				testMethod.UserMessage = GetUserMessage( attribute );
-
-				string handlerName = GetHandler( attribute );
-				if ( handlerName == null )
-					testMethod.ExceptionHandler = GetDefaultExceptionHandler( testMethod.FixtureType );
-				else
-				{
-					MethodInfo handler = GetExceptionHandler( testMethod.FixtureType, handlerName );
-					if ( handler != null )
-						testMethod.ExceptionHandler = handler;
-					else
-					{
-						testMethod.RunState = RunState.NotRunnable;
-						testMethod.IgnoreReason = string.Format( 
-							"The specified exception handler {0} was not found", handlerName );
-					}
-				}
-			}
-		}
-		#endregion
-
-		#region GetAssertCount
-		public static int GetAssertCount()
-		{
-			if ( assertType == null )
-				foreach( Assembly assembly in AppDomain.CurrentDomain.GetAssemblies() )
-					if ( assembly.GetName().Name == "nunit.framework" )
-					{
-						assertType = assembly.GetType( AssertType );
-						break;
-					}
-
-			if ( assertType == null )
-				return 0;
-
-			PropertyInfo property = Reflect.GetNamedProperty( 
-				assertType,
-				"Counter", 
-				BindingFlags.Public | BindingFlags.Static );
-
-			if ( property == null )
-				return 0;
-		
-			return (int)property.GetValue( null, new object[0] );
-		}
-		#endregion
-
-		#region IsSuiteBuilder
-		public static bool IsSuiteBuilder( Type type )
-		{
-			return Reflect.HasAttribute( type, SuiteBuilderAttribute, false )
-				&& Reflect.HasInterface( type, SuiteBuilderInterface );
-		}
-		#endregion
-
-		#region IsTestCaseBuilder
-		public static bool IsTestCaseBuilder( Type type )
-		{
-			return Reflect.HasAttribute( type, TestCaseBuilderAttributeName, false )
-				&& Reflect.HasInterface( type, TestCaseBuilderInterfaceName );
-		}
-		#endregion
-
-		#region IsTestDecorator
-		public static bool IsTestDecorator( Type type )
-		{
-			return Reflect.HasAttribute( type, TestDecoratorAttributeName, false )
-				&& Reflect.HasInterface( type, TestDecoratorInterfaceName );
-		}
-		#endregion
-
-		#region AllowOldStyleTests
-		public static bool AllowOldStyleTests
-		{
-			get
-			{
-				try
-				{
-					NameValueCollection settings = (NameValueCollection)
-						ConfigurationSettings.GetConfig("NUnit/TestCaseBuilder");
-					if (settings != null)
-					{
-						string oldStyle = settings["OldStyleTestCases"];
-						if (oldStyle != null)
-							return Boolean.Parse(oldStyle);
-					}
-				}
-				catch( Exception e )
-				{
-					Debug.WriteLine( e );
-				}
-
-				return false;
-			}
-		}
-		#endregion
-
-		#region BuildConfiguration
-		public static string BuildConfiguration
-		{
-			get
-			{
-#if DEBUG
-				if (Environment.Version.Major == 2)
-					return "Debug2005";
-				else
-					return "Debug";
-#else
-				if (Environment.Version.Major == 2)
-					return "Release2005";
-				else
-					return "Release";
-#endif
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+using System.Collections;
+using System.Collections.Specialized;
+using System.Configuration;
+using System.Diagnostics;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Static methods that implement aspects of the NUnit framework that cut 
+	/// across individual test types, extensions, etc. Some of these use the 
+	/// methods of the Reflect class to implement operations specific to the 
+	/// NUnit Framework.
+	/// </summary>
+	public class NUnitFramework
+	{
+		private static Type assertType;
+        //private static Hashtable frameworkByAssembly = new Hashtable();
+
+        #region Constants
+
+		#region Attribute Names
+		// NOTE: Attributes used in switch statements must be const
+
+        // Attributes that apply to Assemblies, Classes and Methods
+        public const string IgnoreAttribute = "NUnit.Framework.IgnoreAttribute";
+		public const string PlatformAttribute = "NUnit.Framework.PlatformAttribute";
+		public const string CultureAttribute = "NUnit.Framework.CultureAttribute";
+		public const string ExplicitAttribute = "NUnit.Framework.ExplicitAttribute";
+        public const string CategoryAttribute = "NUnit.Framework.CategoryAttribute";
+        public const string PropertyAttribute = "NUnit.Framework.PropertyAttribute";
+		public const string DescriptionAttribute = "NUnit.Framework.DescriptionAttribute";
+
+        // Attributes that apply only to Classes
+        public const string TestFixtureAttribute = "NUnit.Framework.TestFixtureAttribute";
+        public const string SetUpFixtureAttribute = "NUnit.Framework.SetUpFixtureAttribute";
+
+        // Attributes that apply only to Methods
+        public const string TestAttribute = "NUnit.Framework.TestAttribute";
+        public static readonly string SetUpAttribute = "NUnit.Framework.SetUpAttribute";
+        public static readonly string TearDownAttribute = "NUnit.Framework.TearDownAttribute";
+        public static readonly string FixtureSetUpAttribute = "NUnit.Framework.TestFixtureSetUpAttribute";
+        public static readonly string FixtureTearDownAttribute = "NUnit.Framework.TestFixtureTearDownAttribute";
+        public static readonly string ExpectedExceptionAttribute = "NUnit.Framework.ExpectedExceptionAttribute";
+
+        // Attributes that apply only to Properties
+        public static readonly string SuiteAttribute = "NUnit.Framework.SuiteAttribute";
+        #endregion
+
+        #region Other Framework Types
+        public static readonly string AssertException = "NUnit.Framework.AssertionException";
+        public static readonly string IgnoreException = "NUnit.Framework.IgnoreException";
+        public static readonly string AssertType = "NUnit.Framework.Assert";
+		public static readonly string ExpectExceptionInterface = "NUnit.Framework.IExpectException";
+        #endregion
+
+        #region Core Types
+        public static readonly string SuiteBuilderAttribute = typeof(SuiteBuilderAttribute).FullName;
+        public static readonly string SuiteBuilderInterface = typeof(ISuiteBuilder).FullName;
+
+        public static readonly string TestCaseBuilderAttributeName = typeof(TestCaseBuilderAttribute).FullName;
+        public static readonly string TestCaseBuilderInterfaceName = typeof(ITestCaseBuilder).FullName;
+
+        public static readonly string TestDecoratorAttributeName = typeof(TestDecoratorAttribute).FullName;
+        public static readonly string TestDecoratorInterfaceName = typeof(ITestDecorator).FullName;
+        #endregion
+
+        #endregion
+
+        #region Identify SetUp and TearDown Methods
+        public static bool IsSetUpMethod(MethodInfo method)
+        {
+            return Reflect.HasAttribute(method, NUnitFramework.SetUpAttribute, false);
+        }
+
+        public static bool IsTearDownMethod(MethodInfo method)
+        {
+            return Reflect.HasAttribute(method, NUnitFramework.TearDownAttribute, false);
+        }
+
+        public static bool IsFixtureSetUpMethod(MethodInfo method)
+        {
+            return Reflect.HasAttribute(method, NUnitFramework.FixtureSetUpAttribute, false);
+        }
+
+        public static bool IsFixtureTearDownMethod(MethodInfo method)
+        {
+            return Reflect.HasAttribute(method, NUnitFramework.FixtureTearDownAttribute, false);
+        }
+
+        #endregion
+
+        #region Locate SetUp and TearDown Methods
+        public static MethodInfo GetSetUpMethod(Type fixtureType)
+		{
+			return Reflect.GetMethodWithAttribute(fixtureType, SetUpAttribute,
+				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
+				true);
+		}
+
+        public static MethodInfo GetTearDownMethod(Type fixtureType)
+		{
+			return Reflect.GetMethodWithAttribute(fixtureType, TearDownAttribute,
+				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
+				true);
+		}
+
+		public static MethodInfo GetFixtureSetUpMethod(Type fixtureType)
+		{
+			return Reflect.GetMethodWithAttribute(fixtureType, FixtureSetUpAttribute,
+				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
+				true);
+		}
+
+        public static MethodInfo GetFixtureTearDownMethod(Type fixtureType)
+		{
+			return Reflect.GetMethodWithAttribute(fixtureType, FixtureTearDownAttribute,
+				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
+				true);
+		}
+		#endregion
+
+		#region Locate ExceptionHandler
+		public static MethodInfo GetDefaultExceptionHandler( Type fixtureType )
+		{
+			return Reflect.HasInterface( fixtureType, ExpectExceptionInterface )
+				? GetExceptionHandler( fixtureType, "HandleException" )
+				: null;
+		}
+
+		public static MethodInfo GetExceptionHandler( Type fixtureType, string name )
+		{
+			return Reflect.GetNamedMethod( 
+				fixtureType, 
+				name,
+				new string[] { "System.Exception" },
+				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static );
+		}
+		#endregion
+
+		#region Get Special Properties of Attributes
+
+		#region IgnoreReason
+		public static string GetIgnoreReason( System.Attribute attribute )
+		{
+			return Reflect.GetPropertyValue( attribute, "Reason" ) as string;
+		}
+		#endregion
+
+		#region Description
+		/// <summary>
+		/// Method to return the description from an attribute
+		/// </summary>
+		/// <param name="attribute">The attribute to check</param>
+		/// <returns>The description, if any, or null</returns>
+		public static string GetDescription(System.Attribute attribute)
+		{
+			return Reflect.GetPropertyValue( attribute, "Description" ) as string;
+		}
+		#endregion
+
+		#region ExpectedException Attrributes
+		public static string GetHandler(System.Attribute attribute)
+		{
+			return Reflect.GetPropertyValue( attribute, "Handler" ) as string;
+		}
+
+		public static Type GetExceptionType(System.Attribute attribute)
+		{
+			return Reflect.GetPropertyValue( attribute, "ExceptionType" ) as Type;
+		}
+
+		public static string GetExceptionName(System.Attribute attribute)
+		{
+			return Reflect.GetPropertyValue( attribute, "ExceptionName" ) as string;
+		}
+
+		public static string GetExpectedMessage(System.Attribute attribute)
+		{
+			return Reflect.GetPropertyValue( attribute, "ExpectedMessage" ) as string;
+		}
+
+		public static string GetMatchType(System.Attribute attribute)
+		{
+			object matchEnum = Reflect.GetPropertyValue( attribute, "MatchType" );
+			return matchEnum != null ? matchEnum.ToString() : null;
+		}
+
+		public static string GetUserMessage(System.Attribute attribute)
+		{
+			return Reflect.GetPropertyValue( attribute, "UserMessage" ) as string;
+		}
+		#endregion
+
+		#endregion
+
+		#region ApplyCommonAttributes
+        /// <summary>
+        /// Modify a newly constructed test based on a type or method by 
+        /// applying any of NUnit's common attributes.
+        /// </summary>
+        /// <param name="member">The type or method from which the test was constructed</param>
+        /// <param name="test">The test to which the attributes apply</param>
+        public static void ApplyCommonAttributes(MemberInfo member, Test test)
+        {
+            ApplyCommonAttributes( Reflect.GetAttributes( member, false ), test );
+        }
+
+        /// <summary>
+        /// Modify a newly constructed test based on an assembly by applying 
+        /// any of NUnit's common attributes.
+        /// </summary>
+        /// <param name="assembly">The assembly from which the test was constructed</param>
+        /// <param name="test">The test to which the attributes apply</param>
+        public static void ApplyCommonAttributes(Assembly assembly, Test test)
+        {
+            ApplyCommonAttributes( Reflect.GetAttributes( assembly, false ), test );
+        }
+
+        /// <summary>
+        /// Modify a newly constructed test by applying any of NUnit's common
+        /// attributes, based on an input array of attributes. This method checks
+        /// for all attributes, relying on the fact that specific attributes can only
+        /// occur on those constructs on which they are allowed.
+        /// </summary>
+        /// <param name="attributes">An array of attributes possibly including NUnit attributes
+        /// <param name="test">The test to which the attributes apply</param>
+        public static void ApplyCommonAttributes(Attribute[] attributes, Test test)
+        {
+			IList categories = new ArrayList();
+			ListDictionary properties = new ListDictionary();
+
+            foreach (Attribute attribute in attributes)
+            {
+				Type attributeType = attribute.GetType();
+				string attributeName = attributeType.FullName;
+                bool isValid = test.RunState != RunState.NotRunnable;
+
+                switch (attributeName)
+                {
+					case TestFixtureAttribute:
+					case TestAttribute:
+						if ( test.Description == null )
+							test.Description = GetDescription( attribute );
+						break;
+					case DescriptionAttribute:
+						test.Description = GetDescription( attribute );
+						break;
+					case ExplicitAttribute:
+                        if (isValid)
+                        {
+                            test.RunState = RunState.Explicit;
+                            test.IgnoreReason = GetIgnoreReason(attribute);
+                        }
+                        break;
+                    case IgnoreAttribute:
+                        if (isValid)
+                        {
+                            test.RunState = RunState.Ignored;
+                            test.IgnoreReason = GetIgnoreReason(attribute);
+                        }
+                        break;
+                    case PlatformAttribute:
+                        PlatformHelper pHelper = new PlatformHelper();
+                        if (isValid && !pHelper.IsPlatformSupported(attribute))
+                        {
+                            test.RunState = RunState.Skipped;
+                            test.IgnoreReason = GetIgnoreReason(attribute);
+							if ( test.IgnoreReason == null )
+								test.IgnoreReason = pHelper.Reason;
+                        }
+                        break;
+					case CultureAttribute:
+						CultureDetector cultureDetector = new CultureDetector();
+						if (isValid && !cultureDetector.IsCultureSupported(attribute))
+						{
+							test.RunState = RunState.Skipped;
+							test.IgnoreReason = cultureDetector.Reason;
+						}
+						break;
+					default:
+						if ( Reflect.InheritsFrom( attributeType, CategoryAttribute ) )
+						{	
+							categories.Add( Reflect.GetPropertyValue( attribute, "Name" ) );
+						}
+						else if ( Reflect.InheritsFrom( attributeType, PropertyAttribute ) )
+						{
+							string name = (string)Reflect.GetPropertyValue( attribute, "Name" );
+							if ( name != null && name != string.Empty )
+							{
+								object val = Reflect.GetPropertyValue( attribute, "Value" );
+								properties[name] = val;
+							}
+						}
+						break;
+                }
+            }
+
+			test.Categories = categories;
+			test.Properties = properties;
+        }
+		#endregion
+
+		#region ApplyExpectedExceptionAttribute
+		// TODO: Handle this with a separate ExceptionProcessor object
+		public static void ApplyExpectedExceptionAttribute(MethodInfo method, TestMethod testMethod)
+		{
+			Attribute attribute = Reflect.GetAttribute(
+                method, NUnitFramework.ExpectedExceptionAttribute, false );
+
+			if (attribute != null)
+			{
+				testMethod.ExceptionExpected = true;
+
+				Type expectedExceptionType = GetExceptionType( attribute );
+				string expectedExceptionName = GetExceptionName( attribute );
+				if ( expectedExceptionType != null )
+					testMethod.ExpectedExceptionType = expectedExceptionType;
+				else if ( expectedExceptionName != null )
+					testMethod.ExpectedExceptionName = expectedExceptionName;
+				
+				testMethod.ExpectedMessage = GetExpectedMessage( attribute );
+				testMethod.MatchType = GetMatchType( attribute );
+				testMethod.UserMessage = GetUserMessage( attribute );
+
+				string handlerName = GetHandler( attribute );
+				if ( handlerName == null )
+					testMethod.ExceptionHandler = GetDefaultExceptionHandler( testMethod.FixtureType );
+				else
+				{
+					MethodInfo handler = GetExceptionHandler( testMethod.FixtureType, handlerName );
+					if ( handler != null )
+						testMethod.ExceptionHandler = handler;
+					else
+					{
+						testMethod.RunState = RunState.NotRunnable;
+						testMethod.IgnoreReason = string.Format( 
+							"The specified exception handler {0} was not found", handlerName );
+					}
+				}
+			}
+		}
+		#endregion
+
+		#region GetAssertCount
+		public static int GetAssertCount()
+		{
+			if ( assertType == null )
+				foreach( Assembly assembly in AppDomain.CurrentDomain.GetAssemblies() )
+					if ( assembly.GetName().Name == "nunit.framework" )
+					{
+						assertType = assembly.GetType( AssertType );
+						break;
+					}
+
+			if ( assertType == null )
+				return 0;
+
+			PropertyInfo property = Reflect.GetNamedProperty( 
+				assertType,
+				"Counter", 
+				BindingFlags.Public | BindingFlags.Static );
+
+			if ( property == null )
+				return 0;
+		
+			return (int)property.GetValue( null, new object[0] );
+		}
+		#endregion
+
+		#region IsSuiteBuilder
+		public static bool IsSuiteBuilder( Type type )
+		{
+			return Reflect.HasAttribute( type, SuiteBuilderAttribute, false )
+				&& Reflect.HasInterface( type, SuiteBuilderInterface );
+		}
+		#endregion
+
+		#region IsTestCaseBuilder
+		public static bool IsTestCaseBuilder( Type type )
+		{
+			return Reflect.HasAttribute( type, TestCaseBuilderAttributeName, false )
+				&& Reflect.HasInterface( type, TestCaseBuilderInterfaceName );
+		}
+		#endregion
+
+		#region IsTestDecorator
+		public static bool IsTestDecorator( Type type )
+		{
+			return Reflect.HasAttribute( type, TestDecoratorAttributeName, false )
+				&& Reflect.HasInterface( type, TestDecoratorInterfaceName );
+		}
+		#endregion
+
+		#region AllowOldStyleTests
+		public static bool AllowOldStyleTests
+		{
+			get
+			{
+				try
+				{
+					NameValueCollection settings = (NameValueCollection)
+						ConfigurationSettings.GetConfig("NUnit/TestCaseBuilder");
+					if (settings != null)
+					{
+						string oldStyle = settings["OldStyleTestCases"];
+						if (oldStyle != null)
+							return Boolean.Parse(oldStyle);
+					}
+				}
+				catch( Exception e )
+				{
+					Debug.WriteLine( e );
+				}
+
+				return false;
+			}
+		}
+		#endregion
+
+		#region BuildConfiguration
+		public static string BuildConfiguration
+		{
+			get
+			{
+#if DEBUG
+				if (Environment.Version.Major == 2)
+					return "Debug2005";
+				else
+					return "Debug";
+#else
+				if (Environment.Version.Major == 2)
+					return "Release2005";
+				else
+					return "Release";
+#endif
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NUnitTestFixture.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NUnitTestFixture.cs
@@ -1,37 +1,37 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-    /// <summary>
-    /// Class to implement an NUnit test fixture
-    /// </summary>
-    public class NUnitTestFixture : TestFixture
-    {
-        public NUnitTestFixture(Type fixtureType) : base( fixtureType)
-        {
-            this.fixtureSetUp = NUnitFramework.GetFixtureSetUpMethod( fixtureType );
-            this.fixtureTearDown = NUnitFramework.GetFixtureTearDownMethod( fixtureType );
-        }
-
-        protected override void DoOneTimeSetUp(TestResult suiteResult)
-        {
-            base.DoOneTimeSetUp(suiteResult);
-
-			suiteResult.AssertCount = NUnitFramework.GetAssertCount(); ;
-        }
-
-        protected override void DoOneTimeTearDown(TestResult suiteResult)
-        {
-            base.DoOneTimeTearDown(suiteResult);
-
-			suiteResult.AssertCount += NUnitFramework.GetAssertCount();
-        }
-    }
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+    /// <summary>
+    /// Class to implement an NUnit test fixture
+    /// </summary>
+    public class NUnitTestFixture : TestFixture
+    {
+        public NUnitTestFixture(Type fixtureType) : base( fixtureType)
+        {
+            this.fixtureSetUp = NUnitFramework.GetFixtureSetUpMethod( fixtureType );
+            this.fixtureTearDown = NUnitFramework.GetFixtureTearDownMethod( fixtureType );
+        }
+
+        protected override void DoOneTimeSetUp(TestResult suiteResult)
+        {
+            base.DoOneTimeSetUp(suiteResult);
+
+			suiteResult.AssertCount = NUnitFramework.GetAssertCount(); ;
+        }
+
+        protected override void DoOneTimeTearDown(TestResult suiteResult)
+        {
+            base.DoOneTimeTearDown(suiteResult);
+
+			suiteResult.AssertCount += NUnitFramework.GetAssertCount();
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NUnitTestMethod.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NUnitTestMethod.cs
@@ -1,58 +1,58 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Class to implement an NUnit test method
-	/// </summary>
-	public class NUnitTestMethod : TestMethod
-	{
-		#region Constructor
-		public NUnitTestMethod(MethodInfo method) : base(method) 
-        {
-            this.setUpMethod = NUnitFramework.GetSetUpMethod(this.FixtureType);
-            this.tearDownMethod = NUnitFramework.GetTearDownMethod(this.FixtureType);
-        }
-		#endregion
-
-		#region TestMethod Overrides
-		/// <summary>
-		/// Run a test returning the result. Overrides TestMethod
-		/// to count assertions.
-		/// </summary>
-		/// <param name="testResult"></param>
-		public override void Run(TestCaseResult testResult)
-		{
-			base.Run(testResult);
-
-			testResult.AssertCount = NUnitFramework.GetAssertCount();
-		}
-
-		/// <summary>
-		/// Determine if an exception is an NUnit AssertionException
-		/// </summary>
-		/// <param name="ex">The exception to be examined</param>
-		/// <returns>True if it's an NUnit AssertionException</returns>
-		protected override bool IsAssertException(Exception ex)
-		{
-            return ex.GetType().FullName == NUnitFramework.AssertException;
-		}
-
-		/// <summary>
-		/// Determine if an exception is an NUnit IgnoreException
-		/// </summary>
-		/// <param name="ex">The exception to be examined</param>
-		/// <returns>True if it's an NUnit IgnoreException</returns>
-		protected override bool IsIgnoreException(Exception ex)
-		{
-            return ex.GetType().FullName == NUnitFramework.IgnoreException;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Class to implement an NUnit test method
+	/// </summary>
+	public class NUnitTestMethod : TestMethod
+	{
+		#region Constructor
+		public NUnitTestMethod(MethodInfo method) : base(method) 
+        {
+            this.setUpMethod = NUnitFramework.GetSetUpMethod(this.FixtureType);
+            this.tearDownMethod = NUnitFramework.GetTearDownMethod(this.FixtureType);
+        }
+		#endregion
+
+		#region TestMethod Overrides
+		/// <summary>
+		/// Run a test returning the result. Overrides TestMethod
+		/// to count assertions.
+		/// </summary>
+		/// <param name="testResult"></param>
+		public override void Run(TestCaseResult testResult)
+		{
+			base.Run(testResult);
+
+			testResult.AssertCount = NUnitFramework.GetAssertCount();
+		}
+
+		/// <summary>
+		/// Determine if an exception is an NUnit AssertionException
+		/// </summary>
+		/// <param name="ex">The exception to be examined</param>
+		/// <returns>True if it's an NUnit AssertionException</returns>
+		protected override bool IsAssertException(Exception ex)
+		{
+            return ex.GetType().FullName == NUnitFramework.AssertException;
+		}
+
+		/// <summary>
+		/// Determine if an exception is an NUnit IgnoreException
+		/// </summary>
+		/// <param name="ex">The exception to be examined</param>
+		/// <returns>True if it's an NUnit IgnoreException</returns>
+		protected override bool IsIgnoreException(Exception ex)
+		{
+            return ex.GetType().FullName == NUnitFramework.IgnoreException;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NamespaceTreeBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NamespaceTreeBuilder.cs
@@ -1,165 +1,165 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.Collections;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Class that can build a tree of automatic namespace
-	/// suites from a group of fixtures.
-	/// </summary>
-	public class NamespaceTreeBuilder
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// Hashtable of all test suites we have created to represent namespaces.
-		/// Used to locate namespace parent suites for fixtures.
-		/// </summary>
-		Hashtable namespaceSuites  = new Hashtable();
-
-		/// <summary>
-		/// The root of the test suite being created by this builder.
-		/// </summary>
-		TestSuite rootSuite;
-
-		#endregion
-
-		#region Constructor
-
-		public NamespaceTreeBuilder( TestSuite rootSuite )
-		{
-			this.rootSuite = rootSuite;
-		}
-
-		#endregion
-
-		#region Properties
-
-		public TestSuite RootSuite
-		{
-			get { return rootSuite; }
-		}
-
-		#endregion
-
-		#region Public Methods
-
-		public void Add( IList fixtures )
-		{
-            foreach (TestSuite fixture in fixtures)
-                //if (fixture is SetUpFixture)
-                //    Add(fixture as SetUpFixture);
-                //else
-                    Add( fixture );
-		}
-
-		public void Add( TestSuite fixture )
-		{
-            
-			string ns = fixture.TestName.FullName;
-            int index = ns.LastIndexOf( '.' );
-            ns = index > 0 ? ns.Substring( 0, index ) : string.Empty;
-			TestSuite containingSuite = BuildFromNameSpace( ns );
-
-            if (fixture is SetUpFixture)
-            {
-                // The SetUpFixture must replace the namespace suite
-                // in which it is "contained". 
-                //
-                // First, add the old suite's children
-                foreach (TestSuite child in containingSuite.Tests)
-                    fixture.Add(child);
-
-                // Make the parent of the containing suite point to this
-                // fixture instead
-                // TODO: Get rid of this somehow?
-                TestSuite parent = (TestSuite)containingSuite.Parent;
-                if (parent == null)
-                {
-                    fixture.TestName.Name = rootSuite.TestName.Name;
-                    rootSuite = fixture;
-                }
-                else
-                {
-                    parent.Tests.Remove(containingSuite);
-                    parent.Add(fixture);
-                }
-
-                // Update the hashtable
-                namespaceSuites[ns] = fixture;
-            }
-            else
-			    containingSuite.Add( fixture );
-		}
-
-        //public void Add( SetUpFixture fixture )
-        //{
-        //    string ns = fixture.FullName;
-        //    int index = ns.LastIndexOf( '.' );
-        //    ns = index > 0 ? ns.Substring( 0, index ) : string.Empty;
-        //    TestSuite suite = BuildFromNameSpace( ns );
-
-        //    // Make the parent point to this instead
-        //    // TODO: Get rid of this somehow?
-        //    TestSuite parent = suite.Parent;
-        //    if ( parent != null )
-        //    {
-        //        parent.Tests.Remove( suite );
-        //        parent.Add( fixture );
-        //    }
-
-        //    // Add the old suite's children
-        //    foreach( TestSuite child in suite.Tests )
-        //        fixture.Add( child );
-
-        //    if (parent == null && fixture is SetUpFixture)
-        //    {
-        //        suite.Tests.Clear();
-        //        suite.Add(fixture);
-        //    }
-        //    // Update the hashtable
-        //    namespaceSuites[ns] = fixture;
-        //}
-
-		#endregion
-
-		#region Helper Method
-
-		private TestSuite BuildFromNameSpace( string nameSpace )
-		{
-			if( nameSpace == null || nameSpace  == "" ) return rootSuite;
-			TestSuite suite = (TestSuite)namespaceSuites[nameSpace];
-			if(suite!=null) return suite;
-            
-			int index = nameSpace.LastIndexOf(".");
-			//string prefix = string.Format( "[{0}]" );
-			if( index == -1 )
-			{
-				suite = new TestSuite( nameSpace );
-				if ( rootSuite == null )
-					rootSuite = suite;
-				else
-					rootSuite.Add(suite);
-				namespaceSuites[nameSpace]=suite;
-			}
-			else
-			{
-				string parentNameSpace = nameSpace.Substring( 0,index );
-				TestSuite parent = BuildFromNameSpace( parentNameSpace );
-				string suiteName = nameSpace.Substring( index+1 );
-				suite = new TestSuite( parentNameSpace, suiteName );
-				parent.Add( suite );
-				namespaceSuites[nameSpace] = suite;
-			}
-
-			return suite;
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.Collections;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Class that can build a tree of automatic namespace
+	/// suites from a group of fixtures.
+	/// </summary>
+	public class NamespaceTreeBuilder
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// Hashtable of all test suites we have created to represent namespaces.
+		/// Used to locate namespace parent suites for fixtures.
+		/// </summary>
+		Hashtable namespaceSuites  = new Hashtable();
+
+		/// <summary>
+		/// The root of the test suite being created by this builder.
+		/// </summary>
+		TestSuite rootSuite;
+
+		#endregion
+
+		#region Constructor
+
+		public NamespaceTreeBuilder( TestSuite rootSuite )
+		{
+			this.rootSuite = rootSuite;
+		}
+
+		#endregion
+
+		#region Properties
+
+		public TestSuite RootSuite
+		{
+			get { return rootSuite; }
+		}
+
+		#endregion
+
+		#region Public Methods
+
+		public void Add( IList fixtures )
+		{
+            foreach (TestSuite fixture in fixtures)
+                //if (fixture is SetUpFixture)
+                //    Add(fixture as SetUpFixture);
+                //else
+                    Add( fixture );
+		}
+
+		public void Add( TestSuite fixture )
+		{
+            
+			string ns = fixture.TestName.FullName;
+            int index = ns.LastIndexOf( '.' );
+            ns = index > 0 ? ns.Substring( 0, index ) : string.Empty;
+			TestSuite containingSuite = BuildFromNameSpace( ns );
+
+            if (fixture is SetUpFixture)
+            {
+                // The SetUpFixture must replace the namespace suite
+                // in which it is "contained". 
+                //
+                // First, add the old suite's children
+                foreach (TestSuite child in containingSuite.Tests)
+                    fixture.Add(child);
+
+                // Make the parent of the containing suite point to this
+                // fixture instead
+                // TODO: Get rid of this somehow?
+                TestSuite parent = (TestSuite)containingSuite.Parent;
+                if (parent == null)
+                {
+                    fixture.TestName.Name = rootSuite.TestName.Name;
+                    rootSuite = fixture;
+                }
+                else
+                {
+                    parent.Tests.Remove(containingSuite);
+                    parent.Add(fixture);
+                }
+
+                // Update the hashtable
+                namespaceSuites[ns] = fixture;
+            }
+            else
+			    containingSuite.Add( fixture );
+		}
+
+        //public void Add( SetUpFixture fixture )
+        //{
+        //    string ns = fixture.FullName;
+        //    int index = ns.LastIndexOf( '.' );
+        //    ns = index > 0 ? ns.Substring( 0, index ) : string.Empty;
+        //    TestSuite suite = BuildFromNameSpace( ns );
+
+        //    // Make the parent point to this instead
+        //    // TODO: Get rid of this somehow?
+        //    TestSuite parent = suite.Parent;
+        //    if ( parent != null )
+        //    {
+        //        parent.Tests.Remove( suite );
+        //        parent.Add( fixture );
+        //    }
+
+        //    // Add the old suite's children
+        //    foreach( TestSuite child in suite.Tests )
+        //        fixture.Add( child );
+
+        //    if (parent == null && fixture is SetUpFixture)
+        //    {
+        //        suite.Tests.Clear();
+        //        suite.Add(fixture);
+        //    }
+        //    // Update the hashtable
+        //    namespaceSuites[ns] = fixture;
+        //}
+
+		#endregion
+
+		#region Helper Method
+
+		private TestSuite BuildFromNameSpace( string nameSpace )
+		{
+			if( nameSpace == null || nameSpace  == "" ) return rootSuite;
+			TestSuite suite = (TestSuite)namespaceSuites[nameSpace];
+			if(suite!=null) return suite;
+            
+			int index = nameSpace.LastIndexOf(".");
+			//string prefix = string.Format( "[{0}]" );
+			if( index == -1 )
+			{
+				suite = new TestSuite( nameSpace );
+				if ( rootSuite == null )
+					rootSuite = suite;
+				else
+					rootSuite.Add(suite);
+				namespaceSuites[nameSpace]=suite;
+			}
+			else
+			{
+				string parentNameSpace = nameSpace.Substring( 0,index );
+				TestSuite parent = BuildFromNameSpace( parentNameSpace );
+				string suiteName = nameSpace.Substring( index+1 );
+				suite = new TestSuite( parentNameSpace, suiteName );
+				parent.Add( suite );
+				namespaceSuites[nameSpace] = suite;
+			}
+
+			return suite;
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NoTestFixturesException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NoTestFixturesException.cs
@@ -1,28 +1,28 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Runtime.Serialization;
-
-	/// <summary>
-	/// Summary description for NoTestFixtureException.
-	/// </summary>
-	[Serializable]
-	public class NoTestFixturesException : ApplicationException
-	{
-		public NoTestFixturesException() : base () {}
-
-		public NoTestFixturesException(string message) : base(message)
-		{}
-
-		public NoTestFixturesException(string message, Exception inner) : base(message, inner) {}
-
-		protected NoTestFixturesException(SerializationInfo info, StreamingContext context) : base(info, context)
-		{}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Runtime.Serialization;
+
+	/// <summary>
+	/// Summary description for NoTestFixtureException.
+	/// </summary>
+	[Serializable]
+	public class NoTestFixturesException : ApplicationException
+	{
+		public NoTestFixturesException() : base () {}
+
+		public NoTestFixturesException(string message) : base(message)
+		{}
+
+		public NoTestFixturesException(string message, Exception inner) : base(message, inner) {}
+
+		protected NoTestFixturesException(SerializationInfo info, StreamingContext context) : base(info, context)
+		{}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NotRunnableTestCase.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NotRunnableTestCase.cs
@@ -1,50 +1,50 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Summary description for NotRunnableTestCase.
-	/// </summary>
-	public class NotRunnableTestCase : TestCase
-	{
-		public NotRunnableTestCase(MethodInfo method, string reason) : base(method.DeclaringType.FullName, method.Name)
-		{
-			RunState = RunState.NotRunnable;
-			IgnoreReason = reason;
-		}
-
-		public NotRunnableTestCase(MethodInfo method) : base(method.DeclaringType.FullName, method.Name)
-		{
-			string reason;
-
-			if (method.IsAbstract)
-				reason = "it must not be abstract";
-			else if (method.IsStatic)
-				reason = "it must be an instance method";
-			else if (!method.IsPublic)
-				reason = "it must be a public method";
-			else if (method.GetParameters().Length != 0)
-				reason = "it must not have parameters";
-			else if (!method.ReturnType.Equals(typeof(void)))
-				reason = "it must return void";
-			else
-				reason = "reason not known";
-
-			RunState = RunState.NotRunnable;
-			IgnoreReason = String.Format("Method {0}'s signature is not correct: {1}.", method.Name, reason);
-		}
-
-		public override void Run(TestCaseResult result)
-		{
-			result.Ignore(base.IgnoreReason);
-		}
-	}
-}
-
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Summary description for NotRunnableTestCase.
+	/// </summary>
+	public class NotRunnableTestCase : TestCase
+	{
+		public NotRunnableTestCase(MethodInfo method, string reason) : base(method.DeclaringType.FullName, method.Name)
+		{
+			RunState = RunState.NotRunnable;
+			IgnoreReason = reason;
+		}
+
+		public NotRunnableTestCase(MethodInfo method) : base(method.DeclaringType.FullName, method.Name)
+		{
+			string reason;
+
+			if (method.IsAbstract)
+				reason = "it must not be abstract";
+			else if (method.IsStatic)
+				reason = "it must be an instance method";
+			else if (!method.IsPublic)
+				reason = "it must be a public method";
+			else if (method.GetParameters().Length != 0)
+				reason = "it must not have parameters";
+			else if (!method.ReturnType.Equals(typeof(void)))
+				reason = "it must return void";
+			else
+				reason = "reason not known";
+
+			RunState = RunState.NotRunnable;
+			IgnoreReason = String.Format("Method {0}'s signature is not correct: {1}.", method.Name, reason);
+		}
+
+		public override void Run(TestCaseResult result)
+		{
+			result.Ignore(base.IgnoreReason);
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/NullListener.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/NullListener.cs
@@ -1,41 +1,41 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Summary description for NullListener.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class NullListener : EventListener
-	{
-		public void RunStarted( string name, int testCount ){ }
-
-		public void RunFinished( TestResult result ) { }
-
-		public void RunFinished( Exception exception ) { }
-
-		public void TestStarted(TestName testName){}
-			
-		public void TestFinished(TestCaseResult result){}
-
-		public void SuiteStarted(TestName testName){}
-
-		public void SuiteFinished(TestSuiteResult result){}
-
-		public void UnhandledException( Exception exception ) {}
-
-		public void TestOutput(TestOutput testOutput) {}
-
-		public static EventListener NULL
-		{
-			get { return new NullListener();}
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Summary description for NullListener.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class NullListener : EventListener
+	{
+		public void RunStarted( string name, int testCount ){ }
+
+		public void RunFinished( TestResult result ) { }
+
+		public void RunFinished( Exception exception ) { }
+
+		public void TestStarted(TestName testName){}
+			
+		public void TestFinished(TestCaseResult result){}
+
+		public void SuiteStarted(TestName testName){}
+
+		public void SuiteFinished(TestSuiteResult result){}
+
+		public void UnhandledException( Exception exception ) {}
+
+		public void TestOutput(TestOutput testOutput) {}
+
+		public static EventListener NULL
+		{
+			get { return new NullListener();}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/PlatformHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/PlatformHelper.cs
@@ -1,244 +1,244 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	public class PlatformHelper
-	{
-		private OperatingSystem os;
-		private RuntimeFramework rt;
-
-		// Set whenever we fail to support a list of platforms
-		private string reason = string.Empty;
-
-		// Defined here and used in tests. We can't use PlatformID.Unix
-		// if we are building on .NET 1.0 or 1.1 and the values are different on Mono
-		public static readonly PlatformID UnixPlatformID_Microsoft = (PlatformID) 4;
-        public static readonly PlatformID UnixPlatformID_Mono = (PlatformID)128;
-
-		/// <summary>
-		/// Comma-delimited list of all supported OS platform constants
-		/// </summary>
-		public static readonly string OSPlatforms =
-			"Win,Win32,Win32S,Win32NT,Win32Windows,WinCE,Win95,Win98,WinMe,NT3,NT4,NT5,NT6,Win2K,WinXP,Win2003Server,Vista,Win2008Server,Unix,Linux";
-		
-		/// <summary>
-		/// Comma-delimited list of all supported Runtime platform constants
-		/// </summary>
-		public static readonly string RuntimePlatforms =
-			"Net,NetCF,SSCLI,Rotor,Mono";
-
-		/// <summary>
-		/// Default constructor uses the operating system and
-		/// common language runtime of the system.
-		/// </summary>
-		public PlatformHelper()
-		{
-			this.os = Environment.OSVersion;
-			this.rt = RuntimeFramework.CurrentFramework;
-		}
-
-		/// <summary>
-		/// Contruct a PlatformHelper for a particular operating
-		/// system and common language runtime. Used in testing.
-		/// </summary>
-		/// <param name="os">OperatingSystem to be used</param>
-		public PlatformHelper( OperatingSystem os, RuntimeFramework rt )
-		{
-			this.os = os;
-			this.rt = rt;
-		}
-
-		/// <summary>
-		/// Test to determine if one of a collection of platforms
-		/// is being used currently.
-		/// </summary>
-		/// <param name="platforms"></param>
-		/// <returns></returns>
-		public bool IsPlatformSupported( string[] platforms )
-		{
-			foreach( string platform in platforms )
-				if ( IsPlatformSupported( platform ) )
-					return true;
-
-			return false;
-		}
-
-		/// <summary>
-		/// Tests to determine if the current platform is supported
-		/// based on a platform attribute.
-		/// </summary>
-		/// <param name="platformAttribute">The attribute to examine</param>
-		/// <returns></returns>
-		public bool IsPlatformSupported( Attribute platformAttribute )
-		{
-			//Use reflection to avoid dependency on a particular framework version
-			string include = (string)Reflect.GetPropertyValue( 
-				platformAttribute, "Include", 
-				BindingFlags.Public | BindingFlags.Instance );
-
-			string exclude = (string)Reflect.GetPropertyValue(
-				platformAttribute, "Exclude", 
-				BindingFlags.Public | BindingFlags.Instance );
-
-			try
-			{
-				if (include != null && !IsPlatformSupported(include))
-				{
-					reason = string.Format("Only supported on {0}", include);
-					return false;
-				}
-
-				if (exclude != null && IsPlatformSupported(exclude))
-				{
-					reason = string.Format("Not supported on {0}", exclude);
-					return false;
-				}
-			}
-			catch( ArgumentException ex )
-			{
-				reason = string.Format( "Invalid platform name: {0}", ex.ParamName );
-				return false; 
-			}
-
-			return true;
-		}
-
-		/// <summary>
-		/// Test to determine if the a particular platform or comma-
-		/// delimited set of platforms is in use.
-		/// </summary>
-		/// <param name="platform">Name of the platform or comma-separated list of platform names</param>
-		/// <returns>True if the platform is in use on the system</returns>
-		public bool IsPlatformSupported( string platform )
-		{
-			if ( platform.IndexOf( ',' ) >= 0 )
-				return IsPlatformSupported( platform.Split( new char[] { ',' } ) );
-
-			string platformName = platform.Trim();
-			bool nameOK = false;
-
-			string versionSpecification = null;
-
-			string[] parts = platformName.Split( new char[] { '-' } );
-			if ( parts.Length == 2 )
-			{
-				platformName = parts[0];
-				versionSpecification = parts[1];
-			}
-
-			switch( platformName.ToUpper() )
-			{
-				case "WIN":
-				case "WIN32":
-					nameOK = os.Platform.ToString().StartsWith( "Win" );
-					break;
-				case "WIN32S":
-					nameOK = os.Platform == PlatformID.Win32S;
-					break;
-				case "WIN32WINDOWS":
-					nameOK = os.Platform == PlatformID.Win32Windows;
-					break;
-				case "WIN32NT":
-					nameOK = os.Platform == PlatformID.Win32NT;
-					break;
-				case "WINCE":
-					nameOK = (int)os.Platform == 3;  // Not defined in .NET 1.0
-					break;
-				case "WIN95":
-					nameOK = os.Platform == PlatformID.Win32Windows && os.Version.Major == 4 && os.Version.Minor == 0;
-					break;
-				case "WIN98": 
-					nameOK = os.Platform == PlatformID.Win32Windows && os.Version.Major == 4 && os.Version.Minor == 10;
-					break;
-				case "WINME":
-					nameOK = os.Platform == PlatformID.Win32Windows && os.Version.Major == 4 && os.Version.Minor == 90;
-					break;
-				case "NT3":
-					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 3;
-					break;
-				case "NT4":
-					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 4;
-					break;
-				case "NT5":
-					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5;
-					break;
-				case "WIN2K":
-					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5 && os.Version.Minor == 0;
-					break;
-				case "WINXP":
-					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5 && os.Version.Minor == 1;
-					break;
-				case "WIN2003SERVER":
-					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5 && os.Version.Minor == 2;
-					break;
-                case "NT6":
-                    nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 6;
-                    break;
-                // TODO: Distinguish Vista SP1 from Server 2008
-                case "VISTA":
-                    nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 6 && os.Version.Minor == 0 && os.Version.Build != 6001;
-                    break;
-                case "WIN2008SERVER":
-                    nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 6 && os.Version.Minor == 0 && os.Version.Build == 6001;
-                    break;
-				case "UNIX":
-				case "LINUX":
-					nameOK = os.Platform == UnixPlatformID_Microsoft
-                          || os.Platform == UnixPlatformID_Mono;
-					break;
-				case "NET":
-					nameOK = rt.Runtime == RuntimeType.Net;
-					break;
-				case "NETCF":
-					nameOK = rt.Runtime == RuntimeType.NetCF;
-					break;
-				case "SSCLI":
-				case "ROTOR":
-					nameOK = rt.Runtime == RuntimeType.SSCLI;
-					break;
-				case "MONO":
-					nameOK = rt.Runtime == RuntimeType.Mono;
-					// Special handling because Mono 1.0 profile has version 1.1
-					if ( versionSpecification == "1.0" )
-						versionSpecification = "1.1";
-					break;
-				default:
-					throw new ArgumentException( "Invalid platform name", platform.ToString() );
-			}
-
-			if ( nameOK ) 
-			{
-				if ( versionSpecification == null )
-					return true;
-
-				Version version = new Version( versionSpecification );
-
-				if ( rt.Version.Major == version.Major &&
-					 rt.Version.Minor == version.Minor &&
-				   ( version.Build == -1 || rt.Version.Build == version.Build ) &&
-				   ( version.Revision == -1 || rt.Version.Revision == version.Revision ) )
-						return true;
-			}
-
-			this.reason = "Only supported on " + platform;
-			return false;
-		}
-
-		/// <summary>
-		/// Return the last failure reason. Results are not
-		/// defined if called before IsSupported( Attribute )
-		/// is called.
-		/// </summary>
-		public string Reason
-		{
-			get { return reason; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	public class PlatformHelper
+	{
+		private OperatingSystem os;
+		private RuntimeFramework rt;
+
+		// Set whenever we fail to support a list of platforms
+		private string reason = string.Empty;
+
+		// Defined here and used in tests. We can't use PlatformID.Unix
+		// if we are building on .NET 1.0 or 1.1 and the values are different on Mono
+		public static readonly PlatformID UnixPlatformID_Microsoft = (PlatformID) 4;
+        public static readonly PlatformID UnixPlatformID_Mono = (PlatformID)128;
+
+		/// <summary>
+		/// Comma-delimited list of all supported OS platform constants
+		/// </summary>
+		public static readonly string OSPlatforms =
+			"Win,Win32,Win32S,Win32NT,Win32Windows,WinCE,Win95,Win98,WinMe,NT3,NT4,NT5,NT6,Win2K,WinXP,Win2003Server,Vista,Win2008Server,Unix,Linux";
+		
+		/// <summary>
+		/// Comma-delimited list of all supported Runtime platform constants
+		/// </summary>
+		public static readonly string RuntimePlatforms =
+			"Net,NetCF,SSCLI,Rotor,Mono";
+
+		/// <summary>
+		/// Default constructor uses the operating system and
+		/// common language runtime of the system.
+		/// </summary>
+		public PlatformHelper()
+		{
+			this.os = Environment.OSVersion;
+			this.rt = RuntimeFramework.CurrentFramework;
+		}
+
+		/// <summary>
+		/// Contruct a PlatformHelper for a particular operating
+		/// system and common language runtime. Used in testing.
+		/// </summary>
+		/// <param name="os">OperatingSystem to be used</param>
+		public PlatformHelper( OperatingSystem os, RuntimeFramework rt )
+		{
+			this.os = os;
+			this.rt = rt;
+		}
+
+		/// <summary>
+		/// Test to determine if one of a collection of platforms
+		/// is being used currently.
+		/// </summary>
+		/// <param name="platforms"></param>
+		/// <returns></returns>
+		public bool IsPlatformSupported( string[] platforms )
+		{
+			foreach( string platform in platforms )
+				if ( IsPlatformSupported( platform ) )
+					return true;
+
+			return false;
+		}
+
+		/// <summary>
+		/// Tests to determine if the current platform is supported
+		/// based on a platform attribute.
+		/// </summary>
+		/// <param name="platformAttribute">The attribute to examine</param>
+		/// <returns></returns>
+		public bool IsPlatformSupported( Attribute platformAttribute )
+		{
+			//Use reflection to avoid dependency on a particular framework version
+			string include = (string)Reflect.GetPropertyValue( 
+				platformAttribute, "Include", 
+				BindingFlags.Public | BindingFlags.Instance );
+
+			string exclude = (string)Reflect.GetPropertyValue(
+				platformAttribute, "Exclude", 
+				BindingFlags.Public | BindingFlags.Instance );
+
+			try
+			{
+				if (include != null && !IsPlatformSupported(include))
+				{
+					reason = string.Format("Only supported on {0}", include);
+					return false;
+				}
+
+				if (exclude != null && IsPlatformSupported(exclude))
+				{
+					reason = string.Format("Not supported on {0}", exclude);
+					return false;
+				}
+			}
+			catch( ArgumentException ex )
+			{
+				reason = string.Format( "Invalid platform name: {0}", ex.ParamName );
+				return false; 
+			}
+
+			return true;
+		}
+
+		/// <summary>
+		/// Test to determine if the a particular platform or comma-
+		/// delimited set of platforms is in use.
+		/// </summary>
+		/// <param name="platform">Name of the platform or comma-separated list of platform names</param>
+		/// <returns>True if the platform is in use on the system</returns>
+		public bool IsPlatformSupported( string platform )
+		{
+			if ( platform.IndexOf( ',' ) >= 0 )
+				return IsPlatformSupported( platform.Split( new char[] { ',' } ) );
+
+			string platformName = platform.Trim();
+			bool nameOK = false;
+
+			string versionSpecification = null;
+
+			string[] parts = platformName.Split( new char[] { '-' } );
+			if ( parts.Length == 2 )
+			{
+				platformName = parts[0];
+				versionSpecification = parts[1];
+			}
+
+			switch( platformName.ToUpper() )
+			{
+				case "WIN":
+				case "WIN32":
+					nameOK = os.Platform.ToString().StartsWith( "Win" );
+					break;
+				case "WIN32S":
+					nameOK = os.Platform == PlatformID.Win32S;
+					break;
+				case "WIN32WINDOWS":
+					nameOK = os.Platform == PlatformID.Win32Windows;
+					break;
+				case "WIN32NT":
+					nameOK = os.Platform == PlatformID.Win32NT;
+					break;
+				case "WINCE":
+					nameOK = (int)os.Platform == 3;  // Not defined in .NET 1.0
+					break;
+				case "WIN95":
+					nameOK = os.Platform == PlatformID.Win32Windows && os.Version.Major == 4 && os.Version.Minor == 0;
+					break;
+				case "WIN98": 
+					nameOK = os.Platform == PlatformID.Win32Windows && os.Version.Major == 4 && os.Version.Minor == 10;
+					break;
+				case "WINME":
+					nameOK = os.Platform == PlatformID.Win32Windows && os.Version.Major == 4 && os.Version.Minor == 90;
+					break;
+				case "NT3":
+					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 3;
+					break;
+				case "NT4":
+					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 4;
+					break;
+				case "NT5":
+					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5;
+					break;
+				case "WIN2K":
+					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5 && os.Version.Minor == 0;
+					break;
+				case "WINXP":
+					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5 && os.Version.Minor == 1;
+					break;
+				case "WIN2003SERVER":
+					nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 5 && os.Version.Minor == 2;
+					break;
+                case "NT6":
+                    nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 6;
+                    break;
+                // TODO: Distinguish Vista SP1 from Server 2008
+                case "VISTA":
+                    nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 6 && os.Version.Minor == 0 && os.Version.Build != 6001;
+                    break;
+                case "WIN2008SERVER":
+                    nameOK = os.Platform == PlatformID.Win32NT && os.Version.Major == 6 && os.Version.Minor == 0 && os.Version.Build == 6001;
+                    break;
+				case "UNIX":
+				case "LINUX":
+					nameOK = os.Platform == UnixPlatformID_Microsoft
+                          || os.Platform == UnixPlatformID_Mono;
+					break;
+				case "NET":
+					nameOK = rt.Runtime == RuntimeType.Net;
+					break;
+				case "NETCF":
+					nameOK = rt.Runtime == RuntimeType.NetCF;
+					break;
+				case "SSCLI":
+				case "ROTOR":
+					nameOK = rt.Runtime == RuntimeType.SSCLI;
+					break;
+				case "MONO":
+					nameOK = rt.Runtime == RuntimeType.Mono;
+					// Special handling because Mono 1.0 profile has version 1.1
+					if ( versionSpecification == "1.0" )
+						versionSpecification = "1.1";
+					break;
+				default:
+					throw new ArgumentException( "Invalid platform name", platform.ToString() );
+			}
+
+			if ( nameOK ) 
+			{
+				if ( versionSpecification == null )
+					return true;
+
+				Version version = new Version( versionSpecification );
+
+				if ( rt.Version.Major == version.Major &&
+					 rt.Version.Minor == version.Minor &&
+				   ( version.Build == -1 || rt.Version.Build == version.Build ) &&
+				   ( version.Revision == -1 || rt.Version.Revision == version.Revision ) )
+						return true;
+			}
+
+			this.reason = "Only supported on " + platform;
+			return false;
+		}
+
+		/// <summary>
+		/// Return the last failure reason. Results are not
+		/// defined if called before IsSupported( Attribute )
+		/// is called.
+		/// </summary>
+		public string Reason
+		{
+			get { return reason; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/ProxyTestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/ProxyTestRunner.cs
@@ -1,174 +1,174 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-namespace NUnit.Core
-{
-	using System;
-	using System.Collections;
-	using System.IO;
-
-	/// <summary>
-	/// DelegatingTestRUnner is the abstract base for core TestRunner
-	/// implementations that operate by controlling a downstream
-	/// TestRunner. All calls are simply passed on to the
-	/// TestRunner that is provided to the constructor.
-	/// 
-	/// Although the class is abstract, it has no abstract 
-	/// methods specified because each implementation will
-	/// need to override different methods. All methods are
-	/// specified using interface syntax and the derived class
-	/// must explicitly implement TestRunner in order to 
-	/// redefine the selected methods.
-	/// </summary>
-	public abstract class ProxyTestRunner : MarshalByRefObject, TestRunner
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// Our runner ID
-		/// </summary>
-		protected int runnerID;
-
-		/// <summary>
-		/// The downstream TestRunner
-		/// </summary>
-		private TestRunner testRunner;
-
-		/// <summary>
-		/// The event listener for the currently running test
-		/// </summary>
-		protected EventListener listener;
-
-		#endregion
-
-		#region Construction
-		public ProxyTestRunner(TestRunner testRunner)
-		{
-			this.testRunner = testRunner;
-			this.runnerID = testRunner.ID;
-		}
-
-		/// <summary>
-		/// Protected constructor for runners that delay creation
-		/// of their downstream runner.
-		/// </summary>
-		protected ProxyTestRunner( int runnerID )
-		{
-			this.runnerID = runnerID;
-		}
-		#endregion
-
-		#region Properties
-		public virtual int ID
-		{
-			get { return runnerID; }
-		}
-
-		public virtual bool Running
-		{
-			get { return testRunner != null && testRunner.Running; }
-		}
-
-		public virtual IList AssemblyInfo
-		{
-			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
-		}
-
-		public virtual ITest Test
-		{
-			get { return testRunner == null ? null : testRunner.Test; }
-		}
-
-		public virtual TestResult TestResult
-		{
-			get { return testRunner == null ? null : testRunner.TestResult; }
-		}
-
-		/// <summary>
-		/// Protected property copies any settings to the downstream test runner
-		/// when it is set. Derived runners overriding this should call the base
-		/// or copy the settings themselves.
-		/// </summary>
-		protected virtual TestRunner TestRunner
-		{
-			get { return testRunner; }
-			set { testRunner = value; }
-		}
-		#endregion
-
-		#region Load and Unload Methods
-		public virtual bool Load( TestPackage package )
-		{
-			return this.testRunner.Load( package );
-		}
-
-		public virtual void Unload()
-		{
-            if ( this.testRunner != null )
-			    this.testRunner.Unload();
-		}
-		#endregion
-
-		#region CountTestCases
-		public virtual int CountTestCases( ITestFilter filter )
-		{
-			return this.testRunner.CountTestCases( filter );
-		}
-		#endregion
-
-		#region Methods for Running Tests
-		public virtual TestResult Run(EventListener listener)
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			return this.testRunner.Run(listener);
-		}
-
-		public virtual TestResult Run(EventListener listener, ITestFilter filter)
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			return this.testRunner.Run(listener, filter);
-		}
-
-		public virtual void BeginRun( EventListener listener )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			this.testRunner.BeginRun( listener );
-		}
-
-		public virtual void BeginRun( EventListener listener, ITestFilter filter )
-		{
-			// Save active listener for derived classes
-			this.listener = listener;
-			this.testRunner.BeginRun( listener, filter );
-		}
-
-		public virtual TestResult EndRun()
-		{
-			return this.testRunner.EndRun();
-		}
-
-		public virtual void CancelRun()
-		{
-			this.testRunner.CancelRun();
-		}
-
-		public virtual void Wait()
-		{
-			this.testRunner.Wait();
-		}
-		#endregion
-
-		#region InitializeLifetimeService Override
-		public override object InitializeLifetimeService()
-		{
-			return null;
-		}
-		#endregion
-
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+namespace NUnit.Core
+{
+	using System;
+	using System.Collections;
+	using System.IO;
+
+	/// <summary>
+	/// DelegatingTestRUnner is the abstract base for core TestRunner
+	/// implementations that operate by controlling a downstream
+	/// TestRunner. All calls are simply passed on to the
+	/// TestRunner that is provided to the constructor.
+	/// 
+	/// Although the class is abstract, it has no abstract 
+	/// methods specified because each implementation will
+	/// need to override different methods. All methods are
+	/// specified using interface syntax and the derived class
+	/// must explicitly implement TestRunner in order to 
+	/// redefine the selected methods.
+	/// </summary>
+	public abstract class ProxyTestRunner : MarshalByRefObject, TestRunner
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// Our runner ID
+		/// </summary>
+		protected int runnerID;
+
+		/// <summary>
+		/// The downstream TestRunner
+		/// </summary>
+		private TestRunner testRunner;
+
+		/// <summary>
+		/// The event listener for the currently running test
+		/// </summary>
+		protected EventListener listener;
+
+		#endregion
+
+		#region Construction
+		public ProxyTestRunner(TestRunner testRunner)
+		{
+			this.testRunner = testRunner;
+			this.runnerID = testRunner.ID;
+		}
+
+		/// <summary>
+		/// Protected constructor for runners that delay creation
+		/// of their downstream runner.
+		/// </summary>
+		protected ProxyTestRunner( int runnerID )
+		{
+			this.runnerID = runnerID;
+		}
+		#endregion
+
+		#region Properties
+		public virtual int ID
+		{
+			get { return runnerID; }
+		}
+
+		public virtual bool Running
+		{
+			get { return testRunner != null && testRunner.Running; }
+		}
+
+		public virtual IList AssemblyInfo
+		{
+			get { return testRunner == null ? null : testRunner.AssemblyInfo; }
+		}
+
+		public virtual ITest Test
+		{
+			get { return testRunner == null ? null : testRunner.Test; }
+		}
+
+		public virtual TestResult TestResult
+		{
+			get { return testRunner == null ? null : testRunner.TestResult; }
+		}
+
+		/// <summary>
+		/// Protected property copies any settings to the downstream test runner
+		/// when it is set. Derived runners overriding this should call the base
+		/// or copy the settings themselves.
+		/// </summary>
+		protected virtual TestRunner TestRunner
+		{
+			get { return testRunner; }
+			set { testRunner = value; }
+		}
+		#endregion
+
+		#region Load and Unload Methods
+		public virtual bool Load( TestPackage package )
+		{
+			return this.testRunner.Load( package );
+		}
+
+		public virtual void Unload()
+		{
+            if ( this.testRunner != null )
+			    this.testRunner.Unload();
+		}
+		#endregion
+
+		#region CountTestCases
+		public virtual int CountTestCases( ITestFilter filter )
+		{
+			return this.testRunner.CountTestCases( filter );
+		}
+		#endregion
+
+		#region Methods for Running Tests
+		public virtual TestResult Run(EventListener listener)
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			return this.testRunner.Run(listener);
+		}
+
+		public virtual TestResult Run(EventListener listener, ITestFilter filter)
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			return this.testRunner.Run(listener, filter);
+		}
+
+		public virtual void BeginRun( EventListener listener )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			this.testRunner.BeginRun( listener );
+		}
+
+		public virtual void BeginRun( EventListener listener, ITestFilter filter )
+		{
+			// Save active listener for derived classes
+			this.listener = listener;
+			this.testRunner.BeginRun( listener, filter );
+		}
+
+		public virtual TestResult EndRun()
+		{
+			return this.testRunner.EndRun();
+		}
+
+		public virtual void CancelRun()
+		{
+			this.testRunner.CancelRun();
+		}
+
+		public virtual void Wait()
+		{
+			this.testRunner.Wait();
+		}
+		#endregion
+
+		#region InitializeLifetimeService Override
+		public override object InitializeLifetimeService()
+		{
+			return null;
+		}
+		#endregion
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/QueuingEventListener.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/QueuingEventListener.cs
@@ -1,110 +1,110 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// QueuingEventListener uses an EventQueue to store any
-	/// events received on its EventListener interface.
-	/// </summary>
-	public class QueuingEventListener : EventListener
-	{
-		private EventQueue events = new EventQueue();
-
-		/// <summary>
-		/// The EvenQueue created and filled by this listener
-		/// </summary>
-		public EventQueue Events
-		{
-			get { return events; }
-		}
-
-		#region EventListener Methods
-		/// <summary>
-		/// Run is starting
-		/// </summary>
-		/// <param name="tests">Array of tests to be run</param>
-		public void RunStarted( string name, int testCount )
-		{
-			events.Enqueue( new RunStartedEvent( name, testCount ) );
-		}
-
-		/// <summary>
-		/// Run finished successfully
-		/// </summary>
-		/// <param name="results">Array of test results</param>
-		public void RunFinished( TestResult result )
-		{
-			events.Enqueue( new RunFinishedEvent( result ) );
-		}
-
-		/// <summary>
-		/// Run was terminated due to an exception
-		/// </summary>
-		/// <param name="exception">Exception that was thrown</param>
-		public void RunFinished( Exception exception )
-		{
-			events.Enqueue( new RunFinishedEvent( exception ) );
-		}
-
-		/// <summary>
-		/// A single test case is starting
-		/// </summary>
-		/// <param name="testCase">The test case</param>
-		public void TestStarted(TestName testName)
-		{
-			events.Enqueue( new TestStartedEvent( testName ) );
-		}
-
-		/// <summary>
-		/// A test case finished
-		/// </summary>
-		/// <param name="result">Result of the test case</param>
-		public void TestFinished(TestCaseResult result)
-		{
-			events.Enqueue( new TestFinishedEvent( result ) );
-		}
-
-		/// <summary>
-		/// A suite is starting
-		/// </summary>
-		/// <param name="suite">The suite that is starting</param>
-		public void SuiteStarted(TestName testName)
-		{
-			events.Enqueue( new SuiteStartedEvent( testName ) );
-		}
-
-		/// <summary>
-		/// A suite finished
-		/// </summary>
-		/// <param name="result">Result of the suite</param>
-		public void SuiteFinished(TestSuiteResult result)
-		{
-			events.Enqueue( new SuiteFinishedEvent( result ) );
-		}
-
-		/// <summary>
-		/// An unhandled exception occured while running a test,
-		/// but the test was not terminated.
-		/// </summary>
-		/// <param name="exception"></param>
-		public void UnhandledException( Exception exception )
-		{
-			events.Enqueue( new UnhandledExceptionEvent( exception ) );
-		}
-
-		/// <summary>
-		/// A message has been output to the console.
-		/// </summary>
-		/// <param name="testOutput">A console message</param>
-		public void TestOutput( TestOutput output )
-		{
-			events.Enqueue( new OutputEvent( output ) );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// QueuingEventListener uses an EventQueue to store any
+	/// events received on its EventListener interface.
+	/// </summary>
+	public class QueuingEventListener : EventListener
+	{
+		private EventQueue events = new EventQueue();
+
+		/// <summary>
+		/// The EvenQueue created and filled by this listener
+		/// </summary>
+		public EventQueue Events
+		{
+			get { return events; }
+		}
+
+		#region EventListener Methods
+		/// <summary>
+		/// Run is starting
+		/// </summary>
+		/// <param name="tests">Array of tests to be run</param>
+		public void RunStarted( string name, int testCount )
+		{
+			events.Enqueue( new RunStartedEvent( name, testCount ) );
+		}
+
+		/// <summary>
+		/// Run finished successfully
+		/// </summary>
+		/// <param name="results">Array of test results</param>
+		public void RunFinished( TestResult result )
+		{
+			events.Enqueue( new RunFinishedEvent( result ) );
+		}
+
+		/// <summary>
+		/// Run was terminated due to an exception
+		/// </summary>
+		/// <param name="exception">Exception that was thrown</param>
+		public void RunFinished( Exception exception )
+		{
+			events.Enqueue( new RunFinishedEvent( exception ) );
+		}
+
+		/// <summary>
+		/// A single test case is starting
+		/// </summary>
+		/// <param name="testCase">The test case</param>
+		public void TestStarted(TestName testName)
+		{
+			events.Enqueue( new TestStartedEvent( testName ) );
+		}
+
+		/// <summary>
+		/// A test case finished
+		/// </summary>
+		/// <param name="result">Result of the test case</param>
+		public void TestFinished(TestCaseResult result)
+		{
+			events.Enqueue( new TestFinishedEvent( result ) );
+		}
+
+		/// <summary>
+		/// A suite is starting
+		/// </summary>
+		/// <param name="suite">The suite that is starting</param>
+		public void SuiteStarted(TestName testName)
+		{
+			events.Enqueue( new SuiteStartedEvent( testName ) );
+		}
+
+		/// <summary>
+		/// A suite finished
+		/// </summary>
+		/// <param name="result">Result of the suite</param>
+		public void SuiteFinished(TestSuiteResult result)
+		{
+			events.Enqueue( new SuiteFinishedEvent( result ) );
+		}
+
+		/// <summary>
+		/// An unhandled exception occured while running a test,
+		/// but the test was not terminated.
+		/// </summary>
+		/// <param name="exception"></param>
+		public void UnhandledException( Exception exception )
+		{
+			events.Enqueue( new UnhandledExceptionEvent( exception ) );
+		}
+
+		/// <summary>
+		/// A message has been output to the console.
+		/// </summary>
+		/// <param name="testOutput">A console message</param>
+		public void TestOutput( TestOutput output )
+		{
+			events.Enqueue( new OutputEvent( output ) );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/Reflect.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/Reflect.cs
@@ -1,430 +1,430 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-using System.Collections;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Helper methods for inspecting a type by reflection. 
-	/// 
-	/// Many of these methods take a MemberInfo as an argument to avoid
-	/// duplication, even though certain attributes can only appear on
-	/// specific types of members, like MethodInfo or Type.
-	/// 
-	/// In the case where a type is being examined for the presence of
-	/// an attribute, interface or named member, the Reflect methods
-	/// operate with the full name of the member being sought. This
-	/// removes the necessity of the caller having a reference to the
-	/// assembly that defines the item being sought and allows the
-	/// NUnit core to inspect assemblies that reference an older
-	/// version of the NUnit framework.
-	/// </summary>
-	public class Reflect
-	{
-		#region Attributes 
-
-		/// <summary>
-		/// Check presence of attribute of a given type on a member.
-		/// </summary>
-		/// <param name="member">The member to examine</param>
-		/// <param name="attrName">The FullName of the attribute type to look for</param>
-		/// <param name="inherit">True to include inherited attributes</param>
-		/// <returns>True if the attribute is present</returns>
-		public static bool HasAttribute( MemberInfo member, string attrName, bool inherit )
-		{
-			object[] attributes = member.GetCustomAttributes( inherit );
-			foreach( Attribute attribute in attributes )
-				if ( IsInstanceOfType( attrName, attribute ) )
-					return true;
-			return false;
-		}
-
-        /// <summary>
-        /// Get attribute of a given type on a member. If multiple attributes
-        /// of a type are present, the first one found is returned.
-        /// </summary>
-        /// <param name="member">The member to examine</param>
-        /// <param name="attrName">The FullName of the attribute type to look for</param>
-        /// <param name="inherit">True to include inherited attributes</param>
-        /// <returns>The attribute or null</returns>
-        public static System.Attribute GetAttribute(MemberInfo member, string attrName, bool inherit)
-        {
-            object[] attributes = member.GetCustomAttributes(inherit);
-            foreach (Attribute attribute in attributes)
-                if ( IsInstanceOfType( attrName, attribute ) )
-                    return attribute;
-            return null;
-        }
-
-        /// <summary>
-        /// Get attribute of a given type on an assembly. If multiple attributes
-        /// of a type are present, the first one found is returned.
-        /// </summary>
-        /// <param name="assembly">The assembly to examine</param>
-        /// <param name="attrName">The FullName of the attribute type to look for</param>
-        /// <param name="inherit">True to include inherited attributes</param>
-        /// <returns>The attribute or null</returns>
-        public static System.Attribute GetAttribute(Assembly assembly, string attrName, bool inherit)
-        {
-            object[] attributes = assembly.GetCustomAttributes(inherit);
-            foreach (Attribute attribute in attributes)
-                if ( IsInstanceOfType(attrName, attribute) )
-                    return attribute;
-            return null;
-        }
-
-        /// <summary>
-		/// Get all attributes of a given type on a member.
-		/// </summary>
-		/// <param name="member">The member to examine</param>
-		/// <param name="attrName">The FullName of the attribute type to look for</param>
-		/// <param name="inherit">True to include inherited attributes</param>
-		/// <returns>The attribute or null</returns>
-		public static System.Attribute[] GetAttributes( MemberInfo member, string attrName, bool inherit )
-		{
-			object[] attributes = member.GetCustomAttributes( inherit );
-			ArrayList result = new ArrayList();
-			foreach( Attribute attribute in attributes )
-				if ( IsInstanceOfType( attrName, attribute ) )
-					result.Add( attribute );
-			return (System.Attribute[])result.ToArray( typeof( System.Attribute ) );
-		}
-
-        /// <summary>
-        /// Get all attributes on a member.
-        /// </summary>
-        /// <param name="member">The member to examine</param>
-        /// <param name="inherit">True to include inherited attributes</param>
-        /// <returns>The attribute or null</returns>
-        public static System.Attribute[] GetAttributes(MemberInfo member, bool inherit)
-        {
-            object[] attributes = member.GetCustomAttributes(inherit);
-            System.Attribute[] result = new System.Attribute[attributes.Length];
-            int n = 0;
-            foreach (Attribute attribute in attributes)
-                result[n++] = attribute;
-            return result;
-        }
-
-        /// <summary>
-        /// Get all attributes on an assembly.
-        /// </summary>
-        /// <param name="assembly">The assembly to examine</param>
-        /// <param name="inherit">True to include inherited attributes</param>
-        /// <returns>The attributes or null</returns>
-        public static System.Attribute[] GetAttributes(Assembly assembly, bool inherit)
-        {
-            object[] attributes = assembly.GetCustomAttributes(inherit);
-            System.Attribute[] result = new System.Attribute[attributes.Length];
-            int n = 0;
-            foreach (Attribute attribute in attributes)
-                result[n++] = attribute;
-            return result;
-        }
-
-        #endregion
-
-		#region Interfaces
-
-		/// <summary>
-		/// Check to see if a type implements a named interface.
-		/// </summary>
-		/// <param name="fixtureType">The type to examine</param>
-		/// <param name="interfaceName">The FullName of the interface to check for</param>
-		/// <returns>True if the interface is implemented by the type</returns>
-		public static bool HasInterface( Type fixtureType, string interfaceName )
-		{
-			foreach( Type type in fixtureType.GetInterfaces() )
-				if ( type.FullName == interfaceName )
-						return true;
-			return false;
-		}
-
-		#endregion
-
-		#region Inheritance
-		//SHMARYA: [ 10/12/2005 ]
-		/// <summary>
-		/// Checks to see if a type inherits from a named type. 
-		/// </summary>
-		/// <param name="type">The type to examine</param>
-		/// <param name="parentType">The FullName of the inherited type to look for</param>
-		/// <returns>True if the type inherits from the named type.</returns>
-		public static bool InheritsFrom( Type type, string typeName )
-		{
-			for( Type current = type; current != typeof( object ); current = current.BaseType )
-				if( current.FullName == typeName )
-					return true;
-
-			return false;
-		}
-
-		public static bool InheritsFrom( object obj, string typeName )
-		{
-			return InheritsFrom( obj.GetType(), typeName );
-		}
-
-		public static bool IsInstanceOfType( string typeName, Attribute attr )
-		{
-			Type type = attr.GetType();
-			return type.FullName == typeName || InheritsFrom( type, typeName );
-		}
-		#endregion
-
-		#region Get Methods of a type
-
-		/// <summary>
-		/// Find the default constructor on a type
-		/// </summary>
-		/// <param name="fixtureType"></param>
-		/// <returns></returns>
-		public static ConstructorInfo GetConstructor( Type fixtureType )
-		{
-			return fixtureType.GetConstructor( Type.EmptyTypes );
-		}
-
-		/// <summary>
-		/// Find the default constructor on a type
-		/// </summary>
-		/// <param name="fixtureType"></param>
-		/// <returns></returns>
-		public static ConstructorInfo GetConstructor( Type fixtureType, Type[] types )
-		{
-			return fixtureType.GetConstructor( types );
-		}
-
-		/// <summary>
-		/// Examine a fixture type and return a method having a particular attribute.
-		/// In the case of multiple methods, the first one found is returned.
-		/// </summary>
-		/// <param name="fixtureType">The type to examine</param>
-		/// <param name="attributeName">The FullName of the attribute to look for</param>
-		/// <param name="bindingFlags">BindingFlags to use in looking for method</param>
-		/// <returns>A MethodInfo or null</returns>
-		public static MethodInfo GetMethodWithAttribute( Type fixtureType, string attributeName, BindingFlags bindingFlags, bool inherit )
-		{
-			foreach(MethodInfo method in fixtureType.GetMethods( bindingFlags ) )
-			{
-				if( HasAttribute( method, attributeName, inherit ) ) 
-					return method;
-			}
-
-			return null;
-		}
-
-		/// <summary>
-		/// Examine a fixture type and return a count of the methods having a 
-		/// particular attribute.
-		/// </summary>
-		/// <param name="fixtureType">The type to examine</param>
-		/// <param name="attributeName">The FullName of the attribute to look for</param>
-		/// <param name="bindingFlags">BindingFlags to use in looking for method</param>
-		/// <returns>The number of such methods found</returns>
-		public static int CountMethodsWithAttribute( Type fixtureType, string attributeName, BindingFlags bindingFlags, bool inherit )
-		{
-			int count = 0;
-
-			foreach(MethodInfo method in fixtureType.GetMethods( bindingFlags ) )
-			{
-				if( HasAttribute( method, attributeName, inherit ) ) 
-					count++;
-			}
-
-			return count;
-		}
-
-        /// <summary>
-        /// Examine a fixture type and get a method with a particular name.
-        /// In the case of overloads, the first one found is returned.
-        /// </summary>
-        /// <param name="fixtureType">The type to examine</param>
-        /// <param name="methodName">The name of the method</param>
-        /// <param name="bindingFlags">BindingFlags to use in the search</param>
-        /// <returns>A MethodInfo or null</returns>
-        public static MethodInfo GetNamedMethod(Type fixtureType, string methodName, BindingFlags bindingFlags)
-        {
-            foreach (MethodInfo method in fixtureType.GetMethods(bindingFlags))
-            {
-                if (method.Name == methodName)
-                    return method;
-            }
-
-            return null;
-        }
-
-        /// <summary>
-        /// Examine a fixture type and get a method with a particular name and list
-        /// of arguments. In the case of overloads, the first one found is returned.
-        /// </summary>
-        /// <param name="fixtureType">The type to examine</param>
-        /// <param name="methodName">The name of the method</param>
-        /// <param name="argTypes">The full names of the argument types to search for</param>
-        /// <param name="bindingFlags">BindingFlags to use in the search</param>
-        /// <returns>A MethodInfo or null</returns>
-        public static MethodInfo GetNamedMethod(Type fixtureType, string methodName, 
-            string[] argTypes, BindingFlags bindingFlags)
-        {
-            foreach (MethodInfo method in fixtureType.GetMethods(bindingFlags))
-            {
-                if (method.Name == methodName)
-                {
-                    ParameterInfo[] parameters = method.GetParameters();
-                    if (parameters.Length == argTypes.Length)
-                    {
-                        bool match = true;
-                        for (int i = 0; i < argTypes.Length; i++)
-                            if (parameters[i].ParameterType.FullName != argTypes[i])
-                            {
-                                match = false;
-                                break;
-                            }
-
-                        if (match)
-                            return method;
-                    }
-                }
-            }
-
-            return null;
-        }
-
-        #endregion
-
-		#region Get Properties of a type
-
-		/// <summary>
-		/// Examine a type and return a property having a particular attribute.
-		/// In the case of multiple methods, the first one found is returned.
-		/// </summary>
-		/// <param name="fixtureType">The type to examine</param>
-		/// <param name="attributeName">The FullName of the attribute to look for</param>
-		/// <param name="bindingFlags">Binding flags to use in searching</param>
-		/// <returns>A PropertyInfo or null</returns>
-		public static PropertyInfo GetPropertyWithAttribute( Type fixtureType, string attributeName, BindingFlags bindingFlags )
-		{
-			foreach(PropertyInfo property in fixtureType.GetProperties( bindingFlags ) )
-			{
-				if( HasAttribute( property, attributeName, true ) ) 
-					return property;
-			}
-
-			return null;
-		}
-
-		/// <summary>
-		/// Examine a type and get a property with a particular name.
-		/// In the case of overloads, the first one found is returned.
-		/// </summary>
-		/// <param name="type">The type to examine</param>
-		/// <param name="bindingFlags">BindingFlags to use</param>
-		/// <returns>A PropertyInfo or null</returns>
-		public static PropertyInfo GetNamedProperty( Type type, string name, BindingFlags bindingFlags )
-		{
-			return type.GetProperty( name, bindingFlags );
-		}
-
-		/// <summary>
-		/// Get the value of a named property on an object using binding flags of Public and Instance
-		/// </summary>
-		/// <param name="obj">The object for which the property value is needed</param>
-		/// <param name="name">The name of a non-indexed property of the object</param>
-		/// <returns></returns>
-		public static object GetPropertyValue( object obj, string name )
-		{
-			return GetPropertyValue( obj, name, BindingFlags.Public | BindingFlags.Instance );
-		}
-
-		/// <summary>
-		/// Get the value of a named property on an object
-		/// </summary>
-		/// <param name="obj">The object for which the property value is needed</param>
-		/// <param name="name">The name of a non-indexed property of the object</param>
-		/// <param name="bindingFlags">BindingFlags for use in determining which properties are needed</param>param>
-		/// <returns></returns>
-		public static object GetPropertyValue( object obj, string name, BindingFlags bindingFlags )
-		{
-			PropertyInfo property = GetNamedProperty( obj.GetType(), name, bindingFlags );
-			if ( property != null )
-				return property.GetValue( obj, null );
-			return null;
-		}
-
-		/// <summary>
-		/// Set the value of a named property on an object
-		/// </summary>
-		/// <param name="obj">The object for which the property value is to be set</param>
-		/// <param name="name">The name of a non-indexed property of the object</param>
-		/// <param name="val">The value to which the property is to be set</param>
-		/// <param name="bindingFlags">BindingFlags for use in determining which properties are needed</param>param>
-		public static void SetPropertyValue( object obj, string name, object val, BindingFlags bindingFlags )
-		{
-			PropertyInfo property = GetNamedProperty( obj.GetType(), name, bindingFlags );
-			if ( property != null )
-				property.SetValue( obj, val, null );
-		}
-
-		#endregion
-
-		#region Invoke Methods
-
-		/// <summary>
-		/// Invoke the default constructor on a type
-		/// </summary>
-		/// <param name="type">The type to be constructed</param>
-		/// <returns>An instance of the type</returns>
-		public static object Construct( Type type )
-		{
-			ConstructorInfo ctor = GetConstructor( type );
-			if ( ctor == null )
-				throw new InvalidTestFixtureException(type.FullName + " does not have a valid constructor");
-			
-			return ctor.Invoke( Type.EmptyTypes );
-		}
-
-		/// <summary>
-		/// Invoke a parameterless method returning void on an object.
-		/// </summary>
-		/// <param name="method">A MethodInfo for the method to be invoked</param>
-		/// <param name="fixture">The object on which to invoke the method</param>
-		public static void InvokeMethod( MethodInfo method, object fixture ) 
-		{
-			InvokeMethod( method, fixture, null );
-		}
-
-		/// <summary>
-		/// Invoke a method returning void, converting any TargetInvocationException
-		/// to an NUnitException
-		/// </summary>
-		/// <param name="method">A MethodInfo for the method to be invoked</param>
-		/// <param name="fixture">The object on which to invoke the method</param>
-		public static void InvokeMethod( MethodInfo method, object fixture, params object[] args )
-		{
-			if(method != null)
-			{
-				try
-				{
-					method.Invoke( fixture, args );
-				}
-				catch(TargetInvocationException e)
-				{
-					Exception inner = e.InnerException;
-					throw new NUnitException("Rethrown",inner);
-				}
-			}
-		}
-
-		#endregion
-
-		#region Private Constructor for static-only class
-
-		private Reflect() { }
-
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+using System.Collections;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Helper methods for inspecting a type by reflection. 
+	/// 
+	/// Many of these methods take a MemberInfo as an argument to avoid
+	/// duplication, even though certain attributes can only appear on
+	/// specific types of members, like MethodInfo or Type.
+	/// 
+	/// In the case where a type is being examined for the presence of
+	/// an attribute, interface or named member, the Reflect methods
+	/// operate with the full name of the member being sought. This
+	/// removes the necessity of the caller having a reference to the
+	/// assembly that defines the item being sought and allows the
+	/// NUnit core to inspect assemblies that reference an older
+	/// version of the NUnit framework.
+	/// </summary>
+	public class Reflect
+	{
+		#region Attributes 
+
+		/// <summary>
+		/// Check presence of attribute of a given type on a member.
+		/// </summary>
+		/// <param name="member">The member to examine</param>
+		/// <param name="attrName">The FullName of the attribute type to look for</param>
+		/// <param name="inherit">True to include inherited attributes</param>
+		/// <returns>True if the attribute is present</returns>
+		public static bool HasAttribute( MemberInfo member, string attrName, bool inherit )
+		{
+			object[] attributes = member.GetCustomAttributes( inherit );
+			foreach( Attribute attribute in attributes )
+				if ( IsInstanceOfType( attrName, attribute ) )
+					return true;
+			return false;
+		}
+
+        /// <summary>
+        /// Get attribute of a given type on a member. If multiple attributes
+        /// of a type are present, the first one found is returned.
+        /// </summary>
+        /// <param name="member">The member to examine</param>
+        /// <param name="attrName">The FullName of the attribute type to look for</param>
+        /// <param name="inherit">True to include inherited attributes</param>
+        /// <returns>The attribute or null</returns>
+        public static System.Attribute GetAttribute(MemberInfo member, string attrName, bool inherit)
+        {
+            object[] attributes = member.GetCustomAttributes(inherit);
+            foreach (Attribute attribute in attributes)
+                if ( IsInstanceOfType( attrName, attribute ) )
+                    return attribute;
+            return null;
+        }
+
+        /// <summary>
+        /// Get attribute of a given type on an assembly. If multiple attributes
+        /// of a type are present, the first one found is returned.
+        /// </summary>
+        /// <param name="assembly">The assembly to examine</param>
+        /// <param name="attrName">The FullName of the attribute type to look for</param>
+        /// <param name="inherit">True to include inherited attributes</param>
+        /// <returns>The attribute or null</returns>
+        public static System.Attribute GetAttribute(Assembly assembly, string attrName, bool inherit)
+        {
+            object[] attributes = assembly.GetCustomAttributes(inherit);
+            foreach (Attribute attribute in attributes)
+                if ( IsInstanceOfType(attrName, attribute) )
+                    return attribute;
+            return null;
+        }
+
+        /// <summary>
+		/// Get all attributes of a given type on a member.
+		/// </summary>
+		/// <param name="member">The member to examine</param>
+		/// <param name="attrName">The FullName of the attribute type to look for</param>
+		/// <param name="inherit">True to include inherited attributes</param>
+		/// <returns>The attribute or null</returns>
+		public static System.Attribute[] GetAttributes( MemberInfo member, string attrName, bool inherit )
+		{
+			object[] attributes = member.GetCustomAttributes( inherit );
+			ArrayList result = new ArrayList();
+			foreach( Attribute attribute in attributes )
+				if ( IsInstanceOfType( attrName, attribute ) )
+					result.Add( attribute );
+			return (System.Attribute[])result.ToArray( typeof( System.Attribute ) );
+		}
+
+        /// <summary>
+        /// Get all attributes on a member.
+        /// </summary>
+        /// <param name="member">The member to examine</param>
+        /// <param name="inherit">True to include inherited attributes</param>
+        /// <returns>The attribute or null</returns>
+        public static System.Attribute[] GetAttributes(MemberInfo member, bool inherit)
+        {
+            object[] attributes = member.GetCustomAttributes(inherit);
+            System.Attribute[] result = new System.Attribute[attributes.Length];
+            int n = 0;
+            foreach (Attribute attribute in attributes)
+                result[n++] = attribute;
+            return result;
+        }
+
+        /// <summary>
+        /// Get all attributes on an assembly.
+        /// </summary>
+        /// <param name="assembly">The assembly to examine</param>
+        /// <param name="inherit">True to include inherited attributes</param>
+        /// <returns>The attributes or null</returns>
+        public static System.Attribute[] GetAttributes(Assembly assembly, bool inherit)
+        {
+            object[] attributes = assembly.GetCustomAttributes(inherit);
+            System.Attribute[] result = new System.Attribute[attributes.Length];
+            int n = 0;
+            foreach (Attribute attribute in attributes)
+                result[n++] = attribute;
+            return result;
+        }
+
+        #endregion
+
+		#region Interfaces
+
+		/// <summary>
+		/// Check to see if a type implements a named interface.
+		/// </summary>
+		/// <param name="fixtureType">The type to examine</param>
+		/// <param name="interfaceName">The FullName of the interface to check for</param>
+		/// <returns>True if the interface is implemented by the type</returns>
+		public static bool HasInterface( Type fixtureType, string interfaceName )
+		{
+			foreach( Type type in fixtureType.GetInterfaces() )
+				if ( type.FullName == interfaceName )
+						return true;
+			return false;
+		}
+
+		#endregion
+
+		#region Inheritance
+		//SHMARYA: [ 10/12/2005 ]
+		/// <summary>
+		/// Checks to see if a type inherits from a named type. 
+		/// </summary>
+		/// <param name="type">The type to examine</param>
+		/// <param name="parentType">The FullName of the inherited type to look for</param>
+		/// <returns>True if the type inherits from the named type.</returns>
+		public static bool InheritsFrom( Type type, string typeName )
+		{
+			for( Type current = type; current != typeof( object ); current = current.BaseType )
+				if( current.FullName == typeName )
+					return true;
+
+			return false;
+		}
+
+		public static bool InheritsFrom( object obj, string typeName )
+		{
+			return InheritsFrom( obj.GetType(), typeName );
+		}
+
+		public static bool IsInstanceOfType( string typeName, Attribute attr )
+		{
+			Type type = attr.GetType();
+			return type.FullName == typeName || InheritsFrom( type, typeName );
+		}
+		#endregion
+
+		#region Get Methods of a type
+
+		/// <summary>
+		/// Find the default constructor on a type
+		/// </summary>
+		/// <param name="fixtureType"></param>
+		/// <returns></returns>
+		public static ConstructorInfo GetConstructor( Type fixtureType )
+		{
+			return fixtureType.GetConstructor( Type.EmptyTypes );
+		}
+
+		/// <summary>
+		/// Find the default constructor on a type
+		/// </summary>
+		/// <param name="fixtureType"></param>
+		/// <returns></returns>
+		public static ConstructorInfo GetConstructor( Type fixtureType, Type[] types )
+		{
+			return fixtureType.GetConstructor( types );
+		}
+
+		/// <summary>
+		/// Examine a fixture type and return a method having a particular attribute.
+		/// In the case of multiple methods, the first one found is returned.
+		/// </summary>
+		/// <param name="fixtureType">The type to examine</param>
+		/// <param name="attributeName">The FullName of the attribute to look for</param>
+		/// <param name="bindingFlags">BindingFlags to use in looking for method</param>
+		/// <returns>A MethodInfo or null</returns>
+		public static MethodInfo GetMethodWithAttribute( Type fixtureType, string attributeName, BindingFlags bindingFlags, bool inherit )
+		{
+			foreach(MethodInfo method in fixtureType.GetMethods( bindingFlags ) )
+			{
+				if( HasAttribute( method, attributeName, inherit ) ) 
+					return method;
+			}
+
+			return null;
+		}
+
+		/// <summary>
+		/// Examine a fixture type and return a count of the methods having a 
+		/// particular attribute.
+		/// </summary>
+		/// <param name="fixtureType">The type to examine</param>
+		/// <param name="attributeName">The FullName of the attribute to look for</param>
+		/// <param name="bindingFlags">BindingFlags to use in looking for method</param>
+		/// <returns>The number of such methods found</returns>
+		public static int CountMethodsWithAttribute( Type fixtureType, string attributeName, BindingFlags bindingFlags, bool inherit )
+		{
+			int count = 0;
+
+			foreach(MethodInfo method in fixtureType.GetMethods( bindingFlags ) )
+			{
+				if( HasAttribute( method, attributeName, inherit ) ) 
+					count++;
+			}
+
+			return count;
+		}
+
+        /// <summary>
+        /// Examine a fixture type and get a method with a particular name.
+        /// In the case of overloads, the first one found is returned.
+        /// </summary>
+        /// <param name="fixtureType">The type to examine</param>
+        /// <param name="methodName">The name of the method</param>
+        /// <param name="bindingFlags">BindingFlags to use in the search</param>
+        /// <returns>A MethodInfo or null</returns>
+        public static MethodInfo GetNamedMethod(Type fixtureType, string methodName, BindingFlags bindingFlags)
+        {
+            foreach (MethodInfo method in fixtureType.GetMethods(bindingFlags))
+            {
+                if (method.Name == methodName)
+                    return method;
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// Examine a fixture type and get a method with a particular name and list
+        /// of arguments. In the case of overloads, the first one found is returned.
+        /// </summary>
+        /// <param name="fixtureType">The type to examine</param>
+        /// <param name="methodName">The name of the method</param>
+        /// <param name="argTypes">The full names of the argument types to search for</param>
+        /// <param name="bindingFlags">BindingFlags to use in the search</param>
+        /// <returns>A MethodInfo or null</returns>
+        public static MethodInfo GetNamedMethod(Type fixtureType, string methodName, 
+            string[] argTypes, BindingFlags bindingFlags)
+        {
+            foreach (MethodInfo method in fixtureType.GetMethods(bindingFlags))
+            {
+                if (method.Name == methodName)
+                {
+                    ParameterInfo[] parameters = method.GetParameters();
+                    if (parameters.Length == argTypes.Length)
+                    {
+                        bool match = true;
+                        for (int i = 0; i < argTypes.Length; i++)
+                            if (parameters[i].ParameterType.FullName != argTypes[i])
+                            {
+                                match = false;
+                                break;
+                            }
+
+                        if (match)
+                            return method;
+                    }
+                }
+            }
+
+            return null;
+        }
+
+        #endregion
+
+		#region Get Properties of a type
+
+		/// <summary>
+		/// Examine a type and return a property having a particular attribute.
+		/// In the case of multiple methods, the first one found is returned.
+		/// </summary>
+		/// <param name="fixtureType">The type to examine</param>
+		/// <param name="attributeName">The FullName of the attribute to look for</param>
+		/// <param name="bindingFlags">Binding flags to use in searching</param>
+		/// <returns>A PropertyInfo or null</returns>
+		public static PropertyInfo GetPropertyWithAttribute( Type fixtureType, string attributeName, BindingFlags bindingFlags )
+		{
+			foreach(PropertyInfo property in fixtureType.GetProperties( bindingFlags ) )
+			{
+				if( HasAttribute( property, attributeName, true ) ) 
+					return property;
+			}
+
+			return null;
+		}
+
+		/// <summary>
+		/// Examine a type and get a property with a particular name.
+		/// In the case of overloads, the first one found is returned.
+		/// </summary>
+		/// <param name="type">The type to examine</param>
+		/// <param name="bindingFlags">BindingFlags to use</param>
+		/// <returns>A PropertyInfo or null</returns>
+		public static PropertyInfo GetNamedProperty( Type type, string name, BindingFlags bindingFlags )
+		{
+			return type.GetProperty( name, bindingFlags );
+		}
+
+		/// <summary>
+		/// Get the value of a named property on an object using binding flags of Public and Instance
+		/// </summary>
+		/// <param name="obj">The object for which the property value is needed</param>
+		/// <param name="name">The name of a non-indexed property of the object</param>
+		/// <returns></returns>
+		public static object GetPropertyValue( object obj, string name )
+		{
+			return GetPropertyValue( obj, name, BindingFlags.Public | BindingFlags.Instance );
+		}
+
+		/// <summary>
+		/// Get the value of a named property on an object
+		/// </summary>
+		/// <param name="obj">The object for which the property value is needed</param>
+		/// <param name="name">The name of a non-indexed property of the object</param>
+		/// <param name="bindingFlags">BindingFlags for use in determining which properties are needed</param>param>
+		/// <returns></returns>
+		public static object GetPropertyValue( object obj, string name, BindingFlags bindingFlags )
+		{
+			PropertyInfo property = GetNamedProperty( obj.GetType(), name, bindingFlags );
+			if ( property != null )
+				return property.GetValue( obj, null );
+			return null;
+		}
+
+		/// <summary>
+		/// Set the value of a named property on an object
+		/// </summary>
+		/// <param name="obj">The object for which the property value is to be set</param>
+		/// <param name="name">The name of a non-indexed property of the object</param>
+		/// <param name="val">The value to which the property is to be set</param>
+		/// <param name="bindingFlags">BindingFlags for use in determining which properties are needed</param>param>
+		public static void SetPropertyValue( object obj, string name, object val, BindingFlags bindingFlags )
+		{
+			PropertyInfo property = GetNamedProperty( obj.GetType(), name, bindingFlags );
+			if ( property != null )
+				property.SetValue( obj, val, null );
+		}
+
+		#endregion
+
+		#region Invoke Methods
+
+		/// <summary>
+		/// Invoke the default constructor on a type
+		/// </summary>
+		/// <param name="type">The type to be constructed</param>
+		/// <returns>An instance of the type</returns>
+		public static object Construct( Type type )
+		{
+			ConstructorInfo ctor = GetConstructor( type );
+			if ( ctor == null )
+				throw new InvalidTestFixtureException(type.FullName + " does not have a valid constructor");
+			
+			return ctor.Invoke( Type.EmptyTypes );
+		}
+
+		/// <summary>
+		/// Invoke a parameterless method returning void on an object.
+		/// </summary>
+		/// <param name="method">A MethodInfo for the method to be invoked</param>
+		/// <param name="fixture">The object on which to invoke the method</param>
+		public static void InvokeMethod( MethodInfo method, object fixture ) 
+		{
+			InvokeMethod( method, fixture, null );
+		}
+
+		/// <summary>
+		/// Invoke a method returning void, converting any TargetInvocationException
+		/// to an NUnitException
+		/// </summary>
+		/// <param name="method">A MethodInfo for the method to be invoked</param>
+		/// <param name="fixture">The object on which to invoke the method</param>
+		public static void InvokeMethod( MethodInfo method, object fixture, params object[] args )
+		{
+			if(method != null)
+			{
+				try
+				{
+					method.Invoke( fixture, args );
+				}
+				catch(TargetInvocationException e)
+				{
+					Exception inner = e.InnerException;
+					throw new NUnitException("Rethrown",inner);
+				}
+			}
+		}
+
+		#endregion
+
+		#region Private Constructor for static-only class
+
+		private Reflect() { }
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/RemoteTestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/RemoteTestRunner.cs
@@ -1,97 +1,97 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System.Collections;
-	using System;
-
-	/// <summary>
-	/// RemoteTestRunner is tailored for use as the initial runner to
-	/// receive control in a remote domain. It provides isolation for the return
-	/// value by using a ThreadedTestRunner and for the events through use of
-	/// an EventPump.
-	/// </summary>
-	public class RemoteTestRunner : ProxyTestRunner
-	{
-		#region Constructors
-		public RemoteTestRunner() : this( 0 ) { }
-
-		public RemoteTestRunner( int runnerID ) : base( runnerID ) { }
-		#endregion
-
-		#region Method Overrides
-		public override bool Load(TestPackage package)
-		{
-			NTrace.Info( "Loading test package " + package.Name );
-
-			// Initialize ExtensionHost if not already done
-			if ( !CoreExtensions.Host.Initialized )
-				CoreExtensions.Host.InitializeService();
-
-			// Delayed creation of downstream runner allows us to
-			// use a different runner type based on the package
-			bool useThreadedRunner = package.GetSetting( "UseThreadedRunner", true );
-			
-			TestRunner runner = new SimpleTestRunner( this.runnerID );
-			if ( useThreadedRunner )
-				runner = new ThreadedTestRunner( runner );
-
-			this.TestRunner = runner;
-
-			return base.Load (package);
-		}
-
-		public override TestResult Run( EventListener listener )
-		{
-			return Run( listener, TestFilter.Empty );
-		}
-
-		public override TestResult Run( EventListener listener, ITestFilter filter )
-		{
-			NTrace.Debug( "Running test synchronously" );
-			QueuingEventListener queue = new QueuingEventListener();
-
-			StartTextCapture( queue );
-
-			using( EventPump pump = new EventPump( listener, queue.Events, true ) )
-			{
-				pump.Start();
-				return base.Run( queue, filter );
-			}
-		}
-
-		public override void BeginRun( EventListener listener )
-		{
-			BeginRun( listener, TestFilter.Empty );
-		}
-
-		public override void BeginRun( EventListener listener, ITestFilter filter )
-		{
-			NTrace.Debug( "Running test asynchronously" );
-			QueuingEventListener queue = new QueuingEventListener();
-
-			StartTextCapture( queue );
-
-			EventPump pump = new EventPump( listener, queue.Events, true);
-			pump.Start(); // Will run till RunFinished is received
-			// TODO: Make sure the thread is cleaned up if we abort the run
-		
-			base.BeginRun( queue, filter );
-		}
-
-		private void StartTextCapture( EventListener queue )
-		{
-			TestContext.Out = new EventListenerTextWriter( queue, TestOutputType.Out );
-			TestContext.Error = new EventListenerTextWriter( queue, TestOutputType.Error );
-			TestContext.TraceWriter = new EventListenerTextWriter( queue, TestOutputType.Trace );
-			TestContext.Tracing = true;
-			TestContext.LogWriter = new EventListenerTextWriter( queue, TestOutputType.Log );
-			TestContext.Logging = true;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System.Collections;
+	using System;
+
+	/// <summary>
+	/// RemoteTestRunner is tailored for use as the initial runner to
+	/// receive control in a remote domain. It provides isolation for the return
+	/// value by using a ThreadedTestRunner and for the events through use of
+	/// an EventPump.
+	/// </summary>
+	public class RemoteTestRunner : ProxyTestRunner
+	{
+		#region Constructors
+		public RemoteTestRunner() : this( 0 ) { }
+
+		public RemoteTestRunner( int runnerID ) : base( runnerID ) { }
+		#endregion
+
+		#region Method Overrides
+		public override bool Load(TestPackage package)
+		{
+			NTrace.Info( "Loading test package " + package.Name );
+
+			// Initialize ExtensionHost if not already done
+			if ( !CoreExtensions.Host.Initialized )
+				CoreExtensions.Host.InitializeService();
+
+			// Delayed creation of downstream runner allows us to
+			// use a different runner type based on the package
+			bool useThreadedRunner = package.GetSetting( "UseThreadedRunner", true );
+			
+			TestRunner runner = new SimpleTestRunner( this.runnerID );
+			if ( useThreadedRunner )
+				runner = new ThreadedTestRunner( runner );
+
+			this.TestRunner = runner;
+
+			return base.Load (package);
+		}
+
+		public override TestResult Run( EventListener listener )
+		{
+			return Run( listener, TestFilter.Empty );
+		}
+
+		public override TestResult Run( EventListener listener, ITestFilter filter )
+		{
+			NTrace.Debug( "Running test synchronously" );
+			QueuingEventListener queue = new QueuingEventListener();
+
+			StartTextCapture( queue );
+
+			using( EventPump pump = new EventPump( listener, queue.Events, true ) )
+			{
+				pump.Start();
+				return base.Run( queue, filter );
+			}
+		}
+
+		public override void BeginRun( EventListener listener )
+		{
+			BeginRun( listener, TestFilter.Empty );
+		}
+
+		public override void BeginRun( EventListener listener, ITestFilter filter )
+		{
+			NTrace.Debug( "Running test asynchronously" );
+			QueuingEventListener queue = new QueuingEventListener();
+
+			StartTextCapture( queue );
+
+			EventPump pump = new EventPump( listener, queue.Events, true);
+			pump.Start(); // Will run till RunFinished is received
+			// TODO: Make sure the thread is cleaned up if we abort the run
+		
+			base.BeginRun( queue, filter );
+		}
+
+		private void StartTextCapture( EventListener queue )
+		{
+			TestContext.Out = new EventListenerTextWriter( queue, TestOutputType.Out );
+			TestContext.Error = new EventListenerTextWriter( queue, TestOutputType.Error );
+			TestContext.TraceWriter = new EventListenerTextWriter( queue, TestOutputType.Trace );
+			TestContext.Tracing = true;
+			TestContext.LogWriter = new EventListenerTextWriter( queue, TestOutputType.Log );
+			TestContext.Logging = true;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/SetUpFixture.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/SetUpFixture.cs
@@ -1,44 +1,44 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// SetUpFixture extends TestSuite and supports
-	/// Setup and TearDown methods.
-	/// </summary>
-	public class SetUpFixture : TestSuite
-	{
-		#region Constructor
-		public SetUpFixture( Type type ) : base( type )
-		{
-            this.TestName.Name = type.Namespace;
-            if (this.TestName.Name == null)
-                this.TestName.Name = "[default namespace]";
-            int index = TestName.Name.LastIndexOf('.');
-            if (index > 0)
-                this.TestName.Name = this.TestName.Name.Substring(index + 1);
-            
-			this.fixtureSetUp = NUnitFramework.GetSetUpMethod( type );
-			this.fixtureTearDown = NUnitFramework.GetTearDownMethod( type );
-		}
-		#endregion
-
-		#region TestSuite Overrides
-		public override TestResult Run(EventListener listener, ITestFilter filter)
-		{
-			using ( new DirectorySwapper( Path.GetDirectoryName( TestFixtureBuilder.GetAssemblyPath( FixtureType ) ) ) )
-			{
-				return base.Run(listener, filter);
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// SetUpFixture extends TestSuite and supports
+	/// Setup and TearDown methods.
+	/// </summary>
+	public class SetUpFixture : TestSuite
+	{
+		#region Constructor
+		public SetUpFixture( Type type ) : base( type )
+		{
+            this.TestName.Name = type.Namespace;
+            if (this.TestName.Name == null)
+                this.TestName.Name = "[default namespace]";
+            int index = TestName.Name.LastIndexOf('.');
+            if (index > 0)
+                this.TestName.Name = this.TestName.Name.Substring(index + 1);
+            
+			this.fixtureSetUp = NUnitFramework.GetSetUpMethod( type );
+			this.fixtureTearDown = NUnitFramework.GetTearDownMethod( type );
+		}
+		#endregion
+
+		#region TestSuite Overrides
+		public override TestResult Run(EventListener listener, ITestFilter filter)
+		{
+			using ( new DirectorySwapper( Path.GetDirectoryName( TestFixtureBuilder.GetAssemblyPath( FixtureType ) ) ) )
+			{
+				return base.Run(listener, filter);
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/SimpleTestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/SimpleTestRunner.cs
@@ -1,218 +1,218 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.IO;
-using System.Threading;
-using System.Collections;
-using System.Collections.Specialized;
-using NUnit.Core.Filters;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// SimpleTestRunner is the simplest direct-running TestRunner. It
-	/// passes the event listener interface that is provided on to the tests
-	/// to use directly and does nothing to redirect text output. Both
-	/// Run and BeginRun are actually synchronous, although the client
-	/// can usually ignore this. BeginRun + EndRun operates as expected.
-	/// </summary>
-	public class SimpleTestRunner : MarshalByRefObject, TestRunner
-	{
-		#region Instance Variables
-
-		/// <summary>
-		/// Identifier for this runner. Must be unique among all
-		/// active runners in order to locate tests. Default
-		/// value of 0 is adequate in applications with a single
-		/// runner or a non-branching chain of runners.
-		/// </summary>
-		private int runnerID = 0;
-
-		/// <summary>
-		/// The loaded test suite
-		/// </summary>
-		private Test test;
-
-		/// <summary>
-		/// The builder we use to load tests, created for each load
-		/// </summary>
-		private TestSuiteBuilder builder;
-
-		/// <summary>
-		/// Results from the last test run
-		/// </summary>
-		private TestResult testResult;
-
-		/// <summary>
-		/// The thread on which Run was called. Set to the
-		/// current thread while a run is in process.
-		/// </summary>
-		private Thread runThread;
-
-		#endregion
-
-		#region Constructor
-		public SimpleTestRunner() : this( 0 ) { }
-
-		public SimpleTestRunner( int runnerID )
-		{
-			this.runnerID = runnerID;
-		}
-		#endregion
-
-		#region Properties
-		public virtual int ID
-		{
-			get { return runnerID; }
-		}
-
-		public IList AssemblyInfo
-		{
-			get { return builder.AssemblyInfo; }
-		}
-		
-		public ITest Test
-		{
-			get { return test == null ? null : new TestNode( test ); }
-		}
-
-		/// <summary>
-		/// Results from the last test run
-		/// </summary>
-		public TestResult TestResult
-		{
-			get { return testResult; }
-		}
-
-		public virtual bool Running
-		{
-			get { return runThread != null && runThread.IsAlive; }
-		}
-		#endregion
-
-		#region Methods for Loading Tests
-		/// <summary>
-		/// Load a TestPackage
-		/// </summary>
-		/// <param name="package">The package to be loaded</param>
-		/// <returns>True on success, false on failure</returns>
-		public bool Load( TestPackage package )
-		{
-			this.builder = new TestSuiteBuilder();
-
-			this.test = builder.Build( package );
-			if ( test == null ) return false;
-
-			test.SetRunnerID( this.runnerID, true );
-			return true;
-		}
-
-		/// <summary>
-		/// Unload all tests previously loaded
-		/// </summary>
-		public void Unload()
-		{
-			this.test = null; // All for now
-		}
-		#endregion
-
-		#region CountTestCases
-		public int CountTestCases( ITestFilter filter )
-		{
-			return test.CountTestCases( filter );
-		}
-		#endregion
-
-		#region Methods for Running Tests
-		public virtual TestResult Run( EventListener listener )
-		{
-			return Run( listener, TestFilter.Empty );
-		}
-
-		public virtual TestResult Run( EventListener listener, ITestFilter filter )
-		{
-			try
-			{
-				// Take note of the fact that we are running
-				this.runThread = Thread.CurrentThread;
-
-				listener.RunStarted( this.Test.TestName.FullName, test.CountTestCases( filter ) );
-				
-				testResult = test.Run( listener, filter );
-
-				// Signal that we are done
-				listener.RunFinished( testResult );
-
-				// Return result array
-				return testResult;
-			}
-			catch( Exception exception )
-			{
-				// Signal that we finished with an exception
-				listener.RunFinished( exception );
-				// Rethrow - should we do this?
-				throw;
-			}
-			finally
-			{
-				runThread = null;
-			}
-		}
-
-		public void BeginRun( EventListener listener )
-		{
-			testResult = this.Run( listener );
-		}
-
-		public void BeginRun( EventListener listener, ITestFilter filter )
-		{
-			testResult = this.Run( listener, filter );
-		}
-
-		public virtual TestResult EndRun()
-		{
-			return TestResult;
-		}
-
-		/// <summary>
-		/// Wait is a NOP for SimpleTestRunner
-		/// </summary>
-		public virtual void Wait()
-		{
-		}
-
-		public virtual void CancelRun()
-		{
-			if (this.runThread != null)
-			{
-				// Cancel Synchronous run only if on another thread
-				if ( runThread == Thread.CurrentThread )
-					throw new InvalidOperationException( "May not CancelRun on same thread that is running the test" );
-
-				// Make a copy of runThread, which will be set to 
-				// null when the thread terminates.
-				Thread cancelThread = this.runThread;
-
-				// Tell the thread to abort
-				this.runThread.Abort();
-				
-				// Wake up the thread if necessary
-				// Figure out if we need to do an interupt
-				if ( (cancelThread.ThreadState & ThreadState.WaitSleepJoin ) != 0 )
-					cancelThread.Interrupt();
-			}
-		}
-		#endregion
-
-        #region InitializeLifetimeService Override
-        public override object InitializeLifetimeService()
-        {
-            return null;
-        }
-	#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.IO;
+using System.Threading;
+using System.Collections;
+using System.Collections.Specialized;
+using NUnit.Core.Filters;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// SimpleTestRunner is the simplest direct-running TestRunner. It
+	/// passes the event listener interface that is provided on to the tests
+	/// to use directly and does nothing to redirect text output. Both
+	/// Run and BeginRun are actually synchronous, although the client
+	/// can usually ignore this. BeginRun + EndRun operates as expected.
+	/// </summary>
+	public class SimpleTestRunner : MarshalByRefObject, TestRunner
+	{
+		#region Instance Variables
+
+		/// <summary>
+		/// Identifier for this runner. Must be unique among all
+		/// active runners in order to locate tests. Default
+		/// value of 0 is adequate in applications with a single
+		/// runner or a non-branching chain of runners.
+		/// </summary>
+		private int runnerID = 0;
+
+		/// <summary>
+		/// The loaded test suite
+		/// </summary>
+		private Test test;
+
+		/// <summary>
+		/// The builder we use to load tests, created for each load
+		/// </summary>
+		private TestSuiteBuilder builder;
+
+		/// <summary>
+		/// Results from the last test run
+		/// </summary>
+		private TestResult testResult;
+
+		/// <summary>
+		/// The thread on which Run was called. Set to the
+		/// current thread while a run is in process.
+		/// </summary>
+		private Thread runThread;
+
+		#endregion
+
+		#region Constructor
+		public SimpleTestRunner() : this( 0 ) { }
+
+		public SimpleTestRunner( int runnerID )
+		{
+			this.runnerID = runnerID;
+		}
+		#endregion
+
+		#region Properties
+		public virtual int ID
+		{
+			get { return runnerID; }
+		}
+
+		public IList AssemblyInfo
+		{
+			get { return builder.AssemblyInfo; }
+		}
+		
+		public ITest Test
+		{
+			get { return test == null ? null : new TestNode( test ); }
+		}
+
+		/// <summary>
+		/// Results from the last test run
+		/// </summary>
+		public TestResult TestResult
+		{
+			get { return testResult; }
+		}
+
+		public virtual bool Running
+		{
+			get { return runThread != null && runThread.IsAlive; }
+		}
+		#endregion
+
+		#region Methods for Loading Tests
+		/// <summary>
+		/// Load a TestPackage
+		/// </summary>
+		/// <param name="package">The package to be loaded</param>
+		/// <returns>True on success, false on failure</returns>
+		public bool Load( TestPackage package )
+		{
+			this.builder = new TestSuiteBuilder();
+
+			this.test = builder.Build( package );
+			if ( test == null ) return false;
+
+			test.SetRunnerID( this.runnerID, true );
+			return true;
+		}
+
+		/// <summary>
+		/// Unload all tests previously loaded
+		/// </summary>
+		public void Unload()
+		{
+			this.test = null; // All for now
+		}
+		#endregion
+
+		#region CountTestCases
+		public int CountTestCases( ITestFilter filter )
+		{
+			return test.CountTestCases( filter );
+		}
+		#endregion
+
+		#region Methods for Running Tests
+		public virtual TestResult Run( EventListener listener )
+		{
+			return Run( listener, TestFilter.Empty );
+		}
+
+		public virtual TestResult Run( EventListener listener, ITestFilter filter )
+		{
+			try
+			{
+				// Take note of the fact that we are running
+				this.runThread = Thread.CurrentThread;
+
+				listener.RunStarted( this.Test.TestName.FullName, test.CountTestCases( filter ) );
+				
+				testResult = test.Run( listener, filter );
+
+				// Signal that we are done
+				listener.RunFinished( testResult );
+
+				// Return result array
+				return testResult;
+			}
+			catch( Exception exception )
+			{
+				// Signal that we finished with an exception
+				listener.RunFinished( exception );
+				// Rethrow - should we do this?
+				throw;
+			}
+			finally
+			{
+				runThread = null;
+			}
+		}
+
+		public void BeginRun( EventListener listener )
+		{
+			testResult = this.Run( listener );
+		}
+
+		public void BeginRun( EventListener listener, ITestFilter filter )
+		{
+			testResult = this.Run( listener, filter );
+		}
+
+		public virtual TestResult EndRun()
+		{
+			return TestResult;
+		}
+
+		/// <summary>
+		/// Wait is a NOP for SimpleTestRunner
+		/// </summary>
+		public virtual void Wait()
+		{
+		}
+
+		public virtual void CancelRun()
+		{
+			if (this.runThread != null)
+			{
+				// Cancel Synchronous run only if on another thread
+				if ( runThread == Thread.CurrentThread )
+					throw new InvalidOperationException( "May not CancelRun on same thread that is running the test" );
+
+				// Make a copy of runThread, which will be set to 
+				// null when the thread terminates.
+				Thread cancelThread = this.runThread;
+
+				// Tell the thread to abort
+				this.runThread.Abort();
+				
+				// Wake up the thread if necessary
+				// Figure out if we need to do an interupt
+				if ( (cancelThread.ThreadState & ThreadState.WaitSleepJoin ) != 0 )
+					cancelThread.Interrupt();
+			}
+		}
+		#endregion
+
+        #region InitializeLifetimeService Override
+        public override object InitializeLifetimeService()
+        {
+            return null;
+        }
+	#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/StringTextWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/StringTextWriter.cs
@@ -1,128 +1,128 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.IO;
-using System.Text;
-
-namespace NUnit.Core
-{
-	// TODO: This class is not currently being used. Review to
-	// see if we will use it again, otherwise drop it.
-	#region StringTextWriter
-
-	/// <summary>
-	/// Use this wrapper to ensure that only strings get passed accross the AppDomain
-	/// boundary.  Otherwise tests will break when non-remotable objects are passed to
-	/// Console.Write/WriteLine.
-	/// </summary>
-	public class StringTextWriter : TextWriter
-	{
-		public StringTextWriter( TextWriter aTextWriter )
-		{
-			theTextWriter = aTextWriter;
-		}
-
-		protected TextWriter theTextWriter;
-
-		override public void Write(char aChar)
-		{
-			theTextWriter.Write(aChar);
-		}
-
-		override public void Write(string aString)
-		{
-			theTextWriter.Write(aString);
-		}
-
-		override public void WriteLine(string aString)
-		{
-			theTextWriter.WriteLine(aString);
-		}
-
-		override public System.Text.Encoding Encoding
-		{
-			get { return theTextWriter.Encoding; }
-		}
-
-		public override void Close()
-		{
-			this.Flush();
-			theTextWriter.Close ();
-		}
-
-		public override void Flush()
-		{
-			theTextWriter.Flush ();
-		}
-	}
-
-	#endregion
-
-	#region BufferedStringTextWriter
-
-	/// <summary>
-	/// This wrapper derives from StringTextWriter and adds buffering
-	/// to improve cross-domain performance. The buffer is flushed whenever
-	/// it reaches or exceeds a maximum size or when Flush is called.
-	/// </summary>
-	public class BufferedStringTextWriter : StringTextWriter
-	{
-		public BufferedStringTextWriter( TextWriter aTextWriter ) : base( aTextWriter ){ }
-	
-		private static readonly int MAX_BUFFER = 1000;
-		private StringBuilder sb = new StringBuilder( MAX_BUFFER );
-
-		override public void Write(char aChar)
-		{
-			lock( sb )
-			{
-				sb.Append( aChar );
-				this.CheckBuffer();
-			}
-		}
-
-		override public void Write(string aString)
-		{
-			lock( sb )
-			{
-				sb.Append( aString );
-				this.CheckBuffer();
-			}
-		}
-
-		override public void WriteLine(string aString)
-		{
-			lock( sb )
-			{
-				sb.Append( aString );
-				sb.Append( '\n' );
-				this.CheckBuffer();
-			}
-		}
-
-		override public void Flush()
-		{
-			if ( sb.Length > 0 )
-			{
-				lock( sb )
-				{
-					theTextWriter.Write( sb.ToString() );
-					sb.Length = 0;
-				}
-			}
-
-			theTextWriter.Flush();
-		}
-
-		private void CheckBuffer()
-		{
-			if ( sb.Length >= MAX_BUFFER )
-				this.Flush();
-		}
-	}
-
-	#endregion
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.IO;
+using System.Text;
+
+namespace NUnit.Core
+{
+	// TODO: This class is not currently being used. Review to
+	// see if we will use it again, otherwise drop it.
+	#region StringTextWriter
+
+	/// <summary>
+	/// Use this wrapper to ensure that only strings get passed accross the AppDomain
+	/// boundary.  Otherwise tests will break when non-remotable objects are passed to
+	/// Console.Write/WriteLine.
+	/// </summary>
+	public class StringTextWriter : TextWriter
+	{
+		public StringTextWriter( TextWriter aTextWriter )
+		{
+			theTextWriter = aTextWriter;
+		}
+
+		protected TextWriter theTextWriter;
+
+		override public void Write(char aChar)
+		{
+			theTextWriter.Write(aChar);
+		}
+
+		override public void Write(string aString)
+		{
+			theTextWriter.Write(aString);
+		}
+
+		override public void WriteLine(string aString)
+		{
+			theTextWriter.WriteLine(aString);
+		}
+
+		override public System.Text.Encoding Encoding
+		{
+			get { return theTextWriter.Encoding; }
+		}
+
+		public override void Close()
+		{
+			this.Flush();
+			theTextWriter.Close ();
+		}
+
+		public override void Flush()
+		{
+			theTextWriter.Flush ();
+		}
+	}
+
+	#endregion
+
+	#region BufferedStringTextWriter
+
+	/// <summary>
+	/// This wrapper derives from StringTextWriter and adds buffering
+	/// to improve cross-domain performance. The buffer is flushed whenever
+	/// it reaches or exceeds a maximum size or when Flush is called.
+	/// </summary>
+	public class BufferedStringTextWriter : StringTextWriter
+	{
+		public BufferedStringTextWriter( TextWriter aTextWriter ) : base( aTextWriter ){ }
+	
+		private static readonly int MAX_BUFFER = 1000;
+		private StringBuilder sb = new StringBuilder( MAX_BUFFER );
+
+		override public void Write(char aChar)
+		{
+			lock( sb )
+			{
+				sb.Append( aChar );
+				this.CheckBuffer();
+			}
+		}
+
+		override public void Write(string aString)
+		{
+			lock( sb )
+			{
+				sb.Append( aString );
+				this.CheckBuffer();
+			}
+		}
+
+		override public void WriteLine(string aString)
+		{
+			lock( sb )
+			{
+				sb.Append( aString );
+				sb.Append( '\n' );
+				this.CheckBuffer();
+			}
+		}
+
+		override public void Flush()
+		{
+			if ( sb.Length > 0 )
+			{
+				lock( sb )
+				{
+					theTextWriter.Write( sb.ToString() );
+					sb.Length = 0;
+				}
+			}
+
+			theTextWriter.Flush();
+		}
+
+		private void CheckBuffer()
+		{
+			if ( sb.Length >= MAX_BUFFER )
+				this.Flush();
+		}
+	}
+
+	#endregion
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/SuiteBuilderAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/SuiteBuilderAttribute.cs
@@ -1,18 +1,18 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// SuiteBuilderAttribute is used to mark custom suite builders.
-	/// The class so marked must implement the ISuiteBuilder interface.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
-	public sealed class SuiteBuilderAttribute : Attribute
-	{}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// SuiteBuilderAttribute is used to mark custom suite builders.
+	/// The class so marked must implement the ISuiteBuilder interface.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
+	public sealed class SuiteBuilderAttribute : Attribute
+	{}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestBuilderAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestBuilderAttribute.cs
@@ -1,26 +1,26 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core
-{
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
-	public class TestBuilderAttribute : Attribute
-	{
-		private Type builderType;
-
-		public TestBuilderAttribute(Type builderType)
-		{
-			this.builderType = builderType;
-		}
-
-		public Type BuilderType
-		{
-			get { return builderType; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core
+{
+	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
+	public class TestBuilderAttribute : Attribute
+	{
+		private Type builderType;
+
+		public TestBuilderAttribute(Type builderType)
+		{
+			this.builderType = builderType;
+		}
+
+		public Type BuilderType
+		{
+			get { return builderType; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestCase.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestCase.cs
@@ -1,107 +1,107 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Collections;
-	using System.Reflection;
-
-	/// <summary>
-	/// The abstract TestCase class represents a single test case.
-	/// In the present implementation, the only derived class is
-	/// TestMethod, but we allow for future test cases which are
-	/// implemented in other ways.
-	/// </summary>
-	public abstract class TestCase : Test
-	{
-		public TestCase( string path, string name ) : base( path, name ) { }
-
-		public TestCase( MethodInfo method ) : base ( method ) { }
-
-		public TestCase( TestName testName ) : base ( testName ) { }
-
-		public override int CountTestCases( ITestFilter filter ) 
-		{
-			if (filter.Pass(this))
-				return 1;
-
-			return 0;
-		}
-
-		protected virtual TestCaseResult MakeTestCaseResult()
-		{
-			return new TestCaseResult( new TestInfo(this) );
-		}
-
-		public override TestResult Run(EventListener listener, ITestFilter filter)
-		{
-			return Run( listener ); // Ignore filter for now
-		}
-
-		public override TestResult Run( EventListener listener )
-		{
-			using( new TestContext() )
-			{
-				TestCaseResult testResult = MakeTestCaseResult();
-
-				listener.TestStarted( this.TestName );
-
-				// The babysitter's enter/leave "listeners" specifically exist to track crashes,
-				// so unfortunately they can't work through the (asynchronous) listener interface.
-				bool willRun = this.RunState == RunState.Runnable || this.RunState == RunState.Explicit;
-				if (willRun)
-					BabysitterSupport.RecordEnterTest(this.TestName.FullName);
-
-				long startTime = DateTime.Now.Ticks;
-
-				switch (this.RunState)
-				{
-					case RunState.Runnable:
-					case RunState.Explicit:
-						Run(testResult);
-						break;
-					case RunState.Skipped:
-						testResult.Skip(IgnoreReason);
-						break;
-					default:
-					case RunState.NotRunnable:
-					case RunState.Ignored:
-						testResult.Ignore(IgnoreReason);
-						break;
-				}
-
-				long stopTime = DateTime.Now.Ticks;
-
-				if (willRun)
-					BabysitterSupport.RecordLeaveTest(this.TestName.FullName);
-
-				double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;
-				testResult.Time = time;
-
-				listener.TestFinished(testResult);
-				return testResult;
-			}
-		}
-
-		public override string TestType
-		{
-			get { return "Test Case"; }
-		}
-
-		public override bool IsSuite
-		{
-			get { return false; }
-		}
-
-		public override IList Tests
-		{
-			get { return null; }
-		}
-
-		public abstract void Run(TestCaseResult result);
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Collections;
+	using System.Reflection;
+
+	/// <summary>
+	/// The abstract TestCase class represents a single test case.
+	/// In the present implementation, the only derived class is
+	/// TestMethod, but we allow for future test cases which are
+	/// implemented in other ways.
+	/// </summary>
+	public abstract class TestCase : Test
+	{
+		public TestCase( string path, string name ) : base( path, name ) { }
+
+		public TestCase( MethodInfo method ) : base ( method ) { }
+
+		public TestCase( TestName testName ) : base ( testName ) { }
+
+		public override int CountTestCases( ITestFilter filter ) 
+		{
+			if (filter.Pass(this))
+				return 1;
+
+			return 0;
+		}
+
+		protected virtual TestCaseResult MakeTestCaseResult()
+		{
+			return new TestCaseResult( new TestInfo(this) );
+		}
+
+		public override TestResult Run(EventListener listener, ITestFilter filter)
+		{
+			return Run( listener ); // Ignore filter for now
+		}
+
+		public override TestResult Run( EventListener listener )
+		{
+			using( new TestContext() )
+			{
+				TestCaseResult testResult = MakeTestCaseResult();
+
+				listener.TestStarted( this.TestName );
+
+				// The babysitter's enter/leave "listeners" specifically exist to track crashes,
+				// so unfortunately they can't work through the (asynchronous) listener interface.
+				bool willRun = this.RunState == RunState.Runnable || this.RunState == RunState.Explicit;
+				if (willRun)
+					BabysitterSupport.RecordEnterTest(this.TestName.FullName);
+
+				long startTime = DateTime.Now.Ticks;
+
+				switch (this.RunState)
+				{
+					case RunState.Runnable:
+					case RunState.Explicit:
+						Run(testResult);
+						break;
+					case RunState.Skipped:
+						testResult.Skip(IgnoreReason);
+						break;
+					default:
+					case RunState.NotRunnable:
+					case RunState.Ignored:
+						testResult.Ignore(IgnoreReason);
+						break;
+				}
+
+				long stopTime = DateTime.Now.Ticks;
+
+				if (willRun)
+					BabysitterSupport.RecordLeaveTest(this.TestName.FullName);
+
+				double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;
+				testResult.Time = time;
+
+				listener.TestFinished(testResult);
+				return testResult;
+			}
+		}
+
+		public override string TestType
+		{
+			get { return "Test Case"; }
+		}
+
+		public override bool IsSuite
+		{
+			get { return false; }
+		}
+
+		public override IList Tests
+		{
+			get { return null; }
+		}
+
+		public abstract void Run(TestCaseResult result);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestCaseBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestCaseBuilder.cs
@@ -1,45 +1,45 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// This class collects static methods that build test cases.
-	public class TestCaseBuilder
-	{
-		/// <summary>
-		/// Makes a test case from a given method if any builders
-		/// know how to do it and returns null otherwise.
-		/// </summary>
-		/// <param name="method">MethodInfo for the particular method</param>
-		/// <returns>A test case or null</returns>
-//		public static Test BuildFrom( MethodInfo method )
-//		{
-//			Test test = CoreExtensions.Host.TestBuilders.BuildFrom( method );
-//
-//			if ( test != null )
-//				test = CoreExtensions.Host.TestDecorators.Decorate( test, method );
-//
-//			return test;
-//		}
-//
-//		public static Test Decorate( test, method )
-//		{
-//			if ( test != null )
-//				test = CoreExtensions.Host.TestDecorators.Decorate( test, method );
-//
-//			return test;
-//		}
-//
-		/// <summary>
-		/// Private constructor to prevent object creation
-		/// </summary>
-		private TestCaseBuilder() { }
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// This class collects static methods that build test cases.
+	public class TestCaseBuilder
+	{
+		/// <summary>
+		/// Makes a test case from a given method if any builders
+		/// know how to do it and returns null otherwise.
+		/// </summary>
+		/// <param name="method">MethodInfo for the particular method</param>
+		/// <returns>A test case or null</returns>
+//		public static Test BuildFrom( MethodInfo method )
+//		{
+//			Test test = CoreExtensions.Host.TestBuilders.BuildFrom( method );
+//
+//			if ( test != null )
+//				test = CoreExtensions.Host.TestDecorators.Decorate( test, method );
+//
+//			return test;
+//		}
+//
+//		public static Test Decorate( test, method )
+//		{
+//			if ( test != null )
+//				test = CoreExtensions.Host.TestDecorators.Decorate( test, method );
+//
+//			return test;
+//		}
+//
+		/// <summary>
+		/// Private constructor to prevent object creation
+		/// </summary>
+		private TestCaseBuilder() { }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestCaseBuilderAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestCaseBuilderAttribute.cs
@@ -1,18 +1,18 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestBuilderAttribute is used to mark custom test case builders.
-	/// The class so marked must implement the ITestCaseBuilder interface.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
-	public sealed class TestCaseBuilderAttribute : System.Attribute
-	{}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestBuilderAttribute is used to mark custom test case builders.
+	/// The class so marked must implement the ITestCaseBuilder interface.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
+	public sealed class TestCaseBuilderAttribute : System.Attribute
+	{}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestContext.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestContext.cs
@@ -1,362 +1,362 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections.Specialized;
-using System.Configuration;
-using System.IO;
-using System.Diagnostics;
-using System.Globalization;
-using System.Threading;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Helper class used to save and restore certain static or
-	/// singleton settings in the environment that affect tests 
-	/// or which might be changed by the user tests.
-	/// 
-	/// An internal class is used to hold settings and a stack
-	/// of these objects is pushed and popped as Save and Restore
-	/// are called.
-	/// 
-	/// Static methods for each setting forward to the internal 
-	/// object on the top of the stack.
-	/// 
-	/// When TestContext itself is instantiated, it is used to
-	/// save and restore settings for a block. It should be 
-	/// used with using() or Disposed in a finally block.
-	/// </summary>
-	public class TestContext : IDisposable
-	{
-		#region Instance Variables
-		/// <summary>
-		/// The current context, head of the list of saved contexts.
-		/// </summary>
-		private static ContextHolder current = new ContextHolder();
-		#endregion
-
-		#region Static Methods
-		public static bool Tracing
-		{
-			get { return current.Tracing; }
-			set { current.Tracing = value; }
-		}
-
-		public static bool Logging
-		{
-			get { return current.Logging; }
-			set { current.Logging = value; }
-		}
-
-		/// <summary>
-		/// Controls where Console.Out is directed
-		/// </summary>
-		public static TextWriter Out
-		{
-			get { return current.Out; }
-			set { current.Out = value; }
-		}
-		
-		/// <summary>
-		/// Controls where Console.Error is directed
-		/// </summary>
-		public static TextWriter Error
-		{
-			get { return current.Error; }
-			set { current.Error = value; }
-		}
-
-		/// <summary>
-		/// Controls where Trace output is directed
-		/// </summary>
-		public static TextWriter TraceWriter
-		{
-			get { return current.TraceWriter; }
-			set { current.TraceWriter = value; }
-		}
-
-		public static TextWriter LogWriter
-		{
-			get { return current.LogWriter; }
-			set { current.LogWriter = value; }
-		}
-
-		/// <summary>
-		/// The current directory setting
-		/// </summary>
-		public static string CurrentDirectory
-		{
-			get { return current.CurrentDirectory; }
-			set { current.CurrentDirectory = value; }
-		}
-
-		public static CultureInfo CurrentCulture
-		{
-			get { return current.CurrentCulture; }
-			set { current.CurrentCulture = value; }
-		}
-		
-		/// <summary>
-		/// Saves the old context and makes a fresh one 
-		/// current without changing any settings.
-		/// </summary>
-		public static void Save()
-		{
-			TestContext.current = new ContextHolder( current );
-		}
-
-		/// <summary>
-		/// Restores the last saved context and puts
-		/// any saved settings back into effect.
-		/// </summary>
-		public static void Restore()
-		{
-			current.ReverseChanges();
-			current = current.prior;
-		}
-		#endregion
-
-		#region Construct and Dispose
-		/// <summary>
-		/// The constructor saves the current context.
-		/// </summary>
-		public TestContext() 
-		{ 
-			TestContext.Save();
-		}
-
-		/// <summary>
-		/// Dispose restores the old context
-		/// </summary>
-		public void Dispose()
-		{
-			TestContext.Restore();
-		}
-		#endregion
-
-		#region ContextHolder internal class
-		private class ContextHolder
-		{
-			/// <summary>
-			/// Indicates whether trace is enabled
-			/// </summary>
-			private bool tracing;
-
-			/// <summary>
-			/// Indicates whether logging is enabled
-			/// </summary>
-			private bool logging;
-
-			/// <summary>
-			/// Destination for standard output
-			/// </summary>
-			private TextWriter outWriter;
-
-			/// <summary>
-			/// Destination for standard error
-			/// </summary>
-			private TextWriter errorWriter;
-
-			/// <summary>
-			/// Destination for Trace output
-			/// </summary>
-			private TextWriter traceWriter;
-
-			private Log4NetCapture logCapture;
-
-			/// <summary>
-			/// The current working directory
-			/// </summary>
-			private string currentDirectory;
-
-			/// <summary>
-			/// The current culture
-			/// </summary>
-			private CultureInfo currentCulture;
-
-			/// <summary>
-			/// Link to a prior saved context
-			/// </summary>
-			public ContextHolder prior;
-
-			public ContextHolder()
-			{
-				this.prior = null;
-				this.tracing = false;
-				this.logging = false;
-				this.outWriter = Console.Out;
-				this.errorWriter = Console.Error;
-				this.traceWriter = null;
-				this.logCapture = new Log4NetCapture();
-
-				this.currentDirectory = Environment.CurrentDirectory;
-				this.currentCulture = CultureInfo.CurrentCulture;
-			}
-
-			public ContextHolder( ContextHolder other )
-			{
-				this.prior = other;
-				this.tracing = other.tracing;
-				this.logging = other.logging;
-				this.outWriter = other.outWriter;
-				this.errorWriter = other.errorWriter;
-				this.traceWriter = other.traceWriter;
-				this.logCapture = other.logCapture;
-
-				this.currentDirectory = Environment.CurrentDirectory;
-				this.currentCulture = CultureInfo.CurrentCulture;
-			}
-
-			/// <summary>
-			/// Used to restore settings to their prior
-			/// values before reverting to a prior context.
-			/// </summary>
-			public void ReverseChanges()
-			{ 
-				if ( prior == null )
-					throw new InvalidOperationException( "TestContext: too many Restores" );
-
-				this.Tracing = prior.Tracing;
-				this.Out = prior.Out;
-				this.Error = prior.Error;
-				this.CurrentDirectory = prior.CurrentDirectory;
-				this.CurrentCulture = prior.CurrentCulture;
-			}
-
-			/// <summary>
-			/// Controls whether trace and debug output are written
-			/// to the standard output.
-			/// </summary>
-			public bool Tracing
-			{
-				get { return tracing; }
-				set 
-				{
-					if ( tracing != value )
-					{
-						if ( traceWriter != null && tracing )
-							StopTracing();
-
-						tracing = value; 
-
-						if ( traceWriter != null && tracing )
-							StartTracing();
-					}
-				}
-			}
-
-			/// <summary>
-			/// Controls whether log output is captured
-			/// </summary>
-			public bool Logging
-			{
-				get { return logCapture.Enabled; }
-				set { logCapture.Enabled = value; }
-			}
-
-			/// <summary>
-			/// Controls where Console.Out is directed
-			/// </summary>
-			public TextWriter Out
-			{
-				get { return outWriter; }
-				set 
-				{
-					if ( outWriter != value )
-					{
-						outWriter = value; 
-						Console.Out.Flush();
-						Console.SetOut( outWriter );
-					}
-				}
-			}
-		
-			/// <summary>
-			/// Controls where Console.Error is directed
-			/// </summary>
-			public TextWriter Error
-			{
-				get { return errorWriter; }
-				set 
-				{
-					if ( errorWriter != value )
-					{
-						errorWriter = value; 
-						Console.Error.Flush();
-						Console.SetError( errorWriter );
-					}
-				}
-			}
-
-			public TextWriter TraceWriter
-			{
-				get { return traceWriter; }
-				set
-				{
-					if ( traceWriter != value )
-					{
-						if ( traceWriter != null  && tracing )
-							StopTracing();
-
-						traceWriter = value;
-
-						if ( traceWriter != null && tracing )
-							StartTracing();
-					}
-				}
-			}
-
-			/// <summary>
-			///  Gets or sets the Log writer, which is actually held by a log4net 
-			///  TextWriterAppender. When first set, the appender will be created
-			///  and will thereafter send any log events to the writer.
-			///  
-			///  In normal operation, LogWriter is set to an EventListenerTextWriter
-			///  connected to the EventQueue in the test domain. The events are
-			///  subsequently captured in the Gui an the output displayed in
-			///  the Log tab. The application under test does not need to define
-			///  any additional appenders.
-			/// </summary>
-			public TextWriter LogWriter
-			{
-				get { return logCapture.Writer; }
-				set { logCapture.Writer = value; }
-			}
-
-			private void StopTracing()
-			{
-				traceWriter.Close();
-				System.Diagnostics.Trace.Listeners.Remove( "NUnit" );
-			}
-
-			private void StartTracing()
-			{
-				System.Diagnostics.Trace.Listeners.Add( new TextWriterTraceListener( traceWriter, "NUnit" ) );
-			}
-
-			public string CurrentDirectory
-			{
-				get { return currentDirectory; }
-				set
-				{
-					currentDirectory = value;
-					Environment.CurrentDirectory = currentDirectory;
-				}
-			}
-
-			public CultureInfo CurrentCulture
-			{
-				get { return currentCulture; }
-				set
-				{
-					currentCulture = value;
-					Thread.CurrentThread.CurrentCulture = currentCulture;
-				}
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections.Specialized;
+using System.Configuration;
+using System.IO;
+using System.Diagnostics;
+using System.Globalization;
+using System.Threading;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Helper class used to save and restore certain static or
+	/// singleton settings in the environment that affect tests 
+	/// or which might be changed by the user tests.
+	/// 
+	/// An internal class is used to hold settings and a stack
+	/// of these objects is pushed and popped as Save and Restore
+	/// are called.
+	/// 
+	/// Static methods for each setting forward to the internal 
+	/// object on the top of the stack.
+	/// 
+	/// When TestContext itself is instantiated, it is used to
+	/// save and restore settings for a block. It should be 
+	/// used with using() or Disposed in a finally block.
+	/// </summary>
+	public class TestContext : IDisposable
+	{
+		#region Instance Variables
+		/// <summary>
+		/// The current context, head of the list of saved contexts.
+		/// </summary>
+		private static ContextHolder current = new ContextHolder();
+		#endregion
+
+		#region Static Methods
+		public static bool Tracing
+		{
+			get { return current.Tracing; }
+			set { current.Tracing = value; }
+		}
+
+		public static bool Logging
+		{
+			get { return current.Logging; }
+			set { current.Logging = value; }
+		}
+
+		/// <summary>
+		/// Controls where Console.Out is directed
+		/// </summary>
+		public static TextWriter Out
+		{
+			get { return current.Out; }
+			set { current.Out = value; }
+		}
+		
+		/// <summary>
+		/// Controls where Console.Error is directed
+		/// </summary>
+		public static TextWriter Error
+		{
+			get { return current.Error; }
+			set { current.Error = value; }
+		}
+
+		/// <summary>
+		/// Controls where Trace output is directed
+		/// </summary>
+		public static TextWriter TraceWriter
+		{
+			get { return current.TraceWriter; }
+			set { current.TraceWriter = value; }
+		}
+
+		public static TextWriter LogWriter
+		{
+			get { return current.LogWriter; }
+			set { current.LogWriter = value; }
+		}
+
+		/// <summary>
+		/// The current directory setting
+		/// </summary>
+		public static string CurrentDirectory
+		{
+			get { return current.CurrentDirectory; }
+			set { current.CurrentDirectory = value; }
+		}
+
+		public static CultureInfo CurrentCulture
+		{
+			get { return current.CurrentCulture; }
+			set { current.CurrentCulture = value; }
+		}
+		
+		/// <summary>
+		/// Saves the old context and makes a fresh one 
+		/// current without changing any settings.
+		/// </summary>
+		public static void Save()
+		{
+			TestContext.current = new ContextHolder( current );
+		}
+
+		/// <summary>
+		/// Restores the last saved context and puts
+		/// any saved settings back into effect.
+		/// </summary>
+		public static void Restore()
+		{
+			current.ReverseChanges();
+			current = current.prior;
+		}
+		#endregion
+
+		#region Construct and Dispose
+		/// <summary>
+		/// The constructor saves the current context.
+		/// </summary>
+		public TestContext() 
+		{ 
+			TestContext.Save();
+		}
+
+		/// <summary>
+		/// Dispose restores the old context
+		/// </summary>
+		public void Dispose()
+		{
+			TestContext.Restore();
+		}
+		#endregion
+
+		#region ContextHolder internal class
+		private class ContextHolder
+		{
+			/// <summary>
+			/// Indicates whether trace is enabled
+			/// </summary>
+			private bool tracing;
+
+			/// <summary>
+			/// Indicates whether logging is enabled
+			/// </summary>
+			private bool logging;
+
+			/// <summary>
+			/// Destination for standard output
+			/// </summary>
+			private TextWriter outWriter;
+
+			/// <summary>
+			/// Destination for standard error
+			/// </summary>
+			private TextWriter errorWriter;
+
+			/// <summary>
+			/// Destination for Trace output
+			/// </summary>
+			private TextWriter traceWriter;
+
+			private Log4NetCapture logCapture;
+
+			/// <summary>
+			/// The current working directory
+			/// </summary>
+			private string currentDirectory;
+
+			/// <summary>
+			/// The current culture
+			/// </summary>
+			private CultureInfo currentCulture;
+
+			/// <summary>
+			/// Link to a prior saved context
+			/// </summary>
+			public ContextHolder prior;
+
+			public ContextHolder()
+			{
+				this.prior = null;
+				this.tracing = false;
+				this.logging = false;
+				this.outWriter = Console.Out;
+				this.errorWriter = Console.Error;
+				this.traceWriter = null;
+				this.logCapture = new Log4NetCapture();
+
+				this.currentDirectory = Environment.CurrentDirectory;
+				this.currentCulture = CultureInfo.CurrentCulture;
+			}
+
+			public ContextHolder( ContextHolder other )
+			{
+				this.prior = other;
+				this.tracing = other.tracing;
+				this.logging = other.logging;
+				this.outWriter = other.outWriter;
+				this.errorWriter = other.errorWriter;
+				this.traceWriter = other.traceWriter;
+				this.logCapture = other.logCapture;
+
+				this.currentDirectory = Environment.CurrentDirectory;
+				this.currentCulture = CultureInfo.CurrentCulture;
+			}
+
+			/// <summary>
+			/// Used to restore settings to their prior
+			/// values before reverting to a prior context.
+			/// </summary>
+			public void ReverseChanges()
+			{ 
+				if ( prior == null )
+					throw new InvalidOperationException( "TestContext: too many Restores" );
+
+				this.Tracing = prior.Tracing;
+				this.Out = prior.Out;
+				this.Error = prior.Error;
+				this.CurrentDirectory = prior.CurrentDirectory;
+				this.CurrentCulture = prior.CurrentCulture;
+			}
+
+			/// <summary>
+			/// Controls whether trace and debug output are written
+			/// to the standard output.
+			/// </summary>
+			public bool Tracing
+			{
+				get { return tracing; }
+				set 
+				{
+					if ( tracing != value )
+					{
+						if ( traceWriter != null && tracing )
+							StopTracing();
+
+						tracing = value; 
+
+						if ( traceWriter != null && tracing )
+							StartTracing();
+					}
+				}
+			}
+
+			/// <summary>
+			/// Controls whether log output is captured
+			/// </summary>
+			public bool Logging
+			{
+				get { return logCapture.Enabled; }
+				set { logCapture.Enabled = value; }
+			}
+
+			/// <summary>
+			/// Controls where Console.Out is directed
+			/// </summary>
+			public TextWriter Out
+			{
+				get { return outWriter; }
+				set 
+				{
+					if ( outWriter != value )
+					{
+						outWriter = value; 
+						Console.Out.Flush();
+						Console.SetOut( outWriter );
+					}
+				}
+			}
+		
+			/// <summary>
+			/// Controls where Console.Error is directed
+			/// </summary>
+			public TextWriter Error
+			{
+				get { return errorWriter; }
+				set 
+				{
+					if ( errorWriter != value )
+					{
+						errorWriter = value; 
+						Console.Error.Flush();
+						Console.SetError( errorWriter );
+					}
+				}
+			}
+
+			public TextWriter TraceWriter
+			{
+				get { return traceWriter; }
+				set
+				{
+					if ( traceWriter != value )
+					{
+						if ( traceWriter != null  && tracing )
+							StopTracing();
+
+						traceWriter = value;
+
+						if ( traceWriter != null && tracing )
+							StartTracing();
+					}
+				}
+			}
+
+			/// <summary>
+			///  Gets or sets the Log writer, which is actually held by a log4net 
+			///  TextWriterAppender. When first set, the appender will be created
+			///  and will thereafter send any log events to the writer.
+			///  
+			///  In normal operation, LogWriter is set to an EventListenerTextWriter
+			///  connected to the EventQueue in the test domain. The events are
+			///  subsequently captured in the Gui an the output displayed in
+			///  the Log tab. The application under test does not need to define
+			///  any additional appenders.
+			/// </summary>
+			public TextWriter LogWriter
+			{
+				get { return logCapture.Writer; }
+				set { logCapture.Writer = value; }
+			}
+
+			private void StopTracing()
+			{
+				traceWriter.Close();
+				System.Diagnostics.Trace.Listeners.Remove( "NUnit" );
+			}
+
+			private void StartTracing()
+			{
+				System.Diagnostics.Trace.Listeners.Add( new TextWriterTraceListener( traceWriter, "NUnit" ) );
+			}
+
+			public string CurrentDirectory
+			{
+				get { return currentDirectory; }
+				set
+				{
+					currentDirectory = value;
+					Environment.CurrentDirectory = currentDirectory;
+				}
+			}
+
+			public CultureInfo CurrentCulture
+			{
+				get { return currentCulture; }
+				set
+				{
+					currentCulture = value;
+					Thread.CurrentThread.CurrentCulture = currentCulture;
+				}
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestDecoratorAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestDecoratorAttribute.cs
@@ -1,17 +1,17 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestDecoratorAttribute is used to mark custom suite builders.
-	/// The class so marked must implement the ISuiteBuilder interface.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
-	public sealed class TestDecoratorAttribute : Attribute
-	{}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestDecoratorAttribute is used to mark custom suite builders.
+	/// The class so marked must implement the ISuiteBuilder interface.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
+	public sealed class TestDecoratorAttribute : Attribute
+	{}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestFixture.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestFixture.cs
@@ -1,40 +1,40 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.IO;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestFixture is a surrogate for a user test fixture class,
-	/// containing one or more tests.
-	/// </summary>
-	public class TestFixture : TestSuite
-	{
-		#region Constructors
-		public TestFixture( Type fixtureType )
-			: base( fixtureType ) { }
-		#endregion
-
-		#region Properties
-		public override string TestType
-		{
-			get	{ return "Test Fixture"; }
-		}
-		#endregion
-
-		#region TestSuite Overrides
-        public override TestResult Run(EventListener listener, ITestFilter filter)
-        {
-            using ( new DirectorySwapper( Path.GetDirectoryName( TestFixtureBuilder.GetAssemblyPath( FixtureType ) ) ) )
-            {
-                return base.Run(listener, filter);
-            }
-        }
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.IO;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestFixture is a surrogate for a user test fixture class,
+	/// containing one or more tests.
+	/// </summary>
+	public class TestFixture : TestSuite
+	{
+		#region Constructors
+		public TestFixture( Type fixtureType )
+			: base( fixtureType ) { }
+		#endregion
+
+		#region Properties
+		public override string TestType
+		{
+			get	{ return "Test Fixture"; }
+		}
+		#endregion
+
+		#region TestSuite Overrides
+        public override TestResult Run(EventListener listener, ITestFilter filter)
+        {
+            using ( new DirectorySwapper( Path.GetDirectoryName( TestFixtureBuilder.GetAssemblyPath( FixtureType ) ) ) )
+            {
+                return base.Run(listener, filter);
+            }
+        }
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestFixtureBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestFixtureBuilder.cs
@@ -1,84 +1,84 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestFixtureBuilder contains static methods for building
-	/// TestFixtures from types. It uses builtin SuiteBuilders
-	/// and any installed extensions to do it.
-	/// </summary>
-	public class TestFixtureBuilder
-	{
-		public static bool CanBuildFrom( Type type )
-		{
-			return CoreExtensions.Host.SuiteBuilders.CanBuildFrom( type );
-		}
-
-		/// <summary>
-		/// Build a test fixture from a given type.
-		/// </summary>
-		/// <param name="type">The type to be used for the fixture</param>
-		/// <returns>A TestSuite if the fixture can be built, null if not</returns>
-		public static Test BuildFrom( Type type )
-		{
-			Test suite = CoreExtensions.Host.SuiteBuilders.BuildFrom( type );
-
-			if ( suite != null )
-				suite = CoreExtensions.Host.TestDecorators.Decorate( suite, type );
-
-			return suite;
-		}
-
-		/// <summary>
-		/// Build a fixture from an object. 
-		/// </summary>
-		/// <param name="fixture">The object to be used for the fixture</param>
-		/// <returns>A TestSuite if fixture type can be built, null if not</returns>
-		public static Test BuildFrom( object fixture )
-		{
-			Test suite = BuildFrom( fixture.GetType() );
-			if( suite != null)
-				suite.Fixture = fixture;
-			return suite;
-		}
-
-		public static string GetAssemblyPath( Type fixtureType )
-		{
-			return GetAssemblyPath( fixtureType.Assembly );
-		}
-
-		// TODO: This logic should be in shared source
-		public static string GetAssemblyPath( Assembly assembly )
-		{
-			string path = assembly.CodeBase;
-			Uri uri = new Uri( path );
-			
-			// If it wasn't loaded locally, use the Location
-			if ( !uri.IsFile )
-				return assembly.Location;
-
-			if ( uri.IsUnc )
-				return path.Substring( Uri.UriSchemeFile.Length+1 );
-
-
-			int start = Uri.UriSchemeFile.Length + Uri.SchemeDelimiter.Length;
-			
-			if ( path[start] == '/' && path[start+2] == ':' )
-				++start;
-
-			return path.Substring( start );
-		}
-
-		/// <summary>
-		/// Private constructor to prevent instantiation
-		/// </summary>
-		private TestFixtureBuilder() { }
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestFixtureBuilder contains static methods for building
+	/// TestFixtures from types. It uses builtin SuiteBuilders
+	/// and any installed extensions to do it.
+	/// </summary>
+	public class TestFixtureBuilder
+	{
+		public static bool CanBuildFrom( Type type )
+		{
+			return CoreExtensions.Host.SuiteBuilders.CanBuildFrom( type );
+		}
+
+		/// <summary>
+		/// Build a test fixture from a given type.
+		/// </summary>
+		/// <param name="type">The type to be used for the fixture</param>
+		/// <returns>A TestSuite if the fixture can be built, null if not</returns>
+		public static Test BuildFrom( Type type )
+		{
+			Test suite = CoreExtensions.Host.SuiteBuilders.BuildFrom( type );
+
+			if ( suite != null )
+				suite = CoreExtensions.Host.TestDecorators.Decorate( suite, type );
+
+			return suite;
+		}
+
+		/// <summary>
+		/// Build a fixture from an object. 
+		/// </summary>
+		/// <param name="fixture">The object to be used for the fixture</param>
+		/// <returns>A TestSuite if fixture type can be built, null if not</returns>
+		public static Test BuildFrom( object fixture )
+		{
+			Test suite = BuildFrom( fixture.GetType() );
+			if( suite != null)
+				suite.Fixture = fixture;
+			return suite;
+		}
+
+		public static string GetAssemblyPath( Type fixtureType )
+		{
+			return GetAssemblyPath( fixtureType.Assembly );
+		}
+
+		// TODO: This logic should be in shared source
+		public static string GetAssemblyPath( Assembly assembly )
+		{
+			string path = assembly.CodeBase;
+			Uri uri = new Uri( path );
+			
+			// If it wasn't loaded locally, use the Location
+			if ( !uri.IsFile )
+				return assembly.Location;
+
+			if ( uri.IsUnc )
+				return path.Substring( Uri.UriSchemeFile.Length+1 );
+
+
+			int start = Uri.UriSchemeFile.Length + Uri.SchemeDelimiter.Length;
+			
+			if ( path[start] == '/' && path[start+2] == ':' )
+				++start;
+
+			return path.Substring( start );
+		}
+
+		/// <summary>
+		/// Private constructor to prevent instantiation
+		/// </summary>
+		private TestFixtureBuilder() { }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestMethod.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestMethod.cs
@@ -1,401 +1,401 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Text;
-	using System.Text.RegularExpressions;
-	using System.Reflection;
-
-	/// <summary>
-	/// The TestMethod class represents a TestCase implemented as a method
-	/// call on a fixture object. At the moment, this is the only way we 
-	/// implement a TestCase, but others are expected in the future.
-	/// 
-	/// Because of how exceptions are handled internally, this class
-	/// must incorporate processing of expected exceptions. A change to
-	/// the TestCase interface might make it easier to process exceptions
-	/// in an object that aggregates a TestMethod in the future.
-	/// </summary>
-	public abstract class TestMethod : TestCase
-	{
-		#region Fields
-		/// <summary>
-		/// The test method
-		/// </summary>
-		private MethodInfo method;
-
-		/// <summary>
-		/// The SetUp method.
-		/// </summary>
-		protected MethodInfo setUpMethod;
-
-		/// <summary>
-		/// The teardown method
-		/// </summary>
-		protected MethodInfo tearDownMethod;
-
-		/// <summary>
-		/// The exception handler method
-		/// </summary>
-		internal MethodInfo exceptionHandler;
-
-		/// <summary>
-		/// True if an exception is expected
-		/// </summary>
-		internal bool exceptionExpected;
-
-		/// <summary>
-		/// The type of any expected exception
-		/// </summary>
-		internal Type expectedExceptionType;
-        
-		/// <summary>
-		/// The full name of any expected exception type
-		/// </summary>
-		internal string expectedExceptionName;
-        
-		/// <summary>
-		/// The value of any message associated with an expected exception
-		/// </summary>
-		internal string expectedMessage;
-        
-		/// <summary>
-		/// A string indicating how to match the expected message
-		/// </summary>
-		internal string matchType;
-
-		/// <summary>
-		/// A string containing any user message specified for the expected exception
-		/// </summary>
-		internal string userMessage;
-
-		#endregion
-
-		#region Constructors
-		public TestMethod( MethodInfo method ) 
-			: base( method ) 
-		{
-			this.method = method;
-		}
-		#endregion
-
-		#region Properties
-		public MethodInfo Method
-		{
-			get { return method; }
-		}
-
-		public bool ExceptionExpected
-		{
-			get { return exceptionExpected; }
-			set { exceptionExpected = value; }
-		}
-
-		public MethodInfo ExceptionHandler
-		{
-			get { return exceptionHandler; }
-			set { exceptionHandler = value; }
-		}
-
-		public Type ExpectedExceptionType
-		{
-			get { return expectedExceptionType; }
-			set 
-			{ 
-				expectedExceptionType = value;
-				expectedExceptionName = expectedExceptionType != null
-					? expectedExceptionType.FullName
-					: null;
-			}
-		}
-
-		public string ExpectedExceptionName
-		{
-			get { return expectedExceptionName; }
-			set
-			{
-				expectedExceptionType = null;
-				expectedExceptionName = value;
-			}
-		}
-
-		public string ExpectedMessage
-		{
-			get { return expectedMessage; }
-			set { expectedMessage = value; }
-		}
-
-		public string MatchType
-		{
-			get { return matchType; }
-			set { matchType = value; }
-		}
-
-		public string UserMessage
-		{
-			get { return userMessage; }
-			set { userMessage = value; }
-		}
-		#endregion
-
-		#region Run Methods
-		public override void Run(TestCaseResult testResult)
-		{ 
-			try
-			{
-				if ( this.Parent != null)
-					Fixture = this.Parent.Fixture;
-
-				if (!testResult.IsFailure)
-				{
-					// Temporary... to allow for tests that directly execute a test case
-					if (Fixture == null)
-						Fixture = Reflect.Construct(this.FixtureType);
-
-                    if (this.Properties["_SETCULTURE"] != null)
-                        TestContext.CurrentCulture =
-                            new System.Globalization.CultureInfo((string)Properties["_SETCULTURE"]);
-                    
-                    doRun(testResult);
-				}
-			}
-			catch (Exception ex)
-			{
-				if (ex is NUnitException)
-					ex = ex.InnerException;
-
-				RecordException(ex, testResult);
-			}
-			finally
-			{
-				Fixture = null;
-			}
-		}
-
-		/// <summary>
-		/// The doRun method is used to run a test internally.
-		/// It assumes that the caller is taking care of any 
-		/// TestFixtureSetUp and TestFixtureTearDown needed.
-		/// </summary>
-		/// <param name="testResult">The result in which to record success or failure</param>
-		public virtual void doRun( TestCaseResult testResult )
-		{
-			DateTime start = DateTime.Now;
-
-			try 
-			{
-				if ( setUpMethod != null )
-					Reflect.InvokeMethod( setUpMethod, this.Fixture );
-
-				doTestCase( testResult );
-			}
-			catch(Exception ex)
-			{
-				if ( ex is NUnitException )
-					ex = ex.InnerException;
-
-				RecordException( ex, testResult );
-			}
-			finally 
-			{
-				doTearDown( testResult );
-
-				DateTime stop = DateTime.Now;
-				TimeSpan span = stop.Subtract(start);
-				testResult.Time = (double)span.Ticks / (double)TimeSpan.TicksPerSecond;
-			}
-		}
-		#endregion
-
-		#region Invoke Methods by Reflection, Recording Errors
-
-		private void doTearDown( TestCaseResult testResult )
-		{
-			try
-			{
-				if ( tearDownMethod != null )
-					tearDownMethod.Invoke( this.Fixture, new object[0] );
-			}
-			catch(Exception ex)
-			{
-				if ( ex is NUnitException )
-					ex = ex.InnerException;
-				// TODO: What about ignore exceptions in teardown?
-				testResult.Error( ex,FailureSite.TearDown );
-			}
-		}
-
-		private void doTestCase( TestCaseResult testResult )
-		{
-			try
-			{
-				RunTestMethod(testResult);
-				ProcessNoException(testResult);
-			}
-			catch( Exception ex )
-			{
-				if ( ex is NUnitException )
-					ex = ex.InnerException;
-
-				if ( IsIgnoreException( ex ) )
-					testResult.Ignore( ex );
-				else
-					ProcessException(ex, testResult);
-			}
-		}
-
-		public virtual void RunTestMethod(TestCaseResult testResult)
-		{
-			Reflect.InvokeMethod( this.method, this.Fixture );
-		}
-
-		#endregion
-
-		#region Record Info About An Exception
-
-		protected void RecordException( Exception ex, TestResult testResult )
-		{
-			if ( IsIgnoreException( ex ) )
-				testResult.Ignore( ex.Message );
-			else if ( IsAssertException( ex ) )
-				testResult.Failure( ex.Message, ex.StackTrace );
-			else	
-				testResult.Error( ex );
-		}
-
-		protected string GetStackTrace(Exception exception)
-		{
-			try
-			{
-				return exception.StackTrace;
-			}
-			catch( Exception )
-			{
-				return "No stack trace available";
-			}
-		}
-
-		#endregion
-
-		#region Exception Processing
-		protected internal virtual void ProcessNoException(TestCaseResult testResult)
-		{
-			if ( ExceptionExpected )
-				testResult.Failure(NoExceptionMessage(), null);
-			else
-				testResult.Success();
-		}
-		
-		protected internal virtual void ProcessException(Exception exception, TestCaseResult testResult)
-		{
-			if (!ExceptionExpected)
-			{
-				RecordException(exception, testResult); 
-				return;
-			}
-
-			if (IsExpectedExceptionType(exception))
-			{
-				if (IsExpectedMessageMatch(exception))
-				{
-					if ( exceptionHandler != null )
-						Reflect.InvokeMethod( exceptionHandler, this.Fixture, exception );
-
-					testResult.Success();
-				}
-				else
-				{
-					testResult.Failure(WrongTextMessage(exception), GetStackTrace(exception));
-				}
-			}
-			else if (IsAssertException(exception))
-			{
-				testResult.Failure(exception.Message, exception.StackTrace);
-			}
-			else
-			{
-				testResult.Failure(WrongTypeMessage(exception), GetStackTrace(exception));
-			}
-		}
-		#endregion
-
-		#region Abstract Methods
-		protected abstract bool IsAssertException(Exception ex);
-
-		protected abstract bool IsIgnoreException(Exception ex);
-		#endregion
-
-		#region Helper Methods
-		protected bool IsExpectedExceptionType(Exception exception)
-		{
-			return expectedExceptionName == null || expectedExceptionName.Equals(exception.GetType().FullName);
-		}
-
-		protected bool IsExpectedMessageMatch(Exception exception)
-		{
-			if (expectedMessage == null)
-				return true;
-
-			switch (matchType)
-			{
-				case "Exact":
-				default:
-					return expectedMessage.Equals(exception.Message);
-				case "Contains":
-					return exception.Message.IndexOf(expectedMessage) >= 0;
-				case "Regex":
-					return Regex.IsMatch(exception.Message, expectedMessage);
-			}
-		}
-
-		protected string NoExceptionMessage()
-		{
-			string expectedType = expectedExceptionName == null ? "An Exception" : expectedExceptionName;
-			return CombineWithUserMessage( expectedType + " was expected" );
-		}
-
-		protected string WrongTypeMessage(Exception exception)
-		{
-			return CombineWithUserMessage(
-				"An unexpected exception type was thrown" + Environment.NewLine +
-				"Expected: " + expectedExceptionName + Environment.NewLine +
-				" but was: " + exception.GetType().FullName + " : " + exception.Message );
-		}
-
-		protected string WrongTextMessage(Exception exception)
-		{
-			string expectedText;
-			switch (matchType)
-			{
-				default:
-				case "Exact":
-					expectedText = "Expected: ";
-					break;
-				case "Contains":
-					expectedText = "Expected message containing: ";
-					break;
-				case "Regex":
-					expectedText = "Expected message matching: ";
-					break;
-			}
-
-			return CombineWithUserMessage(
-				"The exception message text was incorrect" + Environment.NewLine +
-				expectedText + expectedMessage + Environment.NewLine +
-				" but was: " + exception.Message );
-		}
-
-		private string CombineWithUserMessage( string message )
-		{
-			if ( userMessage == null )
-				return message;
-			return userMessage + Environment.NewLine + message;
-		}
-        #endregion
-    }
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Text;
+	using System.Text.RegularExpressions;
+	using System.Reflection;
+
+	/// <summary>
+	/// The TestMethod class represents a TestCase implemented as a method
+	/// call on a fixture object. At the moment, this is the only way we 
+	/// implement a TestCase, but others are expected in the future.
+	/// 
+	/// Because of how exceptions are handled internally, this class
+	/// must incorporate processing of expected exceptions. A change to
+	/// the TestCase interface might make it easier to process exceptions
+	/// in an object that aggregates a TestMethod in the future.
+	/// </summary>
+	public abstract class TestMethod : TestCase
+	{
+		#region Fields
+		/// <summary>
+		/// The test method
+		/// </summary>
+		private MethodInfo method;
+
+		/// <summary>
+		/// The SetUp method.
+		/// </summary>
+		protected MethodInfo setUpMethod;
+
+		/// <summary>
+		/// The teardown method
+		/// </summary>
+		protected MethodInfo tearDownMethod;
+
+		/// <summary>
+		/// The exception handler method
+		/// </summary>
+		internal MethodInfo exceptionHandler;
+
+		/// <summary>
+		/// True if an exception is expected
+		/// </summary>
+		internal bool exceptionExpected;
+
+		/// <summary>
+		/// The type of any expected exception
+		/// </summary>
+		internal Type expectedExceptionType;
+        
+		/// <summary>
+		/// The full name of any expected exception type
+		/// </summary>
+		internal string expectedExceptionName;
+        
+		/// <summary>
+		/// The value of any message associated with an expected exception
+		/// </summary>
+		internal string expectedMessage;
+        
+		/// <summary>
+		/// A string indicating how to match the expected message
+		/// </summary>
+		internal string matchType;
+
+		/// <summary>
+		/// A string containing any user message specified for the expected exception
+		/// </summary>
+		internal string userMessage;
+
+		#endregion
+
+		#region Constructors
+		public TestMethod( MethodInfo method ) 
+			: base( method ) 
+		{
+			this.method = method;
+		}
+		#endregion
+
+		#region Properties
+		public MethodInfo Method
+		{
+			get { return method; }
+		}
+
+		public bool ExceptionExpected
+		{
+			get { return exceptionExpected; }
+			set { exceptionExpected = value; }
+		}
+
+		public MethodInfo ExceptionHandler
+		{
+			get { return exceptionHandler; }
+			set { exceptionHandler = value; }
+		}
+
+		public Type ExpectedExceptionType
+		{
+			get { return expectedExceptionType; }
+			set 
+			{ 
+				expectedExceptionType = value;
+				expectedExceptionName = expectedExceptionType != null
+					? expectedExceptionType.FullName
+					: null;
+			}
+		}
+
+		public string ExpectedExceptionName
+		{
+			get { return expectedExceptionName; }
+			set
+			{
+				expectedExceptionType = null;
+				expectedExceptionName = value;
+			}
+		}
+
+		public string ExpectedMessage
+		{
+			get { return expectedMessage; }
+			set { expectedMessage = value; }
+		}
+
+		public string MatchType
+		{
+			get { return matchType; }
+			set { matchType = value; }
+		}
+
+		public string UserMessage
+		{
+			get { return userMessage; }
+			set { userMessage = value; }
+		}
+		#endregion
+
+		#region Run Methods
+		public override void Run(TestCaseResult testResult)
+		{ 
+			try
+			{
+				if ( this.Parent != null)
+					Fixture = this.Parent.Fixture;
+
+				if (!testResult.IsFailure)
+				{
+					// Temporary... to allow for tests that directly execute a test case
+					if (Fixture == null)
+						Fixture = Reflect.Construct(this.FixtureType);
+
+                    if (this.Properties["_SETCULTURE"] != null)
+                        TestContext.CurrentCulture =
+                            new System.Globalization.CultureInfo((string)Properties["_SETCULTURE"]);
+                    
+                    doRun(testResult);
+				}
+			}
+			catch (Exception ex)
+			{
+				if (ex is NUnitException)
+					ex = ex.InnerException;
+
+				RecordException(ex, testResult);
+			}
+			finally
+			{
+				Fixture = null;
+			}
+		}
+
+		/// <summary>
+		/// The doRun method is used to run a test internally.
+		/// It assumes that the caller is taking care of any 
+		/// TestFixtureSetUp and TestFixtureTearDown needed.
+		/// </summary>
+		/// <param name="testResult">The result in which to record success or failure</param>
+		public virtual void doRun( TestCaseResult testResult )
+		{
+			DateTime start = DateTime.Now;
+
+			try 
+			{
+				if ( setUpMethod != null )
+					Reflect.InvokeMethod( setUpMethod, this.Fixture );
+
+				doTestCase( testResult );
+			}
+			catch(Exception ex)
+			{
+				if ( ex is NUnitException )
+					ex = ex.InnerException;
+
+				RecordException( ex, testResult );
+			}
+			finally 
+			{
+				doTearDown( testResult );
+
+				DateTime stop = DateTime.Now;
+				TimeSpan span = stop.Subtract(start);
+				testResult.Time = (double)span.Ticks / (double)TimeSpan.TicksPerSecond;
+			}
+		}
+		#endregion
+
+		#region Invoke Methods by Reflection, Recording Errors
+
+		private void doTearDown( TestCaseResult testResult )
+		{
+			try
+			{
+				if ( tearDownMethod != null )
+					tearDownMethod.Invoke( this.Fixture, new object[0] );
+			}
+			catch(Exception ex)
+			{
+				if ( ex is NUnitException )
+					ex = ex.InnerException;
+				// TODO: What about ignore exceptions in teardown?
+				testResult.Error( ex,FailureSite.TearDown );
+			}
+		}
+
+		private void doTestCase( TestCaseResult testResult )
+		{
+			try
+			{
+				RunTestMethod(testResult);
+				ProcessNoException(testResult);
+			}
+			catch( Exception ex )
+			{
+				if ( ex is NUnitException )
+					ex = ex.InnerException;
+
+				if ( IsIgnoreException( ex ) )
+					testResult.Ignore( ex );
+				else
+					ProcessException(ex, testResult);
+			}
+		}
+
+		public virtual void RunTestMethod(TestCaseResult testResult)
+		{
+			Reflect.InvokeMethod( this.method, this.Fixture );
+		}
+
+		#endregion
+
+		#region Record Info About An Exception
+
+		protected void RecordException( Exception ex, TestResult testResult )
+		{
+			if ( IsIgnoreException( ex ) )
+				testResult.Ignore( ex.Message );
+			else if ( IsAssertException( ex ) )
+				testResult.Failure( ex.Message, ex.StackTrace );
+			else	
+				testResult.Error( ex );
+		}
+
+		protected string GetStackTrace(Exception exception)
+		{
+			try
+			{
+				return exception.StackTrace;
+			}
+			catch( Exception )
+			{
+				return "No stack trace available";
+			}
+		}
+
+		#endregion
+
+		#region Exception Processing
+		protected internal virtual void ProcessNoException(TestCaseResult testResult)
+		{
+			if ( ExceptionExpected )
+				testResult.Failure(NoExceptionMessage(), null);
+			else
+				testResult.Success();
+		}
+		
+		protected internal virtual void ProcessException(Exception exception, TestCaseResult testResult)
+		{
+			if (!ExceptionExpected)
+			{
+				RecordException(exception, testResult); 
+				return;
+			}
+
+			if (IsExpectedExceptionType(exception))
+			{
+				if (IsExpectedMessageMatch(exception))
+				{
+					if ( exceptionHandler != null )
+						Reflect.InvokeMethod( exceptionHandler, this.Fixture, exception );
+
+					testResult.Success();
+				}
+				else
+				{
+					testResult.Failure(WrongTextMessage(exception), GetStackTrace(exception));
+				}
+			}
+			else if (IsAssertException(exception))
+			{
+				testResult.Failure(exception.Message, exception.StackTrace);
+			}
+			else
+			{
+				testResult.Failure(WrongTypeMessage(exception), GetStackTrace(exception));
+			}
+		}
+		#endregion
+
+		#region Abstract Methods
+		protected abstract bool IsAssertException(Exception ex);
+
+		protected abstract bool IsIgnoreException(Exception ex);
+		#endregion
+
+		#region Helper Methods
+		protected bool IsExpectedExceptionType(Exception exception)
+		{
+			return expectedExceptionName == null || expectedExceptionName.Equals(exception.GetType().FullName);
+		}
+
+		protected bool IsExpectedMessageMatch(Exception exception)
+		{
+			if (expectedMessage == null)
+				return true;
+
+			switch (matchType)
+			{
+				case "Exact":
+				default:
+					return expectedMessage.Equals(exception.Message);
+				case "Contains":
+					return exception.Message.IndexOf(expectedMessage) >= 0;
+				case "Regex":
+					return Regex.IsMatch(exception.Message, expectedMessage);
+			}
+		}
+
+		protected string NoExceptionMessage()
+		{
+			string expectedType = expectedExceptionName == null ? "An Exception" : expectedExceptionName;
+			return CombineWithUserMessage( expectedType + " was expected" );
+		}
+
+		protected string WrongTypeMessage(Exception exception)
+		{
+			return CombineWithUserMessage(
+				"An unexpected exception type was thrown" + Environment.NewLine +
+				"Expected: " + expectedExceptionName + Environment.NewLine +
+				" but was: " + exception.GetType().FullName + " : " + exception.Message );
+		}
+
+		protected string WrongTextMessage(Exception exception)
+		{
+			string expectedText;
+			switch (matchType)
+			{
+				default:
+				case "Exact":
+					expectedText = "Expected: ";
+					break;
+				case "Contains":
+					expectedText = "Expected message containing: ";
+					break;
+				case "Regex":
+					expectedText = "Expected message matching: ";
+					break;
+			}
+
+			return CombineWithUserMessage(
+				"The exception message text was incorrect" + Environment.NewLine +
+				expectedText + expectedMessage + Environment.NewLine +
+				" but was: " + exception.Message );
+		}
+
+		private string CombineWithUserMessage( string message )
+		{
+			if ( userMessage == null )
+				return message;
+			return userMessage + Environment.NewLine + message;
+		}
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestRunnerThread.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestRunnerThread.cs
@@ -1,158 +1,158 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Threading;
-using System.Configuration;
-using System.Collections.Specialized;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestRunnerThread encapsulates running a test on a thread.
-	/// It knows how to create the thread based on configuration
-	/// settings and can cancel abort the test if necessary.
-	/// </summary>
-	public class TestRunnerThread
-	{
-		#region Private Fields
-
-		/// <summary>
-		/// The Test runner to be used in running tests on the thread
-		/// </summary>
-		private TestRunner runner;
-
-		/// <summary>
-		/// The System.Threading.Thread created by the object
-		/// </summary>
-		private Thread thread;
-
-		/// <summary>
-		/// Collection of TestRunner settings from the config file
-		/// </summary>
-		private NameValueCollection settings;
-
-		/// <summary>
-		/// The EventListener interface to receive test events
-		/// </summary>
-		private NUnit.Core.EventListener listener;
-
-		/// <summary>
-		/// Array of test names for ues by the thread proc
-		/// </summary>
-		//private string[] testNames;
-		private ITestFilter filter;
-			
-		/// <summary>
-		/// Array of returned results
-		/// </summary>
-		private TestResult[] results;
-
-		#endregion
-
-		#region Properties
-
-		/// <summary>
-		/// True if the thread is executing
-		/// </summary>
-		public bool IsAlive
-		{
-			get	{ return this.thread.IsAlive; }
-		}
-
-		/// <summary>
-		/// Array of returned results
-		/// </summary>
-		public TestResult[] Results
-		{
-			get { return results; }
-		}
-
-		#endregion
-
-		#region Constructor
-
-		public TestRunnerThread( TestRunner runner ) 
-		{ 
-			this.runner = runner;
-			this.thread = new Thread( new ThreadStart( TestRunnerThreadProc ) );
-			thread.IsBackground = true;
-			thread.Name = "TestRunnerThread";
-
-			this.settings = (NameValueCollection)
-				ConfigurationSettings.GetConfig( "NUnit/TestRunner" );
-	
-			if ( settings != null )
-			{
-				try
-				{
-					string apartment = settings["ApartmentState"];
-					if ( apartment != null )
-						thread.ApartmentState = (ApartmentState)
-							System.Enum.Parse( typeof( ApartmentState ), apartment, true );
-		
-					string priority = settings["ThreadPriority"];
-					if ( priority != null )
-						thread.Priority = (ThreadPriority)
-							System.Enum.Parse( typeof( ThreadPriority ), priority, true );
-				}
-				catch( ArgumentException ex )
-				{
-					string msg = string.Format( "Invalid configuration setting in {0}", 
-						AppDomain.CurrentDomain.SetupInformation.ConfigurationFile );
-					throw new ArgumentException( msg, ex );
-				}
-			}
-		}
-
-		#endregion
-
-		#region Public Methods
-
-		public void Wait()
-		{
-			if ( this.thread.IsAlive )
-				this.thread.Join();
-		}
-
-		public void Cancel()
-		{
-			ThreadUtility.Kill(this.thread);
-		}
-
-		public void StartRun( EventListener listener )
-		{
-			StartRun( listener, TestFilter.Empty );
-		}
-
-		public void StartRun( EventListener listener, ITestFilter filter )
-		{
-			this.listener = listener;
-			this.filter = filter;
-
-			thread.Start();
-		}
-
-		#endregion
-
-		#region Thread Proc
-		/// <summary>
-		/// The thread proc for our actual test run
-		/// </summary>
-		private void TestRunnerThreadProc()
-		{
-            try
-            {
-                results = new TestResult[] { runner.Run(this.listener, this.filter) };
-            }
-            catch (Exception ex)
-            {
-                throw new ApplicationException("Exception in TestRunnerThread", ex);
-            }
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Threading;
+using System.Configuration;
+using System.Collections.Specialized;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestRunnerThread encapsulates running a test on a thread.
+	/// It knows how to create the thread based on configuration
+	/// settings and can cancel abort the test if necessary.
+	/// </summary>
+	public class TestRunnerThread
+	{
+		#region Private Fields
+
+		/// <summary>
+		/// The Test runner to be used in running tests on the thread
+		/// </summary>
+		private TestRunner runner;
+
+		/// <summary>
+		/// The System.Threading.Thread created by the object
+		/// </summary>
+		private Thread thread;
+
+		/// <summary>
+		/// Collection of TestRunner settings from the config file
+		/// </summary>
+		private NameValueCollection settings;
+
+		/// <summary>
+		/// The EventListener interface to receive test events
+		/// </summary>
+		private NUnit.Core.EventListener listener;
+
+		/// <summary>
+		/// Array of test names for ues by the thread proc
+		/// </summary>
+		//private string[] testNames;
+		private ITestFilter filter;
+			
+		/// <summary>
+		/// Array of returned results
+		/// </summary>
+		private TestResult[] results;
+
+		#endregion
+
+		#region Properties
+
+		/// <summary>
+		/// True if the thread is executing
+		/// </summary>
+		public bool IsAlive
+		{
+			get	{ return this.thread.IsAlive; }
+		}
+
+		/// <summary>
+		/// Array of returned results
+		/// </summary>
+		public TestResult[] Results
+		{
+			get { return results; }
+		}
+
+		#endregion
+
+		#region Constructor
+
+		public TestRunnerThread( TestRunner runner ) 
+		{ 
+			this.runner = runner;
+			this.thread = new Thread( new ThreadStart( TestRunnerThreadProc ) );
+			thread.IsBackground = true;
+			thread.Name = "TestRunnerThread";
+
+			this.settings = (NameValueCollection)
+				ConfigurationSettings.GetConfig( "NUnit/TestRunner" );
+	
+			if ( settings != null )
+			{
+				try
+				{
+					string apartment = settings["ApartmentState"];
+					if ( apartment != null )
+						thread.ApartmentState = (ApartmentState)
+							System.Enum.Parse( typeof( ApartmentState ), apartment, true );
+		
+					string priority = settings["ThreadPriority"];
+					if ( priority != null )
+						thread.Priority = (ThreadPriority)
+							System.Enum.Parse( typeof( ThreadPriority ), priority, true );
+				}
+				catch( ArgumentException ex )
+				{
+					string msg = string.Format( "Invalid configuration setting in {0}", 
+						AppDomain.CurrentDomain.SetupInformation.ConfigurationFile );
+					throw new ArgumentException( msg, ex );
+				}
+			}
+		}
+
+		#endregion
+
+		#region Public Methods
+
+		public void Wait()
+		{
+			if ( this.thread.IsAlive )
+				this.thread.Join();
+		}
+
+		public void Cancel()
+		{
+			ThreadUtility.Kill(this.thread);
+		}
+
+		public void StartRun( EventListener listener )
+		{
+			StartRun( listener, TestFilter.Empty );
+		}
+
+		public void StartRun( EventListener listener, ITestFilter filter )
+		{
+			this.listener = listener;
+			this.filter = filter;
+
+			thread.Start();
+		}
+
+		#endregion
+
+		#region Thread Proc
+		/// <summary>
+		/// The thread proc for our actual test run
+		/// </summary>
+		private void TestRunnerThreadProc()
+		{
+            try
+            {
+                results = new TestResult[] { runner.Run(this.listener, this.filter) };
+            }
+            catch (Exception ex)
+            {
+                throw new ApplicationException("Exception in TestRunnerThread", ex);
+            }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestSuite.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestSuite.cs
@@ -1,376 +1,376 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Collections;
-	using System.Reflection;
-	using NUnit.Core.Filters;
-
-	/// <summary>
-	/// Summary description for TestSuite.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class TestSuite : Test
-	{
-		#region Fields
-		/// <summary>
-		/// Our collection of child tests
-		/// </summary>
-		private ArrayList tests = new ArrayList();
-
-		/// <summary>
-		/// The fixture setup method for this suite
-		/// </summary>
-		protected MethodInfo fixtureSetUp;
-
-		/// <summary>
-		/// The fixture teardown method for this suite
-		/// </summary>
-		protected MethodInfo fixtureTearDown;
-
-		#endregion
-
-		#region Constructors
-		public TestSuite( string name ) 
-			: base( name ) { }
-
-		public TestSuite( string parentSuiteName, string name ) 
-			: base( parentSuiteName, name ) { }
-
-		public TestSuite( Type fixtureType )
-			: base( fixtureType ) { }
-		#endregion
-
-		#region Public Methods
-		public void Sort()
-		{
-			this.tests.Sort();
-
-			foreach( Test test in Tests )
-			{
-				TestSuite suite = test as TestSuite;
-				if ( suite != null )
-					suite.Sort();
-			}		
-		}
-
-		public void Sort(IComparer comparer)
-		{
-			this.tests.Sort(comparer);
-
-			foreach( Test test in Tests )
-			{
-				TestSuite suite = test as TestSuite;
-				if ( suite != null )
-					suite.Sort(comparer);
-			}
-		}
-
-		public void Add( Test test ) 
-		{
-//			if( test.RunState == RunState.Runnable )
-//			{
-//				test.RunState = this.RunState;
-//				test.IgnoreReason = this.IgnoreReason;
-//			}
-			test.Parent = this;
-			tests.Add(test);
-		}
-
-		public void Add( object fixture )
-		{
-			Test test = TestFixtureBuilder.BuildFrom( fixture );
-			if ( test != null )
-				Add( test );
-		}
-		#endregion
-
-		#region Properties
-		public override IList Tests 
-		{
-			get { return tests; }
-		}
-
-		public override bool IsSuite
-		{
-			get { return true; }
-		}
-
-		public override int TestCount
-		{
-			get
-			{
-				int count = 0;
-
-				foreach(Test test in Tests)
-				{
-					count += test.TestCount;
-				}
-				return count;
-			}
-		}
-		#endregion
-
-		#region Test Overrides
-		public override string TestType
-		{
-			get	{ return "Test Suite"; }
-		}
-
-		public override int CountTestCases(ITestFilter filter)
-		{
-			int count = 0;
-
-			if(filter.Pass(this)) 
-			{
-				foreach(Test test in Tests)
-				{
-					count += test.CountTestCases(filter);
-				}
-			}
-			return count;
-		}
-
-		public override TestResult Run(EventListener listener)
-		{
-			return Run( listener, TestFilter.Empty );
-		}
-
-		public override TestResult Run(EventListener listener, ITestFilter filter)
-		{
-			using( new TestContext() )
-			{
-				TestSuiteResult suiteResult = new TestSuiteResult( new TestInfo(this), TestName.Name);
-
-				listener.SuiteStarted( this.TestName );
-				long startTime = DateTime.Now.Ticks;
-
-				switch (this.RunState)
-				{
-					case RunState.Runnable:
-					case RunState.Explicit:
-						suiteResult.RunState = RunState.Executed;
-						DoOneTimeSetUp(suiteResult);
-						if ( suiteResult.IsFailure )
-							MarkTestsFailed(Tests, suiteResult, listener, filter);
-						else
-						{
-							try
-							{
-								RunAllTests(suiteResult, listener, filter);
-							}
-							finally
-							{
-								DoOneTimeTearDown(suiteResult);
-							}
-						}
-						break;
-
-					case RunState.Skipped:
-						suiteResult.Skip(this.IgnoreReason);
-						MarkTestsNotRun(Tests, RunState.Skipped, IgnoreReason, suiteResult, listener, filter);
-						break;
-
-					default:
-					case RunState.Ignored:
-					case RunState.NotRunnable:
-						suiteResult.Ignore(this.IgnoreReason);
-						MarkTestsNotRun(Tests, RunState.Ignored, IgnoreReason, suiteResult, listener, filter);
-						break;
-				}
-
-				long stopTime = DateTime.Now.Ticks;
-				double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;
-				suiteResult.Time = time;
-
-				listener.SuiteFinished(suiteResult);
-				return suiteResult;
-			}
-		}
-		#endregion
-
-		#region Virtual Methods
-        protected virtual void DoOneTimeSetUp(TestResult suiteResult)
-        {
-            if (FixtureType != null)
-            {
-                try
-                {
-                    if (Fixture == null) // In case TestFixture was created with fixture object
-						CreateUserFixture();
-
-                    if (this.Properties["_SETCULTURE"] != null)
-                        TestContext.CurrentCulture =
-                            new System.Globalization.CultureInfo((string)Properties["_SETCULTURE"]);
-
-                    if (this.fixtureSetUp != null)
-                        Reflect.InvokeMethod(fixtureSetUp, Fixture);
-                }
-                catch (Exception ex)
-                {
-                    if (ex is NUnitException || ex is System.Reflection.TargetInvocationException)
-                        ex = ex.InnerException;
-
-                    if (IsIgnoreException(ex))
-                    {
-                        this.RunState = RunState.Ignored;
-                        suiteResult.Ignore(ex.Message);
-                        suiteResult.StackTrace = ex.StackTrace;
-                        this.IgnoreReason = ex.Message;
-                    }
-                    else 
-                    {
-                        if (IsAssertException(ex))
-                            suiteResult.Failure(ex.Message, ex.StackTrace, FailureSite.SetUp);
-                        else
-                            suiteResult.Error(ex, FailureSite.SetUp);
-                    }
-                }
-            }
-        }
-
-		protected virtual void CreateUserFixture()
-		{
-			Fixture = Reflect.Construct(FixtureType);
-		}
-
-        protected virtual void DoOneTimeTearDown(TestResult suiteResult)
-        {
-            if ( this.Fixture != null)
-            {
-                try
-                {
-                    if (this.fixtureTearDown != null)
-                        Reflect.InvokeMethod(fixtureTearDown, Fixture);
-
-					IDisposable disposable = Fixture as IDisposable;
-					if (disposable != null)
-						disposable.Dispose();
-				}
-                catch (Exception ex)
-                {
-					// Error in TestFixtureTearDown or Dispose causes the
-					// suite to be marked as a failure, even if
-					// all the contained tests passed.
-					NUnitException nex = ex as NUnitException;
-					if (nex != null)
-						ex = nex.InnerException;
-
-
-					suiteResult.Failure(ex.Message, ex.StackTrace, FailureSite.TearDown);
-				}
-
-                this.Fixture = null;
-            }
-        }
-        
-        private void RunAllTests(
-			TestSuiteResult suiteResult, EventListener listener, ITestFilter filter )
-		{
-            foreach (Test test in ArrayList.Synchronized(Tests))
-            {
-                if (filter.Pass(test))
-                {
-                    RunState saveRunState = test.RunState;
-
-                    if (test.RunState == RunState.Runnable && this.RunState != RunState.Runnable && this.RunState != RunState.Explicit )
-                    {
-                        test.RunState = this.RunState;
-                        test.IgnoreReason = this.IgnoreReason;
-                    }
-
-                    TestResult result = test.Run(listener, filter);
-
-                    suiteResult.AddResult(result);
-
-                    if (saveRunState != test.RunState)
-                    {
-                        test.RunState = saveRunState;
-                        test.IgnoreReason = null;
-                    }
-                }
-            }
-		}
-
-        private void MarkTestsNotRun(
-            IList tests, RunState runState, string ignoreReason, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
-        {
-            foreach (Test test in ArrayList.Synchronized(tests))
-            {
-                if (filter.Pass(test))
-                    MarkTestNotRun(test, runState, ignoreReason, suiteResult, listener, filter);
-            }
-        }
-
-        private void MarkTestNotRun(
-            Test test, RunState runState, string ignoreReason, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
-        {
-            if (test is TestSuite)
-            {
-                listener.SuiteStarted(test.TestName);
-                TestSuiteResult result = new TestSuiteResult( new TestInfo(test), test.TestName.FullName);
-				result.NotRun( runState, ignoreReason, null );
-                MarkTestsNotRun(test.Tests, runState, ignoreReason, suiteResult, listener, filter);
-                suiteResult.AddResult(result);
-                listener.SuiteFinished(result);
-            }
-            else
-            {
-                listener.TestStarted(test.TestName);
-                TestCaseResult result = new TestCaseResult( new TestInfo(test) );
-                result.NotRun( runState, ignoreReason, null );
-                suiteResult.AddResult(result);
-                listener.TestFinished(result);
-            }
-        }
-
-        private void MarkTestsFailed(
-            IList tests, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
-        {
-            foreach (Test test in ArrayList.Synchronized(tests))
-                if (filter.Pass(test))
-                    MarkTestFailed(test, suiteResult, listener, filter);
-        }
-
-        private void MarkTestFailed(
-            Test test, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
-        {
-            if (test is TestSuite)
-            {
-                listener.SuiteStarted(test.TestName);
-                TestSuiteResult result = new TestSuiteResult( new TestInfo(test), test.TestName.FullName);
-				string msg = string.Format( "Parent SetUp failed in {0}", this.FixtureType.Name );
-				result.Failure(msg, null, FailureSite.Parent);
-                MarkTestsFailed(test.Tests, suiteResult, listener, filter);
-                suiteResult.AddResult(result);
-                listener.SuiteFinished(result);
-            }
-            else
-            {
-                listener.TestStarted(test.TestName);
-                TestCaseResult result = new TestCaseResult( new TestInfo(test) );
-				string msg = string.Format( "TestFixtureSetUp failed in {0}", this.FixtureType.Name );
-				result.Failure(msg, null, FailureSite.Parent);
-				suiteResult.AddResult(result);
-                listener.TestFinished(result);
-            }
-        }
-
-        protected virtual bool IsAssertException(Exception ex)
-		{
-            return ex.GetType().FullName == NUnitFramework.AssertException;
-		}
-
-		protected virtual bool IsIgnoreException(Exception ex)
-		{
-            return ex.GetType().FullName == NUnitFramework.IgnoreException;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Collections;
+	using System.Reflection;
+	using NUnit.Core.Filters;
+
+	/// <summary>
+	/// Summary description for TestSuite.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class TestSuite : Test
+	{
+		#region Fields
+		/// <summary>
+		/// Our collection of child tests
+		/// </summary>
+		private ArrayList tests = new ArrayList();
+
+		/// <summary>
+		/// The fixture setup method for this suite
+		/// </summary>
+		protected MethodInfo fixtureSetUp;
+
+		/// <summary>
+		/// The fixture teardown method for this suite
+		/// </summary>
+		protected MethodInfo fixtureTearDown;
+
+		#endregion
+
+		#region Constructors
+		public TestSuite( string name ) 
+			: base( name ) { }
+
+		public TestSuite( string parentSuiteName, string name ) 
+			: base( parentSuiteName, name ) { }
+
+		public TestSuite( Type fixtureType )
+			: base( fixtureType ) { }
+		#endregion
+
+		#region Public Methods
+		public void Sort()
+		{
+			this.tests.Sort();
+
+			foreach( Test test in Tests )
+			{
+				TestSuite suite = test as TestSuite;
+				if ( suite != null )
+					suite.Sort();
+			}		
+		}
+
+		public void Sort(IComparer comparer)
+		{
+			this.tests.Sort(comparer);
+
+			foreach( Test test in Tests )
+			{
+				TestSuite suite = test as TestSuite;
+				if ( suite != null )
+					suite.Sort(comparer);
+			}
+		}
+
+		public void Add( Test test ) 
+		{
+//			if( test.RunState == RunState.Runnable )
+//			{
+//				test.RunState = this.RunState;
+//				test.IgnoreReason = this.IgnoreReason;
+//			}
+			test.Parent = this;
+			tests.Add(test);
+		}
+
+		public void Add( object fixture )
+		{
+			Test test = TestFixtureBuilder.BuildFrom( fixture );
+			if ( test != null )
+				Add( test );
+		}
+		#endregion
+
+		#region Properties
+		public override IList Tests 
+		{
+			get { return tests; }
+		}
+
+		public override bool IsSuite
+		{
+			get { return true; }
+		}
+
+		public override int TestCount
+		{
+			get
+			{
+				int count = 0;
+
+				foreach(Test test in Tests)
+				{
+					count += test.TestCount;
+				}
+				return count;
+			}
+		}
+		#endregion
+
+		#region Test Overrides
+		public override string TestType
+		{
+			get	{ return "Test Suite"; }
+		}
+
+		public override int CountTestCases(ITestFilter filter)
+		{
+			int count = 0;
+
+			if(filter.Pass(this)) 
+			{
+				foreach(Test test in Tests)
+				{
+					count += test.CountTestCases(filter);
+				}
+			}
+			return count;
+		}
+
+		public override TestResult Run(EventListener listener)
+		{
+			return Run( listener, TestFilter.Empty );
+		}
+
+		public override TestResult Run(EventListener listener, ITestFilter filter)
+		{
+			using( new TestContext() )
+			{
+				TestSuiteResult suiteResult = new TestSuiteResult( new TestInfo(this), TestName.Name);
+
+				listener.SuiteStarted( this.TestName );
+				long startTime = DateTime.Now.Ticks;
+
+				switch (this.RunState)
+				{
+					case RunState.Runnable:
+					case RunState.Explicit:
+						suiteResult.RunState = RunState.Executed;
+						DoOneTimeSetUp(suiteResult);
+						if ( suiteResult.IsFailure )
+							MarkTestsFailed(Tests, suiteResult, listener, filter);
+						else
+						{
+							try
+							{
+								RunAllTests(suiteResult, listener, filter);
+							}
+							finally
+							{
+								DoOneTimeTearDown(suiteResult);
+							}
+						}
+						break;
+
+					case RunState.Skipped:
+						suiteResult.Skip(this.IgnoreReason);
+						MarkTestsNotRun(Tests, RunState.Skipped, IgnoreReason, suiteResult, listener, filter);
+						break;
+
+					default:
+					case RunState.Ignored:
+					case RunState.NotRunnable:
+						suiteResult.Ignore(this.IgnoreReason);
+						MarkTestsNotRun(Tests, RunState.Ignored, IgnoreReason, suiteResult, listener, filter);
+						break;
+				}
+
+				long stopTime = DateTime.Now.Ticks;
+				double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;
+				suiteResult.Time = time;
+
+				listener.SuiteFinished(suiteResult);
+				return suiteResult;
+			}
+		}
+		#endregion
+
+		#region Virtual Methods
+        protected virtual void DoOneTimeSetUp(TestResult suiteResult)
+        {
+            if (FixtureType != null)
+            {
+                try
+                {
+                    if (Fixture == null) // In case TestFixture was created with fixture object
+						CreateUserFixture();
+
+                    if (this.Properties["_SETCULTURE"] != null)
+                        TestContext.CurrentCulture =
+                            new System.Globalization.CultureInfo((string)Properties["_SETCULTURE"]);
+
+                    if (this.fixtureSetUp != null)
+                        Reflect.InvokeMethod(fixtureSetUp, Fixture);
+                }
+                catch (Exception ex)
+                {
+                    if (ex is NUnitException || ex is System.Reflection.TargetInvocationException)
+                        ex = ex.InnerException;
+
+                    if (IsIgnoreException(ex))
+                    {
+                        this.RunState = RunState.Ignored;
+                        suiteResult.Ignore(ex.Message);
+                        suiteResult.StackTrace = ex.StackTrace;
+                        this.IgnoreReason = ex.Message;
+                    }
+                    else 
+                    {
+                        if (IsAssertException(ex))
+                            suiteResult.Failure(ex.Message, ex.StackTrace, FailureSite.SetUp);
+                        else
+                            suiteResult.Error(ex, FailureSite.SetUp);
+                    }
+                }
+            }
+        }
+
+		protected virtual void CreateUserFixture()
+		{
+			Fixture = Reflect.Construct(FixtureType);
+		}
+
+        protected virtual void DoOneTimeTearDown(TestResult suiteResult)
+        {
+            if ( this.Fixture != null)
+            {
+                try
+                {
+                    if (this.fixtureTearDown != null)
+                        Reflect.InvokeMethod(fixtureTearDown, Fixture);
+
+					IDisposable disposable = Fixture as IDisposable;
+					if (disposable != null)
+						disposable.Dispose();
+				}
+                catch (Exception ex)
+                {
+					// Error in TestFixtureTearDown or Dispose causes the
+					// suite to be marked as a failure, even if
+					// all the contained tests passed.
+					NUnitException nex = ex as NUnitException;
+					if (nex != null)
+						ex = nex.InnerException;
+
+
+					suiteResult.Failure(ex.Message, ex.StackTrace, FailureSite.TearDown);
+				}
+
+                this.Fixture = null;
+            }
+        }
+        
+        private void RunAllTests(
+			TestSuiteResult suiteResult, EventListener listener, ITestFilter filter )
+		{
+            foreach (Test test in ArrayList.Synchronized(Tests))
+            {
+                if (filter.Pass(test))
+                {
+                    RunState saveRunState = test.RunState;
+
+                    if (test.RunState == RunState.Runnable && this.RunState != RunState.Runnable && this.RunState != RunState.Explicit )
+                    {
+                        test.RunState = this.RunState;
+                        test.IgnoreReason = this.IgnoreReason;
+                    }
+
+                    TestResult result = test.Run(listener, filter);
+
+                    suiteResult.AddResult(result);
+
+                    if (saveRunState != test.RunState)
+                    {
+                        test.RunState = saveRunState;
+                        test.IgnoreReason = null;
+                    }
+                }
+            }
+		}
+
+        private void MarkTestsNotRun(
+            IList tests, RunState runState, string ignoreReason, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
+        {
+            foreach (Test test in ArrayList.Synchronized(tests))
+            {
+                if (filter.Pass(test))
+                    MarkTestNotRun(test, runState, ignoreReason, suiteResult, listener, filter);
+            }
+        }
+
+        private void MarkTestNotRun(
+            Test test, RunState runState, string ignoreReason, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
+        {
+            if (test is TestSuite)
+            {
+                listener.SuiteStarted(test.TestName);
+                TestSuiteResult result = new TestSuiteResult( new TestInfo(test), test.TestName.FullName);
+				result.NotRun( runState, ignoreReason, null );
+                MarkTestsNotRun(test.Tests, runState, ignoreReason, suiteResult, listener, filter);
+                suiteResult.AddResult(result);
+                listener.SuiteFinished(result);
+            }
+            else
+            {
+                listener.TestStarted(test.TestName);
+                TestCaseResult result = new TestCaseResult( new TestInfo(test) );
+                result.NotRun( runState, ignoreReason, null );
+                suiteResult.AddResult(result);
+                listener.TestFinished(result);
+            }
+        }
+
+        private void MarkTestsFailed(
+            IList tests, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
+        {
+            foreach (Test test in ArrayList.Synchronized(tests))
+                if (filter.Pass(test))
+                    MarkTestFailed(test, suiteResult, listener, filter);
+        }
+
+        private void MarkTestFailed(
+            Test test, TestSuiteResult suiteResult, EventListener listener, ITestFilter filter)
+        {
+            if (test is TestSuite)
+            {
+                listener.SuiteStarted(test.TestName);
+                TestSuiteResult result = new TestSuiteResult( new TestInfo(test), test.TestName.FullName);
+				string msg = string.Format( "Parent SetUp failed in {0}", this.FixtureType.Name );
+				result.Failure(msg, null, FailureSite.Parent);
+                MarkTestsFailed(test.Tests, suiteResult, listener, filter);
+                suiteResult.AddResult(result);
+                listener.SuiteFinished(result);
+            }
+            else
+            {
+                listener.TestStarted(test.TestName);
+                TestCaseResult result = new TestCaseResult( new TestInfo(test) );
+				string msg = string.Format( "TestFixtureSetUp failed in {0}", this.FixtureType.Name );
+				result.Failure(msg, null, FailureSite.Parent);
+				suiteResult.AddResult(result);
+                listener.TestFinished(result);
+            }
+        }
+
+        protected virtual bool IsAssertException(Exception ex)
+		{
+            return ex.GetType().FullName == NUnitFramework.AssertException;
+		}
+
+		protected virtual bool IsIgnoreException(Exception ex)
+		{
+            return ex.GetType().FullName == NUnitFramework.IgnoreException;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TestSuiteBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TestSuiteBuilder.cs
@@ -1,125 +1,125 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using NUnit.Core.Builders;
-	using System.Collections;
-	using System.Reflection;
-
-	/// <summary>
-	/// This is the master suite builder for NUnit. It builds a test suite from
-	/// one or more assemblies using a list of internal and external suite builders 
-	/// to create fixtures from the qualified types in each assembly. It implements
-	/// the ISuiteBuilder interface itself, allowing it to be used by other classes
-	/// for queries and suite construction.
-	/// </summary>D:\Dev\NUnit\nunit20\src\NUnitFramework\core\TestBuilderAttribute.cs
-	public class TestSuiteBuilder
-	{
-		#region Instance Variables
-
-		private ArrayList builders = new ArrayList();
-
-		#endregion
-
-		#region Properties
-		public IList Assemblies
-		{
-			get 
-			{
-				ArrayList assemblies = new ArrayList();
-				foreach( TestAssemblyBuilder builder in builders )
-					assemblies.Add( builder.Assembly );
-				return assemblies; 
-			}
-		}
-
-		public IList AssemblyInfo
-		{
-			get
-			{
-				ArrayList info = new ArrayList();
-				foreach( TestAssemblyBuilder builder in this.builders )
-					info.Add( builder.AssemblyInfo );
-
-				return info;
-			}
-		}
-		#endregion
-
-		#region Build Methods
-		/// <summary>
-		/// Build a suite based on a TestPackage
-		/// </summary>
-		/// <param name="package">The TestPackage</param>
-		/// <returns>A TestSuite</returns>
-		public TestSuite Build( TestPackage package )
-		{
-			bool autoNamespaceSuites = package.GetSetting( "AutoNamespaceSuites", true );
-			bool mergeAssemblies = package.GetSetting( "MergeAssemblies", false );
-
-			if ( package.IsSingleAssembly )
-				return BuildSingleAssembly( package );
-			string targetAssemblyName = null;
-			if( package.TestName != null && package.Assemblies.Contains( package.TestName ) )
-			{
-				targetAssemblyName = package.TestName;
-				package.TestName = null;
-			}
-			
-			TestSuite rootSuite = new TestSuite( package.FullName );
-			NamespaceTreeBuilder namespaceTree = 
-				new NamespaceTreeBuilder( rootSuite );
-
-			builders.Clear();
-			foreach(string assemblyName in package.Assemblies)
-			{
-				if ( targetAssemblyName == null || targetAssemblyName == assemblyName )
-				{
-					TestAssemblyBuilder builder = new TestAssemblyBuilder();
-					builders.Add( builder );
-
-					Test testAssembly =  builder.Build( assemblyName, package.TestName, autoNamespaceSuites && !mergeAssemblies );
-
-					if ( testAssembly != null )
-					{
-						if (!mergeAssemblies)
-						{
-							rootSuite.Add(testAssembly);
-						}
-						else if (autoNamespaceSuites)
-						{
-							namespaceTree.Add(testAssembly.Tests);
-							rootSuite = namespaceTree.RootSuite;
-						}
-						else
-						{
-							foreach (Test test in testAssembly.Tests)
-								rootSuite.Add(test);
-						}
-					}
-				}
-			}
-
-			if ( rootSuite.Tests.Count == 0 )
-				return null;
-
-			return rootSuite;
-		}
-
-		private TestSuite BuildSingleAssembly( TestPackage package )
-		{
-			TestAssemblyBuilder builder = new TestAssemblyBuilder();
-			builders.Clear();
-			builders.Add( builder );
-
-			return (TestSuite)builder.Build( 
-				package.FullName, 
-				package.TestName, package.GetSetting( "AutoNamespaceSuites", true ) );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using NUnit.Core.Builders;
+	using System.Collections;
+	using System.Reflection;
+
+	/// <summary>
+	/// This is the master suite builder for NUnit. It builds a test suite from
+	/// one or more assemblies using a list of internal and external suite builders 
+	/// to create fixtures from the qualified types in each assembly. It implements
+	/// the ISuiteBuilder interface itself, allowing it to be used by other classes
+	/// for queries and suite construction.
+	/// </summary>D:\Dev\NUnit\nunit20\src\NUnitFramework\core\TestBuilderAttribute.cs
+	public class TestSuiteBuilder
+	{
+		#region Instance Variables
+
+		private ArrayList builders = new ArrayList();
+
+		#endregion
+
+		#region Properties
+		public IList Assemblies
+		{
+			get 
+			{
+				ArrayList assemblies = new ArrayList();
+				foreach( TestAssemblyBuilder builder in builders )
+					assemblies.Add( builder.Assembly );
+				return assemblies; 
+			}
+		}
+
+		public IList AssemblyInfo
+		{
+			get
+			{
+				ArrayList info = new ArrayList();
+				foreach( TestAssemblyBuilder builder in this.builders )
+					info.Add( builder.AssemblyInfo );
+
+				return info;
+			}
+		}
+		#endregion
+
+		#region Build Methods
+		/// <summary>
+		/// Build a suite based on a TestPackage
+		/// </summary>
+		/// <param name="package">The TestPackage</param>
+		/// <returns>A TestSuite</returns>
+		public TestSuite Build( TestPackage package )
+		{
+			bool autoNamespaceSuites = package.GetSetting( "AutoNamespaceSuites", true );
+			bool mergeAssemblies = package.GetSetting( "MergeAssemblies", false );
+
+			if ( package.IsSingleAssembly )
+				return BuildSingleAssembly( package );
+			string targetAssemblyName = null;
+			if( package.TestName != null && package.Assemblies.Contains( package.TestName ) )
+			{
+				targetAssemblyName = package.TestName;
+				package.TestName = null;
+			}
+			
+			TestSuite rootSuite = new TestSuite( package.FullName );
+			NamespaceTreeBuilder namespaceTree = 
+				new NamespaceTreeBuilder( rootSuite );
+
+			builders.Clear();
+			foreach(string assemblyName in package.Assemblies)
+			{
+				if ( targetAssemblyName == null || targetAssemblyName == assemblyName )
+				{
+					TestAssemblyBuilder builder = new TestAssemblyBuilder();
+					builders.Add( builder );
+
+					Test testAssembly =  builder.Build( assemblyName, package.TestName, autoNamespaceSuites && !mergeAssemblies );
+
+					if ( testAssembly != null )
+					{
+						if (!mergeAssemblies)
+						{
+							rootSuite.Add(testAssembly);
+						}
+						else if (autoNamespaceSuites)
+						{
+							namespaceTree.Add(testAssembly.Tests);
+							rootSuite = namespaceTree.RootSuite;
+						}
+						else
+						{
+							foreach (Test test in testAssembly.Tests)
+								rootSuite.Add(test);
+						}
+					}
+				}
+			}
+
+			if ( rootSuite.Tests.Count == 0 )
+				return null;
+
+			return rootSuite;
+		}
+
+		private TestSuite BuildSingleAssembly( TestPackage package )
+		{
+			TestAssemblyBuilder builder = new TestAssemblyBuilder();
+			builders.Clear();
+			builders.Add( builder );
+
+			return (TestSuite)builder.Build( 
+				package.FullName, 
+				package.TestName, package.GetSetting( "AutoNamespaceSuites", true ) );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/TextCapture.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/TextCapture.cs
@@ -1,95 +1,95 @@
-// ****************************************************************
-// Copyright 2008, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System.IO;
-
-namespace NUnit.Core
-{
-    /// <summary>
-    /// Abstract base for classes that capture text output
-    /// and redirect it to a TextWriter.
-    /// </summary>
-    public abstract class TextCapture
-    {
-        #region Private Fields
-        /// <summary>
-        /// True if capture is enabled
-        /// </summary>
-        private bool enabled;
-
-        /// <summary>
-        /// The TextWriter to which text is redirected
-        /// </summary>
-        private TextWriter writer;
-        #endregion
-
-        #region Properties
-        /// <summary>
-        /// The TextWriter to which text is redirected
-        /// </summary>
-        public TextWriter Writer
-        {
-            get { return writer; }
-            set
-            {
-                writer = value;
-
-                if (writer != null && enabled)
-                    StartCapture();
-            }
-        }
-
-        /// <summary>
-        /// Controls whether text is captured or not
-        /// </summary>
-        public bool Enabled
-        {
-            get { return enabled; }
-            set
-            {
-                if (enabled != value)
-                {
-                    if (writer != null && enabled)
-                        StopCapture();
-
-                    enabled = value;
-
-                    if (writer != null && enabled && DefaultThreshold != "Off")
-                        StartCapture();
-                }
-            }
-        }
-
-        /// <summary>
-        /// Returns the default threshold value, which represents
-        /// the degree of verbosity of the output text stream.
-        /// Returns "None" in the base class. Derived classes that
-        /// support verbosity levels should override it.
-        /// </summary>
-        public virtual string DefaultThreshold
-        {
-            get { return "None"; }
-        }
-        #endregion
-
-        #region Abstract Members
-        /// <summary>
-        /// Override this to perform whatever actions are needed
-        /// to start capturing text and sending it to the Writer.
-        /// </summary>
-        protected abstract void StartCapture();
-
-        /// <summary>
-        /// Override this to perform whatever actions are needed
-        /// to flush remaining output and stop capturing text.
-        /// The Writer should not be changed, allowing capture
-        /// to be restarted at a future point.
-        /// </summary>
-        protected abstract void StopCapture();
-        #endregion
-    }
-
-}
+// ****************************************************************
+// Copyright 2008, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System.IO;
+
+namespace NUnit.Core
+{
+    /// <summary>
+    /// Abstract base for classes that capture text output
+    /// and redirect it to a TextWriter.
+    /// </summary>
+    public abstract class TextCapture
+    {
+        #region Private Fields
+        /// <summary>
+        /// True if capture is enabled
+        /// </summary>
+        private bool enabled;
+
+        /// <summary>
+        /// The TextWriter to which text is redirected
+        /// </summary>
+        private TextWriter writer;
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// The TextWriter to which text is redirected
+        /// </summary>
+        public TextWriter Writer
+        {
+            get { return writer; }
+            set
+            {
+                writer = value;
+
+                if (writer != null && enabled)
+                    StartCapture();
+            }
+        }
+
+        /// <summary>
+        /// Controls whether text is captured or not
+        /// </summary>
+        public bool Enabled
+        {
+            get { return enabled; }
+            set
+            {
+                if (enabled != value)
+                {
+                    if (writer != null && enabled)
+                        StopCapture();
+
+                    enabled = value;
+
+                    if (writer != null && enabled && DefaultThreshold != "Off")
+                        StartCapture();
+                }
+            }
+        }
+
+        /// <summary>
+        /// Returns the default threshold value, which represents
+        /// the degree of verbosity of the output text stream.
+        /// Returns "None" in the base class. Derived classes that
+        /// support verbosity levels should override it.
+        /// </summary>
+        public virtual string DefaultThreshold
+        {
+            get { return "None"; }
+        }
+        #endregion
+
+        #region Abstract Members
+        /// <summary>
+        /// Override this to perform whatever actions are needed
+        /// to start capturing text and sending it to the Writer.
+        /// </summary>
+        protected abstract void StartCapture();
+
+        /// <summary>
+        /// Override this to perform whatever actions are needed
+        /// to flush remaining output and stop capturing text.
+        /// The Writer should not be changed, allowing capture
+        /// to be restarted at a future point.
+        /// </summary>
+        protected abstract void StopCapture();
+        #endregion
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/ThreadedTestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/ThreadedTestRunner.cs
@@ -1,74 +1,74 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-namespace NUnit.Core
-{
-	using System;
-	using System.Threading;
-	using System.Collections.Specialized;
-
-	/// <summary>
-	/// ThreadedTestRunner overrides the Run and BeginRun methods 
-	/// so that they are always run on a separate thread. The actual
-	/// </summary>
-	public class ThreadedTestRunner : ProxyTestRunner
-	{
-		#region Instance Variables
-		private TestRunnerThread testRunnerThread;
-		#endregion
-
-		#region Constructors
-		public ThreadedTestRunner( TestRunner testRunner ) : base ( testRunner ) { }
-		#endregion
-
-		#region Overrides
-		public override TestResult Run( EventListener listener )
-		{
-			BeginRun( listener );
-			return EndRun();
-		}
-
-		public override TestResult Run( EventListener listener, ITestFilter filter )
-		{
-			BeginRun( listener, filter );
-			return EndRun();
-		}
-
-		public override void BeginRun( EventListener listener )
-		{
-			testRunnerThread = new TestRunnerThread( this.TestRunner );
-
-			testRunnerThread.StartRun( listener );
-		}
-
-		public override void BeginRun( EventListener listener, ITestFilter filter )
-		{
-			testRunnerThread = new TestRunnerThread( this.TestRunner );
-
-			testRunnerThread.StartRun( listener, filter );
-		}
-
-		public override TestResult EndRun()
-		{
-			this.Wait();
-			return this.TestRunner.TestResult;
-		}
-
-
-		public override void Wait()
-		{
-			if ( testRunnerThread != null )
-				testRunnerThread.Wait();
-		}
-
-		public override void CancelRun()
-		{
-			if ( testRunnerThread != null )
-				testRunnerThread.Cancel();
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+namespace NUnit.Core
+{
+	using System;
+	using System.Threading;
+	using System.Collections.Specialized;
+
+	/// <summary>
+	/// ThreadedTestRunner overrides the Run and BeginRun methods 
+	/// so that they are always run on a separate thread. The actual
+	/// </summary>
+	public class ThreadedTestRunner : ProxyTestRunner
+	{
+		#region Instance Variables
+		private TestRunnerThread testRunnerThread;
+		#endregion
+
+		#region Constructors
+		public ThreadedTestRunner( TestRunner testRunner ) : base ( testRunner ) { }
+		#endregion
+
+		#region Overrides
+		public override TestResult Run( EventListener listener )
+		{
+			BeginRun( listener );
+			return EndRun();
+		}
+
+		public override TestResult Run( EventListener listener, ITestFilter filter )
+		{
+			BeginRun( listener, filter );
+			return EndRun();
+		}
+
+		public override void BeginRun( EventListener listener )
+		{
+			testRunnerThread = new TestRunnerThread( this.TestRunner );
+
+			testRunnerThread.StartRun( listener );
+		}
+
+		public override void BeginRun( EventListener listener, ITestFilter filter )
+		{
+			testRunnerThread = new TestRunnerThread( this.TestRunner );
+
+			testRunnerThread.StartRun( listener, filter );
+		}
+
+		public override TestResult EndRun()
+		{
+			this.Wait();
+			return this.TestRunner.TestResult;
+		}
+
+
+		public override void Wait()
+		{
+			if ( testRunnerThread != null )
+				testRunnerThread.Wait();
+		}
+
+		public override void CancelRun()
+		{
+			if ( testRunnerThread != null )
+				testRunnerThread.Cancel();
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/nunit.core.dll.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/nunit.core.dll.csproj
@@ -1,429 +1,429 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit.core"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.Core"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "E:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "E:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "E:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-                <Reference
-                    Name = "nunit.core.interfaces.dll"
-                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AbstractTestCaseDecoration.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssemblyReader.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssemblyResolver.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "BabysitterSupport.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CoreExtensions.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CultureDetector.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "DirectorySwapper.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "EventListenerTextWriter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "EventPump.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "EventQueue.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ExtensionHost.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ExtensionPoint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IgnoreDecorator.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "InvalidSuiteException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "InvalidTestFixtureException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "LegacySuite.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Log4NetCapture.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "LogCapture.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NamespaceTreeBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NoTestFixturesException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NotRunnableTestCase.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NTrace.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NullListener.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NUnitException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NUnitFramework.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NUnitTestFixture.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "NUnitTestMethod.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "PlatformHelper.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ProxyTestRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "QueuingEventListener.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Reflect.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RemoteTestRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Results.xsd"
-                    BuildAction = "Content"
-                />
-                <File
-                    RelPath = "Results.xsx"
-                    DependentUpon = "Results.xsd"
-                    BuildAction = "None"
-                />
-                <File
-                    RelPath = "SetUpFixture.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SimpleTestRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "StringTextWriter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SuiteBuilderAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Summary.xslt"
-                    BuildAction = "Content"
-                />
-                <File
-                    RelPath = "TestBuilderAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestCase.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestCaseBuilderAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestContext.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestDecoratorAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestFixture.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestFixtureBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestMethod.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestRunnerThread.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestSuite.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestSuiteBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TextCapture.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ThreadUtility.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ThreadedTestRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Builders\AbstractFixtureBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Builders\AbstractTestCaseBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Builders\LegacySuiteBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Builders\NUnitTestCaseBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Builders\NUnitTestFixtureBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Builders\SetUpFixtureBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Builders\TestAssemblyBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\EventListenerCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\FrameworkRegistry.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\SuiteBuilderCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\TestCaseBuilderCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\TestDecoratorCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit.core"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.Core"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "E:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "E:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "E:\WINNT\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+                <Reference
+                    Name = "nunit.core.interfaces.dll"
+                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AbstractTestCaseDecoration.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssemblyReader.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssemblyResolver.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "BabysitterSupport.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CoreExtensions.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CultureDetector.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "DirectorySwapper.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "EventListenerTextWriter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "EventPump.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "EventQueue.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ExtensionHost.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ExtensionPoint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IgnoreDecorator.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "InvalidSuiteException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "InvalidTestFixtureException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "LegacySuite.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Log4NetCapture.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "LogCapture.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NamespaceTreeBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NoTestFixturesException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NotRunnableTestCase.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NTrace.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NullListener.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NUnitException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NUnitFramework.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NUnitTestFixture.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "NUnitTestMethod.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "PlatformHelper.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ProxyTestRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "QueuingEventListener.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Reflect.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RemoteTestRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Results.xsd"
+                    BuildAction = "Content"
+                />
+                <File
+                    RelPath = "Results.xsx"
+                    DependentUpon = "Results.xsd"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "SetUpFixture.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SimpleTestRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "StringTextWriter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SuiteBuilderAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Summary.xslt"
+                    BuildAction = "Content"
+                />
+                <File
+                    RelPath = "TestBuilderAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestCase.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestCaseBuilderAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestContext.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestDecoratorAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestFixture.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestFixtureBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestMethod.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestRunnerThread.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestSuite.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestSuiteBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TextCapture.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ThreadUtility.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ThreadedTestRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Builders\AbstractFixtureBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Builders\AbstractTestCaseBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Builders\LegacySuiteBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Builders\NUnitTestCaseBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Builders\NUnitTestFixtureBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Builders\SetUpFixtureBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Builders\TestAssemblyBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\EventListenerCollection.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\FrameworkRegistry.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\SuiteBuilderCollection.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\TestCaseBuilderCollection.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\TestDecoratorCollection.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/core/nunit.core.dll_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/core/nunit.core.dll_VS2005.csproj
@@ -1,225 +1,225 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.core</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Core</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <SignAssembly>false</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <Optimize>true</Optimize>
-    <NoWarn>618,1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <NoWarn>618,1699</NoWarn>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AbstractTestCaseDecoration.cs" />
-    <Compile Include="AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="AssemblyReader.cs" />
-    <Compile Include="AssemblyResolver.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="BabysitterSupport.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="CoreExtensions.cs" />
-    <Compile Include="CultureDetector.cs" />
-    <Compile Include="ExtensionPoint.cs" />
-    <Compile Include="Log4NetCapture.cs" />
-    <Compile Include="LogCapture.cs" />
-    <Compile Include="NTrace.cs" />
-    <Compile Include="ProxyTestRunner.cs" />
-    <Compile Include="DirectorySwapper.cs" />
-    <Compile Include="EventListenerTextWriter.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="EventPump.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="EventQueue.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Extensibility\EventListenerCollection.cs" />
-    <Compile Include="Extensibility\FrameworkRegistry.cs" />
-    <Compile Include="Extensibility\SuiteBuilderCollection.cs" />
-    <Compile Include="Extensibility\TestCaseBuilderCollection.cs" />
-    <Compile Include="Extensibility\TestDecoratorCollection.cs" />
-    <Compile Include="ExtensionHost.cs" />
-    <Compile Include="IgnoreDecorator.cs" />
-    <Compile Include="InvalidSuiteException.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="InvalidTestFixtureException.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="LegacySuite.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NamespaceTreeBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NoTestFixturesException.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NotRunnableTestCase.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NullListener.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NUnitException.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NUnitFramework.cs" />
-    <Compile Include="NUnitTestFixture.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="NUnitTestMethod.cs" />
-    <Compile Include="PlatformHelper.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="QueuingEventListener.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Reflect.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="RemoteTestRunner.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="SetUpFixture.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="SimpleTestRunner.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="StringTextWriter.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="SuiteBuilderAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestBuilderAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestCase.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestCaseBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestCaseBuilderAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestContext.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestDecoratorAttribute.cs" />
-    <Compile Include="TestFixture.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestFixtureBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestMethod.cs" />
-    <Compile Include="TestRunnerThread.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestSuite.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestSuiteBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TextCapture.cs" />
-    <Compile Include="ThreadUtility.cs" />
-    <Compile Include="ThreadedTestRunner.cs" />
-    <Compile Include="Builders\AbstractFixtureBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Builders\AbstractTestCaseBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Builders\LegacySuiteBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Builders\NUnitTestCaseBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Builders\NUnitTestFixtureBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Builders\SetUpFixtureBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Builders\TestAssemblyBuilder.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Content Include="Results.xsd">
-      <SubType>Designer</SubType>
-    </Content>
-    <Content Include="Summary.xslt" />
-    <None Include="Results.xsx">
-      <DependentUpon>Results.xsd</DependentUpon>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
-      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
-      <Name>nunit.core.interfaces.dll_VS2005</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
-</Project>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.core</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Core</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <SignAssembly>false</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <Optimize>true</Optimize>
+    <NoWarn>618,1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <NoWarn>618,1699</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AbstractTestCaseDecoration.cs" />
+    <Compile Include="AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssemblyReader.cs" />
+    <Compile Include="AssemblyResolver.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="BabysitterSupport.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="CoreExtensions.cs" />
+    <Compile Include="CultureDetector.cs" />
+    <Compile Include="ExtensionPoint.cs" />
+    <Compile Include="Log4NetCapture.cs" />
+    <Compile Include="LogCapture.cs" />
+    <Compile Include="NTrace.cs" />
+    <Compile Include="ProxyTestRunner.cs" />
+    <Compile Include="DirectorySwapper.cs" />
+    <Compile Include="EventListenerTextWriter.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="EventPump.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="EventQueue.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Extensibility\EventListenerCollection.cs" />
+    <Compile Include="Extensibility\FrameworkRegistry.cs" />
+    <Compile Include="Extensibility\SuiteBuilderCollection.cs" />
+    <Compile Include="Extensibility\TestCaseBuilderCollection.cs" />
+    <Compile Include="Extensibility\TestDecoratorCollection.cs" />
+    <Compile Include="ExtensionHost.cs" />
+    <Compile Include="IgnoreDecorator.cs" />
+    <Compile Include="InvalidSuiteException.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="InvalidTestFixtureException.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="LegacySuite.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NamespaceTreeBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NoTestFixturesException.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NotRunnableTestCase.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NullListener.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NUnitException.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NUnitFramework.cs" />
+    <Compile Include="NUnitTestFixture.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="NUnitTestMethod.cs" />
+    <Compile Include="PlatformHelper.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="QueuingEventListener.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Reflect.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RemoteTestRunner.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="SetUpFixture.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="SimpleTestRunner.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="StringTextWriter.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="SuiteBuilderAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestBuilderAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestCase.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestCaseBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestCaseBuilderAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestContext.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestDecoratorAttribute.cs" />
+    <Compile Include="TestFixture.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestFixtureBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestMethod.cs" />
+    <Compile Include="TestRunnerThread.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestSuite.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestSuiteBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TextCapture.cs" />
+    <Compile Include="ThreadUtility.cs" />
+    <Compile Include="ThreadedTestRunner.cs" />
+    <Compile Include="Builders\AbstractFixtureBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Builders\AbstractTestCaseBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Builders\LegacySuiteBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Builders\NUnitTestCaseBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Builders\NUnitTestFixtureBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Builders\SetUpFixtureBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Builders\TestAssemblyBuilder.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Content Include="Results.xsd">
+      <SubType>Designer</SubType>
+    </Content>
+    <Content Include="Summary.xslt" />
+    <None Include="Results.xsx">
+      <DependentUpon>Results.xsd</DependentUpon>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
+      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
+      <Name>nunit.core.interfaces.dll_VS2005</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+</Project>
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/AssemblyInfo.cs
@@ -1,14 +1,14 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-[assembly: CLSCompliant(true)]
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+[assembly: CLSCompliant(true)]
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/EventListener.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/EventListener.cs
@@ -1,75 +1,75 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-
-	/// <summary>
-	/// The EventListener interface is used within the NUnit core to receive 
-	/// notifications of significant events while a test is being run. These
-	/// events are propogated to any client, which may choose to convert them
-	/// to .NET events or to use them directly.
-	/// </summary>
-	public interface EventListener
-	{
-		/// <summary>
-		/// Called when a test run is starting
-		/// </summary>
-		/// <param name="name">The name of the test being started</param>
-		/// <param name="testCount">The number of test cases under this test</param>
-		void RunStarted( string name, int testCount );
-
-		/// <summary>
-		/// Called when a run finishes normally
-		/// </summary>
-		/// <param name="result">The result of the test</param>
-		void RunFinished( TestResult result );
-
-		/// <summary>
-		/// Called when a run is terminated due to an exception
-		/// </summary>
-		/// <param name="exception">Exception that was thrown</param>
-		void RunFinished( Exception exception );
-
-		/// <summary>
-		/// Called when a test case is starting
-		/// </summary>
-		/// <param name="testName">The name of the test case</param>
-		void TestStarted(TestName testName);
-			
-		/// <summary>
-		/// Called when a test case has finished
-		/// </summary>
-		/// <param name="result">The result of the test</param>
-		void TestFinished(TestCaseResult result);
-
-		/// <summary>
-		/// Called when a suite is starting
-		/// </summary>
-		/// <param name="testName">The name of the suite</param>
-		void SuiteStarted(TestName testName);
-
-		/// <summary>
-		/// Called when a suite has finished
-		/// </summary>
-		/// <param name="result">The result of the suite</param>
-		void SuiteFinished(TestSuiteResult result);
-
-		/// <summary>
-		/// Called when an unhandled exception is detected during
-		/// the execution of a test run.
-		/// </summary>
-		/// <param name="exception">The exception thta was detected</param>
-		void UnhandledException( Exception exception );
-
-		/// <summary>
-		/// Called when the test direts output to the console.
-		/// </summary>
-		/// <param name="testOutput">A console message</param>
-		void TestOutput(TestOutput testOutput);
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+
+	/// <summary>
+	/// The EventListener interface is used within the NUnit core to receive 
+	/// notifications of significant events while a test is being run. These
+	/// events are propogated to any client, which may choose to convert them
+	/// to .NET events or to use them directly.
+	/// </summary>
+	public interface EventListener
+	{
+		/// <summary>
+		/// Called when a test run is starting
+		/// </summary>
+		/// <param name="name">The name of the test being started</param>
+		/// <param name="testCount">The number of test cases under this test</param>
+		void RunStarted( string name, int testCount );
+
+		/// <summary>
+		/// Called when a run finishes normally
+		/// </summary>
+		/// <param name="result">The result of the test</param>
+		void RunFinished( TestResult result );
+
+		/// <summary>
+		/// Called when a run is terminated due to an exception
+		/// </summary>
+		/// <param name="exception">Exception that was thrown</param>
+		void RunFinished( Exception exception );
+
+		/// <summary>
+		/// Called when a test case is starting
+		/// </summary>
+		/// <param name="testName">The name of the test case</param>
+		void TestStarted(TestName testName);
+			
+		/// <summary>
+		/// Called when a test case has finished
+		/// </summary>
+		/// <param name="result">The result of the test</param>
+		void TestFinished(TestCaseResult result);
+
+		/// <summary>
+		/// Called when a suite is starting
+		/// </summary>
+		/// <param name="testName">The name of the suite</param>
+		void SuiteStarted(TestName testName);
+
+		/// <summary>
+		/// Called when a suite has finished
+		/// </summary>
+		/// <param name="result">The result of the suite</param>
+		void SuiteFinished(TestSuiteResult result);
+
+		/// <summary>
+		/// Called when an unhandled exception is detected during
+		/// the execution of a test run.
+		/// </summary>
+		/// <param name="exception">The exception thta was detected</param>
+		void UnhandledException( Exception exception );
+
+		/// <summary>
+		/// Called when the test direts output to the console.
+		/// </summary>
+		/// <param name="testOutput">A console message</param>
+		void TestOutput(TestOutput testOutput);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/Addin.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/Addin.cs
@@ -1,110 +1,110 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The Addin class holds information about an addin.
-	/// </summary>
-	[Serializable]
-	public class Addin
-	{
-		#region Private Fields
-		private string typeName;
-		private string name;
-		private string description;
-		private ExtensionType extensionType;
-		private AddinStatus status;
-		private string message;
-		#endregion
-
-		#region Constructor
-		/// <summary>
-		/// Construct an Addin for a type.
-		/// </summary>
-		/// <param name="type">The type to be used</param>
-		public Addin( Type type )
-		{
-			this.typeName = type.AssemblyQualifiedName;
-
-			object[] attrs = type.GetCustomAttributes( typeof(NUnitAddinAttribute), false );
-			if ( attrs.Length == 1 )
-			{
-				NUnitAddinAttribute attr = (NUnitAddinAttribute)attrs[0];
-				this.name = attr.Name;
-				this.description = attr.Description;
-				this.extensionType = attr.Type;
-			}
-
-			if ( this.name == null )
-				this.name = type.Name;
-
-			if ( this.extensionType == 0 )
-				this.extensionType = ExtensionType.Core;
-
-			this.status = AddinStatus.Enabled;
-        }
-		#endregion
-
-		#region Properties
-		/// <summary>
-		/// The name of the Addin
-		/// </summary>
-		public string Name
-		{
-			get { return name; }
-		}
-
-		/// <summary>
-		/// Brief description of what the Addin does
-		/// </summary>
-		public string Description
-		{
-			get { return description; }
-		}
-
-		/// <summary>
-		/// The type or types of extension provided, using 
-		/// one or more members of the ExtensionType enumeration.
-		/// </summary>
-		public ExtensionType ExtensionType
-		{
-			get { return extensionType; }
-		}
-
-		/// <summary>
-		/// The AssemblyQualifiedName of the type that implements
-		/// the addin.
-		/// </summary>
-		public string TypeName
-		{
-			get { return typeName; }
-		}
-
-		/// <summary>
-		/// The status of the addin
-		/// </summary>
-		public AddinStatus Status
-		{
-			get { return status; }
-			set { status = value; }
-		}
-
-		/// <summary>
-		/// Any message that clarifies the status of the Addin,
-		/// such as an error message or an explanation of why
-		/// the addin is disabled.
-		/// </summary>
-		public string Message
-		{
-			get { return message; }
-			set { message = value; }
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The Addin class holds information about an addin.
+	/// </summary>
+	[Serializable]
+	public class Addin
+	{
+		#region Private Fields
+		private string typeName;
+		private string name;
+		private string description;
+		private ExtensionType extensionType;
+		private AddinStatus status;
+		private string message;
+		#endregion
+
+		#region Constructor
+		/// <summary>
+		/// Construct an Addin for a type.
+		/// </summary>
+		/// <param name="type">The type to be used</param>
+		public Addin( Type type )
+		{
+			this.typeName = type.AssemblyQualifiedName;
+
+			object[] attrs = type.GetCustomAttributes( typeof(NUnitAddinAttribute), false );
+			if ( attrs.Length == 1 )
+			{
+				NUnitAddinAttribute attr = (NUnitAddinAttribute)attrs[0];
+				this.name = attr.Name;
+				this.description = attr.Description;
+				this.extensionType = attr.Type;
+			}
+
+			if ( this.name == null )
+				this.name = type.Name;
+
+			if ( this.extensionType == 0 )
+				this.extensionType = ExtensionType.Core;
+
+			this.status = AddinStatus.Enabled;
+        }
+		#endregion
+
+		#region Properties
+		/// <summary>
+		/// The name of the Addin
+		/// </summary>
+		public string Name
+		{
+			get { return name; }
+		}
+
+		/// <summary>
+		/// Brief description of what the Addin does
+		/// </summary>
+		public string Description
+		{
+			get { return description; }
+		}
+
+		/// <summary>
+		/// The type or types of extension provided, using 
+		/// one or more members of the ExtensionType enumeration.
+		/// </summary>
+		public ExtensionType ExtensionType
+		{
+			get { return extensionType; }
+		}
+
+		/// <summary>
+		/// The AssemblyQualifiedName of the type that implements
+		/// the addin.
+		/// </summary>
+		public string TypeName
+		{
+			get { return typeName; }
+		}
+
+		/// <summary>
+		/// The status of the addin
+		/// </summary>
+		public AddinStatus Status
+		{
+			get { return status; }
+			set { status = value; }
+		}
+
+		/// <summary>
+		/// Any message that clarifies the status of the Addin,
+		/// such as an error message or an explanation of why
+		/// the addin is disabled.
+		/// </summary>
+		public string Message
+		{
+			get { return message; }
+			set { message = value; }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/AddinStatus.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/AddinStatus.cs
@@ -1,36 +1,36 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The AddinStatus enum indicates the load status of an addin.
-	/// </summary>
-    public enum AddinStatus
-    {
-		/// <summary>
-		/// Not known - default
-		/// </summary>
-        Unknown,
-		/// <summary>
-		/// The addin is enabled but not loaded
-		/// </summary>
-        Enabled,
-		/// <summary>
-		/// The addin is disabled
-		/// </summary>
-        Disabled,
-		/// <summary>
-		/// The addin was loaded successfully
-		/// </summary>
-        Loaded,
-		/// <summary>
-		/// An error was encountered loading the addin
-		/// </summary>
-        Error
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The AddinStatus enum indicates the load status of an addin.
+	/// </summary>
+    public enum AddinStatus
+    {
+		/// <summary>
+		/// Not known - default
+		/// </summary>
+        Unknown,
+		/// <summary>
+		/// The addin is enabled but not loaded
+		/// </summary>
+        Enabled,
+		/// <summary>
+		/// The addin is disabled
+		/// </summary>
+        Disabled,
+		/// <summary>
+		/// The addin was loaded successfully
+		/// </summary>
+        Loaded,
+		/// <summary>
+		/// An error was encountered loading the addin
+		/// </summary>
+        Error
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/ExtensionType.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/ExtensionType.cs
@@ -1,35 +1,35 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The ExtensionType enumeration is used to indicate the
-	/// kinds of extensions provided by an Addin. The addin
-	/// is only installed by hosts supporting one of its
-	/// extension types.
-	/// </summary>
-	[Flags]
-	public enum ExtensionType
-	{
-		/// <summary>
-		/// A Core extension is installed by the CoreExtensions
-		/// host in each test domain.
-		/// </summary>
-		Core=1,
-
-		/// <summary>
-		/// A Client extension is installed by all clients
-		/// </summary>
-		Client=2,
-
-		/// <summary>
-		/// A Gui extension is installed by the gui client
-		/// </summary>
-		Gui=4
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The ExtensionType enumeration is used to indicate the
+	/// kinds of extensions provided by an Addin. The addin
+	/// is only installed by hosts supporting one of its
+	/// extension types.
+	/// </summary>
+	[Flags]
+	public enum ExtensionType
+	{
+		/// <summary>
+		/// A Core extension is installed by the CoreExtensions
+		/// host in each test domain.
+		/// </summary>
+		Core=1,
+
+		/// <summary>
+		/// A Client extension is installed by all clients
+		/// </summary>
+		Client=2,
+
+		/// <summary>
+		/// A Gui extension is installed by the gui client
+		/// </summary>
+		Gui=4
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/IAddin.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/IAddin.cs
@@ -1,29 +1,29 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// Add-ins are used to extend NUnti. All add-ins must
-	/// implement the IAddin interface.
-	/// </summary>
-	public interface IAddin
-	{
-		/// <summary>
-		/// When called, the add-in installs itself into
-		/// the host, if possible. Because NUnit uses separate
-		/// hosts for the client and test domain environments,
-		/// an add-in may be invited to istall itself more than
-		/// once. The add-in is responsible for checking which
-		/// extension points are supported by the host that is
-		/// passed to it and taking the appropriate action.
-		/// </summary>
-		/// <param name="host">The host in which to install the add-in</param>
-		/// <returns>True if the add-in was installed, otehrwise false</returns>
-		bool Install( IExtensionHost host );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// Add-ins are used to extend NUnti. All add-ins must
+	/// implement the IAddin interface.
+	/// </summary>
+	public interface IAddin
+	{
+		/// <summary>
+		/// When called, the add-in installs itself into
+		/// the host, if possible. Because NUnit uses separate
+		/// hosts for the client and test domain environments,
+		/// an add-in may be invited to istall itself more than
+		/// once. The add-in is responsible for checking which
+		/// extension points are supported by the host that is
+		/// passed to it and taking the appropriate action.
+		/// </summary>
+		/// <param name="host">The host in which to install the add-in</param>
+		/// <returns>True if the add-in was installed, otehrwise false</returns>
+		bool Install( IExtensionHost host );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/IAddinManager.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/IAddinManager.cs
@@ -1,12 +1,12 @@
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	public interface IAddinManager
-	{
-		Addin[] Addins { get; }
-
-		TestFramework[] Frameworks { get; }
-	}
-
-}
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	public interface IAddinManager
+	{
+		Addin[] Addins { get; }
+
+		TestFramework[] Frameworks { get; }
+	}
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/IAddinRegistry.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/IAddinRegistry.cs
@@ -1,36 +1,36 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The IAddinRegistry interface allows registering addins
-	/// and retrieving information about them. It is also used
-	///  to record the load status of an addin.
-	/// </summary>
-	public interface IAddinRegistry
-	{
-		/// <summary>
-		/// Gets a list of all addins as Addin objects
-		/// </summary>
-		System.Collections.IList Addins { get; }
-
-		/// <summary>
-		/// Registers an addin
-		/// </summary>
-		/// <param name="addin">The addin to be registered</param>
-		void Register( Addin addin );
-
-		/// <summary>
-		///  Sets the load status of an addin
-		/// </summary>
-		/// <param name="name">The name of the addin</param>
-		/// <param name="status">The status to be set</param>
-		/// <param name="message">An optional message explaining the status</param>
-		void SetStatus( string name, AddinStatus status, string message );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The IAddinRegistry interface allows registering addins
+	/// and retrieving information about them. It is also used
+	///  to record the load status of an addin.
+	/// </summary>
+	public interface IAddinRegistry
+	{
+		/// <summary>
+		/// Gets a list of all addins as Addin objects
+		/// </summary>
+		System.Collections.IList Addins { get; }
+
+		/// <summary>
+		/// Registers an addin
+		/// </summary>
+		/// <param name="addin">The addin to be registered</param>
+		void Register( Addin addin );
+
+		/// <summary>
+		///  Sets the load status of an addin
+		/// </summary>
+		/// <param name="name">The name of the addin</param>
+		/// <param name="status">The status to be set</param>
+		/// <param name="message">An optional message explaining the status</param>
+		void SetStatus( string name, AddinStatus status, string message );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/IExtensionHost.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/IExtensionHost.cs
@@ -1,46 +1,46 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The IExtensionHost interface is implemented by each
-	/// of NUnit's Extension hosts. Currently, there is
-	/// only one host, which resides in the test domain.
-	/// </summary>
-	public interface IExtensionHost
-	{
-        /// <summary>
-        /// Get a list of the ExtensionPoints provided by this host.
-        /// </summary>
-        IExtensionPoint[] ExtensionPoints
-        {
-            get;
-        }
-
-		/// <summary>
-		/// Get an interface to the framework registry
-		/// </summary>
-		IFrameworkRegistry FrameworkRegistry
-		{
-			get;
-		}
-		
-		/// <summary>
-		/// Return an extension point by name, if present
-		/// </summary>
-		/// <param name="name">The name of the extension point</param>
-		/// <returns>The extension point, if found, otherwise null</returns>
-		IExtensionPoint GetExtensionPoint( string name );
-
-        /// <summary>
-        /// Gets the ExtensionTypes supported by this host
-        /// </summary>
-        /// <returns>An enum indicating the ExtensionTypes supported</returns>
-        ExtensionType ExtensionTypes { get; }
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The IExtensionHost interface is implemented by each
+	/// of NUnit's Extension hosts. Currently, there is
+	/// only one host, which resides in the test domain.
+	/// </summary>
+	public interface IExtensionHost
+	{
+        /// <summary>
+        /// Get a list of the ExtensionPoints provided by this host.
+        /// </summary>
+        IExtensionPoint[] ExtensionPoints
+        {
+            get;
+        }
+
+		/// <summary>
+		/// Get an interface to the framework registry
+		/// </summary>
+		IFrameworkRegistry FrameworkRegistry
+		{
+			get;
+		}
+		
+		/// <summary>
+		/// Return an extension point by name, if present
+		/// </summary>
+		/// <param name="name">The name of the extension point</param>
+		/// <returns>The extension point, if found, otherwise null</returns>
+		IExtensionPoint GetExtensionPoint( string name );
+
+        /// <summary>
+        /// Gets the ExtensionTypes supported by this host
+        /// </summary>
+        /// <returns>An enum indicating the ExtensionTypes supported</returns>
+        ExtensionType ExtensionTypes { get; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/IExtensionPoint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/IExtensionPoint.cs
@@ -1,42 +1,42 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// Represents a single point of extension for NUnit. Some extension
-	/// points may accept only a single extension, while others may
-	/// accept more than one at the same time.
-	/// </summary>
-	public interface IExtensionPoint
-	{
-		/// <summary>
-		/// Get the name of this extension point
-		/// </summary>
-		string Name { get; }
-
-        /// <summary>
-        /// Get the host that provides this extension point
-        /// </summary>
-        IExtensionHost Host { get; }
-
-		/// <summary>
-		/// Install an extension at this extension point. If the
-		/// extension object does not meet the requirements for
-		/// this extension point, an exception is thrown.
-		/// </summary>
-		/// <param name="extension">The extension to install</param>
-		void Install( object extension );
-
-		/// <summary>
-		/// Removes an extension from this extension point. If the
-		/// extension object is not present, the method returns
-		/// without error.
-		/// <param name="extension"></param>
-		void Remove( object extension );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// Represents a single point of extension for NUnit. Some extension
+	/// points may accept only a single extension, while others may
+	/// accept more than one at the same time.
+	/// </summary>
+	public interface IExtensionPoint
+	{
+		/// <summary>
+		/// Get the name of this extension point
+		/// </summary>
+		string Name { get; }
+
+        /// <summary>
+        /// Get the host that provides this extension point
+        /// </summary>
+        IExtensionHost Host { get; }
+
+		/// <summary>
+		/// Install an extension at this extension point. If the
+		/// extension object does not meet the requirements for
+		/// this extension point, an exception is thrown.
+		/// </summary>
+		/// <param name="extension">The extension to install</param>
+		void Install( object extension );
+
+		/// <summary>
+		/// Removes an extension from this extension point. If the
+		/// extension object is not present, the method returns
+		/// without error.
+		/// <param name="extension"></param>
+		void Remove( object extension );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/IFrameworkRegistry.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/IFrameworkRegistry.cs
@@ -1,23 +1,23 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The IFrameworkRegistry allows extensions to register new
-	/// frameworks or emulations of other frameworks.
-	/// </summary>
-	public interface IFrameworkRegistry
-	{
-		/// <summary>
-		/// Register a framework
-		/// </summary>
-		/// <param name="frameworkName">The name of the framework</param>
-		/// <param name="assemblyName">The name of the assembly that the tests reference</param>
-		void Register( string frameworkName, string assemblyName );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The IFrameworkRegistry allows extensions to register new
+	/// frameworks or emulations of other frameworks.
+	/// </summary>
+	public interface IFrameworkRegistry
+	{
+		/// <summary>
+		/// Register a framework
+		/// </summary>
+		/// <param name="frameworkName">The name of the framework</param>
+		/// <param name="assemblyName">The name of the assembly that the tests reference</param>
+		void Register( string frameworkName, string assemblyName );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/ISuiteBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/ISuiteBuilder.cs
@@ -1,37 +1,37 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The ISuiteBuilder interface is exposed by a class that knows how to
-	/// build a suite from one or more Types. 
-	/// </summary>
-	public interface ISuiteBuilder
-	{
-		/// <summary>
-		/// Examine the type and determine if it is suitable for
-		/// this builder to use in building a TestSuite.
-        /// 
-        /// Note that returning false will cause the type to be ignored 
-        /// in loading the tests. If it is desired to load the suite
-        /// but label it as non-runnable, ignored, etc., then this
-        /// method must return true.
-        /// </summary>
-		/// <param name="type">The type of the fixture to be used</param>
-		/// <returns>True if the type can be used to build a TestSuite</returns>
-		bool CanBuildFrom( Type type );
-
-		/// <summary>
-		/// Build a TestSuite from type provided.
-		/// </summary>
-		/// <param name="type">The type of the fixture to be used</param>
-		/// <returns>A TestSuite</returns>
-		Test BuildFrom( Type type );
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The ISuiteBuilder interface is exposed by a class that knows how to
+	/// build a suite from one or more Types. 
+	/// </summary>
+	public interface ISuiteBuilder
+	{
+		/// <summary>
+		/// Examine the type and determine if it is suitable for
+		/// this builder to use in building a TestSuite.
+        /// 
+        /// Note that returning false will cause the type to be ignored 
+        /// in loading the tests. If it is desired to load the suite
+        /// but label it as non-runnable, ignored, etc., then this
+        /// method must return true.
+        /// </summary>
+		/// <param name="type">The type of the fixture to be used</param>
+		/// <returns>True if the type can be used to build a TestSuite</returns>
+		bool CanBuildFrom( Type type );
+
+		/// <summary>
+		/// Build a TestSuite from type provided.
+		/// </summary>
+		/// <param name="type">The type of the fixture to be used</param>
+		/// <returns>A TestSuite</returns>
+		Test BuildFrom( Type type );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/ITestCaseBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/ITestCaseBuilder.cs
@@ -1,39 +1,39 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.Reflection;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The ITestCaseBuilder interface is exposed by a class that knows how to
-	/// build a test case from certain methods. 
-	/// </summary>
-	public interface ITestCaseBuilder
-	{
-		/// <summary>
-		/// Examine the method and determine if it is suitable for
-		/// this builder to use in building a TestCase.
-		/// 
-		/// Note that returning false will cause the method to be ignored 
-		/// in loading the tests. If it is desired to load the method
-		/// but label it as non-runnable, ignored, etc., then this
-		/// method must return true.
-		/// 
-		/// Derived classes must override this method.
-		/// </summary>
-		/// <param name="method">The test method to examine</param>
-		/// <returns>True is the builder can use this method</returns>
-		bool CanBuildFrom( MethodInfo method );
-
-		/// <summary>
-		/// Build a TestCase from the provided MethodInfo.
-		/// </summary>
-		/// <param name="method">The method to be used as a test case</param>
-		/// <returns>A TestCase or null</returns>
-		Test BuildFrom( MethodInfo method );
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.Reflection;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The ITestCaseBuilder interface is exposed by a class that knows how to
+	/// build a test case from certain methods. 
+	/// </summary>
+	public interface ITestCaseBuilder
+	{
+		/// <summary>
+		/// Examine the method and determine if it is suitable for
+		/// this builder to use in building a TestCase.
+		/// 
+		/// Note that returning false will cause the method to be ignored 
+		/// in loading the tests. If it is desired to load the method
+		/// but label it as non-runnable, ignored, etc., then this
+		/// method must return true.
+		/// 
+		/// Derived classes must override this method.
+		/// </summary>
+		/// <param name="method">The test method to examine</param>
+		/// <returns>True is the builder can use this method</returns>
+		bool CanBuildFrom( MethodInfo method );
+
+		/// <summary>
+		/// Build a TestCase from the provided MethodInfo.
+		/// </summary>
+		/// <param name="method">The method to be used as a test case</param>
+		/// <returns>A TestCase or null</returns>
+		Test BuildFrom( MethodInfo method );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/ITestDecorator.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/ITestDecorator.cs
@@ -1,26 +1,26 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// The ITestDecorator interface is exposed by a class that knows how to
-	/// enhance the functionality of a test case or suite by decorating it.
-	/// </summary>
-	public interface ITestDecorator
-	{
-		/// <summary>
-		/// Examine the a Test and either return it as is, modify it
-		/// or return a different TestCase.
-		/// </summary>
-		/// <param name="test">The Test to be decorated</param>
-		/// <param name="member">The MethodInfo used to construct the test</param>
-		/// <returns>The resulting Test</returns>
-		Test Decorate( Test test, MemberInfo member );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// The ITestDecorator interface is exposed by a class that knows how to
+	/// enhance the functionality of a test case or suite by decorating it.
+	/// </summary>
+	public interface ITestDecorator
+	{
+		/// <summary>
+		/// Examine the a Test and either return it as is, modify it
+		/// or return a different TestCase.
+		/// </summary>
+		/// <param name="test">The Test to be decorated</param>
+		/// <param name="member">The MethodInfo used to construct the test</param>
+		/// <returns>The resulting Test</returns>
+		Test Decorate( Test test, MemberInfo member );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/NUnitAddinAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/NUnitAddinAttribute.cs
@@ -1,40 +1,40 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// NUnitAddinAttribute is used to mark all add-ins. The marked class
-	/// must implement the IAddin interface.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=false)]
-	public sealed class NUnitAddinAttribute : Attribute
-	{
-        /// <summary>
-        /// The name of this addin
-        /// </summary>
-		public string Name;
-
-        /// <summary>
-        /// A description for the addin
-        /// </summary>
-		public string Description;
-
-        /// <summary>
-        /// The type of extension provided
-        /// </summary>
-		public ExtensionType Type;
-
-        /// <summary>
-        /// Default Constructor
-        /// </summary>
-		public NUnitAddinAttribute()
-		{
-			this.Type = ExtensionType.Core;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// NUnitAddinAttribute is used to mark all add-ins. The marked class
+	/// must implement the IAddin interface.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=false)]
+	public sealed class NUnitAddinAttribute : Attribute
+	{
+        /// <summary>
+        /// The name of this addin
+        /// </summary>
+		public string Name;
+
+        /// <summary>
+        /// A description for the addin
+        /// </summary>
+		public string Description;
+
+        /// <summary>
+        /// The type of extension provided
+        /// </summary>
+		public ExtensionType Type;
+
+        /// <summary>
+        /// Default Constructor
+        /// </summary>
+		public NUnitAddinAttribute()
+		{
+			this.Type = ExtensionType.Core;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Extensibility/TestFramework.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Extensibility/TestFramework.cs
@@ -1,42 +1,42 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core.Extensibility
-{
-	/// <summary>
-	/// Summary description for TestFramework.
-	/// </summary>
-	[Serializable]
-	public class TestFramework
-	{
-		#region Instance Fields
-		/// <summary>
-		/// The name of the framework
-		/// </summary>
-		public string Name;
-
-		/// <summary>
-		/// The file name of the assembly that defines the framwork
-		/// </summary>
-		public string AssemblyName;
-		#endregion
-
-		#region Constructor
-		/// <summary>
-		/// Constructs a TestFramwork object given its name and assembly name.
-		/// </summary>
-		/// <param name="frameworkName"></param>
-		/// <param name="assemblyName"></param>
-		public TestFramework( string frameworkName, string assemblyName ) 
-		{
-			this.Name = frameworkName;
-			this.AssemblyName = assemblyName;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core.Extensibility
+{
+	/// <summary>
+	/// Summary description for TestFramework.
+	/// </summary>
+	[Serializable]
+	public class TestFramework
+	{
+		#region Instance Fields
+		/// <summary>
+		/// The name of the framework
+		/// </summary>
+		public string Name;
+
+		/// <summary>
+		/// The file name of the assembly that defines the framwork
+		/// </summary>
+		public string AssemblyName;
+		#endregion
+
+		#region Constructor
+		/// <summary>
+		/// Constructs a TestFramwork object given its name and assembly name.
+		/// </summary>
+		/// <param name="frameworkName"></param>
+		/// <param name="assemblyName"></param>
+		public TestFramework( string frameworkName, string assemblyName ) 
+		{
+			this.Name = frameworkName;
+			this.AssemblyName = assemblyName;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Filters/AndFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Filters/AndFilter.cs
@@ -1,82 +1,82 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-
-namespace NUnit.Core.Filters
-{
-	/// <summary>
-	/// Combines multiple filters so that a test must pass all 
-	/// of them in order to pass this filter.
-	/// </summary>
-	[Serializable]
-	public class AndFilter : TestFilter
-	{
-		private ArrayList filters = new ArrayList();
-
-		/// <summary>
-		/// Constructs an empty AndFilter
-		/// </summary>
-		public AndFilter() { }
-
-		/// <summary>
-		/// Constructs an AndFilter from an array of filters
-		/// </summary>
-		/// <param name="filters"></param>
-		public AndFilter( params ITestFilter[] filters )
-		{
-			this.filters.AddRange( filters );
-		}
-
-		/// <summary>
-		/// Adds a filter to the list of filters
-		/// </summary>
-		/// <param name="filter">The filter to be added</param>
-		public void Add( ITestFilter filter )
-		{
-			this.filters.Add( filter );
-		}
-
-		/// <summary>
-		/// Return an array of the composing filters
-		/// </summary>
-		public ITestFilter[] Filters
-		{
-			get
-			{
-				return (ITestFilter[])filters.ToArray(typeof(ITestFilter));
-			}
-		}
-
-		/// <summary>
-		/// Checks whether the AndFilter is matched by a test
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if all the component filters pass, otherwise false</returns>
-		public override bool Pass( ITest test )
-		{
-			foreach( ITestFilter filter in filters )
-				if ( !filter.Pass( test ) )
-					return false;
-
-			return true;
-		}
-
-		/// <summary>
-		/// Checks whether the AndFilter is matched by a test
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if all the component filters match, otherwise false</returns>
-		public override bool Match( ITest test )
-		{
-			foreach( ITestFilter filter in filters )
-				if ( !filter.Match( test ) )
-					return false;
-
-			return true;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+
+namespace NUnit.Core.Filters
+{
+	/// <summary>
+	/// Combines multiple filters so that a test must pass all 
+	/// of them in order to pass this filter.
+	/// </summary>
+	[Serializable]
+	public class AndFilter : TestFilter
+	{
+		private ArrayList filters = new ArrayList();
+
+		/// <summary>
+		/// Constructs an empty AndFilter
+		/// </summary>
+		public AndFilter() { }
+
+		/// <summary>
+		/// Constructs an AndFilter from an array of filters
+		/// </summary>
+		/// <param name="filters"></param>
+		public AndFilter( params ITestFilter[] filters )
+		{
+			this.filters.AddRange( filters );
+		}
+
+		/// <summary>
+		/// Adds a filter to the list of filters
+		/// </summary>
+		/// <param name="filter">The filter to be added</param>
+		public void Add( ITestFilter filter )
+		{
+			this.filters.Add( filter );
+		}
+
+		/// <summary>
+		/// Return an array of the composing filters
+		/// </summary>
+		public ITestFilter[] Filters
+		{
+			get
+			{
+				return (ITestFilter[])filters.ToArray(typeof(ITestFilter));
+			}
+		}
+
+		/// <summary>
+		/// Checks whether the AndFilter is matched by a test
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if all the component filters pass, otherwise false</returns>
+		public override bool Pass( ITest test )
+		{
+			foreach( ITestFilter filter in filters )
+				if ( !filter.Pass( test ) )
+					return false;
+
+			return true;
+		}
+
+		/// <summary>
+		/// Checks whether the AndFilter is matched by a test
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if all the component filters match, otherwise false</returns>
+		public override bool Match( ITest test )
+		{
+			foreach( ITestFilter filter in filters )
+				if ( !filter.Match( test ) )
+					return false;
+
+			return true;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Filters/CategoryFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Filters/CategoryFilter.cs
@@ -1,102 +1,102 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Text;
-using System.Collections;
-
-namespace NUnit.Core.Filters
-{
-	/// <summary>
-	/// CategoryFilter is able to select or exclude tests
-	/// based on their categories.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class CategoryFilter : TestFilter
-	{
-		ArrayList categories;
-
-		/// <summary>
-		/// Construct an empty CategoryFilter
-		/// </summary>
-		public CategoryFilter()
-		{
-			categories = new ArrayList();
-		}
-
-		/// <summary>
-		/// Construct a CategoryFilter using a single category name
-		/// </summary>
-		/// <param name="name">A category name</param>
-		public CategoryFilter( string name )
-		{
-			categories = new ArrayList();
-			if ( name != null && name != string.Empty )
-				categories.Add( name );
-		}
-
-		/// <summary>
-		/// Construct a CategoryFilter using an array of category names
-		/// </summary>
-		/// <param name="names">An array of category names</param>
-		public CategoryFilter( string[] names )
-		{
-			categories = new ArrayList();
-			if ( names != null )
-				categories.AddRange( names );
-		}
-
-		/// <summary>
-		/// Add a category name to the filter
-		/// </summary>
-		/// <param name="name">A category name</param>
-		public void AddCategory(string name) 
-		{
-			categories.Add( name );
-		}
-
-		/// <summary>
-		/// Check whether the filter matches a test
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns></returns>
-        public override bool Match(ITest test)
-        {
-			if ( test.Categories == null )
-				return false;
-
-			foreach( string cat in categories )
-				if ( test.Categories.Contains( cat ) )
-					return true;
-
-			return false;
-        }
-		
-		/// <summary>
-		/// Return the string representation of a category filter
-		/// </summary>
-		/// <returns></returns>
-		public override string ToString()
-		{
-			StringBuilder sb = new StringBuilder();
-			for( int i = 0; i < categories.Count; i++ )
-			{
-				if ( i > 0 ) sb.Append( ',' );
-				sb.Append( categories[i] );
-			}
-			return sb.ToString();
-		}
-
-		/// <summary>
-		/// Gets the list of categories from this filter
-		/// </summary>
-		public IList Categories
-		{
-			get { return categories; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Text;
+using System.Collections;
+
+namespace NUnit.Core.Filters
+{
+	/// <summary>
+	/// CategoryFilter is able to select or exclude tests
+	/// based on their categories.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class CategoryFilter : TestFilter
+	{
+		ArrayList categories;
+
+		/// <summary>
+		/// Construct an empty CategoryFilter
+		/// </summary>
+		public CategoryFilter()
+		{
+			categories = new ArrayList();
+		}
+
+		/// <summary>
+		/// Construct a CategoryFilter using a single category name
+		/// </summary>
+		/// <param name="name">A category name</param>
+		public CategoryFilter( string name )
+		{
+			categories = new ArrayList();
+			if ( name != null && name != string.Empty )
+				categories.Add( name );
+		}
+
+		/// <summary>
+		/// Construct a CategoryFilter using an array of category names
+		/// </summary>
+		/// <param name="names">An array of category names</param>
+		public CategoryFilter( string[] names )
+		{
+			categories = new ArrayList();
+			if ( names != null )
+				categories.AddRange( names );
+		}
+
+		/// <summary>
+		/// Add a category name to the filter
+		/// </summary>
+		/// <param name="name">A category name</param>
+		public void AddCategory(string name) 
+		{
+			categories.Add( name );
+		}
+
+		/// <summary>
+		/// Check whether the filter matches a test
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns></returns>
+        public override bool Match(ITest test)
+        {
+			if ( test.Categories == null )
+				return false;
+
+			foreach( string cat in categories )
+				if ( test.Categories.Contains( cat ) )
+					return true;
+
+			return false;
+        }
+		
+		/// <summary>
+		/// Return the string representation of a category filter
+		/// </summary>
+		/// <returns></returns>
+		public override string ToString()
+		{
+			StringBuilder sb = new StringBuilder();
+			for( int i = 0; i < categories.Count; i++ )
+			{
+				if ( i > 0 ) sb.Append( ',' );
+				sb.Append( categories[i] );
+			}
+			return sb.ToString();
+		}
+
+		/// <summary>
+		/// Gets the list of categories from this filter
+		/// </summary>
+		public IList Categories
+		{
+			get { return categories; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Filters/NameFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Filters/NameFilter.cs
@@ -1,58 +1,58 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Core.Filters
-{
-	/// <summary>
-	/// Summary description for NameFilter.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class NameFilter : TestFilter
-	{
-		private ArrayList testNames = new ArrayList();
-
-		/// <summary>
-		/// Construct an empty NameFilter
-		/// </summary>
-		public NameFilter() { }
-
-		/// <summary>
-		/// Construct a NameFilter for a single TestName
-		/// </summary>
-		/// <param name="testName"></param>
-		public NameFilter( TestName testName )
-		{
-			testNames.Add( testName );
-		}
-
-		/// <summary>
-		/// Add a TestName to a NameFilter
-		/// </summary>
-		/// <param name="testName"></param>
-		public void Add( TestName testName )
-		{
-			testNames.Add( testName );
-		}
-
-		/// <summary>
-		/// Check if a test matches the filter
-		/// </summary>
-		/// <param name="test">The test to match</param>
-		/// <returns>True if it matches, false if not</returns>
-		public override bool Match( ITest test )
-		{
-			foreach( TestName testName in testNames )
-				if ( test.TestName == testName )
-					return true;
-
-			return false;
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Core.Filters
+{
+	/// <summary>
+	/// Summary description for NameFilter.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class NameFilter : TestFilter
+	{
+		private ArrayList testNames = new ArrayList();
+
+		/// <summary>
+		/// Construct an empty NameFilter
+		/// </summary>
+		public NameFilter() { }
+
+		/// <summary>
+		/// Construct a NameFilter for a single TestName
+		/// </summary>
+		/// <param name="testName"></param>
+		public NameFilter( TestName testName )
+		{
+			testNames.Add( testName );
+		}
+
+		/// <summary>
+		/// Add a TestName to a NameFilter
+		/// </summary>
+		/// <param name="testName"></param>
+		public void Add( TestName testName )
+		{
+			testNames.Add( testName );
+		}
+
+		/// <summary>
+		/// Check if a test matches the filter
+		/// </summary>
+		/// <param name="test">The test to match</param>
+		/// <returns>True if it matches, false if not</returns>
+		public override bool Match( ITest test )
+		{
+			foreach( TestName testName in testNames )
+				if ( test.TestName == testName )
+					return true;
+
+			return false;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Filters/NotFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Filters/NotFilter.cs
@@ -1,64 +1,64 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core.Filters
-{
-	/// <summary>
-	/// NotFilter negates the operation of another filter
-	/// </summary>
-	[Serializable]
-	public class NotFilter : TestFilter
-	{
-		ITestFilter baseFilter;
-
-		/// <summary>
-		/// Construct a not filter on another filter
-		/// </summary>
-		/// <param name="baseFilter">The filter to be negated</param>
-		public NotFilter( ITestFilter baseFilter)
-		{
-			this.baseFilter = baseFilter;
-		}
-
-		/// <summary>
-		/// Gets the base filter
-		/// </summary>
-		public ITestFilter BaseFilter
-		{
-			get { return baseFilter; }
-		}
-
-		/// <summary>
-		/// Check whether the filter matches a test
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if it matches, otherwise false</returns>
-		public override bool Match( ITest test )
-		{
-			return test.RunState != RunState.Explicit && !baseFilter.Pass( test );
-		}
-
-		/// <summary>
-		/// Determine whether any descendant of the test matches the filter criteria.
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if at least one descendant matches the filter criteria</returns>
-		protected override bool MatchDescendant(ITest test)
-		{
-			if (!test.IsSuite || test.Tests == null || test.RunState == RunState.Explicit)
-				return false;
-
-			foreach (ITest child in test.Tests)
-			{
-				if (Match(child) || MatchDescendant(child))
-					return true;
-			}
-
-			return false;
-		}	
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core.Filters
+{
+	/// <summary>
+	/// NotFilter negates the operation of another filter
+	/// </summary>
+	[Serializable]
+	public class NotFilter : TestFilter
+	{
+		ITestFilter baseFilter;
+
+		/// <summary>
+		/// Construct a not filter on another filter
+		/// </summary>
+		/// <param name="baseFilter">The filter to be negated</param>
+		public NotFilter( ITestFilter baseFilter)
+		{
+			this.baseFilter = baseFilter;
+		}
+
+		/// <summary>
+		/// Gets the base filter
+		/// </summary>
+		public ITestFilter BaseFilter
+		{
+			get { return baseFilter; }
+		}
+
+		/// <summary>
+		/// Check whether the filter matches a test
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if it matches, otherwise false</returns>
+		public override bool Match( ITest test )
+		{
+			return test.RunState != RunState.Explicit && !baseFilter.Pass( test );
+		}
+
+		/// <summary>
+		/// Determine whether any descendant of the test matches the filter criteria.
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if at least one descendant matches the filter criteria</returns>
+		protected override bool MatchDescendant(ITest test)
+		{
+			if (!test.IsSuite || test.Tests == null || test.RunState == RunState.Explicit)
+				return false;
+
+			foreach (ITest child in test.Tests)
+			{
+				if (Match(child) || MatchDescendant(child))
+					return true;
+			}
+
+			return false;
+		}	
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Filters/OrFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Filters/OrFilter.cs
@@ -1,82 +1,82 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-
-namespace NUnit.Core.Filters
-{
-	/// <summary>
-	/// Combines multiple filters so that a test must pass one 
-	/// of them in order to pass this filter.
-	/// </summary>
-	[Serializable]
-	public class OrFilter : TestFilter
-	{
-		private ArrayList filters = new ArrayList();
-
-		/// <summary>
-		/// Constructs an empty OrFilter
-		/// </summary>
-		public OrFilter() { }
-
-		/// <summary>
-		/// Constructs an AndFilter from an array of filters
-		/// </summary>
-		/// <param name="filters"></param>
-		public OrFilter( params ITestFilter[] filters )
-		{
-			this.filters.AddRange( filters );
-		}
-
-		/// <summary>
-		/// Adds a filter to the list of filters
-		/// </summary>
-		/// <param name="filter">The filter to be added</param>
-		public void Add( ITestFilter filter )
-		{
-			this.filters.Add( filter );
-		}
-
-		/// <summary>
-		/// Return an array of the composing filters
-		/// </summary>
-		public ITestFilter[] Filters
-		{
-			get
-			{
-				return (ITestFilter[])filters.ToArray(typeof(ITestFilter));
-			}
-		}
-
-		/// <summary>
-		/// Checks whether the OrFilter is matched by a test
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if any of the component filters pass, otherwise false</returns>
-		public override bool Pass( ITest test )
-		{
-			foreach( ITestFilter filter in filters )
-				if ( filter.Pass( test ) )
-					return true;
-
-			return false;
-		}
-
-		/// <summary>
-		/// Checks whether the OrFilter is matched by a test
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if any of the component filters match, otherwise false</returns>
-		public override bool Match( ITest test )
-		{
-			foreach( ITestFilter filter in filters )
-				if ( filter.Match( test ) )
-					return true;
-
-			return false;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+
+namespace NUnit.Core.Filters
+{
+	/// <summary>
+	/// Combines multiple filters so that a test must pass one 
+	/// of them in order to pass this filter.
+	/// </summary>
+	[Serializable]
+	public class OrFilter : TestFilter
+	{
+		private ArrayList filters = new ArrayList();
+
+		/// <summary>
+		/// Constructs an empty OrFilter
+		/// </summary>
+		public OrFilter() { }
+
+		/// <summary>
+		/// Constructs an AndFilter from an array of filters
+		/// </summary>
+		/// <param name="filters"></param>
+		public OrFilter( params ITestFilter[] filters )
+		{
+			this.filters.AddRange( filters );
+		}
+
+		/// <summary>
+		/// Adds a filter to the list of filters
+		/// </summary>
+		/// <param name="filter">The filter to be added</param>
+		public void Add( ITestFilter filter )
+		{
+			this.filters.Add( filter );
+		}
+
+		/// <summary>
+		/// Return an array of the composing filters
+		/// </summary>
+		public ITestFilter[] Filters
+		{
+			get
+			{
+				return (ITestFilter[])filters.ToArray(typeof(ITestFilter));
+			}
+		}
+
+		/// <summary>
+		/// Checks whether the OrFilter is matched by a test
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if any of the component filters pass, otherwise false</returns>
+		public override bool Pass( ITest test )
+		{
+			foreach( ITestFilter filter in filters )
+				if ( filter.Pass( test ) )
+					return true;
+
+			return false;
+		}
+
+		/// <summary>
+		/// Checks whether the OrFilter is matched by a test
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if any of the component filters match, otherwise false</returns>
+		public override bool Match( ITest test )
+		{
+			foreach( ITestFilter filter in filters )
+				if ( filter.Match( test ) )
+					return true;
+
+			return false;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Filters/SimpleNameFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Filters/SimpleNameFilter.cs
@@ -1,57 +1,57 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-using System.Text;
-
-namespace NUnit.Core.Filters
-{
-	/// <summary>
-	/// SimpleName filter selects tests based on their name
-	/// </summary>
-    [Serializable]
-    public class SimpleNameFilter : TestFilter
-    {
-        private ArrayList names = new ArrayList();
-
-		/// <summary>
-		/// Construct an empty SimpleNameFilter
-		/// </summary>
-        public SimpleNameFilter() { }
-
-        /// <summary>
-        /// Construct a SimpleNameFilter for a single name
-        /// </summary>
-        /// <param name="name">The name the filter will recognize</param>
-		public SimpleNameFilter( string name )
-        {
-            this.names.Add( name );
-        }
-
-		/// <summary>
-		/// Add a name to a SimpleNameFilter
-		/// </summary>
-		/// <param name="name">The name to be added</param>
-		public void Add( string name )
-		{
-			names.Add( name );
-		}
-
-		/// <summary>
-		/// Check whether the filter matches a test
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if it matches, otherwise false</returns>
-		public override bool Match( ITest test )
-		{
-			foreach( string name in names )
-				if ( test.TestName.FullName == name )
-					return true;
-
-			return false;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+using System.Text;
+
+namespace NUnit.Core.Filters
+{
+	/// <summary>
+	/// SimpleName filter selects tests based on their name
+	/// </summary>
+    [Serializable]
+    public class SimpleNameFilter : TestFilter
+    {
+        private ArrayList names = new ArrayList();
+
+		/// <summary>
+		/// Construct an empty SimpleNameFilter
+		/// </summary>
+        public SimpleNameFilter() { }
+
+        /// <summary>
+        /// Construct a SimpleNameFilter for a single name
+        /// </summary>
+        /// <param name="name">The name the filter will recognize</param>
+		public SimpleNameFilter( string name )
+        {
+            this.names.Add( name );
+        }
+
+		/// <summary>
+		/// Add a name to a SimpleNameFilter
+		/// </summary>
+		/// <param name="name">The name to be added</param>
+		public void Add( string name )
+		{
+			names.Add( name );
+		}
+
+		/// <summary>
+		/// Check whether the filter matches a test
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if it matches, otherwise false</returns>
+		public override bool Match( ITest test )
+		{
+			foreach( string name in names )
+				if ( test.TestName.FullName == name )
+					return true;
+
+			return false;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/IService.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/IService.cs
@@ -1,25 +1,25 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// The IService interface is implemented by all Services.
-	/// </summary>
-	public interface IService
-	{
-		/// <summary>
-		/// Initialize the Service
-		/// </summary>
-		void InitializeService();
-
-		/// <summary>
-		/// Do any cleanup needed before terminating the service
-		/// </summary>
-		void UnloadService();
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// The IService interface is implemented by all Services.
+	/// </summary>
+	public interface IService
+	{
+		/// <summary>
+		/// Initialize the Service
+		/// </summary>
+		void InitializeService();
+
+		/// <summary>
+		/// Do any cleanup needed before terminating the service
+		/// </summary>
+		void UnloadService();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/ITest.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/ITest.cs
@@ -1,91 +1,91 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System.Collections;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Common interface supported by all representations
-	/// of a test. Only includes informational fields.
-	/// The Run method is specifically excluded to allow
-	/// for data-only representations of a test.
-	/// </summary>
-	public interface ITest
-    {
-        #region Properties
-        /// <summary>
-		/// Gets the completely specified name of the test
-		/// encapsulated in a TestName object.
-		/// </summary>
-		TestName TestName { get; }
-
-		/// <summary>
-		/// Gets a string representing the type of test, e.g.: "Test Case"
-		/// </summary>
-		string TestType { get; }
-
-        /// <summary>
-        /// Indicates whether the test can be run using
-        /// the RunState enum.
-        /// </summary>
-		RunState RunState { get; set; }
-
-		/// <summary>
-		/// Reason for not running the test, if applicable
-		/// </summary>
-		string IgnoreReason { get; set; }
-		
-		/// <summary>
-		/// Count of the test cases ( 1 if this is a test case )
-		/// </summary>
-		int TestCount { get; }
-
-		/// <summary>
-		/// Categories available for this test
-		/// </summary>
-		IList Categories { get; }
-
-		/// <summary>
-		/// Return the description field. 
-		/// </summary>
-		string Description { get; set; }
-
-		/// <summary>
-		/// Return additional properties of the test
-		/// </summary>
-		IDictionary Properties { get; }
-
-		/// <summary>
-		/// True if this is a suite
-		/// </summary>
-		bool IsSuite { get; }
-
-		/// <summary>
-		///  Gets the parent test of this test
-		/// </summary>
-		ITest Parent { get; }
-
-		/// <summary>
-		/// For a test suite, the child tests or suites
-		/// Null if this is not a test suite
-		/// </summary>
-		IList Tests { get; }
-        #endregion
-
-        #region Methods
-		/// <summary>
-		/// Count the test cases that pass a filter. The
-		/// result should match those that would execute
-		/// when passing the same filter to Run.
-		/// </summary>
-		/// <param name="filter">The filter to apply</param>
-		/// <returns>The count of test cases</returns>
-        int CountTestCases(ITestFilter filter);
-        #endregion
-    }
-}
-
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System.Collections;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Common interface supported by all representations
+	/// of a test. Only includes informational fields.
+	/// The Run method is specifically excluded to allow
+	/// for data-only representations of a test.
+	/// </summary>
+	public interface ITest
+    {
+        #region Properties
+        /// <summary>
+		/// Gets the completely specified name of the test
+		/// encapsulated in a TestName object.
+		/// </summary>
+		TestName TestName { get; }
+
+		/// <summary>
+		/// Gets a string representing the type of test, e.g.: "Test Case"
+		/// </summary>
+		string TestType { get; }
+
+        /// <summary>
+        /// Indicates whether the test can be run using
+        /// the RunState enum.
+        /// </summary>
+		RunState RunState { get; set; }
+
+		/// <summary>
+		/// Reason for not running the test, if applicable
+		/// </summary>
+		string IgnoreReason { get; set; }
+		
+		/// <summary>
+		/// Count of the test cases ( 1 if this is a test case )
+		/// </summary>
+		int TestCount { get; }
+
+		/// <summary>
+		/// Categories available for this test
+		/// </summary>
+		IList Categories { get; }
+
+		/// <summary>
+		/// Return the description field. 
+		/// </summary>
+		string Description { get; set; }
+
+		/// <summary>
+		/// Return additional properties of the test
+		/// </summary>
+		IDictionary Properties { get; }
+
+		/// <summary>
+		/// True if this is a suite
+		/// </summary>
+		bool IsSuite { get; }
+
+		/// <summary>
+		///  Gets the parent test of this test
+		/// </summary>
+		ITest Parent { get; }
+
+		/// <summary>
+		/// For a test suite, the child tests or suites
+		/// Null if this is not a test suite
+		/// </summary>
+		IList Tests { get; }
+        #endregion
+
+        #region Methods
+		/// <summary>
+		/// Count the test cases that pass a filter. The
+		/// result should match those that would execute
+		/// when passing the same filter to Run.
+		/// </summary>
+		/// <param name="filter">The filter to apply</param>
+		/// <returns>The count of test cases</returns>
+        int CountTestCases(ITestFilter filter);
+        #endregion
+    }
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/ITestFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/ITestFilter.cs
@@ -1,39 +1,39 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Interface to be implemented by filters applied to tests.
-	/// The filter applies when running the test, after it has been
-	/// loaded, since this is the only time an ITest exists.
-	/// </summary>
-	public interface ITestFilter
-	{
-		/// <summary>
-		/// Indicates whether this is the EmptyFilter
-		/// </summary>
-		bool IsEmpty { get; }
-
-		/// <summary>
-		/// Determine if a particular test passes the filter criteria. Pass
-		/// may examine the parents and/or descendants of a test, depending
-		/// on the semantics of the particular filter
-		/// </summary>
-		/// <param name="test">The test to which the filter is applied</param>
-		/// <returns>True if the test passes the filter, otherwise false</returns>
-		bool Pass( ITest test );
-
-		/// <summary>
-		/// Determine whether the test itself matches the filter criteria,
-		/// without examining either parents or descendants.
-		/// </summary>
-		/// <param name="test">The test to which the filter is applied</param>
-		/// <returns>True if the filter matches the any parent of the test</returns>
-		bool Match( ITest test );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Interface to be implemented by filters applied to tests.
+	/// The filter applies when running the test, after it has been
+	/// loaded, since this is the only time an ITest exists.
+	/// </summary>
+	public interface ITestFilter
+	{
+		/// <summary>
+		/// Indicates whether this is the EmptyFilter
+		/// </summary>
+		bool IsEmpty { get; }
+
+		/// <summary>
+		/// Determine if a particular test passes the filter criteria. Pass
+		/// may examine the parents and/or descendants of a test, depending
+		/// on the semantics of the particular filter
+		/// </summary>
+		/// <param name="test">The test to which the filter is applied</param>
+		/// <returns>True if the test passes the filter, otherwise false</returns>
+		bool Pass( ITest test );
+
+		/// <summary>
+		/// Determine whether the test itself matches the filter criteria,
+		/// without examining either parents or descendants.
+		/// </summary>
+		/// <param name="test">The test to which the filter is applied</param>
+		/// <returns>True if the filter matches the any parent of the test</returns>
+		bool Match( ITest test );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/ResultState.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/ResultState.cs
@@ -1,68 +1,68 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// The ResultState enum indicates the result of running a test
-	/// </summary>
-	public enum ResultState
-	{
-        /// <summary>
-        /// The test succeeded
-        /// </summary>
-		Success,
-
-        /// <summary>
-        /// The test failed
-        /// </summary>
-		Failure,
-
-        /// <summary>
-        /// The test encountered an unexpected exception
-        /// </summary>
-		Error
-	}
-
-    /// <summary>
-    /// The FailureSite enum indicates the stage of a test
-    /// in which an error or failure occured.
-    /// </summary>
-    public enum FailureSite
-    {
-		/// <summary>
-		/// The location of the failure is not known
-		/// </summary>
-		Unknown,
-
-        /// <summary>
-        /// Failure in the test itself
-        /// </summary>
-        Test,
-
-        /// <summary>
-        /// Failure in the SetUp method
-        /// </summary>
-        SetUp,
-
-        /// <summary>
-        /// Failure in the TearDown method
-        /// </summary>
-        TearDown,
-
-        /// <summary>
-        /// Failure of a parent test
-        /// </summary>
-        Parent,
-
-        /// <summary>
-        /// Failure of a child test
-        /// </summary>
-        Child
-    }
-
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// The ResultState enum indicates the result of running a test
+	/// </summary>
+	public enum ResultState
+	{
+        /// <summary>
+        /// The test succeeded
+        /// </summary>
+		Success,
+
+        /// <summary>
+        /// The test failed
+        /// </summary>
+		Failure,
+
+        /// <summary>
+        /// The test encountered an unexpected exception
+        /// </summary>
+		Error
+	}
+
+    /// <summary>
+    /// The FailureSite enum indicates the stage of a test
+    /// in which an error or failure occured.
+    /// </summary>
+    public enum FailureSite
+    {
+		/// <summary>
+		/// The location of the failure is not known
+		/// </summary>
+		Unknown,
+
+        /// <summary>
+        /// Failure in the test itself
+        /// </summary>
+        Test,
+
+        /// <summary>
+        /// Failure in the SetUp method
+        /// </summary>
+        SetUp,
+
+        /// <summary>
+        /// Failure in the TearDown method
+        /// </summary>
+        TearDown,
+
+        /// <summary>
+        /// Failure of a parent test
+        /// </summary>
+        Parent,
+
+        /// <summary>
+        /// Failure of a child test
+        /// </summary>
+        Child
+    }
+
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/ResultVisitor.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/ResultVisitor.cs
@@ -1,27 +1,27 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-    /// <summary>
-    /// The ResultVisitor interface implements the
-    /// Visitor pattern over TestResults
-    /// </summary>
-	public interface ResultVisitor
-	{
-        /// <summary>
-        /// Visit a TestCaseResult
-        /// </summary>
-        /// <param name="caseResult">The result to visit</param>
-		void Visit(TestCaseResult caseResult);
-
-        /// <summary>
-        /// Visit a TestSuiteResult
-        /// </summary>
-        /// <param name="suiteResult">The result to visit</param>
-		void Visit(TestSuiteResult suiteResult);
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+    /// <summary>
+    /// The ResultVisitor interface implements the
+    /// Visitor pattern over TestResults
+    /// </summary>
+	public interface ResultVisitor
+	{
+        /// <summary>
+        /// Visit a TestCaseResult
+        /// </summary>
+        /// <param name="caseResult">The result to visit</param>
+		void Visit(TestCaseResult caseResult);
+
+        /// <summary>
+        /// Visit a TestSuiteResult
+        /// </summary>
+        /// <param name="suiteResult">The result to visit</param>
+		void Visit(TestSuiteResult suiteResult);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/RunState.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/RunState.cs
@@ -1,46 +1,46 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// The RunState enum indicates whether a test
-    /// has been or can be executed.
-	/// </summary>
-	public enum RunState
-	{
-        /// <summary>
-        /// The test is not runnable
-        /// </summary>
-		NotRunnable,
-
-        /// <summary>
-        /// The test is runnable
-        /// </summary>
-		Runnable,
-
-        /// <summary>
-        /// The test can only be run explicitly
-        /// </summary>
-		Explicit,
-
-        /// <summary>
-        /// The test has been skipped
-        /// </summary>
-		Skipped,
-
-        /// <summary>
-        /// The test has been ignored
-        /// </summary>
-		Ignored,
-
-        /// <summary>
-        /// The test has been executed
-        /// </summary>
-		Executed
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// The RunState enum indicates whether a test
+    /// has been or can be executed.
+	/// </summary>
+	public enum RunState
+	{
+        /// <summary>
+        /// The test is not runnable
+        /// </summary>
+		NotRunnable,
+
+        /// <summary>
+        /// The test is runnable
+        /// </summary>
+		Runnable,
+
+        /// <summary>
+        /// The test can only be run explicitly
+        /// </summary>
+		Explicit,
+
+        /// <summary>
+        /// The test has been skipped
+        /// </summary>
+		Skipped,
+
+        /// <summary>
+        /// The test has been ignored
+        /// </summary>
+		Ignored,
+
+        /// <summary>
+        /// The test has been executed
+        /// </summary>
+		Executed
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/RuntimeFramework.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/RuntimeFramework.cs
@@ -1,97 +1,97 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Enumeration identifying a common language 
-	/// runtime implementation.
-	/// </summary>
-	public enum RuntimeType
-	{
-		/// <summary>Microsoft .NET Framework</summary>
-		Net,
-		/// <summary>Microsoft .NET Compact Framework</summary>
-		NetCF,
-		/// <summary>Microsoft Shared Source CLI</summary>
-		SSCLI,
-		/// <summary>Mono</summary>
-		Mono
-	}
-
-	/// <summary>
-	/// RuntimeFramework represents a particular version
-	/// of a common language runtime implementation.
-	/// </summary>
-	public sealed class RuntimeFramework
-	{
-		private RuntimeType runtime;
-		private Version version;
-
-		/// <summary>
-		/// Constructor
-		/// </summary>
-		/// <param name="runtime">The runtime type of the framework</param>
-		/// <param name="version">The version of the framework</param>
-		public RuntimeFramework( RuntimeType runtime, Version version )
-		{
-			this.runtime = runtime;
-			this.version = version;
-		}
-
-		/// <summary>
-		/// Static method to return a RuntimeFramework object
-		/// for the frameowrk that is currently in use.
-		/// </summary>
-		public static RuntimeFramework CurrentFramework
-		{
-			get 
-			{ 
-				RuntimeType runtime = Type.GetType( "Mono.Runtime", false ) != null
-					? RuntimeType.Mono : RuntimeType.Net;
-
-				return new RuntimeFramework( runtime, Environment.Version );
-			}
-		}
-
-		/// <summary>
-		/// The type of this runtime framework
-		/// </summary>
-		public RuntimeType Runtime
-		{
-			get { return runtime; }
-		}
-
-		/// <summary>
-		/// The version of this runtime framework
-		/// </summary>
-		public Version Version
-		{
-			get { return version; }
-		}
-
-		/// <summary>
-		/// Gets a display string for the particular framework version
-		/// </summary>
-		/// <returns>A string used to display the framework in use</returns>
-		public string GetDisplayName()
-		{
-			if ( runtime == RuntimeType.Mono )
-			{
-				Type monoRuntimeType = Type.GetType( "Mono.Runtime", false );
-				MethodInfo getDisplayNameMethod = monoRuntimeType.GetMethod(
-					"GetDisplayName", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.ExactBinding );
-				if ( getDisplayNameMethod != null )
-					return (string)getDisplayNameMethod.Invoke( null, new object[0] );
-			}
-
-			return runtime.ToString() + " " + Version.ToString();
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Enumeration identifying a common language 
+	/// runtime implementation.
+	/// </summary>
+	public enum RuntimeType
+	{
+		/// <summary>Microsoft .NET Framework</summary>
+		Net,
+		/// <summary>Microsoft .NET Compact Framework</summary>
+		NetCF,
+		/// <summary>Microsoft Shared Source CLI</summary>
+		SSCLI,
+		/// <summary>Mono</summary>
+		Mono
+	}
+
+	/// <summary>
+	/// RuntimeFramework represents a particular version
+	/// of a common language runtime implementation.
+	/// </summary>
+	public sealed class RuntimeFramework
+	{
+		private RuntimeType runtime;
+		private Version version;
+
+		/// <summary>
+		/// Constructor
+		/// </summary>
+		/// <param name="runtime">The runtime type of the framework</param>
+		/// <param name="version">The version of the framework</param>
+		public RuntimeFramework( RuntimeType runtime, Version version )
+		{
+			this.runtime = runtime;
+			this.version = version;
+		}
+
+		/// <summary>
+		/// Static method to return a RuntimeFramework object
+		/// for the frameowrk that is currently in use.
+		/// </summary>
+		public static RuntimeFramework CurrentFramework
+		{
+			get 
+			{ 
+				RuntimeType runtime = Type.GetType( "Mono.Runtime", false ) != null
+					? RuntimeType.Mono : RuntimeType.Net;
+
+				return new RuntimeFramework( runtime, Environment.Version );
+			}
+		}
+
+		/// <summary>
+		/// The type of this runtime framework
+		/// </summary>
+		public RuntimeType Runtime
+		{
+			get { return runtime; }
+		}
+
+		/// <summary>
+		/// The version of this runtime framework
+		/// </summary>
+		public Version Version
+		{
+			get { return version; }
+		}
+
+		/// <summary>
+		/// Gets a display string for the particular framework version
+		/// </summary>
+		/// <returns>A string used to display the framework in use</returns>
+		public string GetDisplayName()
+		{
+			if ( runtime == RuntimeType.Mono )
+			{
+				Type monoRuntimeType = Type.GetType( "Mono.Runtime", false );
+				MethodInfo getDisplayNameMethod = monoRuntimeType.GetMethod(
+					"GetDisplayName", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.ExactBinding );
+				if ( getDisplayNameMethod != null )
+					return (string)getDisplayNameMethod.Invoke( null, new object[0] );
+			}
+
+			return runtime.ToString() + " " + Version.ToString();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/Test.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/Test.cs
@@ -1,330 +1,330 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Collections;
-	using System.Collections.Specialized;
-	using System.Reflection;
-
-	/// <summary>
-	///		Test Class.
-	/// </summary>
-	public abstract class Test : ITest, IComparable
-	{
-		#region Fields
-		/// <summary>
-		/// TestName that identifies this test
-		/// </summary>
-		private TestName testName;
-
-		/// <summary>
-		/// Indicates whether the test should be executed
-		/// </summary>
-		private RunState runState;
-
-		/// <summary>
-		/// The reason for not running the test
-		/// </summary>
-		private string ignoreReason;
-		
-		/// <summary>
-		/// Description for this test 
-		/// </summary>
-		private string description;
-		
-		/// <summary>
-		/// Test suite containing this test, or null
-		/// </summary>
-		private Test parent;
-		
-		/// <summary>
-		/// List of categories applying to this test
-		/// </summary>
-		private IList categories;
-
-		/// <summary>
-		/// A dictionary of properties, used to add information
-		/// to tests without requiring the class to change.
-		/// </summary>
-		private IDictionary properties;
-
-		/// <summary>
-		/// The System.Type of the fixture for this test suite, if there is one
-		/// </summary>
-		private Type fixtureType;
-
-		/// <summary>
-		/// The fixture object, if it has been created
-		/// </summary>
-		private object fixture;
-
-		#endregion
-
-		#region Construction
-
-		/// <summary>
-		/// Constructs a test given its name
-		/// </summary>
-		/// <param name="name">The name of the test</param>
-		protected Test( string name )
-		{
-			this.testName = new TestName();
-			this.testName.FullName = name;
-			this.testName.Name = name;
-			this.testName.TestID = new TestID();
-
-            this.runState = RunState.Runnable;
-		}
-
-		/// <summary>
-		/// Constructs a test given the path through the
-		/// test hierarchy to its parent and a name.
-		/// </summary>
-		/// <param name="pathName">The parent tests full name</param>
-		/// <param name="name">The name of the test</param>
-		protected Test( string pathName, string name ) 
-		{ 
-			this.testName = new TestName();
-			this.testName.FullName = pathName == null || pathName == string.Empty 
-				? name : pathName + "." + name;
-			this.testName.Name = name;
-			this.testName.TestID = new TestID();
-
-            this.runState = RunState.Runnable;
-		}
-
-		/// <summary>
-		/// Constructs a test given a TestName object
-		/// </summary>
-		/// <param name="testName">The TestName for this test</param>
-		protected Test( TestName testName )
-		{
-			this.testName = testName;
-			
-			this.runState = RunState.Runnable;
-		}
-
-		/// <summary>
-		/// Constructs a test given a fixture type
-		/// </summary>
-		/// <param name="fixtureType">The type to use in constructiong the test</param>
-		protected Test( Type fixtureType )
-		{
-			this.testName = new TestName();
-			this.testName.FullName = fixtureType.FullName;
-			this.testName.Name = fixtureType.Namespace != null
-				? TestName.FullName.Substring( TestName.FullName.LastIndexOf( '.' ) + 1 )
-				: fixtureType.FullName;
-			this.testName.TestID = new TestID();
-
-			this.fixtureType = fixtureType;
-			this.RunState = RunState.Runnable;
-		}
-
-		/// <summary>
-		/// Construct a test given a MethodInfo
-		/// </summary>
-		/// <param name="method">The method to be used</param>
-		protected Test( MethodInfo method )
-			: this( method.ReflectedType )
-		{
-			this.testName.Name = method.DeclaringType == method.ReflectedType 
-				? method.Name : method.DeclaringType.Name + "." + method.Name;
-			this.testName.FullName = method.ReflectedType.FullName + "." + method.Name;
-		}
-
-		/// <summary>
-		/// Sets the runner id of a test and optionally its children
-		/// </summary>
-		/// <param name="runnerID">The runner id to be used</param>
-		/// <param name="recursive">True if all children should get the same id</param>
-		public void SetRunnerID( int runnerID, bool recursive )
-		{
-			this.testName.RunnerID = runnerID;
-
-			if ( recursive && this.Tests != null )
-				foreach( Test child in this.Tests )
-					child.SetRunnerID( runnerID, true );
-		}
-
-		#endregion
-
-		#region ITest Members
-
-        #region Properties
-		/// <summary>
-		/// Gets the TestName of the test
-		/// </summary>
-        public TestName TestName
-		{
-			get { return testName; }
-		}
-
-		/// <summary>
-		/// Gets a string representing the kind of test
-		/// that this object represents, for use in display.
-		/// </summary>
-		public abstract string TestType { get; }
-
-		/// <summary>
-		/// Whether or not the test should be run
-		/// </summary>
-        public RunState RunState
-        {
-            get { return runState; }
-            set { runState = value; }
-        }
-
-		/// <summary>
-		/// Reason for not running the test, if applicable
-		/// </summary>
-		public string IgnoreReason
-		{
-			get { return ignoreReason; }
-			set { ignoreReason = value; }
-		}
-
-		/// <summary>
-		/// Gets a count of test cases represented by
-		/// or contained under this test.
-		/// </summary>
-		public virtual int TestCount 
-		{ 
-			get { return 1; } 
-		}
-
-		/// <summary>
-		/// Gets a list of categories associated with this test.
-		/// </summary>
-		public IList Categories 
-		{
-			get { return categories; }
-			set { categories = value; }
-		}
-
-		/// <summary>
-		/// Gets a desctiption associated with this test.
-		/// </summary>
-		public String Description
-		{
-			get { return description; }
-			set { description = value; }
-		}
-
-		/// <summary>
-		/// Gets the property dictionary for this test
-		/// </summary>
-		public IDictionary Properties
-		{
-			get 
-			{
-				if ( properties == null )
-					properties = new ListDictionary();
-
-				return properties; 
-			}
-			set
-			{
-				properties = value;
-			}
-		}
-
-		/// <summary>
-		/// Indicates whether this test is a suite
-		/// </summary>
-		public abstract bool IsSuite { get; }
-
-		/// <summary>
-		/// Gets the parent test of this test
-		/// </summary>
-		ITest ITest.Parent 
-		{
-			get { return parent; }
-		}
-
-		/// <summary>
-		/// Gets the parent as a Test object.
-		/// Used by the core to set the parent.
-		/// </summary>
-		public Test Parent
-		{
-			get { return parent; }
-			set { parent = value; }
-		}
-
-		/// <summary>
-		/// Gets this test's child tests
-		/// </summary>
-		public abstract IList Tests { get; }
-
-		/// <summary>
-		/// Gets the Type of the fixture used in running this test
-		/// </summary>
-		public Type FixtureType
-		{
-			get { return fixtureType; }
-		}
-
-		/// <summary>
-		/// Gets or sets a fixture object for running this test
-		/// </summary>
-		public  object Fixture
-		{
-			get { return fixture; }
-			set { fixture = value; }
-        }
-        #endregion
-
-        #region Methods
-		/// <summary>
-		/// Gets a count of test cases that would be run using
-		/// the specified filter.
-		/// </summary>
-		/// <param name="filter"></param>
-		/// <returns></returns>
-        public abstract int CountTestCases(ITestFilter filter);
-        #endregion
-
-        #endregion
-
-		#region Abstract Run Methods
-		/// <summary>
-		/// Runs the test, sending notifications to a listener.
-		/// </summary>
-		/// <param name="listener">An event listener to receive notifications</param>
-		/// <returns>A TestResult</returns>
-		public abstract TestResult Run(EventListener listener);
-
-		/// <summary>
-		/// Runs the test under a particular filter, sending
-		/// notifications to a listener.
-		/// </summary>
-		/// <param name="listener">An event listener to receive notifications</param>
-		/// <param name="filter">A filter used in running the test</param>
-		/// <returns></returns>
-        public abstract TestResult Run(EventListener listener, ITestFilter filter);
-		#endregion
-		
-		#region IComparable Members
-		/// <summary>
-		/// Compares this test to another test for sorting purposes
-		/// </summary>
-		/// <param name="obj">The other test</param>
-		/// <returns>Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test</returns>
-		public int CompareTo(object obj)
-		{
-			Test other = obj as Test;
-			
-			if ( other == null )
-				return -1;
-
-			return this.TestName.FullName.CompareTo( other.TestName.FullName );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Collections;
+	using System.Collections.Specialized;
+	using System.Reflection;
+
+	/// <summary>
+	///		Test Class.
+	/// </summary>
+	public abstract class Test : ITest, IComparable
+	{
+		#region Fields
+		/// <summary>
+		/// TestName that identifies this test
+		/// </summary>
+		private TestName testName;
+
+		/// <summary>
+		/// Indicates whether the test should be executed
+		/// </summary>
+		private RunState runState;
+
+		/// <summary>
+		/// The reason for not running the test
+		/// </summary>
+		private string ignoreReason;
+		
+		/// <summary>
+		/// Description for this test 
+		/// </summary>
+		private string description;
+		
+		/// <summary>
+		/// Test suite containing this test, or null
+		/// </summary>
+		private Test parent;
+		
+		/// <summary>
+		/// List of categories applying to this test
+		/// </summary>
+		private IList categories;
+
+		/// <summary>
+		/// A dictionary of properties, used to add information
+		/// to tests without requiring the class to change.
+		/// </summary>
+		private IDictionary properties;
+
+		/// <summary>
+		/// The System.Type of the fixture for this test suite, if there is one
+		/// </summary>
+		private Type fixtureType;
+
+		/// <summary>
+		/// The fixture object, if it has been created
+		/// </summary>
+		private object fixture;
+
+		#endregion
+
+		#region Construction
+
+		/// <summary>
+		/// Constructs a test given its name
+		/// </summary>
+		/// <param name="name">The name of the test</param>
+		protected Test( string name )
+		{
+			this.testName = new TestName();
+			this.testName.FullName = name;
+			this.testName.Name = name;
+			this.testName.TestID = new TestID();
+
+            this.runState = RunState.Runnable;
+		}
+
+		/// <summary>
+		/// Constructs a test given the path through the
+		/// test hierarchy to its parent and a name.
+		/// </summary>
+		/// <param name="pathName">The parent tests full name</param>
+		/// <param name="name">The name of the test</param>
+		protected Test( string pathName, string name ) 
+		{ 
+			this.testName = new TestName();
+			this.testName.FullName = pathName == null || pathName == string.Empty 
+				? name : pathName + "." + name;
+			this.testName.Name = name;
+			this.testName.TestID = new TestID();
+
+            this.runState = RunState.Runnable;
+		}
+
+		/// <summary>
+		/// Constructs a test given a TestName object
+		/// </summary>
+		/// <param name="testName">The TestName for this test</param>
+		protected Test( TestName testName )
+		{
+			this.testName = testName;
+			
+			this.runState = RunState.Runnable;
+		}
+
+		/// <summary>
+		/// Constructs a test given a fixture type
+		/// </summary>
+		/// <param name="fixtureType">The type to use in constructiong the test</param>
+		protected Test( Type fixtureType )
+		{
+			this.testName = new TestName();
+			this.testName.FullName = fixtureType.FullName;
+			this.testName.Name = fixtureType.Namespace != null
+				? TestName.FullName.Substring( TestName.FullName.LastIndexOf( '.' ) + 1 )
+				: fixtureType.FullName;
+			this.testName.TestID = new TestID();
+
+			this.fixtureType = fixtureType;
+			this.RunState = RunState.Runnable;
+		}
+
+		/// <summary>
+		/// Construct a test given a MethodInfo
+		/// </summary>
+		/// <param name="method">The method to be used</param>
+		protected Test( MethodInfo method )
+			: this( method.ReflectedType )
+		{
+			this.testName.Name = method.DeclaringType == method.ReflectedType 
+				? method.Name : method.DeclaringType.Name + "." + method.Name;
+			this.testName.FullName = method.ReflectedType.FullName + "." + method.Name;
+		}
+
+		/// <summary>
+		/// Sets the runner id of a test and optionally its children
+		/// </summary>
+		/// <param name="runnerID">The runner id to be used</param>
+		/// <param name="recursive">True if all children should get the same id</param>
+		public void SetRunnerID( int runnerID, bool recursive )
+		{
+			this.testName.RunnerID = runnerID;
+
+			if ( recursive && this.Tests != null )
+				foreach( Test child in this.Tests )
+					child.SetRunnerID( runnerID, true );
+		}
+
+		#endregion
+
+		#region ITest Members
+
+        #region Properties
+		/// <summary>
+		/// Gets the TestName of the test
+		/// </summary>
+        public TestName TestName
+		{
+			get { return testName; }
+		}
+
+		/// <summary>
+		/// Gets a string representing the kind of test
+		/// that this object represents, for use in display.
+		/// </summary>
+		public abstract string TestType { get; }
+
+		/// <summary>
+		/// Whether or not the test should be run
+		/// </summary>
+        public RunState RunState
+        {
+            get { return runState; }
+            set { runState = value; }
+        }
+
+		/// <summary>
+		/// Reason for not running the test, if applicable
+		/// </summary>
+		public string IgnoreReason
+		{
+			get { return ignoreReason; }
+			set { ignoreReason = value; }
+		}
+
+		/// <summary>
+		/// Gets a count of test cases represented by
+		/// or contained under this test.
+		/// </summary>
+		public virtual int TestCount 
+		{ 
+			get { return 1; } 
+		}
+
+		/// <summary>
+		/// Gets a list of categories associated with this test.
+		/// </summary>
+		public IList Categories 
+		{
+			get { return categories; }
+			set { categories = value; }
+		}
+
+		/// <summary>
+		/// Gets a desctiption associated with this test.
+		/// </summary>
+		public String Description
+		{
+			get { return description; }
+			set { description = value; }
+		}
+
+		/// <summary>
+		/// Gets the property dictionary for this test
+		/// </summary>
+		public IDictionary Properties
+		{
+			get 
+			{
+				if ( properties == null )
+					properties = new ListDictionary();
+
+				return properties; 
+			}
+			set
+			{
+				properties = value;
+			}
+		}
+
+		/// <summary>
+		/// Indicates whether this test is a suite
+		/// </summary>
+		public abstract bool IsSuite { get; }
+
+		/// <summary>
+		/// Gets the parent test of this test
+		/// </summary>
+		ITest ITest.Parent 
+		{
+			get { return parent; }
+		}
+
+		/// <summary>
+		/// Gets the parent as a Test object.
+		/// Used by the core to set the parent.
+		/// </summary>
+		public Test Parent
+		{
+			get { return parent; }
+			set { parent = value; }
+		}
+
+		/// <summary>
+		/// Gets this test's child tests
+		/// </summary>
+		public abstract IList Tests { get; }
+
+		/// <summary>
+		/// Gets the Type of the fixture used in running this test
+		/// </summary>
+		public Type FixtureType
+		{
+			get { return fixtureType; }
+		}
+
+		/// <summary>
+		/// Gets or sets a fixture object for running this test
+		/// </summary>
+		public  object Fixture
+		{
+			get { return fixture; }
+			set { fixture = value; }
+        }
+        #endregion
+
+        #region Methods
+		/// <summary>
+		/// Gets a count of test cases that would be run using
+		/// the specified filter.
+		/// </summary>
+		/// <param name="filter"></param>
+		/// <returns></returns>
+        public abstract int CountTestCases(ITestFilter filter);
+        #endregion
+
+        #endregion
+
+		#region Abstract Run Methods
+		/// <summary>
+		/// Runs the test, sending notifications to a listener.
+		/// </summary>
+		/// <param name="listener">An event listener to receive notifications</param>
+		/// <returns>A TestResult</returns>
+		public abstract TestResult Run(EventListener listener);
+
+		/// <summary>
+		/// Runs the test under a particular filter, sending
+		/// notifications to a listener.
+		/// </summary>
+		/// <param name="listener">An event listener to receive notifications</param>
+		/// <param name="filter">A filter used in running the test</param>
+		/// <returns></returns>
+        public abstract TestResult Run(EventListener listener, ITestFilter filter);
+		#endregion
+		
+		#region IComparable Members
+		/// <summary>
+		/// Compares this test to another test for sorting purposes
+		/// </summary>
+		/// <param name="obj">The other test</param>
+		/// <returns>Value of -1, 0 or +1 depending on whether the current test is less than, equal to or greater than the other test</returns>
+		public int CompareTo(object obj)
+		{
+			Test other = obj as Test;
+			
+			if ( other == null )
+				return -1;
+
+			return this.TestName.FullName.CompareTo( other.TestName.FullName );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestAssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestAssemblyInfo.cs
@@ -1,61 +1,61 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-using System.Reflection;
-using System.IO;
-using System.Text;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestAssemblyInfo holds information about a loaded test assembly
-	/// </summary>
-	[Serializable]
-	public class TestAssemblyInfo
-	{
-		private string assemblyName;
-		private Version runtimeVersion;
-		private IList testFrameworks;
-
-        /// <summary>
-        /// Constructs a TestAssemblyInfo
-        /// </summary>
-        /// <param name="assemblyName">The name of the assembly</param>
-        /// <param name="runtimeVersion">The version of the runtime for which the assembly was built</param>
-        /// <param name="testFrameworks">A list of test framework useds by the assembly</param>
-		public TestAssemblyInfo( string assemblyName, Version runtimeVersion, IList testFrameworks )
-		{
-			this.assemblyName = assemblyName;
-			this.runtimeVersion = runtimeVersion;
-			this.testFrameworks = testFrameworks;
-		}
-
-        /// <summary>
-        /// Gets the name of the assembly
-        /// </summary>
-		public string Name
-		{
-			get { return assemblyName; }
-		}
-
-        /// <summary>
-        /// Gets the runtime version for which the assembly was built
-        /// </summary>
-		public Version RuntimeVersion
-		{
-			get { return runtimeVersion; }
-		}
-
-        /// <summary>
-        /// Gets a list of testframeworks referenced by the assembly
-        /// </summary>
-		public IList TestFrameworks
-		{
-			get { return testFrameworks; }
-		}
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+using System.Reflection;
+using System.IO;
+using System.Text;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestAssemblyInfo holds information about a loaded test assembly
+	/// </summary>
+	[Serializable]
+	public class TestAssemblyInfo
+	{
+		private string assemblyName;
+		private Version runtimeVersion;
+		private IList testFrameworks;
+
+        /// <summary>
+        /// Constructs a TestAssemblyInfo
+        /// </summary>
+        /// <param name="assemblyName">The name of the assembly</param>
+        /// <param name="runtimeVersion">The version of the runtime for which the assembly was built</param>
+        /// <param name="testFrameworks">A list of test framework useds by the assembly</param>
+		public TestAssemblyInfo( string assemblyName, Version runtimeVersion, IList testFrameworks )
+		{
+			this.assemblyName = assemblyName;
+			this.runtimeVersion = runtimeVersion;
+			this.testFrameworks = testFrameworks;
+		}
+
+        /// <summary>
+        /// Gets the name of the assembly
+        /// </summary>
+		public string Name
+		{
+			get { return assemblyName; }
+		}
+
+        /// <summary>
+        /// Gets the runtime version for which the assembly was built
+        /// </summary>
+		public Version RuntimeVersion
+		{
+			get { return runtimeVersion; }
+		}
+
+        /// <summary>
+        /// Gets a list of testframeworks referenced by the assembly
+        /// </summary>
+		public IList TestFrameworks
+		{
+			get { return testFrameworks; }
+		}
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestCaseResult.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestCaseResult.cs
@@ -1,41 +1,41 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Text;
-
-	/// <summary>
-	/// TestCaseResult represents the result of a test case execution
-	/// </summary>
-	[Serializable]
-	public class TestCaseResult : TestResult
-	{
-        /// <summary>
-        /// Construct a result for a test case
-        /// </summary>
-        /// <param name="testCase">The test case for which this is a result</param>
-		public TestCaseResult(TestInfo testCase)
-			: base(testCase, testCase.TestName.FullName) { }
-
-		/// <summary>
-		/// Construct a result from a string - used for tests
-		/// </summary>
-		/// <param name="testCaseString"></param>
-		public TestCaseResult(string testCaseString) 
-			: base(null, testCaseString) { }
-
-        /// <summary>
-        /// Accept a ResultVisitor
-        /// </summary>
-        /// <param name="visitor">The visitor to accept</param>
-		public override void Accept(ResultVisitor visitor) 
-		{
-			visitor.Visit(this);
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Text;
+
+	/// <summary>
+	/// TestCaseResult represents the result of a test case execution
+	/// </summary>
+	[Serializable]
+	public class TestCaseResult : TestResult
+	{
+        /// <summary>
+        /// Construct a result for a test case
+        /// </summary>
+        /// <param name="testCase">The test case for which this is a result</param>
+		public TestCaseResult(TestInfo testCase)
+			: base(testCase, testCase.TestName.FullName) { }
+
+		/// <summary>
+		/// Construct a result from a string - used for tests
+		/// </summary>
+		/// <param name="testCaseString"></param>
+		public TestCaseResult(string testCaseString) 
+			: base(null, testCaseString) { }
+
+        /// <summary>
+        /// Accept a ResultVisitor
+        /// </summary>
+        /// <param name="visitor">The visitor to accept</param>
+		public override void Accept(ResultVisitor visitor) 
+		{
+			visitor.Visit(this);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestFilter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestFilter.cs
@@ -1,102 +1,102 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// Interface to be implemented by filters applied to tests.
-	/// The filter applies when running the test, after it has been
-	/// loaded, since this is the only time an ITest exists.
-	/// </summary>
-	[Serializable]
-	public abstract class TestFilter : ITestFilter
-	{
-		/// <summary>
-		/// Unique Empty filter.
-		/// </summary>
-		public static TestFilter Empty = new EmptyFilter();
-
-		/// <summary>
-		/// Indicates whether this is the EmptyFilter
-		/// </summary>
-		public bool IsEmpty
-		{
-			get { return this is TestFilter.EmptyFilter; }
-		}
-
-		/// <summary>
-		/// Determine if a particular test passes the filter criteria. The default 
-		/// implementation checks the test itself, its parents and any descendants.
-		/// 
-		/// Derived classes may override this method or any of the Match methods
-		/// to change the behavior of the filter.
-		/// </summary>
-		/// <param name="test">The test to which the filter is applied</param>
-		/// <returns>True if the test passes the filter, otherwise false</returns>
-		public virtual bool Pass( ITest test )
-		{
-			return Match(test) || MatchParent(test) || MatchDescendant(test);
-		}
-
-		/// <summary>
-		/// Determine whether the test itself matches the filter criteria, without
-		/// examining either parents or descendants.
-		/// </summary>
-		/// <param name="test">The test to which the filter is applied</param>
-		/// <returns>True if the filter matches the any parent of the test</returns>
-		public abstract bool Match(ITest test);
-
-		/// <summary>
-		/// Determine whether any ancestor of the test mateches the filter criteria
-		/// </summary>
-		/// <param name="test">The test to which the filter is applied</param>
-		/// <returns>True if the filter matches the an ancestor of the test</returns>
-		protected virtual bool MatchParent(ITest test)
-		{
-			return (test.RunState != RunState.Explicit && test.Parent != null && 
-				( Match(test.Parent) || MatchParent(test.Parent)) );
-		}
-
-		/// <summary>
-		/// Determine whether any descendant of the test matches the filter criteria.
-		/// </summary>
-		/// <param name="test">The test to be matched</param>
-		/// <returns>True if at least one descendant matches the filter criteria</returns>
-		protected virtual bool MatchDescendant(ITest test)
-		{
-			if (!test.IsSuite || test.Tests == null)
-				return false;
-
-			foreach (ITest child in test.Tests)
-			{
-				if (Match(child) || MatchDescendant(child))
-					return true;
-			}
-
-			return false;
-		}
-		
-		/// <summary>
-		/// Nested class provides an empty filter - one that always
-		/// returns true when called, unless the test is marked explicit.
-		/// </summary>
-		[Serializable]
-		private class EmptyFilter : TestFilter
-		{
-			public override bool Match( ITest test )
-			{
-				return test.RunState != RunState.Explicit;
-			}
-
-			public override bool Pass( ITest test )
-			{
-				return test.RunState != RunState.Explicit;
-			}
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// Interface to be implemented by filters applied to tests.
+	/// The filter applies when running the test, after it has been
+	/// loaded, since this is the only time an ITest exists.
+	/// </summary>
+	[Serializable]
+	public abstract class TestFilter : ITestFilter
+	{
+		/// <summary>
+		/// Unique Empty filter.
+		/// </summary>
+		public static TestFilter Empty = new EmptyFilter();
+
+		/// <summary>
+		/// Indicates whether this is the EmptyFilter
+		/// </summary>
+		public bool IsEmpty
+		{
+			get { return this is TestFilter.EmptyFilter; }
+		}
+
+		/// <summary>
+		/// Determine if a particular test passes the filter criteria. The default 
+		/// implementation checks the test itself, its parents and any descendants.
+		/// 
+		/// Derived classes may override this method or any of the Match methods
+		/// to change the behavior of the filter.
+		/// </summary>
+		/// <param name="test">The test to which the filter is applied</param>
+		/// <returns>True if the test passes the filter, otherwise false</returns>
+		public virtual bool Pass( ITest test )
+		{
+			return Match(test) || MatchParent(test) || MatchDescendant(test);
+		}
+
+		/// <summary>
+		/// Determine whether the test itself matches the filter criteria, without
+		/// examining either parents or descendants.
+		/// </summary>
+		/// <param name="test">The test to which the filter is applied</param>
+		/// <returns>True if the filter matches the any parent of the test</returns>
+		public abstract bool Match(ITest test);
+
+		/// <summary>
+		/// Determine whether any ancestor of the test mateches the filter criteria
+		/// </summary>
+		/// <param name="test">The test to which the filter is applied</param>
+		/// <returns>True if the filter matches the an ancestor of the test</returns>
+		protected virtual bool MatchParent(ITest test)
+		{
+			return (test.RunState != RunState.Explicit && test.Parent != null && 
+				( Match(test.Parent) || MatchParent(test.Parent)) );
+		}
+
+		/// <summary>
+		/// Determine whether any descendant of the test matches the filter criteria.
+		/// </summary>
+		/// <param name="test">The test to be matched</param>
+		/// <returns>True if at least one descendant matches the filter criteria</returns>
+		protected virtual bool MatchDescendant(ITest test)
+		{
+			if (!test.IsSuite || test.Tests == null)
+				return false;
+
+			foreach (ITest child in test.Tests)
+			{
+				if (Match(child) || MatchDescendant(child))
+					return true;
+			}
+
+			return false;
+		}
+		
+		/// <summary>
+		/// Nested class provides an empty filter - one that always
+		/// returns true when called, unless the test is marked explicit.
+		/// </summary>
+		[Serializable]
+		private class EmptyFilter : TestFilter
+		{
+			public override bool Match( ITest test )
+			{
+				return test.RunState != RunState.Explicit;
+			}
+
+			public override bool Pass( ITest test )
+			{
+				return test.RunState != RunState.Explicit;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestID.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestID.cs
@@ -1,144 +1,144 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestID encapsulates a unique identifier for tests. As
-	/// currently implemented, this is an integer and is unique
-	/// within the AppDomain. TestID is one component of a 
-	/// TestName. We use this object, rather than a raw int,
-	/// for two reasons: (1) to hide the implementation so
-	/// it may be changed later if necessary and (2) so that the
-	/// id may be null in a "weak" TestName.
-	/// </summary>
-	[Serializable]
-	public class TestID : ICloneable
-	{
-		#region Fields
-			/// <summary>
-			/// The int key that distinguishes this test from all others created
-			/// by the same runner.
-			/// </summary>
-			private int id;
-		
-		/// <summary>
-		/// Static value to seed ids. It's started at 1000 so any
-		/// uninitialized ids will stand out.
-		/// </summary>
-		private static int nextID = 1000;
-
-		#endregion
-
-		#region Construction
-		/// <summary>
-		/// Construct a new TestID
-		/// </summary>
-		public TestID()
-		{
-			this.id = unchecked( nextID++ );
-		}
-
-		/// <summary>
-		/// Construct a TestID with a given value.
-		/// Used in parsing test names and in order
-		/// to construct an artificial test node for
-		/// aggregating multiple test runners.
-		/// </summary>
-		/// <param name="id"></param>
-		public TestID( int id )
-		{
-			this.id = id;
-		}
-		#endregion
-
-		#region Static Methods
-		/// <summary>
-		/// Parse a TestID from it's string representation
-		/// </summary>
-		/// <param name="s"></param>
-		/// <returns></returns>
-		public static TestID Parse( string s )
-		{
-			int id = Int32.Parse( s );
-			return new TestID( id );
-		}
-		#endregion
-
-		#region Object Overrides
-		/// <summary>
-		/// Override of Equals method to allow comparison of TestIDs
-		/// </summary>
-		/// <param name="obj"></param>
-		/// <returns></returns>
-		public override bool Equals(object obj)
-		{
-			TestID other = obj as TestID;
-			if ( other != null )
-				return this.id == other.id;
-
-			return base.Equals (obj);
-		}
-
-		/// <summary>
-		/// Override of GetHashCode for TestIDs
-		/// </summary>
-		/// <returns></returns>
-		public override int GetHashCode()
-		{
-			return id.GetHashCode();
-		}
-
-		/// <summary>
-		/// Override ToString() to display the int id
-		/// </summary>
-		/// <returns></returns>
-		public override string ToString()
-		{
-			return id.ToString();
-		}
-		#endregion
-
-		#region Operator Overrides
-        /// <summary>
-        /// Operator == override
-        /// </summary>
-        /// <param name="id1"></param>
-        /// <param name="id2"></param>
-        /// <returns></returns>
-		public static bool operator ==( TestID id1, TestID id2 )
-		{
-			if ( Object.Equals( id1, null ) )
-				return Object.Equals( id2, null );
-
-			return id1.Equals( id2 );
-		}
-
-        /// <summary>
-        /// Operator != override
-        /// </summary>
-        /// <param name="id1"></param>
-        /// <param name="id2"></param>
-        /// <returns></returns>
-		public static bool operator !=( TestID id1, TestID id2 )
-		{
-			return id1 == id2 ? false : true;
-		}
-		#endregion
-
-		#region ICloneable Implementation
-        /// <summary>
-        /// Clone this TestID
-        /// </summary>
-        /// <returns>An identical TestID</returns>
-		public object Clone()
-		{
-			return this.MemberwiseClone();
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestID encapsulates a unique identifier for tests. As
+	/// currently implemented, this is an integer and is unique
+	/// within the AppDomain. TestID is one component of a 
+	/// TestName. We use this object, rather than a raw int,
+	/// for two reasons: (1) to hide the implementation so
+	/// it may be changed later if necessary and (2) so that the
+	/// id may be null in a "weak" TestName.
+	/// </summary>
+	[Serializable]
+	public class TestID : ICloneable
+	{
+		#region Fields
+			/// <summary>
+			/// The int key that distinguishes this test from all others created
+			/// by the same runner.
+			/// </summary>
+			private int id;
+		
+		/// <summary>
+		/// Static value to seed ids. It's started at 1000 so any
+		/// uninitialized ids will stand out.
+		/// </summary>
+		private static int nextID = 1000;
+
+		#endregion
+
+		#region Construction
+		/// <summary>
+		/// Construct a new TestID
+		/// </summary>
+		public TestID()
+		{
+			this.id = unchecked( nextID++ );
+		}
+
+		/// <summary>
+		/// Construct a TestID with a given value.
+		/// Used in parsing test names and in order
+		/// to construct an artificial test node for
+		/// aggregating multiple test runners.
+		/// </summary>
+		/// <param name="id"></param>
+		public TestID( int id )
+		{
+			this.id = id;
+		}
+		#endregion
+
+		#region Static Methods
+		/// <summary>
+		/// Parse a TestID from it's string representation
+		/// </summary>
+		/// <param name="s"></param>
+		/// <returns></returns>
+		public static TestID Parse( string s )
+		{
+			int id = Int32.Parse( s );
+			return new TestID( id );
+		}
+		#endregion
+
+		#region Object Overrides
+		/// <summary>
+		/// Override of Equals method to allow comparison of TestIDs
+		/// </summary>
+		/// <param name="obj"></param>
+		/// <returns></returns>
+		public override bool Equals(object obj)
+		{
+			TestID other = obj as TestID;
+			if ( other != null )
+				return this.id == other.id;
+
+			return base.Equals (obj);
+		}
+
+		/// <summary>
+		/// Override of GetHashCode for TestIDs
+		/// </summary>
+		/// <returns></returns>
+		public override int GetHashCode()
+		{
+			return id.GetHashCode();
+		}
+
+		/// <summary>
+		/// Override ToString() to display the int id
+		/// </summary>
+		/// <returns></returns>
+		public override string ToString()
+		{
+			return id.ToString();
+		}
+		#endregion
+
+		#region Operator Overrides
+        /// <summary>
+        /// Operator == override
+        /// </summary>
+        /// <param name="id1"></param>
+        /// <param name="id2"></param>
+        /// <returns></returns>
+		public static bool operator ==( TestID id1, TestID id2 )
+		{
+			if ( Object.Equals( id1, null ) )
+				return Object.Equals( id2, null );
+
+			return id1.Equals( id2 );
+		}
+
+        /// <summary>
+        /// Operator != override
+        /// </summary>
+        /// <param name="id1"></param>
+        /// <param name="id2"></param>
+        /// <returns></returns>
+		public static bool operator !=( TestID id1, TestID id2 )
+		{
+			return id1 == id2 ? false : true;
+		}
+		#endregion
+
+		#region ICloneable Implementation
+        /// <summary>
+        /// Clone this TestID
+        /// </summary>
+        /// <returns>An identical TestID</returns>
+		public object Clone()
+		{
+			return this.MemberwiseClone();
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestInfo.cs
@@ -1,249 +1,249 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestInfo holds common info about a test. It represents only
-	/// a single test or a suite and contains no references to other
-	/// tests. Since it is informational only, it can easily be passed
-	/// around using .Net remoting.
-	/// 
-	/// TestInfo is used directly in all EventListener events and in
-	/// TestResults. It contains an ID, which can be used by a 
-	/// runner to locate the actual test.
-	/// 
-	/// TestInfo also serves as the base class for TestNode, which
-	/// adds hierarchical information and is used in client code to
-	/// maintain a visible image of the structure of the tests.
-	/// </summary>
-	[Serializable]
-	public class TestInfo : ITest
-	{
-		#region Instance Variables
-		/// <summary>
-		/// TestName that identifies this test
-		/// </summary>
-		private TestName testName;
-
-		private string testType;
-
-        private RunState runState;
-
-		/// <summary>
-		/// Reason for not running the test
-		/// </summary>
-		private string ignoreReason;
-
-		/// <summary>
-		/// Number of test cases in this test or suite
-		/// </summary>
-		private int testCaseCount;
-
-		/// <summary>
-		/// True if this is a suite
-		/// </summary>
-		private bool isSuite;
-
-		/// <summary>
-		/// The test description
-		/// </summary>
-		private string description;
-
-		/// <summary>
-		/// A list of all the categories assigned to a test
-		/// </summary>
-		private ArrayList categories = new ArrayList();
-
-		/// <summary>
-		/// A dictionary of properties, used to add information
-		/// to tests without requiring the class to change.
-		/// </summary>
-		private ListDictionary properties = new ListDictionary();
-
-		#endregion
-
-		#region Constructors
-		/// <summary>
-		/// Construct from an ITest
-		/// </summary>
-		/// <param name="test">Test from which a TestNode is to be constructed</param>
-		public TestInfo( ITest test )
-		{
-			this.testName = (TestName)test.TestName.Clone();
-			this.testType = test.TestType;
-
-            this.runState = test.RunState;
-			this.ignoreReason = test.IgnoreReason;
-			this.description = test.Description;
-			this.isSuite = test.IsSuite;
-
-			if (test.Categories != null) 
-				this.categories.AddRange(test.Categories);
-			if (test.Properties != null)
-			{
-				this.properties = new ListDictionary();
-				foreach( DictionaryEntry entry in test.Properties )
-					this.properties.Add( entry.Key, entry.Value );
-			}
-
-			this.testCaseCount = test.TestCount;
-		}
-
-		/// <summary>
-		/// Construct as a parent to multiple tests.
-		/// </summary>
-		/// <param name="testName">The name to use for the new test</param>
-		/// <param name="tests">An array of child tests</param>
-		public TestInfo( TestName testName, ITest[] tests )
-		{
-			this.testName = testName;
-			this.testType = "Test Project";
-
-            this.runState = RunState.Runnable;
-			this.ignoreReason = null;
-			this.description = null;
-			this.isSuite = true;
-
-			foreach( ITest test in tests )
-			{
-				this.testCaseCount += test.TestCount;
-			}
-		}
-		#endregion
-
-		#region Properties
-		/// <summary>
-		/// Gets the completely specified name of the test
-		/// encapsulated in a TestName object.
-		/// </summary>
-		public TestName TestName
-		{
-			get { return testName; }
-		}
-
-		/// <summary>
-		/// Gets a string representing the kind of test this
-		/// object represents for display purposes.
-		/// </summary>
-		public string TestType
-		{
-			get { return testType; }
-		}
-
-		/// <summary>
-		/// The test description 
-		/// </summary>
-		public string Description
-		{
-			get { return description; }
-			set { description = value; }
-		}
-
-		/// <summary>
-		/// Gets the RunState for this test
-		/// </summary>
-        public RunState RunState
-        {
-            get { return runState; }
-            set { runState = value; }
-        }
-
-		/// <summary>
-		/// The reason for ignoring a test
-		/// </summary>
-		public string IgnoreReason
-		{
-			get { return ignoreReason; }
-			set { ignoreReason = value; }
-		}
-
-		/// <summary>
-		/// Count of test cases in this test.
-		/// </summary>
-		public int TestCount
-		{ 
-			get { return testCaseCount; } 
-		}
-
-		/// <summary>
-		///  Gets the parent test of this test
-		/// </summary>
-		public virtual ITest Parent
-		{
-			get { return null; }
-		}
-
-		/// <summary>
-		/// Gets a list of the categories applied to this test
-		/// </summary>
-		public IList Categories 
-		{
-			get { return categories; }
-		}
-
-		/// <summary>
-		/// Gets a list of any child tests
-		/// </summary>
-		public virtual IList Tests
-		{
-			get { return null; }
-		}
-
-		/// <summary>
-		/// True if this is a suite, false if a test case
-		/// </summary>
-		public bool IsSuite
-		{
-			get { return isSuite; }
-		}
-
-		/// <summary>
-		/// Gets the Properties dictionary for this test
-		/// </summary>
-		public IDictionary Properties
-		{
-			get 
-			{
-				if ( properties == null )
-					properties = new ListDictionary();
-
-				return properties; 
-			}
-		}
-		#endregion
-
-        #region Methods
-		/// <summary>
-		/// Counts the test cases that would be run if this
-		/// test were executed using the provided filter.
-		/// </summary>
-		/// <param name="filter">The filter to apply</param>
-		/// <returns>A count of test cases</returns>
-        public virtual int CountTestCases(ITestFilter filter)
-        {
-            if (filter.IsEmpty)
-                return TestCount;
-
-            if (!isSuite)
-                return filter.Pass(this) ? 1 : 0;
-
-            int count = 0;
-            if (filter.Pass(this))
-            {
-                foreach (ITest test in Tests)
-                {
-                    count += test.CountTestCases(filter);
-                }
-            }
-            return count;
-        }
-        #endregion
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+using System.Collections.Specialized;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestInfo holds common info about a test. It represents only
+	/// a single test or a suite and contains no references to other
+	/// tests. Since it is informational only, it can easily be passed
+	/// around using .Net remoting.
+	/// 
+	/// TestInfo is used directly in all EventListener events and in
+	/// TestResults. It contains an ID, which can be used by a 
+	/// runner to locate the actual test.
+	/// 
+	/// TestInfo also serves as the base class for TestNode, which
+	/// adds hierarchical information and is used in client code to
+	/// maintain a visible image of the structure of the tests.
+	/// </summary>
+	[Serializable]
+	public class TestInfo : ITest
+	{
+		#region Instance Variables
+		/// <summary>
+		/// TestName that identifies this test
+		/// </summary>
+		private TestName testName;
+
+		private string testType;
+
+        private RunState runState;
+
+		/// <summary>
+		/// Reason for not running the test
+		/// </summary>
+		private string ignoreReason;
+
+		/// <summary>
+		/// Number of test cases in this test or suite
+		/// </summary>
+		private int testCaseCount;
+
+		/// <summary>
+		/// True if this is a suite
+		/// </summary>
+		private bool isSuite;
+
+		/// <summary>
+		/// The test description
+		/// </summary>
+		private string description;
+
+		/// <summary>
+		/// A list of all the categories assigned to a test
+		/// </summary>
+		private ArrayList categories = new ArrayList();
+
+		/// <summary>
+		/// A dictionary of properties, used to add information
+		/// to tests without requiring the class to change.
+		/// </summary>
+		private ListDictionary properties = new ListDictionary();
+
+		#endregion
+
+		#region Constructors
+		/// <summary>
+		/// Construct from an ITest
+		/// </summary>
+		/// <param name="test">Test from which a TestNode is to be constructed</param>
+		public TestInfo( ITest test )
+		{
+			this.testName = (TestName)test.TestName.Clone();
+			this.testType = test.TestType;
+
+            this.runState = test.RunState;
+			this.ignoreReason = test.IgnoreReason;
+			this.description = test.Description;
+			this.isSuite = test.IsSuite;
+
+			if (test.Categories != null) 
+				this.categories.AddRange(test.Categories);
+			if (test.Properties != null)
+			{
+				this.properties = new ListDictionary();
+				foreach( DictionaryEntry entry in test.Properties )
+					this.properties.Add( entry.Key, entry.Value );
+			}
+
+			this.testCaseCount = test.TestCount;
+		}
+
+		/// <summary>
+		/// Construct as a parent to multiple tests.
+		/// </summary>
+		/// <param name="testName">The name to use for the new test</param>
+		/// <param name="tests">An array of child tests</param>
+		public TestInfo( TestName testName, ITest[] tests )
+		{
+			this.testName = testName;
+			this.testType = "Test Project";
+
+            this.runState = RunState.Runnable;
+			this.ignoreReason = null;
+			this.description = null;
+			this.isSuite = true;
+
+			foreach( ITest test in tests )
+			{
+				this.testCaseCount += test.TestCount;
+			}
+		}
+		#endregion
+
+		#region Properties
+		/// <summary>
+		/// Gets the completely specified name of the test
+		/// encapsulated in a TestName object.
+		/// </summary>
+		public TestName TestName
+		{
+			get { return testName; }
+		}
+
+		/// <summary>
+		/// Gets a string representing the kind of test this
+		/// object represents for display purposes.
+		/// </summary>
+		public string TestType
+		{
+			get { return testType; }
+		}
+
+		/// <summary>
+		/// The test description 
+		/// </summary>
+		public string Description
+		{
+			get { return description; }
+			set { description = value; }
+		}
+
+		/// <summary>
+		/// Gets the RunState for this test
+		/// </summary>
+        public RunState RunState
+        {
+            get { return runState; }
+            set { runState = value; }
+        }
+
+		/// <summary>
+		/// The reason for ignoring a test
+		/// </summary>
+		public string IgnoreReason
+		{
+			get { return ignoreReason; }
+			set { ignoreReason = value; }
+		}
+
+		/// <summary>
+		/// Count of test cases in this test.
+		/// </summary>
+		public int TestCount
+		{ 
+			get { return testCaseCount; } 
+		}
+
+		/// <summary>
+		///  Gets the parent test of this test
+		/// </summary>
+		public virtual ITest Parent
+		{
+			get { return null; }
+		}
+
+		/// <summary>
+		/// Gets a list of the categories applied to this test
+		/// </summary>
+		public IList Categories 
+		{
+			get { return categories; }
+		}
+
+		/// <summary>
+		/// Gets a list of any child tests
+		/// </summary>
+		public virtual IList Tests
+		{
+			get { return null; }
+		}
+
+		/// <summary>
+		/// True if this is a suite, false if a test case
+		/// </summary>
+		public bool IsSuite
+		{
+			get { return isSuite; }
+		}
+
+		/// <summary>
+		/// Gets the Properties dictionary for this test
+		/// </summary>
+		public IDictionary Properties
+		{
+			get 
+			{
+				if ( properties == null )
+					properties = new ListDictionary();
+
+				return properties; 
+			}
+		}
+		#endregion
+
+        #region Methods
+		/// <summary>
+		/// Counts the test cases that would be run if this
+		/// test were executed using the provided filter.
+		/// </summary>
+		/// <param name="filter">The filter to apply</param>
+		/// <returns>A count of test cases</returns>
+        public virtual int CountTestCases(ITestFilter filter)
+        {
+            if (filter.IsEmpty)
+                return TestCount;
+
+            if (!isSuite)
+                return filter.Pass(this) ? 1 : 0;
+
+            int count = 0;
+            if (filter.Pass(this))
+            {
+                foreach (ITest test in Tests)
+                {
+                    count += test.CountTestCases(filter);
+                }
+            }
+            return count;
+        }
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestName.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestName.cs
@@ -1,204 +1,204 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestName encapsulates all info needed to identify and
-	/// locate a test that has been loaded by a runner. It consists
-	/// of a three components: the simple name of the test, an int
-	/// id that is unique to a given tree of tests and an int 
-	/// runner id that identifies the particular runner that
-	/// holds the test instance.
-	/// </summary>
-	[Serializable]
-	public class TestName : ICloneable
-	{
-		#region Fields
-		/// <summary>
-		/// ID that uniquely identifies the test
-		/// </summary>
-		private TestID testID;
-
-		private int runnerID;
-
-		/// <summary>
-		/// The simple name of the test, without qualification
-		/// </summary>
-		private string name;
-
-		/// <summary>
-		/// The fully qualified name of the test
-		/// </summary>
-		private string fullName;
-		#endregion
-
-		#region Properties
-		/// <summary>
-		/// Gets or sets the TestID that uniquely identifies this test
-		/// </summary>
-		public TestID TestID
-		{
-			get { return testID; }
-			set { testID = value; }
-		}
-
-		/// <summary>
-		/// Gets the ID for the runner that created the test from
-		/// the TestID, or returns -1 if the TestID is null.
-		/// </summary>
-		public int RunnerID
-		{
-			get { return runnerID; }
-			set { runnerID = value; }
-		}
-
-		/// <summary>
-		/// Gets or sets the simple name of the test
-		/// </summary>
-		public string Name
-		{
-			get { return name; }
-			set { name = value; }
-		}
-
-		/// <summary>
-		/// Gets or sets the full (qualified) name of the test
-		/// </summary>
-		public string FullName
-		{
-			get { return fullName; }
-			set { fullName = value; }
-		}
-
-		/// <summary>
-		/// Get the string representation of this test name, incorporating all
-		/// the components of the name.
-		/// </summary>
-		public string UniqueName
-		{
-			get
-			{
-				if ( this.testID == null )
-					return string.Format( "[{0}]{1}", this.runnerID, this.fullName );
-				else
-					return string.Format( "[{0}-{1}]{2}", this.RunnerID, this.testID, this.fullName );
-			}
-		}
-		#endregion
-
-		#region Static Methods
-        /// <summary>
-        /// Parse a string representation of a TestName,
-        /// returning a TestName.
-        /// </summary>
-        /// <param name="s">The string to parse</param>
-        /// <returns>A TestName</returns>
-		public static TestName Parse( string s )
-		{
-			if ( s == null ) throw new ArgumentNullException( "s", "Cannot parse a null string" );
-
-			TestName testName = new TestName();
-			testName.FullName = testName.Name = s;
-
-			if ( s.StartsWith( "[" ) )
-			{
-				int rbrack = s.IndexOf( "]" );
-				if ( rbrack < 0 || rbrack == s.Length - 1 )
-					throw new FormatException( "Invalid TestName format: " + s );
-
-				testName.FullName = testName.Name = s.Substring( rbrack + 1 );
-
-				int dash = s.IndexOf( "-" );
-				if ( dash < 0 || dash > rbrack )
-					testName.RunnerID = Int32.Parse( s.Substring( 1, rbrack - 1 ) );
-				else
-				{
-					testName.RunnerID = Int32.Parse( s.Substring( 1, dash - 1 ) );
-					testName.TestID = TestID.Parse( s.Substring( dash + 1, rbrack - dash - 1 ) );
-				}
-			}
-
-			return testName;
-		}
-		#endregion
-
-		#region Object Overrides
-		/// <summary>
-		/// Compares two TestNames for equality
-		/// </summary>
-		/// <param name="obj">the other TestID</param>
-		/// <returns>True if the two TestIDs are equal</returns>
-		public override bool Equals(object obj)
-		{
-			TestName other = obj as TestName;
-			if ( other == null )
-				return base.Equals (obj);
-
-			return this.TestID == other.testID
-				&& this.runnerID == other.runnerID 
-				&& this.fullName == other.fullName;
-		}
-
-		/// <summary>
-		/// Calculates a hashcode for this TestID
-		/// </summary>
-		/// <returns>The hash code.</returns>
-		public override int GetHashCode()
-		{
-			return unchecked( this.testID.GetHashCode() + this.fullName.GetHashCode() );
-		}
-
-		/// <summary>
-		/// Override ToString() to display the UniqueName
-		/// </summary>
-		/// <returns></returns>
-		public override string ToString()
-		{
-			return this.UniqueName;
-		}
-		#endregion
-
-		#region Operator Overrides
-        /// <summary>
-        /// Override the == operator
-        /// </summary>
-        /// <param name="name1"></param>
-        /// <param name="name2"></param>
-        /// <returns></returns>
-		public static bool operator ==( TestName name1, TestName name2 )
-		{
-			if ( Object.Equals( name1, null ) )
-				return Object.Equals( name2, null );
-
-			return name1.Equals( name2 );
-		}
-
-        /// <summary>
-        /// Override the != operator
-        /// </summary>
-        /// <param name="name1"></param>
-        /// <param name="name2"></param>
-        /// <returns></returns>
-		public static bool operator !=( TestName name1, TestName name2 )
-		{
-			return name1 == name2 ? false : true;
-		}
-		#endregion
-
-		#region ICloneable Implementation
-		/// <summary>
-		/// Returns a duplicate of this TestName
-		/// </summary>
-		/// <returns></returns>
-		public object Clone()
-		{
-			return this.MemberwiseClone();
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestName encapsulates all info needed to identify and
+	/// locate a test that has been loaded by a runner. It consists
+	/// of a three components: the simple name of the test, an int
+	/// id that is unique to a given tree of tests and an int 
+	/// runner id that identifies the particular runner that
+	/// holds the test instance.
+	/// </summary>
+	[Serializable]
+	public class TestName : ICloneable
+	{
+		#region Fields
+		/// <summary>
+		/// ID that uniquely identifies the test
+		/// </summary>
+		private TestID testID;
+
+		private int runnerID;
+
+		/// <summary>
+		/// The simple name of the test, without qualification
+		/// </summary>
+		private string name;
+
+		/// <summary>
+		/// The fully qualified name of the test
+		/// </summary>
+		private string fullName;
+		#endregion
+
+		#region Properties
+		/// <summary>
+		/// Gets or sets the TestID that uniquely identifies this test
+		/// </summary>
+		public TestID TestID
+		{
+			get { return testID; }
+			set { testID = value; }
+		}
+
+		/// <summary>
+		/// Gets the ID for the runner that created the test from
+		/// the TestID, or returns -1 if the TestID is null.
+		/// </summary>
+		public int RunnerID
+		{
+			get { return runnerID; }
+			set { runnerID = value; }
+		}
+
+		/// <summary>
+		/// Gets or sets the simple name of the test
+		/// </summary>
+		public string Name
+		{
+			get { return name; }
+			set { name = value; }
+		}
+
+		/// <summary>
+		/// Gets or sets the full (qualified) name of the test
+		/// </summary>
+		public string FullName
+		{
+			get { return fullName; }
+			set { fullName = value; }
+		}
+
+		/// <summary>
+		/// Get the string representation of this test name, incorporating all
+		/// the components of the name.
+		/// </summary>
+		public string UniqueName
+		{
+			get
+			{
+				if ( this.testID == null )
+					return string.Format( "[{0}]{1}", this.runnerID, this.fullName );
+				else
+					return string.Format( "[{0}-{1}]{2}", this.RunnerID, this.testID, this.fullName );
+			}
+		}
+		#endregion
+
+		#region Static Methods
+        /// <summary>
+        /// Parse a string representation of a TestName,
+        /// returning a TestName.
+        /// </summary>
+        /// <param name="s">The string to parse</param>
+        /// <returns>A TestName</returns>
+		public static TestName Parse( string s )
+		{
+			if ( s == null ) throw new ArgumentNullException( "s", "Cannot parse a null string" );
+
+			TestName testName = new TestName();
+			testName.FullName = testName.Name = s;
+
+			if ( s.StartsWith( "[" ) )
+			{
+				int rbrack = s.IndexOf( "]" );
+				if ( rbrack < 0 || rbrack == s.Length - 1 )
+					throw new FormatException( "Invalid TestName format: " + s );
+
+				testName.FullName = testName.Name = s.Substring( rbrack + 1 );
+
+				int dash = s.IndexOf( "-" );
+				if ( dash < 0 || dash > rbrack )
+					testName.RunnerID = Int32.Parse( s.Substring( 1, rbrack - 1 ) );
+				else
+				{
+					testName.RunnerID = Int32.Parse( s.Substring( 1, dash - 1 ) );
+					testName.TestID = TestID.Parse( s.Substring( dash + 1, rbrack - dash - 1 ) );
+				}
+			}
+
+			return testName;
+		}
+		#endregion
+
+		#region Object Overrides
+		/// <summary>
+		/// Compares two TestNames for equality
+		/// </summary>
+		/// <param name="obj">the other TestID</param>
+		/// <returns>True if the two TestIDs are equal</returns>
+		public override bool Equals(object obj)
+		{
+			TestName other = obj as TestName;
+			if ( other == null )
+				return base.Equals (obj);
+
+			return this.TestID == other.testID
+				&& this.runnerID == other.runnerID 
+				&& this.fullName == other.fullName;
+		}
+
+		/// <summary>
+		/// Calculates a hashcode for this TestID
+		/// </summary>
+		/// <returns>The hash code.</returns>
+		public override int GetHashCode()
+		{
+			return unchecked( this.testID.GetHashCode() + this.fullName.GetHashCode() );
+		}
+
+		/// <summary>
+		/// Override ToString() to display the UniqueName
+		/// </summary>
+		/// <returns></returns>
+		public override string ToString()
+		{
+			return this.UniqueName;
+		}
+		#endregion
+
+		#region Operator Overrides
+        /// <summary>
+        /// Override the == operator
+        /// </summary>
+        /// <param name="name1"></param>
+        /// <param name="name2"></param>
+        /// <returns></returns>
+		public static bool operator ==( TestName name1, TestName name2 )
+		{
+			if ( Object.Equals( name1, null ) )
+				return Object.Equals( name2, null );
+
+			return name1.Equals( name2 );
+		}
+
+        /// <summary>
+        /// Override the != operator
+        /// </summary>
+        /// <param name="name1"></param>
+        /// <param name="name2"></param>
+        /// <returns></returns>
+		public static bool operator !=( TestName name1, TestName name2 )
+		{
+			return name1 == name2 ? false : true;
+		}
+		#endregion
+
+		#region ICloneable Implementation
+		/// <summary>
+		/// Returns a duplicate of this TestName
+		/// </summary>
+		/// <returns></returns>
+		public object Clone()
+		{
+			return this.MemberwiseClone();
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestNode.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestNode.cs
@@ -1,88 +1,88 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Collections;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestNode represents a single test or suite in the test hierarchy.
-	/// TestNode holds common info needed about a test and represents a
-	/// single node - either a test or a suite - in the hierarchy of tests.
-	/// 
-	/// TestNode extends TestInfo, which holds all the information with
-	/// the exception of the list of child classes. When constructed from
-	/// a Test, TestNodes are always fully populated with child TestNodes.
-	/// 
-	/// Like TestInfo, TestNode is purely a data class, and is not able
-	/// to execute tests.
-	/// 
-	/// </summary>
-	[Serializable]
-	public class TestNode : TestInfo
-	{
-		#region Instance Variables
-		private ITest parent;
-
-		/// <summary>
-		/// For a test suite, the child tests or suites
-		/// Null if this is not a test suite
-		/// </summary>
-		private ArrayList tests;
-		#endregion
-
-		#region Constructors
-		/// <summary>
-		/// Construct from an ITest
-		/// </summary>
-		/// <param name="test">Test from which a TestNode is to be constructed</param>
-		public TestNode ( ITest test ) : base( test )
-		{
-			if ( test.IsSuite )
-			{
-				this.tests = new ArrayList();
-				
-				foreach( ITest child in test.Tests )
-				{
-					TestNode node = new TestNode( child );
-					this.Tests.Add( node );
-					node.parent = this;
-				}
-			}
-		}
-
-        /// <summary>
-        /// Construct a TestNode given a TestName and an
-        /// array of child tests.
-        /// </summary>
-        /// <param name="testName">The TestName of the new test</param>
-        /// <param name="tests">An array of tests to be added as children of the new test</param>
-	    public TestNode ( TestName testName, ITest[] tests ) : base( testName, tests )
-		{
-			this.tests = new ArrayList();
-			this.tests.AddRange( tests );
-		}
-		#endregion
-
-		#region Properties
-        /// <summary>
-        /// Gets the parent test of the current test
-        /// </summary>
-		public override ITest Parent
-		{
-			get { return parent; }
-		}
-
-		/// <summary>
-		/// Array of child tests, null if this is a test case.
-		/// </summary>
-		public override IList Tests 
-		{
-			get { return tests; }
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Collections;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestNode represents a single test or suite in the test hierarchy.
+	/// TestNode holds common info needed about a test and represents a
+	/// single node - either a test or a suite - in the hierarchy of tests.
+	/// 
+	/// TestNode extends TestInfo, which holds all the information with
+	/// the exception of the list of child classes. When constructed from
+	/// a Test, TestNodes are always fully populated with child TestNodes.
+	/// 
+	/// Like TestInfo, TestNode is purely a data class, and is not able
+	/// to execute tests.
+	/// 
+	/// </summary>
+	[Serializable]
+	public class TestNode : TestInfo
+	{
+		#region Instance Variables
+		private ITest parent;
+
+		/// <summary>
+		/// For a test suite, the child tests or suites
+		/// Null if this is not a test suite
+		/// </summary>
+		private ArrayList tests;
+		#endregion
+
+		#region Constructors
+		/// <summary>
+		/// Construct from an ITest
+		/// </summary>
+		/// <param name="test">Test from which a TestNode is to be constructed</param>
+		public TestNode ( ITest test ) : base( test )
+		{
+			if ( test.IsSuite )
+			{
+				this.tests = new ArrayList();
+				
+				foreach( ITest child in test.Tests )
+				{
+					TestNode node = new TestNode( child );
+					this.Tests.Add( node );
+					node.parent = this;
+				}
+			}
+		}
+
+        /// <summary>
+        /// Construct a TestNode given a TestName and an
+        /// array of child tests.
+        /// </summary>
+        /// <param name="testName">The TestName of the new test</param>
+        /// <param name="tests">An array of tests to be added as children of the new test</param>
+	    public TestNode ( TestName testName, ITest[] tests ) : base( testName, tests )
+		{
+			this.tests = new ArrayList();
+			this.tests.AddRange( tests );
+		}
+		#endregion
+
+		#region Properties
+        /// <summary>
+        /// Gets the parent test of the current test
+        /// </summary>
+		public override ITest Parent
+		{
+			get { return parent; }
+		}
+
+		/// <summary>
+		/// Array of child tests, null if this is a test case.
+		/// </summary>
+		public override IList Tests 
+		{
+			get { return tests; }
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestOutput.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestOutput.cs
@@ -1,92 +1,92 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-namespace NUnit.Core
-{
-	using System;
-
-    /// <summary>
-    /// The TestOutput class holds a unit of output from 
-    /// a test to either stdOut or stdErr
-    /// </summary>
-	[Serializable]
-	public class TestOutput
-	{
-		string text;
-		TestOutputType type;
-
-        /// <summary>
-        /// Construct with text and an ouput destination type
-        /// </summary>
-        /// <param name="text">Text to be output</param>
-        /// <param name="type">Destination of output</param>
-		public TestOutput(string text, TestOutputType type)
-		{
-			this.text = text;
-			this.type = type;
-		}
-
-        /// <summary>
-        /// Return string representation of the object for debugging
-        /// </summary>
-        /// <returns></returns>
-		public override string ToString()
-		{
-			return type + ": " + text;
-		}
-
-        /// <summary>
-        /// Get the text 
-        /// </summary>
-		public string Text
-		{
-			get
-			{
-				return this.text;
-			}
-		}
-
-        /// <summary>
-        /// Get the output type
-        /// </summary>
-		public TestOutputType Type
-		{
-			get
-			{
-				return this.type;
-			}
-		}
-	}
-
-    /// <summary>
-    /// Enum representing the output destination
-    /// It uses combinable flags so that a given
-    /// output control can accept multiple types
-    /// of output. Normally, each individual
-    /// output uses a single flag value.
-    /// </summary>
-	public enum TestOutputType
-	{
-        /// <summary>
-        /// Send output to stdOut
-        /// </summary>
-		Out, 
-        
-        /// <summary>
-        /// Send output to stdErr
-        /// </summary>
-        Error,
-
-		/// <summary>
-		/// Send output to Trace
-		/// </summary>
-		Trace,
-
-		/// <summary>
-		/// Send output to Log
-		/// </summary>
-		Log
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+namespace NUnit.Core
+{
+	using System;
+
+    /// <summary>
+    /// The TestOutput class holds a unit of output from 
+    /// a test to either stdOut or stdErr
+    /// </summary>
+	[Serializable]
+	public class TestOutput
+	{
+		string text;
+		TestOutputType type;
+
+        /// <summary>
+        /// Construct with text and an ouput destination type
+        /// </summary>
+        /// <param name="text">Text to be output</param>
+        /// <param name="type">Destination of output</param>
+		public TestOutput(string text, TestOutputType type)
+		{
+			this.text = text;
+			this.type = type;
+		}
+
+        /// <summary>
+        /// Return string representation of the object for debugging
+        /// </summary>
+        /// <returns></returns>
+		public override string ToString()
+		{
+			return type + ": " + text;
+		}
+
+        /// <summary>
+        /// Get the text 
+        /// </summary>
+		public string Text
+		{
+			get
+			{
+				return this.text;
+			}
+		}
+
+        /// <summary>
+        /// Get the output type
+        /// </summary>
+		public TestOutputType Type
+		{
+			get
+			{
+				return this.type;
+			}
+		}
+	}
+
+    /// <summary>
+    /// Enum representing the output destination
+    /// It uses combinable flags so that a given
+    /// output control can accept multiple types
+    /// of output. Normally, each individual
+    /// output uses a single flag value.
+    /// </summary>
+	public enum TestOutputType
+	{
+        /// <summary>
+        /// Send output to stdOut
+        /// </summary>
+		Out, 
+        
+        /// <summary>
+        /// Send output to stdErr
+        /// </summary>
+        Error,
+
+		/// <summary>
+		/// Send output to Trace
+		/// </summary>
+		Trace,
+
+		/// <summary>
+		/// Send output to Log
+		/// </summary>
+		Log
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestPackage.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestPackage.cs
@@ -1,178 +1,178 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.IO;
-using System.Collections;
-using System.Collections.Specialized;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// TestPackage holds information about a set of tests to
-	/// be loaded by a TestRunner. It may represent a single
-	/// assembly or a set of assemblies. It supports selection
-	/// of a single test fixture for loading.
-	/// </summary>
-	[Serializable]
-	public class TestPackage
-	{
-		private string name;
-		private string fullName;
-
-		private ListDictionary settings = new ListDictionary();
-
-		private string basePath;
-		private string configFile;
-		private string binPath;
-		private bool autoBinPath;
-
-		private ArrayList assemblies;
-		private string testName;
-		private bool isSingleAssembly;
-
-
-		/// <summary>
-		/// Construct a package, specifying the name of the package.
-		/// If the package name is an assembly file type (dll or exe)
-		/// then the resulting package represents a single assembly.
-		/// Otherwise it is a container for multiple assemblies.
-		/// </summary>
-		/// <param name="name">The name of the package</param>
-		public TestPackage( string name )
-		{
-			this.fullName = name;
-			this.name = Path.GetFileName( name );
-			this.assemblies = new ArrayList();
-			if ( IsAssemblyFileType( name ) )
-			{
-				this.isSingleAssembly = true;
-				this.assemblies.Add( name );
-			}
-		}
-
-		/// <summary>
-		/// Construct a package, specifying the name to be used
-		/// and a list of assemblies.
-		/// </summary>
-		/// <param name="name">The package name, used to name the top-level test node</param>
-		/// <param name="assemblies">The list of assemblies comprising the package</param>
-		public TestPackage( string name, IList assemblies )
-		{
-			this.fullName = name;
-			this.name = Path.GetFileName( name );
-			this.assemblies = new ArrayList( assemblies );
-			this.isSingleAssembly = false;
-		}
-
-		/// <summary>
-		/// Gets the name of the package
-		/// </summary>
-		public string Name
-		{
-			get { return name; }
-		}
-
-		/// <summary>
-		/// Gets the full name of the package, which is usually
-		/// the path to the NUnit project used to create the it
-		/// </summary>
-		public string FullName
-		{
-			get { return fullName; }
-		}
-
-		/// <summary>
-		/// The BasePath to be used in loading the assemblies
-		/// </summary>
-		public string BasePath
-		{
-			get { return basePath; }
-			set { basePath = value; }
-		}
-
-		/// <summary>
-		/// The configuration file to be used
-		/// </summary>
-		public string ConfigurationFile
-		{
-			get { return configFile; }
-			set { configFile = value; }
-		}
-
-		/// <summary>
-		/// Addditional directories to be probed when loading assemblies
-		/// </summary>
-		public string PrivateBinPath
-		{
-			get { return binPath; }
-			set { binPath = value; }
-		}
-
-		/// <summary>
-		/// Indicates whether the probing path should be generated
-		/// automatically based on the list of assemblies.
-		/// </summary>
-		public bool AutoBinPath
-		{
-			get { return autoBinPath; }
-			set { autoBinPath = value; }
-		}
-
-		/// <summary>
-		/// Assemblies to be loaded. At least one must be specified.
-		/// </summary>
-		public IList Assemblies
-		{
-			get { return assemblies; }
-		}
-
-		/// <summary>
-		/// Return true if the package represents a single assembly.
-		/// No root node is displayed in that case.
-		/// </summary>
-		public bool IsSingleAssembly
-		{
-			get { return isSingleAssembly; }
-		}
-
-		/// <summary>
-		/// Fully qualified name of test to be loaded. If not 
-		/// specified, all the tests in the assemblies are loaded.
-		/// </summary>
-		public string TestName
-		{
-			get { return testName; }
-			set { testName = value; }
-		}
-
-		/// <summary>
-		/// Gets the dictionary of settings for this TestPackage
-		/// </summary>
-		public IDictionary Settings
-		{
-			get { return settings; }
-		}
-
-		/// <summary>
-		/// Return the value of a bool setting or a default.
-		/// </summary>
-		/// <param name="name">The name of the setting</param>
-		/// <param name="defaultSetting">The default value</param>
-		/// <returns></returns>
-		public bool GetSetting( string name, bool defaultSetting )
-		{
-			object setting = settings[name];
-			
-			return setting == null ? defaultSetting : (bool)setting;
-		}
-
-		private static bool IsAssemblyFileType( string path )
-		{
-			string extension = Path.GetExtension( path ).ToLower();
-			return extension == ".dll" || extension == ".exe";
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.IO;
+using System.Collections;
+using System.Collections.Specialized;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// TestPackage holds information about a set of tests to
+	/// be loaded by a TestRunner. It may represent a single
+	/// assembly or a set of assemblies. It supports selection
+	/// of a single test fixture for loading.
+	/// </summary>
+	[Serializable]
+	public class TestPackage
+	{
+		private string name;
+		private string fullName;
+
+		private ListDictionary settings = new ListDictionary();
+
+		private string basePath;
+		private string configFile;
+		private string binPath;
+		private bool autoBinPath;
+
+		private ArrayList assemblies;
+		private string testName;
+		private bool isSingleAssembly;
+
+
+		/// <summary>
+		/// Construct a package, specifying the name of the package.
+		/// If the package name is an assembly file type (dll or exe)
+		/// then the resulting package represents a single assembly.
+		/// Otherwise it is a container for multiple assemblies.
+		/// </summary>
+		/// <param name="name">The name of the package</param>
+		public TestPackage( string name )
+		{
+			this.fullName = name;
+			this.name = Path.GetFileName( name );
+			this.assemblies = new ArrayList();
+			if ( IsAssemblyFileType( name ) )
+			{
+				this.isSingleAssembly = true;
+				this.assemblies.Add( name );
+			}
+		}
+
+		/// <summary>
+		/// Construct a package, specifying the name to be used
+		/// and a list of assemblies.
+		/// </summary>
+		/// <param name="name">The package name, used to name the top-level test node</param>
+		/// <param name="assemblies">The list of assemblies comprising the package</param>
+		public TestPackage( string name, IList assemblies )
+		{
+			this.fullName = name;
+			this.name = Path.GetFileName( name );
+			this.assemblies = new ArrayList( assemblies );
+			this.isSingleAssembly = false;
+		}
+
+		/// <summary>
+		/// Gets the name of the package
+		/// </summary>
+		public string Name
+		{
+			get { return name; }
+		}
+
+		/// <summary>
+		/// Gets the full name of the package, which is usually
+		/// the path to the NUnit project used to create the it
+		/// </summary>
+		public string FullName
+		{
+			get { return fullName; }
+		}
+
+		/// <summary>
+		/// The BasePath to be used in loading the assemblies
+		/// </summary>
+		public string BasePath
+		{
+			get { return basePath; }
+			set { basePath = value; }
+		}
+
+		/// <summary>
+		/// The configuration file to be used
+		/// </summary>
+		public string ConfigurationFile
+		{
+			get { return configFile; }
+			set { configFile = value; }
+		}
+
+		/// <summary>
+		/// Addditional directories to be probed when loading assemblies
+		/// </summary>
+		public string PrivateBinPath
+		{
+			get { return binPath; }
+			set { binPath = value; }
+		}
+
+		/// <summary>
+		/// Indicates whether the probing path should be generated
+		/// automatically based on the list of assemblies.
+		/// </summary>
+		public bool AutoBinPath
+		{
+			get { return autoBinPath; }
+			set { autoBinPath = value; }
+		}
+
+		/// <summary>
+		/// Assemblies to be loaded. At least one must be specified.
+		/// </summary>
+		public IList Assemblies
+		{
+			get { return assemblies; }
+		}
+
+		/// <summary>
+		/// Return true if the package represents a single assembly.
+		/// No root node is displayed in that case.
+		/// </summary>
+		public bool IsSingleAssembly
+		{
+			get { return isSingleAssembly; }
+		}
+
+		/// <summary>
+		/// Fully qualified name of test to be loaded. If not 
+		/// specified, all the tests in the assemblies are loaded.
+		/// </summary>
+		public string TestName
+		{
+			get { return testName; }
+			set { testName = value; }
+		}
+
+		/// <summary>
+		/// Gets the dictionary of settings for this TestPackage
+		/// </summary>
+		public IDictionary Settings
+		{
+			get { return settings; }
+		}
+
+		/// <summary>
+		/// Return the value of a bool setting or a default.
+		/// </summary>
+		/// <param name="name">The name of the setting</param>
+		/// <param name="defaultSetting">The default value</param>
+		/// <returns></returns>
+		public bool GetSetting( string name, bool defaultSetting )
+		{
+			object setting = settings[name];
+			
+			return setting == null ? defaultSetting : (bool)setting;
+		}
+
+		private static bool IsAssemblyFileType( string path )
+		{
+			string extension = Path.GetExtension( path ).ToLower();
+			return extension == ".dll" || extension == ".exe";
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestResult.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestResult.cs
@@ -1,428 +1,428 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Text;
-
-	/// <summary>
-	/// The TestResult abstract class represents
-	/// the result of a test and is used to
-	/// communicate results across AppDomains.
-	/// </summary>
-	/// 
-	[Serializable]
-	public abstract class TestResult
-	{
-		#region Fields
-		/// <summary>
-		/// Indicates whether the test was executed or not
-		/// </summary>
-		private RunState runState;
-
-		/// <summary>
-		/// Indicates the result of the test
-		/// </summary>
-		private ResultState resultState;
-
-		/// <summary>
-		/// Indicates the location of a failure
-		/// </summary>
-        private FailureSite failureSite;
-
-		/// <summary>
-		/// The elapsed time for executing this test
-		/// </summary>
-		private double time = 0.0;
-
-		/// <summary>
-		/// The name of the test
-		/// </summary>
-		private string name;
-
-		/// <summary>
-		/// The test that this result pertains to
-		/// </summary>
-		private TestInfo test;
-
-		/// <summary>
-		/// The stacktrace at the point of failure
-		/// </summary>
-		private string stackTrace;
-
-		/// <summary>
-		/// Description of this test
-		/// </summary>
-		private string description;
-
-		/// <summary>
-		/// Message giving the reason for failure
-		/// </summary>
-		protected string messageString;
-
-		/// <summary>
-		/// Number of asserts executed by this test
-		/// </summary>
-		private int assertCount = 0;
-
-		#endregion
-
-		#region Protected Constructor
-		/// <summary>
-		/// Protected constructor constructs a test result given
-		/// a test and a name.
-		/// </summary>
-		/// <param name="test">The test to be used</param>
-		/// <param name="name">Name for this result</param>
-		protected TestResult(TestInfo test, string name)
-		{
-			this.name = name;
-			this.test = test;
-            this.RunState = RunState.Runnable;
-            if (test != null)
-            {
-                this.description = test.Description;
-                this.runState = test.RunState;
-                this.messageString = test.IgnoreReason;
-            }
-        }
-		#endregion
-
-        #region Properties
-
-		/// <summary>
-		/// Gets the RunState of the result, which indicates
-		/// whether or not it has executed and why.
-		/// </summary>
-        public RunState RunState
-        {
-            get { return runState; }
-            set { runState = value; }
-        }
-
-		/// <summary>
-		/// Gets the ResultState of the test result, which 
-		/// indicates the success or failure of the test.
-		/// </summary>
-        public ResultState ResultState
-        {
-            get { return resultState; }
-        }
-
-		/// <summary>
-		/// Gets the stage of the test in which a failure
-		/// or error occured.
-		/// </summary>
-        public FailureSite FailureSite
-        {
-            get { return failureSite; }
-        }
-
-		/// <summary>
-		/// Indicates whether the test executed
-		/// </summary>
-        public bool Executed
-        {
-            get { return runState == RunState.Executed; }
-        }
-
-		/// <summary>
-		/// Gets the name of the test result
-		/// </summary>
-        public virtual string Name
-        {
-            get { return name; }
-        }
-
-		/// <summary>
-		/// Gets the test associated with this result
-		/// </summary>
-        public ITest Test
-        {
-            get { return test; }
-        }
-
-		/// <summary>
-		/// Indicates whether the test ran successfully
-		/// </summary>
-        public virtual bool IsSuccess
-        {
-            // TODO: Redefine this more precisely
-            get { return !IsFailure; }
-            //get { return resultState == ResultState.Success; }
-        }
-
-        /// <summary>
-        /// Indicates whether the test failed
-        /// </summary>
-		// TODO: Distinguish errors from failures
-        public virtual bool IsFailure
-        {
-            get { return resultState == ResultState.Failure || resultState == ResultState.Error; }
-        }
-
-		/// <summary>
-		/// Gets a description associated with the test
-		/// </summary>
-        public virtual string Description
-        {
-            get { return description; }
-            set { description = value; }
-        }
-
-		/// <summary>
-		/// Gets the elapsed time for running the test
-		/// </summary>
-        public double Time
-        {
-            get { return time; }
-            set { time = value; }
-        }
-
-		/// <summary>
-		/// Gets the message associated with a test
-		/// failure or with not running the test
-		/// </summary>
-        public string Message
-        {
-            get { return messageString; }
-        }
-
-		/// <summary>
-		/// Gets any stacktrace associated with an
-		/// error or failure.
-		/// </summary>
-        public virtual string StackTrace
-        {
-            get
-            {
-                return stackTrace;
-            }
-            set
-            {
-                stackTrace = value;
-            }
-        }
-
-		/// <summary>
-		/// Gets or sets the count of asserts executed
-		/// when running the test.
-		/// </summary>
-        public int AssertCount
-        {
-            get { return assertCount; }
-            set { assertCount = value; }
-        }
-
-        #endregion
-
-        #region Public Methods
-        /// <summary>
-		/// Mark the test as succeeding
-		/// </summary>
-		public void Success() 
-		{ 
-			this.runState = RunState.Executed;
-			this.resultState = ResultState.Success; 
-		}
-
-		/// <summary>
-		/// Mark the test as ignored.
-		/// </summary>
-		/// <param name="reason">The reason the test was not run</param>
-		public void Ignore(string reason)
-		{
-			Ignore( reason, null );
-		}
-
-		/// <summary>
-		/// Mark the test as ignored.
-		/// </summary>
-		/// <param name="ex">The ignore exception that was thrown</param>
-		public void Ignore( Exception ex )
-		{
-			Ignore( ex.Message, BuildStackTrace( ex ) );
-		}
-
-		/// <summary>
-		/// Mark the test as ignored.
-		/// </summary>
-		/// <param name="reason">The reason the test was not run</param>
-		/// <param name="stackTrace">Stack trace giving the location of the command</param>
-		public void Ignore(string reason, string stackTrace)
-		{
-			NotRun( RunState.Ignored, reason, stackTrace );
-		}
-
-		/// <summary>
-		/// Mark the test as skipped.
-		/// </summary>
-		/// <param name="reason">The reason the test was not run</param>
-		public void Skip(string reason)
-		{
-			Skip( reason, null );
-		}
-
-		/// <summary>
-		/// Mark the test as ignored.
-		/// </summary>
-		/// <param name="ex">The ignore exception that was thrown</param>
-		public void Skip( Exception ex )
-		{
-			Skip( ex.Message, BuildStackTrace( ex ) );
-		}
-
-		/// <summary>
-		/// Mark the test as skipped.
-		/// </summary>
-		/// <param name="reason">The reason the test was not run</param>
-		/// <param name="stackTrace">Stack trace giving the location of the command</param>
-		public void Skip(string reason, string stackTrace)
-		{
-			NotRun( RunState.Skipped, reason, stackTrace );
-		}
-
-		/// <summary>
-		/// Mark the test as Not Run - either skipped or ignored
-		/// </summary>
-		/// <param name="runState">The RunState to use in the result</param>
-		/// <param name="reason">The reason the test was not run</param>
-		/// <param name="stackTrace">Stack trace giving the location of the command</param>
-		public void NotRun(RunState runState, string reason, string stackTrace)
-		{
-			this.runState = runState;
-			this.messageString = reason;
-			this.stackTrace = stackTrace;
-		}
-
-
-		/// <summary>
-		/// Mark the test as a failure due to an
-		/// assertion having failed.
-		/// </summary>
-		/// <param name="message">Message to display</param>
-		/// <param name="stackTrace">Stack trace giving the location of the failure</param>
-		public void Failure(string message, string stackTrace)
-        {
-            Failure(message, stackTrace, FailureSite.Test);
-        }
-
-		/// <summary>
-		/// Mark the test as a failure due to an
-		/// assertion having failed.
-		/// </summary>
-		/// <param name="message">Message to display</param>
-		/// <param name="stackTrace">Stack trace giving the location of the failure</param>
-		/// <param name="failureSite">The site of the failure</param>
-		public void Failure(string message, string stackTrace, FailureSite failureSite )
-		{
-			this.runState = RunState.Executed;
-			this.resultState = ResultState.Failure;
-            this.failureSite = failureSite;
-			this.messageString = message;
-			this.stackTrace = stackTrace;
-		}
-
-		/// <summary>
-		/// Marks the result as an error due to an exception thrown
-		/// by the test.
-		/// </summary>
-		/// <param name="exception">The exception that was caught</param>
-        public void Error(Exception exception)
-        {
-            Error(exception, FailureSite.Test);
-        }
-
-		/// <summary>
-		/// Marks the result as an error due to an exception thrown
-		/// from the indicated FailureSite.
-		/// </summary>
-		/// <param name="exception">The exception that was caught</param>
-		/// <param name="failureSite">The site from which it was thrown</param>
-		public void Error( Exception exception, FailureSite failureSite )
-		{
-			this.runState = RunState.Executed;
-			this.resultState = ResultState.Error;
-            this.failureSite = failureSite;
-
-            string message = BuildMessage(exception);
-            string stackTrace = BuildStackTrace(exception);
-
-            if (failureSite == FailureSite.TearDown)
-            {
-                message = "TearDown : " + message;
-                stackTrace = "--TearDown" + Environment.NewLine + stackTrace;
-
-                if (this.messageString != null)
-                    message = this.messageString + Environment.NewLine + message;
-                if (this.stackTrace != null)
-                    stackTrace = this.stackTrace + Environment.NewLine + stackTrace;
-            }
-
-            this.messageString = message;
-            this.stackTrace = stackTrace;
-		}
-		#endregion
-
-		#region Exception Helpers
-
-		private string BuildMessage(Exception exception)
-		{
-			StringBuilder sb = new StringBuilder();
-			sb.AppendFormat( "{0} : {1}", exception.GetType().ToString(), exception.Message );
-
-			Exception inner = exception.InnerException;
-			while( inner != null )
-			{
-				sb.Append( Environment.NewLine );
-				sb.AppendFormat( "  ----> {0} : {1}", inner.GetType().ToString(), inner.Message );
-				inner = inner.InnerException;
-			}
-
-			return sb.ToString();
-		}
-		
-		private string BuildStackTrace(Exception exception)
-		{
-            StringBuilder sb = new StringBuilder( GetStackTrace( exception ) );
-
-            Exception inner = exception.InnerException;
-            while( inner != null )
-            {
-                sb.Append( Environment.NewLine );
-                sb.Append( "--" );
-                sb.Append( inner.GetType().Name );
-                sb.Append( Environment.NewLine );
-                sb.Append( GetStackTrace( inner ) );
-
-                inner = inner.InnerException;
-            }
-
-            return sb.ToString();
-		}
-
-		private string GetStackTrace(Exception exception)
-		{
-			try
-			{
-				return exception.StackTrace;
-			}
-			catch( Exception )
-			{
-				return "No stack trace available";
-			}
-		}
-
-		#endregion
-
-		/// <summary>
-		/// Abstract method that accepts a ResultVisitor
-		/// </summary>
-		/// <param name="visitor">The visitor</param>
-		public abstract void Accept(ResultVisitor visitor);
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Text;
+
+	/// <summary>
+	/// The TestResult abstract class represents
+	/// the result of a test and is used to
+	/// communicate results across AppDomains.
+	/// </summary>
+	/// 
+	[Serializable]
+	public abstract class TestResult
+	{
+		#region Fields
+		/// <summary>
+		/// Indicates whether the test was executed or not
+		/// </summary>
+		private RunState runState;
+
+		/// <summary>
+		/// Indicates the result of the test
+		/// </summary>
+		private ResultState resultState;
+
+		/// <summary>
+		/// Indicates the location of a failure
+		/// </summary>
+        private FailureSite failureSite;
+
+		/// <summary>
+		/// The elapsed time for executing this test
+		/// </summary>
+		private double time = 0.0;
+
+		/// <summary>
+		/// The name of the test
+		/// </summary>
+		private string name;
+
+		/// <summary>
+		/// The test that this result pertains to
+		/// </summary>
+		private TestInfo test;
+
+		/// <summary>
+		/// The stacktrace at the point of failure
+		/// </summary>
+		private string stackTrace;
+
+		/// <summary>
+		/// Description of this test
+		/// </summary>
+		private string description;
+
+		/// <summary>
+		/// Message giving the reason for failure
+		/// </summary>
+		protected string messageString;
+
+		/// <summary>
+		/// Number of asserts executed by this test
+		/// </summary>
+		private int assertCount = 0;
+
+		#endregion
+
+		#region Protected Constructor
+		/// <summary>
+		/// Protected constructor constructs a test result given
+		/// a test and a name.
+		/// </summary>
+		/// <param name="test">The test to be used</param>
+		/// <param name="name">Name for this result</param>
+		protected TestResult(TestInfo test, string name)
+		{
+			this.name = name;
+			this.test = test;
+            this.RunState = RunState.Runnable;
+            if (test != null)
+            {
+                this.description = test.Description;
+                this.runState = test.RunState;
+                this.messageString = test.IgnoreReason;
+            }
+        }
+		#endregion
+
+        #region Properties
+
+		/// <summary>
+		/// Gets the RunState of the result, which indicates
+		/// whether or not it has executed and why.
+		/// </summary>
+        public RunState RunState
+        {
+            get { return runState; }
+            set { runState = value; }
+        }
+
+		/// <summary>
+		/// Gets the ResultState of the test result, which 
+		/// indicates the success or failure of the test.
+		/// </summary>
+        public ResultState ResultState
+        {
+            get { return resultState; }
+        }
+
+		/// <summary>
+		/// Gets the stage of the test in which a failure
+		/// or error occured.
+		/// </summary>
+        public FailureSite FailureSite
+        {
+            get { return failureSite; }
+        }
+
+		/// <summary>
+		/// Indicates whether the test executed
+		/// </summary>
+        public bool Executed
+        {
+            get { return runState == RunState.Executed; }
+        }
+
+		/// <summary>
+		/// Gets the name of the test result
+		/// </summary>
+        public virtual string Name
+        {
+            get { return name; }
+        }
+
+		/// <summary>
+		/// Gets the test associated with this result
+		/// </summary>
+        public ITest Test
+        {
+            get { return test; }
+        }
+
+		/// <summary>
+		/// Indicates whether the test ran successfully
+		/// </summary>
+        public virtual bool IsSuccess
+        {
+            // TODO: Redefine this more precisely
+            get { return !IsFailure; }
+            //get { return resultState == ResultState.Success; }
+        }
+
+        /// <summary>
+        /// Indicates whether the test failed
+        /// </summary>
+		// TODO: Distinguish errors from failures
+        public virtual bool IsFailure
+        {
+            get { return resultState == ResultState.Failure || resultState == ResultState.Error; }
+        }
+
+		/// <summary>
+		/// Gets a description associated with the test
+		/// </summary>
+        public virtual string Description
+        {
+            get { return description; }
+            set { description = value; }
+        }
+
+		/// <summary>
+		/// Gets the elapsed time for running the test
+		/// </summary>
+        public double Time
+        {
+            get { return time; }
+            set { time = value; }
+        }
+
+		/// <summary>
+		/// Gets the message associated with a test
+		/// failure or with not running the test
+		/// </summary>
+        public string Message
+        {
+            get { return messageString; }
+        }
+
+		/// <summary>
+		/// Gets any stacktrace associated with an
+		/// error or failure.
+		/// </summary>
+        public virtual string StackTrace
+        {
+            get
+            {
+                return stackTrace;
+            }
+            set
+            {
+                stackTrace = value;
+            }
+        }
+
+		/// <summary>
+		/// Gets or sets the count of asserts executed
+		/// when running the test.
+		/// </summary>
+        public int AssertCount
+        {
+            get { return assertCount; }
+            set { assertCount = value; }
+        }
+
+        #endregion
+
+        #region Public Methods
+        /// <summary>
+		/// Mark the test as succeeding
+		/// </summary>
+		public void Success() 
+		{ 
+			this.runState = RunState.Executed;
+			this.resultState = ResultState.Success; 
+		}
+
+		/// <summary>
+		/// Mark the test as ignored.
+		/// </summary>
+		/// <param name="reason">The reason the test was not run</param>
+		public void Ignore(string reason)
+		{
+			Ignore( reason, null );
+		}
+
+		/// <summary>
+		/// Mark the test as ignored.
+		/// </summary>
+		/// <param name="ex">The ignore exception that was thrown</param>
+		public void Ignore( Exception ex )
+		{
+			Ignore( ex.Message, BuildStackTrace( ex ) );
+		}
+
+		/// <summary>
+		/// Mark the test as ignored.
+		/// </summary>
+		/// <param name="reason">The reason the test was not run</param>
+		/// <param name="stackTrace">Stack trace giving the location of the command</param>
+		public void Ignore(string reason, string stackTrace)
+		{
+			NotRun( RunState.Ignored, reason, stackTrace );
+		}
+
+		/// <summary>
+		/// Mark the test as skipped.
+		/// </summary>
+		/// <param name="reason">The reason the test was not run</param>
+		public void Skip(string reason)
+		{
+			Skip( reason, null );
+		}
+
+		/// <summary>
+		/// Mark the test as ignored.
+		/// </summary>
+		/// <param name="ex">The ignore exception that was thrown</param>
+		public void Skip( Exception ex )
+		{
+			Skip( ex.Message, BuildStackTrace( ex ) );
+		}
+
+		/// <summary>
+		/// Mark the test as skipped.
+		/// </summary>
+		/// <param name="reason">The reason the test was not run</param>
+		/// <param name="stackTrace">Stack trace giving the location of the command</param>
+		public void Skip(string reason, string stackTrace)
+		{
+			NotRun( RunState.Skipped, reason, stackTrace );
+		}
+
+		/// <summary>
+		/// Mark the test as Not Run - either skipped or ignored
+		/// </summary>
+		/// <param name="runState">The RunState to use in the result</param>
+		/// <param name="reason">The reason the test was not run</param>
+		/// <param name="stackTrace">Stack trace giving the location of the command</param>
+		public void NotRun(RunState runState, string reason, string stackTrace)
+		{
+			this.runState = runState;
+			this.messageString = reason;
+			this.stackTrace = stackTrace;
+		}
+
+
+		/// <summary>
+		/// Mark the test as a failure due to an
+		/// assertion having failed.
+		/// </summary>
+		/// <param name="message">Message to display</param>
+		/// <param name="stackTrace">Stack trace giving the location of the failure</param>
+		public void Failure(string message, string stackTrace)
+        {
+            Failure(message, stackTrace, FailureSite.Test);
+        }
+
+		/// <summary>
+		/// Mark the test as a failure due to an
+		/// assertion having failed.
+		/// </summary>
+		/// <param name="message">Message to display</param>
+		/// <param name="stackTrace">Stack trace giving the location of the failure</param>
+		/// <param name="failureSite">The site of the failure</param>
+		public void Failure(string message, string stackTrace, FailureSite failureSite )
+		{
+			this.runState = RunState.Executed;
+			this.resultState = ResultState.Failure;
+            this.failureSite = failureSite;
+			this.messageString = message;
+			this.stackTrace = stackTrace;
+		}
+
+		/// <summary>
+		/// Marks the result as an error due to an exception thrown
+		/// by the test.
+		/// </summary>
+		/// <param name="exception">The exception that was caught</param>
+        public void Error(Exception exception)
+        {
+            Error(exception, FailureSite.Test);
+        }
+
+		/// <summary>
+		/// Marks the result as an error due to an exception thrown
+		/// from the indicated FailureSite.
+		/// </summary>
+		/// <param name="exception">The exception that was caught</param>
+		/// <param name="failureSite">The site from which it was thrown</param>
+		public void Error( Exception exception, FailureSite failureSite )
+		{
+			this.runState = RunState.Executed;
+			this.resultState = ResultState.Error;
+            this.failureSite = failureSite;
+
+            string message = BuildMessage(exception);
+            string stackTrace = BuildStackTrace(exception);
+
+            if (failureSite == FailureSite.TearDown)
+            {
+                message = "TearDown : " + message;
+                stackTrace = "--TearDown" + Environment.NewLine + stackTrace;
+
+                if (this.messageString != null)
+                    message = this.messageString + Environment.NewLine + message;
+                if (this.stackTrace != null)
+                    stackTrace = this.stackTrace + Environment.NewLine + stackTrace;
+            }
+
+            this.messageString = message;
+            this.stackTrace = stackTrace;
+		}
+		#endregion
+
+		#region Exception Helpers
+
+		private string BuildMessage(Exception exception)
+		{
+			StringBuilder sb = new StringBuilder();
+			sb.AppendFormat( "{0} : {1}", exception.GetType().ToString(), exception.Message );
+
+			Exception inner = exception.InnerException;
+			while( inner != null )
+			{
+				sb.Append( Environment.NewLine );
+				sb.AppendFormat( "  ----> {0} : {1}", inner.GetType().ToString(), inner.Message );
+				inner = inner.InnerException;
+			}
+
+			return sb.ToString();
+		}
+		
+		private string BuildStackTrace(Exception exception)
+		{
+            StringBuilder sb = new StringBuilder( GetStackTrace( exception ) );
+
+            Exception inner = exception.InnerException;
+            while( inner != null )
+            {
+                sb.Append( Environment.NewLine );
+                sb.Append( "--" );
+                sb.Append( inner.GetType().Name );
+                sb.Append( Environment.NewLine );
+                sb.Append( GetStackTrace( inner ) );
+
+                inner = inner.InnerException;
+            }
+
+            return sb.ToString();
+		}
+
+		private string GetStackTrace(Exception exception)
+		{
+			try
+			{
+				return exception.StackTrace;
+			}
+			catch( Exception )
+			{
+				return "No stack trace available";
+			}
+		}
+
+		#endregion
+
+		/// <summary>
+		/// Abstract method that accepts a ResultVisitor
+		/// </summary>
+		/// <param name="visitor">The visitor</param>
+		public abstract void Accept(ResultVisitor visitor);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestRunner.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestRunner.cs
@@ -1,165 +1,165 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.IO;
-
-namespace NUnit.Core
-{
-	/// <summary>
-	/// The TestRunner Interface allows client code, such as the NUnit console and
-	/// gui runners, to load and run tests. This is the lowest level interface generally
-	/// supported for running tests and is implemented by the RemoteTestRunner class in
-	/// the NUnit core as well as by other classes running on the client side.
-	/// 
-	/// The Load method is used to load a suite of tests from one or more 
-	/// assemblies, returning a tree of TestNodes to the caller.
-	/// 
-	/// The CountTestCases family of methods returns the number of test cases in the
-	/// loaded suite, either in its entirety or by using a filter to count a subset of tests.
-	/// 
-	/// The Run family of methods performs a test run synchronously, returning a TestResult
-	/// or TestResult[] to the caller. If provided, an EventListener interface will be 
-	/// notified of significant events in the running of the tests. A filter may be used
-    /// to run a subset of the tests.
-    ///
-    /// BeginRun and EndRun provide a simplified form of the asynchronous invocation
-	/// pattern used in many places within the .NET framework. Because the current
-	/// implementation allows only one run to be in process at a time, an IAsyncResult
-	/// is not used at this time.
-    /// 
-    /// Methods to cancel a run and to wait for a run to complete are also provided. The 
-    /// result of the last run may be obtained by querying the TestResult property.
-    /// 
-    /// </summary>
-	public interface TestRunner
-	{
-		#region Properties
-		/// <summary>
-		/// TestRunners are identified by an ID. So long as there
-		/// is only one test runner or a single chain of test runners,
-		/// the default id of 0 may be used. However, any client that
-		/// creates multiple runners must ensure that each one has a
-		/// unique ID in order to locate and run specific tests.
-		/// </summary>
-		int ID
-		{
-			get;
-		}
-
-		/// <summary>
-		/// IsTestRunning indicates whether a test is in progress. To retrieve the
-		/// results from an asynchronous test run, wait till IsTestRunning is false.
-		/// </summary>
-		bool Running
-		{
-			get;
-		}
-
-		/// <summary>
-		/// Returns information about loaded assemblies
-		/// </summary>
-		IList AssemblyInfo
-		{
-			get;
-		}
-
-		/// <summary>
-		/// The loaded test, converted to a tree of TestNodes so they can be
-		/// serialized and marshalled to a remote client.
-		/// </summary>
-		ITest Test
-		{
-			get;
-		}
-
-		/// <summary>
-		/// Result of the last test run.
-		/// </summary>
-		TestResult TestResult
-		{
-			get;
-		}
-		#endregion
-
-		#region Load and Unload Methods
-		/// <summary>
-		/// Load the assemblies in a test package
-		/// </summary>
-		/// <param name="package">The test package to be loaded</param>
-		/// <returns>True if the tests were loaded successfully, otherwise false</returns>
-		bool Load( TestPackage package );
-
-		/// <summary>
-		/// Unload all tests previously loaded
-		/// </summary>
-		void Unload();
-		#endregion
-
-		#region CountTestCases Methods
-		/// <summary>
-		/// Count Test Cases using a filter
-		/// </summary>
-		/// <param name="filter">The filter to apply</param>
-		/// <returns>The number of test cases found</returns>
-		int CountTestCases(ITestFilter filter );
-		#endregion
-
-		#region Run Methods
-		/// <summary>
-		/// Run all loaded tests and return a test result. The test is run synchronously,
-		/// and the listener interface is notified as it progresses.
-		/// </summary>
-		/// <param name="listener">Interface to receive EventListener notifications.</param>
-		TestResult Run(NUnit.Core.EventListener listener);
-
-		/// <summary>
-		/// Run selected tests and return a test result. The test is run synchronously,
-		/// and the listener interface is notified as it progresses.
-		/// </summary>
-		/// <param name="listener">Interface to receive EventListener notifications.</param>
-		/// <param name="filter">The filter to apply when running the tests</param>
-		TestResult Run(NUnit.Core.EventListener listener, ITestFilter filter);
-		
-		/// <summary>
-		/// Start a run of all loaded tests. The tests are run aynchronously and the 
-		/// listener interface is notified as it progresses.
-		/// </summary>
-		/// <param name="listener">Interface to receive EventListener notifications.</param>
-		void BeginRun(NUnit.Core.EventListener listener);
-
-		/// <summary>
-		/// Start a run of selected tests. The tests are run aynchronously and the 
-		/// listener interface is notified as it progresses.
-		/// </summary>
-		/// <param name="listener">Interface to receive EventListener notifications.</param>
-		/// <param name="filter">The filter to apply when running the tests</param>
-		void BeginRun(NUnit.Core.EventListener listener, ITestFilter filter);
-		
-		/// <summary>
-		/// Wait for an asynchronous run to complete and return the result.
-		/// </summary>
-		/// <returns>A TestResult for the entire run</returns>
-		TestResult EndRun();
-
-		/// <summary>
-		///  Cancel the test run that is in progress. For a synchronous run,
-		///  a client wanting to call this must create a separate run thread.
-		/// </summary>
-		void CancelRun();
-
-		/// <summary>
-		/// Wait for the test run in progress to complete. For a synchronous run,
-		/// a client wanting to call this must create a separate run thread. In
-		/// particular, a gui client calling this method is likely to hang, since
-		/// events will not be able to invoke methods on the gui thread.
-		/// </summary>
-		void Wait();
-		#endregion
-	}
-}
-
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.IO;
+
+namespace NUnit.Core
+{
+	/// <summary>
+	/// The TestRunner Interface allows client code, such as the NUnit console and
+	/// gui runners, to load and run tests. This is the lowest level interface generally
+	/// supported for running tests and is implemented by the RemoteTestRunner class in
+	/// the NUnit core as well as by other classes running on the client side.
+	/// 
+	/// The Load method is used to load a suite of tests from one or more 
+	/// assemblies, returning a tree of TestNodes to the caller.
+	/// 
+	/// The CountTestCases family of methods returns the number of test cases in the
+	/// loaded suite, either in its entirety or by using a filter to count a subset of tests.
+	/// 
+	/// The Run family of methods performs a test run synchronously, returning a TestResult
+	/// or TestResult[] to the caller. If provided, an EventListener interface will be 
+	/// notified of significant events in the running of the tests. A filter may be used
+    /// to run a subset of the tests.
+    ///
+    /// BeginRun and EndRun provide a simplified form of the asynchronous invocation
+	/// pattern used in many places within the .NET framework. Because the current
+	/// implementation allows only one run to be in process at a time, an IAsyncResult
+	/// is not used at this time.
+    /// 
+    /// Methods to cancel a run and to wait for a run to complete are also provided. The 
+    /// result of the last run may be obtained by querying the TestResult property.
+    /// 
+    /// </summary>
+	public interface TestRunner
+	{
+		#region Properties
+		/// <summary>
+		/// TestRunners are identified by an ID. So long as there
+		/// is only one test runner or a single chain of test runners,
+		/// the default id of 0 may be used. However, any client that
+		/// creates multiple runners must ensure that each one has a
+		/// unique ID in order to locate and run specific tests.
+		/// </summary>
+		int ID
+		{
+			get;
+		}
+
+		/// <summary>
+		/// IsTestRunning indicates whether a test is in progress. To retrieve the
+		/// results from an asynchronous test run, wait till IsTestRunning is false.
+		/// </summary>
+		bool Running
+		{
+			get;
+		}
+
+		/// <summary>
+		/// Returns information about loaded assemblies
+		/// </summary>
+		IList AssemblyInfo
+		{
+			get;
+		}
+
+		/// <summary>
+		/// The loaded test, converted to a tree of TestNodes so they can be
+		/// serialized and marshalled to a remote client.
+		/// </summary>
+		ITest Test
+		{
+			get;
+		}
+
+		/// <summary>
+		/// Result of the last test run.
+		/// </summary>
+		TestResult TestResult
+		{
+			get;
+		}
+		#endregion
+
+		#region Load and Unload Methods
+		/// <summary>
+		/// Load the assemblies in a test package
+		/// </summary>
+		/// <param name="package">The test package to be loaded</param>
+		/// <returns>True if the tests were loaded successfully, otherwise false</returns>
+		bool Load( TestPackage package );
+
+		/// <summary>
+		/// Unload all tests previously loaded
+		/// </summary>
+		void Unload();
+		#endregion
+
+		#region CountTestCases Methods
+		/// <summary>
+		/// Count Test Cases using a filter
+		/// </summary>
+		/// <param name="filter">The filter to apply</param>
+		/// <returns>The number of test cases found</returns>
+		int CountTestCases(ITestFilter filter );
+		#endregion
+
+		#region Run Methods
+		/// <summary>
+		/// Run all loaded tests and return a test result. The test is run synchronously,
+		/// and the listener interface is notified as it progresses.
+		/// </summary>
+		/// <param name="listener">Interface to receive EventListener notifications.</param>
+		TestResult Run(NUnit.Core.EventListener listener);
+
+		/// <summary>
+		/// Run selected tests and return a test result. The test is run synchronously,
+		/// and the listener interface is notified as it progresses.
+		/// </summary>
+		/// <param name="listener">Interface to receive EventListener notifications.</param>
+		/// <param name="filter">The filter to apply when running the tests</param>
+		TestResult Run(NUnit.Core.EventListener listener, ITestFilter filter);
+		
+		/// <summary>
+		/// Start a run of all loaded tests. The tests are run aynchronously and the 
+		/// listener interface is notified as it progresses.
+		/// </summary>
+		/// <param name="listener">Interface to receive EventListener notifications.</param>
+		void BeginRun(NUnit.Core.EventListener listener);
+
+		/// <summary>
+		/// Start a run of selected tests. The tests are run aynchronously and the 
+		/// listener interface is notified as it progresses.
+		/// </summary>
+		/// <param name="listener">Interface to receive EventListener notifications.</param>
+		/// <param name="filter">The filter to apply when running the tests</param>
+		void BeginRun(NUnit.Core.EventListener listener, ITestFilter filter);
+		
+		/// <summary>
+		/// Wait for an asynchronous run to complete and return the result.
+		/// </summary>
+		/// <returns>A TestResult for the entire run</returns>
+		TestResult EndRun();
+
+		/// <summary>
+		///  Cancel the test run that is in progress. For a synchronous run,
+		///  a client wanting to call this must create a separate run thread.
+		/// </summary>
+		void CancelRun();
+
+		/// <summary>
+		/// Wait for the test run in progress to complete. For a synchronous run,
+		/// a client wanting to call this must create a separate run thread. In
+		/// particular, a gui client calling this method is likely to hang, since
+		/// events will not be able to invoke methods on the gui thread.
+		/// </summary>
+		void Wait();
+		#endregion
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/TestSuiteResult.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/TestSuiteResult.cs
@@ -1,72 +1,72 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Core
-{
-	using System;
-	using System.Collections;
-
-	/// <summary>
-	/// TestSuiteResult represents the result of running a 
-	/// TestSuite. It adds a set of child results to the
-	/// base TestResult class.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class TestSuiteResult : TestResult
-	{
-		private ArrayList results = new ArrayList();
-		
-		/// <summary>
-		/// Construct a TestSuiteResult from a test and a name
-		/// </summary>
-		/// <param name="test"></param>
-		/// <param name="name"></param>
-		public TestSuiteResult(TestInfo test, string name) 
-			: base(test, name) { }
-
-		/// <summary>
-		/// Construct a TestSuite result from a string
-		/// 
-		/// This overload is used for testing
-		/// </summary>
-		/// <param name="testSuiteString"></param>
-		public TestSuiteResult(string testSuiteString) 
-			: base(null, testSuiteString) { }
-
-		/// <summary>
-		/// Add a child result to a TestSuiteResult
-		/// </summary>
-		/// <param name="result">The child result to be added</param>
-		public void AddResult(TestResult result) 
-		{
-			results.Add(result);
-
-			if( this.ResultState == ResultState.Success &&
-				result.ResultState != ResultState.Success )
-			{
-				this.Failure( "Child test failed", null, FailureSite.Child );
-			}
-		}
-
-		/// <summary>
-		/// Gets a list of the child results of this TestSUiteResult
-		/// </summary>
-		public IList Results
-		{
-			get { return results; }
-		}
-
-		/// <summary>
-		/// Accepts a ResultVisitor
-		/// </summary>
-		/// <param name="visitor">The visitor</param>
-		public override void Accept(ResultVisitor visitor) 
-		{
-			visitor.Visit(this);
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Core
+{
+	using System;
+	using System.Collections;
+
+	/// <summary>
+	/// TestSuiteResult represents the result of running a 
+	/// TestSuite. It adds a set of child results to the
+	/// base TestResult class.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class TestSuiteResult : TestResult
+	{
+		private ArrayList results = new ArrayList();
+		
+		/// <summary>
+		/// Construct a TestSuiteResult from a test and a name
+		/// </summary>
+		/// <param name="test"></param>
+		/// <param name="name"></param>
+		public TestSuiteResult(TestInfo test, string name) 
+			: base(test, name) { }
+
+		/// <summary>
+		/// Construct a TestSuite result from a string
+		/// 
+		/// This overload is used for testing
+		/// </summary>
+		/// <param name="testSuiteString"></param>
+		public TestSuiteResult(string testSuiteString) 
+			: base(null, testSuiteString) { }
+
+		/// <summary>
+		/// Add a child result to a TestSuiteResult
+		/// </summary>
+		/// <param name="result">The child result to be added</param>
+		public void AddResult(TestResult result) 
+		{
+			results.Add(result);
+
+			if( this.ResultState == ResultState.Success &&
+				result.ResultState != ResultState.Success )
+			{
+				this.Failure( "Child test failed", null, FailureSite.Child );
+			}
+		}
+
+		/// <summary>
+		/// Gets a list of the child results of this TestSUiteResult
+		/// </summary>
+		public IList Results
+		{
+			get { return results; }
+		}
+
+		/// <summary>
+		/// Accepts a ResultVisitor
+		/// </summary>
+		/// <param name="visitor">The visitor</param>
+		public override void Accept(ResultVisitor visitor) 
+		{
+			visitor.Visit(this);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/nunit.core.interfaces.dll.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/nunit.core.interfaces.dll.csproj
@@ -1,301 +1,301 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit.core.interfaces"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.Core"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = "bin\Debug\nunit.core.interfaces.xml"
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = "bin\Release\nunit.core.interfaces.xml"
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "EventListener.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IService.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ITest.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ITestFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ResultState.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ResultVisitor.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RunState.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RuntimeFramework.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Test.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestCaseResult.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestID.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestName.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestNode.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestOutput.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestPackage.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestResult.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestRunner.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestSuiteResult.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\Addin.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\AddinStatus.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\ExtensionType.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\IAddin.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\IAddinRegistry.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\IExtensionHost.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\IExtensionPoint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\IFrameworkRegistry.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\ISuiteBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\ITestCaseBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\ITestDecorator.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\NUnitAddinAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Extensibility\TestFramework.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Filters\AndFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Filters\CategoryFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Filters\NameFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Filters\NotFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Filters\OrFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Filters\SimpleNameFilter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit.core.interfaces"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.Core"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = "bin\Debug\nunit.core.interfaces.xml"
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = "bin\Release\nunit.core.interfaces.xml"
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "EventListener.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IService.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ITest.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ITestFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ResultState.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ResultVisitor.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RunState.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RuntimeFramework.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Test.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestCaseResult.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestID.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestName.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestNode.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestOutput.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestPackage.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestResult.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestRunner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestSuiteResult.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\Addin.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\AddinStatus.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\ExtensionType.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\IAddin.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\IAddinRegistry.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\IExtensionHost.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\IExtensionPoint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\IFrameworkRegistry.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\ISuiteBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\ITestCaseBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\ITestDecorator.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\NUnitAddinAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Extensibility\TestFramework.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Filters\AndFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Filters\CategoryFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Filters\NameFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Filters\NotFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Filters\OrFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Filters\SimpleNameFilter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitCore/interfaces/nunit.core.interfaces.dll_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitCore/interfaces/nunit.core.interfaces.dll_VS2005.csproj
@@ -1,120 +1,120 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{DCC88998-255A-4247-B658-71DD932E9873}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>NUnit.Core</RootNamespace>
-    <AssemblyName>nunit.core.interfaces</AssemblyName>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\nunit.core.interfaces.xml</DocumentationFile>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DebugType>full</DebugType>
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <CodeAnalysisRuleAssemblies>\rules</CodeAnalysisRuleAssemblies>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <DocumentationFile>bin\Debug2005\nunit.core.interfaces.xml</DocumentationFile>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <Optimize>true</Optimize>
-    <DebugType>pdbonly</DebugType>
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <CodeAnalysisRuleAssemblies>\rules</CodeAnalysisRuleAssemblies>
-    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
-    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
-    <ErrorReport>prompt</ErrorReport>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AssemblyInfo.cs" />
-    <Compile Include="EventListener.cs" />
-    <Compile Include="Extensibility\Addin.cs" />
-    <Compile Include="Extensibility\AddinStatus.cs" />
-    <Compile Include="Extensibility\ExtensionType.cs" />
-    <Compile Include="Extensibility\IAddin.cs" />
-    <Compile Include="Extensibility\IAddinRegistry.cs" />
-    <Compile Include="Extensibility\IExtensionHost.cs" />
-    <Compile Include="Extensibility\IExtensionPoint.cs" />
-    <Compile Include="Extensibility\IFrameworkRegistry.cs" />
-    <Compile Include="Extensibility\NUnitAddinAttribute.cs" />
-    <Compile Include="Extensibility\ISuiteBuilder.cs" />
-    <Compile Include="Extensibility\TestFramework.cs" />
-    <Compile Include="Filters\AndFilter.cs" />
-    <Compile Include="Filters\CategoryFilter.cs" />
-    <Compile Include="Filters\NameFilter.cs" />
-    <Compile Include="Filters\NotFilter.cs" />
-    <Compile Include="Filters\OrFilter.cs" />
-    <Compile Include="Filters\SimpleNameFilter.cs" />
-    <Compile Include="IService.cs" />
-    <Compile Include="ITest.cs" />
-    <Compile Include="Extensibility\ITestCaseBuilder.cs" />
-    <Compile Include="Extensibility\ITestDecorator.cs" />
-    <Compile Include="ITestFilter.cs" />
-    <Compile Include="ResultState.cs" />
-    <Compile Include="ResultVisitor.cs" />
-    <Compile Include="RunState.cs" />
-    <Compile Include="RuntimeFramework.cs" />
-    <Compile Include="Test.cs" />
-    <Compile Include="TestAssemblyInfo.cs" />
-    <Compile Include="TestCaseResult.cs" />
-    <Compile Include="TestFilter.cs" />
-    <Compile Include="TestID.cs" />
-    <Compile Include="TestInfo.cs" />
-    <Compile Include="TestName.cs" />
-    <Compile Include="TestNode.cs" />
-    <Compile Include="TestOutput.cs" />
-    <Compile Include="TestPackage.cs" />
-    <Compile Include="TestResult.cs" />
-    <Compile Include="TestRunner.cs" />
-    <Compile Include="TestSuiteResult.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Properties\" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{DCC88998-255A-4247-B658-71DD932E9873}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>NUnit.Core</RootNamespace>
+    <AssemblyName>nunit.core.interfaces</AssemblyName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\nunit.core.interfaces.xml</DocumentationFile>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <CodeAnalysisRuleAssemblies>\rules</CodeAnalysisRuleAssemblies>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <DocumentationFile>bin\Debug2005\nunit.core.interfaces.xml</DocumentationFile>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <CodeAnalysisRuleAssemblies>\rules</CodeAnalysisRuleAssemblies>
+    <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
+    <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
+    <ErrorReport>prompt</ErrorReport>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AssemblyInfo.cs" />
+    <Compile Include="EventListener.cs" />
+    <Compile Include="Extensibility\Addin.cs" />
+    <Compile Include="Extensibility\AddinStatus.cs" />
+    <Compile Include="Extensibility\ExtensionType.cs" />
+    <Compile Include="Extensibility\IAddin.cs" />
+    <Compile Include="Extensibility\IAddinRegistry.cs" />
+    <Compile Include="Extensibility\IExtensionHost.cs" />
+    <Compile Include="Extensibility\IExtensionPoint.cs" />
+    <Compile Include="Extensibility\IFrameworkRegistry.cs" />
+    <Compile Include="Extensibility\NUnitAddinAttribute.cs" />
+    <Compile Include="Extensibility\ISuiteBuilder.cs" />
+    <Compile Include="Extensibility\TestFramework.cs" />
+    <Compile Include="Filters\AndFilter.cs" />
+    <Compile Include="Filters\CategoryFilter.cs" />
+    <Compile Include="Filters\NameFilter.cs" />
+    <Compile Include="Filters\NotFilter.cs" />
+    <Compile Include="Filters\OrFilter.cs" />
+    <Compile Include="Filters\SimpleNameFilter.cs" />
+    <Compile Include="IService.cs" />
+    <Compile Include="ITest.cs" />
+    <Compile Include="Extensibility\ITestCaseBuilder.cs" />
+    <Compile Include="Extensibility\ITestDecorator.cs" />
+    <Compile Include="ITestFilter.cs" />
+    <Compile Include="ResultState.cs" />
+    <Compile Include="ResultVisitor.cs" />
+    <Compile Include="RunState.cs" />
+    <Compile Include="RuntimeFramework.cs" />
+    <Compile Include="Test.cs" />
+    <Compile Include="TestAssemblyInfo.cs" />
+    <Compile Include="TestCaseResult.cs" />
+    <Compile Include="TestFilter.cs" />
+    <Compile Include="TestID.cs" />
+    <Compile Include="TestInfo.cs" />
+    <Compile Include="TestName.cs" />
+    <Compile Include="TestNode.cs" />
+    <Compile Include="TestOutput.cs" />
+    <Compile Include="TestPackage.cs" />
+    <Compile Include="TestResult.cs" />
+    <Compile Include="TestRunner.cs" />
+    <Compile Include="TestSuiteResult.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/AssemblyInfo.cs
@@ -1,14 +1,14 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-[assembly: CLSCompliant(true)]
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+[assembly: CLSCompliant(true)]
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RepeatedTestCase.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RepeatedTestCase.cs
@@ -1,39 +1,39 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-
-namespace NUnit.Core.Extensions
-{
-	/// <summary>
-	/// RepeatedTestCase aggregates another test case and runs it
-	/// a specified number of times.
-	/// </summary>
-	public class RepeatedTestCase : AbstractTestCaseDecoration
-	{
-		// The number of times to run the test
-		int count;
-
-		public RepeatedTestCase( TestCase testCase, int count )
-			: base( testCase )
-		{
-			this.count = count;
-		}
-
-		public override void Run(TestCaseResult result)
-		{
-			// So testCase can get the fixture
-			testCase.Parent = this.Parent;
-
-			for( int i = 0; i < count; i++ )
-			{
-				testCase.Run( result );
-				if ( result.IsFailure )
-					return;
-			}
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+
+namespace NUnit.Core.Extensions
+{
+	/// <summary>
+	/// RepeatedTestCase aggregates another test case and runs it
+	/// a specified number of times.
+	/// </summary>
+	public class RepeatedTestCase : AbstractTestCaseDecoration
+	{
+		// The number of times to run the test
+		int count;
+
+		public RepeatedTestCase( TestCase testCase, int count )
+			: base( testCase )
+		{
+			this.count = count;
+		}
+
+		public override void Run(TestCaseResult result)
+		{
+			// So testCase can get the fixture
+			testCase.Parent = this.Parent;
+
+			for( int i = 0; i < count; i++ )
+			{
+				testCase.Run( result );
+				if ( result.IsFailure )
+					return;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RepeatedTestDecorator.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RepeatedTestDecorator.cs
@@ -1,63 +1,63 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-using System;
-using System.Reflection;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Core.Extensions
-{
-	/// <summary>
-	/// Summary description for RepeatedTestDecorator.
-	/// </summary>
-	[NUnitAddin(Description="Runs a test case multiple times")]
-	public class RepeatedTestDecorator : ITestDecorator, IAddin
-	{
-		private static readonly string RepeatAttributeType = "NUnit.Framework.Extensions.RepeatAttribute";
-
-		#region IAddin Members
-		public bool Install(IExtensionHost host)
-		{
-			IExtensionPoint decorators = host.GetExtensionPoint( "TestDecorators" );
-			if ( decorators == null )
-				return false;
-				
-			decorators.Install( this );
-			return true;
-		}
-		#endregion
-
-		#region ITestDecorator Members
-		public Test Decorate(Test test, MemberInfo member)
-		{
-			if ( member == null )
-				return test;
-
-			TestCase testCase = test as TestCase;
-			if ( testCase == null )
-				return test;
-
-			Attribute repeatAttr = Reflect.GetAttribute( member, RepeatAttributeType, true );
-			if ( repeatAttr == null )
-				return test;		
-
-			object propVal = Reflect.GetPropertyValue( repeatAttr, "Count", 
-				BindingFlags.Public | BindingFlags.Instance );
-
-			if ( propVal == null )
-				return test;
-
-			int count = (int)propVal;
-
-			return new RepeatedTestCase( testCase, count );
-		}
-
-//		public Test Decorate( Test test, Type fixtureType )
-//		{
-//			return test;
-//		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+using System;
+using System.Reflection;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Core.Extensions
+{
+	/// <summary>
+	/// Summary description for RepeatedTestDecorator.
+	/// </summary>
+	[NUnitAddin(Description="Runs a test case multiple times")]
+	public class RepeatedTestDecorator : ITestDecorator, IAddin
+	{
+		private static readonly string RepeatAttributeType = "NUnit.Framework.Extensions.RepeatAttribute";
+
+		#region IAddin Members
+		public bool Install(IExtensionHost host)
+		{
+			IExtensionPoint decorators = host.GetExtensionPoint( "TestDecorators" );
+			if ( decorators == null )
+				return false;
+				
+			decorators.Install( this );
+			return true;
+		}
+		#endregion
+
+		#region ITestDecorator Members
+		public Test Decorate(Test test, MemberInfo member)
+		{
+			if ( member == null )
+				return test;
+
+			TestCase testCase = test as TestCase;
+			if ( testCase == null )
+				return test;
+
+			Attribute repeatAttr = Reflect.GetAttribute( member, RepeatAttributeType, true );
+			if ( repeatAttr == null )
+				return test;		
+
+			object propVal = Reflect.GetPropertyValue( repeatAttr, "Count", 
+				BindingFlags.Public | BindingFlags.Instance );
+
+			if ( propVal == null )
+				return test;
+
+			int count = (int)propVal;
+
+			return new RepeatedTestCase( testCase, count );
+		}
+
+//		public Test Decorate( Test test, Type fixtureType )
+//		{
+//			return test;
+//		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestAddIn.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestAddIn.cs
@@ -1,54 +1,54 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-using System.Reflection;
-using NUnit.Core;
-using NUnit.Core.Extensibility;
-
-namespace NUnit.Core.Extensions.RowTest
-{
-	[NUnitAddin(Name = "Row Test Extension")]
-	public class RowTestAddIn : IAddin, ITestCaseBuilder
-	{
-		private RowTestFactory _testFactory;
-		
-		public RowTestAddIn()
-		{
-			_testFactory = new RowTestFactory();
-		}
-		
-		public bool Install(IExtensionHost host)
-		{
-			if (host == null)
-				throw new ArgumentNullException("host");
-			
-			IExtensionPoint testCaseBuilders = host.GetExtensionPoint("TestCaseBuilders");
-			if (testCaseBuilders == null)
-				return false;
-			
-			testCaseBuilders.Install(this);
-			return true;
-		}
-		
-		public bool CanBuildFrom(MethodInfo method)
-		{
-			return RowTestFramework.IsRowTest(method);
-		}
-		
-		public Test BuildFrom(MethodInfo method)
-		{
-			if (method == null)
-				throw new ArgumentNullException("method");
-			
-			RowTestSuite suite = _testFactory.CreateRowTestSuite(method);
-			Attribute[] rows = RowTestFramework.GetRowAttributes(method);
-
-			foreach (Attribute row in rows)
-				suite.Add(_testFactory.CreateRowTestCase(row, method));
-			
-			return suite;
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+using System.Reflection;
+using NUnit.Core;
+using NUnit.Core.Extensibility;
+
+namespace NUnit.Core.Extensions.RowTest
+{
+	[NUnitAddin(Name = "Row Test Extension")]
+	public class RowTestAddIn : IAddin, ITestCaseBuilder
+	{
+		private RowTestFactory _testFactory;
+		
+		public RowTestAddIn()
+		{
+			_testFactory = new RowTestFactory();
+		}
+		
+		public bool Install(IExtensionHost host)
+		{
+			if (host == null)
+				throw new ArgumentNullException("host");
+			
+			IExtensionPoint testCaseBuilders = host.GetExtensionPoint("TestCaseBuilders");
+			if (testCaseBuilders == null)
+				return false;
+			
+			testCaseBuilders.Install(this);
+			return true;
+		}
+		
+		public bool CanBuildFrom(MethodInfo method)
+		{
+			return RowTestFramework.IsRowTest(method);
+		}
+		
+		public Test BuildFrom(MethodInfo method)
+		{
+			if (method == null)
+				throw new ArgumentNullException("method");
+			
+			RowTestSuite suite = _testFactory.CreateRowTestSuite(method);
+			Attribute[] rows = RowTestFramework.GetRowAttributes(method);
+
+			foreach (Attribute row in rows)
+				suite.Add(_testFactory.CreateRowTestCase(row, method));
+			
+			return suite;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestCase.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestCase.cs
@@ -1,37 +1,37 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-using System.Reflection;
-using System.Text;
-using NUnit.Core;
-
-namespace NUnit.Core.Extensions.RowTest
-{
-	public class RowTestCase : NUnitTestMethod
-	{
-		private object[] _arguments;
-		
-		public RowTestCase(MethodInfo method, string testName, object[] arguments)
-			: base(method)
-		{
-			RowTestNameBuilder testNameBuilder = new RowTestNameBuilder(method, testName, arguments);
-			this.TestName.Name = testNameBuilder.TestName;
-			this.TestName.FullName = testNameBuilder.FullTestName;
-			
-			_arguments = arguments;
-		}
-		
-		public object[] Arguments
-		{
-			get { return _arguments; }
-		}
-		
-		public override void RunTestMethod(TestCaseResult testResult)
-		{
-			object[] arguments = _arguments != null ? _arguments : new object[] { null };			
-			Reflect.InvokeMethod(this.Method, this.Fixture, arguments);
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+using System.Reflection;
+using System.Text;
+using NUnit.Core;
+
+namespace NUnit.Core.Extensions.RowTest
+{
+	public class RowTestCase : NUnitTestMethod
+	{
+		private object[] _arguments;
+		
+		public RowTestCase(MethodInfo method, string testName, object[] arguments)
+			: base(method)
+		{
+			RowTestNameBuilder testNameBuilder = new RowTestNameBuilder(method, testName, arguments);
+			this.TestName.Name = testNameBuilder.TestName;
+			this.TestName.FullName = testNameBuilder.FullTestName;
+			
+			_arguments = arguments;
+		}
+		
+		public object[] Arguments
+		{
+			get { return _arguments; }
+		}
+		
+		public override void RunTestMethod(TestCaseResult testResult)
+		{
+			object[] arguments = _arguments != null ? _arguments : new object[] { null };			
+			Reflect.InvokeMethod(this.Method, this.Fixture, arguments);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestFactory.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestFactory.cs
@@ -1,79 +1,79 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-using System.Reflection;
-using NUnit.Core;
-
-namespace NUnit.Core.Extensions.RowTest
-{
-	public class RowTestFactory
-	{
-		public RowTestFactory()
-		{
-		}
-		
-		public RowTestSuite CreateRowTestSuite(MethodInfo method)
-		{
-			if (method == null)
-				throw new ArgumentNullException("method");
-			
-			RowTestSuite testSuite = new RowTestSuite(method);
-			NUnitFramework.ApplyCommonAttributes(method, testSuite);
-			
-			return testSuite;
-		}
-		
-		public RowTestCase CreateRowTestCase(Attribute row, MethodInfo method)
-		{
-			if (row == null)
-				throw new ArgumentNullException("row");
-			
-			if (method == null)
-				throw new ArgumentNullException("method");
-			
-			object[] rowArguments = RowTestFramework.GetRowArguments(row);
-			rowArguments = FilterSpecialValues(rowArguments);
-			
-			string testName = RowTestFramework.GetTestName(row);
-			Type expectedExceptionType = RowTestFramework.GetExpectedExceptionType(row);
-			
-			RowTestCase testCase = new RowTestCase(method, testName, rowArguments);
-			if (expectedExceptionType != null)
-			{
-				testCase.ExceptionExpected = true;
-				testCase.ExpectedExceptionType = expectedExceptionType;
-				testCase.ExpectedMessage = RowTestFramework.GetExpectedExceptionMessage(row);
-			}
-
-			return testCase;
-		}
-		
-		private object[] FilterSpecialValues(object[] arguments)
-		{
-			if (arguments == null)
-				return null;
-			
-			for (int i = 0; i < arguments.Length; i++)
-			{
-				if (RowTestFramework.IsSpecialValue(arguments[i]))
-					arguments[i] = MapSpecialValue(arguments[i]);
-			}
-			
-			return arguments;
-		}
-		
-		private object MapSpecialValue(object specialValue)
-		{
-			switch (specialValue.ToString())
-			{
-				case "Null":
-					return null;
-				
-				default:
-					return specialValue;
-			}
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+using System.Reflection;
+using NUnit.Core;
+
+namespace NUnit.Core.Extensions.RowTest
+{
+	public class RowTestFactory
+	{
+		public RowTestFactory()
+		{
+		}
+		
+		public RowTestSuite CreateRowTestSuite(MethodInfo method)
+		{
+			if (method == null)
+				throw new ArgumentNullException("method");
+			
+			RowTestSuite testSuite = new RowTestSuite(method);
+			NUnitFramework.ApplyCommonAttributes(method, testSuite);
+			
+			return testSuite;
+		}
+		
+		public RowTestCase CreateRowTestCase(Attribute row, MethodInfo method)
+		{
+			if (row == null)
+				throw new ArgumentNullException("row");
+			
+			if (method == null)
+				throw new ArgumentNullException("method");
+			
+			object[] rowArguments = RowTestFramework.GetRowArguments(row);
+			rowArguments = FilterSpecialValues(rowArguments);
+			
+			string testName = RowTestFramework.GetTestName(row);
+			Type expectedExceptionType = RowTestFramework.GetExpectedExceptionType(row);
+			
+			RowTestCase testCase = new RowTestCase(method, testName, rowArguments);
+			if (expectedExceptionType != null)
+			{
+				testCase.ExceptionExpected = true;
+				testCase.ExpectedExceptionType = expectedExceptionType;
+				testCase.ExpectedMessage = RowTestFramework.GetExpectedExceptionMessage(row);
+			}
+
+			return testCase;
+		}
+		
+		private object[] FilterSpecialValues(object[] arguments)
+		{
+			if (arguments == null)
+				return null;
+			
+			for (int i = 0; i < arguments.Length; i++)
+			{
+				if (RowTestFramework.IsSpecialValue(arguments[i]))
+					arguments[i] = MapSpecialValue(arguments[i]);
+			}
+			
+			return arguments;
+		}
+		
+		private object MapSpecialValue(object specialValue)
+		{
+			switch (specialValue.ToString())
+			{
+				case "Null":
+					return null;
+				
+				default:
+					return specialValue;
+			}
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestFramework.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestFramework.cs
@@ -1,65 +1,65 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-using System.Reflection;
-using NUnit.Core;
-
-namespace NUnit.Core.Extensions.RowTest
-{
-	public sealed class RowTestFramework
-	{
-		public const string RowTestAttribute = "NUnit.Framework.Extensions.RowTestAttribute";
-		public const string RowAttribute = "NUnit.Framework.Extensions.RowAttribute";
-		public const string SpecialValueEnum = "NUnit.Framework.Extensions.SpecialValue";
-		
-		private RowTestFramework()
-		{
-		}
-		
-		public static bool IsRowTest(MethodInfo method)
-		{
-			if (method == null)
-				return false;
-			
-			return Reflect.HasAttribute(method, RowTestAttribute, false);;
-		}
-		
-		public static Attribute[] GetRowAttributes(MethodInfo method)
-		{
-			if (method == null)
-				throw new ArgumentNullException("method");
-			
-			return Reflect.GetAttributes(method, RowAttribute, false);
-		}
-		
-		public static object[] GetRowArguments(Attribute attribute)
-		{
-			return Reflect.GetPropertyValue(attribute, "Arguments") as object[];
-		}
-		
-		public static bool IsSpecialValue(object argument)
-		{
-			if (argument == null)
-				return false;
-			
-			return argument.GetType().FullName == SpecialValueEnum;
-		}
-		
-		public static Type GetExpectedExceptionType(Attribute attribute)
-		{
-			return Reflect.GetPropertyValue(attribute, "ExpectedException") as Type;
-		}
-		
-		public static string GetExpectedExceptionMessage(Attribute attribute)
-		{
-			return Reflect.GetPropertyValue(attribute, "ExceptionMessage") as string;
-		}
-		
-		public static string GetTestName(Attribute attribute)
-		{
-			return Reflect.GetPropertyValue(attribute, "TestName") as string;
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+using System.Reflection;
+using NUnit.Core;
+
+namespace NUnit.Core.Extensions.RowTest
+{
+	public sealed class RowTestFramework
+	{
+		public const string RowTestAttribute = "NUnit.Framework.Extensions.RowTestAttribute";
+		public const string RowAttribute = "NUnit.Framework.Extensions.RowAttribute";
+		public const string SpecialValueEnum = "NUnit.Framework.Extensions.SpecialValue";
+		
+		private RowTestFramework()
+		{
+		}
+		
+		public static bool IsRowTest(MethodInfo method)
+		{
+			if (method == null)
+				return false;
+			
+			return Reflect.HasAttribute(method, RowTestAttribute, false);;
+		}
+		
+		public static Attribute[] GetRowAttributes(MethodInfo method)
+		{
+			if (method == null)
+				throw new ArgumentNullException("method");
+			
+			return Reflect.GetAttributes(method, RowAttribute, false);
+		}
+		
+		public static object[] GetRowArguments(Attribute attribute)
+		{
+			return Reflect.GetPropertyValue(attribute, "Arguments") as object[];
+		}
+		
+		public static bool IsSpecialValue(object argument)
+		{
+			if (argument == null)
+				return false;
+			
+			return argument.GetType().FullName == SpecialValueEnum;
+		}
+		
+		public static Type GetExpectedExceptionType(Attribute attribute)
+		{
+			return Reflect.GetPropertyValue(attribute, "ExpectedException") as Type;
+		}
+		
+		public static string GetExpectedExceptionMessage(Attribute attribute)
+		{
+			return Reflect.GetPropertyValue(attribute, "ExceptionMessage") as string;
+		}
+		
+		public static string GetTestName(Attribute attribute)
+		{
+			return Reflect.GetPropertyValue(attribute, "TestName") as string;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestNameBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestNameBuilder.cs
@@ -1,92 +1,92 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-using System.Reflection;
-using System.Text;
-
-namespace NUnit.Core.Extensions.RowTest
-{
-	public class RowTestNameBuilder
-	{
-		private MethodInfo _method;
-		private string _baseTestName;
-		private object[] _arguments;
-		private string _argumentList;
-
-		public RowTestNameBuilder(MethodInfo method, string baseTestName, object[] arguments)
-		{
-			_method = method;
-			_baseTestName = baseTestName;
-			_arguments = arguments;
-		}
-		
-		public MethodInfo Method
-		{
-			get { return _method; }
-		}
-		
-		public string BaseTestName
-		{
-			get { return _baseTestName; }
-		}
-		
-		public object[] Arguments
-		{
-			get { return _arguments; }
-		}
-		
-		public string TestName
-		{
-			get 
-			{
-				string baseTestName = _baseTestName;
-				
-				if (baseTestName == null || baseTestName.Length == 0)
-					baseTestName = _method.Name;
-					
-				return baseTestName + GetArgumentList();
-			}
-		}
-		
-		public string FullTestName
-		{
-			get { return _method.DeclaringType.FullName + "." + TestName; }
-		}
-		
-		private string GetArgumentList()
-		{
-			if (_argumentList == null)
-				_argumentList = "(" + CreateArgumentList() + ")";
-			
-			return _argumentList;
-		}
-		
-		private string CreateArgumentList()
-		{
-			if (_arguments == null)
-				return "null";
-			
-			StringBuilder argumentListBuilder = new StringBuilder();
-
-			for (int i = 0; i < _arguments.Length; i++)
-			{
-				if (i > 0)
-					argumentListBuilder.Append(", ");
-				
-				argumentListBuilder.Append (GetArgumentString (_arguments[i]));
-			}
-			
-			return argumentListBuilder.ToString();
-		}
-		
-		private string GetArgumentString (object argument)
-		{
-			if (argument == null)
-				return "null";
-			
-			return argument.ToString();
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+using System.Reflection;
+using System.Text;
+
+namespace NUnit.Core.Extensions.RowTest
+{
+	public class RowTestNameBuilder
+	{
+		private MethodInfo _method;
+		private string _baseTestName;
+		private object[] _arguments;
+		private string _argumentList;
+
+		public RowTestNameBuilder(MethodInfo method, string baseTestName, object[] arguments)
+		{
+			_method = method;
+			_baseTestName = baseTestName;
+			_arguments = arguments;
+		}
+		
+		public MethodInfo Method
+		{
+			get { return _method; }
+		}
+		
+		public string BaseTestName
+		{
+			get { return _baseTestName; }
+		}
+		
+		public object[] Arguments
+		{
+			get { return _arguments; }
+		}
+		
+		public string TestName
+		{
+			get 
+			{
+				string baseTestName = _baseTestName;
+				
+				if (baseTestName == null || baseTestName.Length == 0)
+					baseTestName = _method.Name;
+					
+				return baseTestName + GetArgumentList();
+			}
+		}
+		
+		public string FullTestName
+		{
+			get { return _method.DeclaringType.FullName + "." + TestName; }
+		}
+		
+		private string GetArgumentList()
+		{
+			if (_argumentList == null)
+				_argumentList = "(" + CreateArgumentList() + ")";
+			
+			return _argumentList;
+		}
+		
+		private string CreateArgumentList()
+		{
+			if (_arguments == null)
+				return "null";
+			
+			StringBuilder argumentListBuilder = new StringBuilder();
+
+			for (int i = 0; i < _arguments.Length; i++)
+			{
+				if (i > 0)
+					argumentListBuilder.Append(", ");
+				
+				argumentListBuilder.Append (GetArgumentString (_arguments[i]));
+			}
+			
+			return argumentListBuilder.ToString();
+		}
+		
+		private string GetArgumentString (object argument)
+		{
+			if (argument == null)
+				return "null";
+			
+			return argument.ToString();
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestSuite.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/RowTest/RowTestSuite.cs
@@ -1,50 +1,50 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-using System.Reflection;
-using NUnit.Core;
-
-namespace NUnit.Core.Extensions.RowTest
-{
-	public class RowTestSuite : TestSuite
-	{
-		private static string GetParentName(MethodInfo method)
-		{
-			if (method == null)
-				throw new ArgumentNullException("method");
-			
-			return method.DeclaringType.ToString();
-		}
-		
-		private static string GetTestName(MethodInfo method)
-		{
-			if (method == null)
-				throw new ArgumentNullException("method");
-			
-			return method.Name;
-		}
-		
-		public RowTestSuite(MethodInfo method)
-			: base (GetParentName(method), GetTestName(method))
-		{
-		}
-		
-		public override TestResult Run(EventListener listener, ITestFilter filter)
-		{
-			if (this.Parent != null)
-				this.Fixture = this.Parent.Fixture;
-			
-			return base.Run(listener, filter);
-		}
-		
-		protected override void DoOneTimeSetUp(TestResult suiteResult)
-		{
-		}
-		
-		protected override void DoOneTimeTearDown(TestResult suiteResult)
-		{
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+using System.Reflection;
+using NUnit.Core;
+
+namespace NUnit.Core.Extensions.RowTest
+{
+	public class RowTestSuite : TestSuite
+	{
+		private static string GetParentName(MethodInfo method)
+		{
+			if (method == null)
+				throw new ArgumentNullException("method");
+			
+			return method.DeclaringType.ToString();
+		}
+		
+		private static string GetTestName(MethodInfo method)
+		{
+			if (method == null)
+				throw new ArgumentNullException("method");
+			
+			return method.Name;
+		}
+		
+		public RowTestSuite(MethodInfo method)
+			: base (GetParentName(method), GetTestName(method))
+		{
+		}
+		
+		public override TestResult Run(EventListener listener, ITestFilter filter)
+		{
+			if (this.Parent != null)
+				this.Fixture = this.Parent.Fixture;
+			
+			return base.Run(listener, filter);
+		}
+		
+		protected override void DoOneTimeSetUp(TestResult suiteResult)
+		{
+		}
+		
+		protected override void DoOneTimeTearDown(TestResult suiteResult)
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/nunit.core.extensions.dll.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/nunit.core.extensions.dll.csproj
@@ -1,151 +1,151 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{98B10E98-003C-45A0-9587-119142E39986}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit.core.extensions"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.Core.Extensions"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "true"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
-                />
-                <Reference
-                    Name = "nunit.core.dll"
-                    Project = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-                <Reference
-                    Name = "nunit.core.interfaces.dll"
-                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RepeatedTestCase.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RepeatedTestDecorator.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowTestAddIn.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowTestCase.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowTestFactory.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowTestFramework.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowTestNameBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowTestSuite.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{98B10E98-003C-45A0-9587-119142E39986}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit.core.extensions"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.Core.Extensions"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "true"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.XML.dll"
+                />
+                <Reference
+                    Name = "nunit.core.dll"
+                    Project = "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+                <Reference
+                    Name = "nunit.core.interfaces.dll"
+                    Project = "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RepeatedTestCase.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RepeatedTestDecorator.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowTestAddIn.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowTestCase.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowTestFactory.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowTestFramework.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowTestNameBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowTestSuite.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/core/nunit.core.extensions.dll_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/core/nunit.core.extensions.dll_VS2005.csproj
@@ -1,85 +1,85 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{98B10E98-003C-45A0-9587-119142E39986}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.core.extensions</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Core.Extensions</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <Optimize>true</Optimize>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="RepeatedTestCase.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="RepeatedTestDecorator.cs" />
-    <Compile Include="RowTest\RowTestAddIn.cs" />
-    <Compile Include="RowTest\RowTestCase.cs" />
-    <Compile Include="RowTest\RowTestFactory.cs" />
-    <Compile Include="RowTest\RowTestFramework.cs" />
-    <Compile Include="RowTest\RowTestNameBuilder.cs" />
-    <Compile Include="RowTest\RowTestSuite.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll_VS2005.csproj">
-      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
-      <Name>nunit.core.dll_VS2005</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
-      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
-      <Name>nunit.core.interfaces.dll_VS2005</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{98B10E98-003C-45A0-9587-119142E39986}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.core.extensions</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Core.Extensions</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <Optimize>true</Optimize>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="RepeatedTestCase.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RepeatedTestDecorator.cs" />
+    <Compile Include="RowTest\RowTestAddIn.cs" />
+    <Compile Include="RowTest\RowTestCase.cs" />
+    <Compile Include="RowTest\RowTestFactory.cs" />
+    <Compile Include="RowTest\RowTestFramework.cs" />
+    <Compile Include="RowTest\RowTestNameBuilder.cs" />
+    <Compile Include="RowTest\RowTestSuite.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll_VS2005.csproj">
+      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
+      <Name>nunit.core.dll_VS2005</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj">
+      <Project>{DCC88998-255A-4247-B658-71DD932E9873}</Project>
+      <Name>nunit.core.interfaces.dll_VS2005</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/AssemblyInfo.cs
@@ -1,14 +1,14 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-[assembly: CLSCompliant(true)]
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+[assembly: CLSCompliant(true)]
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/RepeatAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/RepeatAttribute.cs
@@ -1,37 +1,37 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework.Extensions
-{
-	/// <summary>
-	/// RepeatAttribute may be applied to test case in order
-	/// to run it multiple times.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
-	public class RepeatAttribute : Attribute
-	{
-		private int count;
-
-		/// <summary>
-		/// Construct a RepeatAttribute
-		/// </summary>
-		/// <param name="count">The number of times to run the test</param>
-		public RepeatAttribute(int count)
-		{
-			this.count = count;
-		}
-
-		/// <summary>
-		/// Gets the number of times to run the test.
-		/// </summary>
-		public int Count
-		{
-			get { return count; }
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Extensions
+{
+	/// <summary>
+	/// RepeatAttribute may be applied to test case in order
+	/// to run it multiple times.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+	public class RepeatAttribute : Attribute
+	{
+		private int count;
+
+		/// <summary>
+		/// Construct a RepeatAttribute
+		/// </summary>
+		/// <param name="count">The number of times to run the test</param>
+		public RepeatAttribute(int count)
+		{
+			this.count = count;
+		}
+
+		/// <summary>
+		/// Gets the number of times to run the test.
+		/// </summary>
+		public int Count
+		{
+			get { return count; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/RowAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/RowAttribute.cs
@@ -1,67 +1,67 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-
-namespace NUnitExtension.RowTest
-{
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
-	public sealed class RowAttribute : Attribute
-	{
-		private string _testName;
-		private object[] _arguments;
-		private string _description;
-		private Type _expectedExceptionType;
-		private string _exceptionMessage;
-		
-		public RowAttribute(object argument1)
-		{
-			_arguments = new object[] { argument1 };
-		}
-		
-		public RowAttribute(object argument1, object argument2)
-		{
-			_arguments = new object[] { argument1, argument2 };
-		}
-		
-		public RowAttribute(object argument1, object argument2, object argument3)
-		{
-			_arguments = new object[] { argument1, argument2, argument3 };
-		}
-		
-		public RowAttribute(params object[] arguments)
-		{
-			_arguments = arguments;
-		}
-		
-		public string TestName
-		{
-			get { return _testName; }
-			set { _testName = value; }
-		}
-		
-		public object[] Arguments
-		{
-			get { return _arguments; }
-		}
-		
-		public string Description
-		{
-			get { return _description; }
-			set { _description = value; }
-		}
-		
-		public Type ExpectedException
-		{
-			get { return _expectedExceptionType; }
-			set { _expectedExceptionType = value; }
-		}
-		
-		public string ExceptionMessage
-		{
-			get { return _exceptionMessage; }
-			set { _exceptionMessage = value; }
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+
+namespace NUnitExtension.RowTest
+{
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
+	public sealed class RowAttribute : Attribute
+	{
+		private string _testName;
+		private object[] _arguments;
+		private string _description;
+		private Type _expectedExceptionType;
+		private string _exceptionMessage;
+		
+		public RowAttribute(object argument1)
+		{
+			_arguments = new object[] { argument1 };
+		}
+		
+		public RowAttribute(object argument1, object argument2)
+		{
+			_arguments = new object[] { argument1, argument2 };
+		}
+		
+		public RowAttribute(object argument1, object argument2, object argument3)
+		{
+			_arguments = new object[] { argument1, argument2, argument3 };
+		}
+		
+		public RowAttribute(params object[] arguments)
+		{
+			_arguments = arguments;
+		}
+		
+		public string TestName
+		{
+			get { return _testName; }
+			set { _testName = value; }
+		}
+		
+		public object[] Arguments
+		{
+			get { return _arguments; }
+		}
+		
+		public string Description
+		{
+			get { return _description; }
+			set { _description = value; }
+		}
+		
+		public Type ExpectedException
+		{
+			get { return _expectedExceptionType; }
+			set { _expectedExceptionType = value; }
+		}
+		
+		public string ExceptionMessage
+		{
+			get { return _exceptionMessage; }
+			set { _exceptionMessage = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/RowTest/RowAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/RowTest/RowAttribute.cs
@@ -1,67 +1,67 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-
-namespace NUnit.Framework.Extensions
-{
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
-	public sealed class RowAttribute : Attribute
-	{
-		private string _testName;
-		private object[] _arguments;
-		private string _description;
-		private Type _expectedExceptionType;
-		private string _exceptionMessage;
-		
-		public RowAttribute(object argument1)
-		{
-			_arguments = new object[] { argument1 };
-		}
-		
-		public RowAttribute(object argument1, object argument2)
-		{
-			_arguments = new object[] { argument1, argument2 };
-		}
-		
-		public RowAttribute(object argument1, object argument2, object argument3)
-		{
-			_arguments = new object[] { argument1, argument2, argument3 };
-		}
-		
-		public RowAttribute(params object[] arguments)
-		{
-			_arguments = arguments;
-		}
-		
-		public string TestName
-		{
-			get { return _testName; }
-			set { _testName = value; }
-		}
-		
-		public object[] Arguments
-		{
-			get { return _arguments; }
-		}
-		
-		public string Description
-		{
-			get { return _description; }
-			set { _description = value; }
-		}
-		
-		public Type ExpectedException
-		{
-			get { return _expectedExceptionType; }
-			set { _expectedExceptionType = value; }
-		}
-		
-		public string ExceptionMessage
-		{
-			get { return _exceptionMessage; }
-			set { _exceptionMessage = value; }
-		}
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+
+namespace NUnit.Framework.Extensions
+{
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
+	public sealed class RowAttribute : Attribute
+	{
+		private string _testName;
+		private object[] _arguments;
+		private string _description;
+		private Type _expectedExceptionType;
+		private string _exceptionMessage;
+		
+		public RowAttribute(object argument1)
+		{
+			_arguments = new object[] { argument1 };
+		}
+		
+		public RowAttribute(object argument1, object argument2)
+		{
+			_arguments = new object[] { argument1, argument2 };
+		}
+		
+		public RowAttribute(object argument1, object argument2, object argument3)
+		{
+			_arguments = new object[] { argument1, argument2, argument3 };
+		}
+		
+		public RowAttribute(params object[] arguments)
+		{
+			_arguments = arguments;
+		}
+		
+		public string TestName
+		{
+			get { return _testName; }
+			set { _testName = value; }
+		}
+		
+		public object[] Arguments
+		{
+			get { return _arguments; }
+		}
+		
+		public string Description
+		{
+			get { return _description; }
+			set { _description = value; }
+		}
+		
+		public Type ExpectedException
+		{
+			get { return _expectedExceptionType; }
+			set { _expectedExceptionType = value; }
+		}
+		
+		public string ExceptionMessage
+		{
+			get { return _exceptionMessage; }
+			set { _exceptionMessage = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/RowTest/RowTestAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/RowTest/RowTestAttribute.cs
@@ -1,13 +1,13 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-
-namespace NUnit.Framework.Extensions
-{
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
-	public sealed class RowTestAttribute : Attribute
-	{
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+
+namespace NUnit.Framework.Extensions
+{
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
+	public sealed class RowTestAttribute : Attribute
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/RowTest/SpecialValue.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/RowTest/SpecialValue.cs
@@ -1,13 +1,13 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-
-namespace NUnit.Framework.Extensions
-{
-	public enum SpecialValue
-	{
-		Null = 1
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+
+namespace NUnit.Framework.Extensions
+{
+	public enum SpecialValue
+	{
+		Null = 1
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/RowTestAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/RowTestAttribute.cs
@@ -1,13 +1,13 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-
-namespace NUnitExtension.RowTest
-{
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
-	public sealed class RowTestAttribute : Attribute
-	{
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+
+namespace NUnitExtension.RowTest
+{
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
+	public sealed class RowTestAttribute : Attribute
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/SpecialValue.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/SpecialValue.cs
@@ -1,13 +1,13 @@
-// *********************************************************************
-// Copyright 2007, Andreas Schlapsi
-// This is free software licensed under the MIT license. 
-// *********************************************************************
-using System;
-
-namespace NUnitExtension.RowTest
-{
-	public enum SpecialValue
-	{
-		Null = 1
-	}
-}
+// *********************************************************************
+// Copyright 2007, Andreas Schlapsi
+// This is free software licensed under the MIT license. 
+// *********************************************************************
+using System;
+
+namespace NUnitExtension.RowTest
+{
+	public enum SpecialValue
+	{
+		Null = 1
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/nunit.framework.extensions.dll.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/nunit.framework.extensions.dll.csproj
@@ -1,126 +1,126 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{486C498D-B9F8-477F-ACA7-CED9245BBFCF}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit.framework.extensions"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.Framework.Extensions"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-                <Reference
-                    Name = "nunit.framework.dll"
-                    Project = "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RepeatAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\RowTestAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "RowTest\SpecialValue.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{486C498D-B9F8-477F-ACA7-CED9245BBFCF}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit.framework.extensions"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.Framework.Extensions"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+                <Reference
+                    Name = "nunit.framework.dll"
+                    Project = "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RepeatAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\RowTestAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "RowTest\SpecialValue.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitExtensions/framework/nunit.framework.extensions.dll_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitExtensions/framework/nunit.framework.extensions.dll_VS2005.csproj
@@ -1,105 +1,105 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{486C498D-B9F8-477F-ACA7-CED9245BBFCF}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.framework.extensions</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Framework.Extensions</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <OutputPath>bin\Debug\</OutputPath>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
-    <BaseAddress>285212672</BaseAddress>
-    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <DebugSymbols>true</DebugSymbols>
-    <FileAlignment>4096</FileAlignment>
-    <NoStdLib>false</NoStdLib>
-    <NoWarn>
-    </NoWarn>
-    <Optimize>false</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>full</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release\</OutputPath>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
-    <BaseAddress>285212672</BaseAddress>
-    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>TRACE</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <DebugSymbols>false</DebugSymbols>
-    <FileAlignment>4096</FileAlignment>
-    <NoStdLib>false</NoStdLib>
-    <NoWarn>
-    </NoWarn>
-    <Optimize>true</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>none</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="RepeatAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="RowTest\RowAttribute.cs" />
-    <Compile Include="RowTest\RowTestAttribute.cs" />
-    <Compile Include="RowTest\SpecialValue.cs" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{486C498D-B9F8-477F-ACA7-CED9245BBFCF}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.framework.extensions</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Framework.Extensions</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <OutputPath>bin\Debug\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>true</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>
+    </NoWarn>
+    <Optimize>false</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>full</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>false</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>
+    </NoWarn>
+    <Optimize>true</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>none</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="RepeatAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="RowTest\RowAttribute.cs" />
+    <Compile Include="RowTest\RowTestAttribute.cs" />
+    <Compile Include="RowTest\SpecialValue.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/AbstractAsserter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/AbstractAsserter.cs
@@ -1,88 +1,88 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// NOTE: The use of asserters for extending NUnit has
-	/// now been replaced by the use of constraints. This
-	/// class is marked obsolete.
-	/// 
-	/// AbstractAsserter is the base class for all asserters.
-	/// Asserters encapsulate a condition test and generation 
-	/// of an AssertionException with a tailored message. They
-	/// are used by the Assert class as helper objects.
-	/// 
-	/// User-defined asserters may be passed to the 
-	/// Assert.DoAssert method in order to implement 
-	/// extended asserts.
-	/// </summary>
-	[Obsolete("Use Constraints rather than Asserters for new work")]
-	public abstract class AbstractAsserter : IAsserter
-	{
-		/// <summary>
-		/// The user-defined message for this asserter.
-		/// </summary>
-		protected readonly string userMessage;
-		
-		/// <summary>
-		/// Arguments to use in formatting the user-defined message.
-		/// </summary>
-		protected readonly object[] args;
-
-		/// <summary>
-		/// Our failure message object, initialized as needed
-		/// </summary>
-		private AssertionFailureMessage failureMessage;
-
-		/// <summary>
-		/// Constructs an AbstractAsserter
-		/// </summary>
-		/// <param name="message">The message issued upon failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public AbstractAsserter( string message, params object[] args )
-		{
-			this.userMessage = message;
-			this.args = args;
-		}
-
-		/// <summary>
-		/// AssertionFailureMessage object used internally
-		/// </summary>
-		protected AssertionFailureMessage FailureMessage
-		{
-			get
-			{
-				if ( failureMessage == null )
-					failureMessage = new AssertionFailureMessage( userMessage, args );
-				return failureMessage;
-			}
-		}
-
-		#region IAsserter Interface
-		/// <summary>
-		/// Test method to be implemented by derived types.
-		/// Default always succeeds.
-		/// </summary>
-		/// <returns>True if the test succeeds</returns>
-		public abstract bool Test();
-
-		/// <summary>
-		/// Message related to a failure. If no failure has
-		/// occured, the result is unspecified.
-		/// </summary>
-		public virtual string Message
-		{
-			get
-			{
-				return FailureMessage.ToString();
-			}
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// NOTE: The use of asserters for extending NUnit has
+	/// now been replaced by the use of constraints. This
+	/// class is marked obsolete.
+	/// 
+	/// AbstractAsserter is the base class for all asserters.
+	/// Asserters encapsulate a condition test and generation 
+	/// of an AssertionException with a tailored message. They
+	/// are used by the Assert class as helper objects.
+	/// 
+	/// User-defined asserters may be passed to the 
+	/// Assert.DoAssert method in order to implement 
+	/// extended asserts.
+	/// </summary>
+	[Obsolete("Use Constraints rather than Asserters for new work")]
+	public abstract class AbstractAsserter : IAsserter
+	{
+		/// <summary>
+		/// The user-defined message for this asserter.
+		/// </summary>
+		protected readonly string userMessage;
+		
+		/// <summary>
+		/// Arguments to use in formatting the user-defined message.
+		/// </summary>
+		protected readonly object[] args;
+
+		/// <summary>
+		/// Our failure message object, initialized as needed
+		/// </summary>
+		private AssertionFailureMessage failureMessage;
+
+		/// <summary>
+		/// Constructs an AbstractAsserter
+		/// </summary>
+		/// <param name="message">The message issued upon failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public AbstractAsserter( string message, params object[] args )
+		{
+			this.userMessage = message;
+			this.args = args;
+		}
+
+		/// <summary>
+		/// AssertionFailureMessage object used internally
+		/// </summary>
+		protected AssertionFailureMessage FailureMessage
+		{
+			get
+			{
+				if ( failureMessage == null )
+					failureMessage = new AssertionFailureMessage( userMessage, args );
+				return failureMessage;
+			}
+		}
+
+		#region IAsserter Interface
+		/// <summary>
+		/// Test method to be implemented by derived types.
+		/// Default always succeeds.
+		/// </summary>
+		/// <returns>True if the test succeeds</returns>
+		public abstract bool Test();
+
+		/// <summary>
+		/// Message related to a failure. If no failure has
+		/// occured, the result is unspecified.
+		/// </summary>
+		public virtual string Message
+		{
+			get
+			{
+				return FailureMessage.ToString();
+			}
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/AssemblyInfo.cs
@@ -1,14 +1,14 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-[assembly: CLSCompliant(true)]
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+[assembly: CLSCompliant(true)]
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Assert.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Assert.cs
@@ -1,2960 +1,2960 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using NUnit.Framework.Constraints;
-using NUnit.Framework.SyntaxHelpers;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// The Assert class contains a collection of static methods that
-	/// implement the most common assertions used in NUnit.
-	/// </summary>
-	public class Assert
-	{
-		#region Assert Counting
-
-		private static int counter = 0;
-		
-		/// <summary>
-		/// Gets the number of assertions executed so far and 
-		/// resets the counter to zero.
-		/// </summary>
-		public static int Counter
-		{
-			get
-			{
-				int cnt = counter;
-				counter = 0;
-				return cnt;
-			}
-		}
-
-		private static void IncrementAssertCount()
-		{
-			++counter;
-		}
-
-		#endregion
-
-		#region Constructor
-
-		/// <summary>
-		/// We don't actually want any instances of this object, but some people
-		/// like to inherit from it to add other static methods. Hence, the
-		/// protected constructor disallows any instances of this object. 
-		/// </summary>
-		protected Assert() {}
-
-		#endregion
-
-		#region Equals and ReferenceEquals
-
-		/// <summary>
-		/// The Equals method throws an AssertionException. This is done 
-		/// to make sure there is no mistake by calling this function.
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		[EditorBrowsable(EditorBrowsableState.Never)]
-		public static new bool Equals(object a, object b)
-		{
-			throw new AssertionException("Assert.Equals should not be used for Assertions");
-		}
-
-		/// <summary>
-		/// override the default ReferenceEquals to throw an AssertionException. This 
-		/// implementation makes sure there is no mistake in calling this function 
-		/// as part of Assert. 
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		public static new void ReferenceEquals(object a, object b)
-		{
-			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
-		}
-
-		#endregion
-				
-		#region IsTrue
-
-		/// <summary>
-		/// Asserts that a condition is true. If the condition is false the method throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary> 
-		/// <param name="condition">The evaluated condition</param>
-		/// <param name="message">The message to display if the condition is false</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void IsTrue(bool condition, string message, params object[] args) 
-		{
-            Assert.That(condition, Is.True, message, args);
-		}
-    
-		/// <summary>
-		/// Asserts that a condition is true. If the condition is false the method throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		/// <param name="message">The message to display if the condition is false</param>
-		static public void IsTrue(bool condition, string message) 
-		{
-			Assert.IsTrue(condition, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that a condition is true. If the condition is false the method throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		static public void IsTrue(bool condition) 
-		{
-			Assert.IsTrue(condition, null, null);
-		}
-
-		#endregion
-
-		#region IsFalse
-
-		/// <summary>
-		/// Asserts that a condition is false. If the condition is true the method throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		/// <param name="message">The message to display if the condition is true</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void IsFalse(bool condition, string message, params object[] args) 
-		{
-            Assert.That(condition, Is.False, message, args);
-		}
-		
-		/// <summary>
-		/// Asserts that a condition is false. If the condition is true the method throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		/// <param name="message">The message to display if the condition is true</param>
-		static public void IsFalse(bool condition, string message) 
-		{
-			Assert.IsFalse( condition, message, null );
-		}
-		
-		/// <summary>
-		/// Asserts that a condition is false. If the condition is true the method throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		static public void IsFalse(bool condition) 
-		{
-			Assert.IsFalse(condition, string.Empty, null);
-		}
-
-		#endregion
-
-		#region IsNotNull
-
-		/// <summary>
-		/// Verifies that the object that is passed in is not equal to <code>null</code>
-		/// If the object is <code>null</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="anObject">The object that is to be tested</param>
-		/// <param name="message">The message to be displayed when the object is null</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void IsNotNull(Object anObject, string message, params object[] args) 
-		{
-            Assert.That(anObject, Is.Not.Null, message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the object that is passed in is not equal to <code>null</code>
-		/// If the object is <code>null</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="anObject">The object that is to be tested</param>
-		/// <param name="message">The message to be displayed when the object is null</param>
-		static public void IsNotNull(Object anObject, string message) 
-		{
-			Assert.IsNotNull(anObject, message, null);
-		}
-    
-		/// <summary>
-		/// Verifies that the object that is passed in is not equal to <code>null</code>
-		/// If the object is <code>null</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="anObject">The object that is to be tested</param>
-		static public void IsNotNull(Object anObject) 
-		{
-			Assert.IsNotNull(anObject, string.Empty, null);
-		}
-    
-		#endregion
-		    
-		#region IsNull
-
-		/// <summary>
-		/// Verifies that the object that is passed in is equal to <code>null</code>
-		/// If the object is not <code>null</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="anObject">The object that is to be tested</param>
-		/// <param name="message">The message to be displayed when the object is not null</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void IsNull(Object anObject, string message, params object[] args) 
-		{
-			Assert.That( anObject, Is.Null, message, args );
-		}
-
-		/// <summary>
-		/// Verifies that the object that is passed in is equal to <code>null</code>
-		/// If the object is not <code>null</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="anObject">The object that is to be tested</param>
-		/// <param name="message">The message to be displayed when the object is not null</param>
-		static public void IsNull(Object anObject, string message) 
-		{
-			Assert.IsNull(anObject, message, null);
-		}
-    
-		/// <summary>
-		/// Verifies that the object that is passed in is equal to <code>null</code>
-		/// If the object is not null <code>null</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="anObject">The object that is to be tested</param>
-		static public void IsNull(Object anObject) 
-		{
-			Assert.IsNull(anObject, string.Empty, null);
-		}
-    
-		#endregion
-
-		#region IsNaN
-
-		/// <summary>
-		/// Verifies that the double is passed is an <code>NaN</code> value.
-		/// If the object is not <code>NaN</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="aDouble">The value that is to be tested</param>
-		/// <param name="message">The message to be displayed when the object is not null</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void IsNaN(double aDouble, string message, params object[] args) 
-		{
-            Assert.That(aDouble, Is.NaN, message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the double is passed is an <code>NaN</code> value.
-		/// If the object is not <code>NaN</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="aDouble">The object that is to be tested</param>
-		/// <param name="message">The message to be displayed when the object is not null</param>
-		static public void IsNaN(double aDouble, string message) 
-		{
-			Assert.IsNaN(aDouble, message, null);
-		}
-    
-		/// <summary>
-		/// Verifies that the double is passed is an <code>NaN</code> value.
-		/// If the object is not <code>NaN</code> then an <see cref="AssertionException"/>
-		/// is thrown.
-		/// </summary>
-		/// <param name="aDouble">The object that is to be tested</param>
-		static public void IsNaN(double aDouble) 
-		{
-			Assert.IsNaN(aDouble, string.Empty, null);
-		}
-    
-		#endregion
-
-		#region IsEmpty
-
-		/// <summary>
-		/// Assert that a string is empty - that is equal to string.Empty
-		/// </summary>
-		/// <param name="aString">The string to be tested</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void IsEmpty( string aString, string message, params object[] args )
-		{
-            Assert.That(aString, new EmptyStringConstraint(), message, args);
-		}
-
-		/// <summary>
-		/// Assert that a string is empty - that is equal to string.Emtpy
-		/// </summary>
-		/// <param name="aString">The string to be tested</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		public static void IsEmpty( string aString, string message )
-		{
-			IsEmpty( aString, message, null );
-		}
-
-		/// <summary>
-		/// Assert that a string is empty - that is equal to string.Emtpy
-		/// </summary>
-		/// <param name="aString">The string to be tested</param>
-		public static void IsEmpty( string aString )
-		{
-			IsEmpty( aString, string.Empty, null );
-		}
-
-		/// <summary>
-		/// Assert that an array, list or other collection is empty
-		/// </summary>
-		/// <param name="collection">An array, list or other collection implementing ICollection</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void IsEmpty( ICollection collection, string message, params object[] args )
-		{
-            Assert.That(collection, new EmptyCollectionConstraint(), message, args);
-		}
-
-		/// <summary>
-		/// Assert that an array, list or other collection is empty
-		/// </summary>
-		/// <param name="collection">An array, list or other collection implementing ICollection</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		public static void IsEmpty( ICollection collection, string message )
-		{
-			IsEmpty( collection, message, null );
-		}
-
-		/// <summary>
-		/// Assert that an array,list or other collection is empty
-		/// </summary>
-		/// <param name="collection">An array, list or other collection implementing ICollection</param>
-		public static void IsEmpty( ICollection collection )
-		{
-			IsEmpty( collection, string.Empty, null );
-		}
-		#endregion
-
-		#region IsNotEmpty
-		/// <summary>
-		/// Assert that a string is not empty - that is not equal to string.Empty
-		/// </summary>
-		/// <param name="aString">The string to be tested</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void IsNotEmpty( string aString, string message, params object[] args )
-		{
-            Assert.That(aString, Is.Not.Empty, message, args);
-		}
-
-		/// <summary>
-		/// Assert that a string is empty - that is equal to string.Emtpy
-		/// </summary>
-		/// <param name="aString">The string to be tested</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		public static void IsNotEmpty( string aString, string message )
-		{
-			IsNotEmpty( aString, message, null );
-		}
-
-		/// <summary>
-		/// Assert that a string is empty - that is equal to string.Emtpy
-		/// </summary>
-		/// <param name="aString">The string to be tested</param>
-		public static void IsNotEmpty( string aString )
-		{
-			IsNotEmpty( aString, string.Empty, null );
-		}
-
-		/// <summary>
-		/// Assert that an array, list or other collection is empty
-		/// </summary>
-		/// <param name="collection">An array, list or other collection implementing ICollection</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void IsNotEmpty( ICollection collection, string message, params object[] args )
-		{
-            Assert.That(collection, Is.Not.Empty, message, args);
-		}
-
-		/// <summary>
-		/// Assert that an array, list or other collection is empty
-		/// </summary>
-		/// <param name="collection">An array, list or other collection implementing ICollection</param>
-		/// <param name="message">The message to be displayed on failure</param>
-		public static void IsNotEmpty( ICollection collection, string message )
-		{
-			IsNotEmpty( collection, message, null );
-		}
-
-		/// <summary>
-		/// Assert that an array,list or other collection is empty
-		/// </summary>
-		/// <param name="collection">An array, list or other collection implementing ICollection</param>
-		public static void IsNotEmpty( ICollection collection )
-		{
-			IsNotEmpty( collection, string.Empty, null );
-		}
-		#endregion
-
-		#region IsAssignableFrom
-		/// <summary>
-		/// Asserts that an object may be assigned a  value of a given Type.
-		/// </summary>
-		/// <param name="expected">The expected Type.</param>
-		/// <param name="actual">The object under examination</param>
-		static public void IsAssignableFrom( System.Type expected, object actual )
-		{
-			IsAssignableFrom(expected, actual, "");
-		}
-
-		/// <summary>
-		/// Asserts that an object may be assigned a  value of a given Type.
-		/// </summary>
-		/// <param name="expected">The expected Type.</param>
-		/// <param name="actual">The object under examination</param>
-		/// <param name="message">The messge to display in case of failure</param>
-		static public void IsAssignableFrom( System.Type expected, object actual, string message )
-		{
-			IsAssignableFrom(expected, actual, message, null);
-		}
-		
-		/// <summary>
-		/// Asserts that an object may be assigned a  value of a given Type.
-		/// </summary>
-		/// <param name="expected">The expected Type.</param>
-		/// <param name="actual">The object under examination</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Array of objects to be used in formatting the message</param>
-		static public void IsAssignableFrom( System.Type expected, object actual, string message, params object[] args )
-		{
-            Assert.That(actual, Is.AssignableFrom(expected), message, args);
-		}
-		#endregion
-		
-		#region IsNotAssignableFrom
-		/// <summary>
-		/// Asserts that an object may not be assigned a  value of a given Type.
-		/// </summary>
-		/// <param name="expected">The expected Type.</param>
-		/// <param name="actual">The object under examination</param>
-		static public void IsNotAssignableFrom( System.Type expected, object actual )
-		{
-			IsNotAssignableFrom(expected, actual, "");
-		}
-		
-		/// <summary>
-		/// Asserts that an object may not be assigned a  value of a given Type.
-		/// </summary>
-		/// <param name="expected">The expected Type.</param>
-		/// <param name="actual">The object under examination</param>
-		/// <param name="message">The messge to display in case of failure</param>
-		static public void IsNotAssignableFrom( System.Type expected, object actual, string message )
-		{
-			IsNotAssignableFrom(expected, actual, message, null);
-		}
-		
-		/// <summary>
-		/// Asserts that an object may not be assigned a  value of a given Type.
-		/// </summary>
-		/// <param name="expected">The expected Type.</param>
-		/// <param name="actual">The object under examination</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Array of objects to be used in formatting the message</param>
-		static public void IsNotAssignableFrom( System.Type expected, object actual, string message, params object[] args )
-		{
-            Assert.That(actual, Is.Not.AssignableFrom(expected), message, args);
-		}
-		#endregion
-		
-		#region IsInstanceOfType
-		/// <summary>
-		/// Asserts that an object is an instance of a given type.
-		/// </summary>
-		/// <param name="expected">The expected Type</param>
-		/// <param name="actual">The object being examined</param>
-		public static void IsInstanceOfType( System.Type expected, object actual )
-		{
-			IsInstanceOfType( expected, actual, string.Empty, null );
-		}
-
-		/// <summary>
-		/// Asserts that an object is an instance of a given type.
-		/// </summary>
-		/// <param name="expected">The expected Type</param>
-		/// <param name="actual">The object being examined</param>
-		/// <param name="message">A message to display in case of failure</param>
-		public static void IsInstanceOfType( System.Type expected, object actual, string message )
-		{
-			IsInstanceOfType( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that an object is an instance of a given type.
-		/// </summary>
-		/// <param name="expected">The expected Type</param>
-		/// <param name="actual">The object being examined</param>
-		/// <param name="message">A message to display in case of failure</param>
-		/// <param name="args">An array of objects to be used in formatting the message</param>
-		public static void IsInstanceOfType( System.Type expected, object actual, string message, params object[] args )
-		{
-            Assert.That(actual, Is.InstanceOfType(expected), message, args);
-		}
-		#endregion
-
-		#region IsNotInstanceOfType
-		/// <summary>
-		/// Asserts that an object is not an instance of a given type.
-		/// </summary>
-		/// <param name="expected">The expected Type</param>
-		/// <param name="actual">The object being examined</param>
-		public static void IsNotInstanceOfType( System.Type expected, object actual )
-		{
-			IsNotInstanceOfType( expected, actual, string.Empty, null );
-		}
-
-		/// <summary>
-		/// Asserts that an object is not an instance of a given type.
-		/// </summary>
-		/// <param name="expected">The expected Type</param>
-		/// <param name="actual">The object being examined</param>
-		/// <param name="message">A message to display in case of failure</param>
-		public static void IsNotInstanceOfType( System.Type expected, object actual, string message )
-		{
-			IsNotInstanceOfType( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that an object is not an instance of a given type.
-		/// </summary>
-		/// <param name="expected">The expected Type</param>
-		/// <param name="actual">The object being examined</param>
-		/// <param name="message">A message to display in case of failure</param>
-		/// <param name="args">An array of objects to be used in formatting the message</param>
-		public static void IsNotInstanceOfType( System.Type expected, object actual, string message, params object[] args )
-		{
-            Assert.That(actual, Is.Not.InstanceOfType(expected), message, args);
-		}
-		#endregion
-
-		#region AreEqual
-
-        #region Ints
-
-        /// <summary>
-        /// Verifies that two ints are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(int expected,
-            int actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Verifies that two ints are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="message">The message that will be displayed on failure</param>
-        static public void AreEqual(int expected, int actual, string message)
-        {
-            Assert.AreEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Verifies that two ints are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        static public void AreEqual(int expected, int actual)
-        {
-            Assert.AreEqual(expected, actual, string.Empty, null);
-        }
-
-        #endregion
-
-        #region Longs
-
-        /// <summary>
-        /// Verifies that two longs are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="message">The message that will be displayed on failure</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-        static public void AreEqual(long expected,
-            long actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Verifies that two longs are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="message">The message that will be displayed on failure</param>
-        static public void AreEqual(long expected, long actual, string message)
-        {
-            Assert.AreEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Verifies that two longs are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        static public void AreEqual(long expected, long actual)
-        {
-            Assert.AreEqual(expected, actual, string.Empty, null);
-        }
-
-        #endregion
-
-        #region UInts
-
-        /// <summary>
-        /// Verifies that two uints are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="message">The message that will be displayed on failure</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void AreEqual(uint expected,
-            uint actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Verifies that two uints are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void AreEqual(uint expected, uint actual, string message)
-        {
-            Assert.AreEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Verifies that two uints are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-		[CLSCompliant(false)]
-		static public void AreEqual(uint expected, uint actual)
-        {
-            Assert.AreEqual(expected, actual, string.Empty, null);
-        }
-
-        #endregion
-
-        #region Ulongs
-
-        /// <summary>
-        /// Verifies that two ulongs are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="message">The message that will be displayed on failure</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void AreEqual(ulong expected,
-            ulong actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Verifies that two ulongs are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void AreEqual(ulong expected, ulong actual, string message)
-        {
-            Assert.AreEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Verifies that two ulongs are equal. If they are not, then an 
-        /// <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-		[CLSCompliant(false)]
-		static public void AreEqual(ulong expected, ulong actual)
-        {
-            Assert.AreEqual(expected, actual, string.Empty, null);
-        }
-
-        #endregion
-
-        #region Decimals
-
-		/// <summary>
-		/// Verifies that two decimals are equal. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(decimal expected, 
-			decimal actual, string message, params object[] args) 
-		{
-            Assert.That(actual, Is.EqualTo(expected), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that two decimal are equal. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void AreEqual(decimal expected, decimal actual, string message) 
-		{
-			Assert.AreEqual( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that two decimals are equal. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		static public void AreEqual(decimal expected, decimal actual ) 
-		{
-			Assert.AreEqual( expected, actual, string.Empty, null );
-		}
-
-		#endregion
-
-		#region Doubles
-
-		/// <summary>
-		/// Verifies that two doubles are equal considering a delta. If the
-		/// expected value is infinity then the delta value is ignored. If 
-		/// they are not equals then an <see cref="AssertionException"/> is
-		/// thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(double expected, 
-			double actual, double delta, string message, params object[] args) 
-		{
-			Constraint constraint = new EqualConstraint( expected );
-			if ( double.IsNaN(expected) || double.IsInfinity(expected) )
-				Assert.That(actual, Is.EqualTo( expected ), message, args);
-			else
-				Assert.That(actual, Is.EqualTo(expected).Within(delta), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that two doubles are equal considering a delta. If the
-		/// expected value is infinity then the delta value is ignored. If 
-		/// they are not equals then an <see cref="AssertionException"/> is
-		/// thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void AreEqual(double expected, 
-			double actual, double delta, string message) 
-		{
-			Assert.AreEqual( expected, actual, delta, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that two doubles are equal considering a delta. If the
-		/// expected value is infinity then the delta value is ignored. If 
-		/// they are not equals then an <see cref="AssertionException"/> is
-		/// thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		static public void AreEqual(double expected, double actual, double delta) 
-		{
-			Assert.AreEqual(expected, actual, delta, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Floats
-
-		/// <summary>
-		/// Verifies that two floats are equal considering a delta. If the
-		/// expected value is infinity then the delta value is ignored. If 
-		/// they are not equals then an <see cref="AssertionException"/> is
-		/// thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		/// <param name="message">The message displayed upon failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(float expected, 
-			float actual, float delta, string message, params object[] args) 
-		{
-			if (float.IsNaN(expected) || float.IsInfinity(expected))
-				Assert.That(actual, Is.EqualTo( expected), message, args );
-			else
-				Assert.That(actual, Is.EqualTo(expected).Within(delta), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that two floats are equal considering a delta. If the
-		/// expected value is infinity then the delta value is ignored. If 
-		/// they are not equals then an <see cref="AssertionException"/> is
-		/// thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		/// <param name="message">The message displayed upon failure</param>
-		static public void AreEqual(float expected, float actual, float delta, string message) 
-		{
-			Assert.AreEqual(expected, actual, delta, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that two floats are equal considering a delta. If the
-		/// expected value is infinity then the delta value is ignored. If 
-		/// they are not equals then an <see cref="AssertionException"/> is
-		/// thrown.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		static public void AreEqual(float expected, float actual, float delta) 
-		{
-			Assert.AreEqual(expected, actual, delta, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Objects
-		
-		/// <summary>
-		/// Verifies that two objects are equal.  Two objects are considered
-		/// equal if both are null, or if both have the same value.  All
-		/// non-numeric types are compared by using the <c>Equals</c> method.
-		/// Arrays are compared by comparing each element using the same rules.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The value that is expected</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="message">The message to display if objects are not equal</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(Object expected, Object actual, string message, params object[] args)
-		{
-            Assert.That(actual, Is.EqualTo(expected), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that two objects are equal.  Two objects are considered
-		/// equal if both are null, or if both have the same value.  All
-		/// non-numeric types are compared by using the <c>Equals</c> method.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The value that is expected</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="message">The message to display if objects are not equal</param>
-		static public void AreEqual(Object expected, Object actual, string message) 
-		{
-			Assert.AreEqual(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that two objects are equal.  Two objects are considered
-		/// equal if both are null, or if both have the same value.  All
-		/// non-numeric types are compared by using the <c>Equals</c> method.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The value that is expected</param>
-		/// <param name="actual">The actual value</param>
-		static public void AreEqual(Object expected, Object actual) 
-		{
-			Assert.AreEqual(expected, actual, string.Empty, null);
-		}
-
-		#endregion
-
-		#endregion
-
-		#region AreNotEqual
-
-		#region Objects
-		/// <summary>
-		/// Asserts that two objects are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotEqual( Object expected, Object actual, string message, params object[] args)
-		{
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-        }
-
-		/// <summary>
-		/// Asserts that two objects are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the objects are the same</param>
-		static public void AreNotEqual(Object expected, Object actual, string message) 
-		{
-			Assert.AreNotEqual(expected, actual, message, null);
-		}
-   
-		/// <summary>
-		/// Asserts that two objects are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		static public void AreNotEqual(Object expected, Object actual) 
-		{
-			Assert.AreNotEqual(expected, actual, string.Empty, null);
-		}
-   
-		#endregion
-
-        #region Ints
-        /// <summary>
-        /// Asserts that two ints are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-        static public void AreNotEqual(int expected, int actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Asserts that two ints are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the objects are the same</param>
-        static public void AreNotEqual(int expected, int actual, string message)
-        {
-            Assert.AreNotEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Asserts that two ints are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        static public void AreNotEqual(int expected, int actual)
-        {
-            Assert.AreNotEqual(expected, actual, string.Empty, null);
-        }
-        #endregion
-
-        #region Longs
-        /// <summary>
-        /// Asserts that two longss are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-        static public void AreNotEqual(long expected, long actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Asserts that two longs are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the objects are the same</param>
-        static public void AreNotEqual(long expected, long actual, string message)
-        {
-            Assert.AreNotEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Asserts that two longs are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        static public void AreNotEqual(long expected, long actual)
-        {
-            Assert.AreNotEqual(expected, actual, string.Empty, null);
-        }
-        #endregion
-
-        #region UInts
-        /// <summary>
-        /// Asserts that two uints are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void AreNotEqual(uint expected, uint actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Asserts that two uints are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the objects are the same</param>
-		[CLSCompliant(false)]
-		static public void AreNotEqual(uint expected, uint actual, string message)
-        {
-            Assert.AreNotEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Asserts that two uints are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-		[CLSCompliant(false)]
-		static public void AreNotEqual(uint expected, uint actual)
-        {
-            Assert.AreNotEqual(expected, actual, string.Empty, null);
-        }
-        #endregion
-
-        #region Ulongs
-        /// <summary>
-        /// Asserts that two ulongs are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void AreNotEqual(ulong expected, ulong actual, string message, params object[] args)
-        {
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-        }
-
-        /// <summary>
-        /// Asserts that two ulongs are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-        /// <param name="message">The message to be displayed when the objects are the same</param>
-		[CLSCompliant(false)]
-		static public void AreNotEqual(ulong expected, ulong actual, string message)
-        {
-            Assert.AreNotEqual(expected, actual, message, null);
-        }
-
-        /// <summary>
-        /// Asserts that two ulong are not equal. If they are equal
-        /// an <see cref="AssertionException"/> is thrown.
-        /// </summary>
-        /// <param name="expected">The expected object</param>
-        /// <param name="actual">The actual object</param>
-		[CLSCompliant(false)]
-		static public void AreNotEqual(ulong expected, ulong actual)
-        {
-            Assert.AreNotEqual(expected, actual, string.Empty, null);
-        }
-        #endregion
-
-        #region Decimals
-		/// <summary>
-		/// Asserts that two decimals are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotEqual( decimal expected, decimal actual, string message, params object[] args)
-		{
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-        }
-
-		/// <summary>
-		/// Asserts that two decimals are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the objects are the same</param>
-		static public void AreNotEqual(decimal expected, decimal actual, string message) 
-		{
-			Assert.AreNotEqual(expected, actual, message, null);
-		}
-   
-		/// <summary>
-		/// Asserts that two decimals are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		static public void AreNotEqual(decimal expected, decimal actual) 
-		{
-			Assert.AreNotEqual(expected, actual, string.Empty, null);
-		}
-		#endregion
-
-		#region Floats
-		/// <summary>
-		/// Asserts that two floats are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotEqual( float expected, float actual, string message, params object[] args)
-		{
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that two floats are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the objects are the same</param>
-		static public void AreNotEqual(float expected, float actual, string message) 
-		{
-			Assert.AreNotEqual(expected, actual, message, null);
-		}
-   
-		/// <summary>
-		/// Asserts that two floats are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		static public void AreNotEqual(float expected, float actual) 
-		{
-			Assert.AreNotEqual(expected, actual, string.Empty, null);
-		}
-		#endregion
-
-		#region Doubles
-		/// <summary>
-		/// Asserts that two doubles are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotEqual( double expected, double actual, string message, params object[] args)
-		{
-            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that two doubles are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the objects are the same</param>
-		static public void AreNotEqual(double expected, double actual, string message) 
-		{
-			Assert.AreNotEqual(expected, actual, message, null);
-		}
-   
-		/// <summary>
-		/// Asserts that two doubles are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		static public void AreNotEqual(double expected, double actual) 
-		{
-			Assert.AreNotEqual(expected, actual, string.Empty, null);
-		}
-		#endregion
-
-		#endregion
-
-		#region AreSame
-
-		/// <summary>
-		/// Asserts that two objects refer to the same object. If they
-		/// are not the same an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the two objects are not the same object.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreSame(Object expected, Object actual, string message, params object[] args)
-		{
-            Assert.That(actual, Is.SameAs(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that two objects refer to the same object. If they
-		/// are not the same an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the object is null</param>
-		static public void AreSame(Object expected, Object actual, string message) 
-		{
-			Assert.AreSame(expected, actual, message, null);
-		}
-   
-		/// <summary>
-		/// Asserts that two objects refer to the same object. If they
-		/// are not the same an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		static public void AreSame(Object expected, Object actual) 
-		{
-			Assert.AreSame(expected, actual, string.Empty, null);
-		}
-   
-		#endregion
-
-		#region AreNotSame
-
-		/// <summary>
-		/// Asserts that two objects do not refer to the same object. If they
-		/// are the same an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotSame(Object expected, Object actual, string message, params object[] args)
-		{
-            Assert.That(actual, Is.Not.SameAs(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that two objects do not refer to the same object. If they
-		/// are the same an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		/// <param name="message">The message to be displayed when the objects are the same</param>
-		static public void AreNotSame(Object expected, Object actual, string message) 
-		{
-			Assert.AreNotSame(expected, actual, message, null);
-		}
-   
-		/// <summary>
-		/// Asserts that two objects do not refer to the same object. If they
-		/// are the same an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The actual object</param>
-		static public void AreNotSame(Object expected, Object actual) 
-		{
-			Assert.AreNotSame(expected, actual, string.Empty, null);
-		}
-   
-		#endregion
-
-		#region Greater
-
-		#region Ints
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an
-		/// <see cref="AssertionException"/> is thrown. 
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Greater(int arg1, 
-			int arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Greater(int arg1, int arg2, string message) 
-		{
-			Assert.Greater( arg1, arg2, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void Greater(int arg1, int arg2 ) 
-		{
-			Assert.Greater( arg1, arg2, string.Empty, null );
-		}
-
-		#endregion
-
-		#region UInts
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void Greater(uint arg1, 
-			uint arg2, string message, params object[] args) 
-		{
-			Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void Greater(uint arg1, uint arg2, string message) 
-		{
-			Assert.Greater( arg1, arg2, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		[CLSCompliant(false)]
-		static public void Greater(uint arg1, uint arg2 ) 
-		{
-			Assert.Greater( arg1, arg2, string.Empty, null );
-		}
-
-		#endregion
-
-		#region Longs
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Greater(long arg1, 
-			long arg2, string message, params object[] args) 
-		{
-			Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Greater(long arg1, long arg2, string message) 
-		{
-			Assert.Greater( arg1, arg2, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void Greater(long arg1, long arg2 ) 
-		{
-			Assert.Greater( arg1, arg2, string.Empty, null );
-		}
-
-		#endregion
-
-		#region ULongs
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void Greater(ulong arg1, 
-			ulong arg2, string message, params object[] args) 
-		{
-			Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void Greater(ulong arg1, ulong arg2, string message) 
-		{
-			Assert.Greater( arg1, arg2, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		[CLSCompliant(false)]
-		static public void Greater(ulong arg1, ulong arg2 ) 
-		{
-			Assert.Greater( arg1, arg2, string.Empty, null );
-		}
-
-		#endregion
-
-		#region Decimals
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Greater(decimal arg1, 
-			decimal arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Greater(decimal arg1, decimal arg2, string message) 
-		{
-			Assert.Greater( arg1, arg2, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void Greater(decimal arg1, decimal arg2 ) 
-		{
-			Assert.Greater( arg1, arg2, string.Empty, null );
-		}
-
-		#endregion
-
-		#region Doubles
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Greater(double arg1, 
-			double arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Greater(double arg1, 
-			double arg2, string message) 
-		{
-			Assert.Greater( arg1, arg2, message, null );
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void Greater(double arg1, double arg2) 
-		{
-			Assert.Greater(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Floats
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Greater(float arg1, 
-			float arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Greater(float arg1, float arg2, string message) 
-		{
-			Assert.Greater(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void Greater(float arg1, float arg2) 
-		{
-			Assert.Greater(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region IComparables
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Greater(IComparable arg1, 
-			IComparable arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Greater(IComparable arg1, IComparable arg2, string message) 
-		{
-			Assert.Greater(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void Greater(IComparable arg1, IComparable arg2) 
-		{
-			Assert.Greater(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#endregion
-
-		#region Less
-
-		#region Ints
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Less(int arg1, int arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.LessThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Less(int arg1, int arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void Less(int arg1, int arg2) 
-		{
-			Assert.Less( arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region UInts
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void Less(uint arg1, uint arg2, string message, params object[] args) 
-		{
-			Assert.That(arg1, Is.LessThan(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void Less(uint arg1, uint arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		[CLSCompliant(false)]
-		static public void Less(uint arg1, uint arg2) 
-		{
-			Assert.Less( arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Longs
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Less(long arg1, long arg2, string message, params object[] args) 
-		{
-			Assert.That(arg1, Is.LessThan(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Less(long arg1, long arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void Less(long arg1, long arg2) 
-		{
-			Assert.Less( arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region ULongs
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void Less(ulong arg1, ulong arg2, string message, params object[] args) 
-		{
-			Assert.That(arg1, Is.LessThan(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void Less(ulong arg1, ulong arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		[CLSCompliant(false)]
-		static public void Less(ulong arg1, ulong arg2) 
-		{
-			Assert.Less( arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Decimals
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Less(decimal arg1, decimal arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.LessThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Less(decimal arg1, decimal arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void Less(decimal arg1, decimal arg2) 
-		{
-			Assert.Less(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Doubles
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Less(double arg1, double arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.LessThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Less(double arg1, double arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void Less(double arg1, double arg2) 
-		{
-			Assert.Less(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Floats
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Less(float arg1, float arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.LessThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Less(float arg1, float arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void Less(float arg1, float arg2) 
-		{
-			Assert.Less(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region IComparables
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Less(IComparable arg1, IComparable arg2, string message, params object[] args) 
-		{
-            Assert.That(arg1, Is.LessThan(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Less(IComparable arg1, IComparable arg2, string message) 
-		{
-			Assert.Less(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void Less(IComparable arg1, IComparable arg2) 
-		{
-			Assert.Less(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#endregion
-
-		#region Collection Containment
-
-		/// <summary>
-		/// Asserts that an object is contained in a list.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The list to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Arguments used in formatting the message</param>
-		static public void Contains( object expected, ICollection actual, string message, params object[] args )
-		{
-            Assert.That(actual, new CollectionContainsConstraint(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that an object is contained in a list.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The list to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		static public void Contains( object expected, ICollection actual, string message )
-		{
-			Contains( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that an object is contained in a list.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		/// <param name="actual">The list to be examined</param>
-		static public void Contains( object expected, ICollection actual )
-		{
-			Contains( expected, actual, string.Empty, null );
-		}
-
-		#endregion
-		
-		#region Fail
-
-		/// <summary>
-		/// Throws an <see cref="AssertionException"/> with the message and arguments 
-		/// that are passed in. This is used by the other Assert functions. 
-		/// </summary>
-		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Fail(string message, params object[] args ) 
-		{
-			if (message == null) message = string.Empty;
-			else if ( args != null && args.Length > 0 )
-				message = string.Format( message, args );
-
-			throw new AssertionException(message);
-		}
-
-		/// <summary>
-		/// Throws an <see cref="AssertionException"/> with the message that is 
-		/// passed in. This is used by the other Assert functions. 
-		/// </summary>
-		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
-		static public void Fail(string message) 
-		{
-			Assert.Fail(message, null);
-		}
-    
-		/// <summary>
-		/// Throws an <see cref="AssertionException"/>. 
-		/// This is used by the other Assert functions. 
-		/// </summary>
-		static public void Fail() 
-		{
-			Assert.Fail(string.Empty, null);
-		}
-
-		#endregion 
-
-		#region Ignore
-
-		/// <summary>
-		/// Throws an <see cref="IgnoreException"/> with the message and arguments 
-		/// that are passed in.  This causes the test to be reported as ignored.
-		/// </summary>
-		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Ignore( string message, params object[] args )
-		{
-			if (message == null) message = string.Empty;
-			else if ( args != null && args.Length > 0 )
-				message = string.Format( message, args );
-
-			throw new IgnoreException(message);
-		}
-
-		/// <summary>
-		/// Throws an <see cref="IgnoreException"/> with the message that is 
-		/// passed in. This causes the test to be reported as ignored. 
-		/// </summary>
-		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
-		static public void Ignore( string message )
-		{
-			Assert.Ignore( message, null );
-		}
-    
-		/// <summary>
-		/// Throws an <see cref="IgnoreException"/>. 
-		/// This causes the test to be reported as ignored. 
-		/// </summary>
-		static public void Ignore()
-		{
-			Assert.Ignore( string.Empty, null );
-		}
-    
-		#endregion
-
-		#region DoAssert
-
-		/// <summary>
-		/// NOTE: The use of asserters for extending NUnit has
-		/// now been replaced by the use of constraints. This
-		/// method is marked obsolete.
-		/// 
-		/// Test the condition asserted by an asserter and throw
-		/// an assertion exception using provided message on failure.
-		/// </summary>
-		/// <param name="asserter">An object that implements IAsserter</param>
-		[Obsolete("Use Constraints rather than Asserters for new work")]
-		static public void DoAssert( IAsserter asserter )
-		{
-			Assert.IncrementAssertCount();
-			if ( !asserter.Test() )
-				throw new AssertionException( asserter.Message );
-		}
-
-		#endregion
-
-		#region That
-		/// <summary>
-		/// Apply a constraint to an actual value, succeeding if the constraint
-		/// is satisfied and throwing an assertion exception on failure.
-		/// </summary>
-		/// <param name="constraint">A Constraint to be applied</param>
-		/// <param name="actual">The actual value to test</param>
-		static public void That( object actual, Constraint constraint )
-		{
-			Assert.That( actual, constraint, null, null );
-		}
-
-		/// <summary>
-		/// Apply a constraint to an actual value, succeedingt if the constraint
-		/// is satisfied and throwing an assertion exception on failure.
-		/// </summary>
-		/// <param name="constraint">A Constraint to be applied</param>
-		/// <param name="actual">The actual value to test</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void That( object actual, Constraint constraint, string message )
-		{
-			Assert.That( actual, constraint, message, null );
-		}
-
-		/// <summary>
-		/// Apply a constraint to an actual value, succeedingt if the constraint
-		/// is satisfied and throwing an assertion exception on failure.
-		/// </summary>
-		/// <param name="constraint">A Constraint to be applied</param>
-		/// <param name="actual">The actual value to test</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void That( object actual, Constraint constraint, string message, params object[] args )
-		{
-			Assert.IncrementAssertCount();
-			if ( !constraint.Matches( actual ) )
-			{
-				MessageWriter writer = new TextMessageWriter( message, args );
-				constraint.WriteMessageTo( writer );
-				throw new AssertionException( writer.ToString() );
-			}
-		}
-
-        /// <summary>
-        /// Asserts that a condition is true. If the condition is false the method throws
-        /// an <see cref="AssertionException"/>.
-        /// </summary> 
-        /// <param name="condition">The evaluated condition</param>
-        /// <param name="message">The message to display if the condition is false</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-        static public void That(bool condition, string message, params object[] args)
-        {
-            Assert.That(condition, Is.True, message, args);
-        }
-
-        /// <summary>
-        /// Asserts that a condition is true. If the condition is false the method throws
-        /// an <see cref="AssertionException"/>.
-        /// </summary>
-        /// <param name="condition">The evaluated condition</param>
-        /// <param name="message">The message to display if the condition is false</param>
-        static public void That(bool condition, string message)
-        {
-            Assert.That(condition, Is.True, message, null);
-        }
-
-        /// <summary>
-        /// Asserts that a condition is true. If the condition is false the method throws
-        /// an <see cref="AssertionException"/>.
-        /// </summary>
-        /// <param name="condition">The evaluated condition</param>
-        static public void That(bool condition)
-        {
-            Assert.That(condition, Is.True, null, null);
-        }
-        #endregion
-
-		#region GreaterOrEqual
-
-		#region Ints
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown. 
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void GreaterOrEqual(int arg1,
-		    int arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void GreaterOrEqual(int arg1, int arg2, string message)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void GreaterOrEqual(int arg1, int arg2)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region UInts
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void GreaterOrEqual(uint arg1,
-			uint arg2, string message, params object[] args)
-		{
-			Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void GreaterOrEqual(uint arg1, uint arg2, string message)
-		{
-			Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater or equal to than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		[CLSCompliant(false)]
-		static public void GreaterOrEqual(uint arg1, uint arg2)
-		{
-			Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Longs
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void GreaterOrEqual(long arg1,
-			long arg2, string message, params object[] args)
-		{
-			Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void GreaterOrEqual(long arg1, long arg2, string message)
-		{
-			Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater or equal to than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void GreaterOrEqual(long arg1, long arg2)
-		{
-			Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region ULongs
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void GreaterOrEqual(ulong arg1,
-			ulong arg2, string message, params object[] args)
-		{
-			Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void GreaterOrEqual(ulong arg1, ulong arg2, string message)
-		{
-			Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater or equal to than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		[CLSCompliant(false)]
-		static public void GreaterOrEqual(ulong arg1, ulong arg2)
-		{
-			Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Decimals
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void GreaterOrEqual(decimal arg1,
-		    decimal arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void GreaterOrEqual(decimal arg1, decimal arg2, string message)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void GreaterOrEqual(decimal arg1, decimal arg2)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Doubles
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void GreaterOrEqual(double arg1,
-		    double arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void GreaterOrEqual(double arg1,
-		    double arg2, string message)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void GreaterOrEqual(double arg1, double arg2)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Floats
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void GreaterOrEqual(float arg1,
-		    float arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void GreaterOrEqual(float arg1, float arg2, string message)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than or equal to the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void GreaterOrEqual(float arg1, float arg2)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region IComparables
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void GreaterOrEqual(IComparable arg1,
-		    IComparable arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void GreaterOrEqual(IComparable arg1, IComparable arg2, string message)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is greater than the second
-		/// value. If they are not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be greater</param>
-		/// <param name="arg2">The second value, expected to be less</param>
-		static public void GreaterOrEqual(IComparable arg1, IComparable arg2)
-		{
-		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#endregion
-
-		#region LessOrEqual
-
-		#region Ints
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void LessOrEqual(int arg1, int arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void LessOrEqual(int arg1, int arg2, string message)
-		{
-		    Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void LessOrEqual(int arg1, int arg2)
-		{
-		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region UInts
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void LessOrEqual(uint arg1, uint arg2, string message, params object[] args)
-		{
-			Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void LessOrEqual(uint arg1, uint arg2, string message)
-		{
-			Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		[CLSCompliant(false)]
-		static public void LessOrEqual(uint arg1, uint arg2)
-		{
-			Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Longs
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void LessOrEqual(long arg1, long arg2, string message, params object[] args)
-		{
-			Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void LessOrEqual(long arg1, long arg2, string message)
-		{
-			Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void LessOrEqual(long arg1, long arg2)
-		{
-			Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region ULongs
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		[CLSCompliant(false)]
-		static public void LessOrEqual(ulong arg1, ulong arg2, string message, params object[] args)
-		{
-			Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		[CLSCompliant(false)]
-		static public void LessOrEqual(ulong arg1, ulong arg2, string message)
-		{
-			Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		[CLSCompliant(false)]
-		static public void LessOrEqual(ulong arg1, ulong arg2)
-		{
-			Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Decimals
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void LessOrEqual(decimal arg1, decimal arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void LessOrEqual(decimal arg1, decimal arg2, string message)
-		{
-		    Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void LessOrEqual(decimal arg1, decimal arg2)
-		{
-		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Doubles
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void LessOrEqual(double arg1, double arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void LessOrEqual(double arg1, double arg2, string message)
-		{
-		    Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void LessOrEqual(double arg1, double arg2)
-		{
-		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region Floats
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void LessOrEqual(float arg1, float arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void LessOrEqual(float arg1, float arg2, string message)
-		{
-		    Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void LessOrEqual(float arg1, float arg2)
-		{
-		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-		#region IComparables
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void LessOrEqual(IComparable arg1, IComparable arg2, string message, params object[] args)
-		{
-            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
-        }
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void LessOrEqual(IComparable arg1, IComparable arg2, string message)
-		{
-		    Assert.LessOrEqual(arg1, arg2, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that the first value is less than or equal to the second
-		/// value. If it is not, then an 
-		/// <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="arg1">The first value, expected to be less</param>
-		/// <param name="arg2">The second value, expected to be greater</param>
-		static public void LessOrEqual(IComparable arg1, IComparable arg2)
-		{
-		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
-		}
-
-		#endregion
-
-        #endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using NUnit.Framework.Constraints;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// The Assert class contains a collection of static methods that
+	/// implement the most common assertions used in NUnit.
+	/// </summary>
+	public class Assert
+	{
+		#region Assert Counting
+
+		private static int counter = 0;
+		
+		/// <summary>
+		/// Gets the number of assertions executed so far and 
+		/// resets the counter to zero.
+		/// </summary>
+		public static int Counter
+		{
+			get
+			{
+				int cnt = counter;
+				counter = 0;
+				return cnt;
+			}
+		}
+
+		private static void IncrementAssertCount()
+		{
+			++counter;
+		}
+
+		#endregion
+
+		#region Constructor
+
+		/// <summary>
+		/// We don't actually want any instances of this object, but some people
+		/// like to inherit from it to add other static methods. Hence, the
+		/// protected constructor disallows any instances of this object. 
+		/// </summary>
+		protected Assert() {}
+
+		#endregion
+
+		#region Equals and ReferenceEquals
+
+		/// <summary>
+		/// The Equals method throws an AssertionException. This is done 
+		/// to make sure there is no mistake by calling this function.
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		[EditorBrowsable(EditorBrowsableState.Never)]
+		public static new bool Equals(object a, object b)
+		{
+			throw new AssertionException("Assert.Equals should not be used for Assertions");
+		}
+
+		/// <summary>
+		/// override the default ReferenceEquals to throw an AssertionException. This 
+		/// implementation makes sure there is no mistake in calling this function 
+		/// as part of Assert. 
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		public static new void ReferenceEquals(object a, object b)
+		{
+			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
+		}
+
+		#endregion
+				
+		#region IsTrue
+
+		/// <summary>
+		/// Asserts that a condition is true. If the condition is false the method throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary> 
+		/// <param name="condition">The evaluated condition</param>
+		/// <param name="message">The message to display if the condition is false</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void IsTrue(bool condition, string message, params object[] args) 
+		{
+            Assert.That(condition, Is.True, message, args);
+		}
+    
+		/// <summary>
+		/// Asserts that a condition is true. If the condition is false the method throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		/// <param name="message">The message to display if the condition is false</param>
+		static public void IsTrue(bool condition, string message) 
+		{
+			Assert.IsTrue(condition, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that a condition is true. If the condition is false the method throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		static public void IsTrue(bool condition) 
+		{
+			Assert.IsTrue(condition, null, null);
+		}
+
+		#endregion
+
+		#region IsFalse
+
+		/// <summary>
+		/// Asserts that a condition is false. If the condition is true the method throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		/// <param name="message">The message to display if the condition is true</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void IsFalse(bool condition, string message, params object[] args) 
+		{
+            Assert.That(condition, Is.False, message, args);
+		}
+		
+		/// <summary>
+		/// Asserts that a condition is false. If the condition is true the method throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		/// <param name="message">The message to display if the condition is true</param>
+		static public void IsFalse(bool condition, string message) 
+		{
+			Assert.IsFalse( condition, message, null );
+		}
+		
+		/// <summary>
+		/// Asserts that a condition is false. If the condition is true the method throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		static public void IsFalse(bool condition) 
+		{
+			Assert.IsFalse(condition, string.Empty, null);
+		}
+
+		#endregion
+
+		#region IsNotNull
+
+		/// <summary>
+		/// Verifies that the object that is passed in is not equal to <code>null</code>
+		/// If the object is <code>null</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="anObject">The object that is to be tested</param>
+		/// <param name="message">The message to be displayed when the object is null</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void IsNotNull(Object anObject, string message, params object[] args) 
+		{
+            Assert.That(anObject, Is.Not.Null, message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the object that is passed in is not equal to <code>null</code>
+		/// If the object is <code>null</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="anObject">The object that is to be tested</param>
+		/// <param name="message">The message to be displayed when the object is null</param>
+		static public void IsNotNull(Object anObject, string message) 
+		{
+			Assert.IsNotNull(anObject, message, null);
+		}
+    
+		/// <summary>
+		/// Verifies that the object that is passed in is not equal to <code>null</code>
+		/// If the object is <code>null</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="anObject">The object that is to be tested</param>
+		static public void IsNotNull(Object anObject) 
+		{
+			Assert.IsNotNull(anObject, string.Empty, null);
+		}
+    
+		#endregion
+		    
+		#region IsNull
+
+		/// <summary>
+		/// Verifies that the object that is passed in is equal to <code>null</code>
+		/// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="anObject">The object that is to be tested</param>
+		/// <param name="message">The message to be displayed when the object is not null</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void IsNull(Object anObject, string message, params object[] args) 
+		{
+			Assert.That( anObject, Is.Null, message, args );
+		}
+
+		/// <summary>
+		/// Verifies that the object that is passed in is equal to <code>null</code>
+		/// If the object is not <code>null</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="anObject">The object that is to be tested</param>
+		/// <param name="message">The message to be displayed when the object is not null</param>
+		static public void IsNull(Object anObject, string message) 
+		{
+			Assert.IsNull(anObject, message, null);
+		}
+    
+		/// <summary>
+		/// Verifies that the object that is passed in is equal to <code>null</code>
+		/// If the object is not null <code>null</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="anObject">The object that is to be tested</param>
+		static public void IsNull(Object anObject) 
+		{
+			Assert.IsNull(anObject, string.Empty, null);
+		}
+    
+		#endregion
+
+		#region IsNaN
+
+		/// <summary>
+		/// Verifies that the double is passed is an <code>NaN</code> value.
+		/// If the object is not <code>NaN</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="aDouble">The value that is to be tested</param>
+		/// <param name="message">The message to be displayed when the object is not null</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void IsNaN(double aDouble, string message, params object[] args) 
+		{
+            Assert.That(aDouble, Is.NaN, message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the double is passed is an <code>NaN</code> value.
+		/// If the object is not <code>NaN</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="aDouble">The object that is to be tested</param>
+		/// <param name="message">The message to be displayed when the object is not null</param>
+		static public void IsNaN(double aDouble, string message) 
+		{
+			Assert.IsNaN(aDouble, message, null);
+		}
+    
+		/// <summary>
+		/// Verifies that the double is passed is an <code>NaN</code> value.
+		/// If the object is not <code>NaN</code> then an <see cref="AssertionException"/>
+		/// is thrown.
+		/// </summary>
+		/// <param name="aDouble">The object that is to be tested</param>
+		static public void IsNaN(double aDouble) 
+		{
+			Assert.IsNaN(aDouble, string.Empty, null);
+		}
+    
+		#endregion
+
+		#region IsEmpty
+
+		/// <summary>
+		/// Assert that a string is empty - that is equal to string.Empty
+		/// </summary>
+		/// <param name="aString">The string to be tested</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void IsEmpty( string aString, string message, params object[] args )
+		{
+            Assert.That(aString, new EmptyStringConstraint(), message, args);
+		}
+
+		/// <summary>
+		/// Assert that a string is empty - that is equal to string.Emtpy
+		/// </summary>
+		/// <param name="aString">The string to be tested</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		public static void IsEmpty( string aString, string message )
+		{
+			IsEmpty( aString, message, null );
+		}
+
+		/// <summary>
+		/// Assert that a string is empty - that is equal to string.Emtpy
+		/// </summary>
+		/// <param name="aString">The string to be tested</param>
+		public static void IsEmpty( string aString )
+		{
+			IsEmpty( aString, string.Empty, null );
+		}
+
+		/// <summary>
+		/// Assert that an array, list or other collection is empty
+		/// </summary>
+		/// <param name="collection">An array, list or other collection implementing ICollection</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void IsEmpty( ICollection collection, string message, params object[] args )
+		{
+            Assert.That(collection, new EmptyCollectionConstraint(), message, args);
+		}
+
+		/// <summary>
+		/// Assert that an array, list or other collection is empty
+		/// </summary>
+		/// <param name="collection">An array, list or other collection implementing ICollection</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		public static void IsEmpty( ICollection collection, string message )
+		{
+			IsEmpty( collection, message, null );
+		}
+
+		/// <summary>
+		/// Assert that an array,list or other collection is empty
+		/// </summary>
+		/// <param name="collection">An array, list or other collection implementing ICollection</param>
+		public static void IsEmpty( ICollection collection )
+		{
+			IsEmpty( collection, string.Empty, null );
+		}
+		#endregion
+
+		#region IsNotEmpty
+		/// <summary>
+		/// Assert that a string is not empty - that is not equal to string.Empty
+		/// </summary>
+		/// <param name="aString">The string to be tested</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void IsNotEmpty( string aString, string message, params object[] args )
+		{
+            Assert.That(aString, Is.Not.Empty, message, args);
+		}
+
+		/// <summary>
+		/// Assert that a string is empty - that is equal to string.Emtpy
+		/// </summary>
+		/// <param name="aString">The string to be tested</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		public static void IsNotEmpty( string aString, string message )
+		{
+			IsNotEmpty( aString, message, null );
+		}
+
+		/// <summary>
+		/// Assert that a string is empty - that is equal to string.Emtpy
+		/// </summary>
+		/// <param name="aString">The string to be tested</param>
+		public static void IsNotEmpty( string aString )
+		{
+			IsNotEmpty( aString, string.Empty, null );
+		}
+
+		/// <summary>
+		/// Assert that an array, list or other collection is empty
+		/// </summary>
+		/// <param name="collection">An array, list or other collection implementing ICollection</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void IsNotEmpty( ICollection collection, string message, params object[] args )
+		{
+            Assert.That(collection, Is.Not.Empty, message, args);
+		}
+
+		/// <summary>
+		/// Assert that an array, list or other collection is empty
+		/// </summary>
+		/// <param name="collection">An array, list or other collection implementing ICollection</param>
+		/// <param name="message">The message to be displayed on failure</param>
+		public static void IsNotEmpty( ICollection collection, string message )
+		{
+			IsNotEmpty( collection, message, null );
+		}
+
+		/// <summary>
+		/// Assert that an array,list or other collection is empty
+		/// </summary>
+		/// <param name="collection">An array, list or other collection implementing ICollection</param>
+		public static void IsNotEmpty( ICollection collection )
+		{
+			IsNotEmpty( collection, string.Empty, null );
+		}
+		#endregion
+
+		#region IsAssignableFrom
+		/// <summary>
+		/// Asserts that an object may be assigned a  value of a given Type.
+		/// </summary>
+		/// <param name="expected">The expected Type.</param>
+		/// <param name="actual">The object under examination</param>
+		static public void IsAssignableFrom( System.Type expected, object actual )
+		{
+			IsAssignableFrom(expected, actual, "");
+		}
+
+		/// <summary>
+		/// Asserts that an object may be assigned a  value of a given Type.
+		/// </summary>
+		/// <param name="expected">The expected Type.</param>
+		/// <param name="actual">The object under examination</param>
+		/// <param name="message">The messge to display in case of failure</param>
+		static public void IsAssignableFrom( System.Type expected, object actual, string message )
+		{
+			IsAssignableFrom(expected, actual, message, null);
+		}
+		
+		/// <summary>
+		/// Asserts that an object may be assigned a  value of a given Type.
+		/// </summary>
+		/// <param name="expected">The expected Type.</param>
+		/// <param name="actual">The object under examination</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Array of objects to be used in formatting the message</param>
+		static public void IsAssignableFrom( System.Type expected, object actual, string message, params object[] args )
+		{
+            Assert.That(actual, Is.AssignableFrom(expected), message, args);
+		}
+		#endregion
+		
+		#region IsNotAssignableFrom
+		/// <summary>
+		/// Asserts that an object may not be assigned a  value of a given Type.
+		/// </summary>
+		/// <param name="expected">The expected Type.</param>
+		/// <param name="actual">The object under examination</param>
+		static public void IsNotAssignableFrom( System.Type expected, object actual )
+		{
+			IsNotAssignableFrom(expected, actual, "");
+		}
+		
+		/// <summary>
+		/// Asserts that an object may not be assigned a  value of a given Type.
+		/// </summary>
+		/// <param name="expected">The expected Type.</param>
+		/// <param name="actual">The object under examination</param>
+		/// <param name="message">The messge to display in case of failure</param>
+		static public void IsNotAssignableFrom( System.Type expected, object actual, string message )
+		{
+			IsNotAssignableFrom(expected, actual, message, null);
+		}
+		
+		/// <summary>
+		/// Asserts that an object may not be assigned a  value of a given Type.
+		/// </summary>
+		/// <param name="expected">The expected Type.</param>
+		/// <param name="actual">The object under examination</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Array of objects to be used in formatting the message</param>
+		static public void IsNotAssignableFrom( System.Type expected, object actual, string message, params object[] args )
+		{
+            Assert.That(actual, Is.Not.AssignableFrom(expected), message, args);
+		}
+		#endregion
+		
+		#region IsInstanceOfType
+		/// <summary>
+		/// Asserts that an object is an instance of a given type.
+		/// </summary>
+		/// <param name="expected">The expected Type</param>
+		/// <param name="actual">The object being examined</param>
+		public static void IsInstanceOfType( System.Type expected, object actual )
+		{
+			IsInstanceOfType( expected, actual, string.Empty, null );
+		}
+
+		/// <summary>
+		/// Asserts that an object is an instance of a given type.
+		/// </summary>
+		/// <param name="expected">The expected Type</param>
+		/// <param name="actual">The object being examined</param>
+		/// <param name="message">A message to display in case of failure</param>
+		public static void IsInstanceOfType( System.Type expected, object actual, string message )
+		{
+			IsInstanceOfType( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that an object is an instance of a given type.
+		/// </summary>
+		/// <param name="expected">The expected Type</param>
+		/// <param name="actual">The object being examined</param>
+		/// <param name="message">A message to display in case of failure</param>
+		/// <param name="args">An array of objects to be used in formatting the message</param>
+		public static void IsInstanceOfType( System.Type expected, object actual, string message, params object[] args )
+		{
+            Assert.That(actual, Is.InstanceOfType(expected), message, args);
+		}
+		#endregion
+
+		#region IsNotInstanceOfType
+		/// <summary>
+		/// Asserts that an object is not an instance of a given type.
+		/// </summary>
+		/// <param name="expected">The expected Type</param>
+		/// <param name="actual">The object being examined</param>
+		public static void IsNotInstanceOfType( System.Type expected, object actual )
+		{
+			IsNotInstanceOfType( expected, actual, string.Empty, null );
+		}
+
+		/// <summary>
+		/// Asserts that an object is not an instance of a given type.
+		/// </summary>
+		/// <param name="expected">The expected Type</param>
+		/// <param name="actual">The object being examined</param>
+		/// <param name="message">A message to display in case of failure</param>
+		public static void IsNotInstanceOfType( System.Type expected, object actual, string message )
+		{
+			IsNotInstanceOfType( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that an object is not an instance of a given type.
+		/// </summary>
+		/// <param name="expected">The expected Type</param>
+		/// <param name="actual">The object being examined</param>
+		/// <param name="message">A message to display in case of failure</param>
+		/// <param name="args">An array of objects to be used in formatting the message</param>
+		public static void IsNotInstanceOfType( System.Type expected, object actual, string message, params object[] args )
+		{
+            Assert.That(actual, Is.Not.InstanceOfType(expected), message, args);
+		}
+		#endregion
+
+		#region AreEqual
+
+        #region Ints
+
+        /// <summary>
+        /// Verifies that two ints are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(int expected,
+            int actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Verifies that two ints are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="message">The message that will be displayed on failure</param>
+        static public void AreEqual(int expected, int actual, string message)
+        {
+            Assert.AreEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Verifies that two ints are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        static public void AreEqual(int expected, int actual)
+        {
+            Assert.AreEqual(expected, actual, string.Empty, null);
+        }
+
+        #endregion
+
+        #region Longs
+
+        /// <summary>
+        /// Verifies that two longs are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="message">The message that will be displayed on failure</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+        static public void AreEqual(long expected,
+            long actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Verifies that two longs are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="message">The message that will be displayed on failure</param>
+        static public void AreEqual(long expected, long actual, string message)
+        {
+            Assert.AreEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Verifies that two longs are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        static public void AreEqual(long expected, long actual)
+        {
+            Assert.AreEqual(expected, actual, string.Empty, null);
+        }
+
+        #endregion
+
+        #region UInts
+
+        /// <summary>
+        /// Verifies that two uints are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="message">The message that will be displayed on failure</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void AreEqual(uint expected,
+            uint actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Verifies that two uints are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void AreEqual(uint expected, uint actual, string message)
+        {
+            Assert.AreEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Verifies that two uints are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+		[CLSCompliant(false)]
+		static public void AreEqual(uint expected, uint actual)
+        {
+            Assert.AreEqual(expected, actual, string.Empty, null);
+        }
+
+        #endregion
+
+        #region Ulongs
+
+        /// <summary>
+        /// Verifies that two ulongs are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="message">The message that will be displayed on failure</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void AreEqual(ulong expected,
+            ulong actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Verifies that two ulongs are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void AreEqual(ulong expected, ulong actual, string message)
+        {
+            Assert.AreEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Verifies that two ulongs are equal. If they are not, then an 
+        /// <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+		[CLSCompliant(false)]
+		static public void AreEqual(ulong expected, ulong actual)
+        {
+            Assert.AreEqual(expected, actual, string.Empty, null);
+        }
+
+        #endregion
+
+        #region Decimals
+
+		/// <summary>
+		/// Verifies that two decimals are equal. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(decimal expected, 
+			decimal actual, string message, params object[] args) 
+		{
+            Assert.That(actual, Is.EqualTo(expected), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that two decimal are equal. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void AreEqual(decimal expected, decimal actual, string message) 
+		{
+			Assert.AreEqual( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that two decimals are equal. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		static public void AreEqual(decimal expected, decimal actual ) 
+		{
+			Assert.AreEqual( expected, actual, string.Empty, null );
+		}
+
+		#endregion
+
+		#region Doubles
+
+		/// <summary>
+		/// Verifies that two doubles are equal considering a delta. If the
+		/// expected value is infinity then the delta value is ignored. If 
+		/// they are not equals then an <see cref="AssertionException"/> is
+		/// thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(double expected, 
+			double actual, double delta, string message, params object[] args) 
+		{
+			Constraint constraint = new EqualConstraint( expected );
+			if ( double.IsNaN(expected) || double.IsInfinity(expected) )
+				Assert.That(actual, Is.EqualTo( expected ), message, args);
+			else
+				Assert.That(actual, Is.EqualTo(expected).Within(delta), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that two doubles are equal considering a delta. If the
+		/// expected value is infinity then the delta value is ignored. If 
+		/// they are not equals then an <see cref="AssertionException"/> is
+		/// thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void AreEqual(double expected, 
+			double actual, double delta, string message) 
+		{
+			Assert.AreEqual( expected, actual, delta, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that two doubles are equal considering a delta. If the
+		/// expected value is infinity then the delta value is ignored. If 
+		/// they are not equals then an <see cref="AssertionException"/> is
+		/// thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		static public void AreEqual(double expected, double actual, double delta) 
+		{
+			Assert.AreEqual(expected, actual, delta, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Floats
+
+		/// <summary>
+		/// Verifies that two floats are equal considering a delta. If the
+		/// expected value is infinity then the delta value is ignored. If 
+		/// they are not equals then an <see cref="AssertionException"/> is
+		/// thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		/// <param name="message">The message displayed upon failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(float expected, 
+			float actual, float delta, string message, params object[] args) 
+		{
+			if (float.IsNaN(expected) || float.IsInfinity(expected))
+				Assert.That(actual, Is.EqualTo( expected), message, args );
+			else
+				Assert.That(actual, Is.EqualTo(expected).Within(delta), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that two floats are equal considering a delta. If the
+		/// expected value is infinity then the delta value is ignored. If 
+		/// they are not equals then an <see cref="AssertionException"/> is
+		/// thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		/// <param name="message">The message displayed upon failure</param>
+		static public void AreEqual(float expected, float actual, float delta, string message) 
+		{
+			Assert.AreEqual(expected, actual, delta, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that two floats are equal considering a delta. If the
+		/// expected value is infinity then the delta value is ignored. If 
+		/// they are not equals then an <see cref="AssertionException"/> is
+		/// thrown.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		static public void AreEqual(float expected, float actual, float delta) 
+		{
+			Assert.AreEqual(expected, actual, delta, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Objects
+		
+		/// <summary>
+		/// Verifies that two objects are equal.  Two objects are considered
+		/// equal if both are null, or if both have the same value.  All
+		/// non-numeric types are compared by using the <c>Equals</c> method.
+		/// Arrays are compared by comparing each element using the same rules.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The value that is expected</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="message">The message to display if objects are not equal</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(Object expected, Object actual, string message, params object[] args)
+		{
+            Assert.That(actual, Is.EqualTo(expected), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that two objects are equal.  Two objects are considered
+		/// equal if both are null, or if both have the same value.  All
+		/// non-numeric types are compared by using the <c>Equals</c> method.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The value that is expected</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="message">The message to display if objects are not equal</param>
+		static public void AreEqual(Object expected, Object actual, string message) 
+		{
+			Assert.AreEqual(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that two objects are equal.  Two objects are considered
+		/// equal if both are null, or if both have the same value.  All
+		/// non-numeric types are compared by using the <c>Equals</c> method.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The value that is expected</param>
+		/// <param name="actual">The actual value</param>
+		static public void AreEqual(Object expected, Object actual) 
+		{
+			Assert.AreEqual(expected, actual, string.Empty, null);
+		}
+
+		#endregion
+
+		#endregion
+
+		#region AreNotEqual
+
+		#region Objects
+		/// <summary>
+		/// Asserts that two objects are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotEqual( Object expected, Object actual, string message, params object[] args)
+		{
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+        }
+
+		/// <summary>
+		/// Asserts that two objects are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the objects are the same</param>
+		static public void AreNotEqual(Object expected, Object actual, string message) 
+		{
+			Assert.AreNotEqual(expected, actual, message, null);
+		}
+   
+		/// <summary>
+		/// Asserts that two objects are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		static public void AreNotEqual(Object expected, Object actual) 
+		{
+			Assert.AreNotEqual(expected, actual, string.Empty, null);
+		}
+   
+		#endregion
+
+        #region Ints
+        /// <summary>
+        /// Asserts that two ints are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+        static public void AreNotEqual(int expected, int actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Asserts that two ints are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the objects are the same</param>
+        static public void AreNotEqual(int expected, int actual, string message)
+        {
+            Assert.AreNotEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Asserts that two ints are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        static public void AreNotEqual(int expected, int actual)
+        {
+            Assert.AreNotEqual(expected, actual, string.Empty, null);
+        }
+        #endregion
+
+        #region Longs
+        /// <summary>
+        /// Asserts that two longss are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+        static public void AreNotEqual(long expected, long actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Asserts that two longs are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the objects are the same</param>
+        static public void AreNotEqual(long expected, long actual, string message)
+        {
+            Assert.AreNotEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Asserts that two longs are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        static public void AreNotEqual(long expected, long actual)
+        {
+            Assert.AreNotEqual(expected, actual, string.Empty, null);
+        }
+        #endregion
+
+        #region UInts
+        /// <summary>
+        /// Asserts that two uints are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void AreNotEqual(uint expected, uint actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Asserts that two uints are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the objects are the same</param>
+		[CLSCompliant(false)]
+		static public void AreNotEqual(uint expected, uint actual, string message)
+        {
+            Assert.AreNotEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Asserts that two uints are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+		[CLSCompliant(false)]
+		static public void AreNotEqual(uint expected, uint actual)
+        {
+            Assert.AreNotEqual(expected, actual, string.Empty, null);
+        }
+        #endregion
+
+        #region Ulongs
+        /// <summary>
+        /// Asserts that two ulongs are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the two objects are the same object.</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void AreNotEqual(ulong expected, ulong actual, string message, params object[] args)
+        {
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+        }
+
+        /// <summary>
+        /// Asserts that two ulongs are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+        /// <param name="message">The message to be displayed when the objects are the same</param>
+		[CLSCompliant(false)]
+		static public void AreNotEqual(ulong expected, ulong actual, string message)
+        {
+            Assert.AreNotEqual(expected, actual, message, null);
+        }
+
+        /// <summary>
+        /// Asserts that two ulong are not equal. If they are equal
+        /// an <see cref="AssertionException"/> is thrown.
+        /// </summary>
+        /// <param name="expected">The expected object</param>
+        /// <param name="actual">The actual object</param>
+		[CLSCompliant(false)]
+		static public void AreNotEqual(ulong expected, ulong actual)
+        {
+            Assert.AreNotEqual(expected, actual, string.Empty, null);
+        }
+        #endregion
+
+        #region Decimals
+		/// <summary>
+		/// Asserts that two decimals are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotEqual( decimal expected, decimal actual, string message, params object[] args)
+		{
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+        }
+
+		/// <summary>
+		/// Asserts that two decimals are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the objects are the same</param>
+		static public void AreNotEqual(decimal expected, decimal actual, string message) 
+		{
+			Assert.AreNotEqual(expected, actual, message, null);
+		}
+   
+		/// <summary>
+		/// Asserts that two decimals are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		static public void AreNotEqual(decimal expected, decimal actual) 
+		{
+			Assert.AreNotEqual(expected, actual, string.Empty, null);
+		}
+		#endregion
+
+		#region Floats
+		/// <summary>
+		/// Asserts that two floats are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotEqual( float expected, float actual, string message, params object[] args)
+		{
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that two floats are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the objects are the same</param>
+		static public void AreNotEqual(float expected, float actual, string message) 
+		{
+			Assert.AreNotEqual(expected, actual, message, null);
+		}
+   
+		/// <summary>
+		/// Asserts that two floats are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		static public void AreNotEqual(float expected, float actual) 
+		{
+			Assert.AreNotEqual(expected, actual, string.Empty, null);
+		}
+		#endregion
+
+		#region Doubles
+		/// <summary>
+		/// Asserts that two doubles are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotEqual( double expected, double actual, string message, params object[] args)
+		{
+            Assert.That(actual, Is.Not.EqualTo(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that two doubles are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the objects are the same</param>
+		static public void AreNotEqual(double expected, double actual, string message) 
+		{
+			Assert.AreNotEqual(expected, actual, message, null);
+		}
+   
+		/// <summary>
+		/// Asserts that two doubles are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		static public void AreNotEqual(double expected, double actual) 
+		{
+			Assert.AreNotEqual(expected, actual, string.Empty, null);
+		}
+		#endregion
+
+		#endregion
+
+		#region AreSame
+
+		/// <summary>
+		/// Asserts that two objects refer to the same object. If they
+		/// are not the same an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the two objects are not the same object.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreSame(Object expected, Object actual, string message, params object[] args)
+		{
+            Assert.That(actual, Is.SameAs(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that two objects refer to the same object. If they
+		/// are not the same an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the object is null</param>
+		static public void AreSame(Object expected, Object actual, string message) 
+		{
+			Assert.AreSame(expected, actual, message, null);
+		}
+   
+		/// <summary>
+		/// Asserts that two objects refer to the same object. If they
+		/// are not the same an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		static public void AreSame(Object expected, Object actual) 
+		{
+			Assert.AreSame(expected, actual, string.Empty, null);
+		}
+   
+		#endregion
+
+		#region AreNotSame
+
+		/// <summary>
+		/// Asserts that two objects do not refer to the same object. If they
+		/// are the same an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the two objects are the same object.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotSame(Object expected, Object actual, string message, params object[] args)
+		{
+            Assert.That(actual, Is.Not.SameAs(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that two objects do not refer to the same object. If they
+		/// are the same an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		/// <param name="message">The message to be displayed when the objects are the same</param>
+		static public void AreNotSame(Object expected, Object actual, string message) 
+		{
+			Assert.AreNotSame(expected, actual, message, null);
+		}
+   
+		/// <summary>
+		/// Asserts that two objects do not refer to the same object. If they
+		/// are the same an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The actual object</param>
+		static public void AreNotSame(Object expected, Object actual) 
+		{
+			Assert.AreNotSame(expected, actual, string.Empty, null);
+		}
+   
+		#endregion
+
+		#region Greater
+
+		#region Ints
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an
+		/// <see cref="AssertionException"/> is thrown. 
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Greater(int arg1, 
+			int arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Greater(int arg1, int arg2, string message) 
+		{
+			Assert.Greater( arg1, arg2, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void Greater(int arg1, int arg2 ) 
+		{
+			Assert.Greater( arg1, arg2, string.Empty, null );
+		}
+
+		#endregion
+
+		#region UInts
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void Greater(uint arg1, 
+			uint arg2, string message, params object[] args) 
+		{
+			Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void Greater(uint arg1, uint arg2, string message) 
+		{
+			Assert.Greater( arg1, arg2, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		[CLSCompliant(false)]
+		static public void Greater(uint arg1, uint arg2 ) 
+		{
+			Assert.Greater( arg1, arg2, string.Empty, null );
+		}
+
+		#endregion
+
+		#region Longs
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Greater(long arg1, 
+			long arg2, string message, params object[] args) 
+		{
+			Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Greater(long arg1, long arg2, string message) 
+		{
+			Assert.Greater( arg1, arg2, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void Greater(long arg1, long arg2 ) 
+		{
+			Assert.Greater( arg1, arg2, string.Empty, null );
+		}
+
+		#endregion
+
+		#region ULongs
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void Greater(ulong arg1, 
+			ulong arg2, string message, params object[] args) 
+		{
+			Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void Greater(ulong arg1, ulong arg2, string message) 
+		{
+			Assert.Greater( arg1, arg2, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		[CLSCompliant(false)]
+		static public void Greater(ulong arg1, ulong arg2 ) 
+		{
+			Assert.Greater( arg1, arg2, string.Empty, null );
+		}
+
+		#endregion
+
+		#region Decimals
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Greater(decimal arg1, 
+			decimal arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Greater(decimal arg1, decimal arg2, string message) 
+		{
+			Assert.Greater( arg1, arg2, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void Greater(decimal arg1, decimal arg2 ) 
+		{
+			Assert.Greater( arg1, arg2, string.Empty, null );
+		}
+
+		#endregion
+
+		#region Doubles
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Greater(double arg1, 
+			double arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Greater(double arg1, 
+			double arg2, string message) 
+		{
+			Assert.Greater( arg1, arg2, message, null );
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void Greater(double arg1, double arg2) 
+		{
+			Assert.Greater(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Floats
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Greater(float arg1, 
+			float arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Greater(float arg1, float arg2, string message) 
+		{
+			Assert.Greater(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void Greater(float arg1, float arg2) 
+		{
+			Assert.Greater(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region IComparables
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Greater(IComparable arg1, 
+			IComparable arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.GreaterThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Greater(IComparable arg1, IComparable arg2, string message) 
+		{
+			Assert.Greater(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void Greater(IComparable arg1, IComparable arg2) 
+		{
+			Assert.Greater(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#endregion
+
+		#region Less
+
+		#region Ints
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Less(int arg1, int arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.LessThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Less(int arg1, int arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void Less(int arg1, int arg2) 
+		{
+			Assert.Less( arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region UInts
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void Less(uint arg1, uint arg2, string message, params object[] args) 
+		{
+			Assert.That(arg1, Is.LessThan(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void Less(uint arg1, uint arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		[CLSCompliant(false)]
+		static public void Less(uint arg1, uint arg2) 
+		{
+			Assert.Less( arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Longs
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Less(long arg1, long arg2, string message, params object[] args) 
+		{
+			Assert.That(arg1, Is.LessThan(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Less(long arg1, long arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void Less(long arg1, long arg2) 
+		{
+			Assert.Less( arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region ULongs
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void Less(ulong arg1, ulong arg2, string message, params object[] args) 
+		{
+			Assert.That(arg1, Is.LessThan(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void Less(ulong arg1, ulong arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		[CLSCompliant(false)]
+		static public void Less(ulong arg1, ulong arg2) 
+		{
+			Assert.Less( arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Decimals
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Less(decimal arg1, decimal arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.LessThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Less(decimal arg1, decimal arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void Less(decimal arg1, decimal arg2) 
+		{
+			Assert.Less(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Doubles
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Less(double arg1, double arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.LessThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Less(double arg1, double arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void Less(double arg1, double arg2) 
+		{
+			Assert.Less(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Floats
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Less(float arg1, float arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.LessThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Less(float arg1, float arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void Less(float arg1, float arg2) 
+		{
+			Assert.Less(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region IComparables
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Less(IComparable arg1, IComparable arg2, string message, params object[] args) 
+		{
+            Assert.That(arg1, Is.LessThan(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Less(IComparable arg1, IComparable arg2, string message) 
+		{
+			Assert.Less(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void Less(IComparable arg1, IComparable arg2) 
+		{
+			Assert.Less(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#endregion
+
+		#region Collection Containment
+
+		/// <summary>
+		/// Asserts that an object is contained in a list.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The list to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Arguments used in formatting the message</param>
+		static public void Contains( object expected, ICollection actual, string message, params object[] args )
+		{
+            Assert.That(actual, new CollectionContainsConstraint(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that an object is contained in a list.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The list to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		static public void Contains( object expected, ICollection actual, string message )
+		{
+			Contains( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that an object is contained in a list.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		/// <param name="actual">The list to be examined</param>
+		static public void Contains( object expected, ICollection actual )
+		{
+			Contains( expected, actual, string.Empty, null );
+		}
+
+		#endregion
+		
+		#region Fail
+
+		/// <summary>
+		/// Throws an <see cref="AssertionException"/> with the message and arguments 
+		/// that are passed in. This is used by the other Assert functions. 
+		/// </summary>
+		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Fail(string message, params object[] args ) 
+		{
+			if (message == null) message = string.Empty;
+			else if ( args != null && args.Length > 0 )
+				message = string.Format( message, args );
+
+			throw new AssertionException(message);
+		}
+
+		/// <summary>
+		/// Throws an <see cref="AssertionException"/> with the message that is 
+		/// passed in. This is used by the other Assert functions. 
+		/// </summary>
+		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+		static public void Fail(string message) 
+		{
+			Assert.Fail(message, null);
+		}
+    
+		/// <summary>
+		/// Throws an <see cref="AssertionException"/>. 
+		/// This is used by the other Assert functions. 
+		/// </summary>
+		static public void Fail() 
+		{
+			Assert.Fail(string.Empty, null);
+		}
+
+		#endregion 
+
+		#region Ignore
+
+		/// <summary>
+		/// Throws an <see cref="IgnoreException"/> with the message and arguments 
+		/// that are passed in.  This causes the test to be reported as ignored.
+		/// </summary>
+		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Ignore( string message, params object[] args )
+		{
+			if (message == null) message = string.Empty;
+			else if ( args != null && args.Length > 0 )
+				message = string.Format( message, args );
+
+			throw new IgnoreException(message);
+		}
+
+		/// <summary>
+		/// Throws an <see cref="IgnoreException"/> with the message that is 
+		/// passed in. This causes the test to be reported as ignored. 
+		/// </summary>
+		/// <param name="message">The message to initialize the <see cref="AssertionException"/> with.</param>
+		static public void Ignore( string message )
+		{
+			Assert.Ignore( message, null );
+		}
+    
+		/// <summary>
+		/// Throws an <see cref="IgnoreException"/>. 
+		/// This causes the test to be reported as ignored. 
+		/// </summary>
+		static public void Ignore()
+		{
+			Assert.Ignore( string.Empty, null );
+		}
+    
+		#endregion
+
+		#region DoAssert
+
+		/// <summary>
+		/// NOTE: The use of asserters for extending NUnit has
+		/// now been replaced by the use of constraints. This
+		/// method is marked obsolete.
+		/// 
+		/// Test the condition asserted by an asserter and throw
+		/// an assertion exception using provided message on failure.
+		/// </summary>
+		/// <param name="asserter">An object that implements IAsserter</param>
+		[Obsolete("Use Constraints rather than Asserters for new work")]
+		static public void DoAssert( IAsserter asserter )
+		{
+			Assert.IncrementAssertCount();
+			if ( !asserter.Test() )
+				throw new AssertionException( asserter.Message );
+		}
+
+		#endregion
+
+		#region That
+		/// <summary>
+		/// Apply a constraint to an actual value, succeeding if the constraint
+		/// is satisfied and throwing an assertion exception on failure.
+		/// </summary>
+		/// <param name="constraint">A Constraint to be applied</param>
+		/// <param name="actual">The actual value to test</param>
+		static public void That( object actual, Constraint constraint )
+		{
+			Assert.That( actual, constraint, null, null );
+		}
+
+		/// <summary>
+		/// Apply a constraint to an actual value, succeedingt if the constraint
+		/// is satisfied and throwing an assertion exception on failure.
+		/// </summary>
+		/// <param name="constraint">A Constraint to be applied</param>
+		/// <param name="actual">The actual value to test</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void That( object actual, Constraint constraint, string message )
+		{
+			Assert.That( actual, constraint, message, null );
+		}
+
+		/// <summary>
+		/// Apply a constraint to an actual value, succeedingt if the constraint
+		/// is satisfied and throwing an assertion exception on failure.
+		/// </summary>
+		/// <param name="constraint">A Constraint to be applied</param>
+		/// <param name="actual">The actual value to test</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void That( object actual, Constraint constraint, string message, params object[] args )
+		{
+			Assert.IncrementAssertCount();
+			if ( !constraint.Matches( actual ) )
+			{
+				MessageWriter writer = new TextMessageWriter( message, args );
+				constraint.WriteMessageTo( writer );
+				throw new AssertionException( writer.ToString() );
+			}
+		}
+
+        /// <summary>
+        /// Asserts that a condition is true. If the condition is false the method throws
+        /// an <see cref="AssertionException"/>.
+        /// </summary> 
+        /// <param name="condition">The evaluated condition</param>
+        /// <param name="message">The message to display if the condition is false</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+        static public void That(bool condition, string message, params object[] args)
+        {
+            Assert.That(condition, Is.True, message, args);
+        }
+
+        /// <summary>
+        /// Asserts that a condition is true. If the condition is false the method throws
+        /// an <see cref="AssertionException"/>.
+        /// </summary>
+        /// <param name="condition">The evaluated condition</param>
+        /// <param name="message">The message to display if the condition is false</param>
+        static public void That(bool condition, string message)
+        {
+            Assert.That(condition, Is.True, message, null);
+        }
+
+        /// <summary>
+        /// Asserts that a condition is true. If the condition is false the method throws
+        /// an <see cref="AssertionException"/>.
+        /// </summary>
+        /// <param name="condition">The evaluated condition</param>
+        static public void That(bool condition)
+        {
+            Assert.That(condition, Is.True, null, null);
+        }
+        #endregion
+
+		#region GreaterOrEqual
+
+		#region Ints
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown. 
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void GreaterOrEqual(int arg1,
+		    int arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void GreaterOrEqual(int arg1, int arg2, string message)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void GreaterOrEqual(int arg1, int arg2)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region UInts
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void GreaterOrEqual(uint arg1,
+			uint arg2, string message, params object[] args)
+		{
+			Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void GreaterOrEqual(uint arg1, uint arg2, string message)
+		{
+			Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater or equal to than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		[CLSCompliant(false)]
+		static public void GreaterOrEqual(uint arg1, uint arg2)
+		{
+			Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Longs
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void GreaterOrEqual(long arg1,
+			long arg2, string message, params object[] args)
+		{
+			Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void GreaterOrEqual(long arg1, long arg2, string message)
+		{
+			Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater or equal to than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void GreaterOrEqual(long arg1, long arg2)
+		{
+			Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region ULongs
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void GreaterOrEqual(ulong arg1,
+			ulong arg2, string message, params object[] args)
+		{
+			Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void GreaterOrEqual(ulong arg1, ulong arg2, string message)
+		{
+			Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater or equal to than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		[CLSCompliant(false)]
+		static public void GreaterOrEqual(ulong arg1, ulong arg2)
+		{
+			Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Decimals
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void GreaterOrEqual(decimal arg1,
+		    decimal arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void GreaterOrEqual(decimal arg1, decimal arg2, string message)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void GreaterOrEqual(decimal arg1, decimal arg2)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Doubles
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void GreaterOrEqual(double arg1,
+		    double arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void GreaterOrEqual(double arg1,
+		    double arg2, string message)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void GreaterOrEqual(double arg1, double arg2)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Floats
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void GreaterOrEqual(float arg1,
+		    float arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void GreaterOrEqual(float arg1, float arg2, string message)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than or equal to the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void GreaterOrEqual(float arg1, float arg2)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region IComparables
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void GreaterOrEqual(IComparable arg1,
+		    IComparable arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.GreaterThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void GreaterOrEqual(IComparable arg1, IComparable arg2, string message)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is greater than the second
+		/// value. If they are not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be greater</param>
+		/// <param name="arg2">The second value, expected to be less</param>
+		static public void GreaterOrEqual(IComparable arg1, IComparable arg2)
+		{
+		    Assert.GreaterOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#endregion
+
+		#region LessOrEqual
+
+		#region Ints
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void LessOrEqual(int arg1, int arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void LessOrEqual(int arg1, int arg2, string message)
+		{
+		    Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void LessOrEqual(int arg1, int arg2)
+		{
+		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region UInts
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void LessOrEqual(uint arg1, uint arg2, string message, params object[] args)
+		{
+			Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void LessOrEqual(uint arg1, uint arg2, string message)
+		{
+			Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		[CLSCompliant(false)]
+		static public void LessOrEqual(uint arg1, uint arg2)
+		{
+			Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Longs
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void LessOrEqual(long arg1, long arg2, string message, params object[] args)
+		{
+			Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void LessOrEqual(long arg1, long arg2, string message)
+		{
+			Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void LessOrEqual(long arg1, long arg2)
+		{
+			Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region ULongs
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		[CLSCompliant(false)]
+		static public void LessOrEqual(ulong arg1, ulong arg2, string message, params object[] args)
+		{
+			Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		[CLSCompliant(false)]
+		static public void LessOrEqual(ulong arg1, ulong arg2, string message)
+		{
+			Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		[CLSCompliant(false)]
+		static public void LessOrEqual(ulong arg1, ulong arg2)
+		{
+			Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Decimals
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void LessOrEqual(decimal arg1, decimal arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void LessOrEqual(decimal arg1, decimal arg2, string message)
+		{
+		    Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void LessOrEqual(decimal arg1, decimal arg2)
+		{
+		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Doubles
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void LessOrEqual(double arg1, double arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void LessOrEqual(double arg1, double arg2, string message)
+		{
+		    Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void LessOrEqual(double arg1, double arg2)
+		{
+		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region Floats
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void LessOrEqual(float arg1, float arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void LessOrEqual(float arg1, float arg2, string message)
+		{
+		    Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void LessOrEqual(float arg1, float arg2)
+		{
+		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+		#region IComparables
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void LessOrEqual(IComparable arg1, IComparable arg2, string message, params object[] args)
+		{
+            Assert.That(arg1, Is.LessThanOrEqualTo(arg2), message, args);
+        }
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void LessOrEqual(IComparable arg1, IComparable arg2, string message)
+		{
+		    Assert.LessOrEqual(arg1, arg2, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that the first value is less than or equal to the second
+		/// value. If it is not, then an 
+		/// <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="arg1">The first value, expected to be less</param>
+		/// <param name="arg2">The second value, expected to be greater</param>
+		static public void LessOrEqual(IComparable arg1, IComparable arg2)
+		{
+		    Assert.LessOrEqual(arg1, arg2, string.Empty, null);
+		}
+
+		#endregion
+
+        #endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Assertion.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Assertion.cs
@@ -1,169 +1,169 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework 
-{
-	using System;
-
-	/// <summary>
-	/// The Assertion class is obsolete and has been
-	/// replaced by the Assert class.
-	/// </summary>
-	[Obsolete("Use Assert class instead")]
-	public class Assertion
-	{
-		/// <summary>
-		/// Asserts that a condition is true. If it isn't it throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary>
-		/// <param name="message">The message to display is the condition
-		/// is false</param>
-		/// <param name="condition">The evaluated condition</param>
-		static public void Assert(string message, bool condition) 
-		{
-			NUnit.Framework.Assert.IsTrue(condition, message);
-		}
-    
-		/// <summary>
-		/// Asserts that a condition is true. If it isn't it throws
-		/// an <see cref="AssertionException"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		static public void Assert(bool condition) 
-		{
-			Assertion.Assert(string.Empty, condition);
-		}
-
-		/// <summary>
-		/// /// Asserts that two doubles are equal concerning a delta. If the
-		/// expected value is infinity then the delta value is ignored.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		static public void AssertEquals(double expected, double actual, double delta) 
-		{
-			Assertion.AssertEquals(string.Empty, expected, actual, delta);
-		}
-		/// <summary>
-		/// /// Asserts that two singles are equal concerning a delta. If the
-		/// expected value is infinity then the delta value is ignored.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="delta">The maximum acceptable difference between the
-		/// the expected and the actual</param>
-		static public void AssertEquals(float expected, float actual, float delta) 
-		{
-			Assertion.AssertEquals(string.Empty, expected, actual, delta);
-		}
-
-		/// <summary>Asserts that two objects are equal. If they are not
-		/// an <see cref="AssertionException"/> is thrown.</summary>
-		static public void AssertEquals(Object expected, Object actual) 
-		{
-			Assertion.AssertEquals(string.Empty, expected, actual);
-		}
-
-		/// <summary>Asserts that two ints are equal. If they are not
-		/// an <see cref="AssertionException"/> is thrown.</summary>
-		static public void AssertEquals(int expected, int actual) 
-		{
-			Assertion.AssertEquals(string.Empty, expected, actual);
-		}
-
-		/// <summary>Asserts that two ints are equal. If they are not
-		/// an <see cref="AssertionException"/> is thrown.</summary>
-		static public void AssertEquals(string message, int expected, int actual) 
-		{
-			NUnit.Framework.Assert.AreEqual(expected, actual, message);
-		}
-		
-		/// <summary>Asserts that two doubles are equal concerning a delta.
-		/// If the expected value is infinity then the delta value is ignored.
-		/// </summary>
-		static public void AssertEquals(string message, double expected, 
-			double actual, double delta) 
-		{
-			NUnit.Framework.Assert.AreEqual(expected, actual, delta, message);
-		}
-		
-		/// <summary>Asserts that two floats are equal concerning a delta.
-		/// If the expected value is infinity then the delta value is ignored.
-		/// </summary>
-		static public void AssertEquals(string message, float expected, 
-			float actual, float delta) 
-		{
-			NUnit.Framework.Assert.AreEqual(expected, actual, delta, message);
-		}
-
-		/// <summary>
-		/// Asserts that two objects are equal.  Two objects are considered
-		/// equal if both are null, or if both have the same value.  Numeric
-		/// types are compared via string comparision on their contents to
-		/// avoid problems comparing values between different types.  All
-		/// non-numeric types are compared by using the <c>Equals</c> method.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		static public void AssertEquals(string message, Object expected, Object actual)
-		{
-			NUnit.Framework.Assert.AreEqual(expected, actual, message);
-		}
-    
-		/// <summary>Asserts that an object isn't null.</summary>
-		static public void AssertNotNull(Object anObject) 
-		{
-			NUnit.Framework.Assert.IsNotNull(anObject, string.Empty);
-		}
-    
-		/// <summary>Asserts that an object isn't null.</summary>
-		static public void AssertNotNull(string message, Object anObject) 
-		{
-			NUnit.Framework.Assert.IsNotNull(anObject, message);
-		}
-    
-		/// <summary>Asserts that an object is null.</summary>
-		static public void AssertNull(Object anObject) 
-		{
-			NUnit.Framework.Assert.IsNull(anObject, string.Empty);
-		}
-    
-		/// <summary>Asserts that an object is null.</summary>
-		static public void AssertNull(string message, Object anObject) 
-		{
-			NUnit.Framework.Assert.IsNull(anObject, message);
-		}
-    
-		/// <summary>Asserts that two objects refer to the same object. If they
-		/// are not the same an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		static public void AssertSame(Object expected, Object actual) 
-		{
-			NUnit.Framework.Assert.AreSame(expected, actual, string.Empty);
-		}
-    
-		/// <summary>Asserts that two objects refer to the same object. 
-		/// If they are not an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		static public void AssertSame(string message, Object expected, Object actual)
-		{
-			NUnit.Framework.Assert.AreSame(expected, actual, message);
-		}
-    
-		/// <summary>Fails a test with no message.</summary>
-		static public void Fail() 
-		{
-			NUnit.Framework.Assert.Fail();
-		}
-    
-		/// <summary>Fails a test with the given message.</summary>
-		static public void Fail(string message) 
-		{
-			NUnit.Framework.Assert.Fail(message);
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework 
+{
+	using System;
+
+	/// <summary>
+	/// The Assertion class is obsolete and has been
+	/// replaced by the Assert class.
+	/// </summary>
+	[Obsolete("Use Assert class instead")]
+	public class Assertion
+	{
+		/// <summary>
+		/// Asserts that a condition is true. If it isn't it throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary>
+		/// <param name="message">The message to display is the condition
+		/// is false</param>
+		/// <param name="condition">The evaluated condition</param>
+		static public void Assert(string message, bool condition) 
+		{
+			NUnit.Framework.Assert.IsTrue(condition, message);
+		}
+    
+		/// <summary>
+		/// Asserts that a condition is true. If it isn't it throws
+		/// an <see cref="AssertionException"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		static public void Assert(bool condition) 
+		{
+			Assertion.Assert(string.Empty, condition);
+		}
+
+		/// <summary>
+		/// /// Asserts that two doubles are equal concerning a delta. If the
+		/// expected value is infinity then the delta value is ignored.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		static public void AssertEquals(double expected, double actual, double delta) 
+		{
+			Assertion.AssertEquals(string.Empty, expected, actual, delta);
+		}
+		/// <summary>
+		/// /// Asserts that two singles are equal concerning a delta. If the
+		/// expected value is infinity then the delta value is ignored.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="delta">The maximum acceptable difference between the
+		/// the expected and the actual</param>
+		static public void AssertEquals(float expected, float actual, float delta) 
+		{
+			Assertion.AssertEquals(string.Empty, expected, actual, delta);
+		}
+
+		/// <summary>Asserts that two objects are equal. If they are not
+		/// an <see cref="AssertionException"/> is thrown.</summary>
+		static public void AssertEquals(Object expected, Object actual) 
+		{
+			Assertion.AssertEquals(string.Empty, expected, actual);
+		}
+
+		/// <summary>Asserts that two ints are equal. If they are not
+		/// an <see cref="AssertionException"/> is thrown.</summary>
+		static public void AssertEquals(int expected, int actual) 
+		{
+			Assertion.AssertEquals(string.Empty, expected, actual);
+		}
+
+		/// <summary>Asserts that two ints are equal. If they are not
+		/// an <see cref="AssertionException"/> is thrown.</summary>
+		static public void AssertEquals(string message, int expected, int actual) 
+		{
+			NUnit.Framework.Assert.AreEqual(expected, actual, message);
+		}
+		
+		/// <summary>Asserts that two doubles are equal concerning a delta.
+		/// If the expected value is infinity then the delta value is ignored.
+		/// </summary>
+		static public void AssertEquals(string message, double expected, 
+			double actual, double delta) 
+		{
+			NUnit.Framework.Assert.AreEqual(expected, actual, delta, message);
+		}
+		
+		/// <summary>Asserts that two floats are equal concerning a delta.
+		/// If the expected value is infinity then the delta value is ignored.
+		/// </summary>
+		static public void AssertEquals(string message, float expected, 
+			float actual, float delta) 
+		{
+			NUnit.Framework.Assert.AreEqual(expected, actual, delta, message);
+		}
+
+		/// <summary>
+		/// Asserts that two objects are equal.  Two objects are considered
+		/// equal if both are null, or if both have the same value.  Numeric
+		/// types are compared via string comparision on their contents to
+		/// avoid problems comparing values between different types.  All
+		/// non-numeric types are compared by using the <c>Equals</c> method.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		static public void AssertEquals(string message, Object expected, Object actual)
+		{
+			NUnit.Framework.Assert.AreEqual(expected, actual, message);
+		}
+    
+		/// <summary>Asserts that an object isn't null.</summary>
+		static public void AssertNotNull(Object anObject) 
+		{
+			NUnit.Framework.Assert.IsNotNull(anObject, string.Empty);
+		}
+    
+		/// <summary>Asserts that an object isn't null.</summary>
+		static public void AssertNotNull(string message, Object anObject) 
+		{
+			NUnit.Framework.Assert.IsNotNull(anObject, message);
+		}
+    
+		/// <summary>Asserts that an object is null.</summary>
+		static public void AssertNull(Object anObject) 
+		{
+			NUnit.Framework.Assert.IsNull(anObject, string.Empty);
+		}
+    
+		/// <summary>Asserts that an object is null.</summary>
+		static public void AssertNull(string message, Object anObject) 
+		{
+			NUnit.Framework.Assert.IsNull(anObject, message);
+		}
+    
+		/// <summary>Asserts that two objects refer to the same object. If they
+		/// are not the same an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		static public void AssertSame(Object expected, Object actual) 
+		{
+			NUnit.Framework.Assert.AreSame(expected, actual, string.Empty);
+		}
+    
+		/// <summary>Asserts that two objects refer to the same object. 
+		/// If they are not an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		static public void AssertSame(string message, Object expected, Object actual)
+		{
+			NUnit.Framework.Assert.AreSame(expected, actual, message);
+		}
+    
+		/// <summary>Fails a test with no message.</summary>
+		static public void Fail() 
+		{
+			NUnit.Framework.Assert.Fail();
+		}
+    
+		/// <summary>Fails a test with the given message.</summary>
+		static public void Fail(string message) 
+		{
+			NUnit.Framework.Assert.Fail(message);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/AssertionException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/AssertionException.cs
@@ -1,40 +1,40 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework 
-{
-	using System;
-	using System.Runtime.Serialization;
-	
-	/// <summary>
-	/// Thrown when an assertion failed.
-	/// </summary>
-	/// 
-	[Serializable]
-	public class AssertionException : System.Exception
-	{
-		/// <param name="message">The error message that explains 
-		/// the reason for the exception</param>
-		public AssertionException (string message) : base(message) 
-		{}
-
-		/// <param name="message">The error message that explains 
-		/// the reason for the exception</param>
-		/// <param name="inner">The exception that caused the 
-		/// current exception</param>
-		public AssertionException(string message, Exception inner) :
-			base(message, inner) 
-		{}
-
-		/// <summary>
-		/// Serialization Constructor
-		/// </summary>
-		protected AssertionException(SerializationInfo info, 
-			StreamingContext context) : base(info,context)
-		{}
-
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework 
+{
+	using System;
+	using System.Runtime.Serialization;
+	
+	/// <summary>
+	/// Thrown when an assertion failed.
+	/// </summary>
+	/// 
+	[Serializable]
+	public class AssertionException : System.Exception
+	{
+		/// <param name="message">The error message that explains 
+		/// the reason for the exception</param>
+		public AssertionException (string message) : base(message) 
+		{}
+
+		/// <param name="message">The error message that explains 
+		/// the reason for the exception</param>
+		/// <param name="inner">The exception that caused the 
+		/// current exception</param>
+		public AssertionException(string message, Exception inner) :
+			base(message, inner) 
+		{}
+
+		/// <summary>
+		/// Serialization Constructor
+		/// </summary>
+		protected AssertionException(SerializationInfo info, 
+			StreamingContext context) : base(info,context)
+		{}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/AssertionFailureMessage.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/AssertionFailureMessage.cs
@@ -1,533 +1,533 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Text;
-using System.IO;
-using System.Collections;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// AssertionFailureMessage encapsulates a failure message
-	/// issued as a result of an Assert failure.
-	/// </summary>
-	[Obsolete( "Use MessageWriter for new work" )]
-	public class AssertionFailureMessage : StringWriter
-	{
-		#region Static Constants
-
-		/// <summary>
-		/// Number of characters before a highlighted position before
-		/// clipping will occur.  Clipped text is replaced with an
-		/// elipsis "..."
-		/// </summary>
-		static public readonly int PreClipLength = 35;
-
-		/// <summary>
-		/// Number of characters after a highlighted position before
-		/// clipping will occur.  Clipped text is replaced with an
-		/// elipsis "..."
-		/// </summary>
-		static public readonly int PostClipLength = 35;
-
-		/// <summary>
-		/// Prefix used to start an expected value line.
-		/// Must be same length as actualPrefix.
-		/// </summary>
-		static protected readonly string expectedPrefix = "expected:";
-		
-		/// <summary>
-		/// Prefix used to start an actual value line.
-		/// Must be same length as expectedPrefix.
-		/// </summary>
-		static protected readonly string actualPrefix   = " but was:";
-
-		static private readonly string expectedAndActualFmt = "\t{0} {1}";
-		static private readonly string diffStringLengthsFmt 
-			= "\tString lengths differ.  Expected length={0}, but was length={1}.";
-		static private readonly string sameStringLengthsFmt
-			= "\tString lengths are both {0}.";
-		static private readonly string diffArrayLengthsFmt
-			= "Array lengths differ.  Expected length={0}, but was length={1}.";
-		static private readonly string sameArrayLengthsFmt
-			= "Array lengths are both {0}.";
-		static private readonly string stringsDifferAtIndexFmt
-			= "\tStrings differ at index {0}.";
-		static private readonly string arraysDifferAtIndexFmt
-			= "Arrays differ at index {0}.";
-
-		#endregion
-
-		#region Constructors
-
-		/// <summary>
-		/// Construct an AssertionFailureMessage with a message
-		/// and optional arguments.
-		/// </summary>
-		/// <param name="message"></param>
-		/// <param name="args"></param>
-		public AssertionFailureMessage( string message, params object[] args )
-		{
-			if ( message != null && message != string.Empty )
-				if ( args != null )
-					WriteLine( message, args );
-				else
-					WriteLine( message );
-		}
-
-		/// <summary>
-		/// Construct an empty AssertionFailureMessage
-		/// </summary>
-		public AssertionFailureMessage() : this( null, null ) { }
-
-		#endregion
-
-		/// <summary>
-		/// Add an expected value line to the message containing
-		/// the text provided as an argument.
-		/// </summary>
-		/// <param name="text">Text describing what was expected.</param>
-		public void WriteExpectedLine( string text )
-		{
-			WriteLine( string.Format( expectedAndActualFmt, expectedPrefix, text ) );
-		}
-
-		/// <summary>
-		/// Add an actual value line to the message containing
-		/// the text provided as an argument.
-		/// </summary>
-		/// <param name="text">Text describing the actual value.</param>
-		public void WriteActualLine( string text )
-		{
-			WriteLine( string.Format( expectedAndActualFmt, actualPrefix, text ) );
-		}
-
-		/// <summary>
-		/// Add an expected value line to the message containing
-		/// a string representation of the object provided.
-		/// </summary>
-		/// <param name="expected">An object representing the expected value</param>
-		public void DisplayExpectedValue( object expected )
-		{
-			WriteExpectedLine( FormatObjectForDisplay( expected ) );
-		}
-
-		/// <summary>
-		/// Add an expected value line to the message containing a double
-		/// and the tolerance used in making the comparison.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="tolerance">The tolerance specified in the Assert</param>
-		public void DisplayExpectedValue( double expected, double tolerance )
-		{
-			WriteExpectedLine( FormatObjectForDisplay( expected ) + " +/- " + tolerance.ToString() );
-		}
-
-		/// <summary>
-		/// Add an actual value line to the message containing
-		/// a string representation of the object provided.
-		/// </summary>
-		/// <param name="actual">An object representing what was actually found</param>
-		public void DisplayActualValue( object actual )
-		{
-			WriteActualLine( FormatObjectForDisplay( actual ) );
-		}
-
-		/// <summary>
-		/// Display two lines that communicate the expected value, and the actual value
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value found</param>
-		public void DisplayExpectedAndActual( Object expected, Object actual )
-		{
-			DisplayExpectedValue( expected );
-			DisplayActualValue( actual );
-		}
-
-		/// <summary>
-		/// Display two lines that communicate the expected value, the actual value and
-		/// the tolerance used in comparing two doubles.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value found</param>
-		/// <param name="tolerance">The tolerance specified in the Assert</param>
-		public void DisplayExpectedAndActual( double expected, double actual, double tolerance )
-		{
-			DisplayExpectedValue( expected, tolerance );
-			DisplayActualValue( actual );
-		}
-
-		/// <summary>
-		/// Draws a marker under the expected/actual strings that highlights
-		/// where in the string a mismatch occurred.
-		/// </summary>
-		/// <param name="iPosition">The position of the mismatch</param>
-		public void DisplayPositionMarker( int iPosition )
-		{
-			WriteLine( "\t{0}^", new String( '-', expectedPrefix.Length + iPosition + 3 ) );
-		}
-
-		/// <summary>
-		/// Reports whether the string lengths are the same or different, and
-		/// what the string lengths are.
-		/// </summary>
-		/// <param name="sExpected">The expected string</param>
-		/// <param name="sActual">The actual string value</param>
-		protected void BuildStringLengthReport( string sExpected, string sActual )
-		{
-			if( sExpected.Length != sActual.Length )
-				WriteLine( diffStringLengthsFmt, sExpected.Length, sActual.Length );
-			else
-				WriteLine( sameStringLengthsFmt, sExpected.Length );
-		}
-
-		/// <summary>
-		/// Called to create additional message lines when two objects have been 
-		/// found to be unequal.  If the inputs are strings, a special message is
-		/// rendered that can help track down where the strings are different,
-		/// based on differences in length, or differences in content.
-		/// 
-		/// If the inputs are not strings, the ToString method of the objects
-		/// is used to show what is different about them.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value</param>
-		/// <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
-		public void DisplayDifferences( object expected, object actual, bool caseInsensitive )
-		{
-			if( InputsAreStrings( expected, actual ) )
-			{
-				DisplayStringDifferences( 
-					(string)expected, 
-					(string)actual,
-					caseInsensitive );
-			}
-			else
-			{
-				DisplayExpectedAndActual( expected, actual );
-			}
-		}
-
-		/// <summary>
-		/// Called to create additional message lines when two doubles have been 
-		/// found to be unequal, within the specified tolerance.
-		/// </summary>
-		public void DisplayDifferencesWithTolerance( double expected, double actual, double tolerance )
-		{
-			DisplayExpectedAndActual( expected, actual, tolerance );
-		}
-
-		/// <summary>
-		/// Constructs a message that can be displayed when the content of two
-		/// strings are different, but the string lengths are the same.  The
-		/// message will clip the strings to a reasonable length, centered
-		/// around the first position where they are mismatched, and draw 
-		/// a line marking the position of the difference to make comparison
-		/// quicker.
-		/// </summary>
-		/// <param name="sExpected">The expected string value</param>
-		/// <param name="sActual">The actual string value</param>
-		/// <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
-		protected void DisplayStringDifferences( string sExpected, string sActual, bool caseInsensitive )
-		{
-			//
-			// If they mismatch at a specified position, report the
-			// difference.
-			//
-			int iPosition = caseInsensitive
-				? FindMismatchPosition( sExpected.ToLower(), sActual.ToLower(), 0 )
-				: FindMismatchPosition( sExpected, sActual, 0 );
-			//
-			// If the lengths differ, but they match up to the length,
-			// show the difference just past the length of the shorter
-			// string
-			//
-			if( iPosition == -1 ) 
-				iPosition = Math.Min( sExpected.Length, sActual.Length );
-			
-			BuildStringLengthReport( sExpected, sActual );
-
-			WriteLine( stringsDifferAtIndexFmt, iPosition );
-
-			//
-			// Clips the strings, then turns any hidden whitespace into visible
-			// characters
-			//
-			string sClippedExpected = ConvertWhitespace(ClipAroundPosition( sExpected, iPosition ));
-			string sClippedActual   = ConvertWhitespace(ClipAroundPosition( sActual,   iPosition ));
-
-			DisplayExpectedAndActual( 
-				sClippedExpected, 
-				sClippedActual );
-
-			// Add a line showing where they differ.  If the string lengths are
-			// different, they start differing just past the length of the 
-			// shorter string
-			DisplayPositionMarker( caseInsensitive
-				? FindMismatchPosition( sClippedExpected.ToLower(), sClippedActual.ToLower(), 0 )
-				: FindMismatchPosition( sClippedExpected, sClippedActual, 0 ) );
-		}
-
-		/// <summary>
-		/// Display a standard message showing the differences found between 
-		/// two arrays that were expected to be equal.
-		/// </summary>
-		/// <param name="expected">The expected array value</param>
-		/// <param name="actual">The actual array value</param>
-		/// <param name="index">The index at which a difference was found</param>
-		public void DisplayArrayDifferences( Array expected, Array actual, int index )
-		{
-			if( expected.Length != actual.Length )
-				WriteLine( diffArrayLengthsFmt, expected.Length, actual.Length );
-			else
-				WriteLine( sameArrayLengthsFmt, expected.Length );
-			
-			WriteLine( arraysDifferAtIndexFmt, index );
-				
-			if ( index < expected.Length && index < actual.Length )
-			{
-				DisplayDifferences( GetValueFromCollection(expected, index ), GetValueFromCollection(actual, index), false );
-			}
-			else if( expected.Length < actual.Length )
-				DisplayListElements( "   extra:", actual, index, 3 );
-			else
-				DisplayListElements( " missing:", expected, index, 3 );
-		}
-
-		/// <summary>
-		/// Display a standard message showing the differences found between 
-		/// two collections that were expected to be equal.
-		/// </summary>
-		/// <param name="expected">The expected collection value</param>
-		/// <param name="actual">The actual collection value</param>
-		/// <param name="index">The index at which a difference was found</param>
-		// NOTE: This is a temporary method for use until the code from NUnitLite
-		// is integrated into NUnit.
-		public void DisplayCollectionDifferences( ICollection expected, ICollection actual, int index )
-		{
-			if( expected.Count != actual.Count )
-				WriteLine( diffArrayLengthsFmt, expected.Count, actual.Count );
-			else
-				WriteLine( sameArrayLengthsFmt, expected.Count );
-			
-			WriteLine( arraysDifferAtIndexFmt, index );
-				
-			if ( index < expected.Count && index < actual.Count )
-			{
-				DisplayDifferences( GetValueFromCollection(expected, index ), GetValueFromCollection(actual, index), false );
-			}
-//			else if( expected.Count < actual.Count )
-//				DisplayListElements( "   extra:", actual, index, 3 );
-//			else
-//				DisplayListElements( " missing:", expected, index, 3 );
-		}
-
-		private static object GetValueFromCollection(ICollection collection, int index)
-		{
-			Array array = collection as Array;
-
-			if (array != null && array.Rank > 1)
-				return array.GetValue(GetArrayIndicesFromCollectionIndex(array, index));
-
-			if (collection is IList)
-				return ((IList)collection)[index];
-
-			foreach (object obj in collection)
-				if (--index < 0)
-					return obj;
-
-			return null;
-		}
-
-		/// <summary>
-		/// Get an array of indices representing the point in a collection or
-		/// array corresponding to a single int index into the collection.
-		/// </summary>
-		/// <param name="collection">The collection to which the indices apply</param>
-		/// <param name="index">Index in the collection</param>
-		/// <returns>Array of indices</returns>
-		private static int[] GetArrayIndicesFromCollectionIndex(ICollection collection, int index)
-		{
-			Array array = collection as Array;
-			int rank = array == null ? 1 : array.Rank;
-			int[] result = new int[rank];
-
-			for (int r = array.Rank; --r > 0; )
-			{
-				int l = array.GetLength(r);
-				result[r] = index % l;
-				index /= l;
-			}
-
-			result[0] = index;
-			return result;
-		}
-
-		/// <summary>
-		/// Displays elements from a list on a line
-		/// </summary>
-		/// <param name="label">Text to prefix the line with</param>
-		/// <param name="list">The list of items to display</param>
-		/// <param name="index">The index in the list of the first element to display</param>
-		/// <param name="max">The maximum number of elements to display</param>
-		public void DisplayListElements( string label, IList list, int index, int max )
-		{
-			Write( "{0}<", label );
-
-			if ( list == null )
-				Write( "null" );
-			else if ( list.Count == 0 )
-				Write( "empty" );
-			else
-			{
-				for( int i = 0; i < max && index < list.Count; i++ )
-				{
-					Write( FormatObjectForDisplay( list[index++] ) );
-				
-					if ( index < list.Count )
-						Write( "," );
-				}
-
-				if ( index < list.Count )
-					Write( "..." );
-			}
-
-			WriteLine( ">" );
-		}
-
-		#region Static Methods
-
-		/// <summary>
-		/// Formats an object for display in a message line
-		/// </summary>
-		/// <param name="obj">The object to be displayed</param>
-		/// <returns></returns>
-		static public string FormatObjectForDisplay( object  obj )
-		{
-			if ( obj == null ) 
-				return "<(null)>";
-			else if ( obj is string )
-				return string.Format( "<\"{0}\">", obj );
-			else if ( obj is double )
-				return string.Format( "<{0}>", ((double)obj).ToString( "G17" ) );
-			else if ( obj is float )
-				return string.Format( "<{0}>", ((float)obj).ToString( "G9" ) );
-			else
-				return string.Format( "<{0}>", obj );
-		}
-
-		/// <summary>
-		/// Tests two objects to determine if they are strings.
-		/// </summary>
-		/// <param name="expected"></param>
-		/// <param name="actual"></param>
-		/// <returns></returns>
-		static protected bool InputsAreStrings( Object expected, Object actual )
-		{
-			return expected != null && actual != null && 
-				expected is string && actual is string;
-		}
-
-		/// <summary>
-		/// Renders up to M characters before, and up to N characters after
-		/// the specified index position.  If leading or trailing text is
-		/// clipped, and elipses "..." is added where the missing text would
-		/// be.
-		/// 
-		/// Clips strings to limit previous or post newline characters,
-		/// since these mess up the comparison
-		/// </summary>
-		/// <param name="sString"></param>
-		/// <param name="iPosition"></param>
-		/// <returns></returns>
-		static protected string ClipAroundPosition( string sString, int iPosition )
-		{
-			if( sString == null || sString.Length == 0 )
-				return "";
-
-			bool preClip = iPosition > PreClipLength;
-			bool postClip = iPosition + PostClipLength < sString.Length;
-
-			int start = preClip 
-				? iPosition - PreClipLength : 0;
-			int length = postClip 
-				? iPosition + PostClipLength - start : sString.Length - start;
-
-			if ( start + length > iPosition + PostClipLength )
-				length = iPosition + PostClipLength - start;
-
-			StringBuilder sb = new StringBuilder();
-			if ( preClip ) sb.Append("...");
-			sb.Append( sString.Substring( start, length ) );
-			if ( postClip ) sb.Append("...");
-
-			return sb.ToString();
-		}
-
-		/// <summary>
-		/// Shows the position two strings start to differ.  Comparison 
-		/// starts at the start index.
-		/// </summary>
-		/// <param name="sExpected"></param>
-		/// <param name="sActual"></param>
-		/// <param name="iStart"></param>
-		/// <returns>-1 if no mismatch found, or the index where mismatch found</returns>
-		static private int FindMismatchPosition( string sExpected, string sActual, int iStart )
-		{
-			int iLength = Math.Min( sExpected.Length, sActual.Length );
-			for( int i=iStart; i<iLength; i++ )
-			{
-				//
-				// If they mismatch at a specified position, report the
-				// difference.
-				//
-				if( sExpected[i] != sActual[i] )
-				{
-					return i;
-				}
-			}
-			//
-			// Strings have same content up to the length of the shorter string.
-			// Mismatch occurs because string lengths are different, so show
-			// that they start differing where the shortest string ends
-			//
-			if( sExpected.Length != sActual.Length )
-			{
-				return iLength;
-			}
-            
-			//
-			// Same strings
-			//
-			Assert.IsTrue( sExpected.Equals( sActual ) );
-			return -1;
-		}
-
-		/// <summary>
-		/// Turns CR, LF, or TAB into visual indicator to preserve visual marker 
-		/// position.   This is done by replacing the '\r' into '\\' and 'r' 
-		/// characters, and the '\n' into '\\' and 'n' characters, and '\t' into
-		/// '\\' and 't' characters.  
-		/// 
-		/// Thus the single character becomes two characters for display.
-		/// </summary>
-		/// <param name="sInput"></param>
-		/// <returns></returns>
-		static protected string ConvertWhitespace( string sInput )
-		{
-			if( null != sInput )
-			{
-				sInput = sInput.Replace( "\\", "\\\\" );
-				sInput = sInput.Replace( "\r", "\\r" );
-				sInput = sInput.Replace( "\n", "\\n" );
-				sInput = sInput.Replace( "\t", "\\t" );
-			}
-			return sInput;
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Text;
+using System.IO;
+using System.Collections;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// AssertionFailureMessage encapsulates a failure message
+	/// issued as a result of an Assert failure.
+	/// </summary>
+	[Obsolete( "Use MessageWriter for new work" )]
+	public class AssertionFailureMessage : StringWriter
+	{
+		#region Static Constants
+
+		/// <summary>
+		/// Number of characters before a highlighted position before
+		/// clipping will occur.  Clipped text is replaced with an
+		/// elipsis "..."
+		/// </summary>
+		static public readonly int PreClipLength = 35;
+
+		/// <summary>
+		/// Number of characters after a highlighted position before
+		/// clipping will occur.  Clipped text is replaced with an
+		/// elipsis "..."
+		/// </summary>
+		static public readonly int PostClipLength = 35;
+
+		/// <summary>
+		/// Prefix used to start an expected value line.
+		/// Must be same length as actualPrefix.
+		/// </summary>
+		static protected readonly string expectedPrefix = "expected:";
+		
+		/// <summary>
+		/// Prefix used to start an actual value line.
+		/// Must be same length as expectedPrefix.
+		/// </summary>
+		static protected readonly string actualPrefix   = " but was:";
+
+		static private readonly string expectedAndActualFmt = "\t{0} {1}";
+		static private readonly string diffStringLengthsFmt 
+			= "\tString lengths differ.  Expected length={0}, but was length={1}.";
+		static private readonly string sameStringLengthsFmt
+			= "\tString lengths are both {0}.";
+		static private readonly string diffArrayLengthsFmt
+			= "Array lengths differ.  Expected length={0}, but was length={1}.";
+		static private readonly string sameArrayLengthsFmt
+			= "Array lengths are both {0}.";
+		static private readonly string stringsDifferAtIndexFmt
+			= "\tStrings differ at index {0}.";
+		static private readonly string arraysDifferAtIndexFmt
+			= "Arrays differ at index {0}.";
+
+		#endregion
+
+		#region Constructors
+
+		/// <summary>
+		/// Construct an AssertionFailureMessage with a message
+		/// and optional arguments.
+		/// </summary>
+		/// <param name="message"></param>
+		/// <param name="args"></param>
+		public AssertionFailureMessage( string message, params object[] args )
+		{
+			if ( message != null && message != string.Empty )
+				if ( args != null )
+					WriteLine( message, args );
+				else
+					WriteLine( message );
+		}
+
+		/// <summary>
+		/// Construct an empty AssertionFailureMessage
+		/// </summary>
+		public AssertionFailureMessage() : this( null, null ) { }
+
+		#endregion
+
+		/// <summary>
+		/// Add an expected value line to the message containing
+		/// the text provided as an argument.
+		/// </summary>
+		/// <param name="text">Text describing what was expected.</param>
+		public void WriteExpectedLine( string text )
+		{
+			WriteLine( string.Format( expectedAndActualFmt, expectedPrefix, text ) );
+		}
+
+		/// <summary>
+		/// Add an actual value line to the message containing
+		/// the text provided as an argument.
+		/// </summary>
+		/// <param name="text">Text describing the actual value.</param>
+		public void WriteActualLine( string text )
+		{
+			WriteLine( string.Format( expectedAndActualFmt, actualPrefix, text ) );
+		}
+
+		/// <summary>
+		/// Add an expected value line to the message containing
+		/// a string representation of the object provided.
+		/// </summary>
+		/// <param name="expected">An object representing the expected value</param>
+		public void DisplayExpectedValue( object expected )
+		{
+			WriteExpectedLine( FormatObjectForDisplay( expected ) );
+		}
+
+		/// <summary>
+		/// Add an expected value line to the message containing a double
+		/// and the tolerance used in making the comparison.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="tolerance">The tolerance specified in the Assert</param>
+		public void DisplayExpectedValue( double expected, double tolerance )
+		{
+			WriteExpectedLine( FormatObjectForDisplay( expected ) + " +/- " + tolerance.ToString() );
+		}
+
+		/// <summary>
+		/// Add an actual value line to the message containing
+		/// a string representation of the object provided.
+		/// </summary>
+		/// <param name="actual">An object representing what was actually found</param>
+		public void DisplayActualValue( object actual )
+		{
+			WriteActualLine( FormatObjectForDisplay( actual ) );
+		}
+
+		/// <summary>
+		/// Display two lines that communicate the expected value, and the actual value
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value found</param>
+		public void DisplayExpectedAndActual( Object expected, Object actual )
+		{
+			DisplayExpectedValue( expected );
+			DisplayActualValue( actual );
+		}
+
+		/// <summary>
+		/// Display two lines that communicate the expected value, the actual value and
+		/// the tolerance used in comparing two doubles.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value found</param>
+		/// <param name="tolerance">The tolerance specified in the Assert</param>
+		public void DisplayExpectedAndActual( double expected, double actual, double tolerance )
+		{
+			DisplayExpectedValue( expected, tolerance );
+			DisplayActualValue( actual );
+		}
+
+		/// <summary>
+		/// Draws a marker under the expected/actual strings that highlights
+		/// where in the string a mismatch occurred.
+		/// </summary>
+		/// <param name="iPosition">The position of the mismatch</param>
+		public void DisplayPositionMarker( int iPosition )
+		{
+			WriteLine( "\t{0}^", new String( '-', expectedPrefix.Length + iPosition + 3 ) );
+		}
+
+		/// <summary>
+		/// Reports whether the string lengths are the same or different, and
+		/// what the string lengths are.
+		/// </summary>
+		/// <param name="sExpected">The expected string</param>
+		/// <param name="sActual">The actual string value</param>
+		protected void BuildStringLengthReport( string sExpected, string sActual )
+		{
+			if( sExpected.Length != sActual.Length )
+				WriteLine( diffStringLengthsFmt, sExpected.Length, sActual.Length );
+			else
+				WriteLine( sameStringLengthsFmt, sExpected.Length );
+		}
+
+		/// <summary>
+		/// Called to create additional message lines when two objects have been 
+		/// found to be unequal.  If the inputs are strings, a special message is
+		/// rendered that can help track down where the strings are different,
+		/// based on differences in length, or differences in content.
+		/// 
+		/// If the inputs are not strings, the ToString method of the objects
+		/// is used to show what is different about them.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value</param>
+		/// <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
+		public void DisplayDifferences( object expected, object actual, bool caseInsensitive )
+		{
+			if( InputsAreStrings( expected, actual ) )
+			{
+				DisplayStringDifferences( 
+					(string)expected, 
+					(string)actual,
+					caseInsensitive );
+			}
+			else
+			{
+				DisplayExpectedAndActual( expected, actual );
+			}
+		}
+
+		/// <summary>
+		/// Called to create additional message lines when two doubles have been 
+		/// found to be unequal, within the specified tolerance.
+		/// </summary>
+		public void DisplayDifferencesWithTolerance( double expected, double actual, double tolerance )
+		{
+			DisplayExpectedAndActual( expected, actual, tolerance );
+		}
+
+		/// <summary>
+		/// Constructs a message that can be displayed when the content of two
+		/// strings are different, but the string lengths are the same.  The
+		/// message will clip the strings to a reasonable length, centered
+		/// around the first position where they are mismatched, and draw 
+		/// a line marking the position of the difference to make comparison
+		/// quicker.
+		/// </summary>
+		/// <param name="sExpected">The expected string value</param>
+		/// <param name="sActual">The actual string value</param>
+		/// <param name="caseInsensitive">True if a case-insensitive comparison is being performed</param>
+		protected void DisplayStringDifferences( string sExpected, string sActual, bool caseInsensitive )
+		{
+			//
+			// If they mismatch at a specified position, report the
+			// difference.
+			//
+			int iPosition = caseInsensitive
+				? FindMismatchPosition( sExpected.ToLower(), sActual.ToLower(), 0 )
+				: FindMismatchPosition( sExpected, sActual, 0 );
+			//
+			// If the lengths differ, but they match up to the length,
+			// show the difference just past the length of the shorter
+			// string
+			//
+			if( iPosition == -1 ) 
+				iPosition = Math.Min( sExpected.Length, sActual.Length );
+			
+			BuildStringLengthReport( sExpected, sActual );
+
+			WriteLine( stringsDifferAtIndexFmt, iPosition );
+
+			//
+			// Clips the strings, then turns any hidden whitespace into visible
+			// characters
+			//
+			string sClippedExpected = ConvertWhitespace(ClipAroundPosition( sExpected, iPosition ));
+			string sClippedActual   = ConvertWhitespace(ClipAroundPosition( sActual,   iPosition ));
+
+			DisplayExpectedAndActual( 
+				sClippedExpected, 
+				sClippedActual );
+
+			// Add a line showing where they differ.  If the string lengths are
+			// different, they start differing just past the length of the 
+			// shorter string
+			DisplayPositionMarker( caseInsensitive
+				? FindMismatchPosition( sClippedExpected.ToLower(), sClippedActual.ToLower(), 0 )
+				: FindMismatchPosition( sClippedExpected, sClippedActual, 0 ) );
+		}
+
+		/// <summary>
+		/// Display a standard message showing the differences found between 
+		/// two arrays that were expected to be equal.
+		/// </summary>
+		/// <param name="expected">The expected array value</param>
+		/// <param name="actual">The actual array value</param>
+		/// <param name="index">The index at which a difference was found</param>
+		public void DisplayArrayDifferences( Array expected, Array actual, int index )
+		{
+			if( expected.Length != actual.Length )
+				WriteLine( diffArrayLengthsFmt, expected.Length, actual.Length );
+			else
+				WriteLine( sameArrayLengthsFmt, expected.Length );
+			
+			WriteLine( arraysDifferAtIndexFmt, index );
+				
+			if ( index < expected.Length && index < actual.Length )
+			{
+				DisplayDifferences( GetValueFromCollection(expected, index ), GetValueFromCollection(actual, index), false );
+			}
+			else if( expected.Length < actual.Length )
+				DisplayListElements( "   extra:", actual, index, 3 );
+			else
+				DisplayListElements( " missing:", expected, index, 3 );
+		}
+
+		/// <summary>
+		/// Display a standard message showing the differences found between 
+		/// two collections that were expected to be equal.
+		/// </summary>
+		/// <param name="expected">The expected collection value</param>
+		/// <param name="actual">The actual collection value</param>
+		/// <param name="index">The index at which a difference was found</param>
+		// NOTE: This is a temporary method for use until the code from NUnitLite
+		// is integrated into NUnit.
+		public void DisplayCollectionDifferences( ICollection expected, ICollection actual, int index )
+		{
+			if( expected.Count != actual.Count )
+				WriteLine( diffArrayLengthsFmt, expected.Count, actual.Count );
+			else
+				WriteLine( sameArrayLengthsFmt, expected.Count );
+			
+			WriteLine( arraysDifferAtIndexFmt, index );
+				
+			if ( index < expected.Count && index < actual.Count )
+			{
+				DisplayDifferences( GetValueFromCollection(expected, index ), GetValueFromCollection(actual, index), false );
+			}
+//			else if( expected.Count < actual.Count )
+//				DisplayListElements( "   extra:", actual, index, 3 );
+//			else
+//				DisplayListElements( " missing:", expected, index, 3 );
+		}
+
+		private static object GetValueFromCollection(ICollection collection, int index)
+		{
+			Array array = collection as Array;
+
+			if (array != null && array.Rank > 1)
+				return array.GetValue(GetArrayIndicesFromCollectionIndex(array, index));
+
+			if (collection is IList)
+				return ((IList)collection)[index];
+
+			foreach (object obj in collection)
+				if (--index < 0)
+					return obj;
+
+			return null;
+		}
+
+		/// <summary>
+		/// Get an array of indices representing the point in a collection or
+		/// array corresponding to a single int index into the collection.
+		/// </summary>
+		/// <param name="collection">The collection to which the indices apply</param>
+		/// <param name="index">Index in the collection</param>
+		/// <returns>Array of indices</returns>
+		private static int[] GetArrayIndicesFromCollectionIndex(ICollection collection, int index)
+		{
+			Array array = collection as Array;
+			int rank = array == null ? 1 : array.Rank;
+			int[] result = new int[rank];
+
+			for (int r = array.Rank; --r > 0; )
+			{
+				int l = array.GetLength(r);
+				result[r] = index % l;
+				index /= l;
+			}
+
+			result[0] = index;
+			return result;
+		}
+
+		/// <summary>
+		/// Displays elements from a list on a line
+		/// </summary>
+		/// <param name="label">Text to prefix the line with</param>
+		/// <param name="list">The list of items to display</param>
+		/// <param name="index">The index in the list of the first element to display</param>
+		/// <param name="max">The maximum number of elements to display</param>
+		public void DisplayListElements( string label, IList list, int index, int max )
+		{
+			Write( "{0}<", label );
+
+			if ( list == null )
+				Write( "null" );
+			else if ( list.Count == 0 )
+				Write( "empty" );
+			else
+			{
+				for( int i = 0; i < max && index < list.Count; i++ )
+				{
+					Write( FormatObjectForDisplay( list[index++] ) );
+				
+					if ( index < list.Count )
+						Write( "," );
+				}
+
+				if ( index < list.Count )
+					Write( "..." );
+			}
+
+			WriteLine( ">" );
+		}
+
+		#region Static Methods
+
+		/// <summary>
+		/// Formats an object for display in a message line
+		/// </summary>
+		/// <param name="obj">The object to be displayed</param>
+		/// <returns></returns>
+		static public string FormatObjectForDisplay( object  obj )
+		{
+			if ( obj == null ) 
+				return "<(null)>";
+			else if ( obj is string )
+				return string.Format( "<\"{0}\">", obj );
+			else if ( obj is double )
+				return string.Format( "<{0}>", ((double)obj).ToString( "G17" ) );
+			else if ( obj is float )
+				return string.Format( "<{0}>", ((float)obj).ToString( "G9" ) );
+			else
+				return string.Format( "<{0}>", obj );
+		}
+
+		/// <summary>
+		/// Tests two objects to determine if they are strings.
+		/// </summary>
+		/// <param name="expected"></param>
+		/// <param name="actual"></param>
+		/// <returns></returns>
+		static protected bool InputsAreStrings( Object expected, Object actual )
+		{
+			return expected != null && actual != null && 
+				expected is string && actual is string;
+		}
+
+		/// <summary>
+		/// Renders up to M characters before, and up to N characters after
+		/// the specified index position.  If leading or trailing text is
+		/// clipped, and elipses "..." is added where the missing text would
+		/// be.
+		/// 
+		/// Clips strings to limit previous or post newline characters,
+		/// since these mess up the comparison
+		/// </summary>
+		/// <param name="sString"></param>
+		/// <param name="iPosition"></param>
+		/// <returns></returns>
+		static protected string ClipAroundPosition( string sString, int iPosition )
+		{
+			if( sString == null || sString.Length == 0 )
+				return "";
+
+			bool preClip = iPosition > PreClipLength;
+			bool postClip = iPosition + PostClipLength < sString.Length;
+
+			int start = preClip 
+				? iPosition - PreClipLength : 0;
+			int length = postClip 
+				? iPosition + PostClipLength - start : sString.Length - start;
+
+			if ( start + length > iPosition + PostClipLength )
+				length = iPosition + PostClipLength - start;
+
+			StringBuilder sb = new StringBuilder();
+			if ( preClip ) sb.Append("...");
+			sb.Append( sString.Substring( start, length ) );
+			if ( postClip ) sb.Append("...");
+
+			return sb.ToString();
+		}
+
+		/// <summary>
+		/// Shows the position two strings start to differ.  Comparison 
+		/// starts at the start index.
+		/// </summary>
+		/// <param name="sExpected"></param>
+		/// <param name="sActual"></param>
+		/// <param name="iStart"></param>
+		/// <returns>-1 if no mismatch found, or the index where mismatch found</returns>
+		static private int FindMismatchPosition( string sExpected, string sActual, int iStart )
+		{
+			int iLength = Math.Min( sExpected.Length, sActual.Length );
+			for( int i=iStart; i<iLength; i++ )
+			{
+				//
+				// If they mismatch at a specified position, report the
+				// difference.
+				//
+				if( sExpected[i] != sActual[i] )
+				{
+					return i;
+				}
+			}
+			//
+			// Strings have same content up to the length of the shorter string.
+			// Mismatch occurs because string lengths are different, so show
+			// that they start differing where the shortest string ends
+			//
+			if( sExpected.Length != sActual.Length )
+			{
+				return iLength;
+			}
+            
+			//
+			// Same strings
+			//
+			Assert.IsTrue( sExpected.Equals( sActual ) );
+			return -1;
+		}
+
+		/// <summary>
+		/// Turns CR, LF, or TAB into visual indicator to preserve visual marker 
+		/// position.   This is done by replacing the '\r' into '\\' and 'r' 
+		/// characters, and the '\n' into '\\' and 'n' characters, and '\t' into
+		/// '\\' and 't' characters.  
+		/// 
+		/// Thus the single character becomes two characters for display.
+		/// </summary>
+		/// <param name="sInput"></param>
+		/// <returns></returns>
+		static protected string ConvertWhitespace( string sInput )
+		{
+			if( null != sInput )
+			{
+				sInput = sInput.Replace( "\\", "\\\\" );
+				sInput = sInput.Replace( "\r", "\\r" );
+				sInput = sInput.Replace( "\n", "\\n" );
+				sInput = sInput.Replace( "\t", "\\t" );
+			}
+			return sInput;
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/AssertionHelper.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/AssertionHelper.cs
@@ -1,111 +1,111 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Framework.SyntaxHelpers;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// AssertionHelper is an optional base class for user tests,
-	/// allowing the use of shorter names for constraints and
-	/// asserts and avoiding conflict with the definition of 
-	/// <see cref="Is"/>, from which it inherits much of its
-	/// behavior, in certain mock object frameworks.
-	/// </summary>
-	public class AssertionHelper : ConstraintBuilder
-	{
-		#region Expect
-		/// <summary>
-		/// Apply a constraint to an actual value, succeeding if the constraint
-		/// is satisfied and throwing an assertion exception on failure. Works
-		/// identically to <see cref="NUnit.Framework.Assert.That(object, Constraint)"/>
-		/// </summary>
-		/// <param name="constraint">A Constraint to be applied</param>
-		/// <param name="actual">The actual value to test</param>
-		static public void Expect( object actual, Constraint constraint )
-		{
-			Assert.That( actual, constraint, null, null );
-		}
-
-		/// <summary>
-		/// Apply a constraint to an actual value, succeeding if the constraint
-		/// is satisfied and throwing an assertion exception on failure. Works
-		/// identically to <see cref="NUnit.Framework.Assert.That(object, Constraint, string)"/>
-		/// </summary>
-		/// <param name="constraint">A Constraint to be applied</param>
-		/// <param name="actual">The actual value to test</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		static public void Expect( object actual, Constraint constraint, string message )
-		{
-			Assert.That( actual, constraint, message, null );
-		}
-
-		/// <summary>
-		/// Apply a constraint to an actual value, succeeding if the constraint
-		/// is satisfied and throwing an assertion exception on failure. Works
-		/// identically to <see cref="NUnit.Framework.Assert.That(object, Constraint, string, object[])"/>
-		/// </summary>
-		/// <param name="constraint">A Constraint to be applied</param>
-		/// <param name="actual">The actual value to test</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Expect( object actual, Constraint constraint, string message, params object[] args )
-		{
-			Assert.That( actual, constraint, message, args );
-		}
-
-		/// <summary>
-		/// Asserts that a condition is true. If the condition is false the method throws
-		/// an <see cref="AssertionException"/>. Works Identically to 
-        /// <see cref="Assert.That(bool, string, object[])"/>.
-		/// </summary> 
-		/// <param name="condition">The evaluated condition</param>
-		/// <param name="message">The message to display if the condition is false</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void Expect(bool condition, string message, params object[] args)
-		{
-			Assert.That(condition, Is.True, message, args);
-		}
-
-		/// <summary>
-		/// Asserts that a condition is true. If the condition is false the method throws
-		/// an <see cref="AssertionException"/>. Works Identically to 
-        /// <see cref="Assert.That(bool, string)"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		/// <param name="message">The message to display if the condition is false</param>
-		static public void Expect(bool condition, string message)
-		{
-			Assert.That(condition, Is.True, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that a condition is true. If the condition is false the method throws
-		/// an <see cref="AssertionException"/>. Works Identically to <see cref="Assert.That(bool)"/>.
-		/// </summary>
-		/// <param name="condition">The evaluated condition</param>
-		static public void Expect(bool condition)
-		{
-			Assert.That(condition, Is.True, null, null);
-		}
-		#endregion
-
-		#region Map
-		/// <summary>
-		/// Returns a ListMapper based on a collection.
-		/// </summary>
-		/// <param name="original">The original collection</param>
-		/// <returns></returns>
-		public ListMapper Map( ICollection original )
-		{
-			return new ListMapper( original );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.SyntaxHelpers;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// AssertionHelper is an optional base class for user tests,
+	/// allowing the use of shorter names for constraints and
+	/// asserts and avoiding conflict with the definition of 
+	/// <see cref="Is"/>, from which it inherits much of its
+	/// behavior, in certain mock object frameworks.
+	/// </summary>
+	public class AssertionHelper : ConstraintBuilder
+	{
+		#region Expect
+		/// <summary>
+		/// Apply a constraint to an actual value, succeeding if the constraint
+		/// is satisfied and throwing an assertion exception on failure. Works
+		/// identically to <see cref="NUnit.Framework.Assert.That(object, Constraint)"/>
+		/// </summary>
+		/// <param name="constraint">A Constraint to be applied</param>
+		/// <param name="actual">The actual value to test</param>
+		static public void Expect( object actual, Constraint constraint )
+		{
+			Assert.That( actual, constraint, null, null );
+		}
+
+		/// <summary>
+		/// Apply a constraint to an actual value, succeeding if the constraint
+		/// is satisfied and throwing an assertion exception on failure. Works
+		/// identically to <see cref="NUnit.Framework.Assert.That(object, Constraint, string)"/>
+		/// </summary>
+		/// <param name="constraint">A Constraint to be applied</param>
+		/// <param name="actual">The actual value to test</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		static public void Expect( object actual, Constraint constraint, string message )
+		{
+			Assert.That( actual, constraint, message, null );
+		}
+
+		/// <summary>
+		/// Apply a constraint to an actual value, succeeding if the constraint
+		/// is satisfied and throwing an assertion exception on failure. Works
+		/// identically to <see cref="NUnit.Framework.Assert.That(object, Constraint, string, object[])"/>
+		/// </summary>
+		/// <param name="constraint">A Constraint to be applied</param>
+		/// <param name="actual">The actual value to test</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Expect( object actual, Constraint constraint, string message, params object[] args )
+		{
+			Assert.That( actual, constraint, message, args );
+		}
+
+		/// <summary>
+		/// Asserts that a condition is true. If the condition is false the method throws
+		/// an <see cref="AssertionException"/>. Works Identically to 
+        /// <see cref="Assert.That(bool, string, object[])"/>.
+		/// </summary> 
+		/// <param name="condition">The evaluated condition</param>
+		/// <param name="message">The message to display if the condition is false</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void Expect(bool condition, string message, params object[] args)
+		{
+			Assert.That(condition, Is.True, message, args);
+		}
+
+		/// <summary>
+		/// Asserts that a condition is true. If the condition is false the method throws
+		/// an <see cref="AssertionException"/>. Works Identically to 
+        /// <see cref="Assert.That(bool, string)"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		/// <param name="message">The message to display if the condition is false</param>
+		static public void Expect(bool condition, string message)
+		{
+			Assert.That(condition, Is.True, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that a condition is true. If the condition is false the method throws
+		/// an <see cref="AssertionException"/>. Works Identically to <see cref="Assert.That(bool)"/>.
+		/// </summary>
+		/// <param name="condition">The evaluated condition</param>
+		static public void Expect(bool condition)
+		{
+			Assert.That(condition, Is.True, null, null);
+		}
+		#endregion
+
+		#region Map
+		/// <summary>
+		/// Returns a ListMapper based on a collection.
+		/// </summary>
+		/// <param name="original">The original collection</param>
+		/// <returns></returns>
+		public ListMapper Map( ICollection original )
+		{
+			return new ListMapper( original );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/CategoryAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/CategoryAttribute.cs
@@ -1,50 +1,50 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// Attribute used to apply a category to a test
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
-	public class CategoryAttribute : Attribute
-	{
-		/// <summary>
-		/// The name of the category
-		/// </summary>
-		protected string categoryName;
-
-		/// <summary>
-		/// Construct attribute for a given category
-		/// </summary>
-		/// <param name="name">The name of the category</param>
-		public CategoryAttribute(string name)
-		{
-			this.categoryName = name;
-		}
-
-		/// <summary>
-		/// Protected constructor uses the Type name as the name
-		/// of the category.
-		/// </summary>
-		protected CategoryAttribute()
-		{
-			this.categoryName = this.GetType().Name;
-			if ( categoryName.EndsWith( "Attribute" ) )
-				categoryName = categoryName.Substring( 0, categoryName.Length - 9 );
-		}
-
-		/// <summary>
-		/// The name of the category
-		/// </summary>
-		public string Name 
-		{
-			get { return categoryName; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// Attribute used to apply a category to a test
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
+	public class CategoryAttribute : Attribute
+	{
+		/// <summary>
+		/// The name of the category
+		/// </summary>
+		protected string categoryName;
+
+		/// <summary>
+		/// Construct attribute for a given category
+		/// </summary>
+		/// <param name="name">The name of the category</param>
+		public CategoryAttribute(string name)
+		{
+			this.categoryName = name;
+		}
+
+		/// <summary>
+		/// Protected constructor uses the Type name as the name
+		/// of the category.
+		/// </summary>
+		protected CategoryAttribute()
+		{
+			this.categoryName = this.GetType().Name;
+			if ( categoryName.EndsWith( "Attribute" ) )
+				categoryName = categoryName.Substring( 0, categoryName.Length - 9 );
+		}
+
+		/// <summary>
+		/// The name of the category
+		/// </summary>
+		public string Name 
+		{
+			get { return categoryName; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/CollectionAssert.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/CollectionAssert.cs
@@ -1,595 +1,595 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// A set of Assert methods operationg on one or more collections
-	/// </summary>
-	public class CollectionAssert
-	{
-		#region Equals and ReferenceEquals
-
-		/// <summary>
-		/// The Equals method throws an AssertionException. This is done 
-		/// to make sure there is no mistake by calling this function.
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		[EditorBrowsable(EditorBrowsableState.Never)]
-		public static new bool Equals(object a, object b)
-		{
-			throw new AssertionException("Assert.Equals should not be used for Assertions");
-		}
-
-		/// <summary>
-		/// override the default ReferenceEquals to throw an AssertionException. This 
-		/// implementation makes sure there is no mistake in calling this function 
-		/// as part of Assert. 
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		public static new void ReferenceEquals(object a, object b)
-		{
-			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
-		}
-
-		#endregion
-				
-		#region AllItemsAreInstancesOfType
-		/// <summary>
-		/// Asserts that all items contained in collection are of the type specified by expectedType.
-		/// </summary>
-		/// <param name="collection">IEnumerable containing objects to be considered</param>
-		/// <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-		public static void AllItemsAreInstancesOfType (IEnumerable collection, Type expectedType)
-		{
-			AllItemsAreInstancesOfType(collection, expectedType, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that all items contained in collection are of the type specified by expectedType.
-		/// </summary>
-		/// <param name="collection">IEnumerable containing objects to be considered</param>
-		/// <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AllItemsAreInstancesOfType (IEnumerable collection, Type expectedType, string message)
-		{
-			AllItemsAreInstancesOfType(collection, expectedType, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that all items contained in collection are of the type specified by expectedType.
-		/// </summary>
-		/// <param name="collection">IEnumerable containing objects to be considered</param>
-		/// <param name="expectedType">System.Type that all objects in collection must be instances of</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AllItemsAreInstancesOfType (IEnumerable collection, Type expectedType, string message, params object[] args)
-		{
-            Assert.That(collection, new AllItemsConstraint(new InstanceOfTypeConstraint(expectedType)), message, args);
-		}
-		#endregion
-
-		#region AllItemsAreNotNull
-
-		/// <summary>
-		/// Asserts that all items contained in collection are not equal to null.
-		/// </summary>
-		/// <param name="collection">IEnumerable containing objects to be considered</param>
-		public static void AllItemsAreNotNull (IEnumerable collection) 
-		{
-			AllItemsAreNotNull(collection, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that all items contained in collection are not equal to null.
-		/// </summary>
-		/// <param name="collection">IEnumerable containing objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AllItemsAreNotNull (IEnumerable collection, string message) 
-		{
-			AllItemsAreNotNull(collection, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that all items contained in collection are not equal to null.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AllItemsAreNotNull (IEnumerable collection, string message, params object[] args) 
-		{
-            Assert.That(collection, new AllItemsConstraint(new NotConstraint(new EqualConstraint(null))), message, args);
-		}
-		#endregion
-
-		#region AllItemsAreUnique
-
-		/// <summary>
-		/// Ensures that every object contained in collection exists within the collection
-		/// once and only once.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		public static void AllItemsAreUnique (IEnumerable collection) 
-		{
-			AllItemsAreUnique(collection, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Ensures that every object contained in collection exists within the collection
-		/// once and only once.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AllItemsAreUnique (IEnumerable collection, string message) 
-		{
-			AllItemsAreUnique(collection, message, null);
-		}
-		
-		/// <summary>
-		/// Ensures that every object contained in collection exists within the collection
-		/// once and only once.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AllItemsAreUnique (IEnumerable collection, string message, params object[] args) 
-		{
-            Assert.That(collection, new UniqueItemsConstraint(), message, args);
-		}
-		#endregion
-
-		#region AreEqual
-
-		/// <summary>
-		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-		/// and contain the exact same objects in the same order.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		public static void AreEqual (IEnumerable expected, IEnumerable actual) 
-		{
-			//AreEqual(expected, actual, null, string.Empty, null);
-            Assert.That(actual, new EqualConstraint(expected));
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-		/// and contain the exact same objects in the same order.
-		/// If comparer is not null then it will be used to compare the objects.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-		public static void AreEqual (IEnumerable expected, IEnumerable actual, IComparer comparer) 
-		{
-			AreEqual(expected, actual, comparer, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-		/// and contain the exact same objects in the same order.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AreEqual (IEnumerable expected, IEnumerable actual, string message) 
-		{
-			//AreEqual(expected, actual, null, message, null);
-            Assert.That(actual, new EqualConstraint(expected), message);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-		/// and contain the exact same objects in the same order.
-		/// If comparer is not null then it will be used to compare the objects.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AreEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message) 
-		{
-			AreEqual(expected, actual, comparer, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-		/// and contain the exact same objects in the same order.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AreEqual (IEnumerable expected, IEnumerable actual, string message, params object[] args) 
-		{
-			//AreEqual(expected, actual, null, message, args);
-            Assert.That(actual, new EqualConstraint(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
-		/// and contain the exact same objects in the same order.
-		/// If comparer is not null then it will be used to compare the objects.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AreEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message, params object[] args) 
-		{
-            Assert.That(actual, new EqualConstraint(expected).Comparer(comparer), message, args);
-		}
-		#endregion
-
-		#region AreEquivalent
-
-		/// <summary>
-		/// Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		public static void AreEquivalent (IEnumerable expected, IEnumerable actual) 
-		{
-			AreEquivalent(expected, actual, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AreEquivalent (IEnumerable expected, IEnumerable actual, string message) 
-		{
-			AreEquivalent(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AreEquivalent (IEnumerable expected, IEnumerable actual, string message, params object[] args) 
-		{
-            Assert.That(actual, new CollectionEquivalentConstraint(expected), message, args);
-		}
-		#endregion
-
-		#region AreNotEqual
-
-		/// <summary>
-		/// Asserts that expected and actual are not exactly equal.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		public static void AreNotEqual (IEnumerable expected, IEnumerable actual)
-		{
-            Assert.That(actual, new NotConstraint(new EqualConstraint(expected)));
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are not exactly equal.
-		/// If comparer is not null then it will be used to compare the objects.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, IComparer comparer)
-		{
-			AreNotEqual(expected, actual, comparer, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are not exactly equal.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, string message)
-		{
-			//AreNotEqual(expected, actual, null, message, null);
-			//Assert.AreNotEqual( expected, actual, message );
-            Assert.That(actual, new NotConstraint(new EqualConstraint(expected)), message);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are not exactly equal.
-		/// If comparer is not null then it will be used to compare the objects.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message)
-		{
-			AreNotEqual(expected, actual, comparer, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are not exactly equal.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, string message, params object[] args) 
-		{
-			//AreNotEqual(expected, actual, null, message, args);
-			//Assert.AreNotEqual( expected, actual, message, args );
-            Assert.That(actual, new NotConstraint(new EqualConstraint(expected)), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are not exactly equal.
-		/// If comparer is not null then it will be used to compare the objects.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message, params object[] args)
-		{
-			Assert.That(actual, new NotConstraint(new EqualConstraint(expected).Comparer(comparer)), message, args);
-		}
-		#endregion
-
-		#region AreNotEquivalent
-
-		/// <summary>
-		/// Asserts that expected and actual are not equivalent.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		public static void AreNotEquivalent (IEnumerable expected, IEnumerable actual)
-		{
-			AreNotEquivalent(expected, actual, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are not equivalent.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void AreNotEquivalent (IEnumerable expected, IEnumerable actual, string message)
-		{
-			AreNotEquivalent(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that expected and actual are not equivalent.
-		/// </summary>
-		/// <param name="expected">The first IEnumerable of objects to be considered</param>
-		/// <param name="actual">The second IEnumerable of objects to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void AreNotEquivalent (IEnumerable expected, IEnumerable actual, string message, params object[] args)
-		{
-            Assert.That(actual, new NotConstraint(new CollectionEquivalentConstraint(expected)), message, args);
-		}
-		#endregion
-
-		#region Contains
-		/// <summary>
-		/// Asserts that collection contains actual as an item.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="actual">Object to be found within collection</param>
-		public static void Contains (IEnumerable collection, Object actual)
-		{
-			Contains(collection, actual, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that collection contains actual as an item.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="actual">Object to be found within collection</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void Contains (IEnumerable collection, Object actual, string message)
-		{
-			Contains(collection, actual, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that collection contains actual as an item.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="actual">Object to be found within collection</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void Contains (IEnumerable collection, Object actual, string message, params object[] args)
-		{
-            Assert.That(collection, new CollectionContainsConstraint(actual), message, args);
-		}
-		#endregion
-
-		#region DoesNotContain
-
-		/// <summary>
-		/// Asserts that collection does not contain actual as an item.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="actual">Object that cannot exist within collection</param>
-		public static void DoesNotContain (IEnumerable collection, Object actual)
-		{
-			DoesNotContain(collection, actual, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that collection does not contain actual as an item.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="actual">Object that cannot exist within collection</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void DoesNotContain (IEnumerable collection, Object actual, string message)
-		{
-			DoesNotContain(collection, actual, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that collection does not contain actual as an item.
-		/// </summary>
-		/// <param name="collection">IEnumerable of objects to be considered</param>
-		/// <param name="actual">Object that cannot exist within collection</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void DoesNotContain (IEnumerable collection, Object actual, string message, params object[] args)
-		{
-            Assert.That(collection, new NotConstraint( new CollectionContainsConstraint( actual ) ), message, args);
-		}
-		#endregion
-
-		#region IsNotSubsetOf
-
-		/// <summary>
-		/// Asserts that superset is not a subject of subset.
-		/// </summary>
-		/// <param name="subset">The IEnumerable superset to be considered</param>
-		/// <param name="superset">The IEnumerable subset to be considered</param>
-		public static void IsNotSubsetOf (IEnumerable subset, IEnumerable superset)
-		{
-			IsNotSubsetOf(subset, superset, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that superset is not a subject of subset.
-		/// </summary>
-		/// <param name="subset">The IEnumerable superset to be considered</param>
-		/// <param name="superset">The IEnumerable subset to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void IsNotSubsetOf (IEnumerable subset, IEnumerable superset, string message)
-		{
-			IsNotSubsetOf(subset, superset, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that superset is not a subject of subset.
-		/// </summary>
-		/// <param name="subset">The IEnumerable superset to be considered</param>
-		/// <param name="superset">The IEnumerable subset to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void IsNotSubsetOf (IEnumerable subset, IEnumerable superset, string message, params object[] args)
-		{
-            Assert.That(subset, new NotConstraint(new CollectionSubsetConstraint(superset)), message, args);
-		}
-		#endregion
-
-		#region IsSubsetOf
-
-		/// <summary>
-		/// Asserts that superset is a subset of subset.
-		/// </summary>
-		/// <param name="subset">The IEnumerable superset to be considered</param>
-		/// <param name="superset">The IEnumerable subset to be considered</param>
-		public static void IsSubsetOf (IEnumerable subset, IEnumerable superset)
-		{
-			IsSubsetOf(subset, superset, string.Empty, null);
-		}
-
-		/// <summary>
-		/// Asserts that superset is a subset of subset.
-		/// </summary>
-		/// <param name="subset">The IEnumerable superset to be considered</param>
-		/// <param name="superset">The IEnumerable subset to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		public static void IsSubsetOf (IEnumerable subset, IEnumerable superset, string message)
-		{
-			IsSubsetOf(subset, superset, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that superset is a subset of subset.
-		/// </summary>
-		/// <param name="subset">The IEnumerable superset to be considered</param>
-		/// <param name="superset">The IEnumerable subset to be considered</param>
-		/// <param name="message">The message that will be displayed on failure</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		public static void IsSubsetOf (IEnumerable subset, IEnumerable superset, string message, params object[] args)
-		{
-            Assert.That(subset, new CollectionSubsetConstraint(superset), message, args);
-		}
-		#endregion
-
-        #region IsEmpty
-        /// <summary>
-        /// Assert that an array, list or other collection is empty
-        /// </summary>
-        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        /// <param name="message">The message to be displayed on failure</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-        public static void IsEmpty(IEnumerable collection, string message, params object[] args)
-        {
-            Assert.That(collection, new EmptyConstraint(), message, args);
-        }
-
-        /// <summary>
-        /// Assert that an array, list or other collection is empty
-        /// </summary>
-        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        /// <param name="message">The message to be displayed on failure</param>
-        public static void IsEmpty(IEnumerable collection, string message)
-        {
-            IsEmpty(collection, message, null);
-        }
-
-        /// <summary>
-        /// Assert that an array,list or other collection is empty
-        /// </summary>
-        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        public static void IsEmpty(IEnumerable collection)
-        {
-            IsEmpty(collection, string.Empty, null);
-        }
-        #endregion
-
-        #region IsNotEmpty
-        /// <summary>
-        /// Assert that an array, list or other collection is empty
-        /// </summary>
-        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        /// <param name="message">The message to be displayed on failure</param>
-        /// <param name="args">Arguments to be used in formatting the message</param>
-        public static void IsNotEmpty(IEnumerable collection, string message, params object[] args)
-        {
-            Assert.That(collection, new NotConstraint(new EmptyConstraint()), message, args);
-        }
-
-        /// <summary>
-        /// Assert that an array, list or other collection is empty
-        /// </summary>
-        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        /// <param name="message">The message to be displayed on failure</param>
-        public static void IsNotEmpty(IEnumerable collection, string message)
-        {
-            IsNotEmpty(collection, message, null);
-        }
-
-        /// <summary>
-        /// Assert that an array,list or other collection is empty
-        /// </summary>
-        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
-        public static void IsNotEmpty(IEnumerable collection)
-        {
-            IsNotEmpty(collection, string.Empty, null);
-        }
-        #endregion
-    }
-}
-
-
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// A set of Assert methods operationg on one or more collections
+	/// </summary>
+	public class CollectionAssert
+	{
+		#region Equals and ReferenceEquals
+
+		/// <summary>
+		/// The Equals method throws an AssertionException. This is done 
+		/// to make sure there is no mistake by calling this function.
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		[EditorBrowsable(EditorBrowsableState.Never)]
+		public static new bool Equals(object a, object b)
+		{
+			throw new AssertionException("Assert.Equals should not be used for Assertions");
+		}
+
+		/// <summary>
+		/// override the default ReferenceEquals to throw an AssertionException. This 
+		/// implementation makes sure there is no mistake in calling this function 
+		/// as part of Assert. 
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		public static new void ReferenceEquals(object a, object b)
+		{
+			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
+		}
+
+		#endregion
+				
+		#region AllItemsAreInstancesOfType
+		/// <summary>
+		/// Asserts that all items contained in collection are of the type specified by expectedType.
+		/// </summary>
+		/// <param name="collection">IEnumerable containing objects to be considered</param>
+		/// <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+		public static void AllItemsAreInstancesOfType (IEnumerable collection, Type expectedType)
+		{
+			AllItemsAreInstancesOfType(collection, expectedType, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that all items contained in collection are of the type specified by expectedType.
+		/// </summary>
+		/// <param name="collection">IEnumerable containing objects to be considered</param>
+		/// <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AllItemsAreInstancesOfType (IEnumerable collection, Type expectedType, string message)
+		{
+			AllItemsAreInstancesOfType(collection, expectedType, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that all items contained in collection are of the type specified by expectedType.
+		/// </summary>
+		/// <param name="collection">IEnumerable containing objects to be considered</param>
+		/// <param name="expectedType">System.Type that all objects in collection must be instances of</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AllItemsAreInstancesOfType (IEnumerable collection, Type expectedType, string message, params object[] args)
+		{
+            Assert.That(collection, new AllItemsConstraint(new InstanceOfTypeConstraint(expectedType)), message, args);
+		}
+		#endregion
+
+		#region AllItemsAreNotNull
+
+		/// <summary>
+		/// Asserts that all items contained in collection are not equal to null.
+		/// </summary>
+		/// <param name="collection">IEnumerable containing objects to be considered</param>
+		public static void AllItemsAreNotNull (IEnumerable collection) 
+		{
+			AllItemsAreNotNull(collection, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that all items contained in collection are not equal to null.
+		/// </summary>
+		/// <param name="collection">IEnumerable containing objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AllItemsAreNotNull (IEnumerable collection, string message) 
+		{
+			AllItemsAreNotNull(collection, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that all items contained in collection are not equal to null.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AllItemsAreNotNull (IEnumerable collection, string message, params object[] args) 
+		{
+            Assert.That(collection, new AllItemsConstraint(new NotConstraint(new EqualConstraint(null))), message, args);
+		}
+		#endregion
+
+		#region AllItemsAreUnique
+
+		/// <summary>
+		/// Ensures that every object contained in collection exists within the collection
+		/// once and only once.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		public static void AllItemsAreUnique (IEnumerable collection) 
+		{
+			AllItemsAreUnique(collection, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Ensures that every object contained in collection exists within the collection
+		/// once and only once.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AllItemsAreUnique (IEnumerable collection, string message) 
+		{
+			AllItemsAreUnique(collection, message, null);
+		}
+		
+		/// <summary>
+		/// Ensures that every object contained in collection exists within the collection
+		/// once and only once.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AllItemsAreUnique (IEnumerable collection, string message, params object[] args) 
+		{
+            Assert.That(collection, new UniqueItemsConstraint(), message, args);
+		}
+		#endregion
+
+		#region AreEqual
+
+		/// <summary>
+		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+		/// and contain the exact same objects in the same order.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		public static void AreEqual (IEnumerable expected, IEnumerable actual) 
+		{
+			//AreEqual(expected, actual, null, string.Empty, null);
+            Assert.That(actual, new EqualConstraint(expected));
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+		/// and contain the exact same objects in the same order.
+		/// If comparer is not null then it will be used to compare the objects.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+		public static void AreEqual (IEnumerable expected, IEnumerable actual, IComparer comparer) 
+		{
+			AreEqual(expected, actual, comparer, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+		/// and contain the exact same objects in the same order.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AreEqual (IEnumerable expected, IEnumerable actual, string message) 
+		{
+			//AreEqual(expected, actual, null, message, null);
+            Assert.That(actual, new EqualConstraint(expected), message);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+		/// and contain the exact same objects in the same order.
+		/// If comparer is not null then it will be used to compare the objects.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AreEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message) 
+		{
+			AreEqual(expected, actual, comparer, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+		/// and contain the exact same objects in the same order.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AreEqual (IEnumerable expected, IEnumerable actual, string message, params object[] args) 
+		{
+			//AreEqual(expected, actual, null, message, args);
+            Assert.That(actual, new EqualConstraint(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are exactly equal.  The collections must have the same count, 
+		/// and contain the exact same objects in the same order.
+		/// If comparer is not null then it will be used to compare the objects.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AreEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message, params object[] args) 
+		{
+            Assert.That(actual, new EqualConstraint(expected).Comparer(comparer), message, args);
+		}
+		#endregion
+
+		#region AreEquivalent
+
+		/// <summary>
+		/// Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		public static void AreEquivalent (IEnumerable expected, IEnumerable actual) 
+		{
+			AreEquivalent(expected, actual, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AreEquivalent (IEnumerable expected, IEnumerable actual, string message) 
+		{
+			AreEquivalent(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AreEquivalent (IEnumerable expected, IEnumerable actual, string message, params object[] args) 
+		{
+            Assert.That(actual, new CollectionEquivalentConstraint(expected), message, args);
+		}
+		#endregion
+
+		#region AreNotEqual
+
+		/// <summary>
+		/// Asserts that expected and actual are not exactly equal.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		public static void AreNotEqual (IEnumerable expected, IEnumerable actual)
+		{
+            Assert.That(actual, new NotConstraint(new EqualConstraint(expected)));
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are not exactly equal.
+		/// If comparer is not null then it will be used to compare the objects.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, IComparer comparer)
+		{
+			AreNotEqual(expected, actual, comparer, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are not exactly equal.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, string message)
+		{
+			//AreNotEqual(expected, actual, null, message, null);
+			//Assert.AreNotEqual( expected, actual, message );
+            Assert.That(actual, new NotConstraint(new EqualConstraint(expected)), message);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are not exactly equal.
+		/// If comparer is not null then it will be used to compare the objects.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message)
+		{
+			AreNotEqual(expected, actual, comparer, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are not exactly equal.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, string message, params object[] args) 
+		{
+			//AreNotEqual(expected, actual, null, message, args);
+			//Assert.AreNotEqual( expected, actual, message, args );
+            Assert.That(actual, new NotConstraint(new EqualConstraint(expected)), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are not exactly equal.
+		/// If comparer is not null then it will be used to compare the objects.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="comparer">The IComparer to use in comparing objects from each IEnumerable</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AreNotEqual (IEnumerable expected, IEnumerable actual, IComparer comparer, string message, params object[] args)
+		{
+			Assert.That(actual, new NotConstraint(new EqualConstraint(expected).Comparer(comparer)), message, args);
+		}
+		#endregion
+
+		#region AreNotEquivalent
+
+		/// <summary>
+		/// Asserts that expected and actual are not equivalent.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		public static void AreNotEquivalent (IEnumerable expected, IEnumerable actual)
+		{
+			AreNotEquivalent(expected, actual, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are not equivalent.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void AreNotEquivalent (IEnumerable expected, IEnumerable actual, string message)
+		{
+			AreNotEquivalent(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that expected and actual are not equivalent.
+		/// </summary>
+		/// <param name="expected">The first IEnumerable of objects to be considered</param>
+		/// <param name="actual">The second IEnumerable of objects to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void AreNotEquivalent (IEnumerable expected, IEnumerable actual, string message, params object[] args)
+		{
+            Assert.That(actual, new NotConstraint(new CollectionEquivalentConstraint(expected)), message, args);
+		}
+		#endregion
+
+		#region Contains
+		/// <summary>
+		/// Asserts that collection contains actual as an item.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="actual">Object to be found within collection</param>
+		public static void Contains (IEnumerable collection, Object actual)
+		{
+			Contains(collection, actual, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that collection contains actual as an item.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="actual">Object to be found within collection</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void Contains (IEnumerable collection, Object actual, string message)
+		{
+			Contains(collection, actual, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that collection contains actual as an item.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="actual">Object to be found within collection</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void Contains (IEnumerable collection, Object actual, string message, params object[] args)
+		{
+            Assert.That(collection, new CollectionContainsConstraint(actual), message, args);
+		}
+		#endregion
+
+		#region DoesNotContain
+
+		/// <summary>
+		/// Asserts that collection does not contain actual as an item.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="actual">Object that cannot exist within collection</param>
+		public static void DoesNotContain (IEnumerable collection, Object actual)
+		{
+			DoesNotContain(collection, actual, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that collection does not contain actual as an item.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="actual">Object that cannot exist within collection</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void DoesNotContain (IEnumerable collection, Object actual, string message)
+		{
+			DoesNotContain(collection, actual, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that collection does not contain actual as an item.
+		/// </summary>
+		/// <param name="collection">IEnumerable of objects to be considered</param>
+		/// <param name="actual">Object that cannot exist within collection</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void DoesNotContain (IEnumerable collection, Object actual, string message, params object[] args)
+		{
+            Assert.That(collection, new NotConstraint( new CollectionContainsConstraint( actual ) ), message, args);
+		}
+		#endregion
+
+		#region IsNotSubsetOf
+
+		/// <summary>
+		/// Asserts that superset is not a subject of subset.
+		/// </summary>
+		/// <param name="subset">The IEnumerable superset to be considered</param>
+		/// <param name="superset">The IEnumerable subset to be considered</param>
+		public static void IsNotSubsetOf (IEnumerable subset, IEnumerable superset)
+		{
+			IsNotSubsetOf(subset, superset, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that superset is not a subject of subset.
+		/// </summary>
+		/// <param name="subset">The IEnumerable superset to be considered</param>
+		/// <param name="superset">The IEnumerable subset to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void IsNotSubsetOf (IEnumerable subset, IEnumerable superset, string message)
+		{
+			IsNotSubsetOf(subset, superset, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that superset is not a subject of subset.
+		/// </summary>
+		/// <param name="subset">The IEnumerable superset to be considered</param>
+		/// <param name="superset">The IEnumerable subset to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void IsNotSubsetOf (IEnumerable subset, IEnumerable superset, string message, params object[] args)
+		{
+            Assert.That(subset, new NotConstraint(new CollectionSubsetConstraint(superset)), message, args);
+		}
+		#endregion
+
+		#region IsSubsetOf
+
+		/// <summary>
+		/// Asserts that superset is a subset of subset.
+		/// </summary>
+		/// <param name="subset">The IEnumerable superset to be considered</param>
+		/// <param name="superset">The IEnumerable subset to be considered</param>
+		public static void IsSubsetOf (IEnumerable subset, IEnumerable superset)
+		{
+			IsSubsetOf(subset, superset, string.Empty, null);
+		}
+
+		/// <summary>
+		/// Asserts that superset is a subset of subset.
+		/// </summary>
+		/// <param name="subset">The IEnumerable superset to be considered</param>
+		/// <param name="superset">The IEnumerable subset to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		public static void IsSubsetOf (IEnumerable subset, IEnumerable superset, string message)
+		{
+			IsSubsetOf(subset, superset, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that superset is a subset of subset.
+		/// </summary>
+		/// <param name="subset">The IEnumerable superset to be considered</param>
+		/// <param name="superset">The IEnumerable subset to be considered</param>
+		/// <param name="message">The message that will be displayed on failure</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		public static void IsSubsetOf (IEnumerable subset, IEnumerable superset, string message, params object[] args)
+		{
+            Assert.That(subset, new CollectionSubsetConstraint(superset), message, args);
+		}
+		#endregion
+
+        #region IsEmpty
+        /// <summary>
+        /// Assert that an array, list or other collection is empty
+        /// </summary>
+        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        /// <param name="message">The message to be displayed on failure</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+        public static void IsEmpty(IEnumerable collection, string message, params object[] args)
+        {
+            Assert.That(collection, new EmptyConstraint(), message, args);
+        }
+
+        /// <summary>
+        /// Assert that an array, list or other collection is empty
+        /// </summary>
+        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        /// <param name="message">The message to be displayed on failure</param>
+        public static void IsEmpty(IEnumerable collection, string message)
+        {
+            IsEmpty(collection, message, null);
+        }
+
+        /// <summary>
+        /// Assert that an array,list or other collection is empty
+        /// </summary>
+        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        public static void IsEmpty(IEnumerable collection)
+        {
+            IsEmpty(collection, string.Empty, null);
+        }
+        #endregion
+
+        #region IsNotEmpty
+        /// <summary>
+        /// Assert that an array, list or other collection is empty
+        /// </summary>
+        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        /// <param name="message">The message to be displayed on failure</param>
+        /// <param name="args">Arguments to be used in formatting the message</param>
+        public static void IsNotEmpty(IEnumerable collection, string message, params object[] args)
+        {
+            Assert.That(collection, new NotConstraint(new EmptyConstraint()), message, args);
+        }
+
+        /// <summary>
+        /// Assert that an array, list or other collection is empty
+        /// </summary>
+        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        /// <param name="message">The message to be displayed on failure</param>
+        public static void IsNotEmpty(IEnumerable collection, string message)
+        {
+            IsNotEmpty(collection, message, null);
+        }
+
+        /// <summary>
+        /// Assert that an array,list or other collection is empty
+        /// </summary>
+        /// <param name="collection">An array, list or other collection implementing IEnumerable</param>
+        public static void IsNotEmpty(IEnumerable collection)
+        {
+            IsNotEmpty(collection, string.Empty, null);
+        }
+        #endregion
+    }
+}
+
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/BinaryOperations.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/BinaryOperations.cs
@@ -1,109 +1,109 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework.Constraints
-{
-	/// <summary>
-	/// BinaryOperation is the abstract base of all constraints
-	/// that combine two other constraints in some fashion.
-	/// </summary>
-    public abstract class BinaryOperation : Constraint
-    {
-		/// <summary>
-		/// The first constraint being combined
-		/// </summary>
-		protected Constraint left;
-		/// <summary>
-		/// The second constraint being combined
-		/// </summary>
-		protected Constraint right;
-
-		/// <summary>
-		/// Construct a BinaryOperation from two other constraints
-		/// </summary>
-		/// <param name="left">The first constraint</param>
-		/// <param name="right">The second constraint</param>
-        public BinaryOperation(Constraint left, Constraint right)
-        {
-            this.left = left;
-            this.right = right;
-        }
-    }
-
-    /// <summary>
-    /// AndConstraint succeeds only if both members succeed.
-    /// </summary>
-	public class AndConstraint : BinaryOperation
-    {
-		/// <summary>
-		/// Create an AndConstraint from two other constraints
-		/// </summary>
-		/// <param name="left">The first constraint</param>
-		/// <param name="right">The second constraint</param>
-		public AndConstraint(Constraint left, Constraint right) : base(left, right) { }
-
-		/// <summary>
-		/// Apply both member constraints to an actual value, succeeding 
-		/// succeeding only if both of them succeed.
-		/// </summary>
-		/// <param name="actual">The actual value</param>
-		/// <returns>True if the constraints both succeeded</returns>
-		public override bool Matches(object actual)
-        {
-            this.actual = actual;
-            return left.Matches(actual) && right.Matches(actual);
-        }
-
-		/// <summary>
-		/// Write a description for this contraint to a MessageWriter
-		/// </summary>
-		/// <param name="writer">The MessageWriter to receive the description</param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            left.WriteDescriptionTo(writer);
-            writer.WriteConnector("and");
-            right.WriteDescriptionTo(writer);
-        }
-    }
-
-	/// <summary>
-	/// OrConstraint succeeds if either member succeeds
-	/// </summary>
-    public class OrConstraint : BinaryOperation
-    {
-		/// <summary>
-		/// Create an OrConstraint from two other constraints
-		/// </summary>
-		/// <param name="left">The first constraint</param>
-		/// <param name="right">The second constraint</param>
-		public OrConstraint(Constraint left, Constraint right) : base(left, right) { }
-
-		/// <summary>
-		/// Apply the member constraints to an actual value, succeeding 
-		/// succeeding as soon as one of them succeeds.
-		/// </summary>
-		/// <param name="actual">The actual value</param>
-		/// <returns>True if either constraint succeeded</returns>
-		public override bool Matches(object actual)
-        {
-            this.actual = actual;
-            return left.Matches(actual) || right.Matches(actual);
-        }
-
-		/// <summary>
-		/// Write a description for this contraint to a MessageWriter
-		/// </summary>
-		/// <param name="writer">The MessageWriter to receive the description</param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            left.WriteDescriptionTo(writer);
-            writer.WriteConnector("or");
-            right.WriteDescriptionTo(writer);
-        }
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+	/// <summary>
+	/// BinaryOperation is the abstract base of all constraints
+	/// that combine two other constraints in some fashion.
+	/// </summary>
+    public abstract class BinaryOperation : Constraint
+    {
+		/// <summary>
+		/// The first constraint being combined
+		/// </summary>
+		protected Constraint left;
+		/// <summary>
+		/// The second constraint being combined
+		/// </summary>
+		protected Constraint right;
+
+		/// <summary>
+		/// Construct a BinaryOperation from two other constraints
+		/// </summary>
+		/// <param name="left">The first constraint</param>
+		/// <param name="right">The second constraint</param>
+        public BinaryOperation(Constraint left, Constraint right)
+        {
+            this.left = left;
+            this.right = right;
+        }
+    }
+
+    /// <summary>
+    /// AndConstraint succeeds only if both members succeed.
+    /// </summary>
+	public class AndConstraint : BinaryOperation
+    {
+		/// <summary>
+		/// Create an AndConstraint from two other constraints
+		/// </summary>
+		/// <param name="left">The first constraint</param>
+		/// <param name="right">The second constraint</param>
+		public AndConstraint(Constraint left, Constraint right) : base(left, right) { }
+
+		/// <summary>
+		/// Apply both member constraints to an actual value, succeeding 
+		/// succeeding only if both of them succeed.
+		/// </summary>
+		/// <param name="actual">The actual value</param>
+		/// <returns>True if the constraints both succeeded</returns>
+		public override bool Matches(object actual)
+        {
+            this.actual = actual;
+            return left.Matches(actual) && right.Matches(actual);
+        }
+
+		/// <summary>
+		/// Write a description for this contraint to a MessageWriter
+		/// </summary>
+		/// <param name="writer">The MessageWriter to receive the description</param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            left.WriteDescriptionTo(writer);
+            writer.WriteConnector("and");
+            right.WriteDescriptionTo(writer);
+        }
+    }
+
+	/// <summary>
+	/// OrConstraint succeeds if either member succeeds
+	/// </summary>
+    public class OrConstraint : BinaryOperation
+    {
+		/// <summary>
+		/// Create an OrConstraint from two other constraints
+		/// </summary>
+		/// <param name="left">The first constraint</param>
+		/// <param name="right">The second constraint</param>
+		public OrConstraint(Constraint left, Constraint right) : base(left, right) { }
+
+		/// <summary>
+		/// Apply the member constraints to an actual value, succeeding 
+		/// succeeding as soon as one of them succeeds.
+		/// </summary>
+		/// <param name="actual">The actual value</param>
+		/// <returns>True if either constraint succeeded</returns>
+		public override bool Matches(object actual)
+        {
+            this.actual = actual;
+            return left.Matches(actual) || right.Matches(actual);
+        }
+
+		/// <summary>
+		/// Write a description for this contraint to a MessageWriter
+		/// </summary>
+		/// <param name="writer">The MessageWriter to receive the description</param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            left.WriteDescriptionTo(writer);
+            writer.WriteConnector("or");
+            right.WriteDescriptionTo(writer);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/CollectionConstraints.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/CollectionConstraints.cs
@@ -1,318 +1,318 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Framework.Constraints
-{
-    #region CollectionConstraint
-    /// <summary>
-    /// CollectionConstraint is the abstract base class for
-    /// constraints that operate on collections.
-    /// </summary>
-    public abstract class CollectionConstraint : Constraint
-    {
-		protected static bool IsEmpty( IEnumerable enumerable )
-		{
-			ICollection collection = enumerable as ICollection;
-			if ( collection != null )
-				return collection.Count == 0;
-			else
-				return !enumerable.GetEnumerator().MoveNext();
-		}
-
-		/// <summary>
-		/// CollectionTally counts (tallies) the number of
-		/// occurences of each object in one or more enuerations.
-		/// </summary>
-		protected internal class CollectionTally
-		{
-			// Internal hash used to count occurences
-			private Hashtable hash = new Hashtable();
-
-			// We use this for any null entries found, since
-			// the key to a hash may not be null.
-			static object NULL = new object();
-
-			private int getTally(object obj)
-			{
-				if ( obj == null ) obj = NULL;
-				object val = hash[obj];
-				return val == null ? 0 : (int)val;
-			}
-
-			private void setTally(object obj, int tally)
-			{
-				if ( obj == null ) obj = NULL;
-				hash[obj] = tally;
-			}
-
-			/// <summary>
-			/// Construct a CollectionTally object from a collection
-			/// </summary>
-			/// <param name="c"></param>
-			public CollectionTally( IEnumerable c )
-			{
-				foreach( object obj in c )
-					setTally( obj, getTally( obj ) + 1 );
-			}
-
-			/// <summary>
-			/// Remove the counts for a collection from the tally,
-			/// so long as their are sufficient items to remove.
-			/// The tallies are not permitted to become negative.
-			/// </summary>
-			/// <param name="c">The collection to remove</param>
-			/// <returns>True if there were enough items to remove, otherwise false</returns>
-			public bool CanRemove( IEnumerable c )
-			{
-				foreach( object obj in c )
-				{
-					int tally = getTally(obj);
-					if( tally > 0 )
-						setTally(obj, tally - 1 );
-					else
-						return false;
-				}
-
-				return true;
-			}
-
-			/// <summary>
-			/// Test whether all the counts are equal to a given value
-			/// </summary>
-			/// <param name="count">The value to be looked for</param>
-			/// <returns>True if all counts are equal to the value, otherwise false</returns>
-			public bool AllCountsEqualTo( int count )
-			{
-				foreach( DictionaryEntry entry in hash )
-					if ( (int)entry.Value != count )
-						return false;
-
-				return true;
-			}
-
-			/// <summary>
-			/// Get the count of the number of times an object is present in the tally
-			/// </summary>
-			public int this[object obj]
-			{
-				get	{ return getTally(obj); }
-			}
-		}
-
-		/// <summary>
-		/// Test whether the constraint is satisfied by a given value
-		/// </summary>
-		/// <param name="actual">The value to be tested</param>
-		/// <returns>True for success, false for failure</returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			IEnumerable enumerable = actual as IEnumerable;
-			if ( enumerable == null )
-				throw new ArgumentException( "The actual value must be an IEnumerable", "actual" );
-		
-			return doMatch( enumerable );
-		}
-
-		/// <summary>
-		/// Protected method to be implemented by derived classes
-		/// </summary>
-		/// <param name="collection"></param>
-		/// <returns></returns>
-		protected abstract bool doMatch(IEnumerable collection);
-    }
-    #endregion
-
-	#region EmptyCollectionConstraint
-    /// <summary>
-    /// EmptyCollectionConstraint tests whether a colletion is empty. 
-    /// </summary>
-    public class EmptyCollectionConstraint : CollectionConstraint
-	{
-		/// <summary>
-		/// Check that the collection is empty
-		/// </summary>
-		/// <param name="collection"></param>
-		/// <returns></returns>
-		protected override bool doMatch(IEnumerable collection)
-		{
-			return IsEmpty( collection );
-		}
-	
-		/// <summary>
-		/// Write the constraint description to a MessageWriter
-		/// </summary>
-		/// <param name="writer"></param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			writer.Write( "<empty>" );
-		}
-	}
-	#endregion
-
-	#region UniqueItemsConstraint
-    /// <summary>
-    /// UniqueItemsConstraint tests whether all the items in a 
-    /// collection are unique.
-    /// </summary>
-    public class UniqueItemsConstraint : CollectionConstraint
-    {
-        /// <summary>
-        /// Check that all items are unique.
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        protected override bool doMatch(IEnumerable actual)
-        {
-			return new CollectionTally( actual ).AllCountsEqualTo( 1 );
-        }
-
-        /// <summary>
-        /// Write a description of this constraint to a MessageWriter
-        /// </summary>
-        /// <param name="writer"></param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.Write("all items unique");
-        }
-    }
-    #endregion
-
-    #region CollectionContainsConstraint
-    /// <summary>
-    /// CollectionContainsConstraint is used to test whether a collection
-    /// contains an expected object as a member.
-    /// </summary>
-    public class CollectionContainsConstraint : CollectionConstraint
-    {
-        private object expected;
-
-        /// <summary>
-        /// Construct a CollectionContainsConstraint
-        /// </summary>
-        /// <param name="expected"></param>
-        public CollectionContainsConstraint(object expected)
-        {
-            this.expected = expected;
-        }
-
-        /// <summary>
-        /// Test whether the expected item is contained in the collection
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        protected override bool doMatch(IEnumerable actual)
-        {
-			foreach (object obj in actual)
-				if ( Object.Equals( obj, expected ) )
-					return true;
-
-			return false;
-		}
-
-        /// <summary>
-        /// Write a descripton of the constraint to a MessageWriter
-        /// </summary>
-        /// <param name="writer"></param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate( "collection containing" );
-            writer.WriteExpectedValue(expected);
-        }
-    }
-    #endregion
-
-    #region CollectionEquivalentConstraint
-    /// <summary>
-    /// CollectionEquivalentCOnstraint is used to determine whether two
-    /// collections are equivalent.
-    /// </summary>
-    public class CollectionEquivalentConstraint : CollectionConstraint
-    {
-        private IEnumerable expected;
-
-        /// <summary>
-        /// Construct a CollectionEquivalentConstraint
-        /// </summary>
-        /// <param name="expected"></param>
-        public CollectionEquivalentConstraint(IEnumerable expected)
-        {
-            this.expected = expected;
-        }
-
-        /// <summary>
-        /// Test whether two collections are equivalent
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        protected override bool doMatch(IEnumerable actual)
-        {
-			// This is just an optimization
-			if( expected is ICollection && actual is ICollection )
-				if( ((ICollection)actual).Count != ((ICollection)expected).Count )
-					return false;
-
-			CollectionTally tally = new CollectionTally( expected );
-			return tally.CanRemove( actual ) && tally.AllCountsEqualTo( 0 );
-        }
-
-        /// <summary>
-        /// Write a description of this constraint to a MessageWriter
-        /// </summary>
-        /// <param name="writer"></param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("equivalent to");
-            writer.WriteExpectedValue(expected);
-        }
-    }
-    #endregion
-
-    #region CollectionSubsetConstraint
-    /// <summary>
-    /// CollectionSubsetConstraint is used to determine whether
-    /// one collection is a subset of another
-    /// </summary>
-    public class CollectionSubsetConstraint : CollectionConstraint
-    {
-        private IEnumerable expected;
-
-        /// <summary>
-        /// Construct a CollectionSubsetConstraint
-        /// </summary>
-        /// <param name="expected">The collection that the actual value is expected to be a subset of</param>
-        public CollectionSubsetConstraint(IEnumerable expected)
-        {
-            this.expected = expected;
-        }
-
-        /// <summary>
-        /// Test whether the actual collection is a subset of 
-        /// the expected collection provided.
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        protected override bool doMatch(IEnumerable actual)
-        {
-			return new CollectionTally( expected ).CanRemove( actual );
-		}
-        
-        /// <summary>
-        /// Write a description of this constraint to a MessageWriter
-        /// </summary>
-        /// <param name="writer"></param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate( "subset of" );
-            writer.WriteExpectedValue(expected);
-        }
-    }
-    #endregion
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+    #region CollectionConstraint
+    /// <summary>
+    /// CollectionConstraint is the abstract base class for
+    /// constraints that operate on collections.
+    /// </summary>
+    public abstract class CollectionConstraint : Constraint
+    {
+		protected static bool IsEmpty( IEnumerable enumerable )
+		{
+			ICollection collection = enumerable as ICollection;
+			if ( collection != null )
+				return collection.Count == 0;
+			else
+				return !enumerable.GetEnumerator().MoveNext();
+		}
+
+		/// <summary>
+		/// CollectionTally counts (tallies) the number of
+		/// occurences of each object in one or more enuerations.
+		/// </summary>
+		protected internal class CollectionTally
+		{
+			// Internal hash used to count occurences
+			private Hashtable hash = new Hashtable();
+
+			// We use this for any null entries found, since
+			// the key to a hash may not be null.
+			static object NULL = new object();
+
+			private int getTally(object obj)
+			{
+				if ( obj == null ) obj = NULL;
+				object val = hash[obj];
+				return val == null ? 0 : (int)val;
+			}
+
+			private void setTally(object obj, int tally)
+			{
+				if ( obj == null ) obj = NULL;
+				hash[obj] = tally;
+			}
+
+			/// <summary>
+			/// Construct a CollectionTally object from a collection
+			/// </summary>
+			/// <param name="c"></param>
+			public CollectionTally( IEnumerable c )
+			{
+				foreach( object obj in c )
+					setTally( obj, getTally( obj ) + 1 );
+			}
+
+			/// <summary>
+			/// Remove the counts for a collection from the tally,
+			/// so long as their are sufficient items to remove.
+			/// The tallies are not permitted to become negative.
+			/// </summary>
+			/// <param name="c">The collection to remove</param>
+			/// <returns>True if there were enough items to remove, otherwise false</returns>
+			public bool CanRemove( IEnumerable c )
+			{
+				foreach( object obj in c )
+				{
+					int tally = getTally(obj);
+					if( tally > 0 )
+						setTally(obj, tally - 1 );
+					else
+						return false;
+				}
+
+				return true;
+			}
+
+			/// <summary>
+			/// Test whether all the counts are equal to a given value
+			/// </summary>
+			/// <param name="count">The value to be looked for</param>
+			/// <returns>True if all counts are equal to the value, otherwise false</returns>
+			public bool AllCountsEqualTo( int count )
+			{
+				foreach( DictionaryEntry entry in hash )
+					if ( (int)entry.Value != count )
+						return false;
+
+				return true;
+			}
+
+			/// <summary>
+			/// Get the count of the number of times an object is present in the tally
+			/// </summary>
+			public int this[object obj]
+			{
+				get	{ return getTally(obj); }
+			}
+		}
+
+		/// <summary>
+		/// Test whether the constraint is satisfied by a given value
+		/// </summary>
+		/// <param name="actual">The value to be tested</param>
+		/// <returns>True for success, false for failure</returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			IEnumerable enumerable = actual as IEnumerable;
+			if ( enumerable == null )
+				throw new ArgumentException( "The actual value must be an IEnumerable", "actual" );
+		
+			return doMatch( enumerable );
+		}
+
+		/// <summary>
+		/// Protected method to be implemented by derived classes
+		/// </summary>
+		/// <param name="collection"></param>
+		/// <returns></returns>
+		protected abstract bool doMatch(IEnumerable collection);
+    }
+    #endregion
+
+	#region EmptyCollectionConstraint
+    /// <summary>
+    /// EmptyCollectionConstraint tests whether a colletion is empty. 
+    /// </summary>
+    public class EmptyCollectionConstraint : CollectionConstraint
+	{
+		/// <summary>
+		/// Check that the collection is empty
+		/// </summary>
+		/// <param name="collection"></param>
+		/// <returns></returns>
+		protected override bool doMatch(IEnumerable collection)
+		{
+			return IsEmpty( collection );
+		}
+	
+		/// <summary>
+		/// Write the constraint description to a MessageWriter
+		/// </summary>
+		/// <param name="writer"></param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			writer.Write( "<empty>" );
+		}
+	}
+	#endregion
+
+	#region UniqueItemsConstraint
+    /// <summary>
+    /// UniqueItemsConstraint tests whether all the items in a 
+    /// collection are unique.
+    /// </summary>
+    public class UniqueItemsConstraint : CollectionConstraint
+    {
+        /// <summary>
+        /// Check that all items are unique.
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        protected override bool doMatch(IEnumerable actual)
+        {
+			return new CollectionTally( actual ).AllCountsEqualTo( 1 );
+        }
+
+        /// <summary>
+        /// Write a description of this constraint to a MessageWriter
+        /// </summary>
+        /// <param name="writer"></param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.Write("all items unique");
+        }
+    }
+    #endregion
+
+    #region CollectionContainsConstraint
+    /// <summary>
+    /// CollectionContainsConstraint is used to test whether a collection
+    /// contains an expected object as a member.
+    /// </summary>
+    public class CollectionContainsConstraint : CollectionConstraint
+    {
+        private object expected;
+
+        /// <summary>
+        /// Construct a CollectionContainsConstraint
+        /// </summary>
+        /// <param name="expected"></param>
+        public CollectionContainsConstraint(object expected)
+        {
+            this.expected = expected;
+        }
+
+        /// <summary>
+        /// Test whether the expected item is contained in the collection
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        protected override bool doMatch(IEnumerable actual)
+        {
+			foreach (object obj in actual)
+				if ( Object.Equals( obj, expected ) )
+					return true;
+
+			return false;
+		}
+
+        /// <summary>
+        /// Write a descripton of the constraint to a MessageWriter
+        /// </summary>
+        /// <param name="writer"></param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate( "collection containing" );
+            writer.WriteExpectedValue(expected);
+        }
+    }
+    #endregion
+
+    #region CollectionEquivalentConstraint
+    /// <summary>
+    /// CollectionEquivalentCOnstraint is used to determine whether two
+    /// collections are equivalent.
+    /// </summary>
+    public class CollectionEquivalentConstraint : CollectionConstraint
+    {
+        private IEnumerable expected;
+
+        /// <summary>
+        /// Construct a CollectionEquivalentConstraint
+        /// </summary>
+        /// <param name="expected"></param>
+        public CollectionEquivalentConstraint(IEnumerable expected)
+        {
+            this.expected = expected;
+        }
+
+        /// <summary>
+        /// Test whether two collections are equivalent
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        protected override bool doMatch(IEnumerable actual)
+        {
+			// This is just an optimization
+			if( expected is ICollection && actual is ICollection )
+				if( ((ICollection)actual).Count != ((ICollection)expected).Count )
+					return false;
+
+			CollectionTally tally = new CollectionTally( expected );
+			return tally.CanRemove( actual ) && tally.AllCountsEqualTo( 0 );
+        }
+
+        /// <summary>
+        /// Write a description of this constraint to a MessageWriter
+        /// </summary>
+        /// <param name="writer"></param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("equivalent to");
+            writer.WriteExpectedValue(expected);
+        }
+    }
+    #endregion
+
+    #region CollectionSubsetConstraint
+    /// <summary>
+    /// CollectionSubsetConstraint is used to determine whether
+    /// one collection is a subset of another
+    /// </summary>
+    public class CollectionSubsetConstraint : CollectionConstraint
+    {
+        private IEnumerable expected;
+
+        /// <summary>
+        /// Construct a CollectionSubsetConstraint
+        /// </summary>
+        /// <param name="expected">The collection that the actual value is expected to be a subset of</param>
+        public CollectionSubsetConstraint(IEnumerable expected)
+        {
+            this.expected = expected;
+        }
+
+        /// <summary>
+        /// Test whether the actual collection is a subset of 
+        /// the expected collection provided.
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        protected override bool doMatch(IEnumerable actual)
+        {
+			return new CollectionTally( expected ).CanRemove( actual );
+		}
+        
+        /// <summary>
+        /// Write a description of this constraint to a MessageWriter
+        /// </summary>
+        /// <param name="writer"></param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate( "subset of" );
+            writer.WriteExpectedValue(expected);
+        }
+    }
+    #endregion
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/ComparisonConstraints.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/ComparisonConstraints.cs
@@ -1,127 +1,127 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework.Constraints
-{
-    /// <summary>
-    /// Abstract base class for constraints that compare values to
-    /// determine if one is greater than, equal to or less than
-    /// the other.
-    /// </summary>
-    public abstract class ComparisonConstraint : Constraint
-    {
-        /// <summary>
-        /// The value against which a comparison is to be made
-        /// </summary>
-        protected IComparable expected;
-        /// <summary>
-        /// If true, less than returns success
-        /// </summary>
-        protected bool ltOK = false;
-        /// <summary>
-        /// if true, equal returns success
-        /// </summary>
-        protected bool eqOK = false;
-        /// <summary>
-        /// if true, greater than returns success
-        /// </summary>
-        protected bool gtOK = false;
-        /// <summary>
-        /// The predicate used as a part of the description
-        /// </summary>
-        private string predicate;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
-        /// </summary>
-        /// <param name="value">The value against which to make a comparison.</param>
-        /// <param name="ltOK">if set to <c>true</c> less succeeds.</param>
-        /// <param name="eqOK">if set to <c>true</c> equal succeeds.</param>
-        /// <param name="gtOK">if set to <c>true</c> greater succeeds.</param>
-        /// <param name="predicate">String used in describing the constraint.</param>
-        public ComparisonConstraint(IComparable value, bool ltOK, bool eqOK, bool gtOK, string predicate)
-        {
-            this.expected = value;
-            this.ltOK = ltOK;
-            this.eqOK = eqOK;
-            this.gtOK = gtOK;
-            this.predicate = predicate;
-        }
-
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-
-			int icomp = Numerics.Compare( expected, actual );
-            return icomp < 0 && gtOK || icomp == 0 && eqOK || icomp > 0 && ltOK;
-        }
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate(predicate);
-            writer.WriteExpectedValue(expected);
-        }
-    }
-
-    /// <summary>
-    /// Tests whether a value is greater than the value supplied to its constructor
-    /// </summary>
-    public class GreaterThanConstraint : ComparisonConstraint
-    {
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:GreaterThanConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected value.</param>
-        public GreaterThanConstraint(IComparable expected) : base(expected, false, false, true, "greater than") { }
-    }
-
-    /// <summary>
-    /// Tests whether a value is greater than or equal to the value supplied to its constructor
-    /// </summary>
-    public class GreaterThanOrEqualConstraint : ComparisonConstraint
-    {
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:GreaterThanOrEqualConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected value.</param>
-        public GreaterThanOrEqualConstraint(IComparable expected) : base(expected, false, true, true, "greater than or equal to") { }
-    }
-
-    /// <summary>
-    /// Tests whether a value is less than the value supplied to its constructor
-    /// </summary>
-    public class LessThanConstraint : ComparisonConstraint
-    {
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:LessThanConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected value.</param>
-        public LessThanConstraint(IComparable expected) : base(expected, true, false, false, "less than") { }
-    }
-
-    /// <summary>
-    /// Tests whether a value is less than or equal to the value supplied to its constructor
-    /// </summary>
-    public class LessThanOrEqualConstraint : ComparisonConstraint
-    {
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:LessThanOrEqualConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected value.</param>
-        public LessThanOrEqualConstraint(IComparable expected) : base(expected, true, true, false, "less than or equal to") { }
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+    /// <summary>
+    /// Abstract base class for constraints that compare values to
+    /// determine if one is greater than, equal to or less than
+    /// the other.
+    /// </summary>
+    public abstract class ComparisonConstraint : Constraint
+    {
+        /// <summary>
+        /// The value against which a comparison is to be made
+        /// </summary>
+        protected IComparable expected;
+        /// <summary>
+        /// If true, less than returns success
+        /// </summary>
+        protected bool ltOK = false;
+        /// <summary>
+        /// if true, equal returns success
+        /// </summary>
+        protected bool eqOK = false;
+        /// <summary>
+        /// if true, greater than returns success
+        /// </summary>
+        protected bool gtOK = false;
+        /// <summary>
+        /// The predicate used as a part of the description
+        /// </summary>
+        private string predicate;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:ComparisonConstraint"/> class.
+        /// </summary>
+        /// <param name="value">The value against which to make a comparison.</param>
+        /// <param name="ltOK">if set to <c>true</c> less succeeds.</param>
+        /// <param name="eqOK">if set to <c>true</c> equal succeeds.</param>
+        /// <param name="gtOK">if set to <c>true</c> greater succeeds.</param>
+        /// <param name="predicate">String used in describing the constraint.</param>
+        public ComparisonConstraint(IComparable value, bool ltOK, bool eqOK, bool gtOK, string predicate)
+        {
+            this.expected = value;
+            this.ltOK = ltOK;
+            this.eqOK = eqOK;
+            this.gtOK = gtOK;
+            this.predicate = predicate;
+        }
+
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+
+			int icomp = Numerics.Compare( expected, actual );
+            return icomp < 0 && gtOK || icomp == 0 && eqOK || icomp > 0 && ltOK;
+        }
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate(predicate);
+            writer.WriteExpectedValue(expected);
+        }
+    }
+
+    /// <summary>
+    /// Tests whether a value is greater than the value supplied to its constructor
+    /// </summary>
+    public class GreaterThanConstraint : ComparisonConstraint
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:GreaterThanConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected value.</param>
+        public GreaterThanConstraint(IComparable expected) : base(expected, false, false, true, "greater than") { }
+    }
+
+    /// <summary>
+    /// Tests whether a value is greater than or equal to the value supplied to its constructor
+    /// </summary>
+    public class GreaterThanOrEqualConstraint : ComparisonConstraint
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:GreaterThanOrEqualConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected value.</param>
+        public GreaterThanOrEqualConstraint(IComparable expected) : base(expected, false, true, true, "greater than or equal to") { }
+    }
+
+    /// <summary>
+    /// Tests whether a value is less than the value supplied to its constructor
+    /// </summary>
+    public class LessThanConstraint : ComparisonConstraint
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:LessThanConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected value.</param>
+        public LessThanConstraint(IComparable expected) : base(expected, true, false, false, "less than") { }
+    }
+
+    /// <summary>
+    /// Tests whether a value is less than or equal to the value supplied to its constructor
+    /// </summary>
+    public class LessThanOrEqualConstraint : ComparisonConstraint
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:LessThanOrEqualConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected value.</param>
+        public LessThanOrEqualConstraint(IComparable expected) : base(expected, true, true, false, "less than or equal to") { }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/Constraint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/Constraint.cs
@@ -1,209 +1,209 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Collections;
-
-namespace NUnit.Framework.Constraints
-{
-	/// <summary>
-	/// The Constraint class is the base of all built-in or
-	/// user-defined constraints in NUnit. It provides the operator
-	/// overloads used to combine constraints.
-	/// </summary>
-    public abstract class Constraint
-    {
-        #region UnsetObject Class
-        /// <summary>
-        /// Class used to detect any derived constraints
-        /// that fail to set the actual value in their
-        /// Matches override.
-        /// </summary>
-        private class UnsetObject
-        {
-            public override string ToString()
-            {
-                return "UNSET";
-            }
-        }
-        #endregion
-
-		#region Static and Instance Fields
-        /// <summary>
-        /// Static UnsetObject used to detect derived constraints
-        /// failing to set the actual value.
-        /// </summary>
-        protected static object UNSET = new UnsetObject();
-
-		/// <summary>
-		/// If true, all string comparisons will ignore case
-		/// </summary>
-		protected bool caseInsensitive;
-
-        /// <summary>
-        /// If true, strings in error messages will be clipped
-        /// </summary>
-        protected bool clipStrings = true;
-
-		/// <summary>
-		/// If true, arrays will be treated as collections, allowing
-		/// those of different dimensions to be compared
-		/// </summary>
-		protected bool compareAsCollection;
-
-		/// <summary>
-		/// If non-zero, equality comparisons within the specified 
-		/// tolerance will succeed.
-		/// </summary>
-		protected object tolerance;
-
-        /// <summary>
-        /// IComparer object used in comparisons for some constraints.
-        /// </summary>
-        protected IComparer compareWith;
-
-		/// <summary>
-        /// The actual value being tested against a constraint
-        /// </summary>
-        protected object actual = UNSET;
-        #endregion
-
-        #region Properties
-        /// <summary>
-		/// Flag the constraint to ignore case and return self.
-		/// </summary>
-		public virtual Constraint IgnoreCase
-		{
-			get
-			{
-				caseInsensitive = true;
-				return this;
-			}
-		}
-
-        /// <summary>
-        /// Flag the constraint to suppress string clipping 
-        /// and return self.
-        /// </summary>
-        public Constraint NoClip
-        {
-            get
-            {
-                clipStrings = false;
-                return this;
-            }
-        }
-
-		/// <summary>
-		/// Flag the constraint to compare arrays as collections
-		/// and return self.
-		/// </summary>
-		public Constraint AsCollection
-		{
-			get
-			{
-				compareAsCollection = true;
-				return this;
-			}
-		}
-
-        /// <summary>
-        /// Flag the constraint to use a tolerance when determining equality.
-        /// Currently only used for doubles and floats.
-        /// </summary>
-        /// <param name="tolerance">Tolerance to be used</param>
-        /// <returns>Self.</returns>
-        public Constraint Within(object tolerance)
-		{
-			this.tolerance = tolerance;
-			return this;
-		}
-
-        /// <summary>
-        /// Flag the constraint to use the supplied IComparer object.
-        /// </summary>
-        /// <param name="comparer">The IComparer object to use.</param>
-        /// <returns>Self.</returns>
-        public Constraint Comparer(IComparer comparer)
-        {
-            this.compareWith = comparer;
-            return this;
-        }
-		#endregion
-
-		#region Public Methods
-        /// <summary>
-        /// Write the failure message to the MessageWriter provided
-        /// as an argument. The default implementation simply passes
-        /// the constraint and the actual value to the writer, which
-        /// then displays the constraint description and the value.
-        /// 
-        /// Constraints that need to provide additional details,
-        /// such as where the error occured can override this.
-        /// </summary>
-        /// <param name="writer">The MessageWriter on which to display the message</param>
-        public virtual void WriteMessageTo(MessageWriter writer)
-        {
-            writer.DisplayDifferences(this);
-        }
-
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-        public abstract bool Matches(object actual);
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public abstract void WriteDescriptionTo(MessageWriter writer);
-
-		/// <summary>
-		/// Write the actual value for a failing constraint test to a
-		/// MessageWriter. The default implementation simply writes
-		/// the raw value of actual, leaving it to the writer to
-		/// perform any formatting.
-		/// </summary>
-		/// <param name="writer">The writer on which the actual value is displayed</param>
-		public virtual void WriteActualValueTo(MessageWriter writer)
-		{
-			writer.WriteActualValue( actual );
-		}
-		#endregion
-
-        #region Operator Overloads
-        /// <summary>
-        /// This operator creates a constraint that is satisfied only if both 
-        /// argument constraints are satisfied.
-        /// </summary>
-        public static Constraint operator &(Constraint left, Constraint right)
-        {
-            return new AndConstraint(left, right);
-        }
-
-        /// <summary>
-        /// This operator creates a constraint that is satisfied if either 
-        /// of the argument constraints is satisfied.
-        /// </summary>
-        public static Constraint operator |(Constraint left, Constraint right)
-        {
-            return new OrConstraint(left, right);
-        }
-
-        /// <summary>
-        /// This operator creates a constraint that is satisfied if the 
-        /// argument constraint is not satisfied.
-        /// </summary>
-        public static Constraint operator !(Constraint m)
-        {
-            return new NotConstraint(m == null ? new EqualConstraint(null) : m);
-        }
-        #endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+	/// <summary>
+	/// The Constraint class is the base of all built-in or
+	/// user-defined constraints in NUnit. It provides the operator
+	/// overloads used to combine constraints.
+	/// </summary>
+    public abstract class Constraint
+    {
+        #region UnsetObject Class
+        /// <summary>
+        /// Class used to detect any derived constraints
+        /// that fail to set the actual value in their
+        /// Matches override.
+        /// </summary>
+        private class UnsetObject
+        {
+            public override string ToString()
+            {
+                return "UNSET";
+            }
+        }
+        #endregion
+
+		#region Static and Instance Fields
+        /// <summary>
+        /// Static UnsetObject used to detect derived constraints
+        /// failing to set the actual value.
+        /// </summary>
+        protected static object UNSET = new UnsetObject();
+
+		/// <summary>
+		/// If true, all string comparisons will ignore case
+		/// </summary>
+		protected bool caseInsensitive;
+
+        /// <summary>
+        /// If true, strings in error messages will be clipped
+        /// </summary>
+        protected bool clipStrings = true;
+
+		/// <summary>
+		/// If true, arrays will be treated as collections, allowing
+		/// those of different dimensions to be compared
+		/// </summary>
+		protected bool compareAsCollection;
+
+		/// <summary>
+		/// If non-zero, equality comparisons within the specified 
+		/// tolerance will succeed.
+		/// </summary>
+		protected object tolerance;
+
+        /// <summary>
+        /// IComparer object used in comparisons for some constraints.
+        /// </summary>
+        protected IComparer compareWith;
+
+		/// <summary>
+        /// The actual value being tested against a constraint
+        /// </summary>
+        protected object actual = UNSET;
+        #endregion
+
+        #region Properties
+        /// <summary>
+		/// Flag the constraint to ignore case and return self.
+		/// </summary>
+		public virtual Constraint IgnoreCase
+		{
+			get
+			{
+				caseInsensitive = true;
+				return this;
+			}
+		}
+
+        /// <summary>
+        /// Flag the constraint to suppress string clipping 
+        /// and return self.
+        /// </summary>
+        public Constraint NoClip
+        {
+            get
+            {
+                clipStrings = false;
+                return this;
+            }
+        }
+
+		/// <summary>
+		/// Flag the constraint to compare arrays as collections
+		/// and return self.
+		/// </summary>
+		public Constraint AsCollection
+		{
+			get
+			{
+				compareAsCollection = true;
+				return this;
+			}
+		}
+
+        /// <summary>
+        /// Flag the constraint to use a tolerance when determining equality.
+        /// Currently only used for doubles and floats.
+        /// </summary>
+        /// <param name="tolerance">Tolerance to be used</param>
+        /// <returns>Self.</returns>
+        public Constraint Within(object tolerance)
+		{
+			this.tolerance = tolerance;
+			return this;
+		}
+
+        /// <summary>
+        /// Flag the constraint to use the supplied IComparer object.
+        /// </summary>
+        /// <param name="comparer">The IComparer object to use.</param>
+        /// <returns>Self.</returns>
+        public Constraint Comparer(IComparer comparer)
+        {
+            this.compareWith = comparer;
+            return this;
+        }
+		#endregion
+
+		#region Public Methods
+        /// <summary>
+        /// Write the failure message to the MessageWriter provided
+        /// as an argument. The default implementation simply passes
+        /// the constraint and the actual value to the writer, which
+        /// then displays the constraint description and the value.
+        /// 
+        /// Constraints that need to provide additional details,
+        /// such as where the error occured can override this.
+        /// </summary>
+        /// <param name="writer">The MessageWriter on which to display the message</param>
+        public virtual void WriteMessageTo(MessageWriter writer)
+        {
+            writer.DisplayDifferences(this);
+        }
+
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+        public abstract bool Matches(object actual);
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public abstract void WriteDescriptionTo(MessageWriter writer);
+
+		/// <summary>
+		/// Write the actual value for a failing constraint test to a
+		/// MessageWriter. The default implementation simply writes
+		/// the raw value of actual, leaving it to the writer to
+		/// perform any formatting.
+		/// </summary>
+		/// <param name="writer">The writer on which the actual value is displayed</param>
+		public virtual void WriteActualValueTo(MessageWriter writer)
+		{
+			writer.WriteActualValue( actual );
+		}
+		#endregion
+
+        #region Operator Overloads
+        /// <summary>
+        /// This operator creates a constraint that is satisfied only if both 
+        /// argument constraints are satisfied.
+        /// </summary>
+        public static Constraint operator &(Constraint left, Constraint right)
+        {
+            return new AndConstraint(left, right);
+        }
+
+        /// <summary>
+        /// This operator creates a constraint that is satisfied if either 
+        /// of the argument constraints is satisfied.
+        /// </summary>
+        public static Constraint operator |(Constraint left, Constraint right)
+        {
+            return new OrConstraint(left, right);
+        }
+
+        /// <summary>
+        /// This operator creates a constraint that is satisfied if the 
+        /// argument constraint is not satisfied.
+        /// </summary>
+        public static Constraint operator !(Constraint m)
+        {
+            return new NotConstraint(m == null ? new EqualConstraint(null) : m);
+        }
+        #endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/ConstraintBuilder.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/ConstraintBuilder.cs
@@ -1,436 +1,436 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Framework.Constraints
-{
-    /// <summary>
-    /// ConstraintBuilder is used to resolve the Not and All properties,
-    /// which serve as prefix operators for constraints. With the addition
-    /// of an operand stack, And and Or could be supported, but we have
-    /// left them out in favor of a simpler, more type-safe implementation.
-    /// Use the &amp; and | operator overloads to combine constraints.
-    /// </summary>
-    public class ConstraintBuilder
-    {
-		private enum Op
-		{
-			Not,
-			All,
-			Some,
-			None,
-			Prop,
-		}
-
-		Stack ops = new Stack();
-
-		Stack opnds = new Stack();
-
-		/// <summary>
-		/// Implicitly convert ConstraintBuilder to an actual Constraint
-        /// at the point where the syntax demands it.
-		/// </summary>
-		/// <param name="builder"></param>
-		/// <returns></returns>
-        public static implicit operator Constraint( ConstraintBuilder builder )
-		{
-			return builder.Resolve();
-		}
-
-        #region Constraints Without Arguments
-        /// <summary>
-        /// Resolves the chain of constraints using
-        /// EqualConstraint(null) as base.
-        /// </summary>
-        public Constraint Null
-        {
-            get { return Resolve(new EqualConstraint(null)); }
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using
-        /// EqualConstraint(true) as base.
-        /// </summary>
-        public Constraint True
-        {
-            get { return Resolve(new EqualConstraint(true)); }
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using
-        /// EqualConstraint(false) as base.
-        /// </summary>
-        public Constraint False
-        {
-            get { return Resolve(new EqualConstraint(false)); }
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using
-        /// Is.NaN as base.
-        /// </summary>
-        public Constraint NaN
-        {
-            get { return Resolve(new EqualConstraint(double.NaN)); }
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using
-        /// Is.Empty as base.
-        /// </summary>
-        public Constraint Empty
-        {
-            get { return Resolve(new EmptyConstraint()); }
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using
-        /// Is.Unique as base.
-        /// </summary>
-        public Constraint Unique
-        {
-            get { return Resolve(new UniqueItemsConstraint()); }
-        }
-        #endregion
-
-        #region Constraints with an expected value
-
-        #region Equality and Identity
-        /// <summary>
-        /// Resolves the chain of constraints using an
-        /// EqualConstraint as base.
-        /// </summary>
-        public Constraint EqualTo(object expected)
-        {
-            return Resolve(new EqualConstraint(expected));
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// SameAsConstraint as base.
-        /// </summary>
-        public Constraint SameAs(object expected)
-        {
-            return Resolve(new SameAsConstraint(expected));
-        }
-        #endregion
-
-        #region Comparison Constraints
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// LessThanConstraint as base.
-        /// </summary>
-        public Constraint LessThan(IComparable expected)
-        {
-            return Resolve(new LessThanConstraint(expected));
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// GreaterThanConstraint as base.
-        /// </summary>
-        public Constraint GreaterThan(IComparable expected)
-        {
-            return Resolve(new GreaterThanConstraint(expected));
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// LessThanOrEqualConstraint as base.
-        /// </summary>
-        public Constraint LessThanOrEqualTo(IComparable expected)
-        {
-            return Resolve(new LessThanOrEqualConstraint(expected));
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// LessThanOrEqualConstraint as base.
-        /// </summary>
-        public Constraint AtMost(IComparable expected)
-        {
-            return Resolve(new LessThanOrEqualConstraint(expected));
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// GreaterThanOrEqualConstraint as base.
-        /// </summary>
-        public Constraint GreaterThanOrEqualTo(IComparable expected)
-        {
-            return Resolve(new GreaterThanOrEqualConstraint(expected));
-        }
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// GreaterThanOrEqualConstraint as base.
-        /// </summary>
-        public Constraint AtLeast(IComparable expected)
-        {
-            return Resolve(new GreaterThanOrEqualConstraint(expected));
-        }
-        #endregion
-
-        #region Type Constraints
-        /// <summary>
-        /// Resolves the chain of constraints using an
-        /// ExactTypeConstraint as base.
-        /// </summary>
-        public Constraint TypeOf(Type expectedType)
-        {
-            return Resolve(new ExactTypeConstraint(expectedType));
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using an
-        /// InstanceOfTypeConstraint as base.
-        /// </summary>
-        public Constraint InstanceOfType(Type expectedType)
-        {
-            return Resolve(new InstanceOfTypeConstraint(expectedType));
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using an
-        /// AssignableFromConstraint as base.
-        /// </summary>
-        public Constraint AssignableFrom(Type expectedType)
-        {
-            return Resolve(new AssignableFromConstraint(expectedType));
-        }
-        #endregion
-
-		#region Containing Constraint
-		/// <summary>
-		/// Resolves the chain of constraints using a
-		/// ContainsConstraint as base. This constraint
-		/// will, in turn, make use of the appropriate
-		/// second-level constraint, depending on the
-		/// type of the actual argument.
-		/// </summary>
-		public Constraint Contains(object expected)
-		{
-			return Resolve( new ContainsConstraint(expected) );
-		}
-
-		/// <summary>
-		/// Resolves the chain of constraints using a 
-		/// CollectionContainsConstraint as base.
-        /// </summary>
-		/// <param name="expected">The expected object</param>
-		public Constraint Member( object expected )
-		{
-			return Resolve( new CollectionContainsConstraint( expected ) );
-		}
-		#endregion
-
-		#region String Constraints
-		/// <summary>
-		/// Resolves the chain of constraints using a
-		/// StartsWithConstraint as base.
-		/// </summary>
-		public Constraint StartsWith(string substring)
-        {
-            return Resolve( new StartsWithConstraint(substring) );
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// StringEndingConstraint as base.
-        /// </summary>
-        public Constraint EndsWith(string substring)
-        {
-            return Resolve( new EndsWithConstraint(substring) );
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// StringMatchingConstraint as base.
-        /// </summary>
-        public Constraint Matches(string pattern)
-        {
-            return Resolve(new RegexConstraint(pattern));
-        }
-        #endregion
-
-        #region Collection Constraints
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// CollectionEquivalentConstraint as base.
-        /// </summary>
-        public Constraint EquivalentTo(ICollection expected)
-        {
-            return Resolve( new CollectionEquivalentConstraint(expected) );
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// CollectionContainingConstraint as base.
-        /// </summary>
-        public Constraint CollectionContaining(object expected)
-		{
-			return Resolve( new CollectionContainsConstraint(expected) );
-		}
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// CollectionSubsetConstraint as base.
-        /// </summary>
-        public Constraint SubsetOf(ICollection expected)
-        {
-            return Resolve(new CollectionSubsetConstraint(expected));
-        }
-        #endregion
-
-		#region Property Constraints
-        /// <summary>
-        /// Resolves the chain of constraints using a 
-        /// PropertyConstraint as base
-        /// </summary>
-		public Constraint Property( string name, object expected )
-		{
-			return Resolve( new PropertyConstraint( name, new EqualConstraint( expected ) ) );
-		}
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// PropertyCOnstraint on Length as base
-        /// </summary>
-        /// <param name="length"></param>
-        /// <returns></returns>
-        public Constraint Length(int length)
-        {
-            return Property("Length", length);
-        }
-
-        /// <summary>
-        /// Resolves the chain of constraints using a
-        /// PropertyCOnstraint on Length as base
-        /// </summary>
-        /// <param name="count"></param>
-        /// <returns></returns>
-        public Constraint Count(int count)
-        {
-            return Property("Count", count);
-        }
-        #endregion
-
-        #endregion
-
-        #region Prefix Operators
-		/// <summary>
-		/// Modifies the ConstraintBuilder by pushing a Not operator on the stack.
-		/// </summary>
-		public ConstraintBuilder Not
-		{
-			get
-			{
-				ops.Push(Op.Not);
-				return this;
-			}
-		}
-
-		/// <summary>
-		/// Modifies the ConstraintBuilder by pushing a Not operator on the stack.
-		/// </summary>
-		public ConstraintBuilder No
-		{
-			get
-			{
-				ops.Push(Op.Not);
-				return this;
-			}
-		}
-
-		/// <summary>
-        /// Modifies the ConstraintBuilder by pushing an All operator on the stack.
-        /// </summary>
-        public ConstraintBuilder All
-        {
-            get
-            {
-                ops.Push(Op.All);
-                return this;
-            }
-        }
-
-		/// <summary>
-		/// Modifies the ConstraintBuilder by pushing a Some operator on the stack.
-		/// </summary>
-		public ConstraintBuilder Some
-		{
-			get
-			{
-				ops.Push(Op.Some);
-				return this;
-			}
-		}
-
-		/// <summary>
-        /// Modifies the constraint builder by pushing All and Not operators on the stack
-        /// </summary>
-		public ConstraintBuilder None
-		{
-			get
-			{
-				ops.Push(Op.None);
-				return this;
-			}
-		}
-
-        /// <summary>
-        /// Modifies the ConstraintBuilder by pushing a Prop operator on the
-        /// ops stack and the name of the property on the opnds stack.
-        /// </summary>
-        /// <param name="name"></param>
-        /// <returns></returns>
-        public ConstraintBuilder Property(string name)
-		{
-			ops.Push( Op.Prop );
-			opnds.Push( name );
-			return this;
-		}
-		#endregion
-
-        #region Helper Methods
-        /// <summary>
-        /// Resolve a constraint that has been recognized by applying
-        /// any pending operators and returning the resulting Constraint.
-        /// </summary>
-        /// <returns>A constraint that incorporates all pending operators</returns>
-        private Constraint Resolve(Constraint constraint)
-        {
-            while (ops.Count > 0)
-                switch ((Op)ops.Pop())
-                {
-                    case Op.Not:
-                        constraint = new NotConstraint(constraint);
-                        break;
-                    case Op.All:
-                        constraint = new AllItemsConstraint(constraint);
-                        break;
-					case Op.Some:
-						constraint = new SomeItemsConstraint(constraint);
-						break;
-					case Op.None:
-						constraint = new NoItemConstraint(constraint);
-						break;
-					case Op.Prop:
-						constraint = new PropertyConstraint( (string)opnds.Pop(), constraint );
-						break;
-                }
-
-            return constraint;
-        }
-
-		private Constraint Resolve()
-		{
-			return Resolve(null);
-		}
-        #endregion
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+    /// <summary>
+    /// ConstraintBuilder is used to resolve the Not and All properties,
+    /// which serve as prefix operators for constraints. With the addition
+    /// of an operand stack, And and Or could be supported, but we have
+    /// left them out in favor of a simpler, more type-safe implementation.
+    /// Use the &amp; and | operator overloads to combine constraints.
+    /// </summary>
+    public class ConstraintBuilder
+    {
+		private enum Op
+		{
+			Not,
+			All,
+			Some,
+			None,
+			Prop,
+		}
+
+		Stack ops = new Stack();
+
+		Stack opnds = new Stack();
+
+		/// <summary>
+		/// Implicitly convert ConstraintBuilder to an actual Constraint
+        /// at the point where the syntax demands it.
+		/// </summary>
+		/// <param name="builder"></param>
+		/// <returns></returns>
+        public static implicit operator Constraint( ConstraintBuilder builder )
+		{
+			return builder.Resolve();
+		}
+
+        #region Constraints Without Arguments
+        /// <summary>
+        /// Resolves the chain of constraints using
+        /// EqualConstraint(null) as base.
+        /// </summary>
+        public Constraint Null
+        {
+            get { return Resolve(new EqualConstraint(null)); }
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using
+        /// EqualConstraint(true) as base.
+        /// </summary>
+        public Constraint True
+        {
+            get { return Resolve(new EqualConstraint(true)); }
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using
+        /// EqualConstraint(false) as base.
+        /// </summary>
+        public Constraint False
+        {
+            get { return Resolve(new EqualConstraint(false)); }
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using
+        /// Is.NaN as base.
+        /// </summary>
+        public Constraint NaN
+        {
+            get { return Resolve(new EqualConstraint(double.NaN)); }
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using
+        /// Is.Empty as base.
+        /// </summary>
+        public Constraint Empty
+        {
+            get { return Resolve(new EmptyConstraint()); }
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using
+        /// Is.Unique as base.
+        /// </summary>
+        public Constraint Unique
+        {
+            get { return Resolve(new UniqueItemsConstraint()); }
+        }
+        #endregion
+
+        #region Constraints with an expected value
+
+        #region Equality and Identity
+        /// <summary>
+        /// Resolves the chain of constraints using an
+        /// EqualConstraint as base.
+        /// </summary>
+        public Constraint EqualTo(object expected)
+        {
+            return Resolve(new EqualConstraint(expected));
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// SameAsConstraint as base.
+        /// </summary>
+        public Constraint SameAs(object expected)
+        {
+            return Resolve(new SameAsConstraint(expected));
+        }
+        #endregion
+
+        #region Comparison Constraints
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// LessThanConstraint as base.
+        /// </summary>
+        public Constraint LessThan(IComparable expected)
+        {
+            return Resolve(new LessThanConstraint(expected));
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// GreaterThanConstraint as base.
+        /// </summary>
+        public Constraint GreaterThan(IComparable expected)
+        {
+            return Resolve(new GreaterThanConstraint(expected));
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// LessThanOrEqualConstraint as base.
+        /// </summary>
+        public Constraint LessThanOrEqualTo(IComparable expected)
+        {
+            return Resolve(new LessThanOrEqualConstraint(expected));
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// LessThanOrEqualConstraint as base.
+        /// </summary>
+        public Constraint AtMost(IComparable expected)
+        {
+            return Resolve(new LessThanOrEqualConstraint(expected));
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// GreaterThanOrEqualConstraint as base.
+        /// </summary>
+        public Constraint GreaterThanOrEqualTo(IComparable expected)
+        {
+            return Resolve(new GreaterThanOrEqualConstraint(expected));
+        }
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// GreaterThanOrEqualConstraint as base.
+        /// </summary>
+        public Constraint AtLeast(IComparable expected)
+        {
+            return Resolve(new GreaterThanOrEqualConstraint(expected));
+        }
+        #endregion
+
+        #region Type Constraints
+        /// <summary>
+        /// Resolves the chain of constraints using an
+        /// ExactTypeConstraint as base.
+        /// </summary>
+        public Constraint TypeOf(Type expectedType)
+        {
+            return Resolve(new ExactTypeConstraint(expectedType));
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using an
+        /// InstanceOfTypeConstraint as base.
+        /// </summary>
+        public Constraint InstanceOfType(Type expectedType)
+        {
+            return Resolve(new InstanceOfTypeConstraint(expectedType));
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using an
+        /// AssignableFromConstraint as base.
+        /// </summary>
+        public Constraint AssignableFrom(Type expectedType)
+        {
+            return Resolve(new AssignableFromConstraint(expectedType));
+        }
+        #endregion
+
+		#region Containing Constraint
+		/// <summary>
+		/// Resolves the chain of constraints using a
+		/// ContainsConstraint as base. This constraint
+		/// will, in turn, make use of the appropriate
+		/// second-level constraint, depending on the
+		/// type of the actual argument.
+		/// </summary>
+		public Constraint Contains(object expected)
+		{
+			return Resolve( new ContainsConstraint(expected) );
+		}
+
+		/// <summary>
+		/// Resolves the chain of constraints using a 
+		/// CollectionContainsConstraint as base.
+        /// </summary>
+		/// <param name="expected">The expected object</param>
+		public Constraint Member( object expected )
+		{
+			return Resolve( new CollectionContainsConstraint( expected ) );
+		}
+		#endregion
+
+		#region String Constraints
+		/// <summary>
+		/// Resolves the chain of constraints using a
+		/// StartsWithConstraint as base.
+		/// </summary>
+		public Constraint StartsWith(string substring)
+        {
+            return Resolve( new StartsWithConstraint(substring) );
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// StringEndingConstraint as base.
+        /// </summary>
+        public Constraint EndsWith(string substring)
+        {
+            return Resolve( new EndsWithConstraint(substring) );
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// StringMatchingConstraint as base.
+        /// </summary>
+        public Constraint Matches(string pattern)
+        {
+            return Resolve(new RegexConstraint(pattern));
+        }
+        #endregion
+
+        #region Collection Constraints
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// CollectionEquivalentConstraint as base.
+        /// </summary>
+        public Constraint EquivalentTo(ICollection expected)
+        {
+            return Resolve( new CollectionEquivalentConstraint(expected) );
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// CollectionContainingConstraint as base.
+        /// </summary>
+        public Constraint CollectionContaining(object expected)
+		{
+			return Resolve( new CollectionContainsConstraint(expected) );
+		}
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// CollectionSubsetConstraint as base.
+        /// </summary>
+        public Constraint SubsetOf(ICollection expected)
+        {
+            return Resolve(new CollectionSubsetConstraint(expected));
+        }
+        #endregion
+
+		#region Property Constraints
+        /// <summary>
+        /// Resolves the chain of constraints using a 
+        /// PropertyConstraint as base
+        /// </summary>
+		public Constraint Property( string name, object expected )
+		{
+			return Resolve( new PropertyConstraint( name, new EqualConstraint( expected ) ) );
+		}
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// PropertyCOnstraint on Length as base
+        /// </summary>
+        /// <param name="length"></param>
+        /// <returns></returns>
+        public Constraint Length(int length)
+        {
+            return Property("Length", length);
+        }
+
+        /// <summary>
+        /// Resolves the chain of constraints using a
+        /// PropertyCOnstraint on Length as base
+        /// </summary>
+        /// <param name="count"></param>
+        /// <returns></returns>
+        public Constraint Count(int count)
+        {
+            return Property("Count", count);
+        }
+        #endregion
+
+        #endregion
+
+        #region Prefix Operators
+		/// <summary>
+		/// Modifies the ConstraintBuilder by pushing a Not operator on the stack.
+		/// </summary>
+		public ConstraintBuilder Not
+		{
+			get
+			{
+				ops.Push(Op.Not);
+				return this;
+			}
+		}
+
+		/// <summary>
+		/// Modifies the ConstraintBuilder by pushing a Not operator on the stack.
+		/// </summary>
+		public ConstraintBuilder No
+		{
+			get
+			{
+				ops.Push(Op.Not);
+				return this;
+			}
+		}
+
+		/// <summary>
+        /// Modifies the ConstraintBuilder by pushing an All operator on the stack.
+        /// </summary>
+        public ConstraintBuilder All
+        {
+            get
+            {
+                ops.Push(Op.All);
+                return this;
+            }
+        }
+
+		/// <summary>
+		/// Modifies the ConstraintBuilder by pushing a Some operator on the stack.
+		/// </summary>
+		public ConstraintBuilder Some
+		{
+			get
+			{
+				ops.Push(Op.Some);
+				return this;
+			}
+		}
+
+		/// <summary>
+        /// Modifies the constraint builder by pushing All and Not operators on the stack
+        /// </summary>
+		public ConstraintBuilder None
+		{
+			get
+			{
+				ops.Push(Op.None);
+				return this;
+			}
+		}
+
+        /// <summary>
+        /// Modifies the ConstraintBuilder by pushing a Prop operator on the
+        /// ops stack and the name of the property on the opnds stack.
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public ConstraintBuilder Property(string name)
+		{
+			ops.Push( Op.Prop );
+			opnds.Push( name );
+			return this;
+		}
+		#endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Resolve a constraint that has been recognized by applying
+        /// any pending operators and returning the resulting Constraint.
+        /// </summary>
+        /// <returns>A constraint that incorporates all pending operators</returns>
+        private Constraint Resolve(Constraint constraint)
+        {
+            while (ops.Count > 0)
+                switch ((Op)ops.Pop())
+                {
+                    case Op.Not:
+                        constraint = new NotConstraint(constraint);
+                        break;
+                    case Op.All:
+                        constraint = new AllItemsConstraint(constraint);
+                        break;
+					case Op.Some:
+						constraint = new SomeItemsConstraint(constraint);
+						break;
+					case Op.None:
+						constraint = new NoItemConstraint(constraint);
+						break;
+					case Op.Prop:
+						constraint = new PropertyConstraint( (string)opnds.Pop(), constraint );
+						break;
+                }
+
+            return constraint;
+        }
+
+		private Constraint Resolve()
+		{
+			return Resolve(null);
+		}
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/ContainsConstraint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/ContainsConstraint.cs
@@ -1,77 +1,77 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework.Constraints
-{
-	// TODO Needs tests
-	/// <summary>
-	/// ContainsConstraint tests a whether a string contains a substring
-	/// or a collection contains an object. It postpones the decision of
-	/// which test to use until the type of the actual argument is known.
-	/// This allows testing whether a string is contained in a collection
-	/// or as a substring of another string using the same syntax.
-	/// </summary>
-	public class ContainsConstraint : Constraint
-	{
-		object expected;
-		Constraint realConstraint;
-
-		private Constraint RealConstraint
-		{
-			get 
-			{
-				if ( realConstraint == null )
-				{
-					if ( actual is string )
-						this.realConstraint = new SubstringConstraint( (string)expected );
-					else
-						this.realConstraint = new CollectionContainsConstraint( expected );
-				}
-
-				return realConstraint;
-			}
-			set 
-			{ 
-				realConstraint = value; 
-			}
-		}
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:ContainsConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected.</param>
-		public ContainsConstraint( object expected )
-		{
-			this.expected = expected;
-		}
-
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			if ( this.caseInsensitive )
-				this.RealConstraint = RealConstraint.IgnoreCase;
-
-			return this.RealConstraint.Matches( actual );
-		}
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			this.RealConstraint.WriteDescriptionTo(writer);
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+	// TODO Needs tests
+	/// <summary>
+	/// ContainsConstraint tests a whether a string contains a substring
+	/// or a collection contains an object. It postpones the decision of
+	/// which test to use until the type of the actual argument is known.
+	/// This allows testing whether a string is contained in a collection
+	/// or as a substring of another string using the same syntax.
+	/// </summary>
+	public class ContainsConstraint : Constraint
+	{
+		object expected;
+		Constraint realConstraint;
+
+		private Constraint RealConstraint
+		{
+			get 
+			{
+				if ( realConstraint == null )
+				{
+					if ( actual is string )
+						this.realConstraint = new SubstringConstraint( (string)expected );
+					else
+						this.realConstraint = new CollectionContainsConstraint( expected );
+				}
+
+				return realConstraint;
+			}
+			set 
+			{ 
+				realConstraint = value; 
+			}
+		}
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:ContainsConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected.</param>
+		public ContainsConstraint( object expected )
+		{
+			this.expected = expected;
+		}
+
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			if ( this.caseInsensitive )
+				this.RealConstraint = RealConstraint.IgnoreCase;
+
+			return this.RealConstraint.Matches( actual );
+		}
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			this.RealConstraint.WriteDescriptionTo(writer);
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/EmptyConstraint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/EmptyConstraint.cs
@@ -1,51 +1,51 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Framework.Constraints
-{
-	/// <summary>
-	/// EmptyConstraint tests a whether a string or collection is empty,
-	/// postponing the decision about which test is applied until the
-	/// type of the actual argument is known.
-	/// </summary>
-	public class EmptyConstraint : Constraint
-	{
-		private Constraint RealConstraint
-		{
-			get 
-			{
-				if ( actual is string )
-					return new EmptyStringConstraint();
-				else
-					return new EmptyCollectionConstraint();
-			}
-		}
-		
-		/// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			return this.RealConstraint.Matches( actual );
-		}
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			this.RealConstraint.WriteDescriptionTo( writer );
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+	/// <summary>
+	/// EmptyConstraint tests a whether a string or collection is empty,
+	/// postponing the decision about which test is applied until the
+	/// type of the actual argument is known.
+	/// </summary>
+	public class EmptyConstraint : Constraint
+	{
+		private Constraint RealConstraint
+		{
+			get 
+			{
+				if ( actual is string )
+					return new EmptyStringConstraint();
+				else
+					return new EmptyCollectionConstraint();
+			}
+		}
+		
+		/// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			return this.RealConstraint.Matches( actual );
+		}
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			this.RealConstraint.WriteDescriptionTo( writer );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/EqualConstraint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/EqualConstraint.cs
@@ -1,393 +1,393 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Collections;
-
-namespace NUnit.Framework.Constraints
-{
-    /// <summary>
-    /// EqualConstraint is able to compare an actual value with the
-    /// expected value provided in its constructor.
-    /// </summary>
-    public class EqualConstraint : Constraint
-    {
-        private static IDictionary constraintHelpers = new Hashtable();
-
-        private readonly object expected;
-
-        private ArrayList failurePoints;
-
-		private static readonly string StringsDiffer_1 =
-			"String lengths are both {0}. Strings differ at index {1}.";
-		private static readonly string StringsDiffer_2 =
-			"Expected string length {0} but was {1}. Strings differ at index {2}.";
-		private static readonly string StreamsDiffer_1 =
-			"Stream lengths are both {0}. Streams differ at offset {1}.";
-		private static readonly string StreamsDiffer_2 =
-			"Expected Stream length {0} but was {1}.";// Streams differ at offset {2}.";
-		private static readonly string CollectionType_1 =
-			"Expected and actual are both {0}";
-		private static readonly string CollectionType_2 =
-			"Expected is {0}, actual is {1}";
-		private static readonly string ValuesDiffer_1 =
-			"Values differ at index {0}";
-		private static readonly string ValuesDiffer_2 =
-			"Values differ at expected index {0}, actual index {1}";
-
-		private static readonly int BUFFER_SIZE = 4096;
-		
-        #region Constructor
-        /// <summary>
-        /// Initializes a new instance of the <see cref="EqualConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected value.</param>
-        public EqualConstraint(object expected)
-        {
-            this.expected = expected;
-        }
-        #endregion
-
-        #region Public Methods
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-            this.failurePoints = new ArrayList();
-
-            return ObjectsEqual( expected, actual );
-        }
-
-        /// <summary>
-        /// Write a failure message. Overridden to provide custom 
-        /// failure messages for EqualConstraint.
-        /// </summary>
-        /// <param name="writer">The MessageWriter to write to</param>
-        public override void WriteMessageTo(MessageWriter writer)
-        {
-            DisplayDifferences(writer, expected, actual, 0);
-        }
-
-
-        /// <summary>
-        /// Write description of this constraint
-        /// </summary>
-        /// <param name="writer">The MessageWriter to write to</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-			writer.WriteExpectedValue( expected );
-
-			if ( tolerance != null )
-			{
-				writer.WriteConnector("+/-");
-				writer.WriteExpectedValue(tolerance);
-			}
-
-			if ( this.caseInsensitive )
-				writer.WriteModifier("ignoring case");
-        }
-
-        private void DisplayDifferences(MessageWriter writer, object expected, object actual, int depth)
-        {
-            if (expected is string && actual is string)
-                DisplayStringDifferences(writer, (string)expected, (string)actual);
-            else if (expected is ICollection && actual is ICollection)
-                DisplayCollectionDifferences(writer, (ICollection)expected, (ICollection)actual, depth);
-			else if (expected is Stream && actual is Stream)
-				DisplayStreamDifferences(writer, (Stream)expected, (Stream)actual, depth);
-			else if ( tolerance != null )
-				writer.DisplayDifferences( expected, actual, tolerance );
-            else
-                writer.DisplayDifferences(expected, actual);
-        }
-        #endregion
-
-        #region ObjectsEqual
-        private bool ObjectsEqual(object expected, object actual)
-        {
-            if (expected == null && actual == null)
-                return true;
-
-            if (expected == null || actual == null)
-                return false;
-
-            Type expectedType = expected.GetType();
-            Type actualType = actual.GetType();
-
-            if (expectedType.IsArray && actualType.IsArray && !compareAsCollection)
-                return ArraysEqual((Array)expected, (Array)actual);
-
-            if (expected is ICollection && actual is ICollection)
-                return CollectionsEqual((ICollection)expected, (ICollection)actual);
-
-			if (expected is Stream && actual is Stream)
-				return StreamsEqual((Stream)expected, (Stream)actual);
-
-            if (compareWith != null)
-				return compareWith.Compare( expected, actual ) == 0;
-
-            if (expected is DirectoryInfo && actual is DirectoryInfo)
-                return DirectoriesEqual((DirectoryInfo)expected, (DirectoryInfo)actual);
-
-            if (Numerics.IsNumericType(expected) && Numerics.IsNumericType(actual))
-            {
-                return Numerics.AreEqual(expected, actual, ref tolerance);
-            }
-
-            if (expected is string && actual is string)
-            {
-				return StringsEqual( (string) expected, (string)actual );
-            }
-
-			if (expected is DateTime && actual is DateTime && tolerance is TimeSpan)
-			{
-				return ((DateTime)expected - (DateTime)actual).Duration() <= (TimeSpan)tolerance;
-			}
-
-            return expected.Equals(actual);
-        }
-
-        /// <summary>
-        /// Helper method to compare two arrays
-        /// </summary>
-        protected virtual bool ArraysEqual(Array expected, Array actual)
-        {
-            int rank = expected.Rank;
-
-            if (rank != actual.Rank)
-                return false;
-
-            for (int r = 1; r < rank; r++)
-                if (expected.GetLength(r) != actual.GetLength(r))
-                    return false;
-
-            return CollectionsEqual((ICollection)expected, (ICollection)actual);
-        }
-
-        private bool CollectionsEqual(ICollection expected, ICollection actual)
-        {
-            IEnumerator expectedEnum = expected.GetEnumerator();
-            IEnumerator actualEnum = actual.GetEnumerator();
-
-            int count;
-            for (count = 0; expectedEnum.MoveNext() && actualEnum.MoveNext(); count++)
-            {
-                if (!ObjectsEqual(expectedEnum.Current, actualEnum.Current))
-                    break;
-            }
-
-            if (count == expected.Count && count == actual.Count)
-                return true;
-
-            failurePoints.Insert(0, count);
-            return false;
-        }
-
-		private bool StreamsEqual( Stream expected, Stream actual )
-		{
-			if (expected.Length != actual.Length) return false;
-
-			byte[] bufferExpected = new byte[BUFFER_SIZE];
-			byte[] bufferActual = new byte[BUFFER_SIZE];
-
-			BinaryReader binaryReaderExpected = new BinaryReader(expected);
-			BinaryReader binaryReaderActual = new BinaryReader(actual);
-
-			binaryReaderExpected.BaseStream.Seek(0, SeekOrigin.Begin);
-			binaryReaderActual.BaseStream.Seek(0, SeekOrigin.Begin);
-
-			for(long readByte = 0; readByte < expected.Length; readByte += BUFFER_SIZE )
-			{
-				binaryReaderExpected.Read(bufferExpected, 0, BUFFER_SIZE);
-				binaryReaderActual.Read(bufferActual, 0, BUFFER_SIZE);
-
-				for (int count=0; count < BUFFER_SIZE; ++count) 
-				{
-					if (bufferExpected[count] != bufferActual[count]) 
-					{
-						failurePoints.Insert( 0, readByte + count );
-						//FailureMessage.WriteLine("\tIndex : {0}", readByte + count);
-						return false;
-					}
-				}
-			}
-
-			return true;
-		}
-
-		private bool StringsEqual( string expected, string actual )
-		{
-			string s1 = caseInsensitive ? expected.ToLower() : expected;
-			string s2 = caseInsensitive ? actual.ToLower() : actual;
-
-			return s1.Equals( s2 );
-		}
-
-        /// <summary>
-        /// Method to compare two DirectoryInfo objects
-        /// </summary>
-        /// <param name="expected">first directory to compare</param>
-        /// <param name="actual">second directory to compare</param>
-        /// <returns>true if equivalent, false if not</returns>
-        private bool DirectoriesEqual(DirectoryInfo expected, DirectoryInfo actual)
-        {
-            return expected.Attributes == actual.Attributes
-                && expected.CreationTime == actual.CreationTime
-                && expected.FullName == actual.FullName
-                && expected.LastAccessTime == actual.LastAccessTime;
-        }
-        #endregion
-
-        #region DisplayStringDifferences
-        private void DisplayStringDifferences(MessageWriter writer, string expected, string actual)
-        {
-            int mismatch = MsgUtils.FindMismatchPosition(expected, actual, 0, this.caseInsensitive);
-
-            if (expected.Length == actual.Length)
-				writer.WriteMessageLine(StringsDiffer_1, expected.Length, mismatch);
-			else
-				writer.WriteMessageLine(StringsDiffer_2, expected.Length, actual.Length, mismatch);
-
-            writer.DisplayStringDifferences(expected, actual, mismatch, caseInsensitive, clipStrings);
-        }
-        #endregion
-
-		#region DisplayStreamDifferences
-		private void DisplayStreamDifferences(MessageWriter writer, Stream expected, Stream actual, int depth)
-		{
-			if ( expected.Length == actual.Length )
-			{
-				long offset = (long)failurePoints[depth];
-				writer.WriteMessageLine(StreamsDiffer_1, expected.Length, offset);
-			}
-			else
-				writer.WriteMessageLine(StreamsDiffer_2, expected.Length, actual.Length);
-		}
-		#endregion
-
-        #region DisplayCollectionDifferences
-        /// <summary>
-        /// Display the failure information for two collections that did not match.
-        /// </summary>
-		/// <param name="writer">The MessageWriter on which to display</param>
-		/// <param name="expected">The expected collection.</param>
-        /// <param name="actual">The actual collection</param>
-        /// <param name="depth">The depth of this failure in a set of nested collections</param>
-        private void DisplayCollectionDifferences(MessageWriter writer, ICollection expected, ICollection actual, int depth)
-        {
-            int failurePoint = failurePoints.Count > depth ? (int)failurePoints[depth] : -1;
-
-            DisplayCollectionTypesAndSizes(writer, expected, actual, depth);
-
-            if (failurePoint >= 0)
-            {
-                DisplayFailurePoint(writer, expected, actual, failurePoint, depth);
-				if (failurePoint < expected.Count && failurePoint < actual.Count)
-					DisplayDifferences(
-						writer,
-						GetValueFromCollection(expected, failurePoint),
-						GetValueFromCollection(actual, failurePoint),
-						++depth);
-				else if (expected.Count < actual.Count)
-				{
-					writer.Write( "  Extra:    " );
-					writer.WriteCollectionElements( actual, failurePoint, 3 );
-				}
-				else
-				{
-					writer.Write( "  Missing:  " );
-					writer.WriteCollectionElements( expected, failurePoint, 3 );
-				}
-            }
-        }
-
-        /// <summary>
-        /// Displays a single line showing the types and sizes of the expected
-        /// and actual collections or arrays. If both are identical, the value is 
-        /// only shown once.
-        /// </summary>
-		/// <param name="writer">The MessageWriter on which to display</param>
-		/// <param name="expected">The expected collection or array</param>
-        /// <param name="actual">The actual collection or array</param>
-		/// <param name="indent">The indentation level for the message line</param>
-		private void DisplayCollectionTypesAndSizes(MessageWriter writer, ICollection expected, ICollection actual, int indent)
-        {
-            string sExpected = MsgUtils.GetTypeRepresentation(expected);
-            if (!(expected is Array))
-                sExpected += string.Format(" with {0} elements", expected.Count);
-
-            string sActual = MsgUtils.GetTypeRepresentation(actual);
-            if (!(actual is Array))
-                sActual += string.Format(" with {0} elements", actual.Count);
-
-            if (sExpected == sActual)
-                writer.WriteMessageLine(indent, CollectionType_1, sExpected);
-            else
-                writer.WriteMessageLine(indent, CollectionType_2, sExpected, sActual);
-        }
-
-        /// <summary>
-        /// Displays a single line showing the point in the expected and actual
-        /// arrays at which the comparison failed. If the arrays have different
-        /// structures or dimensions, both values are shown.
-        /// </summary>
-		/// <param name="writer">The MessageWriter on which to display</param>
-		/// <param name="expected">The expected array</param>
-        /// <param name="actual">The actual array</param>
-        /// <param name="failurePoint">Index of the failure point in the underlying collections</param>
-		/// <param name="indent">The indentation level for the message line</param>
-		private void DisplayFailurePoint(MessageWriter writer, ICollection expected, ICollection actual, int failurePoint, int indent)
-        {
-            Array expectedArray = expected as Array;
-            Array actualArray = actual as Array;
-
-            int expectedRank = expectedArray != null ? expectedArray.Rank : 1;
-            int actualRank = actualArray != null ? actualArray.Rank : 1;
-
-            bool useOneIndex = expectedRank == actualRank;
-
-            if (expectedArray != null && actualArray != null)
-                for (int r = 1; r < expectedRank && useOneIndex; r++)
-                    if (expectedArray.GetLength(r) != actualArray.GetLength(r))
-                        useOneIndex = false;
-
-            int[] expectedIndices = MsgUtils.GetArrayIndicesFromCollectionIndex(expected, failurePoint);
-            if (useOneIndex)
-            {
-                writer.WriteMessageLine(indent, ValuesDiffer_1, MsgUtils.GetArrayIndicesAsString(expectedIndices));
-            }
-            else
-            {
-                int[] actualIndices = MsgUtils.GetArrayIndicesFromCollectionIndex(actual, failurePoint);
-                writer.WriteMessageLine(indent, ValuesDiffer_2,
-                    MsgUtils.GetArrayIndicesAsString(expectedIndices), MsgUtils.GetArrayIndicesAsString(actualIndices));
-            }
-        }
-
-        private static object GetValueFromCollection(ICollection collection, int index)
-        {
-            Array array = collection as Array;
-
-            if (array != null && array.Rank > 1)
-                return array.GetValue(MsgUtils.GetArrayIndicesFromCollectionIndex(array, index));
-
-            if (collection is IList)
-                return ((IList)collection)[index];
-
-            foreach (object obj in collection)
-                if (--index < 0)
-                    return obj;
-
-            return null;
-        }
-        #endregion
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+    /// <summary>
+    /// EqualConstraint is able to compare an actual value with the
+    /// expected value provided in its constructor.
+    /// </summary>
+    public class EqualConstraint : Constraint
+    {
+        private static IDictionary constraintHelpers = new Hashtable();
+
+        private readonly object expected;
+
+        private ArrayList failurePoints;
+
+		private static readonly string StringsDiffer_1 =
+			"String lengths are both {0}. Strings differ at index {1}.";
+		private static readonly string StringsDiffer_2 =
+			"Expected string length {0} but was {1}. Strings differ at index {2}.";
+		private static readonly string StreamsDiffer_1 =
+			"Stream lengths are both {0}. Streams differ at offset {1}.";
+		private static readonly string StreamsDiffer_2 =
+			"Expected Stream length {0} but was {1}.";// Streams differ at offset {2}.";
+		private static readonly string CollectionType_1 =
+			"Expected and actual are both {0}";
+		private static readonly string CollectionType_2 =
+			"Expected is {0}, actual is {1}";
+		private static readonly string ValuesDiffer_1 =
+			"Values differ at index {0}";
+		private static readonly string ValuesDiffer_2 =
+			"Values differ at expected index {0}, actual index {1}";
+
+		private static readonly int BUFFER_SIZE = 4096;
+		
+        #region Constructor
+        /// <summary>
+        /// Initializes a new instance of the <see cref="EqualConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected value.</param>
+        public EqualConstraint(object expected)
+        {
+            this.expected = expected;
+        }
+        #endregion
+
+        #region Public Methods
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+            this.failurePoints = new ArrayList();
+
+            return ObjectsEqual( expected, actual );
+        }
+
+        /// <summary>
+        /// Write a failure message. Overridden to provide custom 
+        /// failure messages for EqualConstraint.
+        /// </summary>
+        /// <param name="writer">The MessageWriter to write to</param>
+        public override void WriteMessageTo(MessageWriter writer)
+        {
+            DisplayDifferences(writer, expected, actual, 0);
+        }
+
+
+        /// <summary>
+        /// Write description of this constraint
+        /// </summary>
+        /// <param name="writer">The MessageWriter to write to</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+			writer.WriteExpectedValue( expected );
+
+			if ( tolerance != null )
+			{
+				writer.WriteConnector("+/-");
+				writer.WriteExpectedValue(tolerance);
+			}
+
+			if ( this.caseInsensitive )
+				writer.WriteModifier("ignoring case");
+        }
+
+        private void DisplayDifferences(MessageWriter writer, object expected, object actual, int depth)
+        {
+            if (expected is string && actual is string)
+                DisplayStringDifferences(writer, (string)expected, (string)actual);
+            else if (expected is ICollection && actual is ICollection)
+                DisplayCollectionDifferences(writer, (ICollection)expected, (ICollection)actual, depth);
+			else if (expected is Stream && actual is Stream)
+				DisplayStreamDifferences(writer, (Stream)expected, (Stream)actual, depth);
+			else if ( tolerance != null )
+				writer.DisplayDifferences( expected, actual, tolerance );
+            else
+                writer.DisplayDifferences(expected, actual);
+        }
+        #endregion
+
+        #region ObjectsEqual
+        private bool ObjectsEqual(object expected, object actual)
+        {
+            if (expected == null && actual == null)
+                return true;
+
+            if (expected == null || actual == null)
+                return false;
+
+            Type expectedType = expected.GetType();
+            Type actualType = actual.GetType();
+
+            if (expectedType.IsArray && actualType.IsArray && !compareAsCollection)
+                return ArraysEqual((Array)expected, (Array)actual);
+
+            if (expected is ICollection && actual is ICollection)
+                return CollectionsEqual((ICollection)expected, (ICollection)actual);
+
+			if (expected is Stream && actual is Stream)
+				return StreamsEqual((Stream)expected, (Stream)actual);
+
+            if (compareWith != null)
+				return compareWith.Compare( expected, actual ) == 0;
+
+            if (expected is DirectoryInfo && actual is DirectoryInfo)
+                return DirectoriesEqual((DirectoryInfo)expected, (DirectoryInfo)actual);
+
+            if (Numerics.IsNumericType(expected) && Numerics.IsNumericType(actual))
+            {
+                return Numerics.AreEqual(expected, actual, ref tolerance);
+            }
+
+            if (expected is string && actual is string)
+            {
+				return StringsEqual( (string) expected, (string)actual );
+            }
+
+			if (expected is DateTime && actual is DateTime && tolerance is TimeSpan)
+			{
+				return ((DateTime)expected - (DateTime)actual).Duration() <= (TimeSpan)tolerance;
+			}
+
+            return expected.Equals(actual);
+        }
+
+        /// <summary>
+        /// Helper method to compare two arrays
+        /// </summary>
+        protected virtual bool ArraysEqual(Array expected, Array actual)
+        {
+            int rank = expected.Rank;
+
+            if (rank != actual.Rank)
+                return false;
+
+            for (int r = 1; r < rank; r++)
+                if (expected.GetLength(r) != actual.GetLength(r))
+                    return false;
+
+            return CollectionsEqual((ICollection)expected, (ICollection)actual);
+        }
+
+        private bool CollectionsEqual(ICollection expected, ICollection actual)
+        {
+            IEnumerator expectedEnum = expected.GetEnumerator();
+            IEnumerator actualEnum = actual.GetEnumerator();
+
+            int count;
+            for (count = 0; expectedEnum.MoveNext() && actualEnum.MoveNext(); count++)
+            {
+                if (!ObjectsEqual(expectedEnum.Current, actualEnum.Current))
+                    break;
+            }
+
+            if (count == expected.Count && count == actual.Count)
+                return true;
+
+            failurePoints.Insert(0, count);
+            return false;
+        }
+
+		private bool StreamsEqual( Stream expected, Stream actual )
+		{
+			if (expected.Length != actual.Length) return false;
+
+			byte[] bufferExpected = new byte[BUFFER_SIZE];
+			byte[] bufferActual = new byte[BUFFER_SIZE];
+
+			BinaryReader binaryReaderExpected = new BinaryReader(expected);
+			BinaryReader binaryReaderActual = new BinaryReader(actual);
+
+			binaryReaderExpected.BaseStream.Seek(0, SeekOrigin.Begin);
+			binaryReaderActual.BaseStream.Seek(0, SeekOrigin.Begin);
+
+			for(long readByte = 0; readByte < expected.Length; readByte += BUFFER_SIZE )
+			{
+				binaryReaderExpected.Read(bufferExpected, 0, BUFFER_SIZE);
+				binaryReaderActual.Read(bufferActual, 0, BUFFER_SIZE);
+
+				for (int count=0; count < BUFFER_SIZE; ++count) 
+				{
+					if (bufferExpected[count] != bufferActual[count]) 
+					{
+						failurePoints.Insert( 0, readByte + count );
+						//FailureMessage.WriteLine("\tIndex : {0}", readByte + count);
+						return false;
+					}
+				}
+			}
+
+			return true;
+		}
+
+		private bool StringsEqual( string expected, string actual )
+		{
+			string s1 = caseInsensitive ? expected.ToLower() : expected;
+			string s2 = caseInsensitive ? actual.ToLower() : actual;
+
+			return s1.Equals( s2 );
+		}
+
+        /// <summary>
+        /// Method to compare two DirectoryInfo objects
+        /// </summary>
+        /// <param name="expected">first directory to compare</param>
+        /// <param name="actual">second directory to compare</param>
+        /// <returns>true if equivalent, false if not</returns>
+        private bool DirectoriesEqual(DirectoryInfo expected, DirectoryInfo actual)
+        {
+            return expected.Attributes == actual.Attributes
+                && expected.CreationTime == actual.CreationTime
+                && expected.FullName == actual.FullName
+                && expected.LastAccessTime == actual.LastAccessTime;
+        }
+        #endregion
+
+        #region DisplayStringDifferences
+        private void DisplayStringDifferences(MessageWriter writer, string expected, string actual)
+        {
+            int mismatch = MsgUtils.FindMismatchPosition(expected, actual, 0, this.caseInsensitive);
+
+            if (expected.Length == actual.Length)
+				writer.WriteMessageLine(StringsDiffer_1, expected.Length, mismatch);
+			else
+				writer.WriteMessageLine(StringsDiffer_2, expected.Length, actual.Length, mismatch);
+
+            writer.DisplayStringDifferences(expected, actual, mismatch, caseInsensitive, clipStrings);
+        }
+        #endregion
+
+		#region DisplayStreamDifferences
+		private void DisplayStreamDifferences(MessageWriter writer, Stream expected, Stream actual, int depth)
+		{
+			if ( expected.Length == actual.Length )
+			{
+				long offset = (long)failurePoints[depth];
+				writer.WriteMessageLine(StreamsDiffer_1, expected.Length, offset);
+			}
+			else
+				writer.WriteMessageLine(StreamsDiffer_2, expected.Length, actual.Length);
+		}
+		#endregion
+
+        #region DisplayCollectionDifferences
+        /// <summary>
+        /// Display the failure information for two collections that did not match.
+        /// </summary>
+		/// <param name="writer">The MessageWriter on which to display</param>
+		/// <param name="expected">The expected collection.</param>
+        /// <param name="actual">The actual collection</param>
+        /// <param name="depth">The depth of this failure in a set of nested collections</param>
+        private void DisplayCollectionDifferences(MessageWriter writer, ICollection expected, ICollection actual, int depth)
+        {
+            int failurePoint = failurePoints.Count > depth ? (int)failurePoints[depth] : -1;
+
+            DisplayCollectionTypesAndSizes(writer, expected, actual, depth);
+
+            if (failurePoint >= 0)
+            {
+                DisplayFailurePoint(writer, expected, actual, failurePoint, depth);
+				if (failurePoint < expected.Count && failurePoint < actual.Count)
+					DisplayDifferences(
+						writer,
+						GetValueFromCollection(expected, failurePoint),
+						GetValueFromCollection(actual, failurePoint),
+						++depth);
+				else if (expected.Count < actual.Count)
+				{
+					writer.Write( "  Extra:    " );
+					writer.WriteCollectionElements( actual, failurePoint, 3 );
+				}
+				else
+				{
+					writer.Write( "  Missing:  " );
+					writer.WriteCollectionElements( expected, failurePoint, 3 );
+				}
+            }
+        }
+
+        /// <summary>
+        /// Displays a single line showing the types and sizes of the expected
+        /// and actual collections or arrays. If both are identical, the value is 
+        /// only shown once.
+        /// </summary>
+		/// <param name="writer">The MessageWriter on which to display</param>
+		/// <param name="expected">The expected collection or array</param>
+        /// <param name="actual">The actual collection or array</param>
+		/// <param name="indent">The indentation level for the message line</param>
+		private void DisplayCollectionTypesAndSizes(MessageWriter writer, ICollection expected, ICollection actual, int indent)
+        {
+            string sExpected = MsgUtils.GetTypeRepresentation(expected);
+            if (!(expected is Array))
+                sExpected += string.Format(" with {0} elements", expected.Count);
+
+            string sActual = MsgUtils.GetTypeRepresentation(actual);
+            if (!(actual is Array))
+                sActual += string.Format(" with {0} elements", actual.Count);
+
+            if (sExpected == sActual)
+                writer.WriteMessageLine(indent, CollectionType_1, sExpected);
+            else
+                writer.WriteMessageLine(indent, CollectionType_2, sExpected, sActual);
+        }
+
+        /// <summary>
+        /// Displays a single line showing the point in the expected and actual
+        /// arrays at which the comparison failed. If the arrays have different
+        /// structures or dimensions, both values are shown.
+        /// </summary>
+		/// <param name="writer">The MessageWriter on which to display</param>
+		/// <param name="expected">The expected array</param>
+        /// <param name="actual">The actual array</param>
+        /// <param name="failurePoint">Index of the failure point in the underlying collections</param>
+		/// <param name="indent">The indentation level for the message line</param>
+		private void DisplayFailurePoint(MessageWriter writer, ICollection expected, ICollection actual, int failurePoint, int indent)
+        {
+            Array expectedArray = expected as Array;
+            Array actualArray = actual as Array;
+
+            int expectedRank = expectedArray != null ? expectedArray.Rank : 1;
+            int actualRank = actualArray != null ? actualArray.Rank : 1;
+
+            bool useOneIndex = expectedRank == actualRank;
+
+            if (expectedArray != null && actualArray != null)
+                for (int r = 1; r < expectedRank && useOneIndex; r++)
+                    if (expectedArray.GetLength(r) != actualArray.GetLength(r))
+                        useOneIndex = false;
+
+            int[] expectedIndices = MsgUtils.GetArrayIndicesFromCollectionIndex(expected, failurePoint);
+            if (useOneIndex)
+            {
+                writer.WriteMessageLine(indent, ValuesDiffer_1, MsgUtils.GetArrayIndicesAsString(expectedIndices));
+            }
+            else
+            {
+                int[] actualIndices = MsgUtils.GetArrayIndicesFromCollectionIndex(actual, failurePoint);
+                writer.WriteMessageLine(indent, ValuesDiffer_2,
+                    MsgUtils.GetArrayIndicesAsString(expectedIndices), MsgUtils.GetArrayIndicesAsString(actualIndices));
+            }
+        }
+
+        private static object GetValueFromCollection(ICollection collection, int index)
+        {
+            Array array = collection as Array;
+
+            if (array != null && array.Rank > 1)
+                return array.GetValue(MsgUtils.GetArrayIndicesFromCollectionIndex(array, index));
+
+            if (collection is IList)
+                return ((IList)collection)[index];
+
+            foreach (object obj in collection)
+                if (--index < 0)
+                    return obj;
+
+            return null;
+        }
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/Numerics.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/Numerics.cs
@@ -1,216 +1,216 @@
-using System;
-
-namespace NUnit.Framework.Constraints
-{
-	/// <summary>
-	/// The Numerics class contains common operations on numeric values.
-	/// </summary>
-	public class Numerics
-	{
-		#region Numeric Type Recognition
-		/// <summary>
-		/// Checks the type of the object, returning true if
-		/// the object is a numeric type.
-		/// </summary>
-		/// <param name="obj">The object to check</param>
-		/// <returns>true if the object is a numeric type</returns>
-		public static bool IsNumericType(Object obj)
-		{
-			return IsFloatingPointNumeric( obj ) || IsFixedPointNumeric( obj );
-		}
-
-		/// <summary>
-		/// Checks the type of the object, returning true if
-		/// the object is a floating point numeric type.
-		/// </summary>
-		/// <param name="obj">The object to check</param>
-		/// <returns>true if the object is a floating point numeric type</returns>
-		public static bool IsFloatingPointNumeric(Object obj)
-		{
-			if (null != obj)
-			{
-				if (obj is double) return true;
-				if (obj is float) return true;
-
-				if (obj is System.Double) return true;
-				if (obj is System.Single) return true;
-			}
-			return false;
-		}
-		/// <summary>
-		/// Checks the type of the object, returning true if
-		/// the object is a fixed point numeric type.
-		/// </summary>
-		/// <param name="obj">The object to check</param>
-		/// <returns>true if the object is a fixed point numeric type</returns>
-		public static bool IsFixedPointNumeric(Object obj)
-		{
-			if (null != obj)
-			{
-				if (obj is byte) return true;
-				if (obj is sbyte) return true;
-				if (obj is decimal) return true;
-				if (obj is int) return true;
-				if (obj is uint) return true;
-				if (obj is long) return true;
-				if (obj is short) return true;
-				if (obj is ushort) return true;
-
-				if (obj is System.Byte) return true;
-				if (obj is System.SByte) return true;
-				if (obj is System.Decimal) return true;
-				if (obj is System.Int32) return true;
-				if (obj is System.UInt32) return true;
-				if (obj is System.Int64) return true;
-				if (obj is System.UInt64) return true;
-				if (obj is System.Int16) return true;
-				if (obj is System.UInt16) return true;
-			}
-			return false;
-		}
-		#endregion
-
-		#region Numeric Equality
-        /// <summary>
-        /// Test two numeric values for equality, performing the usual numeric 
-        /// conversions and using a provided or default tolerance. If the value 
-        /// referred to by tolerance is null, this method may set it to a default.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <param name="tolerance">A reference to the numeric tolerance in effect</param>
-        /// <returns>True if the values are equal</returns>
-		public static bool AreEqual( object expected, object actual, ref object tolerance )
-		{
-            if (IsFloatingPointNumeric(expected) || IsFloatingPointNumeric(actual))
-                return AreEqual(Convert.ToDouble(expected), Convert.ToDouble(actual), ref tolerance);
-
-			if ( expected is decimal || actual is decimal )
-				return AreEqual( Convert.ToDecimal(expected), Convert.ToDecimal(actual), Convert.ToDecimal(tolerance) );
-			
-			if ( expected is ulong || actual is ulong )
-				return AreEqual( Convert.ToUInt64(expected), Convert.ToUInt64(actual), Convert.ToUInt64(tolerance) );
-		
-			if ( expected is long || actual is long )
-				return AreEqual( Convert.ToInt64(expected), Convert.ToInt64(actual), Convert.ToInt64(tolerance) );
-			
-			if ( expected is uint || actual is uint )
-				return AreEqual( Convert.ToUInt32(expected), Convert.ToUInt32(actual), Convert.ToUInt32(tolerance) );
-
-			return AreEqual( Convert.ToInt32(expected), Convert.ToInt32(actual), Convert.ToInt32(tolerance) );
-		}
-
-		private static bool AreEqual( double expected, double actual, ref object tolerance )
-		{
-            if (double.IsNaN(expected) && double.IsNaN(actual))
-                return true;
-            // handle infinity specially since subtracting two infinite values gives 
-            // NaN and the following test fails. mono also needs NaN to be handled
-            // specially although ms.net could use either method.
-            if (double.IsInfinity(expected) || double.IsNaN(expected) || double.IsNaN(actual))
-                return expected.Equals(actual);
-
-            if (tolerance != null)
-                return Math.Abs(expected - actual) <= Convert.ToDouble(tolerance);
-
-            if (GlobalSettings.DefaultFloatingPointTolerance > 0.0d
-                && !double.IsNaN(expected) && !double.IsInfinity(expected))
-            {
-                tolerance = GlobalSettings.DefaultFloatingPointTolerance;
-                return Math.Abs(expected - actual) <= GlobalSettings.DefaultFloatingPointTolerance;
-            }
-
-			return expected.Equals( actual );
-		}
-
-		private static bool AreEqual( decimal expected, decimal actual, decimal tolerance )
-		{
-			if ( tolerance > 0m )
-				return Math.Abs(expected - actual) <= tolerance;
-				
-			return expected.Equals( actual );
-		}
-
-		private static bool AreEqual( ulong expected, ulong actual, ulong tolerance )
-		{
-			if ( tolerance > 0ul )
-			{
-				ulong diff = expected >= actual ? expected - actual : actual - expected;
-				return diff <= tolerance;
-			}
-
-			return expected.Equals( actual );
-		}
-
-		private static bool AreEqual( long expected, long actual, long tolerance )
-		{
-			if ( tolerance > 0L )
-				return Math.Abs(expected - actual) <= tolerance;
-
-			return expected.Equals( actual );
-		}
-
-		private static bool AreEqual( uint expected, uint actual, uint tolerance )
-		{
-			if ( tolerance > 0 )
-			{
-				uint diff = expected >= actual ? expected - actual : actual - expected;
-				return diff <= tolerance;
-			}
-				
-			return expected.Equals( actual );
-		}
-
-		private static bool AreEqual( int expected, int actual, int tolerance )
-		{
-			if ( tolerance > 0 )
-				return Math.Abs(expected - actual) <= tolerance;
-				
-			return expected.Equals( actual );
-		}
-		#endregion
-
-		#region Numeric Comparisons 
-        /// <summary>
-        /// Compare two numeric values, performing the usual numeric conversions.
-        /// </summary>
-        /// <param name="expected">The expected value</param>
-        /// <param name="actual">The actual value</param>
-        /// <returns></returns>
-		public static int Compare( IComparable expected, object actual )
-		{
-			if ( expected == null )
-				throw new ArgumentException( "Cannot compare using a null reference", "expected" );
-
-			if ( actual == null )
-				throw new ArgumentException( "Cannot compare to null reference", "actual" );
-
-			if( IsNumericType( expected ) && IsNumericType( actual ) )
-			{
-				if ( IsFloatingPointNumeric(expected) || IsFloatingPointNumeric(actual) )
-					return Convert.ToDouble(expected).CompareTo(Convert.ToDouble(actual));
-
-				if ( expected is decimal || actual is decimal )
-					return Convert.ToDecimal(expected).CompareTo(Convert.ToDecimal(actual));
-			
-				if ( expected is ulong || actual is ulong )
-					return Convert.ToUInt64(expected).CompareTo(Convert.ToUInt64(actual));
-		
-				if ( expected is long || actual is long )
-					return Convert.ToInt64(expected).CompareTo(Convert.ToInt64(actual));
-			
-				if ( expected is uint || actual is uint )
-					return Convert.ToUInt32(expected).CompareTo(Convert.ToUInt32(actual));
-
-				return Convert.ToInt32(expected).CompareTo(Convert.ToInt32(actual));
-			}
-			else
-				return expected.CompareTo(actual);
-		}
-		#endregion
-
-		private Numerics()
-		{
-		}
-	}
-}
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+	/// <summary>
+	/// The Numerics class contains common operations on numeric values.
+	/// </summary>
+	public class Numerics
+	{
+		#region Numeric Type Recognition
+		/// <summary>
+		/// Checks the type of the object, returning true if
+		/// the object is a numeric type.
+		/// </summary>
+		/// <param name="obj">The object to check</param>
+		/// <returns>true if the object is a numeric type</returns>
+		public static bool IsNumericType(Object obj)
+		{
+			return IsFloatingPointNumeric( obj ) || IsFixedPointNumeric( obj );
+		}
+
+		/// <summary>
+		/// Checks the type of the object, returning true if
+		/// the object is a floating point numeric type.
+		/// </summary>
+		/// <param name="obj">The object to check</param>
+		/// <returns>true if the object is a floating point numeric type</returns>
+		public static bool IsFloatingPointNumeric(Object obj)
+		{
+			if (null != obj)
+			{
+				if (obj is double) return true;
+				if (obj is float) return true;
+
+				if (obj is System.Double) return true;
+				if (obj is System.Single) return true;
+			}
+			return false;
+		}
+		/// <summary>
+		/// Checks the type of the object, returning true if
+		/// the object is a fixed point numeric type.
+		/// </summary>
+		/// <param name="obj">The object to check</param>
+		/// <returns>true if the object is a fixed point numeric type</returns>
+		public static bool IsFixedPointNumeric(Object obj)
+		{
+			if (null != obj)
+			{
+				if (obj is byte) return true;
+				if (obj is sbyte) return true;
+				if (obj is decimal) return true;
+				if (obj is int) return true;
+				if (obj is uint) return true;
+				if (obj is long) return true;
+				if (obj is short) return true;
+				if (obj is ushort) return true;
+
+				if (obj is System.Byte) return true;
+				if (obj is System.SByte) return true;
+				if (obj is System.Decimal) return true;
+				if (obj is System.Int32) return true;
+				if (obj is System.UInt32) return true;
+				if (obj is System.Int64) return true;
+				if (obj is System.UInt64) return true;
+				if (obj is System.Int16) return true;
+				if (obj is System.UInt16) return true;
+			}
+			return false;
+		}
+		#endregion
+
+		#region Numeric Equality
+        /// <summary>
+        /// Test two numeric values for equality, performing the usual numeric 
+        /// conversions and using a provided or default tolerance. If the value 
+        /// referred to by tolerance is null, this method may set it to a default.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <param name="tolerance">A reference to the numeric tolerance in effect</param>
+        /// <returns>True if the values are equal</returns>
+		public static bool AreEqual( object expected, object actual, ref object tolerance )
+		{
+            if (IsFloatingPointNumeric(expected) || IsFloatingPointNumeric(actual))
+                return AreEqual(Convert.ToDouble(expected), Convert.ToDouble(actual), ref tolerance);
+
+			if ( expected is decimal || actual is decimal )
+				return AreEqual( Convert.ToDecimal(expected), Convert.ToDecimal(actual), Convert.ToDecimal(tolerance) );
+			
+			if ( expected is ulong || actual is ulong )
+				return AreEqual( Convert.ToUInt64(expected), Convert.ToUInt64(actual), Convert.ToUInt64(tolerance) );
+		
+			if ( expected is long || actual is long )
+				return AreEqual( Convert.ToInt64(expected), Convert.ToInt64(actual), Convert.ToInt64(tolerance) );
+			
+			if ( expected is uint || actual is uint )
+				return AreEqual( Convert.ToUInt32(expected), Convert.ToUInt32(actual), Convert.ToUInt32(tolerance) );
+
+			return AreEqual( Convert.ToInt32(expected), Convert.ToInt32(actual), Convert.ToInt32(tolerance) );
+		}
+
+		private static bool AreEqual( double expected, double actual, ref object tolerance )
+		{
+            if (double.IsNaN(expected) && double.IsNaN(actual))
+                return true;
+            // handle infinity specially since subtracting two infinite values gives 
+            // NaN and the following test fails. mono also needs NaN to be handled
+            // specially although ms.net could use either method.
+            if (double.IsInfinity(expected) || double.IsNaN(expected) || double.IsNaN(actual))
+                return expected.Equals(actual);
+
+            if (tolerance != null)
+                return Math.Abs(expected - actual) <= Convert.ToDouble(tolerance);
+
+            if (GlobalSettings.DefaultFloatingPointTolerance > 0.0d
+                && !double.IsNaN(expected) && !double.IsInfinity(expected))
+            {
+                tolerance = GlobalSettings.DefaultFloatingPointTolerance;
+                return Math.Abs(expected - actual) <= GlobalSettings.DefaultFloatingPointTolerance;
+            }
+
+			return expected.Equals( actual );
+		}
+
+		private static bool AreEqual( decimal expected, decimal actual, decimal tolerance )
+		{
+			if ( tolerance > 0m )
+				return Math.Abs(expected - actual) <= tolerance;
+				
+			return expected.Equals( actual );
+		}
+
+		private static bool AreEqual( ulong expected, ulong actual, ulong tolerance )
+		{
+			if ( tolerance > 0ul )
+			{
+				ulong diff = expected >= actual ? expected - actual : actual - expected;
+				return diff <= tolerance;
+			}
+
+			return expected.Equals( actual );
+		}
+
+		private static bool AreEqual( long expected, long actual, long tolerance )
+		{
+			if ( tolerance > 0L )
+				return Math.Abs(expected - actual) <= tolerance;
+
+			return expected.Equals( actual );
+		}
+
+		private static bool AreEqual( uint expected, uint actual, uint tolerance )
+		{
+			if ( tolerance > 0 )
+			{
+				uint diff = expected >= actual ? expected - actual : actual - expected;
+				return diff <= tolerance;
+			}
+				
+			return expected.Equals( actual );
+		}
+
+		private static bool AreEqual( int expected, int actual, int tolerance )
+		{
+			if ( tolerance > 0 )
+				return Math.Abs(expected - actual) <= tolerance;
+				
+			return expected.Equals( actual );
+		}
+		#endregion
+
+		#region Numeric Comparisons 
+        /// <summary>
+        /// Compare two numeric values, performing the usual numeric conversions.
+        /// </summary>
+        /// <param name="expected">The expected value</param>
+        /// <param name="actual">The actual value</param>
+        /// <returns></returns>
+		public static int Compare( IComparable expected, object actual )
+		{
+			if ( expected == null )
+				throw new ArgumentException( "Cannot compare using a null reference", "expected" );
+
+			if ( actual == null )
+				throw new ArgumentException( "Cannot compare to null reference", "actual" );
+
+			if( IsNumericType( expected ) && IsNumericType( actual ) )
+			{
+				if ( IsFloatingPointNumeric(expected) || IsFloatingPointNumeric(actual) )
+					return Convert.ToDouble(expected).CompareTo(Convert.ToDouble(actual));
+
+				if ( expected is decimal || actual is decimal )
+					return Convert.ToDecimal(expected).CompareTo(Convert.ToDecimal(actual));
+			
+				if ( expected is ulong || actual is ulong )
+					return Convert.ToUInt64(expected).CompareTo(Convert.ToUInt64(actual));
+		
+				if ( expected is long || actual is long )
+					return Convert.ToInt64(expected).CompareTo(Convert.ToInt64(actual));
+			
+				if ( expected is uint || actual is uint )
+					return Convert.ToUInt32(expected).CompareTo(Convert.ToUInt32(actual));
+
+				return Convert.ToInt32(expected).CompareTo(Convert.ToInt32(actual));
+			}
+			else
+				return expected.CompareTo(actual);
+		}
+		#endregion
+
+		private Numerics()
+		{
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/PrefixConstraints.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/PrefixConstraints.cs
@@ -1,241 +1,241 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-
-namespace NUnit.Framework.Constraints
-{
-	#region PrefixConstraint
-	/// <summary>
-	/// Abstract base class used for prefixes
-	/// </summary>
-	public abstract class PrefixConstraint : Constraint
-	{
-		/// <summary>
-		/// The base constraint
-		/// </summary>
-		protected Constraint baseConstraint;
-
-		/// <summary>
-		/// Construct given a base constraint
-		/// </summary>
-		/// <param name="baseConstraint"></param>
-		protected PrefixConstraint( Constraint baseConstraint )
-		{
-			this.baseConstraint = baseConstraint;
-		}
-
-		/// <summary>
-		/// Set all modifiers applied to the prefix into
-		/// the base constraint before matching
-		/// </summary>
-		protected void PassModifiersToBase()
-		{
-			if ( this.caseInsensitive )
-				baseConstraint = baseConstraint.IgnoreCase;
-            if (!this.clipStrings)
-                baseConstraint = baseConstraint.NoClip;
-			if ( this.tolerance != null )
-				baseConstraint = baseConstraint.Within( tolerance );
-			if ( this.compareAsCollection )
-				baseConstraint = baseConstraint.AsCollection;
-			if ( this.compareWith != null )
-				baseConstraint = baseConstraint.Comparer( compareWith );
-		}
-	}
-	#endregion
-
-	#region NotConstraint
-    /// <summary>
-	/// NotConstraint negates the effect of some other constraint
-	/// </summary>
-	public class NotConstraint : PrefixConstraint
-	{
-		/// <summary>
-		/// Initializes a new instance of the <see cref="T:NotConstraint"/> class.
-		/// </summary>
-		/// <param name="baseConstraint">The base constraint to be negated.</param>
-		public NotConstraint(Constraint baseConstraint)
-			: base( baseConstraint ) { }
-
-		/// <summary>
-		/// Test whether the constraint is satisfied by a given value
-		/// </summary>
-		/// <param name="actual">The value to be tested</param>
-		/// <returns>True for if the base constraint fails, false if it succeeds</returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-			this.PassModifiersToBase();
-			return !baseConstraint.Matches(actual);
-		}
-
-		/// <summary>
-		/// Write the constraint description to a MessageWriter
-		/// </summary>
-		/// <param name="writer">The writer on which the description is displayed</param>
-		public override void WriteDescriptionTo( MessageWriter writer )
-		{
-			writer.WritePredicate( "not" );
-			baseConstraint.WriteDescriptionTo( writer );
-		}
-
-		/// <summary>
-		/// Write the actual value for a failing constraint test to a MessageWriter.
-		/// </summary>
-		/// <param name="writer">The writer on which the actual value is displayed</param>
-		public override void WriteActualValueTo(MessageWriter writer)
-		{
-			baseConstraint.WriteActualValueTo (writer);
-		}
-	}
-	#endregion
-
-	#region AllItemsConstraint
-	/// <summary>
-	/// AllItemsConstraint applies another constraint to each
-	/// item in a collection, succeeding if they all succeed.
-	/// </summary>
-	public class AllItemsConstraint : PrefixConstraint
-	{
-		/// <summary>
-		/// Construct an AllItemsConstraint on top of an existing constraint
-		/// </summary>
-		/// <param name="itemConstraint"></param>
-		public AllItemsConstraint(Constraint itemConstraint)
-			: base( itemConstraint ) { }
-
-		/// <summary>
-		/// Apply the item constraint to each item in the collection,
-		/// failing if any item fails.
-		/// </summary>
-		/// <param name="actual"></param>
-		/// <returns></returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			PassModifiersToBase();
-
-			if ( !(actual is ICollection) )
-				throw new ArgumentException( "The actual value must be a collection", "actual" );
-
-			foreach(object item in (ICollection)actual)
-				if (!baseConstraint.Matches(item))
-					return false;
-
-			return true;
-		}
-
-		/// <summary>
-		/// Write a description of this constraint to a MessageWriter
-		/// </summary>
-		/// <param name="writer"></param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			writer.WritePredicate("all items");
-			baseConstraint.WriteDescriptionTo(writer);
-		}
-	}
-	#endregion
-
-	#region SomeItemsConstraint
-	/// <summary>
-	/// SomeItemsConstraint applies another constraint to each
-	/// item in a collection, succeeding if any of them succeeds.
-	/// </summary>
-	public class SomeItemsConstraint : PrefixConstraint
-	{
-		/// <summary>
-		/// Construct a SomeItemsConstraint on top of an existing constraint
-		/// </summary>
-		/// <param name="itemConstraint"></param>
-		public SomeItemsConstraint(Constraint itemConstraint)
-			: base( itemConstraint ) { }
-
-		/// <summary>
-		/// Apply the item constraint to each item in the collection,
-		/// failing if any item fails.
-		/// </summary>
-		/// <param name="actual"></param>
-		/// <returns></returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			PassModifiersToBase();
-
-			if ( !(actual is ICollection) )
-				throw new ArgumentException( "The actual value must be a collection", "actual" );
-
-			foreach(object item in (ICollection)actual)
-				if (baseConstraint.Matches(item))
-					return true;
-
-			return false;
-		}
-
-		/// <summary>
-		/// Write a description of this constraint to a MessageWriter
-		/// </summary>
-		/// <param name="writer"></param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			writer.WritePredicate("some item");
-			baseConstraint.WriteDescriptionTo(writer);
-		}
-	}
-	#endregion
-
-	#region NoItemConstraint
-	/// <summary>
-	/// SomeItemsConstraint applies another constraint to each
-	/// item in a collection, succeeding if any of them succeeds.
-	/// </summary>
-	public class NoItemConstraint : PrefixConstraint
-	{
-		/// <summary>
-		/// Construct a SomeItemsConstraint on top of an existing constraint
-		/// </summary>
-		/// <param name="itemConstraint"></param>
-		public NoItemConstraint(Constraint itemConstraint)
-			: base( itemConstraint ) { }
-
-		/// <summary>
-		/// Apply the item constraint to each item in the collection,
-		/// failing if any item fails.
-		/// </summary>
-		/// <param name="actual"></param>
-		/// <returns></returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			PassModifiersToBase();
-
-			if ( !(actual is ICollection) )
-				throw new ArgumentException( "The actual value must be a collection", "actual" );
-
-			foreach(object item in (ICollection)actual)
-				if (baseConstraint.Matches(item))
-					return false;
-
-			return true;
-		}
-
-		/// <summary>
-		/// Write a description of this constraint to a MessageWriter
-		/// </summary>
-		/// <param name="writer"></param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			writer.WritePredicate("no item");
-			baseConstraint.WriteDescriptionTo(writer);
-		}
-	}
-	#endregion
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+
+namespace NUnit.Framework.Constraints
+{
+	#region PrefixConstraint
+	/// <summary>
+	/// Abstract base class used for prefixes
+	/// </summary>
+	public abstract class PrefixConstraint : Constraint
+	{
+		/// <summary>
+		/// The base constraint
+		/// </summary>
+		protected Constraint baseConstraint;
+
+		/// <summary>
+		/// Construct given a base constraint
+		/// </summary>
+		/// <param name="baseConstraint"></param>
+		protected PrefixConstraint( Constraint baseConstraint )
+		{
+			this.baseConstraint = baseConstraint;
+		}
+
+		/// <summary>
+		/// Set all modifiers applied to the prefix into
+		/// the base constraint before matching
+		/// </summary>
+		protected void PassModifiersToBase()
+		{
+			if ( this.caseInsensitive )
+				baseConstraint = baseConstraint.IgnoreCase;
+            if (!this.clipStrings)
+                baseConstraint = baseConstraint.NoClip;
+			if ( this.tolerance != null )
+				baseConstraint = baseConstraint.Within( tolerance );
+			if ( this.compareAsCollection )
+				baseConstraint = baseConstraint.AsCollection;
+			if ( this.compareWith != null )
+				baseConstraint = baseConstraint.Comparer( compareWith );
+		}
+	}
+	#endregion
+
+	#region NotConstraint
+    /// <summary>
+	/// NotConstraint negates the effect of some other constraint
+	/// </summary>
+	public class NotConstraint : PrefixConstraint
+	{
+		/// <summary>
+		/// Initializes a new instance of the <see cref="T:NotConstraint"/> class.
+		/// </summary>
+		/// <param name="baseConstraint">The base constraint to be negated.</param>
+		public NotConstraint(Constraint baseConstraint)
+			: base( baseConstraint ) { }
+
+		/// <summary>
+		/// Test whether the constraint is satisfied by a given value
+		/// </summary>
+		/// <param name="actual">The value to be tested</param>
+		/// <returns>True for if the base constraint fails, false if it succeeds</returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+			this.PassModifiersToBase();
+			return !baseConstraint.Matches(actual);
+		}
+
+		/// <summary>
+		/// Write the constraint description to a MessageWriter
+		/// </summary>
+		/// <param name="writer">The writer on which the description is displayed</param>
+		public override void WriteDescriptionTo( MessageWriter writer )
+		{
+			writer.WritePredicate( "not" );
+			baseConstraint.WriteDescriptionTo( writer );
+		}
+
+		/// <summary>
+		/// Write the actual value for a failing constraint test to a MessageWriter.
+		/// </summary>
+		/// <param name="writer">The writer on which the actual value is displayed</param>
+		public override void WriteActualValueTo(MessageWriter writer)
+		{
+			baseConstraint.WriteActualValueTo (writer);
+		}
+	}
+	#endregion
+
+	#region AllItemsConstraint
+	/// <summary>
+	/// AllItemsConstraint applies another constraint to each
+	/// item in a collection, succeeding if they all succeed.
+	/// </summary>
+	public class AllItemsConstraint : PrefixConstraint
+	{
+		/// <summary>
+		/// Construct an AllItemsConstraint on top of an existing constraint
+		/// </summary>
+		/// <param name="itemConstraint"></param>
+		public AllItemsConstraint(Constraint itemConstraint)
+			: base( itemConstraint ) { }
+
+		/// <summary>
+		/// Apply the item constraint to each item in the collection,
+		/// failing if any item fails.
+		/// </summary>
+		/// <param name="actual"></param>
+		/// <returns></returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			PassModifiersToBase();
+
+			if ( !(actual is ICollection) )
+				throw new ArgumentException( "The actual value must be a collection", "actual" );
+
+			foreach(object item in (ICollection)actual)
+				if (!baseConstraint.Matches(item))
+					return false;
+
+			return true;
+		}
+
+		/// <summary>
+		/// Write a description of this constraint to a MessageWriter
+		/// </summary>
+		/// <param name="writer"></param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			writer.WritePredicate("all items");
+			baseConstraint.WriteDescriptionTo(writer);
+		}
+	}
+	#endregion
+
+	#region SomeItemsConstraint
+	/// <summary>
+	/// SomeItemsConstraint applies another constraint to each
+	/// item in a collection, succeeding if any of them succeeds.
+	/// </summary>
+	public class SomeItemsConstraint : PrefixConstraint
+	{
+		/// <summary>
+		/// Construct a SomeItemsConstraint on top of an existing constraint
+		/// </summary>
+		/// <param name="itemConstraint"></param>
+		public SomeItemsConstraint(Constraint itemConstraint)
+			: base( itemConstraint ) { }
+
+		/// <summary>
+		/// Apply the item constraint to each item in the collection,
+		/// failing if any item fails.
+		/// </summary>
+		/// <param name="actual"></param>
+		/// <returns></returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			PassModifiersToBase();
+
+			if ( !(actual is ICollection) )
+				throw new ArgumentException( "The actual value must be a collection", "actual" );
+
+			foreach(object item in (ICollection)actual)
+				if (baseConstraint.Matches(item))
+					return true;
+
+			return false;
+		}
+
+		/// <summary>
+		/// Write a description of this constraint to a MessageWriter
+		/// </summary>
+		/// <param name="writer"></param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			writer.WritePredicate("some item");
+			baseConstraint.WriteDescriptionTo(writer);
+		}
+	}
+	#endregion
+
+	#region NoItemConstraint
+	/// <summary>
+	/// SomeItemsConstraint applies another constraint to each
+	/// item in a collection, succeeding if any of them succeeds.
+	/// </summary>
+	public class NoItemConstraint : PrefixConstraint
+	{
+		/// <summary>
+		/// Construct a SomeItemsConstraint on top of an existing constraint
+		/// </summary>
+		/// <param name="itemConstraint"></param>
+		public NoItemConstraint(Constraint itemConstraint)
+			: base( itemConstraint ) { }
+
+		/// <summary>
+		/// Apply the item constraint to each item in the collection,
+		/// failing if any item fails.
+		/// </summary>
+		/// <param name="actual"></param>
+		/// <returns></returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			PassModifiersToBase();
+
+			if ( !(actual is ICollection) )
+				throw new ArgumentException( "The actual value must be a collection", "actual" );
+
+			foreach(object item in (ICollection)actual)
+				if (baseConstraint.Matches(item))
+					return false;
+
+			return true;
+		}
+
+		/// <summary>
+		/// Write a description of this constraint to a MessageWriter
+		/// </summary>
+		/// <param name="writer"></param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			writer.WritePredicate("no item");
+			baseConstraint.WriteDescriptionTo(writer);
+		}
+	}
+	#endregion
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/PropertyConstraint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/PropertyConstraint.cs
@@ -1,83 +1,83 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Reflection;
-
-namespace NUnit.Framework.Constraints
-{
-	/// <summary>
-	/// Summary description for PropertyConstraint.
-	/// </summary>
-	public class PropertyConstraint : PrefixConstraint
-	{
-		private string name;
-		private object propValue;
-
-		private bool propertyExists;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:PropertyConstraint"/> class.
-        /// </summary>
-        /// <param name="name">The name.</param>
-        /// <param name="baseConstraint">The constraint to apply to the property.</param>
-		public PropertyConstraint( string name, Constraint baseConstraint )
-			: base( baseConstraint ) 
-		{ 
-			this.name = name;
-		}
-
-		/// <summary>
-		/// Test whether the constraint is satisfied by a given value
-		/// </summary>
-		/// <param name="actual">The value to be tested</param>
-		/// <returns>True for success, false for failure</returns>
-		public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			// TODO: Should be argument exception?
-			if ( actual == null ) return false;
-
-			PropertyInfo property = actual.GetType().GetProperty( name, 
-				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance );
-			this.propertyExists = property != null;
-			if ( !propertyExists ) return false;
-
-			if ( baseConstraint == null ) return true;
-
-			propValue = property.GetValue( actual, null );
-			return baseConstraint.Matches( propValue );
-		}
-
-		/// <summary>
-		/// Write the constraint description to a MessageWriter
-		/// </summary>
-		/// <param name="writer">The writer on which the description is displayed</param>
-		public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			writer.WritePredicate( "Property \"" + name + "\"" );
-			if ( baseConstraint != null )
-				baseConstraint.WriteDescriptionTo( writer );
-		}
-
-		/// <summary>
-		/// Write the actual value for a failing constraint test to a
-		/// MessageWriter. The default implementation simply writes
-		/// the raw value of actual, leaving it to the writer to
-		/// perform any formatting.
-		/// </summary>
-		/// <param name="writer">The writer on which the actual value is displayed</param>
-		public override void WriteActualValueTo(MessageWriter writer)
-		{
-			if ( propertyExists )
-				writer.WriteActualValue( propValue );
-			else
-				writer.WriteActualValue( actual.GetType() );
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Framework.Constraints
+{
+	/// <summary>
+	/// Summary description for PropertyConstraint.
+	/// </summary>
+	public class PropertyConstraint : PrefixConstraint
+	{
+		private string name;
+		private object propValue;
+
+		private bool propertyExists;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:PropertyConstraint"/> class.
+        /// </summary>
+        /// <param name="name">The name.</param>
+        /// <param name="baseConstraint">The constraint to apply to the property.</param>
+		public PropertyConstraint( string name, Constraint baseConstraint )
+			: base( baseConstraint ) 
+		{ 
+			this.name = name;
+		}
+
+		/// <summary>
+		/// Test whether the constraint is satisfied by a given value
+		/// </summary>
+		/// <param name="actual">The value to be tested</param>
+		/// <returns>True for success, false for failure</returns>
+		public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			// TODO: Should be argument exception?
+			if ( actual == null ) return false;
+
+			PropertyInfo property = actual.GetType().GetProperty( name, 
+				BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance );
+			this.propertyExists = property != null;
+			if ( !propertyExists ) return false;
+
+			if ( baseConstraint == null ) return true;
+
+			propValue = property.GetValue( actual, null );
+			return baseConstraint.Matches( propValue );
+		}
+
+		/// <summary>
+		/// Write the constraint description to a MessageWriter
+		/// </summary>
+		/// <param name="writer">The writer on which the description is displayed</param>
+		public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			writer.WritePredicate( "Property \"" + name + "\"" );
+			if ( baseConstraint != null )
+				baseConstraint.WriteDescriptionTo( writer );
+		}
+
+		/// <summary>
+		/// Write the actual value for a failing constraint test to a
+		/// MessageWriter. The default implementation simply writes
+		/// the raw value of actual, leaving it to the writer to
+		/// perform any formatting.
+		/// </summary>
+		/// <param name="writer">The writer on which the actual value is displayed</param>
+		public override void WriteActualValueTo(MessageWriter writer)
+		{
+			if ( propertyExists )
+				writer.WriteActualValue( propValue );
+			else
+				writer.WriteActualValue( actual.GetType() );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/SameAsConstraint.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/SameAsConstraint.cs
@@ -1,50 +1,50 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework.Constraints
-{
-    /// <summary>
-    /// SameAsConstraint tests whether an object is identical to
-    /// the object passed to its constructor
-    /// </summary>
-    public class SameAsConstraint : Constraint
-    {
-        private object expected;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:SameAsConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected object.</param>
-        public SameAsConstraint(object expected)
-        {
-            this.expected = expected;
-        }
-
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-
-            return Object.ReferenceEquals(expected,actual);
-        }
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("same as");
-            writer.WriteExpectedValue(expected);
-        }
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+    /// <summary>
+    /// SameAsConstraint tests whether an object is identical to
+    /// the object passed to its constructor
+    /// </summary>
+    public class SameAsConstraint : Constraint
+    {
+        private object expected;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:SameAsConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected object.</param>
+        public SameAsConstraint(object expected)
+        {
+            this.expected = expected;
+        }
+
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+
+            return Object.ReferenceEquals(expected,actual);
+        }
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("same as");
+            writer.WriteExpectedValue(expected);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/StringConstraints.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/StringConstraints.cs
@@ -1,234 +1,234 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Text.RegularExpressions;
-
-namespace NUnit.Framework.Constraints
-{
-	/// <summary>
-	/// EmptyStringConstraint tests whether a string is empty.
-	/// </summary>
-	public class EmptyStringConstraint : EmptyConstraint
-	{
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-        public override bool Matches(object actual)
-		{
-			this.actual = actual;
-
-			if ( !(actual is string) )
-				return false;
-
-			return (string)actual == string.Empty;
-		}
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-		{
-			writer.Write( "<empty>" );
-		}
-	}
-
-	/// <summary>
-	/// SubstringConstraint can test whether a string contains
-	/// the expected substring.
-	/// </summary>
-    public class SubstringConstraint : Constraint
-    {
-        string expected;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:SubstringConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected.</param>
-        public SubstringConstraint(string expected)
-        {
-            this.expected = expected;
-        }
-
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-            
-            if ( !(actual is string) )
-                return false;
-
-            if (this.caseInsensitive)
-                return ((string)actual).ToLower().IndexOf(expected.ToLower()) >= 0;
-            else
-                return ((string)actual).IndexOf(expected) >= 0;
-        }
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("String containing");
-            writer.WriteExpectedValue(expected);
-			if ( this.caseInsensitive )
-				writer.WriteModifier( "ignoring case" );
-		}
-    }
-
-	/// <summary>
-	/// StartsWithConstraint can test whether a string starts
-	/// with an expected substring.
-	/// </summary>
-    public class StartsWithConstraint : Constraint
-    {
-        private string expected;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:StartsWithConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected string</param>
-        public StartsWithConstraint(string expected)
-        {
-            this.expected = expected;
-        }
-
-        /// <summary>
-        /// Test whether the constraint is matched by the actual value.
-        /// This is a template method, which calls the IsMatch method
-        /// of the derived class.
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-
-            if (!(actual is string))
-                return false;
-
-            if ( this.caseInsensitive )
-                return ((string)actual).ToLower().StartsWith(expected.ToLower());
-            else
-                return ((string)actual).StartsWith(expected);
-        }
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("String starting with");
-            writer.WriteExpectedValue( MsgUtils.ClipString(expected, writer.MaxLineLength - 40, 0) );
-			if ( this.caseInsensitive )
-				writer.WriteModifier( "ignoring case" );
-		}
-    }
-
-    /// <summary>
-    /// EndsWithConstraint can test whether a string ends
-    /// with an expected substring.
-    /// </summary>
-    public class EndsWithConstraint : Constraint
-    {
-        private string expected;
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:EndsWithConstraint"/> class.
-        /// </summary>
-        /// <param name="expected">The expected string</param>
-        public EndsWithConstraint(string expected)
-        {
-            this.expected = expected;
-        }
-
-        /// <summary>
-        /// Test whether the constraint is matched by the actual value.
-        /// This is a template method, which calls the IsMatch method
-        /// of the derived class.
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-
-            if (!(actual is string))
-                return false;
-
-            if ( this.caseInsensitive )
-                return ((string)actual).ToLower().EndsWith(expected.ToLower());
-            else
-                return ((string)actual).EndsWith(expected);
-        }
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("String ending with");
-            writer.WriteExpectedValue(expected);
-			if ( this.caseInsensitive )
-				writer.WriteModifier( "ignoring case" );
-		}
-    }
-
-    /// <summary>
-    /// RegexConstraint can test whether a string matches
-    /// the pattern provided.
-    /// </summary>
-    public class RegexConstraint : Constraint
-    {
-        string pattern;
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="T:RegexConstraint"/> class.
-        /// </summary>
-        /// <param name="pattern">The pattern.</param>
-        public RegexConstraint(string pattern)
-        {
-            this.pattern = pattern;
-        }
-
-        /// <summary>
-        /// Test whether the constraint is satisfied by a given value
-        /// </summary>
-        /// <param name="actual">The value to be tested</param>
-        /// <returns>True for success, false for failure</returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-
-            return actual is string && 
-                Regex.IsMatch( 
-                    (string)actual, 
-                    this.pattern,
-                    this.caseInsensitive ? RegexOptions.IgnoreCase : RegexOptions.None );
-        }
-
-        /// <summary>
-        /// Write the constraint description to a MessageWriter
-        /// </summary>
-        /// <param name="writer">The writer on which the description is displayed</param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("String matching");
-            writer.WriteExpectedValue(this.pattern);
-			if ( this.caseInsensitive )
-				writer.WriteModifier( "ignoring case" );
-		}
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Text.RegularExpressions;
+
+namespace NUnit.Framework.Constraints
+{
+	/// <summary>
+	/// EmptyStringConstraint tests whether a string is empty.
+	/// </summary>
+	public class EmptyStringConstraint : EmptyConstraint
+	{
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+        public override bool Matches(object actual)
+		{
+			this.actual = actual;
+
+			if ( !(actual is string) )
+				return false;
+
+			return (string)actual == string.Empty;
+		}
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+		{
+			writer.Write( "<empty>" );
+		}
+	}
+
+	/// <summary>
+	/// SubstringConstraint can test whether a string contains
+	/// the expected substring.
+	/// </summary>
+    public class SubstringConstraint : Constraint
+    {
+        string expected;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:SubstringConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected.</param>
+        public SubstringConstraint(string expected)
+        {
+            this.expected = expected;
+        }
+
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+            
+            if ( !(actual is string) )
+                return false;
+
+            if (this.caseInsensitive)
+                return ((string)actual).ToLower().IndexOf(expected.ToLower()) >= 0;
+            else
+                return ((string)actual).IndexOf(expected) >= 0;
+        }
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("String containing");
+            writer.WriteExpectedValue(expected);
+			if ( this.caseInsensitive )
+				writer.WriteModifier( "ignoring case" );
+		}
+    }
+
+	/// <summary>
+	/// StartsWithConstraint can test whether a string starts
+	/// with an expected substring.
+	/// </summary>
+    public class StartsWithConstraint : Constraint
+    {
+        private string expected;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:StartsWithConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected string</param>
+        public StartsWithConstraint(string expected)
+        {
+            this.expected = expected;
+        }
+
+        /// <summary>
+        /// Test whether the constraint is matched by the actual value.
+        /// This is a template method, which calls the IsMatch method
+        /// of the derived class.
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+
+            if (!(actual is string))
+                return false;
+
+            if ( this.caseInsensitive )
+                return ((string)actual).ToLower().StartsWith(expected.ToLower());
+            else
+                return ((string)actual).StartsWith(expected);
+        }
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("String starting with");
+            writer.WriteExpectedValue( MsgUtils.ClipString(expected, writer.MaxLineLength - 40, 0) );
+			if ( this.caseInsensitive )
+				writer.WriteModifier( "ignoring case" );
+		}
+    }
+
+    /// <summary>
+    /// EndsWithConstraint can test whether a string ends
+    /// with an expected substring.
+    /// </summary>
+    public class EndsWithConstraint : Constraint
+    {
+        private string expected;
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:EndsWithConstraint"/> class.
+        /// </summary>
+        /// <param name="expected">The expected string</param>
+        public EndsWithConstraint(string expected)
+        {
+            this.expected = expected;
+        }
+
+        /// <summary>
+        /// Test whether the constraint is matched by the actual value.
+        /// This is a template method, which calls the IsMatch method
+        /// of the derived class.
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+
+            if (!(actual is string))
+                return false;
+
+            if ( this.caseInsensitive )
+                return ((string)actual).ToLower().EndsWith(expected.ToLower());
+            else
+                return ((string)actual).EndsWith(expected);
+        }
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("String ending with");
+            writer.WriteExpectedValue(expected);
+			if ( this.caseInsensitive )
+				writer.WriteModifier( "ignoring case" );
+		}
+    }
+
+    /// <summary>
+    /// RegexConstraint can test whether a string matches
+    /// the pattern provided.
+    /// </summary>
+    public class RegexConstraint : Constraint
+    {
+        string pattern;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="T:RegexConstraint"/> class.
+        /// </summary>
+        /// <param name="pattern">The pattern.</param>
+        public RegexConstraint(string pattern)
+        {
+            this.pattern = pattern;
+        }
+
+        /// <summary>
+        /// Test whether the constraint is satisfied by a given value
+        /// </summary>
+        /// <param name="actual">The value to be tested</param>
+        /// <returns>True for success, false for failure</returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+
+            return actual is string && 
+                Regex.IsMatch( 
+                    (string)actual, 
+                    this.pattern,
+                    this.caseInsensitive ? RegexOptions.IgnoreCase : RegexOptions.None );
+        }
+
+        /// <summary>
+        /// Write the constraint description to a MessageWriter
+        /// </summary>
+        /// <param name="writer">The writer on which the description is displayed</param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("String matching");
+            writer.WriteExpectedValue(this.pattern);
+			if ( this.caseInsensitive )
+				writer.WriteModifier( "ignoring case" );
+		}
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/Constraints/TypeConstraints.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/Constraints/TypeConstraints.cs
@@ -1,143 +1,143 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework.Constraints
-{
-    /// <summary>
-    /// TypeConstraint is the abstract base for constraints
-    /// that take a Type as their expected value.
-    /// </summary>
-    public abstract class TypeConstraint : Constraint
-    {
-        /// <summary>
-        /// The expected Type used by the constraint
-        /// </summary>
-        protected Type expectedType;
-
-        /// <summary>
-        /// Construct a TypeConstraint for a given Type
-        /// </summary>
-        /// <param name="type"></param>
-        public TypeConstraint(Type type)
-        {
-            this.expectedType = type;
-        }
-
-        /// <summary>
-        /// Write the actual value for a failing constraint test to a
-        /// MessageWriter. TypeCOnstraints override this method to write
-        /// the name of the type.
-        /// </summary>
-        /// <param name="writer">The writer on which the actual value is displayed</param>
-		public override void WriteActualValueTo(MessageWriter writer)
-		{
-			writer.WriteActualValue( actual == null ? null : actual.GetType() ); 
-		}
-	}
-
-    /// <summary>
-    /// ExactTypeConstraint is used to test that an object
-    /// is of the exact type provided in the constructor
-    /// </summary>
-    public class ExactTypeConstraint : TypeConstraint
-    {
-        /// <summary>
-        /// Construct an ExactTypeConstraint for a given Type
-        /// </summary>
-        /// <param name="type"></param>
-        public ExactTypeConstraint(Type type) : base( type ) { }
-
-        /// <summary>
-        /// Test that an object is of the exact type specified
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-            return actual != null && actual.GetType() == this.expectedType;
-        }
-
-        /// <summary>
-        /// Write the description of this constraint to a MessageWriter
-        /// </summary>
-        /// <param name="writer"></param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WriteExpectedValue(expectedType);
-        }
-    }
-
-    /// <summary>
-    /// InstanceOfTypeConstraint is used to test that an object
-    /// is of the same type provided or derived from it.
-    /// </summary>
-    public class InstanceOfTypeConstraint : TypeConstraint
-    {
-        /// <summary>
-        /// Construct an InstanceOfTypeConstraint for the type provided
-        /// </summary>
-        /// <param name="type"></param>
-        public InstanceOfTypeConstraint(Type type) : base(type) { }
-
-        /// <summary>
-        /// Test whether an object is of the specified type or a derived type
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        public override bool Matches(object actual)
-        {
-            this.actual = actual;
-            return actual != null && expectedType.IsInstanceOfType(actual);
-        }
-
-        /// <summary>
-        /// Write a description of this constraint to a MessageWriter
-        /// </summary>
-        /// <param name="writer"></param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("instance of");
-            writer.WriteExpectedValue(expectedType);
-        }
-	}
-
-    /// <summary>
-    /// AssignableFromConstraint is used to test that an object
-    /// can be assigned from a given Type.
-    /// </summary>
-    public class AssignableFromConstraint : TypeConstraint
-    {
-        /// <summary>
-        /// Construct an AssignableFromConstraint for the type provided
-        /// </summary>
-        /// <param name="type"></param>
-        public AssignableFromConstraint(Type type) : base(type) { }
-
-        /// <summary>
-        /// Test whether an object can be assigned from the specified type
-        /// </summary>
-        /// <param name="actual"></param>
-        /// <returns></returns>
-        public override bool Matches(object actual)
-        {
-			this.actual = actual;
-            return actual != null && actual.GetType().IsAssignableFrom( expectedType );
-        }
-
-        /// <summary>
-        /// Write a description of this constraint to a MessageWriter
-        /// </summary>
-        /// <param name="writer"></param>
-        public override void WriteDescriptionTo(MessageWriter writer)
-        {
-            writer.WritePredicate("Type assignable from");
-            writer.WriteExpectedValue(expectedType);
-        }
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework.Constraints
+{
+    /// <summary>
+    /// TypeConstraint is the abstract base for constraints
+    /// that take a Type as their expected value.
+    /// </summary>
+    public abstract class TypeConstraint : Constraint
+    {
+        /// <summary>
+        /// The expected Type used by the constraint
+        /// </summary>
+        protected Type expectedType;
+
+        /// <summary>
+        /// Construct a TypeConstraint for a given Type
+        /// </summary>
+        /// <param name="type"></param>
+        public TypeConstraint(Type type)
+        {
+            this.expectedType = type;
+        }
+
+        /// <summary>
+        /// Write the actual value for a failing constraint test to a
+        /// MessageWriter. TypeCOnstraints override this method to write
+        /// the name of the type.
+        /// </summary>
+        /// <param name="writer">The writer on which the actual value is displayed</param>
+		public override void WriteActualValueTo(MessageWriter writer)
+		{
+			writer.WriteActualValue( actual == null ? null : actual.GetType() ); 
+		}
+	}
+
+    /// <summary>
+    /// ExactTypeConstraint is used to test that an object
+    /// is of the exact type provided in the constructor
+    /// </summary>
+    public class ExactTypeConstraint : TypeConstraint
+    {
+        /// <summary>
+        /// Construct an ExactTypeConstraint for a given Type
+        /// </summary>
+        /// <param name="type"></param>
+        public ExactTypeConstraint(Type type) : base( type ) { }
+
+        /// <summary>
+        /// Test that an object is of the exact type specified
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+            return actual != null && actual.GetType() == this.expectedType;
+        }
+
+        /// <summary>
+        /// Write the description of this constraint to a MessageWriter
+        /// </summary>
+        /// <param name="writer"></param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WriteExpectedValue(expectedType);
+        }
+    }
+
+    /// <summary>
+    /// InstanceOfTypeConstraint is used to test that an object
+    /// is of the same type provided or derived from it.
+    /// </summary>
+    public class InstanceOfTypeConstraint : TypeConstraint
+    {
+        /// <summary>
+        /// Construct an InstanceOfTypeConstraint for the type provided
+        /// </summary>
+        /// <param name="type"></param>
+        public InstanceOfTypeConstraint(Type type) : base(type) { }
+
+        /// <summary>
+        /// Test whether an object is of the specified type or a derived type
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        public override bool Matches(object actual)
+        {
+            this.actual = actual;
+            return actual != null && expectedType.IsInstanceOfType(actual);
+        }
+
+        /// <summary>
+        /// Write a description of this constraint to a MessageWriter
+        /// </summary>
+        /// <param name="writer"></param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("instance of");
+            writer.WriteExpectedValue(expectedType);
+        }
+	}
+
+    /// <summary>
+    /// AssignableFromConstraint is used to test that an object
+    /// can be assigned from a given Type.
+    /// </summary>
+    public class AssignableFromConstraint : TypeConstraint
+    {
+        /// <summary>
+        /// Construct an AssignableFromConstraint for the type provided
+        /// </summary>
+        /// <param name="type"></param>
+        public AssignableFromConstraint(Type type) : base(type) { }
+
+        /// <summary>
+        /// Test whether an object can be assigned from the specified type
+        /// </summary>
+        /// <param name="actual"></param>
+        /// <returns></returns>
+        public override bool Matches(object actual)
+        {
+			this.actual = actual;
+            return actual != null && actual.GetType().IsAssignableFrom( expectedType );
+        }
+
+        /// <summary>
+        /// Write a description of this constraint to a MessageWriter
+        /// </summary>
+        /// <param name="writer"></param>
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WritePredicate("Type assignable from");
+            writer.WriteExpectedValue(expectedType);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/DescriptionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/DescriptionAttribute.cs
@@ -1,31 +1,31 @@
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// Attribute used to provide descriptive text about a 
-	/// test case or fixture.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false)]
-	public class DescriptionAttribute : Attribute
-	{
-		string description;
-
-		/// <summary>
-		/// Construct the attribute
-		/// </summary>
-		/// <param name="description">Text describing the test</param>
-		public DescriptionAttribute(string description)
-		{
-			this.description=description;
-		}
-
-		/// <summary>
-		/// Gets the test description
-		/// </summary>
-		public string Description
-		{
-			get { return description; }
-		}
-	}
-}
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// Attribute used to provide descriptive text about a 
+	/// test case or fixture.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false)]
+	public class DescriptionAttribute : Attribute
+	{
+		string description;
+
+		/// <summary>
+		/// Construct the attribute
+		/// </summary>
+		/// <param name="description">Text describing the test</param>
+		public DescriptionAttribute(string description)
+		{
+			this.description=description;
+		}
+
+		/// <summary>
+		/// Gets the test description
+		/// </summary>
+		public string Description
+		{
+			get { return description; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/ExpectedExceptionAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/ExpectedExceptionAttribute.cs
@@ -1,144 +1,144 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Enumeration indicating how the expected message parameter is to be used
-	/// </summary>
-	public enum MessageMatch
-	{
-		/// Expect an exact match
-		Exact,	
-		/// Expect a message containing the parameter string
-		Contains,
-		/// Match the regular expression provided as a parameter
-		Regex
-	}
-
-	/// <summary>
-	/// ExpectedExceptionAttribute
-	/// </summary>
-	/// 
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
-	public class ExpectedExceptionAttribute : Attribute
-	{
-		private Type expectedException;
-		private string expectedExceptionName;
-		private string expectedMessage;
-		private MessageMatch matchType;
-		private string userMessage;
-		private string handler;
-
-		/// <summary>
-		/// Constructor for a non-specific exception
-		/// </summary>
-		public ExpectedExceptionAttribute()
-		{
-		}
-
-		/// <summary>
-		/// Constructor for a given type of exception
-		/// </summary>
-		/// <param name="exceptionType">The type of the expected exception</param>
-		public ExpectedExceptionAttribute(Type exceptionType)
-		{
-			this.expectedException = exceptionType;
-			this.expectedExceptionName = exceptionType.FullName;
-		}
-
-		/// <summary>
-		/// Constructor for a given exception name
-		/// </summary>
-		/// <param name="exceptionName">The full name of the expected exception</param>
-		public ExpectedExceptionAttribute(string exceptionName)
-		{
-			this.expectedExceptionName = exceptionName;
-		}
-
-		/// <summary>
-		/// Constructor for a given type of exception and expected message text
-		/// </summary>
-		/// <param name="exceptionType">The type of the expected exception</param>
-		/// <param name="expectedMessage">The expected message text</param>
-        [Obsolete("Use named parameter format 'ExpectedMessage=...'", false)]
-        public ExpectedExceptionAttribute(Type exceptionType, string expectedMessage)
-            : this(exceptionType)
-        {
-            this.expectedMessage = expectedMessage;
-            this.matchType = MessageMatch.Exact;
-        }
-
-		/// <summary>
-		/// Constructor for a given exception name and expected message text
-		/// </summary>
-		/// <param name="exceptionName">The full name of the expected exception</param>
-		/// <param name="expectedMessage">The expected messge text</param>
-        [Obsolete("Use named parameter format 'ExpectedMessage=...'", false)]
-        public ExpectedExceptionAttribute(string exceptionName, string expectedMessage)
-            : this(exceptionName)
-        {
-            this.expectedMessage = expectedMessage;
-            this.matchType = MessageMatch.Exact;
-        }
-
-		/// <summary>
-		/// Gets or sets the expected exception type
-		/// </summary>
-		public Type ExceptionType 
-		{
-			get{ return expectedException; }
-			set{ expectedException = value; }
-		}
-
-		/// <summary>
-		/// Gets or sets the full Type name of the expected exception
-		/// </summary>
-		public string ExceptionName
-		{
-			get{ return expectedExceptionName; }
-			set{ expectedExceptionName = value; }
-		}
-
-		/// <summary>
-		/// Gets or sets the expected message text
-		/// </summary>
-		public string ExpectedMessage 
-		{
-			get { return expectedMessage; }
-			set { expectedMessage = value; }
-		}
-
-		/// <summary>
-		/// Gets or sets the user message displayed in case of failure
-		/// </summary>
-		public string UserMessage
-		{
-			get { return userMessage; }
-			set { userMessage = value; }
-		}
-
-		/// <summary>
-		///  Gets or sets the type of match to be performed on the expected message
-		/// </summary>
-		public MessageMatch MatchType
-		{
-			get { return matchType; }
-			set { matchType = value; }
-		}
-
-		/// <summary>
-		///  Gets the name of a method to be used as an exception handler
-		/// </summary>
-		public string Handler
-		{
-			get { return handler; }
-			set { handler = value; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Enumeration indicating how the expected message parameter is to be used
+	/// </summary>
+	public enum MessageMatch
+	{
+		/// Expect an exact match
+		Exact,	
+		/// Expect a message containing the parameter string
+		Contains,
+		/// Match the regular expression provided as a parameter
+		Regex
+	}
+
+	/// <summary>
+	/// ExpectedExceptionAttribute
+	/// </summary>
+	/// 
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+	public class ExpectedExceptionAttribute : Attribute
+	{
+		private Type expectedException;
+		private string expectedExceptionName;
+		private string expectedMessage;
+		private MessageMatch matchType;
+		private string userMessage;
+		private string handler;
+
+		/// <summary>
+		/// Constructor for a non-specific exception
+		/// </summary>
+		public ExpectedExceptionAttribute()
+		{
+		}
+
+		/// <summary>
+		/// Constructor for a given type of exception
+		/// </summary>
+		/// <param name="exceptionType">The type of the expected exception</param>
+		public ExpectedExceptionAttribute(Type exceptionType)
+		{
+			this.expectedException = exceptionType;
+			this.expectedExceptionName = exceptionType.FullName;
+		}
+
+		/// <summary>
+		/// Constructor for a given exception name
+		/// </summary>
+		/// <param name="exceptionName">The full name of the expected exception</param>
+		public ExpectedExceptionAttribute(string exceptionName)
+		{
+			this.expectedExceptionName = exceptionName;
+		}
+
+		/// <summary>
+		/// Constructor for a given type of exception and expected message text
+		/// </summary>
+		/// <param name="exceptionType">The type of the expected exception</param>
+		/// <param name="expectedMessage">The expected message text</param>
+        [Obsolete("Use named parameter format 'ExpectedMessage=...'", false)]
+        public ExpectedExceptionAttribute(Type exceptionType, string expectedMessage)
+            : this(exceptionType)
+        {
+            this.expectedMessage = expectedMessage;
+            this.matchType = MessageMatch.Exact;
+        }
+
+		/// <summary>
+		/// Constructor for a given exception name and expected message text
+		/// </summary>
+		/// <param name="exceptionName">The full name of the expected exception</param>
+		/// <param name="expectedMessage">The expected messge text</param>
+        [Obsolete("Use named parameter format 'ExpectedMessage=...'", false)]
+        public ExpectedExceptionAttribute(string exceptionName, string expectedMessage)
+            : this(exceptionName)
+        {
+            this.expectedMessage = expectedMessage;
+            this.matchType = MessageMatch.Exact;
+        }
+
+		/// <summary>
+		/// Gets or sets the expected exception type
+		/// </summary>
+		public Type ExceptionType 
+		{
+			get{ return expectedException; }
+			set{ expectedException = value; }
+		}
+
+		/// <summary>
+		/// Gets or sets the full Type name of the expected exception
+		/// </summary>
+		public string ExceptionName
+		{
+			get{ return expectedExceptionName; }
+			set{ expectedExceptionName = value; }
+		}
+
+		/// <summary>
+		/// Gets or sets the expected message text
+		/// </summary>
+		public string ExpectedMessage 
+		{
+			get { return expectedMessage; }
+			set { expectedMessage = value; }
+		}
+
+		/// <summary>
+		/// Gets or sets the user message displayed in case of failure
+		/// </summary>
+		public string UserMessage
+		{
+			get { return userMessage; }
+			set { userMessage = value; }
+		}
+
+		/// <summary>
+		///  Gets or sets the type of match to be performed on the expected message
+		/// </summary>
+		public MessageMatch MatchType
+		{
+			get { return matchType; }
+			set { matchType = value; }
+		}
+
+		/// <summary>
+		///  Gets the name of a method to be used as an exception handler
+		/// </summary>
+		public string Handler
+		{
+			get { return handler; }
+			set { handler = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/ExplicitAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/ExplicitAttribute.cs
@@ -1,47 +1,47 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// ExplicitAttribute marks a test or test fixture so that it will
-	/// only be run if explicitly executed from the gui or command line
-	/// or if it is included by use of a filter. The test will not be
-	/// run simply because an enclosing suite is run.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false)]
-	public class ExplicitAttribute : Attribute
-	{
-        private string reason;
-
-        /// <summary>
-		/// Default constructor
-		/// </summary>
-		public ExplicitAttribute()
-		{
-            this.reason = "";
-        }
-
-        /// <summary>
-        /// Constructor with a reason
-        /// </summary>
-        /// <param name="reason">The reason test is marked explicit</param>
-        public ExplicitAttribute(string reason)
-        {
-            this.reason = reason;
-        }
-
-        /// <summary>
-        /// The reason test is marked explicit
-        /// </summary>
-        public string Reason
-        {
-            get { return reason; }
-        }
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// ExplicitAttribute marks a test or test fixture so that it will
+	/// only be run if explicitly executed from the gui or command line
+	/// or if it is included by use of a filter. The test will not be
+	/// run simply because an enclosing suite is run.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false)]
+	public class ExplicitAttribute : Attribute
+	{
+        private string reason;
+
+        /// <summary>
+		/// Default constructor
+		/// </summary>
+		public ExplicitAttribute()
+		{
+            this.reason = "";
+        }
+
+        /// <summary>
+        /// Constructor with a reason
+        /// </summary>
+        /// <param name="reason">The reason test is marked explicit</param>
+        public ExplicitAttribute(string reason)
+        {
+            this.reason = reason;
+        }
+
+        /// <summary>
+        /// The reason test is marked explicit
+        /// </summary>
+        public string Reason
+        {
+            get { return reason; }
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/FileAssert.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/FileAssert.cs
@@ -1,333 +1,333 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.ComponentModel;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// Summary description for FileAssert.
-	/// </summary>
-	public class FileAssert
-	{
-		#region Equals and ReferenceEquals
-
-		/// <summary>
-		/// The Equals method throws an AssertionException. This is done 
-		/// to make sure there is no mistake by calling this function.
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		[EditorBrowsable(EditorBrowsableState.Never)]
-		public static new bool Equals(object a, object b)
-		{
-			throw new AssertionException("Assert.Equals should not be used for Assertions");
-		}
-
-		/// <summary>
-		/// override the default ReferenceEquals to throw an AssertionException. This 
-		/// implementation makes sure there is no mistake in calling this function 
-		/// as part of Assert. 
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		public static new void ReferenceEquals(object a, object b)
-		{
-			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
-		}
-
-		#endregion
-				
-		#region Constructor
-
-		/// <summary>
-		/// We don't actually want any instances of this object, but some people
-		/// like to inherit from it to add other static methods. Hence, the
-		/// protected constructor disallows any instances of this object. 
-		/// </summary>
-		protected FileAssert() {}
-
-		#endregion
-
-		#region AreEqual
-
-		#region Streams
-		
-		/// <summary>
-		/// Verifies that two Streams are equal.  Two Streams are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected Stream</param>
-		/// <param name="actual">The actual Stream</param>
-		/// <param name="message">The message to display if Streams are not equal</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(Stream expected, Stream actual, string message, params object[] args)
-		{
-			Assert.That( actual, new EqualConstraint( expected ), message, args );
-		}
-
-		/// <summary>
-		/// Verifies that two Streams are equal.  Two Streams are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected Stream</param>
-		/// <param name="actual">The actual Stream</param>
-		/// <param name="message">The message to display if objects are not equal</param>
-		static public void AreEqual(Stream expected, Stream actual, string message) 
-		{
-			AreEqual(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that two Streams are equal.  Two Streams are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected Stream</param>
-		/// <param name="actual">The actual Stream</param>
-		static public void AreEqual(Stream expected, Stream actual) 
-		{
-			AreEqual(expected, actual, string.Empty, null);
-		}
-
-		#endregion
-
-		#region FileInfo
-		/// <summary>
-		/// Verifies that two files are equal.  Two files are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">A file containing the value that is expected</param>
-		/// <param name="actual">A file containing the actual value</param>
-		/// <param name="message">The message to display if Streams are not equal</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(FileInfo expected, FileInfo actual, string message, params object[] args)
-		{
-			using (FileStream exStream = expected.OpenRead())
-			{
-				using (FileStream acStream = actual.OpenRead())
-				{
-					AreEqual(exStream,acStream,message,args);
-				}
-			}
-		}
-
-		/// <summary>
-		/// Verifies that two files are equal.  Two files are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">A file containing the value that is expected</param>
-		/// <param name="actual">A file containing the actual value</param>
-		/// <param name="message">The message to display if objects are not equal</param>
-		static public void AreEqual(FileInfo expected, FileInfo actual, string message) 
-		{
-			AreEqual(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that two files are equal.  Two files are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">A file containing the value that is expected</param>
-		/// <param name="actual">A file containing the actual value</param>
-		static public void AreEqual(FileInfo expected, FileInfo actual) 
-		{
-			AreEqual(expected, actual, string.Empty, null);
-		}
-
-		#endregion
-
-		#region String
-		/// <summary>
-		/// Verifies that two files are equal.  Two files are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The path to a file containing the value that is expected</param>
-		/// <param name="actual">The path to a file containing the actual value</param>
-		/// <param name="message">The message to display if Streams are not equal</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreEqual(string expected, string actual, string message, params object[] args)
-		{
-			using (FileStream exStream = File.OpenRead(expected))
-			{
-				using (FileStream acStream = File.OpenRead(actual))
-				{
-					AreEqual(exStream,acStream,message,args);
-				}
-			}
-		}
-
-		/// <summary>
-		/// Verifies that two files are equal.  Two files are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The path to a file containing the value that is expected</param>
-		/// <param name="actual">The path to a file containing the actual value</param>
-		/// <param name="message">The message to display if objects are not equal</param>
-		static public void AreEqual(string expected, string actual, string message) 
-		{
-			AreEqual(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Verifies that two files are equal.  Two files are considered
-		/// equal if both are null, or if both have the same value byte for byte.
-		/// If they are not equal an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The path to a file containing the value that is expected</param>
-		/// <param name="actual">The path to a file containing the actual value</param>
-		static public void AreEqual(string expected, string actual) 
-		{
-			AreEqual(expected, actual, string.Empty, null);
-		}
-
-		#endregion
-
-		#endregion
-
-		#region AreNotEqual
-
-		#region Streams
-		/// <summary>
-		/// Asserts that two Streams are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected Stream</param>
-		/// <param name="actual">The actual Stream</param>
-		/// <param name="message">The message to be displayed when the two Stream are the same.</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotEqual( Stream expected, Stream actual, string message, params object[] args)
-		{
-			Assert.That( actual, new NotConstraint( new EqualConstraint( expected ) ), message, args );
-		}
-
-		/// <summary>
-		/// Asserts that two Streams are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected Stream</param>
-		/// <param name="actual">The actual Stream</param>
-		/// <param name="message">The message to be displayed when the Streams are the same.</param>
-		static public void AreNotEqual(Stream expected, Stream actual, string message) 
-		{
-			AreNotEqual(expected, actual, message, null);
-		}
-   
-		/// <summary>
-		/// Asserts that two Streams are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The expected Stream</param>
-		/// <param name="actual">The actual Stream</param>
-		static public void AreNotEqual(Stream expected, Stream actual) 
-		{
-			AreNotEqual(expected, actual, string.Empty, null);
-		}
-		#endregion
-		
-		#region FileInfo
-		/// <summary>
-		/// Asserts that two files are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">A file containing the value that is expected</param>
-		/// <param name="actual">A file containing the actual value</param>
-		/// <param name="message">The message to display if Streams are not equal</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotEqual(FileInfo expected, FileInfo actual, string message, params object[] args)
-		{
-			using (FileStream exStream = expected.OpenRead())
-			{
-				using (FileStream acStream = actual.OpenRead())
-				{
-					AreNotEqual(exStream,acStream,message,args);
-				}
-			}
-		}
-
-		/// <summary>
-		/// Asserts that two files are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">A file containing the value that is expected</param>
-		/// <param name="actual">A file containing the actual value</param>
-		/// <param name="message">The message to display if objects are not equal</param>
-		static public void AreNotEqual(FileInfo expected, FileInfo actual, string message) 
-		{
-			AreNotEqual(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that two files are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">A file containing the value that is expected</param>
-		/// <param name="actual">A file containing the actual value</param>
-		static public void AreNotEqual(FileInfo expected, FileInfo actual) 
-		{
-			AreNotEqual(expected, actual, string.Empty, null);
-		}
-
-		#endregion
-		
-		#region String
-		/// <summary>
-		/// Asserts that two files are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The path to a file containing the value that is expected</param>
-		/// <param name="actual">The path to a file containing the actual value</param>
-		/// <param name="message">The message to display if Streams are not equal</param>
-		/// <param name="args">Arguments to be used in formatting the message</param>
-		static public void AreNotEqual(string expected, string actual, string message, params object[] args)
-		{
-			using (FileStream exStream = File.OpenRead(expected))
-			{
-				using (FileStream acStream = File.OpenRead(actual))
-				{
-					AreNotEqual(exStream,acStream,message,args);
-				}
-			}
-		}
-
-		/// <summary>
-		/// Asserts that two files are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The path to a file containing the value that is expected</param>
-		/// <param name="actual">The path to a file containing the actual value</param>
-		/// <param name="message">The message to display if objects are not equal</param>
-		static public void AreNotEqual(string expected, string actual, string message) 
-		{
-			AreNotEqual(expected, actual, message, null);
-		}
-
-		/// <summary>
-		/// Asserts that two files are not equal. If they are equal
-		/// an <see cref="AssertionException"/> is thrown.
-		/// </summary>
-		/// <param name="expected">The path to a file containing the value that is expected</param>
-		/// <param name="actual">The path to a file containing the actual value</param>
-		static public void AreNotEqual(string expected, string actual) 
-		{
-			AreNotEqual(expected, actual, string.Empty, null);
-		}
-
-		#endregion
-
-		#endregion
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.ComponentModel;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// Summary description for FileAssert.
+	/// </summary>
+	public class FileAssert
+	{
+		#region Equals and ReferenceEquals
+
+		/// <summary>
+		/// The Equals method throws an AssertionException. This is done 
+		/// to make sure there is no mistake by calling this function.
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		[EditorBrowsable(EditorBrowsableState.Never)]
+		public static new bool Equals(object a, object b)
+		{
+			throw new AssertionException("Assert.Equals should not be used for Assertions");
+		}
+
+		/// <summary>
+		/// override the default ReferenceEquals to throw an AssertionException. This 
+		/// implementation makes sure there is no mistake in calling this function 
+		/// as part of Assert. 
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		public static new void ReferenceEquals(object a, object b)
+		{
+			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
+		}
+
+		#endregion
+				
+		#region Constructor
+
+		/// <summary>
+		/// We don't actually want any instances of this object, but some people
+		/// like to inherit from it to add other static methods. Hence, the
+		/// protected constructor disallows any instances of this object. 
+		/// </summary>
+		protected FileAssert() {}
+
+		#endregion
+
+		#region AreEqual
+
+		#region Streams
+		
+		/// <summary>
+		/// Verifies that two Streams are equal.  Two Streams are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected Stream</param>
+		/// <param name="actual">The actual Stream</param>
+		/// <param name="message">The message to display if Streams are not equal</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(Stream expected, Stream actual, string message, params object[] args)
+		{
+			Assert.That( actual, new EqualConstraint( expected ), message, args );
+		}
+
+		/// <summary>
+		/// Verifies that two Streams are equal.  Two Streams are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected Stream</param>
+		/// <param name="actual">The actual Stream</param>
+		/// <param name="message">The message to display if objects are not equal</param>
+		static public void AreEqual(Stream expected, Stream actual, string message) 
+		{
+			AreEqual(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that two Streams are equal.  Two Streams are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected Stream</param>
+		/// <param name="actual">The actual Stream</param>
+		static public void AreEqual(Stream expected, Stream actual) 
+		{
+			AreEqual(expected, actual, string.Empty, null);
+		}
+
+		#endregion
+
+		#region FileInfo
+		/// <summary>
+		/// Verifies that two files are equal.  Two files are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">A file containing the value that is expected</param>
+		/// <param name="actual">A file containing the actual value</param>
+		/// <param name="message">The message to display if Streams are not equal</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(FileInfo expected, FileInfo actual, string message, params object[] args)
+		{
+			using (FileStream exStream = expected.OpenRead())
+			{
+				using (FileStream acStream = actual.OpenRead())
+				{
+					AreEqual(exStream,acStream,message,args);
+				}
+			}
+		}
+
+		/// <summary>
+		/// Verifies that two files are equal.  Two files are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">A file containing the value that is expected</param>
+		/// <param name="actual">A file containing the actual value</param>
+		/// <param name="message">The message to display if objects are not equal</param>
+		static public void AreEqual(FileInfo expected, FileInfo actual, string message) 
+		{
+			AreEqual(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that two files are equal.  Two files are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">A file containing the value that is expected</param>
+		/// <param name="actual">A file containing the actual value</param>
+		static public void AreEqual(FileInfo expected, FileInfo actual) 
+		{
+			AreEqual(expected, actual, string.Empty, null);
+		}
+
+		#endregion
+
+		#region String
+		/// <summary>
+		/// Verifies that two files are equal.  Two files are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The path to a file containing the value that is expected</param>
+		/// <param name="actual">The path to a file containing the actual value</param>
+		/// <param name="message">The message to display if Streams are not equal</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreEqual(string expected, string actual, string message, params object[] args)
+		{
+			using (FileStream exStream = File.OpenRead(expected))
+			{
+				using (FileStream acStream = File.OpenRead(actual))
+				{
+					AreEqual(exStream,acStream,message,args);
+				}
+			}
+		}
+
+		/// <summary>
+		/// Verifies that two files are equal.  Two files are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The path to a file containing the value that is expected</param>
+		/// <param name="actual">The path to a file containing the actual value</param>
+		/// <param name="message">The message to display if objects are not equal</param>
+		static public void AreEqual(string expected, string actual, string message) 
+		{
+			AreEqual(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Verifies that two files are equal.  Two files are considered
+		/// equal if both are null, or if both have the same value byte for byte.
+		/// If they are not equal an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The path to a file containing the value that is expected</param>
+		/// <param name="actual">The path to a file containing the actual value</param>
+		static public void AreEqual(string expected, string actual) 
+		{
+			AreEqual(expected, actual, string.Empty, null);
+		}
+
+		#endregion
+
+		#endregion
+
+		#region AreNotEqual
+
+		#region Streams
+		/// <summary>
+		/// Asserts that two Streams are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected Stream</param>
+		/// <param name="actual">The actual Stream</param>
+		/// <param name="message">The message to be displayed when the two Stream are the same.</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotEqual( Stream expected, Stream actual, string message, params object[] args)
+		{
+			Assert.That( actual, new NotConstraint( new EqualConstraint( expected ) ), message, args );
+		}
+
+		/// <summary>
+		/// Asserts that two Streams are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected Stream</param>
+		/// <param name="actual">The actual Stream</param>
+		/// <param name="message">The message to be displayed when the Streams are the same.</param>
+		static public void AreNotEqual(Stream expected, Stream actual, string message) 
+		{
+			AreNotEqual(expected, actual, message, null);
+		}
+   
+		/// <summary>
+		/// Asserts that two Streams are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The expected Stream</param>
+		/// <param name="actual">The actual Stream</param>
+		static public void AreNotEqual(Stream expected, Stream actual) 
+		{
+			AreNotEqual(expected, actual, string.Empty, null);
+		}
+		#endregion
+		
+		#region FileInfo
+		/// <summary>
+		/// Asserts that two files are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">A file containing the value that is expected</param>
+		/// <param name="actual">A file containing the actual value</param>
+		/// <param name="message">The message to display if Streams are not equal</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotEqual(FileInfo expected, FileInfo actual, string message, params object[] args)
+		{
+			using (FileStream exStream = expected.OpenRead())
+			{
+				using (FileStream acStream = actual.OpenRead())
+				{
+					AreNotEqual(exStream,acStream,message,args);
+				}
+			}
+		}
+
+		/// <summary>
+		/// Asserts that two files are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">A file containing the value that is expected</param>
+		/// <param name="actual">A file containing the actual value</param>
+		/// <param name="message">The message to display if objects are not equal</param>
+		static public void AreNotEqual(FileInfo expected, FileInfo actual, string message) 
+		{
+			AreNotEqual(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that two files are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">A file containing the value that is expected</param>
+		/// <param name="actual">A file containing the actual value</param>
+		static public void AreNotEqual(FileInfo expected, FileInfo actual) 
+		{
+			AreNotEqual(expected, actual, string.Empty, null);
+		}
+
+		#endregion
+		
+		#region String
+		/// <summary>
+		/// Asserts that two files are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The path to a file containing the value that is expected</param>
+		/// <param name="actual">The path to a file containing the actual value</param>
+		/// <param name="message">The message to display if Streams are not equal</param>
+		/// <param name="args">Arguments to be used in formatting the message</param>
+		static public void AreNotEqual(string expected, string actual, string message, params object[] args)
+		{
+			using (FileStream exStream = File.OpenRead(expected))
+			{
+				using (FileStream acStream = File.OpenRead(actual))
+				{
+					AreNotEqual(exStream,acStream,message,args);
+				}
+			}
+		}
+
+		/// <summary>
+		/// Asserts that two files are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The path to a file containing the value that is expected</param>
+		/// <param name="actual">The path to a file containing the actual value</param>
+		/// <param name="message">The message to display if objects are not equal</param>
+		static public void AreNotEqual(string expected, string actual, string message) 
+		{
+			AreNotEqual(expected, actual, message, null);
+		}
+
+		/// <summary>
+		/// Asserts that two files are not equal. If they are equal
+		/// an <see cref="AssertionException"/> is thrown.
+		/// </summary>
+		/// <param name="expected">The path to a file containing the value that is expected</param>
+		/// <param name="actual">The path to a file containing the actual value</param>
+		static public void AreNotEqual(string expected, string actual) 
+		{
+			AreNotEqual(expected, actual, string.Empty, null);
+		}
+
+		#endregion
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/GlobalSettings.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/GlobalSettings.cs
@@ -1,16 +1,16 @@
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// GlobalSettings is a place for setting default values used
-	/// by the framework in performing asserts.
-	/// </summary>
-	public class GlobalSettings
-	{
-		/// <summary>
-		/// Default tolerance for floating point equality
-		/// </summary>
-		public static double DefaultFloatingPointTolerance = 0.0d;
-	}
-}
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// GlobalSettings is a place for setting default values used
+	/// by the framework in performing asserts.
+	/// </summary>
+	public class GlobalSettings
+	{
+		/// <summary>
+		/// Default tolerance for floating point equality
+		/// </summary>
+		public static double DefaultFloatingPointTolerance = 0.0d;
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/IAsserter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/IAsserter.cs
@@ -1,41 +1,41 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// NOTE: The use of asserters for extending NUnit has
-	/// now been replaced by the use of constraints. This
-	/// interface is marked obsolete.
-	/// 
-	/// The interface implemented by an asserter. Asserters
-	/// encapsulate a condition test and generation of an
-	/// AssertionException with a tailored message. They
-	/// are used by the Assert class as helper objects.
-	/// 
-	/// User-defined asserters may be passed to the
-	/// Assert.DoAssert method in order to implement
-	/// extended asserts.
-	/// </summary>
-	[Obsolete("Use Constraints rather than Asserters for new work")]
-	public interface IAsserter
-	{
-		/// <summary>
-		/// Test the condition for the assertion.
-		/// </summary>
-		/// <returns>True if the test succeeds</returns>
-		bool Test();
-
-		/// <summary>
-		/// Return the message giving the failure reason.
-		/// The return value is unspecified if no failure
-		/// has occured.
-		/// </summary>
-		string Message { get; }
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// NOTE: The use of asserters for extending NUnit has
+	/// now been replaced by the use of constraints. This
+	/// interface is marked obsolete.
+	/// 
+	/// The interface implemented by an asserter. Asserters
+	/// encapsulate a condition test and generation of an
+	/// AssertionException with a tailored message. They
+	/// are used by the Assert class as helper objects.
+	/// 
+	/// User-defined asserters may be passed to the
+	/// Assert.DoAssert method in order to implement
+	/// extended asserts.
+	/// </summary>
+	[Obsolete("Use Constraints rather than Asserters for new work")]
+	public interface IAsserter
+	{
+		/// <summary>
+		/// Test the condition for the assertion.
+		/// </summary>
+		/// <returns>True if the test succeeds</returns>
+		bool Test();
+
+		/// <summary>
+		/// Return the message giving the failure reason.
+		/// The return value is unspecified if no failure
+		/// has occured.
+		/// </summary>
+		string Message { get; }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/IExpectException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/IExpectException.cs
@@ -1,25 +1,25 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-    /// <summary>
-    /// Interface implemented by a user fixture in order to
-    /// validate any expected exceptions. It is only called
-    /// for test methods marked with the ExpectedException
-    /// attribute.
-    /// </summary>
-	public interface IExpectException
-    {
-		/// <summary>
-		/// Method to handle an expected exception
-		/// </summary>
-		/// <param name="ex">The exception to be handled</param>
-        void HandleException(Exception ex);
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+    /// <summary>
+    /// Interface implemented by a user fixture in order to
+    /// validate any expected exceptions. It is only called
+    /// for test methods marked with the ExpectedException
+    /// attribute.
+    /// </summary>
+	public interface IExpectException
+    {
+		/// <summary>
+		/// Method to handle an expected exception
+		/// </summary>
+		/// <param name="ex">The exception to be handled</param>
+        void HandleException(Exception ex);
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/IgnoreAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/IgnoreAttribute.cs
@@ -1,47 +1,47 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Attribute used to mark a test that is to be ignored.
-	/// Ignored tests result in a warning message when the
-	/// tests are run.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Method|AttributeTargets.Class|AttributeTargets.Assembly, AllowMultiple=false)]
-	public class IgnoreAttribute : Attribute
-	{
-		private string reason;
-
-		/// <summary>
-		/// Constructs the attribute without giving a reason 
-		/// for ignoring the test.
-		/// </summary>
-		public IgnoreAttribute()
-		{
-			this.reason = "";
-		}
-
-		/// <summary>
-		/// Constructs the attribute giving a reason for ignoring the test
-		/// </summary>
-		/// <param name="reason">The reason for ignoring the test</param>
-		public IgnoreAttribute(string reason)
-		{
-			this.reason = reason;
-		}
-
-		/// <summary>
-		/// The reason for ignoring a test
-		/// </summary>
-		public string Reason
-		{
-			get { return reason; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Attribute used to mark a test that is to be ignored.
+	/// Ignored tests result in a warning message when the
+	/// tests are run.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Method|AttributeTargets.Class|AttributeTargets.Assembly, AllowMultiple=false)]
+	public class IgnoreAttribute : Attribute
+	{
+		private string reason;
+
+		/// <summary>
+		/// Constructs the attribute without giving a reason 
+		/// for ignoring the test.
+		/// </summary>
+		public IgnoreAttribute()
+		{
+			this.reason = "";
+		}
+
+		/// <summary>
+		/// Constructs the attribute giving a reason for ignoring the test
+		/// </summary>
+		/// <param name="reason">The reason for ignoring the test</param>
+		public IgnoreAttribute(string reason)
+		{
+			this.reason = reason;
+		}
+
+		/// <summary>
+		/// The reason for ignoring a test
+		/// </summary>
+		public string Reason
+		{
+			get { return reason; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/IgnoreException.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/IgnoreException.cs
@@ -1,38 +1,38 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework 
-{
-	using System;
-	using System.Runtime.Serialization;
-	
-	/// <summary>
-	/// Thrown when an assertion failed.
-	/// </summary>
-	[Serializable]
-	public class IgnoreException : System.Exception
-	{
-		/// <param name="message"></param>
-		public IgnoreException (string message) : base(message) 
-		{}
-
-		/// <param name="message">The error message that explains 
-		/// the reason for the exception</param>
-		/// <param name="inner">The exception that caused the 
-		/// current exception</param>
-		public IgnoreException(string message, Exception inner) :
-			base(message, inner) 
-		{}
-
-		/// <summary>
-		/// Serialization Constructor
-		/// </summary>
-		protected IgnoreException(SerializationInfo info, 
-			StreamingContext context) : base(info,context)
-		{}
-
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework 
+{
+	using System;
+	using System.Runtime.Serialization;
+	
+	/// <summary>
+	/// Thrown when an assertion failed.
+	/// </summary>
+	[Serializable]
+	public class IgnoreException : System.Exception
+	{
+		/// <param name="message"></param>
+		public IgnoreException (string message) : base(message) 
+		{}
+
+		/// <param name="message">The error message that explains 
+		/// the reason for the exception</param>
+		/// <param name="inner">The exception that caused the 
+		/// current exception</param>
+		public IgnoreException(string message, Exception inner) :
+			base(message, inner) 
+		{}
+
+		/// <summary>
+		/// Serialization Constructor
+		/// </summary>
+		protected IgnoreException(SerializationInfo info, 
+			StreamingContext context) : base(info,context)
+		{}
+
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/IncludeExcludeAttributes.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/IncludeExcludeAttributes.cs
@@ -1,106 +1,106 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// Abstract base for Attributes that are used to include tests
-	/// in the test run based on environmental settings.
-	/// </summary>
-	public abstract class IncludeExcludeAttribute : Attribute
-	{
-		private string include;
-		private string exclude;
-		private string reason;
-
-		/// <summary>
-		/// Constructor with no included items specified, for use
-		/// with named property syntax.
-		/// </summary>
-		public IncludeExcludeAttribute() { }
-
-		/// <summary>
-		/// Constructor taking one or more included items
-		/// </summary>
-		/// <param name="include">Comma-delimited list of included items</param>
-		public IncludeExcludeAttribute( string include )
-		{
-			this.include = include;
-		}
-
-		/// <summary>
-		/// Name of the item that is needed in order for
-		/// a test to run. Multiple itemss may be given,
-		/// separated by a comma.
-		/// </summary>
-		public string Include
-		{
-			get { return this.include; }
-			set { include = value; }
-		}
-
-		/// <summary>
-		/// Name of the item to be excluded. Multiple items
-		/// may be given, separated by a comma.
-		/// </summary>
-		public string Exclude
-		{
-			get { return this.exclude; }
-			set { this.exclude = value; }
-		}
-
-		/// <summary>
-		/// The reason for including or excluding the test
-		/// </summary>
-		public string Reason
-		{
-			get { return reason; }
-			set { reason = value; }
-		}
-	}
-
-	/// <summary>
-	/// PlatformAttribute is used to mark a test fixture or an
-	/// individual method as applying to a particular platform only.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
-	public class PlatformAttribute : IncludeExcludeAttribute
-	{
-		/// <summary>
-		/// Constructor with no platforms specified, for use
-		/// with named property syntax.
-		/// </summary>
-		public PlatformAttribute() { }
-
-		/// <summary>
-		/// Constructor taking one or more platforms
-		/// </summary>
-		/// <param name="platforms">Comma-deliminted list of platforms</param>
-		public PlatformAttribute( string platforms ) : base( platforms ) { }
-	}
-
-	/// <summary>
-	/// CultureAttribute is used to mark a test fixture or an
-	/// individual method as applying to a particular Culture only.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false)]
-	public class CultureAttribute : IncludeExcludeAttribute
-	{
-		/// <summary>
-		/// Constructor with no cultures specified, for use
-		/// with named property syntax.
-		/// </summary>
-		public CultureAttribute() { }
-
-		/// <summary>
-		/// Constructor taking one or more cultures
-		/// </summary>
-		/// <param name="cultures">Comma-deliminted list of cultures</param>
-		public CultureAttribute( string cultures ) : base( cultures ) { }
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// Abstract base for Attributes that are used to include tests
+	/// in the test run based on environmental settings.
+	/// </summary>
+	public abstract class IncludeExcludeAttribute : Attribute
+	{
+		private string include;
+		private string exclude;
+		private string reason;
+
+		/// <summary>
+		/// Constructor with no included items specified, for use
+		/// with named property syntax.
+		/// </summary>
+		public IncludeExcludeAttribute() { }
+
+		/// <summary>
+		/// Constructor taking one or more included items
+		/// </summary>
+		/// <param name="include">Comma-delimited list of included items</param>
+		public IncludeExcludeAttribute( string include )
+		{
+			this.include = include;
+		}
+
+		/// <summary>
+		/// Name of the item that is needed in order for
+		/// a test to run. Multiple itemss may be given,
+		/// separated by a comma.
+		/// </summary>
+		public string Include
+		{
+			get { return this.include; }
+			set { include = value; }
+		}
+
+		/// <summary>
+		/// Name of the item to be excluded. Multiple items
+		/// may be given, separated by a comma.
+		/// </summary>
+		public string Exclude
+		{
+			get { return this.exclude; }
+			set { this.exclude = value; }
+		}
+
+		/// <summary>
+		/// The reason for including or excluding the test
+		/// </summary>
+		public string Reason
+		{
+			get { return reason; }
+			set { reason = value; }
+		}
+	}
+
+	/// <summary>
+	/// PlatformAttribute is used to mark a test fixture or an
+	/// individual method as applying to a particular platform only.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
+	public class PlatformAttribute : IncludeExcludeAttribute
+	{
+		/// <summary>
+		/// Constructor with no platforms specified, for use
+		/// with named property syntax.
+		/// </summary>
+		public PlatformAttribute() { }
+
+		/// <summary>
+		/// Constructor taking one or more platforms
+		/// </summary>
+		/// <param name="platforms">Comma-deliminted list of platforms</param>
+		public PlatformAttribute( string platforms ) : base( platforms ) { }
+	}
+
+	/// <summary>
+	/// CultureAttribute is used to mark a test fixture or an
+	/// individual method as applying to a particular Culture only.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=false)]
+	public class CultureAttribute : IncludeExcludeAttribute
+	{
+		/// <summary>
+		/// Constructor with no cultures specified, for use
+		/// with named property syntax.
+		/// </summary>
+		public CultureAttribute() { }
+
+		/// <summary>
+		/// Constructor taking one or more cultures
+		/// </summary>
+		/// <param name="cultures">Comma-deliminted list of cultures</param>
+		public CultureAttribute( string cultures ) : base( cultures ) { }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/MessageWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/MessageWriter.cs
@@ -1,139 +1,139 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Collections;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// MessageWriter is the abstract base for classes that write
-	/// constraint descriptions and messages in some form. The
-	/// class has separate methods for writing various components
-	/// of a message, allowing implementations to tailor the
-	/// presentation as needed.
-	/// </summary>
-    public abstract class MessageWriter : StringWriter
-    {
-
-		/// <summary>
-		/// Construct a MessageWriter given a culture
-		/// </summary>
-        public MessageWriter() : base( System.Globalization.CultureInfo.InvariantCulture ) { }
-
-        /// <summary>
-        /// Abstract method to get the max line length
-        /// </summary>
-        public abstract int MaxLineLength { get; set; }
-
-		/// <summary>
-		/// Method to write single line  message with optional args, usually
-		/// written to precede the general failure message.
-		/// </summary>
-		/// <param name="message">The message to be written</param>
-		/// <param name="args">Any arguments used in formatting the message</param>
-		public void WriteMessageLine(string message, params object[] args)
-        {
-            WriteMessageLine(0, message, args);
-        }
-
-        /// <summary>
-        /// Method to write single line  message with optional args, usually
-        /// written to precede the general failure message, at a givel 
-        /// indentation level.
-        /// </summary>
-        /// <param name="level">The indentation level of the message</param>
-        /// <param name="message">The message to be written</param>
-        /// <param name="args">Any arguments used in formatting the message</param>
-        public abstract void WriteMessageLine(int level, string message, params object[] args);
-
-        /// <summary>
-        /// Display Expected and Actual lines for a constraint. This
-        /// is called by MessageWriter's default implementation of 
-        /// WriteMessageTo and provides the generic two-line display. 
-        /// </summary>
-        /// <param name="constraint">The constraint that failed</param>
-        public abstract void DisplayDifferences(Constraint constraint);
-
-		/// <summary>
-		/// Display Expected and Actual lines for given values. This
-		/// method may be called by constraints that need more control over
-		/// the display of actual and expected values than is provided
-		/// by the default implementation.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value causing the failure</param>
-		public abstract void DisplayDifferences(object expected, object actual);
-
-		/// <summary>
-		/// Display Expected and Actual lines for given values, including
-		/// a tolerance value on the Expected line.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value causing the failure</param>
-		/// <param name="tolerance">The tolerance within which the test was made</param>
-		public abstract void DisplayDifferences(object expected, object actual, object tolerance);
-
-		/// <summary>
-        /// Display the expected and actual string values on separate lines.
-        /// If the mismatch parameter is >=0, an additional line is displayed
-        /// line containing a caret that points to the mismatch point.
-        /// </summary>
-        /// <param name="expected">The expected string value</param>
-        /// <param name="actual">The actual string value</param>
-        /// <param name="mismatch">The point at which the strings don't match or -1</param>
-        /// <param name="ignoreCase">If true, case is ignored in locating the point where the strings differ</param>
-        /// <param name="clipping">If true, the strings should be clipped to fit the line</param>
-        public abstract void DisplayStringDifferences(string expected, string actual, int mismatch, bool ignoreCase, bool clipping);
-
-        /// <summary>
-        /// Writes the text for a connector.
-        /// </summary>
-        /// <param name="connector">The connector.</param>
-        public abstract void WriteConnector(string connector);
-
-        /// <summary>
-        /// Writes the text for a predicate.
-        /// </summary>
-        /// <param name="predicate">The predicate.</param>
-        public abstract void WritePredicate(string predicate);
-
-		/// <summary>
-		/// Writes the text for an expected value.
-		/// </summary>
-		/// <param name="expected">The expected value.</param>
-		public abstract void WriteExpectedValue(object expected);
-
-		/// <summary>
-		/// Writes the text for a modifier
-		/// </summary>
-		/// <param name="modifier">The modifier.</param>
-		public abstract void WriteModifier(string modifier);
-
-		/// <summary>
-		/// Writes the text for an actual value.
-		/// </summary>
-		/// <param name="actual">The actual value.</param>
-		public abstract void WriteActualValue(object actual);
-
-		/// <summary>
-		/// Writes the text for a generalized value.
-		/// </summary>
-		/// <param name="val">The value.</param>
-		public abstract void WriteValue(object val);
-    
-		/// <summary>
-		/// Writes the text for a collection value,
-		/// starting at a particular point, to a max length
-		/// </summary>
-		/// <param name="collection">The collection containing elements to write.</param>
-        /// <param name="start">The starting point of the elements to write</param>
-        /// <param name="max">The maximum number of elements to write</param>
-		public abstract void WriteCollectionElements(ICollection collection, int start, int max);
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// MessageWriter is the abstract base for classes that write
+	/// constraint descriptions and messages in some form. The
+	/// class has separate methods for writing various components
+	/// of a message, allowing implementations to tailor the
+	/// presentation as needed.
+	/// </summary>
+    public abstract class MessageWriter : StringWriter
+    {
+
+		/// <summary>
+		/// Construct a MessageWriter given a culture
+		/// </summary>
+        public MessageWriter() : base( System.Globalization.CultureInfo.InvariantCulture ) { }
+
+        /// <summary>
+        /// Abstract method to get the max line length
+        /// </summary>
+        public abstract int MaxLineLength { get; set; }
+
+		/// <summary>
+		/// Method to write single line  message with optional args, usually
+		/// written to precede the general failure message.
+		/// </summary>
+		/// <param name="message">The message to be written</param>
+		/// <param name="args">Any arguments used in formatting the message</param>
+		public void WriteMessageLine(string message, params object[] args)
+        {
+            WriteMessageLine(0, message, args);
+        }
+
+        /// <summary>
+        /// Method to write single line  message with optional args, usually
+        /// written to precede the general failure message, at a givel 
+        /// indentation level.
+        /// </summary>
+        /// <param name="level">The indentation level of the message</param>
+        /// <param name="message">The message to be written</param>
+        /// <param name="args">Any arguments used in formatting the message</param>
+        public abstract void WriteMessageLine(int level, string message, params object[] args);
+
+        /// <summary>
+        /// Display Expected and Actual lines for a constraint. This
+        /// is called by MessageWriter's default implementation of 
+        /// WriteMessageTo and provides the generic two-line display. 
+        /// </summary>
+        /// <param name="constraint">The constraint that failed</param>
+        public abstract void DisplayDifferences(Constraint constraint);
+
+		/// <summary>
+		/// Display Expected and Actual lines for given values. This
+		/// method may be called by constraints that need more control over
+		/// the display of actual and expected values than is provided
+		/// by the default implementation.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value causing the failure</param>
+		public abstract void DisplayDifferences(object expected, object actual);
+
+		/// <summary>
+		/// Display Expected and Actual lines for given values, including
+		/// a tolerance value on the Expected line.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value causing the failure</param>
+		/// <param name="tolerance">The tolerance within which the test was made</param>
+		public abstract void DisplayDifferences(object expected, object actual, object tolerance);
+
+		/// <summary>
+        /// Display the expected and actual string values on separate lines.
+        /// If the mismatch parameter is >=0, an additional line is displayed
+        /// line containing a caret that points to the mismatch point.
+        /// </summary>
+        /// <param name="expected">The expected string value</param>
+        /// <param name="actual">The actual string value</param>
+        /// <param name="mismatch">The point at which the strings don't match or -1</param>
+        /// <param name="ignoreCase">If true, case is ignored in locating the point where the strings differ</param>
+        /// <param name="clipping">If true, the strings should be clipped to fit the line</param>
+        public abstract void DisplayStringDifferences(string expected, string actual, int mismatch, bool ignoreCase, bool clipping);
+
+        /// <summary>
+        /// Writes the text for a connector.
+        /// </summary>
+        /// <param name="connector">The connector.</param>
+        public abstract void WriteConnector(string connector);
+
+        /// <summary>
+        /// Writes the text for a predicate.
+        /// </summary>
+        /// <param name="predicate">The predicate.</param>
+        public abstract void WritePredicate(string predicate);
+
+		/// <summary>
+		/// Writes the text for an expected value.
+		/// </summary>
+		/// <param name="expected">The expected value.</param>
+		public abstract void WriteExpectedValue(object expected);
+
+		/// <summary>
+		/// Writes the text for a modifier
+		/// </summary>
+		/// <param name="modifier">The modifier.</param>
+		public abstract void WriteModifier(string modifier);
+
+		/// <summary>
+		/// Writes the text for an actual value.
+		/// </summary>
+		/// <param name="actual">The actual value.</param>
+		public abstract void WriteActualValue(object actual);
+
+		/// <summary>
+		/// Writes the text for a generalized value.
+		/// </summary>
+		/// <param name="val">The value.</param>
+		public abstract void WriteValue(object val);
+    
+		/// <summary>
+		/// Writes the text for a collection value,
+		/// starting at a particular point, to a max length
+		/// </summary>
+		/// <param name="collection">The collection containing elements to write.</param>
+        /// <param name="start">The starting point of the elements to write</param>
+        /// <param name="max">The maximum number of elements to write</param>
+		public abstract void WriteCollectionElements(ICollection collection, int start, int max);
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/MsgUtils.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/MsgUtils.cs
@@ -1,217 +1,217 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Text;
-using System.Collections;
-
-namespace NUnit.Framework
-{
-    /// <summary>
-    /// Static methods used in creating messages
-    /// </summary>
-    public class MsgUtils
-    {
-        /// <summary>
-        /// Static string used when strings are clipped
-        /// </summary>
-        public static readonly string ELLIPSIS = "...";
-
-        /// <summary>
-        /// Returns the representation of a type as used in NUnitLite.
-        /// This is the same as Type.ToString() except for arrays,
-        /// which are displayed with their declared sizes.
-        /// </summary>
-        /// <param name="obj"></param>
-        /// <returns></returns>
-        public static string GetTypeRepresentation(object obj)
-        {
-            Array array = obj as Array;
-            if ( array == null )
-                return string.Format( "<{0}>", obj.GetType() );
-
-            StringBuilder sb = new StringBuilder();
-            Type elementType = array.GetType();
-            int nest = 0;
-            while (elementType.IsArray)
-            {
-                elementType = elementType.GetElementType();
-                ++nest;
-            }
-            sb.Append(elementType.ToString());
-            sb.Append('[');
-            for (int r = 0; r < array.Rank; r++)
-            {
-                if (r > 0) sb.Append(',');
-                sb.Append(array.GetLength(r));
-            }
-            sb.Append(']');
-
-            while (--nest > 0)
-                sb.Append("[]");
-
-            return string.Format( "<{0}>", sb.ToString() );
-        }
-        /// <summary>
-        /// Converts any control characters in a string 
-        /// to their escaped representation.
-        /// </summary>
-        /// <param name="s">The string to be converted</param>
-        /// <returns>The converted string</returns>
-        public static string ConvertWhitespace(string s)
-        {
-			if( s != null )
-			{
-				s = s.Replace( "\\", "\\\\" );
-				s = s.Replace( "\r", "\\r" );
-				s = s.Replace( "\n", "\\n" );
-				s = s.Replace( "\t", "\\t" );
-			}
-			return s;
-        }
-
-        /// <summary>
-        /// Return the a string representation for a set of indices into an array
-        /// </summary>
-        /// <param name="indices">Array of indices for which a string is needed</param>
-        public static string GetArrayIndicesAsString(int[] indices)
-        {
-            StringBuilder sb = new StringBuilder();
-            sb.Append('[');
-            for (int r = 0; r < indices.Length; r++)
-            {
-                if (r > 0) sb.Append(',');
-                sb.Append(indices[r].ToString());
-            }
-            sb.Append(']');
-            return sb.ToString();
-        }
-
-        /// <summary>
-        /// Get an array of indices representing the point in a collection or
-        /// array corresponding to a single int index into the collection.
-        /// </summary>
-        /// <param name="collection">The collection to which the indices apply</param>
-        /// <param name="index">Index in the collection</param>
-        /// <returns>Array of indices</returns>
-        public static int[] GetArrayIndicesFromCollectionIndex(ICollection collection, int index)
-        {
-            Array array = collection as Array;
-
-            if ( array == null || array.Rank == 1)
-                return new int[] { index };
-
-            int[] result = new int[array.Rank];
-
-            for (int r = array.Rank; --r > 0; )
-            {
-                int l = array.GetLength(r);
-                result[r] = index % l;
-                index /= l;
-            }
-
-            result[0] = index;
-            return result;
-        }
-
-        /// <summary>
-        /// Clip a string to a given length, starting at a particular offset, returning the clipped
-        /// string with ellipses representing the removed parts
-        /// </summary>
-        /// <param name="s">The string to be clipped</param>
-        /// <param name="maxStringLength">The maximum permitted length of the result string</param>
-        /// <param name="clipStart">The point at which to start clipping</param>
-        /// <returns>The clipped string</returns>
-        public static string ClipString(string s, int maxStringLength, int clipStart)
-        {
-            int clipLength = maxStringLength;
-            StringBuilder sb = new StringBuilder();
-
-            if (clipStart > 0)
-            {
-                clipLength -= ELLIPSIS.Length;
-                sb.Append( ELLIPSIS );
-            }
-
-            if (s.Length - clipStart > clipLength)
-            {
-                clipLength -= ELLIPSIS.Length;
-                sb.Append( s.Substring( clipStart, clipLength ));
-                sb.Append(ELLIPSIS);
-            }
-            else if (clipStart > 0)
-                sb.Append( s.Substring(clipStart));
-            else
-                sb.Append( s );
- 
-            return sb.ToString();
-        }
-
-        /// <summary>
-        /// Clip the expected and actual strings in a coordinated fashion, 
-        /// so that they may be displayed together.
-        /// </summary>
-        /// <param name="expected"></param>
-        /// <param name="actual"></param>
-        /// <param name="maxDisplayLength"></param>
-        /// <param name="mismatch"></param>
-        public static void ClipExpectedAndActual(ref string expected, ref string actual, int maxDisplayLength, int mismatch)
-        {
-            // Case 1: Both strings fit on line
-            int maxStringLength = Math.Max(expected.Length, actual.Length);
-            if (maxStringLength <= maxDisplayLength)
-                return;
-
-            // Case 2: Assume that the tail of each string fits on line
-            int clipLength = maxDisplayLength - ELLIPSIS.Length;
-            int tailLength = clipLength - mismatch;
-            int clipStart = maxStringLength - clipLength;
-
-            // Case 3: If it doesn't, center the mismatch position
-            if ( clipStart > mismatch )
-                clipStart = Math.Max( 0, mismatch - clipLength / 2 );
-
-            expected = ClipString(expected, maxDisplayLength, clipStart);
-            actual = ClipString(actual, maxDisplayLength, clipStart);
-        }
-
-        /// <summary>
-        /// Shows the position two strings start to differ.  Comparison 
-        /// starts at the start index.
-        /// </summary>
-        /// <param name="expected">The expected string</param>
-        /// <param name="actual">The actual string</param>
-        /// <param name="istart">The index in the strings at which comparison should start</param>
-        /// <param name="ignoreCase">Boolean indicating whether case should be ignored</param>
-        /// <returns>-1 if no mismatch found, or the index where mismatch found</returns>
-        static public int FindMismatchPosition(string expected, string actual, int istart, bool ignoreCase)
-        {
-            int length = Math.Min(expected.Length, actual.Length);
-
-            string s1 = ignoreCase ? expected.ToLower() : expected;
-            string s2 = ignoreCase ? actual.ToLower() : actual;
-
-            for (int i = istart; i < length; i++)
-            {
-                if (s1[i] != s2[i])
-                    return i;
-            }
-
-            //
-            // Strings have same content up to the length of the shorter string.
-            // Mismatch occurs because string lengths are different, so show
-            // that they start differing where the shortest string ends
-            //
-            if (expected.Length != actual.Length)
-                return length;
-
-            //
-            // Same strings : We shouldn't get here
-            //
-            return -1;
-        }
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Text;
+using System.Collections;
+
+namespace NUnit.Framework
+{
+    /// <summary>
+    /// Static methods used in creating messages
+    /// </summary>
+    public class MsgUtils
+    {
+        /// <summary>
+        /// Static string used when strings are clipped
+        /// </summary>
+        public static readonly string ELLIPSIS = "...";
+
+        /// <summary>
+        /// Returns the representation of a type as used in NUnitLite.
+        /// This is the same as Type.ToString() except for arrays,
+        /// which are displayed with their declared sizes.
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public static string GetTypeRepresentation(object obj)
+        {
+            Array array = obj as Array;
+            if ( array == null )
+                return string.Format( "<{0}>", obj.GetType() );
+
+            StringBuilder sb = new StringBuilder();
+            Type elementType = array.GetType();
+            int nest = 0;
+            while (elementType.IsArray)
+            {
+                elementType = elementType.GetElementType();
+                ++nest;
+            }
+            sb.Append(elementType.ToString());
+            sb.Append('[');
+            for (int r = 0; r < array.Rank; r++)
+            {
+                if (r > 0) sb.Append(',');
+                sb.Append(array.GetLength(r));
+            }
+            sb.Append(']');
+
+            while (--nest > 0)
+                sb.Append("[]");
+
+            return string.Format( "<{0}>", sb.ToString() );
+        }
+        /// <summary>
+        /// Converts any control characters in a string 
+        /// to their escaped representation.
+        /// </summary>
+        /// <param name="s">The string to be converted</param>
+        /// <returns>The converted string</returns>
+        public static string ConvertWhitespace(string s)
+        {
+			if( s != null )
+			{
+				s = s.Replace( "\\", "\\\\" );
+				s = s.Replace( "\r", "\\r" );
+				s = s.Replace( "\n", "\\n" );
+				s = s.Replace( "\t", "\\t" );
+			}
+			return s;
+        }
+
+        /// <summary>
+        /// Return the a string representation for a set of indices into an array
+        /// </summary>
+        /// <param name="indices">Array of indices for which a string is needed</param>
+        public static string GetArrayIndicesAsString(int[] indices)
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.Append('[');
+            for (int r = 0; r < indices.Length; r++)
+            {
+                if (r > 0) sb.Append(',');
+                sb.Append(indices[r].ToString());
+            }
+            sb.Append(']');
+            return sb.ToString();
+        }
+
+        /// <summary>
+        /// Get an array of indices representing the point in a collection or
+        /// array corresponding to a single int index into the collection.
+        /// </summary>
+        /// <param name="collection">The collection to which the indices apply</param>
+        /// <param name="index">Index in the collection</param>
+        /// <returns>Array of indices</returns>
+        public static int[] GetArrayIndicesFromCollectionIndex(ICollection collection, int index)
+        {
+            Array array = collection as Array;
+
+            if ( array == null || array.Rank == 1)
+                return new int[] { index };
+
+            int[] result = new int[array.Rank];
+
+            for (int r = array.Rank; --r > 0; )
+            {
+                int l = array.GetLength(r);
+                result[r] = index % l;
+                index /= l;
+            }
+
+            result[0] = index;
+            return result;
+        }
+
+        /// <summary>
+        /// Clip a string to a given length, starting at a particular offset, returning the clipped
+        /// string with ellipses representing the removed parts
+        /// </summary>
+        /// <param name="s">The string to be clipped</param>
+        /// <param name="maxStringLength">The maximum permitted length of the result string</param>
+        /// <param name="clipStart">The point at which to start clipping</param>
+        /// <returns>The clipped string</returns>
+        public static string ClipString(string s, int maxStringLength, int clipStart)
+        {
+            int clipLength = maxStringLength;
+            StringBuilder sb = new StringBuilder();
+
+            if (clipStart > 0)
+            {
+                clipLength -= ELLIPSIS.Length;
+                sb.Append( ELLIPSIS );
+            }
+
+            if (s.Length - clipStart > clipLength)
+            {
+                clipLength -= ELLIPSIS.Length;
+                sb.Append( s.Substring( clipStart, clipLength ));
+                sb.Append(ELLIPSIS);
+            }
+            else if (clipStart > 0)
+                sb.Append( s.Substring(clipStart));
+            else
+                sb.Append( s );
+ 
+            return sb.ToString();
+        }
+
+        /// <summary>
+        /// Clip the expected and actual strings in a coordinated fashion, 
+        /// so that they may be displayed together.
+        /// </summary>
+        /// <param name="expected"></param>
+        /// <param name="actual"></param>
+        /// <param name="maxDisplayLength"></param>
+        /// <param name="mismatch"></param>
+        public static void ClipExpectedAndActual(ref string expected, ref string actual, int maxDisplayLength, int mismatch)
+        {
+            // Case 1: Both strings fit on line
+            int maxStringLength = Math.Max(expected.Length, actual.Length);
+            if (maxStringLength <= maxDisplayLength)
+                return;
+
+            // Case 2: Assume that the tail of each string fits on line
+            int clipLength = maxDisplayLength - ELLIPSIS.Length;
+            int tailLength = clipLength - mismatch;
+            int clipStart = maxStringLength - clipLength;
+
+            // Case 3: If it doesn't, center the mismatch position
+            if ( clipStart > mismatch )
+                clipStart = Math.Max( 0, mismatch - clipLength / 2 );
+
+            expected = ClipString(expected, maxDisplayLength, clipStart);
+            actual = ClipString(actual, maxDisplayLength, clipStart);
+        }
+
+        /// <summary>
+        /// Shows the position two strings start to differ.  Comparison 
+        /// starts at the start index.
+        /// </summary>
+        /// <param name="expected">The expected string</param>
+        /// <param name="actual">The actual string</param>
+        /// <param name="istart">The index in the strings at which comparison should start</param>
+        /// <param name="ignoreCase">Boolean indicating whether case should be ignored</param>
+        /// <returns>-1 if no mismatch found, or the index where mismatch found</returns>
+        static public int FindMismatchPosition(string expected, string actual, int istart, bool ignoreCase)
+        {
+            int length = Math.Min(expected.Length, actual.Length);
+
+            string s1 = ignoreCase ? expected.ToLower() : expected;
+            string s2 = ignoreCase ? actual.ToLower() : actual;
+
+            for (int i = istart; i < length; i++)
+            {
+                if (s1[i] != s2[i])
+                    return i;
+            }
+
+            //
+            // Strings have same content up to the length of the shorter string.
+            // Mismatch occurs because string lengths are different, so show
+            // that they start differing where the shortest string ends
+            //
+            if (expected.Length != actual.Length)
+                return length;
+
+            //
+            // Same strings : We shouldn't get here
+            //
+            return -1;
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/OldTestCase.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/OldTestCase.cs
@@ -1,36 +1,36 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Obsolete class, formerly used to identify tests through
-	/// inheritance. Avoid using this class for new tests.
-	/// </summary>
-	[TestFixture]
-	[Obsolete("use TestFixture attribute instead of inheritance",false)]
-	public class TestCase : Assertion
-	{
-		/// <summary>
-		/// Method called immediately before running the test.
-		/// </summary>
-		[SetUp]
-		[Obsolete("use SetUp attribute instead of naming convention",false)]
-		protected virtual void SetUp()
-		{}
-
-		/// <summary>
-		/// Method Called immediately after running the test. It is
-		/// guaranteed to be called, even if an exception is thrown. 
-		/// </summary>
-		[TearDown]
-		[Obsolete("use TearDown attribute instead of naming convention",false)]
-		protected virtual void TearDown()
-		{}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Obsolete class, formerly used to identify tests through
+	/// inheritance. Avoid using this class for new tests.
+	/// </summary>
+	[TestFixture]
+	[Obsolete("use TestFixture attribute instead of inheritance",false)]
+	public class TestCase : Assertion
+	{
+		/// <summary>
+		/// Method called immediately before running the test.
+		/// </summary>
+		[SetUp]
+		[Obsolete("use SetUp attribute instead of naming convention",false)]
+		protected virtual void SetUp()
+		{}
+
+		/// <summary>
+		/// Method Called immediately after running the test. It is
+		/// guaranteed to be called, even if an exception is thrown. 
+		/// </summary>
+		[TearDown]
+		[Obsolete("use TearDown attribute instead of naming convention",false)]
+		protected virtual void TearDown()
+		{}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/PropertyAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/PropertyAttribute.cs
@@ -1,66 +1,66 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// PropertyAttribute is used to attach information to a test as a name/value pair..
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
-	public class PropertyAttribute : Attribute
-	{
-		/// <summary>
-		/// The property name
-		/// </summary>
-		protected string propertyName;
-
-		/// <summary>
-		/// The property value
-		/// </summary>
-		protected object propertyValue;
-
-		/// <summary>
-		/// Construct a PropertyAttribute with a name and value
-		/// </summary>
-		/// <param name="propertyName">The name of the property</param>
-		/// <param name="propertyValue">The property value</param>
-		public PropertyAttribute( string propertyName, object propertyValue )
-		{
-			this.propertyName = propertyName;
-			this.propertyValue = propertyValue;
-		}
-
-		/// <summary>
-		/// Constructor for use by inherited classes that use the
-		/// name of the type as the property name.
-		/// </summary>
-		protected PropertyAttribute( object propertyValue )
-		{
-			this.propertyName = this.GetType().Name;
-			if ( propertyName.EndsWith( "Attribute" ) )
-				propertyName = propertyName.Substring( 0, propertyName.Length - 9 );
-			this.propertyValue = propertyValue;
-		}
-
-		/// <summary>
-		/// Gets the property name
-		/// </summary>
-		public string Name
-		{
-			get { return propertyName; }
-		}
-
-		/// <summary>
-		/// Gets the property value
-		/// </summary>
-		public object Value
-		{
-			get { return propertyValue; }
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// PropertyAttribute is used to attach information to a test as a name/value pair..
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
+	public class PropertyAttribute : Attribute
+	{
+		/// <summary>
+		/// The property name
+		/// </summary>
+		protected string propertyName;
+
+		/// <summary>
+		/// The property value
+		/// </summary>
+		protected object propertyValue;
+
+		/// <summary>
+		/// Construct a PropertyAttribute with a name and value
+		/// </summary>
+		/// <param name="propertyName">The name of the property</param>
+		/// <param name="propertyValue">The property value</param>
+		public PropertyAttribute( string propertyName, object propertyValue )
+		{
+			this.propertyName = propertyName;
+			this.propertyValue = propertyValue;
+		}
+
+		/// <summary>
+		/// Constructor for use by inherited classes that use the
+		/// name of the type as the property name.
+		/// </summary>
+		protected PropertyAttribute( object propertyValue )
+		{
+			this.propertyName = this.GetType().Name;
+			if ( propertyName.EndsWith( "Attribute" ) )
+				propertyName = propertyName.Substring( 0, propertyName.Length - 9 );
+			this.propertyValue = propertyValue;
+		}
+
+		/// <summary>
+		/// Gets the property name
+		/// </summary>
+		public string Name
+		{
+			get { return propertyName; }
+		}
+
+		/// <summary>
+		/// Gets the property value
+		/// </summary>
+		public object Value
+		{
+			get { return propertyValue; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SetCultureAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SetCultureAttribute.cs
@@ -1,17 +1,17 @@
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// Summary description for SetCultureAttribute.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
-	public class SetCultureAttribute : PropertyAttribute
-	{
-		/// <summary>
-		/// Construct given the name of a culture
-		/// </summary>
-		/// <param name="culture"></param>
-		public SetCultureAttribute( string culture ) : base( "_SETCULTURE", culture ) { }
-	}
-}
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// Summary description for SetCultureAttribute.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Assembly, AllowMultiple=true)]
+	public class SetCultureAttribute : PropertyAttribute
+	{
+		/// <summary>
+		/// Construct given the name of a culture
+		/// </summary>
+		/// <param name="culture"></param>
+		public SetCultureAttribute( string culture ) : base( "_SETCULTURE", culture ) { }
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SetUpAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SetUpAttribute.cs
@@ -1,19 +1,19 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Attribute used to mark a class that contains one-time SetUp 
-	/// and/or TearDown methods that apply to all the tests in a
-	/// namespace or an assembly.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
-	public class SetUpAttribute : Attribute
-	{}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Attribute used to mark a class that contains one-time SetUp 
+	/// and/or TearDown methods that apply to all the tests in a
+	/// namespace or an assembly.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+	public class SetUpAttribute : Attribute
+	{}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SetUpFixtureAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SetUpFixtureAttribute.cs
@@ -1,18 +1,18 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// SetUpFixtureAttribute is used to identify a SetUpFixture
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
-	public class SetUpFixtureAttribute : Attribute
-	{
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// SetUpFixtureAttribute is used to identify a SetUpFixture
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false)]
+	public class SetUpFixtureAttribute : Attribute
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/StringAssert.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/StringAssert.cs
@@ -1,227 +1,227 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System.ComponentModel;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// Basic Asserts on strings.
-	/// </summary>
-	public class StringAssert
-	{
-		#region Equals and ReferenceEquals
-
-		/// <summary>
-		/// The Equals method throws an AssertionException. This is done 
-		/// to make sure there is no mistake by calling this function.
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		[EditorBrowsable(EditorBrowsableState.Never)]
-		public static new bool Equals(object a, object b)
-		{
-			throw new AssertionException("Assert.Equals should not be used for Assertions");
-		}
-
-		/// <summary>
-		/// override the default ReferenceEquals to throw an AssertionException. This 
-		/// implementation makes sure there is no mistake in calling this function 
-		/// as part of Assert. 
-		/// </summary>
-		/// <param name="a"></param>
-		/// <param name="b"></param>
-		public static new void ReferenceEquals(object a, object b)
-		{
-			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
-		}
-
-		#endregion
-				
-		#region Contains
-
-		/// <summary>
-		/// Asserts that a string is found within another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Arguments used in formatting the message</param>
-		static public void Contains( string expected, string actual, string message, params object[] args )
-		{
-            Assert.That(actual, new SubstringConstraint(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that a string is found within another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		static public void Contains( string expected, string actual, string message )
-		{
-			Contains( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that a string is found within another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		static public void Contains( string expected, string actual )
-		{
-			Contains( expected, actual, string.Empty, null );
-		}
-
-		#endregion
-
-		#region StartsWith
-
-		/// <summary>
-		/// Asserts that a string starts with another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Arguments used in formatting the message</param>
-		static public void StartsWith( string expected, string actual, string message, params object[] args )
-		{
-            Assert.That(actual, new StartsWithConstraint(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that a string starts with another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		static public void StartsWith( string expected, string actual, string message )
-		{
-			StartsWith( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that a string starts with another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		static public void StartsWith( string expected, string actual )
-		{
-			StartsWith( expected, actual, string.Empty, null );
-		}
-
-		#endregion
-
-		#region EndsWith
-
-		/// <summary>
-		/// Asserts that a string ends with another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Arguments used in formatting the message</param>
-		static public void EndsWith( string expected, string actual, string message, params object[] args )
-		{
-            Assert.That(actual, new EndsWithConstraint(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that a string ends with another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		/// <param name="message">The message to display in case of failure</param>
-		static public void EndsWith( string expected, string actual, string message )
-		{
-			EndsWith( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that a string ends with another string.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The string to be examined</param>
-		static public void EndsWith( string expected, string actual )
-		{
-			EndsWith( expected, actual, string.Empty, null );
-		}
-
-		#endregion
-
-		#region AreEqualIgnoringCase
-		/// <summary>
-		/// Asserts that two strings are equal, without regard to case.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The actual string</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Arguments used in formatting the message</param>
-		static public void AreEqualIgnoringCase( string expected, string actual, string message, params object[] args )
-		{
-            Assert.That(actual, new EqualConstraint(expected).IgnoreCase, message, args);
-		}
-
-		/// <summary>
-		/// Asserts that two strings are equal, without regard to case.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The actual string</param>
-		/// <param name="message">The message to display in case of failure</param>
-		static public void AreEqualIgnoringCase( string expected, string actual, string message )
-		{
-			AreEqualIgnoringCase( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that two strings are equal, without regard to case.
-		/// </summary>
-		/// <param name="expected">The expected string</param>
-		/// <param name="actual">The actual string</param>
-		static public void AreEqualIgnoringCase( string expected, string actual )
-		{
-			AreEqualIgnoringCase( expected, actual, string.Empty, null );
-		}
-
-		#endregion
-
-		#region IsMatch
-		/// <summary>
-		/// Asserts that a string matches an expected regular expression pattern.
-		/// </summary>
-		/// <param name="expected">The expected expression</param>
-		/// <param name="actual">The actual string</param>
-		/// <param name="message">The message to display in case of failure</param>
-		/// <param name="args">Arguments used in formatting the message</param>
-		static public void IsMatch( string expected, string actual, string message, params object[] args )
-		{
-            Assert.That(actual, new RegexConstraint(expected), message, args);
-		}
-
-		/// <summary>
-		/// Asserts that a string matches an expected regular expression pattern.
-		/// </summary>
-		/// <param name="expected">The expected expression</param>
-		/// <param name="actual">The actual string</param>
-		/// <param name="message">The message to display in case of failure</param>
-		static public void IsMatch( string expected, string actual, string message )
-		{
-			IsMatch( expected, actual, message, null );
-		}
-
-		/// <summary>
-		/// Asserts that a string matches an expected regular expression pattern.
-		/// </summary>
-		/// <param name="expected">The expected expression</param>
-		/// <param name="actual">The actual string</param>
-		static public void IsMatch( string expected, string actual )
-		{
-			IsMatch( expected, actual, string.Empty, null );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System.ComponentModel;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// Basic Asserts on strings.
+	/// </summary>
+	public class StringAssert
+	{
+		#region Equals and ReferenceEquals
+
+		/// <summary>
+		/// The Equals method throws an AssertionException. This is done 
+		/// to make sure there is no mistake by calling this function.
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		[EditorBrowsable(EditorBrowsableState.Never)]
+		public static new bool Equals(object a, object b)
+		{
+			throw new AssertionException("Assert.Equals should not be used for Assertions");
+		}
+
+		/// <summary>
+		/// override the default ReferenceEquals to throw an AssertionException. This 
+		/// implementation makes sure there is no mistake in calling this function 
+		/// as part of Assert. 
+		/// </summary>
+		/// <param name="a"></param>
+		/// <param name="b"></param>
+		public static new void ReferenceEquals(object a, object b)
+		{
+			throw new AssertionException("Assert.ReferenceEquals should not be used for Assertions");
+		}
+
+		#endregion
+				
+		#region Contains
+
+		/// <summary>
+		/// Asserts that a string is found within another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Arguments used in formatting the message</param>
+		static public void Contains( string expected, string actual, string message, params object[] args )
+		{
+            Assert.That(actual, new SubstringConstraint(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that a string is found within another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		static public void Contains( string expected, string actual, string message )
+		{
+			Contains( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that a string is found within another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		static public void Contains( string expected, string actual )
+		{
+			Contains( expected, actual, string.Empty, null );
+		}
+
+		#endregion
+
+		#region StartsWith
+
+		/// <summary>
+		/// Asserts that a string starts with another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Arguments used in formatting the message</param>
+		static public void StartsWith( string expected, string actual, string message, params object[] args )
+		{
+            Assert.That(actual, new StartsWithConstraint(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that a string starts with another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		static public void StartsWith( string expected, string actual, string message )
+		{
+			StartsWith( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that a string starts with another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		static public void StartsWith( string expected, string actual )
+		{
+			StartsWith( expected, actual, string.Empty, null );
+		}
+
+		#endregion
+
+		#region EndsWith
+
+		/// <summary>
+		/// Asserts that a string ends with another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Arguments used in formatting the message</param>
+		static public void EndsWith( string expected, string actual, string message, params object[] args )
+		{
+            Assert.That(actual, new EndsWithConstraint(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that a string ends with another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		/// <param name="message">The message to display in case of failure</param>
+		static public void EndsWith( string expected, string actual, string message )
+		{
+			EndsWith( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that a string ends with another string.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The string to be examined</param>
+		static public void EndsWith( string expected, string actual )
+		{
+			EndsWith( expected, actual, string.Empty, null );
+		}
+
+		#endregion
+
+		#region AreEqualIgnoringCase
+		/// <summary>
+		/// Asserts that two strings are equal, without regard to case.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The actual string</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Arguments used in formatting the message</param>
+		static public void AreEqualIgnoringCase( string expected, string actual, string message, params object[] args )
+		{
+            Assert.That(actual, new EqualConstraint(expected).IgnoreCase, message, args);
+		}
+
+		/// <summary>
+		/// Asserts that two strings are equal, without regard to case.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The actual string</param>
+		/// <param name="message">The message to display in case of failure</param>
+		static public void AreEqualIgnoringCase( string expected, string actual, string message )
+		{
+			AreEqualIgnoringCase( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that two strings are equal, without regard to case.
+		/// </summary>
+		/// <param name="expected">The expected string</param>
+		/// <param name="actual">The actual string</param>
+		static public void AreEqualIgnoringCase( string expected, string actual )
+		{
+			AreEqualIgnoringCase( expected, actual, string.Empty, null );
+		}
+
+		#endregion
+
+		#region IsMatch
+		/// <summary>
+		/// Asserts that a string matches an expected regular expression pattern.
+		/// </summary>
+		/// <param name="expected">The expected expression</param>
+		/// <param name="actual">The actual string</param>
+		/// <param name="message">The message to display in case of failure</param>
+		/// <param name="args">Arguments used in formatting the message</param>
+		static public void IsMatch( string expected, string actual, string message, params object[] args )
+		{
+            Assert.That(actual, new RegexConstraint(expected), message, args);
+		}
+
+		/// <summary>
+		/// Asserts that a string matches an expected regular expression pattern.
+		/// </summary>
+		/// <param name="expected">The expected expression</param>
+		/// <param name="actual">The actual string</param>
+		/// <param name="message">The message to display in case of failure</param>
+		static public void IsMatch( string expected, string actual, string message )
+		{
+			IsMatch( expected, actual, message, null );
+		}
+
+		/// <summary>
+		/// Asserts that a string matches an expected regular expression pattern.
+		/// </summary>
+		/// <param name="expected">The expected expression</param>
+		/// <param name="actual">The actual string</param>
+		static public void IsMatch( string expected, string actual )
+		{
+			IsMatch( expected, actual, string.Empty, null );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SuiteAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SuiteAttribute.cs
@@ -1,18 +1,18 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Attribute used to mark a static (shared in VB) property
-	/// that returns a list of tests.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Property, AllowMultiple=false)]
-	public class SuiteAttribute : Attribute
-	{}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Attribute used to mark a static (shared in VB) property
+	/// that returns a list of tests.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Property, AllowMultiple=false)]
+	public class SuiteAttribute : Attribute
+	{}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/Has.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/Has.cs
@@ -1,144 +1,144 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework.SyntaxHelpers
-{
-	/// <summary>
-	/// Summary description for HasNoPrefixB.
-	/// </summary>
-	public class Has
-	{
-        /// <summary>
-        /// Nested class that allows us to restrict the number
-        /// of key words that may appear after Has.No.
-        /// </summary>
-		public class HasNoPrefixBuilder
-		{
-            /// <summary>
-            /// Return a ConstraintBuilder conditioned to apply
-            /// the following constraint to a property.
-            /// </summary>
-            /// <param name="name">The property name</param>
-            /// <returns>A ConstraintBuilder</returns>
-			public ConstraintBuilder Property(string name)
-			{
-				return new ConstraintBuilder().Not.Property(name);
-			}
-
-            /// <summary>
-            /// Return a Constraint that succeeds if the expected object is
-            /// not contained in a collection.
-            /// </summary>
-            /// <param name="expected">The expected object</param>
-            /// <returns>A Constraint</returns>
-            public Constraint Member(object expected)
-			{
-				return new NotConstraint( new CollectionContainsConstraint(expected) ) ;
-			}
-		}
-
-		#region Prefix Operators
-		/// <summary>
-		/// Has.No returns a ConstraintBuilder that negates
-		/// the constraint that follows it.
-		/// </summary>
-		public static HasNoPrefixBuilder No
-		{
-			get { return new HasNoPrefixBuilder(); }
-		}
-
-		/// <summary>
-		/// Has.AllItems returns a ConstraintBuilder, which will apply
-		/// the following constraint to all members of a collection,
-		/// succeeding if all of them succeed.
-		/// </summary>
-		public static ConstraintBuilder All
-		{
-			get { return new ConstraintBuilder().All; }
-		}
-
-		/// <summary>
-		/// Has.Some returns a ConstraintBuilder, which will apply
-		/// the following constraint to all members of a collection,
-		/// succeeding if any of them succeed. It is a synonym
-		/// for Has.Item.
-		/// </summary>
-		public static ConstraintBuilder Some
-		{
-			get { return new ConstraintBuilder().Some; }
-		}
-
-		/// <summary>
-		/// Has.None returns a ConstraintBuilder, which will apply
-		/// the following constraint to all members of a collection,
-		/// succeeding only if none of them succeed.
-		/// </summary>
-		public static ConstraintBuilder None
-		{
-			get { return new ConstraintBuilder().None; }
-		}
-
-		/// <summary>
-		/// Returns a new ConstraintBuilder, which will apply the
-		/// following constraint to a named property of the object
-		/// being tested.
-		/// </summary>
-		/// <param name="name">The name of the property</param>
-		public static ConstraintBuilder Property( string name )
-		{
-			return new ConstraintBuilder().Property(name);
-		}
-		#endregion
-
-		#region Property Constraints
-		/// <summary>
-		/// Returns a new PropertyConstraint checking for the
-		/// existence of a particular property value.
-		/// </summary>
-		/// <param name="name">The name of the property to look for</param>
-		/// <param name="expected">The expected value of the property</param>
-		public static Constraint Property( string name, object expected )
-		{
-			return new PropertyConstraint( name, new EqualConstraint( expected ) );
-		}
-
-        /// <summary>
-        /// Returns a new PropertyConstraint for the Length property
-        /// </summary>
-        /// <param name="length"></param>
-        /// <returns></returns>
-		public static Constraint Length( int length )
-		{
-			return Property( "Length", length );
-		}
-
-		/// <summary>
-		/// Returns a new PropertyConstraint or the Count property
-		/// </summary>
-		/// <param name="count"></param>
-		/// <returns></returns>
-		public static Constraint Count( int count )
-		{
-			return Property( "Count", count );
-		}
-		#endregion
-
-		#region Member Constraint
-		/// <summary>
-		/// Returns a new CollectionContainsConstraint checking for the
-		/// presence of a particular object in the collection.
-		/// </summary>
-		/// <param name="expected">The expected object</param>
-		public static Constraint Member( object expected )
-		{
-			return new CollectionContainsConstraint( expected );
-		}
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.SyntaxHelpers
+{
+	/// <summary>
+	/// Summary description for HasNoPrefixB.
+	/// </summary>
+	public class Has
+	{
+        /// <summary>
+        /// Nested class that allows us to restrict the number
+        /// of key words that may appear after Has.No.
+        /// </summary>
+		public class HasNoPrefixBuilder
+		{
+            /// <summary>
+            /// Return a ConstraintBuilder conditioned to apply
+            /// the following constraint to a property.
+            /// </summary>
+            /// <param name="name">The property name</param>
+            /// <returns>A ConstraintBuilder</returns>
+			public ConstraintBuilder Property(string name)
+			{
+				return new ConstraintBuilder().Not.Property(name);
+			}
+
+            /// <summary>
+            /// Return a Constraint that succeeds if the expected object is
+            /// not contained in a collection.
+            /// </summary>
+            /// <param name="expected">The expected object</param>
+            /// <returns>A Constraint</returns>
+            public Constraint Member(object expected)
+			{
+				return new NotConstraint( new CollectionContainsConstraint(expected) ) ;
+			}
+		}
+
+		#region Prefix Operators
+		/// <summary>
+		/// Has.No returns a ConstraintBuilder that negates
+		/// the constraint that follows it.
+		/// </summary>
+		public static HasNoPrefixBuilder No
+		{
+			get { return new HasNoPrefixBuilder(); }
+		}
+
+		/// <summary>
+		/// Has.AllItems returns a ConstraintBuilder, which will apply
+		/// the following constraint to all members of a collection,
+		/// succeeding if all of them succeed.
+		/// </summary>
+		public static ConstraintBuilder All
+		{
+			get { return new ConstraintBuilder().All; }
+		}
+
+		/// <summary>
+		/// Has.Some returns a ConstraintBuilder, which will apply
+		/// the following constraint to all members of a collection,
+		/// succeeding if any of them succeed. It is a synonym
+		/// for Has.Item.
+		/// </summary>
+		public static ConstraintBuilder Some
+		{
+			get { return new ConstraintBuilder().Some; }
+		}
+
+		/// <summary>
+		/// Has.None returns a ConstraintBuilder, which will apply
+		/// the following constraint to all members of a collection,
+		/// succeeding only if none of them succeed.
+		/// </summary>
+		public static ConstraintBuilder None
+		{
+			get { return new ConstraintBuilder().None; }
+		}
+
+		/// <summary>
+		/// Returns a new ConstraintBuilder, which will apply the
+		/// following constraint to a named property of the object
+		/// being tested.
+		/// </summary>
+		/// <param name="name">The name of the property</param>
+		public static ConstraintBuilder Property( string name )
+		{
+			return new ConstraintBuilder().Property(name);
+		}
+		#endregion
+
+		#region Property Constraints
+		/// <summary>
+		/// Returns a new PropertyConstraint checking for the
+		/// existence of a particular property value.
+		/// </summary>
+		/// <param name="name">The name of the property to look for</param>
+		/// <param name="expected">The expected value of the property</param>
+		public static Constraint Property( string name, object expected )
+		{
+			return new PropertyConstraint( name, new EqualConstraint( expected ) );
+		}
+
+        /// <summary>
+        /// Returns a new PropertyConstraint for the Length property
+        /// </summary>
+        /// <param name="length"></param>
+        /// <returns></returns>
+		public static Constraint Length( int length )
+		{
+			return Property( "Length", length );
+		}
+
+		/// <summary>
+		/// Returns a new PropertyConstraint or the Count property
+		/// </summary>
+		/// <param name="count"></param>
+		/// <returns></returns>
+		public static Constraint Count( int count )
+		{
+			return Property( "Count", count );
+		}
+		#endregion
+
+		#region Member Constraint
+		/// <summary>
+		/// Returns a new CollectionContainsConstraint checking for the
+		/// presence of a particular object in the collection.
+		/// </summary>
+		/// <param name="expected">The expected object</param>
+		public static Constraint Member( object expected )
+		{
+			return new CollectionContainsConstraint( expected );
+		}
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/Is.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/Is.cs
@@ -1,212 +1,212 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework.SyntaxHelpers
-{
-	/// <summary>
-	/// The Is class is a helper class with properties and methods
-	/// that supply a number of constraints used in Asserts.
-	/// </summary>
-	public class Is
-	{
-		#region Prefix Operators
-		/// <summary>
-		/// Is.Not returns a ConstraintBuilder that negates
-		/// the constraint that follows it.
-		/// </summary>
-		public static ConstraintBuilder Not
-		{
-			get { return new ConstraintBuilder().Not; }
-		}
-
-		/// <summary>
-		/// Is.All returns a ConstraintBuilder, which will apply
-		/// the following constraint to all members of a collection,
-		/// succeeding if all of them succeed. This property is
-		/// a synonym for Has.AllItems.
-		/// </summary>
-		public static ConstraintBuilder All
-		{
-			get { return new ConstraintBuilder().All; }
-		}
-		#endregion
-
-		#region Constraints Without Arguments
-		/// <summary>
-		/// Is.Null returns a static constraint that tests for null
-		/// </summary>
-        public static readonly Constraint Null = new EqualConstraint( null );
-		/// <summary>
-		/// Is.True returns a static constraint that tests whether a value is true
-		/// </summary>
-		public static readonly Constraint True = new EqualConstraint(true);
-		/// <summary>
-		/// Is.False returns a static constraint that tests whether a value is false
-		/// </summary>
-		public static readonly Constraint False = new EqualConstraint(false);
-		/// <summary>
-		/// Is.NaN returns a static constraint that tests whether a value is an NaN
-		/// </summary>
-		public static readonly Constraint NaN = new EqualConstraint(double.NaN);
-		/// <summary>
-		/// Is.Empty returns a static constraint that tests whether a string or collection is empty
-		/// </summary>
-		public static readonly Constraint Empty = new EmptyConstraint();
-        /// <summary>
-        /// Is.Unique returns a static constraint that tests whether a collection contains all unque items.
-        /// </summary>
-        public static readonly Constraint Unique = new UniqueItemsConstraint();
-        #endregion
-
-        #region Constraints with an expected value
-
-        #region Equality and Identity
-        /// <summary>
-        /// Is.EqualTo returns a constraint that tests whether the
-        /// actual value equals the supplied argument
-        /// </summary>
-        /// <param name="expected"></param>
-        /// <returns></returns>
-        public static EqualConstraint EqualTo(object expected)
-        {
-            return new EqualConstraint(expected);
-        }
-		/// <summary>
-		/// Is.SameAs returns a constraint that tests whether the
-		/// actual value is the same object as the supplied argument.
-		/// </summary>
-		/// <param name="expected"></param>
-		/// <returns></returns>
-        public static Constraint SameAs(object expected)
-        {
-            return new SameAsConstraint(expected);
-        }
-        #endregion
-
-        #region Comparison Constraints
-		/// <summary>
-		/// Is.GreaterThan returns a constraint that tests whether the
-		/// actual value is greater than the suppled argument
-		/// </summary>
-		public static Constraint GreaterThan(IComparable expected)
-        {
-            return new GreaterThanConstraint(expected);
-        }
-		/// <summary>
-		/// Is.GreaterThanOrEqualTo returns a constraint that tests whether the
-		/// actual value is greater than or equal to the suppled argument
-		/// </summary>
-		public static Constraint GreaterThanOrEqualTo(IComparable expected)
-        {
-            return new GreaterThanOrEqualConstraint(expected);
-        }
-
-		/// <summary>
-		/// Is.AtLeast is a synonym for Is.GreaterThanOrEqualTo
-		/// </summary>
-		public static Constraint AtLeast(IComparable expected)
-        {
-            return GreaterThanOrEqualTo(expected);
-        }
-
-		/// <summary>
-		/// Is.LessThan returns a constraint that tests whether the
-		/// actual value is less than the suppled argument
-		/// </summary>
-		public static Constraint LessThan(IComparable expected)
-        {
-            return new LessThanConstraint(expected);
-        }
-
-		/// <summary>
-		/// Is.LessThanOrEqualTo returns a constraint that tests whether the
-		/// actual value is less than or equal to the suppled argument
-		/// </summary>
-		public static Constraint LessThanOrEqualTo(IComparable expected)
-        {
-            return new LessThanOrEqualConstraint(expected);
-        }
-
-		/// <summary>
-		/// Is.AtMost is a synonym for Is.LessThanOrEqualTo
-		/// </summary>
-		public static Constraint AtMost(IComparable expected)
-        {
-            return LessThanOrEqualTo(expected);
-        }
-        #endregion
-
-		#region Type Constraints
-		/// <summary>
-		/// Is.TypeOf returns a constraint that tests whether the actual
-		/// value is of the exact type supplied as an argument.
-		/// </summary>
-		public static Constraint TypeOf(Type expectedType)
-        {
-            return new ExactTypeConstraint(expectedType);
-        }
-
-		/// <summary>
-		/// Is.InstanceOfType returns a constraint that tests whether 
-		/// the actual value is of the type supplied as an argument
-		/// or a derived type.
-		/// </summary>
-		public static Constraint InstanceOfType(Type expectedType)
-        {
-            return new InstanceOfTypeConstraint(expectedType);
-        }
-
-        /// <summary>
-        /// Is.AssignableFrom returns a constraint that tests whether
-        /// the actual value is assignable from the type supplied as
-        /// an argument.
-        /// </summary>
-        /// <param name="expectedType"></param>
-        /// <returns></returns>
-        public static Constraint AssignableFrom(Type expectedType)
-        {
-            return new AssignableFromConstraint(expectedType);
-        }
-        #endregion
-
-		#region Collection Constraints
-		/// <summary>
-		/// Is.EquivalentTo returns a constraint that tests whether
-		/// the actual value is a collection containing the same
-		/// elements as the collection supplied as an arument
-		/// </summary>
-		public static Constraint EquivalentTo(ICollection expected)
-        {
-            return new CollectionEquivalentConstraint(expected);
-        }
-
-		/// <summary>
-		/// Is.SubsetOf returns a constraint that tests whether
-		/// the actual value is a subset of the collection 
-		/// supplied as an arument
-		/// </summary>
-		public static Constraint SubsetOf(ICollection expected)
-        {
-            return new CollectionSubsetConstraint(expected);
-        }
-        #endregion
-
-        #endregion
-    }
-
-
-	/// <summary>
-	/// The Iz class is a synonym for Is intended for use in VB,
-	/// which regards Is as a keyword.
-	/// </summary>
-	public class Iz : Is
-	{
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.SyntaxHelpers
+{
+	/// <summary>
+	/// The Is class is a helper class with properties and methods
+	/// that supply a number of constraints used in Asserts.
+	/// </summary>
+	public class Is
+	{
+		#region Prefix Operators
+		/// <summary>
+		/// Is.Not returns a ConstraintBuilder that negates
+		/// the constraint that follows it.
+		/// </summary>
+		public static ConstraintBuilder Not
+		{
+			get { return new ConstraintBuilder().Not; }
+		}
+
+		/// <summary>
+		/// Is.All returns a ConstraintBuilder, which will apply
+		/// the following constraint to all members of a collection,
+		/// succeeding if all of them succeed. This property is
+		/// a synonym for Has.AllItems.
+		/// </summary>
+		public static ConstraintBuilder All
+		{
+			get { return new ConstraintBuilder().All; }
+		}
+		#endregion
+
+		#region Constraints Without Arguments
+		/// <summary>
+		/// Is.Null returns a static constraint that tests for null
+		/// </summary>
+        public static readonly Constraint Null = new EqualConstraint( null );
+		/// <summary>
+		/// Is.True returns a static constraint that tests whether a value is true
+		/// </summary>
+		public static readonly Constraint True = new EqualConstraint(true);
+		/// <summary>
+		/// Is.False returns a static constraint that tests whether a value is false
+		/// </summary>
+		public static readonly Constraint False = new EqualConstraint(false);
+		/// <summary>
+		/// Is.NaN returns a static constraint that tests whether a value is an NaN
+		/// </summary>
+		public static readonly Constraint NaN = new EqualConstraint(double.NaN);
+		/// <summary>
+		/// Is.Empty returns a static constraint that tests whether a string or collection is empty
+		/// </summary>
+		public static readonly Constraint Empty = new EmptyConstraint();
+        /// <summary>
+        /// Is.Unique returns a static constraint that tests whether a collection contains all unque items.
+        /// </summary>
+        public static readonly Constraint Unique = new UniqueItemsConstraint();
+        #endregion
+
+        #region Constraints with an expected value
+
+        #region Equality and Identity
+        /// <summary>
+        /// Is.EqualTo returns a constraint that tests whether the
+        /// actual value equals the supplied argument
+        /// </summary>
+        /// <param name="expected"></param>
+        /// <returns></returns>
+        public static EqualConstraint EqualTo(object expected)
+        {
+            return new EqualConstraint(expected);
+        }
+		/// <summary>
+		/// Is.SameAs returns a constraint that tests whether the
+		/// actual value is the same object as the supplied argument.
+		/// </summary>
+		/// <param name="expected"></param>
+		/// <returns></returns>
+        public static Constraint SameAs(object expected)
+        {
+            return new SameAsConstraint(expected);
+        }
+        #endregion
+
+        #region Comparison Constraints
+		/// <summary>
+		/// Is.GreaterThan returns a constraint that tests whether the
+		/// actual value is greater than the suppled argument
+		/// </summary>
+		public static Constraint GreaterThan(IComparable expected)
+        {
+            return new GreaterThanConstraint(expected);
+        }
+		/// <summary>
+		/// Is.GreaterThanOrEqualTo returns a constraint that tests whether the
+		/// actual value is greater than or equal to the suppled argument
+		/// </summary>
+		public static Constraint GreaterThanOrEqualTo(IComparable expected)
+        {
+            return new GreaterThanOrEqualConstraint(expected);
+        }
+
+		/// <summary>
+		/// Is.AtLeast is a synonym for Is.GreaterThanOrEqualTo
+		/// </summary>
+		public static Constraint AtLeast(IComparable expected)
+        {
+            return GreaterThanOrEqualTo(expected);
+        }
+
+		/// <summary>
+		/// Is.LessThan returns a constraint that tests whether the
+		/// actual value is less than the suppled argument
+		/// </summary>
+		public static Constraint LessThan(IComparable expected)
+        {
+            return new LessThanConstraint(expected);
+        }
+
+		/// <summary>
+		/// Is.LessThanOrEqualTo returns a constraint that tests whether the
+		/// actual value is less than or equal to the suppled argument
+		/// </summary>
+		public static Constraint LessThanOrEqualTo(IComparable expected)
+        {
+            return new LessThanOrEqualConstraint(expected);
+        }
+
+		/// <summary>
+		/// Is.AtMost is a synonym for Is.LessThanOrEqualTo
+		/// </summary>
+		public static Constraint AtMost(IComparable expected)
+        {
+            return LessThanOrEqualTo(expected);
+        }
+        #endregion
+
+		#region Type Constraints
+		/// <summary>
+		/// Is.TypeOf returns a constraint that tests whether the actual
+		/// value is of the exact type supplied as an argument.
+		/// </summary>
+		public static Constraint TypeOf(Type expectedType)
+        {
+            return new ExactTypeConstraint(expectedType);
+        }
+
+		/// <summary>
+		/// Is.InstanceOfType returns a constraint that tests whether 
+		/// the actual value is of the type supplied as an argument
+		/// or a derived type.
+		/// </summary>
+		public static Constraint InstanceOfType(Type expectedType)
+        {
+            return new InstanceOfTypeConstraint(expectedType);
+        }
+
+        /// <summary>
+        /// Is.AssignableFrom returns a constraint that tests whether
+        /// the actual value is assignable from the type supplied as
+        /// an argument.
+        /// </summary>
+        /// <param name="expectedType"></param>
+        /// <returns></returns>
+        public static Constraint AssignableFrom(Type expectedType)
+        {
+            return new AssignableFromConstraint(expectedType);
+        }
+        #endregion
+
+		#region Collection Constraints
+		/// <summary>
+		/// Is.EquivalentTo returns a constraint that tests whether
+		/// the actual value is a collection containing the same
+		/// elements as the collection supplied as an arument
+		/// </summary>
+		public static Constraint EquivalentTo(ICollection expected)
+        {
+            return new CollectionEquivalentConstraint(expected);
+        }
+
+		/// <summary>
+		/// Is.SubsetOf returns a constraint that tests whether
+		/// the actual value is a subset of the collection 
+		/// supplied as an arument
+		/// </summary>
+		public static Constraint SubsetOf(ICollection expected)
+        {
+            return new CollectionSubsetConstraint(expected);
+        }
+        #endregion
+
+        #endregion
+    }
+
+
+	/// <summary>
+	/// The Iz class is a synonym for Is intended for use in VB,
+	/// which regards Is as a keyword.
+	/// </summary>
+	public class Iz : Is
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/List.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/List.cs
@@ -1,30 +1,30 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework.SyntaxHelpers
-{
-	/// <summary>
-	/// The List class is a helper class with properties and methods
-	/// that supply a number of constraints used with lists and collections.
-	/// </summary>
-	public class List
-	{
-		/// <summary>
-		/// List.Map returns a ListMapper, which can be used to map
-		/// the original collection to another collection.
-		/// </summary>
-		/// <param name="actual"></param>
-		/// <returns></returns>
-		public static ListMapper Map( ICollection actual )
-		{
-			return new ListMapper( actual );
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.SyntaxHelpers
+{
+	/// <summary>
+	/// The List class is a helper class with properties and methods
+	/// that supply a number of constraints used with lists and collections.
+	/// </summary>
+	public class List
+	{
+		/// <summary>
+		/// List.Map returns a ListMapper, which can be used to map
+		/// the original collection to another collection.
+		/// </summary>
+		/// <param name="actual"></param>
+		/// <returns></returns>
+		public static ListMapper Map( ICollection actual )
+		{
+			return new ListMapper( actual );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/ListMapper.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/ListMapper.cs
@@ -1,46 +1,46 @@
-using System;
-using System.Collections;
-using System.Reflection;
-
-namespace NUnit.Framework.SyntaxHelpers
-{
-	/// <summary>
-	/// ListMapper is used to transform a collection used as an actual argument
-	/// producing another collection to be used in the assertion.
-	/// </summary>
-	public class ListMapper
-	{
-		ICollection original;
-
-		/// <summary>
-		/// Construct a ListMapper based on a collection
-		/// </summary>
-		/// <param name="original">The collection to be transformed</param>
- 		public ListMapper( ICollection original )
-		{
-			this.original = original;
-		}
-
-		/// <summary>
-		/// Produces a collection containing all the values of a property
-		/// </summary>
-		/// <param name="name">The collection of property values</param>
-		/// <returns></returns>
-		public ICollection Property( string name )
-		{
-			ArrayList propList = new ArrayList();
-			foreach( object item in original )
-			{
-				PropertyInfo property = item.GetType().GetProperty( name, 
-					BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance );
-				if ( property == null )
-					throw new ArgumentException( string.Format(
-						"{0} does not have a {1} property", item, name ) );
-
-				propList.Add( property.GetValue( item, null ) );
-			}
-
-			return propList;
-		}
-	}
-}
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace NUnit.Framework.SyntaxHelpers
+{
+	/// <summary>
+	/// ListMapper is used to transform a collection used as an actual argument
+	/// producing another collection to be used in the assertion.
+	/// </summary>
+	public class ListMapper
+	{
+		ICollection original;
+
+		/// <summary>
+		/// Construct a ListMapper based on a collection
+		/// </summary>
+		/// <param name="original">The collection to be transformed</param>
+ 		public ListMapper( ICollection original )
+		{
+			this.original = original;
+		}
+
+		/// <summary>
+		/// Produces a collection containing all the values of a property
+		/// </summary>
+		/// <param name="name">The collection of property values</param>
+		/// <returns></returns>
+		public ICollection Property( string name )
+		{
+			ArrayList propList = new ArrayList();
+			foreach( object item in original )
+			{
+				PropertyInfo property = item.GetType().GetProperty( name, 
+					BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance );
+				if ( property == null )
+					throw new ArgumentException( string.Format(
+						"{0} does not have a {1} property", item, name ) );
+
+				propList.Add( property.GetValue( item, null ) );
+			}
+
+			return propList;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/Text.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/SyntaxHelpers/Text.cs
@@ -1,104 +1,104 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework.SyntaxHelpers
-{
-	/// <summary>
-	/// The Text class is a helper class with properties and methods
-	/// that supply a number of constraints used with strings.
-	/// </summary>
-	public class Text
-	{
-		/// <summary>
-		/// Text.All returns a ConstraintBuilder, which will apply
-		/// the following constraint to all members of a collection,
-		/// succeeding if all of them succeed.
-		/// </summary>
-		public static ConstraintBuilder All
-		{
-			get { return new ConstraintBuilder().All; }
-		}
-
-		/// <summary>
-		/// Contains returns a constraint that succeeds if the actual
-		/// value contains the substring supplied as an argument.
-		/// </summary>
-		public static Constraint Contains(string substring)
-		{
-			return new SubstringConstraint(substring);
-		}
-
-		/// <summary>
-		/// DoesNotContain returns a constraint that fails if the actual
-		/// value contains the substring supplied as an argument.
-		/// </summary>
-		public static Constraint DoesNotContain(string substring)
-		{
-			return new NotConstraint( Contains(substring) );
-		}
-
-		/// <summary>
-		/// StartsWith returns a constraint that succeeds if the actual
-		/// value starts with the substring supplied as an argument.
-		/// </summary>
-		public static Constraint StartsWith(string substring)
-		{
-			return new StartsWithConstraint(substring);
-		}
-
-		/// <summary>
-		/// DoesNotStartWith returns a constraint that fails if the actual
-		/// value starts with the substring supplied as an argument.
-		/// </summary>
-		public static Constraint DoesNotStartWith(string substring)
-		{
-			return new NotConstraint( StartsWith(substring) );
-		}
-
-		/// <summary>
-		/// EndsWith returns a constraint that succeeds if the actual
-		/// value ends with the substring supplied as an argument.
-		/// </summary>
-		public static Constraint EndsWith(string substring)
-		{
-			return new EndsWithConstraint(substring);
-		}
-
-		/// <summary>
-		/// DoesNotEndWith returns a constraint that fails if the actual
-		/// value ends with the substring supplied as an argument.
-		/// </summary>
-		public static Constraint DoesNotEndWith(string substring)
-		{
-			return new NotConstraint( EndsWith(substring) );
-		}
-
-		/// <summary>
-		/// Matches returns a constraint that succeeds if the actual
-		/// value matches the pattern supplied as an argument.
-		/// </summary>
-		/// <param name="pattern"></param>
-		/// <returns></returns>
-		public static Constraint Matches(string pattern)
-		{
-			return new RegexConstraint(pattern);
-		}
-
-		/// <summary>
-		/// DoesNotMatch returns a constraint that failss if the actual
-		/// value matches the pattern supplied as an argument.
-		/// </summary>
-		/// <param name="pattern"></param>
-		/// <returns></returns>
-		public static Constraint DoesNotMatch(string pattern)
-		{
-			return new NotConstraint( Matches(pattern) );
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework.SyntaxHelpers
+{
+	/// <summary>
+	/// The Text class is a helper class with properties and methods
+	/// that supply a number of constraints used with strings.
+	/// </summary>
+	public class Text
+	{
+		/// <summary>
+		/// Text.All returns a ConstraintBuilder, which will apply
+		/// the following constraint to all members of a collection,
+		/// succeeding if all of them succeed.
+		/// </summary>
+		public static ConstraintBuilder All
+		{
+			get { return new ConstraintBuilder().All; }
+		}
+
+		/// <summary>
+		/// Contains returns a constraint that succeeds if the actual
+		/// value contains the substring supplied as an argument.
+		/// </summary>
+		public static Constraint Contains(string substring)
+		{
+			return new SubstringConstraint(substring);
+		}
+
+		/// <summary>
+		/// DoesNotContain returns a constraint that fails if the actual
+		/// value contains the substring supplied as an argument.
+		/// </summary>
+		public static Constraint DoesNotContain(string substring)
+		{
+			return new NotConstraint( Contains(substring) );
+		}
+
+		/// <summary>
+		/// StartsWith returns a constraint that succeeds if the actual
+		/// value starts with the substring supplied as an argument.
+		/// </summary>
+		public static Constraint StartsWith(string substring)
+		{
+			return new StartsWithConstraint(substring);
+		}
+
+		/// <summary>
+		/// DoesNotStartWith returns a constraint that fails if the actual
+		/// value starts with the substring supplied as an argument.
+		/// </summary>
+		public static Constraint DoesNotStartWith(string substring)
+		{
+			return new NotConstraint( StartsWith(substring) );
+		}
+
+		/// <summary>
+		/// EndsWith returns a constraint that succeeds if the actual
+		/// value ends with the substring supplied as an argument.
+		/// </summary>
+		public static Constraint EndsWith(string substring)
+		{
+			return new EndsWithConstraint(substring);
+		}
+
+		/// <summary>
+		/// DoesNotEndWith returns a constraint that fails if the actual
+		/// value ends with the substring supplied as an argument.
+		/// </summary>
+		public static Constraint DoesNotEndWith(string substring)
+		{
+			return new NotConstraint( EndsWith(substring) );
+		}
+
+		/// <summary>
+		/// Matches returns a constraint that succeeds if the actual
+		/// value matches the pattern supplied as an argument.
+		/// </summary>
+		/// <param name="pattern"></param>
+		/// <returns></returns>
+		public static Constraint Matches(string pattern)
+		{
+			return new RegexConstraint(pattern);
+		}
+
+		/// <summary>
+		/// DoesNotMatch returns a constraint that failss if the actual
+		/// value matches the pattern supplied as an argument.
+		/// </summary>
+		/// <param name="pattern"></param>
+		/// <returns></returns>
+		public static Constraint DoesNotMatch(string pattern)
+		{
+			return new NotConstraint( Matches(pattern) );
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/TearDownAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/TearDownAttribute.cs
@@ -1,19 +1,19 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Attribute used to identify a method that is called 
-	/// immediately after each test is run. The method is 
-	/// guaranteed to be called, even if an exception is thrown.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
-	public class TearDownAttribute : Attribute
-	{}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Attribute used to identify a method that is called 
+	/// immediately after each test is run. The method is 
+	/// guaranteed to be called, even if an exception is thrown.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+	public class TearDownAttribute : Attribute
+	{}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/TestAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/TestAttribute.cs
@@ -1,46 +1,46 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Adding this attribute to a method within a <seealso cref="TestFixtureAttribute"/> 
-	/// class makes the method callable from the NUnit test runner. There is a property 
-	/// called Description which is optional which you can provide a more detailed test
-	/// description. This class cannot be inherited.
-	/// </summary>
-	/// 
-	/// <example>
-	/// [TestFixture]
-	/// public class Fixture
-	/// {
-	///   [Test]
-	///   public void MethodToTest()
-	///   {}
-	///   
-	///   [Test(Description = "more detailed description")]
-	///   publc void TestDescriptionMethod()
-	///   {}
-	/// }
-	/// </example>
-	/// 
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
-	public class TestAttribute : Attribute
-	{
-		private string description;
-
-		/// <summary>
-		/// Descriptive text for this test
-		/// </summary>
-		public string Description
-		{
-			get { return description; }
-			set { description = value; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Adding this attribute to a method within a <seealso cref="TestFixtureAttribute"/> 
+	/// class makes the method callable from the NUnit test runner. There is a property 
+	/// called Description which is optional which you can provide a more detailed test
+	/// description. This class cannot be inherited.
+	/// </summary>
+	/// 
+	/// <example>
+	/// [TestFixture]
+	/// public class Fixture
+	/// {
+	///   [Test]
+	///   public void MethodToTest()
+	///   {}
+	///   
+	///   [Test(Description = "more detailed description")]
+	///   publc void TestDescriptionMethod()
+	///   {}
+	/// }
+	/// </example>
+	/// 
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+	public class TestAttribute : Attribute
+	{
+		private string description;
+
+		/// <summary>
+		/// Descriptive text for this test
+		/// </summary>
+		public string Description
+		{
+			get { return description; }
+			set { description = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/TestFixtureAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/TestFixtureAttribute.cs
@@ -1,30 +1,30 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <example>
-	/// [TestFixture]
-	/// public class ExampleClass 
-	/// {}
-	/// </example>
-	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=true)]
-	public class TestFixtureAttribute : Attribute
-	{
-		private string description;
-
-		/// <summary>
-		/// Descriptive text for this fixture
-		/// </summary>
-		public string Description
-		{
-			get { return description; }
-			set { description = value; }
-		}
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <example>
+	/// [TestFixture]
+	/// public class ExampleClass 
+	/// {}
+	/// </example>
+	[AttributeUsage(AttributeTargets.Class, AllowMultiple=false, Inherited=true)]
+	public class TestFixtureAttribute : Attribute
+	{
+		private string description;
+
+		/// <summary>
+		/// Descriptive text for this fixture
+		/// </summary>
+		public string Description
+		{
+			get { return description; }
+			set { description = value; }
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/TestFixtureSetUpAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/TestFixtureSetUpAttribute.cs
@@ -1,19 +1,19 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Attribute used to identify a method that is 
-	/// called before any tests in a fixture are run.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
-	public class TestFixtureSetUpAttribute : Attribute
-	{
-	}
-}
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Attribute used to identify a method that is 
+	/// called before any tests in a fixture are run.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+	public class TestFixtureSetUpAttribute : Attribute
+	{
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/TestFixtureTearDownAttribute.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/TestFixtureTearDownAttribute.cs
@@ -1,21 +1,21 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-namespace NUnit.Framework
-{
-	using System;
-
-	/// <summary>
-	/// Attribute used to identify a method that is called after
-	/// all the tests in a fixture have run. The method is 
-	/// guaranteed to be called, even if an exception is thrown.
-	/// </summary>
-	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
-	public class TestFixtureTearDownAttribute : Attribute
-	{
-	}
-}
-
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+namespace NUnit.Framework
+{
+	using System;
+
+	/// <summary>
+	/// Attribute used to identify a method that is called after
+	/// all the tests in a fixture have run. The method is 
+	/// guaranteed to be called, even if an exception is thrown.
+	/// </summary>
+	[AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
+	public class TestFixtureTearDownAttribute : Attribute
+	{
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/TextMessageWriter.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/TextMessageWriter.cs
@@ -1,474 +1,474 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.IO;
-using System.Text;
-using System.Collections;
-using System.Globalization;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Framework
-{
-	/// <summary>
-	/// TextMessageWriter writes constraint descriptions and messages
-	/// in displayable form as a text stream. It tailors the display
-	/// of individual message components to form the standard message
-	/// format of NUnit assertion failure messages.
-	/// </summary>
-    public class TextMessageWriter : MessageWriter
-    {
-        #region Message Formats and Constants
-        private static readonly int DEFAULT_LINE_LENGTH = 78;
-
-		// Prefixes used in all failure messages. All must be the same
-		// length, which is held in the PrefixLength field. Should not
-		// contain any tabs or newline characters.
-		/// <summary>
-		/// Prefix used for the expected value line of a message
-		/// </summary>
-		public static readonly string Pfx_Expected = "  Expected: ";
-		/// <summary>
-		/// Prefix used for the actual value line of a message
-		/// </summary>
-		public static readonly string Pfx_Actual = "  But was:  ";
-		/// <summary>
-		/// Length of a message prefix
-		/// </summary>
-		public static readonly int PrefixLength = Pfx_Expected.Length;
-		
-		private static readonly string Fmt_Connector = " {0} ";
-        private static readonly string Fmt_Predicate = "{0} ";
-        //private static readonly string Fmt_Label = "{0}";
-		private static readonly string Fmt_Modifier = ", {0}";
-
-        private static readonly string Fmt_Null = "null";
-        private static readonly string Fmt_EmptyString = "<string.Empty>";
-        private static readonly string Fmt_EmptyCollection = "<empty>";
-
-        private static readonly string Fmt_String = "\"{0}\"";
-        private static readonly string Fmt_Char = "'{0}'";
-		private static readonly string Fmt_DateTime = "yyyy-MM-dd HH:mm:ss.fff";
-        private static readonly string Fmt_ValueType = "{0}";
-        private static readonly string Fmt_Default = "<{0}>";
-        #endregion
-
-		private int maxLineLength = DEFAULT_LINE_LENGTH;
-
-        #region Constructors
-		/// <summary>
-		/// Construct a TextMessageWriter
-		/// </summary>
-        public TextMessageWriter() { }
-
-        /// <summary>
-        /// Construct a TextMessageWriter, specifying a user message
-        /// and optional formatting arguments.
-        /// </summary>
-        /// <param name="userMessage"></param>
-        /// <param name="args"></param>
-		public TextMessageWriter(string userMessage, params object[] args)
-        {
-			if ( userMessage != null && userMessage != string.Empty)
-				this.WriteMessageLine(userMessage, args);
-        }
-        #endregion
-
-        #region Properties
-        /// <summary>
-        /// Gets or sets the maximum line length for this writer
-        /// </summary>
-        public override int MaxLineLength
-        {
-            get { return maxLineLength; }
-            set { maxLineLength = value; }
-        }
-        #endregion
-
-        #region Public Methods - High Level
-        /// <summary>
-        /// Method to write single line  message with optional args, usually
-        /// written to precede the general failure message, at a givel 
-        /// indentation level.
-        /// </summary>
-        /// <param name="level">The indentation level of the message</param>
-        /// <param name="message">The message to be written</param>
-        /// <param name="args">Any arguments used in formatting the message</param>
-        public override void WriteMessageLine(int level, string message, params object[] args)
-        {
-            if (message != null)
-            {
-                while (level-- >= 0) Write("  ");
-
-                if (args != null && args.Length > 0)
-                    message = string.Format(message, args);
-
-                WriteLine(message);
-            }
-        }
-
-        /// <summary>
-        /// Display Expected and Actual lines for a constraint. This
-        /// is called by MessageWriter's default implementation of 
-        /// WriteMessageTo and provides the generic two-line display. 
-        /// </summary>
-        /// <param name="constraint">The constraint that failed</param>
-        public override void DisplayDifferences(Constraint constraint)
-        {
-            WriteExpectedLine(constraint);
-            WriteActualLine(constraint);
-        }
-
-		/// <summary>
-		/// Display Expected and Actual lines for given values. This
-		/// method may be called by constraints that need more control over
-		/// the display of actual and expected values than is provided
-		/// by the default implementation.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value causing the failure</param>
-		public override void DisplayDifferences(object expected, object actual)
-		{
-			WriteExpectedLine(expected);
-			WriteActualLine(actual);
-		}
-
-		/// <summary>
-		/// Display Expected and Actual lines for given values, including
-		/// a tolerance value on the expected line.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="actual">The actual value causing the failure</param>
-		/// <param name="tolerance">The tolerance within which the test was made</param>
-		public override void DisplayDifferences(object expected, object actual, object tolerance)
-		{
-			WriteExpectedLine(expected, tolerance);
-			WriteActualLine(actual);
-		}
-
-		/// <summary>
-        /// Display the expected and actual string values on separate lines.
-        /// If the mismatch parameter is >=0, an additional line is displayed
-        /// line containing a caret that points to the mismatch point.
-        /// </summary>
-        /// <param name="expected">The expected string value</param>
-        /// <param name="actual">The actual string value</param>
-        /// <param name="mismatch">The point at which the strings don't match or -1</param>
-        /// <param name="ignoreCase">If true, case is ignored in string comparisons</param>
-        /// <param name="clipping">If true, clip the strings to fit the max line length</param>
-        public override void DisplayStringDifferences(string expected, string actual, int mismatch, bool ignoreCase, bool clipping)
-        {
-            // Maximum string we can display without truncating
-            int maxDisplayLength = MaxLineLength
-                - PrefixLength   // Allow for prefix
-                - 2;             // 2 quotation marks
-
-            if ( clipping )
-                MsgUtils.ClipExpectedAndActual(ref expected, ref actual, maxDisplayLength, mismatch);
-
-            expected = MsgUtils.ConvertWhitespace(expected);
-            actual = MsgUtils.ConvertWhitespace(actual);
-
-            // The mismatch position may have changed due to clipping or white space conversion
-            mismatch = MsgUtils.FindMismatchPosition(expected, actual, 0, ignoreCase);
-
-			Write( Pfx_Expected );
-			WriteExpectedValue( expected );
-			if ( ignoreCase )
-				WriteModifier( "ignoring case" );
-			WriteLine();
-			WriteActualLine( actual );
-            //DisplayDifferences(expected, actual);
-            if (mismatch >= 0)
-                WriteCaretLine(mismatch);
-        }
-        #endregion
-
-        #region Public Methods - Low Level
-		/// <summary>
-		/// Writes the text for a connector.
-		/// </summary>
-		/// <param name="connector">The connector.</param>
-		public override void WriteConnector(string connector)
-        {
-            Write(Fmt_Connector, connector);
-        }
-
-		/// <summary>
-		/// Writes the text for a predicate.
-		/// </summary>
-		/// <param name="predicate">The predicate.</param>
-		public override void WritePredicate(string predicate)
-        {
-            Write(Fmt_Predicate, predicate);
-        }
-
-        //public override void WriteLabel(string label)
-        //{
-        //    Write(Fmt_Label, label);
-        //}
-
-        /// <summary>
-        /// Write the text for a modifier.
-        /// </summary>
-        /// <param name="modifier">The modifier.</param>
-		public override void WriteModifier(string modifier)
-		{
-			Write(Fmt_Modifier, modifier);
-		}
-
-
-		/// <summary>
-		/// Writes the text for an expected value.
-		/// </summary>
-		/// <param name="expected">The expected value.</param>
-		public override void WriteExpectedValue(object expected)
-        {
-            WriteValue(expected);
-        }
-
-		/// <summary>
-		/// Writes the text for an actual value.
-		/// </summary>
-		/// <param name="actual">The actual value.</param>
-		public override void WriteActualValue(object actual)
-        {
-            WriteValue(actual);
-        }
-
-		/// <summary>
-		/// Writes the text for a generalized value.
-		/// </summary>
-		/// <param name="val">The value.</param>
-		public override void WriteValue(object val)
-        {
-            if (val == null)
-                Write(Fmt_Null);
-            else if (val.GetType().IsArray)
-                WriteArray((Array)val);
-            else if (val is ICollection)
-                WriteCollectionElements((ICollection)val, 0, 10);
-            else if (val is string)
-                WriteString((string)val);
-            else if (val is char)
-                WriteChar((char)val);
-            else if (val is double)
-                WriteDouble((double)val);
-            else if (val is float)
-                WriteFloat((float)val);
-            else if (val is decimal)
-                WriteDecimal((decimal)val);
-			else if (val is DateTime)
-				WriteDateTime((DateTime)val);
-            else if (val.GetType().IsValueType)
-                Write(Fmt_ValueType, val);
-            else
-                Write(Fmt_Default, val);
-        }
-
-        /// <summary>
-        /// Writes the text for a collection value,
-        /// starting at a particular point, to a max length
-        /// </summary>
-        /// <param name="collection">The collection containing elements to write.</param>
-        /// <param name="start">The starting point of the elements to write</param>
-        /// <param name="max">The maximum number of elements to write</param>
-		public override void WriteCollectionElements(ICollection collection, int start, int max)
-		{
-			if ( collection.Count == 0 )
-			{
-				Write(Fmt_EmptyCollection);
-				return;
-			}
-
-			int count = 0;
-			int index = 0;
-			Write("< ");
-
-			foreach (object obj in collection)
-			{
-				if ( index++ >= start )
-				{
-					if (count > 0)
-						Write(", ");
-					WriteValue(obj);
-					if ( ++count >= max )
-						break;
-				}
-			}
-
-			if ( index < collection.Count )
-				Write("...");
-
-			Write(" >");
-		}
-
-		private void WriteArray(Array array)
-        {
-			if ( array.Length == 0 )
-			{
-				Write( Fmt_EmptyCollection );
-				return;
-			}
-			
-			int rank = array.Rank;
-            int[] products = new int[rank];
-
-            for (int product = 1, r = rank; --r >= 0; )
-                products[r] = product *= array.GetLength(r);
-
-            int count = 0;
-            foreach (object obj in array)
-            {
-                if (count > 0)
-                    Write(", ");
-
-                bool startSegment = false;
-                for (int r = 0; r < rank; r++)
-                {
-                    startSegment = startSegment || count % products[r] == 0;
-                    if (startSegment) Write("< ");
-                }
-
-                WriteValue(obj);
-
-                ++count;
-
-                bool nextSegment = false;
-                for (int r = 0; r < rank; r++)
-                {
-                    nextSegment = nextSegment || count % products[r] == 0;
-                    if (nextSegment) Write(" >");
-                }
-            }
-        }
-
-        private void WriteString(string s)
-        {
-            if (s == string.Empty)
-                Write(Fmt_EmptyString);
-            else
-                Write(Fmt_String, s);
-        }
-
-        private void WriteChar(char c)
-        {
-            Write(Fmt_Char, c);
-        }
-
-        private void WriteDouble(double d)
-        {
-
-            if (double.IsNaN(d) || double.IsInfinity(d))
-                Write(d);
-            else
-            {
-                string s = d.ToString("G17", CultureInfo.InvariantCulture);
-
-                if (s.IndexOf('.') > 0)
-                    Write(s + "d");
-                else
-                    Write(s + ".0d");
-            }
-        }
-
-        private void WriteFloat(float f)
-        {
-            if (float.IsNaN(f) || float.IsInfinity(f))
-                Write(f);
-            else
-            {
-                string s = f.ToString("G9", CultureInfo.InvariantCulture);
-
-                if (s.IndexOf('.') > 0)
-                    Write(s + "f");
-                else
-                    Write(s + ".0f");
-            }
-        }
-
-        private void WriteDecimal(Decimal d)
-        {
-            Write(d.ToString("G29", CultureInfo.InvariantCulture) + "m");
-        }
-
-		private void WriteDateTime(DateTime dt)
-		{
-			Write(dt.ToString(Fmt_DateTime, CultureInfo.InvariantCulture));
-		}
-        #endregion
-
-        #region Helper Methods
-        /// <summary>
-        /// Write the generic 'Expected' line for a constraint
-        /// </summary>
-        /// <param name="constraint">The constraint that failed</param>
-        private void WriteExpectedLine(Constraint constraint)
-        {
-            Write(Pfx_Expected);
-            constraint.WriteDescriptionTo(this);
-            WriteLine();
-        }
-
-		/// <summary>
-		/// Write the generic 'Expected' line for a given value
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		private void WriteExpectedLine(object expected)
-		{
-            WriteExpectedLine(expected, null);
-		}
-
-		/// <summary>
-		/// Write the generic 'Expected' line for a given value
-		/// and tolerance.
-		/// </summary>
-		/// <param name="expected">The expected value</param>
-		/// <param name="tolerance">The tolerance within which the test was made</param>
-		private void WriteExpectedLine(object expected, object tolerance)
-		{
-			Write(Pfx_Expected);
-			WriteExpectedValue(expected);
-
-            if (tolerance != null)
-            {
-                WriteConnector("+/-");
-                WriteExpectedValue(tolerance);
-            }
-
-			WriteLine();
-		}
-
-		/// <summary>
-		/// Write the generic 'Actual' line for a constraint
-		/// </summary>
-		/// <param name="constraint">The constraint for which the actual value is to be written</param>
-		private void WriteActualLine(Constraint constraint)
-		{
-			Write(Pfx_Actual);
-			constraint.WriteActualValueTo(this);
-			WriteLine();
-		}
-
-		/// <summary>
-		/// Write the generic 'Actual' line for a given value
-		/// </summary>
-		/// <param name="actual">The actual value causing a failure</param>
-		private void WriteActualLine(object actual)
-		{
-			Write(Pfx_Actual);
-			WriteActualValue(actual);
-			WriteLine();
-		}
-
-		private void WriteCaretLine(int mismatch)
-        {
-            // We subtract 2 for the initial 2 blanks and add back 1 for the initial quote
-            WriteLine("  {0}^", new string('-', PrefixLength + mismatch - 2 + 1));
-        }
-        #endregion
-    }
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.IO;
+using System.Text;
+using System.Collections;
+using System.Globalization;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Framework
+{
+	/// <summary>
+	/// TextMessageWriter writes constraint descriptions and messages
+	/// in displayable form as a text stream. It tailors the display
+	/// of individual message components to form the standard message
+	/// format of NUnit assertion failure messages.
+	/// </summary>
+    public class TextMessageWriter : MessageWriter
+    {
+        #region Message Formats and Constants
+        private static readonly int DEFAULT_LINE_LENGTH = 78;
+
+		// Prefixes used in all failure messages. All must be the same
+		// length, which is held in the PrefixLength field. Should not
+		// contain any tabs or newline characters.
+		/// <summary>
+		/// Prefix used for the expected value line of a message
+		/// </summary>
+		public static readonly string Pfx_Expected = "  Expected: ";
+		/// <summary>
+		/// Prefix used for the actual value line of a message
+		/// </summary>
+		public static readonly string Pfx_Actual = "  But was:  ";
+		/// <summary>
+		/// Length of a message prefix
+		/// </summary>
+		public static readonly int PrefixLength = Pfx_Expected.Length;
+		
+		private static readonly string Fmt_Connector = " {0} ";
+        private static readonly string Fmt_Predicate = "{0} ";
+        //private static readonly string Fmt_Label = "{0}";
+		private static readonly string Fmt_Modifier = ", {0}";
+
+        private static readonly string Fmt_Null = "null";
+        private static readonly string Fmt_EmptyString = "<string.Empty>";
+        private static readonly string Fmt_EmptyCollection = "<empty>";
+
+        private static readonly string Fmt_String = "\"{0}\"";
+        private static readonly string Fmt_Char = "'{0}'";
+		private static readonly string Fmt_DateTime = "yyyy-MM-dd HH:mm:ss.fff";
+        private static readonly string Fmt_ValueType = "{0}";
+        private static readonly string Fmt_Default = "<{0}>";
+        #endregion
+
+		private int maxLineLength = DEFAULT_LINE_LENGTH;
+
+        #region Constructors
+		/// <summary>
+		/// Construct a TextMessageWriter
+		/// </summary>
+        public TextMessageWriter() { }
+
+        /// <summary>
+        /// Construct a TextMessageWriter, specifying a user message
+        /// and optional formatting arguments.
+        /// </summary>
+        /// <param name="userMessage"></param>
+        /// <param name="args"></param>
+		public TextMessageWriter(string userMessage, params object[] args)
+        {
+			if ( userMessage != null && userMessage != string.Empty)
+				this.WriteMessageLine(userMessage, args);
+        }
+        #endregion
+
+        #region Properties
+        /// <summary>
+        /// Gets or sets the maximum line length for this writer
+        /// </summary>
+        public override int MaxLineLength
+        {
+            get { return maxLineLength; }
+            set { maxLineLength = value; }
+        }
+        #endregion
+
+        #region Public Methods - High Level
+        /// <summary>
+        /// Method to write single line  message with optional args, usually
+        /// written to precede the general failure message, at a givel 
+        /// indentation level.
+        /// </summary>
+        /// <param name="level">The indentation level of the message</param>
+        /// <param name="message">The message to be written</param>
+        /// <param name="args">Any arguments used in formatting the message</param>
+        public override void WriteMessageLine(int level, string message, params object[] args)
+        {
+            if (message != null)
+            {
+                while (level-- >= 0) Write("  ");
+
+                if (args != null && args.Length > 0)
+                    message = string.Format(message, args);
+
+                WriteLine(message);
+            }
+        }
+
+        /// <summary>
+        /// Display Expected and Actual lines for a constraint. This
+        /// is called by MessageWriter's default implementation of 
+        /// WriteMessageTo and provides the generic two-line display. 
+        /// </summary>
+        /// <param name="constraint">The constraint that failed</param>
+        public override void DisplayDifferences(Constraint constraint)
+        {
+            WriteExpectedLine(constraint);
+            WriteActualLine(constraint);
+        }
+
+		/// <summary>
+		/// Display Expected and Actual lines for given values. This
+		/// method may be called by constraints that need more control over
+		/// the display of actual and expected values than is provided
+		/// by the default implementation.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value causing the failure</param>
+		public override void DisplayDifferences(object expected, object actual)
+		{
+			WriteExpectedLine(expected);
+			WriteActualLine(actual);
+		}
+
+		/// <summary>
+		/// Display Expected and Actual lines for given values, including
+		/// a tolerance value on the expected line.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="actual">The actual value causing the failure</param>
+		/// <param name="tolerance">The tolerance within which the test was made</param>
+		public override void DisplayDifferences(object expected, object actual, object tolerance)
+		{
+			WriteExpectedLine(expected, tolerance);
+			WriteActualLine(actual);
+		}
+
+		/// <summary>
+        /// Display the expected and actual string values on separate lines.
+        /// If the mismatch parameter is >=0, an additional line is displayed
+        /// line containing a caret that points to the mismatch point.
+        /// </summary>
+        /// <param name="expected">The expected string value</param>
+        /// <param name="actual">The actual string value</param>
+        /// <param name="mismatch">The point at which the strings don't match or -1</param>
+        /// <param name="ignoreCase">If true, case is ignored in string comparisons</param>
+        /// <param name="clipping">If true, clip the strings to fit the max line length</param>
+        public override void DisplayStringDifferences(string expected, string actual, int mismatch, bool ignoreCase, bool clipping)
+        {
+            // Maximum string we can display without truncating
+            int maxDisplayLength = MaxLineLength
+                - PrefixLength   // Allow for prefix
+                - 2;             // 2 quotation marks
+
+            if ( clipping )
+                MsgUtils.ClipExpectedAndActual(ref expected, ref actual, maxDisplayLength, mismatch);
+
+            expected = MsgUtils.ConvertWhitespace(expected);
+            actual = MsgUtils.ConvertWhitespace(actual);
+
+            // The mismatch position may have changed due to clipping or white space conversion
+            mismatch = MsgUtils.FindMismatchPosition(expected, actual, 0, ignoreCase);
+
+			Write( Pfx_Expected );
+			WriteExpectedValue( expected );
+			if ( ignoreCase )
+				WriteModifier( "ignoring case" );
+			WriteLine();
+			WriteActualLine( actual );
+            //DisplayDifferences(expected, actual);
+            if (mismatch >= 0)
+                WriteCaretLine(mismatch);
+        }
+        #endregion
+
+        #region Public Methods - Low Level
+		/// <summary>
+		/// Writes the text for a connector.
+		/// </summary>
+		/// <param name="connector">The connector.</param>
+		public override void WriteConnector(string connector)
+        {
+            Write(Fmt_Connector, connector);
+        }
+
+		/// <summary>
+		/// Writes the text for a predicate.
+		/// </summary>
+		/// <param name="predicate">The predicate.</param>
+		public override void WritePredicate(string predicate)
+        {
+            Write(Fmt_Predicate, predicate);
+        }
+
+        //public override void WriteLabel(string label)
+        //{
+        //    Write(Fmt_Label, label);
+        //}
+
+        /// <summary>
+        /// Write the text for a modifier.
+        /// </summary>
+        /// <param name="modifier">The modifier.</param>
+		public override void WriteModifier(string modifier)
+		{
+			Write(Fmt_Modifier, modifier);
+		}
+
+
+		/// <summary>
+		/// Writes the text for an expected value.
+		/// </summary>
+		/// <param name="expected">The expected value.</param>
+		public override void WriteExpectedValue(object expected)
+        {
+            WriteValue(expected);
+        }
+
+		/// <summary>
+		/// Writes the text for an actual value.
+		/// </summary>
+		/// <param name="actual">The actual value.</param>
+		public override void WriteActualValue(object actual)
+        {
+            WriteValue(actual);
+        }
+
+		/// <summary>
+		/// Writes the text for a generalized value.
+		/// </summary>
+		/// <param name="val">The value.</param>
+		public override void WriteValue(object val)
+        {
+            if (val == null)
+                Write(Fmt_Null);
+            else if (val.GetType().IsArray)
+                WriteArray((Array)val);
+            else if (val is ICollection)
+                WriteCollectionElements((ICollection)val, 0, 10);
+            else if (val is string)
+                WriteString((string)val);
+            else if (val is char)
+                WriteChar((char)val);
+            else if (val is double)
+                WriteDouble((double)val);
+            else if (val is float)
+                WriteFloat((float)val);
+            else if (val is decimal)
+                WriteDecimal((decimal)val);
+			else if (val is DateTime)
+				WriteDateTime((DateTime)val);
+            else if (val.GetType().IsValueType)
+                Write(Fmt_ValueType, val);
+            else
+                Write(Fmt_Default, val);
+        }
+
+        /// <summary>
+        /// Writes the text for a collection value,
+        /// starting at a particular point, to a max length
+        /// </summary>
+        /// <param name="collection">The collection containing elements to write.</param>
+        /// <param name="start">The starting point of the elements to write</param>
+        /// <param name="max">The maximum number of elements to write</param>
+		public override void WriteCollectionElements(ICollection collection, int start, int max)
+		{
+			if ( collection.Count == 0 )
+			{
+				Write(Fmt_EmptyCollection);
+				return;
+			}
+
+			int count = 0;
+			int index = 0;
+			Write("< ");
+
+			foreach (object obj in collection)
+			{
+				if ( index++ >= start )
+				{
+					if (count > 0)
+						Write(", ");
+					WriteValue(obj);
+					if ( ++count >= max )
+						break;
+				}
+			}
+
+			if ( index < collection.Count )
+				Write("...");
+
+			Write(" >");
+		}
+
+		private void WriteArray(Array array)
+        {
+			if ( array.Length == 0 )
+			{
+				Write( Fmt_EmptyCollection );
+				return;
+			}
+			
+			int rank = array.Rank;
+            int[] products = new int[rank];
+
+            for (int product = 1, r = rank; --r >= 0; )
+                products[r] = product *= array.GetLength(r);
+
+            int count = 0;
+            foreach (object obj in array)
+            {
+                if (count > 0)
+                    Write(", ");
+
+                bool startSegment = false;
+                for (int r = 0; r < rank; r++)
+                {
+                    startSegment = startSegment || count % products[r] == 0;
+                    if (startSegment) Write("< ");
+                }
+
+                WriteValue(obj);
+
+                ++count;
+
+                bool nextSegment = false;
+                for (int r = 0; r < rank; r++)
+                {
+                    nextSegment = nextSegment || count % products[r] == 0;
+                    if (nextSegment) Write(" >");
+                }
+            }
+        }
+
+        private void WriteString(string s)
+        {
+            if (s == string.Empty)
+                Write(Fmt_EmptyString);
+            else
+                Write(Fmt_String, s);
+        }
+
+        private void WriteChar(char c)
+        {
+            Write(Fmt_Char, c);
+        }
+
+        private void WriteDouble(double d)
+        {
+
+            if (double.IsNaN(d) || double.IsInfinity(d))
+                Write(d);
+            else
+            {
+                string s = d.ToString("G17", CultureInfo.InvariantCulture);
+
+                if (s.IndexOf('.') > 0)
+                    Write(s + "d");
+                else
+                    Write(s + ".0d");
+            }
+        }
+
+        private void WriteFloat(float f)
+        {
+            if (float.IsNaN(f) || float.IsInfinity(f))
+                Write(f);
+            else
+            {
+                string s = f.ToString("G9", CultureInfo.InvariantCulture);
+
+                if (s.IndexOf('.') > 0)
+                    Write(s + "f");
+                else
+                    Write(s + ".0f");
+            }
+        }
+
+        private void WriteDecimal(Decimal d)
+        {
+            Write(d.ToString("G29", CultureInfo.InvariantCulture) + "m");
+        }
+
+		private void WriteDateTime(DateTime dt)
+		{
+			Write(dt.ToString(Fmt_DateTime, CultureInfo.InvariantCulture));
+		}
+        #endregion
+
+        #region Helper Methods
+        /// <summary>
+        /// Write the generic 'Expected' line for a constraint
+        /// </summary>
+        /// <param name="constraint">The constraint that failed</param>
+        private void WriteExpectedLine(Constraint constraint)
+        {
+            Write(Pfx_Expected);
+            constraint.WriteDescriptionTo(this);
+            WriteLine();
+        }
+
+		/// <summary>
+		/// Write the generic 'Expected' line for a given value
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		private void WriteExpectedLine(object expected)
+		{
+            WriteExpectedLine(expected, null);
+		}
+
+		/// <summary>
+		/// Write the generic 'Expected' line for a given value
+		/// and tolerance.
+		/// </summary>
+		/// <param name="expected">The expected value</param>
+		/// <param name="tolerance">The tolerance within which the test was made</param>
+		private void WriteExpectedLine(object expected, object tolerance)
+		{
+			Write(Pfx_Expected);
+			WriteExpectedValue(expected);
+
+            if (tolerance != null)
+            {
+                WriteConnector("+/-");
+                WriteExpectedValue(tolerance);
+            }
+
+			WriteLine();
+		}
+
+		/// <summary>
+		/// Write the generic 'Actual' line for a constraint
+		/// </summary>
+		/// <param name="constraint">The constraint for which the actual value is to be written</param>
+		private void WriteActualLine(Constraint constraint)
+		{
+			Write(Pfx_Actual);
+			constraint.WriteActualValueTo(this);
+			WriteLine();
+		}
+
+		/// <summary>
+		/// Write the generic 'Actual' line for a given value
+		/// </summary>
+		/// <param name="actual">The actual value causing a failure</param>
+		private void WriteActualLine(object actual)
+		{
+			Write(Pfx_Actual);
+			WriteActualValue(actual);
+			WriteLine();
+		}
+
+		private void WriteCaretLine(int mismatch)
+        {
+            // We subtract 2 for the initial 2 blanks and add back 1 for the initial quote
+            WriteLine("  {0}^", new string('-', PrefixLength + mismatch - 2 + 1));
+        }
+        #endregion
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/nunit.framework.dll.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/nunit.framework.dll.csproj
@@ -1,361 +1,361 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit.framework"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.Framework"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = "bin\Debug\nunit.framework.xml"
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "true"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = "bin\Release\nunit.framework.xml"
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AbstractAsserter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Assert.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Assertion.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssertionException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssertionFailureMessage.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "AssertionHelper.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CategoryAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CollectionAssert.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "DescriptionAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ExpectedExceptionAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ExplicitAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "FileAssert.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IAsserter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IExpectException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IgnoreAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IgnoreException.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IncludeExcludeAttributes.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MessageWriter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MsgUtils.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "OldTestCase.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "PropertyAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SetCultureAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "GlobalSettings.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SetUpAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SetUpFixtureAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "StringAssert.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SuiteAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TearDownAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestFixtureAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestFixtureSetUpAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TestFixtureTearDownAttribute.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "TextMessageWriter.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\BinaryOperations.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\CollectionConstraints.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\ComparisonConstraints.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\Constraint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\ConstraintBuilder.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\ContainsConstraint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\EmptyConstraint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\EqualConstraint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\Numerics.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\PrefixConstraints.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\PropertyConstraint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\SameAsConstraint.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\StringConstraints.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Constraints\TypeConstraints.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SyntaxHelpers\Has.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SyntaxHelpers\Is.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SyntaxHelpers\List.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SyntaxHelpers\ListMapper.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "SyntaxHelpers\Text.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit.framework"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.Framework"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = "bin\Debug\nunit.framework.xml"
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "true"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = "bin\Release\nunit.framework.xml"
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AbstractAsserter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Assert.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Assertion.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssertionException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssertionFailureMessage.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "AssertionHelper.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CategoryAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CollectionAssert.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "DescriptionAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ExpectedExceptionAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ExplicitAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "FileAssert.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IAsserter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IExpectException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IgnoreAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IgnoreException.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IncludeExcludeAttributes.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MessageWriter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MsgUtils.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "OldTestCase.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "PropertyAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SetCultureAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "GlobalSettings.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SetUpAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SetUpFixtureAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "StringAssert.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SuiteAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TearDownAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestFixtureAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestFixtureSetUpAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TestFixtureTearDownAttribute.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "TextMessageWriter.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\BinaryOperations.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\CollectionConstraints.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\ComparisonConstraints.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\Constraint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\ConstraintBuilder.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\ContainsConstraint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\EmptyConstraint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\EqualConstraint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\Numerics.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\PrefixConstraints.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\PropertyConstraint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\SameAsConstraint.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\StringConstraints.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Constraints\TypeConstraints.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SyntaxHelpers\Has.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SyntaxHelpers\Is.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SyntaxHelpers\List.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SyntaxHelpers\ListMapper.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "SyntaxHelpers\Text.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitFramework/framework/nunit.framework.dll_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitFramework/framework/nunit.framework.dll_VS2005.csproj
@@ -1,165 +1,165 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.framework</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Framework</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <SignAssembly>false</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <DocumentationFile>nunit.framework.xml</DocumentationFile>
-    <Optimize>true</Optimize>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <DocumentationFile>nunit.framework.xml</DocumentationFile>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AbstractAsserter.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="AssemblyInfo.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Assert.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Assertion.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="AssertionException.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="AssertionFailureMessage.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="AssertionHelper.cs" />
-    <Compile Include="CategoryAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="CollectionAssert.cs" />
-    <Compile Include="Constraints\BinaryOperations.cs" />
-    <Compile Include="Constraints\CollectionConstraints.cs" />
-    <Compile Include="Constraints\ComparisonConstraints.cs" />
-    <Compile Include="Constraints\Constraint.cs" />
-    <Compile Include="Constraints\ConstraintBuilder.cs" />
-    <Compile Include="Constraints\ContainsConstraint.cs" />
-    <Compile Include="Constraints\EmptyConstraint.cs" />
-    <Compile Include="Constraints\EqualConstraint.cs" />
-    <Compile Include="Constraints\Numerics.cs" />
-    <Compile Include="Constraints\PrefixConstraints.cs" />
-    <Compile Include="Constraints\PropertyConstraint.cs" />
-    <Compile Include="Constraints\SameAsConstraint.cs" />
-    <Compile Include="Constraints\StringConstraints.cs" />
-    <Compile Include="Constraints\TypeConstraints.cs" />
-    <Compile Include="DescriptionAttribute.cs" />
-    <Compile Include="ExpectedExceptionAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ExplicitAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="FileAssert.cs" />
-    <Compile Include="IAsserter.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="IExpectException.cs" />
-    <Compile Include="IgnoreAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="IgnoreException.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="IncludeExcludeAttributes.cs" />
-    <Compile Include="MessageWriter.cs" />
-    <Compile Include="MsgUtils.cs" />
-    <Compile Include="OldTestCase.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="PropertyAttribute.cs" />
-    <Compile Include="SetCultureAttribute.cs" />
-    <Compile Include="GlobalSettings.cs" />
-    <Compile Include="SetUpAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="SetUpFixtureAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="StringAssert.cs" />
-    <Compile Include="SuiteAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="SyntaxHelpers\List.cs" />
-    <Compile Include="SyntaxHelpers\Has.cs" />
-    <Compile Include="SyntaxHelpers\Is.cs" />
-    <Compile Include="SyntaxHelpers\ListMapper.cs" />
-    <Compile Include="SyntaxHelpers\Text.cs" />
-    <Compile Include="TearDownAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestFixtureAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestFixtureSetUpAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TestFixtureTearDownAttribute.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="TextMessageWriter.cs" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.framework</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Framework</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <SignAssembly>false</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <DocumentationFile>nunit.framework.xml</DocumentationFile>
+    <Optimize>true</Optimize>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <DocumentationFile>nunit.framework.xml</DocumentationFile>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AbstractAsserter.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Assert.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Assertion.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssertionException.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssertionFailureMessage.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssertionHelper.cs" />
+    <Compile Include="CategoryAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="CollectionAssert.cs" />
+    <Compile Include="Constraints\BinaryOperations.cs" />
+    <Compile Include="Constraints\CollectionConstraints.cs" />
+    <Compile Include="Constraints\ComparisonConstraints.cs" />
+    <Compile Include="Constraints\Constraint.cs" />
+    <Compile Include="Constraints\ConstraintBuilder.cs" />
+    <Compile Include="Constraints\ContainsConstraint.cs" />
+    <Compile Include="Constraints\EmptyConstraint.cs" />
+    <Compile Include="Constraints\EqualConstraint.cs" />
+    <Compile Include="Constraints\Numerics.cs" />
+    <Compile Include="Constraints\PrefixConstraints.cs" />
+    <Compile Include="Constraints\PropertyConstraint.cs" />
+    <Compile Include="Constraints\SameAsConstraint.cs" />
+    <Compile Include="Constraints\StringConstraints.cs" />
+    <Compile Include="Constraints\TypeConstraints.cs" />
+    <Compile Include="DescriptionAttribute.cs" />
+    <Compile Include="ExpectedExceptionAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ExplicitAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="FileAssert.cs" />
+    <Compile Include="IAsserter.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="IExpectException.cs" />
+    <Compile Include="IgnoreAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="IgnoreException.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="IncludeExcludeAttributes.cs" />
+    <Compile Include="MessageWriter.cs" />
+    <Compile Include="MsgUtils.cs" />
+    <Compile Include="OldTestCase.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="PropertyAttribute.cs" />
+    <Compile Include="SetCultureAttribute.cs" />
+    <Compile Include="GlobalSettings.cs" />
+    <Compile Include="SetUpAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="SetUpFixtureAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="StringAssert.cs" />
+    <Compile Include="SuiteAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="SyntaxHelpers\List.cs" />
+    <Compile Include="SyntaxHelpers\Has.cs" />
+    <Compile Include="SyntaxHelpers\Is.cs" />
+    <Compile Include="SyntaxHelpers\ListMapper.cs" />
+    <Compile Include="SyntaxHelpers\Text.cs" />
+    <Compile Include="TearDownAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestFixtureAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestFixtureSetUpAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TestFixtureTearDownAttribute.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TextMessageWriter.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/AssemblyInfo.cs
@@ -1,12 +1,12 @@
-// ****************************************************************
-// This is free software licensed under the NUnit license. You
-// may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// ****************************************************************
-
-using System;
-using System.Reflection;
-
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("../../nunit.snk")]
-[assembly: AssemblyKeyName("")]
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org/?p=license&r=2.4.
+// ****************************************************************
+
+using System;
+using System.Reflection;
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("../../nunit.snk")]
+[assembly: AssemblyKeyName("")]
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/DynamicMock.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/DynamicMock.cs
@@ -1,47 +1,47 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// Summary description for DynamicMock.
-	/// </summary>
-	public class DynamicMock : Mock
-	{
-		private Type type;
-
-		private object mockInstance;
-
-		public object MockInstance
-		{
-			get 
-			{ 
-				if ( mockInstance == null )
-				{
-					MockInterfaceHandler handler = new MockInterfaceHandler( type, this );
-					mockInstance = handler.GetTransparentProxy();
-				}
-
-				return mockInstance; 
-			}
-		}
-
-		#region Constructors
-
-		public DynamicMock( Type type ) : this( "Mock" + type.Name, type ) { }
-
-		public DynamicMock( string name, Type type ) : base( name )
-		{
-//			if ( !type.IsInterface )
-//				throw new VerifyException( "DynamicMock constructor requires an interface type" );
-			this.type = type;
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// Summary description for DynamicMock.
+	/// </summary>
+	public class DynamicMock : Mock
+	{
+		private Type type;
+
+		private object mockInstance;
+
+		public object MockInstance
+		{
+			get 
+			{ 
+				if ( mockInstance == null )
+				{
+					MockInterfaceHandler handler = new MockInterfaceHandler( type, this );
+					mockInstance = handler.GetTransparentProxy();
+				}
+
+				return mockInstance; 
+			}
+		}
+
+		#region Constructors
+
+		public DynamicMock( Type type ) : this( "Mock" + type.Name, type ) { }
+
+		public DynamicMock( string name, Type type ) : base( name )
+		{
+//			if ( !type.IsInterface )
+//				throw new VerifyException( "DynamicMock constructor requires an interface type" );
+			this.type = type;
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/ICall.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/ICall.cs
@@ -1,24 +1,24 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// The ICall interface is implemented by objects that can be called
-	/// with an array of arguments and return a value.
-	/// </summary>
-	public interface ICall
-	{
-		/// <summary>
-		/// Process a call with a possibly empty set of arguments.
-		/// </summary>
-		/// <param name="args">Arguments for this call</param>
-		/// <returns>An implementation-defined return value</returns>
-		object Call( object[] args );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// The ICall interface is implemented by objects that can be called
+	/// with an array of arguments and return a value.
+	/// </summary>
+	public interface ICall
+	{
+		/// <summary>
+		/// Process a call with a possibly empty set of arguments.
+		/// </summary>
+		/// <param name="args">Arguments for this call</param>
+		/// <returns>An implementation-defined return value</returns>
+		object Call( object[] args );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/ICallHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/ICallHandler.cs
@@ -1,25 +1,25 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// The ICallHandler interface dispatches calls to methods or
-	/// other objects implementing the ICall interface.
-	/// </summary>
-	public interface ICallHandler
-	{		
-		/// <summary>
-		/// Simulate a method call on the mocked object.
-		/// </summary>
-		/// <param name="methodName">The name of the method</param>
-		/// <param name="args">Arguments for this call</param>
-		/// <returns>Previously specified object or null</returns>
-		object Call( string methodName, params object[] args );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// The ICallHandler interface dispatches calls to methods or
+	/// other objects implementing the ICall interface.
+	/// </summary>
+	public interface ICallHandler
+	{		
+		/// <summary>
+		/// Simulate a method call on the mocked object.
+		/// </summary>
+		/// <param name="methodName">The name of the method</param>
+		/// <param name="args">Arguments for this call</param>
+		/// <returns>Previously specified object or null</returns>
+		object Call( string methodName, params object[] args );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/IMethod.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/IMethod.cs
@@ -1,28 +1,28 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// The IMethod interface represents an method or other named object that 
-	/// is both callable and self-verifying.
-	/// </summary>
-	public interface IMethod : IVerify, ICall
-	{
-		/// <summary>
-		/// The name of the object
-		/// </summary>
-		string Name { get; }
-
-		/// <summary>
-		/// Tell the object to expect a certain call.
-		/// </summary>
-		/// <param name="call"></param>
-		void Expect( ICall call );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// The IMethod interface represents an method or other named object that 
+	/// is both callable and self-verifying.
+	/// </summary>
+	public interface IMethod : IVerify, ICall
+	{
+		/// <summary>
+		/// The name of the object
+		/// </summary>
+		string Name { get; }
+
+		/// <summary>
+		/// Tell the object to expect a certain call.
+		/// </summary>
+		/// <param name="call"></param>
+		void Expect( ICall call );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/IMock.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/IMock.cs
@@ -1,66 +1,66 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// Summary description for IMock.
-	/// </summary>
-	public interface IMock : IVerify, ICallHandler
-	{
-		/// <summary>
-		/// The name of this mock - used in messages
-		/// </summary>
-		string Name { get; }
-	
-		/// <summary>
-		/// True if unexpected calls should cause an error, false to ignore them
-		/// </summary>
-		bool Strict { get; set; }
-
-		/// <summary>
-		/// Set up to expect a call to a method with a set of arguments
-		/// </summary>
-		/// <param name="methodName">The name of the method</param>
-		/// <param name="args">Arguments for this call</param>
-		void Expect( string methodName, params object[] args );
-
-		void Expect( string MethodName );
-
-		/// <summary>
-		/// Set up expectation that the named method will not be called
-		/// </summary>
-		/// <param name="methodName">The name of the method</param>
-		void ExpectNoCall( string methodName );
-
-		/// <summary>
-		/// Set up to expect a call to a method with a set of arguments.
-		/// The specified value will be returned.
-		/// </summary>
-		/// <param name="methodName">The name of the method</param>
-		/// <param name="returnVal">The value to be returned</param>
-		/// <param name="args">Arguments for this call</param>
-		void ExpectAndReturn( string methodName, object returnVal, params object[] args );
-
-		/// <summary>
-		/// Set up to expect a call to a method with a set of arguments.
-		/// The specified exception will be thrown.
-		/// </summary>
-		/// <param name="methodname">The name of the method</param>
-		/// <param name="exception">The exception to throw</param>
-		/// <param name="args">Arguments for this call</param>
-		void ExpectAndThrow( string methodname, Exception exception, params object[] args );
-
-		/// <summary>
-		/// Set value to return for a method or property called with any arguments
-		/// </summary>
-		/// <param name="methodName">The name of the method</param>
-		/// <param name="returnVal">The value to be returned</param>
-		void SetReturnValue( string methodName, object returnVal );
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// Summary description for IMock.
+	/// </summary>
+	public interface IMock : IVerify, ICallHandler
+	{
+		/// <summary>
+		/// The name of this mock - used in messages
+		/// </summary>
+		string Name { get; }
+	
+		/// <summary>
+		/// True if unexpected calls should cause an error, false to ignore them
+		/// </summary>
+		bool Strict { get; set; }
+
+		/// <summary>
+		/// Set up to expect a call to a method with a set of arguments
+		/// </summary>
+		/// <param name="methodName">The name of the method</param>
+		/// <param name="args">Arguments for this call</param>
+		void Expect( string methodName, params object[] args );
+
+		void Expect( string MethodName );
+
+		/// <summary>
+		/// Set up expectation that the named method will not be called
+		/// </summary>
+		/// <param name="methodName">The name of the method</param>
+		void ExpectNoCall( string methodName );
+
+		/// <summary>
+		/// Set up to expect a call to a method with a set of arguments.
+		/// The specified value will be returned.
+		/// </summary>
+		/// <param name="methodName">The name of the method</param>
+		/// <param name="returnVal">The value to be returned</param>
+		/// <param name="args">Arguments for this call</param>
+		void ExpectAndReturn( string methodName, object returnVal, params object[] args );
+
+		/// <summary>
+		/// Set up to expect a call to a method with a set of arguments.
+		/// The specified exception will be thrown.
+		/// </summary>
+		/// <param name="methodname">The name of the method</param>
+		/// <param name="exception">The exception to throw</param>
+		/// <param name="args">Arguments for this call</param>
+		void ExpectAndThrow( string methodname, Exception exception, params object[] args );
+
+		/// <summary>
+		/// Set value to return for a method or property called with any arguments
+		/// </summary>
+		/// <param name="methodName">The name of the method</param>
+		/// <param name="returnVal">The value to be returned</param>
+		void SetReturnValue( string methodName, object returnVal );
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/IVerify.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/IVerify.cs
@@ -1,18 +1,18 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// The IVerify interface is implemented by objects capable of self-verification.
-	/// </summary>
-	public interface IVerify
-	{
-		void Verify();
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// The IVerify interface is implemented by objects capable of self-verification.
+	/// </summary>
+	public interface IVerify
+	{
+		void Verify();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/MethodSignature.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/MethodSignature.cs
@@ -1,56 +1,56 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// Summary description for MockSignature.
-	/// </summary>
-	public class MethodSignature
-	{
-		public readonly string typeName;
-		public readonly string methodName;
-		public readonly Type[] argTypes;
-
-		public MethodSignature( string typeName, string methodName, Type[] argTypes )
-		{
-			this.typeName = typeName;
-			this.methodName = methodName;
-			this.argTypes = argTypes; 
-		}
-
-		public bool IsCompatibleWith( object[] args )
-		{
-			if ( args.Length != argTypes.Length )
-				return false;
-
-			for( int i = 0; i < args.Length; i++ )
-				if ( !argTypes[i].IsAssignableFrom( args[i].GetType() ) )
-					return false;
-
-			return true;
-		}
-
-		public static Type[] GetArgTypes( object[] args )
-		{
-			if ( args == null )
-				return new Type[0];
-
-			Type[] argTypes = new Type[args.Length];
-			for (int i = 0; i < argTypes.Length; ++i)
-			{
-				if (args[i] == null)
-					argTypes[i] = typeof(object);
-				else
-					argTypes[i] = args[i].GetType();
-			}
-
-			return argTypes;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// Summary description for MockSignature.
+	/// </summary>
+	public class MethodSignature
+	{
+		public readonly string typeName;
+		public readonly string methodName;
+		public readonly Type[] argTypes;
+
+		public MethodSignature( string typeName, string methodName, Type[] argTypes )
+		{
+			this.typeName = typeName;
+			this.methodName = methodName;
+			this.argTypes = argTypes; 
+		}
+
+		public bool IsCompatibleWith( object[] args )
+		{
+			if ( args.Length != argTypes.Length )
+				return false;
+
+			for( int i = 0; i < args.Length; i++ )
+				if ( !argTypes[i].IsAssignableFrom( args[i].GetType() ) )
+					return false;
+
+			return true;
+		}
+
+		public static Type[] GetArgTypes( object[] args )
+		{
+			if ( args == null )
+				return new Type[0];
+
+			Type[] argTypes = new Type[args.Length];
+			for (int i = 0; i < argTypes.Length; ++i)
+			{
+				if (args[i] == null)
+					argTypes[i] = typeof(object);
+				else
+					argTypes[i] = args[i].GetType();
+			}
+
+			return argTypes;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/Mock.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/Mock.cs
@@ -1,155 +1,155 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Runtime.Remoting.Proxies;
-using System.Runtime.Remoting.Messaging;
-using NUnit.Framework;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// Summary description for MockObject.
-	/// </summary>
-	public class Mock : IMock
-	{
-		#region Private Fields
-
-		private string name;
-
-		private bool strict;
-
-		private IDictionary methods = new Hashtable();
-
-		private Exception lastException;
-
-		#endregion
-
-		#region Properties
-
-		public Exception LastException
-		{
-			get { return lastException; }
-		}
-
-		#endregion
-
-		#region Constructors
-
-		public Mock() : this( "Mock" ) { }
-
-		public Mock( string name )
-		{
-			this.name = name;
-		}
-
-		#endregion
-
-		#region IMock Members
-
-		public string Name
-		{
-			get { return name; }
-		}
-
-		public bool Strict
-		{
-			get { return strict; }
-			set { strict = value; }
-		}
-
-		public void Expect( string methodName, params object[] args )
-		{
-			ExpectAndReturn( methodName, null, args );
-		}
-
-		public void Expect( string methodName )
-		{
-			ExpectAndReturn( methodName, null, null );
-		}
-
-		public void ExpectNoCall( string methodName )
-		{
-			methods[methodName] = new MockMethod( methodName, null, 
-				new AssertionException("Unexpected call to method " + methodName) );
-		}
-
-		public void ExpectAndReturn( string methodName, object returnVal, params object[] args )
-		{
-			AddExpectedCall( methodName, returnVal, null, args );
-		}
-
-		public void ExpectAndThrow( string methodName, Exception exception, params object[] args )
-		{
-			AddExpectedCall( methodName, null, exception, args );
-		}
-
-		public void SetReturnValue( string methodName, object returnVal )
-		{
-			methods[methodName] = new MockMethod( methodName, returnVal );
-		}
-
-		#endregion
-
-		#region IVerify Members
-
-		public virtual void Verify()
-		{
-			foreach( IMethod method in methods.Values )
-				method.Verify();
-		}
-
-		#endregion
-
-		#region ICallHandler Members
-
-		public virtual object Call( string methodName, params object[] args )
-		{
-			if ( methods.Contains( methodName ) )
-			{
-				try
-				{
-					IMethod method = (IMethod)methods[methodName];
-					return method.Call( args );
-				}
-				catch( Exception exception )
-				{
-					// Save exception in case MO is running on a separate thread
-					lastException = exception;
-					throw;
-				}
-			}
-			else // methodName is not listed in methods
-			if ( Strict )
-				Assert.Fail( "Unexpected call to " + methodName );
-			
-			// not listed but Strict is not specified
-			return null;
-		}
-
-		#endregion
-	
-		#region Helper Methods
-
-		private void AddExpectedCall( string methodName, object returnVal, Exception exception, object[] args )
-		{
-			IMethod method = (IMethod)methods[methodName];
-			if ( method == null )
-			{
-				method = new MockMethod( methodName );
-				methods[methodName] = method;
-			}
-
-			Type[] argTypes = MethodSignature.GetArgTypes( args );
-			MethodSignature signature = new MethodSignature( this.Name, methodName, argTypes );
-
-			method.Expect( new MockCall( signature, returnVal, exception, args ) );
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Messaging;
+using NUnit.Framework;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// Summary description for MockObject.
+	/// </summary>
+	public class Mock : IMock
+	{
+		#region Private Fields
+
+		private string name;
+
+		private bool strict;
+
+		private IDictionary methods = new Hashtable();
+
+		private Exception lastException;
+
+		#endregion
+
+		#region Properties
+
+		public Exception LastException
+		{
+			get { return lastException; }
+		}
+
+		#endregion
+
+		#region Constructors
+
+		public Mock() : this( "Mock" ) { }
+
+		public Mock( string name )
+		{
+			this.name = name;
+		}
+
+		#endregion
+
+		#region IMock Members
+
+		public string Name
+		{
+			get { return name; }
+		}
+
+		public bool Strict
+		{
+			get { return strict; }
+			set { strict = value; }
+		}
+
+		public void Expect( string methodName, params object[] args )
+		{
+			ExpectAndReturn( methodName, null, args );
+		}
+
+		public void Expect( string methodName )
+		{
+			ExpectAndReturn( methodName, null, null );
+		}
+
+		public void ExpectNoCall( string methodName )
+		{
+			methods[methodName] = new MockMethod( methodName, null, 
+				new AssertionException("Unexpected call to method " + methodName) );
+		}
+
+		public void ExpectAndReturn( string methodName, object returnVal, params object[] args )
+		{
+			AddExpectedCall( methodName, returnVal, null, args );
+		}
+
+		public void ExpectAndThrow( string methodName, Exception exception, params object[] args )
+		{
+			AddExpectedCall( methodName, null, exception, args );
+		}
+
+		public void SetReturnValue( string methodName, object returnVal )
+		{
+			methods[methodName] = new MockMethod( methodName, returnVal );
+		}
+
+		#endregion
+
+		#region IVerify Members
+
+		public virtual void Verify()
+		{
+			foreach( IMethod method in methods.Values )
+				method.Verify();
+		}
+
+		#endregion
+
+		#region ICallHandler Members
+
+		public virtual object Call( string methodName, params object[] args )
+		{
+			if ( methods.Contains( methodName ) )
+			{
+				try
+				{
+					IMethod method = (IMethod)methods[methodName];
+					return method.Call( args );
+				}
+				catch( Exception exception )
+				{
+					// Save exception in case MO is running on a separate thread
+					lastException = exception;
+					throw;
+				}
+			}
+			else // methodName is not listed in methods
+			if ( Strict )
+				Assert.Fail( "Unexpected call to " + methodName );
+			
+			// not listed but Strict is not specified
+			return null;
+		}
+
+		#endregion
+	
+		#region Helper Methods
+
+		private void AddExpectedCall( string methodName, object returnVal, Exception exception, object[] args )
+		{
+			IMethod method = (IMethod)methods[methodName];
+			if ( method == null )
+			{
+				method = new MockMethod( methodName );
+				methods[methodName] = method;
+			}
+
+			Type[] argTypes = MethodSignature.GetArgTypes( args );
+			MethodSignature signature = new MethodSignature( this.Name, methodName, argTypes );
+
+			method.Expect( new MockCall( signature, returnVal, exception, args ) );
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/MockCall.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/MockCall.cs
@@ -1,54 +1,54 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using NUnit.Framework;
-using NUnit.Framework.Constraints;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// Summary description for ExpectedCall.
-	/// </summary>
-	public class MockCall : ICall
-	{
-		private MethodSignature signature;
-		private object returnVal;
-		private Exception exception;
-		private object[] expectedArgs;
-
-//		public static object[] Any = new object[0];
-
-		public MockCall( MethodSignature signature, object  returnVal, Exception exception, params object[] args )
-		{
-			this.signature = signature;
-			this.returnVal = returnVal;
-			this.exception = exception;
-			this.expectedArgs = args;
-		}
-
-		public object Call( object[] actualArgs )
-		{
-			if ( expectedArgs != null )
-			{
-				Assert.AreEqual( expectedArgs.Length, actualArgs.Length, "Invalid argument count in call to {0}", this.signature.methodName );
-
-				for( int i = 0; i < expectedArgs.Length; i++ )
-				{
-					if ( expectedArgs[i] is Constraint )
-						Assert.That( actualArgs[i], (Constraint)expectedArgs[i] );
-					else
-						Assert.AreEqual( expectedArgs[i], actualArgs[i] );
-				}
-			}
-			
-			if ( exception != null )
-				throw exception;
-
-			return returnVal;
-		}
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Constraints;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// Summary description for ExpectedCall.
+	/// </summary>
+	public class MockCall : ICall
+	{
+		private MethodSignature signature;
+		private object returnVal;
+		private Exception exception;
+		private object[] expectedArgs;
+
+//		public static object[] Any = new object[0];
+
+		public MockCall( MethodSignature signature, object  returnVal, Exception exception, params object[] args )
+		{
+			this.signature = signature;
+			this.returnVal = returnVal;
+			this.exception = exception;
+			this.expectedArgs = args;
+		}
+
+		public object Call( object[] actualArgs )
+		{
+			if ( expectedArgs != null )
+			{
+				Assert.AreEqual( expectedArgs.Length, actualArgs.Length, "Invalid argument count in call to {0}", this.signature.methodName );
+
+				for( int i = 0; i < expectedArgs.Length; i++ )
+				{
+					if ( expectedArgs[i] is Constraint )
+						Assert.That( actualArgs[i], (Constraint)expectedArgs[i] );
+					else
+						Assert.AreEqual( expectedArgs[i], actualArgs[i] );
+				}
+			}
+			
+			if ( exception != null )
+				throw exception;
+
+			return returnVal;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/MockInterfaceHandler.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/MockInterfaceHandler.cs
@@ -1,72 +1,72 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using System.Runtime.Remoting.Proxies;
-using System.Runtime.Remoting.Messaging;
-using System.Reflection;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// Summary description for MockInterfaceHandler.
-	/// </summary>
-	public class MockInterfaceHandler : RealProxy
-	{
-		private ICallHandler callHandler;
-
-		public MockInterfaceHandler( Type type, ICallHandler callHandler ) : base( type ) 
-		{ 
-			this.callHandler = callHandler;
-		}
-
-		public override IMessage Invoke( IMessage msg )
-		{
-			IMethodCallMessage call = (IMethodCallMessage)msg;
-			IMethodReturnMessage result = null; 
-
-			if ( call != null )
-			{
-				try
-				{
-					object ret = callHandler.Call( call.MethodName, call.Args );
-
-					if ( ret == null )
-					{
-						MethodInfo info = call.MethodBase as MethodInfo;
-						Type returnType = info.ReturnType;
-
-						if( returnType == typeof( System.Boolean ) ) ret = false; 
-
-						if( returnType == typeof( System.Byte    ) ) ret = (System.Byte)0;
-						if( returnType == typeof( System.SByte   ) ) ret = (System.SByte)0;
-						if( returnType == typeof( System.Decimal ) ) ret = (System.Decimal)0;
-						if( returnType == typeof( System.Double  ) ) ret = (System.Double)0;
-						if( returnType == typeof( System.Single  ) ) ret = (System.Single)0;
-						if( returnType == typeof( System.Int32   ) ) ret = (System.Int32)0;
-						if( returnType == typeof( System.UInt32  ) ) ret = (System.UInt32)0;
-						if( returnType == typeof( System.Int64   ) ) ret = (System.Int64)0;
-						if( returnType == typeof( System.UInt64  ) ) ret = (System.UInt64)0;
-						if( returnType == typeof( System.Int16   ) ) ret = (System.Int16)0;
-						if( returnType == typeof( System.UInt16  ) ) ret = (System.UInt16)0;
-
-						if( returnType == typeof( System.Char	 ) ) ret = '?';
-					}
-
-					result = new ReturnMessage( ret, null, 0, null, call );
-				} 
-				catch( Exception e )
-				{
-					result = new ReturnMessage( e, call );
-				}
-			}
-
-			return result;
-		}
-	}
-}
-
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Messaging;
+using System.Reflection;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// Summary description for MockInterfaceHandler.
+	/// </summary>
+	public class MockInterfaceHandler : RealProxy
+	{
+		private ICallHandler callHandler;
+
+		public MockInterfaceHandler( Type type, ICallHandler callHandler ) : base( type ) 
+		{ 
+			this.callHandler = callHandler;
+		}
+
+		public override IMessage Invoke( IMessage msg )
+		{
+			IMethodCallMessage call = (IMethodCallMessage)msg;
+			IMethodReturnMessage result = null; 
+
+			if ( call != null )
+			{
+				try
+				{
+					object ret = callHandler.Call( call.MethodName, call.Args );
+
+					if ( ret == null )
+					{
+						MethodInfo info = call.MethodBase as MethodInfo;
+						Type returnType = info.ReturnType;
+
+						if( returnType == typeof( System.Boolean ) ) ret = false; 
+
+						if( returnType == typeof( System.Byte    ) ) ret = (System.Byte)0;
+						if( returnType == typeof( System.SByte   ) ) ret = (System.SByte)0;
+						if( returnType == typeof( System.Decimal ) ) ret = (System.Decimal)0;
+						if( returnType == typeof( System.Double  ) ) ret = (System.Double)0;
+						if( returnType == typeof( System.Single  ) ) ret = (System.Single)0;
+						if( returnType == typeof( System.Int32   ) ) ret = (System.Int32)0;
+						if( returnType == typeof( System.UInt32  ) ) ret = (System.UInt32)0;
+						if( returnType == typeof( System.Int64   ) ) ret = (System.Int64)0;
+						if( returnType == typeof( System.UInt64  ) ) ret = (System.UInt64)0;
+						if( returnType == typeof( System.Int16   ) ) ret = (System.Int16)0;
+						if( returnType == typeof( System.UInt16  ) ) ret = (System.UInt16)0;
+
+						if( returnType == typeof( System.Char	 ) ) ret = '?';
+					}
+
+					result = new ReturnMessage( ret, null, 0, null, call );
+				} 
+				catch( Exception e )
+				{
+					result = new ReturnMessage( e, call );
+				}
+			}
+
+			return result;
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/MockMethod.cs
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/MockMethod.cs
@@ -1,119 +1,119 @@
-// ****************************************************************
-// Copyright 2007, Charlie Poole
-// This is free software licensed under the NUnit license. You may
-// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
-// ****************************************************************
-
-using System;
-using System.Collections;
-using NUnit.Framework;
-
-namespace NUnit.Mocks
-{
-	/// <summary>
-	/// The MockMethod object represents one named method on a mock object.
-	/// All overloads are represented by one MockMethod. A method may return
-	/// a fixed value, throw a fixed exception or have an expected sequence
-	/// of calls. If it has a call sequence, then the signature must match and
-	/// each call provides it's own return value or exception.
-	/// </summary>
-	public class MockMethod : IMethod
-	{
-		#region Private Fields
-
-		/// <summary>
-		/// Name of this method
-		/// </summary>
-		private string methodName;
-		
-		/// <summary>
-		/// Fixed return value
-		/// </summary>
-		private object returnVal;
-		
-		/// <summary>
-		/// Exception to be thrown
-		/// </summary>
-		private Exception exception;
-
-		/// <summary>
-		/// Expected call sequence. If null, this method has no expectations
-		/// and simply provides a fixed return value or exception.
-		/// </summary>
-		private ArrayList expectedCalls = null;
-		
-		/// <summary>
-		/// Actual sequence of calls... currently not used
-		/// </summary>
-		//private ArrayList actualCalls = null;
-
-		#endregion
-
-		#region Constructors
-
-		public MockMethod( string methodName ) 
-			: this( methodName, null, null ) { }
-
-		public MockMethod( string methodName, object returnVal ) 
-			: this( methodName, returnVal, null ) { }
-
-		public MockMethod( string methodName, object returnVal, Exception exception )
-		{
-			this.methodName = methodName;
-			this.returnVal = returnVal;
-			this.exception = exception;
-		}
-
-		#endregion
-
-		#region IMethod Members
-
-		public string Name
-		{
-			get { return methodName; }
-		}
-
-		public void Expect( ICall call )
-		{
-			if ( expectedCalls == null )
-				expectedCalls = new ArrayList();
-
-			expectedCalls.Add( call );
-		}
-
-		#endregion
-
-		#region ICall Members
-
-		public object Call( object[] args )
-		{
-			if ( expectedCalls == null )
-			{
-				if ( exception != null )
-					throw exception;
-
-				return returnVal;
-			}
-			else
-			{
-				//actualCalls.Add( new MethodCall( methodName, null, null, args ) );
-				Assert.IsTrue( expectedCalls.Count > 0, "Too many calls to " + Name );
-				MockCall mockCall = (MockCall)expectedCalls[0];
-				expectedCalls.RemoveAt( 0 );
-				return mockCall.Call( args );
-			}
-		}
-
-		#endregion
-
-		#region IVerify Members
-
-		public void Verify()
-		{
-			if ( expectedCalls != null )
-				Assert.IsTrue( expectedCalls.Count == 0, "Not all methods were called" );
-		}
-
-		#endregion
-	}
-}
+// ****************************************************************
+// Copyright 2007, Charlie Poole
+// This is free software licensed under the NUnit license. You may
+// obtain a copy of the license at http://nunit.org/?p=license&r=2.4
+// ****************************************************************
+
+using System;
+using System.Collections;
+using NUnit.Framework;
+
+namespace NUnit.Mocks
+{
+	/// <summary>
+	/// The MockMethod object represents one named method on a mock object.
+	/// All overloads are represented by one MockMethod. A method may return
+	/// a fixed value, throw a fixed exception or have an expected sequence
+	/// of calls. If it has a call sequence, then the signature must match and
+	/// each call provides it's own return value or exception.
+	/// </summary>
+	public class MockMethod : IMethod
+	{
+		#region Private Fields
+
+		/// <summary>
+		/// Name of this method
+		/// </summary>
+		private string methodName;
+		
+		/// <summary>
+		/// Fixed return value
+		/// </summary>
+		private object returnVal;
+		
+		/// <summary>
+		/// Exception to be thrown
+		/// </summary>
+		private Exception exception;
+
+		/// <summary>
+		/// Expected call sequence. If null, this method has no expectations
+		/// and simply provides a fixed return value or exception.
+		/// </summary>
+		private ArrayList expectedCalls = null;
+		
+		/// <summary>
+		/// Actual sequence of calls... currently not used
+		/// </summary>
+		//private ArrayList actualCalls = null;
+
+		#endregion
+
+		#region Constructors
+
+		public MockMethod( string methodName ) 
+			: this( methodName, null, null ) { }
+
+		public MockMethod( string methodName, object returnVal ) 
+			: this( methodName, returnVal, null ) { }
+
+		public MockMethod( string methodName, object returnVal, Exception exception )
+		{
+			this.methodName = methodName;
+			this.returnVal = returnVal;
+			this.exception = exception;
+		}
+
+		#endregion
+
+		#region IMethod Members
+
+		public string Name
+		{
+			get { return methodName; }
+		}
+
+		public void Expect( ICall call )
+		{
+			if ( expectedCalls == null )
+				expectedCalls = new ArrayList();
+
+			expectedCalls.Add( call );
+		}
+
+		#endregion
+
+		#region ICall Members
+
+		public object Call( object[] args )
+		{
+			if ( expectedCalls == null )
+			{
+				if ( exception != null )
+					throw exception;
+
+				return returnVal;
+			}
+			else
+			{
+				//actualCalls.Add( new MethodCall( methodName, null, null, args ) );
+				Assert.IsTrue( expectedCalls.Count > 0, "Too many calls to " + Name );
+				MockCall mockCall = (MockCall)expectedCalls[0];
+				expectedCalls.RemoveAt( 0 );
+				return mockCall.Call( args );
+			}
+		}
+
+		#endregion
+
+		#region IVerify Members
+
+		public void Verify()
+		{
+			if ( expectedCalls != null )
+				Assert.IsTrue( expectedCalls.Count == 0, "Not all methods were called" );
+		}
+
+		#endregion
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/nunit.mocks.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/nunit.mocks.csproj
@@ -1,161 +1,161 @@
-<VisualStudioProject>
-    <CSHARP
-        ProjectType = "Local"
-        ProductVersion = "7.10.3077"
-        SchemaVersion = "2.0"
-        ProjectGuid = "{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}"
-    >
-        <Build>
-            <Settings
-                ApplicationIcon = ""
-                AssemblyKeyContainerName = ""
-                AssemblyName = "nunit.mocks"
-                AssemblyOriginatorKeyFile = ""
-                DefaultClientScript = "JScript"
-                DefaultHTMLPageLayout = "Grid"
-                DefaultTargetSchema = "IE50"
-                DelaySign = "false"
-                OutputType = "Library"
-                PreBuildEvent = ""
-                PostBuildEvent = ""
-                RootNamespace = "NUnit.Mocks"
-                RunPostBuildEvent = "OnBuildSuccess"
-                StartupObject = ""
-            >
-                <Config
-                    Name = "Debug"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "DEBUG;TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "true"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "false"
-                    OutputPath = "bin\Debug\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-                <Config
-                    Name = "Release"
-                    AllowUnsafeBlocks = "false"
-                    BaseAddress = "285212672"
-                    CheckForOverflowUnderflow = "false"
-                    ConfigurationOverrideFile = ""
-                    DefineConstants = "TRACE"
-                    DocumentationFile = ""
-                    DebugSymbols = "false"
-                    FileAlignment = "4096"
-                    IncrementalBuild = "false"
-                    NoStdLib = "false"
-                    NoWarn = ""
-                    Optimize = "true"
-                    OutputPath = "bin\Release\"
-                    RegisterForComInterop = "false"
-                    RemoveIntegerChecks = "false"
-                    TreatWarningsAsErrors = "false"
-                    WarningLevel = "4"
-                />
-            </Settings>
-            <References>
-                <Reference
-                    Name = "System"
-                    AssemblyName = "System"
-                    HintPath = "c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
-                />
-                <Reference
-                    Name = "System.Data"
-                    AssemblyName = "System.Data"
-                    HintPath = "c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
-                />
-                <Reference
-                    Name = "System.XML"
-                    AssemblyName = "System.Xml"
-                    HintPath = "c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
-                />
-                <Reference
-                    Name = "nunit.framework.dll"
-                    Project = "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
-                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
-                />
-            </References>
-        </Build>
-        <Files>
-            <Include>
-                <File
-                    RelPath = "AssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "CommonAssemblyInfo.cs"
-                    Link = "..\..\CommonAssemblyInfo.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "DynamicMock.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ICall.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "ICallHandler.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IMethod.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IMock.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "IVerify.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MethodSignature.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Mock.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MockCall.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MockInterfaceHandler.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "MockMethod.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-            </Include>
-        </Files>
-    </CSHARP>
-</VisualStudioProject>
-
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "nunit.mocks"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "NUnit.Mocks"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+                <Reference
+                    Name = "nunit.framework.dll"
+                    Project = "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
+                    Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "CommonAssemblyInfo.cs"
+                    Link = "..\..\CommonAssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "DynamicMock.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ICall.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "ICallHandler.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IMethod.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IMock.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "IVerify.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MethodSignature.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Mock.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MockCall.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MockInterfaceHandler.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "MockMethod.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/NUnitMocks/mocks/nunit.mocks_VS2005.csproj
+++ mono-4.6.2.7+dfsg/mcs/nunit24/NUnitMocks/mocks/nunit.mocks_VS2005.csproj
@@ -1,107 +1,107 @@
-﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>8.0.50727</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.mocks</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Mocks</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
-    <OutputPath>bin\Release2005\</OutputPath>
-    <DefineConstants>TRACE;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <Optimize>true</Optimize>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\Debug2005\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
-    <BaseAddress>285212672</BaseAddress>
-    <NoWarn>1699</NoWarn>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AssemblyInfo.cs" />
-    <Compile Include="DynamicMock.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ICall.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="ICallHandler.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="IMethod.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="IMock.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="IVerify.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="MethodSignature.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="Mock.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="MockCall.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="MockInterfaceHandler.cs">
-      <SubType>Code</SubType>
-    </Compile>
-    <Compile Include="MockMethod.cs">
-      <SubType>Code</SubType>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll_VS2005.csproj">
-      <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project>
-      <Name>nunit.framework.dll_VS2005</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.mocks</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Mocks</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release2005|AnyCPU' ">
+    <OutputPath>bin\Release2005\</OutputPath>
+    <DefineConstants>TRACE;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <Optimize>true</Optimize>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug2005|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug2005\</OutputPath>
+    <DefineConstants>TRACE;DEBUG;VS2005</DefineConstants>
+    <BaseAddress>285212672</BaseAddress>
+    <NoWarn>1699</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AssemblyInfo.cs" />
+    <Compile Include="DynamicMock.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ICall.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ICallHandler.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="IMethod.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="IMock.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="IVerify.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MethodSignature.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Mock.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MockCall.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MockInterfaceHandler.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MockMethod.cs">
+      <SubType>Code</SubType>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll_VS2005.csproj">
+      <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project>
+      <Name>nunit.framework.dll_VS2005</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/license.rtf
+++ mono-4.6.2.7+dfsg/mcs/nunit24/license.rtf
@@ -1,41 +1,41 @@
-{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
-{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}{\f37\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}
-{\f38\froman\fcharset238\fprq2 Times New Roman CE;}{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}
-{\f43\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f44\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
-{\f58\fmodern\fcharset238\fprq1 Courier New CE;}{\f59\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fmodern\fcharset177\fprq1 Courier New (Hebrew);}
-{\f64\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f66\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f170\fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}
-{\f410\fnil\fcharset0\fprq2 @SimSun Western;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;
-\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
-\fs24\lang1033\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp2052 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
-\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
-\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
-\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe2052\loch\f2\hich\af2\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext15 \styrsid9332467 Plain Text;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}
-{\*\rsidtbl \rsid610709\rsid818068\rsid5008211\rsid7476632\rsid8721477\rsid9332467\rsid10426157\rsid11172945\rsid11871043\rsid15552035\rsid16677168}{\*\generator Microsoft Word 11.0.6568;}{\info{\title Copyright (c) 2002 James W}{\author James Newkirk}
-{\operator Charlie Poole}{\creatim\yr2002\mo9\dy11\hr14\min43}{\revtim\yr2007\mo2\dy18\hr17\min58}{\version8}{\edmins15}{\nofpages1}{\nofwords166}{\nofchars950}{\*\company Nascent Software, Inc.}{\nofcharsws1114}{\vern24579}}\margl1319\margr1319 
-\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1319\dgvorigin1440\dghshow1\dgvshow1
-\jexpand\viewkind1\viewscale120\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot15552035 \fet0\sectd 
-\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid9332467\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}
-{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang 
-{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
-\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9332467 \fs20\lang1033\langfe2052\loch\af2\hich\af2\dbch\af13\cgrid\langnp1033\langfenp2052 {\insrsid16677168\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{
-\insrsid16677168 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  \hich\af2\dbch\af13\loch\f2 2002-2007 Charlie Poole
-\par }{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{\insrsid10426157 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  }{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2 2002}{\insrsid8721477 \hich\af2\dbch\af13\loch\f2 -200}{
-\insrsid11871043 \hich\af2\dbch\af13\loch\f2 4}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  James W. Newkirk, Mich}{\insrsid7476632 \hich\af2\dbch\af13\loch\f2 ael C. Two, Alexei A. Vorontsov
-\par }{\insrsid16677168 \hich\af2\dbch\af13\loch\f2 \hich\f2 Copyright \'a9\loch\f2  2000-2002}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  Philip A. Craig
-\par 
-\par \hich\af2\dbch\af13\loch\f2 This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-\par 
-\par \hich\af2\dbch\af13\loch\f2 Permission is granted to anyone to use this software for any purpose, including \hich\af2\dbch\af13\loch\f2 commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-\par 
-\par \hich\af2\dbch\af13\loch\f2 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a p\hich\af2\dbch\af13\loch\f2 
-roduct, an acknowledgment (see the following) in the product documentation is required.
-\par 
-\par \hich\af2\dbch\af13\loch\f2 Portions }{\insrsid16677168\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{\insrsid16677168 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  2002\hich\af2\dbch\af13\loch\f2 -2007 Charlie Poole or\hich\af2\dbch\af13\loch\f2  }
-{\insrsid16677168\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{\insrsid16677168 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  2002\hich\af2\dbch\af13\loch\f2 -2004\hich\af2\dbch\af13\loch\f2  }{\insrsid10426157 \hich\af2\dbch\af13\loch\f2 
-James W. Newkirk, }{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Michae}{\insrsid16677168 \hich\af2\dbch\af13\loch\f2 l C. Two, Alexei A. Vorontsov}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  or Copyright }{\insrsid10426157 
-\loch\af2\dbch\af13\hich\f2 \'a9}{\insrsid5008211 \hich\af2\dbch\af13\loch\f2  2000-2002}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  Philip A. Craig
-\par 
-\par \hich\af2\dbch\af13\loch\f2 2. Altered source version\hich\af2\dbch\af13\loch\f2 s must be plainly marked as such, and must not be misrepresented as being the original software.
-\par 
-\par \hich\af2\dbch\af13\loch\f2 3. This notice may not be removed or altered from any source distribution.}{\insrsid9332467 
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}{\f37\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}
+{\f38\froman\fcharset238\fprq2 Times New Roman CE;}{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}
+{\f43\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f44\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\f58\fmodern\fcharset238\fprq1 Courier New CE;}{\f59\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fmodern\fcharset177\fprq1 Courier New (Hebrew);}
+{\f64\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f66\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f170\fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}
+{\f410\fnil\fcharset0\fprq2 @SimSun Western;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;
+\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang1033\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp1033\langfenp2052 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe2052\loch\f2\hich\af2\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext15 \styrsid9332467 Plain Text;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}
+{\*\rsidtbl \rsid610709\rsid818068\rsid5008211\rsid7476632\rsid8721477\rsid9332467\rsid10426157\rsid11172945\rsid11871043\rsid15552035\rsid16677168}{\*\generator Microsoft Word 11.0.6568;}{\info{\title Copyright (c) 2002 James W}{\author James Newkirk}
+{\operator Charlie Poole}{\creatim\yr2002\mo9\dy11\hr14\min43}{\revtim\yr2007\mo2\dy18\hr17\min58}{\version8}{\edmins15}{\nofpages1}{\nofwords166}{\nofchars950}{\*\company Nascent Software, Inc.}{\nofcharsws1114}{\vern24579}}\margl1319\margr1319 
+\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1319\dgvorigin1440\dghshow1\dgvshow1
+\jexpand\viewkind1\viewscale120\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot15552035 \fet0\sectd 
+\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid9332467\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang 
+{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain 
+\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9332467 \fs20\lang1033\langfe2052\loch\af2\hich\af2\dbch\af13\cgrid\langnp1033\langfenp2052 {\insrsid16677168\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{
+\insrsid16677168 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  \hich\af2\dbch\af13\loch\f2 2002-2007 Charlie Poole
+\par }{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{\insrsid10426157 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  }{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2 2002}{\insrsid8721477 \hich\af2\dbch\af13\loch\f2 -200}{
+\insrsid11871043 \hich\af2\dbch\af13\loch\f2 4}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  James W. Newkirk, Mich}{\insrsid7476632 \hich\af2\dbch\af13\loch\f2 ael C. Two, Alexei A. Vorontsov
+\par }{\insrsid16677168 \hich\af2\dbch\af13\loch\f2 \hich\f2 Copyright \'a9\loch\f2  2000-2002}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  Philip A. Craig
+\par 
+\par \hich\af2\dbch\af13\loch\f2 This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+\par 
+\par \hich\af2\dbch\af13\loch\f2 Permission is granted to anyone to use this software for any purpose, including \hich\af2\dbch\af13\loch\f2 commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+\par 
+\par \hich\af2\dbch\af13\loch\f2 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a p\hich\af2\dbch\af13\loch\f2 
+roduct, an acknowledgment (see the following) in the product documentation is required.
+\par 
+\par \hich\af2\dbch\af13\loch\f2 Portions }{\insrsid16677168\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{\insrsid16677168 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  2002\hich\af2\dbch\af13\loch\f2 -2007 Charlie Poole or\hich\af2\dbch\af13\loch\f2  }
+{\insrsid16677168\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Copyright }{\insrsid16677168 \loch\af2\dbch\af13\hich\f2 \'a9\loch\f2  2002\hich\af2\dbch\af13\loch\f2 -2004\hich\af2\dbch\af13\loch\f2  }{\insrsid10426157 \hich\af2\dbch\af13\loch\f2 
+James W. Newkirk, }{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2 Michae}{\insrsid16677168 \hich\af2\dbch\af13\loch\f2 l C. Two, Alexei A. Vorontsov}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  or Copyright }{\insrsid10426157 
+\loch\af2\dbch\af13\hich\f2 \'a9}{\insrsid5008211 \hich\af2\dbch\af13\loch\f2  2000-2002}{\insrsid610709\charrsid9332467 \hich\af2\dbch\af13\loch\f2  Philip A. Craig
+\par 
+\par \hich\af2\dbch\af13\loch\f2 2. Altered source version\hich\af2\dbch\af13\loch\f2 s must be plainly marked as such, and must not be misrepresented as being the original software.
+\par 
+\par \hich\af2\dbch\af13\loch\f2 3. This notice may not be removed or altered from any source distribution.}{\insrsid9332467 
 \par }}
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/nunit.sln
+++ mono-4.6.2.7+dfsg/mcs/nunit24/nunit.sln
@@ -1,258 +1,258 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui", "GuiRunner\nunit-gui\nunit-gui.csproj", "{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks", "NUnitMocks\mocks\nunit.mocks.csproj", "{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.dll", "GuiComponents\UiKit\nunit.uikit.dll.csproj", "{27531BBF-183D-4C3A-935B-D840B9F1A3A4}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.dll", "ClientUtilities\util\nunit.util.dll.csproj", "{61CE9CE5-943E-44D4-A381-814DC1406767}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks.tests", "NUnitMocks\tests\nunit.mocks.tests.csproj", "{8667C588-1A05-4773-A9E8-272EB302B8AB}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.tests", "GuiComponents\tests\nunit.uikit.tests.csproj", "{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.exe", "ConsoleRunner\nunit-console-exe\nunit-console.exe.csproj", "{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.tests", "ConsoleRunner\tests\nunit-console.tests.csproj", "{8597D2C6-804D-48CB-BFC7-ED2404D389B0}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.tests", "ClientUtilities\tests\nunit.util.tests.csproj", "{74EF7165-117E-48ED-98EA-068EAE438E53}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.tests", "NUnitFramework\tests\nunit.framework.tests.csproj", "{8C326431-AE57-4645-ACC1-A90A0B425129}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.exe", "GuiRunner\nunit-gui-exe\nunit-gui.exe.csproj", "{AAB186A4-FA3D-404D-AD78-7EB5BB861655}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.tests", "GuiRunner\tests\nunit-gui.tests.csproj", "{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.tests", "NUnitExtensions\tests\nunit.extensions.tests.csproj", "{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.extensions.dll", "NUnitExtensions\core\nunit.core.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "NUnitCore\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.tests", "NUnitCore\tests\nunit.core.tests.csproj", "{DD758D21-E5D5-4D40-9450-5F65A32F359C}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-assembly", "tests\test-assembly\test-assembly.csproj", "{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.extensions.dll", "NUnitExtensions\framework\nunit.framework.extensions.dll.csproj", "{486C498D-B9F8-477F-ACA7-CED9245BBFCF}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.interfaces.dll", "NUnitCore\interfaces\nunit.core.interfaces.dll.csproj", "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly", "tests\mock-assembly\mock-assembly.csproj", "{2E368281-3BA8-4050-B05E-0E0E43F8F446}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nonamespace-assembly", "tests\nonamespace-assembly\nonamespace-assembly.csproj", "{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "notestfixtures-assembly", "tests\notestfixtures-assembly\notestfixtures-assembly.csproj", "{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-utilities", "tests\test-utilities\test-utilities.csproj", "{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "timing-tests", "tests\timing-tests\timing-tests.csproj", "{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console", "ConsoleRunner\nunit-console\nunit-console.csproj", "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures", "NUnitFixtures\fixtures\nunit.fixtures.csproj", "{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures.tests", "NUnitFixtures\tests\nunit.fixtures.tests.csproj", "{55F2D231-743C-48DD-B79A-00E5A7236CBE}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "loadtest-assembly", "tests\loadtest-assembly\loadtest-assembly.csproj", "{34734263-6F6C-403D-AD8C-CE3F8E340EA9}"
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		Debug = Debug
-		Release = Release
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug.ActiveCfg = Debug|.NET
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug.Build.0 = Debug|.NET
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release.ActiveCfg = Release|.NET
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release.Build.0 = Release|.NET
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug.ActiveCfg = Debug|.NET
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug.Build.0 = Debug|.NET
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release.ActiveCfg = Release|.NET
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release.Build.0 = Release|.NET
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug.ActiveCfg = Debug|.NET
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug.Build.0 = Debug|.NET
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release.ActiveCfg = Release|.NET
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release.Build.0 = Release|.NET
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug.ActiveCfg = Debug|.NET
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug.Build.0 = Debug|.NET
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release.ActiveCfg = Release|.NET
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release.Build.0 = Release|.NET
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug.ActiveCfg = Debug|.NET
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug.Build.0 = Debug|.NET
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release.ActiveCfg = Release|.NET
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release.Build.0 = Release|.NET
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug.ActiveCfg = Debug|.NET
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug.Build.0 = Debug|.NET
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release.ActiveCfg = Release|.NET
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release.Build.0 = Release|.NET
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug.ActiveCfg = Debug|.NET
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug.Build.0 = Debug|.NET
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release.ActiveCfg = Release|.NET
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release.Build.0 = Release|.NET
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug.ActiveCfg = Debug|.NET
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug.Build.0 = Debug|.NET
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release.ActiveCfg = Release|.NET
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release.Build.0 = Release|.NET
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug.ActiveCfg = Debug|.NET
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug.Build.0 = Debug|.NET
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release.ActiveCfg = Release|.NET
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release.Build.0 = Release|.NET
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug.ActiveCfg = Debug|.NET
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug.Build.0 = Debug|.NET
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release.ActiveCfg = Release|.NET
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release.Build.0 = Release|.NET
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug.ActiveCfg = Debug|.NET
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug.Build.0 = Debug|.NET
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release.ActiveCfg = Release|.NET
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release.Build.0 = Release|.NET
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug.ActiveCfg = Debug|.NET
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug.Build.0 = Debug|.NET
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release.ActiveCfg = Release|.NET
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release.Build.0 = Release|.NET
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug.ActiveCfg = Debug|.NET
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug.Build.0 = Debug|.NET
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release.ActiveCfg = Release|.NET
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release.Build.0 = Release|.NET
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug.ActiveCfg = Debug|.NET
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug.Build.0 = Debug|.NET
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release.ActiveCfg = Release|.NET
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release.Build.0 = Release|.NET
-		{98B10E98-003C-45A0-9587-119142E39986}.Debug.ActiveCfg = Debug|.NET
-		{98B10E98-003C-45A0-9587-119142E39986}.Debug.Build.0 = Debug|.NET
-		{98B10E98-003C-45A0-9587-119142E39986}.Release.ActiveCfg = Release|.NET
-		{98B10E98-003C-45A0-9587-119142E39986}.Release.Build.0 = Release|.NET
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug.ActiveCfg = Debug|.NET
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug.Build.0 = Debug|.NET
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release.ActiveCfg = Release|.NET
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release.Build.0 = Release|.NET
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug.ActiveCfg = Debug|.NET
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug.Build.0 = Debug|.NET
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release.ActiveCfg = Release|.NET
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release.Build.0 = Release|.NET
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug.ActiveCfg = Debug|.NET
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug.Build.0 = Debug|.NET
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release.ActiveCfg = Release|.NET
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release.Build.0 = Release|.NET
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug.ActiveCfg = Debug|.NET
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug.Build.0 = Debug|.NET
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release.ActiveCfg = Release|.NET
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release.Build.0 = Release|.NET
-		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Debug.ActiveCfg = Debug|.NET
-		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Debug.Build.0 = Debug|.NET
-		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Release.ActiveCfg = Release|.NET
-		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Release.Build.0 = Release|.NET
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug.ActiveCfg = Debug|.NET
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug.Build.0 = Debug|.NET
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release.ActiveCfg = Release|.NET
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release.Build.0 = Release|.NET
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug.ActiveCfg = Debug|.NET
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug.Build.0 = Debug|.NET
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release.ActiveCfg = Release|.NET
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release.Build.0 = Release|.NET
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug.ActiveCfg = Debug|.NET
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug.Build.0 = Debug|.NET
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release.ActiveCfg = Release|.NET
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release.Build.0 = Release|.NET
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug.ActiveCfg = Debug|.NET
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug.Build.0 = Debug|.NET
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release.ActiveCfg = Release|.NET
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release.Build.0 = Release|.NET
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug.ActiveCfg = Debug|.NET
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug.Build.0 = Debug|.NET
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release.ActiveCfg = Release|.NET
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release.Build.0 = Release|.NET
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug.ActiveCfg = Debug|.NET
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug.Build.0 = Debug|.NET
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release.ActiveCfg = Release|.NET
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release.Build.0 = Release|.NET
-		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Debug.ActiveCfg = Debug|.NET
-		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Debug.Build.0 = Debug|.NET
-		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Release.ActiveCfg = Release|.NET
-		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Release.Build.0 = Release|.NET
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug.ActiveCfg = Debug|.NET
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug.Build.0 = Debug|.NET
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release.ActiveCfg = Release|.NET
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release.Build.0 = Release|.NET
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug.ActiveCfg = Debug|.NET
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug.Build.0 = Debug|.NET
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release.ActiveCfg = Release|.NET
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release.Build.0 = Release|.NET
-	EndGlobalSection
-	GlobalSection(SolutionItems) = postSolution
-		clr.bat = clr.bat
-		CommonAssemblyInfo.cs = CommonAssemblyInfo.cs
-		license.rtf = license.rtf
-		nunit.build = nunit.build
-		nunit.snk = nunit.snk
-		NUnitDevTests.nunit = NUnitDevTests.nunit
-		NUnitFitTests.html = NUnitFitTests.html
-		NUnitTests.config = NUnitTests.config
-		NUnitTests.nunit = NUnitTests.nunit
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui", "GuiRunner\nunit-gui\nunit-gui.csproj", "{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks", "NUnitMocks\mocks\nunit.mocks.csproj", "{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.dll", "GuiComponents\UiKit\nunit.uikit.dll.csproj", "{27531BBF-183D-4C3A-935B-D840B9F1A3A4}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.dll", "ClientUtilities\util\nunit.util.dll.csproj", "{61CE9CE5-943E-44D4-A381-814DC1406767}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks.tests", "NUnitMocks\tests\nunit.mocks.tests.csproj", "{8667C588-1A05-4773-A9E8-272EB302B8AB}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.tests", "GuiComponents\tests\nunit.uikit.tests.csproj", "{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.exe", "ConsoleRunner\nunit-console-exe\nunit-console.exe.csproj", "{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.tests", "ConsoleRunner\tests\nunit-console.tests.csproj", "{8597D2C6-804D-48CB-BFC7-ED2404D389B0}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.tests", "ClientUtilities\tests\nunit.util.tests.csproj", "{74EF7165-117E-48ED-98EA-068EAE438E53}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.tests", "NUnitFramework\tests\nunit.framework.tests.csproj", "{8C326431-AE57-4645-ACC1-A90A0B425129}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.exe", "GuiRunner\nunit-gui-exe\nunit-gui.exe.csproj", "{AAB186A4-FA3D-404D-AD78-7EB5BB861655}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.tests", "GuiRunner\tests\nunit-gui.tests.csproj", "{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.tests", "NUnitExtensions\tests\nunit.extensions.tests.csproj", "{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.extensions.dll", "NUnitExtensions\core\nunit.core.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "NUnitCore\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.tests", "NUnitCore\tests\nunit.core.tests.csproj", "{DD758D21-E5D5-4D40-9450-5F65A32F359C}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-assembly", "tests\test-assembly\test-assembly.csproj", "{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.extensions.dll", "NUnitExtensions\framework\nunit.framework.extensions.dll.csproj", "{486C498D-B9F8-477F-ACA7-CED9245BBFCF}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.interfaces.dll", "NUnitCore\interfaces\nunit.core.interfaces.dll.csproj", "{435428F8-5995-4CE4-8022-93D595A8CC0F}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly", "tests\mock-assembly\mock-assembly.csproj", "{2E368281-3BA8-4050-B05E-0E0E43F8F446}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nonamespace-assembly", "tests\nonamespace-assembly\nonamespace-assembly.csproj", "{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "notestfixtures-assembly", "tests\notestfixtures-assembly\notestfixtures-assembly.csproj", "{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-utilities", "tests\test-utilities\test-utilities.csproj", "{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "timing-tests", "tests\timing-tests\timing-tests.csproj", "{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console", "ConsoleRunner\nunit-console\nunit-console.csproj", "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures", "NUnitFixtures\fixtures\nunit.fixtures.csproj", "{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures.tests", "NUnitFixtures\tests\nunit.fixtures.tests.csproj", "{55F2D231-743C-48DD-B79A-00E5A7236CBE}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "loadtest-assembly", "tests\loadtest-assembly\loadtest-assembly.csproj", "{34734263-6F6C-403D-AD8C-CE3F8E340EA9}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug.ActiveCfg = Debug|.NET
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug.Build.0 = Debug|.NET
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release.ActiveCfg = Release|.NET
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release.Build.0 = Release|.NET
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug.ActiveCfg = Debug|.NET
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug.Build.0 = Debug|.NET
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release.ActiveCfg = Release|.NET
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release.Build.0 = Release|.NET
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug.ActiveCfg = Debug|.NET
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug.Build.0 = Debug|.NET
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release.ActiveCfg = Release|.NET
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release.Build.0 = Release|.NET
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug.ActiveCfg = Debug|.NET
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug.Build.0 = Debug|.NET
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release.ActiveCfg = Release|.NET
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release.Build.0 = Release|.NET
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug.ActiveCfg = Debug|.NET
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug.Build.0 = Debug|.NET
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release.ActiveCfg = Release|.NET
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release.Build.0 = Release|.NET
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug.ActiveCfg = Debug|.NET
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug.Build.0 = Debug|.NET
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release.ActiveCfg = Release|.NET
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release.Build.0 = Release|.NET
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug.ActiveCfg = Debug|.NET
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug.Build.0 = Debug|.NET
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release.ActiveCfg = Release|.NET
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release.Build.0 = Release|.NET
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug.ActiveCfg = Debug|.NET
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug.Build.0 = Debug|.NET
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release.ActiveCfg = Release|.NET
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release.Build.0 = Release|.NET
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug.ActiveCfg = Debug|.NET
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug.Build.0 = Debug|.NET
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release.ActiveCfg = Release|.NET
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release.Build.0 = Release|.NET
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug.ActiveCfg = Debug|.NET
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug.Build.0 = Debug|.NET
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release.ActiveCfg = Release|.NET
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release.Build.0 = Release|.NET
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug.ActiveCfg = Debug|.NET
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug.Build.0 = Debug|.NET
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release.ActiveCfg = Release|.NET
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release.Build.0 = Release|.NET
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug.ActiveCfg = Debug|.NET
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug.Build.0 = Debug|.NET
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release.ActiveCfg = Release|.NET
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release.Build.0 = Release|.NET
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug.ActiveCfg = Debug|.NET
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug.Build.0 = Debug|.NET
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release.ActiveCfg = Release|.NET
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release.Build.0 = Release|.NET
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug.ActiveCfg = Debug|.NET
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug.Build.0 = Debug|.NET
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release.ActiveCfg = Release|.NET
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release.Build.0 = Release|.NET
+		{98B10E98-003C-45A0-9587-119142E39986}.Debug.ActiveCfg = Debug|.NET
+		{98B10E98-003C-45A0-9587-119142E39986}.Debug.Build.0 = Debug|.NET
+		{98B10E98-003C-45A0-9587-119142E39986}.Release.ActiveCfg = Release|.NET
+		{98B10E98-003C-45A0-9587-119142E39986}.Release.Build.0 = Release|.NET
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug.ActiveCfg = Debug|.NET
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug.Build.0 = Debug|.NET
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release.ActiveCfg = Release|.NET
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release.Build.0 = Release|.NET
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug.ActiveCfg = Debug|.NET
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug.Build.0 = Debug|.NET
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release.ActiveCfg = Release|.NET
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release.Build.0 = Release|.NET
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug.ActiveCfg = Debug|.NET
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug.Build.0 = Debug|.NET
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release.ActiveCfg = Release|.NET
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release.Build.0 = Release|.NET
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug.ActiveCfg = Debug|.NET
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug.Build.0 = Debug|.NET
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release.ActiveCfg = Release|.NET
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release.Build.0 = Release|.NET
+		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Debug.ActiveCfg = Debug|.NET
+		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Debug.Build.0 = Debug|.NET
+		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Release.ActiveCfg = Release|.NET
+		{435428F8-5995-4CE4-8022-93D595A8CC0F}.Release.Build.0 = Release|.NET
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug.ActiveCfg = Debug|.NET
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug.Build.0 = Debug|.NET
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release.ActiveCfg = Release|.NET
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release.Build.0 = Release|.NET
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug.ActiveCfg = Debug|.NET
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug.Build.0 = Debug|.NET
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release.ActiveCfg = Release|.NET
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release.Build.0 = Release|.NET
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug.ActiveCfg = Debug|.NET
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug.Build.0 = Debug|.NET
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release.ActiveCfg = Release|.NET
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release.Build.0 = Release|.NET
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug.ActiveCfg = Debug|.NET
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug.Build.0 = Debug|.NET
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release.ActiveCfg = Release|.NET
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release.Build.0 = Release|.NET
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug.ActiveCfg = Debug|.NET
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug.Build.0 = Debug|.NET
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release.ActiveCfg = Release|.NET
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release.Build.0 = Release|.NET
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug.ActiveCfg = Debug|.NET
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug.Build.0 = Debug|.NET
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release.ActiveCfg = Release|.NET
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release.Build.0 = Release|.NET
+		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Debug.ActiveCfg = Debug|.NET
+		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Debug.Build.0 = Debug|.NET
+		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Release.ActiveCfg = Release|.NET
+		{A8D36198-BE2F-44E5-AC4F-4E052AFCCF78}.Release.Build.0 = Release|.NET
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug.ActiveCfg = Debug|.NET
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug.Build.0 = Debug|.NET
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release.ActiveCfg = Release|.NET
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release.Build.0 = Release|.NET
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug.ActiveCfg = Debug|.NET
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug.Build.0 = Debug|.NET
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release.ActiveCfg = Release|.NET
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release.Build.0 = Release|.NET
+	EndGlobalSection
+	GlobalSection(SolutionItems) = postSolution
+		clr.bat = clr.bat
+		CommonAssemblyInfo.cs = CommonAssemblyInfo.cs
+		license.rtf = license.rtf
+		nunit.build = nunit.build
+		nunit.snk = nunit.snk
+		NUnitDevTests.nunit = NUnitDevTests.nunit
+		NUnitFitTests.html = NUnitFitTests.html
+		NUnitTests.config = NUnitTests.config
+		NUnitTests.nunit = NUnitTests.nunit
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/mcs/nunit24/nunit_VS2005.sln
+++ mono-4.6.2.7+dfsg/mcs/nunit24/nunit_VS2005.sln
@@ -1,217 +1,217 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-utilities_VS2005", "tests\test-utilities\test-utilities_VS2005.csproj", "{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}"
-	ProjectSection(ProjectDependencies) = postProject
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446} = {2E368281-3BA8-4050-B05E-0E0E43F8F446}
-		{98B10E98-003C-45A0-9587-119142E39986} = {98B10E98-003C-45A0-9587-119142E39986}
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D} = {5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}
-		{61CE9CE5-943E-44D4-A381-814DC1406767} = {61CE9CE5-943E-44D4-A381-814DC1406767}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly_VS2005", "tests\mock-assembly\mock-assembly_VS2005.csproj", "{2E368281-3BA8-4050-B05E-0E0E43F8F446}"
-	ProjectSection(ProjectDependencies) = postProject
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nonamespace-assembly_VS2005", "tests\nonamespace-assembly\nonamespace-assembly_VS2005.csproj", "{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}"
-	ProjectSection(ProjectDependencies) = postProject
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "timing-tests_VS2005", "tests\timing-tests\timing-tests_VS2005.csproj", "{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}"
-	ProjectSection(ProjectDependencies) = postProject
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446} = {2E368281-3BA8-4050-B05E-0E0E43F8F446}
-		{61CE9CE5-943E-44D4-A381-814DC1406767} = {61CE9CE5-943E-44D4-A381-814DC1406767}
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "notestfixtures-assembly_VS2005", "tests\notestfixtures-assembly\notestfixtures-assembly_VS2005.csproj", "{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console_VS2005", "ConsoleRunner\nunit-console\nunit-console_VS2005.csproj", "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui_VS2005", "GuiRunner\nunit-gui\nunit-gui_VS2005.csproj", "{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks_VS2005", "NUnitMocks\mocks\nunit.mocks_VS2005.csproj", "{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.dll_VS2005", "GuiComponents\UiKit\nunit.uikit.dll_VS2005.csproj", "{27531BBF-183D-4C3A-935B-D840B9F1A3A4}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.dll_VS2005", "ClientUtilities\util\nunit.util.dll_VS2005.csproj", "{61CE9CE5-943E-44D4-A381-814DC1406767}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll_VS2005", "NUnitFramework\framework\nunit.framework.dll_VS2005.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks.tests_VS2005", "NUnitMocks\tests\nunit.mocks.tests_VS2005.csproj", "{8667C588-1A05-4773-A9E8-272EB302B8AB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.tests_VS2005", "GuiComponents\tests\nunit.uikit.tests_VS2005.csproj", "{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.exe_VS2005", "ConsoleRunner\nunit-console-exe\nunit-console.exe_VS2005.csproj", "{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.tests_VS2005", "ConsoleRunner\tests\nunit-console.tests_VS2005.csproj", "{8597D2C6-804D-48CB-BFC7-ED2404D389B0}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.tests_VS2005", "ClientUtilities\tests\nunit.util.tests_VS2005.csproj", "{74EF7165-117E-48ED-98EA-068EAE438E53}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.tests_VS2005", "NUnitFramework\tests\nunit.framework.tests_VS2005.csproj", "{8C326431-AE57-4645-ACC1-A90A0B425129}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.exe_VS2005", "GuiRunner\nunit-gui-exe\nunit-gui.exe_VS2005.csproj", "{AAB186A4-FA3D-404D-AD78-7EB5BB861655}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.tests_VS2005", "GuiRunner\tests\nunit-gui.tests_VS2005.csproj", "{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.tests_VS2005", "NUnitExtensions\tests\nunit.extensions.tests_VS2005.csproj", "{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.extensions.dll_VS2005", "NUnitExtensions\core\nunit.core.extensions.dll_VS2005.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3EE8FF35-CFD4-474A-B122-68F5E8EE0C7D}"
-	ProjectSection(SolutionItems) = preProject
-		clr.bat = clr.bat
-		CommonAssemblyInfo.cs = CommonAssemblyInfo.cs
-		license.rtf = license.rtf
-		nunit.snk = nunit.snk
-		NUnitDevTests.nunit = NUnitDevTests.nunit
-		NUnitFitTests.html = NUnitFitTests.html
-		NUnitTests.config = NUnitTests.config
-		NUnitTests.nunit = NUnitTests.nunit
-	EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll_VS2005", "NUnitCore\core\nunit.core.dll_VS2005.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.tests_VS2005", "NUnitCore\tests\nunit.core.tests_VS2005.csproj", "{DD758D21-E5D5-4D40-9450-5F65A32F359C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-assembly_VS2005", "tests\test-assembly\test-assembly_VS2005.csproj", "{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.extensions.dll_VS2005", "NUnitExtensions\framework\nunit.framework.extensions.dll_VS2005.csproj", "{486C498D-B9F8-477F-ACA7-CED9245BBFCF}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.interfaces.dll_VS2005", "NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj", "{DCC88998-255A-4247-B658-71DD932E9873}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures_VS2005", "NUnitFixtures\fixtures\nunit.fixtures_VS2005.csproj", "{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures.tests_VS2005", "NUnitFixtures\tests\nunit.fixtures.tests_VS2005.csproj", "{55F2D231-743C-48DD-B79A-00E5A7236CBE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "loadtest-assembly_VS2005", "tests\loadtest-assembly\loadtest-assembly_VS2005.csproj", "{34734263-6F6C-403D-AD8C-CE3F8E340EA9}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug2005|Any CPU = Debug2005|Any CPU
-		Release2005|Any CPU = Release2005|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{98B10E98-003C-45A0-9587-119142E39986}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{98B10E98-003C-45A0-9587-119142E39986}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{98B10E98-003C-45A0-9587-119142E39986}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{98B10E98-003C-45A0-9587-119142E39986}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{DCC88998-255A-4247-B658-71DD932E9873}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{DCC88998-255A-4247-B658-71DD932E9873}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{DCC88998-255A-4247-B658-71DD932E9873}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{DCC88998-255A-4247-B658-71DD932E9873}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
-		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-utilities_VS2005", "tests\test-utilities\test-utilities_VS2005.csproj", "{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}"
+	ProjectSection(ProjectDependencies) = postProject
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446} = {2E368281-3BA8-4050-B05E-0E0E43F8F446}
+		{98B10E98-003C-45A0-9587-119142E39986} = {98B10E98-003C-45A0-9587-119142E39986}
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D} = {5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}
+		{61CE9CE5-943E-44D4-A381-814DC1406767} = {61CE9CE5-943E-44D4-A381-814DC1406767}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mock-assembly_VS2005", "tests\mock-assembly\mock-assembly_VS2005.csproj", "{2E368281-3BA8-4050-B05E-0E0E43F8F446}"
+	ProjectSection(ProjectDependencies) = postProject
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nonamespace-assembly_VS2005", "tests\nonamespace-assembly\nonamespace-assembly_VS2005.csproj", "{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}"
+	ProjectSection(ProjectDependencies) = postProject
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "timing-tests_VS2005", "tests\timing-tests\timing-tests_VS2005.csproj", "{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}"
+	ProjectSection(ProjectDependencies) = postProject
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {83DD7E12-A705-4DBA-9D71-09C8973D9382}
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446} = {2E368281-3BA8-4050-B05E-0E0E43F8F446}
+		{61CE9CE5-943E-44D4-A381-814DC1406767} = {61CE9CE5-943E-44D4-A381-814DC1406767}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "notestfixtures-assembly_VS2005", "tests\notestfixtures-assembly\notestfixtures-assembly_VS2005.csproj", "{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console_VS2005", "ConsoleRunner\nunit-console\nunit-console_VS2005.csproj", "{9367EC89-6A38-42BA-9607-0DC288E4BC3A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui_VS2005", "GuiRunner\nunit-gui\nunit-gui_VS2005.csproj", "{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks_VS2005", "NUnitMocks\mocks\nunit.mocks_VS2005.csproj", "{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.dll_VS2005", "GuiComponents\UiKit\nunit.uikit.dll_VS2005.csproj", "{27531BBF-183D-4C3A-935B-D840B9F1A3A4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.dll_VS2005", "ClientUtilities\util\nunit.util.dll_VS2005.csproj", "{61CE9CE5-943E-44D4-A381-814DC1406767}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll_VS2005", "NUnitFramework\framework\nunit.framework.dll_VS2005.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.mocks.tests_VS2005", "NUnitMocks\tests\nunit.mocks.tests_VS2005.csproj", "{8667C588-1A05-4773-A9E8-272EB302B8AB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.uikit.tests_VS2005", "GuiComponents\tests\nunit.uikit.tests_VS2005.csproj", "{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.exe_VS2005", "ConsoleRunner\nunit-console-exe\nunit-console.exe_VS2005.csproj", "{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-console.tests_VS2005", "ConsoleRunner\tests\nunit-console.tests_VS2005.csproj", "{8597D2C6-804D-48CB-BFC7-ED2404D389B0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.util.tests_VS2005", "ClientUtilities\tests\nunit.util.tests_VS2005.csproj", "{74EF7165-117E-48ED-98EA-068EAE438E53}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.tests_VS2005", "NUnitFramework\tests\nunit.framework.tests_VS2005.csproj", "{8C326431-AE57-4645-ACC1-A90A0B425129}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.exe_VS2005", "GuiRunner\nunit-gui-exe\nunit-gui.exe_VS2005.csproj", "{AAB186A4-FA3D-404D-AD78-7EB5BB861655}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit-gui.tests_VS2005", "GuiRunner\tests\nunit-gui.tests_VS2005.csproj", "{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.tests_VS2005", "NUnitExtensions\tests\nunit.extensions.tests_VS2005.csproj", "{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.extensions.dll_VS2005", "NUnitExtensions\core\nunit.core.extensions.dll_VS2005.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3EE8FF35-CFD4-474A-B122-68F5E8EE0C7D}"
+	ProjectSection(SolutionItems) = preProject
+		clr.bat = clr.bat
+		CommonAssemblyInfo.cs = CommonAssemblyInfo.cs
+		license.rtf = license.rtf
+		nunit.snk = nunit.snk
+		NUnitDevTests.nunit = NUnitDevTests.nunit
+		NUnitFitTests.html = NUnitFitTests.html
+		NUnitTests.config = NUnitTests.config
+		NUnitTests.nunit = NUnitTests.nunit
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll_VS2005", "NUnitCore\core\nunit.core.dll_VS2005.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.tests_VS2005", "NUnitCore\tests\nunit.core.tests_VS2005.csproj", "{DD758D21-E5D5-4D40-9450-5F65A32F359C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test-assembly_VS2005", "tests\test-assembly\test-assembly_VS2005.csproj", "{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.extensions.dll_VS2005", "NUnitExtensions\framework\nunit.framework.extensions.dll_VS2005.csproj", "{486C498D-B9F8-477F-ACA7-CED9245BBFCF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.interfaces.dll_VS2005", "NUnitCore\interfaces\nunit.core.interfaces.dll_VS2005.csproj", "{DCC88998-255A-4247-B658-71DD932E9873}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures_VS2005", "NUnitFixtures\fixtures\nunit.fixtures_VS2005.csproj", "{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.fixtures.tests_VS2005", "NUnitFixtures\tests\nunit.fixtures.tests_VS2005.csproj", "{55F2D231-743C-48DD-B79A-00E5A7236CBE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "loadtest-assembly_VS2005", "tests\loadtest-assembly\loadtest-assembly_VS2005.csproj", "{34734263-6F6C-403D-AD8C-CE3F8E340EA9}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug2005|Any CPU = Debug2005|Any CPU
+		Release2005|Any CPU = Release2005|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{2E368281-3BA8-4050-B05E-0E0E43F8F446}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{F16DED73-A2AD-4711-BC1B-5DDFC2BF8667}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{8D330DE4-B980-4A57-9F07-E9F7A7A33F4F}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{9367EC89-6A38-42BA-9607-0DC288E4BC3A}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{3FF340D5-D3B4-4DF0-BAF1-98B3C00B6148}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{EEE7C98B-23E6-472D-9036-C2D53B0DFE7C}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{27531BBF-183D-4C3A-935B-D840B9F1A3A4}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{61CE9CE5-943E-44D4-A381-814DC1406767}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{83DD7E12-A705-4DBA-9D71-09C8973D9382}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{8667C588-1A05-4773-A9E8-272EB302B8AB}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{63EC3999-FA6B-4C5B-8805-5A88AF4CBD7B}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{53BF8787-CB9C-4BB8-AFB4-605DD3A5CA0E}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{8597D2C6-804D-48CB-BFC7-ED2404D389B0}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{74EF7165-117E-48ED-98EA-068EAE438E53}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{8C326431-AE57-4645-ACC1-A90A0B425129}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{AAB186A4-FA3D-404D-AD78-7EB5BB861655}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{AAD27267-DE1F-4F61-A1FB-D1680A5B8001}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{92961F10-EB6D-4C91-AD4F-B4F27BA571B2}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{98B10E98-003C-45A0-9587-119142E39986}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{98B10E98-003C-45A0-9587-119142E39986}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{98B10E98-003C-45A0-9587-119142E39986}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{98B10E98-003C-45A0-9587-119142E39986}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{DD758D21-E5D5-4D40-9450-5F65A32F359C}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{486C498D-B9F8-477F-ACA7-CED9245BBFCF}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{DCC88998-255A-4247-B658-71DD932E9873}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{DCC88998-255A-4247-B658-71DD932E9873}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{DCC88998-255A-4247-B658-71DD932E9873}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{DCC88998-255A-4247-B658-71DD932E9873}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{67D6949E-F4D2-4821-B02B-4AAFC3F18B52}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{55F2D231-743C-48DD-B79A-00E5A7236CBE}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug2005|Any CPU.ActiveCfg = Debug2005|Any CPU
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Debug2005|Any CPU.Build.0 = Debug2005|Any CPU
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release2005|Any CPU.ActiveCfg = Release2005|Any CPU
+		{34734263-6F6C-403D-AD8C-CE3F8E340EA9}.Release2005|Any CPU.Build.0 = Release2005|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-853.cs
+++ mono-4.6.2.7+dfsg/mcs/tests/test-853.cs
@@ -1,15 +1,15 @@
-using System;
-
-class Program
-{
-	public static int Main ()
-	{
-string s = @"a
-
-";
-		if (s.Length != 5)
-			return 1;
-			
-		return 0;
-	}
+using System;
+
+class Program
+{
+	public static int Main ()
+	{
+string s = @"a
+
+";
+		if (s.Length != 5)
+			return 1;
+			
+		return 0;
+	}
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-001-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-001-ref.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-001</name>
-    </assembly>
-    <members>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-001</name>
+    </assembly>
+    <members>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-002-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-002-ref.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-002</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.Test">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-002</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.Test">
             <summary>
             comment on class
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "T:Testing.Test2" -->
-        <member name="T:Testing.Test3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "T:Testing.Test2" -->
+        <member name="T:Testing.Test3">
             		<summary>
             		another Java-style documentation style
             		</summary>
-        </member>
-        <member name="T:Testing.Test4">
+        </member>
+        <member name="T:Testing.Test4">
             indentation level test <seealso
             cref="T:Testing.Test" />.
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-003-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-003-ref.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-003</name>
-    </assembly>
-    <members>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-003</name>
+    </assembly>
+    <members>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-004-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-004-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-004</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.StructTest">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-004</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.StructTest">
             <summary> 
             comment for struct
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "T:Testing.StructTest2" -->
-        <member name="T:Testing.StructTest3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "T:Testing.StructTest2" -->
+        <member name="T:Testing.StructTest3">
             		<summary>
             		Java style commet
             		</summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-005-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-005-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-005</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.InterfaceTest">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-005</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.InterfaceTest">
             <summary>
             comment for interface
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "T:Testing.InterfaceTest2" -->
-        <member name="T:Testing.InterfaceTest3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "T:Testing.InterfaceTest2" -->
+        <member name="T:Testing.InterfaceTest3">
             		<summary>
             		Java style comment for interface
             		</summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-006-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-006-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-006</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.EnumTest">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-006</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.EnumTest">
             <summary>
             comment for enum type
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "T:Testing.EnumTest2" -->
-        <member name="T:Testing.EnumTest3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "T:Testing.EnumTest2" -->
+        <member name="T:Testing.EnumTest3">
             	<summary>
             	Java style comment for enum type
             	</summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-007-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-007-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-007</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.MyDelegate">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-007</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.MyDelegate">
             <summary>
             comment for delegate type
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "T:Testing.MyDelegate2" -->
-        <member name="T:Testing.MyDelegate3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "T:Testing.MyDelegate2" -->
+        <member name="T:Testing.MyDelegate3">
             	<summary>
             	Javadoc comment for delegate type
             	</summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-008-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-008-ref.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-008</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.Test">
-            comment without markup on class - it is allowed
-        </member>
-        <!-- Badly formed XML comment ignored for member "T:Testing.Test2" -->
-        <!-- Badly formed XML comment ignored for member "T:Testing.Test3" -->
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-008</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.Test">
+            comment without markup on class - it is allowed
+        </member>
+        <!-- Badly formed XML comment ignored for member "T:Testing.Test2" -->
+        <!-- Badly formed XML comment ignored for member "T:Testing.Test3" -->
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-009-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-009-ref.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-009</name>
-    </assembly>
-    <members>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-009</name>
+    </assembly>
+    <members>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-010-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-010-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-010</name>
-    </assembly>
-    <members>
-        <member name="F:Testing.Test.Constant">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-010</name>
+    </assembly>
+    <members>
+        <member name="F:Testing.Test.Constant">
             <summary>
             comment for const declaration
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "F:Testing.Test.Constant2" -->
-        <member name="F:Testing.Test.Constant3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "F:Testing.Test.Constant2" -->
+        <member name="F:Testing.Test.Constant3">
             		<summary>
             		Javaism comment for const declaration
             		</summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-011-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-011-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-011</name>
-    </assembly>
-    <members>
-        <member name="F:Testing.Test.PublicField">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-011</name>
+    </assembly>
+    <members>
+        <member name="F:Testing.Test.PublicField">
             <summary>
             comment for public field
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "F:Testing.Test.PublicField2" -->
-        <member name="F:Testing.Test.PublicField3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "F:Testing.Test.PublicField2" -->
+        <member name="F:Testing.Test.PublicField3">
             		 <summary>
             		 Javadoc comment for public field
             		 </summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-012-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-012-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-012</name>
-    </assembly>
-    <members>
-        <member name="F:Testing.Test.PrivateField">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-012</name>
+    </assembly>
+    <members>
+        <member name="F:Testing.Test.PrivateField">
             <summary>
             comment for private field
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "F:Testing.Test.PrivateField2" -->
-        <member name="F:Testing.Test.PrivateField3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "F:Testing.Test.PrivateField2" -->
+        <member name="F:Testing.Test.PrivateField3">
             		<summary>
             		Javadoc comment for private field
             		</summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-013-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-013-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-013</name>
-    </assembly>
-    <members>
-        <member name="P:Testing.Test.PublicProperty">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-013</name>
+    </assembly>
+    <members>
+        <member name="P:Testing.Test.PublicProperty">
             <summary>
             comment for public property
             </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "P:Testing.Test.PublicProperty2" -->
-        <member name="P:Testing.Test.PublicProperty3">
+        </member>
+        <!-- Badly formed XML comment ignored for member "P:Testing.Test.PublicProperty2" -->
+        <member name="P:Testing.Test.PublicProperty3">
             		<summary>
             		Javadoc comment for public property
             		</summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-014-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-014-ref.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-014</name>
-    </assembly>
-    <members>
-        <member name="P:Testing.Test.PrivateProperty">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-014</name>
+    </assembly>
+    <members>
+        <member name="P:Testing.Test.PrivateProperty">
             <summary>
             comment for private property
             </summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-015-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-015-ref.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-015</name>
-    </assembly>
-    <members>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-015</name>
+    </assembly>
+    <members>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-016-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-016-ref.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-016</name>
-    </assembly>
-    <members>
-        <member name="E:Testing.Test.MyEvent">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-016</name>
+    </assembly>
+    <members>
+        <member name="E:Testing.Test.MyEvent">
             <summary>
             public event EventHandler MyEvent
             </summary>
-        </member>
-        <member name="E:Testing.Test.MyEvent2">
+        </member>
+        <member name="E:Testing.Test.MyEvent2">
             private event EventHandler MyEvent; without markup - it is OK.
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-017-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-017-ref.xml
@@ -1,17 +1,17 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-017</name>
-    </assembly>
-    <members>
-        <member name="M:Testing.Test.Foo">
-            comment on method without parameter
-        </member>
-        <member name="M:Testing.Test.Foo(System.Int64,Testing.Test,System.Collections.ArrayList)">
-            here is a documentation with parameters (and has same name)
-        </member>
-        <member name="M:Testing.Test.Foo(System.String[])">
-            here is a documentation with parameters (and has same name)
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-017</name>
+    </assembly>
+    <members>
+        <member name="M:Testing.Test.Foo">
+            comment on method without parameter
+        </member>
+        <member name="M:Testing.Test.Foo(System.Int64,Testing.Test,System.Collections.ArrayList)">
+            here is a documentation with parameters (and has same name)
+        </member>
+        <member name="M:Testing.Test.Foo(System.String[])">
+            here is a documentation with parameters (and has same name)
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-018-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-018-ref.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-018</name>
-    </assembly>
-    <members>
-        <member name="P:Testing.Test.Item(System.Int32)">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-018</name>
+    </assembly>
+    <members>
+        <member name="P:Testing.Test.Item(System.Int32)">
             <summary>
             comment for indexer
             </summary>
-        </member>
-        <member name="P:Testing.Test.Item(System.String)">
+        </member>
+        <member name="P:Testing.Test.Item(System.String)">
             <summary>
             comment for indexer
             </summary>
-        </member>
-        <member name="P:Testing.Test.Item(System.Int32,Testing.Test)">
+        </member>
+        <member name="P:Testing.Test.Item(System.Int32,Testing.Test)">
             <summary>
             comment for indexer wit multiple parameters
             </summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-019-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-019-ref.xml
@@ -1,18 +1,18 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-019</name>
-    </assembly>
-    <members>
-        <member name="M:Testing.Test.op_LogicalNot(Testing.Test)">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-019</name>
+    </assembly>
+    <members>
+        <member name="M:Testing.Test.op_LogicalNot(Testing.Test)">
             <summary>
             comment for unary operator
             </summary>
-        </member>
-        <member name="M:Testing.Test.op_Addition(Testing.Test,System.Int32)">
+        </member>
+        <member name="M:Testing.Test.op_Addition(Testing.Test,System.Int32)">
             <summary>
             comment for binary operator
             </summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-020-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-020-ref.xml
@@ -1,14 +1,14 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-020</name>
-    </assembly>
-    <members>
-        <member name="M:Testing.Test.#ctor">
-            comment for constructor
-        </member>
-        <member name="M:Testing.Test.Finalize">
-            comment for destructor
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-020</name>
+    </assembly>
+    <members>
+        <member name="M:Testing.Test.#ctor">
+            comment for constructor
+        </member>
+        <member name="M:Testing.Test.Finalize">
+            comment for destructor
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-021-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-021-ref.xml
@@ -1,14 +1,14 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-021</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.Test.InternalClass">
-            comment for internal class
-        </member>
-        <member name="T:Testing.Test.InternalStruct">
-            comment for internal struct
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-021</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.Test.InternalClass">
+            comment for internal class
+        </member>
+        <member name="T:Testing.Test.InternalStruct">
+            comment for internal struct
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-022-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-022-ref.xml
@@ -1,102 +1,102 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-022</name>
-    </assembly>
-    <members>
-        <!-- Badly formed XML comment ignored for member "T:Testing.Test2" -->
-        <member name="M:Testing.Test2.Foo">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-022</name>
+    </assembly>
+    <members>
+        <!-- Badly formed XML comment ignored for member "T:Testing.Test2" -->
+        <member name="M:Testing.Test2.Foo">
             			another documentation style (Java-mimic)
-        </member>
-        <member name="T:Testing.StructTest">
+        </member>
+        <member name="T:Testing.StructTest">
             testing indentation <summary> test test ;-)
             comment for struct
             </summary>
-        </member>
-        <member name="T:Testing.InterfaceTest">
+        </member>
+        <member name="T:Testing.InterfaceTest">
             <summary>
             comment for interface
             </summary>
-        </member>
-        <member name="T:Testing.EnumTest">
+        </member>
+        <member name="T:Testing.EnumTest">
             <summary>
             comment for enum type
             </summary>
-        </member>
-        <member name="F:Testing.EnumTest.Foo">
+        </member>
+        <member name="F:Testing.EnumTest.Foo">
             <summary>
             comment for enum field
             </summary>
-        </member>
-        <member name="T:Testing.Dummy">
+        </member>
+        <member name="T:Testing.Dummy">
             <summary>
             comment for dummy type
             </summary>
-        </member>
-        <member name="T:Testing.MyDelegate">
+        </member>
+        <member name="T:Testing.MyDelegate">
             <summary>
             comment for delegate type
             </summary>
-        </member>
-        <member name="T:Testing.Test">
+        </member>
+        <member name="T:Testing.Test">
             <summary>
             description for class Test
             </summary>
-        </member>
-        <member name="F:Testing.Test.Constant">
+        </member>
+        <member name="F:Testing.Test.Constant">
             comment for const declaration
-        </member>
-        <member name="F:Testing.Test.BadPublicField">
+        </member>
+        <member name="F:Testing.Test.BadPublicField">
             comment for public field
-        </member>
-        <member name="F:Testing.Test.PrivateField">
+        </member>
+        <member name="F:Testing.Test.PrivateField">
             comment for private field
-        </member>
-        <member name="M:Testing.Test.Foo">
+        </member>
+        <member name="M:Testing.Test.Foo">
             here is a documentation!!!
-        </member>
-        <member name="M:Testing.Test.Foo(System.Int64,Testing.Test,System.Collections.ArrayList)">
+        </member>
+        <member name="M:Testing.Test.Foo(System.Int64,Testing.Test,System.Collections.ArrayList)">
             here is a documentation with parameters
-        </member>
-        <member name="M:Testing.Test.op_LogicalNot(Testing.Test)">
+        </member>
+        <member name="M:Testing.Test.op_LogicalNot(Testing.Test)">
             <summary>
             comment for unary operator
             </summary>
-        </member>
-        <member name="M:Testing.Test.op_Addition(Testing.Test,System.Int32)">
+        </member>
+        <member name="M:Testing.Test.op_Addition(Testing.Test,System.Int32)">
             <summary>
             comment for binary operator
             </summary>
-        </member>
-        <member name="M:Testing.Test.Finalize">
+        </member>
+        <member name="M:Testing.Test.Finalize">
             comment for destructor
-        </member>
-        <member name="M:Testing.Test.#ctor">
+        </member>
+        <member name="M:Testing.Test.#ctor">
             comment for .ctor()
-        </member>
-        <member name="M:Testing.Test.#ctor(System.String,System.String[])">
+        </member>
+        <member name="M:Testing.Test.#ctor(System.String,System.String[])">
             comment for .ctor(string arg, string [] args)
-        </member>
-        <member name="P:Testing.Test.PublicProperty">
+        </member>
+        <member name="P:Testing.Test.PublicProperty">
             comment for public property
-        </member>
-        <member name="P:Testing.Test.PrivateProperty">
+        </member>
+        <member name="P:Testing.Test.PrivateProperty">
             comment for private property
-        </member>
-        <member name="E:Testing.Test.MyEvent">
+        </member>
+        <member name="E:Testing.Test.MyEvent">
             public event EventHandler MyEvent ;-)
-        </member>
-        <member name="P:Testing.Test.Item(System.Int32)">
+        </member>
+        <member name="P:Testing.Test.Item(System.Int32)">
             comment for indexer
-        </member>
-        <member name="P:Testing.Test.Item(System.Int32,Testing.Test)">
+        </member>
+        <member name="P:Testing.Test.Item(System.Int32,Testing.Test)">
             comment for indexer wit multiple parameters
-        </member>
-        <member name="T:Testing.Test.InternalClass">
+        </member>
+        <member name="T:Testing.Test.InternalClass">
             comment for internal class
-        </member>
-        <member name="T:Testing.Test.InternalStruct">
+        </member>
+        <member name="T:Testing.Test.InternalStruct">
             comment for internal struct
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-023-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-023-ref.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-023</name>
-    </assembly>
-    <members>
-        <member name="M:Test.Foo(Test.A,System.Int32)">
-            here is a documentation
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-023</name>
+    </assembly>
+    <members>
+        <member name="M:Test.Foo(Test.A,System.Int32)">
+            here is a documentation
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-024-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-024-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-024</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.Test">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-024</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.Test">
             <!-- Include tag is invalid --><include />
-        </member>
-        <member name="M:Testing.Test.Main">
+        </member>
+        <member name="M:Testing.Test.Main">
             <!-- Include tag is invalid --><include file="a" />
-        </member>
-        <member name="M:Testing.Test.Bar(System.Int32)">
+        </member>
+        <member name="M:Testing.Test.Bar(System.Int32)">
             <!-- Include tag is invalid --><include path="/foo/bar" />
-        </member>
-        <member name="M:Testing.Test.Baz(System.Int32)">
-            <!-- Badly formed XML in at comment file `there-is-no-such-file': cannot be included --><!-- No matching elements were found for the include tag embedded here. --><include file="there-is-no-such-file" path="/foo/bar" /></member>
-    </members>
-</doc>
+        </member>
+        <member name="M:Testing.Test.Baz(System.Int32)">
+            <!-- Badly formed XML in at comment file `there-is-no-such-file': cannot be included --><!-- No matching elements were found for the include tag embedded here. --><include file="there-is-no-such-file" path="/foo/bar" /></member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-026-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-026-ref.xml
@@ -1,24 +1,24 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-026</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.Test">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-026</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.Test">
             test class
-        </member>
-        <member name="M:Testing.Test.Foo(System.Int32)">
+        </member>
+        <member name="M:Testing.Test.Foo(System.Int32)">
             <param>anonymous</param>
-        </member>
-        <member name="M:Testing.Test.Bar(System.Int32)">
+        </member>
+        <member name="M:Testing.Test.Bar(System.Int32)">
             <param name='i'>correct</param>
             <param name='i'>duplicate</param>
-        </member>
-        <member name="M:Testing.Test.Baz(System.Int32)">
+        </member>
+        <member name="M:Testing.Test.Baz(System.Int32)">
             <param name='mismatch'>mismatch</param>
-        </member>
-        <member name="M:Testing.Test.Var(System.Int32[])">
+        </member>
+        <member name="M:Testing.Test.Var(System.Int32[])">
             <param name='arr'>varargs</param>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-027-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-027-ref.xml
@@ -1,30 +1,30 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-027</name>
-    </assembly>
-    <members>
-        <member name="T:Testing.Test">
-            <summary>
-            <see/>
-            <see cref="!:!!!!!"/>
-            <see cref="!:nonexist"/>
-            <see cref="T:Testing.Test"/>
-            <see cref="T:Testing.Test"/>
-            <see cref="T:Test"/>
-            <see cref="_:Test"/>
-            <see cref="P:Bar"/>
-            <see cref="F:Bar"/>
-            <see cref="F:Testing.Test.Bar"/>
-            <see cref="P:Baz"/>
-            <see cref="F:Baz"/>
-            <see cref="P:Testing.Test.Baz"/>
-            <see cref="!:nonexist.Foo()"/>
-            <see cref="M:Testing.Test.Foo"/>
-            <see cref="M:Testing.Test.Foo"/>
-            <see cref="!:Test.Bar()"/>
-            <see cref="!:Test.Foo(System.Int32)"/>
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-027</name>
+    </assembly>
+    <members>
+        <member name="T:Testing.Test">
+            <summary>
+            <see/>
+            <see cref="!:!!!!!"/>
+            <see cref="!:nonexist"/>
+            <see cref="T:Testing.Test"/>
+            <see cref="T:Testing.Test"/>
+            <see cref="T:Test"/>
+            <see cref="_:Test"/>
+            <see cref="P:Bar"/>
+            <see cref="F:Bar"/>
+            <see cref="F:Testing.Test.Bar"/>
+            <see cref="P:Baz"/>
+            <see cref="F:Baz"/>
+            <see cref="P:Testing.Test.Baz"/>
+            <see cref="!:nonexist.Foo()"/>
+            <see cref="M:Testing.Test.Foo"/>
+            <see cref="M:Testing.Test.Foo"/>
+            <see cref="!:Test.Bar()"/>
+            <see cref="!:Test.Foo(System.Int32)"/>
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-028-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-028-ref.xml
@@ -1,20 +1,20 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-028</name>
-    </assembly>
-    <members>
-        <member name="T:Test">
-            <summary>
-            Partial comment #2
-            Partial comment #1
-            </summary>
-        </member>
-        <member name="T:Test.Inner">
-            <summary>
-            Partial inner class!
-            ... is still available.
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-028</name>
+    </assembly>
+    <members>
+        <member name="T:Test">
+            <summary>
+            Partial comment #2
+            Partial comment #1
+            </summary>
+        </member>
+        <member name="T:Test.Inner">
+            <summary>
+            Partial inner class!
+            ... is still available.
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-029-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-029-ref.xml
@@ -1,33 +1,33 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-029</name>
-    </assembly>
-    <members>
-        <member name="M:Test1.Foo">
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-029</name>
+    </assembly>
+    <members>
+        <member name="M:Test1.Foo">
             <summary>
             Some test documentation
             </summary>
-        </member>
-        <member name="T:ITest2">
+        </member>
+        <member name="T:ITest2">
             <summary>
             Publicly available interface
             </summary>
-        </member>
-        <member name="M:ITest2.Foo">
+        </member>
+        <member name="M:ITest2.Foo">
             <summary>
             Some test documentation
             </summary>
-        </member>
-        <member name="P:ITest2.Bar">
+        </member>
+        <member name="P:ITest2.Bar">
             <summary>
             Some test documentation
             </summary>
-        </member>
-        <member name="E:ITest2.EventRaised">
+        </member>
+        <member name="E:ITest2.EventRaised">
             <summary>
             Some test documentation
             </summary>
-        </member>
-    </members>
-</doc>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-030-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-030-ref.xml
@@ -1,30 +1,30 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-030</name>
-    </assembly>
-    <members>
-        <member name="M:Test.foo2">
-            <summary>
-            some summary
-            </summary>
-            <value>
-            <see cref="T:Test[]"/>
-            <see cref="T:System.Text.RegularExpressions.Regex"/>
-            <see cref="T:System.Text.RegularExpressions.Regex"/>
-            <see cref="N:System.Text.RegularExpressions"/>
-            <see cref="T:System.Text.RegularExpressions.Regex[]"/>
-            </value>
-        </member>
-        <member name="M:Test.foo3(System.String,System.Object[])">
-            <summary>
-            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
-            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
-            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
-            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
-            </summary>
-            <param name="line">The formatting string.</param>
-            <param name="args">The object array to write into format string.</param>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-030</name>
+    </assembly>
+    <members>
+        <member name="M:Test.foo2">
+            <summary>
+            some summary
+            </summary>
+            <value>
+            <see cref="T:Test[]"/>
+            <see cref="T:System.Text.RegularExpressions.Regex"/>
+            <see cref="T:System.Text.RegularExpressions.Regex"/>
+            <see cref="N:System.Text.RegularExpressions"/>
+            <see cref="T:System.Text.RegularExpressions.Regex[]"/>
+            </value>
+        </member>
+        <member name="M:Test.foo3(System.String,System.Object[])">
+            <summary>
+            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
+            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
+            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
+            <see cref="M:System.String.Format(System.String,System.Object[])"/>.
+            </summary>
+            <param name="line">The formatting string.</param>
+            <param name="args">The object array to write into format string.</param>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-031-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-031-ref.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-031</name>
-    </assembly>
-    <members>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-031</name>
+    </assembly>
+    <members>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-032-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-032-ref.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-032</name>
-    </assembly>
-    <members>
-        <member name="M:Test.#ctor(System.String)">
-            <exception cref="T:System.ArgumentNullException"><paramref name="wrongref"/> is <see langword="null"/>.</exception>
-            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="wrongRefAgain"/> is a zero-length <see cref="T:System.String"/>.</exception>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-032</name>
+    </assembly>
+    <members>
+        <member name="M:Test.#ctor(System.String)">
+            <exception cref="T:System.ArgumentNullException"><paramref name="wrongref"/> is <see langword="null"/>.</exception>
+            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="wrongRefAgain"/> is a zero-length <see cref="T:System.String"/>.</exception>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-033-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-033-ref.xml
@@ -1,20 +1,20 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-033</name>
-    </assembly>
-    <members>
-        <member name="T:MyClass">
-            <summary>help text</summary>
-        </member>
-        <member name="M:MyClass.Main">
-            <summary>help text</summary>
-        </member>
-        <member name="M:MyClass.op_Explicit(MyClass)~System.Int32">
-            <summary>help text</summary>
-        </member>
-        <member name="M:MyClass.op_Implicit(MyClass)~System.Char">
-            <summary>help text</summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-033</name>
+    </assembly>
+    <members>
+        <member name="T:MyClass">
+            <summary>help text</summary>
+        </member>
+        <member name="M:MyClass.Main">
+            <summary>help text</summary>
+        </member>
+        <member name="M:MyClass.op_Explicit(MyClass)~System.Int32">
+            <summary>help text</summary>
+        </member>
+        <member name="M:MyClass.op_Implicit(MyClass)~System.Char">
+            <summary>help text</summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-034-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-034-ref.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-034</name>
-    </assembly>
-    <members>
-        <member name="T:Test">
-            valid comment.
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-034</name>
+    </assembly>
+    <members>
+        <member name="T:Test">
+            valid comment.
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-035-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-035-ref.xml
@@ -1,19 +1,19 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-035</name>
-    </assembly>
-    <members>
-        <member name="T:Test">
-            <summary>
-            <see cref="M:System.Data.DataSet.ReadXml(System.Xml.XmlReader,System.Data.XmlReadMode)"/>
-            <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)"/>
-            </summary>
-        </member>
-        <member name="M:Test.Main">
-            <summary>
-            <see cref="T:System.Environment.SpecialFolder"/>
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-035</name>
+    </assembly>
+    <members>
+        <member name="T:Test">
+            <summary>
+            <see cref="M:System.Data.DataSet.ReadXml(System.Xml.XmlReader,System.Data.XmlReadMode)"/>
+            <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)"/>
+            </summary>
+        </member>
+        <member name="M:Test.Main">
+            <summary>
+            <see cref="T:System.Environment.SpecialFolder"/>
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-036-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-036-ref.xml
@@ -1,29 +1,29 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-036</name>
-    </assembly>
-    <members>
-        <member name="T:Test">
-            <summary><see cref="F:Test.true"/>, <see cref="F:Test.true"/>, <see cref="F:Test.Whatever"/></summary>
-        </member>
-        <member name="F:Test.true">
-            <summary>Yes</summary>
-        </member>
-        <member name="F:Test.false">
-            <summary>Nope</summary>
-        </member>
-        <member name="F:Test.Whatever">
-            <summary>Maybe</summary>
-        </member>
-        <member name="T:Foo">
-            <summary><see cref="M:Foo.true"/></summary>
-        </member>
-        <member name="M:Foo.true">
-            <summary>Foo</summary>
-        </member>
-        <member name="M:Foo.Main">
-            main.
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-036</name>
+    </assembly>
+    <members>
+        <member name="T:Test">
+            <summary><see cref="F:Test.true"/>, <see cref="F:Test.true"/>, <see cref="F:Test.Whatever"/></summary>
+        </member>
+        <member name="F:Test.true">
+            <summary>Yes</summary>
+        </member>
+        <member name="F:Test.false">
+            <summary>Nope</summary>
+        </member>
+        <member name="F:Test.Whatever">
+            <summary>Maybe</summary>
+        </member>
+        <member name="T:Foo">
+            <summary><see cref="M:Foo.true"/></summary>
+        </member>
+        <member name="M:Foo.true">
+            <summary>Foo</summary>
+        </member>
+        <member name="M:Foo.Main">
+            main.
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-037-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-037-ref.xml
@@ -1,17 +1,17 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-037</name>
-    </assembly>
-    <members>
-        <member name="T:Whatever">
-            <summary>
-            <see cref="E:System.AppDomain.AssemblyResolve"/>
-            </summary>
-        </member>
-        <member name="M:Whatever.Main">
-            <summary>
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-037</name>
+    </assembly>
+    <members>
+        <member name="T:Whatever">
+            <summary>
+            <see cref="E:System.AppDomain.AssemblyResolve"/>
+            </summary>
+        </member>
+        <member name="M:Whatever.Main">
+            <summary>
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-038-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-038-ref.xml
@@ -1,17 +1,17 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-038</name>
-    </assembly>
-    <members>
-        <member name="T:Whatever">
-            <summary>
-            <see cref="E:System.AppDomain.AssemblyResolve"/>
-            </summary>
-        </member>
-        <member name="M:Whatever.Main">
-            <summary>
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-038</name>
+    </assembly>
+    <members>
+        <member name="T:Whatever">
+            <summary>
+            <see cref="E:System.AppDomain.AssemblyResolve"/>
+            </summary>
+        </member>
+        <member name="M:Whatever.Main">
+            <summary>
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-050-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-050-ref.xml
@@ -1,52 +1,52 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-050</name>
-    </assembly>
-    <members>
-        <member name="T:EntryPoint">
-            <summary>
-            <see cref="M:IB.Execute"/>
-            <see cref="P:IB.Name"/>
-            <see cref="M:B.Execute"/>
-            <see cref="P:B.Name"/>
-            </summary>
-        </member>
-        <member name="T:IA">
-            <summary />
-        </member>
-        <member name="M:IA.Execute">
-            <summary />
-        </member>
-        <member name="P:IA.Name">
-            <summary />
-        </member>
-        <member name="T:IB">
-            <summary />
-        </member>
-        <member name="M:IB.Execute">
-            <summary />
-        </member>
-        <member name="P:IB.Name">
-            <summary />
-        </member>
-        <member name="T:A">
-            <summary />
-        </member>
-        <member name="M:A.Execute">
-            <summary />
-        </member>
-        <member name="P:A.Name">
-            <summary />
-        </member>
-        <member name="T:B">
-            <summary />
-        </member>
-        <member name="M:B.Execute">
-            <summary />
-        </member>
-        <member name="P:B.Name">
-            <summary />
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-050</name>
+    </assembly>
+    <members>
+        <member name="T:EntryPoint">
+            <summary>
+            <see cref="M:IB.Execute"/>
+            <see cref="P:IB.Name"/>
+            <see cref="M:B.Execute"/>
+            <see cref="P:B.Name"/>
+            </summary>
+        </member>
+        <member name="T:IA">
+            <summary />
+        </member>
+        <member name="M:IA.Execute">
+            <summary />
+        </member>
+        <member name="P:IA.Name">
+            <summary />
+        </member>
+        <member name="T:IB">
+            <summary />
+        </member>
+        <member name="M:IB.Execute">
+            <summary />
+        </member>
+        <member name="P:IB.Name">
+            <summary />
+        </member>
+        <member name="T:A">
+            <summary />
+        </member>
+        <member name="M:A.Execute">
+            <summary />
+        </member>
+        <member name="P:A.Name">
+            <summary />
+        </member>
+        <member name="T:B">
+            <summary />
+        </member>
+        <member name="M:B.Execute">
+            <summary />
+        </member>
+        <member name="P:B.Name">
+            <summary />
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-057-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-057-ref.xml
@@ -1,14 +1,14 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-057</name>
-    </assembly>
-    <members>
-        <member name="T:Test.FirstTestDelegate`1">
-            <summary>Documentation Text</summary>
-        </member>
-        <member name="T:Test.TestInterface">
-            <summary>test</summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-057</name>
+    </assembly>
+    <members>
+        <member name="T:Test.FirstTestDelegate`1">
+            <summary>Documentation Text</summary>
+        </member>
+        <member name="T:Test.TestInterface">
+            <summary>test</summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-059-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-059-ref.xml
@@ -1,29 +1,29 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-059</name>
-    </assembly>
-    <members>
-        <member name="T:Foo">
-            <see cref="M:System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke2 ( )"/>
-            <see cref="F:Foo.Bar"/>
-            <see cref="M:Foo.ListBase(System.String)"/>
-            <see cref="T:ListBase(string)"/>
-            <see cref="T:ListBase&lt;string)"/><!-- it somehow passes -->
-            <see cref="T:List!$%Base()"/><!-- it somehow passes -->
-            <see cref="T:$%!"/>
-            <see cref=".:Bar"/>
-            <see cref="T:List(int)"/>
-        </member>
-        <member name="F:Foo.Bar">
-            hogehoge
-        </member>
-        <member name="M:Foo.ListBase(System.String)">
-            fugafuga
-        </member>
-        <member name="T:ListBase`1">
-            <see cref="T:System.Nullable&lt;System.Int32&gt;" />
-            <see cref="T:System.Nullable(System.Int32)" />
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-059</name>
+    </assembly>
+    <members>
+        <member name="T:Foo">
+            <see cref="M:System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke2 ( )"/>
+            <see cref="F:Foo.Bar"/>
+            <see cref="M:Foo.ListBase(System.String)"/>
+            <see cref="T:ListBase(string)"/>
+            <see cref="T:ListBase&lt;string)"/><!-- it somehow passes -->
+            <see cref="T:List!$%Base()"/><!-- it somehow passes -->
+            <see cref="T:$%!"/>
+            <see cref=".:Bar"/>
+            <see cref="T:List(int)"/>
+        </member>
+        <member name="F:Foo.Bar">
+            hogehoge
+        </member>
+        <member name="M:Foo.ListBase(System.String)">
+            fugafuga
+        </member>
+        <member name="T:ListBase`1">
+            <see cref="T:System.Nullable&lt;System.Int32&gt;" />
+            <see cref="T:System.Nullable(System.Int32)" />
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-060-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-060-ref.xml
@@ -1,30 +1,30 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-060</name>
-    </assembly>
-    <members>
-        <member name="T:Test.DocMe">
-            <remarks>T:Test.DocMe</remarks>
-            <seealso cref="T:Test.DocMe`1" />
-        </member>
-        <member name="M:Test.DocMe.UseList(System.Collections.Generic.List{System.Int32})">
-            <remarks>M:Test.DocMe.UseList(System.Collections.Generic.List{System.Int32})</remarks>
-        </member>
-        <member name="M:Test.DocMe.Main">
-            <remarks>M:Test.DocMe.Main</remarks>
-        </member>
-        <member name="T:Test.DocMe`1">
-            <remarks>T:Test.DocMe`1</remarks>
-        </member>
-        <member name="M:Test.DocMe`1.UseList(System.Collections.Generic.List{`0})">
-            <remarks>M:Test.DocMe`1.UseList(System.Collections.Generic.List{`0})</remarks>
-        </member>
-        <member name="M:Test.DocMe`1.UseList``1(System.Collections.Generic.List{``0})">
-            <remarks>M:Test.DocMe`1.UseList`1(System.Collections.Generic.List{``0})</remarks>
-        </member>
-        <member name="M:Test.DocMe`1.RefMethod``1(`0@,``0@)">
-            <remarks>M:Test.DocMe`1.RefMethod`1(`0@,``0@)</remarks>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-060</name>
+    </assembly>
+    <members>
+        <member name="T:Test.DocMe">
+            <remarks>T:Test.DocMe</remarks>
+            <seealso cref="T:Test.DocMe`1" />
+        </member>
+        <member name="M:Test.DocMe.UseList(System.Collections.Generic.List{System.Int32})">
+            <remarks>M:Test.DocMe.UseList(System.Collections.Generic.List{System.Int32})</remarks>
+        </member>
+        <member name="M:Test.DocMe.Main">
+            <remarks>M:Test.DocMe.Main</remarks>
+        </member>
+        <member name="T:Test.DocMe`1">
+            <remarks>T:Test.DocMe`1</remarks>
+        </member>
+        <member name="M:Test.DocMe`1.UseList(System.Collections.Generic.List{`0})">
+            <remarks>M:Test.DocMe`1.UseList(System.Collections.Generic.List{`0})</remarks>
+        </member>
+        <member name="M:Test.DocMe`1.UseList``1(System.Collections.Generic.List{``0})">
+            <remarks>M:Test.DocMe`1.UseList`1(System.Collections.Generic.List{``0})</remarks>
+        </member>
+        <member name="M:Test.DocMe`1.RefMethod``1(`0@,``0@)">
+            <remarks>M:Test.DocMe`1.RefMethod`1(`0@,``0@)</remarks>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-061-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-061-ref.xml
@@ -1,14 +1,14 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-061</name>
-    </assembly>
-    <members>
-        <member name="T:Interface">
-            <summary>summary</summary>
-        </member>
-        <member name="P:Interface.Item(System.Int32)">
-            <summary>Problem!</summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-061</name>
+    </assembly>
+    <members>
+        <member name="T:Interface">
+            <summary>summary</summary>
+        </member>
+        <member name="P:Interface.Item(System.Int32)">
+            <summary>Problem!</summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-062-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-062-ref.xml
@@ -1,34 +1,34 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-062</name>
-    </assembly>
-    <members>
-        <member name="T:Maybe`1">
-            <summary>
-            
-            </summary>
-            <typeparam name="T"></typeparam>
-        </member>
-        <member name="M:Maybe`1.Method">
-            <summary>
-            
-            </summary>
-            <typeparamref name="T"></typeparamref>
-        </member>
-        <member name="T:Tuple`2">
-            <summary>
-            
-            </summary>
-            <typeparam name="T1"></typeparam>
-            <typeparam name="T2"></typeparam>
-        </member>
-        <member name="M:Tuple`2.Match``1(System.Func{`0,`1,Maybe{``0}}[])">
-            <summary>
-             Test
-             <typeparamref name="TResult" />.
-             <typeparamref name="T2" />.
-            </summary>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-062</name>
+    </assembly>
+    <members>
+        <member name="T:Maybe`1">
+            <summary>
+            
+            </summary>
+            <typeparam name="T"></typeparam>
+        </member>
+        <member name="M:Maybe`1.Method">
+            <summary>
+            
+            </summary>
+            <typeparamref name="T"></typeparamref>
+        </member>
+        <member name="T:Tuple`2">
+            <summary>
+            
+            </summary>
+            <typeparam name="T1"></typeparam>
+            <typeparam name="T2"></typeparam>
+        </member>
+        <member name="M:Tuple`2.Match``1(System.Func{`0,`1,Maybe{``0}}[])">
+            <summary>
+             Test
+             <typeparamref name="TResult" />.
+             <typeparamref name="T2" />.
+            </summary>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-064-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-064-ref.xml
@@ -1,11 +1,11 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-064</name>
-    </assembly>
-    <members>
-        <member name="T:Test">
-            <returns>A <see cref="T:System.Collections.Generic.IList`1"/>.</returns>
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-064</name>
+    </assembly>
+    <members>
+        <member name="T:Test">
+            <returns>A <see cref="T:System.Collections.Generic.IList`1"/>.</returns>
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-065-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-065-ref.xml
@@ -1,14 +1,14 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-065</name>
-    </assembly>
-    <members>
-        <member name="T:Test">
-            <seealso cref="M:Test.#ctor(System.Byte*)"/>
-        </member>
-        <member name="M:Test.#ctor(System.Byte*)">
-            Start
-        </member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-065</name>
+    </assembly>
+    <members>
+        <member name="T:Test">
+            <seealso cref="M:Test.#ctor(System.Byte*)"/>
+        </member>
+        <member name="M:Test.#ctor(System.Byte*)">
+            Start
+        </member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tests/test-xml-066-ref.xml
+++ mono-4.6.2.7+dfsg/mcs/tests/test-xml-066-ref.xml
@@ -1,10 +1,10 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>test-xml-066</name>
-    </assembly>
-    <members>
-        <member name="M:C.Foo2``1(System.Int32,``0)">
-            <seealso cref="M:C.Foo``2(System.Int32,``0,``1[])" /></member>
-    </members>
-</doc>
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-066</name>
+    </assembly>
+    <members>
+        <member name="M:C.Foo2``1(System.Int32,``0)">
+            <seealso cref="M:C.Foo``2(System.Int32,``0,``1[])" /></member>
+    </members>
+</doc>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/compiler-tester/xmldocdiff.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/compiler-tester/xmldocdiff.cs
@@ -1,140 +1,140 @@
-//
-// xmldocdiff.cs
-//
-// Author:
-//   Marek Safar (marek.safar@gmail.com)
-//
-// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-#if !NET_2_1
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Xml;
-using System.Linq;
-
-public class XmlComparer
-{
-	public class ComparisonException : Exception
-	{
-		public ComparisonException (string message)
-			: base (message)
-		{
-		}
-	}
-
-	static readonly bool debug = false;
-	readonly string start;
-
-	public XmlComparer (string startNode)
-	{
-		this.start = "/" + startNode;
-	}
-
-	public void Compare (string reference, string output)
-	{
-		XmlDocument doc1 = new XmlDocument ();
-		doc1.Load (reference);
-		XmlDocument doc2 = new XmlDocument ();
-		doc2.Load (output);
-
-		var memberList1 = doc1.SelectSingleNode (start);
-		var memberList2 = doc2.SelectSingleNode (start);
-
-		CompareNodes (memberList1, memberList2);
-	}
-
-	static bool CompareNodes (XmlNode reference, XmlNode output)
-	{
-		List<Tuple<string, XmlNode>> ref_nodes = new List<Tuple<string, XmlNode>> ();
-		foreach (XmlNode node in reference.ChildNodes) {
-			if (node.NodeType == XmlNodeType.Comment)
-				continue;
-
-			ref_nodes.Add (Tuple.Create (node.Name, node));
-		}
-
-		foreach (XmlNode node in output.ChildNodes) {
-			if (node.NodeType == XmlNodeType.Comment)
-				continue;
-
-			Tuple<string, XmlNode> found = null;
-			foreach (var entry in ref_nodes.Where (l => l.Item1 == node.Name)) {
-				if (node.Attributes == null) {
-					if (node.Attributes != entry.Item2.Attributes)
-						continue;
-				} else {
-					List<XmlAttribute> attrs = node.Attributes.Cast<XmlAttribute> ().ToList ();
-					XmlAttribute missing = null;
-					foreach (XmlAttribute attr in entry.Item2.Attributes) {
-						var match = attrs.Find (l => l.Name == attr.Name);
-						if (match == null) {
-							missing = attr;
-							break;
-						}
-
-						if (match.Value == attr.Value)
-							attrs.Remove (match);
-					}
-
-					if (missing != null || attrs.Count > 0) {
-						continue;
-					}
-				}
-
-				if (node.HasChildNodes != entry.Item2.HasChildNodes)
-					continue;
-
-				if (!node.HasChildNodes || CompareNodes (node, entry.Item2)) {
-					found = entry;
-					break;
-				}
-			}
-
-			if (found == null) {
-				Report ("Expected node: " + node.OuterXml);
-				return false;
-			}
-
-			ref_nodes.Remove (found);
-		}
-
-		if (ref_nodes.Count > 0) {
-			Report ("Unexpected node: " + ref_nodes[0].Item2.OuterXml);
-			return false;
-		}
-
-		return true;
-	}
-
-	static void Report (string format, params object[] args)
-	{
-		if (debug)
-			Console.WriteLine (format, args);
-		else
-			throw new ComparisonException (String.Format (format, args));
-	}
-}
-
+// xmldocdiff.cs
+//
+// Author:
+//   Marek Safar (marek.safar@gmail.com)
+//
+// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !NET_2_1
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Xml;
+using System.Linq;
+
+public class XmlComparer
+{
+	public class ComparisonException : Exception
+	{
+		public ComparisonException (string message)
+			: base (message)
+		{
+		}
+	}
+
+	static readonly bool debug = false;
+	readonly string start;
+
+	public XmlComparer (string startNode)
+	{
+		this.start = "/" + startNode;
+	}
+
+	public void Compare (string reference, string output)
+	{
+		XmlDocument doc1 = new XmlDocument ();
+		doc1.Load (reference);
+		XmlDocument doc2 = new XmlDocument ();
+		doc2.Load (output);
+
+		var memberList1 = doc1.SelectSingleNode (start);
+		var memberList2 = doc2.SelectSingleNode (start);
+
+		CompareNodes (memberList1, memberList2);
+	}
+
+	static bool CompareNodes (XmlNode reference, XmlNode output)
+	{
+		List<Tuple<string, XmlNode>> ref_nodes = new List<Tuple<string, XmlNode>> ();
+		foreach (XmlNode node in reference.ChildNodes) {
+			if (node.NodeType == XmlNodeType.Comment)
+				continue;
+
+			ref_nodes.Add (Tuple.Create (node.Name, node));
+		}
+
+		foreach (XmlNode node in output.ChildNodes) {
+			if (node.NodeType == XmlNodeType.Comment)
+				continue;
+
+			Tuple<string, XmlNode> found = null;
+			foreach (var entry in ref_nodes.Where (l => l.Item1 == node.Name)) {
+				if (node.Attributes == null) {
+					if (node.Attributes != entry.Item2.Attributes)
+						continue;
+				} else {
+					List<XmlAttribute> attrs = node.Attributes.Cast<XmlAttribute> ().ToList ();
+					XmlAttribute missing = null;
+					foreach (XmlAttribute attr in entry.Item2.Attributes) {
+						var match = attrs.Find (l => l.Name == attr.Name);
+						if (match == null) {
+							missing = attr;
+							break;
+						}
+
+						if (match.Value == attr.Value)
+							attrs.Remove (match);
+					}
+
+					if (missing != null || attrs.Count > 0) {
+						continue;
+					}
+				}
+
+				if (node.HasChildNodes != entry.Item2.HasChildNodes)
+					continue;
+
+				if (!node.HasChildNodes || CompareNodes (node, entry.Item2)) {
+					found = entry;
+					break;
+				}
+			}
+
+			if (found == null) {
+				Report ("Expected node: " + node.OuterXml);
+				return false;
+			}
+
+			ref_nodes.Remove (found);
+		}
+
+		if (ref_nodes.Count > 0) {
+			Report ("Unexpected node: " + ref_nodes[0].Item2.OuterXml);
+			return false;
+		}
+
+		return true;
+	}
+
+	static void Report (string format, params object[] args)
+	{
+		if (debug)
+			Console.WriteLine (format, args);
+		else
+			throw new ComparisonException (String.Format (format, args));
+	}
+}
+
 #endif
--- mono-4.6.2.7+dfsg.orig/mcs/tools/ictool/depgraph.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/ictool/depgraph.cs
@@ -1,69 +1,69 @@
-//
-// file:	depgraph.cs
-// author:	Dan Lewis (dihlewis@yahoo.co.uk)
-// 		(C) 2002
-//
-
-using System;
-using System.Collections;
-
-class DependencyGraph {
-	public DependencyGraph () {
-		nodes = new Hashtable ();
-	}
-
-	public void AddNode (object o) {
-		if (!nodes.Contains (o))
-			nodes.Add (o, new Node (o));
-	}
-
-	public void AddEdge (object from, object to) {
-		if (!nodes.Contains (from))
-			AddNode (from);
-		if (!nodes.Contains (to))
-			AddNode (from);
-
-		Node from_node = (Node)nodes[from];
-		Node to_node = (Node)nodes[to];
-
-		from_node.edges.Add (to_node);
-	}
-
-	public IList TopologicalSort () {
-		foreach (Node node in nodes.Values)
-			node.marked = false;
-
-		IList list = new ArrayList ();
-		foreach (Node node in nodes.Values) {
-			if (!node.marked)
-				Visit (node, list);
-		}
-
-		return list;
-	}
-
-	// private
-
-	private void Visit (Node node, IList list) {
-		node.marked = true;
-		foreach (Node adj in node.edges) {
-			if (!adj.marked)
-				Visit (adj, list);
-		}
-
-		list.Insert (0, node.value);
-	}
-
-	private class Node {
-		public Node (object o) {
-			this.value = o;
-			this.edges = new ArrayList ();
-		}
-
-		public object value;
-		public ArrayList edges;
-		public bool marked;
-	}
-
-	private Hashtable nodes;
-}
+//
+// file:	depgraph.cs
+// author:	Dan Lewis (dihlewis@yahoo.co.uk)
+// 		(C) 2002
+//
+
+using System;
+using System.Collections;
+
+class DependencyGraph {
+	public DependencyGraph () {
+		nodes = new Hashtable ();
+	}
+
+	public void AddNode (object o) {
+		if (!nodes.Contains (o))
+			nodes.Add (o, new Node (o));
+	}
+
+	public void AddEdge (object from, object to) {
+		if (!nodes.Contains (from))
+			AddNode (from);
+		if (!nodes.Contains (to))
+			AddNode (from);
+
+		Node from_node = (Node)nodes[from];
+		Node to_node = (Node)nodes[to];
+
+		from_node.edges.Add (to_node);
+	}
+
+	public IList TopologicalSort () {
+		foreach (Node node in nodes.Values)
+			node.marked = false;
+
+		IList list = new ArrayList ();
+		foreach (Node node in nodes.Values) {
+			if (!node.marked)
+				Visit (node, list);
+		}
+
+		return list;
+	}
+
+	// private
+
+	private void Visit (Node node, IList list) {
+		node.marked = true;
+		foreach (Node adj in node.edges) {
+			if (!adj.marked)
+				Visit (adj, list);
+		}
+
+		list.Insert (0, node.value);
+	}
+
+	private class Node {
+		public Node (object o) {
+			this.value = o;
+			this.edges = new ArrayList ();
+		}
+
+		public object value;
+		public ArrayList edges;
+		public bool marked;
+	}
+
+	private Hashtable nodes;
+}
--- mono-4.6.2.7+dfsg.orig/mcs/tools/ictool/ictool-config.xml
+++ mono-4.6.2.7+dfsg/mcs/tools/ictool/ictool-config.xml
@@ -1,105 +1,105 @@
-<config>
-	<!-- assembly inputs -->
-	
-	<assemblypath path="..\..\class\lib"/>
-
-	<assembly file="corlib_cmp.dll"/>
-	<assembly file="System.dll"/>
-
-	<!-- output files -->
-
-	<outputpath path="."/>
-
-	<outputfile name="types" file="icall_types.h">
-		<include><![CDATA[#include "icall.h"]]></include>
-	</outputfile>
-
-	<outputfile name="methods" file="icall_methods.h"/>
-	<outputfile name="map" file="icall_map.c"/>
-
-	<!-- typemap -->
-
-	<typemap>
-		<!-- base types -->
-
-		<namespace name="System">
-
-			<!-- default types are taken from the running assembly -->
-
-			<type name="Object" peer="MonoObject" opaque="true" default="true"/>
-
-			<type name="Void" peer="void" opaque="true" default="true"/>
-			<type name="Boolean" peer="MonoBoolean" opaque="true" default="true"/>
-			<type name="Int64" peer="gint64" opaque="true" default="true"/>
-			<type name="Int32" peer="gint32" opaque="true" default="true"/>
-			<type name="Int16" peer="gint16" opaque="true" default="true"/>
-			<type name="Byte" peer="gint8" opaque="true" default="true"/>
-			<type name="UInt64" peer="guint64" opaque="true" default="true"/>
-			<type name="UInt32" peer="guint32" opaque="true" default="true"/>
-			<type name="UInt16" peer="guint16" opaque="true" default="true"/>
-			<type name="SByte" peer="guint8" opaque="true" default="true"/>
-			<type name="IntPtr" peer="gpointer" opaque="true" default="true"/>
-			<type name="UIntPtr" peer="gpointer" opaque="true" default="true"/>
-			<type name="Single" peer="gfloat" opaque="true" default="true"/>
-			<type name="Double" peer="gdouble" opaque="true" default="true"/>
-			<type name="Char" peer="gunichar2" opaque="true" default="true"/>
-			<type name="Array" peer="MonoArray" opaque="true" default="true"/>
-
-			<!-- non-defaulting system types -->
-
-			<type name="Decimal" peer="decimal_repr" opaque="true"/>
-			<type name="String" peer="MonoString" opaque="true"/>
-
-		</namespace>
-
-		<!-- reflection types -->
-
-		<namespace name="System">
-			<type name="RuntimeTypeHandle" peer="MonoType *" opaque="true"/>
-			<type name="RuntimeMethodHandle" peer="MonoMethod *" opaque="true"/>
-			<type name="RuntimeFieldHandle" peer="MonoClassField *" opaque="true"/>
-
-			<type name="Type" peer="MonoReflectionType"/>
-			<type name="MonoTypeInfo" peer="MonoTypeInfo"/>
-			<type name="MonoEnumInfo" peer="MonoEnumInfo"/>
-		</namespace>
-
-		<namespace name="System.Reflection">
-			<type name="MonoMethod" peer="MonoReflectionMethod"/>
-			<type name="MonoField" peer="MonoReflectionField"/>
-			<type name="MonoFieldInfo" peer="MonoFieldInfo"/>
-			<type name="MonoProperty" peer="MonoReflectionProperty"/>
-			<type name="ParameterInfo" peer="MonoParameterInfo"/>
-			<type name="MonoMethodInfo" peer="MonoMethodInfo"/>
-			<type name="MonoPropertyInfo" peer="MonoPropertyInfo"/>
-			<type name="Assembly" peer="MonoReflectionAssembly"/>
-			<type name="Module" peer="MonoReflectionModule"/>
-			<type name="AssemblyName" peer="MonoReflectionAssemblyName"/>
-		</namespace>
-
-		<namespace name="System.Reflection.Emit">
-			<type name="ILGenerator" peer="MonoReflectionILGen"/>
-			<type name="ILExceptionInfo" peer="MonoILExceptionInfo"/>
-			<type name="ILExceptionBlock" peer="MonoILExceptionBlock"/>
-			<type name="LocalBuilder" peer="MonoReflectionLocalBuilder"/>
-			<type name="ParameterBuilder" peer="MonoReflectionParamBuilder"/>
-			<type name="ConstructorBuilder" peer="MonoReflectionCtorBuilder"/>
-			<type name="MethodBuilder" peer="MonoReflectionMethodBuilder"/>
-			<type name="FieldBuilder" peer="MonoReflectionFieldBuilder"/>
-			<type name="PropertyBuilder" peer="MonoReflectionPropertyBuilder"/>
-			<type name="ModuleBuilder" peer="MonoReflectionModuleBuilder"/>
-			<type name="TypeBuilder" peer="MonoReflectionTypeBuilder"/>
-			<type name="Label" peer="MonoReflectionLabel"/>
-		</namespace>
-
-		<!-- enumerations -->
-
-		<namespace name="System.Net.Sockets">
-			<type name="SocketType" peer="MonoSocketType"/>
-			<type name="AddressFamily" peer="MonoAddressFamily"/>
-			<type name="ProtocolType" peer="MonoProtocolType"/>
-			<type name="SocketOptionLevel" peer="MonoSocketOptionLevel"/>
-			<type name="SocketOptionName" peer="MonoSocketOptionName"/>
-		</namespace>
-	</typemap>
-</config>
+<config>
+	<!-- assembly inputs -->
+	
+	<assemblypath path="..\..\class\lib"/>
+
+	<assembly file="corlib_cmp.dll"/>
+	<assembly file="System.dll"/>
+
+	<!-- output files -->
+
+	<outputpath path="."/>
+
+	<outputfile name="types" file="icall_types.h">
+		<include><![CDATA[#include "icall.h"]]></include>
+	</outputfile>
+
+	<outputfile name="methods" file="icall_methods.h"/>
+	<outputfile name="map" file="icall_map.c"/>
+
+	<!-- typemap -->
+
+	<typemap>
+		<!-- base types -->
+
+		<namespace name="System">
+
+			<!-- default types are taken from the running assembly -->
+
+			<type name="Object" peer="MonoObject" opaque="true" default="true"/>
+
+			<type name="Void" peer="void" opaque="true" default="true"/>
+			<type name="Boolean" peer="MonoBoolean" opaque="true" default="true"/>
+			<type name="Int64" peer="gint64" opaque="true" default="true"/>
+			<type name="Int32" peer="gint32" opaque="true" default="true"/>
+			<type name="Int16" peer="gint16" opaque="true" default="true"/>
+			<type name="Byte" peer="gint8" opaque="true" default="true"/>
+			<type name="UInt64" peer="guint64" opaque="true" default="true"/>
+			<type name="UInt32" peer="guint32" opaque="true" default="true"/>
+			<type name="UInt16" peer="guint16" opaque="true" default="true"/>
+			<type name="SByte" peer="guint8" opaque="true" default="true"/>
+			<type name="IntPtr" peer="gpointer" opaque="true" default="true"/>
+			<type name="UIntPtr" peer="gpointer" opaque="true" default="true"/>
+			<type name="Single" peer="gfloat" opaque="true" default="true"/>
+			<type name="Double" peer="gdouble" opaque="true" default="true"/>
+			<type name="Char" peer="gunichar2" opaque="true" default="true"/>
+			<type name="Array" peer="MonoArray" opaque="true" default="true"/>
+
+			<!-- non-defaulting system types -->
+
+			<type name="Decimal" peer="decimal_repr" opaque="true"/>
+			<type name="String" peer="MonoString" opaque="true"/>
+
+		</namespace>
+
+		<!-- reflection types -->
+
+		<namespace name="System">
+			<type name="RuntimeTypeHandle" peer="MonoType *" opaque="true"/>
+			<type name="RuntimeMethodHandle" peer="MonoMethod *" opaque="true"/>
+			<type name="RuntimeFieldHandle" peer="MonoClassField *" opaque="true"/>
+
+			<type name="Type" peer="MonoReflectionType"/>
+			<type name="MonoTypeInfo" peer="MonoTypeInfo"/>
+			<type name="MonoEnumInfo" peer="MonoEnumInfo"/>
+		</namespace>
+
+		<namespace name="System.Reflection">
+			<type name="MonoMethod" peer="MonoReflectionMethod"/>
+			<type name="MonoField" peer="MonoReflectionField"/>
+			<type name="MonoFieldInfo" peer="MonoFieldInfo"/>
+			<type name="MonoProperty" peer="MonoReflectionProperty"/>
+			<type name="ParameterInfo" peer="MonoParameterInfo"/>
+			<type name="MonoMethodInfo" peer="MonoMethodInfo"/>
+			<type name="MonoPropertyInfo" peer="MonoPropertyInfo"/>
+			<type name="Assembly" peer="MonoReflectionAssembly"/>
+			<type name="Module" peer="MonoReflectionModule"/>
+			<type name="AssemblyName" peer="MonoReflectionAssemblyName"/>
+		</namespace>
+
+		<namespace name="System.Reflection.Emit">
+			<type name="ILGenerator" peer="MonoReflectionILGen"/>
+			<type name="ILExceptionInfo" peer="MonoILExceptionInfo"/>
+			<type name="ILExceptionBlock" peer="MonoILExceptionBlock"/>
+			<type name="LocalBuilder" peer="MonoReflectionLocalBuilder"/>
+			<type name="ParameterBuilder" peer="MonoReflectionParamBuilder"/>
+			<type name="ConstructorBuilder" peer="MonoReflectionCtorBuilder"/>
+			<type name="MethodBuilder" peer="MonoReflectionMethodBuilder"/>
+			<type name="FieldBuilder" peer="MonoReflectionFieldBuilder"/>
+			<type name="PropertyBuilder" peer="MonoReflectionPropertyBuilder"/>
+			<type name="ModuleBuilder" peer="MonoReflectionModuleBuilder"/>
+			<type name="TypeBuilder" peer="MonoReflectionTypeBuilder"/>
+			<type name="Label" peer="MonoReflectionLabel"/>
+		</namespace>
+
+		<!-- enumerations -->
+
+		<namespace name="System.Net.Sockets">
+			<type name="SocketType" peer="MonoSocketType"/>
+			<type name="AddressFamily" peer="MonoAddressFamily"/>
+			<type name="ProtocolType" peer="MonoProtocolType"/>
+			<type name="SocketOptionLevel" peer="MonoSocketOptionLevel"/>
+			<type name="SocketOptionName" peer="MonoSocketOptionName"/>
+		</namespace>
+	</typemap>
+</config>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/ictool/ictool.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/ictool/ictool.cs
@@ -1,428 +1,428 @@
-//
-// file:	ictool.cs
-// author:	Dan Lewis (dihlewis@yahoo.co.uk)
-// 		(C) 2002
-//
-// description:
-//
-// Tool for generating C prototypes and structures suitable for use by the runtime
-// from a list of supplied assemblies. See ictool-config.xml for configuration details.
-//
-
-using System;
-using System.IO;
-using System.Xml;
-using System.Reflection;
-using System.Collections;
-
-public class ICTool {
-	public static void Main (string[] args) {
-		string filename = "ictool-config.xml";
-		if (args.Length == 1) {
-			filename = args[0];
-		}
-		else if (args.Length > 1) {
-			Console.Error.WriteLine ("Usage: ictool.exe [config.xml]");
-			Environment.Exit (-1);
-		}
-
-		try {
-			Stream config = File.OpenRead (filename);
-			Configure (config);
-		}
-		catch (Exception e) {
-			Console.Error.WriteLine ("Error: could not read configuration file.");
-			Console.Error.WriteLine (e);
-			Environment.Exit (-1);
-		}
-
-		EmitPrototypes ();
-		EmitStructures ();
-	}
-
-	// private
-
-	private static void EmitPrototypes () {
-		StreamWriter methods_file = GetOutputFile ("methods");
-		StreamWriter map_file = GetOutputFile ("map");
-
-		// includes
-
-		methods_file.WriteLine ("#include \"{0}\"\n", output_files["types"]);
-		map_file.WriteLine ("#include \"{0}\"\n", output_files["methods"]);
-
-		map_file.Write (
-			"static gpointer icall_map [] = {\n\t"
-		);
-
-		ArrayList map_lines = new ArrayList ();
-
-		BindingFlags binding =
-			BindingFlags.DeclaredOnly |
-			BindingFlags.Instance |
-			BindingFlags.Static |
-			BindingFlags.Public |
-			BindingFlags.NonPublic;
-
-		foreach (Type type in types.Values) {
-			bool has_icall = false;
-			MethodInfo[] methods = type.GetMethods (binding);
-
-			foreach (MethodInfo method in methods) {
-				if (IsInternalCall (method)) {
-					has_icall = true;
-					break;
-				}
-			}
-
-			if (!has_icall)
-				continue;
-
-			methods_file.WriteLine ("\n/* {0} */\n", type.FullName);
-			//map_lines.Add (String.Format ("\n/* {0} */\n", type.FullName));
-			
-			foreach (MethodInfo method in methods) {
-				if (!IsInternalCall (method))
-					continue;
-
-				// function name
-
-				string func_name = String.Format ("ves_icall_{0}_{1}",
-					
-					type.FullName,
-					method.Name
-				);
-
-				func_name = func_name.Replace ('.', '_');
-
-				// map file
-
-				map_lines.Add (String.Format (
-					"\"{0}::{1}\", {2}",
-
-					type.FullName.Replace ('.', '_'),
-					method.Name,
-					func_name
-				));
-
-				// methods file
-
-				ArrayList args = new ArrayList ();
-
-				// FIXME: return types that are structs need to be inserted
-				// into the argument list as a destination pointer
-
-				// object/value instance pointer
-				
-				if (IsInstanceMethod (method)) {
-					args.Add (String.Format (
-						"{0}{1}",
-
-						peer_map.GetPeer (method.DeclaringType).GetTypedef (1),
-						"this"
-					));
-				}
-
-				// arguments
-
-				foreach (ParameterInfo param in method.GetParameters ()) {
-					Type arg_type = param.ParameterType;
-
-					int refs = 0;
-					if (arg_type.IsByRef) {
-						arg_type = arg_type.GetElementType ();
-						++ refs;
-					}
-
-					Peer arg_peer = peer_map.GetPeer (arg_type);
-					if (!arg_peer.IsValueType)
-						++ refs;
-
-					args.Add (String.Format ("{0}{1}", arg_peer.GetTypedef (refs), param.Name));
-				}
-
-				Peer ret = peer_map.GetPeer (method.ReturnType);
-				methods_file.WriteLine ("static {0}", ret.GetTypedef (ret.IsValueType ? 0 : 1));
-				methods_file.WriteLine ("{0} ({1});",
-					
-					func_name,
-					Join (", ", args)
-				);
-				methods_file.WriteLine ();
-			}
-
-		}
-
-		methods_file.Close ();
-
-		// write map file and close it
-
-		map_file.Write (
-			"{0}\n}};\n", Join (",\n\t", map_lines)
-		);
-
-		map_file.Close ();
-	}
-
-	private static bool IsInternalCall (MethodInfo meth) {
-		return (meth.GetMethodImplementationFlags () & MethodImplAttributes.InternalCall) != 0;
-	}
-
-	private static bool IsInstanceMethod (MethodInfo meth) {
-		return (meth.CallingConvention & CallingConventions.HasThis) != 0;
-	}
-
-	private static void EmitStructures () {
-		StreamWriter file = GetOutputFile ("types");
-
-		// build dependency graph
-		
-		DependencyGraph dg = new DependencyGraph ();
-		foreach (Peer peer in peer_map.Peers) {
-			dg.AddNode (peer);
-
-			// peer depends on nearest base
-
-			if (peer.NearestBase != null)
-				dg.AddEdge (peer.NearestBase, peer);
-
-			// peer depends on any value types used for fields
-
-			foreach (PeerField field in peer.Fields) {
-				if (field.Peer.IsValueType)
-					dg.AddEdge (field.Peer, peer);
-			}
-		}
-
-		// write structures in order
-
-		foreach (Peer peer in dg.TopologicalSort ()) {
-			if (peer.IsOpaque)
-				continue;
-
-			if (peer.IsEnum) {
-				file.WriteLine ("typedef {0} {1};", peer.UnderlyingPeer.Name, peer.Name);
-				file.WriteLine ("enum _{0} {{", peer.Name);
-
-				ArrayList enum_lines = new ArrayList ();
-				foreach (string name in peer.EnumConstants.Keys) {
-					enum_lines.Add (String.Format ("\t{0}_{1} = {2}",
-						peer.Name,
-						name,
-						peer.EnumConstants[name]
-					));
-				}
-				
-				file.WriteLine ("{0}\n}};\n", Join (",\n", enum_lines));
-			}
-			else {
-				file.WriteLine ("typedef struct _{0} {{", peer.Name);
-
-				// base type
-				
-				if (peer.NearestBase != null) {
-					file.WriteLine ("\t{0} __base;", peer.NearestBase.Name);
-					file.WriteLine ();
-				}
-
-				// fields
-				
-				foreach (PeerField field in peer.Fields) {
-					bool use_struct = true;
-					if (field.Peer.IsValueType || field.Peer.IsOpaque)
-						use_struct = false;
-				
-					file.WriteLine ("\t{0}{1}{2};",
-						use_struct ? "struct _" : "",
-						field.Peer.GetTypedef (field.Peer.IsValueType ? 0 : 1),
-						field.Name
-					);
-				}
-
-				file.WriteLine ("}} {0};\n", peer.Name);
-			}
-		}
-	}
-
-	private static void LoadAssemblies () {
-		types = new Hashtable ();
-
-		foreach (string filename in assemblies) {
-			Assembly assembly;
-
-			// find assembly
-
-			FileInfo info = null;
-			foreach (string path in assembly_paths) {
-				info = new FileInfo (Path.Combine (path, filename));
-				if (info.Exists)
-					break;
-			}
-
-			if (!info.Exists) {
-				Console.Error.WriteLine ("Error: assembly {0} not found.", filename);
-				Environment.Exit (-1);
-			}
-
-			// load assembly
-
-			assembly = Assembly.LoadFrom (info.FullName);
-
-			// load types
-
-			ArrayList loaded_types;
-			
-			try {
-				loaded_types = new ArrayList (assembly.GetTypes ());
-			}
-			catch (ReflectionTypeLoadException e) {
-				loaded_types = new ArrayList ();
-				foreach (Type type in e.Types) {
-					if (type != null)
-						loaded_types.Add (type);
-				}
-
-				foreach (Exception f in e.LoaderExceptions) {
-					if (f is TypeLoadException) {
-						Console.Error.WriteLine ("Warning: {0} could not be loaded from assembly {1}.",
-							((TypeLoadException)f).TypeName,
-							filename
-						);
-					}
-					else
-						Console.Error.WriteLine (f);
-				}
-			}
-
-			// add to type dictionary
-
-			foreach (Type type in loaded_types) {
-				if (!types.Contains (type.FullName))
-					types.Add (type.FullName, type);
-			}
-		}
-	}
-
-	private static void Configure (Stream input) {
-		XmlDocument doc = new XmlDocument ();
-		doc.Load (input);
-
-		// assemblies
-
-		assembly_paths = new ArrayList ();
-		assembly_paths.Add (".");
-
-		foreach (XmlNode node in doc.SelectNodes ("config/assemblypath")) {
-			assembly_paths.Add (node.Attributes["path"].Value);
-		}
-
-		assemblies = new ArrayList ();
-		foreach (XmlNode node in doc.SelectNodes ("config/assembly")) {
-			assemblies.Add (node.Attributes["file"].Value);
-		}
-
-		LoadAssemblies ();
-
-		// outputfiles
-
-		output_path = ".";
-		XmlNode path_node = doc.SelectSingleNode ("config/outputpath");
-		if (path_node != null)
-			output_path = path_node.Attributes["path"].Value;
-
-		output_files = new Hashtable ();
-		output_includes = new Hashtable ();
-		foreach (XmlNode node in doc.SelectNodes ("config/outputfile")) {
-			string name = node.Attributes["name"].Value;
-			output_files.Add (name, node.Attributes["file"].Value);
-
-			foreach (XmlNode child in node.ChildNodes) {
-				if (child.Name == "include")
-					output_includes[name] = child.InnerText;
-			}
-		}
-
-		// typemap
-
-		peer_map = new PeerMap ();
-		foreach (XmlNode node in doc.SelectNodes ("config/typemap/namespace")) {
-			string ns = node.Attributes["name"].Value;
-
-			foreach (XmlNode child in node.ChildNodes) {
-				if (child.Name == "type") {
-					string name = child.Attributes["name"].Value;
-					string peer_name = child.Attributes["peer"].Value;
-
-					bool opaque = false;
-					if (child.Attributes["opaque"] != null && child.Attributes["opaque"].Value == "true")
-						opaque = true;
-
-					String fullname = String.Format ("{0}.{1}", ns, name);
-					
-					Type type;
-					if (child.Attributes["default"] != null && child.Attributes["default"].Value == "true")
-						type = Type.GetType (fullname);
-					else
-						type = (Type)types [fullname];
-
-					if (type != null)
-						peer_map.Add (new Peer (type, peer_name, opaque));
-				}
-			}
-		}
-
-		peer_map.ResolvePeers ();
-	}
-
-	private static StreamWriter GetOutputFile (string name) {
-		string filename = Path.Combine (output_path, (string)output_files[name]);
-		StreamWriter file = File.CreateText (filename);
-		file.AutoFlush = true;
-
-		file.Write (
-
-// (verbatim string)
-		
-@"/**
- *  {0}
- *
- *  This file was automatically generated on {1} by ictool.exe from
- *  the following assemblies:
- *    {2}
- */
- 
-",
-
-			output_files[name],
-			DateTime.Now.ToString ("d"),
-			Join (", ", assemblies)
-		);
-
-		if (output_includes.Contains (name)) {
-			file.WriteLine (output_includes [name]);
-			file.WriteLine ();
-		}
-
-		return file;
-	}
-
-	private static string Join (string separator, ICollection values) {
-		// note to microsoft: please implement this in String :)
-
-		string[] strs = new string[values.Count];
-
-		int i = 0;
-		foreach (object value in values)
-			strs[i ++] = value.ToString ();
-
-		return String.Join (separator, strs);
-	}
-	
-	private static ArrayList assembly_paths;
-	private static ArrayList assemblies;
-	private static string output_path;
-	private static Hashtable output_files;
-	private static Hashtable output_includes;
-	private static PeerMap peer_map;
-	private static Hashtable types;
-}
+//
+// file:	ictool.cs
+// author:	Dan Lewis (dihlewis@yahoo.co.uk)
+// 		(C) 2002
+//
+// description:
+//
+// Tool for generating C prototypes and structures suitable for use by the runtime
+// from a list of supplied assemblies. See ictool-config.xml for configuration details.
+//
+
+using System;
+using System.IO;
+using System.Xml;
+using System.Reflection;
+using System.Collections;
+
+public class ICTool {
+	public static void Main (string[] args) {
+		string filename = "ictool-config.xml";
+		if (args.Length == 1) {
+			filename = args[0];
+		}
+		else if (args.Length > 1) {
+			Console.Error.WriteLine ("Usage: ictool.exe [config.xml]");
+			Environment.Exit (-1);
+		}
+
+		try {
+			Stream config = File.OpenRead (filename);
+			Configure (config);
+		}
+		catch (Exception e) {
+			Console.Error.WriteLine ("Error: could not read configuration file.");
+			Console.Error.WriteLine (e);
+			Environment.Exit (-1);
+		}
+
+		EmitPrototypes ();
+		EmitStructures ();
+	}
+
+	// private
+
+	private static void EmitPrototypes () {
+		StreamWriter methods_file = GetOutputFile ("methods");
+		StreamWriter map_file = GetOutputFile ("map");
+
+		// includes
+
+		methods_file.WriteLine ("#include \"{0}\"\n", output_files["types"]);
+		map_file.WriteLine ("#include \"{0}\"\n", output_files["methods"]);
+
+		map_file.Write (
+			"static gpointer icall_map [] = {\n\t"
+		);
+
+		ArrayList map_lines = new ArrayList ();
+
+		BindingFlags binding =
+			BindingFlags.DeclaredOnly |
+			BindingFlags.Instance |
+			BindingFlags.Static |
+			BindingFlags.Public |
+			BindingFlags.NonPublic;
+
+		foreach (Type type in types.Values) {
+			bool has_icall = false;
+			MethodInfo[] methods = type.GetMethods (binding);
+
+			foreach (MethodInfo method in methods) {
+				if (IsInternalCall (method)) {
+					has_icall = true;
+					break;
+				}
+			}
+
+			if (!has_icall)
+				continue;
+
+			methods_file.WriteLine ("\n/* {0} */\n", type.FullName);
+			//map_lines.Add (String.Format ("\n/* {0} */\n", type.FullName));
+			
+			foreach (MethodInfo method in methods) {
+				if (!IsInternalCall (method))
+					continue;
+
+				// function name
+
+				string func_name = String.Format ("ves_icall_{0}_{1}",
+					
+					type.FullName,
+					method.Name
+				);
+
+				func_name = func_name.Replace ('.', '_');
+
+				// map file
+
+				map_lines.Add (String.Format (
+					"\"{0}::{1}\", {2}",
+
+					type.FullName.Replace ('.', '_'),
+					method.Name,
+					func_name
+				));
+
+				// methods file
+
+				ArrayList args = new ArrayList ();
+
+				// FIXME: return types that are structs need to be inserted
+				// into the argument list as a destination pointer
+
+				// object/value instance pointer
+				
+				if (IsInstanceMethod (method)) {
+					args.Add (String.Format (
+						"{0}{1}",
+
+						peer_map.GetPeer (method.DeclaringType).GetTypedef (1),
+						"this"
+					));
+				}
+
+				// arguments
+
+				foreach (ParameterInfo param in method.GetParameters ()) {
+					Type arg_type = param.ParameterType;
+
+					int refs = 0;
+					if (arg_type.IsByRef) {
+						arg_type = arg_type.GetElementType ();
+						++ refs;
+					}
+
+					Peer arg_peer = peer_map.GetPeer (arg_type);
+					if (!arg_peer.IsValueType)
+						++ refs;
+
+					args.Add (String.Format ("{0}{1}", arg_peer.GetTypedef (refs), param.Name));
+				}
+
+				Peer ret = peer_map.GetPeer (method.ReturnType);
+				methods_file.WriteLine ("static {0}", ret.GetTypedef (ret.IsValueType ? 0 : 1));
+				methods_file.WriteLine ("{0} ({1});",
+					
+					func_name,
+					Join (", ", args)
+				);
+				methods_file.WriteLine ();
+			}
+
+		}
+
+		methods_file.Close ();
+
+		// write map file and close it
+
+		map_file.Write (
+			"{0}\n}};\n", Join (",\n\t", map_lines)
+		);
+
+		map_file.Close ();
+	}
+
+	private static bool IsInternalCall (MethodInfo meth) {
+		return (meth.GetMethodImplementationFlags () & MethodImplAttributes.InternalCall) != 0;
+	}
+
+	private static bool IsInstanceMethod (MethodInfo meth) {
+		return (meth.CallingConvention & CallingConventions.HasThis) != 0;
+	}
+
+	private static void EmitStructures () {
+		StreamWriter file = GetOutputFile ("types");
+
+		// build dependency graph
+		
+		DependencyGraph dg = new DependencyGraph ();
+		foreach (Peer peer in peer_map.Peers) {
+			dg.AddNode (peer);
+
+			// peer depends on nearest base
+
+			if (peer.NearestBase != null)
+				dg.AddEdge (peer.NearestBase, peer);
+
+			// peer depends on any value types used for fields
+
+			foreach (PeerField field in peer.Fields) {
+				if (field.Peer.IsValueType)
+					dg.AddEdge (field.Peer, peer);
+			}
+		}
+
+		// write structures in order
+
+		foreach (Peer peer in dg.TopologicalSort ()) {
+			if (peer.IsOpaque)
+				continue;
+
+			if (peer.IsEnum) {
+				file.WriteLine ("typedef {0} {1};", peer.UnderlyingPeer.Name, peer.Name);
+				file.WriteLine ("enum _{0} {{", peer.Name);
+
+				ArrayList enum_lines = new ArrayList ();
+				foreach (string name in peer.EnumConstants.Keys) {
+					enum_lines.Add (String.Format ("\t{0}_{1} = {2}",
+						peer.Name,
+						name,
+						peer.EnumConstants[name]
+					));
+				}
+				
+				file.WriteLine ("{0}\n}};\n", Join (",\n", enum_lines));
+			}
+			else {
+				file.WriteLine ("typedef struct _{0} {{", peer.Name);
+
+				// base type
+				
+				if (peer.NearestBase != null) {
+					file.WriteLine ("\t{0} __base;", peer.NearestBase.Name);
+					file.WriteLine ();
+				}
+
+				// fields
+				
+				foreach (PeerField field in peer.Fields) {
+					bool use_struct = true;
+					if (field.Peer.IsValueType || field.Peer.IsOpaque)
+						use_struct = false;
+				
+					file.WriteLine ("\t{0}{1}{2};",
+						use_struct ? "struct _" : "",
+						field.Peer.GetTypedef (field.Peer.IsValueType ? 0 : 1),
+						field.Name
+					);
+				}
+
+				file.WriteLine ("}} {0};\n", peer.Name);
+			}
+		}
+	}
+
+	private static void LoadAssemblies () {
+		types = new Hashtable ();
+
+		foreach (string filename in assemblies) {
+			Assembly assembly;
+
+			// find assembly
+
+			FileInfo info = null;
+			foreach (string path in assembly_paths) {
+				info = new FileInfo (Path.Combine (path, filename));
+				if (info.Exists)
+					break;
+			}
+
+			if (!info.Exists) {
+				Console.Error.WriteLine ("Error: assembly {0} not found.", filename);
+				Environment.Exit (-1);
+			}
+
+			// load assembly
+
+			assembly = Assembly.LoadFrom (info.FullName);
+
+			// load types
+
+			ArrayList loaded_types;
+			
+			try {
+				loaded_types = new ArrayList (assembly.GetTypes ());
+			}
+			catch (ReflectionTypeLoadException e) {
+				loaded_types = new ArrayList ();
+				foreach (Type type in e.Types) {
+					if (type != null)
+						loaded_types.Add (type);
+				}
+
+				foreach (Exception f in e.LoaderExceptions) {
+					if (f is TypeLoadException) {
+						Console.Error.WriteLine ("Warning: {0} could not be loaded from assembly {1}.",
+							((TypeLoadException)f).TypeName,
+							filename
+						);
+					}
+					else
+						Console.Error.WriteLine (f);
+				}
+			}
+
+			// add to type dictionary
+
+			foreach (Type type in loaded_types) {
+				if (!types.Contains (type.FullName))
+					types.Add (type.FullName, type);
+			}
+		}
+	}
+
+	private static void Configure (Stream input) {
+		XmlDocument doc = new XmlDocument ();
+		doc.Load (input);
+
+		// assemblies
+
+		assembly_paths = new ArrayList ();
+		assembly_paths.Add (".");
+
+		foreach (XmlNode node in doc.SelectNodes ("config/assemblypath")) {
+			assembly_paths.Add (node.Attributes["path"].Value);
+		}
+
+		assemblies = new ArrayList ();
+		foreach (XmlNode node in doc.SelectNodes ("config/assembly")) {
+			assemblies.Add (node.Attributes["file"].Value);
+		}
+
+		LoadAssemblies ();
+
+		// outputfiles
+
+		output_path = ".";
+		XmlNode path_node = doc.SelectSingleNode ("config/outputpath");
+		if (path_node != null)
+			output_path = path_node.Attributes["path"].Value;
+
+		output_files = new Hashtable ();
+		output_includes = new Hashtable ();
+		foreach (XmlNode node in doc.SelectNodes ("config/outputfile")) {
+			string name = node.Attributes["name"].Value;
+			output_files.Add (name, node.Attributes["file"].Value);
+
+			foreach (XmlNode child in node.ChildNodes) {
+				if (child.Name == "include")
+					output_includes[name] = child.InnerText;
+			}
+		}
+
+		// typemap
+
+		peer_map = new PeerMap ();
+		foreach (XmlNode node in doc.SelectNodes ("config/typemap/namespace")) {
+			string ns = node.Attributes["name"].Value;
+
+			foreach (XmlNode child in node.ChildNodes) {
+				if (child.Name == "type") {
+					string name = child.Attributes["name"].Value;
+					string peer_name = child.Attributes["peer"].Value;
+
+					bool opaque = false;
+					if (child.Attributes["opaque"] != null && child.Attributes["opaque"].Value == "true")
+						opaque = true;
+
+					String fullname = String.Format ("{0}.{1}", ns, name);
+					
+					Type type;
+					if (child.Attributes["default"] != null && child.Attributes["default"].Value == "true")
+						type = Type.GetType (fullname);
+					else
+						type = (Type)types [fullname];
+
+					if (type != null)
+						peer_map.Add (new Peer (type, peer_name, opaque));
+				}
+			}
+		}
+
+		peer_map.ResolvePeers ();
+	}
+
+	private static StreamWriter GetOutputFile (string name) {
+		string filename = Path.Combine (output_path, (string)output_files[name]);
+		StreamWriter file = File.CreateText (filename);
+		file.AutoFlush = true;
+
+		file.Write (
+
+// (verbatim string)
+		
+@"/**
+ *  {0}
+ *
+ *  This file was automatically generated on {1} by ictool.exe from
+ *  the following assemblies:
+ *    {2}
+ */
+ 
+",
+
+			output_files[name],
+			DateTime.Now.ToString ("d"),
+			Join (", ", assemblies)
+		);
+
+		if (output_includes.Contains (name)) {
+			file.WriteLine (output_includes [name]);
+			file.WriteLine ();
+		}
+
+		return file;
+	}
+
+	private static string Join (string separator, ICollection values) {
+		// note to microsoft: please implement this in String :)
+
+		string[] strs = new string[values.Count];
+
+		int i = 0;
+		foreach (object value in values)
+			strs[i ++] = value.ToString ();
+
+		return String.Join (separator, strs);
+	}
+	
+	private static ArrayList assembly_paths;
+	private static ArrayList assemblies;
+	private static string output_path;
+	private static Hashtable output_files;
+	private static Hashtable output_includes;
+	private static PeerMap peer_map;
+	private static Hashtable types;
+}
--- mono-4.6.2.7+dfsg.orig/mcs/tools/ictool/peer.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/ictool/peer.cs
@@ -1,284 +1,284 @@
-//
-// file:	peer.cs
-// author:	Dan Lewis (dihlewis@yahoo.co.uk)
-// 		(C) 2002
-//
-
-using System;
-using System.Reflection;
-using System.Collections;
-
-class Peer {
-	public Peer (Type clr_type, string name, bool is_opaque) {
-		this.clr_type = clr_type;
-		this.name = name;
-		this.is_opaque = is_opaque;
-
-		this.nearest_base = null;	// resolve later
-		this.underlying = null;
-		this.enum_constants = null;
-		this.fields = new PeerFieldCollection ();
-
-		this.is_enum = CLRIsEnum (clr_type);
-		this.is_value_type = CLRIsValueType (clr_type);
-	}
-
-	public string Name {
-		get { return name; }
-	}
-
-	public Type CLRType {
-		get { return clr_type; }
-	}
-
-	public bool IsOpaque {
-		get { return is_opaque; }
-	}
-
-	public bool IsValueType {
-		get { return is_value_type; }
-	}
-
-	public bool IsEnum {
-		get { return is_enum; }
-	}
-
-	public Peer NearestBase {
-		get { return nearest_base; }
-		set { nearest_base = value; }
-	}
-
-	public Peer UnderlyingPeer {
-		get { return underlying; }
-		set { underlying = value; }
-	}
-
-	public IDictionary EnumConstants {
-		get { return enum_constants; }
-		set { enum_constants = value; }
-	}
-
-	public PeerFieldCollection Fields {
-		get { return fields; }
-	}
-
-	public string GetTypedef (int refs) {
-		if (refs == 0)
-			return String.Format ("{0} ", name);
-
-		return String.Format ("{0} {1}", name, new string ('*', refs));
-	}
-
-	// internal
-
-	internal static bool CLRIsValueType (Type clr_type) {
-		return clr_type.IsValueType;
-		/*
-		if (clr_type.BaseType == null)
-			return false;
-	
-		return
-			clr_type.BaseType.FullName == "System.ValueType" ||
-			clr_type.BaseType.FullName == "System.Enum";
-		*/
-	}
-
-	internal static bool CLRIsEnum (Type clr_type) {
-		return clr_type.IsEnum;
-		/*
-		if (clr_type.BaseType == null)
-			return false;
-
-		return clr_type.BaseType.FullName == "System.Enum";
-		*/
-	}
-
-	internal static Type CLRUnderlyingType (Type clr_type) {
-		return Enum.GetUnderlyingType (clr_type);
-		/*
-		Type ebase = type.BaseType;
-
-		return (Type)ebase.InvokeMember ("GetUnderlyingType",
-			BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static,
-			null, null,
-			new object[] { type }
-		);
-		*/
-	}
-
-	// private
-
-	private Type clr_type;
-	private bool is_opaque;
-	private bool is_value_type;
-	private bool is_enum;
-
-	private string name;
-	private Peer nearest_base;
-	private Peer underlying;
-	private IDictionary enum_constants;
-	private PeerFieldCollection fields;
-}
-
-class PeerField {
-	public PeerField (Peer peer, string name) {
-		this.peer = peer;
-		this.name = name;
-	}
-
-	public Peer Peer {
-		get { return peer; }
-	}
-
-	public string Name {
-		get { return name; }
-	}
-
-	private Peer peer;
-	private string name;
-}
-
-class PeerFieldCollection : CollectionBase {
-	public void Add (PeerField f) {
-		List.Add (f);
-	}
-
-	public PeerField this[int i] {
-		get { return (PeerField)List[i]; }
-	}
-}
-
-class PeerMap {
-	public PeerMap () {
-		peers = new Hashtable ();
-	}
-
-	public void Add (Peer peer) {
-		Add (peer.CLRType, peer);
-	}
-
-	public void Add (Type clr_type, Peer peer) {
-		peers.Add (clr_type, peer);
-	}
-
-	public ICollection Peers {
-		get { return peers.Values; }
-	}
-
-	public Peer this[Type clr_type] {
-		get {
-			if (peers.Contains (clr_type))
-				return (Peer)peers[clr_type];
-
-			return null;
-		}
-	}
-
-	public Peer GetPeer (Type clr_type) {
-		Peer peer;
-
-		if (Peer.CLRIsValueType (clr_type)) {
-			peer = this[clr_type];
-			if (peer != null)
-				return peer;
-
-			if (Peer.CLRIsEnum (clr_type)) {
-				peer = this[Peer.CLRUnderlyingType (clr_type)];
-				if (peer != null)
-				return peer;
-
-				throw new ArgumentException ("Could not find peer or underlying peer for enum " + clr_type);
-			}
-			else
-				throw new ArgumentException ("Could not find peer for value type " + clr_type);
-		}
-		else {
-			Type type = clr_type;
-			while (type != null) {
-				peer = this[type];
-				if (peer != null)
-					return peer;
-
-				type = type.BaseType;
-			}
-
-			throw new ArgumentException ("Could not find peer for class " + clr_type);
-		}
-	}
-
-	public void ResolvePeers () {
-		BindingFlags binding =
-			BindingFlags.DeclaredOnly |
-			BindingFlags.Instance |
-			BindingFlags.NonPublic |
-			BindingFlags.Public;
-
-		// base type
-
-		foreach (Peer peer in Peers) {
-			if (peer.IsOpaque || peer.IsValueType || peer.CLRType.BaseType == null)
-				continue;
-
-			peer.NearestBase = GetPeer (peer.CLRType.BaseType);
-			if (peer.NearestBase == null) {
-				Console.Error.WriteLine ("Error: cannot find an internal base type for {0}.", peer.Name);
-				Environment.Exit (-1);
-			}
-		}
-
-		// fields
-
-		foreach (Peer peer in Peers) {
-			if (peer.IsOpaque || peer.IsEnum)
-				continue;
-
-			Type clr_base = null;
-			if (peer.NearestBase != null)
-				clr_base = peer.NearestBase.CLRType;
-
-			Stack declared = new Stack ();
-			Type type = peer.CLRType;
-
-			while (type != clr_base) {
-				declared.Push (type);
-				type = type.BaseType;
-			}
-
-			// build declared field list
-
-			while (declared.Count > 0) {
-				type = (Type)declared.Pop ();
-				foreach (FieldInfo info in type.GetFields (binding)) {
-					PeerField field = new PeerField (
-						GetPeer (info.FieldType),
-						info.Name
-					);
-
-					peer.Fields.Add (field);
-				}
-			}
-		}
-
-		// enums
-
-		foreach (Peer peer in Peers) {
-			if (peer.IsOpaque || !peer.IsEnum)
-				continue;
-
-			Type clr_type = peer.CLRType;
-
-			// constants
-
-			Hashtable constants = new Hashtable ();
-			foreach (string name in Enum.GetNames (clr_type))
-				constants.Add (name, (int)Enum.Parse (clr_type, name));
-
-			peer.UnderlyingPeer = GetPeer (Enum.GetUnderlyingType (clr_type));
-			peer.EnumConstants = constants;
-		}
-	}
-
-	// private
-
-	private Hashtable peers;
-}
+//
+// file:	peer.cs
+// author:	Dan Lewis (dihlewis@yahoo.co.uk)
+// 		(C) 2002
+//
+
+using System;
+using System.Reflection;
+using System.Collections;
+
+class Peer {
+	public Peer (Type clr_type, string name, bool is_opaque) {
+		this.clr_type = clr_type;
+		this.name = name;
+		this.is_opaque = is_opaque;
+
+		this.nearest_base = null;	// resolve later
+		this.underlying = null;
+		this.enum_constants = null;
+		this.fields = new PeerFieldCollection ();
+
+		this.is_enum = CLRIsEnum (clr_type);
+		this.is_value_type = CLRIsValueType (clr_type);
+	}
+
+	public string Name {
+		get { return name; }
+	}
+
+	public Type CLRType {
+		get { return clr_type; }
+	}
+
+	public bool IsOpaque {
+		get { return is_opaque; }
+	}
+
+	public bool IsValueType {
+		get { return is_value_type; }
+	}
+
+	public bool IsEnum {
+		get { return is_enum; }
+	}
+
+	public Peer NearestBase {
+		get { return nearest_base; }
+		set { nearest_base = value; }
+	}
+
+	public Peer UnderlyingPeer {
+		get { return underlying; }
+		set { underlying = value; }
+	}
+
+	public IDictionary EnumConstants {
+		get { return enum_constants; }
+		set { enum_constants = value; }
+	}
+
+	public PeerFieldCollection Fields {
+		get { return fields; }
+	}
+
+	public string GetTypedef (int refs) {
+		if (refs == 0)
+			return String.Format ("{0} ", name);
+
+		return String.Format ("{0} {1}", name, new string ('*', refs));
+	}
+
+	// internal
+
+	internal static bool CLRIsValueType (Type clr_type) {
+		return clr_type.IsValueType;
+		/*
+		if (clr_type.BaseType == null)
+			return false;
+	
+		return
+			clr_type.BaseType.FullName == "System.ValueType" ||
+			clr_type.BaseType.FullName == "System.Enum";
+		*/
+	}
+
+	internal static bool CLRIsEnum (Type clr_type) {
+		return clr_type.IsEnum;
+		/*
+		if (clr_type.BaseType == null)
+			return false;
+
+		return clr_type.BaseType.FullName == "System.Enum";
+		*/
+	}
+
+	internal static Type CLRUnderlyingType (Type clr_type) {
+		return Enum.GetUnderlyingType (clr_type);
+		/*
+		Type ebase = type.BaseType;
+
+		return (Type)ebase.InvokeMember ("GetUnderlyingType",
+			BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static,
+			null, null,
+			new object[] { type }
+		);
+		*/
+	}
+
+	// private
+
+	private Type clr_type;
+	private bool is_opaque;
+	private bool is_value_type;
+	private bool is_enum;
+
+	private string name;
+	private Peer nearest_base;
+	private Peer underlying;
+	private IDictionary enum_constants;
+	private PeerFieldCollection fields;
+}
+
+class PeerField {
+	public PeerField (Peer peer, string name) {
+		this.peer = peer;
+		this.name = name;
+	}
+
+	public Peer Peer {
+		get { return peer; }
+	}
+
+	public string Name {
+		get { return name; }
+	}
+
+	private Peer peer;
+	private string name;
+}
+
+class PeerFieldCollection : CollectionBase {
+	public void Add (PeerField f) {
+		List.Add (f);
+	}
+
+	public PeerField this[int i] {
+		get { return (PeerField)List[i]; }
+	}
+}
+
+class PeerMap {
+	public PeerMap () {
+		peers = new Hashtable ();
+	}
+
+	public void Add (Peer peer) {
+		Add (peer.CLRType, peer);
+	}
+
+	public void Add (Type clr_type, Peer peer) {
+		peers.Add (clr_type, peer);
+	}
+
+	public ICollection Peers {
+		get { return peers.Values; }
+	}
+
+	public Peer this[Type clr_type] {
+		get {
+			if (peers.Contains (clr_type))
+				return (Peer)peers[clr_type];
+
+			return null;
+		}
+	}
+
+	public Peer GetPeer (Type clr_type) {
+		Peer peer;
+
+		if (Peer.CLRIsValueType (clr_type)) {
+			peer = this[clr_type];
+			if (peer != null)
+				return peer;
+
+			if (Peer.CLRIsEnum (clr_type)) {
+				peer = this[Peer.CLRUnderlyingType (clr_type)];
+				if (peer != null)
+				return peer;
+
+				throw new ArgumentException ("Could not find peer or underlying peer for enum " + clr_type);
+			}
+			else
+				throw new ArgumentException ("Could not find peer for value type " + clr_type);
+		}
+		else {
+			Type type = clr_type;
+			while (type != null) {
+				peer = this[type];
+				if (peer != null)
+					return peer;
+
+				type = type.BaseType;
+			}
+
+			throw new ArgumentException ("Could not find peer for class " + clr_type);
+		}
+	}
+
+	public void ResolvePeers () {
+		BindingFlags binding =
+			BindingFlags.DeclaredOnly |
+			BindingFlags.Instance |
+			BindingFlags.NonPublic |
+			BindingFlags.Public;
+
+		// base type
+
+		foreach (Peer peer in Peers) {
+			if (peer.IsOpaque || peer.IsValueType || peer.CLRType.BaseType == null)
+				continue;
+
+			peer.NearestBase = GetPeer (peer.CLRType.BaseType);
+			if (peer.NearestBase == null) {
+				Console.Error.WriteLine ("Error: cannot find an internal base type for {0}.", peer.Name);
+				Environment.Exit (-1);
+			}
+		}
+
+		// fields
+
+		foreach (Peer peer in Peers) {
+			if (peer.IsOpaque || peer.IsEnum)
+				continue;
+
+			Type clr_base = null;
+			if (peer.NearestBase != null)
+				clr_base = peer.NearestBase.CLRType;
+
+			Stack declared = new Stack ();
+			Type type = peer.CLRType;
+
+			while (type != clr_base) {
+				declared.Push (type);
+				type = type.BaseType;
+			}
+
+			// build declared field list
+
+			while (declared.Count > 0) {
+				type = (Type)declared.Pop ();
+				foreach (FieldInfo info in type.GetFields (binding)) {
+					PeerField field = new PeerField (
+						GetPeer (info.FieldType),
+						info.Name
+					);
+
+					peer.Fields.Add (field);
+				}
+			}
+		}
+
+		// enums
+
+		foreach (Peer peer in Peers) {
+			if (peer.IsOpaque || !peer.IsEnum)
+				continue;
+
+			Type clr_type = peer.CLRType;
+
+			// constants
+
+			Hashtable constants = new Hashtable ();
+			foreach (string name in Enum.GetNames (clr_type))
+				constants.Add (name, (int)Enum.Parse (clr_type, name));
+
+			peer.UnderlyingPeer = GetPeer (Enum.GetUnderlyingType (clr_type));
+			peer.EnumConstants = constants;
+		}
+	}
+
+	// private
+
+	private Hashtable peers;
+}
--- mono-4.6.2.7+dfsg.orig/mcs/tools/lc/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/lc/AssemblyInfo.cs
@@ -1,36 +1,36 @@
-﻿using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("LC")]
-[assembly: AssemblyDescription(" license compiler for .NET/Mono license resources")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("RemObjects Software")]
-[assembly: AssemblyProduct("LC")]
-[assembly: AssemblyCopyright("Copyright © RemObjects Software 2009")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("b781c2df-fefa-4c87-a5c9-ce2553c4edb1")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers 
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("LC")]
+[assembly: AssemblyDescription(" license compiler for .NET/Mono license resources")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("RemObjects Software")]
+[assembly: AssemblyProduct("LC")]
+[assembly: AssemblyCopyright("Copyright © RemObjects Software 2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("b781c2df-fefa-4c87-a5c9-ce2553c4edb1")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
--- mono-4.6.2.7+dfsg.orig/mcs/tools/lc/lc.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/lc/lc.cs
@@ -1,302 +1,302 @@
-﻿//
-// License compiler for mono
-//
-// Authors:
-//   Carlo Kok (ck@remobjects.com)
-//
-// (C) 2009 RemObjects Software
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Mono.Options;
-using System.ComponentModel.Design;
-using System.IO;
-using System.Reflection;
-using System.Globalization;
-using System.ComponentModel;
-using System.Runtime.Serialization.Formatters.Binary;
-
-namespace LC
-{
-    public class LCLicenseContext : DesigntimeLicenseContext
-    {
-        public string OutputFilename { get; set; }
-        public string LicxFilename { get; set; }
-    }
-
-    class Program
-    {
-        static List<String> privatePaths = new List<string>();
-
-        static int Main(string[] args)
-        {
-            bool verbose = false;
-            string target = null;
-            string complist = null;
-            string targetdir = ".";
-            List<string> references = new List<string>();
-
-            bool nologo = false;
-            bool help = false;
-            OptionSet p = new OptionSet() {
-                {"v|verbose", "Verbose output", v => verbose = v!= null },
-                {"t|target=", "Target assembly name", v => target = v },
-                {"c|complist=","licx file to compile", v => complist = v },
-                {"i|load=", "Reference to load", v=> {if (v != null) references.Add(v);}},
-                {"o|outdir=", "Output directory for the .licenses file", v=> targetdir = v },
-                {"nologo", "Do not display logo", v=> nologo = null != v },
-                {"h|?|help", "Show help", v=>help = v != null }
-            };
-            List<string> extra;
-            try
-            {
-                extra = p.Parse(args);
-            }
-            catch(OptionException e) 
-            {
-                Console.WriteLine("lc: " + e.Message);
-                Console.WriteLine("try lc --help for more information");
-                return 1;
-            }
-            if (!nologo) {
-                Console.WriteLine("Mono License Compiler");
-                Console.WriteLine("Copyright (c) 2009 by RemObjects Software");
-            }
-            if (help) {
-                Console.WriteLine();
-                Console.WriteLine("lc -c filename -t targetassembly [-i references] [-v] [-o] [-nologo]");
-                Console.WriteLine();
-                Console.WriteLine("Options:");
-                p.WriteOptionDescriptions(Console.Out);
-                return 1;
-            }
-            if (extra.Count > 0) {
-                Console.WriteLine("Unexpected arguments passed on cmd line");
-                return 1;
-            }
-            if (target == null || complist == null){
-                Console.WriteLine("No target/complist passed");
-                return 1;
-            }
-            try {
-                if (!File.Exists(complist)) {
-                    Console.WriteLine("Could not find file: "+complist);
-                    return 1;
-                }
-
-                LCLicenseContext ctx = new LCLicenseContext();
-                ctx.LicxFilename = complist;
-                if (verbose) Console.WriteLine("Input file: "+complist);
-                ctx.OutputFilename = Path.Combine(targetdir ??".", target)+".licenses";
-                if (verbose) Console.WriteLine("Output filename: "+ctx.OutputFilename);
-                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
-                privatePaths.Add(".");
-                Dictionary<string, Assembly> loaded = new Dictionary<string, Assembly>();
-                foreach (string reference in references) {
-                    string path = Path.GetDirectoryName(reference);
-                    if (!privatePaths.Contains(path))
-                    {
-                        if (verbose) Console.WriteLine("Adding " + Path.GetDirectoryName(reference) + " to private paths");
-                        privatePaths.Add(path);
-                       }
-                    Assembly asm = Assembly.LoadFrom(reference);
-                    loaded.Add(asm.GetName().Name, asm);
-                    if (verbose) Console.WriteLine("Loaded assembly: "+asm.GetName().ToString());
-
-                }
-
-                using (StreamReader sr = new StreamReader(complist))
-                {
-                    int lineno = 0;
-                    string line = "";
-                    while (sr.Peek() != -1)
-                    {
-                        try
-                        {
-                            line = sr.ReadLine();
-                            if (line == null || line == "" || line[0] == '#' ) continue;
-                            if (verbose) Console.WriteLine("Generating license for: "+line);
-
-                            string[] sLine = line.Split(new char[] { ',' }, 2);
-                            Type stype = null;
-                            if (sLine.Length == 1)
-                            {
-                                stype = Type.GetType(line, false, true);
-                                if (stype == null)
-                                {
-                                    foreach (KeyValuePair<string, Assembly> et in loaded)
-                                    {
-                                        stype = et.Value.GetType(sLine[0], false, true);
-                                        if (stype != null) {
-                                            if (verbose) Console.WriteLine("Found type in "+et.Key);
-                                            break;
-                                        }
-                                    }
-                                }
-                            }
-                            else
-                            {
-                                if (sLine[1].IndexOf(',') >= 0)
-                                {
-                                    stype = Type.GetType(line, false, true);
-                                }
-                                else
-                                {
-                                    string s = sLine[1].Trim();
-                                    foreach (KeyValuePair<string, Assembly> et in loaded)
-                                    {
-                                        if (String.Compare(et.Key, s, true, CultureInfo.InvariantCulture) == 0)
-                                        {
-                                            stype = et.Value.GetType(sLine[0], false, true);
-                                            if (stype != null) {
-                                                if (verbose) Console.WriteLine("Found type in "+et.Key);
-                                                break;
-                                            }
-                                        }
-                                    }
-                                    if (stype == null)
-                                    {
-                                        foreach (KeyValuePair<string, Assembly> et in loaded)
-                                        {
-                                            stype = et.Value.GetType(sLine[0], false, true);
-                                            if (stype != null) {
-                                                if (verbose) Console.WriteLine("Found type in "+et.Key);
-                                                break;
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                            if (stype == null)
-                                throw new Exception("Unable to find type: " + line);
-                            LicenseManager.CreateWithContext(stype, ctx);
-                        }
-                        catch(Exception e)
-                        {
-                            Console.WriteLine("Exception during compiling " + complist + ": " + lineno);
-                            Console.WriteLine(e.ToString());
-                        }
-                    }
-                }
-
-                using (FileStream fs = new FileStream(ctx.OutputFilename, FileMode.Create)) {
-                    try {
-                    DesigntimeLicenseContextSerializer.Serialize(fs, target.ToUpper(CultureInfo.InvariantCulture), ctx);
-                    } catch {}
-                    if (fs.Length == 0) // older mono does not support this, but when it does, we should use the proper version.
-                        IntSerialize(fs, target.ToUpper(CultureInfo.InvariantCulture), ctx);
-                }
-                if (verbose)
-                    Console.WriteLine("Saved to: "+ Path.GetFullPath(ctx.OutputFilename));
-                return 0;
-            } catch(Exception e){
-                Console.WriteLine("Exception: "+e.ToString());
-                return 1;
-            }
-
-        }
-
-
-        private static void IntSerialize(Stream o,
-                          string cryptoKey,
-                          DesigntimeLicenseContext context)
-        {
-            Object[] lData = new Object[2];
-            lData[0] = cryptoKey;
-            Hashtable lNewTable = new Hashtable();
-            FieldInfo fi =
-                typeof(DesigntimeLicenseContext).GetField("savedLicenseKeys", BindingFlags.NonPublic | BindingFlags.Instance) ??
-                typeof(DesigntimeLicenseContext).GetField("keys", BindingFlags.NonPublic | BindingFlags.Instance)
-                ;
-            Hashtable lOrgTable = (Hashtable)fi.GetValue(context);
-            foreach (DictionaryEntry et in lOrgTable)
-            {
-                if (et.Key is string)
-                    lNewTable.Add(et.Key, et.Value);
-                else
-                    lNewTable.Add(((Type)et.Key).AssemblyQualifiedName, et.Value);
-            }
-            lData[1] = lNewTable;
-
-            BinaryFormatter lFormatter = new BinaryFormatter();
-            lFormatter.Serialize(o, lData);
-
-        }
-        static Dictionary<string, Assembly> loadedAssemblies = new Dictionary<string, Assembly>();
-
-        static bool CompareAssemblyName(string s1, string s2)
-        {
-            s1 = s1.ToLowerInvariant().Replace(" ", "");
-            s2 = s2.ToLowerInvariant().Replace(" ", "");
-            return s1 == s2;
-        }
-
-        static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
-        {
-            string[] lArgs = args.Name.Split(',');
-            string lName = lArgs[0].Trim();
-            if (loadedAssemblies.ContainsKey(args.Name))
-            {
-                return loadedAssemblies[args.Name];
-            }
-            for (int i = 0; i < privatePaths.Count; i++)
-            {
-                string sPath = Path.Combine(privatePaths[i].ToString(), lName);
-                if (File.Exists(sPath + ".dll"))
-                    sPath += ".dll";
-                else if (File.Exists(sPath + ".DLL"))
-                    sPath += ".DLL";
-                else if (File.Exists(sPath + ".exe"))
-                    sPath += ".exe";
-                else if (File.Exists(sPath + ".EXE"))
-                    sPath += ".EXE";
-                else
-                    continue;
-                AssemblyName an2 = AssemblyName.GetAssemblyName(sPath);
-                if (CompareAssemblyName(an2.ToString(), args.Name) || (lArgs.Length == 1 && CompareAssemblyName(an2.Name, lName)))
-                {
-                    Assembly asm;
-                    try
-                    {
-                        asm = Assembly.LoadFrom(sPath);
-                    }
-                    catch
-                    {
-                        asm = Assembly.LoadFile(sPath);
-                    }
-                    if (asm != null)
-                    {
-                        loadedAssemblies.Add(args.Name, asm);
-                        return asm;
-                    }
-                }
-            }
-            throw new Exception("Unable to find assembly "+args.Name);
-        }
-    }
-}
+﻿//
+// License compiler for mono
+//
+// Authors:
+//   Carlo Kok (ck@remobjects.com)
+//
+// (C) 2009 RemObjects Software
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Mono.Options;
+using System.ComponentModel.Design;
+using System.IO;
+using System.Reflection;
+using System.Globalization;
+using System.ComponentModel;
+using System.Runtime.Serialization.Formatters.Binary;
+
+namespace LC
+{
+    public class LCLicenseContext : DesigntimeLicenseContext
+    {
+        public string OutputFilename { get; set; }
+        public string LicxFilename { get; set; }
+    }
+
+    class Program
+    {
+        static List<String> privatePaths = new List<string>();
+
+        static int Main(string[] args)
+        {
+            bool verbose = false;
+            string target = null;
+            string complist = null;
+            string targetdir = ".";
+            List<string> references = new List<string>();
+
+            bool nologo = false;
+            bool help = false;
+            OptionSet p = new OptionSet() {
+                {"v|verbose", "Verbose output", v => verbose = v!= null },
+                {"t|target=", "Target assembly name", v => target = v },
+                {"c|complist=","licx file to compile", v => complist = v },
+                {"i|load=", "Reference to load", v=> {if (v != null) references.Add(v);}},
+                {"o|outdir=", "Output directory for the .licenses file", v=> targetdir = v },
+                {"nologo", "Do not display logo", v=> nologo = null != v },
+                {"h|?|help", "Show help", v=>help = v != null }
+            };
+            List<string> extra;
+            try
+            {
+                extra = p.Parse(args);
+            }
+            catch(OptionException e) 
+            {
+                Console.WriteLine("lc: " + e.Message);
+                Console.WriteLine("try lc --help for more information");
+                return 1;
+            }
+            if (!nologo) {
+                Console.WriteLine("Mono License Compiler");
+                Console.WriteLine("Copyright (c) 2009 by RemObjects Software");
+            }
+            if (help) {
+                Console.WriteLine();
+                Console.WriteLine("lc -c filename -t targetassembly [-i references] [-v] [-o] [-nologo]");
+                Console.WriteLine();
+                Console.WriteLine("Options:");
+                p.WriteOptionDescriptions(Console.Out);
+                return 1;
+            }
+            if (extra.Count > 0) {
+                Console.WriteLine("Unexpected arguments passed on cmd line");
+                return 1;
+            }
+            if (target == null || complist == null){
+                Console.WriteLine("No target/complist passed");
+                return 1;
+            }
+            try {
+                if (!File.Exists(complist)) {
+                    Console.WriteLine("Could not find file: "+complist);
+                    return 1;
+                }
+
+                LCLicenseContext ctx = new LCLicenseContext();
+                ctx.LicxFilename = complist;
+                if (verbose) Console.WriteLine("Input file: "+complist);
+                ctx.OutputFilename = Path.Combine(targetdir ??".", target)+".licenses";
+                if (verbose) Console.WriteLine("Output filename: "+ctx.OutputFilename);
+                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
+                privatePaths.Add(".");
+                Dictionary<string, Assembly> loaded = new Dictionary<string, Assembly>();
+                foreach (string reference in references) {
+                    string path = Path.GetDirectoryName(reference);
+                    if (!privatePaths.Contains(path))
+                    {
+                        if (verbose) Console.WriteLine("Adding " + Path.GetDirectoryName(reference) + " to private paths");
+                        privatePaths.Add(path);
+                       }
+                    Assembly asm = Assembly.LoadFrom(reference);
+                    loaded.Add(asm.GetName().Name, asm);
+                    if (verbose) Console.WriteLine("Loaded assembly: "+asm.GetName().ToString());
+
+                }
+
+                using (StreamReader sr = new StreamReader(complist))
+                {
+                    int lineno = 0;
+                    string line = "";
+                    while (sr.Peek() != -1)
+                    {
+                        try
+                        {
+                            line = sr.ReadLine();
+                            if (line == null || line == "" || line[0] == '#' ) continue;
+                            if (verbose) Console.WriteLine("Generating license for: "+line);
+
+                            string[] sLine = line.Split(new char[] { ',' }, 2);
+                            Type stype = null;
+                            if (sLine.Length == 1)
+                            {
+                                stype = Type.GetType(line, false, true);
+                                if (stype == null)
+                                {
+                                    foreach (KeyValuePair<string, Assembly> et in loaded)
+                                    {
+                                        stype = et.Value.GetType(sLine[0], false, true);
+                                        if (stype != null) {
+                                            if (verbose) Console.WriteLine("Found type in "+et.Key);
+                                            break;
+                                        }
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                if (sLine[1].IndexOf(',') >= 0)
+                                {
+                                    stype = Type.GetType(line, false, true);
+                                }
+                                else
+                                {
+                                    string s = sLine[1].Trim();
+                                    foreach (KeyValuePair<string, Assembly> et in loaded)
+                                    {
+                                        if (String.Compare(et.Key, s, true, CultureInfo.InvariantCulture) == 0)
+                                        {
+                                            stype = et.Value.GetType(sLine[0], false, true);
+                                            if (stype != null) {
+                                                if (verbose) Console.WriteLine("Found type in "+et.Key);
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    if (stype == null)
+                                    {
+                                        foreach (KeyValuePair<string, Assembly> et in loaded)
+                                        {
+                                            stype = et.Value.GetType(sLine[0], false, true);
+                                            if (stype != null) {
+                                                if (verbose) Console.WriteLine("Found type in "+et.Key);
+                                                break;
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                            if (stype == null)
+                                throw new Exception("Unable to find type: " + line);
+                            LicenseManager.CreateWithContext(stype, ctx);
+                        }
+                        catch(Exception e)
+                        {
+                            Console.WriteLine("Exception during compiling " + complist + ": " + lineno);
+                            Console.WriteLine(e.ToString());
+                        }
+                    }
+                }
+
+                using (FileStream fs = new FileStream(ctx.OutputFilename, FileMode.Create)) {
+                    try {
+                    DesigntimeLicenseContextSerializer.Serialize(fs, target.ToUpper(CultureInfo.InvariantCulture), ctx);
+                    } catch {}
+                    if (fs.Length == 0) // older mono does not support this, but when it does, we should use the proper version.
+                        IntSerialize(fs, target.ToUpper(CultureInfo.InvariantCulture), ctx);
+                }
+                if (verbose)
+                    Console.WriteLine("Saved to: "+ Path.GetFullPath(ctx.OutputFilename));
+                return 0;
+            } catch(Exception e){
+                Console.WriteLine("Exception: "+e.ToString());
+                return 1;
+            }
+
+        }
+
+
+        private static void IntSerialize(Stream o,
+                          string cryptoKey,
+                          DesigntimeLicenseContext context)
+        {
+            Object[] lData = new Object[2];
+            lData[0] = cryptoKey;
+            Hashtable lNewTable = new Hashtable();
+            FieldInfo fi =
+                typeof(DesigntimeLicenseContext).GetField("savedLicenseKeys", BindingFlags.NonPublic | BindingFlags.Instance) ??
+                typeof(DesigntimeLicenseContext).GetField("keys", BindingFlags.NonPublic | BindingFlags.Instance)
+                ;
+            Hashtable lOrgTable = (Hashtable)fi.GetValue(context);
+            foreach (DictionaryEntry et in lOrgTable)
+            {
+                if (et.Key is string)
+                    lNewTable.Add(et.Key, et.Value);
+                else
+                    lNewTable.Add(((Type)et.Key).AssemblyQualifiedName, et.Value);
+            }
+            lData[1] = lNewTable;
+
+            BinaryFormatter lFormatter = new BinaryFormatter();
+            lFormatter.Serialize(o, lData);
+
+        }
+        static Dictionary<string, Assembly> loadedAssemblies = new Dictionary<string, Assembly>();
+
+        static bool CompareAssemblyName(string s1, string s2)
+        {
+            s1 = s1.ToLowerInvariant().Replace(" ", "");
+            s2 = s2.ToLowerInvariant().Replace(" ", "");
+            return s1 == s2;
+        }
+
+        static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
+        {
+            string[] lArgs = args.Name.Split(',');
+            string lName = lArgs[0].Trim();
+            if (loadedAssemblies.ContainsKey(args.Name))
+            {
+                return loadedAssemblies[args.Name];
+            }
+            for (int i = 0; i < privatePaths.Count; i++)
+            {
+                string sPath = Path.Combine(privatePaths[i].ToString(), lName);
+                if (File.Exists(sPath + ".dll"))
+                    sPath += ".dll";
+                else if (File.Exists(sPath + ".DLL"))
+                    sPath += ".DLL";
+                else if (File.Exists(sPath + ".exe"))
+                    sPath += ".exe";
+                else if (File.Exists(sPath + ".EXE"))
+                    sPath += ".EXE";
+                else
+                    continue;
+                AssemblyName an2 = AssemblyName.GetAssemblyName(sPath);
+                if (CompareAssemblyName(an2.ToString(), args.Name) || (lArgs.Length == 1 && CompareAssemblyName(an2.Name, lName)))
+                {
+                    Assembly asm;
+                    try
+                    {
+                        asm = Assembly.LoadFrom(sPath);
+                    }
+                    catch
+                    {
+                        asm = Assembly.LoadFile(sPath);
+                    }
+                    if (asm != null)
+                    {
+                        loadedAssemblies.Add(args.Name, asm);
+                        return asm;
+                    }
+                }
+            }
+            throw new Exception("Unable to find assembly "+args.Name);
+        }
+    }
+}
--- mono-4.6.2.7+dfsg.orig/mcs/tools/mdoc/Test/CLILibraryTypes.dtd
+++ mono-4.6.2.7+dfsg/mcs/tools/mdoc/Test/CLILibraryTypes.dtd
@@ -1,154 +1,154 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!ELEMENT AssemblyCulture (#PCDATA)>
-<!ELEMENT AssemblyInfo (AssemblyName, ((AssemblyPublicKey, AssemblyVersion) | (AssemblyVersion, AssemblyPublicKey)), AssemblyCulture, Attributes)>
-<!ELEMENT AssemblyName (#PCDATA)>
-<!ELEMENT AssemblyPublicKey (#PCDATA)>
-<!ELEMENT AssemblyVersion (#PCDATA)>
-<!ELEMENT Attribute (AttributeName, Excluded?, ExcludedTypeName?, ExcludedLibraryName?)>
-<!ELEMENT AttributeName (#PCDATA)>
-<!ELEMENT Attributes (Attribute*)>
-<!ELEMENT Base (BaseTypeName?, ExcludedBaseTypeName?, ExcludedLibraryName?)>
-<!ELEMENT BaseTypeName (#PCDATA)>
-<!ELEMENT Constraints (ParameterAttribute+, BaseTypeName?) >
-<!ELEMENT Docs ((summary?, altmember?, altcompliant?, typeparam*, param*, returns?, value?, exception*, threadsafe?, remarks?, example?, permission?) | (typeparam*, param*, summary?, altmember?, altcompliant?, returns?, value?, exception*, threadsafe?, remarks?, example?, permission?) | (summary?, altmember?, altcompliant?, typeparam*, param*, returns?, value?, remarks?, threadsafe?, exception*, example?, permission?) | (typeparam*, param*, summary?, altmember?, altcompliant?, returns?, value?, remarks?, threadsafe?, exception*, example?, permission?))>
-<!ELEMENT Excluded (#PCDATA)>
-<!ELEMENT ExcludedBaseTypeName (#PCDATA)>
-<!ELEMENT ExcludedLibrary (#PCDATA)>
-<!ELEMENT ExcludedLibraryName (#PCDATA)>
-<!ELEMENT ExcludedTypeName (#PCDATA)>
-<!ELEMENT Interface (InterfaceName, Excluded?)>
-<!ELEMENT InterfaceName (#PCDATA)>
-<!ELEMENT Interfaces (Interface*)>
-<!ELEMENT Libraries (Types+)>
-<!ELEMENT Member (MemberSignature+, MemberType, Attributes?, ReturnValue, TypeParameters?, Parameters, MemberValue?, Docs, Excluded?, ExcludedLibrary*)>
-<!ATTLIST Member
-	MemberName CDATA #REQUIRED
->
-<!ELEMENT MemberOfLibrary (#PCDATA)>
-<!ELEMENT MemberSignature EMPTY>
-<!ATTLIST MemberSignature
-	Language CDATA #REQUIRED
-	Value CDATA #REQUIRED
->
-<!ELEMENT MemberType (#PCDATA)>
-<!ELEMENT MemberValue (#PCDATA)>
-<!ELEMENT Members (Member*)>
-<!ELEMENT PRE EMPTY>
-<!ELEMENT Parameter (Attributes?)>
-<!ATTLIST Parameter
-	Name NMTOKEN #REQUIRED
-	Type CDATA #REQUIRED
-	RefType CDATA #IMPLIED
->
-<!ELEMENT ParameterAttribute (#PCDATA) >
-<!ELEMENT Parameters (Parameter*)>
-<!ELEMENT ReturnType (#PCDATA)>
-<!ELEMENT ReturnValue (ReturnType?)>
-<!ELEMENT SPAN (#PCDATA | para | paramref | SPAN | see | block)*>
-<!ELEMENT ThreadingSafetyStatement (#PCDATA)>
-<!ELEMENT Type (TypeSignature+, MemberOfLibrary, AssemblyInfo, ThreadingSafetyStatement?, TypeParameters?, ((Docs, Parameters?, ReturnValue?, Base, Interfaces?) | (Base, Interfaces?, Parameters?, ReturnValue?, Docs)) , Attributes?, Members?, TypeExcluded)>
-<!ATTLIST Type
-	Name CDATA #REQUIRED
-	FullName CDATA #REQUIRED
-	FullNameSP CDATA #REQUIRED
->
-<!ELEMENT TypeExcluded (#PCDATA)>
-<!ELEMENT TypeParameter (Constraints*) >
-<!ATTLIST TypeParameter
-    Name CDATA #REQUIRED
- >
-<!ELEMENT TypeParameters (TypeParameter*)>
-<!ELEMENT TypeSignature EMPTY>
-<!ATTLIST TypeSignature
-	Language CDATA #REQUIRED
-	Value CDATA #REQUIRED
->
-<!ELEMENT Types (Type+)>
-<!ATTLIST Types
-	Library NMTOKEN #REQUIRED
->
-<!ELEMENT altcompliant EMPTY>
-<!ATTLIST altcompliant
-	cref CDATA #REQUIRED
->
-<!ELEMENT altmember EMPTY>
-<!ATTLIST altmember
-	cref CDATA #REQUIRED
->
-<!ELEMENT block (#PCDATA | see | para | paramref | list | block | c | subscript | code | sup | pi | plusminus | whitespace)*>
-<!ATTLIST block
-	subset CDATA #REQUIRED
-	type NMTOKEN #REQUIRED
->
-<!ELEMENT c (#PCDATA | para | paramref | code | see)*>
-<!ELEMENT code (#PCDATA)>
-<!ATTLIST code
-	lang CDATA #IMPLIED
->
-<!ELEMENT codelink EMPTY>
-<!ATTLIST codelink
-	SampleID CDATA #REQUIRED
-	SnippetID CDATA #REQUIRED
->
-<!ELEMENT description (#PCDATA | SPAN | paramref | para | see | c | permille | block | sub | plusminus)*>
-<!ELEMENT example (#PCDATA | para | code | c | codelink | list | see)*>
-<!ELEMENT exception (#PCDATA | paramref | see | para | SPAN | block)*>
-<!ATTLIST exception
-	cref CDATA #REQUIRED
->
-<!ELEMENT geq EMPTY>
-<!ELEMENT i (#PCDATA)>
-<!ELEMENT infinity EMPTY>
-<!ELEMENT item (term, description*)>
-<!ELEMENT leq EMPTY>
-<!ELEMENT list (listheader?, item*)>
-<!ATTLIST list
-	type NMTOKEN #REQUIRED
->
-<!ELEMENT listheader (term, description+)>
-<!ELEMENT onequarter EMPTY>
-<!ELEMENT para (#PCDATA | see | block | paramref | c | onequarter | superscript | sup | permille | SPAN | list | pi | theta | sub | leq | geq | plusminus | whitespace)*>
-<!ELEMENT param (#PCDATA | c | paramref | see | block | para | SPAN | geq | leq | whitespace)*>
-<!ATTLIST param
-	name CDATA #REQUIRED
->
-<!ELEMENT paramref EMPTY>
-<!ATTLIST paramref
-	name CDATA #REQUIRED
->
-<!ELEMENT permille EMPTY>
-<!ELEMENT permission (#PCDATA | see | paramref | para | block)*>
-<!ATTLIST permission
-	cref CDATA #REQUIRED
->
-<!ELEMENT pi EMPTY>
-<!ELEMENT plusminus EMPTY>
-<!ELEMENT pre EMPTY>
-<!ELEMENT remarks (#PCDATA | para | block | list | c | paramref | see | pre | SPAN | code | PRE)*>
-<!ELEMENT returns (#PCDATA | para | list | paramref | see)*>
-<!ELEMENT see EMPTY>
-<!ATTLIST see
-	cref CDATA #IMPLIED
-	langword CDATA #IMPLIED
-	qualify CDATA #IMPLIED
->
-<!ELEMENT sub (#PCDATA | paramref)*>
-<!ELEMENT subscript EMPTY>
-<!ATTLIST subscript
-	term CDATA #REQUIRED
->
-<!ELEMENT summary (#PCDATA | para | see | block | list)*>
-<!ELEMENT sup (#PCDATA | i | paramref)*>
-<!ELEMENT superscript EMPTY>
-<!ATTLIST superscript
-	term CDATA #REQUIRED
->
-<!ELEMENT term (#PCDATA | block | see | paramref | para | c | sup | pi | theta | leq | geq | plusminus | whitespace)*>
-<!ELEMENT theta EMPTY>
-<!ELEMENT threadsafe (para+)>
-<!ELEMENT typeparam (#PCDATA | c | paramref | see | block | para | SPAN | geq | leq | whitespace)*>
-<!ATTLIST typeparam
-	name CDATA #REQUIRED
->
-<!ELEMENT value (#PCDATA | para | list | see)*>
-<!ELEMENT whitespace EMPTY>
+<?xml version="1.0" encoding="UTF-8"?>
+<!ELEMENT AssemblyCulture (#PCDATA)>
+<!ELEMENT AssemblyInfo (AssemblyName, ((AssemblyPublicKey, AssemblyVersion) | (AssemblyVersion, AssemblyPublicKey)), AssemblyCulture, Attributes)>
+<!ELEMENT AssemblyName (#PCDATA)>
+<!ELEMENT AssemblyPublicKey (#PCDATA)>
+<!ELEMENT AssemblyVersion (#PCDATA)>
+<!ELEMENT Attribute (AttributeName, Excluded?, ExcludedTypeName?, ExcludedLibraryName?)>
+<!ELEMENT AttributeName (#PCDATA)>
+<!ELEMENT Attributes (Attribute*)>
+<!ELEMENT Base (BaseTypeName?, ExcludedBaseTypeName?, ExcludedLibraryName?)>
+<!ELEMENT BaseTypeName (#PCDATA)>
+<!ELEMENT Constraints (ParameterAttribute+, BaseTypeName?) >
+<!ELEMENT Docs ((summary?, altmember?, altcompliant?, typeparam*, param*, returns?, value?, exception*, threadsafe?, remarks?, example?, permission?) | (typeparam*, param*, summary?, altmember?, altcompliant?, returns?, value?, exception*, threadsafe?, remarks?, example?, permission?) | (summary?, altmember?, altcompliant?, typeparam*, param*, returns?, value?, remarks?, threadsafe?, exception*, example?, permission?) | (typeparam*, param*, summary?, altmember?, altcompliant?, returns?, value?, remarks?, threadsafe?, exception*, example?, permission?))>
+<!ELEMENT Excluded (#PCDATA)>
+<!ELEMENT ExcludedBaseTypeName (#PCDATA)>
+<!ELEMENT ExcludedLibrary (#PCDATA)>
+<!ELEMENT ExcludedLibraryName (#PCDATA)>
+<!ELEMENT ExcludedTypeName (#PCDATA)>
+<!ELEMENT Interface (InterfaceName, Excluded?)>
+<!ELEMENT InterfaceName (#PCDATA)>
+<!ELEMENT Interfaces (Interface*)>
+<!ELEMENT Libraries (Types+)>
+<!ELEMENT Member (MemberSignature+, MemberType, Attributes?, ReturnValue, TypeParameters?, Parameters, MemberValue?, Docs, Excluded?, ExcludedLibrary*)>
+<!ATTLIST Member
+	MemberName CDATA #REQUIRED
+>
+<!ELEMENT MemberOfLibrary (#PCDATA)>
+<!ELEMENT MemberSignature EMPTY>
+<!ATTLIST MemberSignature
+	Language CDATA #REQUIRED
+	Value CDATA #REQUIRED
+>
+<!ELEMENT MemberType (#PCDATA)>
+<!ELEMENT MemberValue (#PCDATA)>
+<!ELEMENT Members (Member*)>
+<!ELEMENT PRE EMPTY>
+<!ELEMENT Parameter (Attributes?)>
+<!ATTLIST Parameter
+	Name NMTOKEN #REQUIRED
+	Type CDATA #REQUIRED
+	RefType CDATA #IMPLIED
+>
+<!ELEMENT ParameterAttribute (#PCDATA) >
+<!ELEMENT Parameters (Parameter*)>
+<!ELEMENT ReturnType (#PCDATA)>
+<!ELEMENT ReturnValue (ReturnType?)>
+<!ELEMENT SPAN (#PCDATA | para | paramref | SPAN | see | block)*>
+<!ELEMENT ThreadingSafetyStatement (#PCDATA)>
+<!ELEMENT Type (TypeSignature+, MemberOfLibrary, AssemblyInfo, ThreadingSafetyStatement?, TypeParameters?, ((Docs, Parameters?, ReturnValue?, Base, Interfaces?) | (Base, Interfaces?, Parameters?, ReturnValue?, Docs)) , Attributes?, Members?, TypeExcluded)>
+<!ATTLIST Type
+	Name CDATA #REQUIRED
+	FullName CDATA #REQUIRED
+	FullNameSP CDATA #REQUIRED
+>
+<!ELEMENT TypeExcluded (#PCDATA)>
+<!ELEMENT TypeParameter (Constraints*) >
+<!ATTLIST TypeParameter
+    Name CDATA #REQUIRED
+ >
+<!ELEMENT TypeParameters (TypeParameter*)>
+<!ELEMENT TypeSignature EMPTY>
+<!ATTLIST TypeSignature
+	Language CDATA #REQUIRED
+	Value CDATA #REQUIRED
+>
+<!ELEMENT Types (Type+)>
+<!ATTLIST Types
+	Library NMTOKEN #REQUIRED
+>
+<!ELEMENT altcompliant EMPTY>
+<!ATTLIST altcompliant
+	cref CDATA #REQUIRED
+>
+<!ELEMENT altmember EMPTY>
+<!ATTLIST altmember
+	cref CDATA #REQUIRED
+>
+<!ELEMENT block (#PCDATA | see | para | paramref | list | block | c | subscript | code | sup | pi | plusminus | whitespace)*>
+<!ATTLIST block
+	subset CDATA #REQUIRED
+	type NMTOKEN #REQUIRED
+>
+<!ELEMENT c (#PCDATA | para | paramref | code | see)*>
+<!ELEMENT code (#PCDATA)>
+<!ATTLIST code
+	lang CDATA #IMPLIED
+>
+<!ELEMENT codelink EMPTY>
+<!ATTLIST codelink
+	SampleID CDATA #REQUIRED
+	SnippetID CDATA #REQUIRED
+>
+<!ELEMENT description (#PCDATA | SPAN | paramref | para | see | c | permille | block | sub | plusminus)*>
+<!ELEMENT example (#PCDATA | para | code | c | codelink | list | see)*>
+<!ELEMENT exception (#PCDATA | paramref | see | para | SPAN | block)*>
+<!ATTLIST exception
+	cref CDATA #REQUIRED
+>
+<!ELEMENT geq EMPTY>
+<!ELEMENT i (#PCDATA)>
+<!ELEMENT infinity EMPTY>
+<!ELEMENT item (term, description*)>
+<!ELEMENT leq EMPTY>
+<!ELEMENT list (listheader?, item*)>
+<!ATTLIST list
+	type NMTOKEN #REQUIRED
+>
+<!ELEMENT listheader (term, description+)>
+<!ELEMENT onequarter EMPTY>
+<!ELEMENT para (#PCDATA | see | block | paramref | c | onequarter | superscript | sup | permille | SPAN | list | pi | theta | sub | leq | geq | plusminus | whitespace)*>
+<!ELEMENT param (#PCDATA | c | paramref | see | block | para | SPAN | geq | leq | whitespace)*>
+<!ATTLIST param
+	name CDATA #REQUIRED
+>
+<!ELEMENT paramref EMPTY>
+<!ATTLIST paramref
+	name CDATA #REQUIRED
+>
+<!ELEMENT permille EMPTY>
+<!ELEMENT permission (#PCDATA | see | paramref | para | block)*>
+<!ATTLIST permission
+	cref CDATA #REQUIRED
+>
+<!ELEMENT pi EMPTY>
+<!ELEMENT plusminus EMPTY>
+<!ELEMENT pre EMPTY>
+<!ELEMENT remarks (#PCDATA | para | block | list | c | paramref | see | pre | SPAN | code | PRE)*>
+<!ELEMENT returns (#PCDATA | para | list | paramref | see)*>
+<!ELEMENT see EMPTY>
+<!ATTLIST see
+	cref CDATA #IMPLIED
+	langword CDATA #IMPLIED
+	qualify CDATA #IMPLIED
+>
+<!ELEMENT sub (#PCDATA | paramref)*>
+<!ELEMENT subscript EMPTY>
+<!ATTLIST subscript
+	term CDATA #REQUIRED
+>
+<!ELEMENT summary (#PCDATA | para | see | block | list)*>
+<!ELEMENT sup (#PCDATA | i | paramref)*>
+<!ELEMENT superscript EMPTY>
+<!ATTLIST superscript
+	term CDATA #REQUIRED
+>
+<!ELEMENT term (#PCDATA | block | see | paramref | para | c | sup | pi | theta | leq | geq | plusminus | whitespace)*>
+<!ELEMENT theta EMPTY>
+<!ELEMENT threadsafe (para+)>
+<!ELEMENT typeparam (#PCDATA | c | paramref | see | block | para | SPAN | geq | leq | whitespace)*>
+<!ATTLIST typeparam
+	name CDATA #REQUIRED
+>
+<!ELEMENT value (#PCDATA | para | list | see)*>
+<!ELEMENT whitespace EMPTY>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/mdoc/Test/TestEcmaDocs.xml
+++ mono-4.6.2.7+dfsg/mcs/tools/mdoc/Test/TestEcmaDocs.xml
@@ -1,4876 +1,4876 @@
-<!-- ====================================================================== -->
-<!-- This XML is a description of the Common Language Infrastructure (CLI) library. -->
-<!-- This file is a normative part of Partition IV of the following standards: ISO/IEC 23271 and ECMA 335 -->
-<!-- ====================================================================== -->
-<!DOCTYPE Libraries SYSTEM "CLILibraryTypes.dtd">
-<Libraries>
-	<Types Library="BCL">
-		<Type Name="Action&lt;T&gt;" FullName="System.Action&lt;T&gt;" FullNameSP="System_Action&lt;T&gt;">
-			<TypeSignature Language="ILAsm" Value=".class public sealed serializable Action`1&lt;T&gt; extends System.Delegate
- { .method public hidebysig newslot virtual instance void Invoke(!0 obj) }"/>
-			<TypeSignature Language="C#" Value="public delegate void Action&lt;T&gt;(T obj);"/>
-			<MemberOfLibrary>BCL</MemberOfLibrary>
-			<AssemblyInfo>
-				<AssemblyName>mscorlib</AssemblyName>
-				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
-				<AssemblyVersion>2.0.x.x</AssemblyVersion>
-				<AssemblyCulture>none</AssemblyCulture>
-				<Attributes>
-					<Attribute>
-						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
-						<Excluded>0</Excluded>
-					</Attribute>
-				</Attributes>
-			</AssemblyInfo>
-			<Docs>
-				<summary>
-					<para> Represents the method that performs an action on the specified object.</para>
-				</summary>
-				<param name="obj">The object on which to perform an action.</param>
-				<remarks>
-					<block subset="none" type="note">
-						<para>This delegate is used by the method <see cref="M:System.Array.ForEach"/>
-							<see langword="(T[], Action&lt;T&gt;)"/>, and in <see cref="T:System.Collections.Generic.List&lt;T&gt;"/> to perform an action on each element of the collection.</para>
-					</block>
-				</remarks>
-			</Docs>
-			<Base>
-				<BaseTypeName>System.Delegate</BaseTypeName>
-			</Base>
-			<Interfaces>
-				<Interface>
-					<InterfaceName>System.ICloneable</InterfaceName>
-					<Excluded>0</Excluded>
-				</Interface>
-			</Interfaces>
-			<Members/>
-			<TypeExcluded>0</TypeExcluded>
-		</Type>
-		<Type Name="AsyncCallback" FullName="System.AsyncCallback" FullNameSP="System_AsyncCallback">
-			<TypeSignature Language="ILAsm" Value=".class public sealed serializable AsyncCallback extends System.Delegate
- { .method public hidebysig newslot virtual instance void Invoke(IAsyncResult ar) }"/>
-			<TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);"/>
-			<MemberOfLibrary>BCL</MemberOfLibrary>
-			<AssemblyInfo>
-				<AssemblyName>mscorlib</AssemblyName>
-				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
-				<AssemblyVersion>2.0.x.x</AssemblyVersion>
-				<AssemblyCulture>none</AssemblyCulture>
-				<Attributes>
-					<Attribute>
-						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
-						<Excluded>0</Excluded>
-					</Attribute>
-				</Attributes>
-			</AssemblyInfo>
-			<Docs>
-				<summary>
-					<para> References one or more methods called when an asynchronous operation completes.</para>
-				</summary>
-				<param name="ar">A <see cref="T:System.IAsyncResult"/> object containing information about the asynchronous operation that has completed.</param>
-			</Docs>
-			<Base>
-				<BaseTypeName>System.Delegate</BaseTypeName>
-			</Base>
-			<Interfaces>
-				<Interface>
-					<InterfaceName>System.ICloneable</InterfaceName>
-					<Excluded>0</Excluded>
-				</Interface>
-			</Interfaces>
-			<Members/>
-			<TypeExcluded>0</TypeExcluded>
-		</Type>
-		<Type Name="Environment" FullName="System.Environment" FullNameSP="System_Environment">
-			<TypeSignature Language="ILAsm" Value=".class public sealed Environment extends System.Object"/>
-			<TypeSignature Language="C#" Value="public sealed class Environment"/>
-			<MemberOfLibrary>BCL</MemberOfLibrary>
-			<AssemblyInfo>
-				<AssemblyName>mscorlib</AssemblyName>
-				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
-				<AssemblyVersion>2.0.x.x</AssemblyVersion>
-				<AssemblyCulture>none</AssemblyCulture>
-				<Attributes>
-					<Attribute>
-						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
-						<Excluded>0</Excluded>
-					</Attribute>
-				</Attributes>
-			</AssemblyInfo>
-			<ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
-			<Docs>
-				<summary>
-					<para> Provides the current settings for, and information about, the execution environment.</para>
-				</summary>
-				<remarks>
-					<block subset="none" type="note">
-						<para>Use this class to retrieve the following 
- information:</para>
-						<list type="bullet">
-							<item>
-								<term>Command line arguments</term>
-							</item>
-							<item>
-								<term>Exit codes</term>
-							</item>
-							<item>
-								<term>Environment variable settings</term>
-							</item>
-							<item>
-								<term>Contents of the call stack</term>
-							</item>
-							<item>
-								<term>Time since last system boot</term>
-							</item>
-							<item>
-								<term>Version of the execution engine</term>
-							</item>
-						</list>
-					</block>
-				</remarks>
-			</Docs>
-			<Base>
-				<BaseTypeName>System.Object</BaseTypeName>
-			</Base>
-			<Interfaces/>
-			<Members>
-				<Member MemberName="GetFolderPath">
-					<MemberSignature Language="C#" Value="public static string GetCommandLineArgs(Environment.SpecialFolder folder);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.String</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="folder" Type="System.Environment+SpecialFolder" />
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Returns the arguments specified on the command
-      line.</para>
-						</summary>
-						<param name="folder">
-							<para>A <see cref="T:System.Environment+SpecialFolder" />.</para>
-						</param>
-						<returns>
-							<para> Returns a <see cref="T:System.String"/> array. Each <see cref="T:System.String"/> in the array
-   contains a single command line argument.</para>
-						</returns>
-						<remarks>
-							<para>The first element in the array contains the filename of
-      the executing program. If the filename is not available, the first element is
-      equal to <see cref="F:System.String.Empty"/>. The remaining elements contain any additional tokens
-      entered on the command line.</para>
-							<block subset="none" type="note">
-								<para>The program filename can, but is not required to,
-         include path information.</para>
-								<para>To obtain the command line as a single <see cref="T:System.String"/>, use the <see cref="P:System.Environment.CommandLine"/>
-   property.</para>
-							</block>
-						</remarks>
-						<exception cref="T:System.ArgumentException">foo</exception>
-						<permission cref="T:System.SomePermission">bar</permission>
-						<altmember cref="T:System.SomeMember">alt member</altmember>
-						<seealso cref="T:System.SomeMember">another member</seealso>
-						<unrecognized attribute="a-ko">should be appended to new docs</unrecognized>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-			</Members>
-			<TypeExcluded>0</TypeExcluded>
-		</Type>
-		<Type Name="Array" FullName="System.Array" FullNameSP="System_Array">
-			<TypeSignature Language="ILAsm" Value=".class public abstract serializable Array extends System.Object implements System.ICloneable, System.Collections.ICollection, System.Collections.IEnumerable, System.Collections.IList"/>
-			<TypeSignature Language="C#" Value="public abstract class Array : ICloneable, ICollection, IEnumerable, IList"/>
-			<MemberOfLibrary>BCL</MemberOfLibrary>
-			<AssemblyInfo>
-				<AssemblyName>mscorlib</AssemblyName>
-				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
-				<AssemblyVersion>2.0.x.x</AssemblyVersion>
-				<AssemblyCulture>none</AssemblyCulture>
-				<Attributes>
-					<Attribute>
-						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
-						<Excluded>0</Excluded>
-					</Attribute>
-				</Attributes>
-			</AssemblyInfo>
-			<ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
-			<Docs>
-				<summary>
-					<para> Serves as the base class for arrays. Provides methods for creating,
-      copying, manipulating, searching, and sorting arrays.</para>
-				</summary>
-				<remarks>
-					<para>This class is intended to be used as a base class by
-      language implementations that support arrays. Only the system can derive from
-      this type: derived classes of <see cref="T:System.Array"/> are not to be created by the developer.</para>
-					<block subset="none" type="note">
-						<para>An array is a collection of
-         identically typed data <paramref name="elements"/> that are accessed and referenced by
-         sets of integral <paramref name="indices"/>. </para>
-						<para>The <paramref name="rank"/> of an array is the number
-      of dimensions in the array. Each dimension has its own set of indices. An array
-      with a rank greater than one can have a different lower
-      bound and a different number of elements for each dimension. Multidimensional
-      arrays (i.e. arrays with a rank greater than one) are processed in row-major
-      order. </para>
-						<para>The <paramref name="lower bound"/> of a dimension
-   is the starting index of that dimension. </para>
-						<para>The <paramref name="length"/> of an array is the total number of elements contained in all of its
-dimensions. </para>
-						<para>A <paramref name="vector"/> is a
-one-dimensional array with a <paramref name="lower bound"/> of '0'. </para>
-						<para>If the implementer creates a derived class of <see cref="T:System.Array"/>, expected <see cref="T:System.Array"/> behavior
-cannot be guaranteed. For information on array-like objects with increased
-functionality, see the <see cref="T:System.Collections.IList"/> and <see cref="T:System.Collections.Generic.IList&lt;T&gt;"/> interfaces. For more information regarding the use of arrays versus the use
-of collections, see Partition V of the CLI Specification. </para>
-					</block>
-					<para>Every specific <see cref="T:System.Array"/> type has three instance methods defined on it.
-   While some programming languages allow direct access to these methods, they are
-   primarily intended to be called by the output of compilers based on language
-   syntax that deals with arrays. </para>
-					<list type="bullet">
-						<item>
-							<term>
-								<para>
-									<c>Get</c>: Takes as many <see cref="T:System.Int32"/> arguments as the array
-   has dimensions and returns the value stored at the given index. It throws a
-<see cref="T:System.IndexOutOfRangeException"/> 
-exception for invalid indices. </para>
-							</term>
-						</item>
-						<item>
-							<term>
-								<para>
-									<c>Set</c>: Takes as many <see cref="T:System.Int32"/> arguments as the array
-   has dimensions, plus one additional argument (the last argument) which has the
-   same type as an array element. It stores the final value in the specified
-   index of the array. It throws a <see cref="T:System.IndexOutOfRangeException"/>
-   exception for invalid indices. </para>
-							</term>
-						</item>
-						<item>
-							<term>
-								<para>
-									<c>Address</c>: Takes as many <see cref="T:System.Int32"/> arguments as the
-   array has dimensions and returns the address of the element at the given index.
-   It throws a <see cref="T:System.IndexOutOfRangeException"/>
-   exception for invalid indices. </para>
-							</term>
-						</item>
-					</list>
-					<para>In addition, every specific <see cref="T:System.Array"/> type has a constructor on it that takes as many non-negative 
-<see cref="T:System.Int32"/> 
-arguments as the array has dimensions. The arguments specify the
-number of elements in each dimension, and a lower bound of 0. Thus, a
-two-dimensional array of <see cref="T:System.Int32"/> objects would have a constructor that could be called with
-<c>(2, 4)</c> as its arguments to create an array of eight zeros with the first dimension indexed
-with 0 and 1 and the second dimension indexed with 0, 1, 2, and 3. </para>
-					<para>For all specific array types except vectors (i.e. those
-   permitted to have non-zero lower bounds and those with more than one dimension)
-   there is an additional constructor. It takes twice as many arguments as the
-   array has dimensions. The arguments are considered in pairs, with the first of
-   the pair specifying the lower bound for that dimension and the second specifying
-   the total number of elements in that dimension. Thus, a two-dimensional array
-   of <see cref="T:System.Int32"/>
-   
-   objects would also have a constructor that could be called with <c>(-1, 2, 1, 3)</c> as its arguments,
-specifying an array of 6 zeros, with the first dimension indexed by -1 and 0,
-and the second dimension indexed by 1, 2, and 3. </para>
-					<para>Enumeration over an array occurs in ascending row-major order, starting from the first element. (For example, a 2x3 array is traversed in the order [0,0], [0,1], [0,2], [1,0], [1,1], and [1,2].)</para>
-					<para>Parallel implementation of methods taking a <see cref="T:System.Predicate"/> argument are not permitted.</para>
-				</remarks>
-			</Docs>
-			<Base>
-				<BaseTypeName>System.Object</BaseTypeName>
-			</Base>
-			<Interfaces>
-				<Interface>
-					<InterfaceName>System.ICloneable</InterfaceName>
-					<Excluded>0</Excluded>
-				</Interface>
-				<Interface>
-					<InterfaceName>System.Collections.ICollection</InterfaceName>
-					<Excluded>0</Excluded>
-				</Interface>
-				<Interface>
-					<InterfaceName>System.Collections.IEnumerable</InterfaceName>
-					<Excluded>0</Excluded>
-				</Interface>
-				<Interface>
-					<InterfaceName>System.Collections.IList</InterfaceName>
-					<Excluded>0</Excluded>
-				</Interface>
-			</Interfaces>
-			<Members>
-				<Member MemberName=".ctor">
-					<MemberSignature Language="ILAsm" Value="private rtspecialname specialname instance void .ctor()"/>
-					<MemberSignature Language="C#" Value="private Array();"/>
-					<MemberType>Constructor</MemberType>
-					<ReturnValue/>
-					<Parameters/>
-					<Docs>
-						<summary>Constructs a new instance of the <see cref="T:System.Array"/> class.</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="AsReadOnly&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Collections.Generic.IList`1&lt;!!0&gt; AsReadOnly&lt;T&gt;(!!0[] array)"/>
-					<MemberSignature Language="C#" Value="public static IList&lt;T&gt; AsReadOnly&lt;T&gt;(T[] array)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Collections.Generic.IList&lt;T&gt;</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Returns a read-only <see cref="T: System.Collections.Generic.IList&lt;T&gt;"/> wrapper around the specified array.</para>
-						</summary>
-						<param name="array">The array to wrap in a read-only <see cref="T:System.Collections.Generic.IList&lt;T&gt;"/> wrapper.</param>
-						<returns>
-							<para>A read-only <see cref="T:System.Collections.Generic.IList&lt;T&gt;"/>  wrapper around the specified array.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>
-								<block subset="none" type="note">To prevent any modifications to the array, expose the array only through this wrapper.</block>
-							</para>
-							<para>The returned <see langword="IList&lt;T&gt;"/> has the same enumeration order as the array it wraps.</para>
-							<para>A collection that is read-only is simply a collection with a wrapper that prevents modifying the underlying array; therefore, if changes are made to the underlying array, the read-only collection reflects those changes.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, int32 index, int32 length, object value, class System.Collections.IComparer comparer)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, int index, int length, object value, IComparer comparer);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified section of the specified
-      one-dimensional <see cref="T:System.Array"/> for the specified value, using the
-      specified <see cref="T:System.Collections.IComparer"/>
-      implementation.</para>
-						</summary>
-						<param name="array">A <see cref="T:System.Array"/> to search.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which searching starts. </param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="index"/> . </param>
-						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
-   operation.</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description>Description</description>
-								</listheader>
-								<item>
-									<term> The index of <paramref name="value"/> in the
-      array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of the index of the first element that is larger than
-   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found, and at least one array element in the
-   range of <paramref name="index"/> to <paramref name="index"/> + <paramref name="length"/> - 1 was greater
-   than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of (<paramref name="index"/> + <paramref name="length"/>).</term>
-									<description>
-										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than all
-array elements in the range of <paramref name="index"/> to <paramref name="index"/> +
-<paramref name="length"/>- 1.</description>
-								</item>
-							</list>
-							<para>
-								<block subset="none" type="note"> If <paramref name="value"/> is
-not found, the caller can take the bitwise complement of the return value to
-determine the index of <paramref name="array"/> where <paramref name="value"/> would be found in the
-range of <paramref name="index"/> to <paramref name="index"/> + <paramref name="length"/> - 1 if <paramref name="array"/> is
-already sorted.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> is less than <paramref name="array"/>
-								<see langword=".GetLowerBound(0)"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> is less than zero.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> + <paramref name="length"/> is greater than <paramref name="array"/>
-								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
-								<see langword=".Length"/>.</para>
-							<para> -or- </para>
-							<para>
-								<paramref name="array"/>.UpperBound == <see cref="F:System.Int32.MaxValue"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and both <paramref name="value"/> and at least one element of <paramref name="array"/> do not implement the <see cref="T:System.IComparable"/>  interface.</para>
-						</exception>
-						<remarks>
-							<para>
-								<paramref name="value"/> is compared to each element of
-<paramref name="array"/> using <paramref name="comparer"/> until an element with a value greater 
-   than or equal to <paramref name="value"/> is found. If <paramref name="comparer"/> is <see langword="null"/>,
-   the <see cref="T:System.IComparable"/> interface of the element being compared - or of
-<paramref name="value"/> if the element being compared does not implement the interface 
-   -- is used. If <paramref name="value"/> does not implement the <see cref="T:System.IComparable"/> interface and is compared to an element
-   that does not implement the <see cref="T:System.IComparable"/> interface, a <see cref="T:System.InvalidOperationException"/>
-   exception is thrown. If <paramref name="array"/> is not already
-   sorted, correct results are not guaranteed.</para>
-							<para>
-								<block subset="none" type="note"> A null reference can
-   be compared with any type; therefore, comparisons with a
-   null reference do not generate exceptions.</block>
-							</para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> method.</para>
-							<code lang="C#">using System;
-class BinarySearchExample {
-  public static void Main() {    
-    int[] intAry = { 0, 2, 4, 6, 8 };
-    Console.WriteLine( "The indices and elements of the array are: ");
-    for ( int i = 0; i &lt; intAry.Length; i++ )
-      Console.Write("[{0}]: {1, -5}", i, intAry[i]);
-    Console.WriteLine();
-    SearchFor( intAry, 3 );
-    SearchFor( intAry, 6 );
-    SearchFor( intAry, 9 );
-  }
-  public static void SearchFor( Array ar, Object value ) {
-    int i = Array.BinarySearch( ar, 0, ar.Length, value, null );
-    Console.WriteLine();
-    if ( i &gt; 0 ) {
-      Console.Write( "The object searched for, {0}, was found ", value );
-      Console.WriteLine( "at index {1}.", value, i );
-    }
-    else if ( ~i == ar.Length ) {
-      Console.Write( "The object searched for, {0}, was ", value );
-      Console.Write( "not found,\nand no object in the array had " );
-      Console.WriteLine( "greater value. " );
-    }
-    else {
-      Console.Write( "The object searched for, {0}, was ", value );
-      Console.Write( "not found.\nThe next larger object is at " );
-      Console.WriteLine( "index {0}.", ~i );
-    }
-  }
-}
-   </code>
-							<para>The output is</para>
-							<c>
-								<para>The indices and elements of the array are:</para>
-								<para> [0]:0 [1]:2 [2]:4 [3]:6 [4]:8</para>
-								<para>The object searched for, 3, was not found.</para>
-								<para>The next larger object is at index 2.</para>
-								<para>The object searched for, 6, was found at index 3.</para>
-								<para>The object searched for, 9, was not found,</para>
-								<para>and no object in the array had greater value.</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, object value, class System.Collections.IComparer comparer)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, object value, IComparer comparer);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified one-dimensional <see cref="T:System.Array"/> for the specified
-   value, using the specified <see cref="T:System.Collections.IComparer"/>
-   implementation.</para>
-						</summary>
-						<param name="array">A <see cref="T:System.Array"/> to search.</param>
-						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
-   operation.</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description>Description</description>
-								</listheader>
-								<item>
-									<term> The index of <paramref name="value"/> in the
-      array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of the index of the first element that is larger than
-   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found, and at least one array element was
-   greater than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of (<paramref name="array"/>.GetLowerBound(0) +
-<paramref name="array"/>.Length).</term>
-									<description>
-										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than all
-array elements.</description>
-								</item>
-							</list>
-							<para>
-								<block subset="none" type="note"> If <paramref name="value"/>
-is not found, the caller can take the bitwise complement of the return value to
-determine the index where value would be found in <paramref name="array"/> if it is
-already sorted.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and both <paramref name="value"/> and at least one element of <paramref name="array"/> do not implement the <see cref="T:System.IComparable"/>  interface.</para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
-<paramref name="array"/>.Length, <paramref name="value"/>, <paramref name="comparer"/>).</para>
-							<para>
-								<paramref name="value"/> is compared to each element of
-<paramref name="array"/> using <paramref name="comparer"/> until an element with a value greater 
-than or equal to <paramref name="value"/> is found. If <paramref name="comparer"/> is <see langword="null"/>,
-the <see cref="T:System.IComparable"/> interface of the element being compared - or of
-<paramref name="value"/> if the element being compared does not implement the interface 
-- is used. If <paramref name="value"/> does not implement
-the <see cref="T:System.IComparable"/>
-interface and is compared to an element that does not implement
-the <see cref="T:System.IComparable"/>
-interface, a <see cref="T:System.InvalidOperationException"/> exception is thrown. If <paramref name="array"/> is
-not already sorted, correct results are not guaranteed.</para>
-							<para>
-								<block subset="none" type="note"> A null reference
-   can be compared with any type; therefore, comparisons
-   with a null reference do not generate exceptions.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, int32 index, int32 length, object value)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, int index, int length, object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified section of the specified
-      one-dimensional <see cref="T:System.Array"/> for the specified value.</para>
-						</summary>
-						<param name="array">A <see cref="T:System.Array"/> to search.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which searching starts.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="index"/> .</param>
-						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
-   operation.</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description>Description</description>
-								</listheader>
-								<item>
-									<term> The index of <paramref name="value"/> in the
-      array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of the index of the first element that is larger than
-   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found, and at least one array element in the
-   range of <paramref name="index"/> to <paramref name="index"/> + <paramref name="length"/> - 1 was greater
-   than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of (<paramref name="index"/> + <paramref name="length"/>).</term>
-									<description>
-										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than all
-array elements in the range of <paramref name="index"/> to <paramref name="index"/> +
-<paramref name="length"/>- 1.</description>
-								</item>
-							</list>
-							<para>
-								<block subset="none" type="note"> If <paramref name="value"/>
-is not found, the caller can take the bitwise complement of the return value to
-determine the index of the array where <paramref name="value"/> would be found in the
-range of <paramref name="index"/> to <paramref name="index"/> + <paramref name=" length"/> - 1 if <paramref name="array"/>
-is already sorted.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/> .</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/> (i.e. <paramref name="index"/> + <paramref name="length"/> &gt; <paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length).</para>
-							<para> -or-</para>
-							<para>
-								<paramref name="array"/>.UpperBound == <see cref="F:System.Int32.MaxValue"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>Either <paramref name="value"/> or at least one element of <paramref name="array"/> does not implement the <see cref="T:System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
-<paramref name="array"/>.Length, <paramref name="value"/>, 
-<see langword="null"/>). </para>
-							<para>
-								<paramref name="value"/> is compared to each element of <paramref name="array"/> using
-the <see cref="T:System.IComparable"/> interface of the element being compared - or of
-<paramref name="value"/> if the element being compared does not implement the interface - 
-until an element with a value greater than or equal to <paramref name="value"/> is found.
-If <paramref name="value"/> does not implement the <see cref="T:System.IComparable"/> interface and is compared to an element
-that does not implement the <see cref="T:System.IComparable"/> interface, a <see cref="T:System.InvalidOperationException"/>
-exception is thrown. If <paramref name="array"/> is not already sorted, correct results
-are not guaranteed. </para>
-							<para>
-								<block subset="none" type="note"> A null reference can be compared with
-   any type; therefore, comparisons with a null reference do not generate
-   exceptions.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, object value)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified one-dimensional <see cref="T:System.Array"/> for the specified object.</para>
-						</summary>
-						<param name="array">A <see cref="T:System.Array"/> to search for an object.</param>
-						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
-   operation.</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description> Description</description>
-								</listheader>
-								<item>
-									<term> The index of <paramref name="value"/> in the
-      array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of the index of the first element that is larger than
-   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found and the value of at least one element of
-<paramref name="array"/> was greater than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term> The bitwise complement of (<paramref name="array"/>.GetLowerBound(0) +
-<paramref name="array"/>.Length).</term>
-									<description>
-										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than the
-value of all array elements.</description>
-								</item>
-							</list>
-							<para>
-								<block subset="none" type="note"> If <paramref name="value"/>
-is not found, the caller can take the bitwise complement of the return value to
-determine the index where value would be found in <paramref name="array"/> if it is sorted
-already.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<para>
-								<paramref name="array"/> has more than one dimension.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>Both <paramref name="value"/> and at least one element of <paramref name="array"/> do not implement the <see cref="T:System.IComparable"/> interface. </para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
-<paramref name="array"/>.Length, <paramref name="value"/>, 
-<see langword="null"/>).</para>
-							<para>
-								<paramref name="value"/> is compared to each element of
-<paramref name="array"/> using the <see cref="T:System.IComparable"/> interface of the element being 
-compared - or of <paramref name="value"/> if the element being compared does not implement the
-interface - until an element with a value greater than or equal to
-<paramref name="value"/> is found. If <paramref name="value"/> does not implement the <see cref="T:System.IComparable"/> interface 
-and is compared to an element that does not implement the <see cref="T:System.IComparable"/> interface,
-a <see cref="T:System.InvalidOperationException"/> exception is thrown. If <paramref name="array"/>
-is not already sorted, correct results are not guaranteed.</para>
-							<para>
-								<block subset="none" type="note"> A null reference
-   can be compared with any type; therefore,
-   comparisons with a null reference do not generate exceptions.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0[] array, !!0 value)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, T value)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches an entire one-dimensional sorted array for a specific element, using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface implemented by each element of the array and by the specified object.</para>
-						</summary>
-						<param name="array">The one-dimensional array to search.</param>
-						<param name="value">The object for which to search.</param>
-						<returns>
-							<para>One of the following values based on the result of the search operation:</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description>Description</description>
-								</listheader>
-								<item>
-									<term>A non-negative index of <paramref name="value"/> in the array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
-									<description>
-										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
-								</item>
-							</list>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/> .</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>Neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interfaces.</para>
-						</exception>
-						<remarks>
-							<para>Either <paramref name="value"/> or every element of <paramref name="array"/>  must implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/>  interface, which is used for comparisons. The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation; otherwise, the  behavior is unspecified</para>
-							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
-							<para>
-								<block subset="none" type="note">
-									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0[] array, !!0 value, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, T value, IComparer&lt;T&gt; comparer)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches an entire one-dimensional sorted array for a value using the specified <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> interface.</para>
-						</summary>
-						<param name="array">The one-dimensional array to search.</param>
-						<param name="value">The object for which to search.</param>
-						<param name="comparer">
-							<para>The implementation to use when comparing elements.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/> to use the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<returns>
-							<para>One of the following values based on the result of the search operation:</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description>Description</description>
-								</listheader>
-								<item>
-									<term>A non-negative index of <paramref name="value"/> in the array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
-									<description>
-										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
-								</item>
-							</list>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/> .</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>The comparer customizes how the elements are compared.</para>
-							<para>The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by <paramref name="comparer"/>; otherwise, the behavior is unspecified</para>
-							<para>If <paramref name="comparer"/> is not <see langword="null"/>, the elements of <paramref name="array"/> are compared to the specified value using the specified  <see cref="T:System.Collections.Generic.IComparer"/> implementation. </para>
-							<para>If <paramref name="comparer"/> is <see langword="null"/>, the default comparer is used.</para>
-							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
-							<para>
-								<block subset="none" type="note">
-									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0 array, int32 index, int32 length, !!0 value)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, int index, int length, T value)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="value" Type="T"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches a range of elements in a one-dimensional sorted array for a value, using the <see cref="T:System.IComparable"/> interface implemented by each element of the array and by the specified value.</para>
-						</summary>
-						<param name="array">The one-dimensional array to search.</param>
-						<param name="index">The starting index of the range to search.</param>
-						<param name="length">The length of the range to search.</param>
-						<param name="value">The object for which to search.</param>
-						<returns>
-							<para>One of the following values based on the result of the search operation:</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description>Description</description>
-								</listheader>
-								<item>
-									<term>A non-negative index of <paramref name="value"/> in the array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
-									<description>
-										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
-								</item>
-							</list>
-						</returns>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> + <paramref name="length"/> is greater than <paramref name="array"/>
-								<see langword=".Length"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/> .</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> is less than zero</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> is less than zero.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>Neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>Either <paramref name="value"/> or every element of <paramref name="array"/>  must implement the <see cref="T:System.IComparable"/>  interface, which is used for comparisons. The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation; otherwise, the behavior is unspecified</para>
-							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
-							<para>
-								<block subset="none" type="note">
-									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="BinarySearch&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0[] array, int32 index, int32 length, !!0 value, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
-					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, int index, int length, T value, IComparer&lt;T&gt; comparer)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="value" Type="T"/>
-						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches a range of elements in a one-dimensional sorted array for a value, using the specified <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> interface.</para>
-						</summary>
-						<param name="array">The one-dimensional array to search.</param>
-						<param name="index">The starting index of the range to search.</param>
-						<param name="length">The length of the range to search.</param>
-						<param name="value">The object for which to search.</param>
-						<param name="comparer">
-							<para>The implementation to use when comparing elements.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/> to use the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<returns>
-							<para>One of the following values based on the result of the search operation:</para>
-							<list type="table">
-								<listheader>
-									<term>Return Value</term>
-									<description>Description</description>
-								</listheader>
-								<item>
-									<term>A non-negative index of <paramref name="value"/> in the array.</term>
-									<description>
-										<paramref name="value"/> was found.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
-									<description>
-										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
-								</item>
-								<item>
-									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
-									<description>
-										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
-								</item>
-							</list>
-						</returns>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in array.</para>
-						</exception>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/> .</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> is less than zero</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> is less than zero.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>The comparer customizes how the elements are compared.</para>
-							<para>The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by <paramref name="comparer"/>; otherwise, the behavior is unspecified.</para>
-							<para>If <paramref name="comparer"/> is not <see langword="null"/>, the elements of <paramref name="array"/> are compared to the specified value using the specified  <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> implementation. </para>
-							<para>If <paramref name="comparer"/> is <see langword="null"/>, the comparison is done using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable "/> implementation provided by the element itself or by the specified value.</para>
-							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
-							<para>
-								<block subset="none" type="note">
-									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Clear">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Clear(class System.Array array, int32 index, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Clear(Array array, int index, int length);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sets the specified range of elements in the
-      specified <see cref="T:System.Array"/> to zero, false, or to a null reference, depending on the
-      element type.</para>
-						</summary>
-						<param name="array">The <see cref="T:System.Array"/> to clear.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which clearing starts.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to clear, beginning with <paramref name="index"/>.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/> (i.e. <paramref name="index"/> + <paramref name="length"/> &gt; <paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length ).</para>
-						</exception>
-						<remarks>
-							<para>Reference-type elements will be set to
-   <see langword="null"/>. Value-type elements will be set to zero, 
-      except for <see cref="T:System.Boolean"/>
-      elements, which will be set to
-   <see langword="false"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Clone">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual object Clone()"/>
-					<MemberSignature Language="C#" Value="public virtual object Clone();"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Object</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>
-							<para>Returns a <see cref="T:System.Object"/> that is a copy of the current instance.</para>
-						</summary>
-						<returns>
-							<para>A <see cref="T:System.Object"/> that is a copy of
-   the current instance.</para>
-						</returns>
-						<remarks>
-							<para>
-								<block subset="none" type="note"> This method is implemented to support
-      the <see cref="T:System.ICloneable"/>
-      interface.</block>
-							</para>
-							<para>
-								<block subset="none" type="behaviors">Each of the
-      elements of the current instance is copied to the clone. If the elements are
-      reference types, the references are copied. If the elements are value-types, the
-      values are copied. The clone is of the same type as the current
-      instance.</block>
-							</para>
-							<para>
-								<block subset="none" type="default">As described above.</block>
-							</para>
-							<para>
-								<block subset="none" type="overrides">Override this method to return a
-      clone of an array.</block>
-							</para>
-							<para>
-								<block subset="none" type="usage">Use this method to obtain the clone of
-      an array.</block>
-							</para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.Clone"/> method.</para>
-							<code lang="C#">using System;
-public class ArrayCloneExample {
-  public static void Main() {
-    int[] intAryOrig = { 3, 4, 5 };
-    //must explicitly convert clones object into an array
-    int[] intAryClone = (int[]) intAryOrig.Clone();
-    Console.Write( "The elements of the first  array are: " );
-    foreach( int i in intAryOrig )
-      Console.Write( "{0,3}", i );
-    Console.WriteLine();
-    Console.Write( "The elements of the cloned array are: " );
-    foreach( int i in intAryClone )
-      Console.Write( "{0,3}", i );
-    Console.WriteLine();
-    //Clear the values of the original array.
-    Array.Clear( intAryOrig, 0, 3 );
-    Console.WriteLine( "After clearing the first array," );
-    Console.Write( "The elements of the first  array are: " );
-    foreach( int i in intAryOrig )
-      Console.Write( "{0,3}", i );
-    Console.WriteLine();
-    Console.Write( "The elements of the cloned array are: " );
-    foreach( int i in intAryClone )
-      Console.Write( "{0,3}", i );
-  }
-}
-   </code>
-							<para>The output is</para>
-							<c>
-								<para>The elements of the first array are: 3 4 5</para>
-								<para>The elements of the cloned array are: 3 4 5</para>
-								<para>After clearing the first array,</para>
-								<para>The elements of the first array are: 0 0 0</para>
-								<para>The elements of the cloned array are: 3 4 5</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="ConvertAll&lt;T,U&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static !!1[] ConvertAll&lt;T,U&gt;(!!0[] array, class System.Converter`1&lt;!!0,!!1&gt; converter)"/>
-					<MemberSignature Language="C#" Value="public static U[] ConvertAll&lt;T,U&gt;(T[] array, Converter&lt;T,U&gt; converter)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>U[]</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="converter" Type="System.Converter&lt;T,U&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Converts an array of one type to an array of another type.</para>
-						</summary>
-						<param name="array">The one-dimensional array to convert.</param>
-						<param name="converter">
-							<para>A <see cref="T:System.Converter&lt;T,U&gt;"/> that converts each element from one type to another type.</para>
-						</param>
-						<returns>
-							<para>A new array of the target type containing the converted elements from <paramref name="array"/>.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/> or <paramref name="converter"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The <see cref="T:System.Converter&lt;T,U&gt;"/> is a delegate that converts an array element to the target type.  The elements of  <paramref name="array"/> are individually passed to this converter, and the converted elements are saved in the new array. The source array remains unchanged.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Copy">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Copy(class System.Array sourceArray, class System.Array destinationArray, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Copy(Array sourceArray, Array destinationArray, int length);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="sourceArray" Type="System.Array"/>
-						<Parameter Name="destinationArray" Type="System.Array"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Copies the specified number of elements from the 
-      specified source array to the specified destination array.</para>
-						</summary>
-						<param name="sourceArray">A <see cref="T:System.Array"/> that contains the data to copy.</param>
-						<param name="destinationArray">A <see cref="T:System.Array"/> that receives the data.</param>
-						<param name="length">A <see cref="T:System.Int32"/> designating the number of elements to copy, starting with the first element and proceeding in order.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="sourceArray"/> or <paramref name="destinationArray"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<para>
-								<paramref name="sourceArray"/> and <paramref name="destinationArray"/> have different ranks.</para>
-						</exception>
-						<exception cref="T:System.ArrayTypeMismatchException">
-							<para>The elements in both arrays are built-in types, and converting from the type of the elements of <paramref name="sourceArray"/> into the type of the elements in <paramref name="destinationArray"/> requires a narrowing conversion.</para>
-							<para> -or-</para>
-							<para>Both arrays are built-in types, and one array is a value-type array and the other an array of interface type not implemented by that value-type.</para>
-							<para> -or-</para>
-							<para>Both arrays are user-defined value types and are not of the same type.</para>
-						</exception>
-						<exception cref="T:System.InvalidCastException">
-							<para> At least one of the elements in <paramref name="sourceArray"/> is not assignment-compatible with the type of <paramref name="destinationArray"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="length"/> &gt; <paramref name="sourceArray"/>.Length.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length "/> &gt; <paramref name="destinationArray"/>.Length.</para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> is equivalent to <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> (<paramref name="sourceArray"/>, <paramref name="sourceArray"/>.GetLowerBound(0), <paramref name="destinationArray"/>,
-<paramref name="destinationArray"/>.GetLowerBound(0), <paramref name="length"/>). </para>
-							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/> are of different
-types, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> performs widening conversions on the elements of
-<paramref name="sourceArray"/> as necessary before storing the information in 
-<paramref name="destinationArray"/>. Value types will be boxed when being converted to a 
-<see cref="T:System.Object"/>. If the necessary 
-conversion is a narrowing conversion, a <see cref="T:System.ArrayTypeMismatchException"/> exception is thrown. <block subset="none" type="note">
-For information regarding valid conversions performed by this method, see
-<see cref="T:System.Convert"/>.</block>
-							</para>
-							<para>If an exception is thrown while copying, the state of
-<paramref name="destinationArray"/> is undefined. </para>
-							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/> are the same
-array, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> copies the source elements safely to their
-destination, as if the copy were done through an intermediate array. </para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> method.</para>
-							<code lang="C#">using System;
-public class ArrayCopyExample {
-   public static void Main() {
-      int[] intAryOrig = new int[3];
-      double[] dAryCopy = new double[3];
-      for ( int i = 0; i &lt; intAryOrig.Length; i++ )
-         intAryOrig[i] = i+3;
-      //copy the first 2 elements of the source into the destination
-      Array.Copy( intAryOrig, dAryCopy, 2);
-      Console.Write( "The elements of the first array are: " );
-      for ( int i = 0; i &lt; intAryOrig.Length; i++ ) 
-         Console.Write( "{0,3}", intAryOrig[i] );
-      Console.WriteLine();
-      Console.Write( "The elements of the copied array are: " );
-      for ( int i = 0; i &lt; dAryCopy.Length; i++ ) 
-         Console.Write( "{0,3}", dAryCopy[i] );
-   }
-}
-   </code>
-							<para>The output is</para>
-							<c>
-								<para>The elements of the first array are: 3 4 5</para>
-								<para>The elements of the copied array are: 3 4 0</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Copy">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Copy(class System.Array sourceArray, int32 sourceIndex, class System.Array destinationArray, int32 destinationIndex, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="sourceArray" Type="System.Array"/>
-						<Parameter Name="sourceIndex" Type="System.Int32"/>
-						<Parameter Name="destinationArray" Type="System.Array"/>
-						<Parameter Name="destinationIndex" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Copies the specified number of elements from a source 
-      array starting at the specified source index to a destination array
-      starting at the specified destination index.</para>
-						</summary>
-						<param name="sourceArray">The <see cref="T:System.Array"/> that contains the data to copy.</param>
-						<param name="sourceIndex">A <see cref="T:System.Int32"/> that contains the index in <paramref name="sourceArray"/> from which copying begins.</param>
-						<param name="destinationArray">The <see cref="T:System.Array"/> that receives the data.</param>
-						<param name="destinationIndex">A <see cref="T:System.Int32"/> that contains the index in <paramref name="destinationArray"/> at which storing begins.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to copy.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="sourceArray"/> or <paramref name="destinationArray"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<para>
-								<paramref name="sourceArray"/> and <paramref name="destinationArray"/> have different ranks.</para>
-						</exception>
-						<exception cref="T:System.ArrayTypeMismatchException">
-							<para>The elements in both arrays are built-in types, and converting from the type of the elements of <paramref name="sourceArray"/> into the type of the elements in <paramref name="destinationArray"/> requires a narrowing conversion.</para>
-							<para>-or-</para>
-							<para>Both arrays are built-in types, and one array is a value-type array and the other an array of interface type not implemented by that value-type.</para>
-							<para>-or-</para>
-							<para>Both arrays are user-defined value types and are not of the same type.</para>
-						</exception>
-						<exception cref="T:System.InvalidCastException">
-							<para>At least one element in <paramref name="sourceArray"/> is assignment-incompatible with the type of <paramref name="destinationArray"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="sourceIndex"/> &lt; <paramref name="sourceArray"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="destinationIndex"/> &lt; <paramref name="destinationArray"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>(<paramref name="sourceIndex"/> + <paramref name="length"/> ) &gt; (<paramref name="sourceArray"/>.GetLowerBound(0) + <paramref name="sourceArray"/>.Length).</para>
-							<para>(<paramref name="destinationIndex"/> + <paramref name="length"/> ) &gt; ( <paramref name="destinationArray"/>.GetLowerBound(0) + <paramref name="destinationArray"/>.Length).</para>
-						</exception>
-						<remarks>
-							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/>
-are of different types, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> performs widening conversions on the elements of
-<paramref name="sourceArray"/> as necessary before storing the information in 
-<paramref name="destinationArray"/>. Value types will be boxed when being converted to a 
-<see cref="T:System.Object"/>. If the necessary 
-conversion is a narrowing conversion, a <see cref="T:System.ArrayTypeMismatchException"/> exception is thrown. <block subset="none" type="note">
-For information regarding valid conversions performed by this method, see
-<see cref="T:System.Convert"/> .</block>
-							</para>
-							<para>If an exception is thrown while copying, the state of
-<paramref name="destinationArray"/> is undefined. </para>
-							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/>
-are the same array, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> copies the source elements safely to their
-destination as if the copy were done through an intermediate array. </para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> method.</para>
-							<code lang="C#">using System;
-class ArrayCopyExample {
-   public static void Main() {
-      int[] intAry = { 0, 10, 20, 30, 40, 50 };
-      Console.Write( "The elements of the array are: " );
-      foreach ( int i in intAry )
-         Console.Write( "{0,3}", i );
-      Console.WriteLine();
-      Array.Copy( intAry, 2, intAry, 0, 4 );
-      Console.WriteLine( "After copying elements 2 through 5 into elements 0 through 4" );
-      Console.Write( "The elements of the array are: " );
-      foreach ( int i in intAry )
-         Console.Write( "{0,3}", i );
-      Console.WriteLine();     
-   }
-}
-   </code>
-							<para>The output is</para>
-							<c>
-								<para>The elements of the array are: 0 10 20 30 40 50</para>
-								<para>After copying elements 2 through 5 into elements 0 through 4</para>
-								<para>The elements of the array are: 20 30 40 50 40 50</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="CopyTo">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual void CopyTo(class System.Array array, int32 index)"/>
-					<MemberSignature Language="C#" Value="public virtual void CopyTo(Array array, int index);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Copies all the elements of the current zero-based instance to the specified one-dimensional array starting at the specified subscript in the destination array.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied from the current instance.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index in <paramref name="array"/> at which copying begins.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<para>The current instance has more than one dimension.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<paramref name="index"/> &lt; <paramref name="array"/>
-							<see langword=".GetLowerBound(0)"/>.</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="array"/> has more than one dimension.</para>
-							<para> -or-</para>
-							<para>( <paramref name="index"/> + Length of the current instance) &gt; (<paramref name="array"/>
-								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
-								<see langword=".Length"/>).</para>
-							<para> -or-</para>
-							<para>The number of elements in the current instance is greater than the available space from <paramref name="index"/> to the end of <paramref name="array"/>.</para>
-						</exception>
-						<exception cref="T:System.ArrayTypeMismatchException">The element type of the current instance is not assignment-compatible with the element type of <paramref name="array"/>.</exception>
-						<remarks>
-							<para>
-								<paramref name="index"/> is the array index in the destination array at which copying begins.</para>
-							<block subset="none" type="note">
-								<para>This method is implemented to support the <see cref="T:System.Collections.ICollection"/> interface. If implementing <see cref="T:System.Collections.ICollection"/> is not explicitly required, use <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/>
-   to avoid an extra indirection.</para>
-								<para>If this method throws an exception while copying, the state of <paramref name="array"/>
-is undefined.</para>
-							</block>
-							<para>
-								<block subset="none" type="behaviors">As described
-   above.</block>
-							</para>
-							<para>
-								<block subset="none" type="default">As described
-   above.</block>
-							</para>
-							<para>
-								<block subset="none" type="overrides">Override this
-   method to copy elements of the current instance to a specified
-   array.</block>
-							</para>
-							<para>
-								<block subset="none" type="usage">Use this method to
-   copy elements of the current instance to a specified array.</block>
-							</para>
-						</remarks>
-						<example>
-							<para> The following example shows how to copy the elements of one <see cref="T:System.Array"/> into another.</para>
-							<code lang="C#">using System;
-
-public class ArrayCopyToExample
-{
-   public static void Main()
-   {
-      Array aryOne = Array.CreateInstance(typeof(Object), 3);
-      aryOne.SetValue("one", 0);
-      aryOne.SetValue("two", 1);
-      aryOne.SetValue("three", 2);
-
-      Array aryTwo = Array.CreateInstance(typeof(Object), 5);
-      for (int i=0; i &lt; aryTwo.Length; i++)
-         aryTwo.SetValue(i, i);
-
-      Console.WriteLine("The contents of the first array are:");
-      foreach (object o in aryOne)
-         Console.Write("{0} ", o);
-      Console.WriteLine();
-      Console.WriteLine("The original contents of the second array are:");
-      foreach (object o in aryTwo)
-         Console.Write("{0} ", o);
-      Console.WriteLine();
-      
-      aryOne.CopyTo(aryTwo, 1);
-
-      Console.WriteLine("The new contents of the second array are:");
-      foreach( object o in aryTwo)
-         Console.Write("{0} ", o);
-   }
-}
-</code>
-							<para>The output is</para>
-							<para>
-								<c>The contents of the first array are:</c>
-							</para>
-							<para>
-								<c> one two three</c>
-							</para>
-							<para>
-								<c>The original contents of the second array are:</c>
-							</para>
-							<para>
-								<c>0 1 2 3 4</c>
-							</para>
-							<para>
-								<c> The new contents of the second array are:</c>
-							</para>
-							<para>
-								<c>0 one two three 4</c>
-							</para>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="CreateInstance">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32[] lengths)"/>
-					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int[] lengths);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Array</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="elementType" Type="System.Type"/>
-						<Parameter Name="lengths" Type="System.Int32[]"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Creates a zero-based, multidimensional array of the
-      specified <see cref="T:System.Type"/> and dimension lengths.</para>
-						</summary>
-						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
-						<param name="lengths">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the size of each dimension of the new <see cref="T:System.Array"/> instance.</param>
-						<returns>
-							<para>A new zero-based, multidimensional <see cref="T:System.Array"/> instance of the
-   specified <see cref="T:System.Type"/> with the specified length for
-   each dimension. The <see cref="P:System.Array.Rank"/> of the new instance is equal to
-<paramref name="lengths"/>.Length.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="elementType"/> or <paramref name="lengths"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="lengths"/>.Length = 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">A value in <paramref name="lengths"/> is less than zero.</exception>
-						<remarks>
-							<para>The number of elements in <paramref name="lengths"/> is required to equal the number of
-   dimensions in the new <see cref="T:System.Array"/> instance. Each element of <paramref name="lengths"/> specifies
-   the length of the corresponding dimension in the new instance.</para>
-							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
-except for <see cref="T:System.Boolean"/>
-elements, which will be set to
-<see langword="false"/>.</para>
-							<para>
-								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
-<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow
-for late bound access.</block>
-							</para>
-						</remarks>
-						<example>
-							<para> The following example shows how to create and initialize a
-      multidimensional <see cref="T:System.Array"/>.</para>
-							<code lang="C#">
-using System;
-
-public class CreateMultiDimArrayExample
-{
-   public static void Main()
-   {
-      int i, j, k;
-      int[] indexAry = {2, 4, 5};
-      Array ary = Array.CreateInstance( typeof(int), indexAry );
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
-         {
-            for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
-            {
-               ary.SetValue( (100*i + 10*j + k), i, j, k );
-            }
-         }
-      }
-      Console.WriteLine("The elements of the array are:");
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
-         {
-             for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
-            {
-               Console.Write("{0, 3} ", ary.GetValue(i, j, k));
-            }
-            Console.WriteLine();
-         }
-         Console.WriteLine();
-      }
-   }
-}
-   </code>
-							<para>The output is</para>
-							<code>The elements of the array are:
-  0   1   2   3   4
- 10  11  12  13  14
- 20  21  22  23  24
- 30  31  32  33  34
-
-100 101 102 103 104
-110 111 112 113 114
-120 121 122 123 124
-130 131 132 133 134 
-</code>
-						</example>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="CreateInstance">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32 length1, int32 length2, int32 length3)"/>
-					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int length1, int length2, int length3);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Array</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="elementType" Type="System.Type"/>
-						<Parameter Name="length1" Type="System.Int32"/>
-						<Parameter Name="length2" Type="System.Int32"/>
-						<Parameter Name="length3" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Creates a zero-based, three-dimensional array of the
-      specified <see cref="T:System.Type"/> and dimension lengths.</para>
-						</summary>
-						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
-						<param name="length1">A <see cref="T:System.Int32"/> that contains the number of elements contained in the first dimension of the new <see cref="T:System.Array"/> instance. </param>
-						<param name="length2">A <see cref="T:System.Int32"/> that contains the number of elements contained in the second dimension of the new <see cref="T:System.Array"/> instance. </param>
-						<param name="length3">A <see cref="T:System.Int32"/> that contains the number of elements contained in the third dimension of the new <see cref="T:System.Array"/> instance. </param>
-						<returns>
-							<para>A new zero-based, three-dimensional <see cref="T:System.Array"/> instance of <paramref name="elementType"/> objects with the size
-<paramref name="length1"/> for the first dimension, <paramref name="length2"/> for the second, and 
-<paramref name="length3"/> for the third.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="elementType"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentException">
-							<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="length1"/> &lt; 0.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length2"/> &lt; 0.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length3"/> &lt; 0.</para>
-						</exception>
-						<remarks>
-							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
-   except for <see cref="T:System.Boolean"/>
-   elements, which will be set to
-<see langword="false"/>.</para>
-							<para>
-								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
-<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow 
-for late bound access.</block>
-							</para>
-						</remarks>
-						<example>
-							<para> The following example shows how to create and
-      initialize a three-dimensional <see cref="T:System.Array"/>.</para>
-							<code lang="C#">
-using System;
-
-public class Create3DArrayExample
-{
-   public static void Main()
-   {
-      int i, j, k;
-      Array ary = Array.CreateInstance( typeof(int), 2, 4, 3 );
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
-         {
-            for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
-            {
-               ary.SetValue( (100*i + 10*j + k), i, j, k );
-            }
-         }
-      }
-      Console.WriteLine("The elements of the array are:");
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
-         {
-             for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
-            {
-               Console.Write("{0, 3} ", ary.GetValue(i, j, k));
-            }
-            Console.WriteLine();
-         }
-         Console.WriteLine();
-      }
-   }
-}
-   </code>
-							<para>The output is</para>
-							<code>The elements of the array are:
-  0   1   2
- 10  11  12
- 20  21  22
- 30  31  32
-
-100 101 102
-110 111 112
-120 121 122
-130 131 132
- </code>
-						</example>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="CreateInstance">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32 length1, int32 length2)"/>
-					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int length1, int length2);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Array</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="elementType" Type="System.Type"/>
-						<Parameter Name="length1" Type="System.Int32"/>
-						<Parameter Name="length2" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Creates a zero-based, two-dimensional array of the specified <see cref="T:System.Type"/>
-and dimension lengths.</para>
-						</summary>
-						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
-						<param name="length1">A <see cref="T:System.Int32"/> that contains the number of elements contained in the first dimension of the new <see cref="T:System.Array"/> instance. </param>
-						<param name="length2">A <see cref="T:System.Int32"/> that contains the number of elements contained in the second dimension of the new <see cref="T:System.Array"/> instance. </param>
-						<returns>
-							<para>A new zero-indexed, two-dimensional <see cref="T:System.Array"/> instance of <paramref name="elementType"/> objects with the size
-<paramref name="length1"/> for the first dimension and <paramref name="length2"/> 
-for the second.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="elementType"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentException">
-							<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="length1"/> &lt; 0.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length2"/> &lt; 0.</para>
-						</exception>
-						<remarks>
-							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
-   except for <see cref="T:System.Boolean"/>
-   elements, which will be set to
-<see langword="false"/>.</para>
-							<para>
-								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
-<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow 
-for late bound access.</block>
-							</para>
-						</remarks>
-						<example>
-							<para> The following example shows how to create and
-      initialize a two-dimensional <see cref="T:System.Array"/>.</para>
-							<code lang="C#">
-using System;
-
-public class Create2DArrayExample
-{
-   public static void Main()
-   {
-      int i, j;
-      Array ary = Array.CreateInstance( typeof(int), 5, 3 );
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
-         {
-            ary.SetValue( (10*i + j), i, j );
-         }
-      }
-      Console.WriteLine("The elements of the array are:");
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
-         {
-            Console.Write("{0, 2} ", ary.GetValue(i, j));
-         }
-         Console.WriteLine();
-      }
-   }
-} 
-  </code>
-							<para>The output is</para>
-							<code>The elements of the array are:
- 0  1  2
-10 11 12
-20 21 22
-30 31 32
-40 41 42
- </code>
-						</example>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="CreateInstance">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int length);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Array</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="elementType" Type="System.Type"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Constructs a zero-based, one-dimensional array with the specified number of elements of the specified type.</para>
-						</summary>
-						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements contained in the new <see cref="T:System.Array"/> instance.</param>
-						<returns>
-							<para>A zero-based, one-dimensional <see cref="T:System.Array"/> object containing <paramref name="length"/> elements of type
-<paramref name="elementType"/>.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="elementType"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentException">
-							<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<paramref name="length"/> &lt; 0.</exception>
-						<remarks>
-							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
-   except for <see cref="T:System.Boolean"/>
-   elements, which will be set to
-<see langword="false"/>.</para>
-							<para>
-								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the <see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow
-for late bound access.</block>
-							</para>
-						</remarks>
-						<example>
-							<para> The following example shows how to create and
-      initialize a one-dimensional <see cref="T:System.Array"/>.</para>
-							<code lang="C#">using System;
-
-public class ArrayCreateInstanceExample
-{
-
-   public static void Main()
-   {
-
-      Array intAry = Array.CreateInstance(typeof(int),5);
-      for (int i=intAry.GetLowerBound(0);i&lt;=intAry.GetUpperBound(0);i++)
-         intAry.SetValue(i*3,i);
-      Console.Write("The values of the array are:");
-      foreach (int i in intAry)
-         Console.Write("{0} ",i);
-   
-   }
-
-}
-   </code>
-							<para>The output is</para>
-							<para>
-								<c>The values of the array are: 0 3 6 9 12</c>
-							</para>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="CreateInstance">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32[] lengths, int32[] lowerBounds)"/>
-					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int[] lengths, int[] lowerBounds);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Array</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="elementType" Type="System.Type"/>
-						<Parameter Name="lengths" Type="System.Int32[]"/>
-						<Parameter Name="lowerBounds" Type="System.Int32[]"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Creates a multidimensional array whose element type is the specified <see cref="T:System.Type"/>, and dimension lengths and lower bounds, as specified.</para>
-						</summary>
-						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
-						<param name="lengths">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the size of each dimension of the new <see cref="T:System.Array"/> instance.</param>
-						<param name="lowerBounds">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the lower bound of each dimension of the new <see cref="T:System.Array"/> instance.</param>
-						<returns>
-							<para>A new multidimensional <see cref="T:System.Array"/> whose element type is the specified <see cref="T:System.Type"/> and with
-   the specified length and lower bound for each dimension.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="elementType"/>, <paramref name="lengths"/>, or <paramref name="lowerBounds"/> is <see langword="null"/>. </para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="lengths"/>.Length = 0.</para>
-							<para> -or-</para>
-							<para>
-								<paramref name="lengths"/> and <paramref name="lowerBounds"/> do not contain the same number of elements.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">A value in <paramref name="lengths"/> is less than zero.</exception>
-						<remarks>
-							<para>The <paramref name="lengths"/> and <paramref name="lowerBounds"/>
-are required to have the same number of elements. The number of elements in
-<paramref name="lengths"/>
-equals the number of dimensions in the new <see cref="T:System.Array"/> instance</para>
-							<para> Each element of <paramref name="lengths"/>
-specifies the length of the corresponding dimension in the new <see cref="T:System.Array"/> instance.</para>
-							<para> Each element of <paramref name="lowerBounds"/> specifies the lower bound of the
-corresponding dimension in the new <see cref="T:System.Array"/> instance.</para>
-							<para> Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero,
-except for <see cref="T:System.Boolean"/>
-elements, which will be set to
-<see langword="false"/>.</para>
-							<para>
-								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
-<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow
-for late bound access.</block>
-							</para>
-						</remarks>
-						<example>
-							<para> The following example shows how to create and
-      initialize a multidimensional <see cref="T:System.Array"/>
-      with specified low bounds.</para>
-							<code lang="C#">
-using System;
-
-public class MultiDimNonZeroBoundExample
-{
-   public static void Main()
-   {
-      int i, j, k;
-      int[] indexAry = {4, 2, 3};
-      int[] lowboundAry = {3, 2, 1};
-      Array ary = Array.CreateInstance( typeof(int), indexAry, lowboundAry );
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
-         {
-            for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
-            {
-               ary.SetValue( (100*i + 10*j + k), i, j, k );
-            }
-         }
-      }
-      Console.WriteLine("The elements of the array are:");
-      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
-      {
-         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
-         {
-             for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
-            {
-               Console.Write("{0, 3} ", ary.GetValue(i, j, k));
-            }
-            Console.WriteLine();
-         }
-         Console.WriteLine();
-      }
-   }
-}
-   </code>
-							<para>The output is</para>
-							<code>The elements of the array are:
-321 322 323
-331 332 333
-
-421 422 423
-431 432 433
-
-521 522 523
-531 532 533
-
-621 622 623
-631 632 633
-</code>
-						</example>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="Exists&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static bool Exists&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static bool Exists&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Boolean</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Determines whether the specified array contains any element that matches the conditions defined by the specified predicate.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="match">
-							<para>The predicate that defines the conditions of the elements to search for.</para>
-						</param>
-						<returns>
-							<para>
-								<see langword="true"/>, if the array contains one or more elements that match the conditions defined by the specified predicate; otherwise, <see langword="false"/>.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The predicate returns <see langword="true"/> if the object passed to it matches the delegate. Each element of <paramref name="array"/> is passed to the predicate in turn, and processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Find&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static !!0 Find&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static T Find&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>T</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the first occurrence within the entire array.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="match">
-							<para>The predicate that defines the conditions of the element to search for.</para>
-						</param>
-						<returns>
-							<para>The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type <paramref name="T"/>.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate, moving forward in the array, starting with the first element and ending with the last element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindAll&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class !!0[] FindAll&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static T[] FindAll&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>T[]</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Retrieves all the elements that match the conditions defined by the specified predicate.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>An array containing all the elements that match the conditions defined by the specified predicate, if found; otherwise, an empty array.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate, and those elements for which the predicate returns <see langword="true"/>, are saved in the returned array.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindIndex&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindIndex&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static int FindIndex&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the zero-based index of the first occurrence within the entire array.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched forward starting at the first element and ending at the last element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindIndex&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindIndex&lt;T&gt;(!!0[] array, int32 startIndex, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static int FindIndex&lt;T&gt;(T[] array, int startIndex, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the zero-based index of the first occurrence within the range of elements in the array that extends from the specified index to the last element.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="startIndex">
-							<para>The zero-based starting index of the search.</para>
-						</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
-							<see langword=".Length"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched forward starting at the specified index and ending at the last element.  Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindIndex&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindIndex&lt;T&gt;(!!0[] array, int32 startIndex, int32 count, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static int FindIndex&lt;T&gt;(T[] array, int startIndex, int count, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="count" Type="System.Int32"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the zero-based index of the first occurrence within the range of elements in the array that starts at the specified index and contains the specified number of elements.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="startIndex">
-							<para>The zero-based starting index of the search</para>
-						</param>
-						<param name="count">
-							<para>The number of consecutive elements to search.</para>
-						</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="startIndex"/> + <paramref name="count"/> is greater than <paramref name="array"/>
-								<see langword=".Length"/>.</para>
-						</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched forward starting at the specified index and going for <paramref name="count"/> elements.  Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindLast&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static !!0 FindLast&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static T FindLast&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>T</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the last occurrence within the entire array.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>The last element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type <paramref name="T"/>.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate, moving backward in the array, starting with the last element and ending with the first element. Processing is stopped when a match is found.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindLastIndex&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindLastIndex&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static int FindLastIndex&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the zero-based index of the last occurrence within the entire array.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched backwards starting at the last element and ending at the first element.  Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindLastIndex&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindLastIndex&lt;T&gt;(!!0[] array, int32 startIndex, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static int FindLastIndex&lt;T&gt;(T[] array, int startIndex, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the zero-based index of the last occurrence within the range of elements in the array that extends from the specified index to the last element.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="startIndex">
-							<para>The zero-based starting index of the backward search.</para>
-						</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
-							<see langword=".Length"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched backward starting at the specified index and ending at the first element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="FindLastIndex&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindLastIndex&lt;T&gt;(!!0[] array, int32 startIndex, int32 count, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static int FindLastIndex&lt;T&gt;(T[] array, int startIndex, int count, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="count" Type="System.Int32"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for an element that matches the predicate, and returns the zero-based index of the last occurrence within the range of elements in the array that ends at the specified index and contains the specified number of elements.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="startIndex">
-							<para>The zero-based starting index of the backward search.</para>
-						</param>
-						<param name="count">
-							<para>The number of consecutive elements to search.</para>
-						</param>
-						<param name="match">
-							<para>The predicate that specifies the elements to search for.</para>
-						</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
-								<see langword=".Length"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is greater than <paramref name="startIndex"/> + 1.</para>
-						</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched backward starting at the specified index and going for <paramref name="count"/> elements. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="ForEach&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void ForEach&lt;T&gt;(!!0[] array, class System.Action`1&lt;!!0&gt; action)"/>
-					<MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt;(T[] array, Action&lt;T&gt; action)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="action" Type="System.Action&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Performs the specified action on each element of the specified array.</para>
-						</summary>
-						<param name="array">The array on whose elements the action is to be performed.</param>
-						<param name="action">
-							<para>The action to perform on each element of <paramref name="array"/>.</para>
-						</param>
-						<returns>
-							<para>The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type <paramref name="T"/>.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="action"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The elements of <paramref name="array"/> are individually passed to the action. The elements of the current array are individually passed to the action delegate, sequentially, in index order, and on the same thread as that used to call <see langword="ForEach"/>. Execution stops if the action throws an exception.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="GetEnumerator">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual class System.Collections.IEnumerator GetEnumerator()"/>
-					<MemberSignature Language="C#" Value="public virtual IEnumerator GetEnumerator();"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Collections.IEnumerator</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>
-							<para>Returns a <see cref="T:System.Collections.IEnumerator"/> for the current instance.</para>
-						</summary>
-						<returns>
-							<para>A <see cref="T:System.Collections.IEnumerator"/> for the current instance.</para>
-						</returns>
-						<remarks>
-							<para>A <see cref="T:System.Collections.IEnumerator"/> grants read-access to the elements of a
-<see cref="T:System.Array"/>.</para>
-							<para>
-								<block subset="none" type="note"> This method is
-   implemented to support the <see cref="T:System.Collections.IEnumerator"/> interface. For more information regarding the use of an
-   enumerator, see <see cref="T:System.Collections.IEnumerator"/>.</block>
-							</para>
-							<block subset="none" type="behaviors">
-								<para>Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.</para>
-								<para> Initially, the enumerator is positioned before the
-      first element of the current instance. <see cref="M:System.Collections.IEnumerator.Reset"/> returns the enumerator to this
-      position. Therefore, after an enumerator is created or after a
-   <see cref="M:System.Collections.IEnumerator.Reset"/>, <see cref="M:System.Collections.IEnumerator.MoveNext"/> is required to be
-      called to advance the enumerator to the first element of the collection before
-      reading the value of <see cref="P:System.Collections.IEnumerator.Current"/>.</para>
-								<para>
-									<see cref="P:System.Collections.IEnumerator.Current"/> returns the same object until either
-<see cref="M:System.Collections.IEnumerator.MoveNext"/> or
-<see cref="M:System.Collections.IEnumerator.Reset"/> is called. <see cref="M:System.Collections.IEnumerator.MoveNext"/> sets <see cref="P:System.Collections.IEnumerator.Current"/>  to the next element.</para>
-								<para>If <see cref="M:System.Collections.IEnumerator.MoveNext"/>  passes the end of the collection, the enumerator is positioned after the last element in the collection and <see cref="M:System.Collections.IEnumerator.MoveNext"/> returns false. When the enumerator is at this position, subsequent calls to<see cref="M:System.Collections.IEnumerator.MoveNext"/>  also return <see langword="false"/>. If the last call to <see cref="M:System.Collections.IEnumerator.MoveNext"/> returned <see langword="false"/>, <see cref="P:System.Collections.IEnumerator.Current"/> is unspecified. To set <see cref="P:System.Collections.IEnumerator.Current"/> to the first element of the collection again, you can call <see cref="M:System.Collections.IEnumerator.Reset"/> followed by <see cref="M:System.Collections.IEnumerator.MoveNext"/>.</para>
-								<para>An enumerator remains valid as long as the collection remains unchanged. If changes are made to the collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and its behavior is undefined.</para>
-								<para>The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread safe procedure.  To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration.  To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.</para>
-							</block>
-							<block subset="none" type="default">
-								<para>Multidimensional arrays will be processed in Row-major form. </para>
-								<para>
-									<block subset="none" type="note"> For some
-      multidimensional <see cref="T:System.Array"/>
-      objects, it can be desirable for an enumerator to process them in Column-major form.</block>
-								</para>
-							</block>
-							<para>
-								<block subset="none" type="overrides">Override this
-   method to provide read-access to the current instance.</block>
-							</para>
-							<para>
-								<block subset="none" type="usage">Use this method
-   to iterate over the elements of the current instance.</block>
-							</para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.GetEnumerator"/> method.</para>
-							<code lang="C#">using System;
-using System.Collections;
-public class ArrayGetEnumerator {
-   public static void Main() {
-      string[,] strAry = {{"1","one"}, {"2", "two"}, {"3", "three"}};
-      Console.Write( "The elements of the array are: " );
-      IEnumerator sEnum = strAry.GetEnumerator();
-      while ( sEnum.MoveNext() )
-         Console.Write( " {0}", sEnum.Current );
-   }
-}
-   </code>
-							<para>The output is</para>
-							<c>
-								<para>The elements of the array are: 1 one 2 two 3 three</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="GetLength">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig int32 GetLength(int32 dimension)"/>
-					<MemberSignature Language="C#" Value="public int GetLength(int dimension)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="dimension" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Gets the number of elements in the specified dimension of the array.</para>
-						</summary>
-						<param name="dimension">The zero-based dimension of the array whose length is to be determined.</param>
-						<returns>
-							<para>The number of elements in the specified dimension of the array.</para>
-						</returns>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>
-								<paramref name="dimension"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="dimension"/> is equal to or greater than <see cref="P:System.Array.Rank"/>.</para>
-						</exception>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
-				</Member>
-				<Member MemberName="GetLowerBound">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance int32 GetLowerBound(int32 dimension)"/>
-					<MemberSignature Language="C#" Value="public int GetLowerBound(int dimension);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="dimension" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Returns the lower bound of the specified dimension in
-      the current instance.</para>
-						</summary>
-						<param name="dimension">A <see cref="T:System.Int32"/> that contains the zero-based dimension of the current instance whose lower bound is to be determined.</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> that contains the lower bound of the specified dimension in the
-   current instance.</para>
-						</returns>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>
-								<paramref name="dimension"/> &lt; 0.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="dimension"/> is equal to or greater than the <see cref="P:System.Array.Rank"/> property of the current instance.</para>
-						</exception>
-						<remarks>
-							<para>
-								<block subset="none" type="note">For example,
-   <see cref="M:System.Array.GetLowerBound(System.Int32)"/> (0) returns the lower bound of the first
-      dimension of the current instance, and <see cref="M:System.Array.GetLowerBound(System.Int32)"/>(<see cref="P:System.Array.Rank"/> - 1) returns the lower bound of the last dimension of
-      the current instance.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
-				</Member>
-				<Member MemberName="GetUpperBound">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance int32 GetUpperBound(int32 dimension)"/>
-					<MemberSignature Language="C#" Value="public int GetUpperBound(int dimension);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="dimension" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Returns the upper bound of the specified dimension in
-      the current instance.</para>
-						</summary>
-						<param name="dimension">A <see cref="T:System.Int32"/> that contains the zero-based dimension of the current instance whose upper bound is to be determined.</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> that contains the upper bound of the specified dimension in the
-   current instance.</para>
-						</returns>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>
-								<paramref name="dimension"/> &lt; 0.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="dimension"/> is equal to or greater than the <see cref="P:System.Array.Rank"/> property of the current instance.</para>
-						</exception>
-						<remarks>
-							<para>
-								<block subset="none" type="note">For example, <see cref="M:System.Array.GetUpperBound(System.Int32)"/>
-(0) returns the upper bound of the first dimension of the current
-instance, and <see cref="M:System.Array.GetUpperBound(System.Int32)"/>(<see cref="P:System.Array.Rank"/> - 1) returns the upper bound of the last dimension
-of the current instance.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
-				</Member>
-				<Member MemberName="GetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32[] indices)"/>
-					<MemberSignature Language="C#" Value="public object GetValue(int[] indices);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Object</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="indices" Type="System.Int32[]"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Gets the value at the specified position in the
-      current multidimensional instance.</para>
-						</summary>
-						<param name="indices">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the indices that specify the position of the element in the current instance whose value to get.</param>
-						<returns>
-							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the
-   current instance.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="indices"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentException">The number of dimensions in the current instance is not equal to the number of elements in <paramref name="indices"/>.</exception>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>At least one element in <paramref name="indices"/> is outside the range of valid indices for the corresponding dimension of the current instance.</para>
-						</exception>
-						<remarks>
-							<para>The number of elements in <paramref name="indices"/> is required to be equal to the number of
-   dimensions in the current instance. All elements in <paramref name="indices"/> collectively specify the position of the
-   desired element in the current instance.</para>
-							<para>
-								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and
-<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any of the values in 
-<paramref name="indices"/> are out of
-bounds.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="GetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32 index)"/>
-					<MemberSignature Language="C#" Value="public object GetValue(int index);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Object</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="index" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Gets the value at the specified position in the current one-dimensional
-      instance.</para>
-						</summary>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the position of the value to get from the current instance.</param>
-						<returns>
-							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the current
-   instance.</para>
-						</returns>
-						<exception cref="T:System.ArgumentException">The current instance has more than one dimension.</exception>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>
-								<paramref name="index"/> is outside the range of valid indices for the current instance.</para>
-						</exception>
-						<remarks>
-							<para>
-								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and
-<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine 
-   whether <paramref name="index"/> is out of bounds.</block>
-							</para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.GetValue(System.Int32[])"/> method.</para>
-							<code lang="C#">using System;
-public class ArrayGetValueExample {
-   public static void Main() {
-      String[] strAry = { "one", "two", "three", "four", "five" };
-      Console.Write( "The elements of the array are: " );
-      for( int i = 0; i &lt; strAry.Length; i++ )
-         Console.Write( " '{0}' ", strAry.GetValue( i ) );
-   }
-}
-   </code>
-							<para>The output is</para>
-							<para>
-								<c>The elements
-      of the array are: 'one' 'two' 'three' 'four' 'five'</c>
-							</para>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="GetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32 index1, int32 index2)"/>
-					<MemberSignature Language="C#" Value="public object GetValue(int index1, int index2);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Object</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="index1" Type="System.Int32"/>
-						<Parameter Name="index2" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Gets the value at the specified position in the current 
-      two-dimensional instance.</para>
-						</summary>
-						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to get.</param>
-						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to get.</param>
-						<returns>
-							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the current 
-   instance.</para>
-						</returns>
-						<exception cref="T:System.ArgumentException">The current instance does not have exactly two dimensions.</exception>
-						<exception cref="T:System.IndexOutOfRangeException">At least one of <paramref name="index1"/> or <paramref name="index2"/> is outside the range of valid indexes for the corresponding dimension of the current instance.</exception>
-						<remarks>
-							<para>
-								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and 
-<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine
-   whether any of the indices are out of bounds.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="GetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32 index1, int32 index2, int32 index3)"/>
-					<MemberSignature Language="C#" Value="public object GetValue(int index1, int index2, int index3);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Object</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="index1" Type="System.Int32"/>
-						<Parameter Name="index2" Type="System.Int32"/>
-						<Parameter Name="index3" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Gets the value at the specified position in the 
-      current three-dimensional instance.</para>
-						</summary>
-						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to get. </param>
-						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to get. </param>
-						<param name="index3">A <see cref="T:System.Int32"/> that contains the third-dimension index of the element in the current instance to get. </param>
-						<returns>
-							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the 
-   current instance.</para>
-						</returns>
-						<exception cref="T:System.ArgumentException">The current instance does not have exactly three dimensions.</exception>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>At least one of<paramref name="index1"/> or <paramref name="index2"/> or <paramref name="index3"/> is outside the range of valid indexes for the corresponding dimension of the current instance.</para>
-						</exception>
-						<remarks>
-							<para>
-								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and 
-<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine
-   whether any of the indices are out of bounds.</block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="IndexOf">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf(class System.Array array, object value, int32 startIndex, int32 count)"/>
-					<MemberSignature Language="C#" Value="public static int IndexOf(Array array, object value, int startIndex, int count);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="count" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the first
-   occurrence of the specified <see cref="T:System.Object"/> in the specified range.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
-						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
-						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts. </param>
-						<param name="count">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="startIndex"/>.</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> containing the index of the first occurrence of <paramref name="value"/> in
-<paramref name="array"/>, within the range <paramref name="startIndex"/> through <paramref name="startIndex"/> 
-+ <paramref name="count"/>- 1, if found; otherwise,
-<paramref name="array"/>.GetLowerBound(0) - 1.
-<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
-found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is less than <paramref name="array"/>
-								<see langword=".GetLowerBound(0)"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="startIndex"/> + <paramref name="count"/> is greater than <paramref name="array"/>
-								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
-								<see langword=".Length"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="IndexOf">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf(class System.Array array, object value, int32 startIndex)"/>
-					<MemberSignature Language="C#" Value="public static int IndexOf(Array array, object value, int startIndex);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the first
-   occurrence of the specified <see cref="T:System.Object"/> between the specified index and the last element.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
-						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
-						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts.</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> containing the index of the first occurrence of <paramref name="value"/> in
-<paramref name="array"/>, within the range <paramref name="startIndex"/> through the last element of 
-<paramref name="array"/>, if found; otherwise, 
-<paramref name="array"/>.GetLowerBound(0) - 1. 
-<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
-   found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>. </para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is less than <paramref name="array"/>
-								<see langword=".GetLowerBound(0)"/> or greater than <paramref name="array"/>
-								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
-								<see langword=".Length"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> (<paramref name="array"/>, <paramref name="value"/> ,
-<paramref name="startIndex"/>, (<paramref name="array"/>.Length - <paramref name="startIndex"/>+<paramref name="array"/>.GetLowerBound(0))).</para>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="IndexOf">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf(class System.Array array, object value)"/>
-					<MemberSignature Language="C#" Value="public static int IndexOf(Array array, object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the
-   index of the first occurrence of the specified <see cref="T:System.Object"/>.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
-						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> containing the index of the first occurrence of <paramref name="value"/> in
-<paramref name="array"/>, if found; otherwise, <paramref name="array"/>.GetLowerBound(0) - 1. <block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
-   found, the return value will be -1. This provides the caller with a standard code for a failed search.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="value"/>, <paramref name="array"/>.GetLowerBound(0),<paramref name="array"/>.Length).</para>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
-						</remarks>
-						<example>
-							<para>The following example demonstrates the <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> 
-method.</para>
-							<code lang="C#">using System;
-public class ArrayIndexOfExample {
-   public static void Main() {
-      int[] intAry = { 0, 1, 2, 0, 1 };
-      Console.Write( "The values of the array are: " );
-      foreach( int i in intAry )
-         Console.Write( "{0,5}", i );
-      Console.WriteLine();
-      int j = Array.IndexOf( intAry, 1 );
-      Console.WriteLine( "The first occurrence of 1 is at index {0}", j );
-   }
-}
-</code>
-							<para> The output is</para>
-							<c>
-								<para>The values of the array are: 0 1 2 0 1</para>
-								<para>The first occurrence of 1 is at index 1</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="IndexOf&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex, int32 count)"/>
-					<MemberSignature Language="C#" Value="public static int IndexOf&lt;T&gt;(T[] array, T value, int startIndex, int count)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="count" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for the specified value and returns the index of the first occurrence within the range of elements in the array starting at the specified index and continuing for, at most, the specified number of elements.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="value">The value to locate.</param>
-						<param name="startIndex">The zero-based starting index of the search.</param>
-						<param name="count">The number of consecutive elements to search.</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of <paramref name="value"/> within the range of elements in 
-<paramref name="array"/> that starts at 
-<paramref name="startIndex"/> and contains the number of elements specified in <paramref name="count"/>
-, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="startIndex"/> + <paramref name="count"/> is greater than <see cref="P:System.Array.Length"/>.</para>
-						</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched forward starting at <paramref name="startIndex"/> and ending at <paramref name="startIndex"/> + <paramref name="count"/> - 1. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="IndexOf&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex)"/>
-					<MemberSignature Language="C#" Value="public static int IndexOf&lt;T&gt;(T[] array, T value, int startIndex)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified array, returning the index of the first occurrence in the specified array starting at the specified index and including the last element.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="value">The value to locate.</param>
-						<param name="startIndex">The zero-based starting index of the search.</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of <paramref name="value"/> within the range of elements in 
-<paramref name="array"/> that extends from  
-<paramref name="startIndex"/> to the last element, if found; otherwise, -1. If <paramref name="startIndex"/> is equal to the length of the array, -1 is returned.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
-								<see langword=".Length"/>.</para>
-						</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched forward starting at <paramref name="startIndex"/> and ending at the last element. Processing is stopped when the predicate returns <see langword="true"/>. </para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="IndexOf&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf&lt;T&gt;(!!0[] array, !!0 value)"/>
-					<MemberSignature Language="C#" Value="public static int IndexOf&lt;T&gt;(T[] array, T value)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified array, returning the index of the first occurrence of the specified value.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="value">The value to locate.</param>
-						<returns>
-							<para>The zero-based index of the first occurrence of <paramref name="value"/> in 
-<paramref name="array"/>, if found; otherwise, - 1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched forward starting at the first element and ending at the last element.  Processing is stopped when the predicate returns <see langword="true"/>. </para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Initialize">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Initialize()"/>
-					<MemberSignature Language="C#" Value="public void Initialize();"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>
-							<para>Initializes every element of the current instance of
-      value-type objects by calling the
-      default constructor of that value type.</para>
-						</summary>
-						<remarks>
-							<para> This method cannot be used on reference-type arrays.</para>
-							<para>If the current instance is not a value-type <see cref="T:System.Array"/> or if the value type does not have a default
-   constructor, the current instance is not modified.</para>
-							<para>The current instance can have any lower bound and any number of dimensions.</para>
-							<para>
-								<block subset="none" type="note">This method can be used only
-   on value types that have constructors. </block>
-							</para>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
-				</Member>
-				<Member MemberName="IsFixedSize">
-					<MemberSignature Language="ILAsm" Value=".property public bool IsFixedSize { public hidebysig virtual abstract specialname bool get_IsFixedSize() }"/>
-					<MemberSignature Language="C#" Value="public bool IsFixedSize { get; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Boolean</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.IsFixedSize"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="IsReadOnly">
-					<MemberSignature Language="ILAsm" Value=".property public bool IsReadOnly { public hidebysig virtual abstract specialname bool get_IsReadOnly() }"/>
-					<MemberSignature Language="C#" Value="public bool IsReadOnly { get; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Boolean</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.IsReadOnly"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="IsSynchronized">
-					<MemberSignature Language="ILAsm" Value="property public bool IsSynchronized { public hidebysig virtual abstract specialname bool get_IsSynchronized() }"/>
-					<MemberSignature Language="C#" Value="public bool IsSynchronized { get; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Boolean</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.ICollection"/> interface. [Note: For more information, see <see cref="M:System.Collections.ICollection.IsSynchronized"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="LastIndexOf">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf(class System.Array array, object value, int32 startIndex, int32 count)"/>
-					<MemberSignature Language="C#" Value="public static int LastIndexOf(Array array, object value, int startIndex, int count);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="count" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the last
-   occurrence of the specified <see cref="T:System.Object"/> in the specified range.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
-						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
-						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts. </param>
-						<param name="count">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="startIndex"/> . </param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> containing the index of the last occurrence of <paramref name="value"/> in 
-<paramref name="array"/>, within the range <paramref name="startIndex"/> through 
-<paramref name="startIndex"/> - <paramref name="count"/> + 1, if found; otherwise, 
-<paramref name="array"/>.GetLowerBound(0) - 1. 
-<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
-   found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> &lt; 0.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is greater than <paramref name="startIndex"/> + 1.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="LastIndexOf">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf(class System.Array array, object value, int32 startIndex)"/>
-					<MemberSignature Language="C#" Value="public static int LastIndexOf(Array array, object value, int startIndex);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the last
-   occurrence of the specified <see cref="T:System.Object"/> between the specified index and the first element.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
-						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
-						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts.</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> containing the index of the last occurrence of <paramref name="value"/> in the range
-<paramref name="startIndex"/> through the lower bound of <paramref name="array"/>, if found; otherwise, 
-<paramref name="array"/>.GetLowerBound(0) - 1. <block subset="none" type="note"> For a vector, if <paramref name="value"/> is not found, the return value will
-   be -1. This provides the caller with a standard code for the failed
-   search.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/>( <paramref name="array"/>, <paramref name="value"/>, <paramref name="startIndex"/>,<paramref name="startIndex"/>+ 1 -<paramref name="array"/>.GetLowerBound(0)).</para>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="LastIndexOf">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf(class System.Array array, object value)"/>
-					<MemberSignature Language="C#" Value="public static int LastIndexOf(Array array, object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the last
-   occurrence of the specified <see cref="T:System.Object"/>.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
-						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
-						<returns>
-							<para>A <see cref="T:System.Int32"/> containing the index of the last occurrence in <paramref name="array"/> of
-<paramref name="value"/>, if found; otherwise, 
-<paramref name="array"/>.GetLowerBound(0) - 1. 
-<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
-   found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
-							</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/> . </exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="value"/>, (<paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length - 1), <paramref name="array"/>.Length).</para>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
-						</remarks>
-						<example>
-							<para>The following example demonstrates the <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/> method.</para>
-							<code lang="C#">using System;
-
-public class ArrayLastIndexOfExample {
-
-   public static void Main() {
-      int[] intAry = { 0, 1, 2, 0, 1 };
-      Console.Write( "The values of the array are: ");
-      foreach( int i in intAry )
-         Console.Write( "{0,5}", i );
-      Console.WriteLine();
-      int j = Array.LastIndexOf( intAry, 1 );
-      Console.WriteLine( "The last occurrence of 1 is at index {0}", j );
-   }
-}
-</code>
-							<para> The output is</para>
-							<c>
-								<para>The values of the array are: 0 1 2 0 1</para>
-								<para>The last occurrence of 1 is at index 4</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="LastIndexOf&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex, int32 count)"/>
-					<MemberSignature Language="C#" Value="public static int LastIndexOf&lt;T&gt;(T[] array, T value, int startIndex, int count)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-						<Parameter Name="count" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches for the specified value and returns the index of the last occurrence within the range of elements in the array starting at the specified index and continuing backwards for, at most,  the specified number of elements.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="value">The value to locate.</param>
-						<param name="startIndex">The zero-based starting index of the search.</param>
-						<param name="count">The number of consecutive elements to search.</param>
-						<returns>
-							<para>The zero-based index of the last occurrence of <paramref name="value"/> within the range of elements in 
-<paramref name="array"/> that ends at 
-<paramref name="startIndex"/> and contains the number of elements specified in <paramref name="count"/>
-, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="count"/> is greater than <paramref name="startIndex"/> + 1.</para>
-						</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched backward starting at <paramref name="startIndex"/> and going for count elements. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="LastIndexOf&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex)"/>
-					<MemberSignature Language="C#" Value="public static int LastIndexOf&lt;T&gt;(T[] array, T value, int startIndex)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-						<Parameter Name="startIndex" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified array backwards, returning the index of the last occurrence of the specified array, starting at the specified index.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="value">The value to locate.</param>
-						<param name="startIndex">The zero-based starting index of the search.</param>
-						<returns>
-							<para>The zero-based index of the last occurrence of <paramref name="value"/> within the range of elements in 
-<paramref name="array"/> that extends from  
-<paramref name="startIndex"/> to the first element, if found; otherwise, -1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
-						</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched backward starting at <paramref name="startIndex"/> and ending at the first element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="LastIndexOf&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf&lt;T&gt;(!!0[] array, !!0 value)"/>
-					<MemberSignature Language="C#" Value="public static int LastIndexOf&lt;T&gt;(T[] array, T value)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="value" Type="T"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Searches the specified array, returning the index of the last occurrence of the specified value.</para>
-						</summary>
-						<param name="array">The array to search.</param>
-						<param name="value">The value to locate.</param>
-						<returns>
-							<para>The zero-based index of the last occurrence of <paramref name="value"/> in 
-<paramref name="array"/>, if found; otherwise, - 1.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<remarks>
-							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched backward starting at the last element and ending at the first element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Length">
-					<MemberSignature Language="ILAsm" Value=".property int32 Length { public hidebysig specialname instance int32 get_Length() }"/>
-					<MemberSignature Language="C#" Value="public int Length { get; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>
-							<para>Gets the total number of elements in all the dimensions
-      of the current instance.</para>
-						</summary>
-						<value>
-							<para>A <see cref="T:System.Int32"/> that contains the total number of elements in all the dimensions of
-   the current instance.</para>
-						</value>
-						<remarks>
-							<para>This property is read-only.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="LongLength">
-					<MemberSignature Language="ILAsm" Value=".property int64 Length { public hidebysig specialname instance int64 get_LongLength() }"/>
-					<MemberSignature Language="C#" Value="public long LongLength {get;}"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int64</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>
-							<para>Gets the total number of elements in all the dimensions of the current instance.</para>
-						</summary>
-						<value>
-							<para>A <see cref="T:System.Int64"/> value containing the length of the array.</para>
-						</value>
-						<remarks>
-							<para>This property is read-only.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Rank">
-					<MemberSignature Language="ILAsm" Value=".property int32 Rank { public hidebysig specialname instance int32 get_Rank() }"/>
-					<MemberSignature Language="C#" Value="public int Rank { get; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>
-							<para>Gets the rank (number of dimensions) of the current instance.</para>
-						</summary>
-						<value>
-							<para>A <see cref="T:System.Int32"/> that contains the rank (number of dimensions) of the current instance.</para>
-						</value>
-						<remarks>
-							<para>This property is read-only.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Resize&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Resize&lt;T&gt;(!!0[]&amp; array, int32 newSize)"/>
-					<MemberSignature Language="C#" Value="public static void Resize&lt;T&gt;(ref T[] array, int newSize)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="newSize" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Changes the size of an array to the specified new size.</para>
-						</summary>
-						<param name="array">
-							<para>The array to resize.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/> to create a new array with the specified size.</para>
-						</param>
-						<param name="newSize">The size of the new array.</param>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="newSize"/> is less than zero.</para>
-						</exception>
-						<remarks>
-							<para>If array is <see langword="null"/>, this method creates a new array with the specified size.</para>
-							<para>If array is not <see langword="null"/>, then if <paramref name="newSize"/> is equal to <see cref="P:System.Array.Length"/> of the old array, this method does nothing. Otherwise, this method allocates a new array with the specified size, copies elements from the old array to the new one, and then assigns the new array reference to the array parameter. If <paramref name="newSize"/>  is greater than <see cref="P:System.Array.Length"/>  of the old array, a new array is allocated and all the elements are copied from the old array to the new one.  If <paramref name="newSize"/> is less than <see cref="P:System.Array.Length"/>  of the old array, a new array is allocated and elements are copied from the old array to the new one until the new one is filled; the rest of the elements in the old array are ignored.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Reverse">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Reverse(class System.Array array, int32 index, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Reverse(Array array, int index, int length);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Reverses the sequence of the elements in the specified 
-      range of the specified one-dimensional <see cref="T:System.Array"/>.</para>
-						</summary>
-						<param name="array">The one-dimensional <see cref="T:System.Array"/> to reverse.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which reversing starts.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to reverse.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> is multidimensional.</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/> (i.e. <paramref name="index"/> + <paramref name="length"/> &gt; <paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length).</exception>
-						<example>
-							<para>The following example demonstrates the <see cref="M:System.Array.Reverse(System.Array)"/> method.</para>
-							<code lang="C#">using System;
-public class ArrayReverseExample {
-   public static void Main() {
-      string[] strAry = { "one", "two", "three" };
-      Console.Write( "The elements of the array are:");
-      foreach( string str in strAry )
-         Console.Write( " {0}", str );
-      Array.Reverse( strAry );
-      Console.WriteLine();
-      Console.WriteLine( "After reversing the array," );
-      Console.Write( "the elements of the array are:");
-      foreach( string str in strAry )
-         Console.Write( " {0}", str );
-   }
-}
-</code>
-							<para>The output is</para>
-							<c>
-								<para>The elements of the array are: one two three</para>
-								<para>After reversing the array,</para>
-								<para>the elements of the array are: three two one</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Reverse">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Reverse(class System.Array array)"/>
-					<MemberSignature Language="C#" Value="public static void Reverse(Array array);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Reverses the sequence of the elements in the specified one-dimensional
-   <see cref="T:System.Array"/>.</para>
-						</summary>
-						<param name="array">The one-dimensional <see cref="T:System.Array"/> to reverse.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Reverse(System.Array)"/> is equivalent to <see cref="M:System.Array.Reverse(System.Array)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
-<paramref name="array"/>.Length).</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="SetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32 index)"/>
-					<MemberSignature Language="C#" Value="public void SetValue(object value, int index);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="index" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Sets the value of the element at the specified position
-      in the current one-dimensional instance.</para>
-						</summary>
-						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index of the element whose value is to be set.</param>
-						<exception cref="T:System.ArgumentException">
-							<para>The current instance has more than one dimension.</para>
-						</exception>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>
-								<paramref name="index"/> is outside the range of valid indices for the current instance.</para>
-						</exception>
-						<exception cref="T:System.InvalidCastException">
-							<para>
-								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
-						</exception>
-						<remarks>
-							<block subset="none" type="note">
-								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether
-   <paramref name="index"/> is out of bounds.</para>
-								<para> For more
-      information regarding valid conversions that will be performed by this method,
-      see <see cref="T:System.Convert"/>.</para>
-							</block>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="SetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32 index1, int32 index2)"/>
-					<MemberSignature Language="C#" Value="public void SetValue(object value, int index1, int index2);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="index1" Type="System.Int32"/>
-						<Parameter Name="index2" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Sets the value of the element at the specified position
-      in the current two-dimensional instance.</para>
-						</summary>
-						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element.</param>
-						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to set. </param>
-						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to set. </param>
-						<exception cref="T:System.ArgumentException">
-							<para>The current instance does not have exactly two dimensions.</para>
-						</exception>
-						<exception cref="T:System.IndexOutOfRangeException">At least one of <paramref name="index1"/> or <paramref name="index2"/> is outside the range of valid indices for the corresponding dimension of the current instance.</exception>
-						<exception cref="T:System.InvalidCastException">
-							<para>
-								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
-						</exception>
-						<remarks>
-							<block subset="none" type="note">
-								<para>For more information regarding valid conversions that will be performed by
-         this method, see <see cref="T:System.Convert"/>.</para>
-								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any of the indices
-      are out of bounds.</para>
-							</block>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="SetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32 index1, int32 index2, int32 index3)"/>
-					<MemberSignature Language="C#" Value="public void SetValue(object value, int index1, int index2, int index3);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="index1" Type="System.Int32"/>
-						<Parameter Name="index2" Type="System.Int32"/>
-						<Parameter Name="index3" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para> Sets the value of the element at the
-      specified position in the current three-dimensional instance.</para>
-						</summary>
-						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element. </param>
-						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to set. </param>
-						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to set. </param>
-						<param name="index3">A <see cref="T:System.Int32"/> that contains the third-dimension index of the element in the current instance to set. </param>
-						<exception cref="T:System.ArgumentException">
-							<para>The current instance does not have exactly three dimensions.</para>
-						</exception>
-						<exception cref="T:System.IndexOutOfRangeException">At least one of <paramref name="index1"/>, <paramref name="index2"/>, or <paramref name="index3"/> is outside the range of valid indices for the corresponding dimension of the current instance.</exception>
-						<exception cref="T:System.InvalidCastException">
-							<para>
-								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
-						</exception>
-						<remarks>
-							<block subset="none" type="note">
-								<para>For more information regarding valid conversions that will be performed by
-         this method, see <see cref="T:System.Convert"/>.</para>
-								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and
-   <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any of the indices
-      are out of bounds.</para>
-							</block>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="SetValue">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32[] indices)"/>
-					<MemberSignature Language="C#" Value="public void SetValue(object value, int[] indices);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-						<Parameter Name="indices" Type="System.Int32[]"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sets the value of the element at the specified position in
-      the current multidimensional instance.</para>
-						</summary>
-						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element. </param>
-						<param name="indices">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the indices that specify the position of the element in the current instance to set. </param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="indices"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>The number of dimensions in the current instance is not equal to the number of elements in <paramref name="indices"/>. </para>
-						</exception>
-						<exception cref="T:System.IndexOutOfRangeException">
-							<para>At least one element in <paramref name="indices"/> is outside the range of valid indices for the corresponding dimension of the current instance.</para>
-						</exception>
-						<exception cref="T:System.InvalidCastException">
-							<para>
-								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
-						</exception>
-						<remarks>
-							<para>The number of elements in <paramref name="indices"/> is required to be equal to the number of
-   dimensions in the current instance. All elements in <paramref name="indices"/> collectively specify the position of the
-   desired element in the current instance.</para>
-							<block subset="none" type="note">
-								<para>For more information regarding valid conversions that will be performed by
-      this method, see <see cref="T:System.Convert"/>.</para>
-								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any
-   of the values in <paramref name="indices"/> is out of bounds.</para>
-							</block>
-						</remarks>
-					</Docs>
-					<Excluded>1</Excluded>
-					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items, int32 index, int32 length, class System.Collections.IComparer comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items, int index, int length, IComparer comparer);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="System.Array"/>
-						<Parameter Name="items" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the specified range of the specified pair of one-dimensional <see cref="T:System.Array"/> objects (one
-   containing a set of keys and the other containing corresponding items) based on
-   the keys in the first specified <see cref="T:System.Array"/> using the specified <see cref="T:System.Collections.IComparer"/>
-   implementation.</para>
-						</summary>
-						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
-						<param name="items">
-							<para>A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each element of <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</para>
-						</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sorting starts.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<para>
-								<paramref name="keys"/> has more than one dimension.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> &lt; <paramref name="keys"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0). </para>
-							<para>-or- </para>
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="key"/>. </para>
-							<para>-or- </para>
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>. </para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface. </para>
-						</exception>
-						<remarks>
-							<para> Each key in <paramref name="keys"/> is required to have
-   a corresponding item in <paramref name="items"/>. The sort is performed according to the
-   order of <paramref name="keys"/>. After a key is repositioned during the sort,
-   the corresponding item in <paramref name="items"/> is similarly repositioned. Only
-<paramref name="keys"/>.Length elements of <paramref name="items"/> will be sorted. Therefore, 
-<paramref name="items"/> is sorted according to the arrangement of
-   the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
-   completed, the results are undefined.</para>
-							<para>If <paramref name="comparer"/> is a null reference, each element
-of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
-with every other element in <paramref name="keys"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array, int32 index, int32 length, class System.Collections.IComparer comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array array, int index, int length, IComparer comparer);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements in the specified section of the
-      specified one-dimensional <see cref="T:System.Array"/>
-      using the specified <see cref="T:System.Collections.IComparer"/>
-      implementation.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to sort.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sorting starts.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>. </exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension. </exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface. </para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>, <see langword="null"/>, <paramref name="index"/>, <paramref name="length"/>, <paramref name="comparer"/>).</para>
-							<para>If <paramref name="comparer"/> is a null reference, each element
-of <paramref name="array"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
-with every other element in <paramref name="array"/>. If the sort is not successfully
-completed, the results are unspecified.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items, class System.Collections.IComparer comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items, IComparer comparer);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="System.Array"/>
-						<Parameter Name="items" Type="System.Array"/>
-						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the specified pair of one-dimensional
-   <see cref="T:System.Array"/> objects (one
-      containing a set of keys and the other containing corresponding items) based on
-      the keys in the first specified <see cref="T:System.Array"/> using the specified <see cref="T:System.Collections.IComparer"/> implementation.</para>
-						</summary>
-						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
-						<param name="items">
-							<para>A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each element in <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</para>
-						</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<para>
-								<paramref name="keys"/> has more than one dimension.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0). </para>
-							<para>-or-</para>
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.Length &gt; <paramref name="items"/>.Length.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is a <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface. </para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="keys"/>, <paramref name="items"/>, <paramref name="keys"/>.GetLowerBound(0), <paramref name="keys"/>.Length, <paramref name="comparer"/>).</para>
-							<para> Each key in <paramref name="keys"/> is required to have
-a corresponding item in <paramref name="items"/>. The sort is performed according to the order of
-<paramref name="keys"/> . After a key is repositioned during the sort, the 
-corresponding item in <paramref name="items"/> is similarly repositioned. Only
-<paramref name="keys"/>.Length elements of <paramref name="items"/> are sorted. Therefore, 
-<paramref name="items"/>
-is sorted according to the arrangement of the corresponding keys in
-<paramref name="keys"/>. If
-the sort is not successfully completed, the results are unspecified.</para>
-							<para>If <paramref name="comparer"/> is a null reference, each element
-of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
-with every other element in <paramref name="keys"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array, class System.Collections.IComparer comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array array, IComparer comparer);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements in the specified one-dimensional <see cref="T:System.Array"/> using the
-   specified <see cref="T:System.Collections.IComparer"/> implementation.</para>
-						</summary>
-						<param name="array">The one-dimensional <see cref="T:System.Array"/> to sort.</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>. </exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension. </exception>
-						<exception cref="T:System.InvalidOperationException">
-							<paramref name="comparer"/> is a null reference, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>, <see langword="null"/>, <paramref name="array"/>.GetLowerBound(0), <paramref name="array"/>.Length,
-<paramref name="comparer"/>).</para>
-							<para>If <paramref name="comparer"/> is a null reference, each element
-of <paramref name="array"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
-with every other element in <paramref name="array"/>. If the sort is not successfully
-completed, the results are unspecified.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items, int32 index, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items, int index, int length);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="System.Array"/>
-						<Parameter Name="items" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the specified ranges of the specified pair of
-      one-dimensional <see cref="T:System.Array"/>
-      objects (one containing a set of keys and the other containing corresponding
-      items) based on the keys in the first specified <see cref="T:System.Array"/>.</para>
-						</summary>
-						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
-						<param name="items">A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each element in <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sort begins.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<para>
-								<paramref name="keys"/> has more than one dimension.</para>
-							<para> -or-</para>
-							<para>
-								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> &lt; <paramref name="keys"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0). </para>
-							<para>-or- </para>
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="keys"/>. </para>
-							<para>-or- </para>
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>. </para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>One or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="keys"/>, <paramref name="items"/>, <paramref name="index"/>, <paramref name="length"/>, <see langword="null"/>).</para>
-							<para> Each key in <paramref name="keys"/> is
-required to have
-a corresponding item in <paramref name="items"/>. The sort is performed according to the
-order of <paramref name="keys"/> . After a key is repositioned during the sort,
-the corresponding item in <paramref name="items"/> is similarly
-repositioned. Therefore, <paramref name="items"/> is sorted according to the arrangement of
-the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
-completed, the results are undefined.</para>
-							<para>Each element of <paramref name="keys"/> is
-required to implement the <see cref="T:System.IComparable"/> interface to
-be capable of comparisons with every other element in <paramref name="keys"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array array);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements of the specified one-dimensional <see cref="T:System.Array"/>.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to sort.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>.</exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension.</exception>
-						<exception cref="T:System.InvalidOperationException">One or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>, <see langword="null"/>, <paramref name="array"/>.GetLowerBound(0),
-<paramref name="array"/>.Length, <see langword="null"/>).</para>
-							<para>Each element of <paramref name="array"/> is
-required to implement
-the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other
-element in array.</para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.Sort(System.Array)"/> method.</para>
-							<code lang="C#">using System;
-public class ArraySortExample {
-   public static void Main() {
-      string[] strAry = { "All's", "well", "that", "ends", "well" };
-      Console.Write( "The original string array is: " );
-      foreach ( String str in strAry )
-         Console.Write( str + " " );
-      Console.WriteLine();
-      Array.Sort( strAry );
-      Console.Write( "The sorted string array is: " );
-      foreach ( string str in strAry )
-         Console.Write( str + " " );
-   }
-}
-</code>
-							<para>The output is</para>
-							<c>
-								<para>The original string array is: All's well that ends well</para>
-								<para>The sorted string array is: All's ends that well well</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="System.Array"/>
-						<Parameter Name="items" Type="System.Array"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the specified pair of one-dimensional <see cref="T:System.Array"/> objects (one
-   containing a set of keys and the other containing corresponding items) based on
-   the keys in the first specified <see cref="T:System.Array"/>.</para>
-						</summary>
-						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
-						<param name="items">
-							<para>A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each of element of <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>. </para>
-						</exception>
-						<exception cref="T:System.RankException">
-							<para>
-								<paramref name="keys"/> has more than one dimension.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.Length &gt; <paramref name="items"/>.Length.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>One or more elements in <paramref name="keys"/> that are used in a comparison  do not implement the <see cref="T:System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para> This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="keys"/>, <paramref name="items"/>, <paramref name="keys"/>.GetLowerBound(0), <paramref name="keys"/>.Length, <see langword="null"/>).</para>
-							<para> Each key in <paramref name="keys"/> is required to have
-a corresponding item in <paramref name="items"/>. The sort is performed according to the
-order of <paramref name="keys"/> . After a key is repositioned during the sort,
-the corresponding item in <paramref name="items"/> is similarly repositioned. Only
-<paramref name="keys"/>.Length elements of 
-<paramref name="items"/> are sorted. Therefore, 
-<paramref name="items"/>
-is sorted according to the arrangement of the corresponding keys in
-<paramref name="keys"/>. If
-the sort is not successfully completed, the results are unspecified.</para>
-							<para>Each element of <paramref name="keys"/> is
-required to implement
-the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other
-element in <paramref name="keys"/>.</para>
-						</remarks>
-						<example>
-							<para>This example demonstrates the <see cref="M:System.Array.Sort(System.Array)"/> method.</para>
-							<code lang="C#">using System;
-public class ArraySortExample {
-   public static void Main() {
-      string[] strAry = { "All's", "well", "that", "ends", "well" };
-      int[] intAry = { 3, 4, 0, 1, 2 };
-      Console.Write( "The original string array is: " );
-      foreach ( string str in strAry )
-         Console.Write( str + " " );
-      Console.WriteLine();
-      Console.Write( "The key array is: " );
-      foreach ( int i in intAry )
-         Console.Write( i + " " );
-      Console.WriteLine();
-      Array.Sort( intAry, strAry );
-      Console.Write( "The sorted string array is: " );
-      foreach ( string str in strAry )
-         Console.Write( str + " " );
-   }
-}
-</code>
-							<para>The output is</para>
-							<c>
-								<para>The original string array is: All's well that ends well</para>
-								<para>The key array is: 3 4 0 1 2</para>
-								<para>The sorted string array is: that ends well All's well</para>
-							</c>
-						</example>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array, int32 index, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Sort(Array array, int index, int length);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="System.Array"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements in the specified range of the
-      specified one-dimensional <see cref="T:System.Array"/>.</para>
-						</summary>
-						<param name="array">A one-dimensional <see cref="T:System.Array"/> to sort.</param>
-						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sorting starts.</param>
-						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/> is <see langword="null"/>. </exception>
-						<exception cref="T:System.RankException">
-							<paramref name="array"/> has more than one dimension. </exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> &lt; 0.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>One or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>,
-<see langword="null"/> , <paramref name="index"/>, <paramref name="length"/>, 
-<see langword="null"/>).</para>
-							<para>Each element of <paramref name="array"/> is
-required to implement
-the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other
-element in <paramref name="array"/>. If the sort is not successfully completed, the
-results are unspecified.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;K,V&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items, int32 index, int32 length, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items, int index, int length, IComparer&lt;K&gt; comparer)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="K[]"/>
-						<Parameter Name="items" Type="V[]"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;K&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts a range of elements in a pair of arrays based on the keys in the first array using the specified <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/>.</para>
-						</summary>
-						<param name="keys">
-							<para>The array that contains the keys to sort.</para>
-						</param>
-						<param name="items">
-							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
-						</param>
-						<param name="index">The starting index of the range to sort.</param>
-						<param name="length">The number of elements in the range to sort.</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/> implementation to use when comparing elements.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="keys"/>. </para>
-							<para>-or- </para>
-							<para>
-								<paramref name="items"/> is not <see langword="null"/>, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> is less than zero.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
-   a corresponding item in <paramref name="items"/>. The sort is performed according to the
-   order of <paramref name="keys"/>. After a key is repositioned during the sort,
-   the corresponding item in <paramref name="items"/> is similarly repositioned. Only
-<paramref name="keys"/>.Length elements of <paramref name="items"/> will be sorted. Therefore, 
-<paramref name="items"/> is sorted according to the arrangement of
-   the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
-   completed, the results are undefined.</para>
-							<para>If <paramref name="comparer"/> is a null reference, each element of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons
-with every other element in <paramref name="keys"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;K,V&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items, IComparer&lt;K&gt; comparer)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="K[]"/>
-						<Parameter Name="items" Type="V[]"/>
-						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;K&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts a pair of arrays based on the keys in the first array, using the specified <see cref="T:System.Collections.Generic.IComparer"/>.</para>
-						</summary>
-						<param name="keys">
-							<para>The array that contains the keys to sort.</para>
-						</param>
-						<param name="items">
-							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
-						</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/> implementation to use when comparing elements.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="items"/> is not <see langword="null"/>, and  the length of <paramref name="keys"/> does not match the length of <paramref name="items"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison  do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>This version of <see cref="M:System.Array.Sort"/>  is equivalent to <see cref="M:System.Array.Sort&lt;K,V&gt;"/>
-								<see langword="("/>
-								<paramref name="keys"/>
-								<see langword=", "/>
-								<paramref name="items"/>
-								<see langword=", "/>
-								<see langword="0, "/>
-								<paramref name="keys"/>
-								<see langword=".Length"/>
-								<see langword=", "/>
-								<paramref name="comparer"/>
-								<see langword=")"/>.</para>
-							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
-   a corresponding item in <paramref name="items"/>. The sort is performed according to the
-   order of <paramref name="keys"/>. After a key is repositioned during the sort,
-   the corresponding item in <paramref name="items"/> is similarly repositioned. Only
-<paramref name="keys"/>.Length elements of <paramref name="items"/> will be sorted. Therefore, 
-<paramref name="items"/> is sorted according to the arrangement of
-   the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
-   completed, the results are unspecified.</para>
-							<para>If <paramref name="comparer"/> is a null reference, each element of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons
-with every other element in <paramref name="keys"/>.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;K,V&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items, int32 index, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items, int index, int length)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="K[]"/>
-						<Parameter Name="items" Type="V[]"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts a range of elements in a pair of arrays based on the keys in the first array, using the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/>  implementation of each key.</para>
-						</summary>
-						<param name="keys">
-							<para>The array that contains the keys to sort.</para>
-						</param>
-						<param name="items">
-							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
-						</param>
-						<param name="index">The starting index of the range to sort.</param>
-						<param name="length">The number of elements in the range to sort.</param>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="keys"/>. </para>
-							<para>-or- </para>
-							<para>
-								<paramref name="items"/> is not <see langword="null"/>, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> is less than zero.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>One or more elements in <paramref name="keys"/> that are used in a comparison are the null reference or do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
-   a corresponding item in <paramref name="items"/>. When a key is repositioned during the sorting,
-   the corresponding item in <paramref name="items"/> is similarly repositioned. Therefore, <paramref name="items"/> is sorted according to the arrangement of
-   the corresponding keys in <paramref name="keys"/>. </para>
-							<para>If the sort is not successfully completed, the results are unspecified.</para>
-							<para>Each key within the specified range of elements in <paramref name="keys"/> must implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other key.</para>
-							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;K,V&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="keys" Type="K[]"/>
-						<Parameter Name="items" Type="V[]"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts a pair of arrays based on the keys in the first array using the <see cref="T:System.IComparable"/>  implementation of each key.</para>
-						</summary>
-						<param name="keys">
-							<para>The array that contains the keys to sort.</para>
-						</param>
-						<param name="items">
-							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
-						</param>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="items"/> is not <see langword="null"/>, and  the length of <paramref name="keys"/> does not equal the length of <paramref name="items"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="keys"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>One or more elements in <paramref name="keys"/> that are used in a comparison  are the null reference or do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
-   a corresponding item in <paramref name="items"/>. When a key is repositioned during the sorting,
-   the corresponding item in <paramref name="items"/> is similarly repositioned. Therefore, <paramref name="items"/> is sorted according to the arrangement of
-   the corresponding keys in <paramref name="keys"/>. </para>
-							<para>Each key in <paramref name="keys"/> must implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other key.</para>
-							<para>If the sort is not successfully completed, the results are undefined.</para>
-							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, int32 index, int32 length, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, int index, int length, IComparer&lt;T&gt; comparer)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements in a range of elements in an array using the specified comparer.</para>
-						</summary>
-						<param name="array">
-							<para>The array to sort.</para>
-						</param>
-						<param name="index">The starting index of the range to sort.</param>
-						<param name="length">The number of elements in the range to sort.</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/> implementation to use when comparing elements.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> is less than zero.</para>
-						</exception>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>. </para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>If <paramref name="comparer"/> is null, each element within the specified range of elements in <paramref name="array"/> must implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
-							<para>If the sort is not successfully completed, the results are undefined.</para>
-							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, IComparer&lt;T&gt; comparer)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements in an array using the specified comparer.</para>
-						</summary>
-						<param name="array">
-							<para>The array to sort.</para>
-						</param>
-						<param name="comparer">
-							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> implementation to use when comparing elements.</para>
-							<para>-or-</para>
-							<para>
-								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>
-								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>If <paramref name="comparer"/> is null, each element of <paramref name="array"/> must implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
-							<para>If the sort is not successfully completed, the results are undefined.</para>
-							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, class System.Comparison`1&lt;!!0&gt; comparison)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, Comparison&lt;T&gt; comparison)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="comparison" Type="System.Comparison&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements in an array using the specified comparison.</para>
-						</summary>
-						<param name="array">
-							<para>The array to sort.</para>
-						</param>
-						<param name="comparison">
-							<para>The <see cref="T:System.Comparison&lt;T&gt;"/> to use when comparing elements.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="comparison"/> is <see langword="null"/>.</para>
-						</exception>
-						<remarks>
-							<para>If the sort is not successfully completed, the results are undefined.</para>
-							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts the elements in an entire array using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element of that array.</para>
-						</summary>
-						<param name="array">
-							<para>The array to sort.</para>
-						</param>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>One or more elements in <paramref name="array"/> that are used in a comparison are the null reference or do not implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>Each element of <paramref name="array"/> is required to implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
-							<para>If the sort is not successfully completed, the results are undefined.</para>
-							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="Sort&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, int32 index, int32 length)"/>
-					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, int index, int length)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="length" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Sorts an array using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element of that array.</para>
-						</summary>
-						<param name="array">
-							<para>The array to sort.</para>
-						</param>
-						<param name="index">The starting index of the range to sort.</param>
-						<param name="length">The number of elements in the range to sort.</param>
-						<exception cref="T:System.ArgumentException">
-							<para>
-								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>. </para>
-						</exception>
-						<exception cref="T:System.ArgumentNullException">
-							<para>
-								<paramref name="array"/> is <see langword="null"/>.</para>
-						</exception>
-						<exception cref="T:System.ArgumentOutOfRangeException">
-							<para>
-								<paramref name="index"/> is less than zero.</para>
-							<para>-or-</para>
-							<para>
-								<paramref name="length"/> is less than zero.</para>
-						</exception>
-						<exception cref="T:System.InvalidOperationException">
-							<para>One or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
-						</exception>
-						<remarks>
-							<para>Each element within the specified range of elements in <paramref name="array"/> must implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
-							<para>If the sort is not successfully completed, the results are undefined.</para>
-							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="SyncRoot">
-					<MemberSignature Language="ILAsm" Value=".property public object SyncRoot { public hidebysig virtual abstract specialname object get_SyncRoot() }"/>
-					<MemberSignature Language="C#" Value="public object SyncRoot { get; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Object</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.ICollection"/> interface. [Note: For more information, see <see cref="M:System.Collections.ICollection.SyncRoot"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.ICollection.Count">
-					<MemberSignature Language="ILAsm" Value=".property int32 ICollection.Count { public hidebysig virtual abstract specialname int32 get_ICollection.Count() }"/>
-					<MemberSignature Language="C#" Value="int ICollection.Count { get; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.ICollection"/> interface. [Note: For more information, see <see cref="M:System.Collections.ICollection.Count"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.Add">
-					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual int32 System.Collections.IList.Add(object value)"/>
-					<MemberSignature Language="C#" Value="int IList.Add(object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Add"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.Clear">
-					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.Clear()"/>
-					<MemberSignature Language="C#" Value="void IList.Clear();"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters/>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Clear"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.Contains">
-					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual bool System.Collections.IList.Contains(object value)"/>
-					<MemberSignature Language="C#" Value="bool IList.Contains(object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Boolean</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Contains"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.IndexOf">
-					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual int32 System.Collections.IList.IndexOf(object value)"/>
-					<MemberSignature Language="C#" Value="int IList.IndexOf(object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Int32</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.IndexOf"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.Insert">
-					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.Insert(int32 index, object value)"/>
-					<MemberSignature Language="C#" Value="void IList.Insert(int index, object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="index" Type="System.Int32"/>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Insert"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.Item">
-					<MemberSignature Language="ILAsm" Value=".property object IList.Item[int32 index] { public hidebysig virtual abstract specialname object get_IList.Item(int32 index) public hidebysig virtual abstract specialname void set_IList.Item(int32 index, object value) }"/>
-					<MemberSignature Language="C#" Value="public virtual object this[int index] { get; set; }"/>
-					<MemberType>Property</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Object</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="index" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Item"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.Remove">
-					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.Remove(object value)"/>
-					<MemberSignature Language="C#" Value="void IList.Remove(object value);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="value" Type="System.Object"/>
-					</Parameters>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Remove"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="System.Collections.IList.RemoveAt">
-					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.RemoveAt(int32 index)"/>
-					<MemberSignature Language="C#" Value="void IList.RemoveAt(int index);"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Void</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="index" Type="System.Int32"/>
-					</Parameters>
-					<Docs>
-						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.RemoveAt"/>.]</summary>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-				<Member MemberName="TrueForAll&lt;T&gt;">
-					<MemberSignature Language="ILAsm" Value=".method public hidebysig static bool TrueForAll&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
-					<MemberSignature Language="C#" Value="public static bool TrueForAll&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
-					<MemberType>Method</MemberType>
-					<ReturnValue>
-						<ReturnType>System.Boolean</ReturnType>
-					</ReturnValue>
-					<Parameters>
-						<Parameter Name="array" Type="T[]"/>
-						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
-					</Parameters>
-					<Docs>
-						<summary>
-							<para>Determines whether every element in the array matches the predicate.</para>
-						</summary>
-						<param name="array">The array to check against the conditions.</param>
-						<param name="match">
-							<para>The predicate against which the elements are checked..</para>
-						</param>
-						<returns>
-							<para>
-								<see langword="true"/>, if every element in <paramref name="array"/> matches the specified predicate; otherwise, <see langword="false"/>.</para>
-						</returns>
-						<exception cref="T:System.ArgumentNullException">
-							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
-						<remarks>
-							<para>The predicate returns <see langword="true"/> if the object passed to it matches the delegate.  The elements of <paramref name="array"/> are individually passed to the predicate, and processing is stopped when the delegate returns <see langword="false"/> for any element.</para>
-						</remarks>
-					</Docs>
-					<Excluded>0</Excluded>
-				</Member>
-			</Members>
-			<TypeExcluded>0</TypeExcluded>
-		</Type>
-	</Types>
-</Libraries>
+<!-- ====================================================================== -->
+<!-- This XML is a description of the Common Language Infrastructure (CLI) library. -->
+<!-- This file is a normative part of Partition IV of the following standards: ISO/IEC 23271 and ECMA 335 -->
+<!-- ====================================================================== -->
+<!DOCTYPE Libraries SYSTEM "CLILibraryTypes.dtd">
+<Libraries>
+	<Types Library="BCL">
+		<Type Name="Action&lt;T&gt;" FullName="System.Action&lt;T&gt;" FullNameSP="System_Action&lt;T&gt;">
+			<TypeSignature Language="ILAsm" Value=".class public sealed serializable Action`1&lt;T&gt; extends System.Delegate
+ { .method public hidebysig newslot virtual instance void Invoke(!0 obj) }"/>
+			<TypeSignature Language="C#" Value="public delegate void Action&lt;T&gt;(T obj);"/>
+			<MemberOfLibrary>BCL</MemberOfLibrary>
+			<AssemblyInfo>
+				<AssemblyName>mscorlib</AssemblyName>
+				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
+				<AssemblyVersion>2.0.x.x</AssemblyVersion>
+				<AssemblyCulture>none</AssemblyCulture>
+				<Attributes>
+					<Attribute>
+						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
+						<Excluded>0</Excluded>
+					</Attribute>
+				</Attributes>
+			</AssemblyInfo>
+			<Docs>
+				<summary>
+					<para> Represents the method that performs an action on the specified object.</para>
+				</summary>
+				<param name="obj">The object on which to perform an action.</param>
+				<remarks>
+					<block subset="none" type="note">
+						<para>This delegate is used by the method <see cref="M:System.Array.ForEach"/>
+							<see langword="(T[], Action&lt;T&gt;)"/>, and in <see cref="T:System.Collections.Generic.List&lt;T&gt;"/> to perform an action on each element of the collection.</para>
+					</block>
+				</remarks>
+			</Docs>
+			<Base>
+				<BaseTypeName>System.Delegate</BaseTypeName>
+			</Base>
+			<Interfaces>
+				<Interface>
+					<InterfaceName>System.ICloneable</InterfaceName>
+					<Excluded>0</Excluded>
+				</Interface>
+			</Interfaces>
+			<Members/>
+			<TypeExcluded>0</TypeExcluded>
+		</Type>
+		<Type Name="AsyncCallback" FullName="System.AsyncCallback" FullNameSP="System_AsyncCallback">
+			<TypeSignature Language="ILAsm" Value=".class public sealed serializable AsyncCallback extends System.Delegate
+ { .method public hidebysig newslot virtual instance void Invoke(IAsyncResult ar) }"/>
+			<TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);"/>
+			<MemberOfLibrary>BCL</MemberOfLibrary>
+			<AssemblyInfo>
+				<AssemblyName>mscorlib</AssemblyName>
+				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
+				<AssemblyVersion>2.0.x.x</AssemblyVersion>
+				<AssemblyCulture>none</AssemblyCulture>
+				<Attributes>
+					<Attribute>
+						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
+						<Excluded>0</Excluded>
+					</Attribute>
+				</Attributes>
+			</AssemblyInfo>
+			<Docs>
+				<summary>
+					<para> References one or more methods called when an asynchronous operation completes.</para>
+				</summary>
+				<param name="ar">A <see cref="T:System.IAsyncResult"/> object containing information about the asynchronous operation that has completed.</param>
+			</Docs>
+			<Base>
+				<BaseTypeName>System.Delegate</BaseTypeName>
+			</Base>
+			<Interfaces>
+				<Interface>
+					<InterfaceName>System.ICloneable</InterfaceName>
+					<Excluded>0</Excluded>
+				</Interface>
+			</Interfaces>
+			<Members/>
+			<TypeExcluded>0</TypeExcluded>
+		</Type>
+		<Type Name="Environment" FullName="System.Environment" FullNameSP="System_Environment">
+			<TypeSignature Language="ILAsm" Value=".class public sealed Environment extends System.Object"/>
+			<TypeSignature Language="C#" Value="public sealed class Environment"/>
+			<MemberOfLibrary>BCL</MemberOfLibrary>
+			<AssemblyInfo>
+				<AssemblyName>mscorlib</AssemblyName>
+				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
+				<AssemblyVersion>2.0.x.x</AssemblyVersion>
+				<AssemblyCulture>none</AssemblyCulture>
+				<Attributes>
+					<Attribute>
+						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
+						<Excluded>0</Excluded>
+					</Attribute>
+				</Attributes>
+			</AssemblyInfo>
+			<ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
+			<Docs>
+				<summary>
+					<para> Provides the current settings for, and information about, the execution environment.</para>
+				</summary>
+				<remarks>
+					<block subset="none" type="note">
+						<para>Use this class to retrieve the following 
+ information:</para>
+						<list type="bullet">
+							<item>
+								<term>Command line arguments</term>
+							</item>
+							<item>
+								<term>Exit codes</term>
+							</item>
+							<item>
+								<term>Environment variable settings</term>
+							</item>
+							<item>
+								<term>Contents of the call stack</term>
+							</item>
+							<item>
+								<term>Time since last system boot</term>
+							</item>
+							<item>
+								<term>Version of the execution engine</term>
+							</item>
+						</list>
+					</block>
+				</remarks>
+			</Docs>
+			<Base>
+				<BaseTypeName>System.Object</BaseTypeName>
+			</Base>
+			<Interfaces/>
+			<Members>
+				<Member MemberName="GetFolderPath">
+					<MemberSignature Language="C#" Value="public static string GetCommandLineArgs(Environment.SpecialFolder folder);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.String</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="folder" Type="System.Environment+SpecialFolder" />
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Returns the arguments specified on the command
+      line.</para>
+						</summary>
+						<param name="folder">
+							<para>A <see cref="T:System.Environment+SpecialFolder" />.</para>
+						</param>
+						<returns>
+							<para> Returns a <see cref="T:System.String"/> array. Each <see cref="T:System.String"/> in the array
+   contains a single command line argument.</para>
+						</returns>
+						<remarks>
+							<para>The first element in the array contains the filename of
+      the executing program. If the filename is not available, the first element is
+      equal to <see cref="F:System.String.Empty"/>. The remaining elements contain any additional tokens
+      entered on the command line.</para>
+							<block subset="none" type="note">
+								<para>The program filename can, but is not required to,
+         include path information.</para>
+								<para>To obtain the command line as a single <see cref="T:System.String"/>, use the <see cref="P:System.Environment.CommandLine"/>
+   property.</para>
+							</block>
+						</remarks>
+						<exception cref="T:System.ArgumentException">foo</exception>
+						<permission cref="T:System.SomePermission">bar</permission>
+						<altmember cref="T:System.SomeMember">alt member</altmember>
+						<seealso cref="T:System.SomeMember">another member</seealso>
+						<unrecognized attribute="a-ko">should be appended to new docs</unrecognized>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+			</Members>
+			<TypeExcluded>0</TypeExcluded>
+		</Type>
+		<Type Name="Array" FullName="System.Array" FullNameSP="System_Array">
+			<TypeSignature Language="ILAsm" Value=".class public abstract serializable Array extends System.Object implements System.ICloneable, System.Collections.ICollection, System.Collections.IEnumerable, System.Collections.IList"/>
+			<TypeSignature Language="C#" Value="public abstract class Array : ICloneable, ICollection, IEnumerable, IList"/>
+			<MemberOfLibrary>BCL</MemberOfLibrary>
+			<AssemblyInfo>
+				<AssemblyName>mscorlib</AssemblyName>
+				<AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
+				<AssemblyVersion>2.0.x.x</AssemblyVersion>
+				<AssemblyCulture>none</AssemblyCulture>
+				<Attributes>
+					<Attribute>
+						<AttributeName>CLSCompliantAttribute(true)</AttributeName>
+						<Excluded>0</Excluded>
+					</Attribute>
+				</Attributes>
+			</AssemblyInfo>
+			<ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
+			<Docs>
+				<summary>
+					<para> Serves as the base class for arrays. Provides methods for creating,
+      copying, manipulating, searching, and sorting arrays.</para>
+				</summary>
+				<remarks>
+					<para>This class is intended to be used as a base class by
+      language implementations that support arrays. Only the system can derive from
+      this type: derived classes of <see cref="T:System.Array"/> are not to be created by the developer.</para>
+					<block subset="none" type="note">
+						<para>An array is a collection of
+         identically typed data <paramref name="elements"/> that are accessed and referenced by
+         sets of integral <paramref name="indices"/>. </para>
+						<para>The <paramref name="rank"/> of an array is the number
+      of dimensions in the array. Each dimension has its own set of indices. An array
+      with a rank greater than one can have a different lower
+      bound and a different number of elements for each dimension. Multidimensional
+      arrays (i.e. arrays with a rank greater than one) are processed in row-major
+      order. </para>
+						<para>The <paramref name="lower bound"/> of a dimension
+   is the starting index of that dimension. </para>
+						<para>The <paramref name="length"/> of an array is the total number of elements contained in all of its
+dimensions. </para>
+						<para>A <paramref name="vector"/> is a
+one-dimensional array with a <paramref name="lower bound"/> of '0'. </para>
+						<para>If the implementer creates a derived class of <see cref="T:System.Array"/>, expected <see cref="T:System.Array"/> behavior
+cannot be guaranteed. For information on array-like objects with increased
+functionality, see the <see cref="T:System.Collections.IList"/> and <see cref="T:System.Collections.Generic.IList&lt;T&gt;"/> interfaces. For more information regarding the use of arrays versus the use
+of collections, see Partition V of the CLI Specification. </para>
+					</block>
+					<para>Every specific <see cref="T:System.Array"/> type has three instance methods defined on it.
+   While some programming languages allow direct access to these methods, they are
+   primarily intended to be called by the output of compilers based on language
+   syntax that deals with arrays. </para>
+					<list type="bullet">
+						<item>
+							<term>
+								<para>
+									<c>Get</c>: Takes as many <see cref="T:System.Int32"/> arguments as the array
+   has dimensions and returns the value stored at the given index. It throws a
+<see cref="T:System.IndexOutOfRangeException"/> 
+exception for invalid indices. </para>
+							</term>
+						</item>
+						<item>
+							<term>
+								<para>
+									<c>Set</c>: Takes as many <see cref="T:System.Int32"/> arguments as the array
+   has dimensions, plus one additional argument (the last argument) which has the
+   same type as an array element. It stores the final value in the specified
+   index of the array. It throws a <see cref="T:System.IndexOutOfRangeException"/>
+   exception for invalid indices. </para>
+							</term>
+						</item>
+						<item>
+							<term>
+								<para>
+									<c>Address</c>: Takes as many <see cref="T:System.Int32"/> arguments as the
+   array has dimensions and returns the address of the element at the given index.
+   It throws a <see cref="T:System.IndexOutOfRangeException"/>
+   exception for invalid indices. </para>
+							</term>
+						</item>
+					</list>
+					<para>In addition, every specific <see cref="T:System.Array"/> type has a constructor on it that takes as many non-negative 
+<see cref="T:System.Int32"/> 
+arguments as the array has dimensions. The arguments specify the
+number of elements in each dimension, and a lower bound of 0. Thus, a
+two-dimensional array of <see cref="T:System.Int32"/> objects would have a constructor that could be called with
+<c>(2, 4)</c> as its arguments to create an array of eight zeros with the first dimension indexed
+with 0 and 1 and the second dimension indexed with 0, 1, 2, and 3. </para>
+					<para>For all specific array types except vectors (i.e. those
+   permitted to have non-zero lower bounds and those with more than one dimension)
+   there is an additional constructor. It takes twice as many arguments as the
+   array has dimensions. The arguments are considered in pairs, with the first of
+   the pair specifying the lower bound for that dimension and the second specifying
+   the total number of elements in that dimension. Thus, a two-dimensional array
+   of <see cref="T:System.Int32"/>
+   
+   objects would also have a constructor that could be called with <c>(-1, 2, 1, 3)</c> as its arguments,
+specifying an array of 6 zeros, with the first dimension indexed by -1 and 0,
+and the second dimension indexed by 1, 2, and 3. </para>
+					<para>Enumeration over an array occurs in ascending row-major order, starting from the first element. (For example, a 2x3 array is traversed in the order [0,0], [0,1], [0,2], [1,0], [1,1], and [1,2].)</para>
+					<para>Parallel implementation of methods taking a <see cref="T:System.Predicate"/> argument are not permitted.</para>
+				</remarks>
+			</Docs>
+			<Base>
+				<BaseTypeName>System.Object</BaseTypeName>
+			</Base>
+			<Interfaces>
+				<Interface>
+					<InterfaceName>System.ICloneable</InterfaceName>
+					<Excluded>0</Excluded>
+				</Interface>
+				<Interface>
+					<InterfaceName>System.Collections.ICollection</InterfaceName>
+					<Excluded>0</Excluded>
+				</Interface>
+				<Interface>
+					<InterfaceName>System.Collections.IEnumerable</InterfaceName>
+					<Excluded>0</Excluded>
+				</Interface>
+				<Interface>
+					<InterfaceName>System.Collections.IList</InterfaceName>
+					<Excluded>0</Excluded>
+				</Interface>
+			</Interfaces>
+			<Members>
+				<Member MemberName=".ctor">
+					<MemberSignature Language="ILAsm" Value="private rtspecialname specialname instance void .ctor()"/>
+					<MemberSignature Language="C#" Value="private Array();"/>
+					<MemberType>Constructor</MemberType>
+					<ReturnValue/>
+					<Parameters/>
+					<Docs>
+						<summary>Constructs a new instance of the <see cref="T:System.Array"/> class.</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="AsReadOnly&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Collections.Generic.IList`1&lt;!!0&gt; AsReadOnly&lt;T&gt;(!!0[] array)"/>
+					<MemberSignature Language="C#" Value="public static IList&lt;T&gt; AsReadOnly&lt;T&gt;(T[] array)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Collections.Generic.IList&lt;T&gt;</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Returns a read-only <see cref="T: System.Collections.Generic.IList&lt;T&gt;"/> wrapper around the specified array.</para>
+						</summary>
+						<param name="array">The array to wrap in a read-only <see cref="T:System.Collections.Generic.IList&lt;T&gt;"/> wrapper.</param>
+						<returns>
+							<para>A read-only <see cref="T:System.Collections.Generic.IList&lt;T&gt;"/>  wrapper around the specified array.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>
+								<block subset="none" type="note">To prevent any modifications to the array, expose the array only through this wrapper.</block>
+							</para>
+							<para>The returned <see langword="IList&lt;T&gt;"/> has the same enumeration order as the array it wraps.</para>
+							<para>A collection that is read-only is simply a collection with a wrapper that prevents modifying the underlying array; therefore, if changes are made to the underlying array, the read-only collection reflects those changes.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, int32 index, int32 length, object value, class System.Collections.IComparer comparer)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, int index, int length, object value, IComparer comparer);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified section of the specified
+      one-dimensional <see cref="T:System.Array"/> for the specified value, using the
+      specified <see cref="T:System.Collections.IComparer"/>
+      implementation.</para>
+						</summary>
+						<param name="array">A <see cref="T:System.Array"/> to search.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which searching starts. </param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="index"/> . </param>
+						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
+   operation.</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description>Description</description>
+								</listheader>
+								<item>
+									<term> The index of <paramref name="value"/> in the
+      array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of the index of the first element that is larger than
+   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found, and at least one array element in the
+   range of <paramref name="index"/> to <paramref name="index"/> + <paramref name="length"/> - 1 was greater
+   than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of (<paramref name="index"/> + <paramref name="length"/>).</term>
+									<description>
+										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than all
+array elements in the range of <paramref name="index"/> to <paramref name="index"/> +
+<paramref name="length"/>- 1.</description>
+								</item>
+							</list>
+							<para>
+								<block subset="none" type="note"> If <paramref name="value"/> is
+not found, the caller can take the bitwise complement of the return value to
+determine the index of <paramref name="array"/> where <paramref name="value"/> would be found in the
+range of <paramref name="index"/> to <paramref name="index"/> + <paramref name="length"/> - 1 if <paramref name="array"/> is
+already sorted.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> is less than <paramref name="array"/>
+								<see langword=".GetLowerBound(0)"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> is less than zero.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> + <paramref name="length"/> is greater than <paramref name="array"/>
+								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
+								<see langword=".Length"/>.</para>
+							<para> -or- </para>
+							<para>
+								<paramref name="array"/>.UpperBound == <see cref="F:System.Int32.MaxValue"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and both <paramref name="value"/> and at least one element of <paramref name="array"/> do not implement the <see cref="T:System.IComparable"/>  interface.</para>
+						</exception>
+						<remarks>
+							<para>
+								<paramref name="value"/> is compared to each element of
+<paramref name="array"/> using <paramref name="comparer"/> until an element with a value greater 
+   than or equal to <paramref name="value"/> is found. If <paramref name="comparer"/> is <see langword="null"/>,
+   the <see cref="T:System.IComparable"/> interface of the element being compared - or of
+<paramref name="value"/> if the element being compared does not implement the interface 
+   -- is used. If <paramref name="value"/> does not implement the <see cref="T:System.IComparable"/> interface and is compared to an element
+   that does not implement the <see cref="T:System.IComparable"/> interface, a <see cref="T:System.InvalidOperationException"/>
+   exception is thrown. If <paramref name="array"/> is not already
+   sorted, correct results are not guaranteed.</para>
+							<para>
+								<block subset="none" type="note"> A null reference can
+   be compared with any type; therefore, comparisons with a
+   null reference do not generate exceptions.</block>
+							</para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> method.</para>
+							<code lang="C#">using System;
+class BinarySearchExample {
+  public static void Main() {    
+    int[] intAry = { 0, 2, 4, 6, 8 };
+    Console.WriteLine( "The indices and elements of the array are: ");
+    for ( int i = 0; i &lt; intAry.Length; i++ )
+      Console.Write("[{0}]: {1, -5}", i, intAry[i]);
+    Console.WriteLine();
+    SearchFor( intAry, 3 );
+    SearchFor( intAry, 6 );
+    SearchFor( intAry, 9 );
+  }
+  public static void SearchFor( Array ar, Object value ) {
+    int i = Array.BinarySearch( ar, 0, ar.Length, value, null );
+    Console.WriteLine();
+    if ( i &gt; 0 ) {
+      Console.Write( "The object searched for, {0}, was found ", value );
+      Console.WriteLine( "at index {1}.", value, i );
+    }
+    else if ( ~i == ar.Length ) {
+      Console.Write( "The object searched for, {0}, was ", value );
+      Console.Write( "not found,\nand no object in the array had " );
+      Console.WriteLine( "greater value. " );
+    }
+    else {
+      Console.Write( "The object searched for, {0}, was ", value );
+      Console.Write( "not found.\nThe next larger object is at " );
+      Console.WriteLine( "index {0}.", ~i );
+    }
+  }
+}
+   </code>
+							<para>The output is</para>
+							<c>
+								<para>The indices and elements of the array are:</para>
+								<para> [0]:0 [1]:2 [2]:4 [3]:6 [4]:8</para>
+								<para>The object searched for, 3, was not found.</para>
+								<para>The next larger object is at index 2.</para>
+								<para>The object searched for, 6, was found at index 3.</para>
+								<para>The object searched for, 9, was not found,</para>
+								<para>and no object in the array had greater value.</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, object value, class System.Collections.IComparer comparer)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, object value, IComparer comparer);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified one-dimensional <see cref="T:System.Array"/> for the specified
+   value, using the specified <see cref="T:System.Collections.IComparer"/>
+   implementation.</para>
+						</summary>
+						<param name="array">A <see cref="T:System.Array"/> to search.</param>
+						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
+   operation.</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description>Description</description>
+								</listheader>
+								<item>
+									<term> The index of <paramref name="value"/> in the
+      array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of the index of the first element that is larger than
+   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found, and at least one array element was
+   greater than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of (<paramref name="array"/>.GetLowerBound(0) +
+<paramref name="array"/>.Length).</term>
+									<description>
+										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than all
+array elements.</description>
+								</item>
+							</list>
+							<para>
+								<block subset="none" type="note"> If <paramref name="value"/>
+is not found, the caller can take the bitwise complement of the return value to
+determine the index where value would be found in <paramref name="array"/> if it is
+already sorted.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and both <paramref name="value"/> and at least one element of <paramref name="array"/> do not implement the <see cref="T:System.IComparable"/>  interface.</para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
+<paramref name="array"/>.Length, <paramref name="value"/>, <paramref name="comparer"/>).</para>
+							<para>
+								<paramref name="value"/> is compared to each element of
+<paramref name="array"/> using <paramref name="comparer"/> until an element with a value greater 
+than or equal to <paramref name="value"/> is found. If <paramref name="comparer"/> is <see langword="null"/>,
+the <see cref="T:System.IComparable"/> interface of the element being compared - or of
+<paramref name="value"/> if the element being compared does not implement the interface 
+- is used. If <paramref name="value"/> does not implement
+the <see cref="T:System.IComparable"/>
+interface and is compared to an element that does not implement
+the <see cref="T:System.IComparable"/>
+interface, a <see cref="T:System.InvalidOperationException"/> exception is thrown. If <paramref name="array"/> is
+not already sorted, correct results are not guaranteed.</para>
+							<para>
+								<block subset="none" type="note"> A null reference
+   can be compared with any type; therefore, comparisons
+   with a null reference do not generate exceptions.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, int32 index, int32 length, object value)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, int index, int length, object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified section of the specified
+      one-dimensional <see cref="T:System.Array"/> for the specified value.</para>
+						</summary>
+						<param name="array">A <see cref="T:System.Array"/> to search.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which searching starts.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="index"/> .</param>
+						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
+   operation.</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description>Description</description>
+								</listheader>
+								<item>
+									<term> The index of <paramref name="value"/> in the
+      array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of the index of the first element that is larger than
+   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found, and at least one array element in the
+   range of <paramref name="index"/> to <paramref name="index"/> + <paramref name="length"/> - 1 was greater
+   than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of (<paramref name="index"/> + <paramref name="length"/>).</term>
+									<description>
+										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than all
+array elements in the range of <paramref name="index"/> to <paramref name="index"/> +
+<paramref name="length"/>- 1.</description>
+								</item>
+							</list>
+							<para>
+								<block subset="none" type="note"> If <paramref name="value"/>
+is not found, the caller can take the bitwise complement of the return value to
+determine the index of the array where <paramref name="value"/> would be found in the
+range of <paramref name="index"/> to <paramref name="index"/> + <paramref name=" length"/> - 1 if <paramref name="array"/>
+is already sorted.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/> .</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/> (i.e. <paramref name="index"/> + <paramref name="length"/> &gt; <paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length).</para>
+							<para> -or-</para>
+							<para>
+								<paramref name="array"/>.UpperBound == <see cref="F:System.Int32.MaxValue"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>Either <paramref name="value"/> or at least one element of <paramref name="array"/> does not implement the <see cref="T:System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
+<paramref name="array"/>.Length, <paramref name="value"/>, 
+<see langword="null"/>). </para>
+							<para>
+								<paramref name="value"/> is compared to each element of <paramref name="array"/> using
+the <see cref="T:System.IComparable"/> interface of the element being compared - or of
+<paramref name="value"/> if the element being compared does not implement the interface - 
+until an element with a value greater than or equal to <paramref name="value"/> is found.
+If <paramref name="value"/> does not implement the <see cref="T:System.IComparable"/> interface and is compared to an element
+that does not implement the <see cref="T:System.IComparable"/> interface, a <see cref="T:System.InvalidOperationException"/>
+exception is thrown. If <paramref name="array"/> is not already sorted, correct results
+are not guaranteed. </para>
+							<para>
+								<block subset="none" type="note"> A null reference can be compared with
+   any type; therefore, comparisons with a null reference do not generate
+   exceptions.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch(class System.Array array, object value)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch(Array array, object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified one-dimensional <see cref="T:System.Array"/> for the specified object.</para>
+						</summary>
+						<param name="array">A <see cref="T:System.Array"/> to search for an object.</param>
+						<param name="value">A <see cref="T:System.Object"/> for which to search. </param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> with one of the following values based on the result of the search
+   operation.</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description> Description</description>
+								</listheader>
+								<item>
+									<term> The index of <paramref name="value"/> in the
+      array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of the index of the first element that is larger than
+   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found and the value of at least one element of
+<paramref name="array"/> was greater than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term> The bitwise complement of (<paramref name="array"/>.GetLowerBound(0) +
+<paramref name="array"/>.Length).</term>
+									<description>
+										<paramref name="value"/> was not found, and <paramref name="value"/> was greater than the
+value of all array elements.</description>
+								</item>
+							</list>
+							<para>
+								<block subset="none" type="note"> If <paramref name="value"/>
+is not found, the caller can take the bitwise complement of the return value to
+determine the index where value would be found in <paramref name="array"/> if it is sorted
+already.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<para>
+								<paramref name="array"/> has more than one dimension.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>Both <paramref name="value"/> and at least one element of <paramref name="array"/> do not implement the <see cref="T:System.IComparable"/> interface. </para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.BinarySearch(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
+<paramref name="array"/>.Length, <paramref name="value"/>, 
+<see langword="null"/>).</para>
+							<para>
+								<paramref name="value"/> is compared to each element of
+<paramref name="array"/> using the <see cref="T:System.IComparable"/> interface of the element being 
+compared - or of <paramref name="value"/> if the element being compared does not implement the
+interface - until an element with a value greater than or equal to
+<paramref name="value"/> is found. If <paramref name="value"/> does not implement the <see cref="T:System.IComparable"/> interface 
+and is compared to an element that does not implement the <see cref="T:System.IComparable"/> interface,
+a <see cref="T:System.InvalidOperationException"/> exception is thrown. If <paramref name="array"/>
+is not already sorted, correct results are not guaranteed.</para>
+							<para>
+								<block subset="none" type="note"> A null reference
+   can be compared with any type; therefore,
+   comparisons with a null reference do not generate exceptions.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0[] array, !!0 value)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, T value)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches an entire one-dimensional sorted array for a specific element, using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface implemented by each element of the array and by the specified object.</para>
+						</summary>
+						<param name="array">The one-dimensional array to search.</param>
+						<param name="value">The object for which to search.</param>
+						<returns>
+							<para>One of the following values based on the result of the search operation:</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description>Description</description>
+								</listheader>
+								<item>
+									<term>A non-negative index of <paramref name="value"/> in the array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
+									<description>
+										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
+								</item>
+							</list>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/> .</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>Neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interfaces.</para>
+						</exception>
+						<remarks>
+							<para>Either <paramref name="value"/> or every element of <paramref name="array"/>  must implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/>  interface, which is used for comparisons. The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation; otherwise, the  behavior is unspecified</para>
+							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
+							<para>
+								<block subset="none" type="note">
+									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0[] array, !!0 value, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, T value, IComparer&lt;T&gt; comparer)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches an entire one-dimensional sorted array for a value using the specified <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> interface.</para>
+						</summary>
+						<param name="array">The one-dimensional array to search.</param>
+						<param name="value">The object for which to search.</param>
+						<param name="comparer">
+							<para>The implementation to use when comparing elements.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/> to use the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<returns>
+							<para>One of the following values based on the result of the search operation:</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description>Description</description>
+								</listheader>
+								<item>
+									<term>A non-negative index of <paramref name="value"/> in the array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
+									<description>
+										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
+								</item>
+							</list>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/> .</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>The comparer customizes how the elements are compared.</para>
+							<para>The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by <paramref name="comparer"/>; otherwise, the behavior is unspecified</para>
+							<para>If <paramref name="comparer"/> is not <see langword="null"/>, the elements of <paramref name="array"/> are compared to the specified value using the specified  <see cref="T:System.Collections.Generic.IComparer"/> implementation. </para>
+							<para>If <paramref name="comparer"/> is <see langword="null"/>, the default comparer is used.</para>
+							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
+							<para>
+								<block subset="none" type="note">
+									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0 array, int32 index, int32 length, !!0 value)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, int index, int length, T value)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="value" Type="T"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches a range of elements in a one-dimensional sorted array for a value, using the <see cref="T:System.IComparable"/> interface implemented by each element of the array and by the specified value.</para>
+						</summary>
+						<param name="array">The one-dimensional array to search.</param>
+						<param name="index">The starting index of the range to search.</param>
+						<param name="length">The length of the range to search.</param>
+						<param name="value">The object for which to search.</param>
+						<returns>
+							<para>One of the following values based on the result of the search operation:</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description>Description</description>
+								</listheader>
+								<item>
+									<term>A non-negative index of <paramref name="value"/> in the array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
+									<description>
+										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
+								</item>
+							</list>
+						</returns>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> + <paramref name="length"/> is greater than <paramref name="array"/>
+								<see langword=".Length"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/> .</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> is less than zero</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> is less than zero.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>Neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>Either <paramref name="value"/> or every element of <paramref name="array"/>  must implement the <see cref="T:System.IComparable"/>  interface, which is used for comparisons. The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation; otherwise, the behavior is unspecified</para>
+							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
+							<para>
+								<block subset="none" type="note">
+									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="BinarySearch&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 BinarySearch&lt;T&gt;(!!0[] array, int32 index, int32 length, !!0 value, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
+					<MemberSignature Language="C#" Value="public static int BinarySearch&lt;T&gt;(T[] array, int index, int length, T value, IComparer&lt;T&gt; comparer)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="value" Type="T"/>
+						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches a range of elements in a one-dimensional sorted array for a value, using the specified <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> interface.</para>
+						</summary>
+						<param name="array">The one-dimensional array to search.</param>
+						<param name="index">The starting index of the range to search.</param>
+						<param name="length">The length of the range to search.</param>
+						<param name="value">The object for which to search.</param>
+						<param name="comparer">
+							<para>The implementation to use when comparing elements.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/> to use the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<returns>
+							<para>One of the following values based on the result of the search operation:</para>
+							<list type="table">
+								<listheader>
+									<term>Return Value</term>
+									<description>Description</description>
+								</listheader>
+								<item>
+									<term>A non-negative index of <paramref name="value"/> in the array.</term>
+									<description>
+										<paramref name="value"/> was found.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of the index of the first element that is larger than   <paramref name="value"/>.</term>
+									<description>
+										<paramref name="value"/> was not found and the value of at least one element of array was greater than <paramref name="value"/>.</description>
+								</item>
+								<item>
+									<term>A negative value, which is the bitwise complement of one more than the index of the final element.</term>
+									<description>
+										<paramref name="value"/> was not found, and  <paramref name="value"/> was greater than the value of all array elements.</description>
+								</item>
+							</list>
+						</returns>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in array.</para>
+						</exception>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/> .</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> is less than zero</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> is less than zero.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and neither <paramref name="value"/> nor the elements of the array implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>The comparer customizes how the elements are compared.</para>
+							<para>The elements of <paramref name="array"/> must already be sorted in increasing value according to the sort order defined by <paramref name="comparer"/>; otherwise, the behavior is unspecified.</para>
+							<para>If <paramref name="comparer"/> is not <see langword="null"/>, the elements of <paramref name="array"/> are compared to the specified value using the specified  <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> implementation. </para>
+							<para>If <paramref name="comparer"/> is <see langword="null"/>, the comparison is done using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable "/> implementation provided by the element itself or by the specified value.</para>
+							<para>Duplicate elements are allowed. If the array contains more than one element equal to <paramref name="value"/>, the method returns the index of only one of the occurrences, but not necessarily the first one.</para>
+							<para>
+								<block subset="none" type="note">
+									<see langword="null"/> can always be compared with any other reference type; therefore, comparisons with <see langword="null"/> do not generate an exception.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Clear">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Clear(class System.Array array, int32 index, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Clear(Array array, int index, int length);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sets the specified range of elements in the
+      specified <see cref="T:System.Array"/> to zero, false, or to a null reference, depending on the
+      element type.</para>
+						</summary>
+						<param name="array">The <see cref="T:System.Array"/> to clear.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which clearing starts.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to clear, beginning with <paramref name="index"/>.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/> (i.e. <paramref name="index"/> + <paramref name="length"/> &gt; <paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length ).</para>
+						</exception>
+						<remarks>
+							<para>Reference-type elements will be set to
+   <see langword="null"/>. Value-type elements will be set to zero, 
+      except for <see cref="T:System.Boolean"/>
+      elements, which will be set to
+   <see langword="false"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Clone">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual object Clone()"/>
+					<MemberSignature Language="C#" Value="public virtual object Clone();"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Object</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>
+							<para>Returns a <see cref="T:System.Object"/> that is a copy of the current instance.</para>
+						</summary>
+						<returns>
+							<para>A <see cref="T:System.Object"/> that is a copy of
+   the current instance.</para>
+						</returns>
+						<remarks>
+							<para>
+								<block subset="none" type="note"> This method is implemented to support
+      the <see cref="T:System.ICloneable"/>
+      interface.</block>
+							</para>
+							<para>
+								<block subset="none" type="behaviors">Each of the
+      elements of the current instance is copied to the clone. If the elements are
+      reference types, the references are copied. If the elements are value-types, the
+      values are copied. The clone is of the same type as the current
+      instance.</block>
+							</para>
+							<para>
+								<block subset="none" type="default">As described above.</block>
+							</para>
+							<para>
+								<block subset="none" type="overrides">Override this method to return a
+      clone of an array.</block>
+							</para>
+							<para>
+								<block subset="none" type="usage">Use this method to obtain the clone of
+      an array.</block>
+							</para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.Clone"/> method.</para>
+							<code lang="C#">using System;
+public class ArrayCloneExample {
+  public static void Main() {
+    int[] intAryOrig = { 3, 4, 5 };
+    //must explicitly convert clones object into an array
+    int[] intAryClone = (int[]) intAryOrig.Clone();
+    Console.Write( "The elements of the first  array are: " );
+    foreach( int i in intAryOrig )
+      Console.Write( "{0,3}", i );
+    Console.WriteLine();
+    Console.Write( "The elements of the cloned array are: " );
+    foreach( int i in intAryClone )
+      Console.Write( "{0,3}", i );
+    Console.WriteLine();
+    //Clear the values of the original array.
+    Array.Clear( intAryOrig, 0, 3 );
+    Console.WriteLine( "After clearing the first array," );
+    Console.Write( "The elements of the first  array are: " );
+    foreach( int i in intAryOrig )
+      Console.Write( "{0,3}", i );
+    Console.WriteLine();
+    Console.Write( "The elements of the cloned array are: " );
+    foreach( int i in intAryClone )
+      Console.Write( "{0,3}", i );
+  }
+}
+   </code>
+							<para>The output is</para>
+							<c>
+								<para>The elements of the first array are: 3 4 5</para>
+								<para>The elements of the cloned array are: 3 4 5</para>
+								<para>After clearing the first array,</para>
+								<para>The elements of the first array are: 0 0 0</para>
+								<para>The elements of the cloned array are: 3 4 5</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="ConvertAll&lt;T,U&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static !!1[] ConvertAll&lt;T,U&gt;(!!0[] array, class System.Converter`1&lt;!!0,!!1&gt; converter)"/>
+					<MemberSignature Language="C#" Value="public static U[] ConvertAll&lt;T,U&gt;(T[] array, Converter&lt;T,U&gt; converter)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>U[]</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="converter" Type="System.Converter&lt;T,U&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Converts an array of one type to an array of another type.</para>
+						</summary>
+						<param name="array">The one-dimensional array to convert.</param>
+						<param name="converter">
+							<para>A <see cref="T:System.Converter&lt;T,U&gt;"/> that converts each element from one type to another type.</para>
+						</param>
+						<returns>
+							<para>A new array of the target type containing the converted elements from <paramref name="array"/>.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/> or <paramref name="converter"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The <see cref="T:System.Converter&lt;T,U&gt;"/> is a delegate that converts an array element to the target type.  The elements of  <paramref name="array"/> are individually passed to this converter, and the converted elements are saved in the new array. The source array remains unchanged.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Copy">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Copy(class System.Array sourceArray, class System.Array destinationArray, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Copy(Array sourceArray, Array destinationArray, int length);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="sourceArray" Type="System.Array"/>
+						<Parameter Name="destinationArray" Type="System.Array"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Copies the specified number of elements from the 
+      specified source array to the specified destination array.</para>
+						</summary>
+						<param name="sourceArray">A <see cref="T:System.Array"/> that contains the data to copy.</param>
+						<param name="destinationArray">A <see cref="T:System.Array"/> that receives the data.</param>
+						<param name="length">A <see cref="T:System.Int32"/> designating the number of elements to copy, starting with the first element and proceeding in order.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="sourceArray"/> or <paramref name="destinationArray"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<para>
+								<paramref name="sourceArray"/> and <paramref name="destinationArray"/> have different ranks.</para>
+						</exception>
+						<exception cref="T:System.ArrayTypeMismatchException">
+							<para>The elements in both arrays are built-in types, and converting from the type of the elements of <paramref name="sourceArray"/> into the type of the elements in <paramref name="destinationArray"/> requires a narrowing conversion.</para>
+							<para> -or-</para>
+							<para>Both arrays are built-in types, and one array is a value-type array and the other an array of interface type not implemented by that value-type.</para>
+							<para> -or-</para>
+							<para>Both arrays are user-defined value types and are not of the same type.</para>
+						</exception>
+						<exception cref="T:System.InvalidCastException">
+							<para> At least one of the elements in <paramref name="sourceArray"/> is not assignment-compatible with the type of <paramref name="destinationArray"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="length"/> &gt; <paramref name="sourceArray"/>.Length.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length "/> &gt; <paramref name="destinationArray"/>.Length.</para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> is equivalent to <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> (<paramref name="sourceArray"/>, <paramref name="sourceArray"/>.GetLowerBound(0), <paramref name="destinationArray"/>,
+<paramref name="destinationArray"/>.GetLowerBound(0), <paramref name="length"/>). </para>
+							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/> are of different
+types, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> performs widening conversions on the elements of
+<paramref name="sourceArray"/> as necessary before storing the information in 
+<paramref name="destinationArray"/>. Value types will be boxed when being converted to a 
+<see cref="T:System.Object"/>. If the necessary 
+conversion is a narrowing conversion, a <see cref="T:System.ArrayTypeMismatchException"/> exception is thrown. <block subset="none" type="note">
+For information regarding valid conversions performed by this method, see
+<see cref="T:System.Convert"/>.</block>
+							</para>
+							<para>If an exception is thrown while copying, the state of
+<paramref name="destinationArray"/> is undefined. </para>
+							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/> are the same
+array, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> copies the source elements safely to their
+destination, as if the copy were done through an intermediate array. </para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> method.</para>
+							<code lang="C#">using System;
+public class ArrayCopyExample {
+   public static void Main() {
+      int[] intAryOrig = new int[3];
+      double[] dAryCopy = new double[3];
+      for ( int i = 0; i &lt; intAryOrig.Length; i++ )
+         intAryOrig[i] = i+3;
+      //copy the first 2 elements of the source into the destination
+      Array.Copy( intAryOrig, dAryCopy, 2);
+      Console.Write( "The elements of the first array are: " );
+      for ( int i = 0; i &lt; intAryOrig.Length; i++ ) 
+         Console.Write( "{0,3}", intAryOrig[i] );
+      Console.WriteLine();
+      Console.Write( "The elements of the copied array are: " );
+      for ( int i = 0; i &lt; dAryCopy.Length; i++ ) 
+         Console.Write( "{0,3}", dAryCopy[i] );
+   }
+}
+   </code>
+							<para>The output is</para>
+							<c>
+								<para>The elements of the first array are: 3 4 5</para>
+								<para>The elements of the copied array are: 3 4 0</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Copy">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Copy(class System.Array sourceArray, int32 sourceIndex, class System.Array destinationArray, int32 destinationIndex, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="sourceArray" Type="System.Array"/>
+						<Parameter Name="sourceIndex" Type="System.Int32"/>
+						<Parameter Name="destinationArray" Type="System.Array"/>
+						<Parameter Name="destinationIndex" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Copies the specified number of elements from a source 
+      array starting at the specified source index to a destination array
+      starting at the specified destination index.</para>
+						</summary>
+						<param name="sourceArray">The <see cref="T:System.Array"/> that contains the data to copy.</param>
+						<param name="sourceIndex">A <see cref="T:System.Int32"/> that contains the index in <paramref name="sourceArray"/> from which copying begins.</param>
+						<param name="destinationArray">The <see cref="T:System.Array"/> that receives the data.</param>
+						<param name="destinationIndex">A <see cref="T:System.Int32"/> that contains the index in <paramref name="destinationArray"/> at which storing begins.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to copy.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="sourceArray"/> or <paramref name="destinationArray"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<para>
+								<paramref name="sourceArray"/> and <paramref name="destinationArray"/> have different ranks.</para>
+						</exception>
+						<exception cref="T:System.ArrayTypeMismatchException">
+							<para>The elements in both arrays are built-in types, and converting from the type of the elements of <paramref name="sourceArray"/> into the type of the elements in <paramref name="destinationArray"/> requires a narrowing conversion.</para>
+							<para>-or-</para>
+							<para>Both arrays are built-in types, and one array is a value-type array and the other an array of interface type not implemented by that value-type.</para>
+							<para>-or-</para>
+							<para>Both arrays are user-defined value types and are not of the same type.</para>
+						</exception>
+						<exception cref="T:System.InvalidCastException">
+							<para>At least one element in <paramref name="sourceArray"/> is assignment-incompatible with the type of <paramref name="destinationArray"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="sourceIndex"/> &lt; <paramref name="sourceArray"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="destinationIndex"/> &lt; <paramref name="destinationArray"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>(<paramref name="sourceIndex"/> + <paramref name="length"/> ) &gt; (<paramref name="sourceArray"/>.GetLowerBound(0) + <paramref name="sourceArray"/>.Length).</para>
+							<para>(<paramref name="destinationIndex"/> + <paramref name="length"/> ) &gt; ( <paramref name="destinationArray"/>.GetLowerBound(0) + <paramref name="destinationArray"/>.Length).</para>
+						</exception>
+						<remarks>
+							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/>
+are of different types, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> performs widening conversions on the elements of
+<paramref name="sourceArray"/> as necessary before storing the information in 
+<paramref name="destinationArray"/>. Value types will be boxed when being converted to a 
+<see cref="T:System.Object"/>. If the necessary 
+conversion is a narrowing conversion, a <see cref="T:System.ArrayTypeMismatchException"/> exception is thrown. <block subset="none" type="note">
+For information regarding valid conversions performed by this method, see
+<see cref="T:System.Convert"/> .</block>
+							</para>
+							<para>If an exception is thrown while copying, the state of
+<paramref name="destinationArray"/> is undefined. </para>
+							<para>If <paramref name="sourceArray"/> and <paramref name="destinationArray"/>
+are the same array, <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> copies the source elements safely to their
+destination as if the copy were done through an intermediate array. </para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/> method.</para>
+							<code lang="C#">using System;
+class ArrayCopyExample {
+   public static void Main() {
+      int[] intAry = { 0, 10, 20, 30, 40, 50 };
+      Console.Write( "The elements of the array are: " );
+      foreach ( int i in intAry )
+         Console.Write( "{0,3}", i );
+      Console.WriteLine();
+      Array.Copy( intAry, 2, intAry, 0, 4 );
+      Console.WriteLine( "After copying elements 2 through 5 into elements 0 through 4" );
+      Console.Write( "The elements of the array are: " );
+      foreach ( int i in intAry )
+         Console.Write( "{0,3}", i );
+      Console.WriteLine();     
+   }
+}
+   </code>
+							<para>The output is</para>
+							<c>
+								<para>The elements of the array are: 0 10 20 30 40 50</para>
+								<para>After copying elements 2 through 5 into elements 0 through 4</para>
+								<para>The elements of the array are: 20 30 40 50 40 50</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="CopyTo">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual void CopyTo(class System.Array array, int32 index)"/>
+					<MemberSignature Language="C#" Value="public virtual void CopyTo(Array array, int index);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Copies all the elements of the current zero-based instance to the specified one-dimensional array starting at the specified subscript in the destination array.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied from the current instance.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index in <paramref name="array"/> at which copying begins.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<para>The current instance has more than one dimension.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<paramref name="index"/> &lt; <paramref name="array"/>
+							<see langword=".GetLowerBound(0)"/>.</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="array"/> has more than one dimension.</para>
+							<para> -or-</para>
+							<para>( <paramref name="index"/> + Length of the current instance) &gt; (<paramref name="array"/>
+								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
+								<see langword=".Length"/>).</para>
+							<para> -or-</para>
+							<para>The number of elements in the current instance is greater than the available space from <paramref name="index"/> to the end of <paramref name="array"/>.</para>
+						</exception>
+						<exception cref="T:System.ArrayTypeMismatchException">The element type of the current instance is not assignment-compatible with the element type of <paramref name="array"/>.</exception>
+						<remarks>
+							<para>
+								<paramref name="index"/> is the array index in the destination array at which copying begins.</para>
+							<block subset="none" type="note">
+								<para>This method is implemented to support the <see cref="T:System.Collections.ICollection"/> interface. If implementing <see cref="T:System.Collections.ICollection"/> is not explicitly required, use <see cref="M:System.Array.Copy(System.Array,System.Array,System.Int32)"/>
+   to avoid an extra indirection.</para>
+								<para>If this method throws an exception while copying, the state of <paramref name="array"/>
+is undefined.</para>
+							</block>
+							<para>
+								<block subset="none" type="behaviors">As described
+   above.</block>
+							</para>
+							<para>
+								<block subset="none" type="default">As described
+   above.</block>
+							</para>
+							<para>
+								<block subset="none" type="overrides">Override this
+   method to copy elements of the current instance to a specified
+   array.</block>
+							</para>
+							<para>
+								<block subset="none" type="usage">Use this method to
+   copy elements of the current instance to a specified array.</block>
+							</para>
+						</remarks>
+						<example>
+							<para> The following example shows how to copy the elements of one <see cref="T:System.Array"/> into another.</para>
+							<code lang="C#">using System;
+
+public class ArrayCopyToExample
+{
+   public static void Main()
+   {
+      Array aryOne = Array.CreateInstance(typeof(Object), 3);
+      aryOne.SetValue("one", 0);
+      aryOne.SetValue("two", 1);
+      aryOne.SetValue("three", 2);
+
+      Array aryTwo = Array.CreateInstance(typeof(Object), 5);
+      for (int i=0; i &lt; aryTwo.Length; i++)
+         aryTwo.SetValue(i, i);
+
+      Console.WriteLine("The contents of the first array are:");
+      foreach (object o in aryOne)
+         Console.Write("{0} ", o);
+      Console.WriteLine();
+      Console.WriteLine("The original contents of the second array are:");
+      foreach (object o in aryTwo)
+         Console.Write("{0} ", o);
+      Console.WriteLine();
+      
+      aryOne.CopyTo(aryTwo, 1);
+
+      Console.WriteLine("The new contents of the second array are:");
+      foreach( object o in aryTwo)
+         Console.Write("{0} ", o);
+   }
+}
+</code>
+							<para>The output is</para>
+							<para>
+								<c>The contents of the first array are:</c>
+							</para>
+							<para>
+								<c> one two three</c>
+							</para>
+							<para>
+								<c>The original contents of the second array are:</c>
+							</para>
+							<para>
+								<c>0 1 2 3 4</c>
+							</para>
+							<para>
+								<c> The new contents of the second array are:</c>
+							</para>
+							<para>
+								<c>0 one two three 4</c>
+							</para>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="CreateInstance">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32[] lengths)"/>
+					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int[] lengths);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Array</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="elementType" Type="System.Type"/>
+						<Parameter Name="lengths" Type="System.Int32[]"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Creates a zero-based, multidimensional array of the
+      specified <see cref="T:System.Type"/> and dimension lengths.</para>
+						</summary>
+						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
+						<param name="lengths">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the size of each dimension of the new <see cref="T:System.Array"/> instance.</param>
+						<returns>
+							<para>A new zero-based, multidimensional <see cref="T:System.Array"/> instance of the
+   specified <see cref="T:System.Type"/> with the specified length for
+   each dimension. The <see cref="P:System.Array.Rank"/> of the new instance is equal to
+<paramref name="lengths"/>.Length.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="elementType"/> or <paramref name="lengths"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="lengths"/>.Length = 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">A value in <paramref name="lengths"/> is less than zero.</exception>
+						<remarks>
+							<para>The number of elements in <paramref name="lengths"/> is required to equal the number of
+   dimensions in the new <see cref="T:System.Array"/> instance. Each element of <paramref name="lengths"/> specifies
+   the length of the corresponding dimension in the new instance.</para>
+							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
+except for <see cref="T:System.Boolean"/>
+elements, which will be set to
+<see langword="false"/>.</para>
+							<para>
+								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
+<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow
+for late bound access.</block>
+							</para>
+						</remarks>
+						<example>
+							<para> The following example shows how to create and initialize a
+      multidimensional <see cref="T:System.Array"/>.</para>
+							<code lang="C#">
+using System;
+
+public class CreateMultiDimArrayExample
+{
+   public static void Main()
+   {
+      int i, j, k;
+      int[] indexAry = {2, 4, 5};
+      Array ary = Array.CreateInstance( typeof(int), indexAry );
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
+         {
+            for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
+            {
+               ary.SetValue( (100*i + 10*j + k), i, j, k );
+            }
+         }
+      }
+      Console.WriteLine("The elements of the array are:");
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
+         {
+             for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
+            {
+               Console.Write("{0, 3} ", ary.GetValue(i, j, k));
+            }
+            Console.WriteLine();
+         }
+         Console.WriteLine();
+      }
+   }
+}
+   </code>
+							<para>The output is</para>
+							<code>The elements of the array are:
+  0   1   2   3   4
+ 10  11  12  13  14
+ 20  21  22  23  24
+ 30  31  32  33  34
+
+100 101 102 103 104
+110 111 112 113 114
+120 121 122 123 124
+130 131 132 133 134 
+</code>
+						</example>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="CreateInstance">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32 length1, int32 length2, int32 length3)"/>
+					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int length1, int length2, int length3);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Array</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="elementType" Type="System.Type"/>
+						<Parameter Name="length1" Type="System.Int32"/>
+						<Parameter Name="length2" Type="System.Int32"/>
+						<Parameter Name="length3" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Creates a zero-based, three-dimensional array of the
+      specified <see cref="T:System.Type"/> and dimension lengths.</para>
+						</summary>
+						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
+						<param name="length1">A <see cref="T:System.Int32"/> that contains the number of elements contained in the first dimension of the new <see cref="T:System.Array"/> instance. </param>
+						<param name="length2">A <see cref="T:System.Int32"/> that contains the number of elements contained in the second dimension of the new <see cref="T:System.Array"/> instance. </param>
+						<param name="length3">A <see cref="T:System.Int32"/> that contains the number of elements contained in the third dimension of the new <see cref="T:System.Array"/> instance. </param>
+						<returns>
+							<para>A new zero-based, three-dimensional <see cref="T:System.Array"/> instance of <paramref name="elementType"/> objects with the size
+<paramref name="length1"/> for the first dimension, <paramref name="length2"/> for the second, and 
+<paramref name="length3"/> for the third.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="elementType"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentException">
+							<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="length1"/> &lt; 0.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length2"/> &lt; 0.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length3"/> &lt; 0.</para>
+						</exception>
+						<remarks>
+							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
+   except for <see cref="T:System.Boolean"/>
+   elements, which will be set to
+<see langword="false"/>.</para>
+							<para>
+								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
+<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow 
+for late bound access.</block>
+							</para>
+						</remarks>
+						<example>
+							<para> The following example shows how to create and
+      initialize a three-dimensional <see cref="T:System.Array"/>.</para>
+							<code lang="C#">
+using System;
+
+public class Create3DArrayExample
+{
+   public static void Main()
+   {
+      int i, j, k;
+      Array ary = Array.CreateInstance( typeof(int), 2, 4, 3 );
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
+         {
+            for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
+            {
+               ary.SetValue( (100*i + 10*j + k), i, j, k );
+            }
+         }
+      }
+      Console.WriteLine("The elements of the array are:");
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
+         {
+             for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
+            {
+               Console.Write("{0, 3} ", ary.GetValue(i, j, k));
+            }
+            Console.WriteLine();
+         }
+         Console.WriteLine();
+      }
+   }
+}
+   </code>
+							<para>The output is</para>
+							<code>The elements of the array are:
+  0   1   2
+ 10  11  12
+ 20  21  22
+ 30  31  32
+
+100 101 102
+110 111 112
+120 121 122
+130 131 132
+ </code>
+						</example>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="CreateInstance">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32 length1, int32 length2)"/>
+					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int length1, int length2);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Array</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="elementType" Type="System.Type"/>
+						<Parameter Name="length1" Type="System.Int32"/>
+						<Parameter Name="length2" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Creates a zero-based, two-dimensional array of the specified <see cref="T:System.Type"/>
+and dimension lengths.</para>
+						</summary>
+						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
+						<param name="length1">A <see cref="T:System.Int32"/> that contains the number of elements contained in the first dimension of the new <see cref="T:System.Array"/> instance. </param>
+						<param name="length2">A <see cref="T:System.Int32"/> that contains the number of elements contained in the second dimension of the new <see cref="T:System.Array"/> instance. </param>
+						<returns>
+							<para>A new zero-indexed, two-dimensional <see cref="T:System.Array"/> instance of <paramref name="elementType"/> objects with the size
+<paramref name="length1"/> for the first dimension and <paramref name="length2"/> 
+for the second.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="elementType"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentException">
+							<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="length1"/> &lt; 0.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length2"/> &lt; 0.</para>
+						</exception>
+						<remarks>
+							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
+   except for <see cref="T:System.Boolean"/>
+   elements, which will be set to
+<see langword="false"/>.</para>
+							<para>
+								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
+<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow 
+for late bound access.</block>
+							</para>
+						</remarks>
+						<example>
+							<para> The following example shows how to create and
+      initialize a two-dimensional <see cref="T:System.Array"/>.</para>
+							<code lang="C#">
+using System;
+
+public class Create2DArrayExample
+{
+   public static void Main()
+   {
+      int i, j;
+      Array ary = Array.CreateInstance( typeof(int), 5, 3 );
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
+         {
+            ary.SetValue( (10*i + j), i, j );
+         }
+      }
+      Console.WriteLine("The elements of the array are:");
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
+         {
+            Console.Write("{0, 2} ", ary.GetValue(i, j));
+         }
+         Console.WriteLine();
+      }
+   }
+} 
+  </code>
+							<para>The output is</para>
+							<code>The elements of the array are:
+ 0  1  2
+10 11 12
+20 21 22
+30 31 32
+40 41 42
+ </code>
+						</example>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="CreateInstance">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int length);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Array</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="elementType" Type="System.Type"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Constructs a zero-based, one-dimensional array with the specified number of elements of the specified type.</para>
+						</summary>
+						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements contained in the new <see cref="T:System.Array"/> instance.</param>
+						<returns>
+							<para>A zero-based, one-dimensional <see cref="T:System.Array"/> object containing <paramref name="length"/> elements of type
+<paramref name="elementType"/>.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="elementType"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentException">
+							<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<paramref name="length"/> &lt; 0.</exception>
+						<remarks>
+							<para>Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero, 
+   except for <see cref="T:System.Boolean"/>
+   elements, which will be set to
+<see langword="false"/>.</para>
+							<para>
+								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the <see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow
+for late bound access.</block>
+							</para>
+						</remarks>
+						<example>
+							<para> The following example shows how to create and
+      initialize a one-dimensional <see cref="T:System.Array"/>.</para>
+							<code lang="C#">using System;
+
+public class ArrayCreateInstanceExample
+{
+
+   public static void Main()
+   {
+
+      Array intAry = Array.CreateInstance(typeof(int),5);
+      for (int i=intAry.GetLowerBound(0);i&lt;=intAry.GetUpperBound(0);i++)
+         intAry.SetValue(i*3,i);
+      Console.Write("The values of the array are:");
+      foreach (int i in intAry)
+         Console.Write("{0} ",i);
+   
+   }
+
+}
+   </code>
+							<para>The output is</para>
+							<para>
+								<c>The values of the array are: 0 3 6 9 12</c>
+							</para>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="CreateInstance">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class System.Array CreateInstance(class System.Type elementType, int32[] lengths, int32[] lowerBounds)"/>
+					<MemberSignature Language="C#" Value="public static Array CreateInstance(Type elementType, int[] lengths, int[] lowerBounds);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Array</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="elementType" Type="System.Type"/>
+						<Parameter Name="lengths" Type="System.Int32[]"/>
+						<Parameter Name="lowerBounds" Type="System.Int32[]"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Creates a multidimensional array whose element type is the specified <see cref="T:System.Type"/>, and dimension lengths and lower bounds, as specified.</para>
+						</summary>
+						<param name="elementType">The <see cref="T:System.Type"/> of the elements contained in the new <see cref="T:System.Array"/> instance. </param>
+						<param name="lengths">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the size of each dimension of the new <see cref="T:System.Array"/> instance.</param>
+						<param name="lowerBounds">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the lower bound of each dimension of the new <see cref="T:System.Array"/> instance.</param>
+						<returns>
+							<para>A new multidimensional <see cref="T:System.Array"/> whose element type is the specified <see cref="T:System.Type"/> and with
+   the specified length and lower bound for each dimension.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="elementType"/>, <paramref name="lengths"/>, or <paramref name="lowerBounds"/> is <see langword="null"/>. </para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="elementType"/> is not a valid <see cref="T:System.Type"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="lengths"/>.Length = 0.</para>
+							<para> -or-</para>
+							<para>
+								<paramref name="lengths"/> and <paramref name="lowerBounds"/> do not contain the same number of elements.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">A value in <paramref name="lengths"/> is less than zero.</exception>
+						<remarks>
+							<para>The <paramref name="lengths"/> and <paramref name="lowerBounds"/>
+are required to have the same number of elements. The number of elements in
+<paramref name="lengths"/>
+equals the number of dimensions in the new <see cref="T:System.Array"/> instance</para>
+							<para> Each element of <paramref name="lengths"/>
+specifies the length of the corresponding dimension in the new <see cref="T:System.Array"/> instance.</para>
+							<para> Each element of <paramref name="lowerBounds"/> specifies the lower bound of the
+corresponding dimension in the new <see cref="T:System.Array"/> instance.</para>
+							<para> Reference-type elements will be set to <see langword="null"/>. Value-type elements will be set to zero,
+except for <see cref="T:System.Boolean"/>
+elements, which will be set to
+<see langword="false"/>.</para>
+							<para>
+								<block subset="none" type="note">Unlike most classes, <see cref="T:System.Array"/> provides the
+<see cref="M:System.Array.CreateInstance(System.Type,System.Int32)"/> method, instead of public constructors, to allow
+for late bound access.</block>
+							</para>
+						</remarks>
+						<example>
+							<para> The following example shows how to create and
+      initialize a multidimensional <see cref="T:System.Array"/>
+      with specified low bounds.</para>
+							<code lang="C#">
+using System;
+
+public class MultiDimNonZeroBoundExample
+{
+   public static void Main()
+   {
+      int i, j, k;
+      int[] indexAry = {4, 2, 3};
+      int[] lowboundAry = {3, 2, 1};
+      Array ary = Array.CreateInstance( typeof(int), indexAry, lowboundAry );
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++ )
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++ )
+         {
+            for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
+            {
+               ary.SetValue( (100*i + 10*j + k), i, j, k );
+            }
+         }
+      }
+      Console.WriteLine("The elements of the array are:");
+      for( i = ary.GetLowerBound(0); i &lt;= ary.GetUpperBound(0); i++)
+      {
+         for( j = ary.GetLowerBound(1); j &lt;= ary.GetUpperBound(1); j++)
+         {
+             for( k = ary.GetLowerBound(2); k &lt;= ary.GetUpperBound(2); k++ )
+            {
+               Console.Write("{0, 3} ", ary.GetValue(i, j, k));
+            }
+            Console.WriteLine();
+         }
+         Console.WriteLine();
+      }
+   }
+}
+   </code>
+							<para>The output is</para>
+							<code>The elements of the array are:
+321 322 323
+331 332 333
+
+421 422 423
+431 432 433
+
+521 522 523
+531 532 533
+
+621 622 623
+631 632 633
+</code>
+						</example>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="Exists&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static bool Exists&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static bool Exists&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Boolean</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Determines whether the specified array contains any element that matches the conditions defined by the specified predicate.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="match">
+							<para>The predicate that defines the conditions of the elements to search for.</para>
+						</param>
+						<returns>
+							<para>
+								<see langword="true"/>, if the array contains one or more elements that match the conditions defined by the specified predicate; otherwise, <see langword="false"/>.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The predicate returns <see langword="true"/> if the object passed to it matches the delegate. Each element of <paramref name="array"/> is passed to the predicate in turn, and processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Find&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static !!0 Find&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static T Find&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>T</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the first occurrence within the entire array.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="match">
+							<para>The predicate that defines the conditions of the element to search for.</para>
+						</param>
+						<returns>
+							<para>The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type <paramref name="T"/>.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate, moving forward in the array, starting with the first element and ending with the last element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindAll&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static class !!0[] FindAll&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static T[] FindAll&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>T[]</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Retrieves all the elements that match the conditions defined by the specified predicate.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>An array containing all the elements that match the conditions defined by the specified predicate, if found; otherwise, an empty array.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate, and those elements for which the predicate returns <see langword="true"/>, are saved in the returned array.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindIndex&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindIndex&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static int FindIndex&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the zero-based index of the first occurrence within the entire array.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched forward starting at the first element and ending at the last element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindIndex&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindIndex&lt;T&gt;(!!0[] array, int32 startIndex, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static int FindIndex&lt;T&gt;(T[] array, int startIndex, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the zero-based index of the first occurrence within the range of elements in the array that extends from the specified index to the last element.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="startIndex">
+							<para>The zero-based starting index of the search.</para>
+						</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
+							<see langword=".Length"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched forward starting at the specified index and ending at the last element.  Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindIndex&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindIndex&lt;T&gt;(!!0[] array, int32 startIndex, int32 count, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static int FindIndex&lt;T&gt;(T[] array, int startIndex, int count, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="count" Type="System.Int32"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the zero-based index of the first occurrence within the range of elements in the array that starts at the specified index and contains the specified number of elements.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="startIndex">
+							<para>The zero-based starting index of the search</para>
+						</param>
+						<param name="count">
+							<para>The number of consecutive elements to search.</para>
+						</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="startIndex"/> + <paramref name="count"/> is greater than <paramref name="array"/>
+								<see langword=".Length"/>.</para>
+						</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched forward starting at the specified index and going for <paramref name="count"/> elements.  Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindLast&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static !!0 FindLast&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static T FindLast&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>T</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the last occurrence within the entire array.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>The last element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type <paramref name="T"/>.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate, moving backward in the array, starting with the last element and ending with the first element. Processing is stopped when a match is found.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindLastIndex&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindLastIndex&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static int FindLastIndex&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the zero-based index of the last occurrence within the entire array.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched backwards starting at the last element and ending at the first element.  Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindLastIndex&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindLastIndex&lt;T&gt;(!!0[] array, int32 startIndex, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static int FindLastIndex&lt;T&gt;(T[] array, int startIndex, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the zero-based index of the last occurrence within the range of elements in the array that extends from the specified index to the last element.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="startIndex">
+							<para>The zero-based starting index of the backward search.</para>
+						</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
+							<see langword=".Length"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched backward starting at the specified index and ending at the first element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="FindLastIndex&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 FindLastIndex&lt;T&gt;(!!0[] array, int32 startIndex, int32 count, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static int FindLastIndex&lt;T&gt;(T[] array, int startIndex, int count, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="count" Type="System.Int32"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for an element that matches the predicate, and returns the zero-based index of the last occurrence within the range of elements in the array that ends at the specified index and contains the specified number of elements.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="startIndex">
+							<para>The zero-based starting index of the backward search.</para>
+						</param>
+						<param name="count">
+							<para>The number of consecutive elements to search.</para>
+						</param>
+						<param name="match">
+							<para>The predicate that specifies the elements to search for.</para>
+						</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of an element that matches the conditions defined by <paramref name="match"/>, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
+								<see langword=".Length"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is greater than <paramref name="startIndex"/> + 1.</para>
+						</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the predicate. The array is searched backward starting at the specified index and going for <paramref name="count"/> elements. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="ForEach&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void ForEach&lt;T&gt;(!!0[] array, class System.Action`1&lt;!!0&gt; action)"/>
+					<MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt;(T[] array, Action&lt;T&gt; action)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="action" Type="System.Action&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Performs the specified action on each element of the specified array.</para>
+						</summary>
+						<param name="array">The array on whose elements the action is to be performed.</param>
+						<param name="action">
+							<para>The action to perform on each element of <paramref name="array"/>.</para>
+						</param>
+						<returns>
+							<para>The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type <paramref name="T"/>.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="action"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The elements of <paramref name="array"/> are individually passed to the action. The elements of the current array are individually passed to the action delegate, sequentially, in index order, and on the same thread as that used to call <see langword="ForEach"/>. Execution stops if the action throws an exception.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="GetEnumerator">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual class System.Collections.IEnumerator GetEnumerator()"/>
+					<MemberSignature Language="C#" Value="public virtual IEnumerator GetEnumerator();"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Collections.IEnumerator</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>
+							<para>Returns a <see cref="T:System.Collections.IEnumerator"/> for the current instance.</para>
+						</summary>
+						<returns>
+							<para>A <see cref="T:System.Collections.IEnumerator"/> for the current instance.</para>
+						</returns>
+						<remarks>
+							<para>A <see cref="T:System.Collections.IEnumerator"/> grants read-access to the elements of a
+<see cref="T:System.Array"/>.</para>
+							<para>
+								<block subset="none" type="note"> This method is
+   implemented to support the <see cref="T:System.Collections.IEnumerator"/> interface. For more information regarding the use of an
+   enumerator, see <see cref="T:System.Collections.IEnumerator"/>.</block>
+							</para>
+							<block subset="none" type="behaviors">
+								<para>Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.</para>
+								<para> Initially, the enumerator is positioned before the
+      first element of the current instance. <see cref="M:System.Collections.IEnumerator.Reset"/> returns the enumerator to this
+      position. Therefore, after an enumerator is created or after a
+   <see cref="M:System.Collections.IEnumerator.Reset"/>, <see cref="M:System.Collections.IEnumerator.MoveNext"/> is required to be
+      called to advance the enumerator to the first element of the collection before
+      reading the value of <see cref="P:System.Collections.IEnumerator.Current"/>.</para>
+								<para>
+									<see cref="P:System.Collections.IEnumerator.Current"/> returns the same object until either
+<see cref="M:System.Collections.IEnumerator.MoveNext"/> or
+<see cref="M:System.Collections.IEnumerator.Reset"/> is called. <see cref="M:System.Collections.IEnumerator.MoveNext"/> sets <see cref="P:System.Collections.IEnumerator.Current"/>  to the next element.</para>
+								<para>If <see cref="M:System.Collections.IEnumerator.MoveNext"/>  passes the end of the collection, the enumerator is positioned after the last element in the collection and <see cref="M:System.Collections.IEnumerator.MoveNext"/> returns false. When the enumerator is at this position, subsequent calls to<see cref="M:System.Collections.IEnumerator.MoveNext"/>  also return <see langword="false"/>. If the last call to <see cref="M:System.Collections.IEnumerator.MoveNext"/> returned <see langword="false"/>, <see cref="P:System.Collections.IEnumerator.Current"/> is unspecified. To set <see cref="P:System.Collections.IEnumerator.Current"/> to the first element of the collection again, you can call <see cref="M:System.Collections.IEnumerator.Reset"/> followed by <see cref="M:System.Collections.IEnumerator.MoveNext"/>.</para>
+								<para>An enumerator remains valid as long as the collection remains unchanged. If changes are made to the collection, such as adding, modifying, or deleting elements, the enumerator is irrecoverably invalidated and its behavior is undefined.</para>
+								<para>The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread safe procedure.  To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration.  To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.</para>
+							</block>
+							<block subset="none" type="default">
+								<para>Multidimensional arrays will be processed in Row-major form. </para>
+								<para>
+									<block subset="none" type="note"> For some
+      multidimensional <see cref="T:System.Array"/>
+      objects, it can be desirable for an enumerator to process them in Column-major form.</block>
+								</para>
+							</block>
+							<para>
+								<block subset="none" type="overrides">Override this
+   method to provide read-access to the current instance.</block>
+							</para>
+							<para>
+								<block subset="none" type="usage">Use this method
+   to iterate over the elements of the current instance.</block>
+							</para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.GetEnumerator"/> method.</para>
+							<code lang="C#">using System;
+using System.Collections;
+public class ArrayGetEnumerator {
+   public static void Main() {
+      string[,] strAry = {{"1","one"}, {"2", "two"}, {"3", "three"}};
+      Console.Write( "The elements of the array are: " );
+      IEnumerator sEnum = strAry.GetEnumerator();
+      while ( sEnum.MoveNext() )
+         Console.Write( " {0}", sEnum.Current );
+   }
+}
+   </code>
+							<para>The output is</para>
+							<c>
+								<para>The elements of the array are: 1 one 2 two 3 three</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="GetLength">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig int32 GetLength(int32 dimension)"/>
+					<MemberSignature Language="C#" Value="public int GetLength(int dimension)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="dimension" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Gets the number of elements in the specified dimension of the array.</para>
+						</summary>
+						<param name="dimension">The zero-based dimension of the array whose length is to be determined.</param>
+						<returns>
+							<para>The number of elements in the specified dimension of the array.</para>
+						</returns>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>
+								<paramref name="dimension"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="dimension"/> is equal to or greater than <see cref="P:System.Array.Rank"/>.</para>
+						</exception>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
+				</Member>
+				<Member MemberName="GetLowerBound">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance int32 GetLowerBound(int32 dimension)"/>
+					<MemberSignature Language="C#" Value="public int GetLowerBound(int dimension);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="dimension" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Returns the lower bound of the specified dimension in
+      the current instance.</para>
+						</summary>
+						<param name="dimension">A <see cref="T:System.Int32"/> that contains the zero-based dimension of the current instance whose lower bound is to be determined.</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> that contains the lower bound of the specified dimension in the
+   current instance.</para>
+						</returns>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>
+								<paramref name="dimension"/> &lt; 0.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="dimension"/> is equal to or greater than the <see cref="P:System.Array.Rank"/> property of the current instance.</para>
+						</exception>
+						<remarks>
+							<para>
+								<block subset="none" type="note">For example,
+   <see cref="M:System.Array.GetLowerBound(System.Int32)"/> (0) returns the lower bound of the first
+      dimension of the current instance, and <see cref="M:System.Array.GetLowerBound(System.Int32)"/>(<see cref="P:System.Array.Rank"/> - 1) returns the lower bound of the last dimension of
+      the current instance.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
+				</Member>
+				<Member MemberName="GetUpperBound">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance int32 GetUpperBound(int32 dimension)"/>
+					<MemberSignature Language="C#" Value="public int GetUpperBound(int dimension);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="dimension" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Returns the upper bound of the specified dimension in
+      the current instance.</para>
+						</summary>
+						<param name="dimension">A <see cref="T:System.Int32"/> that contains the zero-based dimension of the current instance whose upper bound is to be determined.</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> that contains the upper bound of the specified dimension in the
+   current instance.</para>
+						</returns>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>
+								<paramref name="dimension"/> &lt; 0.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="dimension"/> is equal to or greater than the <see cref="P:System.Array.Rank"/> property of the current instance.</para>
+						</exception>
+						<remarks>
+							<para>
+								<block subset="none" type="note">For example, <see cref="M:System.Array.GetUpperBound(System.Int32)"/>
+(0) returns the upper bound of the first dimension of the current
+instance, and <see cref="M:System.Array.GetUpperBound(System.Int32)"/>(<see cref="P:System.Array.Rank"/> - 1) returns the upper bound of the last dimension
+of the current instance.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
+				</Member>
+				<Member MemberName="GetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32[] indices)"/>
+					<MemberSignature Language="C#" Value="public object GetValue(int[] indices);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Object</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="indices" Type="System.Int32[]"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Gets the value at the specified position in the
+      current multidimensional instance.</para>
+						</summary>
+						<param name="indices">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the indices that specify the position of the element in the current instance whose value to get.</param>
+						<returns>
+							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the
+   current instance.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="indices"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentException">The number of dimensions in the current instance is not equal to the number of elements in <paramref name="indices"/>.</exception>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>At least one element in <paramref name="indices"/> is outside the range of valid indices for the corresponding dimension of the current instance.</para>
+						</exception>
+						<remarks>
+							<para>The number of elements in <paramref name="indices"/> is required to be equal to the number of
+   dimensions in the current instance. All elements in <paramref name="indices"/> collectively specify the position of the
+   desired element in the current instance.</para>
+							<para>
+								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and
+<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any of the values in 
+<paramref name="indices"/> are out of
+bounds.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="GetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32 index)"/>
+					<MemberSignature Language="C#" Value="public object GetValue(int index);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Object</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="index" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Gets the value at the specified position in the current one-dimensional
+      instance.</para>
+						</summary>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the position of the value to get from the current instance.</param>
+						<returns>
+							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the current
+   instance.</para>
+						</returns>
+						<exception cref="T:System.ArgumentException">The current instance has more than one dimension.</exception>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>
+								<paramref name="index"/> is outside the range of valid indices for the current instance.</para>
+						</exception>
+						<remarks>
+							<para>
+								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and
+<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine 
+   whether <paramref name="index"/> is out of bounds.</block>
+							</para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.GetValue(System.Int32[])"/> method.</para>
+							<code lang="C#">using System;
+public class ArrayGetValueExample {
+   public static void Main() {
+      String[] strAry = { "one", "two", "three", "four", "five" };
+      Console.Write( "The elements of the array are: " );
+      for( int i = 0; i &lt; strAry.Length; i++ )
+         Console.Write( " '{0}' ", strAry.GetValue( i ) );
+   }
+}
+   </code>
+							<para>The output is</para>
+							<para>
+								<c>The elements
+      of the array are: 'one' 'two' 'three' 'four' 'five'</c>
+							</para>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="GetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32 index1, int32 index2)"/>
+					<MemberSignature Language="C#" Value="public object GetValue(int index1, int index2);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Object</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="index1" Type="System.Int32"/>
+						<Parameter Name="index2" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Gets the value at the specified position in the current 
+      two-dimensional instance.</para>
+						</summary>
+						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to get.</param>
+						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to get.</param>
+						<returns>
+							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the current 
+   instance.</para>
+						</returns>
+						<exception cref="T:System.ArgumentException">The current instance does not have exactly two dimensions.</exception>
+						<exception cref="T:System.IndexOutOfRangeException">At least one of <paramref name="index1"/> or <paramref name="index2"/> is outside the range of valid indexes for the corresponding dimension of the current instance.</exception>
+						<remarks>
+							<para>
+								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and 
+<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine
+   whether any of the indices are out of bounds.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="GetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object GetValue(int32 index1, int32 index2, int32 index3)"/>
+					<MemberSignature Language="C#" Value="public object GetValue(int index1, int index2, int index3);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Object</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="index1" Type="System.Int32"/>
+						<Parameter Name="index2" Type="System.Int32"/>
+						<Parameter Name="index3" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Gets the value at the specified position in the 
+      current three-dimensional instance.</para>
+						</summary>
+						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to get. </param>
+						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to get. </param>
+						<param name="index3">A <see cref="T:System.Int32"/> that contains the third-dimension index of the element in the current instance to get. </param>
+						<returns>
+							<para>A <see cref="T:System.Object"/> that contains the value at the specified position in the 
+   current instance.</para>
+						</returns>
+						<exception cref="T:System.ArgumentException">The current instance does not have exactly three dimensions.</exception>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>At least one of<paramref name="index1"/> or <paramref name="index2"/> or <paramref name="index3"/> is outside the range of valid indexes for the corresponding dimension of the current instance.</para>
+						</exception>
+						<remarks>
+							<para>
+								<block subset="none" type="note">Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and 
+<see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine
+   whether any of the indices are out of bounds.</block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="IndexOf">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf(class System.Array array, object value, int32 startIndex, int32 count)"/>
+					<MemberSignature Language="C#" Value="public static int IndexOf(Array array, object value, int startIndex, int count);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="count" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the first
+   occurrence of the specified <see cref="T:System.Object"/> in the specified range.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
+						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
+						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts. </param>
+						<param name="count">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="startIndex"/>.</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> containing the index of the first occurrence of <paramref name="value"/> in
+<paramref name="array"/>, within the range <paramref name="startIndex"/> through <paramref name="startIndex"/> 
++ <paramref name="count"/>- 1, if found; otherwise,
+<paramref name="array"/>.GetLowerBound(0) - 1.
+<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
+found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is less than <paramref name="array"/>
+								<see langword=".GetLowerBound(0)"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="startIndex"/> + <paramref name="count"/> is greater than <paramref name="array"/>
+								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
+								<see langword=".Length"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="IndexOf">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf(class System.Array array, object value, int32 startIndex)"/>
+					<MemberSignature Language="C#" Value="public static int IndexOf(Array array, object value, int startIndex);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the first
+   occurrence of the specified <see cref="T:System.Object"/> between the specified index and the last element.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
+						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
+						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts.</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> containing the index of the first occurrence of <paramref name="value"/> in
+<paramref name="array"/>, within the range <paramref name="startIndex"/> through the last element of 
+<paramref name="array"/>, if found; otherwise, 
+<paramref name="array"/>.GetLowerBound(0) - 1. 
+<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
+   found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>. </para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is less than <paramref name="array"/>
+								<see langword=".GetLowerBound(0)"/> or greater than <paramref name="array"/>
+								<see langword=".GetLowerBound(0)"/> + <paramref name="array"/>
+								<see langword=".Length"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> (<paramref name="array"/>, <paramref name="value"/> ,
+<paramref name="startIndex"/>, (<paramref name="array"/>.Length - <paramref name="startIndex"/>+<paramref name="array"/>.GetLowerBound(0))).</para>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="IndexOf">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf(class System.Array array, object value)"/>
+					<MemberSignature Language="C#" Value="public static int IndexOf(Array array, object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the
+   index of the first occurrence of the specified <see cref="T:System.Object"/>.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
+						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> containing the index of the first occurrence of <paramref name="value"/> in
+<paramref name="array"/>, if found; otherwise, <paramref name="array"/>.GetLowerBound(0) - 1. <block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
+   found, the return value will be -1. This provides the caller with a standard code for a failed search.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="value"/>, <paramref name="array"/>.GetLowerBound(0),<paramref name="array"/>.Length).</para>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
+						</remarks>
+						<example>
+							<para>The following example demonstrates the <see cref="M:System.Array.IndexOf(System.Array,System.Object)"/> 
+method.</para>
+							<code lang="C#">using System;
+public class ArrayIndexOfExample {
+   public static void Main() {
+      int[] intAry = { 0, 1, 2, 0, 1 };
+      Console.Write( "The values of the array are: " );
+      foreach( int i in intAry )
+         Console.Write( "{0,5}", i );
+      Console.WriteLine();
+      int j = Array.IndexOf( intAry, 1 );
+      Console.WriteLine( "The first occurrence of 1 is at index {0}", j );
+   }
+}
+</code>
+							<para> The output is</para>
+							<c>
+								<para>The values of the array are: 0 1 2 0 1</para>
+								<para>The first occurrence of 1 is at index 1</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="IndexOf&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex, int32 count)"/>
+					<MemberSignature Language="C#" Value="public static int IndexOf&lt;T&gt;(T[] array, T value, int startIndex, int count)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="count" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for the specified value and returns the index of the first occurrence within the range of elements in the array starting at the specified index and continuing for, at most, the specified number of elements.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="value">The value to locate.</param>
+						<param name="startIndex">The zero-based starting index of the search.</param>
+						<param name="count">The number of consecutive elements to search.</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of <paramref name="value"/> within the range of elements in 
+<paramref name="array"/> that starts at 
+<paramref name="startIndex"/> and contains the number of elements specified in <paramref name="count"/>
+, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="startIndex"/> + <paramref name="count"/> is greater than <see cref="P:System.Array.Length"/>.</para>
+						</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched forward starting at <paramref name="startIndex"/> and ending at <paramref name="startIndex"/> + <paramref name="count"/> - 1. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="IndexOf&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex)"/>
+					<MemberSignature Language="C#" Value="public static int IndexOf&lt;T&gt;(T[] array, T value, int startIndex)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified array, returning the index of the first occurrence in the specified array starting at the specified index and including the last element.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="value">The value to locate.</param>
+						<param name="startIndex">The zero-based starting index of the search.</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of <paramref name="value"/> within the range of elements in 
+<paramref name="array"/> that extends from  
+<paramref name="startIndex"/> to the last element, if found; otherwise, -1. If <paramref name="startIndex"/> is equal to the length of the array, -1 is returned.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is less than zero or greater than <paramref name="array"/>
+								<see langword=".Length"/>.</para>
+						</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched forward starting at <paramref name="startIndex"/> and ending at the last element. Processing is stopped when the predicate returns <see langword="true"/>. </para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="IndexOf&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 IndexOf&lt;T&gt;(!!0[] array, !!0 value)"/>
+					<MemberSignature Language="C#" Value="public static int IndexOf&lt;T&gt;(T[] array, T value)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified array, returning the index of the first occurrence of the specified value.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="value">The value to locate.</param>
+						<returns>
+							<para>The zero-based index of the first occurrence of <paramref name="value"/> in 
+<paramref name="array"/>, if found; otherwise, - 1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched forward starting at the first element and ending at the last element.  Processing is stopped when the predicate returns <see langword="true"/>. </para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Initialize">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Initialize()"/>
+					<MemberSignature Language="C#" Value="public void Initialize();"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>
+							<para>Initializes every element of the current instance of
+      value-type objects by calling the
+      default constructor of that value type.</para>
+						</summary>
+						<remarks>
+							<para> This method cannot be used on reference-type arrays.</para>
+							<para>If the current instance is not a value-type <see cref="T:System.Array"/> or if the value type does not have a default
+   constructor, the current instance is not modified.</para>
+							<para>The current instance can have any lower bound and any number of dimensions.</para>
+							<para>
+								<block subset="none" type="note">This method can be used only
+   on value types that have constructors. </block>
+							</para>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>RuntimeInfrastructure</ExcludedLibrary>
+				</Member>
+				<Member MemberName="IsFixedSize">
+					<MemberSignature Language="ILAsm" Value=".property public bool IsFixedSize { public hidebysig virtual abstract specialname bool get_IsFixedSize() }"/>
+					<MemberSignature Language="C#" Value="public bool IsFixedSize { get; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Boolean</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.IsFixedSize"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="IsReadOnly">
+					<MemberSignature Language="ILAsm" Value=".property public bool IsReadOnly { public hidebysig virtual abstract specialname bool get_IsReadOnly() }"/>
+					<MemberSignature Language="C#" Value="public bool IsReadOnly { get; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Boolean</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.IsReadOnly"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="IsSynchronized">
+					<MemberSignature Language="ILAsm" Value="property public bool IsSynchronized { public hidebysig virtual abstract specialname bool get_IsSynchronized() }"/>
+					<MemberSignature Language="C#" Value="public bool IsSynchronized { get; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Boolean</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.ICollection"/> interface. [Note: For more information, see <see cref="M:System.Collections.ICollection.IsSynchronized"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="LastIndexOf">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf(class System.Array array, object value, int32 startIndex, int32 count)"/>
+					<MemberSignature Language="C#" Value="public static int LastIndexOf(Array array, object value, int startIndex, int count);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="count" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the last
+   occurrence of the specified <see cref="T:System.Object"/> in the specified range.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
+						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
+						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts. </param>
+						<param name="count">A <see cref="T:System.Int32"/> that contains the number of elements to search, beginning with <paramref name="startIndex"/> . </param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> containing the index of the last occurrence of <paramref name="value"/> in 
+<paramref name="array"/>, within the range <paramref name="startIndex"/> through 
+<paramref name="startIndex"/> - <paramref name="count"/> + 1, if found; otherwise, 
+<paramref name="array"/>.GetLowerBound(0) - 1. 
+<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
+   found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> &lt; 0.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is greater than <paramref name="startIndex"/> + 1.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="LastIndexOf">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf(class System.Array array, object value, int32 startIndex)"/>
+					<MemberSignature Language="C#" Value="public static int LastIndexOf(Array array, object value, int startIndex);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the last
+   occurrence of the specified <see cref="T:System.Object"/> between the specified index and the first element.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
+						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
+						<param name="startIndex">A <see cref="T:System.Int32"/> that contains the index at which searching starts.</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> containing the index of the last occurrence of <paramref name="value"/> in the range
+<paramref name="startIndex"/> through the lower bound of <paramref name="array"/>, if found; otherwise, 
+<paramref name="array"/>.GetLowerBound(0) - 1. <block subset="none" type="note"> For a vector, if <paramref name="value"/> is not found, the return value will
+   be -1. This provides the caller with a standard code for the failed
+   search.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/>( <paramref name="array"/>, <paramref name="value"/>, <paramref name="startIndex"/>,<paramref name="startIndex"/>+ 1 -<paramref name="array"/>.GetLowerBound(0)).</para>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="LastIndexOf">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf(class System.Array array, object value)"/>
+					<MemberSignature Language="C#" Value="public static int LastIndexOf(Array array, object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Searches the specified one-dimensional <see cref="T:System.Array"/>, returning the index of the last
+   occurrence of the specified <see cref="T:System.Object"/>.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to search.</param>
+						<param name="value">A <see cref="T:System.Object"/> to locate in <paramref name="array"/>.</param>
+						<returns>
+							<para>A <see cref="T:System.Int32"/> containing the index of the last occurrence in <paramref name="array"/> of
+<paramref name="value"/>, if found; otherwise, 
+<paramref name="array"/>.GetLowerBound(0) - 1. 
+<block subset="none" type="note"> For a vector, if <paramref name="value"/> is not 
+   found, the return value will be -1. This provides the caller with a standard code for the failed search.</block>
+							</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/> . </exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/> is equivalent to <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/>(<paramref name="array"/>, <paramref name="value"/>, (<paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length - 1), <paramref name="array"/>.Length).</para>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>.</para>
+						</remarks>
+						<example>
+							<para>The following example demonstrates the <see cref="M:System.Array.LastIndexOf(System.Array,System.Object)"/> method.</para>
+							<code lang="C#">using System;
+
+public class ArrayLastIndexOfExample {
+
+   public static void Main() {
+      int[] intAry = { 0, 1, 2, 0, 1 };
+      Console.Write( "The values of the array are: ");
+      foreach( int i in intAry )
+         Console.Write( "{0,5}", i );
+      Console.WriteLine();
+      int j = Array.LastIndexOf( intAry, 1 );
+      Console.WriteLine( "The last occurrence of 1 is at index {0}", j );
+   }
+}
+</code>
+							<para> The output is</para>
+							<c>
+								<para>The values of the array are: 0 1 2 0 1</para>
+								<para>The last occurrence of 1 is at index 4</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="LastIndexOf&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex, int32 count)"/>
+					<MemberSignature Language="C#" Value="public static int LastIndexOf&lt;T&gt;(T[] array, T value, int startIndex, int count)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+						<Parameter Name="count" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches for the specified value and returns the index of the last occurrence within the range of elements in the array starting at the specified index and continuing backwards for, at most,  the specified number of elements.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="value">The value to locate.</param>
+						<param name="startIndex">The zero-based starting index of the search.</param>
+						<param name="count">The number of consecutive elements to search.</param>
+						<returns>
+							<para>The zero-based index of the last occurrence of <paramref name="value"/> within the range of elements in 
+<paramref name="array"/> that ends at 
+<paramref name="startIndex"/> and contains the number of elements specified in <paramref name="count"/>
+, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="count"/> is greater than <paramref name="startIndex"/> + 1.</para>
+						</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched backward starting at <paramref name="startIndex"/> and going for count elements. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="LastIndexOf&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf&lt;T&gt;(!!0[] array, !!0 value, int32 startIndex)"/>
+					<MemberSignature Language="C#" Value="public static int LastIndexOf&lt;T&gt;(T[] array, T value, int startIndex)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+						<Parameter Name="startIndex" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified array backwards, returning the index of the last occurrence of the specified array, starting at the specified index.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="value">The value to locate.</param>
+						<param name="startIndex">The zero-based starting index of the search.</param>
+						<returns>
+							<para>The zero-based index of the last occurrence of <paramref name="value"/> within the range of elements in 
+<paramref name="array"/> that extends from  
+<paramref name="startIndex"/> to the first element, if found; otherwise, -1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="startIndex"/> is outside the range of valid indices for <paramref name="array"/>.</para>
+						</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched backward starting at <paramref name="startIndex"/> and ending at the first element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="LastIndexOf&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static int32 LastIndexOf&lt;T&gt;(!!0[] array, !!0 value)"/>
+					<MemberSignature Language="C#" Value="public static int LastIndexOf&lt;T&gt;(T[] array, T value)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="value" Type="T"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Searches the specified array, returning the index of the last occurrence of the specified value.</para>
+						</summary>
+						<param name="array">The array to search.</param>
+						<param name="value">The value to locate.</param>
+						<returns>
+							<para>The zero-based index of the last occurrence of <paramref name="value"/> in 
+<paramref name="array"/>, if found; otherwise, - 1.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<remarks>
+							<para>The elements are compared using <see cref="M:System.Object.Equals(System.Object)"/>. The array is searched backward starting at the last element and ending at the first element. Processing is stopped when the predicate returns <see langword="true"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Length">
+					<MemberSignature Language="ILAsm" Value=".property int32 Length { public hidebysig specialname instance int32 get_Length() }"/>
+					<MemberSignature Language="C#" Value="public int Length { get; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>
+							<para>Gets the total number of elements in all the dimensions
+      of the current instance.</para>
+						</summary>
+						<value>
+							<para>A <see cref="T:System.Int32"/> that contains the total number of elements in all the dimensions of
+   the current instance.</para>
+						</value>
+						<remarks>
+							<para>This property is read-only.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="LongLength">
+					<MemberSignature Language="ILAsm" Value=".property int64 Length { public hidebysig specialname instance int64 get_LongLength() }"/>
+					<MemberSignature Language="C#" Value="public long LongLength {get;}"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int64</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>
+							<para>Gets the total number of elements in all the dimensions of the current instance.</para>
+						</summary>
+						<value>
+							<para>A <see cref="T:System.Int64"/> value containing the length of the array.</para>
+						</value>
+						<remarks>
+							<para>This property is read-only.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Rank">
+					<MemberSignature Language="ILAsm" Value=".property int32 Rank { public hidebysig specialname instance int32 get_Rank() }"/>
+					<MemberSignature Language="C#" Value="public int Rank { get; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>
+							<para>Gets the rank (number of dimensions) of the current instance.</para>
+						</summary>
+						<value>
+							<para>A <see cref="T:System.Int32"/> that contains the rank (number of dimensions) of the current instance.</para>
+						</value>
+						<remarks>
+							<para>This property is read-only.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Resize&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Resize&lt;T&gt;(!!0[]&amp; array, int32 newSize)"/>
+					<MemberSignature Language="C#" Value="public static void Resize&lt;T&gt;(ref T[] array, int newSize)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="newSize" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Changes the size of an array to the specified new size.</para>
+						</summary>
+						<param name="array">
+							<para>The array to resize.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/> to create a new array with the specified size.</para>
+						</param>
+						<param name="newSize">The size of the new array.</param>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="newSize"/> is less than zero.</para>
+						</exception>
+						<remarks>
+							<para>If array is <see langword="null"/>, this method creates a new array with the specified size.</para>
+							<para>If array is not <see langword="null"/>, then if <paramref name="newSize"/> is equal to <see cref="P:System.Array.Length"/> of the old array, this method does nothing. Otherwise, this method allocates a new array with the specified size, copies elements from the old array to the new one, and then assigns the new array reference to the array parameter. If <paramref name="newSize"/>  is greater than <see cref="P:System.Array.Length"/>  of the old array, a new array is allocated and all the elements are copied from the old array to the new one.  If <paramref name="newSize"/> is less than <see cref="P:System.Array.Length"/>  of the old array, a new array is allocated and elements are copied from the old array to the new one until the new one is filled; the rest of the elements in the old array are ignored.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Reverse">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Reverse(class System.Array array, int32 index, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Reverse(Array array, int index, int length);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Reverses the sequence of the elements in the specified 
+      range of the specified one-dimensional <see cref="T:System.Array"/>.</para>
+						</summary>
+						<param name="array">The one-dimensional <see cref="T:System.Array"/> to reverse.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which reversing starts.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to reverse.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> is multidimensional.</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/> (i.e. <paramref name="index"/> + <paramref name="length"/> &gt; <paramref name="array"/>.GetLowerBound(0) + <paramref name="array"/>.Length).</exception>
+						<example>
+							<para>The following example demonstrates the <see cref="M:System.Array.Reverse(System.Array)"/> method.</para>
+							<code lang="C#">using System;
+public class ArrayReverseExample {
+   public static void Main() {
+      string[] strAry = { "one", "two", "three" };
+      Console.Write( "The elements of the array are:");
+      foreach( string str in strAry )
+         Console.Write( " {0}", str );
+      Array.Reverse( strAry );
+      Console.WriteLine();
+      Console.WriteLine( "After reversing the array," );
+      Console.Write( "the elements of the array are:");
+      foreach( string str in strAry )
+         Console.Write( " {0}", str );
+   }
+}
+</code>
+							<para>The output is</para>
+							<c>
+								<para>The elements of the array are: one two three</para>
+								<para>After reversing the array,</para>
+								<para>the elements of the array are: three two one</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Reverse">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Reverse(class System.Array array)"/>
+					<MemberSignature Language="C#" Value="public static void Reverse(Array array);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Reverses the sequence of the elements in the specified one-dimensional
+   <see cref="T:System.Array"/>.</para>
+						</summary>
+						<param name="array">The one-dimensional <see cref="T:System.Array"/> to reverse.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Reverse(System.Array)"/> is equivalent to <see cref="M:System.Array.Reverse(System.Array)"/>(<paramref name="array"/>, <paramref name="array"/>.GetLowerBound(0),
+<paramref name="array"/>.Length).</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="SetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32 index)"/>
+					<MemberSignature Language="C#" Value="public void SetValue(object value, int index);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="index" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Sets the value of the element at the specified position
+      in the current one-dimensional instance.</para>
+						</summary>
+						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index of the element whose value is to be set.</param>
+						<exception cref="T:System.ArgumentException">
+							<para>The current instance has more than one dimension.</para>
+						</exception>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>
+								<paramref name="index"/> is outside the range of valid indices for the current instance.</para>
+						</exception>
+						<exception cref="T:System.InvalidCastException">
+							<para>
+								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
+						</exception>
+						<remarks>
+							<block subset="none" type="note">
+								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether
+   <paramref name="index"/> is out of bounds.</para>
+								<para> For more
+      information regarding valid conversions that will be performed by this method,
+      see <see cref="T:System.Convert"/>.</para>
+							</block>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="SetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32 index1, int32 index2)"/>
+					<MemberSignature Language="C#" Value="public void SetValue(object value, int index1, int index2);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="index1" Type="System.Int32"/>
+						<Parameter Name="index2" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Sets the value of the element at the specified position
+      in the current two-dimensional instance.</para>
+						</summary>
+						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element.</param>
+						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to set. </param>
+						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to set. </param>
+						<exception cref="T:System.ArgumentException">
+							<para>The current instance does not have exactly two dimensions.</para>
+						</exception>
+						<exception cref="T:System.IndexOutOfRangeException">At least one of <paramref name="index1"/> or <paramref name="index2"/> is outside the range of valid indices for the corresponding dimension of the current instance.</exception>
+						<exception cref="T:System.InvalidCastException">
+							<para>
+								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
+						</exception>
+						<remarks>
+							<block subset="none" type="note">
+								<para>For more information regarding valid conversions that will be performed by
+         this method, see <see cref="T:System.Convert"/>.</para>
+								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any of the indices
+      are out of bounds.</para>
+							</block>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="SetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32 index1, int32 index2, int32 index3)"/>
+					<MemberSignature Language="C#" Value="public void SetValue(object value, int index1, int index2, int index3);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="index1" Type="System.Int32"/>
+						<Parameter Name="index2" Type="System.Int32"/>
+						<Parameter Name="index3" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para> Sets the value of the element at the
+      specified position in the current three-dimensional instance.</para>
+						</summary>
+						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element. </param>
+						<param name="index1">A <see cref="T:System.Int32"/> that contains the first-dimension index of the element in the current instance to set. </param>
+						<param name="index2">A <see cref="T:System.Int32"/> that contains the second-dimension index of the element in the current instance to set. </param>
+						<param name="index3">A <see cref="T:System.Int32"/> that contains the third-dimension index of the element in the current instance to set. </param>
+						<exception cref="T:System.ArgumentException">
+							<para>The current instance does not have exactly three dimensions.</para>
+						</exception>
+						<exception cref="T:System.IndexOutOfRangeException">At least one of <paramref name="index1"/>, <paramref name="index2"/>, or <paramref name="index3"/> is outside the range of valid indices for the corresponding dimension of the current instance.</exception>
+						<exception cref="T:System.InvalidCastException">
+							<para>
+								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
+						</exception>
+						<remarks>
+							<block subset="none" type="note">
+								<para>For more information regarding valid conversions that will be performed by
+         this method, see <see cref="T:System.Convert"/>.</para>
+								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and
+   <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any of the indices
+      are out of bounds.</para>
+							</block>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="SetValue">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void SetValue(object value, int32[] indices)"/>
+					<MemberSignature Language="C#" Value="public void SetValue(object value, int[] indices);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+						<Parameter Name="indices" Type="System.Int32[]"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sets the value of the element at the specified position in
+      the current multidimensional instance.</para>
+						</summary>
+						<param name="value">A <see cref="T:System.Object"/> that contains the new value for the specified element. </param>
+						<param name="indices">A one-dimensional array of <see cref="T:System.Int32"/> objects that contains the indices that specify the position of the element in the current instance to set. </param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="indices"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>The number of dimensions in the current instance is not equal to the number of elements in <paramref name="indices"/>. </para>
+						</exception>
+						<exception cref="T:System.IndexOutOfRangeException">
+							<para>At least one element in <paramref name="indices"/> is outside the range of valid indices for the corresponding dimension of the current instance.</para>
+						</exception>
+						<exception cref="T:System.InvalidCastException">
+							<para>
+								<paramref name="value"/> is not assignment-compatible with the element type of the current instance.</para>
+						</exception>
+						<remarks>
+							<para>The number of elements in <paramref name="indices"/> is required to be equal to the number of
+   dimensions in the current instance. All elements in <paramref name="indices"/> collectively specify the position of the
+   desired element in the current instance.</para>
+							<block subset="none" type="note">
+								<para>For more information regarding valid conversions that will be performed by
+      this method, see <see cref="T:System.Convert"/>.</para>
+								<para>Use the <see cref="M:System.Array.GetLowerBound(System.Int32)"/> and <see cref="M:System.Array.GetUpperBound(System.Int32)"/> methods to determine whether any
+   of the values in <paramref name="indices"/> is out of bounds.</para>
+							</block>
+						</remarks>
+					</Docs>
+					<Excluded>1</Excluded>
+					<ExcludedLibrary>ExtendedArray</ExcludedLibrary>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items, int32 index, int32 length, class System.Collections.IComparer comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items, int index, int length, IComparer comparer);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="System.Array"/>
+						<Parameter Name="items" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the specified range of the specified pair of one-dimensional <see cref="T:System.Array"/> objects (one
+   containing a set of keys and the other containing corresponding items) based on
+   the keys in the first specified <see cref="T:System.Array"/> using the specified <see cref="T:System.Collections.IComparer"/>
+   implementation.</para>
+						</summary>
+						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
+						<param name="items">
+							<para>A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each element of <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</para>
+						</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sorting starts.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<para>
+								<paramref name="keys"/> has more than one dimension.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> &lt; <paramref name="keys"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0). </para>
+							<para>-or- </para>
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="key"/>. </para>
+							<para>-or- </para>
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>. </para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface. </para>
+						</exception>
+						<remarks>
+							<para> Each key in <paramref name="keys"/> is required to have
+   a corresponding item in <paramref name="items"/>. The sort is performed according to the
+   order of <paramref name="keys"/>. After a key is repositioned during the sort,
+   the corresponding item in <paramref name="items"/> is similarly repositioned. Only
+<paramref name="keys"/>.Length elements of <paramref name="items"/> will be sorted. Therefore, 
+<paramref name="items"/> is sorted according to the arrangement of
+   the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
+   completed, the results are undefined.</para>
+							<para>If <paramref name="comparer"/> is a null reference, each element
+of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
+with every other element in <paramref name="keys"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array, int32 index, int32 length, class System.Collections.IComparer comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array array, int index, int length, IComparer comparer);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements in the specified section of the
+      specified one-dimensional <see cref="T:System.Array"/>
+      using the specified <see cref="T:System.Collections.IComparer"/>
+      implementation.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to sort.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sorting starts.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>. </exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension. </exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface. </para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>, <see langword="null"/>, <paramref name="index"/>, <paramref name="length"/>, <paramref name="comparer"/>).</para>
+							<para>If <paramref name="comparer"/> is a null reference, each element
+of <paramref name="array"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
+with every other element in <paramref name="array"/>. If the sort is not successfully
+completed, the results are unspecified.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items, class System.Collections.IComparer comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items, IComparer comparer);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="System.Array"/>
+						<Parameter Name="items" Type="System.Array"/>
+						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the specified pair of one-dimensional
+   <see cref="T:System.Array"/> objects (one
+      containing a set of keys and the other containing corresponding items) based on
+      the keys in the first specified <see cref="T:System.Array"/> using the specified <see cref="T:System.Collections.IComparer"/> implementation.</para>
+						</summary>
+						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
+						<param name="items">
+							<para>A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each element in <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</para>
+						</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<para>
+								<paramref name="keys"/> has more than one dimension.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0). </para>
+							<para>-or-</para>
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.Length &gt; <paramref name="items"/>.Length.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is a <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface. </para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="keys"/>, <paramref name="items"/>, <paramref name="keys"/>.GetLowerBound(0), <paramref name="keys"/>.Length, <paramref name="comparer"/>).</para>
+							<para> Each key in <paramref name="keys"/> is required to have
+a corresponding item in <paramref name="items"/>. The sort is performed according to the order of
+<paramref name="keys"/> . After a key is repositioned during the sort, the 
+corresponding item in <paramref name="items"/> is similarly repositioned. Only
+<paramref name="keys"/>.Length elements of <paramref name="items"/> are sorted. Therefore, 
+<paramref name="items"/>
+is sorted according to the arrangement of the corresponding keys in
+<paramref name="keys"/>. If
+the sort is not successfully completed, the results are unspecified.</para>
+							<para>If <paramref name="comparer"/> is a null reference, each element
+of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
+with every other element in <paramref name="keys"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array, class System.Collections.IComparer comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array array, IComparer comparer);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="comparer" Type="System.Collections.IComparer"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements in the specified one-dimensional <see cref="T:System.Array"/> using the
+   specified <see cref="T:System.Collections.IComparer"/> implementation.</para>
+						</summary>
+						<param name="array">The one-dimensional <see cref="T:System.Array"/> to sort.</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.IComparer"/> implementation to use when comparing elements. Specify a null reference to use the <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>. </exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension. </exception>
+						<exception cref="T:System.InvalidOperationException">
+							<paramref name="comparer"/> is a null reference, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>, <see langword="null"/>, <paramref name="array"/>.GetLowerBound(0), <paramref name="array"/>.Length,
+<paramref name="comparer"/>).</para>
+							<para>If <paramref name="comparer"/> is a null reference, each element
+of <paramref name="array"/> is required to implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons
+with every other element in <paramref name="array"/>. If the sort is not successfully
+completed, the results are unspecified.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items, int32 index, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items, int index, int length);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="System.Array"/>
+						<Parameter Name="items" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the specified ranges of the specified pair of
+      one-dimensional <see cref="T:System.Array"/>
+      objects (one containing a set of keys and the other containing corresponding
+      items) based on the keys in the first specified <see cref="T:System.Array"/>.</para>
+						</summary>
+						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
+						<param name="items">A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each element in <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sort begins.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<para>
+								<paramref name="keys"/> has more than one dimension.</para>
+							<para> -or-</para>
+							<para>
+								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> &lt; <paramref name="keys"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0). </para>
+							<para>-or- </para>
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="keys"/>. </para>
+							<para>-or- </para>
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>. </para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>One or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="keys"/>, <paramref name="items"/>, <paramref name="index"/>, <paramref name="length"/>, <see langword="null"/>).</para>
+							<para> Each key in <paramref name="keys"/> is
+required to have
+a corresponding item in <paramref name="items"/>. The sort is performed according to the
+order of <paramref name="keys"/> . After a key is repositioned during the sort,
+the corresponding item in <paramref name="items"/> is similarly
+repositioned. Therefore, <paramref name="items"/> is sorted according to the arrangement of
+the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
+completed, the results are undefined.</para>
+							<para>Each element of <paramref name="keys"/> is
+required to implement the <see cref="T:System.IComparable"/> interface to
+be capable of comparisons with every other element in <paramref name="keys"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array array);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements of the specified one-dimensional <see cref="T:System.Array"/>.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to sort.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>.</exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension.</exception>
+						<exception cref="T:System.InvalidOperationException">One or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>, <see langword="null"/>, <paramref name="array"/>.GetLowerBound(0),
+<paramref name="array"/>.Length, <see langword="null"/>).</para>
+							<para>Each element of <paramref name="array"/> is
+required to implement
+the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other
+element in array.</para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.Sort(System.Array)"/> method.</para>
+							<code lang="C#">using System;
+public class ArraySortExample {
+   public static void Main() {
+      string[] strAry = { "All's", "well", "that", "ends", "well" };
+      Console.Write( "The original string array is: " );
+      foreach ( String str in strAry )
+         Console.Write( str + " " );
+      Console.WriteLine();
+      Array.Sort( strAry );
+      Console.Write( "The sorted string array is: " );
+      foreach ( string str in strAry )
+         Console.Write( str + " " );
+   }
+}
+</code>
+							<para>The output is</para>
+							<c>
+								<para>The original string array is: All's well that ends well</para>
+								<para>The sorted string array is: All's ends that well well</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array keys, class System.Array items)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array keys, Array items);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="System.Array"/>
+						<Parameter Name="items" Type="System.Array"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the specified pair of one-dimensional <see cref="T:System.Array"/> objects (one
+   containing a set of keys and the other containing corresponding items) based on
+   the keys in the first specified <see cref="T:System.Array"/>.</para>
+						</summary>
+						<param name="keys">A one-dimensional <see cref="T:System.Array"/> that contains the keys to sort.</param>
+						<param name="items">
+							<para>A one-dimensional <see cref="T:System.Array"/> that contains the items that correspond to each of element of <paramref name="keys"/>. Specify a null reference to sort only <paramref name="keys"/>.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>. </para>
+						</exception>
+						<exception cref="T:System.RankException">
+							<para>
+								<paramref name="keys"/> has more than one dimension.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="items"/> is not a null reference and has more than one dimension.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.GetLowerBound(0) does not equal <paramref name="items"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="items"/> is not a null reference, and <paramref name="keys"/>.Length &gt; <paramref name="items"/>.Length.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>One or more elements in <paramref name="keys"/> that are used in a comparison  do not implement the <see cref="T:System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para> This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="keys"/>, <paramref name="items"/>, <paramref name="keys"/>.GetLowerBound(0), <paramref name="keys"/>.Length, <see langword="null"/>).</para>
+							<para> Each key in <paramref name="keys"/> is required to have
+a corresponding item in <paramref name="items"/>. The sort is performed according to the
+order of <paramref name="keys"/> . After a key is repositioned during the sort,
+the corresponding item in <paramref name="items"/> is similarly repositioned. Only
+<paramref name="keys"/>.Length elements of 
+<paramref name="items"/> are sorted. Therefore, 
+<paramref name="items"/>
+is sorted according to the arrangement of the corresponding keys in
+<paramref name="keys"/>. If
+the sort is not successfully completed, the results are unspecified.</para>
+							<para>Each element of <paramref name="keys"/> is
+required to implement
+the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other
+element in <paramref name="keys"/>.</para>
+						</remarks>
+						<example>
+							<para>This example demonstrates the <see cref="M:System.Array.Sort(System.Array)"/> method.</para>
+							<code lang="C#">using System;
+public class ArraySortExample {
+   public static void Main() {
+      string[] strAry = { "All's", "well", "that", "ends", "well" };
+      int[] intAry = { 3, 4, 0, 1, 2 };
+      Console.Write( "The original string array is: " );
+      foreach ( string str in strAry )
+         Console.Write( str + " " );
+      Console.WriteLine();
+      Console.Write( "The key array is: " );
+      foreach ( int i in intAry )
+         Console.Write( i + " " );
+      Console.WriteLine();
+      Array.Sort( intAry, strAry );
+      Console.Write( "The sorted string array is: " );
+      foreach ( string str in strAry )
+         Console.Write( str + " " );
+   }
+}
+</code>
+							<para>The output is</para>
+							<c>
+								<para>The original string array is: All's well that ends well</para>
+								<para>The key array is: 3 4 0 1 2</para>
+								<para>The sorted string array is: that ends well All's well</para>
+							</c>
+						</example>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort(class System.Array array, int32 index, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Sort(Array array, int index, int length);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="System.Array"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements in the specified range of the
+      specified one-dimensional <see cref="T:System.Array"/>.</para>
+						</summary>
+						<param name="array">A one-dimensional <see cref="T:System.Array"/> to sort.</param>
+						<param name="index">A <see cref="T:System.Int32"/> that contains the index at which sorting starts.</param>
+						<param name="length">A <see cref="T:System.Int32"/> that contains the number of elements to sort.</param>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/> is <see langword="null"/>. </exception>
+						<exception cref="T:System.RankException">
+							<paramref name="array"/> has more than one dimension. </exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> &lt; <paramref name="array"/>.GetLowerBound(0).</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> &lt; 0.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>One or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Sort(System.Array)"/> is equivalent to <see cref="M:System.Array.Sort(System.Array)"/>(<paramref name="array"/>,
+<see langword="null"/> , <paramref name="index"/>, <paramref name="length"/>, 
+<see langword="null"/>).</para>
+							<para>Each element of <paramref name="array"/> is
+required to implement
+the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other
+element in <paramref name="array"/>. If the sort is not successfully completed, the
+results are unspecified.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;K,V&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items, int32 index, int32 length, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items, int index, int length, IComparer&lt;K&gt; comparer)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="K[]"/>
+						<Parameter Name="items" Type="V[]"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;K&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts a range of elements in a pair of arrays based on the keys in the first array using the specified <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/>.</para>
+						</summary>
+						<param name="keys">
+							<para>The array that contains the keys to sort.</para>
+						</param>
+						<param name="items">
+							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
+						</param>
+						<param name="index">The starting index of the range to sort.</param>
+						<param name="length">The number of elements in the range to sort.</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/> implementation to use when comparing elements.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="keys"/>. </para>
+							<para>-or- </para>
+							<para>
+								<paramref name="items"/> is not <see langword="null"/>, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> is less than zero.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
+   a corresponding item in <paramref name="items"/>. The sort is performed according to the
+   order of <paramref name="keys"/>. After a key is repositioned during the sort,
+   the corresponding item in <paramref name="items"/> is similarly repositioned. Only
+<paramref name="keys"/>.Length elements of <paramref name="items"/> will be sorted. Therefore, 
+<paramref name="items"/> is sorted according to the arrangement of
+   the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
+   completed, the results are undefined.</para>
+							<para>If <paramref name="comparer"/> is a null reference, each element of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons
+with every other element in <paramref name="keys"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;K,V&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items, IComparer&lt;K&gt; comparer)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="K[]"/>
+						<Parameter Name="items" Type="V[]"/>
+						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;K&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts a pair of arrays based on the keys in the first array, using the specified <see cref="T:System.Collections.Generic.IComparer"/>.</para>
+						</summary>
+						<param name="keys">
+							<para>The array that contains the keys to sort.</para>
+						</param>
+						<param name="items">
+							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
+						</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/> implementation to use when comparing elements.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="items"/> is not <see langword="null"/>, and  the length of <paramref name="keys"/> does not match the length of <paramref name="items"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="keys"/> that are used in a comparison  do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>This version of <see cref="M:System.Array.Sort"/>  is equivalent to <see cref="M:System.Array.Sort&lt;K,V&gt;"/>
+								<see langword="("/>
+								<paramref name="keys"/>
+								<see langword=", "/>
+								<paramref name="items"/>
+								<see langword=", "/>
+								<see langword="0, "/>
+								<paramref name="keys"/>
+								<see langword=".Length"/>
+								<see langword=", "/>
+								<paramref name="comparer"/>
+								<see langword=")"/>.</para>
+							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
+   a corresponding item in <paramref name="items"/>. The sort is performed according to the
+   order of <paramref name="keys"/>. After a key is repositioned during the sort,
+   the corresponding item in <paramref name="items"/> is similarly repositioned. Only
+<paramref name="keys"/>.Length elements of <paramref name="items"/> will be sorted. Therefore, 
+<paramref name="items"/> is sorted according to the arrangement of
+   the corresponding keys in <paramref name="keys"/>. If the sort is not successfully
+   completed, the results are unspecified.</para>
+							<para>If <paramref name="comparer"/> is a null reference, each element of <paramref name="keys"/> is required to implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons
+with every other element in <paramref name="keys"/>.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;K,V&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items, int32 index, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items, int index, int length)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="K[]"/>
+						<Parameter Name="items" Type="V[]"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts a range of elements in a pair of arrays based on the keys in the first array, using the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/>  implementation of each key.</para>
+						</summary>
+						<param name="keys">
+							<para>The array that contains the keys to sort.</para>
+						</param>
+						<param name="items">
+							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
+						</param>
+						<param name="index">The starting index of the range to sort.</param>
+						<param name="length">The number of elements in the range to sort.</param>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="keys"/>. </para>
+							<para>-or- </para>
+							<para>
+								<paramref name="items"/> is not <see langword="null"/>, and <paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="items"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> is less than zero.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>One or more elements in <paramref name="keys"/> that are used in a comparison are the null reference or do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
+   a corresponding item in <paramref name="items"/>. When a key is repositioned during the sorting,
+   the corresponding item in <paramref name="items"/> is similarly repositioned. Therefore, <paramref name="items"/> is sorted according to the arrangement of
+   the corresponding keys in <paramref name="keys"/>. </para>
+							<para>If the sort is not successfully completed, the results are unspecified.</para>
+							<para>Each key within the specified range of elements in <paramref name="keys"/> must implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other key.</para>
+							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;K,V&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;K,V&gt;(!!0[] keys, !!1[] items)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;K,V&gt;(K[] keys, V[] items)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="keys" Type="K[]"/>
+						<Parameter Name="items" Type="V[]"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts a pair of arrays based on the keys in the first array using the <see cref="T:System.IComparable"/>  implementation of each key.</para>
+						</summary>
+						<param name="keys">
+							<para>The array that contains the keys to sort.</para>
+						</param>
+						<param name="items">
+							<para>The array that contains the items that correspond to each of the keys in <paramref name="keys"/>.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/> to sort only the <paramref name="keys"/> array.</para>
+						</param>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="items"/> is not <see langword="null"/>, and  the length of <paramref name="keys"/> does not equal the length of <paramref name="items"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="keys"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>One or more elements in <paramref name="keys"/> that are used in a comparison  are the null reference or do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>If <paramref name="items"/> is non-null, each key in <paramref name="keys"/> is required to have
+   a corresponding item in <paramref name="items"/>. When a key is repositioned during the sorting,
+   the corresponding item in <paramref name="items"/> is similarly repositioned. Therefore, <paramref name="items"/> is sorted according to the arrangement of
+   the corresponding keys in <paramref name="keys"/>. </para>
+							<para>Each key in <paramref name="keys"/> must implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other key.</para>
+							<para>If the sort is not successfully completed, the results are undefined.</para>
+							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, int32 index, int32 length, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, int index, int length, IComparer&lt;T&gt; comparer)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements in a range of elements in an array using the specified comparer.</para>
+						</summary>
+						<param name="array">
+							<para>The array to sort.</para>
+						</param>
+						<param name="index">The starting index of the range to sort.</param>
+						<param name="length">The number of elements in the range to sort.</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;K&gt;"/> implementation to use when comparing elements.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> is less than zero.</para>
+						</exception>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>. </para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;K&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>If <paramref name="comparer"/> is null, each element within the specified range of elements in <paramref name="array"/> must implement the <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
+							<para>If the sort is not successfully completed, the results are undefined.</para>
+							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, class System.Collections.Generic.IComparer`1&lt;!!0&gt; comparer)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, IComparer&lt;T&gt; comparer)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="comparer" Type="System.Collections.Generic.IComparer&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements in an array using the specified comparer.</para>
+						</summary>
+						<param name="array">
+							<para>The array to sort.</para>
+						</param>
+						<param name="comparer">
+							<para>The <see cref="T:System.Collections.Generic.IComparer&lt;T&gt;"/> implementation to use when comparing elements.</para>
+							<para>-or-</para>
+							<para>
+								<see langword="null"/>  to use the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>
+								<paramref name="comparer"/> is <see langword="null"/>, and one or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>If <paramref name="comparer"/> is null, each element of <paramref name="array"/> must implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
+							<para>If the sort is not successfully completed, the results are undefined.</para>
+							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, class System.Comparison`1&lt;!!0&gt; comparison)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, Comparison&lt;T&gt; comparison)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="comparison" Type="System.Comparison&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements in an array using the specified comparison.</para>
+						</summary>
+						<param name="array">
+							<para>The array to sort.</para>
+						</param>
+						<param name="comparison">
+							<para>The <see cref="T:System.Comparison&lt;T&gt;"/> to use when comparing elements.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="comparison"/> is <see langword="null"/>.</para>
+						</exception>
+						<remarks>
+							<para>If the sort is not successfully completed, the results are undefined.</para>
+							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts the elements in an entire array using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element of that array.</para>
+						</summary>
+						<param name="array">
+							<para>The array to sort.</para>
+						</param>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>One or more elements in <paramref name="array"/> that are used in a comparison are the null reference or do not implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>Each element of <paramref name="array"/> is required to implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
+							<para>If the sort is not successfully completed, the results are undefined.</para>
+							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="Sort&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static void Sort&lt;T&gt;(!!0[] array, int32 index, int32 length)"/>
+					<MemberSignature Language="C#" Value="public static void Sort&lt;T&gt;(T[] array, int index, int length)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="length" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Sorts an array using the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> implementation of each element of that array.</para>
+						</summary>
+						<param name="array">
+							<para>The array to sort.</para>
+						</param>
+						<param name="index">The starting index of the range to sort.</param>
+						<param name="length">The number of elements in the range to sort.</param>
+						<exception cref="T:System.ArgumentException">
+							<para>
+								<paramref name="index"/> and <paramref name="length"/> do not specify a valid range in <paramref name="array"/>. </para>
+						</exception>
+						<exception cref="T:System.ArgumentNullException">
+							<para>
+								<paramref name="array"/> is <see langword="null"/>.</para>
+						</exception>
+						<exception cref="T:System.ArgumentOutOfRangeException">
+							<para>
+								<paramref name="index"/> is less than zero.</para>
+							<para>-or-</para>
+							<para>
+								<paramref name="length"/> is less than zero.</para>
+						</exception>
+						<exception cref="T:System.InvalidOperationException">
+							<para>One or more elements in <paramref name="array"/> that are used in a comparison do not implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T: System.IComparable"/> interface.</para>
+						</exception>
+						<remarks>
+							<para>Each element within the specified range of elements in <paramref name="array"/> must implement the <see cref="T:System.IComparable&lt;T&gt;"/> or <see cref="T:System.IComparable"/> interface to be capable of comparisons with every other element in <paramref name="array"/>.</para>
+							<para>If the sort is not successfully completed, the results are undefined.</para>
+							<para>This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="SyncRoot">
+					<MemberSignature Language="ILAsm" Value=".property public object SyncRoot { public hidebysig virtual abstract specialname object get_SyncRoot() }"/>
+					<MemberSignature Language="C#" Value="public object SyncRoot { get; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Object</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.ICollection"/> interface. [Note: For more information, see <see cref="M:System.Collections.ICollection.SyncRoot"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.ICollection.Count">
+					<MemberSignature Language="ILAsm" Value=".property int32 ICollection.Count { public hidebysig virtual abstract specialname int32 get_ICollection.Count() }"/>
+					<MemberSignature Language="C#" Value="int ICollection.Count { get; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.ICollection"/> interface. [Note: For more information, see <see cref="M:System.Collections.ICollection.Count"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.Add">
+					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual int32 System.Collections.IList.Add(object value)"/>
+					<MemberSignature Language="C#" Value="int IList.Add(object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Add"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.Clear">
+					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.Clear()"/>
+					<MemberSignature Language="C#" Value="void IList.Clear();"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters/>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Clear"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.Contains">
+					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual bool System.Collections.IList.Contains(object value)"/>
+					<MemberSignature Language="C#" Value="bool IList.Contains(object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Boolean</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Contains"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.IndexOf">
+					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual int32 System.Collections.IList.IndexOf(object value)"/>
+					<MemberSignature Language="C#" Value="int IList.IndexOf(object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Int32</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.IndexOf"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.Insert">
+					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.Insert(int32 index, object value)"/>
+					<MemberSignature Language="C#" Value="void IList.Insert(int index, object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="index" Type="System.Int32"/>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Insert"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.Item">
+					<MemberSignature Language="ILAsm" Value=".property object IList.Item[int32 index] { public hidebysig virtual abstract specialname object get_IList.Item(int32 index) public hidebysig virtual abstract specialname void set_IList.Item(int32 index, object value) }"/>
+					<MemberSignature Language="C#" Value="public virtual object this[int index] { get; set; }"/>
+					<MemberType>Property</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Object</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="index" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Item"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.Remove">
+					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.Remove(object value)"/>
+					<MemberSignature Language="C#" Value="void IList.Remove(object value);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="value" Type="System.Object"/>
+					</Parameters>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.Remove"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="System.Collections.IList.RemoveAt">
+					<MemberSignature Language="ILAsm" Value=".method private final hidebysig virtual void System.Collections.IList.RemoveAt(int32 index)"/>
+					<MemberSignature Language="C#" Value="void IList.RemoveAt(int index);"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Void</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="index" Type="System.Int32"/>
+					</Parameters>
+					<Docs>
+						<summary>Implemented to support the <see cref="T:System.Collections.IList"/> interface. [Note: For more information, see <see cref="M:System.Collections.IList.RemoveAt"/>.]</summary>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+				<Member MemberName="TrueForAll&lt;T&gt;">
+					<MemberSignature Language="ILAsm" Value=".method public hidebysig static bool TrueForAll&lt;T&gt;(!!0[] array, class System.Predicate`1&lt;!!0&gt; match)"/>
+					<MemberSignature Language="C#" Value="public static bool TrueForAll&lt;T&gt;(T[] array, Predicate&lt;T&gt; match)"/>
+					<MemberType>Method</MemberType>
+					<ReturnValue>
+						<ReturnType>System.Boolean</ReturnType>
+					</ReturnValue>
+					<Parameters>
+						<Parameter Name="array" Type="T[]"/>
+						<Parameter Name="match" Type="System.Predicate&lt;T&gt;"/>
+					</Parameters>
+					<Docs>
+						<summary>
+							<para>Determines whether every element in the array matches the predicate.</para>
+						</summary>
+						<param name="array">The array to check against the conditions.</param>
+						<param name="match">
+							<para>The predicate against which the elements are checked..</para>
+						</param>
+						<returns>
+							<para>
+								<see langword="true"/>, if every element in <paramref name="array"/> matches the specified predicate; otherwise, <see langword="false"/>.</para>
+						</returns>
+						<exception cref="T:System.ArgumentNullException">
+							<paramref name="array"/>  or <paramref name="match"/> is <see langword="null"/>.</exception>
+						<remarks>
+							<para>The predicate returns <see langword="true"/> if the object passed to it matches the delegate.  The elements of <paramref name="array"/> are individually passed to the predicate, and processing is stopped when the delegate returns <see langword="false"/> for any element.</para>
+						</remarks>
+					</Docs>
+					<Excluded>0</Excluded>
+				</Member>
+			</Members>
+			<TypeExcluded>0</TypeExcluded>
+		</Type>
+	</Types>
+</Libraries>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/mono-win32-setup.nsi
+++ mono-4.6.2.7+dfsg/mcs/tools/mono-win32-setup.nsi
@@ -1,708 +1,708 @@
-; =====================================================
-; mono.nsi - Mono Setup wizard for windows
-; =====================================================
-;
-; (C) Copyright 2003 by Johannes Roith
-; (C) Copyright 2003 by Daniel Morgan
-;
-; Authors: 
-;       Johannes Roith <johannes@jroith.de>
-;       Daniel Morgan <danmorg@sc.rr.com>
-;
-; This .nsi includes code from the NSIS Archives:
-; function StrReplace and VersionCheck 
-; by Hendri Adriaens
-; HendriAdriaens@hotmail.com
-; 
-; =====================================================
-;
-; This script can build a binary setup wizard of mono.
-; It is released under the GNU GPL.
-;
-; =====================================================
-; SET MILESTONE & SOURCE DIR
-; =====================================================
-;
-;
-  !define MILESTONE "0.24" ;
-  !define SOURCE_INSTALL_DIR "c:\mono-0.23-setup\install\\*" ;
-
-; =====================================================
-; SET LOGO
-; =====================================================
-;
-;  Beautification:
-;
-;  This adds a Mono-specific Image on the left
-;  You can choose between the light or dark one.
-;  
-;  If you wish no mono-specifi logo, please outcomment
-;  the lines.
-;  
-;  "light" is enabled.
-;
-;  !define MUI_SPECIALBITMAP "mono-win32-setup-dark.bmp"
-   !define MUI_SPECIALBITMAP "mono-win32-setup-light.bmp"
-
-; =====================================================
-; BUILDING
-; =====================================================
-;
-; 1. Build mono. The install directory must not contain
-;    anything else - everything gets packed in!!!
-;
-; 2. In your install directory, delete the *.a files.
-;     Most people won't need them and it saves ~ 4 MB.
-;
-; 3. Get latest nsis from cvs or a development snapshot
-;    from http://nsis.sf.net
-;
-; 4. Adapt the MILESTONE
-;
-; 5. Adapt the SOURCE_INSTALL_DIR above to match your 
-;     install directory. Do not remove \\* at the end!!
-;
-; 6. Open this script in makensisw.exe
-;
-; 7. The output file is mono-[MILESTONE]-win32-1.exe
-;
-;
-;
-;
-;
-; =====================================================
-; MONO & REGISTRY / DETECTING MONO
-; =====================================================
-;
-;
-; This setup creates several Registry Keys:
-;
-; HKEY_LOCAL_MACHINE SOFTWARE\Mono DefaultCLR
-; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} SdkInstallRoot
-; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} FrameworkAssemblyDirectory
-; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} MonoConfigDir
-;
-; =====================================================
-;
-; To get the current Mono Install Directory:
-;
-; 1. Get DefaultCLR
-; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE SdkInstallRoot
-;
-; =====================================================
-;
-; To get the current Mono assembly Directory:
-;
-; 1. Get DefaultCLR
-; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE FrameworkAssemblyDirectory
-; 
-; =====================================================
-; Do not edit below
-; =====================================================
-;
-;
-; =====================================================
-; GENERAL SETTING - NEED NOT TO BE CHANGED
-; =====================================================
-
- !define NAME "Mono" ;
- !define TARGET_INSTALL_DIR "$PROGRAMFILES\Mono-${MILESTONE}" ;
- !define OUTFILE "mono-${MILESTONE}-win32-1.exe" ;
-
-; =====================================================
-; SCRIPT
-; =====================================================
-
- !define MUI_PRODUCT "${NAME}"
- !define MUI_VERSION "${MILESTONE}"
- !define FULLNAME "${MUI_PRODUCT} ${MUI_VERSION}"
- !define MUI_UI "${NSISDIR}\Contrib\UIs\modern2.exe"
- !define MUI_ICON "${NSISDIR}\Contrib\Icons\setup.ico"
- !define MUI_UNICON "${NSISDIR}\Contrib\Icons\normal-uninstall.ico"
- !define MUI_WELCOMEPAGE
- !define MUI_DIRECTORYPAGE
- !define MUI_DIRECTORYSELECTIONPAGE
- !include "${NSISDIR}\Contrib\Modern UI\System.nsh"
- !insertmacro MUI_SYSTEM
- !insertmacro MUI_LANGUAGE "ENGLISH"
-
-
- OutFile "${OUTFILE}"
- InstallDir "${TARGET_INSTALL_DIR}"
-
-
-;========================
-; Uninstaller
-;========================
-
-Section "Uninstall"
-
-  MessageBox MB_YESNO "Are you sure you want to uninstall Mono from your system?" IDNO NoUnInstall
-
-  Delete $INSTDIR\Uninst.exe ; delete Uninstaller
-  DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} ; Remove Entry in Software List
-
-  MessageBox MB_YESNO "Mono was installed into $INSTDIR. Should this directory be removed completly?" IDNO GoNext1
-  RMDir /r $INSTDIR
-  GoNext1:
-
-  DeleteRegKey HKLM SOFTWARE\Mono\${MILESTONE}
-
-  ; If the Default-Key is the current Milestone, we just remove the wrappers
-
-  ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR
-  StrCmp $0 ${MILESTONE} DeleteWrappers
-
-  MessageBox MB_YESNO "Mono ${MILESTONE} has been removed, but the default installation of Mono differs form this version. Should the wrappers and the Mono registry key be still be removed? This could disable other Mono installations." IDNO GoNext2
-
-  DeleteWrappers:
-
-  ; Complete Uninstall
-
-  DeleteRegKey HKLM SOFTWARE\Mono
-  Delete $WINDIR\monobasepath.bat
-  Delete $WINDIR\mcs.bat
-  Delete $WINDIR\mbas.bat
-  Delete $WINDIR\mint.bat
-  Delete $WINDIR\mono.bat
-  Delete $WINDIR\monodis.bat
-  Delete $WINDIR\monoilasm.bat
-  Delete $WINDIR\sqlsharp.bat
-  Delete $WINDIR\secutil.bat
-  Delete $WINDIR\cert2spc.bat
-  Delete $WINDIR\monoresgen.bat
-  Delete $WINDIR\monosn.bat
-  Delete $WINDIR\cilc.bat
-
-  GoNext2:
-  NoUnInstall:
-
-SectionEnd
-
-
- Section
-
- ; Warn people if a newer Mono is already installed
-
- ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR
- Push $0
- Push ${MILESTONE} 
- Call VersionCheck
- Pop $0
- StrCmp $0 0 NoAskInstall
- StrCmp $0 2 NoAskInstall
- MessageBox MB_YESNO "A newer Mono version is already installed. Still continue?" IDNO NoInstall
-
- NoAskInstall:
-
- SetOutPath $INSTDIR
- File /r "${SOURCE_INSTALL_DIR}"
- WriteUninstaller Uninst.exe
-
- WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} SdkInstallRoot $INSTDIR
- WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} FrameworkAssemblyDirectory $INSTDIR\lib
- WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} MonoConfigDir $INSTDIR\etc\mono
- ;WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} GtkSharpLibPath $INSTDIR\lib
- WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono DefaultCLR ${MILESTONE}
-
- ; Mono Uninstall Entry in Windows Software List in the Control panel
- WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} DisplayName "Mono ${MILESTONE}"
- WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} UninstallString $INSTDIR\uninst.exe
-
- ;original string is like C:\mono-0.20\install
- StrCpy $5 $INSTDIR 
- Push $5
- Push "\" ;search for this string
- Push "/" ;replace with this string
- Call StrReplace
- ;resulting string which is like C:/mono-0.20/install
- Pop $6
-
-;========================
-; Write the wrapper files
-;========================
-
-; create bin/mono wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\mono.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe "$$@"'
-FileClose $0
-
-; create bin/mint wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\mint.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mint.exe "$$@"'
-FileClose $0
-
-; create bin/mcs wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\mcs.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/mcs.exe "$$@"'
-FileClose $0
-
-; create bin/mbas wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\mbas.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/mbas.exe "$$@"'
-FileClose $0
-
-; create bin/sqlsharp wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\sqlsharp.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/sqlsharp.exe "$$@"'
-FileClose $0
-
-; create bin/monodis wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\monodis.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monodis.exe "$$@"'
-FileClose $0
-
-; create bin/monoresgen wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\monoresgen.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monoresgen.exe "$$@"'
-FileClose $0
-
-; create bin/monoilasm wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\monoilasm.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monoilasm.exe "$$@"'
-FileClose $0
-
-; create bin/monosn wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\monosn.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/monosn.exe "$$@"'
-FileClose $0
-
-; create bin/secutil wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\secutil.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/secutil.exe "$$@"'
-FileClose $0
-
-; create bin/cert2spc wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\cert2spc.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/cert2spc.exe "$$@"'
-FileClose $0
-
-; create bin/cilc wrapper to be used if the user has cygwin
-FileOpen $0 "$INSTDIR\bin\cilc.exe.sh" "w"
-FileWrite $0 "#!/bin/sh$\r$\n"
-FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
-FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
-FileWrite $0 '$6/bin/mono.exe $6/bin/cilc.exe "$$@"'
-FileClose $0
-
-;
-; These wrappers are copied to the windows directory.
-;
-
-;========================
-; Write the path file
-;========================
-
-FileOpen $0 "$WINDIR\monobasepath.bat" "w"
-FileWrite $0 'set MONO_BASEPATH="$INSTDIR"$\r$\n'
-FileWrite $0 'set MONO_PATH=$INSTDIR\lib$\r$\n'
-FileWrite $0 'set MONO_CFG_DIR="$INSTDIR\etc\mono"'
-FileClose $0
-
-
-;========================
-; Write the mcs file
-;========================
-
-FileOpen $0 "$WINDIR\mcs.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mcs.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write the mbas file
-;========================
-
-FileOpen $0 "$WINDIR\mbas.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mbas.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write the mint file
-;========================
-
-FileOpen $0 "$WINDIR\mint.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mint.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write the mono file
-;========================
-
-FileOpen $0 "$WINDIR\mono.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-FileClose $0
-
-;========================
-; Write monodis
-;========================
-
-FileOpen $0 "$WINDIR\monodis.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\monodis.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write monoilasm
-;========================
-
-FileOpen $0 "$WINDIR\monoilasm.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoilasm.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-
-;========================
-; Write the sqlsharp file
-;========================
-
-FileOpen $0 "$WINDIR\sqlsharp.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\sqlsharp.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write the secutil file
-;========================
-
-FileOpen $0 "$WINDIR\secutil.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\secutil.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write the cert2spc file
-;========================
-
-FileOpen $0 "$WINDIR\cert2spc.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cert2spec.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-
-;========================
-; Write the monoresgen file
-;========================
-
-FileOpen $0 "$WINDIR\monoresgen.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoresgen.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write the monosn file
-;========================
-
-FileOpen $0 "$WINDIR\monosn.bat" "w"
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\monosn.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-;========================
-; Write the cilc file
-;========================
-
-FileOpen $0 "$WINDIR\cilc.bat" "w"
-
-
-FileWrite $0 "@echo off$\r$\n"
-FileWrite $0 "call monobasepath.bat$\r$\n"
-FileWrite $0 "set MONOARGS=$\r$\n"
-FileWrite $0 ":loop$\r$\n"
-FileWrite $0 "if x%1 == x goto :done$\r$\n"
-FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
-FileWrite $0 "shift$\r$\n"
-FileWrite $0 "goto loop$\r$\n"
-FileWrite $0 ":done$\r$\n"
-FileWrite $0 "setlocal$\r$\n"
-FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
-FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cilc.exe" %MONOARGS%$\r$\n'
-FileWrite $0 "endlocal$\r$\n"
-
-FileClose $0
-
-NoInstall:
-SectionEnd
-
-; function StrReplace
-; by Hendri Adriaens
-; HendriAdriaens@hotmail.com
-; found in the NSIS Archives
-function StrReplace
-  Exch $0 ;this will replace wrong characters
-  Exch
-  Exch $1 ;needs to be replaced
-  Exch
-  Exch 2
-  Exch $2 ;the orginal string
-  Push $3 ;counter
-  Push $4 ;temp character
-  Push $5 ;temp string
-  Push $6 ;length of string that need to be replaced
-  Push $7 ;length of string that will replace
-  Push $R0 ;tempstring
-  Push $R1 ;tempstring
-  Push $R2 ;tempstring
-  StrCpy $3 "-1"
-  StrCpy $5 ""
-  StrLen $6 $1
-  StrLen $7 $0
-  Loop:
-  IntOp $3 $3 + 1
-  StrCpy $4 $2 $6 $3
-  StrCmp $4 "" ExitLoop
-  StrCmp $4 $1 Replace
-  Goto Loop
-  Replace:
-  StrCpy $R0 $2 $3
-  IntOp $R2 $3 + $6
-  StrCpy $R1 $2 "" $R2
-  StrCpy $2 $R0$0$R1
-  IntOp $3 $3 + $7
-  Goto Loop
-  ExitLoop:
-  StrCpy $0 $2
-  Pop $R2
-  Pop $R1
-  Pop $R0
-  Pop $7
-  Pop $6
-  Pop $5
-  Pop $4
-  Pop $3
-  Pop $2
-  Pop $1
-  Exch $0
-FunctionEnd
-
-Function VersionCheck
-  Exch $0 ;second versionnumber
-  Exch
-  Exch $1 ;first versionnumber
-  Push $R0 ;counter for $0
-  Push $R1 ;counter for $1
-  Push $3 ;temp char
-  Push $4 ;temp string for $0
-  Push $5 ;temp string for $1
-  StrCpy $R0 "-1"
-  StrCpy $R1 "-1"
-  Start:
-  StrCpy $4 ""
-  DotLoop0:
-  IntOp $R0 $R0 + 1
-  StrCpy $3 $0 1 $R0
-  StrCmp $3 "" DotFound0
-  StrCmp $3 "." DotFound0
-  StrCpy $4 $4$3
-  Goto DotLoop0
-  DotFound0:
-  StrCpy $5 ""
-  DotLoop1:
-  IntOp $R1 $R1 + 1
-  StrCpy $3 $1 1 $R1
-  StrCmp $3 "" DotFound1
-  StrCmp $3 "." DotFound1
-  StrCpy $5 $5$3
-  Goto DotLoop1
-  DotFound1:
-  Strcmp $4 "" 0 Not4
-    StrCmp $5 "" Equal
-    Goto Ver2Less
-  Not4:
-  StrCmp $5 "" Ver2More
-  IntCmp $4 $5 Start Ver2Less Ver2More
-  Equal:
-  StrCpy $0 "0"
-  Goto Finish
-  Ver2Less:
-  StrCpy $0 "1"
-  Goto Finish
-  Ver2More:
-  StrCpy $0 "2"
-  Finish:
-  Pop $5
-  Pop $4
-  Pop $3
-  Pop $R1
-  Pop $R0
-  Pop $1
-  Exch $0
+; =====================================================
+; mono.nsi - Mono Setup wizard for windows
+; =====================================================
+;
+; (C) Copyright 2003 by Johannes Roith
+; (C) Copyright 2003 by Daniel Morgan
+;
+; Authors: 
+;       Johannes Roith <johannes@jroith.de>
+;       Daniel Morgan <danmorg@sc.rr.com>
+;
+; This .nsi includes code from the NSIS Archives:
+; function StrReplace and VersionCheck 
+; by Hendri Adriaens
+; HendriAdriaens@hotmail.com
+; 
+; =====================================================
+;
+; This script can build a binary setup wizard of mono.
+; It is released under the GNU GPL.
+;
+; =====================================================
+; SET MILESTONE & SOURCE DIR
+; =====================================================
+;
+;
+  !define MILESTONE "0.24" ;
+  !define SOURCE_INSTALL_DIR "c:\mono-0.23-setup\install\\*" ;
+
+; =====================================================
+; SET LOGO
+; =====================================================
+;
+;  Beautification:
+;
+;  This adds a Mono-specific Image on the left
+;  You can choose between the light or dark one.
+;  
+;  If you wish no mono-specifi logo, please outcomment
+;  the lines.
+;  
+;  "light" is enabled.
+;
+;  !define MUI_SPECIALBITMAP "mono-win32-setup-dark.bmp"
+   !define MUI_SPECIALBITMAP "mono-win32-setup-light.bmp"
+
+; =====================================================
+; BUILDING
+; =====================================================
+;
+; 1. Build mono. The install directory must not contain
+;    anything else - everything gets packed in!!!
+;
+; 2. In your install directory, delete the *.a files.
+;     Most people won't need them and it saves ~ 4 MB.
+;
+; 3. Get latest nsis from cvs or a development snapshot
+;    from http://nsis.sf.net
+;
+; 4. Adapt the MILESTONE
+;
+; 5. Adapt the SOURCE_INSTALL_DIR above to match your 
+;     install directory. Do not remove \\* at the end!!
+;
+; 6. Open this script in makensisw.exe
+;
+; 7. The output file is mono-[MILESTONE]-win32-1.exe
+;
+;
+;
+;
+;
+; =====================================================
+; MONO & REGISTRY / DETECTING MONO
+; =====================================================
+;
+;
+; This setup creates several Registry Keys:
+;
+; HKEY_LOCAL_MACHINE SOFTWARE\Mono DefaultCLR
+; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} SdkInstallRoot
+; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} FrameworkAssemblyDirectory
+; HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} MonoConfigDir
+;
+; =====================================================
+;
+; To get the current Mono Install Directory:
+;
+; 1. Get DefaultCLR
+; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE SdkInstallRoot
+;
+; =====================================================
+;
+; To get the current Mono assembly Directory:
+;
+; 1. Get DefaultCLR
+; 2. Get HKEY_LOCAL_MACHINE SOFTWARE\Mono\$THE_DEFAULT_CLR_VALUE FrameworkAssemblyDirectory
+; 
+; =====================================================
+; Do not edit below
+; =====================================================
+;
+;
+; =====================================================
+; GENERAL SETTING - NEED NOT TO BE CHANGED
+; =====================================================
+
+ !define NAME "Mono" ;
+ !define TARGET_INSTALL_DIR "$PROGRAMFILES\Mono-${MILESTONE}" ;
+ !define OUTFILE "mono-${MILESTONE}-win32-1.exe" ;
+
+; =====================================================
+; SCRIPT
+; =====================================================
+
+ !define MUI_PRODUCT "${NAME}"
+ !define MUI_VERSION "${MILESTONE}"
+ !define FULLNAME "${MUI_PRODUCT} ${MUI_VERSION}"
+ !define MUI_UI "${NSISDIR}\Contrib\UIs\modern2.exe"
+ !define MUI_ICON "${NSISDIR}\Contrib\Icons\setup.ico"
+ !define MUI_UNICON "${NSISDIR}\Contrib\Icons\normal-uninstall.ico"
+ !define MUI_WELCOMEPAGE
+ !define MUI_DIRECTORYPAGE
+ !define MUI_DIRECTORYSELECTIONPAGE
+ !include "${NSISDIR}\Contrib\Modern UI\System.nsh"
+ !insertmacro MUI_SYSTEM
+ !insertmacro MUI_LANGUAGE "ENGLISH"
+
+
+ OutFile "${OUTFILE}"
+ InstallDir "${TARGET_INSTALL_DIR}"
+
+
+;========================
+; Uninstaller
+;========================
+
+Section "Uninstall"
+
+  MessageBox MB_YESNO "Are you sure you want to uninstall Mono from your system?" IDNO NoUnInstall
+
+  Delete $INSTDIR\Uninst.exe ; delete Uninstaller
+  DeleteRegKey HKLM SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} ; Remove Entry in Software List
+
+  MessageBox MB_YESNO "Mono was installed into $INSTDIR. Should this directory be removed completly?" IDNO GoNext1
+  RMDir /r $INSTDIR
+  GoNext1:
+
+  DeleteRegKey HKLM SOFTWARE\Mono\${MILESTONE}
+
+  ; If the Default-Key is the current Milestone, we just remove the wrappers
+
+  ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR
+  StrCmp $0 ${MILESTONE} DeleteWrappers
+
+  MessageBox MB_YESNO "Mono ${MILESTONE} has been removed, but the default installation of Mono differs form this version. Should the wrappers and the Mono registry key be still be removed? This could disable other Mono installations." IDNO GoNext2
+
+  DeleteWrappers:
+
+  ; Complete Uninstall
+
+  DeleteRegKey HKLM SOFTWARE\Mono
+  Delete $WINDIR\monobasepath.bat
+  Delete $WINDIR\mcs.bat
+  Delete $WINDIR\mbas.bat
+  Delete $WINDIR\mint.bat
+  Delete $WINDIR\mono.bat
+  Delete $WINDIR\monodis.bat
+  Delete $WINDIR\monoilasm.bat
+  Delete $WINDIR\sqlsharp.bat
+  Delete $WINDIR\secutil.bat
+  Delete $WINDIR\cert2spc.bat
+  Delete $WINDIR\monoresgen.bat
+  Delete $WINDIR\monosn.bat
+  Delete $WINDIR\cilc.bat
+
+  GoNext2:
+  NoUnInstall:
+
+SectionEnd
+
+
+ Section
+
+ ; Warn people if a newer Mono is already installed
+
+ ReadRegStr $0 HKEY_LOCAL_MACHINE SOFTWARE\Mono\ DefaultCLR
+ Push $0
+ Push ${MILESTONE} 
+ Call VersionCheck
+ Pop $0
+ StrCmp $0 0 NoAskInstall
+ StrCmp $0 2 NoAskInstall
+ MessageBox MB_YESNO "A newer Mono version is already installed. Still continue?" IDNO NoInstall
+
+ NoAskInstall:
+
+ SetOutPath $INSTDIR
+ File /r "${SOURCE_INSTALL_DIR}"
+ WriteUninstaller Uninst.exe
+
+ WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} SdkInstallRoot $INSTDIR
+ WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} FrameworkAssemblyDirectory $INSTDIR\lib
+ WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} MonoConfigDir $INSTDIR\etc\mono
+ ;WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono\${MILESTONE} GtkSharpLibPath $INSTDIR\lib
+ WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Mono DefaultCLR ${MILESTONE}
+
+ ; Mono Uninstall Entry in Windows Software List in the Control panel
+ WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} DisplayName "Mono ${MILESTONE}"
+ WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mono-${MILESTONE} UninstallString $INSTDIR\uninst.exe
+
+ ;original string is like C:\mono-0.20\install
+ StrCpy $5 $INSTDIR 
+ Push $5
+ Push "\" ;search for this string
+ Push "/" ;replace with this string
+ Call StrReplace
+ ;resulting string which is like C:/mono-0.20/install
+ Pop $6
+
+;========================
+; Write the wrapper files
+;========================
+
+; create bin/mono wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\mono.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe "$$@"'
+FileClose $0
+
+; create bin/mint wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\mint.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mint.exe "$$@"'
+FileClose $0
+
+; create bin/mcs wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\mcs.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/mcs.exe "$$@"'
+FileClose $0
+
+; create bin/mbas wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\mbas.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/mbas.exe "$$@"'
+FileClose $0
+
+; create bin/sqlsharp wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\sqlsharp.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/sqlsharp.exe "$$@"'
+FileClose $0
+
+; create bin/monodis wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\monodis.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/monodis.exe "$$@"'
+FileClose $0
+
+; create bin/monoresgen wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\monoresgen.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/monoresgen.exe "$$@"'
+FileClose $0
+
+; create bin/monoilasm wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\monoilasm.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/monoilasm.exe "$$@"'
+FileClose $0
+
+; create bin/monosn wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\monosn.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/monosn.exe "$$@"'
+FileClose $0
+
+; create bin/secutil wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\secutil.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/secutil.exe "$$@"'
+FileClose $0
+
+; create bin/cert2spc wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\cert2spc.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/cert2spc.exe "$$@"'
+FileClose $0
+
+; create bin/cilc wrapper to be used if the user has cygwin
+FileOpen $0 "$INSTDIR\bin\cilc.exe.sh" "w"
+FileWrite $0 "#!/bin/sh$\r$\n"
+FileWrite $0 "export MONO_PATH=$6/lib$\r$\n"
+FileWrite $0 "export MONO_CFG_DIR=$6/etc/mono$\r$\n"
+FileWrite $0 '$6/bin/mono.exe $6/bin/cilc.exe "$$@"'
+FileClose $0
+
+;
+; These wrappers are copied to the windows directory.
+;
+
+;========================
+; Write the path file
+;========================
+
+FileOpen $0 "$WINDIR\monobasepath.bat" "w"
+FileWrite $0 'set MONO_BASEPATH="$INSTDIR"$\r$\n'
+FileWrite $0 'set MONO_PATH=$INSTDIR\lib$\r$\n'
+FileWrite $0 'set MONO_CFG_DIR="$INSTDIR\etc\mono"'
+FileClose $0
+
+
+;========================
+; Write the mcs file
+;========================
+
+FileOpen $0 "$WINDIR\mcs.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mcs.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write the mbas file
+;========================
+
+FileOpen $0 "$WINDIR\mbas.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\mbas.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write the mint file
+;========================
+
+FileOpen $0 "$WINDIR\mint.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mint.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write the mono file
+;========================
+
+FileOpen $0 "$WINDIR\mono.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+FileClose $0
+
+;========================
+; Write monodis
+;========================
+
+FileOpen $0 "$WINDIR\monodis.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\monodis.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write monoilasm
+;========================
+
+FileOpen $0 "$WINDIR\monoilasm.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoilasm.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+
+;========================
+; Write the sqlsharp file
+;========================
+
+FileOpen $0 "$WINDIR\sqlsharp.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\sqlsharp.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write the secutil file
+;========================
+
+FileOpen $0 "$WINDIR\secutil.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\secutil.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write the cert2spc file
+;========================
+
+FileOpen $0 "$WINDIR\cert2spc.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cert2spec.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+
+;========================
+; Write the monoresgen file
+;========================
+
+FileOpen $0 "$WINDIR\monoresgen.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\monoresgen.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write the monosn file
+;========================
+
+FileOpen $0 "$WINDIR\monosn.bat" "w"
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\monosn.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+;========================
+; Write the cilc file
+;========================
+
+FileOpen $0 "$WINDIR\cilc.bat" "w"
+
+
+FileWrite $0 "@echo off$\r$\n"
+FileWrite $0 "call monobasepath.bat$\r$\n"
+FileWrite $0 "set MONOARGS=$\r$\n"
+FileWrite $0 ":loop$\r$\n"
+FileWrite $0 "if x%1 == x goto :done$\r$\n"
+FileWrite $0 "set MONOARGS=%MONOARGS% %1$\r$\n"
+FileWrite $0 "shift$\r$\n"
+FileWrite $0 "goto loop$\r$\n"
+FileWrite $0 ":done$\r$\n"
+FileWrite $0 "setlocal$\r$\n"
+FileWrite $0 'set path="$INSTDIR\bin\;$INSTDIR\lib\;%path%"$\r$\n'
+FileWrite $0 '"$INSTDIR\bin\mono.exe" "$INSTDIR\bin\cilc.exe" %MONOARGS%$\r$\n'
+FileWrite $0 "endlocal$\r$\n"
+
+FileClose $0
+
+NoInstall:
+SectionEnd
+
+; function StrReplace
+; by Hendri Adriaens
+; HendriAdriaens@hotmail.com
+; found in the NSIS Archives
+function StrReplace
+  Exch $0 ;this will replace wrong characters
+  Exch
+  Exch $1 ;needs to be replaced
+  Exch
+  Exch 2
+  Exch $2 ;the orginal string
+  Push $3 ;counter
+  Push $4 ;temp character
+  Push $5 ;temp string
+  Push $6 ;length of string that need to be replaced
+  Push $7 ;length of string that will replace
+  Push $R0 ;tempstring
+  Push $R1 ;tempstring
+  Push $R2 ;tempstring
+  StrCpy $3 "-1"
+  StrCpy $5 ""
+  StrLen $6 $1
+  StrLen $7 $0
+  Loop:
+  IntOp $3 $3 + 1
+  StrCpy $4 $2 $6 $3
+  StrCmp $4 "" ExitLoop
+  StrCmp $4 $1 Replace
+  Goto Loop
+  Replace:
+  StrCpy $R0 $2 $3
+  IntOp $R2 $3 + $6
+  StrCpy $R1 $2 "" $R2
+  StrCpy $2 $R0$0$R1
+  IntOp $3 $3 + $7
+  Goto Loop
+  ExitLoop:
+  StrCpy $0 $2
+  Pop $R2
+  Pop $R1
+  Pop $R0
+  Pop $7
+  Pop $6
+  Pop $5
+  Pop $4
+  Pop $3
+  Pop $2
+  Pop $1
+  Exch $0
+FunctionEnd
+
+Function VersionCheck
+  Exch $0 ;second versionnumber
+  Exch
+  Exch $1 ;first versionnumber
+  Push $R0 ;counter for $0
+  Push $R1 ;counter for $1
+  Push $3 ;temp char
+  Push $4 ;temp string for $0
+  Push $5 ;temp string for $1
+  StrCpy $R0 "-1"
+  StrCpy $R1 "-1"
+  Start:
+  StrCpy $4 ""
+  DotLoop0:
+  IntOp $R0 $R0 + 1
+  StrCpy $3 $0 1 $R0
+  StrCmp $3 "" DotFound0
+  StrCmp $3 "." DotFound0
+  StrCpy $4 $4$3
+  Goto DotLoop0
+  DotFound0:
+  StrCpy $5 ""
+  DotLoop1:
+  IntOp $R1 $R1 + 1
+  StrCpy $3 $1 1 $R1
+  StrCmp $3 "" DotFound1
+  StrCmp $3 "." DotFound1
+  StrCpy $5 $5$3
+  Goto DotLoop1
+  DotFound1:
+  Strcmp $4 "" 0 Not4
+    StrCmp $5 "" Equal
+    Goto Ver2Less
+  Not4:
+  StrCmp $5 "" Ver2More
+  IntCmp $4 $5 Start Ver2Less Ver2More
+  Equal:
+  StrCpy $0 "0"
+  Goto Finish
+  Ver2Less:
+  StrCpy $0 "1"
+  Goto Finish
+  Ver2More:
+  StrCpy $0 "2"
+  Finish:
+  Pop $5
+  Pop $4
+  Pop $3
+  Pop $R1
+  Pop $R0
+  Pop $1
+  Exch $0
 FunctionEnd
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/tools/mono-xsd/NewMonoXSD.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/mono-xsd/NewMonoXSD.cs
@@ -1,507 +1,507 @@
-///
-/// MonoXSD.cs -- A reflection-based tool for dealing with XML Schema.
-///
-/// Authors: Duncan Mak (duncan@ximian.com)
-///          Lluis Sanchez Gual (lluis@ximian.com)
-///          Atsushi Enomoto (atsushi@ximian.com)
-///
-/// Copyright (C) 2003, Duncan Mak,
-///                     Ximian, Inc.
-///
-
-using System;
-using System.Collections;
-using System.Data;
-using System.IO;
-using System.Reflection;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.Serialization;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using Microsoft.CSharp;
-using Microsoft.VisualBasic;
-
-namespace Mono.Util {
-
-	public class Driver
-	{
-		public static readonly string helpString =
-			"xsd.exe - a utility for generating schema or class files\n\n" +
-			"xsd.exe <schema>.xsd /classes [/element:NAME] [/language:NAME]\n" +
-			"            [/namespace:NAME] [/outputdir:PATH] [/uri:NAME]\n\n" +
-			"xsd.exe <schema>.xsd /dataset [/element:NAME] [/language:NAME]\n" +
-			"            [/namespace:NAME] [/outputdir:PATH] [/uri:NAME]\n\n" +
-
-			"xsd.exe <assembly>.dll|<assembly>.exe [/outputdir:PATH] [/type:NAME]\n\n" +
-			"xsd.exe <instance>.xml [<instance>.xml ...] [/outputdir:PATH]\n\n" +
-			"   /c /classes        Generate classes for the specified schema.\n" +
-			"   /d /dataset        Generate typed dataset classes for the specified schema.\n" +
-			"   /e /element:NAME   Element from schema to generate code for.\n" +
-			"                      Multiple elements can be specified.\n" +
-			"   /u /uri:NAME       Namespace uri of the elements to generate code for.\n" +
-			"   /l /language:NAME  The language, or type name of custom CodeDomProvider\n" +
-			"                      to use for the generated code.\n" +
-			"                      Shorthand specifiers are: \"CS\" (C#) and \"VB\" (VB.NET).\n" +
-			"                      For type name, assembly qualified name is required.\n" +
-			"   /g /generator:TYPE Code Generator type name, followed by ','\n" + 
-			"                      and assembly file name.\n" +
-			"   /o /outputdir:PATH The directory where to generate the code or schemas.\n" +
-			"   /n /namespace:NAME Namespace for the generated code.\n" +
-			"   /t /type:NAME      Type for which to generate an xml schema.\n" +
-			"                      Multiple types can be specified.\n" +
-			"   /h /help           Output this help.\n";
-
-		static readonly string incorrectOrder = "Options must be specified after Assembly or schema file names";
-		static readonly string duplicatedParam = "The option {0} cannot be specified more that once";
-		static readonly string unknownOption = "Unknown option {0}";
-		static readonly string incompatibleArgs = "Cannot mix options for generating schemas and for generatic classes";
-		static readonly string invalidParams = "Invalid parameters";
-		static readonly string tooManyAssem = "Only one assembly name can be specified";
-		static readonly string errLoadAssembly = "Could not load assembly: {0}";
-		static readonly string typeNotFound = "Type {0} not found in the specified assembly";
-		static readonly string languageNotSupported = "The language {0} is not supported";
-		static readonly string missingOutputForXsdInput = "Can only generate one of classes or datasets.";
-		static readonly string generatorAssemblyNotFound = "Could not load code provider assembly file: {0}";
-		static readonly string generatorTypeNotFound = "Could not find specified code provider type: {0}";
-		static readonly string generatorTypeIsNotCodeGenerator = "Specified code provider type was not CodeDomProvider: {0}";
-		static readonly string generatorThrewException = "Specified CodeDomProvider raised an error while creating its instance: {0}";
-
-		static void Main (string [] args)
-		{
-			if (args.Length < 1) {
-				Console.WriteLine (helpString);
-				Environment.Exit (0);
-			}
-
-			try
-			{
-				new Driver().Run (args);
-			}
-			catch (ApplicationException ex)
-			{
-				Console.WriteLine (ex.Message);
-			}
-			catch (Exception ex)
-			{
-				Console.WriteLine (ex);
-			}
-		}
-
-		string outputDir = null;
-
-
-		ArrayList lookupTypes = new ArrayList();
-		ArrayList assemblies = new ArrayList();
-
-		ArrayList schemaNames = new ArrayList();
-		ArrayList inferenceNames = new ArrayList();
-		ArrayList elements = new ArrayList();
-		string language = null;
-		string namesp = null;
-		string uri = null;
-		string providerOption = null;
-		CodeDomProvider provider;
-
-		public void Run (string[] args)
-		{
-			ArrayList unknownFiles = new ArrayList();
-			bool generateClasses = false;
-			bool readingFiles = true;
-			bool schemasOptions = false;
-			bool assemblyOptions = false;
-			bool generateDataset = false;
-			bool inference = false;
-
-			foreach (string arg in args)
-			{
-				if (!arg.StartsWith ("--") && !arg.StartsWith ("/") ||
-					(arg.StartsWith ("/") && arg.IndexOfAny (Path.InvalidPathChars) == -1)
-					) 
-				{
-					if ((arg.EndsWith (".dll") || arg.EndsWith (".exe")) && !arg.Substring (1).StartsWith ("generator:") && !arg.Substring (1).StartsWith ("g:"))
-					{
-						if (!readingFiles) throw new ApplicationException (incorrectOrder);
-						assemblies.Add (arg);
-						assemblyOptions = true;
-						continue;
-					}
-					else if (arg.EndsWith (".xsd"))
-					{
-						if (!readingFiles) Error (incorrectOrder);
-						schemaNames.Add (arg);
-						schemasOptions = true;
-						continue;
-					}
-					else if (arg.EndsWith (".xml"))
-					{
-						if (generateClasses || generateDataset) Error (duplicatedParam);
-						inferenceNames.Add (arg);
-						inference = true;
-						continue;
-					}
-					else if (!arg.StartsWith ("/"))
-					{
-						if (!readingFiles) Error (incorrectOrder);
-						unknownFiles.Add (arg);
-						continue;
-					}
-				}
-
-				readingFiles = false;
-
-				int i = arg.IndexOf (":");
-				if (i == -1) i = arg.Length;
-				string option = arg.Substring (1,i-1);
-				string param = (i<arg.Length-1) ? arg.Substring (i+1) : "";
-
-				if (option == "classes" || option == "c")
-				{
-					if (generateClasses || generateDataset || inference) Error (duplicatedParam, option);
-					generateClasses = true;
-					schemasOptions = true;
-				}
-				else if (option == "dataset" || option == "d")
-				{
-					if (generateClasses || generateDataset || inference) Error (duplicatedParam, option);
-					generateDataset = true;
-					schemasOptions = true;
-				}
-				else if (option == "element" || option == "e")
-				{
-					elements.Add (param);
-					schemasOptions = true;
-				}
-				else if (option == "language" || option == "l")
-				{
-					if (provider != null) Error (duplicatedParam, option);
-					if (language != null) Error (duplicatedParam, option);
-					language = param;
-					schemasOptions = true;
-				}
-				else if (option == "namespace" || option == "n")
-				{
-					if (namesp != null) Error (duplicatedParam, option);
-					namesp = param;
-					schemasOptions = true;
-				}
-				else if (option == "outputdir" || option == "o")
-				{
-					if (outputDir != null) Error (duplicatedParam, option);
-					outputDir = param;
-				}
-				else if (option == "uri" || option == "u")
-				{
-					if (uri != null) Error (duplicatedParam, option);
-					uri = param;
-					schemasOptions = true;
-				}
-				else if (option == "type" || option == "t")
-				{
-					lookupTypes.Add (param);
-					assemblyOptions = true;
-				}
-				else if (option == "generator" || option == "g")
-				{
-					providerOption = param;
-				}
-				else if (option == "help" || option == "h")
-				{
-					Console.WriteLine (helpString);
-					return;
-				}
-				else if (option == "nologo")
-				{
-					// ignore, since we do not output a logo anyway
-				}
-				else
-					Error (unknownOption, option);
-			}
-
-			if (!schemasOptions && !assemblyOptions && !inference)
-				Error (invalidParams);
-
-			if (schemasOptions && assemblyOptions)
-				Error (incompatibleArgs);
-
-			if (assemblies.Count > 1)
-				Error (tooManyAssem);
-
-			if (outputDir == null) outputDir = ".";
-
-			string typename = null;
-			Type generatorType = null;
-
-			if (language != null) {
-				switch (language) {
-				case "CS":
-					provider = new CSharpCodeProvider ();
-					break;
-				case "VB":
-					provider = new VBCodeProvider ();
-					break;
-				default:
-					typename = StripQuot (language);
-
-					generatorType = Type.GetType (typename);
-					if (generatorType == null)
-						Error (generatorTypeNotFound, typename);
-					break;
-				}
-			}
-
-			if (providerOption != null) {
-				string param = providerOption;
-				int comma = param.IndexOf (',');
-				if (comma < 0) {
-					typename = StripQuot (param);
-					generatorType = Type.GetType (param);
-				} else {
-					typename = param.Substring (0, comma);
-					string asmName = param.Substring (comma + 1);
-					Assembly asm = Assembly.LoadFile (asmName);
-					if (asm == null)
-						Error (generatorAssemblyNotFound, asmName);
-					generatorType = asm.GetType (typename);
-				}
-				if (generatorType == null)
-					Error (generatorTypeNotFound, typename);
-			}
-			if (generatorType != null) {
-				if (!generatorType.IsSubclassOf (typeof (CodeDomProvider)))
-					Error (generatorTypeIsNotCodeGenerator, typename);
-				try {
-					provider = (CodeDomProvider) Activator.CreateInstance (generatorType, null);
-				} catch (Exception ex) {
-					Error (generatorThrewException, generatorType.AssemblyQualifiedName.ToString () + " --> " + ex.Message);
-				}
-				Console.WriteLine ("Loaded custom generator type " + generatorType + " .");
-			}
-			if (provider == null)
-				provider = new CSharpCodeProvider ();
-
-			if (schemasOptions)
-			{
-				if (!generateClasses && !generateDataset)
-					Error (missingOutputForXsdInput);
-				schemaNames.AddRange (unknownFiles);
-				if (generateClasses)
-					GenerateClasses ();
-				else if (generateDataset)
-					GenerateDataset ();
-			}
-			else if (inference)
-			{
-				foreach (string xmlfile in inferenceNames) {
-					string genFile = Path.Combine (outputDir, Path.GetFileNameWithoutExtension (xmlfile) + ".xsd");
-					DataSet ds = new DataSet ();
-					ds.InferXmlSchema (xmlfile, null);
-					ds.WriteXmlSchema (genFile);
-					Console.WriteLine ("Written file " + genFile);
-				}
-			}
-			else
-			{
-				assemblies.AddRange (unknownFiles);
-				GenerateSchemas ();
-			}
-		}
-
-		public void GenerateSchemas ()
-		{
-			Assembly assembly = null;
-			try
-			{
-				assembly = Assembly.LoadFrom ((string) assemblies [0]);
-			}
-			catch (Exception ex)
-			{
-				Error (errLoadAssembly, ex.Message);
-			}
-			
-			Type[] types;
-			
-			if (lookupTypes.Count > 0)
-			{
-				types = new Type [lookupTypes.Count];
-				for (int n=0; n<lookupTypes.Count; n++)
-				{
-					Type t = assembly.GetType ((string)lookupTypes[n]);
-					if (t == null) Error (typeNotFound, (string)lookupTypes[n]);
-					types[n] = t;
-				}
-			}
-			else
-				types = assembly.GetExportedTypes ();
-
-			XmlReflectionImporter ri = new XmlReflectionImporter ();
-			XmlSchemas schemas = new XmlSchemas ();
-			XmlSchemaExporter sx = new XmlSchemaExporter (schemas);
-
-			foreach (Type type in types)
-			{
-				XmlTypeMapping tm = ri.ImportTypeMapping (type);
-				sx.ExportTypeMapping (tm);
-			}
-
-			if (schemas.Count == 1)
-			{
-				string fileName = Path.Combine (outputDir, "schema.xsd");
-				WriteSchema (fileName, schemas [0]);
-			}
-			else
-			{
-				for (int n=0; n<schemas.Count; n++)
-				{
-					string fileName = Path.Combine (outputDir, "schema" + n + ".xsd");
-					WriteSchema (fileName, schemas [n]);
-				}
-			}
-		}
-
-		void WriteSchema (string fileName, XmlSchema schema)
-		{
-			StreamWriter sw = new StreamWriter (fileName);
-			schema.Write (sw);
-			sw.Close ();
-			Console.WriteLine ("Written file " + fileName);
-		}
-		
-		public void GenerateClasses ()
-		{
-			if (namesp == null) namesp = "Schemas";
-			if (uri == null) uri = "";
-			string targetFile = "";
-
-			XmlSchemas schemas = new XmlSchemas();
-			foreach (string fileName in schemaNames)
-			{
-				StreamReader sr = new StreamReader (fileName);
-				schemas.Add (XmlSchema.Read (sr, new ValidationEventHandler (HandleValidationError)));
-				sr.Close ();
-
-				if (targetFile == "") targetFile = Path.GetFileNameWithoutExtension (fileName);
-				else targetFile += "_" + Path.GetFileNameWithoutExtension (fileName);
-			}
-
-			targetFile += "." + provider.FileExtension;
-
-			CodeCompileUnit cunit = new CodeCompileUnit ();
-			CodeNamespace codeNamespace = new CodeNamespace (namesp);
-			cunit.Namespaces.Add (codeNamespace);
-			codeNamespace.Comments.Add (new CodeCommentStatement ("\nThis source code was auto-generated by MonoXSD\n"));
-
-			// Locate elements to generate
-
-			ArrayList qnames = new ArrayList ();
-			if (elements.Count > 0)
-			{
-				foreach (string name in elements)
-					qnames.Add (new XmlQualifiedName (name, uri));
-			}
-			else
-			{
-				foreach (XmlSchema schema in schemas) {
-					if (!schema.IsCompiled) schema.Compile (new ValidationEventHandler (HandleValidationError));
-					foreach (XmlSchemaElement el in schema.Elements.Values)
-						if (!qnames.Contains (el.QualifiedName))
-							qnames.Add (el.QualifiedName);
-				}
-			}
-
-			// Import schemas and generate the class model
-
-			XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
-			XmlCodeExporter sx = new XmlCodeExporter (codeNamespace, cunit);
-
-			ArrayList maps = new ArrayList();
-
-			foreach (XmlQualifiedName qname in qnames)
-			{
-				XmlTypeMapping tm = importer.ImportTypeMapping (qname);
-				if (tm != null) maps.Add (tm);
-			}
-			
-			foreach (XmlTypeMapping tm in maps)
-			{
-				sx.ExportTypeMapping (tm);
-			}
-
-			// Generate the code
-			
-			ICodeGenerator gen = provider.CreateGenerator();
-
-			string genFile = Path.Combine (outputDir, targetFile);
-			StreamWriter sw = new StreamWriter(genFile, false);
-			gen.GenerateCodeFromCompileUnit (cunit, sw, new CodeGeneratorOptions());
-			sw.Close();
-
-			Console.WriteLine ("Written file " + genFile);
-		}
-
-		public void GenerateDataset ()
-		{
-			if (namesp == null) namesp = "";
-			if (uri == null) uri = "";
-			string targetFile = "";
-
-			DataSet dataset = new DataSet ();
-			foreach (string fileName in schemaNames)
-			{
-				dataset.ReadXmlSchema (fileName);
-
-				if (targetFile == "") targetFile = Path.GetFileNameWithoutExtension (fileName);
-				else targetFile += "_" + Path.GetFileNameWithoutExtension (fileName);
-			}
-
-			targetFile += "." + provider.FileExtension;
-
-			CodeCompileUnit cunit = new CodeCompileUnit ();
-			CodeNamespace codeNamespace = new CodeNamespace (namesp);
-			cunit.Namespaces.Add (codeNamespace);
-			codeNamespace.Comments.Add (new CodeCommentStatement ("\nThis source code was auto-generated by MonoXSD\n"));
-
-			// Generate the code
-			
-			ICodeGenerator gen = provider.CreateGenerator ();
-
-			TypedDataSetGenerator.Generate (dataset, codeNamespace, gen);
-
-			string genFile = Path.Combine (outputDir, targetFile);
-			StreamWriter sw = new StreamWriter(genFile, false);
-			gen.GenerateCodeFromCompileUnit (cunit, sw, new CodeGeneratorOptions());
-			sw.Close();
-
-			Console.WriteLine ("Written file " + genFile);
-		}
-
-		void HandleValidationError (object o, ValidationEventArgs e)
-		{
-			Console.WriteLine ("{0}: {1} {2}",
-				e.Severity == XmlSeverityType.Error ? "Error" : "Warning",
-				e.Message,
-				e.Exception != null ? e.Exception.Message : null);
-		}
-
-		public void Error (string msg)
-		{
-			throw new ApplicationException (msg);
-		}
-
-		public void Error (string msg, string param)
-		{
-			throw new ApplicationException (string.Format(msg,param));
-		}
-
-		private string StripQuot (string input)
-		{
-			if (input.Length < 2)
-				return input;
-			if (input [0] == '"' && input [input.Length -1] == '"' ||
-				input [0] == '\'' && input [input.Length - 1] == '\'')
-				return input.Substring (1, input.Length - 2);
-			else
-				return language;
-		}
-	}
-}
+///
+/// MonoXSD.cs -- A reflection-based tool for dealing with XML Schema.
+///
+/// Authors: Duncan Mak (duncan@ximian.com)
+///          Lluis Sanchez Gual (lluis@ximian.com)
+///          Atsushi Enomoto (atsushi@ximian.com)
+///
+/// Copyright (C) 2003, Duncan Mak,
+///                     Ximian, Inc.
+///
+
+using System;
+using System.Collections;
+using System.Data;
+using System.IO;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Schema;
+using System.Xml.Serialization;
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using Microsoft.CSharp;
+using Microsoft.VisualBasic;
+
+namespace Mono.Util {
+
+	public class Driver
+	{
+		public static readonly string helpString =
+			"xsd.exe - a utility for generating schema or class files\n\n" +
+			"xsd.exe <schema>.xsd /classes [/element:NAME] [/language:NAME]\n" +
+			"            [/namespace:NAME] [/outputdir:PATH] [/uri:NAME]\n\n" +
+			"xsd.exe <schema>.xsd /dataset [/element:NAME] [/language:NAME]\n" +
+			"            [/namespace:NAME] [/outputdir:PATH] [/uri:NAME]\n\n" +
+
+			"xsd.exe <assembly>.dll|<assembly>.exe [/outputdir:PATH] [/type:NAME]\n\n" +
+			"xsd.exe <instance>.xml [<instance>.xml ...] [/outputdir:PATH]\n\n" +
+			"   /c /classes        Generate classes for the specified schema.\n" +
+			"   /d /dataset        Generate typed dataset classes for the specified schema.\n" +
+			"   /e /element:NAME   Element from schema to generate code for.\n" +
+			"                      Multiple elements can be specified.\n" +
+			"   /u /uri:NAME       Namespace uri of the elements to generate code for.\n" +
+			"   /l /language:NAME  The language, or type name of custom CodeDomProvider\n" +
+			"                      to use for the generated code.\n" +
+			"                      Shorthand specifiers are: \"CS\" (C#) and \"VB\" (VB.NET).\n" +
+			"                      For type name, assembly qualified name is required.\n" +
+			"   /g /generator:TYPE Code Generator type name, followed by ','\n" + 
+			"                      and assembly file name.\n" +
+			"   /o /outputdir:PATH The directory where to generate the code or schemas.\n" +
+			"   /n /namespace:NAME Namespace for the generated code.\n" +
+			"   /t /type:NAME      Type for which to generate an xml schema.\n" +
+			"                      Multiple types can be specified.\n" +
+			"   /h /help           Output this help.\n";
+
+		static readonly string incorrectOrder = "Options must be specified after Assembly or schema file names";
+		static readonly string duplicatedParam = "The option {0} cannot be specified more that once";
+		static readonly string unknownOption = "Unknown option {0}";
+		static readonly string incompatibleArgs = "Cannot mix options for generating schemas and for generatic classes";
+		static readonly string invalidParams = "Invalid parameters";
+		static readonly string tooManyAssem = "Only one assembly name can be specified";
+		static readonly string errLoadAssembly = "Could not load assembly: {0}";
+		static readonly string typeNotFound = "Type {0} not found in the specified assembly";
+		static readonly string languageNotSupported = "The language {0} is not supported";
+		static readonly string missingOutputForXsdInput = "Can only generate one of classes or datasets.";
+		static readonly string generatorAssemblyNotFound = "Could not load code provider assembly file: {0}";
+		static readonly string generatorTypeNotFound = "Could not find specified code provider type: {0}";
+		static readonly string generatorTypeIsNotCodeGenerator = "Specified code provider type was not CodeDomProvider: {0}";
+		static readonly string generatorThrewException = "Specified CodeDomProvider raised an error while creating its instance: {0}";
+
+		static void Main (string [] args)
+		{
+			if (args.Length < 1) {
+				Console.WriteLine (helpString);
+				Environment.Exit (0);
+			}
+
+			try
+			{
+				new Driver().Run (args);
+			}
+			catch (ApplicationException ex)
+			{
+				Console.WriteLine (ex.Message);
+			}
+			catch (Exception ex)
+			{
+				Console.WriteLine (ex);
+			}
+		}
+
+		string outputDir = null;
+
+
+		ArrayList lookupTypes = new ArrayList();
+		ArrayList assemblies = new ArrayList();
+
+		ArrayList schemaNames = new ArrayList();
+		ArrayList inferenceNames = new ArrayList();
+		ArrayList elements = new ArrayList();
+		string language = null;
+		string namesp = null;
+		string uri = null;
+		string providerOption = null;
+		CodeDomProvider provider;
+
+		public void Run (string[] args)
+		{
+			ArrayList unknownFiles = new ArrayList();
+			bool generateClasses = false;
+			bool readingFiles = true;
+			bool schemasOptions = false;
+			bool assemblyOptions = false;
+			bool generateDataset = false;
+			bool inference = false;
+
+			foreach (string arg in args)
+			{
+				if (!arg.StartsWith ("--") && !arg.StartsWith ("/") ||
+					(arg.StartsWith ("/") && arg.IndexOfAny (Path.InvalidPathChars) == -1)
+					) 
+				{
+					if ((arg.EndsWith (".dll") || arg.EndsWith (".exe")) && !arg.Substring (1).StartsWith ("generator:") && !arg.Substring (1).StartsWith ("g:"))
+					{
+						if (!readingFiles) throw new ApplicationException (incorrectOrder);
+						assemblies.Add (arg);
+						assemblyOptions = true;
+						continue;
+					}
+					else if (arg.EndsWith (".xsd"))
+					{
+						if (!readingFiles) Error (incorrectOrder);
+						schemaNames.Add (arg);
+						schemasOptions = true;
+						continue;
+					}
+					else if (arg.EndsWith (".xml"))
+					{
+						if (generateClasses || generateDataset) Error (duplicatedParam);
+						inferenceNames.Add (arg);
+						inference = true;
+						continue;
+					}
+					else if (!arg.StartsWith ("/"))
+					{
+						if (!readingFiles) Error (incorrectOrder);
+						unknownFiles.Add (arg);
+						continue;
+					}
+				}
+
+				readingFiles = false;
+
+				int i = arg.IndexOf (":");
+				if (i == -1) i = arg.Length;
+				string option = arg.Substring (1,i-1);
+				string param = (i<arg.Length-1) ? arg.Substring (i+1) : "";
+
+				if (option == "classes" || option == "c")
+				{
+					if (generateClasses || generateDataset || inference) Error (duplicatedParam, option);
+					generateClasses = true;
+					schemasOptions = true;
+				}
+				else if (option == "dataset" || option == "d")
+				{
+					if (generateClasses || generateDataset || inference) Error (duplicatedParam, option);
+					generateDataset = true;
+					schemasOptions = true;
+				}
+				else if (option == "element" || option == "e")
+				{
+					elements.Add (param);
+					schemasOptions = true;
+				}
+				else if (option == "language" || option == "l")
+				{
+					if (provider != null) Error (duplicatedParam, option);
+					if (language != null) Error (duplicatedParam, option);
+					language = param;
+					schemasOptions = true;
+				}
+				else if (option == "namespace" || option == "n")
+				{
+					if (namesp != null) Error (duplicatedParam, option);
+					namesp = param;
+					schemasOptions = true;
+				}
+				else if (option == "outputdir" || option == "o")
+				{
+					if (outputDir != null) Error (duplicatedParam, option);
+					outputDir = param;
+				}
+				else if (option == "uri" || option == "u")
+				{
+					if (uri != null) Error (duplicatedParam, option);
+					uri = param;
+					schemasOptions = true;
+				}
+				else if (option == "type" || option == "t")
+				{
+					lookupTypes.Add (param);
+					assemblyOptions = true;
+				}
+				else if (option == "generator" || option == "g")
+				{
+					providerOption = param;
+				}
+				else if (option == "help" || option == "h")
+				{
+					Console.WriteLine (helpString);
+					return;
+				}
+				else if (option == "nologo")
+				{
+					// ignore, since we do not output a logo anyway
+				}
+				else
+					Error (unknownOption, option);
+			}
+
+			if (!schemasOptions && !assemblyOptions && !inference)
+				Error (invalidParams);
+
+			if (schemasOptions && assemblyOptions)
+				Error (incompatibleArgs);
+
+			if (assemblies.Count > 1)
+				Error (tooManyAssem);
+
+			if (outputDir == null) outputDir = ".";
+
+			string typename = null;
+			Type generatorType = null;
+
+			if (language != null) {
+				switch (language) {
+				case "CS":
+					provider = new CSharpCodeProvider ();
+					break;
+				case "VB":
+					provider = new VBCodeProvider ();
+					break;
+				default:
+					typename = StripQuot (language);
+
+					generatorType = Type.GetType (typename);
+					if (generatorType == null)
+						Error (generatorTypeNotFound, typename);
+					break;
+				}
+			}
+
+			if (providerOption != null) {
+				string param = providerOption;
+				int comma = param.IndexOf (',');
+				if (comma < 0) {
+					typename = StripQuot (param);
+					generatorType = Type.GetType (param);
+				} else {
+					typename = param.Substring (0, comma);
+					string asmName = param.Substring (comma + 1);
+					Assembly asm = Assembly.LoadFile (asmName);
+					if (asm == null)
+						Error (generatorAssemblyNotFound, asmName);
+					generatorType = asm.GetType (typename);
+				}
+				if (generatorType == null)
+					Error (generatorTypeNotFound, typename);
+			}
+			if (generatorType != null) {
+				if (!generatorType.IsSubclassOf (typeof (CodeDomProvider)))
+					Error (generatorTypeIsNotCodeGenerator, typename);
+				try {
+					provider = (CodeDomProvider) Activator.CreateInstance (generatorType, null);
+				} catch (Exception ex) {
+					Error (generatorThrewException, generatorType.AssemblyQualifiedName.ToString () + " --> " + ex.Message);
+				}
+				Console.WriteLine ("Loaded custom generator type " + generatorType + " .");
+			}
+			if (provider == null)
+				provider = new CSharpCodeProvider ();
+
+			if (schemasOptions)
+			{
+				if (!generateClasses && !generateDataset)
+					Error (missingOutputForXsdInput);
+				schemaNames.AddRange (unknownFiles);
+				if (generateClasses)
+					GenerateClasses ();
+				else if (generateDataset)
+					GenerateDataset ();
+			}
+			else if (inference)
+			{
+				foreach (string xmlfile in inferenceNames) {
+					string genFile = Path.Combine (outputDir, Path.GetFileNameWithoutExtension (xmlfile) + ".xsd");
+					DataSet ds = new DataSet ();
+					ds.InferXmlSchema (xmlfile, null);
+					ds.WriteXmlSchema (genFile);
+					Console.WriteLine ("Written file " + genFile);
+				}
+			}
+			else
+			{
+				assemblies.AddRange (unknownFiles);
+				GenerateSchemas ();
+			}
+		}
+
+		public void GenerateSchemas ()
+		{
+			Assembly assembly = null;
+			try
+			{
+				assembly = Assembly.LoadFrom ((string) assemblies [0]);
+			}
+			catch (Exception ex)
+			{
+				Error (errLoadAssembly, ex.Message);
+			}
+			
+			Type[] types;
+			
+			if (lookupTypes.Count > 0)
+			{
+				types = new Type [lookupTypes.Count];
+				for (int n=0; n<lookupTypes.Count; n++)
+				{
+					Type t = assembly.GetType ((string)lookupTypes[n]);
+					if (t == null) Error (typeNotFound, (string)lookupTypes[n]);
+					types[n] = t;
+				}
+			}
+			else
+				types = assembly.GetExportedTypes ();
+
+			XmlReflectionImporter ri = new XmlReflectionImporter ();
+			XmlSchemas schemas = new XmlSchemas ();
+			XmlSchemaExporter sx = new XmlSchemaExporter (schemas);
+
+			foreach (Type type in types)
+			{
+				XmlTypeMapping tm = ri.ImportTypeMapping (type);
+				sx.ExportTypeMapping (tm);
+			}
+
+			if (schemas.Count == 1)
+			{
+				string fileName = Path.Combine (outputDir, "schema.xsd");
+				WriteSchema (fileName, schemas [0]);
+			}
+			else
+			{
+				for (int n=0; n<schemas.Count; n++)
+				{
+					string fileName = Path.Combine (outputDir, "schema" + n + ".xsd");
+					WriteSchema (fileName, schemas [n]);
+				}
+			}
+		}
+
+		void WriteSchema (string fileName, XmlSchema schema)
+		{
+			StreamWriter sw = new StreamWriter (fileName);
+			schema.Write (sw);
+			sw.Close ();
+			Console.WriteLine ("Written file " + fileName);
+		}
+		
+		public void GenerateClasses ()
+		{
+			if (namesp == null) namesp = "Schemas";
+			if (uri == null) uri = "";
+			string targetFile = "";
+
+			XmlSchemas schemas = new XmlSchemas();
+			foreach (string fileName in schemaNames)
+			{
+				StreamReader sr = new StreamReader (fileName);
+				schemas.Add (XmlSchema.Read (sr, new ValidationEventHandler (HandleValidationError)));
+				sr.Close ();
+
+				if (targetFile == "") targetFile = Path.GetFileNameWithoutExtension (fileName);
+				else targetFile += "_" + Path.GetFileNameWithoutExtension (fileName);
+			}
+
+			targetFile += "." + provider.FileExtension;
+
+			CodeCompileUnit cunit = new CodeCompileUnit ();
+			CodeNamespace codeNamespace = new CodeNamespace (namesp);
+			cunit.Namespaces.Add (codeNamespace);
+			codeNamespace.Comments.Add (new CodeCommentStatement ("\nThis source code was auto-generated by MonoXSD\n"));
+
+			// Locate elements to generate
+
+			ArrayList qnames = new ArrayList ();
+			if (elements.Count > 0)
+			{
+				foreach (string name in elements)
+					qnames.Add (new XmlQualifiedName (name, uri));
+			}
+			else
+			{
+				foreach (XmlSchema schema in schemas) {
+					if (!schema.IsCompiled) schema.Compile (new ValidationEventHandler (HandleValidationError));
+					foreach (XmlSchemaElement el in schema.Elements.Values)
+						if (!qnames.Contains (el.QualifiedName))
+							qnames.Add (el.QualifiedName);
+				}
+			}
+
+			// Import schemas and generate the class model
+
+			XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
+			XmlCodeExporter sx = new XmlCodeExporter (codeNamespace, cunit);
+
+			ArrayList maps = new ArrayList();
+
+			foreach (XmlQualifiedName qname in qnames)
+			{
+				XmlTypeMapping tm = importer.ImportTypeMapping (qname);
+				if (tm != null) maps.Add (tm);
+			}
+			
+			foreach (XmlTypeMapping tm in maps)
+			{
+				sx.ExportTypeMapping (tm);
+			}
+
+			// Generate the code
+			
+			ICodeGenerator gen = provider.CreateGenerator();
+
+			string genFile = Path.Combine (outputDir, targetFile);
+			StreamWriter sw = new StreamWriter(genFile, false);
+			gen.GenerateCodeFromCompileUnit (cunit, sw, new CodeGeneratorOptions());
+			sw.Close();
+
+			Console.WriteLine ("Written file " + genFile);
+		}
+
+		public void GenerateDataset ()
+		{
+			if (namesp == null) namesp = "";
+			if (uri == null) uri = "";
+			string targetFile = "";
+
+			DataSet dataset = new DataSet ();
+			foreach (string fileName in schemaNames)
+			{
+				dataset.ReadXmlSchema (fileName);
+
+				if (targetFile == "") targetFile = Path.GetFileNameWithoutExtension (fileName);
+				else targetFile += "_" + Path.GetFileNameWithoutExtension (fileName);
+			}
+
+			targetFile += "." + provider.FileExtension;
+
+			CodeCompileUnit cunit = new CodeCompileUnit ();
+			CodeNamespace codeNamespace = new CodeNamespace (namesp);
+			cunit.Namespaces.Add (codeNamespace);
+			codeNamespace.Comments.Add (new CodeCommentStatement ("\nThis source code was auto-generated by MonoXSD\n"));
+
+			// Generate the code
+			
+			ICodeGenerator gen = provider.CreateGenerator ();
+
+			TypedDataSetGenerator.Generate (dataset, codeNamespace, gen);
+
+			string genFile = Path.Combine (outputDir, targetFile);
+			StreamWriter sw = new StreamWriter(genFile, false);
+			gen.GenerateCodeFromCompileUnit (cunit, sw, new CodeGeneratorOptions());
+			sw.Close();
+
+			Console.WriteLine ("Written file " + genFile);
+		}
+
+		void HandleValidationError (object o, ValidationEventArgs e)
+		{
+			Console.WriteLine ("{0}: {1} {2}",
+				e.Severity == XmlSeverityType.Error ? "Error" : "Warning",
+				e.Message,
+				e.Exception != null ? e.Exception.Message : null);
+		}
+
+		public void Error (string msg)
+		{
+			throw new ApplicationException (msg);
+		}
+
+		public void Error (string msg, string param)
+		{
+			throw new ApplicationException (string.Format(msg,param));
+		}
+
+		private string StripQuot (string input)
+		{
+			if (input.Length < 2)
+				return input;
+			if (input [0] == '"' && input [input.Length -1] == '"' ||
+				input [0] == '\'' && input [input.Length - 1] == '\'')
+				return input.Substring (1, input.Length - 2);
+			else
+				return language;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/tools/nunitreport/FailedTest.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/nunitreport/FailedTest.cs
@@ -1,24 +1,24 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace TestMonkey
-{
-	public class FailedTest
-	{
-		public string Name;
-		public string Message;
-		public string StackTrace;
-		
-		public FailedTest ()
-		{
-		}
-		
-		public FailedTest (string name, string message, string stackTrace)
-		{
-			this.Name = name;
-			this.Message = message;
-			this.StackTrace = stackTrace;
-		}
-	}
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace TestMonkey
+{
+	public class FailedTest
+	{
+		public string Name;
+		public string Message;
+		public string StackTrace;
+		
+		public FailedTest ()
+		{
+		}
+		
+		public FailedTest (string name, string message, string stackTrace)
+		{
+			this.Name = name;
+			this.Message = message;
+			this.StackTrace = stackTrace;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/tools/nunitreport/Media/style.css
+++ mono-4.6.2.7+dfsg/mcs/tools/nunitreport/Media/style.css
@@ -1,85 +1,85 @@
-body
-{
-	font-family: Arial, Helvetica, sans-serif;
-	margin-top: 0px;
-	margin-right: 0px;
-    margin-left: 0px
-}
-
-.header
-{
-	font-weight: bolder;
-	background-image: url(backbar.png);
-	vertical-align: middle;
-    color: #ffffff;
-    background-repeat: repeat-x;
-    height: 50px
-}
-
-.headerimage
-{
-	margin-left: 5px;
-	float: left
-}
-
-.headertext
-{
-	float: left;
-	margin-left: 15px;
-	width: auto;
-	margin-right: 15px;
-	padding-top: 15px;
-	height: 35px
-}
-
-.legend
-{
-	border: #d7ce28 1px solid;
-	padding: 10px;
-	margin-top: 15px;
-	margin-right: 15px;
-	font-size: small;
-	float: right;
-	width: 150px;
-	height: 136px;
-	background-color: #ffffcc
-}
-
-.maintable
-{
-	margin-top: 20px;
-	margin-right: 20px;
-	margin-left: 20px;
-	font-size: 9pt;
-	width: 740px;
-	height: 1px;
-}
-
-.tableheader
-{
-	font-weight: bold;
-	color: white;
-	background-color: #455372;
-}
-
-.errorrow
-{
-	cursor: pointer;
-}
-
-.errorlist
-{
-	cursor: pointer;
-}
-
-.errordetail
-{
-	cursor: default;
-	font-family: Consolas, Courier New, Monospace;
-}
-
-.tabletotal
-{
-	font-weight: bold;
-	border-top: 1px Black;
+body
+{
+	font-family: Arial, Helvetica, sans-serif;
+	margin-top: 0px;
+	margin-right: 0px;
+    margin-left: 0px
+}
+
+.header
+{
+	font-weight: bolder;
+	background-image: url(backbar.png);
+	vertical-align: middle;
+    color: #ffffff;
+    background-repeat: repeat-x;
+    height: 50px
+}
+
+.headerimage
+{
+	margin-left: 5px;
+	float: left
+}
+
+.headertext
+{
+	float: left;
+	margin-left: 15px;
+	width: auto;
+	margin-right: 15px;
+	padding-top: 15px;
+	height: 35px
+}
+
+.legend
+{
+	border: #d7ce28 1px solid;
+	padding: 10px;
+	margin-top: 15px;
+	margin-right: 15px;
+	font-size: small;
+	float: right;
+	width: 150px;
+	height: 136px;
+	background-color: #ffffcc
+}
+
+.maintable
+{
+	margin-top: 20px;
+	margin-right: 20px;
+	margin-left: 20px;
+	font-size: 9pt;
+	width: 740px;
+	height: 1px;
+}
+
+.tableheader
+{
+	font-weight: bold;
+	color: white;
+	background-color: #455372;
+}
+
+.errorrow
+{
+	cursor: pointer;
+}
+
+.errorlist
+{
+	cursor: pointer;
+}
+
+.errordetail
+{
+	cursor: default;
+	font-family: Consolas, Courier New, Monospace;
+}
+
+.tabletotal
+{
+	font-weight: bold;
+	border-top: 1px Black;
 }
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/mcs/tools/nunitreport/NUnitReport.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/nunitreport/NUnitReport.cs
@@ -1,186 +1,186 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-using System.Xml;
-
-namespace TestMonkey
-{
-	public class NUnitReport
-	{
-		private static string input_dir = string.Empty;
-		private static string output_file = string.Empty;
-		
-		static void Main (string[] args)
-		{
-			if (args.Length != 2) {
-				Console.WriteLine ("Expected Usage:");
-				Console.WriteLine ("  mono NUnitReport.exe input_directory output_file");
-				return;
-			}
-			
-			// Get our input directory and our output file
-			input_dir = args[0];
-			output_file = args[1];
-			
-			// Start the output file
-			StreamWriter sw = new StreamWriter (output_file);
-			StartReport (sw);
-			
-			int assembly = 0;
-			int fail_total = 0;
-			int pass_total = 0;
-			int run_total = 0;
-			
-			// Loop through the inputs, outputting the results to the output file
-			foreach (string file in Directory.GetFiles (input_dir)) {
-				assembly++;
-				
-				Dictionary<string, FailedTest> failed_tests = new Dictionary<string,FailedTest> ();
-				List<string> ignored_tests = new List<string> ();
-				
-				int tests_passed = PopulateFailureTable (file, failed_tests, ignored_tests);
-
-				fail_total += failed_tests.Count;
-				pass_total += tests_passed;
-				run_total += failed_tests.Count + tests_passed;
-				
-				if (failed_tests.Count > 0) {
-					sw.WriteLine ("        <tr class='errorrow' onclick=\"toggle('el{0}')\" onmouseover='highlight(this)' onmouseout='unhighlight(this)'>", assembly);
-					sw.WriteLine (@"            <td><img src='Media/fail.png' /></td>");
-				} else {
-					sw.WriteLine (@"        <tr>");
-					sw.WriteLine (@"            <td><img src='Media/pass.png' /></td>");
-				}
-				
-				sw.WriteLine (@"            <td>{0}</td>", Path.GetFileName (file));
-				sw.WriteLine (@"            <td>{0}</td>", failed_tests.Count);
-				sw.WriteLine (@"            <td>{0}</td>", tests_passed);
-				sw.WriteLine (@"            <td>{0}</td>", tests_passed + failed_tests.Count);
-				sw.WriteLine (@"        </tr>");
-				
-				if (failed_tests.Count == 0)
-					continue;
-
-				sw.WriteLine (@"        <tr id='el{0}' class='errorlist' style='display: none'>", assembly);
-				sw.WriteLine (@"            <td></td>");
-				sw.WriteLine (@"            <td colspan='4'>");
-				sw.WriteLine (@"                <table cellpadding='2' cellspacing='0' width='100%'>");
-					
-				int test_num = 0;
-				
-				foreach (FailedTest ft in failed_tests.Values) {
-					sw.WriteLine ("                    <tr onclick=\"toggle('as{0}ed{1}')\" onmouseover='highlight(this)' onmouseout='unhighlight(this)'>", assembly, test_num);
-					sw.WriteLine (@"                        <td style='width: 17px'><img src='Media/bullet.png' /></td>");
-					sw.WriteLine (@"                        <td>{0}</td>", ft.Name);
-					sw.WriteLine (@"                    </tr>");
-					sw.WriteLine (@"                    <tr id='as{0}ed{1}' class='errordetail' style='display: none'>", assembly, test_num);
-					sw.WriteLine (@"                        <td></td>");
-					sw.WriteLine (@"                        <td>");
-					sw.WriteLine (@"{0}", ft.Message.Trim ().Trim ('\n').Replace ("\n", "<br/>"));
-					if (!string.IsNullOrEmpty (ft.StackTrace.Trim ()))
-						sw.WriteLine (@"<br /><br /><strong>StackTrace:</strong><br />{0}", ft.StackTrace.Replace ("\n", "<br/>"));
-					sw.WriteLine (@"                        </td>");
-					sw.WriteLine (@"                    </tr>");
-					
-					test_num++;
-				}
-
-				sw.WriteLine (@"                </table>");
-				sw.WriteLine (@"            </td>");
-				sw.WriteLine (@"        </tr>");
-			}
-			
-			// Write totals
-			WriteTotals (sw, fail_total, pass_total, run_total);
-			
-			// Finish up the output file
-			FinishReport (sw);
-			sw.Close ();
-			sw.Dispose ();
-		}
-
-		public static int PopulateFailureTable (string filename, Dictionary<string, FailedTest> output, List<string> ignored)
-		{
-			XmlDocument doc = new XmlDocument ();
-			doc.Load (filename);
-
-			return FindTestCases (doc.DocumentElement, output, ignored);
-		}
-
-		public static int FindTestCases (XmlElement xe, Dictionary<string, FailedTest> output, List<string> ignored)
-		{
-			if (xe.Name == "test-case") {
-				OutputFailedTestCase (xe, output, ignored);
-				return 1;
-			}
-
-			int i = 0;
-			
-			foreach (XmlElement child in xe.ChildNodes)
-				i += FindTestCases (child, output, ignored);
-				
-			return i;
-		}
-
-		public static void OutputFailedTestCase (XmlElement xe, Dictionary<string, FailedTest> output, List<string> ignored)
-		{
-			if (xe.GetAttribute ("executed") == "False")
-				ignored.Add (xe.GetAttribute ("name"));
-
-			if (xe.GetAttribute ("success") == "True" || xe.GetAttribute ("executed") == "False")
-				return;
-
-			FailedTest ft = new FailedTest (xe.GetAttribute ("name"), xe["failure"]["message"].InnerText, xe["failure"]["stack-trace"].InnerText);
-			output[ft.Name] = ft;
-		}
-
-		public static void StartReport (StreamWriter sw)
-		{
-			sw.WriteLine (@"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">");
-			sw.WriteLine (@"<html xmlns=""http://www.w3.org/1999/xhtml""><head>");
-			sw.WriteLine (@"<title>Mono: Class Libraries NUnit Test Results</title>");
-			sw.WriteLine (@"<link rel=""stylesheet"" type=""text/css"" href=""Media/style.css"" />");
-			sw.WriteLine (@"<script type=""text/ecmascript"" src=""Media/scripts.js""></script></head>");
-			sw.WriteLine (@"<body>");
-			sw.WriteLine (@"    <div class='header'>");
-			sw.WriteLine (@"        <div class='headerimage'>");
-			sw.WriteLine (@"            <img src='Media/rupert.png' width='48' height='48' />");
-			sw.WriteLine (@"        </div>");
-			sw.WriteLine (@"        <div class='headertext'>Class Libraries NUnit Test Results</div>");
-			sw.WriteLine (@"    </div>");
-			sw.WriteLine (@"    <div class='legend'>");
-			sw.WriteLine (@"        Generated:<br />");
-			sw.WriteLine (@"        {0}<br /><br />", DateTime.Now.ToString ());
-			sw.WriteLine (@"        Click on failure row for more details.<br /><br />");
-			sw.WriteLine (@"        Icons courtesy of <a href='http://www.famfamfam.com/lab/icons/silk'>famfamfam</a>");
-			sw.WriteLine (@"    </div>");
-			sw.WriteLine (@"    <table cellpadding='2' cellspacing='0' class='maintable'>");
-			sw.WriteLine (@"        <tr class='tableheader'>");
-			sw.WriteLine (@"            <td style='width: 17px'></td>");
-			sw.WriteLine (@"            <td>Tested Assembly</td>");
-			sw.WriteLine (@"            <td>Failed</td>");
-			sw.WriteLine (@"            <td>Passed</td>");
-			sw.WriteLine (@"            <td>Run</td>");
-			sw.WriteLine (@"        </tr>");
-		}
-
-		public static void WriteTotals (StreamWriter sw, int failed, int passed, int run)
-		{
-			sw.WriteLine (@"        <tr class='tabletotal'>");
-			sw.WriteLine (@"            <td style='width: 17px'></td>");
-			sw.WriteLine (@"            <td>Totals</td>");
-			sw.WriteLine (@"            <td>{0}</td>", failed);
-			sw.WriteLine (@"            <td>{0}</td>", passed);
-			sw.WriteLine (@"            <td>{0}</td>", run);
-			sw.WriteLine (@"        </tr>");
-		}
-		
-		public static void FinishReport (StreamWriter sw)
-		{
-			sw.WriteLine (@"    </table>");
-			sw.WriteLine (@"</body>");
-			sw.WriteLine (@"</html>");
-		}
-	}
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Xml;
+
+namespace TestMonkey
+{
+	public class NUnitReport
+	{
+		private static string input_dir = string.Empty;
+		private static string output_file = string.Empty;
+		
+		static void Main (string[] args)
+		{
+			if (args.Length != 2) {
+				Console.WriteLine ("Expected Usage:");
+				Console.WriteLine ("  mono NUnitReport.exe input_directory output_file");
+				return;
+			}
+			
+			// Get our input directory and our output file
+			input_dir = args[0];
+			output_file = args[1];
+			
+			// Start the output file
+			StreamWriter sw = new StreamWriter (output_file);
+			StartReport (sw);
+			
+			int assembly = 0;
+			int fail_total = 0;
+			int pass_total = 0;
+			int run_total = 0;
+			
+			// Loop through the inputs, outputting the results to the output file
+			foreach (string file in Directory.GetFiles (input_dir)) {
+				assembly++;
+				
+				Dictionary<string, FailedTest> failed_tests = new Dictionary<string,FailedTest> ();
+				List<string> ignored_tests = new List<string> ();
+				
+				int tests_passed = PopulateFailureTable (file, failed_tests, ignored_tests);
+
+				fail_total += failed_tests.Count;
+				pass_total += tests_passed;
+				run_total += failed_tests.Count + tests_passed;
+				
+				if (failed_tests.Count > 0) {
+					sw.WriteLine ("        <tr class='errorrow' onclick=\"toggle('el{0}')\" onmouseover='highlight(this)' onmouseout='unhighlight(this)'>", assembly);
+					sw.WriteLine (@"            <td><img src='Media/fail.png' /></td>");
+				} else {
+					sw.WriteLine (@"        <tr>");
+					sw.WriteLine (@"            <td><img src='Media/pass.png' /></td>");
+				}
+				
+				sw.WriteLine (@"            <td>{0}</td>", Path.GetFileName (file));
+				sw.WriteLine (@"            <td>{0}</td>", failed_tests.Count);
+				sw.WriteLine (@"            <td>{0}</td>", tests_passed);
+				sw.WriteLine (@"            <td>{0}</td>", tests_passed + failed_tests.Count);
+				sw.WriteLine (@"        </tr>");
+				
+				if (failed_tests.Count == 0)
+					continue;
+
+				sw.WriteLine (@"        <tr id='el{0}' class='errorlist' style='display: none'>", assembly);
+				sw.WriteLine (@"            <td></td>");
+				sw.WriteLine (@"            <td colspan='4'>");
+				sw.WriteLine (@"                <table cellpadding='2' cellspacing='0' width='100%'>");
+					
+				int test_num = 0;
+				
+				foreach (FailedTest ft in failed_tests.Values) {
+					sw.WriteLine ("                    <tr onclick=\"toggle('as{0}ed{1}')\" onmouseover='highlight(this)' onmouseout='unhighlight(this)'>", assembly, test_num);
+					sw.WriteLine (@"                        <td style='width: 17px'><img src='Media/bullet.png' /></td>");
+					sw.WriteLine (@"                        <td>{0}</td>", ft.Name);
+					sw.WriteLine (@"                    </tr>");
+					sw.WriteLine (@"                    <tr id='as{0}ed{1}' class='errordetail' style='display: none'>", assembly, test_num);
+					sw.WriteLine (@"                        <td></td>");
+					sw.WriteLine (@"                        <td>");
+					sw.WriteLine (@"{0}", ft.Message.Trim ().Trim ('\n').Replace ("\n", "<br/>"));
+					if (!string.IsNullOrEmpty (ft.StackTrace.Trim ()))
+						sw.WriteLine (@"<br /><br /><strong>StackTrace:</strong><br />{0}", ft.StackTrace.Replace ("\n", "<br/>"));
+					sw.WriteLine (@"                        </td>");
+					sw.WriteLine (@"                    </tr>");
+					
+					test_num++;
+				}
+
+				sw.WriteLine (@"                </table>");
+				sw.WriteLine (@"            </td>");
+				sw.WriteLine (@"        </tr>");
+			}
+			
+			// Write totals
+			WriteTotals (sw, fail_total, pass_total, run_total);
+			
+			// Finish up the output file
+			FinishReport (sw);
+			sw.Close ();
+			sw.Dispose ();
+		}
+
+		public static int PopulateFailureTable (string filename, Dictionary<string, FailedTest> output, List<string> ignored)
+		{
+			XmlDocument doc = new XmlDocument ();
+			doc.Load (filename);
+
+			return FindTestCases (doc.DocumentElement, output, ignored);
+		}
+
+		public static int FindTestCases (XmlElement xe, Dictionary<string, FailedTest> output, List<string> ignored)
+		{
+			if (xe.Name == "test-case") {
+				OutputFailedTestCase (xe, output, ignored);
+				return 1;
+			}
+
+			int i = 0;
+			
+			foreach (XmlElement child in xe.ChildNodes)
+				i += FindTestCases (child, output, ignored);
+				
+			return i;
+		}
+
+		public static void OutputFailedTestCase (XmlElement xe, Dictionary<string, FailedTest> output, List<string> ignored)
+		{
+			if (xe.GetAttribute ("executed") == "False")
+				ignored.Add (xe.GetAttribute ("name"));
+
+			if (xe.GetAttribute ("success") == "True" || xe.GetAttribute ("executed") == "False")
+				return;
+
+			FailedTest ft = new FailedTest (xe.GetAttribute ("name"), xe["failure"]["message"].InnerText, xe["failure"]["stack-trace"].InnerText);
+			output[ft.Name] = ft;
+		}
+
+		public static void StartReport (StreamWriter sw)
+		{
+			sw.WriteLine (@"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">");
+			sw.WriteLine (@"<html xmlns=""http://www.w3.org/1999/xhtml""><head>");
+			sw.WriteLine (@"<title>Mono: Class Libraries NUnit Test Results</title>");
+			sw.WriteLine (@"<link rel=""stylesheet"" type=""text/css"" href=""Media/style.css"" />");
+			sw.WriteLine (@"<script type=""text/ecmascript"" src=""Media/scripts.js""></script></head>");
+			sw.WriteLine (@"<body>");
+			sw.WriteLine (@"    <div class='header'>");
+			sw.WriteLine (@"        <div class='headerimage'>");
+			sw.WriteLine (@"            <img src='Media/rupert.png' width='48' height='48' />");
+			sw.WriteLine (@"        </div>");
+			sw.WriteLine (@"        <div class='headertext'>Class Libraries NUnit Test Results</div>");
+			sw.WriteLine (@"    </div>");
+			sw.WriteLine (@"    <div class='legend'>");
+			sw.WriteLine (@"        Generated:<br />");
+			sw.WriteLine (@"        {0}<br /><br />", DateTime.Now.ToString ());
+			sw.WriteLine (@"        Click on failure row for more details.<br /><br />");
+			sw.WriteLine (@"        Icons courtesy of <a href='http://www.famfamfam.com/lab/icons/silk'>famfamfam</a>");
+			sw.WriteLine (@"    </div>");
+			sw.WriteLine (@"    <table cellpadding='2' cellspacing='0' class='maintable'>");
+			sw.WriteLine (@"        <tr class='tableheader'>");
+			sw.WriteLine (@"            <td style='width: 17px'></td>");
+			sw.WriteLine (@"            <td>Tested Assembly</td>");
+			sw.WriteLine (@"            <td>Failed</td>");
+			sw.WriteLine (@"            <td>Passed</td>");
+			sw.WriteLine (@"            <td>Run</td>");
+			sw.WriteLine (@"        </tr>");
+		}
+
+		public static void WriteTotals (StreamWriter sw, int failed, int passed, int run)
+		{
+			sw.WriteLine (@"        <tr class='tabletotal'>");
+			sw.WriteLine (@"            <td style='width: 17px'></td>");
+			sw.WriteLine (@"            <td>Totals</td>");
+			sw.WriteLine (@"            <td>{0}</td>", failed);
+			sw.WriteLine (@"            <td>{0}</td>", passed);
+			sw.WriteLine (@"            <td>{0}</td>", run);
+			sw.WriteLine (@"        </tr>");
+		}
+		
+		public static void FinishReport (StreamWriter sw)
+		{
+			sw.WriteLine (@"    </table>");
+			sw.WriteLine (@"</body>");
+			sw.WriteLine (@"</html>");
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mcs/tools/sqlmetal/AssemblyInfo.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/sqlmetal/AssemblyInfo.cs
@@ -1,58 +1,58 @@
-//
-// AssemblyInfo.cs
-//
-// Author:
-//   Jonathan Pryor  <jpryor@novell.com>
-//
-// Copyright (C) 2009 Novell, Inc.
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-using DbLinq.Factory;
-
-[assembly: AssemblyTitle ("SqlMetal")]
-[assembly: AssemblyDescription ("System.Data.Linq code generator")]
-[assembly: AssemblyDefaultAlias ("SqlMetal.exe")]
-
-[assembly: CLSCompliant (true)]
-
-// Unit tests needs access to the DbLinq internals
-[assembly: InternalsVisibleTo("sqlmetal_test_net_2_0, PublicKey=" +
-"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
-"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
-"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
-"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
-"2309259f")]
-[assembly: InternalsVisibleTo("sqlmetal_test_net_4_0, PublicKey=" +
-"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
-"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
-"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
-"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
-"2309259f")]
-
-[assembly: DbLinq]
-
+//
+// AssemblyInfo.cs
+//
+// Author:
+//   Jonathan Pryor  <jpryor@novell.com>
+//
+// Copyright (C) 2009 Novell, Inc.
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+using DbLinq.Factory;
+
+[assembly: AssemblyTitle ("SqlMetal")]
+[assembly: AssemblyDescription ("System.Data.Linq code generator")]
+[assembly: AssemblyDefaultAlias ("SqlMetal.exe")]
+
+[assembly: CLSCompliant (true)]
+
+// Unit tests needs access to the DbLinq internals
+[assembly: InternalsVisibleTo("sqlmetal_test_net_2_0, PublicKey=" +
+"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
+"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
+"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
+"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
+"2309259f")]
+[assembly: InternalsVisibleTo("sqlmetal_test_net_4_0, PublicKey=" +
+"0024000004800000940000000602000000240000525341310004000001000100c5753d8c47f400" +
+"83f549016a5711238ac8ec297605abccd3dc4b6d0f280b4764eb2cc58ec4e37831edad7e7a07b8" +
+"fe4a9cbb059374c0cc047aa28839fed7176761813caf6a2ffa0bff9afb50ead56dd3f56186a663" +
+"962a12b830c2a70eb70ec77823eb5750e5bdef9e01d097c30b5c5463c3d07d3472b58e4c02f279" +
+"2309259f")]
+
+[assembly: DbLinq]
+
--- mono-4.6.2.7+dfsg.orig/mcs/tools/sqlmetal/sqlmetal.exe.config
+++ mono-4.6.2.7+dfsg/mcs/tools/sqlmetal/sqlmetal.exe.config
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <configSections>
-    <section name="providers" type="DbMetal.Configuration.ProvidersSection, sqlmetal" />
-  </configSections>
-  <connectionStrings>
-    <add name="DbMetal.Properties.Settings.TempOneConnectionString"
-      connectionString="Data Source=.\sqlexpress;Initial Catalog=TempOne;Integrated Security=True"
-      providerName="System.Data.SqlClient" />
-  </connectionStrings>
-  <appSettings>
-    <add key="ClientSettingsProvider.ServiceUri" value="" />
-  </appSettings>
-  <providers>
-    <providers>
-      <provider name="MySQL" dbLinqSchemaLoader="DbLinq.MySql.MySqlSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="ByteFX.Data.MySqlClient.MySqlConnection, ByteFX.Data" />
-      <provider name="Oracle" dbLinqSchemaLoader="DbLinq.Oracle.OracleSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="System.Data.OracleClient.OracleConnection, System.Data.OracleClient" />
-      <provider name="OracleODP" dbLinqSchemaLoader="DbLinq.Oracle.OracleSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess" />
-      <provider name="PostgreSQL" dbLinqSchemaLoader="DbLinq.PostgreSql.PgsqlSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Npgsql.NpgsqlConnection, Npgsql" />
-      <provider name="SQLite" dbLinqSchemaLoader="DbLinq.Sqlite.SqliteSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite" />
-      <provider name="SqlServer" dbLinqSchemaLoader="DbLinq.SqlServer.SqlServerSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="System.Data.SqlClient.SqlConnection, System.Data" />
-      <provider name="Ingres" dbLinqSchemaLoader="DbLinq.Ingres.IngresSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Ingres.Client.IngresConnection, Ingres.Client" />
-      <provider name="Firebird" dbLinqSchemaLoader="DbLinq.Firebird.FirebirdSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient" />
-    </providers>
-  </providers>
-  <system.web>
-    <membership defaultProvider="ClientAuthenticationMembershipProvider">
-      <providers>
-        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
-      </providers>
-    </membership>
-    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
-      <providers>
-        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
-      </providers>
-    </roleManager>
-  </system.web>
-</configuration>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <configSections>
+    <section name="providers" type="DbMetal.Configuration.ProvidersSection, sqlmetal" />
+  </configSections>
+  <connectionStrings>
+    <add name="DbMetal.Properties.Settings.TempOneConnectionString"
+      connectionString="Data Source=.\sqlexpress;Initial Catalog=TempOne;Integrated Security=True"
+      providerName="System.Data.SqlClient" />
+  </connectionStrings>
+  <appSettings>
+    <add key="ClientSettingsProvider.ServiceUri" value="" />
+  </appSettings>
+  <providers>
+    <providers>
+      <provider name="MySQL" dbLinqSchemaLoader="DbLinq.MySql.MySqlSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="ByteFX.Data.MySqlClient.MySqlConnection, ByteFX.Data" />
+      <provider name="Oracle" dbLinqSchemaLoader="DbLinq.Oracle.OracleSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="System.Data.OracleClient.OracleConnection, System.Data.OracleClient" />
+      <provider name="OracleODP" dbLinqSchemaLoader="DbLinq.Oracle.OracleSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess" />
+      <provider name="PostgreSQL" dbLinqSchemaLoader="DbLinq.PostgreSql.PgsqlSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Npgsql.NpgsqlConnection, Npgsql" />
+      <provider name="SQLite" dbLinqSchemaLoader="DbLinq.Sqlite.SqliteSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite" />
+      <provider name="SqlServer" dbLinqSchemaLoader="DbLinq.SqlServer.SqlServerSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="System.Data.SqlClient.SqlConnection, System.Data" />
+      <provider name="Ingres" dbLinqSchemaLoader="DbLinq.Ingres.IngresSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="Ingres.Client.IngresConnection, Ingres.Client" />
+      <provider name="Firebird" dbLinqSchemaLoader="DbLinq.Firebird.FirebirdSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient" />
+    </providers>
+  </providers>
+  <system.web>
+    <membership defaultProvider="ClientAuthenticationMembershipProvider">
+      <providers>
+        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
+      </providers>
+    </membership>
+    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
+      <providers>
+        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
+      </providers>
+    </roleManager>
+  </system.web>
+</configuration>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/wsdl/MonoWSDL2.cs
+++ mono-4.6.2.7+dfsg/mcs/tools/wsdl/MonoWSDL2.cs
@@ -1,550 +1,550 @@
-///
-/// MonoWSDL.cs -- a WSDL to proxy code generator.
-///
-/// Author: Erik LeBel (eriklebel@yahoo.ca)
-/// 		Lluis Sanchez (lluis@novell.com)
-///
-/// Copyright (C) 2003, Erik LeBel,
-///
-
-
-using System;
-using System.Xml;
-using System.Xml.Serialization;
-using System.Xml.Schema;
-using System.Collections;
-using System.Collections.Specialized;
-using System.CodeDom;
-using System.CodeDom.Compiler;
-using System.IO;
-using System.Net;
-using System.Web.Services.Description;
-using System.Web.Services.Discovery;
-using System.Web.Services;
-
-using Microsoft.CSharp;
-
-namespace Mono.WebServices
-{
-	public class Driver
-	{
-		string ProductId = "Web Services Description Language Utility\nMono Framework v" + Environment.Version;
-		const string UsageMessage = 
-			"wsdl [options] {path | URL} {path | URL} ...\n\n"
-			+ "   -d, -domain:domain           Domain of username for server authentication.\n"
-			+ "   -l, -language:language       Language of generated code. Allowed CS (default)\n"
-			+ "                                and VB. You can also specify the fully qualified\n"
-			+ "                                name of a class that implements the\n"
-			+ "                                System.CodeDom.Compiler.CodeDomProvider Class.\n"
-			+ "   -n, -namespace:ns            The namespace of the generated code, default\n"
-			+ "                                namespace if none.\n"
-			+ "   -nologo                      Surpress the startup logo.\n"
-			+ "   -o, -out:filename            The target file for generated code.\n"
-			+ "   -p, -password:pwd            Password used to contact the server.\n"
-			+ "   -protocol:protocol           Protocol to implement. Allowed: Soap (default),\n"
-			+ "                                HttpGet or HttpPost.\n"
-			+ "   -fields                      Generate fields instead of properties in data\n"
-			+ "                                classes.\n"
-			+ "   -server                      Generate server instead of client proxy code.\n"
-			+ "   -u, -username:username       Username used to contact the server.\n"
-			+ "   -proxy:url                   Address of the proxy.\n"
-			+ "   -pu, -proxyusername:username Username used to contact the proxy.\n"
-			+ "   -pp, -proxypassword:pwd      Password used to contact the proxy.\n"
-			+ "   -pd, -proxydomain:domain     Domain of username for proxy authentication.\n"
-			+ "   -urlkey, -appsettingurlkey:key Configuration key that contains the default\n"
-			+ "                                url for the generated WS proxy.\n"
-			+ "   -baseurl, -appsettingbaseurl:url Base url to use when constructing the\n"
-			+ "                                service url.\n"
-			+ "   -sample:[binding/]operation  Display a sample SOAP request and response.\n"
-			+ "   -?                           Display this message\n"
-			+ "\n"
-			+ "Options can be of the forms  -option, --option or /option\n";
-		
-		ArrayList descriptions = new ArrayList ();
-		ArrayList schemas = new ArrayList ();
-		
-		bool noLogo;
-		bool help;
-		string sampleSoap;
-		
-		string proxyAddress;
-		string proxyDomain;
-		string proxyPassword;
-		string proxyUsername;
-		string username;
-		string password;
-		string domain;
-		
-		string applicationSignature;
-		string appSettingURLKey;
-		string appSettingBaseURL;
-		string language = "CS";
-		string ns;
-		string outFilename;
-		string protocol = "Soap";
-		ServiceDescriptionImportStyle style;
-		CodeGenerationOptions options = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;
-		bool verbose;
-		
-		StringCollection urls = new StringCollection ();
-
-		///
-		/// <summary>
-		///	Application entry point.
-		/// </summary>
-		///
-		public static int Main(string[] args)
-		{
-			Driver d = new Driver();
-			return d.Run(args);
-		}
-		
-		Driver()
-		{
-			applicationSignature = ProductId;
-		}
-		
-		int Run (string[] args)
-		{
-			try
-			{
-				// parse command line arguments
-				foreach (string argument in args)
-					ImportArgument(argument);
-				
-				if (noLogo == false)
-					Console.WriteLine(ProductId);
-				
-				if (help || urls.Count == 0)
-				{
-					Console.WriteLine(UsageMessage);
-					return 0;
-				}
-				
-				CodeCompileUnit codeUnit = new CodeCompileUnit();
-				CodeNamespace proxyCode = GetCodeNamespace();
-				codeUnit.Namespaces.Add (proxyCode);
-				
-				WebReferenceCollection references = new WebReferenceCollection ();
-
-				DiscoveryClientProtocol dcc = CreateClient ();
-
-				foreach (string murl in urls) 
-				{
-
-					string url = murl;
-					if (!url.StartsWith ("http://") && !url.StartsWith ("https://") && !url.StartsWith ("file://"))
-						url = new Uri (Path.GetFullPath (url)).ToString ();
-
-					dcc.DiscoverAny (url);
-					dcc.ResolveAll ();
-					
-				}
-				
-				WebReference reference = new WebReference (dcc.Documents, proxyCode, protocol, appSettingURLKey, appSettingBaseURL);
-				references.Add (reference);
-				
-				if (sampleSoap != null)
-					ConsoleSampleGenerator.Generate (descriptions, schemas, sampleSoap, protocol);
-				
-				if (sampleSoap != null)
-					return 0;
-					
-				// generate the code
-				GenerateCode (references, codeUnit);
-				return 0;
-			}
-			catch (Exception exception)
-			{
-				Console.WriteLine("Error: {0}", exception.Message);
-				
-				// Supress this except for when debug is enabled
-				Console.WriteLine("Stack:\n {0}", exception.StackTrace);
-				return 2;
-			}
-		}
-		
-		///
-		/// <summary>
-		///	Generate code for the specified ServiceDescription.
-		/// </summary>
-		///
-		public bool GenerateCode (WebReferenceCollection references, CodeCompileUnit codeUnit)
-		{
-			bool hasWarnings = false;
-			
-			CodeDomProvider provider = GetProvider();
-				
-			StringCollection validationWarnings;
-			WebReferenceOptions opts = new WebReferenceOptions ();
-			opts.CodeGenerationOptions = options;
-			opts.Style = style;
-			opts.Verbose = verbose;
-			validationWarnings = ServiceDescriptionImporter.GenerateWebReferences (references, provider, codeUnit, opts);
-			
-			for (int n=0; n<references.Count; n++)
-			{
-				WebReference wr  = references [n];
-				
-				BasicProfileViolationCollection violations = new BasicProfileViolationCollection ();
-				if (String.Compare (protocol, "SOAP", StringComparison.OrdinalIgnoreCase) == 0 && !WebServicesInteroperability.CheckConformance (WsiProfiles.BasicProfile1_1, wr, violations)) {
-					wr.Warnings |= ServiceDescriptionImportWarnings.WsiConformance;
-				}
-				
-				if (wr.Warnings != 0)
-				{
-					if (!hasWarnings) {
-						WriteText ("", 0, 0);
-						WriteText ("There were some warnings while generating the code:", 0, 0);
-					}
-					
-					WriteText ("", 0, 0);
-					WriteText (urls[n], 2, 2);
-					
-					if ((wr.Warnings & ServiceDescriptionImportWarnings.WsiConformance) > 0) {
-						WriteText ("- This web reference does not conform to WS-I Basic Profile v1.1", 4, 6); 
-						foreach (BasicProfileViolation vio in violations) {
-							WriteText (vio.NormativeStatement + ": " + vio.Details, 8, 8);
-							foreach (string ele in vio.Elements)
-								WriteText ("* " + ele, 10, 12);
-						}
-					}
-					
-					if ((wr.Warnings & ServiceDescriptionImportWarnings.NoCodeGenerated) > 0)
-						WriteText ("- WARNING: No proxy class was generated", 4, 6); 
-					if ((wr.Warnings & ServiceDescriptionImportWarnings.NoMethodsGenerated) > 0)
-						WriteText ("- WARNING: The proxy class generated includes no methods", 4, 6);
-					if ((wr.Warnings & ServiceDescriptionImportWarnings.OptionalExtensionsIgnored) > 0)
-						WriteText ("- WARNING: At least one optional extension has been ignored", 4, 6);
-					if ((wr.Warnings & ServiceDescriptionImportWarnings.RequiredExtensionsIgnored) > 0)
-						WriteText ("- WARNING: At least one necessary extension has been ignored", 4, 6);
-					if ((wr.Warnings & ServiceDescriptionImportWarnings.UnsupportedBindingsIgnored) > 0)
-						WriteText ("- WARNING: At least one binding is of an unsupported type and has been ignored", 4, 6);
-					if ((wr.Warnings & ServiceDescriptionImportWarnings.UnsupportedOperationsIgnored) > 0)
-						WriteText ("- WARNING: At least one operation is of an unsupported type and has been ignored", 4, 6);
-						
-					hasWarnings = true;
-				}
-			}
-			
-			if (hasWarnings) WriteText ("",0,0);
-				
-			string filename = outFilename;
-			bool hasBindings = false;
-			
-			foreach (object doc in references[0].Documents.Values)
-			{
-				ServiceDescription desc = doc as ServiceDescription;
-				if (desc == null) continue;
-				
-				if (desc.Services.Count > 0 && filename == null)
-					filename = desc.Services[0].Name + "." + provider.FileExtension;
-					
-				if (desc.Bindings.Count > 0 || desc.Services.Count > 0)
-					hasBindings = true;
-			}
-			
-			if (filename == null)
-				filename = "output." + provider.FileExtension;
-			
-			if (hasBindings) {
-				WriteText ("Writing file '" + filename + "'", 0, 0);
-				StreamWriter writer = new StreamWriter(filename);
-				
-				CodeGeneratorOptions compilerOptions = new CodeGeneratorOptions();
-				provider.GenerateCodeFromCompileUnit (codeUnit, writer, compilerOptions);
-				writer.Close();
-			}
-			
-			return hasWarnings;
-		}
-		
-		///
-		/// <summary>
-		///	Create the CodeNamespace with the generator's signature commented in.
-		/// </summary>
-		///
-		CodeNamespace GetCodeNamespace()
-		{
-			CodeNamespace codeNamespace = new CodeNamespace(ns);
-			
-			if (applicationSignature != null)
-			{
-				codeNamespace.Comments.Add(new CodeCommentStatement("\n This source code was auto-generated by " + applicationSignature + "\n"));
-			}
-			
-			return codeNamespace;
-		}
-		
-		///
-		/// <summary/>
-		///
-		void WriteCodeUnit(CodeCompileUnit codeUnit, string serviceName)
-		{
-			CodeDomProvider provider = GetProvider();
-			ICodeGenerator generator = provider.CreateGenerator();
-			CodeGeneratorOptions options = new CodeGeneratorOptions();
-			
-			string filename;
-			if (outFilename != null)
-				filename = outFilename;
-			else
-				filename = serviceName	+ "." + provider.FileExtension;
-			
-			Console.WriteLine ("Writing file '{0}'", filename);
-			StreamWriter writer = new StreamWriter(filename);
-			generator.GenerateCodeFromCompileUnit(codeUnit, writer, options);
-			writer.Close();
-		}
-		
-		///
-		/// <summary>
-		///	Fetch the Code Provider for the language specified by the 'language' members.
-		/// </summary>
-		///
-		private CodeDomProvider GetProvider()
-		{
-			CodeDomProvider provider;
-			Type type;
-			
-			switch (language.ToUpper ()) {
-			case "CS":
-				provider = new CSharpCodeProvider ();
-				break;
-			case "VB":
-				provider = new Microsoft.VisualBasic.VBCodeProvider ();
-				break;
-			case "BOO":
-				type = Type.GetType("Boo.Lang.CodeDom.BooCodeProvider, Boo.Lang.CodeDom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67");
-				if (type != null){
-					return (CodeDomProvider) Activator.CreateInstance (type);
-				}
-				throw new Exception ("Boo.Lang.CodeDom.BooCodeProvider not available");
-				
-			default:
-				type = Type.GetType(language);
-				if (type != null) {
-					return (CodeDomProvider) Activator.CreateInstance (type);
-				}	
-				throw new Exception ("Unknown language");
-			}
-			return provider;
-		}
-		
-
-
-		///
-		/// <summary>
-		///	Interperet the command-line arguments and configure the relavent components.
-		/// </summary>
-		///		
-		void ImportArgument(string argument)
-		{
-			string optionValuePair;
-			
-			if (argument.StartsWith("--"))
-			{
-				optionValuePair = argument.Substring(2);
-			}
-			else if (argument.StartsWith("/") || argument.StartsWith("-"))
-			{
-				optionValuePair = argument.Substring(1);
-			}
-			else
-			{
-				urls.Add (argument);
-				return;
-			}
-			
-			string option;
-			string value;
-			
-			int indexOfEquals = optionValuePair.IndexOf(':');
-			if (indexOfEquals > 0)
-			{
-				option = optionValuePair.Substring(0, indexOfEquals);
-				value = optionValuePair.Substring(indexOfEquals + 1);
-			}
-			else
-			{
-				option = optionValuePair;
-				value = null;
-			}
-			
-			switch (option)
-			{
-				case "appsettingurlkey":
-				case "urlkey":
-				    appSettingURLKey = value;
-				    break;
-
-				case "appsettingbaseurl":
-				case "baseurl":
-				    appSettingBaseURL = value;
-				    break;
-
-				case "d":
-				case "domain":
-				    domain = value;
-				    break;
-
-				case "l":
-				case "language":
-				    language = value;
-				    break;
-
-				case "n":
-				case "namespace":
-				    ns = value;
-				    break;
-
-				case "nologo":
-				    noLogo = true;
-				    break;
-
-				case "o":
-				case "out":
-				    outFilename = value;
-				    break;
-
-				case "p":
-				case "password":
-				    password = value;
-				    break;
-
-				case "protocol":
-				    protocol = value;
-				    break;
-
-				case "proxy":
-				    proxyAddress = value;
-				    break;
-
-				case "proxydomain":
-				case "pd":
-				    proxyDomain = value;
-				    break;
-
-				case "proxypassword":
-				case "pp":
-				    proxyPassword = value;
-				    break;
-
-				case "proxyusername":
-				case "pu":
-				    proxyUsername = value;
-				    break;
-
-				case "server":
-				    style = ServiceDescriptionImportStyle.Server;
-				    break;
-
-				case "u":
-				case "username":
-				    username = value;
-				    break;
-					
-				case "verbose":
-					verbose = true;
-					break;
-					
-				case "fields":
-					options &= ~CodeGenerationOptions.GenerateProperties;
-					break;
-					
-				case "sample":
-					sampleSoap = value;
-					break;
-
-				case "?":
-				    help = true;
-				    break;
-
-				default:
-					if (argument.StartsWith ("/") && argument.IndexOfAny (Path.InvalidPathChars) == -1) {
-						urls.Add (argument);
-						break;
-					}
-					else
-					    throw new Exception("Unknown option " + option);
-			}
-		}
-		
-		DiscoveryClientProtocol CreateClient ()
-		{
-			DiscoveryClientProtocol dcc = new DiscoveryClientProtocol ();
-			
-			if (username != null || password != null || domain != null)
-			{
-				NetworkCredential credentials = new NetworkCredential();
-				
-				if (username != null)
-					credentials.UserName = username;
-				
-				if (password != null)
-					credentials.Password = password;
-				
-				if (domain != null)
-					credentials.Domain = domain;
-				
-				dcc.Credentials = credentials;
-			}
-			
-			if (proxyAddress != null)
-			{
-				WebProxy proxy = new WebProxy (proxyAddress);
-				if (proxyUsername != null || proxyPassword != null || proxyDomain != null)
-				{
-					NetworkCredential credentials = new NetworkCredential();
-					
-					if (proxyUsername != null)
-						credentials.UserName = proxyUsername;
-					
-					if (proxyPassword != null)
-						credentials.Password = proxyPassword;
-					
-					if (proxyDomain != null)
-						credentials.Domain = proxyDomain;
-					
-					proxy.Credentials = credentials;
-				}
-			}			
-			
-			return dcc;
-		}
-		
-		static void WriteText (string text, int initialLeftMargin, int leftMargin)
-		{
-			int n = 0;
-			int margin = initialLeftMargin;
-			int maxCols = 80;
-			
-			if (text == "") {
-				Console.WriteLine ();
-				return;
-			}
-			
-			while (n < text.Length)
-			{
-				int col = margin;
-				int lastWhite = -1;
-				int sn = n;
-				while (col < maxCols && n < text.Length) {
-					if (char.IsWhiteSpace (text[n]))
-						lastWhite = n;
-					col++;
-					n++;
-				}
-				
-				if (lastWhite == -1 || col < maxCols)
-					lastWhite = n;
-				else if (col >= maxCols)
-					n = lastWhite + 1;
-				
-				Console.WriteLine (new String (' ', margin) + text.Substring (sn, lastWhite - sn));
-				margin = leftMargin;
-			}
-		}
-	}
-}
-
+///
+/// MonoWSDL.cs -- a WSDL to proxy code generator.
+///
+/// Author: Erik LeBel (eriklebel@yahoo.ca)
+/// 		Lluis Sanchez (lluis@novell.com)
+///
+/// Copyright (C) 2003, Erik LeBel,
+///
+
+
+using System;
+using System.Xml;
+using System.Xml.Serialization;
+using System.Xml.Schema;
+using System.Collections;
+using System.Collections.Specialized;
+using System.CodeDom;
+using System.CodeDom.Compiler;
+using System.IO;
+using System.Net;
+using System.Web.Services.Description;
+using System.Web.Services.Discovery;
+using System.Web.Services;
+
+using Microsoft.CSharp;
+
+namespace Mono.WebServices
+{
+	public class Driver
+	{
+		string ProductId = "Web Services Description Language Utility\nMono Framework v" + Environment.Version;
+		const string UsageMessage = 
+			"wsdl [options] {path | URL} {path | URL} ...\n\n"
+			+ "   -d, -domain:domain           Domain of username for server authentication.\n"
+			+ "   -l, -language:language       Language of generated code. Allowed CS (default)\n"
+			+ "                                and VB. You can also specify the fully qualified\n"
+			+ "                                name of a class that implements the\n"
+			+ "                                System.CodeDom.Compiler.CodeDomProvider Class.\n"
+			+ "   -n, -namespace:ns            The namespace of the generated code, default\n"
+			+ "                                namespace if none.\n"
+			+ "   -nologo                      Surpress the startup logo.\n"
+			+ "   -o, -out:filename            The target file for generated code.\n"
+			+ "   -p, -password:pwd            Password used to contact the server.\n"
+			+ "   -protocol:protocol           Protocol to implement. Allowed: Soap (default),\n"
+			+ "                                HttpGet or HttpPost.\n"
+			+ "   -fields                      Generate fields instead of properties in data\n"
+			+ "                                classes.\n"
+			+ "   -server                      Generate server instead of client proxy code.\n"
+			+ "   -u, -username:username       Username used to contact the server.\n"
+			+ "   -proxy:url                   Address of the proxy.\n"
+			+ "   -pu, -proxyusername:username Username used to contact the proxy.\n"
+			+ "   -pp, -proxypassword:pwd      Password used to contact the proxy.\n"
+			+ "   -pd, -proxydomain:domain     Domain of username for proxy authentication.\n"
+			+ "   -urlkey, -appsettingurlkey:key Configuration key that contains the default\n"
+			+ "                                url for the generated WS proxy.\n"
+			+ "   -baseurl, -appsettingbaseurl:url Base url to use when constructing the\n"
+			+ "                                service url.\n"
+			+ "   -sample:[binding/]operation  Display a sample SOAP request and response.\n"
+			+ "   -?                           Display this message\n"
+			+ "\n"
+			+ "Options can be of the forms  -option, --option or /option\n";
+		
+		ArrayList descriptions = new ArrayList ();
+		ArrayList schemas = new ArrayList ();
+		
+		bool noLogo;
+		bool help;
+		string sampleSoap;
+		
+		string proxyAddress;
+		string proxyDomain;
+		string proxyPassword;
+		string proxyUsername;
+		string username;
+		string password;
+		string domain;
+		
+		string applicationSignature;
+		string appSettingURLKey;
+		string appSettingBaseURL;
+		string language = "CS";
+		string ns;
+		string outFilename;
+		string protocol = "Soap";
+		ServiceDescriptionImportStyle style;
+		CodeGenerationOptions options = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateNewAsync;
+		bool verbose;
+		
+		StringCollection urls = new StringCollection ();
+
+		///
+		/// <summary>
+		///	Application entry point.
+		/// </summary>
+		///
+		public static int Main(string[] args)
+		{
+			Driver d = new Driver();
+			return d.Run(args);
+		}
+		
+		Driver()
+		{
+			applicationSignature = ProductId;
+		}
+		
+		int Run (string[] args)
+		{
+			try
+			{
+				// parse command line arguments
+				foreach (string argument in args)
+					ImportArgument(argument);
+				
+				if (noLogo == false)
+					Console.WriteLine(ProductId);
+				
+				if (help || urls.Count == 0)
+				{
+					Console.WriteLine(UsageMessage);
+					return 0;
+				}
+				
+				CodeCompileUnit codeUnit = new CodeCompileUnit();
+				CodeNamespace proxyCode = GetCodeNamespace();
+				codeUnit.Namespaces.Add (proxyCode);
+				
+				WebReferenceCollection references = new WebReferenceCollection ();
+
+				DiscoveryClientProtocol dcc = CreateClient ();
+
+				foreach (string murl in urls) 
+				{
+
+					string url = murl;
+					if (!url.StartsWith ("http://") && !url.StartsWith ("https://") && !url.StartsWith ("file://"))
+						url = new Uri (Path.GetFullPath (url)).ToString ();
+
+					dcc.DiscoverAny (url);
+					dcc.ResolveAll ();
+					
+				}
+				
+				WebReference reference = new WebReference (dcc.Documents, proxyCode, protocol, appSettingURLKey, appSettingBaseURL);
+				references.Add (reference);
+				
+				if (sampleSoap != null)
+					ConsoleSampleGenerator.Generate (descriptions, schemas, sampleSoap, protocol);
+				
+				if (sampleSoap != null)
+					return 0;
+					
+				// generate the code
+				GenerateCode (references, codeUnit);
+				return 0;
+			}
+			catch (Exception exception)
+			{
+				Console.WriteLine("Error: {0}", exception.Message);
+				
+				// Supress this except for when debug is enabled
+				Console.WriteLine("Stack:\n {0}", exception.StackTrace);
+				return 2;
+			}
+		}
+		
+		///
+		/// <summary>
+		///	Generate code for the specified ServiceDescription.
+		/// </summary>
+		///
+		public bool GenerateCode (WebReferenceCollection references, CodeCompileUnit codeUnit)
+		{
+			bool hasWarnings = false;
+			
+			CodeDomProvider provider = GetProvider();
+				
+			StringCollection validationWarnings;
+			WebReferenceOptions opts = new WebReferenceOptions ();
+			opts.CodeGenerationOptions = options;
+			opts.Style = style;
+			opts.Verbose = verbose;
+			validationWarnings = ServiceDescriptionImporter.GenerateWebReferences (references, provider, codeUnit, opts);
+			
+			for (int n=0; n<references.Count; n++)
+			{
+				WebReference wr  = references [n];
+				
+				BasicProfileViolationCollection violations = new BasicProfileViolationCollection ();
+				if (String.Compare (protocol, "SOAP", StringComparison.OrdinalIgnoreCase) == 0 && !WebServicesInteroperability.CheckConformance (WsiProfiles.BasicProfile1_1, wr, violations)) {
+					wr.Warnings |= ServiceDescriptionImportWarnings.WsiConformance;
+				}
+				
+				if (wr.Warnings != 0)
+				{
+					if (!hasWarnings) {
+						WriteText ("", 0, 0);
+						WriteText ("There were some warnings while generating the code:", 0, 0);
+					}
+					
+					WriteText ("", 0, 0);
+					WriteText (urls[n], 2, 2);
+					
+					if ((wr.Warnings & ServiceDescriptionImportWarnings.WsiConformance) > 0) {
+						WriteText ("- This web reference does not conform to WS-I Basic Profile v1.1", 4, 6); 
+						foreach (BasicProfileViolation vio in violations) {
+							WriteText (vio.NormativeStatement + ": " + vio.Details, 8, 8);
+							foreach (string ele in vio.Elements)
+								WriteText ("* " + ele, 10, 12);
+						}
+					}
+					
+					if ((wr.Warnings & ServiceDescriptionImportWarnings.NoCodeGenerated) > 0)
+						WriteText ("- WARNING: No proxy class was generated", 4, 6); 
+					if ((wr.Warnings & ServiceDescriptionImportWarnings.NoMethodsGenerated) > 0)
+						WriteText ("- WARNING: The proxy class generated includes no methods", 4, 6);
+					if ((wr.Warnings & ServiceDescriptionImportWarnings.OptionalExtensionsIgnored) > 0)
+						WriteText ("- WARNING: At least one optional extension has been ignored", 4, 6);
+					if ((wr.Warnings & ServiceDescriptionImportWarnings.RequiredExtensionsIgnored) > 0)
+						WriteText ("- WARNING: At least one necessary extension has been ignored", 4, 6);
+					if ((wr.Warnings & ServiceDescriptionImportWarnings.UnsupportedBindingsIgnored) > 0)
+						WriteText ("- WARNING: At least one binding is of an unsupported type and has been ignored", 4, 6);
+					if ((wr.Warnings & ServiceDescriptionImportWarnings.UnsupportedOperationsIgnored) > 0)
+						WriteText ("- WARNING: At least one operation is of an unsupported type and has been ignored", 4, 6);
+						
+					hasWarnings = true;
+				}
+			}
+			
+			if (hasWarnings) WriteText ("",0,0);
+				
+			string filename = outFilename;
+			bool hasBindings = false;
+			
+			foreach (object doc in references[0].Documents.Values)
+			{
+				ServiceDescription desc = doc as ServiceDescription;
+				if (desc == null) continue;
+				
+				if (desc.Services.Count > 0 && filename == null)
+					filename = desc.Services[0].Name + "." + provider.FileExtension;
+					
+				if (desc.Bindings.Count > 0 || desc.Services.Count > 0)
+					hasBindings = true;
+			}
+			
+			if (filename == null)
+				filename = "output." + provider.FileExtension;
+			
+			if (hasBindings) {
+				WriteText ("Writing file '" + filename + "'", 0, 0);
+				StreamWriter writer = new StreamWriter(filename);
+				
+				CodeGeneratorOptions compilerOptions = new CodeGeneratorOptions();
+				provider.GenerateCodeFromCompileUnit (codeUnit, writer, compilerOptions);
+				writer.Close();
+			}
+			
+			return hasWarnings;
+		}
+		
+		///
+		/// <summary>
+		///	Create the CodeNamespace with the generator's signature commented in.
+		/// </summary>
+		///
+		CodeNamespace GetCodeNamespace()
+		{
+			CodeNamespace codeNamespace = new CodeNamespace(ns);
+			
+			if (applicationSignature != null)
+			{
+				codeNamespace.Comments.Add(new CodeCommentStatement("\n This source code was auto-generated by " + applicationSignature + "\n"));
+			}
+			
+			return codeNamespace;
+		}
+		
+		///
+		/// <summary/>
+		///
+		void WriteCodeUnit(CodeCompileUnit codeUnit, string serviceName)
+		{
+			CodeDomProvider provider = GetProvider();
+			ICodeGenerator generator = provider.CreateGenerator();
+			CodeGeneratorOptions options = new CodeGeneratorOptions();
+			
+			string filename;
+			if (outFilename != null)
+				filename = outFilename;
+			else
+				filename = serviceName	+ "." + provider.FileExtension;
+			
+			Console.WriteLine ("Writing file '{0}'", filename);
+			StreamWriter writer = new StreamWriter(filename);
+			generator.GenerateCodeFromCompileUnit(codeUnit, writer, options);
+			writer.Close();
+		}
+		
+		///
+		/// <summary>
+		///	Fetch the Code Provider for the language specified by the 'language' members.
+		/// </summary>
+		///
+		private CodeDomProvider GetProvider()
+		{
+			CodeDomProvider provider;
+			Type type;
+			
+			switch (language.ToUpper ()) {
+			case "CS":
+				provider = new CSharpCodeProvider ();
+				break;
+			case "VB":
+				provider = new Microsoft.VisualBasic.VBCodeProvider ();
+				break;
+			case "BOO":
+				type = Type.GetType("Boo.Lang.CodeDom.BooCodeProvider, Boo.Lang.CodeDom, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67");
+				if (type != null){
+					return (CodeDomProvider) Activator.CreateInstance (type);
+				}
+				throw new Exception ("Boo.Lang.CodeDom.BooCodeProvider not available");
+				
+			default:
+				type = Type.GetType(language);
+				if (type != null) {
+					return (CodeDomProvider) Activator.CreateInstance (type);
+				}	
+				throw new Exception ("Unknown language");
+			}
+			return provider;
+		}
+		
+
+
+		///
+		/// <summary>
+		///	Interperet the command-line arguments and configure the relavent components.
+		/// </summary>
+		///		
+		void ImportArgument(string argument)
+		{
+			string optionValuePair;
+			
+			if (argument.StartsWith("--"))
+			{
+				optionValuePair = argument.Substring(2);
+			}
+			else if (argument.StartsWith("/") || argument.StartsWith("-"))
+			{
+				optionValuePair = argument.Substring(1);
+			}
+			else
+			{
+				urls.Add (argument);
+				return;
+			}
+			
+			string option;
+			string value;
+			
+			int indexOfEquals = optionValuePair.IndexOf(':');
+			if (indexOfEquals > 0)
+			{
+				option = optionValuePair.Substring(0, indexOfEquals);
+				value = optionValuePair.Substring(indexOfEquals + 1);
+			}
+			else
+			{
+				option = optionValuePair;
+				value = null;
+			}
+			
+			switch (option)
+			{
+				case "appsettingurlkey":
+				case "urlkey":
+				    appSettingURLKey = value;
+				    break;
+
+				case "appsettingbaseurl":
+				case "baseurl":
+				    appSettingBaseURL = value;
+				    break;
+
+				case "d":
+				case "domain":
+				    domain = value;
+				    break;
+
+				case "l":
+				case "language":
+				    language = value;
+				    break;
+
+				case "n":
+				case "namespace":
+				    ns = value;
+				    break;
+
+				case "nologo":
+				    noLogo = true;
+				    break;
+
+				case "o":
+				case "out":
+				    outFilename = value;
+				    break;
+
+				case "p":
+				case "password":
+				    password = value;
+				    break;
+
+				case "protocol":
+				    protocol = value;
+				    break;
+
+				case "proxy":
+				    proxyAddress = value;
+				    break;
+
+				case "proxydomain":
+				case "pd":
+				    proxyDomain = value;
+				    break;
+
+				case "proxypassword":
+				case "pp":
+				    proxyPassword = value;
+				    break;
+
+				case "proxyusername":
+				case "pu":
+				    proxyUsername = value;
+				    break;
+
+				case "server":
+				    style = ServiceDescriptionImportStyle.Server;
+				    break;
+
+				case "u":
+				case "username":
+				    username = value;
+				    break;
+					
+				case "verbose":
+					verbose = true;
+					break;
+					
+				case "fields":
+					options &= ~CodeGenerationOptions.GenerateProperties;
+					break;
+					
+				case "sample":
+					sampleSoap = value;
+					break;
+
+				case "?":
+				    help = true;
+				    break;
+
+				default:
+					if (argument.StartsWith ("/") && argument.IndexOfAny (Path.InvalidPathChars) == -1) {
+						urls.Add (argument);
+						break;
+					}
+					else
+					    throw new Exception("Unknown option " + option);
+			}
+		}
+		
+		DiscoveryClientProtocol CreateClient ()
+		{
+			DiscoveryClientProtocol dcc = new DiscoveryClientProtocol ();
+			
+			if (username != null || password != null || domain != null)
+			{
+				NetworkCredential credentials = new NetworkCredential();
+				
+				if (username != null)
+					credentials.UserName = username;
+				
+				if (password != null)
+					credentials.Password = password;
+				
+				if (domain != null)
+					credentials.Domain = domain;
+				
+				dcc.Credentials = credentials;
+			}
+			
+			if (proxyAddress != null)
+			{
+				WebProxy proxy = new WebProxy (proxyAddress);
+				if (proxyUsername != null || proxyPassword != null || proxyDomain != null)
+				{
+					NetworkCredential credentials = new NetworkCredential();
+					
+					if (proxyUsername != null)
+						credentials.UserName = proxyUsername;
+					
+					if (proxyPassword != null)
+						credentials.Password = proxyPassword;
+					
+					if (proxyDomain != null)
+						credentials.Domain = proxyDomain;
+					
+					proxy.Credentials = credentials;
+				}
+			}			
+			
+			return dcc;
+		}
+		
+		static void WriteText (string text, int initialLeftMargin, int leftMargin)
+		{
+			int n = 0;
+			int margin = initialLeftMargin;
+			int maxCols = 80;
+			
+			if (text == "") {
+				Console.WriteLine ();
+				return;
+			}
+			
+			while (n < text.Length)
+			{
+				int col = margin;
+				int lastWhite = -1;
+				int sn = n;
+				while (col < maxCols && n < text.Length) {
+					if (char.IsWhiteSpace (text[n]))
+						lastWhite = n;
+					col++;
+					n++;
+				}
+				
+				if (lastWhite == -1 || col < maxCols)
+					lastWhite = n;
+				else if (col >= maxCols)
+					n = lastWhite + 1;
+				
+				Console.WriteLine (new String (' ', margin) + text.Substring (sn, lastWhite - sn));
+				margin = leftMargin;
+			}
+		}
+	}
+}
+
--- mono-4.6.2.7+dfsg.orig/mcs/tools/xbuild/data/12.0/Microsoft.Common.targets
+++ mono-4.6.2.7+dfsg/mcs/tools/xbuild/data/12.0/Microsoft.Common.targets
@@ -32,7 +32,7 @@
 		<OutputPath Condition=" '$(Platform)'=='' and '$(Configuration)'=='' and '$(OutputPath)'=='' ">bin\Debug\</OutputPath>
 
 		<TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
-		<TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.0</TargetFrameworkVersion>
+		<TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.5</TargetFrameworkVersion>
 
 		<TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$(TargetFrameworkProfile)' != ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
 	        <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets
+++ mono-4.6.2.7+dfsg/mcs/tools/xbuild/data/14.0/Microsoft.Common.targets
@@ -34,7 +34,7 @@
 		<OutputPath Condition=" '$(Platform)'=='' and '$(Configuration)'=='' and '$(OutputPath)'=='' ">bin\Debug\</OutputPath>
 
 		<TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
-		<TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.0</TargetFrameworkVersion>
+		<TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.5</TargetFrameworkVersion>
 
 		<TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$(TargetFrameworkProfile)' != ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
 	        <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/xbuild/data/4.0/Microsoft.Common.targets
+++ mono-4.6.2.7+dfsg/mcs/tools/xbuild/data/4.0/Microsoft.Common.targets
@@ -32,7 +32,7 @@
 		<OutputPath Condition=" '$(Platform)'=='' and '$(Configuration)'=='' and '$(OutputPath)'=='' ">bin\Debug\</OutputPath>
 
 		<TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
-		<TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.0</TargetFrameworkVersion>
+		<TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.5</TargetFrameworkVersion>
 
 		<TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$(TargetFrameworkProfile)' != ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
 	        <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/xbuild/frameworks/net_4.5.1.xml
+++ mono-4.6.2.7+dfsg/mcs/tools/xbuild/frameworks/net_4.5.1.xml
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FileList  Name=".NET Framework 4.5.1" TargetFrameworkDirectory="..\..\..\..\4.5-api">
+<FileList  Name=".NET Framework 4.5.1" TargetFrameworkDirectory="..\..\..\..\4.5">
 </FileList>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/xbuild/frameworks/net_4.5.2.xml
+++ mono-4.6.2.7+dfsg/mcs/tools/xbuild/frameworks/net_4.5.2.xml
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FileList  Name=".NET Framework 4.5.2" TargetFrameworkDirectory="..\..\..\..\4.5-api">
+<FileList  Name=".NET Framework 4.5.2" TargetFrameworkDirectory="..\..\..\..\4.5">
 </FileList>
--- mono-4.6.2.7+dfsg.orig/mcs/tools/xbuild/frameworks/net_4.5.xml
+++ mono-4.6.2.7+dfsg/mcs/tools/xbuild/frameworks/net_4.5.xml
@@ -1,3 +1,3 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FileList  Name=".NET Framework 4.5" TargetFrameworkDirectory="..\..\..\..\4.5-api">
+<FileList  Name=".NET Framework 4.5" TargetFrameworkDirectory="..\..\..\..\4.5">
 </FileList>
--- mono-4.6.2.7+dfsg.orig/mono/benchmark/bulkcpy.il
+++ mono-4.6.2.7+dfsg/mono/benchmark/bulkcpy.il
@@ -1,680 +1,680 @@
-.assembly BulkCpy {}
-
-.class public auto ansi sealed beforefieldinit BulkCpy {
-
-	.field public static unsigned int8 Data at RandomData
-
-	.method static public void Main() il managed {
-		.entrypoint
-
-		.locals (
-			int32 count,
-			int32 start,
-			int32 elapsed,
-			unsigned int8[] buff1,
-			unsigned int8[] buff2,
-			unsigned int8& pinned dest1,
-			unsigned int8& pinned dest2,
-			int32 size
-		)
-
-		ldc.i4 2053
-		stloc size
-
-		ldloc size
-		newarr [mscorlib]System.Byte
-		dup
-		stloc buff1
-		ldc.i4.0
-		ldelema [mscorlib]System.Byte
-		stloc dest1
-
-		ldloc size
-		newarr [mscorlib]System.Byte
-		dup
-		stloc buff2
-		ldc.i4.0
-		ldelema [mscorlib]System.Byte
-		stloc dest2
-
-
-		ldc.i4 1000000
-		stloc count
-
-		call int32 [mscorlib]System.Environment::get_TickCount()
-		stloc start
-
-	loop:
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 2053
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 0
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 1
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 2
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 3
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 4
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 5
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 6
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 7
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 8
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 9
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 10
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 11
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 12
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 13
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 14
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 15
-		cpblk
-
-		ldloc dest1
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 16
-		cpblk
-
-		ldloc dest2
-		ldsflda unsigned int8 BulkCpy::Data
-		ldc.i4 2053
-		cpblk
-
-		ldloc count
-		ldc.i4.1
-		sub
-		dup
-		stloc count
-		brtrue loop
-
-
-		call int32 [mscorlib]System.Environment::get_TickCount()
-		ldloc start
-		sub
-		stloc elapsed
-
-		ldstr "Elapsed : {0} ms."
-		ldloc elapsed
-		box [mscorlib]System.Int32
-		call void [mscorlib]System.Console::WriteLine(string, object)
-
-		ret
-	}
-
-}
-
-
-.data RandomData = bytearray (
-	25 4e d7 23 b9 f8 fb ef 
-	4e c2 b6 23 a9 16 d1 2a 
-	eb f6 89 78 3f 35 26 c0 
-	21 43 82 4c 27 f0 b2 cb 
-	70 d7 ed b6 fb e6 80 cf 
-	c9 f7 d5 72 9e e8 31 02 
-	d1 25 61 8b ff f4 eb 3e 
-	f9 6b 69 bd 15 7a d6 cd 
-	08 9e bd 58 d4 32 59 25 
-	43 51 76 b8 db 4c 32 61 
-	68 69 ee ea e7 eb 33 a1 
-	ac 2d dc 9c 43 58 b9 df 
-	79 c1 61 71 4e d8 3a b0 
-	5b 9a 8b 12 7a d9 b5 b1 
-	76 ec 6b 75 5b b9 dc 92 
-	18 88 43 3c 38 11 51 a3 
-	4b c3 ff f0 79 c9 d2 86 
-	b1 89 9f 47 b0 4f fb e6 
-	ae be 8f 35 0d f8 0d 2f 
-	56 12 92 5c e3 9e c7 55 
-	b5 e3 c0 2f 6d f1 fd 97 
-	e0 c5 bb c0 25 59 1a e9 
-	92 3b d8 63 16 b3 4c 3f 
-	45 f1 f3 84 08 b1 b6 1b 
-	38 01 6e 78 85 60 34 c2 
-	ce 5f f1 db 48 bf eb 40 
-	85 37 b7 73 b9 0d 23 a0 
-	76 cd 03 fc 5a 6c b3 44 
-	9f 41 ca 06 e7 ea ed bb 
-	85 52 0b 53 1d ee 02 c7 
-	57 6f 9e d4 22 49 0c b8 
-	b1 73 05 c2 9c 2d a6 3c 
-	69 b8 d0 f3 74 26 87 f0 
-	b7 6c d3 c3 0f a4 b5 c9 
-	f8 1b 58 c5 c3 04 4c f6 
-	8e 19 a2 22 47 af db 27 
-	fa 97 b5 be a0 5d 1d e5 
-	4b cc cc e2 66 f3 a6 2a 
-	e3 cb 5a 3c 68 a1 d9 91 
-	d5 8a c4 3a 94 d9 cb 63 
-	f3 63 2c 65 c9 b6 06 e2 
-	61 81 31 03 00 14 27 c7 
-	36 7b 5b 84 1f 7b 2a f3 
-	96 8d 9f 2d d1 43 84 1d 
-	d8 67 43 43 4d 49 2a db 
-	43 4d 77 19 a0 7f 84 fd 
-	87 e6 a4 94 bf be 69 b7 
-	5d 1f 87 0e 7e 21 23 bc 
-	f7 9c 2b 1b 70 1a 03 2c 
-	60 28 53 19 c1 73 c7 4d 
-	8a b4 85 58 d9 a4 ce 4c 
-	27 08 a9 2e 0e 72 b0 6d 
-	1f 78 88 31 e5 39 5f d6 
-	ce 4d 84 e5 33 a7 7c 7f 
-	8e f9 68 98 0b 9e e9 5f 
-	f0 96 62 98 11 6e 3b 11 
-	4e bb a2 ea d0 dd d9 a0 
-	73 ce 62 c1 8d bd 50 63 
-	1d f6 73 dc b9 21 04 6b 
-	77 fd 7c 8e e5 58 de 46 
-	32 39 48 f6 63 12 86 bd 
-	3f 3b 0d 0a 35 3f 43 50 
-	31 d2 b4 71 60 18 42 00 
-	37 d3 c5 99 70 04 7f 9d 
-	ae a4 98 32 33 90 9b 14 
-	52 fc 41 a4 9f 2f 74 07 
-	36 70 19 bd 46 39 4d 80 
-	cf 9b 0a 11 36 67 62 c2 
-	bb ac 15 a0 54 7d e1 24 
-	de 30 c5 a2 f8 11 45 ed 
-	af fd a5 0a 36 6d 31 15 
-	6d 0a 3b e0 a6 3c 51 c1 
-	6e 55 d8 62 cf cd 25 64 
-	72 a8 cd 1b 51 9a 94 c8 
-	75 64 41 e8 57 68 89 9c 
-	49 10 14 2f 39 4b de 0c 
-	ea b5 d0 df 64 6c c1 84 
-	07 55 d9 90 be 92 62 9b 
-	f8 17 14 40 61 5c ca 4a 
-	88 2d a1 b2 fc 2f 4e a0 
-	7d f9 32 38 31 00 01 73 
-	eb fa 88 18 7a 02 d4 24 
-	02 c6 cc a3 4f 1f 7c b5 
-	bf e5 43 44 c0 1e 17 f2 
-	4c 1d 0c c8 7c a6 68 87 
-	cb 97 9a 83 b7 5c d9 a1 
-	e6 a3 4e d9 96 8e e4 13 
-	f8 1e 57 66 fe d0 f9 5a 
-	6f 9b ec 78 70 dc a5 11 
-	4b a5 0a 4d 65 94 b2 09 
-	cd f1 04 39 44 b2 dc af 
-	de 3d 92 35 21 09 c6 f4 
-	c2 c2 aa 56 16 ed d9 a8 
-	e4 e3 c4 73 f2 54 a5 19 
-	8d cc a8 c1 93 a4 99 77 
-	19 b7 76 e6 9c 23 aa 5b 
-	b7 52 c6 c9 d2 9d a8 eb 
-	3e e2 73 07 1f 79 b6 20 
-	aa 75 96 5d 3d 93 a8 f4 
-	f4 dd fd 92 57 5a 32 3e 
-	d1 63 ed 94 d9 b4 6b 90 
-	c5 90 a2 12 93 73 da 01 
-	66 f0 79 9b e3 c1 74 53 
-	19 d8 6a 2a eb 25 78 3d 
-	7b 6c ac 2f 68 68 91 0e 
-	5e 73 c5 94 cf a0 93 7d 
-	bf ea b5 b9 e7 02 cd 26 
-	c1 50 32 47 89 5e 77 21 
-	12 94 e6 af ec 7d f9 49 
-	30 93 9d 9c 37 a2 1e 1a 
-	20 da 1e 16 ad 66 f5 31 
-	f5 33 81 fe cf b4 74 48 
-	c0 1b 2f 4a 73 ee f8 28 
-	53 47 b0 38 05 84 11 23 
-	cb 7d e9 66 05 ce 3b d0 
-	09 f7 b3 39 75 71 54 62 
-	a6 3b dd ec 81 3e cf 92 
-	3c 1e 49 3d 8e 1f 89 6b 
-	5b aa 9c 2b 04 79 b7 65 
-	90 9d 71 30 86 b9 12 ac 
-	0d 01 50 55 f3 86 c1 6c 
-	ca 0d 14 1b 29 92 19 9f 
-	3a 9e d6 ac 15 5a 6e 56 
-	07 51 95 0b 5c ea e0 ee 
-	f2 2b 13 d0 16 db 3e c3 
-	0b 8e 1e 2c 8d d1 32 2e 
-	1e 27 ec 6e 45 0d 2f 6d 
-	09 f5 fa 7f 61 7f 78 48 
-	eb 22 4b ad 7b 62 c7 45 
-	19 9f 23 a7 74 0e 79 97 
-	b6 33 74 49 34 ee 1b 61 
-	7d be 8d d7 2f 6f 94 c1 
-	49 35 06 13 c3 1b 5a 51 
-	8f 52 02 9c 22 64 75 8f 
-	77 f3 80 ac 34 f1 d4 1c 
-	90 b0 69 f1 e9 88 27 01 
-	4f 10 0e 5f e6 9a 80 e6 
-	aa 63 12 6f c6 dc 9d 71 
-	47 7e 1c b0 48 cf b7 73 
-	e7 fb e7 dc ad 54 71 43 
-	7f 7c 75 7a 22 54 93 65 
-	b1 90 b4 7f 89 87 f3 71 
-	27 e6 b5 ea be 70 e3 8c 
-	5a 5e a1 cb 50 6e 76 b5 
-	ae bd 32 57 82 7f 9f 22 
-	78 85 49 3c 60 30 c3 2e 
-	24 25 2e e4 df 69 f5 2e 
-	0f 89 a8 cf bd 14 4b e7 
-	09 cb 67 38 e9 8e 0e 4a 
-	63 0c ce 63 f0 7c 82 8d 
-	9a a3 65 b9 02 c9 e1 3b 
-	ec 8a c6 db 57 8b 1f a3 
-	4a 67 22 66 01 5b c5 a9 
-	25 40 80 c4 43 4b d5 55 
-	ef 2b 44 a7 84 f0 a3 5d 
-	1a fd a2 f3 9e cf c6 ca 
-	47 72 95 04 47 b2 08 b6 
-	fa a0 9a a8 ee 26 8c 4c 
-	35 32 1a df 7f 62 c4 5e 
-	6f c6 f3 94 d3 e4 1a df 
-	68 6b 62 bf d4 04 3d 71 
-	41 dc b8 c3 27 e1 fd 8f 
-	6f b0 59 0f bf c2 c4 35 
-	22 65 a3 7e 3c 30 b6 33 
-	a3 38 f8 2c 52 e7 eb 05 
-	b2 e7 f0 a5 16 d4 12 94 
-	cf b7 8a df 5e 86 78 70 
-	0b 94 d5 87 dc 90 bb ab 
-	b8 c2 ca 04 74 17 02 a3 
-	7c 82 76 a3 41 c7 1e 3f 
-	13 be a8 e5 29 aa 9b cd 
-	27 ef 3e f6 83 bf e4 e5 
-	67 37 a4 a8 e5 6f 90 c2 
-	a8 f9 39 64 60 3b d7 07 
-	38 2a d3 d1 38 15 67 3b 
-	e8 2f 49 17 12 6f af e5 
-	3b d2 ab ba 65 8d b5 c7 
-	57 58 a7 72 83 ad 48 01 
-	8e e1 fc 61 80 eb 1d d8 
-	39 54 7e 10 12 a3 6d fc 
-	29 67 57 69 fd 71 35 28 
-	1d fe cd fa ba 34 ce 3f 
-	15 8f 5a 5b b9 22 78 40 
-	63 15 85 5e 7a 09 ba 6d 
-	16 c1 8d a6 59 01 7f 5b 
-	b0 26 96 8e fb 0b 5b bc 
-	f2 2a b5 f3 8c 62 cf b6 
-	2e 02 d4 0d 0b 63 2e 08 
-	8c 67 59 23 b7 84 27 04 
-	37 b9 e6 8e f9 3a a9 46 
-	62 b2 d8 82 50 3d 88 50 
-	37 b9 fd 85 5c d8 45 0a 
-	19 d5 6b 8a b0 58 c9 d9 
-	9b e9 62 d8 3f 3a c7 24 
-	0e 64 70 06 0b 69 fc 5a 
-	3e c5 7f 63 0a 44 97 a1 
-	c6 dd f9 4e d0 f6 8a bd 
-	25 5c 01 93 6b 69 eb 04 
-	3f 13 05 8e 0d 04 7d e4 
-	f3 90 a6 56 19 d5 82 81 
-	13 f6 65 9c 52 0d f4 df 
-	a0 56 08 ad 72 94 d5 59 
-	ed cb 7f 74 32 54 84 df 
-	64 55 ca 22 69 b9 16 d9 
-	9b 01 5a 3b dd d5 8a db 
-	31 f6 78 67 26 aa 86 be 
-	6d 2a d1 46 6c c5 b1 96 
-	55 e2 76 a8 e1 2b 0b 60 
-	01 79 8c 5e 74 39 69 bb 
-	b8 9c 4d 54 9a 91 e0 cb 
-	8b 13 d6 b6 3f 2a e4 f9 
-	48 02 a5 d8 60 00 1c ae 
-	d3 fb cb 5c de 2c 53 2d 
-	d1 2c 8d ba 3a cb 7f 8b 
-	2a b6 22 7b 27 0d ed b4 
-	70 1b 32 1a 25 65 89 9f 
-	30 b9 ec 5d 4b eb 08 6c 
-	a2 05 98 f1 ed cc ad 63 
-	f6 90 ba 66 d2 9b ef 32 
-	2a f0 98 ec 64 60 24 e0 
-	a4 9a 8e 10 1a 15 82 5f 
-	d9 cd ed bf b2 e1 0b 5c 
-	02 d8 51 90 c6 d5 88 39 
-	6e 46 24 27 cf a7 90 bd 
-	36 84 12 80 a8 07 62 d4 
-	12 ab c7 1b 29 7a 21 3d 
-	9b 03 13 f4 f1 c8 66 f4 
-	eb 10 0c a6 2c 86 8e 0b 
-	90 a8 f7 dc 87 d6 c1 69 
-	f9 5b 9d 8a b1 b4 a6 63 
-	15 57 6f b5 cb 84 e6 a7 
-	7b 68 96 97 c9 fc 48 e7 
-	c6 cd e8 35 46 57 87 0a 
-	0c ac fb d8 40 69 b5 e8 
-	4a 9b f6 74 51 8e 0d 1c 
-	74 47 92 2c 6a 0e 3c 68 
-	8a e1 2f 38 ee 01 82 71 
-	48 c3 02 d7 23 a2 01 99 
-	51 b2 00 00 17 0e 70 0f 
-	aa 6d 25 48 da e2 43 5e 
-	9f 29 8d bd 22 75 58 ba 
-	3c 57 4b da df 5b b5 c6 
-	f9 7a 1d f8 15 a0 6b 74 
-	44 c1 7a f3 7d c5 8b 19 
-	a5 09 f0 87 0a 3a 9a c0 
-	15 77 ee 25 2f 6f ab b8 
-	ab d2 a1 d5 7b 3e ec 59 
-	ef 6e 42 26 86 94 da e2 
-	5a 56 02 c7 29 80 d9 98 
-	ea c2 9d 72 8c 64 44 8b 
-	1a 1a dd dc 9f 14 0a 2f 
-	70 f0 9e d2 ad 74 1f a1 
-	a7 a3 70 13 c0 05 c2 b3 
-	24 09 da 04 7c 88 17 07 
-	2e e7 0d f8 f5 38 f3 73 
-	f7 98 2c 7b 35 4d 55 c8 
-	7f a5 09 c2 99 45 fc 64 
-	3a a6 30 ca 15 6e 38 29 
-	a5 e2 73 d7 30 b4 7a e8 
-	24 07 50 38 2d d2 72 73 
-	e1 15 9e c9 b1 93 6e 3a 
-	9d 79 cf 8a e1 00 49 2a 
-	c4 4b ea d8 7d dd c7 61 
-	6b 7f 86 88 53 36 5a 39 
-	52 0a 3c 26 8c 63 2c 94 
-	b7 7b 42 1a e7 ef 77 27 
-	10 d5 5d 49 49 44 ba 4e 
-	c4 42 ee f7 cb 76 bd 37 
-	c9 f7 a7 83 d9 ac f9 7b 
-	62 de 3d 7b 3e be 6a 2b 
-	31 0b 9f 18 4e b5 d2 98 
-	1f 80 b4 60 21 10 f2 24 
-	fd 99 3d a3 46 3a 93 66 
-	f6 76 db 5a 5c d0 1a da 
-	dd fe d8 3d 81 0d 10 1c 
-	88 57 4b f1 d6 bd 54 62 
-	bd 32 40 8b 1d 01 86 b5 
-	cd 26 aa 58 cf a8 ed 9a 
-	c0 fd 7f 8c 86 93 ac f3 
-	95 19 ca 41 ba 3a b4 88 
-	29 8b 1b 5f c3 04 7a e5 
-	53 55 d9 a7 b6 f5 00 37 
-	bc ce 37 d2 69 bc e6 8b 
-	12 91 d0 18 4f 12 af 23 
-	98 ed c0 3d ad 59 12 a6 
-	6c 9c 64 35 05 cc dd f3 
-	7f 7e 46 2d 97 e4 0a 42 
-	23 cc d9 c6 f0 7e 3c 47 
-	ae 95 41 d3 bc e2 75 7a 
-	f3 66 cd 29 7a 0a 46 39 
-	64 77 32 3a a5 d3 ec 8a 
-	f4 ca 1d c7 56 2a b8 ad 
-	47 76 c1 92 47 bc ed 9f 
-	4a 6a 0a 10 d9 8a d8 49 
-	4e 9f 38 14 0b 5d 5f b5 
-	da 0a 34 e2 65 c5 b7 65 
-	a7 94 d3 cd 22 7d c9 cf 
-	9f 08 b0 71 35 11 26 9c 
-	2f 5f f6 7c ab ac 0d 2f 
-	3f 1b 30 bd 48 da 11 32 
-	23 db 60 14 2c 68 99 68 
-	7c 73 d8 5e a3 3f 25 5b 
-	8d be 7e 52 e1 33 aa 63 
-	29 67 29 7b 38 34 fd a1 
-	ae b8 a8 eb f8 fc 4c 2c 
-	4c 30 90 b5 f2 5e 74 0b 
-	7a f6 7b 65 c6 e5 54 6c 
-	d0 0b 54 90 c3 ee df 60 
-	3f 33 84 fd 70 ef 42 f5 
-	24 fa b1 94 ca 17 27 f2 
-	3d 97 be 8c 92 49 47 b9 
-	ee 00 0f 9c 5b ac f8 08 
-	8e f2 25 72 6d 2a ba 4f 
-	0a 28 16 d2 9e bf e3 a0 
-	81 0f c9 d5 9c 49 27 0b 
-	91 d6 e6 a1 c3 0e 48 d8 
-	40 80 ad 4b e8 37 ba 2c 
-	74 21 15 7c 90 88 1c 90 
-	99 72 8f 4b ec 64 49 2c 
-	7d 06 fe cb 59 f6 82 7a 
-	fe be 8c 64 5b 82 7c b7 
-	79 a0 56 37 9c 37 d0 0c 
-	df 5c 12 a3 84 f3 8b 06 
-	f2 2d b4 94 c7 2f 7e 1a 
-	0e 84 1f 64 33 91 f8 f1 
-	dc 76 ae b1 7c bb bd 26 
-	b9 de 1d e3 d7 f7 e0 cb 
-	5d 24 12 7a 08 a3 76 b3 
-	24 f1 e3 a1 dd ec 53 4f 
-	0b 56 05 97 da f6 6a 0f 
-	c7 34 d9 97 d3 ca 3b d3 
-	f0 a0 8c 68 88 12 7d c1 
-	5e 89 a5 00 0b 9e ba 71 
-	2c 59 2b 12 a2 28 17 01 
-	8c 84 20 d7 08 7e 10 fa 
-	ac 0b 5e 8d a4 9f 46 6b 
-	69 d4 0c dc 75 69 cb 55 
-	e0 ea dc 93 75 66 cc b4 
-	a5 1e 2e 30 94 e2 82 5e 
-	7d ef 64 46 44 d4 2d cf 
-	b8 b8 cd 23 c2 af f6 7a 
-	da fa 97 9e c7 3e be 81 
-	23 93 a9 3b da 06 d8 65 
-	a0 7f 9b f4 e9 85 40 57 
-	76 e1 fa bf bd 3a c8 97 
-	e2 51 87 10 da fd ac 36 
-	65 a9 08 a8 ba 3a 86 99 
-	64 4f e4 d8 55 bd 55 d5 
-	92 1e 58 94 ed 95 36 91 
-	f5 0a 33 9d 7f 9e dc 92 
-	5e 6e 6a 17 0b 5a 77 0d 
-	02 db 21 43 3c 66 00 16 
-	df 82 4a 6d 37 9e d9 94 
-	bd 33 9d 68 a7 7a f4 c2 
-	ab b2 f3 78 53 16 f0 c1 
-	51 bd 13 d7 14 1c b4 5e 
-	67 55 de 32 22 7f 82 8a 
-	b2 fa 8c 8a ee 2a b8 db 
-	35 3b fe c9 cd 2b 34 c4 
-	59 2b 40 91 ec 53 38 13 
-	f3 66 fc 18 3f 47 7d bf 
-	d3 bd 57 4a 66 0b 6f 9e 
-	bd 2a e5 6d 1d ed bc e1 
-	30 94 cb 8b fb de 54 a0 
-	8e 21 42 25 6f 9d 78 44 
-	be 92 4a a4 96 78 78 7c 
-	a9 39 39 42 27 11 60 29 
-	98 fe e8 4e 9a 97 af 1e 
-	3d 70 fb f6 91 e8 54 97 
-	d7 26 b8 99 37 bc fc 26 
-	97 a5 f3 6d f9 58 b5 e0 
-	d9 86 94 c3 eb f7 b7 66 
-	04 71 5d 47 90 89 a6 5c 
-	e8 28 34 de 39 37 b7 5b 
-	c2 aa 84 05 b3 16 df 6b 
-	52 0b 98 03 16 dc 9a a0 
-	95 08 8b 39 6b 5e 7b 4e 
-	a0 94 f0 94 d6 cc c2 b8 
-	96 7d 03 e8 34 bb 8b 39 
-	54 66 19 af 06 d1 39 71 
-	44 c4 62 9c 55 f3 9e b8 
-	ce 68 a8 d6 d1 4c 24 21 
-	01 55 df 60 11 44 bf c0 
-	39 69 d2 af fe ea ef 5d 
-	48 04 5e 93 73 f1 f7 c8 
-	8e 15 5e 9b e4 07 5b 7a 
-	f3 ab b3 50 55 dc 8f 5f 
-	cd 2f 4a 5c f7 96 8a b7 
-	84 f8 15 72 7c af 08 8a 
-	f3 85 37 a0 7b 57 6f 87 
-	dd be aa 70 f4 f9 50 73 
-	ba 3b 11 65 b2 05 89 6c 
-	a0 90 c3 06 d6 c2 dd ce 
-	47 b4 93 82 49 56 3f 3c 
-	3b f8 f9 7c 79 d6 9f 19 
-	d8 81 22 4e c3 13 00 33 
-	8f 3f 37 c8 83 d2 97 c2 
-	a2 2a e6 b2 03 15 97 b4 
-	79 ba 35 42 13 02 a6 63 
-	2c 4e d1 54 67 47 9e ca 
-	0e 70 f7 b2 0b 86 ac 17 
-	2b 20 cb 97 c8 72 7c 98 
-	11 28 55 e9 73 e8 58 c4 
-	67 26 c1 7e 21 0c c5 95 
-	fd 8f 58 b9 f6 71 24 00 
-	0d 12 8f 5d 43 63 fa a6 
-	52 04 3e e4 16 c9 cf cd 
-	f6 76 ad 6b 96 94 e2 54 
-	6f b8 b3 2d bf d5 8e 09 
-	bf f6 82 4c 10 f9 50 2d 
-	d4 14 36 93 69 de 20 b4 
-	89 6e 71 42 3a 96 4e 9f 
-	4f 0b 6d fb f9 79 92 2d 
-	c6 ea c6 e1 f8 ee 0c c4 
-	38 21 06 de 4b e9 93 97 
-	b5 ec 8e 22 59 1d d1 3b 
-	13 08 76 b5 dc ac f6 94 
-	b9 06 0e 68 9d 95 0b 73 
-	e2 44 8c 8e ed c9 f3 a8 
-	e3 9e de 4c 18 82 5c f2 
-	24 15 90 9f 41 e1 fc 4a 
-	89 89 7e 3d 75 9c 5b 7d 
-	0a 43 51 bb 9f 03 27 05 
-	aa 8d d2 a5 03 0a 3e f5 
-	3e d9 bc 0b 94 ec 7e 3f 
-	2f 57 6e 70 e5 5c 0c d4 
-	32 42 2d e0 b2 da f5 24 
-	29 a0 59 07 4e ad 61 83 
-	bc ce 4e c9 cb 5b 82 4e 
-	c9 b4 63 20 b0 2e f0 ac 
-	fc 1e 26 90 90 bb 94 c1 
-	60 2c 68 b0 5f de 12 74 
-	22 5a 62 b7 63 ed d9 bf 
-	db 46 63 0f b6 0c c8 aa 
-	95 2d c3 03 1d 09 c9 db 
-	6b 9b d8 69 b6 17 39 60 
-	33 ab d7 fc 53 40 84 09 
-	c8 ad 7d d5 9c 32 30 a8 
-	f2 3c 24 e9 a0 7b 40 77 
-	25 3f 24 e6 b8 d1 67 49 
-	12 9e fa 87 01 83 9f 36 
-	88 3f 0f a9 11 48 be 61 
-	74 36 81 13 df 6e 3a b4 
-	71 32 29 7d c3 00 4d 57 
-	53 4c f4 be 67 2c 91 d0 
-	d2 69 ea d4 50 4e c7 57 
-	86 95 37 bf e3 ce 70 d4 
-	06 0d 23 b7 6d 30 a0 98 
-	1e 23 d6 d6 a7 a1 e5 47 
-	71 4f 1e 20 d7 36 6c d4 
-	37 e3 91 cc d3 c8 af 08 
-	a2 ea e7 d4 3c 3f 0f 92 
-	1a e4 20 c5 b1 7f 5e 80 
-	d7 0d 1f 73 e7 cd f8 18 
-	70 1d ea d4 39 57 65 b9 
-	ea d2 7f 9c 52 c6 0f b8 
-	c5 83 be 87 09 dd bd 37 
-	9b 09 e2 47 a2 26 8b 35 
-	3e ce 7b 44 bb aa a1 cb 
-	67 66 d8 53 4a 80 e9 7a 
-	15 87 00 3e b9 0f ad 6c 
-	c5 83 a7 90 a6 3f 22 73 
-	e4 e5 50 3f 42 0a 4b ab 
-	d9 9f 16 f1 d8 49 20 b1 
-	73 d6 d3 d7 ef 6f b6 f9 
-	72 ab e3 b2 ee 06 dd ee 
-	0d 0a 1e 48 e0 b1 95 10 
-	fc 4e cd 10 e0 e4 f6 4a 
-	61 6a 0c b1 9c 3c 2c 89 
-	a4 a2 2e 14 42 03 1f 7c 
-	9e c8 83 a4 a8 fd 66 f3 
-	60 44 bc f0 87 f2 42 38 
-	22 79 b3 38 02 9c 67 4a 
-	9d 6a 49 3d a5 16 eb 09 
-	f6 6e 53 4e 96 81 18 80 
-	d1 27 d5 5f eb 0d f5 0f 
-	8e 1b 45 e4 f8 03 1c 7d 
-	fd 8d b6 f5 45 1d e3 a9 
-	0a 1c 8e 26 9d a2 34 e3 
-	94 b4 7c a1 de 1b 42 14 
-	47 8c 8b 07 21 1c 79 d0 
-	fe b5 ec 60 33 94 df 9a 
-	b4 a4 c1 51 a5 1c 75 75 
-	80 f0 a6 44 c2 d6 d0 07 
-	3e f8 26 83 95 3a a7 8d 
-	a7 9e e6 a6 36 82 6f bc 
-	f7 b3 22 7e 0f b5 c6 e2 
-	83 ba 5a 7a dc b3 51 b1 
-	b9 19 d8 3c 3c 27 e8 41 
-	b6 0d 26 88 1f a6 31 10 
-	fa 95 13 fb ee 09 dc 8f 
-	48 d6 cc ab c0 34 df 67 
-	26 7c 98 f9 31 f2 4b d7 
-	26 a1 a1 d4 1f 61 62 df 
-	82 61 65 99 3d 75 57 75 
-	56 2f 70 08 95 35 4c 10 
-	e2 58 ca 36 78 73 db 46 
-	4c 18 54 6d 2e e7 de 0a 
-	31 fa bc ec 88 52 08 6b 
-	74 16 d2 b5 b7 46 3f 1d 
-	d2 81 f8 2f 51 88 27 d1 
-	61 4b d1 28 60 2b 3a c2 
-	9a a1 da ed b3 14 3d a7 
-	a1 b7 58 ac 13 e6 99 69 
-	ef 48 c4 76 ac 0f b9 0b 
-	69 e5 62 db 27 e3 a0 53 
-	21 05 99 65 c2 b8 c4 6c 
-	c7 25 6a 42 fa 7f 78 76 
-	da e6 87 e4 02 d0 0e 6a 
-	28 61 59 29 87 d6 d8 61 
-	5c f9 39 4d 69 d8 39 6b 
-	75 72 b0 3f 30 b3 4c f9 
-)
+.assembly BulkCpy {}
+
+.class public auto ansi sealed beforefieldinit BulkCpy {
+
+	.field public static unsigned int8 Data at RandomData
+
+	.method static public void Main() il managed {
+		.entrypoint
+
+		.locals (
+			int32 count,
+			int32 start,
+			int32 elapsed,
+			unsigned int8[] buff1,
+			unsigned int8[] buff2,
+			unsigned int8& pinned dest1,
+			unsigned int8& pinned dest2,
+			int32 size
+		)
+
+		ldc.i4 2053
+		stloc size
+
+		ldloc size
+		newarr [mscorlib]System.Byte
+		dup
+		stloc buff1
+		ldc.i4.0
+		ldelema [mscorlib]System.Byte
+		stloc dest1
+
+		ldloc size
+		newarr [mscorlib]System.Byte
+		dup
+		stloc buff2
+		ldc.i4.0
+		ldelema [mscorlib]System.Byte
+		stloc dest2
+
+
+		ldc.i4 1000000
+		stloc count
+
+		call int32 [mscorlib]System.Environment::get_TickCount()
+		stloc start
+
+	loop:
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 2053
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 0
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 1
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 2
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 3
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 4
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 5
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 6
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 7
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 8
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 9
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 10
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 11
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 12
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 13
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 14
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 15
+		cpblk
+
+		ldloc dest1
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 16
+		cpblk
+
+		ldloc dest2
+		ldsflda unsigned int8 BulkCpy::Data
+		ldc.i4 2053
+		cpblk
+
+		ldloc count
+		ldc.i4.1
+		sub
+		dup
+		stloc count
+		brtrue loop
+
+
+		call int32 [mscorlib]System.Environment::get_TickCount()
+		ldloc start
+		sub
+		stloc elapsed
+
+		ldstr "Elapsed : {0} ms."
+		ldloc elapsed
+		box [mscorlib]System.Int32
+		call void [mscorlib]System.Console::WriteLine(string, object)
+
+		ret
+	}
+
+}
+
+
+.data RandomData = bytearray (
+	25 4e d7 23 b9 f8 fb ef 
+	4e c2 b6 23 a9 16 d1 2a 
+	eb f6 89 78 3f 35 26 c0 
+	21 43 82 4c 27 f0 b2 cb 
+	70 d7 ed b6 fb e6 80 cf 
+	c9 f7 d5 72 9e e8 31 02 
+	d1 25 61 8b ff f4 eb 3e 
+	f9 6b 69 bd 15 7a d6 cd 
+	08 9e bd 58 d4 32 59 25 
+	43 51 76 b8 db 4c 32 61 
+	68 69 ee ea e7 eb 33 a1 
+	ac 2d dc 9c 43 58 b9 df 
+	79 c1 61 71 4e d8 3a b0 
+	5b 9a 8b 12 7a d9 b5 b1 
+	76 ec 6b 75 5b b9 dc 92 
+	18 88 43 3c 38 11 51 a3 
+	4b c3 ff f0 79 c9 d2 86 
+	b1 89 9f 47 b0 4f fb e6 
+	ae be 8f 35 0d f8 0d 2f 
+	56 12 92 5c e3 9e c7 55 
+	b5 e3 c0 2f 6d f1 fd 97 
+	e0 c5 bb c0 25 59 1a e9 
+	92 3b d8 63 16 b3 4c 3f 
+	45 f1 f3 84 08 b1 b6 1b 
+	38 01 6e 78 85 60 34 c2 
+	ce 5f f1 db 48 bf eb 40 
+	85 37 b7 73 b9 0d 23 a0 
+	76 cd 03 fc 5a 6c b3 44 
+	9f 41 ca 06 e7 ea ed bb 
+	85 52 0b 53 1d ee 02 c7 
+	57 6f 9e d4 22 49 0c b8 
+	b1 73 05 c2 9c 2d a6 3c 
+	69 b8 d0 f3 74 26 87 f0 
+	b7 6c d3 c3 0f a4 b5 c9 
+	f8 1b 58 c5 c3 04 4c f6 
+	8e 19 a2 22 47 af db 27 
+	fa 97 b5 be a0 5d 1d e5 
+	4b cc cc e2 66 f3 a6 2a 
+	e3 cb 5a 3c 68 a1 d9 91 
+	d5 8a c4 3a 94 d9 cb 63 
+	f3 63 2c 65 c9 b6 06 e2 
+	61 81 31 03 00 14 27 c7 
+	36 7b 5b 84 1f 7b 2a f3 
+	96 8d 9f 2d d1 43 84 1d 
+	d8 67 43 43 4d 49 2a db 
+	43 4d 77 19 a0 7f 84 fd 
+	87 e6 a4 94 bf be 69 b7 
+	5d 1f 87 0e 7e 21 23 bc 
+	f7 9c 2b 1b 70 1a 03 2c 
+	60 28 53 19 c1 73 c7 4d 
+	8a b4 85 58 d9 a4 ce 4c 
+	27 08 a9 2e 0e 72 b0 6d 
+	1f 78 88 31 e5 39 5f d6 
+	ce 4d 84 e5 33 a7 7c 7f 
+	8e f9 68 98 0b 9e e9 5f 
+	f0 96 62 98 11 6e 3b 11 
+	4e bb a2 ea d0 dd d9 a0 
+	73 ce 62 c1 8d bd 50 63 
+	1d f6 73 dc b9 21 04 6b 
+	77 fd 7c 8e e5 58 de 46 
+	32 39 48 f6 63 12 86 bd 
+	3f 3b 0d 0a 35 3f 43 50 
+	31 d2 b4 71 60 18 42 00 
+	37 d3 c5 99 70 04 7f 9d 
+	ae a4 98 32 33 90 9b 14 
+	52 fc 41 a4 9f 2f 74 07 
+	36 70 19 bd 46 39 4d 80 
+	cf 9b 0a 11 36 67 62 c2 
+	bb ac 15 a0 54 7d e1 24 
+	de 30 c5 a2 f8 11 45 ed 
+	af fd a5 0a 36 6d 31 15 
+	6d 0a 3b e0 a6 3c 51 c1 
+	6e 55 d8 62 cf cd 25 64 
+	72 a8 cd 1b 51 9a 94 c8 
+	75 64 41 e8 57 68 89 9c 
+	49 10 14 2f 39 4b de 0c 
+	ea b5 d0 df 64 6c c1 84 
+	07 55 d9 90 be 92 62 9b 
+	f8 17 14 40 61 5c ca 4a 
+	88 2d a1 b2 fc 2f 4e a0 
+	7d f9 32 38 31 00 01 73 
+	eb fa 88 18 7a 02 d4 24 
+	02 c6 cc a3 4f 1f 7c b5 
+	bf e5 43 44 c0 1e 17 f2 
+	4c 1d 0c c8 7c a6 68 87 
+	cb 97 9a 83 b7 5c d9 a1 
+	e6 a3 4e d9 96 8e e4 13 
+	f8 1e 57 66 fe d0 f9 5a 
+	6f 9b ec 78 70 dc a5 11 
+	4b a5 0a 4d 65 94 b2 09 
+	cd f1 04 39 44 b2 dc af 
+	de 3d 92 35 21 09 c6 f4 
+	c2 c2 aa 56 16 ed d9 a8 
+	e4 e3 c4 73 f2 54 a5 19 
+	8d cc a8 c1 93 a4 99 77 
+	19 b7 76 e6 9c 23 aa 5b 
+	b7 52 c6 c9 d2 9d a8 eb 
+	3e e2 73 07 1f 79 b6 20 
+	aa 75 96 5d 3d 93 a8 f4 
+	f4 dd fd 92 57 5a 32 3e 
+	d1 63 ed 94 d9 b4 6b 90 
+	c5 90 a2 12 93 73 da 01 
+	66 f0 79 9b e3 c1 74 53 
+	19 d8 6a 2a eb 25 78 3d 
+	7b 6c ac 2f 68 68 91 0e 
+	5e 73 c5 94 cf a0 93 7d 
+	bf ea b5 b9 e7 02 cd 26 
+	c1 50 32 47 89 5e 77 21 
+	12 94 e6 af ec 7d f9 49 
+	30 93 9d 9c 37 a2 1e 1a 
+	20 da 1e 16 ad 66 f5 31 
+	f5 33 81 fe cf b4 74 48 
+	c0 1b 2f 4a 73 ee f8 28 
+	53 47 b0 38 05 84 11 23 
+	cb 7d e9 66 05 ce 3b d0 
+	09 f7 b3 39 75 71 54 62 
+	a6 3b dd ec 81 3e cf 92 
+	3c 1e 49 3d 8e 1f 89 6b 
+	5b aa 9c 2b 04 79 b7 65 
+	90 9d 71 30 86 b9 12 ac 
+	0d 01 50 55 f3 86 c1 6c 
+	ca 0d 14 1b 29 92 19 9f 
+	3a 9e d6 ac 15 5a 6e 56 
+	07 51 95 0b 5c ea e0 ee 
+	f2 2b 13 d0 16 db 3e c3 
+	0b 8e 1e 2c 8d d1 32 2e 
+	1e 27 ec 6e 45 0d 2f 6d 
+	09 f5 fa 7f 61 7f 78 48 
+	eb 22 4b ad 7b 62 c7 45 
+	19 9f 23 a7 74 0e 79 97 
+	b6 33 74 49 34 ee 1b 61 
+	7d be 8d d7 2f 6f 94 c1 
+	49 35 06 13 c3 1b 5a 51 
+	8f 52 02 9c 22 64 75 8f 
+	77 f3 80 ac 34 f1 d4 1c 
+	90 b0 69 f1 e9 88 27 01 
+	4f 10 0e 5f e6 9a 80 e6 
+	aa 63 12 6f c6 dc 9d 71 
+	47 7e 1c b0 48 cf b7 73 
+	e7 fb e7 dc ad 54 71 43 
+	7f 7c 75 7a 22 54 93 65 
+	b1 90 b4 7f 89 87 f3 71 
+	27 e6 b5 ea be 70 e3 8c 
+	5a 5e a1 cb 50 6e 76 b5 
+	ae bd 32 57 82 7f 9f 22 
+	78 85 49 3c 60 30 c3 2e 
+	24 25 2e e4 df 69 f5 2e 
+	0f 89 a8 cf bd 14 4b e7 
+	09 cb 67 38 e9 8e 0e 4a 
+	63 0c ce 63 f0 7c 82 8d 
+	9a a3 65 b9 02 c9 e1 3b 
+	ec 8a c6 db 57 8b 1f a3 
+	4a 67 22 66 01 5b c5 a9 
+	25 40 80 c4 43 4b d5 55 
+	ef 2b 44 a7 84 f0 a3 5d 
+	1a fd a2 f3 9e cf c6 ca 
+	47 72 95 04 47 b2 08 b6 
+	fa a0 9a a8 ee 26 8c 4c 
+	35 32 1a df 7f 62 c4 5e 
+	6f c6 f3 94 d3 e4 1a df 
+	68 6b 62 bf d4 04 3d 71 
+	41 dc b8 c3 27 e1 fd 8f 
+	6f b0 59 0f bf c2 c4 35 
+	22 65 a3 7e 3c 30 b6 33 
+	a3 38 f8 2c 52 e7 eb 05 
+	b2 e7 f0 a5 16 d4 12 94 
+	cf b7 8a df 5e 86 78 70 
+	0b 94 d5 87 dc 90 bb ab 
+	b8 c2 ca 04 74 17 02 a3 
+	7c 82 76 a3 41 c7 1e 3f 
+	13 be a8 e5 29 aa 9b cd 
+	27 ef 3e f6 83 bf e4 e5 
+	67 37 a4 a8 e5 6f 90 c2 
+	a8 f9 39 64 60 3b d7 07 
+	38 2a d3 d1 38 15 67 3b 
+	e8 2f 49 17 12 6f af e5 
+	3b d2 ab ba 65 8d b5 c7 
+	57 58 a7 72 83 ad 48 01 
+	8e e1 fc 61 80 eb 1d d8 
+	39 54 7e 10 12 a3 6d fc 
+	29 67 57 69 fd 71 35 28 
+	1d fe cd fa ba 34 ce 3f 
+	15 8f 5a 5b b9 22 78 40 
+	63 15 85 5e 7a 09 ba 6d 
+	16 c1 8d a6 59 01 7f 5b 
+	b0 26 96 8e fb 0b 5b bc 
+	f2 2a b5 f3 8c 62 cf b6 
+	2e 02 d4 0d 0b 63 2e 08 
+	8c 67 59 23 b7 84 27 04 
+	37 b9 e6 8e f9 3a a9 46 
+	62 b2 d8 82 50 3d 88 50 
+	37 b9 fd 85 5c d8 45 0a 
+	19 d5 6b 8a b0 58 c9 d9 
+	9b e9 62 d8 3f 3a c7 24 
+	0e 64 70 06 0b 69 fc 5a 
+	3e c5 7f 63 0a 44 97 a1 
+	c6 dd f9 4e d0 f6 8a bd 
+	25 5c 01 93 6b 69 eb 04 
+	3f 13 05 8e 0d 04 7d e4 
+	f3 90 a6 56 19 d5 82 81 
+	13 f6 65 9c 52 0d f4 df 
+	a0 56 08 ad 72 94 d5 59 
+	ed cb 7f 74 32 54 84 df 
+	64 55 ca 22 69 b9 16 d9 
+	9b 01 5a 3b dd d5 8a db 
+	31 f6 78 67 26 aa 86 be 
+	6d 2a d1 46 6c c5 b1 96 
+	55 e2 76 a8 e1 2b 0b 60 
+	01 79 8c 5e 74 39 69 bb 
+	b8 9c 4d 54 9a 91 e0 cb 
+	8b 13 d6 b6 3f 2a e4 f9 
+	48 02 a5 d8 60 00 1c ae 
+	d3 fb cb 5c de 2c 53 2d 
+	d1 2c 8d ba 3a cb 7f 8b 
+	2a b6 22 7b 27 0d ed b4 
+	70 1b 32 1a 25 65 89 9f 
+	30 b9 ec 5d 4b eb 08 6c 
+	a2 05 98 f1 ed cc ad 63 
+	f6 90 ba 66 d2 9b ef 32 
+	2a f0 98 ec 64 60 24 e0 
+	a4 9a 8e 10 1a 15 82 5f 
+	d9 cd ed bf b2 e1 0b 5c 
+	02 d8 51 90 c6 d5 88 39 
+	6e 46 24 27 cf a7 90 bd 
+	36 84 12 80 a8 07 62 d4 
+	12 ab c7 1b 29 7a 21 3d 
+	9b 03 13 f4 f1 c8 66 f4 
+	eb 10 0c a6 2c 86 8e 0b 
+	90 a8 f7 dc 87 d6 c1 69 
+	f9 5b 9d 8a b1 b4 a6 63 
+	15 57 6f b5 cb 84 e6 a7 
+	7b 68 96 97 c9 fc 48 e7 
+	c6 cd e8 35 46 57 87 0a 
+	0c ac fb d8 40 69 b5 e8 
+	4a 9b f6 74 51 8e 0d 1c 
+	74 47 92 2c 6a 0e 3c 68 
+	8a e1 2f 38 ee 01 82 71 
+	48 c3 02 d7 23 a2 01 99 
+	51 b2 00 00 17 0e 70 0f 
+	aa 6d 25 48 da e2 43 5e 
+	9f 29 8d bd 22 75 58 ba 
+	3c 57 4b da df 5b b5 c6 
+	f9 7a 1d f8 15 a0 6b 74 
+	44 c1 7a f3 7d c5 8b 19 
+	a5 09 f0 87 0a 3a 9a c0 
+	15 77 ee 25 2f 6f ab b8 
+	ab d2 a1 d5 7b 3e ec 59 
+	ef 6e 42 26 86 94 da e2 
+	5a 56 02 c7 29 80 d9 98 
+	ea c2 9d 72 8c 64 44 8b 
+	1a 1a dd dc 9f 14 0a 2f 
+	70 f0 9e d2 ad 74 1f a1 
+	a7 a3 70 13 c0 05 c2 b3 
+	24 09 da 04 7c 88 17 07 
+	2e e7 0d f8 f5 38 f3 73 
+	f7 98 2c 7b 35 4d 55 c8 
+	7f a5 09 c2 99 45 fc 64 
+	3a a6 30 ca 15 6e 38 29 
+	a5 e2 73 d7 30 b4 7a e8 
+	24 07 50 38 2d d2 72 73 
+	e1 15 9e c9 b1 93 6e 3a 
+	9d 79 cf 8a e1 00 49 2a 
+	c4 4b ea d8 7d dd c7 61 
+	6b 7f 86 88 53 36 5a 39 
+	52 0a 3c 26 8c 63 2c 94 
+	b7 7b 42 1a e7 ef 77 27 
+	10 d5 5d 49 49 44 ba 4e 
+	c4 42 ee f7 cb 76 bd 37 
+	c9 f7 a7 83 d9 ac f9 7b 
+	62 de 3d 7b 3e be 6a 2b 
+	31 0b 9f 18 4e b5 d2 98 
+	1f 80 b4 60 21 10 f2 24 
+	fd 99 3d a3 46 3a 93 66 
+	f6 76 db 5a 5c d0 1a da 
+	dd fe d8 3d 81 0d 10 1c 
+	88 57 4b f1 d6 bd 54 62 
+	bd 32 40 8b 1d 01 86 b5 
+	cd 26 aa 58 cf a8 ed 9a 
+	c0 fd 7f 8c 86 93 ac f3 
+	95 19 ca 41 ba 3a b4 88 
+	29 8b 1b 5f c3 04 7a e5 
+	53 55 d9 a7 b6 f5 00 37 
+	bc ce 37 d2 69 bc e6 8b 
+	12 91 d0 18 4f 12 af 23 
+	98 ed c0 3d ad 59 12 a6 
+	6c 9c 64 35 05 cc dd f3 
+	7f 7e 46 2d 97 e4 0a 42 
+	23 cc d9 c6 f0 7e 3c 47 
+	ae 95 41 d3 bc e2 75 7a 
+	f3 66 cd 29 7a 0a 46 39 
+	64 77 32 3a a5 d3 ec 8a 
+	f4 ca 1d c7 56 2a b8 ad 
+	47 76 c1 92 47 bc ed 9f 
+	4a 6a 0a 10 d9 8a d8 49 
+	4e 9f 38 14 0b 5d 5f b5 
+	da 0a 34 e2 65 c5 b7 65 
+	a7 94 d3 cd 22 7d c9 cf 
+	9f 08 b0 71 35 11 26 9c 
+	2f 5f f6 7c ab ac 0d 2f 
+	3f 1b 30 bd 48 da 11 32 
+	23 db 60 14 2c 68 99 68 
+	7c 73 d8 5e a3 3f 25 5b 
+	8d be 7e 52 e1 33 aa 63 
+	29 67 29 7b 38 34 fd a1 
+	ae b8 a8 eb f8 fc 4c 2c 
+	4c 30 90 b5 f2 5e 74 0b 
+	7a f6 7b 65 c6 e5 54 6c 
+	d0 0b 54 90 c3 ee df 60 
+	3f 33 84 fd 70 ef 42 f5 
+	24 fa b1 94 ca 17 27 f2 
+	3d 97 be 8c 92 49 47 b9 
+	ee 00 0f 9c 5b ac f8 08 
+	8e f2 25 72 6d 2a ba 4f 
+	0a 28 16 d2 9e bf e3 a0 
+	81 0f c9 d5 9c 49 27 0b 
+	91 d6 e6 a1 c3 0e 48 d8 
+	40 80 ad 4b e8 37 ba 2c 
+	74 21 15 7c 90 88 1c 90 
+	99 72 8f 4b ec 64 49 2c 
+	7d 06 fe cb 59 f6 82 7a 
+	fe be 8c 64 5b 82 7c b7 
+	79 a0 56 37 9c 37 d0 0c 
+	df 5c 12 a3 84 f3 8b 06 
+	f2 2d b4 94 c7 2f 7e 1a 
+	0e 84 1f 64 33 91 f8 f1 
+	dc 76 ae b1 7c bb bd 26 
+	b9 de 1d e3 d7 f7 e0 cb 
+	5d 24 12 7a 08 a3 76 b3 
+	24 f1 e3 a1 dd ec 53 4f 
+	0b 56 05 97 da f6 6a 0f 
+	c7 34 d9 97 d3 ca 3b d3 
+	f0 a0 8c 68 88 12 7d c1 
+	5e 89 a5 00 0b 9e ba 71 
+	2c 59 2b 12 a2 28 17 01 
+	8c 84 20 d7 08 7e 10 fa 
+	ac 0b 5e 8d a4 9f 46 6b 
+	69 d4 0c dc 75 69 cb 55 
+	e0 ea dc 93 75 66 cc b4 
+	a5 1e 2e 30 94 e2 82 5e 
+	7d ef 64 46 44 d4 2d cf 
+	b8 b8 cd 23 c2 af f6 7a 
+	da fa 97 9e c7 3e be 81 
+	23 93 a9 3b da 06 d8 65 
+	a0 7f 9b f4 e9 85 40 57 
+	76 e1 fa bf bd 3a c8 97 
+	e2 51 87 10 da fd ac 36 
+	65 a9 08 a8 ba 3a 86 99 
+	64 4f e4 d8 55 bd 55 d5 
+	92 1e 58 94 ed 95 36 91 
+	f5 0a 33 9d 7f 9e dc 92 
+	5e 6e 6a 17 0b 5a 77 0d 
+	02 db 21 43 3c 66 00 16 
+	df 82 4a 6d 37 9e d9 94 
+	bd 33 9d 68 a7 7a f4 c2 
+	ab b2 f3 78 53 16 f0 c1 
+	51 bd 13 d7 14 1c b4 5e 
+	67 55 de 32 22 7f 82 8a 
+	b2 fa 8c 8a ee 2a b8 db 
+	35 3b fe c9 cd 2b 34 c4 
+	59 2b 40 91 ec 53 38 13 
+	f3 66 fc 18 3f 47 7d bf 
+	d3 bd 57 4a 66 0b 6f 9e 
+	bd 2a e5 6d 1d ed bc e1 
+	30 94 cb 8b fb de 54 a0 
+	8e 21 42 25 6f 9d 78 44 
+	be 92 4a a4 96 78 78 7c 
+	a9 39 39 42 27 11 60 29 
+	98 fe e8 4e 9a 97 af 1e 
+	3d 70 fb f6 91 e8 54 97 
+	d7 26 b8 99 37 bc fc 26 
+	97 a5 f3 6d f9 58 b5 e0 
+	d9 86 94 c3 eb f7 b7 66 
+	04 71 5d 47 90 89 a6 5c 
+	e8 28 34 de 39 37 b7 5b 
+	c2 aa 84 05 b3 16 df 6b 
+	52 0b 98 03 16 dc 9a a0 
+	95 08 8b 39 6b 5e 7b 4e 
+	a0 94 f0 94 d6 cc c2 b8 
+	96 7d 03 e8 34 bb 8b 39 
+	54 66 19 af 06 d1 39 71 
+	44 c4 62 9c 55 f3 9e b8 
+	ce 68 a8 d6 d1 4c 24 21 
+	01 55 df 60 11 44 bf c0 
+	39 69 d2 af fe ea ef 5d 
+	48 04 5e 93 73 f1 f7 c8 
+	8e 15 5e 9b e4 07 5b 7a 
+	f3 ab b3 50 55 dc 8f 5f 
+	cd 2f 4a 5c f7 96 8a b7 
+	84 f8 15 72 7c af 08 8a 
+	f3 85 37 a0 7b 57 6f 87 
+	dd be aa 70 f4 f9 50 73 
+	ba 3b 11 65 b2 05 89 6c 
+	a0 90 c3 06 d6 c2 dd ce 
+	47 b4 93 82 49 56 3f 3c 
+	3b f8 f9 7c 79 d6 9f 19 
+	d8 81 22 4e c3 13 00 33 
+	8f 3f 37 c8 83 d2 97 c2 
+	a2 2a e6 b2 03 15 97 b4 
+	79 ba 35 42 13 02 a6 63 
+	2c 4e d1 54 67 47 9e ca 
+	0e 70 f7 b2 0b 86 ac 17 
+	2b 20 cb 97 c8 72 7c 98 
+	11 28 55 e9 73 e8 58 c4 
+	67 26 c1 7e 21 0c c5 95 
+	fd 8f 58 b9 f6 71 24 00 
+	0d 12 8f 5d 43 63 fa a6 
+	52 04 3e e4 16 c9 cf cd 
+	f6 76 ad 6b 96 94 e2 54 
+	6f b8 b3 2d bf d5 8e 09 
+	bf f6 82 4c 10 f9 50 2d 
+	d4 14 36 93 69 de 20 b4 
+	89 6e 71 42 3a 96 4e 9f 
+	4f 0b 6d fb f9 79 92 2d 
+	c6 ea c6 e1 f8 ee 0c c4 
+	38 21 06 de 4b e9 93 97 
+	b5 ec 8e 22 59 1d d1 3b 
+	13 08 76 b5 dc ac f6 94 
+	b9 06 0e 68 9d 95 0b 73 
+	e2 44 8c 8e ed c9 f3 a8 
+	e3 9e de 4c 18 82 5c f2 
+	24 15 90 9f 41 e1 fc 4a 
+	89 89 7e 3d 75 9c 5b 7d 
+	0a 43 51 bb 9f 03 27 05 
+	aa 8d d2 a5 03 0a 3e f5 
+	3e d9 bc 0b 94 ec 7e 3f 
+	2f 57 6e 70 e5 5c 0c d4 
+	32 42 2d e0 b2 da f5 24 
+	29 a0 59 07 4e ad 61 83 
+	bc ce 4e c9 cb 5b 82 4e 
+	c9 b4 63 20 b0 2e f0 ac 
+	fc 1e 26 90 90 bb 94 c1 
+	60 2c 68 b0 5f de 12 74 
+	22 5a 62 b7 63 ed d9 bf 
+	db 46 63 0f b6 0c c8 aa 
+	95 2d c3 03 1d 09 c9 db 
+	6b 9b d8 69 b6 17 39 60 
+	33 ab d7 fc 53 40 84 09 
+	c8 ad 7d d5 9c 32 30 a8 
+	f2 3c 24 e9 a0 7b 40 77 
+	25 3f 24 e6 b8 d1 67 49 
+	12 9e fa 87 01 83 9f 36 
+	88 3f 0f a9 11 48 be 61 
+	74 36 81 13 df 6e 3a b4 
+	71 32 29 7d c3 00 4d 57 
+	53 4c f4 be 67 2c 91 d0 
+	d2 69 ea d4 50 4e c7 57 
+	86 95 37 bf e3 ce 70 d4 
+	06 0d 23 b7 6d 30 a0 98 
+	1e 23 d6 d6 a7 a1 e5 47 
+	71 4f 1e 20 d7 36 6c d4 
+	37 e3 91 cc d3 c8 af 08 
+	a2 ea e7 d4 3c 3f 0f 92 
+	1a e4 20 c5 b1 7f 5e 80 
+	d7 0d 1f 73 e7 cd f8 18 
+	70 1d ea d4 39 57 65 b9 
+	ea d2 7f 9c 52 c6 0f b8 
+	c5 83 be 87 09 dd bd 37 
+	9b 09 e2 47 a2 26 8b 35 
+	3e ce 7b 44 bb aa a1 cb 
+	67 66 d8 53 4a 80 e9 7a 
+	15 87 00 3e b9 0f ad 6c 
+	c5 83 a7 90 a6 3f 22 73 
+	e4 e5 50 3f 42 0a 4b ab 
+	d9 9f 16 f1 d8 49 20 b1 
+	73 d6 d3 d7 ef 6f b6 f9 
+	72 ab e3 b2 ee 06 dd ee 
+	0d 0a 1e 48 e0 b1 95 10 
+	fc 4e cd 10 e0 e4 f6 4a 
+	61 6a 0c b1 9c 3c 2c 89 
+	a4 a2 2e 14 42 03 1f 7c 
+	9e c8 83 a4 a8 fd 66 f3 
+	60 44 bc f0 87 f2 42 38 
+	22 79 b3 38 02 9c 67 4a 
+	9d 6a 49 3d a5 16 eb 09 
+	f6 6e 53 4e 96 81 18 80 
+	d1 27 d5 5f eb 0d f5 0f 
+	8e 1b 45 e4 f8 03 1c 7d 
+	fd 8d b6 f5 45 1d e3 a9 
+	0a 1c 8e 26 9d a2 34 e3 
+	94 b4 7c a1 de 1b 42 14 
+	47 8c 8b 07 21 1c 79 d0 
+	fe b5 ec 60 33 94 df 9a 
+	b4 a4 c1 51 a5 1c 75 75 
+	80 f0 a6 44 c2 d6 d0 07 
+	3e f8 26 83 95 3a a7 8d 
+	a7 9e e6 a6 36 82 6f bc 
+	f7 b3 22 7e 0f b5 c6 e2 
+	83 ba 5a 7a dc b3 51 b1 
+	b9 19 d8 3c 3c 27 e8 41 
+	b6 0d 26 88 1f a6 31 10 
+	fa 95 13 fb ee 09 dc 8f 
+	48 d6 cc ab c0 34 df 67 
+	26 7c 98 f9 31 f2 4b d7 
+	26 a1 a1 d4 1f 61 62 df 
+	82 61 65 99 3d 75 57 75 
+	56 2f 70 08 95 35 4c 10 
+	e2 58 ca 36 78 73 db 46 
+	4c 18 54 6d 2e e7 de 0a 
+	31 fa bc ec 88 52 08 6b 
+	74 16 d2 b5 b7 46 3f 1d 
+	d2 81 f8 2f 51 88 27 d1 
+	61 4b d1 28 60 2b 3a c2 
+	9a a1 da ed b3 14 3d a7 
+	a1 b7 58 ac 13 e6 99 69 
+	ef 48 c4 76 ac 0f b9 0b 
+	69 e5 62 db 27 e3 a0 53 
+	21 05 99 65 c2 b8 c4 6c 
+	c7 25 6a 42 fa 7f 78 76 
+	da e6 87 e4 02 d0 0e 6a 
+	28 61 59 29 87 d6 d8 61 
+	5c f9 39 4d 69 d8 39 6b 
+	75 72 b0 3f 30 b3 4c f9 
+)
--- mono-4.6.2.7+dfsg.orig/mono/cil/make-opcode-def.xsl
+++ mono-4.6.2.7+dfsg/mono/cil/make-opcode-def.xsl
@@ -1,100 +1,100 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-
-
-<!--
- | make-opcode-def.xsl: Translates opcodes from the CIL-opcodes.xml into
- |                      a spec compliant opcodes.def file
- |                      Converted to XSLT from make-opcodes-def.pl
- |
- | See: Common Language Infrastructure (CLI) Part 5: Annexes
- |
- | Author: Sergey Chaban
- |
- | $Id$
-  -->
-
-
-
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-
-
-<xsl:output method="text"/>
-
-
-<xsl:template match="/">
-  <xsl:apply-templates/>
-  <xsl:call-template name="print-trailer"/>
-</xsl:template>
-
-<xsl:template name="to-upper">
-  <xsl:param name="string"/>
-  <xsl:value-of select="translate($string,
-                        'abcdefghijklmnopqrstuvwxyz.-',
-                        'ABCDEFGHIJKLMNOPQRSTUVWXYZ__')"/>
-</xsl:template>
-
-
-<xsl:template name="get-flow">
-  <xsl:param name="flow" select="@flow"/>
-  <xsl:choose>
-    <xsl:when
-         test="contains('next call return branch meta cond-branch',$flow)">
-      <xsl:call-template name="to-upper">
-        <xsl:with-param name="string" select="$flow"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise><xsl:value-of select="'ERROR'"/></xsl:otherwise>
-  </xsl:choose>     
-</xsl:template>
-
-
-<xsl:template match="opdesc/opcode">
-  <xsl:variable name="uname">
-    <xsl:call-template name="to-upper">
-      <xsl:with-param name="string" select="@name"/>
-    </xsl:call-template>
-  </xsl:variable>
-  <xsl:variable name="o1">
-    <xsl:call-template name="to-upper">
-      <xsl:with-param name="string" select="@o1"/>
-    </xsl:call-template>
-  </xsl:variable>
-  <xsl:variable name="f">
-    <xsl:call-template name="get-flow"/>
-  </xsl:variable>
-  <xsl:variable name="count"
-       select="number(not(contains($o1,'FF')))+1"/>OPDEF(CEE_<xsl:value-of
-               select="concat($uname,', &#x22;',@name,'&#x22;, ',
-                              @input,', ',@output,', ',@args,', X, ',
-                              $count,', ',@o1,', ',@o2,', ',$f
-                       )"/>)
-</xsl:template>
-
-
-<xsl:template name="print-trailer">
-#ifndef OPALIAS
-#define _MONO_CIL_OPALIAS_DEFINED_
-#define OPALIAS(a,s,r)
-#endif
-
-OPALIAS(CEE_BRNULL,     "brnull",    CEE_BRFALSE)
-OPALIAS(CEE_BRNULL_S,   "brnull.s",  CEE_BRFALSE_S)
-OPALIAS(CEE_BRZERO,     "brzero",    CEE_BRFALSE)
-OPALIAS(CEE_BRZERO_S,   "brzero.s",  CEE_BRFALSE_S)
-OPALIAS(CEE_BRINST,     "brinst",    CEE_BRTRUE)
-OPALIAS(CEE_BRINST_S,   "brinst.s",  CEE_BRTRUE_S)
-OPALIAS(CEE_LDIND_U8,   "ldind.u8",  CEE_LDIND_I8)
-OPALIAS(CEE_LDELEM_U8,  "ldelem.u8", CEE_LDELEM_I8)
-OPALIAS(CEE_LDX_I4_MIX, "ldc.i4.M1", CEE_LDC_I4_M1)
-OPALIAS(CEE_ENDFAULT,   "endfault",  CEE_ENDFINALLY)
-
-#ifdef _MONO_CIL_OPALIAS_DEFINED_
-#undef OPALIAS
-#undef _MONO_CIL_OPALIAS_DEFINED_
-#endif
-</xsl:template>
-
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+
+<!--
+ | make-opcode-def.xsl: Translates opcodes from the CIL-opcodes.xml into
+ |                      a spec compliant opcodes.def file
+ |                      Converted to XSLT from make-opcodes-def.pl
+ |
+ | See: Common Language Infrastructure (CLI) Part 5: Annexes
+ |
+ | Author: Sergey Chaban
+ |
+ | $Id$
+  -->
+
+
+
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+
+
+<xsl:output method="text"/>
+
+
+<xsl:template match="/">
+  <xsl:apply-templates/>
+  <xsl:call-template name="print-trailer"/>
+</xsl:template>
+
+<xsl:template name="to-upper">
+  <xsl:param name="string"/>
+  <xsl:value-of select="translate($string,
+                        'abcdefghijklmnopqrstuvwxyz.-',
+                        'ABCDEFGHIJKLMNOPQRSTUVWXYZ__')"/>
+</xsl:template>
+
+
+<xsl:template name="get-flow">
+  <xsl:param name="flow" select="@flow"/>
+  <xsl:choose>
+    <xsl:when
+         test="contains('next call return branch meta cond-branch',$flow)">
+      <xsl:call-template name="to-upper">
+        <xsl:with-param name="string" select="$flow"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise><xsl:value-of select="'ERROR'"/></xsl:otherwise>
+  </xsl:choose>     
+</xsl:template>
+
+
+<xsl:template match="opdesc/opcode">
+  <xsl:variable name="uname">
+    <xsl:call-template name="to-upper">
+      <xsl:with-param name="string" select="@name"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="o1">
+    <xsl:call-template name="to-upper">
+      <xsl:with-param name="string" select="@o1"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="f">
+    <xsl:call-template name="get-flow"/>
+  </xsl:variable>
+  <xsl:variable name="count"
+       select="number(not(contains($o1,'FF')))+1"/>OPDEF(CEE_<xsl:value-of
+               select="concat($uname,', &#x22;',@name,'&#x22;, ',
+                              @input,', ',@output,', ',@args,', X, ',
+                              $count,', ',@o1,', ',@o2,', ',$f
+                       )"/>)
+</xsl:template>
+
+
+<xsl:template name="print-trailer">
+#ifndef OPALIAS
+#define _MONO_CIL_OPALIAS_DEFINED_
+#define OPALIAS(a,s,r)
+#endif
+
+OPALIAS(CEE_BRNULL,     "brnull",    CEE_BRFALSE)
+OPALIAS(CEE_BRNULL_S,   "brnull.s",  CEE_BRFALSE_S)
+OPALIAS(CEE_BRZERO,     "brzero",    CEE_BRFALSE)
+OPALIAS(CEE_BRZERO_S,   "brzero.s",  CEE_BRFALSE_S)
+OPALIAS(CEE_BRINST,     "brinst",    CEE_BRTRUE)
+OPALIAS(CEE_BRINST_S,   "brinst.s",  CEE_BRTRUE_S)
+OPALIAS(CEE_LDIND_U8,   "ldind.u8",  CEE_LDIND_I8)
+OPALIAS(CEE_LDELEM_U8,  "ldelem.u8", CEE_LDELEM_I8)
+OPALIAS(CEE_LDX_I4_MIX, "ldc.i4.M1", CEE_LDC_I4_M1)
+OPALIAS(CEE_ENDFAULT,   "endfault",  CEE_ENDFINALLY)
+
+#ifdef _MONO_CIL_OPALIAS_DEFINED_
+#undef OPALIAS
+#undef _MONO_CIL_OPALIAS_DEFINED_
+#endif
+</xsl:template>
+
+
+</xsl:stylesheet>
--- mono-4.6.2.7+dfsg.orig/mono/metadata/normalization-tables.h
+++ mono-4.6.2.7+dfsg/mono/metadata/normalization-tables.h
@@ -1,3920 +1,3920 @@
-static const guint8 props [] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,0,
-0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
-128,0,128,128,128,128,128,128,128,128,128,0,0,0,0,0,
-128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
-128,0,128,128,128,128,128,128,128,128,128,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,0,0,0,0,0,0,0,146,0,18,0,0,0,0,18,
-0,0,18,18,146,18,0,128,18,18,18,0,18,18,18,0,
-3,3,131,3,131,131,128,131,3,3,131,3,3,3,3,131,
-0,3,3,3,131,131,131,0,128,3,3,3,131,3,0,0,
-3,3,131,3,131,131,128,131,3,3,131,3,3,3,3,131,
-0,3,3,3,131,131,131,0,128,3,3,3,131,3,0,3,
-3,3,131,131,3,3,3,3,3,3,3,3,3,3,3,3,
-0,0,131,131,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,
-3,0,18,18,3,3,3,3,0,3,3,3,3,3,3,18,
-18,0,0,3,3,3,3,3,3,18,0,0,131,131,3,3,
-3,3,0,0,3,3,3,3,3,3,131,131,3,3,3,3,
-131,131,3,3,3,3,0,0,131,131,131,131,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,146,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-131,131,0,0,0,0,0,0,0,0,0,0,0,0,0,131,
-131,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,
-0,0,0,0,18,18,18,18,18,18,18,18,18,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,
-3,3,3,3,0,0,3,3,3,3,131,131,3,3,3,3,
-3,18,18,18,3,3,0,0,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,
-0,0,0,0,0,0,131,131,131,131,3,3,3,3,131,131,
-3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,128,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,18,18,18,18,18,18,0,0,
-18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-168,168,168,168,168,0,168,168,168,168,168,168,168,0,0,168,
-0,168,0,168,168,0,0,0,0,0,0,168,0,0,0,0,
-0,0,0,168,168,168,168,168,168,0,0,0,0,168,168,0,
-168,168,0,0,0,0,0,0,168,0,0,0,0,0,0,0,
-87,87,168,87,87,168,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,87,0,0,0,0,0,18,0,0,0,87,0,
-0,0,0,0,18,147,131,87,131,131,131,0,131,0,131,131,
-131,128,0,0,0,128,0,128,0,128,0,0,0,0,0,128,
-0,128,0,0,0,128,0,0,0,128,3,3,131,131,131,131,
-131,128,0,0,0,128,0,128,0,128,0,0,0,0,0,128,
-0,128,0,0,0,128,0,0,0,128,131,131,131,131,131,0,
-18,18,146,19,19,18,18,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,0,18,18,0,0,0,18,0,0,0,0,0,0,
-3,3,0,3,0,0,128,3,0,0,0,0,3,3,3,0,
-128,0,0,128,0,128,128,128,128,3,128,0,0,0,128,0,
-0,0,0,128,0,0,0,128,0,0,0,128,0,128,0,0,
-128,0,0,128,0,128,128,128,128,3,128,0,0,0,128,0,
-0,0,0,128,0,0,0,128,0,0,0,128,0,128,0,0,
-3,3,0,3,0,0,128,3,0,0,0,0,3,3,3,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,128,128,3,3,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,0,0,3,3,128,128,3,3,3,3,3,3,
-0,0,3,3,3,3,3,3,128,128,3,3,3,3,3,3,
-3,3,3,3,3,3,0,0,3,3,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,128,0,0,128,128,128,0,0,128,0,0,128,
-0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
-128,128,128,128,128,128,128,0,128,128,128,128,128,0,128,0,
-128,128,0,128,128,0,128,128,128,128,128,0,0,0,0,0,
-0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3,3,3,3,3,128,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,128,0,128,0,0,0,0,0,
-0,0,0,168,168,168,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,18,18,18,18,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,128,3,0,128,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,128,128,128,0,0,0,0,128,0,0,0,
-0,128,128,0,0,0,0,0,128,3,0,128,0,0,0,128,
-128,3,0,128,3,0,0,0,0,0,0,0,168,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,87,87,87,87,87,87,87,87,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,128,
-0,0,0,0,0,0,0,0,0,0,0,0,128,0,168,0,
-0,0,0,0,0,0,0,128,0,0,0,3,3,0,0,0,
-0,0,0,0,0,0,0,168,0,0,0,0,87,87,0,87,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,128,128,0,0,0,0,128,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,
-0,0,128,87,0,0,87,0,128,0,0,0,128,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,87,87,87,0,0,87,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,128,0,168,0,
-0,0,0,0,0,0,0,128,3,0,0,3,3,0,0,0,
-0,0,0,0,0,0,168,168,0,0,0,0,87,87,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,128,0,3,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0,
-0,0,0,0,0,0,128,128,0,0,3,3,3,0,0,0,
-0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,128,0,3,0,0,0,0,0,0,0,
-0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
-3,0,168,0,0,0,128,3,3,0,131,3,0,0,0,0,
-0,0,0,0,0,168,168,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0,
-0,0,0,0,0,0,128,128,0,0,3,3,3,0,0,0,
-0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,168,
-0,0,0,0,0,0,0,0,0,128,3,0,131,3,3,168,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-128,0,128,87,0,0,0,0,0,0,0,0,128,87,0,0,
-0,128,87,0,0,0,128,87,0,0,0,128,87,0,0,0,
-0,0,0,0,0,0,0,0,0,87,0,0,0,0,0,0,
-0,128,128,87,128,87,87,18,87,18,0,0,0,0,0,0,
-128,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-128,0,128,87,0,0,0,0,0,0,0,0,128,87,0,0,
-0,128,87,0,0,0,128,87,0,0,0,128,87,0,0,0,
-0,0,128,128,0,128,0,128,0,87,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,128,3,0,0,0,0,0,0,0,168,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
-40,40,40,40,40,40,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,40,40,40,40,40,40,40,40,
-40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
-40,40,40,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,128,3,128,3,128,3,128,3,128,3,0,
-0,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,168,0,0,0,0,128,3,128,3,128,128,
-3,3,128,3,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,
-18,18,18,18,18,18,18,18,18,18,18,0,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,
-0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,131,131,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,131,131,3,3,3,3,
-3,3,131,131,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,18,19,0,0,0,0,
-131,131,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,131,131,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,131,131,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,
-131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
-131,131,3,3,3,3,0,0,131,131,3,3,3,3,0,0,
-131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
-131,131,3,3,3,3,3,3,131,131,3,3,3,3,3,3,
-131,131,3,3,3,3,0,0,131,131,3,3,3,3,0,0,
-131,131,3,3,3,3,3,3,0,131,0,3,0,3,0,3,
-131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
-131,87,3,87,131,87,3,87,3,87,3,87,131,87,0,0,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,0,131,3,3,3,3,87,3,18,87,146,
-18,19,3,3,3,0,131,3,3,87,3,87,3,19,19,19,
-3,3,3,87,0,0,3,3,3,3,3,87,0,19,19,19,
-3,3,3,87,3,3,3,3,3,3,3,87,3,19,87,87,
-0,0,3,3,3,0,131,3,3,87,3,87,3,87,146,0,
-87,87,146,146,18,18,18,18,18,18,18,0,0,0,0,0,
-0,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,
-0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,18,
-0,0,0,18,18,0,18,18,0,0,0,0,18,0,18,0,
-0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,
-0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,0,0,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
-18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,0,18,18,18,0,18,18,18,18,18,18,18,
-18,18,18,18,0,18,18,0,0,18,18,18,18,18,0,0,
-18,18,18,0,18,0,87,0,18,0,87,87,18,18,0,18,
-18,18,0,18,18,18,18,18,18,18,0,18,18,18,18,18,
-18,0,0,0,0,18,18,18,18,18,0,0,0,0,0,0,
-0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-128,0,128,0,128,0,0,0,0,0,3,3,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,
-128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,128,3,0,0,0,128,3,0,128,3,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,128,3,128,3,0,0,0,0,0,18,18,0,18,
-18,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,
-0,3,0,128,3,128,0,3,128,3,0,0,0,128,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,128,3,0,128,128,0,0,0,0,0,0,0,3,3,3,
-3,3,128,128,3,3,128,128,3,3,128,128,128,128,0,0,
-3,3,128,128,3,3,128,128,3,3,0,0,0,0,0,0,
-0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,128,0,0,0,0,0,128,128,0,128,3,3,3,3,
-0,0,128,128,128,128,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3,3,3,3,0,0,0,0,0,0,3,3,3,3,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,87,87,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,87,128,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,18,0,18,18,18,0,0,0,0,0,
-0,0,0,0,0,0,128,0,0,0,0,128,3,128,3,128,
-3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,
-3,128,3,0,128,3,128,3,128,3,0,0,0,0,0,128,
-3,3,128,3,3,128,3,3,128,3,3,128,3,3,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,3,0,0,0,0,168,168,18,18,128,3,18,
-0,0,0,0,0,0,128,0,0,0,0,128,3,128,3,128,
-3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,
-3,128,3,0,128,3,128,3,128,3,0,0,0,0,0,128,
-3,3,128,3,3,128,3,3,128,3,3,128,3,3,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
-128,128,128,0,3,0,0,3,3,3,3,0,0,128,3,18,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
-0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,0,0,
-87,0,87,0,0,87,87,87,87,87,87,87,87,87,87,0,
-87,0,87,0,0,87,87,0,0,0,87,87,87,87,0,0,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,0,0,0,0,0,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
-87,87,87,87,87,87,87,87,87,87,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,
-0,0,0,18,18,18,18,18,0,0,0,0,0,87,0,87,
-18,18,18,18,18,18,18,18,18,18,87,87,87,87,87,87,
-87,87,87,87,87,87,87,0,87,87,87,87,87,0,87,0,
-87,87,0,87,87,0,87,87,87,215,87,87,87,87,87,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,0,0,18,18,18,18,18,18,18,18,18,
-18,18,18,0,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,0,18,18,18,18,0,0,0,0,
-18,18,18,0,18,0,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,
-0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
-0,0,18,18,18,18,18,18,0,0,18,18,18,18,18,18,
-0,0,18,18,18,18,18,18,0,0,18,18,18,0,0,0,
-18,18,18,18,18,18,18,0,18,18,18,18,18,18,18,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0};
-static const guint32 mappedChars [] = {
-0,32,0,32,769,0,32,771,0,32,772,0,32,773,0,32,
-774,0,32,775,0,32,776,0,32,778,0,32,779,0,32,787,
-0,32,788,0,32,807,0,32,808,0,32,819,0,32,834,0,
-32,837,0,32,1611,0,32,1612,0,32,1612,1617,0,32,1613,0,
-32,1613,1617,0,32,1614,0,32,1614,1617,0,32,1615,0,32,1615,
-1617,0,32,1616,0,32,1616,1617,0,32,1617,0,32,1617,1648,0,
-32,1618,0,32,12441,0,32,12442,0,33,0,33,33,0,33,63,
-0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,40,
-49,41,0,40,49,48,41,0,40,49,49,41,0,40,49,50,
-41,0,40,49,51,41,0,40,49,52,41,0,40,49,53,41,
-0,40,49,54,41,0,40,49,55,41,0,40,49,56,41,0,
-40,49,57,41,0,40,50,41,0,40,50,48,41,0,40,51,
-41,0,40,52,41,0,40,53,41,0,40,54,41,0,40,55,
-41,0,40,56,41,0,40,57,41,0,40,97,41,0,40,98,
-41,0,40,99,41,0,40,100,41,0,40,101,41,0,40,102,
-41,0,40,103,41,0,40,104,41,0,40,105,41,0,40,106,
-41,0,40,107,41,0,40,108,41,0,40,109,41,0,40,110,
-41,0,40,111,41,0,40,112,41,0,40,113,41,0,40,114,
-41,0,40,115,41,0,40,116,41,0,40,117,41,0,40,118,
-41,0,40,119,41,0,40,120,41,0,40,121,41,0,40,122,
-41,0,40,4352,41,0,40,4352,4449,41,0,40,4354,41,0,40,
-4354,4449,41,0,40,4355,41,0,40,4355,4449,41,0,40,4357,41,
-0,40,4357,4449,41,0,40,4358,41,0,40,4358,4449,41,0,40,
-4359,41,0,40,4359,4449,41,0,40,4361,41,0,40,4361,4449,41,
-0,40,4363,41,0,40,4363,4449,41,0,40,4363,4457,4364,4453,4523,
-41,0,40,4363,4457,4370,4462,41,0,40,4364,41,0,40,4364,4449,
-41,0,40,4364,4462,41,0,40,4366,41,0,40,4366,4449,41,0,
-40,4367,41,0,40,4367,4449,41,0,40,4368,41,0,40,4368,4449,
-41,0,40,4369,41,0,40,4369,4449,41,0,40,4370,41,0,40,
-4370,4449,41,0,40,19968,41,0,40,19971,41,0,40,19977,41,0,
-40,20061,41,0,40,20108,41,0,40,20116,41,0,40,20195,41,0,
-40,20225,41,0,40,20241,41,0,40,20843,41,0,40,20845,41,0,
-40,21172,41,0,40,21313,41,0,40,21332,41,0,40,21517,41,0,
-40,21628,41,0,40,22235,41,0,40,22303,41,0,40,23398,41,0,
-40,26085,41,0,40,26376,41,0,40,26377,41,0,40,26408,41,0,
-40,26666,41,0,40,27700,41,0,40,28779,41,0,40,29305,41,0,
-40,30435,41,0,40,31038,41,0,40,31069,41,0,40,31085,41,0,
-40,33258,41,0,40,33267,41,0,40,36001,41,0,40,36039,41,0,
-40,37329,41,0,41,0,42,0,43,0,44,0,45,0,46,0,
-46,46,0,46,46,46,0,47,0,48,0,48,28857,0,49,0,
-49,46,0,49,48,0,49,48,46,0,49,48,26085,0,49,48,
-26376,0,49,48,28857,0,49,49,0,49,49,46,0,49,49,26085,
-0,49,49,26376,0,49,49,28857,0,49,50,0,49,50,46,0,
-49,50,26085,0,49,50,26376,0,49,50,28857,0,49,51,0,49,
-51,46,0,49,51,26085,0,49,51,28857,0,49,52,0,49,52,
-46,0,49,52,26085,0,49,52,28857,0,49,53,0,49,53,46,
-0,49,53,26085,0,49,53,28857,0,49,54,0,49,54,46,0,
-49,54,26085,0,49,54,28857,0,49,55,0,49,55,46,0,49,
-55,26085,0,49,55,28857,0,49,56,0,49,56,46,0,49,56,
-26085,0,49,56,28857,0,49,57,0,49,57,46,0,49,57,26085,
-0,49,57,28857,0,49,8260,0,49,8260,50,0,49,8260,51,0,
-49,8260,52,0,49,8260,53,0,49,8260,54,0,49,8260,56,0,
-49,26085,0,49,26376,0,49,28857,0,50,0,50,46,0,50,48,
-0,50,48,46,0,50,48,26085,0,50,48,28857,0,50,49,0,
-50,49,26085,0,50,49,28857,0,50,50,0,50,50,26085,0,50,
-50,28857,0,50,51,0,50,51,26085,0,50,51,28857,0,50,52,
-0,50,52,26085,0,50,52,28857,0,50,53,0,50,53,26085,0,
-50,54,0,50,54,26085,0,50,55,0,50,55,26085,0,50,56,
-0,50,56,26085,0,50,57,0,50,57,26085,0,50,8260,51,0,
-50,8260,53,0,50,26085,0,50,26376,0,50,28857,0,51,0,51,
-46,0,51,48,0,51,48,26085,0,51,49,0,51,49,26085,0,
-51,50,0,51,51,0,51,52,0,51,53,0,51,54,0,51,
-55,0,51,56,0,51,57,0,51,8260,52,0,51,8260,53,0,
-51,8260,56,0,51,26085,0,51,26376,0,51,28857,0,52,0,52,
-46,0,52,48,0,52,49,0,52,50,0,52,51,0,52,52,
-0,52,53,0,52,54,0,52,55,0,52,56,0,52,57,0,
-52,8260,53,0,52,26085,0,52,26376,0,52,28857,0,53,0,53,
-46,0,53,48,0,53,8260,54,0,53,8260,56,0,53,26085,0,
-53,26376,0,53,28857,0,54,0,54,46,0,54,26085,0,54,26376,
-0,54,28857,0,55,0,55,46,0,55,8260,56,0,55,26085,0,
-55,26376,0,55,28857,0,56,0,56,46,0,56,26085,0,56,26376,
-0,56,28857,0,57,0,57,46,0,57,26085,0,57,26376,0,57,
-28857,0,58,0,58,58,61,0,59,0,60,0,60,824,0,61,
-0,61,61,0,61,61,61,0,61,824,0,62,0,62,824,0,
-63,0,63,33,0,63,63,0,64,0,65,0,65,85,0,65,
-768,0,65,769,0,65,770,0,65,771,0,65,772,0,65,774,
-0,65,775,0,65,776,0,65,777,0,65,778,0,65,780,0,
-65,783,0,65,785,0,65,803,0,65,805,0,65,808,0,65,
-8725,109,0,66,0,66,113,0,66,775,0,66,803,0,66,817,
-0,67,0,67,111,46,0,67,769,0,67,770,0,67,775,0,
-67,780,0,67,807,0,67,8725,107,103,0,68,0,68,90,0,
-68,122,0,68,381,0,68,382,0,68,775,0,68,780,0,68,
-803,0,68,807,0,68,813,0,68,817,0,69,0,69,768,0,
-69,769,0,69,770,0,69,771,0,69,772,0,69,774,0,69,
-775,0,69,776,0,69,777,0,69,780,0,69,783,0,69,785,
-0,69,803,0,69,807,0,69,808,0,69,813,0,69,816,0,
-70,0,70,65,88,0,70,775,0,71,0,71,66,0,71,72,
-122,0,71,80,97,0,71,121,0,71,769,0,71,770,0,71,
-772,0,71,774,0,71,775,0,71,780,0,71,807,0,72,0,
-72,80,0,72,103,0,72,122,0,72,770,0,72,775,0,72,
-776,0,72,780,0,72,803,0,72,807,0,72,814,0,73,0,
-73,73,0,73,73,73,0,73,74,0,73,85,0,73,86,0,
-73,88,0,73,768,0,73,769,0,73,770,0,73,771,0,73,
-772,0,73,774,0,73,775,0,73,776,0,73,777,0,73,780,
-0,73,783,0,73,785,0,73,803,0,73,808,0,73,816,0,
-74,0,74,770,0,75,0,75,66,0,75,75,0,75,77,0,
-75,769,0,75,780,0,75,803,0,75,807,0,75,817,0,76,
-0,76,74,0,76,84,68,0,76,106,0,76,183,0,76,769,
-0,76,780,0,76,803,0,76,807,0,76,813,0,76,817,0,
-77,0,77,66,0,77,72,122,0,77,80,97,0,77,86,0,
-77,87,0,77,769,0,77,775,0,77,803,0,77,937,0,78,
-0,78,74,0,78,106,0,78,111,0,78,768,0,78,769,0,
-78,771,0,78,775,0,78,780,0,78,803,0,78,807,0,78,
-813,0,78,817,0,79,0,79,768,0,79,769,0,79,770,0,
-79,771,0,79,772,0,79,774,0,79,775,0,79,776,0,79,
-777,0,79,779,0,79,780,0,79,783,0,79,785,0,79,795,
-0,79,803,0,79,808,0,80,0,80,72,0,80,80,77,0,
-80,82,0,80,84,69,0,80,97,0,80,769,0,80,775,0,
-81,0,82,0,82,115,0,82,769,0,82,775,0,82,780,0,
-82,783,0,82,785,0,82,803,0,82,807,0,82,817,0,83,
-0,83,77,0,83,118,0,83,769,0,83,770,0,83,775,0,
-83,780,0,83,803,0,83,806,0,83,807,0,84,0,84,69,
-76,0,84,72,122,0,84,77,0,84,775,0,84,780,0,84,
-803,0,84,806,0,84,807,0,84,813,0,84,817,0,85,0,
-85,768,0,85,769,0,85,770,0,85,771,0,85,772,0,85,
-774,0,85,776,0,85,777,0,85,778,0,85,779,0,85,780,
-0,85,783,0,85,785,0,85,795,0,85,803,0,85,804,0,
-85,808,0,85,813,0,85,816,0,86,0,86,73,0,86,73,
-73,0,86,73,73,73,0,86,771,0,86,803,0,86,8725,109,
-0,87,0,87,98,0,87,768,0,87,769,0,87,770,0,87,
-775,0,87,776,0,87,803,0,88,0,88,73,0,88,73,73,
-0,88,775,0,88,776,0,89,0,89,768,0,89,769,0,89,
-770,0,89,771,0,89,772,0,89,775,0,89,776,0,89,777,
-0,89,803,0,90,0,90,769,0,90,770,0,90,775,0,90,
-780,0,90,803,0,90,817,0,91,0,92,0,93,0,94,0,
-95,0,96,0,97,0,97,46,109,46,0,97,47,99,0,97,
-47,115,0,97,702,0,97,768,0,97,769,0,97,770,0,97,
-771,0,97,772,0,97,774,0,97,775,0,97,776,0,97,777,
-0,97,778,0,97,780,0,97,783,0,97,785,0,97,803,0,
-97,805,0,97,808,0,98,0,98,97,114,0,98,775,0,98,
-803,0,98,817,0,99,0,99,47,111,0,99,47,117,0,99,
-97,108,0,99,99,0,99,100,0,99,109,0,99,109,178,0,
-99,109,179,0,99,769,0,99,770,0,99,775,0,99,780,0,
-99,807,0,100,0,100,66,0,100,97,0,100,109,0,100,109,
-178,0,100,109,179,0,100,122,0,100,382,0,100,775,0,100,
-780,0,100,803,0,100,807,0,100,813,0,100,817,0,100,8467,
-0,101,0,101,86,0,101,114,103,0,101,768,0,101,769,0,
-101,770,0,101,771,0,101,772,0,101,774,0,101,775,0,101,
-776,0,101,777,0,101,780,0,101,783,0,101,785,0,101,803,
-0,101,807,0,101,808,0,101,813,0,101,816,0,102,0,102,
-102,0,102,102,105,0,102,102,108,0,102,105,0,102,108,0,
-102,109,0,102,775,0,103,0,103,97,108,0,103,769,0,103,
-770,0,103,772,0,103,774,0,103,775,0,103,780,0,103,807,
-0,104,0,104,80,97,0,104,97,0,104,770,0,104,775,0,
-104,776,0,104,780,0,104,803,0,104,807,0,104,814,0,104,
-817,0,105,0,105,105,0,105,105,105,0,105,106,0,105,110,
-0,105,118,0,105,120,0,105,768,0,105,769,0,105,770,0,
-105,771,0,105,772,0,105,774,0,105,776,0,105,777,0,105,
-780,0,105,783,0,105,785,0,105,803,0,105,808,0,105,816,
-0,106,0,106,770,0,106,780,0,107,0,107,65,0,107,72,
-122,0,107,80,97,0,107,86,0,107,87,0,107,99,97,108,
-0,107,103,0,107,109,0,107,109,178,0,107,109,179,0,107,
-116,0,107,769,0,107,780,0,107,803,0,107,807,0,107,817,
-0,107,937,0,107,8467,0,108,0,108,106,0,108,109,0,108,
-110,0,108,111,103,0,108,120,0,108,183,0,108,769,0,108,
-780,0,108,803,0,108,807,0,108,813,0,108,817,0,109,0,
-109,65,0,109,86,0,109,87,0,109,98,0,109,103,0,109,
-105,108,0,109,109,0,109,109,178,0,109,109,179,0,109,111,
-108,0,109,115,0,109,178,0,109,179,0,109,769,0,109,775,
-0,109,803,0,109,8467,0,109,8725,115,0,109,8725,115,178,0,
-110,0,110,65,0,110,70,0,110,86,0,110,87,0,110,106,
-0,110,109,0,110,115,0,110,768,0,110,769,0,110,771,0,
-110,775,0,110,780,0,110,803,0,110,807,0,110,813,0,110,
-817,0,111,0,111,86,0,111,768,0,111,769,0,111,770,0,
-111,771,0,111,772,0,111,774,0,111,775,0,111,776,0,111,
-777,0,111,779,0,111,780,0,111,783,0,111,785,0,111,795,
-0,111,803,0,111,808,0,112,0,112,46,109,46,0,112,65,
-0,112,70,0,112,86,0,112,87,0,112,99,0,112,115,0,
-112,769,0,112,775,0,113,0,114,0,114,97,100,0,114,97,
-100,8725,115,0,114,97,100,8725,115,178,0,114,769,0,114,775,
-0,114,780,0,114,783,0,114,785,0,114,803,0,114,807,0,
-114,817,0,115,0,115,114,0,115,116,0,115,769,0,115,770,
-0,115,775,0,115,780,0,115,803,0,115,806,0,115,807,0,
-116,0,116,775,0,116,776,0,116,780,0,116,803,0,116,806,
-0,116,807,0,116,813,0,116,817,0,117,0,117,768,0,117,
-769,0,117,770,0,117,771,0,117,772,0,117,774,0,117,776,
-0,117,777,0,117,778,0,117,779,0,117,780,0,117,783,0,
-117,785,0,117,795,0,117,803,0,117,804,0,117,808,0,117,
-813,0,117,816,0,118,0,118,105,0,118,105,105,0,118,105,
-105,105,0,118,771,0,118,803,0,119,0,119,768,0,119,769,
-0,119,770,0,119,775,0,119,776,0,119,778,0,119,803,0,
-120,0,120,105,0,120,105,105,0,120,775,0,120,776,0,121,
-0,121,768,0,121,769,0,121,770,0,121,771,0,121,772,0,
-121,775,0,121,776,0,121,777,0,121,778,0,121,803,0,122,
-0,122,769,0,122,770,0,122,775,0,122,780,0,122,803,0,
-122,817,0,123,0,124,0,125,0,126,0,162,0,163,0,165,
-0,166,0,168,768,0,168,769,0,168,834,0,172,0,175,0,
-176,67,0,176,70,0,180,0,183,0,194,768,0,194,769,0,
-194,771,0,194,777,0,196,772,0,197,0,197,769,0,198,0,
-198,769,0,198,772,0,199,769,0,202,768,0,202,769,0,202,
-771,0,202,777,0,207,769,0,212,768,0,212,769,0,212,771,
-0,212,777,0,213,769,0,213,772,0,213,776,0,214,772,0,
-216,769,0,220,768,0,220,769,0,220,772,0,220,780,0,226,
-768,0,226,769,0,226,771,0,226,777,0,228,772,0,229,769,
-0,230,769,0,230,772,0,231,769,0,234,768,0,234,769,0,
-234,771,0,234,777,0,239,769,0,240,0,244,768,0,244,769,
-0,244,771,0,244,777,0,245,769,0,245,772,0,245,776,0,
-246,772,0,248,769,0,252,768,0,252,769,0,252,772,0,252,
-780,0,258,768,0,258,769,0,258,771,0,258,777,0,259,768,
-0,259,769,0,259,771,0,259,777,0,274,768,0,274,769,0,
-275,768,0,275,769,0,295,0,331,0,332,768,0,332,769,0,
-333,768,0,333,769,0,346,775,0,347,775,0,352,775,0,353,
-775,0,360,769,0,361,769,0,362,776,0,363,776,0,383,116,
-0,383,775,0,398,0,400,0,416,768,0,416,769,0,416,771,
-0,416,777,0,416,803,0,417,768,0,417,769,0,417,771,0,
-417,777,0,417,803,0,427,0,431,768,0,431,769,0,431,771,
-0,431,777,0,431,803,0,432,768,0,432,769,0,432,771,0,
-432,777,0,432,803,0,439,780,0,490,772,0,491,772,0,546,
-0,550,772,0,551,772,0,552,774,0,553,774,0,558,772,0,
-559,772,0,592,0,593,0,594,0,596,0,597,0,601,0,603,
-0,604,0,607,0,609,0,611,0,613,0,614,0,616,0,617,
-0,618,0,621,0,623,0,624,0,625,0,626,0,627,0,628,
-0,629,0,632,0,633,0,635,0,641,0,642,0,643,0,649,
-0,650,0,651,0,652,0,656,0,657,0,658,0,658,780,0,
-661,0,669,0,671,0,697,0,700,110,0,768,0,769,0,776,
-769,0,787,0,901,0,902,0,904,0,905,0,906,0,908,0,
-910,0,911,0,912,0,913,768,0,913,769,0,913,772,0,913,
-774,0,913,787,0,913,788,0,913,837,0,915,0,917,768,0,
-917,769,0,917,787,0,917,788,0,919,768,0,919,769,0,919,
-787,0,919,788,0,919,837,0,920,0,921,768,0,921,769,0,
-921,772,0,921,774,0,921,776,0,921,787,0,921,788,0,927,
-768,0,927,769,0,927,787,0,927,788,0,928,0,929,788,0,
-931,0,933,0,933,768,0,933,769,0,933,772,0,933,774,0,
-933,776,0,933,788,0,937,0,937,768,0,937,769,0,937,787,
-0,937,788,0,937,837,0,940,0,940,837,0,941,0,942,0,
-942,837,0,943,0,944,0,945,768,0,945,769,0,945,772,0,
-945,774,0,945,787,0,945,788,0,945,834,0,945,837,0,946,
-0,947,0,948,0,949,0,949,768,0,949,769,0,949,787,0,
-949,788,0,951,768,0,951,769,0,951,787,0,951,788,0,951,
-834,0,951,837,0,952,0,953,0,953,768,0,953,769,0,953,
-772,0,953,774,0,953,776,0,953,787,0,953,788,0,953,834,
-0,954,0,956,0,956,65,0,956,70,0,956,86,0,956,87,
-0,956,103,0,956,109,0,956,115,0,956,8467,0,959,768,0,
-959,769,0,959,787,0,959,788,0,960,0,961,0,961,787,0,
-961,788,0,962,0,965,768,0,965,769,0,965,772,0,965,774,
-0,965,776,0,965,787,0,965,788,0,965,834,0,966,0,967,
-0,969,768,0,969,769,0,969,787,0,969,788,0,969,834,0,
-969,837,0,970,768,0,970,769,0,970,834,0,971,768,0,971,
-769,0,971,834,0,972,0,973,0,974,0,974,837,0,978,769,
-0,978,776,0,1030,776,0,1040,774,0,1040,776,0,1043,769,0,
-1045,768,0,1045,774,0,1045,776,0,1046,774,0,1046,776,0,1047,
-776,0,1048,768,0,1048,772,0,1048,774,0,1048,776,0,1050,769,
-0,1054,776,0,1059,772,0,1059,774,0,1059,776,0,1059,779,0,
-1063,776,0,1067,776,0,1069,776,0,1072,774,0,1072,776,0,1075,
-769,0,1077,768,0,1077,774,0,1077,776,0,1078,774,0,1078,776,
-0,1079,776,0,1080,768,0,1080,772,0,1080,774,0,1080,776,0,
-1082,769,0,1085,0,1086,776,0,1091,772,0,1091,774,0,1091,776,
-0,1091,779,0,1095,776,0,1099,776,0,1101,776,0,1110,776,0,
-1140,783,0,1141,783,0,1240,776,0,1241,776,0,1256,776,0,1257,
-776,0,1381,1410,0,1396,1381,0,1396,1387,0,1396,1389,0,1396,1398,
-0,1406,1398,0,1488,0,1488,1463,0,1488,1464,0,1488,1468,0,1488,
-1500,0,1489,0,1489,1468,0,1489,1471,0,1490,0,1490,1468,0,1491,
-0,1491,1468,0,1492,0,1492,1468,0,1493,1465,0,1493,1468,0,1494,
-1468,0,1496,1468,0,1497,1460,0,1497,1468,0,1498,1468,0,1499,0,
-1499,1468,0,1499,1471,0,1500,0,1500,1468,0,1501,0,1502,1468,0,
-1504,1468,0,1505,1468,0,1506,0,1507,1468,0,1508,1468,0,1508,1471,
-0,1510,1468,0,1511,1468,0,1512,0,1512,1468,0,1513,1468,0,1513,
-1473,0,1513,1474,0,1514,0,1514,1468,0,1522,1463,0,1569,0,1570,
-0,1571,0,1572,0,1573,0,1574,0,1574,1575,0,1574,1580,0,1574,
-1581,0,1574,1582,0,1574,1585,0,1574,1586,0,1574,1605,0,1574,1606,
-0,1574,1607,0,1574,1608,0,1574,1609,0,1574,1610,0,1574,1734,0,
-1574,1735,0,1574,1736,0,1574,1744,0,1574,1749,0,1575,0,1575,1603,
-1576,1585,0,1575,1604,1604,1607,0,1575,1611,0,1575,1619,0,1575,1620,
-0,1575,1621,0,1575,1652,0,1576,0,1576,1580,0,1576,1581,0,1576,
-1581,1610,0,1576,1582,0,1576,1582,1610,0,1576,1585,0,1576,1586,0,
-1576,1605,0,1576,1606,0,1576,1607,0,1576,1609,0,1576,1610,0,1577,
-0,1578,0,1578,1580,0,1578,1580,1605,0,1578,1580,1609,0,1578,1580,
-1610,0,1578,1581,0,1578,1581,1580,0,1578,1581,1605,0,1578,1582,0,
-1578,1582,1605,0,1578,1582,1609,0,1578,1582,1610,0,1578,1585,0,1578,
-1586,0,1578,1605,0,1578,1605,1580,0,1578,1605,1581,0,1578,1605,1582,
-0,1578,1605,1609,0,1578,1605,1610,0,1578,1606,0,1578,1607,0,1578,
-1609,0,1578,1610,0,1579,0,1579,1580,0,1579,1585,0,1579,1586,0,
-1579,1605,0,1579,1606,0,1579,1607,0,1579,1609,0,1579,1610,0,1580,
-0,1580,1581,0,1580,1581,1609,0,1580,1581,1610,0,1580,1604,32,1580,
-1604,1575,1604,1607,0,1580,1605,0,1580,1605,1581,0,1580,1605,1609,0,
-1580,1605,1610,0,1580,1609,0,1580,1610,0,1581,0,1581,1580,0,1581,
-1580,1610,0,1581,1605,0,1581,1605,1609,0,1581,1605,1610,0,1581,1609,
-0,1581,1610,0,1582,0,1582,1580,0,1582,1581,0,1582,1605,0,1582,
-1609,0,1582,1610,0,1583,0,1584,0,1584,1648,0,1585,0,1585,1587,
-1608,1604,0,1585,1648,0,1585,1740,1575,1604,0,1586,0,1587,0,1587,
-1580,0,1587,1580,1581,0,1587,1580,1609,0,1587,1581,0,1587,1581,1580,
-0,1587,1582,0,1587,1582,1609,0,1587,1582,1610,0,1587,1585,0,1587,
-1605,0,1587,1605,1580,0,1587,1605,1581,0,1587,1605,1605,0,1587,1607,
-0,1587,1609,0,1587,1610,0,1588,0,1588,1580,0,1588,1580,1610,0,
-1588,1581,0,1588,1581,1605,0,1588,1581,1610,0,1588,1582,0,1588,1585,
-0,1588,1605,0,1588,1605,1582,0,1588,1605,1605,0,1588,1607,0,1588,
-1609,0,1588,1610,0,1589,0,1589,1581,0,1589,1581,1581,0,1589,1581,
-1610,0,1589,1582,0,1589,1585,0,1589,1604,1593,1605,0,1589,1604,1609,
-0,1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,
-1587,1604,1605,0,1589,1604,1746,0,1589,1605,0,1589,1605,1605,0,1589,
-1609,0,1589,1610,0,1590,0,1590,1580,0,1590,1581,0,1590,1581,1609,
-0,1590,1581,1610,0,1590,1582,0,1590,1582,1605,0,1590,1585,0,1590,
-1605,0,1590,1609,0,1590,1610,0,1591,0,1591,1581,0,1591,1605,0,
-1591,1605,1581,0,1591,1605,1605,0,1591,1605,1610,0,1591,1609,0,1591,
-1610,0,1592,0,1592,1605,0,1593,0,1593,1580,0,1593,1580,1605,0,
-1593,1604,1610,1607,0,1593,1605,0,1593,1605,1605,0,1593,1605,1609,0,
-1593,1605,1610,0,1593,1609,0,1593,1610,0,1594,0,1594,1580,0,1594,
-1605,0,1594,1605,1605,0,1594,1605,1609,0,1594,1605,1610,0,1594,1609,
-0,1594,1610,0,1600,1611,0,1600,1614,0,1600,1614,1617,0,1600,1615,
-0,1600,1615,1617,0,1600,1616,0,1600,1616,1617,0,1600,1617,0,1600,
-1618,0,1601,0,1601,1580,0,1601,1581,0,1601,1582,0,1601,1582,1605,
-0,1601,1605,0,1601,1605,1610,0,1601,1609,0,1601,1610,0,1602,0,
-1602,1581,0,1602,1604,1746,0,1602,1605,0,1602,1605,1581,0,1602,1605,
-1605,0,1602,1605,1610,0,1602,1609,0,1602,1610,0,1603,0,1603,1575,
-0,1603,1580,0,1603,1581,0,1603,1582,0,1603,1604,0,1603,1605,0,
-1603,1605,1605,0,1603,1605,1610,0,1603,1609,0,1603,1610,0,1604,0,
-1604,1570,0,1604,1571,0,1604,1573,0,1604,1575,0,1604,1580,0,1604,
-1580,1580,0,1604,1580,1605,0,1604,1580,1610,0,1604,1581,0,1604,1581,
-1605,0,1604,1581,1609,0,1604,1581,1610,0,1604,1582,0,1604,1582,1605,
-0,1604,1605,0,1604,1605,1581,0,1604,1605,1610,0,1604,1607,0,1604,
-1609,0,1604,1610,0,1605,0,1605,1575,0,1605,1580,0,1605,1580,1581,
-0,1605,1580,1582,0,1605,1580,1605,0,1605,1580,1610,0,1605,1581,0,
-1605,1581,1580,0,1605,1581,1605,0,1605,1581,1605,1583,0,1605,1581,1610,
-0,1605,1582,0,1605,1582,1580,0,1605,1582,1605,0,1605,1582,1610,0,
-1605,1605,0,1605,1605,1610,0,1605,1609,0,1605,1610,0,1606,0,1606,
-1580,0,1606,1580,1581,0,1606,1580,1605,0,1606,1580,1609,0,1606,1580,
-1610,0,1606,1581,0,1606,1581,1605,0,1606,1581,1609,0,1606,1581,1610,
-0,1606,1582,0,1606,1585,0,1606,1586,0,1606,1605,0,1606,1605,1609,
-0,1606,1605,1610,0,1606,1606,0,1606,1607,0,1606,1609,0,1606,1610,
-0,1607,0,1607,1580,0,1607,1605,0,1607,1605,1580,0,1607,1605,1605,
-0,1607,1609,0,1607,1610,0,1607,1648,0,1608,0,1608,1587,1604,1605,
-0,1608,1620,0,1608,1652,0,1609,0,1609,1648,0,1610,0,1610,1580,
-0,1610,1580,1610,0,1610,1581,0,1610,1581,1610,0,1610,1582,0,1610,
-1585,0,1610,1586,0,1610,1605,0,1610,1605,1605,0,1610,1605,1610,0,
-1610,1606,0,1610,1607,0,1610,1609,0,1610,1610,0,1610,1620,0,1610,
-1652,0,1649,0,1655,0,1657,0,1658,0,1659,0,1662,0,1663,0,
-1664,0,1667,0,1668,0,1670,0,1671,0,1672,0,1676,0,1677,0,
-1678,0,1681,0,1688,0,1700,0,1702,0,1705,0,1709,0,1711,0,
-1713,0,1715,0,1722,0,1723,0,1726,0,1728,0,1729,0,1729,1620,
-0,1733,0,1734,0,1735,0,1735,1652,0,1736,0,1737,0,1739,0,
-1740,0,1744,0,1746,0,1746,1620,0,1747,0,1749,1620,0,2325,2364,
-0,2326,2364,0,2327,2364,0,2332,2364,0,2337,2364,0,2338,2364,0,
-2344,2364,0,2347,2364,0,2351,2364,0,2352,2364,0,2355,2364,0,2465,
-2492,0,2466,2492,0,2479,2492,0,2503,2494,0,2503,2519,0,2582,2620,
-0,2583,2620,0,2588,2620,0,2603,2620,0,2610,2620,0,2616,2620,0,
-2849,2876,0,2850,2876,0,2887,2878,0,2887,2902,0,2887,2903,0,2962,
-3031,0,3014,3006,0,3014,3031,0,3015,3006,0,3142,3158,0,3263,3285,
-0,3270,3266,0,3270,3285,0,3270,3286,0,3274,3285,0,3398,3390,0,
-3398,3415,0,3399,3390,0,3545,3530,0,3545,3535,0,3545,3551,0,3548,
-3530,0,3661,3634,0,3755,3737,0,3755,3745,0,3789,3762,0,3851,0,
-3904,4021,0,3906,4023,0,3916,4023,0,3921,4023,0,3926,4023,0,3931,
-4023,0,3953,3954,0,3953,3956,0,3953,3968,0,3984,4021,0,3986,4023,
-0,3996,4023,0,4001,4023,0,4006,4023,0,4011,4023,0,4018,3968,0,
-4018,3969,0,4019,3968,0,4019,3969,0,4133,4142,0,4316,0,4352,0,
-4352,4449,0,4353,0,4354,0,4354,4449,0,4355,0,4355,4449,0,4356,
-0,4357,0,4357,4449,0,4358,0,4358,4449,0,4359,0,4359,4449,0,
-4360,0,4361,0,4361,4449,0,4362,0,4363,0,4363,4449,0,4363,4462,
-0,4364,0,4364,4449,0,4364,4462,4363,4468,0,4365,0,4366,0,4366,
-4449,0,4366,4449,4535,4352,4457,0,4367,0,4367,4449,0,4368,0,4368,
-4449,0,4369,0,4369,4449,0,4370,0,4370,4449,0,4372,0,4373,0,
-4378,0,4380,0,4381,0,4382,0,4384,0,4385,0,4386,0,4387,0,
-4391,0,4393,0,4395,0,4396,0,4397,0,4398,0,4399,0,4402,0,
-4406,0,4416,0,4423,0,4428,0,4439,0,4440,0,4441,0,4448,0,
-4449,0,4450,0,4451,0,4452,0,4453,0,4454,0,4455,0,4456,0,
-4457,0,4458,0,4459,0,4460,0,4461,0,4462,0,4463,0,4464,0,
-4465,0,4466,0,4467,0,4468,0,4469,0,4484,0,4485,0,4488,0,
-4497,0,4498,0,4500,0,4510,0,4513,0,4522,0,4524,0,4525,0,
-4528,0,4529,0,4530,0,4531,0,4532,0,4533,0,4551,0,4552,0,
-4556,0,4558,0,4563,0,4567,0,4569,0,4573,0,4575,0,4593,0,
-4594,0,6917,6965,0,6919,6965,0,6921,6965,0,6923,6965,0,6925,6965,
-0,6929,6965,0,6970,6965,0,6972,6965,0,6974,6965,0,6975,6965,0,
-6978,6965,0,7426,0,7446,0,7447,0,7452,0,7453,0,7461,0,7547,
-0,7557,0,7734,772,0,7735,772,0,7770,772,0,7771,772,0,7778,
-775,0,7779,775,0,7840,770,0,7840,774,0,7841,770,0,7841,774,
-0,7864,770,0,7865,770,0,7884,770,0,7885,770,0,7936,768,0,
-7936,769,0,7936,834,0,7936,837,0,7937,768,0,7937,769,0,7937,
-834,0,7937,837,0,7938,837,0,7939,837,0,7940,837,0,7941,837,
-0,7942,837,0,7943,837,0,7944,768,0,7944,769,0,7944,834,0,
-7944,837,0,7945,768,0,7945,769,0,7945,834,0,7945,837,0,7946,
-837,0,7947,837,0,7948,837,0,7949,837,0,7950,837,0,7951,837,
-0,7952,768,0,7952,769,0,7953,768,0,7953,769,0,7960,768,0,
-7960,769,0,7961,768,0,7961,769,0,7968,768,0,7968,769,0,7968,
-834,0,7968,837,0,7969,768,0,7969,769,0,7969,834,0,7969,837,
-0,7970,837,0,7971,837,0,7972,837,0,7973,837,0,7974,837,0,
-7975,837,0,7976,768,0,7976,769,0,7976,834,0,7976,837,0,7977,
-768,0,7977,769,0,7977,834,0,7977,837,0,7978,837,0,7979,837,
-0,7980,837,0,7981,837,0,7982,837,0,7983,837,0,7984,768,0,
-7984,769,0,7984,834,0,7985,768,0,7985,769,0,7985,834,0,7992,
-768,0,7992,769,0,7992,834,0,7993,768,0,7993,769,0,7993,834,
-0,8000,768,0,8000,769,0,8001,768,0,8001,769,0,8008,768,0,
-8008,769,0,8009,768,0,8009,769,0,8016,768,0,8016,769,0,8016,
-834,0,8017,768,0,8017,769,0,8017,834,0,8025,768,0,8025,769,
-0,8025,834,0,8032,768,0,8032,769,0,8032,834,0,8032,837,0,
-8033,768,0,8033,769,0,8033,834,0,8033,837,0,8034,837,0,8035,
-837,0,8036,837,0,8037,837,0,8038,837,0,8039,837,0,8040,768,
-0,8040,769,0,8040,834,0,8040,837,0,8041,768,0,8041,769,0,
-8041,834,0,8041,837,0,8042,837,0,8043,837,0,8044,837,0,8045,
-837,0,8046,837,0,8047,837,0,8048,837,0,8052,837,0,8060,837,
-0,8118,837,0,8127,768,0,8127,769,0,8127,834,0,8134,837,0,
-8182,837,0,8190,768,0,8190,769,0,8190,834,0,8194,0,8195,0,
-8208,0,8211,0,8212,0,8229,0,8230,0,8242,8242,0,8242,8242,8242,
-0,8242,8242,8242,8242,0,8245,8245,0,8245,8245,8245,0,8254,0,8361,
-0,8592,0,8592,824,0,8593,0,8594,0,8594,824,0,8595,0,8596,
-824,0,8656,824,0,8658,824,0,8660,824,0,8707,824,0,8712,824,
-0,8715,824,0,8721,0,8722,0,8739,824,0,8741,824,0,8747,8747,
-0,8747,8747,8747,0,8747,8747,8747,8747,0,8750,8750,0,8750,8750,8750,
-0,8764,824,0,8771,824,0,8773,824,0,8776,824,0,8781,824,0,
-8801,824,0,8804,824,0,8805,824,0,8818,824,0,8819,824,0,8822,
-824,0,8823,824,0,8826,824,0,8827,824,0,8828,824,0,8829,824,
-0,8834,824,0,8835,824,0,8838,824,0,8839,824,0,8849,824,0,
-8850,824,0,8866,824,0,8872,824,0,8873,824,0,8875,824,0,8882,
-824,0,8883,824,0,8884,824,0,8885,824,0,9474,0,9632,0,9675,
-0,10629,0,10630,0,10973,824,0,11617,0,12289,0,12290,0,12296,0,
-12297,0,12298,0,12299,0,12300,0,12301,0,12302,0,12303,0,12304,0,
-12305,0,12306,0,12308,0,12309,0,12310,0,12311,0,12358,12441,0,12363,
-12441,0,12365,12441,0,12367,12441,0,12369,12441,0,12371,12441,0,12373,12441,
-0,12375,12441,0,12377,12441,0,12379,12441,0,12381,12441,0,12383,12441,0,
-12385,12441,0,12388,12441,0,12390,12441,0,12392,12441,0,12399,12441,0,12399,
-12442,0,12402,12441,0,12402,12442,0,12405,12441,0,12405,12442,0,12408,12441,
-0,12408,12442,0,12411,12441,0,12411,12442,0,12424,12426,0,12441,0,12442,
-0,12445,12441,0,12449,0,12450,0,12450,12497,12540,12488,0,12450,12523,12501,
-12449,0,12450,12531,12506,12450,0,12450,12540,12523,0,12451,0,12452,0,12452,
-12491,12531,12464,0,12452,12531,12481,0,12453,0,12454,0,12454,12441,0,12454,
-12457,12531,0,12455,0,12456,0,12456,12473,12463,12540,12489,0,12456,12540,12459,
-12540,0,12457,0,12458,0,12458,12531,12473,0,12458,12540,12512,0,12459,0,
-12459,12441,0,12459,12452,12522,0,12459,12521,12483,12488,0,12459,12525,12522,12540,
-0,12460,12525,12531,0,12460,12531,12510,0,12461,0,12461,12441,0,12461,12517,
-12522,12540,0,12461,12525,0,12461,12525,12464,12521,12512,0,12461,12525,12513,12540,
-12488,12523,0,12461,12525,12527,12483,12488,0,12462,12460,0,12462,12491,12540,0,
-12462,12523,12480,12540,0,12463,0,12463,12441,0,12463,12523,12476,12452,12525,0,
-12463,12525,12540,12493,0,12464,12521,12512,0,12464,12521,12512,12488,12531,0,12465,
-0,12465,12441,0,12465,12540,12473,0,12467,0,12467,12441,0,12467,12488,0,
-12467,12523,12490,0,12467,12540,12509,0,12469,0,12469,12441,0,12469,12452,12463,
-12523,0,12469,12531,12481,12540,12512,0,12471,0,12471,12441,0,12471,12522,12531,
-12464,0,12473,0,12473,12441,0,12475,0,12475,12441,0,12475,12531,12481,0,
-12475,12531,12488,0,12477,0,12477,12441,0,12479,0,12479,12441,0,12480,12540,
-12473,0,12481,0,12481,12441,0,12483,0,12484,0,12484,12441,0,12486,0,
-12486,12441,0,12487,12471,0,12488,0,12488,12441,0,12488,12531,0,12489,12523,
-0,12490,0,12490,12494,0,12491,0,12492,0,12493,0,12494,0,12494,12483,
-12488,0,12495,0,12495,12441,0,12495,12442,0,12495,12452,12484,0,12496,12540,
-12524,12523,0,12497,12540,12475,12531,12488,0,12497,12540,12484,0,12498,0,12498,
-12441,0,12498,12442,0,12499,12523,0,12500,12450,12473,12488,12523,0,12500,12463,
-12523,0,12500,12467,0,12501,0,12501,12441,0,12501,12442,0,12501,12449,12521,
-12483,12489,0,12501,12451,12540,12488,0,12501,12521,12531,0,12502,12483,12471,12455,
-12523,0,12504,0,12504,12441,0,12504,12442,0,12504,12463,12479,12540,12523,0,
-12504,12523,12484,0,12505,12540,12479,0,12506,12477,0,12506,12491,12498,0,12506,
-12531,12473,0,12506,12540,12472,0,12507,0,12507,12441,0,12507,12442,0,12507,
-12531,0,12507,12540,12523,0,12507,12540,12531,0,12508,12523,12488,0,12509,12452,
-12531,12488,0,12509,12531,12489,0,12510,0,12510,12452,12463,12525,0,12510,12452,
-12523,0,12510,12483,12495,0,12510,12523,12463,0,12510,12531,12471,12519,12531,0,
-12511,0,12511,12463,12525,12531,0,12511,12522,0,12511,12522,12496,12540,12523,0,
-12512,0,12513,0,12513,12460,0,12513,12460,12488,12531,0,12513,12540,12488,12523,
-0,12514,0,12515,0,12516,0,12516,12540,12489,0,12516,12540,12523,0,12517,
-0,12518,0,12518,12450,12531,0,12519,0,12520,0,12521,0,12522,0,12522,
-12483,12488,12523,0,12522,12521,0,12523,0,12523,12500,12540,0,12523,12540,12502,
-12523,0,12524,0,12524,12512,0,12524,12531,12488,12466,12531,0,12525,0,12527,
-0,12527,12441,0,12527,12483,12488,0,12528,0,12528,12441,0,12529,0,12529,
-12441,0,12530,0,12530,12441,0,12531,0,12539,0,12540,0,12541,12441,0,
-12593,0,12594,0,12595,0,12596,0,12597,0,12598,0,12599,0,12600,0,
-12601,0,12602,0,12603,0,12604,0,12605,0,12606,0,12607,0,12608,0,
-12609,0,12610,0,12611,0,12612,0,12613,0,12614,0,12615,0,12616,0,
-12617,0,12618,0,12619,0,12620,0,12621,0,12622,0,12623,0,12624,0,
-12625,0,12626,0,12627,0,12628,0,12629,0,12630,0,12631,0,12632,0,
-12633,0,12634,0,12635,0,12636,0,12637,0,12638,0,12639,0,12640,0,
-12641,0,12642,0,12643,0,12644,0,15261,0,16408,0,16441,0,19968,0,
-19969,0,19971,0,19977,0,19978,0,19979,0,19981,0,19993,0,20006,0,
-20008,0,20013,0,20018,0,20022,0,20025,0,20031,0,20057,0,20061,0,
-20098,0,20101,0,20102,0,20108,0,20116,0,20128,0,20142,0,20154,0,
-20160,0,20196,0,20225,0,20241,0,20352,0,20358,0,20363,0,20398,0,
-20415,0,20523,0,20698,0,20711,0,20778,0,20799,0,20800,0,20805,0,
-20813,0,20837,0,20840,0,20841,0,20843,0,20845,0,20864,0,20866,0,
-20886,0,20889,0,20907,0,20917,0,20919,0,20937,0,20940,0,20956,0,
-20958,0,20960,0,20981,0,20992,0,20999,0,21015,0,21033,0,21050,0,
-21129,0,21147,0,21155,0,21172,0,21191,0,21193,0,21202,0,21214,0,
-21220,0,21237,0,21241,0,21242,0,21269,0,21271,0,21274,0,21304,0,
-21307,0,21311,0,21313,0,21316,0,21317,0,21329,0,21332,0,21340,0,
-21353,0,21360,0,21365,0,21378,0,21430,0,21443,0,21448,0,21475,0,
-21477,0,21491,0,21517,0,21519,0,21533,0,21570,0,21693,0,21845,0,
-21895,0,21913,0,21917,0,21952,0,21986,0,22022,0,22120,0,22231,0,
-22235,0,22265,0,22303,0,22320,0,22592,0,22618,0,22622,0,22696,0,
-22707,0,22744,0,22751,0,22763,0,22786,0,22794,0,22805,0,22812,0,
-22823,0,22823,27491,0,22825,0,22852,0,22856,0,22865,0,22868,0,22899,
-0,23138,0,23336,0,23376,0,23398,0,23424,0,23429,0,23447,0,23527,
-0,23534,0,23544,0,23567,0,23586,0,23608,0,23615,0,23650,0,23652,
-0,23653,0,23662,0,23665,0,23833,0,23888,0,23994,0,24027,0,24037,
-0,24038,0,24049,0,24062,0,24178,0,24179,25104,0,24180,0,24186,0,
-24191,0,24230,0,24265,0,24266,0,24274,0,24275,0,24281,0,24300,0,
-24308,0,24318,0,24324,0,24331,0,24339,0,24400,0,24417,0,24425,0,
-24435,0,24459,0,24489,0,24493,0,24515,0,24565,0,24594,0,24604,0,
-24724,0,24792,0,24801,0,24840,0,24900,0,24910,0,24928,0,24936,0,
-24974,0,24976,0,25074,0,25078,0,25088,0,25096,0,25134,0,25140,0,
-25142,0,25163,0,25289,0,25295,0,25299,0,25342,0,25467,0,25504,0,
-25540,0,25628,0,25682,0,25754,0,25796,0,25903,0,25908,0,25935,0,
-25942,0,25976,0,25991,0,26007,0,26009,0,26020,0,26041,0,26053,0,
-26080,0,26082,0,26085,0,26126,27835,0,26131,0,26157,21644,0,26228,0,
-26248,0,26257,0,26292,0,26310,0,26352,0,26356,0,26376,0,26377,0,
-26391,0,26395,0,26408,0,26446,0,26454,0,26491,0,26519,0,26611,0,
-26647,0,26666,0,26666,24335,20250,31038,0,26753,0,26757,0,26792,0,27138,
-0,27155,0,27347,0,27396,0,27424,0,27490,0,27491,0,27511,0,27513,
-0,27566,0,27571,0,27578,0,27595,0,27597,0,27604,0,27611,0,27663,
-0,27668,0,27700,0,27784,0,27852,0,27877,0,27880,0,27931,0,27934,
-0,27969,0,28010,0,28023,0,28107,0,28122,0,28138,0,28186,0,28316,
-0,28346,0,28363,0,28369,0,28379,0,28431,0,28450,0,28451,0,28651,
-0,28670,0,28702,0,28779,0,28825,0,28872,0,28889,0,29001,0,29038,
-0,29134,0,29136,0,29200,0,29211,0,29226,0,29227,0,29237,0,29238,
-0,29243,0,29247,0,29255,0,29273,0,29275,0,29282,0,29305,0,29356,
-0,29359,0,29376,0,29436,0,29482,0,29557,0,29572,0,29575,0,29577,
-0,29618,0,29662,0,29702,0,29705,0,29730,0,29801,0,29809,0,29833,
-0,29848,0,29916,0,29926,0,29958,0,29976,0,29983,0,29992,0,30000,
-0,30002,0,30007,0,30011,0,30041,0,30053,0,30064,0,30091,0,30098,
-0,30178,0,30237,0,30239,0,30274,0,30313,0,30326,0,30333,0,30382,
-0,30399,0,30410,0,30427,0,30435,0,30439,0,30446,0,30452,0,30465,
-0,30528,0,30538,0,30631,0,30683,0,30690,0,30707,0,30827,0,30860,
-0,30865,0,30922,0,30924,0,30971,0,31018,0,31034,0,31036,0,31038,
-0,31048,0,31049,0,31056,0,31062,0,31069,0,31070,0,31077,0,31103,
-0,31117,0,31118,0,31119,0,31150,0,31160,0,31166,0,31178,0,31192,
-0,31260,0,31296,0,31348,0,31361,0,31409,0,31435,0,31481,0,31520,
-0,31680,0,31806,0,31840,0,31859,0,31867,0,31890,0,31934,0,31958,
-0,31975,0,31992,0,32016,0,32034,0,32047,0,32091,0,32160,0,32190,
-0,32244,0,32265,0,32311,0,32321,0,32566,0,32574,0,32593,0,32626,
-0,32633,0,32645,0,32650,0,32666,0,32701,0,32769,0,32773,0,32780,
-0,32786,0,32819,0,32838,0,32879,0,32894,0,32895,0,32905,0,32907,
-0,33240,0,33251,0,33256,0,33258,0,33261,0,33267,0,33276,0,33292,
-0,33307,0,33311,0,33390,0,33391,0,33394,0,33400,0,33401,0,33509,
-0,33590,0,33618,0,33737,0,33775,0,33777,0,33853,0,33865,0,33879,
-0,34030,0,34044,0,34253,0,34298,0,34310,0,34322,0,34349,0,34367,
-0,34381,0,34396,0,34411,0,34681,0,34746,0,34847,0,34880,0,34892,
-0,34915,0,35010,0,35023,0,35041,0,35064,0,35088,0,35137,0,35172,
-0,35198,0,35206,0,35211,0,35222,0,35282,0,35328,0,35498,0,35519,
-0,35531,0,35538,0,35542,0,35565,0,35576,0,35582,0,35585,0,35641,
-0,35672,0,35712,0,35722,0,35895,0,35910,0,35912,0,35925,0,35960,
-0,35997,0,36001,0,36034,0,36039,0,36040,0,36051,0,36104,0,36196,
-0,36208,0,36275,0,36335,0,36523,0,36554,0,36646,0,36650,0,36664,
-0,36667,0,36706,0,36763,0,36784,0,36789,0,36790,0,36899,0,36920,
-0,36969,0,36978,0,36988,0,37007,0,37009,0,37070,0,37117,0,37193,
-0,37226,0,37273,0,37300,0,37318,0,37324,0,37327,0,37329,0,37428,
-0,37494,0,37636,0,37706,0,38263,0,38272,0,38317,0,38428,0,38446,
-0,38475,0,38477,0,38517,0,38520,0,38524,0,38534,0,38563,0,38582,
-0,38584,0,38585,0,38626,0,38627,0,38632,0,38646,0,38647,0,38706,
-0,38728,0,38737,0,38742,0,38750,0,38754,0,38761,0,38859,0,38875,
-0,38893,0,38899,0,38911,0,38913,0,38917,0,38923,0,38936,0,38971,
-0,39006,0,39080,0,39131,0,39135,0,39151,0,39164,0,39208,0,39318,
-0,39321,0,39340,0,39409,0,39530,0,39592,0,39640,0,39647,0,39698,
-0,39717,0,39727,0,39730,0,39740,0,39770,0,39791,0,40023,0,40165,
-0,40372,0,40442,0,40478,0,40565,0,40575,0,40599,0,40607,0,40613,
-0,40635,0,40643,0,40653,0,40654,0,40657,0,40697,0,40701,0,40718,
-0,40723,0,40736,0,40763,0,40771,0,40778,0,40786,0,40845,0,40846,
-0,40860,0,40863,0,40864,0,42863,0,64329,1473,0,64329,1474,0,141380,
-0,141386,0,144341,0,152137,0,154832,0,163539,0,0};
-static const guint16 charMapIndex [] = {
-8599,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,21,0,2004,0,0,0,0,9,
-0,0,841,957,3,3699,0,0,36,638,2610,0,816,808,1000,0,
-1199,1202,1205,1208,1220,1226,0,1283,1325,1328,1331,1346,1475,1478,1481,1496,
-0,1632,1655,1658,1661,1664,1676,0,0,1824,1827,1830,1842,1948,0,0,
-2022,2025,2028,2031,2043,2049,0,2128,2186,2189,2192,2207,2343,2346,2349,2361,
-0,2589,2615,2618,2621,2624,2636,0,0,2796,2799,2802,2814,2916,0,2931,
-1211,2034,1214,2037,1244,2067,1271,2116,1274,2119,1277,2122,1280,2125,1308,2159,
-0,0,1337,2198,1340,2201,1343,2204,1367,2228,1352,2213,1404,2271,1410,2277,
-1413,2280,1419,2286,1433,2298,0,0,1484,2352,1487,2355,1490,2358,1514,2379,
-1493,0,1463,2331,1522,2387,1545,2443,0,1566,2476,1575,2485,1569,2479,1563,
-2473,0,0,1629,2586,1644,2601,1638,2595,3432,0,0,1667,2627,1670,2630,
-1682,2642,0,0,1735,2715,1753,2733,1741,2721,1767,2747,1770,2750,1785,2765,
-1776,2756,1813,2785,1804,2776,0,0,1833,2805,1836,2808,1839,2811,1848,2820,
-1851,2823,1872,2844,1916,2881,1951,2919,1963,1974,2945,1980,2951,1983,2954,2739,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1694,2654,0,0,0,0,0,0,0,0,0,0,0,0,0,1863,
-2835,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,1299,1302,2153,1553,1560,2457,1617,1620,2574,1229,2052,1502,
-2367,1685,2645,1854,2826,3081,3164,3078,3161,3084,3167,3075,3158,0,3014,3099,
-3329,3332,3027,3108,0,0,1416,2283,1539,2437,1700,2660,3321,3324,3318,3421,
-2390,1293,1296,2150,1401,2268,0,0,1626,2583,3019,3102,3024,3105,3072,3155,
-1232,2055,1235,2058,1355,2216,1358,2219,1505,2370,1508,2373,1688,2648,1691,2651,
-1744,2724,1747,2727,1857,2829,1860,2832,1782,2762,1810,2782,0,0,1442,2307,
-0,0,0,0,0,0,1217,2040,1364,2225,3069,3152,3063,3146,1673,2633,
-3341,3344,1957,2925,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2289,3371,2385,2696,3397,3399,3401,2873,2911,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,15,18,24,39,6,27,0,0,
-3367,2455,2739,2896,3424,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3435,3437,0,3442,3439,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,3430,0,0,0,0,0,48,0,0,0,1160,0,
-0,0,0,0,3,2982,3465,3000,3488,3500,3517,0,3538,0,3559,3579,
-3798,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,3526,3568,3610,3642,3654,3676,
-3807,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,3685,3761,3728,3752,3780,0,
-3631,3669,3554,3822,3825,3773,3737,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3697,3739,3747,0,3512,3637,0,0,0,3552,0,0,0,0,0,0,
-3840,3846,0,3837,0,0,0,3828,0,0,0,0,3870,3858,3879,0,
-0,0,0,0,0,0,0,0,0,3864,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,3930,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3906,3912,0,3903,0,0,0,3965,0,0,0,0,3936,3924,3947,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,3968,3971,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,3849,3915,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3831,3897,3834,3900,0,0,3843,3909,0,0,3974,3977,3852,3918,3855,3921,
-0,0,3861,3927,3867,3933,3873,3941,0,0,3980,3983,3894,3962,3876,3944,
-3882,3950,3885,3953,3888,3956,0,0,3891,3959,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,3986,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,4203,4206,5137,4209,5196,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,4212,5140,5271,5199,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5291,0,5262,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,5286,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,5312,0,0,0,0,0,0,
-0,5321,0,0,5324,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,5294,5297,5300,5303,5306,5309,5315,5318,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,5336,5339,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5327,5330,0,5333,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,5354,0,0,5357,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,5342,5345,5348,0,0,5351,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,5369,0,0,5366,5372,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5360,5363,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,5375,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,5378,5384,5381,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,5387,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5390,0,0,0,0,0,0,5396,5399,0,5393,5402,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,5405,5411,5408,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,5414,0,5417,5423,5420,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,5426,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,5435,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5429,5432,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5438,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,5443,0,0,0,0,0,0,0,0,0,5446,0,0,
-0,0,5449,0,0,0,0,5452,0,0,0,0,5455,0,0,0,
-0,0,0,0,0,0,0,0,0,5440,0,0,0,0,0,0,
-0,0,0,5458,0,5461,5485,5488,5491,5494,0,0,0,0,0,0,
-0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,5470,0,0,0,0,0,0,0,0,0,5473,0,0,
-0,0,5476,0,0,0,0,5479,0,0,0,0,5482,0,0,0,
-0,0,0,0,0,0,0,0,0,5467,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,5497,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5500,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,1194,3022,1251,0,
-1291,1323,3252,1385,1422,1454,1520,1525,1551,1584,1615,0,1653,3327,1703,1730,
-1788,1822,1905,2004,3347,3349,5779,2070,2131,2177,3357,3359,3361,2262,0,2393,
-2494,3208,2610,3353,5781,5783,2663,2768,2794,5787,3381,2853,5789,3631,3633,3635,
-3773,3775,2322,2696,2794,2853,3631,3633,3739,3773,3775,0,0,0,0,0,
-0,0,0,0,0,0,0,0,3939,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,3351,2085,3355,3129,3361,
-2237,3363,3365,3369,3373,3375,3377,5791,3426,3379,5793,3428,3385,3383,3387,3389,
-3391,3393,3395,3403,3405,3286,3407,3409,5785,3411,3413,2943,3415,3417,3419,3669,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1241,2064,1256,2076,1259,2079,1262,2082,3030,3111,1305,2156,1311,2162,1320,2171,
-1314,2165,1317,2168,3194,3200,3197,3203,1370,2231,1373,2234,3335,3338,1382,2259,
-1407,2274,1436,2301,1445,2310,1439,2304,1448,2313,1451,2316,1517,2382,3045,3126,
-1536,2434,1542,2440,1548,2446,1572,2482,5795,5798,1581,2491,1578,2488,1603,2539,
-1606,2542,1609,2545,1635,2592,1641,2598,1650,2607,1647,2604,3060,3143,3066,3149,
-3210,3216,3213,3219,1722,2688,1725,2691,1738,2718,1750,2730,5801,5804,1756,2736,
-1773,2753,1779,2759,3222,3225,3228,3231,5807,5810,1801,2770,1807,2779,1819,2791,
-1816,2788,1869,2841,1878,2850,1875,2847,3234,3237,3240,3243,1895,2867,1898,2870,
-1910,2875,1913,2878,1922,2887,1919,2884,1925,2893,1937,2905,1940,2908,1960,2928,
-1977,2948,1986,2957,1989,2960,2319,2773,2890,2937,2019,3249,0,0,0,0,
-1238,2061,1223,2046,3005,3090,3002,3087,3011,3096,3008,3093,5813,5819,3173,3185,
-3170,3182,3179,3191,3176,3188,5816,5822,1361,2222,1349,2210,1334,2195,3036,3117,
-3033,3114,3042,3123,3039,3120,5825,5828,1499,2364,1511,2376,1697,2657,1679,2639,
-3051,3134,3048,3131,3057,3140,3054,3137,5831,5834,3259,3274,3256,3271,3265,3280,
-3262,3277,3268,3283,1866,2838,1845,2817,3291,3306,3288,3303,3297,3312,3294,3309,
-3300,3315,1945,2913,1969,2940,1966,2934,1954,2922,0,0,0,0,0,0,
-3619,3622,5837,5849,5840,5852,5843,5855,3474,3477,5879,5891,5882,5894,5885,5897,
-3645,3648,5921,5927,5924,5930,0,0,3491,3494,5933,5939,5936,5942,0,0,
-3657,3660,5945,5957,5948,5960,5951,5963,3503,3506,5987,5999,5990,6002,5993,6005,
-3688,3691,6029,6038,6032,6041,6035,6044,3529,3532,6047,6056,6050,6059,6053,6062,
-3731,3734,6065,6071,6068,6074,0,0,3541,3544,6077,6083,6080,6086,0,0,
-3764,3767,6089,6098,6092,6101,6095,6104,0,3571,0,6107,0,6110,0,6113,
-3783,3786,6116,6128,6119,6131,6122,6134,3582,3585,6158,6170,6161,6173,6164,6176,
-3607,3591,3639,3596,3651,3598,3673,3603,3725,3813,3749,3815,3777,3817,0,0,
-5846,5858,5861,5864,5867,5870,5873,5876,5888,5900,5903,5906,5909,5912,5915,5918,
-5954,5966,5969,5972,5975,5978,5981,5984,5996,6008,6011,6014,6017,6020,6023,6026,
-6125,6137,6140,6143,6146,6149,6152,6155,6167,6179,6182,6185,6188,6191,6194,6197,
-3616,3613,6200,3628,3593,0,3625,6209,3471,3468,3462,3446,3480,30,3671,30,
-45,2985,6203,3666,3600,0,3663,6221,3485,3448,3497,3450,3509,6212,6215,6218,
-3682,3679,3795,3460,0,0,3694,3801,3523,3520,3514,3452,0,6227,6230,6233,
-3758,3755,3804,3605,3741,3744,3770,3810,3565,3562,3556,3456,3549,2979,3444,2002,
-0,0,6206,3792,3819,0,3789,6224,3535,3454,3576,3458,3588,2998,33,0,
-6236,6238,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
-0,6240,0,0,0,0,0,42,0,0,0,0,0,0,0,0,
-0,0,0,0,622,624,627,0,0,0,0,0,0,0,0,1,
-0,0,0,6250,6253,0,6262,6265,0,0,0,0,107,0,12,0,
-0,0,0,0,0,0,0,1189,1186,110,0,0,0,0,0,0,
-0,0,0,0,0,0,0,6257,0,0,0,0,0,0,0,1,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-633,2322,0,0,1021,1069,1094,1108,1126,1140,616,6310,1167,125,612,2560,
-633,638,841,957,1021,1069,1094,1108,1126,1140,616,6310,1167,125,612,0,
-2004,2177,2610,2896,3357,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,1732,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2011,2015,1265,2992,0,2087,2091,3254,0,2995,2262,1422,1422,1422,2289,3206,
-1454,1454,1551,2455,0,1615,1623,0,0,1703,1728,1730,1730,1730,0,0,
-1761,1790,1798,0,1972,0,3574,0,1972,0,1525,3017,1251,1265,0,2177,
-1323,1376,0,1584,2610,4004,4018,4026,4031,2322,0,1378,3737,3633,3483,3547,
-6308,0,0,0,0,1291,2131,2177,2322,2385,0,0,0,0,0,0,
-0,0,0,812,940,820,944,1004,1056,824,1077,828,1008,1081,1113,805,
-1454,1456,1459,1469,1881,1883,1886,1890,1472,1928,1930,1933,1551,1265,1291,1584,
-2322,2324,2327,2337,2853,2855,2858,2862,2340,2896,2898,2901,2455,2085,2131,2494,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,6275,6282,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,6287,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,6290,6296,6293,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,6299,0,0,0,0,6302,0,0,6305,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,6312,0,6315,0,0,0,0,0,6318,6321,0,6330,
-6333,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,6337,0,0,6340,0,0,6343,0,6346,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1176,0,6352,0,0,0,0,0,0,0,0,0,0,6349,1164,1181,
-6355,6358,0,0,6361,6364,0,0,6367,6370,0,0,0,0,0,0,
-6373,6376,0,0,6385,6388,0,0,6391,6394,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,6403,6406,6409,6412,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-6379,6382,6397,6400,0,0,0,0,0,0,6415,6418,6421,6424,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,6446,6448,0,0,0,0,0,
-638,841,957,1021,1069,1094,1108,1126,1140,643,662,681,700,715,730,745,
-760,775,790,846,127,181,190,194,198,202,206,210,214,131,136,141,
-146,151,156,161,166,171,176,185,640,843,959,1023,1071,1096,1110,1128,
-1142,646,665,684,703,718,733,748,763,778,793,849,218,222,226,230,
-234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294,
-298,302,306,310,314,318,1194,1251,1265,1291,1323,1376,1385,1422,1454,1520,
-1525,1551,1584,1615,1653,1703,1728,1730,1759,1788,1822,1881,1905,1928,1943,1972,
-2004,2070,2085,2131,2177,2237,2262,2289,2322,2385,2393,2455,2494,2560,2610,2663,
-2694,2696,2739,2768,2794,2853,2873,2896,2911,2943,633,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,6325,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,1156,1169,1172,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,6437,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6440,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7833,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,8595,0,0,0,0,0,0,0,0,0,0,0,0,
-7278,7296,7302,7306,7308,7314,7318,7322,7326,7354,7362,7368,7374,7376,7380,7394,
-7396,7398,7410,7428,7432,7436,7438,7444,7454,7456,7462,7464,7468,7470,7502,7508,
-7526,7528,7530,7532,7536,7551,7557,7561,7571,7573,7575,7577,7587,7589,7597,7599,
-7603,7605,7607,7614,7616,7632,7634,7638,7640,7642,7644,7648,7656,7690,7696,7698,
-7722,7724,7732,7734,7738,7740,7744,7748,7768,7772,7780,7815,7817,7823,7827,7831,
-7835,7837,7839,7841,7843,7893,7913,7919,7921,7923,7925,7927,7929,7935,7947,7951,
-7971,7973,7977,7979,7981,7983,7997,7999,8011,8013,8015,8017,8027,8039,8041,8043,
-8059,8089,8091,8101,8107,8109,8119,8131,8153,8157,8165,8169,8171,8175,8177,8179,
-8187,8189,8195,8199,8203,8205,8207,8209,8211,8213,8217,8219,8257,8261,8269,8271,
-8273,8289,8293,8297,8299,8327,8329,8333,8335,8337,8351,8353,8355,8359,8361,8373,
-8375,8377,8393,8399,8407,8409,8413,8423,8425,8429,8447,8451,8457,8467,8471,8473,
-8475,8477,8481,8483,8487,8499,8501,8503,8511,8513,8515,8521,8523,8525,8529,8531,
-8533,8535,8537,8543,8551,8553,8559,8561,8563,8565,8569,8571,8573,8575,8577,8579,
-8581,8585,8587,8589,8593,8597,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,6466,0,7444,7446,7448,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,6479,0,6482,0,
-6485,0,6488,0,6491,0,6494,0,6497,0,6500,0,6503,0,6506,0,
-6509,0,6512,0,0,6515,0,6518,0,6521,0,0,0,0,0,0,
-6524,6527,0,6530,6533,0,6536,6539,0,6542,6545,0,6548,6551,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,6476,0,0,0,0,0,0,99,102,0,6561,6554,
-0,0,0,0,0,0,0,0,0,0,0,0,6640,0,6667,0,
-6711,0,6737,0,6746,0,6762,0,6778,0,6788,0,6793,0,6806,0,
-6811,0,6820,0,0,6827,0,6832,0,6840,0,0,0,0,0,0,
-6868,6871,0,6895,6898,0,6919,6922,0,6948,6951,0,6985,6988,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,6604,0,0,7137,7146,7151,7156,0,0,0,7165,6749,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,5502,5507,5706,5509,5708,5710,5514,5519,5521,5712,5714,5716,5718,5720,5722,
-5600,5526,5531,5536,5610,5538,5543,5545,5553,5563,5565,5576,5581,5586,5591,5648,
-5650,5652,5654,5656,5658,5660,5662,5664,5666,5668,5670,5672,5674,5676,5678,5680,
-5682,5684,5686,5688,5646,5596,5598,5724,5726,5728,5730,5732,5734,5736,5602,5738,
-5740,5604,5606,5608,5612,5614,5616,5618,5620,5622,5624,5626,5628,5630,5632,5634,
-5636,5638,5742,5744,5640,5642,5644,5690,5692,5694,5696,5698,5700,5702,5704,0,
-0,0,7278,7318,7284,7504,7286,7298,7288,7985,7308,7292,7280,7541,7510,7326,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-322,331,340,349,358,367,376,385,409,423,432,441,450,459,326,335,
-344,353,362,371,380,389,413,427,436,445,454,463,418,394,402,0,
-468,484,476,532,488,508,472,504,480,516,548,568,564,556,608,536,
-544,560,552,580,524,572,600,584,512,492,528,540,576,496,604,520,
-588,500,592,596,0,0,0,0,0,0,0,0,0,0,0,0,
-1715,861,872,883,894,905,912,919,926,933,962,969,976,979,982,985,
-5502,5509,5514,5521,5526,5531,5538,5545,5553,5565,5576,5581,5586,5591,5504,5511,
-5516,5523,5528,5533,5540,5547,5555,5567,5578,5583,5588,5593,5570,5558,5550,0,
-7278,7318,7284,7504,7320,7370,7282,7368,7310,7444,7772,7893,7843,7780,8413,7508,
-7748,7794,7774,8063,7476,7933,8339,8073,7414,8095,7987,7551,8385,7352,7458,7851,
-8489,7334,7378,7819,7286,7298,7288,7601,7474,7440,7565,7559,8023,7332,8343,7452,
-7534,988,991,994,997,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1074,
-835,951,1015,1063,1088,1102,1120,1134,1148,654,673,692,1427,2182,2179,1556,
-6566,6589,6602,6613,6628,6638,6665,6709,6735,6744,6760,6776,6786,6791,6804,6809,
-6818,6825,6830,6838,6849,6854,6856,6858,6860,6866,6893,6917,6946,6983,7015,7040,
-7056,7058,7073,7077,7089,7097,7099,7101,7111,7122,7133,7135,7144,7149,7154,0,
-6568,6573,6578,6583,6591,6596,6607,6615,6621,6630,6634,6643,6647,6652,6657,6661,
-6697,6700,6670,6704,6675,6678,6684,6691,6725,6729,6714,6720,6740,6752,6756,6765,
-6770,6781,6796,6800,6814,6835,6846,6843,6851,6862,6874,6883,6889,6878,6904,6910,
-6914,6901,6925,6931,6940,6936,6954,6968,6971,6960,6975,6979,6964,7006,7002,6991,
-7011,6994,6998,7017,7022,7026,7030,7034,7042,7047,7050,7060,7063,7068,7079,7083,
-7091,7103,7108,7113,7117,7124,7127,7140,635,838,954,1018,1066,1091,1105,1123,
-1137,1151,658,677,696,711,726,741,756,771,786,801,857,868,879,890,
-901,2291,2136,1196,2072,2612,2682,2139,2142,2146,1466,7609,7755,7538,7750,7796,
-2670,2562,3701,2496,2395,1527,1586,1387,2095,2412,2673,2565,3704,3713,2508,2417,
-1430,2398,1589,1390,1794,3722,2548,2174,2452,2256,2577,3716,2515,2105,2420,2518,
-2108,2533,2423,2522,2112,2536,2427,2551,2555,1719,2402,1593,1394,2698,2702,2708,
-2685,2580,3719,2530,2676,2568,3707,2499,2406,1597,2679,2571,3710,2502,2409,1600,
-2449,1612,2006,1253,2099,2102,1286,1267,2133,1398,2295,1424,2334,1530,1533,2431,
-2460,2463,2466,2470,2505,2511,2526,1705,2665,1708,1712,2741,1764,1907,1901,1247,
-832,948,1012,1060,1085,1099,1117,1131,1145,650,669,688,707,722,737,752,
-767,782,797,853,864,875,886,897,908,915,922,929,936,965,972,2264,
-8331,7770,8361,8345,7877,7300,7472,8593,8593,7547,8413,7488,7545,7686,8009,8163,
-8255,8265,8281,8391,7807,7853,7899,7955,8235,8401,8517,7312,7460,7813,7911,8253,
-8549,7593,7887,8245,8287,7700,8193,8267,7622,7776,7859,7941,8395,7338,7384,7422,
-7720,7811,7909,8025,8171,8249,8259,8357,8463,8539,8547,8047,8079,8141,8229,8419,
-8553,8309,7524,7636,8117,8185,7931,8051,8341,8461,7522,7581,7809,7865,7881,8137,
-8149,8433,7420,8191,7390,7388,8097,8143,8233,8437,8323,7702,7807,8315,7304,7567,
-7660,7949,7995,7434,8055,7344,7652,7290,7847,7730,8135,7466,7516,8031,8237,8301,
-7829,8375,7845,7706,8223,7710,7993,7324,7366,7386,7801,8129,8215,8307,8411,7426,
-7482,7551,7630,7742,7889,8057,8427,8519,8555,8567,7410,7766,7821,8371,7612,7682,
-7688,7718,7885,7901,7967,8093,8145,8183,8363,8241,8381,8421,7402,7412,7484,7897,
-8275,8301,7620,7658,7708,7825,8115,7945,7330,7506,7567,7595,7662,7953,7963,8167,
-8181,8415,8459,8465,8493,7340,8087,8405,8449,7668,7316,7348,7569,7579,7736,7807,
-7905,8007,8243,8389,8589,7760,8431,7408,7786,7790,7857,7871,7959,7991,8045,8133,
-8497,7370,7692,8439,7346,7591,7867,8365,7650,7672,7792,7949,8443,7404,7478,7585,
-7753,7782,7805,7849,7957,8001,8161,8277,8279,8409,8453,7442,7873,7480,7907,7969,
-8247,8445,8541,8557,7788,7863,8197,8107,8111,8123,7939,7895,8321,7328,8225,7406,
-7400,7618,7704,8127,7563,7855,7764,8369,8271,8435,8293,7626,7356,7494,0,0,
-7514,0,7758,0,0,7392,7943,8019,8061,8075,8077,8085,8469,8125,8169,0,
-8251,0,8313,0,0,8383,8397,0,0,0,8505,8507,8509,8545,0,0,
-7342,7350,7360,7418,7424,7450,7492,7498,7500,7512,7518,7583,7587,7664,7678,7680,
-7684,7726,7746,7762,7803,7861,7869,7883,7903,7915,7961,8049,8063,8067,8065,8069,
-8071,8073,8081,8083,8099,8103,8113,8145,8147,8151,8159,8173,8201,8221,8221,8239,
-8283,8295,8317,8319,8347,8349,8379,8383,8455,8485,8495,0,0,0,0,0,
-7294,7382,7364,7336,7358,7372,7416,7430,7492,7486,7490,7496,7514,7520,7543,7549,
-7553,7555,7624,7628,7646,7654,7666,7674,7670,7680,7676,7684,7694,7712,7714,7716,
-7728,7758,7776,7778,7784,7823,7829,7857,7879,7875,7883,7891,7903,8037,7917,7937,
-7943,7965,7975,7989,8003,8005,8019,8021,8029,8035,8033,8053,8105,8113,8121,8139,
-8145,8155,8173,8227,8231,8263,8285,8291,8295,8303,8313,8305,8317,8315,8311,8319,
-8325,8349,8367,8387,8403,8417,8441,8455,8469,8479,8485,8491,8495,8527,8593,8609,
-8607,8611,7272,7274,7276,8613,8615,8617,8583,8591,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-2239,2250,2253,2242,2246,3246,2744,0,0,0,0,0,0,0,0,0,
-0,0,0,3998,3989,3992,4001,3995,0,0,0,0,0,4053,0,4122,
-4086,4004,4031,4036,4062,4070,4075,4103,4117,616,4111,4114,8601,8604,4006,4009,
-4012,4020,4028,4033,4038,4044,4047,0,4050,4056,4059,4064,4072,0,4077,0,
-4080,4083,0,4088,4091,0,4097,4100,4105,4108,4119,4041,4023,4067,4094,4015,
-5202,5202,5210,5210,5210,5210,5212,5212,5212,5212,5216,5216,5216,5216,5208,5208,
-5208,5208,5214,5214,5214,5214,5206,5206,5206,5206,5238,5238,5238,5238,5240,5240,
-5240,5240,5220,5220,5220,5220,5218,5218,5218,5218,5222,5222,5222,5222,5224,5224,
-5224,5224,5230,5230,5228,5228,5232,5232,5226,5226,5236,5236,5234,5234,5242,5242,
-5242,5242,5246,5246,5246,5246,5250,5250,5250,5250,5248,5248,5248,5248,5252,5252,
-5254,5254,5254,5254,5258,5258,5260,5260,5260,5260,5256,5256,5256,5256,5284,5284,
-5289,5289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,5244,5244,5244,5244,5269,5269,5267,5267,5274,5274,5204,5278,5278,
-5265,5265,5276,5276,5282,5282,5282,5282,5143,5143,4137,4137,4185,4185,4164,4164,
-4176,4176,4173,4173,4179,4179,4182,4182,4182,4167,4167,4167,5280,5280,5280,5280,
-4140,4143,4155,4167,4170,4217,4220,4227,4240,4249,4252,4259,4274,4285,4306,4335,
-4338,4343,4352,4361,4364,4369,4389,4412,4419,4438,4441,4444,4479,4490,4497,4511,
-4583,4632,4647,4650,4661,4671,4682,4685,4708,4713,4725,4748,4751,4804,4807,4810,
-4817,4824,4827,4832,4839,4854,4857,4862,4865,4868,4871,4874,4877,4888,4891,4908,
-4923,4938,4945,4959,4962,4970,4989,5009,5024,5031,5034,5039,5058,5073,5082,5099,
-5102,5107,5110,5121,5124,5150,5157,5164,5173,5190,5193,4457,4467,5145,57,64,
-71,78,85,92,4149,4152,4155,4158,4167,4170,4234,4237,4240,4243,4249,4252,
-4300,4303,4306,4329,4335,4338,4346,4349,4352,4355,4361,4364,4824,4827,4854,4857,
-4862,4874,4877,4888,4891,4945,4959,4962,4967,5024,5076,5079,5082,5093,5099,5102,
-5145,5167,5170,5173,5184,5190,5193,4140,4143,4146,4155,4161,4217,4220,4227,4240,
-4246,4259,4274,4285,4306,4332,4352,4369,4389,4412,4419,4438,4444,4479,4490,4497,
-4511,4583,4594,4632,4647,4650,4661,4671,4682,4708,4713,4725,4748,4751,4804,4807,
-4810,4817,4832,4839,4865,4868,4871,4874,4877,4908,4923,4938,4945,4956,4970,4989,
-5009,5024,5039,5058,5073,5082,5096,5107,5110,5127,5150,5157,5164,5173,5187,4155,
-4161,4240,4246,4306,4332,4352,4358,4511,4526,4561,4572,4874,4877,4945,5082,5096,
-5173,5187,4778,4785,4792,4700,4703,4740,4743,4766,4769,4529,4532,4575,4578,4430,
-4433,4404,4407,4447,4450,4639,4642,4674,4677,4537,4544,4555,4561,4558,4508,4597,
-4668,4700,4703,4740,4743,4766,4769,4529,4532,4575,4578,4430,4433,4404,4407,4447,
-4450,4639,4642,4674,4677,4537,4544,4555,4561,4558,4508,4597,4668,4537,4544,4555,
-4561,4526,4572,4685,4479,4490,4497,4537,4544,4555,4685,4708,4200,4200,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-4262,4277,4277,4281,4288,4309,4313,4317,4392,4392,4426,4422,4493,4482,4486,4518,
-4518,4514,4522,4522,4586,4586,4635,4547,4547,4540,4564,4564,4568,4568,4653,4664,
-4664,4688,4688,4692,4696,4716,4728,4728,4732,4754,4762,4758,4813,4813,4842,4846,
-4926,4934,4930,4911,4911,4941,4941,4948,4948,4992,4996,5005,4973,4981,5012,5016,
-0,0,4977,5113,5117,5061,5065,5046,5046,5050,5089,5085,5176,5176,4230,4270,
-4266,4296,4292,4325,4321,4400,4372,4396,4500,4590,4551,4657,4919,4952,5160,5153,
-5180,5027,4850,5069,4842,4926,4736,4884,5042,5020,4915,4880,4915,5042,4376,4415,
-4985,4820,4223,4880,4716,4635,4504,5054,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-4628,4835,4195,4190,5000,4600,4462,4720,5132,4605,4609,4380,4470,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-618,6442,6444,1154,1160,105,1184,6472,6474,6248,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-6246,6244,6242,2000,2000,125,612,2963,2967,6468,6470,6462,6464,6450,6452,6446,
-6448,6454,6456,6458,6460,0,0,1992,1996,6269,6269,6269,6269,2000,2000,2000,
-618,6442,622,0,1160,1154,1184,105,6244,125,612,2963,2967,6468,6470,115,
-121,614,616,620,1162,1179,1167,0,1994,117,119,1192,0,0,0,0,
-51,4772,54,0,61,0,68,4775,75,4782,82,4789,89,4796,96,4799,
-4125,4127,4127,4129,4129,4131,4131,4133,4133,4135,4135,4135,4135,4188,4188,4215,
-4215,4215,4215,4255,4255,4257,4257,4257,4257,4341,4341,4341,4341,4367,4367,4367,
-4367,4410,4410,4410,4410,4436,4436,4436,4436,4453,4453,4455,4455,4460,4460,4475,
-4475,4477,4477,4477,4477,4535,4535,4535,4535,4581,4581,4581,4581,4645,4645,4645,
-4645,4680,4680,4680,4680,4706,4706,4706,4706,4711,4711,4711,4711,4746,4746,4746,
-4746,4802,4802,4802,4802,4830,4830,4830,4830,4860,4860,4860,4860,4894,4894,4894,
-4894,4965,4965,4965,4965,5037,5037,5037,5037,5105,5105,5105,5105,5130,5130,5143,
-5143,5148,5148,5148,5148,4896,4896,4899,4899,4902,4902,4905,4905,0,0,0,
-0,105,113,115,117,119,121,123,125,612,614,616,618,620,622,631,
-633,638,841,957,1021,1069,1094,1108,1126,1140,1154,1160,1162,1167,1179,1184,
-1192,1194,1251,1265,1291,1323,1376,1385,1422,1454,1520,1525,1551,1584,1615,1653,
-1703,1728,1730,1759,1788,1822,1881,1905,1928,1943,1972,1992,1994,1996,1998,2000,
-2002,2004,2070,2085,2131,2177,2237,2262,2289,2322,2385,2393,2455,2494,2560,2610,
-2663,2694,2696,2739,2768,2794,2853,2873,2896,2911,2943,2963,2965,2967,2969,6433,
-6435,6444,6454,6456,6442,7161,7154,6564,6587,6600,6611,6626,7075,7087,7095,6823,
-7163,6566,6589,6602,6613,6628,6638,6665,6709,6735,6744,6760,6776,6786,6791,6804,
-6809,6818,6825,6830,6838,6849,6854,6856,6858,6860,6866,6893,6917,6946,6983,7015,
-7040,7056,7058,7073,7077,7089,7097,7099,7101,7111,7122,7133,7135,7159,6557,6559,
-7270,7168,7170,7172,7174,7176,7178,7180,7182,7184,7186,7188,7190,7192,7194,7196,
-7198,7200,7202,7204,7206,7208,7210,7212,7214,7216,7218,7220,7222,7224,7226,0,
-0,0,7228,7230,7232,7234,7236,7238,0,0,7240,7242,7244,7246,7248,7250,
-0,0,7252,7254,7256,7258,7260,7262,0,0,7264,7266,7268,0,0,0,
-2971,2973,2988,2990,2977,2975,6271,0,6427,6273,6278,6280,6285,6429,6431,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0};
-static const guint16 helperIndex [] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,1160,1164,1176,1181,0,
-0,1199,1256,1271,1305,1325,1382,1401,1433,1475,1522,1525,1566,1603,1626,1655,
-1722,0,1735,1767,1801,1824,1895,1910,1937,1945,1974,0,0,0,0,0,
-2002,2022,2076,2116,2156,2186,2259,2268,2298,2343,2387,2434,2476,2539,2583,2615,
-2688,0,2715,2747,2770,2796,2867,2875,2905,2913,2945,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,2979,0,0,0,0,0,0,0,
-0,0,0,0,2998,0,0,3000,0,0,0,0,0,0,0,0,
-0,0,3002,0,3014,3017,3024,3030,0,0,3033,0,0,0,0,3045,
-0,0,0,0,3048,3060,3069,0,3072,0,0,0,3075,0,0,0,
-0,0,3087,0,3099,3102,3105,3111,0,0,3114,0,0,0,0,3126,
-0,0,0,0,3131,3143,3152,0,3155,0,0,0,3158,0,0,0,
-0,0,3170,3182,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3194,3200,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,3210,3216,0,0,
-0,0,0,0,0,0,0,0,0,0,3222,3225,0,0,0,0,
-3228,3231,0,0,0,0,0,0,3234,3237,3240,3243,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3249,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3256,3271,0,0,0,0,0,0,0,0,0,0,0,0,0,3288,
-3303,0,0,0,0,0,0,3318,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,3321,3324,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,3329,3332,3335,3338,0,0,0,0,3341,3344,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,3421,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,3430,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3435,3437,0,0,0,0,0,0,3439,0,0,0,0,0,0,0,
-0,0,0,3442,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,3444,3446,0,3448,3450,3452,0,3454,0,3456,3458,
-3460,3462,0,0,0,3485,0,3497,0,3514,0,0,0,0,0,3535,
-0,3549,0,0,0,3556,0,0,0,3574,0,0,3591,3596,3598,3603,
-3605,3607,0,0,0,3639,0,3651,0,3671,0,0,0,0,0,3725,
-0,3741,0,0,0,3749,0,0,0,3777,3795,3804,3813,3815,3817,0,
-0,0,3822,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,3828,0,0,0,0,0,0,0,0,0,
-3831,0,0,3837,0,3840,3849,3855,3858,0,3870,0,0,0,3873,0,
-0,0,0,3876,0,0,0,3888,0,0,0,3891,0,3894,0,0,
-3897,0,0,3903,0,3906,3915,3921,3924,0,3936,0,0,0,3941,0,
-0,0,0,3944,0,0,0,3956,0,0,0,3959,0,3962,0,0,
-0,0,0,0,0,0,3965,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,3968,3971,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,3974,3977,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,3980,3983,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-4006,4020,4028,4033,4038,4041,4047,0,4050,4053,4059,4064,4072,0,4077,0,
-4080,4083,0,4088,4091,0,4097,4100,4105,4108,4119,0,0,0,0,0,
-0,0,4122,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,4203,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,5137,0,5196,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,5262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,5286,0,0,5291,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,5294,5297,5300,0,0,0,0,5303,0,0,0,
-0,5306,5309,0,0,0,0,0,5312,0,0,5315,0,0,0,5318,
-5321,0,0,5324,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,5327,5330,0,0,0,0,0,0,0,0,0,0,0,0,5333,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,5336,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,5342,5345,0,0,0,0,5348,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,5351,0,0,0,0,
-0,0,5354,0,0,0,0,0,5357,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,5360,5363,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,5366,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,5375,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,5378,5384,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,5387,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5390,
-0,0,0,0,0,0,5393,0,0,0,5402,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,5405,5411,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,5414,0,0,5423,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5440,0,5443,0,0,0,0,0,0,0,0,0,5446,0,0,0,
-0,5449,0,0,0,0,5452,0,0,0,0,5455,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,5458,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5467,0,5470,0,0,0,0,0,0,0,0,0,5473,0,0,0,
-0,5476,0,0,0,0,5479,0,0,0,0,5482,0,0,0,0,
-0,0,5485,5491,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,5497,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,5795,5798,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,5801,5804,0,0,0,0,
-0,0,5807,5810,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5813,5819,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,5825,5828,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5831,5834,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5837,5849,5861,5864,5867,5870,5873,5876,5879,5891,5903,5906,5909,5912,5915,5918,
-5921,5927,0,0,0,0,0,0,5933,5939,0,0,0,0,0,0,
-5945,5957,5969,5972,5975,5978,5981,5984,5987,5999,6011,6014,6017,6020,6023,6026,
-6029,6038,0,0,0,0,0,0,6047,6056,0,0,0,0,0,0,
-6065,6071,0,0,0,0,0,0,6077,6083,0,0,0,0,0,0,
-6089,6098,0,0,0,0,0,0,0,6107,0,0,0,0,0,0,
-6116,6128,6140,6143,6146,6149,6152,6155,6158,6170,6182,6185,6188,6191,6194,6197,
-6200,0,0,0,6203,0,0,0,0,0,0,0,6206,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,6209,0,0,0,0,0,0,0,0,6212,
-0,0,0,0,0,0,6221,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,6224,0,0,0,0,0,0,0,6227,0,
-0,0,6236,6238,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-6275,0,6282,0,6287,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-6290,0,6293,0,6296,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,6299,0,0,0,0,6302,0,0,6305,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,6312,0,6315,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,6337,0,0,0,
-0,0,0,6340,0,6343,0,0,6346,0,0,0,0,6349,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,6352,0,0,6355,6358,0,0,0,0,0,0,0,0,0,0,
-0,0,6361,6364,0,0,6367,6370,0,0,6373,6376,6379,6382,0,0,
-0,0,6385,6388,0,0,6391,6394,0,0,0,0,0,0,0,0,
-0,6397,6400,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,6403,0,0,0,0,0,6406,6409,0,6412,0,0,0,0,
-0,0,6415,6418,6421,6424,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,6446,6448,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,6476,0,0,0,0,6479,0,6482,0,6485,
-0,6488,0,6491,0,6494,0,6497,0,6500,0,6503,0,6506,0,6509,
-0,6512,0,0,6515,0,6518,0,6521,0,0,0,0,0,0,6524,
-0,0,6530,0,0,6536,0,0,6542,0,0,6548,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,6561,0,0,
-0,0,0,0,0,0,6604,0,0,0,0,6640,0,6667,0,6711,
-0,6737,0,6746,0,6762,0,6778,0,6788,0,6793,0,6806,0,6811,
-0,6820,0,0,6827,0,6832,0,6840,0,0,0,0,0,0,6868,
-0,0,6895,0,0,6919,0,0,6948,0,0,6985,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7137,
-7146,7151,7156,0,0,0,0,0,0,0,0,0,0,7165,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,7272,0,0,
-0,0,0,0,0,0,0,0,7274,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,7290,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,7294,0,0,0,0,0,0,0,0,0,
-0,0,7300,0,0,0,0,0,0,7304,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7312,0,0,0,7316,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7324,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7330,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7336,0,0,0,0,0,7338,0,0,0,0,7340,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7342,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7344,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7346,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7348,0,0,0,0,0,
-0,0,0,0,0,0,0,7350,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7356,0,0,0,0,7358,0,0,0,0,0,0,0,7360,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7364,7366,0,0,0,7370,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7382,0,7384,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7386,0,0,7388,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7390,0,7392,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7400,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7402,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7404,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7406,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7408,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7410,0,0,0,0,
-0,0,0,7412,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7416,0,7418,0,0,0,0,0,0,
-0,0,7420,0,0,0,0,0,0,0,0,0,0,0,7422,0,
-0,0,0,0,7424,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7426,0,0,0,0,7430,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7434,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7442,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,7450,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7460,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7466,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7472,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7478,
-0,0,0,0,0,0,0,0,0,0,0,0,0,7480,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7482,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,7484,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7486,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7488,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7490,0,0,0,7492,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7494,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7496,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,7498,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7500,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7506,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7512,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7514,0,0,0,7516,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7518,0,0,0,0,0,0,0,
-0,0,0,7520,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7522,0,0,0,0,0,0,7524,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7543,0,0,0,7545,0,0,0,0,0,0,0,
-0,7547,0,0,7549,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7551,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7553,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7555,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7563,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7567,0,0,0,0,0,0,7569,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7579,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7581,0,7583,7585,0,0,0,0,0,0,0,0,7587,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7591,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7593,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7595,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7612,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,7618,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7620,7622,0,0,0,0,0,
-0,0,7624,7626,0,0,0,0,0,7628,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7630,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7636,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7646,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7650,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7652,0,0,0,7654,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7658,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7660,0,0,0,0,0,0,0,0,0,7662,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7664,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7666,0,0,0,0,0,0,0,
-0,7668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7670,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7672,0,0,0,0,0,0,0,0,0,7674,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7676,0,0,0,0,0,0,0,7678,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,0,
-7682,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7684,0,0,0,7686,0,0,0,0,0,0,0,0,0,
-7688,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7692,0,
-0,0,0,0,7694,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7700,0,0,0,0,0,7702,
-0,0,0,7704,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7706,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7708,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7710,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7712,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7714,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7716,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7718,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7720,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7726,
-0,0,0,0,0,0,7728,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7730,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7736,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7742,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7746,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7753,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7758,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7760,0,0,0,0,0,0,0,
-0,7762,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7764,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,7766,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7770,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7776,0,0,0,7778,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7782,0,
-0,0,0,0,0,0,7784,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7786,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7788,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7790,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7792,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,7801,0,0,0,7803,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7805,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7807,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7809,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7811,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,7813,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7821,0,7823,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7825,0,
-0,0,0,0,0,0,0,0,0,0,7829,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7845,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7847,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7849,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7853,0,0,7855,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,7857,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7859,0,0,0,0,0,
-0,0,0,0,0,0,0,7861,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7863,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7865,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7867,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7869,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7871,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7873,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7875,0,0,0,0,
-0,7877,0,0,0,0,0,0,0,0,0,7879,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7881,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7883,7885,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7887,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7889,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7891,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7895,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7897,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7899,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7901,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7903,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7905,0,
-7907,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7909,0,0,0,0,0,0,0,0,0,0,7911,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7915,0,0,0,0,
-0,0,0,0,0,7917,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7931,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7937,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7939,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7941,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7943,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,7945,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7949,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7953,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,7955,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,7957,0,0,7959,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7961,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7963,0,0,0,0,0,0,
-0,7965,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7967,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,7969,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,7975,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7989,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7991,0,0,0,0,0,0,
-0,0,0,0,0,7993,0,0,0,0,0,0,0,0,0,0,
-7995,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8001,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8003,0,8005,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8007,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,8009,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8019,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8021,0,0,0,0,
-0,0,0,0,0,0,0,8025,0,0,0,0,0,0,0,0,
-0,0,0,0,8029,0,0,0,0,0,0,0,0,0,0,0,
-0,8031,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8033,0,0,0,0,0,0,0,0,0,8035,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,8037,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8045,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8047,0,0,0,
-0,8049,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8051,0,8053,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8055,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8057,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8061,0,8063,0,
-0,0,0,0,0,0,0,0,8065,8067,0,0,0,0,0,0,
-8069,0,0,0,0,0,8071,0,0,0,0,0,0,8073,8075,0,
-0,0,0,0,0,8077,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8079,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8081,8083,8085,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8087,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8093,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8097,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8099,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,8103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,8105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8107,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8115,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8121,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8123,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8125,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8127,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,8129,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8135,0,0,0,0,0,0,0,0,0,0,0,0,8137,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8139,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8143,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,8145,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,8147,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,8149,0,0,0,0,0,0,0,0,
-0,8151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8155,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8159,0,0,0,0,0,0,8161,0,0,0,0,0,0,
-0,0,0,0,0,8163,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8167,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8169,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,8171,0,0,0,8173,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8181,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8183,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8185,0,
-0,0,0,0,0,0,0,0,0,0,0,8191,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8193,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8197,0,0,0,0,8201,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8215,
-0,0,0,0,0,0,0,0,0,8221,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,8223,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8225,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8227,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,8229,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8231,
-0,8233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8235,0,0,
-0,0,0,0,0,0,0,0,0,8237,0,0,0,0,0,0,
-0,0,0,0,0,0,0,8239,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8241,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8243,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8245,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8247,0,0,0,0,0,
-0,0,0,0,0,0,8249,0,0,0,0,0,0,0,0,0,
-0,0,8251,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8253,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8255,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8259,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,8263,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8265,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8267,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8271,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8275,0,0,0,0,0,0,0,0,0,0,0,0,8277,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,8279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8281,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,8285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,8287,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8291,0,0,0,0,8293,0,0,0,0,
-0,0,0,0,0,0,8295,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8301,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8303,
-0,0,0,0,0,0,0,0,0,0,0,8305,0,0,0,0,
-0,0,8307,0,0,0,8309,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8311,0,0,
-0,0,0,0,0,0,0,0,8313,0,0,0,0,0,8315,0,
-0,8317,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,8319,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8321,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8323,0,0,0,0,0,0,0,0,0,8325,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8331,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8341,0,0,0,0,0,8345,0,0,0,0,0,0,0,
-0,0,0,8347,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8349,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8357,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8361,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8363,0,0,0,8365,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8367,0,0,8369,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8371,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-8375,0,0,0,0,0,8379,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,8381,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8383,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8387,0,0,0,0,0,0,0,0,0,8389,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8391,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8395,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8397,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8401,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,8403,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,8405,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8409,0,0,8411,
-0,8413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,8415,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8417,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,8419,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8421,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8427,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8431,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8433,0,8435,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,8437,0,0,8439,0,0,0,8441,0,0,0,
-0,0,0,0,0,0,8443,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,8445,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8449,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8453,8455,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8459,8461,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8463,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8465,0,0,0,0,0,0,0,
-0,0,0,0,0,0,8469,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8479,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8485,
-0,0,0,0,0,0,0,0,0,0,0,8491,0,0,0,0,
-0,0,0,0,0,0,0,0,8493,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,8495,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8497,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8505,
-0,0,0,0,0,0,0,0,0,0,0,0,8507,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,8509,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,8517,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8519,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,8527,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8539,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,8541,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,8545,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,8547,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8549,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8553,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,8555,0,0,0,0,0,0,0,8557,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,8567,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,8583,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8589,8591,0,
-0,0,0,0,0,0,0,0,0,0,0,0,8593,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,8601,0,0,0,0,0,0,
-0};
-static const guint16 mapIdxToComposite [] = {
-0,0,0,0,0,0,0,0,894,0,0,0,8814,0,0,0,
-0,0,0,0,0,0,0,0,8800,0,0,0,0,8815,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,
-0,0,193,0,0,194,0,0,195,0,0,256,0,0,258,0,
-0,550,0,0,196,0,0,7842,0,0,197,0,0,461,0,0,
-512,0,0,514,0,0,7840,0,0,7680,0,0,260,0,0,0,
-0,0,0,0,0,0,0,0,7682,0,0,7684,0,0,7686,0,
-0,0,0,0,0,0,0,262,0,0,264,0,0,266,0,0,
-268,0,0,199,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7690,0,0,270,0,0,7692,
-0,0,7696,0,0,7698,0,0,7694,0,0,0,0,200,0,0,
-201,0,0,202,0,0,7868,0,0,274,0,0,276,0,0,278,
-0,0,203,0,0,7866,0,0,282,0,0,516,0,0,518,0,
-0,7864,0,0,552,0,0,280,0,0,7704,0,0,7706,0,0,
-0,0,0,0,0,0,7710,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,500,0,0,284,0,0,7712,
-0,0,286,0,0,288,0,0,486,0,0,290,0,0,0,0,
-0,0,0,0,0,0,0,0,0,292,0,0,7714,0,0,7718,
-0,0,542,0,0,7716,0,0,7720,0,0,7722,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,204,0,0,205,0,0,206,0,0,296,0,0,298,
-0,0,300,0,0,304,0,0,207,0,0,7880,0,0,463,0,
-0,520,0,0,522,0,0,7882,0,0,302,0,0,7724,0,0,
-0,0,308,0,0,8490,0,0,0,0,0,0,0,0,0,0,
-7728,0,0,488,0,0,7730,0,0,310,0,0,7732,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,
-0,317,0,0,7734,0,0,315,0,0,7740,0,0,7738,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7742,0,0,7744,0,0,7746,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,504,0,0,323,0,0,
-209,0,0,7748,0,0,327,0,0,7750,0,0,325,0,0,7754,
-0,0,7752,0,0,0,0,210,0,0,211,0,0,212,0,0,
-213,0,0,332,0,0,334,0,0,558,0,0,214,0,0,7886,
-0,0,336,0,0,465,0,0,524,0,0,526,0,0,416,0,
-0,7884,0,0,490,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,7764,0,0,7766,0,0,
-0,0,0,0,0,0,0,340,0,0,7768,0,0,344,0,0,
-528,0,0,530,0,0,7770,0,0,342,0,0,7774,0,0,0,
-0,0,0,0,0,0,0,346,0,0,348,0,0,7776,0,0,
-352,0,0,7778,0,0,536,0,0,350,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,7786,0,0,356,0,0,7788,
-0,0,538,0,0,354,0,0,7792,0,0,7790,0,0,0,0,
-217,0,0,218,0,0,219,0,0,360,0,0,362,0,0,364,
-0,0,220,0,0,7910,0,0,366,0,0,368,0,0,467,0,
-0,532,0,0,534,0,0,431,0,0,7908,0,0,7794,0,0,
-370,0,0,7798,0,0,7796,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7804,0,0,7806,0,0,0,0,0,
-0,0,0,0,0,0,7808,0,0,7810,0,0,372,0,0,7814,
-0,0,7812,0,0,7816,0,0,0,0,0,0,0,0,0,0,
-0,7818,0,0,7820,0,0,0,0,7922,0,0,221,0,0,374,
-0,0,7928,0,0,562,0,0,7822,0,0,376,0,0,7926,0,
-0,7924,0,0,0,0,377,0,0,7824,0,0,379,0,0,381,
-0,0,7826,0,0,7828,0,0,0,0,0,0,0,0,0,0,
-0,0,8175,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,224,0,0,225,0,0,226,0,0,227,
-0,0,257,0,0,259,0,0,551,0,0,228,0,0,7843,0,
-0,229,0,0,462,0,0,513,0,0,515,0,0,7841,0,0,
-7681,0,0,261,0,0,0,0,0,0,0,0,7683,0,0,7685,
-0,0,7687,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,263,0,0,265,0,0,267,0,0,269,0,0,
-231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7691,0,0,271,
-0,0,7693,0,0,7697,0,0,7699,0,0,7695,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,232,0,0,233,0,0,
-234,0,0,7869,0,0,275,0,0,277,0,0,279,0,0,235,
-0,0,7867,0,0,283,0,0,517,0,0,519,0,0,7865,0,
-0,553,0,0,281,0,0,7705,0,0,7707,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7711,0,0,0,0,0,0,0,0,501,0,0,285,
-0,0,7713,0,0,287,0,0,289,0,0,487,0,0,291,0,
-0,0,0,0,0,0,0,0,0,0,293,0,0,7715,0,0,
-7719,0,0,543,0,0,7717,0,0,7721,0,0,7723,0,0,7830,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,236,0,0,237,0,0,238,0,0,
-297,0,0,299,0,0,301,0,0,239,0,0,7881,0,0,464,
-0,0,521,0,0,523,0,0,7883,0,0,303,0,0,7725,0,
-0,0,0,309,0,0,496,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,7729,0,0,489,0,0,7731,0,0,311,0,0,7733,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,314,0,0,318,
-0,0,7735,0,0,316,0,0,7741,0,0,7739,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,7743,0,0,7745,0,
-0,7747,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,505,0,0,324,0,0,241,0,0,
-7749,0,0,328,0,0,7751,0,0,326,0,0,7755,0,0,7753,
-0,0,0,0,0,0,0,242,0,0,243,0,0,244,0,0,
-245,0,0,333,0,0,335,0,0,559,0,0,246,0,0,7887,
-0,0,337,0,0,466,0,0,525,0,0,527,0,0,417,0,
-0,7885,0,0,491,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-7765,0,0,7767,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,341,0,0,7769,0,
-0,345,0,0,529,0,0,531,0,0,7771,0,0,343,0,0,
-7775,0,0,0,0,0,0,0,0,0,0,347,0,0,349,0,
-0,7777,0,0,353,0,0,7779,0,0,537,0,0,351,0,0,
-0,0,7787,0,0,7831,0,0,357,0,0,7789,0,0,539,0,
-0,355,0,0,7793,0,0,7791,0,0,0,0,249,0,0,250,
-0,0,251,0,0,361,0,0,363,0,0,365,0,0,252,0,
-0,7911,0,0,367,0,0,369,0,0,468,0,0,533,0,0,
-535,0,0,432,0,0,7909,0,0,7795,0,0,371,0,0,7799,
-0,0,7797,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7805,0,0,7807,0,0,0,0,7809,0,0,7811,0,
-0,373,0,0,7815,0,0,7813,0,0,7832,0,0,7817,0,0,
-0,0,0,0,0,0,0,0,0,7819,0,0,7821,0,0,0,
-0,7923,0,0,253,0,0,375,0,0,7929,0,0,563,0,0,
-7823,0,0,255,0,0,7927,0,0,7833,0,0,7925,0,0,0,
-0,378,0,0,7825,0,0,380,0,0,382,0,0,7827,0,0,
-7829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,8173,0,0,901,0,0,8129,0,0,0,0,0,0,
-0,0,0,0,0,0,8189,0,903,0,7846,0,0,7844,0,0,
-7850,0,0,7848,0,0,478,0,0,8491,0,506,0,0,0,0,
-508,0,0,482,0,0,7688,0,0,7872,0,0,7870,0,0,7876,
-0,0,7874,0,0,7726,0,0,7890,0,0,7888,0,0,7894,0,
-0,7892,0,0,7756,0,0,556,0,0,7758,0,0,554,0,0,
-510,0,0,475,0,0,471,0,0,469,0,0,473,0,0,7847,
-0,0,7845,0,0,7851,0,0,7849,0,0,479,0,0,507,0,
-0,509,0,0,483,0,0,7689,0,0,7873,0,0,7871,0,0,
-7877,0,0,7875,0,0,7727,0,0,0,0,7891,0,0,7889,0,
-0,7895,0,0,7893,0,0,7757,0,0,557,0,0,7759,0,0,
-555,0,0,511,0,0,476,0,0,472,0,0,470,0,0,474,
-0,0,7856,0,0,7854,0,0,7860,0,0,7858,0,0,7857,0,
-0,7855,0,0,7861,0,0,7859,0,0,7700,0,0,7702,0,0,
-7701,0,0,7703,0,0,0,0,0,0,7760,0,0,7762,0,0,
-7761,0,0,7763,0,0,7780,0,0,7781,0,0,7782,0,0,7783,
-0,0,7800,0,0,7801,0,0,7802,0,0,7803,0,0,0,0,
-0,7835,0,0,0,0,0,0,7900,0,0,7898,0,0,7904,0,
-0,7902,0,0,7906,0,0,7901,0,0,7899,0,0,7905,0,0,
-7903,0,0,7907,0,0,0,0,7914,0,0,7912,0,0,7918,0,
-0,7916,0,0,7920,0,0,7915,0,0,7913,0,0,7919,0,0,
-7917,0,0,7921,0,0,494,0,0,492,0,0,493,0,0,0,
-0,480,0,0,481,0,0,7708,0,0,7709,0,0,560,0,0,
-561,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,495,0,0,
-0,0,0,0,0,0,884,0,0,0,0,832,0,833,0,836,
-0,0,835,0,8174,0,8123,0,8137,0,8139,0,8155,0,8185,0,
-8171,0,8187,0,8147,0,8122,0,0,902,0,0,8121,0,0,8120,
-0,0,7944,0,0,7945,0,0,8124,0,0,0,0,8136,0,0,
-904,0,0,7960,0,0,7961,0,0,8138,0,0,905,0,0,7976,
-0,0,7977,0,0,8140,0,0,0,0,8154,0,0,906,0,0,
-8153,0,0,8152,0,0,938,0,0,7992,0,0,7993,0,0,8184,
-0,0,908,0,0,8008,0,0,8009,0,0,0,0,8172,0,0,
-0,0,0,0,8170,0,0,910,0,0,8169,0,0,8168,0,0,
-939,0,0,8025,0,0,8486,0,8186,0,0,911,0,0,8040,0,
-0,8041,0,0,8188,0,0,8049,0,8116,0,0,8051,0,8053,0,
-8132,0,0,8055,0,8163,0,8048,0,0,940,0,0,8113,0,0,
-8112,0,0,7936,0,0,7937,0,0,8118,0,0,8115,0,0,0,
-0,0,0,0,0,0,0,8050,0,0,941,0,0,7952,0,0,
-7953,0,0,8052,0,0,942,0,0,7968,0,0,7969,0,0,8134,
-0,0,8131,0,0,0,0,8126,0,8054,0,0,943,0,0,8145,
-0,0,8144,0,0,970,0,0,7984,0,0,7985,0,0,8150,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,8056,0,0,
-972,0,0,8000,0,0,8001,0,0,0,0,0,0,8164,0,0,
-8165,0,0,0,0,8058,0,0,973,0,0,8161,0,0,8160,0,
-0,971,0,0,8016,0,0,8017,0,0,8166,0,0,0,0,0,
-0,8060,0,0,974,0,0,8032,0,0,8033,0,0,8182,0,0,
-8179,0,0,8146,0,0,912,0,0,8151,0,0,8162,0,0,944,
-0,0,8167,0,0,8057,0,8059,0,8061,0,8180,0,0,979,0,
-0,980,0,0,1031,0,0,1232,0,0,1234,0,0,1027,0,0,
-1024,0,0,1238,0,0,1025,0,0,1217,0,0,1244,0,0,1246,
-0,0,1037,0,0,1250,0,0,1049,0,0,1252,0,0,1036,0,
-0,1254,0,0,1262,0,0,1038,0,0,1264,0,0,1266,0,0,
-1268,0,0,1272,0,0,1260,0,0,1233,0,0,1235,0,0,1107,
-0,0,1104,0,0,1239,0,0,1105,0,0,1218,0,0,1245,0,
-0,1247,0,0,1117,0,0,1251,0,0,1081,0,0,1253,0,0,
-1116,0,0,0,0,1255,0,0,1263,0,0,1118,0,0,1265,0,
-0,1267,0,0,1269,0,0,1273,0,0,1261,0,0,1111,0,0,
-1142,0,0,1143,0,0,1242,0,0,1243,0,0,1258,0,0,1259,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,64302,0,0,64303,0,0,64304,0,0,0,
-0,0,0,0,64305,0,0,64332,0,0,0,0,64306,0,0,0,
-0,64307,0,0,0,0,64308,0,0,64331,0,0,64309,0,0,64310,
-0,0,64312,0,0,64285,0,0,64313,0,0,64314,0,0,0,0,
-64315,0,0,64333,0,0,0,0,64316,0,0,0,0,64318,0,0,
-64320,0,0,64321,0,0,0,0,64323,0,0,64324,0,0,64334,0,
-0,64326,0,0,64327,0,0,0,0,64328,0,0,64329,0,0,64298,
-0,0,64299,0,0,0,0,64330,0,0,64287,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,1570,0,0,1571,0,
-0,1573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,1574,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,1730,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,1747,0,0,0,0,1728,0,0,2392,0,
-0,2393,0,0,2394,0,0,2395,0,0,2396,0,0,2397,0,0,
-2345,0,0,2398,0,0,2399,0,0,2353,0,0,2356,0,0,2524,
-0,0,2525,0,0,2527,0,0,2507,0,0,2508,0,0,2649,0,
-0,2650,0,0,2651,0,0,2654,0,0,2611,0,0,2614,0,0,
-2908,0,0,2909,0,0,2891,0,0,2888,0,0,2892,0,0,2964,
-0,0,3018,0,0,3020,0,0,3019,0,0,3144,0,0,3264,0,
-0,3274,0,0,3271,0,0,3272,0,0,3275,0,0,3402,0,0,
-3404,0,0,3403,0,0,3546,0,0,3548,0,0,3550,0,0,3549,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-3945,0,0,3907,0,0,3917,0,0,3922,0,0,3927,0,0,3932,
-0,0,3955,0,0,3957,0,0,3969,0,0,4025,0,0,3987,0,
-0,3997,0,0,4002,0,0,4007,0,0,4012,0,0,3958,0,0,
-0,0,0,3960,0,0,0,0,0,4134,0,0,0,0,0,0,
-0,0,6918,0,0,6920,0,0,6922,0,0,6924,0,0,6926,0,
-0,6930,0,0,6971,0,0,6973,0,0,6976,0,0,6977,0,0,
-6979,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,7736,0,0,7737,0,0,7772,0,0,7773,0,0,7784,
-0,0,7785,0,0,7852,0,0,7862,0,0,7853,0,0,7863,0,
-0,7878,0,0,7879,0,0,7896,0,0,7897,0,0,7938,0,0,
-7940,0,0,7942,0,0,8064,0,0,7939,0,0,7941,0,0,7943,
-0,0,8065,0,0,8066,0,0,8067,0,0,8068,0,0,8069,0,
-0,8070,0,0,8071,0,0,7946,0,0,7948,0,0,7950,0,0,
-8072,0,0,7947,0,0,7949,0,0,7951,0,0,8073,0,0,8074,
-0,0,8075,0,0,8076,0,0,8077,0,0,8078,0,0,8079,0,
-0,7954,0,0,7956,0,0,7955,0,0,7957,0,0,7962,0,0,
-7964,0,0,7963,0,0,7965,0,0,7970,0,0,7972,0,0,7974,
-0,0,8080,0,0,7971,0,0,7973,0,0,7975,0,0,8081,0,
-0,8082,0,0,8083,0,0,8084,0,0,8085,0,0,8086,0,0,
-8087,0,0,7978,0,0,7980,0,0,7982,0,0,8088,0,0,7979,
-0,0,7981,0,0,7983,0,0,8089,0,0,8090,0,0,8091,0,
-0,8092,0,0,8093,0,0,8094,0,0,8095,0,0,7986,0,0,
-7988,0,0,7990,0,0,7987,0,0,7989,0,0,7991,0,0,7994,
-0,0,7996,0,0,7998,0,0,7995,0,0,7997,0,0,7999,0,
-0,8002,0,0,8004,0,0,8003,0,0,8005,0,0,8010,0,0,
-8012,0,0,8011,0,0,8013,0,0,8018,0,0,8020,0,0,8022,
-0,0,8019,0,0,8021,0,0,8023,0,0,8027,0,0,8029,0,
-0,8031,0,0,8034,0,0,8036,0,0,8038,0,0,8096,0,0,
-8035,0,0,8037,0,0,8039,0,0,8097,0,0,8098,0,0,8099,
-0,0,8100,0,0,8101,0,0,8102,0,0,8103,0,0,8042,0,
-0,8044,0,0,8046,0,0,8104,0,0,8043,0,0,8045,0,0,
-8047,0,0,8105,0,0,8106,0,0,8107,0,0,8108,0,0,8109,
-0,0,8110,0,0,8111,0,0,8114,0,0,8130,0,0,8178,0,
-0,8119,0,0,8141,0,0,8142,0,0,8143,0,0,8135,0,0,
-8183,0,0,8157,0,0,8158,0,0,8159,0,0,8192,0,8193,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,8602,0,0,0,0,0,0,8603,0,0,0,0,8622,
-0,0,8653,0,0,8655,0,0,8654,0,0,8708,0,0,8713,0,
-0,8716,0,0,0,0,0,0,8740,0,0,8742,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,8769,0,0,8772,0,0,8775,0,0,8777,0,0,8813,0,0,
-8802,0,0,8816,0,0,8817,0,0,8820,0,0,8821,0,0,8824,
-0,0,8825,0,0,8832,0,0,8833,0,0,8928,0,0,8929,0,
-0,8836,0,0,8837,0,0,8840,0,0,8841,0,0,8930,0,0,
-8931,0,0,8876,0,0,8877,0,0,8878,0,0,8879,0,0,8938,
-0,0,8939,0,0,8940,0,0,8941,0,0,0,0,0,0,0,
-0,0,0,0,0,10972,0,0,0,0,0,0,0,0,9001,0,
-9002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,12436,0,0,12364,
-0,0,12366,0,0,12368,0,0,12370,0,0,12372,0,0,12374,0,
-0,12376,0,0,12378,0,0,12380,0,0,12382,0,0,12384,0,0,
-12386,0,0,12389,0,0,12391,0,0,12393,0,0,12400,0,0,12401,
-0,0,12403,0,0,12404,0,0,12406,0,0,12407,0,0,12409,0,
-0,12410,0,0,12412,0,0,12413,0,0,0,0,0,0,0,0,
-0,12446,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,12532,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-12460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,12462,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,12464,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,12466,0,0,0,0,0,0,0,0,12468,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,12470,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,12472,0,0,0,0,0,
-0,0,0,0,12474,0,0,0,0,12476,0,0,0,0,0,0,
-0,0,0,0,0,0,12478,0,0,0,0,12480,0,0,0,0,
-0,0,0,0,12482,0,0,0,0,0,0,12485,0,0,0,0,
-12487,0,0,0,0,0,0,0,12489,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,12496,0,0,12497,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12499,
-0,0,12500,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,12502,0,0,12503,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,12505,0,0,12506,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,12508,0,0,12509,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,12535,0,0,0,0,0,0,0,0,12536,0,0,0,0,12537,
-0,0,0,0,12538,0,0,0,0,0,0,0,0,12542,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,64210,0,64211,0,64212,0,0,0,
-0,0,0,0,0,0,0,0,0,0,63847,0,0,0,64112,0,
-0,0,0,0,63749,0,0,0,63838,0,0,0,0,0,0,0,
-63771,0,0,0,63930,0,0,0,0,0,0,0,63863,0,0,0,
-63997,0,63912,0,0,0,0,0,64115,0,63789,0,63925,0,64048,0,
-63845,0,63956,0,63931,0,64049,0,0,0,0,0,64012,0,64116,0,
-64050,0,0,0,64114,0,63864,0,0,0,63953,0,64117,0,0,0,
-0,0,0,0,0,0,64113,0,63790,0,63865,0,63829,0,63828,0,
-64021,0,0,0,0,0,0,0,64000,0,63900,0,63965,0,63999,0,
-63943,0,63882,0,63901,0,0,0,64118,0,64051,0,63826,0,63791,0,
-64052,0,63871,0,0,0,64119,0,0,0,63843,0,0,0,0,0,
-0,0,63979,0,0,0,0,0,0,0,64053,0,0,0,0,0,
-0,0,0,0,63772,0,0,0,0,0,63851,0,0,0,0,0,
-63750,0,0,0,0,0,63966,0,63981,0,63872,0,63902,0,64121,0,
-63755,0,64122,0,64054,0,64013,0,64123,0,64055,0,64056,0,0,0,
-0,0,63913,0,0,0,0,0,64057,0,64124,0,63852,0,64058,0,
-64125,0,63818,0,63810,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,64126,0,63756,0,63753,0,64127,0,63873,
-0,64128,0,64129,0,0,0,0,0,0,0,64004,0,0,0,63914,
-0,63932,0,0,0,0,0,0,0,0,0,63933,0,63819,0,64059,
-0,63967,0,64060,0,0,0,63957,0,63777,0,63915,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,63886,0,0,0,
-0,0,64001,0,63906,0,63784,0,64130,0,64011,0,64131,0,63874,0,
-0,0,0,0,63811,0,0,0,0,0,0,0,0,0,64132,0,
-0,0,63960,0,63846,0,64133,0,0,0,63907,0,63840,0,63916,0,
-64061,0,64134,0,63929,0,64136,0,63961,0,64135,0,64138,0,64062,0,
-64063,0,63887,0,64139,0,63757,0,63888,0,0,0,63954,0,64140,0,
-0,0,0,0,63781,0,63835,0,64002,0,63859,0,63908,0,63861,0,
-64141,0,64142,0,64143,0,63889,0,63792,0,0,0,0,0,64065,0,
-64144,0,63849,0,0,0,0,0,63934,0,0,0,0,0,63875,0,
-0,0,64066,0,0,0,0,0,0,63968,0,0,0,0,64018,0,
-63941,0,64067,0,64006,0,63883,0,0,0,63745,0,0,0,0,0,
-64146,0,64147,0,0,0,63969,0,64148,0,63944,0,63988,0,63945,0,
-63962,0,0,0,0,0,0,0,0,63866,0,64068,0,63970,0,63764,
-0,63820,0,63793,0,63773,0,0,0,0,0,0,0,63884,0,64149,
-0,63909,0,0,0,64150,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,63858,0,63848,0,63971,0,0,0,63765,0,64005,
-0,64151,0,63786,0,64069,0,63989,0,63821,0,63958,0,64070,0,63947,
-0,63980,0,64153,0,63748,0,64152,0,63822,0,64071,0,63890,0,63778,
-0,63876,0,64155,0,0,0,63995,0,63903,0,63766,0,63891,0,64072,
-0,63936,0,63982,0,63794,0,63774,0,0,0,64073,0,64158,0,0,
-0,0,0,0,0,0,0,0,0,0,0,63814,0,0,0,0,
-0,64159,0,63994,0,63787,0,64022,0,63911,0,0,0,63963,0,0,
-0,63917,0,63767,0,63972,0,63948,0,64074,0,63918,0,64161,0,63892,
-0,63983,0,0,0,0,0,64162,0,0,0,0,0,0,0,0,
-0,0,0,0,0,64163,0,63949,0,63862,0,63842,0,0,0,0,
-0,63973,0,64164,0,64165,0,63937,0,63758,0,0,0,0,0,0,
-0,0,0,64166,0,64167,0,0,0,63795,0,0,0,64168,0,63853,
-0,64170,0,64169,0,64157,0,0,0,0,0,0,0,63950,0,63803,
-0,64075,0,63815,0,64171,0,63844,0,63877,0,0,0,64024,0,64076,
-0,64078,0,64077,0,64079,0,64080,0,64081,0,64025,0,64026,0,63804,
-0,64082,0,64083,0,64027,0,63926,0,0,0,0,0,63893,0,0,
-0,63830,0,64084,0,0,0,64085,0,64172,0,63991,0,0,0,63992,
-0,64086,0,63910,0,63812,0,0,0,64174,0,63993,0,64029,0,64003,
-0,63867,0,0,0,63951,0,63850,0,63823,0,64175,0,63805,0,63831,
-0,64087,0,64088,0,63824,0,64089,0,0,0,64177,0,0,0,64090,
-0,63974,0,63759,0,0,0,63919,0,64030,0,63796,0,64178,0,0,
-0,0,0,0,0,63920,0,63895,0,63813,0,0,0,0,0,63827,
-0,63782,0,0,0,63990,0,0,0,64092,0,0,0,0,0,0,
-0,0,0,0,0,0,0,63868,0,0,0,0,0,64093,0,63860,
-0,63998,0,64179,0,63806,0,64180,0,63832,0,63768,0,63854,0,64095,
-0,63897,0,63938,0,63779,0,63984,0,63797,0,64032,0,63775,0,63760,
-0,0,0,63798,0,0,0,64181,0,63761,0,63783,0,0,0,64008,
-0,0,0,63904,0,63975,0,63976,0,63762,0,64096,0,64182,0,63780,
-0,0,0,64183,0,64010,0,64097,0,0,0,0,0,63905,0,64185,
-0,64187,0,63869,0,63809,0,64190,0,64034,0,64189,0,64188,0,64099,
-0,63996,0,63834,0,64192,0,0,0,0,0,63744,0,0,0,0,
-0,0,0,0,0,63816,0,0,0,63747,0,64100,0,64101,0,0,
-0,0,0,0,0,63799,0,0,0,63746,0,63896,0,63959,0,64194,
-0,64007,0,63885,0,0,0,63857,0,0,0,64102,0,63898,0,64037,
-0,0,0,64195,0,63939,0,63763,0,0,0,63788,0,64038,0,0,
-0,63769,0,64196,0,63927,0,0,0,63977,0,63870,0,63754,0,63921,
-0,64197,0,63807,0,63899,0,0,0,0,0,63878,0,0,0,63942,
-0,63825,0,64009,0,63833,0,63955,0,64198,0,63964,0,63985,0,0,
-0,63928,0,0,0,63978,0,64199,0,0,0,63922,0,63817,0,63800,
-0,63923,0,0,0,64028,0,0,0,0,0,0,0,0,0,64201,
-0,0,0,0,0,64202,0,0,0,0,0,64203,0,63924,0,64204,
-0,63952,0,0,0,0,0,0,0,64042,0,64043,0,64044,0,0,
-0,0,0,0,0,63770,0,63879,0,0,0,0,0,0,0,64205,
-0,0,0,0,0,0,0,0,0,0,0,63801,0,63986,0,0,
-0,64045,0,63802,0,63776,0,0,0,63808,0,63880,0,63987,0,0,
-0,0,0,0,0,0,0,63881,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,64216,0,0,0,0,0,63940,0,64217,
-0,63752,0,0,0,0,0,0,0,64300,0,0,64301,0,0,64208,
-0,64207,0,64209,0,64213,0,64214,0,64215,0,0,0,0,0,0,
-0};
-static const guint8 combiningClass [] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
-230,230,230,230,230,232,220,220,220,220,232,216,220,220,220,220,
-220,202,202,220,220,220,220,202,202,220,220,220,220,220,220,220,
-220,220,220,220,1,1,1,1,1,220,220,220,220,230,230,230,
-230,230,230,230,230,240,230,220,220,220,230,230,230,220,220,0,
-230,230,230,220,220,220,220,230,232,220,220,230,233,234,234,233,
-0,0,0,230,230,230,230,230,0,0,0,0,0,0,0,0,
-0,220,230,230,230,230,220,230,230,230,222,220,230,230,230,230,
-230,230,220,220,220,220,220,220,230,230,220,230,230,222,228,230,
-10,11,12,13,14,15,16,17,18,19,19,20,21,22,0,23,
-0,24,25,0,230,220,0,18,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-230,230,230,230,230,230,230,230,30,31,32,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,27,28,29,30,31,
-32,33,34,230,230,220,220,230,230,230,230,230,220,230,230,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,230,230,230,230,230,230,230,0,0,230,
-230,230,230,220,230,0,0,230,230,0,220,230,230,220,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-230,220,230,230,220,230,230,220,220,220,230,220,220,230,220,230,
-230,230,220,230,220,230,220,230,220,230,230,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,230,220,230,230,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,84,91,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
-0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,
-0,0,0,0,0,0,0,0,103,103,9,0,0,0,0,0,
-0,0,0,0,0,0,0,0,107,107,107,107,0,0,0,0,
-0,0,0,0,0,0,0,0,118,118,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,122,122,122,122,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,220,220,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,220,0,220,0,216,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,129,130,0,132,0,0,0,0,0,130,130,130,130,0,0,
-130,0,230,230,9,0,230,230,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,220,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,7,0,9,9,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,
-0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,
-0,0,9,0,0,0,0,0,0,0,0,0,0,230,0,0,
-0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,222,230,220,0,0,0,0,
-0,0,0,0,0,0,0,230,220,0,0,0,0,0,0,0,
-230,230,220,230,230,230,230,230,230,230,220,230,230,234,214,220,
-230,230,1,1,230,230,230,230,1,1,1,230,230,0,0,0,
-0,230,0,0,0,1,1,230,220,230,1,1,220,220,220,220,
-0,0,0,0,0,0,0,0,0,0,218,228,232,222,224,224,
-0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,
-0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,
-230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0,
-0};
+static const guint8 props [] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,0,
+0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
+128,0,128,128,128,128,128,128,128,128,128,0,0,0,0,0,
+128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
+128,0,128,128,128,128,128,128,128,128,128,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,0,0,0,0,0,0,0,146,0,18,0,0,0,0,18,
+0,0,18,18,146,18,0,128,18,18,18,0,18,18,18,0,
+3,3,131,3,131,131,128,131,3,3,131,3,3,3,3,131,
+0,3,3,3,131,131,131,0,128,3,3,3,131,3,0,0,
+3,3,131,3,131,131,128,131,3,3,131,3,3,3,3,131,
+0,3,3,3,131,131,131,0,128,3,3,3,131,3,0,3,
+3,3,131,131,3,3,3,3,3,3,3,3,3,3,3,3,
+0,0,131,131,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,
+3,0,18,18,3,3,3,3,0,3,3,3,3,3,3,18,
+18,0,0,3,3,3,3,3,3,18,0,0,131,131,3,3,
+3,3,0,0,3,3,3,3,3,3,131,131,3,3,3,3,
+131,131,3,3,3,3,0,0,131,131,131,131,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,146,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+131,131,0,0,0,0,0,0,0,0,0,0,0,0,0,131,
+131,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,
+0,0,0,0,18,18,18,18,18,18,18,18,18,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,
+3,3,3,3,0,0,3,3,3,3,131,131,3,3,3,3,
+3,18,18,18,3,3,0,0,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,
+0,0,0,0,0,0,131,131,131,131,3,3,3,3,131,131,
+3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,128,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,18,18,18,18,18,18,0,0,
+18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+168,168,168,168,168,0,168,168,168,168,168,168,168,0,0,168,
+0,168,0,168,168,0,0,0,0,0,0,168,0,0,0,0,
+0,0,0,168,168,168,168,168,168,0,0,0,0,168,168,0,
+168,168,0,0,0,0,0,0,168,0,0,0,0,0,0,0,
+87,87,168,87,87,168,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,87,0,0,0,0,0,18,0,0,0,87,0,
+0,0,0,0,18,147,131,87,131,131,131,0,131,0,131,131,
+131,128,0,0,0,128,0,128,0,128,0,0,0,0,0,128,
+0,128,0,0,0,128,0,0,0,128,3,3,131,131,131,131,
+131,128,0,0,0,128,0,128,0,128,0,0,0,0,0,128,
+0,128,0,0,0,128,0,0,0,128,131,131,131,131,131,0,
+18,18,146,19,19,18,18,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,0,18,18,0,0,0,18,0,0,0,0,0,0,
+3,3,0,3,0,0,128,3,0,0,0,0,3,3,3,0,
+128,0,0,128,0,128,128,128,128,3,128,0,0,0,128,0,
+0,0,0,128,0,0,0,128,0,0,0,128,0,128,0,0,
+128,0,0,128,0,128,128,128,128,3,128,0,0,0,128,0,
+0,0,0,128,0,0,0,128,0,0,0,128,0,128,0,0,
+3,3,0,3,0,0,128,3,0,0,0,0,3,3,3,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,128,128,3,3,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,0,0,3,3,128,128,3,3,3,3,3,3,
+0,0,3,3,3,3,3,3,128,128,3,3,3,3,3,3,
+3,3,3,3,3,3,0,0,3,3,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,128,0,0,128,128,128,0,0,128,0,0,128,
+0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
+128,128,128,128,128,128,128,0,128,128,128,128,128,0,128,0,
+128,128,0,128,128,0,128,128,128,128,128,0,0,0,0,0,
+0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3,3,3,3,3,128,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,128,0,128,0,0,0,0,0,
+0,0,0,168,168,168,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,18,18,18,18,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,128,3,0,128,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,128,128,128,0,0,0,0,128,0,0,0,
+0,128,128,0,0,0,0,0,128,3,0,128,0,0,0,128,
+128,3,0,128,3,0,0,0,0,0,0,0,168,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,87,87,87,87,87,87,87,87,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,128,
+0,0,0,0,0,0,0,0,0,0,0,0,128,0,168,0,
+0,0,0,0,0,0,0,128,0,0,0,3,3,0,0,0,
+0,0,0,0,0,0,0,168,0,0,0,0,87,87,0,87,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,128,128,0,0,0,0,128,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,
+0,0,128,87,0,0,87,0,128,0,0,0,128,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,87,87,87,0,0,87,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,128,0,168,0,
+0,0,0,0,0,0,0,128,3,0,0,3,3,0,0,0,
+0,0,0,0,0,0,168,168,0,0,0,0,87,87,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,128,0,3,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0,
+0,0,0,0,0,0,128,128,0,0,3,3,3,0,0,0,
+0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,128,0,3,0,0,0,0,0,0,0,
+0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
+3,0,168,0,0,0,128,3,3,0,131,3,0,0,0,0,
+0,0,0,0,0,168,168,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0,
+0,0,0,0,0,0,128,128,0,0,3,3,3,0,0,0,
+0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,168,
+0,0,0,0,0,0,0,0,0,128,3,0,131,3,3,168,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+128,0,128,87,0,0,0,0,0,0,0,0,128,87,0,0,
+0,128,87,0,0,0,128,87,0,0,0,128,87,0,0,0,
+0,0,0,0,0,0,0,0,0,87,0,0,0,0,0,0,
+0,128,128,87,128,87,87,18,87,18,0,0,0,0,0,0,
+128,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+128,0,128,87,0,0,0,0,0,0,0,0,128,87,0,0,
+0,128,87,0,0,0,128,87,0,0,0,128,87,0,0,0,
+0,0,128,128,0,128,0,128,0,87,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,128,3,0,0,0,0,0,0,0,168,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+40,40,40,40,40,40,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,40,40,40,40,40,40,40,40,
+40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+40,40,40,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,128,3,128,3,128,3,128,3,128,3,0,
+0,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,168,0,0,0,0,128,3,128,3,128,128,
+3,3,128,3,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,
+18,18,18,18,18,18,18,18,18,18,18,0,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,
+0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,131,131,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,131,131,3,3,3,3,
+3,3,131,131,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,18,19,0,0,0,0,
+131,131,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,131,131,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,131,131,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,
+131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
+131,131,3,3,3,3,0,0,131,131,3,3,3,3,0,0,
+131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
+131,131,3,3,3,3,3,3,131,131,3,3,3,3,3,3,
+131,131,3,3,3,3,0,0,131,131,3,3,3,3,0,0,
+131,131,3,3,3,3,3,3,0,131,0,3,0,3,0,3,
+131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
+131,87,3,87,131,87,3,87,3,87,3,87,131,87,0,0,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+3,3,3,3,3,0,131,3,3,3,3,87,3,18,87,146,
+18,19,3,3,3,0,131,3,3,87,3,87,3,19,19,19,
+3,3,3,87,0,0,3,3,3,3,3,87,0,19,19,19,
+3,3,3,87,3,3,3,3,3,3,3,87,3,19,87,87,
+0,0,3,3,3,0,131,3,3,87,3,87,3,87,146,0,
+87,87,146,146,18,18,18,18,18,18,18,0,0,0,0,0,
+0,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,
+0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,18,
+0,0,0,18,18,0,18,18,0,0,0,0,18,0,18,0,
+0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,
+0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,0,0,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
+18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,0,18,18,18,0,18,18,18,18,18,18,18,
+18,18,18,18,0,18,18,0,0,18,18,18,18,18,0,0,
+18,18,18,0,18,0,87,0,18,0,87,87,18,18,0,18,
+18,18,0,18,18,18,18,18,18,18,0,18,18,18,18,18,
+18,0,0,0,0,18,18,18,18,18,0,0,0,0,0,0,
+0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+128,0,128,0,128,0,0,0,0,0,3,3,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,
+128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,128,3,0,0,0,128,3,0,128,3,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,128,3,128,3,0,0,0,0,0,18,18,0,18,
+18,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,
+0,3,0,128,3,128,0,3,128,3,0,0,0,128,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,128,3,0,128,128,0,0,0,0,0,0,0,3,3,3,
+3,3,128,128,3,3,128,128,3,3,128,128,128,128,0,0,
+3,3,128,128,3,3,128,128,3,3,0,0,0,0,0,0,
+0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,128,0,0,0,0,0,128,128,0,128,3,3,3,3,
+0,0,128,128,128,128,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3,3,3,3,0,0,0,0,0,0,3,3,3,3,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,87,87,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,87,128,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,0,0,0,0,0,0,0,128,128,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,18,0,18,18,18,0,0,0,0,0,
+0,0,0,0,0,0,128,0,0,0,0,128,3,128,3,128,
+3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,
+3,128,3,0,128,3,128,3,128,3,0,0,0,0,0,128,
+3,3,128,3,3,128,3,3,128,3,3,128,3,3,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,3,0,0,0,0,168,168,18,18,128,3,18,
+0,0,0,0,0,0,128,0,0,0,0,128,3,128,3,128,
+3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,
+3,128,3,0,128,3,128,3,128,3,0,0,0,0,0,128,
+3,3,128,3,3,128,3,3,128,3,3,128,3,3,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
+128,128,128,0,3,0,0,3,3,3,3,0,0,128,3,18,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
+0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,0,0,
+87,0,87,0,0,87,87,87,87,87,87,87,87,87,87,0,
+87,0,87,0,0,87,87,0,0,0,87,87,87,87,0,0,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,0,0,0,0,0,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,
+87,87,87,87,87,87,87,87,87,87,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,
+0,0,0,18,18,18,18,18,0,0,0,0,0,87,0,87,
+18,18,18,18,18,18,18,18,18,18,87,87,87,87,87,87,
+87,87,87,87,87,87,87,0,87,87,87,87,87,0,87,0,
+87,87,0,87,87,0,87,87,87,215,87,87,87,87,87,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,0,0,18,18,18,18,18,18,18,18,18,
+18,18,18,0,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,0,18,18,18,18,0,0,0,0,
+18,18,18,0,18,0,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,
+0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,
+0,0,18,18,18,18,18,18,0,0,18,18,18,18,18,18,
+0,0,18,18,18,18,18,18,0,0,18,18,18,0,0,0,
+18,18,18,18,18,18,18,0,18,18,18,18,18,18,18,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0};
+static const guint32 mappedChars [] = {
+0,32,0,32,769,0,32,771,0,32,772,0,32,773,0,32,
+774,0,32,775,0,32,776,0,32,778,0,32,779,0,32,787,
+0,32,788,0,32,807,0,32,808,0,32,819,0,32,834,0,
+32,837,0,32,1611,0,32,1612,0,32,1612,1617,0,32,1613,0,
+32,1613,1617,0,32,1614,0,32,1614,1617,0,32,1615,0,32,1615,
+1617,0,32,1616,0,32,1616,1617,0,32,1617,0,32,1617,1648,0,
+32,1618,0,32,12441,0,32,12442,0,33,0,33,33,0,33,63,
+0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,40,
+49,41,0,40,49,48,41,0,40,49,49,41,0,40,49,50,
+41,0,40,49,51,41,0,40,49,52,41,0,40,49,53,41,
+0,40,49,54,41,0,40,49,55,41,0,40,49,56,41,0,
+40,49,57,41,0,40,50,41,0,40,50,48,41,0,40,51,
+41,0,40,52,41,0,40,53,41,0,40,54,41,0,40,55,
+41,0,40,56,41,0,40,57,41,0,40,97,41,0,40,98,
+41,0,40,99,41,0,40,100,41,0,40,101,41,0,40,102,
+41,0,40,103,41,0,40,104,41,0,40,105,41,0,40,106,
+41,0,40,107,41,0,40,108,41,0,40,109,41,0,40,110,
+41,0,40,111,41,0,40,112,41,0,40,113,41,0,40,114,
+41,0,40,115,41,0,40,116,41,0,40,117,41,0,40,118,
+41,0,40,119,41,0,40,120,41,0,40,121,41,0,40,122,
+41,0,40,4352,41,0,40,4352,4449,41,0,40,4354,41,0,40,
+4354,4449,41,0,40,4355,41,0,40,4355,4449,41,0,40,4357,41,
+0,40,4357,4449,41,0,40,4358,41,0,40,4358,4449,41,0,40,
+4359,41,0,40,4359,4449,41,0,40,4361,41,0,40,4361,4449,41,
+0,40,4363,41,0,40,4363,4449,41,0,40,4363,4457,4364,4453,4523,
+41,0,40,4363,4457,4370,4462,41,0,40,4364,41,0,40,4364,4449,
+41,0,40,4364,4462,41,0,40,4366,41,0,40,4366,4449,41,0,
+40,4367,41,0,40,4367,4449,41,0,40,4368,41,0,40,4368,4449,
+41,0,40,4369,41,0,40,4369,4449,41,0,40,4370,41,0,40,
+4370,4449,41,0,40,19968,41,0,40,19971,41,0,40,19977,41,0,
+40,20061,41,0,40,20108,41,0,40,20116,41,0,40,20195,41,0,
+40,20225,41,0,40,20241,41,0,40,20843,41,0,40,20845,41,0,
+40,21172,41,0,40,21313,41,0,40,21332,41,0,40,21517,41,0,
+40,21628,41,0,40,22235,41,0,40,22303,41,0,40,23398,41,0,
+40,26085,41,0,40,26376,41,0,40,26377,41,0,40,26408,41,0,
+40,26666,41,0,40,27700,41,0,40,28779,41,0,40,29305,41,0,
+40,30435,41,0,40,31038,41,0,40,31069,41,0,40,31085,41,0,
+40,33258,41,0,40,33267,41,0,40,36001,41,0,40,36039,41,0,
+40,37329,41,0,41,0,42,0,43,0,44,0,45,0,46,0,
+46,46,0,46,46,46,0,47,0,48,0,48,28857,0,49,0,
+49,46,0,49,48,0,49,48,46,0,49,48,26085,0,49,48,
+26376,0,49,48,28857,0,49,49,0,49,49,46,0,49,49,26085,
+0,49,49,26376,0,49,49,28857,0,49,50,0,49,50,46,0,
+49,50,26085,0,49,50,26376,0,49,50,28857,0,49,51,0,49,
+51,46,0,49,51,26085,0,49,51,28857,0,49,52,0,49,52,
+46,0,49,52,26085,0,49,52,28857,0,49,53,0,49,53,46,
+0,49,53,26085,0,49,53,28857,0,49,54,0,49,54,46,0,
+49,54,26085,0,49,54,28857,0,49,55,0,49,55,46,0,49,
+55,26085,0,49,55,28857,0,49,56,0,49,56,46,0,49,56,
+26085,0,49,56,28857,0,49,57,0,49,57,46,0,49,57,26085,
+0,49,57,28857,0,49,8260,0,49,8260,50,0,49,8260,51,0,
+49,8260,52,0,49,8260,53,0,49,8260,54,0,49,8260,56,0,
+49,26085,0,49,26376,0,49,28857,0,50,0,50,46,0,50,48,
+0,50,48,46,0,50,48,26085,0,50,48,28857,0,50,49,0,
+50,49,26085,0,50,49,28857,0,50,50,0,50,50,26085,0,50,
+50,28857,0,50,51,0,50,51,26085,0,50,51,28857,0,50,52,
+0,50,52,26085,0,50,52,28857,0,50,53,0,50,53,26085,0,
+50,54,0,50,54,26085,0,50,55,0,50,55,26085,0,50,56,
+0,50,56,26085,0,50,57,0,50,57,26085,0,50,8260,51,0,
+50,8260,53,0,50,26085,0,50,26376,0,50,28857,0,51,0,51,
+46,0,51,48,0,51,48,26085,0,51,49,0,51,49,26085,0,
+51,50,0,51,51,0,51,52,0,51,53,0,51,54,0,51,
+55,0,51,56,0,51,57,0,51,8260,52,0,51,8260,53,0,
+51,8260,56,0,51,26085,0,51,26376,0,51,28857,0,52,0,52,
+46,0,52,48,0,52,49,0,52,50,0,52,51,0,52,52,
+0,52,53,0,52,54,0,52,55,0,52,56,0,52,57,0,
+52,8260,53,0,52,26085,0,52,26376,0,52,28857,0,53,0,53,
+46,0,53,48,0,53,8260,54,0,53,8260,56,0,53,26085,0,
+53,26376,0,53,28857,0,54,0,54,46,0,54,26085,0,54,26376,
+0,54,28857,0,55,0,55,46,0,55,8260,56,0,55,26085,0,
+55,26376,0,55,28857,0,56,0,56,46,0,56,26085,0,56,26376,
+0,56,28857,0,57,0,57,46,0,57,26085,0,57,26376,0,57,
+28857,0,58,0,58,58,61,0,59,0,60,0,60,824,0,61,
+0,61,61,0,61,61,61,0,61,824,0,62,0,62,824,0,
+63,0,63,33,0,63,63,0,64,0,65,0,65,85,0,65,
+768,0,65,769,0,65,770,0,65,771,0,65,772,0,65,774,
+0,65,775,0,65,776,0,65,777,0,65,778,0,65,780,0,
+65,783,0,65,785,0,65,803,0,65,805,0,65,808,0,65,
+8725,109,0,66,0,66,113,0,66,775,0,66,803,0,66,817,
+0,67,0,67,111,46,0,67,769,0,67,770,0,67,775,0,
+67,780,0,67,807,0,67,8725,107,103,0,68,0,68,90,0,
+68,122,0,68,381,0,68,382,0,68,775,0,68,780,0,68,
+803,0,68,807,0,68,813,0,68,817,0,69,0,69,768,0,
+69,769,0,69,770,0,69,771,0,69,772,0,69,774,0,69,
+775,0,69,776,0,69,777,0,69,780,0,69,783,0,69,785,
+0,69,803,0,69,807,0,69,808,0,69,813,0,69,816,0,
+70,0,70,65,88,0,70,775,0,71,0,71,66,0,71,72,
+122,0,71,80,97,0,71,121,0,71,769,0,71,770,0,71,
+772,0,71,774,0,71,775,0,71,780,0,71,807,0,72,0,
+72,80,0,72,103,0,72,122,0,72,770,0,72,775,0,72,
+776,0,72,780,0,72,803,0,72,807,0,72,814,0,73,0,
+73,73,0,73,73,73,0,73,74,0,73,85,0,73,86,0,
+73,88,0,73,768,0,73,769,0,73,770,0,73,771,0,73,
+772,0,73,774,0,73,775,0,73,776,0,73,777,0,73,780,
+0,73,783,0,73,785,0,73,803,0,73,808,0,73,816,0,
+74,0,74,770,0,75,0,75,66,0,75,75,0,75,77,0,
+75,769,0,75,780,0,75,803,0,75,807,0,75,817,0,76,
+0,76,74,0,76,84,68,0,76,106,0,76,183,0,76,769,
+0,76,780,0,76,803,0,76,807,0,76,813,0,76,817,0,
+77,0,77,66,0,77,72,122,0,77,80,97,0,77,86,0,
+77,87,0,77,769,0,77,775,0,77,803,0,77,937,0,78,
+0,78,74,0,78,106,0,78,111,0,78,768,0,78,769,0,
+78,771,0,78,775,0,78,780,0,78,803,0,78,807,0,78,
+813,0,78,817,0,79,0,79,768,0,79,769,0,79,770,0,
+79,771,0,79,772,0,79,774,0,79,775,0,79,776,0,79,
+777,0,79,779,0,79,780,0,79,783,0,79,785,0,79,795,
+0,79,803,0,79,808,0,80,0,80,72,0,80,80,77,0,
+80,82,0,80,84,69,0,80,97,0,80,769,0,80,775,0,
+81,0,82,0,82,115,0,82,769,0,82,775,0,82,780,0,
+82,783,0,82,785,0,82,803,0,82,807,0,82,817,0,83,
+0,83,77,0,83,118,0,83,769,0,83,770,0,83,775,0,
+83,780,0,83,803,0,83,806,0,83,807,0,84,0,84,69,
+76,0,84,72,122,0,84,77,0,84,775,0,84,780,0,84,
+803,0,84,806,0,84,807,0,84,813,0,84,817,0,85,0,
+85,768,0,85,769,0,85,770,0,85,771,0,85,772,0,85,
+774,0,85,776,0,85,777,0,85,778,0,85,779,0,85,780,
+0,85,783,0,85,785,0,85,795,0,85,803,0,85,804,0,
+85,808,0,85,813,0,85,816,0,86,0,86,73,0,86,73,
+73,0,86,73,73,73,0,86,771,0,86,803,0,86,8725,109,
+0,87,0,87,98,0,87,768,0,87,769,0,87,770,0,87,
+775,0,87,776,0,87,803,0,88,0,88,73,0,88,73,73,
+0,88,775,0,88,776,0,89,0,89,768,0,89,769,0,89,
+770,0,89,771,0,89,772,0,89,775,0,89,776,0,89,777,
+0,89,803,0,90,0,90,769,0,90,770,0,90,775,0,90,
+780,0,90,803,0,90,817,0,91,0,92,0,93,0,94,0,
+95,0,96,0,97,0,97,46,109,46,0,97,47,99,0,97,
+47,115,0,97,702,0,97,768,0,97,769,0,97,770,0,97,
+771,0,97,772,0,97,774,0,97,775,0,97,776,0,97,777,
+0,97,778,0,97,780,0,97,783,0,97,785,0,97,803,0,
+97,805,0,97,808,0,98,0,98,97,114,0,98,775,0,98,
+803,0,98,817,0,99,0,99,47,111,0,99,47,117,0,99,
+97,108,0,99,99,0,99,100,0,99,109,0,99,109,178,0,
+99,109,179,0,99,769,0,99,770,0,99,775,0,99,780,0,
+99,807,0,100,0,100,66,0,100,97,0,100,109,0,100,109,
+178,0,100,109,179,0,100,122,0,100,382,0,100,775,0,100,
+780,0,100,803,0,100,807,0,100,813,0,100,817,0,100,8467,
+0,101,0,101,86,0,101,114,103,0,101,768,0,101,769,0,
+101,770,0,101,771,0,101,772,0,101,774,0,101,775,0,101,
+776,0,101,777,0,101,780,0,101,783,0,101,785,0,101,803,
+0,101,807,0,101,808,0,101,813,0,101,816,0,102,0,102,
+102,0,102,102,105,0,102,102,108,0,102,105,0,102,108,0,
+102,109,0,102,775,0,103,0,103,97,108,0,103,769,0,103,
+770,0,103,772,0,103,774,0,103,775,0,103,780,0,103,807,
+0,104,0,104,80,97,0,104,97,0,104,770,0,104,775,0,
+104,776,0,104,780,0,104,803,0,104,807,0,104,814,0,104,
+817,0,105,0,105,105,0,105,105,105,0,105,106,0,105,110,
+0,105,118,0,105,120,0,105,768,0,105,769,0,105,770,0,
+105,771,0,105,772,0,105,774,0,105,776,0,105,777,0,105,
+780,0,105,783,0,105,785,0,105,803,0,105,808,0,105,816,
+0,106,0,106,770,0,106,780,0,107,0,107,65,0,107,72,
+122,0,107,80,97,0,107,86,0,107,87,0,107,99,97,108,
+0,107,103,0,107,109,0,107,109,178,0,107,109,179,0,107,
+116,0,107,769,0,107,780,0,107,803,0,107,807,0,107,817,
+0,107,937,0,107,8467,0,108,0,108,106,0,108,109,0,108,
+110,0,108,111,103,0,108,120,0,108,183,0,108,769,0,108,
+780,0,108,803,0,108,807,0,108,813,0,108,817,0,109,0,
+109,65,0,109,86,0,109,87,0,109,98,0,109,103,0,109,
+105,108,0,109,109,0,109,109,178,0,109,109,179,0,109,111,
+108,0,109,115,0,109,178,0,109,179,0,109,769,0,109,775,
+0,109,803,0,109,8467,0,109,8725,115,0,109,8725,115,178,0,
+110,0,110,65,0,110,70,0,110,86,0,110,87,0,110,106,
+0,110,109,0,110,115,0,110,768,0,110,769,0,110,771,0,
+110,775,0,110,780,0,110,803,0,110,807,0,110,813,0,110,
+817,0,111,0,111,86,0,111,768,0,111,769,0,111,770,0,
+111,771,0,111,772,0,111,774,0,111,775,0,111,776,0,111,
+777,0,111,779,0,111,780,0,111,783,0,111,785,0,111,795,
+0,111,803,0,111,808,0,112,0,112,46,109,46,0,112,65,
+0,112,70,0,112,86,0,112,87,0,112,99,0,112,115,0,
+112,769,0,112,775,0,113,0,114,0,114,97,100,0,114,97,
+100,8725,115,0,114,97,100,8725,115,178,0,114,769,0,114,775,
+0,114,780,0,114,783,0,114,785,0,114,803,0,114,807,0,
+114,817,0,115,0,115,114,0,115,116,0,115,769,0,115,770,
+0,115,775,0,115,780,0,115,803,0,115,806,0,115,807,0,
+116,0,116,775,0,116,776,0,116,780,0,116,803,0,116,806,
+0,116,807,0,116,813,0,116,817,0,117,0,117,768,0,117,
+769,0,117,770,0,117,771,0,117,772,0,117,774,0,117,776,
+0,117,777,0,117,778,0,117,779,0,117,780,0,117,783,0,
+117,785,0,117,795,0,117,803,0,117,804,0,117,808,0,117,
+813,0,117,816,0,118,0,118,105,0,118,105,105,0,118,105,
+105,105,0,118,771,0,118,803,0,119,0,119,768,0,119,769,
+0,119,770,0,119,775,0,119,776,0,119,778,0,119,803,0,
+120,0,120,105,0,120,105,105,0,120,775,0,120,776,0,121,
+0,121,768,0,121,769,0,121,770,0,121,771,0,121,772,0,
+121,775,0,121,776,0,121,777,0,121,778,0,121,803,0,122,
+0,122,769,0,122,770,0,122,775,0,122,780,0,122,803,0,
+122,817,0,123,0,124,0,125,0,126,0,162,0,163,0,165,
+0,166,0,168,768,0,168,769,0,168,834,0,172,0,175,0,
+176,67,0,176,70,0,180,0,183,0,194,768,0,194,769,0,
+194,771,0,194,777,0,196,772,0,197,0,197,769,0,198,0,
+198,769,0,198,772,0,199,769,0,202,768,0,202,769,0,202,
+771,0,202,777,0,207,769,0,212,768,0,212,769,0,212,771,
+0,212,777,0,213,769,0,213,772,0,213,776,0,214,772,0,
+216,769,0,220,768,0,220,769,0,220,772,0,220,780,0,226,
+768,0,226,769,0,226,771,0,226,777,0,228,772,0,229,769,
+0,230,769,0,230,772,0,231,769,0,234,768,0,234,769,0,
+234,771,0,234,777,0,239,769,0,240,0,244,768,0,244,769,
+0,244,771,0,244,777,0,245,769,0,245,772,0,245,776,0,
+246,772,0,248,769,0,252,768,0,252,769,0,252,772,0,252,
+780,0,258,768,0,258,769,0,258,771,0,258,777,0,259,768,
+0,259,769,0,259,771,0,259,777,0,274,768,0,274,769,0,
+275,768,0,275,769,0,295,0,331,0,332,768,0,332,769,0,
+333,768,0,333,769,0,346,775,0,347,775,0,352,775,0,353,
+775,0,360,769,0,361,769,0,362,776,0,363,776,0,383,116,
+0,383,775,0,398,0,400,0,416,768,0,416,769,0,416,771,
+0,416,777,0,416,803,0,417,768,0,417,769,0,417,771,0,
+417,777,0,417,803,0,427,0,431,768,0,431,769,0,431,771,
+0,431,777,0,431,803,0,432,768,0,432,769,0,432,771,0,
+432,777,0,432,803,0,439,780,0,490,772,0,491,772,0,546,
+0,550,772,0,551,772,0,552,774,0,553,774,0,558,772,0,
+559,772,0,592,0,593,0,594,0,596,0,597,0,601,0,603,
+0,604,0,607,0,609,0,611,0,613,0,614,0,616,0,617,
+0,618,0,621,0,623,0,624,0,625,0,626,0,627,0,628,
+0,629,0,632,0,633,0,635,0,641,0,642,0,643,0,649,
+0,650,0,651,0,652,0,656,0,657,0,658,0,658,780,0,
+661,0,669,0,671,0,697,0,700,110,0,768,0,769,0,776,
+769,0,787,0,901,0,902,0,904,0,905,0,906,0,908,0,
+910,0,911,0,912,0,913,768,0,913,769,0,913,772,0,913,
+774,0,913,787,0,913,788,0,913,837,0,915,0,917,768,0,
+917,769,0,917,787,0,917,788,0,919,768,0,919,769,0,919,
+787,0,919,788,0,919,837,0,920,0,921,768,0,921,769,0,
+921,772,0,921,774,0,921,776,0,921,787,0,921,788,0,927,
+768,0,927,769,0,927,787,0,927,788,0,928,0,929,788,0,
+931,0,933,0,933,768,0,933,769,0,933,772,0,933,774,0,
+933,776,0,933,788,0,937,0,937,768,0,937,769,0,937,787,
+0,937,788,0,937,837,0,940,0,940,837,0,941,0,942,0,
+942,837,0,943,0,944,0,945,768,0,945,769,0,945,772,0,
+945,774,0,945,787,0,945,788,0,945,834,0,945,837,0,946,
+0,947,0,948,0,949,0,949,768,0,949,769,0,949,787,0,
+949,788,0,951,768,0,951,769,0,951,787,0,951,788,0,951,
+834,0,951,837,0,952,0,953,0,953,768,0,953,769,0,953,
+772,0,953,774,0,953,776,0,953,787,0,953,788,0,953,834,
+0,954,0,956,0,956,65,0,956,70,0,956,86,0,956,87,
+0,956,103,0,956,109,0,956,115,0,956,8467,0,959,768,0,
+959,769,0,959,787,0,959,788,0,960,0,961,0,961,787,0,
+961,788,0,962,0,965,768,0,965,769,0,965,772,0,965,774,
+0,965,776,0,965,787,0,965,788,0,965,834,0,966,0,967,
+0,969,768,0,969,769,0,969,787,0,969,788,0,969,834,0,
+969,837,0,970,768,0,970,769,0,970,834,0,971,768,0,971,
+769,0,971,834,0,972,0,973,0,974,0,974,837,0,978,769,
+0,978,776,0,1030,776,0,1040,774,0,1040,776,0,1043,769,0,
+1045,768,0,1045,774,0,1045,776,0,1046,774,0,1046,776,0,1047,
+776,0,1048,768,0,1048,772,0,1048,774,0,1048,776,0,1050,769,
+0,1054,776,0,1059,772,0,1059,774,0,1059,776,0,1059,779,0,
+1063,776,0,1067,776,0,1069,776,0,1072,774,0,1072,776,0,1075,
+769,0,1077,768,0,1077,774,0,1077,776,0,1078,774,0,1078,776,
+0,1079,776,0,1080,768,0,1080,772,0,1080,774,0,1080,776,0,
+1082,769,0,1085,0,1086,776,0,1091,772,0,1091,774,0,1091,776,
+0,1091,779,0,1095,776,0,1099,776,0,1101,776,0,1110,776,0,
+1140,783,0,1141,783,0,1240,776,0,1241,776,0,1256,776,0,1257,
+776,0,1381,1410,0,1396,1381,0,1396,1387,0,1396,1389,0,1396,1398,
+0,1406,1398,0,1488,0,1488,1463,0,1488,1464,0,1488,1468,0,1488,
+1500,0,1489,0,1489,1468,0,1489,1471,0,1490,0,1490,1468,0,1491,
+0,1491,1468,0,1492,0,1492,1468,0,1493,1465,0,1493,1468,0,1494,
+1468,0,1496,1468,0,1497,1460,0,1497,1468,0,1498,1468,0,1499,0,
+1499,1468,0,1499,1471,0,1500,0,1500,1468,0,1501,0,1502,1468,0,
+1504,1468,0,1505,1468,0,1506,0,1507,1468,0,1508,1468,0,1508,1471,
+0,1510,1468,0,1511,1468,0,1512,0,1512,1468,0,1513,1468,0,1513,
+1473,0,1513,1474,0,1514,0,1514,1468,0,1522,1463,0,1569,0,1570,
+0,1571,0,1572,0,1573,0,1574,0,1574,1575,0,1574,1580,0,1574,
+1581,0,1574,1582,0,1574,1585,0,1574,1586,0,1574,1605,0,1574,1606,
+0,1574,1607,0,1574,1608,0,1574,1609,0,1574,1610,0,1574,1734,0,
+1574,1735,0,1574,1736,0,1574,1744,0,1574,1749,0,1575,0,1575,1603,
+1576,1585,0,1575,1604,1604,1607,0,1575,1611,0,1575,1619,0,1575,1620,
+0,1575,1621,0,1575,1652,0,1576,0,1576,1580,0,1576,1581,0,1576,
+1581,1610,0,1576,1582,0,1576,1582,1610,0,1576,1585,0,1576,1586,0,
+1576,1605,0,1576,1606,0,1576,1607,0,1576,1609,0,1576,1610,0,1577,
+0,1578,0,1578,1580,0,1578,1580,1605,0,1578,1580,1609,0,1578,1580,
+1610,0,1578,1581,0,1578,1581,1580,0,1578,1581,1605,0,1578,1582,0,
+1578,1582,1605,0,1578,1582,1609,0,1578,1582,1610,0,1578,1585,0,1578,
+1586,0,1578,1605,0,1578,1605,1580,0,1578,1605,1581,0,1578,1605,1582,
+0,1578,1605,1609,0,1578,1605,1610,0,1578,1606,0,1578,1607,0,1578,
+1609,0,1578,1610,0,1579,0,1579,1580,0,1579,1585,0,1579,1586,0,
+1579,1605,0,1579,1606,0,1579,1607,0,1579,1609,0,1579,1610,0,1580,
+0,1580,1581,0,1580,1581,1609,0,1580,1581,1610,0,1580,1604,32,1580,
+1604,1575,1604,1607,0,1580,1605,0,1580,1605,1581,0,1580,1605,1609,0,
+1580,1605,1610,0,1580,1609,0,1580,1610,0,1581,0,1581,1580,0,1581,
+1580,1610,0,1581,1605,0,1581,1605,1609,0,1581,1605,1610,0,1581,1609,
+0,1581,1610,0,1582,0,1582,1580,0,1582,1581,0,1582,1605,0,1582,
+1609,0,1582,1610,0,1583,0,1584,0,1584,1648,0,1585,0,1585,1587,
+1608,1604,0,1585,1648,0,1585,1740,1575,1604,0,1586,0,1587,0,1587,
+1580,0,1587,1580,1581,0,1587,1580,1609,0,1587,1581,0,1587,1581,1580,
+0,1587,1582,0,1587,1582,1609,0,1587,1582,1610,0,1587,1585,0,1587,
+1605,0,1587,1605,1580,0,1587,1605,1581,0,1587,1605,1605,0,1587,1607,
+0,1587,1609,0,1587,1610,0,1588,0,1588,1580,0,1588,1580,1610,0,
+1588,1581,0,1588,1581,1605,0,1588,1581,1610,0,1588,1582,0,1588,1585,
+0,1588,1605,0,1588,1605,1582,0,1588,1605,1605,0,1588,1607,0,1588,
+1609,0,1588,1610,0,1589,0,1589,1581,0,1589,1581,1581,0,1589,1581,
+1610,0,1589,1582,0,1589,1585,0,1589,1604,1593,1605,0,1589,1604,1609,
+0,1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,
+1587,1604,1605,0,1589,1604,1746,0,1589,1605,0,1589,1605,1605,0,1589,
+1609,0,1589,1610,0,1590,0,1590,1580,0,1590,1581,0,1590,1581,1609,
+0,1590,1581,1610,0,1590,1582,0,1590,1582,1605,0,1590,1585,0,1590,
+1605,0,1590,1609,0,1590,1610,0,1591,0,1591,1581,0,1591,1605,0,
+1591,1605,1581,0,1591,1605,1605,0,1591,1605,1610,0,1591,1609,0,1591,
+1610,0,1592,0,1592,1605,0,1593,0,1593,1580,0,1593,1580,1605,0,
+1593,1604,1610,1607,0,1593,1605,0,1593,1605,1605,0,1593,1605,1609,0,
+1593,1605,1610,0,1593,1609,0,1593,1610,0,1594,0,1594,1580,0,1594,
+1605,0,1594,1605,1605,0,1594,1605,1609,0,1594,1605,1610,0,1594,1609,
+0,1594,1610,0,1600,1611,0,1600,1614,0,1600,1614,1617,0,1600,1615,
+0,1600,1615,1617,0,1600,1616,0,1600,1616,1617,0,1600,1617,0,1600,
+1618,0,1601,0,1601,1580,0,1601,1581,0,1601,1582,0,1601,1582,1605,
+0,1601,1605,0,1601,1605,1610,0,1601,1609,0,1601,1610,0,1602,0,
+1602,1581,0,1602,1604,1746,0,1602,1605,0,1602,1605,1581,0,1602,1605,
+1605,0,1602,1605,1610,0,1602,1609,0,1602,1610,0,1603,0,1603,1575,
+0,1603,1580,0,1603,1581,0,1603,1582,0,1603,1604,0,1603,1605,0,
+1603,1605,1605,0,1603,1605,1610,0,1603,1609,0,1603,1610,0,1604,0,
+1604,1570,0,1604,1571,0,1604,1573,0,1604,1575,0,1604,1580,0,1604,
+1580,1580,0,1604,1580,1605,0,1604,1580,1610,0,1604,1581,0,1604,1581,
+1605,0,1604,1581,1609,0,1604,1581,1610,0,1604,1582,0,1604,1582,1605,
+0,1604,1605,0,1604,1605,1581,0,1604,1605,1610,0,1604,1607,0,1604,
+1609,0,1604,1610,0,1605,0,1605,1575,0,1605,1580,0,1605,1580,1581,
+0,1605,1580,1582,0,1605,1580,1605,0,1605,1580,1610,0,1605,1581,0,
+1605,1581,1580,0,1605,1581,1605,0,1605,1581,1605,1583,0,1605,1581,1610,
+0,1605,1582,0,1605,1582,1580,0,1605,1582,1605,0,1605,1582,1610,0,
+1605,1605,0,1605,1605,1610,0,1605,1609,0,1605,1610,0,1606,0,1606,
+1580,0,1606,1580,1581,0,1606,1580,1605,0,1606,1580,1609,0,1606,1580,
+1610,0,1606,1581,0,1606,1581,1605,0,1606,1581,1609,0,1606,1581,1610,
+0,1606,1582,0,1606,1585,0,1606,1586,0,1606,1605,0,1606,1605,1609,
+0,1606,1605,1610,0,1606,1606,0,1606,1607,0,1606,1609,0,1606,1610,
+0,1607,0,1607,1580,0,1607,1605,0,1607,1605,1580,0,1607,1605,1605,
+0,1607,1609,0,1607,1610,0,1607,1648,0,1608,0,1608,1587,1604,1605,
+0,1608,1620,0,1608,1652,0,1609,0,1609,1648,0,1610,0,1610,1580,
+0,1610,1580,1610,0,1610,1581,0,1610,1581,1610,0,1610,1582,0,1610,
+1585,0,1610,1586,0,1610,1605,0,1610,1605,1605,0,1610,1605,1610,0,
+1610,1606,0,1610,1607,0,1610,1609,0,1610,1610,0,1610,1620,0,1610,
+1652,0,1649,0,1655,0,1657,0,1658,0,1659,0,1662,0,1663,0,
+1664,0,1667,0,1668,0,1670,0,1671,0,1672,0,1676,0,1677,0,
+1678,0,1681,0,1688,0,1700,0,1702,0,1705,0,1709,0,1711,0,
+1713,0,1715,0,1722,0,1723,0,1726,0,1728,0,1729,0,1729,1620,
+0,1733,0,1734,0,1735,0,1735,1652,0,1736,0,1737,0,1739,0,
+1740,0,1744,0,1746,0,1746,1620,0,1747,0,1749,1620,0,2325,2364,
+0,2326,2364,0,2327,2364,0,2332,2364,0,2337,2364,0,2338,2364,0,
+2344,2364,0,2347,2364,0,2351,2364,0,2352,2364,0,2355,2364,0,2465,
+2492,0,2466,2492,0,2479,2492,0,2503,2494,0,2503,2519,0,2582,2620,
+0,2583,2620,0,2588,2620,0,2603,2620,0,2610,2620,0,2616,2620,0,
+2849,2876,0,2850,2876,0,2887,2878,0,2887,2902,0,2887,2903,0,2962,
+3031,0,3014,3006,0,3014,3031,0,3015,3006,0,3142,3158,0,3263,3285,
+0,3270,3266,0,3270,3285,0,3270,3286,0,3274,3285,0,3398,3390,0,
+3398,3415,0,3399,3390,0,3545,3530,0,3545,3535,0,3545,3551,0,3548,
+3530,0,3661,3634,0,3755,3737,0,3755,3745,0,3789,3762,0,3851,0,
+3904,4021,0,3906,4023,0,3916,4023,0,3921,4023,0,3926,4023,0,3931,
+4023,0,3953,3954,0,3953,3956,0,3953,3968,0,3984,4021,0,3986,4023,
+0,3996,4023,0,4001,4023,0,4006,4023,0,4011,4023,0,4018,3968,0,
+4018,3969,0,4019,3968,0,4019,3969,0,4133,4142,0,4316,0,4352,0,
+4352,4449,0,4353,0,4354,0,4354,4449,0,4355,0,4355,4449,0,4356,
+0,4357,0,4357,4449,0,4358,0,4358,4449,0,4359,0,4359,4449,0,
+4360,0,4361,0,4361,4449,0,4362,0,4363,0,4363,4449,0,4363,4462,
+0,4364,0,4364,4449,0,4364,4462,4363,4468,0,4365,0,4366,0,4366,
+4449,0,4366,4449,4535,4352,4457,0,4367,0,4367,4449,0,4368,0,4368,
+4449,0,4369,0,4369,4449,0,4370,0,4370,4449,0,4372,0,4373,0,
+4378,0,4380,0,4381,0,4382,0,4384,0,4385,0,4386,0,4387,0,
+4391,0,4393,0,4395,0,4396,0,4397,0,4398,0,4399,0,4402,0,
+4406,0,4416,0,4423,0,4428,0,4439,0,4440,0,4441,0,4448,0,
+4449,0,4450,0,4451,0,4452,0,4453,0,4454,0,4455,0,4456,0,
+4457,0,4458,0,4459,0,4460,0,4461,0,4462,0,4463,0,4464,0,
+4465,0,4466,0,4467,0,4468,0,4469,0,4484,0,4485,0,4488,0,
+4497,0,4498,0,4500,0,4510,0,4513,0,4522,0,4524,0,4525,0,
+4528,0,4529,0,4530,0,4531,0,4532,0,4533,0,4551,0,4552,0,
+4556,0,4558,0,4563,0,4567,0,4569,0,4573,0,4575,0,4593,0,
+4594,0,6917,6965,0,6919,6965,0,6921,6965,0,6923,6965,0,6925,6965,
+0,6929,6965,0,6970,6965,0,6972,6965,0,6974,6965,0,6975,6965,0,
+6978,6965,0,7426,0,7446,0,7447,0,7452,0,7453,0,7461,0,7547,
+0,7557,0,7734,772,0,7735,772,0,7770,772,0,7771,772,0,7778,
+775,0,7779,775,0,7840,770,0,7840,774,0,7841,770,0,7841,774,
+0,7864,770,0,7865,770,0,7884,770,0,7885,770,0,7936,768,0,
+7936,769,0,7936,834,0,7936,837,0,7937,768,0,7937,769,0,7937,
+834,0,7937,837,0,7938,837,0,7939,837,0,7940,837,0,7941,837,
+0,7942,837,0,7943,837,0,7944,768,0,7944,769,0,7944,834,0,
+7944,837,0,7945,768,0,7945,769,0,7945,834,0,7945,837,0,7946,
+837,0,7947,837,0,7948,837,0,7949,837,0,7950,837,0,7951,837,
+0,7952,768,0,7952,769,0,7953,768,0,7953,769,0,7960,768,0,
+7960,769,0,7961,768,0,7961,769,0,7968,768,0,7968,769,0,7968,
+834,0,7968,837,0,7969,768,0,7969,769,0,7969,834,0,7969,837,
+0,7970,837,0,7971,837,0,7972,837,0,7973,837,0,7974,837,0,
+7975,837,0,7976,768,0,7976,769,0,7976,834,0,7976,837,0,7977,
+768,0,7977,769,0,7977,834,0,7977,837,0,7978,837,0,7979,837,
+0,7980,837,0,7981,837,0,7982,837,0,7983,837,0,7984,768,0,
+7984,769,0,7984,834,0,7985,768,0,7985,769,0,7985,834,0,7992,
+768,0,7992,769,0,7992,834,0,7993,768,0,7993,769,0,7993,834,
+0,8000,768,0,8000,769,0,8001,768,0,8001,769,0,8008,768,0,
+8008,769,0,8009,768,0,8009,769,0,8016,768,0,8016,769,0,8016,
+834,0,8017,768,0,8017,769,0,8017,834,0,8025,768,0,8025,769,
+0,8025,834,0,8032,768,0,8032,769,0,8032,834,0,8032,837,0,
+8033,768,0,8033,769,0,8033,834,0,8033,837,0,8034,837,0,8035,
+837,0,8036,837,0,8037,837,0,8038,837,0,8039,837,0,8040,768,
+0,8040,769,0,8040,834,0,8040,837,0,8041,768,0,8041,769,0,
+8041,834,0,8041,837,0,8042,837,0,8043,837,0,8044,837,0,8045,
+837,0,8046,837,0,8047,837,0,8048,837,0,8052,837,0,8060,837,
+0,8118,837,0,8127,768,0,8127,769,0,8127,834,0,8134,837,0,
+8182,837,0,8190,768,0,8190,769,0,8190,834,0,8194,0,8195,0,
+8208,0,8211,0,8212,0,8229,0,8230,0,8242,8242,0,8242,8242,8242,
+0,8242,8242,8242,8242,0,8245,8245,0,8245,8245,8245,0,8254,0,8361,
+0,8592,0,8592,824,0,8593,0,8594,0,8594,824,0,8595,0,8596,
+824,0,8656,824,0,8658,824,0,8660,824,0,8707,824,0,8712,824,
+0,8715,824,0,8721,0,8722,0,8739,824,0,8741,824,0,8747,8747,
+0,8747,8747,8747,0,8747,8747,8747,8747,0,8750,8750,0,8750,8750,8750,
+0,8764,824,0,8771,824,0,8773,824,0,8776,824,0,8781,824,0,
+8801,824,0,8804,824,0,8805,824,0,8818,824,0,8819,824,0,8822,
+824,0,8823,824,0,8826,824,0,8827,824,0,8828,824,0,8829,824,
+0,8834,824,0,8835,824,0,8838,824,0,8839,824,0,8849,824,0,
+8850,824,0,8866,824,0,8872,824,0,8873,824,0,8875,824,0,8882,
+824,0,8883,824,0,8884,824,0,8885,824,0,9474,0,9632,0,9675,
+0,10629,0,10630,0,10973,824,0,11617,0,12289,0,12290,0,12296,0,
+12297,0,12298,0,12299,0,12300,0,12301,0,12302,0,12303,0,12304,0,
+12305,0,12306,0,12308,0,12309,0,12310,0,12311,0,12358,12441,0,12363,
+12441,0,12365,12441,0,12367,12441,0,12369,12441,0,12371,12441,0,12373,12441,
+0,12375,12441,0,12377,12441,0,12379,12441,0,12381,12441,0,12383,12441,0,
+12385,12441,0,12388,12441,0,12390,12441,0,12392,12441,0,12399,12441,0,12399,
+12442,0,12402,12441,0,12402,12442,0,12405,12441,0,12405,12442,0,12408,12441,
+0,12408,12442,0,12411,12441,0,12411,12442,0,12424,12426,0,12441,0,12442,
+0,12445,12441,0,12449,0,12450,0,12450,12497,12540,12488,0,12450,12523,12501,
+12449,0,12450,12531,12506,12450,0,12450,12540,12523,0,12451,0,12452,0,12452,
+12491,12531,12464,0,12452,12531,12481,0,12453,0,12454,0,12454,12441,0,12454,
+12457,12531,0,12455,0,12456,0,12456,12473,12463,12540,12489,0,12456,12540,12459,
+12540,0,12457,0,12458,0,12458,12531,12473,0,12458,12540,12512,0,12459,0,
+12459,12441,0,12459,12452,12522,0,12459,12521,12483,12488,0,12459,12525,12522,12540,
+0,12460,12525,12531,0,12460,12531,12510,0,12461,0,12461,12441,0,12461,12517,
+12522,12540,0,12461,12525,0,12461,12525,12464,12521,12512,0,12461,12525,12513,12540,
+12488,12523,0,12461,12525,12527,12483,12488,0,12462,12460,0,12462,12491,12540,0,
+12462,12523,12480,12540,0,12463,0,12463,12441,0,12463,12523,12476,12452,12525,0,
+12463,12525,12540,12493,0,12464,12521,12512,0,12464,12521,12512,12488,12531,0,12465,
+0,12465,12441,0,12465,12540,12473,0,12467,0,12467,12441,0,12467,12488,0,
+12467,12523,12490,0,12467,12540,12509,0,12469,0,12469,12441,0,12469,12452,12463,
+12523,0,12469,12531,12481,12540,12512,0,12471,0,12471,12441,0,12471,12522,12531,
+12464,0,12473,0,12473,12441,0,12475,0,12475,12441,0,12475,12531,12481,0,
+12475,12531,12488,0,12477,0,12477,12441,0,12479,0,12479,12441,0,12480,12540,
+12473,0,12481,0,12481,12441,0,12483,0,12484,0,12484,12441,0,12486,0,
+12486,12441,0,12487,12471,0,12488,0,12488,12441,0,12488,12531,0,12489,12523,
+0,12490,0,12490,12494,0,12491,0,12492,0,12493,0,12494,0,12494,12483,
+12488,0,12495,0,12495,12441,0,12495,12442,0,12495,12452,12484,0,12496,12540,
+12524,12523,0,12497,12540,12475,12531,12488,0,12497,12540,12484,0,12498,0,12498,
+12441,0,12498,12442,0,12499,12523,0,12500,12450,12473,12488,12523,0,12500,12463,
+12523,0,12500,12467,0,12501,0,12501,12441,0,12501,12442,0,12501,12449,12521,
+12483,12489,0,12501,12451,12540,12488,0,12501,12521,12531,0,12502,12483,12471,12455,
+12523,0,12504,0,12504,12441,0,12504,12442,0,12504,12463,12479,12540,12523,0,
+12504,12523,12484,0,12505,12540,12479,0,12506,12477,0,12506,12491,12498,0,12506,
+12531,12473,0,12506,12540,12472,0,12507,0,12507,12441,0,12507,12442,0,12507,
+12531,0,12507,12540,12523,0,12507,12540,12531,0,12508,12523,12488,0,12509,12452,
+12531,12488,0,12509,12531,12489,0,12510,0,12510,12452,12463,12525,0,12510,12452,
+12523,0,12510,12483,12495,0,12510,12523,12463,0,12510,12531,12471,12519,12531,0,
+12511,0,12511,12463,12525,12531,0,12511,12522,0,12511,12522,12496,12540,12523,0,
+12512,0,12513,0,12513,12460,0,12513,12460,12488,12531,0,12513,12540,12488,12523,
+0,12514,0,12515,0,12516,0,12516,12540,12489,0,12516,12540,12523,0,12517,
+0,12518,0,12518,12450,12531,0,12519,0,12520,0,12521,0,12522,0,12522,
+12483,12488,12523,0,12522,12521,0,12523,0,12523,12500,12540,0,12523,12540,12502,
+12523,0,12524,0,12524,12512,0,12524,12531,12488,12466,12531,0,12525,0,12527,
+0,12527,12441,0,12527,12483,12488,0,12528,0,12528,12441,0,12529,0,12529,
+12441,0,12530,0,12530,12441,0,12531,0,12539,0,12540,0,12541,12441,0,
+12593,0,12594,0,12595,0,12596,0,12597,0,12598,0,12599,0,12600,0,
+12601,0,12602,0,12603,0,12604,0,12605,0,12606,0,12607,0,12608,0,
+12609,0,12610,0,12611,0,12612,0,12613,0,12614,0,12615,0,12616,0,
+12617,0,12618,0,12619,0,12620,0,12621,0,12622,0,12623,0,12624,0,
+12625,0,12626,0,12627,0,12628,0,12629,0,12630,0,12631,0,12632,0,
+12633,0,12634,0,12635,0,12636,0,12637,0,12638,0,12639,0,12640,0,
+12641,0,12642,0,12643,0,12644,0,15261,0,16408,0,16441,0,19968,0,
+19969,0,19971,0,19977,0,19978,0,19979,0,19981,0,19993,0,20006,0,
+20008,0,20013,0,20018,0,20022,0,20025,0,20031,0,20057,0,20061,0,
+20098,0,20101,0,20102,0,20108,0,20116,0,20128,0,20142,0,20154,0,
+20160,0,20196,0,20225,0,20241,0,20352,0,20358,0,20363,0,20398,0,
+20415,0,20523,0,20698,0,20711,0,20778,0,20799,0,20800,0,20805,0,
+20813,0,20837,0,20840,0,20841,0,20843,0,20845,0,20864,0,20866,0,
+20886,0,20889,0,20907,0,20917,0,20919,0,20937,0,20940,0,20956,0,
+20958,0,20960,0,20981,0,20992,0,20999,0,21015,0,21033,0,21050,0,
+21129,0,21147,0,21155,0,21172,0,21191,0,21193,0,21202,0,21214,0,
+21220,0,21237,0,21241,0,21242,0,21269,0,21271,0,21274,0,21304,0,
+21307,0,21311,0,21313,0,21316,0,21317,0,21329,0,21332,0,21340,0,
+21353,0,21360,0,21365,0,21378,0,21430,0,21443,0,21448,0,21475,0,
+21477,0,21491,0,21517,0,21519,0,21533,0,21570,0,21693,0,21845,0,
+21895,0,21913,0,21917,0,21952,0,21986,0,22022,0,22120,0,22231,0,
+22235,0,22265,0,22303,0,22320,0,22592,0,22618,0,22622,0,22696,0,
+22707,0,22744,0,22751,0,22763,0,22786,0,22794,0,22805,0,22812,0,
+22823,0,22823,27491,0,22825,0,22852,0,22856,0,22865,0,22868,0,22899,
+0,23138,0,23336,0,23376,0,23398,0,23424,0,23429,0,23447,0,23527,
+0,23534,0,23544,0,23567,0,23586,0,23608,0,23615,0,23650,0,23652,
+0,23653,0,23662,0,23665,0,23833,0,23888,0,23994,0,24027,0,24037,
+0,24038,0,24049,0,24062,0,24178,0,24179,25104,0,24180,0,24186,0,
+24191,0,24230,0,24265,0,24266,0,24274,0,24275,0,24281,0,24300,0,
+24308,0,24318,0,24324,0,24331,0,24339,0,24400,0,24417,0,24425,0,
+24435,0,24459,0,24489,0,24493,0,24515,0,24565,0,24594,0,24604,0,
+24724,0,24792,0,24801,0,24840,0,24900,0,24910,0,24928,0,24936,0,
+24974,0,24976,0,25074,0,25078,0,25088,0,25096,0,25134,0,25140,0,
+25142,0,25163,0,25289,0,25295,0,25299,0,25342,0,25467,0,25504,0,
+25540,0,25628,0,25682,0,25754,0,25796,0,25903,0,25908,0,25935,0,
+25942,0,25976,0,25991,0,26007,0,26009,0,26020,0,26041,0,26053,0,
+26080,0,26082,0,26085,0,26126,27835,0,26131,0,26157,21644,0,26228,0,
+26248,0,26257,0,26292,0,26310,0,26352,0,26356,0,26376,0,26377,0,
+26391,0,26395,0,26408,0,26446,0,26454,0,26491,0,26519,0,26611,0,
+26647,0,26666,0,26666,24335,20250,31038,0,26753,0,26757,0,26792,0,27138,
+0,27155,0,27347,0,27396,0,27424,0,27490,0,27491,0,27511,0,27513,
+0,27566,0,27571,0,27578,0,27595,0,27597,0,27604,0,27611,0,27663,
+0,27668,0,27700,0,27784,0,27852,0,27877,0,27880,0,27931,0,27934,
+0,27969,0,28010,0,28023,0,28107,0,28122,0,28138,0,28186,0,28316,
+0,28346,0,28363,0,28369,0,28379,0,28431,0,28450,0,28451,0,28651,
+0,28670,0,28702,0,28779,0,28825,0,28872,0,28889,0,29001,0,29038,
+0,29134,0,29136,0,29200,0,29211,0,29226,0,29227,0,29237,0,29238,
+0,29243,0,29247,0,29255,0,29273,0,29275,0,29282,0,29305,0,29356,
+0,29359,0,29376,0,29436,0,29482,0,29557,0,29572,0,29575,0,29577,
+0,29618,0,29662,0,29702,0,29705,0,29730,0,29801,0,29809,0,29833,
+0,29848,0,29916,0,29926,0,29958,0,29976,0,29983,0,29992,0,30000,
+0,30002,0,30007,0,30011,0,30041,0,30053,0,30064,0,30091,0,30098,
+0,30178,0,30237,0,30239,0,30274,0,30313,0,30326,0,30333,0,30382,
+0,30399,0,30410,0,30427,0,30435,0,30439,0,30446,0,30452,0,30465,
+0,30528,0,30538,0,30631,0,30683,0,30690,0,30707,0,30827,0,30860,
+0,30865,0,30922,0,30924,0,30971,0,31018,0,31034,0,31036,0,31038,
+0,31048,0,31049,0,31056,0,31062,0,31069,0,31070,0,31077,0,31103,
+0,31117,0,31118,0,31119,0,31150,0,31160,0,31166,0,31178,0,31192,
+0,31260,0,31296,0,31348,0,31361,0,31409,0,31435,0,31481,0,31520,
+0,31680,0,31806,0,31840,0,31859,0,31867,0,31890,0,31934,0,31958,
+0,31975,0,31992,0,32016,0,32034,0,32047,0,32091,0,32160,0,32190,
+0,32244,0,32265,0,32311,0,32321,0,32566,0,32574,0,32593,0,32626,
+0,32633,0,32645,0,32650,0,32666,0,32701,0,32769,0,32773,0,32780,
+0,32786,0,32819,0,32838,0,32879,0,32894,0,32895,0,32905,0,32907,
+0,33240,0,33251,0,33256,0,33258,0,33261,0,33267,0,33276,0,33292,
+0,33307,0,33311,0,33390,0,33391,0,33394,0,33400,0,33401,0,33509,
+0,33590,0,33618,0,33737,0,33775,0,33777,0,33853,0,33865,0,33879,
+0,34030,0,34044,0,34253,0,34298,0,34310,0,34322,0,34349,0,34367,
+0,34381,0,34396,0,34411,0,34681,0,34746,0,34847,0,34880,0,34892,
+0,34915,0,35010,0,35023,0,35041,0,35064,0,35088,0,35137,0,35172,
+0,35198,0,35206,0,35211,0,35222,0,35282,0,35328,0,35498,0,35519,
+0,35531,0,35538,0,35542,0,35565,0,35576,0,35582,0,35585,0,35641,
+0,35672,0,35712,0,35722,0,35895,0,35910,0,35912,0,35925,0,35960,
+0,35997,0,36001,0,36034,0,36039,0,36040,0,36051,0,36104,0,36196,
+0,36208,0,36275,0,36335,0,36523,0,36554,0,36646,0,36650,0,36664,
+0,36667,0,36706,0,36763,0,36784,0,36789,0,36790,0,36899,0,36920,
+0,36969,0,36978,0,36988,0,37007,0,37009,0,37070,0,37117,0,37193,
+0,37226,0,37273,0,37300,0,37318,0,37324,0,37327,0,37329,0,37428,
+0,37494,0,37636,0,37706,0,38263,0,38272,0,38317,0,38428,0,38446,
+0,38475,0,38477,0,38517,0,38520,0,38524,0,38534,0,38563,0,38582,
+0,38584,0,38585,0,38626,0,38627,0,38632,0,38646,0,38647,0,38706,
+0,38728,0,38737,0,38742,0,38750,0,38754,0,38761,0,38859,0,38875,
+0,38893,0,38899,0,38911,0,38913,0,38917,0,38923,0,38936,0,38971,
+0,39006,0,39080,0,39131,0,39135,0,39151,0,39164,0,39208,0,39318,
+0,39321,0,39340,0,39409,0,39530,0,39592,0,39640,0,39647,0,39698,
+0,39717,0,39727,0,39730,0,39740,0,39770,0,39791,0,40023,0,40165,
+0,40372,0,40442,0,40478,0,40565,0,40575,0,40599,0,40607,0,40613,
+0,40635,0,40643,0,40653,0,40654,0,40657,0,40697,0,40701,0,40718,
+0,40723,0,40736,0,40763,0,40771,0,40778,0,40786,0,40845,0,40846,
+0,40860,0,40863,0,40864,0,42863,0,64329,1473,0,64329,1474,0,141380,
+0,141386,0,144341,0,152137,0,154832,0,163539,0,0};
+static const guint16 charMapIndex [] = {
+8599,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,0,0,0,0,0,21,0,2004,0,0,0,0,9,
+0,0,841,957,3,3699,0,0,36,638,2610,0,816,808,1000,0,
+1199,1202,1205,1208,1220,1226,0,1283,1325,1328,1331,1346,1475,1478,1481,1496,
+0,1632,1655,1658,1661,1664,1676,0,0,1824,1827,1830,1842,1948,0,0,
+2022,2025,2028,2031,2043,2049,0,2128,2186,2189,2192,2207,2343,2346,2349,2361,
+0,2589,2615,2618,2621,2624,2636,0,0,2796,2799,2802,2814,2916,0,2931,
+1211,2034,1214,2037,1244,2067,1271,2116,1274,2119,1277,2122,1280,2125,1308,2159,
+0,0,1337,2198,1340,2201,1343,2204,1367,2228,1352,2213,1404,2271,1410,2277,
+1413,2280,1419,2286,1433,2298,0,0,1484,2352,1487,2355,1490,2358,1514,2379,
+1493,0,1463,2331,1522,2387,1545,2443,0,1566,2476,1575,2485,1569,2479,1563,
+2473,0,0,1629,2586,1644,2601,1638,2595,3432,0,0,1667,2627,1670,2630,
+1682,2642,0,0,1735,2715,1753,2733,1741,2721,1767,2747,1770,2750,1785,2765,
+1776,2756,1813,2785,1804,2776,0,0,1833,2805,1836,2808,1839,2811,1848,2820,
+1851,2823,1872,2844,1916,2881,1951,2919,1963,1974,2945,1980,2951,1983,2954,2739,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1694,2654,0,0,0,0,0,0,0,0,0,0,0,0,0,1863,
+2835,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,1299,1302,2153,1553,1560,2457,1617,1620,2574,1229,2052,1502,
+2367,1685,2645,1854,2826,3081,3164,3078,3161,3084,3167,3075,3158,0,3014,3099,
+3329,3332,3027,3108,0,0,1416,2283,1539,2437,1700,2660,3321,3324,3318,3421,
+2390,1293,1296,2150,1401,2268,0,0,1626,2583,3019,3102,3024,3105,3072,3155,
+1232,2055,1235,2058,1355,2216,1358,2219,1505,2370,1508,2373,1688,2648,1691,2651,
+1744,2724,1747,2727,1857,2829,1860,2832,1782,2762,1810,2782,0,0,1442,2307,
+0,0,0,0,0,0,1217,2040,1364,2225,3069,3152,3063,3146,1673,2633,
+3341,3344,1957,2925,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2289,3371,2385,2696,3397,3399,3401,2873,2911,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,15,18,24,39,6,27,0,0,
+3367,2455,2739,2896,3424,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3435,3437,0,3442,3439,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,3430,0,0,0,0,0,48,0,0,0,1160,0,
+0,0,0,0,3,2982,3465,3000,3488,3500,3517,0,3538,0,3559,3579,
+3798,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,3526,3568,3610,3642,3654,3676,
+3807,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,3685,3761,3728,3752,3780,0,
+3631,3669,3554,3822,3825,3773,3737,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3697,3739,3747,0,3512,3637,0,0,0,3552,0,0,0,0,0,0,
+3840,3846,0,3837,0,0,0,3828,0,0,0,0,3870,3858,3879,0,
+0,0,0,0,0,0,0,0,0,3864,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,3930,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3906,3912,0,3903,0,0,0,3965,0,0,0,0,3936,3924,3947,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,3968,3971,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,3849,3915,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3831,3897,3834,3900,0,0,3843,3909,0,0,3974,3977,3852,3918,3855,3921,
+0,0,3861,3927,3867,3933,3873,3941,0,0,3980,3983,3894,3962,3876,3944,
+3882,3950,3885,3953,3888,3956,0,0,3891,3959,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,3986,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,4203,4206,5137,4209,5196,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,4212,5140,5271,5199,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5291,0,5262,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,5286,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,5312,0,0,0,0,0,0,
+0,5321,0,0,5324,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5294,5297,5300,5303,5306,5309,5315,5318,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,5336,5339,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5327,5330,0,5333,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,5354,0,0,5357,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,5342,5345,5348,0,0,5351,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5369,0,0,5366,5372,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5360,5363,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,5375,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,5378,5384,5381,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5387,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5390,0,0,0,0,0,0,5396,5399,0,5393,5402,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,5405,5411,5408,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,5414,0,5417,5423,5420,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,5426,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,5435,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5429,5432,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5438,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,5443,0,0,0,0,0,0,0,0,0,5446,0,0,
+0,0,5449,0,0,0,0,5452,0,0,0,0,5455,0,0,0,
+0,0,0,0,0,0,0,0,0,5440,0,0,0,0,0,0,
+0,0,0,5458,0,5461,5485,5488,5491,5494,0,0,0,0,0,0,
+0,5464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,5470,0,0,0,0,0,0,0,0,0,5473,0,0,
+0,0,5476,0,0,0,0,5479,0,0,0,0,5482,0,0,0,
+0,0,0,0,0,0,0,0,0,5467,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,5497,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5500,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,1194,3022,1251,0,
+1291,1323,3252,1385,1422,1454,1520,1525,1551,1584,1615,0,1653,3327,1703,1730,
+1788,1822,1905,2004,3347,3349,5779,2070,2131,2177,3357,3359,3361,2262,0,2393,
+2494,3208,2610,3353,5781,5783,2663,2768,2794,5787,3381,2853,5789,3631,3633,3635,
+3773,3775,2322,2696,2794,2853,3631,3633,3739,3773,3775,0,0,0,0,0,
+0,0,0,0,0,0,0,0,3939,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,3351,2085,3355,3129,3361,
+2237,3363,3365,3369,3373,3375,3377,5791,3426,3379,5793,3428,3385,3383,3387,3389,
+3391,3393,3395,3403,3405,3286,3407,3409,5785,3411,3413,2943,3415,3417,3419,3669,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1241,2064,1256,2076,1259,2079,1262,2082,3030,3111,1305,2156,1311,2162,1320,2171,
+1314,2165,1317,2168,3194,3200,3197,3203,1370,2231,1373,2234,3335,3338,1382,2259,
+1407,2274,1436,2301,1445,2310,1439,2304,1448,2313,1451,2316,1517,2382,3045,3126,
+1536,2434,1542,2440,1548,2446,1572,2482,5795,5798,1581,2491,1578,2488,1603,2539,
+1606,2542,1609,2545,1635,2592,1641,2598,1650,2607,1647,2604,3060,3143,3066,3149,
+3210,3216,3213,3219,1722,2688,1725,2691,1738,2718,1750,2730,5801,5804,1756,2736,
+1773,2753,1779,2759,3222,3225,3228,3231,5807,5810,1801,2770,1807,2779,1819,2791,
+1816,2788,1869,2841,1878,2850,1875,2847,3234,3237,3240,3243,1895,2867,1898,2870,
+1910,2875,1913,2878,1922,2887,1919,2884,1925,2893,1937,2905,1940,2908,1960,2928,
+1977,2948,1986,2957,1989,2960,2319,2773,2890,2937,2019,3249,0,0,0,0,
+1238,2061,1223,2046,3005,3090,3002,3087,3011,3096,3008,3093,5813,5819,3173,3185,
+3170,3182,3179,3191,3176,3188,5816,5822,1361,2222,1349,2210,1334,2195,3036,3117,
+3033,3114,3042,3123,3039,3120,5825,5828,1499,2364,1511,2376,1697,2657,1679,2639,
+3051,3134,3048,3131,3057,3140,3054,3137,5831,5834,3259,3274,3256,3271,3265,3280,
+3262,3277,3268,3283,1866,2838,1845,2817,3291,3306,3288,3303,3297,3312,3294,3309,
+3300,3315,1945,2913,1969,2940,1966,2934,1954,2922,0,0,0,0,0,0,
+3619,3622,5837,5849,5840,5852,5843,5855,3474,3477,5879,5891,5882,5894,5885,5897,
+3645,3648,5921,5927,5924,5930,0,0,3491,3494,5933,5939,5936,5942,0,0,
+3657,3660,5945,5957,5948,5960,5951,5963,3503,3506,5987,5999,5990,6002,5993,6005,
+3688,3691,6029,6038,6032,6041,6035,6044,3529,3532,6047,6056,6050,6059,6053,6062,
+3731,3734,6065,6071,6068,6074,0,0,3541,3544,6077,6083,6080,6086,0,0,
+3764,3767,6089,6098,6092,6101,6095,6104,0,3571,0,6107,0,6110,0,6113,
+3783,3786,6116,6128,6119,6131,6122,6134,3582,3585,6158,6170,6161,6173,6164,6176,
+3607,3591,3639,3596,3651,3598,3673,3603,3725,3813,3749,3815,3777,3817,0,0,
+5846,5858,5861,5864,5867,5870,5873,5876,5888,5900,5903,5906,5909,5912,5915,5918,
+5954,5966,5969,5972,5975,5978,5981,5984,5996,6008,6011,6014,6017,6020,6023,6026,
+6125,6137,6140,6143,6146,6149,6152,6155,6167,6179,6182,6185,6188,6191,6194,6197,
+3616,3613,6200,3628,3593,0,3625,6209,3471,3468,3462,3446,3480,30,3671,30,
+45,2985,6203,3666,3600,0,3663,6221,3485,3448,3497,3450,3509,6212,6215,6218,
+3682,3679,3795,3460,0,0,3694,3801,3523,3520,3514,3452,0,6227,6230,6233,
+3758,3755,3804,3605,3741,3744,3770,3810,3565,3562,3556,3456,3549,2979,3444,2002,
+0,0,6206,3792,3819,0,3789,6224,3535,3454,3576,3458,3588,2998,33,0,
+6236,6238,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
+0,6240,0,0,0,0,0,42,0,0,0,0,0,0,0,0,
+0,0,0,0,622,624,627,0,0,0,0,0,0,0,0,1,
+0,0,0,6250,6253,0,6262,6265,0,0,0,0,107,0,12,0,
+0,0,0,0,0,0,0,1189,1186,110,0,0,0,0,0,0,
+0,0,0,0,0,0,0,6257,0,0,0,0,0,0,0,1,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+633,2322,0,0,1021,1069,1094,1108,1126,1140,616,6310,1167,125,612,2560,
+633,638,841,957,1021,1069,1094,1108,1126,1140,616,6310,1167,125,612,0,
+2004,2177,2610,2896,3357,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,1732,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2011,2015,1265,2992,0,2087,2091,3254,0,2995,2262,1422,1422,1422,2289,3206,
+1454,1454,1551,2455,0,1615,1623,0,0,1703,1728,1730,1730,1730,0,0,
+1761,1790,1798,0,1972,0,3574,0,1972,0,1525,3017,1251,1265,0,2177,
+1323,1376,0,1584,2610,4004,4018,4026,4031,2322,0,1378,3737,3633,3483,3547,
+6308,0,0,0,0,1291,2131,2177,2322,2385,0,0,0,0,0,0,
+0,0,0,812,940,820,944,1004,1056,824,1077,828,1008,1081,1113,805,
+1454,1456,1459,1469,1881,1883,1886,1890,1472,1928,1930,1933,1551,1265,1291,1584,
+2322,2324,2327,2337,2853,2855,2858,2862,2340,2896,2898,2901,2455,2085,2131,2494,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,6275,6282,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,6287,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,6290,6296,6293,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,6299,0,0,0,0,6302,0,0,6305,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,6312,0,6315,0,0,0,0,0,6318,6321,0,6330,
+6333,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,6337,0,0,6340,0,0,6343,0,6346,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1176,0,6352,0,0,0,0,0,0,0,0,0,0,6349,1164,1181,
+6355,6358,0,0,6361,6364,0,0,6367,6370,0,0,0,0,0,0,
+6373,6376,0,0,6385,6388,0,0,6391,6394,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,6403,6406,6409,6412,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+6379,6382,6397,6400,0,0,0,0,0,0,6415,6418,6421,6424,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,6446,6448,0,0,0,0,0,
+638,841,957,1021,1069,1094,1108,1126,1140,643,662,681,700,715,730,745,
+760,775,790,846,127,181,190,194,198,202,206,210,214,131,136,141,
+146,151,156,161,166,171,176,185,640,843,959,1023,1071,1096,1110,1128,
+1142,646,665,684,703,718,733,748,763,778,793,849,218,222,226,230,
+234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294,
+298,302,306,310,314,318,1194,1251,1265,1291,1323,1376,1385,1422,1454,1520,
+1525,1551,1584,1615,1653,1703,1728,1730,1759,1788,1822,1881,1905,1928,1943,1972,
+2004,2070,2085,2131,2177,2237,2262,2289,2322,2385,2393,2455,2494,2560,2610,2663,
+2694,2696,2739,2768,2794,2853,2873,2896,2911,2943,633,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,6325,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,1156,1169,1172,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,6437,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6440,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7833,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,8595,0,0,0,0,0,0,0,0,0,0,0,0,
+7278,7296,7302,7306,7308,7314,7318,7322,7326,7354,7362,7368,7374,7376,7380,7394,
+7396,7398,7410,7428,7432,7436,7438,7444,7454,7456,7462,7464,7468,7470,7502,7508,
+7526,7528,7530,7532,7536,7551,7557,7561,7571,7573,7575,7577,7587,7589,7597,7599,
+7603,7605,7607,7614,7616,7632,7634,7638,7640,7642,7644,7648,7656,7690,7696,7698,
+7722,7724,7732,7734,7738,7740,7744,7748,7768,7772,7780,7815,7817,7823,7827,7831,
+7835,7837,7839,7841,7843,7893,7913,7919,7921,7923,7925,7927,7929,7935,7947,7951,
+7971,7973,7977,7979,7981,7983,7997,7999,8011,8013,8015,8017,8027,8039,8041,8043,
+8059,8089,8091,8101,8107,8109,8119,8131,8153,8157,8165,8169,8171,8175,8177,8179,
+8187,8189,8195,8199,8203,8205,8207,8209,8211,8213,8217,8219,8257,8261,8269,8271,
+8273,8289,8293,8297,8299,8327,8329,8333,8335,8337,8351,8353,8355,8359,8361,8373,
+8375,8377,8393,8399,8407,8409,8413,8423,8425,8429,8447,8451,8457,8467,8471,8473,
+8475,8477,8481,8483,8487,8499,8501,8503,8511,8513,8515,8521,8523,8525,8529,8531,
+8533,8535,8537,8543,8551,8553,8559,8561,8563,8565,8569,8571,8573,8575,8577,8579,
+8581,8585,8587,8589,8593,8597,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,6466,0,7444,7446,7448,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,6479,0,6482,0,
+6485,0,6488,0,6491,0,6494,0,6497,0,6500,0,6503,0,6506,0,
+6509,0,6512,0,0,6515,0,6518,0,6521,0,0,0,0,0,0,
+6524,6527,0,6530,6533,0,6536,6539,0,6542,6545,0,6548,6551,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,6476,0,0,0,0,0,0,99,102,0,6561,6554,
+0,0,0,0,0,0,0,0,0,0,0,0,6640,0,6667,0,
+6711,0,6737,0,6746,0,6762,0,6778,0,6788,0,6793,0,6806,0,
+6811,0,6820,0,0,6827,0,6832,0,6840,0,0,0,0,0,0,
+6868,6871,0,6895,6898,0,6919,6922,0,6948,6951,0,6985,6988,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,6604,0,0,7137,7146,7151,7156,0,0,0,7165,6749,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,5502,5507,5706,5509,5708,5710,5514,5519,5521,5712,5714,5716,5718,5720,5722,
+5600,5526,5531,5536,5610,5538,5543,5545,5553,5563,5565,5576,5581,5586,5591,5648,
+5650,5652,5654,5656,5658,5660,5662,5664,5666,5668,5670,5672,5674,5676,5678,5680,
+5682,5684,5686,5688,5646,5596,5598,5724,5726,5728,5730,5732,5734,5736,5602,5738,
+5740,5604,5606,5608,5612,5614,5616,5618,5620,5622,5624,5626,5628,5630,5632,5634,
+5636,5638,5742,5744,5640,5642,5644,5690,5692,5694,5696,5698,5700,5702,5704,0,
+0,0,7278,7318,7284,7504,7286,7298,7288,7985,7308,7292,7280,7541,7510,7326,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+322,331,340,349,358,367,376,385,409,423,432,441,450,459,326,335,
+344,353,362,371,380,389,413,427,436,445,454,463,418,394,402,0,
+468,484,476,532,488,508,472,504,480,516,548,568,564,556,608,536,
+544,560,552,580,524,572,600,584,512,492,528,540,576,496,604,520,
+588,500,592,596,0,0,0,0,0,0,0,0,0,0,0,0,
+1715,861,872,883,894,905,912,919,926,933,962,969,976,979,982,985,
+5502,5509,5514,5521,5526,5531,5538,5545,5553,5565,5576,5581,5586,5591,5504,5511,
+5516,5523,5528,5533,5540,5547,5555,5567,5578,5583,5588,5593,5570,5558,5550,0,
+7278,7318,7284,7504,7320,7370,7282,7368,7310,7444,7772,7893,7843,7780,8413,7508,
+7748,7794,7774,8063,7476,7933,8339,8073,7414,8095,7987,7551,8385,7352,7458,7851,
+8489,7334,7378,7819,7286,7298,7288,7601,7474,7440,7565,7559,8023,7332,8343,7452,
+7534,988,991,994,997,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1074,
+835,951,1015,1063,1088,1102,1120,1134,1148,654,673,692,1427,2182,2179,1556,
+6566,6589,6602,6613,6628,6638,6665,6709,6735,6744,6760,6776,6786,6791,6804,6809,
+6818,6825,6830,6838,6849,6854,6856,6858,6860,6866,6893,6917,6946,6983,7015,7040,
+7056,7058,7073,7077,7089,7097,7099,7101,7111,7122,7133,7135,7144,7149,7154,0,
+6568,6573,6578,6583,6591,6596,6607,6615,6621,6630,6634,6643,6647,6652,6657,6661,
+6697,6700,6670,6704,6675,6678,6684,6691,6725,6729,6714,6720,6740,6752,6756,6765,
+6770,6781,6796,6800,6814,6835,6846,6843,6851,6862,6874,6883,6889,6878,6904,6910,
+6914,6901,6925,6931,6940,6936,6954,6968,6971,6960,6975,6979,6964,7006,7002,6991,
+7011,6994,6998,7017,7022,7026,7030,7034,7042,7047,7050,7060,7063,7068,7079,7083,
+7091,7103,7108,7113,7117,7124,7127,7140,635,838,954,1018,1066,1091,1105,1123,
+1137,1151,658,677,696,711,726,741,756,771,786,801,857,868,879,890,
+901,2291,2136,1196,2072,2612,2682,2139,2142,2146,1466,7609,7755,7538,7750,7796,
+2670,2562,3701,2496,2395,1527,1586,1387,2095,2412,2673,2565,3704,3713,2508,2417,
+1430,2398,1589,1390,1794,3722,2548,2174,2452,2256,2577,3716,2515,2105,2420,2518,
+2108,2533,2423,2522,2112,2536,2427,2551,2555,1719,2402,1593,1394,2698,2702,2708,
+2685,2580,3719,2530,2676,2568,3707,2499,2406,1597,2679,2571,3710,2502,2409,1600,
+2449,1612,2006,1253,2099,2102,1286,1267,2133,1398,2295,1424,2334,1530,1533,2431,
+2460,2463,2466,2470,2505,2511,2526,1705,2665,1708,1712,2741,1764,1907,1901,1247,
+832,948,1012,1060,1085,1099,1117,1131,1145,650,669,688,707,722,737,752,
+767,782,797,853,864,875,886,897,908,915,922,929,936,965,972,2264,
+8331,7770,8361,8345,7877,7300,7472,8593,8593,7547,8413,7488,7545,7686,8009,8163,
+8255,8265,8281,8391,7807,7853,7899,7955,8235,8401,8517,7312,7460,7813,7911,8253,
+8549,7593,7887,8245,8287,7700,8193,8267,7622,7776,7859,7941,8395,7338,7384,7422,
+7720,7811,7909,8025,8171,8249,8259,8357,8463,8539,8547,8047,8079,8141,8229,8419,
+8553,8309,7524,7636,8117,8185,7931,8051,8341,8461,7522,7581,7809,7865,7881,8137,
+8149,8433,7420,8191,7390,7388,8097,8143,8233,8437,8323,7702,7807,8315,7304,7567,
+7660,7949,7995,7434,8055,7344,7652,7290,7847,7730,8135,7466,7516,8031,8237,8301,
+7829,8375,7845,7706,8223,7710,7993,7324,7366,7386,7801,8129,8215,8307,8411,7426,
+7482,7551,7630,7742,7889,8057,8427,8519,8555,8567,7410,7766,7821,8371,7612,7682,
+7688,7718,7885,7901,7967,8093,8145,8183,8363,8241,8381,8421,7402,7412,7484,7897,
+8275,8301,7620,7658,7708,7825,8115,7945,7330,7506,7567,7595,7662,7953,7963,8167,
+8181,8415,8459,8465,8493,7340,8087,8405,8449,7668,7316,7348,7569,7579,7736,7807,
+7905,8007,8243,8389,8589,7760,8431,7408,7786,7790,7857,7871,7959,7991,8045,8133,
+8497,7370,7692,8439,7346,7591,7867,8365,7650,7672,7792,7949,8443,7404,7478,7585,
+7753,7782,7805,7849,7957,8001,8161,8277,8279,8409,8453,7442,7873,7480,7907,7969,
+8247,8445,8541,8557,7788,7863,8197,8107,8111,8123,7939,7895,8321,7328,8225,7406,
+7400,7618,7704,8127,7563,7855,7764,8369,8271,8435,8293,7626,7356,7494,0,0,
+7514,0,7758,0,0,7392,7943,8019,8061,8075,8077,8085,8469,8125,8169,0,
+8251,0,8313,0,0,8383,8397,0,0,0,8505,8507,8509,8545,0,0,
+7342,7350,7360,7418,7424,7450,7492,7498,7500,7512,7518,7583,7587,7664,7678,7680,
+7684,7726,7746,7762,7803,7861,7869,7883,7903,7915,7961,8049,8063,8067,8065,8069,
+8071,8073,8081,8083,8099,8103,8113,8145,8147,8151,8159,8173,8201,8221,8221,8239,
+8283,8295,8317,8319,8347,8349,8379,8383,8455,8485,8495,0,0,0,0,0,
+7294,7382,7364,7336,7358,7372,7416,7430,7492,7486,7490,7496,7514,7520,7543,7549,
+7553,7555,7624,7628,7646,7654,7666,7674,7670,7680,7676,7684,7694,7712,7714,7716,
+7728,7758,7776,7778,7784,7823,7829,7857,7879,7875,7883,7891,7903,8037,7917,7937,
+7943,7965,7975,7989,8003,8005,8019,8021,8029,8035,8033,8053,8105,8113,8121,8139,
+8145,8155,8173,8227,8231,8263,8285,8291,8295,8303,8313,8305,8317,8315,8311,8319,
+8325,8349,8367,8387,8403,8417,8441,8455,8469,8479,8485,8491,8495,8527,8593,8609,
+8607,8611,7272,7274,7276,8613,8615,8617,8583,8591,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+2239,2250,2253,2242,2246,3246,2744,0,0,0,0,0,0,0,0,0,
+0,0,0,3998,3989,3992,4001,3995,0,0,0,0,0,4053,0,4122,
+4086,4004,4031,4036,4062,4070,4075,4103,4117,616,4111,4114,8601,8604,4006,4009,
+4012,4020,4028,4033,4038,4044,4047,0,4050,4056,4059,4064,4072,0,4077,0,
+4080,4083,0,4088,4091,0,4097,4100,4105,4108,4119,4041,4023,4067,4094,4015,
+5202,5202,5210,5210,5210,5210,5212,5212,5212,5212,5216,5216,5216,5216,5208,5208,
+5208,5208,5214,5214,5214,5214,5206,5206,5206,5206,5238,5238,5238,5238,5240,5240,
+5240,5240,5220,5220,5220,5220,5218,5218,5218,5218,5222,5222,5222,5222,5224,5224,
+5224,5224,5230,5230,5228,5228,5232,5232,5226,5226,5236,5236,5234,5234,5242,5242,
+5242,5242,5246,5246,5246,5246,5250,5250,5250,5250,5248,5248,5248,5248,5252,5252,
+5254,5254,5254,5254,5258,5258,5260,5260,5260,5260,5256,5256,5256,5256,5284,5284,
+5289,5289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,5244,5244,5244,5244,5269,5269,5267,5267,5274,5274,5204,5278,5278,
+5265,5265,5276,5276,5282,5282,5282,5282,5143,5143,4137,4137,4185,4185,4164,4164,
+4176,4176,4173,4173,4179,4179,4182,4182,4182,4167,4167,4167,5280,5280,5280,5280,
+4140,4143,4155,4167,4170,4217,4220,4227,4240,4249,4252,4259,4274,4285,4306,4335,
+4338,4343,4352,4361,4364,4369,4389,4412,4419,4438,4441,4444,4479,4490,4497,4511,
+4583,4632,4647,4650,4661,4671,4682,4685,4708,4713,4725,4748,4751,4804,4807,4810,
+4817,4824,4827,4832,4839,4854,4857,4862,4865,4868,4871,4874,4877,4888,4891,4908,
+4923,4938,4945,4959,4962,4970,4989,5009,5024,5031,5034,5039,5058,5073,5082,5099,
+5102,5107,5110,5121,5124,5150,5157,5164,5173,5190,5193,4457,4467,5145,57,64,
+71,78,85,92,4149,4152,4155,4158,4167,4170,4234,4237,4240,4243,4249,4252,
+4300,4303,4306,4329,4335,4338,4346,4349,4352,4355,4361,4364,4824,4827,4854,4857,
+4862,4874,4877,4888,4891,4945,4959,4962,4967,5024,5076,5079,5082,5093,5099,5102,
+5145,5167,5170,5173,5184,5190,5193,4140,4143,4146,4155,4161,4217,4220,4227,4240,
+4246,4259,4274,4285,4306,4332,4352,4369,4389,4412,4419,4438,4444,4479,4490,4497,
+4511,4583,4594,4632,4647,4650,4661,4671,4682,4708,4713,4725,4748,4751,4804,4807,
+4810,4817,4832,4839,4865,4868,4871,4874,4877,4908,4923,4938,4945,4956,4970,4989,
+5009,5024,5039,5058,5073,5082,5096,5107,5110,5127,5150,5157,5164,5173,5187,4155,
+4161,4240,4246,4306,4332,4352,4358,4511,4526,4561,4572,4874,4877,4945,5082,5096,
+5173,5187,4778,4785,4792,4700,4703,4740,4743,4766,4769,4529,4532,4575,4578,4430,
+4433,4404,4407,4447,4450,4639,4642,4674,4677,4537,4544,4555,4561,4558,4508,4597,
+4668,4700,4703,4740,4743,4766,4769,4529,4532,4575,4578,4430,4433,4404,4407,4447,
+4450,4639,4642,4674,4677,4537,4544,4555,4561,4558,4508,4597,4668,4537,4544,4555,
+4561,4526,4572,4685,4479,4490,4497,4537,4544,4555,4685,4708,4200,4200,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+4262,4277,4277,4281,4288,4309,4313,4317,4392,4392,4426,4422,4493,4482,4486,4518,
+4518,4514,4522,4522,4586,4586,4635,4547,4547,4540,4564,4564,4568,4568,4653,4664,
+4664,4688,4688,4692,4696,4716,4728,4728,4732,4754,4762,4758,4813,4813,4842,4846,
+4926,4934,4930,4911,4911,4941,4941,4948,4948,4992,4996,5005,4973,4981,5012,5016,
+0,0,4977,5113,5117,5061,5065,5046,5046,5050,5089,5085,5176,5176,4230,4270,
+4266,4296,4292,4325,4321,4400,4372,4396,4500,4590,4551,4657,4919,4952,5160,5153,
+5180,5027,4850,5069,4842,4926,4736,4884,5042,5020,4915,4880,4915,5042,4376,4415,
+4985,4820,4223,4880,4716,4635,4504,5054,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+4628,4835,4195,4190,5000,4600,4462,4720,5132,4605,4609,4380,4470,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+618,6442,6444,1154,1160,105,1184,6472,6474,6248,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+6246,6244,6242,2000,2000,125,612,2963,2967,6468,6470,6462,6464,6450,6452,6446,
+6448,6454,6456,6458,6460,0,0,1992,1996,6269,6269,6269,6269,2000,2000,2000,
+618,6442,622,0,1160,1154,1184,105,6244,125,612,2963,2967,6468,6470,115,
+121,614,616,620,1162,1179,1167,0,1994,117,119,1192,0,0,0,0,
+51,4772,54,0,61,0,68,4775,75,4782,82,4789,89,4796,96,4799,
+4125,4127,4127,4129,4129,4131,4131,4133,4133,4135,4135,4135,4135,4188,4188,4215,
+4215,4215,4215,4255,4255,4257,4257,4257,4257,4341,4341,4341,4341,4367,4367,4367,
+4367,4410,4410,4410,4410,4436,4436,4436,4436,4453,4453,4455,4455,4460,4460,4475,
+4475,4477,4477,4477,4477,4535,4535,4535,4535,4581,4581,4581,4581,4645,4645,4645,
+4645,4680,4680,4680,4680,4706,4706,4706,4706,4711,4711,4711,4711,4746,4746,4746,
+4746,4802,4802,4802,4802,4830,4830,4830,4830,4860,4860,4860,4860,4894,4894,4894,
+4894,4965,4965,4965,4965,5037,5037,5037,5037,5105,5105,5105,5105,5130,5130,5143,
+5143,5148,5148,5148,5148,4896,4896,4899,4899,4902,4902,4905,4905,0,0,0,
+0,105,113,115,117,119,121,123,125,612,614,616,618,620,622,631,
+633,638,841,957,1021,1069,1094,1108,1126,1140,1154,1160,1162,1167,1179,1184,
+1192,1194,1251,1265,1291,1323,1376,1385,1422,1454,1520,1525,1551,1584,1615,1653,
+1703,1728,1730,1759,1788,1822,1881,1905,1928,1943,1972,1992,1994,1996,1998,2000,
+2002,2004,2070,2085,2131,2177,2237,2262,2289,2322,2385,2393,2455,2494,2560,2610,
+2663,2694,2696,2739,2768,2794,2853,2873,2896,2911,2943,2963,2965,2967,2969,6433,
+6435,6444,6454,6456,6442,7161,7154,6564,6587,6600,6611,6626,7075,7087,7095,6823,
+7163,6566,6589,6602,6613,6628,6638,6665,6709,6735,6744,6760,6776,6786,6791,6804,
+6809,6818,6825,6830,6838,6849,6854,6856,6858,6860,6866,6893,6917,6946,6983,7015,
+7040,7056,7058,7073,7077,7089,7097,7099,7101,7111,7122,7133,7135,7159,6557,6559,
+7270,7168,7170,7172,7174,7176,7178,7180,7182,7184,7186,7188,7190,7192,7194,7196,
+7198,7200,7202,7204,7206,7208,7210,7212,7214,7216,7218,7220,7222,7224,7226,0,
+0,0,7228,7230,7232,7234,7236,7238,0,0,7240,7242,7244,7246,7248,7250,
+0,0,7252,7254,7256,7258,7260,7262,0,0,7264,7266,7268,0,0,0,
+2971,2973,2988,2990,2977,2975,6271,0,6427,6273,6278,6280,6285,6429,6431,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0};
+static const guint16 helperIndex [] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,1160,1164,1176,1181,0,
+0,1199,1256,1271,1305,1325,1382,1401,1433,1475,1522,1525,1566,1603,1626,1655,
+1722,0,1735,1767,1801,1824,1895,1910,1937,1945,1974,0,0,0,0,0,
+2002,2022,2076,2116,2156,2186,2259,2268,2298,2343,2387,2434,2476,2539,2583,2615,
+2688,0,2715,2747,2770,2796,2867,2875,2905,2913,2945,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,2979,0,0,0,0,0,0,0,
+0,0,0,0,2998,0,0,3000,0,0,0,0,0,0,0,0,
+0,0,3002,0,3014,3017,3024,3030,0,0,3033,0,0,0,0,3045,
+0,0,0,0,3048,3060,3069,0,3072,0,0,0,3075,0,0,0,
+0,0,3087,0,3099,3102,3105,3111,0,0,3114,0,0,0,0,3126,
+0,0,0,0,3131,3143,3152,0,3155,0,0,0,3158,0,0,0,
+0,0,3170,3182,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3194,3200,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,3210,3216,0,0,
+0,0,0,0,0,0,0,0,0,0,3222,3225,0,0,0,0,
+3228,3231,0,0,0,0,0,0,3234,3237,3240,3243,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3249,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3256,3271,0,0,0,0,0,0,0,0,0,0,0,0,0,3288,
+3303,0,0,0,0,0,0,3318,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,3321,3324,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,3329,3332,3335,3338,0,0,0,0,3341,3344,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,3421,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,3430,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3435,3437,0,0,0,0,0,0,3439,0,0,0,0,0,0,0,
+0,0,0,3442,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,3444,3446,0,3448,3450,3452,0,3454,0,3456,3458,
+3460,3462,0,0,0,3485,0,3497,0,3514,0,0,0,0,0,3535,
+0,3549,0,0,0,3556,0,0,0,3574,0,0,3591,3596,3598,3603,
+3605,3607,0,0,0,3639,0,3651,0,3671,0,0,0,0,0,3725,
+0,3741,0,0,0,3749,0,0,0,3777,3795,3804,3813,3815,3817,0,
+0,0,3822,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,3828,0,0,0,0,0,0,0,0,0,
+3831,0,0,3837,0,3840,3849,3855,3858,0,3870,0,0,0,3873,0,
+0,0,0,3876,0,0,0,3888,0,0,0,3891,0,3894,0,0,
+3897,0,0,3903,0,3906,3915,3921,3924,0,3936,0,0,0,3941,0,
+0,0,0,3944,0,0,0,3956,0,0,0,3959,0,3962,0,0,
+0,0,0,0,0,0,3965,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,3968,3971,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,3974,3977,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,3980,3983,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+4006,4020,4028,4033,4038,4041,4047,0,4050,4053,4059,4064,4072,0,4077,0,
+4080,4083,0,4088,4091,0,4097,4100,4105,4108,4119,0,0,0,0,0,
+0,0,4122,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,4203,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5137,0,5196,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,5262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,5286,0,0,5291,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,5294,5297,5300,0,0,0,0,5303,0,0,0,
+0,5306,5309,0,0,0,0,0,5312,0,0,5315,0,0,0,5318,
+5321,0,0,5324,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,5327,5330,0,0,0,0,0,0,0,0,0,0,0,0,5333,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,5336,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,5342,5345,0,0,0,0,5348,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,5351,0,0,0,0,
+0,0,5354,0,0,0,0,0,5357,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,5360,5363,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,5366,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,5375,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,5378,5384,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,5387,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5390,
+0,0,0,0,0,0,5393,0,0,0,5402,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,5405,5411,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,5414,0,0,5423,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5440,0,5443,0,0,0,0,0,0,0,0,0,5446,0,0,0,
+0,5449,0,0,0,0,5452,0,0,0,0,5455,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,5458,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5467,0,5470,0,0,0,0,0,0,0,0,0,5473,0,0,0,
+0,5476,0,0,0,0,5479,0,0,0,0,5482,0,0,0,0,
+0,0,5485,5491,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,5497,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,5795,5798,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,5801,5804,0,0,0,0,
+0,0,5807,5810,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5813,5819,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5825,5828,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5831,5834,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5837,5849,5861,5864,5867,5870,5873,5876,5879,5891,5903,5906,5909,5912,5915,5918,
+5921,5927,0,0,0,0,0,0,5933,5939,0,0,0,0,0,0,
+5945,5957,5969,5972,5975,5978,5981,5984,5987,5999,6011,6014,6017,6020,6023,6026,
+6029,6038,0,0,0,0,0,0,6047,6056,0,0,0,0,0,0,
+6065,6071,0,0,0,0,0,0,6077,6083,0,0,0,0,0,0,
+6089,6098,0,0,0,0,0,0,0,6107,0,0,0,0,0,0,
+6116,6128,6140,6143,6146,6149,6152,6155,6158,6170,6182,6185,6188,6191,6194,6197,
+6200,0,0,0,6203,0,0,0,0,0,0,0,6206,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,6209,0,0,0,0,0,0,0,0,6212,
+0,0,0,0,0,0,6221,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,6224,0,0,0,0,0,0,0,6227,0,
+0,0,6236,6238,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+6275,0,6282,0,6287,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+6290,0,6293,0,6296,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,6299,0,0,0,0,6302,0,0,6305,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,6312,0,6315,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,6337,0,0,0,
+0,0,0,6340,0,6343,0,0,6346,0,0,0,0,6349,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,6352,0,0,6355,6358,0,0,0,0,0,0,0,0,0,0,
+0,0,6361,6364,0,0,6367,6370,0,0,6373,6376,6379,6382,0,0,
+0,0,6385,6388,0,0,6391,6394,0,0,0,0,0,0,0,0,
+0,6397,6400,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,6403,0,0,0,0,0,6406,6409,0,6412,0,0,0,0,
+0,0,6415,6418,6421,6424,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,6446,6448,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,6476,0,0,0,0,6479,0,6482,0,6485,
+0,6488,0,6491,0,6494,0,6497,0,6500,0,6503,0,6506,0,6509,
+0,6512,0,0,6515,0,6518,0,6521,0,0,0,0,0,0,6524,
+0,0,6530,0,0,6536,0,0,6542,0,0,6548,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,6561,0,0,
+0,0,0,0,0,0,6604,0,0,0,0,6640,0,6667,0,6711,
+0,6737,0,6746,0,6762,0,6778,0,6788,0,6793,0,6806,0,6811,
+0,6820,0,0,6827,0,6832,0,6840,0,0,0,0,0,0,6868,
+0,0,6895,0,0,6919,0,0,6948,0,0,6985,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7137,
+7146,7151,7156,0,0,0,0,0,0,0,0,0,0,7165,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,7272,0,0,
+0,0,0,0,0,0,0,0,7274,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,7290,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,7294,0,0,0,0,0,0,0,0,0,
+0,0,7300,0,0,0,0,0,0,7304,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7312,0,0,0,7316,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7324,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7330,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7336,0,0,0,0,0,7338,0,0,0,0,7340,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7342,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7344,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7346,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7348,0,0,0,0,0,
+0,0,0,0,0,0,0,7350,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7356,0,0,0,0,7358,0,0,0,0,0,0,0,7360,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7364,7366,0,0,0,7370,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7382,0,7384,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7386,0,0,7388,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7390,0,7392,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7400,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7402,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7404,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7406,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7408,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7410,0,0,0,0,
+0,0,0,7412,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7416,0,7418,0,0,0,0,0,0,
+0,0,7420,0,0,0,0,0,0,0,0,0,0,0,7422,0,
+0,0,0,0,7424,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7426,0,0,0,0,7430,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7434,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7442,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,7450,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7460,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7466,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7472,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7478,
+0,0,0,0,0,0,0,0,0,0,0,0,0,7480,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7482,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,7484,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7486,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7488,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7490,0,0,0,7492,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7494,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7496,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,7498,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7500,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7506,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7512,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7514,0,0,0,7516,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7518,0,0,0,0,0,0,0,
+0,0,0,7520,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7522,0,0,0,0,0,0,7524,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7543,0,0,0,7545,0,0,0,0,0,0,0,
+0,7547,0,0,7549,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7551,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7553,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7555,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7563,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7567,0,0,0,0,0,0,7569,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7579,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7581,0,7583,7585,0,0,0,0,0,0,0,0,7587,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7591,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7593,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7595,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7612,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,7618,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7620,7622,0,0,0,0,0,
+0,0,7624,7626,0,0,0,0,0,7628,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7630,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7636,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7646,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7650,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7652,0,0,0,7654,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7658,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7660,0,0,0,0,0,0,0,0,0,7662,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7664,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7666,0,0,0,0,0,0,0,
+0,7668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7670,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7672,0,0,0,0,0,0,0,0,0,7674,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7676,0,0,0,0,0,0,0,7678,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7680,0,
+7682,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7684,0,0,0,7686,0,0,0,0,0,0,0,0,0,
+7688,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7692,0,
+0,0,0,0,7694,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7700,0,0,0,0,0,7702,
+0,0,0,7704,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7706,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7708,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7710,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7712,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7714,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7716,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7718,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7720,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7726,
+0,0,0,0,0,0,7728,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7730,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7736,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7742,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7746,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7753,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7758,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7760,0,0,0,0,0,0,0,
+0,7762,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7764,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,7766,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7770,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7776,0,0,0,7778,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7782,0,
+0,0,0,0,0,0,7784,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7786,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7788,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7790,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7792,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,7801,0,0,0,7803,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7805,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7807,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7809,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7811,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,7813,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7821,0,7823,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7825,0,
+0,0,0,0,0,0,0,0,0,0,7829,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7845,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7847,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7849,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7853,0,0,7855,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,7857,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7859,0,0,0,0,0,
+0,0,0,0,0,0,0,7861,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7863,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7865,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7867,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7869,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7871,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7873,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7875,0,0,0,0,
+0,7877,0,0,0,0,0,0,0,0,0,7879,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7881,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7883,7885,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7887,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7889,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7891,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7895,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7897,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7899,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7901,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7903,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7905,0,
+7907,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7909,0,0,0,0,0,0,0,0,0,0,7911,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7915,0,0,0,0,
+0,0,0,0,0,7917,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7931,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7937,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7939,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7941,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7943,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,7945,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7949,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7953,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,7955,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,7957,0,0,7959,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7961,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7963,0,0,0,0,0,0,
+0,7965,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7967,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,7969,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,7975,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7989,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7991,0,0,0,0,0,0,
+0,0,0,0,0,7993,0,0,0,0,0,0,0,0,0,0,
+7995,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8001,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8003,0,8005,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8007,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,8009,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8019,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8021,0,0,0,0,
+0,0,0,0,0,0,0,8025,0,0,0,0,0,0,0,0,
+0,0,0,0,8029,0,0,0,0,0,0,0,0,0,0,0,
+0,8031,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8033,0,0,0,0,0,0,0,0,0,8035,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,8037,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8045,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8047,0,0,0,
+0,8049,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8051,0,8053,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8055,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8057,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8061,0,8063,0,
+0,0,0,0,0,0,0,0,8065,8067,0,0,0,0,0,0,
+8069,0,0,0,0,0,8071,0,0,0,0,0,0,8073,8075,0,
+0,0,0,0,0,8077,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8079,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8081,8083,8085,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8087,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8093,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8097,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8099,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,8103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,8105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8107,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8115,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8121,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8123,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8125,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8127,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,8129,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8135,0,0,0,0,0,0,0,0,0,0,0,0,8137,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8139,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8143,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,8145,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,8147,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,8149,0,0,0,0,0,0,0,0,
+0,8151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8155,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8159,0,0,0,0,0,0,8161,0,0,0,0,0,0,
+0,0,0,0,0,8163,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8167,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8169,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,8171,0,0,0,8173,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8181,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8183,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8185,0,
+0,0,0,0,0,0,0,0,0,0,0,8191,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8193,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8197,0,0,0,0,8201,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8215,
+0,0,0,0,0,0,0,0,0,8221,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,8223,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8225,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8227,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,8229,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8231,
+0,8233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8235,0,0,
+0,0,0,0,0,0,0,0,0,8237,0,0,0,0,0,0,
+0,0,0,0,0,0,0,8239,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8241,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8243,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8245,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8247,0,0,0,0,0,
+0,0,0,0,0,0,8249,0,0,0,0,0,0,0,0,0,
+0,0,8251,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8253,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8255,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8259,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,8263,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8265,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8267,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8271,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8275,0,0,0,0,0,0,0,0,0,0,0,0,8277,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,8279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8281,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,8285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,8287,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8291,0,0,0,0,8293,0,0,0,0,
+0,0,0,0,0,0,8295,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8301,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8303,
+0,0,0,0,0,0,0,0,0,0,0,8305,0,0,0,0,
+0,0,8307,0,0,0,8309,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8311,0,0,
+0,0,0,0,0,0,0,0,8313,0,0,0,0,0,8315,0,
+0,8317,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,8319,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8321,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8323,0,0,0,0,0,0,0,0,0,8325,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8331,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8341,0,0,0,0,0,8345,0,0,0,0,0,0,0,
+0,0,0,8347,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8349,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8357,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8361,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8363,0,0,0,8365,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8367,0,0,8369,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8371,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+8375,0,0,0,0,0,8379,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,8381,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8383,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8387,0,0,0,0,0,0,0,0,0,8389,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8391,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8395,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8397,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8401,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,8403,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,8405,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8409,0,0,8411,
+0,8413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,8415,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8417,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,8419,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8421,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8427,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8431,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8433,0,8435,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,8437,0,0,8439,0,0,0,8441,0,0,0,
+0,0,0,0,0,0,8443,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,8445,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8449,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8453,8455,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8459,8461,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8463,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8465,0,0,0,0,0,0,0,
+0,0,0,0,0,0,8469,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8479,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8485,
+0,0,0,0,0,0,0,0,0,0,0,8491,0,0,0,0,
+0,0,0,0,0,0,0,0,8493,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,8495,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8497,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8505,
+0,0,0,0,0,0,0,0,0,0,0,0,8507,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,8509,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,8517,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8519,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,8527,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8539,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,8541,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,8545,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,8547,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8549,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8553,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,8555,0,0,0,0,0,0,0,8557,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,8567,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,8583,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8589,8591,0,
+0,0,0,0,0,0,0,0,0,0,0,0,8593,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,8601,0,0,0,0,0,0,
+0};
+static const guint16 mapIdxToComposite [] = {
+0,0,0,0,0,0,0,0,894,0,0,0,8814,0,0,0,
+0,0,0,0,0,0,0,0,8800,0,0,0,0,8815,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,
+0,0,193,0,0,194,0,0,195,0,0,256,0,0,258,0,
+0,550,0,0,196,0,0,7842,0,0,197,0,0,461,0,0,
+512,0,0,514,0,0,7840,0,0,7680,0,0,260,0,0,0,
+0,0,0,0,0,0,0,0,7682,0,0,7684,0,0,7686,0,
+0,0,0,0,0,0,0,262,0,0,264,0,0,266,0,0,
+268,0,0,199,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7690,0,0,270,0,0,7692,
+0,0,7696,0,0,7698,0,0,7694,0,0,0,0,200,0,0,
+201,0,0,202,0,0,7868,0,0,274,0,0,276,0,0,278,
+0,0,203,0,0,7866,0,0,282,0,0,516,0,0,518,0,
+0,7864,0,0,552,0,0,280,0,0,7704,0,0,7706,0,0,
+0,0,0,0,0,0,7710,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,500,0,0,284,0,0,7712,
+0,0,286,0,0,288,0,0,486,0,0,290,0,0,0,0,
+0,0,0,0,0,0,0,0,0,292,0,0,7714,0,0,7718,
+0,0,542,0,0,7716,0,0,7720,0,0,7722,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,204,0,0,205,0,0,206,0,0,296,0,0,298,
+0,0,300,0,0,304,0,0,207,0,0,7880,0,0,463,0,
+0,520,0,0,522,0,0,7882,0,0,302,0,0,7724,0,0,
+0,0,308,0,0,8490,0,0,0,0,0,0,0,0,0,0,
+7728,0,0,488,0,0,7730,0,0,310,0,0,7732,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,
+0,317,0,0,7734,0,0,315,0,0,7740,0,0,7738,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7742,0,0,7744,0,0,7746,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,504,0,0,323,0,0,
+209,0,0,7748,0,0,327,0,0,7750,0,0,325,0,0,7754,
+0,0,7752,0,0,0,0,210,0,0,211,0,0,212,0,0,
+213,0,0,332,0,0,334,0,0,558,0,0,214,0,0,7886,
+0,0,336,0,0,465,0,0,524,0,0,526,0,0,416,0,
+0,7884,0,0,490,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,7764,0,0,7766,0,0,
+0,0,0,0,0,0,0,340,0,0,7768,0,0,344,0,0,
+528,0,0,530,0,0,7770,0,0,342,0,0,7774,0,0,0,
+0,0,0,0,0,0,0,346,0,0,348,0,0,7776,0,0,
+352,0,0,7778,0,0,536,0,0,350,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,7786,0,0,356,0,0,7788,
+0,0,538,0,0,354,0,0,7792,0,0,7790,0,0,0,0,
+217,0,0,218,0,0,219,0,0,360,0,0,362,0,0,364,
+0,0,220,0,0,7910,0,0,366,0,0,368,0,0,467,0,
+0,532,0,0,534,0,0,431,0,0,7908,0,0,7794,0,0,
+370,0,0,7798,0,0,7796,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7804,0,0,7806,0,0,0,0,0,
+0,0,0,0,0,0,7808,0,0,7810,0,0,372,0,0,7814,
+0,0,7812,0,0,7816,0,0,0,0,0,0,0,0,0,0,
+0,7818,0,0,7820,0,0,0,0,7922,0,0,221,0,0,374,
+0,0,7928,0,0,562,0,0,7822,0,0,376,0,0,7926,0,
+0,7924,0,0,0,0,377,0,0,7824,0,0,379,0,0,381,
+0,0,7826,0,0,7828,0,0,0,0,0,0,0,0,0,0,
+0,0,8175,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,224,0,0,225,0,0,226,0,0,227,
+0,0,257,0,0,259,0,0,551,0,0,228,0,0,7843,0,
+0,229,0,0,462,0,0,513,0,0,515,0,0,7841,0,0,
+7681,0,0,261,0,0,0,0,0,0,0,0,7683,0,0,7685,
+0,0,7687,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,263,0,0,265,0,0,267,0,0,269,0,0,
+231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7691,0,0,271,
+0,0,7693,0,0,7697,0,0,7699,0,0,7695,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,232,0,0,233,0,0,
+234,0,0,7869,0,0,275,0,0,277,0,0,279,0,0,235,
+0,0,7867,0,0,283,0,0,517,0,0,519,0,0,7865,0,
+0,553,0,0,281,0,0,7705,0,0,7707,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7711,0,0,0,0,0,0,0,0,501,0,0,285,
+0,0,7713,0,0,287,0,0,289,0,0,487,0,0,291,0,
+0,0,0,0,0,0,0,0,0,0,293,0,0,7715,0,0,
+7719,0,0,543,0,0,7717,0,0,7721,0,0,7723,0,0,7830,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,236,0,0,237,0,0,238,0,0,
+297,0,0,299,0,0,301,0,0,239,0,0,7881,0,0,464,
+0,0,521,0,0,523,0,0,7883,0,0,303,0,0,7725,0,
+0,0,0,309,0,0,496,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,7729,0,0,489,0,0,7731,0,0,311,0,0,7733,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,314,0,0,318,
+0,0,7735,0,0,316,0,0,7741,0,0,7739,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,7743,0,0,7745,0,
+0,7747,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,505,0,0,324,0,0,241,0,0,
+7749,0,0,328,0,0,7751,0,0,326,0,0,7755,0,0,7753,
+0,0,0,0,0,0,0,242,0,0,243,0,0,244,0,0,
+245,0,0,333,0,0,335,0,0,559,0,0,246,0,0,7887,
+0,0,337,0,0,466,0,0,525,0,0,527,0,0,417,0,
+0,7885,0,0,491,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+7765,0,0,7767,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,341,0,0,7769,0,
+0,345,0,0,529,0,0,531,0,0,7771,0,0,343,0,0,
+7775,0,0,0,0,0,0,0,0,0,0,347,0,0,349,0,
+0,7777,0,0,353,0,0,7779,0,0,537,0,0,351,0,0,
+0,0,7787,0,0,7831,0,0,357,0,0,7789,0,0,539,0,
+0,355,0,0,7793,0,0,7791,0,0,0,0,249,0,0,250,
+0,0,251,0,0,361,0,0,363,0,0,365,0,0,252,0,
+0,7911,0,0,367,0,0,369,0,0,468,0,0,533,0,0,
+535,0,0,432,0,0,7909,0,0,7795,0,0,371,0,0,7799,
+0,0,7797,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7805,0,0,7807,0,0,0,0,7809,0,0,7811,0,
+0,373,0,0,7815,0,0,7813,0,0,7832,0,0,7817,0,0,
+0,0,0,0,0,0,0,0,0,7819,0,0,7821,0,0,0,
+0,7923,0,0,253,0,0,375,0,0,7929,0,0,563,0,0,
+7823,0,0,255,0,0,7927,0,0,7833,0,0,7925,0,0,0,
+0,378,0,0,7825,0,0,380,0,0,382,0,0,7827,0,0,
+7829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,8173,0,0,901,0,0,8129,0,0,0,0,0,0,
+0,0,0,0,0,0,8189,0,903,0,7846,0,0,7844,0,0,
+7850,0,0,7848,0,0,478,0,0,8491,0,506,0,0,0,0,
+508,0,0,482,0,0,7688,0,0,7872,0,0,7870,0,0,7876,
+0,0,7874,0,0,7726,0,0,7890,0,0,7888,0,0,7894,0,
+0,7892,0,0,7756,0,0,556,0,0,7758,0,0,554,0,0,
+510,0,0,475,0,0,471,0,0,469,0,0,473,0,0,7847,
+0,0,7845,0,0,7851,0,0,7849,0,0,479,0,0,507,0,
+0,509,0,0,483,0,0,7689,0,0,7873,0,0,7871,0,0,
+7877,0,0,7875,0,0,7727,0,0,0,0,7891,0,0,7889,0,
+0,7895,0,0,7893,0,0,7757,0,0,557,0,0,7759,0,0,
+555,0,0,511,0,0,476,0,0,472,0,0,470,0,0,474,
+0,0,7856,0,0,7854,0,0,7860,0,0,7858,0,0,7857,0,
+0,7855,0,0,7861,0,0,7859,0,0,7700,0,0,7702,0,0,
+7701,0,0,7703,0,0,0,0,0,0,7760,0,0,7762,0,0,
+7761,0,0,7763,0,0,7780,0,0,7781,0,0,7782,0,0,7783,
+0,0,7800,0,0,7801,0,0,7802,0,0,7803,0,0,0,0,
+0,7835,0,0,0,0,0,0,7900,0,0,7898,0,0,7904,0,
+0,7902,0,0,7906,0,0,7901,0,0,7899,0,0,7905,0,0,
+7903,0,0,7907,0,0,0,0,7914,0,0,7912,0,0,7918,0,
+0,7916,0,0,7920,0,0,7915,0,0,7913,0,0,7919,0,0,
+7917,0,0,7921,0,0,494,0,0,492,0,0,493,0,0,0,
+0,480,0,0,481,0,0,7708,0,0,7709,0,0,560,0,0,
+561,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,495,0,0,
+0,0,0,0,0,0,884,0,0,0,0,832,0,833,0,836,
+0,0,835,0,8174,0,8123,0,8137,0,8139,0,8155,0,8185,0,
+8171,0,8187,0,8147,0,8122,0,0,902,0,0,8121,0,0,8120,
+0,0,7944,0,0,7945,0,0,8124,0,0,0,0,8136,0,0,
+904,0,0,7960,0,0,7961,0,0,8138,0,0,905,0,0,7976,
+0,0,7977,0,0,8140,0,0,0,0,8154,0,0,906,0,0,
+8153,0,0,8152,0,0,938,0,0,7992,0,0,7993,0,0,8184,
+0,0,908,0,0,8008,0,0,8009,0,0,0,0,8172,0,0,
+0,0,0,0,8170,0,0,910,0,0,8169,0,0,8168,0,0,
+939,0,0,8025,0,0,8486,0,8186,0,0,911,0,0,8040,0,
+0,8041,0,0,8188,0,0,8049,0,8116,0,0,8051,0,8053,0,
+8132,0,0,8055,0,8163,0,8048,0,0,940,0,0,8113,0,0,
+8112,0,0,7936,0,0,7937,0,0,8118,0,0,8115,0,0,0,
+0,0,0,0,0,0,0,8050,0,0,941,0,0,7952,0,0,
+7953,0,0,8052,0,0,942,0,0,7968,0,0,7969,0,0,8134,
+0,0,8131,0,0,0,0,8126,0,8054,0,0,943,0,0,8145,
+0,0,8144,0,0,970,0,0,7984,0,0,7985,0,0,8150,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,8056,0,0,
+972,0,0,8000,0,0,8001,0,0,0,0,0,0,8164,0,0,
+8165,0,0,0,0,8058,0,0,973,0,0,8161,0,0,8160,0,
+0,971,0,0,8016,0,0,8017,0,0,8166,0,0,0,0,0,
+0,8060,0,0,974,0,0,8032,0,0,8033,0,0,8182,0,0,
+8179,0,0,8146,0,0,912,0,0,8151,0,0,8162,0,0,944,
+0,0,8167,0,0,8057,0,8059,0,8061,0,8180,0,0,979,0,
+0,980,0,0,1031,0,0,1232,0,0,1234,0,0,1027,0,0,
+1024,0,0,1238,0,0,1025,0,0,1217,0,0,1244,0,0,1246,
+0,0,1037,0,0,1250,0,0,1049,0,0,1252,0,0,1036,0,
+0,1254,0,0,1262,0,0,1038,0,0,1264,0,0,1266,0,0,
+1268,0,0,1272,0,0,1260,0,0,1233,0,0,1235,0,0,1107,
+0,0,1104,0,0,1239,0,0,1105,0,0,1218,0,0,1245,0,
+0,1247,0,0,1117,0,0,1251,0,0,1081,0,0,1253,0,0,
+1116,0,0,0,0,1255,0,0,1263,0,0,1118,0,0,1265,0,
+0,1267,0,0,1269,0,0,1273,0,0,1261,0,0,1111,0,0,
+1142,0,0,1143,0,0,1242,0,0,1243,0,0,1258,0,0,1259,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,64302,0,0,64303,0,0,64304,0,0,0,
+0,0,0,0,64305,0,0,64332,0,0,0,0,64306,0,0,0,
+0,64307,0,0,0,0,64308,0,0,64331,0,0,64309,0,0,64310,
+0,0,64312,0,0,64285,0,0,64313,0,0,64314,0,0,0,0,
+64315,0,0,64333,0,0,0,0,64316,0,0,0,0,64318,0,0,
+64320,0,0,64321,0,0,0,0,64323,0,0,64324,0,0,64334,0,
+0,64326,0,0,64327,0,0,0,0,64328,0,0,64329,0,0,64298,
+0,0,64299,0,0,0,0,64330,0,0,64287,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,1570,0,0,1571,0,
+0,1573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,1572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,1574,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,1730,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,1747,0,0,0,0,1728,0,0,2392,0,
+0,2393,0,0,2394,0,0,2395,0,0,2396,0,0,2397,0,0,
+2345,0,0,2398,0,0,2399,0,0,2353,0,0,2356,0,0,2524,
+0,0,2525,0,0,2527,0,0,2507,0,0,2508,0,0,2649,0,
+0,2650,0,0,2651,0,0,2654,0,0,2611,0,0,2614,0,0,
+2908,0,0,2909,0,0,2891,0,0,2888,0,0,2892,0,0,2964,
+0,0,3018,0,0,3020,0,0,3019,0,0,3144,0,0,3264,0,
+0,3274,0,0,3271,0,0,3272,0,0,3275,0,0,3402,0,0,
+3404,0,0,3403,0,0,3546,0,0,3548,0,0,3550,0,0,3549,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+3945,0,0,3907,0,0,3917,0,0,3922,0,0,3927,0,0,3932,
+0,0,3955,0,0,3957,0,0,3969,0,0,4025,0,0,3987,0,
+0,3997,0,0,4002,0,0,4007,0,0,4012,0,0,3958,0,0,
+0,0,0,3960,0,0,0,0,0,4134,0,0,0,0,0,0,
+0,0,6918,0,0,6920,0,0,6922,0,0,6924,0,0,6926,0,
+0,6930,0,0,6971,0,0,6973,0,0,6976,0,0,6977,0,0,
+6979,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,7736,0,0,7737,0,0,7772,0,0,7773,0,0,7784,
+0,0,7785,0,0,7852,0,0,7862,0,0,7853,0,0,7863,0,
+0,7878,0,0,7879,0,0,7896,0,0,7897,0,0,7938,0,0,
+7940,0,0,7942,0,0,8064,0,0,7939,0,0,7941,0,0,7943,
+0,0,8065,0,0,8066,0,0,8067,0,0,8068,0,0,8069,0,
+0,8070,0,0,8071,0,0,7946,0,0,7948,0,0,7950,0,0,
+8072,0,0,7947,0,0,7949,0,0,7951,0,0,8073,0,0,8074,
+0,0,8075,0,0,8076,0,0,8077,0,0,8078,0,0,8079,0,
+0,7954,0,0,7956,0,0,7955,0,0,7957,0,0,7962,0,0,
+7964,0,0,7963,0,0,7965,0,0,7970,0,0,7972,0,0,7974,
+0,0,8080,0,0,7971,0,0,7973,0,0,7975,0,0,8081,0,
+0,8082,0,0,8083,0,0,8084,0,0,8085,0,0,8086,0,0,
+8087,0,0,7978,0,0,7980,0,0,7982,0,0,8088,0,0,7979,
+0,0,7981,0,0,7983,0,0,8089,0,0,8090,0,0,8091,0,
+0,8092,0,0,8093,0,0,8094,0,0,8095,0,0,7986,0,0,
+7988,0,0,7990,0,0,7987,0,0,7989,0,0,7991,0,0,7994,
+0,0,7996,0,0,7998,0,0,7995,0,0,7997,0,0,7999,0,
+0,8002,0,0,8004,0,0,8003,0,0,8005,0,0,8010,0,0,
+8012,0,0,8011,0,0,8013,0,0,8018,0,0,8020,0,0,8022,
+0,0,8019,0,0,8021,0,0,8023,0,0,8027,0,0,8029,0,
+0,8031,0,0,8034,0,0,8036,0,0,8038,0,0,8096,0,0,
+8035,0,0,8037,0,0,8039,0,0,8097,0,0,8098,0,0,8099,
+0,0,8100,0,0,8101,0,0,8102,0,0,8103,0,0,8042,0,
+0,8044,0,0,8046,0,0,8104,0,0,8043,0,0,8045,0,0,
+8047,0,0,8105,0,0,8106,0,0,8107,0,0,8108,0,0,8109,
+0,0,8110,0,0,8111,0,0,8114,0,0,8130,0,0,8178,0,
+0,8119,0,0,8141,0,0,8142,0,0,8143,0,0,8135,0,0,
+8183,0,0,8157,0,0,8158,0,0,8159,0,0,8192,0,8193,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,8602,0,0,0,0,0,0,8603,0,0,0,0,8622,
+0,0,8653,0,0,8655,0,0,8654,0,0,8708,0,0,8713,0,
+0,8716,0,0,0,0,0,0,8740,0,0,8742,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,8769,0,0,8772,0,0,8775,0,0,8777,0,0,8813,0,0,
+8802,0,0,8816,0,0,8817,0,0,8820,0,0,8821,0,0,8824,
+0,0,8825,0,0,8832,0,0,8833,0,0,8928,0,0,8929,0,
+0,8836,0,0,8837,0,0,8840,0,0,8841,0,0,8930,0,0,
+8931,0,0,8876,0,0,8877,0,0,8878,0,0,8879,0,0,8938,
+0,0,8939,0,0,8940,0,0,8941,0,0,0,0,0,0,0,
+0,0,0,0,0,10972,0,0,0,0,0,0,0,0,9001,0,
+9002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,12436,0,0,12364,
+0,0,12366,0,0,12368,0,0,12370,0,0,12372,0,0,12374,0,
+0,12376,0,0,12378,0,0,12380,0,0,12382,0,0,12384,0,0,
+12386,0,0,12389,0,0,12391,0,0,12393,0,0,12400,0,0,12401,
+0,0,12403,0,0,12404,0,0,12406,0,0,12407,0,0,12409,0,
+0,12410,0,0,12412,0,0,12413,0,0,0,0,0,0,0,0,
+0,12446,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,12532,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+12460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,12462,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,12464,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,12466,0,0,0,0,0,0,0,0,12468,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,12470,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,12472,0,0,0,0,0,
+0,0,0,0,12474,0,0,0,0,12476,0,0,0,0,0,0,
+0,0,0,0,0,0,12478,0,0,0,0,12480,0,0,0,0,
+0,0,0,0,12482,0,0,0,0,0,0,12485,0,0,0,0,
+12487,0,0,0,0,0,0,0,12489,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,12496,0,0,12497,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12499,
+0,0,12500,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,12502,0,0,12503,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,12505,0,0,12506,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,12508,0,0,12509,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,12535,0,0,0,0,0,0,0,0,12536,0,0,0,0,12537,
+0,0,0,0,12538,0,0,0,0,0,0,0,0,12542,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,64210,0,64211,0,64212,0,0,0,
+0,0,0,0,0,0,0,0,0,0,63847,0,0,0,64112,0,
+0,0,0,0,63749,0,0,0,63838,0,0,0,0,0,0,0,
+63771,0,0,0,63930,0,0,0,0,0,0,0,63863,0,0,0,
+63997,0,63912,0,0,0,0,0,64115,0,63789,0,63925,0,64048,0,
+63845,0,63956,0,63931,0,64049,0,0,0,0,0,64012,0,64116,0,
+64050,0,0,0,64114,0,63864,0,0,0,63953,0,64117,0,0,0,
+0,0,0,0,0,0,64113,0,63790,0,63865,0,63829,0,63828,0,
+64021,0,0,0,0,0,0,0,64000,0,63900,0,63965,0,63999,0,
+63943,0,63882,0,63901,0,0,0,64118,0,64051,0,63826,0,63791,0,
+64052,0,63871,0,0,0,64119,0,0,0,63843,0,0,0,0,0,
+0,0,63979,0,0,0,0,0,0,0,64053,0,0,0,0,0,
+0,0,0,0,63772,0,0,0,0,0,63851,0,0,0,0,0,
+63750,0,0,0,0,0,63966,0,63981,0,63872,0,63902,0,64121,0,
+63755,0,64122,0,64054,0,64013,0,64123,0,64055,0,64056,0,0,0,
+0,0,63913,0,0,0,0,0,64057,0,64124,0,63852,0,64058,0,
+64125,0,63818,0,63810,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,64126,0,63756,0,63753,0,64127,0,63873,
+0,64128,0,64129,0,0,0,0,0,0,0,64004,0,0,0,63914,
+0,63932,0,0,0,0,0,0,0,0,0,63933,0,63819,0,64059,
+0,63967,0,64060,0,0,0,63957,0,63777,0,63915,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,63886,0,0,0,
+0,0,64001,0,63906,0,63784,0,64130,0,64011,0,64131,0,63874,0,
+0,0,0,0,63811,0,0,0,0,0,0,0,0,0,64132,0,
+0,0,63960,0,63846,0,64133,0,0,0,63907,0,63840,0,63916,0,
+64061,0,64134,0,63929,0,64136,0,63961,0,64135,0,64138,0,64062,0,
+64063,0,63887,0,64139,0,63757,0,63888,0,0,0,63954,0,64140,0,
+0,0,0,0,63781,0,63835,0,64002,0,63859,0,63908,0,63861,0,
+64141,0,64142,0,64143,0,63889,0,63792,0,0,0,0,0,64065,0,
+64144,0,63849,0,0,0,0,0,63934,0,0,0,0,0,63875,0,
+0,0,64066,0,0,0,0,0,0,63968,0,0,0,0,64018,0,
+63941,0,64067,0,64006,0,63883,0,0,0,63745,0,0,0,0,0,
+64146,0,64147,0,0,0,63969,0,64148,0,63944,0,63988,0,63945,0,
+63962,0,0,0,0,0,0,0,0,63866,0,64068,0,63970,0,63764,
+0,63820,0,63793,0,63773,0,0,0,0,0,0,0,63884,0,64149,
+0,63909,0,0,0,64150,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,63858,0,63848,0,63971,0,0,0,63765,0,64005,
+0,64151,0,63786,0,64069,0,63989,0,63821,0,63958,0,64070,0,63947,
+0,63980,0,64153,0,63748,0,64152,0,63822,0,64071,0,63890,0,63778,
+0,63876,0,64155,0,0,0,63995,0,63903,0,63766,0,63891,0,64072,
+0,63936,0,63982,0,63794,0,63774,0,0,0,64073,0,64158,0,0,
+0,0,0,0,0,0,0,0,0,0,0,63814,0,0,0,0,
+0,64159,0,63994,0,63787,0,64022,0,63911,0,0,0,63963,0,0,
+0,63917,0,63767,0,63972,0,63948,0,64074,0,63918,0,64161,0,63892,
+0,63983,0,0,0,0,0,64162,0,0,0,0,0,0,0,0,
+0,0,0,0,0,64163,0,63949,0,63862,0,63842,0,0,0,0,
+0,63973,0,64164,0,64165,0,63937,0,63758,0,0,0,0,0,0,
+0,0,0,64166,0,64167,0,0,0,63795,0,0,0,64168,0,63853,
+0,64170,0,64169,0,64157,0,0,0,0,0,0,0,63950,0,63803,
+0,64075,0,63815,0,64171,0,63844,0,63877,0,0,0,64024,0,64076,
+0,64078,0,64077,0,64079,0,64080,0,64081,0,64025,0,64026,0,63804,
+0,64082,0,64083,0,64027,0,63926,0,0,0,0,0,63893,0,0,
+0,63830,0,64084,0,0,0,64085,0,64172,0,63991,0,0,0,63992,
+0,64086,0,63910,0,63812,0,0,0,64174,0,63993,0,64029,0,64003,
+0,63867,0,0,0,63951,0,63850,0,63823,0,64175,0,63805,0,63831,
+0,64087,0,64088,0,63824,0,64089,0,0,0,64177,0,0,0,64090,
+0,63974,0,63759,0,0,0,63919,0,64030,0,63796,0,64178,0,0,
+0,0,0,0,0,63920,0,63895,0,63813,0,0,0,0,0,63827,
+0,63782,0,0,0,63990,0,0,0,64092,0,0,0,0,0,0,
+0,0,0,0,0,0,0,63868,0,0,0,0,0,64093,0,63860,
+0,63998,0,64179,0,63806,0,64180,0,63832,0,63768,0,63854,0,64095,
+0,63897,0,63938,0,63779,0,63984,0,63797,0,64032,0,63775,0,63760,
+0,0,0,63798,0,0,0,64181,0,63761,0,63783,0,0,0,64008,
+0,0,0,63904,0,63975,0,63976,0,63762,0,64096,0,64182,0,63780,
+0,0,0,64183,0,64010,0,64097,0,0,0,0,0,63905,0,64185,
+0,64187,0,63869,0,63809,0,64190,0,64034,0,64189,0,64188,0,64099,
+0,63996,0,63834,0,64192,0,0,0,0,0,63744,0,0,0,0,
+0,0,0,0,0,63816,0,0,0,63747,0,64100,0,64101,0,0,
+0,0,0,0,0,63799,0,0,0,63746,0,63896,0,63959,0,64194,
+0,64007,0,63885,0,0,0,63857,0,0,0,64102,0,63898,0,64037,
+0,0,0,64195,0,63939,0,63763,0,0,0,63788,0,64038,0,0,
+0,63769,0,64196,0,63927,0,0,0,63977,0,63870,0,63754,0,63921,
+0,64197,0,63807,0,63899,0,0,0,0,0,63878,0,0,0,63942,
+0,63825,0,64009,0,63833,0,63955,0,64198,0,63964,0,63985,0,0,
+0,63928,0,0,0,63978,0,64199,0,0,0,63922,0,63817,0,63800,
+0,63923,0,0,0,64028,0,0,0,0,0,0,0,0,0,64201,
+0,0,0,0,0,64202,0,0,0,0,0,64203,0,63924,0,64204,
+0,63952,0,0,0,0,0,0,0,64042,0,64043,0,64044,0,0,
+0,0,0,0,0,63770,0,63879,0,0,0,0,0,0,0,64205,
+0,0,0,0,0,0,0,0,0,0,0,63801,0,63986,0,0,
+0,64045,0,63802,0,63776,0,0,0,63808,0,63880,0,63987,0,0,
+0,0,0,0,0,0,0,63881,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,64216,0,0,0,0,0,63940,0,64217,
+0,63752,0,0,0,0,0,0,0,64300,0,0,64301,0,0,64208,
+0,64207,0,64209,0,64213,0,64214,0,64215,0,0,0,0,0,0,
+0};
+static const guint8 combiningClass [] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,
+230,230,230,230,230,232,220,220,220,220,232,216,220,220,220,220,
+220,202,202,220,220,220,220,202,202,220,220,220,220,220,220,220,
+220,220,220,220,1,1,1,1,1,220,220,220,220,230,230,230,
+230,230,230,230,230,240,230,220,220,220,230,230,230,220,220,0,
+230,230,230,220,220,220,220,230,232,220,220,230,233,234,234,233,
+0,0,0,230,230,230,230,230,0,0,0,0,0,0,0,0,
+0,220,230,230,230,230,220,230,230,230,222,220,230,230,230,230,
+230,230,220,220,220,220,220,220,230,230,220,230,230,222,228,230,
+10,11,12,13,14,15,16,17,18,19,19,20,21,22,0,23,
+0,24,25,0,230,220,0,18,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+230,230,230,230,230,230,230,230,30,31,32,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,27,28,29,30,31,
+32,33,34,230,230,220,220,230,230,230,230,230,220,230,230,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,230,230,230,230,230,230,230,0,0,230,
+230,230,230,220,230,0,0,230,230,0,220,230,230,220,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+230,220,230,230,220,230,230,220,220,220,230,220,220,230,220,230,
+230,230,220,230,220,230,220,230,220,230,230,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,230,220,230,230,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,84,91,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,
+0,0,0,0,0,0,0,0,103,103,9,0,0,0,0,0,
+0,0,0,0,0,0,0,0,107,107,107,107,0,0,0,0,
+0,0,0,0,0,0,0,0,118,118,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,122,122,122,122,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,220,220,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,220,0,220,0,216,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,129,130,0,132,0,0,0,0,0,130,130,130,130,0,0,
+130,0,230,230,9,0,230,230,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,220,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,7,0,9,9,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,
+0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,
+0,0,9,0,0,0,0,0,0,0,0,0,0,230,0,0,
+0,0,0,0,0,0,0,0,0,228,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,222,230,220,0,0,0,0,
+0,0,0,0,0,0,0,230,220,0,0,0,0,0,0,0,
+230,230,220,230,230,230,230,230,230,230,220,230,230,234,214,220,
+230,230,1,1,230,230,230,230,1,1,1,230,230,0,0,0,
+0,230,0,0,0,1,1,230,220,230,1,1,220,220,220,220,
+0,0,0,0,0,0,0,0,0,0,218,228,232,222,224,224,
+0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,
+0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,
+230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0,
+0};
--- mono-4.6.2.7+dfsg.orig/mono/mini/Makefile.am
+++ mono-4.6.2.7+dfsg/mono/mini/Makefile.am
@@ -189,7 +189,7 @@ buildver-boehm.h: libmini-static.la $(mo
 else
 buildver-boehm.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntime-static.la
 endif
-	@echo "const char *build_date = \"`date`\";" > buildver-boehm.h
+	@echo "const char *build_date;" > buildver-boehm.h
 mono_boehm-main.$(OBJEXT): buildver-boehm.h
 endif
 
@@ -198,7 +198,7 @@ buildver-sgen.h: libmini-static.la $(mon
 else
 buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen-static.la $(monodir)/mono/sgen/libmonosgen-static.la
 endif
-	@echo "const char *build_date = \"`date`\";" > buildver-sgen.h
+	@echo "const char *build_date;" > buildver-sgen.h
 mono_sgen-main-sgen.$(OBJEXT): buildver-sgen.h
 main-sgen.$(OBJEXT): buildver-sgen.h
 
@@ -824,7 +824,7 @@ EXTRA_DIST = TestDriver.cs \
 	Makefile.am.in
 
 version.h: Makefile
-	echo "#define FULL_VERSION \"Stable 4.6.2.7/08fd525\"" > version.h
+	echo "#define FULL_VERSION \"Debian $$(dpkg-parsechangelog -l$(top_srcdir)/debian/changelog | grep ^Vers | cut -d\  -f2)\"" > version.h
 
 # Utility target for patching libtool to speed up linking
 patch-libtool:
--- mono-4.6.2.7+dfsg.orig/mono/mini/Makefile.am.in
+++ mono-4.6.2.7+dfsg/mono/mini/Makefile.am.in
@@ -824,7 +824,7 @@ EXTRA_DIST = TestDriver.cs \
 	Makefile.am.in
 
 version.h: Makefile
-	echo "#define FULL_VERSION \"Stable 4.6.2.7/08fd525\"" > version.h
+	echo "#define FULL_VERSION \"Debian $$(dpkg-parsechangelog -l$(top_srcdir)/debian/changelog | grep ^Vers | cut -d\  -f2)\"" > version.h
 
 # Utility target for patching libtool to speed up linking
 patch-libtool:
--- mono-4.6.2.7+dfsg.orig/mono/mini/exceptions-ppc.c
+++ mono-4.6.2.7+dfsg/mono/mini/exceptions-ppc.c
@@ -697,6 +697,11 @@ mono_arch_handle_altstack_exception (voi
 	}
 #else
 	UCONTEXT_REG_NIP(uc) = (unsigned long)altstack_handle_and_restore;
+#if _CALL_ELF == 2
+	/* ELF v2 ABI calling convention requires to put the target address into
+	* r12 if we use the global entry point of a function. */
+	UCONTEXT_REG_Rn(uc, 12) = (unsigned long) altstack_handle_and_restore;
+#endif
 #endif
 	UCONTEXT_REG_Rn(uc, 1) = (unsigned long)sp;
 	UCONTEXT_REG_Rn(uc, PPC_FIRST_ARG_REG) = (unsigned long)(sp + 16);
@@ -739,6 +744,11 @@ setup_ucontext_return (void *uc, gpointe
 	}
 #else
 	UCONTEXT_REG_NIP(uc) = (unsigned long)func;
+#if _CALL_ELF == 2
+	/* ELF v2 ABI calling convention requires to put the target address into
+	* r12 if we use the global entry point of a function. */
+	UCONTEXT_REG_Rn(uc, 12) = (unsigned long) func;
+#endif
 #endif
 #endif
 }
--- mono-4.6.2.7+dfsg.orig/mono/mini/mini-mips.c
+++ mono-4.6.2.7+dfsg/mono/mini/mini-mips.c
@@ -2175,12 +2175,6 @@ mono_arch_decompose_long_opts (MonoCompi
 	int tmp5 = -1;
 
 	switch (ins->opcode) {
-#if 0
-	case OP_LCOMPARE:
-	case OP_LCOMPARE_IMM:
-		mono_print_ins (ins);
-		g_assert_not_reached ();
-#endif
 	case OP_LADD:
 		tmp1 = mono_alloc_ireg (cfg);
 		MONO_EMIT_NEW_BIALU (cfg, OP_IADD, ins->dreg+1, ins->sreg1+1, ins->sreg2+1);
@@ -2217,17 +2211,6 @@ mono_arch_decompose_long_opts (MonoCompi
 		NULLIFY_INS(ins);
 		break;
 
-	case OP_LMUL:
-	case OP_LDIV:
-	case OP_LDIV_UN:
-	case OP_LREM:
-	case OP_LREM_UN:
-	case OP_LSHL:
-	case OP_LSHR:
-	case OP_LSHR_UN:
-		mono_print_ins (ins);
-		g_assert_not_reached ();
-
 	case OP_LNEG:
 		tmp1 = mono_alloc_ireg (cfg);
 		MONO_EMIT_NEW_BIALU (cfg, OP_ISUB, ins->dreg+1, mips_zero, ins->sreg1+1);
@@ -2237,27 +2220,6 @@ mono_arch_decompose_long_opts (MonoCompi
 		NULLIFY_INS(ins);
 		break;
 
-#if 0
-	case OP_LNOT:
-#endif
-#if 0
-	case OP_LCONV_TO_I1:
-	case OP_LCONV_TO_I2:
-	case OP_LCONV_TO_I4:
-	case OP_LCONV_TO_I8:
-	case OP_LCONV_TO_R4:
-	case OP_LCONV_TO_R8:
-	case OP_LCONV_TO_U4:
-	case OP_LCONV_TO_U8:
-	case OP_LCONV_TO_U2:
-	case OP_LCONV_TO_U1:
-	case OP_LCONV_TO_I:
-	case OP_LCONV_TO_OVF_I:
-	case OP_LCONV_TO_OVF_U:
-#endif
-		mono_print_ins (ins);
-		g_assert_not_reached ();
-
 	case OP_LADD_OVF:
 		tmp1 = mono_alloc_ireg (cfg);
 		tmp2 = mono_alloc_ireg (cfg);
@@ -2310,11 +2272,6 @@ mono_arch_decompose_long_opts (MonoCompi
 		NULLIFY_INS(ins);
 		break;
 
-	case OP_LMUL_OVF:
-	case OP_LMUL_OVF_UN:
-		mono_print_ins (ins);
-		g_assert_not_reached ();
-
 	case OP_LSUB_OVF:
 		tmp1 = mono_alloc_ireg (cfg);
 		tmp2 = mono_alloc_ireg (cfg);
@@ -2361,60 +2318,6 @@ mono_arch_decompose_long_opts (MonoCompi
 		MONO_EMIT_NEW_COMPARE_EXC (cfg, NE_UN, tmp2, mips_zero, "OverflowException");
 		NULLIFY_INS(ins);
 		break;
-#if 0
-	case OP_LCONV_TO_OVF_I1_UN:
-	case OP_LCONV_TO_OVF_I2_UN:
-	case OP_LCONV_TO_OVF_I4_UN:
-	case OP_LCONV_TO_OVF_I8_UN:
-	case OP_LCONV_TO_OVF_U1_UN:
-	case OP_LCONV_TO_OVF_U2_UN:
-	case OP_LCONV_TO_OVF_U4_UN:
-	case OP_LCONV_TO_OVF_U8_UN:
-	case OP_LCONV_TO_OVF_I_UN:
-	case OP_LCONV_TO_OVF_U_UN:
-	case OP_LCONV_TO_OVF_I1:
-	case OP_LCONV_TO_OVF_U1:
-	case OP_LCONV_TO_OVF_I2:
-	case OP_LCONV_TO_OVF_U2:
-	case OP_LCONV_TO_OVF_I4:
-	case OP_LCONV_TO_OVF_U4:
-	case OP_LCONV_TO_OVF_I8:
-	case OP_LCONV_TO_OVF_U8:
-#endif
-	case OP_LCEQ:
-	case OP_LCGT:
-	case OP_LCGT_UN:
-	case OP_LCLT:
-	case OP_LCLT_UN:
-#if 0
-	case OP_LCONV_TO_R_UN:
-	case OP_LCONV_TO_U:
-#endif
-	case OP_LMUL_IMM:
-	case OP_LSHL_IMM:
-	case OP_LSHR_IMM:
-	case OP_LSHR_UN_IMM:
-	case OP_LDIV_IMM:
-	case OP_LDIV_UN_IMM:
-	case OP_LREM_IMM:
-	case OP_LREM_UN_IMM:
-	case OP_LBEQ:
-	case OP_LBGE:
-	case OP_LBGT:
-	case OP_LBLE:
-	case OP_LBLT:
-	case OP_LBNE_UN:
-	case OP_LBGE_UN:
-	case OP_LBGT_UN:
-	case OP_LBLE_UN:
-	case OP_LBLT_UN:
-		mono_print_ins (ins);
-		g_assert_not_reached ();
-#if 0
-	case OP_LCONV_TO_R8_2:
-	case OP_LCONV_TO_R4_2:
-	case OP_LCONV_TO_R_UN_2:
-#endif
 	case OP_LCONV_TO_OVF_I4_2:
 		tmp1 = mono_alloc_ireg (cfg);
 
@@ -2424,14 +2327,6 @@ mono_arch_decompose_long_opts (MonoCompi
 		MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, ins->dreg, ins->sreg1);
 		NULLIFY_INS(ins);
 		break;
-
-	case OP_LMIN_UN:
-	case OP_LMAX_UN:
-	case OP_LMIN:
-	case OP_LMAX:
-		mono_print_ins (ins);
-		g_assert_not_reached ();
-
 	default:
 		break;
 	}
--- mono-4.6.2.7+dfsg.orig/mono/mini/mini-mips.h
+++ mono-4.6.2.7+dfsg/mono/mini/mini-mips.h
@@ -233,6 +233,15 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_EMULATE_FREM 1
 #endif
 
+/*
+ * mips backend misses some instructions that enable emitting of optimal
+ * code on other targets and, additionally, the register allocator gets
+ * confused by this optimization, failing to allocate all hw regs.
+ */
+#if SIZEOF_REGISTER == 4
+#define MONO_ARCH_NO_DIV_WITH_MUL
+#endif
+
 #if SIZEOF_REGISTER == 8
 #define MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS
 #endif
--- mono-4.6.2.7+dfsg.orig/mono/mini/mini-ppc.h
+++ mono-4.6.2.7+dfsg/mono/mini/mini-ppc.h
@@ -77,13 +77,8 @@ typedef struct MonoCompileArch {
 #define PPC_USES_FUNCTION_DESCRIPTOR
 #endif
 
-#ifndef __mono_ilp32__
-#define MONO_ARCH_HAVE_TLS_GET 1
-#endif
-
 #else /* must be __mono_ppc__ */
 
-#define MONO_ARCH_HAVE_TLS_GET 1
 #define MONO_ARCH_EMULATE_FCONV_TO_I8 1
 #define MONO_ARCH_EMULATE_LCONV_TO_R8 1
 #define MONO_ARCH_EMULATE_LCONV_TO_R4 1
@@ -183,7 +178,6 @@ typedef struct MonoCompileArch {
 #define PPC_LAST_FPARG_REG ppc_f13
 #define PPC_PASS_STRUCTS_BY_VALUE 1
 #define PPC_THREAD_PTR_REG ppc_r13
-#define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1
 #else
 #define PPC_RET_ADDR_OFFSET 4
 #define PPC_STACK_PARAM_OFFSET 8
@@ -200,6 +194,7 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_RETURN_CAN_USE_MULTIPLE_REGISTERS 0
 #define PPC_THREAD_PTR_REG ppc_r2
 #endif
+#define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1
 #define PPC_FIRST_ARG_REG ppc_r3
 #define PPC_LAST_ARG_REG ppc_r10
 #define PPC_FIRST_FPARG_REG ppc_f1
--- mono-4.6.2.7+dfsg.orig/mono/mini/mini.c
+++ mono-4.6.2.7+dfsg/mono/mini/mini.c
@@ -3133,6 +3133,9 @@ init_backend (MonoBackend *backend)
 #ifdef MONO_ARCH_DYN_CALL_PARAM_AREA
 	backend->dyn_call_param_area = MONO_ARCH_DYN_CALL_PARAM_AREA;
 #endif
+#ifdef MONO_ARCH_NO_DIV_WITH_MUL
+	backend->disable_div_with_mul = 1;
+#endif
 }
 
 /*
--- mono-4.6.2.7+dfsg.orig/mono/mini/mini.h
+++ mono-4.6.2.7+dfsg/mono/mini/mini.h
@@ -1477,6 +1477,7 @@ typedef struct {
 	guint            need_got_var : 1;
 	guint            need_div_check : 1;
 	guint            no_unaligned_access : 1;
+	guint            disable_div_with_mul : 1;
 	int              monitor_enter_adjustment;
 	int              dyn_call_param_area;
 } MonoBackend;
--- mono-4.6.2.7+dfsg.orig/mono/tests/Makefile.am
+++ mono-4.6.2.7+dfsg/mono/tests/Makefile.am
@@ -371,7 +371,6 @@ BASE_TEST_CS_SRC=		\
 	bug-81673.cs	\
 	bug-36848.cs    \
 	bug-81691.cs	\
-	bug-80307.cs	\
 	bug-415577.cs	\
 	filter-stack.cs	\
 	vararg2.cs	\
@@ -402,10 +401,6 @@ BASE_TEST_CS_SRC=		\
 	bug-575941.cs	\
 	bug-599469.cs	\
 	bug-389886-3.cs \
-	monitor.cs	\
-	monitor-resurrection.cs	\
-	monitor-wait-abort.cs	\
-	monitor-abort.cs	\
 	dynamic-method-resurrection.cs	\
 	bug-666008.cs	\
 	bug-685908.cs	\
@@ -421,7 +416,6 @@ BASE_TEST_CS_SRC=		\
 	appdomain-unload-doesnot-raise-pending-events.cs	\
 	bug-6148.cs	\
 	assembly_append_ordering.cs	\
-	bug-10127.cs	\
 	bug-18026.cs	\
 	allow-synchronous-major.cs	\
 	unload-appdomain-on-shutdown.cs	\
--- mono-4.6.2.7+dfsg.orig/mono/tests/bug-335131.2.cs
+++ mono-4.6.2.7+dfsg/mono/tests/bug-335131.2.cs
@@ -1,18 +1,18 @@
-using System;
-using System.Reflection;
-using System.Reflection.Emit;
-
+using System;
+using System.Reflection;
+using System.Reflection.Emit;
+
 
 class Bla<T> {
 	public T t;
-}
-public class Entry
-{
-    public static int Main()
+}
+public class Entry
+{
+    public static int Main()
     {
 		Bla<int> d = new Bla<int>();	
-		d.t = 99;
-        Instance();
+		d.t = 99;
+        Instance();
 
 		AppDomain domain = AppDomain.CreateDomain ("test");
 		try {
@@ -20,27 +20,27 @@ public class Entry
 		} catch (Exception e) {
 			Console.WriteLine ("assembly has thrown "+e);
 			return 1;
-		}
-        return 0;
-    }
-
-    public static void Instance()
-    {
-        AssemblyName name = new AssemblyName("Instance");
-        AssemblyBuilder asmbuild = System.Threading.Thread.GetDomain().DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave);
-        ModuleBuilder mod = asmbuild.DefineDynamicModule("Instance.exe");
-
-        TypeBuilder G = mod.DefineType("G", TypeAttributes.Public);
-        Type T = G.DefineGenericParameters("T")[0];
-        Type GObj = G.MakeGenericType(new Type[] { typeof(object) });
-
-         ConstructorBuilder Ctor = G.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
-        {
-            ILGenerator il = Ctor.GetILGenerator();
-            il.Emit(OpCodes.Ldarg_0);
-            il.Emit(OpCodes.Call, typeof(object).GetConstructor(new Type[0]));
-            il.Emit(OpCodes.Ret);
-        }
+		}
+        return 0;
+    }
+
+    public static void Instance()
+    {
+        AssemblyName name = new AssemblyName("Instance");
+        AssemblyBuilder asmbuild = System.Threading.Thread.GetDomain().DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave);
+        ModuleBuilder mod = asmbuild.DefineDynamicModule("Instance.exe");
+
+        TypeBuilder G = mod.DefineType("G", TypeAttributes.Public);
+        Type T = G.DefineGenericParameters("T")[0];
+        Type GObj = G.MakeGenericType(new Type[] { typeof(object) });
+
+         ConstructorBuilder Ctor = G.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
+        {
+            ILGenerator il = Ctor.GetILGenerator();
+            il.Emit(OpCodes.Ldarg_0);
+            il.Emit(OpCodes.Call, typeof(object).GetConstructor(new Type[0]));
+            il.Emit(OpCodes.Ret);
+        }
    
 		MethodBuilder Bar = G.DefineMethod("Bar", MethodAttributes.Public);
 		{
@@ -54,26 +54,26 @@ public class Entry
 		    il.Emit(OpCodes.Newobj, Ctor);
 			il.Emit(OpCodes.Call, Bar);
 			il.Emit(OpCodes.Ret);
-		}
+		}
 
 		TypeBuilder M = mod.DefineType("M", TypeAttributes.Public);
-
 
-       MethodBuilder main = M.DefineMethod("Main", MethodAttributes.Public | MethodAttributes.Static );
-        {
-            ILGenerator il = main.GetILGenerator();
+
+       MethodBuilder main = M.DefineMethod("Main", MethodAttributes.Public | MethodAttributes.Static );
+        {
+            ILGenerator il = main.GetILGenerator();
             il.Emit(OpCodes.Call, TypeBuilder.GetMethod (GObj, Foo));
-            il.Emit(OpCodes.Ret);
+            il.Emit(OpCodes.Ret);
         }
 
 		asmbuild.SetEntryPoint (main);
         G.CreateType();
 		M.CreateType();
-
+
 		asmbuild.Save("Instance.exe");
 
 		
-		Console.WriteLine("ok");
-    }
-
+		Console.WriteLine("ok");
+    }
+
 }
--- mono-4.6.2.7+dfsg.orig/mono/tests/bug-472600.2.cs
+++ mono-4.6.2.7+dfsg/mono/tests/bug-472600.2.cs
@@ -1,23 +1,23 @@
-using System;
-using System.Collections.Generic;
-
-public class EventInfoTestClass
-{
-	static EventInfoTestClass ()
-	{
-		string s = System.Environment.StackTrace;
-	}
-}
-
-class Test
-{
-	static void Main ()
-	{
-		TestEventSubscription<object> ();
-	}
-
-	public static void TestEventSubscription<T> ()
-	{
-		new EventInfoTestClass ();
-	}
-}
+using System;
+using System.Collections.Generic;
+
+public class EventInfoTestClass
+{
+	static EventInfoTestClass ()
+	{
+		string s = System.Environment.StackTrace;
+	}
+}
+
+class Test
+{
+	static void Main ()
+	{
+		TestEventSubscription<object> ();
+	}
+
+	public static void TestEventSubscription<T> ()
+	{
+		new EventInfoTestClass ();
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mono/tests/bug-515884.il
+++ mono-4.6.2.7+dfsg/mono/tests/bug-515884.il
@@ -1,29 +1,29 @@
-.assembly extern mscorlib
-{
-  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
-  .ver 2:0:0:0
-}
-.assembly ConsoleApplication1
-{
-  .hash algorithm 0x00008004
-  .ver 0:0:0:0
-}
-.module ConsoleApplication1.exe
-
-
-.class private auto ansi beforefieldinit ConsoleApplication1.Program extends [mscorlib]System.Object
-{
-	.method public hidebysig static int32 Main(string[] args) cil managed
-	{
-		.entrypoint
-		.maxstack 8
-		.locals init (class [mscorlib]System.AppDomain V_0)
+.assembly extern mscorlib
+{
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
+  .ver 2:0:0:0
+}
+.assembly ConsoleApplication1
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module ConsoleApplication1.exe
+
+
+.class private auto ansi beforefieldinit ConsoleApplication1.Program extends [mscorlib]System.Object
+{
+	.method public hidebysig static int32 Main(string[] args) cil managed
+	{
+		.entrypoint
+		.maxstack 8
+		.locals init (class [mscorlib]System.AppDomain V_0)
 
-		ldstr "Test"
+		ldstr "Test"
 		call class [mscorlib]System.AppDomain [mscorlib]System.AppDomain::CreateDomain(string)
-		call instance string [mscorlib]System.AppDomain::get_FriendlyName()
+		call instance string [mscorlib]System.AppDomain::get_FriendlyName()
 
-		ldstr "Test"
+		ldstr "Test"
 		callvirt instance bool [mscorlib]System.Object::Equals (object)
 		brfalse END
 
@@ -33,5 +33,5 @@
 END:
 		ldc.i4.1
 		ret
-	}
+	}
 }
--- mono-4.6.2.7+dfsg.orig/mono/tests/checked.cs
+++ mono-4.6.2.7+dfsg/mono/tests/checked.cs
@@ -1,191 +1,191 @@
-using System;
-
-namespace test {
-	public class tester {
-		public tester() {}
-
-		public static int Main () {
-			float a  = 1e20f;
-			int i = 0;
-			uint ui = 0;
-
-			bool exception = false;
-
-			try {
-				int b = (int) a;
-				checked {
-					i = (int)a;
-				}
-			}
-			catch (OverflowException) {
-				exception = true;
-			}
-			catch (Exception) {
-			}			
-
-
-			if (!exception)
-				return 1;
-
-			exception = false;
-
-			a  = 1e5f;
-			
-			try {
-				int b = (int) a;
-				checked {
-					i = (int)a;
-				}
-			} catch (Exception) {
-				return 2;
-			}
-
-
-			if (i != 100000)
-				return 3;
-		
-			exception = false;
-
-			a  = -1e30f;
-			try {
-				int b = (int) a;
-				checked {
-					i = (int)a;
-				}
-			} 
-			catch (OverflowException) {
-				exception = true;
-			}
-			catch (Exception) {
-			}			
-			exception = false;
-
-
-			a  = -1e30f;
-			try {
-				uint b = (uint) a;
-				checked {
-					ui = (uint)a;
-				}
-
-				Console.WriteLine("No Exception");
-			} 
-			catch (OverflowException) {
-				exception = true;
-			}
-			catch (Exception) {
-			}
-
-
-			if (!exception)
-				return 4;
-
-			a  = 1e5f;
-			try {
-				uint b = (uint) a;
-				checked {
-					ui = (uint)a;
-				}
-			} 
-			catch (Exception) {
-				return 5;
-			}
-
-			if (ui != 100000)
-				return 6;
-
-			// Check mul.ovf
-			checked {
-				int l;
-				int m;
-
-				int[][] cases = new int [][] { 
-					new int [] {0, 0, 0},
-					new int [] {-5, 0, 0},
-					new int [] {3, -5, -15},
-					new int [] {3, 5, 15},
-					new int [] {-3, -5, 15},
-					new int [] {-3, 5, -15},
-					new int [] {-1, 32767, -32767},
-					new int [] {32767, -1, -32767}};
-
-
-				for (int j = 0; j < cases.Length; ++j)
-					if (cases [j][0] * cases [j][1] != cases [j][2])
-						return 7 + j;
-			}
-
-			checked {
-				int j;
-				int k;
-
-				j = k = 0;
-				if (j * k != 0)
-					return 20;
-
-				j = -5;
-				k = 0;
-				if (j * k != 0)
-					return 21;
-
-				j = 0;
-				k = -5;
-				if (j * k != 0)
-					return 22;
-
-				j = 3;
-				k = -5;
-				if (j * k != -15)
-					return 23;
-
-				j = 3;
-				k = 5;
-				if (j * k != 15)
-					return 24;
-
-				j = -3;
-				k = -5;
-				if (j * k != 15)
-					return 25;
-
-				j = -3;
-				k = 5;
-				if (j * k != -15)
-					return 26;
-
-				j = -1;
-				k = 32767;
-				if (j * k != -32767)
-					return 27;
-				
-				j = 32767;
-				k = -1;
-				if (j * k != -32767)
-					return 28;
-			}
-
-			checked {
-				long l;
-				long m;
-
-				long[][] cases = new long [][] { 
-					new long [] {0, 0, 0},
-					new long [] {-5, 0, 0},
-					new long [] {3, -5, -15},
-					new long [] {3, 5, 15},
-					new long [] {-3, -5, 15},
-					new long [] {-3, 5, -15},
-					new long [] {-1, 2147483647, -2147483647},
-					new long [] {2147483647, -1, -2147483647}};
-
-				for (int j = 0; j < cases.Length; ++j)
-					if (cases [j][0] * cases [j][1] != cases [j][2])
-						return 29 + j;
-			}
-				
-			Console.WriteLine("test-ok");
-
-			return 0;
-		}
-	}
-}
+using System;
+
+namespace test {
+	public class tester {
+		public tester() {}
+
+		public static int Main () {
+			float a  = 1e20f;
+			int i = 0;
+			uint ui = 0;
+
+			bool exception = false;
+
+			try {
+				int b = (int) a;
+				checked {
+					i = (int)a;
+				}
+			}
+			catch (OverflowException) {
+				exception = true;
+			}
+			catch (Exception) {
+			}			
+
+
+			if (!exception)
+				return 1;
+
+			exception = false;
+
+			a  = 1e5f;
+			
+			try {
+				int b = (int) a;
+				checked {
+					i = (int)a;
+				}
+			} catch (Exception) {
+				return 2;
+			}
+
+
+			if (i != 100000)
+				return 3;
+		
+			exception = false;
+
+			a  = -1e30f;
+			try {
+				int b = (int) a;
+				checked {
+					i = (int)a;
+				}
+			} 
+			catch (OverflowException) {
+				exception = true;
+			}
+			catch (Exception) {
+			}			
+			exception = false;
+
+
+			a  = -1e30f;
+			try {
+				uint b = (uint) a;
+				checked {
+					ui = (uint)a;
+				}
+
+				Console.WriteLine("No Exception");
+			} 
+			catch (OverflowException) {
+				exception = true;
+			}
+			catch (Exception) {
+			}
+
+
+			if (!exception)
+				return 4;
+
+			a  = 1e5f;
+			try {
+				uint b = (uint) a;
+				checked {
+					ui = (uint)a;
+				}
+			} 
+			catch (Exception) {
+				return 5;
+			}
+
+			if (ui != 100000)
+				return 6;
+
+			// Check mul.ovf
+			checked {
+				int l;
+				int m;
+
+				int[][] cases = new int [][] { 
+					new int [] {0, 0, 0},
+					new int [] {-5, 0, 0},
+					new int [] {3, -5, -15},
+					new int [] {3, 5, 15},
+					new int [] {-3, -5, 15},
+					new int [] {-3, 5, -15},
+					new int [] {-1, 32767, -32767},
+					new int [] {32767, -1, -32767}};
+
+
+				for (int j = 0; j < cases.Length; ++j)
+					if (cases [j][0] * cases [j][1] != cases [j][2])
+						return 7 + j;
+			}
+
+			checked {
+				int j;
+				int k;
+
+				j = k = 0;
+				if (j * k != 0)
+					return 20;
+
+				j = -5;
+				k = 0;
+				if (j * k != 0)
+					return 21;
+
+				j = 0;
+				k = -5;
+				if (j * k != 0)
+					return 22;
+
+				j = 3;
+				k = -5;
+				if (j * k != -15)
+					return 23;
+
+				j = 3;
+				k = 5;
+				if (j * k != 15)
+					return 24;
+
+				j = -3;
+				k = -5;
+				if (j * k != 15)
+					return 25;
+
+				j = -3;
+				k = 5;
+				if (j * k != -15)
+					return 26;
+
+				j = -1;
+				k = 32767;
+				if (j * k != -32767)
+					return 27;
+				
+				j = 32767;
+				k = -1;
+				if (j * k != -32767)
+					return 28;
+			}
+
+			checked {
+				long l;
+				long m;
+
+				long[][] cases = new long [][] { 
+					new long [] {0, 0, 0},
+					new long [] {-5, 0, 0},
+					new long [] {3, -5, -15},
+					new long [] {3, 5, 15},
+					new long [] {-3, -5, 15},
+					new long [] {-3, 5, -15},
+					new long [] {-1, 2147483647, -2147483647},
+					new long [] {2147483647, -1, -2147483647}};
+
+				for (int j = 0; j < cases.Length; ++j)
+					if (cases [j][0] * cases [j][1] != cases [j][2])
+						return 29 + j;
+			}
+				
+			Console.WriteLine("test-ok");
+
+			return 0;
+		}
+	}
+}
--- mono-4.6.2.7+dfsg.orig/mono/tests/load-missing.il
+++ mono-4.6.2.7+dfsg/mono/tests/load-missing.il
@@ -1,737 +1,737 @@
-//
-// load-missing.il: Helper class used by load-exceptions.cs
-//
-
-.assembly extern mscorlib
-{
-  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
-  .ver 2:0:0:0
-}
-.assembly extern t
-{
-  .ver 0:0:0:0
-}
-.assembly extern notFoundAssembly
-{
-  .ver 0:0:0:0
-}
-
-.assembly 'load-missing'
-{
-  .hash algorithm 0x00008004
-  .ver 0:0:0:0
-}
-.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) 
-.imagebase 0x00400000
-.file alignment 0x00000200
-.subsystem 0x0003       // WINDOWS_CUI
-.corflags 0x00000001    //  ILONLY
-// Image base: 0x03310000
-
-  .class auto ansi sealed public EmptyDelegate
-         extends [mscorlib]System.MulticastDelegate
-  {
-    .method public hidebysig specialname rtspecialname 
-            instance void  .ctor(object 'object',
-                                 native int 'method') runtime managed
-    {
-    }
-
-    .method public hidebysig newslot virtual 
-            instance void  Invoke() runtime managed
-    {
-    }
-
-    .method public hidebysig newslot virtual 
-            instance class [mscorlib]System.IAsyncResult 
-            BeginInvoke(class [mscorlib]System.AsyncCallback callback,
-                        object 'object') runtime managed
-    {
-    }
-
-    .method public hidebysig newslot virtual 
-            instance void  EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed
-    {
-    }
-
-  }
-
-  .class auto ansi sealed public DelegateWithMissingArgument
-         extends [mscorlib]System.MulticastDelegate
-  {
-    .method public hidebysig specialname rtspecialname 
-            instance void  .ctor(object 'object',
-                                 native int 'method') runtime managed
-    {
-    }
-
-    .method public hidebysig newslot virtual 
-            instance void  Invoke(class [t]Missing t) runtime managed
-    {
-    }
-
-    .method public hidebysig newslot virtual 
-            instance class [mscorlib]System.IAsyncResult 
-            BeginInvoke(class [mscorlib]System.AsyncCallback callback,
-                        object 'object') runtime managed
-    {
-    }
-
-    .method public hidebysig newslot virtual 
-            instance void  EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed
-    {
-    }
-
-  }
-
-.class public auto ansi beforefieldinit LoadMissing
-       extends [mscorlib]System.Object
-{
-
-  .method public hidebysig static void  missing_class() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (class [t]Missing.Foo1 V_0)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo1::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ret
-  }
-
-  .method public hidebysig static void  missing_method() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (class [t]Missing.Foo2 V_0)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()
-    IL_000d:  nop
-    IL_000e:  ret
-  }
-
-  .method public hidebysig static void  missing_ctor() cil managed
-  {
-   
-    .maxstack  2
-    .locals init (class [t]Missing.Foo2 V_0)
-    IL_0000:  nop
-    IL_0001:  ldc.i4.5
-    IL_0002:  newobj     instance void [t]Missing.Foo2::.ctor(int32)
-    IL_0007:  stloc.0
-    IL_0008:  ret
-  }
-
-  .method public hidebysig static void  missing_call() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (class [t]Missing.Foo2 V_0)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()
-    IL_000d:  nop
-    IL_000e:  ret
-  }
-
-  .method public hidebysig static void  missing_jmp() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (class [t]Missing.Foo2 V_0)
-
-	jmp void [t]Missing.Foo2::static_missing ()
-  }
-
-  .method public hidebysig static void  missing_ldftn() cil managed
-  {
-   
-    .maxstack  3
-    .locals init (class [t]Missing.Foo2 V_0,
-             class EmptyDelegate V_1)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  ldftn      instance void [t]Missing.Foo2::missing()
-    IL_000e:  newobj     instance void EmptyDelegate::.ctor(object,
-                                                            native int)
-    IL_0013:  stloc.1
-    IL_0014:  ret
-  }
-
-  .method public hidebysig static void  missing_callvirt() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (class [t]Missing.Foo5 V_0)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo5::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  callvirt   instance void [t]Missing.Foo5::missing_virtual()
-    IL_000d:  nop
-    IL_000e:  ret
-  }
-
-  .method public hidebysig static object 
-          missing_castclass_helper(object o) cil managed
-  {
-   
-    .maxstack  1
-    .locals init (object V_0)
-    IL_0000:  nop
-    IL_0001:  ldarg.0
-    IL_0002:  castclass  [t]Missing.Foo1
-    IL_0007:  stloc.0
-    IL_0008:  br.s       IL_000a
-
-    IL_000a:  ldloc.0
-    IL_000b:  ret
-  }
-
-  .method public hidebysig static void
-          missing_castclass() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (object V_0)
-
-		ldnull
-    	call       object LoadMissing::missing_castclass_helper(object)
-		pop
-		ret
-  }
-
-	.method public hidebysig static void
-					missing_cpobj () cil managed
-	{
-		.maxstack 8
-		.locals init (object v_0, object v_1)
-
-		ldloca v_0
-		ldloca v_1
-		cpobj [t]Missing.Foo1
-		ret
-	}
-
-	.method public hidebysig static void
-					missing_initobj () cil managed
-	{
-		.maxstack 8
-		.locals init (object v_0)
-
-		ldloca v_0
-		initobj [t]Missing.Foo1
-		ret
-	}
-
-  .method public hidebysig static bool  missing_isinst_helper(object o) cil managed
-  {
-   
-    .maxstack  2
-    .locals init (bool V_0)
-    IL_0000:  nop
-    IL_0001:  ldarg.0
-    IL_0002:  isinst     [t]Missing.Foo1
-    IL_0007:  ldnull
-    IL_0008:  cgt.un
-    IL_000a:  stloc.0
-    IL_000b:  br.s       IL_000d
-
-    IL_000d:  ldloc.0
-    IL_000e:  ret
-  }
-
-  .method public hidebysig static void
-          missing_isinst() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (object V_0)
-
-		ldnull
-    	call       bool LoadMissing::missing_isinst_helper(object)
-		pop
-		ret
-  }
-
-  .method public hidebysig static void  missing_ldfld() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (class [t]Missing.Foo4 V_0,
-             int32 V_1)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  ldfld     int32 [t]Missing.Foo4::i
-    IL_000d:  stloc.1
-    IL_000e:  nop
-    IL_000f:  nop
-    IL_0013:  ret
-  }
-
-  .method public hidebysig static void  missing_ldflda() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (class [t]Missing.Foo4 V_0,
-             int32& pinned V_1)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  ldflda     int32 [t]Missing.Foo4::i
-    IL_000d:  stloc.1
-    IL_000e:  nop
-    IL_000f:  nop
-    IL_0010:  ldc.i4.0
-    IL_0011:  conv.u
-    IL_0012:  stloc.1
-    IL_0013:  ret
-  }
-
-  .method public hidebysig static void  missing_ldsfld() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (int32 V_0)
-    IL_0000:  nop
-    IL_0001:  ldsfld    int32 [t]Missing.Foo3::i
-    IL_0006:  stloc.0
-    IL_0007:  nop
-    IL_0008:  nop
-    IL_0009:  ldc.i4.0
-    IL_000a:  conv.u
-    IL_000b:  stloc.0
-    IL_000c:  ret
-  }
-
-  .method public hidebysig static void  missing_ldsflda() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (int32& pinned V_0)
-    IL_0000:  nop
-    IL_0001:  ldsflda    int32 [t]Missing.Foo3::i
-    IL_0006:  stloc.0
-    IL_0007:  nop
-    IL_0008:  nop
-    IL_0009:  ldc.i4.0
-    IL_000a:  conv.u
-    IL_000b:  stloc.0
-    IL_000c:  ret
-  }
-
-  .method public hidebysig static void  missing_ldtoken_type() cil managed
-  {
-   
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ldtoken    [t]Missing.Foo1
-    IL_0006:  call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
-    IL_000b:  call       void [mscorlib]System.Console::WriteLine(object)
-    IL_0010:  nop
-    IL_0011:  ret
-  }
-
-  .method public hidebysig static void  missing_ldtoken_method() cil managed
-  {
-   
-    .maxstack  8
-    IL_0000:  nop
-    IL_0008:  ldtoken method instance void [t]Missing.Foo2::missing()
-    IL_0010:  pop
-    IL_0011:  ret
-  }
-
-  .method public hidebysig static void missing_assembly_in_fieldref () cil managed
-  {
-        .maxstack 8
-        ldc.i4.0
-        stsfld  int32 [t]X::a
-        ret
-  }
-
-  .method public hidebysig static void missing_assembly_in_call () cil managed
-  {
-        .maxstack 8
-        call void class [t]Gtk.Application::Init()
-        ret
-  }
-
-  .method public hidebysig static void missing_assembly_in_newobj () cil managed
-  {
-        .maxstack 8
-	newobj instance void class [mscorlib]System.Dingus::.ctor()
-	pop
-	ret
-  }
-
-  .method public hidebysig static void missing_external_type_reference_on_parameter() cil managed
-  {
-    .maxstack 8
-    ldstr "Hello"
-    call void class [mscorlib]System.String::Trim(class [mscorlib]MissingType)
-    ret
-  }
-
-  .method public hidebysig static void  missing_ldtoken_field() cil managed
-  {
-   
-    .maxstack  8
-    IL_0000:  nop
-    IL_0008:  ldtoken field int32 [t]Missing.Foo4::i
-    IL_0010:  pop
-    IL_0011:  ret
-  }
-
-  .method public hidebysig static void  missing_ldvirtftn() cil managed
-  {
-   
-    .maxstack  3
-    .locals init (class [t]Missing.Foo5 V_0,
-             class EmptyDelegate V_1)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo5::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  dup
-    IL_0009:  ldvirtftn  instance void [t]Missing.Foo5::missing_virtual()
-    IL_000f:  newobj     instance void EmptyDelegate::.ctor(object,
-                                                            native int)
-    IL_0014:  stloc.1
-    IL_0015:  ret
-  }
-
-  .method public hidebysig static object missing_newarr_helper() cil managed
-  {
-   
-    .maxstack  1
-    .locals init (object V_0)
-    IL_0000:  nop
-    IL_0001:  ldc.i4.s   10
-    IL_0003:  newarr     [t]Missing.Foo1
-    IL_0008:  stloc.0
-    IL_0009:  br.s       IL_000b
-
-    IL_000b:  ldloc.0
-    IL_000c:  ret
-  }
-
-  .method public hidebysig static void  missing_newarr() cil managed
-  {
-   
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  call       object LoadMissing::missing_newarr_helper()
-    IL_0006:  pop
-    IL_0007:  ret
-  }
-
-  .method public hidebysig static void  missing_newobj() cil managed
-  {
-   
-    .maxstack  2
-    .locals init (class [t]Missing.Foo2 V_0)
-    IL_0000:  nop
-    IL_0001:  ldc.i4.5
-    IL_0002:  newobj     instance void [t]Missing.Foo2::.ctor(int32)
-    IL_0007:  stloc.0
-    IL_0008:  ret
-  }
-
-  .method public hidebysig static void  missing_refanyval() cil managed
-  {
-   
-    .maxstack  2
-    .locals init (int32 v_0)
-
-		ldloca v_0
-		mkrefany int32
-		refanyval [t]Missing.Foo1
-		pop
-		ret
-	}
-
-  .method public hidebysig static void  missing_sizeof() cil managed
-  {
-   
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  sizeof    [t]Missing.Foo1
-    IL_0010:  pop
-    IL_0011:  ret
-  }
-
-  .method public hidebysig static void  missing_stfld() cil managed
-  {
-   
-    .maxstack  2
-    .locals init (class [t]Missing.Foo4 V_0)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  ldc.i4.5
-    IL_0009:  stfld      int32 [t]Missing.Foo4::i
-    IL_000e:  ret
-  }
-
-  .method public hidebysig static void  missing_stsfld() cil managed
-  {
-   
-    .maxstack  8
-    IL_0000:  nop
-    IL_0001:  ldc.i4.5
-    IL_0002:  stsfld     int32 [t]Missing.Foo3::i
-    IL_0007:  ret
-  }
-
-  .method public hidebysig static void missing_unbox () cil managed
-  {
-	  .maxstack 8
-	
-	  ldnull
-      unbox [t]Missing.Foo6
-      pop
-      ret
-  }	
-
-  .method public hidebysig static void missing_unbox_any () cil managed
-  {
-	  .maxstack 8
-	
-	  	ldnull
-      unbox.any [t]Missing.Foo6
-      pop
-      ret
-  }	
-
-	.method public hidebysig static void missing_local () cil managed
-	{
-		.maxstack 8
-		.locals init (class [t]Missing.Foo1 v_0)
-
-		ret
-	}	
-
-	.method public static void delegate_target () cil managed
-	{
-		ret
-	}
-
-	.method public hidebysig static void missing_delegate_ctor_argument () cil managed	   
-	{
-	    .maxstack  3
-		.locals init (class [t]Missing.Foo2 V_0,
-			          class EmptyDelegate V_1)
-    IL_0000:  nop
-    IL_0001:  newobj     instance void LoadMissing::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  ldftn      void LoadMissing::delegate_target()
-    IL_000e:  newobj     instance void DelegateWithMissingArgument::.ctor(object,
-                                                                          native int)
-    IL_0013:  stloc.1
-    IL_0014:  ret
-	}
-
-  .method public hidebysig specialname rtspecialname 
-          instance void  .ctor() cil managed
-  {
-   
-    .maxstack  8
-    IL_0000:  ldarg.0
-    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
-    IL_0006:  ret
-  }
-
-}
-
-.class public auto ansi beforefieldinit BrokenClass
-       extends [t]Missing.Foo1
-{
-}
-
-.class public auto ansi CCtorClass
-        extends [mscorlib]System.Object     
-  {                                         
-
-    // method line 48
-    .method public hidebysig  specialname  rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {                                                    
-        .maxstack 8                                      
-        IL_0000:  ldarg.0                                
-        IL_0001:  call instance void object::'.ctor'()   
-        IL_0006:  ret                                    
-    } // end of method CCtorClass::.ctor                 
-
-    // method line 49
-    .method private static  specialname  rtspecialname 
-           default void '.cctor' ()  cil managed       
-    {                                                  
-    IL_0000:  nop
-    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
-    IL_0006:  stloc.0
-    IL_0007:  ldloc.0
-    IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()
-    IL_000d:  nop
-    IL_000e:  ret
-    } // end of method CCtorClass::.cctor                                    
-
-    // method line 50
-    .method public static  hidebysig 
-           default void foo ()  cil managed 
-    {                                       
-        .maxstack 8                         
-        IL_0000:  ret                       
-    } // end of method CCtorClass::foo      
-
-  } // end of class CCtorClass
-
-.class interface public auto ansi abstract TestIface
-{
-	.method public virtual  hidebysig  newslot abstract instance default int32 foo ()  cil managed  {}
-}
-
-.class public auto ansi beforefieldinit BadMethodOverride1
-{
-	.method public virtual newslot default int32 foo ()
-	{
-		.override class TestIface::foo
-		ldc.i4.0
-		ret
-	}
-
-	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
-    {
-		ldarg.0                                
-		call instance void object::'.ctor'()   
-		ret                                    
-	}
-}
-
-.class public auto ansi beforefieldinit RandomBaseClass
-{
-	.method public virtual newslot default int32 foo ()
-	{
-		ldc.i4.0
-		ret
-	}
-
-	.method public static int32 foo2 ()
-	{
-		ldc.i4.0
-		ret
-	}
-
-	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
-    {
-		ldarg.0                                
-		call instance void object::'.ctor'()   
-		ret                                    
-	}
-}
-
-.class public auto ansi beforefieldinit BadMethodOverride2
-{
-	.method public virtual newslot default int32 foo ()
-	{
-		.override class RandomBaseClass::foo
-		ldc.i4.0
-		ret
-	}
-
-	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
-    {
-		ldarg.0                                
-		call instance void object::'.ctor'()   
-		ret                                    
-	}
-}
-
-.class public auto ansi beforefieldinit BadMethodOverride3 implements TestIface
-{
-	.method public default int32 foo ()
-	{
-		.override class TestIface::foo
-		ldc.i4.0
-		ret
-	}
-
-	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
-    {
-		ldarg.0                                
-		call instance void object::'.ctor'()   
-		ret                                    
-	}
-}
-
-.class public auto ansi beforefieldinit BadMethodOverride4 extends RandomBaseClass
-{
-	.method public virtual default int32 foo2 ()
-	{
-		.override class RandomBaseClass::foo2
-		ldc.i4.0
-		ret
-	}
-
-	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
-    {
-		ldarg.0                                
-		call instance void RandomBaseClass::'.ctor'()   
-		ret                                    
-	}
-}
-
-.class public auto ansi beforefieldinit BadOverridesDriver
-{
-	.method public static void bad_override1 ()
-	{
-		newobj instance void BadMethodOverride1::.ctor()
-		pop
-		ret
-	}
-
-	.method public static void bad_override2 ()
-	{
-		newobj instance void BadMethodOverride2::.ctor()
-		pop
-		ret
-	}
-
-	.method public static void bad_override3 ()
-	{
-		newobj instance void BadMethodOverride3::.ctor()
-		pop
-		ret
-	}
-
-	.method public static void bad_override4 ()
-	{
-		newobj instance void BadMethodOverride4::.ctor()
-		pop
-		ret
-	}
-}
-
-.class public auto ansi beforefieldinit FieldWithMissingType
-{
-	.field  public class [t]Missing BrokenField
-    .field  public static int32 WorkingField
-}
-
-.class public auto ansi beforefieldinit FieldWithMissingCustomAttribute
-{
-    .field	public object f
-    .custom	instance void class [notFoundAssembly]SomeAttribute::'.ctor'() = (01 00 00 00 ) // ....
-}
+//
+// load-missing.il: Helper class used by load-exceptions.cs
+//
+
+.assembly extern mscorlib
+{
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
+  .ver 2:0:0:0
+}
+.assembly extern t
+{
+  .ver 0:0:0:0
+}
+.assembly extern notFoundAssembly
+{
+  .ver 0:0:0:0
+}
+
+.assembly 'load-missing'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) 
+.imagebase 0x00400000
+.file alignment 0x00000200
+.subsystem 0x0003       // WINDOWS_CUI
+.corflags 0x00000001    //  ILONLY
+// Image base: 0x03310000
+
+  .class auto ansi sealed public EmptyDelegate
+         extends [mscorlib]System.MulticastDelegate
+  {
+    .method public hidebysig specialname rtspecialname 
+            instance void  .ctor(object 'object',
+                                 native int 'method') runtime managed
+    {
+    }
+
+    .method public hidebysig newslot virtual 
+            instance void  Invoke() runtime managed
+    {
+    }
+
+    .method public hidebysig newslot virtual 
+            instance class [mscorlib]System.IAsyncResult 
+            BeginInvoke(class [mscorlib]System.AsyncCallback callback,
+                        object 'object') runtime managed
+    {
+    }
+
+    .method public hidebysig newslot virtual 
+            instance void  EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed
+    {
+    }
+
+  }
+
+  .class auto ansi sealed public DelegateWithMissingArgument
+         extends [mscorlib]System.MulticastDelegate
+  {
+    .method public hidebysig specialname rtspecialname 
+            instance void  .ctor(object 'object',
+                                 native int 'method') runtime managed
+    {
+    }
+
+    .method public hidebysig newslot virtual 
+            instance void  Invoke(class [t]Missing t) runtime managed
+    {
+    }
+
+    .method public hidebysig newslot virtual 
+            instance class [mscorlib]System.IAsyncResult 
+            BeginInvoke(class [mscorlib]System.AsyncCallback callback,
+                        object 'object') runtime managed
+    {
+    }
+
+    .method public hidebysig newslot virtual 
+            instance void  EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed
+    {
+    }
+
+  }
+
+.class public auto ansi beforefieldinit LoadMissing
+       extends [mscorlib]System.Object
+{
+
+  .method public hidebysig static void  missing_class() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (class [t]Missing.Foo1 V_0)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo1::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ret
+  }
+
+  .method public hidebysig static void  missing_method() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (class [t]Missing.Foo2 V_0)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()
+    IL_000d:  nop
+    IL_000e:  ret
+  }
+
+  .method public hidebysig static void  missing_ctor() cil managed
+  {
+   
+    .maxstack  2
+    .locals init (class [t]Missing.Foo2 V_0)
+    IL_0000:  nop
+    IL_0001:  ldc.i4.5
+    IL_0002:  newobj     instance void [t]Missing.Foo2::.ctor(int32)
+    IL_0007:  stloc.0
+    IL_0008:  ret
+  }
+
+  .method public hidebysig static void  missing_call() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (class [t]Missing.Foo2 V_0)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()
+    IL_000d:  nop
+    IL_000e:  ret
+  }
+
+  .method public hidebysig static void  missing_jmp() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (class [t]Missing.Foo2 V_0)
+
+	jmp void [t]Missing.Foo2::static_missing ()
+  }
+
+  .method public hidebysig static void  missing_ldftn() cil managed
+  {
+   
+    .maxstack  3
+    .locals init (class [t]Missing.Foo2 V_0,
+             class EmptyDelegate V_1)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  ldftn      instance void [t]Missing.Foo2::missing()
+    IL_000e:  newobj     instance void EmptyDelegate::.ctor(object,
+                                                            native int)
+    IL_0013:  stloc.1
+    IL_0014:  ret
+  }
+
+  .method public hidebysig static void  missing_callvirt() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (class [t]Missing.Foo5 V_0)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo5::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  callvirt   instance void [t]Missing.Foo5::missing_virtual()
+    IL_000d:  nop
+    IL_000e:  ret
+  }
+
+  .method public hidebysig static object 
+          missing_castclass_helper(object o) cil managed
+  {
+   
+    .maxstack  1
+    .locals init (object V_0)
+    IL_0000:  nop
+    IL_0001:  ldarg.0
+    IL_0002:  castclass  [t]Missing.Foo1
+    IL_0007:  stloc.0
+    IL_0008:  br.s       IL_000a
+
+    IL_000a:  ldloc.0
+    IL_000b:  ret
+  }
+
+  .method public hidebysig static void
+          missing_castclass() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (object V_0)
+
+		ldnull
+    	call       object LoadMissing::missing_castclass_helper(object)
+		pop
+		ret
+  }
+
+	.method public hidebysig static void
+					missing_cpobj () cil managed
+	{
+		.maxstack 8
+		.locals init (object v_0, object v_1)
+
+		ldloca v_0
+		ldloca v_1
+		cpobj [t]Missing.Foo1
+		ret
+	}
+
+	.method public hidebysig static void
+					missing_initobj () cil managed
+	{
+		.maxstack 8
+		.locals init (object v_0)
+
+		ldloca v_0
+		initobj [t]Missing.Foo1
+		ret
+	}
+
+  .method public hidebysig static bool  missing_isinst_helper(object o) cil managed
+  {
+   
+    .maxstack  2
+    .locals init (bool V_0)
+    IL_0000:  nop
+    IL_0001:  ldarg.0
+    IL_0002:  isinst     [t]Missing.Foo1
+    IL_0007:  ldnull
+    IL_0008:  cgt.un
+    IL_000a:  stloc.0
+    IL_000b:  br.s       IL_000d
+
+    IL_000d:  ldloc.0
+    IL_000e:  ret
+  }
+
+  .method public hidebysig static void
+          missing_isinst() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (object V_0)
+
+		ldnull
+    	call       bool LoadMissing::missing_isinst_helper(object)
+		pop
+		ret
+  }
+
+  .method public hidebysig static void  missing_ldfld() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (class [t]Missing.Foo4 V_0,
+             int32 V_1)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  ldfld     int32 [t]Missing.Foo4::i
+    IL_000d:  stloc.1
+    IL_000e:  nop
+    IL_000f:  nop
+    IL_0013:  ret
+  }
+
+  .method public hidebysig static void  missing_ldflda() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (class [t]Missing.Foo4 V_0,
+             int32& pinned V_1)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  ldflda     int32 [t]Missing.Foo4::i
+    IL_000d:  stloc.1
+    IL_000e:  nop
+    IL_000f:  nop
+    IL_0010:  ldc.i4.0
+    IL_0011:  conv.u
+    IL_0012:  stloc.1
+    IL_0013:  ret
+  }
+
+  .method public hidebysig static void  missing_ldsfld() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (int32 V_0)
+    IL_0000:  nop
+    IL_0001:  ldsfld    int32 [t]Missing.Foo3::i
+    IL_0006:  stloc.0
+    IL_0007:  nop
+    IL_0008:  nop
+    IL_0009:  ldc.i4.0
+    IL_000a:  conv.u
+    IL_000b:  stloc.0
+    IL_000c:  ret
+  }
+
+  .method public hidebysig static void  missing_ldsflda() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (int32& pinned V_0)
+    IL_0000:  nop
+    IL_0001:  ldsflda    int32 [t]Missing.Foo3::i
+    IL_0006:  stloc.0
+    IL_0007:  nop
+    IL_0008:  nop
+    IL_0009:  ldc.i4.0
+    IL_000a:  conv.u
+    IL_000b:  stloc.0
+    IL_000c:  ret
+  }
+
+  .method public hidebysig static void  missing_ldtoken_type() cil managed
+  {
+   
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ldtoken    [t]Missing.Foo1
+    IL_0006:  call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
+    IL_000b:  call       void [mscorlib]System.Console::WriteLine(object)
+    IL_0010:  nop
+    IL_0011:  ret
+  }
+
+  .method public hidebysig static void  missing_ldtoken_method() cil managed
+  {
+   
+    .maxstack  8
+    IL_0000:  nop
+    IL_0008:  ldtoken method instance void [t]Missing.Foo2::missing()
+    IL_0010:  pop
+    IL_0011:  ret
+  }
+
+  .method public hidebysig static void missing_assembly_in_fieldref () cil managed
+  {
+        .maxstack 8
+        ldc.i4.0
+        stsfld  int32 [t]X::a
+        ret
+  }
+
+  .method public hidebysig static void missing_assembly_in_call () cil managed
+  {
+        .maxstack 8
+        call void class [t]Gtk.Application::Init()
+        ret
+  }
+
+  .method public hidebysig static void missing_assembly_in_newobj () cil managed
+  {
+        .maxstack 8
+	newobj instance void class [mscorlib]System.Dingus::.ctor()
+	pop
+	ret
+  }
+
+  .method public hidebysig static void missing_external_type_reference_on_parameter() cil managed
+  {
+    .maxstack 8
+    ldstr "Hello"
+    call void class [mscorlib]System.String::Trim(class [mscorlib]MissingType)
+    ret
+  }
+
+  .method public hidebysig static void  missing_ldtoken_field() cil managed
+  {
+   
+    .maxstack  8
+    IL_0000:  nop
+    IL_0008:  ldtoken field int32 [t]Missing.Foo4::i
+    IL_0010:  pop
+    IL_0011:  ret
+  }
+
+  .method public hidebysig static void  missing_ldvirtftn() cil managed
+  {
+   
+    .maxstack  3
+    .locals init (class [t]Missing.Foo5 V_0,
+             class EmptyDelegate V_1)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo5::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  dup
+    IL_0009:  ldvirtftn  instance void [t]Missing.Foo5::missing_virtual()
+    IL_000f:  newobj     instance void EmptyDelegate::.ctor(object,
+                                                            native int)
+    IL_0014:  stloc.1
+    IL_0015:  ret
+  }
+
+  .method public hidebysig static object missing_newarr_helper() cil managed
+  {
+   
+    .maxstack  1
+    .locals init (object V_0)
+    IL_0000:  nop
+    IL_0001:  ldc.i4.s   10
+    IL_0003:  newarr     [t]Missing.Foo1
+    IL_0008:  stloc.0
+    IL_0009:  br.s       IL_000b
+
+    IL_000b:  ldloc.0
+    IL_000c:  ret
+  }
+
+  .method public hidebysig static void  missing_newarr() cil managed
+  {
+   
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  call       object LoadMissing::missing_newarr_helper()
+    IL_0006:  pop
+    IL_0007:  ret
+  }
+
+  .method public hidebysig static void  missing_newobj() cil managed
+  {
+   
+    .maxstack  2
+    .locals init (class [t]Missing.Foo2 V_0)
+    IL_0000:  nop
+    IL_0001:  ldc.i4.5
+    IL_0002:  newobj     instance void [t]Missing.Foo2::.ctor(int32)
+    IL_0007:  stloc.0
+    IL_0008:  ret
+  }
+
+  .method public hidebysig static void  missing_refanyval() cil managed
+  {
+   
+    .maxstack  2
+    .locals init (int32 v_0)
+
+		ldloca v_0
+		mkrefany int32
+		refanyval [t]Missing.Foo1
+		pop
+		ret
+	}
+
+  .method public hidebysig static void  missing_sizeof() cil managed
+  {
+   
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  sizeof    [t]Missing.Foo1
+    IL_0010:  pop
+    IL_0011:  ret
+  }
+
+  .method public hidebysig static void  missing_stfld() cil managed
+  {
+   
+    .maxstack  2
+    .locals init (class [t]Missing.Foo4 V_0)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo4::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  ldc.i4.5
+    IL_0009:  stfld      int32 [t]Missing.Foo4::i
+    IL_000e:  ret
+  }
+
+  .method public hidebysig static void  missing_stsfld() cil managed
+  {
+   
+    .maxstack  8
+    IL_0000:  nop
+    IL_0001:  ldc.i4.5
+    IL_0002:  stsfld     int32 [t]Missing.Foo3::i
+    IL_0007:  ret
+  }
+
+  .method public hidebysig static void missing_unbox () cil managed
+  {
+	  .maxstack 8
+	
+	  ldnull
+      unbox [t]Missing.Foo6
+      pop
+      ret
+  }	
+
+  .method public hidebysig static void missing_unbox_any () cil managed
+  {
+	  .maxstack 8
+	
+	  	ldnull
+      unbox.any [t]Missing.Foo6
+      pop
+      ret
+  }	
+
+	.method public hidebysig static void missing_local () cil managed
+	{
+		.maxstack 8
+		.locals init (class [t]Missing.Foo1 v_0)
+
+		ret
+	}	
+
+	.method public static void delegate_target () cil managed
+	{
+		ret
+	}
+
+	.method public hidebysig static void missing_delegate_ctor_argument () cil managed	   
+	{
+	    .maxstack  3
+		.locals init (class [t]Missing.Foo2 V_0,
+			          class EmptyDelegate V_1)
+    IL_0000:  nop
+    IL_0001:  newobj     instance void LoadMissing::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  ldftn      void LoadMissing::delegate_target()
+    IL_000e:  newobj     instance void DelegateWithMissingArgument::.ctor(object,
+                                                                          native int)
+    IL_0013:  stloc.1
+    IL_0014:  ret
+	}
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+   
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  }
+
+}
+
+.class public auto ansi beforefieldinit BrokenClass
+       extends [t]Missing.Foo1
+{
+}
+
+.class public auto ansi CCtorClass
+        extends [mscorlib]System.Object     
+  {                                         
+
+    // method line 48
+    .method public hidebysig  specialname  rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {                                                    
+        .maxstack 8                                      
+        IL_0000:  ldarg.0                                
+        IL_0001:  call instance void object::'.ctor'()   
+        IL_0006:  ret                                    
+    } // end of method CCtorClass::.ctor                 
+
+    // method line 49
+    .method private static  specialname  rtspecialname 
+           default void '.cctor' ()  cil managed       
+    {                                                  
+    IL_0000:  nop
+    IL_0001:  newobj     instance void [t]Missing.Foo2::.ctor()
+    IL_0006:  stloc.0
+    IL_0007:  ldloc.0
+    IL_0008:  callvirt   instance void [t]Missing.Foo2::missing()
+    IL_000d:  nop
+    IL_000e:  ret
+    } // end of method CCtorClass::.cctor                                    
+
+    // method line 50
+    .method public static  hidebysig 
+           default void foo ()  cil managed 
+    {                                       
+        .maxstack 8                         
+        IL_0000:  ret                       
+    } // end of method CCtorClass::foo      
+
+  } // end of class CCtorClass
+
+.class interface public auto ansi abstract TestIface
+{
+	.method public virtual  hidebysig  newslot abstract instance default int32 foo ()  cil managed  {}
+}
+
+.class public auto ansi beforefieldinit BadMethodOverride1
+{
+	.method public virtual newslot default int32 foo ()
+	{
+		.override class TestIface::foo
+		ldc.i4.0
+		ret
+	}
+
+	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
+    {
+		ldarg.0                                
+		call instance void object::'.ctor'()   
+		ret                                    
+	}
+}
+
+.class public auto ansi beforefieldinit RandomBaseClass
+{
+	.method public virtual newslot default int32 foo ()
+	{
+		ldc.i4.0
+		ret
+	}
+
+	.method public static int32 foo2 ()
+	{
+		ldc.i4.0
+		ret
+	}
+
+	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
+    {
+		ldarg.0                                
+		call instance void object::'.ctor'()   
+		ret                                    
+	}
+}
+
+.class public auto ansi beforefieldinit BadMethodOverride2
+{
+	.method public virtual newslot default int32 foo ()
+	{
+		.override class RandomBaseClass::foo
+		ldc.i4.0
+		ret
+	}
+
+	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
+    {
+		ldarg.0                                
+		call instance void object::'.ctor'()   
+		ret                                    
+	}
+}
+
+.class public auto ansi beforefieldinit BadMethodOverride3 implements TestIface
+{
+	.method public default int32 foo ()
+	{
+		.override class TestIface::foo
+		ldc.i4.0
+		ret
+	}
+
+	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
+    {
+		ldarg.0                                
+		call instance void object::'.ctor'()   
+		ret                                    
+	}
+}
+
+.class public auto ansi beforefieldinit BadMethodOverride4 extends RandomBaseClass
+{
+	.method public virtual default int32 foo2 ()
+	{
+		.override class RandomBaseClass::foo2
+		ldc.i4.0
+		ret
+	}
+
+	.method public hidebysig  specialname  rtspecialname  instance default void '.ctor' ()  cil managed 
+    {
+		ldarg.0                                
+		call instance void RandomBaseClass::'.ctor'()   
+		ret                                    
+	}
+}
+
+.class public auto ansi beforefieldinit BadOverridesDriver
+{
+	.method public static void bad_override1 ()
+	{
+		newobj instance void BadMethodOverride1::.ctor()
+		pop
+		ret
+	}
+
+	.method public static void bad_override2 ()
+	{
+		newobj instance void BadMethodOverride2::.ctor()
+		pop
+		ret
+	}
+
+	.method public static void bad_override3 ()
+	{
+		newobj instance void BadMethodOverride3::.ctor()
+		pop
+		ret
+	}
+
+	.method public static void bad_override4 ()
+	{
+		newobj instance void BadMethodOverride4::.ctor()
+		pop
+		ret
+	}
+}
+
+.class public auto ansi beforefieldinit FieldWithMissingType
+{
+	.field  public class [t]Missing BrokenField
+    .field  public static int32 WorkingField
+}
+
+.class public auto ansi beforefieldinit FieldWithMissingCustomAttribute
+{
+    .field	public object f
+    .custom	instance void class [notFoundAssembly]SomeAttribute::'.ctor'() = (01 00 00 00 ) // ....
+}
--- mono-4.6.2.7+dfsg.orig/mono/utils/mono-context.h
+++ mono-4.6.2.7+dfsg/mono/utils/mono-context.h
@@ -476,40 +476,40 @@ typedef struct {
 
 #define MONO_CONTEXT_GET_CURRENT(ctx)	\
 	__asm__ __volatile__(	\
-		"std 0, 0(%0)\n"	\
-		"std 1, 4(%0)\n"	\
-		"std 0, 4*0+8(%0)\n"	\
-		"std 1, 4*1+8(%0)\n"	\
-		"std 2, 4*2+8(%0)\n"	\
-		"std 3, 4*3+8(%0)\n"	\
-		"std 4, 4*4+8(%0)\n"	\
-		"std 5, 4*5+8(%0)\n"	\
-		"std 6, 4*6+8(%0)\n"	\
-		"std 7, 4*7+8(%0)\n"	\
-		"std 8, 4*8+8(%0)\n"	\
-		"std 9, 4*9+8(%0)\n"	\
-		"std 10, 4*10+8(%0)\n"	\
-		"std 11, 4*11+8(%0)\n"	\
-		"std 12, 4*12+8(%0)\n"	\
-		"std 13, 4*13+8(%0)\n"	\
-		"std 14, 4*14+8(%0)\n"	\
-		"std 15, 4*15+8(%0)\n"	\
-		"std 16, 4*16+8(%0)\n"	\
-		"std 17, 4*17+8(%0)\n"	\
-		"std 18, 4*18+8(%0)\n"	\
-		"std 19, 4*19+8(%0)\n"	\
-		"std 20, 4*20+8(%0)\n"	\
-		"std 21, 4*21+8(%0)\n"	\
-		"std 22, 4*22+8(%0)\n"	\
-		"std 23, 4*23+8(%0)\n"	\
-		"std 24, 4*24+8(%0)\n"	\
-		"std 25, 4*25+8(%0)\n"	\
-		"std 26, 4*26+8(%0)\n"	\
-		"std 27, 4*27+8(%0)\n"	\
-		"std 28, 4*28+8(%0)\n"	\
-		"std 29, 4*29+8(%0)\n"	\
-		"std 30, 4*30+8(%0)\n"	\
-		"std 31, 4*31+8(%0)\n"	\
+		"stw 0, 0(%0)\n"	\
+		"stw 1, 4(%0)\n"	\
+		"stw 0, 4*0+8(%0)\n"	\
+		"stw 1, 4*1+8(%0)\n"	\
+		"stw 2, 4*2+8(%0)\n"	\
+		"stw 3, 4*3+8(%0)\n"	\
+		"stw 4, 4*4+8(%0)\n"	\
+		"stw 5, 4*5+8(%0)\n"	\
+		"stw 6, 4*6+8(%0)\n"	\
+		"stw 7, 4*7+8(%0)\n"	\
+		"stw 8, 4*8+8(%0)\n"	\
+		"stw 9, 4*9+8(%0)\n"	\
+		"stw 10, 4*10+8(%0)\n"	\
+		"stw 11, 4*11+8(%0)\n"	\
+		"stw 12, 4*12+8(%0)\n"	\
+		"stw 13, 4*13+8(%0)\n"	\
+		"stw 14, 4*14+8(%0)\n"	\
+		"stw 15, 4*15+8(%0)\n"	\
+		"stw 16, 4*16+8(%0)\n"	\
+		"stw 17, 4*17+8(%0)\n"	\
+		"stw 18, 4*18+8(%0)\n"	\
+		"stw 19, 4*19+8(%0)\n"	\
+		"stw 20, 4*20+8(%0)\n"	\
+		"stw 21, 4*21+8(%0)\n"	\
+		"stw 22, 4*22+8(%0)\n"	\
+		"stw 23, 4*23+8(%0)\n"	\
+		"stw 24, 4*24+8(%0)\n"	\
+		"stw 25, 4*25+8(%0)\n"	\
+		"stw 26, 4*26+8(%0)\n"	\
+		"stw 27, 4*27+8(%0)\n"	\
+		"stw 28, 4*28+8(%0)\n"	\
+		"stw 29, 4*29+8(%0)\n"	\
+		"stw 30, 4*30+8(%0)\n"	\
+		"stw 31, 4*31+8(%0)\n"	\
 		"stfd 0, 8*0+4*32+8(%0)\n"	\
 		"stfd 1, 8*1+4*32+8(%0)\n"	\
 		"stfd 2, 8*2+4*32+8(%0)\n"	\
@@ -543,7 +543,7 @@ typedef struct {
 		"stfd 30, 8*30+4*32+8(%0)\n"	\
 		"stfd 31, 8*31+4*32+8(%0)\n"	\
 		: : "r" (&(ctx))	\
-		: "memory"			\
+		: "memory", "r0"	\
 	)
 
 #endif
@@ -699,6 +699,8 @@ mono_ia64_context_get_fp (MonoContext *c
 
 #elif ((defined(__mips__) && !defined(MONO_CROSS_COMPILE)) || (defined(TARGET_MIPS))) && SIZEOF_REGISTER == 4 /* defined(__ia64__) */
 
+#define MONO_ARCH_HAS_MONO_CONTEXT 1
+
 #include <mono/arch/mips/mips-codegen.h>
 
 typedef struct {
--- mono-4.6.2.7+dfsg.orig/msvc/eglib.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/eglib.vcxproj
@@ -1,308 +1,308 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_SGen|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug_SGen|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{158073ED-99AE-4196-9EDC-DDB2344F8466}</ProjectGuid>
-    <RootNamespace>eglib</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">
-    <ClCompile />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_eglib|Win32'">
-    <ClCompile />
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\eglib\src\garray.c" />
-    <ClCompile Include="..\eglib\src\gbytearray.c" />
-    <ClCompile Include="..\eglib\src\gdate-win32.c" />
-    <ClCompile Include="..\eglib\src\gdir-win32.c" />
-    <ClCompile Include="..\eglib\src\gerror.c" />
-    <ClCompile Include="..\eglib\src\gfile-posix.c" />
-    <ClCompile Include="..\eglib\src\gfile-win32.c" />
-    <ClCompile Include="..\eglib\src\gfile.c" />
-    <ClCompile Include="..\eglib\src\ghashtable.c" />
-    <ClCompile Include="..\eglib\src\giconv.c" />
-    <ClCompile Include="..\eglib\src\glist.c" />
-    <ClCompile Include="..\eglib\src\gmarkup.c" />
-    <ClCompile Include="..\eglib\src\gmem.c" />
-    <ClCompile Include="..\eglib\src\gmisc-win32.c" />
-    <ClCompile Include="..\eglib\src\gmodule-win32.c" />
-    <ClCompile Include="..\eglib\src\goutput.c" />
-    <ClCompile Include="..\eglib\src\gpath.c" />
-    <ClCompile Include="..\eglib\src\gpattern.c" />
-    <ClCompile Include="..\eglib\src\gptrarray.c" />
-    <ClCompile Include="..\eglib\src\gqsort.c" />
-    <ClCompile Include="..\eglib\src\gqueue.c" />
-    <ClCompile Include="..\eglib\src\gshell.c" />
-    <ClCompile Include="..\eglib\src\gslist.c" />
-    <ClCompile Include="..\eglib\src\gspawn.c" />
-    <ClCompile Include="..\eglib\src\gstr.c" />
-    <ClCompile Include="..\eglib\src\gstring.c" />
-    <ClCompile Include="..\eglib\src\gtimer-win32.c" />
-    <ClCompile Include="..\eglib\src\gunicode.c" />
-    <ClCompile Include="..\eglib\src\gutf8.c" />
-    <ClCompile Include="..\eglib\src\vasprintf.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\eglib\src\glib.h" />
-    <ClInclude Include="..\eglib\src\gmodule.h" />
-    <ClInclude Include="..\eglib\src\sort.frag.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_SGen|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug_SGen|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{158073ED-99AE-4196-9EDC-DDB2344F8466}</ProjectGuid>
+    <RootNamespace>eglib</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">
+    <ClCompile />
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_eglib|Win32'">
+    <ClCompile />
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\eglib\src\garray.c" />
+    <ClCompile Include="..\eglib\src\gbytearray.c" />
+    <ClCompile Include="..\eglib\src\gdate-win32.c" />
+    <ClCompile Include="..\eglib\src\gdir-win32.c" />
+    <ClCompile Include="..\eglib\src\gerror.c" />
+    <ClCompile Include="..\eglib\src\gfile-posix.c" />
+    <ClCompile Include="..\eglib\src\gfile-win32.c" />
+    <ClCompile Include="..\eglib\src\gfile.c" />
+    <ClCompile Include="..\eglib\src\ghashtable.c" />
+    <ClCompile Include="..\eglib\src\giconv.c" />
+    <ClCompile Include="..\eglib\src\glist.c" />
+    <ClCompile Include="..\eglib\src\gmarkup.c" />
+    <ClCompile Include="..\eglib\src\gmem.c" />
+    <ClCompile Include="..\eglib\src\gmisc-win32.c" />
+    <ClCompile Include="..\eglib\src\gmodule-win32.c" />
+    <ClCompile Include="..\eglib\src\goutput.c" />
+    <ClCompile Include="..\eglib\src\gpath.c" />
+    <ClCompile Include="..\eglib\src\gpattern.c" />
+    <ClCompile Include="..\eglib\src\gptrarray.c" />
+    <ClCompile Include="..\eglib\src\gqsort.c" />
+    <ClCompile Include="..\eglib\src\gqueue.c" />
+    <ClCompile Include="..\eglib\src\gshell.c" />
+    <ClCompile Include="..\eglib\src\gslist.c" />
+    <ClCompile Include="..\eglib\src\gspawn.c" />
+    <ClCompile Include="..\eglib\src\gstr.c" />
+    <ClCompile Include="..\eglib\src\gstring.c" />
+    <ClCompile Include="..\eglib\src\gtimer-win32.c" />
+    <ClCompile Include="..\eglib\src\gunicode.c" />
+    <ClCompile Include="..\eglib\src\gutf8.c" />
+    <ClCompile Include="..\eglib\src\vasprintf.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\eglib\src\glib.h" />
+    <ClInclude Include="..\eglib\src\gmodule.h" />
+    <ClInclude Include="..\eglib\src\sort.frag.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/genmdesc.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/genmdesc.vcxproj
@@ -1,651 +1,651 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_SGen|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug_SGen|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="mono.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B7098DFA-31E6-4006-8A15-1C9A4E925149}</ProjectGuid>
-    <RootNamespace>genmdesc</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-    <PreBuildEvent>
-      <Command>
-      </Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PostBuildEvent>
-      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\mono\mini\genmdesc.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\helpers.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="..\mono\utils\monobitset.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-      </PrecompiledHeader>
-    </ClCompile>
-    <ClCompile Include="..\mono\metadata\opcodes.c">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-      </PrecompiledHeader>
-      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-      </PrecompiledHeader>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-      </PrecompiledHeader>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_SGen|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug_SGen|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="mono.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B7098DFA-31E6-4006-8A15-1C9A4E925149}</ProjectGuid>
+    <RootNamespace>genmdesc</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>eglib.lib;libmonoutils.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\mini\genmdesc.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\helpers.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\utils\monobitset.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="..\mono\metadata\opcodes.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+      </PrecompiledHeader>
+      <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</BrowseInformation>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+      </PrecompiledHeader>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+      </PrecompiledHeader>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/libgc.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/libgc.vcxproj
@@ -1,326 +1,326 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_SGen|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug_SGen|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{EB56000B-C80B-4E8B-908D-D84D31B517D3}</ProjectGuid>
-    <RootNamespace>libgc</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\lib\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)libgc.lib</OutputFile>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\libgc\allchblk.c" />
-    <ClCompile Include="..\libgc\alloc.c" />
-    <ClCompile Include="..\libgc\blacklst.c" />
-    <ClCompile Include="..\libgc\dbg_mlc.c" />
-    <ClCompile Include="..\libgc\dyn_load.c" />
-    <ClCompile Include="..\libgc\finalize.c" />
-    <ClCompile Include="..\libgc\gcj_mlc.c" />
-    <ClCompile Include="..\libgc\headers.c" />
-    <ClCompile Include="..\libgc\mach_dep.c" />
-    <ClCompile Include="..\libgc\malloc.c" />
-    <ClCompile Include="..\libgc\mallocx.c" />
-    <ClCompile Include="..\libgc\mark.c" />
-    <ClCompile Include="..\libgc\mark_rts.c" />
-    <ClCompile Include="..\libgc\misc.c" />
-    <ClCompile Include="..\libgc\new_hblk.c" />
-    <ClCompile Include="..\libgc\obj_map.c" />
-    <ClCompile Include="..\libgc\os_dep.c" />
-    <ClCompile Include="..\libgc\ptr_chck.c" />
-    <ClCompile Include="..\libgc\reclaim.c" />
-    <ClCompile Include="..\libgc\stubborn.c" />
-    <ClCompile Include="..\libgc\typd_mlc.c" />
-    <ClCompile Include="..\libgc\win32_threads.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\libgc\include\gc.h" />
-    <ClInclude Include="..\libgc\include\private\gc_hdrs.h" />
-    <ClInclude Include="..\libgc\include\private\gc_locks.h" />
-    <ClInclude Include="..\libgc\include\gc_mark.h" />
-    <ClInclude Include="..\libgc\include\private\gc_pmark.h" />
-    <ClInclude Include="..\libgc\include\private\gc_priv.h" />
-    <ClInclude Include="..\libgc\include\private\gcconfig.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_SGen|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug_SGen|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{EB56000B-C80B-4E8B-908D-D84D31B517D3}</ProjectGuid>
+    <RootNamespace>libgc</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\lib\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0600;_WIN32_WINNT=0x0600;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Lib>
+      <OutputFile>$(OutDir)libgc.lib</OutputFile>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\libgc\allchblk.c" />
+    <ClCompile Include="..\libgc\alloc.c" />
+    <ClCompile Include="..\libgc\blacklst.c" />
+    <ClCompile Include="..\libgc\dbg_mlc.c" />
+    <ClCompile Include="..\libgc\dyn_load.c" />
+    <ClCompile Include="..\libgc\finalize.c" />
+    <ClCompile Include="..\libgc\gcj_mlc.c" />
+    <ClCompile Include="..\libgc\headers.c" />
+    <ClCompile Include="..\libgc\mach_dep.c" />
+    <ClCompile Include="..\libgc\malloc.c" />
+    <ClCompile Include="..\libgc\mallocx.c" />
+    <ClCompile Include="..\libgc\mark.c" />
+    <ClCompile Include="..\libgc\mark_rts.c" />
+    <ClCompile Include="..\libgc\misc.c" />
+    <ClCompile Include="..\libgc\new_hblk.c" />
+    <ClCompile Include="..\libgc\obj_map.c" />
+    <ClCompile Include="..\libgc\os_dep.c" />
+    <ClCompile Include="..\libgc\ptr_chck.c" />
+    <ClCompile Include="..\libgc\reclaim.c" />
+    <ClCompile Include="..\libgc\stubborn.c" />
+    <ClCompile Include="..\libgc\typd_mlc.c" />
+    <ClCompile Include="..\libgc\win32_threads.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\libgc\include\gc.h" />
+    <ClInclude Include="..\libgc\include\private\gc_hdrs.h" />
+    <ClInclude Include="..\libgc\include\private\gc_locks.h" />
+    <ClInclude Include="..\libgc\include\gc_mark.h" />
+    <ClInclude Include="..\libgc\include\private\gc_pmark.h" />
+    <ClInclude Include="..\libgc\include\private\gc_priv.h" />
+    <ClInclude Include="..\libgc\include\private\gcconfig.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/libmono.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/libmono.vcxproj
@@ -1,744 +1,744 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_SGen|Win32">
-      <Configuration>Debug_SGen</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug_SGen|x64">
-      <Configuration>Debug_SGen</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|Win32">
-      <Configuration>Release_SGen</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|x64">
-      <Configuration>Release_SGen</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="mono.props" />
-  <ItemGroup>
-    <ClCompile Include="..\mono\metadata\remoting.c" />
-    <ClCompile Include="..\mono\mini\alias-analysis.c" />
-    <ClCompile Include="..\mono\mini\arch-stubs.c" />
-    <ClCompile Include="..\mono\mini\exceptions-amd64.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\exceptions-x86.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\mini-amd64.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\mini-amd64-gsharedvt.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\mini-runtime.c" />
-    <ClCompile Include="..\mono\mini\mini-windows.c" />
-    <ClCompile Include="..\mono\mini\mini-x86.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\mini-x86-gsharedvt.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\mini.c" />
-    <ClInclude Include="..\mono\metadata\remoting.h" />
-    <ClInclude Include="..\mono\mini\ir-emit.h" />
-    <ClCompile Include="..\mono\mini\method-to-ir.c" />
-    <ClCompile Include="..\mono\mini\decompose.c" />
-    <ClInclude Include="..\mono\mini\mini-amd64.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="..\mono\mini\mini-amd64-gsharedvt.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="..\mono\mini\mini-x86.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
-    </ClInclude>
-    <ClInclude Include="..\mono\mini\mini.h" />
-    <ClInclude Include="..\mono\mini\seq-points.h" />
-    <ClInclude Include="..\mono\mini\version.h" />
-    <ClInclude Include="..\mono\mini\optflags-def.h" />
-    <ClInclude Include="..\mono\mini\cfgdump.h" />
-    <ClCompile Include="..\mono\mini\cfgdump.c" />
-    <ClInclude Include="..\mono\mini\jit-icalls.h " />
-    <ClCompile Include="..\mono\mini\jit-icalls.c " />
-    <ClCompile Include="..\mono\mini\seq-points.c" />
-    <ClCompile Include="..\mono\mini\trace.c" />
-    <ClInclude Include="..\mono\mini\trace.h" />
-    <ClInclude Include="..\mono\mini\patch-info.h" />
-    <ClInclude Include="..\mono\mini\mini-ops.h" />
-    <ClInclude Include="..\mono\mini\mini-arch.h" />
-    <ClCompile Include="..\mono\mini\dominators.c" />
-    <ClCompile Include="..\mono\mini\cfold.c" />
-    <ClInclude Include="..\mono\mini\regalloc.h" />
-    <ClCompile Include="..\mono\mini\helpers.c" />
-    <ClCompile Include="..\mono\mini\liveness.c" />
-    <ClCompile Include="..\mono\mini\ssa.c" />
-    <ClCompile Include="..\mono\mini\abcremoval.c" />
-    <ClInclude Include="..\mono\mini\abcremoval.h" />
-    <ClCompile Include="..\mono\mini\local-propagation.c" />
-    <ClCompile Include="..\mono\mini\driver.c" />
-    <ClCompile Include="..\mono\mini\debug-mini.c" />
-    <ClCompile Include="..\mono\mini\linear-scan.c" />
-    <ClCompile Include="..\mono\mini\aot-compiler.c" />
-    <ClCompile Include="..\mono\mini\aot-runtime.c" />
-    <ClCompile Include="..\mono\mini\graph.c" />
-    <ClCompile Include="..\mono\mini\mini-codegen.c" />
-    <ClCompile Include="..\mono\mini\mini-cross-helpers.c" />
-    <ClCompile Include="..\mono\mini\mini-exceptions.c" />
-    <ClCompile Include="..\mono\mini\mini-exceptions-native-unwinder.c" />
-    <ClCompile Include="..\mono\mini\mini-trampolines.c  " />
-    <ClCompile Include="..\mono\mini\tramp-amd64.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\tramp-amd64-gsharedvt.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\tramp-x86.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\tramp-x86-gsharedvt.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
-    </ClCompile>
-    <ClCompile Include="..\mono\mini\branch-opts.c" />
-    <ClCompile Include="..\mono\mini\mini-generic-sharing.c" />
-    <ClInclude Include="..\mono\mini\simd-methods.h" />
-    <ClCompile Include="..\mono\mini\tasklets.c" />
-    <ClInclude Include="..\mono\mini\tasklets.h" />
-    <ClCompile Include="..\mono\mini\simd-intrinsics.c" />
-    <ClInclude Include="..\mono\mini\mini-unwind.h" />
-    <ClCompile Include="..\mono\mini\unwind.c" />
-    <ClInclude Include="..\mono\mini\image-writer.h" />
-    <ClCompile Include="..\mono\mini\image-writer.c" />
-    <ClInclude Include="..\mono\mini\dwarfwriter.h" />
-    <ClCompile Include="..\mono\mini\dwarfwriter.c" />
-    <ClInclude Include="..\mono\mini\mini-gc.h" />
-    <ClCompile Include="..\mono\mini\mini-gc.c" />
-    <ClInclude Include="..\mono\mini\debugger-agent.h " />
-    <ClCompile Include="..\mono\mini\debugger-agent.c" />
-    <ClCompile Include="..\mono\mini\xdebug.c" />
-    <ClInclude Include="..\mono\mini\mini-llvm.h" />
-    <ClInclude Include="..\mono\mini\mini-llvm-cpp.h" />
-    <ClCompile Include="..\mono\mini\mini-native-types.c" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}</ProjectGuid>
-    <RootNamespace>libmono</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-2.0</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">monosgen-2.0</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-2.0</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">monosgen-2.0</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-2.0</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">monosgen-2.0</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-2.0</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">monosgen-2.0</TargetName>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <BrowseInformation>true</BrowseInformation>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <BrowseInformation>true</BrowseInformation>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <BrowseInformation>true</BrowseInformation>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <BrowseInformation>true</BrowseInformation>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-    <PreBuildEvent>
-      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
-    </PreBuildEvent>
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>
-      </PrecompiledHeaderOutputFile>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PostBuildEvent>
-      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
-$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <CustomBuildStep Include="..\mono\mini\mini-x86.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
-    </CustomBuildStep>
-    <CustomBuildStep Include="..\mono\mini\mini-amd64.h">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
-    </CustomBuildStep>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libgc.vcxproj">
-      <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmonoruntime.vcxproj">
-      <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d739}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmonoutils.vcxproj">
-      <Project>{8fc2b0c8-51ad-49df-851f-5d01a77a75e4}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_SGen|Win32">
+      <Configuration>Debug_SGen</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug_SGen|x64">
+      <Configuration>Debug_SGen</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|Win32">
+      <Configuration>Release_SGen</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|x64">
+      <Configuration>Release_SGen</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="mono.props" />
+  <ItemGroup>
+    <ClCompile Include="..\mono\metadata\remoting.c" />
+    <ClCompile Include="..\mono\mini\alias-analysis.c" />
+    <ClCompile Include="..\mono\mini\arch-stubs.c" />
+    <ClCompile Include="..\mono\mini\exceptions-amd64.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\exceptions-x86.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-amd64.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-amd64-gsharedvt.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-runtime.c" />
+    <ClCompile Include="..\mono\mini\mini-windows.c" />
+    <ClCompile Include="..\mono\mini\mini-x86.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini-x86-gsharedvt.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\mini.c" />
+    <ClInclude Include="..\mono\metadata\remoting.h" />
+    <ClInclude Include="..\mono\mini\ir-emit.h" />
+    <ClCompile Include="..\mono\mini\method-to-ir.c" />
+    <ClCompile Include="..\mono\mini\decompose.c" />
+    <ClInclude Include="..\mono\mini\mini-amd64.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="..\mono\mini\mini-amd64-gsharedvt.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="..\mono\mini\mini-x86.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
+    </ClInclude>
+    <ClInclude Include="..\mono\mini\mini.h" />
+    <ClInclude Include="..\mono\mini\seq-points.h" />
+    <ClInclude Include="..\mono\mini\version.h" />
+    <ClInclude Include="..\mono\mini\optflags-def.h" />
+    <ClInclude Include="..\mono\mini\cfgdump.h" />
+    <ClCompile Include="..\mono\mini\cfgdump.c" />
+    <ClInclude Include="..\mono\mini\jit-icalls.h " />
+    <ClCompile Include="..\mono\mini\jit-icalls.c " />
+    <ClCompile Include="..\mono\mini\seq-points.c" />
+    <ClCompile Include="..\mono\mini\trace.c" />
+    <ClInclude Include="..\mono\mini\trace.h" />
+    <ClInclude Include="..\mono\mini\patch-info.h" />
+    <ClInclude Include="..\mono\mini\mini-ops.h" />
+    <ClInclude Include="..\mono\mini\mini-arch.h" />
+    <ClCompile Include="..\mono\mini\dominators.c" />
+    <ClCompile Include="..\mono\mini\cfold.c" />
+    <ClInclude Include="..\mono\mini\regalloc.h" />
+    <ClCompile Include="..\mono\mini\helpers.c" />
+    <ClCompile Include="..\mono\mini\liveness.c" />
+    <ClCompile Include="..\mono\mini\ssa.c" />
+    <ClCompile Include="..\mono\mini\abcremoval.c" />
+    <ClInclude Include="..\mono\mini\abcremoval.h" />
+    <ClCompile Include="..\mono\mini\local-propagation.c" />
+    <ClCompile Include="..\mono\mini\driver.c" />
+    <ClCompile Include="..\mono\mini\debug-mini.c" />
+    <ClCompile Include="..\mono\mini\linear-scan.c" />
+    <ClCompile Include="..\mono\mini\aot-compiler.c" />
+    <ClCompile Include="..\mono\mini\aot-runtime.c" />
+    <ClCompile Include="..\mono\mini\graph.c" />
+    <ClCompile Include="..\mono\mini\mini-codegen.c" />
+    <ClCompile Include="..\mono\mini\mini-cross-helpers.c" />
+    <ClCompile Include="..\mono\mini\mini-exceptions.c" />
+    <ClCompile Include="..\mono\mini\mini-exceptions-native-unwinder.c" />
+    <ClCompile Include="..\mono\mini\mini-trampolines.c  " />
+    <ClCompile Include="..\mono\mini\tramp-amd64.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\tramp-amd64-gsharedvt.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\tramp-x86.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\tramp-x86-gsharedvt.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\mono\mini\branch-opts.c" />
+    <ClCompile Include="..\mono\mini\mini-generic-sharing.c" />
+    <ClInclude Include="..\mono\mini\simd-methods.h" />
+    <ClCompile Include="..\mono\mini\tasklets.c" />
+    <ClInclude Include="..\mono\mini\tasklets.h" />
+    <ClCompile Include="..\mono\mini\simd-intrinsics.c" />
+    <ClInclude Include="..\mono\mini\mini-unwind.h" />
+    <ClCompile Include="..\mono\mini\unwind.c" />
+    <ClInclude Include="..\mono\mini\image-writer.h" />
+    <ClCompile Include="..\mono\mini\image-writer.c" />
+    <ClInclude Include="..\mono\mini\dwarfwriter.h" />
+    <ClCompile Include="..\mono\mini\dwarfwriter.c" />
+    <ClInclude Include="..\mono\mini\mini-gc.h" />
+    <ClCompile Include="..\mono\mini\mini-gc.c" />
+    <ClInclude Include="..\mono\mini\debugger-agent.h " />
+    <ClCompile Include="..\mono\mini\debugger-agent.c" />
+    <ClCompile Include="..\mono\mini\xdebug.c" />
+    <ClInclude Include="..\mono\mini\mini-llvm.h" />
+    <ClInclude Include="..\mono\mini\mini-llvm-cpp.h" />
+    <ClCompile Include="..\mono\mini\mini-native-types.c" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}</ProjectGuid>
+    <RootNamespace>libmono</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">monosgen-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">monosgen-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">monosgen-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-2.0</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">monosgen-2.0</TargetName>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <BrowseInformation>true</BrowseInformation>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <BrowseInformation>true</BrowseInformation>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <BrowseInformation>true</BrowseInformation>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <BrowseInformation>true</BrowseInformation>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+    <PreBuildEvent>
+      <Command>echo #define FULL_VERSION "Visual Studio built mono" &gt; ..\mono\mini\version.h</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>
+      </PrecompiledHeaderOutputFile>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\cil\opcode.def" "$(SolutionDir)include\mono\cil\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\mini\jit.h" "$(SolutionDir)include\mono\jit\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\metadata\*.h" "$(SolutionDir)include\mono\metadata\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-counters.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-dl-fallback.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-error.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-logger.h" "$(SolutionDir)include\mono\utils\"
+$(windir)\system32\xcopy /F /Y "$(SolutionDir)..\mono\utils\mono-publib.h" "$(SolutionDir)include\mono\utils\"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <CustomBuildStep Include="..\mono\mini\mini-x86.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">true</ExcludedFromBuild>
+    </CustomBuildStep>
+    <CustomBuildStep Include="..\mono\mini\mini-amd64.h">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">true</ExcludedFromBuild>
+    </CustomBuildStep>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libgc.vcxproj">
+      <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmonoruntime.vcxproj">
+      <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d739}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmonoutils.vcxproj">
+      <Project>{8fc2b0c8-51ad-49df-851f-5d01a77a75e4}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/libmonoruntime.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/libmonoruntime.vcxproj
@@ -1,483 +1,483 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_SGen|Win32">
-      <Configuration>Debug_SGen</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug_SGen|x64">
-      <Configuration>Debug_SGen</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|Win32">
-      <Configuration>Release_SGen</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|x64">
-      <Configuration>Release_SGen</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="mono.props" />
-  <ItemGroup>
-    <ClCompile Include="..\mono\metadata\appdomain.c" />
-    <ClCompile Include="..\mono\metadata\assembly.c" />
-    <ClCompile Include="..\mono\metadata\attach.c" />
-    <ClCompile Include="..\mono\metadata\boehm-gc.c" />
-    <ClCompile Include="..\mono\metadata\class.c" />
-    <ClCompile Include="..\mono\metadata\cominterop.c" />
-    <ClCompile Include="..\mono\metadata\console-win32.c" />
-    <ClCompile Include="..\mono\metadata\coree.c" />
-    <ClCompile Include="..\mono\metadata\debug-helpers.c" />
-    <ClCompile Include="..\mono\metadata\debug-mono-ppdb.c" />
-    <ClCompile Include="..\mono\metadata\debug-mono-symfile.c" />
-    <ClCompile Include="..\mono\metadata\decimal-ms.c" />
-    <ClCompile Include="..\mono\metadata\domain.c" />
-    <ClCompile Include="..\mono\metadata\environment.c" />
-    <ClCompile Include="..\mono\metadata\exception.c" />
-    <ClCompile Include="..\mono\metadata\file-io.c" />
-    <ClCompile Include="..\mono\metadata\file-mmap-windows.c" />
-    <ClCompile Include="..\mono\metadata\filewatcher.c" />
-    <ClCompile Include="..\mono\metadata\gc-stats.c" />
-    <ClCompile Include="..\mono\metadata\gc.c" />
-    <ClCompile Include="..\mono\metadata\handle.c" />
-    <ClCompile Include="..\mono\metadata\icall.c" />
-    <ClCompile Include="..\mono\metadata\image.c" />
-    <ClCompile Include="..\mono\metadata\jit-info.c" />
-    <ClCompile Include="..\mono\metadata\loader.c" />
-    <ClCompile Include="..\mono\metadata\locales.c" />
-    <ClCompile Include="..\mono\metadata\lock-tracer.c" />
-    <ClCompile Include="..\mono\metadata\marshal.c" />
-    <ClCompile Include="..\mono\metadata\mempool.c" />
-    <ClCompile Include="..\mono\metadata\metadata-verify.c" />
-    <ClCompile Include="..\mono\metadata\metadata.c" />
-    <ClCompile Include="..\mono\metadata\metadata-cross-helpers.c" />
-    <ClCompile Include="..\mono\metadata\method-builder.c" />
-    <ClCompile Include="..\mono\metadata\monitor.c" />
-    <ClCompile Include="..\mono\metadata\mono-basic-block.c" />
-    <ClCompile Include="..\mono\metadata\mono-config.c" />
-    <ClCompile Include="..\mono\metadata\mono-config-dirs.c" />
-    <ClCompile Include="..\mono\metadata\mono-debug.c" />
-    <ClCompile Include="..\mono\metadata\mono-endian.c" />
-    <ClCompile Include="..\mono\metadata\mono-hash.c" />
-    <ClCompile Include="..\mono\metadata\mono-mlist.c" />
-    <ClCompile Include="..\mono\metadata\mono-perfcounters.c" />
-    <ClCompile Include="..\mono\metadata\nacl-stub.c" />
-    <ClCompile Include="..\mono\metadata\null-gc.c" />
-    <ClCompile Include="..\mono\metadata\number-ms.c" />
-    <ClCompile Include="..\mono\metadata\object.c" />
-    <ClCompile Include="..\mono\metadata\opcodes.c" />
-    <ClCompile Include="..\mono\metadata\process.c" />
-    <ClCompile Include="..\mono\metadata\profiler.c" />
-    <ClCompile Include="..\mono\metadata\rand.c" />
-    <ClCompile Include="..\mono\metadata\reflection.c" />
-    <ClCompile Include="..\mono\metadata\runtime.c" />
-    <ClCompile Include="..\mono\metadata\security-core-clr.c" />
-    <ClCompile Include="..\mono\metadata\security-manager.c" />
-    <ClCompile Include="..\mono\metadata\mono-security.c" />
-    <ClCompile Include="..\mono\metadata\seq-points-data.c" />
-    <ClCompile Include="..\mono\metadata\sgen-mono.c" />
-    <ClCompile Include="..\mono\metadata\threadpool-ms-io.c" />
-    <ClCompile Include="..\mono\metadata\threadpool-ms.c" />
-    <ClCompile Include="..\mono\sgen\sgen-alloc.c" />
-    <ClCompile Include="..\mono\metadata\sgen-bridge.c" />
-    <ClCompile Include="..\mono\sgen\sgen-cardtable.c" />
-    <ClCompile Include="..\mono\sgen\sgen-debug.c" />
-    <ClCompile Include="..\mono\sgen\sgen-descriptor.c" />
-    <ClCompile Include="..\mono\sgen\sgen-gc.c" />
-    <ClCompile Include="..\mono\sgen\sgen-gchandles.c" />
-    <ClCompile Include="..\mono\sgen\sgen-gray.c" />
-    <ClCompile Include="..\mono\sgen\sgen-hash-table.c" />
-    <ClCompile Include="..\mono\sgen\sgen-internal.c" />
-    <ClCompile Include="..\mono\sgen\sgen-los.c" />
-    <ClCompile Include="..\mono\sgen\sgen-marksweep.c" />
-    <ClCompile Include="..\mono\sgen\sgen-memory-governor.c" />
-    <ClCompile Include="..\mono\metadata\sgen-new-bridge.c" />
-    <ClCompile Include="..\mono\sgen\sgen-nursery-allocator.c" />
-    <ClCompile Include="..\mono\metadata\sgen-old-bridge.c" />
-    <ClCompile Include="..\mono\metadata\sgen-os-mach.c" />
-    <ClCompile Include="..\mono\metadata\sgen-os-posix.c" />
-    <ClCompile Include="..\mono\metadata\sgen-os-win32.c" />
-    <ClCompile Include="..\mono\sgen\sgen-pinning-stats.c" />
-    <ClCompile Include="..\mono\sgen\sgen-pinning.c" />
-    <ClCompile Include="..\mono\sgen\sgen-pointer-queue.c" />
-    <ClCompile Include="..\mono\sgen\sgen-array-list.c" />
-    <ClCompile Include="..\mono\sgen\sgen-protocol.c" />
-    <ClCompile Include="..\mono\sgen\sgen-qsort.c" />
-    <ClCompile Include="..\mono\sgen\sgen-simple-nursery.c" />
-    <ClCompile Include="..\mono\sgen\sgen-split-nursery.c" />
-    <ClCompile Include="..\mono\metadata\sgen-tarjan-bridge.c" />
-    <ClCompile Include="..\mono\metadata\sgen-toggleref.c" />
-    <ClCompile Include="..\mono\sgen\sgen-thread-pool.c" />
-    <ClCompile Include="..\mono\sgen\sgen-workers.c" />
-    <ClCompile Include="..\mono\sgen\sgen-fin-weak-hash.c" />
-    <ClCompile Include="..\mono\metadata\sgen-stw.c" />
-    <ClCompile Include="..\mono\metadata\socket-io.c" />
-    <ClCompile Include="..\mono\metadata\string-icalls.c" />
-    <ClCompile Include="..\mono\metadata\sysmath.c" />
-    <ClCompile Include="..\mono\metadata\threads.c" />
-    <ClCompile Include="..\mono\metadata\verify.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\mono\metadata\appdomain.h" />
-    <ClInclude Include="..\mono\metadata\assembly.h" />
-    <ClInclude Include="..\mono\metadata\attach.h" />
-    <ClInclude Include="..\mono\metadata\char-conversions.h" />
-    <ClInclude Include="..\mono\metadata\cil-coff.h" />
-    <ClInclude Include="..\mono\metadata\class-internals.h" />
-    <ClInclude Include="..\mono\metadata\class.h" />
-    <ClInclude Include="..\mono\metadata\cominterop.h" />
-    <ClInclude Include="..\mono\metadata\console-io.h" />
-    <ClInclude Include="..\mono\metadata\coree.h" />
-    <ClInclude Include="..\mono\metadata\culture-info-tables.h" />
-    <ClInclude Include="..\mono\metadata\culture-info.h" />
-    <ClInclude Include="..\mono\metadata\debug-helpers.h" />
-    <ClInclude Include="..\mono\metadata\debug-mono-ppdb.h" />
-    <ClInclude Include="..\mono\metadata\debug-mono-symfile.h" />
-    <ClInclude Include="..\mono\metadata\decimal.h" />
-    <ClInclude Include="..\mono\metadata\domain-internals.h" />
-    <ClInclude Include="..\mono\metadata\environment.h" />
-    <ClInclude Include="..\mono\metadata\exception.h" />
-    <ClInclude Include="..\mono\metadata\file-io.h" />
-    <ClInclude Include="..\mono\metadata\filewatcher.h" />
-    <ClInclude Include="..\mono\metadata\gc-internals.h" />
-    <ClInclude Include="..\mono\metadata\handle.h" />
-    <ClInclude Include="..\mono\metadata\number-ms.h" />
-    <ClInclude Include="..\mono\metadata\seq-points-data.h" />
-    <ClInclude Include="..\mono\metadata\threadpool-ms-io.h" />
-    <ClInclude Include="..\mono\metadata\threadpool-ms.h" />
-    <ClInclude Include="..\mono\sgen\gc-internal-agnostic.h" />
-    <ClInclude Include="..\mono\metadata\icall-def.h" />
-    <ClInclude Include="..\mono\metadata\image.h" />
-    <ClInclude Include="..\mono\metadata\loader.h" />
-    <ClInclude Include="..\mono\metadata\locales.h" />
-    <ClInclude Include="..\mono\metadata\lock-tracer.h" />
-    <ClInclude Include="..\mono\metadata\marshal.h" />
-    <ClInclude Include="..\mono\metadata\mempool-internals.h" />
-    <ClInclude Include="..\mono\metadata\mempool.h" />
-    <ClInclude Include="..\mono\metadata\metadata-internals.h" />
-    <ClInclude Include="..\mono\metadata\metadata.h" />
-    <ClInclude Include="..\mono\metadata\method-builder.h" />
-    <ClInclude Include="..\mono\metadata\monitor.h" />
-    <ClInclude Include="..\mono\metadata\mono-basic-block.h" />
-    <ClInclude Include="..\mono\metadata\mono-config.h" />
-    <ClInclude Include="..\mono\metadata\mono-config-dirs.h" />
-    <ClInclude Include="..\mono\metadata\mono-debug-debugger.h" />
-    <ClInclude Include="..\mono\metadata\mono-debug.h" />
-    <ClInclude Include="..\mono\metadata\mono-endian.h" />
-    <ClInclude Include="..\mono\metadata\mono-hash.h" />
-    <ClInclude Include="..\mono\metadata\mono-mlist.h" />
-    <ClInclude Include="..\mono\metadata\mono-perfcounters-def.h" />
-    <ClInclude Include="..\mono\metadata\mono-perfcounters.h" />
-    <ClInclude Include="..\mono\metadata\mono-ptr-array.h" />
-    <ClInclude Include="..\mono\metadata\normalization-tables.h" />
-    <ClInclude Include="..\mono\metadata\number-formatter.h" />
-    <ClInclude Include="..\mono\metadata\object-internals.h" />
-    <ClInclude Include="..\mono\metadata\object.h" />
-    <ClInclude Include="..\mono\metadata\opcodes.h" />
-    <ClInclude Include="..\mono\metadata\process.h" />
-    <ClInclude Include="..\mono\metadata\profiler-private.h" />
-    <ClInclude Include="..\mono\metadata\profiler.h" />
-    <ClInclude Include="..\mono\metadata\rand.h" />
-    <ClInclude Include="..\mono\metadata\reflection.h" />
-    <ClInclude Include="..\mono\metadata\runtime.h" />
-    <ClInclude Include="..\mono\metadata\security-core-clr.h" />
-    <ClInclude Include="..\mono\metadata\security-manager.h" />
-    <ClInclude Include="..\mono\metadata\security.h" />
-    <ClInclude Include="..\mono\sgen\sgen-archdep.h" />
-    <ClInclude Include="..\mono\metadata\sgen-bridge.h" />
-    <ClInclude Include="..\mono\sgen\sgen-cardtable.h" />
-    <ClInclude Include="..\mono\sgen\sgen-conf.h" />
-    <ClInclude Include="..\mono\sgen\sgen-copy-object.h" />
-    <ClInclude Include="..\mono\sgen\sgen-descriptor.h" />
-    <ClInclude Include="..\mono\sgen\sgen-gc.h" />
-    <ClInclude Include="..\mono\sgen\sgen-gray.h" />
-    <ClInclude Include="..\mono\sgen\sgen-major-copy-object.h" />
-    <ClInclude Include="..\mono\sgen\sgen-major-scan-object.h" />
-    <ClInclude Include="..\mono\sgen\sgen-memory-governor.h" />
-    <ClInclude Include="..\mono\sgen\sgen-minor-copy-object.h" />
-    <ClInclude Include="..\mono\sgen\sgen-minor-scan-object.h" />
-    <ClInclude Include="..\mono\sgen\sgen-pinning.h" />
-    <ClInclude Include="..\mono\sgen\sgen-protocol.h" />
-    <ClInclude Include="..\mono\sgen\sgen-qsort.h" />
-    <ClInclude Include="..\mono\sgen\sgen-scan-object.h" />
-    <ClInclude Include="..\mono\metadata\sgen-toggleref.h" />
-    <ClInclude Include="..\mono\sgen\sgen-thread-pool.h" />
-    <ClInclude Include="..\mono\sgen\sgen-workers.h" />
-    <ClInclude Include="..\mono\metadata\socket-io.h" />
-    <ClInclude Include="..\mono\metadata\string-icalls.h" />
-    <ClInclude Include="..\mono\metadata\sysmath.h" />
-    <ClInclude Include="..\mono\metadata\tabledefs.h" />
-    <ClInclude Include="..\mono\metadata\threads-types.h" />
-    <ClInclude Include="..\mono\metadata\verify-internals.h" />
-    <ClInclude Include="..\mono\metadata\verify.h" />
-    <ClInclude Include="..\mono\metadata\wrapper-types.h" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>libmonoruntime</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <TargetName>$(ProjectName)sgen</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <TargetName>$(ProjectName)sgen</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <TargetName>$(ProjectName)sgen</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <TargetName>$(ProjectName)sgen</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <OmitFramePointers>false</OmitFramePointers>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);$(top_srcdir)\mono</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_SGen|Win32">
+      <Configuration>Debug_SGen</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug_SGen|x64">
+      <Configuration>Debug_SGen</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|Win32">
+      <Configuration>Release_SGen</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|x64">
+      <Configuration>Release_SGen</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="mono.props" />
+  <ItemGroup>
+    <ClCompile Include="..\mono\metadata\appdomain.c" />
+    <ClCompile Include="..\mono\metadata\assembly.c" />
+    <ClCompile Include="..\mono\metadata\attach.c" />
+    <ClCompile Include="..\mono\metadata\boehm-gc.c" />
+    <ClCompile Include="..\mono\metadata\class.c" />
+    <ClCompile Include="..\mono\metadata\cominterop.c" />
+    <ClCompile Include="..\mono\metadata\console-win32.c" />
+    <ClCompile Include="..\mono\metadata\coree.c" />
+    <ClCompile Include="..\mono\metadata\debug-helpers.c" />
+    <ClCompile Include="..\mono\metadata\debug-mono-ppdb.c" />
+    <ClCompile Include="..\mono\metadata\debug-mono-symfile.c" />
+    <ClCompile Include="..\mono\metadata\decimal-ms.c" />
+    <ClCompile Include="..\mono\metadata\domain.c" />
+    <ClCompile Include="..\mono\metadata\environment.c" />
+    <ClCompile Include="..\mono\metadata\exception.c" />
+    <ClCompile Include="..\mono\metadata\file-io.c" />
+    <ClCompile Include="..\mono\metadata\file-mmap-windows.c" />
+    <ClCompile Include="..\mono\metadata\filewatcher.c" />
+    <ClCompile Include="..\mono\metadata\gc-stats.c" />
+    <ClCompile Include="..\mono\metadata\gc.c" />
+    <ClCompile Include="..\mono\metadata\handle.c" />
+    <ClCompile Include="..\mono\metadata\icall.c" />
+    <ClCompile Include="..\mono\metadata\image.c" />
+    <ClCompile Include="..\mono\metadata\jit-info.c" />
+    <ClCompile Include="..\mono\metadata\loader.c" />
+    <ClCompile Include="..\mono\metadata\locales.c" />
+    <ClCompile Include="..\mono\metadata\lock-tracer.c" />
+    <ClCompile Include="..\mono\metadata\marshal.c" />
+    <ClCompile Include="..\mono\metadata\mempool.c" />
+    <ClCompile Include="..\mono\metadata\metadata-verify.c" />
+    <ClCompile Include="..\mono\metadata\metadata.c" />
+    <ClCompile Include="..\mono\metadata\metadata-cross-helpers.c" />
+    <ClCompile Include="..\mono\metadata\method-builder.c" />
+    <ClCompile Include="..\mono\metadata\monitor.c" />
+    <ClCompile Include="..\mono\metadata\mono-basic-block.c" />
+    <ClCompile Include="..\mono\metadata\mono-config.c" />
+    <ClCompile Include="..\mono\metadata\mono-config-dirs.c" />
+    <ClCompile Include="..\mono\metadata\mono-debug.c" />
+    <ClCompile Include="..\mono\metadata\mono-endian.c" />
+    <ClCompile Include="..\mono\metadata\mono-hash.c" />
+    <ClCompile Include="..\mono\metadata\mono-mlist.c" />
+    <ClCompile Include="..\mono\metadata\mono-perfcounters.c" />
+    <ClCompile Include="..\mono\metadata\nacl-stub.c" />
+    <ClCompile Include="..\mono\metadata\null-gc.c" />
+    <ClCompile Include="..\mono\metadata\number-ms.c" />
+    <ClCompile Include="..\mono\metadata\object.c" />
+    <ClCompile Include="..\mono\metadata\opcodes.c" />
+    <ClCompile Include="..\mono\metadata\process.c" />
+    <ClCompile Include="..\mono\metadata\profiler.c" />
+    <ClCompile Include="..\mono\metadata\rand.c" />
+    <ClCompile Include="..\mono\metadata\reflection.c" />
+    <ClCompile Include="..\mono\metadata\runtime.c" />
+    <ClCompile Include="..\mono\metadata\security-core-clr.c" />
+    <ClCompile Include="..\mono\metadata\security-manager.c" />
+    <ClCompile Include="..\mono\metadata\mono-security.c" />
+    <ClCompile Include="..\mono\metadata\seq-points-data.c" />
+    <ClCompile Include="..\mono\metadata\sgen-mono.c" />
+    <ClCompile Include="..\mono\metadata\threadpool-ms-io.c" />
+    <ClCompile Include="..\mono\metadata\threadpool-ms.c" />
+    <ClCompile Include="..\mono\sgen\sgen-alloc.c" />
+    <ClCompile Include="..\mono\metadata\sgen-bridge.c" />
+    <ClCompile Include="..\mono\sgen\sgen-cardtable.c" />
+    <ClCompile Include="..\mono\sgen\sgen-debug.c" />
+    <ClCompile Include="..\mono\sgen\sgen-descriptor.c" />
+    <ClCompile Include="..\mono\sgen\sgen-gc.c" />
+    <ClCompile Include="..\mono\sgen\sgen-gchandles.c" />
+    <ClCompile Include="..\mono\sgen\sgen-gray.c" />
+    <ClCompile Include="..\mono\sgen\sgen-hash-table.c" />
+    <ClCompile Include="..\mono\sgen\sgen-internal.c" />
+    <ClCompile Include="..\mono\sgen\sgen-los.c" />
+    <ClCompile Include="..\mono\sgen\sgen-marksweep.c" />
+    <ClCompile Include="..\mono\sgen\sgen-memory-governor.c" />
+    <ClCompile Include="..\mono\metadata\sgen-new-bridge.c" />
+    <ClCompile Include="..\mono\sgen\sgen-nursery-allocator.c" />
+    <ClCompile Include="..\mono\metadata\sgen-old-bridge.c" />
+    <ClCompile Include="..\mono\metadata\sgen-os-mach.c" />
+    <ClCompile Include="..\mono\metadata\sgen-os-posix.c" />
+    <ClCompile Include="..\mono\metadata\sgen-os-win32.c" />
+    <ClCompile Include="..\mono\sgen\sgen-pinning-stats.c" />
+    <ClCompile Include="..\mono\sgen\sgen-pinning.c" />
+    <ClCompile Include="..\mono\sgen\sgen-pointer-queue.c" />
+    <ClCompile Include="..\mono\sgen\sgen-array-list.c" />
+    <ClCompile Include="..\mono\sgen\sgen-protocol.c" />
+    <ClCompile Include="..\mono\sgen\sgen-qsort.c" />
+    <ClCompile Include="..\mono\sgen\sgen-simple-nursery.c" />
+    <ClCompile Include="..\mono\sgen\sgen-split-nursery.c" />
+    <ClCompile Include="..\mono\metadata\sgen-tarjan-bridge.c" />
+    <ClCompile Include="..\mono\metadata\sgen-toggleref.c" />
+    <ClCompile Include="..\mono\sgen\sgen-thread-pool.c" />
+    <ClCompile Include="..\mono\sgen\sgen-workers.c" />
+    <ClCompile Include="..\mono\sgen\sgen-fin-weak-hash.c" />
+    <ClCompile Include="..\mono\metadata\sgen-stw.c" />
+    <ClCompile Include="..\mono\metadata\socket-io.c" />
+    <ClCompile Include="..\mono\metadata\string-icalls.c" />
+    <ClCompile Include="..\mono\metadata\sysmath.c" />
+    <ClCompile Include="..\mono\metadata\threads.c" />
+    <ClCompile Include="..\mono\metadata\verify.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\mono\metadata\appdomain.h" />
+    <ClInclude Include="..\mono\metadata\assembly.h" />
+    <ClInclude Include="..\mono\metadata\attach.h" />
+    <ClInclude Include="..\mono\metadata\char-conversions.h" />
+    <ClInclude Include="..\mono\metadata\cil-coff.h" />
+    <ClInclude Include="..\mono\metadata\class-internals.h" />
+    <ClInclude Include="..\mono\metadata\class.h" />
+    <ClInclude Include="..\mono\metadata\cominterop.h" />
+    <ClInclude Include="..\mono\metadata\console-io.h" />
+    <ClInclude Include="..\mono\metadata\coree.h" />
+    <ClInclude Include="..\mono\metadata\culture-info-tables.h" />
+    <ClInclude Include="..\mono\metadata\culture-info.h" />
+    <ClInclude Include="..\mono\metadata\debug-helpers.h" />
+    <ClInclude Include="..\mono\metadata\debug-mono-ppdb.h" />
+    <ClInclude Include="..\mono\metadata\debug-mono-symfile.h" />
+    <ClInclude Include="..\mono\metadata\decimal.h" />
+    <ClInclude Include="..\mono\metadata\domain-internals.h" />
+    <ClInclude Include="..\mono\metadata\environment.h" />
+    <ClInclude Include="..\mono\metadata\exception.h" />
+    <ClInclude Include="..\mono\metadata\file-io.h" />
+    <ClInclude Include="..\mono\metadata\filewatcher.h" />
+    <ClInclude Include="..\mono\metadata\gc-internals.h" />
+    <ClInclude Include="..\mono\metadata\handle.h" />
+    <ClInclude Include="..\mono\metadata\number-ms.h" />
+    <ClInclude Include="..\mono\metadata\seq-points-data.h" />
+    <ClInclude Include="..\mono\metadata\threadpool-ms-io.h" />
+    <ClInclude Include="..\mono\metadata\threadpool-ms.h" />
+    <ClInclude Include="..\mono\sgen\gc-internal-agnostic.h" />
+    <ClInclude Include="..\mono\metadata\icall-def.h" />
+    <ClInclude Include="..\mono\metadata\image.h" />
+    <ClInclude Include="..\mono\metadata\loader.h" />
+    <ClInclude Include="..\mono\metadata\locales.h" />
+    <ClInclude Include="..\mono\metadata\lock-tracer.h" />
+    <ClInclude Include="..\mono\metadata\marshal.h" />
+    <ClInclude Include="..\mono\metadata\mempool-internals.h" />
+    <ClInclude Include="..\mono\metadata\mempool.h" />
+    <ClInclude Include="..\mono\metadata\metadata-internals.h" />
+    <ClInclude Include="..\mono\metadata\metadata.h" />
+    <ClInclude Include="..\mono\metadata\method-builder.h" />
+    <ClInclude Include="..\mono\metadata\monitor.h" />
+    <ClInclude Include="..\mono\metadata\mono-basic-block.h" />
+    <ClInclude Include="..\mono\metadata\mono-config.h" />
+    <ClInclude Include="..\mono\metadata\mono-config-dirs.h" />
+    <ClInclude Include="..\mono\metadata\mono-debug-debugger.h" />
+    <ClInclude Include="..\mono\metadata\mono-debug.h" />
+    <ClInclude Include="..\mono\metadata\mono-endian.h" />
+    <ClInclude Include="..\mono\metadata\mono-hash.h" />
+    <ClInclude Include="..\mono\metadata\mono-mlist.h" />
+    <ClInclude Include="..\mono\metadata\mono-perfcounters-def.h" />
+    <ClInclude Include="..\mono\metadata\mono-perfcounters.h" />
+    <ClInclude Include="..\mono\metadata\mono-ptr-array.h" />
+    <ClInclude Include="..\mono\metadata\normalization-tables.h" />
+    <ClInclude Include="..\mono\metadata\number-formatter.h" />
+    <ClInclude Include="..\mono\metadata\object-internals.h" />
+    <ClInclude Include="..\mono\metadata\object.h" />
+    <ClInclude Include="..\mono\metadata\opcodes.h" />
+    <ClInclude Include="..\mono\metadata\process.h" />
+    <ClInclude Include="..\mono\metadata\profiler-private.h" />
+    <ClInclude Include="..\mono\metadata\profiler.h" />
+    <ClInclude Include="..\mono\metadata\rand.h" />
+    <ClInclude Include="..\mono\metadata\reflection.h" />
+    <ClInclude Include="..\mono\metadata\runtime.h" />
+    <ClInclude Include="..\mono\metadata\security-core-clr.h" />
+    <ClInclude Include="..\mono\metadata\security-manager.h" />
+    <ClInclude Include="..\mono\metadata\security.h" />
+    <ClInclude Include="..\mono\sgen\sgen-archdep.h" />
+    <ClInclude Include="..\mono\metadata\sgen-bridge.h" />
+    <ClInclude Include="..\mono\sgen\sgen-cardtable.h" />
+    <ClInclude Include="..\mono\sgen\sgen-conf.h" />
+    <ClInclude Include="..\mono\sgen\sgen-copy-object.h" />
+    <ClInclude Include="..\mono\sgen\sgen-descriptor.h" />
+    <ClInclude Include="..\mono\sgen\sgen-gc.h" />
+    <ClInclude Include="..\mono\sgen\sgen-gray.h" />
+    <ClInclude Include="..\mono\sgen\sgen-major-copy-object.h" />
+    <ClInclude Include="..\mono\sgen\sgen-major-scan-object.h" />
+    <ClInclude Include="..\mono\sgen\sgen-memory-governor.h" />
+    <ClInclude Include="..\mono\sgen\sgen-minor-copy-object.h" />
+    <ClInclude Include="..\mono\sgen\sgen-minor-scan-object.h" />
+    <ClInclude Include="..\mono\sgen\sgen-pinning.h" />
+    <ClInclude Include="..\mono\sgen\sgen-protocol.h" />
+    <ClInclude Include="..\mono\sgen\sgen-qsort.h" />
+    <ClInclude Include="..\mono\sgen\sgen-scan-object.h" />
+    <ClInclude Include="..\mono\metadata\sgen-toggleref.h" />
+    <ClInclude Include="..\mono\sgen\sgen-thread-pool.h" />
+    <ClInclude Include="..\mono\sgen\sgen-workers.h" />
+    <ClInclude Include="..\mono\metadata\socket-io.h" />
+    <ClInclude Include="..\mono\metadata\string-icalls.h" />
+    <ClInclude Include="..\mono\metadata\sysmath.h" />
+    <ClInclude Include="..\mono\metadata\tabledefs.h" />
+    <ClInclude Include="..\mono\metadata\threads-types.h" />
+    <ClInclude Include="..\mono\metadata\verify-internals.h" />
+    <ClInclude Include="..\mono\metadata\verify.h" />
+    <ClInclude Include="..\mono\metadata\wrapper-types.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>libmonoruntime</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)sgen</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)sgen</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)sgen</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName>$(ProjectName)sgen</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <OmitFramePointers>false</OmitFramePointers>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE);$(top_srcdir)\mono</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;$(BOEHM_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;$(SGEN_DEFINES);NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
--- mono-4.6.2.7+dfsg.orig/msvc/libmonoutils.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/libmonoutils.vcxproj
@@ -1,309 +1,309 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="mono.props" />
-  <ItemGroup>
-    <ClCompile Include="..\mono\utils\dlmalloc.c" />
-    <ClCompile Include="..\mono\utils\hazard-pointer.c" />
-    <ClCompile Include="..\mono\utils\json.c" />
-    <ClCompile Include="..\mono\utils\lock-free-alloc.c" />
-    <ClCompile Include="..\mono\utils\lock-free-array-queue.c" />
-    <ClCompile Include="..\mono\utils\lock-free-queue.c" />
-    <ClCompile Include="..\mono\utils\mach-support-amd64.c" />
-    <ClCompile Include="..\mono\utils\mach-support-arm.c" />
-    <ClCompile Include="..\mono\utils\mach-support-x86.c" />
-    <ClCompile Include="..\mono\utils\mach-support.c" />
-    <ClCompile Include="..\mono\utils\mono-codeman.c" />
-    <ClCompile Include="..\mono\utils\mono-conc-hashtable.c" />
-    <ClCompile Include="..\mono\utils\mono-context.c" />
-    <ClCompile Include="..\mono\utils\mono-counters.c" />
-    <ClCompile Include="..\mono\utils\mono-dl-windows.c" />
-    <ClCompile Include="..\mono\utils\mono-dl.c" />
-    <ClCompile Include="..\mono\utils\mono-error.c" />
-    <ClCompile Include="..\mono\utils\mono-filemap.c" />
-    <ClCompile Include="..\mono\utils\mono-internal-hash.c" />
-    <ClCompile Include="..\mono\utils\mono-io-portability.c" />
-    <ClCompile Include="..\mono\utils\mono-linked-list-set.c" />
-    <ClCompile Include="..\mono\utils\mono-logger.c" />
-    <ClCompile Include="..\mono\utils\mono-math.c" />
-    <ClCompile Include="..\mono\utils\mono-md5.c" />
-    <ClCompile Include="..\mono\utils\mono-mmap.c" />
-    <ClCompile Include="..\mono\utils\mono-networkinterfaces.c" />
-    <ClCompile Include="..\mono\utils\mono-rand.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-state-machine.c" />
-    <ClCompile Include="..\mono\utils\networking.c" />
-    <ClCompile Include="..\mono\utils\networking-posix.c" />
-    <ClCompile Include="..\mono\utils\networking-missing.c" />
-    <ClCompile Include="..\mono\utils\networking-windows.c" />
-    <ClCompile Include="..\mono\utils\mono-path.c" />
-    <ClCompile Include="..\mono\utils\mono-poll.c" />
-    <ClCompile Include="..\mono\utils\mono-proclib.c" />
-    <ClCompile Include="..\mono\utils\mono-property-hash.c" />
-    <ClCompile Include="..\mono\utils\mono-publib.c" />
-    <ClCompile Include="..\mono\utils\mono-sha1.c" />
-    <ClCompile Include="..\mono\utils\mono-stdlib.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-mach.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-posix.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-posix-signals.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-windows.c" />
-    <ClCompile Include="..\mono\utils\mono-threads.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-coop.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-posix-abort-syscall.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-mach-abort-syscall.c" />
-    <ClCompile Include="..\mono\utils\mono-threads-windows-abort-syscall.c" />
-    <ClCompile Include="..\mono\utils\mono-time.c" />
-    <ClCompile Include="..\mono\utils\mono-tls.c" />
-    <ClCompile Include="..\mono\utils\mono-uri.c" />
-    <ClCompile Include="..\mono\utils\mono-value-hash.c" />
-    <ClCompile Include="..\mono\utils\monobitset.c" />
-    <ClCompile Include="..\mono\utils\strenc.c" />
-    <ClCompile Include="..\mono\utils\atomic.c" />
-    <ClCompile Include="..\mono\utils\mono-hwcap.c" />
-    <ClCompile Include="..\mono\utils\mono-hwcap-x86.c" />
-    <ClCompile Include="..\mono\utils\bsearch.c" />
-    <ClCompile Include="..\mono\utils\memfuncs.c" />
-    <ClCompile Include="..\mono\utils\parse.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\mono\utils\dlmalloc.h" />
-    <ClInclude Include="..\mono\utils\dtrace.h" />
-    <ClInclude Include="..\mono\utils\freebsd-dwarf.h" />
-    <ClInclude Include="..\mono\utils\freebsd-elf32.h" />
-    <ClInclude Include="..\mono\utils\freebsd-elf64.h" />
-    <ClInclude Include="..\mono\utils\freebsd-elf_common.h" />
-    <ClInclude Include="..\mono\utils\gc_wrapper.h" />
-    <ClInclude Include="..\mono\utils\hazard-pointer.h" />
-    <ClInclude Include="..\mono\utils\json.h" />
-    <ClInclude Include="..\mono\utils\linux_magic.h" />
-    <ClInclude Include="..\mono\utils\lock-free-alloc.h" />
-    <ClInclude Include="..\mono\utils\lock-free-array-queue.h" />
-    <ClInclude Include="..\mono\utils\lock-free-queue.h" />
-    <ClInclude Include="..\mono\utils\mach-support.h" />
-    <ClInclude Include="..\mono\utils\memcheck.h" />
-    <ClInclude Include="..\mono\utils\mono-codeman.h" />
-    <ClInclude Include="..\mono\utils\mono-compiler.h" />
-    <ClInclude Include="..\mono\utils\mono-complex.h" />
-    <ClInclude Include="..\mono\utils\mono-conc-hashtable.h" />
-    <ClInclude Include="..\mono\utils\mono-context.h" />
-    <ClInclude Include="..\mono\utils\mono-coop-mutex.h" />
-    <ClInclude Include="..\mono\utils\mono-coop-semaphore.h" />
-    <ClInclude Include="..\mono\utils\mono-counters.h" />
-    <ClInclude Include="..\mono\utils\mono-digest.h" />
-    <ClInclude Include="..\mono\utils\mono-dl-fallback.h" />
-    <ClInclude Include="..\mono\utils\mono-dl.h" />
-    <ClInclude Include="..\mono\utils\mono-error-internals.h" />
-    <ClInclude Include="..\mono\utils\mono-error.h" />
-    <ClInclude Include="..\mono\utils\mono-internal-hash.h" />
-    <ClInclude Include="..\mono\utils\mono-io-portability.h" />
-    <ClInclude Include="..\mono\utils\mono-linked-list-set.h" />
-    <ClInclude Include="..\mono\utils\mono-logger-internals.h" />
-    <ClInclude Include="..\mono\utils\mono-logger.h" />
-    <ClInclude Include="..\mono\utils\mono-machine.h" />
-    <ClInclude Include="..\mono\utils\mono-math.h" />
-    <ClInclude Include="..\mono\utils\mono-membar.h" />
-    <ClInclude Include="..\mono\utils\mono-memory-model.h" />
-    <ClInclude Include="..\mono\utils\mono-mmap.h" />
-    <ClInclude Include="..\mono\utils\mono-networkinterfaces.h" />
-    <ClInclude Include="..\mono\utils\mono-once.h" />
-    <ClInclude Include="..\mono\utils\mono-os-mutex.h" />
-    <ClInclude Include="..\mono\utils\mono-os-semaphore.h" />
-    <ClInclude Include="..\mono\utils\mono-path.h" />
-    <ClInclude Include="..\mono\utils\mono-poll.h" />
-    <ClInclude Include="..\mono\utils\mono-proclib.h" />
-    <ClInclude Include="..\mono\utils\mono-property-hash.h" />
-    <ClInclude Include="..\mono\utils\mono-publib.h" />
-    <ClInclude Include="..\mono\utils\mono-rand.h" />
-    <ClInclude Include="..\mono\utils\mono-sigcontext.h" />
-    <ClInclude Include="..\mono\utils\mono-stack-unwinding.h" />
-    <ClInclude Include="..\mono\utils\mono-stdlib.h" />
-    <ClInclude Include="..\mono\utils\mono-string.h" />
-    <ClInclude Include="..\mono\utils\mono-threads.h" />
-    <ClInclude Include="..\mono\utils\mono-threads-api.h" />
-    <ClInclude Include="..\mono\utils\mono-threads-coop.h" />
-    <ClInclude Include="..\mono\utils\mono-threads-posix-signals.h" />
-    <ClInclude Include="..\mono\utils\mono-time.h" />
-    <ClInclude Include="..\mono\utils\mono-tls.h" />
-    <ClInclude Include="..\mono\utils\mono-uri.h" />
-    <ClInclude Include="..\mono\utils\mono-value-hash.h" />
-    <ClInclude Include="..\mono\utils\monobitset.h" />
-    <ClInclude Include="..\mono\utils\strenc.h" />
-    <ClInclude Include="..\mono\utils\valgrind.h" />
-    <ClInclude Include="..\mono\utils\atomic.h" />
-    <ClInclude Include="..\mono\utils\mono-hwcap.h" />
-    <ClInclude Include="..\mono\utils\mono-hwcap-x86.h" />
-    <ClInclude Include="..\mono\utils\bsearch.h" />
-    <ClInclude Include="..\mono\utils\memfuncs.h" />
-    <ClInclude Include="..\mono\utils\parse.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <MASM Include="..\mono\utils\win64.asm">
-      <FileType>Document</FileType>
-    </MASM>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>libmonoutils</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project=".\masm.fixed.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
-    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/eglib/src;$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <MASM>
-      <PreprocessorDefinitions>X64</PreprocessorDefinitions>
-    </MASM>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-    <PreBuildEvent>
-      <Command>winsetup.bat</Command>
-    </PreBuildEvent>
-    <MASM>
-      <PreprocessorDefinitions>X64</PreprocessorDefinitions>
-    </MASM>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
-  </ImportGroup>
-</Project>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="mono.props" />
+  <ItemGroup>
+    <ClCompile Include="..\mono\utils\dlmalloc.c" />
+    <ClCompile Include="..\mono\utils\hazard-pointer.c" />
+    <ClCompile Include="..\mono\utils\json.c" />
+    <ClCompile Include="..\mono\utils\lock-free-alloc.c" />
+    <ClCompile Include="..\mono\utils\lock-free-array-queue.c" />
+    <ClCompile Include="..\mono\utils\lock-free-queue.c" />
+    <ClCompile Include="..\mono\utils\mach-support-amd64.c" />
+    <ClCompile Include="..\mono\utils\mach-support-arm.c" />
+    <ClCompile Include="..\mono\utils\mach-support-x86.c" />
+    <ClCompile Include="..\mono\utils\mach-support.c" />
+    <ClCompile Include="..\mono\utils\mono-codeman.c" />
+    <ClCompile Include="..\mono\utils\mono-conc-hashtable.c" />
+    <ClCompile Include="..\mono\utils\mono-context.c" />
+    <ClCompile Include="..\mono\utils\mono-counters.c" />
+    <ClCompile Include="..\mono\utils\mono-dl-windows.c" />
+    <ClCompile Include="..\mono\utils\mono-dl.c" />
+    <ClCompile Include="..\mono\utils\mono-error.c" />
+    <ClCompile Include="..\mono\utils\mono-filemap.c" />
+    <ClCompile Include="..\mono\utils\mono-internal-hash.c" />
+    <ClCompile Include="..\mono\utils\mono-io-portability.c" />
+    <ClCompile Include="..\mono\utils\mono-linked-list-set.c" />
+    <ClCompile Include="..\mono\utils\mono-logger.c" />
+    <ClCompile Include="..\mono\utils\mono-math.c" />
+    <ClCompile Include="..\mono\utils\mono-md5.c" />
+    <ClCompile Include="..\mono\utils\mono-mmap.c" />
+    <ClCompile Include="..\mono\utils\mono-networkinterfaces.c" />
+    <ClCompile Include="..\mono\utils\mono-rand.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-state-machine.c" />
+    <ClCompile Include="..\mono\utils\networking.c" />
+    <ClCompile Include="..\mono\utils\networking-posix.c" />
+    <ClCompile Include="..\mono\utils\networking-missing.c" />
+    <ClCompile Include="..\mono\utils\networking-windows.c" />
+    <ClCompile Include="..\mono\utils\mono-path.c" />
+    <ClCompile Include="..\mono\utils\mono-poll.c" />
+    <ClCompile Include="..\mono\utils\mono-proclib.c" />
+    <ClCompile Include="..\mono\utils\mono-property-hash.c" />
+    <ClCompile Include="..\mono\utils\mono-publib.c" />
+    <ClCompile Include="..\mono\utils\mono-sha1.c" />
+    <ClCompile Include="..\mono\utils\mono-stdlib.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-mach.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-posix.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-posix-signals.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-windows.c" />
+    <ClCompile Include="..\mono\utils\mono-threads.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-coop.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-posix-abort-syscall.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-mach-abort-syscall.c" />
+    <ClCompile Include="..\mono\utils\mono-threads-windows-abort-syscall.c" />
+    <ClCompile Include="..\mono\utils\mono-time.c" />
+    <ClCompile Include="..\mono\utils\mono-tls.c" />
+    <ClCompile Include="..\mono\utils\mono-uri.c" />
+    <ClCompile Include="..\mono\utils\mono-value-hash.c" />
+    <ClCompile Include="..\mono\utils\monobitset.c" />
+    <ClCompile Include="..\mono\utils\strenc.c" />
+    <ClCompile Include="..\mono\utils\atomic.c" />
+    <ClCompile Include="..\mono\utils\mono-hwcap.c" />
+    <ClCompile Include="..\mono\utils\mono-hwcap-x86.c" />
+    <ClCompile Include="..\mono\utils\bsearch.c" />
+    <ClCompile Include="..\mono\utils\memfuncs.c" />
+    <ClCompile Include="..\mono\utils\parse.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\mono\utils\dlmalloc.h" />
+    <ClInclude Include="..\mono\utils\dtrace.h" />
+    <ClInclude Include="..\mono\utils\freebsd-dwarf.h" />
+    <ClInclude Include="..\mono\utils\freebsd-elf32.h" />
+    <ClInclude Include="..\mono\utils\freebsd-elf64.h" />
+    <ClInclude Include="..\mono\utils\freebsd-elf_common.h" />
+    <ClInclude Include="..\mono\utils\gc_wrapper.h" />
+    <ClInclude Include="..\mono\utils\hazard-pointer.h" />
+    <ClInclude Include="..\mono\utils\json.h" />
+    <ClInclude Include="..\mono\utils\linux_magic.h" />
+    <ClInclude Include="..\mono\utils\lock-free-alloc.h" />
+    <ClInclude Include="..\mono\utils\lock-free-array-queue.h" />
+    <ClInclude Include="..\mono\utils\lock-free-queue.h" />
+    <ClInclude Include="..\mono\utils\mach-support.h" />
+    <ClInclude Include="..\mono\utils\memcheck.h" />
+    <ClInclude Include="..\mono\utils\mono-codeman.h" />
+    <ClInclude Include="..\mono\utils\mono-compiler.h" />
+    <ClInclude Include="..\mono\utils\mono-complex.h" />
+    <ClInclude Include="..\mono\utils\mono-conc-hashtable.h" />
+    <ClInclude Include="..\mono\utils\mono-context.h" />
+    <ClInclude Include="..\mono\utils\mono-coop-mutex.h" />
+    <ClInclude Include="..\mono\utils\mono-coop-semaphore.h" />
+    <ClInclude Include="..\mono\utils\mono-counters.h" />
+    <ClInclude Include="..\mono\utils\mono-digest.h" />
+    <ClInclude Include="..\mono\utils\mono-dl-fallback.h" />
+    <ClInclude Include="..\mono\utils\mono-dl.h" />
+    <ClInclude Include="..\mono\utils\mono-error-internals.h" />
+    <ClInclude Include="..\mono\utils\mono-error.h" />
+    <ClInclude Include="..\mono\utils\mono-internal-hash.h" />
+    <ClInclude Include="..\mono\utils\mono-io-portability.h" />
+    <ClInclude Include="..\mono\utils\mono-linked-list-set.h" />
+    <ClInclude Include="..\mono\utils\mono-logger-internals.h" />
+    <ClInclude Include="..\mono\utils\mono-logger.h" />
+    <ClInclude Include="..\mono\utils\mono-machine.h" />
+    <ClInclude Include="..\mono\utils\mono-math.h" />
+    <ClInclude Include="..\mono\utils\mono-membar.h" />
+    <ClInclude Include="..\mono\utils\mono-memory-model.h" />
+    <ClInclude Include="..\mono\utils\mono-mmap.h" />
+    <ClInclude Include="..\mono\utils\mono-networkinterfaces.h" />
+    <ClInclude Include="..\mono\utils\mono-once.h" />
+    <ClInclude Include="..\mono\utils\mono-os-mutex.h" />
+    <ClInclude Include="..\mono\utils\mono-os-semaphore.h" />
+    <ClInclude Include="..\mono\utils\mono-path.h" />
+    <ClInclude Include="..\mono\utils\mono-poll.h" />
+    <ClInclude Include="..\mono\utils\mono-proclib.h" />
+    <ClInclude Include="..\mono\utils\mono-property-hash.h" />
+    <ClInclude Include="..\mono\utils\mono-publib.h" />
+    <ClInclude Include="..\mono\utils\mono-rand.h" />
+    <ClInclude Include="..\mono\utils\mono-sigcontext.h" />
+    <ClInclude Include="..\mono\utils\mono-stack-unwinding.h" />
+    <ClInclude Include="..\mono\utils\mono-stdlib.h" />
+    <ClInclude Include="..\mono\utils\mono-string.h" />
+    <ClInclude Include="..\mono\utils\mono-threads.h" />
+    <ClInclude Include="..\mono\utils\mono-threads-api.h" />
+    <ClInclude Include="..\mono\utils\mono-threads-coop.h" />
+    <ClInclude Include="..\mono\utils\mono-threads-posix-signals.h" />
+    <ClInclude Include="..\mono\utils\mono-time.h" />
+    <ClInclude Include="..\mono\utils\mono-tls.h" />
+    <ClInclude Include="..\mono\utils\mono-uri.h" />
+    <ClInclude Include="..\mono\utils\mono-value-hash.h" />
+    <ClInclude Include="..\mono\utils\monobitset.h" />
+    <ClInclude Include="..\mono\utils\strenc.h" />
+    <ClInclude Include="..\mono\utils\valgrind.h" />
+    <ClInclude Include="..\mono\utils\atomic.h" />
+    <ClInclude Include="..\mono\utils\mono-hwcap.h" />
+    <ClInclude Include="..\mono\utils\mono-hwcap-x86.h" />
+    <ClInclude Include="..\mono\utils\bsearch.h" />
+    <ClInclude Include="..\mono\utils\memfuncs.h" />
+    <ClInclude Include="..\mono\utils\parse.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <MASM Include="..\mono\utils\win64.asm">
+      <FileType>Document</FileType>
+    </MASM>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>libmonoutils</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+    <Import Project=".\masm.fixed.props" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <OutDir>$(Platform)\lib\$(Configuration)\</OutDir>
+    <IntDir>$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/eglib/src;$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <MASM>
+      <PreprocessorDefinitions>X64</PreprocessorDefinitions>
+    </MASM>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(top_srcdir);$(top_srcdir)/mono;$(LIBGC_CPPFLAGS_INCLUDE);$(GLIB_CFLAGS_INCLUDE)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+    <PreBuildEvent>
+      <Command>winsetup.bat</Command>
+    </PreBuildEvent>
+    <MASM>
+      <PreprocessorDefinitions>X64</PreprocessorDefinitions>
+    </MASM>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
+  </ImportGroup>
+</Project>
--- mono-4.6.2.7+dfsg.orig/msvc/libtest.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/libtest.vcxproj
@@ -1,207 +1,207 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="mono.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}</ProjectGuid>
-    <RootNamespace>libtest</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\mono\tests\libtest.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="mono.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}</ProjectGuid>
+    <RootNamespace>libtest</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\tests\libtest.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/mono.sln
+++ mono-4.6.2.7+dfsg/msvc/mono.sln
@@ -1,313 +1,313 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Embedded Samples", "Embedded Samples", "{5FE09AA5-C3C9-45EA-A323-36A11B653CEC}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{EE2CC761-9652-44AC-9204-7EB31194CAA6}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{0EBA83B7-0EB4-4C83-A900-77300A97E8B1}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{ECA11C76-E192-4F67-A8FA-28B637D9716F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "genmdesc.vcxproj", "{B7098DFA-31E6-4006-8A15-1C9A4E925149}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono", "libmono.vcxproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}"
-	ProjectSection(ProjectDependencies) = postProject
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739} = {C36612BD-22D3-4B95-85E2-7FDC4FC5D739}
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-invoke", "test-invoke.vcxproj", "{C5639B3F-288A-4A4B-A4A5-C0D85834221D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teste", "teste.vcxproj", "{6FDE4E5E-57D0-432F-A987-6C226A7827E4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono", "mono.vcxproj", "{A0EDDCD9-940F-432C-A28F-7EF322437D79}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgc", "libgc.vcxproj", "{EB56000B-C80B-4E8B-908D-D84D31B517D3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcxproj", "{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcxproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcxproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcxproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eglib", "eglib.vcxproj", "{158073ED-99AE-4196-9EDC-DDB2344F8466}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_eglib", "test_eglib.vcxproj", "{80A0620A-3478-4E1A-AA7C-0D2387B892AB}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcxproj", "{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monoposixhelper", "monoposixhelper.vcxproj", "{33014734-0F46-4099-9A21-0C989E428681}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jay", "..\mcs\jay\jay.vcxproj", "{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profilers", "Profilers", "{4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-vtune", "profiler-vtune.vcxproj", "{F51017F9-B7FB-4F87-B7B5-12799D965783}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmonoutils", "libmonoutils.vcxproj", "{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmonoruntime", "libmonoruntime.vcxproj", "{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug_SGen|Win32 = Debug_SGen|Win32
-		Debug_SGen|x64 = Debug_SGen|x64
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release_SGen|Win32 = Release_SGen|Win32
-		Release_SGen|x64 = Release_SGen|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_SGen|x64.Build.0 = Debug|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.Build.0 = Debug|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.ActiveCfg = Debug|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.Build.0 = Debug|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|Win32.Build.0 = Release|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|x64.ActiveCfg = Release|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|x64.Build.0 = Release|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.ActiveCfg = Release|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.Build.0 = Release|Win32
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.ActiveCfg = Release|x64
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.Build.0 = Release|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|Win32.ActiveCfg = Debug_SGen|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|Win32.Build.0 = Debug_SGen|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|x64.ActiveCfg = Debug_SGen|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|x64.Build.0 = Debug_SGen|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.Build.0 = Debug|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.ActiveCfg = Debug|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.Build.0 = Debug|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|Win32.ActiveCfg = Release_SGen|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|Win32.Build.0 = Release_SGen|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|x64.ActiveCfg = Release_SGen|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|x64.Build.0 = Release_SGen|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.ActiveCfg = Release|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.Build.0 = Release|Win32
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.ActiveCfg = Release|x64
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.Build.0 = Release|x64
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.ActiveCfg = Debug|x64
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_SGen|x64.ActiveCfg = Release|x64
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|Win32.ActiveCfg = Release|Win32
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.ActiveCfg = Release|x64
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.ActiveCfg = Debug|x64
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_SGen|x64.ActiveCfg = Release|x64
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|Win32.ActiveCfg = Release|Win32
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.ActiveCfg = Release|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|Win32.ActiveCfg = Debug_SGen|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|Win32.Build.0 = Debug_SGen|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|x64.ActiveCfg = Debug_SGen|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|x64.Build.0 = Debug_SGen|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.ActiveCfg = Debug|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.Build.0 = Debug|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.ActiveCfg = Debug|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.Build.0 = Debug|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|Win32.ActiveCfg = Release_SGen|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|Win32.Build.0 = Release_SGen|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|x64.ActiveCfg = Release_SGen|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|x64.Build.0 = Release_SGen|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.ActiveCfg = Release|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.Build.0 = Release|Win32
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.ActiveCfg = Release|x64
-		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.Build.0 = Release|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_SGen|x64.Build.0 = Debug|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.ActiveCfg = Debug|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.Build.0 = Debug|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.ActiveCfg = Debug|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.Build.0 = Debug|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|Win32.Build.0 = Release|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|x64.ActiveCfg = Release|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|x64.Build.0 = Release|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.ActiveCfg = Release|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.Build.0 = Release|Win32
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.ActiveCfg = Release|x64
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.Build.0 = Release|x64
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.ActiveCfg = Debug|x64
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_SGen|x64.ActiveCfg = Release|x64
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|Win32.ActiveCfg = Release|Win32
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.ActiveCfg = Release|x64
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|Win32.ActiveCfg = Debug|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.ActiveCfg = Debug|x64
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_SGen|x64.ActiveCfg = Release|x64
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|Win32.ActiveCfg = Release|Win32
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.ActiveCfg = Release|x64
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.ActiveCfg = Debug|x64
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_SGen|x64.ActiveCfg = Release|x64
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|Win32.ActiveCfg = Release|Win32
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.ActiveCfg = Release|x64
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.ActiveCfg = Debug|x64
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_SGen|x64.ActiveCfg = Release|x64
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|Win32.ActiveCfg = Release|Win32
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.ActiveCfg = Release|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_SGen|x64.Build.0 = Debug|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|Win32.ActiveCfg = Debug|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|Win32.Build.0 = Debug|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.ActiveCfg = Debug|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.Build.0 = Debug|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|Win32.Build.0 = Release|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|x64.ActiveCfg = Release|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|x64.Build.0 = Release|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|Win32.ActiveCfg = Release|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|Win32.Build.0 = Release|Win32
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.ActiveCfg = Release|x64
-		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.Build.0 = Release|x64
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|Win32.ActiveCfg = Debug|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.ActiveCfg = Debug|x64
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_SGen|x64.ActiveCfg = Release|x64
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|Win32.ActiveCfg = Release|Win32
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.ActiveCfg = Release|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_SGen|x64.Build.0 = Debug|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.Build.0 = Debug|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.ActiveCfg = Debug|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.Build.0 = Debug|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|Win32.Build.0 = Release|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|x64.ActiveCfg = Release|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|x64.Build.0 = Release|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.ActiveCfg = Release|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.Build.0 = Release|Win32
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.ActiveCfg = Release|x64
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.Build.0 = Release|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug_SGen|x64.Build.0 = Debug|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.ActiveCfg = Debug|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.Build.0 = Debug|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.ActiveCfg = Debug|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.Build.0 = Debug|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|Win32.Build.0 = Release|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|x64.ActiveCfg = Release|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|x64.Build.0 = Release|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.ActiveCfg = Release|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.Build.0 = Release|Win32
-		{33014734-0F46-4099-9A21-0C989E428681}.Release|x64.ActiveCfg = Release|x64
-		{33014734-0F46-4099-9A21-0C989E428681}.Release|x64.Build.0 = Release|x64
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|Win32.Build.0 = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|x64.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.Build.0 = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|x64.ActiveCfg = Debug|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_SGen|Win32.Build.0 = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_SGen|x64.ActiveCfg = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.ActiveCfg = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.Build.0 = Release|Win32
-		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|x64.ActiveCfg = Release|Win32
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug|x64.ActiveCfg = Debug|x64
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release_SGen|x64.ActiveCfg = Release|x64
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release|Win32.ActiveCfg = Release|Win32
-		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release|x64.ActiveCfg = Release|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|Win32.Build.0 = Debug|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|x64.ActiveCfg = Debug|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|x64.Build.0 = Debug|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|Win32.Build.0 = Debug|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|x64.ActiveCfg = Debug|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|x64.Build.0 = Debug|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|Win32.ActiveCfg = Release|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|Win32.Build.0 = Release|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|x64.ActiveCfg = Release|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|x64.Build.0 = Release|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|Win32.ActiveCfg = Release|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|Win32.Build.0 = Release|Win32
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|x64.ActiveCfg = Release|x64
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|x64.Build.0 = Release|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|Win32.ActiveCfg = Debug_SGen|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|Win32.Build.0 = Debug_SGen|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|x64.ActiveCfg = Debug_SGen|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|x64.Build.0 = Debug_SGen|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|Win32.Build.0 = Debug|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|x64.ActiveCfg = Debug|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|x64.Build.0 = Debug|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|Win32.ActiveCfg = Release_SGen|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|Win32.Build.0 = Release_SGen|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|x64.ActiveCfg = Release_SGen|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|x64.Build.0 = Release_SGen|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|Win32.ActiveCfg = Release|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|Win32.Build.0 = Release|Win32
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|x64.ActiveCfg = Release|x64
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{C5639B3F-288A-4A4B-A4A5-C0D85834221D} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}
-		{6FDE4E5E-57D0-432F-A987-6C226A7827E4} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}
-		{C2EB666E-9146-4B7A-85F6-25F9EA313770} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}
-		{B7098DFA-31E6-4006-8A15-1C9A4E925149} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
-		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
-		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
-		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
-		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
-		{EB56000B-C80B-4E8B-908D-D84D31B517D3} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
-		{158073ED-99AE-4196-9EDC-DDB2344F8466} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
-		{33014734-0F46-4099-9A21-0C989E428681} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
-		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
-		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
-		{80A0620A-3478-4E1A-AA7C-0D2387B892AB} = {ECA11C76-E192-4F67-A8FA-28B637D9716F}
-		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4} = {ECA11C76-E192-4F67-A8FA-28B637D9716F}
-		{F51017F9-B7FB-4F87-B7B5-12799D965783} = {4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		AMDCaProjectFile = C:\Users\Owner\Development\monogit\mono\msvc\CodeAnalyst\mono.caw
-		AMDCaPersistentStartup = mono
-		AMDCaPersistentConfig = Debug|Win32
-	EndGlobalSection
-	GlobalSection(DPCodeReviewSolutionGUID) = preSolution
-		DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
-	EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Embedded Samples", "Embedded Samples", "{5FE09AA5-C3C9-45EA-A323-36A11B653CEC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{EE2CC761-9652-44AC-9204-7EB31194CAA6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{0EBA83B7-0EB4-4C83-A900-77300A97E8B1}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{ECA11C76-E192-4F67-A8FA-28B637D9716F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "genmdesc.vcxproj", "{B7098DFA-31E6-4006-8A15-1C9A4E925149}"
+	ProjectSection(ProjectDependencies) = postProject
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono", "libmono.vcxproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}"
+	ProjectSection(ProjectDependencies) = postProject
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739} = {C36612BD-22D3-4B95-85E2-7FDC4FC5D739}
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-invoke", "test-invoke.vcxproj", "{C5639B3F-288A-4A4B-A4A5-C0D85834221D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teste", "teste.vcxproj", "{6FDE4E5E-57D0-432F-A987-6C226A7827E4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono", "mono.vcxproj", "{A0EDDCD9-940F-432C-A28F-7EF322437D79}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgc", "libgc.vcxproj", "{EB56000B-C80B-4E8B-908D-D84D31B517D3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcxproj", "{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcxproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcxproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcxproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eglib", "eglib.vcxproj", "{158073ED-99AE-4196-9EDC-DDB2344F8466}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_eglib", "test_eglib.vcxproj", "{80A0620A-3478-4E1A-AA7C-0D2387B892AB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcxproj", "{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monoposixhelper", "monoposixhelper.vcxproj", "{33014734-0F46-4099-9A21-0C989E428681}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jay", "..\mcs\jay\jay.vcxproj", "{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profilers", "Profilers", "{4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-vtune", "profiler-vtune.vcxproj", "{F51017F9-B7FB-4F87-B7B5-12799D965783}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmonoutils", "libmonoutils.vcxproj", "{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmonoruntime", "libmonoruntime.vcxproj", "{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug_SGen|Win32 = Debug_SGen|Win32
+		Debug_SGen|x64 = Debug_SGen|x64
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release_SGen|Win32 = Release_SGen|Win32
+		Release_SGen|x64 = Release_SGen|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_SGen|x64.Build.0 = Debug|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.Build.0 = Debug|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.ActiveCfg = Debug|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.Build.0 = Debug|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|Win32.Build.0 = Release|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|x64.ActiveCfg = Release|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_SGen|x64.Build.0 = Release|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.ActiveCfg = Release|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.Build.0 = Release|Win32
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.ActiveCfg = Release|x64
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.Build.0 = Release|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|Win32.ActiveCfg = Debug_SGen|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|Win32.Build.0 = Debug_SGen|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|x64.ActiveCfg = Debug_SGen|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_SGen|x64.Build.0 = Debug_SGen|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.Build.0 = Debug|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.ActiveCfg = Debug|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.Build.0 = Debug|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|Win32.ActiveCfg = Release_SGen|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|Win32.Build.0 = Release_SGen|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|x64.ActiveCfg = Release_SGen|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_SGen|x64.Build.0 = Release_SGen|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.ActiveCfg = Release|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.Build.0 = Release|Win32
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.ActiveCfg = Release|x64
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.Build.0 = Release|x64
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.ActiveCfg = Debug|x64
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_SGen|x64.ActiveCfg = Release|x64
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|Win32.ActiveCfg = Release|Win32
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.ActiveCfg = Release|x64
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.ActiveCfg = Debug|x64
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_SGen|x64.ActiveCfg = Release|x64
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|Win32.ActiveCfg = Release|Win32
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.ActiveCfg = Release|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|Win32.ActiveCfg = Debug_SGen|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|Win32.Build.0 = Debug_SGen|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|x64.ActiveCfg = Debug_SGen|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_SGen|x64.Build.0 = Debug_SGen|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.Build.0 = Debug|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.ActiveCfg = Debug|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.Build.0 = Debug|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|Win32.ActiveCfg = Release_SGen|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|Win32.Build.0 = Release_SGen|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|x64.ActiveCfg = Release_SGen|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_SGen|x64.Build.0 = Release_SGen|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.ActiveCfg = Release|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.Build.0 = Release|Win32
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.ActiveCfg = Release|x64
+		{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.Build.0 = Release|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_SGen|x64.Build.0 = Debug|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.Build.0 = Debug|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.ActiveCfg = Debug|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.Build.0 = Debug|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|Win32.Build.0 = Release|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|x64.ActiveCfg = Release|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_SGen|x64.Build.0 = Release|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.ActiveCfg = Release|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.Build.0 = Release|Win32
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.ActiveCfg = Release|x64
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.Build.0 = Release|x64
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.ActiveCfg = Debug|x64
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_SGen|x64.ActiveCfg = Release|x64
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|Win32.ActiveCfg = Release|Win32
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.ActiveCfg = Release|x64
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.ActiveCfg = Debug|x64
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_SGen|x64.ActiveCfg = Release|x64
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|Win32.ActiveCfg = Release|Win32
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.ActiveCfg = Release|x64
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.ActiveCfg = Debug|x64
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_SGen|x64.ActiveCfg = Release|x64
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|Win32.ActiveCfg = Release|Win32
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.ActiveCfg = Release|x64
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.ActiveCfg = Debug|x64
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_SGen|x64.ActiveCfg = Release|x64
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|Win32.ActiveCfg = Release|Win32
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.ActiveCfg = Release|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_SGen|x64.Build.0 = Debug|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|Win32.ActiveCfg = Debug|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|Win32.Build.0 = Debug|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.ActiveCfg = Debug|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.Build.0 = Debug|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|Win32.Build.0 = Release|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|x64.ActiveCfg = Release|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_SGen|x64.Build.0 = Release|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|Win32.ActiveCfg = Release|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|Win32.Build.0 = Release|Win32
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.ActiveCfg = Release|x64
+		{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.Build.0 = Release|x64
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|Win32.ActiveCfg = Debug|Win32
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.ActiveCfg = Debug|x64
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_SGen|x64.ActiveCfg = Release|x64
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|Win32.ActiveCfg = Release|Win32
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.ActiveCfg = Release|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_SGen|x64.Build.0 = Debug|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.Build.0 = Debug|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.ActiveCfg = Debug|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.Build.0 = Debug|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|Win32.Build.0 = Release|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|x64.ActiveCfg = Release|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_SGen|x64.Build.0 = Release|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.ActiveCfg = Release|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.Build.0 = Release|Win32
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.ActiveCfg = Release|x64
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.Build.0 = Release|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug_SGen|x64.Build.0 = Debug|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.ActiveCfg = Debug|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.Build.0 = Debug|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.ActiveCfg = Debug|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.Build.0 = Debug|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|Win32.Build.0 = Release|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|x64.ActiveCfg = Release|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Release_SGen|x64.Build.0 = Release|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.ActiveCfg = Release|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.Build.0 = Release|Win32
+		{33014734-0F46-4099-9A21-0C989E428681}.Release|x64.ActiveCfg = Release|x64
+		{33014734-0F46-4099-9A21-0C989E428681}.Release|x64.Build.0 = Release|x64
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|Win32.Build.0 = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_SGen|x64.ActiveCfg = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.Build.0 = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|x64.ActiveCfg = Debug|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_SGen|Win32.Build.0 = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_SGen|x64.ActiveCfg = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.ActiveCfg = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.Build.0 = Release|Win32
+		{5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|x64.ActiveCfg = Release|Win32
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Debug|x64.ActiveCfg = Debug|x64
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release_SGen|x64.ActiveCfg = Release|x64
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release|Win32.ActiveCfg = Release|Win32
+		{F51017F9-B7FB-4F87-B7B5-12799D965783}.Release|x64.ActiveCfg = Release|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|Win32.ActiveCfg = Debug|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|Win32.Build.0 = Debug|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|x64.ActiveCfg = Debug|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug_SGen|x64.Build.0 = Debug|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|Win32.Build.0 = Debug|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|x64.ActiveCfg = Debug|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Debug|x64.Build.0 = Debug|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|Win32.ActiveCfg = Release|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|Win32.Build.0 = Release|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|x64.ActiveCfg = Release|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release_SGen|x64.Build.0 = Release|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|Win32.ActiveCfg = Release|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|Win32.Build.0 = Release|Win32
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|x64.ActiveCfg = Release|x64
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}.Release|x64.Build.0 = Release|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|Win32.ActiveCfg = Debug_SGen|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|Win32.Build.0 = Debug_SGen|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|x64.ActiveCfg = Debug_SGen|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug_SGen|x64.Build.0 = Debug_SGen|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|Win32.Build.0 = Debug|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|x64.ActiveCfg = Debug|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Debug|x64.Build.0 = Debug|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|Win32.ActiveCfg = Release_SGen|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|Win32.Build.0 = Release_SGen|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|x64.ActiveCfg = Release_SGen|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release_SGen|x64.Build.0 = Release_SGen|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|Win32.ActiveCfg = Release|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|Win32.Build.0 = Release|Win32
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|x64.ActiveCfg = Release|x64
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{C5639B3F-288A-4A4B-A4A5-C0D85834221D} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}
+		{6FDE4E5E-57D0-432F-A987-6C226A7827E4} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}
+		{C2EB666E-9146-4B7A-85F6-25F9EA313770} = {5FE09AA5-C3C9-45EA-A323-36A11B653CEC}
+		{B7098DFA-31E6-4006-8A15-1C9A4E925149} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
+		{37F50E5A-4818-46CF-81FE-4BB06DE5D42E} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
+		{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
+		{CA2A69D6-3B9D-45A5-8BF7-4E242E683122} = {EE2CC761-9652-44AC-9204-7EB31194CAA6}
+		{CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
+		{EB56000B-C80B-4E8B-908D-D84D31B517D3} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
+		{158073ED-99AE-4196-9EDC-DDB2344F8466} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
+		{33014734-0F46-4099-9A21-0C989E428681} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
+		{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
+		{C36612BD-22D3-4B95-85E2-7FDC4FC5D739} = {0EBA83B7-0EB4-4C83-A900-77300A97E8B1}
+		{80A0620A-3478-4E1A-AA7C-0D2387B892AB} = {ECA11C76-E192-4F67-A8FA-28B637D9716F}
+		{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4} = {ECA11C76-E192-4F67-A8FA-28B637D9716F}
+		{F51017F9-B7FB-4F87-B7B5-12799D965783} = {4CFD7702-60B2-4E82-BFAD-FCBB53EB4DA2}
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		AMDCaProjectFile = C:\Users\Owner\Development\monogit\mono\msvc\CodeAnalyst\mono.caw
+		AMDCaPersistentStartup = mono
+		AMDCaPersistentConfig = Debug|Win32
+	EndGlobalSection
+	GlobalSection(DPCodeReviewSolutionGUID) = preSolution
+		DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
+	EndGlobalSection
+EndGlobal
--- mono-4.6.2.7+dfsg.orig/msvc/mono.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/mono.vcxproj
@@ -1,389 +1,389 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_SGen|Win32">
-      <Configuration>Debug_SGen</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug_SGen|x64">
-      <Configuration>Debug_SGen</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|Win32">
-      <Configuration>Release_SGen</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release_SGen|x64">
-      <Configuration>Release_SGen</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <Import Project="mono.props" />
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{A0EDDCD9-940F-432C-A28F-7EF322437D79}</ProjectGuid>
-    <RootNamespace>mono</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(ProjectName)-sgen</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(ProjectName)-sgen</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(ProjectName)-sgen</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(ProjectName)-sgen</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference />
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference />
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\mono\mini\main.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmono.vcxproj">
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_SGen|Win32">
+      <Configuration>Debug_SGen</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug_SGen|x64">
+      <Configuration>Debug_SGen</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|Win32">
+      <Configuration>Release_SGen</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release_SGen|x64">
+      <Configuration>Release_SGen</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="mono.props" />
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A0EDDCD9-940F-432C-A28F-7EF322437D79}</ProjectGuid>
+    <RootNamespace>mono</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">$(ProjectName)-sgen</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">$(ProjectName)-sgen</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">$(ProjectName)-sgen</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">$(ProjectName)-sgen</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference />
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference />
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\;..\jit;..\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\mini\main.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/monodis.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/monodis.vcxproj
@@ -1,230 +1,230 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}</ProjectGuid>
-    <RootNamespace>dis</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>
-      </AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\mono\dis\declsec.c" />
-    <ClCompile Include="..\mono\dis\dis-cil.c" />
-    <ClCompile Include="..\mono\dis\dump.c" />
-    <ClCompile Include="..\mono\dis\get.c" />
-    <ClCompile Include="..\mono\dis\main.c" />
-    <ClCompile Include="..\mono\metadata\opcodes.c" />
-    <ClCompile Include="..\mono\dis\util.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\mono\dis\declsec.h" />
-    <ClInclude Include="..\mono\dis\dis-cil.h" />
-    <ClInclude Include="..\mono\dis\dump.h" />
-    <ClInclude Include="..\mono\dis\get.h" />
-    <ClInclude Include="..\mono\dis\meta.h" />
-    <ClInclude Include="..\mono\dis\push-pop.h" />
-    <ClInclude Include="..\mono\dis\util.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmono.vcxproj">
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}</ProjectGuid>
+    <RootNamespace>dis</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\dis\declsec.c" />
+    <ClCompile Include="..\mono\dis\dis-cil.c" />
+    <ClCompile Include="..\mono\dis\dump.c" />
+    <ClCompile Include="..\mono\dis\get.c" />
+    <ClCompile Include="..\mono\dis\main.c" />
+    <ClCompile Include="..\mono\metadata\opcodes.c" />
+    <ClCompile Include="..\mono\dis\util.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\mono\dis\declsec.h" />
+    <ClInclude Include="..\mono\dis\dis-cil.h" />
+    <ClInclude Include="..\mono\dis\dump.h" />
+    <ClInclude Include="..\mono\dis\get.h" />
+    <ClInclude Include="..\mono\dis\meta.h" />
+    <ClInclude Include="..\mono\dis\push-pop.h" />
+    <ClInclude Include="..\mono\dis\util.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/monograph.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/monograph.vcxproj
@@ -1,217 +1,217 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}</ProjectGuid>
-    <RootNamespace>monograph</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\mono\metadata\opcodes.c" />
-    <ClCompile Include="..\tools\monograph\monograph.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmono.vcxproj">
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}</ProjectGuid>
+    <RootNamespace>monograph</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>ws2_32.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\;..\eglib\src;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\metadata\opcodes.c" />
+    <ClCompile Include="..\tools\monograph\monograph.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/monoposixhelper.def
+++ mono-4.6.2.7+dfsg/msvc/monoposixhelper.def
@@ -1,100 +1,100 @@
-LIBRARY MonoPosixHelper.dll
-EXPORTS
-Mono_Posix_FromAccessModes
-Mono_Posix_FromConfstrName
-Mono_Posix_FromDirectoryNotifyFlags
-Mono_Posix_FromErrno
-Mono_Posix_FromFcntlCommand
-Mono_Posix_FromFilePermissions
-Mono_Posix_FromLockType
-Mono_Posix_FromLockfCommand
-Mono_Posix_FromMlockallFlags
-Mono_Posix_FromMmapFlags
-Mono_Posix_FromMmapProts
-Mono_Posix_FromMountFlags
-Mono_Posix_FromMremapFlags
-Mono_Posix_FromMsyncFlags
-Mono_Posix_FromOpenFlags
-Mono_Posix_FromPathconfName
-Mono_Posix_FromPollEvents
-Mono_Posix_FromPosixFadviseAdvice
-Mono_Posix_FromPosixMadviseAdvice
-Mono_Posix_FromSeekFlags
-Mono_Posix_FromSignum
-Mono_Posix_FromSysconfName
-Mono_Posix_FromSyslogFacility
-Mono_Posix_FromSyslogLevel
-Mono_Posix_FromSyslogOptions
-Mono_Posix_FromWaitOptions
-Mono_Posix_FromXattrFlags
-Mono_Posix_Stdlib_BUFSIZ
-Mono_Posix_Stdlib_CreateFilePosition
-Mono_Posix_Stdlib_DumpFilePosition
-Mono_Posix_Stdlib_EOF
-Mono_Posix_Stdlib_EXIT_FAILURE
-Mono_Posix_Stdlib_EXIT_SUCCESS
-Mono_Posix_Stdlib_FILENAME_MAX
-Mono_Posix_Stdlib_FOPEN_MAX
-Mono_Posix_Stdlib_InvokeSignalHandler
-Mono_Posix_Stdlib_L_tmpnam
-Mono_Posix_Stdlib_MB_CUR_MAX
-Mono_Posix_Stdlib_RAND_MAX
-Mono_Posix_Stdlib_SIG_DFL
-Mono_Posix_Stdlib_SIG_ERR
-Mono_Posix_Stdlib_SIG_IGN
-Mono_Posix_Stdlib_SetLastError
-Mono_Posix_Stdlib_TMP_MAX
-Mono_Posix_Stdlib__IOFBF
-Mono_Posix_Stdlib__IOLBF
-Mono_Posix_Stdlib__IONBF
-Mono_Posix_Stdlib_calloc
-Mono_Posix_Stdlib_clearerr
-Mono_Posix_Stdlib_fgetpos
-Mono_Posix_Stdlib_fread
-Mono_Posix_Stdlib_fseek
-Mono_Posix_Stdlib_fsetpos
-Mono_Posix_Stdlib_ftell
-Mono_Posix_Stdlib_fwrite
-Mono_Posix_Stdlib_malloc
-Mono_Posix_Stdlib_perror
-Mono_Posix_Stdlib_realloc
-Mono_Posix_Stdlib_rewind
-Mono_Posix_Stdlib_setbuf
-Mono_Posix_Stdlib_setvbuf
-Mono_Posix_Stdlib_stderr
-Mono_Posix_Stdlib_stdin
-Mono_Posix_Stdlib_stdout
-Mono_Posix_Stdlib_strlen
-Mono_Posix_ToAccessModes
-Mono_Posix_ToConfstrName
-Mono_Posix_ToDirectoryNotifyFlags
-Mono_Posix_ToErrno
-Mono_Posix_ToFcntlCommand
-Mono_Posix_ToFilePermissions
-Mono_Posix_ToLockType
-Mono_Posix_ToLockfCommand
-Mono_Posix_ToMlockallFlags
-Mono_Posix_ToMmapFlags
-Mono_Posix_ToMmapProts
-Mono_Posix_ToMountFlags
-Mono_Posix_ToMremapFlags
-Mono_Posix_ToMsyncFlags
-Mono_Posix_ToOpenFlags
-Mono_Posix_ToPathconfName
-Mono_Posix_ToPollEvents
-Mono_Posix_ToPosixFadviseAdvice
-Mono_Posix_ToPosixMadviseAdvice
-Mono_Posix_ToSeekFlags
-Mono_Posix_ToSignum
-Mono_Posix_ToSysconfName
-Mono_Posix_ToSyslogFacility
-Mono_Posix_ToSyslogLevel
-Mono_Posix_ToSyslogOptions
-Mono_Posix_ToWaitOptions
-Mono_Posix_ToXattrFlags
-CreateZStream
-CloseZStream
-ReadZStream
-WriteZStream
-Flush
-
+LIBRARY MonoPosixHelper.dll
+EXPORTS
+Mono_Posix_FromAccessModes
+Mono_Posix_FromConfstrName
+Mono_Posix_FromDirectoryNotifyFlags
+Mono_Posix_FromErrno
+Mono_Posix_FromFcntlCommand
+Mono_Posix_FromFilePermissions
+Mono_Posix_FromLockType
+Mono_Posix_FromLockfCommand
+Mono_Posix_FromMlockallFlags
+Mono_Posix_FromMmapFlags
+Mono_Posix_FromMmapProts
+Mono_Posix_FromMountFlags
+Mono_Posix_FromMremapFlags
+Mono_Posix_FromMsyncFlags
+Mono_Posix_FromOpenFlags
+Mono_Posix_FromPathconfName
+Mono_Posix_FromPollEvents
+Mono_Posix_FromPosixFadviseAdvice
+Mono_Posix_FromPosixMadviseAdvice
+Mono_Posix_FromSeekFlags
+Mono_Posix_FromSignum
+Mono_Posix_FromSysconfName
+Mono_Posix_FromSyslogFacility
+Mono_Posix_FromSyslogLevel
+Mono_Posix_FromSyslogOptions
+Mono_Posix_FromWaitOptions
+Mono_Posix_FromXattrFlags
+Mono_Posix_Stdlib_BUFSIZ
+Mono_Posix_Stdlib_CreateFilePosition
+Mono_Posix_Stdlib_DumpFilePosition
+Mono_Posix_Stdlib_EOF
+Mono_Posix_Stdlib_EXIT_FAILURE
+Mono_Posix_Stdlib_EXIT_SUCCESS
+Mono_Posix_Stdlib_FILENAME_MAX
+Mono_Posix_Stdlib_FOPEN_MAX
+Mono_Posix_Stdlib_InvokeSignalHandler
+Mono_Posix_Stdlib_L_tmpnam
+Mono_Posix_Stdlib_MB_CUR_MAX
+Mono_Posix_Stdlib_RAND_MAX
+Mono_Posix_Stdlib_SIG_DFL
+Mono_Posix_Stdlib_SIG_ERR
+Mono_Posix_Stdlib_SIG_IGN
+Mono_Posix_Stdlib_SetLastError
+Mono_Posix_Stdlib_TMP_MAX
+Mono_Posix_Stdlib__IOFBF
+Mono_Posix_Stdlib__IOLBF
+Mono_Posix_Stdlib__IONBF
+Mono_Posix_Stdlib_calloc
+Mono_Posix_Stdlib_clearerr
+Mono_Posix_Stdlib_fgetpos
+Mono_Posix_Stdlib_fread
+Mono_Posix_Stdlib_fseek
+Mono_Posix_Stdlib_fsetpos
+Mono_Posix_Stdlib_ftell
+Mono_Posix_Stdlib_fwrite
+Mono_Posix_Stdlib_malloc
+Mono_Posix_Stdlib_perror
+Mono_Posix_Stdlib_realloc
+Mono_Posix_Stdlib_rewind
+Mono_Posix_Stdlib_setbuf
+Mono_Posix_Stdlib_setvbuf
+Mono_Posix_Stdlib_stderr
+Mono_Posix_Stdlib_stdin
+Mono_Posix_Stdlib_stdout
+Mono_Posix_Stdlib_strlen
+Mono_Posix_ToAccessModes
+Mono_Posix_ToConfstrName
+Mono_Posix_ToDirectoryNotifyFlags
+Mono_Posix_ToErrno
+Mono_Posix_ToFcntlCommand
+Mono_Posix_ToFilePermissions
+Mono_Posix_ToLockType
+Mono_Posix_ToLockfCommand
+Mono_Posix_ToMlockallFlags
+Mono_Posix_ToMmapFlags
+Mono_Posix_ToMmapProts
+Mono_Posix_ToMountFlags
+Mono_Posix_ToMremapFlags
+Mono_Posix_ToMsyncFlags
+Mono_Posix_ToOpenFlags
+Mono_Posix_ToPathconfName
+Mono_Posix_ToPollEvents
+Mono_Posix_ToPosixFadviseAdvice
+Mono_Posix_ToPosixMadviseAdvice
+Mono_Posix_ToSeekFlags
+Mono_Posix_ToSignum
+Mono_Posix_ToSysconfName
+Mono_Posix_ToSyslogFacility
+Mono_Posix_ToSyslogLevel
+Mono_Posix_ToSyslogOptions
+Mono_Posix_ToWaitOptions
+Mono_Posix_ToXattrFlags
+CreateZStream
+CloseZStream
+ReadZStream
+WriteZStream
+Flush
+
--- mono-4.6.2.7+dfsg.orig/msvc/monoposixhelper.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/monoposixhelper.vcxproj
@@ -1,238 +1,238 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{33014734-0F46-4099-9A21-0C989E428681}</ProjectGuid>
-    <RootNamespace>monoposixhelper</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MonoPosixHelper</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MonoPosixHelper</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MonoPosixHelper</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MonoPosixHelper</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
-      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_DEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Link>
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
-      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
-      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>NDEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Link>
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
-      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX64</TargetMachine>
-      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\support\adler32.c" />
-    <ClCompile Include="..\support\compress.c" />
-    <ClCompile Include="..\support\crc32.c" />
-    <ClCompile Include="..\support\deflate.c" />
-    <ClCompile Include="..\support\errno.c" />
-    <ClCompile Include="..\support\infback.c" />
-    <ClCompile Include="..\support\inffast.c" />
-    <ClCompile Include="..\support\inflate.c" />
-    <ClCompile Include="..\support\inftrees.c" />
-    <ClCompile Include="..\support\map.c" />
-    <ClCompile Include="..\support\signal.c" />
-    <ClCompile Include="..\support\stdio.c" />
-    <ClCompile Include="..\support\stdlib.c" />
-    <ClCompile Include="..\support\string.c" />
-    <ClCompile Include="..\support\trees.c" />
-    <ClCompile Include="..\support\uncompr.c" />
-    <ClCompile Include="..\support\zlib-helper.c" />
-    <ClCompile Include="..\support\zutil.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\support\inffast.h" />
-    <ClInclude Include="..\support\crc32.h" />
-    <ClInclude Include="..\support\deflate.h" />
-    <ClInclude Include="..\support\inffixed.h" />
-    <ClInclude Include="..\support\inflate.h" />
-    <ClInclude Include="..\support\inftrees.h" />
-    <ClInclude Include="..\support\map.h" />
-    <ClInclude Include="..\support\mph.h" />
-    <ClInclude Include="..\support\trees.h" />
-    <ClInclude Include="..\support\zconf.h" />
-    <ClInclude Include="..\support\zutil.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="monoposixhelper.def" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-    </ProjectReference>
-    <ProjectReference Include="genmdesc.vcxproj">
-      <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{33014734-0F46-4099-9A21-0C989E428681}</ProjectGuid>
+    <RootNamespace>monoposixhelper</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MonoPosixHelper</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MonoPosixHelper</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MonoPosixHelper</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MonoPosixHelper</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_DEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;_WIN32_WINNT=0x0600;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>NDEBUG;__x86_64__;_WIN32_WINNT=0x0600;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <ImportLibrary>$(Platform)\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\support\adler32.c" />
+    <ClCompile Include="..\support\compress.c" />
+    <ClCompile Include="..\support\crc32.c" />
+    <ClCompile Include="..\support\deflate.c" />
+    <ClCompile Include="..\support\errno.c" />
+    <ClCompile Include="..\support\infback.c" />
+    <ClCompile Include="..\support\inffast.c" />
+    <ClCompile Include="..\support\inflate.c" />
+    <ClCompile Include="..\support\inftrees.c" />
+    <ClCompile Include="..\support\map.c" />
+    <ClCompile Include="..\support\signal.c" />
+    <ClCompile Include="..\support\stdio.c" />
+    <ClCompile Include="..\support\stdlib.c" />
+    <ClCompile Include="..\support\string.c" />
+    <ClCompile Include="..\support\trees.c" />
+    <ClCompile Include="..\support\uncompr.c" />
+    <ClCompile Include="..\support\zlib-helper.c" />
+    <ClCompile Include="..\support\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\support\inffast.h" />
+    <ClInclude Include="..\support\crc32.h" />
+    <ClInclude Include="..\support\deflate.h" />
+    <ClInclude Include="..\support\inffixed.h" />
+    <ClInclude Include="..\support\inflate.h" />
+    <ClInclude Include="..\support\inftrees.h" />
+    <ClInclude Include="..\support\map.h" />
+    <ClInclude Include="..\support\mph.h" />
+    <ClInclude Include="..\support\trees.h" />
+    <ClInclude Include="..\support\zconf.h" />
+    <ClInclude Include="..\support\zutil.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="monoposixhelper.def" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+    </ProjectReference>
+    <ProjectReference Include="genmdesc.vcxproj">
+      <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/pedump.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/pedump.vcxproj
@@ -1,277 +1,277 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}</ProjectGuid>
-    <RootNamespace>pedump</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)pedump/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)pedump/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\mono\metadata\appdomain.c" />
-    <ClCompile Include="..\mono\metadata\assembly.c" />
-    <ClCompile Include="..\mono\metadata\boehm-gc.c" />
-    <ClCompile Include="..\mono\metadata\class.c" />
-    <ClCompile Include="..\mono\metadata\console-win32.c" />
-    <ClCompile Include="..\mono\metadata\domain.c" />
-    <ClCompile Include="..\mono\metadata\environment.c" />
-    <ClCompile Include="..\mono\metadata\file-io.c" />
-    <ClCompile Include="..\mono\metadata\filewatcher.c" />
-    <ClCompile Include="..\mono\metadata\gc.c" />
-    <ClCompile Include="..\mono\metadata\icall.c" />
-    <ClCompile Include="..\mono\metadata\image.c" />
-    <ClCompile Include="..\mono\metadata\loader.c" />
-    <ClCompile Include="..\mono\metadata\locales.c" />
-    <ClCompile Include="..\mono\metadata\marshal.c" />
-    <ClCompile Include="..\mono\metadata\metadata.c" />
-    <ClCompile Include="..\mono\metadata\monitor.c" />
-    <ClCompile Include="..\mono\metadata\mono-config.c" />
-    <ClCompile Include="..\mono\utils\mono-dl.c" />
-    <ClCompile Include="..\mono\metadata\object.c" />
-    <ClCompile Include="..\mono\metadata\pedump.c" />
-    <ClCompile Include="..\mono\metadata\process.c" />
-    <ClCompile Include="..\mono\metadata\profiler.c" />
-    <ClCompile Include="..\mono\metadata\rand.c" />
-    <ClCompile Include="..\mono\metadata\reflection.c" />
-    <ClCompile Include="..\mono\metadata\security-manager.c" />
-    <ClCompile Include="..\mono\metadata\socket-io.c" />
-    <ClCompile Include="..\mono\metadata\string-icalls.c" />
-    <ClCompile Include="..\mono\metadata\sysmath.c" />
-    <ClCompile Include="..\mono\metadata\threads.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libgc.vcxproj">
-      <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmono.vcxproj">
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmonoruntime.vcxproj">
-      <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d739}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <ProjectReference Include="libmonoutils.vcxproj">
-      <Project>{8fc2b0c8-51ad-49df-851f-5d01a77a75e4}</Project>
-      <Private>false</Private>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}</ProjectGuid>
+    <RootNamespace>pedump</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)pedump/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)pedump/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+      <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src\;$(SolutionDir)..\;$(SolutionDir)..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Psapi.lib;Ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\metadata\appdomain.c" />
+    <ClCompile Include="..\mono\metadata\assembly.c" />
+    <ClCompile Include="..\mono\metadata\boehm-gc.c" />
+    <ClCompile Include="..\mono\metadata\class.c" />
+    <ClCompile Include="..\mono\metadata\console-win32.c" />
+    <ClCompile Include="..\mono\metadata\domain.c" />
+    <ClCompile Include="..\mono\metadata\environment.c" />
+    <ClCompile Include="..\mono\metadata\file-io.c" />
+    <ClCompile Include="..\mono\metadata\filewatcher.c" />
+    <ClCompile Include="..\mono\metadata\gc.c" />
+    <ClCompile Include="..\mono\metadata\icall.c" />
+    <ClCompile Include="..\mono\metadata\image.c" />
+    <ClCompile Include="..\mono\metadata\loader.c" />
+    <ClCompile Include="..\mono\metadata\locales.c" />
+    <ClCompile Include="..\mono\metadata\marshal.c" />
+    <ClCompile Include="..\mono\metadata\metadata.c" />
+    <ClCompile Include="..\mono\metadata\monitor.c" />
+    <ClCompile Include="..\mono\metadata\mono-config.c" />
+    <ClCompile Include="..\mono\utils\mono-dl.c" />
+    <ClCompile Include="..\mono\metadata\object.c" />
+    <ClCompile Include="..\mono\metadata\pedump.c" />
+    <ClCompile Include="..\mono\metadata\process.c" />
+    <ClCompile Include="..\mono\metadata\profiler.c" />
+    <ClCompile Include="..\mono\metadata\rand.c" />
+    <ClCompile Include="..\mono\metadata\reflection.c" />
+    <ClCompile Include="..\mono\metadata\security-manager.c" />
+    <ClCompile Include="..\mono\metadata\socket-io.c" />
+    <ClCompile Include="..\mono\metadata\string-icalls.c" />
+    <ClCompile Include="..\mono\metadata\sysmath.c" />
+    <ClCompile Include="..\mono\metadata\threads.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libgc.vcxproj">
+      <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmonoruntime.vcxproj">
+      <Project>{c36612bd-22d3-4b95-85e2-7fdc4fc5d739}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <ProjectReference Include="libmonoutils.vcxproj">
+      <Project>{8fc2b0c8-51ad-49df-851f-5d01a77a75e4}</Project>
+      <Private>false</Private>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/profiler-vtune.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/profiler-vtune.vcxproj
@@ -1,180 +1,180 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{F51017F9-B7FB-4F87-B7B5-12799D965783}</ProjectGuid>
-    <RootNamespace>profilervtune</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-profiler-vtune</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-profiler-vtune</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-profiler-vtune</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-profiler-vtune</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2011\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
-      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2011\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\mono\profiler\mono-profiler-vtune.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="mono-profiler-vtune.def" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{F51017F9-B7FB-4F87-B7B5-12799D965783}</ProjectGuid>
+    <RootNamespace>profilervtune</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">mono-profiler-vtune</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">mono-profiler-vtune</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">mono-profiler-vtune</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">mono-profiler-vtune</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
+      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2011\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
+      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>mono-2.0.lib;libgc.lib;eglib.lib;jitprofiling.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;$(ProgramFiles)\Intel\VTune Amplifier XE 2013\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;$(ProgramFiles)\Intel\VTune Amplifier XE 2011\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>mono-2.0.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <ModuleDefinitionFile>mono-profiler-vtune.def</ModuleDefinitionFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\mono\profiler\mono-profiler-vtune.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="mono-profiler-vtune.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/test-invoke.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/test-invoke.vcxproj
@@ -1,212 +1,212 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C5639B3F-288A-4A4B-A4A5-C0D85834221D}</ProjectGuid>
-    <RootNamespace>testinvoke</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)invoke/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)invoke/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\samples\embed\test-invoke.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="libmono.vcxproj">
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C5639B3F-288A-4A4B-A4A5-C0D85834221D}</ProjectGuid>
+    <RootNamespace>testinvoke</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)invoke/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)invoke/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\samples\embed\test-invoke.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/test-metadata.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/test-metadata.vcxproj
@@ -1,212 +1,212 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C2EB666E-9146-4B7A-85F6-25F9EA313770}</ProjectGuid>
-    <RootNamespace>testmetadata</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)metadata/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)metadata/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\samples\embed\test-metadata.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="libmono.vcxproj">
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C2EB666E-9146-4B7A-85F6-25F9EA313770}</ProjectGuid>
+    <RootNamespace>testmetadata</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)metadata/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)metadata/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)..\eglib\src;$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\samples\embed\test-metadata.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/test_eglib.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/test_eglib.vcxproj
@@ -1,227 +1,227 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{80A0620A-3478-4E1A-AA7C-0D2387B892AB}</ProjectGuid>
-    <RootNamespace>test_eglib</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <TreatWarningAsError>false</TreatWarningAsError>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OptimizeReferences>false</OptimizeReferences>
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <TreatWarningAsError>false</TreatWarningAsError>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <TreatWarningAsError>false</TreatWarningAsError>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OptimizeReferences>false</OptimizeReferences>
-      <EnableCOMDATFolding>false</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <TreatWarningAsError>false</TreatWarningAsError>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\eglib\test\array.c" />
-    <ClCompile Include="..\eglib\test\dir.c" />
-    <ClCompile Include="..\eglib\test\driver.c" />
-    <ClCompile Include="..\eglib\test\endian.c" />
-    <ClCompile Include="..\eglib\test\fake.c" />
-    <ClCompile Include="..\eglib\test\file.c" />
-    <ClCompile Include="getopt.c" />
-    <ClCompile Include="getopt_long.c" />
-    <ClCompile Include="..\eglib\test\hashtable.c" />
-    <ClCompile Include="..\eglib\test\list.c" />
-    <ClCompile Include="..\eglib\test\markup.c" />
-    <ClCompile Include="..\eglib\test\memory.c" />
-    <ClCompile Include="..\eglib\test\module.c" />
-    <ClCompile Include="..\eglib\test\path.c" />
-    <ClCompile Include="..\eglib\test\pattern.c" />
-    <ClCompile Include="..\eglib\test\ptrarray.c" />
-    <ClCompile Include="..\eglib\test\queue.c" />
-    <ClCompile Include="..\eglib\test\shell.c" />
-    <ClCompile Include="..\eglib\test\sizes.c" />
-    <ClCompile Include="..\eglib\test\slist.c" />
-    <ClCompile Include="..\eglib\test\spawn.c" />
-    <ClCompile Include="..\eglib\test\string-util.c" />
-    <ClCompile Include="..\eglib\test\string.c" />
-    <ClCompile Include="..\eglib\test\test.c" />
-    <ClCompile Include="..\eglib\test\timer.c" />
-    <ClCompile Include="..\eglib\test\unicode.c" />
-    <ClCompile Include="..\eglib\test\utf8.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="getopt.h" />
-    <ClInclude Include="getopt_long.h" />
-    <ClInclude Include="..\eglib\src\glib.h" />
-    <ClInclude Include="..\eglib\test\test.h" />
-    <ClInclude Include="..\eglib\test\tests.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="eglib.vcxproj">
-      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{80A0620A-3478-4E1A-AA7C-0D2387B892AB}</ProjectGuid>
+    <RootNamespace>test_eglib</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>false</OptimizeReferences>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>false</OptimizeReferences>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>Ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\eglib\test\array.c" />
+    <ClCompile Include="..\eglib\test\dir.c" />
+    <ClCompile Include="..\eglib\test\driver.c" />
+    <ClCompile Include="..\eglib\test\endian.c" />
+    <ClCompile Include="..\eglib\test\fake.c" />
+    <ClCompile Include="..\eglib\test\file.c" />
+    <ClCompile Include="getopt.c" />
+    <ClCompile Include="getopt_long.c" />
+    <ClCompile Include="..\eglib\test\hashtable.c" />
+    <ClCompile Include="..\eglib\test\list.c" />
+    <ClCompile Include="..\eglib\test\markup.c" />
+    <ClCompile Include="..\eglib\test\memory.c" />
+    <ClCompile Include="..\eglib\test\module.c" />
+    <ClCompile Include="..\eglib\test\path.c" />
+    <ClCompile Include="..\eglib\test\pattern.c" />
+    <ClCompile Include="..\eglib\test\ptrarray.c" />
+    <ClCompile Include="..\eglib\test\queue.c" />
+    <ClCompile Include="..\eglib\test\shell.c" />
+    <ClCompile Include="..\eglib\test\sizes.c" />
+    <ClCompile Include="..\eglib\test\slist.c" />
+    <ClCompile Include="..\eglib\test\spawn.c" />
+    <ClCompile Include="..\eglib\test\string-util.c" />
+    <ClCompile Include="..\eglib\test\string.c" />
+    <ClCompile Include="..\eglib\test\test.c" />
+    <ClCompile Include="..\eglib\test\timer.c" />
+    <ClCompile Include="..\eglib\test\unicode.c" />
+    <ClCompile Include="..\eglib\test\utf8.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="getopt.h" />
+    <ClInclude Include="getopt_long.h" />
+    <ClInclude Include="..\eglib\src\glib.h" />
+    <ClInclude Include="..\eglib\test\test.h" />
+    <ClInclude Include="..\eglib\test\tests.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="eglib.vcxproj">
+      <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/msvc/teste.vcxproj
+++ mono-4.6.2.7+dfsg/msvc/teste.vcxproj
@@ -1,212 +1,212 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6FDE4E5E-57D0-432F-A987-6C226A7827E4}</ProjectGuid>
-    <RootNamespace>teste</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)e/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <ObjectFileName>$(IntDir)e/</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>
-      <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>true</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <ProjectReference>
-      <LinkLibraryDependencies>false</LinkLibraryDependencies>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\samples\embed\teste.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="libmono.vcxproj">
-      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-      <Private>false</Private>
-      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
-      <LinkLibraryDependencies>true</LinkLibraryDependencies>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6FDE4E5E-57D0-432F-A987-6C226A7827E4}</ProjectGuid>
+    <RootNamespace>teste</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\obj\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)e/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>ws2_32.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ObjectFileName>$(IntDir)e/</ObjectFileName>
+      <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>
+      <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsC</CompileAs>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>$(SolutionDir)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ProjectReference>
+      <LinkLibraryDependencies>false</LinkLibraryDependencies>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\samples\embed\teste.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="libmono.vcxproj">
+      <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <LinkLibraryDependencies>true</LinkLibraryDependencies>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
--- mono-4.6.2.7+dfsg.orig/support/syslog.c
+++ mono-4.6.2.7+dfsg/support/syslog.c
@@ -38,7 +38,16 @@ Mono_Posix_Syscall_closelog (void)
 int
 Mono_Posix_Syscall_syslog (int priority, const char* message)
 {
+#ifdef __GNUC__
+	#pragma GCC diagnostic push
+	#pragma GCC diagnostic ignored "-Wformat-security"
+#endif
+
 	syslog (priority, message);
+
+#ifdef __GNUC__
+	#pragma GCC diagnostic pop
+#endif
 	return 0;
 }
 
--- mono-4.6.2.7+dfsg.orig/tools/locale-builder/lcids.xml
+++ mono-4.6.2.7+dfsg/tools/locale-builder/lcids.xml
@@ -1,355 +1,355 @@
-<lcids>
-  <lcid name="ar" id="0x0001" parent="0x007F" iso2="ar" iso3="ara" win="ARA" />
-  <lcid name="bg" id="0x0002" parent="0x007F" iso2="bg" iso3="bul" win="BGR" />
-  <lcid name="ca" id="0x0003" parent="0x007F" iso2="ca" iso3="cat" win="CAT" />
-  <lcid name="zh_Hans" id="0x0004" parent="0x7804" iso2="zh" iso3="zho" win="CHS" />
-  <lcid name="zh_CHS" id="0x0004" parent="0x0004" iso2="zh" iso3="zho" win="CHS" />
-  <lcid name="cs" id="0x0005" parent="0x007F" iso2="cs" iso3="ces" win="CSY" />
-  <lcid name="da" id="0x0006" parent="0x007F" iso2="da" iso3="dan" win="DAN" />
-  <lcid name="de" id="0x0007" parent="0x007F" iso2="de" iso3="deu" win="DEU" />
-  <lcid name="el" id="0x0008" parent="0x007F" iso2="el" iso3="ell" win="ELL" />
-  <lcid name="en" id="0x0009" parent="0x007F" iso2="en" iso3="eng" win="ENU" />
-  <lcid name="es" id="0x000A" parent="0x007F" iso2="es" iso3="spa" win="ESP" />
-  <lcid name="fi" id="0x000B" parent="0x007F" iso2="fi" iso3="fin" win="FIN" />
-  <lcid name="fr" id="0x000C" parent="0x007F" iso2="fr" iso3="fra" win="FRA" />
-  <lcid name="he" id="0x000D" parent="0x007F" iso2="he" iso3="heb" win="HEB" />
-  <lcid name="hu" id="0x000E" parent="0x007F" iso2="hu" iso3="hun" win="HUN" />
-  <lcid name="is" id="0x000F" parent="0x007F" iso2="is" iso3="isl" win="ISL" />
-  <lcid name="it" id="0x0010" parent="0x007F" iso2="it" iso3="ita" win="ITA" />
-  <lcid name="ja" id="0x0011" parent="0x007F" iso2="ja" iso3="jpn" win="JPN" />
-  <lcid name="ko" id="0x0012" parent="0x007F" iso2="ko" iso3="kor" win="KOR" />
-  <lcid name="nl" id="0x0013" parent="0x007F" iso2="nl" iso3="nld" win="NLD" />
-  <lcid name="no" id="0x0014" parent="0x007F" iso2="nb" iso3="nob" win="NOR" />
-  <lcid name="pl" id="0x0015" parent="0x007F" iso2="pl" iso3="pol" win="PLK" />
-  <lcid name="pt" id="0x0016" parent="0x007F" iso2="pt" iso3="por" win="PTB" />
-  <lcid name="rm" id="0x0017" parent="0x007F" iso2="rm" iso3="roh" win="RMC" />
-  <lcid name="ro" id="0x0018" parent="0x007F" iso2="ro" iso3="ron" win="ROM" />
-  <lcid name="ru" id="0x0019" parent="0x007F" iso2="ru" iso3="rus" win="RUS" />
-  <lcid name="hr" id="0x001A" parent="0x007F" iso2="hr" iso3="hrv" win="HRV" />
-  <lcid name="sk" id="0x001B" parent="0x007F" iso2="sk" iso3="slk" win="SKY" />
-  <lcid name="sq" id="0x001C" parent="0x007F" iso2="sq" iso3="sqi" win="SQI" />
-  <lcid name="sv" id="0x001D" parent="0x007F" iso2="sv" iso3="swe" win="SVE" />
-  <lcid name="th" id="0x001E" parent="0x007F" iso2="th" iso3="tha" win="THA" />
-  <lcid name="tr" id="0x001F" parent="0x007F" iso2="tr" iso3="tur" win="TRK" />
-  <lcid name="ur" id="0x0020" parent="0x007F" iso2="ur" iso3="urd" win="URD" />
-  <lcid name="id" id="0x0021" parent="0x007F" iso2="id" iso3="ind" win="IND" />
-  <lcid name="uk" id="0x0022" parent="0x007F" iso2="uk" iso3="ukr" win="UKR" />
-  <lcid name="be" id="0x0023" parent="0x007F" iso2="be" iso3="bel" win="BEL" />
-  <lcid name="sl" id="0x0024" parent="0x007F" iso2="sl" iso3="slv" win="SLV" />
-  <lcid name="et" id="0x0025" parent="0x007F" iso2="et" iso3="est" win="ETI" />
-  <lcid name="lv" id="0x0026" parent="0x007F" iso2="lv" iso3="lav" win="LVI" />
-  <lcid name="lt" id="0x0027" parent="0x007F" iso2="lt" iso3="lit" win="LTH" />
-  <lcid name="tg" id="0x0028" parent="0x007F" iso2="tg" iso3="tgk" win="TAJ" />
-  <lcid name="fa" id="0x0029" parent="0x007F" iso2="fa" iso3="fas" win="FAR" />
-  <lcid name="vi" id="0x002A" parent="0x007F" iso2="vi" iso3="vie" win="VIT" />
-  <lcid name="hy" id="0x002B" parent="0x007F" iso2="hy" iso3="hye" win="HYE" />
-  <lcid name="az" id="0x002C" parent="0x007F" iso2="az" iso3="aze" win="AZE" />
-  <lcid name="eu" id="0x002D" parent="0x007F" iso2="eu" iso3="eus" win="EUQ" />
-  <lcid name="hsb" id="0x002E" parent="0x007F" iso2="hsb" iso3="hsb" win="HSB" />
-  <lcid name="mk" id="0x002F" parent="0x007F" iso2="mk" iso3="mkd" win="MKI" />
-  <lcid name="tn" id="0x0032" parent="0x007F" iso2="tn" iso3="tsn" win="TSN" />
-  <lcid name="xh" id="0x0034" parent="0x007F" iso2="xh" iso3="xho" win="XHO" />
-  <lcid name="zu" id="0x0035" parent="0x007F" iso2="zu" iso3="zul" win="ZUL" />
-  <lcid name="af" id="0x0036" parent="0x007F" iso2="af" iso3="afr" win="AFK" />
-  <lcid name="ka" id="0x0037" parent="0x007F" iso2="ka" iso3="kat" win="KAT" />
-  <lcid name="fo" id="0x0038" parent="0x007F" iso2="fo" iso3="fao" win="FOS" />
-  <lcid name="hi" id="0x0039" parent="0x007F" iso2="hi" iso3="hin" win="HIN" />
-  <lcid name="mt" id="0x003A" parent="0x007F" iso2="mt" iso3="mlt" win="MLT" />
-  <lcid name="se" id="0x003B" parent="0x007F" iso2="se" iso3="sme" win="SME" />
-  <lcid name="ga" id="0x003C" parent="0x007F" iso2="ga" iso3="gle" win="IRE" />
-  <lcid name="ms" id="0x003E" parent="0x007F" iso2="ms" iso3="msa" win="MSL" />
-  <lcid name="kk" id="0x003F" parent="0x007F" iso2="kk" iso3="kaz" win="KKZ" />
-  <lcid name="ky" id="0x0040" parent="0x007F" iso2="ky" iso3="kir" win="KYR" />
-  <lcid name="sw" id="0x0041" parent="0x007F" iso2="sw" iso3="swa" win="SWK" />
-  <lcid name="tk" id="0x0042" parent="0x007F" iso2="tk" iso3="tuk" win="TUK" />
-  <lcid name="uz" id="0x0043" parent="0x007F" iso2="uz" iso3="uzb" win="UZB" />
-  <lcid name="tt" id="0x0044" parent="0x007F" iso2="tt" iso3="tat" win="TTT" />
-  <lcid name="bn" id="0x0045" parent="0x007F" iso2="bn" iso3="bng" win="BNG" />
-  <lcid name="pa" id="0x0046" parent="0x007F" iso2="pa" iso3="pan" win="PAN" />
-  <lcid name="gu" id="0x0047" parent="0x007F" iso2="gu" iso3="guj" win="GUJ" />
-  <lcid name="or" id="0x0048" parent="0x007F" iso2="or" iso3="ori" win="ORI" />
-  <lcid name="ta" id="0x0049" parent="0x007F" iso2="ta" iso3="tam" win="TAM" />
-  <lcid name="te" id="0x004A" parent="0x007F" iso2="te" iso3="tel" win="TEL" />
-  <lcid name="kn" id="0x004B" parent="0x007F" iso2="kn" iso3="kan" win="KDI" />
-  <lcid name="ml" id="0x004C" parent="0x007F" iso2="ml" iso3="mym" win="MYM" />
-  <lcid name="as" id="0x004D" parent="0x007F" iso2="as" iso3="asm" win="ASM" />
-  <lcid name="mr" id="0x004E" parent="0x007F" iso2="mr" iso3="mar" win="MAR" />
-  <lcid name="sa" id="0x004F" parent="0x007F" iso2="sa" iso3="san" win="SAN" />
-  <lcid name="mn" id="0x0050" parent="0x007F" iso2="mn" iso3="mon" win="MON" />
-  <lcid name="bo" id="0x0051" parent="0x007F" iso2="bo" iso3="bod" win="BOB" />
-  <lcid name="cy" id="0x0052" parent="0x007F" iso2="cy" iso3="cym" win="CYM" />
-  <lcid name="km" id="0x0053" parent="0x007F" iso2="km" iso3="khm" win="KHM" />
-  <lcid name="lo" id="0x0054" parent="0x007F" iso2="lo" iso3="lao" win="LAO" />
-  <lcid name="gl" id="0x0056" parent="0x007F" iso2="gl" iso3="glg" win="GLC" />
-  <lcid name="kok" id="0x0057" parent="0x007F" iso2="kok" iso3="kok" win="KNK" />
-  <lcid name="syr" id="0x005A" parent="0x007F" iso2="syr" iso3="syr" win="SYR" />
-  <lcid name="si" id="0x005B" parent="0x007F" iso2="si" iso3="sin" win="SIN" />
-  <lcid name="iu" id="0x005D" parent="0x007F" iso2="iu" iso3="iku" win="IUK" />
-  <lcid name="am" id="0x005E" parent="0x007F" iso2="am" iso3="amh" win="AMH" />
-  <lcid name="tzm" id="0x005F" parent="0x007F" iso2="tzm" iso3="tzm" win="TZM" />
-  <lcid name="ne" id="0x0061" parent="0x007F" iso2="ne" iso3="nep" win="NEP" />
-  <lcid name="fy" id="0x0062" parent="0x007F" iso2="fy" iso3="fry" win="FYN" />
-  <lcid name="ps" id="0x0063" parent="0x007F" iso2="ps" iso3="pus" win="PAS" />
-  <lcid name="fil" id="0x0064" parent="0x007F" iso2="fil" iso3="fil" win="FPO" />
-  <lcid name="dv" id="0x0065" parent="0x007F" iso2="dv" iso3="div" win="DIV" />
-  <lcid name="ha" id="0x0068" parent="0x007F" iso2="ha" iso3="hau" win="HAU" />
-  <lcid name="yo" id="0x006A" parent="0x007F" iso2="yo" iso3="yor" win="YOR" />
-  <lcid name="quz" id="0x006B" parent="0x007F" iso2="quz" iso3="qub" win="QUB" />
-  <lcid name="nso" id="0x006C" parent="0x007F" iso2="nso" iso3="nso" win="NSO" />
-  <lcid name="ba" id="0x006D" parent="0x007F" iso2="ba" iso3="bak" win="BAS" />
-  <lcid name="lb" id="0x006E" parent="0x007F" iso2="lb" iso3="ltz" win="LBX" />
-  <lcid name="kl" id="0x006F" parent="0x007F" iso2="kl" iso3="kal" win="KAL" />
-  <lcid name="ig" id="0x0070" parent="0x007F" iso2="ig" iso3="ibo" win="IBO" />
-  <lcid name="ii" id="0x0078" parent="0x007F" iso2="ii" iso3="iii" win="III" />
-  <lcid name="arn" id="0x007A" parent="0x007F" iso2="arn" iso3="arn" win="MPD" />
-  <lcid name="moh" id="0x007C" parent="0x007F" iso2="moh" iso3="moh" win="MWK" />
-  <lcid name="br" id="0x007E" parent="0x007F" iso2="br" iso3="bre" win="BRE" />
-  <lcid name="ug" id="0x0080" parent="0x007F" iso2="ug" iso3="uig" win="UIG" />
-  <lcid name="mi" id="0x0081" parent="0x007F" iso2="mi" iso3="mri" win="MRI" />
-  <lcid name="oc" id="0x0082" parent="0x007F" iso2="oc" iso3="oci" win="OCI" />
-  <lcid name="co" id="0x0083" parent="0x007F" iso2="co" iso3="cos" win="COS" />
-  <lcid name="gsw" id="0x0084" parent="0x007F" iso2="gsw" iso3="gsw" win="GSW" />
-  <lcid name="sah" id="0x0085" parent="0x007F" iso2="sah" iso3="sah" win="SAH" />
-  <lcid name="qut" id="0x0086" parent="0x007F" iso2="qut" iso3="qut" win="QUT" />
-  <lcid name="rw" id="0x0087" parent="0x007F" iso2="rw" iso3="kin" win="KIN" />
-  <lcid name="wo" id="0x0088" parent="0x007F" iso2="wo" iso3="wol" win="WOL" />
-  <lcid name="prs" id="0x008C" parent="0x007F" iso2="prs" iso3="prs" win="PRS" />
-  <lcid name="gd" id="0x0091" parent="0x007F" iso2="gd" iso3="gla" win="GLA" />
-  <lcid name="ar_SA" id="0x0401" parent="0x0001" iso2="ar" iso3="ara" win="ARA" />
-  <lcid name="bg_BG" id="0x0402" parent="0x0002" iso2="bg" iso3="bul" win="BGR" />
-  <lcid name="ca_ES" id="0x0403" parent="0x0003" iso2="ca" iso3="cat" win="CAT" />
-  <lcid name="zh_TW" id="0x0404" parent="0x7C04" iso2="zh" iso3="zho" win="CHT" />
-  <lcid name="cs_CZ" id="0x0405" parent="0x0005" iso2="cs" iso3="ces" win="CSY" />
-  <lcid name="da_DK" id="0x0406" parent="0x0006" iso2="da" iso3="dan" win="DAN" />
-  <lcid name="de_DE" id="0x0407" parent="0x0007" iso2="de" iso3="deu" win="DEU" />
-  <lcid name="el_GR" id="0x0408" parent="0x0008" iso2="el" iso3="ell" win="ELL" />
-  <lcid name="en_US" id="0x0409" parent="0x0009" iso2="en" iso3="eng" win="ENU" />
-  <lcid name="fi_FI" id="0x040B" parent="0x000B" iso2="fi" iso3="fin" win="FIN" />
-  <lcid name="fr_FR" id="0x040C" parent="0x000C" iso2="fr" iso3="fra" win="FRA" />
-  <lcid name="he_IL" id="0x040D" parent="0x000D" iso2="he" iso3="heb" win="HEB" />
-  <lcid name="hu_HU" id="0x040E" parent="0x000E" iso2="hu" iso3="hun" win="HUN" />
-  <lcid name="is_IS" id="0x040F" parent="0x000F" iso2="is" iso3="isl" win="ISL" />
-  <lcid name="it_IT" id="0x0410" parent="0x0010" iso2="it" iso3="ita" win="ITA" />
-  <lcid name="ja_JP" id="0x0411" parent="0x0011" iso2="ja" iso3="jpn" win="JPN" />
-  <lcid name="ko_KR" id="0x0412" parent="0x0012" iso2="ko" iso3="kor" win="KOR" />
-  <lcid name="nl_NL" id="0x0413" parent="0x0013" iso2="nl" iso3="nld" win="NLD" />
-  <lcid name="nb_NO" id="0x0414" parent="0x7C14" iso2="nb" iso3="nob" win="NOR" />
-  <lcid name="pl_PL" id="0x0415" parent="0x0015" iso2="pl" iso3="pol" win="PLK" />
-  <lcid name="pt_BR" id="0x0416" parent="0x0016" iso2="pt" iso3="por" win="PTB" />
-  <lcid name="rm_CH" id="0x0417" parent="0x0017" iso2="rm" iso3="roh" win="RMC" />
-  <lcid name="ro_RO" id="0x0418" parent="0x0018" iso2="ro" iso3="ron" win="ROM" />
-  <lcid name="ru_RU" id="0x0419" parent="0x0019" iso2="ru" iso3="rus" win="RUS" />
-  <lcid name="hr_HR" id="0x041A" parent="0x001A" iso2="hr" iso3="hrv" win="HRV" />
-  <lcid name="sk_SK" id="0x041B" parent="0x001B" iso2="sk" iso3="slk" win="SKY" />
-  <lcid name="sq_AL" id="0x041C" parent="0x001C" iso2="sq" iso3="sqi" win="SQI" />
-  <lcid name="sv_SE" id="0x041D" parent="0x001D" iso2="sv" iso3="swe" win="SVE" />
-  <lcid name="th_TH" id="0x041E" parent="0x001E" iso2="th" iso3="tha" win="THA" />
-  <lcid name="tr_TR" id="0x041F" parent="0x001F" iso2="tr" iso3="tur" win="TRK" />
-  <lcid name="ur_PK" id="0x0420" parent="0x0020" iso2="ur" iso3="urd" win="URD" />
-  <lcid name="id_ID" id="0x0421" parent="0x0021" iso2="id" iso3="ind" win="IND" />
-  <lcid name="uk_UA" id="0x0422" parent="0x0022" iso2="uk" iso3="ukr" win="UKR" />
-  <lcid name="be_BY" id="0x0423" parent="0x0023" iso2="be" iso3="bel" win="BEL" />
-  <lcid name="sl_SI" id="0x0424" parent="0x0024" iso2="sl" iso3="slv" win="SLV" />
-  <lcid name="et_EE" id="0x0425" parent="0x0025" iso2="et" iso3="est" win="ETI" />
-  <lcid name="lv_LV" id="0x0426" parent="0x0026" iso2="lv" iso3="lav" win="LVI" />
-  <lcid name="lt_LT" id="0x0427" parent="0x0027" iso2="lt" iso3="lit" win="LTH" />
-  <lcid name="tg_Cyrl_TJ" id="0x0428" parent="0x7C28" iso2="tg" iso3="tgk" win="TAJ" />
-  <lcid name="fa_IR" id="0x0429" parent="0x0029" iso2="fa" iso3="fas" win="FAR" />
-  <lcid name="vi_VN" id="0x042A" parent="0x002A" iso2="vi" iso3="vie" win="VIT" />
-  <lcid name="hy_AM" id="0x042B" parent="0x002B" iso2="hy" iso3="hye" win="HYE" />
-  <lcid name="az_Latn_AZ" id="0x042C" parent="0x782C" iso2="az" iso3="aze" win="AZE" />
-  <lcid name="eu_ES" id="0x042D" parent="0x002D" iso2="eu" iso3="eus" win="EUQ" />
-  <lcid name="hsb_DE" id="0x042E" parent="0x002E" iso2="hsb" iso3="hsb" win="HSB" />
-  <lcid name="mk_MK" id="0x042F" parent="0x002F" iso2="mk" iso3="mkd" win="MKI" />
-  <lcid name="tn_ZA" id="0x0432" parent="0x0032" iso2="tn" iso3="tsn" win="TSN" />
-  <lcid name="xh_ZA" id="0x0434" parent="0x0034" iso2="xh" iso3="xho" win="XHO" />
-  <lcid name="zu_ZA" id="0x0435" parent="0x0035" iso2="zu" iso3="zul" win="ZUL" />
-  <lcid name="af_ZA" id="0x0436" parent="0x0036" iso2="af" iso3="afr" win="AFK" />
-  <lcid name="ka_GE" id="0x0437" parent="0x0037" iso2="ka" iso3="kat" win="KAT" />
-  <lcid name="fo_FO" id="0x0438" parent="0x0038" iso2="fo" iso3="fao" win="FOS" />
-  <lcid name="hi_IN" id="0x0439" parent="0x0039" iso2="hi" iso3="hin" win="HIN" />
-  <lcid name="mt_MT" id="0x043A" parent="0x003A" iso2="mt" iso3="mlt" win="MLT" />
-  <lcid name="se_NO" id="0x043B" parent="0x003B" iso2="se" iso3="sme" win="SME" />
-  <lcid name="ms_MY" id="0x043E" parent="0x003E" iso2="ms" iso3="msa" win="MSL" />
-  <lcid name="kk_KZ" id="0x043F" parent="0x003F" iso2="kk" iso3="kaz" win="KKZ" />
-  <lcid name="ky_KG" id="0x0440" parent="0x0040" iso2="ky" iso3="kir" win="KYR" />
-  <lcid name="sw_KE" id="0x0441" parent="0x0041" iso2="sw" iso3="swa" win="SWK" />
-  <lcid name="tk_TM" id="0x0442" parent="0x0042" iso2="tk" iso3="tuk" win="TUK" />
-  <lcid name="uz_Latn_UZ" id="0x0443" parent="0x7C43" iso2="uz" iso3="uzb" win="UZB" />
-  <lcid name="tt_RU" id="0x0444" parent="0x0044" iso2="tt" iso3="tat" win="TTT" />
-  <lcid name="bn_IN" id="0x0445" parent="0x0045" iso2="bn" iso3="bng" win="BNG" />
-  <lcid name="pa_IN" id="0x0446" parent="0x0046" iso2="pa" iso3="pan" win="PAN" />
-  <lcid name="gu_IN" id="0x0447" parent="0x0047" iso2="gu" iso3="guj" win="GUJ" />
-  <lcid name="or_IN" id="0x0448" parent="0x0048" iso2="or" iso3="ori" win="ORI" />
-  <lcid name="ta_IN" id="0x0449" parent="0x0049" iso2="ta" iso3="tam" win="TAM" />
-  <lcid name="te_IN" id="0x044A" parent="0x004A" iso2="te" iso3="tel" win="TEL" />
-  <lcid name="kn_IN" id="0x044B" parent="0x004B" iso2="kn" iso3="kan" win="KDI" />
-  <lcid name="ml_IN" id="0x044C" parent="0x004C" iso2="ml" iso3="mym" win="MYM" />
-  <lcid name="as_IN" id="0x044D" parent="0x004D" iso2="as" iso3="asm" win="ASM" />
-  <lcid name="mr_IN" id="0x044E" parent="0x004E" iso2="mr" iso3="mar" win="MAR" />
-  <lcid name="sa_IN" id="0x044F" parent="0x004F" iso2="sa" iso3="san" win="SAN" />
-  <lcid name="mn_MN" id="0x0450" parent="0x7850" iso2="mn" iso3="mon" win="MNN" />
-  <lcid name="bo_CN" id="0x0451" parent="0x0051" iso2="bo" iso3="bod" win="BOB" />
-  <lcid name="cy_GB" id="0x0452" parent="0x0052" iso2="cy" iso3="cym" win="CYM" />
-  <lcid name="km_KH" id="0x0453" parent="0x0053" iso2="km" iso3="khm" win="KHM" />
-  <lcid name="lo_LA" id="0x0454" parent="0x0054" iso2="lo" iso3="lao" win="LAO" />
-  <lcid name="gl_ES" id="0x0456" parent="0x0056" iso2="gl" iso3="glg" win="GLC" />
-  <lcid name="kok_IN" id="0x0457" parent="0x0057" iso2="kok" iso3="kok" win="KNK" />
-  <lcid name="syr_SY" id="0x045A" parent="0x005A" iso2="syr" iso3="syr" win="SYR" />
-  <lcid name="si_LK" id="0x045B" parent="0x005B" iso2="si" iso3="sin" win="SIN" />
-  <lcid name="iu_Cans_CA" id="0x045D" parent="0x785D" iso2="iu" iso3="iku" win="IUS" />
-  <lcid name="am_ET" id="0x045E" parent="0x005E" iso2="am" iso3="amh" win="AMH" />
-  <lcid name="ne_NP" id="0x0461" parent="0x0061" iso2="ne" iso3="nep" win="NEP" />
-  <lcid name="fy_NL" id="0x0462" parent="0x0062" iso2="fy" iso3="fry" win="FYN" />
-  <lcid name="ps_AF" id="0x0463" parent="0x0063" iso2="ps" iso3="pus" win="PAS" />
-  <lcid name="fil_PH" id="0x0464" parent="0x0064" iso2="fil" iso3="fil" win="FPO" />
-  <lcid name="dv_MV" id="0x0465" parent="0x0065" iso2="dv" iso3="div" win="DIV" />
-  <lcid name="ha_Latn_NG" id="0x0468" parent="0x7C68" iso2="ha" iso3="hau" win="HAU" />
-  <lcid name="yo_NG" id="0x046A" parent="0x006A" iso2="yo" iso3="yor" win="YOR" />
-  <lcid name="quz_BO" id="0x046B" parent="0x006B" iso2="quz" iso3="qub" win="QUB" />
-  <lcid name="nso_ZA" id="0x046C" parent="0x006C" iso2="nso" iso3="nso" win="NSO" />
-  <lcid name="ba_RU" id="0x046D" parent="0x006D" iso2="ba" iso3="bak" win="BAS" />
-  <lcid name="lb_LU" id="0x046E" parent="0x006E" iso2="lb" iso3="ltz" win="LBX" />
-  <lcid name="kl_GL" id="0x046F" parent="0x006F" iso2="kl" iso3="kal" win="KAL" />
-  <lcid name="ig_NG" id="0x0470" parent="0x0070" iso2="ig" iso3="ibo" win="IBO" />
-  <lcid name="ii_CN" id="0x0478" parent="0x0078" iso2="ii" iso3="iii" win="III" />
-  <lcid name="arn_CL" id="0x047A" parent="0x007A" iso2="arn" iso3="arn" win="MPD" />
-  <lcid name="moh_CA" id="0x047C" parent="0x007C" iso2="moh" iso3="moh" win="MWK" />
-  <lcid name="br_FR" id="0x047E" parent="0x007E" iso2="br" iso3="bre" win="BRE" />
-  <lcid name="ug_CN" id="0x0480" parent="0x0080" iso2="ug" iso3="uig" win="UIG" />
-  <lcid name="mi_NZ" id="0x0481" parent="0x0081" iso2="mi" iso3="mri" win="MRI" />
-  <lcid name="oc_FR" id="0x0482" parent="0x0082" iso2="oc" iso3="oci" win="OCI" />
-  <lcid name="co_FR" id="0x0483" parent="0x0083" iso2="co" iso3="cos" win="COS" />
-  <lcid name="gsw_FR" id="0x0484" parent="0x0084" iso2="gsw" iso3="gsw" win="GSW" />
-  <lcid name="sah_RU" id="0x0485" parent="0x0085" iso2="sah" iso3="sah" win="SAH" />
-  <lcid name="qut_GT" id="0x0486" parent="0x0086" iso2="qut" iso3="qut" win="QUT" />
-  <lcid name="rw_RW" id="0x0487" parent="0x0087" iso2="rw" iso3="kin" win="KIN" />
-  <lcid name="wo_SN" id="0x0488" parent="0x0088" iso2="wo" iso3="wol" win="WOL" />
-  <lcid name="prs_AF" id="0x048C" parent="0x008C" iso2="prs" iso3="prs" win="PRS" />
-  <lcid name="gd_GB" id="0x0491" parent="0x0091" iso2="gd" iso3="gla" win="GLA" />
-  <lcid name="ar_IQ" id="0x0801" parent="0x0001" iso2="ar" iso3="ara" win="ARI" />
-  <lcid name="zh_CN" id="0x0804" parent="0x0004" iso2="zh" iso3="zho" win="CHS" />
-  <lcid name="de_CH" id="0x0807" parent="0x0007" iso2="de" iso3="deu" win="DES" />
-  <lcid name="en_GB" id="0x0809" parent="0x0009" iso2="en" iso3="eng" win="ENG" />
-  <lcid name="es_MX" id="0x080A" parent="0x000A" iso2="es" iso3="spa" win="ESM" />
-  <lcid name="fr_BE" id="0x080C" parent="0x000C" iso2="fr" iso3="fra" win="FRB" />
-  <lcid name="it_CH" id="0x0810" parent="0x0010" iso2="it" iso3="ita" win="ITS" />
-  <lcid name="nl_BE" id="0x0813" parent="0x0013" iso2="nl" iso3="nld" win="NLB" />
-  <lcid name="nn_NO" id="0x0814" parent="0x7814" iso2="nn" iso3="nno" win="NON" />
-  <lcid name="pt_PT" id="0x0816" parent="0x0016" iso2="pt" iso3="por" win="PTG" />
-  <lcid name="sr_Latn_CS" id="0x081A" parent="0x701A" iso2="sr" iso3="srp" win="SRL" />
-  <lcid name="sv_FI" id="0x081D" parent="0x001D" iso2="sv" iso3="swe" win="SVF" />
-  <lcid name="az_Cyrl_AZ" id="0x082C" parent="0x742C" iso2="az" iso3="aze" win="AZC" />
-  <lcid name="dsb_DE" id="0x082E" parent="0x7C2E" iso2="dsb" iso3="dsb" win="DSB" />
-  <lcid name="se_SE" id="0x083B" parent="0x003B" iso2="se" iso3="smf" win="SMF" />
-  <lcid name="ga_IE" id="0x083C" parent="0x003C" iso2="ga" iso3="gle" win="IRE" />
-  <lcid name="ms_BN" id="0x083E" parent="0x003E" iso2="ms" iso3="msa" win="MSB" />
-  <lcid name="uz_Cyrl_UZ" id="0x0843" parent="0x7843" iso2="uz" iso3="uzb" win="UZB" />
-  <lcid name="bn_BD" id="0x0845" parent="0x0045" iso2="bn" iso3="bng" win="BNB" />
-  <lcid name="mn_Mong_CN" id="0x0850" parent="0x7C50" iso2="mn" iso3="mon" win="MNG" />
-  <lcid name="iu_Latn_CA" id="0x085D" parent="0x7C5D" iso2="iu" iso3="iku" win="IUK" />
-  <lcid name="tzm_Latn_DZ" id="0x085F" parent="0x7C5F" iso2="tzm" iso3="tzm" win="TZM" />
-  <lcid name="quz_EC" id="0x086B" parent="0x006B" iso2="quz" iso3="que" win="QUE" />
-  <lcid name="ar_EG" id="0x0C01" parent="0x0001" iso2="ar" iso3="ara" win="ARE" />
-  <lcid name="zh_HK" id="0x0C04" parent="0x7C04" iso2="zh" iso3="zho" win="ZHH" />
-  <lcid name="de_AT" id="0x0C07" parent="0x0007" iso2="de" iso3="deu" win="DEA" />
-  <lcid name="en_AU" id="0x0C09" parent="0x0009" iso2="en" iso3="eng" win="ENA" />
-  <lcid name="es_ES" id="0x0C0A" parent="0x000A" iso2="es" iso3="spa" win="ESN" />
-  <lcid name="fr_CA" id="0x0C0C" parent="0x000C" iso2="fr" iso3="fra" win="FRC" />
-  <lcid name="sr_Cyrl_CS" id="0x0C1A" parent="0x6C1A" iso2="sr" iso3="srp" win="SRB" />
-  <lcid name="se_FI" id="0x0C3B" parent="0x003B" iso2="se" iso3="smg" win="SMG" />
-  <lcid name="quz_PE" id="0x0C6B" parent="0x006B" iso2="quz" iso3="qup" win="QUP" />
-  <lcid name="ar_LY" id="0x1001" parent="0x0001" iso2="ar" iso3="ara" win="ARL" />
-  <lcid name="zh_SG" id="0x1004" parent="0x0004" iso2="zh" iso3="zho" win="ZHI" />
-  <lcid name="de_LU" id="0x1007" parent="0x0007" iso2="de" iso3="deu" win="DEL" />
-  <lcid name="en_CA" id="0x1009" parent="0x0009" iso2="en" iso3="eng" win="ENC" />
-  <lcid name="es_GT" id="0x100A" parent="0x000A" iso2="es" iso3="spa" win="ESG" />
-  <lcid name="fr_CH" id="0x100C" parent="0x000C" iso2="fr" iso3="fra" win="FRS" />
-  <lcid name="hr_BA" id="0x101A" parent="0x001A" iso2="hr" iso3="hrb" win="HRB" />
-  <lcid name="smj_NO" id="0x103B" parent="0x7C3B" iso2="smj" iso3="smj" win="SMJ" />
-  <lcid name="ar_DZ" id="0x1401" parent="0x0001" iso2="ar" iso3="ara" win="ARG" />
-  <lcid name="zh_MO" id="0x1404" parent="0x7C04" iso2="zh" iso3="zho" win="ZHM" />
-  <lcid name="de_LI" id="0x1407" parent="0x0007" iso2="de" iso3="deu" win="DEC" />
-  <lcid name="en_NZ" id="0x1409" parent="0x0009" iso2="en" iso3="eng" win="ENZ" />
-  <lcid name="es_CR" id="0x140A" parent="0x000A" iso2="es" iso3="spa" win="ESC" />
-  <lcid name="fr_LU" id="0x140C" parent="0x000C" iso2="fr" iso3="fra" win="FRL" />
-  <lcid name="bs_Latn_BA" id="0x141A" parent="0x681A" iso2="bs" iso3="bsb" win="BSB" />
-  <lcid name="smj_SE" id="0x143B" parent="0x7C3B" iso2="smj" iso3="smk" win="SMK" />
-  <lcid name="ar_MA" id="0x1801" parent="0x0001" iso2="ar" iso3="ara" win="ARM" />
-  <lcid name="en_IE" id="0x1809" parent="0x0009" iso2="en" iso3="eng" win="ENI" />
-  <lcid name="es_PA" id="0x180A" parent="0x000A" iso2="es" iso3="spa" win="ESA" />
-  <lcid name="fr_MC" id="0x180C" parent="0x000C" iso2="fr" iso3="fra" win="FRM" />
-  <lcid name="sr_Latn_BA" id="0x181A" parent="0x701A" iso2="sr" iso3="srs" win="SRS" />
-  <lcid name="sma_NO" id="0x183B" parent="0x783B" iso2="sma" iso3="sma" win="SMA" />
-  <lcid name="ar_TN" id="0x1C01" parent="0x0001" iso2="ar" iso3="ara" win="ART" />
-  <lcid name="en_ZA" id="0x1C09" parent="0x0009" iso2="en" iso3="eng" win="ENS" />
-  <lcid name="es_DO" id="0x1C0A" parent="0x000A" iso2="es" iso3="spa" win="ESD" />
-  <lcid name="sr_Cyrl_BA" id="0x1C1A" parent="0x6C1A" iso2="sr" iso3="srn" win="SRN" />
-  <lcid name="sma_SE" id="0x1C3B" parent="0x783B" iso2="sma" iso3="smb" win="SMB" />
-  <lcid name="ar_OM" id="0x2001" parent="0x0001" iso2="ar" iso3="ara" win="ARO" />
-  <lcid name="en_JM" id="0x2009" parent="0x0009" iso2="en" iso3="eng" win="ENJ" />
-  <lcid name="es_VE" id="0x200A" parent="0x000A" iso2="es" iso3="spa" win="ESV" />
-  <lcid name="bs_Cyrl_BA" id="0x201A" parent="0x641A" iso2="bs" iso3="bsc" win="BSC" />
-  <lcid name="sms_FI" id="0x203B" parent="0x743B" iso2="sms" iso3="sms" win="SMS" />
-  <lcid name="ar_YE" id="0x2401" parent="0x0001" iso2="ar" iso3="ara" win="ARY" />
-  <lcid name="en_029" id="0x2409" parent="0x0009" iso2="en" iso3="eng" win="ENB" />
-  <lcid name="es_CO" id="0x240A" parent="0x000A" iso2="es" iso3="spa" win="ESO" />
-  <lcid name="sr_Latn_RS" id="0x241A" parent="0x701A" iso2="sr" iso3="srp" win="SRM" />
-  <lcid name="smn_FI" id="0x243B" parent="0x703B" iso2="smn" iso3="smn" win="SMN" />
-  <lcid name="ar_SY" id="0x2801" parent="0x0001" iso2="ar" iso3="ara" win="ARS" />
-  <lcid name="en_BZ" id="0x2809" parent="0x0009" iso2="en" iso3="eng" win="ENL" />
-  <lcid name="es_PE" id="0x280A" parent="0x000A" iso2="es" iso3="spa" win="ESR" />
-  <lcid name="sr_Cyrl_RS" id="0x281A" parent="0x6C1A" iso2="sr" iso3="srp" win="SRO" />
-  <lcid name="ar_JO" id="0x2C01" parent="0x0001" iso2="ar" iso3="ara" win="ARJ" />
-  <lcid name="en_TT" id="0x2C09" parent="0x0009" iso2="en" iso3="eng" win="ENT" />
-  <lcid name="es_AR" id="0x2C0A" parent="0x000A" iso2="es" iso3="spa" win="ESS"  />
-  <lcid name="sr_Latn_ME" id="0x2C1A" parent="0x701A" iso2="sr" iso3="srp" win="SRP" />
-  <lcid name="ar_LB" id="0x3001" parent="0x0001" iso2="ar" iso3="ara" win="ARB" />
-  <lcid name="en_ZW" id="0x3009" parent="0x0009" iso2="en" iso3="eng" win="ENW" />
-  <lcid name="es_EC" id="0x300A" parent="0x000A" iso2="es" iso3="spa" win="ESF" />
-  <lcid name="sr_Cyrl_ME" id="0x301A" parent="0x6C1A" iso2="sr" iso3="srp" win="SRQ" />
-  <lcid name="ar_KW" id="0x3401" parent="0x0001" iso2="ar" iso3="ara" win="ARK" />
-  <lcid name="en_PH" id="0x3409" parent="0x0009" iso2="en" iso3="eng" win="ENP" />
-  <lcid name="es_CL" id="0x340A" parent="0x000A" iso2="es" iso3="spa" win="ESL" />
-  <lcid name="ar_AE" id="0x3801" parent="0x0001" iso2="ar" iso3="ara" win="ARU" />
-  <lcid name="es_UY" id="0x380A" parent="0x000A" iso2="es" iso3="spa" win="ESY" />
-  <lcid name="ar_BH" id="0x3C01" parent="0x0001" iso2="ar" iso3="ara" win="ARH" />
-  <lcid name="es_PY" id="0x3C0A" parent="0x000A" iso2="es" iso3="spa" win="ESZ" />
-  <lcid name="ar_QA" id="0x4001" parent="0x0001" iso2="ar" iso3="ara" win="ARQ" />
-  <lcid name="en_IN" id="0x4009" parent="0x0009" iso2="en" iso3="eng" win="ENN" />
-  <lcid name="es_BO" id="0x400A" parent="0x000A" iso2="es" iso3="spa" win="ESB" />
-  <lcid name="en_MY" id="0x4409" parent="0x0009" iso2="en" iso3="eng" win="ENM" />
-  <lcid name="es_SV" id="0x440A" parent="0x000A" iso2="es" iso3="spa" win="ESE" />
-  <lcid name="en_SG" id="0x4809" parent="0x0009" iso2="en" iso3="eng" win="ENE" />
-  <lcid name="es_HN" id="0x480A" parent="0x000A" iso2="es" iso3="spa" win="ESH" />
-  <lcid name="es_NI" id="0x4C0A" parent="0x000A" iso2="es" iso3="spa" win="ESI" />
-  <lcid name="es_PR" id="0x500A" parent="0x000A" iso2="es" iso3="spa" win="ESU" />
-  <lcid name="es_US" id="0x540A" parent="0x000A" iso2="es" iso3="spa" win="EST" />
-  <lcid name="bs_Cyrl" id="0x641A" parent="0x781A" iso2="bs" iso3="bsc" win="BSC" />
-  <lcid name="bs_Latn" id="0x681A" parent="0x781A" iso2="bs" iso3="bsb" win="BSB" />
-  <lcid name="sr_Cyrl" id="0x6C1A" parent="0x7C1A" iso2="sr" iso3="srp" win="SRO" />
-  <lcid name="sr_Latn" id="0x701A" parent="0x7C1A" iso2="sr" iso3="srp" win="SRM" />
-  <lcid name="smn" id="0x703B" parent="0x003B" iso2="smn" iso3="smn" win="SMN"  />
-  <lcid name="az_Cyrl" id="0x742C" parent="0x002C" iso2="az" iso3="aze" win="AZC" />
-  <lcid name="sms" id="0x743B" parent="0x003B" iso2="sms" iso3="sms" win="SMS" />
-  <lcid name="zh" id="0x7804" parent="0x007F" iso2="zh" iso3="zho" win="CHS" />
-  <lcid name="nn" id="0x7814" parent="0x0014" iso2="nn" iso3="nno" win="NON" />
-  <lcid name="bs" id="0x781A" parent="0x007F" iso2="bs" iso3="bsb" win="BSB" />
-  <lcid name="az_Latn" id="0x782C" parent="0x002C" iso2="az" iso3="aze" win="AZE" />
-  <lcid name="sma" id="0x783B" parent="0x003B" iso2="sma" iso3="smb" win="SMB" />
-  <lcid name="uz_Cyrl" id="0x7843" parent="0x0043" iso2="uz" iso3="uzb" win="UZB" />
-  <lcid name="mn_Cyrl" id="0x7850" parent="0x0050" iso2="mn" iso3="mon" win="MNN" />
-  <lcid name="iu_Cans" id="0x785D" parent="0x005D" iso2="iu" iso3="iku" win="IUS" />
-  <lcid name="zh_Hant" id="0x7C04" parent="0x7804" iso2="zh" iso3="zho" win="CHT" />
-  <lcid name="zh_CHT" id="0x7C04" parent="0x7C04" iso2="zh" iso3="zho" win="CHT" />
-  <lcid name="nb" id="0x7C14" parent="0x0014" iso2="nb" iso3="nob" win="NOR" />
-  <lcid name="sr" id="0x7C1A" parent="0x007F" iso2="sr" iso3="srp" win="SRB" />
-  <lcid name="tg_Cyrl" id="0x7C28" parent="0x0028" iso2="tg" iso3="tgk" win="TAJ" />
-  <lcid name="dsb" id="0x7C2E" parent="0x002E" iso2="dsb" iso3="dsb" win="DSB" />
-  <lcid name="smj" id="0x7C3B" parent="0x003B" iso2="smj" iso3="smk" win="SMK" />
-  <lcid name="uz_Latn" id="0x7C43" parent="0x0043" iso2="uz" iso3="uzb" win="UZB" />
-  <lcid name="mn_Mong" id="0x7C50" parent="0x0050" iso2="mn" iso3="mon" win="MNG" />
-  <lcid name="iu_Latn" id="0x7C5D" parent="0x005D" iso2="iu" iso3="iku" win="IUK" />
-  <lcid name="tzm_Latn" id="0x7C5F" parent="0x005F" iso2="tzm" iso3="tzm" win="TZM" />
-  <lcid name="ha_Latn" id="0x7C68" parent="0x0068" iso2="ha" iso3="hau" win="HAU" />
+<lcids>
+  <lcid name="ar" id="0x0001" parent="0x007F" iso2="ar" iso3="ara" win="ARA" />
+  <lcid name="bg" id="0x0002" parent="0x007F" iso2="bg" iso3="bul" win="BGR" />
+  <lcid name="ca" id="0x0003" parent="0x007F" iso2="ca" iso3="cat" win="CAT" />
+  <lcid name="zh_Hans" id="0x0004" parent="0x7804" iso2="zh" iso3="zho" win="CHS" />
+  <lcid name="zh_CHS" id="0x0004" parent="0x0004" iso2="zh" iso3="zho" win="CHS" />
+  <lcid name="cs" id="0x0005" parent="0x007F" iso2="cs" iso3="ces" win="CSY" />
+  <lcid name="da" id="0x0006" parent="0x007F" iso2="da" iso3="dan" win="DAN" />
+  <lcid name="de" id="0x0007" parent="0x007F" iso2="de" iso3="deu" win="DEU" />
+  <lcid name="el" id="0x0008" parent="0x007F" iso2="el" iso3="ell" win="ELL" />
+  <lcid name="en" id="0x0009" parent="0x007F" iso2="en" iso3="eng" win="ENU" />
+  <lcid name="es" id="0x000A" parent="0x007F" iso2="es" iso3="spa" win="ESP" />
+  <lcid name="fi" id="0x000B" parent="0x007F" iso2="fi" iso3="fin" win="FIN" />
+  <lcid name="fr" id="0x000C" parent="0x007F" iso2="fr" iso3="fra" win="FRA" />
+  <lcid name="he" id="0x000D" parent="0x007F" iso2="he" iso3="heb" win="HEB" />
+  <lcid name="hu" id="0x000E" parent="0x007F" iso2="hu" iso3="hun" win="HUN" />
+  <lcid name="is" id="0x000F" parent="0x007F" iso2="is" iso3="isl" win="ISL" />
+  <lcid name="it" id="0x0010" parent="0x007F" iso2="it" iso3="ita" win="ITA" />
+  <lcid name="ja" id="0x0011" parent="0x007F" iso2="ja" iso3="jpn" win="JPN" />
+  <lcid name="ko" id="0x0012" parent="0x007F" iso2="ko" iso3="kor" win="KOR" />
+  <lcid name="nl" id="0x0013" parent="0x007F" iso2="nl" iso3="nld" win="NLD" />
+  <lcid name="no" id="0x0014" parent="0x007F" iso2="nb" iso3="nob" win="NOR" />
+  <lcid name="pl" id="0x0015" parent="0x007F" iso2="pl" iso3="pol" win="PLK" />
+  <lcid name="pt" id="0x0016" parent="0x007F" iso2="pt" iso3="por" win="PTB" />
+  <lcid name="rm" id="0x0017" parent="0x007F" iso2="rm" iso3="roh" win="RMC" />
+  <lcid name="ro" id="0x0018" parent="0x007F" iso2="ro" iso3="ron" win="ROM" />
+  <lcid name="ru" id="0x0019" parent="0x007F" iso2="ru" iso3="rus" win="RUS" />
+  <lcid name="hr" id="0x001A" parent="0x007F" iso2="hr" iso3="hrv" win="HRV" />
+  <lcid name="sk" id="0x001B" parent="0x007F" iso2="sk" iso3="slk" win="SKY" />
+  <lcid name="sq" id="0x001C" parent="0x007F" iso2="sq" iso3="sqi" win="SQI" />
+  <lcid name="sv" id="0x001D" parent="0x007F" iso2="sv" iso3="swe" win="SVE" />
+  <lcid name="th" id="0x001E" parent="0x007F" iso2="th" iso3="tha" win="THA" />
+  <lcid name="tr" id="0x001F" parent="0x007F" iso2="tr" iso3="tur" win="TRK" />
+  <lcid name="ur" id="0x0020" parent="0x007F" iso2="ur" iso3="urd" win="URD" />
+  <lcid name="id" id="0x0021" parent="0x007F" iso2="id" iso3="ind" win="IND" />
+  <lcid name="uk" id="0x0022" parent="0x007F" iso2="uk" iso3="ukr" win="UKR" />
+  <lcid name="be" id="0x0023" parent="0x007F" iso2="be" iso3="bel" win="BEL" />
+  <lcid name="sl" id="0x0024" parent="0x007F" iso2="sl" iso3="slv" win="SLV" />
+  <lcid name="et" id="0x0025" parent="0x007F" iso2="et" iso3="est" win="ETI" />
+  <lcid name="lv" id="0x0026" parent="0x007F" iso2="lv" iso3="lav" win="LVI" />
+  <lcid name="lt" id="0x0027" parent="0x007F" iso2="lt" iso3="lit" win="LTH" />
+  <lcid name="tg" id="0x0028" parent="0x007F" iso2="tg" iso3="tgk" win="TAJ" />
+  <lcid name="fa" id="0x0029" parent="0x007F" iso2="fa" iso3="fas" win="FAR" />
+  <lcid name="vi" id="0x002A" parent="0x007F" iso2="vi" iso3="vie" win="VIT" />
+  <lcid name="hy" id="0x002B" parent="0x007F" iso2="hy" iso3="hye" win="HYE" />
+  <lcid name="az" id="0x002C" parent="0x007F" iso2="az" iso3="aze" win="AZE" />
+  <lcid name="eu" id="0x002D" parent="0x007F" iso2="eu" iso3="eus" win="EUQ" />
+  <lcid name="hsb" id="0x002E" parent="0x007F" iso2="hsb" iso3="hsb" win="HSB" />
+  <lcid name="mk" id="0x002F" parent="0x007F" iso2="mk" iso3="mkd" win="MKI" />
+  <lcid name="tn" id="0x0032" parent="0x007F" iso2="tn" iso3="tsn" win="TSN" />
+  <lcid name="xh" id="0x0034" parent="0x007F" iso2="xh" iso3="xho" win="XHO" />
+  <lcid name="zu" id="0x0035" parent="0x007F" iso2="zu" iso3="zul" win="ZUL" />
+  <lcid name="af" id="0x0036" parent="0x007F" iso2="af" iso3="afr" win="AFK" />
+  <lcid name="ka" id="0x0037" parent="0x007F" iso2="ka" iso3="kat" win="KAT" />
+  <lcid name="fo" id="0x0038" parent="0x007F" iso2="fo" iso3="fao" win="FOS" />
+  <lcid name="hi" id="0x0039" parent="0x007F" iso2="hi" iso3="hin" win="HIN" />
+  <lcid name="mt" id="0x003A" parent="0x007F" iso2="mt" iso3="mlt" win="MLT" />
+  <lcid name="se" id="0x003B" parent="0x007F" iso2="se" iso3="sme" win="SME" />
+  <lcid name="ga" id="0x003C" parent="0x007F" iso2="ga" iso3="gle" win="IRE" />
+  <lcid name="ms" id="0x003E" parent="0x007F" iso2="ms" iso3="msa" win="MSL" />
+  <lcid name="kk" id="0x003F" parent="0x007F" iso2="kk" iso3="kaz" win="KKZ" />
+  <lcid name="ky" id="0x0040" parent="0x007F" iso2="ky" iso3="kir" win="KYR" />
+  <lcid name="sw" id="0x0041" parent="0x007F" iso2="sw" iso3="swa" win="SWK" />
+  <lcid name="tk" id="0x0042" parent="0x007F" iso2="tk" iso3="tuk" win="TUK" />
+  <lcid name="uz" id="0x0043" parent="0x007F" iso2="uz" iso3="uzb" win="UZB" />
+  <lcid name="tt" id="0x0044" parent="0x007F" iso2="tt" iso3="tat" win="TTT" />
+  <lcid name="bn" id="0x0045" parent="0x007F" iso2="bn" iso3="bng" win="BNG" />
+  <lcid name="pa" id="0x0046" parent="0x007F" iso2="pa" iso3="pan" win="PAN" />
+  <lcid name="gu" id="0x0047" parent="0x007F" iso2="gu" iso3="guj" win="GUJ" />
+  <lcid name="or" id="0x0048" parent="0x007F" iso2="or" iso3="ori" win="ORI" />
+  <lcid name="ta" id="0x0049" parent="0x007F" iso2="ta" iso3="tam" win="TAM" />
+  <lcid name="te" id="0x004A" parent="0x007F" iso2="te" iso3="tel" win="TEL" />
+  <lcid name="kn" id="0x004B" parent="0x007F" iso2="kn" iso3="kan" win="KDI" />
+  <lcid name="ml" id="0x004C" parent="0x007F" iso2="ml" iso3="mym" win="MYM" />
+  <lcid name="as" id="0x004D" parent="0x007F" iso2="as" iso3="asm" win="ASM" />
+  <lcid name="mr" id="0x004E" parent="0x007F" iso2="mr" iso3="mar" win="MAR" />
+  <lcid name="sa" id="0x004F" parent="0x007F" iso2="sa" iso3="san" win="SAN" />
+  <lcid name="mn" id="0x0050" parent="0x007F" iso2="mn" iso3="mon" win="MON" />
+  <lcid name="bo" id="0x0051" parent="0x007F" iso2="bo" iso3="bod" win="BOB" />
+  <lcid name="cy" id="0x0052" parent="0x007F" iso2="cy" iso3="cym" win="CYM" />
+  <lcid name="km" id="0x0053" parent="0x007F" iso2="km" iso3="khm" win="KHM" />
+  <lcid name="lo" id="0x0054" parent="0x007F" iso2="lo" iso3="lao" win="LAO" />
+  <lcid name="gl" id="0x0056" parent="0x007F" iso2="gl" iso3="glg" win="GLC" />
+  <lcid name="kok" id="0x0057" parent="0x007F" iso2="kok" iso3="kok" win="KNK" />
+  <lcid name="syr" id="0x005A" parent="0x007F" iso2="syr" iso3="syr" win="SYR" />
+  <lcid name="si" id="0x005B" parent="0x007F" iso2="si" iso3="sin" win="SIN" />
+  <lcid name="iu" id="0x005D" parent="0x007F" iso2="iu" iso3="iku" win="IUK" />
+  <lcid name="am" id="0x005E" parent="0x007F" iso2="am" iso3="amh" win="AMH" />
+  <lcid name="tzm" id="0x005F" parent="0x007F" iso2="tzm" iso3="tzm" win="TZM" />
+  <lcid name="ne" id="0x0061" parent="0x007F" iso2="ne" iso3="nep" win="NEP" />
+  <lcid name="fy" id="0x0062" parent="0x007F" iso2="fy" iso3="fry" win="FYN" />
+  <lcid name="ps" id="0x0063" parent="0x007F" iso2="ps" iso3="pus" win="PAS" />
+  <lcid name="fil" id="0x0064" parent="0x007F" iso2="fil" iso3="fil" win="FPO" />
+  <lcid name="dv" id="0x0065" parent="0x007F" iso2="dv" iso3="div" win="DIV" />
+  <lcid name="ha" id="0x0068" parent="0x007F" iso2="ha" iso3="hau" win="HAU" />
+  <lcid name="yo" id="0x006A" parent="0x007F" iso2="yo" iso3="yor" win="YOR" />
+  <lcid name="quz" id="0x006B" parent="0x007F" iso2="quz" iso3="qub" win="QUB" />
+  <lcid name="nso" id="0x006C" parent="0x007F" iso2="nso" iso3="nso" win="NSO" />
+  <lcid name="ba" id="0x006D" parent="0x007F" iso2="ba" iso3="bak" win="BAS" />
+  <lcid name="lb" id="0x006E" parent="0x007F" iso2="lb" iso3="ltz" win="LBX" />
+  <lcid name="kl" id="0x006F" parent="0x007F" iso2="kl" iso3="kal" win="KAL" />
+  <lcid name="ig" id="0x0070" parent="0x007F" iso2="ig" iso3="ibo" win="IBO" />
+  <lcid name="ii" id="0x0078" parent="0x007F" iso2="ii" iso3="iii" win="III" />
+  <lcid name="arn" id="0x007A" parent="0x007F" iso2="arn" iso3="arn" win="MPD" />
+  <lcid name="moh" id="0x007C" parent="0x007F" iso2="moh" iso3="moh" win="MWK" />
+  <lcid name="br" id="0x007E" parent="0x007F" iso2="br" iso3="bre" win="BRE" />
+  <lcid name="ug" id="0x0080" parent="0x007F" iso2="ug" iso3="uig" win="UIG" />
+  <lcid name="mi" id="0x0081" parent="0x007F" iso2="mi" iso3="mri" win="MRI" />
+  <lcid name="oc" id="0x0082" parent="0x007F" iso2="oc" iso3="oci" win="OCI" />
+  <lcid name="co" id="0x0083" parent="0x007F" iso2="co" iso3="cos" win="COS" />
+  <lcid name="gsw" id="0x0084" parent="0x007F" iso2="gsw" iso3="gsw" win="GSW" />
+  <lcid name="sah" id="0x0085" parent="0x007F" iso2="sah" iso3="sah" win="SAH" />
+  <lcid name="qut" id="0x0086" parent="0x007F" iso2="qut" iso3="qut" win="QUT" />
+  <lcid name="rw" id="0x0087" parent="0x007F" iso2="rw" iso3="kin" win="KIN" />
+  <lcid name="wo" id="0x0088" parent="0x007F" iso2="wo" iso3="wol" win="WOL" />
+  <lcid name="prs" id="0x008C" parent="0x007F" iso2="prs" iso3="prs" win="PRS" />
+  <lcid name="gd" id="0x0091" parent="0x007F" iso2="gd" iso3="gla" win="GLA" />
+  <lcid name="ar_SA" id="0x0401" parent="0x0001" iso2="ar" iso3="ara" win="ARA" />
+  <lcid name="bg_BG" id="0x0402" parent="0x0002" iso2="bg" iso3="bul" win="BGR" />
+  <lcid name="ca_ES" id="0x0403" parent="0x0003" iso2="ca" iso3="cat" win="CAT" />
+  <lcid name="zh_TW" id="0x0404" parent="0x7C04" iso2="zh" iso3="zho" win="CHT" />
+  <lcid name="cs_CZ" id="0x0405" parent="0x0005" iso2="cs" iso3="ces" win="CSY" />
+  <lcid name="da_DK" id="0x0406" parent="0x0006" iso2="da" iso3="dan" win="DAN" />
+  <lcid name="de_DE" id="0x0407" parent="0x0007" iso2="de" iso3="deu" win="DEU" />
+  <lcid name="el_GR" id="0x0408" parent="0x0008" iso2="el" iso3="ell" win="ELL" />
+  <lcid name="en_US" id="0x0409" parent="0x0009" iso2="en" iso3="eng" win="ENU" />
+  <lcid name="fi_FI" id="0x040B" parent="0x000B" iso2="fi" iso3="fin" win="FIN" />
+  <lcid name="fr_FR" id="0x040C" parent="0x000C" iso2="fr" iso3="fra" win="FRA" />
+  <lcid name="he_IL" id="0x040D" parent="0x000D" iso2="he" iso3="heb" win="HEB" />
+  <lcid name="hu_HU" id="0x040E" parent="0x000E" iso2="hu" iso3="hun" win="HUN" />
+  <lcid name="is_IS" id="0x040F" parent="0x000F" iso2="is" iso3="isl" win="ISL" />
+  <lcid name="it_IT" id="0x0410" parent="0x0010" iso2="it" iso3="ita" win="ITA" />
+  <lcid name="ja_JP" id="0x0411" parent="0x0011" iso2="ja" iso3="jpn" win="JPN" />
+  <lcid name="ko_KR" id="0x0412" parent="0x0012" iso2="ko" iso3="kor" win="KOR" />
+  <lcid name="nl_NL" id="0x0413" parent="0x0013" iso2="nl" iso3="nld" win="NLD" />
+  <lcid name="nb_NO" id="0x0414" parent="0x7C14" iso2="nb" iso3="nob" win="NOR" />
+  <lcid name="pl_PL" id="0x0415" parent="0x0015" iso2="pl" iso3="pol" win="PLK" />
+  <lcid name="pt_BR" id="0x0416" parent="0x0016" iso2="pt" iso3="por" win="PTB" />
+  <lcid name="rm_CH" id="0x0417" parent="0x0017" iso2="rm" iso3="roh" win="RMC" />
+  <lcid name="ro_RO" id="0x0418" parent="0x0018" iso2="ro" iso3="ron" win="ROM" />
+  <lcid name="ru_RU" id="0x0419" parent="0x0019" iso2="ru" iso3="rus" win="RUS" />
+  <lcid name="hr_HR" id="0x041A" parent="0x001A" iso2="hr" iso3="hrv" win="HRV" />
+  <lcid name="sk_SK" id="0x041B" parent="0x001B" iso2="sk" iso3="slk" win="SKY" />
+  <lcid name="sq_AL" id="0x041C" parent="0x001C" iso2="sq" iso3="sqi" win="SQI" />
+  <lcid name="sv_SE" id="0x041D" parent="0x001D" iso2="sv" iso3="swe" win="SVE" />
+  <lcid name="th_TH" id="0x041E" parent="0x001E" iso2="th" iso3="tha" win="THA" />
+  <lcid name="tr_TR" id="0x041F" parent="0x001F" iso2="tr" iso3="tur" win="TRK" />
+  <lcid name="ur_PK" id="0x0420" parent="0x0020" iso2="ur" iso3="urd" win="URD" />
+  <lcid name="id_ID" id="0x0421" parent="0x0021" iso2="id" iso3="ind" win="IND" />
+  <lcid name="uk_UA" id="0x0422" parent="0x0022" iso2="uk" iso3="ukr" win="UKR" />
+  <lcid name="be_BY" id="0x0423" parent="0x0023" iso2="be" iso3="bel" win="BEL" />
+  <lcid name="sl_SI" id="0x0424" parent="0x0024" iso2="sl" iso3="slv" win="SLV" />
+  <lcid name="et_EE" id="0x0425" parent="0x0025" iso2="et" iso3="est" win="ETI" />
+  <lcid name="lv_LV" id="0x0426" parent="0x0026" iso2="lv" iso3="lav" win="LVI" />
+  <lcid name="lt_LT" id="0x0427" parent="0x0027" iso2="lt" iso3="lit" win="LTH" />
+  <lcid name="tg_Cyrl_TJ" id="0x0428" parent="0x7C28" iso2="tg" iso3="tgk" win="TAJ" />
+  <lcid name="fa_IR" id="0x0429" parent="0x0029" iso2="fa" iso3="fas" win="FAR" />
+  <lcid name="vi_VN" id="0x042A" parent="0x002A" iso2="vi" iso3="vie" win="VIT" />
+  <lcid name="hy_AM" id="0x042B" parent="0x002B" iso2="hy" iso3="hye" win="HYE" />
+  <lcid name="az_Latn_AZ" id="0x042C" parent="0x782C" iso2="az" iso3="aze" win="AZE" />
+  <lcid name="eu_ES" id="0x042D" parent="0x002D" iso2="eu" iso3="eus" win="EUQ" />
+  <lcid name="hsb_DE" id="0x042E" parent="0x002E" iso2="hsb" iso3="hsb" win="HSB" />
+  <lcid name="mk_MK" id="0x042F" parent="0x002F" iso2="mk" iso3="mkd" win="MKI" />
+  <lcid name="tn_ZA" id="0x0432" parent="0x0032" iso2="tn" iso3="tsn" win="TSN" />
+  <lcid name="xh_ZA" id="0x0434" parent="0x0034" iso2="xh" iso3="xho" win="XHO" />
+  <lcid name="zu_ZA" id="0x0435" parent="0x0035" iso2="zu" iso3="zul" win="ZUL" />
+  <lcid name="af_ZA" id="0x0436" parent="0x0036" iso2="af" iso3="afr" win="AFK" />
+  <lcid name="ka_GE" id="0x0437" parent="0x0037" iso2="ka" iso3="kat" win="KAT" />
+  <lcid name="fo_FO" id="0x0438" parent="0x0038" iso2="fo" iso3="fao" win="FOS" />
+  <lcid name="hi_IN" id="0x0439" parent="0x0039" iso2="hi" iso3="hin" win="HIN" />
+  <lcid name="mt_MT" id="0x043A" parent="0x003A" iso2="mt" iso3="mlt" win="MLT" />
+  <lcid name="se_NO" id="0x043B" parent="0x003B" iso2="se" iso3="sme" win="SME" />
+  <lcid name="ms_MY" id="0x043E" parent="0x003E" iso2="ms" iso3="msa" win="MSL" />
+  <lcid name="kk_KZ" id="0x043F" parent="0x003F" iso2="kk" iso3="kaz" win="KKZ" />
+  <lcid name="ky_KG" id="0x0440" parent="0x0040" iso2="ky" iso3="kir" win="KYR" />
+  <lcid name="sw_KE" id="0x0441" parent="0x0041" iso2="sw" iso3="swa" win="SWK" />
+  <lcid name="tk_TM" id="0x0442" parent="0x0042" iso2="tk" iso3="tuk" win="TUK" />
+  <lcid name="uz_Latn_UZ" id="0x0443" parent="0x7C43" iso2="uz" iso3="uzb" win="UZB" />
+  <lcid name="tt_RU" id="0x0444" parent="0x0044" iso2="tt" iso3="tat" win="TTT" />
+  <lcid name="bn_IN" id="0x0445" parent="0x0045" iso2="bn" iso3="bng" win="BNG" />
+  <lcid name="pa_IN" id="0x0446" parent="0x0046" iso2="pa" iso3="pan" win="PAN" />
+  <lcid name="gu_IN" id="0x0447" parent="0x0047" iso2="gu" iso3="guj" win="GUJ" />
+  <lcid name="or_IN" id="0x0448" parent="0x0048" iso2="or" iso3="ori" win="ORI" />
+  <lcid name="ta_IN" id="0x0449" parent="0x0049" iso2="ta" iso3="tam" win="TAM" />
+  <lcid name="te_IN" id="0x044A" parent="0x004A" iso2="te" iso3="tel" win="TEL" />
+  <lcid name="kn_IN" id="0x044B" parent="0x004B" iso2="kn" iso3="kan" win="KDI" />
+  <lcid name="ml_IN" id="0x044C" parent="0x004C" iso2="ml" iso3="mym" win="MYM" />
+  <lcid name="as_IN" id="0x044D" parent="0x004D" iso2="as" iso3="asm" win="ASM" />
+  <lcid name="mr_IN" id="0x044E" parent="0x004E" iso2="mr" iso3="mar" win="MAR" />
+  <lcid name="sa_IN" id="0x044F" parent="0x004F" iso2="sa" iso3="san" win="SAN" />
+  <lcid name="mn_MN" id="0x0450" parent="0x7850" iso2="mn" iso3="mon" win="MNN" />
+  <lcid name="bo_CN" id="0x0451" parent="0x0051" iso2="bo" iso3="bod" win="BOB" />
+  <lcid name="cy_GB" id="0x0452" parent="0x0052" iso2="cy" iso3="cym" win="CYM" />
+  <lcid name="km_KH" id="0x0453" parent="0x0053" iso2="km" iso3="khm" win="KHM" />
+  <lcid name="lo_LA" id="0x0454" parent="0x0054" iso2="lo" iso3="lao" win="LAO" />
+  <lcid name="gl_ES" id="0x0456" parent="0x0056" iso2="gl" iso3="glg" win="GLC" />
+  <lcid name="kok_IN" id="0x0457" parent="0x0057" iso2="kok" iso3="kok" win="KNK" />
+  <lcid name="syr_SY" id="0x045A" parent="0x005A" iso2="syr" iso3="syr" win="SYR" />
+  <lcid name="si_LK" id="0x045B" parent="0x005B" iso2="si" iso3="sin" win="SIN" />
+  <lcid name="iu_Cans_CA" id="0x045D" parent="0x785D" iso2="iu" iso3="iku" win="IUS" />
+  <lcid name="am_ET" id="0x045E" parent="0x005E" iso2="am" iso3="amh" win="AMH" />
+  <lcid name="ne_NP" id="0x0461" parent="0x0061" iso2="ne" iso3="nep" win="NEP" />
+  <lcid name="fy_NL" id="0x0462" parent="0x0062" iso2="fy" iso3="fry" win="FYN" />
+  <lcid name="ps_AF" id="0x0463" parent="0x0063" iso2="ps" iso3="pus" win="PAS" />
+  <lcid name="fil_PH" id="0x0464" parent="0x0064" iso2="fil" iso3="fil" win="FPO" />
+  <lcid name="dv_MV" id="0x0465" parent="0x0065" iso2="dv" iso3="div" win="DIV" />
+  <lcid name="ha_Latn_NG" id="0x0468" parent="0x7C68" iso2="ha" iso3="hau" win="HAU" />
+  <lcid name="yo_NG" id="0x046A" parent="0x006A" iso2="yo" iso3="yor" win="YOR" />
+  <lcid name="quz_BO" id="0x046B" parent="0x006B" iso2="quz" iso3="qub" win="QUB" />
+  <lcid name="nso_ZA" id="0x046C" parent="0x006C" iso2="nso" iso3="nso" win="NSO" />
+  <lcid name="ba_RU" id="0x046D" parent="0x006D" iso2="ba" iso3="bak" win="BAS" />
+  <lcid name="lb_LU" id="0x046E" parent="0x006E" iso2="lb" iso3="ltz" win="LBX" />
+  <lcid name="kl_GL" id="0x046F" parent="0x006F" iso2="kl" iso3="kal" win="KAL" />
+  <lcid name="ig_NG" id="0x0470" parent="0x0070" iso2="ig" iso3="ibo" win="IBO" />
+  <lcid name="ii_CN" id="0x0478" parent="0x0078" iso2="ii" iso3="iii" win="III" />
+  <lcid name="arn_CL" id="0x047A" parent="0x007A" iso2="arn" iso3="arn" win="MPD" />
+  <lcid name="moh_CA" id="0x047C" parent="0x007C" iso2="moh" iso3="moh" win="MWK" />
+  <lcid name="br_FR" id="0x047E" parent="0x007E" iso2="br" iso3="bre" win="BRE" />
+  <lcid name="ug_CN" id="0x0480" parent="0x0080" iso2="ug" iso3="uig" win="UIG" />
+  <lcid name="mi_NZ" id="0x0481" parent="0x0081" iso2="mi" iso3="mri" win="MRI" />
+  <lcid name="oc_FR" id="0x0482" parent="0x0082" iso2="oc" iso3="oci" win="OCI" />
+  <lcid name="co_FR" id="0x0483" parent="0x0083" iso2="co" iso3="cos" win="COS" />
+  <lcid name="gsw_FR" id="0x0484" parent="0x0084" iso2="gsw" iso3="gsw" win="GSW" />
+  <lcid name="sah_RU" id="0x0485" parent="0x0085" iso2="sah" iso3="sah" win="SAH" />
+  <lcid name="qut_GT" id="0x0486" parent="0x0086" iso2="qut" iso3="qut" win="QUT" />
+  <lcid name="rw_RW" id="0x0487" parent="0x0087" iso2="rw" iso3="kin" win="KIN" />
+  <lcid name="wo_SN" id="0x0488" parent="0x0088" iso2="wo" iso3="wol" win="WOL" />
+  <lcid name="prs_AF" id="0x048C" parent="0x008C" iso2="prs" iso3="prs" win="PRS" />
+  <lcid name="gd_GB" id="0x0491" parent="0x0091" iso2="gd" iso3="gla" win="GLA" />
+  <lcid name="ar_IQ" id="0x0801" parent="0x0001" iso2="ar" iso3="ara" win="ARI" />
+  <lcid name="zh_CN" id="0x0804" parent="0x0004" iso2="zh" iso3="zho" win="CHS" />
+  <lcid name="de_CH" id="0x0807" parent="0x0007" iso2="de" iso3="deu" win="DES" />
+  <lcid name="en_GB" id="0x0809" parent="0x0009" iso2="en" iso3="eng" win="ENG" />
+  <lcid name="es_MX" id="0x080A" parent="0x000A" iso2="es" iso3="spa" win="ESM" />
+  <lcid name="fr_BE" id="0x080C" parent="0x000C" iso2="fr" iso3="fra" win="FRB" />
+  <lcid name="it_CH" id="0x0810" parent="0x0010" iso2="it" iso3="ita" win="ITS" />
+  <lcid name="nl_BE" id="0x0813" parent="0x0013" iso2="nl" iso3="nld" win="NLB" />
+  <lcid name="nn_NO" id="0x0814" parent="0x7814" iso2="nn" iso3="nno" win="NON" />
+  <lcid name="pt_PT" id="0x0816" parent="0x0016" iso2="pt" iso3="por" win="PTG" />
+  <lcid name="sr_Latn_CS" id="0x081A" parent="0x701A" iso2="sr" iso3="srp" win="SRL" />
+  <lcid name="sv_FI" id="0x081D" parent="0x001D" iso2="sv" iso3="swe" win="SVF" />
+  <lcid name="az_Cyrl_AZ" id="0x082C" parent="0x742C" iso2="az" iso3="aze" win="AZC" />
+  <lcid name="dsb_DE" id="0x082E" parent="0x7C2E" iso2="dsb" iso3="dsb" win="DSB" />
+  <lcid name="se_SE" id="0x083B" parent="0x003B" iso2="se" iso3="smf" win="SMF" />
+  <lcid name="ga_IE" id="0x083C" parent="0x003C" iso2="ga" iso3="gle" win="IRE" />
+  <lcid name="ms_BN" id="0x083E" parent="0x003E" iso2="ms" iso3="msa" win="MSB" />
+  <lcid name="uz_Cyrl_UZ" id="0x0843" parent="0x7843" iso2="uz" iso3="uzb" win="UZB" />
+  <lcid name="bn_BD" id="0x0845" parent="0x0045" iso2="bn" iso3="bng" win="BNB" />
+  <lcid name="mn_Mong_CN" id="0x0850" parent="0x7C50" iso2="mn" iso3="mon" win="MNG" />
+  <lcid name="iu_Latn_CA" id="0x085D" parent="0x7C5D" iso2="iu" iso3="iku" win="IUK" />
+  <lcid name="tzm_Latn_DZ" id="0x085F" parent="0x7C5F" iso2="tzm" iso3="tzm" win="TZM" />
+  <lcid name="quz_EC" id="0x086B" parent="0x006B" iso2="quz" iso3="que" win="QUE" />
+  <lcid name="ar_EG" id="0x0C01" parent="0x0001" iso2="ar" iso3="ara" win="ARE" />
+  <lcid name="zh_HK" id="0x0C04" parent="0x7C04" iso2="zh" iso3="zho" win="ZHH" />
+  <lcid name="de_AT" id="0x0C07" parent="0x0007" iso2="de" iso3="deu" win="DEA" />
+  <lcid name="en_AU" id="0x0C09" parent="0x0009" iso2="en" iso3="eng" win="ENA" />
+  <lcid name="es_ES" id="0x0C0A" parent="0x000A" iso2="es" iso3="spa" win="ESN" />
+  <lcid name="fr_CA" id="0x0C0C" parent="0x000C" iso2="fr" iso3="fra" win="FRC" />
+  <lcid name="sr_Cyrl_CS" id="0x0C1A" parent="0x6C1A" iso2="sr" iso3="srp" win="SRB" />
+  <lcid name="se_FI" id="0x0C3B" parent="0x003B" iso2="se" iso3="smg" win="SMG" />
+  <lcid name="quz_PE" id="0x0C6B" parent="0x006B" iso2="quz" iso3="qup" win="QUP" />
+  <lcid name="ar_LY" id="0x1001" parent="0x0001" iso2="ar" iso3="ara" win="ARL" />
+  <lcid name="zh_SG" id="0x1004" parent="0x0004" iso2="zh" iso3="zho" win="ZHI" />
+  <lcid name="de_LU" id="0x1007" parent="0x0007" iso2="de" iso3="deu" win="DEL" />
+  <lcid name="en_CA" id="0x1009" parent="0x0009" iso2="en" iso3="eng" win="ENC" />
+  <lcid name="es_GT" id="0x100A" parent="0x000A" iso2="es" iso3="spa" win="ESG" />
+  <lcid name="fr_CH" id="0x100C" parent="0x000C" iso2="fr" iso3="fra" win="FRS" />
+  <lcid name="hr_BA" id="0x101A" parent="0x001A" iso2="hr" iso3="hrb" win="HRB" />
+  <lcid name="smj_NO" id="0x103B" parent="0x7C3B" iso2="smj" iso3="smj" win="SMJ" />
+  <lcid name="ar_DZ" id="0x1401" parent="0x0001" iso2="ar" iso3="ara" win="ARG" />
+  <lcid name="zh_MO" id="0x1404" parent="0x7C04" iso2="zh" iso3="zho" win="ZHM" />
+  <lcid name="de_LI" id="0x1407" parent="0x0007" iso2="de" iso3="deu" win="DEC" />
+  <lcid name="en_NZ" id="0x1409" parent="0x0009" iso2="en" iso3="eng" win="ENZ" />
+  <lcid name="es_CR" id="0x140A" parent="0x000A" iso2="es" iso3="spa" win="ESC" />
+  <lcid name="fr_LU" id="0x140C" parent="0x000C" iso2="fr" iso3="fra" win="FRL" />
+  <lcid name="bs_Latn_BA" id="0x141A" parent="0x681A" iso2="bs" iso3="bsb" win="BSB" />
+  <lcid name="smj_SE" id="0x143B" parent="0x7C3B" iso2="smj" iso3="smk" win="SMK" />
+  <lcid name="ar_MA" id="0x1801" parent="0x0001" iso2="ar" iso3="ara" win="ARM" />
+  <lcid name="en_IE" id="0x1809" parent="0x0009" iso2="en" iso3="eng" win="ENI" />
+  <lcid name="es_PA" id="0x180A" parent="0x000A" iso2="es" iso3="spa" win="ESA" />
+  <lcid name="fr_MC" id="0x180C" parent="0x000C" iso2="fr" iso3="fra" win="FRM" />
+  <lcid name="sr_Latn_BA" id="0x181A" parent="0x701A" iso2="sr" iso3="srs" win="SRS" />
+  <lcid name="sma_NO" id="0x183B" parent="0x783B" iso2="sma" iso3="sma" win="SMA" />
+  <lcid name="ar_TN" id="0x1C01" parent="0x0001" iso2="ar" iso3="ara" win="ART" />
+  <lcid name="en_ZA" id="0x1C09" parent="0x0009" iso2="en" iso3="eng" win="ENS" />
+  <lcid name="es_DO" id="0x1C0A" parent="0x000A" iso2="es" iso3="spa" win="ESD" />
+  <lcid name="sr_Cyrl_BA" id="0x1C1A" parent="0x6C1A" iso2="sr" iso3="srn" win="SRN" />
+  <lcid name="sma_SE" id="0x1C3B" parent="0x783B" iso2="sma" iso3="smb" win="SMB" />
+  <lcid name="ar_OM" id="0x2001" parent="0x0001" iso2="ar" iso3="ara" win="ARO" />
+  <lcid name="en_JM" id="0x2009" parent="0x0009" iso2="en" iso3="eng" win="ENJ" />
+  <lcid name="es_VE" id="0x200A" parent="0x000A" iso2="es" iso3="spa" win="ESV" />
+  <lcid name="bs_Cyrl_BA" id="0x201A" parent="0x641A" iso2="bs" iso3="bsc" win="BSC" />
+  <lcid name="sms_FI" id="0x203B" parent="0x743B" iso2="sms" iso3="sms" win="SMS" />
+  <lcid name="ar_YE" id="0x2401" parent="0x0001" iso2="ar" iso3="ara" win="ARY" />
+  <lcid name="en_029" id="0x2409" parent="0x0009" iso2="en" iso3="eng" win="ENB" />
+  <lcid name="es_CO" id="0x240A" parent="0x000A" iso2="es" iso3="spa" win="ESO" />
+  <lcid name="sr_Latn_RS" id="0x241A" parent="0x701A" iso2="sr" iso3="srp" win="SRM" />
+  <lcid name="smn_FI" id="0x243B" parent="0x703B" iso2="smn" iso3="smn" win="SMN" />
+  <lcid name="ar_SY" id="0x2801" parent="0x0001" iso2="ar" iso3="ara" win="ARS" />
+  <lcid name="en_BZ" id="0x2809" parent="0x0009" iso2="en" iso3="eng" win="ENL" />
+  <lcid name="es_PE" id="0x280A" parent="0x000A" iso2="es" iso3="spa" win="ESR" />
+  <lcid name="sr_Cyrl_RS" id="0x281A" parent="0x6C1A" iso2="sr" iso3="srp" win="SRO" />
+  <lcid name="ar_JO" id="0x2C01" parent="0x0001" iso2="ar" iso3="ara" win="ARJ" />
+  <lcid name="en_TT" id="0x2C09" parent="0x0009" iso2="en" iso3="eng" win="ENT" />
+  <lcid name="es_AR" id="0x2C0A" parent="0x000A" iso2="es" iso3="spa" win="ESS"  />
+  <lcid name="sr_Latn_ME" id="0x2C1A" parent="0x701A" iso2="sr" iso3="srp" win="SRP" />
+  <lcid name="ar_LB" id="0x3001" parent="0x0001" iso2="ar" iso3="ara" win="ARB" />
+  <lcid name="en_ZW" id="0x3009" parent="0x0009" iso2="en" iso3="eng" win="ENW" />
+  <lcid name="es_EC" id="0x300A" parent="0x000A" iso2="es" iso3="spa" win="ESF" />
+  <lcid name="sr_Cyrl_ME" id="0x301A" parent="0x6C1A" iso2="sr" iso3="srp" win="SRQ" />
+  <lcid name="ar_KW" id="0x3401" parent="0x0001" iso2="ar" iso3="ara" win="ARK" />
+  <lcid name="en_PH" id="0x3409" parent="0x0009" iso2="en" iso3="eng" win="ENP" />
+  <lcid name="es_CL" id="0x340A" parent="0x000A" iso2="es" iso3="spa" win="ESL" />
+  <lcid name="ar_AE" id="0x3801" parent="0x0001" iso2="ar" iso3="ara" win="ARU" />
+  <lcid name="es_UY" id="0x380A" parent="0x000A" iso2="es" iso3="spa" win="ESY" />
+  <lcid name="ar_BH" id="0x3C01" parent="0x0001" iso2="ar" iso3="ara" win="ARH" />
+  <lcid name="es_PY" id="0x3C0A" parent="0x000A" iso2="es" iso3="spa" win="ESZ" />
+  <lcid name="ar_QA" id="0x4001" parent="0x0001" iso2="ar" iso3="ara" win="ARQ" />
+  <lcid name="en_IN" id="0x4009" parent="0x0009" iso2="en" iso3="eng" win="ENN" />
+  <lcid name="es_BO" id="0x400A" parent="0x000A" iso2="es" iso3="spa" win="ESB" />
+  <lcid name="en_MY" id="0x4409" parent="0x0009" iso2="en" iso3="eng" win="ENM" />
+  <lcid name="es_SV" id="0x440A" parent="0x000A" iso2="es" iso3="spa" win="ESE" />
+  <lcid name="en_SG" id="0x4809" parent="0x0009" iso2="en" iso3="eng" win="ENE" />
+  <lcid name="es_HN" id="0x480A" parent="0x000A" iso2="es" iso3="spa" win="ESH" />
+  <lcid name="es_NI" id="0x4C0A" parent="0x000A" iso2="es" iso3="spa" win="ESI" />
+  <lcid name="es_PR" id="0x500A" parent="0x000A" iso2="es" iso3="spa" win="ESU" />
+  <lcid name="es_US" id="0x540A" parent="0x000A" iso2="es" iso3="spa" win="EST" />
+  <lcid name="bs_Cyrl" id="0x641A" parent="0x781A" iso2="bs" iso3="bsc" win="BSC" />
+  <lcid name="bs_Latn" id="0x681A" parent="0x781A" iso2="bs" iso3="bsb" win="BSB" />
+  <lcid name="sr_Cyrl" id="0x6C1A" parent="0x7C1A" iso2="sr" iso3="srp" win="SRO" />
+  <lcid name="sr_Latn" id="0x701A" parent="0x7C1A" iso2="sr" iso3="srp" win="SRM" />
+  <lcid name="smn" id="0x703B" parent="0x003B" iso2="smn" iso3="smn" win="SMN"  />
+  <lcid name="az_Cyrl" id="0x742C" parent="0x002C" iso2="az" iso3="aze" win="AZC" />
+  <lcid name="sms" id="0x743B" parent="0x003B" iso2="sms" iso3="sms" win="SMS" />
+  <lcid name="zh" id="0x7804" parent="0x007F" iso2="zh" iso3="zho" win="CHS" />
+  <lcid name="nn" id="0x7814" parent="0x0014" iso2="nn" iso3="nno" win="NON" />
+  <lcid name="bs" id="0x781A" parent="0x007F" iso2="bs" iso3="bsb" win="BSB" />
+  <lcid name="az_Latn" id="0x782C" parent="0x002C" iso2="az" iso3="aze" win="AZE" />
+  <lcid name="sma" id="0x783B" parent="0x003B" iso2="sma" iso3="smb" win="SMB" />
+  <lcid name="uz_Cyrl" id="0x7843" parent="0x0043" iso2="uz" iso3="uzb" win="UZB" />
+  <lcid name="mn_Cyrl" id="0x7850" parent="0x0050" iso2="mn" iso3="mon" win="MNN" />
+  <lcid name="iu_Cans" id="0x785D" parent="0x005D" iso2="iu" iso3="iku" win="IUS" />
+  <lcid name="zh_Hant" id="0x7C04" parent="0x7804" iso2="zh" iso3="zho" win="CHT" />
+  <lcid name="zh_CHT" id="0x7C04" parent="0x7C04" iso2="zh" iso3="zho" win="CHT" />
+  <lcid name="nb" id="0x7C14" parent="0x0014" iso2="nb" iso3="nob" win="NOR" />
+  <lcid name="sr" id="0x7C1A" parent="0x007F" iso2="sr" iso3="srp" win="SRB" />
+  <lcid name="tg_Cyrl" id="0x7C28" parent="0x0028" iso2="tg" iso3="tgk" win="TAJ" />
+  <lcid name="dsb" id="0x7C2E" parent="0x002E" iso2="dsb" iso3="dsb" win="DSB" />
+  <lcid name="smj" id="0x7C3B" parent="0x003B" iso2="smj" iso3="smk" win="SMK" />
+  <lcid name="uz_Latn" id="0x7C43" parent="0x0043" iso2="uz" iso3="uzb" win="UZB" />
+  <lcid name="mn_Mong" id="0x7C50" parent="0x0050" iso2="mn" iso3="mon" win="MNG" />
+  <lcid name="iu_Latn" id="0x7C5D" parent="0x005D" iso2="iu" iso3="iku" win="IUK" />
+  <lcid name="tzm_Latn" id="0x7C5F" parent="0x005F" iso2="tzm" iso3="tzm" win="TZM" />
+  <lcid name="ha_Latn" id="0x7C68" parent="0x0068" iso2="ha" iso3="hau" win="HAU" />
 </lcids>
\ No newline at end of file
